aranym-1.1.0/0000775000175000017500000000000013454637641011203 5ustar joyjoyaranym-1.1.0/depcomp0000755000175000017500000005601613454637626012571 0ustar joyjoy#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: aranym-1.1.0/Makefile.in0000664000175000017500000012127413454637625013261 0ustar joyjoy# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_prog_cc_for_build.m4 \ $(top_srcdir)/m4/ax_prog_cxx_for_build.m4 \ $(top_srcdir)/m4/cxxbool.m4 $(top_srcdir)/m4/float.m4 \ $(top_srcdir)/m4/framework.m4 $(top_srcdir)/m4/maintainer.m4 \ $(top_srcdir)/m4/sdl.m4 $(top_srcdir)/m4/sdl2.m4 \ $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \ $(top_srcdir)/m4/util.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \ COPYING ChangeLog INSTALL NEWS TODO compile config.guess \ config.sub install-sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print pkgdatadir = @datadir@/aranym ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ARCH = @ARCH@ ARCHFLAGS = @ARCHFLAGS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BEOS_RC = @BEOS_RC@ BEOS_SETVERSION = @BEOS_SETVERSION@ BEOS_XRES = @BEOS_XRES@ BUILD_EXEEXT = @BUILD_EXEEXT@ BUILD_OBJEXT = @BUILD_OBJEXT@ BUNDLE_FRAMEWORKS = @BUNDLE_FRAMEWORKS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CPP_FOR_BUILD = @CPP_FOR_BUILD@ CPU_TYPE = @CPU_TYPE@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXCPPFLAGS_FOR_BUILD = @CXXCPPFLAGS_FOR_BUILD@ CXXCPP_FOR_BUILD = @CXXCPP_FOR_BUILD@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@ CXX_FOR_BUILD = @CXX_FOR_BUILD@ CYGPATH_W = @CYGPATH_W@ DBGSP = @DBGSP@ DEFINES = @DEFINES@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISASM_CFLAGS = @DISASM_CFLAGS@ DISASM_LIBS = @DISASM_LIBS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GENCOMP_ARCH = @GENCOMP_ARCH@ GL_CFLAGS = @GL_CFLAGS@ GL_LIBS = @GL_LIBS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ JPEG_LIBS = @JPEG_LIBS@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ LIBUSB_LIBS = @LIBUSB_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJC = @OBJC@ OBJCDEPMODE = @OBJCDEPMODE@ OBJCFLAGS = @OBJCFLAGS@ OBJEXT = @OBJEXT@ OSMESA_CFLAGS = @OSMESA_CFLAGS@ OSMESA_LIBS = @OSMESA_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SDL2_CFLAGS = @SDL2_CFLAGS@ SDL2_CONFIG = @SDL2_CONFIG@ SDL2_LIBS = @SDL2_LIBS@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TARGET = @TARGET@ VERSION = @VERSION@ WFLAGS = @WFLAGS@ WINDRES = @WINDRES@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_CXX_FOR_BUILD = @ac_ct_CXX_FOR_BUILD@ ac_ct_OBJC = @ac_ct_OBJC@ ac_ct_WINDRES = @ac_ct_WINDRES@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 AUTOMAKE_OPTIONS = foreign man1dir = $(mandir)/man1 # Unix makefile for ARAnyM # Inspired in BasiliskII's Makefile SUBDIRS = src doc SUFFIXES = .c .cpp .s .o .h .m .M BUILT_SOURCES = \ version_date.h \ $(top_srcdir)/src/natfeat/nfosmesa/call-gl.c \ $(top_srcdir)/src/natfeat/nfosmesa/dispatch-gl.c \ $(top_srcdir)/src/natfeat/nfosmesa/paramcount-gl.c \ $(top_srcdir)/atari/nfosmesa/glfuncs.h \ $(top_srcdir)/atari/nfosmesa/glfuncs-bynum.h \ $(top_srcdir)/atari/nfosmesa/ldg/osmesa.h \ $(top_srcdir)/atari/nfosmesa/ldg/tiny_gl.h \ $(top_srcdir)/atari/nfosmesa/osmesa_load.c \ $(top_srcdir)/atari/nfosmesa/tinygl_load.c \ $(top_srcdir)/atari/nfosmesa/link-tinygl.h \ $(top_srcdir)/atari/nfosmesa/slb/tiny_gl.h \ $(top_srcdir)/atari/nfosmesa/slb/osmesa.h \ $(top_srcdir)/atari/nfosmesa/tinygl_loadslb.c \ $(top_srcdir)/atari/nfosmesa/osmesa_loadslb.c \ $(empty) DISTCLEANFILES = config.cache config.log config.status config.h version_date.h appimage/appimagetool # remove the excutables copied from the src/Makefile. # previously, the executables where built in the top level # directory, and some external build scripts (e.g. rpm) excpect # them there. Remove this line once the scripts have been updated CLEANFILES = aranym$(EXEEXT) aratapif$(EXEEXT) # # check/update autogenerated OpenGL source files needed for NFOSMESA_SUPPORT # DYNGL_PL = $(top_srcdir)/tools/dyngl.pl GLTYPES_H = -incfile $(top_srcdir)/atari/nfosmesa/gltypes.h GLENUMS = -enums $(top_srcdir)/atari/nfosmesa/enum-gl.h EXTRA_DIST = \ BUGS FAQ README.md README-cygwin.in \ aranym.spec autogen.sh \ android atari contrib data tools \ appimage/build.sh \ appimage/desktopintegration \ appimage/excludelist \ appimage/functions.sh all: $(BUILT_SOURCES) config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .cpp .s .o .h .m .M am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) @case `sed 15q $(srcdir)/NEWS` in \ *"$(VERSION)"*) : ;; \ *) \ echo "NEWS not updated; not releasing" 1>&2; \ exit 1;; \ esac $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-data-local install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-local .MAKE: $(am__recursive_targets) all check install install-am \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-am uninstall uninstall-am uninstall-local .PRECIOUS: Makefile .PHONY: depend version_date.h: $(top_srcdir)/ChangeLog echo '/* generated from ChangeLog */' > $@ sed -n '/^20[0-9][0-9]\/[0-9]*\/[0-9]/p' < $(top_srcdir)/ChangeLog | sed 's/^\(20[0-9][0-9]\/[0-9]*\/[0-9]*\).*/#define VERSION_DATE "\1"/;q' >> $@ built_sources: $(BUILT_SOURCES) install-data-local: $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir) $(DESTDIR)$(pkgdatadir) $(DESTDIR)$(pkgdatadir)/atari $(DESTDIR)$(pkgdatadir)/atari/hostfs $(DESTDIR)$(pkgdatadir)/atari/nfcdrom $(DESTDIR)$(pkgdatadir)/atari/nfjpeg $(DESTDIR)$(pkgdatadir)/atari/nfosmesa $(DESTDIR)$(pkgdatadir)/atari/network $(DESTDIR)$(pkgdatadir)/atari/tools $(DESTDIR)$(pkgdatadir)/atari/sound $(DESTDIR)$(docdir) $(INSTALL_DATA) $(top_srcdir)/ChangeLog $(DESTDIR)$(docdir)/changelog $(INSTALL_DATA) $(top_srcdir)/TODO $(DESTDIR)$(docdir)/TODO $(INSTALL_DATA) $(top_srcdir)/AUTHORS $(DESTDIR)$(docdir)/AUTHORS $(INSTALL_DATA) $(top_srcdir)/NEWS $(DESTDIR)$(docdir)/NEWS $(INSTALL_DATA) $(top_srcdir)/README.md $(DESTDIR)$(docdir)/README $(INSTALL_DATA) $(top_srcdir)/FAQ $(DESTDIR)$(docdir)/FAQ $(INSTALL_DATA) $(top_srcdir)/COPYING $(DESTDIR)$(docdir)/COPYING $(INSTALL_DATA) $(top_srcdir)/BUGS $(DESTDIR)$(docdir)/BUGS $(INSTALL_DATA) $(top_srcdir)/INSTALL $(DESTDIR)$(docdir)/INSTALL $(INSTALL_DATA) $(top_srcdir)/doc/config $(DESTDIR)$(docdir)/config $(INSTALL_DATA) $(top_srcdir)/atari/newdesk.inf $(DESTDIR)$(pkgdatadir)/atari/newdesk.inf $(INSTALL_DATA) $(top_srcdir)/atari/mmusetup.cnf $(DESTDIR)$(pkgdatadir)/atari/mmusetup.cnf $(INSTALL_DATA) $(top_srcdir)/atari/hostfs/bdconfig.sys $(DESTDIR)$(pkgdatadir)/atari/hostfs/bdconfig.sys $(INSTALL_DATA) $(top_srcdir)/atari/hostfs/README $(DESTDIR)$(pkgdatadir)/atari/hostfs/README $(INSTALL_DATA) $(top_srcdir)/atari/nfosmesa/README $(DESTDIR)$(pkgdatadir)/atari/nfosmesa/README $(INSTALL_DATA) $(top_srcdir)/atari/network/ethernet/nfeth-config/eth0-config.sh $(DESTDIR)$(pkgdatadir)/atari/network/eth0-config.sh $(INSTALL_DATA) $(top_srcdir)/atari/network/ethernet/README $(DESTDIR)$(pkgdatadir)/atari/network/README $(INSTALL) $(top_srcdir)/tools/arabridge $(DESTDIR)$(pkgdatadir)/arabridge $(INSTALL) $(top_srcdir)/tools/floppy.sh $(DESTDIR)$(pkgdatadir)/floppy.sh $(INSTALL_DATA) $(top_srcdir)/atari/tools/README $(DESTDIR)$(pkgdatadir)/atari/tools/README $(INSTALL_DATA) $(top_srcdir)/atari/tools/pc101us.kbd.bz2 $(DESTDIR)$(pkgdatadir)/atari/tools/pc101us.kbd.bz2 $(INSTALL_DATA) $(top_srcdir)/atari/sound/README $(DESTDIR)$(pkgdatadir)/atari/sound/README $(INSTALL_DATA) $(top_srcdir)/data/wm_icon.bmp $(DESTDIR)$(pkgdatadir)/wm_icon.bmp $(INSTALL_DATA) $(top_srcdir)/data/logo.bmp $(DESTDIR)$(pkgdatadir)/logo.bmp for s in 32 48; do \ $(mkinstalldirs) "${DESTDIR}${datadir}/icons/hicolor/$${s}x$${s}/apps/"; \ $(INSTALL_DATA) $(top_srcdir)/contrib/icon-$${s}.png "${DESTDIR}${datadir}/icons/hicolor/$${s}x$${s}/apps/aranym.png"; \ $(INSTALL_DATA) $(top_srcdir)/contrib/icon-$${s}.png "${DESTDIR}${datadir}/icons/hicolor/$${s}x$${s}/apps/aranym-jit.png"; \ $(INSTALL_DATA) $(top_srcdir)/contrib/icon-$${s}.png "${DESTDIR}${datadir}/icons/hicolor/$${s}x$${s}/apps/aranym-mmu.png"; \ done $(mkinstalldirs) "${DESTDIR}${datadir}/pixmaps" rm -f "${DESTDIR}${datadir}/pixmaps/aranym"*.png ln -s ../icons/hicolor/32x32/apps/aranym.png "${DESTDIR}${datadir}/pixmaps/aranym.png" ln -s ../icons/hicolor/32x32/apps/aranym.png "${DESTDIR}${datadir}/pixmaps/aranym-jit.png" ln -s ../icons/hicolor/32x32/apps/aranym.png "${DESTDIR}${datadir}/pixmaps/aranym-mmu.png" $(mkinstalldirs) "${DESTDIR}${datadir}/applications" for name in aranym aranym-jit aranym-mmu; do \ $(INSTALL_DATA) "$(top_srcdir)/contrib/$${name}.desktop" "${DESTDIR}${datadir}/applications/$${name}.desktop"; \ done uninstall-local: rm -f $(DESTDIR)$(docdir)/changelog rm -f $(DESTDIR)$(docdir)/TODO rm -f $(DESTDIR)$(docdir)/AUTHORS rm -f $(DESTDIR)$(docdir)/NEWS rm -f $(DESTDIR)$(docdir)/README rm -f $(DESTDIR)$(docdir)/FAQ rm -f $(DESTDIR)$(docdir)/COPYING rm -f $(DESTDIR)$(docdir)/BUGS rm -f $(DESTDIR)$(docdir)/INSTALL rm -f $(DESTDIR)$(docdir)/config rm -f $(DESTDIR)$(pkgdatadir)/atari/newdesk.inf rm -f $(DESTDIR)$(pkgdatadir)/atari/mmusetup.cnf rm -f $(DESTDIR)$(pkgdatadir)/atari/hostfs/bdconfig.sys rm -f $(DESTDIR)$(pkgdatadir)/atari/hostfs/README rm -f $(DESTDIR)$(pkgdatadir)/atari/nfosmesa/README rm -f $(DESTDIR)$(pkgdatadir)/atari/network/eth0-config.sh rm -f $(DESTDIR)$(pkgdatadir)/atari/network/README rm -f $(DESTDIR)$(pkgdatadir)/arabridge rm -f $(DESTDIR)$(pkgdatadir)/floppy.sh rm -f $(DESTDIR)$(pkgdatadir)/atari/tools/README rm -f $(DESTDIR)$(pkgdatadir)/atari/tools/pc101us.kbd.bz2 rm -f $(DESTDIR)$(pkgdatadir)/atari/sound/README rm -f $(DESTDIR)$(pkgdatadir)/wm_icon.bmp rm -f $(DESTDIR)$(pkgdatadir)/logo.bmp rm -f $(DESTDIR)$(pkgdatadir)/logo.png rm -f $(DESTDIR)$(pkgdatadir)/logo.png rm -f $(DESTDIR)$(datadir)/icons/hicolor/*/apps/aranym*.png rm -f $(DESTDIR)$(datadir)/applications/aranym*.desktop rm -f $(DESTDIR)$(datadir)/pixmaps/aranym*.png -rmdir $(DESTDIR)$(datadir)/icons/hicolor/*/apps -rmdir $(DESTDIR)$(datadir)/icons/hicolor/* -rmdir $(DESTDIR)$(datadir)/icons/hicolor -rmdir $(DESTDIR)$(datadir)/icons -rmdir $(DESTDIR)$(datadir)/pixmaps rmdir $(DESTDIR)$(pkgdatadir)/atari/hostfs rmdir $(DESTDIR)$(pkgdatadir)/atari/nfcdrom rmdir $(DESTDIR)$(pkgdatadir)/atari/nfjpeg rmdir $(DESTDIR)$(pkgdatadir)/atari/nfosmesa rmdir $(DESTDIR)$(pkgdatadir)/atari/network rmdir $(DESTDIR)$(pkgdatadir)/atari/tools rmdir $(DESTDIR)$(pkgdatadir)/atari/sound rmdir $(DESTDIR)$(pkgdatadir)/atari -rmdir $(DESTDIR)$(docdir) -rmdir $(DESTDIR)$(man1dir) mrproper: distclean rm -f $(top_srcdir)/aclocal.m4 $(builddir)/configure $(top_srcdir)/config.h.in rm -rf $(top_srcdir)/autom4te.cache bindist: all rm -rf tmpdist $(MAKE) DESTDIR=tmpdist install chmod -R a+r tmpdist cd tmpdist && GZIP=--best tar chozf ../$(PACKAGE_TARNAME).tar.gz * rm -rf tmpdist appimage:: rm -rf tmpdist test "$(srcdir)" = "." || test -d appimage || mkdir appimage unset CDPATH && \ mkdir tmpdist && \ DESTDIR=`(cd tmpdist; pwd)` && \ $(MAKE) DESTDIR="$$DESTDIR" install-strip && \ cd appimage && \ CPU_TYPE="$(CPU_TYPE)" \ VERSION="$(VERSION)" \ top_srcdir="$(abs_top_srcdir)" \ BUILDROOT="$$DESTDIR" \ $(SHELL) "$(abs_top_srcdir)/appimage/build.sh" rm -rf tmpdist devdist: mrproper cd $(srcdir)/../ && GZIP=--best tar chozf $(PACKAGE_TARNAME).tar.gz aranym # not really needed anymore, but *.spec files might do a "make depend" depend: $(top_srcdir)/atari/nfosmesa/glfuncs.h: $(top_srcdir)/tools/glfuncs.h $(DYNGL_PL) $(AM_V_GEN)if test -z "$(PERL)"; then \ echo "$@ is out of date, but PERL not available" >&2; \ else \ $(PERL) $(DYNGL_PL) -macros $(top_srcdir)/tools/glfuncs.h > $$$$.tmp && mv $$$$.tmp $@ || { rm -f $$$$.tmp; false; } \ fi $(top_srcdir)/atari/nfosmesa/glfuncs-bynum.h: $(top_srcdir)/tools/glfuncs.h $(DYNGL_PL) $(AM_V_GEN)if test -z "$(PERL)"; then \ echo "$@ is out of date, but PERL not available" >&2; \ else \ $(PERL) $(DYNGL_PL) $(GLENUMS) -macros $(top_srcdir)/tools/glfuncs.h > $$$$.tmp && mv $$$$.tmp $@ || { rm -f $$$$.tmp; false; } \ fi $(top_srcdir)/src/natfeat/nfosmesa/call-gl.c: $(top_srcdir)/atari/nfosmesa/glfuncs.h $(DYNGL_PL) $(AM_V_GEN)if test -z "$(PERL)"; then \ echo "$@ is out of date, but PERL not available" >&2; \ else \ $(PERL) $(DYNGL_PL) -calls $(top_srcdir)/tools/glfuncs.h > $$$$.tmp && mv $$$$.tmp $@ || { rm -f $$$$.tmp; false; } \ fi $(top_srcdir)/src/natfeat/nfosmesa/dispatch-gl.c: $(top_srcdir)/atari/nfosmesa/glfuncs.h $(DYNGL_PL) $(AM_V_GEN)if test -z "$(PERL)"; then \ echo "$@ is out of date, but PERL not available" >&2; \ else \ $(PERL) $(DYNGL_PL) -dispatch $(top_srcdir)/tools/glfuncs.h > $$$$.tmp && mv $$$$.tmp $@ || { rm -f $$$$.tmp; false; } \ fi $(top_srcdir)/src/natfeat/nfosmesa/paramcount-gl.c: $(top_srcdir)/atari/nfosmesa/glfuncs.h $(DYNGL_PL) $(AM_V_GEN)if test -z "$(PERL)"; then \ echo "$@ is out of date, but PERL not available" >&2; \ else \ $(PERL) $(DYNGL_PL) $(GLENUMS) -paramcount $(top_srcdir)/tools/glfuncs.h > $$$$.tmp && mv $$$$.tmp $@ || { rm -f $$$$.tmp; false; } \ fi $(top_srcdir)/atari/nfosmesa/ldg/osmesa.h: $(top_srcdir)/tools/glfuncs.h $(DYNGL_PL) $(top_srcdir)/atari/nfosmesa/gltypes.h $(AM_V_GEN)if test -z "$(PERL)"; then \ echo "$@ is out of date, but PERL not available" >&2; \ else \ $(PERL) $(DYNGL_PL) $(GLTYPES_H) $(GLENUMS) -ldgheader $(top_srcdir)/tools/glfuncs.h > $$$$.tmp && mv $$$$.tmp $@ || { rm -f $$$$.tmp; false; } \ fi $(top_srcdir)/atari/nfosmesa/osmesa_load.c: $(top_srcdir)/tools/glfuncs.h $(DYNGL_PL) $(AM_V_GEN)if test -z "$(PERL)"; then \ echo "$@ is out of date, but PERL not available" >&2; \ else \ $(PERL) $(DYNGL_PL) $(GLTYPES_H) $(GLENUMS) -ldgsource $(top_srcdir)/tools/glfuncs.h > $$$$.tmp && mv $$$$.tmp $@ || { rm -f $$$$.tmp; false; } \ fi $(top_srcdir)/atari/nfosmesa/ldg/tiny_gl.h: $(top_srcdir)/tools/glfuncs.h $(DYNGL_PL) $(top_srcdir)/atari/nfosmesa/gltypes.h $(AM_V_GEN)if test -z "$(PERL)"; then \ echo "$@ is out of date, but PERL not available" >&2; \ else \ $(PERL) $(DYNGL_PL) $(GLTYPES_H) -tinyldgheader $(top_srcdir)/tools/glfuncs.h > $$$$.tmp && mv $$$$.tmp $@ || { rm -f $$$$.tmp; false; } \ fi $(top_srcdir)/atari/nfosmesa/tinygl_load.c: $(top_srcdir)/tools/glfuncs.h $(DYNGL_PL) $(AM_V_GEN)if test -z "$(PERL)"; then \ echo "$@ is out of date, but PERL not available" >&2; \ else \ $(PERL) $(DYNGL_PL) -tinyldgsource $(top_srcdir)/tools/glfuncs.h > $$$$.tmp && mv $$$$.tmp $@ || { rm -f $$$$.tmp; false; } \ fi $(top_srcdir)/atari/nfosmesa/link-tinygl.h: $(top_srcdir)/tools/glfuncs.h $(DYNGL_PL) $(AM_V_GEN)if test -z "$(PERL)"; then \ echo "$@ is out of date, but PERL not available" >&2; \ else \ $(PERL) $(DYNGL_PL) -tinyldglink $(top_srcdir)/tools/glfuncs.h > $$$$.tmp && mv $$$$.tmp $@ || { rm -f $$$$.tmp; false; } \ fi $(top_srcdir)/atari/nfosmesa/slb/tiny_gl.h: $(top_srcdir)/tools/glfuncs.h $(DYNGL_PL) $(top_srcdir)/atari/nfosmesa/gltypes.h $(AM_V_GEN)if test -z "$(PERL)"; then \ echo "$@ is out of date, but PERL not available" >&2; \ else \ $(PERL) $(DYNGL_PL) $(GLTYPES_H) -tinyslbheader $(top_srcdir)/tools/glfuncs.h > $$$$.tmp && mv $$$$.tmp $@ || { rm -f $$$$.tmp; false; } \ fi $(top_srcdir)/atari/nfosmesa/slb/osmesa.h: $(top_srcdir)/tools/glfuncs.h $(DYNGL_PL) $(top_srcdir)/atari/nfosmesa/gltypes.h $(AM_V_GEN)if test -z "$(PERL)"; then \ echo "$@ is out of date, but PERL not available" >&2; \ else \ $(PERL) $(DYNGL_PL) $(GLTYPES_H) $(GLENUMS) -slbheader $(top_srcdir)/tools/glfuncs.h > $$$$.tmp && mv $$$$.tmp $@ || { rm -f $$$$.tmp; false; } \ fi $(top_srcdir)/atari/nfosmesa/tinygl_loadslb.c: $(top_srcdir)/tools/glfuncs.h $(DYNGL_PL) $(AM_V_GEN)if test -z "$(PERL)"; then \ echo "$@ is out of date, but PERL not available" >&2; \ else \ $(PERL) $(DYNGL_PL) $(GLENUMS) -tinyslbsource $(top_srcdir)/tools/glfuncs.h > $$$$.tmp && mv $$$$.tmp $@ || { rm -f $$$$.tmp; false; } \ fi $(top_srcdir)/atari/nfosmesa/osmesa_loadslb.c: $(top_srcdir)/tools/glfuncs.h $(DYNGL_PL) $(AM_V_GEN)if test -z "$(PERL)"; then \ echo "$@ is out of date, but PERL not available" >&2; \ else \ $(PERL) $(DYNGL_PL) $(GLENUMS) -slbsource $(top_srcdir)/tools/glfuncs.h > $$$$.tmp && mv $$$$.tmp $@ || { rm -f $$$$.tmp; false; } \ fi # For tests gldiff: $(PERL) $(DYNGL_PL) -protos /usr/include/GL/gl.h /usr/include/GL/glext.h /usr/include/GL/osmesa.h | diff $(top_srcdir)/tools/glfuncs.h - || true $(PERL) $(DYNGL_PL) -macros $(top_srcdir)/tools/glfuncs.h | diff $(top_srcdir)/atari/nfosmesa/glfuncs.h - || true $(PERL) $(DYNGL_PL) -calls $(top_srcdir)/tools/glfuncs.h | diff $(top_srcdir)/src/natfeat/nfosmesa/call-gl.c - || true $(PERL) $(DYNGL_PL) -dispatch $(top_srcdir)/tools/glfuncs.h | diff $(top_srcdir)/src/natfeat/nfosmesa/dispatch-gl.c - || true $(PERL) $(DYNGL_PL) $(GLENUMS) -ldgheader $(top_srcdir)/tools/glfuncs.h | diff $(top_srcdir)/atari/nfosmesa/ldg/osmesa.h - || true $(PERL) $(DYNGL_PL) $(GLENUMS) -ldgsource $(top_srcdir)/tools/glfuncs.h | diff $(top_srcdir)/atari/nfosmesa/osmesa_load.c - || true $(PERL) $(DYNGL_PL) -tinyldgheader $(top_srcdir)/tools/glfuncs.h | diff $(top_srcdir)/atari/nfosmesa/ldg/tiny_gl.h - || true $(PERL) $(DYNGL_PL) -tinyldgsource $(top_srcdir)/tools/glfuncs.h | diff $(top_srcdir)/atari/nfosmesa/tinygl_load.c - || true $(PERL) $(DYNGL_PL) -tinyldglink $(top_srcdir)/tools/glfuncs.h | diff $(top_srcdir)/atari/nfosmesa/link-tinygl.h - || true $(PERL) $(DYNGL_PL) -tinyslbheader $(top_srcdir)/tools/glfuncs.h | diff $(top_srcdir)/atari/nfosmesa/slb/tiny_gl.h - || true $(PERL) $(DYNGL_PL) $(GLENUMS) -tinyslbsource $(top_srcdir)/tools/glfuncs.h | diff $(top_srcdir)/atari/nfosmesa/tinygl_loadslb.c - || true # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: aranym-1.1.0/missing0000755000175000017500000001533013454637625012604 0ustar joyjoy#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: aranym-1.1.0/compile0000755000175000017500000001624513454637625012571 0ustar joyjoy#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: aranym-1.1.0/config.h.in0000664000175000017500000004763013454637624013241 0ustar joyjoy/* config.h.in. Generated from configure.ac by autoheader. */ #ifndef __ARANYM_CONFIG_H__ #define __ARANYM_CONFIG_H__ #if defined(__linux__) && !defined(__ANDROID__) #include "linux/libcwrap.h" #endif #ifndef _FORTIFY_SOURCE # define _FORTIFY_SOURCE 2 #endif /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD /* Define if you want to try out a different memory check */ #undef ARAM_PAGE_CHECK /* Default ARAnyM config file */ #undef ARANYMCONFIG /* Default ARAnyM directory */ #undef ARANYMHOME /* Default ARAnyM keymap */ #undef ARANYMKEYMAP /* Default ARAnyM NVRAM file */ #undef ARANYMNVRAM /* Define if you want accelerated blitter output */ #undef BLITTER_MEMMOVE /* Define if you want even more accelerated blitter output */ #undef BLITTER_SDLBLIT /* Define CPU type */ #undef CPU_TYPE /* Define if using some internal debugger */ #undef DEBUGGER /* Default directory separator */ #undef DIRSEPARATOR /* Define if not using full ATC */ #undef DISABLE_ATC /* Define if using the builtin disassembler */ #undef DISASM_USE_BUILTIN /* Define if using the opcodes library for disassembly */ #undef DISASM_USE_OPCODES /* Define if DSP disassembly */ #undef DSP_DISASM /* Define if using DSP */ #undef DSP_EMULATION /* Define if your system supports BPF devices. */ #undef ENABLE_BPF /* Define if you want to use EPS limiter */ #undef ENABLE_EPSLIMITER /* Define if lilo enabled */ #undef ENABLE_LILO /* Define if you want to use Linux /dev/sequencer support */ #undef ENABLE_MIDI_SEQUENCER /* Define if OpenGL enabled */ #undef ENABLE_OPENGL /* Define if you want to use Linux /dev/parport access for parallel port */ #undef ENABLE_PARALLELPARPORT /* Define if you want to use Linux/X86 hardware access for parallel port */ #undef ENABLE_PARALLELX86 /* Define if you want real STOP instruction implementation */ #undef ENABLE_REALSTOP /* Define if you want to use /dev/ttyXXX access for serial port */ #undef ENABLE_SERIALUNIX /* Define if you want to use ethernet card emulation */ #undef ETHERNET_SUPPORT /* Define if you want to use setjmp/longjmp instead of C++ exceptions */ #undef EXCEPTIONS_VIA_LONGJMP /* Define if you want to use extended segfault handler */ #undef EXTENDED_SIGSEGV /* Define if you want fixed position of VideoRAM */ #undef FIXED_VIDEORAM /* Define if you want to use CPU flight recorder */ #undef FLIGHT_RECORDER /* Define if using full MMU */ #undef FULLMMU /* Define if you want to use full history */ #undef FULL_HISTORY /* Define if you want FastRAM of fixed size */ #undef FixedSizeFastRAM /* Define to 1 if you have the `acoshl' function. */ #undef HAVE_ACOSHL /* Define to 1 if you have the `acosl' function. */ #undef HAVE_ACOSL /* Define to 1 if you have the header file. */ #undef HAVE_ALLOCA_H /* Define to 1 if you have the `asinhl' function. */ #undef HAVE_ASINHL /* Define to 1 if you have the `asinl' function. */ #undef HAVE_ASINL /* Define to 1 if you have the `atanh' function. */ #undef HAVE_ATANH /* Define to 1 if you have the `atanhl' function. */ #undef HAVE_ATANHL /* Define to 1 if you have the `atanl' function. */ #undef HAVE_ATANL /* Define to 1 if you have the `bcopy' function. */ #undef HAVE_BCOPY /* Define to 1 if you have the header file. */ #undef HAVE_BFD_H /* define if bool is a built-in type */ #undef HAVE_BOOL /* Define to 1 if you have the `canonicalize_file_name' function. */ #undef HAVE_CANONICALIZE_FILE_NAME /* Define to 1 if you have the `ceill' function. */ #undef HAVE_CEILL /* define if your compiler understand -mno-red-zone */ #undef HAVE_CFLAG_NO_REDZONE /* Define to 1 if you have the `coshl' function. */ #undef HAVE_COSHL /* Define to 1 if you have the `cosl' function. */ #undef HAVE_COSL /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_DIRENT_H /* Define to 1 if you have the header file. */ #undef HAVE_DIS_ASM_H /* Define to 1 if you have the `exp10l' function. */ #undef HAVE_EXP10L /* Define to 1 if you have the `exp2' function. */ #undef HAVE_EXP2 /* Define to 1 if you have the `exp2l' function. */ #undef HAVE_EXP2L /* Define to 1 if you have the `expl' function. */ #undef HAVE_EXPL /* Define to 1 if you have the `expm1l' function. */ #undef HAVE_EXPM1L /* Define to 1 if you have the header file. */ #undef HAVE_EXT2FS_EXT2_FS_H /* Define to 1 if you have the `fabsl' function. */ #undef HAVE_FABSL /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the `finite' function. */ #undef HAVE_FINITE /* Define to 1 if you have the header file. */ #undef HAVE_FLOATINGPOINT_H /* Define to 1 if you have the `floorl' function. */ #undef HAVE_FLOORL /* Define if framework AppKit is available. */ #undef HAVE_FRAMEWORK_APPKIT /* Define if framework CoreFoundation is available. */ #undef HAVE_FRAMEWORK_COREFOUNDATION /* Define if framework IOKit is available. */ #undef HAVE_FRAMEWORK_IOKIT /* Define if framework SDL is available. */ #undef HAVE_FRAMEWORK_SDL /* Define if framework SDL2 is available. */ #undef HAVE_FRAMEWORK_SDL2 /* Define if framework SDL2_image is available. */ #undef HAVE_FRAMEWORK_SDL2_IMAGE /* Define if framework SDL_image is available. */ #undef HAVE_FRAMEWORK_SDL_IMAGE /* Define if framework Security is available. */ #undef HAVE_FRAMEWORK_SECURITY /* Define to 1 if you have the `fseeko' function. */ #undef HAVE_FSEEKO /* Define to 1 if you have the `fsync' function. */ #undef HAVE_FSYNC /* Define to 1 if you have the `futimens' function. */ #undef HAVE_FUTIMENS /* Define to 1 if you have the `futimes' function. */ #undef HAVE_FUTIMES /* Define to 1 if you have the header file. */ #undef HAVE_GETOPT_H /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the header file. */ #undef HAVE_GL_OSMESA_H /* Define to 1 if you have the header file. */ #undef HAVE_IEEE754_H /* Define to 1 if you have the header file. */ #undef HAVE_IEEEFP_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `isinf' function. */ #undef HAVE_ISINF /* Define to 1 if you have the `isinfl' function. */ #undef HAVE_ISINFL /* Define to 1 if you have the `isnan' function. */ #undef HAVE_ISNAN /* Define to 1 if you have the `isnanl' function. */ #undef HAVE_ISNANL /* Define to 1 if you have the `isnormal' function. */ #undef HAVE_ISNORMAL /* Define if you have jpeglib */ #undef HAVE_JPEGLIB /* Define to 1 if you have the header file. */ #undef HAVE_JPEGLIB_H /* Define if you have and libraries */ #undef HAVE_LIBUDEV /* Define to 1 if you have the header file. */ #undef HAVE_LIBUDEV_H /* Define to 1 if you have the `usb-1.0' library (-lusb-1.0). */ #undef HAVE_LIBUSB_1_0 /* Define if zlib enabled */ #undef HAVE_LIBZ /* Define to 1 if you have the `link' function. */ #undef HAVE_LINK /* Define to 1 if you have the header file. */ #undef HAVE_LINUX_IF_H /* Define to 1 if you have the header file. */ #undef HAVE_LINUX_IF_TUN_H /* Define to 1 if you have the `log10l' function. */ #undef HAVE_LOG10L /* Define to 1 if you have the `log1pl' function. */ #undef HAVE_LOG1PL /* Define to 1 if you have the `logl' function. */ #undef HAVE_LOGL /* Define to 1 if you have the `lstat' function. */ #undef HAVE_LSTAT /* Define to 1 if you have the header file. */ #undef HAVE_MACH_MACH_H /* Define to 1 if you have the `mach_task_self' function. */ #undef HAVE_MACH_TASK_SELF /* Define if your system has a working vm_allocate()-based memory allocator. */ #undef HAVE_MACH_VM /* Define to 1 if you have the header file. */ #undef HAVE_MATH_H /* Define to 1 if you have the `memcpy' function. */ #undef HAVE_MEMCPY /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `mmap' function. */ #undef HAVE_MMAP /* Define if defines MAP_ANON and mmap()'ing with MAP_ANON works. */ #undef HAVE_MMAP_ANON /* Define if defines MAP_ANONYMOUS and mmap()'ing with MAP_ANONYMOUS works. */ #undef HAVE_MMAP_ANONYMOUS /* Define if your system has a working mmap()-based memory allocator. */ #undef HAVE_MMAP_VM /* Define to 1 if you have the `mprotect' function. */ #undef HAVE_MPROTECT /* Define to 1 if you have the `munmap' function. */ #undef HAVE_MUNMAP /* Define to 1 if you have the header file. */ #undef HAVE_NAN_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_NET_BPF_H /* Define to 1 if you have the header file. */ #undef HAVE_NET_IF_H /* Define to 1 if you have the header file. */ #undef HAVE_NET_IF_TUN_H /* Define if you want to use FreeBSD's imitation of O_SYNC */ #undef HAVE_O_FSYNC /* Define to 1 if you have the `pathconf' function. */ #undef HAVE_PATHCONF /* Define to 1 if you have the `pow10l' function. */ #undef HAVE_POW10L /* Define to 1 if you have the `pow2' function. */ #undef HAVE_POW2 /* Define to 1 if you have the `pow2l' function. */ #undef HAVE_POW2L /* Define to 1 if you have the `powl' function. */ #undef HAVE_POWL /* Define to 1 if you have the `readlink' function. */ #undef HAVE_READLINK /* Define to 1 if you have the `realpath' function. */ #undef HAVE_REALPATH /* Define to 1 if you have the `roundl' function. */ #undef HAVE_ROUNDL /* Define to 1 if you have the `sbrk' function. */ #undef HAVE_SBRK /* Define to 1 if you have the header file. */ #undef HAVE_SCSI_SG_H /* Define if you have SDL_image */ #undef HAVE_SDL_IMAGE /* Define to 1 if you have the `sigaction' function. */ #undef HAVE_SIGACTION /* Define if doesn't define sighandler_t */ #undef HAVE_SIGHANDLER_T /* Define to 1 if you have the `signal' function. */ #undef HAVE_SIGNAL /* Define to 1 if you have the `signbit' function. */ #undef HAVE_SIGNBIT /* Define to 1 if you have the `sigsetjmp' function. */ #undef HAVE_SIGSETJMP /* Define to 1 if you have the `sinhl' function. */ #undef HAVE_SINHL /* Define to 1 if you have the `sinl' function. */ #undef HAVE_SINL /* Define to 1 if you have the `sqrtl' function. */ #undef HAVE_SQRTL /* Define to 1 if you have the header file. */ #undef HAVE_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if `st_atimensec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIMENSEC /* Define to 1 if `st_atimespec.tv_nsec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC /* Define to 1 if `st_atim.st__tim.tv_nsec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC /* Define to 1 if `st_atim.tv_nsec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #undef HAVE_STRUCT_TM_TM_GMTOFF /* Define to 1 if you have the `symlink' function. */ #undef HAVE_SYMLINK /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_DIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MMAN_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MOUNT_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STATFS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STATVFS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_VFS_H /* Define to 1 if you have the `tanhl' function. */ #undef HAVE_TANHL /* Define to 1 if you have the `tanl' function. */ #undef HAVE_TANL /* Define to 1 if you have the `task_self' function. */ #undef HAVE_TASK_SELF /* Define to 1 if you have the header file. */ #undef HAVE_TERMIOS_H /* Define to 1 if you have the header file. */ #undef HAVE_TERMIO_H /* Define to 1 if you have the `truncate' function. */ #undef HAVE_TRUNCATE /* Define to 1 if you have the `truncl' function. */ #undef HAVE_TRUNCL /* Define to 1 if you have the header file. */ #undef HAVE_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `usleep' function. */ #undef HAVE_USLEEP /* Define to 1 if you have the header file. */ #undef HAVE_UTIME_H /* Define if your system supports vasprintf function with GNU SOURCEs */ #undef HAVE_VASPRINTF /* Define to 1 if you have the `vm_allocate' function. */ #undef HAVE_VM_ALLOCATE /* Define to 1 if you have the `vm_deallocate' function. */ #undef HAVE_VM_DEALLOCATE /* Define to 1 if you have the `vm_protect' function. */ #undef HAVE_VM_PROTECT /* Define if your system has a working VirtualAlloc()-based memory allocator. */ #undef HAVE_WIN32_VM /* Define to 1 if you have the header file. */ #undef HAVE_X11_XLIB_H /* Define if your compiler supports __builtin_bswap16 */ #undef HAVE___BUILTIN_BSWAP16 /* Define if your compiler supports __builtin_bswap32 */ #undef HAVE___BUILTIN_BSWAP32 /* Define if you want to use direct access to host's fs */ #undef HOSTFS_SUPPORT /* Define to the floating point format of the host machine. */ #undef HOST_FLOAT_FORMAT /* Define to 1 if the host machine stores floating point numbers in memory with the word containing the sign bit at the lowest address, or to 0 if it does it the other way around. This macro should not be defined if the ordering is the same as for multi-word integers. */ #undef HOST_FLOAT_WORDS_BIG_ENDIAN /* Define if you want to use extended segfault handler also for HW space */ #undef HW_SIGSEGV /* Define if you want to map the control key to the emulated control key */ #undef MAP_CONTROL_TO_CONTROL /* Define if you want to map the meta key to the emulated control key */ #undef MAP_META_TO_CONTROL /* Define if you want to use Linux support as CD-ROM driver */ #undef NFCDROM_LINUX_SUPPORT /* Define if you want to use host CD-ROM driver */ #undef NFCDROM_SUPPORT /* Define if you want to use Win32 support as CD-ROM driver */ #undef NFCDROM_WIN32_SUPPORT /* Define if you want to use Clipboard */ #undef NFCLIPBRD_SUPPORT /* Define if you want to use NF host exec driver */ #undef NFEXEC_SUPPORT /* Define if you want to use host JPEG decoder */ #undef NFJPEG_SUPPORT /* Define if you want to use host OSMesa driver */ #undef NFOSMESA_SUPPORT /* Define if you want to use Linux PCI driver */ #undef NFPCI_LINUX_SUPPORT /* Define if you want to use host PCI driver */ #undef NFPCI_SUPPORT /* Define if you want to use host SCSI driver */ #undef NFSCSI_SUPPORT /* Define if you want to use NF VDI driver */ #undef NFVDI_SUPPORT /* Define if you don't want to use check memory boundary */ #undef NOCHECKBOUNDARY /* Define to 1 if your C compiler doesn't accept -c and -o together. */ #undef NO_MINUS_C_MINUS_O /* Define if OS needs to cleanly exit sigsegv handler */ #undef NO_NESTED_SIGSEGV /* Define OS type */ #undef OS_TYPE /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define if you want to protect first 2kB of RAM against user mode access */ #undef PROTECT2K /* List of Native Features */ #undef PROVIDES_NATFEATS /* Define if you want protect end of memory */ #undef RAMENDNEEDED /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE /* Define if you want to use Linux /dev/rtc as source timer */ #undef RTC_TIMER /* Define if you want to build SDL GUI */ #undef SDL_GUI /* Define if your system requires sigactions to be reinstalled. */ #undef SIGACTION_NEED_REINSTALL /* Define if your system requires signals to be reinstalled. */ #undef SIGNAL_NEED_REINSTALL /* The size of `double', as computed by sizeof. */ #undef SIZEOF_DOUBLE /* The size of `float', as computed by sizeof. */ #undef SIZEOF_FLOAT /* The size of `int', as computed by sizeof. */ #undef SIZEOF_INT /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG /* The size of `long double', as computed by sizeof. */ #undef SIZEOF_LONG_DOUBLE /* The size of `long long', as computed by sizeof. */ #undef SIZEOF_LONG_LONG /* The size of `short', as computed by sizeof. */ #undef SIZEOF_SHORT /* The size of `void *', as computed by sizeof. */ #undef SIZEOF_VOID_P /* Define if using only small ATC */ #undef SMALL_ATC /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define if you want to use ATA CD-ROM emulation */ #undef SUPPORT_CDROM /* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* Define to 1 if the type of the st_atim member of a struct stat is struct timespec. */ #undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC /* Define if you want to use host USB driver */ #undef USBHOST_SUPPORT /* FPU core */ #undef USES_FPU_CORE /* Define if console framebuffer does not support changing host video mode */ #undef USE_FIXED_CONSOLE_FBVIDEOMODE /* Version number of package */ #undef VERSION /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN # undef WORDS_BIGENDIAN # endif #endif /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE # define _DARWIN_USE_64_BIT_INODE 1 #endif /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES /* Define if needed */ #undef _POSIX_C_SOURCE /* Define if needed */ #undef _XOPEN_SOURCE /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to `off_t' if does not define. */ #undef loff_t /* Define to `long int' if does not define. */ #undef off_t /* Define to `unsigned int' if does not define. */ #undef size_t /* Define to `size_t' if does not define. */ #undef ssize_t /* Define to empty if the keyword `volatile' does not work. Warning: valid code using `volatile' can become incorrect without. Disable with care. */ #undef volatile #endif /* __ARANYM_CONFIG_H__ */ aranym-1.1.0/configure0000775000175000017500000166404613454637624013134 0ustar joyjoy#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for aranym 1.1.0. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: aranym@googlegroups.com about your system, including $0: any error possibly output before this message. Then $0: install a modern shell, or manually run the script $0: under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='aranym' PACKAGE_TARNAME='aranym' PACKAGE_VERSION='1.1.0' PACKAGE_STRING='aranym 1.1.0' PACKAGE_BUGREPORT='aranym@googlegroups.com' PACKAGE_URL='https://github.com/aranym/aranym' ac_unique_file="src/hostscreen.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS GENCOMP_ARCH BUNDLE_FRAMEWORKS ARCHFLAGS CPU_TYPE TARGET DBGSP DEFINES WFLAGS ARCH ENABLE_SERIALUNIX_FALSE ENABLE_SERIALUNIX_TRUE ENABLE_PARALLELPARPORT_FALSE ENABLE_PARALLELPARPORT_TRUE ENABLE_PARALLELX86_FALSE ENABLE_PARALLELX86_TRUE NFEXEC_SUPPORT_FALSE NFEXEC_SUPPORT_TRUE NFCLIPBRD_SUPPORT_FALSE NFCLIPBRD_SUPPORT_TRUE NFVDI_SUPPORT_FALSE NFVDI_SUPPORT_TRUE NFJPEG_SUPPORT_FALSE NFJPEG_SUPPORT_TRUE NFOSMESA_SUPPORT_FALSE NFOSMESA_SUPPORT_TRUE OSMESA_LIBS OSMESA_CFLAGS USBHOST_SUPPORT_FALSE USBHOST_SUPPORT_TRUE NFPCI_LINUX_SUPPORT_FALSE NFPCI_LINUX_SUPPORT_TRUE NFPCI_SUPPORT_FALSE NFPCI_SUPPORT_TRUE NFCDROM_SUPPORT_FALSE NFCDROM_SUPPORT_TRUE LIBUSB_LIBS LIBUSB_CFLAGS ZLIB_LIBS ZLIB_CFLAGS ENABLE_OPENGL_FALSE ENABLE_OPENGL_TRUE GL_LIBS GL_CFLAGS JPEG_LIBS ENABLE_SDL2_FALSE ENABLE_SDL2_TRUE SDL2_CONFIG SDL2_LIBS SDL2_CFLAGS SDL_LIBS SDL_CFLAGS SDL_CONFIG DISASM_USE_OPCODES_FALSE DISASM_USE_OPCODES_TRUE DISASM_USE_BUILTIN_FALSE DISASM_USE_BUILTIN_TRUE DISASM_LIBS DISASM_CFLAGS USE_DEBUGGER_FALSE USE_DEBUGGER_TRUE FPU_MPFR_FALSE FPU_MPFR_TRUE FPU_UAE_FALSE FPU_UAE_TRUE FPU_X86_FALSE FPU_X86_TRUE FPU_IEEE_FALSE FPU_IEEE_TRUE USE_JIT2_FALSE USE_JIT2_TRUE USE_JIT_FPU_FALSE USE_JIT_FPU_TRUE USE_JIT_FALSE USE_JIT_TRUE GENCOMP_ARCH_ARM_FALSE GENCOMP_ARCH_ARM_TRUE GENCOMP_ARCH_X86_FALSE GENCOMP_ARCH_X86_TRUE EXTENDED_SIGSEGV_FALSE EXTENDED_SIGSEGV_TRUE SDL_GUI_FALSE SDL_GUI_TRUE HOSTFS_SUPPORT_FALSE HOSTFS_SUPPORT_TRUE ETHERNET_SUPPORT_FALSE ETHERNET_SUPPORT_TRUE NEED_ARATAPIF_FALSE NEED_ARATAPIF_TRUE WANT_DSP_DISASM_FALSE WANT_DSP_DISASM_TRUE WANT_DSP_FALSE WANT_DSP_TRUE FULLMMU_FALSE FULLMMU_TRUE NEED_GETOPT_FALSE NEED_GETOPT_TRUE BEOS_SETVERSION BEOS_RC BEOS_XRES EGREP GREP PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG ac_ct_WINDRES WINDRES PERL RANLIB CXXCPPFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD CXXCPP_FOR_BUILD ac_ct_CXX_FOR_BUILD CXX_FOR_BUILD LDFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD CFLAGS_FOR_BUILD BUILD_OBJEXT BUILD_EXEEXT CPP_FOR_BUILD ac_ct_CC_FOR_BUILD CC_FOR_BUILD CXXCPP am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX CPP am__fastdepOBJC_FALSE am__fastdepOBJC_TRUE OBJCDEPMODE ac_ct_OBJC OBJCFLAGS OBJC am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC CPU_TYPE_unknown_FALSE CPU_TYPE_unknown_TRUE CPU_TYPE_powerpc_FALSE CPU_TYPE_powerpc_TRUE CPU_TYPE_arm_FALSE CPU_TYPE_arm_TRUE CPU_TYPE_sparc_FALSE CPU_TYPE_sparc_TRUE CPU_TYPE_x86_64_FALSE CPU_TYPE_x86_64_TRUE CPU_TYPE_x86_FALSE CPU_TYPE_x86_TRUE WITH_FINK_FALSE WITH_FINK_TRUE ANDROID_OS_FALSE ANDROID_OS_TRUE OS_TYPE_unknown_FALSE OS_TYPE_unknown_TRUE OS_TYPE_mingw_FALSE OS_TYPE_mingw_TRUE OS_TYPE_beos_FALSE OS_TYPE_beos_TRUE OS_TYPE_mint_FALSE OS_TYPE_mint_TRUE OS_TYPE_irix_FALSE OS_TYPE_irix_TRUE OS_TYPE_cygwin_FALSE OS_TYPE_cygwin_TRUE OS_TYPE_darwin_FALSE OS_TYPE_darwin_TRUE OS_TYPE_solaris_FALSE OS_TYPE_solaris_TRUE OS_TYPE_freebsd_FALSE OS_TYPE_freebsd_TRUE OS_TYPE_netbsd_FALSE OS_TYPE_netbsd_TRUE OS_TYPE_openbsd_FALSE OS_TYPE_openbsd_TRUE OS_TYPE_linux_FALSE OS_TYPE_linux_TRUE MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_nat_debug enable_full_debug enable_debug enable_fullhistory enable_flightrecorder enable_fullmmu enable_atc enable_realstop enable_dsp enable_dsp_disasm enable_protect2k enable_fixedfastram enable_fixedvideoram enable_blitmemmove enable_blitsdlblit enable_hostfs enable_ctrlkey enable_gui enable_opengl with_mesa_headers enable_nfpci enable_usbhost enable_nfosmesa enable_nfjpeg enable_nfclipbrd enable_nfvdi enable_scsi enable_nfexec enable_ata_cdrom enable_epslimiter enable_lilo enable_rtctimer enable_parallelx86 enable_parport enable_serialport with_fink with_classicconfig enable_fpe enable_addressing enable_addr_check enable_spcflags_excl enable_jit_compiler enable_jit2 enable_jit_fpu enable_jit_debug enable_ethernet enable_bpf_ethernet enable_cxx_exceptions enable_dependency_tracking enable_largefile with_opcodes enable_disasm enable_sdl2 with_sdl_prefix with_sdl_exec_prefix enable_sdltest with_sdl2_prefix with_sdl2_exec_prefix ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS OBJC OBJCFLAGS CPP CXX CXXFLAGS CCC CXXCPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR SDL2_CFLAGS SDL2_LIBS GL_CFLAGS GL_LIBS ZLIB_CFLAGS ZLIB_LIBS LIBUSB_CFLAGS LIBUSB_LIBS OSMESA_CFLAGS OSMESA_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures aranym 1.1.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/aranym] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of aranym 1.1.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-nat-debug enable native debugger support (default=yes) --enable-full-debug enable full debug outputs (default=no) --enable-debug=which specify wether to use internal debugger (default=no) --enable-fullhistory enable full history for debugger (default=no) --enable-flightrecorder enable CPU flight recorder (default=no) --enable-fullmmu enable full 68040 MMU (default=no) --enable-atc=ATC select type of ATC for MMU (default=full) --enable-realstop enable real STOP instruction (default=yes) --enable-dsp enable DSP 56001 (default=yes) --enable-dsp-disasm enable DSP 56001 disassembler (default=no) --enable-protect2k enable first 2kB of RAM Super protection (default=yes) --enable-fixedfastram=X use fixed size FastRAM of X MB (default=no) --enable-fixedvideoram use fixed start of VideoRAM (default=no) --enable-blitmemmove enable Blitter memmove rout (default=no) --enable-blitsdlblit enable SDL blitting routine EXPERIMENTAL UNSUPPORTED BUGGY (default=no) --enable-hostfs enable hostfs support (default=yes) --enable-ctrlkey=WHICH specify which key to use for control key emulation (default=both) --enable-gui enable GUI (default=yes) --enable-opengl enable OpenGL (default=yes) --enable-nfpci enable NatFeat PCI (default=no) --enable-usbhost enable NatFeat USB (default=no) --enable-nfosmesa enable NatFeat OSMesa (default=no) --enable-nfjpeg enable NatFeat JPEG (default=yes) --enable-nfclipbrd enable NatFeat Clipboard (default=yes) --enable-nfvdi enable NatFeat VDI (default=yes) --enable-nfscsi enable NatFeat SCSI (default=yes) --enable-nfexec enable NatFeat host file execution (default=yes) --enable-ata-cdrom enable ATA CD-ROM emulation (default=yes) --enable-epslimiter enable Exception per second limiter (default=no) --enable-lilo enable Linux-m68k loader (default=no) --enable-rtctimer enable Linux /dev/rtc as source timer (default=yes) --enable-parallelx86 enable Linux X86 hw access for parallel port (default=no) --enable-parport enable Linux /dev/parport access for parallel port (default=yes) --enable-serialport enable Unix /dev/ttySn serial port support (default=yes) --enable-fpe=FPE specify which fpu emulator to use (default=auto) --enable-addressing=AM specify the addressing mode to use (default=fastest) --enable-addr-check=AM specify the memory check to use (default=page) --enable-spcflags-excl enable exclusive spcflags handling (default=no) --enable-jit-compiler enable JIT compiler (default=no) --enable-jit2 enable JIT (v2) compiler (experimental/ARM only) (default=no) --enable-jit-fpu enable JIT compiler for FPU instructions (default=no) --enable-jit-debug activate native code disassemblers (default=no) --enable-ethernet enable ethernet card emulation (default=yes) --enable-bpf-ethernet enable ethernet card emulation using BPF (default=no) --enable-cxx-exceptions enable the use of C++ try/catch instead of setjmp/longjmp (default=yes) --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-largefile omit support for large files --enable-disasm=builtin|opcodes Specify which library to use for disassembly [none] --disable-sdl2 disable use of SDL2 even if available (default=no) --disable-sdltest Do not try to compile and run a test SDL program Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-mesa-headers Path to Mesa header files --with-fink Use Fink suite to build Aranym on MacOSX (default=no) --with-classicconfig Use Classic config names on MacOSX (default=no) --with-opcodes=DIR specify the directory where the opcodes library is located --with-sdl-prefix=PFX Prefix where SDL is installed (optional) --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional) --with-sdl2-prefix=PFX Prefix where SDL2 is installed (optional) --with-sdl2-exec-prefix=PFX Exec prefix where SDL2 is installed (optional) Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory OBJC Objective C compiler command OBJCFLAGS Objective C compiler flags CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path SDL2_CFLAGS C compiler flags for SDL2, overriding pkg-config SDL2_LIBS linker flags for SDL2, overriding pkg-config GL_CFLAGS C compiler flags for GL, overriding pkg-config GL_LIBS linker flags for GL, overriding pkg-config ZLIB_CFLAGS C compiler flags for ZLIB, overriding pkg-config ZLIB_LIBS linker flags for ZLIB, overriding pkg-config LIBUSB_CFLAGS C compiler flags for LIBUSB, overriding pkg-config LIBUSB_LIBS linker flags for LIBUSB, overriding pkg-config OSMESA_CFLAGS C compiler flags for OSMESA, overriding pkg-config OSMESA_LIBS linker flags for OSMESA, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . aranym home page: . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF aranym configure 1.1.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_objc_try_compile LINENO # ----------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_objc_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_objc_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_objc_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## -------------------------------------- ## ## Report this to aranym@googlegroups.com ## ## -------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 &5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES # ---------------------------------------------------- # Tries to find if the field MEMBER exists in type AGGR, after including # INCLUDES, setting cache variable VAR accordingly. ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 $as_echo_n "checking for $2.$3... " >&6; } if eval \${$4+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (sizeof ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else eval "$4=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$4 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_run LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_cxx_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_run cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by aranym $as_me 1.1.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" ac_aux_dir= for ac_dir in . "$srcdir"/.; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in . \"$srcdir\"/." "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. PROVIDES_NF="audio bootstrap xhdi" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac am__api_version='1.15' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='aranym' VERSION='1.1.0' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # Support silent build rules, requires at least automake-1.11. Disable # by either passing --disable-silent-rules to configure or passing V=1 # to make # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' # Check whether --enable-nat-debug was given. if test "${enable_nat_debug+set}" = set; then : enableval=$enable_nat_debug; WANT_NATDEBUG=$enableval else WANT_NATDEBUG=yes fi # Check whether --enable-full-debug was given. if test "${enable_full_debug+set}" = set; then : enableval=$enable_full_debug; WANT_FULLDEBUG=$enableval else WANT_FULLDEBUG=no fi # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; case "$enableval" in default | yes | uae | ndebug) USE_DEBUGGER=yes;; no) USE_DEBUGGER="no";; *) as_fn_error $? "--enable-debug takes only one of the following values: default, uae, ndebug, no" "$LINENO" 5;; esac else USE_DEBUGGER=no fi # Check whether --enable-fullhistory was given. if test "${enable_fullhistory+set}" = set; then : enableval=$enable_fullhistory; WANT_HISTORY=$enableval else WANT_HISTORY=no fi # Check whether --enable-flightrecorder was given. if test "${enable_flightrecorder+set}" = set; then : enableval=$enable_flightrecorder; WANT_FLIGHTRECORDER=$enableval else WANT_FLIGHTRECORDER=no fi # Check whether --enable-fullmmu was given. if test "${enable_fullmmu+set}" = set; then : enableval=$enable_fullmmu; WANT_MMU=$enableval else WANT_MMU=no fi # Check whether --enable-atc was given. if test "${enable_atc+set}" = set; then : enableval=$enable_atc; case "$enableval" in full) ATC_TYPE="full";; small) ATC_type="small";; no) ATC_TYPE="no";; *) as_fn_error $? "--enable-atc takes only one of the following values: full, small, no" "$LINENO" 5;; esac else ATC_TYPE=full fi # Check whether --enable-realstop was given. if test "${enable_realstop+set}" = set; then : enableval=$enable_realstop; WANT_REALSTOP=$enableval else WANT_REALSTOP=yes fi # Check whether --enable-dsp was given. if test "${enable_dsp+set}" = set; then : enableval=$enable_dsp; WANT_DSP=$enableval else WANT_DSP=yes fi # Check whether --enable-dsp-disasm was given. if test "${enable_dsp_disasm+set}" = set; then : enableval=$enable_dsp_disasm; WANT_DSP_DISASM=$enableval else WANT_DSP_DISASM=no fi # Check whether --enable-protect2k was given. if test "${enable_protect2k+set}" = set; then : enableval=$enable_protect2k; WANT_PROTECT2K=$enableval else WANT_PROTECT2K=yes fi # Check whether --enable-fixedfastram was given. if test "${enable_fixedfastram+set}" = set; then : enableval=$enable_fixedfastram; WANT_FIXEDFASTRAM=$enableval else WANT_FIXEDFASTRAM=no fi # Check whether --enable-fixedvideoram was given. if test "${enable_fixedvideoram+set}" = set; then : enableval=$enable_fixedvideoram; WANT_FIXEDVIDEORAM=$enableval else WANT_FIXEDVIDEORAM=no fi # Check whether --enable-blitmemmove was given. if test "${enable_blitmemmove+set}" = set; then : enableval=$enable_blitmemmove; WANT_BLITMEMMOVE=$enableval else WANT_BLITMEMMOVE=no fi # Check whether --enable-blitsdlblit was given. if test "${enable_blitsdlblit+set}" = set; then : enableval=$enable_blitsdlblit; WANT_BLITSDLBLIT=$enableval else WANT_BLITSDLBLIT=no fi # Check whether --enable-hostfs was given. if test "${enable_hostfs+set}" = set; then : enableval=$enable_hostfs; WANT_HOSTFS=$enableval else WANT_HOSTFS=yes fi # Check whether --enable-ctrlkey was given. if test "${enable_ctrlkey+set}" = set; then : enableval=$enable_ctrlkey; case "$enableval" in ctrl) CONTROL_KEY="ctrl";; meta) CONTROL_KEY="meta";; both) CONTROL_KEY="both";; *) as_fn_error $? "--enable-ctrlkey takes only one of the following values: ctrl, meta, both" "$LINENO" 5;; esac else CONTROL_KEY="both" fi # Check whether --enable-gui was given. if test "${enable_gui+set}" = set; then : enableval=$enable_gui; WANT_SDLGUI=$enableval else WANT_SDLGUI=yes fi # Check whether --enable-opengl was given. if test "${enable_opengl+set}" = set; then : enableval=$enable_opengl; WANT_OPENGL=$enableval else WANT_OPENGL=yes fi # Check whether --with-mesa-headers was given. if test "${with_mesa_headers+set}" = set; then : withval=$with_mesa_headers; WITH_MESAINC=$withval else WITH_MESAINC=no fi # Check whether --enable-nfpci was given. if test "${enable_nfpci+set}" = set; then : enableval=$enable_nfpci; WANT_NFPCI=$enableval else WANT_NFPCI=no fi # Check whether --enable-usbhost was given. if test "${enable_usbhost+set}" = set; then : enableval=$enable_usbhost; WANT_USBHOST=$enableval else WANT_USBHOST=no fi # Check whether --enable-nfosmesa was given. if test "${enable_nfosmesa+set}" = set; then : enableval=$enable_nfosmesa; WANT_NFOSMESA=$enableval else WANT_NFOSMESA=no fi # Check whether --enable-nfjpeg was given. if test "${enable_nfjpeg+set}" = set; then : enableval=$enable_nfjpeg; WANT_NFJPEG=$enableval else WANT_NFJPEG=yes fi # Check whether --enable-nfclipbrd was given. if test "${enable_nfclipbrd+set}" = set; then : enableval=$enable_nfclipbrd; WANT_NFCLIPBRD=$enableval else WANT_NFCLIPBRD=yes fi # Check whether --enable-nfvdi was given. if test "${enable_nfvdi+set}" = set; then : enableval=$enable_nfvdi; WANT_NFVDI=$enableval else WANT_NFVDI=yes fi # Check whether --enable-scsi was given. if test "${enable_scsi+set}" = set; then : enableval=$enable_scsi; WANT_NFSCSI=$enableval else WANT_NFSCSI=yes fi # Check whether --enable-nfexec was given. if test "${enable_nfexec+set}" = set; then : enableval=$enable_nfexec; WANT_NFEXEC=$enableval else WANT_NFEXEC=yes fi # Check whether --enable-ata-cdrom was given. if test "${enable_ata_cdrom+set}" = set; then : enableval=$enable_ata_cdrom; WANT_CDROM=$enableval else WANT_CDROM=yes fi # Check whether --enable-epslimiter was given. if test "${enable_epslimiter+set}" = set; then : enableval=$enable_epslimiter; WANT_EPSLIMITER=$enableval else WANT_EPSLIMITER=no fi # Check whether --enable-lilo was given. if test "${enable_lilo+set}" = set; then : enableval=$enable_lilo; WANT_LILO="$enableval" else WANT_LILO="no" fi # Check whether --enable-rtctimer was given. if test "${enable_rtctimer+set}" = set; then : enableval=$enable_rtctimer; WANT_RTCTIMER="$enableval" else WANT_RTCTIMER="yes" fi # Check whether --enable-parallelx86 was given. if test "${enable_parallelx86+set}" = set; then : enableval=$enable_parallelx86; WANT_PARALLELX86=$enableval else WANT_PARALLELX86=no fi # Check whether --enable-parport was given. if test "${enable_parport+set}" = set; then : enableval=$enable_parport; WANT_PARALLELPARPORT=$enableval else WANT_PARALLELPARPORT=yes fi # Check whether --enable-serialport was given. if test "${enable_serialport+set}" = set; then : enableval=$enable_serialport; WANT_UNIXSERIALPORT=$enableval else WANT_UNIXSERIALPORT=yes fi # Check whether --with-fink was given. if test "${with_fink+set}" = set; then : withval=$with_fink; WITH_FINK=$withval else WITH_FINK=no fi # Check whether --with-classicconfig was given. if test "${with_classicconfig+set}" = set; then : withval=$with_classicconfig; WITH_CLASSIC_CONFIG=$withval else WITH_CLASSIC_CONFIG=no fi if [ "x$WANT_MMU" = "xyes" ]; then SUGGESTED_AUTO_FPE_CORE_TEST_ORDER="mpfr ieee uae" else SUGGESTED_AUTO_FPE_CORE_TEST_ORDER="ieee uae" fi # Check whether --enable-fpe was given. if test "${enable_fpe+set}" = set; then : enableval=$enable_fpe; case "$enableval" in auto) FPE_CORE_TEST_ORDER=$SUGGESTED_AUTO_FPE_CORE_TEST_ORDER;; ieee) FPE_CORE_TEST_ORDER="ieee";; uae) FPE_CORE_TEST_ORDER="uae";; x86) FPE_CORE_TEST_ORDER="x86";; mpfr) FPE_CORE_TEST_ORDER="mpfr";; *) as_fn_error $? "--enable-fpe takes only one of the following values: auto, uae, x86, ieee, mpfr" "$LINENO" 5;; esac else FPE_CORE_TEST_ORDER=$SUGGESTED_AUTO_FPE_CORE_TEST_ORDER fi # Check whether --enable-addressing was given. if test "${enable_addressing+set}" = set; then : enableval=$enable_addressing; case "$enableval" in direct) ADDRESSING_TEST_ORDER="direct";; normal) ADDRESSING_TEST_ORDER="normal";; fixed) ADDRESSING_TEST_ORDER="fixed";; *) as_fn_error $? "--enable-addressing takes only one of the following values: direct, fixed, normal" "$LINENO" 5;; esac else ADDRESSING_TEST_ORDER="direct normal" fi # Check whether --enable-addr-check was given. if test "${enable_addr_check+set}" = set; then : enableval=$enable_addr_check; case "$enableval" in no) MEMORY_CHECK="no";; full) MEMORY_CHECK="full";; page) MEMORY_CHECK="page";; hwsp) MEMORY_CHECK="hwsp";; pagehwsp) MEMORY_CHECK="pagehwsp";; sseg) MEMORY_CHECK="sseg";; *) as_fn_error $? "--enable-addr-check takes only one of the following values: no, full, page, hwsp, pagehwsp, sseg" "$LINENO" 5;; esac else MEMORY_CHECK="page" fi # Check whether --enable-spcflags-excl was given. if test "${enable_spcflags_excl+set}" = set; then : enableval=$enable_spcflags_excl; WANT_SPCFLAGS_EXCL=$enableval else WANT_SPCFLAGS_EXCL=no fi # Check whether --enable-jit-compiler was given. if test "${enable_jit_compiler+set}" = set; then : enableval=$enable_jit_compiler; WANT_JIT=$enableval else WANT_JIT=no fi # Check whether --enable-jit2 was given. if test "${enable_jit2+set}" = set; then : enableval=$enable_jit2; WANT_JIT2=$enableval else WANT_JIT2=no fi # Check whether --enable-jit-fpu was given. if test "${enable_jit_fpu+set}" = set; then : enableval=$enable_jit_fpu; WANT_JIT_FPU=$enableval else WANT_JIT_FPU=no fi # Check whether --enable-jit-debug was given. if test "${enable_jit_debug+set}" = set; then : enableval=$enable_jit_debug; WANT_JIT_DEBUG=$enableval else WANT_JIT_DEBUG=no fi # Check whether --enable-ethernet was given. if test "${enable_ethernet+set}" = set; then : enableval=$enable_ethernet; WANT_ETHERNET=$enableval else WANT_ETHERNET=yes fi # Check whether --enable-bpf-ethernet was given. if test "${enable_bpf_ethernet+set}" = set; then : enableval=$enable_bpf_ethernet; WANT_BFP_ETHERNET=$enableval else WANT_BFP_ETHERNET=no fi # Check whether --enable-cxx-exceptions was given. if test "${enable_cxx_exceptions+set}" = set; then : enableval=$enable_cxx_exceptions; WANT_CXX_EXCEPTIONS=$enableval else WANT_CXX_EXCEPTIONS=yes fi ANDROID_OS=no case "$host_os" in *android*) OS_TYPE=linux ANDROID_OS=yes LIBS="$LIBS -lgnustl_static -llog" ;; linux*) OS_TYPE=linux;; openbsd*) OS_TYPE=openbsd CFLAGS="$CFLAGS -I/usr/local/include" LIBS="$LIBS -L/usr/local/lib" ;; netbsd*) OS_TYPE=netbsd;; freebsd*|kfreebsd*-gnu) OS_TYPE=freebsd;; solaris*) OS_TYPE=solaris;; darwin*) OS_TYPE=darwin;; cygwin*) OS_TYPE=cygwin;; irix*) OS_TYPE=irix;; mint*) OS_TYPE=mint;; beos*|haiku*) OS_TYPE=beos;; mingw*) OS_TYPE=mingw;; *) OS_TYPE=unknown;; esac if test "$OS_TYPE" = "linux"; then OS_TYPE_linux_TRUE= OS_TYPE_linux_FALSE='#' else OS_TYPE_linux_TRUE='#' OS_TYPE_linux_FALSE= fi if test "$OS_TYPE" = "openbsd"; then OS_TYPE_openbsd_TRUE= OS_TYPE_openbsd_FALSE='#' else OS_TYPE_openbsd_TRUE='#' OS_TYPE_openbsd_FALSE= fi if test "$OS_TYPE" = "netbsd"; then OS_TYPE_netbsd_TRUE= OS_TYPE_netbsd_FALSE='#' else OS_TYPE_netbsd_TRUE='#' OS_TYPE_netbsd_FALSE= fi if test "$OS_TYPE" = "freebsd"; then OS_TYPE_freebsd_TRUE= OS_TYPE_freebsd_FALSE='#' else OS_TYPE_freebsd_TRUE='#' OS_TYPE_freebsd_FALSE= fi if test "$OS_TYPE" = "solaris"; then OS_TYPE_solaris_TRUE= OS_TYPE_solaris_FALSE='#' else OS_TYPE_solaris_TRUE='#' OS_TYPE_solaris_FALSE= fi if test "$OS_TYPE" = "darwin"; then OS_TYPE_darwin_TRUE= OS_TYPE_darwin_FALSE='#' else OS_TYPE_darwin_TRUE='#' OS_TYPE_darwin_FALSE= fi if test "$OS_TYPE" = "cygwin"; then OS_TYPE_cygwin_TRUE= OS_TYPE_cygwin_FALSE='#' else OS_TYPE_cygwin_TRUE='#' OS_TYPE_cygwin_FALSE= fi if test "$OS_TYPE" = "irix"; then OS_TYPE_irix_TRUE= OS_TYPE_irix_FALSE='#' else OS_TYPE_irix_TRUE='#' OS_TYPE_irix_FALSE= fi if test "$OS_TYPE" = "mint"; then OS_TYPE_mint_TRUE= OS_TYPE_mint_FALSE='#' else OS_TYPE_mint_TRUE='#' OS_TYPE_mint_FALSE= fi if test "$OS_TYPE" = "beos"; then OS_TYPE_beos_TRUE= OS_TYPE_beos_FALSE='#' else OS_TYPE_beos_TRUE='#' OS_TYPE_beos_FALSE= fi if test "$OS_TYPE" = "mingw"; then OS_TYPE_mingw_TRUE= OS_TYPE_mingw_FALSE='#' else OS_TYPE_mingw_TRUE='#' OS_TYPE_mingw_FALSE= fi if test "$OS_TYPE" = "unknown"; then OS_TYPE_unknown_TRUE= OS_TYPE_unknown_FALSE='#' else OS_TYPE_unknown_TRUE='#' OS_TYPE_unknown_FALSE= fi if test "$ANDROID_OS" = "yes"; then ANDROID_OS_TRUE= ANDROID_OS_FALSE='#' else ANDROID_OS_TRUE='#' ANDROID_OS_FALSE= fi if test "$WITH_FINK" = "yes"; then WITH_FINK_TRUE= WITH_FINK_FALSE='#' else WITH_FINK_TRUE='#' WITH_FINK_FALSE= fi if test "$OS_TYPE" = "unknown"; then OS_TYPE=`echo $host_os | sed -e 's/-/_/g' | sed -e 's/\./_/g'` fi # # provide some defaults on cygwin, # where we use the MinGW version of the SDL library, # to simplify standard configuration. # But only if the user did not override it. # if test "$OS_TYPE" = "cygwin"; then if test "$prefix" = NONE; then prefix=/usr fi fi DEFINES="$DEFINES -DOS_$OS_TYPE" cat >>confdefs.h <<_ACEOF #define OS_TYPE "$OS_TYPE" _ACEOF if test "$OS_TYPE" = "darwin"; then # Make sure MPFR (and other 3rd party libs installed by MacPorts) are found # Note that the order of these flags may be different # in the Xcode project, which is important atleast for the # SDL framework because we want to use the headers from # the official build rather than the ones from MacPorts, # which are only suitable for a single target architecture LDFLAGS="$LDFLAGS -L/opt/local/lib" CPPFLAGS="$CPPFLAGS -I/opt/local/include" # SOURCE_ROOT is set when running from Xcode project if test "$XCODE_VERSION_ACTUAL" != "" -a "$SOURCE_ROOT" != ""; then LDFLAGS="$LDFLAGS -L$SOURCE_ROOT/external/lib" CPPFLAGS="$CPPFLAGS -I$SOURCE_ROOT/external/include" fi fi ARCHFLAGS= HAVE_I386=false HAVE_ARM=false HAVE_SPARC=false HAVE_POWERPC=false HAVE_X86_64=false case "$host_cpu" in i386* | i486* | i586* | i686* | i786* ) CPU_TYPE=i386 HAVE_I386=true if [ "x$OS_TYPE" = "xdarwin" ]; then ARCHFLAGS="-arch i386" if [ "x$DEVELOPER_SDK_DIR" = "x" ]; then DEVELOPER_SDK_DIR=/Developer/SDKs fi if [ ! -d "$DEVELOPER_SDK_DIR" ]; then as_fn_error $? "Cannot find SDKs directory at $DEVELOPER_SDK_DIR" "$LINENO" 5 fi case "$host_os" in darwin8* | darwin9* ) ISYSROOT="-mmacosx-version-min=10.4 -isysroot $DEVELOPER_SDK_DIR/MacOSX10.4u.sdk";; darwin10* ) ISYSROOT="-mmacosx-version-min=10.4 -isysroot $DEVELOPER_SDK_DIR/MacOSX10.5.sdk";; darwin11* | darwin12* ) ISYSROOT="-mmacosx-version-min=10.5";; darwin13* ) ISYSROOT="-mmacosx-version-min=10.7";; darwin14* ) ISYSROOT="-mmacosx-version-min=10.10";; darwin15* ) ISYSROOT="-mmacosx-version-min=10.10";; darwin16* ) ISYSROOT="-mmacosx-version-min=10.10";; darwin17* ) ISYSROOT="-mmacosx-version-min=10.13";; *) as_fn_error $? "Sorry, unknown Darwin version: $host_os" "$LINENO" 5 ;; esac CPPFLAGS="$CPPFLAGS $ISYSROOT $ARCHFLAGS" LDFLAGS="$LDFLAGS $ISYSROOT $ARCHFLAGS" fi ;; sparc* ) CPU_TYPE=sparc HAVE_SPARC=true;; arm* ) CPU_TYPE=arm HAVE_ARM=true CFLAGS="$CFLAGS -ffast-math" CXXFLAGS="$CXXFLAGS -ffast-math" ;; powerpc* ) CPU_TYPE=powerpc HAVE_POWERPC=true if [ "x$OS_TYPE" = "xdarwin" ]; then ARCHFLAGS="-arch ppc" ISYSROOT="-mmacosx-version-min=10.3" CPPFLAGS="$CPPFLAGS $ISYSROOT $ARCHFLAGS" LDFLAGS="$LDFLAGS $ISYSROOT $ARCHFLAGS" fi ;; x86_64* ) CPU_TYPE=x86_64 HAVE_X86_64=true;; *) CPU_TYPE=unknown;; esac if test "$CPU_TYPE" = "i386"; then CPU_TYPE_x86_TRUE= CPU_TYPE_x86_FALSE='#' else CPU_TYPE_x86_TRUE='#' CPU_TYPE_x86_FALSE= fi if test "$CPU_TYPE" = "x86_64"; then CPU_TYPE_x86_64_TRUE= CPU_TYPE_x86_64_FALSE='#' else CPU_TYPE_x86_64_TRUE='#' CPU_TYPE_x86_64_FALSE= fi if test "$CPU_TYPE" = "sparc"; then CPU_TYPE_sparc_TRUE= CPU_TYPE_sparc_FALSE='#' else CPU_TYPE_sparc_TRUE='#' CPU_TYPE_sparc_FALSE= fi if test "$CPU_TYPE" = "arm"; then CPU_TYPE_arm_TRUE= CPU_TYPE_arm_FALSE='#' else CPU_TYPE_arm_TRUE='#' CPU_TYPE_arm_FALSE= fi if test "$CPU_TYPE" = "powerpc"; then CPU_TYPE_powerpc_TRUE= CPU_TYPE_powerpc_FALSE='#' else CPU_TYPE_powerpc_TRUE='#' CPU_TYPE_powerpc_FALSE= fi if test "$CPU_TYPE" = "unknown"; then CPU_TYPE_unknown_TRUE= CPU_TYPE_unknown_FALSE='#' else CPU_TYPE_unknown_TRUE='#' CPU_TYPE_unknown_FALSE= fi if test "$CPU_TYPE" = "unknown"; then CPU_TYPE=`echo $host_cpu | sed -e 's/-/_/g'` fi DEFINES="$DEFINES -DCPU_$CPU_TYPE" cat >>confdefs.h <<_ACEOF #define CPU_TYPE "$CPU_TYPE" _ACEOF ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi if test "x$CC" != xcc; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 $as_echo_n "checking whether cc understands -c and -o together... " >&6; } fi set dummy $CC; ac_cc=`$as_echo "$2" | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -f conftest2.$ac_objext && { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then eval ac_cv_prog_cc_${ac_cc}_c_o=yes if test "x$CC" != xcc; then # Test first that cc exists at all. if { ac_try='cc -c conftest.$ac_ext >&5' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -f conftest2.$ac_objext && { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # cc works too. : else # cc exists but doesn't like -o. eval ac_cv_prog_cc_${ac_cc}_c_o=no fi fi fi else eval ac_cv_prog_cc_${ac_cc}_c_o=no fi rm -f core conftest* fi if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h fi ac_ext=m ac_cpp='$OBJCPP $CPPFLAGS' ac_compile='$OBJC -c $OBJCFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$OBJC -o conftest$ac_exeext $OBJCFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_objc_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in gcc objcc objc cc CC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJC"; then ac_cv_prog_OBJC="$OBJC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJC=$ac_cv_prog_OBJC if test -n "$OBJC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJC" >&5 $as_echo "$OBJC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$OBJC" && break done fi if test -z "$OBJC"; then ac_ct_OBJC=$OBJC for ac_prog in gcc objcc objc cc CC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJC"; then ac_cv_prog_ac_ct_OBJC="$ac_ct_OBJC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJC=$ac_cv_prog_ac_ct_OBJC if test -n "$ac_ct_OBJC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJC" >&5 $as_echo "$ac_ct_OBJC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_OBJC" && break done if test "x$ac_ct_OBJC" = x; then OBJC="gcc" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJC=$ac_ct_OBJC fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for Objective C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Objective C compiler" >&5 $as_echo_n "checking whether we are using the GNU Objective C compiler... " >&6; } if ${ac_cv_objc_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_objc_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_objc_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objc_compiler_gnu" >&5 $as_echo "$ac_cv_objc_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GOBJC=yes else GOBJC= fi ac_test_OBJCFLAGS=${OBJCFLAGS+set} ac_save_OBJCFLAGS=$OBJCFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $OBJC accepts -g" >&5 $as_echo_n "checking whether $OBJC accepts -g... " >&6; } if ${ac_cv_prog_objc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_objc_werror_flag=$ac_objc_werror_flag ac_objc_werror_flag=yes ac_cv_prog_objc_g=no OBJCFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_objc_try_compile "$LINENO"; then : ac_cv_prog_objc_g=yes else OBJCFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_objc_try_compile "$LINENO"; then : else ac_objc_werror_flag=$ac_save_objc_werror_flag OBJCFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_objc_try_compile "$LINENO"; then : ac_cv_prog_objc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_objc_werror_flag=$ac_save_objc_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_objc_g" >&5 $as_echo "$ac_cv_prog_objc_g" >&6; } if test "$ac_test_OBJCFLAGS" = set; then OBJCFLAGS=$ac_save_OBJCFLAGS elif test $ac_cv_prog_objc_g = yes; then if test "$GOBJC" = yes; then OBJCFLAGS="-g -O2" else OBJCFLAGS="-g" fi else if test "$GOBJC" = yes; then OBJCFLAGS="-O2" else OBJCFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$OBJC" am_compiler_list='gcc3 gcc' { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_OBJC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_OBJC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_OBJC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_OBJC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_OBJC_dependencies_compiler_type" >&5 $as_echo "$am_cv_OBJC_dependencies_compiler_type" >&6; } OBJCDEPMODE=depmode=$am_cv_OBJC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_OBJC_dependencies_compiler_type" = gcc3; then am__fastdepOBJC_TRUE= am__fastdepOBJC_FALSE='#' else am__fastdepOBJC_TRUE='#' am__fastdepOBJC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu save_cross_compiling=$cross_compiling save_ac_tool_prefix=$ac_tool_prefix cross_compiling=no ac_tool_prefix= ac_ext=c ac_build_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' ac_build_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_build_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC_FOR_BUILD+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC_FOR_BUILD"; then ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC_FOR_BUILD="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD if test -n "$CC_FOR_BUILD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 $as_echo "$CC_FOR_BUILD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC_FOR_BUILD"; then ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC_FOR_BUILD+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC_FOR_BUILD"; then ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC_FOR_BUILD="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD if test -n "$ac_ct_CC_FOR_BUILD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5 $as_echo "$ac_ct_CC_FOR_BUILD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC_FOR_BUILD" = x; then CC_FOR_BUILD="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;} ac_tool_warned=yes ;; esac CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD fi else CC_FOR_BUILD="$ac_cv_prog_CC_FOR_BUILD" fi if test -z "$CC_FOR_BUILD"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC_FOR_BUILD+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC_FOR_BUILD"; then ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC_FOR_BUILD="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD if test -n "$CC_FOR_BUILD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 $as_echo "$CC_FOR_BUILD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC_FOR_BUILD"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC_FOR_BUILD+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC_FOR_BUILD"; then ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC_FOR_BUILD="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC_FOR_BUILD shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC_FOR_BUILD to just the basename; use the full file name. shift ac_cv_prog_CC_FOR_BUILD="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD if test -n "$CC_FOR_BUILD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 $as_echo "$CC_FOR_BUILD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC_FOR_BUILD"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC_FOR_BUILD+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC_FOR_BUILD"; then ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC_FOR_BUILD="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD if test -n "$CC_FOR_BUILD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 $as_echo "$CC_FOR_BUILD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC_FOR_BUILD" && break done fi if test -z "$CC_FOR_BUILD"; then ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC_FOR_BUILD+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC_FOR_BUILD"; then ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD if test -n "$ac_ct_CC_FOR_BUILD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5 $as_echo "$ac_ct_CC_FOR_BUILD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC_FOR_BUILD" && break done if test "x$ac_ct_CC_FOR_BUILD" = x; then CC_FOR_BUILD="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;} ac_tool_warned=yes ;; esac CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD fi fi fi test -z "$CC_FOR_BUILD" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_build_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS_FOR_BUILD+set} ac_save_CFLAGS=$CFLAGS_FOR_BUILD { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD accepts -g" >&5 $as_echo_n "checking whether $CC_FOR_BUILD accepts -g... " >&6; } if ${ac_cv_build_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_build_prog_cc_g=no CFLAGS_FOR_BUILD="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_build_prog_cc_g=yes else CFLAGS_FOR_BUILD="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS_FOR_BUILD="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_build_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_g" >&5 $as_echo "$ac_cv_build_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS_FOR_BUILD=$ac_save_CFLAGS elif test $ac_cv_build_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS_FOR_BUILD="-g -O2" else CFLAGS_FOR_BUILD="-g" fi else if test "$GCC" = yes; then CFLAGS_FOR_BUILD="-O2" else CFLAGS_FOR_BUILD= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC_FOR_BUILD option to accept ISO C89" >&5 $as_echo_n "checking for $CC_FOR_BUILD option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC_FOR_BUILD cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC_FOR_BUILD="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_build_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC_FOR_BUILD=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_build_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' ac_build_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_build_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_build_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' ac_build_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_build_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD understands -c and -o together" >&5 $as_echo_n "checking whether $CC_FOR_BUILD understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC_FOR_BUILD -c conftest.$ac_ext -o conftest2.$ac_build_objext" >&5 ($CC_FOR_BUILD -c conftest.$ac_ext -o conftest2.$ac_build_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_build_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC_FOR_BUILD="$am_aux_dir/compile $CC_FOR_BUILD" fi ac_ext=c ac_build_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' ac_build_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_build_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC_FOR_BUILD" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_build_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' ac_build_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_build_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP_FOR_BUILD" && test -d "$CPP_FOR_BUILD"; then CPP_FOR_BUILD= fi if test -z "$CPP_FOR_BUILD"; then if ${ac_cv_build_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP_FOR_BUILD in "$CC_FOR_BUILD -E" "$CC_FOR_BUILD -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_build_prog_CPP=$CPP_FOR_BUILD fi CPP_FOR_BUILD=$ac_cv_build_prog_CPP else ac_cv_build_prog_CPP=$CPP_FOR_BUILD fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP_FOR_BUILD" >&5 $as_echo "$CPP_FOR_BUILD" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP_FOR_BUILD\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_build_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' ac_build_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_build_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_tool_prefix=$save_ac_tool_prefix cross_compiling=$save_cross_compiling BUILD_EXEEXT=$ac_build_exeext BUILD_OBJEXT=$ac_build_objext save_cross_compiling=$cross_compiling save_ac_tool_prefix=$ac_tool_prefix cross_compiling=no ac_tool_prefix= ac_ext=cpp ac_cpp='$CXXCPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' ac_build_compile='$CXX_FOR_BUILD -c $CXXFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_build_link='$CXX_FOR_BUILD -o conftest$ac_exeext $CXXFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX_FOR_BUILD"; then if test -n "$CCC"; then CXX_FOR_BUILD=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX_FOR_BUILD+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX_FOR_BUILD"; then ac_cv_prog_CXX_FOR_BUILD="$CXX_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX_FOR_BUILD="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX_FOR_BUILD=$ac_cv_prog_CXX_FOR_BUILD if test -n "$CXX_FOR_BUILD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX_FOR_BUILD" >&5 $as_echo "$CXX_FOR_BUILD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX_FOR_BUILD" && break done fi if test -z "$CXX_FOR_BUILD"; then ac_ct_CXX_FOR_BUILD=$CXX_FOR_BUILD for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX_FOR_BUILD+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX_FOR_BUILD"; then ac_cv_prog_ac_ct_CXX_FOR_BUILD="$ac_ct_CXX_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX_FOR_BUILD="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX_FOR_BUILD=$ac_cv_prog_ac_ct_CXX_FOR_BUILD if test -n "$ac_ct_CXX_FOR_BUILD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX_FOR_BUILD" >&5 $as_echo "$ac_ct_CXX_FOR_BUILD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX_FOR_BUILD" && break done if test "x$ac_ct_CXX_FOR_BUILD" = x; then CXX_FOR_BUILD="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;} ac_tool_warned=yes ;; esac CXX_FOR_BUILD=$ac_ct_CXX_FOR_BUILD fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_build_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS_FOR_BUILD+set} ac_save_CXXFLAGS=$CXXFLAGS_FOR_BUILD { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX_FOR_BUILD accepts -g" >&5 $as_echo_n "checking whether $CXX_FOR_BUILD accepts -g... " >&6; } if ${ac_cv_build_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_build_prog_cxx_g=no CXXFLAGS_FOR_BUILD="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_build_prog_cxx_g=yes else CXXFLAGS_FOR_BUILD="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS_FOR_BUILD="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_build_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cxx_g" >&5 $as_echo "$ac_cv_build_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS_FOR_BUILD=$ac_save_CXXFLAGS elif test $ac_cv_build_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS_FOR_BUILD="-g -O2" else CXXFLAGS_FOR_BUILD="-g" fi else if test "$GXX" = yes; then CXXFLAGS_FOR_BUILD="-O2" else CXXFLAGS_FOR_BUILD= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS_FOR_BUILD' ac_build_compile='$CC -c $CFLAGS $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_build_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS_FOR_BUILD $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX_FOR_BUILD" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' ac_build_compile='$CXX_FOR_BUILD -c $CXXFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_build_link='$CXX_FOR_BUILD -o conftest$ac_exeext $CXXFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP_FOR_BUILD"; then if ${ac_cv_build_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP_FOR_BUILD in "$CXX_FOR_BUILD -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_build_prog_CXXCPP=$CXXCPP_FOR_BUILD fi CXXCPP_FOR_BUILD=$ac_cv_build_prog_CXXCPP else ac_cv_build_prog_CXXCPP=$CXXCPP_FOR_BUILD fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP_FOR_BUILD" >&5 $as_echo "$CXXCPP_FOR_BUILD" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP_FOR_BUILD\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS_FOR_BUILD' ac_build_compile='$CC -c $CFLAGS $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' ac_build_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS_FOR_BUILD $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_tool_prefix=$save_ac_tool_prefix cross_compiling=$save_cross_compiling { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 $as_echo "$PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "$ac_tool_prefix"; then for ac_prog in windres do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_WINDRES+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$WINDRES"; then ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_WINDRES="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi WINDRES=$ac_cv_prog_WINDRES if test -n "$WINDRES"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 $as_echo "$WINDRES" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$WINDRES" && break done fi if test -z "$WINDRES"; then ac_ct_WINDRES=$WINDRES for ac_prog in windres do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_WINDRES+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_WINDRES"; then ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_WINDRES="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES if test -n "$ac_ct_WINDRES"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5 $as_echo "$ac_ct_WINDRES" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_WINDRES" && break done if test "x$ac_ct_WINDRES" = x; then WINDRES=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac WINDRES=$ac_ct_WINDRES fi fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 $as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } if eval \${$as_ac_Header+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int main () { if ((DIR *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_ac_Header=yes" else eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_ac_Header { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' dir; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' x; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in unistd.h fcntl.h sys/mman.h mach/mach.h sys/ioctl.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in getopt.h do : ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" if test "x$ac_cv_header_getopt_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETOPT_H 1 _ACEOF fi done for ac_header in termios.h termio.h alloca.h sys/statfs.h sys/statvfs.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/types.h sys/stat.h sys/vfs.h utime.h sys/param.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/mount.h types.h stat.h ext2fs/ext2_fs.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/socket.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" if test "x$ac_cv_header_sys_socket_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_SOCKET_H 1 _ACEOF fi done for ac_header in linux/if.h linux/if_tun.h net/if.h net/if_tun.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " #ifdef HAVE_SYS_SOCKET_H #include #endif " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in net/bpf.h do : ac_fn_c_check_header_mongrel "$LINENO" "net/bpf.h" "ac_cv_header_net_bpf_h" "$ac_includes_default" if test "x$ac_cv_header_net_bpf_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NET_BPF_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_bigendian=no else ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 $as_echo_n "checking for working volatile... " >&6; } if ${ac_cv_c_volatile+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { volatile int x; int * volatile y = (int *) 0; return !x && !y; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_volatile=yes else ac_cv_c_volatile=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 $as_echo "$ac_cv_c_volatile" >&6; } if test $ac_cv_c_volatile = no; then $as_echo "#define volatile /**/" >>confdefs.h fi # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 $as_echo_n "checking size of short... " >&6; } if ${ac_cv_sizeof_short+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : else if test "$ac_cv_type_short" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (short) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_short=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 $as_echo "$ac_cv_sizeof_short" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_SHORT $ac_cv_sizeof_short _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 $as_echo_n "checking size of int... " >&6; } if ${ac_cv_sizeof_int+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : else if test "$ac_cv_type_int" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (int) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_int=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 $as_echo "$ac_cv_sizeof_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_INT $ac_cv_sizeof_int _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 $as_echo_n "checking size of long... " >&6; } if ${ac_cv_sizeof_long+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : else if test "$ac_cv_type_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 $as_echo "$ac_cv_sizeof_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 $as_echo_n "checking size of long long... " >&6; } if ${ac_cv_sizeof_long_long+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : else if test "$ac_cv_type_long_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 $as_echo "$ac_cv_sizeof_long_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of float" >&5 $as_echo_n "checking size of float... " >&6; } if ${ac_cv_sizeof_float+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float" "$ac_includes_default"; then : else if test "$ac_cv_type_float" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (float) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_float=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_float" >&5 $as_echo "$ac_cv_sizeof_float" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_FLOAT $ac_cv_sizeof_float _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 $as_echo_n "checking size of double... " >&6; } if ${ac_cv_sizeof_double+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then : else if test "$ac_cv_type_double" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (double) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_double=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 $as_echo "$ac_cv_sizeof_double" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_DOUBLE $ac_cv_sizeof_double _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5 $as_echo_n "checking size of long double... " >&6; } if ${ac_cv_sizeof_long_double+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default"; then : else if test "$ac_cv_type_long_double" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long double) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long_double=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5 $as_echo "$ac_cv_sizeof_long_double" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 $as_echo_n "checking size of void *... " >&6; } if ${ac_cv_sizeof_void_p+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : else if test "$ac_cv_type_void_p" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (void *) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_void_p=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 $as_echo "$ac_cv_sizeof_void_p" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_VOID_P $ac_cv_sizeof_void_p _ACEOF ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" if test "x$ac_cv_type_off_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define off_t long int _ACEOF fi ac_fn_c_check_type "$LINENO" "loff_t" "ac_cv_type_loff_t" "$ac_includes_default" if test "x$ac_cv_type_loff_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define loff_t off_t _ACEOF fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" if test "x$ac_cv_type_ssize_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define ssize_t size_t _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if ${ac_cv_type_signal+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_signal=int else ac_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h fi # Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 $as_echo_n "checking for special C compiler options needed for large files... " >&6; } if ${ac_cv_sys_largefile_CC+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : break fi rm -f core conftest.err conftest.$ac_objext CC="$CC -n32" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_largefile_CC=' -n32'; break fi rm -f core conftest.err conftest.$ac_objext break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 $as_echo "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } if ${ac_cv_sys_file_offset_bits+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=64; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 $as_echo "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits _ACEOF ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } if ${ac_cv_sys_large_files+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=1; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 $as_echo "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGE_FILES $ac_cv_sys_large_files _ACEOF ;; esac rm -rf conftest* fi fi ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "#include " if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_TM_TM_GMTOFF 1 _ACEOF fi for ac_header in sys/time.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" if test "x$ac_cv_header_sys_time_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_TIME_H 1 _ACEOF fi done ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.tv_nsec" "ac_cv_member_struct_stat_st_atim_tv_nsec" "#include #include " if test "x$ac_cv_member_struct_stat_st_atim_tv_nsec" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1 _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct stat.st_atim is of type struct timespec" >&5 $as_echo_n "checking whether struct stat.st_atim is of type struct timespec... " >&6; } if ${ac_cv_typeof_struct_stat_st_atim_is_struct_timespec+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if HAVE_SYS_TIME_H # include #endif #include struct timespec ts; struct stat st; int main () { st.st_atim = ts; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes else ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&5 $as_echo "$ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&6; } if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then $as_echo "#define TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC 1" >>confdefs.h fi else ac_fn_c_check_member "$LINENO" "struct stat" "st_atimespec.tv_nsec" "ac_cv_member_struct_stat_st_atimespec_tv_nsec" "#include #include " if test "x$ac_cv_member_struct_stat_st_atimespec_tv_nsec" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC 1 _ACEOF else ac_fn_c_check_member "$LINENO" "struct stat" "st_atimensec" "ac_cv_member_struct_stat_st_atimensec" "#include #include " if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STAT_ST_ATIMENSEC 1 _ACEOF else ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.st__tim.tv_nsec" "ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" "#include #include " if test "x$ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC 1 _ACEOF fi fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler recognizes bool as a built-in type" >&5 $as_echo_n "checking whether the compiler recognizes bool as a built-in type... " >&6; } if ${ac_cv_cxx_bool+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int f(int x){return 1;} int f(char x){return 1;} int f(bool x){return 1;} int main () { bool b = true; return f(b); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_cxx_bool=yes else ac_cv_cxx_bool=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_bool" >&5 $as_echo "$ac_cv_cxx_bool" >&6; } if test "$ac_cv_cxx_bool" = yes; then $as_echo "#define HAVE_BOOL /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5 $as_echo_n "checking for sin in -lm... " >&6; } if ${ac_cv_lib_m_sin+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char sin (); int main () { return sin (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_sin=yes else ac_cv_lib_m_sin=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5 $as_echo "$ac_cv_lib_m_sin" >&6; } if test "x$ac_cv_lib_m_sin" = xyes; then : LIBS="$LIBS -lm" fi for ac_func in strdup do : ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" if test "x$ac_cv_func_strdup" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRDUP 1 _ACEOF fi done for ac_func in sigaction signal sigsetjmp do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in mmap mprotect munmap do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in vm_allocate vm_deallocate vm_protect sbrk do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in strchr memcpy bcopy do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in usleep gettimeofday do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in fseeko fsync futimes futimens link readlink symlink lstat truncate pathconf do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in canonicalize_file_name realpath do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sigsetjmp is supported" >&5 $as_echo_n "checking whether sigsetjmp is supported... " >&6; } if ${ac_cv_have_sigsetjmp+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { sigjmp_buf b; sigsetjmp(b, 1); siglongjmp(b, 1); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_have_sigsetjmp=yes else ac_cv_have_sigsetjmp=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sigsetjmp" >&5 $as_echo "$ac_cv_have_sigsetjmp" >&6; } if test "$ac_cv_have_sigsetjmp" = "yes"; then $as_echo "#define HAVE_SIGSETJMP 1" >>confdefs.h fi for ac_func in mach_task_self task_self do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done $as_echo "#define DIRSEPARATOR \"/\"" >>confdefs.h if test "$OS_TYPE" = "linux"; then for ac_header in libudev.h do : ac_fn_c_check_header_mongrel "$LINENO" "libudev.h" "ac_cv_header_libudev_h" "$ac_includes_default" if test "x$ac_cv_header_libudev_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBUDEV_H 1 _ACEOF fi done if test "$ac_cv_header_libudev_h" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for udev_monitor_new_from_netlink in -ludev" >&5 $as_echo_n "checking for udev_monitor_new_from_netlink in -ludev... " >&6; } if ${ac_cv_lib_udev_udev_monitor_new_from_netlink+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ludev $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char udev_monitor_new_from_netlink (); int main () { return udev_monitor_new_from_netlink (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_udev_udev_monitor_new_from_netlink=yes else ac_cv_lib_udev_udev_monitor_new_from_netlink=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_udev_udev_monitor_new_from_netlink" >&5 $as_echo "$ac_cv_lib_udev_udev_monitor_new_from_netlink" >&6; } if test "x$ac_cv_lib_udev_udev_monitor_new_from_netlink" = xyes; then : LIBS="$LIBS -ludev" fi if test $ac_cv_lib_udev_udev_monitor_new_from_netlink = yes; then $as_echo "#define HAVE_LIBUDEV 1" >>confdefs.h fi fi fi case "$host_os" in linux*) ;; cygwin*|mingw*) $as_echo "#define ARANYMHOME \"aranym\"" >>confdefs.h ;; solaris*) $as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h $as_echo "#define _POSIX_C_SOURCE 199506L" >>confdefs.h DEFINES="$DEFINES -DBSD_COMP -D__EXTENSIONS__" ;; freebsd*|kfreebsd*-gnu) $as_echo "#define HAVE_O_FSYNC 1" >>confdefs.h ;; darwin*) $as_echo "#define HAVE_O_FSYNC 1" >>confdefs.h if test "x$WITH_FINK" = "xyes"; then $as_echo "#define ARANYMHOME \"aranym\"" >>confdefs.h else $as_echo "#define ARANYMHOME \"ARAnyM\"" >>confdefs.h if test "x$WITH_CLASSIC_CONFIG" = "xyes"; then echo "Using classic config" $as_echo "#define ARANYMCONFIG \"config\"" >>confdefs.h $as_echo "#define ARANYMNVRAM \"nvram\"" >>confdefs.h $as_echo "#define ARANYMKEYMAP \"keymap\"" >>confdefs.h else echo "Using preference files" $as_echo "#define ARANYMCONFIG \"org.aranym.amcfg\"" >>confdefs.h $as_echo "#define ARANYMNVRAM \"org.aranym.nvram\"" >>confdefs.h $as_echo "#define ARANYMKEYMAP \"org.aranym.keymap\"" >>confdefs.h fi BUNDLE_FRAMEWORKS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports framework AppKit" >&5 $as_echo_n "checking whether compiler supports framework AppKit... " >&6; } if ${aranym_cv_have_framework_AppKit+:} false; then : $as_echo_n "(cached) " >&6 else saved_LIBS="$LIBS" LIBS="$LIBS -framework AppKit" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : aranym_cv_have_framework_AppKit=yes; AppKit_LIBS=" -framework AppKit" else aranym_cv_have_framework_AppKit=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$saved_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_have_framework_AppKit" >&5 $as_echo "$aranym_cv_have_framework_AppKit" >&6; } if test $aranym_cv_have_framework_AppKit = yes; then : $as_echo "#define HAVE_FRAMEWORK_APPKIT 1" >>confdefs.h fi have_framework_AppKit=$aranym_cv_have_framework_AppKit { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports framework CoreFoundation" >&5 $as_echo_n "checking whether compiler supports framework CoreFoundation... " >&6; } if ${aranym_cv_have_framework_CoreFoundation+:} false; then : $as_echo_n "(cached) " >&6 else saved_LIBS="$LIBS" LIBS="$LIBS -framework CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : aranym_cv_have_framework_CoreFoundation=yes; CoreFoundation_LIBS=" -framework CoreFoundation" else aranym_cv_have_framework_CoreFoundation=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$saved_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_have_framework_CoreFoundation" >&5 $as_echo "$aranym_cv_have_framework_CoreFoundation" >&6; } if test $aranym_cv_have_framework_CoreFoundation = yes; then : $as_echo "#define HAVE_FRAMEWORK_COREFOUNDATION 1" >>confdefs.h fi have_framework_CoreFoundation=$aranym_cv_have_framework_CoreFoundation { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports framework IOKit" >&5 $as_echo_n "checking whether compiler supports framework IOKit... " >&6; } if ${aranym_cv_have_framework_IOKit+:} false; then : $as_echo_n "(cached) " >&6 else saved_LIBS="$LIBS" LIBS="$LIBS -framework IOKit" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : aranym_cv_have_framework_IOKit=yes; IOKit_LIBS=" -framework IOKit" else aranym_cv_have_framework_IOKit=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$saved_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_have_framework_IOKit" >&5 $as_echo "$aranym_cv_have_framework_IOKit" >&6; } if test $aranym_cv_have_framework_IOKit = yes; then : $as_echo "#define HAVE_FRAMEWORK_IOKIT 1" >>confdefs.h fi have_framework_IOKit=$aranym_cv_have_framework_IOKit { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports framework Security" >&5 $as_echo_n "checking whether compiler supports framework Security... " >&6; } if ${aranym_cv_have_framework_Security+:} false; then : $as_echo_n "(cached) " >&6 else saved_LIBS="$LIBS" LIBS="$LIBS -framework Security" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : aranym_cv_have_framework_Security=yes; Security_LIBS=" -framework Security" else aranym_cv_have_framework_Security=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$saved_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_have_framework_Security" >&5 $as_echo "$aranym_cv_have_framework_Security" >&6; } if test $aranym_cv_have_framework_Security = yes; then : $as_echo "#define HAVE_FRAMEWORK_SECURITY 1" >>confdefs.h fi have_framework_Security=$aranym_cv_have_framework_Security PKG_CONFIG="" fi ;; beos*|haiku*) # Extract the first word of "xres", so it can be a program name with args. set dummy xres; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_BEOS_XRES+:} false; then : $as_echo_n "(cached) " >&6 else case $BEOS_XRES in [\\/]* | ?:[\\/]*) ac_cv_path_BEOS_XRES="$BEOS_XRES" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_BEOS_XRES="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_BEOS_XRES" && ac_cv_path_BEOS_XRES="as_fn_error $? "xres not found." "$LINENO" 5" ;; esac fi BEOS_XRES=$ac_cv_path_BEOS_XRES if test -n "$BEOS_XRES"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BEOS_XRES" >&5 $as_echo "$BEOS_XRES" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "rc", so it can be a program name with args. set dummy rc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_BEOS_RC+:} false; then : $as_echo_n "(cached) " >&6 else case $BEOS_RC in [\\/]* | ?:[\\/]*) ac_cv_path_BEOS_RC="$BEOS_RC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_BEOS_RC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_BEOS_RC" && ac_cv_path_BEOS_RC="as_fn_error $? "rc not found." "$LINENO" 5" ;; esac fi BEOS_RC=$ac_cv_path_BEOS_RC if test -n "$BEOS_RC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BEOS_RC" >&5 $as_echo "$BEOS_RC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "setversion", so it can be a program name with args. set dummy setversion; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_BEOS_SETVERSION+:} false; then : $as_echo_n "(cached) " >&6 else case $BEOS_SETVERSION in [\\/]* | ?:[\\/]*) ac_cv_path_BEOS_SETVERSION="$BEOS_SETVERSION" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_BEOS_SETVERSION="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_BEOS_SETVERSION" && ac_cv_path_BEOS_SETVERSION="as_fn_error $? "setversion not found." "$LINENO" 5" ;; esac fi BEOS_SETVERSION=$ac_cv_path_BEOS_SETVERSION if test -n "$BEOS_SETVERSION"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BEOS_SETVERSION" >&5 $as_echo "$BEOS_SETVERSION" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi WANT_UNIXSERIALPORT=no ac_cv_tun_tap_support=no ;; *) ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether TUN/TAP is supported" >&5 $as_echo_n "checking whether TUN/TAP is supported... " >&6; } if ${ac_cv_tun_tap_support+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined(HAVE_LINUX_IF_H) && defined(HAVE_LINUX_IF_TUN_H) #ifdef HAVE_SYS_SOCKET_H #include #endif #include #include #endif #if defined(HAVE_NET_IF_H) && defined(HAVE_NET_IF_TUN_H) #include #include #endif int main () { struct ifreq ifr; memset(&ifr, 0, sizeof(ifr)); ifr.ifr_flags = IFF_TAP | IFF_NO_PI; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_tun_tap_support=yes else ac_cv_tun_tap_support=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tun_tap_support" >&5 $as_echo "$ac_cv_tun_tap_support" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether BPF is supported" >&5 $as_echo_n "checking whether BPF is supported... " >&6; } if ${ac_cv_bpf_support+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined(HAVE_NET_BPF_H) #include #endif int main () { struct bpf_program filter; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_bpf_support=yes else ac_cv_bpf_support=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_bpf_support" >&5 $as_echo "$ac_cv_bpf_support" >&6; } have_mach_vm=no if [ "x$ac_cv_func_vm_allocate" = "xyes" -a "x$ac_cv_func_vm_deallocate" = "xyes" -a \ "x$ac_cv_func_vm_protect" = "xyes" ]; then have_mach_vm=yes fi if [ "x$have_mach_vm" = "xyes" -o "x$have_mach_vm" = "xguessing yes" ]; then $as_echo "#define HAVE_MACH_VM 1" >>confdefs.h fi case "$host_os" in darwin*) OSdarwinReq="#define OS_darwin";; *) OSdarwinReq= ;; esac if [ "x$have_mach_vm" = "xyes" ]; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vm_protect works" >&5 $as_echo_n "checking whether vm_protect works... " >&6; } if ${ac_cv_vm_protect_works+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_cv_vm_protect_works=yes for test_def in NONE_READ NONE_WRITE READ_WRITE; do if test "$cross_compiling" = yes; then : ac_cv_vm_protect_works="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_$test_def $OSdarwinReq #include "$srcdir/src/Unix/vm_alloc.cpp" _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_vm_protect_works=no else rm -f core fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi done if test "$cross_compiling" = yes; then : ac_cv_vm_protect_works="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_RDWR_WRITE $OSdarwinReq #include "$srcdir/src/Unix/vm_alloc.cpp" _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : else ac_cv_vm_protect_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_vm_protect_works" >&5 $as_echo "$ac_cv_vm_protect_works" >&6; } if [ "x$have_mach_vm" = "xyes" ]; then case $ac_cv_vm_protect_works in *yes) have_mach_vm=yes;; *no) have_mach_vm=no;; esac fi if [ "x$have_mach_vm" = "xyes" -o "x$have_mach_vm" = "xguessing yes" ]; then $as_echo "#define HAVE_MACH_VM 1" >>confdefs.h fi fi have_mmap_vm=no if [ "x$ac_cv_func_mmap" = "xyes" -a "x$ac_cv_func_munmap" = "xyes" -a \ "x$ac_cv_func_mprotect" = "xyes" ]; then if [ "x$have_mach_vm" = "xno" ]; then have_mmap_vm=yes fi fi if [ "x$have_mmap_vm" = "xyes" -o "x$have_mmap_vm" = "xguessing yes" ]; then $as_echo "#define HAVE_MMAP_VM 1" >>confdefs.h fi if [ "x$have_mmap_vm" = "xyes" ]; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap supports MAP_ANON" >&5 $as_echo_n "checking whether mmap supports MAP_ANON... " >&6; } if ${ac_cv_mmap_anon+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$cross_compiling" = yes; then : ac_cv_mmap_anon="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define HAVE_MMAP_ANON #define CONFIGURE_TEST_VM_MAP #define TEST_VM_MMAP_ANON #include "$srcdir/src/Unix/vm_alloc.cpp" _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_mmap_anon=yes else ac_cv_mmap_anon=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mmap_anon" >&5 $as_echo "$ac_cv_mmap_anon" >&6; } if [ "x$ac_cv_mmap_anon" = "xyes" -o "x$ac_cv_mmap_anon" = "xguessing yes" ]; then $as_echo "#define HAVE_MMAP_ANON 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap supports MAP_ANONYMOUS" >&5 $as_echo_n "checking whether mmap supports MAP_ANONYMOUS... " >&6; } if ${ac_cv_mmap_anonymous+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$cross_compiling" = yes; then : ac_cv_mmap_anonymous="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define HAVE_MMAP_ANONYMOUS #define CONFIGURE_TEST_VM_MAP #define TEST_VM_MMAP_ANON #include "$srcdir/src/Unix/vm_alloc.cpp" _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_mmap_anonymous=yes else ac_cv_mmap_anonymous=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mmap_anonymous" >&5 $as_echo "$ac_cv_mmap_anonymous" >&6; } if [ "x$ac_cv_mmap_anonymous" = "xyes" -o "x$ac_cv_mmap_anonymous" = "xguessing yes" ]; then $as_echo "#define HAVE_MMAP_ANONYMOUS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mprotect works" >&5 $as_echo_n "checking whether mprotect works... " >&6; } if ${ac_cv_mprotect_works+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_cv_mprotect_works=yes for test_def in NONE_READ NONE_WRITE READ_WRITE; do if test "$cross_compiling" = yes; then : ac_cv_mprotect_works="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_$test_def #include "$srcdir/src/Unix/vm_alloc.cpp" _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_mprotect_works=no else rm -f core fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi done if test "$cross_compiling" = yes; then : ac_cv_mprotect_works="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_RDWR_WRITE #include "$srcdir/src/Unix/vm_alloc.cpp" _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : else ac_cv_mprotect_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mprotect_works" >&5 $as_echo "$ac_cv_mprotect_works" >&6; } if [ "x$have_mmap_vm" = "xyes" ]; then case $ac_cv_mprotect_works in *yes) have_mmap_vm=yes;; *no) have_mmap_vm=no;; esac fi if [ "x$have_mmap_vm" = "xyes" -o "x$have_mmap_vm" = "xguessing yes" ]; then $as_echo "#define HAVE_MMAP_VM 1" >>confdefs.h fi fi if test "$OS_TYPE" = mingw; then $as_echo "#define HAVE_WIN32_VM 1" >>confdefs.h if $HAVE_I386; then LDFLAGS="$LDFLAGS -Wl,--large-address-aware" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether signal handlers need to be reinstalled" >&5 $as_echo_n "checking whether signal handlers need to be reinstalled... " >&6; } if ${ac_cv_signal_need_reinstall+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$cross_compiling" = yes; then : ac_cv_signal_need_reinstall="guessing yes" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef HAVE_UNISTD_H #include #endif #include static int handled_signal = 0; RETSIGTYPE sigusr1_handler(int) { handled_signal++; } int main(void) { /* returns 0 if signals need not to be reinstalled */ signal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1); exit(handled_signal == 2); } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_signal_need_reinstall=yes else ac_cv_signal_need_reinstall=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_signal_need_reinstall" >&5 $as_echo "$ac_cv_signal_need_reinstall" >&6; } if [ "x$ac_cv_signal_need_reinstall" = "xyes" -o "x$ac_cv_signal_need_reinstall" = "xguessing yes" ]; then $as_echo "#define SIGNAL_NEED_REINSTALL 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sigaction handlers need to be reinstalled" >&5 $as_echo_n "checking whether sigaction handlers need to be reinstalled... " >&6; } if ${ac_cv_sigaction_need_reinstall+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$cross_compiling" = yes; then : ac_cv_sigaction_need_reinstall="guessing yes" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef HAVE_UNISTD_H #include #endif #include static int handled_signal = 0; RETSIGTYPE sigusr1_handler(int) { handled_signal++; } typedef RETSIGTYPE (*signal_handler)(int); static signal_handler mysignal(int sig, signal_handler handler) { struct sigaction old_sa; struct sigaction new_sa; new_sa.sa_handler = handler; return ((sigaction(sig,&new_sa,&old_sa) < 0) ? SIG_IGN : old_sa.sa_handler); } int main(void) { /* returns 0 if signals need not to be reinstalled */ mysignal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1); exit(handled_signal == 2); } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_sigaction_need_reinstall=yes else ac_cv_sigaction_need_reinstall=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sigaction_need_reinstall" >&5 $as_echo "$ac_cv_sigaction_need_reinstall" >&6; } if [ "x$ac_cv_sigaction_need_reinstall" = "xyes" -o "x$ac_cv_sigaction_need_reinstall" = "xguessing yes" ]; then $as_echo "#define SIGACTION_NEED_REINSTALL 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for vasprintf" >&5 $as_echo_n "checking for vasprintf... " >&6; } if ${ac_cv_have_vasprintf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _GNU_SOURCE #include #include int main () { va_list a; vasprintf(NULL, NULL, a); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_have_vasprintf=yes else ac_cv_have_vasprintf=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_vasprintf" >&5 $as_echo "$ac_cv_have_vasprintf" >&6; } if [ "x$ac_cv_have_vasprintf" = "xyes" -o "x$ac_cv_have_vasprintf" = "xguessing yes" ]; then $as_echo "#define HAVE_VASPRINTF 1" >>confdefs.h fi if [ "x$ac_cv_have_vasprintf" = "xyes" ]; then DEFINES="$DEFINES -D_GNU_SOURCE" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sighandler_t" >&5 $as_echo_n "checking for sighandler_t... " >&6; } if ${ac_cv_have_sighandler_t+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _GNU_SOURCE #include #include int main () { signal(0, (sighandler_t)NULL); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_have_sighandler_t=yes else ac_cv_have_sighandler_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sighandler_t" >&5 $as_echo "$ac_cv_have_sighandler_t" >&6; } if [ "x$ac_cv_have_sighandler_t" = "xyes" -o "x$ac_cv_have_sighandler_t" = "xguessing yes" ]; then $as_echo "#define HAVE_SIGHANDLER_T 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getopt_long" >&5 $as_echo_n "checking for getopt_long... " >&6; } if ${ac_cv_have_getopt_long+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _GNU_SOURCE #include #include int main () { getopt_long(0, NULL, NULL, NULL, NULL); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_have_getopt_long=yes else ac_cv_have_getopt_long=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_getopt_long" >&5 $as_echo "$ac_cv_have_getopt_long" >&6; } if [ "x$ac_cv_have_getopt_long" = "xyes" -o "x$ac_cv_have_getopt_long" = "xguessing yes" ]; then $as_echo "#define HAVE_GETOPT_H 1" >>confdefs.h fi if test "$ac_cv_have_getopt_long" = "no"; then NEED_GETOPT_TRUE= NEED_GETOPT_FALSE='#' else NEED_GETOPT_TRUE='#' NEED_GETOPT_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_bswap16" >&5 $as_echo_n "checking for __builtin_bswap16... " >&6; } if ${ac_cv_have___builtin_bswap16+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include unsigned short v; int main () { v = __builtin_bswap16(v); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_have___builtin_bswap16=yes else ac_cv_have___builtin_bswap16=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have___builtin_bswap16" >&5 $as_echo "$ac_cv_have___builtin_bswap16" >&6; } if [ "x$ac_cv_have___builtin_bswap16" = "xyes" -o "x$ac_cv_have___builtin_bswap16" = "xguessing yes" ]; then $as_echo "#define HAVE___BUILTIN_BSWAP16 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_bswap32" >&5 $as_echo_n "checking for __builtin_bswap32... " >&6; } if ${ac_cv_have___builtin_bswap32+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include unsigned int v; int main () { v = __builtin_bswap32(v); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_have___builtin_bswap32=yes else ac_cv_have___builtin_bswap32=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have___builtin_bswap32" >&5 $as_echo "$ac_cv_have___builtin_bswap32" >&6; } if [ "x$ac_cv_have___builtin_bswap32" = "xyes" -o "x$ac_cv_have___builtin_bswap32" = "xguessing yes" ]; then $as_echo "#define HAVE___BUILTIN_BSWAP32 1" >>confdefs.h fi case $CONTROL_KEY in meta) $as_echo "#define MAP_META_TO_CONTROL 1" >>confdefs.h ;; both) $as_echo "#define MAP_META_TO_CONTROL 1" >>confdefs.h $as_echo "#define MAP_CONTROL_TO_CONTROL 1" >>confdefs.h ;; ctrl) $as_echo "#define MAP_CONTROL_TO_CONTROL 1" >>confdefs.h ;; esac if [ "x$WANT_JIT" = "xyes" ]; then WANT_EXSIGSEGV=yes MEMORY_CHECK=sseg fi case $MEMORY_CHECK in no) $as_echo "#define NOCHECKBOUNDARY 1" >>confdefs.h ;; page) $as_echo "#define ARAM_PAGE_CHECK 1" >>confdefs.h ;; hwsp) ADDRESSING_TEST_ORDER="fixed" WANT_EXSIGSEGV="yes" $as_echo "#define NOCHECKBOUNDARY 1" >>confdefs.h $as_echo "#define EXTENDED_SIGSEGV 1" >>confdefs.h $as_echo "#define RAMENDNEEDED 1" >>confdefs.h ;; pagehwsp) ADDRESSING_TEST_ORDER="fixed" WANT_EXSIGSEGV="yes" $as_echo "#define ARAM_PAGE_CHECK 1" >>confdefs.h $as_echo "#define NOCHECKBOUNDARY 1" >>confdefs.h $as_echo "#define EXTENDED_SIGSEGV 1" >>confdefs.h $as_echo "#define RAMENDNEEDED 1" >>confdefs.h ;; sseg) ADDRESSING_TEST_ORDER="fixed" WANT_EXSIGSEGV="yes" $as_echo "#define NOCHECKBOUNDARY 1" >>confdefs.h $as_echo "#define RAMENDNEEDED 1" >>confdefs.h $as_echo "#define EXTENDED_SIGSEGV 1" >>confdefs.h $as_echo "#define HW_SIGSEGV 1" >>confdefs.h ;; *) ;; esac if [ "x$WANT_HISTORY" = "xyes" ]; then $as_echo "#define FULL_HISTORY 1" >>confdefs.h fi if [ "x$WANT_FLIGHTRECORDER" = "xyes" ]; then $as_echo "#define FLIGHT_RECORDER 1" >>confdefs.h fi if [ "x$WANT_CDROM" = "xyes" ]; then $as_echo "#define SUPPORT_CDROM 1" >>confdefs.h fi if [ "x$WANT_MMU" = "xyes" ]; then $as_echo "#define FULLMMU 1" >>confdefs.h fi if test "$WANT_MMU" = "yes"; then FULLMMU_TRUE= FULLMMU_FALSE='#' else FULLMMU_TRUE='#' FULLMMU_FALSE= fi if [ "x$ATC_TYPE" = "xsmall" ]; then $as_echo "#define SMALL_ATC 1" >>confdefs.h fi if [ "x$ATC_TYPE" = "xno" ]; then $as_echo "#define DISABLE_ATC 1" >>confdefs.h fi if [ "x$WANT_DSP" = "xyes" ]; then $as_echo "#define DSP_EMULATION 1" >>confdefs.h if [ "x$WANT_DSP_DISASM" = "xyes" ]; then $as_echo "#define DSP_DISASM 1" >>confdefs.h fi fi if test "$WANT_DSP" = "yes"; then WANT_DSP_TRUE= WANT_DSP_FALSE='#' else WANT_DSP_TRUE='#' WANT_DSP_FALSE= fi if test "$WANT_DSP_DISASM" = "yes"; then WANT_DSP_DISASM_TRUE= WANT_DSP_DISASM_FALSE='#' else WANT_DSP_DISASM_TRUE='#' WANT_DSP_DISASM_FALSE= fi if [ "x$WANT_PROTECT2K" != "xno" ]; then $as_echo "#define PROTECT2K 1" >>confdefs.h fi if [ "x$WANT_FIXEDFASTRAM" != "xno" ]; then cat >>confdefs.h <<_ACEOF #define FixedSizeFastRAM $WANT_FIXEDFASTRAM _ACEOF fi if [ "x$WANT_FIXEDVIDEORAM" = "xyes" ]; then $as_echo "#define FIXED_VIDEORAM 1" >>confdefs.h else if [ "x$WANT_MMU" = "xyes" ]; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Protection of first 2kB RAM enabled as well - won't hurt" >&5 $as_echo "$as_me: WARNING: Protection of first 2kB RAM enabled as well - won't hurt" >&2;} $as_echo "#define PROTECT2K 1" >>confdefs.h fi if [ "x$WANT_BLITSDLBLIT" = "xyes" ]; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Blitter SDL surface blitting support needs fixed position of VideoRAM" >&5 $as_echo "$as_me: WARNING: Blitter SDL surface blitting support needs fixed position of VideoRAM" >&2;} $as_echo "#define FIXED_VIDEORAM 1" >>confdefs.h WANT_FIXEDVIDEORAM="yes" fi fi if [ "x$WANT_REALSTOP" = "xyes" ]; then $as_echo "#define ENABLE_REALSTOP 1" >>confdefs.h WANT_SPCFLAGS_EXCL=yes fi if [ "x$WANT_BLITMEMMOVE" = "xyes" ]; then $as_echo "#define BLITTER_MEMMOVE 1" >>confdefs.h fi if [ "x$WANT_BLITSDLBLIT" = "xyes" ]; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Blitter SDL surface blitting support needs fixed position of VideoRAM" >&5 $as_echo "$as_me: WARNING: Blitter SDL surface blitting support needs fixed position of VideoRAM" >&2;} $as_echo "#define FIXED_VIDEORAM 1" >>confdefs.h WANT_FIXEDVIDEORAM="yes" fi if [ "x$WANT_BLITSDLBLIT" = "xyes" ]; then $as_echo "#define BLITTER_SDLBLIT 1" >>confdefs.h $as_echo "#define BLITTER_MEMMOVE 1" >>confdefs.h fi HAVE_ETHERNET=no NEED_ARATAPIF=no if [ "x$WANT_ETHERNET" = "xyes" ]; then if [ "x$ac_cv_tun_tap_support" = "xyes" ]; then $as_echo "#define ETHERNET_SUPPORT 1" >>confdefs.h NEED_ARATAPIF="yes" HAVE_ETHERNET="yes" elif test "x$OS_TYPE" = "xcygwin" && ( $HAVE_I386 || $HAVE_X86_64 ); then $as_echo "#define ETHERNET_SUPPORT 1" >>confdefs.h HAVE_ETHERNET="yes" elif [ "x$OS_TYPE" = "xdarwin" ]; then $as_echo "#define ETHERNET_SUPPORT 1" >>confdefs.h if [ "x$WANT_BFP_ETHERNET" = "xyes" ]; then if [ "x$ac_cv_bpf_support" = "xyes" -o "x$ac_cv_bpf_support" = "xguessing yes" ]; then $as_echo "#define ENABLE_BPF 1" >>confdefs.h fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ethernet won't work without TunTap driver for Mac OS X. See http://tuntaposx.sourceforge.net/" >&5 $as_echo "$as_me: WARNING: Ethernet won't work without TunTap driver for Mac OS X. See http://tuntaposx.sourceforge.net/" >&2;} fi HAVE_ETHERNET="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ethernet interface not supported on your system" >&5 $as_echo "$as_me: WARNING: Ethernet interface not supported on your system" >&2;} fi fi if test "$NEED_ARATAPIF" = "yes"; then NEED_ARATAPIF_TRUE= NEED_ARATAPIF_FALSE='#' else NEED_ARATAPIF_TRUE='#' NEED_ARATAPIF_FALSE= fi if test "$HAVE_ETHERNET" = "yes"; then ETHERNET_SUPPORT_TRUE= ETHERNET_SUPPORT_FALSE='#' else ETHERNET_SUPPORT_TRUE='#' ETHERNET_SUPPORT_FALSE= fi if [ "x$HAVE_ETHERNET" = "xyes" ]; then PROVIDES_NF="$PROVIDES_NF ethernet" fi if [ "x$WANT_HOSTFS" = "xyes" ]; then $as_echo "#define HOSTFS_SUPPORT 1" >>confdefs.h PROVIDES_NF="$PROVIDES_NF hostfs" fi if test "$WANT_HOSTFS" = "yes"; then HOSTFS_SUPPORT_TRUE= HOSTFS_SUPPORT_FALSE='#' else HOSTFS_SUPPORT_TRUE='#' HOSTFS_SUPPORT_FALSE= fi if test "x$WANT_SDLGUI" = "xyes" ; then $as_echo "#define SDL_GUI 1" >>confdefs.h fi if test "$WANT_SDLGUI" = yes; then SDL_GUI_TRUE= SDL_GUI_FALSE='#' else SDL_GUI_TRUE='#' SDL_GUI_FALSE= fi if [ "x$WANT_EXSIGSEGV" = "xyes" ]; then WANT_CXX_EXCEPTIONS="no" fi if [ "x$WANT_CXX_EXCEPTIONS" = "xno" ]; then $as_echo "#define EXCEPTIONS_VIA_LONGJMP 1" >>confdefs.h fi if [ "x$WANT_EXSIGSEGV" = "xyes" ]; then case "$host_os" in linux*) case "$CPU_TYPE" in i386) $as_echo "#define NO_NESTED_SIGSEGV 1" >>confdefs.h ;; x86_64) $as_echo "#define NO_NESTED_SIGSEGV 1" >>confdefs.h ;; arm) CFLAGS="$CFLAGS -marm" CXXFLAGS="$CXXFLAGS -marm" $as_echo "#define NO_NESTED_SIGSEGV 1" >>confdefs.h ;; *) as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 ;; esac ;; openbsd*) case "$CPU_TYPE" in i386) $as_echo "#define NO_NESTED_SIGSEGV 1" >>confdefs.h ;; x86_64) $as_echo "#define NO_NESTED_SIGSEGV 1" >>confdefs.h ;; *) as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 ;; esac ;; darwin*) if [ "x$CPU_TYPE" = "powerpc" ]; then as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 else $as_echo "#define NO_NESTED_SIGSEGV 1" >>confdefs.h fi ;; netbsd*) if $HAVE_I386 || $HAVE_X86_64; then : else as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 fi ;; freebsd*|kfreebsd*-gnu) case "$CPU_TYPE" in i386) $as_echo "#define NO_NESTED_SIGSEGV 1" >>confdefs.h ;; x86_64) $as_echo "#define NO_NESTED_SIGSEGV 1" >>confdefs.h case "$host_os" in freebsd*) CFLAGS="$CFLAGS -mstackrealign" CXXFLAGS="$CXXFLAGS -mstackrealign" ;; *) : ;; esac ;; *) as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 ;; esac ;; cygwin*|mingw*) if $HAVE_I386 || $HAVE_X86_64; then $as_echo "#define NO_NESTED_SIGSEGV 1" >>confdefs.h else as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 fi ;; solaris*) case "$CPU_TYPE" in i386) ;; x86_64) ;; *) as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 ;; esac ;; beos* | haiku*) case "$CPU_TYPE" in i386) $as_echo "#define NO_NESTED_SIGSEGV 1" >>confdefs.h ;; x86_64) $as_echo "#define NO_NESTED_SIGSEGV 1" >>confdefs.h ;; *) as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 ;; esac as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 ;; *) as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 ;; esac fi if test "$WANT_EXSIGSEGV" = yes; then EXTENDED_SIGSEGV_TRUE= EXTENDED_SIGSEGV_FALSE='#' else EXTENDED_SIGSEGV_TRUE='#' EXTENDED_SIGSEGV_FALSE= fi ADDRESSING_MODE="" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the addressing mode to use" >&5 $as_echo_n "checking for the addressing mode to use... " >&6; } for am in $ADDRESSING_TEST_ORDER; do case $am in direct) if [ "x$HAVE_MMAP_VM" = "xno" -a "x$HAVE_MACH_VM" = "xno" ]; then continue fi if [ "x$OS_TYPE" = "xsolaris" ]; then continue fi ADDRESSING_MODE="direct" DEFINES="$DEFINES -DDIRECT_ADDRESSING" break ;; fixed) if [ "x$HAVE_MMAP_VM" = "xno" -a "x$HAVE_MACH_VM" = "xno" ]; then continue fi if test "$OS_TYPE" = "linux" && ( $HAVE_I386 || $HAVE_X86_64 || $HAVE_ARM ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if test "$OS_TYPE" = "freebsd" && ( $HAVE_I386 || $HAVE_X86_64 ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if test "$OS_TYPE" = "openbsd" && ( $HAVE_I386 || $HAVE_X86_64 ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if test "$OS_TYPE" = "darwin" && ( $HAVE_I386 || $HAVE_X86_64 ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if test "$OS_TYPE" = "cygwin" && ( $HAVE_I386 || $HAVE_X86_64 ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if test "$OS_TYPE" = "mingw" && ( $HAVE_I386 || $HAVE_X86_64 ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if test "$OS_TYPE" = "solaris" && ( $HAVE_I386 || $HAVE_X86_64 ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if test "$OS_TYPE" = "beos" && ( $HAVE_I386 || $HAVE_X86_64 ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi ;; normal) ADDRESSING_MODE="normal" DEFINES="$DEFINES -DNORMAL_ADDRESSING" break ;; *) as_fn_error $? "Internal configure.in script error for $am addressing mode" "$LINENO" 5 esac done { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ADDRESSING_MODE" >&5 $as_echo "$ADDRESSING_MODE" >&6; } if [ "x$ADDRESSING_MODE" = "x" ]; then as_fn_error $? "Sorry, no suitable addressing mode in $ADDRESSING_TEST_ORDER" "$LINENO" 5 fi HAVE_GAS=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GAS .p2align feature" >&5 $as_echo_n "checking for GAS .p2align feature... " >&6; } cat >conftest.S << EOF .text .p2align 5 EOF if $CC conftest.S -c -o conftest.o >/dev/null 2>&1 ; then HAVE_GAS=yes; fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_GAS" >&5 $as_echo "$HAVE_GAS" >&6; } if [ "x$GCC" = "xyes" -a "x$FPE_CORE" = "xx86" ]; then SAVED_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-merge-constants" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether GCC supports constants merging" >&5 $as_echo_n "checking whether GCC supports constants merging... " >&6; } if ${ac_cv_gcc_constants_merging+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_gcc_constants_merging=yes else ac_cv_gcc_constants_merging=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gcc_constants_merging" >&5 $as_echo "$ac_cv_gcc_constants_merging" >&6; } if [ "x$ac_cv_gcc_constants_merging" != "xyes" ]; then CXXFLAGS="$SAVED_CXXFLAGS" fi fi ASM_OPTIMIZATIONS=none CAN_JIT=no JITSRCS= GENJITSRCS="compemu1.cpp compemu2.cpp compemu3.cpp compemu4.cpp compemu5.cpp compemu6.cpp compemu7.cpp compemu8.cpp" GENCOMP_ARCH= if test "$GCC" = yes && $HAVE_I386; then DEFINES="$DEFINES -DUNALIGNED_PROFITABLE -DREGPARAM=\"__attribute__((regparm(3)))\"" if [ "x$HAVE_GAS" = "xyes" ]; then ASM_OPTIMIZATIONS=i386 DEFINES="$DEFINES -DX86_ASSEMBLY -DOPTIMIZED_FLAGS -DSAHF_SETO_PROFITABLE" CAN_JIT=yes GENCOMP_ARCH=x86 fi elif test "$GCC" = yes && $HAVE_X86_64; then DEFINES="$DEFINES -DUNALIGNED_PROFITABLE" if [ "x$HAVE_GAS" = "xyes" ]; then ASM_OPTIMIZATIONS="x86-64" DEFINES="$DEFINES -DX86_64_ASSEMBLY -DOPTIMIZED_FLAGS" CAN_JIT=yes GENCOMP_ARCH=x86 SAVED_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -mno-red-zone" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether GCC supports -mno-red-zone" >&5 $as_echo_n "checking whether GCC supports -mno-red-zone... " >&6; } if ${ac_cv_gcc_no_red_zone+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_gcc_no_red_zone=yes else ac_cv_gcc_no_red_zone=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gcc_no_red_zone" >&5 $as_echo "$ac_cv_gcc_no_red_zone" >&6; } CXXFLAGS="$SAVED_CXXFLAGS" if [ "x$ac_cv_gcc_no_red_zone" = "xyes" ]; then $as_echo "#define HAVE_CFLAG_NO_REDZONE 1" >>confdefs.h fi fi elif test "$GCC" = yes && $HAVE_SPARC; then case "$host_os" in solaris*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking SPARC CPU architecture" >&5 $as_echo_n "checking SPARC CPU architecture... " >&6; } SPARC_TYPE=`solaris/which_sparc` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SPARC_TYPE" >&5 $as_echo "$SPARC_TYPE" >&6; } case "$SPARC_TYPE" in SPARC_V8) ASM_OPTIMIZATIONS="SPARC V8 architecture" DEFINES="$DEFINES -DSPARC_V8_ASSEMBLY" CFLAGS="$CFLAGS -Wa,-Av8" CXXFLAGS="$CXXFLAGS -Wa,-Av8" ;; SPARC_V9) ASM_OPTIMIZATIONS="SPARC V9 architecture" DEFINES="$DEFINES -DSPARC_V9_ASSEMBLY" CFLAGS="$CFLAGS -Wa,-Av9" CXXFLAGS="$CXXFLAGS -Wa,-Av9" ;; esac ;; esac elif test "$GCC" = yes && $HAVE_ARM; then if [ "x$HAVE_GAS" = "xyes" ]; then case "$host_cpu" in armv6*|armv7*|armv8*|armv9*) ASM_OPTIMIZATIONS="ARM/V6 architecture w optimized flags" DEFINES="$DEFINES -DARMV6_ASSEMBLY -DARM_ASSEMBLY -DOPTIMIZED_FLAGS" CFLAGS="$CFLAGS -march=armv6" CXXFLAGS="$CXXFLAGS -march=armv6" ;; *) case "$host_os" in *-androideabi) ASM_OPTIMIZATIONS="ARM/V6 architecture w optimized flags" DEFINES="$DEFINES -DARMV6_ASSEMBLY -DARM_ASSEMBLY -DOPTIMIZED_FLAGS" ;; *) ASM_OPTIMIZATIONS="ARM/generic w optimized flags" DEFINES="$DEFINES -DARM_ASSEMBLY -DOPTIMIZED_FLAGS" ;; esac ;; esac GENCOMP_ARCH=arm CAN_JIT=yes fi fi if [ "x$WANT_JIT2" = "xyes" ]; then if $HAVE_ARM; then DEFINES="$DEFINES -DUSE_JIT2=1" else as_fn_error $? "JIT Version 2 is only available for ARM" "$LINENO" 5 fi fi if test "$GENCOMP_ARCH" = "x86"; then GENCOMP_ARCH_X86_TRUE= GENCOMP_ARCH_X86_FALSE='#' else GENCOMP_ARCH_X86_TRUE='#' GENCOMP_ARCH_X86_FALSE= fi if test "$GENCOMP_ARCH" = "arm"; then GENCOMP_ARCH_ARM_TRUE= GENCOMP_ARCH_ARM_FALSE='#' else GENCOMP_ARCH_ARM_TRUE='#' GENCOMP_ARCH_ARM_FALSE= fi if [ "x$WANT_JIT" = "xyes" -a "x$CAN_JIT" = "xyes" ]; then if [ "x$WANT_MMU" = "xyes" ]; then as_fn_error $? "MMU&JIT in combination are not supported" "$LINENO" 5 fi JITSRCS="$JITSRCS uae_cpu/compiler/compemu_support.cpp" DEFINES="$DEFINES -DUSE_JIT=1" CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" if [ "x$WANT_JIT_DEBUG" = "xyes" ]; then DEFINES="$DEFINES -DJIT_DEBUG=1" fi if [ "x$WANT_JIT_FPU" = "xyes" ]; then DEFINES="$DEFINES -DUSE_JIT_FPU=1" fi if test "$OS_TYPE" != darwin && $HAVE_X86_64; then # Force text address; needed at least on ArchLinux # where it is otherwise set to a high memory address # which is not in the range for the JIT addressing scheme LDFLAGS="$LDFLAGS -Wl,-Ttext-segment=0x10000000" fi else WANT_JIT=no WANT_JIT_FPU=no WANT_JIT_DEBUG=no JITSRCS="" GENJITSRCS="" fi if test "$WANT_JIT" = "yes"; then USE_JIT_TRUE= USE_JIT_FALSE='#' else USE_JIT_TRUE='#' USE_JIT_FALSE= fi if test "$WANT_JIT_FPU" = "yes"; then USE_JIT_FPU_TRUE= USE_JIT_FPU_FALSE='#' else USE_JIT_FPU_TRUE='#' USE_JIT_FPU_FALSE= fi if test "$WANT_JIT2" = "yes"; then USE_JIT2_TRUE= USE_JIT2_FALSE='#' else USE_JIT2_TRUE='#' USE_JIT2_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking floating point format" >&5 $as_echo_n "checking floating point format... " >&6; } if ${ac_cv_c_float_format+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then od -c conftest.o | sed 's/^[0-7]*[ ]*/ / s/\*/./g s/ \\n/*/g s/ [0-9][0-9][0-9]/./g s/ \\[^ ]/./g' | tr -d ' ' | tr -s '*' ' ' | fold | sed '$a\ ' > conftest.dmp if grep 'format:.@IEEEF.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (big-endian)' elif grep 'format:.I@@PFE.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (big-endian)' elif grep 'format:.FEEEI@.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (little-endian)' elif grep 'format:.EFP@@I.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (little-endian)' elif grep 'format:.__floa.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='VAX D-float' elif grep 'format:..PDP-1.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='PDP-10' elif grep 'format:.BMHEXF.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IBM 370 hex' else as_fn_error $? "Unknown floating point format" "$LINENO" 5 fi else as_fn_error $? "compile failed" "$LINENO" 5 fi rm -rf conftest* ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_float_format" >&5 $as_echo "$ac_cv_c_float_format" >&6; } # IEEE is the default format. If the float endianness isn't the same # as the integer endianness, we have to set FLOAT_WORDS_BIG_ENDIAN # (which is a tristate: yes, no, default). This is only an issue with # IEEE; the other formats are only supported by a few machines each, # all with the same endianness. format=IEEE_FLOAT_FORMAT fbigend= case $ac_cv_c_float_format in 'IEEE (big-endian)' ) if test $ac_cv_c_bigendian = no; then fbigend=1 fi if test $ac_cv_c_bigendian = universal; then fbigend=WORDS_BIGENDIAN fi ;; 'IEEE (little-endian)' ) if test $ac_cv_c_bigendian = yes; then fbigend=0 fi if test $ac_cv_c_bigendian = universal; then fbigend='!WORDS_BIGENDIAN' fi ;; 'VAX D-float' ) format=VAX_FLOAT_FORMAT ;; 'PDP-10' ) format=PDP10_FLOAT_FORMAT ;; 'IBM 370 hex' ) format=IBM_FLOAT_FORMAT ;; esac cat >>confdefs.h <<_ACEOF #define HOST_FLOAT_FORMAT $format _ACEOF if test -n "$fbigend"; then cat >>confdefs.h <<_ACEOF #define HOST_FLOAT_WORDS_BIG_ENDIAN $fbigend _ACEOF fi for ac_header in ieee754.h ieeefp.h floatingpoint.h nan.h math.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if [ "x$WANT_JIT_FPU" = "xyes" -a "x$FPE_CORE_TEST_ORDER" != "xieee" ]; then FPE_CORE_TEST_ORDER="ieee" fi for fpe in $FPE_CORE_TEST_ORDER; do case $fpe in ieee) case $ac_cv_c_float_format in IEEE*) FPE_CORE="IEEE fpu core" $as_echo "#define USES_FPU_CORE \"IEEE\"" >>confdefs.h DEFINES="$DEFINES -DFPU_IEEE" for ac_func in isnanl isinfl do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in logl log10l expl powl exp2l pow2l exp10l pow10l fabsl sqrtl log1pl expm1l exp2 pow2 do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in sinl cosl tanl sinhl coshl tanhl do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in asinl acosl atanl asinhl acoshl atanhl do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in floorl ceill truncl roundl do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done case $CPU_TYPE in alpha) CXXFLAGS="$CXXFLAGS -mieee" LDFLAGS="$LDFLAGS -mieee" break ;; *) ;; esac break ;; esac ;; x86) if test ":$GCC:$HAVE_I386:$HAVE_GAS:" = ":yes:true:yes:" -o ":$GCC:$HAVE_X86_64:$HAVE_GAS:" = ":yes:true:yes:"; then FPE_CORE="i387 fpu core" DEFINES="$DEFINES -DFPU_X86" break fi ;; uae) FPE_CORE="uae fpu core" $as_echo "#define USES_FPU_CORE \"UAE\"" >>confdefs.h DEFINES="$DEFINES -DFPU_UAE" break ;; mpfr) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpfr_set_zero in -lmpfr" >&5 $as_echo_n "checking for mpfr_set_zero in -lmpfr... " >&6; } if ${ac_cv_lib_mpfr_mpfr_set_zero+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmpfr -lgmp $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char mpfr_set_zero (); int main () { return mpfr_set_zero (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_mpfr_mpfr_set_zero=yes else ac_cv_lib_mpfr_mpfr_set_zero=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpfr_mpfr_set_zero" >&5 $as_echo "$ac_cv_lib_mpfr_mpfr_set_zero" >&6; } if test "x$ac_cv_lib_mpfr_mpfr_set_zero" = xyes; then : LIBS="$LIBS -lmpfr -lgmp" fi if test $ac_cv_lib_mpfr_mpfr_set_zero = yes; then FPE_CORE="mpfr fpu core" $as_echo "#define USES_FPU_CORE \"MPFR\"" >>confdefs.h DEFINES="$DEFINES -DFPU_MPFR" break fi ;; *) as_fn_error $? "Internal configure.in script error for $fpe fpu core" "$LINENO" 5 ;; esac done if [ "x$FPE_CORE" = "x" ]; then as_fn_error $? "Sorry, no suitable FPU core found in $FPE_CORE_TEST_ORDER" "$LINENO" 5 fi if test "$fpe" = "ieee"; then FPU_IEEE_TRUE= FPU_IEEE_FALSE='#' else FPU_IEEE_TRUE='#' FPU_IEEE_FALSE= fi if test "$fpe" = "x86"; then FPU_X86_TRUE= FPU_X86_FALSE='#' else FPU_X86_TRUE='#' FPU_X86_FALSE= fi if test "$fpe" = "uae"; then FPU_UAE_TRUE= FPU_UAE_FALSE='#' else FPU_UAE_TRUE='#' FPU_UAE_FALSE= fi if test "$fpe" = "mpfr"; then FPU_MPFR_TRUE= FPU_MPFR_FALSE='#' else FPU_MPFR_TRUE='#' FPU_MPFR_FALSE= fi for ac_func in atanh do : ac_fn_c_check_func "$LINENO" "atanh" "ac_cv_func_atanh" if test "x$ac_cv_func_atanh" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_ATANH 1 _ACEOF fi done for ac_func in isnan isinf finite isnormal signbit do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if [ "x$WANT_JIT" = "xno" ]; then if [ "$USE_DEBUGGER" = "yes" ]; then $as_echo "#define DEBUGGER 1" >>confdefs.h fi else if [ "$USE_DEBUGGER" = "yes" ]; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: interactive debugger not usable with JIT" >&5 $as_echo "$as_me: WARNING: interactive debugger not usable with JIT" >&2;} USE_DEBUGGER=no fi fi if test "$USE_DEBUGGER" = yes; then USE_DEBUGGER_TRUE= USE_DEBUGGER_FALSE='#' else USE_DEBUGGER_TRUE='#' USE_DEBUGGER_FALSE= fi # Check whether --with-opcodes was given. if test "${with_opcodes+set}" = set; then : withval=$with_opcodes; with_opcodes=$withval else with_opcodes= fi # Check whether --enable-disasm was given. if test "${enable_disasm+set}" = set; then : enableval=$enable_disasm; enable_disasm=$enableval else enable_disasm=no; enable_disasm_defaulted=yes fi case "$enable_disasm" in no|builtin|opcodes) ;; yes|auto) enable_disasm=auto ;; *) as_fn_error $? "unknown disassembler $enable_disasm" "$LINENO" 5 ;; esac # check wether we need disassembly support, and which one DISASM_CFLAGS= DISASM_LIBS= if test "$USE_DEBUGGER" != no -o "$WANT_HISTORY" = yes; then if test "$enable_disasm" = no; then if test "$enable_disasm_defaulted" = "yes"; then if test "$with_opcodes" != ""; then enable_disasm=opcodes else enable_disasm=auto fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: you have requested debug support but disabled disassembly. The debugger needs some disassembling support." >&5 $as_echo "$as_me: WARNING: you have requested debug support but disabled disassembly. The debugger needs some disassembling support." >&2;} fi fi fi if test "$enable_disasm" = auto -o "$enable_disasm" = opcodes; then CPPFLAGS_save="$CPPFLAGS" LIBS_save="$LIBS" if test "$with_opcodes" != ""; then if test -f "$with_opcodes/build-dir/bfd/bfd.h" ; then OPCODES_CFLAGS="-I$with_opcodes/build-dir/bfd -I$with_opcodes/build-dir/libiberty -I$with_opcodes/build-dir/opcodes" OPCODES_LIBS="-L$with_opcodes/build-dir/bfd -L$with_opcodes/build-dir/libiberty -L$with_opcodes/build-dir/opcodes" else OPCODES_CFLAGS="-I$with_opcodes/include" OPCODES_LIBS="-L$with_opcodes/lib" fi CPPFLAGS="$CPPFLAGS $OPCODES_CFLAGS" fi OPCODES_LIBS="$OPCODES_LIBS -lopcodes -lbfd -lz -ldl" found=no for ac_header in bfd.h do : ac_fn_c_check_header_mongrel "$LINENO" "bfd.h" "ac_cv_header_bfd_h" "$ac_includes_default" if test "x$ac_cv_header_bfd_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BFD_H 1 _ACEOF found=yes else found=no fi done for ac_header in dis-asm.h do : ac_fn_c_check_header_mongrel "$LINENO" "dis-asm.h" "ac_cv_header_dis_asm_h" "$ac_includes_default" if test "x$ac_cv_header_dis_asm_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DIS_ASM_H 1 _ACEOF found=yes else found=no fi done CPPFLAGS="$CPPFLAGS_save" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for print_insn_m68k in -lopcodes" >&5 $as_echo_n "checking for print_insn_m68k in -lopcodes... " >&6; } if ${ac_cv_lib_opcodes_print_insn_m68k+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lopcodes $OPCODES_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char print_insn_m68k (); int main () { return print_insn_m68k (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_opcodes_print_insn_m68k=yes else ac_cv_lib_opcodes_print_insn_m68k=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_opcodes_print_insn_m68k" >&5 $as_echo "$ac_cv_lib_opcodes_print_insn_m68k" >&6; } if test "x$ac_cv_lib_opcodes_print_insn_m68k" = xyes; then : found=yes else unset ac_cv_lib_opcodes_print_insn_m68k OPCODES_LIBS="$OPCODES_LIBS -liberty" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for print_insn_m68k in -lopcodes" >&5 $as_echo_n "checking for print_insn_m68k in -lopcodes... " >&6; } if ${ac_cv_lib_opcodes_print_insn_m68k+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lopcodes $OPCODES_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char print_insn_m68k (); int main () { return print_insn_m68k (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_opcodes_print_insn_m68k=yes else ac_cv_lib_opcodes_print_insn_m68k=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_opcodes_print_insn_m68k" >&5 $as_echo "$ac_cv_lib_opcodes_print_insn_m68k" >&6; } if test "x$ac_cv_lib_opcodes_print_insn_m68k" = xyes; then : found=yes else found=no fi fi LIBS="$LIBS_save" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for opcodes usability" >&5 $as_echo_n "checking for opcodes usability... " >&6; } if test "$found" = "yes"; then $as_echo "#define DISASM_USE_OPCODES 1" >>confdefs.h DISASM_CFLAGS="$OPCODES_CFLAGS" DISASM_LIBS="$OPCODES_LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found" >&5 $as_echo "$found" >&6; } if test "$with_opcodes" != ""; then DISASM_LIBS="$DISASM_LIBS -Wl,-rpath,$with_opcodes/lib" fi enable_disasm=opcodes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found" >&5 $as_echo "$found" >&6; } if test "$enable_disasm" = "opcodes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Required libraries not found. You may have to specify the path to the correct directory. If your system isn't m68k-based, the libraries may be installed in some unusual place (maybe something like /usr/$host/m68k-unknown-linux-gnu). In the meantime, i will use the builtin support. " >&5 $as_echo "$as_me: Required libraries not found. You may have to specify the path to the correct directory. If your system isn't m68k-based, the libraries may be installed in some unusual place (maybe something like /usr/$host/m68k-unknown-linux-gnu). In the meantime, i will use the builtin support. " >&6;} fi enable_disasm=auto fi fi if test "$enable_disasm" = auto -o "$enable_disasm" = builtin; then $as_echo "#define DISASM_USE_BUILTIN 1" >>confdefs.h enable_disasm=builtin fi if test "$enable_disasm" = "builtin"; then DISASM_USE_BUILTIN_TRUE= DISASM_USE_BUILTIN_FALSE='#' else DISASM_USE_BUILTIN_TRUE='#' DISASM_USE_BUILTIN_FALSE= fi if test "$enable_disasm" = "opcodes"; then DISASM_USE_OPCODES_TRUE= DISASM_USE_OPCODES_FALSE='#' else DISASM_USE_OPCODES_TRUE='#' DISASM_USE_OPCODES_FALSE= fi if [ "x$WANT_SPCFLAGS_EXCL" = "xyes" ]; then DEFINES="$DEFINES -DENABLE_EXCLUSIVE_SPCFLAGS" fi CPUSRCS="$CPUSRCS $JITSRCS" GENCPUSRCS="$GENCPUSRCS cpudefs.cpp cpustbl.cpp cpufunctbl.cpp $GENJITSRCS" if [ "x$GCC" = "xyes" ]; then if test "$ac_test_CFLAGS" != set; then CFLAGS=`echo $CFLAGS | sed -e 's/-g\b//g'` fi if test "$ac_test_CXXFLAGS" != set; then CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-g\b//g'` fi fi if [ "x$WANT_NATDEBUG" = "xyes" ]; then DBGSP="-g" WFLAGS="" if [ "x$GCC" = "xyes" ]; then WFLAGS="$WFLAGS -W -Wall -Wundef" fi else DBGSP="" WFLAGS="" fi if [ "x$WANT_FULLDEBUG" = "xyes" ]; then CFLAGS="$CFLAGS -DWHOLEDEBUG" CXXFLAGS="$CXXFLAGS -DWHOLEDEBUG" fi if [ "x$GCC" = "xyes" ]; then if test "$ac_test_CFLAGS" != set; then CFLAGS=`echo $CFLAGS | sed -e 's/-O2//g'` CFLAGS="-O3 $CFLAGS" fi if test "$ac_test_CXXFLAGS" != set; then CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-O2//g'` CXXFLAGS="-O3 $CXXFLAGS" fi fi if [ "x$HAVE_OFAST" = "xyes" ]; then CFLAGS="`echo $CFLAGS | sed -e 's/-g//g'` -Ofast" CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-g//g'` -Ofast" CXXFLAGS="-LANG:std $CXXFLAGS" LDFLAGS="$LDFLAGS -ipa" fi # Check whether --enable-sdl2 was given. if test "${enable_sdl2+set}" = set; then : enableval=$enable_sdl2; else enable_sdl2=auto fi SDL_CFLAGS= SDL_LIBS= no_sdl=yes no_sdl2=yes if test "$OS_TYPE" == darwin -a "$WITH_FINK" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports framework SDL" >&5 $as_echo_n "checking whether compiler supports framework SDL... " >&6; } if ${aranym_cv_have_framework_SDL+:} false; then : $as_echo_n "(cached) " >&6 else saved_LIBS="$LIBS" LIBS="$LIBS -framework SDL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : aranym_cv_have_framework_SDL=yes; SDL_LIBS=" -framework SDL" else aranym_cv_have_framework_SDL=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$saved_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_have_framework_SDL" >&5 $as_echo "$aranym_cv_have_framework_SDL" >&6; } if test $aranym_cv_have_framework_SDL = yes; then : $as_echo "#define HAVE_FRAMEWORK_SDL 1" >>confdefs.h fi have_framework_SDL=$aranym_cv_have_framework_SDL if test "$have_framework_SDL" = yes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking location of SDL framework" >&5 $as_echo_n "checking location of SDL framework... " >&6; } if ${aranym_cv_SDL_location+:} false; then : $as_echo_n "(cached) " >&6 else aranym_cv_SDL_location="" echo "#error dummy" > conftest.c pos_locations=`$CC -v conftest.c -framework SDL 2>&1 | grep -e "> search" -A 999 | grep -e "End of " -B 999 | grep -e "^ "` rm -f conftest.c for pos_location in $FRAMEWORK_SEARCH_PATHS $pos_locations ; do pos_location="`echo $pos_location | sed 's/^"//' | sed 's/"$//'`" framework_loc="$pos_location/SDL.framework" if test -d "$framework_loc" ; then aranym_cv_SDL_location="$framework_loc" break; fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_SDL_location" >&5 $as_echo "$aranym_cv_SDL_location" >&6; } if test -z $aranym_cv_SDL_location ; then as_fn_error $? "SDL framework not found" "$LINENO" 5 fi SDL_LOCATION=$aranym_cv_SDL_location sdl_version="`defaults read $SDL_LOCATION/Resources/Info.plist CFBundleShortVersionString`" # SDL 1.2.15 has still 1.2.14 in the Info.plist file if test "$sdl_version" = "1.2.14"; then if test `defaults read $SDL_LOCATION/Resources/Info.plist BuildMachineOSBuild` = "12F2518"; then sdl_version=1.2.15 fi fi no_sdl=no fi if test "$enable_sdl2" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports framework SDL2" >&5 $as_echo_n "checking whether compiler supports framework SDL2... " >&6; } if ${aranym_cv_have_framework_SDL2+:} false; then : $as_echo_n "(cached) " >&6 else saved_LIBS="$LIBS" LIBS="$LIBS -framework SDL2" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : aranym_cv_have_framework_SDL2=yes; SDL2_LIBS=" -framework SDL2" else aranym_cv_have_framework_SDL2=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$saved_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_have_framework_SDL2" >&5 $as_echo "$aranym_cv_have_framework_SDL2" >&6; } if test $aranym_cv_have_framework_SDL2 = yes; then : $as_echo "#define HAVE_FRAMEWORK_SDL2 1" >>confdefs.h fi have_framework_SDL2=$aranym_cv_have_framework_SDL2 if test "$have_framework_SDL2" = yes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking location of SDL2 framework" >&5 $as_echo_n "checking location of SDL2 framework... " >&6; } if ${aranym_cv_SDL2_location+:} false; then : $as_echo_n "(cached) " >&6 else aranym_cv_SDL2_location="" echo "#error dummy" > conftest.c pos_locations=`$CC -v conftest.c -framework SDL2 2>&1 | grep -e "> search" -A 999 | grep -e "End of " -B 999 | grep -e "^ "` rm -f conftest.c for pos_location in $FRAMEWORK_SEARCH_PATHS $pos_locations ; do pos_location="`echo $pos_location | sed 's/^"//' | sed 's/"$//'`" framework_loc="$pos_location/SDL2.framework" if test -d "$framework_loc" ; then aranym_cv_SDL2_location="$framework_loc" break; fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_SDL2_location" >&5 $as_echo "$aranym_cv_SDL2_location" >&6; } if test -z $aranym_cv_SDL2_location ; then as_fn_error $? "SDL2 framework not found" "$LINENO" 5 fi SDL2_LOCATION=$aranym_cv_SDL2_location sdl2_version="`defaults read $SDL2_LOCATION/Resources/Info.plist CFBundleShortVersionString`" no_sdl2=no fi fi else # Check whether --with-sdl-prefix was given. if test "${with_sdl_prefix+set}" = set; then : withval=$with_sdl_prefix; sdl_prefix="$withval" else sdl_prefix="" fi # Check whether --with-sdl-exec-prefix was given. if test "${with_sdl_exec_prefix+set}" = set; then : withval=$with_sdl_exec_prefix; sdl_exec_prefix="$withval" else sdl_exec_prefix="" fi # Check whether --enable-sdltest was given. if test "${enable_sdltest+set}" = set; then : enableval=$enable_sdltest; else enable_sdltest=yes fi as_save_PATH="$PATH" if test "x$prefix" != xNONE; then PATH="$prefix/bin:$prefix/usr/bin:$PATH" fi # # provide some defaults on cygwin, # where we use the MinGW version of the SDL library, # to simplify standard configuration. # But only if the user did not override it. # case $host in *-*-cygwin*) MINGW_ROOT=$prefix/i686-w64-mingw32/sys-root/mingw if test -d "$MINGW_ROOT"; then if test "$sdl_prefix" = "" ; then sdl_prefix="$MINGW_ROOT" sdl_exec_prefix="$MINGW_ROOT/bin" fi fi ;; esac if test x$sdl_exec_prefix != x ; then sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix" PATH="$sdl_exec_prefix:$PATH" fi if test x$sdl_prefix != x ; then sdl_config_args="$sdl_config_args --prefix=$sdl_prefix" PATH="$sdl_prefix/bin:$PATH" fi if test x${SDL_CONFIG+set} != xset ; then # Extract the first word of "sdl-config", so it can be a program name with args. set dummy sdl-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_SDL_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $SDL_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SDL_CONFIG" && ac_cv_path_SDL_CONFIG="no" ;; esac fi SDL_CONFIG=$ac_cv_path_SDL_CONFIG if test -n "$SDL_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SDL_CONFIG" >&5 $as_echo "$SDL_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else test -f "$SDL_CONFIG" || SDL_CONFIG=no fi PATH="$as_save_PATH" min_sdl_version=1.2.12 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL - version >= $min_sdl_version" >&5 $as_echo_n "checking for SDL - version >= $min_sdl_version... " >&6; } no_sdl="" if test "$SDL_CONFIG" = "no" ; then no_sdl=yes else SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags` SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs` case $host in *-*-cygwin*) # switches that must be removed for the mixed cygwin/MinGW32 platform # also replaces -L... -lSDL by the absolute pathname of the library, # because the -L points to mingw libraries instead of cygwin libraries nosdlswitch='s/-Dmain=SDL_main//; s=-I/usr/include.*/SDL='-I${includedir}/SDL'=; s=-I/mingw/include.*/SDL='-I${includedir}/SDL'=; s/-DWIN32//; s/-Uunix//; s/-mno-cygwin//; s/-lmingw32//; s/-lSDLmain//; s/-mwindows//; s/-mms-bitfields//; s=-L\([^ ]*\).*-l\(SDL[^ ]*\)=\1/lib\2.dll.a=; ' SDL_CFLAGS=`echo $SDL_CFLAGS | sed -e "$nosdlswitch"` SDL_LIBS=`echo $SDL_LIBS | sed -e "$nosdlswitch"` enable_sdltest=no ;; *-*-mingw*) # switches that must be removed because we dont link SDLmain nosdlswitch='s/-Dmain=SDL_main//; s=-I/usr/include.*/SDL='-I${includedir}/SDL'=; s=-I/mingw/include.*/SDL='-I${includedir}/SDL'=; s/-DWIN32//; s/-Uunix//; s/-lmingw32//; s/-lSDLmain//; s/-mwindows//; ' SDL_CFLAGS=`echo $SDL_CFLAGS | sed -e "$nosdlswitch"` SDL_LIBS=`echo $SDL_LIBS | sed -e "$nosdlswitch"` enable_sdltest=no ;; esac # remove -L/usr/lib{32,64} from SDL_LIBS; this is # a default search directory anyways, # and will cause trouble when compiling in 32-bit mode # on 64-bit machines SDL_LIBS=`echo $SDL_LIBS | sed -e 's,-L/usr/lib[2346]* ,,'` sdl_version=`$SDL_CONFIG $sdl_config_args --version` sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL_CFLAGS" eval CFLAGS=\"$CFLAGS\" eval CFLAGS=\"$CFLAGS\" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" eval CXXFLAGS=\"$CXXFLAGS\" eval CXXFLAGS=\"$CXXFLAGS\" LIBS="$LIBS $SDL_LIBS" rm -f conf.sdltest if test "$cross_compiling" = yes; then : echo $ac_n "cross compiling; assumed OK... $ac_c" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); printf("*** to point to the correct copy of sdl-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else no_sdl=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$SDL_CONFIG" = "no" ; then echo "*** The sdl-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL_CONFIG environment variable to the" echo "*** full path to sdl-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CFLAGS="" SDL_LIBS="" : fi rm -f conf.sdltest if test "$enable_sdl2" != no; then # Check whether --with-sdl2-prefix was given. if test "${with_sdl2_prefix+set}" = set; then : withval=$with_sdl2_prefix; sdl2_prefix="$withval" else sdl2_prefix="" fi # Check whether --with-sdl2-exec-prefix was given. if test "${with_sdl2_exec_prefix+set}" = set; then : withval=$with_sdl2_exec_prefix; sdl2_exec_prefix="$withval" else sdl2_exec_prefix="" fi # Check whether --enable-sdltest was given. if test "${enable_sdltest+set}" = set; then : enableval=$enable_sdltest; else enable_sdltest=yes fi min_sdl2_version=2.0.3 if test "x$sdl2_prefix$sdl2_exec_prefix" = x ; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL2" >&5 $as_echo_n "checking for SDL2... " >&6; } if test -n "$SDL2_CFLAGS"; then pkg_cv_SDL2_CFLAGS="$SDL2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl2 >= \$min_sdl2_version\""; } >&5 ($PKG_CONFIG --exists --print-errors "sdl2 >= $min_sdl2_version") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SDL2_CFLAGS=`$PKG_CONFIG --cflags "sdl2 >= $min_sdl2_version" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$SDL2_LIBS"; then pkg_cv_SDL2_LIBS="$SDL2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl2 >= \$min_sdl2_version\""; } >&5 ($PKG_CONFIG --exists --print-errors "sdl2 >= $min_sdl2_version") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SDL2_LIBS=`$PKG_CONFIG --libs "sdl2 >= $min_sdl2_version" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then SDL2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "sdl2 >= $min_sdl2_version" 2>&1` else SDL2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "sdl2 >= $min_sdl2_version" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$SDL2_PKG_ERRORS" >&5 sdl2_pc=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } sdl2_pc=no else SDL2_CFLAGS=$pkg_cv_SDL2_CFLAGS SDL2_LIBS=$pkg_cv_SDL2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } sdl2_pc=yes fi if test "x$sdl2_pc" = xyes ; then # # sdl2.pc fails to add -I{includedir}/directfb to cflags if SDL2 was # configured with --enable-directfb; we may have to add it ourselves # case `$PKG_CONFIG --libs --static sdl2` in *-ldirectfb*) SDL2_CFLAGS="$SDL2_CFLAGS -I`$PKG_CONFIG --variable=includedir sdl2`/directfb" ;; esac fi else sdl2_pc=no fi if test "x$sdl2_pc" = xyes ; then no_sdl2="" SDL2_CONFIG="$PKG_CONFIG sdl2" sdl2_version=`$PKG_CONFIG --modversion sdl2` else as_save_PATH="$PATH" if test "x$prefix" != xNONE && test "$cross_compiling" != yes; then PATH="$prefix/bin:$prefix/usr/bin:$PATH" fi # # provide some defaults on cygwin, # where we use the MinGW version of the SDL library, # to simplify standard configuration. # But only if the user did not override it. # case $host in *-*-cygwin*) MINGW_ROOT=$prefix/i686-w64-mingw32/sys-root/mingw if test -d "$MINGW_ROOT"; then if test "$sdl2_prefix" = "" ; then sdl2_prefix="$MINGW_ROOT" sdl2_exec_prefix="$MINGW_ROOT/bin" fi fi ;; esac if test x$sdl2_exec_prefix != x ; then sdl2_config_args="$sdl2_config_args --exec-prefix=$sdl2_exec_prefix" PATH="$sdl2_exec_prefix:$PATH" fi if test x$sdl2_prefix != x ; then sdl2_config_args="$sdl2_config_args --prefix=$sdl2_prefix" PATH="$sdl2_prefix/bin:$PATH" fi if test x${SDL2_CONFIG+set} != xset ; then # Extract the first word of "sdl2-config", so it can be a program name with args. set dummy sdl2-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_SDL2_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $SDL2_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_SDL2_CONFIG="$SDL2_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_SDL2_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SDL2_CONFIG" && ac_cv_path_SDL2_CONFIG="no" ;; esac fi SDL2_CONFIG=$ac_cv_path_SDL2_CONFIG if test -n "$SDL2_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SDL2_CONFIG" >&5 $as_echo "$SDL2_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else test -f "$SDL2_CONFIG" || SDL2_CONFIG=no fi PATH="$as_save_PATH" no_sdl2="" if test "$SDL2_CONFIG" = "no" ; then no_sdl2=yes else SDL2_CFLAGS=`$SDL2_CONFIG $sdl2_config_args --cflags` SDL2_LIBS=`$SDL2_CONFIG $sdl2_config_args --libs` sdl2_version=`$SDL2_CONFIG $sdl2_config_args --version` # # sdl2-config fails to add -I{includedir}/directfb to cflags if SDL2 was # configured with --enable-directfb; we may have to add it ourselves # case `$SDL2_CONFIG $sdl2_config_args --static-libs` in *-ldirectfb*) SDL2_CFLAGS="$SDL2_CFLAGS -I`$SDL2_CONFIG $sdl2_config_args --prefix`/include/directfb" ;; esac fi fi case $host in *-*-cygwin*) # switches that must be removed for the mixed cygwin/MinGW32 platform # also replaces -L... -lSDL by the absolute pathname of the library, # because the -L points to mingw libraries instead of cygwin libraries nosdlswitch='s/-Dmain=SDL_main//; s=-I/usr/include.*/SDL='-I${includedir}/SDL'=; s=-I/mingw/include.*/SDL='-I${includedir}/SDL'=; s/-DWIN32//; s/-Uunix//; s/-mno-cygwin//; s/-lmingw32//; s/-lSDL2main//; s/-mwindows//; s/-mms-bitfields//; s=-L\([^ ]*\).*-l\(SDL[^ ]*\)=\1/lib\2.dll.a=; ' SDL2_CFLAGS=`echo $SDL2_CFLAGS | sed -e "$nosdlswitch"` SDL2_LIBS=`echo $SDL2_LIBS | sed -e "$nosdlswitch"` enable_sdltest=no ;; *-*-mingw*) # switches that must be removed because we dont link SDLmain nosdlswitch='s/-Dmain=SDL_main//; s=-I/usr/include.*/SDL='-I${includedir}/SDL'=; s=-I/mingw/include.*/SDL='-I${includedir}/SDL'=; s/-DWIN32//; s/-Uunix//; s/-lmingw32//; s/-lSDL2main//; s/-mwindows//; ' SDL2_CFLAGS=`echo $SDL2_CFLAGS | sed -e "$nosdlswitch"` SDL2_LIBS=`echo $SDL2_LIBS | sed -e "$nosdlswitch"` enable_sdltest=no ;; esac # remove -L/usr/lib{32,64} from SDL_LIBS; this is # a default search directory anyways, # and will cause trouble when compiling in 32-bit mode # on 64-bit machines SDL2_LIBS=`echo $SDL2_LIBS | sed -e 's,-L/usr/lib[2346]* ,,'` if test "$no_sdl2" != yes ; then if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL2_CFLAGS" eval CFLAGS=\"$CFLAGS\" eval CFLAGS=\"$CFLAGS\" CXXFLAGS="$CXXFLAGS $SDL2_CFLAGS" eval CXXFLAGS=\"$CXXFLAGS\" eval CXXFLAGS=\"$CXXFLAGS\" LIBS="$LIBS $SDL2_LIBS" sdl2_major_version=`echo $sdl2_version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` sdl2_minor_version=`echo $sdl2_version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` sdl2_micro_version=`echo $sdl2_version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` rm -f conf.sdltest if test "$cross_compiling" = yes; then : echo $ac_n "cross compiling; assumed OK... $ac_c" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl2_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl2_version"); exit(1); } if (($sdl2_major_version > major) || (($sdl2_major_version == major) && ($sdl2_minor_version > minor)) || (($sdl2_major_version == major) && ($sdl2_minor_version == minor) && ($sdl2_micro_version >= micro))) { return 0; } else { printf("\n*** 'sdl2-config --version' returned %d.%d.%d, but the minimum version\n", $sdl2_major_version, $sdl2_minor_version, $sdl2_micro_version); printf("*** of SDL required is %d.%d.%d. If sdl2-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl2-config was wrong, set the environment variable SDL2_CONFIG\n"); printf("*** to point to the correct copy of sdl2-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else no_sdl2=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL2 - version >= $min_sdl2_version" >&5 $as_echo_n "checking for SDL2 - version >= $min_sdl2_version... " >&6; } if test "x$no_sdl2" = x ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$no_sdl2" = x ; then : else if test "$SDL2_CONFIG" = "no" ; then echo "*** The sdl2-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL2_CONFIG environment variable to the" echo "*** full path to sdl2-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL2 test program, checking why..." CFLAGS="$CFLAGS $SDL2_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL2_CFLAGS" LIBS="$LIBS $SDL2_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl2-config script: $SDL2_CONFIG" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi SDL2_CFLAGS="" SDL2_LIBS="" : fi rm -f conf.sdltest fi fi if test "$no_sdl" = yes -a "$no_sdl2" = yes; then as_fn_error $? "*** neither SDL nor SDL2 found! ***" "$LINENO" 5 else case "$host" in #( arm*-*-linux*) : on_rpi=`awk -v r=0 '/^Hardware[ \t]+:[ \t]+BCM2708/ { ++r;} /^Serial[ \t]+:/ { ++r; } END { print ((r > 1) ? "yes" : "no");}' /proc/cpuinfo` ;; #( *) : on_rpi="no" ;; esac if test "$on_rpi" = yes; then $as_echo "#define USE_FIXED_CONSOLE_FBVIDEOMODE 1" >>confdefs.h fi fi if test "$no_sdl2" = yes -a "$enable_sdl2" = yes; then as_fn_error $? "*** SDL2 was requested, but was not found ***" "$LINENO" 5 fi if test "$no_sdl2" != yes -a "$enable_sdl2" != no; then enable_sdl2=yes fi if test "$have_framework_SDL" = yes -o "$have_framework_SDL2" = yes; then if test "$enable_sdl2" = yes; then SDL_CFLAGS="-I$SDL2_LOCATION/Headers" BUNDLE_FRAMEWORKS="$BUNDLE_FRAMEWORKS $SDL2_LOCATION" SDL_LIBS="$SDL2_LIBS" sdl_version="$sdl2_version" else SDL_CFLAGS="-I$SDL_LOCATION/Headers" BUNDLE_FRAMEWORKS="$BUNDLE_FRAMEWORKS $SDL_LOCATION" fi else if test "$enable_sdl2" = yes; then SDL_CFLAGS="$SDL2_CFLAGS" SDL_LIBS="$SDL2_LIBS" sdl_version="$sdl2_version" fi fi if test "$enable_sdl2" = yes; then ENABLE_SDL2_TRUE= ENABLE_SDL2_FALSE='#' else ENABLE_SDL2_TRUE='#' ENABLE_SDL2_FALSE= fi # # SDL2 on macOS needs 10.6 or above if test "$enable_sdl2" = yes -a "$OS_TYPE" == darwin; then export MACOSX_DEPLOYMENT_TARGET=10.6 fi have_jpeglib_h=no have_jpeglib_lib=no for ac_header in jpeglib.h do : ac_fn_c_check_header_mongrel "$LINENO" "jpeglib.h" "ac_cv_header_jpeglib_h" "$ac_includes_default" if test "x$ac_cv_header_jpeglib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_JPEGLIB_H 1 _ACEOF have_jpeglib_h=yes fi done if test "$have_jpeglib_h" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeg_CreateDecompress in -ljpeg" >&5 $as_echo_n "checking for jpeg_CreateDecompress in -ljpeg... " >&6; } if ${ac_cv_lib_jpeg_jpeg_CreateDecompress+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ljpeg $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char jpeg_CreateDecompress (); int main () { return jpeg_CreateDecompress (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_jpeg_jpeg_CreateDecompress=yes else ac_cv_lib_jpeg_jpeg_CreateDecompress=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_jpeg_CreateDecompress" >&5 $as_echo "$ac_cv_lib_jpeg_jpeg_CreateDecompress" >&6; } if test "x$ac_cv_lib_jpeg_jpeg_CreateDecompress" = xyes; then : have_jpeglib_lib=yes fi fi if test "$have_jpeglib_h" = yes -a "$have_jpeglib_lib" = yes; then $as_echo "#define HAVE_JPEGLIB 1" >>confdefs.h JPEG_LIBS="-ljpeg" fi if test "$have_jpeglib_lib" = no; then if test "$enable_sdl2" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports framework SDL2_image" >&5 $as_echo_n "checking whether compiler supports framework SDL2_image... " >&6; } if ${aranym_cv_have_framework_SDL2_image+:} false; then : $as_echo_n "(cached) " >&6 else saved_LIBS="$LIBS" LIBS="$LIBS -framework SDL2_image" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : aranym_cv_have_framework_SDL2_image=yes; SDL2_image_LIBS=" -framework SDL2_image" else aranym_cv_have_framework_SDL2_image=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$saved_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_have_framework_SDL2_image" >&5 $as_echo "$aranym_cv_have_framework_SDL2_image" >&6; } if test $aranym_cv_have_framework_SDL2_image = yes; then : $as_echo "#define HAVE_FRAMEWORK_SDL2_IMAGE 1" >>confdefs.h fi have_framework_SDL2_image=$aranym_cv_have_framework_SDL2_image else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports framework SDL_image" >&5 $as_echo_n "checking whether compiler supports framework SDL_image... " >&6; } if ${aranym_cv_have_framework_SDL_image+:} false; then : $as_echo_n "(cached) " >&6 else saved_LIBS="$LIBS" LIBS="$LIBS -framework SDL_image" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : aranym_cv_have_framework_SDL_image=yes; SDL_image_LIBS=" -framework SDL_image" else aranym_cv_have_framework_SDL_image=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$saved_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_have_framework_SDL_image" >&5 $as_echo "$aranym_cv_have_framework_SDL_image" >&6; } if test $aranym_cv_have_framework_SDL_image = yes; then : $as_echo "#define HAVE_FRAMEWORK_SDL_IMAGE 1" >>confdefs.h fi have_framework_SDL_image=$aranym_cv_have_framework_SDL_image fi if test "$have_framework_SDL2_image" = yes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking location of SDL2_image framework" >&5 $as_echo_n "checking location of SDL2_image framework... " >&6; } if ${aranym_cv_SDL2_image_location+:} false; then : $as_echo_n "(cached) " >&6 else aranym_cv_SDL2_image_location="" echo "#error dummy" > conftest.c pos_locations=`$CC -v conftest.c -framework SDL2_image 2>&1 | grep -e "> search" -A 999 | grep -e "End of " -B 999 | grep -e "^ "` rm -f conftest.c for pos_location in $FRAMEWORK_SEARCH_PATHS $pos_locations ; do pos_location="`echo $pos_location | sed 's/^"//' | sed 's/"$//'`" framework_loc="$pos_location/SDL2_image.framework" if test -d "$framework_loc" ; then aranym_cv_SDL2_image_location="$framework_loc" break; fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_SDL2_image_location" >&5 $as_echo "$aranym_cv_SDL2_image_location" >&6; } if test -z $aranym_cv_SDL2_image_location ; then as_fn_error $? "SDL2_image framework not found" "$LINENO" 5 fi SDL2_image_LOCATION=$aranym_cv_SDL2_image_location SDL_CFLAGS="$SDL_CFLAGS -I$SDL2_image_LOCATION/Headers" BUNDLE_FRAMEWORKS="$BUNDLE_FRAMEWORKS $SDL2_image_LOCATION" have_sdlimage_lib=yes have_sdlimage_h=yes elif test "$have_framework_SDL_image" = yes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking location of SDL_image framework" >&5 $as_echo_n "checking location of SDL_image framework... " >&6; } if ${aranym_cv_SDL_image_location+:} false; then : $as_echo_n "(cached) " >&6 else aranym_cv_SDL_image_location="" echo "#error dummy" > conftest.c pos_locations=`$CC -v conftest.c -framework SDL_image 2>&1 | grep -e "> search" -A 999 | grep -e "End of " -B 999 | grep -e "^ "` rm -f conftest.c for pos_location in $FRAMEWORK_SEARCH_PATHS $pos_locations ; do pos_location="`echo $pos_location | sed 's/^"//' | sed 's/"$//'`" framework_loc="$pos_location/SDL_image.framework" if test -d "$framework_loc" ; then aranym_cv_SDL_image_location="$framework_loc" break; fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_SDL_image_location" >&5 $as_echo "$aranym_cv_SDL_image_location" >&6; } if test -z $aranym_cv_SDL_image_location ; then as_fn_error $? "SDL_image framework not found" "$LINENO" 5 fi SDL_image_LOCATION=$aranym_cv_SDL_image_location CPPFLAGS="$CPPFLAGS -I$SDL_image_LOCATION/Headers" BUNDLE_FRAMEWORKS="$BUNDLE_FRAMEWORKS $SDL_image_LOCATION" have_sdlimage_lib=yes have_sdlimage_h=yes else tmp_cflags="$CFLAGS" tmp_cppflags="$CPPFLAGS" tmp_ldflags="$LDFLAGS" CFLAGS="$CFLAGS $SDL_CFLAGS" CPPFLAGS="$CPPFLAGS $SDL_CFLAGS" LDFLAGS="$LDFLAGS $SDL_LIBS" case "$host" in # the mixed environment on cygwin usually # causes link tests against SDL fail here, # just assume it is present *-*-cygwin*) have_sdlimage_lib=yes have_sdlimage_h=yes if test "$enable_sdl2" = yes; then SDL_LIBS="$SDL_LIBS `echo $SDL_LIBS | sed -e 's/SDL2.dll/SDL2_image.dll/'`" else SDL_LIBS="$SDL_LIBS `echo $SDL_LIBS | sed -e 's/SDL.dll/SDL_image.dll/'`" fi ;; *-*-mingw*) have_sdlimage_lib=yes have_sdlimage_h=yes if test "$enable_sdl2" = yes; then SDL_LIBS="$SDL_LIBS -lSDL2_image" else SDL_LIBS="$SDL_LIBS -lSDL_image" fi ;; *) ac_fn_c_check_header_mongrel "$LINENO" "SDL_image.h" "ac_cv_header_SDL_image_h" "$ac_includes_default" if test "x$ac_cv_header_SDL_image_h" = xyes; then : have_sdlimage_h=yes else havesdlimage_h=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IMG_isJPG in -lSDL_image" >&5 $as_echo_n "checking for IMG_isJPG in -lSDL_image... " >&6; } if ${ac_cv_lib_SDL_image_IMG_isJPG+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lSDL_image $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IMG_isJPG (); int main () { return IMG_isJPG (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_SDL_image_IMG_isJPG=yes else ac_cv_lib_SDL_image_IMG_isJPG=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_SDL_image_IMG_isJPG" >&5 $as_echo "$ac_cv_lib_SDL_image_IMG_isJPG" >&6; } if test "x$ac_cv_lib_SDL_image_IMG_isJPG" = xyes; then : have_sdlimage_lib=yes else have_sdlimage_lib=no fi if test "$have_sdlimage_h" = yes -a "$have_sdlimage_lib" = yes; then if test "$enable_sdl2" = yes; then SDL_LIBS="$SDL_LIBS -lSDL2_image" else SDL_LIBS="$SDL_LIBS -lSDL_image" fi fi ;; esac CFLAGS="$tmp_cflags" CPPFLAGS="$tmp_cppflags" LDFLAGS="$tmp_ldflags" fi if test "$have_sdlimage_h" = yes -a "$have_sdlimage_lib" = yes; then $as_echo "#define HAVE_SDL_IMAGE 1" >>confdefs.h fi fi if test "x$WANT_OPENGL" = "xyes"; then have_opengl="no" if test "x$PKG_CONFIG" != "x"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GL" >&5 $as_echo_n "checking for GL... " >&6; } if test -n "$GL_CFLAGS"; then pkg_cv_GL_CFLAGS="$GL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gl\""; } >&5 ($PKG_CONFIG --exists --print-errors "gl") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GL_CFLAGS=`$PKG_CONFIG --cflags "gl" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GL_LIBS"; then pkg_cv_GL_LIBS="$GL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gl\""; } >&5 ($PKG_CONFIG --exists --print-errors "gl") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GL_LIBS=`$PKG_CONFIG --libs "gl" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gl" 2>&1` else GL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gl" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GL_PKG_ERRORS" >&5 have_opengl="no" elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_opengl="no" else GL_CFLAGS=$pkg_cv_GL_CFLAGS GL_LIBS=$pkg_cv_GL_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_opengl="yes" fi fi if test "x$GL_LIBS" = "x"; then case "$host" in *-*-cygwin* | *-*-mingw*) GL_LIBS="-lopengl32" ;; *-*-darwin*) GL_LIBS="-Wl,-framework,OpenGL" ;; *) GL_LIBS="-lGL" ;; esac fi case "$host" in # the mixed environment on cygwin usually # causes link tests against SDL fail here, # just assume it is present *-*-cygwin* | *-*-mingw*) have_opengl=yes ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenGL support" >&5 $as_echo_n "checking for OpenGL support... " >&6; } tmp_cflags="$CFLAGS" tmp_libs="$LIBS" if test "$have_opengl" = no; then CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS $GL_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "SDL_opengl.h" int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : have_opengl="yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_opengl" >&5 $as_echo "$have_opengl" >&6; } CFLAGS="$tmp_cflags" LIBS="$tmp_libs" if test "x$have_opengl" = "xyes"; then $as_echo "#define ENABLE_OPENGL 1" >>confdefs.h else WANT_OPENGL="no" fi fi if test "$WANT_OPENGL" = yes; then ENABLE_OPENGL_TRUE= ENABLE_OPENGL_FALSE='#' else ENABLE_OPENGL_TRUE='#' ENABLE_OPENGL_FALSE= fi if [ "x$WANT_LILO" = "xyes" ]; then have_zlib=no # Search using pkg-config if test "x$PKG_CONFIG" != "x"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZLIB" >&5 $as_echo_n "checking for ZLIB... " >&6; } if test -n "$ZLIB_CFLAGS"; then pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib\""; } >&5 ($PKG_CONFIG --exists --print-errors "zlib") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$ZLIB_LIBS"; then pkg_cv_ZLIB_LIBS="$ZLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib\""; } >&5 ($PKG_CONFIG --exists --print-errors "zlib") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then ZLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "zlib" 2>&1` else ZLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "zlib" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$ZLIB_PKG_ERRORS" >&5 have_zlib=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_zlib=no else ZLIB_CFLAGS=$pkg_cv_ZLIB_CFLAGS ZLIB_LIBS=$pkg_cv_ZLIB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_zlib=yes fi fi # Fallback to autoconf (helps in Ubuntu 10.04 LTS) if test "$have_zlib" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzopen in -lz" >&5 $as_echo_n "checking for gzopen in -lz... " >&6; } if ${ac_cv_lib_z_gzopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gzopen (); int main () { return gzopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_gzopen=yes else ac_cv_lib_z_gzopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzopen" >&5 $as_echo "$ac_cv_lib_z_gzopen" >&6; } if test "x$ac_cv_lib_z_gzopen" = xyes; then : have_zlib=yes else have_zlib=no fi fi if test "$have_zlib" = "yes"; then $as_echo "#define HAVE_LIBZ 1" >>confdefs.h fi else have_zlib="not required" fi WITH_USBHOST="no" if test "x$WANT_USBHOST" = "xyes"; then # Search using pkg-config if test "x$PKG_CONFIG" != "x"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBUSB" >&5 $as_echo_n "checking for LIBUSB... " >&6; } if test -n "$LIBUSB_CFLAGS"; then pkg_cv_LIBUSB_CFLAGS="$LIBUSB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libusb-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libusb-1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBUSB_CFLAGS=`$PKG_CONFIG --cflags "libusb-1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBUSB_LIBS"; then pkg_cv_LIBUSB_LIBS="$LIBUSB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libusb-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libusb-1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBUSB_LIBS=`$PKG_CONFIG --libs "libusb-1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBUSB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libusb-1.0" 2>&1` else LIBUSB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libusb-1.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBUSB_PKG_ERRORS" >&5 WITH_USBHOST="no" elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } WITH_USBHOST="no" else LIBUSB_CFLAGS=$pkg_cv_LIBUSB_CFLAGS LIBUSB_LIBS=$pkg_cv_LIBUSB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } WITH_USBHOST="yes" fi fi # Search the library and headers directly if test "x$WITH_USBHOST" = "xno"; then ac_fn_c_check_header_mongrel "$LINENO" "libusb-1.0/libusb.h" "ac_cv_header_libusb_1_0_libusb_h" "$ac_includes_default" if test "x$ac_cv_header_libusb_1_0_libusb_h" = xyes; then : WITH_USBHOST="yes" else WITH_USBHOST="no" fi if test "x$WITH_USBHOST" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libusb_init in -lusb-1.0" >&5 $as_echo_n "checking for libusb_init in -lusb-1.0... " >&6; } if ${ac_cv_lib_usb_1_0_libusb_init+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lusb-1.0 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char libusb_init (); int main () { return libusb_init (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_usb_1_0_libusb_init=yes else ac_cv_lib_usb_1_0_libusb_init=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_usb_1_0_libusb_init" >&5 $as_echo "$ac_cv_lib_usb_1_0_libusb_init" >&6; } if test "x$ac_cv_lib_usb_1_0_libusb_init" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBUSB_1_0 1 _ACEOF LIBS="-lusb-1.0 $LIBS" else WITH_USBHOST="no" fi LIBUSB_LIBS="-lusb-1.0" fi fi if test "x$WITH_USBHOST" = "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libusb is missing, USB NF disabled" >&5 $as_echo "$as_me: WARNING: libusb is missing, USB NF disabled" >&2;} fi fi if [ "x$WANT_LILO" = "xyes" ]; then if [ "x$WANT_MMU" = "xyes" ]; then $as_echo "#define ENABLE_LILO 1" >>confdefs.h else as_fn_error $? "Linux kernel requires functional MMU emulation" "$LINENO" 5 fi fi NFCDROM_DRIVER="" case "$host_os" in linux*) if [ "$ANDROID_OS" != "yes" ]; then $as_echo "#define NFCDROM_LINUX_SUPPORT 1" >>confdefs.h NFCDROM_DRIVER="linux" fi ;; mingw*|cygwin*) $as_echo "#define NFCDROM_WIN32_SUPPORT 1" >>confdefs.h NFCDROM_DRIVER="win32" ;; esac if test "$enable_sdl2" != yes; then test "$NFCDROM_DRIVER" != "" && NFCDROM_DRIVER="${NFCDROM_DRIVER}," NFCDROM_DRIVER="${NFCDROM_DRIVER}sdl" fi if test "$NFCDROM_DRIVER" != ""; then $as_echo "#define NFCDROM_SUPPORT 1" >>confdefs.h else NFCDROM_DRIVER=no fi PROVIDES_NF="$PROVIDES_NF cdrom($NFCDROM_DRIVER)" if test "$NFCDROM_DRIVER" != "no"; then NFCDROM_SUPPORT_TRUE= NFCDROM_SUPPORT_FALSE='#' else NFCDROM_SUPPORT_TRUE='#' NFCDROM_SUPPORT_FALSE= fi if [ "x$WANT_NFPCI" = "xyes" ]; then case "$host_os" in linux*) $as_echo "#define NFPCI_SUPPORT 1" >>confdefs.h $as_echo "#define NFPCI_LINUX_SUPPORT 1" >>confdefs.h PROVIDES_NF="$PROVIDES_NF pci" ;; *) as_fn_error $? "*** NatFeats PCI not supported by this OS ***" "$LINENO" 5 WANT_NFPCI="no" ;; esac fi if test "$WANT_NFPCI" = "yes"; then NFPCI_SUPPORT_TRUE= NFPCI_SUPPORT_FALSE='#' else NFPCI_SUPPORT_TRUE='#' NFPCI_SUPPORT_FALSE= fi if test "$WANT_NFPCI" = "yes" -a "$OS_TYPE" = "linux"; then NFPCI_LINUX_SUPPORT_TRUE= NFPCI_LINUX_SUPPORT_FALSE='#' else NFPCI_LINUX_SUPPORT_TRUE='#' NFPCI_LINUX_SUPPORT_FALSE= fi if [ "x$WANT_USBHOST" = "xyes" -a "x$WITH_USBHOST" = "xyes" ]; then $as_echo "#define USBHOST_SUPPORT 1" >>confdefs.h LIBS="$LIBS $LIBUSB_LIBS" PROVIDES_NF="$PROVIDES_NF usb" else WANT_USBHOST=no fi if test "$WANT_USBHOST" = yes; then USBHOST_SUPPORT_TRUE= USBHOST_SUPPORT_FALSE='#' else USBHOST_SUPPORT_TRUE='#' USBHOST_SUPPORT_FALSE= fi if [ "x$WANT_NFSCSI" = "xyes" ]; then case "$host_os" in linux*) for ac_header in scsi/sg.h do : ac_fn_c_check_header_mongrel "$LINENO" "scsi/sg.h" "ac_cv_header_scsi_sg_h" "$ac_includes_default" if test "x$ac_cv_header_scsi_sg_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SCSI_SG_H 1 _ACEOF fi done if test "$ac_cv_header_scsi_sg_h" != yes; then WANT_NFSCSI=no fi ;; *) WANT_NFSCSI=no ;; esac if test "$WANT_NFSCSI" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** NatFeats SCSI not supported by this OS ***" >&5 $as_echo "$as_me: WARNING: *** NatFeats SCSI not supported by this OS ***" >&2;} else $as_echo "#define NFSCSI_SUPPORT 1" >>confdefs.h PROVIDES_NF="$PROVIDES_NF scsi" fi fi if test "x$WANT_NFOSMESA" = "xyes"; then have_osmesa=no if test "x$PKG_CONFIG" != "x"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OSMESA" >&5 $as_echo_n "checking for OSMESA... " >&6; } if test -n "$OSMESA_CFLAGS"; then pkg_cv_OSMESA_CFLAGS="$OSMESA_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"osmesa\""; } >&5 ($PKG_CONFIG --exists --print-errors "osmesa") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OSMESA_CFLAGS=`$PKG_CONFIG --cflags "osmesa" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$OSMESA_LIBS"; then pkg_cv_OSMESA_LIBS="$OSMESA_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"osmesa\""; } >&5 ($PKG_CONFIG --exists --print-errors "osmesa") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OSMESA_LIBS=`$PKG_CONFIG --libs "osmesa" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then OSMESA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "osmesa" 2>&1` else OSMESA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "osmesa" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$OSMESA_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else OSMESA_CFLAGS=$pkg_cv_OSMESA_CFLAGS OSMESA_LIBS=$pkg_cv_OSMESA_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_osmesa=yes fi fi if test "$have_osmesa" = "no"; then have_osmesa=yes for ac_header in GL/osmesa.h do : ac_fn_c_check_header_mongrel "$LINENO" "GL/osmesa.h" "ac_cv_header_GL_osmesa_h" "$ac_includes_default" if test "x$ac_cv_header_GL_osmesa_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GL_OSMESA_H 1 _ACEOF fi done fi if test "$have_osmesa" = "yes"; then CPPFLAGS="$CPPFLAGS $OSMESA_CFLAGS" $as_echo "#define NFOSMESA_SUPPORT 1" >>confdefs.h else WANT_NFOSMESA="no" fi fi if test "$WANT_NFOSMESA" = yes; then NFOSMESA_SUPPORT_TRUE= NFOSMESA_SUPPORT_FALSE='#' else NFOSMESA_SUPPORT_TRUE='#' NFOSMESA_SUPPORT_FALSE= fi if [ "x$WANT_NFOSMESA" = "xyes" ]; then PROVIDES_NF="$PROVIDES_NF osmesa" fi if [ "x$WANT_NFJPEG" = "xyes" ]; then if test "$have_jpeglib_lib" = "yes"; then $as_echo "#define NFJPEG_SUPPORT 1" >>confdefs.h PROVIDES_NF="$PROVIDES_NF jpeg" elif test "$have_sdlimage_h" = "yes" -a "$have_sdlimage_lib" = "yes"; then $as_echo "#define NFJPEG_SUPPORT 1" >>confdefs.h PROVIDES_NF="$PROVIDES_NF jpeg" else WANT_NFJPEG="no" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no jpeg library found, JPEG NF disabled" >&5 $as_echo "$as_me: WARNING: no jpeg library found, JPEG NF disabled" >&2;} fi fi if test "$WANT_NFJPEG" = yes; then NFJPEG_SUPPORT_TRUE= NFJPEG_SUPPORT_FALSE='#' else NFJPEG_SUPPORT_TRUE='#' NFJPEG_SUPPORT_FALSE= fi if [ "x$WANT_NFVDI" = "xyes" ]; then $as_echo "#define NFVDI_SUPPORT 1" >>confdefs.h NFVDI_DRIVER="sw" if [ "x$WANT_OPENGL" = "xyes" ]; then NFVDI_DRIVER="opengl,$NFVDI_DRIVER" fi PROVIDES_NF="$PROVIDES_NF vdi($NFVDI_DRIVER)" fi if test "$WANT_NFVDI" = "yes"; then NFVDI_SUPPORT_TRUE= NFVDI_SUPPORT_FALSE='#' else NFVDI_SUPPORT_TRUE='#' NFVDI_SUPPORT_FALSE= fi if [ "x$WANT_NFCLIPBRD" = "xyes" ]; then case $OS_TYPE in cygwin | mingw) $as_echo "#define NFCLIPBRD_SUPPORT 1" >>confdefs.h ;; darwin) $as_echo "#define NFCLIPBRD_SUPPORT 1" >>confdefs.h # X-Headers are not always available on macOS tmp_cppflags="$CPPFLAGS" # not nice to hardcode the path here, # but it is also hardcoded in the XCode project CPPFLAGS="$CPPFLAGS -I/usr/X11R6/include" for ac_header in X11/Xlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "X11/Xlib.h" "ac_cv_header_X11_Xlib_h" "$ac_includes_default" if test "x$ac_cv_header_X11_Xlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_X11_XLIB_H 1 _ACEOF fi done CPPFLAGS="$tmp_cppflags" ;; beos | haiku) $as_echo "#define NFCLIPBRD_SUPPORT 1" >>confdefs.h LIBS="$LIBS -lbe" ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XOpenDisplay in -lX11" >&5 $as_echo_n "checking for XOpenDisplay in -lX11... " >&6; } if ${ac_cv_lib_X11_XOpenDisplay+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lX11 -L/usr/X11R6/lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XOpenDisplay (); int main () { return XOpenDisplay (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_X11_XOpenDisplay=yes else ac_cv_lib_X11_XOpenDisplay=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11_XOpenDisplay" >&5 $as_echo "$ac_cv_lib_X11_XOpenDisplay" >&6; } if test "x$ac_cv_lib_X11_XOpenDisplay" = xyes; then : SDL_LIBS="$SDL_LIBS -lX11" fi if [ "x$ac_cv_lib_X11_XOpenDisplay" = "xyes" ]; then $as_echo "#define NFCLIPBRD_SUPPORT 1" >>confdefs.h else as_fn_error $? "Sorry, NatFeat Clipboard not implemented on your platform yet" "$LINENO" 5 WANT_NFCLIPBRD="no" fi ;; esac fi if test "$WANT_NFCLIPBRD" = yes; then NFCLIPBRD_SUPPORT_TRUE= NFCLIPBRD_SUPPORT_FALSE='#' else NFCLIPBRD_SUPPORT_TRUE='#' NFCLIPBRD_SUPPORT_FALSE= fi if [ "$WANT_NFEXEC" = yes -a "$WANT_HOSTFS" != yes ]; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: NF exec disabled due to lack of support from HOSTFS" >&5 $as_echo "$as_me: WARNING: NF exec disabled due to lack of support from HOSTFS" >&2;} WANT_NFEXEC=no fi if [ "$WANT_NFEXEC" = yes ]; then $as_echo "#define NFEXEC_SUPPORT 1" >>confdefs.h PROVIDES_NF="$PROVIDES_NF exec" fi if test "$WANT_NFEXEC" = "yes"; then NFEXEC_SUPPORT_TRUE= NFEXEC_SUPPORT_FALSE='#' else NFEXEC_SUPPORT_TRUE='#' NFEXEC_SUPPORT_FALSE= fi if [ "x$WANT_NFCLIPBRD" = "xyes" ]; then PROVIDES_NF="$PROVIDES_NF clipboard" fi if [ "x$WANT_EPSLIMITER" = "xyes" ]; then $as_echo "#define ENABLE_EPSLIMITER 1" >>confdefs.h fi if test "x$WANT_RTCTIMER" = "xyes" ; then if test "x$OS_TYPE" = "xlinux"; then $as_echo "#define RTC_TIMER 1" >>confdefs.h else WANT_RTCTIMER="no" fi fi if test "x$WANT_PARALLELX86" = "xyes" ; then if test "x$OS_TYPE" = "xlinux" && $HAVE_I386; then $as_echo "#define ENABLE_PARALLELX86 1" >>confdefs.h else WANT_PARALLELX86="no" fi fi if test "$WANT_PARALLELX86" = yes; then ENABLE_PARALLELX86_TRUE= ENABLE_PARALLELX86_FALSE='#' else ENABLE_PARALLELX86_TRUE='#' ENABLE_PARALLELX86_FALSE= fi if test "x$WANT_PARALLELPARPORT" = "xyes" ; then if test "x$OS_TYPE" = "xlinux"; then $as_echo "#define ENABLE_PARALLELPARPORT 1" >>confdefs.h else WANT_PARALLELPARPORT="no" fi fi if test "$WANT_PARALLELPARPORT" = yes; then ENABLE_PARALLELPARPORT_TRUE= ENABLE_PARALLELPARPORT_FALSE='#' else ENABLE_PARALLELPARPORT_TRUE='#' ENABLE_PARALLELPARPORT_FALSE= fi if test "x$OS_TYPE" = "xlinux"; then $as_echo "#define ENABLE_MIDI_SEQUENCER 1" >>confdefs.h fi if test "x$WANT_UNIXSERIALPORT" = "xyes" ; then if test "x$ac_cv_header_termios_h" = "xyes" -a "x$ac_cv_header_sys_ioctl_h" = "xyes"; then $as_echo "#define ENABLE_SERIALUNIX 1" >>confdefs.h else WANT_UNIXSERIALPORT="no" fi fi if test "$WANT_UNIXSERIALPORT" = yes; then ENABLE_SERIALUNIX_TRUE= ENABLE_SERIALUNIX_FALSE='#' else ENABLE_SERIALUNIX_TRUE='#' ENABLE_SERIALUNIX_FALSE= fi cat >>confdefs.h <<_ACEOF #define PROVIDES_NATFEATS "$PROVIDES_NF" _ACEOF APP=aranym case "$host_os" in darwin*) if test "x$WITH_FINK" = "xyes"; then TARGET="\$(APP)" else TARGET="\$(APP_BUNDLE)" fi ARANYM_DATADIR="\"\\\"\${datadir}/\${APP}\\\"\"" ;; mingw*) TARGET="\$(APP)" ARANYM_DATADIR="\"\\\"./\${APP}\\\"\"" ;; *) TARGET="\$(APP)" ARANYM_DATADIR="\"\\\"\${datadir}/\${APP}\\\"\"" ;; esac CFLAGS="$CFLAGS -DARANYM_DATADIR=$ARANYM_DATADIR" CXXFLAGS="$CXXFLAGS -DARANYM_DATADIR=$ARANYM_DATADIR" if [ "x$ARCHFLAGS" != "x" ]; then CPPFLAGS=`echo $CPPFLAGS | sed -e "s:$ARCHFLAGS::g"` LDFLAGS=`echo $LDFLAGS | sed -e "s:$ARCHFLAGS::g"` fi ARCH="$CPU_TYPE" if test "$am__include" = "include"; then am__include=-include; fi ac_config_files="$ac_config_files Makefile src/Makefile src/uae_cpu/Makefile doc/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_TYPE_linux_TRUE}" && test -z "${OS_TYPE_linux_FALSE}"; then as_fn_error $? "conditional \"OS_TYPE_linux\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_TYPE_openbsd_TRUE}" && test -z "${OS_TYPE_openbsd_FALSE}"; then as_fn_error $? "conditional \"OS_TYPE_openbsd\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_TYPE_netbsd_TRUE}" && test -z "${OS_TYPE_netbsd_FALSE}"; then as_fn_error $? "conditional \"OS_TYPE_netbsd\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_TYPE_freebsd_TRUE}" && test -z "${OS_TYPE_freebsd_FALSE}"; then as_fn_error $? "conditional \"OS_TYPE_freebsd\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_TYPE_solaris_TRUE}" && test -z "${OS_TYPE_solaris_FALSE}"; then as_fn_error $? "conditional \"OS_TYPE_solaris\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_TYPE_darwin_TRUE}" && test -z "${OS_TYPE_darwin_FALSE}"; then as_fn_error $? "conditional \"OS_TYPE_darwin\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_TYPE_cygwin_TRUE}" && test -z "${OS_TYPE_cygwin_FALSE}"; then as_fn_error $? "conditional \"OS_TYPE_cygwin\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_TYPE_irix_TRUE}" && test -z "${OS_TYPE_irix_FALSE}"; then as_fn_error $? "conditional \"OS_TYPE_irix\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_TYPE_mint_TRUE}" && test -z "${OS_TYPE_mint_FALSE}"; then as_fn_error $? "conditional \"OS_TYPE_mint\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_TYPE_beos_TRUE}" && test -z "${OS_TYPE_beos_FALSE}"; then as_fn_error $? "conditional \"OS_TYPE_beos\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_TYPE_mingw_TRUE}" && test -z "${OS_TYPE_mingw_FALSE}"; then as_fn_error $? "conditional \"OS_TYPE_mingw\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_TYPE_unknown_TRUE}" && test -z "${OS_TYPE_unknown_FALSE}"; then as_fn_error $? "conditional \"OS_TYPE_unknown\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ANDROID_OS_TRUE}" && test -z "${ANDROID_OS_FALSE}"; then as_fn_error $? "conditional \"ANDROID_OS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WITH_FINK_TRUE}" && test -z "${WITH_FINK_FALSE}"; then as_fn_error $? "conditional \"WITH_FINK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CPU_TYPE_x86_TRUE}" && test -z "${CPU_TYPE_x86_FALSE}"; then as_fn_error $? "conditional \"CPU_TYPE_x86\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CPU_TYPE_x86_64_TRUE}" && test -z "${CPU_TYPE_x86_64_FALSE}"; then as_fn_error $? "conditional \"CPU_TYPE_x86_64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CPU_TYPE_sparc_TRUE}" && test -z "${CPU_TYPE_sparc_FALSE}"; then as_fn_error $? "conditional \"CPU_TYPE_sparc\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CPU_TYPE_arm_TRUE}" && test -z "${CPU_TYPE_arm_FALSE}"; then as_fn_error $? "conditional \"CPU_TYPE_arm\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CPU_TYPE_powerpc_TRUE}" && test -z "${CPU_TYPE_powerpc_FALSE}"; then as_fn_error $? "conditional \"CPU_TYPE_powerpc\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CPU_TYPE_unknown_TRUE}" && test -z "${CPU_TYPE_unknown_FALSE}"; then as_fn_error $? "conditional \"CPU_TYPE_unknown\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepOBJC_TRUE}" && test -z "${am__fastdepOBJC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepOBJC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NEED_GETOPT_TRUE}" && test -z "${NEED_GETOPT_FALSE}"; then as_fn_error $? "conditional \"NEED_GETOPT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${FULLMMU_TRUE}" && test -z "${FULLMMU_FALSE}"; then as_fn_error $? "conditional \"FULLMMU\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WANT_DSP_TRUE}" && test -z "${WANT_DSP_FALSE}"; then as_fn_error $? "conditional \"WANT_DSP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WANT_DSP_DISASM_TRUE}" && test -z "${WANT_DSP_DISASM_FALSE}"; then as_fn_error $? "conditional \"WANT_DSP_DISASM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NEED_ARATAPIF_TRUE}" && test -z "${NEED_ARATAPIF_FALSE}"; then as_fn_error $? "conditional \"NEED_ARATAPIF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ETHERNET_SUPPORT_TRUE}" && test -z "${ETHERNET_SUPPORT_FALSE}"; then as_fn_error $? "conditional \"ETHERNET_SUPPORT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HOSTFS_SUPPORT_TRUE}" && test -z "${HOSTFS_SUPPORT_FALSE}"; then as_fn_error $? "conditional \"HOSTFS_SUPPORT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${SDL_GUI_TRUE}" && test -z "${SDL_GUI_FALSE}"; then as_fn_error $? "conditional \"SDL_GUI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${EXTENDED_SIGSEGV_TRUE}" && test -z "${EXTENDED_SIGSEGV_FALSE}"; then as_fn_error $? "conditional \"EXTENDED_SIGSEGV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GENCOMP_ARCH_X86_TRUE}" && test -z "${GENCOMP_ARCH_X86_FALSE}"; then as_fn_error $? "conditional \"GENCOMP_ARCH_X86\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GENCOMP_ARCH_ARM_TRUE}" && test -z "${GENCOMP_ARCH_ARM_FALSE}"; then as_fn_error $? "conditional \"GENCOMP_ARCH_ARM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_JIT_TRUE}" && test -z "${USE_JIT_FALSE}"; then as_fn_error $? "conditional \"USE_JIT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_JIT_FPU_TRUE}" && test -z "${USE_JIT_FPU_FALSE}"; then as_fn_error $? "conditional \"USE_JIT_FPU\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_JIT2_TRUE}" && test -z "${USE_JIT2_FALSE}"; then as_fn_error $? "conditional \"USE_JIT2\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${FPU_IEEE_TRUE}" && test -z "${FPU_IEEE_FALSE}"; then as_fn_error $? "conditional \"FPU_IEEE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${FPU_X86_TRUE}" && test -z "${FPU_X86_FALSE}"; then as_fn_error $? "conditional \"FPU_X86\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${FPU_UAE_TRUE}" && test -z "${FPU_UAE_FALSE}"; then as_fn_error $? "conditional \"FPU_UAE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${FPU_MPFR_TRUE}" && test -z "${FPU_MPFR_FALSE}"; then as_fn_error $? "conditional \"FPU_MPFR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_DEBUGGER_TRUE}" && test -z "${USE_DEBUGGER_FALSE}"; then as_fn_error $? "conditional \"USE_DEBUGGER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DISASM_USE_BUILTIN_TRUE}" && test -z "${DISASM_USE_BUILTIN_FALSE}"; then as_fn_error $? "conditional \"DISASM_USE_BUILTIN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DISASM_USE_OPCODES_TRUE}" && test -z "${DISASM_USE_OPCODES_FALSE}"; then as_fn_error $? "conditional \"DISASM_USE_OPCODES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_SDL2_TRUE}" && test -z "${ENABLE_SDL2_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SDL2\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_OPENGL_TRUE}" && test -z "${ENABLE_OPENGL_FALSE}"; then as_fn_error $? "conditional \"ENABLE_OPENGL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NFCDROM_SUPPORT_TRUE}" && test -z "${NFCDROM_SUPPORT_FALSE}"; then as_fn_error $? "conditional \"NFCDROM_SUPPORT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NFPCI_SUPPORT_TRUE}" && test -z "${NFPCI_SUPPORT_FALSE}"; then as_fn_error $? "conditional \"NFPCI_SUPPORT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NFPCI_LINUX_SUPPORT_TRUE}" && test -z "${NFPCI_LINUX_SUPPORT_FALSE}"; then as_fn_error $? "conditional \"NFPCI_LINUX_SUPPORT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USBHOST_SUPPORT_TRUE}" && test -z "${USBHOST_SUPPORT_FALSE}"; then as_fn_error $? "conditional \"USBHOST_SUPPORT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NFOSMESA_SUPPORT_TRUE}" && test -z "${NFOSMESA_SUPPORT_FALSE}"; then as_fn_error $? "conditional \"NFOSMESA_SUPPORT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NFJPEG_SUPPORT_TRUE}" && test -z "${NFJPEG_SUPPORT_FALSE}"; then as_fn_error $? "conditional \"NFJPEG_SUPPORT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NFVDI_SUPPORT_TRUE}" && test -z "${NFVDI_SUPPORT_FALSE}"; then as_fn_error $? "conditional \"NFVDI_SUPPORT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NFCLIPBRD_SUPPORT_TRUE}" && test -z "${NFCLIPBRD_SUPPORT_FALSE}"; then as_fn_error $? "conditional \"NFCLIPBRD_SUPPORT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NFEXEC_SUPPORT_TRUE}" && test -z "${NFEXEC_SUPPORT_FALSE}"; then as_fn_error $? "conditional \"NFEXEC_SUPPORT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_PARALLELX86_TRUE}" && test -z "${ENABLE_PARALLELX86_FALSE}"; then as_fn_error $? "conditional \"ENABLE_PARALLELX86\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_PARALLELPARPORT_TRUE}" && test -z "${ENABLE_PARALLELPARPORT_FALSE}"; then as_fn_error $? "conditional \"ENABLE_PARALLELPARPORT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_SERIALUNIX_TRUE}" && test -z "${ENABLE_SERIALUNIX_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SERIALUNIX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by aranym $as_me 1.1.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to . aranym home page: ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ aranym config.status 1.1.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/uae_cpu/Makefile") CONFIG_FILES="$CONFIG_FILES src/uae_cpu/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi echo echo "ARAnyM configuration summary:" echo echo "SDL version ................... ........ : $sdl_version" echo "Use exclusive spcflags handling ........ : $WANT_SPCFLAGS_EXCL" echo "Use JIT compiler ....................... : $WANT_JIT" echo "Use JIT compiler for FPU instructions .. : $WANT_JIT_FPU" echo "JIT debug mode ......................... : $WANT_JIT_DEBUG" echo "Floating-Point emulation core .......... : $FPE_CORE" echo "Assembly optimizations ................. : $ASM_OPTIMIZATIONS" echo "Addressing mode ........................ : $ADDRESSING_MODE" ATC_TYPE_MSG= if [ "x$WANT_MMU" = "xyes" ]; then case "$ATC_TYPE" in full) ATC_TYPE_MSG=" (with ATC)";; small) ATC_TYPE_MSG=" (with small ATC)";; no) ATC_TYPE_MSG=" (without ATC)";; esac fi echo "Full MMU support ....................... : $WANT_MMU$ATC_TYPE_MSG" echo "Linux /dev/rtc source timer ............ : $WANT_RTCTIMER" echo "Real STOP implementation ............... : $WANT_REALSTOP" echo "DSP 56001 support ...................... : $WANT_DSP" echo "DSP 56001 disassembly support .......... : $WANT_DSP_DISASM" echo "Debugger ............................... : $USE_DEBUGGER" echo "Check memory ........................... : $MEMORY_CHECK" echo "First 2kB of RAM Supervisor protected... : $WANT_PROTECT2K" echo "FastRAM fixed size ..................... : $WANT_FIXEDFASTRAM" echo "Fixed position of VideoRAM ............. : $WANT_FIXEDVIDEORAM" echo "Blitter memmove acceleration ........... : $WANT_BLITMEMMOVE" echo "Blitter SDL blit acceleration .......... : $WANT_BLITSDLBLIT" echo "Support for hostfs ..................... : $WANT_HOSTFS" echo "Support for ethernet ................... : $HAVE_ETHERNET" echo "GUI .................................... : $WANT_SDLGUI" echo "OpenGL ................................. : $WANT_OPENGL" echo "Linux-m68k loader ...................... : $WANT_LILO" echo "Zlib ................................... : $have_zlib" echo "libusb-1.0.............................. : $WITH_USBHOST" echo "NatFeat CD-ROM driver .................. : $NFCDROM_DRIVER" echo "NatFeat PCI driver ..................... : $WANT_NFPCI" echo "NatFeat USB driver ..................... : $WANT_USBHOST" echo "NatFeat OSMesa driver .................. : $WANT_NFOSMESA" echo "NatFeat JPEG decoder ................... : $WANT_NFJPEG" echo "NatFeat Clipboard ...................... : $WANT_NFCLIPBRD" echo "NatFeat VDI driver ..................... : $WANT_NFVDI" echo "NatFeat SCSI driver .................... : $WANT_NFSCSI" echo "NatFeat host exec driver ............... : $WANT_NFEXEC" echo "Exception per second limiter ........... : $WANT_EPSLIMITER" echo "Linux/X86 h/w access for parallel port.. : $WANT_PARALLELX86" echo "Linux /dev/parport for parallel port.... : $WANT_PARALLELPARPORT" echo "Unix /dev/ttySn for serial port......... : $WANT_UNIXSERIALPORT" echo "Use C++ exceptions for m68k exceptions.. : $WANT_CXX_EXCEPTIONS" echo echo "Configuration done. Now type \"make\" (or \"gmake\")." aranym-1.1.0/aclocal.m40000664000175000017500000014676313454637623013064 0ustar joyjoy# generated automatically by aclocal 1.15 -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- dnl serial 11 (pkg-config-0.29.1) dnl dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA dnl 02111-1307, USA. dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29.1]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) dnl ---------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_INSTALLDIR dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_NOARCH_INSTALLDIR dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/ax_prog_cc_for_build.m4]) m4_include([m4/ax_prog_cxx_for_build.m4]) m4_include([m4/cxxbool.m4]) m4_include([m4/float.m4]) m4_include([m4/framework.m4]) m4_include([m4/maintainer.m4]) m4_include([m4/sdl.m4]) m4_include([m4/sdl2.m4]) m4_include([m4/stat-time.m4]) m4_include([m4/tm_gmtoff.m4]) m4_include([m4/util.m4]) aranym-1.1.0/tools/0000775000175000017500000000000013454637622012342 5ustar joyjoyaranym-1.1.0/tools/romdiff.c0000664000175000017500000000523013454637622014134 0ustar joyjoy#include #include FILE *f1, *f2; FILE *out; int numdiffs; struct ROMdiff { unsigned long start; unsigned long value; int len; }; #define MAX_DIFFS 200 static struct ROMdiff diffs[MAX_DIFFS]; static void dumpdiff(unsigned long start, int len) { unsigned int c1, c2, c3, c4; int i; long pos; if (numdiffs >= MAX_DIFFS) { fprintf(stderr, "too many diffs, aborting\n"); exit(1); } if (!(start & 1) && (len & 1)) len++; else if ((start & 1) && (len & 1)) start--, len++; fprintf(out, "/* %06lx */\nstatic unsigned char const romdiff_%d[%d] = { ", start, numdiffs, len); pos = ftell(f2); fseek(f2, start, SEEK_SET); for (i = 0; i < len; ) { c2 = fgetc(f2); fprintf(out, "0x%02x", c2); ++i; if (i != len) fputs(", ", out); } fputs(" };\n", out); fseek(f2, pos, SEEK_SET); diffs[numdiffs].start = start; diffs[numdiffs].len = len; pos = ftell(f1); fseek(f1, start, SEEK_SET); c1 = fgetc(f1); c2 = fgetc(f1); c3 = fgetc(f1); c4 = fgetc(f1); diffs[numdiffs].value = (c1 << 24) | (c2 << 16) | (c3 << 8) | (c4 << 0); fseek(f1, pos, SEEK_SET); numdiffs++; } int main(int argc, char **argv) { char *n1, *n2; unsigned long ptr; unsigned long diffstart = 0; int difflen = 0; int i; if (argc != 3) { fprintf(stderr, "Usage: %s file1 file2\n", argv[0]); return 1; } n1 = argv[1]; n2 = argv[2]; f1 = fopen(n1, "rb"); if (f1 == NULL) { fprintf(stderr, "Error opening '%s'\n", n1); return 2; } f2 = fopen(n2, "rb"); if (f2 == NULL) { fprintf(stderr, "Error opening '%s'\n", n2); fclose(f1); return 3; } out = stdout; ptr = 0; numdiffs = 0; fprintf(out, "\ /*\n\ * This is the list of neccessary changes\n\ * for patching the original TOS 4.04 for 68040 compatibility.\n\ *\n\ * Autogenerated by tools/romdiff.c tool\n\ */\n\ \n\ #include \"romdiff.h\"\n\ \n"); while (!feof(f1) && !feof(f2)) { unsigned char c1, c2; c1 = fgetc(f1); c2 = fgetc(f2); if (c1 != c2) { if (difflen == 0) diffstart = ptr; difflen++; ptr++; } else if (difflen != 0) { /* peek at next chars; if they are different again, continue */ c1 = fgetc(f1); c2 = fgetc(f2); if (c1 == c2) { dumpdiff(diffstart, difflen); difflen = 0; ptr += 2; } else { difflen += 2; ptr += 2; } } else { ptr++; } } if (difflen != 0) dumpdiff(diffstart, difflen); fprintf(out, "\n"); fprintf(out, "ROMdiff const tosdiff[] = {\n"); for (i = 0; i < numdiffs; i++) { fprintf(out, "\t{ 0x%06lx, 0x%08lx, %3d, romdiff_%d },\n", diffs[i].start, diffs[i].value, diffs[i].len, i); } fprintf(out, "\t{ 0, 0, 0, 0 }\n};\n"); fflush(out); fclose(f1); fclose(f2); } aranym-1.1.0/tools/memory.h.patch0000664000175000017500000000462613454637622015131 0ustar joyjoy--- memory.h 2002-11-05 20:42:10.000000000 +0100 +++ memory.nssv.h 2002-11-05 20:42:35.000000000 +0100 @@ -133,10 +133,8 @@ if (((addr ^ read_page) <= ARAM_PAGE_MASK)) return do_get_mem_long((uae_u32*)(addr + read_offset)); #endif -#ifndef HW_SIGSEGV addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) return HWget_l(addr); -#endif check_ram_boundary(addr, 4, false); uae_u32 * const m = (uae_u32 *)phys_get_real_address(addr); #if ARAM_PAGE_CHECK @@ -152,10 +150,8 @@ if (((addr ^ read_page) <= ARAM_PAGE_MASK)) return do_get_mem_word((uae_u16*)(addr + read_offset)); #endif -#ifndef HW_SIGSEGV addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) return HWget_w(addr); -#endif check_ram_boundary(addr, 2, false); uae_u16 * const m = (uae_u16 *)phys_get_real_address(addr); #if ARAM_PAGE_CHECK @@ -171,10 +167,8 @@ if (((addr ^ read_page) <= ARAM_PAGE_MASK)) return do_get_mem_byte((uae_u8*)(addr + read_offset)); #endif -#ifndef HW_SIGSEGV addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) return HWget_b(addr); -#endif check_ram_boundary(addr, 1, false); uae_u8 * const m = (uae_u8 *)phys_get_real_address(addr); #if ARAM_PAGE_CHECK @@ -192,13 +186,11 @@ return; } #endif -#ifndef HW_SIGSEGV addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) { HWput_l(addr, l); return; } -#endif check_ram_boundary(addr, 4, true); uae_u32 * const m = (uae_u32 *)phys_get_real_address(addr); #if ARAM_PAGE_CHECK @@ -216,13 +208,11 @@ return; } #endif -#ifndef HW_SIGSEGV addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) { HWput_w(addr, w); return; } -#endif check_ram_boundary(addr, 2, true); uae_u16 * const m = (uae_u16 *)phys_get_real_address(addr); #if ARAM_PAGE_CHECK @@ -240,13 +230,11 @@ return; } #endif -#ifndef HW_SIGSEGV addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) { HWput_b(addr, b); return; } -#endif check_ram_boundary(addr, 1, true); uae_u8 * const m = (uae_u8 *)phys_get_real_address(addr); #if ARAM_PAGE_CHECK aranym-1.1.0/tools/ldd.c0000664000175000017500000006545213454637622013265 0ustar joyjoy#define _WIN32_WINNT 0x0501 #undef __STRICT_ANSI__ #include #include #include #include #include #include #include #include #include #ifdef __CYGWIN__ #include #include #define _wcsicmp wcscasecmp #define _wcsnicmp wcsncasecmp #define _wcsdup wcsdup #endif #include #include #ifndef _WIN32 #include #define IsBadReadPtr(p, s) 0 #define DWORD unsigned int #define WORD unsigned short #define BYTE unsigned char #define ULONGLONG unsigned long #define _wcsdup(s) wcsdup(s) #define _wcsicmp wcscasecmp #define UnmapViewOfFile(p) free(p) #define MAX_PATH PATH_MAX typedef struct _IMAGE_IMPORT_DESCRIPTOR { union { DWORD Characteristics; DWORD OriginalFirstThunk; }; DWORD TimeDateStamp; DWORD ForwarderChain; DWORD Name; DWORD FirstThunk; } IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR; typedef struct _IMAGE_DOS_HEADER { WORD e_magic; WORD e_cblp; WORD e_cp; WORD e_crlc; WORD e_cparhdr; WORD e_minalloc; WORD e_maxalloc; WORD e_ss; WORD e_sp; WORD e_csum; WORD e_ip; WORD e_cs; WORD e_lfarlc; WORD e_ovno; WORD e_res[4]; WORD e_oemid; WORD e_oeminfo; WORD e_res2[10]; DWORD e_lfanew; } IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER; #define IMAGE_DOS_SIGNATURE 0x5A4D #define IMAGE_SIZEOF_SHORT_NAME 8 #define IMAGE_NT_SIGNATURE 0x00004550 #define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b #define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b typedef struct _IMAGE_DATA_DIRECTORY { DWORD VirtualAddress; DWORD Size; } IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY; #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 typedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; union { DWORD PhysicalAddress; DWORD VirtualSize; }; DWORD VirtualAddress; DWORD SizeOfRawData; DWORD PointerToRawData; DWORD PointerToRelocations; DWORD PointerToLinenumbers; WORD NumberOfRelocations; WORD NumberOfLinenumbers; DWORD Characteristics; } IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER; typedef struct _IMAGE_FILE_HEADER { WORD Machine; WORD NumberOfSections; DWORD TimeDateStamp; DWORD PointerToSymbolTable; DWORD NumberOfSymbols; WORD SizeOfOptionalHeader; WORD Characteristics; } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; typedef struct _IMAGE_OPTIONAL_HEADER { WORD Magic; BYTE MajorLinkerVersion; BYTE MinorLinkerVersion; DWORD SizeOfCode; DWORD SizeOfInitializedData; DWORD SizeOfUninitializedData; DWORD AddressOfEntryPoint; DWORD BaseOfCode; DWORD BaseOfData; DWORD ImageBase; DWORD SectionAlignment; DWORD FileAlignment; WORD MajorOperatingSystemVersion; WORD MinorOperatingSystemVersion; WORD MajorImageVersion; WORD MinorImageVersion; WORD MajorSubsystemVersion; WORD MinorSubsystemVersion; DWORD Win32VersionValue; DWORD SizeOfImage; DWORD SizeOfHeaders; DWORD CheckSum; WORD Subsystem; WORD DllCharacteristics; DWORD SizeOfStackReserve; DWORD SizeOfStackCommit; DWORD SizeOfHeapReserve; DWORD SizeOfHeapCommit; DWORD LoaderFlags; DWORD NumberOfRvaAndSizes; IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; } IMAGE_OPTIONAL_HEADER32,*PIMAGE_OPTIONAL_HEADER32; typedef struct _IMAGE_OPTIONAL_HEADER64 { WORD Magic; BYTE MajorLinkerVersion; BYTE MinorLinkerVersion; DWORD SizeOfCode; DWORD SizeOfInitializedData; DWORD SizeOfUninitializedData; DWORD AddressOfEntryPoint; DWORD BaseOfCode; ULONGLONG ImageBase; DWORD SectionAlignment; DWORD FileAlignment; WORD MajorOperatingSystemVersion; WORD MinorOperatingSystemVersion; WORD MajorImageVersion; WORD MinorImageVersion; WORD MajorSubsystemVersion; WORD MinorSubsystemVersion; DWORD Win32VersionValue; DWORD SizeOfImage; DWORD SizeOfHeaders; DWORD CheckSum; WORD Subsystem; WORD DllCharacteristics; ULONGLONG SizeOfStackReserve; ULONGLONG SizeOfStackCommit; ULONGLONG SizeOfHeapReserve; ULONGLONG SizeOfHeapCommit; DWORD LoaderFlags; DWORD NumberOfRvaAndSizes; IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; } IMAGE_OPTIONAL_HEADER64,*PIMAGE_OPTIONAL_HEADER64; #define IMAGE_DIRECTORY_ENTRY_IMPORT 1 #endif static char const program_name[] = "ldd"; #ifdef _WIN32 #include #include #include #endif #include #ifndef STATUS_DLL_NOT_FOUND # define STATUS_DLL_NOT_FOUND (0xC0000135L) #endif #ifndef FALSE # define FALSE 0 # define TRUE 1 #endif #define VERSION "2.0" static int shortname; static int pathname; static int error(const char *fmt,...) { va_list ap; va_start(ap, fmt); fprintf(stderr, "ldd: "); vfprintf(stderr, fmt, ap); fprintf(stderr, "\nTry `ldd --help' for more information.\n"); exit(1); } static void print_usage(void) { printf("Usage: %s [OPTION]... FILE...\n\ \n\ Print shared library dependencies\n\ \n\ -h, --help print this help and exit\n\ -V, --version print version information and exit\n\ -r, --function-relocs process data and function relocations\n\ (currently unimplemented)\n\ -u, --unused print unused direct dependencies\n\ (currently unimplemented)\n\ -v, --verbose print all information\n\ (currently unimplemented)", program_name); } static void print_version(void) { printf( #if defined(__CYGWIN__) "ldd (Cygwin) %d.%d.%d\n" #elif defined(__MINGW32__) #ifdef _WIN64 "ldd (MingW) (64bit) " VERSION "\n" #else "ldd (MingW) " VERSION "\n" #endif #elif defined(__WINE__) #ifdef _WIN64 "ldd (wine) (64bit) " VERSION "\n" #else "ldd (wine) " VERSION "\n" #endif #elif defined(_MSC_VER) #ifdef _WIN64 "ldd (MSVC) (64bit) " VERSION "\n" #else "ldd (MSVC) " VERSION "\n" #endif #else "ldd " VERSION "\n" #endif "Print shared library dependencies\n" "Copyright (C) 2009 - %s Chris Faylor\n" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", #if defined(__CYGWIN__) CYGWIN_VERSION_DLL_MAJOR / 1000, CYGWIN_VERSION_DLL_MAJOR % 1000, CYGWIN_VERSION_DLL_MINOR, #endif strrchr (__DATE__, ' ') + 1); } #define print_errno_error_and_return(__fn) \ do {\ fprintf (stderr, "ldd: %s: %s\n", (__fn), strerror (errno));\ return 1;\ } while (0) static struct filelist { struct filelist *next; wchar_t *name; } *head; #ifdef _WIN32 static char *xstrdup(const char *s) { return strcpy(malloc(strlen(s) + 1), s); } #endif static int saw_file(const wchar_t *name) { struct filelist *p; for (p = head; p; p = p->next) if (_wcsicmp(name, p->name) == 0) return TRUE; p = (struct filelist *) malloc(sizeof(struct filelist)); p->next = head; p->name = _wcsdup(name); head = p; return FALSE; } #ifdef _WIN32 #define SLOP strlen (" (?)") static char *tocyg(wchar_t *win_fn) { char *fn; #ifdef __CYGWIN__ ssize_t cwlen = cygwin_conv_path(CCP_WIN_W_TO_POSIX, win_fn, NULL, 0); if (cwlen > 0) { char *fn_cyg = (char *) malloc(cwlen + SLOP + 1); if (cygwin_conv_path(CCP_WIN_W_TO_POSIX, win_fn, fn_cyg, cwlen) == 0) fn = fn_cyg; else { int len; free(fn_cyg); len = wcstombs(NULL, win_fn, 0); fn = (char *) malloc(len + SLOP + 1); wcstombs(fn, win_fn, len + SLOP + 1); } } else #endif { int len = wcstombs(NULL, win_fn, 0) + 1; if ((fn = (char *) malloc(len)) != NULL) wcstombs(fn, win_fn, len); } return fn; } #endif static int process_file(const wchar_t *filename, const char *internal_fn, const char *print_fn); #ifdef _WIN32 WINBASEAPI WINBOOL WINAPI Wow64DisableWow64FsRedirection(PVOID *oldValue); WINBASEAPI WINBOOL WINAPI Wow64RevertWow64FsRedirection(PVOID OldValue); WINBASEAPI BOOLEAN WINAPI Wow64EnableWow64FsRedirection(BOOLEAN Wow64FsEnableRedirection); /* DWORD WINAPI GetFinalPathNameByHandleW( HANDLE hFile, LPWSTR lpszFilePath, DWORD cchFilePath, DWORD dwFlags ); UINT WINAPI GetSystemWow64DirectoryW( LPWSTR lpBuffer, UINT uSize ); */ typedef WINBOOL (WINAPI *PFNWOW64DISABLEWOW64FSREDIRECTION)(PVOID *oldValue); typedef WINBOOL (WINAPI *PFNWOW64REVERTWOW64FSREDIRECTION)(PVOID OldValue); typedef BOOL (WINAPI *PFNSETDLLDIRECTORYW)(LPWSTR name); typedef DWORD (WINAPI *PFNGETFINALPATHNAMEBYHANDLEW)(HANDLE hFile, LPWSTR lpszFilePath, DWORD cchFilePath, DWORD dwFlags); typedef UINT (WINAPI *PFNGETSYSTEMWOW64DIRECTORYW)(LPWSTR buffer, UINT size); static PFNWOW64DISABLEWOW64FSREDIRECTION p_Wow64DisableWow64FsRedirection; static PFNWOW64REVERTWOW64FSREDIRECTION p_Wow64RevertWow64FsRedirection; static PFNSETDLLDIRECTORYW p_SetDllDirectoryW; static PFNGETFINALPATHNAMEBYHANDLEW p_GetFinalPathNameByHandleW; static PFNGETSYSTEMWOW64DIRECTORYW p_GetSystemWow64DirectoryW; #endif /* dump of import directory section begins at pointer 'section base' section RVA is 'section_rva' import directory begins at pointer 'imp' */ static int dump_import_directory(wchar_t *search_path, const void *const section_base, const DWORD section_rva, const IMAGE_IMPORT_DESCRIPTOR *imp, int is_64bit) { int ret = 0; /* get memory address given the RVA */ #define adr(rva) ((const void*) ((char*) section_base+((DWORD) (rva))-section_rva)) /* continue until address inaccessible or there's no DLL name */ for (; !IsBadReadPtr(imp, sizeof(*imp)) && imp->Name; imp++) { char *fn = (char *) adr(imp->Name); wchar_t *fnw; /* output DLL's name */ int len; len = mbstowcs(NULL, fn, 0); if (len <= 0) continue; fnw = (wchar_t *)malloc((len + 1) * sizeof(*fnw)); mbstowcs(fnw, fn, len + 1); if (!saw_file(fnw)) { #ifdef _WIN32 PVOID redirect; wchar_t *dummy; char *print_fn; wchar_t full_path[MAX_PATH]; redirect = NULL; if (is_64bit && p_Wow64DisableWow64FsRedirection) p_Wow64DisableWow64FsRedirection(&redirect); #ifndef LOAD_LIBRARY_AS_IMAGE_RESOURCE #define LOAD_LIBRARY_AS_IMAGE_RESOURCE 0x00000020 #endif if (!SearchPathW(search_path, fnw, NULL, MAX_PATH, full_path, &dummy)) { print_fn = xstrdup("not found"); if (shortname || pathname) printf("notfound:%s\n", fn); else printf("\t%s => %s\n", fn, print_fn); free(print_fn); ret |= 1; } else { if (strncmp(fn, "API-MS-", 7) != 0 && strncmp(fn, "api-ms-", 7) != 0) { print_fn = tocyg(full_path); } else { print_fn = NULL; } ret |= process_file(full_path, fn, print_fn); free(print_fn); } if (is_64bit && p_Wow64RevertWow64FsRedirection) p_Wow64RevertWow64FsRedirection(redirect); #else printf("\t%s\n", fn); #endif } free(fnw); } #undef adr return ret; } /* load a file in RAM (memory-mapped) return pointer to loaded file 0 if no success */ static void *map_file(const wchar_t *filename) { void *basepointer; #ifdef _WIN32 HANDLE hFile, hMapping; if ((hFile = CreateFileW(filename, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, 0)) == INVALID_HANDLE_VALUE) { __extension__ fprintf(stderr, "couldn't open %ls\n", filename); return 0; } if (!(hMapping = CreateFileMapping(hFile, 0, PAGE_READONLY | SEC_COMMIT, 0, 0, 0))) { fprintf(stderr, "CreateFileMapping failed with windows error %u\n", (unsigned int) GetLastError()); CloseHandle(hFile); return 0; } if (!(basepointer = MapViewOfFile(hMapping, FILE_MAP_READ, 0, 0, 0))) { fprintf(stderr, "MapViewOfFile failed with windows error %u\n", (unsigned int) GetLastError()); CloseHandle(hMapping); CloseHandle(hFile); return 0; } CloseHandle(hMapping); CloseHandle(hFile); #else FILE *fp; char fname[PATH_MAX]; size_t size; wcstombs(fname, filename, sizeof(fname)); fp = fopen(fname, "rb"); if (fp == NULL) { fprintf(stderr, "can't open %s: %s\n", fname, strerror(errno)); return NULL; } fseek(fp, 0l, SEEK_END); size = ftell(fp); fseek(fp, 0l, SEEK_SET); basepointer = malloc(size); if (fread(basepointer, 1, size, fp) != size) { fprintf(stderr, "fread failed on %s: %s\n", fname, strerror(errno)); fclose(fp); free(basepointer); return NULL; } fclose(fp); #endif return basepointer; } /* this will return a pointer immediatly behind the DOS-header 0 if error */ static void *skip_dos_stub(const wchar_t *filename, const IMAGE_DOS_HEADER *dos_ptr) { /* look there's enough space for a DOS-header */ if (IsBadReadPtr(dos_ptr, sizeof(*dos_ptr))) { __extension__ fprintf(stderr, "%ls: not enough space for DOS-header\n", filename); return 0; } /* validate MZ */ if (dos_ptr->e_magic != IMAGE_DOS_SIGNATURE) { __extension__ fprintf(stderr, "%ls: not a DOS-stub\n", filename); return 0; } if (dos_ptr->e_lfarlc < 0x40 || dos_ptr->e_lfanew == 0) { __extension__ fprintf(stderr, "%ls: invalid DOS-stub\n", filename); return 0; } /* ok, then, go get it */ return (char *) dos_ptr + dos_ptr->e_lfanew; } /* find the directory's section index given the RVA Returns -1 if impossible */ static int get_directory_index(const unsigned dir_rva, const unsigned dir_length, const int number_of_sections, const IMAGE_SECTION_HEADER * sections) { int sect; for (sect = 0; sect < number_of_sections; sect++) { /* compare directory RVA to section RVA */ if (sections[sect].VirtualAddress <= dir_rva && dir_rva < sections[sect].VirtualAddress + sections[sect].SizeOfRawData) return sect; } return -1; } /* ensure byte-alignment for struct tag_header */ #ifdef _WIN32 #include #else #pragma pack(push,1) #endif struct tag_header { DWORD signature; IMAGE_FILE_HEADER file_head; union { IMAGE_OPTIONAL_HEADER32 head32; IMAGE_OPTIONAL_HEADER64 head64; } opt; }; /* revert to regular alignment */ #ifdef _WIN32 #include #else #pragma pack(pop) #endif static char *strccpy(char *s1, const char **s2, char c) { while (**s2 && **s2 != c) *s1++ = *((*s2)++); *s1 = 0; return s1; } static wchar_t *combine_path(wchar_t **list) { size_t len = 0; wchar_t **p; wchar_t *path, *dst; p = list; while (*p != NULL) { len += wcslen(*p) + 1; p++; } path = malloc(len * sizeof(*path)); dst = path; p = list; while (*p != NULL) { if (dst > path) *dst++ = ';'; wcscpy(dst, *p); dst += wcslen(dst); p++; } return path; } static wchar_t **split_path(wchar_t *dst, const char *srcpath, size_t size, char delim, int is_64bit) { char *srcbuf; wchar_t *d = dst - 1; size_t count = 0; int saw_current = 0; #ifdef _WIN32 int saw_windows = 0; int saw_system = 0; wchar_t windows_dir[MAX_PATH]; wchar_t system_dir[MAX_PATH]; wchar_t syswow64_dir[MAX_PATH]; #endif wchar_t **path_list, **listp; const char *src = srcpath; #ifdef _WIN32 GetWindowsDirectoryW(windows_dir, MAX_PATH); GetSystemDirectoryW(system_dir, MAX_PATH); if (!p_GetSystemWow64DirectoryW || !p_GetSystemWow64DirectoryW(syswow64_dir, MAX_PATH)) syswow64_dir[0] = 0; #endif srcbuf = malloc(size); do { char *srcpath = srcbuf; char *s = strccpy(srcpath, &src, delim); size_t len = s - srcpath; if (len >= MAX_PATH) { errno = ENAMETOOLONG; return NULL; } /* Paths in Win32 path lists in the environment (%Path%), are often enclosed in quotes (usually paths with spaces). Trailing backslashes are common, too.Remove them. */ if (delim == ';' && len) { if (*srcpath == '"') { ++srcpath; *--s = '\0'; len -= 2; } while (len && s[-1] == '\\') { *--s = '\0'; --len; } } if (strcmp(srcbuf, ".") == 0) len = 0; if (len) { ++d; #ifdef __CYGWIN__ if (cygwin_conv_path(CCP_POSIX_TO_WIN_W, srcpath, d, size - (d - dst))) return NULL; #else mbstowcs(d, srcpath, size - (d - dst)); #endif } else { saw_current = 1; ++d; #ifdef __CYGWIN__ if (cygwin_conv_path(CCP_POSIX_TO_WIN_W, ".", d, size - (d - dst))) return NULL; #else #ifdef _WIN32 GetCurrentDirectoryW(size - (d - dst), d); #else { char dir[PATH_MAX]; getcwd(dir, sizeof(dir)); mbstowcs(d, dir, size - (d - dst)); } #endif #endif } count++; #ifdef _WIN32 if (_wcsicmp(d, windows_dir) == 0) saw_windows = 1; if (_wcsicmp(d, system_dir) == 0) saw_system = 1; #endif d = wcschr(d, '\0'); *d = delim; } while (*src++); if (d < dst) d++; *d = '\0'; path_list = listp = malloc((count + 5) * sizeof(char *)); d = dst; *listp++ = d; wcscpy(d, L"{appdir}"); d += wcslen(d); *d++ = '\0'; #ifdef _WIN32 *listp++ = d; if (!is_64bit && syswow64_dir[0]) wcscpy(d, syswow64_dir); else wcscpy(d, system_dir); d += wcslen(d); *d++ = '\0'; *listp++ = d; wcscpy(d, windows_dir); d += wcslen(d); *d = '\0'; #endif src = srcpath; do { char *srcpath = srcbuf; char *s = strccpy(srcpath, &src, delim); size_t len = s - srcpath; if (len >= MAX_PATH) { errno = ENAMETOOLONG; return NULL; } /* Paths in Win32 path lists in the environment (%Path%), are often enclosed in quotes (usually paths with spaces). Trailing backslashes are common, too.Remove them. */ if (delim == ';' && len) { if (*srcpath == '"') { ++srcpath; *--s = '\0'; len -= 2; } while (len && s[-1] == '\\') { *--s = '\0'; --len; } } if (strcmp(srcbuf, ".") == 0) len = 0; if (len) { ++d; #ifdef __CYGWIN__ if (cygwin_conv_path(CCP_POSIX_TO_WIN_W, srcpath, d, size - (d - dst))) return NULL; #else mbstowcs(d, srcpath, size - (d - dst)); #endif } else { saw_current = 1; ++d; #ifdef __CYGWIN__ if (cygwin_conv_path(CCP_POSIX_TO_WIN_W, ".", d, size - (d - dst))) return NULL; #else #ifdef _WIN32 GetCurrentDirectoryW(size - (d - dst), d); #else { char dir[PATH_MAX]; getcwd(dir, sizeof(dir)); mbstowcs(d, dir, size - (d - dst)); } #endif #endif } #ifdef _WIN32 if (_wcsicmp(d, system_dir) == 0 && !is_64bit && syswow64_dir[0]) wcscpy(d, syswow64_dir); #endif *listp++ = d; d = wcschr(d, '\0'); *d = '\0'; } while (*src++); *d = '\0'; *listp = NULL; free(srcbuf); (void) saw_current; #ifdef _WIN32 (void) saw_system; (void) saw_windows; #endif return path_list; } /* dump imports of a single file Returns 0 if successful, !=0 else */ static int process_file(const wchar_t *filename, const char *internal_fn, const char *print_fn) { void *basepointer; /* Points to loaded PE file */ int number_of_sections; DWORD import_rva; /* RVA of import directory */ DWORD import_length; /* length of import directory */ const IMAGE_SECTION_HEADER *section_headers; /* an array of unknown length */ int import_index; /* index of section with import directory */ const void *section_address; const struct tag_header *header; int is_64bit = 0; wchar_t *dir; wchar_t *p1, *p2; wchar_t *path_w; wchar_t **search_path_split; wchar_t *search_path; ssize_t len; char *path; ULONGLONG ImageBase; /* first, load file */ basepointer = map_file(filename); if (!basepointer) { __extension__ fprintf(stderr, "%ls: cannot load file\n", filename); return 1; } /* get header pointer; validate a little bit */ header = (struct tag_header *) skip_dos_stub(filename, (IMAGE_DOS_HEADER *) basepointer); if (!header) { __extension__ fprintf(stderr, "%ls: cannot skip DOS stub\n", filename); UnmapViewOfFile(basepointer); return 2; } /* look there's enough space for PE headers */ if (IsBadReadPtr(header, sizeof(*header))) { __extension__ fprintf(stderr, "%ls: not enough space for PE headers\n", filename); UnmapViewOfFile(basepointer); return 3; } /* validate PE signature */ if (header->signature != IMAGE_NT_SIGNATURE) { __extension__ fprintf(stderr, "%ls: not a PE file\n", filename); UnmapViewOfFile(basepointer); return 4; } if (header->opt.head32.Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC && header->file_head.SizeOfOptionalHeader == sizeof(IMAGE_OPTIONAL_HEADER32)) { /* get number of sections */ number_of_sections = header->file_head.NumberOfSections; /* check there are sections... */ if (number_of_sections < 1) { UnmapViewOfFile(basepointer); return 5; } /* get RVA and length of import directory */ import_rva = header->opt.head32.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress; import_length = header->opt.head32.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size; ImageBase = header->opt.head32.ImageBase; } else if (header->opt.head64.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC && header->file_head.SizeOfOptionalHeader == sizeof(IMAGE_OPTIONAL_HEADER64)) { /* get number of sections */ number_of_sections = header->file_head.NumberOfSections; /* check there are sections... */ if (number_of_sections < 1) { UnmapViewOfFile(basepointer); return 5; } /* get RVA and length of import directory */ import_rva = header->opt.head64.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress; import_length = header->opt.head64.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size; ImageBase = header->opt.head64.ImageBase; is_64bit = 1; } else { __extension__ fprintf(stderr, "%ls: unknown PE file\n", filename); UnmapViewOfFile(basepointer); return 4; } if (print_fn) { if (pathname) { printf("%s\n", print_fn); } else if (shortname) { printf("%s\n", internal_fn); } else { #ifdef __MINGW32__ printf("\t%s => %s (0x%I64x)\n", internal_fn, print_fn, ImageBase); #else printf("\t%s => %s (0x%llx)\n", internal_fn, print_fn, (unsigned long long) ImageBase); #endif } } section_headers = (const IMAGE_SECTION_HEADER *)((char *)header + offsetof(struct tag_header, opt) + header->file_head.SizeOfOptionalHeader); /* validate there's enough space for section headers */ if (IsBadReadPtr(section_headers, number_of_sections * sizeof(IMAGE_SECTION_HEADER))) { __extension__ fprintf(stderr, "%ls: not enough space for section headers\n", filename); UnmapViewOfFile(basepointer); return 6; } /* check there's stuff to care about */ if (!import_rva || !import_length) { UnmapViewOfFile(basepointer); return 0; /* success! */ } /* get import directory pointer */ import_index = get_directory_index(import_rva, import_length, number_of_sections, section_headers); /* check directory was found */ if (import_index < 0) { __extension__ fprintf(stderr, "%ls: couldn't find import directory in sections\n", filename); UnmapViewOfFile(basepointer); return 7; } /* The pointer to the start of the import directory's section */ section_address = (char *) basepointer + section_headers[import_index].PointerToRawData; dir = _wcsdup(filename); p1 = wcsrchr(dir, '\\'); p2 = wcsrchr(dir, '/'); if (p1 == NULL || p2 > p1) p1 = p2; if (p1 == NULL) { free(dir); dir = _wcsdup(L"."); } else { p1[0] = 0; } /* * setup a path such that SearchPath uses the same * search order as LoadLibrary. * FIXME: this assumes current behavior of Windows * and may break if the behavior of LoadLibrary() changes * in future version of windows. */ path = getenv("PATH"); #if defined(__CYGWIN__) || !defined(_WIN32) len = strlen(path); if (len <= 0) print_errno_error_and_return("PATH"); len = len * 2 + 1 + 5 * MAX_PATH; path_w = malloc(len * sizeof(*path_w)); search_path_split = split_path(path_w, path, len, ':', is_64bit); #else len = mbstowcs(NULL, path, 0) + 1; if (len <= 0) print_errno_error_and_return("PATH"); len = len + 1 + 5 * MAX_PATH; path_w = malloc(len * sizeof(*path_w)); search_path_split = split_path(path_w, path, len, ';', is_64bit); #endif if (search_path_split == NULL) print_errno_error_and_return("PATH"); search_path_split[0] = dir; search_path = combine_path(search_path_split); free(path_w); if (dump_import_directory(search_path, section_address, section_headers[import_index].VirtualAddress, /* the last parameter is the pointer to the import directory: section address + (import RVA - section RVA) The difference is the offset of the import directory in the section */ (const IMAGE_IMPORT_DESCRIPTOR *) ((char *) section_address + import_rva - section_headers[import_index].VirtualAddress), is_64bit)) { free(dir); UnmapViewOfFile(basepointer); return 8; } free(dir); UnmapViewOfFile(basepointer); return 0; } static int report(const char *in_fn) { ssize_t len; wchar_t *fn_win; struct filelist *p; int ret; #ifdef __CYGWIN__ len = cygwin_conv_path(CCP_POSIX_TO_WIN_W, in_fn, NULL, 0); if (len <= 0) print_errno_error_and_return(in_fn); fn_win = malloc((len + 1) * sizeof(*fn_win)); if (cygwin_conv_path(CCP_POSIX_TO_WIN_W, in_fn, fn_win, len)) print_errno_error_and_return(in_fn); #else len = mbstowcs(NULL, in_fn, 0) + 1; if (len <= 0) print_errno_error_and_return(in_fn); fn_win = malloc((len + 1) * sizeof(*fn_win)); mbstowcs(fn_win, in_fn, len); #endif head = NULL; ret = process_file(fn_win, NULL, NULL); while (head) { free(head->name); p = head->next; free(head); head = p; } free(fn_win); return ret; } static struct option const longopts[] = { { "help", no_argument, NULL, 'h' }, { "verbose", no_argument, NULL, 'v' }, { "version", no_argument, NULL, 'V' }, { "data-relocs", no_argument, NULL, 'd' }, { "function-relocs", no_argument, NULL, 'r' }, { "unused", no_argument, NULL, 'u' }, { "short", no_argument, NULL, 's' }, { "path", no_argument, NULL, 'p' }, { "multiple", no_argument, NULL, 'm' }, { 0, no_argument, NULL, 0 } }; int main(int argc, char **argv) { int optch; int ret = 0; int multiple; char *fn; /* Use locale from environment. If not set or set to "C", use UTF-8. */ setlocale(LC_CTYPE, ""); if (!strcmp(setlocale(LC_CTYPE, NULL), "C")) setlocale(LC_CTYPE, "en_US.UTF-8"); multiple = 0; shortname = 0; pathname = 0; while ((optch = getopt_long(argc, argv, "mdhprsuvV", longopts, NULL)) != -1) { switch (optch) { case 'd': case 'r': case 'u': error("option not implemented `-%c'", optch); exit(1); break; case 'v': break; case 'm': multiple = 1; break; case 's': shortname = 1; break; case 'p': pathname = 1; break; case 'h': print_usage(); return 0; case 'V': print_version(); return 0; default: fprintf (stderr, "Try `%s --help' for more information.\n", program_name); return 1; } } if ((argc - optind) <= 0) error("missing file arguments"); if ((argc - optind) > 1) multiple = 1; #ifdef _WIN32 p_Wow64DisableWow64FsRedirection = (PFNWOW64DISABLEWOW64FSREDIRECTION)GetProcAddress(GetModuleHandleA("kernel32.dll"), "Wow64DisableWow64FsRedirection"); p_Wow64RevertWow64FsRedirection = (PFNWOW64REVERTWOW64FSREDIRECTION)GetProcAddress(GetModuleHandleA("kernel32.dll"), "Wow64RevertWow64FsRedirection"); p_SetDllDirectoryW = (PFNSETDLLDIRECTORYW)GetProcAddress(GetModuleHandleA("kernel32.dll"), "SetDllDirectoryW"); p_GetFinalPathNameByHandleW = (PFNGETFINALPATHNAMEBYHANDLEW)GetProcAddress(GetModuleHandleA("kernel32.dll"), "GetFinalPathNameByHandleW"); p_GetSystemWow64DirectoryW = (PFNGETSYSTEMWOW64DIRECTORYW)GetProcAddress(GetModuleHandleA("kernel32.dll"), "GetSystemWow64DirectoryW"); #endif while (optind < argc) { fn = argv[optind++]; if (multiple) printf("%s:\n", fn); if (report(fn) != 0) { ret = 1; } } exit(ret); return ret; } aranym-1.1.0/tools/glibc-check0000775000175000017500000000257613454637622014435 0ustar joyjoy#!/bin/bash # This scripts lets you check which minimum GLIBC version an executable requires. # Simply run './glibc-check.sh path/to/your/binary' # # You can set `MAX_VER` however low you want, although I (fasterthanlime) # feel like `2.13` is a good target (For reference, Ubuntu 12.04 has GLIBC 2.15) MAX_VER=2.11 BINARY="$1" # Version comparison function in bash vermake() { local i local IFS=. local ver set -- $1 ver=0 for i in "$1" "$2" "$3"; do if [ -z "$i" ]; then i=0; fi ver=`expr "$ver" "*" 1000 "+" "$i"` done echo $ver } vercomp () { if [ "$1" = "$2" ] then return 0 fi local ver1=`vermake $1` local ver2=`vermake $2` if [ $ver1 -gt $ver2 ]; then return 1; fi if [ $ver1 -lt $ver2 ]; then return 2; fi return 0 } IFS=" " VERS=`objdump -T "$BINARY" | grep GLIBC_ | sed 's/.*GLIBC_\([.0-9]*\).*/\1/g' | sort -u` for VER in $VERS; do vercomp $VER $MAX_VER COMP=$? if [ $COMP -eq 1 ]; then echo "Error! ${BINARY} requests GLIBC ${VER}, which is higher than target ${MAX_VER}" echo "Affected symbols:" objdump -T "$BINARY" | grep -F GLIBC_${VER} echo "Looking for symbols in libraries..." for LIBRARY in `ldd "$BINARY" | cut -d ' ' -f 3`; do echo "$LIBRARY" objdump -T "$LIBRARY" | grep -F GLIBC_${VER} done exit 1 else echo "Found version ${VER}" fi done aranym-1.1.0/tools/glfuncs.h0000664000175000017500000103674213454637622014171 0ustar joyjoy/* * -- DO NOT EDIT -- * Generated by dyngl.pl from /usr/include/GL/gl.h /usr/include/GL/glext.h /usr/include/GL/osmesa.h */ GLAPI void APIENTRY OSMesaColorClamp(GLboolean32 enable); GLAPI OSMesaContext APIENTRY OSMesaCreateContext(GLenum format, OSMesaContext sharelist); GLAPI OSMesaContext APIENTRY OSMesaCreateContextAttribs(const GLint *attribList, OSMesaContext sharelist); GLAPI OSMesaContext APIENTRY OSMesaCreateContextExt(GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist); GLAPI void APIENTRY OSMesaDestroyContext(OSMesaContext ctx); GLAPI GLboolean APIENTRY OSMesaGetColorBuffer(OSMesaContext c, GLint *width, GLint *height, GLint *format, void * *buffer); GLAPI OSMesaContext APIENTRY OSMesaGetCurrentContext(void); GLAPI GLboolean APIENTRY OSMesaGetDepthBuffer(OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void * *buffer); GLAPI void APIENTRY OSMesaGetIntegerv(GLint pname, GLint *value); GLAPI OSMESAproc APIENTRY OSMesaGetProcAddress(const char *funcName); GLAPI GLboolean APIENTRY OSMesaMakeCurrent(OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height); GLAPI void APIENTRY OSMesaPixelStore(GLint pname, GLint value); GLAPI void APIENTRY OSMesaPostprocess(OSMesaContext osmesa, const char *filter, GLuint enable_value); GLAPI void APIENTRY glAccum(GLenum op, GLfloat value); GLAPI void APIENTRY glAccumxOES(GLenum op, GLfixed value); GLAPI GLboolean APIENTRY glAcquireKeyedMutexWin32EXT(GLuint memory, GLuint64 key, GLuint timeout); GLAPI void APIENTRY glActiveProgramEXT(GLuint program); GLAPI void APIENTRY glActiveShaderProgram(GLuint pipeline, GLuint program); GLAPI void APIENTRY glActiveStencilFaceEXT(GLenum face); GLAPI void APIENTRY glActiveTexture(GLenum texture); GLAPI void APIENTRY glActiveTextureARB(GLenum texture); GLAPI void APIENTRY glActiveVaryingNV(GLuint program, const GLchar *name); GLAPI void APIENTRY glAddSwapHintRectWIN(GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glAlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); GLAPI void APIENTRY glAlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); GLAPI void APIENTRY glAlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); GLAPI void APIENTRY glAlphaFunc(GLenum func, GLclampf ref); GLAPI void APIENTRY glAlphaFuncxOES(GLenum func, GLfixed ref); GLAPI void APIENTRY glAlphaToCoverageDitherControlNV(GLenum mode); GLAPI void APIENTRY glApplyFramebufferAttachmentCMAAINTEL(void); GLAPI void APIENTRY glApplyTextureEXT(GLenum mode); GLAPI GLboolean APIENTRY glAreProgramsResidentNV(GLsizei n, const GLuint *programs, GLboolean *residences); GLAPI GLboolean APIENTRY glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); GLAPI GLboolean APIENTRY glAreTexturesResidentEXT(GLsizei n, const GLuint *textures, GLboolean *residences); GLAPI void APIENTRY glArrayElement(GLint i); GLAPI void APIENTRY glArrayElementEXT(GLint i); GLAPI void APIENTRY glArrayObjectATI(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); GLAPI void APIENTRY glAsyncMarkerSGIX(GLuint marker); GLAPI void APIENTRY glAttachObjectARB(GLhandleARB containerObj, GLhandleARB obj); GLAPI void APIENTRY glAttachShader(GLuint program, GLuint shader); GLAPI void APIENTRY glBegin(GLenum mode); GLAPI void APIENTRY glBeginConditionalRender(GLuint id, GLenum mode); GLAPI void APIENTRY glBeginConditionalRenderNV(GLuint id, GLenum mode); GLAPI void APIENTRY glBeginConditionalRenderNVX(GLuint id); GLAPI void APIENTRY glBeginFragmentShaderATI(void); GLAPI void APIENTRY glBeginOcclusionQueryNV(GLuint id); GLAPI void APIENTRY glBeginPerfMonitorAMD(GLuint monitor); GLAPI void APIENTRY glBeginPerfQueryINTEL(GLuint queryHandle); GLAPI void APIENTRY glBeginQuery(GLenum target, GLuint id); GLAPI void APIENTRY glBeginQueryARB(GLenum target, GLuint id); GLAPI void APIENTRY glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); GLAPI void APIENTRY glBeginTransformFeedback(GLenum primitiveMode); GLAPI void APIENTRY glBeginTransformFeedbackEXT(GLenum primitiveMode); GLAPI void APIENTRY glBeginTransformFeedbackNV(GLenum primitiveMode); GLAPI void APIENTRY glBeginVertexShaderEXT(void); GLAPI void APIENTRY glBeginVideoCaptureNV(GLuint video_capture_slot); GLAPI void APIENTRY glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); GLAPI void APIENTRY glBindAttribLocationARB(GLhandleARB programObj, GLuint index, const GLcharARB *name); GLAPI void APIENTRY glBindBuffer(GLenum target, GLuint buffer); GLAPI void APIENTRY glBindBufferARB(GLenum target, GLuint buffer); GLAPI void APIENTRY glBindBufferBase(GLenum target, GLuint index, GLuint buffer); GLAPI void APIENTRY glBindBufferBaseEXT(GLenum target, GLuint index, GLuint buffer); GLAPI void APIENTRY glBindBufferBaseNV(GLenum target, GLuint index, GLuint buffer); GLAPI void APIENTRY glBindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset); GLAPI void APIENTRY glBindBufferOffsetNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset); GLAPI void APIENTRY glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); GLAPI void APIENTRY glBindBufferRangeEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); GLAPI void APIENTRY glBindBufferRangeNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); GLAPI void APIENTRY glBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers); GLAPI void APIENTRY glBindBuffersRange(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); GLAPI void APIENTRY glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); GLAPI void APIENTRY glBindFragDataLocationEXT(GLuint program, GLuint color, const GLchar *name); GLAPI void APIENTRY glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); GLAPI void APIENTRY glBindFragmentShaderATI(GLuint id); GLAPI void APIENTRY glBindFramebuffer(GLenum target, GLuint framebuffer); GLAPI void APIENTRY glBindFramebufferEXT(GLenum target, GLuint framebuffer); GLAPI void APIENTRY glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLenum format); GLAPI void APIENTRY glBindImageTextureEXT(GLuint index, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLint format); GLAPI void APIENTRY glBindImageTextures(GLuint first, GLsizei count, const GLuint *textures); GLAPI GLuint APIENTRY glBindLightParameterEXT(GLenum light, GLenum value); GLAPI GLuint APIENTRY glBindMaterialParameterEXT(GLenum face, GLenum value); GLAPI void APIENTRY glBindMultiTextureEXT(GLenum texunit, GLenum target, GLuint texture); GLAPI GLuint APIENTRY glBindParameterEXT(GLenum value); GLAPI void APIENTRY glBindProgramARB(GLenum target, GLuint program); GLAPI void APIENTRY glBindProgramNV(GLenum target, GLuint id); GLAPI void APIENTRY glBindProgramPipeline(GLuint pipeline); GLAPI void APIENTRY glBindRenderbuffer(GLenum target, GLuint renderbuffer); GLAPI void APIENTRY glBindRenderbufferEXT(GLenum target, GLuint renderbuffer); GLAPI void APIENTRY glBindSampler(GLuint unit, GLuint sampler); GLAPI void APIENTRY glBindSamplers(GLuint first, GLsizei count, const GLuint *samplers); GLAPI GLuint APIENTRY glBindTexGenParameterEXT(GLenum unit, GLenum coord, GLenum value); GLAPI void APIENTRY glBindTexture(GLenum target, GLuint texture); GLAPI void APIENTRY glBindTextureEXT(GLenum target, GLuint texture); GLAPI void APIENTRY glBindTextureUnit(GLuint unit, GLuint texture); GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT(GLenum unit, GLenum value); GLAPI void APIENTRY glBindTextures(GLuint first, GLsizei count, const GLuint *textures); GLAPI void APIENTRY glBindTransformFeedback(GLenum target, GLuint id); GLAPI void APIENTRY glBindTransformFeedbackNV(GLenum target, GLuint id); GLAPI void APIENTRY glBindVertexArray(GLuint array); GLAPI void APIENTRY glBindVertexArrayAPPLE(GLuint array); GLAPI void APIENTRY glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); GLAPI void APIENTRY glBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); GLAPI void APIENTRY glBindVertexShaderEXT(GLuint id); GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); GLAPI void APIENTRY glBinormal3bEXT(GLbyte32 bx, GLbyte32 by, GLbyte32 bz); GLAPI void APIENTRY glBinormal3bvEXT(const GLbyte *v); GLAPI void APIENTRY glBinormal3dEXT(GLdouble bx, GLdouble by, GLdouble bz); GLAPI void APIENTRY glBinormal3dvEXT(const GLdouble *v); GLAPI void APIENTRY glBinormal3fEXT(GLfloat bx, GLfloat by, GLfloat bz); GLAPI void APIENTRY glBinormal3fvEXT(const GLfloat *v); GLAPI void APIENTRY glBinormal3iEXT(GLint bx, GLint by, GLint bz); GLAPI void APIENTRY glBinormal3ivEXT(const GLint *v); GLAPI void APIENTRY glBinormal3sEXT(GLshort32 bx, GLshort32 by, GLshort32 bz); GLAPI void APIENTRY glBinormal3svEXT(const GLshort *v); GLAPI void APIENTRY glBinormalPointerEXT(GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); GLAPI void APIENTRY glBitmapxOES(GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); GLAPI void APIENTRY glBlendBarrierKHR(void); GLAPI void APIENTRY glBlendBarrierNV(void); GLAPI void APIENTRY glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); GLAPI void APIENTRY glBlendColorEXT(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); GLAPI void APIENTRY glBlendColorxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); GLAPI void APIENTRY glBlendEquation(GLenum mode); GLAPI void APIENTRY glBlendEquationEXT(GLenum mode); GLAPI void APIENTRY glBlendEquationIndexedAMD(GLuint buf, GLenum mode); GLAPI void APIENTRY glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); GLAPI void APIENTRY glBlendEquationSeparateATI(GLenum equationRGB, GLenum equationAlpha); GLAPI void APIENTRY glBlendEquationSeparateEXT(GLenum modeRGB, GLenum modeAlpha); GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD(GLuint buf, GLenum modeRGB, GLenum modeAlpha); GLAPI void APIENTRY glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha); GLAPI void APIENTRY glBlendEquationSeparateiARB(GLuint buf, GLenum modeRGB, GLenum modeAlpha); GLAPI void APIENTRY glBlendEquationi(GLuint buf, GLenum mode); GLAPI void APIENTRY glBlendEquationiARB(GLuint buf, GLenum mode); GLAPI void APIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor); GLAPI void APIENTRY glBlendFuncIndexedAMD(GLuint buf, GLenum src, GLenum dst); GLAPI void APIENTRY glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); GLAPI void APIENTRY glBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); GLAPI void APIENTRY glBlendFuncSeparateINGR(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); GLAPI void APIENTRY glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); GLAPI void APIENTRY glBlendFuncSeparateiARB(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); GLAPI void APIENTRY glBlendFunci(GLuint buf, GLenum src, GLenum dst); GLAPI void APIENTRY glBlendFunciARB(GLuint buf, GLenum src, GLenum dst); GLAPI void APIENTRY glBlendParameteriNV(GLenum pname, GLint value); GLAPI void APIENTRY glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); GLAPI void APIENTRY glBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); GLAPI void APIENTRY glBlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); GLAPI void APIENTRY glBufferAddressRangeNV(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); GLAPI void APIENTRY glBufferData(GLenum target, GLsizeiptr size, const void *data, GLenum usage); GLAPI void APIENTRY glBufferDataARB(GLenum target, GLsizeiptrARB size, const void *data, GLenum usage); GLAPI void APIENTRY glBufferPageCommitmentARB(GLenum target, GLintptr offset, GLsizeiptr size, GLboolean32 commit); GLAPI void APIENTRY glBufferParameteriAPPLE(GLenum target, GLenum pname, GLint param); GLAPI void APIENTRY glBufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); GLAPI void APIENTRY glBufferStorageExternalEXT(GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); GLAPI void APIENTRY glBufferStorageMemEXT(GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); GLAPI void APIENTRY glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); GLAPI void APIENTRY glBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data); GLAPI void APIENTRY glCallCommandListNV(GLuint list); GLAPI void APIENTRY glCallList(GLuint list); GLAPI void APIENTRY glCallLists(GLsizei n, GLenum type, const GLvoid *lists); GLAPI GLenum APIENTRY glCheckFramebufferStatus(GLenum target); GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT(GLenum target); GLAPI GLenum APIENTRY glCheckNamedFramebufferStatus(GLuint framebuffer, GLenum target); GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT(GLuint framebuffer, GLenum target); GLAPI void APIENTRY glClampColor(GLenum target, GLenum clamp); GLAPI void APIENTRY glClampColorARB(GLenum target, GLenum clamp); GLAPI void APIENTRY glClear(GLbitfield mask); GLAPI void APIENTRY glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); GLAPI void APIENTRY glClearAccumxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); GLAPI void APIENTRY glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); GLAPI void APIENTRY glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); GLAPI void APIENTRY glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); GLAPI void APIENTRY glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); GLAPI void APIENTRY glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); GLAPI void APIENTRY glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); GLAPI void APIENTRY glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); GLAPI void APIENTRY glClearColorIiEXT(GLint red, GLint green, GLint blue, GLint alpha); GLAPI void APIENTRY glClearColorIuiEXT(GLuint red, GLuint green, GLuint blue, GLuint alpha); GLAPI void APIENTRY glClearColorxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); GLAPI void APIENTRY glClearDebugLogMESA(GLhandleARB obj, GLenum logType, GLenum shaderType); GLAPI void APIENTRY glClearDepth(GLclampd depth); GLAPI void APIENTRY glClearDepthdNV(GLdouble depth); GLAPI void APIENTRY glClearDepthf(GLfloat d); GLAPI void APIENTRY glClearDepthfOES(GLclampf depth); GLAPI void APIENTRY glClearDepthxOES(GLfixed depth); GLAPI void APIENTRY glClearIndex(GLfloat c); GLAPI void APIENTRY glClearNamedBufferData(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); GLAPI void APIENTRY glClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); GLAPI void APIENTRY glClearNamedBufferSubData(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); GLAPI void APIENTRY glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); GLAPI void APIENTRY glClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); GLAPI void APIENTRY glClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); GLAPI void APIENTRY glClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); GLAPI void APIENTRY glClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); GLAPI void APIENTRY glClearStencil(GLint s); GLAPI void APIENTRY glClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data); GLAPI void APIENTRY glClearTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); GLAPI void APIENTRY glClientActiveTexture(GLenum texture); GLAPI void APIENTRY glClientActiveTextureARB(GLenum texture); GLAPI void APIENTRY glClientActiveVertexStreamATI(GLenum stream); GLAPI void APIENTRY glClientAttribDefaultEXT(GLbitfield mask); GLAPI GLenum APIENTRY glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); GLAPI void APIENTRY glClipControl(GLenum origin, GLenum depth); GLAPI void APIENTRY glClipPlane(GLenum plane, const GLdouble *equation); GLAPI void APIENTRY glClipPlanefOES(GLenum plane, const GLfloat *equation); GLAPI void APIENTRY glClipPlanexOES(GLenum plane, const GLfixed *equation); GLAPI void APIENTRY glColor3b(GLbyte32 red, GLbyte32 green, GLbyte32 blue); GLAPI void APIENTRY glColor3bv(const GLbyte *v); GLAPI void APIENTRY glColor3d(GLdouble red, GLdouble green, GLdouble blue); GLAPI void APIENTRY glColor3dv(const GLdouble *v); GLAPI void APIENTRY glColor3f(GLfloat red, GLfloat green, GLfloat blue); GLAPI void APIENTRY glColor3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glColor3fVertex3fvSUN(const GLfloat *c, const GLfloat *v); GLAPI void APIENTRY glColor3fv(const GLfloat *v); GLAPI void APIENTRY glColor3hNV(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue); GLAPI void APIENTRY glColor3hvNV(const GLhalfNV *v); GLAPI void APIENTRY glColor3i(GLint red, GLint green, GLint blue); GLAPI void APIENTRY glColor3iv(const GLint *v); GLAPI void APIENTRY glColor3s(GLshort32 red, GLshort32 green, GLshort32 blue); GLAPI void APIENTRY glColor3sv(const GLshort *v); GLAPI void APIENTRY glColor3ub(GLubyte32 red, GLubyte32 green, GLubyte32 blue); GLAPI void APIENTRY glColor3ubv(const GLubyte *v); GLAPI void APIENTRY glColor3ui(GLuint red, GLuint green, GLuint blue); GLAPI void APIENTRY glColor3uiv(const GLuint *v); GLAPI void APIENTRY glColor3us(GLushort32 red, GLushort32 green, GLushort32 blue); GLAPI void APIENTRY glColor3usv(const GLushort *v); GLAPI void APIENTRY glColor3xOES(GLfixed red, GLfixed green, GLfixed blue); GLAPI void APIENTRY glColor3xvOES(const GLfixed *components); GLAPI void APIENTRY glColor4b(GLbyte32 red, GLbyte32 green, GLbyte32 blue, GLbyte32 alpha); GLAPI void APIENTRY glColor4bv(const GLbyte *v); GLAPI void APIENTRY glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); GLAPI void APIENTRY glColor4dv(const GLdouble *v); GLAPI void APIENTRY glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN(const GLfloat *c, const GLfloat *n, const GLfloat *v); GLAPI void APIENTRY glColor4fv(const GLfloat *v); GLAPI void APIENTRY glColor4hNV(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue, GLhalfNV32 alpha); GLAPI void APIENTRY glColor4hvNV(const GLhalfNV *v); GLAPI void APIENTRY glColor4i(GLint red, GLint green, GLint blue, GLint alpha); GLAPI void APIENTRY glColor4iv(const GLint *v); GLAPI void APIENTRY glColor4s(GLshort32 red, GLshort32 green, GLshort32 blue, GLshort32 alpha); GLAPI void APIENTRY glColor4sv(const GLshort *v); GLAPI void APIENTRY glColor4ub(GLubyte32 red, GLubyte32 green, GLubyte32 blue, GLubyte32 alpha); GLAPI void APIENTRY glColor4ubVertex2fSUN(GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y); GLAPI void APIENTRY glColor4ubVertex2fvSUN(const GLubyte *c, const GLfloat *v); GLAPI void APIENTRY glColor4ubVertex3fSUN(GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glColor4ubVertex3fvSUN(const GLubyte *c, const GLfloat *v); GLAPI void APIENTRY glColor4ubv(const GLubyte *v); GLAPI void APIENTRY glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); GLAPI void APIENTRY glColor4uiv(const GLuint *v); GLAPI void APIENTRY glColor4us(GLushort32 red, GLushort32 green, GLushort32 blue, GLushort32 alpha); GLAPI void APIENTRY glColor4usv(const GLushort *v); GLAPI void APIENTRY glColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); GLAPI void APIENTRY glColor4xvOES(const GLfixed *components); GLAPI void APIENTRY glColorFormatNV(GLint size, GLenum type, GLsizei stride); GLAPI void APIENTRY glColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); GLAPI void APIENTRY glColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); GLAPI void APIENTRY glColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); GLAPI void APIENTRY glColorMask(GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha); GLAPI void APIENTRY glColorMaskIndexedEXT(GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a); GLAPI void APIENTRY glColorMaski(GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a); GLAPI void APIENTRY glColorMaterial(GLenum face, GLenum mode); GLAPI void APIENTRY glColorP3ui(GLenum type, GLuint color); GLAPI void APIENTRY glColorP3uiv(GLenum type, const GLuint *color); GLAPI void APIENTRY glColorP4ui(GLenum type, GLuint color); GLAPI void APIENTRY glColorP4uiv(GLenum type, const GLuint *color); GLAPI void APIENTRY glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void APIENTRY glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); GLAPI void APIENTRY glColorPointerListIBM(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride); GLAPI void APIENTRY glColorPointervINTEL(GLint size, GLenum type, const void * *pointer); GLAPI void APIENTRY glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); GLAPI void APIENTRY glColorSubTableEXT(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); GLAPI void APIENTRY glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); GLAPI void APIENTRY glColorTableEXT(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table); GLAPI void APIENTRY glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glColorTableParameterfvSGI(GLenum target, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glColorTableParameterivSGI(GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glColorTableSGI(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); GLAPI void APIENTRY glCombinerInputNV(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); GLAPI void APIENTRY glCombinerOutputNV(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean32 abDotProduct, GLboolean32 cdDotProduct, GLboolean32 muxSum); GLAPI void APIENTRY glCombinerParameterfNV(GLenum pname, GLfloat param); GLAPI void APIENTRY glCombinerParameterfvNV(GLenum pname, const GLfloat *params); GLAPI void APIENTRY glCombinerParameteriNV(GLenum pname, GLint param); GLAPI void APIENTRY glCombinerParameterivNV(GLenum pname, const GLint *params); GLAPI void APIENTRY glCombinerStageParameterfvNV(GLenum stage, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glCommandListSegmentsNV(GLuint list, GLuint segments); GLAPI void APIENTRY glCompileCommandListNV(GLuint list); GLAPI void APIENTRY glCompileShader(GLuint shader); GLAPI void APIENTRY glCompileShaderARB(GLhandleARB shaderObj); GLAPI void APIENTRY glCompileShaderIncludeARB(GLuint shader, GLsizei count, const GLchar *const *path, const GLint *length); GLAPI void APIENTRY glCompressedMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); GLAPI void APIENTRY glCompressedMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); GLAPI void APIENTRY glCompressedMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); GLAPI void APIENTRY glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTexImage1DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTexImage2DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTexImage3DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); GLAPI void APIENTRY glCompressedTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); GLAPI void APIENTRY glCompressedTextureImage3DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); GLAPI void APIENTRY glCompressedTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); GLAPI void APIENTRY glCompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); GLAPI void APIENTRY glCompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); GLAPI void APIENTRY glCompressedTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); GLAPI void APIENTRY glConservativeRasterParameterfNV(GLenum pname, GLfloat value); GLAPI void APIENTRY glConservativeRasterParameteriNV(GLenum pname, GLint param); GLAPI void APIENTRY glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); GLAPI void APIENTRY glConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); GLAPI void APIENTRY glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); GLAPI void APIENTRY glConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); GLAPI void APIENTRY glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); GLAPI void APIENTRY glConvolutionParameterfEXT(GLenum target, GLenum pname, GLfloat params); GLAPI void APIENTRY glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glConvolutionParameterfvEXT(GLenum target, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glConvolutionParameteri(GLenum target, GLenum pname, GLint params); GLAPI void APIENTRY glConvolutionParameteriEXT(GLenum target, GLenum pname, GLint params); GLAPI void APIENTRY glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glConvolutionParameterivEXT(GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glConvolutionParameterxOES(GLenum target, GLenum pname, GLfixed param); GLAPI void APIENTRY glConvolutionParameterxvOES(GLenum target, GLenum pname, const GLfixed *params); GLAPI void APIENTRY glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); GLAPI void APIENTRY glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); GLAPI void APIENTRY glCopyColorSubTableEXT(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); GLAPI void APIENTRY glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); GLAPI void APIENTRY glCopyColorTableSGI(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); GLAPI void APIENTRY glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); GLAPI void APIENTRY glCopyConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); GLAPI void APIENTRY glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glCopyConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); GLAPI void APIENTRY glCopyImageSubDataNV(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); GLAPI void APIENTRY glCopyMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); GLAPI void APIENTRY glCopyMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glCopyNamedBufferSubData(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); GLAPI void APIENTRY glCopyPathNV(GLuint resultPath, GLuint srcPath); GLAPI void APIENTRY glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); GLAPI void APIENTRY glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); GLAPI void APIENTRY glCopyTexImage1DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); GLAPI void APIENTRY glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); GLAPI void APIENTRY glCopyTexImage2DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); GLAPI void APIENTRY glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); GLAPI void APIENTRY glCopyTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); GLAPI void APIENTRY glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glCopyTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glCopyTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glCopyTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); GLAPI void APIENTRY glCopyTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); GLAPI void APIENTRY glCopyTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); GLAPI void APIENTRY glCopyTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); GLAPI void APIENTRY glCopyTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glCopyTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glCopyTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glCopyTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); GLAPI void APIENTRY glCoverFillPathNV(GLuint path, GLenum coverMode); GLAPI void APIENTRY glCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); GLAPI void APIENTRY glCoverStrokePathNV(GLuint path, GLenum coverMode); GLAPI void APIENTRY glCoverageModulationNV(GLenum components); GLAPI void APIENTRY glCoverageModulationTableNV(GLsizei n, const GLfloat *v); GLAPI void APIENTRY glCreateBuffers(GLsizei n, GLuint *buffers); GLAPI void APIENTRY glCreateCommandListsNV(GLsizei n, GLuint *lists); GLAPI GLhandleARB APIENTRY glCreateDebugObjectMESA(void); GLAPI void APIENTRY glCreateFramebuffers(GLsizei n, GLuint *framebuffers); GLAPI void APIENTRY glCreateMemoryObjectsEXT(GLsizei n, GLuint *memoryObjects); GLAPI void APIENTRY glCreatePerfQueryINTEL(GLuint queryId, GLuint *queryHandle); GLAPI GLuint APIENTRY glCreateProgram(void); GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB(void); GLAPI void APIENTRY glCreateProgramPipelines(GLsizei n, GLuint *pipelines); GLAPI void APIENTRY glCreateQueries(GLenum target, GLsizei n, GLuint *ids); GLAPI void APIENTRY glCreateRenderbuffers(GLsizei n, GLuint *renderbuffers); GLAPI void APIENTRY glCreateSamplers(GLsizei n, GLuint *samplers); GLAPI GLuint APIENTRY glCreateShader(GLenum type); GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB(GLenum shaderType); GLAPI GLuint APIENTRY glCreateShaderProgramEXT(GLenum type, const GLchar *string); GLAPI GLuint APIENTRY glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const *strings); GLAPI void APIENTRY glCreateStatesNV(GLsizei n, GLuint *states); GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB(struct _cl_context *context, struct _cl_event *event, GLbitfield flags); GLAPI void APIENTRY glCreateTextures(GLenum target, GLsizei n, GLuint *textures); GLAPI void APIENTRY glCreateTransformFeedbacks(GLsizei n, GLuint *ids); GLAPI void APIENTRY glCreateVertexArrays(GLsizei n, GLuint *arrays); GLAPI void APIENTRY glCullFace(GLenum mode); GLAPI void APIENTRY glCullParameterdvEXT(GLenum pname, GLdouble *params); GLAPI void APIENTRY glCullParameterfvEXT(GLenum pname, GLfloat *params); GLAPI void APIENTRY glCurrentPaletteMatrixARB(GLint index); GLAPI void APIENTRY glDebugMessageCallback(GLDEBUGPROC callback, const void *userParam); GLAPI void APIENTRY glDebugMessageCallbackAMD(GLDEBUGPROCAMD callback, void *userParam); GLAPI void APIENTRY glDebugMessageCallbackARB(GLDEBUGPROCARB callback, const void *userParam); GLAPI void APIENTRY glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled); GLAPI void APIENTRY glDebugMessageControlARB(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled); GLAPI void APIENTRY glDebugMessageEnableAMD(GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled); GLAPI void APIENTRY glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); GLAPI void APIENTRY glDebugMessageInsertAMD(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); GLAPI void APIENTRY glDebugMessageInsertARB(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); GLAPI void APIENTRY glDeformSGIX(GLbitfield mask); GLAPI void APIENTRY glDeformationMap3dSGIX(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); GLAPI void APIENTRY glDeformationMap3fSGIX(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); GLAPI void APIENTRY glDeleteAsyncMarkersSGIX(GLuint marker, GLsizei range); GLAPI void APIENTRY glDeleteBuffers(GLsizei n, const GLuint *buffers); GLAPI void APIENTRY glDeleteBuffersARB(GLsizei n, const GLuint *buffers); GLAPI void APIENTRY glDeleteCommandListsNV(GLsizei n, const GLuint *lists); GLAPI void APIENTRY glDeleteFencesAPPLE(GLsizei n, const GLuint *fences); GLAPI void APIENTRY glDeleteFencesNV(GLsizei n, const GLuint *fences); GLAPI void APIENTRY glDeleteFragmentShaderATI(GLuint id); GLAPI void APIENTRY glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); GLAPI void APIENTRY glDeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers); GLAPI void APIENTRY glDeleteLists(GLuint list, GLsizei range); GLAPI void APIENTRY glDeleteMemoryObjectsEXT(GLsizei n, const GLuint *memoryObjects); GLAPI void APIENTRY glDeleteNamedStringARB(GLint namelen, const GLchar *name); GLAPI void APIENTRY glDeleteNamesAMD(GLenum identifier, GLuint num, const GLuint *names); GLAPI void APIENTRY glDeleteObjectARB(GLhandleARB obj); GLAPI void APIENTRY glDeleteObjectBufferATI(GLuint buffer); GLAPI void APIENTRY glDeleteOcclusionQueriesNV(GLsizei n, const GLuint *ids); GLAPI void APIENTRY glDeletePathsNV(GLuint path, GLsizei range); GLAPI void APIENTRY glDeletePerfMonitorsAMD(GLsizei n, GLuint *monitors); GLAPI void APIENTRY glDeletePerfQueryINTEL(GLuint queryHandle); GLAPI void APIENTRY glDeleteProgram(GLuint program); GLAPI void APIENTRY glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines); GLAPI void APIENTRY glDeleteProgramsARB(GLsizei n, const GLuint *programs); GLAPI void APIENTRY glDeleteProgramsNV(GLsizei n, const GLuint *programs); GLAPI void APIENTRY glDeleteQueries(GLsizei n, const GLuint *ids); GLAPI void APIENTRY glDeleteQueriesARB(GLsizei n, const GLuint *ids); GLAPI void APIENTRY glDeleteQueryResourceTagNV(GLsizei n, const GLint *tagIds); GLAPI void APIENTRY glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); GLAPI void APIENTRY glDeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers); GLAPI void APIENTRY glDeleteSamplers(GLsizei count, const GLuint *samplers); GLAPI void APIENTRY glDeleteSemaphoresEXT(GLsizei n, const GLuint *semaphores); GLAPI void APIENTRY glDeleteShader(GLuint shader); GLAPI void APIENTRY glDeleteStatesNV(GLsizei n, const GLuint *states); GLAPI void APIENTRY glDeleteSync(GLsync sync); GLAPI void APIENTRY glDeleteTextures(GLsizei n, const GLuint *textures); GLAPI void APIENTRY glDeleteTexturesEXT(GLsizei n, const GLuint *textures); GLAPI void APIENTRY glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids); GLAPI void APIENTRY glDeleteTransformFeedbacksNV(GLsizei n, const GLuint *ids); GLAPI void APIENTRY glDeleteVertexArrays(GLsizei n, const GLuint *arrays); GLAPI void APIENTRY glDeleteVertexArraysAPPLE(GLsizei n, const GLuint *arrays); GLAPI void APIENTRY glDeleteVertexShaderEXT(GLuint id); GLAPI void APIENTRY glDepthBoundsEXT(GLclampd zmin, GLclampd zmax); GLAPI void APIENTRY glDepthBoundsdNV(GLdouble zmin, GLdouble zmax); GLAPI void APIENTRY glDepthFunc(GLenum func); GLAPI void APIENTRY glDepthMask(GLboolean32 flag); GLAPI void APIENTRY glDepthRange(GLclampd zNear, GLclampd zFar); GLAPI void APIENTRY glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v); GLAPI void APIENTRY glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f); GLAPI void APIENTRY glDepthRangedNV(GLdouble zNear, GLdouble zFar); GLAPI void APIENTRY glDepthRangef(GLfloat n, GLfloat f); GLAPI void APIENTRY glDepthRangefOES(GLclampf n, GLclampf f); GLAPI void APIENTRY glDepthRangexOES(GLfixed n, GLfixed f); GLAPI void APIENTRY glDetachObjectARB(GLhandleARB containerObj, GLhandleARB attachedObj); GLAPI void APIENTRY glDetachShader(GLuint program, GLuint shader); GLAPI void APIENTRY glDetailTexFuncSGIS(GLenum target, GLsizei n, const GLfloat *points); GLAPI void APIENTRY glDisable(GLenum cap); GLAPI void APIENTRY glDisableClientState(GLenum array); GLAPI void APIENTRY glDisableClientStateIndexedEXT(GLenum array, GLuint index); GLAPI void APIENTRY glDisableClientStateiEXT(GLenum array, GLuint index); GLAPI void APIENTRY glDisableIndexedEXT(GLenum target, GLuint index); GLAPI void APIENTRY glDisableTraceMESA(GLbitfield mask); GLAPI void APIENTRY glDisableVariantClientStateEXT(GLuint id); GLAPI void APIENTRY glDisableVertexArrayAttrib(GLuint vaobj, GLuint index); GLAPI void APIENTRY glDisableVertexArrayAttribEXT(GLuint vaobj, GLuint index); GLAPI void APIENTRY glDisableVertexArrayEXT(GLuint vaobj, GLenum array); GLAPI void APIENTRY glDisableVertexAttribAPPLE(GLuint index, GLenum pname); GLAPI void APIENTRY glDisableVertexAttribArray(GLuint index); GLAPI void APIENTRY glDisableVertexAttribArrayARB(GLuint index); GLAPI void APIENTRY glDisablei(GLenum target, GLuint index); GLAPI void APIENTRY glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); GLAPI void APIENTRY glDispatchComputeGroupSizeARB(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z); GLAPI void APIENTRY glDispatchComputeIndirect(GLintptr indirect); GLAPI void APIENTRY glDrawArrays(GLenum mode, GLint first, GLsizei count); GLAPI void APIENTRY glDrawArraysEXT(GLenum mode, GLint first, GLsizei count); GLAPI void APIENTRY glDrawArraysIndirect(GLenum mode, const void *indirect); GLAPI void APIENTRY glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); GLAPI void APIENTRY glDrawArraysInstancedARB(GLenum mode, GLint first, GLsizei count, GLsizei primcount); GLAPI void APIENTRY glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); GLAPI void APIENTRY glDrawArraysInstancedEXT(GLenum mode, GLint start, GLsizei count, GLsizei primcount); GLAPI void APIENTRY glDrawBuffer(GLenum mode); GLAPI void APIENTRY glDrawBuffers(GLsizei n, const GLenum *bufs); GLAPI void APIENTRY glDrawBuffersARB(GLsizei n, const GLenum *bufs); GLAPI void APIENTRY glDrawBuffersATI(GLsizei n, const GLenum *bufs); GLAPI void APIENTRY glDrawCommandsAddressNV(GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count); GLAPI void APIENTRY glDrawCommandsNV(GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count); GLAPI void APIENTRY glDrawCommandsStatesAddressNV(const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); GLAPI void APIENTRY glDrawCommandsStatesNV(GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); GLAPI void APIENTRY glDrawElementArrayAPPLE(GLenum mode, GLint first, GLsizei count); GLAPI void APIENTRY glDrawElementArrayATI(GLenum mode, GLsizei count); GLAPI void APIENTRY glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); GLAPI void APIENTRY glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); GLAPI void APIENTRY glDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect); GLAPI void APIENTRY glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); GLAPI void APIENTRY glDrawElementsInstancedARB(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); GLAPI void APIENTRY glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); GLAPI void APIENTRY glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); GLAPI void APIENTRY glDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); GLAPI void APIENTRY glDrawMeshArraysSUN(GLenum mode, GLint first, GLsizei count, GLsizei width); GLAPI void APIENTRY glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); GLAPI void APIENTRY glDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); GLAPI void APIENTRY glDrawRangeElementArrayATI(GLenum mode, GLuint start, GLuint end, GLsizei count); GLAPI void APIENTRY glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); GLAPI void APIENTRY glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); GLAPI void APIENTRY glDrawRangeElementsEXT(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); GLAPI void APIENTRY glDrawTextureNV(GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); GLAPI void APIENTRY glDrawTransformFeedback(GLenum mode, GLuint id); GLAPI void APIENTRY glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount); GLAPI void APIENTRY glDrawTransformFeedbackNV(GLenum mode, GLuint id); GLAPI void APIENTRY glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); GLAPI void APIENTRY glDrawVkImageNV(GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); GLAPI void APIENTRY glEdgeFlag(GLboolean32 flag); GLAPI void APIENTRY glEdgeFlagFormatNV(GLsizei stride); GLAPI void APIENTRY glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); GLAPI void APIENTRY glEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean *pointer); GLAPI void APIENTRY glEdgeFlagPointerListIBM(GLint stride, const GLboolean * *pointer, GLint ptrstride); GLAPI void APIENTRY glEdgeFlagv(const GLboolean *flag); GLAPI void APIENTRY glElementPointerAPPLE(GLenum type, const void *pointer); GLAPI void APIENTRY glElementPointerATI(GLenum type, const void *pointer); GLAPI void APIENTRY glEnable(GLenum cap); GLAPI void APIENTRY glEnableClientState(GLenum array); GLAPI void APIENTRY glEnableClientStateIndexedEXT(GLenum array, GLuint index); GLAPI void APIENTRY glEnableClientStateiEXT(GLenum array, GLuint index); GLAPI void APIENTRY glEnableIndexedEXT(GLenum target, GLuint index); GLAPI void APIENTRY glEnableTraceMESA(GLbitfield mask); GLAPI void APIENTRY glEnableVariantClientStateEXT(GLuint id); GLAPI void APIENTRY glEnableVertexArrayAttrib(GLuint vaobj, GLuint index); GLAPI void APIENTRY glEnableVertexArrayAttribEXT(GLuint vaobj, GLuint index); GLAPI void APIENTRY glEnableVertexArrayEXT(GLuint vaobj, GLenum array); GLAPI void APIENTRY glEnableVertexAttribAPPLE(GLuint index, GLenum pname); GLAPI void APIENTRY glEnableVertexAttribArray(GLuint index); GLAPI void APIENTRY glEnableVertexAttribArrayARB(GLuint index); GLAPI void APIENTRY glEnablei(GLenum target, GLuint index); GLAPI void APIENTRY glEnd(void); GLAPI void APIENTRY glEndConditionalRender(void); GLAPI void APIENTRY glEndConditionalRenderNV(void); GLAPI void APIENTRY glEndConditionalRenderNVX(void); GLAPI void APIENTRY glEndFragmentShaderATI(void); GLAPI void APIENTRY glEndList(void); GLAPI void APIENTRY glEndOcclusionQueryNV(void); GLAPI void APIENTRY glEndPerfMonitorAMD(GLuint monitor); GLAPI void APIENTRY glEndPerfQueryINTEL(GLuint queryHandle); GLAPI void APIENTRY glEndQuery(GLenum target); GLAPI void APIENTRY glEndQueryARB(GLenum target); GLAPI void APIENTRY glEndQueryIndexed(GLenum target, GLuint index); GLAPI void APIENTRY glEndTraceMESA(void); GLAPI void APIENTRY glEndTransformFeedback(void); GLAPI void APIENTRY glEndTransformFeedbackEXT(void); GLAPI void APIENTRY glEndTransformFeedbackNV(void); GLAPI void APIENTRY glEndVertexShaderEXT(void); GLAPI void APIENTRY glEndVideoCaptureNV(GLuint video_capture_slot); GLAPI void APIENTRY glEvalCoord1d(GLdouble u); GLAPI void APIENTRY glEvalCoord1dv(const GLdouble *u); GLAPI void APIENTRY glEvalCoord1f(GLfloat u); GLAPI void APIENTRY glEvalCoord1fv(const GLfloat *u); GLAPI void APIENTRY glEvalCoord1xOES(GLfixed u); GLAPI void APIENTRY glEvalCoord1xvOES(const GLfixed *coords); GLAPI void APIENTRY glEvalCoord2d(GLdouble u, GLdouble v); GLAPI void APIENTRY glEvalCoord2dv(const GLdouble *u); GLAPI void APIENTRY glEvalCoord2f(GLfloat u, GLfloat v); GLAPI void APIENTRY glEvalCoord2fv(const GLfloat *u); GLAPI void APIENTRY glEvalCoord2xOES(GLfixed u, GLfixed v); GLAPI void APIENTRY glEvalCoord2xvOES(const GLfixed *coords); GLAPI void APIENTRY glEvalMapsNV(GLenum target, GLenum mode); GLAPI void APIENTRY glEvalMesh1(GLenum mode, GLint i1, GLint i2); GLAPI void APIENTRY glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); GLAPI void APIENTRY glEvalPoint1(GLint i); GLAPI void APIENTRY glEvalPoint2(GLint i, GLint j); GLAPI void APIENTRY glEvaluateDepthValuesARB(void); GLAPI void APIENTRY glExecuteProgramNV(GLenum target, GLuint id, const GLfloat *params); GLAPI void APIENTRY glExtractComponentEXT(GLuint res, GLuint src, GLuint num); GLAPI void APIENTRY glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); GLAPI void APIENTRY glFeedbackBufferxOES(GLsizei n, GLenum type, const GLfixed *buffer); GLAPI GLsync APIENTRY glFenceSync(GLenum condition, GLbitfield flags); GLAPI void APIENTRY glFinalCombinerInputNV(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); GLAPI void APIENTRY glFinish(void); GLAPI GLint APIENTRY glFinishAsyncSGIX(GLuint *markerp); GLAPI void APIENTRY glFinishFenceAPPLE(GLuint fence); GLAPI void APIENTRY glFinishFenceNV(GLuint fence); GLAPI void APIENTRY glFinishObjectAPPLE(GLenum object, GLuint name); GLAPI void APIENTRY glFinishRenderAPPLE(void); GLAPI void APIENTRY glFinishTextureSUNX(void); GLAPI void APIENTRY glFlush(void); GLAPI void APIENTRY glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE(GLenum target, GLintptr offset, GLsizeiptr size); GLAPI void APIENTRY glFlushMappedNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length); GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length); GLAPI void APIENTRY glFlushPixelDataRangeNV(GLenum target); GLAPI void APIENTRY glFlushRasterSGIX(void); GLAPI void APIENTRY glFlushRenderAPPLE(void); GLAPI void APIENTRY glFlushStaticDataIBM(GLenum target); GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE(GLsizei length, void *pointer); GLAPI void APIENTRY glFlushVertexArrayRangeNV(void); GLAPI void APIENTRY glFogCoordFormatNV(GLenum type, GLsizei stride); GLAPI void APIENTRY glFogCoordPointer(GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glFogCoordPointerEXT(GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glFogCoordPointerListIBM(GLenum type, GLint stride, const void * *pointer, GLint ptrstride); GLAPI void APIENTRY glFogCoordd(GLdouble coord); GLAPI void APIENTRY glFogCoorddEXT(GLdouble coord); GLAPI void APIENTRY glFogCoorddv(const GLdouble *coord); GLAPI void APIENTRY glFogCoorddvEXT(const GLdouble *coord); GLAPI void APIENTRY glFogCoordf(GLfloat coord); GLAPI void APIENTRY glFogCoordfEXT(GLfloat coord); GLAPI void APIENTRY glFogCoordfv(const GLfloat *coord); GLAPI void APIENTRY glFogCoordfvEXT(const GLfloat *coord); GLAPI void APIENTRY glFogCoordhNV(GLhalfNV32 fog); GLAPI void APIENTRY glFogCoordhvNV(const GLhalfNV *fog); GLAPI void APIENTRY glFogFuncSGIS(GLsizei n, const GLfloat *points); GLAPI void APIENTRY glFogf(GLenum pname, GLfloat param); GLAPI void APIENTRY glFogfv(GLenum pname, const GLfloat *params); GLAPI void APIENTRY glFogi(GLenum pname, GLint param); GLAPI void APIENTRY glFogiv(GLenum pname, const GLint *params); GLAPI void APIENTRY glFogxOES(GLenum pname, GLfixed param); GLAPI void APIENTRY glFogxvOES(GLenum pname, const GLfixed *param); GLAPI void APIENTRY glFragmentColorMaterialSGIX(GLenum face, GLenum mode); GLAPI void APIENTRY glFragmentCoverageColorNV(GLuint color); GLAPI void APIENTRY glFragmentLightModelfSGIX(GLenum pname, GLfloat param); GLAPI void APIENTRY glFragmentLightModelfvSGIX(GLenum pname, const GLfloat *params); GLAPI void APIENTRY glFragmentLightModeliSGIX(GLenum pname, GLint param); GLAPI void APIENTRY glFragmentLightModelivSGIX(GLenum pname, const GLint *params); GLAPI void APIENTRY glFragmentLightfSGIX(GLenum light, GLenum pname, GLfloat param); GLAPI void APIENTRY glFragmentLightfvSGIX(GLenum light, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glFragmentLightiSGIX(GLenum light, GLenum pname, GLint param); GLAPI void APIENTRY glFragmentLightivSGIX(GLenum light, GLenum pname, const GLint *params); GLAPI void APIENTRY glFragmentMaterialfSGIX(GLenum face, GLenum pname, GLfloat param); GLAPI void APIENTRY glFragmentMaterialfvSGIX(GLenum face, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glFragmentMaterialiSGIX(GLenum face, GLenum pname, GLint param); GLAPI void APIENTRY glFragmentMaterialivSGIX(GLenum face, GLenum pname, const GLint *params); GLAPI void APIENTRY glFrameTerminatorGREMEDY(void); GLAPI void APIENTRY glFrameZoomSGIX(GLint factor); GLAPI void APIENTRY glFramebufferDrawBufferEXT(GLuint framebuffer, GLenum mode); GLAPI void APIENTRY glFramebufferDrawBuffersEXT(GLuint framebuffer, GLsizei n, const GLenum *bufs); GLAPI void APIENTRY glFramebufferParameteri(GLenum target, GLenum pname, GLint param); GLAPI void APIENTRY glFramebufferReadBufferEXT(GLuint framebuffer, GLenum mode); GLAPI void APIENTRY glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); GLAPI void APIENTRY glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); GLAPI void APIENTRY glFramebufferSampleLocationsfvARB(GLenum target, GLuint start, GLsizei count, const GLfloat *v); GLAPI void APIENTRY glFramebufferSampleLocationsfvNV(GLenum target, GLuint start, GLsizei count, const GLfloat *v); GLAPI void APIENTRY glFramebufferSamplePositionsfvAMD(GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values); GLAPI void APIENTRY glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); GLAPI void APIENTRY glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLAPI void APIENTRY glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLAPI void APIENTRY glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLAPI void APIENTRY glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLAPI void APIENTRY glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); GLAPI void APIENTRY glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); GLAPI void APIENTRY glFramebufferTextureARB(GLenum target, GLenum attachment, GLuint texture, GLint level); GLAPI void APIENTRY glFramebufferTextureEXT(GLenum target, GLenum attachment, GLuint texture, GLint level); GLAPI void APIENTRY glFramebufferTextureFaceARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); GLAPI void APIENTRY glFramebufferTextureFaceEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); GLAPI void APIENTRY glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); GLAPI void APIENTRY glFramebufferTextureLayerARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); GLAPI void APIENTRY glFramebufferTextureLayerEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); GLAPI void APIENTRY glFramebufferTextureMultiviewOVR(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); GLAPI void APIENTRY glFreeObjectBufferATI(GLuint buffer); GLAPI void APIENTRY glFrontFace(GLenum mode); GLAPI void APIENTRY glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); GLAPI void APIENTRY glFrustumfOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); GLAPI void APIENTRY glFrustumxOES(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX(GLsizei range); GLAPI void APIENTRY glGenBuffers(GLsizei n, GLuint *buffers); GLAPI void APIENTRY glGenBuffersARB(GLsizei n, GLuint *buffers); GLAPI void APIENTRY glGenFencesAPPLE(GLsizei n, GLuint *fences); GLAPI void APIENTRY glGenFencesNV(GLsizei n, GLuint *fences); GLAPI GLuint APIENTRY glGenFragmentShadersATI(GLuint range); GLAPI void APIENTRY glGenFramebuffers(GLsizei n, GLuint *framebuffers); GLAPI void APIENTRY glGenFramebuffersEXT(GLsizei n, GLuint *framebuffers); GLAPI GLuint APIENTRY glGenLists(GLsizei range); GLAPI void APIENTRY glGenNamesAMD(GLenum identifier, GLuint num, GLuint *names); GLAPI void APIENTRY glGenOcclusionQueriesNV(GLsizei n, GLuint *ids); GLAPI GLuint APIENTRY glGenPathsNV(GLsizei range); GLAPI void APIENTRY glGenPerfMonitorsAMD(GLsizei n, GLuint *monitors); GLAPI void APIENTRY glGenProgramPipelines(GLsizei n, GLuint *pipelines); GLAPI void APIENTRY glGenProgramsARB(GLsizei n, GLuint *programs); GLAPI void APIENTRY glGenProgramsNV(GLsizei n, GLuint *programs); GLAPI void APIENTRY glGenQueries(GLsizei n, GLuint *ids); GLAPI void APIENTRY glGenQueriesARB(GLsizei n, GLuint *ids); GLAPI void APIENTRY glGenQueryResourceTagNV(GLsizei n, GLint *tagIds); GLAPI void APIENTRY glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); GLAPI void APIENTRY glGenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers); GLAPI void APIENTRY glGenSamplers(GLsizei count, GLuint *samplers); GLAPI void APIENTRY glGenSemaphoresEXT(GLsizei n, GLuint *semaphores); GLAPI GLuint APIENTRY glGenSymbolsEXT(GLenum datatype, GLenum storagetype, GLenum range, GLuint components); GLAPI void APIENTRY glGenTextures(GLsizei n, GLuint *textures); GLAPI void APIENTRY glGenTexturesEXT(GLsizei n, GLuint *textures); GLAPI void APIENTRY glGenTransformFeedbacks(GLsizei n, GLuint *ids); GLAPI void APIENTRY glGenTransformFeedbacksNV(GLsizei n, GLuint *ids); GLAPI void APIENTRY glGenVertexArrays(GLsizei n, GLuint *arrays); GLAPI void APIENTRY glGenVertexArraysAPPLE(GLsizei n, GLuint *arrays); GLAPI GLuint APIENTRY glGenVertexShadersEXT(GLuint range); GLAPI void APIENTRY glGenerateMipmap(GLenum target); GLAPI void APIENTRY glGenerateMipmapEXT(GLenum target); GLAPI void APIENTRY glGenerateMultiTexMipmapEXT(GLenum texunit, GLenum target); GLAPI void APIENTRY glGenerateTextureMipmap(GLuint texture); GLAPI void APIENTRY glGenerateTextureMipmapEXT(GLuint texture, GLenum target); GLAPI void APIENTRY glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); GLAPI void APIENTRY glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); GLAPI void APIENTRY glGetActiveAttribARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); GLAPI void APIENTRY glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); GLAPI void APIENTRY glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); GLAPI void APIENTRY glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); GLAPI void APIENTRY glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); GLAPI void APIENTRY glGetActiveUniformARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); GLAPI GLuint APIENTRY glGetActiveUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); GLAPI void APIENTRY glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); GLAPI void APIENTRY glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); GLAPI void APIENTRY glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); GLAPI void APIENTRY glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); GLAPI void APIENTRY glGetActiveVaryingNV(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); GLAPI void APIENTRY glGetArrayObjectfvATI(GLenum array, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetArrayObjectivATI(GLenum array, GLenum pname, GLint *params); GLAPI void APIENTRY glGetAttachedObjectsARB(GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); GLAPI void APIENTRY glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); GLAPI GLint APIENTRY glGetAttribLocation(GLuint program, const GLchar *name); GLAPI GLint APIENTRY glGetAttribLocationARB(GLhandleARB programObj, const GLcharARB *name); GLAPI void APIENTRY glGetBooleanIndexedvEXT(GLenum target, GLuint index, GLboolean *data); GLAPI void APIENTRY glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); GLAPI void APIENTRY glGetBooleanv(GLenum pname, GLboolean *params); GLAPI void APIENTRY glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); GLAPI void APIENTRY glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetBufferParameterivARB(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetBufferParameterui64vNV(GLenum target, GLenum pname, GLuint64EXT *params); GLAPI void APIENTRY glGetBufferPointerv(GLenum target, GLenum pname, void * *params); GLAPI void APIENTRY glGetBufferPointervARB(GLenum target, GLenum pname, void * *params); GLAPI void APIENTRY glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void *data); GLAPI void APIENTRY glGetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data); GLAPI void APIENTRY glGetClipPlane(GLenum plane, GLdouble *equation); GLAPI void APIENTRY glGetClipPlanefOES(GLenum plane, GLfloat *equation); GLAPI void APIENTRY glGetClipPlanexOES(GLenum plane, GLfixed *equation); GLAPI void APIENTRY glGetColorTable(GLenum target, GLenum format, GLenum type, void *table); GLAPI void APIENTRY glGetColorTableEXT(GLenum target, GLenum format, GLenum type, void *data); GLAPI void APIENTRY glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetColorTableParameterfvSGI(GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetColorTableParameterivSGI(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetColorTableSGI(GLenum target, GLenum format, GLenum type, void *table); GLAPI void APIENTRY glGetCombinerInputParameterfvNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetCombinerInputParameterivNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); GLAPI void APIENTRY glGetCombinerOutputParameterfvNV(GLenum stage, GLenum portion, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetCombinerOutputParameterivNV(GLenum stage, GLenum portion, GLenum pname, GLint *params); GLAPI void APIENTRY glGetCombinerStageParameterfvNV(GLenum stage, GLenum pname, GLfloat *params); GLAPI GLuint APIENTRY glGetCommandHeaderNV(GLenum tokenID, GLuint size); GLAPI void APIENTRY glGetCompressedMultiTexImageEXT(GLenum texunit, GLenum target, GLint lod, void *img); GLAPI void APIENTRY glGetCompressedTexImage(GLenum target, GLint level, void *img); GLAPI void APIENTRY glGetCompressedTexImageARB(GLenum target, GLint level, void *img); GLAPI void APIENTRY glGetCompressedTextureImage(GLuint texture, GLint level, GLsizei bufSize, void *pixels); GLAPI void APIENTRY glGetCompressedTextureImageEXT(GLuint texture, GLenum target, GLint lod, void *img); GLAPI void APIENTRY glGetCompressedTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); GLAPI void APIENTRY glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, void *image); GLAPI void APIENTRY glGetConvolutionFilterEXT(GLenum target, GLenum format, GLenum type, void *image); GLAPI void APIENTRY glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetConvolutionParameterfvEXT(GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetConvolutionParameterivEXT(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetConvolutionParameterxvOES(GLenum target, GLenum pname, GLfixed *params); GLAPI void APIENTRY glGetCoverageModulationTableNV(GLsizei bufsize, GLfloat *v); GLAPI GLsizei APIENTRY glGetDebugLogLengthMESA(GLhandleARB obj, GLenum logType, GLenum shaderType); GLAPI void APIENTRY glGetDebugLogMESA(GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength, GLsizei *length, GLcharARB *debugLog); GLAPI GLuint APIENTRY glGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); GLAPI GLuint APIENTRY glGetDebugMessageLogAMD(GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); GLAPI GLuint APIENTRY glGetDebugMessageLogARB(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); GLAPI void APIENTRY glGetDetailTexFuncSGIS(GLenum target, GLfloat *points); GLAPI void APIENTRY glGetDoubleIndexedvEXT(GLenum target, GLuint index, GLdouble *data); GLAPI void APIENTRY glGetDoublei_v(GLenum target, GLuint index, GLdouble *data); GLAPI void APIENTRY glGetDoublei_vEXT(GLenum pname, GLuint index, GLdouble *params); GLAPI void APIENTRY glGetDoublev(GLenum pname, GLdouble *params); GLAPI GLenum APIENTRY glGetError(void); GLAPI void APIENTRY glGetFenceivNV(GLuint fence, GLenum pname, GLint *params); GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV(GLenum variable, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV(GLenum variable, GLenum pname, GLint *params); GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL(GLuint *queryId); GLAPI void APIENTRY glGetFixedvOES(GLenum pname, GLfixed *params); GLAPI void APIENTRY glGetFloatIndexedvEXT(GLenum target, GLuint index, GLfloat *data); GLAPI void APIENTRY glGetFloati_v(GLenum target, GLuint index, GLfloat *data); GLAPI void APIENTRY glGetFloati_vEXT(GLenum pname, GLuint index, GLfloat *params); GLAPI void APIENTRY glGetFloatv(GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetFogFuncSGIS(GLfloat *points); GLAPI GLint APIENTRY glGetFragDataIndex(GLuint program, const GLchar *name); GLAPI GLint APIENTRY glGetFragDataLocation(GLuint program, const GLchar *name); GLAPI GLint APIENTRY glGetFragDataLocationEXT(GLuint program, const GLchar *name); GLAPI void APIENTRY glGetFragmentLightfvSGIX(GLenum light, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetFragmentLightivSGIX(GLenum light, GLenum pname, GLint *params); GLAPI void APIENTRY glGetFragmentMaterialfvSGIX(GLenum face, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetFragmentMaterialivSGIX(GLenum face, GLenum pname, GLint *params); GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint *params); GLAPI void APIENTRY glGetFramebufferParameterfvAMD(GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); GLAPI void APIENTRY glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint *params); GLAPI GLenum APIENTRY glGetGraphicsResetStatus(void); GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB(void); GLAPI GLhandleARB APIENTRY glGetHandleARB(GLenum pname); GLAPI void APIENTRY glGetHistogram(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values); GLAPI void APIENTRY glGetHistogramEXT(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values); GLAPI void APIENTRY glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetHistogramParameterfvEXT(GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetHistogramParameterivEXT(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetHistogramParameterxvOES(GLenum target, GLenum pname, GLfixed *params); GLAPI GLuint64 APIENTRY glGetImageHandleARB(GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format); GLAPI GLuint64 APIENTRY glGetImageHandleNV(GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format); GLAPI void APIENTRY glGetImageTransformParameterfvHP(GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetImageTransformParameterivHP(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetInfoLogARB(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); GLAPI GLint APIENTRY glGetInstrumentsSGIX(void); GLAPI void APIENTRY glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data); GLAPI void APIENTRY glGetInteger64v(GLenum pname, GLint64 *data); GLAPI void APIENTRY glGetIntegerIndexedvEXT(GLenum target, GLuint index, GLint *data); GLAPI void APIENTRY glGetIntegeri_v(GLenum target, GLuint index, GLint *data); GLAPI void APIENTRY glGetIntegerui64i_vNV(GLenum value, GLuint index, GLuint64EXT *result); GLAPI void APIENTRY glGetIntegerui64vNV(GLenum value, GLuint64EXT *result); GLAPI void APIENTRY glGetIntegerv(GLenum pname, GLint *params); GLAPI void APIENTRY glGetInternalformatSampleivNV(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params); GLAPI void APIENTRY glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); GLAPI void APIENTRY glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); GLAPI void APIENTRY glGetInvariantBooleanvEXT(GLuint id, GLenum value, GLboolean *data); GLAPI void APIENTRY glGetInvariantFloatvEXT(GLuint id, GLenum value, GLfloat *data); GLAPI void APIENTRY glGetInvariantIntegervEXT(GLuint id, GLenum value, GLint *data); GLAPI void APIENTRY glGetLightfv(GLenum light, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetLightiv(GLenum light, GLenum pname, GLint *params); GLAPI void APIENTRY glGetLightxOES(GLenum light, GLenum pname, GLfixed *params); GLAPI void APIENTRY glGetListParameterfvSGIX(GLuint list, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetListParameterivSGIX(GLuint list, GLenum pname, GLint *params); GLAPI void APIENTRY glGetLocalConstantBooleanvEXT(GLuint id, GLenum value, GLboolean *data); GLAPI void APIENTRY glGetLocalConstantFloatvEXT(GLuint id, GLenum value, GLfloat *data); GLAPI void APIENTRY glGetLocalConstantIntegervEXT(GLuint id, GLenum value, GLint *data); GLAPI void APIENTRY glGetMapAttribParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetMapAttribParameterivNV(GLenum target, GLuint index, GLenum pname, GLint *params); GLAPI void APIENTRY glGetMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean32 packed, void *points); GLAPI void APIENTRY glGetMapParameterfvNV(GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetMapParameterivNV(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetMapdv(GLenum target, GLenum query, GLdouble *v); GLAPI void APIENTRY glGetMapfv(GLenum target, GLenum query, GLfloat *v); GLAPI void APIENTRY glGetMapiv(GLenum target, GLenum query, GLint *v); GLAPI void APIENTRY glGetMapxvOES(GLenum target, GLenum query, GLfixed *v); GLAPI void APIENTRY glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetMaterialiv(GLenum face, GLenum pname, GLint *params); GLAPI void APIENTRY glGetMaterialxOES(GLenum face, GLenum pname, GLfixed param); GLAPI void APIENTRY glGetMemoryObjectParameterivEXT(GLuint memoryObject, GLenum pname, GLint *params); GLAPI void APIENTRY glGetMinmax(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values); GLAPI void APIENTRY glGetMinmaxEXT(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values); GLAPI void APIENTRY glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetMinmaxParameterfvEXT(GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetMinmaxParameterivEXT(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); GLAPI void APIENTRY glGetMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, GLint *params); GLAPI void APIENTRY glGetMultiTexImageEXT(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); GLAPI void APIENTRY glGetMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, GLuint *params); GLAPI void APIENTRY glGetMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); GLAPI void APIENTRY glGetMultisamplefvNV(GLenum pname, GLuint index, GLfloat *val); GLAPI void APIENTRY glGetNamedBufferParameteri64v(GLuint buffer, GLenum pname, GLint64 *params); GLAPI void APIENTRY glGetNamedBufferParameteriv(GLuint buffer, GLenum pname, GLint *params); GLAPI void APIENTRY glGetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, GLint *params); GLAPI void APIENTRY glGetNamedBufferParameterui64vNV(GLuint buffer, GLenum pname, GLuint64EXT *params); GLAPI void APIENTRY glGetNamedBufferPointerv(GLuint buffer, GLenum pname, void * *params); GLAPI void APIENTRY glGetNamedBufferPointervEXT(GLuint buffer, GLenum pname, void * *params); GLAPI void APIENTRY glGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); GLAPI void APIENTRY glGetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); GLAPI void APIENTRY glGetNamedFramebufferParameterfvAMD(GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); GLAPI void APIENTRY glGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint *param); GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint *params); GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT(GLuint program, GLenum target, GLuint index, GLint *params); GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT(GLuint program, GLenum target, GLuint index, GLuint *params); GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT(GLuint program, GLenum target, GLuint index, GLdouble *params); GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT(GLuint program, GLenum target, GLuint index, GLfloat *params); GLAPI void APIENTRY glGetNamedProgramStringEXT(GLuint program, GLenum target, GLenum pname, void *string); GLAPI void APIENTRY glGetNamedProgramivEXT(GLuint program, GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint *params); GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT(GLuint renderbuffer, GLenum pname, GLint *params); GLAPI void APIENTRY glGetNamedStringARB(GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); GLAPI void APIENTRY glGetNamedStringivARB(GLint namelen, const GLchar *name, GLenum pname, GLint *params); GLAPI void APIENTRY glGetNextPerfQueryIdINTEL(GLuint queryId, GLuint *nextQueryId); GLAPI void APIENTRY glGetObjectBufferfvATI(GLuint buffer, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetObjectBufferivATI(GLuint buffer, GLenum pname, GLint *params); GLAPI void APIENTRY glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); GLAPI void APIENTRY glGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); GLAPI void APIENTRY glGetObjectParameterfvARB(GLhandleARB obj, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, GLint *params); GLAPI void APIENTRY glGetObjectParameterivARB(GLhandleARB obj, GLenum pname, GLint *params); GLAPI void APIENTRY glGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); GLAPI void APIENTRY glGetOcclusionQueryivNV(GLuint id, GLenum pname, GLint *params); GLAPI void APIENTRY glGetOcclusionQueryuivNV(GLuint id, GLenum pname, GLuint *params); GLAPI void APIENTRY glGetPathColorGenfvNV(GLenum color, GLenum pname, GLfloat *value); GLAPI void APIENTRY glGetPathColorGenivNV(GLenum color, GLenum pname, GLint *value); GLAPI void APIENTRY glGetPathCommandsNV(GLuint path, GLubyte *commands); GLAPI void APIENTRY glGetPathCoordsNV(GLuint path, GLfloat *coords); GLAPI void APIENTRY glGetPathDashArrayNV(GLuint path, GLfloat *dashArray); GLAPI GLfloat APIENTRY glGetPathLengthNV(GLuint path, GLsizei startSegment, GLsizei numSegments); GLAPI void APIENTRY glGetPathMetricRangeNV(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); GLAPI void APIENTRY glGetPathMetricsNV(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); GLAPI void APIENTRY glGetPathParameterfvNV(GLuint path, GLenum pname, GLfloat *value); GLAPI void APIENTRY glGetPathParameterivNV(GLuint path, GLenum pname, GLint *value); GLAPI void APIENTRY glGetPathSpacingNV(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); GLAPI void APIENTRY glGetPathTexGenfvNV(GLenum texCoordSet, GLenum pname, GLfloat *value); GLAPI void APIENTRY glGetPathTexGenivNV(GLenum texCoordSet, GLenum pname, GLint *value); GLAPI void APIENTRY glGetPerfCounterInfoINTEL(GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, void *data); GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); GLAPI void APIENTRY glGetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); GLAPI void APIENTRY glGetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLuint *groups); GLAPI void APIENTRY glGetPerfQueryDataINTEL(GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL(GLchar *queryName, GLuint *queryId); GLAPI void APIENTRY glGetPerfQueryInfoINTEL(GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); GLAPI void APIENTRY glGetPixelMapfv(GLenum map, GLfloat *values); GLAPI void APIENTRY glGetPixelMapuiv(GLenum map, GLuint *values); GLAPI void APIENTRY glGetPixelMapusv(GLenum map, GLushort *values); GLAPI void APIENTRY glGetPixelMapxv(GLenum map, GLint size, GLfixed *values); GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS(GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS(GLenum pname, GLint *params); GLAPI void APIENTRY glGetPixelTransformParameterfvEXT(GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetPixelTransformParameterivEXT(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetPointerIndexedvEXT(GLenum target, GLuint index, void * *data); GLAPI void APIENTRY glGetPointeri_vEXT(GLenum pname, GLuint index, void * *params); GLAPI void APIENTRY glGetPointerv(GLenum pname, GLvoid* *params); GLAPI void APIENTRY glGetPointervEXT(GLenum pname, void * *params); GLAPI void APIENTRY glGetPolygonStipple(GLubyte *mask); GLAPI void APIENTRY glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); GLAPI void APIENTRY glGetProgramEnvParameterIivNV(GLenum target, GLuint index, GLint *params); GLAPI void APIENTRY glGetProgramEnvParameterIuivNV(GLenum target, GLuint index, GLuint *params); GLAPI void APIENTRY glGetProgramEnvParameterdvARB(GLenum target, GLuint index, GLdouble *params); GLAPI void APIENTRY glGetProgramEnvParameterfvARB(GLenum target, GLuint index, GLfloat *params); GLAPI void APIENTRY glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); GLAPI void APIENTRY glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params); GLAPI void APIENTRY glGetProgramLocalParameterIivNV(GLenum target, GLuint index, GLint *params); GLAPI void APIENTRY glGetProgramLocalParameterIuivNV(GLenum target, GLuint index, GLuint *params); GLAPI void APIENTRY glGetProgramLocalParameterdvARB(GLenum target, GLuint index, GLdouble *params); GLAPI void APIENTRY glGetProgramLocalParameterfvARB(GLenum target, GLuint index, GLfloat *params); GLAPI void APIENTRY glGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); GLAPI void APIENTRY glGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); GLAPI void APIENTRY glGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, GLdouble *params); GLAPI void APIENTRY glGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); GLAPI void APIENTRY glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params); GLAPI void APIENTRY glGetProgramRegisterfvMESA(GLenum target, GLsizei len, const GLubyte *name, GLfloat *v); GLAPI GLuint APIENTRY glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name); GLAPI GLint APIENTRY glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name); GLAPI GLint APIENTRY glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name); GLAPI void APIENTRY glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); GLAPI void APIENTRY glGetProgramResourcefvNV(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params); GLAPI void APIENTRY glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); GLAPI void APIENTRY glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values); GLAPI void APIENTRY glGetProgramStringARB(GLenum target, GLenum pname, void *string); GLAPI void APIENTRY glGetProgramStringNV(GLuint id, GLenum pname, GLubyte *program); GLAPI void APIENTRY glGetProgramSubroutineParameteruivNV(GLenum target, GLuint index, GLuint *param); GLAPI void APIENTRY glGetProgramiv(GLuint program, GLenum pname, GLint *params); GLAPI void APIENTRY glGetProgramivARB(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetProgramivNV(GLuint id, GLenum pname, GLint *params); GLAPI void APIENTRY glGetQueryBufferObjecti64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); GLAPI void APIENTRY glGetQueryBufferObjectiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); GLAPI void APIENTRY glGetQueryBufferObjectui64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); GLAPI void APIENTRY glGetQueryBufferObjectuiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); GLAPI void APIENTRY glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params); GLAPI void APIENTRY glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params); GLAPI void APIENTRY glGetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64 *params); GLAPI void APIENTRY glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); GLAPI void APIENTRY glGetQueryObjectivARB(GLuint id, GLenum pname, GLint *params); GLAPI void APIENTRY glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params); GLAPI void APIENTRY glGetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64 *params); GLAPI void APIENTRY glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); GLAPI void APIENTRY glGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint *params); GLAPI void APIENTRY glGetQueryiv(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetQueryivARB(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params); GLAPI void APIENTRY glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params); GLAPI void APIENTRY glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params); GLAPI void APIENTRY glGetSemaphoreParameterui64vEXT(GLuint semaphore, GLenum pname, GLuint64 *params); GLAPI void APIENTRY glGetSeparableFilter(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); GLAPI void APIENTRY glGetSeparableFilterEXT(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); GLAPI void APIENTRY glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); GLAPI void APIENTRY glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); GLAPI void APIENTRY glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); GLAPI void APIENTRY glGetShaderSourceARB(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); GLAPI void APIENTRY glGetShaderiv(GLuint shader, GLenum pname, GLint *params); GLAPI void APIENTRY glGetSharpenTexFuncSGIS(GLenum target, GLfloat *points); GLAPI GLushort APIENTRY glGetStageIndexNV(GLenum shadertype); GLAPI const GLubyte * APIENTRY glGetString(GLenum name); GLAPI const GLubyte * APIENTRY glGetStringi(GLenum name, GLuint index); GLAPI GLuint APIENTRY glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name); GLAPI GLint APIENTRY glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name); GLAPI void APIENTRY glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); GLAPI void APIENTRY glGetTexBumpParameterfvATI(GLenum pname, GLfloat *param); GLAPI void APIENTRY glGetTexBumpParameterivATI(GLenum pname, GLint *param); GLAPI void APIENTRY glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetTexEnviv(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetTexEnvxvOES(GLenum target, GLenum pname, GLfixed *params); GLAPI void APIENTRY glGetTexFilterFuncSGIS(GLenum target, GLenum filter, GLfloat *weights); GLAPI void APIENTRY glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); GLAPI void APIENTRY glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); GLAPI void APIENTRY glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params); GLAPI void APIENTRY glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); GLAPI void APIENTRY glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); GLAPI void APIENTRY glGetTexLevelParameterxvOES(GLenum target, GLint level, GLenum pname, GLfixed *params); GLAPI void APIENTRY glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetTexParameterIivEXT(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); GLAPI void APIENTRY glGetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint *params); GLAPI void APIENTRY glGetTexParameterPointervAPPLE(GLenum target, GLenum pname, void * *params); GLAPI void APIENTRY glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed *params); GLAPI GLuint64 APIENTRY glGetTextureHandleARB(GLuint texture); GLAPI GLuint64 APIENTRY glGetTextureHandleNV(GLuint texture); GLAPI void APIENTRY glGetTextureImage(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); GLAPI void APIENTRY glGetTextureImageEXT(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); GLAPI void APIENTRY glGetTextureLevelParameterfv(GLuint texture, GLint level, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetTextureLevelParameterfvEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetTextureLevelParameteriv(GLuint texture, GLint level, GLenum pname, GLint *params); GLAPI void APIENTRY glGetTextureLevelParameterivEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); GLAPI void APIENTRY glGetTextureParameterIiv(GLuint texture, GLenum pname, GLint *params); GLAPI void APIENTRY glGetTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params); GLAPI void APIENTRY glGetTextureParameterIuiv(GLuint texture, GLenum pname, GLuint *params); GLAPI void APIENTRY glGetTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, GLuint *params); GLAPI void APIENTRY glGetTextureParameterfv(GLuint texture, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetTextureParameteriv(GLuint texture, GLenum pname, GLint *params); GLAPI void APIENTRY glGetTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params); GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleARB(GLuint texture, GLuint sampler); GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV(GLuint texture, GLuint sampler); GLAPI void APIENTRY glGetTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels); GLAPI void APIENTRY glGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname, GLint *params); GLAPI void APIENTRY glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); GLAPI void APIENTRY glGetTransformFeedbackVaryingNV(GLuint program, GLuint index, GLint *location); GLAPI void APIENTRY glGetTransformFeedbacki64_v(GLuint xfb, GLenum pname, GLuint index, GLint64 *param); GLAPI void APIENTRY glGetTransformFeedbacki_v(GLuint xfb, GLenum pname, GLuint index, GLint *param); GLAPI void APIENTRY glGetTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param); GLAPI GLuint APIENTRY glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); GLAPI GLint APIENTRY glGetUniformBufferSizeEXT(GLuint program, GLint location); GLAPI void APIENTRY glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices); GLAPI GLint APIENTRY glGetUniformLocation(GLuint program, const GLchar *name); GLAPI GLint APIENTRY glGetUniformLocationARB(GLhandleARB programObj, const GLcharARB *name); GLAPI GLintptr APIENTRY glGetUniformOffsetEXT(GLuint program, GLint location); GLAPI void APIENTRY glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params); GLAPI void APIENTRY glGetUniformdv(GLuint program, GLint location, GLdouble *params); GLAPI void APIENTRY glGetUniformfv(GLuint program, GLint location, GLfloat *params); GLAPI void APIENTRY glGetUniformfvARB(GLhandleARB programObj, GLint location, GLfloat *params); GLAPI void APIENTRY glGetUniformi64vARB(GLuint program, GLint location, GLint64 *params); GLAPI void APIENTRY glGetUniformi64vNV(GLuint program, GLint location, GLint64EXT *params); GLAPI void APIENTRY glGetUniformiv(GLuint program, GLint location, GLint *params); GLAPI void APIENTRY glGetUniformivARB(GLhandleARB programObj, GLint location, GLint *params); GLAPI void APIENTRY glGetUniformui64vARB(GLuint program, GLint location, GLuint64 *params); GLAPI void APIENTRY glGetUniformui64vNV(GLuint program, GLint location, GLuint64EXT *params); GLAPI void APIENTRY glGetUniformuiv(GLuint program, GLint location, GLuint *params); GLAPI void APIENTRY glGetUniformuivEXT(GLuint program, GLint location, GLuint *params); GLAPI void APIENTRY glGetUnsignedBytei_vEXT(GLenum target, GLuint index, GLubyte *data); GLAPI void APIENTRY glGetUnsignedBytevEXT(GLenum pname, GLubyte *data); GLAPI void APIENTRY glGetVariantArrayObjectfvATI(GLuint id, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetVariantArrayObjectivATI(GLuint id, GLenum pname, GLint *params); GLAPI void APIENTRY glGetVariantBooleanvEXT(GLuint id, GLenum value, GLboolean *data); GLAPI void APIENTRY glGetVariantFloatvEXT(GLuint id, GLenum value, GLfloat *data); GLAPI void APIENTRY glGetVariantIntegervEXT(GLuint id, GLenum value, GLint *data); GLAPI void APIENTRY glGetVariantPointervEXT(GLuint id, GLenum value, void * *data); GLAPI GLint APIENTRY glGetVaryingLocationNV(GLuint program, const GLchar *name); GLAPI void APIENTRY glGetVertexArrayIndexed64iv(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param); GLAPI void APIENTRY glGetVertexArrayIndexediv(GLuint vaobj, GLuint index, GLenum pname, GLint *param); GLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, GLint *param); GLAPI void APIENTRY glGetVertexArrayIntegervEXT(GLuint vaobj, GLenum pname, GLint *param); GLAPI void APIENTRY glGetVertexArrayPointeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, void * *param); GLAPI void APIENTRY glGetVertexArrayPointervEXT(GLuint vaobj, GLenum pname, void * *param); GLAPI void APIENTRY glGetVertexArrayiv(GLuint vaobj, GLenum pname, GLint *param); GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI(GLuint index, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI(GLuint index, GLenum pname, GLint *params); GLAPI void APIENTRY glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); GLAPI void APIENTRY glGetVertexAttribIivEXT(GLuint index, GLenum pname, GLint *params); GLAPI void APIENTRY glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); GLAPI void APIENTRY glGetVertexAttribIuivEXT(GLuint index, GLenum pname, GLuint *params); GLAPI void APIENTRY glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params); GLAPI void APIENTRY glGetVertexAttribLdvEXT(GLuint index, GLenum pname, GLdouble *params); GLAPI void APIENTRY glGetVertexAttribLi64vNV(GLuint index, GLenum pname, GLint64EXT *params); GLAPI void APIENTRY glGetVertexAttribLui64vARB(GLuint index, GLenum pname, GLuint64EXT *params); GLAPI void APIENTRY glGetVertexAttribLui64vNV(GLuint index, GLenum pname, GLuint64EXT *params); GLAPI void APIENTRY glGetVertexAttribPointerv(GLuint index, GLenum pname, void * *pointer); GLAPI void APIENTRY glGetVertexAttribPointervARB(GLuint index, GLenum pname, void * *pointer); GLAPI void APIENTRY glGetVertexAttribPointervNV(GLuint index, GLenum pname, void * *pointer); GLAPI void APIENTRY glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); GLAPI void APIENTRY glGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble *params); GLAPI void APIENTRY glGetVertexAttribdvNV(GLuint index, GLenum pname, GLdouble *params); GLAPI void APIENTRY glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetVertexAttribfvNV(GLuint index, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); GLAPI void APIENTRY glGetVertexAttribivARB(GLuint index, GLenum pname, GLint *params); GLAPI void APIENTRY glGetVertexAttribivNV(GLuint index, GLenum pname, GLint *params); GLAPI void APIENTRY glGetVideoCaptureStreamdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); GLAPI void APIENTRY glGetVideoCaptureStreamfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); GLAPI void APIENTRY glGetVideoCaptureStreamivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); GLAPI void APIENTRY glGetVideoCaptureivNV(GLuint video_capture_slot, GLenum pname, GLint *params); GLAPI void APIENTRY glGetVideoi64vNV(GLuint video_slot, GLenum pname, GLint64EXT *params); GLAPI void APIENTRY glGetVideoivNV(GLuint video_slot, GLenum pname, GLint *params); GLAPI void APIENTRY glGetVideoui64vNV(GLuint video_slot, GLenum pname, GLuint64EXT *params); GLAPI void APIENTRY glGetVideouivNV(GLuint video_slot, GLenum pname, GLuint *params); GLAPI GLVULKANPROCNV APIENTRY glGetVkProcAddrNV(const GLchar *name); GLAPI void APIENTRY glGetnColorTable(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); GLAPI void APIENTRY glGetnColorTableARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); GLAPI void APIENTRY glGetnCompressedTexImage(GLenum target, GLint lod, GLsizei bufSize, void *pixels); GLAPI void APIENTRY glGetnCompressedTexImageARB(GLenum target, GLint lod, GLsizei bufSize, void *img); GLAPI void APIENTRY glGetnConvolutionFilter(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); GLAPI void APIENTRY glGetnConvolutionFilterARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); GLAPI void APIENTRY glGetnHistogram(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values); GLAPI void APIENTRY glGetnHistogramARB(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values); GLAPI void APIENTRY glGetnMapdv(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); GLAPI void APIENTRY glGetnMapdvARB(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); GLAPI void APIENTRY glGetnMapfv(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); GLAPI void APIENTRY glGetnMapfvARB(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); GLAPI void APIENTRY glGetnMapiv(GLenum target, GLenum query, GLsizei bufSize, GLint *v); GLAPI void APIENTRY glGetnMapivARB(GLenum target, GLenum query, GLsizei bufSize, GLint *v); GLAPI void APIENTRY glGetnMinmax(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values); GLAPI void APIENTRY glGetnMinmaxARB(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values); GLAPI void APIENTRY glGetnPixelMapfv(GLenum map, GLsizei bufSize, GLfloat *values); GLAPI void APIENTRY glGetnPixelMapfvARB(GLenum map, GLsizei bufSize, GLfloat *values); GLAPI void APIENTRY glGetnPixelMapuiv(GLenum map, GLsizei bufSize, GLuint *values); GLAPI void APIENTRY glGetnPixelMapuivARB(GLenum map, GLsizei bufSize, GLuint *values); GLAPI void APIENTRY glGetnPixelMapusv(GLenum map, GLsizei bufSize, GLushort *values); GLAPI void APIENTRY glGetnPixelMapusvARB(GLenum map, GLsizei bufSize, GLushort *values); GLAPI void APIENTRY glGetnPolygonStipple(GLsizei bufSize, GLubyte *pattern); GLAPI void APIENTRY glGetnPolygonStippleARB(GLsizei bufSize, GLubyte *pattern); GLAPI void APIENTRY glGetnSeparableFilter(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); GLAPI void APIENTRY glGetnSeparableFilterARB(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); GLAPI void APIENTRY glGetnTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); GLAPI void APIENTRY glGetnTexImageARB(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img); GLAPI void APIENTRY glGetnUniformdv(GLuint program, GLint location, GLsizei bufSize, GLdouble *params); GLAPI void APIENTRY glGetnUniformdvARB(GLuint program, GLint location, GLsizei bufSize, GLdouble *params); GLAPI void APIENTRY glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); GLAPI void APIENTRY glGetnUniformfvARB(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); GLAPI void APIENTRY glGetnUniformi64vARB(GLuint program, GLint location, GLsizei bufSize, GLint64 *params); GLAPI void APIENTRY glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params); GLAPI void APIENTRY glGetnUniformivARB(GLuint program, GLint location, GLsizei bufSize, GLint *params); GLAPI void APIENTRY glGetnUniformui64vARB(GLuint program, GLint location, GLsizei bufSize, GLuint64 *params); GLAPI void APIENTRY glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params); GLAPI void APIENTRY glGetnUniformuivARB(GLuint program, GLint location, GLsizei bufSize, GLuint *params); GLAPI void APIENTRY glGlobalAlphaFactorbSUN(GLbyte32 factor); GLAPI void APIENTRY glGlobalAlphaFactordSUN(GLdouble factor); GLAPI void APIENTRY glGlobalAlphaFactorfSUN(GLfloat factor); GLAPI void APIENTRY glGlobalAlphaFactoriSUN(GLint factor); GLAPI void APIENTRY glGlobalAlphaFactorsSUN(GLshort32 factor); GLAPI void APIENTRY glGlobalAlphaFactorubSUN(GLubyte32 factor); GLAPI void APIENTRY glGlobalAlphaFactoruiSUN(GLuint factor); GLAPI void APIENTRY glGlobalAlphaFactorusSUN(GLushort32 factor); GLAPI void APIENTRY glHint(GLenum target, GLenum mode); GLAPI void APIENTRY glHintPGI(GLenum target, GLint mode); GLAPI void APIENTRY glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink); GLAPI void APIENTRY glHistogramEXT(GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink); GLAPI void APIENTRY glIglooInterfaceSGIX(GLenum pname, const void *params); GLAPI void APIENTRY glImageTransformParameterfHP(GLenum target, GLenum pname, GLfloat param); GLAPI void APIENTRY glImageTransformParameterfvHP(GLenum target, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glImageTransformParameteriHP(GLenum target, GLenum pname, GLint param); GLAPI void APIENTRY glImageTransformParameterivHP(GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glImportMemoryFdEXT(GLuint memory, GLuint64 size, GLenum handleType, GLint fd); GLAPI void APIENTRY glImportMemoryWin32HandleEXT(GLuint memory, GLuint64 size, GLenum handleType, void *handle); GLAPI void APIENTRY glImportMemoryWin32NameEXT(GLuint memory, GLuint64 size, GLenum handleType, const void *name); GLAPI void APIENTRY glImportSemaphoreFdEXT(GLuint semaphore, GLenum handleType, GLint fd); GLAPI void APIENTRY glImportSemaphoreWin32HandleEXT(GLuint semaphore, GLenum handleType, void *handle); GLAPI void APIENTRY glImportSemaphoreWin32NameEXT(GLuint semaphore, GLenum handleType, const void *name); GLAPI GLsync APIENTRY glImportSyncEXT(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); GLAPI void APIENTRY glIndexFormatNV(GLenum type, GLsizei stride); GLAPI void APIENTRY glIndexFuncEXT(GLenum func, GLclampf ref); GLAPI void APIENTRY glIndexMask(GLuint mask); GLAPI void APIENTRY glIndexMaterialEXT(GLenum face, GLenum mode); GLAPI void APIENTRY glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void APIENTRY glIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const void *pointer); GLAPI void APIENTRY glIndexPointerListIBM(GLenum type, GLint stride, const void * *pointer, GLint ptrstride); GLAPI void APIENTRY glIndexd(GLdouble c); GLAPI void APIENTRY glIndexdv(const GLdouble *c); GLAPI void APIENTRY glIndexf(GLfloat c); GLAPI void APIENTRY glIndexfv(const GLfloat *c); GLAPI void APIENTRY glIndexi(GLint c); GLAPI void APIENTRY glIndexiv(const GLint *c); GLAPI void APIENTRY glIndexs(GLshort32 c); GLAPI void APIENTRY glIndexsv(const GLshort *c); GLAPI void APIENTRY glIndexub(GLubyte32 c); GLAPI void APIENTRY glIndexubv(const GLubyte *c); GLAPI void APIENTRY glIndexxOES(GLfixed component); GLAPI void APIENTRY glIndexxvOES(const GLfixed *component); GLAPI void APIENTRY glInitNames(void); GLAPI void APIENTRY glInsertComponentEXT(GLuint res, GLuint src, GLuint num); GLAPI void APIENTRY glInsertEventMarkerEXT(GLsizei length, const GLchar *marker); GLAPI void APIENTRY glInstrumentsBufferSGIX(GLsizei size, GLint *buffer); GLAPI void APIENTRY glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); GLAPI void APIENTRY glInterpolatePathsNV(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); GLAPI void APIENTRY glInvalidateBufferData(GLuint buffer); GLAPI void APIENTRY glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length); GLAPI void APIENTRY glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments); GLAPI void APIENTRY glInvalidateNamedFramebufferData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments); GLAPI void APIENTRY glInvalidateNamedFramebufferSubData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glInvalidateTexImage(GLuint texture, GLint level); GLAPI void APIENTRY glInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX(GLuint marker); GLAPI GLboolean APIENTRY glIsBuffer(GLuint buffer); GLAPI GLboolean APIENTRY glIsBufferARB(GLuint buffer); GLAPI GLboolean APIENTRY glIsBufferResidentNV(GLenum target); GLAPI GLboolean APIENTRY glIsCommandListNV(GLuint list); GLAPI GLboolean APIENTRY glIsEnabled(GLenum cap); GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT(GLenum target, GLuint index); GLAPI GLboolean APIENTRY glIsEnabledi(GLenum target, GLuint index); GLAPI GLboolean APIENTRY glIsFenceAPPLE(GLuint fence); GLAPI GLboolean APIENTRY glIsFenceNV(GLuint fence); GLAPI GLboolean APIENTRY glIsFramebuffer(GLuint framebuffer); GLAPI GLboolean APIENTRY glIsFramebufferEXT(GLuint framebuffer); GLAPI GLboolean APIENTRY glIsImageHandleResidentARB(GLuint64 handle); GLAPI GLboolean APIENTRY glIsImageHandleResidentNV(GLuint64 handle); GLAPI GLboolean APIENTRY glIsList(GLuint list); GLAPI GLboolean APIENTRY glIsMemoryObjectEXT(GLuint memoryObject); GLAPI GLboolean APIENTRY glIsNameAMD(GLenum identifier, GLuint name); GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV(GLuint buffer); GLAPI GLboolean APIENTRY glIsNamedStringARB(GLint namelen, const GLchar *name); GLAPI GLboolean APIENTRY glIsObjectBufferATI(GLuint buffer); GLAPI GLboolean APIENTRY glIsOcclusionQueryNV(GLuint id); GLAPI GLboolean APIENTRY glIsPathNV(GLuint path); GLAPI GLboolean APIENTRY glIsPointInFillPathNV(GLuint path, GLuint mask, GLfloat x, GLfloat y); GLAPI GLboolean APIENTRY glIsPointInStrokePathNV(GLuint path, GLfloat x, GLfloat y); GLAPI GLboolean APIENTRY glIsProgram(GLuint program); GLAPI GLboolean APIENTRY glIsProgramARB(GLuint program); GLAPI GLboolean APIENTRY glIsProgramNV(GLuint id); GLAPI GLboolean APIENTRY glIsProgramPipeline(GLuint pipeline); GLAPI GLboolean APIENTRY glIsQuery(GLuint id); GLAPI GLboolean APIENTRY glIsQueryARB(GLuint id); GLAPI GLboolean APIENTRY glIsRenderbuffer(GLuint renderbuffer); GLAPI GLboolean APIENTRY glIsRenderbufferEXT(GLuint renderbuffer); GLAPI GLboolean APIENTRY glIsSampler(GLuint sampler); GLAPI GLboolean APIENTRY glIsSemaphoreEXT(GLuint semaphore); GLAPI GLboolean APIENTRY glIsShader(GLuint shader); GLAPI GLboolean APIENTRY glIsStateNV(GLuint state); GLAPI GLboolean APIENTRY glIsSync(GLsync sync); GLAPI GLboolean APIENTRY glIsTexture(GLuint texture); GLAPI GLboolean APIENTRY glIsTextureEXT(GLuint texture); GLAPI GLboolean APIENTRY glIsTextureHandleResidentARB(GLuint64 handle); GLAPI GLboolean APIENTRY glIsTextureHandleResidentNV(GLuint64 handle); GLAPI GLboolean APIENTRY glIsTransformFeedback(GLuint id); GLAPI GLboolean APIENTRY glIsTransformFeedbackNV(GLuint id); GLAPI GLboolean APIENTRY glIsVariantEnabledEXT(GLuint id, GLenum cap); GLAPI GLboolean APIENTRY glIsVertexArray(GLuint array); GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE(GLuint array); GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE(GLuint index, GLenum pname); GLAPI void APIENTRY glLGPUCopyImageSubDataNVX(GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); GLAPI void APIENTRY glLGPUInterlockNVX(void); GLAPI void APIENTRY glLGPUNamedBufferSubDataNVX(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); GLAPI void APIENTRY glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar *label); GLAPI void APIENTRY glLightEnviSGIX(GLenum pname, GLint param); GLAPI void APIENTRY glLightModelf(GLenum pname, GLfloat param); GLAPI void APIENTRY glLightModelfv(GLenum pname, const GLfloat *params); GLAPI void APIENTRY glLightModeli(GLenum pname, GLint param); GLAPI void APIENTRY glLightModeliv(GLenum pname, const GLint *params); GLAPI void APIENTRY glLightModelxOES(GLenum pname, GLfixed param); GLAPI void APIENTRY glLightModelxvOES(GLenum pname, const GLfixed *param); GLAPI void APIENTRY glLightf(GLenum light, GLenum pname, GLfloat param); GLAPI void APIENTRY glLightfv(GLenum light, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glLighti(GLenum light, GLenum pname, GLint param); GLAPI void APIENTRY glLightiv(GLenum light, GLenum pname, const GLint *params); GLAPI void APIENTRY glLightxOES(GLenum light, GLenum pname, GLfixed param); GLAPI void APIENTRY glLightxvOES(GLenum light, GLenum pname, const GLfixed *params); GLAPI void APIENTRY glLineStipple(GLint factor, GLushort32 pattern); GLAPI void APIENTRY glLineWidth(GLfloat width); GLAPI void APIENTRY glLineWidthxOES(GLfixed width); GLAPI void APIENTRY glLinkProgram(GLuint program); GLAPI void APIENTRY glLinkProgramARB(GLhandleARB programObj); GLAPI void APIENTRY glListBase(GLuint base); GLAPI void APIENTRY glListDrawCommandsStatesClientNV(GLuint list, GLuint segment, const void * *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); GLAPI void APIENTRY glListParameterfSGIX(GLuint list, GLenum pname, GLfloat param); GLAPI void APIENTRY glListParameterfvSGIX(GLuint list, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glListParameteriSGIX(GLuint list, GLenum pname, GLint param); GLAPI void APIENTRY glListParameterivSGIX(GLuint list, GLenum pname, const GLint *params); GLAPI void APIENTRY glLoadIdentity(void); GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX(GLbitfield mask); GLAPI void APIENTRY glLoadMatrixd(const GLdouble *m); GLAPI void APIENTRY glLoadMatrixf(const GLfloat *m); GLAPI void APIENTRY glLoadMatrixxOES(const GLfixed *m); GLAPI void APIENTRY glLoadName(GLuint name); GLAPI void APIENTRY glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte *program); GLAPI void APIENTRY glLoadTransposeMatrixd(const GLdouble *m); GLAPI void APIENTRY glLoadTransposeMatrixdARB(const GLdouble *m); GLAPI void APIENTRY glLoadTransposeMatrixf(const GLfloat *m); GLAPI void APIENTRY glLoadTransposeMatrixfARB(const GLfloat *m); GLAPI void APIENTRY glLoadTransposeMatrixxOES(const GLfixed *m); GLAPI void APIENTRY glLockArraysEXT(GLint first, GLsizei count); GLAPI void APIENTRY glLogicOp(GLenum opcode); GLAPI void APIENTRY glMakeBufferNonResidentNV(GLenum target); GLAPI void APIENTRY glMakeBufferResidentNV(GLenum target, GLenum access); GLAPI void APIENTRY glMakeImageHandleNonResidentARB(GLuint64 handle); GLAPI void APIENTRY glMakeImageHandleNonResidentNV(GLuint64 handle); GLAPI void APIENTRY glMakeImageHandleResidentARB(GLuint64 handle, GLenum access); GLAPI void APIENTRY glMakeImageHandleResidentNV(GLuint64 handle, GLenum access); GLAPI void APIENTRY glMakeNamedBufferNonResidentNV(GLuint buffer); GLAPI void APIENTRY glMakeNamedBufferResidentNV(GLuint buffer, GLenum access); GLAPI void APIENTRY glMakeTextureHandleNonResidentARB(GLuint64 handle); GLAPI void APIENTRY glMakeTextureHandleNonResidentNV(GLuint64 handle); GLAPI void APIENTRY glMakeTextureHandleResidentARB(GLuint64 handle); GLAPI void APIENTRY glMakeTextureHandleResidentNV(GLuint64 handle); GLAPI void APIENTRY glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); GLAPI void APIENTRY glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); GLAPI void APIENTRY glMap1xOES(GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); GLAPI void APIENTRY glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); GLAPI void APIENTRY glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); GLAPI void APIENTRY glMap2xOES(GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); GLAPI void * APIENTRY glMapBuffer(GLenum target, GLenum access); GLAPI void * APIENTRY glMapBufferARB(GLenum target, GLenum access); GLAPI void * APIENTRY glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); GLAPI void APIENTRY glMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean32 packed, const void *points); GLAPI void APIENTRY glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); GLAPI void APIENTRY glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); GLAPI void APIENTRY glMapGrid1xOES(GLint n, GLfixed u1, GLfixed u2); GLAPI void APIENTRY glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); GLAPI void APIENTRY glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); GLAPI void APIENTRY glMapGrid2xOES(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); GLAPI void * APIENTRY glMapNamedBuffer(GLuint buffer, GLenum access); GLAPI void * APIENTRY glMapNamedBufferEXT(GLuint buffer, GLenum access); GLAPI void * APIENTRY glMapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); GLAPI void * APIENTRY glMapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); GLAPI void * APIENTRY glMapObjectBufferATI(GLuint buffer); GLAPI void APIENTRY glMapParameterfvNV(GLenum target, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glMapParameterivNV(GLenum target, GLenum pname, const GLint *params); GLAPI void * APIENTRY glMapTexture2DINTEL(GLuint texture, GLint level, GLbitfield access, const GLint *stride, const GLenum *layout); GLAPI void APIENTRY glMapVertexAttrib1dAPPLE(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); GLAPI void APIENTRY glMapVertexAttrib1fAPPLE(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); GLAPI void APIENTRY glMapVertexAttrib2dAPPLE(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); GLAPI void APIENTRY glMapVertexAttrib2fAPPLE(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); GLAPI void APIENTRY glMaterialf(GLenum face, GLenum pname, GLfloat param); GLAPI void APIENTRY glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glMateriali(GLenum face, GLenum pname, GLint param); GLAPI void APIENTRY glMaterialiv(GLenum face, GLenum pname, const GLint *params); GLAPI void APIENTRY glMaterialxOES(GLenum face, GLenum pname, GLfixed param); GLAPI void APIENTRY glMaterialxvOES(GLenum face, GLenum pname, const GLfixed *param); GLAPI void APIENTRY glMatrixFrustumEXT(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); GLAPI void APIENTRY glMatrixIndexPointerARB(GLint size, GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glMatrixIndexubvARB(GLint size, const GLubyte *indices); GLAPI void APIENTRY glMatrixIndexuivARB(GLint size, const GLuint *indices); GLAPI void APIENTRY glMatrixIndexusvARB(GLint size, const GLushort *indices); GLAPI void APIENTRY glMatrixLoad3x2fNV(GLenum matrixMode, const GLfloat *m); GLAPI void APIENTRY glMatrixLoad3x3fNV(GLenum matrixMode, const GLfloat *m); GLAPI void APIENTRY glMatrixLoadIdentityEXT(GLenum mode); GLAPI void APIENTRY glMatrixLoadTranspose3x3fNV(GLenum matrixMode, const GLfloat *m); GLAPI void APIENTRY glMatrixLoadTransposedEXT(GLenum mode, const GLdouble *m); GLAPI void APIENTRY glMatrixLoadTransposefEXT(GLenum mode, const GLfloat *m); GLAPI void APIENTRY glMatrixLoaddEXT(GLenum mode, const GLdouble *m); GLAPI void APIENTRY glMatrixLoadfEXT(GLenum mode, const GLfloat *m); GLAPI void APIENTRY glMatrixMode(GLenum mode); GLAPI void APIENTRY glMatrixMult3x2fNV(GLenum matrixMode, const GLfloat *m); GLAPI void APIENTRY glMatrixMult3x3fNV(GLenum matrixMode, const GLfloat *m); GLAPI void APIENTRY glMatrixMultTranspose3x3fNV(GLenum matrixMode, const GLfloat *m); GLAPI void APIENTRY glMatrixMultTransposedEXT(GLenum mode, const GLdouble *m); GLAPI void APIENTRY glMatrixMultTransposefEXT(GLenum mode, const GLfloat *m); GLAPI void APIENTRY glMatrixMultdEXT(GLenum mode, const GLdouble *m); GLAPI void APIENTRY glMatrixMultfEXT(GLenum mode, const GLfloat *m); GLAPI void APIENTRY glMatrixOrthoEXT(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); GLAPI void APIENTRY glMatrixPopEXT(GLenum mode); GLAPI void APIENTRY glMatrixPushEXT(GLenum mode); GLAPI void APIENTRY glMatrixRotatedEXT(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glMatrixRotatefEXT(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glMatrixScaledEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glMatrixScalefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glMatrixTranslatedEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glMatrixTranslatefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glMaxShaderCompilerThreadsARB(GLuint count); GLAPI void APIENTRY glMaxShaderCompilerThreadsKHR(GLuint count); GLAPI void APIENTRY glMemoryBarrier(GLbitfield barriers); GLAPI void APIENTRY glMemoryBarrierByRegion(GLbitfield barriers); GLAPI void APIENTRY glMemoryBarrierEXT(GLbitfield barriers); GLAPI void APIENTRY glMemoryObjectParameterivEXT(GLuint memoryObject, GLenum pname, const GLint *params); GLAPI void APIENTRY glMinSampleShading(GLfloat value); GLAPI void APIENTRY glMinSampleShadingARB(GLfloat value); GLAPI void APIENTRY glMinmax(GLenum target, GLenum internalformat, GLboolean32 sink); GLAPI void APIENTRY glMinmaxEXT(GLenum target, GLenum internalformat, GLboolean32 sink); GLAPI void APIENTRY glMultMatrixd(const GLdouble *m); GLAPI void APIENTRY glMultMatrixf(const GLfloat *m); GLAPI void APIENTRY glMultMatrixxOES(const GLfixed *m); GLAPI void APIENTRY glMultTransposeMatrixd(const GLdouble *m); GLAPI void APIENTRY glMultTransposeMatrixdARB(const GLdouble *m); GLAPI void APIENTRY glMultTransposeMatrixf(const GLfloat *m); GLAPI void APIENTRY glMultTransposeMatrixfARB(const GLfloat *m); GLAPI void APIENTRY glMultTransposeMatrixxOES(const GLfixed *m); GLAPI void APIENTRY glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); GLAPI void APIENTRY glMultiDrawArraysEXT(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); GLAPI void APIENTRY glMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); GLAPI void APIENTRY glMultiDrawArraysIndirectAMD(GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessCountNV(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessNV(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); GLAPI void APIENTRY glMultiDrawArraysIndirectCount(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); GLAPI void APIENTRY glMultiDrawElementArrayAPPLE(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); GLAPI void APIENTRY glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount); GLAPI void APIENTRY glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex); GLAPI void APIENTRY glMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount); GLAPI void APIENTRY glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); GLAPI void APIENTRY glMultiDrawElementsIndirectAMD(GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessCountNV(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessNV(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); GLAPI void APIENTRY glMultiDrawElementsIndirectCount(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); GLAPI void APIENTRY glMultiModeDrawArraysIBM(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); GLAPI void APIENTRY glMultiModeDrawElementsIBM(const GLenum *mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount, GLint modestride); GLAPI void APIENTRY glMultiTexBufferEXT(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); GLAPI void APIENTRY glMultiTexCoord1bOES(GLenum texture, GLbyte32 s); GLAPI void APIENTRY glMultiTexCoord1bvOES(GLenum texture, const GLbyte *coords); GLAPI void APIENTRY glMultiTexCoord1d(GLenum target, GLdouble s); GLAPI void APIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s); GLAPI void APIENTRY glMultiTexCoord1dv(GLenum target, const GLdouble *v); GLAPI void APIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v); GLAPI void APIENTRY glMultiTexCoord1f(GLenum target, GLfloat s); GLAPI void APIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s); GLAPI void APIENTRY glMultiTexCoord1fv(GLenum target, const GLfloat *v); GLAPI void APIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v); GLAPI void APIENTRY glMultiTexCoord1hNV(GLenum target, GLhalfNV32 s); GLAPI void APIENTRY glMultiTexCoord1hvNV(GLenum target, const GLhalfNV *v); GLAPI void APIENTRY glMultiTexCoord1i(GLenum target, GLint s); GLAPI void APIENTRY glMultiTexCoord1iARB(GLenum target, GLint s); GLAPI void APIENTRY glMultiTexCoord1iv(GLenum target, const GLint *v); GLAPI void APIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v); GLAPI void APIENTRY glMultiTexCoord1s(GLenum target, GLshort32 s); GLAPI void APIENTRY glMultiTexCoord1sARB(GLenum target, GLshort32 s); GLAPI void APIENTRY glMultiTexCoord1sv(GLenum target, const GLshort *v); GLAPI void APIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v); GLAPI void APIENTRY glMultiTexCoord1xOES(GLenum texture, GLfixed s); GLAPI void APIENTRY glMultiTexCoord1xvOES(GLenum texture, const GLfixed *coords); GLAPI void APIENTRY glMultiTexCoord2bOES(GLenum texture, GLbyte32 s, GLbyte32 t); GLAPI void APIENTRY glMultiTexCoord2bvOES(GLenum texture, const GLbyte *coords); GLAPI void APIENTRY glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); GLAPI void APIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t); GLAPI void APIENTRY glMultiTexCoord2dv(GLenum target, const GLdouble *v); GLAPI void APIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v); GLAPI void APIENTRY glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); GLAPI void APIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t); GLAPI void APIENTRY glMultiTexCoord2fv(GLenum target, const GLfloat *v); GLAPI void APIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v); GLAPI void APIENTRY glMultiTexCoord2hNV(GLenum target, GLhalfNV32 s, GLhalfNV32 t); GLAPI void APIENTRY glMultiTexCoord2hvNV(GLenum target, const GLhalfNV *v); GLAPI void APIENTRY glMultiTexCoord2i(GLenum target, GLint s, GLint t); GLAPI void APIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t); GLAPI void APIENTRY glMultiTexCoord2iv(GLenum target, const GLint *v); GLAPI void APIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v); GLAPI void APIENTRY glMultiTexCoord2s(GLenum target, GLshort32 s, GLshort32 t); GLAPI void APIENTRY glMultiTexCoord2sARB(GLenum target, GLshort32 s, GLshort32 t); GLAPI void APIENTRY glMultiTexCoord2sv(GLenum target, const GLshort *v); GLAPI void APIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v); GLAPI void APIENTRY glMultiTexCoord2xOES(GLenum texture, GLfixed s, GLfixed t); GLAPI void APIENTRY glMultiTexCoord2xvOES(GLenum texture, const GLfixed *coords); GLAPI void APIENTRY glMultiTexCoord3bOES(GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r); GLAPI void APIENTRY glMultiTexCoord3bvOES(GLenum texture, const GLbyte *coords); GLAPI void APIENTRY glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); GLAPI void APIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r); GLAPI void APIENTRY glMultiTexCoord3dv(GLenum target, const GLdouble *v); GLAPI void APIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v); GLAPI void APIENTRY glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); GLAPI void APIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r); GLAPI void APIENTRY glMultiTexCoord3fv(GLenum target, const GLfloat *v); GLAPI void APIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v); GLAPI void APIENTRY glMultiTexCoord3hNV(GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r); GLAPI void APIENTRY glMultiTexCoord3hvNV(GLenum target, const GLhalfNV *v); GLAPI void APIENTRY glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); GLAPI void APIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r); GLAPI void APIENTRY glMultiTexCoord3iv(GLenum target, const GLint *v); GLAPI void APIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v); GLAPI void APIENTRY glMultiTexCoord3s(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r); GLAPI void APIENTRY glMultiTexCoord3sARB(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r); GLAPI void APIENTRY glMultiTexCoord3sv(GLenum target, const GLshort *v); GLAPI void APIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v); GLAPI void APIENTRY glMultiTexCoord3xOES(GLenum texture, GLfixed s, GLfixed t, GLfixed r); GLAPI void APIENTRY glMultiTexCoord3xvOES(GLenum texture, const GLfixed *coords); GLAPI void APIENTRY glMultiTexCoord4bOES(GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q); GLAPI void APIENTRY glMultiTexCoord4bvOES(GLenum texture, const GLbyte *coords); GLAPI void APIENTRY glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); GLAPI void APIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); GLAPI void APIENTRY glMultiTexCoord4dv(GLenum target, const GLdouble *v); GLAPI void APIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v); GLAPI void APIENTRY glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); GLAPI void APIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); GLAPI void APIENTRY glMultiTexCoord4fv(GLenum target, const GLfloat *v); GLAPI void APIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v); GLAPI void APIENTRY glMultiTexCoord4hNV(GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q); GLAPI void APIENTRY glMultiTexCoord4hvNV(GLenum target, const GLhalfNV *v); GLAPI void APIENTRY glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); GLAPI void APIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q); GLAPI void APIENTRY glMultiTexCoord4iv(GLenum target, const GLint *v); GLAPI void APIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v); GLAPI void APIENTRY glMultiTexCoord4s(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q); GLAPI void APIENTRY glMultiTexCoord4sARB(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q); GLAPI void APIENTRY glMultiTexCoord4sv(GLenum target, const GLshort *v); GLAPI void APIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v); GLAPI void APIENTRY glMultiTexCoord4xOES(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); GLAPI void APIENTRY glMultiTexCoord4xvOES(GLenum texture, const GLfixed *coords); GLAPI void APIENTRY glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); GLAPI void APIENTRY glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords); GLAPI void APIENTRY glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); GLAPI void APIENTRY glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords); GLAPI void APIENTRY glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); GLAPI void APIENTRY glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords); GLAPI void APIENTRY glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); GLAPI void APIENTRY glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords); GLAPI void APIENTRY glMultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glMultiTexEnvfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param); GLAPI void APIENTRY glMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glMultiTexEnviEXT(GLenum texunit, GLenum target, GLenum pname, GLint param); GLAPI void APIENTRY glMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glMultiTexGendEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble param); GLAPI void APIENTRY glMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); GLAPI void APIENTRY glMultiTexGenfEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat param); GLAPI void APIENTRY glMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glMultiTexGeniEXT(GLenum texunit, GLenum coord, GLenum pname, GLint param); GLAPI void APIENTRY glMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, const GLint *params); GLAPI void APIENTRY glMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, const GLuint *params); GLAPI void APIENTRY glMultiTexParameterfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param); GLAPI void APIENTRY glMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glMultiTexParameteriEXT(GLenum texunit, GLenum target, GLenum pname, GLint param); GLAPI void APIENTRY glMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glMultiTexRenderbufferEXT(GLenum texunit, GLenum target, GLuint renderbuffer); GLAPI void APIENTRY glMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glMulticastBarrierNV(void); GLAPI void APIENTRY glMulticastBlitFramebufferNV(GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); GLAPI void APIENTRY glMulticastBufferSubDataNV(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); GLAPI void APIENTRY glMulticastCopyBufferSubDataNV(GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); GLAPI void APIENTRY glMulticastCopyImageSubDataNV(GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); GLAPI void APIENTRY glMulticastFramebufferSampleLocationsfvNV(GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); GLAPI void APIENTRY glMulticastGetQueryObjecti64vNV(GLuint gpu, GLuint id, GLenum pname, GLint64 *params); GLAPI void APIENTRY glMulticastGetQueryObjectivNV(GLuint gpu, GLuint id, GLenum pname, GLint *params); GLAPI void APIENTRY glMulticastGetQueryObjectui64vNV(GLuint gpu, GLuint id, GLenum pname, GLuint64 *params); GLAPI void APIENTRY glMulticastGetQueryObjectuivNV(GLuint gpu, GLuint id, GLenum pname, GLuint *params); GLAPI void APIENTRY glMulticastWaitSyncNV(GLuint signalGpu, GLbitfield waitGpuMask); GLAPI void APIENTRY glNamedBufferData(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); GLAPI void APIENTRY glNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); GLAPI void APIENTRY glNamedBufferPageCommitmentARB(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit); GLAPI void APIENTRY glNamedBufferPageCommitmentEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit); GLAPI void APIENTRY glNamedBufferStorage(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); GLAPI void APIENTRY glNamedBufferStorageEXT(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); GLAPI void APIENTRY glNamedBufferStorageExternalEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); GLAPI void APIENTRY glNamedBufferStorageMemEXT(GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); GLAPI void APIENTRY glNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); GLAPI void APIENTRY glNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); GLAPI void APIENTRY glNamedCopyBufferSubDataEXT(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); GLAPI void APIENTRY glNamedFramebufferDrawBuffer(GLuint framebuffer, GLenum buf); GLAPI void APIENTRY glNamedFramebufferDrawBuffers(GLuint framebuffer, GLsizei n, const GLenum *bufs); GLAPI void APIENTRY glNamedFramebufferParameteri(GLuint framebuffer, GLenum pname, GLint param); GLAPI void APIENTRY glNamedFramebufferParameteriEXT(GLuint framebuffer, GLenum pname, GLint param); GLAPI void APIENTRY glNamedFramebufferReadBuffer(GLuint framebuffer, GLenum src); GLAPI void APIENTRY glNamedFramebufferRenderbuffer(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); GLAPI void APIENTRY glNamedFramebufferSampleLocationsfvARB(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); GLAPI void APIENTRY glNamedFramebufferSampleLocationsfvNV(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); GLAPI void APIENTRY glNamedFramebufferSamplePositionsfvAMD(GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values); GLAPI void APIENTRY glNamedFramebufferTexture(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); GLAPI void APIENTRY glNamedFramebufferTexture1DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLAPI void APIENTRY glNamedFramebufferTexture2DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLAPI void APIENTRY glNamedFramebufferTexture3DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); GLAPI void APIENTRY glNamedFramebufferTextureEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); GLAPI void APIENTRY glNamedFramebufferTextureLayer(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT(GLuint program, GLenum target, GLuint index, const GLdouble *params); GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT(GLuint program, GLenum target, GLuint index, const GLfloat *params); GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT(GLuint program, GLenum target, GLuint index, const GLint *params); GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT(GLuint program, GLenum target, GLuint index, const GLuint *params); GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); GLAPI void APIENTRY glNamedProgramStringEXT(GLuint program, GLenum target, GLenum format, GLsizei len, const void *string); GLAPI void APIENTRY glNamedRenderbufferStorage(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glNamedRenderbufferStorageEXT(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glNamedRenderbufferStorageMultisample(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glNamedStringARB(GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); GLAPI void APIENTRY glNewList(GLuint list, GLenum mode); GLAPI GLuint APIENTRY glNewObjectBufferATI(GLsizei size, const void *pointer, GLenum usage); GLAPI void APIENTRY glNewTraceMESA(GLbitfield mask, const GLubyte *traceName); GLAPI void APIENTRY glNormal3b(GLbyte32 nx, GLbyte32 ny, GLbyte32 nz); GLAPI void APIENTRY glNormal3bv(const GLbyte *v); GLAPI void APIENTRY glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); GLAPI void APIENTRY glNormal3dv(const GLdouble *v); GLAPI void APIENTRY glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); GLAPI void APIENTRY glNormal3fVertex3fSUN(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glNormal3fVertex3fvSUN(const GLfloat *n, const GLfloat *v); GLAPI void APIENTRY glNormal3fv(const GLfloat *v); GLAPI void APIENTRY glNormal3hNV(GLhalfNV32 nx, GLhalfNV32 ny, GLhalfNV32 nz); GLAPI void APIENTRY glNormal3hvNV(const GLhalfNV *v); GLAPI void APIENTRY glNormal3i(GLint nx, GLint ny, GLint nz); GLAPI void APIENTRY glNormal3iv(const GLint *v); GLAPI void APIENTRY glNormal3s(GLshort32 nx, GLshort32 ny, GLshort32 nz); GLAPI void APIENTRY glNormal3sv(const GLshort *v); GLAPI void APIENTRY glNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz); GLAPI void APIENTRY glNormal3xvOES(const GLfixed *coords); GLAPI void APIENTRY glNormalFormatNV(GLenum type, GLsizei stride); GLAPI void APIENTRY glNormalP3ui(GLenum type, GLuint coords); GLAPI void APIENTRY glNormalP3uiv(GLenum type, const GLuint *coords); GLAPI void APIENTRY glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void APIENTRY glNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const void *pointer); GLAPI void APIENTRY glNormalPointerListIBM(GLenum type, GLint stride, const void * *pointer, GLint ptrstride); GLAPI void APIENTRY glNormalPointervINTEL(GLenum type, const void * *pointer); GLAPI void APIENTRY glNormalStream3bATI(GLenum stream, GLbyte32 nx, GLbyte32 ny, GLbyte32 nz); GLAPI void APIENTRY glNormalStream3bvATI(GLenum stream, const GLbyte *coords); GLAPI void APIENTRY glNormalStream3dATI(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); GLAPI void APIENTRY glNormalStream3dvATI(GLenum stream, const GLdouble *coords); GLAPI void APIENTRY glNormalStream3fATI(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); GLAPI void APIENTRY glNormalStream3fvATI(GLenum stream, const GLfloat *coords); GLAPI void APIENTRY glNormalStream3iATI(GLenum stream, GLint nx, GLint ny, GLint nz); GLAPI void APIENTRY glNormalStream3ivATI(GLenum stream, const GLint *coords); GLAPI void APIENTRY glNormalStream3sATI(GLenum stream, GLshort32 nx, GLshort32 ny, GLshort32 nz); GLAPI void APIENTRY glNormalStream3svATI(GLenum stream, const GLshort *coords); GLAPI void APIENTRY glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label); GLAPI void APIENTRY glObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label); GLAPI GLenum APIENTRY glObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option); GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option); GLAPI void APIENTRY glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); GLAPI void APIENTRY glOrthofOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); GLAPI void APIENTRY glOrthoxOES(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); GLAPI void APIENTRY glPNTrianglesfATI(GLenum pname, GLfloat param); GLAPI void APIENTRY glPNTrianglesiATI(GLenum pname, GLint param); GLAPI void APIENTRY glPassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle); GLAPI void APIENTRY glPassThrough(GLfloat token); GLAPI void APIENTRY glPassThroughxOES(GLfixed token); GLAPI void APIENTRY glPatchParameterfv(GLenum pname, const GLfloat *values); GLAPI void APIENTRY glPatchParameteri(GLenum pname, GLint value); GLAPI void APIENTRY glPathColorGenNV(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); GLAPI void APIENTRY glPathCommandsNV(GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); GLAPI void APIENTRY glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); GLAPI void APIENTRY glPathCoverDepthFuncNV(GLenum func); GLAPI void APIENTRY glPathDashArrayNV(GLuint path, GLsizei dashCount, const GLfloat *dashArray); GLAPI void APIENTRY glPathFogGenNV(GLenum genMode); GLAPI GLenum APIENTRY glPathGlyphIndexArrayNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); GLAPI GLenum APIENTRY glPathGlyphIndexRangeNV(GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); GLAPI void APIENTRY glPathGlyphRangeNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); GLAPI void APIENTRY glPathGlyphsNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); GLAPI GLenum APIENTRY glPathMemoryGlyphIndexArrayNV(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); GLAPI void APIENTRY glPathParameterfNV(GLuint path, GLenum pname, GLfloat value); GLAPI void APIENTRY glPathParameterfvNV(GLuint path, GLenum pname, const GLfloat *value); GLAPI void APIENTRY glPathParameteriNV(GLuint path, GLenum pname, GLint value); GLAPI void APIENTRY glPathParameterivNV(GLuint path, GLenum pname, const GLint *value); GLAPI void APIENTRY glPathStencilDepthOffsetNV(GLfloat factor, GLfloat units); GLAPI void APIENTRY glPathStencilFuncNV(GLenum func, GLint ref, GLuint mask); GLAPI void APIENTRY glPathStringNV(GLuint path, GLenum format, GLsizei length, const void *pathString); GLAPI void APIENTRY glPathSubCommandsNV(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); GLAPI void APIENTRY glPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); GLAPI void APIENTRY glPathTexGenNV(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); GLAPI void APIENTRY glPauseTransformFeedback(void); GLAPI void APIENTRY glPauseTransformFeedbackNV(void); GLAPI void APIENTRY glPixelDataRangeNV(GLenum target, GLsizei length, const void *pointer); GLAPI void APIENTRY glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values); GLAPI void APIENTRY glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values); GLAPI void APIENTRY glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values); GLAPI void APIENTRY glPixelMapx(GLenum map, GLint size, const GLfixed *values); GLAPI void APIENTRY glPixelStoref(GLenum pname, GLfloat param); GLAPI void APIENTRY glPixelStorei(GLenum pname, GLint param); GLAPI void APIENTRY glPixelStorex(GLenum pname, GLfixed param); GLAPI void APIENTRY glPixelTexGenParameterfSGIS(GLenum pname, GLfloat param); GLAPI void APIENTRY glPixelTexGenParameterfvSGIS(GLenum pname, const GLfloat *params); GLAPI void APIENTRY glPixelTexGenParameteriSGIS(GLenum pname, GLint param); GLAPI void APIENTRY glPixelTexGenParameterivSGIS(GLenum pname, const GLint *params); GLAPI void APIENTRY glPixelTexGenSGIX(GLenum mode); GLAPI void APIENTRY glPixelTransferf(GLenum pname, GLfloat param); GLAPI void APIENTRY glPixelTransferi(GLenum pname, GLint param); GLAPI void APIENTRY glPixelTransferxOES(GLenum pname, GLfixed param); GLAPI void APIENTRY glPixelTransformParameterfEXT(GLenum target, GLenum pname, GLfloat param); GLAPI void APIENTRY glPixelTransformParameterfvEXT(GLenum target, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glPixelTransformParameteriEXT(GLenum target, GLenum pname, GLint param); GLAPI void APIENTRY glPixelTransformParameterivEXT(GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glPixelZoom(GLfloat xfactor, GLfloat yfactor); GLAPI void APIENTRY glPixelZoomxOES(GLfixed xfactor, GLfixed yfactor); GLAPI GLboolean APIENTRY glPointAlongPathNV(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); GLAPI void APIENTRY glPointParameterf(GLenum pname, GLfloat param); GLAPI void APIENTRY glPointParameterfARB(GLenum pname, GLfloat param); GLAPI void APIENTRY glPointParameterfEXT(GLenum pname, GLfloat param); GLAPI void APIENTRY glPointParameterfSGIS(GLenum pname, GLfloat param); GLAPI void APIENTRY glPointParameterfv(GLenum pname, const GLfloat *params); GLAPI void APIENTRY glPointParameterfvARB(GLenum pname, const GLfloat *params); GLAPI void APIENTRY glPointParameterfvEXT(GLenum pname, const GLfloat *params); GLAPI void APIENTRY glPointParameterfvSGIS(GLenum pname, const GLfloat *params); GLAPI void APIENTRY glPointParameteri(GLenum pname, GLint param); GLAPI void APIENTRY glPointParameteriNV(GLenum pname, GLint param); GLAPI void APIENTRY glPointParameteriv(GLenum pname, const GLint *params); GLAPI void APIENTRY glPointParameterivNV(GLenum pname, const GLint *params); GLAPI void APIENTRY glPointParameterxvOES(GLenum pname, const GLfixed *params); GLAPI void APIENTRY glPointSize(GLfloat size); GLAPI void APIENTRY glPointSizePointerAPPLE(GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void APIENTRY glPointSizexOES(GLfixed size); GLAPI GLint APIENTRY glPollAsyncSGIX(GLuint *markerp); GLAPI GLint APIENTRY glPollInstrumentsSGIX(GLint *marker_p); GLAPI void APIENTRY glPolygonMode(GLenum face, GLenum mode); GLAPI void APIENTRY glPolygonOffset(GLfloat factor, GLfloat units); GLAPI void APIENTRY glPolygonOffsetClamp(GLfloat factor, GLfloat units, GLfloat clamp); GLAPI void APIENTRY glPolygonOffsetClampEXT(GLfloat factor, GLfloat units, GLfloat clamp); GLAPI void APIENTRY glPolygonOffsetEXT(GLfloat factor, GLfloat bias); GLAPI void APIENTRY glPolygonOffsetxOES(GLfixed factor, GLfixed units); GLAPI void APIENTRY glPolygonStipple(const GLubyte *mask); GLAPI void APIENTRY glPopAttrib(void); GLAPI void APIENTRY glPopClientAttrib(void); GLAPI void APIENTRY glPopDebugGroup(void); GLAPI void APIENTRY glPopGroupMarkerEXT(void); GLAPI void APIENTRY glPopMatrix(void); GLAPI void APIENTRY glPopName(void); GLAPI void APIENTRY glPresentFrameDualFillNV(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); GLAPI void APIENTRY glPresentFrameKeyedNV(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); GLAPI void APIENTRY glPrimitiveBoundingBoxARB(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); GLAPI void APIENTRY glPrimitiveRestartIndex(GLuint index); GLAPI void APIENTRY glPrimitiveRestartIndexNV(GLuint index); GLAPI void APIENTRY glPrimitiveRestartNV(void); GLAPI void APIENTRY glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities); GLAPI void APIENTRY glPrioritizeTexturesEXT(GLsizei n, const GLuint *textures, const GLclampf *priorities); GLAPI void APIENTRY glPrioritizeTexturesxOES(GLsizei n, const GLuint *textures, const GLfixed *priorities); GLAPI void APIENTRY glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); GLAPI void APIENTRY glProgramBufferParametersIivNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params); GLAPI void APIENTRY glProgramBufferParametersIuivNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params); GLAPI void APIENTRY glProgramBufferParametersfvNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params); GLAPI void APIENTRY glProgramCallbackMESA(GLenum target, GLprogramcallbackMESA callback, GLvoid *data); GLAPI void APIENTRY glProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glProgramEnvParameter4dvARB(GLenum target, GLuint index, const GLdouble *params); GLAPI void APIENTRY glProgramEnvParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void APIENTRY glProgramEnvParameter4fvARB(GLenum target, GLuint index, const GLfloat *params); GLAPI void APIENTRY glProgramEnvParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); GLAPI void APIENTRY glProgramEnvParameterI4ivNV(GLenum target, GLuint index, const GLint *params); GLAPI void APIENTRY glProgramEnvParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); GLAPI void APIENTRY glProgramEnvParameterI4uivNV(GLenum target, GLuint index, const GLuint *params); GLAPI void APIENTRY glProgramEnvParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat *params); GLAPI void APIENTRY glProgramEnvParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint *params); GLAPI void APIENTRY glProgramEnvParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint *params); GLAPI void APIENTRY glProgramLocalParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glProgramLocalParameter4dvARB(GLenum target, GLuint index, const GLdouble *params); GLAPI void APIENTRY glProgramLocalParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void APIENTRY glProgramLocalParameter4fvARB(GLenum target, GLuint index, const GLfloat *params); GLAPI void APIENTRY glProgramLocalParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); GLAPI void APIENTRY glProgramLocalParameterI4ivNV(GLenum target, GLuint index, const GLint *params); GLAPI void APIENTRY glProgramLocalParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); GLAPI void APIENTRY glProgramLocalParameterI4uivNV(GLenum target, GLuint index, const GLuint *params); GLAPI void APIENTRY glProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat *params); GLAPI void APIENTRY glProgramLocalParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint *params); GLAPI void APIENTRY glProgramLocalParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint *params); GLAPI void APIENTRY glProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); GLAPI void APIENTRY glProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void APIENTRY glProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); GLAPI void APIENTRY glProgramParameter4dNV(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glProgramParameter4dvNV(GLenum target, GLuint index, const GLdouble *v); GLAPI void APIENTRY glProgramParameter4fNV(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void APIENTRY glProgramParameter4fvNV(GLenum target, GLuint index, const GLfloat *v); GLAPI void APIENTRY glProgramParameteri(GLuint program, GLenum pname, GLint value); GLAPI void APIENTRY glProgramParameteriARB(GLuint program, GLenum pname, GLint value); GLAPI void APIENTRY glProgramParameteriEXT(GLuint program, GLenum pname, GLint value); GLAPI void APIENTRY glProgramParameters4dvNV(GLenum target, GLuint index, GLsizei count, const GLdouble *v); GLAPI void APIENTRY glProgramParameters4fvNV(GLenum target, GLuint index, GLsizei count, const GLfloat *v); GLAPI void APIENTRY glProgramPathFragmentInputGenNV(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); GLAPI void APIENTRY glProgramStringARB(GLenum target, GLenum format, GLsizei len, const void *string); GLAPI void APIENTRY glProgramSubroutineParametersuivNV(GLenum target, GLsizei count, const GLuint *params); GLAPI void APIENTRY glProgramUniform1d(GLuint program, GLint location, GLdouble v0); GLAPI void APIENTRY glProgramUniform1dEXT(GLuint program, GLint location, GLdouble x); GLAPI void APIENTRY glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); GLAPI void APIENTRY glProgramUniform1dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value); GLAPI void APIENTRY glProgramUniform1f(GLuint program, GLint location, GLfloat v0); GLAPI void APIENTRY glProgramUniform1fEXT(GLuint program, GLint location, GLfloat v0); GLAPI void APIENTRY glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glProgramUniform1i(GLuint program, GLint location, GLint v0); GLAPI void APIENTRY glProgramUniform1i64ARB(GLuint program, GLint location, GLint64 x); GLAPI void APIENTRY glProgramUniform1i64NV(GLuint program, GLint location, GLint64EXT x); GLAPI void APIENTRY glProgramUniform1i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value); GLAPI void APIENTRY glProgramUniform1i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); GLAPI void APIENTRY glProgramUniform1iEXT(GLuint program, GLint location, GLint v0); GLAPI void APIENTRY glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glProgramUniform1ui(GLuint program, GLint location, GLuint v0); GLAPI void APIENTRY glProgramUniform1ui64ARB(GLuint program, GLint location, GLuint64 x); GLAPI void APIENTRY glProgramUniform1ui64NV(GLuint program, GLint location, GLuint64EXT x); GLAPI void APIENTRY glProgramUniform1ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value); GLAPI void APIENTRY glProgramUniform1ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); GLAPI void APIENTRY glProgramUniform1uiEXT(GLuint program, GLint location, GLuint v0); GLAPI void APIENTRY glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glProgramUniform1uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1); GLAPI void APIENTRY glProgramUniform2dEXT(GLuint program, GLint location, GLdouble x, GLdouble y); GLAPI void APIENTRY glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); GLAPI void APIENTRY glProgramUniform2dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value); GLAPI void APIENTRY glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1); GLAPI void APIENTRY glProgramUniform2fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1); GLAPI void APIENTRY glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1); GLAPI void APIENTRY glProgramUniform2i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y); GLAPI void APIENTRY glProgramUniform2i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y); GLAPI void APIENTRY glProgramUniform2i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value); GLAPI void APIENTRY glProgramUniform2i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); GLAPI void APIENTRY glProgramUniform2iEXT(GLuint program, GLint location, GLint v0, GLint v1); GLAPI void APIENTRY glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); GLAPI void APIENTRY glProgramUniform2ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y); GLAPI void APIENTRY glProgramUniform2ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); GLAPI void APIENTRY glProgramUniform2ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value); GLAPI void APIENTRY glProgramUniform2ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); GLAPI void APIENTRY glProgramUniform2uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1); GLAPI void APIENTRY glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glProgramUniform2uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); GLAPI void APIENTRY glProgramUniform3dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); GLAPI void APIENTRY glProgramUniform3dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value); GLAPI void APIENTRY glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); GLAPI void APIENTRY glProgramUniform3fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); GLAPI void APIENTRY glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); GLAPI void APIENTRY glProgramUniform3i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); GLAPI void APIENTRY glProgramUniform3i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); GLAPI void APIENTRY glProgramUniform3i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value); GLAPI void APIENTRY glProgramUniform3i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); GLAPI void APIENTRY glProgramUniform3iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); GLAPI void APIENTRY glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); GLAPI void APIENTRY glProgramUniform3ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z); GLAPI void APIENTRY glProgramUniform3ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); GLAPI void APIENTRY glProgramUniform3ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value); GLAPI void APIENTRY glProgramUniform3ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); GLAPI void APIENTRY glProgramUniform3uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); GLAPI void APIENTRY glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glProgramUniform3uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); GLAPI void APIENTRY glProgramUniform4dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); GLAPI void APIENTRY glProgramUniform4dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value); GLAPI void APIENTRY glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); GLAPI void APIENTRY glProgramUniform4fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); GLAPI void APIENTRY glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); GLAPI void APIENTRY glProgramUniform4i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); GLAPI void APIENTRY glProgramUniform4i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); GLAPI void APIENTRY glProgramUniform4i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value); GLAPI void APIENTRY glProgramUniform4i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); GLAPI void APIENTRY glProgramUniform4iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); GLAPI void APIENTRY glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); GLAPI void APIENTRY glProgramUniform4ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); GLAPI void APIENTRY glProgramUniform4ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); GLAPI void APIENTRY glProgramUniform4ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value); GLAPI void APIENTRY glProgramUniform4ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); GLAPI void APIENTRY glProgramUniform4uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); GLAPI void APIENTRY glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glProgramUniform4uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glProgramUniformHandleui64ARB(GLuint program, GLint location, GLuint64 value); GLAPI void APIENTRY glProgramUniformHandleui64NV(GLuint program, GLint location, GLuint64 value); GLAPI void APIENTRY glProgramUniformHandleui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *values); GLAPI void APIENTRY glProgramUniformHandleui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64 *values); GLAPI void APIENTRY glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glProgramUniformui64NV(GLuint program, GLint location, GLuint64EXT value); GLAPI void APIENTRY glProgramUniformui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); GLAPI void APIENTRY glProgramVertexLimitNV(GLenum target, GLint limit); GLAPI void APIENTRY glProvokingVertex(GLenum mode); GLAPI void APIENTRY glProvokingVertexEXT(GLenum mode); GLAPI void APIENTRY glPushAttrib(GLbitfield mask); GLAPI void APIENTRY glPushClientAttrib(GLbitfield mask); GLAPI void APIENTRY glPushClientAttribDefaultEXT(GLbitfield mask); GLAPI void APIENTRY glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message); GLAPI void APIENTRY glPushGroupMarkerEXT(GLsizei length, const GLchar *marker); GLAPI void APIENTRY glPushMatrix(void); GLAPI void APIENTRY glPushName(GLuint name); GLAPI void APIENTRY glQueryCounter(GLuint id, GLenum target); GLAPI GLbitfield APIENTRY glQueryMatrixxOES(GLfixed *mantissa, GLint *exponent); GLAPI void APIENTRY glQueryObjectParameteruiAMD(GLenum target, GLuint id, GLenum pname, GLuint param); GLAPI GLint APIENTRY glQueryResourceNV(GLenum queryType, GLint tagId, GLuint bufSize, GLint *buffer); GLAPI void APIENTRY glQueryResourceTagNV(GLint tagId, const GLchar *tagString); GLAPI void APIENTRY glRasterPos2d(GLdouble x, GLdouble y); GLAPI void APIENTRY glRasterPos2dv(const GLdouble *v); GLAPI void APIENTRY glRasterPos2f(GLfloat x, GLfloat y); GLAPI void APIENTRY glRasterPos2fv(const GLfloat *v); GLAPI void APIENTRY glRasterPos2i(GLint x, GLint y); GLAPI void APIENTRY glRasterPos2iv(const GLint *v); GLAPI void APIENTRY glRasterPos2s(GLshort32 x, GLshort32 y); GLAPI void APIENTRY glRasterPos2sv(const GLshort *v); GLAPI void APIENTRY glRasterPos2xOES(GLfixed x, GLfixed y); GLAPI void APIENTRY glRasterPos2xvOES(const GLfixed *coords); GLAPI void APIENTRY glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glRasterPos3dv(const GLdouble *v); GLAPI void APIENTRY glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glRasterPos3fv(const GLfloat *v); GLAPI void APIENTRY glRasterPos3i(GLint x, GLint y, GLint z); GLAPI void APIENTRY glRasterPos3iv(const GLint *v); GLAPI void APIENTRY glRasterPos3s(GLshort32 x, GLshort32 y, GLshort32 z); GLAPI void APIENTRY glRasterPos3sv(const GLshort *v); GLAPI void APIENTRY glRasterPos3xOES(GLfixed x, GLfixed y, GLfixed z); GLAPI void APIENTRY glRasterPos3xvOES(const GLfixed *coords); GLAPI void APIENTRY glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glRasterPos4dv(const GLdouble *v); GLAPI void APIENTRY glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void APIENTRY glRasterPos4fv(const GLfloat *v); GLAPI void APIENTRY glRasterPos4i(GLint x, GLint y, GLint z, GLint w); GLAPI void APIENTRY glRasterPos4iv(const GLint *v); GLAPI void APIENTRY glRasterPos4s(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); GLAPI void APIENTRY glRasterPos4sv(const GLshort *v); GLAPI void APIENTRY glRasterPos4xOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w); GLAPI void APIENTRY glRasterPos4xvOES(const GLfixed *coords); GLAPI void APIENTRY glRasterSamplesEXT(GLuint samples, GLboolean32 fixedsamplelocations); GLAPI void APIENTRY glReadBuffer(GLenum mode); GLAPI void APIENTRY glReadInstrumentsSGIX(GLint marker); GLAPI void APIENTRY glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); GLAPI void APIENTRY glReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); GLAPI void APIENTRY glReadnPixelsARB(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); GLAPI void APIENTRY glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); GLAPI void APIENTRY glRectdv(const GLdouble *v1, const GLdouble *v2); GLAPI void APIENTRY glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); GLAPI void APIENTRY glRectfv(const GLfloat *v1, const GLfloat *v2); GLAPI void APIENTRY glRecti(GLint x1, GLint y1, GLint x2, GLint y2); GLAPI void APIENTRY glRectiv(const GLint *v1, const GLint *v2); GLAPI void APIENTRY glRects(GLshort32 x1, GLshort32 y1, GLshort32 x2, GLshort32 y2); GLAPI void APIENTRY glRectsv(const GLshort *v1, const GLshort *v2); GLAPI void APIENTRY glRectxOES(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); GLAPI void APIENTRY glRectxvOES(const GLfixed *v1, const GLfixed *v2); GLAPI void APIENTRY glReferencePlaneSGIX(const GLdouble *equation); GLAPI GLboolean APIENTRY glReleaseKeyedMutexWin32EXT(GLuint memory, GLuint64 key); GLAPI void APIENTRY glReleaseShaderCompiler(void); GLAPI void APIENTRY glRenderGpuMaskNV(GLbitfield mask); GLAPI GLint APIENTRY glRenderMode(GLenum mode); GLAPI void APIENTRY glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glReplacementCodePointerSUN(GLenum type, GLsizei stride, const void * *pointer); GLAPI void APIENTRY glReplacementCodeubSUN(GLubyte32 code); GLAPI void APIENTRY glReplacementCodeubvSUN(const GLubyte *code); GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN(const GLuint *rc, const GLfloat *c, const GLfloat *v); GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN(GLuint rc, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN(const GLuint *rc, const GLubyte *c, const GLfloat *v); GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *n, const GLfloat *v); GLAPI void APIENTRY glReplacementCodeuiSUN(GLuint code); GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *v); GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN(GLuint rc, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN(const GLuint *rc, const GLfloat *v); GLAPI void APIENTRY glReplacementCodeuivSUN(const GLuint *code); GLAPI void APIENTRY glReplacementCodeusSUN(GLushort32 code); GLAPI void APIENTRY glReplacementCodeusvSUN(const GLushort *code); GLAPI void APIENTRY glRequestResidentProgramsNV(GLsizei n, const GLuint *programs); GLAPI void APIENTRY glResetHistogram(GLenum target); GLAPI void APIENTRY glResetHistogramEXT(GLenum target); GLAPI void APIENTRY glResetMinmax(GLenum target); GLAPI void APIENTRY glResetMinmaxEXT(GLenum target); GLAPI void APIENTRY glResizeBuffersMESA(void); GLAPI void APIENTRY glResolveDepthValuesNV(void); GLAPI void APIENTRY glResumeTransformFeedback(void); GLAPI void APIENTRY glResumeTransformFeedbackNV(void); GLAPI void APIENTRY glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); GLAPI void APIENTRY glSampleCoverage(GLfloat value, GLboolean32 invert); GLAPI void APIENTRY glSampleCoverageARB(GLfloat value, GLboolean32 invert); GLAPI void APIENTRY glSampleCoverageOES(GLfixed value, GLboolean32 invert); GLAPI void APIENTRY glSampleMapATI(GLuint dst, GLuint interp, GLenum swizzle); GLAPI void APIENTRY glSampleMaskEXT(GLclampf value, GLboolean32 invert); GLAPI void APIENTRY glSampleMaskIndexedNV(GLuint index, GLbitfield mask); GLAPI void APIENTRY glSampleMaskSGIS(GLclampf value, GLboolean32 invert); GLAPI void APIENTRY glSampleMaski(GLuint maskNumber, GLbitfield mask); GLAPI void APIENTRY glSamplePass(GLenum mode); GLAPI void APIENTRY glSamplePassARB(GLenum mode); GLAPI void APIENTRY glSamplePatternEXT(GLenum pattern); GLAPI void APIENTRY glSamplePatternSGIS(GLenum pattern); GLAPI void APIENTRY glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param); GLAPI void APIENTRY glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param); GLAPI void APIENTRY glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); GLAPI void APIENTRY glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param); GLAPI void APIENTRY glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); GLAPI void APIENTRY glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param); GLAPI void APIENTRY glScaled(GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glScalef(GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glScalexOES(GLfixed x, GLfixed y, GLfixed z); GLAPI void APIENTRY glScissor(GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glScissorArrayv(GLuint first, GLsizei count, const GLint *v); GLAPI void APIENTRY glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); GLAPI void APIENTRY glScissorIndexedv(GLuint index, const GLint *v); GLAPI void APIENTRY glSecondaryColor3b(GLbyte32 red, GLbyte32 green, GLbyte32 blue); GLAPI void APIENTRY glSecondaryColor3bEXT(GLbyte32 red, GLbyte32 green, GLbyte32 blue); GLAPI void APIENTRY glSecondaryColor3bv(const GLbyte *v); GLAPI void APIENTRY glSecondaryColor3bvEXT(const GLbyte *v); GLAPI void APIENTRY glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); GLAPI void APIENTRY glSecondaryColor3dEXT(GLdouble red, GLdouble green, GLdouble blue); GLAPI void APIENTRY glSecondaryColor3dv(const GLdouble *v); GLAPI void APIENTRY glSecondaryColor3dvEXT(const GLdouble *v); GLAPI void APIENTRY glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); GLAPI void APIENTRY glSecondaryColor3fEXT(GLfloat red, GLfloat green, GLfloat blue); GLAPI void APIENTRY glSecondaryColor3fv(const GLfloat *v); GLAPI void APIENTRY glSecondaryColor3fvEXT(const GLfloat *v); GLAPI void APIENTRY glSecondaryColor3hNV(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue); GLAPI void APIENTRY glSecondaryColor3hvNV(const GLhalfNV *v); GLAPI void APIENTRY glSecondaryColor3i(GLint red, GLint green, GLint blue); GLAPI void APIENTRY glSecondaryColor3iEXT(GLint red, GLint green, GLint blue); GLAPI void APIENTRY glSecondaryColor3iv(const GLint *v); GLAPI void APIENTRY glSecondaryColor3ivEXT(const GLint *v); GLAPI void APIENTRY glSecondaryColor3s(GLshort32 red, GLshort32 green, GLshort32 blue); GLAPI void APIENTRY glSecondaryColor3sEXT(GLshort32 red, GLshort32 green, GLshort32 blue); GLAPI void APIENTRY glSecondaryColor3sv(const GLshort *v); GLAPI void APIENTRY glSecondaryColor3svEXT(const GLshort *v); GLAPI void APIENTRY glSecondaryColor3ub(GLubyte32 red, GLubyte32 green, GLubyte32 blue); GLAPI void APIENTRY glSecondaryColor3ubEXT(GLubyte32 red, GLubyte32 green, GLubyte32 blue); GLAPI void APIENTRY glSecondaryColor3ubv(const GLubyte *v); GLAPI void APIENTRY glSecondaryColor3ubvEXT(const GLubyte *v); GLAPI void APIENTRY glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); GLAPI void APIENTRY glSecondaryColor3uiEXT(GLuint red, GLuint green, GLuint blue); GLAPI void APIENTRY glSecondaryColor3uiv(const GLuint *v); GLAPI void APIENTRY glSecondaryColor3uivEXT(const GLuint *v); GLAPI void APIENTRY glSecondaryColor3us(GLushort32 red, GLushort32 green, GLushort32 blue); GLAPI void APIENTRY glSecondaryColor3usEXT(GLushort32 red, GLushort32 green, GLushort32 blue); GLAPI void APIENTRY glSecondaryColor3usv(const GLushort *v); GLAPI void APIENTRY glSecondaryColor3usvEXT(const GLushort *v); GLAPI void APIENTRY glSecondaryColorFormatNV(GLint size, GLenum type, GLsizei stride); GLAPI void APIENTRY glSecondaryColorP3ui(GLenum type, GLuint color); GLAPI void APIENTRY glSecondaryColorP3uiv(GLenum type, const GLuint *color); GLAPI void APIENTRY glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glSecondaryColorPointerListIBM(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride); GLAPI void APIENTRY glSelectBuffer(GLsizei size, GLuint *buffer); GLAPI void APIENTRY glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean32 enable, GLuint group, GLint numCounters, GLuint *counterList); GLAPI void APIENTRY glSemaphoreParameterui64vEXT(GLuint semaphore, GLenum pname, const GLuint64 *params); GLAPI void APIENTRY glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); GLAPI void APIENTRY glSeparableFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); GLAPI void APIENTRY glSetFenceAPPLE(GLuint fence); GLAPI void APIENTRY glSetFenceNV(GLuint fence, GLenum condition); GLAPI void APIENTRY glSetFragmentShaderConstantATI(GLuint dst, const GLfloat *value); GLAPI void APIENTRY glSetInvariantEXT(GLuint id, GLenum type, const void *addr); GLAPI void APIENTRY glSetLocalConstantEXT(GLuint id, GLenum type, const void *addr); GLAPI void APIENTRY glSetMultisamplefvAMD(GLenum pname, GLuint index, const GLfloat *val); GLAPI void APIENTRY glShadeModel(GLenum mode); GLAPI void APIENTRY glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); GLAPI void APIENTRY glShaderOp1EXT(GLenum op, GLuint res, GLuint arg1); GLAPI void APIENTRY glShaderOp2EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2); GLAPI void APIENTRY glShaderOp3EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); GLAPI void APIENTRY glShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length); GLAPI void APIENTRY glShaderSourceARB(GLhandleARB shaderObj, GLsizei count, const GLcharARB * *string, const GLint *length); GLAPI void APIENTRY glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); GLAPI void APIENTRY glSharpenTexFuncSGIS(GLenum target, GLsizei n, const GLfloat *points); GLAPI void APIENTRY glSignalSemaphoreEXT(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); GLAPI void APIENTRY glSignalVkFenceNV(GLuint64 vkFence); GLAPI void APIENTRY glSignalVkSemaphoreNV(GLuint64 vkSemaphore); GLAPI void APIENTRY glSpecializeShader(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); GLAPI void APIENTRY glSpecializeShaderARB(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); GLAPI void APIENTRY glSpriteParameterfSGIX(GLenum pname, GLfloat param); GLAPI void APIENTRY glSpriteParameterfvSGIX(GLenum pname, const GLfloat *params); GLAPI void APIENTRY glSpriteParameteriSGIX(GLenum pname, GLint param); GLAPI void APIENTRY glSpriteParameterivSGIX(GLenum pname, const GLint *params); GLAPI void APIENTRY glStartInstrumentsSGIX(void); GLAPI void APIENTRY glStateCaptureNV(GLuint state, GLenum mode); GLAPI void APIENTRY glStencilClearTagEXT(GLsizei stencilTagBits, GLuint stencilClearTag); GLAPI void APIENTRY glStencilFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); GLAPI void APIENTRY glStencilFillPathNV(GLuint path, GLenum fillMode, GLuint mask); GLAPI void APIENTRY glStencilFunc(GLenum func, GLint ref, GLuint mask); GLAPI void APIENTRY glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); GLAPI void APIENTRY glStencilFuncSeparateATI(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); GLAPI void APIENTRY glStencilMask(GLuint mask); GLAPI void APIENTRY glStencilMaskSeparate(GLenum face, GLuint mask); GLAPI void APIENTRY glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); GLAPI void APIENTRY glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); GLAPI void APIENTRY glStencilOpSeparateATI(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); GLAPI void APIENTRY glStencilOpValueAMD(GLenum face, GLuint value); GLAPI void APIENTRY glStencilStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); GLAPI void APIENTRY glStencilStrokePathNV(GLuint path, GLint reference, GLuint mask); GLAPI void APIENTRY glStencilThenCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); GLAPI void APIENTRY glStencilThenCoverFillPathNV(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); GLAPI void APIENTRY glStencilThenCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); GLAPI void APIENTRY glStencilThenCoverStrokePathNV(GLuint path, GLint reference, GLuint mask, GLenum coverMode); GLAPI void APIENTRY glStopInstrumentsSGIX(GLint marker); GLAPI void APIENTRY glStringMarkerGREMEDY(GLsizei len, const void *string); GLAPI void APIENTRY glSubpixelPrecisionBiasNV(GLuint xbits, GLuint ybits); GLAPI void APIENTRY glSwapAPPLE(void); GLAPI void APIENTRY glSwizzleEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); GLAPI void APIENTRY glSyncTextureINTEL(GLuint texture); GLAPI void APIENTRY glTagSampleBufferSGIX(void); GLAPI void APIENTRY glTangent3bEXT(GLbyte32 tx, GLbyte32 ty, GLbyte32 tz); GLAPI void APIENTRY glTangent3bvEXT(const GLbyte *v); GLAPI void APIENTRY glTangent3dEXT(GLdouble tx, GLdouble ty, GLdouble tz); GLAPI void APIENTRY glTangent3dvEXT(const GLdouble *v); GLAPI void APIENTRY glTangent3fEXT(GLfloat tx, GLfloat ty, GLfloat tz); GLAPI void APIENTRY glTangent3fvEXT(const GLfloat *v); GLAPI void APIENTRY glTangent3iEXT(GLint tx, GLint ty, GLint tz); GLAPI void APIENTRY glTangent3ivEXT(const GLint *v); GLAPI void APIENTRY glTangent3sEXT(GLshort32 tx, GLshort32 ty, GLshort32 tz); GLAPI void APIENTRY glTangent3svEXT(const GLshort *v); GLAPI void APIENTRY glTangentPointerEXT(GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glTbufferMask3DFX(GLuint mask); GLAPI void APIENTRY glTessellationFactorAMD(GLfloat factor); GLAPI void APIENTRY glTessellationModeAMD(GLenum mode); GLAPI GLboolean APIENTRY glTestFenceAPPLE(GLuint fence); GLAPI GLboolean APIENTRY glTestFenceNV(GLuint fence); GLAPI GLboolean APIENTRY glTestObjectAPPLE(GLenum object, GLuint name); GLAPI void APIENTRY glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); GLAPI void APIENTRY glTexBufferARB(GLenum target, GLenum internalformat, GLuint buffer); GLAPI void APIENTRY glTexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer); GLAPI void APIENTRY glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); GLAPI void APIENTRY glTexBumpParameterfvATI(GLenum pname, const GLfloat *param); GLAPI void APIENTRY glTexBumpParameterivATI(GLenum pname, const GLint *param); GLAPI void APIENTRY glTexCoord1bOES(GLbyte32 s); GLAPI void APIENTRY glTexCoord1bvOES(const GLbyte *coords); GLAPI void APIENTRY glTexCoord1d(GLdouble s); GLAPI void APIENTRY glTexCoord1dv(const GLdouble *v); GLAPI void APIENTRY glTexCoord1f(GLfloat s); GLAPI void APIENTRY glTexCoord1fv(const GLfloat *v); GLAPI void APIENTRY glTexCoord1hNV(GLhalfNV32 s); GLAPI void APIENTRY glTexCoord1hvNV(const GLhalfNV *v); GLAPI void APIENTRY glTexCoord1i(GLint s); GLAPI void APIENTRY glTexCoord1iv(const GLint *v); GLAPI void APIENTRY glTexCoord1s(GLshort32 s); GLAPI void APIENTRY glTexCoord1sv(const GLshort *v); GLAPI void APIENTRY glTexCoord1xOES(GLfixed s); GLAPI void APIENTRY glTexCoord1xvOES(const GLfixed *coords); GLAPI void APIENTRY glTexCoord2bOES(GLbyte32 s, GLbyte32 t); GLAPI void APIENTRY glTexCoord2bvOES(const GLbyte *coords); GLAPI void APIENTRY glTexCoord2d(GLdouble s, GLdouble t); GLAPI void APIENTRY glTexCoord2dv(const GLdouble *v); GLAPI void APIENTRY glTexCoord2f(GLfloat s, GLfloat t); GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *v); GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN(GLfloat s, GLfloat t, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN(const GLfloat *tc, const GLubyte *c, const GLfloat *v); GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN(const GLfloat *tc, const GLfloat *n, const GLfloat *v); GLAPI void APIENTRY glTexCoord2fVertex3fSUN(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glTexCoord2fVertex3fvSUN(const GLfloat *tc, const GLfloat *v); GLAPI void APIENTRY glTexCoord2fv(const GLfloat *v); GLAPI void APIENTRY glTexCoord2hNV(GLhalfNV32 s, GLhalfNV32 t); GLAPI void APIENTRY glTexCoord2hvNV(const GLhalfNV *v); GLAPI void APIENTRY glTexCoord2i(GLint s, GLint t); GLAPI void APIENTRY glTexCoord2iv(const GLint *v); GLAPI void APIENTRY glTexCoord2s(GLshort32 s, GLshort32 t); GLAPI void APIENTRY glTexCoord2sv(const GLshort *v); GLAPI void APIENTRY glTexCoord2xOES(GLfixed s, GLfixed t); GLAPI void APIENTRY glTexCoord2xvOES(const GLfixed *coords); GLAPI void APIENTRY glTexCoord3bOES(GLbyte32 s, GLbyte32 t, GLbyte32 r); GLAPI void APIENTRY glTexCoord3bvOES(const GLbyte *coords); GLAPI void APIENTRY glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); GLAPI void APIENTRY glTexCoord3dv(const GLdouble *v); GLAPI void APIENTRY glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); GLAPI void APIENTRY glTexCoord3fv(const GLfloat *v); GLAPI void APIENTRY glTexCoord3hNV(GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r); GLAPI void APIENTRY glTexCoord3hvNV(const GLhalfNV *v); GLAPI void APIENTRY glTexCoord3i(GLint s, GLint t, GLint r); GLAPI void APIENTRY glTexCoord3iv(const GLint *v); GLAPI void APIENTRY glTexCoord3s(GLshort32 s, GLshort32 t, GLshort32 r); GLAPI void APIENTRY glTexCoord3sv(const GLshort *v); GLAPI void APIENTRY glTexCoord3xOES(GLfixed s, GLfixed t, GLfixed r); GLAPI void APIENTRY glTexCoord3xvOES(const GLfixed *coords); GLAPI void APIENTRY glTexCoord4bOES(GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q); GLAPI void APIENTRY glTexCoord4bvOES(const GLbyte *coords); GLAPI void APIENTRY glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); GLAPI void APIENTRY glTexCoord4dv(const GLdouble *v); GLAPI void APIENTRY glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); GLAPI void APIENTRY glTexCoord4fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void APIENTRY glTexCoord4fVertex4fvSUN(const GLfloat *tc, const GLfloat *v); GLAPI void APIENTRY glTexCoord4fv(const GLfloat *v); GLAPI void APIENTRY glTexCoord4hNV(GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q); GLAPI void APIENTRY glTexCoord4hvNV(const GLhalfNV *v); GLAPI void APIENTRY glTexCoord4i(GLint s, GLint t, GLint r, GLint q); GLAPI void APIENTRY glTexCoord4iv(const GLint *v); GLAPI void APIENTRY glTexCoord4s(GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q); GLAPI void APIENTRY glTexCoord4sv(const GLshort *v); GLAPI void APIENTRY glTexCoord4xOES(GLfixed s, GLfixed t, GLfixed r, GLfixed q); GLAPI void APIENTRY glTexCoord4xvOES(const GLfixed *coords); GLAPI void APIENTRY glTexCoordFormatNV(GLint size, GLenum type, GLsizei stride); GLAPI void APIENTRY glTexCoordP1ui(GLenum type, GLuint coords); GLAPI void APIENTRY glTexCoordP1uiv(GLenum type, const GLuint *coords); GLAPI void APIENTRY glTexCoordP2ui(GLenum type, GLuint coords); GLAPI void APIENTRY glTexCoordP2uiv(GLenum type, const GLuint *coords); GLAPI void APIENTRY glTexCoordP3ui(GLenum type, GLuint coords); GLAPI void APIENTRY glTexCoordP3uiv(GLenum type, const GLuint *coords); GLAPI void APIENTRY glTexCoordP4ui(GLenum type, GLuint coords); GLAPI void APIENTRY glTexCoordP4uiv(GLenum type, const GLuint *coords); GLAPI void APIENTRY glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void APIENTRY glTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); GLAPI void APIENTRY glTexCoordPointerListIBM(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride); GLAPI void APIENTRY glTexCoordPointervINTEL(GLint size, GLenum type, const void * *pointer); GLAPI void APIENTRY glTexEnvf(GLenum target, GLenum pname, GLfloat param); GLAPI void APIENTRY glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param); GLAPI void APIENTRY glTexEnviv(GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glTexEnvxOES(GLenum target, GLenum pname, GLfixed param); GLAPI void APIENTRY glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed *params); GLAPI void APIENTRY glTexFilterFuncSGIS(GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); GLAPI void APIENTRY glTexGend(GLenum coord, GLenum pname, GLdouble param); GLAPI void APIENTRY glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); GLAPI void APIENTRY glTexGenf(GLenum coord, GLenum pname, GLfloat param); GLAPI void APIENTRY glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glTexGeni(GLenum coord, GLenum pname, GLint param); GLAPI void APIENTRY glTexGeniv(GLenum coord, GLenum pname, const GLint *params); GLAPI void APIENTRY glTexGenxOES(GLenum coord, GLenum pname, GLfixed param); GLAPI void APIENTRY glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params); GLAPI void APIENTRY glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); GLAPI void APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); GLAPI void APIENTRY glTexImage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations); GLAPI void APIENTRY glTexImage2DMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations); GLAPI void APIENTRY glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTexImage3DEXT(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTexImage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations); GLAPI void APIENTRY glTexImage3DMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations); GLAPI void APIENTRY glTexImage4DSGIS(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTexPageCommitmentARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit); GLAPI void APIENTRY glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glTexParameterIivEXT(GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); GLAPI void APIENTRY glTexParameterIuivEXT(GLenum target, GLenum pname, const GLuint *params); GLAPI void APIENTRY glTexParameterf(GLenum target, GLenum pname, GLfloat param); GLAPI void APIENTRY glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param); GLAPI void APIENTRY glTexParameteriv(GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glTexParameterxOES(GLenum target, GLenum pname, GLfixed param); GLAPI void APIENTRY glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed *params); GLAPI void APIENTRY glTexRenderbufferNV(GLenum target, GLuint renderbuffer); GLAPI void APIENTRY glTexScissorFuncINTEL(GLenum target, GLenum lfunc, GLenum hfunc); GLAPI void APIENTRY glTexScissorINTEL(GLenum target, GLclampf tlow, GLclampf thigh); GLAPI void APIENTRY glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); GLAPI void APIENTRY glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations); GLAPI void APIENTRY glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); GLAPI void APIENTRY glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations); GLAPI void APIENTRY glTexStorageMem1DEXT(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset); GLAPI void APIENTRY glTexStorageMem2DEXT(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); GLAPI void APIENTRY glTexStorageMem2DMultisampleEXT(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset); GLAPI void APIENTRY glTexStorageMem3DEXT(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); GLAPI void APIENTRY glTexStorageMem3DMultisampleEXT(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset); GLAPI void APIENTRY glTexStorageSparseAMD(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); GLAPI void APIENTRY glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); GLAPI void APIENTRY glTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); GLAPI void APIENTRY glTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTexSubImage4DSGIS(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTextureBarrier(void); GLAPI void APIENTRY glTextureBarrierNV(void); GLAPI void APIENTRY glTextureBuffer(GLuint texture, GLenum internalformat, GLuint buffer); GLAPI void APIENTRY glTextureBufferEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); GLAPI void APIENTRY glTextureBufferRange(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); GLAPI void APIENTRY glTextureBufferRangeEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); GLAPI void APIENTRY glTextureColorMaskSGIS(GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha); GLAPI void APIENTRY glTextureFogSGIX(GLenum pname); GLAPI void APIENTRY glTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTextureImage2DMultisampleCoverageNV(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations); GLAPI void APIENTRY glTextureImage2DMultisampleNV(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations); GLAPI void APIENTRY glTextureImage3DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTextureImage3DMultisampleCoverageNV(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations); GLAPI void APIENTRY glTextureImage3DMultisampleNV(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations); GLAPI void APIENTRY glTextureLightEXT(GLenum pname); GLAPI void APIENTRY glTextureMaterialEXT(GLenum face, GLenum mode); GLAPI void APIENTRY glTextureNormalEXT(GLenum mode); GLAPI void APIENTRY glTexturePageCommitmentEXT(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit); GLAPI void APIENTRY glTextureParameterIiv(GLuint texture, GLenum pname, const GLint *params); GLAPI void APIENTRY glTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glTextureParameterIuiv(GLuint texture, GLenum pname, const GLuint *params); GLAPI void APIENTRY glTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, const GLuint *params); GLAPI void APIENTRY glTextureParameterf(GLuint texture, GLenum pname, GLfloat param); GLAPI void APIENTRY glTextureParameterfEXT(GLuint texture, GLenum target, GLenum pname, GLfloat param); GLAPI void APIENTRY glTextureParameterfv(GLuint texture, GLenum pname, const GLfloat *param); GLAPI void APIENTRY glTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glTextureParameteri(GLuint texture, GLenum pname, GLint param); GLAPI void APIENTRY glTextureParameteriEXT(GLuint texture, GLenum target, GLenum pname, GLint param); GLAPI void APIENTRY glTextureParameteriv(GLuint texture, GLenum pname, const GLint *param); GLAPI void APIENTRY glTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glTextureRangeAPPLE(GLenum target, GLsizei length, const void *pointer); GLAPI void APIENTRY glTextureRenderbufferEXT(GLuint texture, GLenum target, GLuint renderbuffer); GLAPI void APIENTRY glTextureStorage1D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); GLAPI void APIENTRY glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); GLAPI void APIENTRY glTextureStorage2D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY glTextureStorage2DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations); GLAPI void APIENTRY glTextureStorage2DMultisampleEXT(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations); GLAPI void APIENTRY glTextureStorage3D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); GLAPI void APIENTRY glTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); GLAPI void APIENTRY glTextureStorage3DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations); GLAPI void APIENTRY glTextureStorage3DMultisampleEXT(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations); GLAPI void APIENTRY glTextureStorageMem1DEXT(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset); GLAPI void APIENTRY glTextureStorageMem2DEXT(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); GLAPI void APIENTRY glTextureStorageMem2DMultisampleEXT(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset); GLAPI void APIENTRY glTextureStorageMem3DEXT(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); GLAPI void APIENTRY glTextureStorageMem3DMultisampleEXT(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset); GLAPI void APIENTRY glTextureStorageSparseAMD(GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); GLAPI void APIENTRY glTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); GLAPI void APIENTRY glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); GLAPI void APIENTRY glTraceAssertAttribMESA(GLbitfield attribMask); GLAPI void APIENTRY glTraceCommentMESA(const GLubyte *comment); GLAPI void APIENTRY glTraceListMESA(GLuint name, const GLubyte *comment); GLAPI void APIENTRY glTracePointerMESA(GLvoid *pointer, const GLubyte *comment); GLAPI void APIENTRY glTracePointerRangeMESA(const GLvoid *first, const GLvoid *last, const GLubyte *comment); GLAPI void APIENTRY glTraceTextureMESA(GLuint name, const GLubyte *comment); GLAPI void APIENTRY glTrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform); GLAPI void APIENTRY glTransformFeedbackAttribsNV(GLsizei count, const GLint *attribs, GLenum bufferMode); GLAPI void APIENTRY glTransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer); GLAPI void APIENTRY glTransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); GLAPI void APIENTRY glTransformFeedbackStreamAttribsNV(GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); GLAPI void APIENTRY glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode); GLAPI void APIENTRY glTransformFeedbackVaryingsEXT(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode); GLAPI void APIENTRY glTransformFeedbackVaryingsNV(GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); GLAPI void APIENTRY glTransformPathNV(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); GLAPI void APIENTRY glTranslated(GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glTranslatef(GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glTranslatexOES(GLfixed x, GLfixed y, GLfixed z); GLAPI void APIENTRY glUniform1d(GLint location, GLdouble x); GLAPI void APIENTRY glUniform1dv(GLint location, GLsizei count, const GLdouble *value); GLAPI void APIENTRY glUniform1f(GLint location, GLfloat v0); GLAPI void APIENTRY glUniform1fARB(GLint location, GLfloat v0); GLAPI void APIENTRY glUniform1fv(GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glUniform1fvARB(GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glUniform1i(GLint location, GLint v0); GLAPI void APIENTRY glUniform1i64ARB(GLint location, GLint64 x); GLAPI void APIENTRY glUniform1i64NV(GLint location, GLint64EXT x); GLAPI void APIENTRY glUniform1i64vARB(GLint location, GLsizei count, const GLint64 *value); GLAPI void APIENTRY glUniform1i64vNV(GLint location, GLsizei count, const GLint64EXT *value); GLAPI void APIENTRY glUniform1iARB(GLint location, GLint v0); GLAPI void APIENTRY glUniform1iv(GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glUniform1ivARB(GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glUniform1ui(GLint location, GLuint v0); GLAPI void APIENTRY glUniform1ui64ARB(GLint location, GLuint64 x); GLAPI void APIENTRY glUniform1ui64NV(GLint location, GLuint64EXT x); GLAPI void APIENTRY glUniform1ui64vARB(GLint location, GLsizei count, const GLuint64 *value); GLAPI void APIENTRY glUniform1ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value); GLAPI void APIENTRY glUniform1uiEXT(GLint location, GLuint v0); GLAPI void APIENTRY glUniform1uiv(GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glUniform1uivEXT(GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glUniform2d(GLint location, GLdouble x, GLdouble y); GLAPI void APIENTRY glUniform2dv(GLint location, GLsizei count, const GLdouble *value); GLAPI void APIENTRY glUniform2f(GLint location, GLfloat v0, GLfloat v1); GLAPI void APIENTRY glUniform2fARB(GLint location, GLfloat v0, GLfloat v1); GLAPI void APIENTRY glUniform2fv(GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glUniform2fvARB(GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glUniform2i(GLint location, GLint v0, GLint v1); GLAPI void APIENTRY glUniform2i64ARB(GLint location, GLint64 x, GLint64 y); GLAPI void APIENTRY glUniform2i64NV(GLint location, GLint64EXT x, GLint64EXT y); GLAPI void APIENTRY glUniform2i64vARB(GLint location, GLsizei count, const GLint64 *value); GLAPI void APIENTRY glUniform2i64vNV(GLint location, GLsizei count, const GLint64EXT *value); GLAPI void APIENTRY glUniform2iARB(GLint location, GLint v0, GLint v1); GLAPI void APIENTRY glUniform2iv(GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glUniform2ivARB(GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glUniform2ui(GLint location, GLuint v0, GLuint v1); GLAPI void APIENTRY glUniform2ui64ARB(GLint location, GLuint64 x, GLuint64 y); GLAPI void APIENTRY glUniform2ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y); GLAPI void APIENTRY glUniform2ui64vARB(GLint location, GLsizei count, const GLuint64 *value); GLAPI void APIENTRY glUniform2ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value); GLAPI void APIENTRY glUniform2uiEXT(GLint location, GLuint v0, GLuint v1); GLAPI void APIENTRY glUniform2uiv(GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glUniform2uivEXT(GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glUniform3dv(GLint location, GLsizei count, const GLdouble *value); GLAPI void APIENTRY glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); GLAPI void APIENTRY glUniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); GLAPI void APIENTRY glUniform3fv(GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glUniform3fvARB(GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); GLAPI void APIENTRY glUniform3i64ARB(GLint location, GLint64 x, GLint64 y, GLint64 z); GLAPI void APIENTRY glUniform3i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); GLAPI void APIENTRY glUniform3i64vARB(GLint location, GLsizei count, const GLint64 *value); GLAPI void APIENTRY glUniform3i64vNV(GLint location, GLsizei count, const GLint64EXT *value); GLAPI void APIENTRY glUniform3iARB(GLint location, GLint v0, GLint v1, GLint v2); GLAPI void APIENTRY glUniform3iv(GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glUniform3ivARB(GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); GLAPI void APIENTRY glUniform3ui64ARB(GLint location, GLuint64 x, GLuint64 y, GLuint64 z); GLAPI void APIENTRY glUniform3ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); GLAPI void APIENTRY glUniform3ui64vARB(GLint location, GLsizei count, const GLuint64 *value); GLAPI void APIENTRY glUniform3ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value); GLAPI void APIENTRY glUniform3uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2); GLAPI void APIENTRY glUniform3uiv(GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glUniform3uivEXT(GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glUniform4dv(GLint location, GLsizei count, const GLdouble *value); GLAPI void APIENTRY glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); GLAPI void APIENTRY glUniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); GLAPI void APIENTRY glUniform4fv(GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glUniform4fvARB(GLint location, GLsizei count, const GLfloat *value); GLAPI void APIENTRY glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); GLAPI void APIENTRY glUniform4i64ARB(GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); GLAPI void APIENTRY glUniform4i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); GLAPI void APIENTRY glUniform4i64vARB(GLint location, GLsizei count, const GLint64 *value); GLAPI void APIENTRY glUniform4i64vNV(GLint location, GLsizei count, const GLint64EXT *value); GLAPI void APIENTRY glUniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); GLAPI void APIENTRY glUniform4iv(GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glUniform4ivARB(GLint location, GLsizei count, const GLint *value); GLAPI void APIENTRY glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); GLAPI void APIENTRY glUniform4ui64ARB(GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); GLAPI void APIENTRY glUniform4ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); GLAPI void APIENTRY glUniform4ui64vARB(GLint location, GLsizei count, const GLuint64 *value); GLAPI void APIENTRY glUniform4ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value); GLAPI void APIENTRY glUniform4uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); GLAPI void APIENTRY glUniform4uiv(GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glUniform4uivEXT(GLint location, GLsizei count, const GLuint *value); GLAPI void APIENTRY glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); GLAPI void APIENTRY glUniformBufferEXT(GLuint program, GLint location, GLuint buffer); GLAPI void APIENTRY glUniformHandleui64ARB(GLint location, GLuint64 value); GLAPI void APIENTRY glUniformHandleui64NV(GLint location, GLuint64 value); GLAPI void APIENTRY glUniformHandleui64vARB(GLint location, GLsizei count, const GLuint64 *value); GLAPI void APIENTRY glUniformHandleui64vNV(GLint location, GLsizei count, const GLuint64 *value); GLAPI void APIENTRY glUniformMatrix2dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glUniformMatrix2fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix2fvARB(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix3dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glUniformMatrix3fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix3fvARB(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix4dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glUniformMatrix4fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix4fvARB(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); GLAPI void APIENTRY glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); GLAPI void APIENTRY glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices); GLAPI void APIENTRY glUniformui64NV(GLint location, GLuint64EXT value); GLAPI void APIENTRY glUniformui64vNV(GLint location, GLsizei count, const GLuint64EXT *value); GLAPI void APIENTRY glUnlockArraysEXT(void); GLAPI GLboolean APIENTRY glUnmapBuffer(GLenum target); GLAPI GLboolean APIENTRY glUnmapBufferARB(GLenum target); GLAPI GLboolean APIENTRY glUnmapNamedBuffer(GLuint buffer); GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT(GLuint buffer); GLAPI void APIENTRY glUnmapObjectBufferATI(GLuint buffer); GLAPI void APIENTRY glUnmapTexture2DINTEL(GLuint texture, GLint level); GLAPI void APIENTRY glUpdateObjectBufferATI(GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve); GLAPI void APIENTRY glUseProgram(GLuint program); GLAPI void APIENTRY glUseProgramObjectARB(GLhandleARB programObj); GLAPI void APIENTRY glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); GLAPI void APIENTRY glUseShaderProgramEXT(GLenum type, GLuint program); GLAPI void APIENTRY glVDPAUFiniNV(void); GLAPI void APIENTRY glVDPAUGetSurfaceivNV(GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); GLAPI void APIENTRY glVDPAUInitNV(const void *vdpDevice, const void *getProcAddress); GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV(GLvdpauSurfaceNV surface); GLAPI void APIENTRY glVDPAUMapSurfacesNV(GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); GLAPI void APIENTRY glVDPAUSurfaceAccessNV(GLvdpauSurfaceNV surface, GLenum access); GLAPI void APIENTRY glVDPAUUnmapSurfacesNV(GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV(GLvdpauSurfaceNV surface); GLAPI void APIENTRY glValidateProgram(GLuint program); GLAPI void APIENTRY glValidateProgramARB(GLhandleARB programObj); GLAPI void APIENTRY glValidateProgramPipeline(GLuint pipeline); GLAPI void APIENTRY glVariantArrayObjectATI(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); GLAPI void APIENTRY glVariantPointerEXT(GLuint id, GLenum type, GLuint stride, const void *addr); GLAPI void APIENTRY glVariantbvEXT(GLuint id, const GLbyte *addr); GLAPI void APIENTRY glVariantdvEXT(GLuint id, const GLdouble *addr); GLAPI void APIENTRY glVariantfvEXT(GLuint id, const GLfloat *addr); GLAPI void APIENTRY glVariantivEXT(GLuint id, const GLint *addr); GLAPI void APIENTRY glVariantsvEXT(GLuint id, const GLshort *addr); GLAPI void APIENTRY glVariantubvEXT(GLuint id, const GLubyte *addr); GLAPI void APIENTRY glVariantuivEXT(GLuint id, const GLuint *addr); GLAPI void APIENTRY glVariantusvEXT(GLuint id, const GLushort *addr); GLAPI void APIENTRY glVertex2bOES(GLbyte32 x, GLbyte32 y); GLAPI void APIENTRY glVertex2bvOES(const GLbyte *coords); GLAPI void APIENTRY glVertex2d(GLdouble x, GLdouble y); GLAPI void APIENTRY glVertex2dv(const GLdouble *v); GLAPI void APIENTRY glVertex2f(GLfloat x, GLfloat y); GLAPI void APIENTRY glVertex2fv(const GLfloat *v); GLAPI void APIENTRY glVertex2hNV(GLhalfNV32 x, GLhalfNV32 y); GLAPI void APIENTRY glVertex2hvNV(const GLhalfNV *v); GLAPI void APIENTRY glVertex2i(GLint x, GLint y); GLAPI void APIENTRY glVertex2iv(const GLint *v); GLAPI void APIENTRY glVertex2s(GLshort32 x, GLshort32 y); GLAPI void APIENTRY glVertex2sv(const GLshort *v); GLAPI void APIENTRY glVertex2xOES(GLfixed x); GLAPI void APIENTRY glVertex2xvOES(const GLfixed *coords); GLAPI void APIENTRY glVertex3bOES(GLbyte32 x, GLbyte32 y, GLbyte32 z); GLAPI void APIENTRY glVertex3bvOES(const GLbyte *coords); GLAPI void APIENTRY glVertex3d(GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glVertex3dv(const GLdouble *v); GLAPI void APIENTRY glVertex3f(GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glVertex3fv(const GLfloat *v); GLAPI void APIENTRY glVertex3hNV(GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z); GLAPI void APIENTRY glVertex3hvNV(const GLhalfNV *v); GLAPI void APIENTRY glVertex3i(GLint x, GLint y, GLint z); GLAPI void APIENTRY glVertex3iv(const GLint *v); GLAPI void APIENTRY glVertex3s(GLshort32 x, GLshort32 y, GLshort32 z); GLAPI void APIENTRY glVertex3sv(const GLshort *v); GLAPI void APIENTRY glVertex3xOES(GLfixed x, GLfixed y); GLAPI void APIENTRY glVertex3xvOES(const GLfixed *coords); GLAPI void APIENTRY glVertex4bOES(GLbyte32 x, GLbyte32 y, GLbyte32 z, GLbyte32 w); GLAPI void APIENTRY glVertex4bvOES(const GLbyte *coords); GLAPI void APIENTRY glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glVertex4dv(const GLdouble *v); GLAPI void APIENTRY glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void APIENTRY glVertex4fv(const GLfloat *v); GLAPI void APIENTRY glVertex4hNV(GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w); GLAPI void APIENTRY glVertex4hvNV(const GLhalfNV *v); GLAPI void APIENTRY glVertex4i(GLint x, GLint y, GLint z, GLint w); GLAPI void APIENTRY glVertex4iv(const GLint *v); GLAPI void APIENTRY glVertex4s(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); GLAPI void APIENTRY glVertex4sv(const GLshort *v); GLAPI void APIENTRY glVertex4xOES(GLfixed x, GLfixed y, GLfixed z); GLAPI void APIENTRY glVertex4xvOES(const GLfixed *coords); GLAPI void APIENTRY glVertexArrayAttribBinding(GLuint vaobj, GLuint attribindex, GLuint bindingindex); GLAPI void APIENTRY glVertexArrayAttribFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset); GLAPI void APIENTRY glVertexArrayAttribIFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); GLAPI void APIENTRY glVertexArrayAttribLFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); GLAPI void APIENTRY glVertexArrayBindingDivisor(GLuint vaobj, GLuint bindingindex, GLuint divisor); GLAPI void APIENTRY glVertexArrayColorOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); GLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT(GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); GLAPI void APIENTRY glVertexArrayElementBuffer(GLuint vaobj, GLuint buffer); GLAPI void APIENTRY glVertexArrayFogCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); GLAPI void APIENTRY glVertexArrayIndexOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); GLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); GLAPI void APIENTRY glVertexArrayNormalOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); GLAPI void APIENTRY glVertexArrayParameteriAPPLE(GLenum pname, GLint param); GLAPI void APIENTRY glVertexArrayRangeAPPLE(GLsizei length, void *pointer); GLAPI void APIENTRY glVertexArrayRangeNV(GLsizei length, const void *pointer); GLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); GLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribindex, GLuint bindingindex); GLAPI void APIENTRY glVertexArrayVertexAttribDivisorEXT(GLuint vaobj, GLuint index, GLuint divisor); GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset); GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); GLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); GLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLintptr offset); GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingindex, GLuint divisor); GLAPI void APIENTRY glVertexArrayVertexBuffer(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); GLAPI void APIENTRY glVertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); GLAPI void APIENTRY glVertexArrayVertexOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); GLAPI void APIENTRY glVertexAttrib1d(GLuint index, GLdouble x); GLAPI void APIENTRY glVertexAttrib1dARB(GLuint index, GLdouble x); GLAPI void APIENTRY glVertexAttrib1dNV(GLuint index, GLdouble x); GLAPI void APIENTRY glVertexAttrib1dv(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttrib1dvARB(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttrib1dvNV(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttrib1f(GLuint index, GLfloat x); GLAPI void APIENTRY glVertexAttrib1fARB(GLuint index, GLfloat x); GLAPI void APIENTRY glVertexAttrib1fNV(GLuint index, GLfloat x); GLAPI void APIENTRY glVertexAttrib1fv(GLuint index, const GLfloat *v); GLAPI void APIENTRY glVertexAttrib1fvARB(GLuint index, const GLfloat *v); GLAPI void APIENTRY glVertexAttrib1fvNV(GLuint index, const GLfloat *v); GLAPI void APIENTRY glVertexAttrib1hNV(GLuint index, GLhalfNV32 x); GLAPI void APIENTRY glVertexAttrib1hvNV(GLuint index, const GLhalfNV *v); GLAPI void APIENTRY glVertexAttrib1s(GLuint index, GLshort32 x); GLAPI void APIENTRY glVertexAttrib1sARB(GLuint index, GLshort32 x); GLAPI void APIENTRY glVertexAttrib1sNV(GLuint index, GLshort32 x); GLAPI void APIENTRY glVertexAttrib1sv(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttrib1svARB(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttrib1svNV(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); GLAPI void APIENTRY glVertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y); GLAPI void APIENTRY glVertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y); GLAPI void APIENTRY glVertexAttrib2dv(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttrib2dvARB(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttrib2dvNV(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); GLAPI void APIENTRY glVertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y); GLAPI void APIENTRY glVertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y); GLAPI void APIENTRY glVertexAttrib2fv(GLuint index, const GLfloat *v); GLAPI void APIENTRY glVertexAttrib2fvARB(GLuint index, const GLfloat *v); GLAPI void APIENTRY glVertexAttrib2fvNV(GLuint index, const GLfloat *v); GLAPI void APIENTRY glVertexAttrib2hNV(GLuint index, GLhalfNV32 x, GLhalfNV32 y); GLAPI void APIENTRY glVertexAttrib2hvNV(GLuint index, const GLhalfNV *v); GLAPI void APIENTRY glVertexAttrib2s(GLuint index, GLshort32 x, GLshort32 y); GLAPI void APIENTRY glVertexAttrib2sARB(GLuint index, GLshort32 x, GLshort32 y); GLAPI void APIENTRY glVertexAttrib2sNV(GLuint index, GLshort32 x, GLshort32 y); GLAPI void APIENTRY glVertexAttrib2sv(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttrib2svARB(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttrib2svNV(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glVertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glVertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glVertexAttrib3dv(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttrib3dvARB(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttrib3dvNV(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glVertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glVertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glVertexAttrib3fv(GLuint index, const GLfloat *v); GLAPI void APIENTRY glVertexAttrib3fvARB(GLuint index, const GLfloat *v); GLAPI void APIENTRY glVertexAttrib3fvNV(GLuint index, const GLfloat *v); GLAPI void APIENTRY glVertexAttrib3hNV(GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z); GLAPI void APIENTRY glVertexAttrib3hvNV(GLuint index, const GLhalfNV *v); GLAPI void APIENTRY glVertexAttrib3s(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z); GLAPI void APIENTRY glVertexAttrib3sARB(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z); GLAPI void APIENTRY glVertexAttrib3sNV(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z); GLAPI void APIENTRY glVertexAttrib3sv(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttrib3svARB(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttrib3svNV(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttrib4Nbv(GLuint index, const GLbyte *v); GLAPI void APIENTRY glVertexAttrib4NbvARB(GLuint index, const GLbyte *v); GLAPI void APIENTRY glVertexAttrib4Niv(GLuint index, const GLint *v); GLAPI void APIENTRY glVertexAttrib4NivARB(GLuint index, const GLint *v); GLAPI void APIENTRY glVertexAttrib4Nsv(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttrib4NsvARB(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttrib4Nub(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w); GLAPI void APIENTRY glVertexAttrib4NubARB(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w); GLAPI void APIENTRY glVertexAttrib4Nubv(GLuint index, const GLubyte *v); GLAPI void APIENTRY glVertexAttrib4NubvARB(GLuint index, const GLubyte *v); GLAPI void APIENTRY glVertexAttrib4Nuiv(GLuint index, const GLuint *v); GLAPI void APIENTRY glVertexAttrib4NuivARB(GLuint index, const GLuint *v); GLAPI void APIENTRY glVertexAttrib4Nusv(GLuint index, const GLushort *v); GLAPI void APIENTRY glVertexAttrib4NusvARB(GLuint index, const GLushort *v); GLAPI void APIENTRY glVertexAttrib4bv(GLuint index, const GLbyte *v); GLAPI void APIENTRY glVertexAttrib4bvARB(GLuint index, const GLbyte *v); GLAPI void APIENTRY glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glVertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glVertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glVertexAttrib4dv(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttrib4dvARB(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttrib4dvNV(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void APIENTRY glVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void APIENTRY glVertexAttrib4fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void APIENTRY glVertexAttrib4fv(GLuint index, const GLfloat *v); GLAPI void APIENTRY glVertexAttrib4fvARB(GLuint index, const GLfloat *v); GLAPI void APIENTRY glVertexAttrib4fvNV(GLuint index, const GLfloat *v); GLAPI void APIENTRY glVertexAttrib4hNV(GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w); GLAPI void APIENTRY glVertexAttrib4hvNV(GLuint index, const GLhalfNV *v); GLAPI void APIENTRY glVertexAttrib4iv(GLuint index, const GLint *v); GLAPI void APIENTRY glVertexAttrib4ivARB(GLuint index, const GLint *v); GLAPI void APIENTRY glVertexAttrib4s(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); GLAPI void APIENTRY glVertexAttrib4sARB(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); GLAPI void APIENTRY glVertexAttrib4sNV(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); GLAPI void APIENTRY glVertexAttrib4sv(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttrib4svARB(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttrib4svNV(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttrib4ubNV(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w); GLAPI void APIENTRY glVertexAttrib4ubv(GLuint index, const GLubyte *v); GLAPI void APIENTRY glVertexAttrib4ubvARB(GLuint index, const GLubyte *v); GLAPI void APIENTRY glVertexAttrib4ubvNV(GLuint index, const GLubyte *v); GLAPI void APIENTRY glVertexAttrib4uiv(GLuint index, const GLuint *v); GLAPI void APIENTRY glVertexAttrib4uivARB(GLuint index, const GLuint *v); GLAPI void APIENTRY glVertexAttrib4usv(GLuint index, const GLushort *v); GLAPI void APIENTRY glVertexAttrib4usvARB(GLuint index, const GLushort *v); GLAPI void APIENTRY glVertexAttribArrayObjectATI(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLuint buffer, GLuint offset); GLAPI void APIENTRY glVertexAttribBinding(GLuint attribindex, GLuint bindingindex); GLAPI void APIENTRY glVertexAttribDivisor(GLuint index, GLuint divisor); GLAPI void APIENTRY glVertexAttribDivisorARB(GLuint index, GLuint divisor); GLAPI void APIENTRY glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset); GLAPI void APIENTRY glVertexAttribFormatNV(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride); GLAPI void APIENTRY glVertexAttribI1i(GLuint index, GLint x); GLAPI void APIENTRY glVertexAttribI1iEXT(GLuint index, GLint x); GLAPI void APIENTRY glVertexAttribI1iv(GLuint index, const GLint *v); GLAPI void APIENTRY glVertexAttribI1ivEXT(GLuint index, const GLint *v); GLAPI void APIENTRY glVertexAttribI1ui(GLuint index, GLuint x); GLAPI void APIENTRY glVertexAttribI1uiEXT(GLuint index, GLuint x); GLAPI void APIENTRY glVertexAttribI1uiv(GLuint index, const GLuint *v); GLAPI void APIENTRY glVertexAttribI1uivEXT(GLuint index, const GLuint *v); GLAPI void APIENTRY glVertexAttribI2i(GLuint index, GLint x, GLint y); GLAPI void APIENTRY glVertexAttribI2iEXT(GLuint index, GLint x, GLint y); GLAPI void APIENTRY glVertexAttribI2iv(GLuint index, const GLint *v); GLAPI void APIENTRY glVertexAttribI2ivEXT(GLuint index, const GLint *v); GLAPI void APIENTRY glVertexAttribI2ui(GLuint index, GLuint x, GLuint y); GLAPI void APIENTRY glVertexAttribI2uiEXT(GLuint index, GLuint x, GLuint y); GLAPI void APIENTRY glVertexAttribI2uiv(GLuint index, const GLuint *v); GLAPI void APIENTRY glVertexAttribI2uivEXT(GLuint index, const GLuint *v); GLAPI void APIENTRY glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z); GLAPI void APIENTRY glVertexAttribI3iEXT(GLuint index, GLint x, GLint y, GLint z); GLAPI void APIENTRY glVertexAttribI3iv(GLuint index, const GLint *v); GLAPI void APIENTRY glVertexAttribI3ivEXT(GLuint index, const GLint *v); GLAPI void APIENTRY glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z); GLAPI void APIENTRY glVertexAttribI3uiEXT(GLuint index, GLuint x, GLuint y, GLuint z); GLAPI void APIENTRY glVertexAttribI3uiv(GLuint index, const GLuint *v); GLAPI void APIENTRY glVertexAttribI3uivEXT(GLuint index, const GLuint *v); GLAPI void APIENTRY glVertexAttribI4bv(GLuint index, const GLbyte *v); GLAPI void APIENTRY glVertexAttribI4bvEXT(GLuint index, const GLbyte *v); GLAPI void APIENTRY glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); GLAPI void APIENTRY glVertexAttribI4iEXT(GLuint index, GLint x, GLint y, GLint z, GLint w); GLAPI void APIENTRY glVertexAttribI4iv(GLuint index, const GLint *v); GLAPI void APIENTRY glVertexAttribI4ivEXT(GLuint index, const GLint *v); GLAPI void APIENTRY glVertexAttribI4sv(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttribI4svEXT(GLuint index, const GLshort *v); GLAPI void APIENTRY glVertexAttribI4ubv(GLuint index, const GLubyte *v); GLAPI void APIENTRY glVertexAttribI4ubvEXT(GLuint index, const GLubyte *v); GLAPI void APIENTRY glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); GLAPI void APIENTRY glVertexAttribI4uiEXT(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); GLAPI void APIENTRY glVertexAttribI4uiv(GLuint index, const GLuint *v); GLAPI void APIENTRY glVertexAttribI4uivEXT(GLuint index, const GLuint *v); GLAPI void APIENTRY glVertexAttribI4usv(GLuint index, const GLushort *v); GLAPI void APIENTRY glVertexAttribI4usvEXT(GLuint index, const GLushort *v); GLAPI void APIENTRY glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); GLAPI void APIENTRY glVertexAttribIFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride); GLAPI void APIENTRY glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glVertexAttribIPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glVertexAttribL1d(GLuint index, GLdouble x); GLAPI void APIENTRY glVertexAttribL1dEXT(GLuint index, GLdouble x); GLAPI void APIENTRY glVertexAttribL1dv(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttribL1dvEXT(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttribL1i64NV(GLuint index, GLint64EXT x); GLAPI void APIENTRY glVertexAttribL1i64vNV(GLuint index, const GLint64EXT *v); GLAPI void APIENTRY glVertexAttribL1ui64ARB(GLuint index, GLuint64EXT x); GLAPI void APIENTRY glVertexAttribL1ui64NV(GLuint index, GLuint64EXT x); GLAPI void APIENTRY glVertexAttribL1ui64vARB(GLuint index, const GLuint64EXT *v); GLAPI void APIENTRY glVertexAttribL1ui64vNV(GLuint index, const GLuint64EXT *v); GLAPI void APIENTRY glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y); GLAPI void APIENTRY glVertexAttribL2dEXT(GLuint index, GLdouble x, GLdouble y); GLAPI void APIENTRY glVertexAttribL2dv(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttribL2dvEXT(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttribL2i64NV(GLuint index, GLint64EXT x, GLint64EXT y); GLAPI void APIENTRY glVertexAttribL2i64vNV(GLuint index, const GLint64EXT *v); GLAPI void APIENTRY glVertexAttribL2ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y); GLAPI void APIENTRY glVertexAttribL2ui64vNV(GLuint index, const GLuint64EXT *v); GLAPI void APIENTRY glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glVertexAttribL3dEXT(GLuint index, GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glVertexAttribL3dv(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttribL3dvEXT(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttribL3i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); GLAPI void APIENTRY glVertexAttribL3i64vNV(GLuint index, const GLint64EXT *v); GLAPI void APIENTRY glVertexAttribL3ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); GLAPI void APIENTRY glVertexAttribL3ui64vNV(GLuint index, const GLuint64EXT *v); GLAPI void APIENTRY glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glVertexAttribL4dEXT(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glVertexAttribL4dv(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttribL4dvEXT(GLuint index, const GLdouble *v); GLAPI void APIENTRY glVertexAttribL4i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); GLAPI void APIENTRY glVertexAttribL4i64vNV(GLuint index, const GLint64EXT *v); GLAPI void APIENTRY glVertexAttribL4ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); GLAPI void APIENTRY glVertexAttribL4ui64vNV(GLuint index, const GLuint64EXT *v); GLAPI void APIENTRY glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); GLAPI void APIENTRY glVertexAttribLFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride); GLAPI void APIENTRY glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glVertexAttribLPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glVertexAttribP1ui(GLuint index, GLenum type, GLboolean32 normalized, GLuint value); GLAPI void APIENTRY glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value); GLAPI void APIENTRY glVertexAttribP2ui(GLuint index, GLenum type, GLboolean32 normalized, GLuint value); GLAPI void APIENTRY glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value); GLAPI void APIENTRY glVertexAttribP3ui(GLuint index, GLenum type, GLboolean32 normalized, GLuint value); GLAPI void APIENTRY glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value); GLAPI void APIENTRY glVertexAttribP4ui(GLuint index, GLenum type, GLboolean32 normalized, GLuint value); GLAPI void APIENTRY glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value); GLAPI void APIENTRY glVertexAttribParameteriAMD(GLuint index, GLenum pname, GLint param); GLAPI void APIENTRY glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer); GLAPI void APIENTRY glVertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer); GLAPI void APIENTRY glVertexAttribPointerNV(GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glVertexAttribs1dvNV(GLuint index, GLsizei count, const GLdouble *v); GLAPI void APIENTRY glVertexAttribs1fvNV(GLuint index, GLsizei count, const GLfloat *v); GLAPI void APIENTRY glVertexAttribs1hvNV(GLuint index, GLsizei n, const GLhalfNV *v); GLAPI void APIENTRY glVertexAttribs1svNV(GLuint index, GLsizei count, const GLshort *v); GLAPI void APIENTRY glVertexAttribs2dvNV(GLuint index, GLsizei count, const GLdouble *v); GLAPI void APIENTRY glVertexAttribs2fvNV(GLuint index, GLsizei count, const GLfloat *v); GLAPI void APIENTRY glVertexAttribs2hvNV(GLuint index, GLsizei n, const GLhalfNV *v); GLAPI void APIENTRY glVertexAttribs2svNV(GLuint index, GLsizei count, const GLshort *v); GLAPI void APIENTRY glVertexAttribs3dvNV(GLuint index, GLsizei count, const GLdouble *v); GLAPI void APIENTRY glVertexAttribs3fvNV(GLuint index, GLsizei count, const GLfloat *v); GLAPI void APIENTRY glVertexAttribs3hvNV(GLuint index, GLsizei n, const GLhalfNV *v); GLAPI void APIENTRY glVertexAttribs3svNV(GLuint index, GLsizei count, const GLshort *v); GLAPI void APIENTRY glVertexAttribs4dvNV(GLuint index, GLsizei count, const GLdouble *v); GLAPI void APIENTRY glVertexAttribs4fvNV(GLuint index, GLsizei count, const GLfloat *v); GLAPI void APIENTRY glVertexAttribs4hvNV(GLuint index, GLsizei n, const GLhalfNV *v); GLAPI void APIENTRY glVertexAttribs4svNV(GLuint index, GLsizei count, const GLshort *v); GLAPI void APIENTRY glVertexAttribs4ubvNV(GLuint index, GLsizei count, const GLubyte *v); GLAPI void APIENTRY glVertexBindingDivisor(GLuint bindingindex, GLuint divisor); GLAPI void APIENTRY glVertexBlendARB(GLint count); GLAPI void APIENTRY glVertexBlendEnvfATI(GLenum pname, GLfloat param); GLAPI void APIENTRY glVertexBlendEnviATI(GLenum pname, GLint param); GLAPI void APIENTRY glVertexFormatNV(GLint size, GLenum type, GLsizei stride); GLAPI void APIENTRY glVertexP2ui(GLenum type, GLuint value); GLAPI void APIENTRY glVertexP2uiv(GLenum type, const GLuint *value); GLAPI void APIENTRY glVertexP3ui(GLenum type, GLuint value); GLAPI void APIENTRY glVertexP3uiv(GLenum type, const GLuint *value); GLAPI void APIENTRY glVertexP4ui(GLenum type, GLuint value); GLAPI void APIENTRY glVertexP4uiv(GLenum type, const GLuint *value); GLAPI void APIENTRY glVertexPointSizefAPPLE(GLfloat size); GLAPI void APIENTRY glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void APIENTRY glVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); GLAPI void APIENTRY glVertexPointerListIBM(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride); GLAPI void APIENTRY glVertexPointervINTEL(GLint size, GLenum type, const void * *pointer); GLAPI void APIENTRY glVertexStream1dATI(GLenum stream, GLdouble x); GLAPI void APIENTRY glVertexStream1dvATI(GLenum stream, const GLdouble *coords); GLAPI void APIENTRY glVertexStream1fATI(GLenum stream, GLfloat x); GLAPI void APIENTRY glVertexStream1fvATI(GLenum stream, const GLfloat *coords); GLAPI void APIENTRY glVertexStream1iATI(GLenum stream, GLint x); GLAPI void APIENTRY glVertexStream1ivATI(GLenum stream, const GLint *coords); GLAPI void APIENTRY glVertexStream1sATI(GLenum stream, GLshort32 x); GLAPI void APIENTRY glVertexStream1svATI(GLenum stream, const GLshort *coords); GLAPI void APIENTRY glVertexStream2dATI(GLenum stream, GLdouble x, GLdouble y); GLAPI void APIENTRY glVertexStream2dvATI(GLenum stream, const GLdouble *coords); GLAPI void APIENTRY glVertexStream2fATI(GLenum stream, GLfloat x, GLfloat y); GLAPI void APIENTRY glVertexStream2fvATI(GLenum stream, const GLfloat *coords); GLAPI void APIENTRY glVertexStream2iATI(GLenum stream, GLint x, GLint y); GLAPI void APIENTRY glVertexStream2ivATI(GLenum stream, const GLint *coords); GLAPI void APIENTRY glVertexStream2sATI(GLenum stream, GLshort32 x, GLshort32 y); GLAPI void APIENTRY glVertexStream2svATI(GLenum stream, const GLshort *coords); GLAPI void APIENTRY glVertexStream3dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glVertexStream3dvATI(GLenum stream, const GLdouble *coords); GLAPI void APIENTRY glVertexStream3fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glVertexStream3fvATI(GLenum stream, const GLfloat *coords); GLAPI void APIENTRY glVertexStream3iATI(GLenum stream, GLint x, GLint y, GLint z); GLAPI void APIENTRY glVertexStream3ivATI(GLenum stream, const GLint *coords); GLAPI void APIENTRY glVertexStream3sATI(GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z); GLAPI void APIENTRY glVertexStream3svATI(GLenum stream, const GLshort *coords); GLAPI void APIENTRY glVertexStream4dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glVertexStream4dvATI(GLenum stream, const GLdouble *coords); GLAPI void APIENTRY glVertexStream4fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void APIENTRY glVertexStream4fvATI(GLenum stream, const GLfloat *coords); GLAPI void APIENTRY glVertexStream4iATI(GLenum stream, GLint x, GLint y, GLint z, GLint w); GLAPI void APIENTRY glVertexStream4ivATI(GLenum stream, const GLint *coords); GLAPI void APIENTRY glVertexStream4sATI(GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); GLAPI void APIENTRY glVertexStream4svATI(GLenum stream, const GLshort *coords); GLAPI void APIENTRY glVertexWeightPointerEXT(GLint size, GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glVertexWeightfEXT(GLfloat weight); GLAPI void APIENTRY glVertexWeightfvEXT(const GLfloat *weight); GLAPI void APIENTRY glVertexWeighthNV(GLhalfNV32 weight); GLAPI void APIENTRY glVertexWeighthvNV(const GLhalfNV *weight); GLAPI GLenum APIENTRY glVideoCaptureNV(GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glVideoCaptureStreamParameterivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); GLAPI void APIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height); GLAPI void APIENTRY glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v); GLAPI void APIENTRY glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); GLAPI void APIENTRY glViewportIndexedfv(GLuint index, const GLfloat *v); GLAPI void APIENTRY glViewportPositionWScaleNV(GLuint index, GLfloat xcoeff, GLfloat ycoeff); GLAPI void APIENTRY glViewportSwizzleNV(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); GLAPI void APIENTRY glWaitSemaphoreEXT(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); GLAPI void APIENTRY glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); GLAPI void APIENTRY glWaitVkSemaphoreNV(GLuint64 vkSemaphore); GLAPI void APIENTRY glWeightPathsNV(GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); GLAPI void APIENTRY glWeightPointerARB(GLint size, GLenum type, GLsizei stride, const void *pointer); GLAPI void APIENTRY glWeightbvARB(GLint size, const GLbyte *weights); GLAPI void APIENTRY glWeightdvARB(GLint size, const GLdouble *weights); GLAPI void APIENTRY glWeightfvARB(GLint size, const GLfloat *weights); GLAPI void APIENTRY glWeightivARB(GLint size, const GLint *weights); GLAPI void APIENTRY glWeightsvARB(GLint size, const GLshort *weights); GLAPI void APIENTRY glWeightubvARB(GLint size, const GLubyte *weights); GLAPI void APIENTRY glWeightuivARB(GLint size, const GLuint *weights); GLAPI void APIENTRY glWeightusvARB(GLint size, const GLushort *weights); GLAPI void APIENTRY glWindowPos2d(GLdouble x, GLdouble y); GLAPI void APIENTRY glWindowPos2dARB(GLdouble x, GLdouble y); GLAPI void APIENTRY glWindowPos2dMESA(GLdouble x, GLdouble y); GLAPI void APIENTRY glWindowPos2dv(const GLdouble *v); GLAPI void APIENTRY glWindowPos2dvARB(const GLdouble *v); GLAPI void APIENTRY glWindowPos2dvMESA(const GLdouble *v); GLAPI void APIENTRY glWindowPos2f(GLfloat x, GLfloat y); GLAPI void APIENTRY glWindowPos2fARB(GLfloat x, GLfloat y); GLAPI void APIENTRY glWindowPos2fMESA(GLfloat x, GLfloat y); GLAPI void APIENTRY glWindowPos2fv(const GLfloat *v); GLAPI void APIENTRY glWindowPos2fvARB(const GLfloat *v); GLAPI void APIENTRY glWindowPos2fvMESA(const GLfloat *v); GLAPI void APIENTRY glWindowPos2i(GLint x, GLint y); GLAPI void APIENTRY glWindowPos2iARB(GLint x, GLint y); GLAPI void APIENTRY glWindowPos2iMESA(GLint x, GLint y); GLAPI void APIENTRY glWindowPos2iv(const GLint *v); GLAPI void APIENTRY glWindowPos2ivARB(const GLint *v); GLAPI void APIENTRY glWindowPos2ivMESA(const GLint *v); GLAPI void APIENTRY glWindowPos2s(GLshort32 x, GLshort32 y); GLAPI void APIENTRY glWindowPos2sARB(GLshort32 x, GLshort32 y); GLAPI void APIENTRY glWindowPos2sMESA(GLshort32 x, GLshort32 y); GLAPI void APIENTRY glWindowPos2sv(const GLshort *v); GLAPI void APIENTRY glWindowPos2svARB(const GLshort *v); GLAPI void APIENTRY glWindowPos2svMESA(const GLshort *v); GLAPI void APIENTRY glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glWindowPos3dARB(GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glWindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z); GLAPI void APIENTRY glWindowPos3dv(const GLdouble *v); GLAPI void APIENTRY glWindowPos3dvARB(const GLdouble *v); GLAPI void APIENTRY glWindowPos3dvMESA(const GLdouble *v); GLAPI void APIENTRY glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glWindowPos3fARB(GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glWindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z); GLAPI void APIENTRY glWindowPos3fv(const GLfloat *v); GLAPI void APIENTRY glWindowPos3fvARB(const GLfloat *v); GLAPI void APIENTRY glWindowPos3fvMESA(const GLfloat *v); GLAPI void APIENTRY glWindowPos3i(GLint x, GLint y, GLint z); GLAPI void APIENTRY glWindowPos3iARB(GLint x, GLint y, GLint z); GLAPI void APIENTRY glWindowPos3iMESA(GLint x, GLint y, GLint z); GLAPI void APIENTRY glWindowPos3iv(const GLint *v); GLAPI void APIENTRY glWindowPos3ivARB(const GLint *v); GLAPI void APIENTRY glWindowPos3ivMESA(const GLint *v); GLAPI void APIENTRY glWindowPos3s(GLshort32 x, GLshort32 y, GLshort32 z); GLAPI void APIENTRY glWindowPos3sARB(GLshort32 x, GLshort32 y, GLshort32 z); GLAPI void APIENTRY glWindowPos3sMESA(GLshort32 x, GLshort32 y, GLshort32 z); GLAPI void APIENTRY glWindowPos3sv(const GLshort *v); GLAPI void APIENTRY glWindowPos3svARB(const GLshort *v); GLAPI void APIENTRY glWindowPos3svMESA(const GLshort *v); GLAPI void APIENTRY glWindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glWindowPos4dvMESA(const GLdouble *v); GLAPI void APIENTRY glWindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void APIENTRY glWindowPos4fvMESA(const GLfloat *v); GLAPI void APIENTRY glWindowPos4iMESA(GLint x, GLint y, GLint z, GLint w); GLAPI void APIENTRY glWindowPos4ivMESA(const GLint *v); GLAPI void APIENTRY glWindowPos4sMESA(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); GLAPI void APIENTRY glWindowPos4svMESA(const GLshort *v); GLAPI void APIENTRY glWindowRectanglesEXT(GLenum mode, GLsizei count, const GLint *box); GLAPI void APIENTRY glWriteMaskEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); GLAPI void APIENTRY gluLookAt(GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ); /* Functions generated: 13 OSMesa + 2954 GL + 1 GLU */ aranym-1.1.0/tools/floppy.sh0000775000175000017500000000125713454637622014217 0ustar joyjoy#!/bin/sh bzcat aratools.tar.bz2 | tar xf - export MTOOLSRC="./mtoolsrc" echo "drive t: file=\"floppy\"" > ./mtoolsrc mformat -C -f 1440 -v ARAFLOPPY t: mmd t:auto mmd t:gemsys mmd t:tools mcopy aratools/conxboot.prg t:auto/ mcopy aratools/cecile.prg t:auto/ mcopy aratools/fvdi.prg t:auto/ mcopy aratools/betados.prg t:auto/ mcopy aratools/fastram.prg t:auto/ mcopy aratools/clocky.prg t:auto/ mcopy aratools/zmagxsnd.prg t:auto/ mcopy aratools/bdconfig.sys t:auto/ mcopy aratools/aranymfs.dos t:auto/ mcopy aratools/aranym.sys t:gemsys/ mcopy aratools/newdesk.inf t: mcopy aratools/fvdicout.app t:tools/ mcopy aratools/pcpatch.prg t:tools/ rm -rf ./aratools rm -f ./mtoolsrc aranym-1.1.0/tools/export0000775000175000017500000000334513454637622013616 0ustar joyjoy#!/bin/sh # This scripts helps with building the source .tar.gz file VER_MAJOR=1 VER_MINOR=1 VER_MICRO=0 VER_STATUS= # VERSION=$VER_MAJOR"."$VER_MINOR"."$VER_MICRO TAG="ARANYM_"$VER_MAJOR"_"$VER_MINOR"_"$VER_MICRO if [ "x$VER_STATUS" != "x" ] then VERSION=$VERSION""$VER_STATUS TAG=$TAG"_"$VER_STATUS fi #upper case the tag TAG=`echo $TAG | tr '[:lower:]' '[:upper:]'` FOLDER="aranym-"$VERSION FNAME="aranym_"$VERSION".orig.tar.gz" # echo "download from upstream git repository? (y/N)" read key if [ "x$key" = "xy" ]; then git clone git://github.com/aranym/aranym.git cd aranym git checkout $TAG cd .. fi # grep "define VER_MAJOR" aranym/src/include/version.h | grep $VER_MAJOR >/dev/null if [ $? -ne 0 ]; then echo "ERROR: increase major version in src/include/version.h" exit 1 fi grep "define VER_MINOR" aranym/src/include/version.h | grep $VER_MINOR >/dev/null if [ $? -ne 0 ]; then echo "ERROR: increase minor version in src/include/version.h" exit 1 fi grep "define VER_MICRO" aranym/src/include/version.h | grep $VER_MICRO >/dev/null if [ $? -ne 0 ]; then echo "ERROR: increase micro version in src/include/version.h" exit 1 fi grep "[Vv]ersion "$VERSION aranym/README.md >/dev/null if [ $? -ne 0 ]; then echo "ERROR: increase version in README.md" exit 1 fi grep "%define ver" aranym/aranym.spec | grep $VERSION >/dev/null if [ $? -ne 0 ]; then echo "ERROR: increase version in aranym.spec" exit 1 fi #grep "AC_INIT(aranym, "$VERSION aranym/src/Unix/configure.ac | grep $VERSION >/dev/null #if [ $? -ne 0 ]; then # echo "ERROR: increase version in src/configure.ac" # exit 1 #fi # cd aranym ./autogen.sh make distclean rm -rf .git cd .. && mv aranym $FOLDER && GZIP=--best tar chzf $FNAME --exclude=autogen.sh --exclude=.cvsignore $FOLDER aranym-1.1.0/tools/dyngl.pl0000775000175000017500000055564713454637622014045 0ustar joyjoy#!/usr/bin/perl -w # # This script is used to parse GL header(s) and # generate several output files from it. # # Output files are: # # -protos: # Extract the function prototypes only. The generated file # is used then as reference for generating the other files. # # Usage: dyngl.pl -protos /usr/include/GL/gl.h /usr/include/GL/glext.h /usr/include/GL/osmesa.h > tools/glfuncs.h # # This file MUST NOT automatically be recreated by make, for several reasons: # - The gl headers may be different from system to system. However, the NFOSMesa interface expect # a certain list of functions to be available. # - This script (and make) may not know where the headers are actually stored, # only the compiler knows. # When regenerating this file, check the following list: # - Keep a reference of the previous version # - Functions that are considered obsolete by OpenGL might have been removed from the headers. # In that case, since they must still be exported, they should be added to the %missing # hash below. # - Take a look at the arguments and return types of new functions. # - Integral types of 8-64 bits should be handled already. However, # if the promoted argument is > 32 bits, and declared by some typedef (like GLint64), # you may have to change gen_dispatch() # - Arguments that are pointers to some data may need big->little endian conversion # before passing it to the hosts OSMesa library. # - Return types that are pointers usually dont work, because that # memory would not point to emulated Atari memory. Look at glGetString() # how this (sometimes) can be solved. Otherwise, if you decide not to # export such a function, add it to the %blacklist hash. # - add enums for new functions to atari/nfosmesa/enum-gl.h (at the end, dont reuse any existing numbers!) # This is not done automatically, because the numbers must not change for old functions. # - If new types are used in the prototypes, add them to atari/nfosmesa/gltypes.h # # The current version (API Version 3) was generated from on Linux, # glext.h from Khronos group (http://www.opengl.org/registry/api/GL/glext.h, Date 2018-01-14 # and osmesa.h from Mesa 11.2. # # -macros: # Generate macro calls that are used to generate several tables. # The macro must be defined before including the generated file # and has the signature: # GL_PROC(type, gl, name, export, upper, proto, args, first, ret) # with # type: return type of function # gl: group the function belongs to, either gl, glu or OSMesa # name: name of function, with (gl|glu) prefix removed # export: exported name of function. Different only for some # functions which take float arguments that are exported from LDG # and conflict with OpenGL functions of the same name # that take double arguments. # upper: name of function in uppercase # proto: prototype of the function, including parenthesis # args: argument names of the function # first: address of the first argument # ret: code to return the function result, or GL_void_return # Optionally, OSMESA_PROC() can be defined, with the same # signature, to process OSMesa functions. # There is also a second set of macro calls GL_PROCM generated, # with the same signature, but replacing "memptr" for any argument # in the prototype that is a pointer type # # Usage: dyngl.pl -macros tools/glfuncs.h > atari/nfosmesa/glfuncs.h # # -calls: # Generate the function calls that are used to implement the NFOSMesa feature. # # Usage: dyngl.pl -calls tools/glfuncs.h > src/natfeat/nfosmesa/call-gl.c # # -dispatch: # Generate the case statements that are used to implement the NFOSMesa feature. # # Usage: dyngl.pl -dispatch tools/glfuncs.h > src/natfeat/nfosmesa/dispatch-gl.c # # -ldgheader: # Generate the atari header file needed to use osmesa.ldg. # # Usage: dyngl.pl -ldgheader tools/glfuncs.h > atari/nfosmesa/ldg/osmesa.h # # -ldgsource: # Generate the atari source file that dynamically loads the functions # from osmesa.ldg. # # Usage: dyngl.pl -ldgsource tools/glfuncs.h > atari/nfosmesa/osmesa_load.c # # -tinyldgheader: # Generate the atari header file needed to use tiny_gl.ldg. # # Usage: dyngl.pl -tinyldgheader tools/glfuncs.h > atari/nfosmesa/ldg/tiny_gl.h # # -tinyldgsource: # Generate the atari source file that dynamically loads the functions # from tiny_gl.ldg. # # Usage: dyngl.pl -tinyldgsource tools/glfuncs.h > atari/nfosmesa/tinygl_load.c # # -tinyldglink: # Generate the atari source file that exports the functions from tiny_gl.ldg. # # Usage: dyngl.pl -tinyldglink tools/glfuncs.h > atari/nfosmesa/link-tinygl.h # # -tinyslbheader: # Generate the atari header file needed to use tiny_gl.slb. # # Usage: dyngl.pl -tinyslbheader tools/glfuncs.h > atari/nfosmesa/slb/tiny_gl.h # # -tinyslbsource: # Generate the atari source file that dynamically loads the functions # from tiny_gl.slb. # # Usage: dyngl.pl -tinyslbsource tools/glfuncs.h > atari/nfosmesa/tinygl_loadslb.c # # -slbheader: # Generate the atari header file needed to use osmesa.slb. # # Usage: dyngl.pl -slbheader tools/glfuncs.h > atari/nfosmesa/slb/osmesa.h # # -slbsource: # Generate the atari source file that dynamically loads the functions # from osmesa.slb. # # Usage: dyngl.pl -slbsource tools/glfuncs.h > atari/nfosmesa/osmesa_loadslb.c # use strict; use Data::Dumper; my $me = "dyngl.pl"; my %functions; my $warnings = 0; my $enumfile; my $inc_gltypes = "atari/nfosmesa/gltypes.h"; # # functions which are not yet implemented, # because they would return a host address, # my %blacklist = ( 'glGetString' => 1, # handled separately 'glGetStringi' => 1, # handled separately 'glCreateSyncFromCLeventARB' => 1, 'glDebugMessageCallback' => 1, 'glDebugMessageCallbackAMD' => 1, 'glDebugMessageCallbackARB' => 1, 'glGetBufferSubData' => 1, 'glGetBufferSubDataARB' => 1, 'glGetNamedBufferSubDataEXT' => 1, 'glGetNamedBufferSubData' => 1, 'glMapBuffer' => 1, 'glMapBufferARB' => 1, 'glMapBufferRange' => 1, 'glMapObjectBufferATI' => 1, 'glMapNamedBufferEXT' => 1, 'glMapNamedBufferRangeEXT' => 1, 'glMapNamedBuffer' => 1, 'glMapNamedBufferRange' => 1, 'glMapTexture2DINTEL' => 1, 'glImportSyncEXT' => 1, 'glProgramCallbackMESA' => 1, 'glTextureRangeAPPLE' => 1, 'glGetTexParameterPointervAPPLE' => 1, 'glInstrumentsBufferSGIX' => 1, # GL_NV_vdpau_interop 'glVDPAUInitNV' => 1, 'glVDPAUFiniNV' => 1, 'glVDPAURegisterVideoSurfaceNV' => 1, 'glVDPAURegisterOutputSurfaceNV' => 1, 'glVDPAUIsSurfaceNV' => 1, 'glVDPAUUnregisterSurfaceNV' => 1, 'glVDPAUGetSurfaceivNV' => 1, 'glVDPAUSurfaceAccessNV' => 1, 'glVDPAUMapSurfacesNV' => 1, 'glVDPAUUnmapSurfacesNV' => 1, # GL_NV_draw_vulkan_image 'glGetVkProcAddrNV' => 1, # from GL_EXT_memory_object; could not figure out yet # how to get at the size of those objects 'glGetUnsignedBytevEXT' => 1, 'glGetUnsignedBytei_vEXT' => 1, ); # # typedefs from headers that are already pointer types # my %pointer_types = ( # 'GLsync' => 1, # declared as pointer type, but actually is a handle 'GLDEBUGPROC' => 1, 'GLDEBUGPROCARB' => 1, 'GLDEBUGPROCAMD' => 1, 'GLprogramcallbackMESA' => 1, 'GLeglClientBufferEXT' => 1, 'GLVULKANPROCNV' => 1, ); # # 8-bit types that dont have endian issues # my %byte_types = ( 'GLubyte' => 1, 'const GLubyte' => 1, 'GLchar' => 1, 'const GLchar' => 1, 'GLbyte' => 1, 'const GLbyte' => 1, 'char' => 1, 'GLcharARB' => 1, 'const GLcharARB' => 1, 'GLboolean' => 1, ); # # integral types that need to be promoted to # 32bit type when passed by value # my %short_types = ( 'GLshort' => 'GLshort32', 'GLushort' => 'GLushort32', 'GLboolean' => 'GLboolean32', 'GLchar' => 'GLchar32', 'char' => 'GLchar32', 'GLubyte' => 'GLubyte32', 'GLbyte' => 'GLbyte32', 'GLhalfNV' => 'GLhalfNV32', ); # # >32bit types that need special handling # my %longlong_types = ( 'GLint64' => 1, 'GLint64EXT' => 1, 'GLuint64' => 1, 'GLuint64EXT' => 1, ); my %longlong_rettypes = ( 'GLint64' => 1, 'GLint64EXT' => 1, 'GLuint64' => 1, 'GLuint64EXT' => 1, 'GLintptr' => 1, 'GLsizeiptr' => 1, 'GLintptrARB' => 1, 'GLsizeiptrARB' => 1, ); # # format specifiers to print the various types, # only used for debug output # my %printf_formats = ( 'GLshort32' => '%d', 'GLushort32' => '%u', 'GLboolean32' => '%d', 'GLchar32' => '%c', 'GLubyte32' => '%u', 'GLbyte32' => '%d', 'GLhalfNV32' => '%u', 'GLint' => '%d', 'GLsizei' => '%d', 'GLuint' => '%u', 'GLenum' => '%s', # will be translated using gl_enum_name 'GLbitfield' => '0x%x', 'GLfloat' => '%f', 'const GLfloat' => '%f', # used in glClearNamedFramebufferfi 'GLclampf' => '%f', 'GLdouble' => '%f', 'GLclampd' => '%f', 'GLfixed' => '0x%x', 'GLintptr' => '%" PRI_IPTR "', 'GLintptrARB' => '%" PRI_IPTR "', 'GLsizeiptr' => '%" PRI_IPTR "', 'GLsizeiptrARB' => '%" PRI_IPTR "', 'GLint64' => '%" PRId64 "', 'GLint64EXT' => '%" PRId64 "', 'GLuint64' => '%" PRIu64 "', 'GLuint64EXT' => '%" PRIu64 "', 'long' => '%ld', 'GLhandleARB' => '%u', 'GLsync' => '" PRI_PTR "', 'GLvdpauSurfaceNV' => '" PRI_IPTR "', 'GLDEBUGPROC' => '" PRI_PTR "', 'GLDEBUGPROCAMD' => '" PRI_PTR "', 'GLDEBUGPROCARB' => '" PRI_PTR "', 'GLprogramcallbackMESA' => '" PRI_PTR "', 'GLeglClientBufferEXT' => '" PRI_PTR "', 'GLVULKANPROCNV' => '" PRI_PTR "', 'OSMesaContext' => '%u', # type is a pointer, but we return a handle instead ); # # emit header # sub print_header() { my $files = join(' ', @ARGV); $files = '' unless ($files ne ""); print << "EOF"; /* * -- DO NOT EDIT -- * Generated by $me from $files */ EOF } sub warn($) { my ($msg) = @_; print STDERR "$me: warning: $msg\n"; ++$warnings; } my %missing = ( 'glDeleteObjectBufferATI' => { 'name' => 'DeleteObjectBufferATI', 'gl' => 'gl', 'type' => 'void', 'params' => [ { 'type' => 'GLuint', 'name' => 'buffer', 'pointer' => 0 }, ], }, 'glGetActiveUniformBlockIndex' => { 'name' => 'GetActiveUniformBlockIndex', 'gl' => 'gl', 'type' => 'GLuint', 'params' => [ { 'type' => 'GLuint', 'name' => 'program', 'pointer' => 0 }, { 'type' => 'const GLchar', 'name' => 'uniformBlockName', 'pointer' => 1 }, ], }, 'glSamplePassARB' => { 'name' => 'SamplePassARB', 'gl' => 'gl', 'type' => 'void', 'params' => [ { 'type' => 'GLenum', 'name' => 'mode', 'pointer' => 0 }, ], }, 'glTexScissorFuncINTEL' => { 'name' => 'TexScissorFuncINTEL', 'gl' => 'gl', 'type' => 'void', 'params' => [ { 'type' => 'GLenum', 'name' => 'target', 'pointer' => 0 }, { 'type' => 'GLenum', 'name' => 'lfunc', 'pointer' => 0 }, { 'type' => 'GLenum', 'name' => 'hfunc', 'pointer' => 0 }, ], }, 'glTexScissorINTEL' => { 'name' => 'TexScissorINTEL', 'gl' => 'gl', 'type' => 'void', 'params' => [ { 'type' => 'GLenum', 'name' => 'target', 'pointer' => 0 }, { 'type' => 'GLclampf', 'name' => 'tlow', 'pointer' => 0 }, { 'type' => 'GLclampf', 'name' => 'thigh', 'pointer' => 0 }, ], }, 'glTextureFogSGIX' => { 'name' => 'TextureFogSGIX', 'gl' => 'gl', 'type' => 'void', 'params' => [ { 'type' => 'GLenum', 'name' => 'pname', 'pointer' => 0 }, ], }, 'gluLookAt' => { 'name' => 'LookAt', 'gl' => 'glu', 'type' => 'void', 'params' => [ { 'type' => 'GLdouble', 'name' => 'eyeX', 'pointer' => 0 }, { 'type' => 'GLdouble', 'name' => 'eyeY', 'pointer' => 0 }, { 'type' => 'GLdouble', 'name' => 'eyeZ', 'pointer' => 0 }, { 'type' => 'GLdouble', 'name' => 'centerX', 'pointer' => 0 }, { 'type' => 'GLdouble', 'name' => 'centerY', 'pointer' => 0 }, { 'type' => 'GLdouble', 'name' => 'centerZ', 'pointer' => 0 }, { 'type' => 'GLdouble', 'name' => 'upX', 'pointer' => 0 }, { 'type' => 'GLdouble', 'name' => 'upY', 'pointer' => 0 }, { 'type' => 'GLdouble', 'name' => 'upZ', 'pointer' => 0 }, ], }, ); # # hash of trivial lengths of pointer arguments # my %paramlens = ( # GL_NV_register_combiners 'glCombinerParameterfvNV' => [ { 'name' => 'params', 'inout' => 'in', 'len' => 'nfglGetNumParams(pname)' } ], 'glCombinerParameterivNV' => [ { 'name' => 'params', 'inout' => 'in', 'len' => 'nfglGetNumParams(pname)' } ], 'glGetCombinerInputParameterfvNV' => [ { 'name' => 'params', 'inout' => 'out', 'len' => 'nfglGetNumParams(pname)' } ], 'glGetCombinerInputParameterivNV' => [ { 'name' => 'params', 'inout' => 'out', 'len' => 'nfglGetNumParams(pname)' } ], 'glGetCombinerOutputParameterfvNV' => [ { 'name' => 'params', 'inout' => 'out', 'len' => 'nfglGetNumParams(pname)' } ], 'glGetCombinerOutputParameterivNV' => [ { 'name' => 'params', 'inout' => 'out', 'len' => 'nfglGetNumParams(pname)' } ], 'glGetFinalCombinerInputParameterfvNV' => [ { 'name' => 'params', 'inout' => 'out', 'len' => 'nfglGetNumParams(pname)' } ], 'glGetFinalCombinerInputParameterivNV' => [ { 'name' => 'params', 'inout' => 'out', 'len' => 'nfglGetNumParams(pname)' } ], # GL_NV_register_combiners2 'glCombinerStageParameterfvNV' => [ { 'name' => 'params', 'inout' => 'in', 'len' => 'nfglGetNumParams(pname)' } ], 'glGetCombinerStageParameterfvNV' => [ { 'name' => 'params', 'inout' => 'out', 'len' => 'nfglGetNumParams(pname)' } ], # GL_ARB_transpose_matrix 'glLoadTransposeMatrixfARB' => [ { 'name' => 'm', 'inout' => 'in', 'len' => '16' } ], 'glLoadTransposeMatrixdARB' => [ { 'name' => 'm', 'inout' => 'in', 'len' => '16' } ], 'glMultTransposeMatrixdARB' => [ { 'name' => 'm', 'inout' => 'in', 'len' => '16' } ], 'glMultTransposeMatrixfARB' => [ { 'name' => 'm', 'inout' => 'in', 'len' => '16' } ], # GL_ARB_shader_objects 'glGetInfoLogARB' => [ { 'name' => 'length', 'inout' => 'out', 'len' => '1' }, { 'name' => 'infoLog', 'inout' => 'out', 'len' => 'maxLength', 'outlen' => '__length_tmp[0] + 1' }, ], 'glUniform1fvARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '1 * count' } ], 'glUniform1ivARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '1 * count' } ], 'glUniform2fvARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '2 * count' } ], 'glUniform2ivARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '2 * count' } ], 'glUniform3fvARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '3 * count' } ], 'glUniform3ivARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '3 * count' } ], 'glUniform4fvARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '4 * count' } ], 'glUniform4ivARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '4 * count' } ], 'glUniformMatrix2fvARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '4 * count' } ], 'glUniformMatrix3fvARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '9 * count' } ], 'glUniformMatrix4fvARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '16 * count' } ], 'glGetObjectParameterfvARB' => [ { 'name' => 'params', 'inout' => 'out', 'len' => '1' } ], 'glGetObjectParameterivARB' => [ { 'name' => 'params', 'inout' => 'out', 'len' => '1' } ], 'glGetUniformfvARB' => [ { 'name' => 'params', 'inout' => 'out', 'len' => '1' } ], 'glGetUniformivARB' => [ { 'name' => 'params', 'inout' => 'out', 'len' => '1' } ], 'glGetShaderSourceARB' => [ { 'name' => 'length', 'inout' => 'out', 'len' => '1' }, { 'name' => 'source', 'inout' => 'out', 'len' => 'maxLength', 'outlen' => '__length_tmp[0] + 1' }, ], 'glGetUniformLocationARB' => [ { 'name' => 'name', 'inout' => 'in', 'len' => 'safe_strlen(name)' } ], 'glGetActiveUniformARB' => [ { 'name' => 'length', 'inout' => 'out', 'len' => '1' }, { 'name' => 'size', 'inout' => 'out', 'len' => '1' }, { 'name' => 'type', 'inout' => 'out', 'len' => '1' }, { 'name' => 'name', 'inout' => 'out', 'len' => 'maxLength', 'outlen' => '__length_tmp[0] + 1' }, ], 'glGetAttachedObjectsARB' => [ { 'name' => 'count', 'inout' => 'out', 'len' => '1' }, { 'name' => 'obj', 'inout' => 'out', 'len' => 'maxCount', 'outlen' => '__count_tmp[0]' }, ], # GL_ARB_multitexture 'glMultiTexCoord1dvARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '1' } ], 'glMultiTexCoord1fvARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '1' } ], 'glMultiTexCoord1ivARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '1' } ], 'glMultiTexCoord1svARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '1' } ], 'glMultiTexCoord2dvARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '2' } ], 'glMultiTexCoord2fvARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '2' } ], 'glMultiTexCoord2ivARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '2' } ], 'glMultiTexCoord2svARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '2' } ], 'glMultiTexCoord3dvARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '3' } ], 'glMultiTexCoord3fvARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '3' } ], 'glMultiTexCoord3ivARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '3' } ], 'glMultiTexCoord3svARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '3' } ], 'glMultiTexCoord4dvARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '4' } ], 'glMultiTexCoord4fvARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '4' } ], 'glMultiTexCoord4svARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '4' } ], 'glMultiTexCoord4ivARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => '4' } ], # GL_EXT_cull_vertex 'glCullParameterdvEXT' => [ { 'name' => 'params', 'inout' => 'in', 'len' => 'nfglGetNumParams(pname)' } ], 'glCullParameterfvEXT' => [ { 'name' => 'params', 'inout' => 'in', 'len' => 'nfglGetNumParams(pname)' } ], # GL_EXT_debug_marker 'glInsertEventMarkerEXT' => [ { 'name' => 'marker', 'inout' => 'in', 'len' => 'length > 0 ? length : safe_strlen(marker) + 1' } ], 'glPushGroupMarkerEXT' => [ { 'name' => 'marker', 'inout' => 'in', 'len' => 'length > 0 ? length : safe_strlen(marker) + 1' } ], # GL_ARB_debug_output 'glDebugMessageControlARB' => [ { 'name' => 'ids', 'inout' => 'in', 'len' => 'count' } ], 'glDebugMessageInsertARB' => [ { 'name' => 'buf', 'inout' => 'in', 'len' => 'length >= 0 ? length : safe_strlen(buf) + 1' } ], 'glGetDebugMessageLogARB' => [ { 'name' => 'sources', 'inout' => 'out', 'len' => 'count', 'outlen' => '__ret' }, { 'name' => 'types', 'inout' => 'out', 'len' => 'count', 'outlen' => '__ret' }, { 'name' => 'ids', 'inout' => 'out', 'len' => 'count', 'outlen' => '__ret' }, { 'name' => 'severities', 'inout' => 'out', 'len' => 'count', 'outlen' => '__ret' }, { 'name' => 'lengths', 'inout' => 'out', 'len' => 'count', 'outlen' => '__ret' }, { 'name' => 'messageLog', 'inout' => 'out', 'len' => 'bufSize' }, ], # GL_AMD_debug_output 'glDebugMessageEnableAMD' => [ { 'name' => 'ids', 'inout' => 'in', 'len' => 'count' } ], 'glDebugMessageInsertAMD' => [ { 'name' => 'buf', 'inout' => 'in', 'len' => 'length >= 0 ? length : safe_strlen(buf) + 1' } ], 'glGetDebugMessageLogAMD' => [ { 'name' => 'categories', 'inout' => 'out', 'len' => 'count', 'outlen' => '__ret' }, { 'name' => 'ids', 'inout' => 'out', 'len' => 'count', 'outlen' => '__ret' }, { 'name' => 'severities', 'inout' => 'out', 'len' => 'count', 'outlen' => '__ret' }, { 'name' => 'lengths', 'inout' => 'out', 'len' => 'count', 'outlen' => '__ret' }, { 'name' => 'message', 'inout' => 'out', 'len' => 'bufsize' }, ], # GL_APPLE_fence 'glGenFencesAPPLE' => [ { 'name' => 'fences', 'inout' => 'out', 'len' => 'n' } ], 'glDeleteFencesAPPLE' => [ { 'name' => 'fences', 'inout' => 'in', 'len' => 'n' } ], # GL_NV_fence 'glDeleteFencesNV' => [ { 'name' => 'fences', 'inout' => 'in', 'len' => 'n' } ], 'glGenFencesNV' => [ { 'name' => 'fences', 'inout' => 'out', 'len' => 'n' } ], 'glGetFenceivNV' => [ { 'name' => 'params', 'inout' => 'out', 'len' => 'nfglGetNumParams(pname)' } ], # GL_SGIS_detail_texture 'glDetailTexFuncSGIS' => [ { 'name' => 'points', 'inout' => 'in', 'len' => 'n * 2' } ], # GL version 4.6 'glSpecializeShader' => [ { 'name' => 'pEntryPoint', 'inout' => 'in', 'len' => 'safe_strlen(pEntryPoint) + 1' }, { 'name' => 'pConstantIndex', 'inout' => 'in', 'len' => 'numSpecializationConstants' }, { 'name' => 'pConstantValue', 'inout' => 'in', 'len' => 'numSpecializationConstants' }, ], # GL_ARB_gl_spirv 'glSpecializeShaderARB' => [ { 'name' => 'pEntryPoint', 'inout' => 'in', 'len' => 'safe_strlen(pEntryPoint) + 1' }, { 'name' => 'pConstantIndex', 'inout' => 'in', 'len' => 'numSpecializationConstants' }, { 'name' => 'pConstantValue', 'inout' => 'in', 'len' => 'numSpecializationConstants' }, ], # GL_AMD_gpu_shader_int64 'glUniform1i64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '1 * count' } ], 'glUniform2i64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '2 * count' } ], 'glUniform3i64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '3 * count' } ], 'glUniform4i64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '4 * count' } ], 'glUniform1ui64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '1 * count' } ], 'glUniform2ui64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '2 * count' } ], 'glUniform3ui64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '3 * count' } ], 'glUniform4ui64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '4 * count' } ], 'glProgramUniform1i64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '1 * count' } ], 'glProgramUniform2i64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '2 * count' } ], 'glProgramUniform3i64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '3 * count' } ], 'glProgramUniform4i64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '4 * count' } ], 'glProgramUniform1ui64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '1 * count' } ], 'glProgramUniform2ui64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '2 * count' } ], 'glProgramUniform3ui64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '3 * count' } ], 'glProgramUniform4ui64vNV' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '4 * count' } ], # GL_ARB_gpu_shader_int64 'glUniform1i64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '1 * count' } ], 'glUniform2i64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '2 * count' } ], 'glUniform3i64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '3 * count' } ], 'glUniform4i64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '4 * count' } ], 'glUniform1ui64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '1 * count' } ], 'glUniform2ui64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '2 * count' } ], 'glUniform3ui64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '3 * count' } ], 'glUniform4ui64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '4 * count' } ], 'glProgramUniform1i64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '1 * count' } ], 'glProgramUniform2i64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '2 * count' } ], 'glProgramUniform3i64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '3 * count' } ], 'glProgramUniform4i64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '4 * count' } ], 'glProgramUniform1ui64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '1 * count' } ], 'glProgramUniform2ui64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '2 * count' } ], 'glProgramUniform3ui64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '3 * count' } ], 'glProgramUniform4ui64vARB' => [ { 'name' => 'value', 'inout' => 'in', 'len' => '4 * count' } ], # GL_ARB_sample_locations 'glFramebufferSampleLocationsfvARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => 'count' } ], 'glNamedFramebufferSampleLocationsfvARB' => [ { 'name' => 'v', 'inout' => 'in', 'len' => 'count' } ], # GL_EXT_memory_object 'glDeleteMemoryObjectsEXT' => [ { 'name' => 'memoryObjects', 'inout' => 'in', 'len' => 'n' } ], 'glCreateMemoryObjectsEXT' => [ { 'name' => 'memoryObjects', 'inout' => 'out', 'len' => 'n' } ], 'glMemoryObjectParameterivEXT' => [ { 'name' => 'params', 'inout' => 'in', 'len' => 'nfglGetNumParams(pname)' } ], 'glGetMemoryObjectParameterivEXT' => [ { 'name' => 'params', 'inout' => 'out', 'len' => 'nfglGetNumParams(pname)' } ], # GL_EXT_memory_object_win32 'glImportMemoryWin32NameEXT' => [ { 'name' => 'name', 'inout' => 'in', 'len' => 'safe_strlen(name) + 1', 'basetype' => 'GLchar' } ], # GL_EXT_semaphore 'glGenSemaphoresEXT' => [ { 'name' => 'semaphores', 'inout' => 'out', 'len' => 'n' } ], 'glDeleteSemaphoresEXT' => [ { 'name' => 'semaphores', 'inout' => 'in', 'len' => 'n' } ], 'glSemaphoreParameterui64vEXT' => [ { 'name' => 'params', 'inout' => 'in', 'len' => 'nfglGetNumParams(pname)' } ], 'glGetSemaphoreParameterui64vEXT' => [ { 'name' => 'params', 'inout' => 'out', 'len' => 'nfglGetNumParams(pname)' } ], 'glWaitSemaphoreEXT' => [ { 'name' => 'buffers', 'inout' => 'in', 'len' => 'numBufferBarriers' }, { 'name' => 'textures', 'inout' => 'in', 'len' => 'numTextureBarriers' }, { 'name' => 'srcLayouts', 'inout' => 'in', 'len' => 'numTextureBarriers' }, ], 'glSignalSemaphoreEXT' => [ { 'name' => 'buffers', 'inout' => 'in', 'len' => 'numBufferBarriers' }, { 'name' => 'textures', 'inout' => 'in', 'len' => 'numTextureBarriers' }, { 'name' => 'dstLayouts', 'inout' => 'in', 'len' => 'numTextureBarriers' }, ], # GL_EXT_semaphore_win32 'glImportSemaphoreWin32NameEXT' => [ { 'name' => 'name', 'inout' => 'in', 'len' => 'safe_strlen(name) + 1', 'basetype' => 'GLchar' } ], # GL_NVX_linked_gpu_multicast 'glLGPUNamedBufferSubDataNVX' => [ { 'name' => 'data', 'inout' => 'in', 'len' => 'size', 'basetype' => 'GLbyte' } ], # GL_NV_gpu_multicast 'glMulticastBufferSubDataNV' => [ { 'name' => 'data', 'inout' => 'in', 'len' => 'size', 'basetype' => 'GLbyte' } ], 'glMulticastFramebufferSampleLocationsfvNV' => [ { 'name' => 'v', 'inout' => 'in', 'len' => 'count' } ], 'glMulticastGetQueryObjectivNV' => [ { 'name' => 'params', 'inout' => 'out', 'len' => 'nfglGetNumParams(pname)' } ], 'glMulticastGetQueryObjectuivNV' => [ { 'name' => 'params', 'inout' => 'out', 'len' => 'nfglGetNumParams(pname)' } ], 'glMulticastGetQueryObjecti64vNV' => [ { 'name' => 'params', 'inout' => 'out', 'len' => 'nfglGetNumParams(pname)' } ], 'glMulticastGetQueryObjectui64vNV' => [ { 'name' => 'params', 'inout' => 'out', 'len' => 'nfglGetNumParams(pname)' } ], # GL_NV_query_resource 'glQueryResourceNV' => [ { 'name' => 'buffer', 'inout' => 'out', 'len' => 'bufSize' } ], # GL_NV_query_resource_tag 'glGenQueryResourceTagNV' => [ { 'name' => 'tagIds', 'inout' => 'out', 'len' => 'n' } ], 'glDeleteQueryResourceTagNV' => [ { 'name' => 'tagIds', 'inout' => 'in', 'len' => 'n' } ], 'glQueryResourceTagNV' => [ { 'name' => 'tagString', 'inout' => 'in', 'len' => 'safe_strlen(tagString) + 1' } ], # GL_AMD_framebuffer_sample_positions 1 'glFramebufferSamplePositionsfvAMD' => [ { 'name' => 'values', 'inout' => 'in', 'len' => 'numsamples' } ], 'glNamedFramebufferSamplePositionsfvAMD' => [ { 'name' => 'values', 'inout' => 'in', 'len' => 'numsamples' } ], 'glGetFramebufferParameterfvAMD' => [ { 'name' => 'values', 'inout' => 'out', 'len' => 'numsamples' } ], 'glGetNamedFramebufferParameterfvAMD' => [ { 'name' => 'values', 'inout' => 'out', 'len' => 'numsamples' } ], # GL_EXT_window_rectangles 'glWindowRectanglesEXT' => [ { 'name' => 'box', 'inout' => 'in', 'len' => '4 * count' } ], ); sub add_missing($) { my ($missing) = @_; my $function_name; my $gl; foreach my $key (keys %{$missing}) { my $ent = $missing->{$key}; $gl = $ent->{gl}; $function_name = $gl . $ent->{name}; if (!defined($functions{$function_name})) { $functions{$function_name} = $ent; } } } my %copy_funcs = ( 'GLbyte' => { 'ifdef' => 'NFOSMESA_NEED_BYTE_CONV', 'copyin' => 'Atari2HostByteArray', 'copyout' => 'Host2AtariByteArray', }, 'GLubyte' => { 'ifdef' => 'NFOSMESA_NEED_BYTE_CONV', 'copyin' => 'Atari2HostByteArray', 'copyout' => 'Host2AtariByteArray', }, 'GLchar' => { 'ifdef' => 'NFOSMESA_NEED_BYTE_CONV', 'copyin' => 'Atari2HostByteArray', 'copyout' => 'Host2AtariByteArray', }, 'GLcharARB' => { 'ifdef' => 'NFOSMESA_NEED_BYTE_CONV', 'copyin' => 'Atari2HostByteArray', 'copyout' => 'Host2AtariByteArray', }, 'GLshort' => { 'ifdef' => 'NFOSMESA_NEED_INT_CONV', 'copyin' => 'Atari2HostShortArray', 'copyout' => 'Host2AtariIntArray', }, 'GLushort' => { 'ifdef' => 'NFOSMESA_NEED_INT_CONV', 'copyin' => 'Atari2HostShortArray', 'copyout' => 'Host2AtariIntArray', }, 'GLint' => { 'ifdef' => 'NFOSMESA_NEED_INT_CONV', 'copyin' => 'Atari2HostIntArray', 'copyout' => 'Host2AtariIntArray', }, 'GLsizei' => { 'ifdef' => 'NFOSMESA_NEED_INT_CONV', 'copyin' => 'Atari2HostIntArray', 'copyout' => 'Host2AtariIntArray', }, 'GLuint' => { 'ifdef' => 'NFOSMESA_NEED_INT_CONV', 'copyin' => 'Atari2HostIntArray', 'copyout' => 'Host2AtariIntArray', }, 'GLenum' => { 'ifdef' => 'NFOSMESA_NEED_INT_CONV', 'copyin' => 'Atari2HostIntArray', 'copyout' => 'Host2AtariIntArray', }, 'GLintptr' => { 'ifdef' => 'NFOSMESA_NEED_INT_CONV', 'copyin' => 'Atari2HostIntptrArray', 'copyout' => 'Host2AtariIntptrArray', }, 'GLint64' => { 'ifdef' => 'NFOSMESA_NEED_INT_CONV', 'copyin' => 'Atari2HostInt64Array', 'copyout' => 'Host2AtariInt64Array', }, 'GLint64EXT' => { 'ifdef' => 'NFOSMESA_NEED_INT_CONV', 'copyin' => 'Atari2HostInt64Array', 'copyout' => 'Host2AtariInt64Array', }, 'GLuint64' => { 'ifdef' => 'NFOSMESA_NEED_INT_CONV', 'copyin' => 'Atari2HostInt64Array', 'copyout' => 'Host2AtariInt64Array', }, 'GLuint64EXT' => { 'ifdef' => 'NFOSMESA_NEED_INT_CONV', 'copyin' => 'Atari2HostInt64Array', 'copyout' => 'Host2AtariInt64Array', }, 'GLfloat' => { 'ifdef' => 'NFOSMESA_NEED_FLOAT_CONV', 'copyin' => 'Atari2HostFloatArray', 'copyout' => 'Host2AtariFloatArray', }, 'GLdouble' => { 'ifdef' => 'NFOSMESA_NEED_DOUBLE_CONV', 'copyin' => 'Atari2HostDoubleArray', 'copyout' => 'Host2AtariDoubleArray', }, 'GLhandleARB' => { 'ifdef' => 'NFOSMESA_NEED_INT_CONV || defined(__APPLE__)', 'copyin' => 'Atari2HostHandleARB', 'copyout' => 'Host2AtariHandleARB', }, ); sub sort_by_name { my $ret = $a cmp $b; return $ret; } sub sort_by_value { my $ret = $functions{$a}->{funcno} <=> $functions{$b}->{funcno}; return $ret; } sub add_paramlens($) { my ($lens) = @_; my $function_name; foreach my $key (keys %{$lens}) { my $len = $lens->{$key}; $function_name = $key; my $ent = $functions{$function_name}; if (!defined($ent)) { die "$me: unknown function $function_name"; } my $params = $ent->{params}; my $argcount = $#$params + 1; my $lenargcount = $#$len + 1; my $argc; my $param; my %ifdefs = (); for (my $lenargc = 0; $lenargc < $lenargcount; $lenargc++) { my $lenparam = $len->[$lenargc]; for ($argc = 0; $argc < $argcount; $argc++) { $param = $params->[$argc]; last if ($param->{name} eq $lenparam->{name}); } die "$me: unknown parameter $lenparam->{name} in $function_name" unless ($argc < $argcount); die "$me: parameter $lenparam->{name} in $function_name is not pointer" unless ($param->{pointer}); $param->{len} = $lenparam->{len}; my $type = $param->{type}; if (!defined($lenparam->{inout})) { if ($type =~ m/const/) { $lenparam->{inout} = 'in'; } else { $lenparam->{inout} = 'out'; } } else { if ($type =~ m/const/) { if ($lenparam->{inout} ne 'in') { &warn("$me: $function_name($param->{name}): output type '$type' declared 'const'"); } } else { if ($lenparam->{inout} eq 'in') { # &warn("$me: $function_name($param->{name}): input type '$type' not declared 'const'"); } } } my $basetype = $param->{type}; $basetype =~ s/const//; $basetype =~ s/^ *//; $basetype =~ s/ *$//; if (defined($lenparam->{basetype})) { $basetype = $lenparam->{basetype}; } die "$me: $function_name($param->{name}): don't know how to convert type '$basetype'" unless (defined($copy_funcs{$basetype})); $param->{inout} = $lenparam->{inout}; $param->{outlen} = $lenparam->{outlen} if defined($lenparam->{outlen}); $param->{basetype} = $basetype; $ifdefs{$copy_funcs{$basetype}->{ifdef}} = 1; } my $allfound = 1; for ($argc = 0; $argc < $argcount; $argc++) { $param = $params->[$argc]; if ($param->{pointer} && !defined($param->{len})) { $allfound = 0; } } if ($allfound) { $ent->{autogen} = 1; $ent->{ifdefs} = join(' || ', sort { sort_by_name } keys %ifdefs); } else { &warn("$me: $function_name cannot be generated automatically"); } } } # # fix short types to their promoted 32bit type # sub fix_promotions() { foreach my $key (keys %functions) { my $ent = $functions{$key}; my $params = $ent->{params}; my $argcount = $#$params + 1; for (my $argc = 0; $argc < $argcount; $argc++) { my $param = $params->[$argc]; my $pointer = $param->{pointer}; my $type = $param->{type}; if (! $pointer && defined($short_types{$type})) { # print "changing $ent->{name}($type $param->{name}) to $short_types{$type}\n"; $param->{type} = $short_types{$type}; } } } } # # generate the strings for the prototype and the arguments # sub gen_params() { my $ent; foreach my $key (keys %functions) { $ent = $functions{$key}; my $params = $ent->{params}; my $argcount = $#$params + 1; my $args = ""; my $noconv_args = ""; my $debug_args = ""; my $prototype = ""; my $prototype_mem = ""; my $any_pointer = 0; my $printf_format = ""; my $format; my $type_mem; for (my $argc = 0; $argc < $argcount; $argc++) { my $param = $params->[$argc]; my $pointer = $param->{pointer}; my $type = $param->{type}; my $name = $param->{name}; $args .= ", " if ($argc != 0); $noconv_args .= ", " if ($argc != 0); $debug_args .= ", " if ($argc != 0); if ($pointer) { if (1 || !defined($byte_types{$type})) { $any_pointer = 2; } elsif ($any_pointer == 0) { $any_pointer = 1; } if ($pointer > 1) { $pointer = ""; } else { $pointer = "*"; } $debug_args .= 'AtariOffset(' . $name . ')'; $format = '" PRI_PTR "'; $type_mem = "memptr"; if (defined($param->{len})) { if ($param->{'inout'} eq 'in' || $param->{'inout'} eq 'inout') { $args .= '__' . $name. '_ptmp'; } else { $args .= '__' . $name. '_tmp'; } } else { $args .= $name; } $noconv_args .= "HostAddr($name, $type ${pointer})"; } else { $type_mem = "$type"; if ($type eq 'GLsync' || $type eq 'GLhandleARB') { $debug_args .= '(unsigned int)(uintptr_t)' . $name; } elsif ($type eq 'GLenum') { $debug_args .= "gl_enum_name($name)"; } elsif (defined($pointer_types{$type})) { $debug_args .= 'AtariOffset(' . $name . ')'; $type_mem = "memptr"; } else { $debug_args .= $name; } $pointer = ""; $format = $printf_formats{$type}; if (!defined($format)) { &warn("$key: dont know how to printf values of type $type"); $format = "%d"; } $args .= $name; $noconv_args .= $name; } $prototype .= ", " if ($argc != 0); $prototype .= "${type} ${pointer}${name}"; $prototype_mem .= ", " if ($argc != 0); $prototype_mem .= "${type_mem} ${name}"; $printf_format .= ", " if ($argc != 0); $printf_format .= $format; } $prototype = "void" unless ($prototype ne ""); $prototype_mem = "void" unless ($prototype_mem ne ""); $ent->{args} = $args; $ent->{debug_args} = $debug_args; $ent->{noconv_args} = $noconv_args; $ent->{proto} = $prototype; $ent->{proto_mem} = $prototype_mem; $ent->{any_pointer} = $any_pointer; $ent->{printf_format} = $printf_format; } # hack for exception_error, which has a function pointer as argument $ent = $functions{"exception_error"}; $ent->{args} = "exception"; } # # Read include file(s) # sub read_includes() { my $filename; my $return_type; my $function_name; my $gl; while ($filename = shift @ARGV) { my $line; if ( ! defined(open(FILE, $filename)) ) { die "$me: couldn't open $filename: $!\n"; } while ($line = ) { if ($line =~ /^GLAPI/ ) { my @params; my $prototype; while (! ($line =~ /\);/)) { chomp($line); $line .= " " . ; } chomp($line); $line =~ s/\t/ /g; $line =~ s/\n//g; $line =~ s/ +/ /g; $line =~ s/ *$//; $line =~ s/\( /(/g; $line =~ s/ \(/(/g; $line =~ s/ \)/)/g; # Add missing parameter names (for glext.h) my $letter = 'a'; while ($line =~ /[,\( ] *GL\w+\** *\**,/ ) { $line =~ s/([,\( ] *GL\w+\** *\**),/$1 $letter,/; $letter++; } while ($line =~ /[,\( ] *GL\w+\** *\**\)/ ) { $line =~ s/([,\( ] *GL\w+\** *\**)\)/$1 $letter\)/; $letter++; } while ($line =~ /[,\( ] *GL\w+\** *const *\*,/ ) { $line =~ s/([,\( ] *GL\w+\** *const *\*),/$1 $letter,/; $letter++; } if ($line =~ /^GLAPI *([a-zA-Z0-9_ *]+).* +(glu|gl|OSMesa)(\w+) *\((.*)\);/) { $return_type = $1; $gl = $2; $function_name = $3; $prototype = $4; } else { &warn("ignoring $line"); next; } $return_type =~ s/ *$//; $return_type =~ s/GLAPIENTRY$//; $return_type =~ s/APIENTRY$//; $return_type =~ s/ *$//; $return_type =~ s/^ *//; $prototype =~ s/ *$//; $prototype =~ s/^ *//; # Remove parameter types @params = (); my $any_pointer = 0; if ( $prototype eq "void" ) { # Remove void list of parameters } else { # Remove parameters type foreach my $param (split(',', $prototype)) { $param =~ s/ *$//; $param =~ s/^ *//; if ($param =~ /([a-zA-Z0-9_ *]*[ *])([a-zA-Z0-9_]+)/) { my $type = $1; my $name = $2; $type =~ s/^ *//; $type =~ s/ *$//; my $pointer = ($type =~ s/\*$//); if ($pointer) { $type =~ s/ *$//; } if ($param =~ /\[([0-9]+)\]$/) { $pointer = 1; } my %param = ('type' => $type, 'name' => $name, 'pointer' => $pointer); push @params, \%param; } else { die "$me: can't parse parameter $param in $function_name"; } } } my %ent = ('type' => $return_type, 'name' => $function_name, 'params' => \@params, 'proto' => $prototype, 'gl' => $gl, 'any_pointer' => $any_pointer); $function_name = $gl . $function_name; # ignore some functions that sometimes appear in gl headers but are actually only GLES next if ($function_name eq 'glEGLImageTargetRenderbufferStorageOES'); next if ($function_name eq 'glEGLImageTargetTexture2DOES'); $functions{$function_name} = \%ent; } } close(FILE); } add_missing(\%missing); fix_promotions(); } sub read_enums() { my $key; my $ent; my $line; my $name; my $funcno; my $function_name; my %byupper; die "$me: no enum file" unless defined($enumfile); foreach my $key (keys %functions) { $functions{$key}->{funcno} = 0; } if ( ! defined(open(FILE, $enumfile)) ) { die "$me: couldn't open $enumfile: $!\n"; } foreach my $key (keys %functions) { my $uppername = uc($key); # 'swapbuffer' is mangled to 'tinyglswapbuffer' to avoid name clashes if ($key eq 'swapbuffer') { $uppername = 'TINYGL' . $uppername; } # glGetString and glGetStringi are passed # as LENGLGETSTRING and LENGLGETSTRINGI if ($key eq 'glGetString' || $key eq 'glGetStringi') { $uppername = 'LEN' . $uppername; } $byupper{$uppername} = $key; } # some functions from oldmesa have no direct NFAPI call $functions{'OSMesaCreateLDG'}->{funcno} = 1384; $functions{'OSMesaDestroyLDG'}->{funcno} = 1385; $functions{'max_width'}->{funcno} = 1386; $functions{'max_height'}->{funcno} = 1387; $functions{'information'}->{funcno} = 1388; $functions{'exception_error'}->{funcno} = 1389; while ($line = ) { if ($line =~ /.*NFOSMESA_([a-zA-Z0-9_]+) = ([0-9]+).*/) { $name = $1; $funcno = $2; if (exists($byupper{$name})) { $functions{$byupper{$name}}->{funcno} = $funcno; $functions{$byupper{$name}}->{nfapi} = 'NFOSMESA_' . $name; } } } close(FILE); my $errors = 0; foreach my $key (keys %functions) { if (!$functions{$key}->{funcno}) { &warn("no function number for $key"); ++$errors; } } die "$errors errors" unless ($errors == 0); } # # functions that need special attention; # each one needs a corresponding macro # # Most of these macros are for converting input/output arrays # to/from host format. For functions that don't need conversion # (ie. all parameters are passed as values) # no entry needs to be made here. # If there is an entry, AND its value is != 0, # a macro FN_UPPERCASENAME has to be defined in nfosmesa.cpp. # In some cases, the length of the array can be deduced from # some of the other parameters; in such cases, you should make # an entry to the paramlens hash above, and set the entry here to 0, # or remove it. The script will then generate the conversion code. # my %macros = ( # GL_ARB_window_pos 'glWindowPos2dvARB' => 1, 'glWindowPos2fvARB' => 1, 'glWindowPos2ivARB' => 1, 'glWindowPos2svARB' => 1, 'glWindowPos3dvARB' => 1, 'glWindowPos3fvARB' => 1, 'glWindowPos3ivARB' => 1, 'glWindowPos3svARB' => 1, # GL_MESA_window_pos 'glWindowPos2dvMESA' => 1, 'glWindowPos2fvMESA' => 1, 'glWindowPos2ivMESA' => 1, 'glWindowPos2svMESA' => 1, 'glWindowPos3dvMESA' => 1, 'glWindowPos3fvMESA' => 1, 'glWindowPos3ivMESA' => 1, 'glWindowPos3svMESA' => 1, 'glWindowPos4dvMESA' => 1, 'glWindowPos4fvMESA' => 1, 'glWindowPos4ivMESA' => 1, 'glWindowPos4svMESA' => 1, # GL_EXT_color_subtable 'glColorSubTableEXT' => 1, 'glCopyColorSubTableEXT' => 0, # GL_NV_register_combiners 'glCombinerParameterfvNV' => 2, 'glCombinerParameterfNV' => 0, 'glCombinerParameterivNV' => 2, 'glCombinerParameteriNV' => 0, 'glCombinerInputNV' => 0, 'glCombinerOutputNV' => 0, 'glFinalCombinerInputNV' => 0, 'glGetCombinerInputParameterfvNV' => 2, 'glGetCombinerInputParameterivNV' => 2, 'glGetCombinerOutputParameterfvNV' => 2, 'glGetCombinerOutputParameterivNV' => 2, 'glGetFinalCombinerInputParameterfvNV' => 2, 'glGetFinalCombinerInputParameterivNV' => 2, # GL_NV_register_combiners2 'glCombinerStageParameterfvNV' => 2, 'glGetCombinerStageParameterfvNV' => 2, # GL_ARB_multitexture 'glActiveTextureARB' => 0, 'glClientActiveTextureARB' => 0, 'glMultiTexCoord1dARB' => 0, 'glMultiTexCoord1dvARB' => 2, 'glMultiTexCoord1fARB' => 0, 'glMultiTexCoord1fvARB' => 2, 'glMultiTexCoord1iARB' => 0, 'glMultiTexCoord1ivARB' => 2, 'glMultiTexCoord1sARB' => 0, 'glMultiTexCoord1svARB' => 2, 'glMultiTexCoord2dARB' => 0, 'glMultiTexCoord2dvARB' => 2, 'glMultiTexCoord2fARB' => 0, 'glMultiTexCoord2fvARB' => 2, 'glMultiTexCoord2iARB' => 0, 'glMultiTexCoord2ivARB' => 2, 'glMultiTexCoord2sARB' => 0, 'glMultiTexCoord2svARB' => 2, 'glMultiTexCoord3dARB' => 0, 'glMultiTexCoord3dvARB' => 2, 'glMultiTexCoord3fARB' => 0, 'glMultiTexCoord3fvARB' => 2, 'glMultiTexCoord3iARB' => 0, 'glMultiTexCoord3ivARB' => 2, 'glMultiTexCoord3sARB' => 0, 'glMultiTexCoord3svARB' => 2, 'glMultiTexCoord4dARB' => 0, 'glMultiTexCoord4dvARB' => 2, 'glMultiTexCoord4fARB' => 0, 'glMultiTexCoord4fvARB' => 2, 'glMultiTexCoord4iARB' => 0, 'glMultiTexCoord4ivARB' => 2, 'glMultiTexCoord4sARB' => 0, 'glMultiTexCoord4svARB' => 2, # GL_ARB_transpose_matrix 'glLoadTransposeMatrixdARB' => 2, 'glLoadTransposeMatrixfARB' => 2, 'glMultTransposeMatrixdARB' => 2, 'glMultTransposeMatrixfARB' => 2, # GL_EXT_cull_vertex 'glCullParameterdvEXT' => 2, 'glCullParameterfvEXT' => 2, # GL_EXT_debug_marker 'glInsertEventMarkerEXT' => 2, 'glPushGroupMarkerEXT' => 2, 'glPopGroupMarkerEXT' => 0, # GL_ARB_debug_output 'glDebugMessageControlARB' => 2, 'glDebugMessageInsertARB' => 2, 'glDebugMessageCallbackARB' => 1, 'glGetDebugMessageLogARB' => 2, # GL_AMD_debug_output 'glDebugMessageEnableAMD' => 2, 'glDebugMessageInsertAMD' => 2, 'glDebugMessageCallbackAMD' => 1, 'glGetDebugMessageLogAMD' => 2, # GL_SGIX_polynomial_ffd 'glDeformationMap3dSGIX' => 1, 'glDeformationMap3fSGIX' => 1, 'glDeformSGIX' => 0, 'glLoadIdentityDeformationMapSGIX' => 0, # GL_APPLE_fence 'glGenFencesAPPLE' => 2, 'glDeleteFencesAPPLE' => 2, 'glSetFenceAPPLE' => 0, 'glIsFenceAPPLE' => 0, 'glTestFenceAPPLE' => 0, 'glFinishFenceAPPLE' => 0, 'glTestObjectAPPLE' => 0, 'glFinishObjectAPPLE' => 0, # GL_NV_fence 'glDeleteFencesNV' => 2, 'glGenFencesNV' => 2, 'glIsFenceNV' => 0, 'glTestFenceNV' => 0, 'glGetFenceivNV' => 2, 'glFinishFenceNV' => 0, 'glSetFenceNV' => 0, # GL_EXT_framebuffer_object 'glIsRenderbufferEXT' => 0, 'glBindRenderbufferEXT' => 0, 'glDeleteRenderbuffersEXT' => 1, 'glGenRenderbuffersEXT' => 1, 'glRenderbufferStorageEXT' => 0, 'glGetRenderbufferParameterivEXT' => 1, 'glIsFramebufferEXT' => 0, 'glBindFramebufferEXT' => 0, 'glDeleteFramebuffersEXT' => 1, 'glGenFramebuffersEXT' => 1, 'glCheckFramebufferStatusEXT' => 0, 'glFramebufferTexture1DEXT' => 0, 'glFramebufferTexture2DEXT' => 0, 'glFramebufferTexture3DEXT' => 0, 'glFramebufferRenderbufferEXT' => 0, 'glGetFramebufferAttachmentParameterivEXT' => 1, 'glGenerateMipmapEXT' => 0, # GL_AMD_name_gen_delete 'glGenNamesAMD' => 1, 'glDeleteNamesAMD' => 1, 'glIsNameAMD' => 0, # GL_APPLE_vertex_array_object 'glBindVertexArrayAPPLE' => 0, 'glDeleteVertexArraysAPPLE' => 1, 'glGenVertexArraysAPPLE' => 1, 'glIsVertexArrayAPPLE' => 0, # GL_SGIS_detail_texture 'glDetailTexFuncSGIS' => 0, 'glGetDetailTexFuncSGIS' => 1, # GL_ARB_draw_buffers 'glDrawBuffersARB' => 1, # GL_ATI_draw_buffers 'glDrawBuffersATI' => 1, # GL_ARB_draw_instanced 'glDrawArraysInstancedARB' => 1, 'glDrawElementsInstancedARB' => 1, # GL_EXT_draw_instanced 'glDrawArraysInstancedEXT' => 1, 'glDrawElementsInstancedEXT' => 1, # GL_EXT_draw_range_elements 'glDrawRangeElementsEXT' => 1, # GL_EXT_fog_coord 'glFogCoordfEXT' => 0, 'glFogCoordfvEXT' => 1, 'glFogCoorddEXT' => 0, 'glFogCoorddvEXT' => 1, 'glFogCoordPointerEXT' => 1, # GL_SGIS_fog_function 'glFogFuncSGIS' => 1, 'glGetFogFuncSGIS' => 1, # GL_SGIX_fragment_lighting 'glFragmentColorMaterialSGIX' => 0, 'glFragmentLightfSGIX' => 0, 'glFragmentLightfvSGIX' => 1, 'glFragmentLightiSGIX' => 0, 'glFragmentLightivSGIX' => 1, 'glFragmentLightModelfSGIX' => 0, 'glFragmentLightModelfvSGIX' => 1, 'glFragmentLightModeliSGIX' => 0, 'glFragmentLightModelivSGIX' => 1, 'glFragmentMaterialfSGIX' => 0, 'glFragmentMaterialfvSGIX' => 1, 'glFragmentMaterialiSGIX' => 0, 'glFragmentMaterialivSGIX' => 1, 'glGetFragmentLightfvSGIX' => 1, 'glGetFragmentLightivSGIX' => 1, 'glGetFragmentMaterialfvSGIX' => 1, 'glGetFragmentMaterialivSGIX' => 1, 'glLightEnviSGIX' => 0, # GL_EXT_coordinate_frame 'glTangent3bEXT' => 0, 'glTangent3bvEXT' => 1, 'glTangent3dEXT' => 0, 'glTangent3dvEXT' => 1, 'glTangent3fEXT' => 0, 'glTangent3fvEXT' => 1, 'glTangent3iEXT' => 0, 'glTangent3ivEXT' => 1, 'glTangent3sEXT' => 0, 'glTangent3svEXT' => 1, 'glBinormal3bEXT' => 0, 'glBinormal3bvEXT' => 1, 'glBinormal3dEXT' => 0, 'glBinormal3dvEXT' => 1, 'glBinormal3fEXT' => 0, 'glBinormal3fvEXT' => 1, 'glBinormal3iEXT' => 0, 'glBinormal3ivEXT' => 1, 'glBinormal3sEXT' => 0, 'glBinormal3svEXT' => 1, 'glTangentPointerEXT' => 1, 'glBinormalPointerEXT' => 1, # GL_IBM_vertex_array_lists 'glColorPointerListIBM' => 1, 'glSecondaryColorPointerListIBM' => 1, 'glEdgeFlagPointerListIBM' => 1, 'glFogCoordPointerListIBM' => 1, 'glIndexPointerListIBM' => 1, 'glNormalPointerListIBM' => 1, 'glTexCoordPointerListIBM' => 1, 'glVertexPointerListIBM' => 1, # GL_INTEL_parallel_arrays 'glVertexPointervINTEL' => 1, 'glNormalPointervINTEL' => 1, 'glColorPointervINTEL' => 1, 'glTexCoordPointervINTEL' => 1, # GL_EXT_vertex_array 'glArrayElementEXT' => 1, 'glColorPointerEXT' => 1, 'glDrawArraysEXT' => 1, 'glEdgeFlagPointerEXT' => 1, 'glGetPointervEXT' => 1, 'glIndexPointerEXT' => 1, 'glNormalPointerEXT' => 1, 'glTexCoordPointerEXT' => 1, 'glVertexPointerEXT' => 1, # GL_EXT_compiled_vertex_array 'glLockArraysEXT' => 1, 'glUnlockArraysEXT' => 0, # GL_APPLE_element_array 'glElementPointerAPPLE' => 1, 'glDrawElementArrayAPPLE' => 1, 'glDrawRangeElementArrayAPPLE' => 1, 'glMultiDrawElementArrayAPPLE' => 1, 'glMultiDrawRangeElementArrayAPPLE' => 1, # GL_ATI_element_array 'glElementPointerATI' => 1, 'glDrawElementArrayATI' => 1, 'glDrawRangeElementArrayATI' => 1, # GL_NV_evaluators 'glMapParameterfvNV' => 1, 'glGetMapParameterfvNV' => 1, 'glMapParameterivNV' => 1, 'glGetMapParameterivNV' => 1, 'glMapAttribParameterfvNV' => 1, 'glGetMapAttribParameterfvNV' => 1, 'glMapAttribParameterivNV' => 1, 'glGetMapAttribParameterivNV' => 1, 'glMapControlPointsNV' => 1, 'glGetMapControlPointsNV' => 1, # GL_NV_explicit_multisample 'glGetMultisamplefvNV' => 1, 'glSampleMaskIndexedNV' => 0, 'glTexRenderbufferNV' => 0, # GL_INTEL_performance_query 'glBeginPerfQueryINTEL' => 0, 'glCreatePerfQueryINTEL' => 1, 'glDeletePerfQueryINTEL' => 0, 'glEndPerfQueryINTEL' => 0, 'glGetFirstPerfQueryIdINTEL' => 1, 'glGetNextPerfQueryIdINTEL' => 1, 'glGetPerfCounterInfoINTEL' => 1, 'glGetPerfQueryDataINTEL' => 1, 'glGetPerfQueryIdByNameINTEL' => 1, 'glGetPerfQueryInfoINTEL' => 1, # GL_EXT_direct_state_access 'glMultiTexCoordPointerEXT' => 1, 'glMultiTexEnvfvEXT' => 1, 'glMultiTexEnvivEXT' => 1, 'glMultiTexGendvEXT' => 1, 'glMultiTexGenfvEXT' => 1, 'glMultiTexGenivEXT' => 1, 'glGetMultiTexEnvfvEXT' => 1, 'glGetMultiTexEnvivEXT' => 1, 'glGetMultiTexGendvEXT' => 1, 'glGetMultiTexGenfvEXT' => 1, 'glGetMultiTexGenivEXT' => 1, 'glMultiTexParameterivEXT' => 1, 'glMultiTexParameterfvEXT' => 1, 'glMultiTexImage1DEXT' => 1, 'glMultiTexImage2DEXT' => 1, 'glMultiTexImage3DEXT' => 1, 'glMultiTexSubImage1DEXT' => 1, 'glMultiTexSubImage2DEXT' => 1, 'glMultiTexSubImage3DEXT' => 1, 'glGetMultiTexImageEXT' => 1, 'glGetMultiTexParameterfvEXT' => 1, 'glGetMultiTexParameterivEXT' => 1, 'glGetMultiTexLevelParameterfvEXT' => 1, 'glGetMultiTexLevelParameterivEXT' => 1, 'glGetDoubleIndexedvEXT' => 1, 'glGetFloatIndexedvEXT' => 1, 'glGetPointerIndexedvEXT' => 1, 'glGetBooleanIndexedvEXT' => 1, 'glGetIntegerIndexedvEXT' => 1, 'glGetCompressedMultiTexImageEXT' => 1, 'glGetCompressedTextureImageEXT' => 1, 'glCompressedMultiTexImage1DEXT' => 1, 'glCompressedMultiTexImage2DEXT' => 1, 'glCompressedMultiTexImage3DEXT' => 1, 'glCompressedMultiTexSubImage1DEXT' => 1, 'glCompressedMultiTexSubImage2DEXT' => 1, 'glCompressedMultiTexSubImage3DEXT' => 1, 'glCompressedTextureImage1DEXT' => 1, 'glCompressedTextureImage2DEXT' => 1, 'glCompressedTextureImage3DEXT' => 1, 'glCompressedTextureSubImage1DEXT' => 1, 'glCompressedTextureSubImage2DEXT' => 1, 'glCompressedTextureSubImage3DEXT' => 1, 'glMatrixLoadfEXT' => 1, 'glMatrixLoaddEXT' => 1, 'glMatrixMultfEXT' => 1, 'glMatrixMultdEXT' => 1, 'glMatrixLoadTransposefEXT' => 1, 'glMatrixLoadTransposedEXT' => 1, 'glMatrixMultTransposefEXT' => 1, 'glMatrixMultTransposedEXT' => 1, 'glNamedBufferDataEXT' => 1, 'glNamedBufferSubDataEXT' => 1, 'glGetNamedBufferParameterivEXT' => 1, 'glGetNamedBufferPointervEXT' => 1, 'glGetNamedBufferSubDataEXT' => 1, 'glGetNamedFramebufferAttachmentParameterivEXT' => 1, 'glGetNamedFramebufferParameterivEXT' => 1, 'glGetNamedRenderbufferParameterivEXT' => 1, 'glProgramUniform1fvEXT' => 1, 'glProgramUniform2fvEXT' => 1, 'glProgramUniform3fvEXT' => 1, 'glProgramUniform4fvEXT' => 1, 'glProgramUniform1ivEXT' => 1, 'glProgramUniform2ivEXT' => 1, 'glProgramUniform3ivEXT' => 1, 'glProgramUniform4ivEXT' => 1, 'glProgramUniform1uivEXT' => 1, 'glProgramUniform2uivEXT' => 1, 'glProgramUniform3uivEXT' => 1, 'glProgramUniform4uivEXT' => 1, 'glProgramUniform1dvEXT' => 1, 'glProgramUniform2dvEXT' => 1, 'glProgramUniform3dvEXT' => 1, 'glProgramUniform4dvEXT' => 1, 'glProgramUniformMatrix2fvEXT' => 1, 'glProgramUniformMatrix3fvEXT' => 1, 'glProgramUniformMatrix4fvEXT' => 1, 'glProgramUniformMatrix2x3fvEXT' => 1, 'glProgramUniformMatrix3x2fvEXT' => 1, 'glProgramUniformMatrix2x4fvEXT' => 1, 'glProgramUniformMatrix4x2fvEXT' => 1, 'glProgramUniformMatrix3x4fvEXT' => 1, 'glProgramUniformMatrix4x3fvEXT' => 1, 'glProgramUniformMatrix2dvEXT' => 1, 'glProgramUniformMatrix3dvEXT' => 1, 'glProgramUniformMatrix4dvEXT' => 1, 'glProgramUniformMatrix2x3dvEXT' => 1, 'glProgramUniformMatrix2x4dvEXT' => 1, 'glProgramUniformMatrix3x2dvEXT' => 1, 'glProgramUniformMatrix3x4dvEXT' => 1, 'glProgramUniformMatrix4x2dvEXT' => 1, 'glProgramUniformMatrix4x3dvEXT' => 1, 'glTextureParameterIivEXT' => 1, 'glTextureParameterIuivEXT' => 1, 'glGetTextureParameterIivEXT' => 1, 'glGetTextureParameterIuivEXT' => 1, 'glGetMultiTexParameterIivEXT' => 1, 'glGetMultiTexParameterIuivEXT' => 1, 'glMultiTexParameterIivEXT' => 1, 'glMultiTexParameterIuivEXT' => 1, 'glNamedProgramLocalParameters4fvEXT' => 1, 'glNamedProgramLocalParametersI4ivEXT' => 1, 'glNamedProgramLocalParametersI4uivEXT' => 1, 'glNamedProgramLocalParameterI4ivEXT' => 1, 'glNamedProgramLocalParameterI4uivEXT' => 1, 'glNamedProgramLocalParameter4dvEXT' => 1, 'glNamedProgramLocalParameter4fvEXT' => 1, 'glGetNamedProgramLocalParameterIivEXT' => 1, 'glGetNamedProgramLocalParameterIuivEXT' => 1, 'glGetNamedProgramLocalParameterdvEXT' => 1, 'glGetNamedProgramLocalParameterfvEXT' => 1, 'glGetFloati_vEXT' => 1, 'glGetDoublei_vEXT' => 1, 'glGetPointeri_vEXT' => 1, 'glGetNamedProgramStringEXT' => 1, 'glNamedProgramStringEXT' => 1, 'glGetNamedProgramivEXT' => 1, 'glFramebufferDrawBuffersEXT' => 1, 'glGetFramebufferParameterivEXT' => 1, 'glGetVertexArrayIntegervEXT' => 1, 'glGetVertexArrayPointervEXT' => 1, 'glGetVertexArrayIntegeri_vEXT' => 1, 'glGetVertexArrayPointeri_vEXT' => 1, 'glGetTextureImageEXT' => 1, 'glGetTextureParameterfvEXT' => 1, 'glGetTextureParameterivEXT' => 1, 'glGetTextureLevelParameterfvEXT' => 1, 'glGetTextureLevelParameterivEXT' => 1, 'glNamedBufferStorageEXT' => 1, 'glTextureImage1DEXT' => 1, 'glTextureImage2DEXT' => 1, 'glTextureImage3DEXT' => 1, 'glTextureParameterfvEXT' => 1, 'glTextureParameterivEXT' => 1, 'glTextureSubImage1DEXT' => 1, 'glTextureSubImage2DEXT' => 1, 'glTextureSubImage3DEXT' => 1, # GL_ARB_clear_buffer_object 'glClearBufferData' => 1, 'glClearBufferSubData' => 1, 'glClearNamedBufferSubDataEXT' => 1, 'glClearNamedBufferDataEXT' => 1, # GL_EXT_gpu_shader4 'glGetUniformuivEXT' => 1, 'glBindFragDataLocationEXT' => 1, 'glGetFragDataLocationEXT' => 1, 'glUniform1uiEXT' => 0, 'glUniform2uiEXT' => 0, 'glUniform3uiEXT' => 0, 'glUniform4uiEXT' => 0, 'glUniform1uivEXT' => 1, 'glUniform2uivEXT' => 1, 'glUniform3uivEXT' => 1, 'glUniform4uivEXT' => 1, # GL_AMD_gpu_shader_int64 'glUniform1i64NV' => 0, 'glUniform2i64NV' => 0, 'glUniform3i64NV' => 0, 'glUniform4i64NV' => 0, 'glUniform1i64vNV' => 0, 'glUniform2i64vNV' => 0, 'glUniform3i64vNV' => 0, 'glUniform4i64vNV' => 0, 'glUniform1ui64NV' => 0, 'glUniform2ui64NV' => 0, 'glUniform3ui64NV' => 0, 'glUniform4ui64NV' => 0, 'glUniform1ui64vNV' => 0, 'glUniform2ui64vNV' => 0, 'glUniform3ui64vNV' => 0, 'glUniform4ui64vNV' => 0, 'glGetUniformi64vNV' => 1, 'glGetUniformui64vNV' => 1, 'glProgramUniform1i64NV' => 0, 'glProgramUniform2i64NV' => 0, 'glProgramUniform3i64NV' => 0, 'glProgramUniform4i64NV' => 0, 'glProgramUniform1i64vNV' => 0, 'glProgramUniform2i64vNV' => 0, 'glProgramUniform3i64vNV' => 0, 'glProgramUniform4i64vNV' => 0, 'glProgramUniform1ui64NV' => 0, 'glProgramUniform2ui64NV' => 0, 'glProgramUniform3ui64NV' => 0, 'glProgramUniform4ui64NV' => 0, 'glProgramUniform1ui64vNV' => 0, 'glProgramUniform2ui64vNV' => 0, 'glProgramUniform3ui64vNV' => 0, 'glProgramUniform4ui64vNV' => 0, # GL_EXT_vertex_shader 'glBeginVertexShaderEXT' => 0, 'glEndVertexShaderEXT' => 0, 'glBindVertexShaderEXT' => 0, 'glGenVertexShadersEXT' => 0, 'glDeleteVertexShaderEXT' => 0, 'glShaderOp1EXT' => 0, 'glShaderOp2EXT' => 0, 'glShaderOp3EXT' => 0, 'glSwizzleEXT' => 0, 'glWriteMaskEXT' => 0, 'glInsertComponentEXT' => 0, 'glExtractComponentEXT' => 0, 'glGenSymbolsEXT' => 0, 'glSetInvariantEXT' => 1, 'glSetLocalConstantEXT' => 1, 'glVariantbvEXT' => 1, 'glVariantsvEXT' => 1, 'glVariantivEXT' => 1, 'glVariantfvEXT' => 1, 'glVariantdvEXT' => 1, 'glVariantubvEXT' => 1, 'glVariantusvEXT' => 1, 'glVariantuivEXT' => 1, 'glVariantPointerEXT' => 1, 'glEnableVariantClientStateEXT' => 1, 'glDisableVariantClientStateEXT' => 1, 'glBindLightParameterEXT' => 0, 'glBindMaterialParameterEXT' => 0, 'glBindTexGenParameterEXT' => 0, 'glBindTextureUnitParameterEXT' => 0, 'glBindParameterEXT' => 0, 'glIsVariantEnabledEXT' => 0, 'glGetVariantBooleanvEXT' => 1, 'glGetVariantIntegervEXT' => 1, 'glGetVariantFloatvEXT' => 1, 'glGetVariantPointervEXT' => 1, 'glGetInvariantBooleanvEXT' => 1, 'glGetInvariantIntegervEXT' => 1, 'glGetInvariantFloatvEXT' => 1, 'glGetLocalConstantBooleanvEXT' => 1, 'glGetLocalConstantIntegervEXT' => 1, 'glGetLocalConstantFloatvEXT' => 1, # GL_ARB_shading_language_include 'glNamedStringARB' => 1, 'glDeleteNamedStringARB' => 1, 'glCompileShaderIncludeARB' => 1, 'glIsNamedStringARB' => 1, 'glGetNamedStringARB' => 1, 'glGetNamedStringivARB' => 1, # GL_ATI_vertex_streams 'glVertexStream1sATI' => 0, 'glVertexStream1svATI' => 1, 'glVertexStream1iATI' => 0, 'glVertexStream1ivATI' => 1, 'glVertexStream1fATI' => 0, 'glVertexStream1fvATI' => 1, 'glVertexStream1dATI' => 0, 'glVertexStream1dvATI' => 1, 'glVertexStream2sATI' => 0, 'glVertexStream2svATI' => 1, 'glVertexStream2iATI' => 0, 'glVertexStream2ivATI' => 1, 'glVertexStream2fATI' => 0, 'glVertexStream2fvATI' => 1, 'glVertexStream2dATI' => 0, 'glVertexStream2dvATI' => 1, 'glVertexStream3sATI' => 0, 'glVertexStream3svATI' => 1, 'glVertexStream3iATI' => 0, 'glVertexStream3ivATI' => 1, 'glVertexStream3fATI' => 0, 'glVertexStream3fvATI' => 1, 'glVertexStream3dATI' => 0, 'glVertexStream3dvATI' => 1, 'glVertexStream4sATI' => 0, 'glVertexStream4svATI' => 1, 'glVertexStream4iATI' => 0, 'glVertexStream4ivATI' => 1, 'glVertexStream4fATI' => 0, 'glVertexStream4fvATI' => 1, 'glVertexStream4dATI' => 0, 'glVertexStream4dvATI' => 1, 'glNormalStream3bATI' => 0, 'glNormalStream3bvATI' => 1, 'glNormalStream3sATI' => 0, 'glNormalStream3svATI' => 1, 'glNormalStream3iATI' => 0, 'glNormalStream3ivATI' => 1, 'glNormalStream3fATI' => 0, 'glNormalStream3fvATI' => 1, 'glNormalStream3dATI' => 0, 'glNormalStream3dvATI' => 1, 'glClientActiveVertexStreamATI' => 0, 'glVertexBlendEnviATI' => 0, 'glVertexBlendEnvfATI' => 0, # GL_EXT_secondary_color 'glSecondaryColor3bEXT' => 0, 'glSecondaryColor3bvEXT' => 1, 'glSecondaryColor3dEXT' => 0, 'glSecondaryColor3dvEXT' => 1, 'glSecondaryColor3fEXT' => 0, 'glSecondaryColor3fvEXT' => 1, 'glSecondaryColor3iEXT' => 0, 'glSecondaryColor3ivEXT' => 1, 'glSecondaryColor3sEXT' => 0, 'glSecondaryColor3svEXT' => 1, 'glSecondaryColor3ubEXT' => 0, 'glSecondaryColor3ubvEXT' => 1, 'glSecondaryColor3uiEXT' => 0, 'glSecondaryColor3uivEXT' => 1, 'glSecondaryColor3usEXT' => 0, 'glSecondaryColor3usvEXT' => 1, 'glSecondaryColorPointerEXT' => 1, # GL_EXT_separate_shader_objects 'glCreateShaderProgramEXT' => 1, # GL_ATI_vertex_array_object 'glNewObjectBufferATI' => 1, 'glArrayObjectATI' => 1, 'glUpdateObjectBufferATI' => 1, 'glGetObjectBufferfvATI' => 1, 'glGetObjectBufferivATI' => 1, 'glGetArrayObjectfvATI' => 1, 'glGetArrayObjectivATI' => 1, 'glGetVariantArrayObjectfvATI' => 1, 'glGetVariantArrayObjectivATI' => 1, 'glFreeObjectBufferATI' => 1, 'glDeleteObjectBufferATI' => 1, # GL_ATI_vertex_array_object 'glVertexAttribArrayObjectATI' => 1, 'glGetVertexAttribArrayObjectfvATI' => 1, 'glGetVertexAttribArrayObjectivATI' => 1, # GL_ARB_shader_objects 'glDeleteObjectARB' => 0, 'glGetHandleARB' => 0, 'glDetachObjectARB' => 0, 'glCreateShaderObjectARB' => 0, 'glShaderSourceARB' => 1, 'glCompileShaderARB' => 0, 'glCreateProgramObjectARB' => 0, 'glAttachObjectARB' => 0, 'glLinkProgramARB' => 0, 'glUseProgramObjectARB' => 0, 'glValidateProgramARB' => 0, 'glUniform1fARB' => 0, 'glUniform2fARB' => 0, 'glUniform3fARB' => 0, 'glUniform4fARB' => 0, 'glUniform1iARB' => 0, 'glUniform2iARB' => 0, 'glUniform3iARB' => 0, 'glUniform4iARB' => 0, 'glUniform1fvARB' => 2, 'glUniform2fvARB' => 2, 'glUniform3fvARB' => 2, 'glUniform4fvARB' => 2, 'glUniform1ivARB' => 2, 'glUniform2ivARB' => 2, 'glUniform3ivARB' => 2, 'glUniform4ivARB' => 2, 'glUniformMatrix2fvARB' => 2, 'glUniformMatrix3fvARB' => 2, 'glUniformMatrix4fvARB' => 2, 'glGetObjectParameterfvARB' => 2, 'glGetObjectParameterivARB' => 2, 'glGetInfoLogARB' => 2, 'glGetAttachedObjectsARB' => 2, 'glGetUniformLocationARB' => 2, 'glGetActiveUniformARB' => 2, 'glGetUniformfvARB' => 2, 'glGetUniformivARB' => 2, 'glGetShaderSourceARB' => 2, # GL_APPLE_object_purgeable 'glObjectPurgeableAPPLE' => 0, 'glObjectUnpurgeableAPPLE' => 0, 'glGetObjectParameterivAPPLE' => 1, # GL_NV_occlusion_query 'glGenOcclusionQueriesNV' => 1, 'glDeleteOcclusionQueriesNV' => 1, 'glIsOcclusionQueryNV' => 0, 'glBeginOcclusionQueryNV' => 0, 'glEndOcclusionQueryNV' => 0, 'glGetOcclusionQueryivNV' => 1, 'glGetOcclusionQueryuivNV' => 1, # GL_NV_path_rendering 'glGenPathsNV' => 0, 'glDeletePathsNV' => 0, 'glIsPathNV' => 0, 'glPathCommandsNV' => 1, 'glPathCoordsNV' => 1, 'glPathSubCommandsNV' => 1, 'glPathSubCoordsNV' => 1, 'glPathStringNV' => 1, 'glPathGlyphsNV' => 1, 'glPathGlyphRangeNV' => 1, 'glWeightPathsNV' => 1, 'glCopyPathNV' => 0, 'glInterpolatePathsNV' => 0, 'glTransformPathNV' => 1, 'glPathParameterivNV' => 1, 'glPathParameteriNV' => 0, 'glPathParameterfvNV' => 1, 'glPathParameterfNV' => 0, 'glPathDashArrayNV' => 1, 'glPathStencilFuncNV' => 0, 'glPathStencilDepthOffsetNV' => 0, 'glStencilFillPathNV' => 0, 'glStencilStrokePathNV' => 0, 'glStencilFillPathInstancedNV' => 1, 'glStencilStrokePathInstancedNV' => 1, 'glPathCoverDepthFuncNV' => 0, 'glCoverFillPathNV' => 0, 'glCoverStrokePathNV' => 0, 'glCoverFillPathInstancedNV' => 1, 'glCoverStrokePathInstancedNV' => 1, 'glGetPathParameterivNV' => 1, 'glGetPathParameterfvNV' => 1, 'glGetPathCommandsNV' => 1, 'glGetPathCoordsNV' => 1, 'glGetPathDashArrayNV' => 1, 'glGetPathMetricsNV' => 1, 'glGetPathMetricRangeNV' => 1, 'glGetPathSpacingNV' => 1, 'glGetPathLengthNV' => 0, 'glIsPointInFillPathNV' => 0, 'glIsPointInStrokePathNV' => 0, 'glPointAlongPathNV' => 1, 'glMatrixLoad3x2fNV' => 1, 'glMatrixLoad3x3fNV' => 1, 'glMatrixLoadTranspose3x3fNV' => 1, 'glMatrixMult3x2fNV' => 1, 'glMatrixMult3x3fNV' => 1, 'glMatrixMultTranspose3x3fNV' => 1, 'glStencilThenCoverFillPathNV' => 0, 'glStencilThenCoverStrokePathNV' => 0, 'glStencilThenCoverFillPathInstancedNV' => 1, 'glStencilThenCoverStrokePathInstancedNV' => 1, 'glPathGlyphIndexRangeNV' => 1, 'glPathGlyphIndexArrayNV' => 1, 'glPathMemoryGlyphIndexArrayNV' => 1, 'glProgramPathFragmentInputGenNV' => 1, 'glGetProgramResourcefvNV' => 1, 'glPathColorGenNV' => 1, 'glPathTexGenNV' => 1, 'glPathFogGenNV' => 0, 'glGetPathColorGenivNV' => 1, 'glGetPathColorGenfvNV' => 1, 'glGetPathTexGenivNV' => 1, 'glGetPathTexGenfvNV' => 1, # GL_NV_internalformat_sample_query 'glGetInternalformatSampleivNV' => 1, # GL_AMD_performance_monitor 'glGetPerfMonitorGroupsAMD' => 1, 'glGetPerfMonitorCountersAMD' => 1, 'glGetPerfMonitorGroupStringAMD' => 1, 'glGetPerfMonitorCounterStringAMD' => 1, 'glGetPerfMonitorCounterInfoAMD' => 1, 'glGenPerfMonitorsAMD' => 1, 'glDeletePerfMonitorsAMD' => 1, 'glSelectPerfMonitorCountersAMD' => 1, 'glBeginPerfMonitorAMD' => 0, 'glEndPerfMonitorAMD' => 0, 'glGetPerfMonitorCounterDataAMD' => 1, # GL_OES_single_precision 'glClearDepthfOES' => 0, 'glClipPlanefOES' => 1, 'glDepthRangefOES' => 0, 'glFrustumfOES' => 0, 'glGetClipPlanefOES' => 1, 'glOrthofOES' => 0, # GL_NV_half_float 'glVertex2hNV' => 0, 'glVertex2hvNV' => 1, 'glVertex3hNV' => 0, 'glVertex3hvNV' => 1, 'glVertex4hNV' => 0, 'glVertex4hvNV' => 1, 'glNormal3hNV' => 0, 'glNormal3hvNV' => 1, 'glColor3hNV' => 0, 'glColor3hvNV' => 1, 'glColor4hNV' => 0, 'glColor4hvNV' => 1, 'glTexCoord1hNV' => 0, 'glTexCoord1hvNV' => 1, 'glTexCoord2hNV' => 0, 'glTexCoord2hvNV' => 1, 'glTexCoord3hNV' => 0, 'glTexCoord3hvNV' => 1, 'glTexCoord4hNV' => 0, 'glTexCoord4hvNV' => 1, 'glMultiTexCoord1hNV' => 0, 'glMultiTexCoord1hvNV' => 1, 'glMultiTexCoord2hNV' => 0, 'glMultiTexCoord2hvNV' => 1, 'glMultiTexCoord3hNV' => 0, 'glMultiTexCoord3hvNV' => 1, 'glMultiTexCoord4hNV' => 0, 'glMultiTexCoord4hvNV' => 1, 'glFogCoordhNV' => 0, 'glFogCoordhvNV' => 1, 'glSecondaryColor3hNV' => 0, 'glSecondaryColor3hvNV' => 1, 'glVertexWeighthNV' => 0, 'glVertexWeighthvNV' => 1, 'glVertexAttrib1hNV' => 0, 'glVertexAttrib1hvNV' => 1, 'glVertexAttrib2hNV' => 0, 'glVertexAttrib2hvNV' => 1, 'glVertexAttrib3hNV' => 0, 'glVertexAttrib3hvNV' => 1, 'glVertexAttrib4hNV' => 0, 'glVertexAttrib4hvNV' => 1, 'glVertexAttribs1hvNV' => 1, 'glVertexAttribs2hvNV' => 1, 'glVertexAttribs3hvNV' => 1, 'glVertexAttribs4hvNV' => 1, # GL_EXT_histogram 'glGetHistogramEXT' => 1, 'glGetHistogramParameterfvEXT' => 1, 'glGetHistogramParameterivEXT' => 1, 'glGetMinmaxEXT' => 1, 'glGetMinmaxParameterfvEXT' => 1, 'glGetMinmaxParameterivEXT' => 1, 'glHistogramEXT' => 0, 'glMinmaxEXT' => 0, 'glResetHistogramEXT' => 0, 'glResetMinmaxEXT' => 0, # GL_OES_fixed_point 'glGetFixedvOES' => 1, 'glGetPixelMapxv' => 1, 'glPixelMapx' => 1, 'glTexEnvxvOES' => 1, 'glGetTexEnvxvOES' => 1, 'glColor3xvOES' => 1, 'glColor4xvOES' => 1, 'glConvolutionParameterxvOES' => 1, 'glEvalCoord1xvOES' => 1, 'glEvalCoord2xvOES' => 1, 'glFogxvOES' => 1, 'glGetConvolutionParameterxvOES' => 1, 'glGetHistogramParameterxvOES' => 1, 'glGetMapxvOES' => 1, 'glClipPlanexOES' => 1, 'glFeedbackBufferxOES' => 1, 'glGetClipPlanexOES' => 1, 'glGetLightxOES' => 1, 'glTexGenxvOES' => 1, 'glGetTexGenxvOES' => 1, 'glGetTexLevelParameterxvOES' => 1, 'glTexParameterxvOES' => 1, 'glGetTexParameterxvOES' => 1, 'glIndexxvOES' => 1, 'glLightModelxvOES' => 1, 'glLightxvOES' => 1, 'glLoadMatrixxOES' => 1, 'glLoadTransposeMatrixxOES' => 1, 'glMaterialxvOES' => 1, 'glMultMatrixxOES' => 1, 'glMultTransposeMatrixxOES' => 1, 'glMultiTexCoord1xvOES' => 1, 'glMultiTexCoord2xvOES' => 1, 'glMultiTexCoord3xvOES' => 1, 'glMultiTexCoord4xvOES' => 1, 'glNormal3xvOES' => 1, 'glPointParameterxvOES' => 1, 'glPrioritizeTexturesxOES' => 1, 'glRasterPos2xvOES' => 1, 'glRasterPos3xvOES' => 1, 'glRasterPos4xvOES' => 1, 'glRectxvOES' => 1, 'glTexCoord1xvOES' => 1, 'glTexCoord2xvOES' => 1, 'glTexCoord3xvOES' => 1, 'glTexCoord4xvOES' => 1, 'glVertex2xvOES' => 1, 'glVertex3xvOES' => 1, 'glVertex4xvOES' => 1, 'glBitmapxOES' => 1, # GL_OES_byte_coordinates 'glMultiTexCoord1bOES' => 0, 'glMultiTexCoord1bvOES' => 1, 'glMultiTexCoord2bOES' => 0, 'glMultiTexCoord2bvOES' => 1, 'glMultiTexCoord3bOES' => 0, 'glMultiTexCoord3bvOES' => 1, 'glMultiTexCoord4bOES' => 0, 'glMultiTexCoord4bvOES' => 1, 'glTexCoord1bOES' => 0, 'glTexCoord1bvOES' => 1, 'glTexCoord2bOES' => 0, 'glTexCoord2bvOES' => 1, 'glTexCoord3bOES' => 0, 'glTexCoord3bvOES' => 1, 'glTexCoord4bOES' => 0, 'glTexCoord4bvOES' => 1, 'glVertex2bOES' => 0, 'glVertex2bvOES' => 1, 'glVertex3bOES' => 0, 'glVertex3bvOES' => 1, 'glVertex4bOES' => 0, 'glVertex4bvOES' => 1, # GL_APPLE_vertex_array_range 'glVertexArrayRangeAPPLE' => 1, 'glFlushVertexArrayRangeAPPLE' => 1, 'glVertexArrayParameteriAPPLE' => 0, # GL_NV_vertex_array_range 'glFlushVertexArrayRangeNV' => 0, 'glVertexArrayRangeNV' => 1, # GL_SGIX_reference_plane 'glReferencePlaneSGIX' => 1, # GL_OES_query_matrix 'glQueryMatrixxOES' => 1, # GL_SUN_triangle_list 'glReplacementCodeuiSUN' => 0, 'glReplacementCodeusSUN' => 0, 'glReplacementCodeubSUN' => 0, 'glReplacementCodeuivSUN' => 1, 'glReplacementCodeusvSUN' => 1, 'glReplacementCodeubvSUN' => 1, 'glReplacementCodePointerSUN' => 1, # GL_SUN_vertex 'glColor4ubVertex2fSUN' => 0, 'glColor4ubVertex2fvSUN' => 1, 'glColor4ubVertex3fSUN' => 0, 'glColor4ubVertex3fvSUN' => 1, 'glColor3fVertex3fSUN' => 0, 'glColor3fVertex3fvSUN' => 1, 'glNormal3fVertex3fSUN' => 0, 'glNormal3fVertex3fvSUN' => 1, 'glColor4fNormal3fVertex3fSUN' => 0, 'glColor4fNormal3fVertex3fvSUN' => 1, 'glTexCoord2fVertex3fSUN' => 0, 'glTexCoord2fVertex3fvSUN' => 1, 'glTexCoord4fVertex4fSUN' => 0, 'glTexCoord4fVertex4fvSUN' => 1, 'glTexCoord2fColor4ubVertex3fSUN' => 0, 'glTexCoord2fColor4ubVertex3fvSUN' => 1, 'glTexCoord2fColor3fVertex3fSUN' => 0, 'glTexCoord2fColor3fVertex3fvSUN' => 1, 'glTexCoord2fNormal3fVertex3fSUN' => 0, 'glTexCoord2fNormal3fVertex3fvSUN' => 1, 'glTexCoord2fColor4fNormal3fVertex3fSUN' => 0, 'glTexCoord2fColor4fNormal3fVertex3fvSUN' => 1, 'glTexCoord4fColor4fNormal3fVertex4fSUN' => 0, 'glTexCoord4fColor4fNormal3fVertex4fvSUN' => 1, 'glReplacementCodeuiVertex3fSUN' => 0, 'glReplacementCodeuiVertex3fvSUN' => 1, 'glReplacementCodeuiColor4ubVertex3fSUN' => 0, 'glReplacementCodeuiColor4ubVertex3fvSUN' => 1, 'glReplacementCodeuiColor3fVertex3fSUN' => 0, 'glReplacementCodeuiColor3fVertex3fvSUN' => 1, 'glReplacementCodeuiNormal3fVertex3fSUN' => 0, 'glReplacementCodeuiNormal3fVertex3fvSUN' => 1, 'glReplacementCodeuiColor4fNormal3fVertex3fSUN' => 0, 'glReplacementCodeuiColor4fNormal3fVertex3fvSUN' => 1, 'glReplacementCodeuiTexCoord2fVertex3fSUN' => 0, 'glReplacementCodeuiTexCoord2fVertex3fvSUN' => 1, 'glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN' => 0, 'glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN' => 1, 'glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN' => 0, 'glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN' => 1, # GL_ATI_fragment_shader 'glGenFragmentShadersATI' => 0, 'glBindFragmentShaderATI' => 0, 'glDeleteFragmentShaderATI' => 0, 'glBeginFragmentShaderATI' => 0, 'glEndFragmentShaderATI' => 0, 'glPassTexCoordATI' => 0, 'glSampleMapATI' => 0, 'glColorFragmentOp1ATI' => 0, 'glColorFragmentOp2ATI' => 0, 'glColorFragmentOp3ATI' => 0, 'glAlphaFragmentOp1ATI' => 0, 'glAlphaFragmentOp2ATI' => 0, 'glAlphaFragmentOp3ATI' => 0, 'glSetFragmentShaderConstantATI' => 1, # GL_AMD_sample_positions 'glSetMultisamplefvAMD' => 1, # GL_SGIX_sprite 'glSpriteParameterfSGIX' => 0, 'glSpriteParameterfvSGIX' => 1, 'glSpriteParameteriSGIX' => 0, 'glSpriteParameterivSGIX' => 1, # GL_GREMEDY_string_marker 'glStringMarkerGREMEDY' => 1, # GL_SGIS_pixel_texture 'glPixelTexGenParameteriSGIS' => 0, 'glPixelTexGenParameterivSGIS' => 1, 'glPixelTexGenParameterfSGIS' => 0, 'glPixelTexGenParameterfvSGIS' => 1, 'glGetPixelTexGenParameterivSGIS' => 1, 'glGetPixelTexGenParameterfvSGIS' => 1, # GL_SGIX_instruments 'glGetInstrumentsSGIX' => 0, 'glInstrumentsBufferSGIX' => 1, 'glPollInstrumentsSGIX' => 1, 'glReadInstrumentsSGIX' => 0, 'glStartInstrumentsSGIX' => 0, 'glStopInstrumentsSGIX' => 0, # GL_EXT_paletted_texture 'glColorTableEXT' => 1, 'glGetColorTableEXT' => 1, 'glGetColorTableParameterivEXT' => 1, 'glGetColorTableParameterfvEXT' => 1, # GL_SGI_color_table 'glColorTableSGI' => 1, 'glColorTableParameterfvSGI' => 1, 'glColorTableParameterivSGI' => 1, 'glCopyColorTableSGI' => 0, 'glGetColorTableSGI' => 1, 'glGetColorTableParameterfvSGI' => 1, 'glGetColorTableParameterivSGI' => 1, # GL_EXT_pixel_transform 'glPixelTransformParameteriEXT' => 0, 'glPixelTransformParameterfEXT' => 0, 'glPixelTransformParameterivEXT' => 1, 'glPixelTransformParameterfvEXT' => 1, 'glGetPixelTransformParameterivEXT' => 1, 'glGetPixelTransformParameterfvEXT' => 1, # GL_NV_gpu_program4 'glProgramLocalParameterI4iNV' => 0, 'glProgramLocalParameterI4ivNV' => 1, 'glProgramLocalParametersI4ivNV' => 1, 'glProgramLocalParameterI4uiNV' => 0, 'glProgramLocalParameterI4uivNV' => 1, 'glProgramLocalParametersI4uivNV' => 1, 'glProgramEnvParameterI4iNV' => 0, 'glProgramEnvParameterI4ivNV' => 1, 'glProgramEnvParametersI4ivNV' => 1, 'glProgramEnvParameterI4uiNV' => 0, 'glProgramEnvParameterI4uivNV' => 1, 'glProgramEnvParametersI4uivNV' => 1, 'glGetProgramLocalParameterIivNV' => 1, 'glGetProgramLocalParameterIuivNV' => 1, 'glGetProgramEnvParameterIivNV' => 1, 'glGetProgramEnvParameterIuivNV' => 1, # GL_NV_gpu_program4 'glProgramSubroutineParametersuivNV' => 1, 'glGetProgramSubroutineParameteruivNV' => 1, # GL_ARB_fragment_program 'glProgramStringARB' => 1, 'glBindProgramARB' => 0, 'glDeleteProgramsARB' => 1, 'glGenProgramsARB' => 1, 'glProgramEnvParameter4dARB' => 0, 'glProgramEnvParameter4dvARB' => 1, 'glProgramEnvParameter4fARB' => 0, 'glProgramEnvParameter4fvARB' => 1, 'glProgramLocalParameter4dARB' => 0, 'glProgramLocalParameter4dvARB' => 1, 'glProgramLocalParameter4fARB' => 0, 'glProgramLocalParameter4fvARB' => 1, 'glGetProgramEnvParameterdvARB' => 1, 'glGetProgramEnvParameterfvARB' => 1, 'glGetProgramLocalParameterdvARB' => 1, 'glGetProgramLocalParameterfvARB' => 1, 'glGetProgramivARB' => 1, 'glGetProgramStringARB' => 1, 'glIsProgramARB' => 0, # GL_NV_fragment_program 'glProgramNamedParameter4fNV' => 1, 'glProgramNamedParameter4fvNV' => 1, 'glProgramNamedParameter4dNV' => 1, 'glProgramNamedParameter4dvNV' => 1, 'glGetProgramNamedParameterfvNV' => 1, 'glGetProgramNamedParameterdvNV' => 1, # GL_NV_vertex_program 'glAreProgramsResidentNV' => 1, 'glBindProgramNV' => 0, 'glDeleteProgramsNV' => 1, 'glExecuteProgramNV' => 1, 'glGenProgramsNV' => 1, 'glGetProgramParameterdvNV' => 1, 'glGetProgramParameterfvNV' => 1, 'glGetProgramivNV' => 1, 'glGetProgramStringNV' => 1, 'glGetTrackMatrixivNV' => 1, 'glGetVertexAttribdvNV' => 1, 'glGetVertexAttribfvNV' => 1, 'glGetVertexAttribivNV' => 1, 'glGetVertexAttribPointervNV' => 1, 'glIsProgramNV' => 0, 'glLoadProgramNV' => 1, 'glProgramParameter4dNV' => 0, 'glProgramParameter4dvNV' => 1, 'glProgramParameter4fNV' => 0, 'glProgramParameter4fvNV' => 1, 'glProgramParameters4dvNV' => 1, 'glProgramParameters4fvNV' => 1, 'glRequestResidentProgramsNV' => 1, 'glTrackMatrixNV' => 0, 'glVertexAttribPointerNV' => 1, 'glVertexAttrib1dNV' => 0, 'glVertexAttrib1dvNV' => 1, 'glVertexAttrib1fNV' => 0, 'glVertexAttrib1fvNV' => 1, 'glVertexAttrib1sNV' => 0, 'glVertexAttrib1svNV' => 1, 'glVertexAttrib2dNV' => 0, 'glVertexAttrib2dvNV' => 1, 'glVertexAttrib2fNV' => 0, 'glVertexAttrib2fvNV' => 1, 'glVertexAttrib2sNV' => 0, 'glVertexAttrib2svNV' => 1, 'glVertexAttrib3dNV' => 0, 'glVertexAttrib3dvNV' => 1, 'glVertexAttrib3fNV' => 0, 'glVertexAttrib3fvNV' => 1, 'glVertexAttrib3sNV' => 0, 'glVertexAttrib3svNV' => 1, 'glVertexAttrib4dNV' => 0, 'glVertexAttrib4dvNV' => 1, 'glVertexAttrib4fNV' => 0, 'glVertexAttrib4fvNV' => 1, 'glVertexAttrib4sNV' => 0, 'glVertexAttrib4svNV' => 1, 'glVertexAttrib4ubNV' => 0, 'glVertexAttrib4ubvNV' => 1, 'glVertexAttribs1dvNV' => 1, 'glVertexAttribs1fvNV' => 1, 'glVertexAttribs1svNV' => 1, 'glVertexAttribs2dvNV' => 1, 'glVertexAttribs2fvNV' => 1, 'glVertexAttribs2svNV' => 1, 'glVertexAttribs3dvNV' => 1, 'glVertexAttribs3fvNV' => 1, 'glVertexAttribs3svNV' => 1, 'glVertexAttribs4dvNV' => 1, 'glVertexAttribs4fvNV' => 1, 'glVertexAttribs4svNV' => 1, 'glVertexAttribs4ubvNV' => 1, # GL_NV_vertex_program4 'glVertexAttribI1iEXT' => 0, 'glVertexAttribI2iEXT' => 0, 'glVertexAttribI3iEXT' => 0, 'glVertexAttribI4iEXT' => 0, 'glVertexAttribI1uiEXT' => 0, 'glVertexAttribI2uiEXT' => 0, 'glVertexAttribI3uiEXT' => 0, 'glVertexAttribI4uiEXT' => 0, 'glVertexAttribI1ivEXT' => 1, 'glVertexAttribI2ivEXT' => 1, 'glVertexAttribI3ivEXT' => 1, 'glVertexAttribI4ivEXT' => 1, 'glVertexAttribI1uivEXT' => 1, 'glVertexAttribI2uivEXT' => 1, 'glVertexAttribI3uivEXT' => 1, 'glVertexAttribI4uivEXT' => 1, 'glVertexAttribI4bvEXT' => 1, 'glVertexAttribI4svEXT' => 1, 'glVertexAttribI4ubvEXT' => 1, 'glVertexAttribI4usvEXT' => 1, 'glVertexAttribIPointerEXT' => 1, 'glGetVertexAttribIivEXT' => 1, 'glGetVertexAttribIuivEXT' => 1, # GL_EXT_vertex_attrib_64bit 'glVertexAttribL1dEXT' => 0, 'glVertexAttribL2dEXT' => 0, 'glVertexAttribL3dEXT' => 0, 'glVertexAttribL4dEXT' => 0, 'glVertexAttribL1dvEXT' => 1, 'glVertexAttribL2dvEXT' => 1, 'glVertexAttribL3dvEXT' => 1, 'glVertexAttribL4dvEXT' => 1, 'glVertexAttribLPointerEXT' => 1, 'glGetVertexAttribLdvEXT' => 1, # GL_NV_vertex_attrib_integer_64bit 'glVertexAttribL1i64NV' => 0, 'glVertexAttribL2i64NV' => 0, 'glVertexAttribL3i64NV' => 0, 'glVertexAttribL4i64NV' => 0, 'glVertexAttribL1i64vNV' => 1, 'glVertexAttribL2i64vNV' => 1, 'glVertexAttribL3i64vNV' => 1, 'glVertexAttribL4i64vNV' => 1, 'glVertexAttribL1ui64NV' => 0, 'glVertexAttribL2ui64NV' => 0, 'glVertexAttribL3ui64NV' => 0, 'glVertexAttribL4ui64NV' => 0, 'glVertexAttribL1ui64vNV' => 1, 'glVertexAttribL2ui64vNV' => 1, 'glVertexAttribL3ui64vNV' => 1, 'glVertexAttribL4ui64vNV' => 1, 'glGetVertexAttribLi64vNV' => 1, 'glGetVertexAttribLui64vNV' => 1, 'glVertexAttribLFormatNV' => 0, # GL_NV_vertex_buffer_unified_memory 'glBufferAddressRangeNV' => 0, 'glVertexFormatNV' => 0, 'glNormalFormatNV' => 0, 'glColorFormatNV' => 0, 'glIndexFormatNV' => 0, 'glTexCoordFormatNV' => 0, 'glEdgeFlagFormatNV' => 0, 'glSecondaryColorFormatNV' => 0, 'glFogCoordFormatNV' => 0, 'glVertexAttribFormatNV' => 0, 'glVertexAttribIFormatNV' => 0, 'glGetIntegerui64i_vNV' => 1, # GL_ARB_bindless_texture 'glGetTextureHandleARB' => 1, 'glGetTextureSamplerHandleARB' => 1, 'glMakeTextureHandleResidentARB' => 0, 'glMakeTextureHandleNonResidentARB' => 0, 'glGetImageHandleARB' => 1, 'glMakeImageHandleResidentARB' => 0, 'glMakeImageHandleNonResidentARB' => 0, 'glUniformHandleui64ARB' => 0, 'glUniformHandleui64vARB' => 1, 'glProgramUniformHandleui64ARB' => 0, 'glProgramUniformHandleui64vARB' => 1, 'glIsTextureHandleResidentARB' => 0, 'glIsImageHandleResidentARB' => 0, 'glVertexAttribL1ui64ARB' => 0, 'glVertexAttribL1ui64vARB' => 1, 'glGetVertexAttribLui64vARB' => 1, # GL_NV_bindless_texture 'glGetTextureHandleNV' => 1, 'glGetTextureSamplerHandleNV' => 1, 'glMakeTextureHandleResidentNV' => 0, 'glMakeTextureHandleNonResidentNV' => 0, 'glGetImageHandleNV' => 1, 'glMakeImageHandleResidentNV' => 0, 'glMakeImageHandleNonResidentNV' => 0, 'glUniformHandleui64NV' => 0, 'glUniformHandleui64vNV' => 1, 'glProgramUniformHandleui64NV' => 0, 'glProgramUniformHandleui64vNV' => 1, 'glIsTextureHandleResidentNV' => 0, 'glIsImageHandleResidentNV' => 0, # GL_NV_shader_buffer_load 'glMakeBufferResidentNV' => 0, 'glMakeBufferNonResidentNV' => 0, 'glIsBufferResidentNV' => 0, 'glMakeNamedBufferResidentNV' => 0, 'glMakeNamedBufferNonResidentNV' => 0, 'glIsNamedBufferResidentNV' => 0, 'glGetBufferParameterui64vNV' => 1, 'glGetNamedBufferParameterui64vNV' => 1, 'glGetIntegerui64vNV' => 1, 'glUniformui64NV' => 0, 'glUniformui64vNV' => 1, 'glProgramUniformui64NV' => 0, 'glProgramUniformui64vNV' => 1, # GL_ARB_matrix_palette 'glCurrentPaletteMatrixARB' => 0, 'glMatrixIndexubvARB' => 1, 'glMatrixIndexusvARB' => 1, 'glMatrixIndexuivARB' => 1, 'glMatrixIndexPointerARB' => 1, # GL_ARB_vertex_shader 'glBindAttribLocationARB' => 1, 'glGetActiveAttribARB' => 1, 'glGetAttribLocationARB' => 1, # GL_ARB_vertex_program 'glVertexAttrib1dARB' => 0, 'glVertexAttrib1dvARB' => 1, 'glVertexAttrib1fARB' => 0, 'glVertexAttrib1fvARB' => 1, 'glVertexAttrib1sARB' => 0, 'glVertexAttrib1svARB' => 1, 'glVertexAttrib2dARB' => 0, 'glVertexAttrib2dvARB' => 1, 'glVertexAttrib2fARB' => 0, 'glVertexAttrib2fvARB' => 1, 'glVertexAttrib2sARB' => 0, 'glVertexAttrib2svARB' => 1, 'glVertexAttrib3dARB' => 0, 'glVertexAttrib3dvARB' => 1, 'glVertexAttrib3fARB' => 0, 'glVertexAttrib3fvARB' => 1, 'glVertexAttrib3sARB' => 0, 'glVertexAttrib3svARB' => 1, 'glVertexAttrib4NbvARB' => 1, 'glVertexAttrib4NivARB' => 1, 'glVertexAttrib4NsvARB' => 1, 'glVertexAttrib4NubARB' => 0, 'glVertexAttrib4NubvARB' => 1, 'glVertexAttrib4NuivARB' => 1, 'glVertexAttrib4NusvARB' => 1, 'glVertexAttrib4bvARB' => 1, 'glVertexAttrib4dARB' => 0, 'glVertexAttrib4dvARB' => 1, 'glVertexAttrib4fARB' => 0, 'glVertexAttrib4fvARB' => 1, 'glVertexAttrib4ivARB' => 1, 'glVertexAttrib4sARB' => 0, 'glVertexAttrib4svARB' => 1, 'glVertexAttrib4ubvARB' => 1, 'glVertexAttrib4uivARB' => 1, 'glVertexAttrib4usvARB' => 1, 'glVertexAttribPointerARB' => 1, 'glEnableVertexAttribArrayARB' => 0, 'glDisableVertexAttribArrayARB' => 0, 'glGetVertexAttribdvARB' => 1, 'glGetVertexAttribfvARB' => 1, 'glGetVertexAttribivARB' => 1, 'glGetVertexAttribPointervARB' => 1, # GL_NV_video_capture 'glBeginVideoCaptureNV' => 0, 'glBindVideoCaptureStreamBufferNV' => 0, 'glBindVideoCaptureStreamTextureNV' => 0, 'glEndVideoCaptureNV' => 0, 'glGetVideoCaptureivNV' => 1, 'glGetVideoCaptureStreamivNV' => 1, 'glGetVideoCaptureStreamfvNV' => 1, 'glGetVideoCaptureStreamdvNV' => 1, 'glVideoCaptureNV' => 1, 'glVideoCaptureStreamParameterivNV' => 1, 'glVideoCaptureStreamParameterfvNV' => 1, 'glVideoCaptureStreamParameterdvNV' => 1, # GL_NV_present_video 'glPresentFrameKeyedNV' => 0, 'glPresentFrameDualFillNV' => 0, 'glGetVideoivNV' => 1, 'glGetVideouivNV' => 1, 'glGetVideoi64vNV' => 1, 'glGetVideoui64vNV' => 1, # GL_NV_vdpau_interop 'glVDPAUInitNV' => 1, 'glVDPAUFiniNV' => 1, 'glVDPAURegisterVideoSurfaceNV' => 1, 'glVDPAURegisterOutputSurfaceNV' => 1, 'glVDPAUIsSurfaceNV' => 1, 'glVDPAUUnregisterSurfaceNV' => 1, 'glVDPAUGetSurfaceivNV' => 1, 'glVDPAUSurfaceAccessNV' => 1, 'glVDPAUMapSurfacesNV' => 1, 'glVDPAUUnmapSurfacesNV' => 1, # GL_MESA_program_debug 'glProgramCallbackMESA' => 1, 'glGetProgramRegisterfvMESA' => 1, # GL_MESA_shader_debug 'glCreateDebugObjectMESA' => 0, 'glClearDebugLogMESA' => 0, 'glGetDebugLogMESA' => 1, 'glGetDebugLogLengthMESA' => 0, # GL_EXT_debug_label 'glLabelObjectEXT' => 1, 'glGetObjectLabelEXT' => 1, # GL_EXT_timer_query 'glGetQueryObjecti64vEXT' => 1, 'glGetQueryObjectui64vEXT' => 1, # GL_ARB_occlusion_query 'glGenQueriesARB' => 1, 'glDeleteQueriesARB' => 1, 'glIsQueryARB' => 0, 'glBeginQueryARB' => 0, 'glEndQueryARB' => 0, 'glGetQueryivARB' => 1, 'glGetQueryObjectivARB' => 1, 'glGetQueryObjectuivARB' => 1, # GL_EXT_convolution 'glConvolutionFilter1DEXT' => 1, 'glConvolutionFilter2DEXT' => 1, 'glConvolutionParameterfEXT' => 0, 'glConvolutionParameterfvEXT' => 1, 'glConvolutionParameteriEXT' => 0, 'glConvolutionParameterivEXT' => 1, 'glCopyConvolutionFilter1DEXT' => 0, 'glCopyConvolutionFilter2DEXT' => 0, 'glGetConvolutionFilterEXT' => 1, 'glGetConvolutionParameterfvEXT' => 1, 'glGetConvolutionParameterivEXT' => 1, 'glGetSeparableFilterEXT' => 1, 'glSeparableFilter2DEXT' => 1, # GL_ARB_texture_compression 'glCompressedTexImage1DARB' => 1, 'glCompressedTexImage2DARB' => 1, 'glCompressedTexImage3DARB' => 1, 'glCompressedTexSubImage1DARB' => 1, 'glCompressedTexSubImage2DARB' => 1, 'glCompressedTexSubImage3DARB' => 1, 'glGetCompressedTexImageARB' => 1, # GL_SGIS_sharpen_texture 'glSharpenTexFuncSGIS' => 1, 'glGetSharpenTexFuncSGIS' => 1, # GL_ATI_envmap_bumpmap 'glTexBumpParameterivATI' => 1, 'glTexBumpParameterfvATI' => 1, 'glGetTexBumpParameterivATI' => 1, 'glGetTexBumpParameterfvATI' => 1, # GL_SGIS_texture_filter4 'glGetTexFilterFuncSGIS' => 1, 'glTexFilterFuncSGIS' => 1, # GL_EXT_subtexture 'glTexSubImage1DEXT' => 1, 'glTexSubImage2DEXT' => 1, # GL_EXT_texture_object 'glAreTexturesResidentEXT' => 1, 'glBindTextureEXT' => 0, 'glDeleteTexturesEXT' => 1, 'glGenTexturesEXT' => 1, 'glIsTextureEXT' => 0, 'glPrioritizeTexturesEXT' => 1, # GL_EXT_texture3D 'glTexImage3DEXT' => 1, 'glTexSubImage3DEXT' => 1, # GL_SGIS_texture4D 'glTexImage4DSGIS' => 1, 'glTexSubImage4DSGIS' => 1, # GL_EXT_texture_integer 'glTexParameterIivEXT' => 1, 'glTexParameterIuivEXT' => 1, 'glGetTexParameterIivEXT' => 1, 'glGetTexParameterIuivEXT' => 1, 'glClearColorIiEXT' => 0, 'glClearColorIuiEXT' => 0, # GL_APPLE_texture_range 'glTextureRangeAPPLE' => 1, 'glGetTexParameterPointervAPPLE' => 1, # GL_EXT_transform_feedback 'glBeginTransformFeedbackEXT' => 0, 'glEndTransformFeedbackEXT' => 0, 'glBindBufferRangeEXT' => 1, 'glBindBufferOffsetEXT' => 0, 'glBindBufferBaseEXT' => 1, 'glTransformFeedbackVaryingsEXT' => 1, 'glGetTransformFeedbackVaryingEXT' => 1, # GL_NV_transform_feedback 'glBeginTransformFeedbackNV' => 0, 'glEndTransformFeedbackNV' => 0, 'glTransformFeedbackAttribsNV' => 1, 'glBindBufferRangeNV' => 1, 'glBindBufferOffsetNV' => 0, 'glBindBufferBaseNV' => 1, 'glTransformFeedbackVaryingsNV' => 1, 'glActiveVaryingNV' => 1, 'glGetVaryingLocationNV' => 1, 'glGetActiveVaryingNV' => 1, 'glGetTransformFeedbackVaryingNV' => 1, 'glTransformFeedbackStreamAttribsNV' => 1, # GL_NV_transform_feedback2 'glBindTransformFeedbackNV' => 0, 'glDeleteTransformFeedbacksNV' => 1, 'glGenTransformFeedbacksNV' => 1, 'glIsTransformFeedbackNV' => 0, 'glPauseTransformFeedbackNV' => 0, 'glResumeTransformFeedbackNV' => 0, 'glDrawTransformFeedbackNV' => 0, # GL_ARB_robustness 'glGetGraphicsResetStatusARB' => 0, 'glGetnTexImageARB' => 1, 'glReadnPixelsARB' => 1, 'glGetnCompressedTexImageARB' => 1, 'glGetnUniformfvARB' => 1, 'glGetnUniformivARB' => 1, 'glGetnUniformuivARB' => 1, 'glGetnUniformdvARB' => 1, 'glGetnMapdvARB' => 1, 'glGetnMapfvARB' => 1, 'glGetnMapivARB' => 1, 'glGetnPixelMapfvARB' => 1, 'glGetnPixelMapuivARB' => 1, 'glGetnPixelMapusvARB' => 1, 'glGetnPolygonStippleARB' => 1, 'glGetnColorTableARB' => 1, 'glGetnConvolutionFilterARB' => 1, 'glGetnSeparableFilterARB' => 1, 'glGetnHistogramARB' => 1, 'glGetnMinmaxARB' => 1, # GL_SGIX_igloo_interface 'glIglooInterfaceSGIX' => 1, # GL_SGIX_list_priority 'glGetListParameterfvSGIX' => 1, 'glGetListParameterivSGIX' => 1, 'glListParameterfSGIX' => 0, 'glListParameterfvSGIX' => 1, 'glListParameteriSGIX' => 0, 'glListParameterivSGIX' => 1, # GL_HP_image_transform 'glImageTransformParameteriHP' => 0, 'glImageTransformParameterfHP' => 0, 'glImageTransformParameterivHP' => 1, 'glImageTransformParameterfvHP' => 1, 'glGetImageTransformParameterivHP' => 1, 'glGetImageTransformParameterfvHP' => 1, # GL_APPLE_vertex_program_evaluators 'glEnableVertexAttribAPPLE' => 0, 'glDisableVertexAttribAPPLE' => 0, 'glIsVertexAttribEnabledAPPLE' => 0, 'glMapVertexAttrib1dAPPLE' => 1, 'glMapVertexAttrib1fAPPLE' => 1, 'glMapVertexAttrib2dAPPLE' => 1, 'glMapVertexAttrib2fAPPLE' => 1, # GL_EXT_multi_draw_arrays 'glMultiDrawArraysEXT' => 1, 'glMultiDrawElementsEXT' => 1, # GL_AMD_multi_draw_indirect 'glMultiDrawArraysIndirectAMD' => 1, 'glMultiDrawElementsIndirectAMD' => 1, # GL_NV_bindless_multi_draw_indirect 'glMultiDrawArraysIndirectBindlessNV' => 1, 'glMultiDrawElementsIndirectBindlessNV' => 1, # GL_IBM_multimode_draw_arrays 'glMultiModeDrawArraysIBM' => 1, 'glMultiModeDrawElementsIBM' => 1, # GL_NV_pixel_data_range 'glPixelDataRangeNV' => 1, 'glFlushPixelDataRangeNV' => 0, # GL_ARB_point_parameters 'glPointParameterfARB' => 0, 'glPointParameterfvARB' => 1, # GL_EXT_point_parameters 'glPointParameterfEXT' => 0, 'glPointParameterfvEXT' => 1, # GL_SGIS_point_parameters 'glPointParameterfSGIS' => 0, 'glPointParameterfvSGIS' => 1, # GL_NV_point_sprite 'glPointParameteriNV' => 0, 'glPointParameterivNV' => 1, # GL_APPLE_vertex_point_size 'glPointSizePointerAPPLE' => 1, 'glVertexPointSizefAPPLE' => 0, # GL_SGIX_async 'glAsyncMarkerSGIX' => 0, 'glFinishAsyncSGIX' => 1, 'glPollAsyncSGIX' => 1, 'glGenAsyncMarkersSGIX' => 0, 'glDeleteAsyncMarkersSGIX' => 0, 'glIsAsyncMarkerSGIX' => 0, # GL_NV_parameter_buffer_object 'glProgramBufferParametersfvNV' => 1, 'glProgramBufferParametersIivNV' => 1, 'glProgramBufferParametersIuivNV' => 1, # GL_EXT_gpu_program_parameters 'glProgramEnvParameters4fvEXT' => 1, 'glProgramLocalParameters4fvEXT' => 1, # GL_MESA_trace 'glEnableTraceMESA' => 0, 'glDisableTraceMESA' => 0, 'glNewTraceMESA' => 1, 'glEndTraceMESA' => 0, 'glTraceAssertAttribMESA' => 0, 'glTraceCommentMESA' => 1, 'glTraceTextureMESA' => 1, 'glTraceListMESA' => 1, 'glTracePointerMESA' => 1, 'glTracePointerRangeMESA' => 1, # GL_EXT_vertex_weighting 'glVertexWeightfEXT' => 0, 'glVertexWeightfvEXT' => 1, 'glVertexWeightPointerEXT' => 1, # GL_ARB_vertex_buffer_object 'glBindBufferARB' => 1, 'glDeleteBuffersARB' => 1, 'glGenBuffersARB' => 1, 'glIsBufferARB' => 0, 'glBufferDataARB' => 1, 'glBufferSubDataARB' => 1, 'glGetBufferSubDataARB' => 1, 'glMapBufferARB' => 1, 'glUnmapBufferARB' => 0, 'glGetBufferParameterivARB' => 1, 'glGetBufferPointervARB' => 1, # GL_ARB_vertex_blend 'glWeightbvARB' => 1, 'glWeightsvARB' => 1, 'glWeightivARB' => 1, 'glWeightfvARB' => 1, 'glWeightdvARB' => 1, 'glWeightubvARB' => 1, 'glWeightusvARB' => 1, 'glWeightuivARB' => 1, 'glWeightPointerARB' => 1, 'glVertexBlendARB' => 0, # GL_ARB_sparse_buffer 'glBufferPageCommitmentARB' => 0, 'glNamedBufferPageCommitmentEXT' => 0, 'glNamedBufferPageCommitmentARB' => 0, # GL_KHR_blend_equation_advanced 'glBlendBarrierKHR' => 0, # GL_EXT_polygon_offset_clamp 'glPolygonOffsetClampEXT' => 0, # GL_EXT_raster_multisample 'glRasterSamplesEXT' => 0, # GL_NV_bindless_multi_draw_indirect_count 'glMultiDrawArraysIndirectBindlessCountNV' => 1, 'glMultiDrawElementsIndirectBindlessCountNV' => 1, # GL_NV_command_list 'glCreateStatesNV' => 1, 'glDeleteStatesNV' => 1, 'glIsStateNV' => 0, 'glStateCaptureNV' => 0, 'glGetCommandHeaderNV' => 0, 'glGetStageIndexNV' => 0, 'glDrawCommandsNV' => 1, 'glDrawCommandsAddressNV' => 1, 'glDrawCommandsStatesNV' => 1, 'glDrawCommandsStatesAddressNV' => 1, 'glCreateCommandListsNV' => 1, 'glDeleteCommandListsNV' => 1, 'glIsCommandListNV' => 0, 'glListDrawCommandsStatesClientNV' => 1, 'glCommandListSegmentsNV' => 0, 'glCompileCommandListNV' => 0, 'glCallCommandListNV' => 0, # GL_NV_conservative_raster 'glSubpixelPrecisionBiasNV' => 0, # GL_NV_fragment_coverage_to_color 'glFragmentCoverageColorNV' => 0, # GL_NV_framebuffer_mixed_samples 'glCoverageModulationTableNV' => 1, 'glGetCoverageModulationTableNV' => 1, 'glCoverageModulationNV' => 0, # GL_NV_sample_locations 'glFramebufferSampleLocationsfvNV' => 1, 'glNamedFramebufferSampleLocationsfvNV' => 1, 'glResolveDepthValuesNV' => 0, # GL_OVR_multiview 'glFramebufferTextureMultiviewOVR' => 0, # ARB_indirect_parameters 'glMultiDrawArraysIndirectCountARB' => 1, 'glMultiDrawElementsIndirectCountARB' => 1, # GL_ARB_gl_spirv 'glSpecializeShaderARB' => 0, # GL_ARB_ES3_2_compatibility 'glPrimitiveBoundingBoxARB' => 0, # GL_ARB_gpu_shader_int64 'glUniform1i64ARB' => 0, 'glUniform2i64ARB' => 0, 'glUniform3i64ARB' => 0, 'glUniform4i64ARB' => 0, 'glUniform1i64vARB' => 0, 'glUniform2i64vARB' => 0, 'glUniform3i64vARB' => 0, 'glUniform4i64vARB' => 0, 'glUniform1ui64ARB' => 0, 'glUniform2ui64ARB' => 0, 'glUniform3ui64ARB' => 0, 'glUniform4ui64ARB' => 0, 'glUniform1ui64vARB' => 0, 'glUniform2ui64vARB' => 0, 'glUniform3ui64vARB' => 0, 'glUniform4ui64vARB' => 0, 'glGetUniformi64vARB' => 1, 'glGetUniformui64vARB' => 1, 'glGetnUniformi64vARB' => 1, 'glGetnUniformui64vARB' => 1, 'glProgramUniform1i64ARB' => 0, 'glProgramUniform2i64ARB' => 0, 'glProgramUniform3i64ARB' => 0, 'glProgramUniform4i64ARB' => 0, 'glProgramUniform1i64vARB' => 0, 'glProgramUniform2i64vARB' => 0, 'glProgramUniform3i64vARB' => 0, 'glProgramUniform4i64vARB' => 0, 'glProgramUniform1ui64ARB' => 0, 'glProgramUniform2ui64ARB' => 0, 'glProgramUniform3ui64ARB' => 0, 'glProgramUniform4ui64ARB' => 0, 'glProgramUniform1ui64vARB' => 0, 'glProgramUniform2ui64vARB' => 0, 'glProgramUniform3ui64vARB' => 0, 'glProgramUniform4ui64vARB' => 0, # GL_ARB_parallel_shader_compile 'glMaxShaderCompilerThreadsARB' => 0, # GL_ARB_sample_locations 'glFramebufferSampleLocationsfvARB' => 0, 'glNamedFramebufferSampleLocationsfvARB' => 0, 'glEvaluateDepthValuesARB' => 0, # GL_KHR_parallel_shader_compile 'glMaxShaderCompilerThreadsKHR' => 0, # GL_EXT_external_buffer 'glBufferStorageExternalEXT' => 1, 'glNamedBufferStorageExternalEXT' => 1, # GL_EXT_memory_object 'glGetUnsignedBytevEXT' => 0, 'glGetUnsignedBytei_vEXT' => 0, 'glDeleteMemoryObjectsEXT' => 0, 'glIsMemoryObjectEXT' => 0, 'glCreateMemoryObjectsEXT' => 0, 'glMemoryObjectParameterivEXT' => 0, 'glGetMemoryObjectParameterivEXT' => 0, 'glTexStorageMem2DEXT' => 0, 'glTexStorageMem2DMultisampleEXT' => 0, 'glTexStorageMem3DEXT' => 0, 'glTexStorageMem3DMultisampleEXT' => 0, 'glBufferStorageMemEXT' => 0, 'glTextureStorageMem2DEXT' => 0, 'glTextureStorageMem2DMultisampleEXT' => 0, 'glTextureStorageMem3DEXT' => 0, 'glTextureStorageMem3DMultisampleEXT' => 0, 'glNamedBufferStorageMemEXT' => 0, 'glTexStorageMem1DEXT' => 0, 'glTextureStorageMem1DEXT' => 0, # GL_EXT_memory_object_fd 'glImportMemoryFdEXT' => 0, # GL_EXT_memory_object_win32 'glImportMemoryWin32HandleEXT' => 1, 'glImportMemoryWin32NameEXT' => 0, # GL_EXT_semaphore 'glGenSemaphoresEXT' => 0, 'glDeleteSemaphoresEXT' => 0, 'glIsSemaphoreEXT' => 0, 'glSemaphoreParameterui64vEXT' => 0, 'glGetSemaphoreParameterui64vEXT' => 0, 'glWaitSemaphoreEXT' => 0, 'glSignalSemaphoreEXT' => 0, # GL_EXT_semaphore_fd 'glImportSemaphoreFdEXT' => 0, # GL_EXT_semaphore_win32 'glImportSemaphoreWin32HandleEXT' => 1, 'glImportSemaphoreWin32NameEXT' => 0, # GL_EXT_win32_keyed_mutex 'glAcquireKeyedMutexWin32EXT' => 0, 'glReleaseKeyedMutexWin32EXT' => 0, # GL_NVX_linked_gpu_multicast 'glLGPUNamedBufferSubDataNVX' => 0, 'glLGPUCopyImageSubDataNVX' => 0, 'glLGPUInterlockNVX' => 0, # GL_NV_alpha_to_coverage_dither_control 'glAlphaToCoverageDitherControlNV' => 0, # GL_NV_draw_vulkan_image 'glDrawVkImageNV' => 0, 'glGetVkProcAddrNV' => 0, 'glWaitVkSemaphoreNV' => 0, 'glSignalVkSemaphoreNV' => 0, 'glSignalVkFenceNV' => 0, # GL_NV_gpu_multicast 'glRenderGpuMaskNV' => 0, 'glMulticastBufferSubDataNV' => 0, 'glMulticastCopyBufferSubDataNV' => 0, 'glMulticastCopyImageSubDataNV' => 0, 'glMulticastBlitFramebufferNV' => 0, 'glMulticastFramebufferSampleLocationsfvNV' => 0, 'glMulticastBarrierNV' => 0, 'glMulticastWaitSyncNV' => 0, 'glMulticastGetQueryObjectivNV' => 0, 'glMulticastGetQueryObjectuivNV' => 0, 'glMulticastGetQueryObjecti64vNV' => 0, 'glMulticastGetQueryObjectui64vNV' => 0, # GL_NV_query_resource 'glQueryResourceNV' => 0, # GL_NV_query_resource_tag 'glGenQueryResourceTagNV' => 0, 'glDeleteQueryResourceTagNV' => 0, 'glQueryResourceTagNV' => 0, # GL_AMD_framebuffer_sample_positions 1 'glFramebufferSamplePositionsfvAMD' => 0, 'glNamedFramebufferSamplePositionsfvAMD' => 0, 'glGetFramebufferParameterfvAMD' => 0, 'glGetNamedFramebufferParameterfvAMD' => 0, # GL_EXT_window_rectangles 'glWindowRectanglesEXT' => 0, # GL_INTEL_framebuffer_CMAA 'glApplyFramebufferAttachmentCMAAINTEL' => 0, # GL_NV_viewport_swizzle 'glViewportSwizzleNV' => 0, # GL_NV_clip_space_w_scaling 'glViewportPositionWScaleNV' => 0, # GL_NV_conservative_raster_dilate 'glConservativeRasterParameterfNV' => 0, # GL_NV_conservative_raster_pre_snap_triangles 'glConservativeRasterParameteriNV' => 0, # Version 1.1 'glAccum' => 0, 'glAlphaFunc' => 0, 'glAreTexturesResident' => 1, 'glArrayElement' => 1, 'glBegin' => 0, 'glBindTexture' => 0, 'glBitmap' => 1, 'glBlendFunc' => 0, 'glCallList' => 0, 'glCallLists' => 1, 'glClear' => 0, 'glClearAccum' => 0, 'glClearColor' => 0, 'glClearDepth' => 0, 'glClearIndex' => 0, 'glClearStencil' => 0, 'glClipPlane' => 1, 'glColor3b' => 0, 'glColor3bv' => 1, 'glColor3d' => 0, 'glColor3dv' => 1, 'glColor3f' => 0, 'glColor3fv' => 1, 'glColor3i' => 0, 'glColor3iv' => 1, 'glColor3s' => 0, 'glColor3sv' => 1, 'glColor3ub' => 0, 'glColor3ubv' => 1, 'glColor3ui' => 0, 'glColor3uiv' => 1, 'glColor3us' => 0, 'glColor3usv' => 1, 'glColor4b' => 0, 'glColor4bv' => 1, 'glColor4d' => 0, 'glColor4dv' => 1, 'glColor4f' => 0, 'glColor4fv' => 1, 'glColor4i' => 0, 'glColor4iv' => 1, 'glColor4s' => 0, 'glColor4sv' => 1, 'glColor4ub' => 0, 'glColor4ubv' => 1, 'glColor4ui' => 0, 'glColor4uiv' => 1, 'glColor4us' => 0, 'glColor4usv' => 1, 'glColorMask' => 0, 'glColorMaterial' => 0, 'glColorPointer' => 1, 'glCopyPixels' => 0, 'glCopyTexImage1D' => 0, 'glCopyTexImage2D' => 0, 'glCopyTexSubImage1D' => 0, 'glCopyTexSubImage2D' => 0, 'glCullFace' => 0, 'glDeleteLists' => 0, 'glDeleteTextures' => 1, 'glDepthFunc' => 0, 'glDepthMask' => 0, 'glDepthRange' => 0, 'glDisable' => 1, 'glDisableClientState' => 1, 'glDrawArrays' => 1, 'glDrawBuffer' => 0, 'glDrawElements' => 1, 'glDrawPixels' => 1, 'glEdgeFlag' => 0, 'glEdgeFlagPointer' => 1, 'glEdgeFlagv' => 1, 'glEnable' => 1, 'glEnableClientState' => 1, 'glEnd' => 0, 'glEndList' => 0, 'glEvalCoord1d' => 0, 'glEvalCoord1dv' => 1, 'glEvalCoord1f' => 0, 'glEvalCoord1fv' => 1, 'glEvalCoord2d' => 0, 'glEvalCoord2dv' => 1, 'glEvalCoord2f' => 0, 'glEvalCoord2fv' => 1, 'glEvalMesh1' => 0, 'glEvalMesh2' => 0, 'glEvalPoint1' => 0, 'glEvalPoint2' => 0, 'glFeedbackBuffer' => 1, 'glFinish' => 1, 'glFlush' => 1, 'glFogf' => 0, 'glFogfv' => 1, 'glFogi' => 0, 'glFogiv' => 1, 'glFrontFace' => 0, 'glFrustum' => 0, 'glGenLists' => 0, 'glGenTextures' => 1, 'glGetBooleanv' => 1, 'glGetClipPlane' => 1, 'glGetDoublev' => 1, 'glGetError' => 1, 'glGetFloatv' => 1, 'glGetIntegerv' => 1, 'glGetLightfv' => 1, 'glGetLightiv' => 1, 'glGetMapdv' => 1, 'glGetMapfv' => 1, 'glGetMapiv' => 1, 'glGetMaterialfv' => 1, 'glGetMaterialiv' => 1, 'glGetPixelMapfv' => 1, 'glGetPixelMapuiv' => 1, 'glGetPixelMapusv' => 1, 'glGetPointerv' => 1, 'glGetPolygonStipple' => 1, 'glGetString' => 1, 'glGetTexEnvfv' => 1, 'glGetTexEnviv' => 1, 'glGetTexGendv' => 1, 'glGetTexGenfv' => 1, 'glGetTexGeniv' => 1, 'glGetTexImage' => 1, 'glGetTexLevelParameterfv' => 1, 'glGetTexLevelParameteriv' => 1, 'glGetTexParameterfv' => 1, 'glGetTexParameteriv' => 1, 'glHint' => 0, 'glIndexMask' => 0, 'glIndexPointer' => 1, 'glIndexd' => 0, 'glIndexdv' => 1, 'glIndexf' => 0, 'glIndexfv' => 1, 'glIndexi' => 0, 'glIndexiv' => 1, 'glIndexs' => 0, 'glIndexsv' => 1, 'glIndexub' => 0, 'glIndexubv' => 1, 'glInitNames' => 0, 'glInterleavedArrays' => 1, 'glIsEnabled' => 1, 'glIsList' => 0, 'glIsTexture' => 0, 'glLightModelf' => 0, 'glLightModelfv' => 1, 'glLightModeli' => 0, 'glLightModeliv' => 1, 'glLightf' => 0, 'glLightfv' => 1, 'glLighti' => 0, 'glLightiv' => 1, 'glLineStipple' => 0, 'glLineWidth' => 0, 'glListBase' => 0, 'glLoadIdentity' => 0, 'glLoadMatrixd' => 1, 'glLoadMatrixf' => 1, 'glLoadName' => 0, 'glLogicOp' => 0, 'glMap1d' => 1, 'glMap1f' => 1, 'glMap2d' => 1, 'glMap2f' => 1, 'glMapGrid1d' => 0, 'glMapGrid1f' => 0, 'glMapGrid2d' => 0, 'glMapGrid2f' => 0, 'glMaterialf' => 0, 'glMaterialfv' => 1, 'glMateriali' => 0, 'glMaterialiv' => 1, 'glMatrixMode' => 0, 'glMultMatrixd' => 1, 'glMultMatrixf' => 1, 'glNewList' => 0, 'glNormal3b' => 0, 'glNormal3bv' => 1, 'glNormal3d' => 0, 'glNormal3dv' => 1, 'glNormal3f' => 0, 'glNormal3fv' => 1, 'glNormal3i' => 0, 'glNormal3iv' => 1, 'glNormal3s' => 0, 'glNormal3sv' => 1, 'glNormalPointer' => 1, 'glOrtho' => 0, 'glPassThrough' => 0, 'glPixelMapfv' => 1, 'glPixelMapuiv' => 1, 'glPixelMapusv' => 1, 'glPixelStoref' => 0, 'glPixelStorei' => 0, 'glPixelTransferf' => 0, 'glPixelTransferi' => 0, 'glPixelZoom' => 0, 'glPointSize' => 0, 'glPolygonMode' => 0, 'glPolygonOffset' => 0, 'glPolygonStipple' => 1, 'glPopAttrib' => 0, 'glPopClientAttrib' => 0, 'glPopMatrix' => 0, 'glPopName' => 0, 'glPrioritizeTextures' => 1, 'glPushAttrib' => 0, 'glPushClientAttrib' => 0, 'glPushMatrix' => 0, 'glPushName' => 0, 'glRasterPos2d' => 0, 'glRasterPos2dv' => 1, 'glRasterPos2f' => 0, 'glRasterPos2fv' => 1, 'glRasterPos2i' => 0, 'glRasterPos2iv' => 1, 'glRasterPos2s' => 0, 'glRasterPos2sv' => 1, 'glRasterPos3d' => 0, 'glRasterPos3dv' => 1, 'glRasterPos3f' => 0, 'glRasterPos3fv' => 1, 'glRasterPos3i' => 0, 'glRasterPos3iv' => 1, 'glRasterPos3s' => 0, 'glRasterPos3sv' => 1, 'glRasterPos4d' => 0, 'glRasterPos4dv' => 1, 'glRasterPos4f' => 0, 'glRasterPos4fv' => 1, 'glRasterPos4i' => 0, 'glRasterPos4iv' => 1, 'glRasterPos4s' => 0, 'glRasterPos4sv' => 1, 'glReadBuffer' => 0, 'glReadPixels' => 1, 'glRectd' => 0, 'glRectdv' => 1, 'glRectf' => 0, 'glRectfv' => 1, 'glRecti' => 0, 'glRectiv' => 1, 'glRects' => 0, 'glRectsv' => 1, 'glRenderMode' => 1, 'glRotated' => 0, 'glRotatef' => 0, 'glScaled' => 0, 'glScalef' => 0, 'glScissor' => 0, 'glSelectBuffer' => 1, 'glShadeModel' => 0, 'glStencilFunc' => 0, 'glStencilMask' => 0, 'glStencilOp' => 0, 'glTexCoord1d' => 0, 'glTexCoord1dv' => 1, 'glTexCoord1f' => 0, 'glTexCoord1fv' => 1, 'glTexCoord1i' => 0, 'glTexCoord1iv' => 1, 'glTexCoord1s' => 0, 'glTexCoord1sv' => 1, 'glTexCoord2d' => 0, 'glTexCoord2dv' => 1, 'glTexCoord2f' => 0, 'glTexCoord2fv' => 1, 'glTexCoord2i' => 0, 'glTexCoord2iv' => 1, 'glTexCoord2s' => 0, 'glTexCoord2sv' => 1, 'glTexCoord3d' => 0, 'glTexCoord3dv' => 1, 'glTexCoord3f' => 0, 'glTexCoord3fv' => 1, 'glTexCoord3i' => 0, 'glTexCoord3iv' => 1, 'glTexCoord3s' => 0, 'glTexCoord3sv' => 1, 'glTexCoord4d' => 0, 'glTexCoord4dv' => 1, 'glTexCoord4f' => 0, 'glTexCoord4fv' => 1, 'glTexCoord4i' => 0, 'glTexCoord4iv' => 1, 'glTexCoord4s' => 0, 'glTexCoord4sv' => 1, 'glTexCoordPointer' => 1, 'glTexEnvf' => 0, 'glTexEnvfv' => 1, 'glTexEnvi' => 0, 'glTexEnviv' => 1, 'glTexGend' => 0, 'glTexGendv' => 1, 'glTexGenf' => 0, 'glTexGenfv' => 1, 'glTexGeni' => 0, 'glTexGeniv' => 1, 'glTexImage1D' => 1, 'glTexImage2D' => 1, 'glTexParameterf' => 0, 'glTexParameterfv' => 1, 'glTexParameteri' => 0, 'glTexParameteriv' => 1, 'glTexSubImage1D' => 1, 'glTexSubImage2D' => 1, 'glTranslated' => 0, 'glTranslatef' => 0, 'glVertex2d' => 0, 'glVertex2dv' => 1, 'glVertex2f' => 0, 'glVertex2fv' => 1, 'glVertex2i' => 0, 'glVertex2iv' => 1, 'glVertex2s' => 0, 'glVertex2sv' => 1, 'glVertex3d' => 0, 'glVertex3dv' => 1, 'glVertex3f' => 0, 'glVertex3fv' => 1, 'glVertex3i' => 0, 'glVertex3iv' => 1, 'glVertex3s' => 0, 'glVertex3sv' => 1, 'glVertex4d' => 0, 'glVertex4dv' => 1, 'glVertex4f' => 0, 'glVertex4fv' => 1, 'glVertex4i' => 0, 'glVertex4iv' => 1, 'glVertex4s' => 0, 'glVertex4sv' => 1, 'glVertexPointer' => 1, 'glViewport' => 0, # Version 1.2 'glBlendColor' => 0, 'glBlendEquation' => 0, 'glDrawRangeElements' => 1, 'glTexImage3D' => 1, 'glTexSubImage3D' => 1, 'glCopyTexSubImage3D' => 0, 'glColorTable' => 1, 'glColorTableParameterfv' => 1, 'glColorTableParameteriv' => 1, 'glCopyColorTable' => 0, 'glGetColorTable' => 1, 'glGetColorTableParameterfv' => 1, 'glGetColorTableParameteriv' => 1, 'glColorSubTable' => 1, 'glCopyColorSubTable' => 0, 'glConvolutionFilter1D' => 1, 'glConvolutionFilter2D' => 1, 'glConvolutionParameterf' => 0, 'glConvolutionParameterfv' => 1, 'glConvolutionParameteri' => 0, 'glConvolutionParameteriv' => 1, 'glCopyConvolutionFilter1D' => 0, 'glCopyConvolutionFilter2D' => 0, 'glGetConvolutionFilter' => 1, 'glGetConvolutionParameterfv' => 1, 'glGetConvolutionParameteriv' => 1, 'glGetSeparableFilter' => 1, 'glSeparableFilter2D' => 1, 'glGetHistogram' => 1, 'glGetHistogramParameterfv' => 1, 'glGetHistogramParameteriv' => 1, 'glGetMinmax' => 1, 'glGetMinmaxParameterfv' => 1, 'glGetMinmaxParameteriv' => 1, 'glHistogram' => 0, 'glMinmax' => 0, 'glResetHistogram' => 0, 'glResetMinmax' => 0, # Version 1.3 'glActiveTexture' => 0, 'glSampleCoverage' => 0, 'glSamplePass' => 0, 'glCompressedTexImage2D' => 1, 'glCompressedTexImage1D' => 1, 'glCompressedTexImage3D' => 1, 'glCompressedTexSubImage1D' => 1, 'glCompressedTexSubImage2D' => 1, 'glCompressedTexSubImage3D' => 1, 'glGetCompressedTexImage' => 1, 'glClientActiveTexture' => 0, 'glMultiTexCoord1d' => 0, 'glMultiTexCoord1dv' => 1, 'glMultiTexCoord1f' => 0, 'glMultiTexCoord1fv' => 1, 'glMultiTexCoord1i' => 0, 'glMultiTexCoord1iv' => 1, 'glMultiTexCoord1s' => 0, 'glMultiTexCoord1sv' => 1, 'glMultiTexCoord2d' => 0, 'glMultiTexCoord2dv' => 1, 'glMultiTexCoord2f' => 0, 'glMultiTexCoord2fv' => 1, 'glMultiTexCoord2i' => 0, 'glMultiTexCoord2iv' => 1, 'glMultiTexCoord2s' => 0, 'glMultiTexCoord2sv' => 1, 'glMultiTexCoord3d' => 0, 'glMultiTexCoord3dv' => 1, 'glMultiTexCoord3f' => 0, 'glMultiTexCoord3fv' => 1, 'glMultiTexCoord3i' => 0, 'glMultiTexCoord3iv' => 1, 'glMultiTexCoord3s' => 0, 'glMultiTexCoord3sv' => 1, 'glMultiTexCoord4d' => 0, 'glMultiTexCoord4dv' => 1, 'glMultiTexCoord4f' => 0, 'glMultiTexCoord4fv' => 1, 'glMultiTexCoord4i' => 0, 'glMultiTexCoord4iv' => 1, 'glMultiTexCoord4s' => 0, 'glMultiTexCoord4sv' => 1, 'glLoadTransposeMatrixf' => 1, 'glLoadTransposeMatrixd' => 1, 'glMultTransposeMatrixf' => 1, 'glMultTransposeMatrixd' => 1, # Version 1.4 'glBlendFuncSeparate' => 0, 'glMultiDrawArrays' => 1, 'glMultiDrawElements' => 1, 'glPointParameterf' => 0, 'glPointParameterfv' => 1, 'glPointParameteri' => 0, 'glPointParameteriv' => 1, 'glFogCoordf' => 0, 'glFogCoordfv' => 1, 'glFogCoordd' => 0, 'glFogCoorddv' => 1, 'glFogCoordPointer' => 1, 'glSecondaryColor3b' => 0, 'glSecondaryColor3bv' => 1, 'glSecondaryColor3d' => 0, 'glSecondaryColor3dv' => 1, 'glSecondaryColor3f' => 0, 'glSecondaryColor3fv' => 1, 'glSecondaryColor3i' => 0, 'glSecondaryColor3iv' => 1, 'glSecondaryColor3s' => 0, 'glSecondaryColor3sv' => 1, 'glSecondaryColor3ub' => 0, 'glSecondaryColor3ubv' => 1, 'glSecondaryColor3ui' => 0, 'glSecondaryColor3uiv' => 1, 'glSecondaryColor3us' => 0, 'glSecondaryColor3usv' => 1, 'glSecondaryColorPointer' => 1, 'glWindowPos2d' => 0, 'glWindowPos2dv' => 1, 'glWindowPos2f' => 0, 'glWindowPos2fv' => 1, 'glWindowPos2i' => 0, 'glWindowPos2iv' => 1, 'glWindowPos2s' => 0, 'glWindowPos2sv' => 1, 'glWindowPos3d' => 0, 'glWindowPos3dv' => 1, 'glWindowPos3f' => 0, 'glWindowPos3fv' => 1, 'glWindowPos3i' => 0, 'glWindowPos3iv' => 1, 'glWindowPos3s' => 0, 'glWindowPos3sv' => 1, # Version 1.5 'glGenQueries' => 1, 'glDeleteQueries' => 1, 'glIsQuery' => 0, 'glBeginQuery' => 0, 'glEndQuery' => 0, 'glGetQueryiv' => 1, 'glGetQueryObjectiv' => 1, 'glGetQueryObjectuiv' => 1, 'glBindBuffer' => 1, 'glDeleteBuffers' => 1, 'glGenBuffers' => 1, 'glIsBuffer' => 0, 'glBufferData' => 1, 'glBufferSubData' => 1, 'glGetBufferSubData' => 1, 'glMapBuffer' => 1, 'glUnmapBuffer' => 0, 'glGetBufferParameteriv' => 1, 'glGetBufferPointerv' => 1, # Version 2.0 'glBlendEquationSeparate' => 0, 'glDrawBuffers' => 1, 'glStencilOpSeparate' => 0, 'glStencilFuncSeparate' => 0, 'glStencilMaskSeparate' => 0, 'glAttachShader' => 0, 'glBindAttribLocation' => 1, 'glCompileShader' => 0, 'glCreateProgram' => 0, 'glCreateShader' => 0, 'glDeleteProgram' => 0, 'glDeleteShader' => 0, 'glDetachShader' => 0, 'glDisableVertexAttribArray' => 0, 'glEnableVertexAttribArray' => 0, 'glGetActiveAttrib' => 1, 'glGetActiveUniform' => 1, 'glGetAttachedShaders' => 1, 'glGetAttribLocation' => 1, 'glGetProgramiv' => 1, 'glGetProgramInfoLog' => 1, 'glGetShaderiv' => 1, 'glGetShaderInfoLog' => 1, 'glGetShaderSource' => 1, 'glGetUniformLocation' => 1, 'glGetUniformfv' => 1, 'glGetUniformiv' => 1, 'glGetVertexAttribdv' => 1, 'glGetVertexAttribfv' => 1, 'glGetVertexAttribiv' => 1, 'glGetVertexAttribPointerv' => 1, 'glIsProgram' => 0, 'glIsShader' => 0, 'glLinkProgram' => 0, 'glShaderSource' => 1, 'glUseProgram' => 0, 'glUniform1f' => 0, 'glUniform2f' => 0, 'glUniform3f' => 0, 'glUniform4f' => 0, 'glUniform1i' => 0, 'glUniform2i' => 0, 'glUniform3i' => 0, 'glUniform4i' => 0, 'glUniform1fv' => 1, 'glUniform2fv' => 1, 'glUniform3fv' => 1, 'glUniform4fv' => 1, 'glUniform1iv' => 1, 'glUniform2iv' => 1, 'glUniform3iv' => 1, 'glUniform4iv' => 1, 'glUniformMatrix2fv' => 1, 'glUniformMatrix3fv' => 1, 'glUniformMatrix4fv' => 1, 'glValidateProgram' => 0, 'glVertexAttrib1d' => 0, 'glVertexAttrib1dv' => 1, 'glVertexAttrib1f' => 0, 'glVertexAttrib1fv' => 1, 'glVertexAttrib1s' => 0, 'glVertexAttrib1sv' => 1, 'glVertexAttrib2d' => 0, 'glVertexAttrib2dv' => 1, 'glVertexAttrib2f' => 0, 'glVertexAttrib2fv' => 1, 'glVertexAttrib2s' => 0, 'glVertexAttrib2sv' => 1, 'glVertexAttrib3d' => 0, 'glVertexAttrib3dv' => 1, 'glVertexAttrib3f' => 0, 'glVertexAttrib3fv' => 1, 'glVertexAttrib3s' => 0, 'glVertexAttrib3sv' => 1, 'glVertexAttrib4Nbv' => 1, 'glVertexAttrib4Niv' => 1, 'glVertexAttrib4Nsv' => 1, 'glVertexAttrib4Nub' => 0, 'glVertexAttrib4Nubv' => 1, 'glVertexAttrib4Nuiv' => 1, 'glVertexAttrib4Nusv' => 1, 'glVertexAttrib4bv' => 1, 'glVertexAttrib4d' => 0, 'glVertexAttrib4dv' => 1, 'glVertexAttrib4f' => 0, 'glVertexAttrib4fv' => 1, 'glVertexAttrib4iv' => 1, 'glVertexAttrib4s' => 0, 'glVertexAttrib4sv' => 1, 'glVertexAttrib4ubv' => 1, 'glVertexAttrib4uiv' => 1, 'glVertexAttrib4usv' => 1, 'glVertexAttribPointer' => 1, # Version 2.1 'glUniformMatrix2x3fv' => 1, 'glUniformMatrix3x2fv' => 1, 'glUniformMatrix2x4fv' => 1, 'glUniformMatrix4x2fv' => 1, 'glUniformMatrix3x4fv' => 1, 'glUniformMatrix4x3fv' => 1, # Version 3.0 'glColorMaski' => 0, 'glGetBooleani_v' => 1, 'glGetIntegeri_v' => 1, 'glEnablei' => 0, 'glDisablei' => 0, 'glIsEnabledi' => 0, 'glBeginTransformFeedback' => 0, 'glEndTransformFeedback' => 0, 'glBindBufferRange' => 1, 'glBindBufferBase' => 1, 'glTransformFeedbackVaryings' => 1, 'glGetTransformFeedbackVarying' => 1, 'glClampColor' => 0, 'glBeginConditionalRender' => 0, 'glEndConditionalRender' => 0, 'glVertexAttribIPointer' => 1, 'glGetVertexAttribIiv' => 1, 'glGetVertexAttribIuiv' => 1, 'glVertexAttribI1i' => 0, 'glVertexAttribI2i' => 0, 'glVertexAttribI3i' => 0, 'glVertexAttribI4i' => 0, 'glVertexAttribI1ui' => 0, 'glVertexAttribI2ui' => 0, 'glVertexAttribI3ui' => 0, 'glVertexAttribI4ui' => 0, 'glVertexAttribI1iv' => 1, 'glVertexAttribI2iv' => 1, 'glVertexAttribI3iv' => 1, 'glVertexAttribI4iv' => 1, 'glVertexAttribI1uiv' => 1, 'glVertexAttribI2uiv' => 1, 'glVertexAttribI3uiv' => 1, 'glVertexAttribI4uiv' => 1, 'glVertexAttribI4bv' => 1, 'glVertexAttribI4sv' => 1, 'glVertexAttribI4ubv' => 1, 'glVertexAttribI4usv' => 1, 'glGetUniformuiv' => 1, 'glBindFragDataLocation' => 1, 'glGetFragDataLocation' => 1, 'glUniform1ui' => 0, 'glUniform2ui' => 0, 'glUniform3ui' => 0, 'glUniform4ui' => 0, 'glUniform1uiv' => 1, 'glUniform2uiv' => 1, 'glUniform3uiv' => 1, 'glUniform4uiv' => 1, 'glTexParameterIiv' => 1, 'glTexParameterIuiv' => 1, 'glGetTexParameterIiv' => 1, 'glGetTexParameterIuiv' => 1, 'glClearBufferiv' => 1, 'glClearBufferuiv' => 1, 'glClearBufferfv' => 1, 'glClearBufferfi' => 0, 'glGetStringi' => 0, # handled separately 'glIsRenderbuffer' => 0, 'glBindRenderbuffer' => 0, 'glDeleteRenderbuffers' => 1, 'glGenRenderbuffers' => 1, 'glRenderbufferStorage' => 0, 'glGetRenderbufferParameteriv' => 1, 'glIsFramebuffer' => 0, 'glBindFramebuffer' => 0, 'glDeleteFramebuffers' => 1, 'glGenFramebuffers' => 1, 'glCheckFramebufferStatus' => 0, 'glFramebufferTexture1D' => 0, 'glFramebufferTexture2D' => 0, 'glFramebufferTexture3D' => 0, 'glFramebufferRenderbuffer' => 0, 'glGetFramebufferAttachmentParameteriv' => 1, 'glGenerateMipmap' => 0, 'glBlitFramebuffer' => 0, 'glRenderbufferStorageMultisample' => 0, 'glFramebufferTextureLayer' => 0, 'glMapBufferRange' => 1, 'glFlushMappedBufferRange' => 0, 'glBindVertexArray' => 0, 'glDeleteVertexArrays' => 1, 'glGenVertexArrays' => 1, 'glIsVertexArray' => 0, # Version 3.1 'glDrawArraysInstanced' => 1, 'glDrawElementsInstanced' => 1, 'glTexBuffer' => 0, 'glPrimitiveRestartIndex' => 0, 'glCopyBufferSubData' => 0, 'glGetUniformIndices' => 1, 'glGetActiveUniformsiv' => 1, 'glGetActiveUniformName' => 1, 'glGetUniformBlockIndex' => 1, 'glGetActiveUniformBlockiv' => 1, 'glGetActiveUniformBlockIndex' => 1, 'glGetActiveUniformBlockName' => 1, 'glUniformBlockBinding' => 0, # Version 3.2 'glDrawElementsBaseVertex' => 1, 'glDrawRangeElementsBaseVertex' => 1, 'glDrawElementsInstancedBaseVertex' => 1, 'glMultiDrawElementsBaseVertex' => 1, 'glProvokingVertex' => 0, 'glFenceSync' => 0, 'glIsSync' => 0, 'glDeleteSync' => 0, 'glClientWaitSync' => 0, 'glWaitSync' => 0, 'glGetInteger64v' => 1, 'glGetSynciv' => 1, 'glGetInteger64i_v' => 1, 'glGetBufferParameteri64v' => 1, 'glFramebufferTexture' => 0, 'glTexImage2DMultisample' => 0, 'glTexImage3DMultisample' => 0, 'glGetMultisamplefv' => 1, 'glSampleMaski' => 0, # Version 3.3 'glBindFragDataLocationIndexed' => 1, 'glGetFragDataIndex' => 1, 'glGenSamplers' => 1, 'glDeleteSamplers' => 1, 'glIsSampler' => 0, 'glBindSampler' => 0, 'glSamplerParameteri' => 0, 'glSamplerParameteriv' => 1, 'glSamplerParameterf' => 0, 'glSamplerParameterfv' => 1, 'glSamplerParameterIiv' => 1, 'glSamplerParameterIuiv' => 1, 'glGetSamplerParameteriv' => 1, 'glGetSamplerParameterIiv' => 1, 'glGetSamplerParameterfv' => 1, 'glGetSamplerParameterIuiv' => 1, 'glQueryCounter' => 0, 'glGetQueryObjecti64v' => 1, 'glGetQueryObjectui64v' => 1, 'glVertexAttribDivisor' => 0, 'glVertexAttribP1ui' => 0, 'glVertexAttribP1uiv' => 1, 'glVertexAttribP2ui' => 0, 'glVertexAttribP2uiv' => 1, 'glVertexAttribP3ui' => 0, 'glVertexAttribP3uiv' => 1, 'glVertexAttribP4ui' => 0, 'glVertexAttribP4uiv' => 1, 'glVertexP2ui' => 0, 'glVertexP2uiv' => 1, 'glVertexP3ui' => 0, 'glVertexP3uiv' => 1, 'glVertexP4ui' => 0, 'glVertexP4uiv' => 1, 'glTexCoordP1ui' => 0, 'glTexCoordP1uiv' => 1, 'glTexCoordP2ui' => 0, 'glTexCoordP2uiv' => 1, 'glTexCoordP3ui' => 0, 'glTexCoordP3uiv' => 1, 'glTexCoordP4ui' => 0, 'glTexCoordP4uiv' => 1, 'glMultiTexCoordP1ui' => 0, 'glMultiTexCoordP1uiv' => 1, 'glMultiTexCoordP2ui' => 0, 'glMultiTexCoordP2uiv' => 1, 'glMultiTexCoordP3ui' => 0, 'glMultiTexCoordP3uiv' => 1, 'glMultiTexCoordP4ui' => 0, 'glMultiTexCoordP4uiv' => 1, 'glNormalP3ui' => 0, 'glNormalP3uiv' => 1, 'glColorP3ui' => 0, 'glColorP3uiv' => 1, 'glColorP4ui' => 0, 'glColorP4uiv' => 1, 'glSecondaryColorP3ui' => 0, 'glSecondaryColorP3uiv' => 1, # Version 4.0 'glMinSampleShading' => 0, 'glBlendEquationi' => 0, 'glBlendEquationSeparatei' => 0, 'glBlendFunci' => 0, 'glBlendFuncSeparatei' => 0, 'glDrawArraysIndirect' => 1, 'glDrawElementsIndirect' => 1, 'glUniform1d' => 0, 'glUniform2d' => 0, 'glUniform3d' => 0, 'glUniform4d' => 0, 'glUniform1dv' => 1, 'glUniform2dv' => 1, 'glUniform3dv' => 1, 'glUniform4dv' => 1, 'glUniformMatrix2dv' => 1, 'glUniformMatrix3dv' => 1, 'glUniformMatrix4dv' => 1, 'glUniformMatrix2x3dv' => 1, 'glUniformMatrix2x4dv' => 1, 'glUniformMatrix3x2dv' => 1, 'glUniformMatrix3x4dv' => 1, 'glUniformMatrix4x2dv' => 1, 'glUniformMatrix4x3dv' => 1, 'glGetUniformdv' => 1, 'glGetSubroutineUniformLocation' => 1, 'glGetSubroutineIndex' => 1, 'glGetActiveSubroutineUniformiv' => 1, 'glGetActiveSubroutineUniformName' => 1, 'glGetActiveSubroutineName' => 1, 'glUniformSubroutinesuiv' => 1, 'glGetUniformSubroutineuiv' => 1, 'glGetProgramStageiv' => 1, 'glPatchParameteri' => 0, 'glPatchParameterfv' => 1, 'glBindTransformFeedback' => 0, 'glDeleteTransformFeedbacks' => 1, 'glGenTransformFeedbacks' => 1, 'glIsTransformFeedback' => 0, 'glPauseTransformFeedback' => 0, 'glResumeTransformFeedback' => 0, 'glDrawTransformFeedback' => 0, 'glDrawTransformFeedbackStream' => 0, 'glBeginQueryIndexed' => 0, 'glEndQueryIndexed' => 0, 'glGetQueryIndexediv' => 1, # Version 4.1 'glReleaseShaderCompiler' => 0, 'glShaderBinary' => 1, 'glGetShaderPrecisionFormat' => 1, 'glDepthRangef' => 0, 'glClearDepthf' => 0, 'glGetProgramBinary' => 1, 'glProgramBinary' => 1, 'glProgramParameteri' => 0, 'glUseProgramStages' => 0, 'glActiveShaderProgram' => 0, 'glCreateShaderProgramv' => 1, 'glBindProgramPipeline' => 0, 'glDeleteProgramPipelines' => 1, 'glGenProgramPipelines' => 1, 'glIsProgramPipeline' => 0, 'glGetProgramPipelineiv' => 1, 'glProgramUniform1i' => 0, 'glProgramUniform1iv' => 1, 'glProgramUniform1f' => 0, 'glProgramUniform1fv' => 1, 'glProgramUniform1d' => 0, 'glProgramUniform1dv' => 1, 'glProgramUniform1ui' => 0, 'glProgramUniform1uiv' => 1, 'glProgramUniform2i' => 0, 'glProgramUniform2iv' => 1, 'glProgramUniform2f' => 0, 'glProgramUniform2fv' => 1, 'glProgramUniform2d' => 0, 'glProgramUniform2dv' => 1, 'glProgramUniform2ui' => 0, 'glProgramUniform2uiv' => 1, 'glProgramUniform3i' => 0, 'glProgramUniform3iv' => 1, 'glProgramUniform3f' => 0, 'glProgramUniform3fv' => 1, 'glProgramUniform3d' => 0, 'glProgramUniform3dv' => 1, 'glProgramUniform3ui' => 0, 'glProgramUniform3uiv' => 1, 'glProgramUniform4i' => 0, 'glProgramUniform4iv' => 1, 'glProgramUniform4f' => 0, 'glProgramUniform4fv' => 1, 'glProgramUniform4d' => 0, 'glProgramUniform4dv' => 1, 'glProgramUniform4ui' => 0, 'glProgramUniform4uiv' => 1, 'glProgramUniformMatrix2fv' => 1, 'glProgramUniformMatrix3fv' => 1, 'glProgramUniformMatrix4fv' => 1, 'glProgramUniformMatrix2dv' => 1, 'glProgramUniformMatrix3dv' => 1, 'glProgramUniformMatrix4dv' => 1, 'glProgramUniformMatrix2x3fv' => 1, 'glProgramUniformMatrix3x2fv' => 1, 'glProgramUniformMatrix2x4fv' => 1, 'glProgramUniformMatrix4x2fv' => 1, 'glProgramUniformMatrix3x4fv' => 1, 'glProgramUniformMatrix4x3fv' => 1, 'glProgramUniformMatrix2x3dv' => 1, 'glProgramUniformMatrix3x2dv' => 1, 'glProgramUniformMatrix2x4dv' => 1, 'glProgramUniformMatrix4x2dv' => 1, 'glProgramUniformMatrix3x4dv' => 1, 'glProgramUniformMatrix4x3dv' => 1, 'glValidateProgramPipeline' => 0, 'glGetProgramPipelineInfoLog' => 1, 'glVertexAttribL1d' => 0, 'glVertexAttribL2d' => 0, 'glVertexAttribL3d' => 0, 'glVertexAttribL4d' => 0, 'glVertexAttribL1dv' => 1, 'glVertexAttribL2dv' => 1, 'glVertexAttribL3dv' => 1, 'glVertexAttribL4dv' => 1, 'glVertexAttribLPointer' => 1, 'glGetVertexAttribLdv' => 1, 'glViewportArrayv' => 1, 'glViewportIndexedf' => 0, 'glViewportIndexedfv' => 1, 'glScissorArrayv' => 1, 'glScissorIndexed' => 0, 'glScissorIndexedv' => 1, 'glDepthRangeArrayv' => 1, 'glDepthRangeIndexed' => 0, 'glGetFloati_v' => 1, 'glGetDoublei_v' => 1, # Version 4.2 'glDrawArraysInstancedBaseInstance' => 0, 'glDrawElementsInstancedBaseInstance' => 1, 'glDrawElementsInstancedBaseVertexBaseInstance' => 1, 'glGetInternalformativ' => 1, 'glGetActiveAtomicCounterBufferiv' => 1, 'glBindImageTexture' => 0, 'glMemoryBarrier' => 0, 'glTexStorage1D' => 0, 'glTexStorage2D' => 0, 'glTexStorage3D' => 0, 'glDrawTransformFeedbackInstanced' => 0, 'glDrawTransformFeedbackStreamInstanced' => 0, # Version 4.3 'glDispatchCompute' => 0, 'glDispatchComputeIndirect' => 1, 'glCopyImageSubData' => 0, 'glFramebufferParameteri' => 0, 'glGetFramebufferParameteriv' => 1, 'glGetInternalformati64v' => 1, 'glInvalidateTexSubImage' => 0, 'glInvalidateTexImage' => 0, 'glInvalidateBufferSubData' => 0, 'glInvalidateBufferData' => 1, 'glInvalidateFramebuffer' => 1, 'glInvalidateSubFramebuffer' => 1, 'glMultiDrawArraysIndirect' => 1, 'glMultiDrawElementsIndirect' => 1, 'glGetProgramInterfaceiv' => 1, 'glGetProgramResourceIndex' => 1, 'glGetProgramResourceName' => 1, 'glGetProgramResourceiv' => 1, 'glGetProgramResourceLocation' => 1, 'glGetProgramResourceLocationIndex' => 1, 'glShaderStorageBlockBinding' => 0, 'glTexBufferRange' => 0, 'glTexStorage2DMultisample' => 0, 'glTexStorage3DMultisample' => 0, 'glTextureView' => 0, 'glBindVertexBuffer' => 1, 'glVertexAttribFormat' => 0, 'glVertexAttribIFormat' => 0, 'glVertexAttribLFormat' => 0, 'glVertexAttribBinding' => 0, 'glVertexBindingDivisor' => 0, 'glDebugMessageControl' => 1, 'glDebugMessageInsert' => 1, 'glDebugMessageCallback' => 1, 'glGetDebugMessageLog' => 1, 'glPushDebugGroup' => 1, 'glObjectLabel' => 1, 'glGetObjectLabel' => 1, 'glObjectPtrLabel' => 1, 'glGetObjectPtrLabel' => 1, # Version 4.4 'glBufferStorage' => 1, 'glClearTexImage' => 1, 'glClearTexSubImage' => 1, 'glBindBuffersBase' => 1, 'glBindBuffersRange' => 1, 'glBindTextures' => 1, 'glBindSamplers' => 1, 'glBindImageTextures' => 1, 'glBindVertexBuffers' => 1, # Version 4.5 'glBindTextureUnit' => 0, 'glBlitNamedFramebuffer' => 0, 'glCheckNamedFramebufferStatus' => 0, 'glClearNamedBufferData' => 1, 'glClearNamedBufferSubData' => 1, 'glClearNamedFramebufferfi' => 0, 'glClearNamedFramebufferfv' => 1, 'glClearNamedFramebufferiv' => 1, 'glClearNamedFramebufferuiv' => 1, 'glClipControl' => 0, 'glCompressedTextureSubImage1D' => 1, 'glCompressedTextureSubImage2D' => 1, 'glCompressedTextureSubImage3D' => 1, 'glCopyNamedBufferSubData' => 0, 'glCopyTextureSubImage1D' => 0, 'glCopyTextureSubImage2D' => 0, 'glCopyTextureSubImage3D' => 0, 'glCreateBuffers' => 1, 'glCreateFramebuffers' => 1, 'glCreateProgramPipelines' => 1, 'glCreateQueries' => 1, 'glCreateRenderbuffers' => 1, 'glCreateSamplers' => 1, 'glCreateTextures' => 1, 'glCreateTransformFeedbacks' => 1, 'glCreateVertexArrays' => 1, 'glDisableVertexArrayAttrib' => 0, 'glEnableVertexArrayAttrib' => 0, 'glFlushMappedNamedBufferRange' => 0, 'glGenerateTextureMipmap' => 0, 'glGetCompressedTextureImage' => 1, 'glGetCompressedTextureSubImage' => 1, 'glGetGraphicsResetStatus' => 0, 'glGetNamedBufferParameteri64v' => 1, 'glGetNamedBufferParameteriv' => 1, 'glGetNamedBufferPointerv' => 1, 'glGetNamedBufferSubData' => 1, 'glGetNamedFramebufferAttachmentParameteriv' => 1, 'glGetNamedFramebufferParameteriv' => 1, 'glGetNamedRenderbufferParameteriv' => 1, 'glGetQueryBufferObjecti64v' => 0, 'glGetQueryBufferObjectiv' => 0, 'glGetQueryBufferObjectui64v' => 0, 'glGetQueryBufferObjectuiv' => 0, 'glGetTextureImage' => 1, 'glGetTextureLevelParameterfv' => 1, 'glGetTextureLevelParameteriv' => 1, 'glGetTextureParameterIiv' => 1, 'glGetTextureParameterIuiv' => 1, 'glGetTextureParameterfv' => 1, 'glGetTextureParameteriv' => 1, 'glGetTextureSubImage' => 1, 'glGetTransformFeedbacki64_v' => 1, 'glGetTransformFeedbacki_v' => 1, 'glGetTransformFeedbackiv' => 1, 'glGetVertexArrayIndexed64iv' => 1, 'glGetVertexArrayIndexediv' => 1, 'glGetVertexArrayiv' => 1, 'glGetnColorTable' => 1, 'glGetnCompressedTexImage' => 1, 'glGetnConvolutionFilter' => 1, 'glGetnHistogram' => 1, 'glGetnMapdv' => 1, 'glGetnMapfv' => 1, 'glGetnMapiv' => 1, 'glGetnMinmax' => 1, 'glGetnPixelMapfv' => 1, 'glGetnPixelMapuiv' => 1, 'glGetnPixelMapusv' => 1, 'glGetnPolygonStipple' => 1, 'glGetnSeparableFilter' => 1, 'glGetnTexImage' => 1, 'glGetnUniformdv' => 1, 'glGetnUniformfv' => 1, 'glGetnUniformiv' => 1, 'glGetnUniformuiv' => 1, 'glInvalidateNamedFramebufferData' => 1, 'glInvalidateNamedFramebufferSubData' => 1, 'glMapNamedBuffer' => 1, 'glMapNamedBufferRange' => 1, 'glMemoryBarrierByRegion' => 0, 'glNamedBufferData' => 1, 'glNamedBufferStorage' => 1, 'glNamedBufferSubData' => 1, 'glNamedFramebufferDrawBuffer' => 0, 'glNamedFramebufferDrawBuffers' => 1, 'glNamedFramebufferParameteri' => 0, 'glNamedFramebufferReadBuffer' => 0, 'glNamedFramebufferRenderbuffer' => 0, 'glNamedFramebufferTexture' => 0, 'glNamedFramebufferTextureLayer' => 0, 'glNamedRenderbufferStorage' => 0, 'glNamedRenderbufferStorageMultisample' => 0, 'glReadnPixels' => 1, 'glTextureBarrier' => 0, 'glTextureBuffer' => 0, 'glTextureBufferRange' => 0, 'glTextureParameterIiv' => 1, 'glTextureParameterIuiv' => 1, 'glTextureParameterf' => 0, 'glTextureParameterfv' => 1, 'glTextureParameteri' => 0, 'glTextureParameteriv' => 1, 'glTextureStorage1D' => 0, 'glTextureStorage2D' => 0, 'glTextureStorage2DMultisample' => 0, 'glTextureStorage3D' => 0, 'glTextureStorage3DMultisample' => 0, 'glTextureSubImage1D' => 1, 'glTextureSubImage2D' => 1, 'glTextureSubImage3D' => 1, 'glTransformFeedbackBufferBase' => 0, 'glTransformFeedbackBufferRange' => 0, 'glUnmapNamedBuffer' => 0, 'glVertexArrayAttribBinding' => 0, 'glVertexArrayAttribFormat' => 0, 'glVertexArrayAttribIFormat' => 0, 'glVertexArrayAttribLFormat' => 0, 'glVertexArrayBindingDivisor' => 0, 'glVertexArrayElementBuffer' => 0, 'glVertexArrayVertexBuffer' => 0, 'glVertexArrayVertexBuffers' => 1, # Version 4.6 'glSpecializeShader' => 0, 'glMultiDrawArraysIndirectCount' => 1, 'glMultiDrawElementsIndirectCount' => 1, 'glPolygonOffsetClamp' => 0, ); # # subset of functions that should be exported to TinyGL # my %tinygl = ( 'information' => 1, 'glBegin' => 2, 'glClear' => 3, 'glClearColor' => 4, 'glColor3f' => 5, 'glDisable' => 6, 'glEnable' => 7, 'glEnd' => 8, 'glLightfv' => 9, 'glLoadIdentity' => 10, 'glMaterialfv' => 11, 'glMatrixMode' => 12, 'glOrthof' => 13, 'glPopMatrix' => 14, 'glPushMatrix' => 15, 'glRotatef' => 16, 'glTexEnvi' => 17, 'glTexParameteri' => 18, 'glTranslatef' => 19, 'glVertex2f' => 20, 'glVertex3f' => 21, 'OSMesaCreateLDG' => 22, 'OSMesaDestroyLDG' => 23, 'glArrayElement' => 24, 'glBindTexture' => 25, 'glCallList' => 26, 'glClearDepthf' => 27, 'glColor4f' => 28, 'glColor3fv' => 29, 'glColor4fv' => 30, 'glColorMaterial' => 31, 'glColorPointer' => 32, 'glCullFace' => 33, 'glDeleteTextures' => 34, 'glDisableClientState' => 35, 'glEnableClientState' => 36, 'glEndList' => 37, 'glEdgeFlag' => 38, 'glFlush' => 39, 'glFrontFace' => 40, 'glFrustumf' => 41, 'glGenLists' => 42, 'glGenTextures' => 43, 'glGetFloatv' => 44, 'glGetIntegerv' => 45, 'glHint' => 46, 'glInitNames' => 47, 'glIsList' => 48, 'glLightf' => 49, 'glLightModeli' => 50, 'glLightModelfv' => 51, 'glLoadMatrixf' => 52, 'glLoadName' => 53, 'glMaterialf' => 54, 'glMultMatrixf' => 55, 'glNewList' => 56, 'glNormal3f' => 57, 'glNormal3fv' => 58, 'glNormalPointer' => 59, 'glPixelStorei' => 60, 'glPolygonMode' => 61, 'glPolygonOffset' => 62, 'glPopName' => 63, 'glPushName' => 64, 'glRenderMode' => 65, 'glSelectBuffer' => 66, 'glScalef' => 67, 'glShadeModel' => 68, 'glTexCoord2f' => 69, 'glTexCoord4f' => 70, 'glTexCoord2fv' => 71, 'glTexCoordPointer' => 72, 'glTexImage2D' => 73, 'glVertex4f' => 74, 'glVertex3fv' => 75, 'glVertexPointer' => 76, 'glViewport' => 77, 'swapbuffer' => 78, 'max_width' => 79, 'max_height' => 80, 'glDeleteLists' => 81, 'gluLookAtf' => 82, 'exception_error' => 83, ); # # functions that are exported under a different name # my %floatfuncs = ( 'glOrtho' => 'glOrthod', 'glFrustum' => 'glFrustumd', 'glClearDepth' => 'glClearDepthd', 'gluLookAt' => 'gluLookAtd', ); my %oldmesa = ( 'OSMesaCreateLDG' => { 'name' => 'OSMesaCreateLDG', 'gl' => '', 'type' => 'void *', 'params' => [ { 'type' => 'GLenum', 'name' => 'format', 'pointer' => 0 }, { 'type' => 'GLenum', 'name' => 'type', 'pointer' => 0 }, { 'type' => 'GLint', 'name' => 'width', 'pointer' => 0 }, { 'type' => 'GLint', 'name' => 'height', 'pointer' => 0 }, ], }, 'OSMesaDestroyLDG' => { 'name' => 'OSMesaDestroyLDG', 'gl' => '', 'type' => 'void', 'params' => [ ], }, 'max_width' => { 'name' => 'max_width', 'gl' => '', 'type' => 'GLsizei', 'params' => [ ], }, 'max_height' => { 'name' => 'max_height', 'gl' => '', 'type' => 'GLsizei', 'params' => [ ], }, 'glOrthof' => { 'name' => 'Orthof', 'gl' => 'gl', 'type' => 'void', 'params' => [ { 'type' => 'GLfloat', 'name' => 'left', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'right', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'bottom', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'top', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'near_val', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'far_val', 'pointer' => 0 }, ], }, 'glFrustumf' => { 'name' => 'Frustumf', 'gl' => 'gl', 'type' => 'void', 'params' => [ { 'type' => 'GLfloat', 'name' => 'left', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'right', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'bottom', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'top', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'near_val', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'far_val', 'pointer' => 0 }, ], }, 'gluLookAtf' => { 'name' => 'LookAtf', 'gl' => 'glu', 'type' => 'void', 'params' => [ { 'type' => 'GLfloat', 'name' => 'eyeX', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'eyeY', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'eyeZ', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'centerX', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'centerY', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'centerZ', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'upX', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'upY', 'pointer' => 0 }, { 'type' => 'GLfloat', 'name' => 'upZ', 'pointer' => 0 }, ], }, 'swapbuffer' => { 'name' => 'swapbuffer', 'gl' => '', 'type' => 'void', 'params' => [ { 'type' => 'void', 'name' => 'buffer', 'pointer' => 1 }, ], }, 'exception_error' => { 'name' => 'exception_error', 'gl' => '', 'type' => 'void', 'params' => [ { 'type' => 'void (CALLBACK *exception)(GLenum param)', 'name' => '', 'pointer' => 2 }, ], }, 'information' => { 'name' => 'information', 'gl' => '', 'type' => 'void', 'params' => [ ], }, # 'glInit' => { # 'name' => 'glInit', # 'gl' => '', # 'type' => 'void', # 'params' => [ # { 'type' => 'void', 'name' => 'zbuffer', 'pointer' => 1 }, # ], # }, # 'glClose' => { # 'name' => 'glClose', # 'gl' => '', # 'type' => 'void', # 'params' => [ # ], # }, # 'glDebug' => { # 'name' => 'glDebug', # 'gl' => '', # 'type' => 'void', # 'params' => [ # { 'type' => 'GLint', 'name' => 'mode', 'pointer' => 0 }, # ], # }, ); # # generate functions # sub gen_calls() { my $gl_count = 0; my $glu_count = 0; my $ret; my $retvar; my $prototype; my $prototype_mem; my $return_type; my $function_name; my $uppername; my $gl; my $args; my $debug_args; my $noconv_args; my $printf_format; my $conversions_needed = 0; my $num_longlongs = 0; my $num_autogen = 0; add_paramlens(\%paramlens); gen_params(); foreach my $key (sort { sort_by_name } keys %functions) { my $ent = $functions{$key}; $gl = $ent->{gl}; next if ($gl ne 'gl' && $gl ne 'glu'); $function_name = $gl . $ent->{name}; $return_type = $ent->{type}; $prototype = $ent->{proto}; $prototype_mem = $ent->{proto_mem}; $args = $ent->{args}; $noconv_args = $ent->{noconv_args}; $debug_args = $ent->{debug_args}; $printf_format = $ent->{printf_format}; $uppername = uc($function_name); if ($return_type eq "void") { $retvar = ""; $ret = ""; } else { $retvar = "$return_type __ret = "; $ret = "return __ret"; } print("#if 0\n") if ($gl ne 'gl' || defined($blacklist{$function_name})); if (defined($longlong_types{$return_type}) && !defined($blacklist{$function_name}) && !defined($macros{$function_name})) { print "/* FIXME: $return_type cannot be returned */\n"; ++$num_longlongs; } if ($prototype ne $prototype_mem) { print "#if NFOSMESA_POINTER_AS_MEMARG\n"; print "$return_type OSMesaDriver::nf$function_name($prototype_mem)\n"; print "#else\n"; print "$return_type OSMesaDriver::nf$function_name($prototype)\n"; print "#endif\n"; } else { print "$return_type OSMesaDriver::nf$function_name($prototype)\n"; } print "{\n"; print "\tD(bug(\"nfosmesa: $function_name($printf_format)\""; print ", " unless ($args eq ""); print "$debug_args));\n"; if (defined($macros{$function_name}) && $macros{$function_name} == 1) { print "FN_${uppername}(${args});\n"; } else { if ($ent->{any_pointer} == 2 && !defined($blacklist{$function_name}) && !defined($ent->{autogen})) { &warn("$function_name missing conversion"); print "\t/* TODO: NFOSMESA_${uppername} may need conversion */\n"; ++$conversions_needed; } if (defined($ent->{autogen})) { my $params = $ent->{params}; my $argcount = $#$params + 1; my $argc; my $param; printf "#if $ent->{ifdefs}\n"; for ($argc = 0; $argc < $argcount; $argc++) { $param = $params->[$argc]; my $name = $param->{name}; if ($param->{pointer} && defined($param->{len})) { my $init = ''; my $len = $param->{len}; if ($len eq '1') { if ($param->{inout} eq 'out' || $param->{inout} eq 'inout') { $init = ' = { 0 }'; } } elsif ($len =~ /\(/) { ; } else { $len = "MAX($len, 0)"; } print "\tGLint const __${name}_size = $len;\n"; print "\t" . $param->{basetype} . ' __' . ${name} . '_tmp[__' . ${name} . '_size]' . "$init;\n"; if ($param->{inout} eq 'in' || $param->{inout} eq 'inout') { print "\t$param->{basetype} *__${name}_ptmp = $copy_funcs{$param->{basetype}}->{copyin}(__${name}_size, $name, __${name}_tmp);\n"; } } } print "\t${retvar}fn.${function_name}(${args});\n"; for ($argc = 0; $argc < $argcount; $argc++) { $param = $params->[$argc]; my $name = $param->{name}; if ($param->{pointer} && defined($param->{len})) { if ($param->{inout} eq 'out' || $param->{inout} eq 'inout') { my $len; if (defined($param->{outlen})) { $len = "MIN($param->{outlen}, $param->{len})"; } else { $len = "__${name}_size"; } print "\t$copy_funcs{$param->{basetype}}->{copyout}($len, __${name}_tmp, $name);\n"; } } } printf "#else\n"; print "\t${retvar}fn.${function_name}(${noconv_args});\n"; printf "#endif\n"; ++$num_autogen; } else { print "\t${retvar}fn.${function_name}(${args});\n"; } print "\t$ret;\n" unless($ret eq ''); } print "}\n"; print("#endif\n") if ($gl ne 'gl' || defined($blacklist{$function_name})); print "\n"; $gl_count++ if ($gl eq "gl"); $glu_count++ if ($gl eq "glu"); } print STDERR "$conversions_needed function(s) may need conversion macros\n" unless($conversions_needed == 0); print STDERR "$num_longlongs function(s) may need attention\n" unless($num_longlongs == 0); # # emit trailer # print << "EOF"; /* Functions generated: $gl_count GL + $glu_count GLU */ /* Automatically generated: $num_autogen */ EOF } sub add_glgetstring() { my $funcno; $funcno = $functions{'glGetString'}->{funcno}; { my %ent = ( 'name' => 'GetString', 'gl' => 'LenGl', 'type' => 'GLuint', 'params' => [ { 'type' => 'OSMesaContext', 'name' => 'ctx', 'pointer' => 0 }, { 'type' => 'GLenum', 'name' => 'name', 'pointer' => 0 }, ], 'funcno' => $funcno, ); $functions{'glGetString'} = \%ent; } { my %ent = ( 'name' => 'GetString', 'gl' => 'PutGl', 'type' => 'void', 'params' => [ { 'type' => 'OSMesaContext', 'name' => 'ctx', 'pointer' => 0 }, { 'type' => 'GLenum', 'name' => 'name', 'pointer' => 0 }, { 'type' => 'GLubyte', 'name' => 'buffer', 'pointer' => 1 }, ], 'funcno' => $funcno + 1, ); $functions{'putglGetString'} = \%ent; } $funcno = $functions{'glGetStringi'}->{funcno}; { my %ent = ( 'name' => 'GetStringi', 'gl' => 'LenGl', 'type' => 'GLuint', 'params' => [ { 'type' => 'OSMesaContext', 'name' => 'ctx', 'pointer' => 0 }, { 'type' => 'GLenum', 'name' => 'name', 'pointer' => 0 }, { 'type' => 'GLuint', 'name' => 'index', 'pointer' => 0 }, ], 'funcno' => $funcno, ); $functions{'glGetStringi'} = \%ent; } { my %ent = ( 'name' => 'GetStringi', 'gl' => 'PutGl', 'type' => 'void', 'params' => [ { 'type' => 'OSMesaContext', 'name' => 'ctx', 'pointer' => 0 }, { 'type' => 'GLenum', 'name' => 'name', 'pointer' => 0 }, { 'type' => 'GLuint', 'name' => 'index', 'pointer' => 0 }, { 'type' => 'GLubyte', 'name' => 'buffer', 'pointer' => 1 }, ], 'funcno' => $funcno + 1, ); $functions{'putglGetStringi'} = \%ent; } } # # generate table of # of stacked parameters, # and now also table of function names # sub gen_paramcount() { my $prefix = "NFOSMESA_"; my $params; my $gl; my $glx; my $function_name; my $maxcount; my $lastfunc; my $funcno; my $uppername; my $first; add_missing(\%oldmesa); read_enums(); add_glgetstring(); gen_params(); print "static unsigned char const paramcount[NFOSMESA_LAST] = {\n"; print "\t0, /* GETVERSION */\n"; $maxcount = 0; $lastfunc = 1; $first = 1; foreach my $key (sort { sort_by_value } keys %functions) { my $ent = $functions{$key}; $gl = $ent->{gl}; if (!defined($gl) || $gl eq '') { $function_name = $key; $uppername = $function_name; } else { $function_name = $gl . $ent->{name}; $uppername = ${prefix} . uc($function_name); } $funcno = $ent->{funcno}; while ($lastfunc != $funcno) { printf ",\n" unless($first); printf "\t0"; ++$lastfunc; $first = 0; } $params = $ent->{params}; my $argcount = $#$params + 1; my $paramnum = 0; if ($argcount > 0) { for (my $argc = 0; $argc < $argcount; $argc++) { my $type = $params->[$argc]->{type}; my $name = $params->[$argc]->{name}; my $pointer = $params->[$argc]->{pointer} ? "*" : ""; if ($pointer ne "" || defined($pointer_types{$type})) { ++$paramnum; } elsif ($type eq 'GLdouble' || $type eq 'GLclampd') { $paramnum += 2; } elsif (defined($longlong_types{$type})) { $paramnum += 2; } elsif ($type eq 'GLhandleARB') { ++$paramnum; } elsif ($type eq 'GLsync') { ++$paramnum; } else { ++$paramnum; } } } printf ",\n" unless($first); print "\t$paramnum /* ${uppername} */"; $maxcount = $paramnum if ($paramnum > $maxcount); $lastfunc = $funcno + 1; $first = 0; } print "\n};\n"; print "#define NFOSMESA_MAXPARAMS $maxcount\n"; print "\n\n"; print "static struct {\n"; print "\tconst char *name;\n"; print "\tunsigned int funcno;\n"; print "} const gl_functionnames[] = {\n"; $first = 1; foreach my $key (sort { sort_by_name } keys %functions) { my $ent = $functions{$key}; $gl = $ent->{gl}; $glx = $gl; $glx = "" if ($glx eq "gl"); # skip the TinyGL only functions(like OSMesaCreatLDG) for this next if (!defined($gl) || $gl eq ''); $function_name = $gl . $ent->{name}; $uppername = ${prefix} . uc($function_name); # sigh. another hack for GetString etc. next if ($function_name eq 'PutGlGetString'); next if ($function_name eq 'PutGlGetStringi'); $function_name = 'glGetString' if ($function_name eq 'LenGlGetString'); $function_name = 'glGetStringi' if ($function_name eq 'LenGlGetStringi'); $funcno = $ent->{funcno}; printf ",\n" unless($first); print "\t{ \"${function_name}\", $uppername }"; $first = 0; } print "\n};\n"; } # # generate case statements # sub gen_dispatch() { my $gl_count = 0; my $glu_count = 0; my $ret; my $prefix = "NFOSMESA_"; my $uppername; my $params; my $return_type; my $function_name; my $gl; gen_params(); foreach my $key (sort { sort_by_name } keys %functions) { my $ent = $functions{$key}; $gl = $ent->{gl}; next if ($gl ne 'gl' && $gl ne 'glu'); $function_name = $gl . $ent->{name}; $return_type = $ent->{type}; $params = $ent->{params}; $uppername = uc($function_name); print("#if 0\n") if (defined($blacklist{$function_name})); print "\t\tcase $prefix$uppername:\n"; if ($return_type eq "void") { $ret = ""; } else { $ret = "ret = "; if ($return_type =~ /\*/ || defined($pointer_types{$return_type}) || $return_type eq 'GLhandleARB' || $return_type eq 'GLsync') { $ret .= '(uint32)(uintptr_t)'; } } my $argcount = $#$params + 1; print "\t\t\tD(funcname = \"${function_name}\");\n"; print "\t\t\tif (GL_ISAVAILABLE(${function_name}))\n" if ($gl eq 'gl'); print "\t\t\t${ret}nf${function_name}("; if ($argcount > 0) { my $paramnum = 0; my $indent = "\n\t\t\t\t"; for (my $argc = 0; $argc < $argcount; $argc++) { my $type = $params->[$argc]->{type}; my $name = $params->[$argc]->{name}; my $pointer = $params->[$argc]->{pointer} ? "*" : ""; my $comment = " /* ${type} ${pointer}${name} */"; my $comma = ($argc < ($argcount - 1)) ? "," : ""; if ($params->[$argc]->{pointer} || defined($pointer_types{$type})) { print "${indent}getStackedPointer($paramnum, ${type} ${pointer})$comma $comment"; ++$paramnum; } elsif ($type eq 'GLdouble' || $type eq 'GLclampd') { print "${indent}getStackedDouble($paramnum)$comma $comment"; $paramnum += 2; } elsif ($type eq 'GLfloat' || $type eq 'GLclampf') { print "${indent}getStackedFloat($paramnum)$comma $comment"; ++$paramnum; } elsif (defined($longlong_types{$type})) { print "${indent}getStackedParameter64($paramnum)$comma $comment"; $paramnum += 2; } elsif ($type eq 'GLhandleARB') { # legacy MacOSX headers declare GLhandleARB as void * print "${indent}(GLhandleARB)(uintptr_t)getStackedParameter($paramnum)$comma $comment"; ++$paramnum; } elsif ($type eq 'GLsync') { # GLsync declared as pointer type on host; need a cast here print "${indent}(GLsync)(uintptr_t)getStackedParameter($paramnum)$comma $comment"; ++$paramnum; } else { print "${indent}getStackedParameter($paramnum)$comma $comment"; ++$paramnum; } } } print ");\n"; print "\t\t\tbreak;\n"; print("#endif\n") if (defined($blacklist{$function_name})); $gl_count++ if ($gl eq "gl"); $glu_count++ if ($gl eq "glu"); } # # emit trailer # print << "EOF"; /* Functions generated: $gl_count GL + $glu_count GLU */ EOF } # # generate prototypes # sub gen_protos() { my $gl_count = 0; my $glu_count = 0; my $osmesa_count = 0; my $prototype; my $return_type; my $function_name; my $gl; my $lastgl; gen_params(); $lastgl = ""; foreach my $key (sort { sort_by_name } keys %functions) { my $ent = $functions{$key}; $gl = $ent->{gl}; if ($gl ne $lastgl) { print "\n"; $lastgl = $gl; } $function_name = $gl . $ent->{name}; $return_type = $ent->{type}; $prototype = $ent->{proto}; print "GLAPI $return_type APIENTRY ${function_name}($prototype);\n"; $gl_count++ if ($gl eq "gl"); $glu_count++ if ($gl eq "glu"); $osmesa_count++ if ($gl eq "OSMesa"); } # # emit trailer # print << "EOF"; /* Functions generated: $osmesa_count OSMesa + $gl_count GL + $glu_count GLU */ EOF } sub first_param_addr($) { my ($ent) = @_; my $first_param; if ($ent->{args} eq "") { $first_param = 'NULL'; } elsif ($ent->{name} eq "exception_error") { # hack for exception_error, which has a function pointer as argument $first_param = '&exception'; } else { my $params = $ent->{params}; $first_param = '&' . $params->[0]->{name}; } return $first_param; } # # generate prototype macros # sub gen_macros() { my $gl_count = 0; my $glu_count = 0; my $osmesa_count = 0; my $first_param; my $ret; my $prototype; my $prototype_mem; my $return_type; my $function_name; my $complete_name; my $export; my $gl; my $lastgl; my $prefix; gen_params(); # # emit header # print << "EOF"; #ifndef GL_PROCM #define GL_PROCM(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef GL_GETSTRING #define GL_GETSTRING(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #define GL_GETSTRINGI(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef GLU_PROC #define GLU_PROC(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef GLU_PROCM #define GLU_PROCM(type, gl, name, export, upper, proto, args, first, ret) GL_PROCM(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef GL_PROC64 #define GL_PROC64(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef GL_PROC64M #define GL_PROC64M(type, gl, name, export, upper, proto, args, first, ret) GL_PROCM(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef OSMESA_PROC #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef OSMESA_PROCM #define OSMESA_PROCM(type, gl, name, export, upper, proto, args, first, ret) #endif #undef GL_void_return #define GL_void_return #ifndef NOTHING #define NOTHING void #endif #ifndef AND #define AND #endif EOF $lastgl = ""; foreach my $key (sort { sort_by_name } keys %functions) { my $ent = $functions{$key}; $function_name = $ent->{name}; $return_type = $ent->{type}; my $args = $ent->{args}; my $params = $ent->{params}; $prototype = $ent->{proto}; $prototype_mem = $ent->{proto_mem}; $first_param = first_param_addr($ent); $gl = $ent->{gl}; if ($lastgl ne $gl) { print "\n"; $lastgl = $gl; } $complete_name = $gl . $function_name; if ($return_type eq 'void') { # GL_void_return defined to nothing in header, to avoid empty macro argument $ret = 'GL_void_return'; } else { $ret = "return ($return_type)"; } $prefix = uc($gl); # hack for old library exporting several functions as taking float arguments $complete_name .= "f" if (defined($floatfuncs{$complete_name})); $export = $gl . $function_name; $export = $floatfuncs{$export} if (defined($floatfuncs{$export})); $export = "information" if ($function_name eq "tinyglinformation"); if ($prototype eq "void") { $prototype = "NOTHING"; $prototype_mem = "NOTHING"; } else { $prototype = "AND " . $prototype; $prototype_mem = "AND " . $prototype_mem; } my $skip_for_tiny = ! defined($tinygl{$gl . $function_name}); print("#ifndef NO_" . uc($gl . $function_name) . "\n"); print("#if !defined(TINYGL_ONLY)\n") if ($skip_for_tiny); if ($complete_name eq 'glGetString') { # hack for glGetString() which is handled separately print "${prefix}_GETSTRING($return_type, $gl, $function_name, $export, " . uc($function_name) . ", ($prototype), ($args), $first_param, $ret)\n"; } elsif ($complete_name eq 'glGetStringi') { # hack for glGetStringi() which is handled separately print "${prefix}_GETSTRINGI($return_type, $gl, $function_name, $export, " . uc($function_name) . ", ($prototype), ($args), $first_param, $ret)\n"; } else { if (defined($longlong_rettypes{$return_type})) { $prefix .= '_PROC64'; } else { $prefix .= '_PROC'; } print "${prefix}($return_type, $gl, $function_name, $export, " . uc($function_name) . ", ($prototype), ($args), $first_param, $ret)\n"; print "${prefix}M($return_type, $gl, $function_name, $export, " . uc($function_name) . ", ($prototype_mem), ($args), $first_param, $ret)\n"; } print("#endif\n") if ($skip_for_tiny); print("#endif\n"); $gl_count++ if ($gl eq "gl"); $glu_count++ if ($gl eq "glu"); $osmesa_count++ if ($gl eq "OSMesa"); } # # emit trailer # print << "EOF"; /* Functions generated: $osmesa_count OSMesa + $gl_count GL + $glu_count GLU */ #undef GL_PROC #undef GL_PROCM #undef GL_PROC64 #undef GL_PROC64M #undef GLU_PROC #undef GLU_PROCM #undef GL_GETSTRING #undef GL_GETSTRINGI #undef OSMESA_PROC #undef OSMESA_PROCM #undef GL_void_return EOF } # # generate prototype macros # sub gen_macros_bynumber() { my $gl_count = 0; my $glu_count = 0; my $osmesa_count = 0; my $first_param; my $ret; my $prototype; my $return_type; my $function_name; my $complete_name; my $export; my $gl; my $prefix; my $lastfunc; my $funcno; my $empty_slots; add_missing(\%oldmesa); read_enums(); add_glgetstring(); gen_params(); # # emit header # print << "EOF"; #ifndef LENGL_PROC #define LENGL_PROC(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef PUTGL_PROC #define PUTGL_PROC(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef GLU_PROC #define GLU_PROC(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef GL_PROC64 #define GL_PROC64(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef OSMESA_PROC #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #undef GL_void_return #define GL_void_return #ifndef NOTHING #define NOTHING void #endif #ifndef AND #define AND #endif EOF $lastfunc = 1; $empty_slots = 0; foreach my $key (sort { sort_by_value } keys %functions) { my $ent = $functions{$key}; $function_name = $ent->{name}; $funcno = $ent->{funcno}; while ($lastfunc != $funcno) { printf "/* %4d */ NO_PROC\n", $lastfunc; ++$lastfunc; ++$empty_slots; } printf "/* %4d */ ", $funcno; if (!$function_name) { printf "NO_PROC /* $key */\n"; ++$empty_slots; } else { $return_type = $ent->{type}; my $args = $ent->{args}; my $params = $ent->{params}; $prototype = $ent->{proto}; $first_param = first_param_addr($ent); $gl = $ent->{gl}; $complete_name = $gl . $function_name; if ($return_type eq 'void') { # GL_void_return defined to nothing in header, to avoid empty macro argument $ret = 'GL_void_return'; } else { $ret = "return ($return_type)"; } $prefix = uc($gl); # hack for old library exporting several functions as taking float arguments $complete_name .= "f" if (defined($floatfuncs{$complete_name})); $export = $gl . $function_name; $export = $floatfuncs{$export} if (defined($floatfuncs{$export})); if ($prototype eq "void") { $prototype = "NOTHING"; } else { $prototype = "AND " . $prototype; } if ($complete_name eq 'glGetString') { # hack for glGetString() which is handled separately print "${prefix}_GETSTRING($return_type, $gl, $function_name, $export, " . uc($function_name) . ", ($prototype), ($args), $first_param, $ret)\n"; } elsif ($complete_name eq 'glGetStringi') { # hack for glGetStringi() which is handled separately print "${prefix}_GETSTRINGI($return_type, $gl, $function_name, $export, " . uc($function_name) . ", ($prototype), ($args), $first_param, $ret)\n"; } else { if ($prefix eq '') { $prefix = 'TINYGL_PROC'; $gl = 'tinygl_'; } elsif (defined($longlong_rettypes{$return_type})) { $prefix .= '_PROC64'; } else { $prefix .= '_PROC'; } print "${prefix}($return_type, $gl, $function_name, $export, " . uc($function_name) . ", ($prototype), ($args), $first_param, $ret)\n"; } $gl_count++ if ($gl eq "gl"); $glu_count++ if ($gl eq "glu"); $osmesa_count++ if ($gl eq "OSMesa"); } $lastfunc = $funcno + 1; } # # emit trailer # print << "EOF"; /* Functions generated: $osmesa_count OSMesa + $gl_count GL + $glu_count GLU + $empty_slots empty */ #undef GL_PROC #undef GL_PROC64 #undef GLU_PROC #undef GL_GETSTRING #undef GL_GETSTRINGI #undef LENGL_PROC #undef PUTGL_PROC #undef OSMESA_PROC #undef NO_PROC #undef TINYGL_PROC #undef GL_void_return EOF } my $ldg_trailer = ' /* * Functions exported from TinyGL that take float arguments, * and conflict with OpenGL functions of the same name */ #undef glFrustum #define glFrustum glFrustumf #undef glClearDepth #define glClearDepth glClearDepthf #undef glOrtho #define glOrtho glOrthof #undef gluLookAt #define gluLookAt gluLookAtf /* fix bad name */ #undef information #define tinyglinformation gl.information '; my $tinygl_trailer = ' /* * no-ops in TinyGL */ #undef glFinish #define glFinish() /* fix bad name */ #undef information #define tinyglinformation gl.information /* * Functions from OpenGL that are not implemented in TinyGL */ #define glPointSize(size) glPointSize_not_supported_by_tinygl() #define glLineWidth(width) glLineWidth_not_supported_by_tinygl() #define glDepthFunc(func) glDepthFunc_not_supported_by_tinygl() #define glBlendFunc(sfactor, dfactor) glBlendFunc_not_supported_by_tinygl() #define glTexEnvf(target, pname, param) glTexEnvf_not_supported_by_tinygl() #define glVertex2i(x, y) glVertex2i_not_supported_by_tinygl() #define glDepthMask(flag) glDepthMask_not_supported_by_tinygl() #define glFogi(pname, param) glFogi_not_supported_by_tinygl() #define glFogf(pname, param) glFogf_not_supported_by_tinygl() #define glFogiv(pname, params) glFogiv_not_supported_by_tinygl() #define glFogfv(pname, params) glFogfv_not_supported_by_tinygl() #define glRasterPos2f(x, y) glRasterPos2f_not_supported_by_tinygl() #define glPolygonStipple(mask) glPolygonStipple_not_supported_by_tinygl() #define glTexParameterf(target, pname, param) glTexParameterf_not_supported_by_tinygl() '; sub gen_ldgheader() { my $gl_count = 0; my $glu_count = 0; my $osmesa_count = 0; my $ent; my $prototype; my $return_type; my $function_name; my $gl; my $glx; my $args; my $key; my $lastfunc; my $funcno; add_missing(\%oldmesa); read_enums(); gen_params(); # # emit header # print << "EOF"; #ifndef __NFOSMESA_H__ #define __NFOSMESA_H__ #include #include #include #include #if !defined(__MSHORT__) && (defined(__PUREC__) && __PUREC__ < 0x400) # define __MSHORT__ 1 #endif #if (!defined(__PUREC__) || !defined(__MSHORT__) || defined(__GEMLIB__)) && !defined(__USE_GEMLIB) #define __USE_GEMLIB 1 #endif #ifndef _WORD # if defined(__GEMLIB__) || defined(__USE_GEMLIB) # define _WORD short # else # define _WORD int # endif #endif #ifdef __cplusplus extern "C" { #endif /* * load & initialize NFOSmesa */ struct gl_public *ldg_load_osmesa(const char *libname, _WORD *gl); /* * init NFOSmesa from already loaded lib */ int ldg_init_osmesa(LDG *lib); /* * unload NFOSmesa */ void ldg_unload_osmesa(struct gl_public *pub, _WORD *gl); #ifdef __cplusplus } #endif EOF my $filename = $inc_gltypes; if ( ! defined(open(INC, $filename)) ) { &warn("cannot include \"$filename\" in output file"); print '#include "gltypes.h"' . "\n"; } else { my $line; print "\n"; while ($line = ) { chomp($line); print "$line\n"; } print "\n"; close(INC) } foreach $key (sort { sort_by_name } keys %floatfuncs) { print "#undef ${key}\n"; } print << "EOF"; #ifdef __cplusplus extern "C" { #endif struct _gl_osmesa { EOF $lastfunc = 1; foreach $key (sort { sort_by_value } keys %functions) { $ent = $functions{$key}; $function_name = $ent->{name}; $funcno = $ent->{funcno}; while ($lastfunc != $funcno) { printf "\t/* %4d */ void *__unused_%d;\n", $lastfunc - 1, $lastfunc - 1; ++$lastfunc; } $return_type = $ent->{type}; $args = $ent->{args}; $prototype = $ent->{proto}; $gl = $ent->{gl}; $glx = $gl; $glx = "" if ($glx eq "gl"); printf "\t/* %4d */ ${return_type} APIENTRY (*${glx}${function_name})(${prototype});\n", $funcno - 1; $gl_count++ if ($gl eq "gl"); $glu_count++ if ($gl eq "glu"); $osmesa_count++ if ($gl eq "OSMesa"); $lastfunc = $funcno + 1; } print << "EOF"; unsigned int __numfuncs; OSMESAproc APIENTRY (*__old_OSMesaGetProcAddress)(const char *funcName); }; extern struct _gl_osmesa gl; #ifndef NFOSMESA_NO_MANGLE EOF foreach $key (sort { sort_by_value } keys %functions) { $ent = $functions{$key}; $function_name = $ent->{name}; $return_type = $ent->{type}; $args = $ent->{args}; $prototype = $ent->{proto}; $gl = $ent->{gl}; $glx = $gl; $glx = "" if ($glx eq "gl"); print "#undef ${gl}${function_name}\n"; print "#define ${gl}${function_name} (gl.${glx}${function_name})\n"; } # # emit trailer # print << "EOF"; #endif $ldg_trailer /* Functions generated: $osmesa_count OSMesa + $gl_count GL + $glu_count GLU */ #endif /* __NFOSMESA_H__ */ EOF } sub sort_tinygl_by_value { my $ret = $tinygl{$a} <=> $tinygl{$b}; return $ret; } sub gen_tinyldgheader() { my $tinygl_count = 0; my $ent; my $prototype; my $return_type; my $function_name; my $gl; my $glx; my $args; my $key; add_missing(\%oldmesa); gen_params(); # # emit header # print << "EOF"; #ifndef __LDG_TINY_GL_H__ #define __LDG_TINY_GL_H__ #ifndef __TINY_GL_H__ # define __TINY_GL_H__ 1 #endif #include #include #include #if !defined(__MSHORT__) && (defined(__PUREC__) && __PUREC__ < 0x400) # define __MSHORT__ 1 #endif #if (!defined(__PUREC__) || !defined(__MSHORT__) || defined(__GEMLIB__)) && !defined(__USE_GEMLIB) #define __USE_GEMLIB 1 #endif #ifndef _WORD # if defined(__GEMLIB__) || defined(__USE_GEMLIB) # define _WORD short # else # define _WORD int # endif #endif #ifdef __cplusplus extern "C" { #endif /* * load & initialize TinyGL */ struct gl_public *ldg_load_tiny_gl(const char *libname, _WORD *gl); /* * init TinyGL from already loaded lib */ int ldg_init_tiny_gl(LDG *lib); /* * unload TinyGL */ void ldg_unload_tiny_gl(struct gl_public *pub, _WORD *gl); #ifdef __cplusplus } #endif EOF my $filename = $inc_gltypes; if ( ! defined(open(INC, $filename)) ) { &warn("cannot include \"$filename\" in output file"); print '#include "gltypes.h"' . "\n"; } else { my $line; print "\n"; while ($line = ) { chomp($line); print "$line\n"; } print "\n"; close(INC) } foreach $key (sort { sort_by_name } keys %floatfuncs) { print "#undef ${key}\n"; } print << "EOF"; /* * old LDG functions */ #ifdef __cplusplus extern "C" { #endif GLAPI void *GLAPIENTRY OSMesaCreateLDG(GLenum format, GLenum type, GLint width, GLint height); GLAPI void GLAPIENTRY OSMesaDestroyLDG(void); GLAPI GLsizei GLAPIENTRY max_width(void); GLAPI GLsizei GLAPIENTRY max_height(void); GLAPI void GLAPIENTRY swapbuffer(void *buf); GLAPI void GLAPIENTRY exception_error(void CALLBACK (*exception)(GLenum param)); GLAPI void GLAPIENTRY tinyglinformation(void); GLAPI void GLAPIENTRY glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); GLAPI void GLAPIENTRY glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); GLAPI void GLAPIENTRY glClearDepthf(GLfloat depth); GLAPI void GLAPIENTRY gluLookAtf(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ); struct _gl_tiny { EOF foreach $key (sort { sort_tinygl_by_value } keys %tinygl) { if (!defined($functions{$key})) { die "$me: $key should be exported to tinygl but is not defined"; } $ent = $functions{$key}; $function_name = $ent->{name}; $return_type = $ent->{type}; $args = $ent->{args}; $prototype = $ent->{proto}; $gl = $ent->{gl}; $glx = $gl; $glx = "" if ($glx eq "gl"); print "\t${return_type} APIENTRY (*${glx}${function_name})(${prototype});\n"; $tinygl_count++; } print << "EOF"; }; extern struct _gl_tiny gl; #ifdef __cplusplus } #endif #ifndef NFOSMESA_NO_MANGLE EOF foreach $key (sort { sort_tinygl_by_value } keys %tinygl) { $ent = $functions{$key}; $function_name = $ent->{name}; $return_type = $ent->{type}; $args = $ent->{args}; $prototype = $ent->{proto}; $gl = $ent->{gl}; $glx = $gl; $glx = "" if ($glx eq "gl"); print "#undef ${gl}${function_name}\n"; print "#define ${gl}${function_name} (gl.${glx}${function_name})\n"; } # # emit trailer # print << "EOF"; #endif $ldg_trailer $tinygl_trailer /* Functions generated: $tinygl_count */ #endif /* __LDG_TINY_GL_H__ */ EOF } # end of gen_tinyldgheader sub gen_tinyldglink() { my $tinygl_count = 0; my $ent; my $prototype; my $prototype_desc; my $return_type; my $function_name; my $complete_name; my $gl; my $glx; my $args; my $ret; my $key; add_missing(\%oldmesa); gen_params(); print "#undef NUM_TINYGL_PROCS\n"; print "\n"; foreach $key (sort { sort_tinygl_by_value } keys %tinygl) { if (!defined($functions{$key})) { die "$me: $key should be exported to tinygl but is not defined"; } $ent = $functions{$key}; $function_name = $ent->{name}; $return_type = $ent->{type}; $args = $ent->{args}; $prototype = $ent->{proto}; $gl = $ent->{gl}; if ($return_type eq "void") { $ret = "voidf"; } else { $ret = "return "; } $prototype_desc = $prototype; if ($prototype eq "void") { $prototype = "NOTHING"; } else { $prototype = "AND " . $prototype; } $complete_name = $gl . $function_name; # remove trailing 'f' from export name if (substr($complete_name, -1) eq "f" && defined($floatfuncs{substr($complete_name, 0, length($complete_name) - 1)})) { chop($function_name); } $glx = ""; $glx = "tinygl" if ($complete_name eq "information" || $complete_name eq "swapbuffer" || $complete_name eq "exception_error"); print "GL_PROC($return_type, $ret, \"${gl}${function_name}\", ${glx}${complete_name}, \"${return_type} ${complete_name}(${prototype_desc})\", ($prototype), ($args))\n"; $tinygl_count++; } print << "EOF"; #undef GL_PROC #undef GL_PROC64 #define NUM_TINYGL_PROCS $tinygl_count /* Functions generated: $tinygl_count */ EOF } # end of gen_tinyldglink sub ldg_export($) { my ($ent) = @_; my $function_name = $ent->{name}; my $prototype = $ent->{proto}; my $return_type = $ent->{type}; my $gl = $ent->{gl}; my $glx = $gl; $glx = "" if ($glx eq "gl"); my $lookup = "${gl}${function_name}"; if (defined($floatfuncs{$lookup})) { # GL compatible glOrtho() is exported as "glOrthod" $lookup = $floatfuncs{$lookup}; } elsif (substr($lookup, -1) eq "f" && defined($floatfuncs{substr($lookup, 0, length($lookup) - 1)})) { # the function exported as "glOrtho" actually is glOrthof chop($lookup); } elsif ($lookup eq "tinyglinformation") { $lookup = "information"; } print "\tglp->${glx}${function_name} = ($return_type APIENTRY (*)($prototype)) ldg_find(\"${lookup}\", lib);\n"; print "\tGL_CHECK(glp->${glx}${function_name});\n"; } sub gen_ldgsource() { my $ent; my $key; my $numfuncs; my $function_name; my $gl; my $glx; add_missing(\%oldmesa); read_enums(); gen_params(); # # emit header # print << "EOF"; /* Bindings of osmesa.ldg * Compile this module and link it with the application client */ #include #include #include #define NFOSMESA_NO_MANGLE #include #ifndef TRUE # define TRUE 1 # define FALSE 0 #endif struct _gl_osmesa gl; #if defined(__PUREC__) && !defined(__AHCC__) /* * Pure-C is not able to compile the result if you enable it, * probable the function gets too large */ # define GL_CHECK(x) #else # define GL_CHECK(x) if (x == 0) result = FALSE #endif static APIENTRY OSMESAproc real_OSMesaGetProcAddress(const char *funcname) { unsigned int func = (unsigned int)((*gl.__old_OSMesaGetProcAddress)(funcname)); if (func == 0 || func > gl.__numfuncs) return 0; --func; return (OSMESAproc)(((void **)(&gl))[func]); } int ldg_init_osmesa(LDG *lib) { int result = TRUE; struct _gl_osmesa *glp = ≷ EOF foreach $key (sort { sort_by_name } keys %floatfuncs) { print "#undef ${key}\n"; } foreach $key (sort { sort_by_value } keys %functions) { $ent = $functions{$key}; $numfuncs = $ent->{funcno}; ldg_export($ent); } # # emit trailer # print << "EOF"; gl.__numfuncs = $numfuncs; gl.__old_OSMesaGetProcAddress = gl.OSMesaGetProcAddress; gl.OSMesaGetProcAddress = real_OSMesaGetProcAddress; return result; } #undef GL_CHECK struct gl_public *ldg_load_osmesa(const char *libname, _WORD *gl) { LDG *lib; struct gl_public *pub = NULL; size_t len; if (libname == NULL) libname = "osmesa.ldg"; if (gl == NULL) gl = ldg_global; lib = ldg_open(libname, gl); if (lib != NULL) { long APIENTRY (*glInit)(void *) = (long APIENTRY (*)(void *))ldg_find("glInit", lib); if (glInit) { len = (*glInit)(NULL); } else { len = sizeof(*pub); } pub = (struct gl_public *)calloc(1, len); if (pub) { pub->m_alloc = malloc; pub->m_free = free; if (glInit) (*glInit)(pub); pub->libhandle = lib; ldg_init_osmesa(lib); } else { ldg_close(lib, gl); } } return pub; } void ldg_unload_osmesa(struct gl_public *pub, _WORD *gl) { if (pub != NULL) { if (pub->libhandle != NULL) { if (gl == NULL) gl = ldg_global; ldg_close((LDG *)pub->libhandle, gl); } pub->m_free(pub); } } #ifdef TEST #include #include int main(void) { struct gl_public *pub; OSMESAproc p; OSMesaContext ctx; void *buffer; int width = 32; int height = 32; pub = ldg_load_osmesa(0, 0); if (pub == NULL) pub = ldg_load_osmesa("c:/gemsys/ldg/osmesa.ldg", 0); if (pub == NULL) { fprintf(stderr, "osmesa.ldg not found\\n"); return 1; } ctx = gl.OSMesaCreateContextExt(OSMESA_RGB, 16, 0, 0, NULL); if (ctx == NULL) { fprintf(stderr, "can't create context\\n"); return 1; } buffer = malloc(width * height * 4); gl.OSMesaMakeCurrent(ctx, buffer, OSMESA_RGB, width, height); printf("GL_RENDERER = %s\\n", (const char *) gl.GetString(GL_RENDERER)); printf("GL_VERSION = %s\\n", (const char *) gl.GetString(GL_VERSION)); printf("GL_VENDOR = %s\\n", (const char *) gl.GetString(GL_VENDOR)); printf("GL_EXTENSIONS = %s\\n", (const char *) gl.GetString(GL_EXTENSIONS)); EOF foreach $key (sort { sort_by_name } keys %functions) { $ent = $functions{$key}; $function_name = $ent->{name}; $gl = $ent->{gl}; $glx = $gl; $glx = "" if ($glx eq "gl"); print "\tp = gl.OSMesaGetProcAddress(\"${gl}${function_name}\");\n"; printf "\tprintf(\"%-30s: %%p\\n\", p);\n", ${gl} . ${function_name}; } print << "EOF"; gl.OSMesaDestroyContext(ctx); ldg_unload_osmesa(pub, NULL); return 0; } #endif EOF } # end of generated source, and also of gen_ldgsource sub gen_tinyldgsource() { my $ent; my $key; add_missing(\%oldmesa); gen_params(); # # emit header # print << "EOF"; /* Bindings of tiny_gl.ldg * Compile this module and link it with the application client */ #include #include #include #define NFOSMESA_NO_MANGLE #include #ifndef TRUE # define TRUE 1 # define FALSE 0 #endif struct _gl_tiny gl; #define GL_CHECK(x) if (x == 0) result = FALSE int ldg_init_tiny_gl(LDG *lib) { int result = TRUE; struct _gl_tiny *glp = ≷ EOF foreach $key (sort { sort_by_name } keys %floatfuncs) { print "#undef ${key}\n"; } foreach $key (sort { sort_tinygl_by_value } keys %tinygl) { if (!defined($functions{$key})) { die "$me: $key should be exported to tinygl but is not defined"; } $ent = $functions{$key}; ldg_export($ent); } # # emit trailer # print << "EOF"; return result; } #undef GL_CHECK struct gl_public *ldg_load_tiny_gl(const char *libname, _WORD *gl) { LDG *lib; struct gl_public *pub = NULL; size_t len; if (libname == NULL) libname = "tiny_gl.ldg"; if (gl == NULL) gl = ldg_global; lib = ldg_open(libname, gl); if (lib != NULL) { long APIENTRY (*glInit)(void *) = (long APIENTRY (*)(void *))ldg_find("glInit", lib); if (glInit) { len = (*glInit)(NULL); } else { len = sizeof(*pub); } pub = (struct gl_public *)calloc(1, len); if (pub) { pub->m_alloc = malloc; pub->m_free = free; if (glInit) (*glInit)(pub); pub->libhandle = lib; ldg_init_tiny_gl(lib); } else { ldg_close(lib, gl); } } return pub; } void ldg_unload_tiny_gl(struct gl_public *pub, _WORD *gl) { if (pub != NULL) { if (pub->libhandle != NULL) { if (gl == NULL) gl = ldg_global; ldg_close((LDG *)pub->libhandle, gl); } pub->m_free(pub); } } #ifdef TEST #include int main(void) { struct gl_public *pub; pub = ldg_load_tiny_gl(0, 0); if (pub == NULL) pub = ldg_load_tiny_gl("c:/gemsys/ldg/tin_gl.ldg", 0); if (pub == NULL) { fprintf(stderr, "tiny_gl.ldg not found\\n"); return 1; } printf("%s: %lx\\n", "glBegin", gl.Begin); printf("%s: %lx\\n", "glOrthof", gl.Orthof); ldg_unload_tiny_gl(pub, NULL); return 0; } #endif EOF } # end of generated source, and also of gen_tinyldgsource sub gen_tinyslbheader() { my $tinygl_count = 0; my $ent; my $prototype; my $return_type; my $function_name; my $gl; my $glx; my $args; my $key; add_missing(\%oldmesa); gen_params(); # # emit header # print << "EOF"; #ifndef __SLB_TINY_GL_H__ #define __SLB_TINY_GL_H__ #ifndef __TINY_GL_H__ # define __TINY_GL_H__ 1 #endif #include #include #include #if !defined(__MSHORT__) && (defined(__PUREC__) && __PUREC__ < 0x400) # define __MSHORT__ 1 #endif #if (!defined(__PUREC__) || !defined(__MSHORT__) || defined(__GEMLIB__)) && !defined(__USE_GEMLIB) #define __USE_GEMLIB 1 #endif #ifndef _WORD # if defined(__GEMLIB__) || defined(__USE_GEMLIB) # define _WORD short # else # define _WORD int # endif #endif #ifdef __cplusplus extern "C" { #endif /* * load & initialize TinyGL */ struct gl_public *slb_load_tiny_gl(const char *path); /* * unload TinyGL */ void slb_unload_tiny_gl(struct gl_public *pub); #ifdef __cplusplus } #endif EOF my $filename = $inc_gltypes; if ( ! defined(open(INC, $filename)) ) { &warn("cannot include \"$filename\" in output file"); print '#include "gltypes.h"' . "\n"; } else { my $line; print "\n"; while ($line = ) { chomp($line); print "$line\n"; } print "\n"; close(INC) } foreach $key (sort { sort_by_name } keys %floatfuncs) { print "#undef ${key}\n"; } print << "EOF"; /* * old LDG functions */ #ifdef __cplusplus extern "C" { #endif GLAPI void *GLAPIENTRY OSMesaCreateLDG(GLenum format, GLenum type, GLint width, GLint height); GLAPI void GLAPIENTRY OSMesaDestroyLDG(void); GLAPI GLsizei GLAPIENTRY max_width(void); GLAPI GLsizei GLAPIENTRY max_height(void); GLAPI void GLAPIENTRY swapbuffer(void *buf); GLAPI void GLAPIENTRY exception_error(void CALLBACK (*exception)(GLenum param)); GLAPI void GLAPIENTRY tinyglinformation(void); GLAPI void GLAPIENTRY glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); GLAPI void GLAPIENTRY glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); GLAPI void GLAPIENTRY glClearDepthf(GLfloat depth); GLAPI void GLAPIENTRY gluLookAtf(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ); struct _gl_tiny { EOF foreach $key (sort { sort_tinygl_by_value } keys %tinygl) { if (!defined($functions{$key})) { die "$me: $key should be exported to tinygl but is not defined"; } $ent = $functions{$key}; $function_name = $ent->{name}; $return_type = $ent->{type}; $args = $ent->{args}; $prototype = $ent->{proto}; $gl = $ent->{gl}; $glx = $gl; $glx = "" if ($glx eq "gl"); print "\t${return_type} APIENTRY (*${glx}${function_name})(${prototype});\n"; $tinygl_count++; } print << "EOF"; }; extern struct _gl_tiny gl; #ifdef __cplusplus } #endif #ifndef NFOSMESA_NO_MANGLE EOF foreach $key (sort { sort_tinygl_by_value } keys %tinygl) { $ent = $functions{$key}; $function_name = $ent->{name}; $return_type = $ent->{type}; $args = $ent->{args}; $prototype = $ent->{proto}; $gl = $ent->{gl}; $glx = $gl; $glx = "" if ($glx eq "gl"); print "#undef ${gl}${function_name}\n"; print "#define ${gl}${function_name} (gl.${glx}${function_name})\n"; } # # emit trailer # print << "EOF"; #endif $ldg_trailer $tinygl_trailer /* Functions generated: $tinygl_count */ #endif /* __SLB_TINY_GL_H__ */ EOF } # end of gen_tinyslbheader sub gen_slbheader() { my $gl_count = 0; my $glu_count = 0; my $osmesa_count = 0; my $ent; my $prototype; my $return_type; my $function_name; my $gl; my $glx; my $args; my $key; my $lastfunc; my $funcno; add_missing(\%oldmesa); read_enums(); gen_params(); # # emit header # print << "EOF"; #ifndef __NFOSMESA_H__ #define __NFOSMESA_H__ #include #include #include #include #if !defined(__MSHORT__) && (defined(__PUREC__) && __PUREC__ < 0x400) # define __MSHORT__ 1 #endif #if (!defined(__PUREC__) || !defined(__MSHORT__) || defined(__GEMLIB__)) && !defined(__USE_GEMLIB) #define __USE_GEMLIB 1 #endif #ifndef _WORD # if defined(__GEMLIB__) || defined(__USE_GEMLIB) # define _WORD short # else # define _WORD int # endif #endif #ifdef __cplusplus extern "C" { #endif /* * load & initialize NFOsmesa */ struct gl_public *slb_load_osmesa(const char *path); /* * unload NFOsmesa */ void slb_unload_osmesa(struct gl_public *pub); #ifdef __cplusplus } #endif EOF my $filename = $inc_gltypes; if ( ! defined(open(INC, $filename)) ) { &warn("cannot include \"$filename\" in output file"); print '#include "gltypes.h"' . "\n"; } else { my $line; print "\n"; while ($line = ) { chomp($line); print "$line\n"; } print "\n"; close(INC) } foreach $key (sort { sort_by_name } keys %floatfuncs) { print "#undef ${key}\n"; } print << "EOF"; #ifdef __cplusplus extern "C" { #endif struct _gl_osmesa { EOF $lastfunc = 1; foreach $key (sort { sort_by_value } keys %functions) { $ent = $functions{$key}; $function_name = $ent->{name}; $funcno = $ent->{funcno}; while ($lastfunc != $funcno) { printf "\t/* %4d */ void *__unused_%d;\n", $lastfunc - 1, $lastfunc - 1; ++$lastfunc; } $return_type = $ent->{type}; $args = $ent->{args}; $prototype = $ent->{proto}; $gl = $ent->{gl}; $glx = $gl; $glx = "" if ($glx eq "gl"); printf "\t/* %4d */ ${return_type} APIENTRY (*${glx}${function_name})(${prototype});\n", $funcno - 1; $gl_count++ if ($gl eq "gl"); $glu_count++ if ($gl eq "glu"); $osmesa_count++ if ($gl eq "OSMesa"); $lastfunc = $funcno + 1; } print << "EOF"; unsigned int __numfuncs; OSMESAproc APIENTRY (*__old_OSMesaGetProcAddress)(const char *funcName); }; extern struct _gl_osmesa gl; #ifdef __cplusplus } #endif #ifndef NFOSMESA_NO_MANGLE EOF foreach $key (sort { sort_by_value } keys %functions) { $ent = $functions{$key}; $function_name = $ent->{name}; $return_type = $ent->{type}; $args = $ent->{args}; $prototype = $ent->{proto}; $gl = $ent->{gl}; $glx = $gl; $glx = "" if ($glx eq "gl"); print "#undef ${gl}${function_name}\n"; print "#define ${gl}${function_name} (gl.${glx}${function_name})\n"; } # # emit trailer # print << "EOF"; #endif $ldg_trailer /* Functions generated: $osmesa_count OSMesa + $gl_count GL + $glu_count GLU */ #endif /* __NFOSMESA_H__ */ EOF } # end of gen_slbheader sub slb_export($) { my ($ent) = @_; my $function_name = $ent->{name}; my $return_type = $ent->{type}; my $prototype = $ent->{proto}; my $params = $ent->{params}; my $argcount = $#$params + 1; my $args = $ent->{args}; my $gl = $ent->{gl}; my $funcno = $ent->{funcno}; my $nfapi = $ent->{nfapi}; my $glx = $gl; my $ret; my $first_param; my $exectype1; my $exectype2; $nfapi = '' if (!defined($nfapi)); $glx = "" if ($glx eq "gl"); print "static $return_type APIENTRY exec_${gl}${function_name}($prototype)\n"; print "{\n"; my $nargs = 0; for (my $argc = 0; $argc < $argcount; $argc++) { my $param = $params->[$argc]; my $type = $param->{type}; my $name = $param->{name}; my $pointer = $param->{pointer}; if ($type eq 'GLdouble' || $type eq 'GLclampd' || defined($longlong_types{$type})) { $nargs += 2; } else { $nargs += 1; } } $first_param = first_param_addr($ent); if ($args ne "") { $args = ", " . $args; } $exectype1 = "long __CDECL (*"; $exectype2 = ")(SLB_HANDLE, long, long, void *, void *)"; if (defined($longlong_rettypes{$return_type})) { $exectype2 = ")(SLB_HANDLE, long, long, void *, void *, void *)"; print "\tGLuint64 __retval = 0;\n"; } print "\t${exectype1}exec${exectype2} = (${exectype1}${exectype2})gl_exec;\n"; for (my $argc = 1; $argc < $argcount; $argc++) { my $param = $params->[$argc]; my $name = $param->{name}; print "\t(void)$name;\n"; } if (defined($longlong_rettypes{$return_type})) { print "\t(*exec)(gl_slb, $funcno /* $nfapi */, SLB_NARGS(3), gl_pub, $first_param, &__retval);\n"; print "\treturn __retval;\n"; } else { if ($return_type eq 'void') { $ret = ''; } else { $ret = "return ($return_type)"; } print "\t${ret}(*exec)(gl_slb, $funcno /* $nfapi */, SLB_NARGS(2), gl_pub, $first_param);\n"; } print "}\n\n"; } sub gen_tinyslbsource() { my $ent; my $key; my $function_name; my $gl; my $glx; add_missing(\%oldmesa); read_enums(); gen_params(); # # emit header # print << "EOF"; /* Bindings of tiny_gl.slb * Compile this module and link it with the application client */ #include #include #include #define NFOSMESA_NO_MANGLE #include #include #ifndef TRUE # define TRUE 1 # define FALSE 0 #endif #ifdef __PUREC__ #pragma warn -stv #endif struct _gl_tiny gl; static SLB_HANDLE gl_slb; static SLB_EXEC gl_exec; static struct gl_public *gl_pub; /* * The "nwords" argument should actually only be a "short". * MagiC will expect it that way, with the actual arguments * following. * However, a "short" in the actual function definition * will be treated as promoted to int. * So we pass a long instead, with the upper half * set to 1 + nwords to account for the extra space. * This also has the benefit of keeping the stack longword aligned. */ #undef SLB_NWORDS #define SLB_NWORDS(_nwords) ((((long)(_nwords) + 1l) << 16) | (long)(_nwords)) #undef SLB_NARGS #define SLB_NARGS(_nargs) SLB_NWORDS(_nargs * 2) EOF foreach $key (sort { sort_by_name } keys %floatfuncs) { print "#undef ${key}\n"; } print "\n"; # # emit wrapper functions # foreach $key (sort { sort_tinygl_by_value } keys %tinygl) { if (!defined($functions{$key})) { die "$me: $key should be exported to tinygl but is not defined"; } $ent = $functions{$key}; $ent->{funcno} = $tinygl{$key}; slb_export($ent); } print << "EOF"; static void slb_init_tiny_gl(void) { struct _gl_tiny *glp = ≷ EOF foreach $key (sort { sort_tinygl_by_value } keys %tinygl) { if (!defined($functions{$key})) { die "$me: $key should be exported to tinygl but is not defined"; } $ent = $functions{$key}; $function_name = $ent->{name}; $gl = $ent->{gl}; $glx = $gl; $glx = "" if ($glx eq "gl"); print "\tglp->${glx}${function_name} = exec_${gl}${function_name};\n"; } # # emit trailer # print << "EOF"; } struct gl_public *slb_load_tiny_gl(const char *path) { long ret; size_t len; struct gl_public *pub = NULL; /* * Slbopen() checks the name of the file with the * compiled-in library name, so there is no way * to pass an alternative filename here */ ret = Slbopen("tiny_gl.slb", path, 4 /* ARANFOSMESA_NFAPI_VERSION */, &gl_slb, &gl_exec); if (ret >= 0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *))gl_exec; len = (*exec)(gl_slb, 0, SLB_NARGS(1), NULL); pub = gl_pub = (struct gl_public *)calloc(1, len); if (pub) { pub->m_alloc = malloc; pub->m_free = free; pub->libhandle = gl_slb; pub->libexec = gl_exec; (*exec)(gl_slb, 0, SLB_NARGS(1), pub); slb_init_tiny_gl(); } } return pub; } void slb_unload_tiny_gl(struct gl_public *pub) { if (pub != NULL) { if (pub->libhandle != NULL) { Slbclose(pub->libhandle); gl_slb = 0; } pub->m_free(pub); } } EOF } # end of generated source, and also of gen_tinyslbsource sub gen_slbsource() { my $ent; my $key; my $function_name; my $gl; my $glx; my $numfuncs; add_missing(\%oldmesa); read_enums(); gen_params(); # # emit header # print << "EOF"; /* Bindings of osmesa.slb * Compile this module and link it with the application client */ #include #include #include #define NFOSMESA_NO_MANGLE #include #include #ifndef TRUE # define TRUE 1 # define FALSE 0 #endif #ifdef __PUREC__ #pragma warn -stv #endif struct _gl_osmesa gl; static SLB_HANDLE gl_slb; static SLB_EXEC gl_exec; static struct gl_public *gl_pub; /* * The "nwords" argument should actually only be a "short". * MagiC will expect it that way, with the actual arguments * following. * However, a "short" in the actual function definition * will be treated as promoted to int. * So we pass a long instead, with the upper half * set to 1 + nwords to account for the extra space. * This also has the benefit of keeping the stack longword aligned. */ #undef SLB_NWORDS #define SLB_NWORDS(_nwords) ((((long)(_nwords) + 1l) << 16) | (long)(_nwords)) #undef SLB_NARGS #define SLB_NARGS(_nargs) SLB_NWORDS(_nargs * 2) EOF foreach $key (sort { sort_by_name } keys %floatfuncs) { print "#undef ${key}\n"; } print "\n"; # # emit wrapper functions # foreach $key (sort { sort_by_value } keys %functions) { $ent = $functions{$key}; slb_export($ent); } print << "EOF"; static APIENTRY OSMESAproc real_OSMesaGetProcAddress(const char *funcname) { unsigned int func = (unsigned int)((*gl.__old_OSMesaGetProcAddress)(funcname)); if (func == 0 || func > gl.__numfuncs) return 0; --func; return (OSMESAproc)(((void **)(&gl))[func]); } static void slb_init_osmesa(void) { struct _gl_osmesa *glp = ≷ EOF foreach $key (sort { sort_by_value } keys %functions) { $ent = $functions{$key}; $numfuncs = $ent->{funcno}; $function_name = $ent->{name}; $gl = $ent->{gl}; $glx = $gl; $glx = "" if ($glx eq "gl"); print "\tglp->${glx}${function_name} = exec_${gl}${function_name};\n"; } # # emit trailer # print << "EOF"; gl.__numfuncs = $numfuncs; gl.__old_OSMesaGetProcAddress = gl.OSMesaGetProcAddress; gl.OSMesaGetProcAddress = real_OSMesaGetProcAddress; } struct gl_public *slb_load_osmesa(const char *path) { long ret; size_t len; struct gl_public *pub = NULL; /* * Slbopen() checks the name of the file with the * compiled-in library name, so there is no way * to pass an alternative filename here */ ret = Slbopen("osmesa.slb", path, 4 /* ARANFOSMESA_NFAPI_VERSION */, &gl_slb, &gl_exec); if (ret >= 0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *))gl_exec; len = (*exec)(gl_slb, 0, SLB_NARGS(1), NULL); pub = gl_pub = (struct gl_public *)calloc(1, len); if (pub) { pub->m_alloc = malloc; pub->m_free = free; pub->libhandle = gl_slb; pub->libexec = gl_exec; (*exec)(gl_slb, 0, SLB_NARGS(1), pub); slb_init_osmesa(); } } return pub; } void slb_unload_osmesa(struct gl_public *pub) { if (pub != NULL) { if (pub->libhandle != NULL) { Slbclose(pub->libhandle); gl_slb = 0; } pub->m_free(pub); } } #ifdef TEST #include #include int main(void) { struct gl_public *pub; OSMESAproc p; OSMesaContext ctx; void *buffer; int width = 32; int height = 32; pub = slb_load_osmesa(NULL); if (pub == NULL) { fprintf(stderr, "osmesa.slb not found\\n"); return 1; } ctx = gl.OSMesaCreateContextExt(OSMESA_RGB, 16, 0, 0, NULL); if (ctx == NULL) { fprintf(stderr, "can't create context\\n"); return 1; } buffer = malloc(width * height * 4); gl.OSMesaMakeCurrent(ctx, buffer, OSMESA_RGB, width, height); printf("GL_RENDERER = %s\\n", (const char *) gl.GetString(GL_RENDERER)); printf("GL_VERSION = %s\\n", (const char *) gl.GetString(GL_VERSION)); printf("GL_VENDOR = %s\\n", (const char *) gl.GetString(GL_VENDOR)); printf("GL_EXTENSIONS = %s\\n", (const char *) gl.GetString(GL_EXTENSIONS)); EOF foreach $key (sort { sort_by_name } keys %functions) { $ent = $functions{$key}; $function_name = $ent->{name}; $gl = $ent->{gl}; $glx = $gl; $glx = "" if ($glx eq "gl"); print "\tp = gl.OSMesaGetProcAddress(\"${gl}${function_name}\");\n"; printf "\tprintf(\"%-30s: %%p\\n\", p);\n", ${gl} . ${function_name}; } print << "EOF"; gl.OSMesaDestroyContext(ctx); slb_unload_osmesa(pub); return 0; } #endif EOF } # end of generated source, and also of gen_slbsource sub usage() { print "Usage: $me [-protos|-macros|-calls|-dispatch]\n"; } # # main() # if ($ARGV[0] eq '-incfile') { shift @ARGV; $inc_gltypes = $ARGV[0]; shift @ARGV; } if ($ARGV[0] eq '-enums') { shift @ARGV; $enumfile = $ARGV[0]; shift @ARGV; } unshift(@ARGV, '-') unless @ARGV; if ($ARGV[0] eq '-protos') { shift @ARGV; print_header(); read_includes(); gen_protos(); } elsif ($ARGV[0] eq '-macros') { shift @ARGV; print_header(); read_includes(); if (defined($enumfile)) { gen_macros_bynumber(); } else { gen_macros(); } } elsif ($ARGV[0] eq '-calls') { shift @ARGV; print_header(); read_includes(); gen_calls(); } elsif ($ARGV[0] eq '-dispatch') { shift @ARGV; print_header(); read_includes(); gen_dispatch(); } elsif ($ARGV[0] eq '-paramcount') { shift @ARGV; print_header(); read_includes(); gen_paramcount(); } elsif ($ARGV[0] eq '-ldgheader') { shift @ARGV; read_includes(); gen_ldgheader(); } elsif ($ARGV[0] eq '-ldgsource') { shift @ARGV; read_includes(); gen_ldgsource(); } elsif ($ARGV[0] eq '-tinyldgheader') { shift @ARGV; read_includes(); gen_tinyldgheader(); } elsif ($ARGV[0] eq '-tinyldgsource') { shift @ARGV; read_includes(); gen_tinyldgsource(); } elsif ($ARGV[0] eq '-tinyldglink') { shift @ARGV; print_header(); read_includes(); gen_tinyldglink(); } elsif ($ARGV[0] eq '-tinyslbheader') { shift @ARGV; read_includes(); gen_tinyslbheader(); } elsif ($ARGV[0] eq '-slbheader') { shift @ARGV; read_includes(); gen_slbheader(); } elsif ($ARGV[0] eq '-tinyslbsource') { shift @ARGV; read_includes(); gen_tinyslbsource(); } elsif ($ARGV[0] eq '-slbsource') { shift @ARGV; read_includes(); gen_slbsource(); } elsif ($ARGV[0] eq '-help' || $ARGV[0] eq '--help') { shift @ARGV; usage(); exit(0); } elsif ($ARGV[0] =~ /^-/) { die "$me: unknown option $ARGV[0]" } else { print_header(); read_includes(); gen_protos(); } aranym-1.1.0/tools/dist-cygwin.sh0000775000175000017500000001252013454637622015142 0ustar joyjoy#!/bin/sh datefile=version_date.h versfile=src/include/version.h log=build-cygwin.log if ! test -f $datefile; then echo "$0: $datefile missing" >&2 exit 1 fi if ! test -f $versfile; then echo "$0: $versfile missing" >&2 exit 1 fi # # configure args for all configurations # CONFIGURE_ARGS="--prefix=/usr --enable-usbhost" major=`sed -n -e 's/#define[ \t]*VER_MAJOR[ \t]*\([0-9]*\)/\1/p' $versfile` minor=`sed -n -e 's/#define[ \t]*VER_MINOR[ \t]*\([0-9]*\)/\1/p' $versfile` micro=`sed -n -e 's/#define[ \t]*VER_MICRO[ \t]*\([0-9]*\)/\1/p' $versfile` PROJECT_LOWER=aranym VERSION=$major.$minor.$micro archive_tag=-cygwin-i386 ATAG=${VERSION}${archive_tag} # # recent version of cygwin have the mingw libraries installed # in a sys-rooted cross-compiler environment # if test -d /usr/i686-w64-mingw32/sys-root/mingw; then MINGW_ROOT=/usr/i686-w64-mingw32/sys-root/mingw CONFIGURE_ARGS="$CONFIGURE_ARGS --with-sdl-prefix=$MINGW_ROOT --with-sdl2-prefix=$MINGW_ROOT" fi if test `uname -m` = x86_64; then CONFIGURE_ARGS="$CONFIGURE_ARGS --host=i686-pc-cygwin" # that currently does not work: # we build a 32-bit binary, but the installation process # below would copy cygwin dlls from the 64-bit environment echo "building 32-bit distribution in 64-bit environment currently not supported" >&2 echo "install cygwin using setup-x86.exe and try again" >&2 exit 1 fi DATE=`sed -n -e 's/#define[ \t]*VERSION_DATE[ \t]*"\([^"]*\)"/\1/p' $datefile` echo VERSION=$VERSION echo DATE=$DATE rm -f $log trap 'rm -f $log' 1 2 3 15 function build() { local sdloption case $SDL in 1) sdloption=--disable-sdl2 ;; 2) sdloption=--enable-sdl2 ;; *) exit 1 ;; esac echo "configuring aranym-mmu..." ./configure $CONFIGURE_ARGS $sdloption --enable-fullmmu --enable-lilo >> $log 2>&1 || { echo "configuring aranym-mmu failed; see $log for details" >&2 exit 1 } echo "building aranym-mmu..." make clean make >> $log 2>&1 || { echo "building aranym-mmu failed; see $log for details" >&2 exit 1 } strip aranym.exe || exit 1 mv aranym.exe aranym-mmu.exe echo "configuring aranym-jit..." ./configure $CONFIGURE_ARGS $sdloption --enable-jit-compiler --enable-jit-fpu >> $log 2>&1 || { echo "configuring aranym-mmu failed; see $log for details" >&2 exit 1 } echo "building aranym-jit..." make clean make >> $log 2>&1 || { echo "building aranym-jit failed; see $log for details" >&2 exit 1 } strip aranym.exe || exit 1 mv aranym.exe aranym-jit.exe echo "configuring aranym..." ./configure $CONFIGURE_ARGS $sdloption >> $log 2>&1 || { echo "configuring aranym failed; see $log for details" >&2 exit 1 } echo "building aranym..." make clean make >> $log 2>&1 || { echo "building aranym failed; see $log for details" >&2 exit 1 } strip aranym.exe || exit 1 mv aranym.exe aranym-dflt.exe make clean mv aranym-dflt.exe aranym.exe } function mkdist() { local sdlname local sdldef case $SDL in 1) sdlname=-sdl1 ;; 2) sdlname=-sdl2 ;; *) exit 1 ;; esac sdldef=-DSDL=${sdlname} tmpdir="${TMPDIR:-/tmp}" distdir="$tmpdir/${PROJECT_LOWER}-$VERSION${sdlname}" mkdir -p "$distdir/doc" "$distdir/aranym" || exit 1 cp -a COPYING "$distdir/COPYING.txt" || exit 1 sed -e "s|@VERSION@|$VERSION|g" -e "s|@DATE@|$DATE|g" README-cygwin.in > "$distdir/README.txt" || exit 1 for f in AUTHORS BUGS README ChangeLog FAQ INSTALL NEWS TODO; do cp -a $f "$distdir/doc/$f.txt" || exit 1 done for f in config; do cp -a doc/$f "$distdir/doc/$f.txt" || exit 1 done for f in logo.bmp wm_icon.bmp; do cp -a data/$f "$distdir/aranym/$f" || exit 1 done (cd "$distdir" for f in doc/* *.txt; do cat $f | tr -d '\r' | sed -e 's/$/\r/' > $$.tmp touch -r $f $$.tmp mv $$.tmp $f done ) MINGW_DLLS="SDL.dll SDL_image.dll SDL2.dll SDL2_image.dll libgcc_s_sjlj-1.dll libwinpthread-1.dll iconv.dll" rm -f $MINGW_DLLS for dll in $MINGW_DLLS; do cp -a "$MINGW_ROOT/bin/$dll" .; done unset dlls declare -a dlls save_IFS=$IFS IFS=' ' for f in aranym.exe aranym-jit.exe aranym-mmu.exe; do cp -a "$f" "$distdir" || exit 1 dlls+=(`./ldd.exe --path $f`) done IFS=$save_IFS unset copydlls declare -a copydlls for dll in "${dlls[@]}"; do lower="`echo $dll | tr '[A-Z]' '[a-z]'`" case $lower in */system32/* | */syswow64/* ) continue ;; *) ;; esac copydlls+=("$dll") done for f in "${copydlls[@]}"; do cp -a "$f" "$distdir" || exit 1 done rm -f $MINGW_DLLS ARCHIVE="${PROJECT_LOWER}-${ATAG}${sdlname}.zip" SETUP_EXE="${PROJECT_LOWER}-${ATAG}${sdlname}-setup.exe" ( cd "$tmpdir" zip -r "$ARCHIVE" ${PROJECT_LOWER}-$VERSION${sdlname} ) || exit 1 echo "$tmpdir/$ARCHIVE ready for release" nsis=`cygpath "$PROGRAMFILES"`/NSIS/makensis.exe if test -x "$nsis"; then cwd=`pwd` cd "$distdir" echo "creating Windows installer" find . -type d | sed -e 's|^./\(.*\)$|${CreateDirectory} "$INSTDIR\\\1"|' -e '/^\.$/d' | tr '/' '\\' > ../aranym.files find . -type f | sed -e 's|^./\(.*\)$|${File} "\1"|' | tr '/' '\\' >> ../aranym.files "$nsis" -V2 -NOCD -DVER_MAJOR=$major -DVER_MINOR=$minor -DVER_MICRO=$micro $sdldef -DOUTFILE=../${SETUP_EXE} `cygpath -m $cwd/tools/aranym.nsi` || exit 1 rm -f ../aranym.files cd $cwd echo "$tmpdir/${SETUP_EXE} ready for release" fi } gcc -O2 -mwin32 tools/ldd.c -o ldd.exe || exit 1 SDL=1 build mkdist SDL=2 build mkdist rm -f $log ldd.exe aranym-1.1.0/tools/build-cygwin.txt0000664000175000017500000000511013454637622015475 0ustar joyjoyARAnyM compilation under Cygwin (c) 2003-2009 Xavier Joubert for the ARAnyM team Building ARAnyM under Cygwin is now almost identical to unix/linux. There are just a few things to keep in mind. - Compilation is accomplished using the Cygwin linux-like environment (http://www.cygwin.com/). You should use the 32 bit version (setup-x86.exe), even when building on a 64-bit host. - Although the resulting executable uses cygwin's posix layer, the MinGW version of the SDL libraries will be used. Simply create a directory where everything will be contained. Untar ARAnyM sources in this directory. You can also pull sources from GIT (see https://aranym.github.io/development.html for details on how to do this). Cygwin packages that should be installed : - gcc-core - gcc-g++ - mingw64-i686-SDL and/or mingw64-i686-SDL2 - make - makedepend - git, autoconf and automake (if you want to use GIT version, or if you modify configure.ac) - cygutils (for the dos2unix tool) If you want to compile ARAnyM with --enable-nfjpeg (NatFeat jpeg decoder), you will also need mingw64-i686-SDL_image, mingw64-i686-SDL2_image, or libjpeg8. Now you can configure the build: - If you got the source code from Git then type ./autogen.sh && make Any parameter given to autogen.sh will be forwarded to ARAnyM's configure script, so you can run "./autogen.sh --enable-fullmmu" if you want to build with MMU support. - If you have a source snapshot or proper ARAnyM source code release then type ./configure && make ./configure --help shows you all the configuration options. You'll get your binary after a few minutes (depending on your system). If you get errors about "\r", please run "dos2unix configure" to convert line endings from DOS style to unix style. If you happen to modify some sources, you can simply run "make" in the correct directory. Please note that configure options will be ignored in this case ! If you want to re-configure, just do a "make clean", then run configure again. If you modify configure.ac, you have to run autogen.sh again. make or configure won't do that for you. Don't forget to give any configure options you need ! If you want a clean rebuild from original sources, simply "make distclean" and run configure again. You may have to copy the MinGW SDL shared library into some directory of your PATH before running the executable. This can usually be found as /usr/i686-w64-mingw32/sys-root/mingw/bin/SDL.dll Questions about building ARAnyM should go to the developper mailing list. See https://aranym.github.io/development.html for informations on how to subscribe to this list. aranym-1.1.0/tools/aranym.nsi0000664000175000017500000002474613454637622014361 0ustar joyjoy; ARAnyM Setup Script for NSIS ; !searchreplace SCRIPTDIR "${__FILE__}" "aranym.nsi" "" !addincludedir "${SCRIPTDIR}" !addincludedir ".." ; !define VER_MAJOR 1 ; !define VER_MINOR 0 ; !define VER_MICRO 2 !ifndef VER_MAJOR !error "VER_MAJOR is not defined" !endif !define VER_BUILD 0 !define VERSION ${VER_MAJOR}.${VER_MINOR}.${VER_MICRO} !define NAME "ARAnyM" !define NAMESUFFIX "" ;-------------------------------- ;Configuration ; The name of the installer Name "${NAME}" Caption "${NAME} ${VERSION}${NAMESUFFIX} Setup" !ifndef OUTFILE !define OUTFILE "..\aranym-${VERSION}${SDL}-setup.exe" !endif OutFile "${OUTFILE}" SetCompressor /SOLID lzma InstType "Full" InstType "Lite" InstType "Minimal" ;The root registry to write to !define REG_ROOT "HKLM" ;The registry path to write to !define REG_APP_PATH "SOFTWARE\${NAME}" !define REG_UNINST_KEY "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" ; The default installation directory InstallDir $PROGRAMFILES\${NAME} InstallDirRegKey "${REG_ROOT}" "${REG_APP_PATH}" "InstallLocation" ; Request application privileges for Windows Vista RequestExecutionLevel admin ;-------------------------------- ;Header Files !include "MUI2.nsh" !include "Sections.nsh" !include "UninstallLog.nsh" !include "TextFunc.nsh" !include "Sections.nsh" !include "LogicLib.nsh" !include "Memento.nsh" !include "WordFunc.nsh" ;-------------------------------- ;Version information VIProductVersion ${VER_MAJOR}.${VER_MINOR}.${VER_MICRO}.${VER_BUILD} VIAddVersionKey "ProductName" "${NAME}" VIAddVersionKey "Comments" "Atari Running on Any Machine" VIAddVersionKey "ProductVersion" "${VER_MAJOR}.${VER_MINOR}.${VER_MICRO}.${VER_BUILD}" VIAddVersionKey "FileVersion" "${VERSION}" VIAddVersionKey "FileDescription" "${NAME} Setup" VIAddVersionKey "LegalCopyright" "Copyright (C) 2000-2015 ${NAME} developer team" ;-------------------------------- ;Configuration ;Memento Settings !define MEMENTO_REGISTRY_ROOT HKLM !define MEMENTO_REGISTRY_KEY "${REG_UNINST_KEY}" ;Interface Settings !define MUI_ABORTWARNING !define MUI_HEADERIMAGE !define MUI_WELCOMEFINISHPAGE_BITMAP "aranym\wm_icon.bmp" !define MUI_COMPONENTSPAGE_SMALLDESC ;-------------------------------- ;Pages !define MUI_WELCOMEPAGE_TITLE "Welcome to the ${NAME} ${VERSION} Setup Wizard" !define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of ${NAME} (Atari Running on Any Machine) ${VERSION}, a software virtual machine (similar to VirtualBox or Bochs) designed and developed for running 32-bit Atari ST/TT/Falcon operating systems (TOS, FreeMiNT, MagiC and Linux-m68k) and TOS/GEM applications on any kind of hardware.$\r$\n$\r$\n$_CLICK" !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "COPYING.txt" !ifdef VER_MAJOR Page custom PageReinstall PageLeaveReinstall !endif !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES ;-------------------------------- ;Languages !insertmacro MUI_LANGUAGE "English" ;-------------------------------- ;Installer Sections Function ".onInit" ${If} ${Silent} SetAutoClose true ${EndIf} ${MementoSectionRestore} FunctionEnd Function ".onInstSuccess" ${MementoSectionSave} FunctionEnd !ifdef VER_MAJOR Var ReinstallPageCheck Function PageReinstall ReadRegStr $R0 "${REG_ROOT}" "${REG_APP_PATH}" "InstallLocation" ReadRegStr $R1 "${REG_ROOT}" "${REG_UNINST_KEY}" "UninstallString" ${IfThen} "$R0$R1" == "" ${|} Abort ${|} StrCpy $R4 "older" ReadRegDWORD $R0 "${REG_ROOT}" "${REG_APP_PATH}" "VersionMajor" ReadRegDWORD $R1 "${REG_ROOT}" "${REG_APP_PATH}" "VersionMinor" ReadRegDWORD $R2 "${REG_ROOT}" "${REG_APP_PATH}" "VersionRevision" ReadRegDWORD $R3 "${REG_ROOT}" "${REG_APP_PATH}" "VersionBuild" ${IfThen} $R0 = 0 ${|} StrCpy $R4 "unknown" ${|} ; Anonymous builds have no version number StrCpy $R0 $R0.$R1.$R2.$R3 ${VersionCompare} ${VER_MAJOR}.${VER_MINOR}.${VER_MICRO}.${VER_BUILD} $R0 $R0 ${If} $R0 == 0 StrCpy $R1 "${NAME} ${VERSION} is already installed. Select the operation you want to perform and click Next to continue." StrCpy $R2 "Add/Reinstall components" StrCpy $R3 "Uninstall ${NAME}" !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform." StrCpy $R0 "2" ${ElseIf} $R0 == 1 StrCpy $R1 "An $R4 version of ${NAME} is installed on your system. It's recommended that you uninstall the current version before installing. Select the operation you want to perform and click Next to continue." StrCpy $R2 "Uninstall before installing" StrCpy $R3 "Do not uninstall" !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install ${NAME}." StrCpy $R0 "1" ${ElseIf} $R0 == 2 StrCpy $R1 "A newer version of ${NAME} is already installed! It is not recommended that you install an older version. If you really want to install this older version, it's better to uninstall the current version first. Select the operation you want to perform and click Next to continue." StrCpy $R2 "Uninstall before installing" StrCpy $R3 "Do not uninstall" !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install ${NAME}." StrCpy $R0 "1" ${Else} Abort ${EndIf} nsDialogs::Create 1018 Pop $R4 ${NSD_CreateLabel} 0 0 100% 24u $R1 Pop $R1 ${NSD_CreateRadioButton} 30u 50u -30u 8u $R2 Pop $R2 ${NSD_OnClick} $R2 PageReinstallUpdateSelection ${NSD_CreateRadioButton} 30u 70u -30u 8u $R3 Pop $R3 ${NSD_OnClick} $R3 PageReinstallUpdateSelection ${If} $ReinstallPageCheck != 2 SendMessage $R2 ${BM_SETCHECK} ${BST_CHECKED} 0 ${Else} SendMessage $R3 ${BM_SETCHECK} ${BST_CHECKED} 0 ${EndIf} ${NSD_SetFocus} $R2 nsDialogs::Show FunctionEnd Function PageReinstallUpdateSelection Pop $R1 ${NSD_GetState} $R2 $R1 ${If} $R1 == ${BST_CHECKED} StrCpy $ReinstallPageCheck 1 ${Else} StrCpy $ReinstallPageCheck 2 ${EndIf} FunctionEnd Function PageLeaveReinstall ${NSD_GetState} $R2 $R1 StrCmp $R0 "1" 0 +2 ; Existing install is not the same version? StrCmp $R1 "1" reinst_uninstall reinst_done StrCmp $R1 "1" reinst_done ; Same version, skip to add/reinstall components? reinst_uninstall: ReadRegStr $R1 "${REG_ROOT}" "${REG_UNINST_KEY}" "UninstallString" ;Run uninstaller HideWindow ClearErrors ExecWait '$R1 _?=$INSTDIR' $0 BringToFront ${IfThen} ${Errors} ${|} StrCpy $0 2 ${|} ; ExecWait failed, set fake exit code ${If} $0 <> 0 ${OrIf} ${FileExists} "$INSTDIR\aranym.exe" ${If} $0 = 1 ; User aborted uninstaller? StrCmp $R0 "2" 0 +2 ; Is the existing install the same version? Quit ; ...yes, already installed, we are done Abort ${EndIf} MessageBox MB_ICONEXCLAMATION "Unable to uninstall!" Abort ${Else} StrCpy $0 $R1 1 ${IfThen} $0 == '"' ${|} StrCpy $R1 $R1 -1 1 ${|} ; Strip quotes from UninstallString Delete $R1 RMDir $INSTDIR ${EndIf} reinst_done: FunctionEnd !endif # VER_MAJOR ; The stuff to install ${MementoSection} "${NAME} Core Files (required)" SecCore SectionIn 1 2 ${SetOutPath} $INSTDIR !include "aranym.files" ${MementoSectionEnd} !ifndef NO_STARTMENUSHORTCUTS !define STARTMENU ${MementoSection} "Start Menu Shortcuts" SecMenuShortcuts DetailPrint "Installing Start Menu Shortcuts..." SectionIn 1 2 StrCpy $0 "$SMPROGRAMS\${NAME}" ${CreateDirectory} "$0" ${CreateShortcut} "$0\${NAME}${NAMESUFFIX}.lnk" "$INSTDIR\aranym.exe" "" "" "" "${NAME}" ${CreateShortcut} "$0\${NAME}${NAMESUFFIX} - MMU.lnk" "$INSTDIR\aranym-mmu.exe" "" "" "" "${NAME} MMU" ${CreateShortcut} "$0\${NAME}${NAMESUFFIX} - JIT.lnk" "$INSTDIR\aranym-jit.exe" "" "" "" "${NAME} JIT" ${MementoSectionEnd} !endif !ifndef NO_DESKTOPSHORTCUTS ${MementoSection} "Desktop Shortcuts" SecDesktopShortcuts DetailPrint "Installing Desktop Shortcuts..." SectionIn 1 2 ${CreateShortcut} "$DESKTOP\${NAME}${NAMESUFFIX}.lnk" "$INSTDIR\aranym.exe" "" "" "" "${NAME}" ${MementoSectionEnd} !endif ${MementoSectionDone} Section -post ;Write the installation path into the registry ${WriteRegExpandStr} "${REG_ROOT}" "${REG_APP_PATH}" "InstallLocation" "$INSTDIR" !ifdef VER_MAJOR ${WriteRegStr} "${REG_ROOT}" "${REG_APP_PATH}" "VersionMajor" "${VER_MAJOR}" ${WriteRegStr} "${REG_ROOT}" "${REG_APP_PATH}" "VersionMinor" "${VER_MINOR}" ${WriteRegStr} "${REG_ROOT}" "${REG_APP_PATH}" "VersionRevision" "${VER_MICRO}" ${WriteRegStr} "${REG_ROOT}" "${REG_APP_PATH}" "VersionBuild" "${VER_BUILD}" !endif ;Write the Uninstall information into the registry ${WriteRegExpandStr} "${REG_ROOT}" "${REG_UNINST_KEY}" "UninstallString" "$\"$INSTDIR\uninstall-aranym.exe$\"" ${WriteRegExpandStr} "${REG_ROOT}" "${REG_UNINST_KEY}" "QuietUninstallString" "$\"$INSTDIR\uninstall-aranym.exe$\" /S" ${WriteRegExpandStr} "${REG_ROOT}" "${REG_UNINST_KEY}" "InstallLocation" "$INSTDIR" ${WriteRegStr} "${REG_ROOT}" "${REG_UNINST_KEY}" "DisplayName" "${NAME}${NAMESUFFIX}" ${WriteRegStr} "${REG_ROOT}" "${REG_UNINST_KEY}" "DisplayIcon" "$INSTDIR\aranym.exe,0" ${WriteRegStr} "${REG_ROOT}" "${REG_UNINST_KEY}" "DisplayVersion" "${VERSION}" ${WriteRegStr} "${REG_ROOT}" "${REG_UNINST_KEY}" "Publisher" "ARAnyM developer team" ${WriteRegStr} "${REG_ROOT}" "${REG_UNINST_KEY}" "URLInfoAbout" "http://aranym.sourceforge.net/" ${WriteRegStr} "${REG_ROOT}" "${REG_UNINST_KEY}" "HelpLink" "http://aranym.sourceforge.net" ${WriteRegDWORD} "${REG_ROOT}" "${REG_UNINST_KEY}" "NoModify" "1" ${WriteRegDWORD} "${REG_ROOT}" "${REG_UNINST_KEY}" "NoRepair" "1" ${WriteUninstaller} "$INSTDIR\uninstall-aranym.exe" SectionEnd ;-------------------------------- ;Descriptions !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SecCore} "The core files required to use ${NAME} (compiler etc.)" !insertmacro MUI_DESCRIPTION_TEXT ${SecMenuShortcuts} "Adds icons to your start menu for easy access" !insertmacro MUI_DESCRIPTION_TEXT ${SecDesktopShortcuts} "Adds icons to your desktop for easy access" !insertmacro MUI_FUNCTION_DESCRIPTION_END ;-------------------------------- ; Uninstaller ;-------------------------------- Function "un.onInit" ${If} ${Silent} SetAutoClose true ${EndIf} Call un.InstallLogInit FunctionEnd Section "Uninstall" ${IfNot} ${FileExists} "$INSTDIR\aranym.exe" ${Unless} ${Cmd} `MessageBox MB_YESNO "It does not appear that ${NAME} is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?" IDYES` Abort "Uninstall aborted by user" ${EndUnless} ${EndIf} Call un.InstallLog SectionEnd aranym-1.1.0/tools/arabridge0000775000175000017500000001075013454637622014213 0ustar joyjoy#!/bin/bash # ARAnyM - bridging network # STanda (c) 2004 # # description: TUN/TAP driver using transparent bridge networking setup # # dependencies: tun module, tunctl (uml-utilities), # bridge module, brctl (bridge-utils) # # processname: arabridge # chkconfig: - 62 18 # source function library # . /etc/rc.d/init.d/functions # CHANGE THIS TO YOUR 'id' USER=joy TAPS=tap0 BRIDGE=br0 NIF=eth0 for tool in ifconfig route tunctl brctl modprobe; do eval $tool= for dir in /sbin /usr/sbin /bin /usr/bin; do if test -x "$dir/$tool"; then eval $tool="$dir/$tool" break fi done eval test \"\$$tool\" = \"\" && { echo "$tool not found" >&2; exit 1; } done LOCK=/var/lock/subsys/arabridge # make sure grep in ifconfig output works LC_ALL=C export LC_ALL # defaultroute's nif DR_NIF=$($route -n 2>/dev/null | awk '/^0\.0\.0\.0/ {print $8}') DEFGW=$($route -n 2>/dev/null | awk '/^0\.0\.0\.0/ {print $2}') # do we have the default route NIF? DEF_ROUTE=0 if [ -n "$DR_NIF" -a "$NIF" = "$DR_NIF" -a -n "$DEFGW" ]; then DEF_ROUTE=1 echo "Playing with default route at $DR_NIF with gateway to $DEFGW" fi success() { echo "[OK]" } failure() { echo "[FAILED]" } status() { echo "arabridge is $1" } start_tap() { TAP="$1" $ifconfig $TAP 1>/dev/null 2>/dev/null if [ $? -ne 0 ]; then echo "Creating device $TAP..." $tunctl -t $TAP -u $USER fi } case "$1" in start) echo -n "Starting TUN/TAP bridging: " # save the NIF name echo $NIF >$LOCK IP=$($ifconfig $NIF | sed -n 's/^.*\(inet \|inet addr:\)[^0-9]*\([0-9][.0-9]*\).*$/\2/p') BCAST=$($ifconfig $NIF | sed -n 's/^.*\(broadcast \|Bcast:\)[^0-9]*\([0-9][.0-9]*\).*$/\2/p') NETMASK=$($ifconfig $NIF | sed -n 's/^.*\(netmask \|Mask:\)[^0-9]*\([0-9][.0-9]*\).*$/\2/p') echo "NIF=$NIF IP=$IP, BCAST=$BCAST, NETMASK=$NETMASK, DEFGW=$DEFGW" $modprobe tun $modprobe bridge # echo "Changing owner of /dev/net/tun..." # [ -c /dev/net/tun ] && chown $USER /dev/net/tun echo "Setting up bridge $BRIDGE..." $brctl addbr $BRIDGE $brctl stp $BRIDGE off $brctl setfd $BRIDGE 1 $brctl sethello $BRIDGE 1 # add NIF to the bridge $ifconfig $NIF 0.0.0.0 $brctl addif $BRIDGE $NIF if [ $? -ne 0 ]; then echo -n "... ERROR: wrong NIF type"; failure; echo $brctl delbr $BRIDGE rm -f $LOCK $ifconfig $NIF $IP exit 1 fi echo # add all the tap devices for tap in $TAPS; do start_tap $tap $brctl addif $BRIDGE $tap $ifconfig $tap 0.0.0.0 promisc up done # setup the bridge parameters $ifconfig $BRIDGE $IP netmask $NETMASK broadcast $BCAST # ifconfig needs to be called twice here after some delay # I don't really know what is going on :( # if not slept enough then the IP, NETMASK and BCAST setting # are cleared 8-| sleep 1 $ifconfig $NIF 0.0.0.0 promisc up # bring the bridge up $ifconfig $BRIDGE $IP netmask $NETMASK broadcast $BCAST up if [ $DEF_ROUTE -eq 0 ]; then echo "adding normal route" $route add default dev $BRIDGE else echo "adding gateway route" $route add default dev $BRIDGE gw $DEFGW fi echo success echo ;; stop) echo -n "Shutting down arabridge: " NIF=$(cat $LOCK 2>/dev/null) if [ -z "$NIF" ]; then echo -n "... already stopped"; success; echo; exit 0 fi echo IP=$($ifconfig $BRIDGE 2>/dev/null| sed -n 's/^.*\(inet \|inet addr:\)[^0-9]*\([0-9][.0-9]*\).*$/\2/p') BCAST=$($ifconfig $BRIDGE 2>/dev/null| sed -n 's/^.*\(broadcast \|Bcast:\)[^0-9]*\([0-9][.0-9]*\).*$/\2/p') NETMASK=$($ifconfig $BRIDGE 2>/dev/null| sed -n 's/^.*\(netmask \|Mask:\)[^0-9]*\([0-9][.0-9]*\).*$/\2/p') # if not slept long enough then the IP, NETMASK and BCAST setting # are not fetched properly 8-| sleep 1 echo "NIF=$NIF IP=$IP, BCAST=$BCAST, NETMASK=$NETMASK, DEFGW=$DEFGW" # bring the previous network nif back $ifconfig $NIF $IP netmask $NETMASK broadcast $BCAST up if [ $DEF_ROUTE -eq 0 ]; then $route add default dev $NIF else $route add default dev $NIF gw $DEFGW fi # get the bridge down $ifconfig $BRIDGE down for tap in $TAPS; do $brctl delif $BRIDGE $tap $ifconfig $tap down echo $tunctl -d $tap done $brctl delbr $BRIDGE rm -f $LOCK echo ;; restart) $0 stop $0 start ;; status) if $brctl show $BRIDGE 2>/dev/null; then NIF=$(cat $LOCK 2>/dev/null) if [ -z "$NIF" ]; then status up else status "up on $NIF" fi else status down fi ;; *) echo "Usage: arabridge {start|stop|restart|status}" exit 1 esac exit 0 aranym-1.1.0/tools/UninstallLog.nsh0000664000175000017500000001103713454637622015471 0ustar joyjoy!ifndef REG_ROOT !error "REG_ROOT is not defined" !endif !ifndef REG_APP_PATH !error "REG_APP_PATH is not defined" !endif ;Set the name of the uninstall log !define UninstLog "uninstall.log" Var UninstLog !include "TextFunc.nsh" !include "LogicLib.nsh" !include "WordFunc.nsh" ;Uninstall log file missing. LangString UninstLogMissing ${LANG_ENGLISH} "${UninstLog} not found!$\r$\nUninstallation cannot proceed!" Section -openlogfile CreateDirectory "$INSTDIR" ${IfNot} ${FileExists} "$INSTDIR\${UninstLog}" FileOpen $UninstLog "$INSTDIR\${UninstLog}" w ${Else} SetFileAttributes "$INSTDIR\${UninstLog}" NORMAL FileOpen $UninstLog "$INSTDIR\${UninstLog}" a FileSeek $UninstLog 0 END ${EndIf} SectionEnd ;AddItem macro !macro AddItem type Path FileWrite $UninstLog "${type} ${Path}$\r$\n" !macroend !define AddItem "!insertmacro AddItem" ;File macro !macro File FileName FileWrite $UninstLog "FIL $OUTDIR\${FileName}$\r$\n" File "/oname=${FileName}" "${FileName}" !macroend !define File "!insertmacro File" ;CreateShortcut macro !macro CreateShortcut FilePath FilePointer Parameters Icon IconIndex Description Push $0 ${GetParent} "${FilePath}" $0 ${IfNot} ${FileExists} "$0\*" FileWrite $UninstLog "DIR $0$\r$\n" ${EndIf} FileWrite $UninstLog "FIL ${FilePath}$\r$\n" CreateShortcut "${FilePath}" "${FilePointer}" "${Parameters}" "${Icon}" "${IconIndex}" "" "" "${Description}" Pop $0 !macroend !define CreateShortcut "!insertmacro CreateShortcut" ;CreateDirectory macro !macro CreateDirectory Path CreateDirectory "${Path}" FileWrite $UninstLog "DIR ${Path}$\r$\n" !macroend !define CreateDirectory "!insertmacro CreateDirectory" ;SetOutPath macro !macro SetOutPath Path SetOutPath "${Path}" FileWrite $UninstLog "DIR ${Path}$\r$\n" !macroend !define SetOutPath "!insertmacro SetOutPath" ;WriteUninstaller macro !macro WriteUninstaller Path WriteUninstaller "${Path}" FileWrite $UninstLog "FIL ${Path}$\r$\n" !macroend !define WriteUninstaller "!insertmacro WriteUninstaller" ;WriteRegStr macro !macro WriteRegStr RegRoot UnInstallPath Key Value FileWrite $UninstLog "KEY ${RegRoot} ${UnInstallPath}\${Key}$\r$\n" WriteRegStr "${RegRoot}" "${UnInstallPath}" "${Key}" "${Value}" !macroend !define WriteRegStr "!insertmacro WriteRegStr" ;WriteRegExpandStr macro !macro WriteRegExpandStr RegRoot UnInstallPath Key Value FileWrite $UninstLog "KEY ${RegRoot} ${UnInstallPath}\${Key}$\r$\n" WriteRegExpandStr "${RegRoot}" "${UnInstallPath}" "${Key}" "${Value}" !macroend !define WriteRegExpandStr "!insertmacro WriteRegExpandStr" ;WriteRegDWORD macro !macro WriteRegDWORD RegRoot UnInstallPath Key Value FileWrite $UninstLog "KEY ${RegRoot} ${UnInstallPath}\${Key}$\r$\n" WriteRegDWORD "${RegRoot}" "${UnInstallPath}" "${Key}" "${Value}" !macroend !define WriteRegDWORD "!insertmacro WriteRegDWORD" Function un.InstallLogInit ClearErrors ReadRegStr $INSTDIR "${REG_ROOT}" "${REG_APP_PATH}" "InstallLocation" ${If} $INSTDIR == "" StrCpy $INSTDIR $EXEDIR ${EndIf} ;Can't uninstall if uninstall log is missing! ${IfNot} ${FileExists} "$INSTDIR\${UninstLog}" MessageBox MB_OK|MB_ICONSTOP "$(UninstLogMissing)" Abort ${EndIf} FunctionEnd Function un.InstallLog Push $R0 Push $R1 Push $R2 Push $R3 SetFileAttributes "$INSTDIR\${UninstLog}" NORMAL FileOpen $UninstLog "$INSTDIR\${UninstLog}" r StrCpy $R1 0 GetLineCount: ClearErrors FileRead $UninstLog $R0 IfErrors GetLineEnd IntOp $R1 $R1 + 1 ${TrimNewLines} $R0 $R0 ${WordFind} $R0 " " "+1{" $R2 ${WordFind} $R0 " " "+1}" $R0 Push $R0 Push $R2 Goto GetLineCount GetLineEnd: ${While} $R1 > 0 Pop $R2 Pop $R0 ${Select} $R2 ${Case} "DIR" RMDir $R0 ${Case} "FIL" Delete $R0 ${Case} "KEY" ${WordFind} $R0 " " "+1{" $R3 ${WordFind} $R0 " " "+1}" $R0 ${Select} $R3 ${Case} "HKCR" DeleteRegKey HKCR $R0 ${Case} "HKLM" DeleteRegKey HKLM $R0 ${Case} "HKCU" DeleteRegKey HKCU $R0 ${Case} "HKU" DeleteRegKey HKU $R0 ${Case} "HKCC" DeleteRegKey HKCC $R0 ${EndSelect} ${EndSelect} IntOp $R1 $R1 - 1 ${EndWhile} FileClose $UninstLog Delete "$INSTDIR\${UninstLog}" RMDir "$INSTDIR" Pop $R3 Pop $R2 Pop $R1 Pop $R0 ;Remove registry keys DeleteRegKey ${REG_ROOT} "${REG_APP_PATH}" DeleteRegKey ${REG_ROOT} "${REG_UNINST_KEY}" FunctionEnd aranym-1.1.0/tools/SDL2-2.0.3.win32.patch0000664000175000017500000000475013454637622015474 0ustar joyjoy--- i686-w64-mingw32/include/SDL2/SDL_platform.h.orig 2014-03-16 03:33:17.000000000 +0100 +++ i686-w64-mingw32/include/SDL2/SDL_platform.h 2014-05-28 08:30:45.000000000 +0200 @@ -114,10 +114,10 @@ #define __SOLARIS__ 1 #endif -#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) +#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) /* Try to find out if we're compiling for WinRT or non-WinRT */ /* If _USING_V110_SDK71_ is defined it means we are using the v110_xp or v120_xp toolset. */ -#if defined(__MINGW32__) || (defined(_MSC_VER) && (_MSC_VER >= 1700) && !_USING_V110_SDK71_) /* _MSC_VER==1700 for MSVC 2012 */ +#if (defined(_MSC_VER) && (_MSC_VER >= 1700) && !_USING_V110_SDK71_) /* _MSC_VER==1700 for MSVC 2012 */ #include #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #undef __WINDOWS__ --- i686-w64-mingw32/include/SDL2/SDL_config.h.orig 2014-07-12 10:50:40.004036200 +0200 +++ i686-w64-mingw32/include/SDL2/SDL_config.h 2014-07-12 10:51:10.158889200 +0200 @@ -130,7 +130,7 @@ #define HAVE_SIN 1 #define HAVE_SINF 1 #define HAVE_SQRT 1 -#if _MSC_VER >= 1800 +#if defined(_MSC_VER) && _MSC_VER >= 1800 #define HAVE_STRTOLL 1 #define HAVE_VSSCANF 1 #define HAVE_COPYSIGN 1 --- x86_64-w64-mingw32/include/SDL2/SDL_platform.h.orig 2014-03-16 03:33:17.000000000 +0100 +++ x86_64-w64-mingw32/include/SDL2/SDL_platform.h 2014-05-28 08:30:45.000000000 +0200 @@ -114,10 +114,10 @@ #define __SOLARIS__ 1 #endif -#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) +#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) /* Try to find out if we're compiling for WinRT or non-WinRT */ /* If _USING_V110_SDK71_ is defined it means we are using the v110_xp or v120_xp toolset. */ -#if defined(__MINGW32__) || (defined(_MSC_VER) && (_MSC_VER >= 1700) && !_USING_V110_SDK71_) /* _MSC_VER==1700 for MSVC 2012 */ +#if (defined(_MSC_VER) && (_MSC_VER >= 1700) && !_USING_V110_SDK71_) /* _MSC_VER==1700 for MSVC 2012 */ #include #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #undef __WINDOWS__ --- x86_64-w64-mingw32/include/SDL2/SDL_config.h.orig 2014-07-12 10:50:40.004036200 +0200 +++ x86_64-w64-mingw32/include/SDL2/SDL_config.h 2014-07-12 10:51:10.158889200 +0200 @@ -130,7 +130,7 @@ #define HAVE_SIN 1 #define HAVE_SINF 1 #define HAVE_SQRT 1 -#if _MSC_VER >= 1800 +#if defined(_MSC_VER) && _MSC_VER >= 1800 #define HAVE_STRTOLL 1 #define HAVE_VSSCANF 1 #define HAVE_COPYSIGN 1 aranym-1.1.0/tools/LibcWrapGenerator.pl0000775000175000017500000002455213454637622016264 0ustar joyjoy#!/usr/bin/env perl # # Copyright (C) 2011 Jan Niklas Hasse # Copyright (C) 2013 Upstairs Laboratories Inc. # Copyright (C) 2017 Thorsten Otto # # This library is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as # published by the Free Software Foundation; either version 2.1 of # the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Authors: # Jan Niklas Hasse # Tristan Van Berkom # Thorsten Otto # require 5.008; use strict; use warnings; use Getopt::Long; use Pod::Usage; use Config; use Data::Dumper; my $me = 'LibcWrapGenerator.pl'; my $VERSION = "1.0"; my $DEFAULT_TARGET = "2.11"; my %args = ( 'libdir' => undef, 'output' => "libcwrap.h", 'target' => $DEFAULT_TARGET, 'man' => 0, 'help' => 0, 'version' => 0, ); package MyParser; use vars qw(@ISA @EXPORT %ESCAPES $VERSION); @ISA = qw(Pod::Usage); sub cmd_x { my ($self, $attrs, $text) = @_; if ($text eq 'me') { return $me; } if ($text eq 'default_target') { return $DEFAULT_TARGET; } if ($text eq 'output') { return $args{'output'}; } return ''; } package main; # All symbols, containing the newest possible version before 'minimumVersion' if possible my %symbolMap; # All symbols which did not have any version > minimumVersion my %filterMap; sub print_version_and_exit() { print "$me version $VERSION\n"; print "running on Perl version " . join(".", map { $_||=0; $_*1 } ($] =~ /(\d)\.(\d{3})(\d{3})?/ )) . "\n"; exit 0; } sub usage($) { my ($exitval) = @_; # pod2usage(-exitstatus => 0, -verbose => 1, -output => '-') my $fh; # open($fh, '|-', 'nroff -man' . ($exitval < 2 ? ' >&2' : '')) || die "$!"; $fh = $exitval < 2 ? \*STDOUT : \*STDERR; my %opts = ( '-input' => $0, '-output' => \*$fh, '-exitval' => $exitval, '-verbose' => 1, ); my $parser = new MyParser(USAGE_OPTIONS => \%opts); if ($parser->can('select')) { my $opt_re = '(?i)' . '(?:ARGUMENTS)' . '(?:\s*(?:AND|\/)\s*(?:ARGUMENTS))?'; $parser->select( '(?:SYNOPSIS|USAGE)\s*', $opt_re, "DESCRIPTION/$opt_re" ); } $parser->parse_from_file($opts{'-input'}, $opts{'-output'}); # close $fh; exit($opts{'-exitval'}); } sub man() { # pod2usage(-exitstatus => 0, -verbose => 2, -output => '-') my $fh; # open($fh, '|-', 'nroff -man | ' . ($Config{pager} || $ENV{PAGER} || '/bin/more' || '/bin/cat')) || die "$!"; open($fh, '|-', ($Config{pager} || $ENV{PAGER} || '/bin/more' || '/bin/cat')) || die "$!"; my %opts = ( '-input' => $0, '-output' => \*$fh, '-exitval' => 0, '-verbose' => 2, ); my $parser = new MyParser(USAGE_OPTIONS => \%opts); if ($parser->can('select')) { $parser->select('.*'); } $parser->parse_from_file($opts{'-input'}, $opts{'-output'}); close $fh; exit($opts{'-exitval'}); } sub usage_error($) { my ($e) = @_; my $msg; $msg = $e; print STDERR "$msg\n"; print STDERR "Run '$me --help' for a list of available command line options.\n"; exit(2); } sub version_number($) { my ($version) = @_; my @numbers = split('\.', $version); push @numbers, 0 if $#numbers < 1; push @numbers, 0 if $#numbers < 2; $version = ($numbers[0] * 1000 + $numbers[1]) * 1000 + $numbers[2]; return $version; } sub parseLibrary($) { my ($filename) = @_; my $fh; my $line; my $version; my $versionInMap; my $symbolName; my $minimumVersion = version_number($args{'target'}); my $this_version; open($fh, "-|", "objdump -T $filename 2>/dev/null") || return; while (defined($line = <$fh>)) { # strip CR and/or LF chop($line) if (substr($line, -1, 1) eq "\012"); chop($line) if (substr($line, -1, 1) eq "\015"); next if $line =~ qr(PRIVATE); next unless $line =~ qr{.*GLIBC_([0-9.]+)\)?[ ]*(.+)}; $version = $1; $symbolName = $2; # Some versioning symbols exist in the objdump output, let's skip those next if $symbolName =~ /^GLIBC/; $this_version = version_number($version); if (!exists($symbolMap{$symbolName})) { $symbolMap{$symbolName} = $version; # First occurance of the symbol, if it's older # than the minimum required, put it in that table also if ($minimumVersion > $this_version) { $filterMap{$symbolName} = 1; } } else { my $versionInMap = version_number($symbolMap{$symbolName}); # We want the newest possible version of a symbol which is older than the # minimum glibc version specified (or the only version of the symbol if # it's newer than the minimum version) if ($this_version <= $minimumVersion) { if ($versionInMap > $minimumVersion) { # What we have in the map is > minimumVersion, so we need this version $symbolMap{$symbolName} = $version; } elsif ($this_version > $versionInMap) { # What we have in the map is already <= minimumVersion, but we want # the most recent acceptable symbol $symbolMap{$symbolName} = $version; } } else { # If there are only versions > minimumVersion, then we want # the lowest possible version, this is because we try to provide # information in the linker warning about what version the symbol # was initially introduced in. if ($versionInMap > $minimumVersion && $versionInMap > $this_version) { $symbolMap{$symbolName} = $version; } } # While trucking along through the huge symbol list, remove symbols from # the 'safe to exclude' if there is a version found which is newer # than the minimum requirement if ($this_version > $minimumVersion) { delete $filterMap{$symbolName}; } } } close $fh; } sub parseLibraries() { my $counter = 0; my $dh; my $filename; my $dirname = $args{'libdir'}; opendir($dh, $dirname) || die "Can't opendir $dirname: $!"; while ($filename = readdir($dh)) { next unless -f "$dirname/$filename"; if (($counter++ % 50) == 0) { print STDOUT "."; } parseLibrary("$dirname/$filename"); } closedir $dh; } sub appendSymbols($$) { my ($output, $unavailableSymbols) = @_; my $minimumVersion = version_number($args{'target'}); printf $output "\n"; if ($unavailableSymbols) { printf $output "/* Symbols introduced in newer glibc versions, which must not be used */\n"; } else { printf $output "/* Symbols redirected to earlier glibc versions */\n"; } for my $it (sort { $a cmp $b } keys %symbolMap) { my $version = $symbolMap{$it}; my $this_version = version_number($version); my $versionToUse; # If the symbol only has occurrences older than the minimum required glibc version, # then there is no need to output anything for this symbol next if exists($filterMap{$it}); # If the only available symbol is > minimumVersion, then redirect it # to a comprehensible linker error, otherwise redirect the symbol # to it's existing version <= minimumVersion. if ($this_version > $minimumVersion) { $versionToUse = sprintf("DONT_USE_THIS_VERSION_%s", $version); next if (!$unavailableSymbols); } else { $versionToUse = $version; next if ($unavailableSymbols); } printf $output 'SYMVER(%s, GLIBC_%s)' . "\n", $it, $versionToUse; } } sub generateHeader() { my $output; my $filename = $args{'output'}; open($output, ">", $filename) || die "Can't open $filename: $!"; # FIXME: Currently we do: # # if !defined (__OBJC__) && !defined (__ASSEMBLER__) # # But what we want is a clause which accepts any form of C including C++ and probably # also including ObjC. That said, the generated header works fine for C and C++ sources. printf $output "/* glibc bindings for target ABI version glibc %s */\n", $args{'target'}; printf $output "#if defined(__linux__) && !defined (__LIBC_CUSTOM_BINDINGS_H__) && !defined(__ANDROID__)\n"; printf $output "\n"; printf $output "#if defined (__cplusplus)\n"; printf $output "extern \"C\" {\n"; printf $output "#endif\n"; printf $output "\n"; printf $output "#undef SYMVER\n"; printf $output "#undef SYMVER1\n"; printf $output "#ifdef __ASSEMBLER__\n"; printf $output "#define SYMVER1(name, ver) .symver name, name##@##ver\n"; printf $output "#else\n"; printf $output "#define SYMVER1(name, ver) __asm__(\".symver \" #name \", \" #name \"@\" #ver );\n"; printf $output "#endif\n"; printf $output "#define SYMVER(name, ver) SYMVER1(name, ver)\n"; printf $output "\n"; # First generate the available redirected symbols, then the unavailable symbols appendSymbols($output, 0); appendSymbols($output, 1); printf $output "\n"; printf $output "#undef SYMVER\n"; printf $output "#undef SYMVER1\n"; printf $output "\n"; printf $output "#if defined (__cplusplus)\n"; printf $output "}\n"; printf $output "#endif\n"; printf $output "#endif\n"; close($output); } STDOUT->autoflush(1); STDERR->autoflush(1); GetOptions ("libdir|L=s" => \$args{libdir}, "output|o=s" => \$args{output}, "target|t=s" => \$args{target}, "man" => \$args{man}, "help|?|h" => \$args{help}, "version|V" => \$args{version}, ) or usage(2); usage(0) if $args{help}; man() if $args{man}; print_version_and_exit() if $args{version}; if (!defined($args{'libdir'})) { usage_error("Must specify --libdir\n"); } if (!defined($args{'output'})) { usage_error("Must specify --output\n"); } eval { printf "Generating %s (glibc %s) from libs at '%s' ", $args{'output'}, $args{'target'}, $args{'libdir'}; parseLibraries(); generateHeader(); }; if (my $e = $@) { print STDERR $e; exit 1; } print " OK\n"; exit 0; __END__ =head1 NAME =encoding utf8 X - generate header file for targetting specific glibc ABI =head1 SYNOPSIS X [] Options: =over =item -L, --libdir Library directory =item -t, --target Target glibc ABI (Default: X) =item -o, --output Header to create (Default: X) =back =head1 AUTHORS =over =item Jan Niklas Hasse =item Upstairs Laboratories Inc. =item Thorsten Otto =back =cut aranym-1.1.0/src/0000775000175000017500000000000013454637641011772 5ustar joyjoyaranym-1.1.0/src/Makefile.in0000664000175000017500000051472113454637626014054 0ustar joyjoy# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @OS_TYPE_beos_TRUE@am__append_1 = -I$(srcdir)/Unix/beos @SDL_GUI_TRUE@am__append_2 = -I$(srcdir)/gui-sdl bin_PROGRAMS = aranym$(EXEEXT) $(am__EXEEXT_1) @NEED_ARATAPIF_TRUE@am__append_3 = aratapif @SDL_GUI_TRUE@am__append_4 = \ @SDL_GUI_TRUE@ gui-sdl/sdlgui.cpp gui-sdl/sdlgui.h \ @SDL_GUI_TRUE@ gui-sdl/sdlgui.rsc gui-sdl/sdlgui.rso gui-sdl/sdlgui.sdl \ @SDL_GUI_TRUE@ gui-sdl/dialog.cpp gui-sdl/dialog.h \ @SDL_GUI_TRUE@ gui-sdl/file.cpp gui-sdl/file.h \ @SDL_GUI_TRUE@ gui-sdl/dlgMain.cpp gui-sdl/dlgMain.h \ @SDL_GUI_TRUE@ gui-sdl/font.h gui-sdl/aranym.fnt \ @SDL_GUI_TRUE@ gui-sdl/dlgAlert.cpp gui-sdl/dlgAlert.h \ @SDL_GUI_TRUE@ gui-sdl/dlgDisk.cpp gui-sdl/dlgDisk.h \ @SDL_GUI_TRUE@ gui-sdl/dlgFileSelect.cpp gui-sdl/dlgFileSelect.h \ @SDL_GUI_TRUE@ gui-sdl/dlgHostfs.cpp gui-sdl/dlgHostfs.h \ @SDL_GUI_TRUE@ gui-sdl/dlgHotkeys.cpp gui-sdl/dlgHotkeys.h \ @SDL_GUI_TRUE@ gui-sdl/dlgKeyboard.cpp gui-sdl/dlgKeyboard.h \ @SDL_GUI_TRUE@ gui-sdl/dlgKeypress.cpp gui-sdl/dlgKeypress.h \ @SDL_GUI_TRUE@ gui-sdl/dlgNetwork.cpp gui-sdl/dlgNetwork.h \ @SDL_GUI_TRUE@ gui-sdl/dlgOs.cpp gui-sdl/dlgOs.h \ @SDL_GUI_TRUE@ gui-sdl/dlgPartition.cpp gui-sdl/dlgPartition.h \ @SDL_GUI_TRUE@ gui-sdl/dlgUsb.cpp gui-sdl/dlgUsb.h \ @SDL_GUI_TRUE@ gui-sdl/dlgVideo.cpp gui-sdl/dlgVideo.h \ @SDL_GUI_TRUE@ $(empty) @NEED_GETOPT_TRUE@am__append_5 = Unix/getopt_init.c Unix/getopt1.c Unix/getopt.c Unix/getopt.h @USE_DEBUGGER_TRUE@am__append_6 = uae_cpu/debug.cpp @OS_TYPE_linux_TRUE@am__append_7 = midi_sequencer.cpp Unix/linux/parameters_linux.cpp Unix/linux/ethernet_linux.cpp Unix/linux/ethernet_linux.h Unix/host_filesys_unix.cpp @OS_TYPE_cygwin_TRUE@@OS_TYPE_linux_FALSE@am__append_8 = Unix/cygwin/parameters_cygwin.cpp Unix/cygwin/tools_cygwin.cpp Unix/cygwin/ethernet_cygwin.cpp Unix/cygwin/ethernet_cygwin.h Unix/cygwin/win32_supp.cpp Unix/win32_supp.h Unix/windows_ver.h @OS_TYPE_cygwin_TRUE@@OS_TYPE_linux_FALSE@am__append_9 = $(WIN32_RC_OBJS) @OS_TYPE_cygwin_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_TRUE@am__append_10 = Unix/cygwin/parameters_cygwin.cpp Unix/cygwin/tools_cygwin.cpp Unix/cygwin/ethernet_cygwin.cpp Unix/cygwin/ethernet_cygwin.h Unix/cygwin/win32_supp.cpp Unix/win32_supp.h Unix/windows_ver.h @OS_TYPE_cygwin_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_TRUE@am__append_11 = $(WIN32_RC_OBJS) @OS_TYPE_cygwin_FALSE@@OS_TYPE_irix_TRUE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@am__append_12 = Unix/parameters_unix.cpp Unix/irix/unaligned.c Unix/host_filesys_unix.cpp @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_TRUE@am__append_13 = \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_TRUE@ Unix/parameters_unix.cpp \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_TRUE@ Unix/host_filesys_unix.cpp \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_TRUE@ Unix/darwin/ethernet_darwin.cpp Unix/darwin/ethernet_darwin.h \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_TRUE@ Unix/darwin/SDLMain.M Unix/darwin/SDLMain.h \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_TRUE@ Unix/darwin/SDLHotkeysRefresh.M \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_TRUE@ $(empty) @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@am__append_14 = \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ gui-osx/SDLMain.m gui-osx/SDLMain.h \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ Unix/MacOSX/parameters_MacOSX.cpp \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ Unix/darwin/ethernet_darwin.cpp Unix/darwin/ethernet_darwin.h \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ Unix/darwin/SDLHotkeysRefresh.M \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ Unix/MacOSX/fd_trans.c Unix/MacOSX/fd_trans.h \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ Unix/MacOSX/ethernet_macosx.cpp Unix/MacOSX/ethernet_macosx.h \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ Unix/darwin/MachServer.c \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ Unix/darwin/MachUser.c \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ $(empty) @OS_TYPE_beos_TRUE@@OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_FALSE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@am__append_15 = Unix/parameters_unix.cpp Unix/host_filesys_unix.cpp Unix/beos/cdrom_beos.cpp Unix/beos/cdrom_beos.h @OS_TYPE_beos_FALSE@@OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_FALSE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@am__append_16 = Unix/parameters_unix.cpp Unix/host_filesys_unix.cpp @USE_JIT_TRUE@am__append_17 = \ @USE_JIT_TRUE@ uae_cpu/compiler/compemu.h \ @USE_JIT_TRUE@ uae_cpu/compiler/flags_arm.h \ @USE_JIT_TRUE@ uae_cpu/compiler/flags_x86.h \ @USE_JIT_TRUE@ uae_cpu/compiler/compemu_support.cpp \ @USE_JIT_TRUE@ $(empty) @USE_JIT_TRUE@am__append_18 = \ @USE_JIT_TRUE@ uae_cpu/compiler/compstbla.cpp \ @USE_JIT_TRUE@ uae_cpu/cpustbl_nf.cpp \ @USE_JIT_TRUE@ uae_cpu/compiler/compemu1.cpp \ @USE_JIT_TRUE@ uae_cpu/compiler/compemu2.cpp \ @USE_JIT_TRUE@ uae_cpu/compiler/compemu3.cpp \ @USE_JIT_TRUE@ uae_cpu/compiler/compemu4.cpp \ @USE_JIT_TRUE@ uae_cpu/compiler/compemu5.cpp \ @USE_JIT_TRUE@ uae_cpu/compiler/compemu6.cpp \ @USE_JIT_TRUE@ uae_cpu/compiler/compemu7.cpp \ @USE_JIT_TRUE@ uae_cpu/compiler/compemu8.cpp \ @USE_JIT_TRUE@ uae_cpu/cpuemu1_nf.cpp \ @USE_JIT_TRUE@ uae_cpu/cpuemu2_nf.cpp \ @USE_JIT_TRUE@ uae_cpu/cpuemu3_nf.cpp \ @USE_JIT_TRUE@ uae_cpu/cpuemu4_nf.cpp \ @USE_JIT_TRUE@ uae_cpu/cpuemu5_nf.cpp \ @USE_JIT_TRUE@ uae_cpu/cpuemu6_nf.cpp \ @USE_JIT_TRUE@ uae_cpu/cpuemu7_nf.cpp \ @USE_JIT_TRUE@ uae_cpu/cpuemu8_nf.cpp \ @USE_JIT_TRUE@ $(empty) @USE_JIT_FPU_TRUE@@USE_JIT_TRUE@am__append_19 = uae_cpu/compiler/compemu_fpp.cpp @FPU_IEEE_TRUE@am__append_20 = uae_cpu/fpu/fpu_ieee.cpp uae_cpu/fpu/fpu_ieee.h @FPU_X86_TRUE@am__append_21 = uae_cpu/fpu/fpu_x86.cpp uae_cpu/fpu/fpu_x86.h uae_cpu/fpu/fpu_x86_asm.h @FPU_UAE_TRUE@am__append_22 = uae_cpu/fpu/fpu_uae.cpp uae_cpu/fpu/fpu_uae.h @FPU_MPFR_TRUE@am__append_23 = uae_cpu/fpu/fpu_mpfr.cpp @NFCDROM_SUPPORT_TRUE@am__append_24 = natfeat/nfcdrom.cpp \ @NFCDROM_SUPPORT_TRUE@ natfeat/nfcdrom.h \ @NFCDROM_SUPPORT_TRUE@ natfeat/nfcdrom_atari.h \ @NFCDROM_SUPPORT_TRUE@ natfeat/nfcdrom_sdl.cpp \ @NFCDROM_SUPPORT_TRUE@ natfeat/nfcdrom_sdl.h @NFCDROM_SUPPORT_TRUE@@OS_TYPE_linux_TRUE@am__append_25 = natfeat/nfcdrom_linux.cpp natfeat/nfcdrom_linux.h @NFCDROM_SUPPORT_TRUE@@OS_TYPE_cygwin_TRUE@am__append_26 = natfeat/nfcdrom_win32.cpp natfeat/nfcdrom_win32.h @NFCDROM_SUPPORT_TRUE@@OS_TYPE_mingw_TRUE@am__append_27 = natfeat/nfcdrom_win32.cpp natfeat/nfcdrom_win32.h @WANT_DSP_TRUE@am__append_28 = dsp_core.c dsp_cpu.c @WANT_DSP_DISASM_TRUE@@WANT_DSP_TRUE@am__append_29 = dsp_disasm.c @NFPCI_SUPPORT_TRUE@am__append_30 = natfeat/nfpci.cpp natfeat/nfpci.h @NFPCI_LINUX_SUPPORT_TRUE@am__append_31 = natfeat/nfpci_linux.cpp natfeat/nfpci_linux.h @ETHERNET_SUPPORT_TRUE@am__append_32 = natfeat/ethernet.cpp natfeat/ethernet.h @HOSTFS_SUPPORT_TRUE@am__append_33 = natfeat/hostfs.cpp natfeat/hostfs.h @NFCLIPBRD_SUPPORT_TRUE@am__append_34 = natfeat/nfclipbrd.cpp natfeat/nfclipbrd.h natfeat/nfclipbrd_nfapi.h @NFCLIPBRD_SUPPORT_TRUE@@OS_TYPE_cygwin_TRUE@am__append_35 = Unix/cygwin/clipbrd_cygwin.cpp @NFCLIPBRD_SUPPORT_TRUE@@OS_TYPE_cygwin_FALSE@@OS_TYPE_mingw_TRUE@am__append_36 = Unix/cygwin/clipbrd_cygwin.cpp @NFCLIPBRD_SUPPORT_TRUE@@OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_mingw_FALSE@am__append_37 = Unix/darwin/clipbrd_darwin.M @NFCLIPBRD_SUPPORT_TRUE@@OS_TYPE_beos_TRUE@@OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_FALSE@@OS_TYPE_mingw_FALSE@am__append_38 = Unix/beos/clipbrd_beos.cpp @NFCLIPBRD_SUPPORT_TRUE@@OS_TYPE_beos_FALSE@@OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_FALSE@@OS_TYPE_mingw_FALSE@am__append_39 = Unix/clipbrd_x11.cpp Unix/clipbrd.h @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_linux_TRUE@am__append_40 = Unix/linux/sigsegv_linux_x86.cpp Unix/sigsegv_common_x86.h @CPU_TYPE_x86_64_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_linux_TRUE@am__append_41 = Unix/linux/sigsegv_linux_x86.cpp Unix/sigsegv_common_x86.h @CPU_TYPE_arm_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_linux_TRUE@am__append_42 = Unix/linux/sigsegv_linux_arm.cpp @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_openbsd_TRUE@am__append_43 = Unix/xbsd/sigsegv_xbsd.cpp @CPU_TYPE_x86_64_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_openbsd_TRUE@am__append_44 = Unix/xbsd/sigsegv_xbsd.cpp @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_netbsd_TRUE@am__append_45 = Unix/xbsd/sigsegv_xbsd.cpp @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_freebsd_TRUE@am__append_46 = Unix/xbsd/sigsegv_xbsd.cpp @CPU_TYPE_x86_64_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_freebsd_TRUE@am__append_47 = Unix/xbsd/sigsegv_xbsd.cpp @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_darwin_TRUE@am__append_48 = Unix/darwin/sigsegv_darwin_x86.cpp @CPU_TYPE_x86_64_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_darwin_TRUE@am__append_49 = Unix/darwin/sigsegv_darwin_x86.cpp @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_cygwin_TRUE@am__append_50 = Unix/cygwin/sigsegv_cygwin.cpp @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_mingw_TRUE@am__append_51 = Unix/cygwin/sigsegv_cygwin.cpp @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_solaris_TRUE@am__append_52 = Unix/solaris/sigsegv_solaris_x86.cpp @CPU_TYPE_x86_64_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_solaris_TRUE@am__append_53 = Unix/solaris/sigsegv_solaris_x86.cpp @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_beos_TRUE@am__append_54 = Unix/beos/sigsegv_beos_x86.cpp @CPU_TYPE_x86_64_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_beos_TRUE@am__append_55 = Unix/beos/sigsegv_beos_x86.cpp @ENABLE_OPENGL_TRUE@am__append_56 = dyngl.c @USBHOST_SUPPORT_TRUE@am__append_57 = natfeat/usbhost.cpp natfeat/usbhost.h @NFOSMESA_SUPPORT_TRUE@am__append_58 = \ @NFOSMESA_SUPPORT_TRUE@ natfeat/nfosmesa.cpp natfeat/nfosmesa.h \ @NFOSMESA_SUPPORT_TRUE@ natfeat/osmesa_context.cpp natfeat/osmesa_context.h @NFJPEG_SUPPORT_TRUE@am__append_59 = natfeat/nfjpeg.cpp natfeat/nfjpeg.h @NFVDI_SUPPORT_TRUE@am__append_60 = natfeat/nfvdi.cpp natfeat/nfvdi.h natfeat/nfvdi_soft.cpp natfeat/nfvdi_soft.h natfeat/fvdidrv_nfapi.h @ENABLE_OPENGL_TRUE@@NFVDI_SUPPORT_TRUE@am__append_61 = natfeat/nfvdi_opengl.cpp natfeat/nfvdi_opengl.h @CPU_TYPE_x86_TRUE@@ENABLE_PARALLELX86_TRUE@@OS_TYPE_linux_TRUE@am__append_62 = parallel_x86.cpp @ENABLE_PARALLELPARPORT_TRUE@@OS_TYPE_linux_TRUE@am__append_63 = parallel_parport.cpp @ENABLE_SERIALUNIX_TRUE@am__append_64 = serial_port.cpp subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_prog_cc_for_build.m4 \ $(top_srcdir)/m4/ax_prog_cxx_for_build.m4 \ $(top_srcdir)/m4/cxxbool.m4 $(top_srcdir)/m4/float.m4 \ $(top_srcdir)/m4/framework.m4 $(top_srcdir)/m4/maintainer.m4 \ $(top_srcdir)/m4/sdl.m4 $(top_srcdir)/m4/sdl2.m4 \ $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \ $(top_srcdir)/m4/util.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libaranym_a_AR = $(AR) $(ARFLAGS) libaranym_a_LIBADD = am__libaranym_a_SOURCES_DIST = uae_cpu/cpudefsa.cpp \ uae_cpu/cpustbla.cpp uae_cpu/cpufunctbla.cpp \ uae_cpu/cpuemu1.cpp uae_cpu/cpuemu2.cpp uae_cpu/cpuemu3.cpp \ uae_cpu/cpuemu4.cpp uae_cpu/cpuemu5.cpp uae_cpu/cpuemu6.cpp \ uae_cpu/cpuemu7.cpp uae_cpu/cpuemu8.cpp \ uae_cpu/compiler/compstbla.cpp uae_cpu/cpustbl_nf.cpp \ uae_cpu/compiler/compemu1.cpp uae_cpu/compiler/compemu2.cpp \ uae_cpu/compiler/compemu3.cpp uae_cpu/compiler/compemu4.cpp \ uae_cpu/compiler/compemu5.cpp uae_cpu/compiler/compemu6.cpp \ uae_cpu/compiler/compemu7.cpp uae_cpu/compiler/compemu8.cpp \ uae_cpu/cpuemu1_nf.cpp uae_cpu/cpuemu2_nf.cpp \ uae_cpu/cpuemu3_nf.cpp uae_cpu/cpuemu4_nf.cpp \ uae_cpu/cpuemu5_nf.cpp uae_cpu/cpuemu6_nf.cpp \ uae_cpu/cpuemu7_nf.cpp uae_cpu/cpuemu8_nf.cpp am__dirstamp = $(am__leading_dot)dirstamp @USE_JIT_TRUE@am__objects_1 = uae_cpu/compiler/libaranym_a-compstbla.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/libaranym_a-cpustbl_nf.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/compiler/libaranym_a-compemu1.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/compiler/libaranym_a-compemu2.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/compiler/libaranym_a-compemu3.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/compiler/libaranym_a-compemu4.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/compiler/libaranym_a-compemu5.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/compiler/libaranym_a-compemu6.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/compiler/libaranym_a-compemu7.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/compiler/libaranym_a-compemu8.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/libaranym_a-cpuemu1_nf.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/libaranym_a-cpuemu2_nf.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/libaranym_a-cpuemu3_nf.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/libaranym_a-cpuemu4_nf.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/libaranym_a-cpuemu5_nf.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/libaranym_a-cpuemu6_nf.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/libaranym_a-cpuemu7_nf.$(OBJEXT) \ @USE_JIT_TRUE@ uae_cpu/libaranym_a-cpuemu8_nf.$(OBJEXT) am_libaranym_a_OBJECTS = uae_cpu/libaranym_a-cpudefsa.$(OBJEXT) \ uae_cpu/libaranym_a-cpustbla.$(OBJEXT) \ uae_cpu/libaranym_a-cpufunctbla.$(OBJEXT) \ uae_cpu/libaranym_a-cpuemu1.$(OBJEXT) \ uae_cpu/libaranym_a-cpuemu2.$(OBJEXT) \ uae_cpu/libaranym_a-cpuemu3.$(OBJEXT) \ uae_cpu/libaranym_a-cpuemu4.$(OBJEXT) \ uae_cpu/libaranym_a-cpuemu5.$(OBJEXT) \ uae_cpu/libaranym_a-cpuemu6.$(OBJEXT) \ uae_cpu/libaranym_a-cpuemu7.$(OBJEXT) \ uae_cpu/libaranym_a-cpuemu8.$(OBJEXT) $(am__objects_1) libaranym_a_OBJECTS = $(am_libaranym_a_OBJECTS) @NEED_ARATAPIF_TRUE@am__EXEEXT_1 = aratapif$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am__aranym_SOURCES_DIST = Unix/sysdeps.h main.cpp Unix/main_unix.cpp \ Unix/vm_alloc.cpp Unix/vm_alloc.h Unix/host_clock_unix.cpp \ Unix/vasprintf.c Unix/ansidecl.h acia.cpp acsifdc.cpp \ adler32.c aradata.cpp aranym_exception.cpp ata.cpp \ audio_conv.cpp audio_dma.cpp audio_crossbar.cpp blitter.cpp \ bootos.cpp bootos_tos.cpp bootos_emutos.cpp bootos_linux.cpp \ cdrom.cpp cfgopts.cpp dirty_rects.cpp dsp.cpp \ disasm/disasm-builtin.h disasm/disasm-bfd.h \ disasm/disasm-glue.cpp disasm/disasm-builtin.cpp \ disasm/disasm-x86.cpp disasm/disasm-arm.cpp \ disasm/disasm-arm.h disasm/arm.h disasm/disasm-arm-builtin.c \ disasm/disasm-x86.h disasm/i386.h disasm/i386-opc.h \ disasm/i386-dis-evex.h disasm/disasm-x86-builtin.c emul_op.cpp \ glenums.c natfeats.cpp fakeio.cpp hardware.cpp host.cpp \ host_audio.cpp host_clock.cpp hostscreen.cpp \ hostscreen_opengl.cpp host_surface.cpp host_surface_opengl.cpp \ ide.cpp identify.cpp ikbd.cpp input.cpp joypads.cpp logo.cpp \ sdl_bmp.cpp md5.cpp mfp.cpp midi.cpp midi_file.cpp mmu.cpp \ ndebug.cpp ncr5380.cpp parallel.cpp parallel_file.cpp \ parameters.cpp romdiff.cpp rtc.cpp serial.cpp scc.cpp \ tools.cpp videl.cpp videl_zoom.cpp yamaha.cpp \ natfeat/nf_base.cpp natfeat/nf_base.h natfeat/nf_objs.cpp \ natfeat/nf_objs.h natfeat/xhdi.cpp natfeat/xhdi.h \ natfeat/atari_rootsec.h natfeat/nfaudio.cpp natfeat/nfaudio.h \ natfeat/nfbootstrap.cpp natfeat/nfbootstrap.h \ natfeat/nf_basicset.cpp natfeat/nf_basicset.h \ natfeat/debugprintf.cpp natfeat/debugprintf.h \ natfeat/maptab.cpp natfeat/maptab.h natfeat/nf_scsidrv.cpp \ natfeat/nf_scsidrv.h natfeat/nf_hostexec.cpp \ natfeat/nf_hostexec.h uae_cpu/cpu_emulation.h \ uae_cpu/aranym_glue.cpp uae_cpu/memory.cpp \ uae_cpu/memory-uae.h uae_cpu/newcpu.cpp uae_cpu/newcpu.h \ uae_cpu/noflags.h uae_cpu/registers.h uae_cpu/spcflags.h \ uae_cpu/readcpua.cpp uae_cpu/readcpu.h uae_cpu/cpummu.cpp \ uae_cpu/cpummu.h uae_cpu/fpu/core.h uae_cpu/fpu/fpu.h \ uae_cpu/fpu/impl.h uae_cpu/fpu/types.h gui-sdl/sdlgui.cpp \ gui-sdl/sdlgui.h gui-sdl/sdlgui.rsc gui-sdl/sdlgui.rso \ gui-sdl/sdlgui.sdl gui-sdl/dialog.cpp gui-sdl/dialog.h \ gui-sdl/file.cpp gui-sdl/file.h gui-sdl/dlgMain.cpp \ gui-sdl/dlgMain.h gui-sdl/font.h gui-sdl/aranym.fnt \ gui-sdl/dlgAlert.cpp gui-sdl/dlgAlert.h gui-sdl/dlgDisk.cpp \ gui-sdl/dlgDisk.h gui-sdl/dlgFileSelect.cpp \ gui-sdl/dlgFileSelect.h gui-sdl/dlgHostfs.cpp \ gui-sdl/dlgHostfs.h gui-sdl/dlgHotkeys.cpp \ gui-sdl/dlgHotkeys.h gui-sdl/dlgKeyboard.cpp \ gui-sdl/dlgKeyboard.h gui-sdl/dlgKeypress.cpp \ gui-sdl/dlgKeypress.h gui-sdl/dlgNetwork.cpp \ gui-sdl/dlgNetwork.h gui-sdl/dlgOs.cpp gui-sdl/dlgOs.h \ gui-sdl/dlgPartition.cpp gui-sdl/dlgPartition.h \ gui-sdl/dlgUsb.cpp gui-sdl/dlgUsb.h gui-sdl/dlgVideo.cpp \ gui-sdl/dlgVideo.h Unix/getopt_init.c Unix/getopt1.c \ Unix/getopt.c Unix/getopt.h uae_cpu/debug.cpp \ midi_sequencer.cpp Unix/linux/parameters_linux.cpp \ Unix/linux/ethernet_linux.cpp Unix/linux/ethernet_linux.h \ Unix/host_filesys_unix.cpp Unix/cygwin/parameters_cygwin.cpp \ Unix/cygwin/tools_cygwin.cpp Unix/cygwin/ethernet_cygwin.cpp \ Unix/cygwin/ethernet_cygwin.h Unix/cygwin/win32_supp.cpp \ Unix/win32_supp.h Unix/windows_ver.h Unix/parameters_unix.cpp \ Unix/irix/unaligned.c Unix/darwin/ethernet_darwin.cpp \ Unix/darwin/ethernet_darwin.h Unix/darwin/SDLMain.M \ Unix/darwin/SDLMain.h Unix/darwin/SDLHotkeysRefresh.M \ gui-osx/SDLMain.m gui-osx/SDLMain.h \ Unix/MacOSX/parameters_MacOSX.cpp Unix/MacOSX/fd_trans.c \ Unix/MacOSX/fd_trans.h Unix/MacOSX/ethernet_macosx.cpp \ Unix/MacOSX/ethernet_macosx.h Unix/darwin/MachServer.c \ Unix/darwin/MachUser.c Unix/beos/cdrom_beos.cpp \ Unix/beos/cdrom_beos.h uae_cpu/compiler/compemu.h \ uae_cpu/compiler/flags_arm.h uae_cpu/compiler/flags_x86.h \ uae_cpu/compiler/compemu_support.cpp \ uae_cpu/compiler/compemu_fpp.cpp uae_cpu/fpu/fpu_ieee.cpp \ uae_cpu/fpu/fpu_ieee.h uae_cpu/fpu/fpu_x86.cpp \ uae_cpu/fpu/fpu_x86.h uae_cpu/fpu/fpu_x86_asm.h \ uae_cpu/fpu/fpu_uae.cpp uae_cpu/fpu/fpu_uae.h \ uae_cpu/fpu/fpu_mpfr.cpp natfeat/nfcdrom.cpp natfeat/nfcdrom.h \ natfeat/nfcdrom_atari.h natfeat/nfcdrom_sdl.cpp \ natfeat/nfcdrom_sdl.h natfeat/nfcdrom_linux.cpp \ natfeat/nfcdrom_linux.h natfeat/nfcdrom_win32.cpp \ natfeat/nfcdrom_win32.h dsp_core.c dsp_cpu.c dsp_disasm.c \ natfeat/nfpci.cpp natfeat/nfpci.h natfeat/nfpci_linux.cpp \ natfeat/nfpci_linux.h natfeat/ethernet.cpp natfeat/ethernet.h \ natfeat/hostfs.cpp natfeat/hostfs.h natfeat/nfclipbrd.cpp \ natfeat/nfclipbrd.h natfeat/nfclipbrd_nfapi.h \ Unix/cygwin/clipbrd_cygwin.cpp Unix/darwin/clipbrd_darwin.M \ Unix/beos/clipbrd_beos.cpp Unix/clipbrd_x11.cpp Unix/clipbrd.h \ Unix/linux/sigsegv_linux_x86.cpp Unix/sigsegv_common_x86.h \ Unix/linux/sigsegv_linux_arm.cpp Unix/xbsd/sigsegv_xbsd.cpp \ Unix/darwin/sigsegv_darwin_x86.cpp \ Unix/cygwin/sigsegv_cygwin.cpp \ Unix/solaris/sigsegv_solaris_x86.cpp \ Unix/beos/sigsegv_beos_x86.cpp dyngl.c natfeat/usbhost.cpp \ natfeat/usbhost.h natfeat/nfosmesa.cpp natfeat/nfosmesa.h \ natfeat/osmesa_context.cpp natfeat/osmesa_context.h \ natfeat/nfjpeg.cpp natfeat/nfjpeg.h natfeat/nfvdi.cpp \ natfeat/nfvdi.h natfeat/nfvdi_soft.cpp natfeat/nfvdi_soft.h \ natfeat/fvdidrv_nfapi.h natfeat/nfvdi_opengl.cpp \ natfeat/nfvdi_opengl.h parallel_x86.cpp parallel_parport.cpp \ serial_port.cpp @SDL_GUI_TRUE@am__objects_2 = gui-sdl/sdlgui.$(OBJEXT) \ @SDL_GUI_TRUE@ gui-sdl/dialog.$(OBJEXT) gui-sdl/file.$(OBJEXT) \ @SDL_GUI_TRUE@ gui-sdl/dlgMain.$(OBJEXT) \ @SDL_GUI_TRUE@ gui-sdl/dlgAlert.$(OBJEXT) \ @SDL_GUI_TRUE@ gui-sdl/dlgDisk.$(OBJEXT) \ @SDL_GUI_TRUE@ gui-sdl/dlgFileSelect.$(OBJEXT) \ @SDL_GUI_TRUE@ gui-sdl/dlgHostfs.$(OBJEXT) \ @SDL_GUI_TRUE@ gui-sdl/dlgHotkeys.$(OBJEXT) \ @SDL_GUI_TRUE@ gui-sdl/dlgKeyboard.$(OBJEXT) \ @SDL_GUI_TRUE@ gui-sdl/dlgKeypress.$(OBJEXT) \ @SDL_GUI_TRUE@ gui-sdl/dlgNetwork.$(OBJEXT) \ @SDL_GUI_TRUE@ gui-sdl/dlgOs.$(OBJEXT) \ @SDL_GUI_TRUE@ gui-sdl/dlgPartition.$(OBJEXT) \ @SDL_GUI_TRUE@ gui-sdl/dlgUsb.$(OBJEXT) \ @SDL_GUI_TRUE@ gui-sdl/dlgVideo.$(OBJEXT) @NEED_GETOPT_TRUE@am__objects_3 = Unix/getopt_init.$(OBJEXT) \ @NEED_GETOPT_TRUE@ Unix/getopt1.$(OBJEXT) Unix/getopt.$(OBJEXT) @USE_DEBUGGER_TRUE@am__objects_4 = uae_cpu/debug.$(OBJEXT) @OS_TYPE_linux_TRUE@am__objects_5 = midi_sequencer.$(OBJEXT) \ @OS_TYPE_linux_TRUE@ Unix/linux/parameters_linux.$(OBJEXT) \ @OS_TYPE_linux_TRUE@ Unix/linux/ethernet_linux.$(OBJEXT) \ @OS_TYPE_linux_TRUE@ Unix/host_filesys_unix.$(OBJEXT) @OS_TYPE_cygwin_TRUE@@OS_TYPE_linux_FALSE@am__objects_6 = Unix/cygwin/parameters_cygwin.$(OBJEXT) \ @OS_TYPE_cygwin_TRUE@@OS_TYPE_linux_FALSE@ Unix/cygwin/tools_cygwin.$(OBJEXT) \ @OS_TYPE_cygwin_TRUE@@OS_TYPE_linux_FALSE@ Unix/cygwin/ethernet_cygwin.$(OBJEXT) \ @OS_TYPE_cygwin_TRUE@@OS_TYPE_linux_FALSE@ Unix/cygwin/win32_supp.$(OBJEXT) @OS_TYPE_cygwin_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_TRUE@am__objects_7 = Unix/cygwin/parameters_cygwin.$(OBJEXT) \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_TRUE@ Unix/cygwin/tools_cygwin.$(OBJEXT) \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_TRUE@ Unix/cygwin/ethernet_cygwin.$(OBJEXT) \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_TRUE@ Unix/cygwin/win32_supp.$(OBJEXT) @OS_TYPE_cygwin_FALSE@@OS_TYPE_irix_TRUE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@am__objects_8 = Unix/parameters_unix.$(OBJEXT) \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_irix_TRUE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@ Unix/irix/unaligned.$(OBJEXT) \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_irix_TRUE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@ Unix/host_filesys_unix.$(OBJEXT) @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_TRUE@am__objects_9 = Unix/parameters_unix.$(OBJEXT) \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_TRUE@ Unix/host_filesys_unix.$(OBJEXT) \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_TRUE@ Unix/darwin/ethernet_darwin.$(OBJEXT) @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@am__objects_10 = gui-osx/SDLMain.$(OBJEXT) \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ Unix/MacOSX/parameters_MacOSX.$(OBJEXT) \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ Unix/darwin/ethernet_darwin.$(OBJEXT) \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ Unix/MacOSX/fd_trans.$(OBJEXT) \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ Unix/MacOSX/ethernet_macosx.$(OBJEXT) \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ Unix/darwin/MachServer.$(OBJEXT) \ @OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_TRUE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@@WITH_FINK_FALSE@ Unix/darwin/MachUser.$(OBJEXT) @OS_TYPE_beos_TRUE@@OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_FALSE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@am__objects_11 = Unix/parameters_unix.$(OBJEXT) \ @OS_TYPE_beos_TRUE@@OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_FALSE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@ Unix/host_filesys_unix.$(OBJEXT) \ @OS_TYPE_beos_TRUE@@OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_FALSE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@ Unix/beos/cdrom_beos.$(OBJEXT) @OS_TYPE_beos_FALSE@@OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_FALSE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@am__objects_12 = Unix/parameters_unix.$(OBJEXT) \ @OS_TYPE_beos_FALSE@@OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_FALSE@@OS_TYPE_irix_FALSE@@OS_TYPE_linux_FALSE@@OS_TYPE_mingw_FALSE@ Unix/host_filesys_unix.$(OBJEXT) @USE_JIT_TRUE@am__objects_13 = \ @USE_JIT_TRUE@ uae_cpu/compiler/compemu_support.$(OBJEXT) @USE_JIT_FPU_TRUE@@USE_JIT_TRUE@am__objects_14 = uae_cpu/compiler/compemu_fpp.$(OBJEXT) @FPU_IEEE_TRUE@am__objects_15 = uae_cpu/fpu/fpu_ieee.$(OBJEXT) @FPU_X86_TRUE@am__objects_16 = uae_cpu/fpu/fpu_x86.$(OBJEXT) @FPU_UAE_TRUE@am__objects_17 = uae_cpu/fpu/fpu_uae.$(OBJEXT) @FPU_MPFR_TRUE@am__objects_18 = uae_cpu/fpu/fpu_mpfr.$(OBJEXT) @NFCDROM_SUPPORT_TRUE@am__objects_19 = natfeat/nfcdrom.$(OBJEXT) \ @NFCDROM_SUPPORT_TRUE@ natfeat/nfcdrom_sdl.$(OBJEXT) @NFCDROM_SUPPORT_TRUE@@OS_TYPE_linux_TRUE@am__objects_20 = natfeat/nfcdrom_linux.$(OBJEXT) @NFCDROM_SUPPORT_TRUE@@OS_TYPE_cygwin_TRUE@am__objects_21 = natfeat/nfcdrom_win32.$(OBJEXT) @NFCDROM_SUPPORT_TRUE@@OS_TYPE_mingw_TRUE@am__objects_22 = natfeat/nfcdrom_win32.$(OBJEXT) @WANT_DSP_TRUE@am__objects_23 = dsp_core.$(OBJEXT) dsp_cpu.$(OBJEXT) @WANT_DSP_DISASM_TRUE@@WANT_DSP_TRUE@am__objects_24 = \ @WANT_DSP_DISASM_TRUE@@WANT_DSP_TRUE@ dsp_disasm.$(OBJEXT) @NFPCI_SUPPORT_TRUE@am__objects_25 = natfeat/nfpci.$(OBJEXT) @NFPCI_LINUX_SUPPORT_TRUE@am__objects_26 = \ @NFPCI_LINUX_SUPPORT_TRUE@ natfeat/nfpci_linux.$(OBJEXT) @ETHERNET_SUPPORT_TRUE@am__objects_27 = natfeat/ethernet.$(OBJEXT) @HOSTFS_SUPPORT_TRUE@am__objects_28 = natfeat/hostfs.$(OBJEXT) @NFCLIPBRD_SUPPORT_TRUE@am__objects_29 = natfeat/nfclipbrd.$(OBJEXT) @NFCLIPBRD_SUPPORT_TRUE@@OS_TYPE_cygwin_TRUE@am__objects_30 = Unix/cygwin/clipbrd_cygwin.$(OBJEXT) @NFCLIPBRD_SUPPORT_TRUE@@OS_TYPE_cygwin_FALSE@@OS_TYPE_mingw_TRUE@am__objects_31 = Unix/cygwin/clipbrd_cygwin.$(OBJEXT) am__objects_32 = @NFCLIPBRD_SUPPORT_TRUE@@OS_TYPE_beos_TRUE@@OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_FALSE@@OS_TYPE_mingw_FALSE@am__objects_33 = Unix/beos/clipbrd_beos.$(OBJEXT) @NFCLIPBRD_SUPPORT_TRUE@@OS_TYPE_beos_FALSE@@OS_TYPE_cygwin_FALSE@@OS_TYPE_darwin_FALSE@@OS_TYPE_mingw_FALSE@am__objects_34 = Unix/clipbrd_x11.$(OBJEXT) @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_linux_TRUE@am__objects_35 = Unix/linux/sigsegv_linux_x86.$(OBJEXT) @CPU_TYPE_x86_64_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_linux_TRUE@am__objects_36 = Unix/linux/sigsegv_linux_x86.$(OBJEXT) @CPU_TYPE_arm_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_linux_TRUE@am__objects_37 = Unix/linux/sigsegv_linux_arm.$(OBJEXT) @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_openbsd_TRUE@am__objects_38 = Unix/xbsd/sigsegv_xbsd.$(OBJEXT) @CPU_TYPE_x86_64_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_openbsd_TRUE@am__objects_39 = Unix/xbsd/sigsegv_xbsd.$(OBJEXT) @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_netbsd_TRUE@am__objects_40 = Unix/xbsd/sigsegv_xbsd.$(OBJEXT) @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_freebsd_TRUE@am__objects_41 = Unix/xbsd/sigsegv_xbsd.$(OBJEXT) @CPU_TYPE_x86_64_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_freebsd_TRUE@am__objects_42 = Unix/xbsd/sigsegv_xbsd.$(OBJEXT) @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_darwin_TRUE@am__objects_43 = Unix/darwin/sigsegv_darwin_x86.$(OBJEXT) @CPU_TYPE_x86_64_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_darwin_TRUE@am__objects_44 = Unix/darwin/sigsegv_darwin_x86.$(OBJEXT) @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_cygwin_TRUE@am__objects_45 = Unix/cygwin/sigsegv_cygwin.$(OBJEXT) @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_mingw_TRUE@am__objects_46 = Unix/cygwin/sigsegv_cygwin.$(OBJEXT) @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_solaris_TRUE@am__objects_47 = Unix/solaris/sigsegv_solaris_x86.$(OBJEXT) @CPU_TYPE_x86_64_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_solaris_TRUE@am__objects_48 = Unix/solaris/sigsegv_solaris_x86.$(OBJEXT) @CPU_TYPE_x86_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_beos_TRUE@am__objects_49 = Unix/beos/sigsegv_beos_x86.$(OBJEXT) @CPU_TYPE_x86_64_TRUE@@EXTENDED_SIGSEGV_TRUE@@OS_TYPE_beos_TRUE@am__objects_50 = Unix/beos/sigsegv_beos_x86.$(OBJEXT) @ENABLE_OPENGL_TRUE@am__objects_51 = dyngl.$(OBJEXT) @USBHOST_SUPPORT_TRUE@am__objects_52 = natfeat/usbhost.$(OBJEXT) @NFOSMESA_SUPPORT_TRUE@am__objects_53 = natfeat/nfosmesa.$(OBJEXT) \ @NFOSMESA_SUPPORT_TRUE@ natfeat/osmesa_context.$(OBJEXT) @NFJPEG_SUPPORT_TRUE@am__objects_54 = natfeat/nfjpeg.$(OBJEXT) @NFVDI_SUPPORT_TRUE@am__objects_55 = natfeat/nfvdi.$(OBJEXT) \ @NFVDI_SUPPORT_TRUE@ natfeat/nfvdi_soft.$(OBJEXT) @ENABLE_OPENGL_TRUE@@NFVDI_SUPPORT_TRUE@am__objects_56 = natfeat/nfvdi_opengl.$(OBJEXT) @CPU_TYPE_x86_TRUE@@ENABLE_PARALLELX86_TRUE@@OS_TYPE_linux_TRUE@am__objects_57 = parallel_x86.$(OBJEXT) @ENABLE_PARALLELPARPORT_TRUE@@OS_TYPE_linux_TRUE@am__objects_58 = parallel_parport.$(OBJEXT) @ENABLE_SERIALUNIX_TRUE@am__objects_59 = serial_port.$(OBJEXT) am_aranym_OBJECTS = main.$(OBJEXT) Unix/main_unix.$(OBJEXT) \ Unix/vm_alloc.$(OBJEXT) Unix/host_clock_unix.$(OBJEXT) \ Unix/vasprintf.$(OBJEXT) acia.$(OBJEXT) acsifdc.$(OBJEXT) \ adler32.$(OBJEXT) aradata.$(OBJEXT) aranym_exception.$(OBJEXT) \ ata.$(OBJEXT) audio_conv.$(OBJEXT) audio_dma.$(OBJEXT) \ audio_crossbar.$(OBJEXT) blitter.$(OBJEXT) bootos.$(OBJEXT) \ bootos_tos.$(OBJEXT) bootos_emutos.$(OBJEXT) \ bootos_linux.$(OBJEXT) cdrom.$(OBJEXT) cfgopts.$(OBJEXT) \ dirty_rects.$(OBJEXT) dsp.$(OBJEXT) \ disasm/disasm-glue.$(OBJEXT) disasm/disasm-builtin.$(OBJEXT) \ disasm/disasm-x86.$(OBJEXT) disasm/disasm-arm.$(OBJEXT) \ disasm/disasm-arm-builtin.$(OBJEXT) \ disasm/disasm-x86-builtin.$(OBJEXT) emul_op.$(OBJEXT) \ glenums.$(OBJEXT) natfeats.$(OBJEXT) fakeio.$(OBJEXT) \ hardware.$(OBJEXT) host.$(OBJEXT) host_audio.$(OBJEXT) \ host_clock.$(OBJEXT) hostscreen.$(OBJEXT) \ hostscreen_opengl.$(OBJEXT) host_surface.$(OBJEXT) \ host_surface_opengl.$(OBJEXT) ide.$(OBJEXT) identify.$(OBJEXT) \ ikbd.$(OBJEXT) input.$(OBJEXT) joypads.$(OBJEXT) \ logo.$(OBJEXT) sdl_bmp.$(OBJEXT) md5.$(OBJEXT) mfp.$(OBJEXT) \ midi.$(OBJEXT) midi_file.$(OBJEXT) mmu.$(OBJEXT) \ ndebug.$(OBJEXT) ncr5380.$(OBJEXT) parallel.$(OBJEXT) \ parallel_file.$(OBJEXT) parameters.$(OBJEXT) romdiff.$(OBJEXT) \ rtc.$(OBJEXT) serial.$(OBJEXT) scc.$(OBJEXT) tools.$(OBJEXT) \ videl.$(OBJEXT) videl_zoom.$(OBJEXT) yamaha.$(OBJEXT) \ natfeat/nf_base.$(OBJEXT) natfeat/nf_objs.$(OBJEXT) \ natfeat/xhdi.$(OBJEXT) natfeat/nfaudio.$(OBJEXT) \ natfeat/nfbootstrap.$(OBJEXT) natfeat/nf_basicset.$(OBJEXT) \ natfeat/debugprintf.$(OBJEXT) natfeat/maptab.$(OBJEXT) \ natfeat/nf_scsidrv.$(OBJEXT) natfeat/nf_hostexec.$(OBJEXT) \ uae_cpu/aranym_glue.$(OBJEXT) uae_cpu/memory.$(OBJEXT) \ uae_cpu/newcpu.$(OBJEXT) uae_cpu/readcpua.$(OBJEXT) \ uae_cpu/cpummu.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ $(am__objects_4) $(am__objects_5) $(am__objects_6) \ $(am__objects_7) $(am__objects_8) $(am__objects_9) \ $(am__objects_10) $(am__objects_11) $(am__objects_12) \ $(am__objects_13) $(am__objects_14) $(am__objects_15) \ $(am__objects_16) $(am__objects_17) $(am__objects_18) \ $(am__objects_19) $(am__objects_20) $(am__objects_21) \ $(am__objects_22) $(am__objects_23) $(am__objects_24) \ $(am__objects_25) $(am__objects_26) $(am__objects_27) \ $(am__objects_28) $(am__objects_29) $(am__objects_30) \ $(am__objects_31) $(am__objects_32) $(am__objects_33) \ $(am__objects_34) $(am__objects_35) $(am__objects_36) \ $(am__objects_37) $(am__objects_38) $(am__objects_39) \ $(am__objects_40) $(am__objects_41) $(am__objects_42) \ $(am__objects_43) $(am__objects_44) $(am__objects_45) \ $(am__objects_46) $(am__objects_47) $(am__objects_48) \ $(am__objects_49) $(am__objects_50) $(am__objects_51) \ $(am__objects_52) $(am__objects_53) $(am__objects_54) \ $(am__objects_55) $(am__objects_56) $(am__objects_57) \ $(am__objects_58) $(am__objects_59) aranym_OBJECTS = $(am_aranym_OBJECTS) aranym_DEPENDENCIES = libaranym.a $(am__append_9) $(am__append_11) am_aratapif_OBJECTS = Unix/aratapif.$(OBJEXT) aratapif_OBJECTS = $(am_aratapif_OBJECTS) aratapif_LDADD = $(LDADD) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = OBJCCOMPILE = $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS) AM_V_OBJC = $(am__v_OBJC_@AM_V@) am__v_OBJC_ = $(am__v_OBJC_@AM_DEFAULT_V@) am__v_OBJC_0 = @echo " OBJC " $@; am__v_OBJC_1 = OBJCLD = $(OBJC) OBJCLINK = $(OBJCLD) $(AM_OBJCFLAGS) $(OBJCFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_OBJCLD = $(am__v_OBJCLD_@AM_V@) am__v_OBJCLD_ = $(am__v_OBJCLD_@AM_DEFAULT_V@) am__v_OBJCLD_0 = @echo " OBJCLD " $@; am__v_OBJCLD_1 = SOURCES = $(libaranym_a_SOURCES) $(aranym_SOURCES) $(aratapif_SOURCES) DIST_SOURCES = $(am__libaranym_a_SOURCES_DIST) \ $(am__aranym_SOURCES_DIST) $(aratapif_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ARCH = @ARCH@ ARCHFLAGS = @ARCHFLAGS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BEOS_RC = @BEOS_RC@ BEOS_SETVERSION = @BEOS_SETVERSION@ BEOS_XRES = @BEOS_XRES@ BUILD_EXEEXT = @BUILD_EXEEXT@ BUILD_OBJEXT = @BUILD_OBJEXT@ BUNDLE_FRAMEWORKS = /Library/Frameworks/SDL.framework /Library/Frameworks/SDL_image.framework CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CPP_FOR_BUILD = @CPP_FOR_BUILD@ CPU_TYPE = @CPU_TYPE@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXCPPFLAGS_FOR_BUILD = @CXXCPPFLAGS_FOR_BUILD@ CXXCPP_FOR_BUILD = @CXXCPP_FOR_BUILD@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@ CXX_FOR_BUILD = @CXX_FOR_BUILD@ CYGPATH_W = @CYGPATH_W@ DBGSP = @DBGSP@ DEFINES = @DEFINES@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISASM_CFLAGS = @DISASM_CFLAGS@ DISASM_LIBS = @DISASM_LIBS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GENCOMP_ARCH = @GENCOMP_ARCH@ GL_CFLAGS = @GL_CFLAGS@ GL_LIBS = @GL_LIBS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ JPEG_LIBS = @JPEG_LIBS@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ $(SDL_LIBS) $(JPEG_LIBS) $(ZLIB_LIBS) $(DISASM_LIBS) LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ LIBUSB_LIBS = @LIBUSB_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJC = @OBJC@ OBJCDEPMODE = @OBJCDEPMODE@ OBJCFLAGS = @OBJCFLAGS@ OBJEXT = @OBJEXT@ OSMESA_CFLAGS = @OSMESA_CFLAGS@ OSMESA_LIBS = @OSMESA_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SDL2_CFLAGS = @SDL2_CFLAGS@ SDL2_CONFIG = @SDL2_CONFIG@ SDL2_LIBS = @SDL2_LIBS@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TARGET = @TARGET@ VERSION = @VERSION@ WFLAGS = @WFLAGS@ WINDRES = @WINDRES@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_CXX_FOR_BUILD = @ac_ct_CXX_FOR_BUILD@ ac_ct_OBJC = @ac_ct_OBJC@ ac_ct_WINDRES = @ac_ct_WINDRES@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = uae_cpu AM_CPPFLAGS = $(DEFINES) -I$(srcdir)/include -I$(srcdir)/Unix \ -I$(builddir) -I$(srcdir)/natfeat -I$(builddir)/uae_cpu \ -I$(srcdir)/uae_cpu $(am__append_1) $(am__append_2) CFLAGS_NOWARN = $(DBGSP) $(ARCHFLAGS) $(SDL_CFLAGS) $(ZLIB_CFLAGS) $(DISASM_CFLAGS) AM_CFLAGS = $(CFLAGS_NOWARN) $(WFLAGS) AM_CXXFLAGS = $(CFLAGS_NOWARN) $(WFLAGS) AM_LDFLAGS = $(ARCHFLAGS) BEOS_RESOURCES = $(srcdir)/Unix/beos/aranym.rdef BUNDLE_RESOURCES = \ $(srcdir)/Unix/darwin/busybee.icns \ $(top_srcdir)/data/logo.bmp BUNDLE_LOCALIZATON_FOLDERS = \ $(srcdir)/Unix/darwin/*.lproj BUNDLE_CONTENTS = \ $(srcdir)/Unix/darwin/Info.plist \ $(srcdir)/Unix/darwin/PkgInfo APP = aranym APP_ARCH = aranym_$(ARCH) APP_STATIC = aranym_static APP_LIB = libaranym.a APP_BUNDLE = ARAnyM.app noinst_LIBRARIES = libaranym.a @OS_TYPE_darwin_TRUE@bin_SCRIPTS = $(APP_BUNDLE) # these are included elsehere and not compiled separately EXTRA_DIST = uae_cpu/fpu/exceptions.cpp uae_cpu/fpu/exceptions.h \ uae_cpu/fpu/flags.cpp uae_cpu/fpu/flags.h \ uae_cpu/fpu/mathlib.cpp uae_cpu/fpu/mathlib.h \ uae_cpu/fpu/rounding.cpp uae_cpu/fpu/rounding.h $(empty) \ include natfeat/doc natfeat/atari_example.c \ natfeat/atari_example_gfa.lst natfeat/nfosmesa/call-gl.c \ natfeat/nfosmesa/dispatch-gl.c \ natfeat/nfosmesa/paramcount-gl.c $(BEOS_RESOURCES) \ Unix/solaris/which_sparc Unix/cygwin/aranym.ico \ Unix/cygwin/aranym.rc Unix/MacOSX/MacAranym.xcodeproj \ Unix/MacOSX/scripts Unix/MacOSX/README.rtf \ Unix/MacOSX/README_Xcode.rtf Unix/MacOSX/README_ethernet.rtf \ Unix/MacOSX/bpf_helper.c gui-sdl/genmaptab.c gui-sdl/fntconv.c \ $(srcdir)/gui-osx/*.lproj gui-osx/Info.plist \ gui-osx/aranym.icns Unix/darwin/aranym.xcodeproj \ Unix/darwin/aranym.icns Unix/darwin/aranym2.icns \ Unix/darwin/busybee.icns Unix/darwin/busybee112-glossy.xcf \ Unix/darwin/aratapif.sh $(srcdir)/Unix/darwin/*.lproj \ Unix/darwin/Info.plist Unix/darwin/BUILDING_LEOPARD.txt \ Unix/darwin/README_ethernet.txt disasm-main.cpp cdromtest.cpp \ $(empty) aranym_SOURCES = Unix/sysdeps.h main.cpp Unix/main_unix.cpp \ Unix/vm_alloc.cpp Unix/vm_alloc.h Unix/host_clock_unix.cpp \ Unix/vasprintf.c Unix/ansidecl.h acia.cpp acsifdc.cpp \ adler32.c aradata.cpp aranym_exception.cpp ata.cpp \ audio_conv.cpp audio_dma.cpp audio_crossbar.cpp blitter.cpp \ bootos.cpp bootos_tos.cpp bootos_emutos.cpp bootos_linux.cpp \ cdrom.cpp cfgopts.cpp dirty_rects.cpp dsp.cpp \ disasm/disasm-builtin.h disasm/disasm-bfd.h \ disasm/disasm-glue.cpp disasm/disasm-builtin.cpp \ disasm/disasm-x86.cpp disasm/disasm-arm.cpp \ disasm/disasm-arm.h disasm/arm.h disasm/disasm-arm-builtin.c \ disasm/disasm-x86.h disasm/i386.h disasm/i386-opc.h \ disasm/i386-dis-evex.h disasm/disasm-x86-builtin.c emul_op.cpp \ glenums.c natfeats.cpp fakeio.cpp hardware.cpp host.cpp \ host_audio.cpp host_clock.cpp hostscreen.cpp \ hostscreen_opengl.cpp host_surface.cpp host_surface_opengl.cpp \ ide.cpp identify.cpp ikbd.cpp input.cpp joypads.cpp logo.cpp \ sdl_bmp.cpp md5.cpp mfp.cpp midi.cpp midi_file.cpp mmu.cpp \ ndebug.cpp ncr5380.cpp parallel.cpp parallel_file.cpp \ parameters.cpp romdiff.cpp rtc.cpp serial.cpp scc.cpp \ tools.cpp videl.cpp videl_zoom.cpp yamaha.cpp \ natfeat/nf_base.cpp natfeat/nf_base.h natfeat/nf_objs.cpp \ natfeat/nf_objs.h natfeat/xhdi.cpp natfeat/xhdi.h \ natfeat/atari_rootsec.h natfeat/nfaudio.cpp natfeat/nfaudio.h \ natfeat/nfbootstrap.cpp natfeat/nfbootstrap.h \ natfeat/nf_basicset.cpp natfeat/nf_basicset.h \ natfeat/debugprintf.cpp natfeat/debugprintf.h \ natfeat/maptab.cpp natfeat/maptab.h natfeat/nf_scsidrv.cpp \ natfeat/nf_scsidrv.h natfeat/nf_hostexec.cpp \ natfeat/nf_hostexec.h uae_cpu/cpu_emulation.h \ uae_cpu/aranym_glue.cpp uae_cpu/memory.cpp \ uae_cpu/memory-uae.h uae_cpu/newcpu.cpp uae_cpu/newcpu.h \ uae_cpu/noflags.h uae_cpu/registers.h uae_cpu/spcflags.h \ uae_cpu/readcpua.cpp uae_cpu/readcpu.h uae_cpu/cpummu.cpp \ uae_cpu/cpummu.h uae_cpu/fpu/core.h uae_cpu/fpu/fpu.h \ uae_cpu/fpu/impl.h uae_cpu/fpu/types.h $(empty) \ $(am__append_4) $(am__append_5) $(am__append_6) \ $(am__append_7) $(am__append_8) $(am__append_10) \ $(am__append_12) $(am__append_13) $(am__append_14) \ $(am__append_15) $(am__append_16) $(am__append_17) \ $(am__append_19) $(am__append_20) $(am__append_21) \ $(am__append_22) $(am__append_23) $(am__append_24) \ $(am__append_25) $(am__append_26) $(am__append_27) \ $(am__append_28) $(am__append_29) $(am__append_30) \ $(am__append_31) $(am__append_32) $(am__append_33) \ $(am__append_34) $(am__append_35) $(am__append_36) \ $(am__append_37) $(am__append_38) $(am__append_39) \ $(am__append_40) $(am__append_41) $(am__append_42) \ $(am__append_43) $(am__append_44) $(am__append_45) \ $(am__append_46) $(am__append_47) $(am__append_48) \ $(am__append_49) $(am__append_50) $(am__append_51) \ $(am__append_52) $(am__append_53) $(am__append_54) \ $(am__append_55) $(am__append_56) $(am__append_57) \ $(am__append_58) $(am__append_59) $(am__append_60) \ $(am__append_61) $(am__append_62) $(am__append_63) \ $(am__append_64) # # put the objects of generated sources in a convenience library, # so that we can define separate CFLAGS for them # (we want to omit the warning flags) # libaranym_a_SOURCES = uae_cpu/cpudefsa.cpp uae_cpu/cpustbla.cpp \ uae_cpu/cpufunctbla.cpp uae_cpu/cpuemu1.cpp \ uae_cpu/cpuemu2.cpp uae_cpu/cpuemu3.cpp uae_cpu/cpuemu4.cpp \ uae_cpu/cpuemu5.cpp uae_cpu/cpuemu6.cpp uae_cpu/cpuemu7.cpp \ uae_cpu/cpuemu8.cpp $(empty) $(am__append_18) libaranym_a_CFLAGS = $(CFLAGS_NOWARN) libaranym_a_CXXFLAGS = $(CFLAGS_NOWARN) aranym_LDADD = libaranym.a $(am__append_9) $(am__append_11) @CPU_TYPE_x86_64_TRUE@@CPU_TYPE_x86_FALSE@WIN32_RC_OBJS = aranym_rc_x86_64.o @CPU_TYPE_x86_TRUE@WIN32_RC_OBJS = aranym_rc_i386.o aratapif_SOURCES = Unix/aratapif.c CLEANFILES = cdromtest$(EXEEXT) m68kdisasm$(EXEEXT) all: all-recursive .SUFFIXES: .SUFFIXES: .c .cpp .m .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) uae_cpu/$(am__dirstamp): @$(MKDIR_P) uae_cpu @: > uae_cpu/$(am__dirstamp) uae_cpu/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) uae_cpu/$(DEPDIR) @: > uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpudefsa.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpustbla.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpufunctbla.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu1.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu2.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu3.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu4.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu5.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu6.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu7.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu8.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/compiler/$(am__dirstamp): @$(MKDIR_P) uae_cpu/compiler @: > uae_cpu/compiler/$(am__dirstamp) uae_cpu/compiler/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) uae_cpu/compiler/$(DEPDIR) @: > uae_cpu/compiler/$(DEPDIR)/$(am__dirstamp) uae_cpu/compiler/libaranym_a-compstbla.$(OBJEXT): \ uae_cpu/compiler/$(am__dirstamp) \ uae_cpu/compiler/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpustbl_nf.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/compiler/libaranym_a-compemu1.$(OBJEXT): \ uae_cpu/compiler/$(am__dirstamp) \ uae_cpu/compiler/$(DEPDIR)/$(am__dirstamp) uae_cpu/compiler/libaranym_a-compemu2.$(OBJEXT): \ uae_cpu/compiler/$(am__dirstamp) \ uae_cpu/compiler/$(DEPDIR)/$(am__dirstamp) uae_cpu/compiler/libaranym_a-compemu3.$(OBJEXT): \ uae_cpu/compiler/$(am__dirstamp) \ uae_cpu/compiler/$(DEPDIR)/$(am__dirstamp) uae_cpu/compiler/libaranym_a-compemu4.$(OBJEXT): \ uae_cpu/compiler/$(am__dirstamp) \ uae_cpu/compiler/$(DEPDIR)/$(am__dirstamp) uae_cpu/compiler/libaranym_a-compemu5.$(OBJEXT): \ uae_cpu/compiler/$(am__dirstamp) \ uae_cpu/compiler/$(DEPDIR)/$(am__dirstamp) uae_cpu/compiler/libaranym_a-compemu6.$(OBJEXT): \ uae_cpu/compiler/$(am__dirstamp) \ uae_cpu/compiler/$(DEPDIR)/$(am__dirstamp) uae_cpu/compiler/libaranym_a-compemu7.$(OBJEXT): \ uae_cpu/compiler/$(am__dirstamp) \ uae_cpu/compiler/$(DEPDIR)/$(am__dirstamp) uae_cpu/compiler/libaranym_a-compemu8.$(OBJEXT): \ uae_cpu/compiler/$(am__dirstamp) \ uae_cpu/compiler/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu1_nf.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu2_nf.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu3_nf.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu4_nf.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu5_nf.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu6_nf.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu7_nf.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/libaranym_a-cpuemu8_nf.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) libaranym.a: $(libaranym_a_OBJECTS) $(libaranym_a_DEPENDENCIES) $(EXTRA_libaranym_a_DEPENDENCIES) $(AM_V_at)-rm -f libaranym.a $(AM_V_AR)$(libaranym_a_AR) libaranym.a $(libaranym_a_OBJECTS) $(libaranym_a_LIBADD) $(AM_V_at)$(RANLIB) libaranym.a install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) Unix/$(am__dirstamp): @$(MKDIR_P) Unix @: > Unix/$(am__dirstamp) Unix/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) Unix/$(DEPDIR) @: > Unix/$(DEPDIR)/$(am__dirstamp) Unix/main_unix.$(OBJEXT): Unix/$(am__dirstamp) \ Unix/$(DEPDIR)/$(am__dirstamp) Unix/vm_alloc.$(OBJEXT): Unix/$(am__dirstamp) \ Unix/$(DEPDIR)/$(am__dirstamp) Unix/host_clock_unix.$(OBJEXT): Unix/$(am__dirstamp) \ Unix/$(DEPDIR)/$(am__dirstamp) Unix/vasprintf.$(OBJEXT): Unix/$(am__dirstamp) \ Unix/$(DEPDIR)/$(am__dirstamp) disasm/$(am__dirstamp): @$(MKDIR_P) disasm @: > disasm/$(am__dirstamp) disasm/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) disasm/$(DEPDIR) @: > disasm/$(DEPDIR)/$(am__dirstamp) disasm/disasm-glue.$(OBJEXT): disasm/$(am__dirstamp) \ disasm/$(DEPDIR)/$(am__dirstamp) disasm/disasm-builtin.$(OBJEXT): disasm/$(am__dirstamp) \ disasm/$(DEPDIR)/$(am__dirstamp) disasm/disasm-x86.$(OBJEXT): disasm/$(am__dirstamp) \ disasm/$(DEPDIR)/$(am__dirstamp) disasm/disasm-arm.$(OBJEXT): disasm/$(am__dirstamp) \ disasm/$(DEPDIR)/$(am__dirstamp) disasm/disasm-arm-builtin.$(OBJEXT): disasm/$(am__dirstamp) \ disasm/$(DEPDIR)/$(am__dirstamp) disasm/disasm-x86-builtin.$(OBJEXT): disasm/$(am__dirstamp) \ disasm/$(DEPDIR)/$(am__dirstamp) natfeat/$(am__dirstamp): @$(MKDIR_P) natfeat @: > natfeat/$(am__dirstamp) natfeat/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) natfeat/$(DEPDIR) @: > natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nf_base.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nf_objs.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/xhdi.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nfaudio.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nfbootstrap.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nf_basicset.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/debugprintf.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/maptab.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nf_scsidrv.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nf_hostexec.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) uae_cpu/aranym_glue.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/memory.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/newcpu.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/readcpua.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/cpummu.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) gui-sdl/$(am__dirstamp): @$(MKDIR_P) gui-sdl @: > gui-sdl/$(am__dirstamp) gui-sdl/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) gui-sdl/$(DEPDIR) @: > gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/sdlgui.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/dialog.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/file.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/dlgMain.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/dlgAlert.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/dlgDisk.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/dlgFileSelect.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/dlgHostfs.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/dlgHotkeys.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/dlgKeyboard.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/dlgKeypress.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/dlgNetwork.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/dlgOs.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/dlgPartition.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/dlgUsb.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) gui-sdl/dlgVideo.$(OBJEXT): gui-sdl/$(am__dirstamp) \ gui-sdl/$(DEPDIR)/$(am__dirstamp) Unix/getopt_init.$(OBJEXT): Unix/$(am__dirstamp) \ Unix/$(DEPDIR)/$(am__dirstamp) Unix/getopt1.$(OBJEXT): Unix/$(am__dirstamp) \ Unix/$(DEPDIR)/$(am__dirstamp) Unix/getopt.$(OBJEXT): Unix/$(am__dirstamp) \ Unix/$(DEPDIR)/$(am__dirstamp) uae_cpu/debug.$(OBJEXT): uae_cpu/$(am__dirstamp) \ uae_cpu/$(DEPDIR)/$(am__dirstamp) Unix/linux/$(am__dirstamp): @$(MKDIR_P) Unix/linux @: > Unix/linux/$(am__dirstamp) Unix/linux/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) Unix/linux/$(DEPDIR) @: > Unix/linux/$(DEPDIR)/$(am__dirstamp) Unix/linux/parameters_linux.$(OBJEXT): Unix/linux/$(am__dirstamp) \ Unix/linux/$(DEPDIR)/$(am__dirstamp) Unix/linux/ethernet_linux.$(OBJEXT): Unix/linux/$(am__dirstamp) \ Unix/linux/$(DEPDIR)/$(am__dirstamp) Unix/host_filesys_unix.$(OBJEXT): Unix/$(am__dirstamp) \ Unix/$(DEPDIR)/$(am__dirstamp) Unix/cygwin/$(am__dirstamp): @$(MKDIR_P) Unix/cygwin @: > Unix/cygwin/$(am__dirstamp) Unix/cygwin/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) Unix/cygwin/$(DEPDIR) @: > Unix/cygwin/$(DEPDIR)/$(am__dirstamp) Unix/cygwin/parameters_cygwin.$(OBJEXT): Unix/cygwin/$(am__dirstamp) \ Unix/cygwin/$(DEPDIR)/$(am__dirstamp) Unix/cygwin/tools_cygwin.$(OBJEXT): Unix/cygwin/$(am__dirstamp) \ Unix/cygwin/$(DEPDIR)/$(am__dirstamp) Unix/cygwin/ethernet_cygwin.$(OBJEXT): Unix/cygwin/$(am__dirstamp) \ Unix/cygwin/$(DEPDIR)/$(am__dirstamp) Unix/cygwin/win32_supp.$(OBJEXT): Unix/cygwin/$(am__dirstamp) \ Unix/cygwin/$(DEPDIR)/$(am__dirstamp) Unix/parameters_unix.$(OBJEXT): Unix/$(am__dirstamp) \ Unix/$(DEPDIR)/$(am__dirstamp) Unix/irix/$(am__dirstamp): @$(MKDIR_P) Unix/irix @: > Unix/irix/$(am__dirstamp) Unix/irix/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) Unix/irix/$(DEPDIR) @: > Unix/irix/$(DEPDIR)/$(am__dirstamp) Unix/irix/unaligned.$(OBJEXT): Unix/irix/$(am__dirstamp) \ Unix/irix/$(DEPDIR)/$(am__dirstamp) Unix/darwin/$(am__dirstamp): @$(MKDIR_P) Unix/darwin @: > Unix/darwin/$(am__dirstamp) Unix/darwin/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) Unix/darwin/$(DEPDIR) @: > Unix/darwin/$(DEPDIR)/$(am__dirstamp) Unix/darwin/ethernet_darwin.$(OBJEXT): Unix/darwin/$(am__dirstamp) \ Unix/darwin/$(DEPDIR)/$(am__dirstamp) gui-osx/$(am__dirstamp): @$(MKDIR_P) gui-osx @: > gui-osx/$(am__dirstamp) gui-osx/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) gui-osx/$(DEPDIR) @: > gui-osx/$(DEPDIR)/$(am__dirstamp) gui-osx/SDLMain.$(OBJEXT): gui-osx/$(am__dirstamp) \ gui-osx/$(DEPDIR)/$(am__dirstamp) Unix/MacOSX/$(am__dirstamp): @$(MKDIR_P) Unix/MacOSX @: > Unix/MacOSX/$(am__dirstamp) Unix/MacOSX/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) Unix/MacOSX/$(DEPDIR) @: > Unix/MacOSX/$(DEPDIR)/$(am__dirstamp) Unix/MacOSX/parameters_MacOSX.$(OBJEXT): Unix/MacOSX/$(am__dirstamp) \ Unix/MacOSX/$(DEPDIR)/$(am__dirstamp) Unix/MacOSX/fd_trans.$(OBJEXT): Unix/MacOSX/$(am__dirstamp) \ Unix/MacOSX/$(DEPDIR)/$(am__dirstamp) Unix/MacOSX/ethernet_macosx.$(OBJEXT): Unix/MacOSX/$(am__dirstamp) \ Unix/MacOSX/$(DEPDIR)/$(am__dirstamp) Unix/darwin/MachServer.$(OBJEXT): Unix/darwin/$(am__dirstamp) \ Unix/darwin/$(DEPDIR)/$(am__dirstamp) Unix/darwin/MachUser.$(OBJEXT): Unix/darwin/$(am__dirstamp) \ Unix/darwin/$(DEPDIR)/$(am__dirstamp) Unix/beos/$(am__dirstamp): @$(MKDIR_P) Unix/beos @: > Unix/beos/$(am__dirstamp) Unix/beos/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) Unix/beos/$(DEPDIR) @: > Unix/beos/$(DEPDIR)/$(am__dirstamp) Unix/beos/cdrom_beos.$(OBJEXT): Unix/beos/$(am__dirstamp) \ Unix/beos/$(DEPDIR)/$(am__dirstamp) uae_cpu/compiler/compemu_support.$(OBJEXT): \ uae_cpu/compiler/$(am__dirstamp) \ uae_cpu/compiler/$(DEPDIR)/$(am__dirstamp) uae_cpu/compiler/compemu_fpp.$(OBJEXT): \ uae_cpu/compiler/$(am__dirstamp) \ uae_cpu/compiler/$(DEPDIR)/$(am__dirstamp) uae_cpu/fpu/$(am__dirstamp): @$(MKDIR_P) uae_cpu/fpu @: > uae_cpu/fpu/$(am__dirstamp) uae_cpu/fpu/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) uae_cpu/fpu/$(DEPDIR) @: > uae_cpu/fpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/fpu/fpu_ieee.$(OBJEXT): uae_cpu/fpu/$(am__dirstamp) \ uae_cpu/fpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/fpu/fpu_x86.$(OBJEXT): uae_cpu/fpu/$(am__dirstamp) \ uae_cpu/fpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/fpu/fpu_uae.$(OBJEXT): uae_cpu/fpu/$(am__dirstamp) \ uae_cpu/fpu/$(DEPDIR)/$(am__dirstamp) uae_cpu/fpu/fpu_mpfr.$(OBJEXT): uae_cpu/fpu/$(am__dirstamp) \ uae_cpu/fpu/$(DEPDIR)/$(am__dirstamp) natfeat/nfcdrom.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nfcdrom_sdl.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nfcdrom_linux.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nfcdrom_win32.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nfpci.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nfpci_linux.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/ethernet.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/hostfs.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nfclipbrd.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) Unix/cygwin/clipbrd_cygwin.$(OBJEXT): Unix/cygwin/$(am__dirstamp) \ Unix/cygwin/$(DEPDIR)/$(am__dirstamp) Unix/beos/clipbrd_beos.$(OBJEXT): Unix/beos/$(am__dirstamp) \ Unix/beos/$(DEPDIR)/$(am__dirstamp) Unix/clipbrd_x11.$(OBJEXT): Unix/$(am__dirstamp) \ Unix/$(DEPDIR)/$(am__dirstamp) Unix/linux/sigsegv_linux_x86.$(OBJEXT): Unix/linux/$(am__dirstamp) \ Unix/linux/$(DEPDIR)/$(am__dirstamp) Unix/linux/sigsegv_linux_arm.$(OBJEXT): Unix/linux/$(am__dirstamp) \ Unix/linux/$(DEPDIR)/$(am__dirstamp) Unix/xbsd/$(am__dirstamp): @$(MKDIR_P) Unix/xbsd @: > Unix/xbsd/$(am__dirstamp) Unix/xbsd/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) Unix/xbsd/$(DEPDIR) @: > Unix/xbsd/$(DEPDIR)/$(am__dirstamp) Unix/xbsd/sigsegv_xbsd.$(OBJEXT): Unix/xbsd/$(am__dirstamp) \ Unix/xbsd/$(DEPDIR)/$(am__dirstamp) Unix/darwin/sigsegv_darwin_x86.$(OBJEXT): Unix/darwin/$(am__dirstamp) \ Unix/darwin/$(DEPDIR)/$(am__dirstamp) Unix/cygwin/sigsegv_cygwin.$(OBJEXT): Unix/cygwin/$(am__dirstamp) \ Unix/cygwin/$(DEPDIR)/$(am__dirstamp) Unix/solaris/$(am__dirstamp): @$(MKDIR_P) Unix/solaris @: > Unix/solaris/$(am__dirstamp) Unix/solaris/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) Unix/solaris/$(DEPDIR) @: > Unix/solaris/$(DEPDIR)/$(am__dirstamp) Unix/solaris/sigsegv_solaris_x86.$(OBJEXT): \ Unix/solaris/$(am__dirstamp) \ Unix/solaris/$(DEPDIR)/$(am__dirstamp) Unix/beos/sigsegv_beos_x86.$(OBJEXT): Unix/beos/$(am__dirstamp) \ Unix/beos/$(DEPDIR)/$(am__dirstamp) natfeat/usbhost.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nfosmesa.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/osmesa_context.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nfjpeg.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nfvdi.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nfvdi_soft.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) natfeat/nfvdi_opengl.$(OBJEXT): natfeat/$(am__dirstamp) \ natfeat/$(DEPDIR)/$(am__dirstamp) Unix/aratapif.$(OBJEXT): Unix/$(am__dirstamp) \ Unix/$(DEPDIR)/$(am__dirstamp) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f Unix/*.$(OBJEXT) -rm -f Unix/MacOSX/*.$(OBJEXT) -rm -f Unix/beos/*.$(OBJEXT) -rm -f Unix/cygwin/*.$(OBJEXT) -rm -f Unix/darwin/*.$(OBJEXT) -rm -f Unix/irix/*.$(OBJEXT) -rm -f Unix/linux/*.$(OBJEXT) -rm -f Unix/solaris/*.$(OBJEXT) -rm -f Unix/xbsd/*.$(OBJEXT) -rm -f disasm/*.$(OBJEXT) -rm -f gui-osx/*.$(OBJEXT) -rm -f gui-sdl/*.$(OBJEXT) -rm -f natfeat/*.$(OBJEXT) -rm -f uae_cpu/*.$(OBJEXT) -rm -f uae_cpu/compiler/*.$(OBJEXT) -rm -f uae_cpu/fpu/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acia.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acsifdc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adler32.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aradata.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aranym_exception.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ata.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audio_conv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audio_crossbar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audio_dma.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blitter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bootos.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bootos_emutos.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bootos_linux.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bootos_tos.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdrom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfgopts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirty_rects.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsp_core.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsp_cpu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsp_disasm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dyngl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emul_op.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fakeio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glenums.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hardware.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/host.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/host_audio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/host_clock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/host_surface.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/host_surface_opengl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hostscreen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hostscreen_opengl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ide.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/identify.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ikbd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/joypads.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/midi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/midi_file.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/midi_sequencer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/natfeats.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ncr5380.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ndebug.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parallel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parallel_file.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parallel_parport.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parallel_x86.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parameters.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/romdiff.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sdl_bmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/serial.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/serial_port.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tools.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/videl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/videl_zoom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yamaha.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/$(DEPDIR)/aratapif.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/$(DEPDIR)/clipbrd_x11.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/$(DEPDIR)/getopt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/$(DEPDIR)/getopt1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/$(DEPDIR)/getopt_init.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/$(DEPDIR)/host_clock_unix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/$(DEPDIR)/host_filesys_unix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/$(DEPDIR)/main_unix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/$(DEPDIR)/parameters_unix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/$(DEPDIR)/vasprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/$(DEPDIR)/vm_alloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/MacOSX/$(DEPDIR)/ethernet_macosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/MacOSX/$(DEPDIR)/fd_trans.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/MacOSX/$(DEPDIR)/parameters_MacOSX.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/beos/$(DEPDIR)/cdrom_beos.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/beos/$(DEPDIR)/clipbrd_beos.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/beos/$(DEPDIR)/sigsegv_beos_x86.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/cygwin/$(DEPDIR)/clipbrd_cygwin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/cygwin/$(DEPDIR)/ethernet_cygwin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/cygwin/$(DEPDIR)/parameters_cygwin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/cygwin/$(DEPDIR)/sigsegv_cygwin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/cygwin/$(DEPDIR)/tools_cygwin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/cygwin/$(DEPDIR)/win32_supp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/darwin/$(DEPDIR)/MachServer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/darwin/$(DEPDIR)/MachUser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/darwin/$(DEPDIR)/ethernet_darwin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/darwin/$(DEPDIR)/sigsegv_darwin_x86.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/irix/$(DEPDIR)/unaligned.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/linux/$(DEPDIR)/ethernet_linux.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/linux/$(DEPDIR)/parameters_linux.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/linux/$(DEPDIR)/sigsegv_linux_arm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/linux/$(DEPDIR)/sigsegv_linux_x86.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/solaris/$(DEPDIR)/sigsegv_solaris_x86.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@Unix/xbsd/$(DEPDIR)/sigsegv_xbsd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@disasm/$(DEPDIR)/disasm-arm-builtin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@disasm/$(DEPDIR)/disasm-arm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@disasm/$(DEPDIR)/disasm-builtin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@disasm/$(DEPDIR)/disasm-glue.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@disasm/$(DEPDIR)/disasm-x86-builtin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@disasm/$(DEPDIR)/disasm-x86.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-osx/$(DEPDIR)/SDLMain.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/dialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/dlgAlert.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/dlgDisk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/dlgFileSelect.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/dlgHostfs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/dlgHotkeys.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/dlgKeyboard.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/dlgKeypress.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/dlgMain.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/dlgNetwork.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/dlgOs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/dlgPartition.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/dlgUsb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/dlgVideo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/file.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gui-sdl/$(DEPDIR)/sdlgui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/debugprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/ethernet.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/hostfs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/maptab.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nf_base.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nf_basicset.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nf_hostexec.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nf_objs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nf_scsidrv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nfaudio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nfbootstrap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nfcdrom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nfcdrom_linux.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nfcdrom_sdl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nfcdrom_win32.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nfclipbrd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nfjpeg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nfosmesa.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nfpci.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nfpci_linux.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nfvdi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nfvdi_opengl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/nfvdi_soft.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/osmesa_context.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/usbhost.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@natfeat/$(DEPDIR)/xhdi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/aranym_glue.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/cpummu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/debug.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpudefsa.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu1_nf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu2_nf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu3_nf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu4.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu4_nf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu5.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu5_nf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu6.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu6_nf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu7.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu7_nf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu8.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpuemu8_nf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpufunctbla.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpustbl_nf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/libaranym_a-cpustbla.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/memory.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/newcpu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/$(DEPDIR)/readcpua.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/compiler/$(DEPDIR)/compemu_fpp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/compiler/$(DEPDIR)/compemu_support.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu4.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu5.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu6.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu7.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu8.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/compiler/$(DEPDIR)/libaranym_a-compstbla.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/fpu/$(DEPDIR)/fpu_ieee.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/fpu/$(DEPDIR)/fpu_mpfr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/fpu/$(DEPDIR)/fpu_uae.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@uae_cpu/fpu/$(DEPDIR)/fpu_x86.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` uae_cpu/libaranym_a-cpudefsa.o: uae_cpu/cpudefsa.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpudefsa.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpudefsa.Tpo -c -o uae_cpu/libaranym_a-cpudefsa.o `test -f 'uae_cpu/cpudefsa.cpp' || echo '$(srcdir)/'`uae_cpu/cpudefsa.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpudefsa.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpudefsa.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpudefsa.cpp' object='uae_cpu/libaranym_a-cpudefsa.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpudefsa.o `test -f 'uae_cpu/cpudefsa.cpp' || echo '$(srcdir)/'`uae_cpu/cpudefsa.cpp uae_cpu/libaranym_a-cpudefsa.obj: uae_cpu/cpudefsa.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpudefsa.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpudefsa.Tpo -c -o uae_cpu/libaranym_a-cpudefsa.obj `if test -f 'uae_cpu/cpudefsa.cpp'; then $(CYGPATH_W) 'uae_cpu/cpudefsa.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpudefsa.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpudefsa.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpudefsa.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpudefsa.cpp' object='uae_cpu/libaranym_a-cpudefsa.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpudefsa.obj `if test -f 'uae_cpu/cpudefsa.cpp'; then $(CYGPATH_W) 'uae_cpu/cpudefsa.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpudefsa.cpp'; fi` uae_cpu/libaranym_a-cpustbla.o: uae_cpu/cpustbla.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpustbla.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpustbla.Tpo -c -o uae_cpu/libaranym_a-cpustbla.o `test -f 'uae_cpu/cpustbla.cpp' || echo '$(srcdir)/'`uae_cpu/cpustbla.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpustbla.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpustbla.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpustbla.cpp' object='uae_cpu/libaranym_a-cpustbla.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpustbla.o `test -f 'uae_cpu/cpustbla.cpp' || echo '$(srcdir)/'`uae_cpu/cpustbla.cpp uae_cpu/libaranym_a-cpustbla.obj: uae_cpu/cpustbla.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpustbla.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpustbla.Tpo -c -o uae_cpu/libaranym_a-cpustbla.obj `if test -f 'uae_cpu/cpustbla.cpp'; then $(CYGPATH_W) 'uae_cpu/cpustbla.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpustbla.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpustbla.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpustbla.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpustbla.cpp' object='uae_cpu/libaranym_a-cpustbla.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpustbla.obj `if test -f 'uae_cpu/cpustbla.cpp'; then $(CYGPATH_W) 'uae_cpu/cpustbla.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpustbla.cpp'; fi` uae_cpu/libaranym_a-cpufunctbla.o: uae_cpu/cpufunctbla.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpufunctbla.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpufunctbla.Tpo -c -o uae_cpu/libaranym_a-cpufunctbla.o `test -f 'uae_cpu/cpufunctbla.cpp' || echo '$(srcdir)/'`uae_cpu/cpufunctbla.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpufunctbla.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpufunctbla.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpufunctbla.cpp' object='uae_cpu/libaranym_a-cpufunctbla.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpufunctbla.o `test -f 'uae_cpu/cpufunctbla.cpp' || echo '$(srcdir)/'`uae_cpu/cpufunctbla.cpp uae_cpu/libaranym_a-cpufunctbla.obj: uae_cpu/cpufunctbla.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpufunctbla.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpufunctbla.Tpo -c -o uae_cpu/libaranym_a-cpufunctbla.obj `if test -f 'uae_cpu/cpufunctbla.cpp'; then $(CYGPATH_W) 'uae_cpu/cpufunctbla.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpufunctbla.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpufunctbla.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpufunctbla.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpufunctbla.cpp' object='uae_cpu/libaranym_a-cpufunctbla.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpufunctbla.obj `if test -f 'uae_cpu/cpufunctbla.cpp'; then $(CYGPATH_W) 'uae_cpu/cpufunctbla.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpufunctbla.cpp'; fi` uae_cpu/libaranym_a-cpuemu1.o: uae_cpu/cpuemu1.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu1.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu1.Tpo -c -o uae_cpu/libaranym_a-cpuemu1.o `test -f 'uae_cpu/cpuemu1.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu1.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu1.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu1.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu1.cpp' object='uae_cpu/libaranym_a-cpuemu1.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu1.o `test -f 'uae_cpu/cpuemu1.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu1.cpp uae_cpu/libaranym_a-cpuemu1.obj: uae_cpu/cpuemu1.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu1.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu1.Tpo -c -o uae_cpu/libaranym_a-cpuemu1.obj `if test -f 'uae_cpu/cpuemu1.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu1.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu1.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu1.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu1.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu1.cpp' object='uae_cpu/libaranym_a-cpuemu1.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu1.obj `if test -f 'uae_cpu/cpuemu1.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu1.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu1.cpp'; fi` uae_cpu/libaranym_a-cpuemu2.o: uae_cpu/cpuemu2.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu2.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu2.Tpo -c -o uae_cpu/libaranym_a-cpuemu2.o `test -f 'uae_cpu/cpuemu2.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu2.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu2.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu2.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu2.cpp' object='uae_cpu/libaranym_a-cpuemu2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu2.o `test -f 'uae_cpu/cpuemu2.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu2.cpp uae_cpu/libaranym_a-cpuemu2.obj: uae_cpu/cpuemu2.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu2.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu2.Tpo -c -o uae_cpu/libaranym_a-cpuemu2.obj `if test -f 'uae_cpu/cpuemu2.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu2.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu2.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu2.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu2.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu2.cpp' object='uae_cpu/libaranym_a-cpuemu2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu2.obj `if test -f 'uae_cpu/cpuemu2.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu2.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu2.cpp'; fi` uae_cpu/libaranym_a-cpuemu3.o: uae_cpu/cpuemu3.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu3.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu3.Tpo -c -o uae_cpu/libaranym_a-cpuemu3.o `test -f 'uae_cpu/cpuemu3.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu3.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu3.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu3.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu3.cpp' object='uae_cpu/libaranym_a-cpuemu3.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu3.o `test -f 'uae_cpu/cpuemu3.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu3.cpp uae_cpu/libaranym_a-cpuemu3.obj: uae_cpu/cpuemu3.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu3.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu3.Tpo -c -o uae_cpu/libaranym_a-cpuemu3.obj `if test -f 'uae_cpu/cpuemu3.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu3.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu3.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu3.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu3.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu3.cpp' object='uae_cpu/libaranym_a-cpuemu3.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu3.obj `if test -f 'uae_cpu/cpuemu3.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu3.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu3.cpp'; fi` uae_cpu/libaranym_a-cpuemu4.o: uae_cpu/cpuemu4.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu4.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu4.Tpo -c -o uae_cpu/libaranym_a-cpuemu4.o `test -f 'uae_cpu/cpuemu4.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu4.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu4.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu4.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu4.cpp' object='uae_cpu/libaranym_a-cpuemu4.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu4.o `test -f 'uae_cpu/cpuemu4.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu4.cpp uae_cpu/libaranym_a-cpuemu4.obj: uae_cpu/cpuemu4.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu4.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu4.Tpo -c -o uae_cpu/libaranym_a-cpuemu4.obj `if test -f 'uae_cpu/cpuemu4.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu4.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu4.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu4.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu4.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu4.cpp' object='uae_cpu/libaranym_a-cpuemu4.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu4.obj `if test -f 'uae_cpu/cpuemu4.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu4.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu4.cpp'; fi` uae_cpu/libaranym_a-cpuemu5.o: uae_cpu/cpuemu5.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu5.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu5.Tpo -c -o uae_cpu/libaranym_a-cpuemu5.o `test -f 'uae_cpu/cpuemu5.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu5.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu5.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu5.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu5.cpp' object='uae_cpu/libaranym_a-cpuemu5.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu5.o `test -f 'uae_cpu/cpuemu5.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu5.cpp uae_cpu/libaranym_a-cpuemu5.obj: uae_cpu/cpuemu5.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu5.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu5.Tpo -c -o uae_cpu/libaranym_a-cpuemu5.obj `if test -f 'uae_cpu/cpuemu5.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu5.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu5.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu5.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu5.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu5.cpp' object='uae_cpu/libaranym_a-cpuemu5.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu5.obj `if test -f 'uae_cpu/cpuemu5.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu5.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu5.cpp'; fi` uae_cpu/libaranym_a-cpuemu6.o: uae_cpu/cpuemu6.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu6.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu6.Tpo -c -o uae_cpu/libaranym_a-cpuemu6.o `test -f 'uae_cpu/cpuemu6.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu6.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu6.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu6.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu6.cpp' object='uae_cpu/libaranym_a-cpuemu6.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu6.o `test -f 'uae_cpu/cpuemu6.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu6.cpp uae_cpu/libaranym_a-cpuemu6.obj: uae_cpu/cpuemu6.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu6.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu6.Tpo -c -o uae_cpu/libaranym_a-cpuemu6.obj `if test -f 'uae_cpu/cpuemu6.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu6.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu6.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu6.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu6.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu6.cpp' object='uae_cpu/libaranym_a-cpuemu6.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu6.obj `if test -f 'uae_cpu/cpuemu6.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu6.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu6.cpp'; fi` uae_cpu/libaranym_a-cpuemu7.o: uae_cpu/cpuemu7.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu7.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu7.Tpo -c -o uae_cpu/libaranym_a-cpuemu7.o `test -f 'uae_cpu/cpuemu7.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu7.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu7.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu7.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu7.cpp' object='uae_cpu/libaranym_a-cpuemu7.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu7.o `test -f 'uae_cpu/cpuemu7.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu7.cpp uae_cpu/libaranym_a-cpuemu7.obj: uae_cpu/cpuemu7.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu7.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu7.Tpo -c -o uae_cpu/libaranym_a-cpuemu7.obj `if test -f 'uae_cpu/cpuemu7.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu7.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu7.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu7.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu7.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu7.cpp' object='uae_cpu/libaranym_a-cpuemu7.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu7.obj `if test -f 'uae_cpu/cpuemu7.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu7.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu7.cpp'; fi` uae_cpu/libaranym_a-cpuemu8.o: uae_cpu/cpuemu8.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu8.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu8.Tpo -c -o uae_cpu/libaranym_a-cpuemu8.o `test -f 'uae_cpu/cpuemu8.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu8.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu8.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu8.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu8.cpp' object='uae_cpu/libaranym_a-cpuemu8.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu8.o `test -f 'uae_cpu/cpuemu8.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu8.cpp uae_cpu/libaranym_a-cpuemu8.obj: uae_cpu/cpuemu8.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu8.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu8.Tpo -c -o uae_cpu/libaranym_a-cpuemu8.obj `if test -f 'uae_cpu/cpuemu8.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu8.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu8.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu8.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu8.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu8.cpp' object='uae_cpu/libaranym_a-cpuemu8.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu8.obj `if test -f 'uae_cpu/cpuemu8.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu8.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu8.cpp'; fi` uae_cpu/compiler/libaranym_a-compstbla.o: uae_cpu/compiler/compstbla.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compstbla.o -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compstbla.Tpo -c -o uae_cpu/compiler/libaranym_a-compstbla.o `test -f 'uae_cpu/compiler/compstbla.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compstbla.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compstbla.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compstbla.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compstbla.cpp' object='uae_cpu/compiler/libaranym_a-compstbla.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compstbla.o `test -f 'uae_cpu/compiler/compstbla.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compstbla.cpp uae_cpu/compiler/libaranym_a-compstbla.obj: uae_cpu/compiler/compstbla.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compstbla.obj -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compstbla.Tpo -c -o uae_cpu/compiler/libaranym_a-compstbla.obj `if test -f 'uae_cpu/compiler/compstbla.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compstbla.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compstbla.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compstbla.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compstbla.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compstbla.cpp' object='uae_cpu/compiler/libaranym_a-compstbla.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compstbla.obj `if test -f 'uae_cpu/compiler/compstbla.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compstbla.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compstbla.cpp'; fi` uae_cpu/libaranym_a-cpustbl_nf.o: uae_cpu/cpustbl_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpustbl_nf.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpustbl_nf.Tpo -c -o uae_cpu/libaranym_a-cpustbl_nf.o `test -f 'uae_cpu/cpustbl_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpustbl_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpustbl_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpustbl_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpustbl_nf.cpp' object='uae_cpu/libaranym_a-cpustbl_nf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpustbl_nf.o `test -f 'uae_cpu/cpustbl_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpustbl_nf.cpp uae_cpu/libaranym_a-cpustbl_nf.obj: uae_cpu/cpustbl_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpustbl_nf.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpustbl_nf.Tpo -c -o uae_cpu/libaranym_a-cpustbl_nf.obj `if test -f 'uae_cpu/cpustbl_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpustbl_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpustbl_nf.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpustbl_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpustbl_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpustbl_nf.cpp' object='uae_cpu/libaranym_a-cpustbl_nf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpustbl_nf.obj `if test -f 'uae_cpu/cpustbl_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpustbl_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpustbl_nf.cpp'; fi` uae_cpu/compiler/libaranym_a-compemu1.o: uae_cpu/compiler/compemu1.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu1.o -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu1.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu1.o `test -f 'uae_cpu/compiler/compemu1.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu1.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu1.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu1.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu1.cpp' object='uae_cpu/compiler/libaranym_a-compemu1.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu1.o `test -f 'uae_cpu/compiler/compemu1.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu1.cpp uae_cpu/compiler/libaranym_a-compemu1.obj: uae_cpu/compiler/compemu1.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu1.obj -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu1.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu1.obj `if test -f 'uae_cpu/compiler/compemu1.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu1.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu1.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu1.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu1.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu1.cpp' object='uae_cpu/compiler/libaranym_a-compemu1.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu1.obj `if test -f 'uae_cpu/compiler/compemu1.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu1.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu1.cpp'; fi` uae_cpu/compiler/libaranym_a-compemu2.o: uae_cpu/compiler/compemu2.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu2.o -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu2.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu2.o `test -f 'uae_cpu/compiler/compemu2.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu2.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu2.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu2.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu2.cpp' object='uae_cpu/compiler/libaranym_a-compemu2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu2.o `test -f 'uae_cpu/compiler/compemu2.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu2.cpp uae_cpu/compiler/libaranym_a-compemu2.obj: uae_cpu/compiler/compemu2.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu2.obj -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu2.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu2.obj `if test -f 'uae_cpu/compiler/compemu2.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu2.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu2.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu2.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu2.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu2.cpp' object='uae_cpu/compiler/libaranym_a-compemu2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu2.obj `if test -f 'uae_cpu/compiler/compemu2.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu2.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu2.cpp'; fi` uae_cpu/compiler/libaranym_a-compemu3.o: uae_cpu/compiler/compemu3.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu3.o -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu3.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu3.o `test -f 'uae_cpu/compiler/compemu3.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu3.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu3.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu3.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu3.cpp' object='uae_cpu/compiler/libaranym_a-compemu3.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu3.o `test -f 'uae_cpu/compiler/compemu3.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu3.cpp uae_cpu/compiler/libaranym_a-compemu3.obj: uae_cpu/compiler/compemu3.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu3.obj -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu3.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu3.obj `if test -f 'uae_cpu/compiler/compemu3.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu3.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu3.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu3.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu3.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu3.cpp' object='uae_cpu/compiler/libaranym_a-compemu3.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu3.obj `if test -f 'uae_cpu/compiler/compemu3.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu3.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu3.cpp'; fi` uae_cpu/compiler/libaranym_a-compemu4.o: uae_cpu/compiler/compemu4.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu4.o -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu4.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu4.o `test -f 'uae_cpu/compiler/compemu4.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu4.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu4.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu4.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu4.cpp' object='uae_cpu/compiler/libaranym_a-compemu4.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu4.o `test -f 'uae_cpu/compiler/compemu4.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu4.cpp uae_cpu/compiler/libaranym_a-compemu4.obj: uae_cpu/compiler/compemu4.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu4.obj -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu4.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu4.obj `if test -f 'uae_cpu/compiler/compemu4.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu4.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu4.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu4.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu4.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu4.cpp' object='uae_cpu/compiler/libaranym_a-compemu4.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu4.obj `if test -f 'uae_cpu/compiler/compemu4.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu4.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu4.cpp'; fi` uae_cpu/compiler/libaranym_a-compemu5.o: uae_cpu/compiler/compemu5.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu5.o -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu5.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu5.o `test -f 'uae_cpu/compiler/compemu5.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu5.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu5.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu5.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu5.cpp' object='uae_cpu/compiler/libaranym_a-compemu5.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu5.o `test -f 'uae_cpu/compiler/compemu5.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu5.cpp uae_cpu/compiler/libaranym_a-compemu5.obj: uae_cpu/compiler/compemu5.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu5.obj -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu5.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu5.obj `if test -f 'uae_cpu/compiler/compemu5.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu5.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu5.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu5.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu5.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu5.cpp' object='uae_cpu/compiler/libaranym_a-compemu5.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu5.obj `if test -f 'uae_cpu/compiler/compemu5.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu5.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu5.cpp'; fi` uae_cpu/compiler/libaranym_a-compemu6.o: uae_cpu/compiler/compemu6.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu6.o -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu6.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu6.o `test -f 'uae_cpu/compiler/compemu6.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu6.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu6.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu6.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu6.cpp' object='uae_cpu/compiler/libaranym_a-compemu6.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu6.o `test -f 'uae_cpu/compiler/compemu6.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu6.cpp uae_cpu/compiler/libaranym_a-compemu6.obj: uae_cpu/compiler/compemu6.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu6.obj -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu6.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu6.obj `if test -f 'uae_cpu/compiler/compemu6.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu6.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu6.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu6.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu6.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu6.cpp' object='uae_cpu/compiler/libaranym_a-compemu6.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu6.obj `if test -f 'uae_cpu/compiler/compemu6.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu6.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu6.cpp'; fi` uae_cpu/compiler/libaranym_a-compemu7.o: uae_cpu/compiler/compemu7.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu7.o -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu7.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu7.o `test -f 'uae_cpu/compiler/compemu7.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu7.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu7.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu7.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu7.cpp' object='uae_cpu/compiler/libaranym_a-compemu7.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu7.o `test -f 'uae_cpu/compiler/compemu7.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu7.cpp uae_cpu/compiler/libaranym_a-compemu7.obj: uae_cpu/compiler/compemu7.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu7.obj -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu7.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu7.obj `if test -f 'uae_cpu/compiler/compemu7.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu7.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu7.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu7.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu7.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu7.cpp' object='uae_cpu/compiler/libaranym_a-compemu7.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu7.obj `if test -f 'uae_cpu/compiler/compemu7.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu7.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu7.cpp'; fi` uae_cpu/compiler/libaranym_a-compemu8.o: uae_cpu/compiler/compemu8.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu8.o -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu8.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu8.o `test -f 'uae_cpu/compiler/compemu8.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu8.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu8.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu8.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu8.cpp' object='uae_cpu/compiler/libaranym_a-compemu8.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu8.o `test -f 'uae_cpu/compiler/compemu8.cpp' || echo '$(srcdir)/'`uae_cpu/compiler/compemu8.cpp uae_cpu/compiler/libaranym_a-compemu8.obj: uae_cpu/compiler/compemu8.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/compiler/libaranym_a-compemu8.obj -MD -MP -MF uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu8.Tpo -c -o uae_cpu/compiler/libaranym_a-compemu8.obj `if test -f 'uae_cpu/compiler/compemu8.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu8.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu8.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu8.Tpo uae_cpu/compiler/$(DEPDIR)/libaranym_a-compemu8.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/compiler/compemu8.cpp' object='uae_cpu/compiler/libaranym_a-compemu8.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/compiler/libaranym_a-compemu8.obj `if test -f 'uae_cpu/compiler/compemu8.cpp'; then $(CYGPATH_W) 'uae_cpu/compiler/compemu8.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/compiler/compemu8.cpp'; fi` uae_cpu/libaranym_a-cpuemu1_nf.o: uae_cpu/cpuemu1_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu1_nf.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu1_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu1_nf.o `test -f 'uae_cpu/cpuemu1_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu1_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu1_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu1_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu1_nf.cpp' object='uae_cpu/libaranym_a-cpuemu1_nf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu1_nf.o `test -f 'uae_cpu/cpuemu1_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu1_nf.cpp uae_cpu/libaranym_a-cpuemu1_nf.obj: uae_cpu/cpuemu1_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu1_nf.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu1_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu1_nf.obj `if test -f 'uae_cpu/cpuemu1_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu1_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu1_nf.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu1_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu1_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu1_nf.cpp' object='uae_cpu/libaranym_a-cpuemu1_nf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu1_nf.obj `if test -f 'uae_cpu/cpuemu1_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu1_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu1_nf.cpp'; fi` uae_cpu/libaranym_a-cpuemu2_nf.o: uae_cpu/cpuemu2_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu2_nf.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu2_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu2_nf.o `test -f 'uae_cpu/cpuemu2_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu2_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu2_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu2_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu2_nf.cpp' object='uae_cpu/libaranym_a-cpuemu2_nf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu2_nf.o `test -f 'uae_cpu/cpuemu2_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu2_nf.cpp uae_cpu/libaranym_a-cpuemu2_nf.obj: uae_cpu/cpuemu2_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu2_nf.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu2_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu2_nf.obj `if test -f 'uae_cpu/cpuemu2_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu2_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu2_nf.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu2_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu2_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu2_nf.cpp' object='uae_cpu/libaranym_a-cpuemu2_nf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu2_nf.obj `if test -f 'uae_cpu/cpuemu2_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu2_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu2_nf.cpp'; fi` uae_cpu/libaranym_a-cpuemu3_nf.o: uae_cpu/cpuemu3_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu3_nf.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu3_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu3_nf.o `test -f 'uae_cpu/cpuemu3_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu3_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu3_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu3_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu3_nf.cpp' object='uae_cpu/libaranym_a-cpuemu3_nf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu3_nf.o `test -f 'uae_cpu/cpuemu3_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu3_nf.cpp uae_cpu/libaranym_a-cpuemu3_nf.obj: uae_cpu/cpuemu3_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu3_nf.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu3_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu3_nf.obj `if test -f 'uae_cpu/cpuemu3_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu3_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu3_nf.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu3_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu3_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu3_nf.cpp' object='uae_cpu/libaranym_a-cpuemu3_nf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu3_nf.obj `if test -f 'uae_cpu/cpuemu3_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu3_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu3_nf.cpp'; fi` uae_cpu/libaranym_a-cpuemu4_nf.o: uae_cpu/cpuemu4_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu4_nf.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu4_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu4_nf.o `test -f 'uae_cpu/cpuemu4_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu4_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu4_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu4_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu4_nf.cpp' object='uae_cpu/libaranym_a-cpuemu4_nf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu4_nf.o `test -f 'uae_cpu/cpuemu4_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu4_nf.cpp uae_cpu/libaranym_a-cpuemu4_nf.obj: uae_cpu/cpuemu4_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu4_nf.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu4_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu4_nf.obj `if test -f 'uae_cpu/cpuemu4_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu4_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu4_nf.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu4_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu4_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu4_nf.cpp' object='uae_cpu/libaranym_a-cpuemu4_nf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu4_nf.obj `if test -f 'uae_cpu/cpuemu4_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu4_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu4_nf.cpp'; fi` uae_cpu/libaranym_a-cpuemu5_nf.o: uae_cpu/cpuemu5_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu5_nf.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu5_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu5_nf.o `test -f 'uae_cpu/cpuemu5_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu5_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu5_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu5_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu5_nf.cpp' object='uae_cpu/libaranym_a-cpuemu5_nf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu5_nf.o `test -f 'uae_cpu/cpuemu5_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu5_nf.cpp uae_cpu/libaranym_a-cpuemu5_nf.obj: uae_cpu/cpuemu5_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu5_nf.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu5_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu5_nf.obj `if test -f 'uae_cpu/cpuemu5_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu5_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu5_nf.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu5_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu5_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu5_nf.cpp' object='uae_cpu/libaranym_a-cpuemu5_nf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu5_nf.obj `if test -f 'uae_cpu/cpuemu5_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu5_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu5_nf.cpp'; fi` uae_cpu/libaranym_a-cpuemu6_nf.o: uae_cpu/cpuemu6_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu6_nf.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu6_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu6_nf.o `test -f 'uae_cpu/cpuemu6_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu6_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu6_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu6_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu6_nf.cpp' object='uae_cpu/libaranym_a-cpuemu6_nf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu6_nf.o `test -f 'uae_cpu/cpuemu6_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu6_nf.cpp uae_cpu/libaranym_a-cpuemu6_nf.obj: uae_cpu/cpuemu6_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu6_nf.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu6_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu6_nf.obj `if test -f 'uae_cpu/cpuemu6_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu6_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu6_nf.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu6_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu6_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu6_nf.cpp' object='uae_cpu/libaranym_a-cpuemu6_nf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu6_nf.obj `if test -f 'uae_cpu/cpuemu6_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu6_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu6_nf.cpp'; fi` uae_cpu/libaranym_a-cpuemu7_nf.o: uae_cpu/cpuemu7_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu7_nf.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu7_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu7_nf.o `test -f 'uae_cpu/cpuemu7_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu7_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu7_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu7_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu7_nf.cpp' object='uae_cpu/libaranym_a-cpuemu7_nf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu7_nf.o `test -f 'uae_cpu/cpuemu7_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu7_nf.cpp uae_cpu/libaranym_a-cpuemu7_nf.obj: uae_cpu/cpuemu7_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu7_nf.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu7_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu7_nf.obj `if test -f 'uae_cpu/cpuemu7_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu7_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu7_nf.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu7_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu7_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu7_nf.cpp' object='uae_cpu/libaranym_a-cpuemu7_nf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu7_nf.obj `if test -f 'uae_cpu/cpuemu7_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu7_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu7_nf.cpp'; fi` uae_cpu/libaranym_a-cpuemu8_nf.o: uae_cpu/cpuemu8_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu8_nf.o -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu8_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu8_nf.o `test -f 'uae_cpu/cpuemu8_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu8_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu8_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu8_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu8_nf.cpp' object='uae_cpu/libaranym_a-cpuemu8_nf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu8_nf.o `test -f 'uae_cpu/cpuemu8_nf.cpp' || echo '$(srcdir)/'`uae_cpu/cpuemu8_nf.cpp uae_cpu/libaranym_a-cpuemu8_nf.obj: uae_cpu/cpuemu8_nf.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -MT uae_cpu/libaranym_a-cpuemu8_nf.obj -MD -MP -MF uae_cpu/$(DEPDIR)/libaranym_a-cpuemu8_nf.Tpo -c -o uae_cpu/libaranym_a-cpuemu8_nf.obj `if test -f 'uae_cpu/cpuemu8_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu8_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu8_nf.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) uae_cpu/$(DEPDIR)/libaranym_a-cpuemu8_nf.Tpo uae_cpu/$(DEPDIR)/libaranym_a-cpuemu8_nf.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='uae_cpu/cpuemu8_nf.cpp' object='uae_cpu/libaranym_a-cpuemu8_nf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libaranym_a_CXXFLAGS) $(CXXFLAGS) -c -o uae_cpu/libaranym_a-cpuemu8_nf.obj `if test -f 'uae_cpu/cpuemu8_nf.cpp'; then $(CYGPATH_W) 'uae_cpu/cpuemu8_nf.cpp'; else $(CYGPATH_W) '$(srcdir)/uae_cpu/cpuemu8_nf.cpp'; fi` .m.o: @am__fastdepOBJC_TRUE@ $(AM_V_OBJC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepOBJC_TRUE@ $(OBJCCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepOBJC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepOBJC_FALSE@ $(AM_V_OBJC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepOBJC_FALSE@ $(AM_V_OBJC@am__nodep@)$(OBJCCOMPILE) -c -o $@ $< .m.obj: @am__fastdepOBJC_TRUE@ $(AM_V_OBJC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepOBJC_TRUE@ $(OBJCCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepOBJC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepOBJC_FALSE@ $(AM_V_OBJC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepOBJC_FALSE@ $(AM_V_OBJC@am__nodep@)$(OBJCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(SCRIPTS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f Unix/$(DEPDIR)/$(am__dirstamp) -rm -f Unix/$(am__dirstamp) -rm -f Unix/MacOSX/$(DEPDIR)/$(am__dirstamp) -rm -f Unix/MacOSX/$(am__dirstamp) -rm -f Unix/beos/$(DEPDIR)/$(am__dirstamp) -rm -f Unix/beos/$(am__dirstamp) -rm -f Unix/cygwin/$(DEPDIR)/$(am__dirstamp) -rm -f Unix/cygwin/$(am__dirstamp) -rm -f Unix/darwin/$(DEPDIR)/$(am__dirstamp) -rm -f Unix/darwin/$(am__dirstamp) -rm -f Unix/irix/$(DEPDIR)/$(am__dirstamp) -rm -f Unix/irix/$(am__dirstamp) -rm -f Unix/linux/$(DEPDIR)/$(am__dirstamp) -rm -f Unix/linux/$(am__dirstamp) -rm -f Unix/solaris/$(DEPDIR)/$(am__dirstamp) -rm -f Unix/solaris/$(am__dirstamp) -rm -f Unix/xbsd/$(DEPDIR)/$(am__dirstamp) -rm -f Unix/xbsd/$(am__dirstamp) -rm -f disasm/$(DEPDIR)/$(am__dirstamp) -rm -f disasm/$(am__dirstamp) -rm -f gui-osx/$(DEPDIR)/$(am__dirstamp) -rm -f gui-osx/$(am__dirstamp) -rm -f gui-sdl/$(DEPDIR)/$(am__dirstamp) -rm -f gui-sdl/$(am__dirstamp) -rm -f natfeat/$(DEPDIR)/$(am__dirstamp) -rm -f natfeat/$(am__dirstamp) -rm -f uae_cpu/$(DEPDIR)/$(am__dirstamp) -rm -f uae_cpu/$(am__dirstamp) -rm -f uae_cpu/compiler/$(DEPDIR)/$(am__dirstamp) -rm -f uae_cpu/compiler/$(am__dirstamp) -rm -f uae_cpu/fpu/$(DEPDIR)/$(am__dirstamp) -rm -f uae_cpu/fpu/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) Unix/$(DEPDIR) Unix/MacOSX/$(DEPDIR) Unix/beos/$(DEPDIR) Unix/cygwin/$(DEPDIR) Unix/darwin/$(DEPDIR) Unix/irix/$(DEPDIR) Unix/linux/$(DEPDIR) Unix/solaris/$(DEPDIR) Unix/xbsd/$(DEPDIR) disasm/$(DEPDIR) gui-osx/$(DEPDIR) gui-sdl/$(DEPDIR) natfeat/$(DEPDIR) uae_cpu/$(DEPDIR) uae_cpu/compiler/$(DEPDIR) uae_cpu/fpu/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-binSCRIPTS @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-exec-hook install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) Unix/$(DEPDIR) Unix/MacOSX/$(DEPDIR) Unix/beos/$(DEPDIR) Unix/cygwin/$(DEPDIR) Unix/darwin/$(DEPDIR) Unix/irix/$(DEPDIR) Unix/linux/$(DEPDIR) Unix/solaris/$(DEPDIR) Unix/xbsd/$(DEPDIR) disasm/$(DEPDIR) gui-osx/$(DEPDIR) gui-sdl/$(DEPDIR) natfeat/$(DEPDIR) uae_cpu/$(DEPDIR) uae_cpu/compiler/$(DEPDIR) uae_cpu/fpu/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS .MAKE: $(am__recursive_targets) install-am install-exec-am \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-binPROGRAMS clean-generic \ clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-binSCRIPTS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-exec-hook install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \ uninstall-binSCRIPTS .PRECIOUS: Makefile aranym_rc_i386.o: $(srcdir)/Unix/cygwin/aranym.rc $(WINDRES) -o $@ --output-format coff --target pe-i386 $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $< aranym_rc_x86_64.o: $(srcdir)/Unix/cygwin/aranym.rc $(WINDRES) -o $@ --output-format coff --target pe-x86-64 $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $< # previously, the executables where built in the top level # directory, and some external build scripts (e.g. rpm) excpect # them there. Remove this copy once the scripts have been updated aranym$(EXEEXT): $(aranym_OBJECTS) $(aranym_DEPENDENCIES) $(EXTRA_aranym_DEPENDENCIES) @rm -f $@ $(AM_V_CXXLD)$(CXXLINK) $(aranym_OBJECTS) $(aranym_LDADD) $(LIBS) @OS_TYPE_beos_TRUE@ $(BEOS_RC) -o $(APP).rsrc $(BEOS_RESOURCES) @OS_TYPE_beos_TRUE@ $(BEOS_XRES) -o $(APP) $(APP).rsrc @OS_TYPE_beos_TRUE@ versfile="$(srcdir)/include/version.h"; \ @OS_TYPE_beos_TRUE@ major=`sed -n -e 's/#define[ \\t]*VER_MAJOR[ \\t]*\\([0-9]*\\)/\\1/p' $$versfile`; \ @OS_TYPE_beos_TRUE@ minor=`sed -n -e 's/#define[ \\t]*VER_MINOR[ \\t]*\\([0-9]*\\)/\\1/p' $$versfile`; \ @OS_TYPE_beos_TRUE@ micro=`sed -n -e 's/#define[ \\t]*VER_MICRO[ \\t]*\\([0-9]*\\)/\\1/p' $$versfile`; \ @OS_TYPE_beos_TRUE@ $(BEOS_SETVERSION) $(APP) \ @OS_TYPE_beos_TRUE@ -app $$major $$minor $$micro d 0 \ @OS_TYPE_beos_TRUE@ -short "$(APP) $(PACKAGE_VERSION)" \ @OS_TYPE_beos_TRUE@ -long "$(APP) $(PACKAGE_VERSION)" rm -f ../$@ cp $@ ../$@ # previously, the executables where built in the top level # directory, and some external build scripts (e.g. rpm) excpect # them there. Remove this copy once the scripts have been updated aratapif$(EXEEXT): $(aratapif_OBJECTS) $(aratapif_DEPENDENCIES) $(EXTRA_aratapif_DEPENDENCIES) @rm -f $@ $(AM_V_CCLD)$(LINK) $(aratapif_OBJECTS) $(aratapif_LDADD) $(LIBS) rm -f ../$@ cp $@ ../$@ install-exec-hook: @USE_JIT_TRUE@ cd "$(DESTDIR)$(bindir)" && mv aranym$(EXEEXT) aranym-jit$(EXEEXT) @FULLMMU_TRUE@ cd "$(DESTDIR)$(bindir)" && mv aranym$(EXEEXT) aranym-mmu$(EXEEXT) $(APP_BUNDLE): $(APP) rm -rf $(APP_BUNDLE) mkdir -p $(APP_BUNDLE)/Contents cp -r $(BUNDLE_CONTENTS) $(APP_BUNDLE)/Contents mkdir -p $(APP_BUNDLE)/Contents/MacOS cp $(APP) $(APP_BUNDLE)/Contents/MacOS mkdir -p $(APP_BUNDLE)/Contents/Resources mkdir -p $(APP_BUNDLE)/Contents/Frameworks for fwFolder in $(BUNDLE_FRAMEWORKS); do \ if test -d $$fwFolder; then \ cp -rp $$fwFolder $(APP_BUNDLE)/Contents/Frameworks/; \ fi; \ done cp -r $(BUNDLE_RESOURCES) $(APP_BUNDLE)/Contents/Resources for locFolder in $(BUNDLE_LOCALIZATON_FOLDERS); do \ cp -R $$locFolder $(APP_BUNDLE)/Contents/Resources/; \ done find $(APP_BUNDLE)/Contents/Resources -type d -and \( -name CVS -or -name \*~.nib \) -or -name \*~ -or -name \*.bak | xargs rm -rf # For tests m68kdisasm: disasm-main.cpp disasm-glue.cpp disasm-builtin.cpp $(AM_V_CXXLD)$(CXX) $(LDFLAGS) $(AM_CPPFLAGS) $(CXXFLAGS) $(DEFAULT_INCLUDES) $(CPPFLAGS) $(DEFS) $(WFLAGS) $(CFLAGS) $(SDL_CFLAGS) $(ARCHFLAGS) -o $@ $(srcdir)/disasm-main.cpp $(DISASM_LIBS) cdromtest: $(srcdir)/cdromtest.cpp $(srcdir)/natfeat/nfcdrom.cpp $(srcdir)/natfeat/nfcdrom_sdl.cpp $(srcdir)/natfeat/nfcdrom_linux.cpp $(srcdir)/natfeat/nfcdrom_win32.cpp $(AM_V_CC)$(CXX) $(LDFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(DEFS) $(WFLAGS) $(CFLAGS) $(ARCHFLAGS) -o $@ $(srcdir)/cdromtest.cpp $(LIBS) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: aranym-1.1.0/src/yamaha.cpp0000664000175000017500000000546113454637622013743 0ustar joyjoy/* * yamaha.cpp - Atari YM2149 emulation code * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "yamaha.h" #include "parameters.h" #include "parallel.h" #include "parallel_file.h" #ifdef ENABLE_PARALLELX86 #include "parallel_x86.h" #endif #ifdef ENABLE_PARALLELPARPORT #include "parallel_parport.h" #endif #include "dsp.h" #define DEBUG 0 #include "debug.h" YAMAHA::YAMAHA(memptr addr, uint32 size) : BASE_IO(addr, size) { #ifdef ENABLE_PARALLELX86 if (strcmp("x86", bx_options.parallel.type)==0) parallel = new ParallelX86; else #endif #ifdef ENABLE_PARALLELPARPORT if (strcmp("parport", bx_options.parallel.type)==0) parallel = new ParallelParport; else #endif parallel = new ParallelFile; reset(); } YAMAHA::~YAMAHA() { delete parallel; } void YAMAHA::reset() { active_reg = 0; for(unsigned int i=0; ireset(); } uint8 YAMAHA::handleRead(memptr addr) { uint8 value=0; addr -= getHWoffset(); if (addr == 0) { switch(active_reg) { case 15: value=parallel->getData(); break; default: value=yamaha_regs[active_reg]; break; } } /* D(bug("HWget_b(0x%08x)=0x%02x at 0x%08x", addr+HW, value, showPC()));*/ return value; } void YAMAHA::handleWrite(memptr addr, uint8 value) { addr -= getHWoffset(); switch(addr) { case 0: active_reg = value & 0x0f; break; case 2: yamaha_regs[active_reg] = value; switch(active_reg) { case 7: parallel->setDirection(value >> 7); break; case 14: parallel->setStrobe((value >> 5) & 0x01); if (value & (1<<4)) { getDSP()->reset(); } break; case 15: parallel->setData(value); break; } break; } /* D(bug("HWput_b(0x%08x,0x%02x) at 0x%08x", addr+HW, value, showPC()));*/ } int YAMAHA::getFloppyStat() { return yamaha_regs[14] & 7; } aranym-1.1.0/src/videl_zoom.cpp0000664000175000017500000001560413454637622014652 0ustar joyjoy/* Falcon VIDEL emulation, with zoom (C) 2006-2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "parameters.h" #include "hostscreen.h" #include "host.h" #include "icio.h" #include "host_surface.h" #include "videl.h" #include "videl_zoom.h" #define DEBUG 0 #include "debug.h" #define HW getHWoffset() VidelZoom::VidelZoom(memptr addr, uint32 size) : VIDEL(addr, size), surface(NULL), zoomWidth(0), zoomHeight(0), prevWidth(0), prevHeight(0), prevBpp(0), xtable(NULL), ytable(NULL) { reset(); } VidelZoom::~VidelZoom(void) { if (surface) { host->video->destroySurface(surface); } if (xtable) { delete [] xtable; } if (ytable) { delete [] ytable; } } void VidelZoom::reset(void) { VIDEL::reset(); } HostSurface *VidelZoom::getSurface(void) { HostSurface *videl_hsurf = VIDEL::getSurface(); if (!videl_hsurf) { return NULL; } int videlWidth = videl_hsurf->getWidth(); int videlHeight = videl_hsurf->getHeight(); int videlBpp = videl_hsurf->getBpp(); int hostWidth = host->video->getWidth(); int hostHeight = host->video->getHeight(); int autozoom_enabled = bx_options.autozoom.enabled; zoomWidth = hostWidth; zoomHeight = hostHeight; if ((hostWidth>=videlWidth) && (hostHeight>=videlHeight)) { if (autozoom_enabled) { float coefx, coefy; coefx = (float) hostWidth / (videlWidth * aspect_x); coefy = (float) hostHeight / (videlHeight * aspect_y); if (bx_options.autozoom.integercoefs) { /* Integer coefs */ coefx = (float) ((int) coefx); coefy = (float) ((int) coefy); } /* Keep aspect ratio by using smallest coef */ if (coefx < coefy) { coefy = coefx; } else { coefx = coefy; } zoomWidth = videlWidth * aspect_x * coefx; zoomHeight = videlHeight * aspect_y * coefy; } else if ((aspect_x>1) || (aspect_y>1)) { zoomWidth = videlWidth * aspect_x; zoomHeight = videlHeight * aspect_y; autozoom_enabled = 1; } } /* Return non zoomed surface if correct size, or zoom not suitable */ if (bx_options.opengl.enabled || !autozoom_enabled || ((zoomWidth==videlWidth) && (zoomHeight==videlHeight))) { return videl_hsurf; } /* Recalc zoom table if videl or host screen size changes */ bool updateZoomTable = (!xtable || !ytable); if (prevVidelBpp!=videlBpp) { updateZoomTable=true; prevVidelBpp=videlBpp; } if (prevVidelWidth!=videlWidth) { updateZoomTable=true; prevVidelWidth=videlWidth; } if (prevVidelHeight!=videlHeight) { updateZoomTable=true; prevVidelHeight=videlHeight; } /* Recreate surface if needed */ if (surface) { if (prevBpp == videlBpp) { if ((prevWidth!=zoomWidth) || (prevHeight!=zoomHeight)) { surface->resize(zoomWidth, zoomHeight); updateZoomTable = true; } } else { delete surface; surface = NULL; } } if (surface==NULL) { surface = host->video->createSurface(zoomWidth,zoomHeight,videlBpp); updateZoomTable = true; } prevWidth = zoomWidth; prevHeight = zoomHeight; prevBpp = videlBpp; /* Update zoom tables if needed */ if (updateZoomTable) { int i; if (xtable) { delete [] xtable; } xtable = new int[zoomWidth]; for (i=0; isetDirtyRect(0,0, surface->getWidth(), surface->getHeight()); } void VidelZoom::refreshScreen(void) { HostSurface *videl_hsurf = VIDEL::getSurface(); if (!videl_hsurf) { return; } SDL_Surface *videl_surf = videl_hsurf->getSdlSurface(); if (!videl_surf) { return; } if (!surface) { return; } SDL_Surface *sdl_surf = surface->getSdlSurface(); if (!sdl_surf) { return; } /* Update palette from non zoomed surface */ if ((videl_hsurf->getBpp()==8) && (surface->getBpp()==8)) { int i; SDL_Color palette[256]; for (i=0;i<256;i++) { palette[i].r = videl_surf->format->palette->colors[i].r; palette[i].g = videl_surf->format->palette->colors[i].g; palette[i].b = videl_surf->format->palette->colors[i].b; #if SDL_VERSION_ATLEAST(2, 0, 0) palette[i].a = videl_surf->format->palette->colors[i].a; #endif } surface->setPalette(palette, 0, 256); } int videlWidth = videl_hsurf->getWidth(); int videlHeight = videl_hsurf->getHeight(); int videlBpp = videl_hsurf->getBpp(); Uint8 *dirtyRects = videl_hsurf->getDirtyRects(); if (!dirtyRects) { return; } int dirty_w = videl_hsurf->getDirtyWidth(); int dirty_h = videl_hsurf->getDirtyHeight(); int x,y; for (y=0;ygetHeight() - (y<<4); if (num_lines>16) { num_lines=16; } for (x=0;xpixels; dst += dst_y1 * sdl_surf->pitch; dst += dst_x1 * (videlBpp>>3); if (videlBpp==16) { /* True color, 16 bits surface */ Uint16 *dst_line = (Uint16 *) dst; for(j=dst_y1;jpixels; src_col += ytable[j] * (videl_surf->pitch>>1); Uint16 *dst_col = dst_line; for(i=dst_x1;ipitch >> 1; } } else { /* Bitplanes, 8 bits surface */ Uint8 *dst_line = (Uint8 *) dst; for(j=dst_y1;jpixels; src_col += ytable[j] * videl_surf->pitch; Uint8 *dst_col = dst_line; for(i=dst_x1;ipitch; } } surface->setDirtyRect(dst_x1,dst_y1, dst_x2-dst_x1,dst_y2-dst_y1); } } /* Mark original surface as updated */ videl_hsurf->clearDirtyRects(); } aranym-1.1.0/src/videl.cpp0000664000175000017500000002575013454637622013611 0ustar joyjoy/* Falcon VIDEL emulation (C) 2001-2008 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "SDL_compat.h" #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "hostscreen.h" #include "host.h" #include "icio.h" #include "host_surface.h" #include "videl.h" #include "hardware.h" #include "parameters.h" #include "adler32.h" #define DEBUG 0 #include "debug.h" /*--- Defines ---*/ #define HW getHWoffset() #define VIDEL_COLOR_REGS_BEGIN 0xff9800UL #define VIDEL_COLOR_REGS_END (VIDEL_COLOR_REGS_BEGIN+256*4) #define F_COLORS(i) handleRead(VIDEL_COLOR_REGS_BEGIN + (i)) #define STE_COLORS(i) handleReadW(0xff8240 + (i<<1)) /*--- Constructor/destructor ---*/ VIDEL::VIDEL(memptr addr, uint32 size) : BASE_IO(addr, size), surface(NULL), prevVidelWidth(-1), prevVidelHeight(-1), prevVidelBpp(-1), crcList(NULL) { reset(); } VIDEL::~VIDEL(void) { if (crcList) { delete [] crcList; } if (surface) { host->video->destroySurface(surface); } } void VIDEL::reset(void) { aspect_x = aspect_y = 1; updatePalette = false; } bool VIDEL::isMyHWRegister(memptr addr) { // FALCON VIDEL COLOR REGISTERS if (addr >= VIDEL_COLOR_REGS_BEGIN && addr < VIDEL_COLOR_REGS_END) return true; return BASE_IO::isMyHWRegister(addr); } /*--- BASE_IO functions ---*/ void VIDEL::handleWrite(uint32 addr, uint8 value) { BASE_IO::handleWrite(addr, value); if ((addr >= VIDEL_COLOR_REGS_BEGIN && addr < VIDEL_COLOR_REGS_END) || (addr >= 0xff8240 && addr < 0xff8260)) { updatePalette = true; return; } if ((addr & ~1) == HW+0x60) { D(bug("VIDEL st_shift: %06x = %d ($%02x)", addr, value, value)); // writing to st_shift changed scn_width and vid_mode // BASE_IO::handleWrite(HW+0x10, 0x0028); // BASE_IO::handleWrite(HW+0xc2, 0x0008); } else if (((addr & ~1) == HW+0x64) || ((addr & ~1) == HW+0x0e) || ((addr & ~1) == HW+0x10)) { forceRefresh(); } else if ((addr & ~1) == HW+0x66) { D(bug("VIDEL f_shift: %06x = %d ($%02x)", addr, value, value)); // IMPORTANT: // set st_shift to 0, so we can tell the screen-depth if f_shift==0. // Writing 0 to f_shift enables 4 plane Falcon mode but // doesn't set st_shift. st_shift!=0 (!=4planes) is impossible // with Falcon palette so we set st_shift to 0 manually. if (handleReadW(HW+0x66) == 0) { BASE_IO::handleWrite(HW+0x60, 0); } } if ((addr & ~1) == HW+0xc2) { updateAspect(); } } /*--- Private functions ---*/ bool VIDEL::useStPalette(void) { bool useStPal = false; int st_shift = handleReadW(HW + 0x60); if (st_shift == 0) { // bpp == 4 int hreg = handleReadW(HW + 0x82); // Too lame! // Better way how to make out ST LOW mode wanted if (hreg == 0x10 || hreg == 0x17 || hreg == 0x3e) { useStPal = true; } } else if (st_shift == 0x100) { // bpp == 2 useStPal = true; } else { // bpp == 1 // if (st_shift == 0x200) useStPal = true; } return useStPal; } void VIDEL::updateAspect(void) { int vco = handleReadW(HW + 0xc2); switch((vco>>2) & 3) { case 0: aspect_x = 4; break; case 1: aspect_x = 2; break; case 2: aspect_x = 1; break; } switch (vco & 3) { case 0: /* No interlace, no doubling */ aspect_y = 2; break; case 1: /* No interlace, Doubling */ aspect_y = 4; break; case 2: /* Interlace, no doubling */ aspect_y = 1; break; case 3: /* Interlace, Doubling */ aspect_y = 2; break; } if (bx_options.video.monitor == 1) { /* rvb */ aspect_x >>= 1; if (aspect_x == 0) { aspect_x = 1; aspect_y <<= 1; } } else { /* vga */ aspect_y >>= 1; if (aspect_y == 0) { aspect_y = 1; aspect_x <<= 1; } } } /*--- Protected functions ---*/ Uint32 VIDEL::getVramAddress(void) { return (handleRead(HW + 1) << 16) | (handleRead(HW + 3) << 8) | handleRead(HW + 0x0d); } int VIDEL::getWidth(void) { return handleReadW(HW + 0x10) * 16 / getBpp(); } int VIDEL::getHeight(void) { int vdb = handleReadW(HW + 0xa8); int vde = handleReadW(HW + 0xaa); int vmode = handleReadW(HW + 0xc2); /* visible y resolution: * Graphics display starts at line VDB and ends at line * VDE. If interlace mode off unit of VC-registers is * half lines, else lines. */ int yres = vde - vdb; if (!(vmode & 0x02)) // interlace yres >>= 1; if (vmode & 0x01) // double yres >>= 1; return yres; } int VIDEL::getBpp(void) { int f_shift = handleReadW(HW + 0x66); int st_shift = handleRead(HW + 0x60); /* to get bpp, we must examine f_shift and st_shift. * f_shift is valid if any of bits no. 10, 8 or 4 * is set. Priority in f_shift is: 10 ">" 8 ">" 4, i.e. * if bit 10 set then bit 8 and bit 4 don't care... * If all these bits are 0 get display depth from st_shift * (as for ST and STE) */ int bits_per_pixel = 1; if (f_shift & 0x400) /* 2 colors */ bits_per_pixel = 1; else if (f_shift & 0x100) /* hicolor */ bits_per_pixel = 16; else if (f_shift & 0x010) /* 8 bitplanes */ bits_per_pixel = 8; else if (st_shift == 0) bits_per_pixel = 4; else if (st_shift == 0x01) bits_per_pixel = 2; else /* if (st_shift == 0x02) */ bits_per_pixel = 1; // D(bug("Videl works in %d bpp, f_shift=%04x, st_shift=%d", bits_per_pixel, f_shift, st_shift)); return bits_per_pixel; } HostSurface *VIDEL::getSurface(void) { int videlBpp = getBpp(); int bpp = (videlBpp<=8) ? 8 : 16; int width = getWidth(); int height = getHeight(); if (width<64) { width = 64; } if (height<64) { height = 64; } if (surface) { if (prevVidelBpp == bpp) { if ((prevVidelWidth!=width) || (prevVidelHeight!=height)) { surface->resize(width, height); delete [] crcList; crcList = NULL; } } else { delete surface; surface = NULL; delete [] crcList; crcList = NULL; } } if (surface==NULL) { surface = host->video->createSurface(width,height,bpp); } if (crcList==NULL) { int crcWidth = surface->getDirtyWidth(); int crcHeight = surface->getDirtyHeight(); crcList = new Uint32[crcWidth*crcHeight]; memset(crcList, 0, sizeof(Uint32)*crcWidth*crcHeight); } /* Refresh surface palette if switching from true color to bitplane mode */ if ((prevVidelBpp == 16) && (bpp != 16)) updatePalette = true; prevVidelWidth = width; prevVidelHeight = height; prevVidelBpp = bpp; refreshScreen(); if (bx_options.opengl.enabled && bx_options.autozoom.enabled) { surface->setParam(HostSurface::SURF_DRAW, HostSurface::DRAW_RESCALE); } return surface; } void VIDEL::refreshPalette(void) { SDL_Color palette[256]; int i, c, numColors = useStPalette() ? 16 : 256; if (numColors == 16) { /* STe palette registers, 4 bits/component */ for (i=0; i<16; i++) { int color = STE_COLORS(i); c = (color>>8) & 0x0f; c = ((c & 7)<<1)|((c & 1)>>3); palette[i].r = (c<<4)|c; c = (color>>4) & 0x0f; c = ((c & 7)<<1)|((c & 1)>>3); palette[i].g = (c<<4)|c; c = color & 0x0f; c = ((c & 7)<<1)|((c & 1)>>3); palette[i].b = (c<<4)|c; #if SDL_VERSION_ATLEAST(2, 0, 0) palette[i].a = WINDOW_ALPHA; #endif } } else { /* Falcon palette registers, 6 bits/component */ for (i=0; i<256; i++) { int offset = i<<2; c = F_COLORS(offset) & 0xfc; c |= (c>>6) & 3; palette[i].r = c; c = F_COLORS(offset+1) & 0xfc; c |= (c>>6) & 3; palette[i].g = c; c = F_COLORS(offset+3) & 0xfc; c |= (c>>6) & 3; palette[i].b = c; #if SDL_VERSION_ATLEAST(2, 0, 0) palette[i].a = WINDOW_ALPHA; #endif } } surface->setPalette(palette, 0, numColors); } void VIDEL::forceRefresh(void) { if (!surface) { return; } surface->setDirtyRect(0,0, surface->getWidth(), surface->getHeight()); } void VIDEL::refreshScreen(void) { SDL_Surface *sdl_surf; if (!surface) { return; } sdl_surf = surface->getSdlSurface(); if (!sdl_surf) { return; } if (updatePalette) { refreshPalette(); updatePalette = false; surface->setDirtyRect(0,0,surface->getWidth(),surface->getHeight()); } int videlBpp = getBpp(); int lineoffset = handleReadW(HW + 0x0e); int linewidth = handleReadW(HW + 0x10) & 0x03ff; // 10 bits int hscroll = handleReadW(HW + 0x64) & 15; if (hscroll) { lineoffset += videlBpp; } Uint16 *src = (uint16 *) Atari2HostAddr(getVramAddress()); int src_pitch = linewidth + lineoffset; int dst_pitch = sdl_surf->pitch; int x,y; Uint8 *dirtyRects = surface->getDirtyRects(); if (!dirtyRects) { return; } int dirty_w = surface->getDirtyWidth(); int dirty_h = surface->getDirtyHeight(); if (videlBpp==16) { Uint16 *dst = (Uint16 *) sdl_surf->pixels; for (y=0; ygetHeight() - (y<<4); if (num_lines>16) { num_lines=16; } for (x=0; x>1; } } src_line += 16; dst_line += 16; } src += src_pitch * 16; dst += (dst_pitch>>1) * 16; } } else { Uint8 *dst = (Uint8 *) sdl_surf->pixels; for (y=0; ygetHeight() - (y<<4); if (num_lines>16) { num_lines=16; } for (x=0; x&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = build68k$(EXEEXT) gencpu$(EXEEXT) $(am__EXEEXT_1) @USE_JIT_TRUE@am__append_1 = gencomp @GENCOMP_ARCH_X86_TRUE@am__append_2 = compiler/gencomp.c @GENCOMP_ARCH_ARM_TRUE@am__append_3 = compiler/gencomp_arm.c @USE_JIT_TRUE@am__append_4 = compemu.cpp compstbl.cpp comptbl.h subdir = src/uae_cpu ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_prog_cc_for_build.m4 \ $(top_srcdir)/m4/ax_prog_cxx_for_build.m4 \ $(top_srcdir)/m4/cxxbool.m4 $(top_srcdir)/m4/float.m4 \ $(top_srcdir)/m4/framework.m4 $(top_srcdir)/m4/maintainer.m4 \ $(top_srcdir)/m4/sdl.m4 $(top_srcdir)/m4/sdl2.m4 \ $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \ $(top_srcdir)/m4/util.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = @USE_JIT_TRUE@am__EXEEXT_1 = gencomp$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) am_build68k_OBJECTS = build68k.$(OBJEXT) build68k_OBJECTS = $(am_build68k_OBJECTS) build68k_LDADD = $(LDADD) am__gencomp_SOURCES_DIST = compiler/gencomp.c compiler/gencomp_arm.c \ readcpu.cpp cpudefs.cpp am__dirstamp = $(am__leading_dot)dirstamp @GENCOMP_ARCH_X86_TRUE@am__objects_1 = compiler/gencomp.$(OBJEXT) @GENCOMP_ARCH_ARM_TRUE@am__objects_2 = compiler/gencomp_arm.$(OBJEXT) am_gencomp_OBJECTS = $(am__objects_1) $(am__objects_2) \ readcpu.$(OBJEXT) cpudefs.$(OBJEXT) gencomp_OBJECTS = $(am_gencomp_OBJECTS) gencomp_LDADD = $(LDADD) am_gencpu_OBJECTS = gencpu.$(OBJEXT) readcpu.$(OBJEXT) \ cpudefs.$(OBJEXT) gencpu_OBJECTS = $(am_gencpu_OBJECTS) gencpu_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(build68k_SOURCES) $(gencomp_SOURCES) $(gencpu_SOURCES) DIST_SOURCES = $(build68k_SOURCES) $(am__gencomp_SOURCES_DIST) \ $(gencpu_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ARCH = @ARCH@ ARCHFLAGS = @ARCHFLAGS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BEOS_RC = @BEOS_RC@ BEOS_SETVERSION = @BEOS_SETVERSION@ BEOS_XRES = @BEOS_XRES@ BUILD_EXEEXT = @BUILD_EXEEXT@ BUILD_OBJEXT = @BUILD_OBJEXT@ BUNDLE_FRAMEWORKS = @BUNDLE_FRAMEWORKS@ CC = $(CC_FOR_BUILD) CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = $(CFLAGS_FOR_BUILD) CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = $(CPPFLAGS_FOR_BUILD) CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CPP_FOR_BUILD = @CPP_FOR_BUILD@ CPU_TYPE = @CPU_TYPE@ CXX = $(CXX_FOR_BUILD) CXXCPP = @CXXCPP@ CXXCPPFLAGS_FOR_BUILD = @CXXCPPFLAGS_FOR_BUILD@ CXXCPP_FOR_BUILD = @CXXCPP_FOR_BUILD@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = $(CXXFLAGS_FOR_BUILD) CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@ CXX_FOR_BUILD = @CXX_FOR_BUILD@ CYGPATH_W = @CYGPATH_W@ DBGSP = @DBGSP@ DEFINES = @DEFINES@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISASM_CFLAGS = @DISASM_CFLAGS@ DISASM_LIBS = @DISASM_LIBS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GENCOMP_ARCH = @GENCOMP_ARCH@ GL_CFLAGS = @GL_CFLAGS@ GL_LIBS = @GL_LIBS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ JPEG_LIBS = @JPEG_LIBS@ LDFLAGS = $(LDFLAGS_FOR_BUILD) LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = -lm LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ LIBUSB_LIBS = @LIBUSB_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJC = @OBJC@ OBJCDEPMODE = @OBJCDEPMODE@ OBJCFLAGS = @OBJCFLAGS@ OBJEXT = @OBJEXT@ OSMESA_CFLAGS = @OSMESA_CFLAGS@ OSMESA_LIBS = @OSMESA_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SDL2_CFLAGS = @SDL2_CFLAGS@ SDL2_CONFIG = @SDL2_CONFIG@ SDL2_LIBS = @SDL2_LIBS@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TARGET = @TARGET@ VERSION = @VERSION@ WFLAGS = @WFLAGS@ WINDRES = @WINDRES@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_CXX_FOR_BUILD = @ac_ct_CXX_FOR_BUILD@ ac_ct_OBJC = @ac_ct_OBJC@ ac_ct_WINDRES = @ac_ct_WINDRES@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # # suppress warnings about overriding LDFLAGS and CPPFLAGS # AUTOMAKE_OPTIONS = -Wno-gnu AM_CPPFLAGS = $(DEFINES) \ "-I$(srcdir)/../include" \ "-I$(srcdir)/../Unix" \ "-I$(builddir)/.." \ "-I$(builddir)" \ "-I$(srcdir)" CFLAGS_NOWARN = $(DBGSP) AM_CFLAGS = $(CFLAGS_NOWARN) $(WFLAGS) AM_CXXFLAGS = $(CFLAGS_NOWARN) $(WFLAGS) BUILT_SOURCES = cpudefs.cpp cpuemu.cpp cpustbl.cpp cpufunctbl.cpp \ cputbl.h $(empty) $(am__append_4) build68k_SOURCES = build68k.c gencpu_SOURCES = gencpu.c m68k.h readcpu.cpp readcpu.h cpudefs.cpp gencomp_SOURCES = $(am__append_2) $(am__append_3) readcpu.cpp \ cpudefs.cpp CLEANFILES = $(BUILT_SOURCES) EXTRA_DIST = \ table68k \ compiler/codegen_arm.cpp compiler/codegen_arm.h \ compiler/compemu_midfunc_arm.cpp compiler/compemu_midfunc_arm.h \ compiler/compemu_midfunc_arm2.cpp compiler/compemu_midfunc_arm2.h \ compiler/test_codegen_arm.c \ compiler/codegen_x86.cpp compiler/codegen_x86.h \ compiler/compemu_midfunc_x86.cpp compiler/compemu_midfunc_x86.h \ compiler/test_codegen_x86.cpp \ $(empty) all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .cpp .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/uae_cpu/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/uae_cpu/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) build68k$(EXEEXT): $(build68k_OBJECTS) $(build68k_DEPENDENCIES) $(EXTRA_build68k_DEPENDENCIES) @rm -f build68k$(EXEEXT) $(AM_V_CCLD)$(LINK) $(build68k_OBJECTS) $(build68k_LDADD) $(LIBS) compiler/$(am__dirstamp): @$(MKDIR_P) compiler @: > compiler/$(am__dirstamp) compiler/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) compiler/$(DEPDIR) @: > compiler/$(DEPDIR)/$(am__dirstamp) compiler/gencomp.$(OBJEXT): compiler/$(am__dirstamp) \ compiler/$(DEPDIR)/$(am__dirstamp) compiler/gencomp_arm.$(OBJEXT): compiler/$(am__dirstamp) \ compiler/$(DEPDIR)/$(am__dirstamp) gencomp$(EXEEXT): $(gencomp_OBJECTS) $(gencomp_DEPENDENCIES) $(EXTRA_gencomp_DEPENDENCIES) @rm -f gencomp$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(gencomp_OBJECTS) $(gencomp_LDADD) $(LIBS) gencpu$(EXEEXT): $(gencpu_OBJECTS) $(gencpu_DEPENDENCIES) $(EXTRA_gencpu_DEPENDENCIES) @rm -f gencpu$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(gencpu_OBJECTS) $(gencpu_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f compiler/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/build68k.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpudefs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gencpu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readcpu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@compiler/$(DEPDIR)/gencomp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@compiler/$(DEPDIR)/gencomp_arm.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) installdirs: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f compiler/$(DEPDIR)/$(am__dirstamp) -rm -f compiler/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) compiler/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) compiler/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: all check install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile cpudefs.cpp: build68k$(EXEEXT) $(srcdir)/table68k $(AM_V_GEN)./build68k <$(srcdir)/table68k > $@ cpuemu.cpp: gencpu$(EXEEXT) $(AM_V_GEN)./gencpu$(EXEEXT) cpustbl.cpp cpufunctbl.cpp cputbl.h: cpuemu.cpp compemu.cpp: gencomp$(EXEEXT) $(AM_V_GEN)./gencomp$(EXEEXT) compstbl.cpp comptbl.h: compemu.cpp # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: aranym-1.1.0/src/uae_cpu/table68k0000664000175000017500000003267013454637622014765 0ustar joyjoy% 0: bit 0 % 1: bit 1 % c: condition code % C: condition codes, except F % f: direction % i: immediate % E: immediate, except 00 (for EmulOp instructions) % I: immediate, except 00 and ff % j: immediate 1..8 % J: immediate 0..15 % k: immediate 0..7 % K: immediate 0..63 % p: immediate 0..3 (CINV and CPUSH: cache field) % s: source mode % S: source reg % d: dest mode % D: dest reg % r: reg % z: size % % Actually, a sssSSS may appear as a destination, and % vice versa. The only difference between sssSSS and % dddDDD are the valid addressing modes. There is % no match for immediate and pc-rel. addressing modes % in case of dddDDD. % % Arp: --> -(Ar) % ArP: --> (Ar)+ % L: --> (xxx.L) % % Fields on a line: % 16 chars bitpattern : % CPU level / privildge level : % CPU level 0: 68000 % 1: 68010 % 2: 68020 % 3: 68020/68881 % 4: 68040 % 5: 68060 % privilege level 0: not privileged % 1: unprivileged only on 68000 (check regs.s) % 2: privileged (check regs.s) % 3: privileged if size == word (check regs.s) % Flags set by instruction: XNZVC : % Flags used by instruction: XNZVC : % - means flag unaffected / unused % 0 means flag reset % 1 means flag set % ? means programmer was too lazy to check or instruction may trap % + means instruction is conditional branch (ignored, only for sync) % / means instruction is unconditional branch/call (ignored, only for sync) % x means flag is unknown and well-behaved programs shouldn't check it % everything else means flag set/used % % Control flow % two letters, combination of % - nothing % T the instruction may trap or cause an exception % B branch instruction % J jump instruction % R return instruction % % srcaddr status destaddr status : % bitmasks of % 1 means fetched % 2 means stored % 4 means jump offset % 8 means jump address % instruction % 0000 0000 0011 1100:00:XNZVC:XNZVC:--:10: ORSR.B #1 0000 0000 0111 1100:02:XNZVC:XNZVC:T-:10: ORSR.W #1 0000 0zz0 11ss sSSS:20:-?Z?C:-----:T-:11: CHK2.z #1,s[!Dreg,Areg,Aipi,Apdi,Immd] 0000 0000 zzdd dDDD:00:-NZ00:-----:--:13: OR.z #z,d[!Areg] 0000 0010 0011 1100:00:XNZVC:XNZVC:--:10: ANDSR.B #1 0000 0010 0111 1100:02:XNZVC:XNZVC:T-:10: ANDSR.W #1 0000 0010 zzdd dDDD:00:-NZ00:-----:--:13: AND.z #z,d[!Areg] 0000 0100 zzdd dDDD:00:XNZVC:-----:--:13: SUB.z #z,d[!Areg] 0000 0110 zzdd dDDD:00:XNZVC:-----:--:13: ADD.z #z,d[!Areg] 0000 0110 11ss sSSS:20:-----:XNZVC:--:10: CALLM s[!Dreg,Areg,Aipi,Apdi,Immd] 0000 0110 11ss sSSS:20:XNZVC:-----:-R:10: RTM s[Dreg,Areg] 0000 1000 00ss sSSS:00:--Z--:-----:--:11: BTST #1,s[!Areg] 0000 1000 01ss sSSS:00:--Z--:-----:--:13: BCHG #1,s[!Areg,Immd] 0000 1000 10ss sSSS:00:--Z--:-----:--:13: BCLR #1,s[!Areg,Immd] 0000 1000 11ss sSSS:00:--Z--:-----:--:13: BSET #1,s[!Areg,Immd] 0000 1010 0011 1100:00:XNZVC:XNZVC:--:10: EORSR.B #1 0000 1010 0111 1100:02:XNZVC:XNZVC:T-:10: EORSR.W #1 0000 1010 zzdd dDDD:00:-NZ00:-----:--:13: EOR.z #z,d[!Areg] 0000 1100 zzss sSSS:00:-NZVC:-----:--:11: CMP.z #z,s[!Areg,Immd] 0000 1010 11ss sSSS:20:-NZVC:-----:--:13: CAS.B #1,s[!Dreg,Areg,Immd,PC8r,PC16] 0000 1100 11ss sSSS:20:-NZVC:-----:--:13: CAS.W #1,s[!Dreg,Areg,Immd,PC8r,PC16] 0000 1100 1111 1100:20:-NZVC:-----:--:10: CAS2.W #2 0000 1110 zzss sSSS:22:-----:-----:T-:13: MOVES.z #1,s[!Dreg,Areg,Immd,PC8r,PC16] 0000 1110 11ss sSSS:20:-NZVC:-----:--:13: CAS.L #1,s[!Dreg,Areg,Immd,PC8r,PC16] 0000 1110 1111 1100:20:-NZVC:-----:--:10: CAS2.L #2 0000 rrr1 00dd dDDD:00:-----:-----:--:12: MVPMR.W d[Areg-Ad16],Dr 0000 rrr1 01dd dDDD:00:-----:-----:--:12: MVPMR.L d[Areg-Ad16],Dr 0000 rrr1 10dd dDDD:00:-----:-----:--:12: MVPRM.W Dr,d[Areg-Ad16] 0000 rrr1 11dd dDDD:00:-----:-----:--:12: MVPRM.L Dr,d[Areg-Ad16] 0000 rrr1 00ss sSSS:00:--Z--:-----:--:11: BTST Dr,s[!Areg] 0000 rrr1 01ss sSSS:00:--Z--:-----:--:13: BCHG Dr,s[!Areg,Immd] 0000 rrr1 10ss sSSS:00:--Z--:-----:--:13: BCLR Dr,s[!Areg,Immd] 0000 rrr1 11ss sSSS:00:--Z--:-----:--:13: BSET Dr,s[!Areg,Immd] 0001 DDDd ddss sSSS:00:-NZ00:-----:--:12: MOVE.B s,d[!Areg] 0010 DDDd ddss sSSS:00:-----:-----:--:12: MOVEA.L s,d[Areg] 0010 DDDd ddss sSSS:00:-NZ00:-----:--:12: MOVE.L s,d[!Areg] 0011 DDDd ddss sSSS:00:-----:-----:--:12: MOVEA.W s,d[Areg] 0011 DDDd ddss sSSS:00:-NZ00:-----:--:12: MOVE.W s,d[!Areg] 0100 0000 zzdd dDDD:00:XNZVC:X-Z--:--:30: NEGX.z d[!Areg] 0100 0000 11dd dDDD:01:-----:XNZVC:T-:10: MVSR2.W d[!Areg] 0100 0010 zzdd dDDD:00:-0100:-----:--:20: CLR.z d[!Areg] 0100 0010 11dd dDDD:10:-----:XNZVC:--:10: MVSR2.B d[!Areg] 0100 0100 zzdd dDDD:00:XNZVC:-----:--:30: NEG.z d[!Areg] 0100 0100 11ss sSSS:00:XNZVC:-----:--:10: MV2SR.B s[!Areg] 0100 0110 zzdd dDDD:00:-NZ00:-----:--:30: NOT.z d[!Areg] 0100 0110 11ss sSSS:02:XNZVC:XNZVC:T-:10: MV2SR.W s[!Areg] 0100 1000 0000 1rrr:20:-----:-----:--:31: LINK.L Ar,#2 0100 1000 00dd dDDD:00:X?Z?C:X-Z--:--:30: NBCD.B d[!Areg] 0100 1000 0100 1kkk:20:-----:-----:T-:10: BKPT #k 0100 1000 01ss sSSS:00:-NZ00:-----:--:30: SWAP.W s[Dreg] 0100 1000 01ss sSSS:00:-----:-----:--:00: PEA.L s[!Dreg,Areg,Aipi,Apdi,Immd] 0100 1000 10dd dDDD:00:-NZ00:-----:--:30: EXT.W d[Dreg] 0100 1000 10dd dDDD:00:-----:-----:--:02: MVMLE.W #1,d[!Dreg,Areg,Aipi] 0100 1000 11dd dDDD:00:-NZ00:-----:--:30: EXT.L d[Dreg] 0100 1000 11dd dDDD:00:-----:-----:--:02: MVMLE.L #1,d[!Dreg,Areg,Aipi] 0100 1001 11dd dDDD:00:-NZ00:-----:--:30: EXT.B d[Dreg] 0100 1010 zzss sSSS:00:-NZ00:-----:--:10: TST.z s 0100 1010 11dd dDDD:00:-NZ00:-----:--:30: TAS.B d[!Areg] 0100 1010 1111 1100:00:-----:-----:T-:00: ILLEGAL 0100 1100 00ss sSSS:20:-NZVC:-----:--:13: MULL.L #1,s[!Areg] 0100 1100 01ss sSSS:20:-NZV0:-----:T-:13: DIVL.L #1,s[!Areg] 0100 1100 10ss sSSS:00:-----:-----:--:01: MVMEL.W #1,s[!Dreg,Areg,Apdi,Immd] 0100 1100 11ss sSSS:00:-----:-----:--:01: MVMEL.L #1,s[!Dreg,Areg,Apdi,Immd] 0100 1110 0100 JJJJ:00:-----:XNZVC:--:10: TRAP #J 0100 1110 0101 0rrr:00:-----:-----:--:31: LINK.W Ar,#1 0100 1110 0101 1rrr:00:-----:-----:--:30: UNLK.L Ar 0100 1110 0110 0rrr:02:-----:-----:T-:10: MVR2USP.L Ar 0100 1110 0110 1rrr:02:-----:-----:T-:20: MVUSP2R.L Ar 0100 1110 0111 0000:02:-----:-----:T-:00: RESET 0100 1110 0111 0001:00:-----:-----:--:00: NOP 0100 1110 0111 0010:02:XNZVC:-----:T-:10: STOP #1 0100 1110 0111 0011:02:XNZVC:-----:TR:00: RTE 0100 1110 0111 0100:00:-----:-----:-R:10: RTD #1 0100 1110 0111 0101:00:-----:-----:-R:00: RTS 0100 1110 0111 0110:00:-----:XNZVC:T-:00: TRAPV 0100 1110 0111 0111:00:XNZVC:-----:-R:00: RTR 0100 1110 0111 1010:12:-----:-----:T-:10: MOVEC2 #1 0100 1110 0111 1011:12:-----:-----:T-:10: MOVE2C #1 0100 1110 10ss sSSS:00://///://///:-J:80: JSR.L s[!Dreg,Areg,Aipi,Apdi,Immd] 0100 rrr1 00ss sSSS:00:-N???:-----:T-:11: CHK.L s[!Areg],Dr 0100 rrr1 10ss sSSS:00:-N???:-----:T-:11: CHK.W s[!Areg],Dr 0100 1110 11ss sSSS:00://///://///:-J:80: JMP.L s[!Dreg,Areg,Aipi,Apdi,Immd] 0100 rrr1 11ss sSSS:00:-----:-----:--:02: LEA.L s[!Dreg,Areg,Aipi,Apdi,Immd],Ar % This variant of ADDQ is word and long sized only 0101 jjj0 01dd dDDD:00:-----:-----:--:13: ADDA.W #j,d[Areg] 0101 jjj0 10dd dDDD:00:-----:-----:--:13: ADDA.L #j,d[Areg] 0101 jjj0 zzdd dDDD:00:XNZVC:-----:--:13: ADD.z #j,d[!Areg] % This variant of SUBQ is word and long sized only 0101 jjj1 01dd dDDD:00:-----:-----:--:13: SUBA.W #j,d[Areg] 0101 jjj1 10dd dDDD:00:-----:-----:--:13: SUBA.L #j,d[Areg] 0101 jjj1 zzdd dDDD:00:XNZVC:-----:--:13: SUB.z #j,d[!Areg] 0101 cccc 1100 1rrr:00:-----:-++++:-B:31: DBcc.W Dr,#1 0101 cccc 11dd dDDD:00:-----:-++++:--:20: Scc.B d[!Areg] 0101 cccc 1111 1010:20:-----:-????:T-:10: TRAPcc #1 0101 cccc 1111 1011:20:-----:-????:T-:10: TRAPcc #2 0101 cccc 1111 1100:20:-----:-????:T-:00: TRAPcc % Bxx.L is 68020 only, but setting the CPU level to 2 would give illegal % instruction exceptions when compiling a 68000 only emulation, which isn't % what we want either. 0110 0001 0000 0000:00://///://///:-B:40: BSR.W #1 0110 0001 IIII IIII:00://///://///:-B:40: BSR.B #i 0110 0001 1111 1111:00://///://///:-B:40: BSR.L #2 0110 CCCC 0000 0000:00:-----:-++++:-B:40: Bcc.W #1 0110 CCCC IIII IIII:00:-----:-++++:-B:40: Bcc.B #i 0110 CCCC 1111 1111:00:-----:-++++:-B:40: Bcc.L #2 0111 rrr0 iiii iiii:00:-NZ00:-----:--:12: MOVE.L #i,Dr 1000 rrr0 zzss sSSS:00:-NZ00:-----:--:13: OR.z s[!Areg],Dr 1000 rrr0 11ss sSSS:00:-NZV0:-----:T-:13: DIVU.W s[!Areg],Dr 1000 rrr1 00dd dDDD:00:X?Z?C:X-Z--:--:13: SBCD.B d[Dreg],Dr 1000 rrr1 00dd dDDD:00:X?Z?C:X-Z--:--:13: SBCD.B d[Areg-Apdi],Arp 1000 rrr1 zzdd dDDD:00:-NZ00:-----:--:13: OR.z Dr,d[!Areg,Dreg] 1000 rrr1 01dd dDDD:20:-----:-----:--:12: PACK d[Dreg],Dr 1000 rrr1 01dd dDDD:20:-----:-----:--:12: PACK d[Areg-Apdi],Arp 1000 rrr1 10dd dDDD:20:-----:-----:--:12: UNPK d[Dreg],Dr 1000 rrr1 10dd dDDD:20:-----:-----:--:12: UNPK d[Areg-Apdi],Arp 1000 rrr1 11ss sSSS:00:-NZV0:-----:T-:13: DIVS.W s[!Areg],Dr 1001 rrr0 zzss sSSS:00:XNZVC:-----:--:13: SUB.z s,Dr 1001 rrr0 11ss sSSS:00:-----:-----:--:13: SUBA.W s,Ar 1001 rrr1 zzdd dDDD:00:XNZVC:X-Z--:--:13: SUBX.z d[Dreg],Dr 1001 rrr1 zzdd dDDD:00:XNZVC:X-Z--:--:13: SUBX.z d[Areg-Apdi],Arp 1001 rrr1 zzdd dDDD:00:XNZVC:-----:--:13: SUB.z Dr,d[!Areg,Dreg] 1001 rrr1 11ss sSSS:00:-----:-----:--:13: SUBA.L s,Ar 1011 rrr0 zzss sSSS:00:-NZVC:-----:--:11: CMP.z s,Dr 1011 rrr0 11ss sSSS:00:-NZVC:-----:--:11: CMPA.W s,Ar 1011 rrr1 11ss sSSS:00:-NZVC:-----:--:11: CMPA.L s,Ar 1011 rrr1 zzdd dDDD:00:-NZVC:-----:--:11: CMPM.z d[Areg-Aipi],ArP 1011 rrr1 zzdd dDDD:00:-NZ00:-----:--:13: EOR.z Dr,d[!Areg] 1100 rrr0 zzss sSSS:00:-NZ00:-----:--:13: AND.z s[!Areg],Dr 1100 rrr0 11ss sSSS:00:-NZ00:-----:--:13: MULU.W s[!Areg],Dr 1100 rrr1 00dd dDDD:00:X?Z?C:X-Z--:--:13: ABCD.B d[Dreg],Dr 1100 rrr1 00dd dDDD:00:X?Z?C:X-Z--:--:13: ABCD.B d[Areg-Apdi],Arp 1100 rrr1 zzdd dDDD:00:-NZ00:-----:--:13: AND.z Dr,d[!Areg,Dreg] 1100 rrr1 01dd dDDD:00:-----:-----:--:33: EXG.L Dr,d[Dreg] 1100 rrr1 01dd dDDD:00:-----:-----:--:33: EXG.L Ar,d[Areg] 1100 rrr1 10dd dDDD:00:-----:-----:--:33: EXG.L Dr,d[Areg] 1100 rrr1 11ss sSSS:00:-NZ00:-----:--:13: MULS.W s[!Areg],Dr 1101 rrr0 zzss sSSS:00:XNZVC:-----:--:13: ADD.z s,Dr 1101 rrr0 11ss sSSS:00:-----:-----:--:13: ADDA.W s,Ar 1101 rrr1 zzdd dDDD:00:XNZVC:X-Z--:--:13: ADDX.z d[Dreg],Dr 1101 rrr1 zzdd dDDD:00:XNZVC:X-Z--:--:13: ADDX.z d[Areg-Apdi],Arp 1101 rrr1 zzdd dDDD:00:XNZVC:-----:--:13: ADD.z Dr,d[!Areg,Dreg] 1101 rrr1 11ss sSSS:00:-----:-----:--:13: ADDA.L s,Ar 1110 jjjf zz00 0RRR:00:XNZVC:-----:--:13: ASf.z #j,DR 1110 jjjf zz00 1RRR:00:XNZ0C:-----:--:13: LSf.z #j,DR 1110 jjjf zz01 0RRR:00:XNZ0C:X----:--:13: ROXf.z #j,DR 1110 jjjf zz01 1RRR:00:-NZ0C:-----:--:13: ROf.z #j,DR 1110 rrrf zz10 0RRR:00:XNZVC:X----:--:13: ASf.z Dr,DR 1110 rrrf zz10 1RRR:00:XNZ0C:X----:--:13: LSf.z Dr,DR 1110 rrrf zz11 0RRR:00:XNZ0C:X----:--:13: ROXf.z Dr,DR 1110 rrrf zz11 1RRR:00:-NZ0C:-----:--:13: ROf.z Dr,DR 1110 000f 11dd dDDD:00:XNZVC:-----:--:13: ASfW.W d[!Dreg,Areg] 1110 001f 11dd dDDD:00:XNZ0C:-----:--:13: LSfW.W d[!Dreg,Areg] 1110 010f 11dd dDDD:00:XNZ0C:X----:--:13: ROXfW.W d[!Dreg,Areg] 1110 011f 11dd dDDD:00:-NZ0C:-----:--:13: ROfW.W d[!Dreg,Areg] 1110 1000 11ss sSSS:20:-NZ00:-----:--:11: BFTST #1,s[!Areg,Apdi,Aipi,Immd] 1110 1001 11ss sSSS:20:-NZ00:-----:--:11: BFEXTU #1,s[!Areg,Apdi,Aipi,Immd] 1110 1010 11ss sSSS:20:-NZ00:-----:--:13: BFCHG #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16] 1110 1011 11ss sSSS:20:-NZ00:-----:--:11: BFEXTS #1,s[!Areg,Apdi,Aipi,Immd] 1110 1100 11ss sSSS:20:-NZ00:-----:--:13: BFCLR #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16] 1110 1101 11ss sSSS:20:-NZ00:-----:--:11: BFFFO #1,s[!Areg,Apdi,Aipi,Immd] 1110 1110 11ss sSSS:20:-NZ00:-----:--:13: BFSET #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16] 1110 1111 11ss sSSS:20:-NZ00:-----:--:13: BFINS #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16] % floating point co processor 1111 0010 00ss sSSS:30:-----:-----:--:11: FPP #1,s 1111 0010 01ss sSSS:30:-----:-----:-B:11: FDBcc #1,s[Areg-Dreg] 1111 0010 01ss sSSS:30:-----:-----:--:11: FScc #1,s[!Areg,Immd,PC8r,PC16] 1111 0010 0111 1010:30:-----:-----:T-:10: FTRAPcc #1 1111 0010 0111 1011:30:-----:-----:T-:10: FTRAPcc #2 1111 0010 0111 1100:30:-----:-----:T-:00: FTRAPcc 1111 0010 10KK KKKK:30:-----:-----:-B:11: FBcc #K,#1 1111 0010 11KK KKKK:30:-----:-----:-B:11: FBcc #K,#2 1111 0011 00ss sSSS:32:-----:-----:--:20: FSAVE s[!Dreg,Areg,Aipi,Immd,PC8r,PC16] 1111 0011 01ss sSSS:32:-----:-----:--:10: FRESTORE s[!Dreg,Areg,Apdi,Immd] % 68040 instructions 1111 0100 pp00 1rrr:42:-----:-----:T-:02: CINVL #p,Ar 1111 0100 pp01 0rrr:42:-----:-----:T-:02: CINVP #p,Ar 1111 0100 pp01 1rrr:42:-----:-----:T-:00: CINVA #p 1111 0100 pp10 1rrr:42:-----:-----:T-:02: CPUSHL #p,Ar 1111 0100 pp11 0rrr:42:-----:-----:T-:02: CPUSHP #p,Ar 1111 0100 pp11 1rrr:42:-----:-----:T-:00: CPUSHA #p % destination register number is encoded in the following word 1111 0110 0010 0rrr:40:-----:-----:--:12: MOVE16 ArP,AxP 1111 0110 00ss sSSS:40:-----:-----:--:12: MOVE16 s[Dreg-Aipi],Al 1111 0110 00dd dDDD:40:-----:-----:--:12: MOVE16 Al,d[Areg-Aipi] 1111 0110 00ss sSSS:40:-----:-----:--:12: MOVE16 s[Aind],Al 1111 0110 00dd dDDD:40:-----:-----:--:12: MOVE16 Al,d[Aipi-Aind] 1111 0101 iiii iSSS:42:?????:?????:T-:11: MMUOP #i,s % EmulOp instructions (used by linux68k) 0111 0001 0000 0000:02:-----:XNZVC:-R:00: EMULOP_RETURN 0111 0001 EEEE EEEE:00:-----:XNZVC:-J:10: EMULOP #E % NatFea instructions (do I have the srcaddr correct?) 0111 0011 0000 0000:00:-----:XNZVC:-J:00: NATFEAT_ID 0111 0011 0000 0001:00:-----:XNZVC:-J:00: NATFEAT_CALL aranym-1.1.0/src/uae_cpu/spcflags.h0000664000175000017500000000564413454637622015376 0ustar joyjoy /* * UAE - The Un*x Amiga Emulator * * MC68000 emulation * * Copyright 1995 Bernd Schmidt */ #ifndef SPCFLAGS_H #define SPCFLAGS_H #include "SDL_compat.h" enum { SPCFLAG_STOP = 0x01, SPCFLAG_INTERNAL_IRQ = 0x02, SPCFLAG_BRK = 0x04, SPCFLAG_TRACE = 0x08, SPCFLAG_DOTRACE = 0x10, SPCFLAG_DOINT = 0x20, #ifdef USE_JIT SPCFLAG_JIT_END_COMPILE = 0x40, SPCFLAG_JIT_EXEC_RETURN = 0x80, #else SPCFLAG_JIT_END_COMPILE = 0, SPCFLAG_JIT_EXEC_RETURN = 0, #endif SPCFLAG_VBL = 0x100, SPCFLAG_MFP = 0x200, SPCFLAG_INT3 = 0x800, SPCFLAG_INT5 = 0x1000, SPCFLAG_SCC = 0x2000, // SPCFLAG_MODE_CHANGE = 0x4000, SPCFLAG_ALL = SPCFLAG_STOP | SPCFLAG_INTERNAL_IRQ | SPCFLAG_BRK | SPCFLAG_TRACE | SPCFLAG_DOTRACE | SPCFLAG_DOINT | SPCFLAG_JIT_END_COMPILE | SPCFLAG_JIT_EXEC_RETURN | SPCFLAG_INT3 | SPCFLAG_VBL | SPCFLAG_INT5 | SPCFLAG_SCC | SPCFLAG_MFP , SPCFLAG_ALL_BUT_EXEC_RETURN = SPCFLAG_ALL & ~SPCFLAG_JIT_EXEC_RETURN }; #define SPCFLAGS_TEST(m) \ (regs.spcflags & (m)) /* Macro only used in m68k_reset() */ #define SPCFLAGS_INIT(m) do { \ regs.spcflags = (m); \ } while (0) #ifndef ENABLE_EXCLUSIVE_SPCFLAGS #define SPCFLAGS_SET(m) do { \ regs.spcflags |= (m); \ } while (0) #define SPCFLAGS_CLEAR(m) do { \ regs.spcflags &= ~(m); \ } while (0) #define SleepAndWait() usleep(1000) #elif (defined(CPU_i386) || defined(CPU_x86_64)) && defined(X86_ASSEMBLY) && !defined(ENABLE_REALSTOP) #define HAVE_HARDWARE_LOCKS 1 #define SPCFLAGS_SET(m) do { \ __asm__ __volatile__("lock\n\torl %1,%0" : "=m" (regs.spcflags) : "i" ((m))); \ } while (0) #define SPCFLAGS_CLEAR(m) do { \ __asm__ __volatile__("lock\n\tandl %1,%0" : "=m" (regs.spcflags) : "i" (~(m))); \ } while (0) #define SleepAndWait() usleep(1000) #elif !defined(ENABLE_REALSTOP) #undef HAVE_HARDWARE_LOCKS extern SDL_mutex *spcflags_lock; #define SPCFLAGS_SET(m) do { \ SDL_LockMutex(spcflags_lock); \ regs.spcflags |= (m); \ SDL_UnlockMutex(spcflags_lock); \ } while (0) #define SPCFLAGS_CLEAR(m) do { \ SDL_LockMutex(spcflags_lock); \ regs.spcflags &= ~(m); \ SDL_UnlockMutex(spcflags_lock); \ } while (0) #define SleepAndWait() usleep(1000) #else /// Full STOP instruction implementation (default configuration) #undef HAVE_HARDWARE_LOCKS extern SDL_mutex *spcflags_lock; extern SDL_cond *stop_condition; #define SPCFLAGS_SET(m) do { \ SDL_LockMutex(spcflags_lock); \ regs.spcflags |= (m); \ if (regs.spcflags & SPCFLAG_STOP) \ SDL_CondSignal(stop_condition); \ SDL_UnlockMutex(spcflags_lock); \ } while (0) #define SPCFLAGS_CLEAR(m) do { \ SDL_LockMutex(spcflags_lock); \ regs.spcflags &= ~(m); \ SDL_UnlockMutex(spcflags_lock); \ } while (0) #define SleepAndWait() do { \ SDL_LockMutex(spcflags_lock); \ SDL_CondWait(stop_condition, spcflags_lock); \ SDL_UnlockMutex(spcflags_lock); \ } while (0) #endif #endif /* SPCFLAGS_H */ aranym-1.1.0/src/uae_cpu/registers.h0000664000175000017500000000411213454637622015570 0ustar joyjoy/* 2001 MJ */ #ifndef REGISTERS_H #define REGISTERS_H #include "sysdeps.h" #include "spcflags.h" typedef char flagtype; struct xttrx { uae_u32 log_addr_base : 8; uae_u32 log_addr_mask : 8; uae_u32 enable : 1; uae_u32 s_field : 2; uae_u32 : 3; uae_u32 usr1 : 1; uae_u32 usr0 : 1; uae_u32 : 1; uae_u32 cmode : 2; uae_u32 : 2; uae_u32 write : 1; uae_u32 : 2; }; struct mmusr_t { uae_u32 phys_addr : 20; uae_u32 bus_err : 1; uae_u32 global : 1; uae_u32 usr1 : 1; uae_u32 usr0 : 1; uae_u32 super : 1; uae_u32 cmode : 2; uae_u32 modif : 1; uae_u32 : 1; uae_u32 write : 1; uae_u32 ttrhit : 1; uae_u32 resident : 1; }; struct log_addr4 { uae_u32 rif : 7; uae_u32 pif : 7; uae_u32 paif : 6; uae_u32 poff : 12; }; struct log_addr8 { uae_u32 rif : 7; uae_u32 pif : 7; uae_u32 paif : 5; uae_u32 poff : 13; }; extern struct regstruct { uae_u32 regs[16]; uaecptr usp,isp,msp; uae_u16 sr; flagtype t1; flagtype t0; flagtype s; flagtype m; flagtype x; flagtype stopped; int intmask; uae_u32 pc; uae_u32 fault_pc; uae_u8 *pc_p; uae_u8 *pc_oldp; uae_u32 vbr,sfc,dfc; volatile uae_u32 spcflags; #if 0 uae_u32 kick_mask; /* Fellow sources say this is 4 longwords. That's impossible. It needs * to be at least a longword. The HRM has some cryptic comment about two * instructions being on the same longword boundary. * The way this is implemented now seems like a good compromise. */ uae_u32 prefetch; #endif /* MMU reg*/ uae_u32 urp,srp; uae_u32 tc; int mmu_enabled; /* flagtype tce; */ int mmu_pagesize_8k; /* flagtype tcp; */ uae_u32 dtt0,dtt1,itt0,itt1; uae_u32 mmusr; uae_u32 mmu_fslw, mmu_fault_addr; uae_u16 mmu_ssw; uae_u32 wb3_data; uae_u16 wb3_status; /* Cache reg*/ uae_u32 cacr,caar; } regs; static inline uaecptr m68k_getpc (void) { #ifdef FULLMMU return regs.pc; #else return regs.pc + ((char *)regs.pc_p - (char *)regs.pc_oldp); #endif } #endif aranym-1.1.0/src/uae_cpu/readcpua.cpp0000664000175000017500000000021213454637622015675 0ustar joyjoy/* * readcpu.cpp must be compiled twice, once for the generator program * and once for the actual executable */ #include "readcpu.cpp" aranym-1.1.0/src/uae_cpu/readcpu.h0000664000175000017500000000610313454637622015206 0ustar joyjoy#ifndef UAE_READCPU_H #define UAE_READCPU_H #ifdef __cplusplus extern "C" { #endif typedef enum { Dreg, Areg, Aind, Aipi, Apdi, Ad16, Ad8r, absw, absl, PC16, PC8r, imm, imm0, imm1, imm2, immi, am_unknown, am_illg } amodes; typedef enum { i_ILLG, i_OR, i_AND, i_EOR, i_ORSR, i_ANDSR, i_EORSR, i_SUB, i_SUBA, i_SUBX, i_SBCD, i_ADD, i_ADDA, i_ADDX, i_ABCD, i_NEG, i_NEGX, i_NBCD, i_CLR, i_NOT, i_TST, i_BTST, i_BCHG, i_BCLR, i_BSET, i_CMP, i_CMPM, i_CMPA, i_MVPRM, i_MVPMR, i_MOVE, i_MOVEA, i_MVSR2, i_MV2SR, i_SWAP, i_EXG, i_EXT, i_MVMEL, i_MVMLE, i_TRAP, i_MVR2USP, i_MVUSP2R, i_RESET, i_NOP, i_STOP, i_RTE, i_RTD, i_LINK, i_UNLK, i_RTS, i_TRAPV, i_RTR, i_JSR, i_JMP, i_BSR, i_Bcc, i_LEA, i_PEA, i_DBcc, i_Scc, i_DIVU, i_DIVS, i_MULU, i_MULS, i_ASR, i_ASL, i_LSR, i_LSL, i_ROL, i_ROR, i_ROXL, i_ROXR, i_ASRW, i_ASLW, i_LSRW, i_LSLW, i_ROLW, i_RORW, i_ROXLW, i_ROXRW, i_CHK,i_CHK2, i_MOVEC2, i_MOVE2C, i_CAS, i_CAS2, i_DIVL, i_MULL, i_BFTST,i_BFEXTU,i_BFCHG,i_BFEXTS,i_BFCLR,i_BFFFO,i_BFSET,i_BFINS, i_PACK, i_UNPK, i_TAS, i_BKPT, i_CALLM, i_RTM, i_TRAPcc, i_MOVES, i_FPP, i_FDBcc, i_FScc, i_FTRAPcc, i_FBcc, i_FSAVE, i_FRESTORE, i_CINVL, i_CINVP, i_CINVA, i_CPUSHL, i_CPUSHP, i_CPUSHA, i_MOVE16, i_MMUOP, i_EMULOP_RETURN, i_EMULOP, i_NATFEAT_ID, i_NATFEAT_CALL } instrmnem; extern struct mnemolookup { instrmnem mnemo; const char *name; } lookuptab[]; typedef enum { sz_byte, sz_word, sz_long } wordsizes; typedef enum { fa_set, fa_unset, fa_zero, fa_one, fa_dontcare, fa_unknown, fa_isjmp, fa_isbranch } flagaffect; typedef enum { fu_used, fu_unused, fu_maybecc, fu_unknown, fu_isjmp } flaguse; typedef enum { fl_normal = 0, fl_branch = 1, fl_jump = 2, fl_return = 3, fl_trap = 4, fl_const_jump = 8, /* Instructions that can trap don't mark the end of a block */ fl_end_block = 3 } cflow_t; typedef enum { bit0, bit1, bitc, bitC, bitf, biti, bitI, bitj, bitJ, bitk, bitK, bits, bitS, bitd, bitD, bitr, bitR, bitz, bitE, bitp, lastbit } bitvals; struct instr_def { unsigned int bits; int n_variable; char bitpos[16]; unsigned int mask; int cpulevel; int plevel; struct { unsigned int flaguse:3; unsigned int flagset:3; } flaginfo[5]; unsigned char cflow; unsigned char sduse; const char *opcstr; }; extern struct instr_def defs68k[]; extern int n_defs68k; extern struct instr { long int handler; unsigned char dreg; unsigned char sreg; signed char dpos; signed char spos; unsigned char sduse; int flagdead:8, flaglive:8; unsigned int mnemo:8; unsigned int cc:4; unsigned int plev:2; wordsizes size:2; amodes smode:5; unsigned int stype:3; amodes dmode:5; unsigned int suse:1; unsigned int duse:1; unsigned int unused1:1; unsigned int clev:3; unsigned int cflow:3; unsigned int unused2:2; } *table68k; extern void init_table68k(void); extern void exit_table68k(void); extern int nr_cpuop_funcs; #ifdef __cplusplus } #endif #endif aranym-1.1.0/src/uae_cpu/readcpu.cpp0000664000175000017500000005510713454637622015551 0ustar joyjoy/* 2002 MJ */ /* * UAE - The Un*x Amiga Emulator * * Read 68000 CPU specs from file "table68k" * * Copyright 1995,1996 Bernd Schmidt */ #include "sysdeps.h" #include "readcpu.h" #include #include #include #include using std::strncmp; using std::abort; using std::fprintf; using std::strcmp; using std::strlen; using std::malloc; int nr_cpuop_funcs; struct instr *table68k; static int readcpu_mismatch; struct mnemolookup lookuptab[] = { { i_ILLG, "ILLEGAL" }, { i_OR, "OR" }, { i_CHK, "CHK" }, { i_CHK2, "CHK2" }, { i_AND, "AND" }, { i_EOR, "EOR" }, { i_ORSR, "ORSR" }, { i_ANDSR, "ANDSR" }, { i_EORSR, "EORSR" }, { i_SUB, "SUB" }, { i_SUBA, "SUBA" }, { i_SUBX, "SUBX" }, { i_SBCD, "SBCD" }, { i_ADD, "ADD" }, { i_ADDA, "ADDA" }, { i_ADDX, "ADDX" }, { i_ABCD, "ABCD" }, { i_NEG, "NEG" }, { i_NEGX, "NEGX" }, { i_NBCD, "NBCD" }, { i_CLR, "CLR" }, { i_NOT, "NOT" }, { i_TST, "TST" }, { i_BTST, "BTST" }, { i_BCHG, "BCHG" }, { i_BCLR, "BCLR" }, { i_BSET, "BSET" }, { i_CMP, "CMP" }, { i_CMPM, "CMPM" }, { i_CMPA, "CMPA" }, { i_MVPRM, "MVPRM" }, { i_MVPMR, "MVPMR" }, { i_MOVE, "MOVE" }, { i_MOVEA, "MOVEA" }, { i_MVSR2, "MVSR2" }, { i_MV2SR, "MV2SR" }, { i_SWAP, "SWAP" }, { i_EXG, "EXG" }, { i_EXT, "EXT" }, { i_MVMEL, "MVMEL" }, { i_MVMLE, "MVMLE" }, { i_TRAP, "TRAP" }, { i_MVR2USP, "MVR2USP" }, { i_MVUSP2R, "MVUSP2R" }, { i_NOP, "NOP" }, { i_RESET, "RESET" }, { i_RTE, "RTE" }, { i_RTD, "RTD" }, { i_LINK, "LINK" }, { i_UNLK, "UNLK" }, { i_RTS, "RTS" }, { i_STOP, "STOP" }, { i_TRAPV, "TRAPV" }, { i_RTR, "RTR" }, { i_JSR, "JSR" }, { i_JMP, "JMP" }, { i_BSR, "BSR" }, { i_Bcc, "Bcc" }, { i_LEA, "LEA" }, { i_PEA, "PEA" }, { i_DBcc, "DBcc" }, { i_Scc, "Scc" }, { i_DIVU, "DIVU" }, { i_DIVS, "DIVS" }, { i_MULU, "MULU" }, { i_MULS, "MULS" }, { i_ASR, "ASR" }, { i_ASL, "ASL" }, { i_LSR, "LSR" }, { i_LSL, "LSL" }, { i_ROL, "ROL" }, { i_ROR, "ROR" }, { i_ROXL, "ROXL" }, { i_ROXR, "ROXR" }, { i_ASRW, "ASRW" }, { i_ASLW, "ASLW" }, { i_LSRW, "LSRW" }, { i_LSLW, "LSLW" }, { i_ROLW, "ROLW" }, { i_RORW, "RORW" }, { i_ROXLW, "ROXLW" }, { i_ROXRW, "ROXRW" }, { i_MOVE2C, "MOVE2C" }, { i_MOVEC2, "MOVEC2" }, { i_CAS, "CAS" }, { i_CAS2, "CAS2" }, { i_MULL, "MULL" }, { i_DIVL, "DIVL" }, { i_BFTST, "BFTST" }, { i_BFEXTU, "BFEXTU" }, { i_BFCHG, "BFCHG" }, { i_BFEXTS, "BFEXTS" }, { i_BFCLR, "BFCLR" }, { i_BFFFO, "BFFFO" }, { i_BFSET, "BFSET" }, { i_BFINS, "BFINS" }, { i_PACK, "PACK" }, { i_UNPK, "UNPK" }, { i_TAS, "TAS" }, { i_BKPT, "BKPT" }, { i_CALLM, "CALLM" }, { i_RTM, "RTM" }, { i_TRAPcc, "TRAPcc" }, { i_MOVES, "MOVES" }, { i_FPP, "FPP" }, { i_FDBcc, "FDBcc" }, { i_FScc, "FScc" }, { i_FTRAPcc, "FTRAPcc" }, { i_FBcc, "FBcc" }, { i_FBcc, "FBcc" }, { i_FSAVE, "FSAVE" }, { i_FRESTORE, "FRESTORE" }, { i_CINVL, "CINVL" }, { i_CINVP, "CINVP" }, { i_CINVA, "CINVA" }, { i_CPUSHL, "CPUSHL" }, { i_CPUSHP, "CPUSHP" }, { i_CPUSHA, "CPUSHA" }, { i_MOVE16, "MOVE16" }, { i_EMULOP_RETURN, "EMULOP_RETURN" }, { i_EMULOP, "EMULOP" }, { i_MMUOP, "MMUOP" }, {i_NATFEAT_ID, "NATFEAT_ID" }, {i_NATFEAT_CALL, "NATFEAT_CALL" }, { i_ILLG, "" }, }; static inline amodes mode_from_str (const char *str) { if (strncmp (str, "Dreg", 4) == 0) return Dreg; if (strncmp (str, "Areg", 4) == 0) return Areg; if (strncmp (str, "Aind", 4) == 0) return Aind; if (strncmp (str, "Apdi", 4) == 0) return Apdi; if (strncmp (str, "Aipi", 4) == 0) return Aipi; if (strncmp (str, "Ad16", 4) == 0) return Ad16; if (strncmp (str, "Ad8r", 4) == 0) return Ad8r; if (strncmp (str, "absw", 4) == 0) return absw; if (strncmp (str, "absl", 4) == 0) return absl; if (strncmp (str, "PC16", 4) == 0) return PC16; if (strncmp (str, "PC8r", 4) == 0) return PC8r; if (strncmp (str, "Immd", 4) == 0) return imm; abort (); return (amodes)0; } static inline amodes mode_from_mr (int mode, int reg) { switch (mode) { case 0: return Dreg; case 1: return Areg; case 2: return Aind; case 3: return Aipi; case 4: return Apdi; case 5: return Ad16; case 6: return Ad8r; case 7: switch (reg) { case 0: return absw; case 1: return absl; case 2: return PC16; case 3: return PC8r; case 4: return imm; case 5: case 6: case 7: return am_illg; } } abort (); return (amodes)0; } static void build_insn (int insn) { int find = -1; int variants; struct instr_def id; const char *opcstr; int i, n; int flaglive = 0, flagdead = 0; int cflow = 0; id = defs68k[insn]; // Control flow information cflow = id.cflow; // Mask of flags set/used unsigned char flags_set(0), flags_used(0); for (i = 0, n = 4; i < 5; i++, n--) { switch (id.flaginfo[i].flagset) { case fa_unset: case fa_isjmp: break; default: flags_set |= (1 << n); } switch (id.flaginfo[i].flaguse) { case fu_unused: case fu_isjmp: break; default: flags_used |= (1 << n); } } for (i = 0; i < 5; i++) { switch (id.flaginfo[i].flagset){ case fa_unset: break; case fa_isjmp: break; case fa_zero: flagdead |= 1 << i; break; case fa_one: flagdead |= 1 << i; break; case fa_dontcare: flagdead |= 1 << i; break; case fa_unknown: flagdead = -1; goto out1; case fa_set: flagdead |= 1 << i; break; } } out1: for (i = 0; i < 5; i++) { switch (id.flaginfo[i].flaguse) { case fu_unused: break; case fu_isjmp: flaglive |= 1 << i; break; case fu_maybecc: flaglive |= 1 << i; break; case fu_unknown: flaglive = -1; goto out2; case fu_used: flaglive |= 1 << i; break; } } out2: opcstr = id.opcstr; for (variants = 0; variants < (1 << id.n_variable); variants++) { int bitcnt[lastbit]; int bitval[lastbit]; int bitpos[lastbit]; int i; uae_u16 opc = id.bits; uae_u16 msk, vmsk; int pos = 0; int mnp = 0; int bitno = 0; char mnemonic[64]; wordsizes sz = sz_long; int srcgather = 0, dstgather = 0; int usesrc = 0, usedst = 0; int srctype = 0; int srcpos = -1, dstpos = -1; amodes srcmode = am_unknown, destmode = am_unknown; int srcreg = -1, destreg = -1; for (i = 0; i < lastbit; i++) bitcnt[i] = bitval[i] = 0; vmsk = 1 << id.n_variable; for (i = 0, msk = 0x8000; i < 16; i++, msk >>= 1) { if (!(msk & id.mask)) { int currbit = id.bitpos[bitno++]; int bit_set; vmsk >>= 1; bit_set = variants & vmsk ? 1 : 0; if (bit_set) opc |= msk; bitpos[currbit] = 15 - i; bitcnt[currbit]++; bitval[currbit] <<= 1; bitval[currbit] |= bit_set; } } if (bitval[bitj] == 0) bitval[bitj] = 8; /* first check whether this one does not match after all */ if (bitval[bitz] == 3 || bitval[bitC] == 1) continue; if (bitcnt[bitI] && (bitval[bitI] == 0x00 || bitval[bitI] == 0xff)) continue; if (bitcnt[bitE] && (bitval[bitE] == 0x00)) continue; /* bitI and bitC get copied to biti and bitc */ if (bitcnt[bitI]) { bitval[biti] = bitval[bitI]; bitpos[biti] = bitpos[bitI]; } if (bitcnt[bitC]) bitval[bitc] = bitval[bitC]; pos = 0; while (opcstr[pos] && !isspace(opcstr[pos])) { if (opcstr[pos] == '.') { pos++; switch (opcstr[pos]) { case 'B': sz = sz_byte; break; case 'W': sz = sz_word; break; case 'L': sz = sz_long; break; case 'z': switch (bitval[bitz]) { case 0: sz = sz_byte; break; case 1: sz = sz_word; break; case 2: sz = sz_long; break; default: abort(); } break; default: abort(); } } else { mnemonic[mnp] = opcstr[pos]; if (mnemonic[mnp] == 'f') { find = -1; switch (bitval[bitf]) { case 0: mnemonic[mnp] = 'R'; break; case 1: mnemonic[mnp] = 'L'; break; default: abort(); } } mnp++; if ((unsigned)mnp >= (sizeof(mnemonic)-1)) { mnemonic[sizeof(mnemonic)-1] = '\0'; fprintf(stderr, "WTF!!! Instruction '%s' overflow\n", mnemonic); abort(); } } pos++; } mnemonic[mnp] = 0; /* now, we have read the mnemonic and the size */ while (opcstr[pos] && isspace(opcstr[pos])) pos++; /* A goto a day keeps the D******a away. */ if (opcstr[pos] == 0) goto endofline; /* parse the source address */ usesrc = 1; switch (opcstr[pos++]) { case 'D': srcmode = Dreg; switch (opcstr[pos++]) { case 'r': srcreg = bitval[bitr]; srcgather = 1; srcpos = bitpos[bitr]; break; case 'R': srcreg = bitval[bitR]; srcgather = 1; srcpos = bitpos[bitR]; break; default: abort(); } break; case 'A': srcmode = Areg; switch (opcstr[pos++]) { case 'l': srcmode = absl; break; case 'r': srcreg = bitval[bitr]; srcgather = 1; srcpos = bitpos[bitr]; break; case 'R': srcreg = bitval[bitR]; srcgather = 1; srcpos = bitpos[bitR]; break; default: abort(); } switch (opcstr[pos]) { case 'p': srcmode = Apdi; pos++; break; case 'P': srcmode = Aipi; pos++; break; } break; #if 0 case 'L': srcmode = absl; break; #endif case '#': switch (opcstr[pos++]) { case 'z': srcmode = imm; break; case '0': srcmode = imm0; break; case '1': srcmode = imm1; break; case '2': srcmode = imm2; break; case 'i': srcmode = immi; srcreg = (uae_s32)(uae_s8)bitval[biti]; if (CPU_EMU_SIZE < 4) { /* Used for branch instructions */ srctype = 1; srcgather = 1; srcpos = bitpos[biti]; } break; case 'j': srcmode = immi; srcreg = bitval[bitj]; if (CPU_EMU_SIZE < 3) { /* 1..8 for ADDQ/SUBQ and rotshi insns */ srcgather = 1; srctype = 3; srcpos = bitpos[bitj]; } break; case 'J': srcmode = immi; srcreg = bitval[bitJ]; if (CPU_EMU_SIZE < 5) { /* 0..15 */ srcgather = 1; srctype = 2; srcpos = bitpos[bitJ]; } break; case 'k': srcmode = immi; srcreg = bitval[bitk]; if (CPU_EMU_SIZE < 3) { srcgather = 1; srctype = 4; srcpos = bitpos[bitk]; } break; case 'K': srcmode = immi; srcreg = bitval[bitK]; if (CPU_EMU_SIZE < 5) { /* 0..15 */ srcgather = 1; srctype = 5; srcpos = bitpos[bitK]; } break; case 'E': srcmode = immi; srcreg = bitval[bitE]; if (CPU_EMU_SIZE < 5) { // gb-- what is CPU_EMU_SIZE used for ?? /* 1..255 */ srcgather = 1; srctype = 6; srcpos = bitpos[bitE]; } break; case 'p': srcmode = immi; srcreg = bitval[bitp]; if (CPU_EMU_SIZE < 5) { // gb-- what is CPU_EMU_SIZE used for ?? /* 0..3 */ srcgather = 1; srctype = 7; srcpos = bitpos[bitp]; } break; default: abort(); } break; case 'd': srcreg = bitval[bitD]; srcmode = mode_from_mr(bitval[bitd],bitval[bitD]); if (srcmode == am_illg) continue; if (CPU_EMU_SIZE < 2 && (srcmode == Areg || srcmode == Dreg || srcmode == Aind || srcmode == Ad16 || srcmode == Ad8r || srcmode == Aipi || srcmode == Apdi)) { srcgather = 1; srcpos = bitpos[bitD]; } if (opcstr[pos] == '[') { pos++; if (opcstr[pos] == '!') { /* exclusion */ do { pos++; if (mode_from_str(opcstr+pos) == srcmode) goto nomatch; pos += 4; } while (opcstr[pos] == ','); pos++; } else { if (opcstr[pos+4] == '-') { /* replacement */ if (mode_from_str(opcstr+pos) == srcmode) srcmode = mode_from_str(opcstr+pos+5); else goto nomatch; pos += 10; } else { /* normal */ while(mode_from_str(opcstr+pos) != srcmode) { pos += 4; if (opcstr[pos] == ']') goto nomatch; pos++; } while(opcstr[pos] != ']') pos++; pos++; break; } } } /* Some addressing modes are invalid as destination */ if (srcmode == imm || srcmode == PC16 || srcmode == PC8r) goto nomatch; break; case 's': srcreg = bitval[bitS]; srcmode = mode_from_mr(bitval[bits],bitval[bitS]); if (srcmode == am_illg) continue; if (CPU_EMU_SIZE < 2 && (srcmode == Areg || srcmode == Dreg || srcmode == Aind || srcmode == Ad16 || srcmode == Ad8r || srcmode == Aipi || srcmode == Apdi)) { srcgather = 1; srcpos = bitpos[bitS]; } if (opcstr[pos] == '[') { pos++; if (opcstr[pos] == '!') { /* exclusion */ do { pos++; if (mode_from_str(opcstr+pos) == srcmode) goto nomatch; pos += 4; } while (opcstr[pos] == ','); pos++; } else { if (opcstr[pos+4] == '-') { /* replacement */ if (mode_from_str(opcstr+pos) == srcmode) srcmode = mode_from_str(opcstr+pos+5); else goto nomatch; pos += 10; } else { /* normal */ while(mode_from_str(opcstr+pos) != srcmode) { pos += 4; if (opcstr[pos] == ']') goto nomatch; pos++; } while(opcstr[pos] != ']') pos++; pos++; } } } break; default: abort(); } /* safety check - might have changed */ if (srcmode != Areg && srcmode != Dreg && srcmode != Aind && srcmode != Ad16 && srcmode != Ad8r && srcmode != Aipi && srcmode != Apdi && srcmode != immi) { srcgather = 0; } if (srcmode == Areg && sz == sz_byte) goto nomatch; if (opcstr[pos] != ',') goto endofline; pos++; /* parse the destination address */ usedst = 1; switch (opcstr[pos++]) { case 'D': destmode = Dreg; switch (opcstr[pos++]) { case 'r': destreg = bitval[bitr]; dstgather = 1; dstpos = bitpos[bitr]; break; case 'R': destreg = bitval[bitR]; dstgather = 1; dstpos = bitpos[bitR]; break; default: abort(); } if (dstpos < 0 || dstpos >= 32) abort(); break; case 'A': destmode = Areg; switch (opcstr[pos++]) { case 'l': destmode = absl; break; case 'r': destreg = bitval[bitr]; dstgather = 1; dstpos = bitpos[bitr]; break; case 'R': destreg = bitval[bitR]; dstgather = 1; dstpos = bitpos[bitR]; break; case 'x': destreg = 0; dstgather = 0; dstpos = 0; break; default: abort(); } switch (opcstr[pos]) { case 'p': destmode = Apdi; pos++; break; case 'P': destmode = Aipi; pos++; break; } break; #if 0 case 'L': destmode = absl; break; #endif case '#': switch (opcstr[pos++]) { case 'z': destmode = imm; break; case '0': destmode = imm0; break; case '1': destmode = imm1; break; case '2': destmode = imm2; break; case 'i': destmode = immi; destreg = (uae_s32)(uae_s8)bitval[biti]; break; case 'j': destmode = immi; destreg = bitval[bitj]; break; case 'J': destmode = immi; destreg = bitval[bitJ]; break; case 'k': destmode = immi; destreg = bitval[bitk]; break; case 'K': destmode = immi; destreg = bitval[bitK]; break; default: abort(); } break; case 'd': destreg = bitval[bitD]; destmode = mode_from_mr(bitval[bitd],bitval[bitD]); if (destmode == am_illg) continue; if (CPU_EMU_SIZE < 1 && (destmode == Areg || destmode == Dreg || destmode == Aind || destmode == Ad16 || destmode == Ad8r || destmode == Aipi || destmode == Apdi)) { dstgather = 1; dstpos = bitpos[bitD]; } if (opcstr[pos] == '[') { pos++; if (opcstr[pos] == '!') { /* exclusion */ do { pos++; if (mode_from_str(opcstr+pos) == destmode) goto nomatch; pos += 4; } while (opcstr[pos] == ','); pos++; } else { if (opcstr[pos+4] == '-') { /* replacement */ if (mode_from_str(opcstr+pos) == destmode) destmode = mode_from_str(opcstr+pos+5); else goto nomatch; pos += 10; } else { /* normal */ while(mode_from_str(opcstr+pos) != destmode) { pos += 4; if (opcstr[pos] == ']') goto nomatch; pos++; } while(opcstr[pos] != ']') pos++; pos++; break; } } } /* Some addressing modes are invalid as destination */ if (destmode == imm || destmode == PC16 || destmode == PC8r) goto nomatch; break; case 's': destreg = bitval[bitS]; destmode = mode_from_mr(bitval[bits],bitval[bitS]); if (destmode == am_illg) continue; if (CPU_EMU_SIZE < 1 && (destmode == Areg || destmode == Dreg || destmode == Aind || destmode == Ad16 || destmode == Ad8r || destmode == Aipi || destmode == Apdi)) { dstgather = 1; dstpos = bitpos[bitS]; } if (opcstr[pos] == '[') { pos++; if (opcstr[pos] == '!') { /* exclusion */ do { pos++; if (mode_from_str(opcstr+pos) == destmode) goto nomatch; pos += 4; } while (opcstr[pos] == ','); pos++; } else { if (opcstr[pos+4] == '-') { /* replacement */ if (mode_from_str(opcstr+pos) == destmode) destmode = mode_from_str(opcstr+pos+5); else goto nomatch; pos += 10; } else { /* normal */ while(mode_from_str(opcstr+pos) != destmode) { pos += 4; if (opcstr[pos] == ']') goto nomatch; pos++; } while(opcstr[pos] != ']') pos++; pos++; } } } break; default: abort(); } /* safety check - might have changed */ if (destmode != Areg && destmode != Dreg && destmode != Aind && destmode != Ad16 && destmode != Ad8r && destmode != Aipi && destmode != Apdi) { dstgather = 0; } if (destmode == Areg && sz == sz_byte) goto nomatch; #if 0 if (sz == sz_byte && (destmode == Aipi || destmode == Apdi)) { dstgather = 0; } #endif endofline: /* now, we have a match */ if (table68k[opc].mnemo != i_ILLG) fprintf(stderr, "Double match: %x: %s\n", opc, opcstr); if (find == -1) { for (find = 0;; find++) { if (strcmp(mnemonic, lookuptab[find].name) == 0) { table68k[opc].mnemo = lookuptab[find].mnemo; break; } if (strlen(lookuptab[find].name) == 0) abort(); } } else { table68k[opc].mnemo = lookuptab[find].mnemo; } table68k[opc].cc = bitval[bitc]; if (table68k[opc].mnemo == i_BTST || table68k[opc].mnemo == i_BSET || table68k[opc].mnemo == i_BCLR || table68k[opc].mnemo == i_BCHG) { sz = destmode == Dreg ? sz_long : sz_byte; } table68k[opc].size = sz; table68k[opc].sreg = srcreg; table68k[opc].dreg = destreg; table68k[opc].smode = srcmode; table68k[opc].dmode = destmode; table68k[opc].spos = srcgather ? srcpos : -1; table68k[opc].dpos = dstgather ? dstpos : -1; table68k[opc].suse = usesrc; table68k[opc].duse = usedst; table68k[opc].stype = srctype; table68k[opc].plev = id.plevel; table68k[opc].clev = id.cpulevel; #if 0 for (i = 0; i < 5; i++) { table68k[opc].flaginfo[i].flagset = id.flaginfo[i].flagset; table68k[opc].flaginfo[i].flaguse = id.flaginfo[i].flaguse; } #endif // Fix flags used information for Scc, Bcc, TRAPcc, DBcc instructions if ( table68k[opc].mnemo == i_Scc || table68k[opc].mnemo == i_Bcc || table68k[opc].mnemo == i_DBcc || table68k[opc].mnemo == i_TRAPcc ) { switch (table68k[opc].cc) { // CC mask: XNZVC // 8421 case 0: flags_used = 0x00; break; /* T */ case 1: flags_used = 0x00; break; /* F */ case 2: flags_used = 0x05; break; /* HI */ case 3: flags_used = 0x05; break; /* LS */ case 4: flags_used = 0x01; break; /* CC */ case 5: flags_used = 0x01; break; /* CS */ case 6: flags_used = 0x04; break; /* NE */ case 7: flags_used = 0x04; break; /* EQ */ case 8: flags_used = 0x02; break; /* VC */ case 9: flags_used = 0x02; break; /* VS */ case 10:flags_used = 0x08; break; /* PL */ case 11:flags_used = 0x08; break; /* MI */ case 12:flags_used = 0x0A; break; /* GE */ case 13:flags_used = 0x0A; break; /* LT */ case 14:flags_used = 0x0E; break; /* GT */ case 15:flags_used = 0x0E; break; /* LE */ } } #if 1 /* gb-- flagdead and flaglive would not have correct information */ table68k[opc].flagdead = flags_set; table68k[opc].flaglive = flags_used; #else table68k[opc].flagdead = flagdead; table68k[opc].flaglive = flaglive; #endif table68k[opc].cflow = cflow; nomatch: /* FOO! */; } } static void handle_merges (long int opcode) { uae_u16 smsk; uae_u16 dmsk; int sbitdst, dstend; int srcreg, dstreg; if (table68k[opcode].spos == -1) { sbitdst = 1; smsk = 0; } else { switch (table68k[opcode].stype) { case 0: smsk = 7; sbitdst = 8; break; case 1: smsk = 255; sbitdst = 256; break; case 2: smsk = 15; sbitdst = 16; break; case 3: smsk = 7; sbitdst = 8; break; case 4: smsk = 7; sbitdst = 8; break; case 5: smsk = 63; sbitdst = 64; break; case 6: smsk = 255; sbitdst = 256; break; case 7: smsk = 3; sbitdst = 4; break; default: smsk = 0; sbitdst = 0; abort(); break; } smsk <<= table68k[opcode].spos; } if (table68k[opcode].dpos == -1) { dstend = 1; dmsk = 0; } else { dmsk = 7 << table68k[opcode].dpos; dstend = 8; } for (srcreg=0; srcreg < sbitdst; srcreg++) { for (dstreg=0; dstreg < dstend; dstreg++) { uae_u16 code = opcode; code = (code & ~smsk) | (srcreg << table68k[opcode].spos); code = (code & ~dmsk) | (dstreg << table68k[opcode].dpos); /* Check whether this is in fact the same instruction. * The instructions should never differ, except for the * Bcc.(BW) case. */ if (table68k[code].mnemo != table68k[opcode].mnemo || table68k[code].size != table68k[opcode].size || table68k[code].suse != table68k[opcode].suse || table68k[code].duse != table68k[opcode].duse) { readcpu_mismatch++; continue; } if (table68k[opcode].suse && (table68k[opcode].spos != table68k[code].spos || table68k[opcode].smode != table68k[code].smode || table68k[opcode].stype != table68k[code].stype)) { readcpu_mismatch++; continue; } if (table68k[opcode].duse && (table68k[opcode].dpos != table68k[code].dpos || table68k[opcode].dmode != table68k[code].dmode)) { readcpu_mismatch++; continue; } if (code != opcode) table68k[code].handler = opcode; } } } static void do_merges (void) { long int opcode; int nr = 0; readcpu_mismatch = 0; for (opcode = 0; opcode < 65536; opcode++) { if (table68k[opcode].handler != -1 || table68k[opcode].mnemo == i_ILLG) continue; nr++; handle_merges (opcode); } nr_cpuop_funcs = nr; } void init_table68k (void) { int i; free(table68k); table68k = (struct instr *)malloc (65536 * sizeof (struct instr)); for (i = 0; i < 65536; i++) { table68k[i].mnemo = i_ILLG; table68k[i].handler = -1; } for (i = 0; i < n_defs68k; i++) { build_insn (i); } do_merges(); } void exit_table68k (void) { free(table68k); table68k = NULL; } aranym-1.1.0/src/uae_cpu/noflags.h0000664000175000017500000000740613454637622015223 0ustar joyjoy#ifndef NOFLAGS_H #define NOFLAGS_H /* Undefine everything that will *set* flags. Note: Leave *reading* flags alone ;-). We assume that nobody does something like SET_ZFLG(a=b+c), i.e. expect side effects of the macros. That would be a stupid thing to do when using macros. */ /* Gwenole Beauchesne pointed out that CAS and CAS2 use flag_cmp to set flags that are then used internally, and that thus the noflags versions of those instructions were broken. Oops! Easy fix: Leave flag_cmp alone. It is only used by CMP* and CAS* instructions. For CAS*, noflags is a bad idea. For CMP*, which has setting flags as its only function, the noflags version is kinda pointless, anyway. Note that this will only work while using the optflag_* routines --- as we do on all (one ;-) platforms that will ever use the noflags versions, anyway. However, if you try to compile without optimized flags, the "SET_ZFLAG" macro will be left unchanged, to make CAS and CAS2 work right. Of course, this is contrary to the whole idea of noflags, but better be right than be fast. Another problem exists with one of the bitfield operations. Once again, one of the operations sets a flag, and looks at it later. And the CHK2 instruction does so as well. For those, a different solution is possible. the *_ALWAYS versions of the SET_?FLG macros shall remain untouched by the redefinitions in this file. Unfortunately, they are defined in terms of the macros we *do* redefine. So here comes a bit of trickery.... */ #define NOFLAGS_CMP 0 #undef SET_NFLG_ALWAYS static inline void SET_NFLG_ALWAYS(uae_u32 x) { SET_NFLG(x); /* This has not yet been redefined */ } #undef SET_CFLG_ALWAYS static inline void SET_CFLG_ALWAYS(uae_u32 x) { SET_CFLG(x); /* This has not yet been redefined */ } #undef CPUFUNC #define CPUFUNC(x) x##_nf #ifndef OPTIMIZED_FLAGS #undef SET_ZFLG #define SET_ZFLG(y) do {uae_u32 dummy=(y); } while (0) #endif #undef SET_CFLG #define SET_CFLG(y) do {uae_u32 dummy=(y); } while (0) #undef SET_VFLG #define SET_VFLG(y) do {uae_u32 dummy=(y); } while (0) #undef SET_NFLG #define SET_NFLG(y) do {uae_u32 dummy=(y); } while (0) #undef SET_XFLG #define SET_XFLG(y) do {uae_u32 dummy=(y); } while (0) #undef CLEAR_CZNV #define CLEAR_CZNV() #undef IOR_CZNV #define IOR_CZNV(y) do {uae_u32 dummy=(y); } while (0) #undef SET_CZNV #define SET_CZNV(y) do {uae_u32 dummy=(y); } while (0) #undef COPY_CARRY #define COPY_CARRY() #ifdef optflag_testl #undef optflag_testl #endif #ifdef optflag_testw #undef optflag_testw #endif #ifdef optflag_testb #undef optflag_testb #endif #ifdef optflag_addl #undef optflag_addl #endif #ifdef optflag_addw #undef optflag_addw #endif #ifdef optflag_addb #undef optflag_addb #endif #ifdef optflag_subl #undef optflag_subl #endif #ifdef optflag_subw #undef optflag_subw #endif #ifdef optflag_subb #undef optflag_subb #endif #if NOFLAGS_CMP #ifdef optflag_cmpl #undef optflag_cmpl #endif #ifdef optflag_cmpw #undef optflag_cmpw #endif #ifdef optflag_cmpb #undef optflag_cmpb #endif #endif #define optflag_testl(v) do { } while (0) #define optflag_testw(v) do { } while (0) #define optflag_testb(v) do { } while (0) #define optflag_addl(v, s, d) (v = (uae_s32)(d) + (uae_s32)(s)) #define optflag_addw(v, s, d) (v = (uae_s16)(d) + (uae_s16)(s)) #define optflag_addb(v, s, d) (v = (uae_s8)(d) + (uae_s8)(s)) #define optflag_subl(v, s, d) (v = (uae_s32)(d) - (uae_s32)(s)) #define optflag_subw(v, s, d) (v = (uae_s16)(d) - (uae_s16)(s)) #define optflag_subb(v, s, d) (v = (uae_s8)(d) - (uae_s8)(s)) #if NOFLAGS_CMP /* These are just for completeness sake */ #define optflag_cmpl(s, d) do { } while (0) #define optflag_cmpw(s, d) do { } while (0) #define optflag_cmpb(s, d) do { } while (0) #endif #endif aranym-1.1.0/src/uae_cpu/newcpu.h0000664000175000017500000002176313454637622015075 0ustar joyjoy/* * newcpu.h - CPU emulation * * Copyright (c) 2009 ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * UAE - The Un*x Amiga Emulator * * MC68000 emulation * * Copyright 1995 Bernd Schmidt */ #ifndef NEWCPU_H #define NEWCPU_H #include "sysdeps.h" #include "registers.h" #include "spcflags.h" #include "m68k.h" #include "memory-uae.h" # include extern struct fixup { int flag; uae_u32 reg; uaecptr value; }fixup; extern int areg_byteinc[]; extern int imm8_table[]; extern int movem_index1[256]; extern int movem_index2[256]; extern int movem_next[256]; extern int broken_in; #ifdef X86_ASSEMBLY /* This hack seems to force all register saves (pushl %reg) to be moved to the begining of the function, thus making it possible to cpuopti to remove them since m68k_run_1 will save those registers before calling the instruction handler */ # define cpuop_tag(tag) __asm__ __volatile__ ( "#cpuop_" tag ) #else # define cpuop_tag(tag) ; #endif #define cpuop_begin() do { cpuop_tag("begin"); } while (0) #define cpuop_end() do { cpuop_tag("end"); } while (0) typedef void REGPARAM2 cpuop_func (uae_u32) REGPARAM; struct cputbl { cpuop_func *handler; uae_u16 specific; uae_u16 opcode; }; extern cpuop_func *cpufunctbl[65536]; #ifdef USE_JIT typedef void compop_func (uae_u32) REGPARAM; struct comptbl { compop_func *handler; uae_u32 opcode; uae_u32 specific; #define COMP_OPCODE_ISJUMP 0x0001 #define COMP_OPCODE_LONG_OPCODE 0x0002 #define COMP_OPCODE_CMOV 0x0004 #define COMP_OPCODE_ISADDX 0x0008 #define COMP_OPCODE_ISCJUMP 0x0010 #define COMP_OPCODE_USES_FPU 0x0020 }; #endif extern void REGPARAM2 op_illg (uae_u32) REGPARAM; #define m68k_dreg(r,num) ((r).regs[(num)]) #define m68k_areg(r,num) (((r).regs + 8)[(num)]) #ifdef FULLMMU static ALWAYS_INLINE uae_u8 get_ibyte(uae_u32 o) { return mmu_get_byte(m68k_getpc() + o + 1, 0, sz_byte); } static ALWAYS_INLINE uae_u16 get_iword(uae_u32 o) { return mmu_get_word(m68k_getpc() + o, 0, sz_word); } static ALWAYS_INLINE uae_u32 get_ilong(uae_u32 o) { uaecptr addr = m68k_getpc() + o; if (unlikely(is_unaligned(addr, 4))) return mmu_get_long_unaligned(addr, 0); return mmu_get_long(addr, 0, sz_long); } #else #define get_ibyte(o) do_get_mem_byte((uae_u8 *)(get_real_address(m68k_getpc(), 0, sz_byte) + (o) + 1)) #define get_iword(o) do_get_mem_word((uae_u16 *)(get_real_address(m68k_getpc(), 0, sz_word) + (o))) #define get_ilong(o) do_get_mem_long((uae_u32 *)(get_real_address(m68k_getpc(), 0, sz_long) + (o))) #endif #if 0 static inline uae_u32 get_ibyte_prefetch (uae_s32 o) { if (o > 3 || o < 0) return do_get_mem_byte((uae_u8 *)(do_get_real_address(regs.pcp, false, false) + o + 1)); return do_get_mem_byte((uae_u8 *)(((uae_u8 *)®s.prefetch) + o + 1)); } static inline uae_u32 get_iword_prefetch (uae_s32 o) { if (o > 3 || o < 0) return do_get_mem_word((uae_u16 *)(do_get_real_address(regs.pcp, false, false) + o)); return do_get_mem_word((uae_u16 *)(((uae_u8 *)®s.prefetch) + o)); } static inline uae_u32 get_ilong_prefetch (uae_s32 o) { if (o > 3 || o < 0) return do_get_mem_long((uae_u32 *)(do_get_real_address(regs.pcp, false, false) + o)); if (o == 0) return do_get_mem_long(®s.prefetch); return (do_get_mem_word (((uae_u16 *)®s.prefetch) + 1) << 16) | do_get_mem_word ((uae_u16 *)(do_get_real_address(regs.pcp, false, false) + 4)); } #endif #ifdef FULLMMU #define m68k_incpc(o) (regs.pc += (o)) #else #define m68k_incpc(o) (regs.pc_p += (o)) #endif static inline void fill_prefetch_0 (void) { #if USE_PREFETCH_BUFFER uae_u32 r; #ifdef UNALIGNED_PROFITABLE r = *(uae_u32 *)do_get_real_address(m68k_getpc(), false, false); regs.prefetch = r; #else r = do_get_mem_long ((uae_u32 *)do_get_real_address(m68k_getpc(), false, false)); do_put_mem_long (®s.prefetch, r); #endif #endif } #if 0 static inline void fill_prefetch_2 (void) { uae_u32 r = do_get_mem_long (®s.prefetch) << 16; uae_u32 r2 = do_get_mem_word (((uae_u16 *)do_get_real_address(regs.pcp, false, false)) + 1); r |= r2; do_put_mem_long (®s.prefetch, r); } #else #define fill_prefetch_2 fill_prefetch_0 #endif /* These are only used by the 68020/68881 code, and therefore don't * need to handle prefetch. */ static inline uae_u32 next_ibyte (void) { uae_u32 r = get_ibyte (0); m68k_incpc (2); return r; } static inline uae_u32 next_iword (void) { uae_u32 r = get_iword (0); m68k_incpc (2); return r; } static inline uae_u32 next_ilong (void) { uae_u32 r = get_ilong (0); m68k_incpc (4); return r; } static inline void m68k_setpc (uaecptr newpc) { #ifndef FULLMMU regs.pc_p = regs.pc_oldp = get_real_address(newpc, 0, sz_word); #endif regs.fault_pc = regs.pc = newpc; } #define m68k_setpc_fast m68k_setpc #define m68k_setpc_bcc m68k_setpc #define m68k_setpc_rte m68k_setpc static inline void m68k_do_rts(void) { m68k_setpc(get_long(m68k_areg(regs, 7))); m68k_areg(regs, 7) += 4; } static inline void m68k_do_bsr(uaecptr oldpc, uae_s32 offset) { put_long(m68k_areg(regs, 7) - 4, oldpc); m68k_areg(regs, 7) -= 4; m68k_incpc(offset); } static inline void m68k_do_jsr(uaecptr oldpc, uaecptr dest) { put_long(m68k_areg(regs, 7) - 4, oldpc); m68k_areg(regs, 7) -= 4; m68k_setpc(dest); } static inline void m68k_setstopped (int stop) { regs.stopped = stop; /* A traced STOP instruction drops through immediately without actually stopping. */ if (stop && !( SPCFLAGS_TEST( SPCFLAG_DOTRACE ))) SPCFLAGS_SET( SPCFLAG_STOP ); } #ifdef FULLMMU # define GET_OPCODE (get_iword (0)) #elif defined ARAM_PAGE_CHECK # ifdef HAVE_GET_WORD_UNSWAPPED # define GET_OPCODE (do_get_mem_word_unswapped((uae_u16*)(pc + pc_offset))); # else # define GET_OPCODE (do_get_mem_word((uae_u16*)(pc + pc_offset))); # endif #else # ifdef HAVE_GET_WORD_UNSWAPPED # define GET_OPCODE (do_get_mem_word_unswapped ((uae_u16*)get_real_address(m68k_getpc(), 0, sz_word))) # else # define GET_OPCODE (get_iword (0)) # endif #endif extern REGPARAM uae_u32 get_disp_ea_020 (uae_u32 base, uae_u32 dp); extern REGPARAM uae_u32 get_disp_ea_000 (uae_u32 base, uae_u32 dp); extern REGPARAM uae_u32 get_bitfield(uae_u32 src, uae_u32 bdata[2], uae_s32 offset, int width); extern REGPARAM void put_bitfield(uae_u32 dst, uae_u32 bdata[2], uae_u32 val, uae_s32 offset, int width); extern void MakeSR (void); extern void MakeFromSR (void); extern void Exception (int, uaecptr); extern void dump_counts (void); extern int m68k_move2c (int, uae_u32 *); extern int m68k_movec2 (int, uae_u32 *); extern void m68k_divl (uae_u32, uae_u32, uae_u16, uaecptr); extern void m68k_mull (uae_u32, uae_u32, uae_u16); extern void m68k_emulop (uae_u32); extern void m68k_emulop_return (void); extern void m68k_natfeat_id(void); extern void m68k_natfeat_call(void); extern void init_m68k (void); extern void exit_m68k (void); extern void m68k_dumpstate (FILE *, uaecptr *); extern void m68k_disasm (FILE *, uaecptr, uaecptr *, int); extern void newm68k_disasm(FILE *, uaecptr, uaecptr *, unsigned int); extern void showDisasm(uaecptr); extern void m68k_reset (void); extern void m68k_enter_debugger(void); extern int m68k_do_specialties(void); extern void m68k_instr_set(void); uae_u32 linea68000(uae_u16 opcode); /* Opcode of faulting instruction */ extern uae_u16 last_op_for_exception_3; /* PC at fault time */ extern uaecptr last_addr_for_exception_3; /* Address that generated the exception */ extern uaecptr last_fault_for_exception_3; #define CPU_OP_NAME(a) op ## a /* 68040+ 68881 */ extern const struct cputbl op_smalltbl_0_ff[]; extern const struct cputbl op_smalltbl_0_nf[]; #ifdef FLIGHT_RECORDER extern void m68k_record_step(uaecptr, int); #endif extern void m68k_do_execute(void); extern void m68k_execute(void); #ifdef USE_JIT extern void m68k_compile_execute(void); extern void m68k_do_compile_execute(void); #endif #ifdef USE_CPU_EMUL_SERVICES extern int32 emulated_ticks; extern void cpu_do_check_ticks(void); static inline void cpu_check_ticks(void) { if (--emulated_ticks <= 0) cpu_do_check_ticks(); } #else #define cpu_check_ticks() #define cpu_do_check_ticks() #endif cpuop_func op_illg_1; #endif /* NEWCPU_H */ aranym-1.1.0/src/uae_cpu/newcpu.cpp0000664000175000017500000011163313454637622015424 0ustar joyjoy/* * newcpu.cpp - CPU emulation * * Copyright (c) 2010 ARAnyM dev team (see AUTHORS) * * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * UAE - The Un*x Amiga Emulator * * MC68000 emulation * * (c) 1995 Bernd Schmidt */ #include "sysdeps.h" #include #include "cpu_emulation.h" #include "main.h" #include "emul_op.h" #include "m68k.h" #include "memory-uae.h" #include "readcpu.h" #include "newcpu.h" #ifdef USE_JIT # include "compiler/compemu.h" #endif #include "fpu/fpu.h" #include "natfeats.h" #include "disasm-glue.h" #include #define DEBUG 0 #include "debug.h" #define SANITY_CHECK_ATC 1 struct fixup fixup = {0, 0, 0}; int quit_program = 0; int exit_val = 0; // For instruction $7139 bool cpu_debugging = false; struct flag_struct regflags; /* LongJump buffers */ #ifdef EXCEPTIONS_VIA_LONGJMP JMP_BUF excep_env; #endif /* Opcode of faulting instruction */ uae_u16 last_op_for_exception_3; /* PC at fault time */ uaecptr last_addr_for_exception_3; /* Address that generated the exception */ uaecptr last_fault_for_exception_3; int areg_byteinc[] = { 1,1,1,1,1,1,1,2 }; int imm8_table[] = { 8,1,2,3,4,5,6,7 }; int movem_index1[256]; int movem_index2[256]; int movem_next[256]; #ifdef FLIGHT_RECORDER // feel free to edit the following defines to customize the dump #define FRLOG_HOTKEY 1 /* 1 = dump only when hotkey is held down */ #define FRLOG_ALL 1 /* 1 = dump continuously to ever growing log */ #define FRLOG_IRQ 0 /* 1 = dump also CPU in interrupts */ #define FRLOG_REGS 0 /* 1 = dump also all data/address registers */ #define FRLOG_SIZE 8192 /* this many instructions in single dump */ struct rec_step { uae_u32 d[8]; uae_u32 a[8]; uae_u32 pc; uae_u16 sr; uae_u32 usp; uae_u32 msp; uae_u32 isp; uae_u16 instr; }; bool cpu_flight_recorder_active = false; #if FRLOG_ALL const int LOG_SIZE = 10; #else const int LOG_SIZE = FRLOG_SIZE; #endif static rec_step frlog[LOG_SIZE]; static int log_ptr = -1; // First time initialization static const char *log_filename(void) { const char *name = getenv("M68K_LOG_FILE"); return name ? name : "log.68k"; } void dump_flight_recorder(void) { #if FRLOG_ALL FILE *f = fopen(log_filename(), "a"); #else FILE *f = fopen(log_filename(), "w"); #endif if (f == NULL) return; for (int i = 0; i < LOG_SIZE; i++) { int j = (i + log_ptr) % LOG_SIZE; fprintf(f, "pc %08x instr %04x sr %04x usp %08x msp %08x isp %08x\n", frlog[j].pc, frlog[j].instr, frlog[j].sr, frlog[j].usp, frlog[j].msp, frlog[j].isp); // adding a simple opcode -> assembler conversion table would help #if FRLOG_REGS fprintf(f, "d0 %08x d1 %08x d2 %08x d3 %08x\n", frlog[j].d[0], frlog[j].d[1], frlog[j].d[2], frlog[j].d[3]); fprintf(f, "d4 %08x d5 %08x d6 %08x d7 %08x\n", frlog[j].d[4], frlog[j].d[5], frlog[j].d[6], frlog[j].d[7]); fprintf(f, "a0 %08x a1 %08x a2 %08x a3 %08x\n", frlog[j].a[0], frlog[j].a[1], frlog[j].a[2], frlog[j].a[3]); fprintf(f, "a4 %08x a5 %08x a6 %08x a7 %08x\n", frlog[j].a[4], frlog[j].a[5], frlog[j].a[6], frlog[j].a[7]); #endif m68k_disasm(f, frlog[j].pc, NULL, 1); } fclose(f); } void m68k_record_step(uaecptr pc, int opcode) { static bool last_state = false; #if FRLOG_HOTKEY if (! cpu_flight_recorder_active) { if (last_state) { // dump log out dump_flight_recorder(); // remember last state last_state = false; } return; } #endif if (! last_state) { // reset old log log_ptr = 0; memset(frlog, 0, sizeof(frlog)); // remember last state last_state = true; } #if FRLOG_REGS for (int i = 0; i < 8; i++) { frlog[log_ptr].d[i] = m68k_dreg(regs, i); frlog[log_ptr].a[i] = m68k_areg(regs, i); } #endif frlog[log_ptr].pc = pc; MakeSR(); #if ! FRLOG_IRQ // is CPU in interrupt handler? Quit if should not be logged. if (regs.s && !regs.m) return; #endif frlog[log_ptr].sr = regs.sr; frlog[log_ptr].usp = regs.usp; frlog[log_ptr].msp = regs.msp; frlog[log_ptr].isp = regs.isp; frlog[log_ptr].instr = opcode; log_ptr = (log_ptr + 1) % LOG_SIZE; #if FRLOG_ALL if (log_ptr == 0) dump_flight_recorder(); #endif } #endif /* FLIGHT_RECORDER */ int broken_in; static inline unsigned int cft_map (unsigned int f) { #if !defined(HAVE_GET_WORD_UNSWAPPED) || defined(FULLMMU) return f; #else return do_byteswap_16(f); #endif } void REGPARAM2 op_illg_1 (uae_u32 opcode) { op_illg (cft_map (opcode)); } void init_m68k (void) { int i; for (i = 0 ; i < 256 ; i++) { int j; for (j = 0 ; j < 8 ; j++) { if (i & (1 << j)) break; } movem_index1[i] = j; movem_index2[i] = 7-j; movem_next[i] = i & (~(1 << j)); } fpu_init (CPUType == 4); } void exit_m68k (void) { fpu_exit (); } struct regstruct regs; // MJ static struct regstruct regs_backup[16]; // MJ static int backup_pointer = 0; #ifdef FULLMMU static inline uae_u8 get_ibyte_1(uae_u32 o) { return get_ibyte(o); } static inline uae_u16 get_iword_1(uae_u32 o) { return get_iword(o); } static inline uae_u32 get_ilong_1(uae_u32 o) { return get_ilong(o); } #else # define get_ibyte_1(o) get_byte(m68k_getpc() + (o) + 1) # define get_iword_1(o) get_word(m68k_getpc() + (o)) # define get_ilong_1(o) get_long(m68k_getpc() + (o)) #endif /* * extract bitfield data from memory and return it in the MSBs * bdata caches the unmodified data for put_bitfield() */ uae_u32 get_bitfield(uae_u32 src, uae_u32 bdata[2], uae_s32 offset, int width) { uae_u32 tmp, res, mask; offset &= 7; mask = 0xffffffffu << (32 - width); switch ((offset + width + 7) >> 3) { case 1: tmp = get_byte(src); res = tmp << (24 + offset); bdata[0] = tmp & ~(mask >> (24 + offset)); break; case 2: tmp = get_word(src); res = tmp << (16 + offset); bdata[0] = tmp & ~(mask >> (16 + offset)); break; case 3: tmp = get_word(src); res = tmp << (16 + offset); bdata[0] = tmp & ~(mask >> (16 + offset)); tmp = get_byte(src + 2); res |= tmp << (8 + offset); bdata[1] = tmp & ~(mask >> (8 + offset)); break; case 4: tmp = get_long(src); res = tmp << offset; bdata[0] = tmp & ~(mask >> offset); break; case 5: tmp = get_long(src); res = tmp << offset; bdata[0] = tmp & ~(mask >> offset); tmp = get_byte(src + 4); res |= tmp >> (8 - offset); bdata[1] = tmp & ~(mask << (8 - offset)); break; default: /* Panic? */ res = 0; break; } return res; } /* * write bitfield data (in the LSBs) back to memory, upper bits * must be cleared already. */ void put_bitfield(uae_u32 dst, uae_u32 bdata[2], uae_u32 val, uae_s32 offset, int width) { offset = (offset & 7) + width; switch ((offset + 7) >> 3) { case 1: put_byte(dst, bdata[0] | (val << (8 - offset))); break; case 2: put_word(dst, bdata[0] | (val << (16 - offset))); break; case 3: put_word(dst, bdata[0] | (val >> (offset - 16))); put_byte(dst + 2, bdata[1] | (val << (24 - offset))); break; case 4: put_long(dst, bdata[0] | (val << (32 - offset))); break; case 5: put_long(dst, bdata[0] | (val >> (offset - 32))); put_byte(dst + 4, bdata[1] | (val << (40 - offset))); break; } } uae_u32 get_disp_ea_020 (uae_u32 base, uae_u32 dp) { int reg = (dp >> 12) & 15; uae_s32 regd = regs.regs[reg]; if ((dp & 0x800) == 0) regd = (uae_s32)(uae_s16)regd; regd <<= (dp >> 9) & 3; if (dp & 0x100) { uae_s32 outer = 0; if (dp & 0x80) base = 0; if (dp & 0x40) regd = 0; if ((dp & 0x30) == 0x20) base += (uae_s32)(uae_s16)next_iword(); if ((dp & 0x30) == 0x30) base += next_ilong(); if ((dp & 0x3) == 0x2) outer = (uae_s32)(uae_s16)next_iword(); if ((dp & 0x3) == 0x3) outer = next_ilong(); if ((dp & 0x4) == 0) base += regd; if (dp & 0x3) base = get_long (base); if (dp & 0x4) base += regd; return base + outer; } else { return base + (uae_s32)((uae_s8)dp) + regd; } } uae_u32 get_disp_ea_000 (uae_u32 base, uae_u32 dp) { int reg = (dp >> 12) & 15; uae_s32 regd = regs.regs[reg]; #if 1 if ((dp & 0x800) == 0) regd = (uae_s32)(uae_s16)regd; return base + (uae_s8)dp + regd; #else /* Branch-free code... benchmark this again now that * things are no longer inline. */ uae_s32 regd16; uae_u32 mask; mask = ((dp & 0x800) >> 11) - 1; regd16 = (uae_s32)(uae_s16)regd; regd16 &= mask; mask = ~mask; base += (uae_s8)dp; regd &= mask; regd |= regd16; return base + regd; #endif } void MakeSR (void) { #if 0 assert((regs.t1 & 1) == regs.t1); assert((regs.t0 & 1) == regs.t0); assert((regs.s & 1) == regs.s); assert((regs.m & 1) == regs.m); assert((XFLG & 1) == XFLG); assert((NFLG & 1) == NFLG); assert((ZFLG & 1) == ZFLG); assert((VFLG & 1) == VFLG); assert((CFLG & 1) == CFLG); #endif regs.sr = ((regs.t1 << 15) | (regs.t0 << 14) | (regs.s << 13) | (regs.m << 12) | (regs.intmask << 8) | (GET_XFLG() << 4) | (GET_NFLG() << 3) | (GET_ZFLG() << 2) | (GET_VFLG() << 1) | GET_CFLG()); } void MakeFromSR (void) { int oldm = regs.m; int olds = regs.s; regs.t1 = (regs.sr >> 15) & 1; regs.t0 = (regs.sr >> 14) & 1; regs.s = (regs.sr >> 13) & 1; mmu_set_super(regs.s); regs.m = (regs.sr >> 12) & 1; regs.intmask = (regs.sr >> 8) & 7; SET_XFLG ((regs.sr >> 4) & 1); SET_NFLG ((regs.sr >> 3) & 1); SET_ZFLG ((regs.sr >> 2) & 1); SET_VFLG ((regs.sr >> 1) & 1); SET_CFLG (regs.sr & 1); if (olds != regs.s) { if (olds) { if (oldm) regs.msp = m68k_areg(regs, 7); else regs.isp = m68k_areg(regs, 7); m68k_areg(regs, 7) = regs.usp; } else { regs.usp = m68k_areg(regs, 7); m68k_areg(regs, 7) = regs.m ? regs.msp : regs.isp; } } else if (olds && oldm != regs.m) { if (oldm) { regs.msp = m68k_areg(regs, 7); m68k_areg(regs, 7) = regs.isp; } else { regs.isp = m68k_areg(regs, 7); m68k_areg(regs, 7) = regs.msp; } } // SPCFLAGS_SET( SPCFLAG_INT ); if (regs.t1 || regs.t0) SPCFLAGS_SET( SPCFLAG_TRACE ); else SPCFLAGS_CLEAR( SPCFLAG_TRACE ); } /* for building exception frames */ static inline void exc_push_word(uae_u16 w) { m68k_areg(regs, 7) -= 2; put_word(m68k_areg(regs, 7), w); } static inline void exc_push_long(uae_u32 l) { m68k_areg(regs, 7) -= 4; put_long (m68k_areg(regs, 7), l); } static inline void exc_make_frame( int format, uae_u16 sr, uae_u32 currpc, int nr, uae_u32 x0, uae_u32 x1 ) { switch(format) { case 4: exc_push_long(x1); exc_push_long(x0); break; case 3: case 2: exc_push_long(x0); break; } exc_push_word((format << 12) + (nr * 4)); /* format | vector */ exc_push_long(currpc); exc_push_word(sr); } #ifdef EXCEPTIONS_VIA_LONGJMP static int building_bus_fault_stack_frame=0; #endif void Exception(int nr, uaecptr oldpc) { uae_u32 currpc = m68k_getpc (); MakeSR(); if (fixup.flag) { m68k_areg(regs, fixup.reg) = fixup.value; fixup.flag = 0; } if (!regs.s) { regs.usp = m68k_areg(regs, 7); m68k_areg(regs, 7) = regs.m ? regs.msp : regs.isp; regs.s = 1; mmu_set_super(1); } if (nr == 2) { /* BUS ERROR handler begins */ #ifdef ENABLE_EPSLIMITER check_eps_limit(currpc); #endif // panicbug("Exception Nr. %d CPC: %08x NPC: %08x SP=%08x Addr: %08x", nr, currpc, get_long (regs.vbr + 4*nr), m68k_areg(regs, 7), regs.mmu_fault_addr); #ifdef EXCEPTIONS_VIA_LONGJMP if (!building_bus_fault_stack_frame) #else try #endif { #ifdef EXCEPTIONS_VIA_LONGJMP building_bus_fault_stack_frame= 1; #endif /* 68040 */ exc_push_long(0); /* PD3 */ exc_push_long(0); /* PD2 */ exc_push_long(0); /* PD1 */ exc_push_long(0); /* PD0/WB1D */ exc_push_long(0); /* WB1A */ exc_push_long(0); /* WB2D */ exc_push_long(0); /* WB2A */ exc_push_long(regs.wb3_data); /* WB3D */ exc_push_long(regs.mmu_fault_addr); /* WB3A */ exc_push_long(regs.mmu_fault_addr); exc_push_word(0); /* WB1S */ exc_push_word(0); /* WB2S */ exc_push_word(regs.wb3_status); /* WB3S */ regs.wb3_status = 0; exc_push_word(regs.mmu_ssw); exc_push_long(regs.mmu_fault_addr); /* EA */ exc_make_frame(7, regs.sr, regs.fault_pc, 2, 0, 0); } #ifdef EXCEPTIONS_VIA_LONGJMP else #else catch (m68k_exception) #endif { report_double_bus_error(); #ifdef EXCEPTIONS_VIA_LONGJMP building_bus_fault_stack_frame= 0; #endif return; } #ifdef EXCEPTIONS_VIA_LONGJMP building_bus_fault_stack_frame= 0; #endif /* end of BUS ERROR handler */ } else if (nr == 3) { exc_make_frame(2, regs.sr, last_addr_for_exception_3, nr, last_fault_for_exception_3 & 0xfffffffe, 0); } else if (nr ==5 || nr == 6 || nr == 7 || nr == 9) { /* div by zero, CHK, TRAP or TRACE */ exc_make_frame(2, regs.sr, currpc, nr, oldpc, 0); } else if (regs.m && nr >= 24 && nr < 32) { /* interrupts! */ exc_make_frame(0, regs.sr, currpc, nr, 0, 0); regs.sr |= (1 << 13); regs.msp = m68k_areg(regs, 7); m68k_areg(regs, 7) = regs.isp; exc_make_frame(1, /* throwaway */ regs.sr, currpc, nr, 0, 0); } else { exc_make_frame(0, regs.sr, currpc, nr, 0, 0); } m68k_setpc (get_long (regs.vbr + 4*nr)); SPCFLAGS_SET( SPCFLAG_JIT_END_COMPILE ); fill_prefetch_0 (); regs.t1 = regs.t0 = regs.m = 0; SPCFLAGS_CLEAR(SPCFLAG_TRACE | SPCFLAG_DOTRACE); } static void Interrupt(int nr) { assert(nr < 8 && nr >= 0); Exception(nr+24, 0); regs.intmask = nr; // why the hell the SPCFLAG_INT is to be set??? (joy) // regs.spcflags |= SPCFLAG_INT; (disabled by joy) } static void SCCInterrupt(int nr) { // fprintf(stderr, "CPU: in SCCInterrupt\n"); Exception(nr, 0); regs.intmask = 5;// ex 5 } static void MFPInterrupt(int nr) { // fprintf(stderr, "CPU: in MFPInterrupt\n"); Exception(nr, 0); regs.intmask = 6; } int m68k_move2c (int regno, uae_u32 *regp) { switch (regno) { case 0: regs.sfc = *regp & 7; break; case 1: regs.dfc = *regp & 7; break; case 2: regs.cacr = *regp & 0x80008000; #ifdef USE_JIT set_cache_state(regs.cacr & 0x8000); if (*regp & 0x08) { /* Just to be on the safe side */ flush_icache(2); } #endif break; case 3: mmu_set_tc(*regp & 0xc000); break; case 4: case 5: case 6: case 7: mmu_set_ttr(regno, *regp & 0xffffe364); break; case 0x800: regs.usp = *regp; break; case 0x801: regs.vbr = *regp; break; case 0x802: regs.caar = *regp & 0xfc; break; case 0x803: regs.msp = *regp; if (regs.m == 1) m68k_areg(regs, 7) = regs.msp; break; case 0x804: regs.isp = *regp; if (regs.m == 0) m68k_areg(regs, 7) = regs.isp; break; case 0x805: mmu_set_mmusr(*regp); break; case 0x806: regs.urp = *regp & MMU_ROOT_PTR_ADDR_MASK; break; case 0x807: regs.srp = *regp & MMU_ROOT_PTR_ADDR_MASK; break; default: op_illg (0x4E7B); return 0; } return 1; } int m68k_movec2 (int regno, uae_u32 *regp) { switch (regno) { case 0: *regp = regs.sfc; break; case 1: *regp = regs.dfc; break; case 2: *regp = regs.cacr; break; case 3: *regp = regs.tc; break; case 4: *regp = regs.itt0; break; case 5: *regp = regs.itt1; break; case 6: *regp = regs.dtt0; break; case 7: *regp = regs.dtt1; break; case 0x800: *regp = regs.usp; break; case 0x801: *regp = regs.vbr; break; case 0x802: *regp = regs.caar; break; case 0x803: *regp = regs.m == 1 ? m68k_areg(regs, 7) : regs.msp; break; case 0x804: *regp = regs.m == 0 ? m68k_areg(regs, 7) : regs.isp; break; case 0x805: *regp = regs.mmusr; break; case 0x806: *regp = regs.urp; break; case 0x807: *regp = regs.srp; break; default: op_illg (0x4E7A); return 0; } return 1; } #if !defined(uae_s64) static inline int div_unsigned(uae_u32 src_hi, uae_u32 src_lo, uae_u32 div, uae_u32 *quot, uae_u32 *rem) { uae_u32 q = 0, cbit = 0; int i; if (div <= src_hi) { return 1; } for (i = 0 ; i < 32 ; i++) { cbit = src_hi & 0x80000000ul; src_hi <<= 1; if (src_lo & 0x80000000ul) src_hi++; src_lo <<= 1; q = q << 1; if (cbit || div <= src_hi) { q |= 1; src_hi -= div; } } *quot = q; *rem = src_hi; return 0; } #endif void m68k_divl (uae_u32 /*opcode*/, uae_u32 src, uae_u16 extra, uaecptr oldpc) { #if defined(uae_s64) if (src == 0) { Exception (5, oldpc); return; } if (extra & 0x800) { /* signed variant */ uae_s64 a = (uae_s64)(uae_s32)m68k_dreg(regs, (extra >> 12) & 7); uae_s64 quot, rem; if (extra & 0x400) { a &= 0xffffffffu; a |= (uae_s64)m68k_dreg(regs, extra & 7) << 32; } rem = a % (uae_s64)(uae_s32)src; quot = a / (uae_s64)(uae_s32)src; if ((quot & UVAL64(0xffffffff80000000)) != 0 && (quot & UVAL64(0xffffffff80000000)) != UVAL64(0xffffffff80000000)) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else { if (((uae_s32)rem < 0) != ((uae_s64)a < 0)) rem = -rem; SET_VFLG (0); SET_CFLG (0); SET_ZFLG (((uae_s32)quot) == 0); SET_NFLG (((uae_s32)quot) < 0); m68k_dreg(regs, extra & 7) = rem; m68k_dreg(regs, (extra >> 12) & 7) = quot; } } else { /* unsigned */ uae_u64 a = (uae_u64)(uae_u32)m68k_dreg(regs, (extra >> 12) & 7); uae_u64 quot, rem; if (extra & 0x400) { a &= 0xffffffffu; a |= (uae_u64)m68k_dreg(regs, extra & 7) << 32; } rem = a % (uae_u64)src; quot = a / (uae_u64)src; if (quot > 0xffffffffu) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else { SET_VFLG (0); SET_CFLG (0); SET_ZFLG (((uae_s32)quot) == 0); SET_NFLG (((uae_s32)quot) < 0); m68k_dreg(regs, extra & 7) = rem; m68k_dreg(regs, (extra >> 12) & 7) = quot; } } #else if (src == 0) { Exception (5, oldpc); return; } if (extra & 0x800) { /* signed variant */ uae_s32 lo = (uae_s32)m68k_dreg(regs, (extra >> 12) & 7); uae_s32 hi = lo < 0 ? -1 : 0; uae_s32 save_high; uae_u32 quot, rem; uae_u32 sign; if (extra & 0x400) { hi = (uae_s32)m68k_dreg(regs, extra & 7); } save_high = hi; sign = (hi ^ src); if (hi < 0) { hi = ~hi; lo = -lo; if (lo == 0) hi++; } if ((uae_s32)src < 0) src = -src; if (div_unsigned(hi, lo, src, ", &rem) || (sign & 0x80000000) ? quot > 0x80000000 : quot > 0x7fffffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else { if (sign & 0x80000000) quot = -quot; if (((uae_s32)rem < 0) != (save_high < 0)) rem = -rem; SET_VFLG (0); SET_CFLG (0); SET_ZFLG (((uae_s32)quot) == 0); SET_NFLG (((uae_s32)quot) < 0); m68k_dreg(regs, extra & 7) = rem; m68k_dreg(regs, (extra >> 12) & 7) = quot; } } else { /* unsigned */ uae_u32 lo = (uae_u32)m68k_dreg(regs, (extra >> 12) & 7); uae_u32 hi = 0; uae_u32 quot, rem; if (extra & 0x400) { hi = (uae_u32)m68k_dreg(regs, extra & 7); } if (div_unsigned(hi, lo, src, ", &rem)) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else { SET_VFLG (0); SET_CFLG (0); SET_ZFLG (((uae_s32)quot) == 0); SET_NFLG (((uae_s32)quot) < 0); m68k_dreg(regs, extra & 7) = rem; m68k_dreg(regs, (extra >> 12) & 7) = quot; } } #endif } #if !defined(uae_s64) static inline void mul_unsigned(uae_u32 src1, uae_u32 src2, uae_u32 *dst_hi, uae_u32 *dst_lo) { uae_u32 r0 = (src1 & 0xffff) * (src2 & 0xffff); uae_u32 r1 = ((src1 >> 16) & 0xffff) * (src2 & 0xffff); uae_u32 r2 = (src1 & 0xffff) * ((src2 >> 16) & 0xffff); uae_u32 r3 = ((src1 >> 16) & 0xffff) * ((src2 >> 16) & 0xffff); uae_u32 lo; lo = r0 + ((r1 << 16) & 0xffff0000ul); if (lo < r0) r3++; r0 = lo; lo = r0 + ((r2 << 16) & 0xffff0000ul); if (lo < r0) r3++; r3 += ((r1 >> 16) & 0xffff) + ((r2 >> 16) & 0xffff); *dst_lo = lo; *dst_hi = r3; } #endif void m68k_mull (uae_u32 /*opcode*/, uae_u32 src, uae_u16 extra) { #if defined(uae_s64) if (extra & 0x800) { /* signed variant */ uae_s64 a = (uae_s64)(uae_s32)m68k_dreg(regs, (extra >> 12) & 7); a *= (uae_s64)(uae_s32)src; SET_VFLG (0); SET_CFLG (0); SET_ZFLG (a == 0); SET_NFLG (a < 0); if (extra & 0x400) m68k_dreg(regs, extra & 7) = a >> 32; else if ((a & UVAL64(0xffffffff80000000)) != 0 && (a & UVAL64(0xffffffff80000000)) != UVAL64(0xffffffff80000000)) { SET_VFLG (1); } m68k_dreg(regs, (extra >> 12) & 7) = (uae_u32)a; } else { /* unsigned */ uae_u64 a = (uae_u64)(uae_u32)m68k_dreg(regs, (extra >> 12) & 7); a *= (uae_u64)src; SET_VFLG (0); SET_CFLG (0); SET_ZFLG (a == 0); SET_NFLG (((uae_s64)a) < 0); if (extra & 0x400) m68k_dreg(regs, extra & 7) = a >> 32; else if ((a & UVAL64(0xffffffff00000000)) != 0) { SET_VFLG (1); } m68k_dreg(regs, (extra >> 12) & 7) = (uae_u32)a; } #else if (extra & 0x800) { /* signed variant */ uae_s32 src1,src2; uae_u32 dst_lo,dst_hi; uae_u32 sign; src1 = (uae_s32)src; src2 = (uae_s32)m68k_dreg(regs, (extra >> 12) & 7); sign = (src1 ^ src2); if (src1 < 0) src1 = -src1; if (src2 < 0) src2 = -src2; mul_unsigned((uae_u32)src1,(uae_u32)src2,&dst_hi,&dst_lo); if (sign & 0x80000000) { dst_hi = ~dst_hi; dst_lo = -dst_lo; if (dst_lo == 0) dst_hi++; } SET_VFLG (0); SET_CFLG (0); SET_ZFLG (dst_hi == 0 && dst_lo == 0); SET_NFLG (((uae_s32)dst_hi) < 0); if (extra & 0x400) m68k_dreg(regs, extra & 7) = dst_hi; else if ((dst_hi != 0 || (dst_lo & 0x80000000) != 0) && ((dst_hi & 0xffffffff) != 0xffffffff || (dst_lo & 0x80000000) != 0x80000000)) { SET_VFLG (1); } m68k_dreg(regs, (extra >> 12) & 7) = dst_lo; } else { /* unsigned */ uae_u32 dst_lo,dst_hi; mul_unsigned(src,(uae_u32)m68k_dreg(regs, (extra >> 12) & 7),&dst_hi,&dst_lo); SET_VFLG (0); SET_CFLG (0); SET_ZFLG (dst_hi == 0 && dst_lo == 0); SET_NFLG (((uae_s32)dst_hi) < 0); if (extra & 0x400) m68k_dreg(regs, extra & 7) = dst_hi; else if (dst_hi != 0) { SET_VFLG (1); } m68k_dreg(regs, (extra >> 12) & 7) = dst_lo; } #endif } // If value is greater than zero, this means we are still processing an EmulOp // because the counter is incremented only in m68k_execute(), i.e. interpretive // execution only #ifdef USE_JIT static int m68k_execute_depth = 0; #endif void m68k_reset (void) { regs.s = 1; regs.m = 0; regs.stopped = 0; regs.t1 = 0; regs.t0 = 0; SET_ZFLG (0); SET_XFLG (0); SET_CFLG (0); SET_VFLG (0); SET_NFLG (0); SPCFLAGS_INIT( 0 ); regs.intmask = 7; regs.vbr = regs.sfc = regs.dfc = 0; // need to ensure the following order of initialization is correct // (it is definitely better than what it was before this commit // since it was reading from 0x00000000 in User mode and with active MMU) mmu_set_tc(regs.tc & ~0x8000); /* disable mmu */ m68k_areg (regs, 7) = phys_get_long(0x00000000); m68k_setpc (phys_get_long(0x00000004)); fill_prefetch_0 (); /* gb-- moved into {fpp,fpu_x86}.cpp::fpu_init() regs.fpcr = regs.fpsr = regs.fpiar = 0; */ fpu_reset(); // MMU mmu_reset(); mmu_set_super(1); // Cache regs.cacr = 0; regs.caar = 0; #ifdef FLIGHT_RECORDER log_ptr = 0; memset(frlog, 0, sizeof(frlog)); #endif } void m68k_emulop_return(void) { SPCFLAGS_SET( SPCFLAG_BRK ); quit_program = 1; } static void save_regs(struct M68kRegisters &r) { int i; for (i=0; i<8; i++) { r.d[i] = m68k_dreg(regs, i); r.a[i] = m68k_areg(regs, i); } r.pc = m68k_getpc(); MakeSR(); r.sr = regs.sr; r.isp = regs.isp; r.usp = regs.usp; r.msp = regs.msp; if ((r.sr & 0x2000) == 0) r.usp = r.a[7]; else if ((r.sr & 0x1000) != 0) r.msp = r.a[7]; else r.isp = r.a[7]; } static void restore_regs(struct M68kRegisters &r) { int i; for (i=0; i<8; i++) { m68k_dreg(regs, i) = r.d[i]; m68k_areg(regs, i) = r.a[i]; } regs.isp = r.isp; regs.usp = r.usp; regs.msp = r.msp; regs.sr = r.sr; MakeFromSR(); } void m68k_emulop(uae_u32 opcode) { struct M68kRegisters r; save_regs(r); if (EmulOp(opcode, &r)) restore_regs(r); } void m68k_natfeat_id(void) { struct M68kRegisters r; /* is it really necessary to save all registers? */ save_regs(r); memptr stack = r.a[7] + 4; /* skip return address */ r.d[0] = nf_get_id(stack); restore_regs(r); } void m68k_natfeat_call(void) { struct M68kRegisters r; /* is it really necessary to save all registers? */ save_regs(r); memptr stack = r.a[7] + 4; /* skip return address */ bool isSupervisorMode = ((r.sr & 0x2000) == 0x2000); r.d[0] = nf_call(stack, isSupervisorMode); restore_regs(r); } static int m68k_call(uae_u32 pc) { VOLATILE int exc = 0; m68k_setpc(pc); TRY(prb) { #ifdef USE_JIT if (bx_options.jit.jit) { exec_nostats(); // m68k_do_compile_execute(); // The above call to m68k_do_compile_execute fails with BadAccess in sigsegv_handler (MAC, if it is executed after the first compile_block) // (NULL pointer to addr_instr). // Call exec_nostats avoids calling compile_block, because stack modification is only temporary // which will fill up compile cache with BOGUS data. // we can call exec_nostats directly, do our code, and return back here. } else #endif m68k_do_execute(); } CATCH(prb) { exc = int(prb); } return exc; } static uae_u32 m68k_alloca(int size) { uae_u32 sp = (m68k_areg(regs, 7) - size) & ~1; m68k_areg(regs, 7) = sp; if ((regs.sr & 0x2000) == 0) regs.usp = sp; else if ((regs.sr & 0x1000) != 0) regs.msp = sp; else regs.isp = sp; return sp; } uae_u32 linea68000(volatile uae_u16 opcode) { sigjmp_buf jmp; struct M68kRegisters r; volatile uae_u32 abase = 0; SAVE_EXCEPTION; save_regs(r); const int sz = 8 + sizeof(void *); volatile uae_u32 sp = 0; uae_u32 backup[(sz + 3) / 4]; if (sigsetjmp(jmp, 1) == 0) { void *p = jmp; uae_u8 *sp_p; int exc; sp = m68k_alloca(sz); memcpy(backup, phys_get_real_address(sp), sz); WriteHWMemInt16(sp, opcode); WriteHWMemInt16(sp + 2, 0xa0ff); WriteHWMemInt32(sp + 4, 13); sp_p = phys_get_real_address(sp + 8); *((void **)sp_p) = p; if ((exc = m68k_call(sp)) != 0) { panicbug("exception %d in LINEA", exc); m68k_dreg(regs, 0) = 0; } } else { abase = m68k_dreg(regs, 0); } if (sp) { memcpy(phys_get_real_address(sp), backup, sz); } restore_regs(r); m68k_setpc(r.pc); RESTORE_EXCEPTION; return abase; } static void rts68000() { uae_u32 SP = m68k_getpc() + 6; sigjmp_buf *p; uae_u8 *sp_p = phys_get_real_address(SP); p = (sigjmp_buf *)(*((void **)sp_p)); SP += sizeof(void *); m68k_areg(regs, 7) = SP; siglongjmp(*p, 1); } void REGPARAM2 op_illg (uae_u32 opcode) { uaecptr pc = m68k_getpc (); if ((opcode & 0xF000) == 0xA000) { if (opcode == 0xa0ff) { uae_u32 call = ReadHWMemInt32(pc + 2); switch (call) { case 13: rts68000(); return; } m68k_setpc(pc + 6); } Exception(0xA,0); return; } if ((opcode & 0xF000) == 0xF000) { Exception(0xB,0); return; } D(bug("Illegal instruction: %04x at %08x", opcode, pc)); #if defined(USE_JIT) && defined(JIT_DEBUG) compiler_dumpstate(); #endif Exception (4,0); return; } static uaecptr last_trace_ad = 0; static void do_trace (void) { if (regs.t0) { uae_u16 opcode; /* should also include TRAP, CHK, SR modification FPcc */ /* probably never used so why bother */ /* We can afford this to be inefficient... */ m68k_setpc (m68k_getpc ()); fill_prefetch_0 (); opcode = get_word(m68k_getpc()); if (opcode == 0x4e72 /* RTE */ || opcode == 0x4e74 /* RTD */ || opcode == 0x4e75 /* RTS */ || opcode == 0x4e77 /* RTR */ || opcode == 0x4e76 /* TRAPV */ || (opcode & 0xffc0) == 0x4e80 /* JSR */ || (opcode & 0xffc0) == 0x4ec0 /* JMP */ || (opcode & 0xff00) == 0x6100 /* BSR */ || ((opcode & 0xf000) == 0x6000 /* Bcc */ && cctrue((opcode >> 8) & 0xf)) || ((opcode & 0xf0f0) == 0x5050 /* DBcc */ && !cctrue((opcode >> 8) & 0xf) && (uae_s16)m68k_dreg(regs, opcode & 7) != 0)) { last_trace_ad = m68k_getpc (); SPCFLAGS_CLEAR( SPCFLAG_TRACE ); SPCFLAGS_SET( SPCFLAG_DOTRACE ); } } else if (regs.t1) { last_trace_ad = m68k_getpc (); SPCFLAGS_CLEAR( SPCFLAG_TRACE ); SPCFLAGS_SET( SPCFLAG_DOTRACE ); } } #define SERVE_VBL_MFP(resetStop) \ { \ if (SPCFLAGS_TEST( SPCFLAG_INT3|SPCFLAG_VBL|SPCFLAG_INT5|SPCFLAG_SCC|SPCFLAG_MFP )) { \ if (SPCFLAGS_TEST( SPCFLAG_INT3 )) { \ if (3 > regs.intmask) { \ Interrupt(3); \ regs.stopped = 0; \ SPCFLAGS_CLEAR( SPCFLAG_INT3 ); \ if (resetStop) \ SPCFLAGS_CLEAR( SPCFLAG_STOP ); \ } \ } \ if (SPCFLAGS_TEST( SPCFLAG_VBL )) { \ if (4 > regs.intmask) { \ Interrupt(4); \ regs.stopped = 0; \ SPCFLAGS_CLEAR( SPCFLAG_VBL ); \ if (resetStop) \ SPCFLAGS_CLEAR( SPCFLAG_STOP ); \ } \ } \ if (SPCFLAGS_TEST( SPCFLAG_INT5 )) { \ if (5 > regs.intmask) { \ Interrupt(5); \ regs.stopped = 0; \ SPCFLAGS_CLEAR( SPCFLAG_INT5 ); \ if (resetStop) \ SPCFLAGS_CLEAR( SPCFLAG_STOP ); \ } \ } \ if (SPCFLAGS_TEST( SPCFLAG_SCC )) { \ if (5 > regs.intmask) { \ int vector_number=SCCdoInterrupt(); \ if(vector_number){ \ SCCInterrupt(vector_number); \ regs.stopped = 0; \ SPCFLAGS_CLEAR( SPCFLAG_SCC); \ if (resetStop) \ SPCFLAGS_CLEAR( SPCFLAG_STOP ); \ } \ else \ SPCFLAGS_CLEAR( SPCFLAG_SCC ); \ } \ } \ if (SPCFLAGS_TEST( SPCFLAG_MFP )) { \ if (6 > regs.intmask) { \ int vector_number = MFPdoInterrupt(); \ if (vector_number) { \ MFPInterrupt(vector_number); \ regs.stopped = 0; \ if (resetStop) \ SPCFLAGS_CLEAR( SPCFLAG_STOP ); \ } \ else \ SPCFLAGS_CLEAR( SPCFLAG_MFP ); \ } \ } \ } \ } #define SERVE_INTERNAL_IRQ() \ { \ if (SPCFLAGS_TEST( SPCFLAG_INTERNAL_IRQ )) { \ SPCFLAGS_CLEAR( SPCFLAG_INTERNAL_IRQ ); \ invoke200HzInterrupt(); \ } \ } int m68k_do_specialties(void) { SERVE_INTERNAL_IRQ(); #ifdef USE_JIT // Block was compiled SPCFLAGS_CLEAR( SPCFLAG_JIT_END_COMPILE ); // Retain the request to get out of compiled code until // we reached the toplevel execution, i.e. the one that // can compile then run compiled code. This also means // we processed all (nested) EmulOps if ((m68k_execute_depth == 0) && SPCFLAGS_TEST( SPCFLAG_JIT_EXEC_RETURN )) SPCFLAGS_CLEAR( SPCFLAG_JIT_EXEC_RETURN ); #endif /*n_spcinsns++;*/ if (SPCFLAGS_TEST( SPCFLAG_DOTRACE )) { Exception (9,last_trace_ad); } #if 0 /* not for ARAnyM; emulating 040 only */ if ((regs.spcflags & SPCFLAG_STOP) && regs.s == 0 && currprefs.cpu_model <= 68010) { // 68000/68010 undocumented special case: // if STOP clears S-bit and T was not set: // cause privilege violation exception, PC pointing to following instruction. // If T was set before STOP: STOP works as documented. m68k_unset_stop(); Exception(8, 0); } #endif while (SPCFLAGS_TEST( SPCFLAG_STOP )) { if ((regs.sr & 0x700) == 0x700) { panicbug("STOPed with interrupts disabled, exiting; pc=$%08x", m68k_getpc()); m68k_dumpstate (stderr, NULL); #if 0 quit_program = 1; #endif #ifdef FULL_HISTORY ndebug::showHistory(20, false); m68k_dumpstate (stderr, NULL); #endif return 1; } // give unused time slices back to OS SleepAndWait(); SERVE_INTERNAL_IRQ(); SERVE_VBL_MFP(true); if (SPCFLAGS_TEST( SPCFLAG_BRK )) break; } if (SPCFLAGS_TEST( SPCFLAG_TRACE )) do_trace (); SERVE_VBL_MFP(false); /* // do not understand the INT vs DOINT stuff so I disabled it (joy) if (regs.spcflags & SPCFLAG_INT) { regs.spcflags &= ~SPCFLAG_INT; regs.spcflags |= SPCFLAG_DOINT; } */ if (SPCFLAGS_TEST( SPCFLAG_BRK /*| SPCFLAG_MODE_CHANGE*/ )) { SPCFLAGS_CLEAR( SPCFLAG_BRK /*| SPCFLAG_MODE_CHANGE*/ ); return 1; } return 0; } void m68k_do_execute (void) { uae_u32 pc; uae_u32 opcode; for (;;) { regs.fault_pc = pc = m68k_getpc(); #ifdef FULL_HISTORY #ifdef NEED_TO_DEBUG_BADLY history[lasthist] = regs; historyf[lasthist] = regflags; #else history[lasthist] = m68k_getpc(); #endif if (++lasthist == MAX_HIST) lasthist = 0; if (lasthist == firsthist) { if (++firsthist == MAX_HIST) firsthist = 0; } #endif #ifndef FULLMMU #ifdef ARAM_PAGE_CHECK if (((pc ^ pc_page) > ARAM_PAGE_MASK)) { check_ram_boundary(pc, 2, false); pc_page = pc; pc_offset = (uintptr)get_real_address(pc, 0, sz_word) - pc; } #else check_ram_boundary(pc, 2, false); #endif #endif opcode = GET_OPCODE; #ifdef FLIGHT_RECORDER m68k_record_step(m68k_getpc(), cft_map(opcode)); #endif (*cpufunctbl[opcode])(opcode); cpu_check_ticks(); regs.fault_pc = m68k_getpc(); if (SPCFLAGS_TEST(SPCFLAG_ALL_BUT_EXEC_RETURN)) { if (m68k_do_specialties()) return; } } } void m68k_execute (void) { #ifdef USE_JIT m68k_execute_depth++; #endif #ifdef DEBUGGER VOLATILE bool after_exception = false; #endif setjmpagain: TRY(prb) { for (;;) { if (quit_program > 0) { if (quit_program == 1) { #ifdef FLIGHT_RECORDER dump_flight_recorder(); #endif break; } quit_program = 0; m68k_reset (); } #ifdef DEBUGGER if (debugging && !after_exception) debug(); after_exception = false; #endif m68k_do_execute(); } } CATCH(prb) { Exception(prb, 0); #ifdef DEBUGGER after_exception = true; #endif goto setjmpagain; } #ifdef USE_JIT m68k_execute_depth--; #endif } void m68k_disasm (FILE *f, uaecptr addr, uaecptr *nextpc, int cnt) { #ifdef HAVE_DISASM_M68K char buf[256]; int size; disasm_info.memory_vma = addr; while (cnt-- > 0) { size = m68k_disasm_to_buf(&disasm_info, buf, 1); fprintf(f, "%s\n", buf); if (size < 0) break; } if (nextpc) *nextpc = disasm_info.memory_vma; #else if (nextpc) *nextpc = addr; (void) f; (void) cnt; #endif } #ifdef DEBUGGER void newm68k_disasm(FILE *f, uaecptr addr, uaecptr *nextpc, unsigned int cnt) { #ifdef HAVE_DISASM_M68K char buf[256]; disasm_info.memory_vma = addr; if (cnt == 0) { m68k_disasm_to_buf(&disasm_info, buf, 1); } else { while (cnt-- > 0) { m68k_disasm_to_buf(&disasm_info, buf, 1); fprintf(f, "%s\n", buf); } } if (nextpc) *nextpc = disasm_info.memory_vma; #else if (nextpc) *nextpc = addr; (void) cnt; #endif } #endif /* DEBUGGER */ #ifdef FULL_HISTORY void showDisasm(uaecptr addr) { #ifdef HAVE_DISASM_M68K char buf[256]; disasm_info.memory_vma = addr; m68k_disasm_to_buf(&disasm_info, buf, 1); bug("%s", buf); #else (void) addr; #endif } #endif /* FULL_HISTORY */ void m68k_dumpstate (FILE *out, uaecptr *nextpc) { int i; for (i = 0; i < 8; i++){ fprintf (out, "D%d: %08lx ", i, (unsigned long)m68k_dreg(regs, i)); if ((i & 3) == 3) fprintf (out, "\n"); } for (i = 0; i < 8; i++){ fprintf (out, "A%d: %08lx ", i, (unsigned long)m68k_areg(regs, i)); if ((i & 3) == 3) fprintf (out, "\n"); } if (regs.s == 0) regs.usp = m68k_areg(regs, 7); if (regs.s && regs.m) regs.msp = m68k_areg(regs, 7); if (regs.s && regs.m == 0) regs.isp = m68k_areg(regs, 7); fprintf (out, "USP=%08lx ISP=%08lx MSP=%08lx VBR=%08lx\n", (unsigned long)regs.usp, (unsigned long)regs.isp, (unsigned long)regs.msp, (unsigned long)regs.vbr); fprintf (out, "T=%d%d S=%d M=%d X=%d N=%d Z=%d V=%d C=%d IMASK=%d TCE=%d TCP=%d\n", regs.t1, regs.t0, regs.s, regs.m, (int)GET_XFLG(), (int)GET_NFLG(), (int)GET_ZFLG(), (int)GET_VFLG(), (int)GET_CFLG(), regs.intmask, regs.mmu_enabled, regs.mmu_pagesize_8k); fprintf (out, "CACR=%08lx CAAR=%08lx URP=%08lx SRP=%08lx\n", (unsigned long)regs.cacr, (unsigned long)regs.caar, (unsigned long)regs.urp, (unsigned long)regs.srp); fprintf (out, "DTT0=%08lx DTT1=%08lx ITT0=%08lx ITT1=%08lx\n", (unsigned long)regs.dtt0, (unsigned long)regs.dtt1, (unsigned long)regs.itt0, (unsigned long)regs.itt1); for (i = 0; i < 8; i++){ fprintf (out, "FP%d: %g ", i, (double)fpu.registers[i]); if ((i & 3) == 3) fprintf (out, "\n"); } #if 0 fprintf (out, "N=%d Z=%d I=%d NAN=%d\n", (regs.fpsr & 0x8000000) != 0, (regs.fpsr & 0x4000000) != 0, (regs.fpsr & 0x2000000) != 0, (regs.fpsr & 0x1000000) != 0); #endif m68k_disasm(out, m68k_getpc (), nextpc, 1); if (nextpc) fprintf (out, "next PC: %08lx\n", (unsigned long)*nextpc); } aranym-1.1.0/src/uae_cpu/memory.cpp0000664000175000017500000000335613454637622015435 0ustar joyjoy/* * memory.cpp - memory management * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * UAE - The Un*x Amiga Emulator * * Memory management * * (c) 1995 Bernd Schmidt */ #include "sysdeps.h" #include "memory-uae.h" #define DEBUG 0 #include "debug.h" #ifdef ARAM_PAGE_CHECK uaecptr pc_page = 0xeeeeeeee; uintptr pc_offset = 0; uaecptr read_page = 0xeeeeeeee; uintptr read_offset = 0; uaecptr write_page = 0xeeeeeeee; uintptr write_offset = 0; #endif extern "C" void breakpt(void) { // bug("bus err: pc=%08x, sp=%08x, addr=%08x", m68k_getpc(), regs.regs[15], regs.mmu_fault_addr); } #if !KNOWN_ALLOC && !NORMAL_ADDRESSING // This part need rewrite for ARAnyM !! // It can be taken from hatari. #error Not prepared for your platform, maybe you need memory banks from hatari #endif /* !KNOWN_ALLOC && !NORMAL_ADDRESSING */ aranym-1.1.0/src/uae_cpu/memory-uae.h0000664000175000017500000004221213454637622015644 0ustar joyjoy/* * memory.h - memory management * * Copyright (c) 2001-2006 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * UAE - The Un*x Amiga Emulator * * memory management * * Copyright 1995 Bernd Schmidt */ #ifndef UAE_MEMORY_H #define UAE_MEMORY_H #include "sysdeps.h" #include "string.h" #include "hardware.h" #include "parameters.h" #include "registers.h" #include "cpummu.h" #include "readcpu.h" # include // newcpu.h extern void Exception (int, uaecptr); #ifdef EXCEPTIONS_VIA_LONGJMP extern JMP_BUF excep_env; #define SAVE_EXCEPTION \ JMP_BUF excep_env_old; \ memcpy(excep_env_old, excep_env, sizeof(JMP_BUF)) #define RESTORE_EXCEPTION \ memcpy(excep_env, excep_env_old, sizeof(JMP_BUF)) #define TRY(var) int var = SETJMP(excep_env); if (!var) #define CATCH(var) else #define THROW(n) LONGJMP(excep_env, n) #define THROW_AGAIN(var) LONGJMP(excep_env, var) #define VOLATILE volatile #else struct m68k_exception { int prb; m68k_exception (int exc) : prb (exc) {} operator int() { return prb; } }; #define SAVE_EXCEPTION #define RESTORE_EXCEPTION #define TRY(var) try #define CATCH(var) catch(m68k_exception var) #define THROW(n) throw m68k_exception(n) #define THROW_AGAIN(var) throw #define VOLATILE #endif /* EXCEPTIONS_VIA_LONGJMP */ extern int in_exception_2; #define STRAM_END 0x0e00000UL // should be replaced by global ROMBase as soon as ROMBase will be a constant #define ROM_END 0x0e80000UL // should be replaced by ROMBase + RealROMSize if we are going to work with larger TOS ROMs than 512 kilobytes #define FastRAM_BEGIN 0x1000000UL // should be replaced by global FastRAMBase as soon as FastRAMBase will be a constant #ifdef FixedSizeFastRAM #define FastRAM_SIZE (FixedSizeFastRAM * 1024 * 1024) #else #define FastRAM_SIZE FastRAMSize #endif #ifdef FIXED_VIDEORAM #define ARANYMVRAMSTART 0xf0000000UL #endif #define ARANYMVRAMSIZE 0x00100000 // should be a variable to protect VGA card offscreen memory #ifdef FIXED_VIDEORAM extern uintptr VMEMBaseDiff; #else extern uae_u32 VideoRAMBase; #endif #ifdef ARAM_PAGE_CHECK extern uaecptr pc_page, read_page, write_page; extern uintptr pc_offset, read_offset, write_offset; # ifdef PROTECT2K # define ARAM_PAGE_MASK 0x7ff # else # ifdef FULLMMU # define ARAM_PAGE_MASK 0xfff # else # define ARAM_PAGE_MASK 0xfffff # endif # endif #endif extern uintptr MEMBaseDiff; extern uintptr ROMBaseDiff; extern uintptr FastRAMBaseDiff; # define InitMEMBaseDiff(va, ra) (MEMBaseDiff = (uintptr)(va) - (uintptr)(ra)) # define InitROMBaseDiff(va, ra) (ROMBaseDiff = (uintptr)(va) - (uintptr)(ra)) # define InitFastRAMBaseDiff(va, ra) (FastRAMBaseDiff = (uintptr)(va) - (uintptr)(ra)) #ifdef FIXED_VIDEORAM #define InitVMEMBaseDiff(va, ra) (VMEMBaseDiff = (uintptr)(va) - (uintptr)(ra)) #else #define InitVMEMBaseDiff(va, ra) (ra = (uintptr)(va) + MEMBaseDiff) #endif extern "C" void breakpt(void); static inline uae_u64 do_get_mem_quad(uae_u64 *a) {return SDL_SwapBE64(*a);} static inline void do_put_mem_quad(uae_u64 *a, uae_u64 v) {*a = SDL_SwapBE64(v);} #ifndef NOCHECKBOUNDARY static ALWAYS_INLINE bool test_ram_boundary(uaecptr addr, int size, bool super, bool write) { if (addr <= (FastRAM_BEGIN + FastRAM_SIZE - size)) { #ifdef PROTECT2K // protect first 2kB of RAM - access in supervisor mode only if (!super && addr < 0x00000800UL) return false; #endif // check for write access to protected areas: // - first two longwords of ST-RAM are non-writable (ROM shadow) // - non-writable area between end of ST-RAM and begin of FastRAM if (!write || addr >= FastRAM_BEGIN || (addr >= 8 && addr <= (STRAM_END - size))) return true; } #ifdef FIXED_VIDEORAM return addr >= ARANYMVRAMSTART && addr <= (ARANYMVRAMSTART + ARANYMVRAMSIZE - size); #else return addr >= VideoRAMBase && addr <= (VideoRAMBase + ARANYMVRAMSIZE - size); #endif } /* * "size" is the size of the memory access (byte = 1, word = 2, long = 4) */ static ALWAYS_INLINE void check_ram_boundary(uaecptr addr, int size, bool write) { if (test_ram_boundary(addr, size, regs.s, write)) return; // D(bug("BUS ERROR %s at $%x\n", (write ? "writing" : "reading"), addr)); regs.mmu_fault_addr = addr; regs.mmu_ssw = ((size & 3) << 5) | (write ? 0 : (1 << 8)); breakpt(); THROW(2); } #else static inline bool test_ram_boundary(uaecptr, int, bool, bool) { return 1; } static inline void check_ram_boundary(uaecptr, int, bool) { } #endif #ifdef FIXED_VIDEORAM # define do_get_real_address(a) ((uae_u8 *)(((uaecptr)(a) < ARANYMVRAMSTART) ? ((uaecptr)(a) + MEMBaseDiff) : ((uaecptr)(a) + VMEMBaseDiff))) #else # define do_get_real_address(a) ((uae_u8 *)((uintptr)(a) + MEMBaseDiff)) #endif static inline uae_u8 *phys_get_real_address(uaecptr addr) { return do_get_real_address(addr); } #ifndef NOCHECKBOUNDARY static inline bool phys_valid_address(uaecptr addr, bool write, int sz) { return test_ram_boundary(addr, sz, regs.s, write); } #else static inline bool phys_valid_address(uaecptr, bool, int) { return true; } #endif static inline uae_u64 phys_get_quad(uaecptr addr) { #ifdef ARAM_PAGE_CHECK if (((addr ^ read_page) <= ARAM_PAGE_MASK)) return do_get_mem_quad((uae_u64*)(addr + read_offset)); #endif #ifndef HW_SIGSEGV addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) return HWget_l(addr); /* TODO: must be HWget_q */ #endif check_ram_boundary(addr, 8, false); uae_u64 * const m = (uae_u64 *)phys_get_real_address(addr); #ifdef ARAM_PAGE_CHECK read_page = addr; read_offset = (uintptr)m - (uintptr)addr; #endif return do_get_mem_quad(m); } static inline uae_u32 phys_get_long(uaecptr addr) { #ifdef ARAM_PAGE_CHECK if (((addr ^ read_page) <= ARAM_PAGE_MASK)) return do_get_mem_long((uae_u32*)(addr + read_offset)); #endif #ifndef HW_SIGSEGV addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) return HWget_l(addr); #endif check_ram_boundary(addr, 4, false); uae_u32 * const m = (uae_u32 *)phys_get_real_address(addr); #ifdef ARAM_PAGE_CHECK read_page = addr; read_offset = (uintptr)m - (uintptr)addr; #endif return do_get_mem_long(m); } static inline uae_u32 phys_get_word(uaecptr addr) { #ifdef ARAM_PAGE_CHECK if (((addr ^ read_page) <= ARAM_PAGE_MASK)) return do_get_mem_word((uae_u16*)(addr + read_offset)); #endif #ifndef HW_SIGSEGV addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) return HWget_w(addr); #endif check_ram_boundary(addr, 2, false); uae_u16 * const m = (uae_u16 *)phys_get_real_address(addr); #ifdef ARAM_PAGE_CHECK read_page = addr; read_offset = (uintptr)m - (uintptr)addr; #endif return do_get_mem_word(m); } static inline uae_u32 phys_get_byte(uaecptr addr) { #ifdef ARAM_PAGE_CHECK if (((addr ^ read_page) <= ARAM_PAGE_MASK)) return do_get_mem_byte((uae_u8*)(addr + read_offset)); #endif #ifndef HW_SIGSEGV addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) return HWget_b(addr); #endif check_ram_boundary(addr, 1, false); uae_u8 * const m = (uae_u8 *)phys_get_real_address(addr); #ifdef ARAM_PAGE_CHECK read_page = addr; read_offset = (uintptr)m - (uintptr)addr; #endif return do_get_mem_byte(m); } static inline void phys_put_quad(uaecptr addr, uae_u64 l) { #ifdef ARAM_PAGE_CHECK if (((addr ^ write_page) <= ARAM_PAGE_MASK)) { do_put_mem_quad((uae_u64*)(addr + write_offset), l); return; } #endif #ifndef HW_SIGSEGV addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) { HWput_l(addr, l); /* TODO: must be HWput_q */ return; } #endif check_ram_boundary(addr, 8, true); uae_u64 * const m = (uae_u64 *)phys_get_real_address(addr); #ifdef ARAM_PAGE_CHECK write_page = addr; write_offset = (uintptr)m - (uintptr)addr; #endif do_put_mem_quad(m, l); } static inline void phys_put_long(uaecptr addr, uae_u32 l) { #ifdef ARAM_PAGE_CHECK if (((addr ^ write_page) <= ARAM_PAGE_MASK)) { do_put_mem_long((uae_u32*)(addr + write_offset), l); return; } #endif #ifndef HW_SIGSEGV addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) { HWput_l(addr, l); return; } #endif check_ram_boundary(addr, 4, true); uae_u32 * const m = (uae_u32 *)phys_get_real_address(addr); #ifdef ARAM_PAGE_CHECK write_page = addr; write_offset = (uintptr)m - (uintptr)addr; #endif do_put_mem_long(m, l); } static inline void phys_put_word(uaecptr addr, uae_u32 w) { #ifdef ARAM_PAGE_CHECK if (((addr ^ write_page) <= ARAM_PAGE_MASK)) { do_put_mem_word((uae_u16*)(addr + write_offset), w); return; } #endif #ifndef HW_SIGSEGV addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) { HWput_w(addr, w); return; } #endif check_ram_boundary(addr, 2, true); uae_u16 * const m = (uae_u16 *)phys_get_real_address(addr); #ifdef ARAM_PAGE_CHECK write_page = addr; write_offset = (uintptr)m - (uintptr)addr; #endif do_put_mem_word(m, w); } static inline void phys_put_byte(uaecptr addr, uae_u32 b) { #ifdef ARAM_PAGE_CHECK if (((addr ^ write_page) <= ARAM_PAGE_MASK)) { do_put_mem_byte((uae_u8*)(addr + write_offset), b); return; } #endif #ifndef HW_SIGSEGV addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) { HWput_b(addr, b); return; } #endif check_ram_boundary(addr, 1, true); uae_u8 * const m = (uae_u8 *)phys_get_real_address(addr); #ifdef ARAM_PAGE_CHECK write_page = addr; write_offset = (uintptr)m - (uintptr)addr; #endif do_put_mem_byte(m, b); } #ifdef FULLMMU static ALWAYS_INLINE bool is_unaligned(uaecptr addr, int size) { return unlikely((addr & (size - 1)) && (addr ^ (addr + size - 1)) & 0x1000); } static ALWAYS_INLINE uae_u8 *mmu_get_real_address(uaecptr addr, struct mmu_atc_line *cl) { return do_get_real_address(cl->phys + addr); } static ALWAYS_INLINE uae_u32 mmu_get_quad(uaecptr addr, int data) { struct mmu_atc_line *cl; if (likely(mmu_lookup(addr, data, 0, &cl))) return do_get_mem_quad((uae_u64 *)mmu_get_real_address(addr, cl)); return mmu_get_quad_slow(addr, regs.s, data, cl); } static ALWAYS_INLINE uae_u64 get_quad(uaecptr addr) { return mmu_get_quad(addr, 1); } static ALWAYS_INLINE uae_u32 mmu_get_long(uaecptr addr, int data, int size) { struct mmu_atc_line *cl; if (likely(mmu_lookup(addr, data, 0, &cl))) return do_get_mem_long((uae_u32 *)mmu_get_real_address(addr, cl)); return mmu_get_long_slow(addr, regs.s, data, size, cl); } static ALWAYS_INLINE uae_u32 get_long(uaecptr addr) { if (unlikely(is_unaligned(addr, 4))) return mmu_get_long_unaligned(addr, 1); return mmu_get_long(addr, 1, sz_long); } static ALWAYS_INLINE uae_u16 mmu_get_word(uaecptr addr, int data, int size) { struct mmu_atc_line *cl; if (likely(mmu_lookup(addr, data, 0, &cl))) return do_get_mem_word((uae_u16 *)mmu_get_real_address(addr, cl)); return mmu_get_word_slow(addr, regs.s, data, size, cl); } static ALWAYS_INLINE uae_u16 get_word(uaecptr addr) { if (unlikely(is_unaligned(addr, 2))) return mmu_get_word_unaligned(addr, 1); return mmu_get_word(addr, 1, sz_word); } static ALWAYS_INLINE uae_u8 mmu_get_byte(uaecptr addr, int data, int size) { struct mmu_atc_line *cl; if (likely(mmu_lookup(addr, data, 0, &cl))) return do_get_mem_byte((uae_u8 *)mmu_get_real_address(addr, cl)); return mmu_get_byte_slow(addr, regs.s, data, size, cl); } static ALWAYS_INLINE uae_u8 get_byte(uaecptr addr) { return mmu_get_byte(addr, 1, sz_byte); } static ALWAYS_INLINE void mmu_put_quad(uaecptr addr, uae_u64 val, int data) { struct mmu_atc_line *cl; if (likely(mmu_lookup(addr, data, 1, &cl))) do_put_mem_quad((uae_u64 *)mmu_get_real_address(addr, cl), val); else mmu_put_quad_slow(addr, val, regs.s, data, cl); } static ALWAYS_INLINE void put_quad(uaecptr addr, uae_u32 val) { mmu_put_quad(addr, val, 1); } static ALWAYS_INLINE void mmu_put_long(uaecptr addr, uae_u32 val, int data, int size) { struct mmu_atc_line *cl; if (likely(mmu_lookup(addr, data, 1, &cl))) do_put_mem_long((uae_u32 *)mmu_get_real_address(addr, cl), val); else mmu_put_long_slow(addr, val, regs.s, data, size, cl); } static ALWAYS_INLINE void put_long(uaecptr addr, uae_u32 val) { if (unlikely(is_unaligned(addr, 4))) mmu_put_long_unaligned(addr, val, 1); else mmu_put_long(addr, val, 1, sz_long); } static ALWAYS_INLINE void mmu_put_word(uaecptr addr, uae_u16 val, int data, int size) { struct mmu_atc_line *cl; if (likely(mmu_lookup(addr, data, 1, &cl))) do_put_mem_word((uae_u16 *)mmu_get_real_address(addr, cl), val); else mmu_put_word_slow(addr, val, regs.s, data, size, cl); } static ALWAYS_INLINE void put_word(uaecptr addr, uae_u16 val) { if (unlikely(is_unaligned(addr, 2))) mmu_put_word_unaligned(addr, val, 1); else mmu_put_word(addr, val, 1, sz_word); } static ALWAYS_INLINE void mmu_put_byte(uaecptr addr, uae_u8 val, int data, int size) { struct mmu_atc_line *cl; if (likely(mmu_lookup(addr, data, 1, &cl))) do_put_mem_byte((uae_u8 *)mmu_get_real_address(addr, cl), val); else mmu_put_byte_slow(addr, val, regs.s, data, size, cl); } static ALWAYS_INLINE void put_byte(uaecptr addr, uae_u8 val) { mmu_put_byte(addr, val, 1, sz_byte); } static inline uae_u8 *get_real_address(uaecptr addr, int write, int sz) { (void)sz; return phys_get_real_address(mmu_translate(addr, regs.s, 1, write)); } static ALWAYS_INLINE uae_u32 mmu_get_user_long(uaecptr addr, int super, int data, int size) { struct mmu_atc_line *cl; if (likely(mmu_user_lookup(addr, super, data, 0, &cl))) return do_get_mem_long((uae_u32 *)mmu_get_real_address(addr, cl)); return mmu_get_long_slow(addr, super, data, size, cl); } static ALWAYS_INLINE uae_u16 mmu_get_user_word(uaecptr addr, int super, int data, int size) { struct mmu_atc_line *cl; if (likely(mmu_user_lookup(addr, super, data, 0, &cl))) return do_get_mem_word((uae_u16 *)mmu_get_real_address(addr, cl)); return mmu_get_word_slow(addr, super, data, size, cl); } static ALWAYS_INLINE uae_u8 mmu_get_user_byte(uaecptr addr, int super, int data, int size) { struct mmu_atc_line *cl; if (likely(mmu_user_lookup(addr, super, data, 0, &cl))) return do_get_mem_byte((uae_u8 *)mmu_get_real_address(addr, cl)); return mmu_get_byte_slow(addr, super, data, size, cl); } static ALWAYS_INLINE void mmu_put_user_long(uaecptr addr, uae_u32 val, int super, int data, int size) { struct mmu_atc_line *cl; if (likely(mmu_user_lookup(addr, super, data, 1, &cl))) do_put_mem_long((uae_u32 *)mmu_get_real_address(addr, cl), val); else mmu_put_long_slow(addr, val, super, data, size, cl); } static ALWAYS_INLINE void mmu_put_user_word(uaecptr addr, uae_u16 val, int super, int data, int size) { struct mmu_atc_line *cl; if (likely(mmu_user_lookup(addr, super, data, 1, &cl))) do_put_mem_word((uae_u16 *)mmu_get_real_address(addr, cl), val); else mmu_put_word_slow(addr, val, super, data, size, cl); } static ALWAYS_INLINE void mmu_put_user_byte(uaecptr addr, uae_u8 val, int super, int data, int size) { struct mmu_atc_line *cl; if (likely(mmu_user_lookup(addr, super, data, 1, &cl))) do_put_mem_byte((uae_u8 *)mmu_get_real_address(addr, cl), val); else mmu_put_byte_slow(addr, val, super, data, size, cl); } static inline bool valid_address(uaecptr addr, bool write, int sz) { SAVE_EXCEPTION; TRY(prb) { (void)sz; check_ram_boundary(mmu_translate(addr, regs.s, 1, (write ? 1 : 0)), sz, write); RESTORE_EXCEPTION; return true; } CATCH(prb) { RESTORE_EXCEPTION; return false; } } #else # define get_quad(a) phys_get_quad(a) # define get_long(a) phys_get_long(a) # define get_word(a) phys_get_word(a) # define get_byte(a) phys_get_byte(a) # define put_quad(a,b) phys_put_quad(a,b) # define put_long(a,b) phys_put_long(a,b) # define put_word(a,b) phys_put_word(a,b) # define put_byte(a,b) phys_put_byte(a,b) # define get_real_address(a,w,s) phys_get_real_address(a) #define valid_address(a,w,s) phys_valid_address(a,w,s) #endif static inline void flush_internals() { #ifdef ARAM_PAGE_CHECK pc_page = 0xeeeeeeee; read_page = 0xeeeeeeee; write_page = 0xeeeeeeee; #endif } #endif /* MEMORY_H */ /* vim:ts=4:sw=4: */ aranym-1.1.0/src/uae_cpu/m68k.h0000664000175000017500000013421313454637622014354 0ustar joyjoy/* * m68k.h - machine dependent bits * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * UAE - The Un*x Amiga Emulator * * MC68000 emulation - machine dependent bits * * Copyright 1996 Bernd Schmidt * */ #ifndef M68K_FLAGS_H #define M68K_FLAGS_H #ifdef OPTIMIZED_FLAGS #if (defined(CPU_i386) && defined(X86_ASSEMBLY)) || (defined(CPU_x86_64) && defined(X86_64_ASSEMBLY)) # include #ifndef SAHF_SETO_PROFITABLE /* * Machine dependent structure for holding the 68k CCR flags */ /* PUSH/POP instructions are naturally 64-bit sized on x86-64, thus unsigned long hereunder is either 64-bit or 32-bit wide depending on the target. */ struct flag_struct { #if defined(CPU_x86_64) uint64 cznv; uint64 x; #else uint32 cznv; uint32 x; #endif }; /* * The bits in the cznv field in the above structure are assigned to * allow the easy mirroring of the x86 rFLAGS register. * * The 68k CZNV flags are thus assigned in cznv as: * * 76543210 FEDCBA98 --------- --------- * SZxxxxxC xxxxVxxx xxxxxxxxx xxxxxxxxx */ #define FLAGBIT_N 7 #define FLAGBIT_Z 6 #define FLAGBIT_C 0 #define FLAGBIT_V 11 #define FLAGBIT_X FLAGBIT_C /* should be in the same position as the x flag */ #define FLAGVAL_N (1 << FLAGBIT_N) #define FLAGVAL_Z (1 << FLAGBIT_Z) #define FLAGVAL_C (1 << FLAGBIT_C) #define FLAGVAL_V (1 << FLAGBIT_V) #define FLAGVAL_X (1 << FLAGBIT_X) #define SET_ZFLG(y) (regflags.cznv = (((uae_u32)regflags.cznv) & ~FLAGVAL_Z) | (((y) & 1) << FLAGBIT_Z)) #define SET_CFLG(y) (regflags.cznv = (((uae_u32)regflags.cznv) & ~FLAGVAL_C) | (((y) & 1) << FLAGBIT_C)) #define SET_VFLG(y) (regflags.cznv = (((uae_u32)regflags.cznv) & ~FLAGVAL_V) | (((y) & 1) << FLAGBIT_V)) #define SET_NFLG(y) (regflags.cznv = (((uae_u32)regflags.cznv) & ~FLAGVAL_N) | (((y) & 1) << FLAGBIT_N)) #define SET_XFLG(y) (regflags.x = ((y) & 1) << FLAGBIT_X) #define GET_ZFLG() ((regflags.cznv >> FLAGBIT_Z) & 1) #define GET_CFLG() ((regflags.cznv >> FLAGBIT_C) & 1) #define GET_VFLG() ((regflags.cznv >> FLAGBIT_V) & 1) #define GET_NFLG() ((regflags.cznv >> FLAGBIT_N) & 1) #define GET_XFLG() ((regflags.x >> FLAGBIT_X) & 1) #define CLEAR_CZNV() (regflags.cznv = 0) #define GET_CZNV() (regflags.cznv) #define IOR_CZNV(X) (regflags.cznv |= (X)) #define SET_CZNV(X) (regflags.cznv = (X)) #define COPY_CARRY() (regflags.x = regflags.cznv >> (FLAGBIT_C - FLAGBIT_X)) extern struct flag_struct regflags __asm__ ("regflags"); /* * Test CCR condition */ static inline int cctrue(int cc) { uae_u32 cznv = regflags.cznv; switch (cc) { case 0: return 1; /* T */ case 1: return 0; /* F */ case 2: return (cznv & (FLAGVAL_C | FLAGVAL_Z)) == 0; /* !CFLG && !ZFLG HI */ case 3: return (cznv & (FLAGVAL_C | FLAGVAL_Z)) != 0; /* CFLG || ZFLG LS */ case 4: return (cznv & FLAGVAL_C) == 0; /* !CFLG CC */ case 5: return (cznv & FLAGVAL_C) != 0; /* CFLG CS */ case 6: return (cznv & FLAGVAL_Z) == 0; /* !ZFLG NE */ case 7: return (cznv & FLAGVAL_Z) != 0; /* ZFLG EQ */ case 8: return (cznv & FLAGVAL_V) == 0; /* !VFLG VC */ case 9: return (cznv & FLAGVAL_V) != 0; /* VFLG VS */ case 10: return (cznv & FLAGVAL_N) == 0; /* !NFLG PL */ case 11: return (cznv & FLAGVAL_N) != 0; /* NFLG MI */ #if FLAGBIT_N > FLAGBIT_V case 12: return (((cznv << (FLAGBIT_N - FLAGBIT_V)) ^ cznv) & FLAGVAL_N) == 0; /* NFLG == VFLG GE */ case 13: return (((cznv << (FLAGBIT_N - FLAGBIT_V)) ^ cznv) & FLAGVAL_N) != 0; /* NFLG != VFLG LT */ case 14: cznv &= (FLAGVAL_N | FLAGVAL_Z | FLAGVAL_V); /* !ZFLG && (NFLG == VFLG) GT */ return (((cznv << (FLAGBIT_N - FLAGBIT_V)) ^ cznv) & (FLAGVAL_N | FLAGVAL_Z)) == 0; case 15: cznv &= (FLAGVAL_N | FLAGVAL_Z | FLAGVAL_V); /* ZFLG || (NFLG != VFLG) LE */ return (((cznv << (FLAGBIT_N - FLAGBIT_V)) ^ cznv) & (FLAGVAL_N | FLAGVAL_Z)) != 0; #else case 12: return (((cznv << (FLAGBIT_V - FLAGBIT_N)) ^ cznv) & FLAGVAL_V) == 0; /* NFLG == VFLG GE */ case 13: return (((cznv << (FLAGBIT_V - FLAGBIT_N)) ^ cznv) & FLAGVAL_V) != 0; /* NFLG != VFLG LT */ case 14: cznv &= (FLAGVAL_N | FLAGVAL_Z | FLAGVAL_V); /* !ZFLG && (NFLG == VFLG) GT */ return (((cznv << (FLAGBIT_V - FLAGBIT_N)) ^ cznv) & (FLAGVAL_V | FLAGVAL_Z)) == 0; case 15: cznv &= (FLAGVAL_N | FLAGVAL_Z | FLAGVAL_V); /* ZFLG || (NFLG != VFLG) LE */ return (((cznv << (FLAGBIT_V - FLAGBIT_N)) ^ cznv) & (FLAGVAL_V | FLAGVAL_Z)) != 0; #endif } abort (); return 0; } #define optflag_testl(v) \ __asm__ __volatile__ ("andl %1,%1\n\t" \ "pushf\n\t" \ "pop %0\n\t" \ : "=rm" (regflags.cznv) : "r" (v) : "memory", "cc") #define optflag_testw(v) \ __asm__ __volatile__ ("andw %w1,%w1\n\t" \ "pushf\n\t" \ "pop %0\n\t" \ : "=rm" (regflags.cznv) : "r" (v) : "memory", "cc") #define optflag_testb(v) \ __asm__ __volatile__ ("andb %b1,%b1\n\t" \ "pushf\n\t" \ "pop %0\n\t" \ : "=rm" (regflags.cznv) : "q" (v) : "memory", "cc") #define optflag_addl(v, s, d) do { \ __asm__ __volatile__ ("addl %k2,%k1\n\t" \ "pushf\n\t" \ "pop %0\n\t" \ : "=rm" (regflags.cznv), "=r" (v) : "rmi" (s), "1" (d) : "memory", "cc"); \ COPY_CARRY(); \ } while (0) #define optflag_addw(v, s, d) do { \ __asm__ __volatile__ ("addw %w2,%w1\n\t" \ "pushf\n\t" \ "pop %0\n\t" \ : "=rm" (regflags.cznv), "=r" (v) : "rmi" (s), "1" (d) : "memory", "cc"); \ COPY_CARRY(); \ } while (0) #define optflag_addb(v, s, d) do { \ __asm__ __volatile__ ("addb %b2,%b1\n\t" \ "pushf\n\t" \ "pop %0\n\t" \ : "=r" (regflags.cznv), "=q" (v) : "qmi" (s), "1" (d) : "cc"); \ COPY_CARRY(); \ } while (0) #define optflag_subl(v, s, d) do { \ __asm__ __volatile__ ("subl %k2,%k1\n\t" \ "pushf\n\t" \ "pop %0\n\t" \ : "=rm" (regflags.cznv), "=r" (v) : "rmi" (s), "1" (d) : "memory", "cc"); \ COPY_CARRY(); \ } while (0) #define optflag_subw(v, s, d) do { \ __asm__ __volatile__ ("subw %w2,%w1\n\t" \ "pushf\n\t" \ "pop %0\n\t" \ : "=rm" (regflags.cznv), "=r" (v) : "rmi" (s), "1" (d) : "memory", "cc"); \ COPY_CARRY(); \ } while (0) #define optflag_subb(v, s, d) do { \ __asm__ __volatile__ ("subb %b2,%b1\n\t" \ "pushf\n\t" \ "pop %0\n\t" \ : "=rm" (regflags.cznv), "=q" (v) : "qmi" (s), "1" (d) : "memory", "cc"); \ COPY_CARRY(); \ } while (0) #define optflag_cmpl(s, d) \ __asm__ __volatile__ ("cmpl %k1,%k2\n\t" \ "pushf\n\t" \ "pop %0\n\t" \ : "=rm" (regflags.cznv) : "rmi" (s), "r" (d) : "memory", "cc") #define optflag_cmpw(s, d) \ __asm__ __volatile__ ("cmpw %w1,%w2\n\t" \ "pushf\n\t" \ "pop %0\n\t" \ : "=rm" (regflags.cznv) : "rmi" (s), "r" (d) : "memory", "cc") #define optflag_cmpb(s, d) \ __asm__ __volatile__ ("cmpb %b1,%b2\n\t" \ "pushf\n\t" \ "pop %0\n\t" \ : "=rm" (regflags.cznv) : "qmi" (s), "q" (d) : "memory", "cc") #else /* !SAHF_SETO_PROFITABLE */ /* * Machine dependent structure for holding the 68k CCR flags */ struct flag_struct { uae_u32 cznv; uae_u32 x; }; extern struct flag_struct regflags __asm__ ("regflags"); /* * The bits in the cznv field in the above structure are assigned to * allow the easy mirroring of the x86 condition flags. (For example, * from the AX register - the x86 overflow flag can be copied to AL * with a setto %AL instr and the other flags copied to AH with an * lahf instr). * * The 68k CZNV flags are thus assigned in cznv as: * * <--AL--> <--AH--> * 76543210 FEDCBA98 --------- --------- * xxxxxxxV NZxxxxxC xxxxxxxxx xxxxxxxxx */ #define FLAGBIT_N 15 #define FLAGBIT_Z 14 #define FLAGBIT_C 8 #define FLAGBIT_V 0 #define FLAGBIT_X FLAGBIT_C /* should be in the same position as the x flag */ #define FLAGVAL_N (1 << FLAGBIT_N) #define FLAGVAL_Z (1 << FLAGBIT_Z) #define FLAGVAL_C (1 << FLAGBIT_C) #define FLAGVAL_V (1 << FLAGBIT_V) #define FLAGVAL_X (1 << FLAGBIT_X) #define SET_ZFLG(y) (regflags.cznv = (((uae_u32)regflags.cznv) & ~FLAGVAL_Z) | (((y) & 1) << FLAGBIT_Z)) #define SET_CFLG(y) (regflags.cznv = (((uae_u32)regflags.cznv) & ~FLAGVAL_C) | (((y) & 1) << FLAGBIT_C)) #define SET_VFLG(y) (regflags.cznv = (((uae_u32)regflags.cznv) & ~FLAGVAL_V) | (((y) & 1) << FLAGBIT_V)) #define SET_NFLG(y) (regflags.cznv = (((uae_u32)regflags.cznv) & ~FLAGVAL_N) | (((y) & 1) << FLAGBIT_N)) #define SET_XFLG(y) (regflags.x = ((y) & 1) << FLAGBIT_X) #define GET_ZFLG() ((regflags.cznv >> FLAGBIT_Z) & 1) #define GET_CFLG() ((regflags.cznv >> FLAGBIT_C) & 1) #define GET_VFLG() ((regflags.cznv >> FLAGBIT_V) & 1) #define GET_NFLG() ((regflags.cznv >> FLAGBIT_N) & 1) #define GET_XFLG() ((regflags.x >> FLAGBIT_X) & 1) #define CLEAR_CZNV() (regflags.cznv = 0) #define GET_CZNV() (regflags.cznv) #define IOR_CZNV(X) (regflags.cznv |= (X)) #define SET_CZNV(X) (regflags.cznv = (X)) #define COPY_CARRY() (regflags.x = regflags.cznv >> (FLAGBIT_C - FLAGBIT_X)) /* * Test CCR condition */ static inline int cctrue(int cc) { uae_u32 cznv = regflags.cznv; switch (cc) { case 0: return 1; /* T */ case 1: return 0; /* F */ case 2: return (cznv & (FLAGVAL_C | FLAGVAL_Z)) == 0; /* !CFLG && !ZFLG HI */ case 3: return (cznv & (FLAGVAL_C | FLAGVAL_Z)) != 0; /* CFLG || ZFLG LS */ case 4: return (cznv & FLAGVAL_C) == 0; /* !CFLG CC */ case 5: return (cznv & FLAGVAL_C) != 0; /* CFLG CS */ case 6: return (cznv & FLAGVAL_Z) == 0; /* !ZFLG NE */ case 7: return (cznv & FLAGVAL_Z) != 0; /* ZFLG EQ */ case 8: return (cznv & FLAGVAL_V) == 0; /* !VFLG VC */ case 9: return (cznv & FLAGVAL_V) != 0; /* VFLG VS */ case 10: return (cznv & FLAGVAL_N) == 0; /* !NFLG PL */ case 11: return (cznv & FLAGVAL_N) != 0; /* NFLG MI */ #if FLAGBIT_N > FLAGBIT_V case 12: return (((cznv << (FLAGBIT_N - FLAGBIT_V)) ^ cznv) & FLAGVAL_N) == 0; /* NFLG == VFLG GE */ case 13: return (((cznv << (FLAGBIT_N - FLAGBIT_V)) ^ cznv) & FLAGVAL_N) != 0; /* NFLG != VFLG LT */ case 14: cznv &= (FLAGVAL_N | FLAGVAL_Z | FLAGVAL_V); /* !ZFLG && (NFLG == VFLG) GT */ return (((cznv << (FLAGBIT_N - FLAGBIT_V)) ^ cznv) & (FLAGVAL_N | FLAGVAL_Z)) == 0; case 15: cznv &= (FLAGVAL_N | FLAGVAL_Z | FLAGVAL_V); /* ZFLG || (NFLG != VFLG) LE */ return (((cznv << (FLAGBIT_N - FLAGBIT_V)) ^ cznv) & (FLAGVAL_N | FLAGVAL_Z)) != 0; #else case 12: return (((cznv << (FLAGBIT_V - FLAGBIT_N)) ^ cznv) & FLAGVAL_V) == 0; /* NFLG == VFLG GE */ case 13: return (((cznv << (FLAGBIT_V - FLAGBIT_N)) ^ cznv) & FLAGVAL_V) != 0; /* NFLG != VFLG LT */ case 14: cznv &= (FLAGVAL_N | FLAGVAL_Z | FLAGVAL_V); /* !ZFLG && (NFLG == VFLG) GT */ return (((cznv << (FLAGBIT_V - FLAGBIT_N)) ^ cznv) & (FLAGVAL_V | FLAGVAL_Z)) == 0; case 15: cznv &= (FLAGVAL_N | FLAGVAL_Z | FLAGVAL_V); /* ZFLG || (NFLG != VFLG) LE */ return (((cznv << (FLAGBIT_V - FLAGBIT_N)) ^ cznv) & (FLAGVAL_V | FLAGVAL_Z)) != 0; #endif } abort (); return 0; } /* Manually emit LAHF instruction so that 64-bit assemblers can grok it */ #if defined CPU_x86_64 && defined __GNUC__ #define ASM_LAHF ".byte 0x9f" #else #define ASM_LAHF "lahf" #endif /* Is there any way to do this without declaring *all* memory clobbered? I.e. any way to tell gcc that some byte-sized value is in %al? */ #define optflag_testl(v) \ __asm__ __volatile__ ("andl %0,%0\n\t" \ ASM_LAHF "\n\t" \ "seto %%al\n\t" \ "movb %%al,regflags\n\t" \ "movb %%ah,regflags+1\n\t" \ : : "r" (v) : "%eax","cc","memory") #define optflag_testw(v) \ __asm__ __volatile__ ("andw %w0,%w0\n\t" \ ASM_LAHF "\n\t" \ "seto %%al\n\t" \ "movb %%al,regflags\n\t" \ "movb %%ah,regflags+1\n\t" \ : : "r" (v) : "%eax","cc","memory") #define optflag_testb(v) \ __asm__ __volatile__ ("andb %b0,%b0\n\t" \ ASM_LAHF "\n\t" \ "seto %%al\n\t" \ "movb %%al,regflags\n\t" \ "movb %%ah,regflags+1\n\t" \ : : "q" (v) : "%eax","cc","memory") #define optflag_addl(v, s, d) do { \ __asm__ __volatile__ ("addl %k1,%k0\n\t" \ ASM_LAHF "\n\t" \ "seto %%al\n\t" \ "movb %%al,regflags\n\t" \ "movb %%ah,regflags+1\n\t" \ : "=r" (v) : "rmi" (s), "0" (d) : "%eax","cc","memory"); \ COPY_CARRY(); \ } while (0) #define optflag_addw(v, s, d) do { \ __asm__ __volatile__ ("addw %w1,%w0\n\t" \ ASM_LAHF "\n\t" \ "seto %%al\n\t" \ "movb %%al,regflags\n\t" \ "movb %%ah,regflags+1\n\t" \ : "=r" (v) : "rmi" (s), "0" (d) : "%eax","cc","memory"); \ COPY_CARRY(); \ } while (0) #define optflag_addb(v, s, d) do { \ __asm__ __volatile__ ("addb %b1,%b0\n\t" \ ASM_LAHF "\n\t" \ "seto %%al\n\t" \ "movb %%al,regflags\n\t" \ "movb %%ah,regflags+1\n\t" \ : "=q" (v) : "qmi" (s), "0" (d) : "%eax","cc","memory"); \ COPY_CARRY(); \ } while (0) #define optflag_subl(v, s, d) do { \ __asm__ __volatile__ ("subl %k1,%k0\n\t" \ ASM_LAHF "\n\t" \ "seto %%al\n\t" \ "movb %%al,regflags\n\t" \ "movb %%ah,regflags+1\n\t" \ : "=r" (v) : "rmi" (s), "0" (d) : "%eax","cc","memory"); \ COPY_CARRY(); \ } while (0) #define optflag_subw(v, s, d) do { \ __asm__ __volatile__ ("subw %w1,%w0\n\t" \ ASM_LAHF "\n\t" \ "seto %%al\n\t" \ "movb %%al,regflags\n\t" \ "movb %%ah,regflags+1\n\t" \ : "=r" (v) : "rmi" (s), "0" (d) : "%eax","cc","memory"); \ COPY_CARRY(); \ } while (0) #define optflag_subb(v, s, d) do { \ __asm__ __volatile__ ("subb %b1,%b0\n\t" \ ASM_LAHF "\n\t" \ "seto %%al\n\t" \ "movb %%al,regflags\n\t" \ "movb %%ah,regflags+1\n\t" \ : "=q" (v) : "qmi" (s), "0" (d) : "%eax","cc","memory"); \ COPY_CARRY(); \ } while (0) #define optflag_cmpl(s, d) \ __asm__ __volatile__ ("cmpl %k0,%k1\n\t" \ ASM_LAHF "\n\t" \ "seto %%al\n\t" \ "movb %%al,regflags\n\t" \ "movb %%ah,regflags+1\n\t" \ : : "rmi" (s), "r" (d) : "%eax","cc","memory") #define optflag_cmpw(s, d) \ __asm__ __volatile__ ("cmpw %w0,%w1\n\t" \ ASM_LAHF "\n\t" \ "seto %%al\n\t" \ "movb %%al,regflags\n\t" \ "movb %%ah,regflags+1\n\t" \ : : "rmi" (s), "r" (d) : "%eax","cc","memory") #define optflag_cmpb(s, d) \ __asm__ __volatile__ ("cmpb %b0,%b1\n\t" \ ASM_LAHF "\n\t" \ "seto %%al\n\t" \ "movb %%al,regflags\n\t" \ "movb %%ah,regflags+1\n\t" \ : : "qmi" (s), "q" (d) : "%eax","cc","memory") #endif /* SAHF_SETO_PROFITABLE */ #elif defined(CPU_arm) && defined(ARM_ASSEMBLY) /* * Machine dependent structure for holding the 68k CCR flags */ struct flag_struct { uae_u32 nzcv; uae_u32 x; }; #define FLAGBIT_N 31 #define FLAGBIT_Z 30 #define FLAGBIT_C 29 #define FLAGBIT_V 28 #define FLAGBIT_X FLAGBIT_C /* must be in the same position in as x flag */ #define FLAGVAL_N (1 << FLAGBIT_N) #define FLAGVAL_Z (1 << FLAGBIT_Z) #define FLAGVAL_C (1 << FLAGBIT_C) #define FLAGVAL_V (1 << FLAGBIT_V) #define FLAGVAL_X (1 << FLAGBIT_X) #define SET_NFLG(y) (regflags.nzcv = (regflags.nzcv & ~FLAGVAL_N) | (((y) & 1) << FLAGBIT_N)) #define SET_ZFLG(y) (regflags.nzcv = (regflags.nzcv & ~FLAGVAL_Z) | (((y) & 1) << FLAGBIT_Z)) #define SET_CFLG(y) (regflags.nzcv = (regflags.nzcv & ~FLAGVAL_C) | (((y) & 1) << FLAGBIT_C)) #define SET_VFLG(y) (regflags.nzcv = (regflags.nzcv & ~FLAGVAL_V) | (((y) & 1) << FLAGBIT_V)) #define SET_XFLG(y) (regflags.x = ((y) & 1) << FLAGBIT_X) #define GET_NFLG() ((regflags.nzcv >> FLAGBIT_N) & 1) #define GET_ZFLG() ((regflags.nzcv >> FLAGBIT_Z) & 1) #define GET_CFLG() ((regflags.nzcv >> FLAGBIT_C) & 1) #define GET_VFLG() ((regflags.nzcv >> FLAGBIT_V) & 1) #define GET_XFLG() ((regflags.x >> FLAGBIT_X) & 1) #define CLEAR_CZNV() (regflags.nzcv = 0) #define GET_CZNV() (regflags.nzcv) #define IOR_CZNV(X) (regflags.nzcv |= (X)) #define SET_CZNV(X) (regflags.nzcv = (X)) #define COPY_CARRY() (regflags.x = regflags.nzcv >> (FLAGBIT_C - FLAGBIT_X)) extern struct flag_struct regflags __asm__ ("regflags"); /* * Test CCR condition */ static inline int cctrue(int cc) { unsigned int nzcv = regflags.nzcv; switch(cc){ case 0: return 1; /* T */ case 1: return 0; /* F */ case 2: return (nzcv & (FLAGVAL_C | FLAGVAL_Z)) == 0; /* !GET_CFLG && !GET_ZFLG; HI */ case 3: return (nzcv & (FLAGVAL_C | FLAGVAL_Z)) != 0; /* GET_CFLG || GET_ZFLG; LS */ case 4: return (nzcv & FLAGVAL_C) == 0; /* !GET_CFLG; CC */ case 5: return (nzcv & FLAGVAL_C) != 0; /* GET_CFLG; CS */ case 6: return (nzcv & FLAGVAL_Z) == 0; /* !GET_ZFLG; NE */ case 7: return (nzcv & FLAGVAL_Z) != 0; /* GET_ZFLG; EQ */ case 8: return (nzcv & FLAGVAL_V) == 0; /* !GET_VFLG; VC */ case 9: return (nzcv & FLAGVAL_V) != 0; /* GET_VFLG; VS */ case 10:return (nzcv & FLAGVAL_N) == 0; /* !GET_NFLG; PL */ case 11:return (nzcv & FLAGVAL_N) != 0; /* GET_NFLG; MI */ case 12:return (((nzcv << (FLAGBIT_N - FLAGBIT_V)) ^ nzcv) & FLAGVAL_N) == 0; /* GET_NFLG == GET_VFLG; GE */ case 13:return (((nzcv << (FLAGBIT_N - FLAGBIT_V)) ^ nzcv) & FLAGVAL_N) != 0; /* GET_NFLG != GET_VFLG; LT */ case 14: nzcv &= (FLAGVAL_N | FLAGVAL_Z | FLAGVAL_V); return (((nzcv << (FLAGBIT_N - FLAGBIT_V)) ^ nzcv) & (FLAGVAL_N | FLAGVAL_Z)) == 0; /* !GET_ZFLG && (GET_NFLG == GET_VFLG); GT */ case 15: nzcv &= (FLAGVAL_N | FLAGVAL_Z | FLAGVAL_V); return (((nzcv << (FLAGBIT_N - FLAGBIT_V)) ^ nzcv) & (FLAGVAL_N | FLAGVAL_Z)) != 0; /* GET_ZFLG || (GET_NFLG != GET_VFLG); LE */ } return 0; } #define optflag_testl(v) do {\ __asm__ __volatile__ ("tst %[rv],%[rv]\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "bic %[nzcv],#0x30000000\n\t" \ : [nzcv] "=r" (regflags.nzcv) \ : [rv] "r" (v) \ : "cc"); \ } while(0) #define optflag_addl(v, s, d) do { \ __asm__ __volatile__ ("adds %[rv],%[rd],%[rs]\n\t" \ "mrs %[nzcv],cpsr\n\t" \ : [nzcv] "=r" (regflags.nzcv), [rv] "=r" (v) \ : [rs] "ri" (s), [rd] "1" (d) \ : "cc"); \ COPY_CARRY(); \ } while(0) #define optflag_subl(v, s, d) do { \ __asm__ __volatile__ ("subs %[rv],%[rd],%[rs]\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "eor %[nzcv],#0x20000000\n\t" \ : [nzcv] "=r" (regflags.nzcv), [rv] "=r" (v) \ : [rs] "ri" (s), [rd] "1" (d) \ : "cc"); \ COPY_CARRY(); \ } while(0) #define optflag_cmpl(s, d) do { \ __asm__ __volatile__ ("cmp %[rd],%[rs]\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "eor %[nzcv],#0x20000000\n\t" \ : [nzcv] "=r" (regflags.nzcv) \ : [rs] "ri" (s), [rd] "0" (d) \ : "cc"); \ } while(0) #if defined(ARMV6_ASSEMBLY) // #pragma message "ARM/v6 Assembly optimized flags" #define optflag_testw(v) do { \ __asm__ __volatile__ ("sxth %[rv],%[rv]\n\t" \ "tst %[rv],%[rv]\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "bic %[nzcv],#0x30000000\n\t" \ : [nzcv] "=r" (regflags.nzcv) \ : [rv] "0" (v) \ : "cc"); \ }while(0) #define optflag_testb(v) do {\ __asm__ __volatile__ ("sxtb %[rv],%[rv]\n\t" \ "tst %[rv],%[rv]\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "bic %[nzcv],#0x30000000\n\t" \ : [nzcv] "=r" (regflags.nzcv) \ : [rv] "0" (v) \ : "cc"); \ }while(0) #define optflag_addw(v, s, d) do { \ __asm__ __volatile__ ("sxth %[rd],%[rd]\n\t" \ "sxth %[rs],%[rs]\n\t" \ "adds %[rd],%[rd],%[rs]\n\t" \ "mrs %[nzcv],cpsr\n\t" \ : [nzcv] "=r" (regflags.nzcv), [rv] "=r" (v) \ : [rs] "ri" (s), [rd] "1" (d) \ : "cc"); \ COPY_CARRY(); \ } while(0) #define optflag_addb(v, s, d) do { \ __asm__ __volatile__ ("sxtb %[rd],%[rd]\n\t" \ "sxtb %[rs],%[rs]\n\t" \ "adds %[rd],%[rd],%[rs]\n\t" \ "mrs %[nzcv],cpsr\n\t" \ : [nzcv] "=r" (regflags.nzcv), [rv] "=r" (v) \ : [rs] "ri" (s), [rd] "1" (d) \ : "cc"); \ COPY_CARRY(); \ } while(0) #define optflag_subw(v, s, d) do { \ __asm__ __volatile__ ("sxth %[rd],%[rd]\n\t" \ "sxth %[rs],%[rs]\n\t" \ "subs %[rd],%[rd],%[rs]\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "eor %[nzcv],#0x20000000\n\t" \ : [nzcv] "=r" (regflags.nzcv), [rv] "=r" (v) \ : [rs] "ri" (s), [rd] "1" (d) \ : "cc"); \ COPY_CARRY(); \ } while(0) #define optflag_subb(v, s, d) do { \ __asm__ __volatile__ ("sxtb %[rd],%[rd]\n\t" \ "sxtb %[rs],%[rs]\n\t" \ "subs %[rd],%[rd],%[rs]\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "eor %[nzcv],#0x20000000\n\t" \ : [nzcv] "=r" (regflags.nzcv), [rv] "=r" (v) \ : [rs] "ri" (s), [rd] "1" (d) \ : "cc"); \ COPY_CARRY(); \ } while(0) #define optflag_cmpw(s, d) do { \ __asm__ __volatile__ ("sxth %[rd],%[rd]\n\t" \ "sxth %[rs],%[rs]\n\t" \ "cmp %[rd],%[rs]\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "eor %[nzcv],#0x20000000\n\t" \ : [nzcv] "=r" (regflags.nzcv) \ : [rs] "ri" (s), [rd] "0" (d) \ : "cc"); \ } while(0) #define optflag_cmpb(s, d) do { \ __asm__ __volatile__ ("sxtb %[rd],%[rd]\n\t" \ "sxtb %[rs],%[rs]\n\t" \ "cmp %[rd],%[rs]\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "eor %[nzcv],#0x20000000\n\t" \ : [nzcv] "=r" (regflags.nzcv) \ : [rs] "ri" (s), [rd] "0" (d) \ : "cc"); \ } while(0) #else // #pragma message "ARM/generic Assembly optimized flags" #define optflag_testw(v) do { \ __asm__ __volatile__ ("lsl %[rv],%[rv],#16\n\t" \ "tst %[rv],%[rv]\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "bic %[nzcv],#0x30000000\n\t" \ : [nzcv] "=r" (regflags.nzcv) \ : [rv] "0" (v) \ : "cc"); \ }while(0) #define optflag_testb(v) do {\ __asm__ __volatile__ ("lsl %[rv],%[rv],#24\n\t" \ "tst %[rv],%[rv]\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "bic %[nzcv],#0x30000000\n\t" \ : [nzcv] "=r" (regflags.nzcv) \ : [rv] "0" (v) \ : "cc"); \ }while(0) #define optflag_addw(v, s, d) do { \ __asm__ __volatile__ ("lsl %[rd],%[rd],#16\n\t" \ "adds %[rd],%[rd],%[rs],lsl #16\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "lsr %[rv],%[rd],#16\n\t" \ : [nzcv] "=r" (regflags.nzcv), [rv] "=r" (v) \ : [rs] "ri" (s), [rd] "1" (d) \ : "cc"); \ COPY_CARRY(); \ } while(0) #define optflag_addb(v, s, d) do { \ __asm__ __volatile__ ("lsl %[rd],%[rd],#24\n\t" \ "adds %[rd],%[rd],%[rs],lsl #24\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "lsr %[rv],%[rd],#24\n\t" \ : [nzcv] "=r" (regflags.nzcv), [rv] "=r" (v) \ : [rs] "ri" (s), [rd] "1" (d) \ : "cc"); \ COPY_CARRY(); \ } while(0) #define optflag_subw(v, s, d) do { \ __asm__ __volatile__ ("lsl %[rd],%[rd],#16\n\t" \ "subs %[rd],%[rd],%[rs],lsl #16\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "eor %[nzcv],#0x20000000\n\t" \ "lsr %[rv],%[rd],#16\n\t" \ : [nzcv] "=r" (regflags.nzcv), [rv] "=r" (v) \ : [rs] "ri" (s), [rd] "1" (d) \ : "cc"); \ COPY_CARRY(); \ } while(0) #define optflag_subb(v, s, d) do { \ __asm__ __volatile__ ("lsl %[rd],%[rd],#24\n\t" \ "subs %[rd],%[rd],%[rs],lsl #24\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "eor %[nzcv],#0x20000000\n\t" \ "lsr %[rv],%[rd],#24\n\t" \ : [nzcv] "=r" (regflags.nzcv), [rv] "=r" (v) \ : [rs] "ri" (s), [rd] "1" (d) \ : "cc"); \ COPY_CARRY(); \ } while(0) #define optflag_cmpw(s, d) do { \ __asm__ __volatile__ ("lsl %[rd],%[rd],#16\n\t" \ "cmp %[rd],%[rs],lsl #16\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "eor %[nzcv],#0x20000000\n\t" \ : [nzcv] "=r" (regflags.nzcv) \ : [rs] "ri" (s), [rd] "0" (d) \ : "cc"); \ } while(0) #define optflag_cmpb(s, d) do { \ __asm__ __volatile__ ("lsl %[rd],%[rd],#24\n\t" \ "cmp %[rd],%[rs],lsl #24\n\t" \ "mrs %[nzcv],cpsr\n\t" \ "eor %[nzcv],#0x20000000\n\t" \ : [nzcv] "=r" (regflags.nzcv) \ : [rs] "ri" (s), [rd] "0" (d) \ : "cc"); \ } while(0) #endif #elif defined(CPU_sparc) && (defined(SPARC_V8_ASSEMBLY) || defined(SPARC_V9_ASSEMBLY)) /* * Machine dependent structure for holding the 68k CCR flags */ struct flag_struct { unsigned char nzvc; unsigned char x; }; extern struct flag_struct regflags; #define FLAGBIT_N 3 #define FLAGBIT_Z 2 #define FLAGBIT_V 1 #define FLAGBIT_C 0 #define FLAGBIT_X FLAGBIT_C /* should be in the same position as the x flag */ #define FLAGVAL_N (1 << FLAGBIT_N) #define FLAGVAL_Z (1 << FLAGBIT_Z) #define FLAGVAL_C (1 << FLAGBIT_C) #define FLAGVAL_V (1 << FLAGBIT_V) #define FLAGVAL_X (1 << FLAGBIT_X) #define SET_ZFLG(y) (regflags.nzvc = (regflags.nzvc & ~FLAGVAL_Z) | (((y) & 1) << FLAGBIT_Z)) #define SET_CFLG(y) (regflags.nzvc = (regflags.nzvc & ~FLAGVAL_C) | (((y) & 1) << FLAGBIT_C)) #define SET_VFLG(y) (regflags.nzvc = (regflags.nzvc & ~FLAGVAL_V) | (((y) & 1) << FLAGBIT_V)) #define SET_NFLG(y) (regflags.nzvc = (regflags.nzvc & ~FLAGVAL_V) | (((y) & 1) << FLAGBIT_N)) #define SET_XFLG(y) (regflags.x = ((y) & 1) << FLAGBIT_X) #define GET_ZFLG() ((regflags.nzvc >> FLAGBIT_Z) & 1) #define GET_CFLG() ((regflags.nzvc >> FLAGBIT_C) & 1) #define GET_VFLG() ((regflags.nzvc >> FLAGBIT_V) & 1) #define GET_NFLG() ((regflags.nzvc >> FLAGBIT_N) & 1) #define GET_XFLG() ((regflags.x >> FLAGBIT_X) & 1) #define CLEAR_CZNV() (regflags.nzvc = 0) #define GET_CZNV() (regflags.nzvc) #define IOR_CZNV(X) (regflags.nzvc |= (X)) #define SET_CZNV(X) (regflags.nzvc = (X)) #define COPY_CARRY() (regflags.x = regflags.nzvc >> (FLAGBIT_C - FLAGBIT_X)) /* * Test CCR condition */ static inline int cctrue(int cc) { uae_u32 nzvc = regflags.nzvc; switch (cc) { case 0: return 1; /* T */ case 1: return 0; /* F */ case 2: return (cznv & (FLAGVAL_C | FLAGVAL_Z)) == 0; /* !CFLG && !ZFLG HI */ case 3: return (cznv & (FLAGVAL_C | FLAGVAL_Z)) != 0; /* CFLG || ZFLG LS */ case 4: return (cznv & FLAGVAL_C) == 0; /* !CFLG CC */ case 5: return (cznv & FLAGVAL_C) != 0; /* CFLG CS */ case 6: return (cznv & FLAGVAL_Z) == 0; /* !ZFLG NE */ case 7: return (cznv & FLAGVAL_Z) != 0; /* ZFLG EQ */ case 8: return (cznv & FLAGVAL_V) == 0; /* !VFLG VC */ case 9: return (cznv & FLAGVAL_V) != 0; /* VFLG VS */ case 10: return (cznv & FLAGVAL_N) == 0; /* !NFLG PL */ case 11: return (cznv & FLAGVAL_N) != 0; /* NFLG MI */ case 12: return (((cznv << (FLAGBIT_N - FLAGBIT_V)) ^ cznv) & FLAGVAL_N) == 0; /* NFLG == VFLG GE */ case 13: return (((cznv << (FLAGBIT_N - FLAGBIT_V)) ^ cznv) & FLAGVAL_N) != 0; /* NFLG != VFLG LT */ case 14: cznv &= (FLAGVAL_N | FLAGVAL_Z | FLAGVAL_V); /* ZFLG && (NFLG == VFLG) GT */ return (((cznv << (FLAGBIT_N - FLAGBIT_V)) ^ cznv) & (FLAGVAL_N | FLAGVAL_Z)) == 0; case 15: cznv &= (FLAGVAL_N | FLAGVAL_Z | FLAGVAL_V); /* ZFLG && (NFLG != VFLG) LE */ return (((cznv << (FLAGBIT_N - FLAGBIT_V)) ^ cznv) & (FLAGVAL_N | FLAGVAL_Z)) != 0; } return 0; } #ifdef SPARC_V8_ASSEMBLY static inline uae_u32 sparc_v8_flag_add_8(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " sll %2, 24, %%o0\n" " sll %3, 24, %%o1\n" " addcc %%o0, %%o1, %%o0\n" " addx %%g0, %%g0, %%o1 ! X,C flags\n" " srl %%o0, 24, %0\n" " stb %%o1, [%1 + 1]\n" " bl,a .+8\n" " or %%o1, 0x08, %%o1 ! N flag\n" " bz,a .+8\n" " or %%o1, 0x04, %%o1 ! Z flag\n" " bvs,a .+8\n" " or %%o1, 0x02, %%o1 ! V flag\n" " stb %%o1, [%1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); return value; } static inline uae_u32 sparc_v8_flag_add_16(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " sll %2, 16, %%o0\n" " sll %3, 16, %%o1\n" " addcc %%o0, %%o1, %%o0\n" " addx %%g0, %%g0, %%o1 ! X,C flags\n" " srl %%o0, 16, %0\n" " stb %%o1, [%1 + 1]\n" " bl,a .+8\n" " or %%o1, 0x08, %%o1 ! N flag\n" " bz,a .+8\n" " or %%o1, 0x04, %%o1 ! Z flag\n" " bvs,a .+8\n" " or %%o1, 0x02, %%o1 ! V flag\n" " stb %%o1, [%1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); return value; } static inline uae_u32 sparc_v8_flag_add_32(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " addcc %2, %3, %0\n" " addx %%g0, %%g0, %%o0 ! X,C flags\n" " stb %%o0, [%1 + 1]\n" " bl,a .+8\n" " or %%o0, 0x08, %%o0 ! N flag\n" " bz,a .+8\n" " or %%o0, 0x04, %%o0 ! Z flag\n" " bvs,a .+8\n" " or %%o0, 0x02, %%o0 ! V flag\n" " stb %%o0, [%1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0" ); return value; } static inline uae_u32 sparc_v8_flag_sub_8(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " sll %2, 24, %%o0\n" " sll %3, 24, %%o1\n" " subcc %%o0, %%o1, %%o0\n" " addx %%g0, %%g0, %%o1 ! X,C flags\n" " srl %%o0, 24, %0\n" " stb %%o1, [%1 + 1]\n" " bl,a .+8\n" " or %%o1, 0x08, %%o1 ! N flag\n" " bz,a .+8\n" " or %%o1, 0x04, %%o1 ! Z flag\n" " bvs,a .+8\n" " or %%o1, 0x02, %%o1 ! V flag\n" " stb %%o1, [%1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); return value; } static inline uae_u32 sparc_v8_flag_sub_16(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " sll %2, 16, %%o0\n" " sll %3, 16, %%o1\n" " subcc %%o0, %%o1, %%o0\n" " addx %%g0, %%g0, %%o1 ! X,C flags\n" " srl %%o0, 16, %0\n" " stb %%o1, [%1 + 1]\n" " bl,a .+8\n" " or %%o1, 0x08, %%o1 ! N flag\n" " bz,a .+8\n" " or %%o1, 0x04, %%o1 ! Z flag\n" " bvs,a .+8\n" " or %%o1, 0x02, %%o1 ! V flag\n" " stb %%o1, [%1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); return value; } static inline uae_u32 sparc_v8_flag_sub_32(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " subcc %2, %3, %0\n" " addx %%g0, %%g0, %%o0 ! X,C flags\n" " stb %%o0, [%1 + 1]\n" " bl,a .+8\n" " or %%o0, 0x08, %%o0 ! N flag\n" " bz,a .+8\n" " or %%o0, 0x04, %%o0 ! Z flag\n" " bvs,a .+8\n" " or %%o0, 0x02, %%o0 ! V flag\n" " stb %%o0, [%1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0" ); return value; } static inline void sparc_v8_flag_cmp_8(flag_struct *flags, uae_u32 src, uae_u32 dst) { __asm__ ("\n" " sll %1, 24, %%o0\n" " sll %2, 24, %%o1\n" " subcc %%o0, %%o1, %%g0\n" " addx %%g0, %%g0, %%o0 ! C flag\n" " bl,a .+8\n" " or %%o0, 0x08, %%o0 ! N flag\n" " bz,a .+8\n" " or %%o0, 0x04, %%o0 ! Z flag\n" " bvs,a .+8\n" " or %%o0, 0x02, %%o0 ! V flag\n" " stb %%o0, [%0]\n" : /* no outputs */ : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); } static inline void sparc_v8_flag_cmp_16(flag_struct *flags, uae_u32 src, uae_u32 dst) { __asm__ ("\n" " sll %1, 16, %%o0\n" " sll %2, 16, %%o1\n" " subcc %%o0, %%o1, %%g0\n" " addx %%g0, %%g0, %%o0 ! C flag\n" " bl,a .+8\n" " or %%o0, 0x08, %%o0 ! N flag\n" " bz,a .+8\n" " or %%o0, 0x04, %%o0 ! Z flag\n" " bvs,a .+8\n" " or %%o0, 0x02, %%o0 ! V flag\n" " stb %%o0, [%0]\n" : /* no outputs */ : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); } static inline void sparc_v8_flag_cmp_32(flag_struct *flags, uae_u32 src, uae_u32 dst) { __asm__ ("\n" " subcc %1, %2, %%o1\n" " srl %%o1, 31, %%o0\n" " sll %%o0, 3, %%o0\n" " addx %%o0, %%g0, %%o0\n" " bvs,a .+8\n" " or %%o0, 0x02, %%o0\n" " subcc %%g0, %%o1, %%g0\n" " addx %%g0, 7, %%o1\n" " and %%o1, 0x04, %%o1\n" " or %%o0, %%o1, %%o0\n" " stb %%o0, [%0]\n" : /* no outputs */ : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); } static inline uae_u32 sparc_v8_flag_addx_8(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " ldub [%1 + 1], %%o1 ! Get the X Flag\n" " subcc %%g0, %%o1, %%g0 ! Set the SPARC carry flag, if X set\n" " addxcc %2, %3, %0\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); return value; } #if 0 VERY SLOW... static inline uae_u32 sparc_v8_flag_addx_8(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " sll %2, 24, %%o0\n" " sll %3, 24, %%o1\n" " addcc %%o0, %%o1, %%o0\n" " addx %%g0, %%g0, %%o1 ! X,C flags\n" " bvs,a .+8\n" " or %%o1, 0x02, %%o1 ! V flag\n" " ldub [%1 + 1], %%o2\n" " subcc %%g0, %%o2, %%g0\n" " addx %%g0, %%g0, %%o2\n" " sll %%o2, 24, %%o2\n" " addcc %%o0, %%o2, %%o0\n" " srl %%o0, 24, %0\n" " addx %%g0, %%g0, %%o2\n" " or %%o1, %%o2, %%o1 ! update X,C flags\n" " bl,a .+8\n" " or %%o1, 0x08, %%o1 ! N flag\n" " ldub [%1], %%o0 ! retreive the old NZVC flags (XXX)\n" " bvs,a .+8\n" " or %%o1, 0x02, %%o1 ! update V flag\n" " and %%o0, 0x04, %%o0 ! (XXX) but keep only Z flag\n" " and %%o1, 1, %%o2 ! keep C flag in %%o2\n" " bnz,a .+8\n" " or %%g0, %%g0, %%o0 ! Z flag cleared if non-zero result\n" " stb %%o2, [%1 + 1] ! store the X flag\n" " or %%o1, %%o0, %%o1\n" " stb %%o1, [%1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1", "o2" ); return value; } #endif static inline uae_u32 sparc_v8_flag_addx_32(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " ldub [%1 + 1], %%o0 ! Get the X Flag\n" " subcc %%g0, %%o0, %%g0 ! Set the SPARC carry flag, if X set\n" " addxcc %2, %3, %0\n" " ldub [%1], %%o0 ! retreive the old NZVC flags\n" " and %%o0, 0x04, %%o0 ! but keep only Z flag\n" " addx %%o0, %%g0, %%o0 ! X,C flags\n" " bl,a .+8\n" " or %%o0, 0x08, %%o0 ! N flag\n" " bvs,a .+8\n" " or %%o0, 0x02, %%o0 ! V flag\n" " bnz,a .+8\n" " and %%o0, 0x0B, %%o0 ! Z flag cleared if result is non-zero\n" " stb %%o0, [%1]\n" " stb %%o0, [%1 + 1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0" ); return value; } #endif /* SPARC_V8_ASSEMBLY */ #ifdef SPARC_V9_ASSEMBLY static inline uae_u32 sparc_v9_flag_add_8(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " sll %2, 24, %%o0\n" " sll %3, 24, %%o1\n" " addcc %%o0, %%o1, %%o0\n" " rd %%ccr, %%o1\n" " srl %%o0, 24, %0\n" " stb %%o1, [%1]\n" " stb %%o1, [%1+1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); return value; } static inline uae_u32 sparc_v9_flag_add_16(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " sll %2, 16, %%o0\n" " sll %3, 16, %%o1\n" " addcc %%o0, %%o1, %%o0\n" " rd %%ccr, %%o1\n" " srl %%o0, 16, %0\n" " stb %%o1, [%1]\n" " stb %%o1, [%1+1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); return value; } static inline uae_u32 sparc_v9_flag_add_32(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " addcc %2, %3, %0\n" " rd %%ccr, %%o0\n" " stb %%o0, [%1]\n" " stb %%o0, [%1+1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0" ); return value; } static inline uae_u32 sparc_v9_flag_sub_8(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " sll %2, 24, %%o0\n" " sll %3, 24, %%o1\n" " subcc %%o0, %%o1, %%o0\n" " rd %%ccr, %%o1\n" " srl %%o0, 24, %0\n" " stb %%o1, [%1]\n" " stb %%o1, [%1+1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); return value; } static inline uae_u32 sparc_v9_flag_sub_16(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " sll %2, 16, %%o0\n" " sll %3, 16, %%o1\n" " subcc %%o0, %%o1, %%o0\n" " rd %%ccr, %%o1\n" " srl %%o0, 16, %0\n" " stb %%o1, [%1]\n" " stb %%o1, [%1+1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); return value; } static inline uae_u32 sparc_v9_flag_sub_32(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " subcc %2, %3, %0\n" " rd %%ccr, %%o0\n" " stb %%o0, [%1]\n" " stb %%o0, [%1+1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0" ); return value; } static inline void sparc_v9_flag_cmp_8(flag_struct *flags, uae_u32 src, uae_u32 dst) { __asm__ ("\n" " sll %1, 24, %%o0\n" " sll %2, 24, %%o1\n" " subcc %%o0, %%o1, %%g0\n" " rd %%ccr, %%o0\n" " stb %%o0, [%0]\n" : /* no outputs */ : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); } static inline void sparc_v9_flag_cmp_16(flag_struct *flags, uae_u32 src, uae_u32 dst) { __asm__ ("\n" " sll %1, 16, %%o0\n" " sll %2, 16, %%o1\n" " subcc %%o0, %%o1, %%g0\n" " rd %%ccr, %%o0\n" " stb %%o0, [%0]\n" : /* no outputs */ : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); } static inline void sparc_v9_flag_cmp_32(flag_struct *flags, uae_u32 src, uae_u32 dst) { __asm__ ("\n" " subcc %1, %2, %%g0\n" #if 0 " subcc %1, %2, %%o1\n" " srl %%o1, 31, %%o0\n" " sll %%o0, 3, %%o0\n" " addx %%o0, %%g0, %%o0\n" " bvs,a .+8\n" " or %%o0, 0x02, %%o0\n" " subcc %%g0, %%o1, %%g0\n" " addx %%g0, 7, %%o1\n" " and %%o1, 0x04, %%o1\n" " or %%o0, %%o1, %%o0\n" #endif #if 0 " subcc %1, %2, %%o1\n" " srl %%o1, 31, %%o0\n" " sll %%o0, 3, %%o0\n" " addx %%o0, %%g0, %%o0\n" " bvs,pt,a .+8\n" " or %%o0, 0x02, %%o0\n" " subcc %%g0, %%o1, %%g0\n" " addx %%g0, 7, %%o1\n" " and %%o1, 0x04, %%o1\n" " or %%o0, %%o1, %%o0\n" " stb %%o0, [%0]\n" #endif " rd %%ccr, %%o0\n" " stb %%o0, [%0]\n" : /* no outputs */ : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); } #if 1 static inline void sparc_v9_flag_test_8(flag_struct *flags, uae_u32 val) { __asm__ ("\n" " sll %1, 24, %%o0\n" " subcc %%o0, %%g0, %%g0\n" " rd %%ccr, %%o0\n" " stb %%o0, [%0]\n" : /* no outputs */ : "r" (flags), "r" (val) : "cc", "o0" ); } static inline void sparc_v9_flag_test_16(flag_struct *flags, uae_u32 val) { __asm__ ("\n" " sll %1, 16, %%o0\n" " subcc %%o0, %%g0, %%g0\n" " rd %%ccr, %%o0\n" " stb %%o0, [%0]\n" : /* no outputs */ : "r" (flags), "r" (val) : "cc", "o0" ); } static inline void sparc_v9_flag_test_32(flag_struct *flags, uae_u32 val) { __asm__ ("\n" " subcc %1, %%g0, %%g0\n" " rd %%ccr, %%o0\n" " stb %%o0, [%0]\n" : /* no outputs */ : "r" (flags), "r" (val) : "cc", "o0" ); } #else static inline void sparc_v9_flag_test_8(flag_struct *flags, uae_u32 val) { __asm__ ("\n" " sll %1, 24, %%o0\n" " subcc %%o0, %%g0, %%o1\n" " srl %%o1, 31, %%o0\n" " sll %%o0, 3, %%o0\n" " addx %%o0, %%g0, %%o0\n" " bvs,a .+8\n" " or %%o0, 0x02, %%o0\n" " subcc %%g0, %%o1, %%g0\n" " addx %%g0, 7, %%o1\n" " and %%o1, 0x04, %%o1\n" " or %%o0, %%o1, %%o0\n" " stb %%o0, [%0]\n" : /* no outputs */ : "r" (flags), "r" (val) : "cc", "o0", "o1" ); } static inline void sparc_v9_flag_test_16(flag_struct *flags, uae_u32 val) { __asm__ ("\n" " sll %1, 16, %%o0\n" " subcc %%o0, %%g0, %%o1\n" " srl %%o1, 31, %%o0\n" " sll %%o0, 3, %%o0\n" " addx %%o0, %%g0, %%o0\n" " bvs,a .+8\n" " or %%o0, 0x02, %%o0\n" " subcc %%g0, %%o1, %%g0\n" " addx %%g0, 7, %%o1\n" " and %%o1, 0x04, %%o1\n" " or %%o0, %%o1, %%o0\n" " stb %%o0, [%0]\n" : /* no outputs */ : "r" (flags), "r" (val) : "cc", "o0", "o1" ); } static inline void sparc_v9_flag_test_32(flag_struct *flags, uae_u32 val) { __asm__ ("\n" " subcc %1, %%g0, %%o1\n" " srl %%o1, 31, %%o0\n" " sll %%o0, 3, %%o0\n" " addx %%o0, %%g0, %%o0\n" " bvs,a .+8\n" " or %%o0, 0x02, %%o0\n" " subcc %%g0, %%o1, %%g0\n" " addx %%g0, 7, %%o1\n" " and %%o1, 0x04, %%o1\n" " or %%o0, %%o1, %%o0\n" " stb %%o0, [%0]\n" : /* no outputs */ : "r" (flags), "r" (val) : "cc", "o0", "o1" ); } #endif static inline uae_u32 sparc_v9_flag_addx_8(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " ldub [%1 + 1], %%o1 ! Get the X Flag\n" " subcc %%g0, %%o1, %%g0 ! Set the SPARC carry flag, if X set\n" " addxcc %2, %3, %0\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0", "o1" ); return value; } static inline uae_u32 sparc_v9_flag_addx_32(flag_struct *flags, uae_u32 src, uae_u32 dst) { uae_u32 value; __asm__ ("\n" " ldub [%1 + 1], %%o0 ! Get the X Flag\n" " subcc %%g0, %%o0, %%g0 ! Set the SPARC carry flag, if X set\n" " addxcc %2, %3, %0\n" " ldub [%1], %%o0 ! retreive the old NZVC flags\n" " and %%o0, 0x04, %%o0 ! but keep only Z flag\n" " addx %%o0, %%g0, %%o0 ! X,C flags\n" " bl,a .+8\n" " or %%o0, 0x08, %%o0 ! N flag\n" " bvs,a .+8\n" " or %%o0, 0x02, %%o0 ! V flag\n" " bnz,a .+8\n" " and %%o0, 0x0B, %%o0 ! Z flag cleared if result is non-zero\n" " stb %%o0, [%1]\n" " stb %%o0, [%1 + 1]\n" : "=&r" (value) : "r" (flags), "r" (dst), "r" (src) : "cc", "o0" ); return value; } #endif /* SPARC_V9_ASSEMBLY */ #endif #else /* * Machine independent structure for holding the 68k CCR flags */ struct flag_struct { unsigned int c; unsigned int z; unsigned int n; unsigned int v; unsigned int x; }; extern struct flag_struct regflags; #define ZFLG (regflags.z) #define NFLG (regflags.n) #define CFLG (regflags.c) #define VFLG (regflags.v) #define XFLG (regflags.x) #define SET_CFLG(x) (CFLG = (x)) #define SET_NFLG(x) (NFLG = (x)) #define SET_VFLG(x) (VFLG = (x)) #define SET_ZFLG(x) (ZFLG = (x)) #define SET_XFLG(x) (XFLG = (x)) #define GET_CFLG() CFLG #define GET_NFLG() NFLG #define GET_VFLG() VFLG #define GET_ZFLG() ZFLG #define GET_XFLG() XFLG #define CLEAR_CZNV() do { \ SET_CFLG (0); \ SET_ZFLG (0); \ SET_NFLG (0); \ SET_VFLG (0); \ } while (0) #define COPY_CARRY() (SET_XFLG (GET_CFLG ())) /* * Test CCR condition */ static inline int cctrue(const int cc) { switch(cc){ case 0: return 1; /* T */ case 1: return 0; /* F */ case 2: return !CFLG && !ZFLG; /* HI */ case 3: return CFLG || ZFLG; /* LS */ case 4: return !CFLG; /* CC */ case 5: return CFLG; /* CS */ case 6: return !ZFLG; /* NE */ case 7: return ZFLG; /* EQ */ case 8: return !VFLG; /* VC */ case 9: return VFLG; /* VS */ case 10:return !NFLG; /* PL */ case 11:return NFLG; /* MI */ case 12:return NFLG == VFLG; /* GE */ case 13:return NFLG != VFLG; /* LT */ case 14:return !ZFLG && (NFLG == VFLG); /* GT */ case 15:return ZFLG || (NFLG != VFLG); /* LE */ } return 0; } #endif /* OPTIMIZED_FLAGS */ #endif /* M68K_FLAGS_H */ aranym-1.1.0/src/uae_cpu/gencpu.c0000664000175000017500000030720613454637622015047 0ustar joyjoy/* * gencpu.c - m68k emulation generator * * Copyright (c) 2009 ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * UAE - The Un*x Amiga Emulator * * MC68000 emulation generator * * This is a fairly stupid program that generates a lot of case labels that * can be #included in a switch statement. * As an alternative, it can generate functions that handle specific * MC68000 instructions, plus a prototype header file and a function pointer * array to look up the function for an opcode. * Error checking is bad, an illegal table68k file will cause the program to * call abort(). * The generated code is sometimes sub-optimal, an optimizing compiler should * take care of this. * * Copyright 1995, 1996 Bernd Schmidt */ #define CC_FOR_BUILD 1 #include "sysdeps.h" #include "readcpu.h" #include #include #include #include #include #undef abort #define BOOL_TYPE "int" #define VERIFY_MMU_GENAMODE 0 static FILE *headerfile; static FILE *stblfile; static FILE *functblfile; static int using_prefetch; static int using_exception_3; static int cpu_level; /* For the current opcode, the next lower level that will have different code. * Initialized to -1 for each opcode. If it remains unchanged, indicates we * are done with that opcode. */ static int next_cpu_level; static int *opcode_map; static int *opcode_next_clev; static int *opcode_last_postfix; static unsigned long *counts; #define GENA_GETV_NO_FETCH 0 #define GENA_GETV_FETCH 1 #define GENA_GETV_FETCH_ALIGN 2 #define GENA_MOVEM_DO_INC 0 #define GENA_MOVEM_NO_INC 1 #define GENA_MOVEM_MOVE16 2 #define XLATE_LOG 0 #define XLATE_PHYS 1 #define XLATE_SFC 2 #define XLATE_DFC 3 static char * mem_prefix[4] = { "", "phys_", "sfc_", "dfc_" }; /* Define the minimal 680x0 where NV flags are not affected by xBCD instructions. */ #define xBCD_KEEPS_N_FLAG 4 #define xBCD_KEEPS_V_FLAG 3 static void read_counts (void) { FILE *file; unsigned long opcode, count, total; char name[20]; int nr = 0; memset (counts, 0, 65536 * sizeof *counts); file = fopen ("frequent.68k", "r"); if (file) { int c = fscanf (file, "Total: %lu\n", &total); assert(c == 1); while (fscanf (file, "%lx: %lu %s\n", &opcode, &count, name) == 3) { opcode_next_clev[nr] = 4; opcode_last_postfix[nr] = -1; opcode_map[nr++] = opcode; counts[opcode] = count; } fclose (file); } if (nr == nr_cpuop_funcs) return; for (opcode = 0; opcode < 0x10000; opcode++) { if (table68k[opcode].handler == -1 && table68k[opcode].mnemo != i_ILLG && counts[opcode] == 0) { opcode_next_clev[nr] = 4; opcode_last_postfix[nr] = -1; opcode_map[nr++] = opcode; counts[opcode] = count; } } if (nr != nr_cpuop_funcs) abort (); } static char endlabelstr[80]; static int endlabelno = 0; static int need_endlabel; static int n_braces = 0; static int m68k_pc_offset = 0; static void start_brace (void) { n_braces++; printf ("{"); } static void close_brace (void) { assert (n_braces > 0); n_braces--; printf ("}"); } static void finish_braces (void) { while (n_braces > 0) close_brace (); } static void pop_braces (int to) { while (n_braces > to) close_brace (); } static int bit_size (int size) { switch (size) { case sz_byte: return 8; case sz_word: return 16; case sz_long: return 32; default: abort (); } return 0; } static const char *bit_mask (int size) { switch (size) { case sz_byte: return "0xff"; case sz_word: return "0xffff"; case sz_long: return "0xffffffff"; default: abort (); } return 0; } static const char *gen_nextilong (void) { static char buffer[80]; int r = m68k_pc_offset; m68k_pc_offset += 4; if (using_prefetch) sprintf (buffer, "get_ilong_prefetch(%d)", r); else sprintf (buffer, "get_ilong(%d)", r); return buffer; } static const char *gen_nextiword (void) { static char buffer[80]; int r = m68k_pc_offset; m68k_pc_offset += 2; if (using_prefetch) sprintf (buffer, "get_iword_prefetch(%d)", r); else sprintf (buffer, "get_iword(%d)", r); return buffer; } static const char *gen_nextibyte (void) { static char buffer[80]; int r = m68k_pc_offset; m68k_pc_offset += 2; if (using_prefetch) sprintf (buffer, "get_ibyte_prefetch(%d)", r); else sprintf (buffer, "get_ibyte(%d)", r); return buffer; } static void fill_prefetch_0 (void) { if (using_prefetch) printf ("fill_prefetch_0 ();\n"); } static void fill_prefetch_2 (void) { if (using_prefetch) printf ("fill_prefetch_2 ();\n"); } static void swap_opcode (void) { printf("#if defined(HAVE_GET_WORD_UNSWAPPED) && !defined(FULLMMU)\n"); printf ("\topcode = do_byteswap_16(opcode);\n"); printf("#endif\n"); } static void real_opcode (int *have) { if (!*have) { printf("#if defined(HAVE_GET_WORD_UNSWAPPED) && !defined(FULLMMU)\n"); printf ("\tuae_u32 real_opcode = do_byteswap_16(opcode);\n"); printf("#else\n"); printf ("\tuae_u32 real_opcode = opcode;\n"); printf("#endif\n"); *have = 1; } } static void sync_m68k_pc (void) { if (m68k_pc_offset == 0) return; printf ("m68k_incpc(%d);\n", m68k_pc_offset); switch (m68k_pc_offset) { case 0: /*fprintf (stderr, "refilling prefetch at 0\n"); */ break; case 2: fill_prefetch_2 (); break; default: fill_prefetch_0 (); break; } m68k_pc_offset = 0; } static void gen_set_fault_pc (void) { sync_m68k_pc(); printf ("regs.fault_pc = m68k_getpc ();\n"); m68k_pc_offset = 0; } /* getv == 1: fetch data; getv != 0: check for odd address. If movem != 0, * the calling routine handles Apdi and Aipi modes. * gb-- movem == 2 means the same thing but for a MOVE16 instruction */ /* fixup indicates if we want to fix up adress registers in pre decrement * or post increment mode now (0) or later (1). A value of 2 will then be * used to do the actual fix up. This allows to do all memory readings * before any register is modified, and so to rerun operation without * side effect in case a bus fault is generated by any memory access. * XJ - 2006/11/13 */ static void genamode2 (amodes mode, char *reg, wordsizes size, char *name, int getv, int movem, int xlateflag, int fixup) { if (fixup != 2) { start_brace (); switch (mode) { case Dreg: if (movem) abort (); if (getv == GENA_GETV_FETCH) switch (size) { case sz_byte: printf("\n#if defined(AMIGA) && !defined(WARPUP)\n"); /* sam: I don't know why gcc.2.7.2.1 produces a code worse */ /* if it is not done like that: */ printf ("\tuae_s8 %s = ((uae_u8*)&m68k_dreg(regs, %s))[3];\n", name, reg); printf("#else\n"); printf ("\tuae_s8 %s = m68k_dreg(regs, %s);\n", name, reg); printf("#endif\n"); break; case sz_word: printf("\n#if defined(AMIGA) && !defined(WARPUP)\n"); printf ("\tuae_s16 %s = ((uae_s16*)&m68k_dreg(regs, %s))[1];\n", name, reg); printf("#else\n"); printf ("\tuae_s16 %s = m68k_dreg(regs, %s);\n", name, reg); printf("#endif\n"); break; case sz_long: printf ("\tuae_s32 %s = m68k_dreg(regs, %s);\n", name, reg); break; default: abort (); } return; case Areg: if (movem) abort (); if (getv == GENA_GETV_FETCH) switch (size) { case sz_word: printf ("\tuae_s16 %s = m68k_areg(regs, %s);\n", name, reg); break; case sz_long: printf ("\tuae_s32 %s = m68k_areg(regs, %s);\n", name, reg); break; default: abort (); } return; case Aind: printf ("\tuaecptr %sa = m68k_areg(regs, %s);\n", name, reg); break; case Aipi: printf ("\tuaecptr %sa = m68k_areg(regs, %s);\n", name, reg); break; case Apdi: switch (size) { case sz_byte: if (movem) printf ("\tuaecptr %sa = m68k_areg(regs, %s);\n", name, reg); else printf ("\tuaecptr %sa = m68k_areg(regs, %s) - areg_byteinc[%s];\n", name, reg, reg); break; case sz_word: if (movem) printf ("\tuaecptr %sa = m68k_areg(regs, %s);\n", name, reg); else printf ("\tuaecptr %sa = m68k_areg(regs, %s) - 2;\n", name, reg); break; case sz_long: if (movem) printf ("\tuaecptr %sa = m68k_areg(regs, %s);\n", name, reg); else printf ("\tuaecptr %sa = m68k_areg(regs, %s) - 4;\n", name, reg); break; default: abort (); } break; case Ad16: printf ("\tuaecptr %sa = m68k_areg(regs, %s) + (uae_s32)(uae_s16)%s;\n", name, reg, gen_nextiword ()); break; case Ad8r: if (cpu_level > 1) { if (next_cpu_level < 1) next_cpu_level = 1; sync_m68k_pc (); start_brace (); printf ("\tuaecptr %sa = get_disp_ea_020(m68k_areg(regs, %s), next_iword());\n", name, reg); } else printf ("\tuaecptr %sa = get_disp_ea_000(m68k_areg(regs, %s), %s);\n", name, reg, gen_nextiword ()); break; case PC16: printf ("\tuaecptr %sa = m68k_getpc () + %d;\n", name, m68k_pc_offset); printf ("\t%sa += (uae_s32)(uae_s16)%s;\n", name, gen_nextiword ()); break; case PC8r: if (cpu_level > 1) { if (next_cpu_level < 1) next_cpu_level = 1; sync_m68k_pc (); start_brace (); printf ("\tuaecptr tmppc = m68k_getpc();\n"); printf ("\tuaecptr %sa = get_disp_ea_020(tmppc, next_iword());\n", name); } else { printf ("\tuaecptr tmppc = m68k_getpc() + %d;\n", m68k_pc_offset); printf ("\tuaecptr %sa = get_disp_ea_000(tmppc, %s);\n", name, gen_nextiword ()); } break; case absw: printf ("\tuaecptr %sa = (uae_s32)(uae_s16)%s;\n", name, gen_nextiword ()); break; case absl: printf ("\tuaecptr %sa = %s;\n", name, gen_nextilong ()); break; case imm: if (getv != GENA_GETV_FETCH) abort (); switch (size) { case sz_byte: printf ("\tuae_s8 %s = %s;\n", name, gen_nextibyte ()); break; case sz_word: printf ("\tuae_s16 %s = %s;\n", name, gen_nextiword ()); break; case sz_long: printf ("\tuae_s32 %s = %s;\n", name, gen_nextilong ()); break; default: abort (); } return; case imm0: if (getv != GENA_GETV_FETCH) abort (); printf ("\tuae_s8 %s = %s;\n", name, gen_nextibyte ()); return; case imm1: if (getv != GENA_GETV_FETCH) abort (); printf ("\tuae_s16 %s = %s;\n", name, gen_nextiword ()); return; case imm2: if (getv != GENA_GETV_FETCH) abort (); printf ("\tuae_s32 %s = %s;\n", name, gen_nextilong ()); return; case immi: if (getv != GENA_GETV_FETCH) abort (); printf ("\tuae_u32 %s = %s;\n", name, reg); return; default: abort (); } /* We get here for all non-reg non-immediate addressing modes to * actually fetch the value. */ if (using_exception_3 && getv != GENA_GETV_NO_FETCH && size != sz_byte) { printf ("\tif ((%sa & 1) != 0) {\n", name); printf ("\t\tlast_fault_for_exception_3 = %sa;\n", name); printf ("\t\tlast_op_for_exception_3 = opcode;\n"); printf ("\t\tlast_addr_for_exception_3 = m68k_getpc() + %d;\n", m68k_pc_offset); printf ("\t\tException(3, 0);\n"); printf ("\t\tgoto %s;\n", endlabelstr); printf ("\t}\n"); need_endlabel = 1; start_brace (); } if (getv == GENA_GETV_FETCH) { switch (size) { case sz_byte: break; case sz_word: break; case sz_long: break; default: abort (); } start_brace (); printf("\n#ifdef FULLMMU\n"); switch (size) { case sz_byte: printf ("\tuae_s8 %s = %sget_byte(%sa);\n", name, mem_prefix[xlateflag], name); break; case sz_word: printf ("\tuae_s16 %s = %sget_word(%sa);\n", name, mem_prefix[xlateflag], name); break; case sz_long: printf ("\tuae_s32 %s = %sget_long(%sa);\n", name, mem_prefix[xlateflag], name); break; default: abort (); } printf("#else\n"); switch (size) { case sz_byte: printf ("\tuae_s8 %s = phys_get_byte(%sa);\n", name, name); break; case sz_word: printf ("\tuae_s16 %s = phys_get_word(%sa);\n", name, name); break; case sz_long: printf ("\tuae_s32 %s = phys_get_long(%sa);\n", name, name); break; default: abort (); } printf("#endif\n"); } /* We now might have to fix up the register for pre-dec or post-inc * addressing modes. */ if (!movem) switch (mode) { case Aipi: if (fixup == 1) { printf ("\tfixup.flag = 1;\n"); printf ("\tfixup.reg = %s;\n", reg); printf ("\tfixup.value = m68k_areg(regs, %s);\n", reg); } switch (size) { case sz_byte: printf ("\tm68k_areg(regs, %s) += areg_byteinc[%s];\n", reg, reg); break; case sz_word: printf ("\tm68k_areg(regs, %s) += 2;\n", reg); break; case sz_long: printf ("\tm68k_areg(regs, %s) += 4;\n", reg); break; default: abort (); } break; case Apdi: if (fixup == 1) { printf ("\tfixup.flag = 1;\n"); printf ("\tfixup.reg = %s;\n", reg); printf ("\tfixup.value = m68k_areg(regs, %s);\n", reg); } printf ("\tm68k_areg (regs, %s) = %sa;\n", reg, name); break; default: break; } } else /* (fixup != 2) */ { if (!movem) switch (mode) { case Aipi: case Apdi: printf ("\tfixup.flag = 0;\n"); break; default: break; } } } static void genamode (amodes mode, char *reg, wordsizes size, char *name, int getv, int movem, int xlateflag) { genamode2 (mode, reg, size, name, getv, movem, xlateflag, 0); } static void genastore (char *from, amodes mode, char *reg, wordsizes size, char *to, int xlateflag) { switch (mode) { case Dreg: switch (size) { case sz_byte: printf ("\tm68k_dreg(regs, %s) = (m68k_dreg(regs, %s) & ~0xff) | ((%s) & 0xff);\n", reg, reg, from); break; case sz_word: printf ("\tm68k_dreg(regs, %s) = (m68k_dreg(regs, %s) & ~0xffff) | ((%s) & 0xffff);\n", reg, reg, from); break; case sz_long: printf ("\tm68k_dreg(regs, %s) = (%s);\n", reg, from); break; default: abort (); } break; case Areg: switch (size) { case sz_word: fprintf (stderr, "Foo\n"); printf ("\tm68k_areg(regs, %s) = (uae_s32)(uae_s16)(%s);\n", reg, from); break; case sz_long: printf ("\tm68k_areg(regs, %s) = (%s);\n", reg, from); break; default: abort (); } break; case Aind: case Aipi: case Apdi: case Ad16: case Ad8r: case absw: case absl: case PC16: case PC8r: gen_set_fault_pc (); printf("#ifdef FULLMMU\n"); switch (size) { case sz_byte: printf ("\t%sput_byte(%sa,%s);\n", mem_prefix[xlateflag], to, from); printf("#else\n"); printf ("\tput_byte(%sa,%s);\n", to, from); break; case sz_word: if (cpu_level < 2 && (mode == PC16 || mode == PC8r)) abort (); printf ("\t%sput_word(%sa,%s);\n", mem_prefix[xlateflag], to, from); printf("#else\n"); printf ("\tput_word(%sa,%s);\n", to, from); break; case sz_long: if (cpu_level < 2 && (mode == PC16 || mode == PC8r)) abort (); printf ("\t%sput_long(%sa,%s);\n", mem_prefix[xlateflag], to, from); printf("#else\n"); printf ("\tput_long(%sa,%s);\n", to, from); break; default: abort (); } printf("#endif\n"); break; case imm: case imm0: case imm1: case imm2: case immi: abort (); break; default: abort (); } } static void genmovemel (uae_u16 opcode) { char getcode1[100]; char getcode2[100]; int size = table68k[opcode].size == sz_long ? 4 : 2; if (table68k[opcode].size == sz_long) { strcpy (getcode1, ""); strcpy (getcode2, "get_long(srca)"); } else { strcpy (getcode1, "(uae_s32)(uae_s16)"); strcpy (getcode2, "get_word(srca)"); } printf ("\tuae_u16 mask = %s;\n", gen_nextiword ()); printf ("\tunsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;\n"); genamode (table68k[opcode].dmode, "dstreg", table68k[opcode].size, "src", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_NO_INC, XLATE_LOG); start_brace (); printf("\n#ifdef FULLMMU\n"); printf ("\twhile (dmask) { m68k_dreg(regs, movem_index1[dmask]) = %s%s; srca += %d; dmask = movem_next[dmask]; }\n", getcode1, getcode2, size); printf ("\twhile (amask) { m68k_areg(regs, movem_index1[amask]) = %s%s; srca += %d; amask = movem_next[amask]; }\n", getcode1, getcode2, size); printf("#else\n"); printf ("\twhile (dmask) { m68k_dreg(regs, movem_index1[dmask]) = %sphys_%s; srca += %d; dmask = movem_next[dmask]; }\n", getcode1, getcode2, size); printf ("\twhile (amask) { m68k_areg(regs, movem_index1[amask]) = %sphys_%s; srca += %d; amask = movem_next[amask]; }\n", getcode1, getcode2, size); printf("#endif\n"); if (table68k[opcode].dmode == Aipi) printf ("\tm68k_areg(regs, dstreg) = srca;\n"); } static void genmovemle (uae_u16 opcode) { char putcode[100]; int size = table68k[opcode].size == sz_long ? 4 : 2; if (table68k[opcode].size == sz_long) { strcpy (putcode, "put_long(srca,"); } else { strcpy (putcode, "put_word(srca,"); } printf ("\tuae_u16 mask = %s;\n", gen_nextiword ()); genamode (table68k[opcode].dmode, "dstreg", table68k[opcode].size, "src", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_NO_INC, XLATE_LOG); sync_m68k_pc (); start_brace (); if (table68k[opcode].dmode == Apdi) { printf ("\tuae_u16 amask = mask & 0xff, dmask = (mask >> 8) & 0xff;\n"); printf("#ifdef FULLMMU\n"); printf ("\twhile (amask) { srca -= %d; %s m68k_areg(regs, movem_index2[amask])); amask = movem_next[amask]; }\n", size, putcode); printf ("\twhile (dmask) { srca -= %d; %s m68k_dreg(regs, movem_index2[dmask])); dmask = movem_next[dmask]; }\n", size, putcode); printf("#else\n"); printf ("\twhile (amask) { srca -= %d; phys_%s m68k_areg(regs, movem_index2[amask])); amask = movem_next[amask]; }\n", size, putcode); printf ("\twhile (dmask) { srca -= %d; phys_%s m68k_dreg(regs, movem_index2[dmask])); dmask = movem_next[dmask]; }\n", size, putcode); printf("#endif\n"); printf ("\tm68k_areg(regs, dstreg) = srca;\n"); } else { printf ("\tuae_u16 dmask = mask & 0xff, amask = (mask >> 8) & 0xff;\n"); printf("#ifdef FULLMMU\n"); printf ("\twhile (dmask) { %s m68k_dreg(regs, movem_index1[dmask])); srca += %d; dmask = movem_next[dmask]; }\n", putcode, size); printf ("\twhile (amask) { %s m68k_areg(regs, movem_index1[amask])); srca += %d; amask = movem_next[amask]; }\n", putcode, size); printf("#else\n"); printf ("\twhile (dmask) { phys_%s m68k_dreg(regs, movem_index1[dmask])); srca += %d; dmask = movem_next[dmask]; }\n", putcode, size); printf ("\twhile (amask) { phys_%s m68k_areg(regs, movem_index1[amask])); srca += %d; amask = movem_next[amask]; }\n", putcode, size); printf("#endif\n"); } } static void duplicate_carry (void) { printf ("\tCOPY_CARRY();\n"); } typedef enum { flag_logical_noclobber, flag_logical, flag_add, flag_sub, flag_cmp, flag_addx, flag_subx, flag_z, flag_zn, flag_av, flag_sv } flagtypes; static void genflags_normal (flagtypes type, wordsizes size, char *value, char *src, char *dst) { char vstr[100], sstr[100], dstr[100]; char usstr[100], udstr[100]; char unsstr[100], undstr[100]; switch (size) { case sz_byte: strcpy (vstr, "((uae_s8)("); strcpy (usstr, "((uae_u8)("); break; case sz_word: strcpy (vstr, "((uae_s16)("); strcpy (usstr, "((uae_u16)("); break; case sz_long: strcpy (vstr, "((uae_s32)("); strcpy (usstr, "((uae_u32)("); break; default: abort (); } strcpy (unsstr, usstr); strcpy (sstr, vstr); strcpy (dstr, vstr); strcat (vstr, value); strcat (vstr, "))"); strcat (dstr, dst); strcat (dstr, "))"); strcat (sstr, src); strcat (sstr, "))"); strcpy (udstr, usstr); strcat (udstr, dst); strcat (udstr, "))"); strcat (usstr, src); strcat (usstr, "))"); strcpy (undstr, unsstr); strcat (unsstr, "-"); strcat (undstr, "~"); strcat (undstr, dst); strcat (undstr, "))"); strcat (unsstr, src); strcat (unsstr, "))"); switch (type) { case flag_logical_noclobber: case flag_logical: case flag_z: case flag_zn: case flag_av: case flag_sv: case flag_addx: case flag_subx: break; case flag_add: printf ("uae_u32 %s = %s + %s;\n", value, dstr, sstr); break; case flag_sub: case flag_cmp: printf ("uae_u32 %s = %s - %s;\n", value, dstr, sstr); break; } switch (type) { case flag_logical_noclobber: case flag_logical: case flag_z: case flag_zn: break; case flag_add: case flag_sub: case flag_addx: case flag_subx: case flag_cmp: case flag_av: case flag_sv: printf ("\t" BOOL_TYPE " flgs = %s < 0;\n", sstr); printf ("\t" BOOL_TYPE " flgo = %s < 0;\n", dstr); printf ("\t" BOOL_TYPE " flgn = %s < 0;\n", vstr); break; } switch (type) { case flag_logical: printf ("\tCLEAR_CZNV();\n"); printf ("\tSET_ZFLG (%s == 0);\n", vstr); printf ("\tSET_NFLG (%s < 0);\n", vstr); break; case flag_logical_noclobber: printf ("\tSET_ZFLG (%s == 0);\n", vstr); printf ("\tSET_NFLG (%s < 0);\n", vstr); break; case flag_av: printf ("\tSET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));\n"); break; case flag_sv: printf ("\tSET_VFLG ((flgs ^ flgo) & (flgn ^ flgo));\n"); break; case flag_z: printf ("\tSET_ZFLG (GET_ZFLG () & (%s == 0));\n", vstr); break; case flag_zn: printf ("\tSET_ZFLG (GET_ZFLG () & (%s == 0));\n", vstr); printf ("\tSET_NFLG (%s < 0);\n", vstr); break; case flag_add: printf ("\tSET_ZFLG (%s == 0);\n", vstr); printf ("\tSET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));\n"); printf ("\tSET_CFLG (%s < %s);\n", undstr, usstr); duplicate_carry (); printf ("\tSET_NFLG (flgn != 0);\n"); break; case flag_sub: printf ("\tSET_ZFLG (%s == 0);\n", vstr); printf ("\tSET_VFLG ((flgs ^ flgo) & (flgn ^ flgo));\n"); printf ("\tSET_CFLG (%s > %s);\n", usstr, udstr); duplicate_carry (); printf ("\tSET_NFLG (flgn != 0);\n"); break; case flag_addx: printf ("\tSET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));\n"); /* minterm SON: 0x42 */ printf ("\tSET_CFLG (flgs ^ ((flgs ^ flgo) & (flgo ^ flgn)));\n"); /* minterm SON: 0xD4 */ duplicate_carry (); break; case flag_subx: printf ("\tSET_VFLG ((flgs ^ flgo) & (flgo ^ flgn));\n"); /* minterm SON: 0x24 */ printf ("\tSET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn)));\n"); /* minterm SON: 0xB2 */ duplicate_carry (); break; case flag_cmp: printf ("\tSET_ZFLG (%s == 0);\n", vstr); printf ("\tSET_VFLG ((flgs != flgo) && (flgn != flgo));\n"); printf ("\tSET_CFLG (%s > %s);\n", usstr, udstr); printf ("\tSET_NFLG (flgn != 0);\n"); break; } } static void genflags (flagtypes type, wordsizes size, char *value, char *src, char *dst) { /* Temporarily deleted 68k/ARM flag optimizations. I'd prefer to have them in the appropriate m68k.h files and use just one copy of this code here. The API can be changed if necessary. */ int done = 0; start_brace (); printf("\n#ifdef OPTIMIZED_FLAGS\n"); switch (type) { case flag_add: case flag_sub: printf ("\tuae_u32 %s;\n", value); break; default: break; } /* At least some of those casts are fairly important! */ switch (type) { case flag_logical_noclobber: printf ("\t{uae_u32 oldcznv = GET_CZNV() & ~(FLAGVAL_Z | FLAGVAL_N);\n"); if (strcmp (value, "0") == 0) { printf ("\tSET_CZNV (olcznv | FLAGVAL_Z);\n"); } else { switch (size) { case sz_byte: printf ("\toptflag_testb ((uae_s8)(%s));\n", value); break; case sz_word: printf ("\toptflag_testw ((uae_s16)(%s));\n", value); break; case sz_long: printf ("\toptflag_testl ((uae_s32)(%s));\n", value); break; } printf ("\tIOR_CZNV (oldcznv);\n"); } printf ("\t}\n"); done = 1; break; case flag_logical: if (strcmp (value, "0") == 0) { printf ("\tSET_CZNV (FLAGVAL_Z);\n"); } else { switch (size) { case sz_byte: printf ("\toptflag_testb ((uae_s8)(%s));\n", value); break; case sz_word: printf ("\toptflag_testw ((uae_s16)(%s));\n", value); break; case sz_long: printf ("\toptflag_testl ((uae_s32)(%s));\n", value); break; } } done = 1; break; case flag_add: switch (size) { case sz_byte: printf ("\toptflag_addb (%s, (uae_s8)(%s), (uae_s8)(%s));\n", value, src, dst); break; case sz_word: printf ("\toptflag_addw (%s, (uae_s16)(%s), (uae_s16)(%s));\n", value, src, dst); break; case sz_long: printf ("\toptflag_addl (%s, (uae_s32)(%s), (uae_s32)(%s));\n", value, src, dst); break; } done = 1; break; case flag_sub: switch (size) { case sz_byte: printf ("\toptflag_subb (%s, (uae_s8)(%s), (uae_s8)(%s));\n", value, src, dst); break; case sz_word: printf ("\toptflag_subw (%s, (uae_s16)(%s), (uae_s16)(%s));\n", value, src, dst); break; case sz_long: printf ("\toptflag_subl (%s, (uae_s32)(%s), (uae_s32)(%s));\n", value, src, dst); break; } done = 1; break; case flag_cmp: switch (size) { case sz_byte: printf ("\toptflag_cmpb ((uae_s8)(%s), (uae_s8)(%s));\n", src, dst); break; case sz_word: printf ("\toptflag_cmpw ((uae_s16)(%s), (uae_s16)(%s));\n", src, dst); break; case sz_long: printf ("\toptflag_cmpl ((uae_s32)(%s), (uae_s32)(%s));\n", src, dst); break; } done = 1; break; default: break; } if (done) printf("#else\n"); else printf("#endif\n"); genflags_normal (type, size, value, src, dst); if (done) printf("#endif\n"); } static void force_range_for_rox (const char *var, wordsizes size) { /* Could do a modulo operation here... which one is faster? */ switch (size) { case sz_long: printf ("\tif (%s >= 33) %s -= 33;\n", var, var); break; case sz_word: printf ("\tif (%s >= 34) %s -= 34;\n", var, var); printf ("\tif (%s >= 17) %s -= 17;\n", var, var); break; case sz_byte: printf ("\tif (%s >= 36) %s -= 36;\n", var, var); printf ("\tif (%s >= 18) %s -= 18;\n", var, var); printf ("\tif (%s >= 9) %s -= 9;\n", var, var); break; } } static const char *cmask (wordsizes size) { switch (size) { case sz_byte: return "0x80"; case sz_word: return "0x8000"; case sz_long: return "0x80000000"; default: abort (); return NULL; } } static int source_is_imm1_8 (struct instr *i) { return i->stype == 3; } static void gen_opcode (unsigned long int opcode) { struct instr *curi = table68k + opcode; start_brace (); #if 0 printf ("uae_u8 *m68k_pc = m68k_getpc();\n"); #endif m68k_pc_offset = 2; switch (curi->plev) { case 0: /* not privileged */ break; case 1: /* unprivileged only on 68000 */ if (cpu_level == 0) break; if (next_cpu_level < 0) next_cpu_level = 0; /* fall through */ case 2: /* priviledged */ printf ("if (!regs.s) { Exception(8,0); goto %s; }\n", endlabelstr); need_endlabel = 1; start_brace (); break; case 3: /* privileged if size == word */ if (curi->size == sz_byte) break; printf ("if (!regs.s) { Exception(8,0); goto %s; }\n", endlabelstr); need_endlabel = 1; start_brace (); break; } switch (curi->mnemo) { case i_OR: case i_AND: case i_EOR: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); printf ("\tsrc %c= dst;\n", curi->mnemo == i_OR ? '|' : curi->mnemo == i_AND ? '&' : '^'); genflags (flag_logical, curi->size, "src", "", ""); genastore ("src", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); break; case i_ORSR: case i_EORSR: printf ("\tMakeSR();\n"); genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); if (curi->size == sz_byte) { printf ("\tsrc &= 0xFF;\n"); } printf ("\tregs.sr %c= src;\n", curi->mnemo == i_EORSR ? '^' : '|'); printf ("\tMakeFromSR();\n"); break; case i_ANDSR: printf ("\tMakeSR();\n"); genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); if (curi->size == sz_byte) { printf ("\tsrc |= 0xFF00;\n"); } printf ("\tregs.sr &= src;\n"); printf ("\tMakeFromSR();\n"); break; case i_SUB: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); genflags (flag_sub, curi->size, "newv", "src", "dst"); genastore ("newv", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); break; case i_SUBA: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", sz_long, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); printf ("\tuae_u32 newv = dst - src;\n"); genastore ("newv", curi->dmode, "dstreg", sz_long, "dst", XLATE_LOG); break; case i_SUBX: genamode2 (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG, 1); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode2 (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG, 2); start_brace (); printf ("\tuae_u32 newv = dst - src - (GET_XFLG () ? 1 : 0);\n"); genflags (flag_subx, curi->size, "newv", "src", "dst"); genflags (flag_zn, curi->size, "newv", "", ""); genastore ("newv", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); break; case i_SBCD: genamode2 (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG, 1); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode2 (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG, 2); start_brace (); printf ("\tuae_u16 newv_lo = (dst & 0xF) - (src & 0xF) - (GET_XFLG () ? 1 : 0);\n"); printf ("\tuae_u16 newv_hi = (dst & 0xF0) - (src & 0xF0);\n"); printf ("\tuae_u16 newv, tmp_newv;\n"); printf ("\tint bcd = 0;\n"); printf ("\tnewv = tmp_newv = newv_hi + newv_lo;\n"); printf ("\tif (newv_lo & 0xF0) { newv -= 6; bcd = 6; };\n"); printf ("\tif ((((dst & 0xFF) - (src & 0xFF) - (GET_XFLG () ? 1 : 0)) & 0x100) > 0xFF) { newv -= 0x60; }\n"); printf ("\tSET_CFLG ((((dst & 0xFF) - (src & 0xFF) - bcd - (GET_XFLG () ? 1 : 0)) & 0x300) > 0xFF);\n"); duplicate_carry (); /* Manual says bits NV are undefined though a real 68030 doesn't change V and 68040/060 don't change both */ if (cpu_level >= xBCD_KEEPS_N_FLAG) { if (next_cpu_level < xBCD_KEEPS_N_FLAG) next_cpu_level = xBCD_KEEPS_N_FLAG - 1; genflags (flag_z, curi->size, "newv", "", ""); } else { genflags (flag_zn, curi->size, "newv", "", ""); } if (cpu_level >= xBCD_KEEPS_V_FLAG) { if (next_cpu_level < xBCD_KEEPS_V_FLAG) next_cpu_level = xBCD_KEEPS_V_FLAG - 1; } else { printf ("\tSET_VFLG ((tmp_newv & 0x80) != 0 && (newv & 0x80) == 0);\n"); } genastore ("newv", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); break; case i_ADD: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); genflags (flag_add, curi->size, "newv", "src", "dst"); genastore ("newv", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); break; case i_ADDA: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", sz_long, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); printf ("\tuae_u32 newv = dst + src;\n"); genastore ("newv", curi->dmode, "dstreg", sz_long, "dst", XLATE_LOG); break; case i_ADDX: genamode2 (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG, 1); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode2 (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG, 2); start_brace (); printf ("\tuae_u32 newv = dst + src + (GET_XFLG () ? 1 : 0);\n"); genflags (flag_addx, curi->size, "newv", "src", "dst"); genflags (flag_zn, curi->size, "newv", "", ""); genastore ("newv", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); break; case i_ABCD: genamode2 (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG, 1); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode2 (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG, 2); start_brace (); printf ("\tuae_u16 newv_lo = (src & 0xF) + (dst & 0xF) + (GET_XFLG () ? 1 : 0);\n"); printf ("\tuae_u16 newv_hi = (src & 0xF0) + (dst & 0xF0);\n"); printf ("\tuae_u16 newv, tmp_newv;\n"); printf ("\tint cflg;\n"); printf ("\tnewv = tmp_newv = newv_hi + newv_lo;\n"); printf ("\tif (newv_lo > 9) { newv += 6; }\n"); printf ("\tcflg = (newv & 0x3F0) > 0x90;\n"); printf ("\tif (cflg) newv += 0x60;\n"); printf ("\tSET_CFLG (cflg);\n"); duplicate_carry (); /* Manual says bits NV are undefined though a real 68030 doesn't change V and 68040/060 don't change both */ if (cpu_level >= xBCD_KEEPS_N_FLAG) { if (next_cpu_level < xBCD_KEEPS_N_FLAG) next_cpu_level = xBCD_KEEPS_N_FLAG - 1; genflags (flag_z, curi->size, "newv", "", ""); } else { genflags (flag_zn, curi->size, "newv", "", ""); } if (cpu_level >= xBCD_KEEPS_V_FLAG) { if (next_cpu_level < xBCD_KEEPS_V_FLAG) next_cpu_level = xBCD_KEEPS_V_FLAG - 1; } else { printf ("\tSET_VFLG ((tmp_newv & 0x80) == 0 && (newv & 0x80) != 0);\n"); } genastore ("newv", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); break; case i_NEG: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); genflags (flag_sub, curi->size, "dst", "src", "0"); genastore ("dst", curi->smode, "srcreg", curi->size, "src", XLATE_LOG); break; case i_NEGX: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); printf ("\tuae_u32 newv = 0 - src - (GET_XFLG () ? 1 : 0);\n"); genflags (flag_subx, curi->size, "newv", "src", "0"); genflags (flag_zn, curi->size, "newv", "", ""); genastore ("newv", curi->smode, "srcreg", curi->size, "src", XLATE_LOG); break; case i_NBCD: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); printf ("\tuae_u16 newv_lo = - (src & 0xF) - (GET_XFLG () ? 1 : 0);\n"); printf ("\tuae_u16 newv_hi = - (src & 0xF0);\n"); printf ("\tuae_u16 newv;\n"); printf ("\tint cflg, tmp_newv;\n"); printf ("\ttmp_newv = newv_hi + newv_lo;\n"); printf ("\tif (newv_lo > 9) { newv_lo -= 6; }\n"); printf ("\tnewv = newv_hi + newv_lo;\n"); printf ("\tcflg = (newv & 0x1F0) > 0x90;\n"); printf ("\tif (cflg) newv -= 0x60;\n"); printf ("\tSET_CFLG (cflg);\n"); duplicate_carry(); /* Manual says bits NV are undefined though a real 68030 doesn't change V and 68040/060 don't change both */ if (cpu_level >= xBCD_KEEPS_N_FLAG) { if (next_cpu_level < xBCD_KEEPS_N_FLAG) next_cpu_level = xBCD_KEEPS_N_FLAG - 1; genflags (flag_z, curi->size, "newv", "", ""); } else { genflags (flag_zn, curi->size, "newv", "", ""); } if (cpu_level >= xBCD_KEEPS_V_FLAG) { if (next_cpu_level < xBCD_KEEPS_V_FLAG) next_cpu_level = xBCD_KEEPS_V_FLAG - 1; } else { printf ("\tSET_VFLG ((tmp_newv & 0x80) != 0 && (newv & 0x80) == 0);\n"); } genastore ("newv", curi->smode, "srcreg", curi->size, "src", XLATE_LOG); break; case i_CLR: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_DO_INC, XLATE_LOG); genflags (flag_logical, curi->size, "0", "", ""); genastore ("0", curi->smode, "srcreg", curi->size, "src", XLATE_LOG); break; case i_NOT: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); printf ("\tuae_u32 dst = ~src;\n"); genflags (flag_logical, curi->size, "dst", "", ""); genastore ("dst", curi->smode, "srcreg", curi->size, "src", XLATE_LOG); break; case i_TST: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genflags (flag_logical, curi->size, "src", "", ""); break; case i_BTST: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); if (curi->size == sz_byte) printf ("\tsrc &= 7;\n"); else printf ("\tsrc &= 31;\n"); printf ("\tSET_ZFLG (1 ^ ((dst >> src) & 1));\n"); break; case i_BCHG: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); if (curi->size == sz_byte) printf ("\tsrc &= 7;\n"); else printf ("\tsrc &= 31;\n"); printf ("\tdst ^= (1 << src);\n"); printf ("\tSET_ZFLG (((uae_u32)dst & (1 << src)) >> src);\n"); genastore ("dst", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); break; case i_BCLR: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); if (curi->size == sz_byte) printf ("\tsrc &= 7;\n"); else printf ("\tsrc &= 31;\n"); printf ("\tSET_ZFLG (1 ^ ((dst >> src) & 1));\n"); printf ("\tdst &= ~(1 << src);\n"); genastore ("dst", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); break; case i_BSET: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); if (curi->size == sz_byte) printf ("\tsrc &= 7;\n"); else printf ("\tsrc &= 31;\n"); printf ("\tSET_ZFLG (1 ^ ((dst >> src) & 1));\n"); printf ("\tdst |= (1 << src);\n"); genastore ("dst", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); break; case i_CMPM: case i_CMP: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); genflags (flag_cmp, curi->size, "newv", "src", "dst"); break; case i_CMPA: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", sz_long, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); genflags (flag_cmp, sz_long, "newv", "src", "dst"); break; /* The next two are coded a little unconventional, but they are doing * weird things... */ case i_MVPRM: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); printf ("\tuaecptr memp = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)%s;\n", gen_nextiword ()); if (curi->size == sz_word) { printf ("\tput_byte(memp, src >> 8); put_byte(memp + 2, src);\n"); } else { printf ("\tput_byte(memp, src >> 24); put_byte(memp + 2, src >> 16);\n"); printf ("\tput_byte(memp + 4, src >> 8); put_byte(memp + 6, src);\n"); } break; case i_MVPMR: printf ("\tuaecptr memp = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)%s;\n", gen_nextiword ()); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_DO_INC, XLATE_LOG); if (curi->size == sz_word) { printf ("\tuae_u16 val = get_byte(memp) << 8;\n"); printf ("\t val |= get_byte(memp + 2);\n"); } else { printf ("\tuae_u32 val = get_byte(memp) << 24;\n"); printf ("\t val |= get_byte(memp + 2) << 16;\n"); printf ("\t val |= get_byte(memp + 4) << 8;\n"); printf ("\t val |= get_byte(memp + 6);\n"); } genastore ("val", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); break; case i_MOVE: genamode2 (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG, 1); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_DO_INC, XLATE_LOG); genamode2 (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG, 2); genflags (flag_logical, curi->size, "src", "", ""); genastore ("src", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); break; case i_MOVEA: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_DO_INC, XLATE_LOG); if (curi->size == sz_word) { printf ("\tuae_u32 val = (uae_s32)(uae_s16)src;\n"); } else { printf ("\tuae_u32 val = src;\n"); } genastore ("val", curi->dmode, "dstreg", sz_long, "dst", XLATE_LOG); break; case i_MVSR2: genamode (curi->smode, "srcreg", sz_word, "src", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_DO_INC, XLATE_LOG); printf ("\tMakeSR();\n"); if (curi->size == sz_byte) genastore ("regs.sr & 0xff", curi->smode, "srcreg", sz_word, "src", XLATE_LOG); else genastore ("regs.sr", curi->smode, "srcreg", sz_word, "src", XLATE_LOG); break; case i_MV2SR: genamode (curi->smode, "srcreg", sz_word, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); if (curi->size == sz_byte) printf ("\tMakeSR();\n\tregs.sr &= 0xFF00;\n\tregs.sr |= src & 0xFF;\n"); else { printf ("\tregs.sr = src;\n"); } printf ("\tMakeFromSR();\n"); break; case i_SWAP: genamode (curi->smode, "srcreg", sz_long, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); printf ("\tuae_u32 dst = ((src >> 16)&0xFFFF) | ((src&0xFFFF)<<16);\n"); genflags (flag_logical, sz_long, "dst", "", ""); genastore ("dst", curi->smode, "srcreg", sz_long, "src", XLATE_LOG); break; case i_EXG: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genastore ("dst", curi->smode, "srcreg", curi->size, "src", XLATE_LOG); genastore ("src", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); break; case i_EXT: genamode (curi->smode, "srcreg", sz_long, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 dst = (uae_s32)(uae_s8)src;\n"); break; case sz_word: printf ("\tuae_u16 dst = (uae_s16)(uae_s8)src;\n"); break; case sz_long: printf ("\tuae_u32 dst = (uae_s32)(uae_s16)src;\n"); break; default: abort (); } genflags (flag_logical, curi->size == sz_word ? sz_word : sz_long, "dst", "", ""); genastore ("dst", curi->smode, "srcreg", curi->size == sz_word ? sz_word : sz_long, "src", XLATE_LOG); break; case i_MVMEL: genmovemel (opcode); break; case i_MVMLE: genmovemle (opcode); break; case i_TRAP: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); gen_set_fault_pc (); printf ("\tException(src+32,0);\n"); break; case i_MVR2USP: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); printf ("\tregs.usp = src;\n"); break; case i_MVUSP2R: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_DO_INC, XLATE_LOG); genastore ("regs.usp", curi->smode, "srcreg", curi->size, "src", XLATE_LOG); break; case i_RESET: printf ("\tAtariReset();\n"); break; case i_NOP: break; case i_STOP: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); /* * STOP undocumented features: * if SR is not set: * 68000 (68010?): Update SR, increase PC and then cause privilege violation exception (handled in newcpu) * 68000 (68010?): Traced STOP also runs 4 cycles faster. * 68020 68030: STOP works normally * 68040 68060: Immediate privilege violation exception */ printf ("\tuae_u16 sr = src;\n"); if (cpu_level >= 4) { printf("\tif (!(sr & 0x2000)) {\n"); printf ("m68k_incpc(%d);\n", m68k_pc_offset); printf("\t\tException(8,0); goto %s;\n", endlabelstr); printf("\t}\n"); } printf("\tregs.sr = sr;\n"); printf ("\tMakeFromSR();\n"); printf ("\tm68k_setstopped(1);\n"); sync_m68k_pc (); /* STOP does not prefetch anything */ /* did_prefetch = -1; */ break; case i_RTE: if (cpu_level == 0) { genamode (Aipi, "7", sz_word, "sr", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (Aipi, "7", sz_long, "pc", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); printf ("\tregs.sr = sr; m68k_setpc_rte(pc);\n"); fill_prefetch_0 (); printf ("\tMakeFromSR();\n"); } else { int old_brace_level = n_braces; if (next_cpu_level < 0) next_cpu_level = 0; printf ("\tuae_u16 newsr; uae_u32 newpc; for (;;) {\n"); genamode (Aipi, "7", sz_word, "sr", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (Aipi, "7", sz_long, "pc", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (Aipi, "7", sz_word, "format", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); printf ("\tnewsr = sr; newpc = pc;\n"); printf ("\tif ((format & 0xF000) == 0x0000) { break; }\n"); printf ("\telse if ((format & 0xF000) == 0x1000) { ; }\n"); printf ("\telse if ((format & 0xF000) == 0x2000) { m68k_areg(regs, 7) += 4; break; }\n"); // printf ("\telse if ((format & 0xF000) == 0x3000) { m68k_areg(regs, 7) += 4; break; }\n"); printf ("\telse if ((format & 0xF000) == 0x7000) { m68k_areg(regs, 7) += 52; break; }\n"); printf ("\telse if ((format & 0xF000) == 0x8000) { m68k_areg(regs, 7) += 50; break; }\n"); printf ("\telse if ((format & 0xF000) == 0x9000) { m68k_areg(regs, 7) += 12; break; }\n"); printf ("\telse if ((format & 0xF000) == 0xa000) { m68k_areg(regs, 7) += 24; break; }\n"); printf ("\telse if ((format & 0xF000) == 0xb000) { m68k_areg(regs, 7) += 84; break; }\n"); printf ("\telse { Exception(14,0); goto %s; }\n", endlabelstr); printf ("\tregs.sr = newsr; MakeFromSR();\n}\n"); pop_braces (old_brace_level); printf ("\tregs.sr = newsr; MakeFromSR();\n"); printf ("\tm68k_setpc_rte(newpc);\n"); fill_prefetch_0 (); need_endlabel = 1; } /* PC is set and prefetch filled. */ m68k_pc_offset = 0; break; case i_RTD: genamode (curi->smode, "srcreg", curi->size, "offs", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (Aipi, "7", sz_long, "pc", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); printf ("\tm68k_areg(regs, 7) += offs;\n"); printf ("\tm68k_setpc_rte(pc);\n"); fill_prefetch_0 (); /* PC is set and prefetch filled. */ m68k_pc_offset = 0; break; case i_LINK: genamode (curi->dmode, "dstreg", curi->size, "offs", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (Apdi, "7", sz_long, "old", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->smode, "srcreg", sz_long, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genastore ("m68k_areg(regs, 7)", curi->smode, "srcreg", sz_long, "src", XLATE_LOG); printf ("\tm68k_areg(regs, 7) += offs;\n"); genastore ("src", Apdi, "7", sz_long, "old", XLATE_LOG); break; case i_UNLK: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); printf ("\tm68k_areg(regs, 7) = src;\n"); genamode (Aipi, "7", sz_long, "old", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genastore ("old", curi->smode, "srcreg", curi->size, "src", XLATE_LOG); break; case i_RTS: printf ("\tm68k_do_rts();\n"); fill_prefetch_0 (); m68k_pc_offset = 0; break; case i_TRAPV: printf ("\tuaecptr oldpc = m68k_getpc();\n"); sync_m68k_pc (); printf ("\tif (GET_VFLG ()) { Exception(7,oldpc); goto %s; }\n", endlabelstr); need_endlabel = 1; break; case i_RTR: printf ("\tMakeSR();\n"); genamode2 (Aipi, "7", sz_word, "sr", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG, 1); genamode (Aipi, "7", sz_long, "pc", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode2 (Aipi, "7", sz_word, "sr", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG, 2); printf ("\tregs.sr &= 0xFF00; sr &= 0xFF;\n"); printf ("\tregs.sr |= sr; m68k_setpc(pc);\n"); fill_prefetch_0 (); printf ("\tMakeFromSR();\n"); m68k_pc_offset = 0; break; case i_JSR: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_NO_FETCH, GENA_MOVEM_DO_INC, XLATE_PHYS); printf ("\tm68k_do_jsr(m68k_getpc() + %d, srca);\n", m68k_pc_offset); fill_prefetch_0 (); m68k_pc_offset = 0; break; case i_JMP: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_NO_FETCH, GENA_MOVEM_DO_INC, XLATE_PHYS); printf ("\tm68k_setpc(srca);\n"); fill_prefetch_0 (); m68k_pc_offset = 0; break; case i_BSR: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_PHYS); printf ("\tuae_s32 s = (uae_s32)src + 2;\n"); if (using_exception_3) { printf ("\tif (src & 1) {\n"); printf ("\tlast_addr_for_exception_3 = m68k_getpc() + 2;\n"); printf ("\t\tlast_fault_for_exception_3 = m68k_getpc() + s;\n"); printf ("\t\tlast_op_for_exception_3 = opcode; Exception(3,0); goto %s;\n", endlabelstr); printf ("\t}\n"); need_endlabel = 1; } printf ("\tm68k_do_bsr(m68k_getpc() + %d, s);\n", m68k_pc_offset); fill_prefetch_0 (); m68k_pc_offset = 0; break; case i_Bcc: if (curi->size == sz_long) { if (cpu_level < 2) { printf ("\tm68k_incpc(2);\n"); printf ("\tif (!cctrue(%d)) goto %s;\n", curi->cc, endlabelstr); printf ("\t\tlast_addr_for_exception_3 = m68k_getpc() + 2;\n"); printf ("\t\tlast_fault_for_exception_3 = m68k_getpc() + 1;\n"); printf ("\t\tlast_op_for_exception_3 = opcode; Exception(3,0); goto %s;\n", endlabelstr); need_endlabel = 1; } else { if (next_cpu_level < 1) next_cpu_level = 1; } } genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_PHYS); printf ("\tif (!cctrue(%d)) goto didnt_jump_%lx;\n", curi->cc, opcode); if (using_exception_3) { printf ("\tif (src & 1) {\n"); printf ("\t\tlast_addr_for_exception_3 = m68k_getpc() + 2;\n"); printf ("\t\tlast_fault_for_exception_3 = m68k_getpc() + 2 + (uae_s32)src;\n"); printf ("\t\tlast_op_for_exception_3 = opcode; Exception(3,0); goto %s;\n", endlabelstr); printf ("\t}\n"); need_endlabel = 1; } printf ("\tm68k_incpc ((uae_s32)src + 2);\n"); fill_prefetch_0 (); printf ("return;\n"); printf ("didnt_jump_%lx:;\n", opcode); need_endlabel = 1; break; case i_LEA: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_NO_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_DO_INC, XLATE_LOG); genastore ("srca", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); break; case i_PEA: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_NO_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (Apdi, "7", sz_long, "dst", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_DO_INC, XLATE_LOG); genastore ("srca", Apdi, "7", sz_long, "dst", XLATE_LOG); break; case i_DBcc: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "offs", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); printf ("\tif (!cctrue(%d)) {\n", curi->cc); genastore ("(src-1)", curi->smode, "srcreg", curi->size, "src", XLATE_LOG); printf ("\t\tif (src) {\n"); if (using_exception_3) { printf ("\t\t\tif (offs & 1) {\n"); printf ("\t\t\tlast_addr_for_exception_3 = m68k_getpc() + 2;\n"); printf ("\t\t\tlast_fault_for_exception_3 = m68k_getpc() + 2 + (uae_s32)offs + 2;\n"); printf ("\t\t\tlast_op_for_exception_3 = opcode; Exception(3,0); goto %s;\n", endlabelstr); printf ("\t\t}\n"); need_endlabel = 1; } printf ("\t\t\tm68k_incpc((uae_s32)offs + 2);\n"); fill_prefetch_0 (); printf ("return;\n"); printf ("\t\t}\n"); printf ("\t}\n"); need_endlabel = 1; break; case i_Scc: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); printf ("\tint val = cctrue(%d) ? 0xff : 0;\n", curi->cc); genastore ("val", curi->smode, "srcreg", curi->size, "src", XLATE_LOG); break; case i_DIVU: printf ("\tuaecptr oldpc = m68k_getpc();\n"); genamode (curi->smode, "srcreg", sz_word, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", sz_long, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); sync_m68k_pc (); /* Clear V flag when dividing by zero - Alcatraz Odyssey demo depends * on this (actually, it's doing a DIVS). */ printf ("\tif (src == 0) { SET_VFLG (0); Exception (5, oldpc); goto %s; } else {\n", endlabelstr); printf ("\tuae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;\n"); printf ("\tuae_u32 rem = (uae_u32)dst %% (uae_u32)(uae_u16)src;\n"); /* The N flag appears to be set each time there is an overflow. * Weird. */ printf ("\tif (newv > 0xffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else\n\t{\n"); genflags (flag_logical, sz_word, "newv", "", ""); printf ("\tnewv = (newv & 0xffff) | ((uae_u32)rem << 16);\n"); genastore ("newv", curi->dmode, "dstreg", sz_long, "dst", XLATE_LOG); printf ("\t}\n"); printf ("\t}\n"); need_endlabel = 1; break; case i_DIVS: printf ("\tuaecptr oldpc = m68k_getpc();\n"); genamode (curi->smode, "srcreg", sz_word, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", sz_long, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); sync_m68k_pc (); printf ("\tif (src == 0) { SET_VFLG (0); Exception(5,oldpc); goto %s; } else {\n", endlabelstr); printf ("\tuae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src;\n"); printf ("\tuae_u16 rem = (uae_s32)dst %% (uae_s32)(uae_s16)src;\n"); printf ("\tif ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else\n\t{\n"); printf ("\tif (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem;\n"); genflags (flag_logical, sz_word, "newv", "", ""); printf ("\tnewv = (newv & 0xffff) | ((uae_u32)rem << 16);\n"); genastore ("newv", curi->dmode, "dstreg", sz_long, "dst", XLATE_LOG); printf ("\t}\n"); printf ("\t}\n"); need_endlabel = 1; break; case i_MULU: genamode (curi->smode, "srcreg", sz_word, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", sz_word, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); printf ("\tuae_u32 newv = (uae_u32)(uae_u16)dst * (uae_u32)(uae_u16)src;\n"); genflags (flag_logical, sz_long, "newv", "", ""); genastore ("newv", curi->dmode, "dstreg", sz_long, "dst", XLATE_LOG); break; case i_MULS: genamode (curi->smode, "srcreg", sz_word, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", sz_word, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); printf ("\tuae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src;\n"); genflags (flag_logical, sz_long, "newv", "", ""); genastore ("newv", curi->dmode, "dstreg", sz_long, "dst", XLATE_LOG); break; case i_CHK: printf ("\tuaecptr oldpc = m68k_getpc();\n"); genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); printf ("\tif ((uae_s32)dst < 0) { SET_NFLG (1); Exception(6,oldpc); goto %s; }\n", endlabelstr); printf ("\telse if (dst > src) { SET_NFLG (0); Exception(6,oldpc); goto %s; }\n", endlabelstr); need_endlabel = 1; break; case i_CHK2: printf ("\tuaecptr oldpc = m68k_getpc();\n"); genamode (curi->smode, "srcreg", curi->size, "extra", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_DO_INC, XLATE_LOG); printf ("\t{uae_s32 upper,lower,reg = regs.regs[(extra >> 12) & 15];\n"); switch (curi->size) { case sz_byte: printf ("\tlower=(uae_s32)(uae_s8)get_byte(dsta); upper = (uae_s32)(uae_s8)get_byte(dsta+1);\n"); printf ("\tif ((extra & 0x8000) == 0) reg = (uae_s32)(uae_s8)reg;\n"); break; case sz_word: printf ("\tlower=(uae_s32)(uae_s16)get_word(dsta); upper = (uae_s32)(uae_s16)get_word(dsta+2);\n"); printf ("\tif ((extra & 0x8000) == 0) reg = (uae_s32)(uae_s16)reg;\n"); break; case sz_long: printf ("\tlower=get_long(dsta); upper = get_long(dsta+4);\n"); break; default: abort (); } printf ("\tSET_ZFLG (upper == reg || lower == reg);\n"); printf ("\tSET_CFLG_ALWAYS (lower <= upper ? reg < lower || reg > upper : reg > upper || reg < lower);\n"); printf ("\tif ((extra & 0x800) && GET_CFLG ()) { Exception(6,oldpc); goto %s; }\n}\n", endlabelstr); need_endlabel = 1; break; case i_ASR: genamode (curi->smode, "srcreg", curi->size, "cnt", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 sign = (%s & val) >> %d;\n", cmask (curi->size), bit_size (curi->size) - 1); printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV();\n"); printf ("\tif (cnt >= %d) {\n", bit_size (curi->size)); printf ("\t\tval = %s & (uae_u32)-sign;\n", bit_mask (curi->size)); printf ("\t\tSET_CFLG (sign);\n"); duplicate_carry (); if (source_is_imm1_8 (curi)) printf ("\t} else {\n"); else printf ("\t} else if (cnt > 0) {\n"); printf ("\t\tval >>= cnt - 1;\n"); printf ("\t\tSET_CFLG (val & 1);\n"); duplicate_carry (); printf ("\t\tval >>= 1;\n"); printf ("\t\tval |= (%s << (%d - cnt)) & (uae_u32)-sign;\n", bit_mask (curi->size), bit_size (curi->size)); printf ("\t\tval &= %s;\n", bit_mask (curi->size)); printf ("\t}\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data", XLATE_LOG); break; case i_ASL: genamode (curi->smode, "srcreg", curi->size, "cnt", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV();\n"); printf ("\tif (cnt >= %d) {\n", bit_size (curi->size)); printf ("\t\tSET_VFLG (val != 0);\n"); printf ("\t\tSET_CFLG (cnt == %d ? val & 1 : 0);\n", bit_size (curi->size)); duplicate_carry (); printf ("\t\tval = 0;\n"); if (source_is_imm1_8 (curi)) printf ("\t} else {\n"); else printf ("\t} else if (cnt > 0) {\n"); printf ("\t\tuae_u32 mask = (%s << (%d - cnt)) & %s;\n", bit_mask (curi->size), bit_size (curi->size) - 1, bit_mask (curi->size)); printf ("\t\tSET_VFLG ((val & mask) != mask && (val & mask) != 0);\n"); printf ("\t\tval <<= cnt - 1;\n"); printf ("\t\tSET_CFLG ((val & %s) >> %d);\n", cmask (curi->size), bit_size (curi->size) - 1); duplicate_carry (); printf ("\t\tval <<= 1;\n"); printf ("\t\tval &= %s;\n", bit_mask (curi->size)); printf ("\t}\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data", XLATE_LOG); break; case i_LSR: genamode (curi->smode, "srcreg", curi->size, "cnt", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV();\n"); printf ("\tif (cnt >= %d) {\n", bit_size (curi->size)); printf ("\t\tSET_CFLG ((cnt == %d) & (val >> %d));\n", bit_size (curi->size), bit_size (curi->size) - 1); duplicate_carry (); printf ("\t\tval = 0;\n"); if (source_is_imm1_8 (curi)) printf ("\t} else {\n"); else printf ("\t} else if (cnt > 0) {\n"); printf ("\t\tval >>= cnt - 1;\n"); printf ("\t\tSET_CFLG (val & 1);\n"); duplicate_carry (); printf ("\t\tval >>= 1;\n"); printf ("\t}\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data", XLATE_LOG); break; case i_LSL: genamode (curi->smode, "srcreg", curi->size, "cnt", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV();\n"); printf ("\tif (cnt >= %d) {\n", bit_size (curi->size)); printf ("\t\tSET_CFLG (cnt == %d ? val & 1 : 0);\n", bit_size (curi->size)); duplicate_carry (); printf ("\t\tval = 0;\n"); if (source_is_imm1_8 (curi)) printf ("\t} else {\n"); else printf ("\t} else if (cnt > 0) {\n"); printf ("\t\tval <<= (cnt - 1);\n"); printf ("\t\tSET_CFLG ((val & %s) >> %d);\n", cmask (curi->size), bit_size (curi->size) - 1); duplicate_carry (); printf ("\t\tval <<= 1;\n"); printf ("\tval &= %s;\n", bit_mask (curi->size)); printf ("\t}\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data", XLATE_LOG); break; case i_ROL: genamode (curi->smode, "srcreg", curi->size, "cnt", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV();\n"); if (source_is_imm1_8 (curi)) printf ("{"); else printf ("\tif (cnt > 0) {\n"); printf ("\tuae_u32 loval;\n"); printf ("\tcnt &= %d;\n", bit_size (curi->size) - 1); printf ("\tloval = val >> (%d - cnt);\n", bit_size (curi->size)); printf ("\tval <<= cnt;\n"); printf ("\tval |= loval;\n"); printf ("\tval &= %s;\n", bit_mask (curi->size)); printf ("\tSET_CFLG (val & 1);\n"); printf ("}\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data", XLATE_LOG); break; case i_ROR: genamode (curi->smode, "srcreg", curi->size, "cnt", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV();\n"); if (source_is_imm1_8 (curi)) printf ("{"); else printf ("\tif (cnt > 0) {"); printf ("\tuae_u32 hival;\n"); printf ("\tcnt &= %d;\n", bit_size (curi->size) - 1); printf ("\thival = val << (%d - cnt);\n", bit_size (curi->size)); printf ("\tval >>= cnt;\n"); printf ("\tval |= hival;\n"); printf ("\tval &= %s;\n", bit_mask (curi->size)); printf ("\tSET_CFLG ((val & %s) >> %d);\n", cmask (curi->size), bit_size (curi->size) - 1); printf ("\t}\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data", XLATE_LOG); break; case i_ROXL: genamode (curi->smode, "srcreg", curi->size, "cnt", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV();\n"); if (source_is_imm1_8 (curi)) printf ("{"); else { force_range_for_rox ("cnt", curi->size); printf ("\tif (cnt > 0) {\n"); } printf ("\tcnt--;\n"); printf ("\t{\n\tuae_u32 carry;\n"); printf ("\tuae_u32 loval = val >> (%d - cnt);\n", bit_size (curi->size) - 1); printf ("\tcarry = loval & 1;\n"); printf ("\tval = (((val << 1) | GET_XFLG ()) << cnt) | (loval >> 1);\n"); printf ("\tSET_XFLG (carry);\n"); printf ("\tval &= %s;\n", bit_mask (curi->size)); printf ("\t} }\n"); printf ("\tSET_CFLG (GET_XFLG ());\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data", XLATE_LOG); break; case i_ROXR: genamode (curi->smode, "srcreg", curi->size, "cnt", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV();\n"); if (source_is_imm1_8 (curi)) printf ("{"); else { force_range_for_rox ("cnt", curi->size); printf ("\tif (cnt > 0) {\n"); } printf ("\tcnt--;\n"); printf ("\t{\n\tuae_u32 carry;\n"); printf ("\tuae_u32 hival = (val << 1) | GET_XFLG ();\n"); printf ("\thival <<= (%d - cnt);\n", bit_size (curi->size) - 1); printf ("\tval >>= cnt;\n"); printf ("\tcarry = val & 1;\n"); printf ("\tval >>= 1;\n"); printf ("\tval |= hival;\n"); printf ("\tSET_XFLG (carry);\n"); printf ("\tval &= %s;\n", bit_mask (curi->size)); printf ("\t} }\n"); printf ("\tSET_CFLG (GET_XFLG ());\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data", XLATE_LOG); break; case i_ASRW: genamode (curi->smode, "srcreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 sign = %s & val;\n", cmask (curi->size)); printf ("\tuae_u32 cflg = val & 1;\n"); printf ("\tval = (val >> 1) | sign;\n"); genflags (flag_logical, curi->size, "val", "", ""); printf ("\tSET_CFLG (cflg);\n"); duplicate_carry (); genastore ("val", curi->smode, "srcreg", curi->size, "data", XLATE_LOG); break; case i_ASLW: genamode (curi->smode, "srcreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 sign = %s & val;\n", cmask (curi->size)); printf ("\tuae_u32 sign2;\n"); printf ("\tval <<= 1;\n"); genflags (flag_logical, curi->size, "val", "", ""); printf ("\tsign2 = %s & val;\n", cmask (curi->size)); printf ("\tSET_CFLG (sign != 0);\n"); duplicate_carry (); printf ("\tSET_VFLG (GET_VFLG () | (sign2 != sign));\n"); genastore ("val", curi->smode, "srcreg", curi->size, "data", XLATE_LOG); break; case i_LSRW: genamode (curi->smode, "srcreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 carry = val & 1;\n"); printf ("\tval >>= 1;\n"); genflags (flag_logical, curi->size, "val", "", ""); printf ("SET_CFLG (carry);\n"); duplicate_carry (); genastore ("val", curi->smode, "srcreg", curi->size, "data", XLATE_LOG); break; case i_LSLW: genamode (curi->smode, "srcreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u8 val = data;\n"); break; case sz_word: printf ("\tuae_u16 val = data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 carry = val & %s;\n", cmask (curi->size)); printf ("\tval <<= 1;\n"); genflags (flag_logical, curi->size, "val", "", ""); printf ("SET_CFLG (carry >> %d);\n", bit_size (curi->size) - 1); duplicate_carry (); genastore ("val", curi->smode, "srcreg", curi->size, "data", XLATE_LOG); break; case i_ROLW: genamode (curi->smode, "srcreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u8 val = data;\n"); break; case sz_word: printf ("\tuae_u16 val = data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 carry = val & %s;\n", cmask (curi->size)); printf ("\tval <<= 1;\n"); printf ("\tif (carry) val |= 1;\n"); genflags (flag_logical, curi->size, "val", "", ""); printf ("SET_CFLG (carry >> %d);\n", bit_size (curi->size) - 1); genastore ("val", curi->smode, "srcreg", curi->size, "data", XLATE_LOG); break; case i_RORW: genamode (curi->smode, "srcreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u8 val = data;\n"); break; case sz_word: printf ("\tuae_u16 val = data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 carry = val & 1;\n"); printf ("\tval >>= 1;\n"); printf ("\tif (carry) val |= %s;\n", cmask (curi->size)); genflags (flag_logical, curi->size, "val", "", ""); printf ("SET_CFLG (carry);\n"); genastore ("val", curi->smode, "srcreg", curi->size, "data", XLATE_LOG); break; case i_ROXLW: genamode (curi->smode, "srcreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u8 val = data;\n"); break; case sz_word: printf ("\tuae_u16 val = data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 carry = val & %s;\n", cmask (curi->size)); printf ("\tval <<= 1;\n"); printf ("\tif (GET_XFLG ()) val |= 1;\n"); genflags (flag_logical, curi->size, "val", "", ""); printf ("SET_CFLG (carry >> %d);\n", bit_size (curi->size) - 1); duplicate_carry (); genastore ("val", curi->smode, "srcreg", curi->size, "data", XLATE_LOG); break; case i_ROXRW: genamode (curi->smode, "srcreg", curi->size, "data", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u8 val = data;\n"); break; case sz_word: printf ("\tuae_u16 val = data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 carry = val & 1;\n"); printf ("\tval >>= 1;\n"); printf ("\tif (GET_XFLG ()) val |= %s;\n", cmask (curi->size)); genflags (flag_logical, curi->size, "val", "", ""); printf ("SET_CFLG (carry);\n"); duplicate_carry (); genastore ("val", curi->smode, "srcreg", curi->size, "data", XLATE_LOG); break; case i_MOVEC2: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); printf ("\tint regno = (src >> 12) & 15;\n"); printf ("\tuae_u32 *regp = regs.regs + regno;\n"); printf ("\tif (!m68k_movec2(src & 0xFFF, regp)) goto %s;\n", endlabelstr); break; case i_MOVE2C: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); printf ("\tint regno = (src >> 12) & 15;\n"); printf ("\tuae_u32 *regp = regs.regs + regno;\n"); printf ("\tif (!m68k_move2c(src & 0xFFF, regp)) goto %s;\n", endlabelstr); break; case i_CAS: { int old_brace_level; genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); printf ("\tint ru = (src >> 6) & 7;\n"); printf ("\tint rc = src & 7;\n"); genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, rc)", "dst"); sync_m68k_pc (); printf ("\tif (GET_ZFLG ())"); old_brace_level = n_braces; start_brace (); genastore ("(m68k_dreg(regs, ru))", curi->dmode, "dstreg", curi->size, "dst", XLATE_LOG); pop_braces (old_brace_level); printf ("else"); start_brace (); switch (curi->size) { case sz_byte: printf ("\tm68k_dreg(regs, rc) = (m68k_dreg(regs, rc) & ~0xff) | (dst & 0xff);\n"); break; case sz_word: printf ("\tm68k_dreg(regs, rc) = (m68k_dreg(regs, rc) & ~0xffff) | (dst & 0xffff);\n"); break; default: printf ("\tm68k_dreg(regs, rc) = dst;\n"); break; } pop_braces (old_brace_level); } break; case i_CAS2: genamode (curi->smode, "srcreg", curi->size, "extra", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); printf ("\tuae_u32 rn1 = regs.regs[(extra >> 28) & 15];\n"); printf ("\tuae_u32 rn2 = regs.regs[(extra >> 12) & 15];\n"); if (curi->size == sz_word) { int old_brace_level = n_braces; printf ("\tuae_u32 rc1 = (extra >> 16) & 7;\n"); printf ("\tuae_u32 rc2 = extra & 7;\n"); printf ("\tuae_u16 dst1 = get_word(rn1), dst2 = get_word(rn2);\n"); genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, rc1)", "dst1"); printf ("\tif (GET_ZFLG ()) {\n"); genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, rc2)", "dst2"); printf ("\tif (GET_ZFLG ()) {\n"); printf ("\tput_word(rn1, m68k_dreg(regs, (extra >> 22) & 7));\n"); printf ("\tput_word(rn2, m68k_dreg(regs, (extra >> 6) & 7));\n"); printf ("\t}}\n"); pop_braces (old_brace_level); printf ("\tif (! GET_ZFLG ()) {\n"); printf ("\tm68k_dreg(regs, rc2) = (m68k_dreg(regs, rc2) & ~0xffff) | (dst2 & 0xffff);\n"); printf ("\tm68k_dreg(regs, rc1) = (m68k_dreg(regs, rc1) & ~0xffff) | (dst1 & 0xffff);\n"); printf ("\t}\n"); } else { int old_brace_level = n_braces; printf ("\tuae_u32 rc1 = (extra >> 16) & 7;\n"); printf ("\tuae_u32 rc2 = extra & 7;\n"); printf ("\tuae_u32 dst1 = get_long(rn1), dst2 = get_long(rn2);\n"); genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, rc1)", "dst1"); printf ("\tif (GET_ZFLG ()) {\n"); genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, rc2)", "dst2"); printf ("\tif (GET_ZFLG ()) {\n"); printf ("\tput_long(rn1, m68k_dreg(regs, (extra >> 22) & 7));\n"); printf ("\tput_long(rn2, m68k_dreg(regs, (extra >> 6) & 7));\n"); printf ("\t}}\n"); pop_braces (old_brace_level); printf ("\tif (! GET_ZFLG ()) {\n"); printf ("\tm68k_dreg(regs, rc2) = dst2;\n"); printf ("\tm68k_dreg(regs, rc1) = dst1;\n"); printf ("\t}\n"); } break; case i_MOVES: { int old_brace_level; genamode (curi->smode, "srcreg", curi->size, "extra", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace(); printf ("\tif (extra & 0x0800)\n"); /* from reg to ea */ { int old_m68k_pc_offset = m68k_pc_offset; /* use DFC */ old_brace_level = n_braces; start_brace (); printf ("\tuae_u32 src = regs.regs[(extra >> 12) & 15];\n"); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_DO_INC, XLATE_DFC); genastore ("src", curi->dmode, "dstreg", curi->size, "dst", XLATE_DFC); pop_braces (old_brace_level); m68k_pc_offset = old_m68k_pc_offset; } printf ("else"); /* from ea to reg */ { /* use SFC */ start_brace (); genamode (curi->dmode, "dstreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_SFC); printf ("\tif (extra & 0x8000) {\n"); /* address/data */ switch (curi->size) { case sz_byte: printf ("\tm68k_areg(regs, (extra >> 12) & 7) = (uae_s32)(uae_s8)src;\n"); break; case sz_word: printf ("\tm68k_areg(regs, (extra >> 12) & 7) = (uae_s32)(uae_s16)src;\n"); break; case sz_long: printf ("\tm68k_areg(regs, (extra >> 12) & 7) = src;\n"); break; default: abort (); } printf ("\t} else {\n"); genastore ("src", Dreg, "(extra >> 12) & 7", curi->size, "", XLATE_LOG); printf ("\t}\n"); sync_m68k_pc(); pop_braces (old_brace_level); } } break; case i_BKPT: /* only needed for hardware emulators */ sync_m68k_pc (); printf ("\top_illg(opcode);\n"); break; case i_CALLM: /* not present in 68030 */ sync_m68k_pc (); printf ("\top_illg(opcode);\n"); break; case i_RTM: /* not present in 68030 */ sync_m68k_pc (); printf ("\top_illg(opcode);\n"); break; case i_TRAPcc: printf ("\tuaecptr oldpc = m68k_getpc();\n"); if (curi->smode != am_unknown && curi->smode != am_illg) genamode (curi->smode, "srcreg", curi->size, "dummy", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); sync_m68k_pc (); printf ("\tif (cctrue(%d)) { Exception(7,oldpc); goto %s; }\n", curi->cc, endlabelstr); need_endlabel = 1; break; case i_DIVL: printf ("\tuaecptr oldpc = m68k_getpc();\n"); genamode (curi->smode, "srcreg", curi->size, "extra", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); sync_m68k_pc (); printf ("\tm68k_divl(opcode, dst, extra, oldpc);\n"); break; case i_MULL: genamode (curi->smode, "srcreg", curi->size, "extra", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "dst", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); sync_m68k_pc (); printf ("\tm68k_mull(opcode, dst, extra);\n"); break; case i_BFTST: case i_BFEXTU: case i_BFCHG: case i_BFEXTS: case i_BFCLR: case i_BFFFO: case i_BFSET: case i_BFINS: genamode (curi->smode, "srcreg", curi->size, "extra", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genamode (curi->dmode, "dstreg", sz_long, "dst", GENA_GETV_FETCH_ALIGN, GENA_MOVEM_DO_INC, XLATE_LOG); start_brace (); printf ("\tuae_u32 bdata[2];"); printf ("\tuae_s32 offset = extra & 0x800 ? m68k_dreg(regs, (extra >> 6) & 7) : (extra >> 6) & 0x1f;\n"); printf ("\tint width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) -1) & 0x1f) +1;\n"); if (curi->dmode == Dreg) { printf ("\tuae_u32 tmp = m68k_dreg(regs, dstreg);\n"); printf ("\toffset &= 0x1f;\n"); printf ("\ttmp = (tmp << offset) | (tmp >> (32 - offset));\n"); printf ("\tbdata[0] = tmp & ((1 << (32 - width)) - 1);\n"); } else { printf ("\tuae_u32 tmp;\n"); printf ("\tdsta += offset >> 3;\n"); printf ("\ttmp = get_bitfield(dsta, bdata, offset, width);\n"); } printf ("\tSET_NFLG_ALWAYS (((uae_s32)tmp) < 0 ? 1 : 0);\n"); if (curi->mnemo == i_BFEXTS) printf ("\ttmp = (uae_s32)tmp >> (32 - width);\n"); else printf ("\ttmp >>= (32 - width);\n"); printf ("\tSET_ZFLG (tmp == 0); SET_VFLG (0); SET_CFLG (0);\n"); switch (curi->mnemo) { case i_BFTST: break; case i_BFEXTU: case i_BFEXTS: printf ("\tm68k_dreg(regs, (extra >> 12) & 7) = tmp;\n"); break; case i_BFCHG: printf ("\ttmp = tmp ^ (0xffffffffu >> (32 - width));\n"); break; case i_BFCLR: printf ("\ttmp = 0;\n"); break; case i_BFFFO: printf ("\t{ uae_u32 mask = 1 << (width-1);\n"); printf ("\twhile (mask) { if (tmp & mask) break; mask >>= 1; offset++; }}\n"); printf ("\tm68k_dreg(regs, (extra >> 12) & 7) = offset;\n"); break; case i_BFSET: printf ("\ttmp = 0xffffffffu >> (32 - width);\n"); break; case i_BFINS: printf ("\ttmp = m68k_dreg(regs, (extra >> 12) & 7);\n"); printf ("\ttmp = tmp & (0xffffffffu >> (32 - width));\n"); printf ("\tSET_NFLG_ALWAYS (tmp & (1 << (width - 1)) ? 1 : 0);\n"); printf ("\tSET_ZFLG (tmp == 0);\n"); break; default: break; } if (curi->mnemo == i_BFCHG || curi->mnemo == i_BFCLR || curi->mnemo == i_BFSET || curi->mnemo == i_BFINS) { if (curi->dmode == Dreg) { printf ("\ttmp = bdata[0] | (tmp << (32 - width));\n"); printf ("\tm68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));\n"); } else { printf ("\tput_bitfield(dsta, bdata, tmp, offset, width);\n"); } } break; case i_PACK: if (curi->smode == Dreg) { printf ("\tuae_u16 val = m68k_dreg(regs, srcreg) + %s;\n", gen_nextiword ()); printf ("\tm68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & 0xffffff00) | ((val >> 4) & 0xf0) | (val & 0xf);\n"); } else { printf ("\tuae_u16 val;\n"); printf ("\tval = (uae_u16)get_byte(m68k_areg(regs, srcreg) - areg_byteinc[srcreg]);\n"); printf ("\tval = (val | ((uae_u16)get_byte(m68k_areg(regs, srcreg) - 2 * areg_byteinc[srcreg]) << 8)) + %s;\n", gen_nextiword ()); printf ("\tm68k_areg(regs, srcreg) -= 2;\n"); printf ("\tm68k_areg(regs, dstreg) -= areg_byteinc[dstreg];\n"); gen_set_fault_pc (); printf ("\tput_byte(m68k_areg(regs, dstreg),((val >> 4) & 0xf0) | (val & 0xf));\n"); } break; case i_UNPK: if (curi->smode == Dreg) { printf ("\tuae_u16 val = m68k_dreg(regs, srcreg);\n"); printf ("\tval = (((val << 4) & 0xf00) | (val & 0xf)) + %s;\n", gen_nextiword ()); printf ("\tm68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & 0xffff0000) | (val & 0xffff);\n"); } else { printf ("\tuae_u16 val;\n"); printf ("\tval = (uae_u16)get_byte(m68k_areg(regs, srcreg) - areg_byteinc[srcreg]);\n"); printf ("\tval = (((val << 4) & 0xf00) | (val & 0xf)) + %s;\n", gen_nextiword ()); printf ("\tm68k_areg(regs, srcreg) -= areg_byteinc[srcreg];\n"); printf ("\tm68k_areg(regs, dstreg) -= 2;\n"); gen_set_fault_pc (); printf ("\tput_word(m68k_areg(regs, dstreg), val);\n"); } break; case i_TAS: genamode (curi->smode, "srcreg", curi->size, "src", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); genflags (flag_logical, curi->size, "src", "", ""); printf ("\tsrc |= 0x80;\n"); genastore ("src", curi->smode, "srcreg", curi->size, "src", XLATE_LOG); break; case i_FPP: genamode (curi->smode, "srcreg", curi->size, "extra", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); sync_m68k_pc (); swap_opcode (); printf ("\tfpuop_arithmetic(opcode, extra);\n"); break; case i_FDBcc: genamode (curi->smode, "srcreg", curi->size, "extra", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); sync_m68k_pc (); swap_opcode (); printf ("\tfpuop_dbcc(opcode, extra);\n"); break; case i_FScc: genamode (curi->smode, "srcreg", curi->size, "extra", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); sync_m68k_pc (); swap_opcode (); printf ("\tfpuop_scc(opcode, extra);\n"); break; case i_FTRAPcc: sync_m68k_pc (); start_brace (); printf ("\tuaecptr oldpc = m68k_getpc();\n"); printf ("\tuae_u16 extra = %s;\n", gen_nextiword()); if (curi->smode != am_unknown && curi->smode != am_illg) genamode (curi->smode, "srcreg", curi->size, "dummy", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); sync_m68k_pc (); swap_opcode (); printf ("\tfpuop_trapcc(opcode, oldpc, extra);\n"); break; case i_FBcc: sync_m68k_pc (); start_brace (); printf ("\tuaecptr pc = m68k_getpc();\n"); genamode (curi->dmode, "srcreg", curi->size, "extra", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); sync_m68k_pc (); swap_opcode (); printf ("\tfpuop_bcc(opcode, pc, extra);\n"); break; case i_FSAVE: sync_m68k_pc (); swap_opcode (); printf ("\tfpuop_save(opcode);\n"); break; case i_FRESTORE: sync_m68k_pc (); swap_opcode (); printf ("\tfpuop_restore(opcode);\n"); break; case i_CINVL: printf ("\tflush_internals();\n"); printf("#ifdef USE_JIT\n"); printf ("\tif (opcode&0x80)\n" "\t\tflush_icache(31);\n"); printf("#endif\n"); break; case i_CINVP: printf ("\tflush_internals();\n"); printf("#ifdef USE_JIT\n"); printf ("\tif (opcode&0x80)\n" "\t\tflush_icache(32);\n"); printf("#endif\n"); break; case i_CINVA: printf ("\tflush_internals();\n"); printf("#ifdef USE_JIT\n"); printf ("\tif (opcode&0x80)\n" "\t\tflush_icache(33);\n"); printf("#endif\n"); break; case i_CPUSHL: printf ("\tflush_internals();\n"); printf("#ifdef USE_JIT\n"); printf ("\tif (opcode&0x80)\n" "\t\tflush_icache(41);\n"); printf("#endif\n"); break; case i_CPUSHP: printf ("\tflush_internals();\n"); printf("#ifdef USE_JIT\n"); printf ("\tif (opcode&0x80)\n" "\t\tflush_icache(42);\n"); printf("#endif\n"); break; case i_CPUSHA: printf ("\tflush_internals();\n"); printf("#ifdef USE_JIT\n"); printf ("\tif (opcode&0x80)\n" "\t\tflush_icache(43);\n"); printf("#endif\n"); break; case i_MOVE16: if ((opcode & 0xfff8) == 0xf620) { /* MOVE16 (Ax)+,(Ay)+ */ printf ("\tuaecptr mems = m68k_areg(regs, srcreg) & ~15, memd;\n"); printf ("\tdstreg = (%s >> 12) & 7;\n", gen_nextiword()); printf ("\tmemd = m68k_areg(regs, dstreg) & ~15;\n"); printf ("\tput_long(memd, get_long(mems));\n"); printf ("\tput_long(memd+4, get_long(mems+4));\n"); printf ("\tput_long(memd+8, get_long(mems+8));\n"); printf ("\tput_long(memd+12, get_long(mems+12));\n"); printf ("\tif (srcreg != dstreg)\n"); printf ("\tm68k_areg(regs, srcreg) += 16;\n"); printf ("\tm68k_areg(regs, dstreg) += 16;\n"); } else { /* Other variants */ genamode (curi->smode, "srcreg", curi->size, "mems", GENA_GETV_NO_FETCH, GENA_MOVEM_MOVE16, XLATE_LOG); genamode (curi->dmode, "dstreg", curi->size, "memd", GENA_GETV_NO_FETCH, GENA_MOVEM_MOVE16, XLATE_LOG); printf ("\tmemsa &= ~15;\n"); printf ("\tmemda &= ~15;\n"); printf ("\tput_long(memda, get_long(memsa));\n"); printf ("\tput_long(memda+4, get_long(memsa+4));\n"); printf ("\tput_long(memda+8, get_long(memsa+8));\n"); printf ("\tput_long(memda+12, get_long(memsa+12));\n"); if ((opcode & 0xfff8) == 0xf600) printf ("\tm68k_areg(regs, srcreg) += 16;\n"); else if ((opcode & 0xfff8) == 0xf608) printf ("\tm68k_areg(regs, dstreg) += 16;\n"); } break; case i_MMUOP: genamode (curi->smode, "srcreg", curi->size, "extra", GENA_GETV_FETCH, GENA_MOVEM_DO_INC, XLATE_LOG); sync_m68k_pc (); swap_opcode (); printf ("\tmmu_op(opcode,extra);\n"); break; case i_EMULOP_RETURN: printf ("\tm68k_emulop_return();\n"); m68k_pc_offset = 0; break; case i_EMULOP: printf ("\n"); swap_opcode (); printf ("\tm68k_emulop(opcode);\n"); break; case i_NATFEAT_ID: printf ("\n"); printf ("\tm68k_natfeat_id();\n"); break; case i_NATFEAT_CALL: printf ("\n"); printf ("\tm68k_natfeat_call();\n"); break; default: abort (); break; } finish_braces (); sync_m68k_pc (); } static void generate_includes (FILE * f) { fprintf (f, "#include \"sysdeps.h\"\n"); fprintf (f, "#include \"m68k.h\"\n"); fprintf (f, "#include \"memory-uae.h\"\n"); fprintf (f, "#include \"readcpu.h\"\n"); fprintf (f, "#include \"newcpu.h\"\n"); fprintf (f, "#ifdef USE_JIT\n"); fprintf (f, "#include \"compiler/compemu.h\"\n"); fprintf (f, "#endif\n"); fprintf (f, "#include \"fpu/fpu.h\"\n"); fprintf (f, "#include \"cputbl.h\"\n"); fprintf (f, "#include \"cpu_emulation.h\"\n"); fprintf (f, "#include \"debug.h\"\n"); fprintf (f, "#define SET_CFLG_ALWAYS(x) SET_CFLG(x)\n"); fprintf (f, "#define SET_NFLG_ALWAYS(x) SET_NFLG(x)\n"); fprintf (f, "#define CPUFUNC_FF(x) x##_ff\n"); fprintf (f, "#define CPUFUNC_NF(x) x##_nf\n"); fprintf (f, "#define CPUFUNC(x) CPUFUNC_FF(x)\n"); fprintf (f, "#ifdef NOFLAGS\n"); fprintf (f, "# include \"noflags.h\"\n"); fprintf (f, "#endif\n"); } static int postfix; struct gencputbl { char handler[80]; uae_u16 specific; uae_u16 opcode; int namei; }; struct gencputbl cpustbl[65536]; static int n_cpustbl; static char *decodeEA (amodes mode, wordsizes size) { static char buffer[80]; buffer[0] = 0; switch (mode){ case Dreg: strcpy (buffer,"Dn"); break; case Areg: strcpy (buffer,"An"); break; case Aind: strcpy (buffer,"(An)"); break; case Aipi: strcpy (buffer,"(An)+"); break; case Apdi: strcpy (buffer,"-(An)"); break; case Ad16: strcpy (buffer,"(d16,An)"); break; case Ad8r: strcpy (buffer,"(d8,An,Xn)"); break; case PC16: strcpy (buffer,"(d16,PC)"); break; case PC8r: strcpy (buffer,"(d8,PC,Xn)"); break; case absw: strcpy (buffer,"(xxx).W"); break; case absl: strcpy (buffer,"(xxx).L"); break; case imm: switch (size){ case sz_byte: strcpy (buffer,"#.B"); break; case sz_word: strcpy (buffer,"#.W"); break; case sz_long: strcpy (buffer,"#.L"); break; default: break; } break; case imm0: strcpy (buffer,"#.B"); break; case imm1: strcpy (buffer,"#.W"); break; case imm2: strcpy (buffer,"#.L"); break; case immi: strcpy (buffer,"#"); break; default: break; } return buffer; } static char *outopcode (const char *name, int opcode) { static char out[100]; struct instr *ins; ins = &table68k[opcode]; strcpy (out, name); if (ins->smode == immi) strcat (out, "Q"); if (ins->size == sz_byte) strcat (out,".B"); if (ins->size == sz_word) strcat (out,".W"); if (ins->size == sz_long) strcat (out,".L"); strcat (out," "); if (ins->suse) strcat (out, decodeEA (ins->smode, ins->size)); if (ins->duse) { if (ins->suse) strcat (out,","); strcat (out, decodeEA (ins->dmode, ins->size)); } return out; } static void generate_one_opcode (int rp) { int i; uae_u16 smsk, dmsk; int opcode = opcode_map[rp]; int have_realopcode = 0; const char *name; if (table68k[opcode].mnemo == i_ILLG || table68k[opcode].clev > cpu_level) return; for (i = 0; lookuptab[i].name[0]; i++) { if (table68k[opcode].mnemo == lookuptab[i].mnemo) break; } if (table68k[opcode].handler != -1) return; name = lookuptab[i].name; if (opcode_next_clev[rp] != cpu_level) { sprintf(cpustbl[n_cpustbl].handler, "CPUFUNC(op_%x_%d)", opcode, opcode_last_postfix[rp]); cpustbl[n_cpustbl].specific = 0; cpustbl[n_cpustbl].opcode = opcode; cpustbl[n_cpustbl].namei = i; fprintf (stblfile, "{ %s, %d, %d }, /* %s */\n", cpustbl[n_cpustbl].handler, cpustbl[n_cpustbl].specific, opcode, name); n_cpustbl++; return; } if (table68k[opcode].flagdead == 0) /* force to the "ff" variant since the instruction doesn't set at all the condition codes */ sprintf (cpustbl[n_cpustbl].handler, "CPUFUNC_FF(op_%x_%d)", opcode, postfix); else sprintf (cpustbl[n_cpustbl].handler, "CPUFUNC(op_%x_%d)", opcode, postfix); cpustbl[n_cpustbl].specific = 0; cpustbl[n_cpustbl].opcode = opcode; cpustbl[n_cpustbl].namei = i; fprintf (stblfile, "{ %s, %d, %d }, /* %s */\n", cpustbl[n_cpustbl].handler, cpustbl[n_cpustbl].specific, opcode, name); n_cpustbl++; fprintf (headerfile, "extern cpuop_func op_%x_%d_nf;\n", opcode, postfix); fprintf (headerfile, "extern cpuop_func op_%x_%d_ff;\n", opcode, postfix); printf ("/* %s */\n", outopcode (name, opcode)); printf ("void REGPARAM2 CPUFUNC(op_%x_%d)(uae_u32 opcode) /* %s */\n{\n", opcode, postfix, name); printf ("\tcpuop_begin();\n"); /* gb-- The "nf" variant for an instruction that doesn't set the condition codes at all is the same as the "ff" variant, so we don't need the "nf" variant to be compiled since it is mapped to the "ff" variant in the smalltbl. */ if (table68k[opcode].flagdead == 0) printf ("#ifndef NOFLAGS\n"); switch (table68k[opcode].stype) { case 0: smsk = 7; break; case 1: smsk = 255; break; case 2: smsk = 15; break; case 3: smsk = 7; break; case 4: smsk = 7; break; case 5: smsk = 63; break; case 6: smsk = 255; break; case 7: smsk = 3; break; default: abort (); } dmsk = 7; next_cpu_level = -1; if (table68k[opcode].suse && table68k[opcode].smode != imm && table68k[opcode].smode != imm0 && table68k[opcode].smode != imm1 && table68k[opcode].smode != imm2 && table68k[opcode].smode != absw && table68k[opcode].smode != absl && table68k[opcode].smode != PC8r && table68k[opcode].smode != PC16 /* gb-- We don't want to fetch the EmulOp code since the EmulOp() routine uses the whole opcode value. Maybe all the EmulOps could be expanded out but I don't think it is an improvement */ && table68k[opcode].stype != 6 ) { if (table68k[opcode].spos == -1) { if (((int) table68k[opcode].sreg) >= 128) printf ("\tuae_u32 srcreg = (uae_s32)(uae_s8)%d;\n", (int) table68k[opcode].sreg); else printf ("\tuae_u32 srcreg = %d;\n", (int) table68k[opcode].sreg); } else { char source[100]; int pos = table68k[opcode].spos; #if 0 /* Check that we can do the little endian optimization safely. */ if (pos < 8 && (smsk >> (8 - pos)) != 0) abort (); #endif real_opcode(&have_realopcode); if (pos) sprintf (source, "((real_opcode >> %d) & %d)", pos, smsk); else sprintf (source, "(real_opcode & %d)", smsk); if (table68k[opcode].stype == 3) printf ("\tuae_u32 srcreg = imm8_table[%s];\n", source); else if (table68k[opcode].stype == 1) printf ("\tuae_u32 srcreg = (uae_s32)(uae_s8)%s;\n", source); else printf ("\tuae_u32 srcreg = %s;\n", source); } } if (table68k[opcode].duse /* Yes, the dmode can be imm, in case of LINK or DBcc */ && table68k[opcode].dmode != imm && table68k[opcode].dmode != imm0 && table68k[opcode].dmode != imm1 && table68k[opcode].dmode != imm2 && table68k[opcode].dmode != absw && table68k[opcode].dmode != absl) { if (table68k[opcode].dpos == -1) { if (((int) table68k[opcode].dreg) >= 128) printf ("\tuae_u32 dstreg = (uae_s32)(uae_s8)%d;\n", (int) table68k[opcode].dreg); else printf ("\tuae_u32 dstreg = %d;\n", (int) table68k[opcode].dreg); } else { int pos = table68k[opcode].dpos; #if 0 /* Check that we can do the little endian optimization safely. */ if (pos < 8 && (dmsk >> (8 - pos)) != 0) abort (); #endif real_opcode(&have_realopcode); if (pos) printf ("\tuae_u32 dstreg = (real_opcode >> %d) & %d;\n", pos, dmsk); else printf ("\tuae_u32 dstreg = real_opcode & %d;\n", dmsk); } } need_endlabel = 0; endlabelno++; sprintf (endlabelstr, "endlabel%d", endlabelno); gen_opcode (opcode); if (need_endlabel) printf ("%s: ;\n", endlabelstr); if (table68k[opcode].flagdead == 0) printf ("\n#endif\n"); printf ("\tcpuop_end();\n"); printf ("}\n"); opcode_next_clev[rp] = next_cpu_level; opcode_last_postfix[rp] = postfix; } static void generate_func (void) { int i, j, rp; using_prefetch = 0; using_exception_3 = 0; for (i = 0; i < 1; i++) { cpu_level = 4 - i; postfix = i; fprintf (stblfile, "const struct cputbl CPUFUNC(op_smalltbl_%d)[] = {\n", postfix); /* sam: this is for people with low memory (eg. me :)) */ printf ("\n" "#if !defined(PART_1) && !defined(PART_2) && " "!defined(PART_3) && !defined(PART_4) && " "!defined(PART_5) && !defined(PART_6) && " "!defined(PART_7) && !defined(PART_8)" "\n" "#define PART_1 1\n" "#define PART_2 1\n" "#define PART_3 1\n" "#define PART_4 1\n" "#define PART_5 1\n" "#define PART_6 1\n" "#define PART_7 1\n" "#define PART_8 1\n" "#endif\n\n"); rp = 0; n_cpustbl = 0; for(j=1;j<=8;++j) { int k = (j*nr_cpuop_funcs)/8; printf ("#ifdef PART_%d\n",j); for (; rp < k; rp++) generate_one_opcode (rp); printf ("#endif\n\n"); } fprintf (stblfile, "{ 0, 0, 0 }};\n"); } } static struct { const char *handler; const char *name; } cpufunctbl[65536]; static char const op_illg_1[] = "op_illg_1"; static char const illegal[] = "ILLEGAL"; static void generate_functbl (void) { int i; unsigned int opcode; int cpu_level = 4; struct gencputbl *tbl = cpustbl; for (opcode = 0; opcode < 65536; opcode++) { cpufunctbl[opcode].handler = op_illg_1; cpufunctbl[opcode].name = illegal; } for (i = 0; i < n_cpustbl; i++) { if (! tbl[i].specific) { cpufunctbl[tbl[i].opcode].handler = tbl[i].handler; cpufunctbl[tbl[i].opcode].name = lookuptab[tbl[i].namei].name; } } for (opcode = 0; opcode < 65536; opcode++) { const char *f; if (table68k[opcode].mnemo == i_ILLG || (unsigned)table68k[opcode].clev > (unsigned)cpu_level) continue; if (table68k[opcode].handler != -1) { f = cpufunctbl[table68k[opcode].handler].handler; if (f == op_illg_1) abort(); cpufunctbl[opcode].handler = f; cpufunctbl[opcode].name = cpufunctbl[table68k[opcode].handler].name; } } for (i = 0; i < n_cpustbl; i++) { if (tbl[i].specific) { cpufunctbl[tbl[i].opcode].handler = tbl[i].handler; cpufunctbl[tbl[i].opcode].name = lookuptab[tbl[i].namei].name; } } fprintf(functblfile, "\n"); fprintf(functblfile, "cpuop_func *cpufunctbl[65536] = {\n"); fprintf(functblfile, "#if !defined(HAVE_GET_WORD_UNSWAPPED) || defined(FULLMMU)\n"); for (opcode = 0; opcode < 65536; opcode++) { fprintf(functblfile, "\t%s%s /* %s */\n", cpufunctbl[opcode].handler, opcode < 65535 ? "," : "", cpufunctbl[opcode].name); } fprintf(functblfile, "#else\n"); for (opcode = 0; opcode < 65536; opcode++) { unsigned int map = do_byteswap_16(opcode); fprintf(functblfile, "\t%s%s /* %s */\n", cpufunctbl[map].handler, opcode < 65535 ? "," : "", cpufunctbl[map].name); } fprintf(functblfile, "#endif\n"); fprintf(functblfile, "};\n"); } #if (defined(OS_cygwin) || defined(OS_mingw)) && defined(EXTENDED_SIGSEGV) void cygwin_mingw_abort() { #undef abort abort(); } #endif int main(void) { init_table68k (); opcode_map = (int *) malloc (sizeof (int) * nr_cpuop_funcs); opcode_last_postfix = (int *) malloc (sizeof (int) * nr_cpuop_funcs); opcode_next_clev = (int *) malloc (sizeof (int) * nr_cpuop_funcs); counts = (unsigned long *) malloc (65536 * sizeof (unsigned long)); read_counts (); /* It would be a lot nicer to put all in one file (we'd also get rid of * cputbl.h that way), but cpuopti can't cope. That could be fixed, but * I don't dare to touch the 68k version. */ if ((headerfile = fopen ("cputbl.h", "wb")) == NULL) abort(); if ((stblfile = fopen ("cpustbl.cpp", "wb")) == NULL) abort(); if ((functblfile = fopen ("cpufunctbl.cpp", "wb")) == NULL) abort(); if (freopen ("cpuemu.cpp", "wb", stdout) == NULL) abort(); generate_includes (stdout); fprintf(stdout, "#ifdef HAVE_CFLAG_NO_REDZONE\n"); fprintf(stdout, "#ifndef NOFLAGS\n"); fprintf(stdout, "#pragma GCC option \"-mno-red-zone\"\n"); fprintf(stdout, "#endif\n"); fprintf(stdout, "#endif\n"); generate_includes (stblfile); generate_includes (functblfile); generate_func (); generate_functbl (); free (table68k); fclose(headerfile); fclose(stblfile); fclose(functblfile); return 0; } aranym-1.1.0/src/uae_cpu/fpu/0000775000175000017500000000000013454637641014205 5ustar joyjoyaranym-1.1.0/src/uae_cpu/fpu/types.h0000664000175000017500000001176513454637622015533 0ustar joyjoy/* * fpu/types.h - basic types for fpu registers * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef FPU_TYPES_H #define FPU_TYPES_H #include "sysdeps.h" /* Default behavior is *not* to use long doubles */ #undef USE_LONG_DOUBLE #undef USE_QUAD_DOUBLE /* -------------------------------------------------------------------------- */ /* --- Original UAE fpu core --- */ /* -------------------------------------------------------------------------- */ #if defined(FPU_UAE) /* 4-byte floats */ #if SIZEOF_FLOAT == 4 typedef float uae_f32; #elif SIZEOF_DOUBLE == 4 typedef double uae_f32; #else #error "No 4 byte float type, you lose." #endif /* 8-byte floats */ #if SIZEOF_DOUBLE == 8 typedef double uae_f64; #elif SIZEOF_LONG_DOUBLE == 8 typedef long double uae_f64; #else #error "No 8 byte float type, you lose." #endif /* Original UAE FPU registers are only 8 bytes long */ typedef uae_f64 fpu_register; typedef fpu_register fpu_extended; typedef uae_f64 fpu_double; typedef uae_f32 fpu_single; /* -------------------------------------------------------------------------- */ /* --- Optimized core for x86 --- */ /* -------------------------------------------------------------------------- */ #elif defined(FPU_X86) /* 4-byte floats */ #if SIZEOF_FLOAT == 4 typedef float uae_f32; #elif SIZEOF_DOUBLE == 4 typedef double uae_f32; #else #error "No 4 byte float type, you lose." #endif /* 8-byte floats */ #if SIZEOF_DOUBLE == 8 typedef float uae_f64; #elif SIZEOF_LONG_DOUBLE == 8 typedef double uae_f64; #else #error "No 8 byte float type, you lose." #endif /* At least 10-byte floats are required */ #if SIZEOF_LONG_DOUBLE >= 10 typedef long double fpu_register; #else #error "No float type at least 10 bytes long, you lose." #endif /* X86 FPU has a custom register type that maps to a native X86 register */ typedef fpu_register fpu_extended; typedef uae_f64 fpu_double; typedef uae_f32 fpu_single; /* -------------------------------------------------------------------------- */ /* --- C99 implementation --- */ /* -------------------------------------------------------------------------- */ #elif defined(FPU_IEEE) #if HOST_FLOAT_FORMAT != IEEE_FLOAT_FORMAT #error "No IEEE float format, you lose." #endif /* 4-byte floats */ #if SIZEOF_FLOAT == 4 typedef float uae_f32; #elif SIZEOF_DOUBLE == 4 typedef double uae_f32; #else #error "No 4 byte float type, you lose." #endif /* 8-byte floats */ #if SIZEOF_DOUBLE == 8 typedef double uae_f64; #elif SIZEOF_LONG_DOUBLE == 8 typedef long double uae_f64; #else #error "No 8 byte float type, you lose." #endif /* 12-byte or 16-byte floats */ #if SIZEOF_LONG_DOUBLE == 12 typedef long double uae_f96; typedef uae_f96 fpu_register; #define USE_LONG_DOUBLE 1 #elif SIZEOF_LONG_DOUBLE == 16 && (defined(CPU_i386) || defined(CPU_x86_64) || defined(CPU_ia64)) /* Long doubles on x86-64 are really held in old x87 FPU stack. */ typedef long double uae_f128; typedef uae_f128 fpu_register; #define USE_LONG_DOUBLE 1 #elif 0 /* Disable for now and probably for good as (i) the emulator implementation is not correct, (ii) I don't know of any CPU which handles this kind of format *natively* with conformance to IEEE. */ typedef long double uae_f128; typedef uae_f128 fpu_register; #define USE_QUAD_DOUBLE 1 #else typedef uae_f64 fpu_register; #endif /* We need all those floating-point types */ typedef fpu_register fpu_extended; typedef uae_f64 fpu_double; typedef uae_f32 fpu_single; #elif defined(FPU_MPFR) #include struct fpu_register { mpfr_t f; uae_u64 nan_bits; int nan_sign; operator long double (); fpu_register &operator=(long double); }; #endif union fpu_register_parts { fpu_register val; uae_u32 parts[sizeof(fpu_register) / 4]; }; #endif /* FPU_TYPES_H */ aranym-1.1.0/src/uae_cpu/fpu/rounding.h0000664000175000017500000001315013454637622016202 0ustar joyjoy/* * fpu/rounding.h - system-dependant FPU rounding mode and precision * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef FPU_ROUNDING_H #define FPU_ROUNDING_H /* NOTE: this file shall be included from fpu/fpu_*.cpp */ #undef PUBLIC #define PUBLIC extern #undef PRIVATE #define PRIVATE static #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. /* Defaults to generic rounding mode and precision handling */ #define FPU_USE_GENERIC_ROUNDING_MODE #define FPU_USE_GENERIC_ROUNDING_PRECISION /* -------------------------------------------------------------------------- */ /* --- Selection of floating-point rounding mode and precision --- */ /* -------------------------------------------------------------------------- */ /* Optimized i386 fpu core must use native rounding mode */ #if defined(FPU_X86) && defined(USE_X87_ASSEMBLY) # undef FPU_USE_GENERIC_ROUNDING_MODE # define FPU_USE_X86_ROUNDING_MODE #endif /* Optimized i386 fpu core must use native rounding precision */ #if defined(FPU_X86) && defined(USE_X87_ASSEMBLY) # undef FPU_USE_GENERIC_ROUNDING_PRECISION # define FPU_USE_X86_ROUNDING_PRECISION #endif #if 0 // gb-- FIXME: that doesn't work /* IEEE-based fpu core can have native rounding mode on i386 */ #if defined(FPU_IEEE) && defined(USE_X87_ASSEMBLY) # undef FPU_USE_GENERIC_ROUNDING_MODE # define FPU_USE_X86_ROUNDING_MODE #endif /* IEEE-based fpu core can have native rounding precision on i386 */ #if defined(FPU_IEEE) && defined(USE_X87_ASSEMBLY) # undef FPU_USE_GENERIC_ROUNDING_PRECISION # define FPU_USE_X86_ROUNDING_PRECISION #endif #endif /* -------------------------------------------------------------------------- */ /* --- Sanity checks --- */ /* -------------------------------------------------------------------------- */ /* X86 rounding mode and precision work together */ #if defined(FPU_USE_X86_ROUNDING_MODE) && defined(FPU_USE_X86_ROUNDING_PRECISION) # define FPU_USE_X86_ROUNDING # define CW_INITIAL (CW_RESET|CW_X|CW_PC_EXTENDED|CW_RC_NEAR|CW_PM|CW_UM|CW_OM|CW_ZM|CW_DM|CW_IM) PRIVATE uae_u32 x86_control_word; #endif /* Control word -- rounding mode */ #ifdef FPU_USE_X86_ROUNDING_MODE PUBLIC const uae_u32 x86_control_word_rm_mac2host[]; #endif /* Control word -- rounding precision */ #ifdef FPU_USE_X86_ROUNDING_PRECISION PUBLIC const uae_u32 x86_control_word_rp_mac2host[]; #endif #if defined(FPU_USE_X86_ROUNDING_MODE) && defined(FPU_USE_X86_ROUNDING_PRECISION) /* Set host control word for rounding mode and rounding precision */ PRIVATE inline void set_host_control_word(void) { /* Exception enable byte is ignored, but the same value is returned that was previously set. */ x86_control_word = (x86_control_word & ~(X86_ROUNDING_MODE|X86_ROUNDING_PRECISION)) | x86_control_word_rm_mac2host[(FPU fpcr & FPCR_ROUNDING_MODE) >> 4] | x86_control_word_rp_mac2host[(FPU fpcr & FPCR_ROUNDING_PRECISION) >> 6] ; __asm__ __volatile__("fldcw %0" : : "m" (x86_control_word)); } #endif /* -------------------------------------------------------------------------- */ /* --- Generic rounding mode and precision --- */ /* -------------------------------------------------------------------------- */ #if defined(FPU_USE_GENERIC_ROUNDING_MODE) && defined(FPU_USE_GENERIC_ROUNDING_PRECISION) /* Set host control word for rounding mode and rounding precision */ PRIVATE inline void set_host_control_word(void) { } #endif /* -------------------------------------------------------------------------- */ /* --- Common rounding mode and precision --- */ /* -------------------------------------------------------------------------- */ #if defined(FPU_USE_GENERIC_ROUNDING_MODE) || defined(FPU_USE_X86_ROUNDING_MODE) /* Return the current rounding mode in m68k format */ static inline uae_u32 FFPU get_rounding_mode(void) { return FPU fpcr & FPCR_ROUNDING_MODE; } /* Convert and set to native rounding mode */ static inline void FFPU set_rounding_mode(uae_u32 /* new_rounding_mode */ ) { } #endif #if defined(FPU_USE_GENERIC_ROUNDING_PRECISION) || defined(FPU_USE_X86_ROUNDING_PRECISION) /* Return the current rounding precision in m68k format */ static inline uae_u32 FFPU get_rounding_precision(void) { return FPU fpcr & FPCR_ROUNDING_PRECISION; } /* Convert and set to native rounding precision */ static inline void FFPU set_rounding_precision(uae_u32 /* new_rounding_precision */) { } #endif #endif /* FPU_ROUNDING_H */ aranym-1.1.0/src/uae_cpu/fpu/rounding.cpp0000664000175000017500000000430713454637622016541 0ustar joyjoy/* * fpu/rounding.cpp - system-dependant FPU rounding mode and precision * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #undef PRIVATE #define PRIVATE /**/ #undef PUBLIC #define PUBLIC /**/ #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. /* -------------------------------------------------------------------------- */ /* --- Native X86 Rounding Mode --- */ /* -------------------------------------------------------------------------- */ #ifdef FPU_USE_X86_ROUNDING_MODE const uae_u32 FFPU x86_control_word_rm_mac2host[] = { CW_RC_NEAR, CW_RC_ZERO, CW_RC_DOWN, CW_RC_UP }; #endif /* -------------------------------------------------------------------------- */ /* --- Native X86 Rounding Precision --- */ /* -------------------------------------------------------------------------- */ #ifdef FPU_USE_X86_ROUNDING_PRECISION const uae_u32 FFPU x86_control_word_rp_mac2host[] = { CW_PC_EXTENDED, CW_PC_SINGLE, CW_PC_DOUBLE, CW_PC_RESERVED }; #endif aranym-1.1.0/src/uae_cpu/fpu/mathlib.h0000664000175000017500000007045313454637622016006 0ustar joyjoy/* * fpu/mathlib.h - Floating-point math support library * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef FPU_MATHLIB_H #define FPU_MATHLIB_H /* NOTE: this file shall be included only from fpu/fpu_*.cpp */ #undef PUBLIC #define PUBLIC extern #undef PRIVATE #define PRIVATE static #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. // Define the following macro if branches are expensive. If so, // integer-based isnan() and isinf() functions are implemented. // TODO: move to Makefile.in #define BRANCHES_ARE_EXPENSIVE 1 // Use ISO C99 extended-precision math functions (glibc 2.1+) #define FPU_USE_ISO_C99 1 #if defined(FPU_USE_ISO_C99) // NOTE: no prior shall be included at this point #define __USE_ISOC99 1 // for glibc 2.2.X and newer #define __USE_ISOC9X 1 // for glibc 2.1.X #include #else #include using namespace std; #endif /* -------------------------------------------------------------------------- */ /* --- Floating-point register types --- */ /* -------------------------------------------------------------------------- */ // Single : S 8*E 23*F #define FP_SINGLE_EXP_MAX 0xff #define FP_SINGLE_EXP_BIAS 0x7f // Double : S 11*E 52*F #define FP_DOUBLE_EXP_MAX 0x7ff #define FP_DOUBLE_EXP_BIAS 0x3ff // Extended : S 15*E 64*F #define FP_EXTENDED_EXP_MAX 0x7fff #define FP_EXTENDED_EXP_BIAS 0x3fff // Zeroes : E = 0 & F = 0 // Infinities : E = MAX & F = 0 // Not-A-Number : E = MAX & F # 0 /* -------------------------------------------------------------------------- */ /* --- Floating-point type shapes (IEEE-compliant) --- */ /* -------------------------------------------------------------------------- */ // Taken from glibc 2.2.x: ieee754.h // IEEE-754 float format union fpu_single_shape { fpu_single value; /* This is the IEEE 754 single-precision format. */ struct { #ifdef WORDS_BIGENDIAN unsigned int negative:1; unsigned int exponent:8; unsigned int mantissa:23; #else unsigned int mantissa:23; unsigned int exponent:8; unsigned int negative:1; #endif } ieee; /* This format makes it easier to see if a NaN is a signalling NaN. */ struct { #ifdef WORDS_BIGENDIAN unsigned int negative:1; unsigned int exponent:8; unsigned int quiet_nan:1; unsigned int mantissa:22; #else unsigned int mantissa:22; unsigned int quiet_nan:1; unsigned int exponent:8; unsigned int negative:1; #endif } ieee_nan; }; // IEEE-754 double format union fpu_double_shape { fpu_double value; /* This is the IEEE 754 double-precision format. */ struct { #ifdef WORDS_BIGENDIAN unsigned int negative:1; unsigned int exponent:11; /* Together these comprise the mantissa. */ unsigned int mantissa0:20; unsigned int mantissa1:32; #else # if defined(HOST_FLOAT_WORDS_BIG_ENDIAN) && HOST_FLOAT_WORDS_BIG_ENDIAN unsigned int mantissa0:20; unsigned int exponent:11; unsigned int negative:1; unsigned int mantissa1:32; # else /* Together these comprise the mantissa. */ unsigned int mantissa1:32; unsigned int mantissa0:20; unsigned int exponent:11; unsigned int negative:1; # endif #endif } ieee; /* This format makes it easier to see if a NaN is a signalling NaN. */ struct { #ifdef WORDS_BIGENDIAN unsigned int negative:1; unsigned int exponent:11; unsigned int quiet_nan:1; /* Together these comprise the mantissa. */ unsigned int mantissa0:19; unsigned int mantissa1:32; #else # if defined(HOST_FLOAT_WORDS_BIG_ENDIAN) && HOST_FLOAT_WORDS_BIG_ENDIAN unsigned int mantissa0:19; unsigned int quiet_nan:1; unsigned int exponent:11; unsigned int negative:1; unsigned int mantissa1:32; # else /* Together these comprise the mantissa. */ unsigned int mantissa1:32; unsigned int mantissa0:19; unsigned int quiet_nan:1; unsigned int exponent:11; unsigned int negative:1; # endif #endif } ieee_nan; /* This format is used to extract the sign_exponent and mantissa parts only */ struct { #if defined(HOST_FLOAT_WORDS_BIG_ENDIAN) && HOST_FLOAT_WORDS_BIG_ENDIAN unsigned int msw:32; unsigned int lsw:32; #else unsigned int lsw:32; unsigned int msw:32; #endif } parts; }; #ifdef USE_LONG_DOUBLE // IEEE-854 long double format union fpu_extended_shape { fpu_extended value; /* This is the IEEE 854 double-extended-precision format. */ struct { #ifdef WORDS_BIGENDIAN unsigned int negative:1; unsigned int exponent:15; unsigned int empty:16; unsigned int mantissa0:32; unsigned int mantissa1:32; #else # if defined(HOST_FLOAT_WORDS_BIG_ENDIAN) && HOST_FLOAT_WORDS_BIG_ENDIAN unsigned int exponent:15; unsigned int negative:1; unsigned int empty:16; unsigned int mantissa0:32; unsigned int mantissa1:32; # else unsigned int mantissa1:32; unsigned int mantissa0:32; unsigned int exponent:15; unsigned int negative:1; unsigned int empty:16; # endif #endif } ieee; /* This is for NaNs in the IEEE 854 double-extended-precision format. */ struct { #ifdef WORDS_BIGENDIAN unsigned int negative:1; unsigned int exponent:15; unsigned int empty:16; unsigned int one:1; unsigned int quiet_nan:1; unsigned int mantissa0:30; unsigned int mantissa1:32; #else # if defined(HOST_FLOAT_WORDS_BIG_ENDIAN) && HOST_FLOAT_WORDS_BIG_ENDIAN unsigned int exponent:15; unsigned int negative:1; unsigned int empty:16; unsigned int mantissa0:30; unsigned int quiet_nan:1; unsigned int one:1; unsigned int mantissa1:32; # else unsigned int mantissa1:32; unsigned int mantissa0:30; unsigned int quiet_nan:1; unsigned int one:1; unsigned int exponent:15; unsigned int negative:1; unsigned int empty:16; # endif #endif } ieee_nan; /* This format is used to extract the sign_exponent and mantissa parts only */ struct { #if defined(HOST_FLOAT_WORDS_BIG_ENDIAN) && HOST_FLOAT_WORDS_BIG_ENDIAN unsigned int sign_exponent:16; unsigned int empty:16; unsigned int msw:32; unsigned int lsw:32; #else unsigned int lsw:32; unsigned int msw:32; unsigned int sign_exponent:16; unsigned int empty:16; #endif } parts; }; #endif #ifdef USE_QUAD_DOUBLE // IEEE-854 quad double format union fpu_extended_shape { fpu_extended value; /* This is the IEEE 854 quad-precision format. */ struct { #ifdef WORDS_BIGENDIAN unsigned int negative:1; unsigned int exponent:15; unsigned int mantissa0:16; unsigned int mantissa1:32; unsigned int mantissa2:32; unsigned int mantissa3:32; #else unsigned int mantissa3:32; unsigned int mantissa2:32; unsigned int mantissa1:32; unsigned int mantissa0:16; unsigned int exponent:15; unsigned int negative:1; #endif } ieee; /* This is for NaNs in the IEEE 854 quad-precision format. */ struct { #ifdef WORDS_BIGENDIAN unsigned int negative:1; unsigned int exponent:15; unsigned int quiet_nan:1; unsigned int mantissa0:15; unsigned int mantissa1:32; unsigned int mantissa2:32; unsigned int mantissa3:32; #else unsigned int mantissa3:32; unsigned int mantissa2:32; unsigned int mantissa1:32; unsigned int mantissa0:15; unsigned int quiet_nan:1; unsigned int exponent:15; unsigned int negative:1; #endif } ieee_nan; /* This format is used to extract the sign_exponent and mantissa parts only */ #if defined(HOST_FLOAT_WORDS_BIG_ENDIAN) && HOST_FLOAT_WORDS_BIG_ENDIAN struct { uae_u64 msw; uae_u64 lsw; } parts64; struct { uae_u32 w0; uae_u32 w1; uae_u32 w2; uae_u32 w3; } parts32; #else struct { uae_u64 lsw; uae_u64 msw; } parts64; struct { uae_u32 w3; uae_u32 w2; uae_u32 w1; uae_u32 w0; } parts32; #endif }; #endif // Declare a shape of the requested FP type #define fp_declare_init_shape(psvar, ftype) \ fpu_ ## ftype ## _shape psvar /* -------------------------------------------------------------------------- */ /* --- Extra Math Functions --- */ /* --- (most of them had to be defined before including ) --- */ /* -------------------------------------------------------------------------- */ #undef isnan #if 0 && defined(HAVE_ISNANL) # define isnan(x) isnanl((x)) #else # define isnan(x) fp_do_isnan((x)) #endif PRIVATE inline bool FFPU fp_do_isnan(fpu_register const & r) { #ifdef BRANCHES_ARE_EXPENSIVE #if !defined(USE_LONG_DOUBLE) fp_declare_init_shape(sxp, double); sxp.value = r; uae_s32 hx = sxp.parts.msw; uae_s32 lx = sxp.parts.lsw; hx &= 0x7fffffff; hx |= (uae_u32)(lx | (-lx)) >> 31; hx = 0x7ff00000 - hx; return (int)(((uae_u32)hx) >> 31); #elif defined(USE_QUAD_DOUBLE) fp_declare_init_shape(sxp, extended); sxp.value = r; uae_s64 hx = sxp.parts64.msw; uae_s64 lx = sxp.parts64.lsw; hx &= 0x7fffffffffffffffLL; hx |= (uae_u64)(lx | (-lx)) >> 63; hx = 0x7fff000000000000LL - hx; return (int)((uae_u64)hx >> 63); #else fp_declare_init_shape(sxp, extended); sxp.value = r; uae_s32 se = sxp.parts.sign_exponent; uae_s32 hx = sxp.parts.msw; uae_s32 lx = sxp.parts.lsw; se = (se & 0x7fff) << 1; lx |= hx & 0x7fffffff; se |= (uae_u32)(lx | (-lx)) >> 31; se = 0xfffe - se; return (int)(((uae_u32)(se)) >> 31); #endif #else #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fp_declare_init_shape(sxp, extended); sxp.value = r; return (sxp.ieee.exponent == FP_EXTENDED_EXP_MAX) #else fp_declare_init_shape(sxp, double); sxp.value = r; return (sxp.ieee.exponent == FP_DOUBLE_EXP_MAX) #endif && (sxp.ieee.mantissa0 & 0x7fffffff) != 0 && sxp.ieee.mantissa1 != 0 #ifdef USE_QUAD_DOUBLE && sxp.ieee.mantissa2 != 0 && sxp.ieee.mantissa3 != 0 #endif ; #endif } #undef isinf #if 0 && defined(HAVE_ISINFL) # define isinf(x) isinfl((x)) #else # define isinf(x) fp_do_isinf((x)) #endif PRIVATE inline bool FFPU fp_do_isinf(fpu_register const & r) { #ifdef BRANCHES_ARE_EXPENSIVE #if !defined(USE_LONG_DOUBLE) fp_declare_init_shape(sxp, double); sxp.value = r; uae_s32 hx = sxp.parts.msw; uae_s32 lx = sxp.parts.lsw; lx |= (hx & 0x7fffffff) ^ 0x7ff00000; lx |= -lx; return ~(lx >> 31) & (hx >> 30); #elif defined(USE_QUAD_DOUBLE) fp_declare_init_shape(sxp, extended); sxp.value = r; uae_s64 hx = sxp.parts64.msw; uae_s64 lx = sxp.parts64.lsw; lx |= (hx & 0x7fffffffffffffffLL) ^ 0x7fff000000000000LL; lx |= -lx; return ~(lx >> 63) & (hx >> 62); #else fp_declare_init_shape(sxp, extended); sxp.value = r; /* NOTE: This function should work for both m68k and native INFs. */ #if 0 uae_s32 se = sxp.parts.sign_exponent; uae_s32 hx = sxp.parts.msw; uae_s32 lx = sxp.parts.lsw; /* This additional ^ 0x80000000 is necessary because in Intel's internal representation of the implicit one is explicit. NOTE: anyway, this is equivalent to & 0x7fffffff in that case. */ #ifdef CPU_i386 lx |= (hx ^ 0x80000000) | ((se & 0x7fff) ^ 0x7fff); #else lx |= (hx & 0x7fffffff) | ((se & 0x7fff) ^ 0x7fff); #endif lx |= -lx; se &= 0x8000; return ~(lx >> 31) & (1 - (se >> 14)); #else return sxp.ieee.exponent == FP_EXTENDED_EXP_MAX && (sxp.ieee.mantissa0 & 0x7fffffff) == 0 && sxp.ieee.mantissa1 == 0; #endif #endif #else #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fp_declare_init_shape(sxp, extended); sxp.value = r; return (sxp.ieee_nan.exponent == FP_EXTENDED_EXP_MAX) #else fp_declare_init_shape(sxp, double); sxp.value = r; return (sxp.ieee_nan.exponent == FP_DOUBLE_EXP_MAX) #endif && (sxp.ieee.mantissa0 & 0x7fffffff) == 0 && sxp.ieee.mantissa1 == 0 #ifdef USE_QUAD_DOUBLE && sxp.ieee.mantissa2 == 0 && sxp.ieee.mantissa3 == 0 #endif ; #endif } #undef isneg #define isneg(x) fp_do_isneg((x)) PRIVATE inline bool FFPU fp_do_isneg(fpu_register const & r) { #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fp_declare_init_shape(sxp, extended); #else fp_declare_init_shape(sxp, double); #endif sxp.value = r; return sxp.ieee.negative; } #undef iszero #define iszero(x) fp_do_iszero((x)) PRIVATE inline bool FFPU fp_do_iszero(fpu_register const & r) { // TODO: BRANCHES_ARE_EXPENSIVE #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fp_declare_init_shape(sxp, extended); #else fp_declare_init_shape(sxp, double); #endif sxp.value = r; return (sxp.ieee.exponent == 0) && (sxp.ieee.mantissa0 == 0) && (sxp.ieee.mantissa1 == 0) #ifdef USE_QUAD_DOUBLE && (sxp.ieee.mantissa2 == 0) && (sxp.ieee.mantissa3 == 0) #endif ; } PRIVATE inline void FFPU get_dest_flags(fpu_register const & r) { fl_dest.negative = isneg(r); fl_dest.zero = iszero(r); fl_dest.infinity = isinf(r); fl_dest.nan = isnan(r); fl_dest.in_range = !fl_dest.zero && !fl_dest.infinity && !fl_dest.nan; } PRIVATE inline void FFPU get_source_flags(fpu_register const & r) { fl_source.negative = isneg(r); fl_source.zero = iszero(r); fl_source.infinity = isinf(r); fl_source.nan = isnan(r); fl_source.in_range = !fl_source.zero && !fl_source.infinity && !fl_source.nan; } PRIVATE inline void FFPU make_nan(fpu_register & r, bool negative) { #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fp_declare_init_shape(sxp, extended); sxp.ieee.exponent = FP_EXTENDED_EXP_MAX; sxp.ieee.empty = 0; sxp.ieee.mantissa0 = 0xffffffff; #else fp_declare_init_shape(sxp, double); sxp.ieee.exponent = FP_DOUBLE_EXP_MAX; sxp.ieee.mantissa0 = 0xfffff; #endif sxp.ieee.mantissa1 = 0xffffffff; #ifdef USE_QUAD_DOUBLE sxp.ieee.mantissa2 = 0xffffffff; sxp.ieee.mantissa3 = 0xffffffff; #endif sxp.ieee.negative = negative; r = sxp.value; } PRIVATE inline void FFPU make_zero(fpu_register & r, bool negative) { #if 1 r = negative ? -0.0 : +0.0; #else #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fp_declare_init_shape(sxp, extended); sxp.ieee.empty = 0; #else fp_declare_init_shape(sxp, double); #endif sxp.ieee.negative = negative; sxp.ieee.exponent = 0; sxp.ieee.mantissa0 = 0; sxp.ieee.mantissa1 = 0; #ifdef USE_QUAD_DOUBLE sxp.ieee.mantissa2 = 0; sxp.ieee.mantissa3 = 0; #endif r = sxp.value; #endif } PRIVATE inline void FFPU make_inf(fpu_register & r, bool negative) { #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fp_declare_init_shape(sxp, extended); sxp.ieee.exponent = FP_EXTENDED_EXP_MAX; sxp.ieee.mantissa0 = 0x80000000; sxp.ieee.empty = 0; #else fp_declare_init_shape(sxp, double); sxp.ieee.exponent = FP_DOUBLE_EXP_MAX; sxp.ieee.mantissa0 = 0; #endif sxp.ieee.negative = negative; sxp.ieee.mantissa1 = 0; #ifdef USE_QUAD_DOUBLE sxp.ieee.mantissa2 = 0; sxp.ieee.mantissa3 = 0; #endif r = sxp.value; } PRIVATE inline fpu_register FFPU fast_fgetexp(fpu_register const & r) { #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fp_declare_init_shape(sxp, extended); sxp.value = r; return ((int) sxp.ieee.exponent - FP_EXTENDED_EXP_BIAS); #else fp_declare_init_shape(sxp, double); sxp.value = r; return ((int) sxp.ieee.exponent - FP_DOUBLE_EXP_BIAS); #endif } // Normalize to range 1..2 PRIVATE inline void FFPU fast_remove_exponent(fpu_register & r) { #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fp_declare_init_shape(sxp, extended); sxp.value = r; sxp.ieee.exponent = FP_EXTENDED_EXP_BIAS; #else fp_declare_init_shape(sxp, double); sxp.value = r; sxp.ieee.exponent = FP_DOUBLE_EXP_BIAS; #endif r = sxp.value; } // The sign of the quotient is the exclusive-OR of the sign bits // of the source and destination operands. PRIVATE inline uae_u32 FFPU get_quotient_sign(fpu_register const & ra, fpu_register const & rb) { #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fp_declare_init_shape(sap, extended); fp_declare_init_shape(sbp, extended); #else fp_declare_init_shape(sap, double); fp_declare_init_shape(sbp, double); #endif sap.value = ra; sbp.value = rb; return ((sap.ieee.negative ^ sbp.ieee.negative) ? FPSR_QUOTIENT_SIGN : 0); } /* -------------------------------------------------------------------------- */ /* --- Math functions --- */ /* -------------------------------------------------------------------------- */ #if defined(FPU_USE_ISO_C99) && (defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE)) # ifdef HAVE_LOGL # define fp_log logl # endif # ifdef HAVE_LOG1PL # define fp_log1p log1pl # endif # ifdef HAVE_EXPM1L # define fp_expm1 expm1l # endif # ifdef HAVE_LOG10L # define fp_log10 log10l # endif # ifdef HAVE_LOG2L # define fp_log2 log2l # endif # ifdef HAVE_EXPL # define fp_exp expl # endif # ifdef HAVE_POWL # define fp_pow powl # endif # if defined(HAVE_EXP10L) # define fp_pow10 exp10l # elif defined(HAVE_POW10L) # define fp_pow10 pow10l # else # define fp_pow10(x) fp_pow(LD(10.0), x) # endif # if defined(HAVE_EXP2L) # define fp_pow2 exp2l # elif defined(HAVE_POW2L) # define fp_pow2 pow2l # else # define fp_pow2(x) fp_pow(LD(2.0), x) # endif # ifdef HAVE_FABSL # define fp_fabs fabsl # endif # ifdef HAVE_SQRTL # define fp_sqrt sqrtl # endif # ifdef HAVE_SINL # define fp_sin sinl # endif # ifdef HAVE_COSL # define fp_cos cosl # endif # ifdef HAVE_TANL # define fp_tan tanl # endif # ifdef HAVE_SINHL # define fp_sinh sinhl # endif # ifdef HAVE_COSHL # define fp_cosh coshl # endif # ifdef HAVE_TANHL # define fp_tanh tanhl # endif # ifdef HAVE_ASINL # define fp_asin asinl # endif # ifdef HAVE_ACOSL # define fp_acos acosl # endif # ifdef HAVE_ATANL # define fp_atan atanl # endif # ifdef HAVE_ASINHL # define fp_asinh asinhl # endif # ifdef HAVE_ACOSHL # define fp_acosh acoshl # endif # ifdef HAVE_ATANHL # define fp_atanh atanhl # endif # ifdef HAVE_FLOORL # define fp_floor floorl # endif # ifdef HAVE_CEILL # define fp_ceil ceill # endif #endif #ifndef fp_log # define fp_log log #endif #ifndef fp_log1p # define fp_log1p log1p #endif #ifndef fp_expm1 # define fp_expm1 expm1 #endif #ifndef fp_log10 # define fp_log10 log10 #endif #ifndef fp_log2 # define fp_log2 log2 #endif #ifndef fp_exp # define fp_exp exp #endif #ifndef fp_pow # define fp_pow pow #endif #ifndef fp_pow10 # define fp_pow10 pow10 #endif #ifndef fp_pow2 # ifdef HAVE_POW2 # define fp_pow2 pow2 # else # define fp_pow2 exp2 # endif #endif #ifndef fp_fabs # define fp_fabs fabs #endif #ifndef fp_sqrt # define fp_sqrt sqrt #endif #ifndef fp_sin # define fp_sin sin #endif #ifndef fp_cos # define fp_cos cos #endif #ifndef fp_tan # define fp_tan tan #endif #ifndef fp_sinh # define fp_sinh sinh #endif #ifndef fp_cosh # define fp_cosh cosh #endif #ifndef fp_tanh # define fp_tanh tanh #endif #ifndef fp_asin # define fp_asin asin #endif #ifndef fp_acos # define fp_acos acos #endif #ifndef fp_atan # define fp_atan atan #endif #ifndef fp_asinh # define fp_asinh asinh #endif #ifndef fp_acosh # define fp_acosh acosh #endif #ifndef fp_atanh # define fp_atanh atanh #endif #ifndef fp_floor # define fp_floor floor #endif #ifndef fp_ceil # define fp_ceil ceil #endif #if defined(FPU_IEEE) && defined(USE_X87_ASSEMBLY) // Assembly optimized support functions. Taken from glibc 2.2.2 #undef fp_log #define fp_log fp_do_log PRIVATE inline fpu_extended fp_do_log(fpu_extended x) { fpu_extended value; __asm__ __volatile__("fldln2; fxch; fyl2x" : "=t" (value) : "0" (x) : "st(1)"); return value; } #undef fp_log10 #define fp_log10 fp_do_log10 PRIVATE inline fpu_extended fp_do_log10(fpu_extended x) { fpu_extended value; __asm__ __volatile__("fldlg2; fxch; fyl2x" : "=t" (value) : "0" (x) : "st(1)"); return value; } #if !defined(HAVE_EXPL) #undef fp_exp #define fp_exp fp_do_exp PRIVATE inline fpu_extended fp_do_exp(fpu_extended x) { fpu_extended value, exponent; if (isinf(x)) { if(isneg(x)) return 0.; else return x; } __asm__ __volatile__("fldl2e # e^x = 2^(x * log2(e))\n\t" "fmul %%st(1) # x * log2(e)\n\t" "fst %%st(1)\n\t" "frndint # int(x * log2(e))\n\t" "fxch\n\t" "fsub %%st(1) # fract(x * log2(e))\n\t" "f2xm1 # 2^(fract(x * log2(e))) - 1\n\t" : "=t" (value), "=u" (exponent) : "0" (x)); value += 1.0; __asm__ __volatile__("fscale" : "=t" (value) : "0" (value), "u" (exponent)); return value; } #endif #if !defined(HAVE_EXP10L) && !defined(HAVE_POW10L) #undef fp_pow #define fp_pow fp_do_pow PRIVATE fpu_extended fp_do_pow(fpu_extended x, fpu_extended y); #endif #undef fp_fabs #define fp_fabs fp_do_fabs PRIVATE inline fpu_extended fp_do_fabs(fpu_extended x) { fpu_extended value; __asm__ __volatile__("fabs" : "=t" (value) : "0" (x)); return value; } #undef fp_sqrt #define fp_sqrt fp_do_sqrt PRIVATE inline fpu_extended fp_do_sqrt(fpu_extended x) { fpu_extended value; __asm__ __volatile__("fsqrt" : "=t" (value) : "0" (x)); return value; } #ifndef ACCURATE_SIN_COS_TAN #undef fp_sin #define fp_sin fp_do_sin PRIVATE inline fpu_extended fp_do_sin(fpu_extended x) { fpu_extended value; __asm__ __volatile__("fsin" : "=t" (value) : "0" (x)); return value; } #undef fp_cos #define fp_cos fp_do_cos PRIVATE inline fpu_extended fp_do_cos(fpu_extended x) { fpu_extended value; __asm__ __volatile__("fcos" : "=t" (value) : "0" (x)); return value; } #undef fp_tan #define fp_tan fp_do_tan PRIVATE inline fpu_extended fp_do_tan(fpu_extended x) { fpu_extended value, value2; __asm__ __volatile__("fptan" : "=t" (value2), "=u" (value) : "0" (x)); return value; } #endif /* ACCURATE_SIN_COS_TAN */ #ifndef HAVE_EXPM1L #undef fp_expm1 #define fp_expm1 fp_do_expm1 // Returns: exp(X) - 1.0 PRIVATE inline fpu_extended fp_do_expm1(fpu_extended x) { fpu_extended value, exponent, temp, temp2; if (isinf(x)) { if(isneg(x)) return -1.; else return x; } __asm__ __volatile__("fldl2e # e^x - 1 = 2^(x * log2(e)) - 1\n\t" "fmul %%st(1) # x * log2(e)\n\t" "fst %%st(1)\n\t" "frndint # int(x * log2(e))\n\t" "fxch\n\t" "fsub %%st(1) # fract(x * log2(e))\n\t" "f2xm1 # 2^(fract(x * log2(e))) - 1\n\t" "fscale # 2^(x * log2(e)) - 2^(int(x * log2(e)))\n\t" : "=t" (value), "=u" (exponent) : "0" (x)); __asm__ __volatile__("fld1 \n\t" "fscale \n\t" : "=t" (temp), "=u" (temp2) : "0" (exponent)); temp -= 1.0; return temp + value ? temp + value : x; } #endif #undef fp_sgn1 #define fp_sgn1 fp_do_sgn1 PRIVATE inline fpu_extended fp_do_sgn1(fpu_extended x) { #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fp_declare_init_shape(sxp, extended); sxp.value = x; sxp.ieee_nan.exponent = FP_EXTENDED_EXP_MAX>>1; sxp.ieee_nan.one = 1; #else fp_declare_init_shape(sxp, double); sxp.value = x; sxp.ieee_nan.exponent = FP_DOUBLE_EXP_MAX>>1; #endif sxp.ieee_nan.quiet_nan = 0; sxp.ieee_nan.mantissa0 = 0; sxp.ieee_nan.mantissa1 = 0; x = sxp.value; return x; } #ifndef HAVE_SINHL #undef fp_sinh #define fp_sinh fp_do_sinh PRIVATE inline fpu_extended fp_do_sinh(fpu_extended x) { if (isinf(x)) return x; fpu_extended exm1 = fp_expm1(fp_fabs(x)); return 0.5 * (exm1 / (exm1 + 1.0) + exm1) * fp_sgn1(x); } #endif #ifndef HAVE_COSHL #undef fp_cosh #define fp_cosh fp_do_cosh PRIVATE inline fpu_extended fp_do_cosh(fpu_extended x) { fpu_extended ex = fp_exp(x); return 0.5 * (ex + 1.0 / ex); } #endif #ifndef HAVE_TANHL #undef fp_tanh #define fp_tanh fp_do_tanh PRIVATE inline fpu_extended fp_do_tanh(fpu_extended x) { fpu_extended exm1 = fp_expm1(-fp_fabs(x + x)); return exm1 / (exm1 + 2.0) * fp_sgn1(-x); } #endif #undef fp_atan2 #define fp_atan2 fp_do_atan2 PRIVATE inline fpu_extended fp_do_atan2(fpu_extended y, fpu_extended x) { fpu_extended value; __asm__ __volatile__("fpatan" : "=t" (value) : "0" (x), "u" (y) : "st(1)"); return value; } #ifndef HAVE_ASINL #undef fp_asin #define fp_asin fp_do_asin PRIVATE inline fpu_extended fp_do_asin(fpu_extended x) { return fp_atan2(x, fp_sqrt(1.0 - x * x)); } #endif #ifndef HAVE_ACOSL #undef fp_acos #define fp_acos fp_do_acos PRIVATE inline fpu_extended fp_do_acos(fpu_extended x) { return fp_atan2(fp_sqrt(1.0 - x * x), x); } #endif #undef fp_atan #define fp_atan fp_do_atan PRIVATE inline fpu_extended fp_do_atan(fpu_extended x) { fpu_extended value; __asm__ __volatile__("fld1; fpatan" : "=t" (value) : "0" (x) : "st(1)"); return value; } #ifndef HAVE_LOG1PL #undef fp_log1p #define fp_log1p fp_do_log1p // Returns: ln(1.0 + X) PRIVATE fpu_extended fp_do_log1p(fpu_extended x); #endif #ifndef HAVE_ASINHL #undef fp_asinh #define fp_asinh fp_do_asinh PRIVATE inline fpu_extended fp_do_asinh(fpu_extended x) { fpu_extended y = fp_fabs(x); return (fp_log1p(y * y / (fp_sqrt(y * y + 1.0) + 1.0) + y) * fp_sgn1(x)); } #endif #ifndef HAVE_ACOSHL #undef fp_acosh #define fp_acosh fp_do_acosh PRIVATE inline fpu_extended fp_do_acosh(fpu_extended x) { return fp_log(x + fp_sqrt(x - 1.0) * fp_sqrt(x + 1.0)); } #endif #ifndef HAVE_ATANHL #undef fp_atanh #define fp_atanh fp_do_atanh PRIVATE inline fpu_extended fp_do_atanh(fpu_extended x) { fpu_extended y = fp_fabs(x); return -0.5 * fp_log1p(-(y + y) / (1.0 + y)) * fp_sgn1(x); } #endif /* * LLVM 2.9 crashes on first definition, * clang with LLVM 3.x crashes on 2nd definition... sigh */ #if defined(__clang__) || !defined(__llvm__) #define DEFINE_ROUND_FUNC(rounding_mode_str, rounding_mode) \ PRIVATE inline fpu_extended fp_do_round_to_ ## rounding_mode_str(fpu_extended __x) \ { \ register long double __value; \ register int __ignore; \ volatile unsigned short __cw; \ volatile unsigned short __cwtmp; \ __asm __volatile ("fnstcw %3\n\t" \ "movzwl %3, %1\n\t" \ "andl $0xf3ff, %1\n\t" \ "orl %5, %1\n\t" \ "movw %w1, %2\n\t" \ "fldcw %2\n\t" \ "frndint\n\t" \ "fldcw %3" \ : "=t" (__value), "=&q" (__ignore), "=m" (__cwtmp), \ "=m" (__cw) \ : "0" (__x), "i"(rounding_mode)); \ return __value; \ } #else #define DEFINE_ROUND_FUNC(rounding_mode_str, rounding_mode) \ PRIVATE inline fpu_extended fp_do_round_to_ ## rounding_mode_str(fpu_extended x) \ { \ volatile unsigned short cw; \ __asm__ __volatile__("fnstcw %0" : "=m" (cw)); \ volatile unsigned short cw_temp = (cw & 0xf3ff) | (rounding_mode); \ __asm__ __volatile__("fldcw %0" : : "m" (cw_temp)); \ fpu_extended value; \ __asm__ __volatile__("frndint" : "=t" (value) : "0" (x)); \ __asm__ __volatile__("fldcw %0" : : "m" (cw)); \ return value; \ } #endif #undef fp_round_to_minus_infinity #ifdef HAVE_FLOORL #define fp_round_to_minus_infinity floorl #else #define fp_round_to_minus_infinity fp_do_round_to_minus_infinity DEFINE_ROUND_FUNC(minus_infinity, CW_RC_DOWN) #endif #undef fp_round_to_plus_infinity #ifdef HAVE_CEILL #define fp_round_to_plus_infinity ceill #else #define fp_round_to_plus_infinity fp_do_round_to_plus_infinity DEFINE_ROUND_FUNC(plus_infinity, CW_RC_UP) #endif #undef fp_round_to_zero #ifdef HAVE_TRUNCL #define fp_round_to_zero truncl #else #define fp_round_to_zero fp_do_round_to_zero DEFINE_ROUND_FUNC(zero, CW_RC_ZERO) #endif #undef fp_round_to_nearest #ifdef HAVE_ROUNDL #define fp_round_to_nearest roundl #else #define fp_round_to_nearest fp_do_round_to_nearest DEFINE_ROUND_FUNC(nearest, CW_RC_NEAR) #endif #undef fp_ceil #define fp_ceil fp_do_round_to_plus_infinity #undef fp_floor #define fp_floor fp_do_round_to_minus_infinity #endif /* USE_X87_ASSEMBLY */ #ifndef fp_round_to_minus_infinity #define fp_round_to_minus_infinity(x) fp_floor(x) #endif #ifndef fp_round_to_plus_infinity #define fp_round_to_plus_infinity(x) fp_ceil(x) #endif #ifndef fp_round_to_zero #define fp_round_to_zero(x) ((int)(x)) #endif #ifndef fp_round_to_nearest #define fp_round_to_nearest(x) ((int)((x) + 0.5)) #endif #endif /* FPU_MATHLIB_H */ aranym-1.1.0/src/uae_cpu/fpu/mathlib.cpp0000664000175000017500000000603313454637622016332 0ustar joyjoy/* * fpu/mathlib.cpp - Floating-point math support library * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* NOTE: this file shall be included only from fpu/fpu_*.cpp */ #undef PRIVATE #define PRIVATE static #undef PUBLIC #define PUBLIC /**/ #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. #if defined(FPU_IEEE) && defined(USE_X87_ASSEMBLY) #if !defined(HAVE_EXP10L) && !defined(HAVE_POW10L) PRIVATE fpu_extended fp_do_pow(fpu_extended x, fpu_extended y) { fpu_extended value, exponent; uae_s64 p = (uae_s64)y; if (x == 0.0) { if (y > 0.0) return (y == (double) p && (p & 1) != 0 ? x : 0.0); else if (y < 0.0) return (y == (double) p && (-p & 1) != 0 ? 1.0 / x : 1.0 / fp_fabs (x)); } if (y == (double) p) { fpu_extended r = 1.0; if (p == 0) return 1.0; if (p < 0) { p = -p; x = 1.0 / x; } while (1) { if (p & 1) r *= x; p >>= 1; if (p == 0) return r; x *= x; } } __asm__ __volatile__("fyl2x" : "=t" (value) : "0" (x), "u" (1.0) : "st(1)"); __asm__ __volatile__("fmul %%st(1) # y * log2(x)\n\t" "fst %%st(1)\n\t" "frndint # int(y * log2(x))\n\t" "fxch\n\t" "fsub %%st(1) # fract(y * log2(x))\n\t" "f2xm1 # 2^(fract(y * log2(x))) - 1\n\t" : "=t" (value), "=u" (exponent) : "0" (y), "1" (value)); value += 1.0; __asm__ __volatile__("fscale" : "=t" (value) : "0" (value), "u" (exponent)); return value; } #endif #ifndef HAVE_LOG1PL PRIVATE fpu_extended fp_do_log1p(fpu_extended x) { // TODO: handle NaN and +inf/-inf fpu_extended value; // The fyl2xp1 can only be used for values in // -1 + sqrt(2) / 2 <= x <= 1 - sqrt(2) / 2 // 0.29 is a safe value. if (fp_fabs(x) <= 0.29) __asm__ __volatile__("fldln2; fxch; fyl2xp1" : "=t" (value) : "0" (x)); else __asm__ __volatile__("fldln2; fxch; fyl2x" : "=t" (value) : "0" (x + 1.0)); return value; } #endif #endif aranym-1.1.0/src/uae_cpu/fpu/impl.h0000664000175000017500000001272513454637622015325 0ustar joyjoy/* * fpu/impl.h - extra functions and inline implementations * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef FPU_IMPL_H #define FPU_IMPL_H /* NOTE: this file shall be included from fpu/core.h */ #undef PUBLIC #define PUBLIC /**/ #undef PRIVATE #define PRIVATE /**/ #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. /* -------------------------------------------------------------------------- */ /* --- X86 assembly fpu specific methods --- */ /* -------------------------------------------------------------------------- */ #ifdef FPU_X86 /* Return the floating-point status register in m68k format */ static inline uae_u32 FFPU get_fpsr(void) { return to_m68k_fpcond[(x86_status_word & 0x4700) >> 8] | FPU fpsr.quotient | exception_host2mac[x86_status_word & (SW_FAKE_BSUN|SW_PE|SW_UE|SW_OE|SW_ZE|SW_DE|SW_IE)] | accrued_exception_host2mac[x86_status_word_accrued & (SW_PE|SW_UE|SW_OE|SW_ZE|SW_DE|SW_IE)] ; } /* Set the floating-point status register from an m68k format */ static inline void FFPU set_fpsr(uae_u32 new_fpsr) { x86_status_word = to_host_fpcond[(new_fpsr & FPSR_CCB) >> 24 ] | exception_mac2host[(new_fpsr & FPSR_EXCEPTION_STATUS) >> 8]; x86_status_word_accrued = accrued_exception_mac2host[(new_fpsr & FPSR_ACCRUED_EXCEPTION) >> 3]; } #endif /* -------------------------------------------------------------------------- */ /* --- Original UAE and IEEE FPU core methods --- */ /* -------------------------------------------------------------------------- */ #ifndef FPU_X86 /* Return the floating-point status register in m68k format */ static inline uae_u32 FFPU get_fpsr(void) { uae_u32 condition_codes = get_fpccr(); uae_u32 exception_status = get_exception_status(); uae_u32 accrued_exception = get_accrued_exception(); uae_u32 quotient = FPU fpsr.quotient; return (condition_codes | quotient | exception_status | accrued_exception); } /* Set the floating-point status register from an m68k format */ static inline void FFPU set_fpsr(uae_u32 new_fpsr) { set_fpccr ( new_fpsr & FPSR_CCB ); set_exception_status ( new_fpsr & FPSR_EXCEPTION_STATUS ); set_accrued_exception ( new_fpsr & FPSR_ACCRUED_EXCEPTION ); FPU fpsr.quotient = new_fpsr & FPSR_QUOTIENT; } #endif /* -------------------------------------------------------------------------- */ /* --- Common routines for control word --- */ /* -------------------------------------------------------------------------- */ /* Return the floating-point control register in m68k format */ static inline uae_u32 FFPU get_fpcr(void) { // according to the manual, the msb bits are always zero. // According to Toni Wilen, on '040 the least // significant 4 bits are not masked out return FPU fpcr & (CPUType == 4 ? 0xffff : 0xfff0); } /* Set the floating-point control register from an m68k format */ static inline void FFPU set_fpcr(uae_u32 new_fpcr) { FPU fpcr = new_fpcr; set_rounding_precision ( new_fpcr & FPCR_ROUNDING_PRECISION); set_rounding_mode ( new_fpcr & FPCR_ROUNDING_MODE ); set_host_control_word(); } /* -------------------------------------------------------------------------- */ /* --- Specific part to X86 assembly FPU --- */ /* -------------------------------------------------------------------------- */ #ifdef FPU_X86 /* Retrieve a floating-point register value and convert it to double precision */ static inline double FFPU fpu_get_register(int r) { /* only used for debug output; no need for any fancy asm here */ return FPU registers[r]; } #endif /* -------------------------------------------------------------------------- */ /* --- Specific to original UAE or new IEEE-based FPU core --- */ /* -------------------------------------------------------------------------- */ #if defined(FPU_UAE) || defined(FPU_IEEE) /* Retrieve a floating-point register value and convert it to double precision */ static inline double FFPU fpu_get_register(int r) { return FPU registers[r]; } #endif #endif /* FPU_IMPL_H */ aranym-1.1.0/src/uae_cpu/fpu/fpu_x86_asm.h0000664000175000017500000000754113454637622016523 0ustar joyjoy/* * fpu/fpu_x86_asm.h - Extra Definitions for the X86 assembly FPU core * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #define DEFINE_X86_MACRO(name, value) \ asm(".local " #name "\n\t" #name " = " #value) DEFINE_X86_MACRO(BSUN, 0x00008000); DEFINE_X86_MACRO(SNAN, 0x00004000); DEFINE_X86_MACRO(OPERR, 0x00002000); DEFINE_X86_MACRO(OVFL, 0x00001000); DEFINE_X86_MACRO(UNFL, 0x00000800); DEFINE_X86_MACRO(DZ, 0x00000400); DEFINE_X86_MACRO(INEX2, 0x00000200); DEFINE_X86_MACRO(INEX1, 0x00000100); DEFINE_X86_MACRO(ACCR_IOP, 0x80); DEFINE_X86_MACRO(ACCR_OVFL, 0x40); DEFINE_X86_MACRO(ACCR_UNFL, 0x20); DEFINE_X86_MACRO(ACCR_DZ, 0x10); DEFINE_X86_MACRO(ACCR_INEX, 0x08); DEFINE_X86_MACRO(ROUND_CONTROL_MASK, 0x30); DEFINE_X86_MACRO(ROUND_TO_NEAREST, 0); DEFINE_X86_MACRO(ROUND_TO_ZERO, 0x10); DEFINE_X86_MACRO(ROUND_TO_NEGATIVE_INFINITY, 0x20); DEFINE_X86_MACRO(ROUND_TO_POSITIVE_INFINITY, 0x30); DEFINE_X86_MACRO(PRECISION_CONTROL_MASK, 0xC0); DEFINE_X86_MACRO(PRECISION_CONTROL_EXTENDED, 0); DEFINE_X86_MACRO(PRECISION_CONTROL_DOUBLE, 0x80); DEFINE_X86_MACRO(PRECISION_CONTROL_SINGLE, 0x40); DEFINE_X86_MACRO(PRECISION_CONTROL_UNDEFINED, 0xC0); DEFINE_X86_MACRO(CW_RESET, 0x0040); DEFINE_X86_MACRO(CW_FINIT, 0x037F); DEFINE_X86_MACRO(SW_RESET, 0x0000); DEFINE_X86_MACRO(SW_FINIT, 0x0000); DEFINE_X86_MACRO(TW_RESET, 0x5555); DEFINE_X86_MACRO(TW_FINIT, 0x0FFF); DEFINE_X86_MACRO(CW_X, 0x1000); DEFINE_X86_MACRO(CW_RC_ZERO, 0x0C00); DEFINE_X86_MACRO(CW_RC_UP, 0x0800); DEFINE_X86_MACRO(CW_RC_DOWN, 0x0400); DEFINE_X86_MACRO(CW_RC_NEAR, 0x0000); DEFINE_X86_MACRO(CW_PC_EXTENDED, 0x0300); DEFINE_X86_MACRO(CW_PC_DOUBLE, 0x0200); DEFINE_X86_MACRO(CW_PC_RESERVED, 0x0100); DEFINE_X86_MACRO(CW_PC_SINGLE, 0x0000); DEFINE_X86_MACRO(CW_PM, 0x0020); DEFINE_X86_MACRO(CW_UM, 0x0010); DEFINE_X86_MACRO(CW_OM, 0x0008); DEFINE_X86_MACRO(CW_ZM, 0x0004); DEFINE_X86_MACRO(CW_DM, 0x0002); DEFINE_X86_MACRO(CW_IM, 0x0001); DEFINE_X86_MACRO(SW_B, 0x8000); DEFINE_X86_MACRO(SW_C3, 0x4000); DEFINE_X86_MACRO(SW_TOP_7, 0x3800); DEFINE_X86_MACRO(SW_TOP_6, 0x3000); DEFINE_X86_MACRO(SW_TOP_5, 0x2800); DEFINE_X86_MACRO(SW_TOP_4, 0x2000); DEFINE_X86_MACRO(SW_TOP_3, 0x1800); DEFINE_X86_MACRO(SW_TOP_2, 0x1000); DEFINE_X86_MACRO(SW_TOP_1, 0x0800); DEFINE_X86_MACRO(SW_TOP_0, 0x0000); DEFINE_X86_MACRO(SW_C2, 0x0400); DEFINE_X86_MACRO(SW_C1, 0x0200); DEFINE_X86_MACRO(SW_C0, 0x0100); DEFINE_X86_MACRO(SW_ES, 0x0080); DEFINE_X86_MACRO(SW_SF, 0x0040); DEFINE_X86_MACRO(SW_PE, 0x0020); DEFINE_X86_MACRO(SW_UE, 0x0010); DEFINE_X86_MACRO(SW_OE, 0x0008); DEFINE_X86_MACRO(SW_ZE, 0x0004); DEFINE_X86_MACRO(SW_DE, 0x0002); DEFINE_X86_MACRO(SW_IE, 0x0001); DEFINE_X86_MACRO(X86_ROUNDING_MODE, 0x0C00); DEFINE_X86_MACRO(X86_ROUNDING_PRECISION, 0x0300); #undef DEFINE_X86_MACRO aranym-1.1.0/src/uae_cpu/fpu/fpu_x86.h0000664000175000017500000006400613454637622015662 0ustar joyjoy/* * fpu/fpu_x86.h - Extra Definitions for the X86 assembly FPU core * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef FPU_X86_H #define FPU_X86_H /* NOTE: this file shall be included from fpu/fpu_x86.cpp */ #undef PUBLIC #define PUBLIC extern #undef PRIVATE #define PRIVATE static #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. // Status word PRIVATE uae_u32 x86_status_word; PRIVATE uae_u32 x86_status_word_accrued; // FPU jump table typedef void REGPARAM2 ( *fpuop_func )( uae_u32, uae_u32 ); PRIVATE fpuop_func fpufunctbl[65536]; // FPU consistency PRIVATE uae_u32 checked_sw_atstart; // FMOVECR constants supported byt x86 FPU PRIVATE fpu_register const_pi; PRIVATE fpu_register const_lg2; PRIVATE fpu_register const_l2e; PRIVATE fpu_register const_z; PRIVATE fpu_register const_ln2; PRIVATE fpu_register const_1; // FMOVECR constants not not suported by x86 FPU PRIVATE fpu_register const_e; PRIVATE fpu_register const_log_10_e; PRIVATE fpu_register const_ln_10; PRIVATE fpu_register const_1e1; PRIVATE fpu_register const_1e2; PRIVATE fpu_register const_1e4; PRIVATE fpu_register const_1e8; PRIVATE fpu_register const_1e16; PRIVATE fpu_register const_1e32; PRIVATE fpu_register const_1e64; PRIVATE fpu_register const_1e128; PRIVATE fpu_register const_1e256; PRIVATE fpu_register const_1e512; PRIVATE fpu_register const_1e1024; PRIVATE fpu_register const_1e2048; PRIVATE fpu_register const_1e4096; // Saved host FPU state PRIVATE uae_u8 m_fpu_state_original[108]; // 90/94/108 /* -------------------------------------------------------------------------- */ /* --- Methods --- */ /* -------------------------------------------------------------------------- */ // Debug support functions PRIVATE void FFPU dump_first_bytes_buf(char *b, uae_u8* buf, uae_s32 actual); PRIVATE char * FFPU etos(fpu_register const & e) REGPARAM; // FPU consistency PRIVATE void FFPU FPU_CONSISTENCY_CHECK_START(void); PRIVATE void FFPU FPU_CONSISTENCY_CHECK_STOP(const char *name); // Get special floating-point value class PRIVATE inline uae_u32 FFPU IS_INFINITY (fpu_register const & f); PRIVATE inline uae_u32 FFPU IS_NAN (fpu_register const & f); PRIVATE inline uae_u32 FFPU IS_ZERO (fpu_register const & f); PRIVATE inline uae_u32 FFPU IS_NEGATIVE (fpu_register const & f); // Make a special floating-point value PRIVATE inline void FFPU MAKE_NAN (fpu_register & f, bool negative); PRIVATE inline void FFPU MAKE_INF_POSITIVE (fpu_register & f); PRIVATE inline void FFPU MAKE_INF_NEGATIVE (fpu_register & f); PRIVATE inline void FFPU MAKE_ZERO_POSITIVE (fpu_register & f); PRIVATE inline void FFPU MAKE_ZERO_NEGATIVE (fpu_register & f); // Conversion from extended floating-point values PRIVATE uae_s32 FFPU extended_to_signed_32 ( fpu_register const & f ) REGPARAM; PRIVATE uae_s16 FFPU extended_to_signed_16 ( fpu_register const & f ) REGPARAM; PRIVATE uae_s8 FFPU extended_to_signed_8 ( fpu_register const & f ) REGPARAM; PRIVATE fpu_double FFPU extended_to_double( fpu_register const & f ) REGPARAM; PRIVATE uae_u32 FFPU from_single ( fpu_register const & f ) REGPARAM; PRIVATE void FFPU from_exten ( fpu_register const & f, uae_u32 *wrd1, uae_u32 *wrd2, uae_u32 *wrd3 ) REGPARAM; PRIVATE void FFPU from_double ( fpu_register const & f, uae_u32 *wrd1, uae_u32 *wrd2 ) REGPARAM; PRIVATE void FFPU from_pack (fpu_double src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3) REGPARAM; // Conversion to extended floating-point values PRIVATE void FFPU signed_to_extended ( uae_s32 x, fpu_register & f ) REGPARAM; PRIVATE void FFPU double_to_extended ( double x, fpu_register & f ) REGPARAM; PRIVATE void FFPU to_single ( uae_u32 src, fpu_register & f ) REGPARAM; PRIVATE void FFPU to_exten_no_normalize ( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3, fpu_register & f ) REGPARAM; PRIVATE void FFPU to_exten ( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3, fpu_register & f ) REGPARAM; PRIVATE void FFPU to_double ( uae_u32 wrd1, uae_u32 wrd2, fpu_register & f ) REGPARAM; PRIVATE fpu_double FFPU to_pack(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3) REGPARAM; // Atomic floating-point arithmetic operations PRIVATE void FFPU do_fmove ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fmove_no_status ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fint ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fintrz ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fsqrt ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_ftst ( fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fsinh ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_flognp1 ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fetoxm1 ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_ftanh ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fatan ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fasin ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fatanh ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fetox ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_ftwotox ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_ftentox ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_flogn ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_flog10 ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_flog2 ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_facos ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fcosh ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fsin ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_ftan ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fabs ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fneg ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fcos ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fgetexp ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fgetman ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fdiv ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fmod ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_frem ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fmod_dont_set_cw ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_frem_dont_set_cw ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fadd ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fmul ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fsgldiv ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fscale ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fsglmul ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fsub ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fsincos ( fpu_register & dest_sin, fpu_register & dest_cos, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fcmp ( fpu_register & dest, fpu_register const & src ) REGPARAM; PRIVATE void FFPU do_fldpi ( fpu_register & dest ) REGPARAM; PRIVATE void FFPU do_fldlg2 ( fpu_register & dest ) REGPARAM; PRIVATE void FFPU do_fldl2e ( fpu_register & dest ) REGPARAM; PRIVATE void FFPU do_fldz ( fpu_register & dest ) REGPARAM; PRIVATE void FFPU do_fldln2 ( fpu_register & dest ) REGPARAM; PRIVATE void FFPU do_fld1 ( fpu_register & dest ) REGPARAM; // Instructions handlers PRIVATE void REGPARAM2 FFPU fpuop_illg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmove_2_ea( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Dreg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Dreg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Dreg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Dreg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Dreg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Dreg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Dreg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Dreg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_none( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpiar( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpsr( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpsr_fpiar( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpcr( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpcr_fpiar( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpcr_fpsr( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpcr_fpsr_fpiar( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Areg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Areg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Areg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Areg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Areg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Areg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Areg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Areg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_none( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpiar( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpsr( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpsr_fpiar( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpcr( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpcr_fpiar( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpcr_fpsr( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpcr_fpsr_fpiar( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_none_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpiar_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_fpiar_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpiar_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_fpiar_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_none_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpiar_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_fpiar_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpiar_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_fpiar_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_none_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_pred_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_pred_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_pred( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_pred_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_pred_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_pred( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_postinc_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_postinc_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_postinc( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_postinc_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_postinc_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_postinc( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_pred_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_pred_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_pred( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_pred_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_pred_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_pred( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_postinc_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_postinc_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_postinc( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_postinc_postincrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_postinc_predecrement( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_postinc( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fldpi( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fldlg2( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_e( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fldl2e( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_log_10_e( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fldz( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fldln2( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_ln_10( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fld1( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e1( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e2( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e4( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e8( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e16( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e32( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e64( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e128( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e256( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e512( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e1024( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e2048( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e4096( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fmove( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fint( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fsinh( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fintrz( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fsqrt( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_flognp1( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fetoxm1( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_ftanh( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fatan( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fasin( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fatanh( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fsin( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_ftan( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fetox( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_ftwotox( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_ftentox( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_flogn( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_flog10( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_flog2( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fabs( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fcosh( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fneg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_facos( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fcos( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fgetexp( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fgetman( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fdiv( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fmod( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_frem( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fadd( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fmul( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fsgldiv( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fscale( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fsglmul( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fsub( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fsincos( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fcmp( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_ftst( uae_u32 opcode, uae_u32 extra ); // 040 PRIVATE void REGPARAM2 FFPU fpuop_do_fsmove( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fdmove( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fssqrt( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fdsqrt( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fsabs( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fdabs( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fsneg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fdneg( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fsdiv( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fddiv( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fsadd( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fdadd( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fssub( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fdsub( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fsmul( uae_u32 opcode, uae_u32 extra ); PRIVATE void REGPARAM2 FFPU fpuop_do_fdmul( uae_u32 opcode, uae_u32 extra ); // Get & Put floating-point values PRIVATE int FFPU get_fp_value (uae_u32 opcode, uae_u32 extra, fpu_register & src) REGPARAM; PRIVATE int FFPU put_fp_value (fpu_register const & value, uae_u32 opcode, uae_u32 extra) REGPARAM; PRIVATE int FFPU get_fp_ad(uae_u32 opcode, uae_u32 * ad) REGPARAM; // Floating-point condition-based instruction handlers PRIVATE int FFPU fpp_cond(uae_u32 opcode, int condition) REGPARAM; // Misc functions PRIVATE void inline FFPU set_host_fpu_control_word (); PRIVATE void inline FFPU SET_BSUN_ON_NAN (); PRIVATE void inline FFPU build_ex_status (); PRIVATE void FFPU do_null_frestore (); PRIVATE void FFPU build_fpp_opp_lookup_table (); PRIVATE void FFPU set_constant ( fpu_register & f, char *name, double value, uae_s32 mult ); #endif /* FPU_X86_H */ aranym-1.1.0/src/uae_cpu/fpu/fpu_x86.cpp0000664000175000017500000054465713454637622016234 0ustar joyjoy/* * fpu/fpu_x86.cpp - 68881/68040 fpu code for x86/Windows an Linux/x86. * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * * Interface * Almost the same as original. Please see the comments in "fpu.h". * * * Why assembly? * The reason is not really speed, but to get infinities, * NANs and flags finally working. * * * How to maintain Mac and x86 FPU flags -- plan B * * regs.piar is not updated. * * regs.FPU fpcr always contains the real 68881/68040 control word. * * regs.FPU fpsr is not kept up-to-date, for efficiency reasons. * Most of the FPU commands update this in a way or another, but it is not * read nearly that often. Therefore, three host-specific words hold the * status byte and exception byte ("x86_status_word"), accrued exception * byte ("x86_status_word_accrued") and the quotient byte ("FPU fpsr.quotient"), * as explained below. * * CONDITION CODE - QUOTIENT - EXCEPTION STATUS - ACCRUED EXCEPTION * CONDITION CODE (N,Z,I,NAN) * - updated after each opcode, if needed. * - x86 assembly opcodes call FXAM and store the status word to * "x86_status_word". * - When regs.FPU fpsr is actually used, the value of "x86_status_word" * is translated. * QUOTIENT BYTE * - Updated by frem, fmod, frestore(null frame) * - Stored in "FPU fpsr.quotient" in correct bit position, combined when * regs.FPU fpsr is actually used. * EXCEPTION STATUS (BSUN,SNAN,OPERR,OVFL,UNFL,DZ,INEX2,INEX1) * - updated after each opcode, if needed. * - Saved in x86 form in "x86_status_word". * - When regs.FPU fpsr is actually used, the value of "x86_status_word" * is translated. * - Only fcc_op can set BSUN * ACCRUED EXCEPTION (ACCR_IOP,ACCR_OVFL,ACCR_UNFL,ACCR_DZ,ACCR_INEX) * - updated after each opcode, if needed. * - Logically OR'ed in x86 form to "x86_status_word_accrued". * - When regs.FPU fpsr is actually used, the value of * "x86_status_word_accrued" is translated. * * When "x86_status_word" and "x86_status_word_accrued" are stored, * all pending x86 FPU exceptions are cleared, if there are any. * * Writing to "regs.FPU fpsr" reverse-maps to x86 status/exception values and * stores the values in "x86_status_word", "x86_status_word_accrued" * and "FPU fpsr.quotient". * * So, "x86_status_word" and "x86_status_word_accrued" are not in * correct bit positions and have x86 values, but "FPU fpsr.quotient" is at * correct position. * * Note that it does not matter that the reverse-mapping is not exact * (both SW_IE and SW_DE are mapped to ACCR_IOP, but ACCR_IOP maps to * SW_IE only), the MacOS always sees the correct exception bits. * * Also note the usage of the fake BSUN flag SW_FAKE_BSUN. If you change * the x86 FPU code, you must make sure that you don't generate any FPU * stack faults. * * * x86 co-processor initialization: * * Bit Code Use * 0 IM Invalid operation exception mask 1 Disabled * 1 DM Denormalized operand exception mask 1 Disabled * 2 ZM Zerodivide exception mask 1 Disabled * 3 OM Overflow exception mask 1 Disabled * 4 UM Underflow exception mask 1 Disabled * 5 PM Precision exception mask 1 Disabled * 6 - - - - * 7 IEM Interrupt enable mask 0 Enabled * 8 PC Precision control\ 1 - 64 bits * 9 PC Precision control/ 1 / * 10 RC Rounding control\ 0 - Nearest even * 11 RC Rounding control/ 0 / * 12 IC Infinity control 1 Affine * 13 - - - - * 14 - - - - * 15 - - - - * * * TODO: * - Exceptions are not implemented. * - All tbyte variables should be aligned to 16-byte boundaries. * (for best efficiency). * - FTRAPcc code looks like broken. * - If USE_3_BIT_QUOTIENT is 0, exceptions should be checked after * float -> int rounding (frem,fmod). * - The speed can be greatly improved. Do this only after you are sure * that there are no major bugs. * - Support for big-endian byte order (but all assembly code needs to * be rewritten anyway) * I have some non-portable code like *((uae_u16 *)&m68k_dreg(regs, reg)) = newv; * Sorry about that, you need to change these. I could do it myself, but better * not, I would have no way to test them out. * I tried to mark all spots with a comment TODO_BIGENDIAN. * - to_double() may need renormalization code. Or then again, maybe not. * - Signaling NANs should be handled better. The current mapping of * signaling nan exception to denormalized operand exception is only * based on the idea that the (possible) handler sees that "something * seriously wrong" and takes the same action. Should not really get (m)any * of those since normalization is handled on to_exten() * */ # include # include #include "sysdeps.h" #include "memory-uae.h" #include "readcpu.h" #include "newcpu.h" #define FPU_IMPLEMENTATION #include "fpu/fpu.h" #include "fpu/fpu_x86.h" #include "fpu/fpu_x86_asm.h" /* Global FPU context */ fpu_t fpu; /* -------------------------------------------------------------------------- */ /* --- Native Support --- */ /* -------------------------------------------------------------------------- */ #include "fpu/flags.h" #include "fpu/exceptions.h" #include "fpu/rounding.h" #include "fpu/impl.h" #include "fpu/flags.cpp" #include "fpu/exceptions.cpp" #include "fpu/rounding.cpp" /* -------------------------------------------------------------------------- */ /* --- Scopes Definition --- */ /* -------------------------------------------------------------------------- */ #undef PUBLIC #define PUBLIC /**/ #undef PRIVATE #define PRIVATE static #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. /* ---------------------------- Compatibility ---------------------------- */ #define BYTE uint8 #define WORD uint16 #define DWORD uint32 #define min(a, b) (((a) < (b)) ? (a) : (b)) /* ---------------------------- Configuration ---------------------------- */ /* If USE_3_BIT_QUOTIENT is set to 1, FREM and FMOD use a faster version with only 3 quotient bits (those provided by the x86 FPU). If set to 0, they calculate the same 7 bits that m68k does. It seems (as for now) that 3 bits suffice for all Mac programs I have tried. If you decide that you need all 7 bits (USE_3_BIT_QUOTIENT is 0), consider checking the host exception flags after FISTP (search for "TODO:Quotient". The result may be too large to fit into a dword. */ /* gb-- I only tested the following configurations: USE_3_BIT_QUOTIENT 1 -- still changes to apply if no 3-bit quotient FPU_DEBUG 1 or 0 USE_CONSISTENCY_CHECKING 0 I3_ON_ILLEGAL_FPU_OP 0 -- and this won't change I3_ON_FTRAPCC 0 -- and this won't change */ #define USE_3_BIT_QUOTIENT 1 //#define FPU_DEBUG 0 -- now defined in "fpu/fpu.h" #define USE_CONSISTENCY_CHECKING 0 #define I3_ON_ILLEGAL_FPU_OP 0 #define I3_ON_FTRAPCC 0 /* ---------------------------- Debugging ---------------------------- */ PUBLIC void FFPU fpu_dump_registers(void) { for (int i = 0; i < 8; i++){ printf ("FP%d: %g ", i, fpu_get_register(i)); if ((i & 3) == 3) printf ("\n"); } } PUBLIC void FFPU fpu_dump_flags(void) { printf ("N=%d Z=%d I=%d NAN=%d\n", (get_fpsr() & FPSR_CCB_NEGATIVE) != 0, (get_fpsr() & FPSR_CCB_ZERO)!= 0, (get_fpsr() & FPSR_CCB_INFINITY) != 0, (get_fpsr() & FPSR_CCB_NAN) != 0); } #include "debug.h" #if FPU_DEBUG PRIVATE void FFPU dump_first_bytes_buf(char *b, uae_u8* buf, uae_s32 actual) { char bb[10]; int32 i, bytes = min(actual,100); *b = 0; for (i=0; i= 10) _ix = 0; sprintf( _s[_ix], "%.04f", (float)f ); return( _s[_ix] ); } PUBLIC void FFPU dump_registers(const char *s) { char b[512]; sprintf( b, "%s: %s, %s, %s, %s, %s, %s, %s, %s\r\n", s, etos(FPU registers[0]), etos(FPU registers[1]), etos(FPU registers[2]), etos(FPU registers[3]), etos(FPU registers[4]), etos(FPU registers[5]), etos(FPU registers[6]), etos(FPU registers[7]) ); D(bug((char*)b)); } #else PUBLIC void FFPU dump_registers(const char *) { } PUBLIC void FFPU dump_first_bytes(uae_u8 *, uae_s32) { } #endif /* ---------------------------- FPU consistency ---------------------------- */ #if USE_CONSISTENCY_CHECKING PRIVATE void FFPU FPU_CONSISTENCY_CHECK_START(void) { /* _asm { FNSTSW checked_sw_atstart } */ __asm__ __volatile__("fnstsw %0" : "=m" (checked_sw_atstart)); } PRIVATE void FFPU FPU_CONSISTENCY_CHECK_STOP(const char *name) { uae_u16 checked_sw_atend; // _asm FNSTSW checked_sw_atend __asm__ __volatile__("fnstsw %0" : "=m" (checked_sw_attend)); char msg[256]; // Check for FPU stack overflows/underflows. if( (checked_sw_atend & 0x3800) != (checked_sw_atstart & 0x3800) ) { wsprintf( msg, "FPU stack leak at %s, %X, %X\r\n", name, (int)(checked_sw_atstart & 0x3800) >> 11, (int)(checked_sw_atend & 0x3800) >> 11 ); OutputDebugString(msg); } // Observe status mapping. /* if(checked_sw_atstart != 0x400 || checked_sw_atend != 0x400) { wsprintf( msg, "Op %s, x86_status_word before=%X, x86_status_word after=%X\r\n", name, (int)checked_sw_atstart, (int)checked_sw_atend ); OutputDebugString(msg); } */ } #else PRIVATE void FFPU FPU_CONSISTENCY_CHECK_START(void) { } PRIVATE void FFPU FPU_CONSISTENCY_CHECK_STOP(const char *) { } #endif /* ---------------------------- Status byte ---------------------------- */ // Map x86 FXAM codes -> m68k fpu status byte #define SW_Z_I_NAN_MASK (SW_C0|SW_C2|SW_C3) #define SW_Z (SW_C3) #define SW_I (SW_C0|SW_C2) #define SW_NAN (SW_C0) #define SW_FINITE (SW_C2) #define SW_EMPTY_REGISTER (SW_C0|SW_C3) #define SW_DENORMAL (SW_C2|SW_C3) #define SW_UNSUPPORTED (0) #define SW_N (SW_C1) // Initial state after boot, reset and frestore(null frame) #define SW_INITIAL SW_FINITE /* ---------------------------- Status functions ---------------------------- */ PRIVATE void inline FFPU SET_BSUN_ON_NAN () { if( (x86_status_word & (SW_Z_I_NAN_MASK)) == SW_NAN ) { x86_status_word |= SW_FAKE_BSUN; x86_status_word_accrued |= SW_IE; } } PRIVATE void inline FFPU build_ex_status () { if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word_accrued |= x86_status_word; } } // TODO_BIGENDIAN; all of these. /* ---------------------------- Type functions ---------------------------- */ /* When the FPU creates a NAN, the NAN always contains the same bit pattern in the mantissa. All bits of the mantissa are ones for any precision. When the user creates a NAN, any nonzero bit pattern can be stored in the mantissa. */ PRIVATE inline void FFPU MAKE_NAN (fpu_register & f, bool negative) { // Make it non-signaling. uae_u8 * p = (uae_u8 *) &f; memset( p, 0xFF, sizeof(fpu_register) - 1 ); p[9] = negative ? 0xff : 0x7F; } /* For single- and double-precision infinities the fraction is a zero. For extended-precision infinities, the mantissa�s MSB, the explicit integer bit, can be either one or zero. */ PRIVATE inline uae_u32 FFPU IS_INFINITY (fpu_register const & f) { uae_u8 * p = (uae_u8 *) &f; if( ((p[9] & 0x7F) == 0x7F) && p[8] == 0xFF ) { if ((*((uae_u32 *)&p[0]) == 0) && ((*((uae_u32 *)&p[4]) & 0x7FFFFFFF) == 0)) return(1); } return(0); } PRIVATE inline uae_u32 FFPU IS_NAN (fpu_register const & f) { uae_u8 * p = (uae_u8 *) &f; if( ((p[9] & 0x7F) == 0x7F) && p[8] == 0xFF ) { if ((*((uae_u32 *)&p[0]) == 0) && ((*((uae_u32 *)&p[4]) & 0x7FFFFFFF) != 0)) return(1); } return(0); } PRIVATE inline uae_u32 FFPU IS_ZERO (fpu_register const & f) { uae_u8 * p = (uae_u8 *) &f; return *((uae_u32 *)p) == 0 && *((uae_u32 *)&p[4]) == 0 && ( *((uae_u16 *)&p[8]) & 0x7FFF ) == 0; } PRIVATE inline void FFPU MAKE_INF_POSITIVE (fpu_register & f) { uae_u8 * p = (uae_u8 *) &f; memset( p, 0, sizeof(fpu_register)-2 ); *((uae_u16 *)&p[8]) = 0x7FFF; } PRIVATE inline void FFPU MAKE_INF_NEGATIVE (fpu_register & f) { uae_u8 * p = (uae_u8 *) &f; memset( p, 0, sizeof(fpu_register)-2 ); *((uae_u16 *)&p[8]) = 0xFFFF; } PRIVATE inline void FFPU MAKE_ZERO_POSITIVE (fpu_register & f) { uae_u32 * const p = (uae_u32 *) &f; memset( p, 0, sizeof(fpu_register) ); } PRIVATE inline void FFPU MAKE_ZERO_NEGATIVE (fpu_register & f) { uae_u32 * const p = (uae_u32 *) &f; memset( p, 0, sizeof(fpu_register) ); *((uae_u32 *)&p[4]) = 0x80000000; } PRIVATE inline uae_u32 FFPU IS_NEGATIVE (fpu_register const & f) { uae_u8 * p = (uae_u8 *) &f; return( (p[9] & 0x80) != 0 ); } /* ---------------------------- Conversions ---------------------------- */ PRIVATE void FFPU signed_to_extended ( uae_s32 x, fpu_register & f ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [f] FILD DWORD PTR [x] FSTP TBYTE PTR [ESI] } */ __asm__ __volatile__("fildl %1\n\tfstpt %0" : "=m" (f) : "m" (x)); D(bug("signed_to_extended (%X) = %s\r\n",(int)x,etos(f))); FPU_CONSISTENCY_CHECK_STOP("signed_to_extended"); } PRIVATE uae_s32 FFPU extended_to_signed_32 ( fpu_register const & f ) { FPU_CONSISTENCY_CHECK_START(); volatile uae_s32 tmp; volatile WORD sw_temp; /* _asm { MOV EDI, [f] FLD TBYTE PTR [EDI] FISTP DWORD PTR tmp FNSTSW sw_temp } */ __asm__ __volatile__( "fldt %2\n" "fistpl %0\n" "fnstsw %1\n" : "=m" (tmp), "=m" (sw_temp) : "m" (f) ); if(sw_temp & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); if(sw_temp & (SW_OE|SW_UE|SW_DE|SW_IE)) { // Map SW_OE to OPERR. x86_status_word |= SW_IE; x86_status_word_accrued |= SW_IE; // Setting the value to zero might not be the right way to go, // but I'll leave it like this for now. tmp = 0; } if(sw_temp & SW_PE) { x86_status_word |= SW_PE; x86_status_word_accrued |= SW_PE; } } D(bug("extended_to_signed_32 (%s) = %X\r\n",etos(f),(int)tmp)); FPU_CONSISTENCY_CHECK_STOP("extended_to_signed_32"); return tmp; } PRIVATE uae_s16 FFPU extended_to_signed_16 ( fpu_register const & f ) { FPU_CONSISTENCY_CHECK_START(); volatile uae_s16 tmp; volatile WORD sw_temp; /* _asm { MOV EDI, [f] FLD TBYTE PTR [EDI] FISTP WORD PTR tmp FNSTSW sw_temp } */ __asm__ __volatile__( "fldt %2\n" "fistp %0\n" "fnstsw %1\n" : "=m" (tmp), "=m" (sw_temp) : "m" (f) ); if(sw_temp & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); if(sw_temp & (SW_OE|SW_UE|SW_DE|SW_IE)) { // Map SW_OE to OPERR. x86_status_word |= SW_IE; x86_status_word_accrued |= SW_IE; tmp = 0; } if(sw_temp & SW_PE) { x86_status_word |= SW_PE; x86_status_word_accrued |= SW_PE; } } D(bug("extended_to_signed_16 (%s) = %X\r\n",etos(f),(int)tmp)); FPU_CONSISTENCY_CHECK_STOP("extended_to_signed_16"); return tmp; } PRIVATE uae_s8 FFPU extended_to_signed_8 ( fpu_register const & f ) { FPU_CONSISTENCY_CHECK_START(); volatile uae_s16 tmp; volatile WORD sw_temp; /* _asm { MOV EDI, [f] FLD TBYTE PTR [EDI] FISTP WORD PTR tmp FNSTSW sw_temp } */ __asm__ __volatile__( "fldt %2\n" "fistp %0\n" "fnstsw %1\n" : "=m" (tmp), "=m" (sw_temp) : "m" (f) ); if(sw_temp & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); if(sw_temp & (SW_OE|SW_UE|SW_DE|SW_IE)) { // Map SW_OE to OPERR. x86_status_word |= SW_IE; x86_status_word_accrued |= SW_IE; tmp = 0; } if(sw_temp & SW_PE) { x86_status_word |= SW_PE; x86_status_word_accrued |= SW_PE; } } if(tmp > 127 || tmp < -128) { // OPERR x86_status_word |= SW_IE; x86_status_word_accrued |= SW_IE; } D(bug("extended_to_signed_8 (%s) = %X\r\n",etos(f),(int)tmp)); FPU_CONSISTENCY_CHECK_STOP("extended_to_signed_8"); return (uae_s8)tmp; } PRIVATE void FFPU double_to_extended ( double x, fpu_register & f ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV EDI, [f] FLD QWORD PTR [x] FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldl %1\n" "fstpt %0\n" : "=m" (f) : "m" (x) ); FPU_CONSISTENCY_CHECK_STOP("double_to_extended"); } PRIVATE fpu_double FFPU extended_to_double( fpu_register const & f ) { FPU_CONSISTENCY_CHECK_START(); double result; /* _asm { MOV ESI, [f] FLD TBYTE PTR [ESI] FSTP QWORD PTR result } */ __asm__ __volatile__( "fldt %1\n" "fstpl %0\n" : "=m" (result) : "m" (f) ); FPU_CONSISTENCY_CHECK_STOP("extended_to_double"); return result; } PRIVATE void FFPU to_single ( uae_u32 src, fpu_register & f ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [f] FLD DWORD PTR src FSTP TBYTE PTR [ESI] } */ __asm__ __volatile__( "flds %1\n" "fstpt %0\n" : "=m" (f) : "m" (src) ); D(bug("to_single (%X) = %s\r\n",src,etos(f))); FPU_CONSISTENCY_CHECK_STOP("to_single"); } // TODO_BIGENDIAN PRIVATE void FFPU to_exten_no_normalize ( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3, fpu_register & f ) { FPU_CONSISTENCY_CHECK_START(); uae_u32 *p = (uae_u32 *)&f; uae_u32 sign = (wrd1 & 0x80000000) >> 16; uae_u32 exp = (wrd1 >> 16) & 0x7fff; p[0] = wrd3; p[1] = wrd2; *((uae_u16 *)&p[2]) = (uae_u16)(sign | exp); D(bug("to_exten_no_normalize (%X,%X,%X) = %s\r\n",wrd1,wrd2,wrd3,etos(f))); FPU_CONSISTENCY_CHECK_STOP("to_exten_no_normalize"); } PRIVATE void FFPU to_exten ( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3, fpu_register & f ) { FPU_CONSISTENCY_CHECK_START(); uae_u32 *p = (uae_u32 *)&f; uae_u32 sign = (wrd1 & 0x80000000) >> 16; uae_u32 exp = (wrd1 >> 16) & 0x7fff; // The explicit integer bit is not set, must normalize. // Don't do it for zeroes, infinities or nans. if( (wrd2 & 0x80000000) == 0 && exp != 0 && exp != 0x7FFF ) { D(bug("to_exten denormalized mantissa (%X,%X,%X)\r\n",wrd1,wrd2,wrd3)); if( wrd2 | wrd3 ) { // mantissa, not fraction. uae_u64 man = ((uae_u64)wrd2 << 32) | wrd3; while( exp > 0 && (man & UVAL64(0x8000000000000000)) == 0 ) { man <<= 1; exp--; } wrd2 = (uae_u32)( man >> 32 ); wrd3 = (uae_u32)( man & 0xFFFFFFFF ); if( exp == 0 || (wrd2 & 0x80000000) == 0 ) { // underflow wrd2 = wrd3 = exp = 0; sign = 0; } } else { if(exp != 0x7FFF && exp != 0) { // Make a non-signaling nan. exp = 0x7FFF; sign = 0; wrd2 = 0x80000000; } } } p[0] = wrd3; p[1] = wrd2; *((uae_u16 *)&p[2]) = (uae_u16)(sign | exp); D(bug("to_exten (%X,%X,%X) = %s\r\n",wrd1,wrd2,wrd3,etos(f))); FPU_CONSISTENCY_CHECK_STOP("to_exten"); } PRIVATE void FFPU to_double ( uae_u32 wrd1, uae_u32 wrd2, fpu_register & f ) { FPU_CONSISTENCY_CHECK_START(); // gb-- make GCC happy union { uae_u64 q; uae_u32 l[2]; } src; // Should renormalize if needed. I'm not sure that x86 and m68k FPU's // do it the sama way. This should be extremely rare however. // to_exten() is often called with denormalized values. src.l[0] = wrd2; src.l[1] = wrd1; /* _asm { FLD QWORD PTR src MOV EDI, [f] FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldl %1\n" "fstpt %0\n" : "=m" (f) : "m" (src.q) ); D(bug("to_double (%X,%X) = %s\r\n",wrd1,wrd2,etos(f))); FPU_CONSISTENCY_CHECK_STOP("to_double"); } PRIVATE uae_u32 FFPU from_single ( fpu_register const & f ) { FPU_CONSISTENCY_CHECK_START(); volatile uae_u32 dest; volatile WORD sw_temp; /* _asm { MOV EDI, [f] FLD TBYTE PTR [EDI] FSTP DWORD PTR dest FNSTSW sw_temp } */ __asm__ __volatile__( "fldt %2\n" "fstps %0\n" "fnstsw %1\n" : "=m" (dest), "=m" (sw_temp) : "m" (f) ); sw_temp &= SW_EXCEPTION_MASK; if(sw_temp) { // _asm FNCLEX asm("fnclex"); x86_status_word = (x86_status_word & ~SW_EXCEPTION_MASK) | sw_temp; x86_status_word_accrued |= sw_temp; } D(bug("from_single (%s) = %X\r\n",etos(f),dest)); FPU_CONSISTENCY_CHECK_STOP("from_single"); return dest; } // TODO_BIGENDIAN PRIVATE void FFPU from_exten ( fpu_register const & f, uae_u32 *wrd1, uae_u32 *wrd2, uae_u32 *wrd3 ) { FPU_CONSISTENCY_CHECK_START(); uae_u32 *p = (uae_u32 *)&f; *wrd3 = p[0]; *wrd2 = p[1]; *wrd1 = ( (uae_u32)*((uae_u16 *)&p[2]) ) << 16; D(bug("from_exten (%s) = %X,%X,%X\r\n",etos(f),*wrd1,*wrd2,*wrd3)); FPU_CONSISTENCY_CHECK_STOP("from_exten"); } PRIVATE void FFPU from_double ( fpu_register const & f, uae_u32 *wrd1, uae_u32 *wrd2 ) { FPU_CONSISTENCY_CHECK_START(); volatile uae_u32 dest[2]; volatile WORD sw_temp; /* _asm { MOV EDI, [f] FLD TBYTE PTR [EDI] FSTP QWORD PTR dest FNSTSW sw_temp } */ __asm__ __volatile__( "fldt %2\n" "fstpl %0\n" "fnstsw %1\n" : "=m" (dest), "=m" (sw_temp) : "m" (f) ); sw_temp &= SW_EXCEPTION_MASK; if(sw_temp) { // _asm FNCLEX asm("fnclex"); x86_status_word = (x86_status_word & ~SW_EXCEPTION_MASK) | sw_temp; x86_status_word_accrued |= sw_temp; } // TODO: There is a partial memory stall, nothing happens until FSTP retires. // On PIII, could use MMX move w/o any penalty. *wrd2 = dest[0]; *wrd1 = dest[1]; D(bug("from_double (%s) = %X,%X\r\n",etos(f),dest[1],dest[0])); FPU_CONSISTENCY_CHECK_STOP("from_double"); } PRIVATE void FFPU do_fmove ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldt %2\n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); FPU_CONSISTENCY_CHECK_STOP("do_fmove"); } PRIVATE void FFPU do_fsmove ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); FPU_CONSISTENCY_CHECK_STOP("do_fsmove"); } PRIVATE void FFPU do_fdmove ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); FPU_CONSISTENCY_CHECK_STOP("do_fdmove"); } /* PRIVATE void FFPU do_fmove_no_status ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FSTP TBYTE PTR [EDI] } FPU_CONSISTENCY_CHECK_STOP("do_fmove_no_status"); } */ /* ---------------------------- Operations ---------------------------- */ PRIVATE void FFPU do_fint ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FRNDINT FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldt %2\n" "frndint\n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_PE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fint"); } PRIVATE void FFPU do_fintrz ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); WORD cw_temp; /* _asm { MOV ESI, [src] MOV EDI, [dest] FSTCW cw_temp and cw_temp, ~X86_ROUNDING_MODE or cw_temp, CW_RC_ZERO FLDCW cw_temp FLD TBYTE PTR [ESI] FRNDINT FXAM FNSTSW x86_status_word FLDCW x86_control_word FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fstcw %0\n" "andl $(~X86_ROUNDING_MODE), %0\n" "orl $CW_RC_ZERO, %0\n" "fldcw %0\n" "fldt %3\n" "frndint\n" "fxam \n" "fnstsw %1\n" "fldcw %4\n" "fstpt %2\n" : "+m" (cw_temp), "=m" (x86_status_word), "=m" (dest) : "m" (src), "m" (x86_control_word) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_PE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fintrz"); } PRIVATE void FFPU do_fsqrt ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FSQRT FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldt %2\n" "fsqrt \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_PE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fsqrt"); } PRIVATE void FFPU do_fssqrt ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fsqrt \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_PE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fssqrt"); } PRIVATE void FFPU do_fdsqrt ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fsqrt \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_PE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fdsqrt"); } PRIVATE void FFPU do_ftst ( fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] FLD TBYTE PTR [ESI] FXAM FNSTSW x86_status_word FSTP ST(0) } */ __asm__ __volatile__( "fldt %1\n" "fxam \n" "fnstsw %0\n" "fstp %%st(0)\n" : "=m" (x86_status_word) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~SW_EXCEPTION_MASK; } FPU_CONSISTENCY_CHECK_STOP("do_ftst"); } // These functions are calculated in 53 bits accuracy only. // Exception checking is not complete. PRIVATE void FFPU do_fsinh ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = sinh(x); double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_fsinh"); } PRIVATE void FFPU do_flognp1 ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = log (x + 1.0); double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_flognp1"); } PRIVATE void FFPU do_fetoxm1 ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = exp (x) - 1.0; double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_fetoxm1"); } PRIVATE void FFPU do_ftanh ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = tanh (x); double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_ftanh"); } PRIVATE void FFPU do_fatan ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = atan (x); double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_fatan"); } PRIVATE void FFPU do_fasin ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = asin (x); double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_fasin"); } PRIVATE void FFPU do_fatanh ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = log ((1 + x) / (1 - x)) / 2; double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_fatanh"); } PRIVATE void FFPU do_fetox ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = exp (x); double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_fetox"); } PRIVATE void FFPU do_ftwotox ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = pow(2.0, x); double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_ftwotox"); } PRIVATE void FFPU do_ftentox ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = pow(10.0, x); double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_ftentox"); } PRIVATE void FFPU do_flogn ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = log (x); double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_flogn"); } PRIVATE void FFPU do_flog10 ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = log10 (x); double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_flog10"); } PRIVATE void FFPU do_flog2 ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = log (x) / log (2.0); double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_flog2"); } PRIVATE void FFPU do_facos ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = acos(x); double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_facos"); } PRIVATE void FFPU do_fcosh ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); double x, y; x = extended_to_double( src ); y = cosh(x); double_to_extended( y, dest ); do_ftst( dest ); FPU_CONSISTENCY_CHECK_STOP("do_fcosh"); } PRIVATE void FFPU do_fsin ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FSIN FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldt %2\n" "fsin \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_PE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fsin"); } // TODO: Should check for out-of-range condition (partial tangent) PRIVATE void FFPU do_ftan ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FPTAN FSTP ST(0) ; pop 1.0 (the 8087/287 compatibility thing) FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldt %2\n" "fptan \n" "fstp %%st(0)\n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_PE - SW_UE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_ftan"); } PRIVATE void FFPU do_fabs ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FABS FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldt %2\n" "fabs \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); // x86 fabs should not rise any exceptions (except stack underflow) if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~SW_EXCEPTION_MASK; } FPU_CONSISTENCY_CHECK_STOP("do_fabs"); } PRIVATE void FFPU do_fsabs ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fabs \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); // x86 fabs should not rise any exceptions (except stack underflow) if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~SW_EXCEPTION_MASK; } FPU_CONSISTENCY_CHECK_STOP("do_fsabs"); } PRIVATE void FFPU do_fdabs ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fabs \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); // x86 fabs should not rise any exceptions (except stack underflow) if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~SW_EXCEPTION_MASK; } FPU_CONSISTENCY_CHECK_STOP("do_fdabs"); } PRIVATE void FFPU do_fneg ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FCHS FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldt %2\n" "fchs \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); // x86 fchs should not rise any exceptions (except stack underflow) if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~SW_EXCEPTION_MASK; } FPU_CONSISTENCY_CHECK_STOP("do_fneg"); } PRIVATE void FFPU do_fsneg ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fchs \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); // x86 fchs should not rise any exceptions (except stack underflow) if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~SW_EXCEPTION_MASK; } FPU_CONSISTENCY_CHECK_STOP("do_fsneg"); } PRIVATE void FFPU do_fdneg ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fchs \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); // x86 fchs should not rise any exceptions (except stack underflow) if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~SW_EXCEPTION_MASK; } FPU_CONSISTENCY_CHECK_STOP("do_fdneg"); } PRIVATE void FFPU do_fcos ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FCOS FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldt %2\n" "fcos \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_PE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fcos"); } PRIVATE void FFPU do_fgetexp ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FXTRACT FSTP ST(0) ; pop mantissa FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldt %2\n" "fxtract\n" "fstp %%st(0)\n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~SW_EXCEPTION_MASK; } FPU_CONSISTENCY_CHECK_STOP("do_fgetexp"); } PRIVATE void FFPU do_fgetman ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FXTRACT FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] FSTP ST(0) ; pop exponent } */ __asm__ __volatile__( "fldt %2\n" "fxtract\n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" "fstp %%st(0)\n" : "=m" (x86_status_word), "=m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~SW_EXCEPTION_MASK; } FPU_CONSISTENCY_CHECK_STOP("do_fgetman"); } PRIVATE void FFPU do_fdiv ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] FDIV ST(0),ST(1) FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] FSTP ST(0) } */ __asm__ __volatile__( "fldt %2\n" "fldt %1\n" "fdiv %%st(1), %%st(0)\n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" "fstp %%st(0)\n" : "=m" (x86_status_word), "+m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fdiv"); } PRIVATE void FFPU do_fsdiv ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fldt %1\n" "fdiv %%st(1), %%st(0)\n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" "fstp %%st(0)\n" : "=m" (x86_status_word), "+m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fsdiv"); } PRIVATE void FFPU do_fddiv ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fldt %1\n" "fdiv %%st(1), %%st(0)\n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" "fstp %%st(0)\n" : "=m" (x86_status_word), "+m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fddiv"); } // The sign of the quotient is the exclusive-OR of the sign bits // of the source and destination operands. // Quotient Byte is loaded with the sign and least significant // seven bits of the quotient. PRIVATE void FFPU do_fmod ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); volatile uint16 status; uae_u32 quot; #if !USE_3_BIT_QUOTIENT WORD cw_temp; #endif uae_u8 * dest_p = (uae_u8 *)&dest; uae_u8 * src_p = (uae_u8 *)&src; uae_u32 sign = (dest_p[9] ^ src_p[9]) & 0x80; /* _asm { MOV ESI, [src] MOV EDI, [dest] #if !USE_3_BIT_QUOTIENT MOV CX, x86_control_word AND CX, ~X86_ROUNDING_MODE OR CX, CW_RC_ZERO MOV cw_temp, CX FLDCW cw_temp FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] FDIV ST(0),ST(1) FABS FISTP DWORD PTR quot FSTP ST(0) FLDCW x86_control_word // TODO:Quotient // Should clear any possible exceptions here #endif FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] // loop until the remainder is not partial any more. partial_loop: FPREM FNSTSW status TEST status, SW_C2 JNE partial_loop FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] FSTP ST(0) } */ #if !USE_3_BIT_QUOTIENT __asm__ __volatile__( "movl %6, %%ecx\n" // %6: x86_control_word (read) "andl $(~X86_ROUNDING_MODE), %%ecx\n" "orl $CW_RC_ZERO, %%ecx\n" "movl %%ecx, %0\n" // %0: cw_temp (read/write) "fldcw %0\n" "fldt %5\n" "fldt %4\n" "fdiv %%st(1), %%st(0)\n" "fabs \n" "fistpl %1\n" // %1: quot (read/write) "fstp %%st(0)\n" "fldcw %6\n" "fldt %5\n" "fldt %4\n" "0:\n" // partial_loop "fprem \n" "fnstsw %2\n" // %2: status (read/write) "testl $SW_C2, %2\n" "jne 0b\n" "fxam \n" "fnstsw %3\n" // %3: x86_status_word (write) "fstpt %4\n" "fstp %%st(0)\n" : "+m" (cw_temp), "+m" (quot), "+m" (status), "=m" (x86_status_word), "+m" (dest) : "m" (src), "m" (x86_control_word) : "ecx" ); #else __asm__ __volatile__( "fldt %3\n" "fldt %2\n" "0:\n" // partial_loop "fprem \n" "fnstsw %0\n" // %0: status (read/write) "testl $SW_C2, %0\n" "jne 0b\n" "fxam \n" "fnstsw %1\n" // %1: x86_status_word (write) "fstpt %2\n" "fstp %%st(0)\n" : "+m" (status), "=m" (x86_status_word), "+m" (dest) : "m" (src) ); #endif if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_UE); x86_status_word_accrued |= x86_status_word; } #if USE_3_BIT_QUOTIENT // SW_C1 Set to least significant bit of quotient (Q0). // SW_C3 Set to bit 1 (Q1) of the quotient. // SW_C0 Set to bit 2 (Q2) of the quotient. quot = ((status & SW_C0) >> 6) | ((status & SW_C3) >> 13) | ((status & SW_C1) >> 9); FPU fpsr.quotient = (sign | quot) << 16; #else FPU fpsr.quotient = (sign | (quot&0x7F)) << 16; #endif FPU_CONSISTENCY_CHECK_STOP("do_fmod"); } PRIVATE void FFPU do_frem ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); volatile uint16 status; uae_u32 quot; #if !USE_3_BIT_QUOTIENT WORD cw_temp; #endif uae_u8 * dest_p = (uae_u8 *)&dest; uae_u8 * src_p = (uae_u8 *)&src; uae_u32 sign = (dest_p[9] ^ src_p[9]) & 0x80; /* _asm { MOV ESI, [src] MOV EDI, [dest] #if !USE_3_BIT_QUOTIENT MOV CX, x86_control_word AND CX, ~X86_ROUNDING_MODE OR CX, CW_RC_NEAR MOV cw_temp, CX FLDCW cw_temp FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] FDIV ST(0),ST(1) FABS FISTP DWORD PTR quot FSTP ST(0) FLDCW x86_control_word // TODO:Quotient // Should clear any possible exceptions here #endif FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] // loop until the remainder is not partial any more. partial_loop: FPREM1 FNSTSW status TEST status, SW_C2 JNE partial_loop FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] FSTP ST(0) } */ #if !USE_3_BIT_QUOTIENT __asm__ __volatile__( "movl %6, %%ecx\n" // %6: x86_control_word (read) "andl $(~X86_ROUNDING_MODE), %%ecx\n" "orl $CW_RC_NEAR, %%ecx\n" "movl %%ecx, %0\n" // %0: cw_temp (read/write) "fldcw %0\n" "fldt %5\n" "fldt %4\n" "fdiv %%st(1), %%st(0)\n" "fabs \n" "fistpl %1\n" // %1: quot (read/write) "fstp %%st(0)\n" "fldcw %6\n" "fldt %5\n" "fldt %4\n" "0:\n" // partial_loop "fprem1 \n" "fnstsw %2\n" // %2: status (read/write) "testl $SW_C2, %2\n" "jne 0b\n" "fxam \n" "fnstsw %3\n" // %3: x86_status_word (write) "fstpt %4\n" "fstp %%st(0)\n" : "+m" (cw_temp), "+m" (quot), "+m" (status), "=m" (x86_status_word), "+m" (dest) : "m" (src), "m" (x86_control_word) : "ecx" ); #else __asm__ __volatile__( "fldt %3\n" "fldt %2\n" "0:\n" // partial_loop "fprem1 \n" "fnstsw %0\n" // %0: status (read/write) "testl $SW_C2, %0\n" "jne 0b\n" "fxam \n" "fnstsw %1\n" // %1: x86_status_word (write) "fstpt %2\n" "fstp %%st(0)\n" : "+m" (status), "=m" (x86_status_word), "+m" (dest) : "m" (src) ); #endif if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_UE); x86_status_word_accrued |= x86_status_word; } #if USE_3_BIT_QUOTIENT // SW_C1 Set to least significant bit of quotient (Q0). // SW_C3 Set to bit 1 (Q1) of the quotient. // SW_C0 Set to bit 2 (Q2) of the quotient. quot = ((status & SW_C0) >> 6) | ((status & SW_C3) >> 13) | ((status & SW_C1) >> 9); FPU fpsr.quotient = (sign | quot) << 16; #else FPU fpsr.quotient = (sign | (quot&0x7F)) << 16; #endif FPU_CONSISTENCY_CHECK_STOP("do_frem"); } // Faster versions. The current rounding mode is already correct. #if !USE_3_BIT_QUOTIENT PRIVATE void FFPU do_fmod_dont_set_cw ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); volatile uint16 status; uae_u32 quot; uae_u8 * dest_p = (uae_u8 *)&dest; uae_u8 * src_p = (uae_u8 *)&src; uae_u32 sign = (dest_p[9] ^ src_p[9]) & 0x80; _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] FDIV ST(0),ST(1) FABS FISTP DWORD PTR quot FSTP ST(0) // TODO:Quotient // Should clear any possible exceptions here FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] // loop until the remainder is not partial any more. partial_loop: FPREM FNSTSW status TEST status, SW_C2 JNE partial_loop FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] FSTP ST(0) } if(x86_status_word & SW_EXCEPTION_MASK) { _asm FNCLEX x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_UE); x86_status_word_accrued |= x86_status_word; } FPU fpsr.quotient = (sign | (quot&0x7F)) << 16; FPU_CONSISTENCY_CHECK_STOP("do_fmod_dont_set_cw"); } PRIVATE void FFPU do_frem_dont_set_cw ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); volatile uint16 status; uae_u32 quot; uae_u8 * dest_p = (uae_u8 *)&dest; uae_u8 * src_p = (uae_u8 *)&src; uae_u32 sign = (dest_p[9] ^ src_p[9]) & 0x80; _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] FDIV ST(0),ST(1) FABS FISTP DWORD PTR quot FSTP ST(0) // TODO:Quotient // Should clear any possible exceptions here FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] // loop until the remainder is not partial any more. partial_loop: FPREM1 FNSTSW status TEST status, SW_C2 JNE partial_loop FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] FSTP ST(0) } if(x86_status_word & SW_EXCEPTION_MASK) { _asm FNCLEX x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_UE); x86_status_word_accrued |= x86_status_word; } FPU fpsr.quotient = (sign | (quot&0x7F)) << 16; FPU_CONSISTENCY_CHECK_STOP("do_frem_dont_set_cw"); } #endif //USE_3_BIT_QUOTIENT PRIVATE void FFPU do_fadd ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] FADD FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldt %2\n" "fldt %1\n" "fadd \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "+m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_UE - SW_OE - SW_PE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fadd"); } PRIVATE void FFPU do_fsadd ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fldt %1\n" "fadd \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "+m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_UE - SW_OE - SW_PE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fsadd"); } PRIVATE void FFPU do_fdadd ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fldt %1\n" "fadd \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "+m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_UE - SW_OE - SW_PE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fdadd"); } PRIVATE void FFPU do_fmul ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] FMUL FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldt %2\n" "fldt %1\n" "fmul \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "+m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fmul"); } PRIVATE void FFPU do_fsmul ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fldt %1\n" "fmul \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "+m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fsmul"); } PRIVATE void FFPU do_fdmul ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fldt %1\n" "fmul \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "+m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fdmul"); } PRIVATE void FFPU do_fsgldiv ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); WORD cw_temp; /* _asm { FSTCW cw_temp and cw_temp, ~X86_ROUNDING_PRECISION or cw_temp, PRECISION_CONTROL_SINGLE FLDCW cw_temp MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] FDIV ST(0),ST(1) FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] FSTP ST(0) FLDCW x86_control_word } */ __asm__ __volatile__( "fstcw %0\n" "andl $(~X86_ROUNDING_PRECISION), %0\n" "orl $PRECISION_CONTROL_SINGLE, %0\n" "fldcw %0\n" "fldt %3\n" "fldt %2\n" "fdiv %%st(1), %%st(0)\n" "fxam \n" "fnstsw %1\n" "fstpt %2\n" "fstp %%st(0)\n" "fldcw %4\n" : "+m" (cw_temp), "=m" (x86_status_word), "+m" (dest) : "m" (src), "m" (x86_control_word) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fsgldiv"); } PRIVATE void FFPU do_fscale ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] FSCALE FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] FSTP ST(0) } */ __asm__ __volatile__( "fldt %2\n" "fldt %1\n" "fscale \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" "fstp %%st(0)\n" : "=m" (x86_status_word), "+m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_UE - SW_OE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fscale"); } PRIVATE void FFPU do_fsglmul ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); WORD cw_temp; /* _asm { FSTCW cw_temp and cw_temp, ~X86_ROUNDING_PRECISION or cw_temp, PRECISION_CONTROL_SINGLE FLDCW cw_temp MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] FMUL FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] FLDCW x86_control_word } */ __asm__ __volatile__( "fstcw %0\n" "andl $(~X86_ROUNDING_PRECISION), %0\n" "orl $PRECISION_CONTROL_SINGLE, %0\n" "fldcw %0\n" "fldt %3\n" "fldt %2\n" "fmul \n" "fxam \n" "fnstsw %1\n" "fstpt %2\n" "fldcw %4\n" : "+m" (cw_temp), "=m" (x86_status_word), "+m" (dest) : "m" (src), "m" (x86_status_word) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fsglmul"); } PRIVATE void FFPU do_fsub ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] FSUB ST(0),ST(1) FXAM FNSTSW x86_status_word FSTP TBYTE PTR [EDI] FSTP ST(0) } */ __asm__ __volatile__( "fldt %2\n" "fldt %1\n" "fsub %%st(1), %%st(0)\n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" "fstp %%st(0)\n" : "=m" (x86_status_word), "+m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_UE - SW_OE - SW_PE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fsub"); } PRIVATE void FFPU do_fssub ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fldt %1\n" "fsub %%st(1), %%st(0)\n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" "fstp %%st(0)\n" : "=m" (x86_status_word), "+m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_UE - SW_OE - SW_PE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fssub"); } PRIVATE void FFPU do_fdsub ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); __asm__ __volatile__( "fldt %2\n" "fldt %1\n" "fsub %%st(1), %%st(0)\n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" "fstp %%st(0)\n" : "=m" (x86_status_word), "+m" (dest) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_UE - SW_OE - SW_PE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fdsub"); } PRIVATE void FFPU do_fsincos ( fpu_register & dest_sin, fpu_register & dest_cos, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest_cos] FLD TBYTE PTR [ESI] FSINCOS FSTP TBYTE PTR [EDI] FXAM MOV EDI, [dest_sin] FNSTSW x86_status_word FSTP TBYTE PTR [EDI] FSTP ST(0) } */ __asm__ __volatile__( "fldt %3\n" "fsincos\n" "fstpt %1\n" "fxam \n" "fnstsw %0\n" "fstpt %2\n" "fstp %%st(0)\n" : "=m" (x86_status_word), "=m" (dest_cos), "=m" (dest_sin) : "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~(SW_EXCEPTION_MASK - SW_IE - SW_UE - SW_PE); x86_status_word_accrued |= x86_status_word; } FPU_CONSISTENCY_CHECK_STOP("do_fsincos"); } PRIVATE void FFPU do_fcmp ( fpu_register & dest, fpu_register const & src ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { MOV ESI, [src] MOV EDI, [dest] FLD TBYTE PTR [ESI] FLD TBYTE PTR [EDI] FSUB ST(0),ST(1) FXAM FNSTSW x86_status_word FSTP ST(0) FSTP ST(0) } */ __asm__ __volatile__( "fldt %2\n" "fldt %1\n" "fsub %%st(1), %%st(0)\n" "fxam \n" "fnstsw %0\n" "fstp %%st(0)\n" "fstp %%st(0)\n" : "=m" (x86_status_word) : "m" (dest), "m" (src) ); if(x86_status_word & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); x86_status_word &= ~SW_EXCEPTION_MASK; } FPU_CONSISTENCY_CHECK_STOP("do_fcmp"); } // More or less original. Should be reviewed. PRIVATE fpu_double FFPU to_pack(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3) { FPU_CONSISTENCY_CHECK_START(); double d; char *cp; char str[100]; cp = str; if (wrd1 & 0x80000000) *cp++ = '-'; *cp++ = (char)((wrd1 & 0xf) + '0'); *cp++ = '.'; *cp++ = (char)(((wrd2 >> 28) & 0xf) + '0'); *cp++ = (char)(((wrd2 >> 24) & 0xf) + '0'); *cp++ = (char)(((wrd2 >> 20) & 0xf) + '0'); *cp++ = (char)(((wrd2 >> 16) & 0xf) + '0'); *cp++ = (char)(((wrd2 >> 12) & 0xf) + '0'); *cp++ = (char)(((wrd2 >> 8) & 0xf) + '0'); *cp++ = (char)(((wrd2 >> 4) & 0xf) + '0'); *cp++ = (char)(((wrd2 >> 0) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 28) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 24) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 20) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 16) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 12) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 8) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 4) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 0) & 0xf) + '0'); *cp++ = 'E'; if (wrd1 & 0x40000000) *cp++ = '-'; *cp++ = (char)(((wrd1 >> 24) & 0xf) + '0'); *cp++ = (char)(((wrd1 >> 20) & 0xf) + '0'); *cp++ = (char)(((wrd1 >> 16) & 0xf) + '0'); *cp = 0; sscanf(str, "%le", &d); D(bug("to_pack str = %s\r\n",str)); D(bug("to_pack(%X,%X,%X) = %.04f\r\n",wrd1,wrd2,wrd3,(float)d)); FPU_CONSISTENCY_CHECK_STOP("to_pack"); return d; } // More or less original. Should be reviewed. PRIVATE void FFPU from_pack (fpu_double src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3) { FPU_CONSISTENCY_CHECK_START(); int i; int t; char *cp; char str[100]; int exponent_digit_count = 0; sprintf(str, "%.16e", src); D(bug("from_pack(%.04f,%s)\r\n",(float)src,str)); cp = str; *wrd1 = *wrd2 = *wrd3 = 0; if (*cp == '-') { cp++; *wrd1 = 0x80000000; } if (*cp == '+') cp++; *wrd1 |= (*cp++ - '0'); if (*cp == '.') cp++; for (i = 0; i < 8; i++) { *wrd2 <<= 4; if (*cp >= '0' && *cp <= '9') *wrd2 |= *cp++ - '0'; } for (i = 0; i < 8; i++) { *wrd3 <<= 4; if (*cp >= '0' && *cp <= '9') *wrd3 |= *cp++ - '0'; } if (*cp == 'e' || *cp == 'E') { cp++; if (*cp == '-') { cp++; *wrd1 |= 0x40000000; } if (*cp == '+') cp++; t = 0; for (i = 0; i < 3; i++) { if (*cp >= '0' && *cp <= '9') { t = (t << 4) | (*cp++ - '0'); exponent_digit_count++; } } *wrd1 |= t << 16; } D(bug("from_pack(%.04f) = %X,%X,%X\r\n",(float)src,*wrd1,*wrd2,*wrd3)); WORD sw_temp; // _asm FNSTSW sw_temp __asm__ __volatile__("fnstsw %0" : "=m" (sw_temp)); if(sw_temp & SW_EXCEPTION_MASK) { // _asm FNCLEX __asm__ __volatile__("fnclex"); if(sw_temp & SW_PE) { x86_status_word |= SW_PE; x86_status_word_accrued |= SW_PE; } } /* OPERR is set if the k-factor > + 17 or the magnitude of the decimal exponent exceeds three digits; cleared otherwise. */ if(exponent_digit_count > 3) { x86_status_word |= SW_IE; x86_status_word_accrued |= SW_IE; } FPU_CONSISTENCY_CHECK_STOP("from_pack"); } PRIVATE int FFPU get_fp_value (uae_u32 opcode, uae_u32 extra, fpu_register & src) { static const int sz1[8] = {4, 4, 12, 12, 2, 8, 1, 0}; static const int sz2[8] = {4, 4, 12, 12, 2, 8, 2, 0}; // D(bug("get_fp_value(%X,%X)\r\n",(int)opcode,(int)extra)); // dump_first_bytes( regs.pc_p-4, 16 ); if ((extra & 0x4000) == 0) { memcpy( &src, &FPU registers[(extra >> 10) & 7], sizeof(fpu_register) ); // do_fmove_no_status( src, FPU registers[(extra >> 10) & 7] ); return 1; } int mode = (opcode >> 3) & 7; int reg = opcode & 7; int size = (extra >> 10) & 7; uae_u32 ad = 0; // D(bug("get_fp_value mode=%d, reg=%d, size=%d\r\n",(int)mode,(int)reg,(int)size)); switch ((uae_u8)mode) { case 0: switch ((uae_u8)size) { case 6: signed_to_extended( (uae_s32)(uae_s8) m68k_dreg (regs, reg), src ); break; case 4: signed_to_extended( (uae_s32)(uae_s16) m68k_dreg (regs, reg), src ); break; case 0: signed_to_extended( (uae_s32) m68k_dreg (regs, reg), src ); break; case 1: to_single( m68k_dreg (regs, reg), src ); break; default: return 0; } return 1; case 1: return 0; case 2: ad = m68k_areg (regs, reg); break; case 3: ad = m68k_areg (regs, reg); break; case 4: ad = m68k_areg (regs, reg) - (reg == 7 ? sz2[size] : sz1[size]); break; case 5: ad = m68k_areg (regs, reg) + (uae_s32) (uae_s16) next_iword(); break; case 6: ad = get_disp_ea_020 (m68k_areg (regs, reg), next_iword()); break; case 7: switch ((uae_u8)reg) { case 0: ad = (uae_s32) (uae_s16) next_iword(); break; case 1: ad = next_ilong(); break; case 2: ad = m68k_getpc (); ad += (uae_s32) (uae_s16) next_iword(); break; case 3: { uaecptr tmppc = m68k_getpc (); uae_u16 tmp = (uae_u16)next_iword(); ad = get_disp_ea_020 (tmppc, tmp); } break; case 4: ad = m68k_getpc (); m68k_setpc (ad + sz2[size]); /* +0000 000004 FSCALE.B #$01,FP2 | F23C 5926 0001 F23C 1111001000111100 5926 0101100100100110 0001 0000000000000001 mode = 7 reg = 4 size = 6 */ // Immediate addressing mode && Operation Length == Byte -> // Use the low-order byte of the extension word. if(size == 6) ad++; // May be faster on a PII(I), sz2[size] is already in register // ad += sz2[size] - sz1[size]; break; default: return 0; } } switch ((uae_u8)size) { case 0: signed_to_extended( (uae_s32) get_long (ad), src ); break; case 1: to_single( get_long (ad), src ); break; case 2:{ uae_u32 wrd1, wrd2, wrd3; wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); ad += 4; wrd3 = get_long (ad); to_exten( wrd1, wrd2, wrd3, src ); } break; case 3:{ uae_u32 wrd1, wrd2, wrd3; wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); ad += 4; wrd3 = get_long (ad); double_to_extended( to_pack(wrd1, wrd2, wrd3), src ); } break; case 4: signed_to_extended( (uae_s32)(uae_s16) get_word(ad), src ); break; case 5:{ uae_u32 wrd1, wrd2; wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); to_double(wrd1, wrd2, src); } break; case 6: signed_to_extended( (uae_s32)(uae_s8) get_byte(ad), src ); break; default: return 0; } switch (mode) { case 3: m68k_areg (regs, reg) += reg == 7 ? sz2[size] : sz1[size]; break; case 4: m68k_areg (regs, reg) -= reg == 7 ? sz2[size] : sz1[size]; break; } // D(bug("get_fp_value result = %.04f\r\n",(float)src)); return 1; } PRIVATE int FFPU put_fp_value (fpu_register const & value, uae_u32 opcode, uae_u32 extra) { static const int sz1[8] = {4, 4, 12, 12, 2, 8, 1, 0}; static const int sz2[8] = {4, 4, 12, 12, 2, 8, 2, 0}; // D(bug("put_fp_value(%.04f,%X,%X)\r\n",(float)value,(int)opcode,(int)extra)); if ((extra & 0x4000) == 0) { int dest_reg = (extra >> 10) & 7; do_fmove( FPU registers[dest_reg], value ); build_ex_status(); return 1; } int mode = (opcode >> 3) & 7; int reg = opcode & 7; int size = (extra >> 10) & 7; uae_u32 ad = 0xffffffff; // Clear exception status x86_status_word &= ~SW_EXCEPTION_MASK; switch ((uae_u8)mode) { case 0: switch ((uae_u8)size) { case 6: *((uae_u8 *)&m68k_dreg(regs, reg)) = extended_to_signed_8(value); break; case 4: // TODO_BIGENDIAN *((uae_u16 *)&m68k_dreg(regs, reg)) = extended_to_signed_16(value); break; case 0: m68k_dreg (regs, reg) = extended_to_signed_32(value); break; case 1: m68k_dreg (regs, reg) = from_single(value); break; default: return 0; } return 1; case 1: return 0; case 2: ad = m68k_areg (regs, reg); break; case 3: ad = m68k_areg (regs, reg); m68k_areg (regs, reg) += reg == 7 ? sz2[size] : sz1[size]; break; case 4: m68k_areg (regs, reg) -= reg == 7 ? sz2[size] : sz1[size]; ad = m68k_areg (regs, reg); break; case 5: ad = m68k_areg (regs, reg) + (uae_s32) (uae_s16) next_iword(); break; case 6: ad = get_disp_ea_020 (m68k_areg (regs, reg), next_iword()); break; case 7: switch ((uae_u8)reg) { case 0: ad = (uae_s32) (uae_s16) next_iword(); break; case 1: ad = next_ilong(); break; case 2: ad = m68k_getpc (); ad += (uae_s32) (uae_s16) next_iword(); break; case 3: { uaecptr tmppc = m68k_getpc (); uae_u16 tmp = (uae_u16)next_iword(); ad = get_disp_ea_020 (tmppc, tmp); } break; case 4: ad = m68k_getpc (); m68k_setpc (ad + sz2[size]); break; default: return 0; } } switch ((uae_u8)size) { case 0: put_long (ad, (uae_s32) extended_to_signed_32(value)); break; case 1: put_long (ad, from_single(value)); break; case 2: { uae_u32 wrd1, wrd2, wrd3; from_exten(value, &wrd1, &wrd2, &wrd3); x86_status_word &= ~SW_EXCEPTION_MASK; if(wrd3) { // TODO: not correct! Just a "smart" guess. x86_status_word |= SW_PE; x86_status_word_accrued |= SW_PE; } put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); ad += 4; put_long (ad, wrd3); } break; case 3: { uae_u32 wrd1, wrd2, wrd3; from_pack(extended_to_double(value), &wrd1, &wrd2, &wrd3); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); ad += 4; put_long (ad, wrd3); } break; case 4: put_word(ad, extended_to_signed_16(value)); break; case 5:{ uae_u32 wrd1, wrd2; from_double(value, &wrd1, &wrd2); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); } break; case 6: put_byte(ad, extended_to_signed_8(value)); break; default: return 0; } return 1; } PRIVATE int FFPU get_fp_ad(uae_u32 opcode, uae_u32 * ad) { int mode = (opcode >> 3) & 7; int reg = opcode & 7; switch ( (uae_u8)mode ) { case 0: case 1: if( (opcode & 0xFF00) == 0xF300 ) { // fsave, frestore m68k_setpc (m68k_getpc () - 2); } else { m68k_setpc (m68k_getpc () - 4); } op_illg (opcode); dump_registers( "END "); return 0; case 2: *ad = m68k_areg (regs, reg); break; case 3: *ad = m68k_areg (regs, reg); break; case 4: *ad = m68k_areg (regs, reg); break; case 5: *ad = m68k_areg (regs, reg) + (uae_s32) (uae_s16) next_iword(); break; case 6: *ad = get_disp_ea_020 (m68k_areg (regs, reg), next_iword()); break; case 7: switch ( (uae_u8)reg ) { case 0: *ad = (uae_s32) (uae_s16) next_iword(); break; case 1: *ad = next_ilong(); break; case 2: *ad = m68k_getpc (); *ad += (uae_s32) (uae_s16) next_iword(); break; case 3: { uaecptr tmppc = m68k_getpc (); uae_u16 tmp = (uae_u16)next_iword(); *ad = get_disp_ea_020 (tmppc, tmp); } break; default: if( (opcode & 0xFF00) == 0xF300 ) { // fsave, frestore m68k_setpc (m68k_getpc () - 2); } else { m68k_setpc (m68k_getpc () - 4); } op_illg (opcode); dump_registers( "END "); return 0; } } return 1; } #if FPU_DEBUG #define CONDRET(s,x) D(bug("fpp_cond %s = %d\r\n",s,(uint32)(x))); return (x) #else #define CONDRET(s,x) return (x) #endif PRIVATE int FFPU fpp_cond(uae_u32 opcode, int condition) { #define N (x86_status_word & SW_N) #define Z ((x86_status_word & (SW_Z_I_NAN_MASK)) == SW_Z) #define I ((x86_status_word & (SW_Z_I_NAN_MASK)) == (SW_I)) #define NotANumber ((x86_status_word & (SW_Z_I_NAN_MASK)) == SW_NAN) switch (condition & 0x1f) { // Common Tests, no BSUN case 0x01: CONDRET("Equal",Z); case 0x0e: CONDRET("Not Equal",!Z); // IEEE Nonaware Tests, BSUN case 0x12: SET_BSUN_ON_NAN(); CONDRET("Greater Than",!(NotANumber || Z || N)); case 0x1d: SET_BSUN_ON_NAN(); CONDRET("Not Greater Than",NotANumber || Z || N); case 0x13: SET_BSUN_ON_NAN(); CONDRET("Greater Than or Equal",Z || !(NotANumber || N)); case 0x1c: SET_BSUN_ON_NAN(); CONDRET("Not Greater Than or Equal",!Z && (NotANumber || N)); case 0x14: SET_BSUN_ON_NAN(); CONDRET("Less Than",N && !(NotANumber || Z)); case 0x1b: SET_BSUN_ON_NAN(); CONDRET("Not Less Than",NotANumber || Z || !N); case 0x15: SET_BSUN_ON_NAN(); CONDRET("Less Than or Equal",Z || (N && !NotANumber)); case 0x1a: SET_BSUN_ON_NAN(); CONDRET("Not Less Than or Equal",NotANumber || !(N || Z)); case 0x16: SET_BSUN_ON_NAN(); CONDRET("Greater or Less Than",!(NotANumber || Z)); case 0x19: SET_BSUN_ON_NAN(); CONDRET("Not Greater or Less Than",NotANumber || Z); case 0x17: CONDRET("Greater, Less or Equal",!NotANumber); case 0x18: SET_BSUN_ON_NAN(); CONDRET("Not Greater, Less or Equal",NotANumber); // IEEE Aware Tests, no BSUN case 0x02: CONDRET("Ordered Greater Than",!(NotANumber || Z || N)); case 0x0d: CONDRET("Unordered or Less or Equal",NotANumber || Z || N); case 0x03: CONDRET("Ordered Greater Than or Equal",Z || !(NotANumber || N)); case 0x0c: CONDRET("Unordered or Less Than",NotANumber || (N && !Z)); case 0x04: CONDRET("Ordered Less Than",N && !(NotANumber || Z)); case 0x0b: CONDRET("Unordered or Greater or Equal",NotANumber || Z || !N); case 0x05: CONDRET("Ordered Less Than or Equal",Z || (N && !NotANumber)); case 0x0a: CONDRET("Unordered or Greater Than",NotANumber || !(N || Z)); case 0x06: CONDRET("Ordered Greater or Less Than",!(NotANumber || Z)); case 0x09: CONDRET("Unordered or Equal",NotANumber || Z); case 0x07: CONDRET("Ordered",!NotANumber); case 0x08: CONDRET("Unordered",NotANumber); // Miscellaneous Tests, no BSUN case 0x00: CONDRET("False",0); case 0x0f: CONDRET("True",1); // Miscellaneous Tests, BSUN case 0x10: SET_BSUN_ON_NAN(); CONDRET("Signaling False",0); case 0x1f: SET_BSUN_ON_NAN(); CONDRET("Signaling True",1); case 0x11: SET_BSUN_ON_NAN(); CONDRET("Signaling Equal",Z); case 0x1e: SET_BSUN_ON_NAN(); CONDRET("Signaling Not Equal",!Z); } CONDRET("",-1); #undef N #undef Z #undef I #undef NotANumber } PUBLIC void REGPARAM2 FFPU fpuop_dbcc(uae_u32 opcode, uae_u32 extra) { uaecptr pc = (uae_u32) m68k_getpc (); uae_s32 disp = (uae_s32) (uae_s16) next_iword(); int cc; D(bug("fdbcc_opp %X, %X at %08lx\r\n", (uae_u32)opcode, (uae_u32)extra, m68k_getpc ())); cc = fpp_cond(opcode, extra & 0x3f); if (cc < 0) { m68k_setpc (pc - 4); op_illg (opcode); } else if (!cc) { int reg = opcode & 0x7; // TODO_BIGENDIAN uae_u16 newv = (uae_u16)(m68k_dreg (regs, reg) & 0xffff) - 1; *((uae_u16 *)&m68k_dreg(regs, reg)) = newv; if (newv != 0xffff) m68k_setpc (pc + disp); } } PUBLIC void REGPARAM2 FFPU fpuop_scc(uae_u32 opcode, uae_u32 extra) { uae_u32 ad; int cc; D(bug("fscc_opp %X, %X at %08lx\r\n", (uae_u32)opcode, (uae_u32)extra, m68k_getpc ())); cc = fpp_cond(opcode, extra & 0x3f); if (cc < 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); } else if ((opcode & 0x38) == 0) { // TODO_BIGENDIAN m68k_dreg (regs, opcode & 7) = (m68k_dreg (regs, opcode & 7) & ~0xff) | (cc ? 0xff : 0x00); } else { if (get_fp_ad(opcode, &ad)) { put_byte(ad, cc ? 0xff : 0x00); } } } PUBLIC void REGPARAM2 FFPU fpuop_trapcc(uae_u32 opcode, uaecptr oldpc, uae_u32 extra) { int cc; D(bug("ftrapcc_opp %X, %X at %08lx\r\n", (uae_u32)opcode, (uae_u32)extra, m68k_getpc ())); #if I3_ON_FTRAPCC #error "FIXME: _asm int 3" _asm int 3 #endif // This must be broken. cc = fpp_cond(opcode, extra & 0x3f); if (cc < 0) { m68k_setpc (oldpc); op_illg (opcode); } else if (cc) Exception(7, oldpc - 2); } // NOTE that we get here also when there is a FNOP (nontrapping false, displ 0) PUBLIC void REGPARAM2 FFPU fpuop_bcc(uae_u32 opcode, uaecptr pc, uae_u32 extra) { int cc; D(bug("fbcc_opp %X, %X at %08lx, jumpto=%X\r\n", (uae_u32)opcode, (uae_u32)extra, m68k_getpc (), extra )); cc = fpp_cond(opcode, opcode & 0x3f); if (cc < 0) { m68k_setpc (pc); op_illg (opcode); } else if (cc) { if ((opcode & 0x40) == 0) extra = (uae_s32) (uae_s16) extra; m68k_setpc (pc + extra); } } // FSAVE has no post-increment // 0x1f180000 == IDLE state frame, coprocessor version number 1F PUBLIC void REGPARAM2 FFPU fpuop_save(uae_u32 opcode) { uae_u32 ad; int incr = (opcode & 0x38) == 0x20 ? -1 : 1; int i; D(bug("fsave_opp at %08lx\r\n", m68k_getpc ())); if (get_fp_ad(opcode, &ad)) { if (FPU is_integral) { // Put 4 byte 68040 IDLE frame. if (incr < 0) { ad -= 4; put_long (ad, 0x41000000); } else { put_long (ad, 0x41000000); ad += 4; } } else { // Put 28 byte 68881 IDLE frame. if (incr < 0) { D(bug("fsave_opp pre-decrement\r\n")); ad -= 4; // What's this? Some BIU flags, or (incorrectly placed) command/condition? put_long (ad, 0x70000000); for (i = 0; i < 5; i++) { ad -= 4; put_long (ad, 0x00000000); } ad -= 4; put_long (ad, 0x1f180000); // IDLE, vers 1f } else { put_long (ad, 0x1f180000); // IDLE, vers 1f ad += 4; for (i = 0; i < 5; i++) { put_long (ad, 0x00000000); ad += 4; } // What's this? Some BIU flags, or (incorrectly placed) command/condition? put_long (ad, 0x70000000); ad += 4; } } if ((opcode & 0x38) == 0x18) { m68k_areg (regs, opcode & 7) = ad; // Never executed on a 68881 D(bug("PROBLEM: fsave_opp post-increment\r\n")); } if ((opcode & 0x38) == 0x20) { m68k_areg (regs, opcode & 7) = ad; D(bug("fsave_opp pre-decrement %X -> A%d\r\n",ad,opcode & 7)); } } } PRIVATE void FFPU do_null_frestore () { // A null-restore operation sets FP7-FP0 positive, nonsignaling NANs. for( int i=0; i<8; i++ ) { MAKE_NAN( FPU registers[i], false ); } FPU instruction_address = 0; set_fpcr(0); set_fpsr(0); x86_status_word = SW_INITIAL; x86_status_word_accrued = 0; FPU fpsr.quotient = 0; x86_control_word = CW_INITIAL; /* _asm FLDCW x86_control_word _asm FNCLEX */ __asm__ __volatile__("fldcw %0\n\tfnclex" : : "m" (x86_control_word)); } // FSAVE has no pre-decrement PUBLIC void REGPARAM2 FFPU fpuop_restore(uae_u32 opcode) { uae_u32 ad; uae_u32 d; int incr = (opcode & 0x38) == 0x20 ? -1 : 1; D(bug("frestore_opp at %08lx\r\n", m68k_getpc ())); if (get_fp_ad(opcode, &ad)) { if (FPU is_integral) { // 68040 if (incr < 0) { D(bug("PROBLEM: frestore_opp incr < 0\r\n")); // this may be wrong, but it's never called. ad -= 4; d = get_long (ad); if ((d & 0xff000000) == 0) { // NULL D(bug("frestore_opp found NULL frame at %X\r\n",ad-4)); do_null_frestore(); } else if ((d & 0x00ff0000) == 0) { // IDLE D(bug("frestore_opp found IDLE frame at %X\r\n",ad-4)); } else if ((d & 0x00ff0000) == 0x00300000) { // UNIMP D(bug("PROBLEM: frestore_opp found UNIMP frame at %X\r\n",ad-4)); ad -= 44; } else if ((d & 0x00ff0000) == 0x00600000) { // BUSY D(bug("PROBLEM: frestore_opp found BUSY frame at %X\r\n",ad-4)); ad -= 92; } else { D(bug("PROBLEM: frestore_opp did not find a frame at %X, d=%X\r\n",ad-4,d)); } } else { d = get_long (ad); D(bug("frestore_opp frame at %X = %X\r\n",ad,d)); ad += 4; if ((d & 0xff000000) == 0) { // NULL D(bug("frestore_opp found NULL frame at %X\r\n",ad-4)); do_null_frestore(); } else if ((d & 0x00ff0000) == 0) { // IDLE D(bug("frestore_opp found IDLE frame at %X\r\n",ad-4)); } else if ((d & 0x00ff0000) == 0x00300000) { // UNIMP D(bug("PROBLEM: frestore_opp found UNIMP frame at %X\r\n",ad-4)); ad += 44; } else if ((d & 0x00ff0000) == 0x00600000) { // BUSY D(bug("PROBLEM: frestore_opp found BUSY frame at %X\r\n",ad-4)); ad += 92; } else { D(bug("PROBLEM: frestore_opp did not find a frame at %X, d=%X\r\n",ad-4,d)); } } } else { // 68881 if (incr < 0) { D(bug("PROBLEM: frestore_opp incr < 0\r\n")); // this may be wrong, but it's never called. ad -= 4; d = get_long (ad); if ((d & 0xff000000) == 0) { // NULL do_null_frestore(); } else if ((d & 0x00ff0000) == 0x00180000) { ad -= 6 * 4; } else if ((d & 0x00ff0000) == 0x00380000) { ad -= 14 * 4; } else if ((d & 0x00ff0000) == 0x00b40000) { ad -= 45 * 4; } } else { d = get_long (ad); D(bug("frestore_opp frame at %X = %X\r\n",ad,d)); ad += 4; if ((d & 0xff000000) == 0) { // NULL D(bug("frestore_opp found NULL frame at %X\r\n",ad-4)); do_null_frestore(); } else if ((d & 0x00ff0000) == 0x00180000) { // IDLE D(bug("frestore_opp found IDLE frame at %X\r\n",ad-4)); ad += 6 * 4; } else if ((d & 0x00ff0000) == 0x00380000) {// UNIMP? shouldn't it be 3C? ad += 14 * 4; D(bug("PROBLEM: frestore_opp found UNIMP? frame at %X\r\n",ad-4)); } else if ((d & 0x00ff0000) == 0x00b40000) {// BUSY D(bug("PROBLEM: frestore_opp found BUSY frame at %X\r\n",ad-4)); ad += 45 * 4; } else { D(bug("PROBLEM: frestore_opp did not find a frame at %X, d=%X\r\n",ad-4,d)); } } } if ((opcode & 0x38) == 0x18) { m68k_areg (regs, opcode & 7) = ad; D(bug("frestore_opp post-increment %X -> A%d\r\n",ad,opcode & 7)); } if ((opcode & 0x38) == 0x20) { m68k_areg (regs, opcode & 7) = ad; // Never executed on a 68881 D(bug("PROBLEM: frestore_opp pre-decrement\r\n")); } } } /* ---------------------------- Old-style interface ---------------------------- */ // #ifndef OPTIMIZED_8BIT_MEMORY_ACCESS PUBLIC void REGPARAM2 FFPU fpuop_arithmetic(uae_u32 opcode, uae_u32 extra) { uae_u32 mask = (extra & 0xFC7F) | ((opcode & 0x0038) << 4); (*fpufunctbl[mask])(opcode,extra); } // #endif /* ---------------------------- Illegal ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_illg( uae_u32 opcode, uae_u32 extra ) { D(bug("ILLEGAL F OP 2 %X\r\n",opcode)); #if I3_ON_ILLEGAL_FPU_OP #error "FIXME: asm int 3" _asm int 3 #endif m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); } /* ---------------------------- FPP -> ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_fmove_2_ea( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVE -> \r\n")); if (put_fp_value (FPU registers[(extra >> 7) & 7], opcode, extra) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); } /* Needed (among other things) by some Pack5/Elems68k transcendental functions, they require the ACCR_INEX flag after a "MOVE.D, Dreg". However, now put_fp_value() is responsible of clearing the exceptions and merging statuses. */ /* WORD sw_temp; _asm FNSTSW sw_temp if(sw_temp & SW_PE) { _asm FNCLEX x86_status_word |= SW_PE; x86_status_word_accrued |= SW_PE; } */ dump_registers( "END "); } /* ---------------------------- CONTROL REGS -> Dreg ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Dreg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM control(none) -> D%d\r\n", opcode & 7)); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Dreg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM FPU instruction_address (%X) -> D%d\r\n", FPU instruction_address, opcode & 7)); m68k_dreg (regs, opcode & 7) = FPU instruction_address; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Dreg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM regs.FPU fpsr (%X) -> D%d\r\n", get_fpsr(), opcode & 7)); m68k_dreg (regs, opcode & 7) = get_fpsr(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Dreg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM regs.FPU fpcr (%X) -> D%d\r\n", get_fpcr(), opcode & 7)); m68k_dreg (regs, opcode & 7) = get_fpcr(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Dreg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM regs.FPU fpsr (%X) -> D%d\r\n", get_fpsr(), opcode & 7)); m68k_dreg (regs, opcode & 7) = get_fpsr(); D(bug("FMOVEM FPU instruction_address (%X) -> D%d\r\n", FPU instruction_address, opcode & 7)); m68k_dreg (regs, opcode & 7) = FPU instruction_address; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Dreg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM regs.FPU fpcr (%X) -> D%d\r\n", get_fpcr(), opcode & 7)); m68k_dreg (regs, opcode & 7) = get_fpcr(); D(bug("FMOVEM FPU instruction_address (%X) -> D%d\r\n", FPU instruction_address, opcode & 7)); m68k_dreg (regs, opcode & 7) = FPU instruction_address; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Dreg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM regs.FPU fpcr (%X) -> D%d\r\n", get_fpcr(), opcode & 7)); m68k_dreg (regs, opcode & 7) = get_fpcr(); D(bug("FMOVEM regs.FPU fpsr (%X) -> D%d\r\n", get_fpsr(), opcode & 7)); m68k_dreg (regs, opcode & 7) = get_fpsr(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Dreg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM regs.FPU fpcr (%X) -> D%d\r\n", get_fpcr(), opcode & 7)); m68k_dreg (regs, opcode & 7) = get_fpcr(); D(bug("FMOVEM regs.FPU fpsr (%X) -> D%d\r\n", get_fpsr(), opcode & 7)); m68k_dreg (regs, opcode & 7) = get_fpsr(); D(bug("FMOVEM FPU instruction_address (%X) -> D%d\r\n", FPU instruction_address, opcode & 7)); m68k_dreg (regs, opcode & 7) = FPU instruction_address; dump_registers( "END "); } /* ---------------------------- Dreg -> CONTROL REGS ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_none( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM D%d -> control(none)\r\n", opcode & 7)); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpiar( uae_u32 opcode, uae_u32 extra ) { FPU instruction_address = m68k_dreg (regs, opcode & 7); D(bug("FMOVEM D%d (%X) -> FPU instruction_address\r\n", opcode & 7, FPU instruction_address)); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpsr( uae_u32 opcode, uae_u32 extra ) { set_fpsr( m68k_dreg (regs, opcode & 7) ); D(bug("FMOVEM D%d (%X) -> regs.FPU fpsr\r\n", opcode & 7, get_fpsr())); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpsr_fpiar( uae_u32 opcode, uae_u32 extra ) { set_fpsr( m68k_dreg (regs, opcode & 7) ); D(bug("FMOVEM D%d (%X) -> regs.FPU fpsr\r\n", opcode & 7, get_fpsr())); FPU instruction_address = m68k_dreg (regs, opcode & 7); D(bug("FMOVEM D%d (%X) -> FPU instruction_address\r\n", opcode & 7, FPU instruction_address)); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpcr( uae_u32 opcode, uae_u32 extra ) { set_fpcr( m68k_dreg (regs, opcode & 7) ); D(bug("FMOVEM D%d (%X) -> regs.FPU fpcr\r\n", opcode & 7, get_fpcr())); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpcr_fpiar( uae_u32 opcode, uae_u32 extra ) { set_fpcr( m68k_dreg (regs, opcode & 7) ); D(bug("FMOVEM D%d (%X) -> regs.FPU fpcr\r\n", opcode & 7, get_fpcr())); FPU instruction_address = m68k_dreg (regs, opcode & 7); D(bug("FMOVEM D%d (%X) -> FPU instruction_address\r\n", opcode & 7, FPU instruction_address)); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpcr_fpsr( uae_u32 opcode, uae_u32 extra ) { set_fpcr( m68k_dreg (regs, opcode & 7) ); D(bug("FMOVEM D%d (%X) -> regs.FPU fpcr\r\n", opcode & 7, get_fpcr())); set_fpsr( m68k_dreg (regs, opcode & 7) ); D(bug("FMOVEM D%d (%X) -> regs.FPU fpsr\r\n", opcode & 7, get_fpsr())); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Dreg_2_fpcr_fpsr_fpiar( uae_u32 opcode, uae_u32 extra ) { set_fpcr( m68k_dreg (regs, opcode & 7) ); D(bug("FMOVEM D%d (%X) -> regs.FPU fpcr\r\n", opcode & 7, get_fpcr())); set_fpsr( m68k_dreg (regs, opcode & 7) ); D(bug("FMOVEM D%d (%X) -> regs.FPU fpsr\r\n", opcode & 7, get_fpsr())); FPU instruction_address = m68k_dreg (regs, opcode & 7); D(bug("FMOVEM D%d (%X) -> FPU instruction_address\r\n", opcode & 7, FPU instruction_address)); dump_registers( "END "); } /* ---------------------------- CONTROL REGS -> Areg ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Areg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM control(none) -> A%d\r\n", opcode & 7)); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Areg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM FPU instruction_address (%X) -> A%d\r\n", FPU instruction_address, opcode & 7)); m68k_areg (regs, opcode & 7) = FPU instruction_address; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Areg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM regs.FPU fpsr (%X) -> A%d\r\n", get_fpsr(), opcode & 7)); m68k_areg (regs, opcode & 7) = get_fpsr(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Areg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM regs.FPU fpcr (%X) -> A%d\r\n", get_fpcr(), opcode & 7)); m68k_areg (regs, opcode & 7) = get_fpcr(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Areg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM regs.FPU fpsr (%X) -> A%d\r\n", get_fpsr(), opcode & 7)); m68k_areg (regs, opcode & 7) = get_fpsr(); D(bug("FMOVEM FPU instruction_address (%X) -> A%d\r\n", FPU instruction_address, opcode & 7)); m68k_areg (regs, opcode & 7) = FPU instruction_address; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Areg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM regs.FPU fpcr (%X) -> A%d\r\n", get_fpcr(), opcode & 7)); m68k_areg (regs, opcode & 7) = get_fpcr(); D(bug("FMOVEM FPU instruction_address (%X) -> A%d\r\n", FPU instruction_address, opcode & 7)); m68k_areg (regs, opcode & 7) = FPU instruction_address; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Areg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM regs.FPU fpcr (%X) -> A%d\r\n", get_fpcr(), opcode & 7)); m68k_areg (regs, opcode & 7) = get_fpcr(); D(bug("FMOVEM regs.FPU fpsr (%X) -> A%d\r\n", get_fpsr(), opcode & 7)); m68k_areg (regs, opcode & 7) = get_fpsr(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Areg( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM regs.FPU fpcr (%X) -> A%d\r\n", get_fpcr(), opcode & 7)); m68k_areg (regs, opcode & 7) = get_fpcr(); D(bug("FMOVEM regs.FPU fpsr (%X) -> A%d\r\n", get_fpsr(), opcode & 7)); m68k_areg (regs, opcode & 7) = get_fpsr(); D(bug("FMOVEM FPU instruction_address (%X) -> A%d\r\n", FPU instruction_address, opcode & 7)); m68k_areg (regs, opcode & 7) = FPU instruction_address; dump_registers( "END "); } /* ---------------------------- Areg -> CONTROL REGS ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_none( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM A%d -> control(none)\r\n", opcode & 7)); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpiar( uae_u32 opcode, uae_u32 extra ) { FPU instruction_address = m68k_areg (regs, opcode & 7); D(bug("FMOVEM A%d (%X) -> FPU instruction_address\r\n", opcode & 7, FPU instruction_address)); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpsr( uae_u32 opcode, uae_u32 extra ) { set_fpsr( m68k_areg (regs, opcode & 7) ); D(bug("FMOVEM A%d (%X) -> regs.FPU fpsr\r\n", opcode & 7, get_fpsr())); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpsr_fpiar( uae_u32 opcode, uae_u32 extra ) { set_fpsr( m68k_areg (regs, opcode & 7) ); D(bug("FMOVEM A%d (%X) -> regs.FPU fpsr\r\n", opcode & 7, get_fpsr())); FPU instruction_address = m68k_areg (regs, opcode & 7); D(bug("FMOVEM A%d (%X) -> FPU instruction_address\r\n", opcode & 7, FPU instruction_address)); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpcr( uae_u32 opcode, uae_u32 extra ) { set_fpcr( m68k_areg (regs, opcode & 7) ); D(bug("FMOVEM A%d (%X) -> regs.FPU fpcr\r\n", opcode & 7, get_fpcr())); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpcr_fpiar( uae_u32 opcode, uae_u32 extra ) { set_fpcr( m68k_areg (regs, opcode & 7) ); D(bug("FMOVEM A%d (%X) -> regs.FPU fpcr\r\n", opcode & 7, get_fpcr())); FPU instruction_address = m68k_areg (regs, opcode & 7); D(bug("FMOVEM A%d (%X) -> FPU instruction_address\r\n", opcode & 7, FPU instruction_address)); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpcr_fpsr( uae_u32 opcode, uae_u32 extra ) { set_fpcr( m68k_areg (regs, opcode & 7) ); D(bug("FMOVEM A%d (%X) -> regs.FPU fpcr\r\n", opcode & 7, get_fpcr())); set_fpsr( m68k_areg (regs, opcode & 7) ); D(bug("FMOVEM A%d (%X) -> regs.FPU fpsr\r\n", opcode & 7, get_fpsr())); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Areg_2_fpcr_fpsr_fpiar( uae_u32 opcode, uae_u32 extra ) { set_fpcr( m68k_areg (regs, opcode & 7) ); D(bug("FMOVEM A%d (%X) -> regs.FPU fpcr\r\n", opcode & 7, get_fpcr())); set_fpsr( m68k_areg (regs, opcode & 7) ); D(bug("FMOVEM A%d (%X) -> regs.FPU fpsr\r\n", opcode & 7, get_fpsr())); FPU instruction_address = m68k_areg (regs, opcode & 7); D(bug("FMOVEM A%d (%X) -> FPU instruction_address\r\n", opcode & 7, FPU instruction_address)); dump_registers( "END "); } /* ---------------------------- CONTROL REGS -> --MEMORY---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM Control regs (none) -> mem\r\n" )); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { ad -= 4; put_long (ad, FPU instruction_address); D(bug("FMOVEM FPU instruction_address (%X) -> mem %X\r\n", FPU instruction_address, ad )); m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { ad -= 4; put_long (ad, get_fpsr()); D(bug("FMOVEM regs.FPU fpsr (%X) -> mem %X\r\n", get_fpsr(), ad )); m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { ad -= 8; put_long (ad, get_fpsr()); D(bug("FMOVEM regs.FPU fpsr (%X) -> mem %X\r\n", get_fpsr(), ad )); put_long (ad+4, FPU instruction_address); D(bug("FMOVEM FPU instruction_address (%X) -> mem %X\r\n", FPU instruction_address, ad+4 )); m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { ad -= 4; put_long (ad, get_fpcr()); D(bug("FMOVEM regs.FPU fpcr (%X) -> mem %X\r\n", get_fpcr(), ad )); m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { ad -= 8; put_long (ad, get_fpcr()); D(bug("FMOVEM regs.FPU fpcr (%X) -> mem %X\r\n", get_fpcr(), ad )); put_long (ad+4, FPU instruction_address); D(bug("FMOVEM FPU instruction_address (%X) -> mem %X\r\n", FPU instruction_address, ad+4 )); m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { ad -= 8; put_long (ad, get_fpcr()); D(bug("FMOVEM regs.FPU fpcr (%X) -> mem %X\r\n", get_fpcr(), ad )); put_long (ad+4, get_fpsr()); D(bug("FMOVEM regs.FPU fpsr (%X) -> mem %X\r\n", get_fpsr(), ad+4 )); m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Mem_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { ad -= 12; put_long (ad, get_fpcr()); D(bug("FMOVEM regs.FPU fpcr (%X) -> mem %X\r\n", get_fpcr(), ad )); put_long (ad+4, get_fpsr()); D(bug("FMOVEM regs.FPU fpsr (%X) -> mem %X\r\n", get_fpsr(), ad+4 )); put_long (ad+8, FPU instruction_address); D(bug("FMOVEM FPU instruction_address (%X) -> mem %X\r\n", FPU instruction_address, ad+8 )); m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } /* ---------------------------- CONTROL REGS -> MEMORY++ ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM Control regs (none) -> mem\r\n" )); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { put_long (ad, FPU instruction_address); D(bug("FMOVEM FPU instruction_address (%X) -> mem %X\r\n", FPU instruction_address, ad )); m68k_areg (regs, opcode & 7) = ad+4; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { put_long (ad, get_fpsr()); D(bug("FMOVEM regs.FPU fpsr (%X) -> mem %X\r\n", get_fpsr(), ad )); m68k_areg (regs, opcode & 7) = ad+4; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { put_long (ad, get_fpsr()); D(bug("FMOVEM regs.FPU fpsr (%X) -> mem %X\r\n", get_fpsr(), ad )); put_long (ad+4, FPU instruction_address); D(bug("FMOVEM FPU instruction_address (%X) -> mem %X\r\n", FPU instruction_address, ad+4 )); m68k_areg (regs, opcode & 7) = ad+8; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { put_long (ad, get_fpcr()); D(bug("FMOVEM regs.FPU fpcr (%X) -> mem %X\r\n", get_fpcr(), ad )); m68k_areg (regs, opcode & 7) = ad+4; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { put_long (ad, get_fpcr()); D(bug("FMOVEM regs.FPU fpcr (%X) -> mem %X\r\n", get_fpcr(), ad )); put_long (ad+4, FPU instruction_address); D(bug("FMOVEM FPU instruction_address (%X) -> mem %X\r\n", FPU instruction_address, ad+4 )); m68k_areg (regs, opcode & 7) = ad+8; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ) { dump_registers( "END "); uae_u32 ad; if (get_fp_ad(opcode, &ad)) { put_long (ad, get_fpcr()); D(bug("FMOVEM regs.FPU fpcr (%X) -> mem %X\r\n", get_fpcr(), ad )); put_long (ad+4, get_fpsr()); D(bug("FMOVEM regs.FPU fpsr (%X) -> mem %X\r\n", get_fpsr(), ad+4 )); m68k_areg (regs, opcode & 7) = ad+8; } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Mem_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { put_long (ad, get_fpcr()); D(bug("FMOVEM regs.FPU fpcr (%X) -> mem %X\r\n", get_fpcr(), ad )); put_long (ad+4, get_fpsr()); D(bug("FMOVEM regs.FPU fpsr (%X) -> mem %X\r\n", get_fpsr(), ad+4 )); put_long (ad+8, FPU instruction_address); D(bug("FMOVEM FPU instruction_address (%X) -> mem %X\r\n", FPU instruction_address, ad+8 )); m68k_areg (regs, opcode & 7) = ad+12; dump_registers( "END "); } } /* ---------------------------- CONTROL REGS -> MEMORY ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_fmovem_none_2_Mem( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM Control regs (none) -> mem\r\n" )); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { put_long (ad, FPU instruction_address); D(bug("FMOVEM FPU instruction_address (%X) -> mem %X\r\n", FPU instruction_address, ad )); dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_2_Mem( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { put_long (ad, get_fpsr()); D(bug("FMOVEM regs.FPU fpsr (%X) -> mem %X\r\n", get_fpsr(), ad )); dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpsr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { put_long (ad, get_fpsr()); D(bug("FMOVEM regs.FPU fpsr (%X) -> mem %X\r\n", get_fpsr(), ad )); put_long (ad+4, FPU instruction_address); D(bug("FMOVEM FPU instruction_address (%X) -> mem %X\r\n", FPU instruction_address, ad+4 )); dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_2_Mem( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { put_long (ad, get_fpcr()); D(bug("FMOVEM regs.FPU fpcr (%X) -> mem %X\r\n", get_fpcr(), ad )); dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { put_long (ad, get_fpcr()); D(bug("FMOVEM regs.FPU fpcr (%X) -> mem %X\r\n", get_fpcr(), ad )); put_long (ad+4, FPU instruction_address); D(bug("FMOVEM FPU instruction_address (%X) -> mem %X\r\n", FPU instruction_address, ad+4 )); dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_2_Mem( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { put_long (ad, get_fpcr()); D(bug("FMOVEM regs.FPU fpcr (%X) -> mem %X\r\n", get_fpcr(), ad )); put_long (ad+4, get_fpsr()); D(bug("FMOVEM regs.FPU fpsr (%X) -> mem %X\r\n", get_fpsr(), ad+4 )); dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { put_long (ad, get_fpcr()); D(bug("FMOVEM regs.FPU fpcr (%X) -> mem %X\r\n", get_fpcr(), ad )); put_long (ad+4, get_fpsr()); D(bug("FMOVEM regs.FPU fpsr (%X) -> mem %X\r\n", get_fpsr(), ad+4 )); put_long (ad+8, FPU instruction_address); D(bug("FMOVEM FPU instruction_address (%X) -> mem %X\r\n", FPU instruction_address, ad+8 )); dump_registers( "END "); } } /* ---------------------------- --MEMORY -> CONTROL REGS ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_none_predecrement( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM --Mem -> control(none)\r\n")); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpiar_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { ad -= 4; FPU instruction_address = get_long (ad); D(bug("FMOVEM mem %X (%X) -> FPU instruction_address\r\n", ad, FPU instruction_address )); m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { ad -= 4; set_fpsr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpsr\r\n", ad, get_fpsr() )); m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_fpiar_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { ad -= 8; set_fpsr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpsr\r\n", ad, get_fpsr() )); FPU instruction_address = get_long (ad+4); D(bug("FMOVEM mem %X (%X) -> FPU instruction_address\r\n", ad+4, FPU instruction_address )); m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { ad -= 4; set_fpcr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpcr\r\n", ad, get_fpcr() )); m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpiar_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { ad -= 8; set_fpcr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpcr\r\n", ad, get_fpcr() )); FPU instruction_address = get_long (ad+4); D(bug("FMOVEM mem %X (%X) -> FPU instruction_address\r\n", ad+4, FPU instruction_address )); m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { ad -= 8; set_fpcr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpcr\r\n", ad, get_fpcr() )); set_fpsr( get_long (ad+4) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpsr\r\n", ad+4, get_fpsr() )); m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_fpiar_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { ad -= 12; set_fpcr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpcr\r\n", ad, get_fpcr() )); set_fpsr( get_long (ad+4) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpsr\r\n", ad+4, get_fpsr() )); FPU instruction_address = get_long (ad+8); D(bug("FMOVEM mem %X (%X) -> FPU instruction_address\r\n", ad+8, FPU instruction_address )); m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } /* ---------------------------- CONTROL REGS -> MEMORY++ ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_none_postincrement( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM Mem++ -> control(none)\r\n")); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpiar_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { FPU instruction_address = get_long (ad); D(bug("FMOVEM mem %X (%X) -> FPU instruction_address\r\n", ad, FPU instruction_address )); m68k_areg (regs, opcode & 7) = ad+4; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { set_fpsr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpsr\r\n", ad, get_fpsr() )); m68k_areg (regs, opcode & 7) = ad+4; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_fpiar_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { set_fpsr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpsr\r\n", ad, get_fpsr() )); FPU instruction_address = get_long (ad+4); D(bug("FMOVEM mem %X (%X) -> FPU instruction_address\r\n", ad+4, FPU instruction_address )); m68k_areg (regs, opcode & 7) = ad+8; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { set_fpcr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpcr\r\n", ad, get_fpcr() )); m68k_areg (regs, opcode & 7) = ad+4; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpiar_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { set_fpcr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpcr\r\n", ad, get_fpcr() )); FPU instruction_address = get_long (ad+4); D(bug("FMOVEM mem %X (%X) -> FPU instruction_address\r\n", ad+4, FPU instruction_address )); m68k_areg (regs, opcode & 7) = ad+8; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { set_fpcr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpcr\r\n", ad, get_fpcr() )); set_fpsr( get_long (ad+4) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpsr\r\n", ad+4, get_fpsr() )); m68k_areg (regs, opcode & 7) = ad+8; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_fpiar_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { set_fpcr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpcr\r\n", ad, get_fpcr() )); set_fpsr( get_long (ad+4) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpsr\r\n", ad+4, get_fpsr() )); FPU instruction_address = get_long (ad+8); D(bug("FMOVEM mem %X (%X) -> FPU instruction_address\r\n", ad+8, FPU instruction_address )); m68k_areg (regs, opcode & 7) = ad+12; dump_registers( "END "); } } /* ---------------------------- MEMORY -> CONTROL REGS ---------------------------- */ /* ---------------------------- and ---------------------------- */ /* ---------------------------- IMMEDIATE -> CONTROL REGS ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_none_2_Mem( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVEM Mem -> control(none)\r\n")); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ) { if ((opcode & 0x3f) == 0x3c) { FPU instruction_address = next_ilong(); D(bug("FMOVEM #<%X> -> FPU instruction_address\r\n", FPU instruction_address)); } else { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { FPU instruction_address = get_long (ad); D(bug("FMOVEM mem %X (%X) -> FPU instruction_address\r\n", ad, FPU instruction_address )); } } dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_2_Mem( uae_u32 opcode, uae_u32 extra ) { if ((opcode & 0x3f) == 0x3c) { set_fpsr( next_ilong() ); D(bug("FMOVEM #<%X> -> regs.FPU fpsr\r\n", get_fpsr())); } else { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { set_fpsr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpsr\r\n", ad, get_fpsr() )); } } dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpsr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ) { if ((opcode & 0x3f) == 0x3c) { set_fpsr( next_ilong() ); D(bug("FMOVEM #<%X> -> regs.FPU fpsr\r\n", get_fpsr())); FPU instruction_address = next_ilong(); D(bug("FMOVEM #<%X> -> FPU instruction_address\r\n", FPU instruction_address)); } else { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { set_fpsr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpsr\r\n", ad, get_fpsr() )); FPU instruction_address = get_long (ad+4); D(bug("FMOVEM mem %X (%X) -> FPU instruction_address\r\n", ad+4, FPU instruction_address )); } } dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_2_Mem( uae_u32 opcode, uae_u32 extra ) { if ((opcode & 0x3f) == 0x3c) { set_fpcr( next_ilong() ); D(bug("FMOVEM #<%X> -> regs.FPU fpcr\r\n", get_fpcr())); } else { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { set_fpcr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpcr\r\n", ad, get_fpcr() )); } } dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ) { if ((opcode & 0x3f) == 0x3c) { set_fpcr( next_ilong() ); D(bug("FMOVEM #<%X> -> regs.FPU fpcr\r\n", get_fpcr())); FPU instruction_address = next_ilong(); D(bug("FMOVEM #<%X> -> FPU instruction_address\r\n", FPU instruction_address)); } else { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { set_fpcr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpcr\r\n", ad, get_fpcr() )); FPU instruction_address = get_long (ad+4); D(bug("FMOVEM mem %X (%X) -> FPU instruction_address\r\n", ad+4, FPU instruction_address )); } } dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_2_Mem( uae_u32 opcode, uae_u32 extra ) { if ((opcode & 0x3f) == 0x3c) { set_fpcr( next_ilong() ); D(bug("FMOVEM #<%X> -> regs.FPU fpcr\r\n", get_fpcr())); set_fpsr( next_ilong() ); D(bug("FMOVEM #<%X> -> regs.FPU fpsr\r\n", get_fpsr())); } else { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { set_fpcr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpcr\r\n", ad, get_fpcr() )); set_fpsr( get_long (ad+4) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpsr\r\n", ad+4, get_fpsr() )); } } dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_fpiar_2_Mem( uae_u32 opcode, uae_u32 extra ) { if ((opcode & 0x3f) == 0x3c) { set_fpcr( next_ilong() ); D(bug("FMOVEM #<%X> -> regs.FPU fpcr\r\n", get_fpcr())); set_fpsr( next_ilong() ); D(bug("FMOVEM #<%X> -> regs.FPU fpsr\r\n", get_fpsr())); FPU instruction_address = next_ilong(); D(bug("FMOVEM #<%X> -> FPU instruction_address\r\n", FPU instruction_address)); } else { uae_u32 ad; if (get_fp_ad(opcode, &ad)) { set_fpcr( get_long (ad) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpcr\r\n", ad, get_fpcr() )); set_fpsr( get_long (ad+4) ); D(bug("FMOVEM mem %X (%X) -> regs.FPU fpsr\r\n", ad+4, get_fpsr() )); FPU instruction_address = get_long (ad+8); D(bug("FMOVEM mem %X (%X) -> FPU instruction_address\r\n", ad+8, FPU instruction_address )); } } dump_registers( "END "); } /* ---------------------------- FMOVEM MEMORY -> FPP ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_pred_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = extra & 0xff; D(bug("FMOVEM memory->FPP\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=7; reg>=0; reg-- ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { ad -= 4; wrd3 = get_long (ad); ad -= 4; wrd2 = get_long (ad); ad -= 4; wrd1 = get_long (ad); to_exten_no_normalize (wrd1, wrd2, wrd3,FPU registers[reg]); } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_pred_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = extra & 0xff; D(bug("FMOVEM memory->FPP\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=7; reg>=0; reg-- ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { ad -= 4; wrd3 = get_long (ad); ad -= 4; wrd2 = get_long (ad); ad -= 4; wrd1 = get_long (ad); to_exten_no_normalize (wrd1, wrd2, wrd3,FPU registers[reg]); } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_pred( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = extra & 0xff; D(bug("FMOVEM memory->FPP\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=7; reg>=0; reg-- ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { ad -= 4; wrd3 = get_long (ad); ad -= 4; wrd2 = get_long (ad); ad -= 4; wrd1 = get_long (ad); to_exten_no_normalize (wrd1, wrd2, wrd3,FPU registers[reg]); } list <<= 1; } dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_pred_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; D(bug("FMOVEM memory->FPP\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=7; reg>=0; reg-- ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { ad -= 4; wrd3 = get_long (ad); ad -= 4; wrd2 = get_long (ad); ad -= 4; wrd1 = get_long (ad); to_exten_no_normalize (wrd1, wrd2, wrd3,FPU registers[reg]); } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_pred_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; D(bug("FMOVEM memory->FPP\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=7; reg>=0; reg-- ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { ad -= 4; wrd3 = get_long (ad); ad -= 4; wrd2 = get_long (ad); ad -= 4; wrd1 = get_long (ad); to_exten_no_normalize (wrd1, wrd2, wrd3,FPU registers[reg]); } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_pred( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; D(bug("FMOVEM memory->FPP\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=7; reg>=0; reg-- ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { ad -= 4; wrd3 = get_long (ad); ad -= 4; wrd2 = get_long (ad); ad -= 4; wrd1 = get_long (ad); to_exten_no_normalize (wrd1, wrd2, wrd3,FPU registers[reg]); } list <<= 1; } dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_postinc_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = extra & 0xff; D(bug("FMOVEM memory->FPP\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=0; reg<8; reg++ ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); ad += 4; wrd3 = get_long (ad); ad += 4; to_exten_no_normalize (wrd1, wrd2, wrd3,FPU registers[reg]); } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_postinc_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = extra & 0xff; D(bug("FMOVEM memory->FPP\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=0; reg<8; reg++ ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); ad += 4; wrd3 = get_long (ad); ad += 4; to_exten_no_normalize (wrd1, wrd2, wrd3,FPU registers[reg]); } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_static_postinc( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = extra & 0xff; D(bug("FMOVEM memory->FPP\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=0; reg<8; reg++ ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); ad += 4; wrd3 = get_long (ad); ad += 4; to_exten_no_normalize (wrd1, wrd2, wrd3,FPU registers[reg]); } list <<= 1; } dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_postinc_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; D(bug("FMOVEM memory->FPP\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=0; reg<8; reg++ ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); ad += 4; wrd3 = get_long (ad); ad += 4; to_exten_no_normalize (wrd1, wrd2, wrd3,FPU registers[reg]); } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_postinc_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; D(bug("FMOVEM memory->FPP\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=0; reg<8; reg++ ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); ad += 4; wrd3 = get_long (ad); ad += 4; to_exten_no_normalize (wrd1, wrd2, wrd3,FPU registers[reg]); } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_Mem_2_fpp_dynamic_postinc( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; D(bug("FMOVEM memory->FPP\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=0; reg<8; reg++ ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); ad += 4; wrd3 = get_long (ad); ad += 4; to_exten_no_normalize (wrd1, wrd2, wrd3,FPU registers[reg]); } list <<= 1; } dump_registers( "END "); } } /* ---------------------------- FPP -> FMOVEM MEMORY ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_pred_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = extra & 0xff; D(bug("FMOVEM FPP->memory\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=7; reg>=0; reg-- ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { from_exten(FPU registers[reg],&wrd1, &wrd2, &wrd3); ad -= 4; put_long (ad, wrd3); ad -= 4; put_long (ad, wrd2); ad -= 4; put_long (ad, wrd1); } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_pred_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = extra & 0xff; D(bug("FMOVEM FPP->memory\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=7; reg>=0; reg-- ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { from_exten(FPU registers[reg],&wrd1, &wrd2, &wrd3); ad -= 4; put_long (ad, wrd3); ad -= 4; put_long (ad, wrd2); ad -= 4; put_long (ad, wrd1); } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_pred( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = extra & 0xff; D(bug("FMOVEM FPP->memory\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=7; reg>=0; reg-- ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { from_exten(FPU registers[reg],&wrd1, &wrd2, &wrd3); ad -= 4; put_long (ad, wrd3); ad -= 4; put_long (ad, wrd2); ad -= 4; put_long (ad, wrd1); } list <<= 1; } dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_pred_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; D(bug("FMOVEM FPP->memory\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=7; reg>=0; reg-- ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { from_exten(FPU registers[reg],&wrd1, &wrd2, &wrd3); ad -= 4; put_long (ad, wrd3); ad -= 4; put_long (ad, wrd2); ad -= 4; put_long (ad, wrd1); } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_pred_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; D(bug("FMOVEM FPP->memory\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=7; reg>=0; reg-- ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { from_exten(FPU registers[reg],&wrd1, &wrd2, &wrd3); ad -= 4; put_long (ad, wrd3); ad -= 4; put_long (ad, wrd2); ad -= 4; put_long (ad, wrd1); } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_pred( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; D(bug("FMOVEM FPP->memory\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=7; reg>=0; reg-- ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { from_exten(FPU registers[reg],&wrd1, &wrd2, &wrd3); ad -= 4; put_long (ad, wrd3); ad -= 4; put_long (ad, wrd2); ad -= 4; put_long (ad, wrd1); } list <<= 1; } dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_postinc_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = extra & 0xff; D(bug("FMOVEM FPP->memory\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=0; reg<8; reg++ ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { from_exten(FPU registers[reg],&wrd1, &wrd2, &wrd3); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); ad += 4; put_long (ad, wrd3); ad += 4; } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_postinc_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = extra & 0xff; D(bug("FMOVEM FPP->memory\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=0; reg<8; reg++ ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { from_exten(FPU registers[reg],&wrd1, &wrd2, &wrd3); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); ad += 4; put_long (ad, wrd3); ad += 4; } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_static_postinc( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = extra & 0xff; D(bug("FMOVEM FPP->memory\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=0; reg<8; reg++ ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { from_exten(FPU registers[reg],&wrd1, &wrd2, &wrd3); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); ad += 4; put_long (ad, wrd3); ad += 4; } list <<= 1; } dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_postinc_postincrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; D(bug("FMOVEM FPP->memory\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=0; reg<8; reg++ ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { from_exten(FPU registers[reg],&wrd1, &wrd2, &wrd3); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); ad += 4; put_long (ad, wrd3); ad += 4; } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_postinc_predecrement( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; D(bug("FMOVEM FPP->memory\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=0; reg<8; reg++ ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { from_exten(FPU registers[reg],&wrd1, &wrd2, &wrd3); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); ad += 4; put_long (ad, wrd3); ad += 4; } list <<= 1; } m68k_areg (regs, opcode & 7) = ad; dump_registers( "END "); } } PRIVATE void REGPARAM2 FFPU fpuop_fmovem_fpp_2_Mem_dynamic_postinc( uae_u32 opcode, uae_u32 extra ) { uae_u32 ad, list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; D(bug("FMOVEM FPP->memory\r\n")); if (get_fp_ad(opcode, &ad)) { for( int reg=0; reg<8; reg++ ) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { from_exten(FPU registers[reg],&wrd1, &wrd2, &wrd3); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); ad += 4; put_long (ad, wrd3); ad += 4; } list <<= 1; } dump_registers( "END "); } } /* ---------------------------- FMOVEM CONSTANT ROM -> FPP ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_do_fldpi( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: Pi\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_pi, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fldlg2( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: Log 10 (2)\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_lg2, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_e( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: e\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_e, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fldl2e( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: Log 2 (e)\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_l2e, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_log_10_e( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: Log 10 (e)\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_log_10_e, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fldz( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: zero\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_z, sizeof(fpu_register) ); x86_status_word = SW_Z; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fldln2( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: ln(2)\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_ln2, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_ln_10( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: ln(10)\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_ln_10, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fld1( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: 1.0e0\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_1, sizeof(fpu_register) ); x86_status_word = SW_FINITE; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e1( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: 1.0e1\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_1e1, sizeof(fpu_register) ); x86_status_word = SW_FINITE; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e2( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: 1.0e2\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_1e2, sizeof(fpu_register) ); x86_status_word = SW_FINITE; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e4( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: 1.0e4\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_1e4, sizeof(fpu_register) ); x86_status_word = SW_FINITE; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e8( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: 1.0e8\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_1e8, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; // Is it really FPSR_EXCEPTION_INEX2? dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e16( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: 1.0e16\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_1e16, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e32( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: 1.0e32\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_1e32, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e64( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: 1.0e64\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_1e64, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e128( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: 1.0e128\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_1e128, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e256( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: 1.0e256\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_1e256, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e512( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: 1.0e512\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_1e512, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e1024( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: 1.0e1024\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_1e1024, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e2048( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: 1.0e2048\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_1e2048, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_load_const_1e4096( uae_u32 opcode, uae_u32 extra ) { D(bug("FMOVECR memory->FPP FP const: 1.0e4096\r\n")); memcpy( &FPU registers[(extra>>7) & 7], &const_1e4096, sizeof(fpu_register) ); x86_status_word = SW_FINITE | FPSR_EXCEPTION_INEX2; dump_registers( "END "); } /* -------------------------- 040 ALU -------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_do_fsmove( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSMOVE %s\r\n",etos(src))); do_fsmove( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fdmove( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FDMOVE %s\r\n",etos(src))); do_fdmove( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fssqrt( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSSQRT %s\r\n",etos(src))); do_fssqrt( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fdsqrt( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FDSQRT %s\r\n",etos(src))); do_fdsqrt( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fsabs( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSABS %s\r\n",etos(src))); do_fsabs( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fdabs( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FDABS %s\r\n",etos(src))); do_fdabs( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fsneg( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSNEG %s\r\n",etos(src))); do_fsneg( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fdneg( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FDNEG %s\r\n",etos(src))); do_fdneg( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fsdiv( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSDIV %s\r\n",etos(src))); do_fsdiv( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fddiv( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FDDIV %s\r\n",etos(src))); do_fddiv( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fsadd( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSADD %s\r\n",etos(src))); do_fsadd( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fdadd( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FDADD %s\r\n",etos(src))); do_fdadd( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fssub( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSSUB %s\r\n",etos(src))); do_fssub( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fdsub( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FDSUB %s\r\n",etos(src))); do_fdsub( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fsmul( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSMUL %s\r\n",etos(src))); do_fsmul( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fdmul( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSMUL %s\r\n",etos(src))); do_fsmul( FPU registers[reg], src ); dump_registers( "END "); } /* ---------------------------- ALU ---------------------------- */ PRIVATE void REGPARAM2 FFPU fpuop_do_fmove( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FMOVE %s\r\n",etos(src))); do_fmove( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fint( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FINT %s, opcode=%X, extra=%X, ta %X\r\n",etos(src),opcode,extra,m68k_getpc())); do_fint( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fsinh( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSINH %s\r\n",etos(src))); do_fsinh( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fintrz( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FINTRZ %s\r\n",etos(src))); do_fintrz( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fsqrt( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSQRT %s\r\n",etos(src))); do_fsqrt( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_flognp1( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FLOGNP1 %s\r\n",etos(src))); do_flognp1( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fetoxm1( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FETOXM1 %s\r\n",etos(src))); do_fetoxm1( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_ftanh( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FTANH %s\r\n",etos(src))); do_ftanh( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fatan( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FATAN %s\r\n",etos(src))); do_fatan( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fasin( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FASIN %s\r\n",etos(src))); do_fasin( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fatanh( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FATANH %s\r\n",etos(src))); do_fatanh( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fsin( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSIN %s\r\n",etos(src))); do_fsin( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_ftan( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FTAN %s\r\n",etos(src))); do_ftan( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fetox( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FETOX %s\r\n",etos(src))); do_fetox( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_ftwotox( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FTWOTOX %s\r\n",etos(src))); do_ftwotox( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_ftentox( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FTENTOX %s\r\n",etos(src))); do_ftentox( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_flogn( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FLOGN %s\r\n",etos(src))); do_flogn( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_flog10( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FLOG10 %s\r\n",etos(src))); do_flog10( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_flog2( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FLOG2 %s\r\n",etos(src))); do_flog2( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fabs( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FABS %s\r\n",etos(src))); do_fabs( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fcosh( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FCOSH %s\r\n",etos(src))); do_fcosh( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fneg( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FNEG %s\r\n",etos(src))); do_fneg( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_facos( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FACOS %s\r\n",etos(src))); do_facos( FPU registers[reg], src ); build_ex_status(); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fcos( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FCOS %s\r\n",etos(src))); do_fcos( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fgetexp( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FGETEXP %s\r\n",etos(src))); if( IS_INFINITY(src) ) { MAKE_NAN( FPU registers[reg], IS_NEGATIVE(src) ); do_ftst( FPU registers[reg] ); x86_status_word |= SW_IE; } else { do_fgetexp( FPU registers[reg], src ); } dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fgetman( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FGETMAN %s\r\n",etos(src))); if( IS_INFINITY(src) ) { MAKE_NAN( FPU registers[reg], IS_NEGATIVE(src) ); do_ftst( FPU registers[reg] ); x86_status_word |= SW_IE; } else { do_fgetman( FPU registers[reg], src ); } dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fdiv( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FDIV %s\r\n",etos(src))); do_fdiv( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fmod( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FMOD %s\r\n",etos(src))); #if USE_3_BIT_QUOTIENT do_fmod( FPU registers[reg], src ); #else if( (x86_control_word & X86_ROUNDING_MODE) == CW_RC_ZERO ) { do_fmod_dont_set_cw( FPU registers[reg], src ); } else { do_fmod( FPU registers[reg], src ); } #endif dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_frem( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FREM %s\r\n",etos(src))); #if USE_3_BIT_QUOTIENT do_frem( FPU registers[reg], src ); #else if( (x86_control_word & X86_ROUNDING_MODE) == CW_RC_NEAR ) { do_frem_dont_set_cw( FPU registers[reg], src ); } else { do_frem( FPU registers[reg], src ); } #endif dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fadd( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FADD %s\r\n",etos(src))); do_fadd( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fmul( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FMUL %s\r\n",etos(src))); do_fmul( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fsgldiv( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSGLDIV %s\r\n",etos(src))); do_fsgldiv( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fscale( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSCALE %s, opcode=%X, extra=%X, ta %X\r\n",etos(src),opcode,extra,m68k_getpc())); if( IS_INFINITY(FPU registers[reg]) ) { MAKE_NAN( FPU registers[reg], IS_NEGATIVE(FPU registers[reg]) ); do_ftst( FPU registers[reg] ); x86_status_word |= SW_IE; } else { // When the absolute value of the source operand is >= 2^14, // an overflow or underflow always results. do_fscale( FPU registers[reg], src ); } dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fsglmul( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSGLMUL %s\r\n",etos(src))); do_fsglmul( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fsub( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSUB %s\r\n",etos(src))); do_fsub( FPU registers[reg], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fsincos( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FSINCOS %s\r\n",etos(src))); do_fsincos( FPU registers[reg], FPU registers[extra & 7], src ); dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_fcmp( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FCMP %s\r\n",etos(src))); if( IS_INFINITY(src) ) { if( IS_NEGATIVE(src) ) { if( IS_INFINITY(FPU registers[reg]) && IS_NEGATIVE(FPU registers[reg]) ) { x86_status_word = SW_Z | SW_N; D(bug("-INF FCMP -INF -> NZ\r\n")); } else { x86_status_word = SW_FINITE; D(bug("X FCMP -INF -> None\r\n")); } } else { if( IS_INFINITY(FPU registers[reg]) && !IS_NEGATIVE(FPU registers[reg]) ) { x86_status_word = SW_Z; D(bug("+INF FCMP +INF -> Z\r\n")); } else { x86_status_word = SW_N; D(bug("X FCMP +INF -> N\r\n")); } } } else if( IS_INFINITY(FPU registers[reg]) ) { if( IS_NEGATIVE(FPU registers[reg]) ) { x86_status_word = SW_N; D(bug("-INF FCMP X -> Negative\r\n")); } else { x86_status_word = SW_FINITE; D(bug("+INF FCMP X -> None\r\n")); } } else { do_fcmp( FPU registers[reg], src ); } dump_registers( "END "); } PRIVATE void REGPARAM2 FFPU fpuop_do_ftst( uae_u32 opcode, uae_u32 extra ) { int reg = (extra >> 7) & 7; fpu_register src; if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } D(bug("FTST %s\r\n",etos(src))); do_ftst( src ); build_ex_status(); dump_registers( "END "); } /* ---------------------------- SETUP TABLES ---------------------------- */ PRIVATE void FFPU build_fpp_opp_lookup_table () { for( uae_u32 opcode=0; opcode<=0x38; opcode+=8 ) { for( uae_u32 extra=0; extra<65536; extra++ ) { uae_u32 mask = (extra & 0xFC7F) | ((opcode & 0x0038) << 4); fpufunctbl[mask] = & FFPU fpuop_illg; switch ((extra >> 13) & 0x7) { case 3: fpufunctbl[mask] = & FFPU fpuop_fmove_2_ea; break; case 4: case 5: if ((opcode & 0x38) == 0) { if (extra & 0x2000) { // dr bit switch( extra & 0x1C00 ) { case 0x0000: fpufunctbl[mask] = & FFPU fpuop_fmovem_none_2_Dreg; break; case 0x0400: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpiar_2_Dreg; break; case 0x0800: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpsr_2_Dreg; break; case 0x0C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpsr_fpiar_2_Dreg; break; case 0x1000: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_2_Dreg; break; case 0x1400: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpiar_2_Dreg; break; case 0x1800: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpsr_2_Dreg; break; case 0x1C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Dreg; break; } } else { switch( extra & 0x1C00 ) { case 0x0000: fpufunctbl[mask] = & FFPU fpuop_fmovem_Dreg_2_none; break; case 0x0400: fpufunctbl[mask] = & FFPU fpuop_fmovem_Dreg_2_fpiar; break; case 0x0800: fpufunctbl[mask] = & FFPU fpuop_fmovem_Dreg_2_fpsr; break; case 0x0C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_Dreg_2_fpsr_fpiar; break; case 0x1000: fpufunctbl[mask] = & FFPU fpuop_fmovem_Dreg_2_fpcr; break; case 0x1400: fpufunctbl[mask] = & FFPU fpuop_fmovem_Dreg_2_fpcr_fpiar; break; case 0x1800: fpufunctbl[mask] = & FFPU fpuop_fmovem_Dreg_2_fpcr_fpsr; break; case 0x1C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_Dreg_2_fpcr_fpsr_fpiar; break; } } } else if ((opcode & 0x38) == 8) { if (extra & 0x2000) { // dr bit switch( extra & 0x1C00 ) { case 0x0000: fpufunctbl[mask] = & FFPU fpuop_fmovem_none_2_Areg; break; case 0x0400: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpiar_2_Areg; break; case 0x0800: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpsr_2_Areg; break; case 0x0C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpsr_fpiar_2_Areg; break; case 0x1000: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_2_Areg; break; case 0x1400: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpiar_2_Areg; break; case 0x1800: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpsr_2_Areg; break; case 0x1C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Areg; break; } } else { switch( extra & 0x1C00 ) { case 0x0000: fpufunctbl[mask] = & FFPU fpuop_fmovem_Areg_2_none; break; case 0x0400: fpufunctbl[mask] = & FFPU fpuop_fmovem_Areg_2_fpiar; break; case 0x0800: fpufunctbl[mask] = & FFPU fpuop_fmovem_Areg_2_fpsr; break; case 0x0C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_Areg_2_fpsr_fpiar; break; case 0x1000: fpufunctbl[mask] = & FFPU fpuop_fmovem_Areg_2_fpcr; break; case 0x1400: fpufunctbl[mask] = & FFPU fpuop_fmovem_Areg_2_fpcr_fpiar; break; case 0x1800: fpufunctbl[mask] = & FFPU fpuop_fmovem_Areg_2_fpcr_fpsr; break; case 0x1C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_Areg_2_fpcr_fpsr_fpiar; break; } } } else if (extra & 0x2000) { if ((opcode & 0x38) == 0x20) { switch( extra & 0x1C00 ) { case 0x0000: fpufunctbl[mask] = & FFPU fpuop_fmovem_none_2_Mem_predecrement; break; case 0x0400: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpiar_2_Mem_predecrement; break; case 0x0800: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpsr_2_Mem_predecrement; break; case 0x0C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpsr_fpiar_2_Mem_predecrement; break; case 0x1000: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_2_Mem_predecrement; break; case 0x1400: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpiar_2_Mem_predecrement; break; case 0x1800: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpsr_2_Mem_predecrement; break; case 0x1C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Mem_predecrement; break; } } else if ((opcode & 0x38) == 0x18) { switch( extra & 0x1C00 ) { case 0x0000: fpufunctbl[mask] = & FFPU fpuop_fmovem_none_2_Mem_postincrement; break; case 0x0400: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpiar_2_Mem_postincrement; break; case 0x0800: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpsr_2_Mem_postincrement; break; case 0x0C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpsr_fpiar_2_Mem_postincrement; break; case 0x1000: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_2_Mem_postincrement; break; case 0x1400: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpiar_2_Mem_postincrement; break; case 0x1800: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpsr_2_Mem_postincrement; break; case 0x1C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Mem_postincrement; break; } } else { switch( extra & 0x1C00 ) { case 0x0000: fpufunctbl[mask] = & FFPU fpuop_fmovem_none_2_Mem; break; case 0x0400: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpiar_2_Mem; break; case 0x0800: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpsr_2_Mem; break; case 0x0C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpsr_fpiar_2_Mem; break; case 0x1000: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_2_Mem; break; case 0x1400: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpiar_2_Mem; break; case 0x1800: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpsr_2_Mem; break; case 0x1C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_fpcr_fpsr_fpiar_2_Mem; break; } } } else { if ((opcode & 0x38) == 0x20) { switch( extra & 0x1C00 ) { case 0x0000: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_none_predecrement; break; case 0x0400: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpiar_predecrement; break; case 0x0800: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpsr_predecrement; break; case 0x0C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpsr_fpiar_predecrement; break; case 0x1000: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpcr_predecrement; break; case 0x1400: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpcr_fpiar_predecrement; break; case 0x1800: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_predecrement; break; case 0x1C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_fpiar_predecrement; break; } } else if ((opcode & 0x38) == 0x18) { switch( extra & 0x1C00 ) { case 0x0000: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_none_postincrement; break; case 0x0400: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpiar_postincrement; break; case 0x0800: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpsr_postincrement; break; case 0x0C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpsr_fpiar_postincrement; break; case 0x1000: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpcr_postincrement; break; case 0x1400: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpcr_fpiar_postincrement; break; case 0x1800: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_postincrement; break; case 0x1C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_fpiar_postincrement; break; } } else { switch( extra & 0x1C00 ) { case 0x0000: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_none_2_Mem; break; case 0x0400: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpiar_2_Mem; break; case 0x0800: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpsr_2_Mem; break; case 0x0C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpsr_fpiar_2_Mem; break; case 0x1000: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpcr_2_Mem; break; case 0x1400: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpcr_fpiar_2_Mem; break; case 0x1800: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_2_Mem; break; case 0x1C00: fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpcr_fpsr_fpiar_2_Mem; break; } } break; case 6: switch ((extra >> 11) & 3) { case 0: /* static pred */ if ((opcode & 0x38) == 0x18) // post-increment? fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpp_static_pred_postincrement; else if ((opcode & 0x38) == 0x20) // pre-decrement? fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpp_static_pred_predecrement; else fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpp_static_pred; break; case 1: /* dynamic pred */ if ((opcode & 0x38) == 0x18) // post-increment? fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpp_dynamic_pred_postincrement; else if ((opcode & 0x38) == 0x20) // pre-decrement? fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpp_dynamic_pred_predecrement; else fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpp_dynamic_pred; break; case 2: /* static postinc */ if ((opcode & 0x38) == 0x18) // post-increment? fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpp_static_postinc_postincrement; else if ((opcode & 0x38) == 0x20) // pre-decrement? fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpp_static_postinc_predecrement; else fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpp_static_postinc; break; case 3: /* dynamic postinc */ if ((opcode & 0x38) == 0x18) // post-increment? fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpp_dynamic_postinc_postincrement; else if ((opcode & 0x38) == 0x20) // pre-decrement? fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpp_dynamic_postinc_predecrement; else fpufunctbl[mask] = & FFPU fpuop_fmovem_Mem_2_fpp_dynamic_postinc; break; } break; case 7: switch ((extra >> 11) & 3) { case 0: /* static pred */ if ((opcode & 0x38) == 0x18) // post-increment? fpufunctbl[mask] = & FFPU fpuop_fmovem_fpp_2_Mem_static_pred_postincrement; else if ((opcode & 0x38) == 0x20) // pre-decrement? fpufunctbl[mask] = & FFPU fpuop_fmovem_fpp_2_Mem_static_pred_predecrement; else fpufunctbl[mask] = & FFPU fpuop_fmovem_fpp_2_Mem_static_pred; break; case 1: /* dynamic pred */ if ((opcode & 0x38) == 0x18) // post-increment? fpufunctbl[mask] = & FFPU fpuop_fmovem_fpp_2_Mem_dynamic_pred_postincrement; else if ((opcode & 0x38) == 0x20) // pre-decrement? fpufunctbl[mask] = & FFPU fpuop_fmovem_fpp_2_Mem_dynamic_pred_predecrement; else fpufunctbl[mask] = & FFPU fpuop_fmovem_fpp_2_Mem_dynamic_pred; break; case 2: /* static postinc */ if ((opcode & 0x38) == 0x18) // post-increment? fpufunctbl[mask] = & FFPU fpuop_fmovem_fpp_2_Mem_static_postinc_postincrement; else if ((opcode & 0x38) == 0x20) // pre-decrement? fpufunctbl[mask] = & FFPU fpuop_fmovem_fpp_2_Mem_static_postinc_predecrement; else fpufunctbl[mask] = & FFPU fpuop_fmovem_fpp_2_Mem_static_postinc; break; case 3: /* dynamic postinc */ if ((opcode & 0x38) == 0x18) // post-increment? fpufunctbl[mask] = & FFPU fpuop_fmovem_fpp_2_Mem_dynamic_postinc_postincrement; else if ((opcode & 0x38) == 0x20) // pre-decrement? fpufunctbl[mask] = & FFPU fpuop_fmovem_fpp_2_Mem_dynamic_postinc_predecrement; else fpufunctbl[mask] = & FFPU fpuop_fmovem_fpp_2_Mem_dynamic_postinc; break; } break; case 0: case 2: if ((extra & 0xfc00) == 0x5c00) { switch (extra & 0x7f) { case 0x00: fpufunctbl[mask] = & FFPU fpuop_do_fldpi; break; case 0x0b: fpufunctbl[mask] = & FFPU fpuop_do_fldlg2; break; case 0x0c: fpufunctbl[mask] = & FFPU fpuop_do_load_const_e; break; case 0x0d: fpufunctbl[mask] = & FFPU fpuop_do_fldl2e; break; case 0x0e: fpufunctbl[mask] = & FFPU fpuop_do_load_const_log_10_e; break; case 0x0f: fpufunctbl[mask] = & FFPU fpuop_do_fldz; break; case 0x30: fpufunctbl[mask] = & FFPU fpuop_do_fldln2; break; case 0x31: fpufunctbl[mask] = & FFPU fpuop_do_load_const_ln_10; break; case 0x32: fpufunctbl[mask] = & FFPU fpuop_do_fld1; break; case 0x33: fpufunctbl[mask] = & FFPU fpuop_do_load_const_1e1; break; case 0x34: fpufunctbl[mask] = & FFPU fpuop_do_load_const_1e2; break; case 0x35: fpufunctbl[mask] = & FFPU fpuop_do_load_const_1e4; break; case 0x36: fpufunctbl[mask] = & FFPU fpuop_do_load_const_1e8; break; case 0x37: fpufunctbl[mask] = & FFPU fpuop_do_load_const_1e16; break; case 0x38: fpufunctbl[mask] = & FFPU fpuop_do_load_const_1e32; break; case 0x39: fpufunctbl[mask] = & FFPU fpuop_do_load_const_1e64; break; case 0x3a: fpufunctbl[mask] = & FFPU fpuop_do_load_const_1e128; break; case 0x3b: fpufunctbl[mask] = & FFPU fpuop_do_load_const_1e256; break; case 0x3c: fpufunctbl[mask] = & FFPU fpuop_do_load_const_1e512; break; case 0x3d: fpufunctbl[mask] = & FFPU fpuop_do_load_const_1e1024; break; case 0x3e: fpufunctbl[mask] = & FFPU fpuop_do_load_const_1e2048; break; case 0x3f: fpufunctbl[mask] = & FFPU fpuop_do_load_const_1e4096; break; } break; } if (FPU is_integral) { switch (extra & 0x7f) { case 0x40: fpufunctbl[mask] = & FFPU fpuop_do_fsmove; break; case 0x44: fpufunctbl[mask] = & FFPU fpuop_do_fdmove; break; case 0x41: fpufunctbl[mask] = & FFPU fpuop_do_fssqrt; break; case 0x45: fpufunctbl[mask] = & FFPU fpuop_do_fdsqrt; break; case 0x58: fpufunctbl[mask] = & FFPU fpuop_do_fsabs; break; case 0x5c: fpufunctbl[mask] = & FFPU fpuop_do_fdabs; break; case 0x5a: fpufunctbl[mask] = & FFPU fpuop_do_fsneg; break; case 0x5e: fpufunctbl[mask] = & FFPU fpuop_do_fdneg; break; case 0x60: fpufunctbl[mask] = & FFPU fpuop_do_fsdiv; break; case 0x64: fpufunctbl[mask] = & FFPU fpuop_do_fddiv; break; case 0x62: fpufunctbl[mask] = & FFPU fpuop_do_fsadd; break; case 0x66: fpufunctbl[mask] = & FFPU fpuop_do_fdadd; break; case 0x68: fpufunctbl[mask] = & FFPU fpuop_do_fssub; break; case 0x6c: fpufunctbl[mask] = & FFPU fpuop_do_fdsub; break; case 0x63: fpufunctbl[mask] = & FFPU fpuop_do_fsmul; break; case 0x67: fpufunctbl[mask] = & FFPU fpuop_do_fdmul; break; default: break; } } switch (extra & 0x7f) { case 0x00: fpufunctbl[mask] = & FFPU fpuop_do_fmove; break; case 0x01: fpufunctbl[mask] = & FFPU fpuop_do_fint; break; case 0x02: fpufunctbl[mask] = & FFPU fpuop_do_fsinh; break; case 0x03: fpufunctbl[mask] = & FFPU fpuop_do_fintrz; break; case 0x04: fpufunctbl[mask] = & FFPU fpuop_do_fsqrt; break; case 0x06: fpufunctbl[mask] = & FFPU fpuop_do_flognp1; break; case 0x08: fpufunctbl[mask] = & FFPU fpuop_do_fetoxm1; break; case 0x09: fpufunctbl[mask] = & FFPU fpuop_do_ftanh; break; case 0x0a: fpufunctbl[mask] = & FFPU fpuop_do_fatan; break; case 0x0c: fpufunctbl[mask] = & FFPU fpuop_do_fasin; break; case 0x0d: fpufunctbl[mask] = & FFPU fpuop_do_fatanh; break; case 0x0e: fpufunctbl[mask] = & FFPU fpuop_do_fsin; break; case 0x0f: fpufunctbl[mask] = & FFPU fpuop_do_ftan; break; case 0x10: fpufunctbl[mask] = & FFPU fpuop_do_fetox; break; case 0x11: fpufunctbl[mask] = & FFPU fpuop_do_ftwotox; break; case 0x12: fpufunctbl[mask] = & FFPU fpuop_do_ftentox; break; case 0x14: fpufunctbl[mask] = & FFPU fpuop_do_flogn; break; case 0x15: fpufunctbl[mask] = & FFPU fpuop_do_flog10; break; case 0x16: fpufunctbl[mask] = & FFPU fpuop_do_flog2; break; case 0x18: fpufunctbl[mask] = & FFPU fpuop_do_fabs; break; case 0x19: fpufunctbl[mask] = & FFPU fpuop_do_fcosh; break; case 0x1a: fpufunctbl[mask] = & FFPU fpuop_do_fneg; break; case 0x1c: fpufunctbl[mask] = & FFPU fpuop_do_facos; break; case 0x1d: fpufunctbl[mask] = & FFPU fpuop_do_fcos; break; case 0x1e: fpufunctbl[mask] = & FFPU fpuop_do_fgetexp; break; case 0x1f: fpufunctbl[mask] = & FFPU fpuop_do_fgetman; break; case 0x20: fpufunctbl[mask] = & FFPU fpuop_do_fdiv; break; case 0x21: fpufunctbl[mask] = & FFPU fpuop_do_fmod; break; case 0x22: fpufunctbl[mask] = & FFPU fpuop_do_fadd; break; case 0x23: fpufunctbl[mask] = & FFPU fpuop_do_fmul; break; case 0x24: fpufunctbl[mask] = & FFPU fpuop_do_fsgldiv; break; case 0x25: fpufunctbl[mask] = & FFPU fpuop_do_frem; break; case 0x26: fpufunctbl[mask] = & FFPU fpuop_do_fscale; break; case 0x27: fpufunctbl[mask] = & FFPU fpuop_do_fsglmul; break; case 0x28: fpufunctbl[mask] = & FFPU fpuop_do_fsub; break; case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: fpufunctbl[mask] = & FFPU fpuop_do_fsincos; break; case 0x38: fpufunctbl[mask] = & FFPU fpuop_do_fcmp; break; case 0x3a: fpufunctbl[mask] = & FFPU fpuop_do_ftst; break; } } } } } } /* ---------------------------- CONSTANTS ---------------------------- */ PRIVATE void FFPU set_constant ( fpu_register & f, char *name, double value, uae_s32 mult ) { FPU_CONSISTENCY_CHECK_START(); if(mult == 1) { /* _asm { MOV ESI, [f] FLD QWORD PTR [value] FSTP TBYTE PTR [ESI] } */ __asm__ __volatile__( "fldl %1\n" "fstpt %0\n" : "=m" (f) : "m" (value) ); } else { /* _asm { MOV ESI, [f] FILD DWORD PTR [mult] FLD QWORD PTR [value] FMUL FSTP TBYTE PTR [ESI] } */ __asm__ __volatile__( "fildl %2\n" "fldl %1\n" "fmul \n" "fstpt %0\n" : "=m" (f) : "m" (value), "m" (mult) ); } D(bug("set_constant (%s,%.04f) = %s\r\n",name,(float)value,etos(f))); FPU_CONSISTENCY_CHECK_STOP( mult==1 ? "set_constant(mult==1)" : "set_constant(mult>1)" ); } PRIVATE void FFPU do_fldpi ( fpu_register & dest ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { FLDPI FXAM FNSTSW x86_status_word MOV EDI, [dest] FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldpi \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) ); FPU_CONSISTENCY_CHECK_STOP("do_fldpi"); } PRIVATE void FFPU do_fldlg2 ( fpu_register & dest ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { FLDLG2 FXAM FNSTSW x86_status_word MOV EDI, [dest] FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldlg2 \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) ); FPU_CONSISTENCY_CHECK_STOP("do_fldlg2"); } PRIVATE void FFPU do_fldl2e ( fpu_register & dest ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { FLDL2E FXAM FNSTSW x86_status_word MOV EDI, [dest] FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldl2e \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) ); FPU_CONSISTENCY_CHECK_STOP("do_fldl2e"); } PRIVATE void FFPU do_fldz ( fpu_register & dest ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { FLDZ FXAM FNSTSW x86_status_word MOV EDI, [dest] FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldz \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) ); FPU_CONSISTENCY_CHECK_STOP("do_fldz"); } PRIVATE void FFPU do_fldln2 ( fpu_register & dest ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { FLDLN2 FXAM FNSTSW x86_status_word MOV EDI, [dest] FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fldln2 \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) ); FPU_CONSISTENCY_CHECK_STOP("do_fldln2"); } PRIVATE void FFPU do_fld1 ( fpu_register & dest ) { FPU_CONSISTENCY_CHECK_START(); /* _asm { FLD1 FXAM FNSTSW x86_status_word MOV EDI, [dest] FSTP TBYTE PTR [EDI] } */ __asm__ __volatile__( "fld1 \n" "fxam \n" "fnstsw %0\n" "fstpt %1\n" : "=m" (x86_status_word), "=m" (dest) ); FPU_CONSISTENCY_CHECK_STOP("do_fld1"); } void fpu_set_fpsr(uae_u32 new_fpsr) { set_fpsr(new_fpsr); } uae_u32 fpu_get_fpsr(void) { return get_fpsr(); } void fpu_set_fpcr(uae_u32 new_fpcr) { set_fpcr(new_fpcr); } uae_u32 fpu_get_fpcr(void) { return get_fpcr(); } /* ---------------------------- MAIN INIT ---------------------------- */ #ifdef HAVE_SIGACTION // Mega hackaround-that-happens-to-work: the following way to handle // SIGFPE just happens to make the "fsave" below in fpu_init() *NOT* // to abort with a floating point exception. However, we never // actually reach sigfpe_handler(). static void sigfpe_handler(int code, siginfo_t *sip, void *) { if (code == SIGFPE && sip->si_code == FPE_FLTINV) { fprintf(stderr, "Invalid floating point operation\n"); abort(); } } #endif PUBLIC void FFPU fpu_init( bool integral_68040 ) { static bool done_first_time_initialization = false; if (!done_first_time_initialization) { fpu_init_native_fflags(); fpu_init_native_exceptions(); fpu_init_native_accrued_exceptions(); #ifdef HAVE_SIGACTION struct sigaction fpe_sa; sigemptyset(&fpe_sa.sa_mask); fpe_sa.sa_sigaction = sigfpe_handler; fpe_sa.sa_flags = SA_SIGINFO; sigaction(SIGFPE, &fpe_sa, 0); #endif done_first_time_initialization = true; } __asm__ __volatile__("fsave %0" : "=m" (m_fpu_state_original)); FPU is_integral = integral_68040; FPU instruction_address = 0; set_fpcr(0); set_fpsr(0); x86_control_word = CW_INITIAL; x86_status_word = SW_INITIAL; x86_status_word_accrued = 0; FPU fpsr.quotient = 0; for( int i=0; i<8; i++ ) { MAKE_NAN( FPU registers[i], false ); } build_fpp_opp_lookup_table(); /* _asm { FNINIT FLDCW x86_control_word } */ __asm__ __volatile__("fninit\nfldcw %0" : : "m" (x86_control_word)); do_fldpi( const_pi ); do_fldlg2( const_lg2 ); do_fldl2e( const_l2e ); do_fldz( const_z ); do_fldln2( const_ln2 ); do_fld1( const_1 ); set_constant( const_e, "e", exp (1.0), 1 ); set_constant( const_log_10_e, "Log 10 (e)", log (exp (1.0)) / log (10.0), 1 ); set_constant( const_ln_10, "ln(10)", log (10.0), 1 ); set_constant( const_1e1, "1.0e1", 1.0e1, 1 ); set_constant( const_1e2, "1.0e2", 1.0e2, 1 ); set_constant( const_1e4, "1.0e4", 1.0e4, 1 ); set_constant( const_1e8, "1.0e8", 1.0e8, 1 ); set_constant( const_1e16, "1.0e16", 1.0e16, 1 ); set_constant( const_1e32, "1.0e32", 1.0e32, 1 ); set_constant( const_1e64, "1.0e64", 1.0e64, 1 ) ; set_constant( const_1e128, "1.0e128", 1.0e128, 1 ); set_constant( const_1e256, "1.0e256", 1.0e256, 1 ); set_constant( const_1e512, "1.0e512", 1.0e256, 10 ); set_constant( const_1e1024, "1.0e1024", 1.0e256, 100 ); set_constant( const_1e2048, "1.0e2048", 1.0e256, 1000 ); set_constant( const_1e4096, "1.0e4096", 1.0e256, 10000 ); // Just in case. /* _asm { FNINIT FLDCW x86_control_word } */ __asm__ __volatile__("fninit\nfldcw %0" : : "m" (x86_control_word)); } PUBLIC void FFPU fpu_exit( void ) { __asm__ __volatile__("frstor %0" : : "m" (m_fpu_state_original)); } PUBLIC void FFPU fpu_reset( void ) { fpu_exit(); fpu_init(FPU is_integral); } aranym-1.1.0/src/uae_cpu/fpu/fpu_uae.h0000664000175000017500000001311313454637622016000 0ustar joyjoy/* * fpu/fpu_uae.h - Extra Definitions for the old UAE FPU core * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef FPU_UAE_H #define FPU_UAE_H // Only define if you have IEEE 64 bit doubles. #define FPU_HAVE_IEEE_DOUBLE 1 /* NOTE: this file shall be included from fpu/fpu_uae.cpp */ #undef PUBLIC #define PUBLIC extern #undef PRIVATE #define PRIVATE static #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. enum { #ifdef WORDS_BIGENDIAN FHI = 0, FLO = 1 #else FHI = 1, FLO = 0 #endif }; // Floating-point rounding support PRIVATE inline fpu_register round_to_zero(fpu_register const & x); PRIVATE inline fpu_register round_to_nearest(fpu_register const & x); #if FPU_HAVE_IEEE_DOUBLE // Lauri-- full words to avoid partial register stalls. struct double_flags { uae_u32 in_range; uae_u32 zero; uae_u32 infinity; uae_u32 nan; uae_u32 negative; }; PRIVATE double_flags fl_source; PRIVATE double_flags fl_dest; PRIVATE inline void FFPU get_dest_flags(fpu_register const & r); PRIVATE inline void FFPU get_source_flags(fpu_register const & r); PRIVATE inline bool FFPU do_isnan(fpu_register const & r); PRIVATE inline bool FFPU do_isinf(fpu_register const & r); PRIVATE inline bool FFPU do_isneg(fpu_register const & r); PRIVATE inline bool FFPU do_iszero(fpu_register const & r); PRIVATE inline void FFPU make_nan(fpu_register & r, bool negative); PRIVATE inline void FFPU make_zero(fpu_register & r, bool negative); PRIVATE inline void FFPU make_inf(fpu_register & r, bool negative); PRIVATE inline void FFPU fast_scale(fpu_register & r, int add); PRIVATE inline fpu_register FFPU fast_fgetexp(fpu_register const & r); // May be optimized for particular processors #ifndef FPU_USE_NATIVE_FLAGS PRIVATE inline void FFPU make_fpsr(fpu_register const & r); #endif // Normalize to range 1..2 PRIVATE inline void FFPU fast_remove_exponent(fpu_register & r); // The sign of the quotient is the exclusive-OR of the sign bits // of the source and destination operands. PRIVATE inline uae_u32 FFPU get_quotient_sign( fpu_register const & ra, fpu_register const & rb ); // Quotient Byte is loaded with the sign and least significant // seven bits of the quotient. PRIVATE inline void FFPU make_quotient( fpu_register const & quotient, uae_u32 sign ); // to_single PRIVATE inline fpu_register FFPU make_single( uae_u32 value ); // from_single PRIVATE inline uae_u32 FFPU extract_single( fpu_register const & src ); // to_exten PRIVATE inline fpu_register FFPU make_extended( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3 ); /* Would be so much easier with full size floats :( ... this is so vague. */ // to_exten_no_normalize PRIVATE inline void FFPU make_extended_no_normalize( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3, fpu_register & result ); // from_exten PRIVATE inline void FFPU extract_extended(fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3 ); // to_double PRIVATE inline fpu_register FFPU make_double( uae_u32 wrd1, uae_u32 wrd2 ); // from_double PRIVATE inline void FFPU extract_double(fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2 ); #else /* !FPU_HAVE_IEEE_DOUBLE */ // FIXME: may be optimized for particular processors #ifndef FPU_USE_NATIVE_FLAGS PRIVATE inline void FFPU make_fpsr(fpu_register const & r); #endif // to_single PRIVATE inline fpu_register make_single( uae_u32 value ); // from_single PRIVATE inline uae_u32 FFPU extract_single( fpu_register const & src ); // to exten PRIVATE inline fpu_register FFPU make_extended( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3 ); // from_exten PRIVATE inline void FFPU extract_extended( fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3 ); // to_double PRIVATE inline fpu_register FFPU make_double( uae_u32 wrd1, uae_u32 wrd2 ); // from_double PRIVATE inline void FFPU extract_double( fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2 ); #endif /* FPU_HAVE_IEEE_DOUBLE */ PRIVATE inline fpu_register FFPU make_packed( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3 ); PRIVATE inline void FFPU extract_packed( fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3 ); PRIVATE inline int FFPU get_fp_value( uae_u32 opcode, uae_u16 extra, fpu_register & src ); PRIVATE inline int FFPU put_fp_value( uae_u32 opcode, uae_u16 extra, fpu_register const & value ); PRIVATE inline int FFPU get_fp_ad( uae_u32 opcode, uae_u32 * ad ); PRIVATE inline int FFPU fpp_cond( int condition ); #endif /* FPU_UAE_H */ aranym-1.1.0/src/uae_cpu/fpu/fpu_uae.cpp0000664000175000017500000017737613454637622016361 0ustar joyjoy/* * fpu/fpu_uae.cpp - the old UAE FPU * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * UAE - The Un*x Amiga Emulator * * MC68881 emulation * * Copyright 1996 Herman ten Brugge * * * Following fixes by Lauri Pesonen, July 1999: * * FMOVEM list handling: * The lookup tables did not work correctly, rewritten. * FINT: * (int) cast does not work, fixed. * Further, now honors the FPU fpcr rounding modes. * FINTRZ: * (int) cast cannot be used, fixed. * FGETEXP: * Input argument value 0 returned erroneous value. * FMOD: * (int) cast cannot be used. Replaced by proper rounding. * Quotient byte handling was missing. * FREM: * (int) cast cannot be used. Replaced by proper rounding. * Quotient byte handling was missing. * FSCALE: * Input argument value 0 was not handled correctly. * FMOVEM Control Registers to/from address FPU registers An: * A bug caused the code never been called. * FMOVEM Control Registers pre-decrement: * Moving of control regs from memory to FPP was not handled properly, * if not all of the three FPU registers were moved. * Condition code "Not Greater Than or Equal": * Returned erroneous value. * FSINCOS: * Cosine must be loaded first if same register. * FMOVECR: * Status register was not updated (yes, this affects it). * FMOVE -> reg: * Status register was not updated (yes, this affects it). * FMOVE reg -> reg: * Status register was not updated. * FDBcc: * The loop termination condition was wrong. * Possible leak from int16 to int32 fixed. * get_fp_value: * Immediate addressing mode && Operation Length == Byte -> * Use the low-order byte of the extension word. * Now FPU fpcr high 16 bits are always read as zeroes, no matter what was * written to them. * * Other: * - Optimized single/double/extended to/from conversion functions. * Huge speed boost, but not (necessarily) portable to other systems. * Enabled/disabled by #define FPU_HAVE_IEEE_DOUBLE 1 * - Optimized versions of FSCALE, FGETEXP, FGETMAN * - Conversion routines now handle NaN and infinity better. * - Some constants precalculated. Not all compilers can optimize the * expressions previously used. * * TODO: * - Floating point exceptions. * - More Infinity/NaN/overflow/underflow checking. * - FPU instruction_address (only needed when exceptions are implemented) * - Should be written in assembly to support long doubles. * - Precision rounding single/double */ #include "sysdeps.h" #include "memory-uae.h" #include "readcpu.h" #include "newcpu.h" #include "main.h" #define FPU_IMPLEMENTATION #include "fpu/fpu.h" #include "fpu/fpu_uae.h" #ifdef HAVE_NEW_HEADERS #define _GLIBCPP_USE_C99 1 # include # include using namespace __gnu_cxx; #undef _GLIBCPP_USE_C99 #else # include # include #endif /* Global FPU context */ fpu_t fpu; /* -------------------------------------------------------------------------- */ /* --- Native Support --- */ /* -------------------------------------------------------------------------- */ #include "fpu/flags.h" #include "fpu/exceptions.h" #include "fpu/rounding.h" #include "fpu/impl.h" #include "fpu/flags.cpp" #include "fpu/exceptions.cpp" /* -------------------------------------------------------------------------- */ /* --- Scopes Definition --- */ /* -------------------------------------------------------------------------- */ #undef PUBLIC #define PUBLIC /**/ #undef PRIVATE #define PRIVATE static #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. /* -------------------------------------------------------------------------- */ /* --- Debugging --- */ /* -------------------------------------------------------------------------- */ PUBLIC void FFPU fpu_dump_registers(void) { for (int i = 0; i < 8; i++){ printf ("FP%d: %g ", i, fpu_get_register(i)); if ((i & 3) == 3) printf ("\n"); } } PUBLIC void FFPU fpu_dump_flags(void) { printf ("N=%d Z=%d I=%d NAN=%d\n", (get_fpsr() & FPSR_CCB_NEGATIVE) != 0, (get_fpsr() & FPSR_CCB_ZERO)!= 0, (get_fpsr() & FPSR_CCB_INFINITY) != 0, (get_fpsr() & FPSR_CCB_NAN) != 0); } /* single : S 8*E 23*F */ /* double : S 11*E 52*F */ /* extended : S 15*E 64*F */ /* E = 0 & F = 0 -> 0 */ /* E = MAX & F = 0 -> Infin */ /* E = MAX & F # 0 -> NotANumber */ /* E = biased by 127 (single) ,1023 (double) ,16383 (extended) */ #if FPU_DEBUG PUBLIC void FFPU dump_registers(const char * str) { char temp_str[512]; sprintf(temp_str, "%s: %.04f, %.04f, %.04f, %.04f, %.04f, %.04f, %.04f, %.04f\n", str, fpu_get_register(0), fpu_get_register(1), fpu_get_register(2), fpu_get_register(3), fpu_get_register(4), fpu_get_register(5), fpu_get_register(6), fpu_get_register(7) ); fpu_debug((temp_str)); } PUBLIC void FFPU dump_first_bytes(uae_u8 * buffer, uae_s32 actual) { char temp_buf1[256], temp_buf2[10]; int bytes = sizeof(temp_buf1)/3-1-3; if (actual < bytes) bytes = actual; temp_buf1[0] = 0; for (int i = 0; i < bytes; i++) { sprintf(temp_buf2, "%02x ", (uae_u32)buffer[i]); strcat(temp_buf1, temp_buf2); } strcat(temp_buf1, "\n"); fpu_debug((temp_buf1)); } #else PUBLIC void FFPU dump_registers(const char *) { } #define dump_first_bytes(a,b) #endif PRIVATE inline fpu_register FFPU round_to_zero(fpu_register const & x) { return (x < 0.0 ? ceil(x) : floor(x)); } PRIVATE inline fpu_register FFPU round_to_nearest(fpu_register const & x) { return floor(x + 0.5); } #if FPU_HAVE_IEEE_DOUBLE #ifndef HAVE_ISNAN #define isnan(x) do_isnan((x)) #endif PRIVATE inline bool FFPU do_isnan(fpu_register const & r) { fpu_register_parts const p = { r }; if ((p.parts[FHI] & 0x7FF00000) == 0x7FF00000) { // logical or is faster here. if ((p.parts[FHI] & 0x000FFFFF) || p.parts[FLO]) { return true; } } return false; } #ifndef HAVE_ISINF #define isinf(x) do_isinf((x)) #endif PRIVATE inline bool FFPU do_isinf(fpu_register const & r) { fpu_register_parts const p = { r }; if ((p.parts[FHI] & 0x7FF00000) == 0x7FF00000 && p.parts[FLO] == 0) { return true; } return false; } #ifndef HAVE_ISNEG #define isneg(x) do_isneg((x)) #endif PRIVATE inline bool FFPU do_isneg(fpu_register const & r) { fpu_register_parts const p = { r }; return ((p.parts[FHI] & 0x80000000) != 0); } #ifndef HAVE_ISZERO #define iszero(x) do_iszero((x)) #endif PRIVATE inline bool FFPU do_iszero(fpu_register const & r) { fpu_register_parts const p = { r }; return (((p.parts[FHI] & 0x7FF00000) == 0) && p.parts[FLO] == 0); } // May be optimized for particular processors #ifndef FPU_USE_NATIVE_FLAGS PRIVATE inline void FFPU make_fpsr(fpu_register const & r) { FPU fpsr.condition_codes = (iszero(r) ? NATIVE_FFLAG_ZERO : 0) | (isneg(r) ? NATIVE_FFLAG_NEGATIVE : 0) | (isnan(r) ? NATIVE_FFLAG_NAN : 0) | (isinf(r) ? NATIVE_FFLAG_INFINITY : 0) ; } #endif PRIVATE inline void FFPU get_dest_flags(fpu_register const & r) { fl_dest.negative = isneg(r); fl_dest.zero = iszero(r); fl_dest.infinity = isinf(r); fl_dest.nan = isnan(r); fl_dest.in_range = !fl_dest.zero && !fl_dest.infinity && !fl_dest.nan; } PRIVATE inline void FFPU get_source_flags(fpu_register const & r) { fl_source.negative = isneg(r); fl_source.zero = iszero(r); fl_source.infinity = isinf(r); fl_source.nan = isnan(r); fl_source.in_range = !fl_source.zero && !fl_source.infinity && !fl_source.nan; } PRIVATE inline void FFPU make_nan(fpu_register & r, bool negative) { fpu_register_parts p; p.parts[FLO] = 0xffffffff; p.parts[FHI] = negative ? 0xffffffff : 0x7fffffff; r = p.val; } PRIVATE inline void FFPU make_zero(fpu_register & r, bool negative) { fpu_register_parts p; p.parts[FLO] = 0; p.parts[FHI] = negative ? 0x80000000 : 0; r = p.val; } PRIVATE inline void FFPU make_inf(fpu_register & r, bool negative) { fpu_register_parts p; p.parts[FLO] = 0; p.parts[FHI] = negative ? 0xFFF00000 : 0x7FF00000; r = p.val; } PRIVATE inline void FFPU fast_scale(fpu_register & r, int add) { fpu_register_parts p = { r }; int exp = (p.parts[FHI] & 0x7FF00000) >> 20; // TODO: overflow flags exp += add; if(exp >= 2047) { make_inf(r, false); return; } else if(exp < 0) { // keep sign (+/- 0) p.parts[FHI] &= 0x80000000; } else { p.parts[FHI] = (p.parts[FHI] & 0x800FFFFF) | ((uae_u32)exp << 20); } r = p.val; } PRIVATE inline fpu_register FFPU fast_fgetexp(fpu_register const & r) { fpu_register_parts const p = { r }; int exp = (p.parts[FHI] & 0x7FF00000) >> 20; return( exp - 1023 ); } // Normalize to range 1..2 PRIVATE inline void FFPU fast_remove_exponent(fpu_register & r) { fpu_register_parts p = { r }; p.parts[FHI] = (p.parts[FHI] & 0x800FFFFF) | 0x3FF00000; r = p.val; } // The sign of the quotient is the exclusive-OR of the sign bits // of the source and destination operands. PRIVATE inline uae_u32 FFPU get_quotient_sign(fpu_register const & ra, fpu_register const & rb) { fpu_register_parts const a = { ra }; fpu_register_parts const b = { rb }; return (((a.parts[FHI] ^ b.parts[FHI]) & 0x80000000) ? FPSR_QUOTIENT_SIGN : 0); } // Quotient Byte is loaded with the sign and least significant // seven bits of the quotient. PRIVATE inline void FFPU make_quotient(fpu_register const & quotient, uae_u32 sign) { uae_u32 lsb = (uae_u32)fabs(quotient) & 0x7f; FPU fpsr.quotient = sign | (lsb << 16); } // to_single PRIVATE inline fpu_register FFPU make_single(uae_u32 value) { if ((value & 0x7fffffff) == 0) return (0.0); fpu_register result; fpu_register_parts p; uae_u32 sign = (value & 0x80000000); uae_u32 exp = ((value & 0x7F800000) >> 23) + 1023 - 127; p.parts[FLO] = value << 29; p.parts[FHI] = sign | (exp << 20) | ((value & 0x007FFFFF) >> 3); result = p.val; fpu_debug(("make_single (%X) = %.04f\n",value,(double)result)); return(result); } // from_single PRIVATE inline uae_u32 FFPU extract_single(fpu_register const & src) { if (src == 0.0) return 0; uae_u32 result; fpu_register_parts const p = { src }; uae_u32 sign = (p.parts[FHI] & 0x80000000); uae_u32 exp = (p.parts[FHI] & 0x7FF00000) >> 20; if(exp + 127 < 1023) { exp = 0; } else if(exp > 1023 + 127) { exp = 255; } else { exp = exp + 127 - 1023; } result = sign | (exp << 23) | ((p.parts[FHI] & 0x000FFFFF) << 3) | (p.parts[FLO] >> 29); fpu_debug(("extract_single (%.04f) = %X\n",(double)src,result)); return (result); } // to_exten PRIVATE inline fpu_register FFPU make_extended(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3) { if ((wrd1 & 0x7fff0000) == 0 && wrd2 == 0 && wrd3 == 0) return 0.0; fpu_register result; fpu_register_parts p; uae_u32 sign = wrd1 & 0x80000000; uae_u32 exp = (wrd1 >> 16) & 0x7fff; // The explicit integer bit is not set, must normalize. if((wrd2 & 0x80000000) == 0) { fpu_debug(("make_extended denormalized mantissa (%X,%X,%X)\n",wrd1,wrd2,wrd3)); if( wrd2 | wrd3 ) { // mantissa, not fraction. uae_u64 man = ((uae_u64)wrd2 << 32) | wrd3; while( exp > 0 && (man & UVAL64(0x8000000000000000)) == 0 ) { man <<= 1; exp--; } wrd2 = (uae_u32)( man >> 32 ); wrd3 = (uae_u32)( man & 0xFFFFFFFF ); } else { if(exp == 0x7FFF) { // Infinity. } else { // Zero exp = 16383 - 1023; } } } if(exp < 16383 - 1023) { // should set underflow. exp = 0; } else if(exp > 16383 + 1023) { // should set overflow. exp = 2047; } else { exp = exp + 1023 - 16383; } // drop the explicit integer bit. p.parts[FLO] = (wrd2 << 21) | (wrd3 >> 11); p.parts[FHI] = sign | (exp << 20) | ((wrd2 & 0x7FFFFFFF) >> 11); result = p.val; fpu_debug(("make_extended (%X,%X,%X) = %.04f\n",wrd1,wrd2,wrd3,(double)result)); return(result); } /* Would be so much easier with full size floats :( ... this is so vague. */ // make_extended_no_normalize PRIVATE inline void FFPU make_extended_no_normalize( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3, fpu_register & result ) { // Is it zero? if ((wrd1 & 0x7fff0000) == 0 && wrd2 == 0 && wrd3 == 0) { make_zero(result, false); return; } // Is it NaN? if( (wrd1 & 0x7FFF0000) == 0x7FFF0000 ) { if( (wrd1 & 0x0000FFFF) || wrd2 || wrd3 ) { make_nan(result, (wrd1 & 0x80000000) != 0); return; } } uae_u32 sign = wrd1 & 0x80000000; uae_u32 exp = (wrd1 >> 16) & 0x7fff; if(exp < 16383 - 1023) { // should set underflow. exp = 0; } else if(exp > 16383 + 1023) { // should set overflow. exp = 2047; } else { exp = exp + 1023 - 16383; } // drop the explicit integer bit. fpu_register_parts p; p.parts[FLO] = (wrd2 << 21) | (wrd3 >> 11); p.parts[FHI] = sign | (exp << 20) | ((wrd2 & 0x7FFFFFFF) >> 11); result = p.val; fpu_debug(("make_extended (%X,%X,%X) = %.04f\n",wrd1,wrd2,wrd3,(double)result)); } // from_exten PRIVATE inline void FFPU extract_extended(fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3 ) { if (src == 0.0) { *wrd1 = *wrd2 = *wrd3 = 0; return; } fpu_register_parts const p = { src }; fpu_debug(("extract_extended (%X,%X)\n",p.parts[FLO],p.parts[FHI])); uae_u32 sign = p.parts[FHI] & 0x80000000; uae_u32 exp = ((p.parts[FHI] >> 20) & 0x7ff); // Check for maximum if(exp == 0x7FF) { exp = 0x7FFF; } else { exp += 16383 - 1023; } *wrd1 = sign | (exp << 16); // always set the explicit integer bit. *wrd2 = 0x80000000 | ((p.parts[FHI] & 0x000FFFFF) << 11) | ((p.parts[FLO] & 0xFFE00000) >> 21); *wrd3 = p.parts[FLO] << 11; fpu_debug(("extract_extended (%.04f) = %X,%X,%X\n",(double)src,*wrd1,*wrd2,*wrd3)); } // to_double PRIVATE inline fpu_register FFPU make_double(uae_u32 wrd1, uae_u32 wrd2) { if ((wrd1 & 0x7fffffff) == 0 && wrd2 == 0) return 0.0; fpu_register result; fpu_register_parts p; p.parts[FLO] = wrd2; p.parts[FHI] = wrd1; result = p.val; fpu_debug(("make_double (%X,%X) = %.04f\n",wrd1,wrd2,(double)result)); return(result); } // from_double PRIVATE inline void FFPU extract_double(fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2 ) { /* if (src == 0.0) { *wrd1 = *wrd2 = 0; return; } */ fpu_register_parts const p = { src }; *wrd2 = p.parts[FLO]; *wrd1 = p.parts[FHI]; fpu_debug(("extract_double (%.04f) = %X,%X\n",(double)src,*wrd1,*wrd2)); } #else // !FPU_HAVE_IEEE_DOUBLE #ifndef FPU_USE_NATIVE_FLAGS PRIVATE inline void FFPU make_fpsr(fpu_register const & r) { FPU fpsr.condition_codes = (iszero(r) ? NATIVE_FFLAG_ZERO : 0) | (isneg(r) ? NATIVE_FFLAG_NEGATIVE : 0) ; } #endif // make_single PRIVATE inline fpu_register FFPU make_single(uae_u32 value) { if ((value & 0x7fffffff) == 0) return (0.0); fpu_register frac = (fpu_register) ((value & 0x7fffff) | 0x800000) / 8388608.0; if (value & 0x80000000) frac = -frac; fpu_register result = ldexp (frac, (int)((value >> 23) & 0xff) - 127); fpu_debug(("make_single (%X) = %.04f\n",value,(double)result)); return (result); } // extract_single PRIVATE inline uae_u32 FFPU extract_single(fpu_register const & src) { int expon; uae_u32 tmp, result; fpu_register frac; #if FPU_DEBUG fpu_register src0 = src; #endif if (src == 0.0) return 0; if (src < 0) { tmp = 0x80000000; src = -src; } else { tmp = 0; } frac = frexp (src, &expon); frac += 0.5 / 16777216.0; if (frac >= 1.0) { frac /= 2.0; expon++; } result = tmp | (((expon + 127 - 1) & 0xff) << 23) | (((int) (frac * 16777216.0)) & 0x7fffff); // fpu_debug(("extract_single (%.04f) = %X\n",(float)src0,result)); return (result); } // to exten PRIVATE inline fpu_register FFPU make_extended(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3) { fpu_register frac, result; if ((wrd1 & 0x7fff0000) == 0 && wrd2 == 0 && wrd3 == 0) return 0.0; frac = (fpu_register) wrd2 / 2147483648.0 + (fpu_register) wrd3 / 9223372036854775808.0; if (wrd1 & 0x80000000) frac = -frac; result = ldexp (frac, (int)((wrd1 >> 16) & 0x7fff) - 16383); fpu_debug(("make_extended (%X,%X,%X) = %.04f\n",wrd1,wrd2,wrd3,(double)result)); return result; } // extract_extended PRIVATE inline void FFPU extract_extended(fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3) { int expon; fpu_register frac; #if FPU_DEBUG fpu_register src0 = src; #endif if (src == 0.0) { *wrd1 = 0; *wrd2 = 0; *wrd3 = 0; return; } if (src < 0) { *wrd1 = 0x80000000; src = -src; } else { *wrd1 = 0; } frac = frexp (src, &expon); frac += 0.5 / 18446744073709551616.0; if (frac >= 1.0) { frac /= 2.0; expon++; } *wrd1 |= (((expon + 16383 - 1) & 0x7fff) << 16); *wrd2 = (uae_u32) (frac * 4294967296.0); *wrd3 = (uae_u32) (frac * 18446744073709551616.0 - *wrd2 * 4294967296.0); // fpu_debug(("extract_extended (%.04f) = %X,%X,%X\n",(float)src0,*wrd1,*wrd2,*wrd3)); } // make_double PRIVATE inline fpu_register FFPU make_double(uae_u32 wrd1, uae_u32 wrd2) { if ((wrd1 & 0x7fffffff) == 0 && wrd2 == 0) return 0.0; fpu_register frac = (fpu_register) ((wrd1 & 0xfffff) | 0x100000) / 1048576.0 + (fpu_register) wrd2 / 4503599627370496.0; if (wrd1 & 0x80000000) frac = -frac; fpu_register result = ldexp (frac, (int)((wrd1 >> 20) & 0x7ff) - 1023); fpu_debug(("make_double (%X,%X) = %.04f\n",wrd1,wrd2,(double)result)); return result; } // extract_double PRIVATE inline void FFPU extract_double(fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2) { int expon; int tmp; fpu_register frac frac; #if FPU_DEBUG fpu_register src0 = src; #endif if (src == 0.0) { *wrd1 = 0; *wrd2 = 0; return; } if (src < 0) { *wrd1 = 0x80000000; src = -src; } else { *wrd1 = 0; } frac = frexp (src, &expon); frac += 0.5 / 9007199254740992.0; if (frac >= 1.0) { frac /= 2.0; expon++; } tmp = (uae_u32) (frac * 2097152.0); *wrd1 |= (((expon + 1023 - 1) & 0x7ff) << 20) | (tmp & 0xfffff); *wrd2 = (uae_u32) (frac * 9007199254740992.0 - tmp * 4294967296.0); // fpu_debug(("extract_double (%.04f) = %X,%X\n",(float)src0,*wrd1,*wrd2)); } #endif // to_pack PRIVATE inline fpu_register FFPU make_packed(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3) { fpu_double d; char *cp; char str[100]; cp = str; if (wrd1 & 0x80000000) *cp++ = '-'; *cp++ = (char)((wrd1 & 0xf) + '0'); *cp++ = '.'; *cp++ = (char)(((wrd2 >> 28) & 0xf) + '0'); *cp++ = (char)(((wrd2 >> 24) & 0xf) + '0'); *cp++ = (char)(((wrd2 >> 20) & 0xf) + '0'); *cp++ = (char)(((wrd2 >> 16) & 0xf) + '0'); *cp++ = (char)(((wrd2 >> 12) & 0xf) + '0'); *cp++ = (char)(((wrd2 >> 8) & 0xf) + '0'); *cp++ = (char)(((wrd2 >> 4) & 0xf) + '0'); *cp++ = (char)(((wrd2 >> 0) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 28) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 24) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 20) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 16) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 12) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 8) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 4) & 0xf) + '0'); *cp++ = (char)(((wrd3 >> 0) & 0xf) + '0'); *cp++ = 'E'; if (wrd1 & 0x40000000) *cp++ = '-'; *cp++ = (char)(((wrd1 >> 24) & 0xf) + '0'); *cp++ = (char)(((wrd1 >> 20) & 0xf) + '0'); *cp++ = (char)(((wrd1 >> 16) & 0xf) + '0'); *cp = 0; sscanf(str, "%le", &d); fpu_debug(("make_packed str = %s\n",str)); fpu_debug(("make_packed(%X,%X,%X) = %.04f\n",wrd1,wrd2,wrd3,(double)d)); return d; } // from_pack PRIVATE inline void FFPU extract_packed(fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3) { int i; int t; char *cp; char str[100]; sprintf(str, "%.16e", src); fpu_debug(("extract_packed(%.04f,%s)\n",(double)src,str)); cp = str; *wrd1 = *wrd2 = *wrd3 = 0; if (*cp == '-') { cp++; *wrd1 = 0x80000000; } if (*cp == '+') cp++; *wrd1 |= (*cp++ - '0'); if (*cp == '.') cp++; for (i = 0; i < 8; i++) { *wrd2 <<= 4; if (*cp >= '0' && *cp <= '9') *wrd2 |= *cp++ - '0'; } for (i = 0; i < 8; i++) { *wrd3 <<= 4; if (*cp >= '0' && *cp <= '9') *wrd3 |= *cp++ - '0'; } if (*cp == 'e' || *cp == 'E') { cp++; if (*cp == '-') { cp++; *wrd1 |= 0x40000000; } if (*cp == '+') cp++; t = 0; for (i = 0; i < 3; i++) { if (*cp >= '0' && *cp <= '9') t = (t << 4) | (*cp++ - '0'); } *wrd1 |= t << 16; } fpu_debug(("extract_packed(%.04f) = %X,%X,%X\n",(double)src,*wrd1,*wrd2,*wrd3)); } PRIVATE inline int FFPU get_fp_value (uae_u32 opcode, uae_u16 extra, fpu_register & src) { uaecptr tmppc; uae_u16 tmp; int size; int mode; int reg; uae_u32 ad = 0; static int sz1[8] = {4, 4, 12, 12, 2, 8, 1, 0}; static int sz2[8] = {4, 4, 12, 12, 2, 8, 2, 0}; // fpu_debug(("get_fp_value(%X,%X)\n",(int)opcode,(int)extra)); // dump_first_bytes( regs.pc_p-4, 16 ); if ((extra & 0x4000) == 0) { src = FPU registers[(extra >> 10) & 7]; return 1; } mode = (opcode >> 3) & 7; reg = opcode & 7; size = (extra >> 10) & 7; fpu_debug(("get_fp_value mode=%d, reg=%d, size=%d\n",(int)mode,(int)reg,(int)size)); switch (mode) { case 0: switch (size) { case 6: src = (fpu_register) (uae_s8) m68k_dreg (regs, reg); break; case 4: src = (fpu_register) (uae_s16) m68k_dreg (regs, reg); break; case 0: src = (fpu_register) (uae_s32) m68k_dreg (regs, reg); break; case 1: src = make_single(m68k_dreg (regs, reg)); break; default: return 0; } return 1; case 1: return 0; case 2: ad = m68k_areg (regs, reg); break; case 3: ad = m68k_areg (regs, reg); break; case 4: ad = m68k_areg (regs, reg) - (reg == 7 ? sz2[size] : sz1[size]); break; case 5: ad = m68k_areg (regs, reg) + (uae_s32) (uae_s16) next_iword(); break; case 6: ad = get_disp_ea_020 (m68k_areg (regs, reg), next_iword()); break; case 7: switch (reg) { case 0: ad = (uae_s32) (uae_s16) next_iword(); break; case 1: ad = next_ilong(); break; case 2: ad = m68k_getpc (); ad += (uae_s32) (uae_s16) next_iword(); fpu_debug(("get_fp_value next_iword()=%X\n",ad-m68k_getpc()-2)); break; case 3: tmppc = m68k_getpc (); tmp = (uae_u16)next_iword(); ad = get_disp_ea_020 (tmppc, tmp); break; case 4: ad = m68k_getpc (); m68k_setpc (ad + sz2[size]); // Immediate addressing mode && Operation Length == Byte -> // Use the low-order byte of the extension word. if(size == 6) ad++; break; default: return 0; } } fpu_debug(("get_fp_value m68k_getpc()=%X\n",m68k_getpc())); fpu_debug(("get_fp_value ad=%X\n",ad)); fpu_debug(("get_fp_value get_long (ad)=%X\n",get_long (ad))); dump_first_bytes( get_real_address(ad, 0, 0)-64, 64 ); dump_first_bytes( get_real_address(ad, 0, 0), 64 ); switch (size) { case 0: src = (fpu_register) (uae_s32) get_long (ad); break; case 1: src = make_single(get_long (ad)); break; case 2: { uae_u32 wrd1, wrd2, wrd3; wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); ad += 4; wrd3 = get_long (ad); src = make_extended(wrd1, wrd2, wrd3); break; } case 3: { uae_u32 wrd1, wrd2, wrd3; wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); ad += 4; wrd3 = get_long (ad); src = make_packed(wrd1, wrd2, wrd3); break; } case 4: src = (fpu_register) (uae_s16) get_word(ad); break; case 5: { uae_u32 wrd1, wrd2; wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); src = make_double(wrd1, wrd2); break; } case 6: src = (fpu_register) (uae_s8) get_byte(ad); break; default: return 0; } switch (mode) { case 3: m68k_areg (regs, reg) += reg == 7 ? sz2[size] : sz1[size]; break; case 4: m68k_areg (regs, reg) -= reg == 7 ? sz2[size] : sz1[size]; break; } // fpu_debug(("get_fp_value result = %.04f\n",(float)src)); return 1; } PRIVATE inline int FFPU put_fp_value (uae_u32 opcode, uae_u16 extra, fpu_register const & value) { uae_u16 tmp; uaecptr tmppc; int size; int mode; int reg; uae_u32 ad; static int sz1[8] = {4, 4, 12, 12, 2, 8, 1, 0}; static int sz2[8] = {4, 4, 12, 12, 2, 8, 2, 0}; // fpu_debug(("put_fp_value(%.04f,%X,%X)\n",(float)value,(int)opcode,(int)extra)); if ((extra & 0x4000) == 0) { int dest_reg = (extra >> 10) & 7; FPU registers[dest_reg] = value; make_fpsr(FPU registers[dest_reg]); return 1; } mode = (opcode >> 3) & 7; reg = opcode & 7; size = (extra >> 10) & 7; ad = 0xffffffff; switch (mode) { case 0: switch (size) { case 6: m68k_dreg (regs, reg) = (((uae_s32) value & 0xff) | (m68k_dreg (regs, reg) & ~0xff)); break; case 4: m68k_dreg (regs, reg) = (((uae_s32) value & 0xffff) | (m68k_dreg (regs, reg) & ~0xffff)); break; case 0: m68k_dreg (regs, reg) = (uae_s32) value; break; case 1: m68k_dreg (regs, reg) = extract_single(value); break; default: return 0; } return 1; case 1: return 0; case 2: ad = m68k_areg (regs, reg); break; case 3: ad = m68k_areg (regs, reg); m68k_areg (regs, reg) += reg == 7 ? sz2[size] : sz1[size]; break; case 4: m68k_areg (regs, reg) -= reg == 7 ? sz2[size] : sz1[size]; ad = m68k_areg (regs, reg); break; case 5: ad = m68k_areg (regs, reg) + (uae_s32) (uae_s16) next_iword(); break; case 6: ad = get_disp_ea_020 (m68k_areg (regs, reg), next_iword()); break; case 7: switch (reg) { case 0: ad = (uae_s32) (uae_s16) next_iword(); break; case 1: ad = next_ilong(); break; case 2: ad = m68k_getpc (); ad += (uae_s32) (uae_s16) next_iword(); break; case 3: tmppc = m68k_getpc (); tmp = (uae_u16)next_iword(); ad = get_disp_ea_020 (tmppc, tmp); break; case 4: ad = m68k_getpc (); m68k_setpc (ad + sz2[size]); break; default: return 0; } } switch (size) { case 0: put_long (ad, (uae_s32) value); break; case 1: put_long (ad, extract_single(value)); break; case 2: { uae_u32 wrd1, wrd2, wrd3; extract_extended(value, &wrd1, &wrd2, &wrd3); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); ad += 4; put_long (ad, wrd3); break; } case 3: { uae_u32 wrd1, wrd2, wrd3; extract_packed(value, &wrd1, &wrd2, &wrd3); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); ad += 4; put_long (ad, wrd3); break; } case 4: put_word(ad, (uae_s16) value); break; case 5: { uae_u32 wrd1, wrd2; extract_double(value, &wrd1, &wrd2); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); break; } case 6: put_byte(ad, (uae_s8) value); break; default: return 0; } return 1; } PRIVATE inline int FFPU get_fp_ad(uae_u32 opcode, uae_u32 * ad) { uae_u16 tmp; uaecptr tmppc; int mode; int reg; mode = (opcode >> 3) & 7; reg = opcode & 7; switch (mode) { case 0: case 1: return 0; case 2: *ad = m68k_areg (regs, reg); break; case 3: *ad = m68k_areg (regs, reg); break; case 4: *ad = m68k_areg (regs, reg); break; case 5: *ad = m68k_areg (regs, reg) + (uae_s32) (uae_s16) next_iword(); break; case 6: *ad = get_disp_ea_020 (m68k_areg (regs, reg), next_iword()); break; case 7: switch (reg) { case 0: *ad = (uae_s32) (uae_s16) next_iword(); break; case 1: *ad = next_ilong(); break; case 2: *ad = m68k_getpc (); *ad += (uae_s32) (uae_s16) next_iword(); break; case 3: tmppc = m68k_getpc (); tmp = (uae_u16)next_iword(); *ad = get_disp_ea_020 (tmppc, tmp); break; default: return 0; } } return 1; } #if FPU_DEBUG # define CONDRET(s,x) fpu_debug(("fpp_cond %s = %d\n",s,(uint32)(x))); return (x) #else # define CONDRET(s,x) return (x) #endif PRIVATE inline int FFPU fpp_cond(int condition) { #if 1 # define N ((FPU fpsr.condition_codes & NATIVE_FFLAG_NEGATIVE) == NATIVE_FFLAG_NEGATIVE) # define Z ((FPU fpsr.condition_codes & NATIVE_FFLAG_ZERO) == NATIVE_FFLAG_ZERO) # define I ((FPU fpsr.condition_codes & NATIVE_FFLAG_INFINITY) == NATIVE_FFLAG_INFINITY) # define NaN ((FPU fpsr.condition_codes & NATIVE_FFLAG_NAN) == NATIVE_FFLAG_NAN) #else # define N ((FPU fpsr.condition_codes & NATIVE_FFLAG_NEGATIVE) != 0) # define Z ((FPU fpsr.condition_codes & NATIVE_FFLAG_ZERO) != 0) # define I ((FPU fpsr.condition_codes & NATIVE_FFLAG_INFINITY) != 0) # define NaN ((FPU fpsr.condition_codes & NATIVE_FFLAG_NAN) != 0) #endif #if 0 return fpcctrue(condition); #else switch (condition & 0x1f) { case 0x00: CONDRET("False",0); case 0x01: CONDRET("Equal",Z); case 0x02: CONDRET("Ordered Greater Than",!(NaN || Z || N)); case 0x03: CONDRET("Ordered Greater Than or Equal",Z || !(NaN || N)); case 0x04: CONDRET("Ordered Less Than",N && !(NaN || Z)); case 0x05: CONDRET("Ordered Less Than or Equal",Z || (N && !NaN)); case 0x06: CONDRET("Ordered Greater or Less Than",!(NaN || Z)); case 0x07: CONDRET("Ordered",!NaN); case 0x08: CONDRET("Unordered",NaN); case 0x09: CONDRET("Unordered or Equal",NaN || Z); case 0x0a: CONDRET("Unordered or Greater Than",NaN || !(N || Z)); case 0x0b: CONDRET("Unordered or Greater or Equal",NaN || Z || !N); case 0x0c: CONDRET("Unordered or Less Than",NaN || (N && !Z)); case 0x0d: CONDRET("Unordered or Less or Equal",NaN || Z || N); case 0x0e: CONDRET("Not Equal",!Z); case 0x0f: CONDRET("True",1); case 0x10: CONDRET("Signaling False",0); case 0x11: CONDRET("Signaling Equal",Z); case 0x12: CONDRET("Greater Than",!(NaN || Z || N)); case 0x13: CONDRET("Greater Than or Equal",Z || !(NaN || N)); case 0x14: CONDRET("Less Than",N && !(NaN || Z)); case 0x15: CONDRET("Less Than or Equal",Z || (N && !NaN)); case 0x16: CONDRET("Greater or Less Than",!(NaN || Z)); case 0x17: CONDRET("Greater, Less or Equal",!NaN); case 0x18: CONDRET("Not Greater, Less or Equal",NaN); case 0x19: CONDRET("Not Greater or Less Than",NaN || Z); case 0x1a: CONDRET("Not Less Than or Equal",NaN || !(N || Z)); case 0x1b: CONDRET("Not Less Than",NaN || Z || !N); case 0x1c: CONDRET("Not Greater Than or Equal", NaN || (N && !Z)); // case 0x1c: CONDRET("Not Greater Than or Equal",!Z && (NaN || N)); case 0x1d: CONDRET("Not Greater Than",NaN || Z || N); case 0x1e: CONDRET("Signaling Not Equal",!Z); case 0x1f: CONDRET("Signaling True",1); default: CONDRET("",-1); } #endif # undef N # undef Z # undef I # undef NaN } void FFPU fpuop_dbcc(uae_u32 opcode, uae_u32 extra) { fpu_debug(("fdbcc_opp %X, %X at %08lx\n", (uae_u32)opcode, (uae_u32)extra, m68k_getpc ())); uaecptr pc = (uae_u32) m68k_getpc (); uae_s32 disp = (uae_s32) (uae_s16) next_iword(); int cc = fpp_cond(extra & 0x3f); if (cc == -1) { m68k_setpc (pc - 4); op_illg (opcode); } else if (!cc) { int reg = opcode & 0x7; // this may have leaked. /* m68k_dreg (regs, reg) = ((m68k_dreg (regs, reg) & ~0xffff) | ((m68k_dreg (regs, reg) - 1) & 0xffff)); */ m68k_dreg (regs, reg) = ((m68k_dreg (regs, reg) & 0xffff0000) | (((m68k_dreg (regs, reg) & 0xffff) - 1) & 0xffff)); // condition reversed. // if ((m68k_dreg (regs, reg) & 0xffff) == 0xffff) if ((m68k_dreg (regs, reg) & 0xffff) != 0xffff) m68k_setpc (pc + disp); } } void FFPU fpuop_scc(uae_u32 opcode, uae_u32 extra) { fpu_debug(("fscc_opp %X, %X at %08lx\n", (uae_u32)opcode, (uae_u32)extra, m68k_getpc ())); uae_u32 ad; int cc = fpp_cond(extra & 0x3f); if (cc == -1) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); } else if ((opcode & 0x38) == 0) { m68k_dreg (regs, opcode & 7) = (m68k_dreg (regs, opcode & 7) & ~0xff) | (cc ? 0xff : 0x00); } else if (get_fp_ad(opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); } else put_byte(ad, cc ? 0xff : 0x00); } void FFPU fpuop_trapcc(uae_u32 opcode, uaecptr oldpc, uae_u32 extra) { fpu_debug(("ftrapcc_opp %X, %X at %08lx\n", (uae_u32)opcode, (uae_u32)extra, m68k_getpc ())); int cc = fpp_cond(extra & 0x3f); if (cc == -1) { m68k_setpc (oldpc); op_illg (opcode); } if (cc) Exception(7, oldpc - 2); } // NOTE that we get here also when there is a FNOP (nontrapping false, displ 0) void FFPU fpuop_bcc(uae_u32 opcode, uaecptr pc, uae_u32 extra) { fpu_debug(("fbcc_opp %X, %X at %08lx, jumpto=%X\n", (uae_u32)opcode, (uae_u32)extra, m68k_getpc (), extra )); int cc = fpp_cond(opcode & 0x3f); if (cc == -1) { m68k_setpc (pc); op_illg (opcode); } else if (cc) { if ((opcode & 0x40) == 0) extra = (uae_s32) (uae_s16) extra; m68k_setpc (pc + extra); } } // FSAVE has no post-increment // 0x1f180000 == IDLE state frame, coprocessor version number 1F void FFPU fpuop_save(uae_u32 opcode) { fpu_debug(("fsave_opp at %08lx\n", m68k_getpc ())); uae_u32 ad; int incr = (opcode & 0x38) == 0x20 ? -1 : 1; int i; if (get_fp_ad(opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 2); op_illg (opcode); return; } if (CPUType == 4) { // Put 4 byte 68040 IDLE frame. if (incr < 0) { ad -= 4; put_long (ad, 0x41000000); } else { put_long (ad, 0x41000000); ad += 4; } } else { // Put 28 byte 68881 IDLE frame. if (incr < 0) { fpu_debug(("fsave_opp pre-decrement\n")); ad -= 4; // What's this? Some BIU flags, or (incorrectly placed) command/condition? put_long (ad, 0x70000000); for (i = 0; i < 5; i++) { ad -= 4; put_long (ad, 0x00000000); } ad -= 4; put_long (ad, 0x1f180000); // IDLE, vers 1f } else { put_long (ad, 0x1f180000); // IDLE, vers 1f ad += 4; for (i = 0; i < 5; i++) { put_long (ad, 0x00000000); ad += 4; } // What's this? Some BIU flags, or (incorrectly placed) command/condition? put_long (ad, 0x70000000); ad += 4; } } if ((opcode & 0x38) == 0x18) { m68k_areg (regs, opcode & 7) = ad; // Never executed on a 68881 fpu_debug(("PROBLEM: fsave_opp post-increment\n")); } if ((opcode & 0x38) == 0x20) { m68k_areg (regs, opcode & 7) = ad; fpu_debug(("fsave_opp pre-decrement %X -> A%d\n",ad,opcode & 7)); } } // FRESTORE has no pre-decrement void FFPU fpuop_restore(uae_u32 opcode) { fpu_debug(("frestore_opp at %08lx\n", m68k_getpc ())); uae_u32 ad; uae_u32 d; int incr = (opcode & 0x38) == 0x20 ? -1 : 1; if (get_fp_ad(opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 2); op_illg (opcode); return; } if (CPUType == 4) { // 68040 if (incr < 0) { fpu_debug(("PROBLEM: frestore_opp incr < 0\n")); // this may be wrong, but it's never called. ad -= 4; d = get_long (ad); if ((d & 0xff000000) != 0) { // Not a NULL frame? if ((d & 0x00ff0000) == 0) { // IDLE fpu_debug(("frestore_opp found IDLE frame at %X\n",ad-4)); } else if ((d & 0x00ff0000) == 0x00300000) { // UNIMP fpu_debug(("PROBLEM: frestore_opp found UNIMP frame at %X\n",ad-4)); ad -= 44; } else if ((d & 0x00ff0000) == 0x00600000) { // BUSY fpu_debug(("PROBLEM: frestore_opp found BUSY frame at %X\n",ad-4)); ad -= 92; } } } else { d = get_long (ad); fpu_debug(("frestore_opp frame at %X = %X\n",ad,d)); ad += 4; if ((d & 0xff000000) != 0) { // Not a NULL frame? if ((d & 0x00ff0000) == 0) { // IDLE fpu_debug(("frestore_opp found IDLE frame at %X\n",ad-4)); } else if ((d & 0x00ff0000) == 0x00300000) { // UNIMP fpu_debug(("PROBLEM: frestore_opp found UNIMP frame at %X\n",ad-4)); ad += 44; } else if ((d & 0x00ff0000) == 0x00600000) { // BUSY fpu_debug(("PROBLEM: frestore_opp found BUSY frame at %X\n",ad-4)); ad += 92; } } } } else { // 68881 if (incr < 0) { fpu_debug(("PROBLEM: frestore_opp incr < 0\n")); // this may be wrong, but it's never called. ad -= 4; d = get_long (ad); if ((d & 0xff000000) != 0) { if ((d & 0x00ff0000) == 0x00180000) ad -= 6 * 4; else if ((d & 0x00ff0000) == 0x00380000) ad -= 14 * 4; else if ((d & 0x00ff0000) == 0x00b40000) ad -= 45 * 4; } } else { d = get_long (ad); fpu_debug(("frestore_opp frame at %X = %X\n",ad,d)); ad += 4; if ((d & 0xff000000) != 0) { // Not a NULL frame? if ((d & 0x00ff0000) == 0x00180000) { // IDLE fpu_debug(("frestore_opp found IDLE frame at %X\n",ad-4)); ad += 6 * 4; } else if ((d & 0x00ff0000) == 0x00380000) {// UNIMP? shouldn't it be 3C? ad += 14 * 4; fpu_debug(("PROBLEM: frestore_opp found UNIMP? frame at %X\n",ad-4)); } else if ((d & 0x00ff0000) == 0x00b40000) {// BUSY fpu_debug(("PROBLEM: frestore_opp found BUSY frame at %X\n",ad-4)); ad += 45 * 4; } } } } if ((opcode & 0x38) == 0x18) { m68k_areg (regs, opcode & 7) = ad; fpu_debug(("frestore_opp post-increment %X -> A%d\n",ad,opcode & 7)); } if ((opcode & 0x38) == 0x20) { m68k_areg (regs, opcode & 7) = ad; // Never executed on a 68881 fpu_debug(("PROBLEM: frestore_opp pre-decrement\n")); } } void FFPU fpuop_arithmetic(uae_u32 opcode, uae_u32 extra) { int reg; fpu_register src; fpu_debug(("FPP %04lx %04x at %08lx\n", opcode & 0xffff, extra & 0xffff, m68k_getpc () - 4)); dump_registers( "START"); switch ((extra >> 13) & 0x7) { case 3: fpu_debug(("FMOVE -> \n")); if (put_fp_value (opcode, extra, FPU registers[(extra >> 7) & 7]) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); } dump_registers( "END "); return; case 4: case 5: if ((opcode & 0x38) == 0) { if (extra & 0x2000) { // dr bit if (extra & 0x1000) { m68k_dreg (regs, opcode & 7) = get_fpcr(); fpu_debug(("FMOVEM FPU fpcr (%X) -> D%d\n", get_fpcr(), opcode & 7)); } if (extra & 0x0800) { m68k_dreg (regs, opcode & 7) = get_fpsr(); fpu_debug(("FMOVEM FPU fpsr (%X) -> D%d\n", get_fpsr(), opcode & 7)); } if (extra & 0x0400) { m68k_dreg (regs, opcode & 7) = FPU instruction_address; fpu_debug(("FMOVEM FPU instruction_address (%X) -> D%d\n", FPU instruction_address, opcode & 7)); } } else { if (extra & 0x1000) { set_fpcr( m68k_dreg (regs, opcode & 7) ); fpu_debug(("FMOVEM D%d (%X) -> FPU fpcr\n", opcode & 7, get_fpcr())); } if (extra & 0x0800) { set_fpsr( m68k_dreg (regs, opcode & 7) ); fpu_debug(("FMOVEM D%d (%X) -> FPU fpsr\n", opcode & 7, get_fpsr())); } if (extra & 0x0400) { FPU instruction_address = m68k_dreg (regs, opcode & 7); fpu_debug(("FMOVEM D%d (%X) -> FPU instruction_address\n", opcode & 7, FPU instruction_address)); } } // } else if ((opcode & 0x38) == 1) { } else if ((opcode & 0x38) == 8) { if (extra & 0x2000) { // dr bit if (extra & 0x1000) { m68k_areg (regs, opcode & 7) = get_fpcr(); fpu_debug(("FMOVEM FPU fpcr (%X) -> A%d\n", get_fpcr(), opcode & 7)); } if (extra & 0x0800) { m68k_areg (regs, opcode & 7) = get_fpsr(); fpu_debug(("FMOVEM FPU fpsr (%X) -> A%d\n", get_fpsr(), opcode & 7)); } if (extra & 0x0400) { m68k_areg (regs, opcode & 7) = FPU instruction_address; fpu_debug(("FMOVEM FPU instruction_address (%X) -> A%d\n", FPU instruction_address, opcode & 7)); } } else { if (extra & 0x1000) { set_fpcr( m68k_areg (regs, opcode & 7) ); fpu_debug(("FMOVEM A%d (%X) -> FPU fpcr\n", opcode & 7, get_fpcr())); } if (extra & 0x0800) { set_fpsr( m68k_areg (regs, opcode & 7) ); fpu_debug(("FMOVEM A%d (%X) -> FPU fpsr\n", opcode & 7, get_fpsr())); } if (extra & 0x0400) { FPU instruction_address = m68k_areg (regs, opcode & 7); fpu_debug(("FMOVEM A%d (%X) -> FPU instruction_address\n", opcode & 7, FPU instruction_address)); } } } else if ((opcode & 0x3f) == 0x3c) { if ((extra & 0x2000) == 0) { if (extra & 0x1000) { set_fpcr( next_ilong() ); fpu_debug(("FMOVEM #<%X> -> FPU fpcr\n", get_fpcr())); } if (extra & 0x0800) { set_fpsr( next_ilong() ); fpu_debug(("FMOVEM #<%X> -> FPU fpsr\n", get_fpsr())); } if (extra & 0x0400) { FPU instruction_address = next_ilong(); fpu_debug(("FMOVEM #<%X> -> FPU instruction_address\n", FPU instruction_address)); } } } else if (extra & 0x2000) { /* FMOVEM FPP->memory */ uae_u32 ad; int incr = 0; if (get_fp_ad(opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } if ((opcode & 0x38) == 0x20) { if (extra & 0x1000) incr += 4; if (extra & 0x0800) incr += 4; if (extra & 0x0400) incr += 4; } ad -= incr; if (extra & 0x1000) { put_long (ad, get_fpcr()); fpu_debug(("FMOVEM FPU fpcr (%X) -> mem %X\n", get_fpcr(), ad )); ad += 4; } if (extra & 0x0800) { put_long (ad, get_fpsr()); fpu_debug(("FMOVEM FPU fpsr (%X) -> mem %X\n", get_fpsr(), ad )); ad += 4; } if (extra & 0x0400) { put_long (ad, FPU instruction_address); fpu_debug(("FMOVEM FPU instruction_address (%X) -> mem %X\n", FPU instruction_address, ad )); ad += 4; } ad -= incr; if ((opcode & 0x38) == 0x18) // post-increment? m68k_areg (regs, opcode & 7) = ad; if ((opcode & 0x38) == 0x20) // pre-decrement? m68k_areg (regs, opcode & 7) = ad; } else { /* FMOVEM memory->FPP */ uae_u32 ad; if (get_fp_ad(opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } // ad = (opcode & 0x38) == 0x20 ? ad - 12 : ad; int incr = 0; if((opcode & 0x38) == 0x20) { if (extra & 0x1000) incr += 4; if (extra & 0x0800) incr += 4; if (extra & 0x0400) incr += 4; ad = ad - incr; } if (extra & 0x1000) { set_fpcr( get_long (ad) ); fpu_debug(("FMOVEM mem %X (%X) -> FPU fpcr\n", ad, get_fpcr() )); ad += 4; } if (extra & 0x0800) { set_fpsr( get_long (ad) ); fpu_debug(("FMOVEM mem %X (%X) -> FPU fpsr\n", ad, get_fpsr() )); ad += 4; } if (extra & 0x0400) { FPU instruction_address = get_long (ad); fpu_debug(("FMOVEM mem %X (%X) -> FPU instruction_address\n", ad, FPU instruction_address )); ad += 4; } if ((opcode & 0x38) == 0x18) // post-increment? m68k_areg (regs, opcode & 7) = ad; if ((opcode & 0x38) == 0x20) // pre-decrement? // m68k_areg (regs, opcode & 7) = ad - 12; m68k_areg (regs, opcode & 7) = ad - incr; } dump_registers( "END "); return; case 6: case 7: { uae_u32 ad, list = 0; int incr = 0; if (extra & 0x2000) { /* FMOVEM FPP->memory */ fpu_debug(("FMOVEM FPP->memory\n")); if (get_fp_ad(opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } switch ((extra >> 11) & 3) { case 0: /* static pred */ list = extra & 0xff; incr = -1; break; case 1: /* dynamic pred */ list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; incr = -1; break; case 2: /* static postinc */ list = extra & 0xff; incr = 1; break; case 3: /* dynamic postinc */ list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; incr = 1; break; } if (incr < 0) { for(reg=7; reg>=0; reg--) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { extract_extended(FPU registers[reg],&wrd1, &wrd2, &wrd3); ad -= 4; put_long (ad, wrd3); ad -= 4; put_long (ad, wrd2); ad -= 4; put_long (ad, wrd1); } list <<= 1; } } else { for(reg=0; reg<8; reg++) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { extract_extended(FPU registers[reg],&wrd1, &wrd2, &wrd3); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); ad += 4; put_long (ad, wrd3); ad += 4; } list <<= 1; } } if ((opcode & 0x38) == 0x18) // post-increment? m68k_areg (regs, opcode & 7) = ad; if ((opcode & 0x38) == 0x20) // pre-decrement? m68k_areg (regs, opcode & 7) = ad; } else { /* FMOVEM memory->FPP */ fpu_debug(("FMOVEM memory->FPP\n")); if (get_fp_ad(opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } switch ((extra >> 11) & 3) { case 0: /* static pred */ fpu_debug(("memory->FMOVEM FPP not legal mode.\n")); list = extra & 0xff; incr = -1; break; case 1: /* dynamic pred */ fpu_debug(("memory->FMOVEM FPP not legal mode.\n")); list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; incr = -1; break; case 2: /* static postinc */ list = extra & 0xff; incr = 1; break; case 3: /* dynamic postinc */ list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; incr = 1; break; } /**/ if (incr < 0) { // not reached for(reg=7; reg>=0; reg--) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { ad -= 4; wrd3 = get_long (ad); ad -= 4; wrd2 = get_long (ad); ad -= 4; wrd1 = get_long (ad); // FPU registers[reg] = make_extended(wrd1, wrd2, wrd3); make_extended_no_normalize (wrd1, wrd2, wrd3, FPU registers[reg]); } list <<= 1; } } else { for(reg=0; reg<8; reg++) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); ad += 4; wrd3 = get_long (ad); ad += 4; // FPU registers[reg] = make_extended(wrd1, wrd2, wrd3); make_extended_no_normalize (wrd1, wrd2, wrd3, FPU registers[reg]); } list <<= 1; } } if ((opcode & 0x38) == 0x18) // post-increment? m68k_areg (regs, opcode & 7) = ad; if ((opcode & 0x38) == 0x20) // pre-decrement? m68k_areg (regs, opcode & 7) = ad; } dump_registers( "END "); return; } case 0: case 2: reg = (extra >> 7) & 7; if ((extra & 0xfc00) == 0x5c00) { fpu_debug(("FMOVECR memory->FPP\n")); switch (extra & 0x7f) { case 0x00: // FPU registers[reg] = 4.0 * atan(1.0); FPU registers[reg] = 3.1415926535897932384626433832795; fpu_debug(("FP const: Pi\n")); break; case 0x0b: // FPU registers[reg] = log10 (2.0); FPU registers[reg] = 0.30102999566398119521373889472449; fpu_debug(("FP const: Log 10 (2)\n")); break; case 0x0c: // FPU registers[reg] = exp (1.0); FPU registers[reg] = 2.7182818284590452353602874713527; fpu_debug(("FP const: e\n")); break; case 0x0d: // FPU registers[reg] = log (exp (1.0)) / log (2.0); FPU registers[reg] = 1.4426950408889634073599246810019; fpu_debug(("FP const: Log 2 (e)\n")); break; case 0x0e: // FPU registers[reg] = log (exp (1.0)) / log (10.0); FPU registers[reg] = 0.43429448190325182765112891891661; fpu_debug(("FP const: Log 10 (e)\n")); break; case 0x0f: FPU registers[reg] = 0.0; fpu_debug(("FP const: zero\n")); break; case 0x30: // FPU registers[reg] = log (2.0); FPU registers[reg] = 0.69314718055994530941723212145818; fpu_debug(("FP const: ln(2)\n")); break; case 0x31: // FPU registers[reg] = log (10.0); FPU registers[reg] = 2.3025850929940456840179914546844; fpu_debug(("FP const: ln(10)\n")); break; case 0x32: // ?? FPU registers[reg] = 1.0e0; fpu_debug(("FP const: 1.0e0\n")); break; case 0x33: FPU registers[reg] = 1.0e1; fpu_debug(("FP const: 1.0e1\n")); break; case 0x34: FPU registers[reg] = 1.0e2; fpu_debug(("FP const: 1.0e2\n")); break; case 0x35: FPU registers[reg] = 1.0e4; fpu_debug(("FP const: 1.0e4\n")); break; case 0x36: FPU registers[reg] = 1.0e8; fpu_debug(("FP const: 1.0e8\n")); break; case 0x37: FPU registers[reg] = 1.0e16; fpu_debug(("FP const: 1.0e16\n")); break; case 0x38: FPU registers[reg] = 1.0e32; fpu_debug(("FP const: 1.0e32\n")); break; case 0x39: FPU registers[reg] = 1.0e64; fpu_debug(("FP const: 1.0e64\n")); break; case 0x3a: FPU registers[reg] = 1.0e128; fpu_debug(("FP const: 1.0e128\n")); break; case 0x3b: FPU registers[reg] = 1.0e256; fpu_debug(("FP const: 1.0e256\n")); break; // Valid for 64 bits only (see fpu.cpp) #if 0 case 0x3c: FPU registers[reg] = 1.0e512; fpu_debug(("FP const: 1.0e512\n")); break; case 0x3d: FPU registers[reg] = 1.0e1024; fpu_debug(("FP const: 1.0e1024\n")); break; case 0x3e: FPU registers[reg] = 1.0e2048; fpu_debug(("FP const: 1.0e2048\n")); break; case 0x3f: FPU registers[reg] = 1.0e4096; fpu_debug(("FP const: 1.0e4096\n")); break; #endif default: m68k_setpc (m68k_getpc () - 4); op_illg (opcode); break; } // these *do* affect the status reg make_fpsr(FPU registers[reg]); dump_registers( "END "); return; } if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } fpu_debug(("returned from get_fp_value m68k_getpc()=%X\n",m68k_getpc())); #if 0 // MJ added, not tested now if (FPU is_integral) { // 68040-specific operations switch (extra & 0x7f) { case 0x40: /* FSMOVE */ fpu_debug(("FSMOVE %.04f\n",(double)src)); FPU registers[reg] = (float)src; make_fpsr(FPU registers[reg]); break; case 0x44: /* FDMOVE */ fpu_debug(("FDMOVE %.04f\n",(double)src)); FPU registers[reg] = (double)src; make_fpsr(FPU registers[reg]); break; case 0x41: /* FSSQRT */ fpu_debug(("FSQRT %.04f\n",(double)src)); FPU registers[reg] = (float)sqrt (src); make_fpsr(FPU registers[reg]); break; case 0x45: /* FDSQRT */ fpu_debug(("FSQRT %.04f\n",(double)src)); FPU registers[reg] = (double)sqrt (src); make_fpsr(FPU registers[reg]); break; case 0x58: /* FSABS */ fpu_debug(("FSABS %.04f\n",(double)src)); FPU registers[reg] = (float)fabs(src); make_fpsr(FPU registers[reg]); break; case 0x5c: /* FDABS */ fpu_debug(("FDABS %.04f\n",(double)src)); FPU registers[reg] = (double)fabs(src); make_fpsr(FPU registers[reg]); break; case 0x5a: /* FSNEG */ fpu_debug(("FSNEG %.04f\n",(double)src)); FPU registers[reg] = (float)-src; make_fpsr(FPU registers[reg]); break; case 0x5e: /* FDNEG */ fpu_debug(("FDNEG %.04f\n",(double)src)); FPU registers[reg] = (double)-src; make_fpsr(FPU registers[reg]); break; case 0x60: /* FSDIV */ fpu_debug(("FSDIV %.04f\n",(double)src)); FPU registers[reg] = (float)(FPU registers[reg] / src); make_fpsr(FPU registers[reg]); break; case 0x64: /* FDDIV */ fpu_debug(("FDDIV %.04f\n",(double)src)); FPU registers[reg] = (double)(FPU registers[reg] / src); make_fpsr(FPU registers[reg]); break; case 0x62: /* FSADD */ fpu_debug(("FSADD %.04f\n",(double)src)); FPU registers[reg] = (float)(FPU registers[reg] + src); make_fpsr(FPU registers[reg]); break; case 0x66: /* FDADD */ fpu_debug(("FDADD %.04f\n",(double)src)); FPU registers[reg] = (double)(FPU registers[reg] + src); make_fpsr(FPU registers[reg]); break; case 0x68: /* FSSUB */ fpu_debug(("FSSUB %.04f\n",(double)src)); FPU registers[reg] = (float)(FPU registers[reg] - src); make_fpsr(FPU registers[reg]); break; case 0x6c: /* FDSUB */ fpu_debug(("FDSUB %.04f\n",(double)src)); FPU registers[reg] = (double)(FPU registers[reg] - src); make_fpsr(FPU registers[reg]); break; case 0x63: /* FSMUL */ case 0x67: /* FDMUL */ get_dest_flags(FPU registers[reg]); get_source_flags(src); if(fl_dest.in_range && fl_source.in_range) { if ((extra & 0x7f) == 0x63) FPU registers[reg] = (float)(FPU registers[reg] * src); else FPU registers[reg] = (double)(FPU registers[reg] * src); } else if (fl_dest.nan || fl_source.nan || fl_dest.zero && fl_source.infinity || fl_dest.infinity && fl_source.zero ) { make_nan( FPU registers[reg], fl_dest.negative ); } else if (fl_dest.zero || fl_source.zero ) { make_zero(FPU registers[reg], fl_dest.negative != fl_source.negative); } else { make_inf(FPU registers[reg], fl_dest.negative != fl_source.negative); } make_fpsr(FPU registers[reg]); break; default: // Continue decode-execute 6888x instructions below goto process_6888x_instructions; } fpu_debug(("END m68k_getpc()=%X\n",m68k_getpc())); dump_registers( "END "); return; } process_6888x_instructions: #endif switch (extra & 0x7f) { case 0x00: /* FMOVE */ fpu_debug(("FMOVE %.04f\n",(double)src)); FPU registers[reg] = src; // -> reg DOES affect the status reg make_fpsr(FPU registers[reg]); break; case 0x01: /* FINT */ fpu_debug(("FINT %.04f\n",(double)src)); // FPU registers[reg] = (int) (src + 0.5); // FIXME: use native rounding mode flags switch (get_fpcr() & FPCR_ROUNDING_MODE) { case FPCR_ROUND_ZERO: FPU registers[reg] = round_to_zero(src); break; case FPCR_ROUND_MINF: FPU registers[reg] = floor(src); break; case FPCR_ROUND_NEAR: FPU registers[reg] = round_to_nearest(src); break; case FPCR_ROUND_PINF: FPU registers[reg] = ceil(src); break; } make_fpsr(FPU registers[reg]); break; case 0x02: /* FSINH */ fpu_debug(("FSINH %.04f\n",(double)src)); FPU registers[reg] = sinh (src); make_fpsr(FPU registers[reg]); break; case 0x03: /* FINTRZ */ fpu_debug(("FINTRZ %.04f\n",(double)src)); // FPU registers[reg] = (int) src; FPU registers[reg] = round_to_zero(src); make_fpsr(FPU registers[reg]); break; case 0x04: /* FSQRT */ fpu_debug(("FSQRT %.04f\n",(double)src)); FPU registers[reg] = sqrt (src); make_fpsr(FPU registers[reg]); break; case 0x06: /* FLOGNP1 */ fpu_debug(("FLOGNP1 %.04f\n",(double)src)); FPU registers[reg] = log (src + 1.0); make_fpsr(FPU registers[reg]); break; case 0x08: /* FETOXM1 */ fpu_debug(("FETOXM1 %.04f\n",(double)src)); FPU registers[reg] = exp (src) - 1.0; make_fpsr(FPU registers[reg]); break; case 0x09: /* FTANH */ fpu_debug(("FTANH %.04f\n",(double)src)); FPU registers[reg] = tanh (src); make_fpsr(FPU registers[reg]); break; case 0x0a: /* FATAN */ fpu_debug(("FATAN %.04f\n",(double)src)); FPU registers[reg] = atan (src); make_fpsr(FPU registers[reg]); break; case 0x0c: /* FASIN */ fpu_debug(("FASIN %.04f\n",(double)src)); FPU registers[reg] = asin (src); make_fpsr(FPU registers[reg]); break; case 0x0d: /* FATANH */ fpu_debug(("FATANH %.04f\n",(double)src)); #if HAVE_ATANH FPU registers[reg] = atanh (src); #else /* The BeBox doesn't have atanh, and it isn't in the HPUX libm either */ FPU registers[reg] = log ((1 + src) / (1 - src)) / 2; #endif make_fpsr(FPU registers[reg]); break; case 0x0e: /* FSIN */ fpu_debug(("FSIN %.04f\n",(double)src)); FPU registers[reg] = sin (src); make_fpsr(FPU registers[reg]); break; case 0x0f: /* FTAN */ fpu_debug(("FTAN %.04f\n",(double)src)); FPU registers[reg] = tan (src); make_fpsr(FPU registers[reg]); break; case 0x10: /* FETOX */ fpu_debug(("FETOX %.04f\n",(double)src)); FPU registers[reg] = exp (src); make_fpsr(FPU registers[reg]); break; case 0x11: /* FTWOTOX */ fpu_debug(("FTWOTOX %.04f\n",(double)src)); FPU registers[reg] = pow(2.0, src); make_fpsr(FPU registers[reg]); break; case 0x12: /* FTENTOX */ fpu_debug(("FTENTOX %.04f\n",(double)src)); FPU registers[reg] = pow(10.0, src); make_fpsr(FPU registers[reg]); break; case 0x14: /* FLOGN */ fpu_debug(("FLOGN %.04f\n",(double)src)); FPU registers[reg] = log (src); make_fpsr(FPU registers[reg]); break; case 0x15: /* FLOG10 */ fpu_debug(("FLOG10 %.04f\n",(double)src)); FPU registers[reg] = log10 (src); make_fpsr(FPU registers[reg]); break; case 0x16: /* FLOG2 */ fpu_debug(("FLOG2 %.04f\n",(double)src)); FPU registers[reg] = log (src) / log (2.0); make_fpsr(FPU registers[reg]); break; case 0x18: /* FABS */ case 0x58: /* single precision rounding */ case 0x5C: /* double precision rounding */ fpu_debug(("FABS %.04f\n",(double)src)); FPU registers[reg] = src < 0 ? -src : src; make_fpsr(FPU registers[reg]); break; case 0x19: /* FCOSH */ fpu_debug(("FCOSH %.04f\n",(double)src)); FPU registers[reg] = cosh(src); make_fpsr(FPU registers[reg]); break; case 0x1a: /* FNEG */ fpu_debug(("FNEG %.04f\n",(double)src)); if (iszero(src)) make_zero(FPU registers[reg], !isneg(src)); else FPU registers[reg] = -src; make_fpsr(FPU registers[reg]); break; case 0x1c: /* FACOS */ fpu_debug(("FACOS %.04f\n",(double)src)); FPU registers[reg] = acos(src); make_fpsr(FPU registers[reg]); break; case 0x1d: /* FCOS */ fpu_debug(("FCOS %.04f\n",(double)src)); FPU registers[reg] = cos(src); make_fpsr(FPU registers[reg]); break; case 0x1e: /* FGETEXP */ fpu_debug(("FGETEXP %.04f\n",(double)src)); #if FPU_HAVE_IEEE_DOUBLE if( isinf(src) ) { make_nan( FPU registers[reg], isneg(src) ); } else { FPU registers[reg] = fast_fgetexp( src ); } #else if(src == 0) { FPU registers[reg] = (fpu_register)0; } else { int expon; frexp (src, &expon); FPU registers[reg] = (fpu_register) (expon - 1); } #endif make_fpsr(FPU registers[reg]); break; case 0x1f: /* FGETMAN */ fpu_debug(("FGETMAN %.04f\n",(double)src)); #if FPU_HAVE_IEEE_DOUBLE if( src == 0 ) { FPU registers[reg] = 0; } else if( isinf(src) ) { make_nan( FPU registers[reg], isneg(src) ); } else { FPU registers[reg] = src; fast_remove_exponent( FPU registers[reg] ); } #else { int expon; FPU registers[reg] = frexp (src, &expon) * 2.0; } #endif make_fpsr(FPU registers[reg]); break; case 0x20: /* FDIV */ fpu_debug(("FDIV %.04f\n",(double)src)); FPU registers[reg] /= src; make_fpsr(FPU registers[reg]); break; case 0x21: /* FMOD */ fpu_debug(("FMOD %.04f\n",(double)src)); // FPU registers[reg] = FPU registers[reg] - (fpu_register) ((int) (FPU registers[reg] / src)) * src; { fpu_register quot = round_to_zero(FPU registers[reg] / src); #if FPU_HAVE_IEEE_DOUBLE uae_u32 sign = get_quotient_sign(FPU registers[reg],src); #endif FPU registers[reg] = FPU registers[reg] - quot * src; make_fpsr(FPU registers[reg]); #if FPU_HAVE_IEEE_DOUBLE make_quotient(quot, sign); #endif } break; case 0x22: /* FADD */ case 0x62: /* single */ case 0x66: /* double */ fpu_debug(("FADD %.04f\n",(double)src)); FPU registers[reg] += src; make_fpsr(FPU registers[reg]); break; case 0x23: /* FMUL */ fpu_debug(("FMUL %.04f\n",(double)src)); #if FPU_HAVE_IEEE_DOUBLE get_dest_flags(FPU registers[reg]); get_source_flags(src); if(fl_dest.in_range && fl_source.in_range) { FPU registers[reg] *= src; } else if (fl_dest.nan || fl_source.nan || (fl_dest.zero && fl_source.infinity) || (fl_dest.infinity && fl_source.zero) ) { make_nan( FPU registers[reg], fl_dest.negative ); } else if (fl_dest.zero || fl_source.zero ) { make_zero(FPU registers[reg], fl_dest.negative != fl_source.negative); } else { make_inf(FPU registers[reg], fl_dest.negative != fl_source.negative); } #else fpu_debug(("FMUL %.04f\n",(double)src)); FPU registers[reg] *= src; #endif make_fpsr(FPU registers[reg]); break; case 0x24: /* FSGLDIV */ fpu_debug(("FSGLDIV %.04f\n",(double)src)); // TODO: round to float. FPU registers[reg] /= src; make_fpsr(FPU registers[reg]); break; case 0x25: /* FREM */ fpu_debug(("FREM %.04f\n",(double)src)); // FPU registers[reg] = FPU registers[reg] - (double) ((int) (FPU registers[reg] / src + 0.5)) * src; { fpu_register quot = round_to_nearest(FPU registers[reg] / src); #if FPU_HAVE_IEEE_DOUBLE uae_u32 sign = get_quotient_sign(FPU registers[reg],src); #endif FPU registers[reg] = FPU registers[reg] - quot * src; make_fpsr(FPU registers[reg]); #if FPU_HAVE_IEEE_DOUBLE make_quotient(quot,sign); #endif } break; case 0x26: /* FSCALE */ fpu_debug(("FSCALE %.04f\n",(double)src)); // TODO: // Overflow, underflow #if FPU_HAVE_IEEE_DOUBLE if( isinf(src) ) { make_nan( FPU registers[reg], isneg(src) ); } else { // When the absolute value of the source operand is >= 2^14, // an overflow or underflow always results. // Here (int) cast is okay. fast_scale( FPU registers[reg], (int)round_to_zero(src) ); } #else if (src != 0) { // Manual says: src==0 -> FPn FPU registers[reg] *= exp (log (2.0) * src); } #endif make_fpsr(FPU registers[reg]); break; case 0x27: /* FSGLMUL */ fpu_debug(("FSGLMUL %.04f\n",(double)src)); FPU registers[reg] *= src; make_fpsr(FPU registers[reg]); break; case 0x28: /* FSUB */ fpu_debug(("FSUB %.04f\n",(double)src)); FPU registers[reg] -= src; make_fpsr(FPU registers[reg]); break; case 0x30: /* FSINCOS */ case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: fpu_debug(("FSINCOS %.04f\n",(double)src)); // Cosine must be calculated first if same register FPU registers[extra & 7] = cos(src); FPU registers[reg] = sin (src); // Set FPU fpsr according to the sine result make_fpsr(FPU registers[reg]); break; case 0x38: /* FCMP */ fpu_debug(("FCMP %.04f\n",(double)src)); // The infinity bit is always cleared by the FCMP // instruction since it is not used by any of the // conditional predicate equations. #if FPU_HAVE_IEEE_DOUBLE if( isinf(src) ) { if( isneg(src) ) { // negative infinity if( isinf(FPU registers[reg]) && isneg(FPU registers[reg]) ) { // Zero, Negative FPU fpsr.condition_codes = NATIVE_FFLAG_ZERO | NATIVE_FFLAG_NEGATIVE; fpu_debug(("-INF cmp -INF -> NZ\n")); } else { // None FPU fpsr.condition_codes = 0; fpu_debug(("x cmp -INF -> None\n")); } } else { // positive infinity if( isinf(FPU registers[reg]) && !isneg(FPU registers[reg]) ) { // Zero FPU fpsr.condition_codes = NATIVE_FFLAG_ZERO; fpu_debug(("+INF cmp +INF -> Z\n")); } else { // Negative FPU fpsr.condition_codes = NATIVE_FFLAG_NEGATIVE; fpu_debug(("X cmp +INF -> N\n")); } } } else { fpu_register tmp = FPU registers[reg] - src; FPU fpsr.condition_codes = (iszero(tmp) ? NATIVE_FFLAG_ZERO : 0) | (isneg(tmp) ? NATIVE_FFLAG_NEGATIVE : 0) ; } #else { fpu_register tmp = FPU registers[reg] - src; make_fpsr(tmp); } #endif break; case 0x3a: /* FTST */ fpu_debug(("FTST %.04f\n",(double)src)); // make_fpsr(FPU registers[reg]); make_fpsr(src); break; default: fpu_debug(("ILLEGAL F OP %X\n",opcode)); m68k_setpc (m68k_getpc () - 4); op_illg (opcode); break; } fpu_debug(("END m68k_getpc()=%X\n",m68k_getpc())); dump_registers( "END "); return; } fpu_debug(("ILLEGAL F OP 2 %X\n",opcode)); m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); } void fpu_set_fpsr(uae_u32 new_fpsr) { set_fpsr(new_fpsr); } uae_u32 fpu_get_fpsr(void) { return get_fpsr(); } void fpu_set_fpcr(uae_u32 new_fpcr) { set_fpcr(new_fpcr); } uae_u32 fpu_get_fpcr(void) { return get_fpcr(); } /* -------------------------- Initialization -------------------------- */ void FFPU fpu_init (bool integral_68040) { fpu_debug(("fpu_init\n")); static bool initialized_lookup_tables = false; if (!initialized_lookup_tables) { fpu_init_native_fflags(); fpu_init_native_exceptions(); fpu_init_native_accrued_exceptions(); initialized_lookup_tables = true; } FPU is_integral = integral_68040; set_fpcr(0); set_fpsr(0); FPU instruction_address = 0; } void FFPU fpu_exit (void) { fpu_debug(("fpu_exit\n")); } void FFPU fpu_reset (void) { fpu_debug(("fpu_reset\n")); fpu_exit(); fpu_init(FPU is_integral); } aranym-1.1.0/src/uae_cpu/fpu/fpu_mpfr.cpp0000664000175000017500000013736613454637622016546 0ustar joyjoy/* * fpu_mpfr.cpp - emulate 68881/68040 fpu with mpfr * * Copyright (c) 2012, 2013 Andreas Schwab * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include #include "memory-uae.h" #include "readcpu.h" #include "newcpu.h" #include "main.h" #define FPU_IMPLEMENTATION #include "fpu/fpu.h" #include "fpu/flags.h" #include "fpu/exceptions.h" #include "fpu/rounding.h" #include "fpu/impl.h" #define SINGLE_PREC 24 #define SINGLE_MIN_EXP -126 #define SINGLE_MAX_EXP 127 #define SINGLE_BIAS 127 #define DOUBLE_PREC 53 #define DOUBLE_MIN_EXP -1022 #define DOUBLE_MAX_EXP 1023 #define DOUBLE_BIAS 1023 #define EXTENDED_PREC 64 #define EXTENDED_MIN_EXP -16383 #define EXTENDED_MAX_EXP 16383 #define EXTENDED_BIAS 16383 fpu_t fpu; // The constant ROM // Constants 48 to 63 are mapped to index 16 to 31 const int num_fpu_constants = 32; static mpfr_t fpu_constant_rom[num_fpu_constants]; #define FPU_CONSTANT_ONE fpu_constant_rom[18] // Exceptions generated during execution in addition to the ones // maintained by mpfr static uae_u32 cur_exceptions; static uaecptr cur_instruction_address; static void set_format (int prec) { // MPFR represents numbers as 0.m*2^e switch (prec) { case SINGLE_PREC: mpfr_set_emin (SINGLE_MIN_EXP + 1 - (SINGLE_PREC - 1)); mpfr_set_emax (SINGLE_MAX_EXP + 1); break; case DOUBLE_PREC: mpfr_set_emin (DOUBLE_MIN_EXP + 1 - (DOUBLE_PREC - 1)); mpfr_set_emax (DOUBLE_MAX_EXP + 1); break; case EXTENDED_PREC: mpfr_set_emin (EXTENDED_MIN_EXP + 1 - (EXTENDED_PREC - 1)); mpfr_set_emax (EXTENDED_MAX_EXP + 1); break; } } static mpfr_rnd_t get_cur_rnd () { switch (get_rounding_mode ()) { default: case FPCR_ROUND_NEAR: return MPFR_RNDN; case FPCR_ROUND_ZERO: return MPFR_RNDZ; case FPCR_ROUND_MINF: return MPFR_RNDD; case FPCR_ROUND_PINF: return MPFR_RNDU; } } static mpfr_prec_t get_cur_prec () { switch (get_rounding_precision ()) { default: case FPCR_PRECISION_EXTENDED: return EXTENDED_PREC; case FPCR_PRECISION_SINGLE: return SINGLE_PREC; case FPCR_PRECISION_DOUBLE: return DOUBLE_PREC; } } #define DEFAULT_NAN_BITS 0xffffffffffffffffULL static void set_nan (fpu_register ®, uae_u64 nan_bits, int nan_sign) { mpfr_set_nan (reg.f); reg.nan_bits = nan_bits; reg.nan_sign = nan_sign; } static void set_nan (fpu_register ®) { set_nan (reg, DEFAULT_NAN_BITS, 0); } static bool fpu_inited; void fpu_init (bool integral_68040) { fpu.is_integral = integral_68040; mpfr_set_default_prec (EXTENDED_PREC); mpfr_set_default_rounding_mode (MPFR_RNDN); set_format (EXTENDED_PREC); for (int i = 0; i < 8; i++) mpfr_init (fpu.registers[i].f); mpfr_init (fpu.result.f); // Initialize constant ROM for (int i = 0; i < num_fpu_constants; i++) mpfr_init (fpu_constant_rom[i]); // 0: pi mpfr_const_pi (fpu_constant_rom[0], MPFR_RNDN); // 11: log10 (2) mpfr_set_ui (fpu_constant_rom[11], 2, MPFR_RNDN); mpfr_log10 (fpu_constant_rom[11], fpu_constant_rom[11], MPFR_RNDZ); // 12: e mpfr_set_ui (fpu_constant_rom[12], 1, MPFR_RNDN); mpfr_exp (fpu_constant_rom[12], fpu_constant_rom[12], MPFR_RNDZ); // 13: log2 (e) mpfr_log2 (fpu_constant_rom[13], fpu_constant_rom[12], MPFR_RNDU); // 14: log10 (e) mpfr_log10 (fpu_constant_rom[14], fpu_constant_rom[12], MPFR_RNDU); // 15: 0 mpfr_set_zero (fpu_constant_rom[15], 0); // 48: ln (2) mpfr_const_log2 (fpu_constant_rom[16], MPFR_RNDN); // 49: ln (10) mpfr_set_ui (fpu_constant_rom[17], 10, MPFR_RNDN); mpfr_log (fpu_constant_rom[17], fpu_constant_rom[17], MPFR_RNDN); // 50 to 63: powers of 10 mpfr_set_ui (fpu_constant_rom[18], 1, MPFR_RNDN); for (int i = 19; i < 32; i++) { mpfr_set_ui (fpu_constant_rom[i], 1L << (i - 19) , MPFR_RNDN); mpfr_exp10 (fpu_constant_rom[i], fpu_constant_rom[i], MPFR_RNDN); } fpu_inited = true; fpu_reset (); } void fpu_exit () { if (!fpu_inited) return; for (int i = 0; i < 8; i++) mpfr_clear (fpu.registers[i].f); mpfr_clear (fpu.result.f); for (int i = 0; i < num_fpu_constants; i++) mpfr_clear (fpu_constant_rom[i]); } void fpu_reset () { set_fpcr (0); set_fpsr (0); fpu.instruction_address = 0; for (int i = 0; i < 8; i++) set_nan (fpu.registers[i]); } fpu_register::operator long double () { return mpfr_get_ld (f, MPFR_RNDN); } fpu_register & fpu_register::operator= (long double x) { mpfr_set_ld (f, x, MPFR_RNDN); nan_bits = DEFAULT_NAN_BITS; nan_sign = 0; return *this; } static bool get_fp_addr (uae_u32 opcode, uae_u32 *addr, bool write) { uaecptr pc; int mode; int reg; mode = (opcode >> 3) & 7; reg = opcode & 7; switch (mode) { case 0: case 1: return false; case 2: *addr = m68k_areg (regs, reg); break; case 3: *addr = m68k_areg (regs, reg); break; case 4: *addr = m68k_areg (regs, reg); break; case 5: *addr = m68k_areg (regs, reg) + (uae_s16) next_iword(); break; case 6: *addr = get_disp_ea_020 (m68k_areg (regs, reg), next_iword()); break; case 7: switch (reg) { case 0: *addr = (uae_s16) next_iword(); break; case 1: *addr = next_ilong(); break; case 2: if (write) return false; pc = m68k_getpc (); *addr = pc + (uae_s16) next_iword(); break; case 3: if (write) return false; pc = m68k_getpc (); *addr = get_disp_ea_020 (pc, next_iword()); break; default: return false; } } return true; } static void set_from_single (fpu_register &value, uae_u32 data) { int s = data >> 31; int e = (data >> 23) & 0xff; uae_u32 m = data & 0x7fffff; if (e == 0xff) { if (m != 0) { if (!(m & 0x400000)) cur_exceptions |= FPSR_EXCEPTION_SNAN; set_nan (value, (uae_u64) (m | 0xc00000) << (32 + 8), s); } else mpfr_set_inf (value.f, 0); } else { if (e != 0) // Add integer bit m |= 0x800000; else e++; // Remove bias e -= SINGLE_BIAS; mpfr_set_ui_2exp (value.f, m, e - (SINGLE_PREC - 1), MPFR_RNDN); } mpfr_setsign (value.f, value.f, s, MPFR_RNDN); } static void set_from_double (fpu_register &value, uae_u32 words[2]) { int s = words[0] >> 31; int e = (words[0] >> 20) & 0x7ff; uae_u32 m = words[0] & 0xfffff; if (e == 0x7ff) { if ((m | words[1]) != 0) { if (!(m & 0x80000)) cur_exceptions |= FPSR_EXCEPTION_SNAN; set_nan (value, (((uae_u64) (m | 0x180000) << (32 + 11)) | ((uae_u64) words[1] << 11)), s); } else mpfr_set_inf (value.f, 0); } else { if (e != 0) // Add integer bit m |= 0x100000; else e++; // Remove bias e -= DOUBLE_BIAS; mpfr_set_uj_2exp (value.f, ((uintmax_t) m << 32) | words[1], e - (DOUBLE_PREC - 1), MPFR_RNDN); } mpfr_setsign (value.f, value.f, s, MPFR_RNDN); } static void set_from_extended (fpu_register &value, uae_u32 words[3], bool check_snan) { int s = words[0] >> 31; int e = (words[0] >> 16) & 0x7fff; if (e == 0x7fff) { if (((words[1] & 0x7fffffff) | words[2]) != 0) { if (check_snan) { if ((words[1] & 0x40000000) == 0) cur_exceptions |= FPSR_EXCEPTION_SNAN; words[1] |= 0x40000000; } set_nan (value, ((uae_u64) words[1] << 32) | words[2], s); } else mpfr_set_inf (value.f, 0); } else { // Remove bias e -= EXTENDED_BIAS; mpfr_set_uj_2exp (value.f, ((uintmax_t) words[1] << 32) | words[2], e - (EXTENDED_PREC - 1), MPFR_RNDN); } mpfr_setsign (value.f, value.f, s, MPFR_RNDN); } #define from_bcd(d) ((d) < 10 ? (d) : (d) - 10) static void set_from_packed (fpu_register &value, uae_u32 words[3]) { char str[32], *p = str; int sm = words[0] >> 31; int se = (words[0] >> 30) & 1; int i; if (((words[0] >> 16) & 0x7fff) == 0x7fff) { if ((words[1] | words[2]) != 0) { if ((words[1] & 0x40000000) == 0) cur_exceptions |= FPSR_EXCEPTION_SNAN; set_nan (value, ((uae_u64) (words[1] | 0x40000000) << 32) | words[2], sm); } else mpfr_set_inf (value.f, 0); } else { if (sm) *p++ = '-'; *p++ = from_bcd (words[0] & 15) + '0'; *p++ = '.'; for (i = 0; i < 8; i++) { p[i] = from_bcd ((words[1] >> (28 - i * 4)) & 15) + '0'; p[i + 8] = from_bcd ((words[2] >> (28 - i * 4)) & 15) + '0'; } p += 16; *p++ = 'e'; if (se) *p++ = '-'; *p++ = from_bcd ((words[0] >> 24) & 15) + '0'; *p++ = from_bcd ((words[0] >> 20) & 15) + '0'; *p++ = from_bcd ((words[0] >> 16) & 15) + '0'; *p = 0; mpfr_set_str (value.f, str, 10, MPFR_RNDN); } mpfr_setsign (value.f, value.f, sm, MPFR_RNDN); } static bool get_fp_value (uae_u32 opcode, uae_u32 extra, fpu_register &value) { int mode, reg, size; uaecptr pc; uae_u32 addr; uae_u32 words[3]; static const int sz1[8] = {4, 4, 12, 12, 2, 8, 1, 0}; static const int sz2[8] = {4, 4, 12, 12, 2, 8, 2, 0}; if ((extra & 0x4000) == 0) { mpfr_set (value.f, fpu.registers[(extra >> 10) & 7].f, MPFR_RNDN); value.nan_bits = fpu.registers[(extra >> 10) & 7].nan_bits; value.nan_sign = fpu.registers[(extra >> 10) & 7].nan_sign; /* Check for SNaN. */ if (mpfr_nan_p (value.f) && (value.nan_bits & (1ULL << 62)) == 0) { value.nan_bits |= 1ULL << 62; cur_exceptions |= FPSR_EXCEPTION_SNAN; } return true; } mode = (opcode >> 3) & 7; reg = opcode & 7; size = (extra >> 10) & 7; switch (mode) { case 0: switch (size) { case 6: mpfr_set_si (value.f, (uae_s8) m68k_dreg (regs, reg), MPFR_RNDN); break; case 4: mpfr_set_si (value.f, (uae_s16) m68k_dreg (regs, reg), MPFR_RNDN); break; case 0: mpfr_set_si (value.f, (uae_s32) m68k_dreg (regs, reg), MPFR_RNDN); break; case 1: set_from_single (value, m68k_dreg (regs, reg)); break; default: return false; } return true; case 1: return false; case 2: case 3: addr = m68k_areg (regs, reg); break; case 4: addr = m68k_areg (regs, reg) - (reg == 7 ? sz2[size] : sz1[size]); break; case 5: addr = m68k_areg (regs, reg) + (uae_s16) next_iword (); break; case 6: addr = get_disp_ea_020 (m68k_areg (regs, reg), next_iword ()); break; case 7: switch (reg) { case 0: addr = (uae_s16) next_iword (); break; case 1: addr = next_ilong (); break; case 2: pc = m68k_getpc (); addr = pc + (uae_s16) next_iword (); break; case 3: pc = m68k_getpc (); addr = get_disp_ea_020 (pc, next_iword ()); break; case 4: addr = m68k_getpc (); m68k_incpc (sz2[size]); if (size == 6) // Immediate byte addr++; break; default: return false; } } switch (size) { case 0: mpfr_set_si (value.f, (uae_s32) get_long (addr), MPFR_RNDN); break; case 1: set_from_single (value, get_long (addr)); break; case 2: words[0] = get_long (addr); words[1] = get_long (addr + 4); words[2] = get_long (addr + 8); set_from_extended (value, words, true); break; case 3: words[0] = get_long (addr); words[1] = get_long (addr + 4); words[2] = get_long (addr + 8); set_from_packed (value, words); break; case 4: mpfr_set_si (value.f, (uae_s16) get_word (addr), MPFR_RNDN); break; case 5: words[0] = get_long (addr); words[1] = get_long (addr + 4); set_from_double (value, words); break; case 6: mpfr_set_si (value.f, (uae_s8) get_byte (addr), MPFR_RNDN); break; default: return false; } switch (mode) { case 3: m68k_areg (regs, reg) += reg == 7 ? sz2[size] : sz1[size]; break; case 4: m68k_areg (regs, reg) -= reg == 7 ? sz2[size] : sz1[size]; break; } return true; } static void update_exceptions () { uae_u32 exc, aexc; exc = cur_exceptions; // Add any mpfr detected exceptions if (mpfr_underflow_p ()) exc |= FPSR_EXCEPTION_UNFL; if (mpfr_overflow_p ()) exc |= FPSR_EXCEPTION_OVFL; if (mpfr_inexflag_p ()) exc |= FPSR_EXCEPTION_INEX2; set_exception_status (exc); aexc = get_accrued_exception (); if (exc & (FPSR_EXCEPTION_SNAN|FPSR_EXCEPTION_OPERR)) aexc |= FPSR_ACCR_IOP; if (exc & FPSR_EXCEPTION_OVFL) aexc |= FPSR_ACCR_OVFL; if ((exc & (FPSR_EXCEPTION_UNFL|FPSR_EXCEPTION_INEX2)) == (FPSR_EXCEPTION_UNFL|FPSR_EXCEPTION_INEX2)) aexc |= FPSR_ACCR_UNFL; if (exc & FPSR_EXCEPTION_DZ) aexc |= FPSR_ACCR_DZ; if (exc & (FPSR_EXCEPTION_INEX1|FPSR_EXCEPTION_INEX2|FPSR_EXCEPTION_OVFL)) aexc |= FPSR_ACCR_INEX; set_accrued_exception (aexc); if ((fpu.fpcr & exc) != 0) { fpu.instruction_address = cur_instruction_address; // TODO: raise exceptions // Problem: FPSP040 depends on proper FPU stack frames, it would suffer // undefined behaviour with our dummy FSAVE implementation } } static void set_fp_register (int reg, mpfr_t value, uae_u64 nan_bits, int nan_sign, int t, mpfr_rnd_t rnd, bool do_flags) { mpfr_subnormalize (value, t, rnd); mpfr_set (fpu.registers[reg].f, value, rnd); fpu.registers[reg].nan_bits = nan_bits; fpu.registers[reg].nan_sign = nan_sign; if (do_flags) { uae_u32 flags = 0; if (mpfr_zero_p (fpu.registers[reg].f)) flags |= FPSR_CCB_ZERO; if (mpfr_signbit (fpu.registers[reg].f)) flags |= FPSR_CCB_NEGATIVE; if (mpfr_nan_p (fpu.registers[reg].f)) flags |= FPSR_CCB_NAN; if (mpfr_inf_p (fpu.registers[reg].f)) flags |= FPSR_CCB_INFINITY; set_fpccr (flags); } } static void set_fp_register (int reg, mpfr_t value, int t, mpfr_rnd_t rnd, bool do_flags) { set_fp_register (reg, value, DEFAULT_NAN_BITS, 0, t, rnd, do_flags); } static void set_fp_register (int reg, fpu_register &value, int t, mpfr_rnd_t rnd, bool do_flags) { set_fp_register (reg, value.f, value.nan_bits, value.nan_sign, t, rnd, do_flags); } static uae_u32 extract_to_single (fpu_register &value) { uae_u32 word; int t; mpfr_rnd_t rnd = get_cur_rnd (); MPFR_DECL_INIT (single, SINGLE_PREC); set_format (SINGLE_PREC); // Round to single t = mpfr_set (single, value.f, rnd); t = mpfr_check_range (single, t, rnd); mpfr_subnormalize (single, t, rnd); set_format (EXTENDED_PREC); if (mpfr_inf_p (single)) word = 0x7f800000; else if (mpfr_nan_p (single)) { if ((value.nan_bits & (1ULL << 62)) == 0) { value.nan_bits |= 1ULL << 62; cur_exceptions |= FPSR_EXCEPTION_SNAN; } word = 0x7f800000 | ((value.nan_bits >> (32 + 8)) & 0x7fffff); if (value.nan_sign) word |= 0x80000000; } else if (mpfr_zero_p (single)) word = 0; else { int e; mpz_t f; mpz_init (f); word = 0; // Get exponent and mantissa e = mpfr_get_z_2exp (f, single); // Move binary point e += SINGLE_PREC - 1; // Add bias e += SINGLE_BIAS; if (e <= 0) { // Denormalized number mpz_tdiv_q_2exp (f, f, -e + 1); e = 0; } mpz_export (&word, 0, 1, 4, 0, 0, f); // Remove integer bit word &= 0x7fffff; word |= e << 23; mpz_clear (f); } if (mpfr_signbit (single)) word |= 0x80000000; return word; } static void extract_to_double (fpu_register &value, uint32_t *words) { int t; mpfr_rnd_t rnd = get_cur_rnd (); MPFR_DECL_INIT (dbl, DOUBLE_PREC); set_format (DOUBLE_PREC); // Round to double t = mpfr_set (dbl, value.f, rnd); t = mpfr_check_range (dbl, t, rnd); mpfr_subnormalize (dbl, t, rnd); set_format (EXTENDED_PREC); if (mpfr_inf_p (dbl)) { words[0] = 0x7ff00000; words[1] = 0; } else if (mpfr_nan_p (dbl)) { if ((value.nan_bits & (1ULL << 62)) == 0) { value.nan_bits |= 1ULL << 62; cur_exceptions |= FPSR_EXCEPTION_SNAN; } words[0] = 0x7ff00000 | ((value.nan_bits >> (32 + 11)) & 0xfffff); words[1] = value.nan_bits >> 11; if (value.nan_sign) words[0] |= 0x80000000; } else if (mpfr_zero_p (dbl)) { words[0] = 0; words[1] = 0; } else { int e, off = 0; mpz_t f; mpz_init (f); words[0] = words[1] = 0; // Get exponent and mantissa e = mpfr_get_z_2exp (f, dbl); // Move binary point e += DOUBLE_PREC - 1; // Add bias e += DOUBLE_BIAS; if (e <= 0) { // Denormalized number mpz_tdiv_q_2exp (f, f, -e + 1); if (e <= -20) // No more than 32 bits left off = 1; e = 0; } mpz_export (&words[off], 0, 1, 4, 0, 0, f); // Remove integer bit words[0] &= 0xfffff; words[0] |= e << 20; mpz_clear (f); } if (mpfr_signbit (dbl)) words[0] |= 0x80000000; } static void extract_to_extended (fpu_register &value, uint32_t *words) { if (mpfr_inf_p (value.f)) { words[0] = 0x7fff0000; words[1] = 0; words[2] = 0; } else if (mpfr_nan_p (value.f)) { words[0] = 0x7fff0000; words[1] = value.nan_bits >> 32; words[2] = value.nan_bits; if (value.nan_sign) words[0] |= 0x80000000; } else if (mpfr_zero_p (value.f)) { words[0] = 0; words[1] = 0; words[2] = 0; } else { int e, off = 0; mpz_t f; mpz_init (f); words[0] = words[1] = words[2] = 0; // Get exponent and mantissa e = mpfr_get_z_2exp (f, value.f); // Move binary point e += EXTENDED_PREC - 1; // Add bias e += EXTENDED_BIAS; if (e < 0) { // Denormalized number mpz_tdiv_q_2exp (f, f, -e); if (e <= -32) // No more than 32 bits left off = 1; e = 0; } mpz_export (&words[1 + off], 0, 1, 4, 0, 0, f); words[0] = e << 16; mpz_clear (f); } if (mpfr_signbit (value.f)) words[0] |= 0x80000000; } static void extract_to_packed (fpu_register &value, int k, uae_u32 *words) { if (mpfr_inf_p (value.f)) { words[0] = 0x7fff0000; words[1] = 0; words[2] = 0; } else if (mpfr_nan_p (value.f)) { words[0] = 0x7fff0000; words[1] = value.nan_bits >> 32; words[2] = value.nan_bits; if (value.nan_sign) words[0] |= 0x80000000; } else if (mpfr_zero_p (value.f)) { words[0] = 0; words[1] = 0; words[2] = 0; } else { char str[100], *p = str; mpfr_exp_t e; mpfr_rnd_t rnd = get_cur_rnd (); words[0] = words[1] = words[2] = 0; if (k >= 64) k -= 128; else if (k >= 18) cur_exceptions |= FPSR_EXCEPTION_OPERR; if (k <= 0) { MPFR_DECL_INIT (temp, 16); mpfr_log10 (temp, value.f, rnd); k = mpfr_get_si (temp, MPFR_RNDZ) - k + 1; } if (k <= 0) k = 1; else if (k >= 18) k = 17; mpfr_get_str (str, &e, 10, k, value.f, rnd); e--; if (*p == '-') p++; // Pad to 17 digits while (k < 17) p[k++] = '0'; if (e < 0) { words[0] |= 0x40000000; e = -e; } words[0] |= (e % 10) << 16; e /= 10; words[0] |= (e % 10) << 20; e /= 10; words[0] |= (e % 10) << 24; e /= 10; if (e) cur_exceptions |= FPSR_EXCEPTION_OPERR; words[0] |= e << 12; words[0] |= *p++ & 15; for (k = 0; k < 8; k++) words[1] = (words[1] << 4) | (*p++ & 15); for (k = 0; k < 8; k++) words[2] = (words[2] << 4) | (*p++ & 15); } if (mpfr_signbit (value.f)) words[0] |= 0x80000000; } static long extract_to_integer (mpfr_t value, long min, long max) { long result; mpfr_rnd_t rnd = get_cur_rnd (); if (mpfr_fits_slong_p (value, rnd)) { result = mpfr_get_si (value, rnd); if (result > max) { result = max; cur_exceptions |= FPSR_EXCEPTION_OPERR; } else if (result < min) { result = min; cur_exceptions |= FPSR_EXCEPTION_OPERR; } } else { if (!mpfr_signbit (value)) result = max; else result = min; cur_exceptions |= FPSR_EXCEPTION_OPERR; } return result; } static bool fpuop_fmove_memory (uae_u32 opcode, uae_u32 extra) { int mode, reg, size; uaecptr pc; uae_u32 addr; uae_u32 words[3]; static const int sz1[8] = {4, 4, 12, 12, 2, 8, 1, 0}; static const int sz2[8] = {4, 4, 12, 12, 2, 8, 2, 0}; mpfr_clear_flags (); cur_exceptions = 0; mode = (opcode >> 3) & 7; reg = opcode & 7; size = (extra >> 10) & 7; fpu_register &value = fpu.registers[(extra >> 7) & 7]; switch (mode) { case 0: switch (size) { case 0: m68k_dreg (regs, reg) = extract_to_integer (value.f, -0x7fffffff-1, 0x7fffffff); break; case 1: m68k_dreg (regs, reg) = extract_to_single (value); break; case 4: m68k_dreg (regs, reg) &= ~0xffff; m68k_dreg (regs, reg) |= extract_to_integer (value.f, -32768, 32767) & 0xffff; break; case 6: m68k_dreg (regs, reg) &= ~0xff; m68k_dreg (regs, reg) |= extract_to_integer (value.f, -128, 127) & 0xff; break; default: return false; } update_exceptions (); return true; case 1: return false; case 2: addr = m68k_areg (regs, reg); break; case 3: addr = m68k_areg (regs, reg); break; case 4: addr = m68k_areg (regs, reg) - (reg == 7 ? sz2[size] : sz1[size]); break; case 5: addr = m68k_areg (regs, reg) + (uae_s16) next_iword(); break; case 6: addr = get_disp_ea_020 (m68k_areg (regs, reg), next_iword()); break; case 7: switch (reg) { case 0: addr = (uae_s16) next_iword(); break; case 1: addr = next_ilong(); break; case 2: pc = m68k_getpc (); addr = pc + (uae_s16) next_iword(); break; case 3: pc = m68k_getpc (); addr = get_disp_ea_020 (pc, next_iword ()); break; case 4: addr = m68k_getpc (); m68k_incpc (sz2[size]); break; default: return false; } } switch (size) { case 0: put_long (addr, extract_to_integer (value.f, -0x7fffffff-1, 0x7fffffff)); break; case 1: put_long (addr, extract_to_single (value)); break; case 2: extract_to_extended (value, words); put_long (addr, words[0]); put_long (addr + 4, words[1]); put_long (addr + 8, words[2]); break; case 3: extract_to_packed (value, extra & 0x7f, words); put_long (addr, words[0]); put_long (addr + 4, words[1]); put_long (addr + 8, words[2]); break; case 4: put_word (addr, extract_to_integer (value.f, -32768, 32767)); break; case 5: extract_to_double (value, words); put_long (addr, words[0]); put_long (addr + 4, words[1]); break; case 6: put_byte (addr, extract_to_integer (value.f, -128, 127)); break; case 7: extract_to_packed (value, m68k_dreg (regs, (extra >> 4) & 7) & 0x7f, words); put_long (addr, words[0]); put_long (addr + 4, words[1]); put_long (addr + 8, words[2]); break; } switch (mode) { case 3: m68k_areg (regs, reg) += reg == 7 ? sz2[size] : sz1[size]; break; case 4: m68k_areg (regs, reg) -= reg == 7 ? sz2[size] : sz1[size]; break; } update_exceptions (); return true; } static bool fpuop_fmovem_control (uae_u32 opcode, uae_u32 extra) { int list, mode, reg; uae_u32 addr; list = (extra >> 10) & 7; mode = (opcode >> 3) & 7; reg = opcode & 7; if (list == 0) return false; if (extra & 0x2000) { // FMOVEM to if (mode == 0) { switch (list) { case 1: m68k_dreg (regs, reg) = fpu.instruction_address; break; case 2: m68k_dreg (regs, reg) = get_fpsr (); break; case 4: m68k_dreg (regs, reg) = get_fpcr (); break; default: return false; } } else if (mode == 1) { if (list != 1) return false; m68k_areg (regs, reg) = fpu.instruction_address; } else { int nwords; if (!get_fp_addr (opcode, &addr, true)) return false; nwords = (list & 1) + ((list >> 1) & 1) + ((list >> 2) & 1); if (mode == 4) addr -= nwords * 4; if (list & 4) { put_long (addr, get_fpcr ()); addr += 4; } if (list & 2) { put_long (addr, get_fpsr ()); addr += 4; } if (list & 1) { put_long (addr, fpu.instruction_address); addr += 4; } if (mode == 4) m68k_areg (regs, reg) = addr - nwords * 4; else if (mode == 3) m68k_areg (regs, reg) = addr; } } else { // FMOVEM from if (mode == 0) { switch (list) { case 1: fpu.instruction_address = m68k_dreg (regs, reg); break; case 2: set_fpsr (m68k_dreg (regs, reg)); break; case 4: set_fpcr (m68k_dreg (regs, reg)); break; default: return false; } } else if (mode == 1) { if (list != 1) return false; fpu.instruction_address = m68k_areg (regs, reg); } else if ((opcode & 077) == 074) { switch (list) { case 1: fpu.instruction_address = next_ilong (); break; case 2: set_fpsr (next_ilong ()); break; case 4: set_fpcr (next_ilong ()); break; default: return false; } } else { int nwords; if (!get_fp_addr (opcode, &addr, false)) return false; nwords = (list & 1) + ((list >> 1) & 1) + ((list >> 2) & 1); if (mode == 4) addr -= nwords * 4; if (list & 4) { set_fpcr (get_long (addr)); addr += 4; } if (list & 2) { set_fpsr (get_long (addr)); addr += 4; } if (list & 1) { fpu.instruction_address = get_long (addr); addr += 4; } if (mode == 4) m68k_areg (regs, reg) = addr - nwords * 4; else if (mode == 3) m68k_areg (regs, reg) = addr; } } return true; } static bool fpuop_fmovem_register (uae_u32 opcode, uae_u32 extra) { uae_u32 addr; uae_u32 words[3]; int list; int i; set_format (EXTENDED_PREC); if (!get_fp_addr (opcode, &addr, extra & 0x2000)) return false; if (extra & 0x800) list = m68k_dreg (regs, (extra >> 4) & 7) & 0xff; else list = extra & 0xff; if (extra & 0x2000) { // FMOVEM to memory switch (opcode & 070) { case 030: return false; case 040: if (extra & 0x1000) return false; for (i = 7; i >= 0; i--) if (list & (1 << i)) { extract_to_extended (fpu.registers[i], words); addr -= 12; put_long (addr, words[0]); put_long (addr + 4, words[1]); put_long (addr + 8, words[2]); } m68k_areg (regs, opcode & 7) = addr; break; default: if ((extra & 0x1000) == 0) return false; for (i = 0; i < 8; i++) if (list & (0x80 >> i)) { extract_to_extended (fpu.registers[i], words); put_long (addr, words[0]); put_long (addr + 4, words[1]); put_long (addr + 8, words[2]); addr += 12; } if ((opcode & 070) == 030) m68k_areg (regs, opcode & 7) = addr; break; } } else { // FMOVEM from memory if ((opcode & 070) == 040) return false; if ((extra & 0x1000) == 0) return false; for (i = 0; i < 8; i++) if (list & (0x80 >> i)) { words[0] = get_long (addr); words[1] = get_long (addr + 4); words[2] = get_long (addr + 8); addr += 12; set_from_extended (fpu.registers[i], words, false); } if ((opcode & 070) == 030) m68k_areg (regs, opcode & 7) = addr; } return true; } static int do_getexp (mpfr_t value, mpfr_rnd_t rnd) { int t = 0; if (mpfr_inf_p (value)) { mpfr_set_nan (value); cur_exceptions |= FPSR_EXCEPTION_OPERR; } else if (!mpfr_nan_p (value) && !mpfr_zero_p (value)) t = mpfr_set_si (value, mpfr_get_exp (value) - 1, rnd); return t; } static int do_getman (mpfr_t value) { if (mpfr_inf_p (value)) { mpfr_set_nan (value); cur_exceptions |= FPSR_EXCEPTION_OPERR; } else if (!mpfr_nan_p (value) && !mpfr_zero_p (value)) mpfr_set_exp (value, 1); return 0; } static int do_scale (mpfr_t value, mpfr_t reg, mpfr_rnd_t rnd) { long scale; int t = 0; if (mpfr_nan_p (value)) ; else if (mpfr_inf_p (value)) { mpfr_set_nan (value); cur_exceptions |= FPSR_EXCEPTION_OPERR; } else if (mpfr_fits_slong_p (value, rnd)) { scale = mpfr_get_si (value, MPFR_RNDZ); mpfr_clear_inexflag (); t = mpfr_mul_2si (value, reg, scale, rnd); } else mpfr_set_inf (value, -mpfr_signbit (value)); return t; } static int do_remainder (mpfr_t value, mpfr_t reg, mpfr_rnd_t rnd) { long quo; int t = 0; if (mpfr_nan_p (value) || mpfr_nan_p (reg)) ; else if (mpfr_zero_p (value) || mpfr_inf_p (reg)) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_remquo (value, &quo, reg, value, rnd); if (quo < 0) quo = (-quo & 0x7f) | 0x80; else quo &= 0x7f; fpu.fpsr.quotient = quo << 16; return t; } // Unfortunately, mpfr_fmod does not return the quotient bits, so we // have to reimplement it here static int mpfr_rem1 (mpfr_t rem, int *quo, mpfr_t x, mpfr_t y, mpfr_rnd_t rnd) { mpfr_exp_t ex, ey; int inex, sign, signx = mpfr_signbit (x); mpz_t mx, my, r; mpz_init (mx); mpz_init (my); mpz_init (r); ex = mpfr_get_z_2exp (mx, x); /* x = mx*2^ex */ ey = mpfr_get_z_2exp (my, y); /* y = my*2^ey */ /* to get rid of sign problems, we compute it separately: quo(-x,-y) = quo(x,y), rem(-x,-y) = -rem(x,y) quo(-x,y) = -quo(x,y), rem(-x,y) = -rem(x,y) thus quo = sign(x/y)*quo(|x|,|y|), rem = sign(x)*rem(|x|,|y|) */ sign = (signx != mpfr_signbit (y)); mpz_abs (mx, mx); mpz_abs (my, my); /* divide my by 2^k if possible to make operations mod my easier */ { unsigned long k = mpz_scan1 (my, 0); ey += k; mpz_fdiv_q_2exp (my, my, k); } if (ex <= ey) { /* q = x/y = mx/(my*2^(ey-ex)) */ mpz_mul_2exp (my, my, ey - ex); /* divide mx by my*2^(ey-ex) */ /* 0 <= |r| <= |my|, r has the same sign as mx */ mpz_tdiv_qr (mx, r, mx, my); /* mx is the quotient */ mpz_tdiv_r_2exp (mx, mx, 7); *quo = mpz_get_si (mx); } else /* ex > ey */ { /* to get the low 7 more bits of the quotient, we first compute R = X mod Y*2^7, where X and Y are defined below. Then the low 7 of the quotient are floor(R/Y). */ mpz_mul_2exp (my, my, 7); /* 2^7*Y */ mpz_set_ui (r, 2); mpz_powm_ui (r, r, ex - ey, my); /* 2^(ex-ey) mod my */ mpz_mul (r, r, mx); mpz_mod (r, r, my); /* now 0 <= r < 2^7*Y */ mpz_fdiv_q_2exp (my, my, 7); /* back to Y */ mpz_tdiv_qr (mx, r, r, my); /* oldr = mx*my + newr */ *quo = mpz_get_si (mx); /* now 0 <= |r| < |my| */ } if (mpz_cmp_ui (r, 0) == 0) { inex = mpfr_set_ui (rem, 0, MPFR_RNDN); /* take into account sign of x */ if (signx) mpfr_neg (rem, rem, MPFR_RNDN); } else { /* take into account sign of x */ if (signx) mpz_neg (r, r); inex = mpfr_set_z_2exp (rem, r, ex > ey ? ey : ex, rnd); } if (sign) *quo |= 0x80; mpz_clear (mx); mpz_clear (my); mpz_clear (r); return inex; } static int do_fmod (mpfr_t value, mpfr_t reg, mpfr_rnd_t rnd) { int t = 0; if (mpfr_nan_p (value) || mpfr_nan_p (reg)) mpfr_set_nan (value); else if (mpfr_zero_p (value) || mpfr_inf_p (reg)) { mpfr_set_nan (value); cur_exceptions |= FPSR_EXCEPTION_OPERR; } else if (mpfr_zero_p (reg) || mpfr_inf_p (value)) { fpu.fpsr.quotient = 0; t = mpfr_set (value, reg, rnd); } else { int quo; t = mpfr_rem1 (value, &quo, reg, value, rnd); fpu.fpsr.quotient = quo << 16; } return t; } static void do_fcmp (mpfr_t source, mpfr_t dest) { uae_u32 flags = 0; if (mpfr_nan_p (source) || mpfr_nan_p (dest)) flags |= FPSR_CCB_NAN; else { int cmp = mpfr_cmp (dest, source); if (cmp < 0) flags |= FPSR_CCB_NEGATIVE; else if (cmp == 0) { flags |= FPSR_CCB_ZERO; if ((mpfr_zero_p (dest) || mpfr_inf_p (dest)) && mpfr_signbit (dest)) flags |= FPSR_CCB_NEGATIVE; } } set_fpccr (flags); } static void do_ftst (mpfr_t value) { uae_u32 flags = 0; if (mpfr_signbit (value)) flags |= FPSR_CCB_NEGATIVE; if (mpfr_nan_p (value)) flags |= FPSR_CCB_NAN; else if (mpfr_zero_p (value)) flags |= FPSR_CCB_ZERO; else if (mpfr_inf_p (value)) flags |= FPSR_CCB_INFINITY; set_fpccr (flags); } static bool fpuop_general (uae_u32 opcode, uae_u32 extra) { mpfr_prec_t prec = get_cur_prec (); mpfr_rnd_t rnd = get_cur_rnd (); int reg = (extra >> 7) & 7; int t = 0; fpu_register value; bool ret; mpfr_init2 (value.f, prec); value.nan_bits = DEFAULT_NAN_BITS; value.nan_sign = 0; mpfr_clear_flags (); set_format (prec); cur_exceptions = 0; cur_instruction_address = m68k_getpc () - 4; if ((extra & 0xfc00) == 0x5c00) { // FMOVECR int rom_index = extra & 0x7f; if (rom_index == 0 || (rom_index >= 11 && rom_index <= 15)) t = mpfr_set (value.f, fpu_constant_rom[rom_index], rnd); else if (rom_index >= 48 && rom_index <= 63) t = mpfr_set (value.f, fpu_constant_rom[rom_index - 32], rnd); else mpfr_set_zero (value.f, 0); set_fp_register (reg, value, t, rnd, true); } else if (extra & 0x40) { static const char valid[64] = { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0 }; if (extra & 4) // FD... prec = DOUBLE_PREC; else // FS... prec = SINGLE_PREC; set_format (prec); MPFR_DECL_INIT (value2, prec); if (!fpu.is_integral) { ret = false; goto out; } if (!valid[extra & 0x3b]) { ret = false; goto out; } if (!get_fp_value (opcode, extra, value)) { ret = false; goto out; } switch (extra & 0x3f) { case 0: // FSMOVE case 4: // FDMOVE mpfr_set (value2, value.f, rnd); break; case 1: // FSSQRT case 5: // FDSQRT if (mpfr_sgn (value.f) < 0) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_sqrt (value2, value.f, rnd); break; case 24: // FSABS case 28: // FDABS t = mpfr_abs (value2, value.f, rnd); break; case 26: // FSNEG case 30: // FDNEG t = mpfr_neg (value2, value.f, rnd); break; case 32: // FSDIV case 36: // FDDIV if (mpfr_zero_p (value.f)) { if (mpfr_regular_p (fpu.registers[reg].f)) cur_exceptions |= FPSR_EXCEPTION_DZ; else if (mpfr_zero_p (fpu.registers[reg].f)) cur_exceptions |= FPSR_EXCEPTION_OPERR; } else if (mpfr_inf_p (value.f) && mpfr_inf_p (fpu.registers[reg].f)) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_div (value2, fpu.registers[reg].f, value.f, rnd); break; case 34: // FSADD case 38: // FDADD if (mpfr_inf_p (fpu.registers[reg].f) && mpfr_inf_p (value.f) && mpfr_signbit (fpu.registers[reg].f) != mpfr_signbit (value.f)) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_add (value2, fpu.registers[reg].f, value.f, rnd); break; case 35: // FSMUL case 39: // FDMUL if ((mpfr_zero_p (value.f) && mpfr_inf_p (fpu.registers[reg].f)) || (mpfr_inf_p (value.f) && mpfr_zero_p (fpu.registers[reg].f))) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_mul (value2, fpu.registers[reg].f, value.f, rnd); break; case 40: // FSSUB case 44: // FDSUB if (mpfr_inf_p (fpu.registers[reg].f) && mpfr_inf_p (value.f) && mpfr_signbit (fpu.registers[reg].f) == mpfr_signbit (value.f)) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_sub (value2, fpu.registers[reg].f, value.f, rnd); break; } set_fp_register (reg, value2, t, rnd, true); } else if ((extra & 0x30) == 0x30) { if ((extra & 15) > 10 || (extra & 15) == 9) { ret = false; goto out; } if (!get_fp_value (opcode, extra, value)) { ret = false; goto out; } if ((extra & 15) < 8) { // FSINCOS int reg2 = extra & 7; MPFR_DECL_INIT (value2, prec); if (mpfr_inf_p (value.f)) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_sin_cos (value.f, value2, value.f, rnd); if (reg2 != reg) set_fp_register (reg2, value2, t >> 2, rnd, false); set_fp_register (reg, value, t & 3, rnd, true); } else if ((extra & 15) == 8) // FCMP do_fcmp (value.f, fpu.registers[reg].f); else // FTST do_ftst (value.f); } else { static const char valid[64] = { 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; if (!valid[extra & 0x3f]) { ret = false; goto out; } if (!get_fp_value (opcode, extra, value)) { ret = false; goto out; } switch (extra & 0x3f) { case 0: // FMOVE break; case 1: // FINT t = mpfr_rint (value.f, value.f, rnd); break; case 2: // FSINH t = mpfr_sinh (value.f, value.f, rnd); break; case 3: // FINTRZ t = mpfr_rint (value.f, value.f, MPFR_RNDZ); break; case 4: // FSQRT if (mpfr_sgn (value.f) < 0) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_sqrt (value.f, value.f, rnd); break; case 6: // FLOGNP1 if (!mpfr_nan_p (value.f)) { int cmp = mpfr_cmp_si (value.f, -1); if (cmp == 0) cur_exceptions |= FPSR_EXCEPTION_DZ; else if (cmp < 0) cur_exceptions |= FPSR_EXCEPTION_OPERR; } t = mpfr_log1p (value.f, value.f, rnd); break; case 8: // FETOXM1 t = mpfr_expm1 (value.f, value.f, rnd); break; case 9: // FTANH t = mpfr_tanh (value.f, value.f, rnd); break; case 10: // FATAN t = mpfr_atan (value.f, value.f, rnd); break; case 12: // FASIN if (mpfr_cmpabs (value.f, FPU_CONSTANT_ONE) > 0) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_asin (value.f, value.f, rnd); break; case 13: // FATANH if (mpfr_cmpabs (value.f, FPU_CONSTANT_ONE) > 0) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_atanh (value.f, value.f, rnd); break; case 14: // FSIN if (mpfr_inf_p (value.f)) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_sin (value.f, value.f, rnd); break; case 15: // FTAN if (mpfr_inf_p (value.f)) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_tan (value.f, value.f, rnd); break; case 16: // FETOX t = mpfr_exp (value.f, value.f, rnd); break; case 17: // FTWOTOX t = mpfr_ui_pow (value.f, 2, value.f, rnd); break; case 18: // FTENTOX t = mpfr_ui_pow (value.f, 10, value.f, rnd); break; case 20: // FLOGN if (mpfr_zero_p (value.f)) cur_exceptions |= FPSR_EXCEPTION_DZ; else if (mpfr_sgn (value.f) < 0) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_log (value.f, value.f, rnd); break; case 21: // FLOG10 if (mpfr_zero_p (value.f)) cur_exceptions |= FPSR_EXCEPTION_DZ; else if (mpfr_sgn (value.f) < 0) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_log10 (value.f, value.f, rnd); break; case 22: // FLOG2 if (mpfr_zero_p (value.f)) cur_exceptions |= FPSR_EXCEPTION_DZ; else if (mpfr_sgn (value.f) < 0) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_log2 (value.f, value.f, rnd); break; case 24: // FABS t = mpfr_abs (value.f, value.f, rnd); value.nan_sign = 0; break; case 25: // FCOSH t = mpfr_cosh (value.f, value.f, rnd); break; case 26: // FNEG t = mpfr_neg (value.f, value.f, rnd); value.nan_sign = !value.nan_sign; break; case 28: // FACOS if (mpfr_cmpabs (value.f, FPU_CONSTANT_ONE) > 0) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_acos (value.f, value.f, rnd); break; case 29: // FCOS if (mpfr_inf_p (value.f)) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_cos (value.f, value.f, rnd); break; case 30: // FGETEXP t = do_getexp (value.f, rnd); break; case 31: // FGETMAN t = do_getman (value.f); break; case 32: // FDIV if (mpfr_zero_p (value.f)) { if (mpfr_regular_p (fpu.registers[reg].f)) cur_exceptions |= FPSR_EXCEPTION_DZ; else if (mpfr_zero_p (fpu.registers[reg].f)) cur_exceptions |= FPSR_EXCEPTION_OPERR; } else if (mpfr_inf_p (value.f) && mpfr_inf_p (fpu.registers[reg].f)) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_div (value.f, fpu.registers[reg].f, value.f, rnd); break; case 33: // FMOD t = do_fmod (value.f, fpu.registers[reg].f, rnd); break; case 34: // FADD if (mpfr_inf_p (fpu.registers[reg].f) && mpfr_inf_p (value.f) && mpfr_signbit (fpu.registers[reg].f) != mpfr_signbit (value.f)) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_add (value.f, fpu.registers[reg].f, value.f, rnd); break; case 35: // FMUL if ((mpfr_zero_p (value.f) && mpfr_inf_p (fpu.registers[reg].f)) || (mpfr_inf_p (value.f) && mpfr_zero_p (fpu.registers[reg].f))) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_mul (value.f, fpu.registers[reg].f, value.f, rnd); break; case 36: // FSGLDIV { MPFR_DECL_INIT (value2, SINGLE_PREC); set_format (SINGLE_PREC); if (mpfr_zero_p (value.f)) { if (mpfr_regular_p (fpu.registers[reg].f)) cur_exceptions |= FPSR_EXCEPTION_DZ; else if (mpfr_zero_p (fpu.registers[reg].f)) cur_exceptions |= FPSR_EXCEPTION_OPERR; } else if (mpfr_inf_p (value.f) && mpfr_inf_p (fpu.registers[reg].f)) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_div (value2, fpu.registers[reg].f, value.f, rnd); mpfr_set (value.f, value2, rnd); } break; case 37: // FREM t = do_remainder (value.f, fpu.registers[reg].f, rnd); break; case 38: // FSCALE t = do_scale (value.f, fpu.registers[reg].f, rnd); break; case 39: // FSGLMUL { MPFR_DECL_INIT (value2, SINGLE_PREC); set_format (SINGLE_PREC); if ((mpfr_zero_p (value.f) && mpfr_inf_p (fpu.registers[reg].f)) || (mpfr_inf_p (value.f) && mpfr_zero_p (fpu.registers[reg].f))) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_mul (value2, fpu.registers[reg].f, value.f, rnd); mpfr_set (value.f, value2, rnd); } break; case 40: // FSUB if (mpfr_inf_p (fpu.registers[reg].f) && mpfr_inf_p (value.f) && mpfr_signbit (fpu.registers[reg].f) == mpfr_signbit (value.f)) cur_exceptions |= FPSR_EXCEPTION_OPERR; t = mpfr_sub (value.f, fpu.registers[reg].f, value.f, rnd); break; } set_fp_register (reg, value, t, rnd, true); } update_exceptions (); ret = true; out: mpfr_clear (value.f); return ret; } void fpuop_arithmetic (uae_u32 opcode, uae_u32 extra) { bool valid; switch ((extra >> 13) & 7) { case 3: valid = fpuop_fmove_memory (opcode, extra); break; case 4: case 5: valid = fpuop_fmovem_control (opcode, extra); break; case 6: case 7: valid = fpuop_fmovem_register (opcode, extra); break; case 0: case 2: valid = fpuop_general (opcode, extra); break; default: valid = false; break; } if (!valid) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); } } static bool check_fp_cond (uae_u32 pred) { uae_u32 fpcc = get_fpccr (); if ((pred & 16) != 0 && (fpcc & FPSR_CCB_NAN) != 0) { // IEEE non-aware test set_exception_status (get_exception_status () | FPSR_EXCEPTION_BSUN); set_accrued_exception (get_accrued_exception () | FPSR_ACCR_IOP); } switch (pred & 15) { case 0: // F / SF return false; case 1: // EQ /SEQ return (fpcc & FPSR_CCB_ZERO) != 0; case 2: // OGT / GT return (fpcc & (FPSR_CCB_NAN | FPSR_CCB_ZERO | FPSR_CCB_NEGATIVE)) == 0; case 3: // OGE / GE return (fpcc & FPSR_CCB_ZERO) != 0 || (fpcc & (FPSR_CCB_NAN | FPSR_CCB_NEGATIVE)) == 0; case 4: // OLT / LT return (fpcc & (FPSR_CCB_NEGATIVE | FPSR_CCB_NAN | FPSR_CCB_ZERO)) == FPSR_CCB_NEGATIVE; case 5: // OLE / LE return (fpcc & FPSR_CCB_ZERO) != 0 || (fpcc & (FPSR_CCB_NEGATIVE | FPSR_CCB_NAN)) == FPSR_CCB_NEGATIVE; case 6: // OGL / GL return (fpcc & (FPSR_CCB_NAN | FPSR_CCB_ZERO)) == 0; case 7: // OR / GLE return (fpcc & FPSR_CCB_NAN) == 0; case 8: // UN / NGLE return (fpcc & FPSR_CCB_NAN) != 0; case 9: // UEQ / NGL return (fpcc & (FPSR_CCB_NAN | FPSR_CCB_ZERO)) != 0; case 10: // UGT / NLE return (fpcc & FPSR_CCB_NAN) != 0 || (fpcc & (FPSR_CCB_NEGATIVE | FPSR_CCB_ZERO)) == 0; case 11: // UGE / NLT return (fpcc & (FPSR_CCB_NEGATIVE | FPSR_CCB_NAN | FPSR_CCB_ZERO)) != FPSR_CCB_NEGATIVE; case 12: // ULT / NGE return (fpcc & FPSR_CCB_NAN) != 0 || (fpcc & (FPSR_CCB_NEGATIVE | FPSR_CCB_ZERO)) == FPSR_CCB_NEGATIVE; case 13: // ULE / NGT return (fpcc & (FPSR_CCB_NAN | FPSR_CCB_ZERO | FPSR_CCB_NEGATIVE)) != 0; case 14: // NE / SNE return (fpcc & FPSR_CCB_ZERO) == 0; case 15: // T / ST return true; default: return false; } } void fpuop_bcc (uae_u32 opcode, uaecptr pc, uae_u32 disp) { if (check_fp_cond (opcode)) { if (!(opcode & (1 << 6))) disp = (uae_s16) disp; m68k_setpc (pc + disp); } } void fpuop_scc (uae_u32 opcode, uae_u32 extra) { uae_u32 addr; int value = check_fp_cond (extra) ? 0xff : 0; if ((opcode & 070) == 0) { int reg = opcode & 7; m68k_dreg (regs, reg) = (m68k_dreg (regs, reg) & ~0xff) | value; } else if (!get_fp_addr (opcode, &addr, true)) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); } else { switch (opcode & 070) { case 030: m68k_areg (regs, opcode & 7) += (opcode & 7) == 7 ? 2 : 1; break; case 040: addr -= (opcode & 7) == 7 ? 2 : 1; m68k_areg (regs, opcode & 7) = addr; } put_byte (addr, value); } } void fpuop_dbcc (uae_u32 opcode, uae_u32 extra) { uaecptr pc = m68k_getpc (); uae_s16 disp = next_iword (); if (!check_fp_cond (extra)) { int reg = opcode & 7; uae_u16 cnt = (m68k_dreg (regs, reg) & 0xffff) - 1; m68k_dreg (regs, reg) = (m68k_dreg (regs, reg) & ~0xffff) | cnt; if (cnt != 0xffff) m68k_setpc (pc + disp); } } void fpuop_trapcc (uae_u32, uaecptr oldpc, uae_u32 extra) { if (check_fp_cond (extra)) Exception (7, oldpc - 2); } void fpuop_save (uae_u32 opcode) { uae_u32 addr; if ((opcode & 070) == 030 || !get_fp_addr (opcode, &addr, true)) { m68k_setpc (m68k_getpc () - 2); op_illg (opcode); return; } if (fpu.is_integral) { // 4 byte 68040 IDLE frame // FIXME: generate proper FPU stack frames that does not result // in undefined behaviour from FPSP040 if ((opcode & 070) == 040) { addr -= 4; m68k_areg (regs, opcode & 7) = addr; } put_long (addr, 0x41000000); } else { // 28 byte 68881 IDLE frame if ((opcode & 070) == 040) { addr -= 28; m68k_areg (regs, opcode & 7) = addr; } put_long (addr, 0x1f180000); for (int i = 0; i < 6; i++) { addr += 4; put_long (addr, 0); } } } void fpuop_restore (uae_u32 opcode) { uae_u32 addr; uae_u32 format; if ((opcode & 070) == 040 || !get_fp_addr (opcode, &addr, false)) { m68k_setpc (m68k_getpc () - 2); op_illg (opcode); return; } format = get_long (addr); addr += 4; if ((format & 0xff000000) == 0) // NULL frame fpu_reset (); else addr += (format & 0xff0000) >> 16; if ((opcode & 070) == 030) m68k_areg (regs, opcode & 7) = addr; } void fpu_set_fpsr(uae_u32 new_fpsr) { set_fpsr(new_fpsr); } uae_u32 fpu_get_fpsr(void) { return get_fpsr(); } void fpu_set_fpcr(uae_u32 new_fpcr) { set_fpcr(new_fpcr); } uae_u32 fpu_get_fpcr(void) { return get_fpcr(); } aranym-1.1.0/src/uae_cpu/fpu/fpu_ieee.h0000664000175000017500000001026413454637622016141 0ustar joyjoy/* * fpu/fpu_ieee.h - Extra Definitions for the IEEE FPU core * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef FPU_IEEE_H #define FPU_IEEE_H /* NOTE: this file shall be included from fpu/fpu_uae.cpp */ #undef PUBLIC #define PUBLIC extern #undef PRIVATE #define PRIVATE static #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. // Lauri-- full words to avoid partial register stalls. struct double_flags { uae_u32 in_range; uae_u32 zero; uae_u32 infinity; uae_u32 nan; uae_u32 negative; }; PRIVATE double_flags fl_source; PRIVATE double_flags fl_dest; PRIVATE inline void FFPU get_dest_flags(fpu_register const & r); PRIVATE inline void FFPU get_source_flags(fpu_register const & r); PRIVATE inline void FFPU make_nan(fpu_register & r, bool negative); PRIVATE inline void FFPU make_zero(fpu_register & r, bool negative); PRIVATE inline void FFPU make_inf(fpu_register & r, bool negative); // MJ PRIVATE inline void FFPU fast_scale(fpu_register & r, int add); PRIVATE inline fpu_register FFPU fast_fgetexp(fpu_register const & r); // May be optimized for particular processors #ifndef FPU_USE_NATIVE_FLAGS PRIVATE inline void FFPU make_fpsr(fpu_register const & r); #endif // Normalize to range 1..2 PRIVATE inline void FFPU fast_remove_exponent(fpu_register & r); // The sign of the quotient is the exclusive-OR of the sign bits // of the source and destination operands. PRIVATE inline uae_u32 FFPU get_quotient_sign( fpu_register const & ra, fpu_register const & rb ); // Quotient Byte is loaded with the sign and least significant // seven bits of the quotient. PRIVATE inline void FFPU make_quotient( fpu_register const & quotient, uae_u32 sign ); // to_single PRIVATE inline fpu_register FFPU make_single( uae_u32 value ); // from_single PRIVATE inline uae_u32 FFPU extract_single( fpu_register const & src ); // to_exten PRIVATE inline fpu_register FFPU make_extended( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3 ); /* Would be so much easier with full size floats :( ... this is so vague. */ // to_exten_no_normalize PRIVATE inline void FFPU make_extended_no_normalize( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3, fpu_register & result ); // from_exten PRIVATE inline void FFPU extract_extended(fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3 ); // to_double PRIVATE inline fpu_register FFPU make_double( uae_u32 wrd1, uae_u32 wrd2 ); // from_double PRIVATE inline void FFPU extract_double(fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2 ); PRIVATE inline fpu_register FFPU make_packed( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3 ); PRIVATE inline void FFPU extract_packed( fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3 ); PRIVATE inline int FFPU get_fp_value( uae_u32 opcode, uae_u16 extra, fpu_register & src ); PRIVATE inline int FFPU put_fp_value( uae_u32 opcode, uae_u16 extra, fpu_register const & value ); PRIVATE inline int FFPU get_fp_ad( uae_u32 opcode, uae_u32 * ad ); PRIVATE inline int FFPU fpp_cond( int condition ); #endif /* FPU_IEEE_H */ aranym-1.1.0/src/uae_cpu/fpu/fpu_ieee.cpp0000664000175000017500000020276613454637622016506 0ustar joyjoy/* * fpu_ieee.cpp - the IEEE FPU * * Copyright (c) 2001-2008 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * UAE - The Un*x Amiga Emulator * * MC68881/MC68040 emulation * * Copyright 1996 Herman ten Brugge * * * Following fixes by Lauri Pesonen, July 1999: * * FMOVEM list handling: * The lookup tables did not work correctly, rewritten. * FINT: * (int) cast does not work, fixed. * Further, now honors the FPU fpcr rounding modes. * FINTRZ: * (int) cast cannot be used, fixed. * FGETEXP: * Input argument value 0 returned erroneous value. * FMOD: * (int) cast cannot be used. Replaced by proper rounding. * Quotient byte handling was missing. * FREM: * (int) cast cannot be used. Replaced by proper rounding. * Quotient byte handling was missing. * FSCALE: * Input argument value 0 was not handled correctly. * FMOVEM Control Registers to/from address FPU registers An: * A bug caused the code never been called. * FMOVEM Control Registers pre-decrement: * Moving of control regs from memory to FPP was not handled properly, * if not all of the three FPU registers were moved. * Condition code "Not Greater Than or Equal": * Returned erroneous value. * FSINCOS: * Cosine must be loaded first if same register. * FMOVECR: * Status register was not updated (yes, this affects it). * FMOVE -> reg: * Status register was not updated (yes, this affects it). * FMOVE reg -> reg: * Status register was not updated. * FDBcc: * The loop termination condition was wrong. * Possible leak from int16 to int32 fixed. * get_fp_value: * Immediate addressing mode && Operation Length == Byte -> * Use the low-order byte of the extension word. * Now FPU fpcr high 16 bits are always read as zeroes, no matter what was * written to them. * * Other: * - Optimized single/double/extended to/from conversion functions. * Huge speed boost, but not (necessarily) portable to other systems. * Enabled/disabled by #define FPU_HAVE_IEEE_DOUBLE 1 * - Optimized versions of FSCALE, FGETEXP, FGETMAN * - Conversion routines now handle NaN and infinity better. * - Some constants precalculated. Not all compilers can optimize the * expressions previously used. * * TODO: * - Floating point exceptions. * - More Infinity/NaN/overflow/underflow checking. * - FPU instruction_address (only needed when exceptions are implemented) * - Should be written in assembly to support long doubles. * - Precision rounding single/double */ #include "sysdeps.h" #include #include "memory-uae.h" #include "readcpu.h" #include "newcpu.h" #include "main.h" #define FPU_IMPLEMENTATION #include "fpu/fpu.h" #include "fpu/fpu_ieee.h" /* Global FPU context */ fpu_t fpu; /* -------------------------------------------------------------------------- */ /* --- Scopes Definition --- */ /* -------------------------------------------------------------------------- */ #undef PUBLIC #define PUBLIC /**/ #undef PRIVATE #define PRIVATE static #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. /* -------------------------------------------------------------------------- */ /* --- Native Support --- */ /* -------------------------------------------------------------------------- */ #include "fpu/mathlib.h" #include "fpu/flags.h" #include "fpu/exceptions.h" #include "fpu/rounding.h" #include "fpu/impl.h" #include "fpu/mathlib.cpp" #include "fpu/flags.cpp" #include "fpu/exceptions.cpp" #include "fpu/rounding.cpp" #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) #define LD(x) x ## L #ifdef HAVE_POWL #define POWL(x, y) powl(x, y) #else #define POWL(x, y) pow(x, y) #endif #ifdef HAVE_LOG10L #define LOG10L(x) log10l(x) #else #define LOG10L(x) log10(x) #endif #else #define LD(x) x #define POWL(x, y) pow(x, y) #define LOG10L(x) log10(x) #endif /* -------------------------------------------------------------------------- */ /* --- Debugging --- */ /* -------------------------------------------------------------------------- */ PUBLIC void FFPU fpu_dump_registers(void) { for (int i = 0; i < 8; i++){ printf ("FP%d: %g ", i, fpu_get_register(i)); if ((i & 3) == 3) printf ("\n"); } } PUBLIC void FFPU fpu_dump_flags(void) { printf ("N=%d Z=%d I=%d NAN=%d\n", (get_fpsr() & FPSR_CCB_NEGATIVE) != 0, (get_fpsr() & FPSR_CCB_ZERO)!= 0, (get_fpsr() & FPSR_CCB_INFINITY) != 0, (get_fpsr() & FPSR_CCB_NAN) != 0); } #if FPU_DEBUG && FPU_DUMP_REGISTERS PRIVATE void FFPU dump_registers(const char * str) { char temp_str[512]; sprintf(temp_str, "%s: %.04f, %.04f, %.04f, %.04f, %.04f, %.04f, %.04f, %.04f\n", str, fpu_get_register(0), fpu_get_register(1), fpu_get_register(2), fpu_get_register(3), fpu_get_register(4), fpu_get_register(5), fpu_get_register(6), fpu_get_register(7) ); fpu_debug((temp_str)); #else PRIVATE void FFPU dump_registers(const char *) { #endif } #if FPU_DEBUG && FPU_DUMP_FIRST_BYTES PRIVATE void FFPU dump_first_bytes(uae_u8 * buffer, uae_s32 actual) { char temp_buf1[256], temp_buf2[10]; int bytes = sizeof(temp_buf1)/3-1-3; if (actual < bytes) bytes = actual; temp_buf1[0] = 0; for (int i = 0; i < bytes; i++) { sprintf(temp_buf2, "%02x ", (uae_u32)buffer[i]); strcat(temp_buf1, temp_buf2); } strcat(temp_buf1, "\n"); fpu_debug((temp_buf1)); #else PRIVATE void FFPU dump_first_bytes(uae_u8 *, uae_s32) { #endif } // Quotient Byte is loaded with the sign and least significant // seven bits of the quotient. PRIVATE inline void FFPU make_quotient(fpu_register const & quotient, uae_u32 sign) { uae_u32 lsb = (uae_u32)fp_fabs(quotient) & 0x7f; FPU fpsr.quotient = sign | (lsb << 16); } // to_single PRIVATE inline fpu_register FFPU make_single(uae_u32 value) { #if 1 // Use a single, otherwise some checks for NaN, Inf, Zero would have to // be performed fpu_single result = 0; fp_declare_init_shape(srp, single); srp.ieee.negative = (value >> 31) & 1; srp.ieee.exponent = (value >> 23) & FP_SINGLE_EXP_MAX; srp.ieee.mantissa = value & 0x007fffff; result = srp.value; fpu_debug(("make_single (%X) = %.04f\n",value,(double)result)); return result; #elif 0 /* Original code */ if ((value & 0x7fffffff) == 0) return (0.0); fpu_register result; fpu_register_parts *p = (fpu_register_parts *)&result; uae_u32 sign = (value & 0x80000000); uae_u32 exp = ((value & 0x7F800000) >> 23) + 1023 - 127; p->parts[FLO] = value << 29; p->parts[FHI] = sign | (exp << 20) | ((value & 0x007FFFFF) >> 3); fpu_debug(("make_single (%X) = %.04f\n",value,(double)result)); return(result); #endif } // from_single PRIVATE inline uae_u32 FFPU extract_single(fpu_register const & src) { #if 1 fpu_single input = (fpu_single) src; fp_declare_init_shape(sip, single); sip.value = input; uae_u32 result = (sip.ieee.negative << 31) | (sip.ieee.exponent << 23) | sip.ieee.mantissa; fpu_debug(("extract_single (%.04f) = %X\n",(double)src,result)); return result; #elif 0 /* Original code */ if (src == 0.0) return 0; uae_u32 result; fpu_register_parts const *p = (fpu_register_parts const *)&src; uae_u32 sign = (p->parts[FHI] & 0x80000000); uae_u32 exp = (p->parts[FHI] & 0x7FF00000) >> 20; if(exp + 127 < 1023) { exp = 0; } else if(exp > 1023 + 127) { exp = 255; } else { exp = exp + 127 - 1023; } result = sign | (exp << 23) | ((p->parts[FHI] & 0x000FFFFF) << 3) | (p->parts[FLO] >> 29); fpu_debug(("extract_single (%.04f) = %X\n",(double)src,result)); return (result); #endif } // to_exten PRIVATE inline fpu_register FFPU make_extended(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3) { // is it zero? if ((wrd1 & 0x7fff0000) == 0 && wrd2 == 0 && wrd3 == 0) return (wrd1 & 0x80000000) ? -0.0 : 0.0; fpu_register result; #if defined(USE_QUAD_DOUBLE) // is it NaN? if ((wrd1 & 0x7fff0000) == 0x7fff0000 && ((wrd2 & 0x7fffffff) != 0 || wrd3 != 0)) { make_nan(result, (wrd1 & 0x80000000) != 0); return result; } // is it inf? if ((wrd1 & 0x7ffff000) == 0x7fff0000 && (wrd2 & 0x7fffffff) == 0 && wrd3 == 0) { make_inf(result, (wrd1 & 0x80000000) != 0); return result; } fp_declare_init_shape(srp, extended); srp.ieee.negative = (wrd1 >> 31) & 1; srp.ieee.exponent = (wrd1 >> 16) & FP_EXTENDED_EXP_MAX; srp.ieee.mantissa0 = (wrd2 >> 16) & 0xffff; srp.ieee.mantissa1 = ((wrd2 & 0xffff) << 16) | ((wrd3 >> 16) & 0xffff); srp.ieee.mantissa2 = (wrd3 & 0xffff) << 16; srp.ieee.mantissa3 = 0; #elif defined(USE_LONG_DOUBLE) fp_declare_init_shape(srp, extended); srp.ieee.negative = (wrd1 >> 31) & 1; srp.ieee.exponent = (wrd1 >> 16) & FP_EXTENDED_EXP_MAX; srp.ieee.mantissa0 = wrd2; srp.ieee.mantissa1 = wrd3; #else uae_u32 sgn = (wrd1 >> 31) & 1; uae_u32 exp = (wrd1 >> 16) & 0x7fff; // the explicit integer bit is not set, must normalize if ((wrd2 & 0x80000000) == 0) { fpu_debug(("make_extended denormalized mantissa (%X,%X,%X)\n",wrd1,wrd2,wrd3)); if (wrd2 | wrd3) { // mantissa, not fraction. uae_u64 man = ((uae_u64)wrd2 << 32) | wrd3; while (exp > 0 && (man & UVAL64(0x8000000000000000)) == 0) { man <<= 1; exp--; } wrd2 = (uae_u32)(man >> 32); wrd3 = (uae_u32)(man & 0xFFFFFFFF); } else if (exp != 0x7fff) // zero exp = FP_EXTENDED_EXP_BIAS - FP_DOUBLE_EXP_BIAS; } if (exp < FP_EXTENDED_EXP_BIAS - FP_DOUBLE_EXP_BIAS) exp = 0; else if (exp > FP_EXTENDED_EXP_BIAS + FP_DOUBLE_EXP_BIAS) exp = FP_DOUBLE_EXP_MAX; else exp += FP_DOUBLE_EXP_BIAS - FP_EXTENDED_EXP_BIAS; fp_declare_init_shape(srp, double); srp.ieee.negative = sgn; srp.ieee.exponent = exp; // drop the explicit integer bit srp.ieee.mantissa0 = (wrd2 & 0x7fffffff) >> 11; srp.ieee.mantissa1 = (wrd2 << 21) | (wrd3 >> 11); #endif result = srp.value; fpu_debug(("make_extended (%X,%X,%X) = %.04f\n",wrd1,wrd2,wrd3,(double)result)); return result; } /* Would be so much easier with full size floats :( ... this is so vague. */ // make_extended_no_normalize PRIVATE inline void FFPU make_extended_no_normalize( uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3, fpu_register & result ) { // is it zero? if ((wrd1 & 0x7fff0000) == 0 && wrd2 == 0 && wrd3 == 0) { make_zero(result, (wrd1 & 0x80000000) != 0); return; } // is it NaN? if ((wrd1 & 0x7fff0000) == 0x7fff0000 && ((wrd2 & 0x7fffffff) != 0 || wrd3 != 0)) { make_nan(result, (wrd1 & 0x80000000) != 0); return; } #if defined(USE_QUAD_DOUBLE) // is it inf? if ((wrd1 & 0x7ffff000) == 0x7fff0000 && (wrd2 & 0x7fffffff) == 0 && wrd3 == 0) { make_inf(result, (wrd1 & 0x80000000) != 0); return; } fp_declare_init_shape(srp, extended); srp.ieee.negative = (wrd1 >> 31) & 1; srp.ieee.exponent = (wrd1 >> 16) & FP_EXTENDED_EXP_MAX; srp.ieee.mantissa0 = (wrd2 >> 16) & 0xffff; srp.ieee.mantissa1 = ((wrd2 & 0xffff) << 16) | ((wrd3 >> 16) & 0xffff); srp.ieee.mantissa2 = (wrd3 & 0xffff) << 16; srp.ieee.mantissa3 = 0; #elif defined(USE_LONG_DOUBLE) fp_declare_init_shape(srp, extended); srp.ieee.negative = (wrd1 >> 31) & 1; srp.ieee.exponent = (wrd1 >> 16) & FP_EXTENDED_EXP_MAX; srp.ieee.mantissa0 = wrd2; srp.ieee.mantissa1 = wrd3; #else uae_u32 exp = (wrd1 >> 16) & 0x7fff; if (exp < FP_EXTENDED_EXP_BIAS - FP_DOUBLE_EXP_BIAS) exp = 0; else if (exp > FP_EXTENDED_EXP_BIAS + FP_DOUBLE_EXP_BIAS) exp = FP_DOUBLE_EXP_MAX; else exp += FP_DOUBLE_EXP_BIAS - FP_EXTENDED_EXP_BIAS; fp_declare_init_shape(srp, double); srp.ieee.negative = (wrd1 >> 31) & 1; srp.ieee.exponent = exp; // drop the explicit integer bit srp.ieee.mantissa0 = (wrd2 & 0x7fffffff) >> 11; srp.ieee.mantissa1 = (wrd2 << 21) | (wrd3 >> 11); #endif result = srp.value; fpu_debug(("make_extended (%X,%X,%X) = %.04f\n",wrd1,wrd2,wrd3,(double)result)); } // from_exten PRIVATE inline void FFPU extract_extended(fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3 ) { if (src == 0.0) { *wrd1 = *wrd2 = *wrd3 = 0; return; } #if defined(USE_QUAD_DOUBLE) // FIXME: deal with denormals? fp_declare_init_shape(srp, extended); srp.value = src; *wrd1 = (srp.ieee.negative << 31) | (srp.ieee.exponent << 16); // always set the explicit integer bit. *wrd2 = 0x80000000 | (srp.ieee.mantissa0 << 15) | ((srp.ieee.mantissa1 & 0xfffe0000) >> 17); *wrd3 = (srp.ieee.mantissa1 << 15) | ((srp.ieee.mantissa2 & 0xfffe0000) >> 17); #elif defined(USE_LONG_DOUBLE) fpu_register_parts p = { src }; #ifdef WORDS_BIGENDIAN *wrd1 = p.parts[0]; *wrd2 = p.parts[1]; *wrd3 = p.parts[2]; #else *wrd3 = p.parts[0]; *wrd2 = p.parts[1]; *wrd1 = (p.parts[2] & 0xffff) << 16; #endif #else fp_declare_init_shape(srp, double); srp.value = src; fpu_debug(("extract_extended (%d,%d,%X,%X)\n", srp.ieee.negative , srp.ieee.exponent, srp.ieee.mantissa0, srp.ieee.mantissa1)); uae_u32 exp = srp.ieee.exponent; if (exp == FP_DOUBLE_EXP_MAX) exp = FP_EXTENDED_EXP_MAX; else exp += FP_EXTENDED_EXP_BIAS - FP_DOUBLE_EXP_BIAS; *wrd1 = (srp.ieee.negative << 31) | (exp << 16); // always set the explicit integer bit. *wrd2 = 0x80000000 | (srp.ieee.mantissa0 << 11) | ((srp.ieee.mantissa1 & 0xffe00000) >> 21); *wrd3 = srp.ieee.mantissa1 << 11; #endif fpu_debug(("extract_extended (%.04f) = %X,%X,%X\n",(double)src,*wrd1,*wrd2,*wrd3)); } // to_double PRIVATE inline fpu_register FFPU make_double(uae_u32 wrd1, uae_u32 wrd2) { union { fpu_double value; uae_u32 parts[2]; } dest; #ifdef WORDS_BIGENDIAN dest.parts[0] = wrd1; dest.parts[1] = wrd2; #else dest.parts[0] = wrd2; dest.parts[1] = wrd1; #endif fpu_debug(("make_double (%X,%X) = %.04f\n",wrd1,wrd2,dest.value)); return (fpu_register)(dest.value); } // from_double PRIVATE inline void FFPU extract_double(fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2 ) { union { fpu_double value; uae_u32 parts[2]; } dest; dest.value = (fpu_double)src; #ifdef WORDS_BIGENDIAN *wrd1 = dest.parts[0]; *wrd2 = dest.parts[1]; #else *wrd2 = dest.parts[0]; *wrd1 = dest.parts[1]; #endif fpu_debug(("extract_double (%.04f) = %X,%X\n",(double)src,*wrd1,*wrd2)); } // to_pack PRIVATE inline fpu_register FFPU make_packed(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3) { fpu_register d; bool sm = (wrd1 & 0x80000000) != 0; bool se = (wrd1 & 0x40000000) != 0; int exp = (wrd1 & 0x7fff0000) >> 16; unsigned int dig; fpu_register pwr; if (exp == 0x7fff) { if ((wrd2 & 0x7fffffff) == 0 && wrd3 == 0) { make_inf(d, sm); } else { make_nan(d, sm); } return d; } dig = wrd1 & 0x0000000f; if (dig == 0 && wrd2 == 0 && wrd3 == 0) { make_zero(d, sm); return d; } /* * Convert the bcd exponent to binary by successive adds and * muls. Set the sign according to SE. Subtract 16 to compensate * for the mantissa which is to be interpreted as 17 integer * digits, rather than 1 integer and 16 fraction digits. * Note: this operation can never overflow. */ exp = ((wrd1 >> 24) & 0xf); exp = exp * 10 + ((wrd1 >> 20) & 0xf); exp = exp * 10 + ((wrd1 >> 16) & 0xf); if (se) exp = -exp; /* sub to compensate for shift of mant */ exp = exp - 16; /* * Convert the bcd mantissa to binary by successive * adds and muls. Set the sign according to SM. * The mantissa digits will be converted with the decimal point * assumed following the least-significant digit. * Note: this operation can never overflow. */ d = wrd1 & 0xf; d = (d * LD(10.0)) + ((wrd2 >> 28) & 0xf); d = (d * LD(10.0)) + ((wrd2 >> 24) & 0xf); d = (d * LD(10.0)) + ((wrd2 >> 20) & 0xf); d = (d * LD(10.0)) + ((wrd2 >> 16) & 0xf); d = (d * LD(10.0)) + ((wrd2 >> 12) & 0xf); d = (d * LD(10.0)) + ((wrd2 >> 8) & 0xf); d = (d * LD(10.0)) + ((wrd2 >> 4) & 0xf); d = (d * LD(10.0)) + ((wrd2 ) & 0xf); d = (d * LD(10.0)) + ((wrd3 >> 28) & 0xf); d = (d * LD(10.0)) + ((wrd3 >> 24) & 0xf); d = (d * LD(10.0)) + ((wrd3 >> 20) & 0xf); d = (d * LD(10.0)) + ((wrd3 >> 16) & 0xf); d = (d * LD(10.0)) + ((wrd3 >> 12) & 0xf); d = (d * LD(10.0)) + ((wrd3 >> 8) & 0xf); d = (d * LD(10.0)) + ((wrd3 >> 4) & 0xf); d = (d * LD(10.0)) + ((wrd3 ) & 0xf); /* Check the sign of the mant and make the value in fp0 the same sign. */ if (sm) d = -d; /* * Calculate power-of-ten factor from exponent. */ if (exp < 0) { exp = -exp; pwr = POWL(LD(10.0), exp); d = d / pwr; } else { pwr = POWL(LD(10.0), exp); d = d * pwr; } fpu_debug(("make_packed(%X,%X,%X) = %.04f\n",wrd1,wrd2,wrd3,(double)d)); return d; } // from_pack PRIVATE inline void FFPU extract_packed(fpu_register const & src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3) { fpu_register pwr; int exp; fpu_register d; bool sm, se; int dig; *wrd1 = *wrd2 = *wrd3 = 0; d = src; sm = false; if (isneg(src)) { d = -d; sm = true; } if (isnan(src)) { *wrd1 = sm ? 0xffff0000 : 0x7fff0000; *wrd2 = 0xffffffff; *wrd3 = 0xffffffff; return; } if (isinf(src)) { *wrd1 = sm ? 0xffff0000 : 0x7fff0000; *wrd2 = *wrd3 = 0; return; } if (iszero(src)) { *wrd1 = sm ? 0x80000000 : 0x00000000; *wrd2 = *wrd3 = 0; return; } sm = false; if (isneg(src)) { d = -d; sm = true; } exp = (int)floor(LOG10L(d)); se = false; if (exp < 0) { exp = -exp; se = true; pwr = POWL(LD(10.0), exp); d = d * pwr; } else { pwr = POWL(LD(10.0), exp); d = d / pwr; } dig = (int)d; d = LD(10) * (d - dig); *wrd1 |= dig; dig = (int)d; d = LD(10) * (d - dig); *wrd2 |= dig << 28; dig = (int)d; d = LD(10) * (d - dig); *wrd2 |= dig << 24; dig = (int)d; d = LD(10) * (d - dig); *wrd2 |= dig << 20; dig = (int)d; d = LD(10) * (d - dig); *wrd2 |= dig << 16; dig = (int)d; d = LD(10) * (d - dig); *wrd2 |= dig << 12; dig = (int)d; d = LD(10) * (d - dig); *wrd2 |= dig << 8; dig = (int)d; d = LD(10) * (d - dig); *wrd2 |= dig << 4; dig = (int)d; d = LD(10) * (d - dig); *wrd2 |= dig; dig = (int)d; d = LD(10) * (d - dig); *wrd3 |= dig << 28; dig = (int)d; d = LD(10) * (d - dig); *wrd3 |= dig << 24; dig = (int)d; d = LD(10) * (d - dig); *wrd3 |= dig << 20; dig = (int)d; d = LD(10) * (d - dig); *wrd3 |= dig << 16; dig = (int)d; d = LD(10) * (d - dig); *wrd3 |= dig << 12; dig = (int)d; d = LD(10) * (d - dig); *wrd3 |= dig << 8; dig = (int)d; d = LD(10) * (d - dig); *wrd3 |= dig << 4; dig = (int)d; *wrd3 |= dig; dig = (exp / 100) % 10; *wrd1 |= dig << 24; dig = (exp / 10) % 10; *wrd1 |= dig << 20; dig = (exp) % 10; *wrd1 |= dig << 16; if (sm) *wrd1 |= 0x80000000; if (se) *wrd1 |= 0x40000000; fpu_debug(("extract_packed(%.04f) = %X,%X,%X\n",(double)src,*wrd1,*wrd2,*wrd3)); } PRIVATE inline int FFPU get_fp_value (uae_u32 opcode, uae_u16 extra, fpu_register & src) { uaecptr tmppc; uae_u16 tmp; int size; int mode; int reg; uae_u32 ad = 0; static int sz1[8] = {4, 4, 12, 12, 2, 8, 1, 0}; static int sz2[8] = {4, 4, 12, 12, 2, 8, 2, 0}; // fpu_debug(("get_fp_value(%X,%X)\n",(int)opcode,(int)extra)); // dump_first_bytes( regs.pc_p-4, 16 ); if ((extra & 0x4000) == 0) { src = FPU registers[(extra >> 10) & 7]; return 1; } mode = (opcode >> 3) & 7; reg = opcode & 7; size = (extra >> 10) & 7; fpu_debug(("get_fp_value mode=%d, reg=%d, size=%d\n",(int)mode,(int)reg,(int)size)); switch (mode) { case 0: switch (size) { case 6: src = (fpu_register) (uae_s8) m68k_dreg (regs, reg); break; case 4: src = (fpu_register) (uae_s16) m68k_dreg (regs, reg); break; case 0: src = (fpu_register) (uae_s32) m68k_dreg (regs, reg); break; case 1: src = make_single(m68k_dreg (regs, reg)); break; default: return 0; } return 1; case 1: return 0; case 2: ad = m68k_areg (regs, reg); break; case 3: ad = m68k_areg (regs, reg); break; case 4: ad = m68k_areg (regs, reg) - (reg == 7 ? sz2[size] : sz1[size]); break; case 5: ad = m68k_areg (regs, reg) + (uae_s32) (uae_s16) next_iword(); break; case 6: ad = get_disp_ea_020 (m68k_areg (regs, reg), next_iword()); break; case 7: switch (reg) { case 0: ad = (uae_s32) (uae_s16) next_iword(); break; case 1: ad = next_ilong(); break; case 2: ad = m68k_getpc (); ad += (uae_s32) (uae_s16) next_iword(); fpu_debug(("get_fp_value next_iword()=%X\n",ad-m68k_getpc()-2)); break; case 3: tmppc = m68k_getpc (); tmp = (uae_u16)next_iword(); ad = get_disp_ea_020 (tmppc, tmp); break; case 4: ad = m68k_getpc (); m68k_setpc (ad + sz2[size]); // Immediate addressing mode && Operation Length == Byte -> // Use the low-order byte of the extension word. if(size == 6) ad++; break; default: return 0; } } fpu_debug(("get_fp_value m68k_getpc()=%X\n",m68k_getpc())); fpu_debug(("get_fp_value ad=%X\n",ad)); fpu_debug(("get_fp_value get_long (ad)=%X\n",get_long (ad))); //dump_first_bytes( get_real_address(ad, 0, 0)-64, 64 ); //dump_first_bytes( get_real_address(ad, 0, 0), 64 ); switch (size) { case 0: src = (fpu_register) (uae_s32) get_long (ad); break; case 1: src = make_single(get_long (ad)); break; case 2: { uae_u32 wrd1, wrd2, wrd3; wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); ad += 4; wrd3 = get_long (ad); src = make_extended(wrd1, wrd2, wrd3); break; } case 3: { uae_u32 wrd1, wrd2, wrd3; wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); ad += 4; wrd3 = get_long (ad); src = make_packed(wrd1, wrd2, wrd3); break; } case 4: src = (fpu_register) (uae_s16) get_word(ad); break; case 5: { uae_u32 wrd1, wrd2; wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); src = make_double(wrd1, wrd2); break; } case 6: src = (fpu_register) (uae_s8) get_byte(ad); break; default: return 0; } switch (mode) { case 3: m68k_areg (regs, reg) += reg == 7 ? sz2[size] : sz1[size]; break; case 4: m68k_areg (regs, reg) -= reg == 7 ? sz2[size] : sz1[size]; break; } // fpu_debug(("get_fp_value result = %.04f\n",(float)src)); return 1; } /* Convert the FP value to integer according to the current m68k rounding mode */ PRIVATE inline fpu_register FFPU fp_doround(fpu_register const & src) { fpu_register result; switch (get_fpcr() & FPCR_ROUNDING_MODE) { case FPCR_ROUND_ZERO: result = fp_round_to_zero(src); break; case FPCR_ROUND_MINF: result = fp_round_to_minus_infinity(src); break; case FPCR_ROUND_NEAR: result = fp_round_to_nearest(src); break; case FPCR_ROUND_PINF: result = fp_round_to_plus_infinity(src); break; default: result = src; /* should never be reached */ break; } return result; } PRIVATE inline uae_s32 FFPU toint(fpu_register const & src) { return (uae_s32)fp_doround(src); } PRIVATE inline int FFPU put_fp_value (uae_u32 opcode, uae_u16 extra, fpu_register const & value) { uae_u16 tmp; uaecptr tmppc; int size; int mode; int reg; uae_u32 ad; static int sz1[8] = {4, 4, 12, 12, 2, 8, 1, 0}; static int sz2[8] = {4, 4, 12, 12, 2, 8, 2, 0}; // fpu_debug(("put_fp_value(%.04f,%X,%X)\n",(float)value,(int)opcode,(int)extra)); if ((extra & 0x4000) == 0) { int dest_reg = (extra >> 10) & 7; FPU registers[dest_reg] = value; make_fpsr(FPU registers[dest_reg]); return 1; } mode = (opcode >> 3) & 7; reg = opcode & 7; size = (extra >> 10) & 7; ad = 0xffffffff; switch (mode) { case 0: switch (size) { case 6: m68k_dreg (regs, reg) = ((toint(value) & 0xff) | (m68k_dreg (regs, reg) & ~0xff)); break; case 4: m68k_dreg (regs, reg) = ((toint(value) & 0xffff) | (m68k_dreg (regs, reg) & ~0xffff)); break; case 0: m68k_dreg (regs, reg) = toint(value); break; case 1: m68k_dreg (regs, reg) = extract_single(value); break; default: return 0; } return 1; case 1: return 0; case 2: ad = m68k_areg (regs, reg); break; case 3: ad = m68k_areg (regs, reg); m68k_areg (regs, reg) += reg == 7 ? sz2[size] : sz1[size]; break; case 4: m68k_areg (regs, reg) -= reg == 7 ? sz2[size] : sz1[size]; ad = m68k_areg (regs, reg); break; case 5: ad = m68k_areg (regs, reg) + (uae_s32) (uae_s16) next_iword(); break; case 6: ad = get_disp_ea_020 (m68k_areg (regs, reg), next_iword()); break; case 7: switch (reg) { case 0: ad = (uae_s32) (uae_s16) next_iword(); break; case 1: ad = next_ilong(); break; case 2: ad = m68k_getpc (); ad += (uae_s32) (uae_s16) next_iword(); break; case 3: tmppc = m68k_getpc (); tmp = (uae_u16)next_iword(); ad = get_disp_ea_020 (tmppc, tmp); break; case 4: ad = m68k_getpc (); m68k_setpc (ad + sz2[size]); break; default: return 0; } } switch (size) { case 0: put_long (ad, toint(value)); break; case 1: put_long (ad, extract_single(value)); break; case 2: { uae_u32 wrd1, wrd2, wrd3; extract_extended(value, &wrd1, &wrd2, &wrd3); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); ad += 4; put_long (ad, wrd3); break; } case 3: { uae_u32 wrd1, wrd2, wrd3; extract_packed(value, &wrd1, &wrd2, &wrd3); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); ad += 4; put_long (ad, wrd3); break; } case 4: put_word(ad, (uae_s16) toint(value)); break; case 5: { uae_u32 wrd1, wrd2; extract_double(value, &wrd1, &wrd2); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); break; } case 6: put_byte(ad, (uae_s8) toint(value)); break; default: return 0; } return 1; } PRIVATE inline int FFPU get_fp_ad(uae_u32 opcode, uae_u32 * ad) { uae_u16 tmp; uaecptr tmppc; int mode; int reg; mode = (opcode >> 3) & 7; reg = opcode & 7; switch (mode) { case 0: case 1: return 0; case 2: *ad = m68k_areg (regs, reg); break; case 3: *ad = m68k_areg (regs, reg); break; case 4: *ad = m68k_areg (regs, reg); break; case 5: *ad = m68k_areg (regs, reg) + (uae_s32) (uae_s16) next_iword(); break; case 6: *ad = get_disp_ea_020 (m68k_areg (regs, reg), next_iword()); break; case 7: switch (reg) { case 0: *ad = (uae_s32) (uae_s16) next_iword(); break; case 1: *ad = next_ilong(); break; case 2: *ad = m68k_getpc (); *ad += (uae_s32) (uae_s16) next_iword(); break; case 3: tmppc = m68k_getpc (); tmp = (uae_u16)next_iword(); *ad = get_disp_ea_020 (tmppc, tmp); break; default: return 0; } } return 1; } #if FPU_DEBUG # define CONDRET(s,x) fpu_debug(("fpp_cond %s = %d\n",s,(uint32)(x))); return (x) #else # define CONDRET(s,x) return (x) #endif PRIVATE inline int FFPU fpp_cond(int condition) { int N = (FPU result < 0.0); int Z = (FPU result == 0.0); int NaN = isnan(FPU result); if (NaN) N = Z = 0; switch (condition & 0x1f) { case 0x00: CONDRET("False",0); case 0x01: CONDRET("Equal",Z); case 0x02: CONDRET("Ordered Greater Than",!(NaN || Z || N)); case 0x03: CONDRET("Ordered Greater Than or Equal",Z || !(NaN || N)); case 0x04: CONDRET("Ordered Less Than",N && !(NaN || Z)); case 0x05: CONDRET("Ordered Less Than or Equal",Z || (N && !NaN)); case 0x06: CONDRET("Ordered Greater or Less Than",!(NaN || Z)); case 0x07: CONDRET("Ordered",!NaN); case 0x08: CONDRET("Unordered",NaN); case 0x09: CONDRET("Unordered or Equal",NaN || Z); case 0x0a: CONDRET("Unordered or Greater Than",NaN || !(N || Z)); case 0x0b: CONDRET("Unordered or Greater or Equal",NaN || Z || !N); case 0x0c: CONDRET("Unordered or Less Than",NaN || (N && !Z)); case 0x0d: CONDRET("Unordered or Less or Equal",NaN || Z || N); case 0x0e: CONDRET("Not Equal",!Z); case 0x0f: CONDRET("True",1); case 0x10: CONDRET("Signaling False",0); case 0x11: CONDRET("Signaling Equal",Z); case 0x12: CONDRET("Greater Than",!(NaN || Z || N)); case 0x13: CONDRET("Greater Than or Equal",Z || !(NaN || N)); case 0x14: CONDRET("Less Than",N && !(NaN || Z)); case 0x15: CONDRET("Less Than or Equal",Z || (N && !NaN)); case 0x16: CONDRET("Greater or Less Than",!(NaN || Z)); case 0x17: CONDRET("Greater, Less or Equal",!NaN); case 0x18: CONDRET("Not Greater, Less or Equal",NaN); case 0x19: CONDRET("Not Greater or Less Than",NaN || Z); case 0x1a: CONDRET("Not Less Than or Equal",NaN || !(N || Z)); case 0x1b: CONDRET("Not Less Than",NaN || Z || !N); case 0x1c: CONDRET("Not Greater Than or Equal", NaN || (N && !Z)); case 0x1d: CONDRET("Not Greater Than",NaN || Z || N); case 0x1e: CONDRET("Signaling Not Equal",!Z); case 0x1f: CONDRET("Signaling True",1); default: CONDRET("",-1); } } void FFPU fpuop_dbcc(uae_u32 opcode, uae_u32 extra) { fpu_debug(("fdbcc_opp %X, %X at %08lx\n", (uae_u32)opcode, (uae_u32)extra, m68k_getpc ())); uaecptr pc = (uae_u32) m68k_getpc (); uae_s32 disp = (uae_s32) (uae_s16) next_iword(); int cc = fpp_cond(extra & 0x3f); if (cc == -1) { m68k_setpc (pc - 4); op_illg (opcode); } else if (!cc) { int reg = opcode & 0x7; // this may have leaked. /* m68k_dreg (regs, reg) = ((m68k_dreg (regs, reg) & ~0xffff) | ((m68k_dreg (regs, reg) - 1) & 0xffff)); */ m68k_dreg (regs, reg) = ((m68k_dreg (regs, reg) & 0xffff0000) | (((m68k_dreg (regs, reg) & 0xffff) - 1) & 0xffff)); // condition reversed. // if ((m68k_dreg (regs, reg) & 0xffff) == 0xffff) if ((m68k_dreg (regs, reg) & 0xffff) != 0xffff) m68k_setpc (pc + disp); } } void FFPU fpuop_scc(uae_u32 opcode, uae_u32 extra) { fpu_debug(("fscc_opp %X, %X at %08lx\n", (uae_u32)opcode, (uae_u32)extra, m68k_getpc ())); uae_u32 ad = 0; int cc = fpp_cond(extra & 0x3f); if (cc == -1) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); } else if ((opcode & 0x38) == 0) { m68k_dreg (regs, opcode & 7) = (m68k_dreg (regs, opcode & 7) & ~0xff) | (cc ? 0xff : 0x00); } else if (get_fp_ad(opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); } else put_byte(ad, cc ? 0xff : 0x00); } void FFPU fpuop_trapcc(uae_u32 opcode, uaecptr oldpc, uae_u32 extra) { fpu_debug(("ftrapcc_opp %X, %X at %08lx\n", (uae_u32)opcode, (uae_u32)extra, m68k_getpc ())); int cc = fpp_cond(extra & 0x3f); if (cc == -1) { m68k_setpc (oldpc); op_illg (opcode); } if (cc) Exception(7, oldpc - 2); } // NOTE that we get here also when there is a FNOP (nontrapping false, displ 0) void FFPU fpuop_bcc(uae_u32 opcode, uaecptr pc, uae_u32 extra) { fpu_debug(("fbcc_opp %X, %X at %08lx, jumpto=%X\n", (uae_u32)opcode, (uae_u32)extra, m68k_getpc (), extra )); int cc = fpp_cond(opcode & 0x3f); if (cc == -1) { m68k_setpc (pc); op_illg (opcode); } else if (cc) { if ((opcode & 0x40) == 0) extra = (uae_s32) (uae_s16) extra; m68k_setpc (pc + extra); } } // FSAVE has no post-increment // 0x1f180000 == IDLE state frame, coprocessor version number 1F void FFPU fpuop_save(uae_u32 opcode) { fpu_debug(("fsave_opp at %08lx\n", m68k_getpc ())); uae_u32 ad = 0; int incr = (opcode & 0x38) == 0x20 ? -1 : 1; int i; if (get_fp_ad(opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 2); op_illg (opcode); return; } if (CPUType == 4) { // Put 4 byte 68040 IDLE frame. if (incr < 0) { ad -= 4; put_long (ad, 0x41000000); } else { put_long (ad, 0x41000000); ad += 4; } } else { // Put 28 byte 68881 IDLE frame. if (incr < 0) { fpu_debug(("fsave_opp pre-decrement\n")); ad -= 4; // What's this? Some BIU flags, or (incorrectly placed) command/condition? put_long (ad, 0x70000000); for (i = 0; i < 5; i++) { ad -= 4; put_long (ad, 0x00000000); } ad -= 4; put_long (ad, 0x1f180000); // IDLE, vers 1f } else { put_long (ad, 0x1f180000); // IDLE, vers 1f ad += 4; for (i = 0; i < 5; i++) { put_long (ad, 0x00000000); ad += 4; } // What's this? Some BIU flags, or (incorrectly placed) command/condition? put_long (ad, 0x70000000); ad += 4; } } if ((opcode & 0x38) == 0x18) { m68k_areg (regs, opcode & 7) = ad; // Never executed on a 68881 fpu_debug(("PROBLEM: fsave_opp post-increment\n")); } if ((opcode & 0x38) == 0x20) { m68k_areg (regs, opcode & 7) = ad; fpu_debug(("fsave_opp pre-decrement %X -> A%d\n",ad,opcode & 7)); } } // FRESTORE has no pre-decrement void FFPU fpuop_restore(uae_u32 opcode) { fpu_debug(("frestore_opp at %08lx\n", m68k_getpc ())); uae_u32 ad = 0; uae_u32 d; int incr = (opcode & 0x38) == 0x20 ? -1 : 1; if (get_fp_ad(opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 2); op_illg (opcode); return; } if (CPUType == 4) { // 68040 if (incr < 0) { fpu_debug(("PROBLEM: frestore_opp incr < 0\n")); // this may be wrong, but it's never called. ad -= 4; d = get_long (ad); if ((d & 0xff000000) != 0) { // Not a NULL frame? if ((d & 0x00ff0000) == 0) { // IDLE fpu_debug(("frestore_opp found IDLE frame at %X\n",ad-4)); } else if ((d & 0x00ff0000) == 0x00300000) { // UNIMP fpu_debug(("PROBLEM: frestore_opp found UNIMP frame at %X\n",ad-4)); ad -= 44; } else if ((d & 0x00ff0000) == 0x00600000) { // BUSY fpu_debug(("PROBLEM: frestore_opp found BUSY frame at %X\n",ad-4)); ad -= 92; } } } else { d = get_long (ad); fpu_debug(("frestore_opp frame at %X = %X\n",ad,d)); ad += 4; if ((d & 0xff000000) != 0) { // Not a NULL frame? if ((d & 0x00ff0000) == 0) { // IDLE fpu_debug(("frestore_opp found IDLE frame at %X\n",ad-4)); } else if ((d & 0x00ff0000) == 0x00300000) { // UNIMP fpu_debug(("PROBLEM: frestore_opp found UNIMP frame at %X\n",ad-4)); ad += 44; } else if ((d & 0x00ff0000) == 0x00600000) { // BUSY fpu_debug(("PROBLEM: frestore_opp found BUSY frame at %X\n",ad-4)); ad += 92; } } } } else { // 68881 if (incr < 0) { fpu_debug(("PROBLEM: frestore_opp incr < 0\n")); // this may be wrong, but it's never called. ad -= 4; d = get_long (ad); if ((d & 0xff000000) != 0) { if ((d & 0x00ff0000) == 0x00180000) ad -= 6 * 4; else if ((d & 0x00ff0000) == 0x00380000) ad -= 14 * 4; else if ((d & 0x00ff0000) == 0x00b40000) ad -= 45 * 4; } } else { d = get_long (ad); fpu_debug(("frestore_opp frame at %X = %X\n",ad,d)); ad += 4; if ((d & 0xff000000) != 0) { // Not a NULL frame? if ((d & 0x00ff0000) == 0x00180000) { // IDLE fpu_debug(("frestore_opp found IDLE frame at %X\n",ad-4)); ad += 6 * 4; } else if ((d & 0x00ff0000) == 0x00380000) {// UNIMP? shouldn't it be 3C? ad += 14 * 4; fpu_debug(("PROBLEM: frestore_opp found UNIMP? frame at %X\n",ad-4)); } else if ((d & 0x00ff0000) == 0x00b40000) {// BUSY fpu_debug(("PROBLEM: frestore_opp found BUSY frame at %X\n",ad-4)); ad += 45 * 4; } } } } if ((opcode & 0x38) == 0x18) { m68k_areg (regs, opcode & 7) = ad; fpu_debug(("frestore_opp post-increment %X -> A%d\n",ad,opcode & 7)); } if ((opcode & 0x38) == 0x20) { m68k_areg (regs, opcode & 7) = ad; // Never executed on a 68881 fpu_debug(("PROBLEM: frestore_opp pre-decrement\n")); } } void FFPU fpuop_arithmetic(uae_u32 opcode, uae_u32 extra) { int reg; fpu_register src; fpu_debug(("FPP %04lx %04x at %08lx\n", opcode & 0xffff, extra & 0xffff, m68k_getpc () - 4)); dump_registers( "START"); switch ((extra >> 13) & 0x7) { case 3: fpu_debug(("FMOVE -> \n")); if (put_fp_value (opcode, extra, FPU registers[(extra >> 7) & 7]) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); } dump_registers( "END "); return; case 4: case 5: if ((opcode & 0x38) == 0) { if (extra & 0x2000) { // dr bit if (extra & 0x1000) { m68k_dreg (regs, opcode & 7) = get_fpcr(); fpu_debug(("FMOVEM FPU fpcr (%X) -> D%d\n", get_fpcr(), opcode & 7)); } if (extra & 0x0800) { m68k_dreg (regs, opcode & 7) = get_fpsr(); fpu_debug(("FMOVEM FPU fpsr (%X) -> D%d\n", get_fpsr(), opcode & 7)); } if (extra & 0x0400) { m68k_dreg (regs, opcode & 7) = FPU instruction_address; fpu_debug(("FMOVEM FPU instruction_address (%X) -> D%d\n", FPU instruction_address, opcode & 7)); } } else { if (extra & 0x1000) { set_fpcr( m68k_dreg (regs, opcode & 7) ); fpu_debug(("FMOVEM D%d (%X) -> FPU fpcr\n", opcode & 7, get_fpcr())); } if (extra & 0x0800) { set_fpsr( m68k_dreg (regs, opcode & 7) ); fpu_debug(("FMOVEM D%d (%X) -> FPU fpsr\n", opcode & 7, get_fpsr())); } if (extra & 0x0400) { FPU instruction_address = m68k_dreg (regs, opcode & 7); fpu_debug(("FMOVEM D%d (%X) -> FPU instruction_address\n", opcode & 7, FPU instruction_address)); } } } else if ((opcode & 0x38) == 8) { if (extra & 0x2000) { // dr bit if (extra & 0x1000) { m68k_areg (regs, opcode & 7) = get_fpcr(); fpu_debug(("FMOVEM FPU fpcr (%X) -> A%d\n", get_fpcr(), opcode & 7)); } if (extra & 0x0800) { m68k_areg (regs, opcode & 7) = get_fpsr(); fpu_debug(("FMOVEM FPU fpsr (%X) -> A%d\n", get_fpsr(), opcode & 7)); } if (extra & 0x0400) { m68k_areg (regs, opcode & 7) = FPU instruction_address; fpu_debug(("FMOVEM FPU instruction_address (%X) -> A%d\n", FPU instruction_address, opcode & 7)); } } else { if (extra & 0x1000) { set_fpcr( m68k_areg (regs, opcode & 7) ); fpu_debug(("FMOVEM A%d (%X) -> FPU fpcr\n", opcode & 7, get_fpcr())); } if (extra & 0x0800) { set_fpsr( m68k_areg (regs, opcode & 7) ); fpu_debug(("FMOVEM A%d (%X) -> FPU fpsr\n", opcode & 7, get_fpsr())); } if (extra & 0x0400) { FPU instruction_address = m68k_areg (regs, opcode & 7); fpu_debug(("FMOVEM A%d (%X) -> FPU instruction_address\n", opcode & 7, FPU instruction_address)); } } } else if ((opcode & 0x3f) == 0x3c) { if ((extra & 0x2000) == 0) { if (extra & 0x1000) { set_fpcr( next_ilong() ); fpu_debug(("FMOVEM #<%X> -> FPU fpcr\n", get_fpcr())); } if (extra & 0x0800) { set_fpsr( next_ilong() ); fpu_debug(("FMOVEM #<%X> -> FPU fpsr\n", get_fpsr())); } if (extra & 0x0400) { FPU instruction_address = next_ilong(); fpu_debug(("FMOVEM #<%X> -> FPU instruction_address\n", FPU instruction_address)); } } } else if (extra & 0x2000) { /* FMOVEM FPP->memory */ uae_u32 ad = 0; int incr = 0; if (get_fp_ad(opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } if ((opcode & 0x38) == 0x20) { if (extra & 0x1000) incr += 4; if (extra & 0x0800) incr += 4; if (extra & 0x0400) incr += 4; } ad -= incr; if (extra & 0x1000) { put_long (ad, get_fpcr()); fpu_debug(("FMOVEM FPU fpcr (%X) -> mem %X\n", get_fpcr(), ad )); ad += 4; } if (extra & 0x0800) { put_long (ad, get_fpsr()); fpu_debug(("FMOVEM FPU fpsr (%X) -> mem %X\n", get_fpsr(), ad )); ad += 4; } if (extra & 0x0400) { put_long (ad, FPU instruction_address); fpu_debug(("FMOVEM FPU instruction_address (%X) -> mem %X\n", FPU instruction_address, ad )); ad += 4; } ad -= incr; if ((opcode & 0x38) == 0x18) // post-increment? m68k_areg (regs, opcode & 7) = ad; if ((opcode & 0x38) == 0x20) // pre-decrement? m68k_areg (regs, opcode & 7) = ad; } else { /* FMOVEM memory->FPP */ uae_u32 ad = 0; if (get_fp_ad(opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } // ad = (opcode & 0x38) == 0x20 ? ad - 12 : ad; int incr = 0; if((opcode & 0x38) == 0x20) { if (extra & 0x1000) incr += 4; if (extra & 0x0800) incr += 4; if (extra & 0x0400) incr += 4; ad = ad - incr; } if (extra & 0x1000) { set_fpcr( get_long (ad) ); fpu_debug(("FMOVEM mem %X (%X) -> FPU fpcr\n", ad, get_fpcr() )); ad += 4; } if (extra & 0x0800) { set_fpsr( get_long (ad) ); fpu_debug(("FMOVEM mem %X (%X) -> FPU fpsr\n", ad, get_fpsr() )); ad += 4; } if (extra & 0x0400) { FPU instruction_address = get_long (ad); fpu_debug(("FMOVEM mem %X (%X) -> FPU instruction_address\n", ad, FPU instruction_address )); ad += 4; } if ((opcode & 0x38) == 0x18) // post-increment? m68k_areg (regs, opcode & 7) = ad; if ((opcode & 0x38) == 0x20) // pre-decrement? // m68k_areg (regs, opcode & 7) = ad - 12; m68k_areg (regs, opcode & 7) = ad - incr; } dump_registers( "END "); return; case 6: case 7: { uae_u32 ad = 0, list = 0; int incr = 0; if (extra & 0x2000) { /* FMOVEM FPP->memory */ fpu_debug(("FMOVEM FPP->memory\n")); if (get_fp_ad(opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } switch ((extra >> 11) & 3) { case 0: /* static pred */ list = extra & 0xff; incr = -1; break; case 1: /* dynamic pred */ list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; incr = -1; break; case 2: /* static postinc */ list = extra & 0xff; incr = 1; break; case 3: /* dynamic postinc */ list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; incr = 1; break; } if (incr < 0) { for(reg=7; reg>=0; reg--) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { extract_extended(FPU registers[reg],&wrd1, &wrd2, &wrd3); ad -= 4; put_long (ad, wrd3); ad -= 4; put_long (ad, wrd2); ad -= 4; put_long (ad, wrd1); } list <<= 1; } } else { for(reg=0; reg<8; reg++) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { extract_extended(FPU registers[reg],&wrd1, &wrd2, &wrd3); put_long (ad, wrd1); ad += 4; put_long (ad, wrd2); ad += 4; put_long (ad, wrd3); ad += 4; } list <<= 1; } } if ((opcode & 0x38) == 0x18) // post-increment? m68k_areg (regs, opcode & 7) = ad; if ((opcode & 0x38) == 0x20) // pre-decrement? m68k_areg (regs, opcode & 7) = ad; } else { /* FMOVEM memory->FPP */ fpu_debug(("FMOVEM memory->FPP\n")); if (get_fp_ad(opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } switch ((extra >> 11) & 3) { case 0: /* static pred */ fpu_debug(("memory->FMOVEM FPP not legal mode.\n")); list = extra & 0xff; incr = -1; break; case 1: /* dynamic pred */ fpu_debug(("memory->FMOVEM FPP not legal mode.\n")); list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; incr = -1; break; case 2: /* static postinc */ list = extra & 0xff; incr = 1; break; case 3: /* dynamic postinc */ list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff; incr = 1; break; } /**/ if (incr < 0) { // not reached for(reg=7; reg>=0; reg--) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { ad -= 4; wrd3 = get_long (ad); ad -= 4; wrd2 = get_long (ad); ad -= 4; wrd1 = get_long (ad); // FPU registers[reg] = make_extended(wrd1, wrd2, wrd3); make_extended_no_normalize (wrd1, wrd2, wrd3, FPU registers[reg]); } list <<= 1; } } else { for(reg=0; reg<8; reg++) { uae_u32 wrd1, wrd2, wrd3; if( list & 0x80 ) { wrd1 = get_long (ad); ad += 4; wrd2 = get_long (ad); ad += 4; wrd3 = get_long (ad); ad += 4; // FPU registers[reg] = make_extended(wrd1, wrd2, wrd3); make_extended_no_normalize (wrd1, wrd2, wrd3, FPU registers[reg]); } list <<= 1; } } if ((opcode & 0x38) == 0x18) // post-increment? m68k_areg (regs, opcode & 7) = ad; if ((opcode & 0x38) == 0x20) // pre-decrement? m68k_areg (regs, opcode & 7) = ad; } dump_registers( "END "); return; } case 0: case 2: reg = (extra >> 7) & 7; if ((extra & 0xfc00) == 0x5c00) { fpu_debug(("FMOVECR memory->FPP\n")); switch (extra & 0x7f) { case 0x00: // FPU registers[reg] = 4.0 * atan(1.0); FPU registers[reg] = LD(3.1415926535897932384626433832795029); fpu_debug(("FP const: Pi\n")); break; case 0x0b: // FPU registers[reg] = log10 (2.0); FPU registers[reg] = LD(0.30102999566398119521); // 0.3010299956639811952137388947244930L fpu_debug(("FP const: Log 10 (2)\n")); break; case 0x0c: // FPU registers[reg] = exp (1.0); FPU registers[reg] = LD(2.7182818284590452353); // 2.7182818284590452353602874713526625L fpu_debug(("FP const: e\n")); break; case 0x0d: // FPU registers[reg] = log (exp (1.0)) / log (2.0); FPU registers[reg] = LD(1.4426950408889634073599246810019); fpu_debug(("FP const: Log 2 (e)\n")); break; case 0x0e: // FPU registers[reg] = log (exp (1.0)) / log (10.0); FPU registers[reg] = LD(0.4342944819032518276511289189166051); fpu_debug(("FP const: Log 10 (e)\n")); break; case 0x0f: FPU registers[reg] = 0.0; fpu_debug(("FP const: zero\n")); break; case 0x30: // FPU registers[reg] = log (2.0); FPU registers[reg] = LD(0.6931471805599453094172321214581766); fpu_debug(("FP const: ln(2)\n")); break; case 0x31: // FPU registers[reg] = log (10.0); FPU registers[reg] = LD(2.3025850929940456840179914546843642); fpu_debug(("FP const: ln(10)\n")); break; case 0x32: FPU registers[reg] = LD(1.0e0); fpu_debug(("FP const: 1.0e0\n")); break; case 0x33: FPU registers[reg] = LD(1.0e1); fpu_debug(("FP const: 1.0e1\n")); break; case 0x34: FPU registers[reg] = LD(1.0e2); fpu_debug(("FP const: 1.0e2\n")); break; case 0x35: FPU registers[reg] = LD(1.0e4); fpu_debug(("FP const: 1.0e4\n")); break; case 0x36: FPU registers[reg] = LD(1.0e8); fpu_debug(("FP const: 1.0e8\n")); break; case 0x37: FPU registers[reg] = LD(1.0e16); fpu_debug(("FP const: 1.0e16\n")); break; case 0x38: FPU registers[reg] = LD(1.0e32); fpu_debug(("FP const: 1.0e32\n")); break; case 0x39: FPU registers[reg] = LD(1.0e64); fpu_debug(("FP const: 1.0e64\n")); break; case 0x3a: FPU registers[reg] = LD(1.0e128); fpu_debug(("FP const: 1.0e128\n")); break; case 0x3b: FPU registers[reg] = LD(1.0e256); fpu_debug(("FP const: 1.0e256\n")); break; #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) case 0x3c: FPU registers[reg] = LD(1.0e512); fpu_debug(("FP const: 1.0e512\n")); break; case 0x3d: FPU registers[reg] = LD(1.0e1024); fpu_debug(("FP const: 1.0e1024\n")); break; case 0x3e: FPU registers[reg] = LD(1.0e2048); fpu_debug(("FP const: 1.0e2048\n")); break; case 0x3f: FPU registers[reg] = LD(1.0e4096); fpu_debug(("FP const: 1.0e4096\n")); break; #else case 0x3c: case 0x3d: case 0x3e: case 0x3f: make_inf(FPU registers[reg], false); break; #endif default: m68k_setpc (m68k_getpc () - 4); op_illg (opcode); break; } // these *do* affect the status reg make_fpsr(FPU registers[reg]); dump_registers( "END "); return; } if (get_fp_value (opcode, extra, src) == 0) { m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); return; } fpu_debug(("returned from get_fp_value m68k_getpc()=%X\n",m68k_getpc())); if (FPU is_integral) { // 68040-specific operations switch (extra & 0x7f) { case 0x40: /* FSMOVE */ fpu_debug(("FSMOVE %.04f\n",(double)src)); FPU registers[reg] = (float)src; make_fpsr(FPU registers[reg]); break; case 0x44: /* FDMOVE */ fpu_debug(("FDMOVE %.04f\n",(double)src)); FPU registers[reg] = (double)src; make_fpsr(FPU registers[reg]); break; case 0x41: /* FSSQRT */ fpu_debug(("FSQRT %.04f\n",(double)src)); FPU registers[reg] = (float)fp_sqrt (src); make_fpsr(FPU registers[reg]); break; case 0x45: /* FDSQRT */ fpu_debug(("FSQRT %.04f\n",(double)src)); FPU registers[reg] = (double)fp_sqrt (src); make_fpsr(FPU registers[reg]); break; case 0x58: /* FSABS */ fpu_debug(("FSABS %.04f\n",(double)src)); FPU registers[reg] = (float)fp_fabs(src); make_fpsr(FPU registers[reg]); break; case 0x5c: /* FDABS */ fpu_debug(("FDABS %.04f\n",(double)src)); FPU registers[reg] = (double)fp_fabs(src); make_fpsr(FPU registers[reg]); break; case 0x5a: /* FSNEG */ fpu_debug(("FSNEG %.04f\n",(double)src)); FPU registers[reg] = (float)-src; make_fpsr(FPU registers[reg]); break; case 0x5e: /* FDNEG */ fpu_debug(("FDNEG %.04f\n",(double)src)); FPU registers[reg] = (double)-src; make_fpsr(FPU registers[reg]); break; case 0x60: /* FSDIV */ fpu_debug(("FSDIV %.04f\n",(double)src)); FPU registers[reg] = (float)(FPU registers[reg] / src); make_fpsr(FPU registers[reg]); break; case 0x64: /* FDDIV */ fpu_debug(("FDDIV %.04f\n",(double)src)); FPU registers[reg] = (double)(FPU registers[reg] / src); make_fpsr(FPU registers[reg]); break; case 0x62: /* FSADD */ fpu_debug(("FSADD %.04f\n",(double)src)); FPU registers[reg] = (float)(FPU registers[reg] + src); make_fpsr(FPU registers[reg]); break; case 0x66: /* FDADD */ fpu_debug(("FDADD %.04f\n",(double)src)); FPU registers[reg] = (double)(FPU registers[reg] + src); make_fpsr(FPU registers[reg]); break; case 0x68: /* FSSUB */ fpu_debug(("FSSUB %.04f\n",(double)src)); FPU registers[reg] = (float)(FPU registers[reg] - src); make_fpsr(FPU registers[reg]); break; case 0x6c: /* FDSUB */ fpu_debug(("FDSUB %.04f\n",(double)src)); FPU registers[reg] = (double)(FPU registers[reg] - src); make_fpsr(FPU registers[reg]); break; case 0x63: /* FSMUL */ case 0x67: /* FDMUL */ fpu_debug(("FMUL %.04f\n",(double)src)); get_dest_flags(FPU registers[reg]); get_source_flags(src); if (fl_dest.in_range && fl_source.in_range) { if ((extra & 0x7f) == 0x63) FPU registers[reg] = (float)(FPU registers[reg] * src); else FPU registers[reg] = (double)(FPU registers[reg] * src); } else if (fl_dest.nan || fl_source.nan || (fl_dest.zero && fl_source.infinity) || (fl_dest.infinity && fl_source.zero) ) { make_nan( FPU registers[reg], fl_dest.negative ); } else if (fl_dest.zero || fl_source.zero ) { make_zero(FPU registers[reg], fl_dest.negative != fl_source.negative); } else { make_inf(FPU registers[reg], fl_dest.negative != fl_source.negative); } make_fpsr(FPU registers[reg]); break; default: // Continue decode-execute 6888x instructions below goto process_6888x_instructions; } fpu_debug(("END m68k_getpc()=%X\n",m68k_getpc())); dump_registers( "END "); return; } process_6888x_instructions: switch (extra & 0x7f) { case 0x00: /* FMOVE */ fpu_debug(("FMOVE %.04f\n",(double)src)); FPU registers[reg] = src; make_fpsr(FPU registers[reg]); break; case 0x01: /* FINT */ /* * FIXME: in round-to-nearest, x87 * uses round-to-odd, but m68k round-to-even rule */ fpu_debug(("FINT %.04f\n",(double)src)); if (isinf(src)) FPU registers[reg] = src; else FPU registers[reg] = fp_doround(src); make_fpsr(FPU registers[reg]); break; case 0x02: /* FSINH */ fpu_debug(("FSINH %.04f\n",(double)src)); if (isinf(src)) FPU registers[reg] = src; else FPU registers[reg] = fp_sinh (src); make_fpsr(FPU registers[reg]); break; case 0x03: /* FINTRZ */ fpu_debug(("FINTRZ %.04f\n",(double)src)); if (isinf(src)) FPU registers[reg] = src; else FPU registers[reg] = fp_round_to_zero(src); make_fpsr(FPU registers[reg]); break; case 0x04: /* FSQRT */ fpu_debug(("FSQRT %.04f\n",(double)src)); if (isinf(src) && !isneg(src)) FPU registers[reg] = src; else FPU registers[reg] = fp_sqrt (src); make_fpsr(FPU registers[reg]); break; case 0x06: /* FLOGNP1 */ fpu_debug(("FLOGNP1 %.04f\n",(double)src)); if (isinf(src) && !isneg(src)) make_inf(FPU registers[reg], false); else FPU registers[reg] = fp_log1p (src); make_fpsr(FPU registers[reg]); break; case 0x08: /* FETOXM1 */ fpu_debug(("FETOXM1 %.04f\n",(double)src)); FPU registers[reg] = fp_expm1 (src); make_fpsr(FPU registers[reg]); break; case 0x09: /* FTANH */ fpu_debug(("FTANH %.04f\n",(double)src)); if (isinf(src)) FPU registers[reg] = isneg(src) ? LD(-1.0) : LD(1.0); else FPU registers[reg] = fp_tanh (src); make_fpsr(FPU registers[reg]); break; case 0x0a: /* FATAN */ fpu_debug(("FATAN %.04f\n",(double)src)); if (isinf(src)) FPU registers[reg] = isneg (src) ? LD(-1.570796326794896619231321691639751442) : LD(1.570796326794896619231321691639751442); else FPU registers[reg] = fp_atan (src); make_fpsr(FPU registers[reg]); break; case 0x0c: /* FASIN */ fpu_debug(("FASIN %.04f\n",(double)src)); FPU registers[reg] = fp_asin (src); make_fpsr(FPU registers[reg]); break; case 0x0d: /* FATANH */ fpu_debug(("FATANH %.04f\n",(double)src)); FPU registers[reg] = fp_atanh (src); make_fpsr(FPU registers[reg]); break; case 0x0e: /* FSIN */ fpu_debug(("FSIN %.04f\n",(double)src)); FPU registers[reg] = fp_sin (src); make_fpsr(FPU registers[reg]); break; case 0x0f: /* FTAN */ fpu_debug(("FTAN %.04f\n",(double)src)); FPU registers[reg] = fp_tan (src); make_fpsr(FPU registers[reg]); break; case 0x10: /* FETOX */ fpu_debug(("FETOX %.04f\n",(double)src)); if (isinf(src)) { make_zero(FPU registers[reg], isneg(src)); } else { FPU registers[reg] = fp_exp (src); } make_fpsr(FPU registers[reg]); break; case 0x11: /* FTWOTOX */ fpu_debug(("FTWOTOX %.04f\n",(double)src)); if (isinf(src)) { if (isneg(src)) make_zero(FPU registers[reg], false); else make_inf(FPU registers[reg], true); } else { FPU registers[reg] = fp_pow2(src); } make_fpsr(FPU registers[reg]); break; case 0x12: /* FTENTOX */ fpu_debug(("FTENTOX %.04f\n",(double)src)); if (isinf(src)) { if (isneg(src)) make_zero(FPU registers[reg], false); else make_inf(FPU registers[reg], true); } else { FPU registers[reg] = fp_pow10(src); } make_fpsr(FPU registers[reg]); break; case 0x14: /* FLOGN */ fpu_debug(("FLOGN %.04f\n",(double)src)); if (isinf(src) && !isneg(src)) make_inf(FPU registers[reg], false); else FPU registers[reg] = fp_log (src); make_fpsr(FPU registers[reg]); break; case 0x15: /* FLOG10 */ fpu_debug(("FLOG10 %.04f\n",(double)src)); if (isinf(src) && !isneg(src)) make_inf(FPU registers[reg], false); else FPU registers[reg] = fp_log10 (src); make_fpsr(FPU registers[reg]); break; case 0x16: /* FLOG2 */ fpu_debug(("FLOG2 %.04f\n",(double)src)); if (isinf(src) && !isneg(src)) make_inf(FPU registers[reg], false); else FPU registers[reg] = fp_log2 (src); make_fpsr(FPU registers[reg]); break; case 0x18: /* FABS */ fpu_debug(("FABS %.04f\n",(double)src)); FPU registers[reg] = fp_fabs(src); make_fpsr(FPU registers[reg]); break; case 0x19: /* FCOSH */ fpu_debug(("FCOSH %.04f\n",(double)src)); if (isinf(src)) { make_inf(FPU registers[reg], false); } else { FPU registers[reg] = fp_cosh(src); } make_fpsr(FPU registers[reg]); break; case 0x1a: /* FNEG */ fpu_debug(("FNEG %.04f\n",(double)src)); if (iszero(src)) make_zero(FPU registers[reg], !isneg(src)); else FPU registers[reg] = -src; make_fpsr(FPU registers[reg]); break; case 0x1c: /* FACOS */ fpu_debug(("FACOS %.04f\n",(double)src)); FPU registers[reg] = fp_acos(src); make_fpsr(FPU registers[reg]); break; case 0x1d: /* FCOS */ fpu_debug(("FCOS %.04f\n",(double)src)); FPU registers[reg] = fp_cos(src); make_fpsr(FPU registers[reg]); break; case 0x1e: /* FGETEXP */ fpu_debug(("FGETEXP %.04f\n",(double)src)); if( isinf(src) ) { make_nan( FPU registers[reg], isneg(src) ); } else if( iszero(src) ) { make_zero(FPU registers[reg], isneg(src)); } else { /* FIXME: subnormals not supported */ FPU registers[reg] = fast_fgetexp( src ); } make_fpsr(FPU registers[reg]); break; case 0x1f: /* FGETMAN */ fpu_debug(("FGETMAN %.04f\n",(double)src)); if( iszero(src)) { make_zero(FPU registers[reg], isneg(src)); } else if( isinf(src) || isnan(src) ) { make_nan( FPU registers[reg], 0 ); } else { FPU registers[reg] = src; fast_remove_exponent( FPU registers[reg] ); } make_fpsr(FPU registers[reg]); break; case 0x20: /* FDIV */ fpu_debug(("FDIV %.04f\n",(double)src)); if (isnan(src) || isnan(FPU registers[reg])) { make_nan(FPU registers[reg], false); } else if (isinf(src)) { if (isinf(FPU registers[reg])) make_nan(FPU registers[reg], false); else make_zero(FPU registers[reg], isneg(src) != isneg(FPU registers[reg])); } else if (isinf(FPU registers[reg])) { if (isinf(src)) make_nan(FPU registers[reg], false); else make_inf(FPU registers[reg], isneg(src) != isneg(FPU registers[reg])); } else if (iszero(FPU registers[reg]) && !iszero(src)) { make_zero(FPU registers[reg], isneg(FPU registers[reg]) != isneg(src)); } else { FPU registers[reg] /= src; } make_fpsr(FPU registers[reg]); break; case 0x21: /* FMOD */ fpu_debug(("FMOD %.04f\n",(double)src)); // FPU registers[reg] = FPU registers[reg] - (fpu_register) ((int) (FPU registers[reg] / src)) * src; { fpu_register quot = fp_round_to_zero(FPU registers[reg] / src); uae_u32 sign = get_quotient_sign(FPU registers[reg],src); FPU registers[reg] = FPU registers[reg] - quot * src; make_fpsr(FPU registers[reg]); make_quotient(quot, sign); } break; case 0x23: /* FMUL */ fpu_debug(("FMUL %.04f\n",(double)src)); get_dest_flags(FPU registers[reg]); get_source_flags(src); if (fl_dest.in_range && fl_source.in_range) { FPU registers[reg] *= src; if (unlikely(isinf(FPU registers[reg]))) { make_inf(FPU registers[reg], isneg(FPU registers[reg])); } } else if (fl_dest.nan || fl_source.nan || (fl_dest.zero && fl_source.infinity) || (fl_dest.infinity && fl_source.zero) ) { make_nan( FPU registers[reg], fl_dest.negative ); } else if (fl_dest.zero || fl_source.zero ) { make_zero(FPU registers[reg], fl_dest.negative != fl_source.negative); } else { make_inf(FPU registers[reg], fl_dest.negative != fl_source.negative); } make_fpsr(FPU registers[reg]); break; case 0x24: /* FSGLDIV */ fpu_debug(("FSGLDIV %.04f\n",(double)src)); FPU registers[reg] = (float)(FPU registers[reg] / src); make_fpsr(FPU registers[reg]); break; case 0x25: /* FREM */ fpu_debug(("FREM %.04f\n",(double)src)); // FPU registers[reg] = FPU registers[reg] - (double) ((int) (FPU registers[reg] / src + 0.5)) * src; { fpu_register quot = fp_round_to_nearest(FPU registers[reg] / src); uae_u32 sign = get_quotient_sign(FPU registers[reg],src); FPU registers[reg] = FPU registers[reg] - quot * src; make_fpsr(FPU registers[reg]); make_quotient(quot,sign); } break; case 0x26: /* FSCALE */ fpu_debug(("FSCALE %.04f\n",(double)src)); // TODO: overflow flags get_dest_flags(FPU registers[reg]); get_source_flags(src); if (fl_source.in_range && fl_dest.in_range) { // When the absolute value of the source operand is >= 2^14, // an overflow or underflow always results. // Here (int) cast is okay. int scale_factor = (int)fp_round_to_zero(src); #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fp_declare_init_shape(sxp, extended); sxp.value = FPU registers[reg]; int exp = sxp.ieee.exponent; exp += scale_factor; if (scale_factor >= FP_EXTENDED_EXP_MAX || exp >= FP_EXTENDED_EXP_MAX) /* overflow */ { make_inf(FPU registers[reg], isneg(FPU registers[reg])); FPU fpsr.exception_status |= FPSR_EXCEPTION_OVFL; } else if (scale_factor < -FP_EXTENDED_EXP_MAX || exp <= -64) /* underflow */ { make_zero(FPU registers[reg], isneg(FPU registers[reg])); FPU fpsr.exception_status |= FPSR_EXCEPTION_UNFL; } else if (exp >= 0) /* normal result */ { sxp.ieee.exponent = exp; FPU registers[reg] = sxp.value; } else /* subnormal result */ { exp += 64; sxp.ieee.exponent = exp; sxp.value = sxp.value * 5.421010862427522170037e-20L; /* 2^-64 */ } #else fp_declare_init_shape(sxp, double); sxp.value = FPU registers[reg]; uae_u32 exp = sxp.ieee.exponent + scale_factor; if (exp < FP_EXTENDED_EXP_BIAS - FP_DOUBLE_EXP_BIAS) exp = 0; else if (exp > FP_EXTENDED_EXP_BIAS + FP_DOUBLE_EXP_BIAS) exp = FP_DOUBLE_EXP_MAX; else exp += FP_DOUBLE_EXP_BIAS - FP_EXTENDED_EXP_BIAS; sxp.ieee.exponent = exp; FPU registers[reg] = sxp.value; #endif } else if (fl_source.infinity || fl_source.nan) { // Returns NaN for any Infinity source make_nan( FPU registers[reg], fl_source.negative ); } else { // source was zero, or dest was inf or nan // in either case, dest is unchanged } make_fpsr(FPU registers[reg]); break; case 0x27: /* FSGLMUL */ fpu_debug(("FSGLMUL %.04f\n",(double)src)); FPU registers[reg] = (float)(FPU registers[reg] * src); make_fpsr(FPU registers[reg]); break; case 0x28: /* FSUB */ fpu_debug(("FSUB %.04f\n",(double)src)); if (isnan(src) || isnan(FPU registers[reg])) { make_nan(FPU registers[reg], false); } else if (isinf(src)) { if (isinf(FPU registers[reg]) && isneg(src) == isneg(FPU registers[reg])) make_nan(FPU registers[reg], false); else make_inf(FPU registers[reg], isneg(src)); } else if (isinf(FPU registers[reg])) { if (isinf(src) && isneg(src) == isneg(FPU registers[reg])) make_nan(FPU registers[reg], false); else make_inf(FPU registers[reg], isneg(FPU registers[reg])); } else { FPU registers[reg] -= src; } make_fpsr(FPU registers[reg]); break; case 0x22: /* FADD */ fpu_debug(("FADD %.04f\n",(double)src)); /* * WTF. inf + some value generates NaN on x87, * but we need inf in most cases */ if (isnan(src) || isnan(FPU registers[reg])) { make_nan(FPU registers[reg], false); } else if (isinf(src)) { if (isinf(FPU registers[reg]) && isneg(src) != isneg(FPU registers[reg])) make_nan(FPU registers[reg], false); else make_inf(FPU registers[reg], isneg(src)); } else if (isinf(FPU registers[reg])) { if (isinf(src) && isneg(src) != isneg(FPU registers[reg])) make_nan(FPU registers[reg], false); else make_inf(FPU registers[reg], isneg(FPU registers[reg])); } else { FPU registers[reg] += src; } make_fpsr(FPU registers[reg]); break; case 0x30: /* FSINCOS */ case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: fpu_debug(("FSINCOS %.04f\n",(double)src)); // Cosine must be calculated first if same register // note: no need to use special sincos() function here; compiler will optimize that anyway FPU registers[extra & 7] = fp_cos(src); FPU registers[reg] = fp_sin (src); // Set FPU fpsr according to the sine result make_fpsr(FPU registers[reg]); break; case 0x38: /* FCMP */ fpu_debug(("FCMP %.04f\n",(double)src)); set_fpsr(0); if (isinf(FPU registers[reg])) { if (isinf(src) && isneg(FPU registers[reg]) == isneg (src)) make_fpsr(0); else make_fpsr(FPU registers[reg]); } else if (isinf(src)) make_fpsr(-src); else make_fpsr(FPU registers[reg] - src); break; case 0x3a: /* FTST */ fpu_debug(("FTST %.04f\n",(double)src)); set_fpsr(0); make_fpsr(src); break; default: fpu_debug(("ILLEGAL F OP %X\n",opcode)); m68k_setpc (m68k_getpc () - 4); op_illg (opcode); break; } fpu_debug(("END m68k_getpc()=%X\n",m68k_getpc())); dump_registers( "END "); return; } fpu_debug(("ILLEGAL F OP 2 %X\n",opcode)); m68k_setpc (m68k_getpc () - 4); op_illg (opcode); dump_registers( "END "); } void fpu_set_fpsr(uae_u32 new_fpsr) { set_fpsr(new_fpsr); } uae_u32 fpu_get_fpsr(void) { return get_fpsr(); } void fpu_set_fpcr(uae_u32 new_fpcr) { set_fpcr(new_fpcr); } uae_u32 fpu_get_fpcr(void) { return get_fpcr(); } /* -------------------------- Initialization -------------------------- */ PRIVATE uae_u8 m_fpu_state_original[108]; // 90/94/108 PUBLIC void FFPU fpu_init (bool integral_68040) { fpu_debug(("fpu_init\n")); static bool initialized_lookup_tables = false; if (!initialized_lookup_tables) { fpu_init_native_fflags(); fpu_init_native_exceptions(); fpu_init_native_accrued_exceptions(); initialized_lookup_tables = true; } FPU is_integral = integral_68040; FPU instruction_address = 0; FPU fpsr.quotient = 0; set_fpcr(0); set_fpsr(0); #if defined(FPU_USE_X86_ROUNDING) // Initial state after boot, reset and frestore(null frame) x86_control_word = CW_INITIAL; #elif defined(USE_X87_ASSEMBLY) volatile unsigned short int cw; __asm__ __volatile__("fnstcw %0" : "=m" (cw)); cw &= ~0x0300; cw |= 0x0300; // CW_PC_EXTENDED cw &= ~0x0C00; cw |= 0x0000; // CW_RC_NEAR __asm__ __volatile__("fldcw %0" : : "m" (cw)); #endif FPU result = 1; for (int i = 0; i < 8; i++) make_nan(FPU registers[i], false); } PUBLIC void FFPU fpu_exit (void) { fpu_debug(("fpu_exit\n")); } PUBLIC void FFPU fpu_reset (void) { fpu_debug(("fpu_reset\n")); fpu_exit(); fpu_init(FPU is_integral); } aranym-1.1.0/src/uae_cpu/fpu/fpu.h0000664000175000017500000000342613454637622015154 0ustar joyjoy/* * fpu/fpu.h - public header * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef FPU_PUBLIC_HEADER_H #define FPU_PUBLIC_HEADER_H #ifndef FPU_DEBUG #define FPU_DEBUG 0 #endif #if FPU_DEBUG #define fpu_debug(args) printf args; #define FPU_DUMP_REGISTERS 0 #define FPU_DUMP_FIRST_BYTES 0 #else #define fpu_debug(args) ; #undef FPU_DUMP_REGISTERS #undef FPU_DUMP_FIRST_BYTES #endif #include "sysdeps.h" #include "fpu/types.h" #include "fpu/core.h" void fpu_set_fpsr(uae_u32 new_fpsr); uae_u32 fpu_get_fpsr(void); void fpu_set_fpcr(uae_u32 new_fpcr); uae_u32 fpu_get_fpcr(void); #endif /* FPU_PUBLIC_HEADER_H */ aranym-1.1.0/src/uae_cpu/fpu/flags.h0000664000175000017500000001671313454637622015461 0ustar joyjoy/* * fpu/flags.h - Floating-point flags * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef FPU_FLAGS_H #define FPU_FLAGS_H /* NOTE: this file shall be included only from fpu/fpu_*.cpp */ #undef PUBLIC #define PUBLIC extern #undef PRIVATE #define PRIVATE static #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. /* Defaults to generic flags */ #define FPU_USE_GENERIC_FLAGS /* -------------------------------------------------------------------------- */ /* --- Selection of floating-point flags handling mode --- */ /* -------------------------------------------------------------------------- */ /* Optimized i386 fpu core must use native flags */ #if defined(FPU_X86) && defined(USE_X87_ASSEMBLY) # undef FPU_USE_GENERIC_FLAGS # define FPU_USE_X86_FLAGS #endif /* Old UAE FPU core can use native flags */ #if defined(FPU_UAE) && defined(USE_X87_ASSEMBLY) # undef FPU_USE_GENERIC_FLAGS # define FPU_USE_X86_FLAGS #endif /* IEEE-based implementation must use lazy flag evaluation */ #if defined(FPU_IEEE) # undef FPU_USE_GENERIC_FLAGS # define FPU_USE_LAZY_FLAGS #endif /* JIT Compilation for FPU only works with lazy evaluation of FPU flags */ #if defined(FPU_IEEE) && defined(USE_X87_ASSEMBLY) && defined(USE_JIT_FPU) # undef FPU_USE_GENERIC_FLAGS # define FPU_USE_LAZY_FLAGS #endif #ifdef FPU_IMPLEMENTATION /* -------------------------------------------------------------------------- */ /* --- Native X86 Floating-Point Flags --- */ /* -------------------------------------------------------------------------- */ /* FPU_X86 has its own set of lookup functions */ #ifdef FPU_USE_X86_FLAGS #define FPU_USE_NATIVE_FLAGS #define NATIVE_FFLAG_NEGATIVE 0x0200 #define NATIVE_FFLAG_ZERO 0x4000 #define NATIVE_FFLAG_INFINITY 0x0500 #define NATIVE_FFLAG_NAN 0x0100 /* Translation tables between native and m68k floating-point flags */ PRIVATE uae_u32 to_m68k_fpcond[0x48]; PRIVATE uae_u32 to_host_fpcond[0x10]; /* Truth table for floating-point condition codes */ PRIVATE uae_u32 fpcond_truth_table[32][8]; // 32 m68k conditions x 8 host condition codes /* Initialization */ PUBLIC void FFPU fpu_init_native_fflags(void); #ifdef FPU_UAE /* Native to m68k floating-point condition codes */ PRIVATE inline uae_u32 FFPU get_fpccr(void) { return to_m68k_fpcond[(FPU fpsr.condition_codes >> 8) & 0x47]; } /* M68k to native floating-point condition codes */ PRIVATE inline void FFPU set_fpccr(uae_u32 new_fpcond) /* Precondition: new_fpcond is only valid for floating-point condition codes */ { FPU fpsr.condition_codes = to_host_fpcond[new_fpcond >> 24]; } /* Make FPSR according to the value passed in argument */ PRIVATE inline void FFPU make_fpsr(fpu_register const & r) { uae_u16 sw; __asm__ __volatile__ ("fxam\n\tfnstsw %0" : "=a" (sw) : "f" (r)); FPU fpsr.condition_codes = sw; } /* Return the corresponding ID of the current floating-point condition codes */ /* NOTE: only valid for evaluation of a condition */ PRIVATE inline int FFPU host_fpcond_id(void) { return ((FPU fpsr.condition_codes >> 12) & 4) | ((FPU fpsr.condition_codes >> 8) & 3); } /* Return true if the floating-point condition is satisfied */ PRIVATE inline bool FFPU fpcctrue(int condition) { return fpcond_truth_table[condition][host_fpcond_id()]; } #endif /* FPU_UAE */ /* Return the address of the floating-point condition codes truth table */ static inline uae_u8 * const FFPU address_of_fpcond_truth_table(void) { return ((uae_u8*)&fpcond_truth_table[0][0]); } #endif /* FPU_X86_USE_NATIVE_FLAGS */ /* -------------------------------------------------------------------------- */ /* --- Use Original M68K FPU Mappings --- */ /* -------------------------------------------------------------------------- */ #ifdef FPU_USE_GENERIC_FLAGS #undef FPU_USE_NATIVE_FLAGS #define NATIVE_FFLAG_NEGATIVE 0x08000000 #define NATIVE_FFLAG_ZERO 0x04000000 #define NATIVE_FFLAG_INFINITY 0x02000000 #define NATIVE_FFLAG_NAN 0x01000000 /* Initialization - NONE */ PRIVATE inline void FFPU fpu_init_native_fflags(void) { } /* Native to m68k floating-point condition codes - SELF */ PRIVATE inline uae_u32 FFPU get_fpccr(void) { return FPU fpsr.condition_codes; } /* M68k to native floating-point condition codes - SELF */ PRIVATE inline void FFPU set_fpccr(uae_u32 new_fpcond) { FPU fpsr.condition_codes = new_fpcond; } #endif /* FPU_USE_GENERIC_FLAGS */ /* -------------------------------------------------------------------------- */ /* --- Use Lazy Flags Evaluation --- */ /* -------------------------------------------------------------------------- */ #ifdef FPU_USE_LAZY_FLAGS #undef FPU_USE_NATIVE_FLAGS #define NATIVE_FFLAG_NEGATIVE 0x08000000 #define NATIVE_FFLAG_ZERO 0x04000000 #define NATIVE_FFLAG_INFINITY 0x02000000 #define NATIVE_FFLAG_NAN 0x01000000 /* Initialization - NONE */ PRIVATE inline void FFPU fpu_init_native_fflags(void) { } /* Native to m68k floating-point condition codes - SELF */ PRIVATE inline uae_u32 FFPU get_fpccr(void) { uae_u32 fpccr = 0; if (isnan(FPU result)) fpccr |= FPSR_CCB_NAN; else if (isinf(FPU result)) fpccr |= FPSR_CCB_INFINITY; else if (iszero(FPU result)) fpccr |= FPSR_CCB_ZERO; if (isneg(FPU result)) fpccr |= FPSR_CCB_NEGATIVE; return fpccr; } /* M68k to native floating-point condition codes - SELF */ PRIVATE inline void FFPU set_fpccr(uae_u32 new_fpcond) { bool negative = (new_fpcond & FPSR_CCB_NEGATIVE) != 0; if (new_fpcond & FPSR_CCB_NAN) make_nan(FPU result, negative); else if (new_fpcond & FPSR_CCB_INFINITY) make_inf(FPU result, negative); else if (new_fpcond & FPSR_CCB_ZERO) make_zero(FPU result, negative); else FPU result = negative ? -1.0 : +1.0; } /* Make FPSR according to the value passed in argument */ PRIVATE inline void FFPU make_fpsr(fpu_register const & r) { FPU result = r; } #endif /* FPU_USE_LAZY_FLAGS */ #endif /* -------------------------------------------------------------------------- */ /* --- Common methods --- */ /* -------------------------------------------------------------------------- */ /* Return the address of the floating-point condition codes register */ static inline uae_u32 * FFPU address_of_fpccr(void) { return ((uae_u32 *)& FPU fpsr.condition_codes); } #endif /* FPU_FLAGS_H */ aranym-1.1.0/src/uae_cpu/fpu/flags.cpp0000664000175000017500000001447013454637622016012 0ustar joyjoy/* * fpu/flags.cpp - Floating-point flags * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* NOTE: this file shall be included only from fpu/fpu_*.cpp */ #undef PRIVATE #define PRIVATE /**/ #undef PUBLIC #define PUBLIC /**/ #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. /* -------------------------------------------------------------------------- */ /* --- Native X86 floating-point flags --- */ /* -------------------------------------------------------------------------- */ #ifdef FPU_USE_X86_FLAGS /* Initialization */ void FFPU fpu_init_native_fflags(void) { // Adapted from fpu_x86.cpp #define SW_Z_I_NAN_MASK (SW_C0|SW_C2|SW_C3) #define SW_Z (SW_C3) #define SW_I (SW_C0|SW_C2) #define SW_NAN (SW_C0) #define SW_FINITE (SW_C2) #define SW_EMPTY_REGISTER (SW_C0|SW_C3) #define SW_DENORMAL (SW_C2|SW_C3) #define SW_UNSUPPORTED (0) #define SW_N (SW_C1) // Sanity checks #if (SW_Z != NATIVE_FFLAG_ZERO) #error "Incorrect X86 Z fflag" #endif #if (SW_I != NATIVE_FFLAG_INFINITY) #error "Incorrect X86 I fflag" #endif #if (SW_N != NATIVE_FFLAG_NEGATIVE) #error "Incorrect X86 N fflag" #endif #if (SW_NAN != NATIVE_FFLAG_NAN) #error "Incorrect X86 NAN fflag" #endif // Native status word to m68k mappings for (uae_u32 i = 0; i < 0x48; i++) { to_m68k_fpcond[i] = 0; const uae_u32 native_fpcond = i << 8; switch (native_fpcond & SW_Z_I_NAN_MASK) { #ifndef FPU_UAE // gb-- enabling it would lead to incorrect drawing of digits // in Speedometer Performance Test case SW_UNSUPPORTED: #endif case SW_NAN: case SW_EMPTY_REGISTER: to_m68k_fpcond[i] |= FPSR_CCB_NAN; break; case SW_FINITE: case SW_DENORMAL: break; case SW_I: to_m68k_fpcond[i] |= FPSR_CCB_INFINITY; break; case SW_Z: to_m68k_fpcond[i] |= FPSR_CCB_ZERO; break; } if (native_fpcond & SW_N) to_m68k_fpcond[i] |= FPSR_CCB_NEGATIVE; } // m68k to native status word mappings for (uae_u32 i = 0; i < 0x10; i++) { const uae_u32 m68k_fpcond = i << 24; if (m68k_fpcond & FPSR_CCB_NAN) to_host_fpcond[i] = SW_NAN; else if (m68k_fpcond & FPSR_CCB_ZERO) to_host_fpcond[i] = SW_Z; else if (m68k_fpcond & FPSR_CCB_INFINITY) to_host_fpcond[i] = SW_I; else to_host_fpcond[i] = SW_FINITE; if (m68k_fpcond & FPSR_CCB_NEGATIVE) to_host_fpcond[i] |= SW_N; } // truth-table for FPU conditions for (uae_u32 host_fpcond = 0; host_fpcond < 0x08; host_fpcond++) { // host_fpcond: C3 on bit 2, C1 and C0 are respectively on bits 1 and 0 const uae_u32 real_host_fpcond = ((host_fpcond & 4) << 12) | ((host_fpcond & 3) << 8); const bool N = ((real_host_fpcond & NATIVE_FFLAG_NEGATIVE) == NATIVE_FFLAG_NEGATIVE); const bool Z = ((real_host_fpcond & NATIVE_FFLAG_ZERO) == NATIVE_FFLAG_ZERO); const bool NaN = ((real_host_fpcond & NATIVE_FFLAG_NAN) == NATIVE_FFLAG_NAN); int value; for (uae_u32 m68k_fpcond = 0; m68k_fpcond < 0x20; m68k_fpcond++) { switch (m68k_fpcond) { case 0x00: value = 0; break; // False case 0x01: value = Z; break; // Equal case 0x02: value = !(NaN || Z || N); break; // Ordered Greater Than case 0x03: value = Z || !(NaN || N); break; // Ordered Greater Than or Equal case 0x04: value = N && !(NaN || Z); break; // Ordered Less Than case 0x05: value = Z || (N && !NaN); break; // Ordered Less Than or Equal case 0x06: value = !(NaN || Z); break; // Ordered Greater or Less Than case 0x07: value = !NaN; break; // Ordered case 0x08: value = NaN; break; // Unordered case 0x09: value = NaN || Z; break; // Unordered or Equal case 0x0a: value = NaN || !(N || Z); break; // Unordered or Greater Than case 0x0b: value = NaN || Z || !N; break; // Unordered or Greater or Equal case 0x0c: value = NaN || (N && !Z); break; // Unordered or Less Than case 0x0d: value = NaN || Z || N; break; // Unordered or Less or Equal case 0x0e: value = !Z; break; // Not Equal case 0x0f: value = 1; break; // True case 0x10: value = 0; break; // Signaling False case 0x11: value = Z; break; // Signaling Equal case 0x12: value = !(NaN || Z || N); break; // Greater Than case 0x13: value = Z || !(NaN || N); break; // Greater Than or Equal case 0x14: value = N && !(NaN || Z); break; // Less Than case 0x15: value = Z || (N && !NaN); break; // Less Than or Equal case 0x16: value = !(NaN || Z); break; // Greater or Less Than case 0x17: value = !NaN; break; // Greater, Less or Equal case 0x18: value = NaN; break; // Not Greater, Less or Equal case 0x19: value = NaN || Z; break; // Not Greater or Less Than case 0x1a: value = NaN || !(N || Z); break; // Not Less Than or Equal case 0x1b: value = NaN || Z || !N; break; // Not Less Than case 0x1c: value = NaN || (N && !Z); break; // Not Greater Than or Equal // case 0x1c: value = !Z && (NaN || N); break; // Not Greater Than or Equal case 0x1d: value = NaN || Z || N; break; // Not Greater Than case 0x1e: value = !Z; break; // Signaling Not Equal case 0x1f: value = 1; break; // Signaling True default: value = -1; } fpcond_truth_table[m68k_fpcond][host_fpcond] = value; } } } #endif aranym-1.1.0/src/uae_cpu/fpu/exceptions.h0000664000175000017500000001263213454637622016542 0ustar joyjoy/* * fpu/exceptions.h - system-dependant FPU exceptions management * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef FPU_EXCEPTIONS_H #define FPU_EXCEPTIONS_H /* NOTE: this file shall be included only from fpu/fpu_*.cpp */ #undef PUBLIC #define PUBLIC extern #undef PRIVATE #define PRIVATE static #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. /* Defaults to generic exceptions */ #define FPU_USE_GENERIC_EXCEPTIONS #define FPU_USE_GENERIC_ACCRUED_EXCEPTIONS /* -------------------------------------------------------------------------- */ /* --- Selection of floating-point exceptions handling mode --- */ /* -------------------------------------------------------------------------- */ /* Optimized i386 fpu core must use native exceptions */ #if defined(FPU_X86) && defined(USE_X87_ASSEMBLY) # undef FPU_USE_GENERIC_EXCEPTIONS # define FPU_USE_X86_EXCEPTIONS #endif /* Optimized i386 fpu core must use native accrued exceptions */ #if defined(FPU_X86) && defined(USE_X87_ASSEMBLY) # undef FPU_USE_GENERIC_ACCRUED_EXCEPTIONS # define FPU_USE_X86_ACCRUED_EXCEPTIONS #endif /* -------------------------------------------------------------------------- */ /* --- Native X86 Exceptions --- */ /* -------------------------------------------------------------------------- */ #ifdef FPU_USE_X86_EXCEPTIONS /* Extend the SW_* codes */ #define SW_FAKE_BSUN SW_SF /* Shorthand */ #define SW_EXCEPTION_MASK (SW_ES|SW_SF|SW_PE|SW_UE|SW_OE|SW_ZE|SW_DE|SW_IE) // #define SW_EXCEPTION_MASK (SW_SF|SW_PE|SW_UE|SW_OE|SW_ZE|SW_DE|SW_IE) /* Lookup tables */ PRIVATE uae_u32 exception_host2mac[ 0x80 ]; PRIVATE uae_u32 exception_mac2host[ 0x100 ]; /* Initialize native exception management */ PUBLIC void FFPU fpu_init_native_exceptions(void); /* Return m68k floating-point exception status */ PRIVATE inline uae_u32 FFPU get_exception_status(void) { return exception_host2mac[FPU fpsr.exception_status & (SW_FAKE_BSUN|SW_PE|SW_UE|SW_OE|SW_ZE|SW_DE|SW_IE)]; } /* Set new exception status. Assumes mask against FPSR_EXCEPTION to be already performed */ PRIVATE inline void FFPU set_exception_status(uae_u32 new_status) { FPU fpsr.exception_status = exception_mac2host[new_status >> 8]; } #endif /* FPU_USE_X86_EXCEPTIONS */ #ifdef FPU_USE_X86_ACCRUED_EXCEPTIONS /* Lookup tables */ PRIVATE uae_u32 accrued_exception_host2mac[ 0x40 ]; PRIVATE uae_u32 accrued_exception_mac2host[ 0x20 ]; /* Initialize native accrued exception management */ PUBLIC void FFPU fpu_init_native_accrued_exceptions(void); /* Return m68k accrued exception byte */ PRIVATE inline uae_u32 FFPU get_accrued_exception(void) { return accrued_exception_host2mac[FPU fpsr.accrued_exception & (SW_PE|SW_UE|SW_OE|SW_ZE|SW_DE|SW_IE)]; } /* Set new accrued exception byte */ PRIVATE inline void FFPU set_accrued_exception(uae_u32 new_status) { FPU fpsr.accrued_exception = accrued_exception_mac2host[(new_status & 0xF8) >> 3]; } #endif /* FPU_USE_X86_ACCRUED_EXCEPTIONS */ /* -------------------------------------------------------------------------- */ /* --- Default Exceptions Handling --- */ /* -------------------------------------------------------------------------- */ #ifdef FPU_USE_GENERIC_EXCEPTIONS /* Initialize native exception management */ static inline void FFPU fpu_init_native_exceptions(void) { } /* Return m68k floating-point exception status */ PRIVATE inline uae_u32 FFPU get_exception_status(void) { return FPU fpsr.exception_status; } /* Set new exception status. Assumes mask against FPSR_EXCEPTION to be already performed */ PRIVATE inline void FFPU set_exception_status(uae_u32 new_status) { FPU fpsr.exception_status = new_status; } #endif /* FPU_USE_GENERIC_EXCEPTIONS */ #ifdef FPU_USE_GENERIC_ACCRUED_EXCEPTIONS /* Initialize native accrued exception management */ PRIVATE inline void FFPU fpu_init_native_accrued_exceptions(void) { } /* Return m68k accrued exception byte */ PRIVATE inline uae_u32 FFPU get_accrued_exception(void) { return FPU fpsr.accrued_exception; } /* Set new accrued exception byte */ PRIVATE inline void FFPU set_accrued_exception(uae_u32 new_status) { FPU fpsr.accrued_exception = new_status; } #endif /* FPU_USE_GENERIC_ACCRUED_EXCEPTIONS */ #endif /* FPU_EXCEPTIONS_H */ aranym-1.1.0/src/uae_cpu/fpu/exceptions.cpp0000664000175000017500000001252113454637622017072 0ustar joyjoy/* * fpu/exceptions.cpp - system-dependant FPU exceptions management * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #undef PRIVATE #define PRIVATE /**/ #undef PUBLIC #define PUBLIC /**/ #undef FFPU #define FFPU /**/ #undef FPU #define FPU fpu. /* -------------------------------------------------------------------------- */ /* --- Native X86 exceptions --- */ /* -------------------------------------------------------------------------- */ #ifdef FPU_USE_X86_EXCEPTIONS void FFPU fpu_init_native_exceptions(void) { // Mapping for "sw" -> fpsr exception byte for (uae_u32 i = 0; i < 0x80; i++) { exception_host2mac[i] = 0; if(i & SW_FAKE_BSUN) { exception_host2mac[i] |= FPSR_EXCEPTION_BSUN; } // precision exception if(i & SW_PE) { exception_host2mac[i] |= FPSR_EXCEPTION_INEX2; } // underflow exception if(i & SW_UE) { exception_host2mac[i] |= FPSR_EXCEPTION_UNFL; } // overflow exception if(i & SW_OE) { exception_host2mac[i] |= FPSR_EXCEPTION_OVFL; } // zero divide exception if(i & SW_ZE) { exception_host2mac[i] |= FPSR_EXCEPTION_DZ; } // denormalized operand exception. // wrong, but should not get here, normalization is done in elsewhere if(i & SW_DE) { exception_host2mac[i] |= FPSR_EXCEPTION_SNAN; } // invalid operation exception if(i & SW_IE) { exception_host2mac[i] |= FPSR_EXCEPTION_OPERR; } } // Mapping for fpsr exception byte -> "sw" for (uae_u32 i = 0; i < 0x100; i++) { uae_u32 fpsr = (i << 8); exception_mac2host[i] = 0; // BSUN; make sure that you don't generate FPU stack faults. if(fpsr & FPSR_EXCEPTION_BSUN) { exception_mac2host[i] |= SW_FAKE_BSUN; } // precision exception if(fpsr & FPSR_EXCEPTION_INEX2) { exception_mac2host[i] |= SW_PE; } // underflow exception if(fpsr & FPSR_EXCEPTION_UNFL) { exception_mac2host[i] |= SW_UE; } // overflow exception if(fpsr & FPSR_EXCEPTION_OVFL) { exception_mac2host[i] |= SW_OE; } // zero divide exception if(fpsr & FPSR_EXCEPTION_DZ) { exception_mac2host[i] |= SW_ZE; } // denormalized operand exception if(fpsr & FPSR_EXCEPTION_SNAN) { exception_mac2host[i] |= SW_DE; //Wrong } // invalid operation exception if(fpsr & FPSR_EXCEPTION_OPERR) { exception_mac2host[i] |= SW_IE; } } } #endif #ifdef FPU_USE_X86_ACCRUED_EXCEPTIONS void FFPU fpu_init_native_accrued_exceptions(void) { /* 68881/68040 accrued exceptions accumulate as follows: Accrued.IOP |= (Exception.SNAN | Exception.OPERR) Accrued.OVFL |= (Exception.OVFL) Accrued.UNFL |= (Exception.UNFL | Exception.INEX2) Accrued.DZ |= (Exception.DZ) Accrued.INEX |= (Exception.INEX1 | Exception.INEX2 | Exception.OVFL) */ // Mapping for "fpsr.accrued_exception" -> fpsr accrued exception byte for (uae_u32 i = 0; i < 0x40; i++ ) { accrued_exception_host2mac[i] = 0; // precision exception if(i & SW_PE) { accrued_exception_host2mac[i] |= FPSR_ACCR_INEX; } // underflow exception if(i & SW_UE) { accrued_exception_host2mac[i] |= FPSR_ACCR_UNFL; } // overflow exception if(i & SW_OE) { accrued_exception_host2mac[i] |= FPSR_ACCR_OVFL; } // zero divide exception if(i & SW_ZE) { accrued_exception_host2mac[i] |= FPSR_ACCR_DZ; } // denormalized operand exception if(i & SW_DE) { accrued_exception_host2mac[i] |= FPSR_ACCR_IOP; //?????? } // invalid operation exception if(i & SW_IE) { accrued_exception_host2mac[i] |= FPSR_ACCR_IOP; } } // Mapping for fpsr accrued exception byte -> "fpsr.accrued_exception" for (uae_u32 i = 0; i < 0x20; i++) { int fpsr = (i << 3); accrued_exception_mac2host[i] = 0; // precision exception if(fpsr & FPSR_ACCR_INEX) { accrued_exception_mac2host[i] |= SW_PE; } // underflow exception if(fpsr & FPSR_ACCR_UNFL) { accrued_exception_mac2host[i] |= SW_UE; } // overflow exception if(fpsr & FPSR_ACCR_OVFL) { accrued_exception_mac2host[i] |= SW_OE; } // zero divide exception if(fpsr & FPSR_ACCR_DZ) { accrued_exception_mac2host[i] |= SW_ZE; } // What about SW_DE; //?????? // invalid operation exception if(fpsr & FPSR_ACCR_IOP) { accrued_exception_mac2host[i] |= SW_IE; } } } #endif aranym-1.1.0/src/uae_cpu/fpu/core.h0000664000175000017500000002337113454637622015313 0ustar joyjoy/* * fpu/core.h - base fpu context definition * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * MC68881/68040 fpu emulation * * Original UAE FPU, copyright 1996 Herman ten Brugge * Rewrite for x86, copyright 1999-2001 Lauri Pesonen * New framework, copyright 2000-2001 Gwenole Beauchesne * Adapted for JIT compilation (c) Bernd Meyer, 2000-2001 * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef FPU_CORE_H #define FPU_CORE_H #include "sysdeps.h" #include "fpu/types.h" /* Always use x87 FPU stack on IA-32. */ #if defined(X86_ASSEMBLY) #define USE_X87_ASSEMBLY 1 #ifndef USE_JIT_FPU #define ACCURATE_SIN_COS_TAN 1 #endif #endif /* Only use x87 FPU on x86-64 if long double precision is requested. */ #if defined(X86_64_ASSEMBLY) && defined(USE_LONG_DOUBLE) #define USE_X87_ASSEMBLY 1 #define ACCURATE_SIN_COS_TAN 1 #endif /* ========================================================================== */ /* ========================= FPU CONTEXT DEFINITION ========================= */ /* ========================================================================== */ /* We don't use all features of the C++ language so that we may still * easily backport that code to C. */ struct fpu_t { /* ---------------------------------------------------------------------- */ /* --- Floating-Point Data Registers --- */ /* ---------------------------------------------------------------------- */ /* The eight %fp0 .. %fp7 registers */ fpu_register registers[8]; /* Used for lazy evalualation of FPU flags */ fpu_register result; /* ---------------------------------------------------------------------- */ /* --- Floating-Point Control Register --- */ /* ---------------------------------------------------------------------- */ /* Exception Enable Byte */ #define FPCR_EXCEPTION_ENABLE 0x0000ff00 #define FPCR_EXCEPTION_BSUN 0x00008000 #define FPCR_EXCEPTION_SNAN 0x00004000 #define FPCR_EXCEPTION_OPERR 0x00002000 #define FPCR_EXCEPTION_OVFL 0x00001000 #define FPCR_EXCEPTION_UNFL 0x00000800 #define FPCR_EXCEPTION_DZ 0x00000400 #define FPCR_EXCEPTION_INEX2 0x00000200 #define FPCR_EXCEPTION_INEX1 0x00000100 /* Mode Control Byte Mask */ #define FPCR_MODE_CONTROL 0x000000ff /* Rounding precision */ #define FPCR_ROUNDING_PRECISION 0x000000c0 #define FPCR_PRECISION_SINGLE 0x00000040 #define FPCR_PRECISION_DOUBLE 0x00000080 #define FPCR_PRECISION_EXTENDED 0x00000000 /* Rounding mode */ #define FPCR_ROUNDING_MODE 0x00000030 #define FPCR_ROUND_NEAR 0x00000000 #define FPCR_ROUND_ZERO 0x00000010 #define FPCR_ROUND_MINF 0x00000020 #define FPCR_ROUND_PINF 0x00000030 uae_u32 fpcr; /* ---------------------------------------------------------------------- */ /* --- Floating-Point Status Register --- */ /* ---------------------------------------------------------------------- */ struct { /* Floating-Point Condition Code Byte */ uae_u32 condition_codes; #define FPSR_CCB 0x0f000000 #define FPSR_CCB_NEGATIVE 0x08000000 #define FPSR_CCB_ZERO 0x04000000 #define FPSR_CCB_INFINITY 0x02000000 #define FPSR_CCB_NAN 0x01000000 /* Quotient Byte */ uae_u32 quotient; #define FPSR_QUOTIENT 0x00ff0000 #define FPSR_QUOTIENT_SIGN 0x00800000 #define FPSR_QUOTIENT_VALUE 0x007f0000 /* Exception Status Byte */ uae_u32 exception_status; #define FPSR_EXCEPTION_STATUS FPCR_EXCEPTION_ENABLE #define FPSR_EXCEPTION_BSUN FPCR_EXCEPTION_BSUN #define FPSR_EXCEPTION_SNAN FPCR_EXCEPTION_SNAN #define FPSR_EXCEPTION_OPERR FPCR_EXCEPTION_OPERR #define FPSR_EXCEPTION_OVFL FPCR_EXCEPTION_OVFL #define FPSR_EXCEPTION_UNFL FPCR_EXCEPTION_UNFL #define FPSR_EXCEPTION_DZ FPCR_EXCEPTION_DZ #define FPSR_EXCEPTION_INEX2 FPCR_EXCEPTION_INEX2 #define FPSR_EXCEPTION_INEX1 FPCR_EXCEPTION_INEX1 /* Accrued Exception Byte */ uae_u32 accrued_exception; #define FPSR_ACCRUED_EXCEPTION 0x000000f8 #define FPSR_ACCR_IOP 0x00000080 #define FPSR_ACCR_OVFL 0x00000040 #define FPSR_ACCR_UNFL 0x00000020 #define FPSR_ACCR_DZ 0x00000010 #define FPSR_ACCR_INEX 0x00000008 } fpsr; /* ---------------------------------------------------------------------- */ /* --- Floating-Point Instruction Address Register --- */ /* ---------------------------------------------------------------------- */ uae_u32 instruction_address; /* ---------------------------------------------------------------------- */ /* --- Initialization / Finalization --- */ /* ---------------------------------------------------------------------- */ /* Flag set if we emulate an integral 68040 FPU */ bool is_integral; /* ---------------------------------------------------------------------- */ /* --- Extra FPE-dependant defines --- */ /* ---------------------------------------------------------------------- */ #if defined(FPU_X86) \ || (defined(FPU_UAE) && defined(USE_X87_ASSEMBLY)) \ || (defined(FPU_IEEE) && defined(USE_X87_ASSEMBLY)) #define CW_RESET 0x0040 // initial CW value after RESET #define CW_FINIT 0x037F // initial CW value after FINIT #define SW_RESET 0x0000 // initial SW value after RESET #define SW_FINIT 0x0000 // initial SW value after FINIT #define TW_RESET 0x5555 // initial TW value after RESET #define TW_FINIT 0x0FFF // initial TW value after FINIT #define CW_X 0x1000 // infinity control #define CW_RC_ZERO 0x0C00 // rounding control toward zero #define CW_RC_UP 0x0800 // rounding control toward + #define CW_RC_DOWN 0x0400 // rounding control toward - #define CW_RC_NEAR 0x0000 // rounding control toward even #define CW_PC_EXTENDED 0x0300 // precision control 64bit #define CW_PC_DOUBLE 0x0200 // precision control 53bit #define CW_PC_RESERVED 0x0100 // precision control reserved #define CW_PC_SINGLE 0x0000 // precision control 24bit #define CW_PM 0x0020 // precision exception mask #define CW_UM 0x0010 // underflow exception mask #define CW_OM 0x0008 // overflow exception mask #define CW_ZM 0x0004 // zero divide exception mask #define CW_DM 0x0002 // denormalized operand exception mask #define CW_IM 0x0001 // invalid operation exception mask #define SW_B 0x8000 // busy flag #define SW_C3 0x4000 // condition code flag 3 #define SW_TOP_7 0x3800 // top of stack = ST(7) #define SW_TOP_6 0x3000 // top of stack = ST(6) #define SW_TOP_5 0x2800 // top of stack = ST(5) #define SW_TOP_4 0x2000 // top of stack = ST(4) #define SW_TOP_3 0x1800 // top of stack = ST(3) #define SW_TOP_2 0x1000 // top of stack = ST(2) #define SW_TOP_1 0x0800 // top of stack = ST(1) #define SW_TOP_0 0x0000 // top of stack = ST(0) #define SW_C2 0x0400 // condition code flag 2 #define SW_C1 0x0200 // condition code flag 1 #define SW_C0 0x0100 // condition code flag 0 #define SW_ES 0x0080 // error summary status flag #define SW_SF 0x0040 // stack fault flag #define SW_PE 0x0020 // precision exception flag #define SW_UE 0x0010 // underflow exception flag #define SW_OE 0x0008 // overflow exception flag #define SW_ZE 0x0004 // zero divide exception flag #define SW_DE 0x0002 // denormalized operand exception flag #define SW_IE 0x0001 // invalid operation exception flag #define X86_ROUNDING_MODE 0x0C00 #define X86_ROUNDING_PRECISION 0x0300 #endif /* FPU_X86 */ }; /* We handle only one global fpu */ extern fpu_t fpu; /* Return the address of a particular register */ inline fpu_register * fpu_register_address(int i) { return &fpu.registers[i]; } /* Dump functions for m68k_dumpstate */ extern void fpu_dump_registers(void); extern void fpu_dump_flags(void); /* Accessors to FPU Control Register */ //static inline uae_u32 get_fpcr(void); //static inline void set_fpcr(uae_u32 new_fpcr); /* Accessors to FPU Status Register */ //static inline uae_u32 get_fpsr(void); //static inline void set_fpsr(uae_u32 new_fpsr); /* Accessors to FPU Instruction Address Register */ //static inline uae_u32 get_fpiar(); //static inline void set_fpiar(uae_u32 new_fpiar); /* Initialization / Finalization */ extern void fpu_init(bool integral_68040); extern void fpu_exit(void); extern void fpu_reset(void); /* Floating-point arithmetic instructions */ void fpuop_arithmetic(uae_u32 opcode, uae_u32 extra) REGPARAM; /* Floating-point program control operations */ void fpuop_bcc(uae_u32 opcode, uaecptr pc, uae_u32 extra) REGPARAM; void fpuop_dbcc(uae_u32 opcode, uae_u32 extra) REGPARAM; void fpuop_scc(uae_u32 opcode, uae_u32 extra) REGPARAM; /* Floating-point system control operations */ void fpuop_save(uae_u32 opcode) REGPARAM; void fpuop_restore(uae_u32 opcode) REGPARAM; void fpuop_trapcc(uae_u32 opcode, uaecptr oldpc, uae_u32 extra) REGPARAM; #endif /* FPU_CORE_H */ aranym-1.1.0/src/uae_cpu/debug.cpp0000664000175000017500000000333113454637622015204 0ustar joyjoy/* * debug.cpp - CPU debugger * * Copyright (c) 2001-2010 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Bernd Schmidt's UAE * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * UAE - The Un*x Amiga Emulator * * Debugger * * (c) 1995 Bernd Schmidt * */ #include "sysdeps.h" #include "memory-uae.h" #include "newcpu.h" #include "debug.h" #include "input.h" #include "cpu_emulation.h" #include "main.h" static int debugger_active = 0; int debugging = 0; int irqindebug = 0; int ignore_irq = 0; void activate_debugger (void) { #ifdef DEBUGGER ndebug::do_skip = false; #endif debugger_active = 1; SPCFLAGS_SET( SPCFLAG_BRK ); debugging = 1; /* use_debugger = 1; */ } void deactivate_debugger(void) { debugging = 0; debugger_active = 0; } void debug (void) { if (ignore_irq && regs.s && !regs.m ) { SPCFLAGS_SET( SPCFLAG_BRK ); return; } #ifdef DEBUGGER ndebug::run(); #endif } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/uae_cpu/cpustbla.cpp0000664000175000017500000000021213454637622015726 0ustar joyjoy/* * cpustbl.cpp must be compiled twice, once for the generator program * and once for the actual executable */ #include "cpustbl.cpp" aranym-1.1.0/src/uae_cpu/cpustbl_nf.cpp0000664000175000017500000000005113454637622016251 0ustar joyjoy#define NOFLAGS 1 #include "cpustbl.cpp" aranym-1.1.0/src/uae_cpu/cpummu.h0000664000175000017500000001777013454637622015105 0ustar joyjoy/* * cpummu.h - MMU emulation * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by UAE MMU patch * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef CPUMMU_H #define CPUMMU_H #include "registers.h" # include #define MMU_TEST_PTEST 1 #define MMU_TEST_VERBOSE 2 #define MMU_TEST_FORCE_TABLE_SEARCH 4 #define MMU_TEST_NO_BUSERR 8 extern void mmu_dump_tables(void); #define MMU_TTR_LOGICAL_BASE 0xff000000 #define MMU_TTR_LOGICAL_MASK 0x00ff0000 #define MMU_TTR_BIT_ENABLED (1 << 15) #define MMU_TTR_BIT_SFIELD_ENABLED (1 << 14) #define MMU_TTR_BIT_SFIELD_SUPER (1 << 13) #define MMU_TTR_SFIELD_SHIFT 13 #define MMU_TTR_UX_MASK ((1 << 9) | (1 << 8)) #define MMU_TTR_UX_SHIFT 8 #define MMU_TTR_CACHE_MASK ((1 << 6) | (1 << 5)) #define MMU_TTR_CACHE_SHIFT 5 #define MMU_TTR_BIT_WRITE_PROTECT (1 << 2) #define MMU_UDT_MASK 3 #define MMU_PDT_MASK 3 #define MMU_DES_WP 4 #define MMU_DES_USED 8 /* page descriptors only */ #define MMU_DES_MODIFIED 16 #define MMU_DES_SUPER (1 << 7) #define MMU_DES_GLOBAL (1 << 10) #define MMU_ROOT_PTR_ADDR_MASK 0xfffffe00 #define MMU_PTR_PAGE_ADDR_MASK_8 0xffffff80 #define MMU_PTR_PAGE_ADDR_MASK_4 0xffffff00 #define MMU_PAGE_INDIRECT_MASK 0xfffffffc #define MMU_PAGE_ADDR_MASK_8 0xffffe000 #define MMU_PAGE_ADDR_MASK_4 0xfffff000 #define MMU_PAGE_UR_MASK_8 ((1 << 12) | (1 << 11)) #define MMU_PAGE_UR_MASK_4 (1 << 11) #define MMU_PAGE_UR_SHIFT 11 #define MMU_MMUSR_ADDR_MASK 0xfffff000 #define MMU_MMUSR_B (1 << 11) #define MMU_MMUSR_G (1 << 10) #define MMU_MMUSR_U1 (1 << 9) #define MMU_MMUSR_U0 (1 << 8) #define MMU_MMUSR_Ux (MMU_MMUSR_U1 | MMU_MMUSR_U0) #define MMU_MMUSR_S (1 << 7) #define MMU_MMUSR_CM ((1 << 6) | ( 1 << 5)) #define MMU_MMUSR_M (1 << 4) #define MMU_MMUSR_W (1 << 2) #define MMU_MMUSR_T (1 << 1) #define MMU_MMUSR_R (1 << 0) /* special status word (access error stack frame) */ #define MMU_SSW_TM 0x0007 #define MMU_SSW_TT 0x0018 #define MMU_SSW_SIZE 0x0060 #define MMU_SSW_SIZE_B 0x0020 #define MMU_SSW_SIZE_W 0x0040 #define MMU_SSW_SIZE_L 0x0000 #define MMU_SSW_RW 0x0100 #define MMU_SSW_LK 0x0200 #define MMU_SSW_ATC 0x0400 #define MMU_SSW_MA 0x0800 #define TTR_I0 4 #define TTR_I1 5 #define TTR_D0 6 #define TTR_D1 7 #define TTR_NO_MATCH 0 #define TTR_NO_WRITE 1 #define TTR_OK_MATCH 2 struct mmu_atc_line { uae_u16 tag; unsigned tt : 1; unsigned valid_data : 1; unsigned valid_inst : 1; unsigned global : 1; unsigned modified : 1; unsigned write_protect : 1; unsigned hw : 1; unsigned bus_fault : 1; uaecptr phys; }; /* * We don't need to store the whole logical address in the atc cache, as part of * it is encoded as index into the cache. 14 bits of the address are stored in * the tag, this means at least 6 bits must go into the index. The upper two * bits of the tag define the type of data in the atc line: * - 00: a normal memory address * - 11: invalid memory address or hardware access * (generated via ~ATC_TAG(addr) in the slow path) * - 10: empty atc line */ #define ATC_TAG_SHIFT 18 #define ATC_TAG(addr) ((uae_u32)(addr) >> ATC_TAG_SHIFT) #define ATC_L1_SIZE_LOG 8 #define ATC_L1_SIZE (1 << ATC_L1_SIZE_LOG) #define ATC_L1_INDEX(addr) (((addr) >> 12) % ATC_L1_SIZE) /* * first level atc cache * indexed by [super][data][rw][idx] */ typedef struct mmu_atc_line mmu_atc_l1_array[2][2][ATC_L1_SIZE]; extern mmu_atc_l1_array atc_l1[2]; extern mmu_atc_l1_array *current_atc; #define ATC_L2_SIZE_LOG 12 #define ATC_L2_SIZE (1 << ATC_L2_SIZE_LOG) #define ATC_L2_INDEX(addr) ((((addr) >> 12) ^ ((addr) >> (32 - ATC_L2_SIZE_LOG))) % ATC_L2_SIZE) extern struct mmu_atc_line atc_l2[2][ATC_L2_SIZE]; /* * lookup address in the level 1 atc cache, * the data and write arguments are constant in the common, * thus allows gcc to generate a constant offset. */ static ALWAYS_INLINE int mmu_lookup(uaecptr addr, bool data, bool write, struct mmu_atc_line **cl) { addr >>= 12; *cl = &(*current_atc)[data][write][addr % ATC_L1_SIZE]; return (*cl)->tag == addr >> (ATC_TAG_SHIFT - 12); } /* * similiar to mmu_user_lookup, but for the use of the moves instruction */ static ALWAYS_INLINE int mmu_user_lookup(uaecptr addr, bool super, bool data, bool write, struct mmu_atc_line **cl) { addr >>= 12; *cl = &atc_l1[super][data][write][addr % ATC_L1_SIZE]; return (*cl)->tag == addr >> (ATC_TAG_SHIFT - 12); } extern REGPARAM2 uae_u16 mmu_get_word_unaligned(uaecptr addr, int data); extern REGPARAM2 uae_u32 mmu_get_long_unaligned(uaecptr addr, int data); extern REGPARAM2 uae_u8 mmu_get_byte_slow(uaecptr addr, int super, int data, int size, struct mmu_atc_line *cl); extern REGPARAM2 uae_u16 mmu_get_word_slow(uaecptr addr, int super, int data, int size, struct mmu_atc_line *cl); extern REGPARAM2 uae_u32 mmu_get_long_slow(uaecptr addr, int super, int data, int size, struct mmu_atc_line *cl); extern REGPARAM2 uae_u64 mmu_get_quad_slow(uaecptr addr, int super, int data, struct mmu_atc_line *cl); extern REGPARAM2 void mmu_put_word_unaligned(uaecptr addr, uae_u16 val, int data); extern REGPARAM2 void mmu_put_long_unaligned(uaecptr addr, uae_u32 val, int data); extern REGPARAM2 void mmu_put_byte_slow(uaecptr addr, uae_u8 val, int super, int data, int size, struct mmu_atc_line *cl); extern REGPARAM2 void mmu_put_word_slow(uaecptr addr, uae_u16 val, int super, int data, int size, struct mmu_atc_line *cl); extern REGPARAM2 void mmu_put_long_slow(uaecptr addr, uae_u32 val, int super, int data, int size, struct mmu_atc_line *cl); extern REGPARAM2 void mmu_put_quad_slow(uaecptr addr, uae_u64 val, int super, int data, struct mmu_atc_line *cl); extern void mmu_make_transparent_region(uaecptr baseaddr, uae_u32 size, int datamode); static inline void mmu_set_ttr(int regno, uae_u32 val) { uae_u32 * ttr; switch(regno) { case TTR_I0: ttr = ®s.itt0; break; case TTR_I1: ttr = ®s.itt1; break; case TTR_D0: ttr = ®s.dtt0; break; case TTR_D1: ttr = ®s.dtt1; break; default: abort(); } *ttr = val; } static inline void mmu_set_mmusr(uae_u32 val) { regs.mmusr = val; } #define FC_DATA (regs.s ? 5 : 1) #define FC_INST (regs.s ? 6 : 2) extern uaecptr REGPARAM2 mmu_translate(uaecptr addr, int super, int data, int write); extern uae_u32 REGPARAM2 sfc_get_long(uaecptr addr); extern uae_u16 REGPARAM2 sfc_get_word(uaecptr addr); extern uae_u8 REGPARAM2 sfc_get_byte(uaecptr addr); extern void REGPARAM2 dfc_put_long(uaecptr addr, uae_u32 val); extern void REGPARAM2 dfc_put_word(uaecptr addr, uae_u16 val); extern void REGPARAM2 dfc_put_byte(uaecptr addr, uae_u8 val); extern void REGPARAM2 mmu_flush_atc(uaecptr addr, bool super, bool global); extern void REGPARAM2 mmu_flush_atc_all(bool global); extern void REGPARAM2 mmu_op(uae_u32 opcode, uae_u16 extra); #ifdef FULLMMU extern void REGPARAM2 mmu_reset(void); extern void REGPARAM2 mmu_set_tc(uae_u16 tc); extern void REGPARAM2 mmu_set_super(bool super); #else static inline void mmu_reset(void) { } static inline void mmu_set_tc(uae_u16 /*tc*/) { } static inline void mmu_set_super(bool /*super*/) { } #endif #endif /* CPUMMU_H */ /* vim:ts=4:sw=4: */ aranym-1.1.0/src/uae_cpu/cpummu.cpp0000664000175000017500000006331013454637622015427 0ustar joyjoy/* * cpummu.cpp - MMU emulation * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by UAE MMU patch * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #define DEBUG 0 #include "sysdeps.h" #include "cpummu.h" #include "memory-uae.h" #include "newcpu.h" #include "debug.h" #ifdef USE_JIT # include "compiler/compemu.h" #endif #define DBG_MMU_VERBOSE 1 #define DBG_MMU_SANITY 1 #ifdef FULLMMU mmu_atc_l1_array atc_l1[2]; mmu_atc_l1_array *current_atc; struct mmu_atc_line atc_l2[2][ATC_L2_SIZE]; # ifdef ATC_STATS static unsigned int mmu_atc_hits[ATC_L2_SIZE]; # endif static void mmu_dump_ttr(const char * label, uae_u32 ttr) { DUNUSED(label); #if DEBUG uae_u32 from_addr, to_addr; from_addr = ttr & MMU_TTR_LOGICAL_BASE; to_addr = (ttr & MMU_TTR_LOGICAL_MASK) << 8; D(bug("%s: [%08x] %08x - %08x enabled=%d supervisor=%d wp=%d cm=%02d", label, ttr, from_addr, to_addr, ttr & MMU_TTR_BIT_ENABLED ? 1 : 0, (ttr & (MMU_TTR_BIT_SFIELD_ENABLED | MMU_TTR_BIT_SFIELD_SUPER)) >> MMU_TTR_SFIELD_SHIFT, ttr & MMU_TTR_BIT_WRITE_PROTECT ? 1 : 0, (ttr & MMU_TTR_CACHE_MASK) >> MMU_TTR_CACHE_SHIFT )); #else DUNUSED(ttr); #endif } void mmu_make_transparent_region(uaecptr baseaddr, uae_u32 size, int datamode) { uae_u32 * ttr; uae_u32 * ttr0 = datamode ? ®s.dtt0 : ®s.itt0; uae_u32 * ttr1 = datamode ? ®s.dtt1 : ®s.itt1; if ((*ttr1 & MMU_TTR_BIT_ENABLED) == 0) ttr = ttr1; else if ((*ttr0 & MMU_TTR_BIT_ENABLED) == 0) ttr = ttr0; else return; *ttr = baseaddr & MMU_TTR_LOGICAL_BASE; *ttr |= ((baseaddr + size - 1) & MMU_TTR_LOGICAL_BASE) >> 8; *ttr |= MMU_TTR_BIT_ENABLED; D(bug("MMU: map transparent mapping of %08x", *ttr)); } /* check if an address matches a ttr */ static int mmu_do_match_ttr(uae_u32 ttr, uaecptr addr, int super) { if (ttr & MMU_TTR_BIT_ENABLED) { /* TTR enabled */ uae_u8 msb, mask; msb = ((addr ^ ttr) & MMU_TTR_LOGICAL_BASE) >> 24; mask = (ttr & MMU_TTR_LOGICAL_MASK) >> 16; if (!(msb & ~mask)) { if ((ttr & MMU_TTR_BIT_SFIELD_ENABLED) == 0) { if (((ttr & MMU_TTR_BIT_SFIELD_SUPER) == 0) != (super == 0)) { return TTR_NO_MATCH; } } return (ttr & MMU_TTR_BIT_WRITE_PROTECT) ? TTR_NO_WRITE : TTR_OK_MATCH; } } return TTR_NO_MATCH; } static inline int mmu_match_ttr(uaecptr addr, int super, int data) { int res; if (data) { res = mmu_do_match_ttr(regs.dtt0, addr, super); if (res == TTR_NO_MATCH) res = mmu_do_match_ttr(regs.dtt1, addr, super); } else { res = mmu_do_match_ttr(regs.itt0, addr, super); if (res == TTR_NO_MATCH) res = mmu_do_match_ttr(regs.itt1, addr, super); } return res; } #if DEBUG /* {{{ mmu_dump_table */ static void mmu_dump_table(const char * label, uaecptr root_ptr) { DUNUSED(label); const int ROOT_TABLE_SIZE = 128, PTR_TABLE_SIZE = 128, PAGE_TABLE_SIZE = regs.mmu_pagesize_8k ? 32 : 64, ROOT_INDEX_SHIFT = 25, PTR_INDEX_SHIFT = 18; const uae_u32 ptr_addr_mask = (regs.mmu_pagesize_8k ? MMU_PTR_PAGE_ADDR_MASK_8 : MMU_PTR_PAGE_ADDR_MASK_4); const uae_u32 page_addr_mask = (regs.mmu_pagesize_8k ? MMU_PAGE_ADDR_MASK_8 : MMU_PAGE_ADDR_MASK_4); const uae_u32 page_ur_mask = (regs.mmu_pagesize_8k ? MMU_PAGE_UR_MASK_8 : MMU_PAGE_UR_MASK_4); const uae_u32 page_size = (regs.mmu_pagesize_8k ? (1 << 13) : (1 << 12)); int root_idx, ptr_idx, page_idx; uae_u32 root_des, ptr_des, page_des; uaecptr ptr_des_addr, page_addr, root_log, ptr_log, page_log; D(bug("%s: root=%x", label, root_ptr)); for (root_idx = 0; root_idx < ROOT_TABLE_SIZE; root_idx++) { root_des = phys_get_long(root_ptr + (root_idx << 2)); if ((root_des & 2) == 0) continue; /* invalid */ D(bug("ROOT: %03d U=%d W=%d UDT=%02d", root_idx, root_des & 8 ? 1 : 0, root_des & 4 ? 1 : 0, root_des & 3 )); root_log = root_idx << ROOT_INDEX_SHIFT; ptr_des_addr = root_des & MMU_ROOT_PTR_ADDR_MASK; for (ptr_idx = 0; ptr_idx < PTR_TABLE_SIZE; ptr_idx++) { struct { uaecptr log, phys; int start_idx, n_pages; /* number of pages covered by this entry */ uae_u32 match; } page_info[PAGE_TABLE_SIZE]; int n_pages_used; ptr_des = phys_get_long(ptr_des_addr + (ptr_idx << 2)); ptr_log = root_log | (ptr_idx << PTR_INDEX_SHIFT); if ((ptr_des & 2) == 0) continue; /* invalid */ page_addr = ptr_des & ptr_addr_mask; n_pages_used = -1; for (page_idx = 0; page_idx < PAGE_TABLE_SIZE; page_idx++) { page_des = phys_get_long(page_addr + (page_idx << 2)); page_log = ptr_log | (page_idx * page_size); switch (page_des & 3) { case 0: /* invalid */ continue; case 1: case 3: /* resident */ case 2: /* indirect */ if (n_pages_used == -1 || (page_info[n_pages_used].match & ~page_addr_mask) != (page_des & ~page_addr_mask) || page_info[n_pages_used].phys + (page_info[n_pages_used].n_pages * page_size) != (page_des & page_addr_mask)) { /* use the next entry */ n_pages_used++; page_info[n_pages_used].match = page_des; page_info[n_pages_used].n_pages = 1; page_info[n_pages_used].start_idx = page_idx; page_info[n_pages_used].log = page_log; page_info[n_pages_used].phys = page_des & page_addr_mask; } else { page_info[n_pages_used].n_pages++; } break; } } if (n_pages_used == -1) continue; D(bug(" PTR: %03d U=%d W=%d UDT=%02d", ptr_idx, ptr_des & 8 ? 1 : 0, ptr_des & 4 ? 1 : 0, ptr_des & 3 )); for (page_idx = 0; page_idx <= n_pages_used; page_idx++) { page_des = page_info[page_idx].match; if ((page_des & MMU_PDT_MASK) == 2) { D(bug(" PAGE: %03d-%03d log=%08x INDIRECT --> addr=%08x", page_info[page_idx].start_idx, page_info[page_idx].start_idx + page_info[page_idx].n_pages - 1, page_info[page_idx].log, page_des & MMU_PAGE_INDIRECT_MASK )); } else { D(bug(" PAGE: %03d-%03d log=%08x addr=%08x UR=%02d G=%d U1/0=%d S=%d CM=%d M=%d U=%d W=%d", page_info[page_idx].start_idx, page_info[page_idx].start_idx + page_info[page_idx].n_pages - 1, page_info[page_idx].log, page_info[page_idx].phys, (page_des & page_ur_mask) >> MMU_PAGE_UR_SHIFT, page_des & MMU_DES_GLOBAL ? 1 : 0, (page_des & MMU_TTR_UX_MASK) >> MMU_TTR_UX_SHIFT, page_des & MMU_DES_SUPER ? 1 : 0, (page_des & MMU_TTR_CACHE_MASK) >> MMU_TTR_CACHE_SHIFT, page_des & MMU_DES_MODIFIED ? 1 : 0, page_des & MMU_DES_USED ? 1 : 0, page_des & MMU_DES_WP ? 1 : 0 )); } } } } } /* }}} */ #endif /* {{{ mmu_dump_atc */ void mmu_dump_atc(void) { int i, j; for (i = 0; i < 2; i++) { for (j = 0; j < ATC_L2_SIZE; j++) { if (atc_l2[i][j].tag == 0x8000) continue; D(bug("ATC[%02d] G=%d TT=%d M=%d WP=%d VD=%d VI=%d tag=%08x --> phys=%08x", j, atc_l2[i][j].global, atc_l2[i][j].tt, atc_l2[i][j].modified, atc_l2[i][j].write_protect, atc_l2[i][j].valid_data, atc_l2[i][j].valid_inst, atc_l2[i][j].tag, atc_l2[i][j].phys)); } } } /* }}} */ /* {{{ mmu_dump_tables */ void mmu_dump_tables(void) { D(bug("URP: %08x SRP: %08x MMUSR: %x TC: %x", regs.urp, regs.srp, regs.mmusr, regs.tc)); mmu_dump_ttr("DTT0", regs.dtt0); mmu_dump_ttr("DTT1", regs.dtt1); mmu_dump_ttr("ITT0", regs.itt0); mmu_dump_ttr("ITT1", regs.itt1); mmu_dump_atc(); //mmu_dump_table("SRP", regs.srp); } /* }}} */ static uaecptr REGPARAM2 mmu_lookup_pagetable(uaecptr addr, int super, int write); static ALWAYS_INLINE int mmu_get_fc(bool super, bool data) { return (super ? 4 : 0) | (data ? 1 : 2); } static void mmu_bus_error(uaecptr addr, int fc, int write, int size) { uae_u16 ssw = 0; ssw |= fc & MMU_SSW_TM; /* Copy TM */ switch (size) { case sz_byte: ssw |= MMU_SSW_SIZE_B; break; case sz_word: ssw |= MMU_SSW_SIZE_W; break; case sz_long: ssw |= MMU_SSW_SIZE_L; break; } regs.wb3_status = write ? 0x80 | ssw : 0; if (!write) ssw |= MMU_SSW_RW; regs.mmu_fault_addr = addr; regs.mmu_ssw = ssw | MMU_SSW_ATC; D(bug("BUS ERROR: fc=%d w=%d log=%08x ssw=%04x", fc, write, addr, ssw)); breakpt(); THROW(2); } /* * Update the atc line for a given address by doing a mmu lookup. */ static uaecptr mmu_fill_atc_l2(uaecptr addr, int super, int data, int write, struct mmu_atc_line *l) { int res; uae_u32 desc; l->tag = ATC_TAG(addr); l->hw = l->bus_fault = 0; /* check ttr0 */ res = mmu_match_ttr(addr, super, data); if (res != TTR_NO_MATCH) { l->tt = 1; if (data) { l->valid_data = 1; l->valid_inst = mmu_match_ttr(addr, super, 0) == res; } else { l->valid_inst = 1; l->valid_data = mmu_match_ttr(addr, super, 1) == res; } l->global = 1; l->modified = 1; l->write_protect = (res == TTR_NO_WRITE); l->phys = 0; return 0; } l->tt = 0; if (!regs.mmu_enabled) { l->valid_data = l->valid_inst = 1; l->global = 1; l->modified = 1; l->write_protect = 0; l->phys = 0; return 0; } SAVE_EXCEPTION; TRY(prb) { desc = mmu_lookup_pagetable(addr, super, write); D(bug("translate: %x,%u,%u,%u -> %x", addr, super, write, data, desc)); RESTORE_EXCEPTION; } CATCH(prb) { RESTORE_EXCEPTION; /* bus error during table search */ desc = 0; goto fail; } if ((desc & 1) == 0 || (!super && desc & MMU_MMUSR_S)) { fail: l->valid_data = l->valid_inst = 0; l->global = 0; } else { l->valid_data = l->valid_inst = 1; if (regs.mmu_pagesize_8k) l->phys = (desc & ~0x1fff) - (addr & ~0x1fff); else l->phys = (desc & ~0xfff) - (addr & ~0xfff); l->global = (desc & MMU_MMUSR_G) != 0; l->modified = (desc & MMU_MMUSR_M) != 0; l->write_protect = (desc & MMU_MMUSR_W) != 0; } return desc; } static ALWAYS_INLINE bool mmu_fill_atc_l1(uaecptr addr, int super, int data, int write, struct mmu_atc_line *l1) { int idx = ATC_L2_INDEX(addr); int tag = ATC_TAG(addr); struct mmu_atc_line *l = &atc_l2[super][idx]; uaecptr phys_addr; if (l->tag != tag) { restart: mmu_fill_atc_l2(addr, super, data, write, l); } if (!(data ? l->valid_data : l->valid_inst)) { D(bug("MMU: non-resident page (%x,%x,%x)!", addr, regs.pc, regs.fault_pc)); goto fail; } if (write) { if (l->write_protect) { D(bug("MMU: write protected (via %s) %x", l->tt ? "ttr" : "atc", addr)); goto fail; } if (!l->modified) goto restart; } *l1 = *l; phys_addr = addr + l1->phys; if ((phys_addr & 0xfff00000) == 0x00f00000) { l1->hw = 1; goto fail; } if ((phys_addr & 0xfff00000) == 0xfff00000) { l1->hw = 1; l1->phys -= 0xff000000; goto fail; } if (!test_ram_boundary(phys_addr, 1, super, write)) { l1->bus_fault = 1; goto fail; } return true; fail: l1->tag = ~l1->tag; return false; } uaecptr mmu_translate(uaecptr addr, int super, int data, int write) { struct mmu_atc_line *l; l = &atc_l2[super][ATC_L2_INDEX(addr)]; mmu_fill_atc_l2(addr, super, data, write, l); if (!(data ? l->valid_data : l->valid_inst)) { breakpt(); THROW(2); } return addr + l->phys; } /* * Lookup the address by walking the page table and updating * the page descriptors accordingly. Returns the found descriptor * or produces a bus error. */ static uaecptr REGPARAM2 mmu_lookup_pagetable(uaecptr addr, int super, int write) { uae_u32 desc, desc_addr, wp; int i; wp = 0; desc = super ? regs.srp : regs.urp; /* fetch root table descriptor */ i = (addr >> 23) & 0x1fc; desc_addr = (desc & MMU_ROOT_PTR_ADDR_MASK) | i; desc = phys_get_long(desc_addr); if ((desc & 2) == 0) { D(bug("MMU: invalid root descriptor for %x", addr)); return 0; } wp |= desc; if ((desc & MMU_DES_USED) == 0) phys_put_long(desc_addr, desc | MMU_DES_USED); /* fetch pointer table descriptor */ i = (addr >> 16) & 0x1fc; desc_addr = (desc & MMU_ROOT_PTR_ADDR_MASK) | i; desc = phys_get_long(desc_addr); if ((desc & 2) == 0) { D(bug("MMU: invalid ptr descriptor for %x", addr)); return 0; } wp |= desc; if ((desc & MMU_DES_USED) == 0) phys_put_long(desc_addr, desc | MMU_DES_USED); /* fetch page table descriptor */ if (regs.mmu_pagesize_8k) { i = (addr >> 11) & 0x7c; desc_addr = (desc & MMU_PTR_PAGE_ADDR_MASK_8) | i; } else { i = (addr >> 10) & 0xfc; desc_addr = (desc & MMU_PTR_PAGE_ADDR_MASK_4) | i; } desc = phys_get_long(desc_addr); if ((desc & 3) == 2) { /* indirect */ desc_addr = desc & MMU_PAGE_INDIRECT_MASK; desc = phys_get_long(desc_addr); } if ((desc & 1) == 0) { D(bug("MMU: invalid page descriptor log=%08x desc=%08x @%08x", addr, desc, desc_addr)); return desc; } desc |= wp & MMU_DES_WP; if (write) { if (desc & MMU_DES_WP) { if ((desc & MMU_DES_USED) == 0) { desc |= MMU_DES_USED; phys_put_long(desc_addr, desc); } } else if ((desc & (MMU_DES_USED|MMU_DES_MODIFIED)) != (MMU_DES_USED|MMU_DES_MODIFIED)) { desc |= MMU_DES_USED|MMU_DES_MODIFIED; phys_put_long(desc_addr, desc); } } else { if ((desc & MMU_DES_USED) == 0) { desc |= MMU_DES_USED; phys_put_long(desc_addr, desc); } } return desc; } uae_u16 mmu_get_word_unaligned(uaecptr addr, int data) { uae_u16 res; res = (uae_u16)mmu_get_byte(addr, data, sz_word) << 8; SAVE_EXCEPTION; TRY(prb) { res |= mmu_get_byte(addr + 1, data, sz_word); RESTORE_EXCEPTION; } CATCH(prb) { RESTORE_EXCEPTION; regs.mmu_fault_addr = addr; regs.mmu_ssw |= MMU_SSW_MA; breakpt(); THROW_AGAIN(prb); } return res; } uae_u32 mmu_get_long_unaligned(uaecptr addr, int data) { uae_u32 res; if (likely(!(addr & 1))) { res = (uae_u32)mmu_get_word(addr, data, sz_long) << 16; SAVE_EXCEPTION; TRY(prb) { res |= mmu_get_word(addr + 2, data, sz_long); RESTORE_EXCEPTION; } CATCH(prb) { RESTORE_EXCEPTION; regs.mmu_fault_addr = addr; regs.mmu_ssw |= MMU_SSW_MA; breakpt(); THROW_AGAIN(prb); } } else { res = (uae_u32)mmu_get_byte(addr, data, sz_long) << 8; SAVE_EXCEPTION; TRY(prb) { res = (res | mmu_get_byte(addr + 1, data, sz_long)) << 8; res = (res | mmu_get_byte(addr + 2, data, sz_long)) << 8; res |= mmu_get_byte(addr + 3, data, sz_long); RESTORE_EXCEPTION; } CATCH(prb) { RESTORE_EXCEPTION; regs.mmu_fault_addr = addr; regs.mmu_ssw |= MMU_SSW_MA; breakpt(); THROW_AGAIN(prb); } } return res; } uae_u8 mmu_get_byte_slow(uaecptr addr, int super, int data, int size, struct mmu_atc_line *cl) { uae_u32 tag = ATC_TAG(addr); if (cl->tag == (uae_u16)~tag) { redo: if (cl->hw) return HWget_b(cl->phys + addr); mmu_bus_error(addr, mmu_get_fc(super, data), 0, size); return 0; } if (!mmu_fill_atc_l1(addr, super, data, 0, cl)) goto redo; return do_get_mem_byte((uae_u8 *)mmu_get_real_address(addr, cl)); } uae_u16 mmu_get_word_slow(uaecptr addr, int super, int data, int size, struct mmu_atc_line *cl) { uae_u32 tag = ATC_TAG(addr); if (cl->tag == (uae_u16)~tag) { redo: if (cl->hw) return HWget_w(cl->phys + addr); mmu_bus_error(addr, mmu_get_fc(super, data), 0, size); return 0; } if (!mmu_fill_atc_l1(addr, super, data, 0, cl)) goto redo; return do_get_mem_word((uae_u16 *)mmu_get_real_address(addr, cl)); } uae_u32 mmu_get_long_slow(uaecptr addr, int super, int data, int size, struct mmu_atc_line *cl) { uae_u32 tag = ATC_TAG(addr); if (cl->tag == (uae_u16)~tag) { redo: if (cl->hw) return HWget_l(cl->phys + addr); mmu_bus_error(addr, mmu_get_fc(super, data), 0, size); return 0; } if (!mmu_fill_atc_l1(addr, super, data, 0, cl)) goto redo; return do_get_mem_long((uae_u32 *)mmu_get_real_address(addr, cl)); } uae_u64 mmu_get_quad_slow(uaecptr addr, int super, int data, struct mmu_atc_line *cl) { uae_u64 h = mmu_get_long_slow(addr, super, data, sz_long, cl); uae_u64 l = mmu_get_long_slow(addr + 4, super, data, sz_long, cl); return (h << 32) | l; } REGPARAM2 void mmu_put_long_unaligned(uaecptr addr, uae_u32 val, int data) { SAVE_EXCEPTION; TRY(prb) { if (likely(!(addr & 1))) { mmu_put_word(addr, val >> 16, data, sz_long); mmu_put_word(addr + 2, val, data, sz_long); } else { mmu_put_byte(addr, val >> 24, data, sz_long); mmu_put_byte(addr + 1, val >> 16, data, sz_long); mmu_put_byte(addr + 2, val >> 8, data, sz_long); mmu_put_byte(addr + 3, val, data, sz_long); } RESTORE_EXCEPTION; } CATCH(prb) { RESTORE_EXCEPTION; regs.wb3_data = val; if (regs.mmu_fault_addr != addr) { regs.mmu_fault_addr = addr; regs.mmu_ssw |= MMU_SSW_MA; } breakpt(); THROW_AGAIN(prb); } } REGPARAM2 void mmu_put_word_unaligned(uaecptr addr, uae_u16 val, int data) { SAVE_EXCEPTION; TRY(prb) { mmu_put_byte(addr, val >> 8, data, sz_word); mmu_put_byte(addr + 1, val, data, sz_word); RESTORE_EXCEPTION; } CATCH(prb) { RESTORE_EXCEPTION; regs.wb3_data = val; if (regs.mmu_fault_addr != addr) { regs.mmu_fault_addr = addr; regs.mmu_ssw |= MMU_SSW_MA; } breakpt(); THROW_AGAIN(prb); } } REGPARAM2 void mmu_put_byte_slow(uaecptr addr, uae_u8 val, int super, int data, int size, struct mmu_atc_line *cl) { uae_u32 tag = ATC_TAG(addr); if (cl->tag == (uae_u16)~tag) { redo: if (cl->hw) { HWput_b(cl->phys + addr, val); return; } regs.wb3_data = val; mmu_bus_error(addr, mmu_get_fc(super, data), 1, size); return; } if (!mmu_fill_atc_l1(addr, super, data, 1, cl)) goto redo; do_put_mem_byte((uae_u8 *)mmu_get_real_address(addr, cl), val); } REGPARAM2 void mmu_put_word_slow(uaecptr addr, uae_u16 val, int super, int data, int size, struct mmu_atc_line *cl) { uae_u32 tag = ATC_TAG(addr); if (cl->tag == (uae_u16)~tag) { redo: if (cl->hw) { HWput_w(cl->phys + addr, val); return; } regs.wb3_data = val; mmu_bus_error(addr, mmu_get_fc(super, data), 1, size); return; } if (!mmu_fill_atc_l1(addr, super, data, 1, cl)) goto redo; do_put_mem_word((uae_u16 *)mmu_get_real_address(addr, cl), val); } REGPARAM2 void mmu_put_long_slow(uaecptr addr, uae_u32 val, int super, int data, int size, struct mmu_atc_line *cl) { uae_u32 tag = ATC_TAG(addr); if (cl->tag == (uae_u16)~tag) { redo: if (cl->hw) { HWput_l(cl->phys + addr, val); return; } regs.wb3_data = val; mmu_bus_error(addr, mmu_get_fc(super, data), 1, size); return; } if (!mmu_fill_atc_l1(addr, super, data, 1, cl)) goto redo; do_put_mem_long((uae_u32 *)mmu_get_real_address(addr, cl), val); } REGPARAM2 void mmu_put_quad_slow(uaecptr addr, uae_u64 val, int super, int data, struct mmu_atc_line *cl) { mmu_put_long_slow(addr, (uae_u32)(val >> 32), super, data, sz_long, cl); mmu_put_long_slow(addr + 4, (uae_u32)(val), super, data, sz_long, cl); } uae_u32 sfc_get_long(uaecptr addr) { int super = (regs.sfc & 4) != 0; int data = (regs.sfc & 3) != 2; uae_u32 res; if (likely(!is_unaligned(addr, 4))) return mmu_get_user_long(addr, super, data, sz_long); if (likely(!(addr & 1))) { res = (uae_u32)mmu_get_user_word(addr, super, data, sz_long) << 16; SAVE_EXCEPTION; TRY(prb) { res |= mmu_get_user_word(addr + 2, super, data, sz_long); RESTORE_EXCEPTION; } CATCH(prb) { RESTORE_EXCEPTION; regs.mmu_fault_addr = addr; regs.mmu_ssw |= MMU_SSW_MA; breakpt(); THROW_AGAIN(prb); } } else { res = (uae_u32)mmu_get_user_byte(addr, super, data, sz_long) << 8; SAVE_EXCEPTION; TRY(prb) { res = (res | mmu_get_user_byte(addr + 1, super, data, sz_long)) << 8; res = (res | mmu_get_user_byte(addr + 2, super, data, sz_long)) << 8; res |= mmu_get_user_byte(addr + 3, super, data, sz_long); RESTORE_EXCEPTION; } CATCH(prb) { RESTORE_EXCEPTION; regs.mmu_fault_addr = addr; regs.mmu_ssw |= MMU_SSW_MA; breakpt(); THROW_AGAIN(prb); } } return res; } uae_u16 sfc_get_word(uaecptr addr) { int super = (regs.sfc & 4) != 0; int data = (regs.sfc & 3) != 2; uae_u16 res; if (likely(!is_unaligned(addr, 2))) return mmu_get_user_word(addr, super, data, sz_word); res = (uae_u16)mmu_get_user_byte(addr, super, data, sz_word) << 8; SAVE_EXCEPTION; TRY(prb) { res |= mmu_get_user_byte(addr + 1, super, data, sz_word); RESTORE_EXCEPTION; } CATCH(prb) { RESTORE_EXCEPTION; regs.mmu_fault_addr = addr; regs.mmu_ssw |= MMU_SSW_MA; breakpt(); THROW_AGAIN(prb); } return res; } uae_u8 sfc_get_byte(uaecptr addr) { int super = (regs.sfc & 4) != 0; int data = (regs.sfc & 3) != 2; return mmu_get_user_byte(addr, super, data, sz_byte); } void dfc_put_long(uaecptr addr, uae_u32 val) { int super = (regs.dfc & 4) != 0; int data = (regs.dfc & 3) != 2; SAVE_EXCEPTION; TRY(prb) { if (likely(!is_unaligned(addr, 4))) mmu_put_user_long(addr, val, super, data, sz_long); else if (likely(!(addr & 1))) { mmu_put_user_word(addr, val >> 16, super, data, sz_long); mmu_put_user_word(addr + 2, val, super, data, sz_long); } else { mmu_put_user_byte(addr, val >> 24, super, data, sz_long); mmu_put_user_byte(addr + 1, val >> 16, super, data, sz_long); mmu_put_user_byte(addr + 2, val >> 8, super, data, sz_long); mmu_put_user_byte(addr + 3, val, super, data, sz_long); } RESTORE_EXCEPTION; } CATCH(prb) { RESTORE_EXCEPTION; regs.wb3_data = val; if (regs.mmu_fault_addr != addr) { regs.mmu_fault_addr = addr; regs.mmu_ssw |= MMU_SSW_MA; } breakpt(); THROW_AGAIN(prb); } } void dfc_put_word(uaecptr addr, uae_u16 val) { int super = (regs.dfc & 4) != 0; int data = (regs.dfc & 3) != 2; SAVE_EXCEPTION; TRY(prb) { if (likely(!is_unaligned(addr, 2))) mmu_put_user_word(addr, val, super, data, sz_word); else { mmu_put_user_byte(addr, val >> 8, super, data, sz_word); mmu_put_user_byte(addr + 1, val, super, data, sz_word); } RESTORE_EXCEPTION; } CATCH(prb) { RESTORE_EXCEPTION; regs.wb3_data = val; if (regs.mmu_fault_addr != addr) { regs.mmu_fault_addr = addr; regs.mmu_ssw |= MMU_SSW_MA; } breakpt(); THROW_AGAIN(prb); } } void dfc_put_byte(uaecptr addr, uae_u8 val) { int super = (regs.dfc & 4) != 0; int data = (regs.dfc & 3) != 2; SAVE_EXCEPTION; TRY(prb) { mmu_put_user_byte(addr, val, super, data, sz_byte); RESTORE_EXCEPTION; } CATCH(prb) { RESTORE_EXCEPTION; regs.wb3_data = val; breakpt(); THROW_AGAIN(prb); } } void mmu_op(uae_u32 opcode, uae_u16 extra) { int super = (regs.dfc & 4) != 0; DUNUSED(extra); if ((opcode & 0xFE0) == 0x0500) { int regno, glob; //D(didflush = 0); uae_u32 addr; /* PFLUSH */ regno = opcode & 7; glob = (opcode & 8) != 0; if (opcode & 16) { D(bug("pflusha(%u,%u)", glob, regs.dfc)); mmu_flush_atc_all(glob); } else { addr = m68k_areg(regs, regno); D(bug("pflush(%u,%u,%x)", glob, regs.dfc, addr)); mmu_flush_atc(addr, super, glob); } flush_internals(); #ifdef USE_JIT flush_icache(0); #endif } else if ((opcode & 0x0FD8) == 0x548) { int write, regno; uae_u32 addr; regno = opcode & 7; write = (opcode & 32) == 0; addr = m68k_areg(regs, regno); //bug("ptest(%u,%u,%x)", write, regs.dfc, addr); D(bug("PTEST%c (A%d) %08x DFC=%d", write ? 'W' : 'R', regno, addr, regs.dfc)); mmu_flush_atc(addr, super, true); SAVE_EXCEPTION; TRY(prb) { struct mmu_atc_line *l; uae_u32 desc; bool data = (regs.dfc & 3) != 2; l = &atc_l2[super][ATC_L2_INDEX(addr)]; desc = mmu_fill_atc_l2(addr, super, data, write, l); if (!(data ? l->valid_data : l->valid_inst)) regs.mmusr = MMU_MMUSR_B; else if (l->tt) regs.mmusr = MMU_MMUSR_T | MMU_MMUSR_R; else { regs.mmusr = desc & (~0xfff|MMU_MMUSR_G|MMU_MMUSR_Ux|MMU_MMUSR_S| MMU_MMUSR_CM|MMU_MMUSR_M|MMU_MMUSR_W); regs.mmusr |= MMU_MMUSR_R; } } CATCH(prb) { regs.mmusr = MMU_MMUSR_B; } RESTORE_EXCEPTION; D(bug("PTEST result: mmusr %08x", regs.mmusr)); } else op_illg (opcode); } void mmu_flush_atc(uaecptr addr, bool super, bool global) { struct mmu_atc_line *l; int i, j; l = atc_l1[super][0][0]; i = ATC_L1_INDEX(addr); for (j = 0; j < 4; j++) { if (global || !l[i].global) l[i].tag = 0x8000; l += ATC_L1_SIZE; } if (regs.mmu_pagesize_8k) { i = ATC_L1_INDEX(addr) ^ 1; for (j = 0; j < 4; j++) { if (global || !l[i].global) l[i].tag = 0x8000; l += ATC_L1_SIZE; } } l = atc_l2[super]; i = ATC_L2_INDEX(addr); if (global || !l[i].global) l[i].tag = 0x8000; if (regs.mmu_pagesize_8k) { i ^= 1; if (global || !l[i].global) l[i].tag = 0x8000; } } void mmu_flush_atc_all(bool global) { struct mmu_atc_line *l; unsigned int i; l = atc_l1[0][0][0]; for (i = 0; i < sizeof(atc_l1) / sizeof(*l); l++, i++) { if (global || !l->global) l->tag = 0x8000; } l = atc_l2[0]; for (i = 0; i < sizeof(atc_l2) / sizeof(*l); l++, i++) { if (global || !l->global) l->tag = 0x8000; } } void mmu_reset(void) { mmu_flush_atc_all(true); regs.urp = regs.srp = 0; regs.itt0 = regs.itt1 = 0; regs.dtt0 = regs.dtt1 = 0; regs.mmusr = 0; } void mmu_set_tc(uae_u16 tc) { if (regs.tc == tc) return; regs.tc = tc; regs.mmu_enabled = tc & 0x8000 ? 1 : 0; regs.mmu_pagesize_8k = tc & 0x4000 ? 1 : 0; mmu_flush_atc_all(true); D(bug("MMU: enabled=%d page8k=%d\n", regs.mmu_enabled, regs.mmu_pagesize_8k)); } void mmu_set_super(bool super) { current_atc = &atc_l1[super]; } #else void mmu_op(uae_u32 opcode, uae_u16 /*extra*/) { if ((opcode & 0xFE0) == 0x0500) { /* PFLUSH instruction */ flush_internals(); } else if ((opcode & 0x0FD8) == 0x548) { /* PTEST instruction */ } else op_illg(opcode); } #endif /* vim:ts=4:sw=4: */ aranym-1.1.0/src/uae_cpu/cpufunctbla.cpp0000664000175000017500000000022013454637622016416 0ustar joyjoy/* * cpufunctbl.cpp must be compiled twice, once for the generator program * and once for the actual executable */ #include "cpufunctbl.cpp" aranym-1.1.0/src/uae_cpu/cpuemu8_nf.cpp0000664000175000017500000000006713454637622016172 0ustar joyjoy#define NOFLAGS 1 #define PART_8 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu8.cpp0000664000175000017500000000004513454637622015503 0ustar joyjoy#define PART_8 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu7_nf.cpp0000664000175000017500000000006713454637622016171 0ustar joyjoy#define NOFLAGS 1 #define PART_7 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu7.cpp0000664000175000017500000000004513454637622015502 0ustar joyjoy#define PART_7 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu6_nf.cpp0000664000175000017500000000006713454637622016170 0ustar joyjoy#define NOFLAGS 1 #define PART_6 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu6.cpp0000664000175000017500000000004513454637622015501 0ustar joyjoy#define PART_6 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu5_nf.cpp0000664000175000017500000000007013454637622016161 0ustar joyjoy#define NOFLAGS 1 #define PART_5 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu5.cpp0000664000175000017500000000004513454637622015500 0ustar joyjoy#define PART_5 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu4_nf.cpp0000664000175000017500000000006713454637622016166 0ustar joyjoy#define NOFLAGS 1 #define PART_4 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu4.cpp0000664000175000017500000000004513454637622015477 0ustar joyjoy#define PART_4 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu3_nf.cpp0000664000175000017500000000006713454637622016165 0ustar joyjoy#define NOFLAGS 1 #define PART_3 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu3.cpp0000664000175000017500000000004513454637622015476 0ustar joyjoy#define PART_3 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu2_nf.cpp0000664000175000017500000000006713454637622016164 0ustar joyjoy#define NOFLAGS 1 #define PART_2 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu2.cpp0000664000175000017500000000004513454637622015475 0ustar joyjoy#define PART_2 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu1_nf.cpp0000664000175000017500000000006713454637622016163 0ustar joyjoy#define NOFLAGS 1 #define PART_1 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpuemu1.cpp0000664000175000017500000000004513454637622015474 0ustar joyjoy#define PART_1 #include "cpuemu.cpp" aranym-1.1.0/src/uae_cpu/cpudefsa.cpp0000664000175000017500000000021213454637622015703 0ustar joyjoy/* * cpudefs.cpp must be compiled twice, once for the generator program * and once for the actual executable */ #include "cpudefs.cpp" aranym-1.1.0/src/uae_cpu/cpu_emulation.h0000664000175000017500000001515113454637622016432 0ustar joyjoy/* * cpu_emulation.h - CPU interface * * Copyright (c) 2001-2005 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef CPU_EMULATION_H #define CPU_EMULATION_H /* * Memory system */ #include "sysdeps.h" #include "memory-uae.h" #include "tools.h" // RAM and ROM pointers (allocated and set by main_*.cpp) extern memptr RAMBase; // RAM base (Atari address space), does not include Low Mem when != 0 extern uint8 *RAMBaseHost; // RAM base (host address space) extern uint32 RAMSize; // Size of RAM extern memptr ROMBase; // ROM base (Atari address space) extern uint8 *ROMBaseHost; // ROM base (host address space) extern uint32 ROMSize; // Size of ROM extern uint32 RealROMSize; // Real size of ROM extern memptr HWBase; // HW base (Atari address space) extern uint8 *HWBaseHost; // HW base (host address space) extern uint32 HWSize; // Size of HW space extern memptr FastRAMBase; // Fast-RAM base (Atari address space) extern uint8 *FastRAMBaseHost; // Fast-RAM base (host address space) extern memptr VideoRAMBase; // VideoRAM base (Atari address space) extern uint8 *VideoRAMBaseHost; // VideoRAM base (host address space) #ifdef HW_SIGSEGV extern uint8 *FakeIOBaseHost; #endif #ifdef RAMENDNEEDED # define RAMEnd 0x01000000 // Not accessible top of memory #else # define RAMEnd 0 #endif // Atari memory access functions // Direct access to CPU address space // For HW operations // Read/WriteAtariIntXX // static inline uint64 ReadAtariInt64(memptr addr) {return phys_get_quad(addr);} static inline uint32 ReadAtariInt32(memptr addr) {return phys_get_long(addr);} static inline uint16 ReadAtariInt16(memptr addr) {return phys_get_word(addr);} static inline uint8 ReadAtariInt8(memptr addr) {return phys_get_byte(addr);} static inline void WriteAtariInt64(memptr addr, uint64 q) {phys_put_quad(addr, q);} static inline void WriteAtariInt32(memptr addr, uint32 l) {phys_put_long(addr, l);} static inline void WriteAtariInt16(memptr addr, uint16 w) {phys_put_word(addr, w);} static inline void WriteAtariInt8(memptr addr, uint8 b) {phys_put_byte(addr, b);} // Direct access to allocated memory // Ignores HW checks, so that be carefull // Read/WriteHWMemIntXX // static inline uint32 ReadHWMemInt32(memptr addr) {return do_get_mem_long((uae_u32 *)phys_get_real_address(addr));} static inline uint16 ReadHWMemInt16(memptr addr) {return do_get_mem_word((uae_u16 *)phys_get_real_address(addr));} static inline uint8 ReadHWMemInt8(memptr addr) {return do_get_mem_byte((uae_u8 *)phys_get_real_address(addr));} static inline void WriteHWMemInt32(memptr addr, uint32 l) {do_put_mem_long((uae_u32 *)phys_get_real_address(addr), l);} static inline void WriteHWMemInt16(memptr addr, uint16 w) {do_put_mem_word((uae_u16 *)phys_get_real_address(addr), w);} static inline void WriteHWMemInt8(memptr addr, uint8 b) {do_put_mem_byte((uae_u8 *)phys_get_real_address(addr), b);} // Indirect access to CPU address space // Uses MMU if available // For SW operations // Only data space // Read/WriteIntXX // static inline uint64 ReadInt64(memptr addr) {return get_quad(addr);} static inline uint32 ReadInt32(memptr addr) {return get_long(addr);} static inline uint16 ReadInt16(memptr addr) {return get_word(addr);} static inline uint8 ReadInt8(memptr addr) {return get_byte(addr);} static inline void WriteInt64(memptr addr, uint64 q) {put_quad(addr, q);} static inline void WriteInt32(memptr addr, uint32 l) {put_long(addr, l);} static inline void WriteInt16(memptr addr, uint16 w) {put_word(addr, w);} static inline void WriteInt8(memptr addr, uint8 b) {put_byte(addr, b);} #ifdef EXTENDED_SIGSEGV extern int in_handler; #ifdef NO_NESTED_SIGSEGV extern JMP_BUF sigsegv_env; # define BUS_ERROR(a) \ { \ regs.mmu_fault_addr=(a); \ if (in_handler) \ { \ in_handler = 0; \ LONGJMP(sigsegv_env, 1); \ } \ else { \ breakpt(); \ THROW(2); \ } \ } #else /* NO_NESTED_SIGSEGV */ # define BUS_ERROR(a) \ { \ regs.mmu_fault_addr=(a); \ in_handler = 0; \ breakpt(); \ THROW(2); \ } #endif /* NO_NESTED_SIGSEGV */ #else /* EXTENDED_SIGSEGV */ # define BUS_ERROR(a) \ { \ regs.mmu_fault_addr=(a); \ breakpt(); \ THROW(2); \ } #endif /* EXTENDED_SIGSEGV */ // For address validation static inline bool ValidAtariAddr(memptr addr, bool write, uint32 len) { return phys_valid_address(addr, write, len); } static inline bool ValidAddr(memptr addr, bool write, uint32 len) { return valid_address(addr, write, len); } // Helper functions for usual memory operations static inline uint8 *Atari2HostAddr(memptr addr) {return phys_get_real_address(addr);} // From newcpu.cpp extern int quit_program; extern int exit_val; /* * 680x0 emulation */ // Initialization extern bool InitMEM(); extern bool Init680x0(void); extern void Reset680x0(void); extern void Exit680x0(void); extern void AtariReset(void); // 680x0 emulation functions struct M68kRegisters; extern void Start680x0(void); // Reset and start 680x0 extern void Restart680x0(void); // Restart running 680x0 extern void Quit680x0(void); // Quit 680x0 // Interrupt functions extern int MFPdoInterrupt(void); extern int SCCdoInterrupt(void); extern void TriggerInternalIRQ(void); extern void TriggerInt3(void); // Trigger interrupt level 3 extern void TriggerVBL(void); // Trigger interrupt level 4 extern void TriggerInt5(void); // Trigger interrupt level 5 extern void TriggerSCC(bool); // Trigger interrupt level 5 extern void TriggerMFP(bool); // Trigger interrupt level 6 extern void TriggerNMI(void); // Trigger interrupt level 7 #ifdef FLIGHT_RECORDER extern void cpu_flight_recorder(int); extern void dump_flight_recorder(void); #endif // CPU looping handlers void check_eps_limit(uaecptr); void report_double_bus_error(void); // This function will be removed static inline uaecptr showPC(void) { return m68k_getpc(); } // for debugging only #endif /* vim:ts=4:sw=4: */ aranym-1.1.0/src/uae_cpu/compiler/0000775000175000017500000000000013454637641015225 5ustar joyjoyaranym-1.1.0/src/uae_cpu/compiler/test_codegen_x86.cpp0000664000175000017500000005543413454637622021113 0ustar joyjoy/******************** -*- mode: C; tab-width: 8 -*- ******************** * * Dumb and Brute Force Run-time assembler verifier for IA-32 and AMD64 * ***********************************************************************/ /*********************************************************************** * * Copyright 2004 Gwenole Beauchesne * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ***********************************************************************/ /* * STATUS: 5.5M variations covering unary register based operations, * reg/reg operations, imm/reg operations. * * TODO: * - Rewrite to use internal BFD/opcodes format instead of string compares * - Add reg/mem, imm/mem variations */ #define _BSD_SOURCE 1 #include #include #include #include #include #include #include "sysdeps.h" #undef abort #define abort() do { \ fprintf(stderr, "ABORT: %s, line %d\n", __FILE__, __LINE__); \ (abort)(); \ } while (0) #define X86_TARGET_64BIT 1 #define X86_FLAT_REGISTERS 0 #define X86_OPTIMIZE_ALU 1 #define X86_OPTIMIZE_ROTSHI 1 #include "compiler/codegen_x86.h" #define x86_emit_byte(B) emit_byte(B) #define x86_emit_word(W) emit_word(W) #define x86_emit_long(L) emit_long(L) #define x86_emit_quad(Q) emit_quad(Q) #define x86_get_target() get_target() #define x86_emit_failure(MSG) jit_fail(MSG, __FILE__, __LINE__, __FUNCTION__) static void jit_fail(const char *msg, const char *file, int line, const char *function) { fprintf(stderr, "JIT failure in function %s from file %s at line %d: %s\n", function, file, line, msg); abort(); } static uint8 *target; static inline void emit_byte(uint8 x) { *target++ = x; } static inline void emit_word(uint16 x) { *((uint16 *)target) = x; target += 2; } static inline void emit_long(uint32 x) { *((uint32 *)target) = x; target += 4; } static inline void emit_quad(uint64 x) { *((uint64 *)target) = x; target += 8; } static inline void set_target(uint8 *t) { target = t; } static inline uint8 *get_target(void) { return target; } static uint32 mon_read_byte(uintptr addr) { uint8 *m = (uint8 *)addr; return (uint32)(*m); } extern "C" { #include "disass/dis-asm.h" int buffer_read_memory(bfd_vma from, bfd_byte *to, unsigned int length, struct disassemble_info *info) { while (length--) *to++ = mon_read_byte(from++); return 0; } void perror_memory(int status, bfd_vma memaddr, struct disassemble_info *info) { info->fprintf_func(info->stream, "Unknown error %d\n", status); } void generic_print_address(bfd_vma addr, struct disassemble_info *info) { if (addr >= UVAL64(0x100000000)) info->fprintf_func(info->stream, "$%08x%08x", (uint32)(addr >> 32), (uint32)addr); else info->fprintf_func(info->stream, "$%08x", (uint32)addr); } int generic_symbol_at_address(bfd_vma addr, struct disassemble_info *info) { return 0; } } struct SFILE { char *buffer; char *current; }; static int mon_sprintf(SFILE *f, const char *format, ...) { int n; va_list args; va_start(args, format); vsprintf(f->current, format, args); f->current += n = strlen(f->current); va_end(args); return n; } static int disass_x86(char *buf, uintptr adr) { disassemble_info info; SFILE sfile; sfile.buffer = buf; sfile.current = buf; INIT_DISASSEMBLE_INFO(info, (FILE *)&sfile, (fprintf_ftype)mon_sprintf); info.mach = bfd_mach_x86_64; info.disassembler_options = "suffix"; return print_insn_i386(adr, &info); } enum { op_disp, op_reg, op_base, op_index, op_scale, op_imm, }; struct operand_t { int32 disp; int8 reg; int8 base; int8 index; int8 scale; int64 imm; void clear() { disp = imm = 0; reg = base = index = -1; scale = 1; } void fill(int optype, int value) { switch (optype) { case op_disp: disp = value; break; case op_reg: reg = value; break; case op_base: base = value; break; case op_index: index = value; break; case op_scale: scale = value; break; case op_imm: imm = value; break; default: abort(); } } }; struct insn_t { char name[16]; int n_operands; #define MAX_OPERANDS 3 operand_t operands[MAX_OPERANDS]; void clear() { memset(name, 0, sizeof(name)); n_operands = 0; for (int i = 0; i < MAX_OPERANDS; i++) operands[i].clear(); } void pretty_print() { printf("%s, %d operands\n", name, n_operands); for (int i = 0; i < n_operands; i++) { operand_t *op = &operands[i]; if (op->reg != -1) printf(" reg r%d\n", op->reg); else { printf(" mem 0x%08x(", op->disp); if (op->base != -1) printf("r%d", op->base); printf(","); if (op->index != -1) printf("r%d", op->index); printf(","); if (op->base != -1 || op->index != -1) printf("%d", op->scale); printf(")\n"); } } } }; static const struct { const char *name; int reg; } regnames[] = { #define _(REG) { #REG, X86_##REG } _(AL), _(CL), _(DL), _(BL), _(AH), _(CH), _(DH), _(BH), _(SPL), _(BPL), _(SIL), _(DIL), _(R8B), _(R9B), _(R10B), _(R11B), _(R12B), _(R13B), _(R14B), _(R15B), _(AX), _(CX), _(DX), _(BX), _(SP), _(BP), _(SI), _(DI), _(R8W), _(R9W), _(R10W), _(R11W), _(R12W), _(R13W), _(R14W), _(R15W), _(EAX), _(ECX), _(EDX), _(EBX), _(ESP), _(EBP), _(ESI), _(EDI), _(R8D), _(R9D), _(R10D), _(R11D), _(R12D), _(R13D), _(R14D), _(R15D), _(RAX), _(RCX), _(RDX), _(RBX), _(RSP), _(RBP), _(RSI), _(RDI), _(R8), _(R9), _(R10), _(R11), _(R12), _(R13), _(R14), _(R15), { NULL, -1 } #undef _ }; static int parse_reg(operand_t *op, int optype, char *buf) { for (int i = 0; regnames[i].name; i++) { int len = strlen(regnames[i].name); if (strncasecmp(regnames[i].name, buf, len) == 0) { op->fill(optype, regnames[i].reg); return len; } } return 0; } static int parse_mem(operand_t *op, char *buf) { char *p = buf; if (strncmp(buf, "0x", 2) == 0) { unsigned long val = strtoul(buf, &p, 16); if (val == 0 && errno == EINVAL) abort(); op->disp = val; } if (*p == '(') { p++; if (*p == '%') { p++; int n = parse_reg(op, op_base, p); if (n <= 0) return -3; p += n; } if (*p == ',') { p++; if (*p == '%') { int n = parse_reg(op, op_index, ++p); if (n <= 0) return -4; p += n; if (*p != ',') return -5; p++; goto do_parse_scale; } else if (isdigit(*p)) { do_parse_scale: long val = strtol(p, &p, 10); if (val == 0 && errno == EINVAL) abort(); op->scale = val; } } if (*p != ')') return -6; p++; } return p - buf; } static void parse_insn(insn_t *ii, char *buf) { char *p = buf; ii->clear(); for (int i = 0; !isspace(*p); i++) ii->name[i] = *p++; while (*p && isspace(*p)) p++; if (*p == '\0') return; int n_operands = 0; int optype = op_reg; bool done = false; while (!done) { int n; switch (*p) { case '%': n = parse_reg(&ii->operands[n_operands], optype, ++p); if (n <= 0) { fprintf(stderr, "parse_reg(%s) error %d\n", p, n); abort(); } p += n; break; case '0': case '(': n = parse_mem(&ii->operands[n_operands], p); if (n <= 0) { fprintf(stderr, "parse_mem(%s) error %d\n", p, n); abort(); } p += n; break; case '$': { unsigned long val = strtoul(++p, &p, 16); if (val == 0 && errno == EINVAL) abort(); ii->operands[n_operands].imm = val; break; } case '*': p++; break; case ',': n_operands++; p++; break; case ' ': case '\t': p++; break; case '\0': done = true; break; default: fprintf(stderr, "parse error> %s\n", p); abort(); } } ii->n_operands = n_operands + 1; } static long n_tests, n_failures; static long n_all_tests, n_all_failures; static bool check_reg(insn_t *ii, const char *name, int r) { if (strcasecmp(ii->name, name) != 0) { fprintf(stderr, "ERROR: instruction mismatch, expected %s, got %s\n", name, ii->name); return false; } if (ii->n_operands != 1) { fprintf(stderr, "ERROR: instruction expected 1 operand, got %d\n", ii->n_operands); return false; } int reg = ii->operands[0].reg; if (reg != r) { fprintf(stderr, "ERROR: instruction expected r%d as source, got ", r); if (reg == -1) fprintf(stderr, "nothing\n"); else fprintf(stderr, "%d\n", reg); return false; } return true; } static bool check_reg_reg(insn_t *ii, const char *name, int s, int d) { if (strcasecmp(ii->name, name) != 0) { fprintf(stderr, "ERROR: instruction mismatch, expected %s, got %s\n", name, ii->name); return false; } if (ii->n_operands != 2) { fprintf(stderr, "ERROR: instruction expected 2 operands, got %d\n", ii->n_operands); return false; } int srcreg = ii->operands[0].reg; int dstreg = ii->operands[1].reg; if (srcreg != s) { fprintf(stderr, "ERROR: instruction expected r%d as source, got ", s); if (srcreg == -1) fprintf(stderr, "nothing\n"); else fprintf(stderr, "%d\n", srcreg); return false; } if (dstreg != d) { fprintf(stderr, "ERROR: instruction expected r%d as destination, got ", d); if (dstreg == -1) fprintf(stderr, "nothing\n"); else fprintf(stderr, "%d\n", dstreg); return false; } return true; } static bool check_imm_reg(insn_t *ii, const char *name, uint32 v, int d, int mode = -1) { if (strcasecmp(ii->name, name) != 0) { fprintf(stderr, "ERROR: instruction mismatch, expected %s, got %s\n", name, ii->name); return false; } if (ii->n_operands != 2) { fprintf(stderr, "ERROR: instruction expected 2 operands, got %d\n", ii->n_operands); return false; } uint32 imm = ii->operands[0].imm; int dstreg = ii->operands[1].reg; if (mode == -1) { char suffix = name[strlen(name) - 1]; switch (suffix) { case 'b': mode = 1; break; case 'w': mode = 2; break; case 'l': mode = 4; break; case 'q': mode = 8; break; } } switch (mode) { case 1: v &= 0xff; break; case 2: v &= 0xffff; break; } if (imm != v) { fprintf(stderr, "ERROR: instruction expected 0x%08x as immediate, got ", v); if (imm == -1) fprintf(stderr, "nothing\n"); else fprintf(stderr, "0x%08x\n", imm); return false; } if (dstreg != d) { fprintf(stderr, "ERROR: instruction expected r%d as destination, got ", d); if (dstreg == -1) fprintf(stderr, "nothing\n"); else fprintf(stderr, "%d\n", dstreg); return false; } return true; } static bool check_mem_reg(insn_t *ii, const char *name, uint32 D, int B, int I, int S, int R) { if (strcasecmp(ii->name, name) != 0) { fprintf(stderr, "ERROR: instruction mismatch, expected %s, got %s\n", name, ii->name); return false; } if (ii->n_operands != 2) { fprintf(stderr, "ERROR: instruction expected 2 operands, got %d\n", ii->n_operands); return false; } operand_t *mem = &ii->operands[0]; operand_t *reg = &ii->operands[1]; uint32 d = mem->disp; int b = mem->base; int i = mem->index; int s = mem->scale; int r = reg->reg; if (d != D) { fprintf(stderr, "ERROR: instruction expected 0x%08x as displacement, got 0x%08x\n", D, d); return false; } if (b != B) { fprintf(stderr, "ERROR: instruction expected r%d as base, got r%d\n", B, b); return false; } if (i != I) { fprintf(stderr, "ERROR: instruction expected r%d as index, got r%d\n", I, i); return false; } if (s != S) { fprintf(stderr, "ERROR: instruction expected %d as scale factor, got %d\n", S, s); return false; } if (r != R) { fprintf(stderr, "ERROR: instruction expected r%d as reg operand, got r%d\n", R, r); return false; } return true; } static int verbose = 2; int main(void) { static char buffer[1024]; #define MAX_INSN_LENGTH 16 #define MAX_INSNS 1024 static uint8 block[MAX_INSNS * MAX_INSN_LENGTH]; static char *insns[MAX_INSNS]; static int modes[MAX_INSNS]; n_all_tests = n_all_failures = 0; printf("Testing reg forms\n"); n_tests = n_failures = 0; for (int r = 0; r < 16; r++) { set_target(block); uint8 *b = get_target(); int i = 0; #define GEN(INSN, GENOP) do { \ insns[i++] = INSN; \ GENOP##r(r); \ } while (0) #define GENA(INSN, GENOP) do { \ GEN(INSN "b", GENOP##B); \ GEN(INSN "w", GENOP##W); \ GEN(INSN "l", GENOP##L); \ GEN(INSN "q", GENOP##Q); \ } while (0) GENA("not", NOT); GENA("neg", NEG); GENA("mul", MUL); GENA("imul", IMUL); GENA("div", DIV); GENA("idiv", IDIV); GENA("dec", DEC); GENA("inc", INC); GEN("callq", CALLs); GEN("jmpq", JMPs); GEN("pushl", PUSHQ); // FIXME: disass bug? wrong suffix GEN("popl", POPQ); // FIXME: disass bug? wrong suffix GEN("bswap", BSWAPL); // FIXME: disass bug? no suffix GEN("bswap", BSWAPQ); // FIXME: disass bug? no suffix GEN("seto", SETO); GEN("setno", SETNO); GEN("setb", SETB); GEN("setae", SETAE); GEN("sete", SETE); GEN("setne", SETNE); GEN("setbe", SETBE); GEN("seta", SETA); GEN("sets", SETS); GEN("setns", SETNS); GEN("setp", SETP); GEN("setnp", SETNP); GEN("setl", SETL); GEN("setge", SETGE); GEN("setle", SETLE); GEN("setg", SETG); #undef GENA #undef GEN int last_insn = i; uint8 *e = get_target(); uint8 *p = b; i = 0; while (p < e) { int n = disass_x86(buffer, (uintptr)p); insn_t ii; parse_insn(&ii, buffer); if (!check_reg(&ii, insns[i], r)) { if (verbose > 1) fprintf(stderr, "%s\n", buffer); n_failures++; } p += n; i += 1; n_tests++; } if (i != last_insn) abort(); } printf(" done %ld/%ld\n", n_tests - n_failures, n_tests); n_all_tests += n_tests; n_all_failures += n_failures; printf("Testing reg,reg forms\n"); n_tests = n_failures = 0; for (int s = 0; s < 16; s++) { for (int d = 0; d < 16; d++) { set_target(block); uint8 *b = get_target(); int i = 0; #define GEN(INSN, GENOP) do { \ insns[i++] = INSN; \ GENOP##rr(s, d); \ } while (0) #define GEN1(INSN, GENOP, OP) do { \ insns[i++] = INSN; \ GENOP##rr(OP, s, d); \ } while (0) #define GENA(INSN, GENOP) do { \ GEN(INSN "b", GENOP##B); \ GEN(INSN "w", GENOP##W); \ GEN(INSN "l", GENOP##L); \ GEN(INSN "q", GENOP##Q); \ } while (0) GENA("adc", ADC); GENA("add", ADD); GENA("and", AND); GENA("cmp", CMP); GENA("or", OR); GENA("sbb", SBB); GENA("sub", SUB); GENA("xor", XOR); GENA("mov", MOV); GEN("btw", BTW); GEN("btl", BTL); GEN("btq", BTQ); GEN("btcw", BTCW); GEN("btcl", BTCL); GEN("btcq", BTCQ); GEN("btrw", BTRW); GEN("btrl", BTRL); GEN("btrq", BTRQ); GEN("btsw", BTSW); GEN("btsl", BTSL); GEN("btsq", BTSQ); GEN("imulw", IMULW); GEN("imull", IMULL); GEN("imulq", IMULQ); GEN1("cmove", CMOVW, X86_CC_Z); GEN1("cmove", CMOVL, X86_CC_Z); GEN1("cmove", CMOVQ, X86_CC_Z); GENA("test", TEST); GENA("cmpxchg", CMPXCHG); GENA("xadd", XADD); GENA("xchg", XCHG); GEN("bsfw", BSFW); GEN("bsfl", BSFL); GEN("bsfq", BSFQ); GEN("bsrw", BSRW); GEN("bsrl", BSRL); GEN("bsrq", BSRQ); GEN("movsbw", MOVSBW); GEN("movsbl", MOVSBL); GEN("movsbq", MOVSBQ); GEN("movzbw", MOVZBW); GEN("movzbl", MOVZBL); GEN("movzbq", MOVZBQ); GEN("movswl", MOVSWL); GEN("movswq", MOVSWQ); GEN("movzwl", MOVZWL); GEN("movzwq", MOVZWQ); GEN("movslq", MOVSLQ); #undef GENA #undef GEN1 #undef GEN int last_insn = i; uint8 *e = get_target(); uint8 *p = b; i = 0; while (p < e) { int n = disass_x86(buffer, (uintptr)p); insn_t ii; parse_insn(&ii, buffer); if (!check_reg_reg(&ii, insns[i], s, d)) { if (verbose > 1) fprintf(stderr, "%s\n", buffer); n_failures++; } p += n; i += 1; n_tests++; } if (i != last_insn) abort(); } } printf(" done %ld/%ld\n", n_tests - n_failures, n_tests); n_all_tests += n_tests; n_all_failures += n_failures; printf("Testing cl,reg forms\n"); n_tests = n_failures = 0; for (int d = 0; d < 16; d++) { set_target(block); uint8 *b = get_target(); int i = 0; #define GEN(INSN, GENOP) do { \ insns[i++] = INSN; \ GENOP##rr(X86_CL, d); \ } while (0) #define GENA(INSN, GENOP) do { \ GEN(INSN "b", GENOP##B); \ GEN(INSN "w", GENOP##W); \ GEN(INSN "l", GENOP##L); \ GEN(INSN "q", GENOP##Q); \ } while (0) GENA("rol", ROL); GENA("ror", ROR); GENA("rcl", RCL); GENA("rcr", RCR); GENA("shl", SHL); GENA("shr", SHR); GENA("sar", SAR); #undef GENA #undef GEN int last_insn = i; uint8 *e = get_target(); uint8 *p = b; i = 0; while (p < e) { int n = disass_x86(buffer, (uintptr)p); insn_t ii; parse_insn(&ii, buffer); if (!check_reg_reg(&ii, insns[i], X86_CL, d)) { if (verbose > 1) fprintf(stderr, "%s\n", buffer); n_failures++; } p += n; i += 1; n_tests++; } if (i != last_insn) abort(); } printf(" done %ld/%ld\n", n_tests - n_failures, n_tests); n_all_tests += n_tests; n_all_failures += n_failures; printf("Testing imm,reg forms\n"); static const uint32 imm_table[] = { 0x00000000, 0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010, 0x00000020, 0x00000040, 0x00000080, 0x000000fe, 0x000000ff, 0x00000100, 0x00000101, 0x00000102, 0xfffffffe, 0xffffffff, 0x00000000, 0x10000000, 0x20000000, 0x30000000, 0x40000000, 0x50000000, 0x60000000, 0x70000000, 0x80000000, 0x90000000, 0xa0000000, 0xb0000000, 0xc0000000, 0xd0000000, 0xe0000000, 0xf0000000, 0xfffffffd, 0xfffffffe, 0xffffffff, 0x00000001, 0x00000002, 0x00000003, 0x11111111, 0x22222222, 0x33333333, 0x44444444, 0x55555555, 0x66666666, 0x77777777, 0x88888888, 0x99999999, 0xaaaaaaaa, 0xbbbbbbbb, 0xcccccccc, 0xdddddddd, 0xeeeeeeee, }; const int n_imm_tab_count = sizeof(imm_table)/sizeof(imm_table[0]); n_tests = n_failures = 0; for (int j = 0; j < n_imm_tab_count; j++) { const uint32 value = imm_table[j]; for (int d = 0; d < 16; d++) { set_target(block); uint8 *b = get_target(); int i = 0; #define GEN(INSN, GENOP) do { \ insns[i] = INSN; \ modes[i] = -1; \ i++; GENOP##ir(value, d); \ } while (0) #define GENM(INSN, GENOP, MODE) do { \ insns[i] = INSN; \ modes[i] = MODE; \ i++; GENOP##ir(value, d); \ } while (0) #define GENA(INSN, GENOP) do { \ GEN(INSN "b", GENOP##B); \ GEN(INSN "w", GENOP##W); \ GEN(INSN "l", GENOP##L); \ GEN(INSN "q", GENOP##Q); \ } while (0) #define GENAM(INSN, GENOP, MODE) do { \ GENM(INSN "b", GENOP##B, MODE); \ GENM(INSN "w", GENOP##W, MODE); \ GENM(INSN "l", GENOP##L, MODE); \ GENM(INSN "q", GENOP##Q, MODE); \ } while (0) GENA("adc", ADC); GENA("add", ADD); GENA("and", AND); GENA("cmp", CMP); GENA("or", OR); GENA("sbb", SBB); GENA("sub", SUB); GENA("xor", XOR); GENA("mov", MOV); GENM("btw", BTW, 1); GENM("btl", BTL, 1); GENM("btq", BTQ, 1); GENM("btcw", BTCW, 1); GENM("btcl", BTCL, 1); GENM("btcq", BTCQ, 1); GENM("btrw", BTRW, 1); GENM("btrl", BTRL, 1); GENM("btrq", BTRQ, 1); GENM("btsw", BTSW, 1); GENM("btsl", BTSL, 1); GENM("btsq", BTSQ, 1); if (value != 1) { GENAM("rol", ROL, 1); GENAM("ror", ROR, 1); GENAM("rcl", RCL, 1); GENAM("rcr", RCR, 1); GENAM("shl", SHL, 1); GENAM("shr", SHR, 1); GENAM("sar", SAR, 1); } GENA("test", TEST); #undef GENAM #undef GENA #undef GENM #undef GEN int last_insn = i; uint8 *e = get_target(); uint8 *p = b; i = 0; while (p < e) { int n = disass_x86(buffer, (uintptr)p); insn_t ii; parse_insn(&ii, buffer); if (!check_imm_reg(&ii, insns[i], value, d, modes[i])) { if (verbose > 1) fprintf(stderr, "%s\n", buffer); n_failures++; } p += n; i += 1; n_tests++; } if (i != last_insn) abort(); } } printf(" done %ld/%ld\n", n_tests - n_failures, n_tests); n_all_tests += n_tests; n_all_failures += n_failures; printf("Testing mem,reg forms\n"); n_tests = n_failures = 0; static const uint32 off_table[] = { 0x00000000, 0x00000001, 0x00000040, 0x00000080, 0x000000ff, 0x00000100, 0xfffffffe, 0xffffffff, }; const int off_table_count = sizeof(off_table) / sizeof(off_table[0]); for (int d = 0; d < off_table_count; d++) { const uint32 D = off_table[d]; for (int B = -1; B < 16; B++) { for (int I = -1; I < 16; I++) { if (I == X86_RSP) continue; for (int S = 1; S < 8; S *= 2) { if (I == -1) continue; for (int r = 0; r < 16; r++) { set_target(block); uint8 *b = get_target(); int i = 0; #define GEN(INSN, GENOP) do { \ insns[i++] = INSN; \ GENOP##mr(D, B, I, S, r); \ } while (0) #define GENA(INSN, GENOP) do { \ GEN(INSN "b", GENOP##B); \ GEN(INSN "w", GENOP##W); \ GEN(INSN "l", GENOP##L); \ GEN(INSN "q", GENOP##Q); \ } while (0) GENA("adc", ADC); GENA("add", ADD); GENA("and", AND); GENA("cmp", CMP); GENA("or", OR); GENA("sbb", SBB); GENA("sub", SUB); GENA("xor", XOR); GENA("mov", MOV); GEN("imulw", IMULW); GEN("imull", IMULL); GEN("imulq", IMULQ); GEN("bsfw", BSFW); GEN("bsfl", BSFL); GEN("bsfq", BSFQ); GEN("bsrw", BSRW); GEN("bsrl", BSRL); GEN("bsrq", BSRQ); GEN("movsbw", MOVSBW); GEN("movsbl", MOVSBL); GEN("movsbq", MOVSBQ); GEN("movzbw", MOVZBW); GEN("movzbl", MOVZBL); GEN("movzbq", MOVZBQ); GEN("movswl", MOVSWL); GEN("movswq", MOVSWQ); GEN("movzwl", MOVZWL); GEN("movzwq", MOVZWQ); GEN("movslq", MOVSLQ); #undef GENA #undef GEN int last_insn = i; uint8 *e = get_target(); uint8 *p = b; i = 0; while (p < e) { int n = disass_x86(buffer, (uintptr)p); insn_t ii; parse_insn(&ii, buffer); if (!check_mem_reg(&ii, insns[i], D, B, I, S, r)) { if (verbose > 1) fprintf(stderr, "%s\n", buffer); n_failures++; } p += n; i += 1; n_tests++; } if (i != last_insn) abort(); } } } } } printf(" done %ld/%ld\n", n_tests - n_failures, n_tests); n_all_tests += n_tests; n_all_failures += n_failures; printf("\n"); printf("All %ld tests run, %ld failures\n", n_all_tests, n_all_failures); } aranym-1.1.0/src/uae_cpu/compiler/test_codegen_arm.c0000664000175000017500000002770213454637622020702 0ustar joyjoy/* Example of using sigaction() to setup a signal handler with 3 arguments * including siginfo_t. */ #include #include #include #include #include "flags_arm.h" #include "codegen_arm.h" #define TEST(c,ex,s) { c; if (opcode != ex) printf("(%s) Invalid opcode %x expected %x\n", s, opcode, ex); } int opcode; void emit_long(v) { opcode = v; } int main (int argc, char *argv[]) { TEST(MOV_ri(8, 15), 0xe3a0800f, "mov r8,#15"); TEST(MOV_rr(8,9), 0xe1a08009, "mov r8, r9"); TEST(MOV_rrLSLi(8,9,5), 0xe1a08289, "lsl r8, r9, #5"); TEST(MOV_rrLSLr(8,9,7), 0xe1a08719, "lsl r8, r9, r7"); TEST(MOV_rrLSRi(8,9,5), 0xe1a082a9, "lsr r8, r9, #5"); TEST(MOV_rrLSRr(8,9,7), 0xe1a08739, "lsr r8, r9, r7"); TEST(MOV_rrASRi(8,9,5), 0xe1a082c9, "asr r8, r9, #5"); TEST(MOV_rrASRr(8,9,7), 0xe1a08759, "asr r8, r9, r7"); TEST(MOV_rrRORi(8,9,5), 0xe1a082e9, "ror r8, r9, #5"); TEST(MOV_rrRORr(8,9,7), 0xe1a08779, "ror r8, r9, r7"); TEST(MOV_rrRRX(8,9), 0xe1a08069, "rrx r8, r9"); TEST(MOVS_ri(8, 15), 0xe3b0800f, "movs r8,#15"); TEST(MOVS_rr(8,9), 0xe1b08009, "movs r8, r9"); TEST(MOVS_rrLSLi(8,9,5), 0xe1b08289, "lsls r8, r9, #5"); TEST(MOVS_rrLSLr(8,9,7), 0xe1b08719, "lsls r8, r9, r7"); TEST(MOVS_rrLSRi(8,9,5), 0xe1b082a9, "lsrs r8, r9, #5"); TEST(MOVS_rrLSRr(8,9,7), 0xe1b08739, "lsrs r8, r9, r7"); TEST(MOVS_rrASRi(8,9,5), 0xe1b082c9, "asrs r8, r9, #5"); TEST(MOVS_rrASRr(8,9,7), 0xe1b08759, "asrs r8, r9, r7"); TEST(MOVS_rrRORi(8,9,5), 0xe1b082e9, "rors r8, r9, #5"); TEST(MOVS_rrRORr(8,9,7), 0xe1b08779, "rors r8, r9, r7"); TEST(MOVS_rrRRX(8,9), 0xe1b08069, "rrxs r8, r9"); TEST(MVN_ri(8, 15), 0xe3e0800f, "mvn r8,#15"); TEST(MVN_rr(8,9), 0xe1e08009, "mvn r8, r9"); TEST(MVN_rrLSLi(8,9,5), 0xe1e08289, "mvn r8, r9, lsl #5"); TEST(MVN_rrLSLr(8,9,7), 0xe1e08719, "mvn r8, r9, lsl r7"); TEST(MVN_rrLSRi(8,9,5), 0xe1e082a9, "mvn r8, r9, lsr #5"); TEST(MVN_rrLSRr(8,9,7), 0xe1e08739, "mvn r8, r9, lsr r7"); TEST(MVN_rrASRi(8,9,5), 0xe1e082c9, "mvn r8, r9, asr #5"); TEST(MVN_rrASRr(8,9,7), 0xe1e08759, "mvn r8, r9, asr r7"); TEST(MVN_rrRORi(8,9,5), 0xe1e082e9, "mvn r8, r9, ror #5"); TEST(MVN_rrRORr(8,9,7), 0xe1e08779, "mvn r8, r9, ror r7"); TEST(MVN_rrRRX(8,9), 0xe1e08069, "mvn r8, r9, rrx"); TEST(CMP_ri(8, 15), 0xe358000f, "cmp r8,#15"); TEST(CMP_rr(8,9), 0xe1580009, "cmp r8, r9"); TEST(CMP_rrLSLi(8,9,5), 0xe1580289, "cmp r8, r9, #5"); TEST(CMP_rrLSLr(8,9,7), 0xe1580719, "cmp r8, r9, r7"); TEST(CMP_rrLSRi(8,9,5), 0xe15802a9, "cmp r8, r9, #5"); TEST(CMP_rrLSRr(8,9,7), 0xe1580739, "cmp r8, r9, r7"); TEST(CMP_rrASRi(8,9,5), 0xe15802c9, "cmp r8, r9, #5"); TEST(CMP_rrASRr(8,9,7), 0xe1580759, "cmp r8, r9, r7"); TEST(CMP_rrRORi(8,9,5), 0xe15802e9, "cmp r8, r9, #5"); TEST(CMP_rrRORr(8,9,7), 0xe1580779, "cmp r8, r9, r7"); TEST(CMP_rrRRX(8,9), 0xe1580069, "cmp r8, r9"); TEST(CMP_ri(8, 0x81), 0xe3580081, "cmp r8,#0x81"); TEST(CMP_ri(8, 0x204), 0xe3580f81, "cmp r8,#0x204"); TEST(CMP_ri(8, 0x810), 0xe3580e81, "cmp r8,#0x8100"); TEST(CMP_ri(8, 0x2040), 0xe3580d81, "cmp r8,#0x2040"); TEST(CMP_ri(8, 0x8100), 0xe3580c81, "cmp r8,#0x8100"); TEST(CMP_ri(8, 0x20400), 0xe3580b81, "cmp r8,#0x20400"); TEST(CMP_ri(8, 0x81000), 0xe3580a81, "cmp r8,#0x81000"); TEST(CMP_ri(8, 0x204000), 0xe3580981, "cmp r8,#0x204000"); TEST(CMP_ri(8, 0x810000), 0xe3580881, "cmp r8,#0x810000"); TEST(CMP_ri(8, 0x2040000), 0xe3580781, "cmp r8,#0x2040000"); TEST(CMP_ri(8, 0x8100000), 0xe3580681, "cmp r8,#0x8100000"); TEST(CMP_ri(8, 0x20400000), 0xe3580581, "cmp r8,#0x20400000"); TEST(CMP_ri(8, 0x81000000), 0xe3580481, "cmp r8,#0x81000000"); TEST(CMP_ri(8, 0x04000002), 0xe3580381, "cmp r8,#0x04000002"); TEST(CMP_ri(8, 0x10000008), 0xe3580281, "cmp r8,#0x10000008"); TEST(CMP_ri(8, 0x40000020), 0xe3580181, "cmp r8,#0x40000020"); TEST(CMP_ri(8, 0x1200), 0xe3580c12, "cmp r8,#0x1200"); TEST(CMP_ri(8, 0x120000), 0xe3580812, "cmp r8,#0x120000"); TEST(CMP_ri(8, 0x12000000), 0xe3580412, "cmp r8,#0x12000000"); TEST(BEQ_i(5), 0x0a000005, "beq #5"); TEST(BNE_i(5), 0x1a000005, "bne #5"); TEST(BCS_i(5), 0x2a000005, "bcs #5"); TEST(BCC_i(5), 0x3a000005, "bcc #5"); TEST(BMI_i(5), 0x4a000005, "bmi #5"); TEST(BPL_i(5), 0x5a000005, "bpl #5"); TEST(BVS_i(5), 0x6a000005, "bvs #5"); TEST(BVC_i(5), 0x7a000005, "bvc #5"); TEST(BHI_i(5), 0x8a000005, "bhi #5"); TEST(BLS_i(5), 0x9a000005, "bls #5"); TEST(BGE_i(5), 0xaa000005, "bge #5"); TEST(BLT_i(5), 0xba000005, "blt #5"); TEST(BGT_i(5), 0xca000005, "bgt #5"); TEST(BLE_i(5), 0xda000005, "ble #5"); TEST(B_i(5), 0xea000005, "b #5"); TEST(BL_i(5), 0xeb000005, "bl #5"); TEST(BLX_r(8), 0xe12fff38, "blx r8"); TEST(BX_r(8), 0xe12fff18, "bx r8"); TEST(EOR_rri(6, 8, 15), 0xe228600f, "eor r6, r8,#15"); TEST(EOR_rrr(6, 8,9), 0xe0286009, "eor r6, r8, r9"); TEST(EOR_rrrLSLi(6,8,9,5), 0xe0286289, "eor r6, r8, r9, lsl #5"); TEST(EOR_rrrLSLr(6,8,9,7), 0xe0286719, "eor r6, r8, r9, lsl r7"); TEST(EOR_rrrLSRi(6,8,9,5), 0xe02862a9, "eor r6, r8, r9, lsr #5"); TEST(EOR_rrrLSRr(6,8,9,7), 0xe0286739, "eor r6, r8, r9, lsr r7"); TEST(EOR_rrrASRi(6,8,9,5), 0xe02862c9, "eor r6, r8, r9, asr #5"); TEST(EOR_rrrASRr(6,8,9,7), 0xe0286759, "eor r6, r8, r9, asr r7"); TEST(EOR_rrrRORi(6,8,9,5), 0xe02862e9, "eor r6, r8, r9, ror #5"); TEST(EOR_rrrRORr(6,8,9,7), 0xe0286779, "eor r6, r8, r9, ror r7"); TEST(EOR_rrrRRX(6,8,9), 0xe0286069, "eor r6, r8, r9, rrx"); TEST(EORS_rri(6, 8, 15), 0xe238600f, "eors r6, r8,#15"); TEST(EORS_rrr(6, 8,9), 0xe0386009, "eors r6, r8, r9"); TEST(EORS_rrrLSLi(6,8,9,5), 0xe0386289, "eors r6, r8, r9, lsl #5"); TEST(EORS_rrrLSLr(6,8,9,7), 0xe0386719, "eors r6, r8, r9, lsr r7"); TEST(EORS_rrrLSRi(6,8,9,5), 0xe03862a9, "eors r6, r8, r9, lsr #5"); TEST(EORS_rrrLSRr(6,8,9,7), 0xe0386739, "eors r6, r8, r9, lsr r7"); TEST(EORS_rrrASRi(6,8,9,5), 0xe03862c9, "eors r6, r8, r9, asr #5"); TEST(EORS_rrrASRr(6,8,9,7), 0xe0386759, "eors r6, r8, r9, asr r7"); TEST(EORS_rrrRORi(6,8,9,5), 0xe03862e9, "eors r6, r8, r9, ror #5"); TEST(EORS_rrrRORr(6,8,9,7), 0xe0386779, "eors r6, r8, r9, ror r7"); TEST(EORS_rrrRRX(6,8,9), 0xe0386069, "eors r6, r8, r9, rrx"); TEST(MRS_CPSR(6), 0xe10f6000, "mrs r6, CPSR"); TEST(MRS_SPSR(6), 0xe14f6000, "mrs r6, SPSR"); TEST(MSR_CPSR_i(5), 0xe329f005, "msr CPSR_fc, #5"); TEST(MSR_CPSR_r(5), 0xe129f005, "msr CPSR_fc, r5"); TEST(MSR_CPSRf_i(5), 0xe328f005, "msr CPSR_f, #5"); TEST(MSR_CPSRf_r(5), 0xe128f005, "msr CPSR_f, r5"); TEST(MSR_CPSRc_i(5), 0xe321f005, "msr CPSR_c, #5"); TEST(MSR_CPSRc_r(5), 0xe121f005, "msr CPSR_c, r5"); TEST(PUSH(6), 0xe92d0040, "push {r6}"); TEST(POP(6), 0xe8bd0040, "pop {r6}"); TEST(BIC_rri(0, 0, 0x9f000000), 0xe3c0049f, "bic r0, r0, #0x9f000000"); TEST(BIC_rri(2, 3, 0xff00), 0xe3c32cff, "bic r2, r3, #0xff00"); TEST(BIC_rri(3, 4, 0xff), 0xe3c430ff, "bic r3, r4, #0xff"); TEST(ORR_rrrLSRi(0, 1, 2, 16), 0xe1810822, "orr r0, r1, r2, lsr #16"); TEST(ORR_rrrLSRi(0, 1, 2, 24), 0xe1810c22, "orr r0, r1, r2, lsr #24"); TEST(LDR_rR(8, 9), 0xe5998000, "ldr r8, [r9]"); TEST(LDR_rRI(8, 9, 4), 0xe5998004, "ldr r8, [r9, #4]"); TEST(LDR_rRi(8, 9, 4), 0xe5198004, "ldr r8, [r9, #-4]"); TEST(LDR_rRR(8, 9, 7), 0xe7998007, "ldr r8, [r9, r7]"); TEST(LDR_rRr(8, 9, 7), 0xe7198007, "ldr r8, [r9, -r7]"); TEST(LDR_rRR_LSLi(8, 9, 7, 5), 0xe7998287, "ldr r8, [r9, r7, lsl #5]"); TEST(LDR_rRr_LSLi(8, 9, 7, 5), 0xe7198287, "ldr r8, [r9, -r7, lsl #5]"); TEST(LDR_rRR_LSRi(8, 9, 7, 5), 0xe79982a7, "ldr r8, [r9, r7, lsr #5]"); TEST(LDR_rRr_LSRi(8, 9, 7, 5), 0xe71982a7, "ldr r8, [r9, -r7, lsr #5]"); TEST(LDR_rRR_ASRi(8, 9, 7, 5), 0xe79982c7, "ldr r8, [r9, r7, asr #5]"); TEST(LDR_rRr_ASRi(8, 9, 7, 5), 0xe71982c7, "ldr r8, [r9, -r7, asr #5]"); TEST(LDR_rRR_RORi(8, 9, 7, 5), 0xe79982e7, "ldr r8, [r9, r7, ror #5]"); TEST(LDR_rRr_RORi(8, 9, 7, 5), 0xe71982e7, "ldr r8, [r9, -r7, ror #5]"); TEST(LDR_rRR_RRX(8, 9, 7), 0xe7998067, "ldr r8, [r9, r7, rrx]"); TEST(LDR_rRr_RRX(8, 9, 7), 0xe7198067, "ldr r8, [r9, -r7, rrx]"); TEST(LDRB_rR(8, 9), 0xe5d98000, "ldrb r8, [r9]"); TEST(LDRB_rRI(8, 9, 4), 0xe5d98004, "ldrb r8, [r9, #4]"); TEST(LDRB_rRi(8, 9, 4), 0xe5598004, "ldrb r8, [r9, #-4]"); TEST(LDRB_rRR(8, 9, 7), 0xe7d98007, "ldrb r8, [r9, r7]"); TEST(LDRB_rRr(8, 9, 7), 0xe7598007, "ldrb r8, [r9, -r7]"); TEST(LDRB_rRR_LSLi(8, 9, 7, 5), 0xe7d98287, "ldrb r8, [r9, r7, lsl #5]"); TEST(LDRB_rRr_LSLi(8, 9, 7, 5), 0xe7598287, "ldrb r8, [r9, -r7, lsl #5]"); TEST(LDRB_rRR_LSRi(8, 9, 7, 5), 0xe7d982a7, "ldrb r8, [r9, r7, lsr #5]"); TEST(LDRB_rRr_LSRi(8, 9, 7, 5), 0xe75982a7, "ldrb r8, [r9, -r7, lsr #5]"); TEST(LDRB_rRR_ASRi(8, 9, 7, 5), 0xe7d982c7, "ldrb r8, [r9, r7, asr #5]"); TEST(LDRB_rRr_ASRi(8, 9, 7, 5), 0xe75982c7, "ldrb r8, [r9, -r7, asr #5]"); TEST(LDRB_rRR_RORi(8, 9, 7, 5), 0xe7d982e7, "ldrb r8, [r9, r7, ror #5]"); TEST(LDRB_rRr_RORi(8, 9, 7, 5), 0xe75982e7, "ldrb r8, [r9, -r7, ror #5]"); TEST(LDRB_rRR_RRX(8, 9, 7), 0xe7d98067, "ldrb r8, [r9, r7, rrx]"); TEST(LDRB_rRr_RRX(8, 9, 7), 0xe7598067, "ldrb r8, [r9, -r7, rrx]"); TEST(LDRSB_rR(8, 9), 0xe1d980d0, "ldrsb r8, [r9]"); TEST(LDRSB_rRI(8, 9, 4), 0xe1d980d4, "ldrsb r8, [r9, #4]"); TEST(LDRSB_rRi(8, 9, 4), 0xe15980d4, "ldrsb r8, [r9, #-4]"); TEST(LDRSB_rRR(8, 9, 7), 0xe19980d7, "ldrsb r8, [r9, r7]"); TEST(LDRSB_rRr(8, 9, 7), 0xe11980d7, "ldrsb r8, [r9, -r7]"); TEST(LDRSH_rR(8, 9), 0xe1d980f0, "ldrsh r8, [r9]"); TEST(LDRSH_rRI(8, 9, 4), 0xe1d980f4, "ldrsh r8, [r9, #4]"); TEST(LDRSH_rRi(8, 9, 4), 0xe15980f4, "ldrsh r8, [r9, #-4]"); TEST(LDRSH_rRR(8, 9, 7), 0xe19980f7, "ldrsh r8, [r9, r7]"); TEST(LDRSH_rRr(8, 9, 7), 0xe11980f7, "ldrsh r8, [r9, -r7]"); TEST(LDRH_rR(8, 9), 0xe1d980b0, "ldrh r8, [r9]"); TEST(LDRH_rRI(8, 9, 4), 0xe1d980b4, "ldrh r8, [r9, #4]"); TEST(LDRH_rRi(8, 9, 4), 0xe15980b4, "ldrh r8, [r9, #-4]"); TEST(LDRH_rRR(8, 9, 7), 0xe19980b7, "ldrh r8, [r9, r7]"); TEST(LDRH_rRr(8, 9, 7), 0xe11980b7, "ldrh r8, [r9, -r7]"); TEST(STR_rRR(8,9,7), 0xe7898007, "str r8, [r9, r7]"); TEST(STR_rRr(8,9,7), 0xe7098007, "str r8, [r9, -r7]"); TEST(STRB_rR(5, 6), 0xe5c65000, "strb r5,[r6]"); TEST(STRH_rR(8, 9), 0xe1c980b0, "strh r8, [r9]"); TEST(STRH_rRI(8, 9, 4), 0xe1c980b4, "strh r8, [r9, #4]"); TEST(STRH_rRi(8, 9, 4), 0xe14980b4, "strh r8, [r9, #-4]"); TEST(STRH_rRR(8, 9, 7), 0xe18980b7, "strh r8, [r9, r7]"); TEST(STRH_rRr(8, 9, 7), 0xe10980b7, "strh r8, [r9, -r7]"); TEST(CLZ_rr(2, 3), 0xe16f2f13, "clz r2,r3"); TEST(REV_rr(2, 3), 0xe6bf2f33, "rev r2, r3"); TEST(REV16_rr(2, 3), 0xe6bf2fb3, "rev16 r2, r3"); TEST(REVSH_rr(2, 3), 0xe6ff2fb3, "revsh r2, r3"); TEST(SXTB_rr(2,3), 0xe6af2073, "sxtb r2,r3"); TEST(SXTB_rr(3,4), 0xe6af3074, "sxtb r3,r4"); TEST(SXTB_rr_ROR8(2,3), 0xe6af2473, "sxtb r2, r3, ror #8"); TEST(SXTB_rr_ROR16(2,3), 0xe6af2873, "sxtb r2, r3, ror #16"); TEST(SXTB_rr_ROR24(2,3), 0xe6af2c73, "sxtb r2, r3, ror #24"); TEST(SXTH_rr(2,3), 0xe6bf2073, "sxth r2, r3"); TEST(SXTH_rr_ROR8(2,3), 0xe6bf2473, "sxth r2, r3, ror #8"); TEST(SXTH_rr_ROR16(2,3), 0xe6bf2873, "sxth r2, r3, ror #16"); TEST(SXTH_rr_ROR24(2,3), 0xe6bf2c73, "sxth r2, r3, ror #24"); TEST(UXTB_rr(2,3), 0xe6ef2073, "uxtb r2, r3"); TEST(UXTB_rr_ROR8(2,3), 0xe6ef2473, "uxtb r2, r3, ror #8"); TEST(UXTB_rr_ROR16(2,3), 0xe6ef2873, "uxtb r2, r3, ror #16"); TEST(UXTB_rr_ROR24(2,3), 0xe6ef2c73, "uxtb r2, r3, ror #24"); TEST(UXTH_rr(2,3), 0xe6ff2073, "uxth r2, r3"); TEST(UXTH_rr_ROR8(2,3), 0xe6ff2473, "uxth r2, r3, ror #8"); TEST(UXTH_rr_ROR16(2,3), 0xe6ff2873, "uxth r2, r3, ror #16"); TEST(UXTH_rr_ROR24(2,3), 0xe6ff2c73, "uxth r2, r3, ror #24"); TEST(REV_rr(2,3), 0xe6bf2f33, "rev r2, r3"); TEST(REV16_rr(2,3), 0xe6bf2fb3, "rev16 r2, r3"); TEST(REVSH_rr(2,3), 0xe6ff2fb3, "revsh r2, r3"); TEST(CC_MOV_ri(NATIVE_CC_CS, 4,1), 0x23a04001, "movcs r4, #1"); TEST(CC_MOV_ri(NATIVE_CC_CC, 4,1), 0x33a04001, "movcc r4, #1"); int imm = 0x9f; TEST(ADDS_rri(0, 0, imm << 24), 0xe290049f, "adds r0, r0, 0x9f000000"); TEST(PKHBT_rrr(1, 2, 3), 0xe6821013, "pkhbt r1,r2,r3"); TEST(MVN_ri8(1,2), 0xe3e01002, "mvn r1,#2"); TEST(ORR_rri8RORi(1,2,0x12,24), 0xe3821c12, "orr r1, r2, #0x1200"); TEST(PKHTB_rrrASRi(1, 2, 3, 4), 0xe6821253, "pkhtb r1,r2,r3,ASR #4"); TEST(PKHBT_rrrLSLi(1, 2, 3, 4), 0xe6821213, "pkhbt r1,r2,r3,LSL #4"); TEST(MUL_rrr(1,2,3), 0xe0010392, "mul r1, r2, r3"); TEST(MULS_rrr(1,2,3), 0xe0110392, "muls r1, r2, r3"); } aranym-1.1.0/src/uae_cpu/compiler/gencomp_arm.c0000664000175000017500000037547513454637622017704 0ustar joyjoy/* * compiler/gencomp_arm2.c - MC680x0 compilation generator (ARM Adaption JIT v1 & JIT v2) * * Based on work Copyright 1995, 1996 Bernd Schmidt * Changes for UAE-JIT Copyright 2000 Bernd Meyer * * Adaptation for ARAnyM/ARM, copyright 2001-2015 * Milan Jurik, Jens Heitmann * * Basilisk II (C) 1997-2005 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Notes * ===== * * Advantages of JIT v2 * - Processor independent style * - Reduced overhead * - Easier to understand / read * - Easier to optimize * - More precise flag handling * - Better optimization for different CPU version ARM, ARMv6 etc.. * * Disadvantages of JIT v2 * - Less generated * - Requires more code implementation by hand (MidFunc) * - MIDFUNCS are more CPU minded (closer to raw) * - Separate code for each instruction (but this could be also an advantage, because you can concentrate on it) * * Additional note: * - current using jnf_xxx calls for non-flag operations and * jff_xxx for flag operations * * Still todo: * - Optimize genamode, genastore, gen_writeXXX, gen_readXXX, genmovemXXX * */ #define CC_FOR_BUILD 1 #include "sysconfig.h" #include "sysdeps.h" #include "readcpu.h" #include #include #include #include #include #include #undef abort #define BOOL_TYPE "int" #define failure global_failure=1 #define FAILURE global_failure=1 #define isjump global_isjump=1 #define is_const_jump global_iscjump=1 #define isaddx global_isaddx=1 #define uses_cmov global_cmov=1 #define mayfail global_mayfail=1 #define uses_fpu global_fpu=1 int hack_opcode; static int global_failure; static int global_isjump; static int global_iscjump; static int global_isaddx; static int global_cmov; static int long_opcode; static int global_mayfail; static int global_fpu; static char endstr[1000]; static char lines[100000]; static int comp_index = 0; #include "flags_arm.h" #ifndef __attribute__ # ifndef __GNUC__ # define __attribute__(x) # endif #endif static int cond_codes[] = { // NATIVE_CC_AL, -1, // NATIVE_CC_HI, NATIVE_CC_LS, // NATIVE_CC_CC, NATIVE_CC_CS, // NATIVE_CC_NE, NATIVE_CC_EQ, // NATIVE_CC_VC, NATIVE_CC_VS, // NATIVE_CC_PL, NATIVE_CC_MI, // NATIVE_CC_GE, NATIVE_CC_LT, // NATIVE_CC_GT, NATIVE_CC_LE // }; __attribute__((format(printf, 1, 2))) static void comprintf(const char *format, ...) { va_list args; va_start(args, format); comp_index += vsprintf(lines + comp_index, format, args); va_end(args); } static void com_discard(void) { comp_index = 0; } static void com_flush(void) { int i; for (i = 0; i < comp_index; i++) putchar(lines[i]); com_discard(); } static FILE *headerfile; static FILE *stblfile; static int using_prefetch; static int using_exception_3; static int cpu_level; static int noflags; /* For the current opcode, the next lower level that will have different code. * Initialized to -1 for each opcode. If it remains unchanged, indicates we * are done with that opcode. */ static int next_cpu_level; static int *opcode_map; static int *opcode_next_clev; static int *opcode_last_postfix; static unsigned long *counts; static void read_counts(void) { FILE *file; unsigned long opcode, count, total; char name[20]; int nr = 0; memset(counts, 0, 65536 * sizeof *counts); file = fopen("frequent.68k", "r"); if (file) { if (fscanf(file, "Total: %lu\n", &total) != 1) { assert(0); } while (fscanf(file, "%lx: %lu %s\n", &opcode, &count, name) == 3) { opcode_next_clev[nr] = 4; opcode_last_postfix[nr] = -1; opcode_map[nr++] = opcode; counts[opcode] = count; } fclose(file); } if (nr == nr_cpuop_funcs) return; for (opcode = 0; opcode < 0x10000; opcode++) { if (table68k[opcode].handler == -1 && table68k[opcode].mnemo != i_ILLG && counts[opcode] == 0) { opcode_next_clev[nr] = 4; opcode_last_postfix[nr] = -1; opcode_map[nr++] = opcode; counts[opcode] = count; } } assert (nr == nr_cpuop_funcs); } static int n_braces = 0; static int insn_n_cycles; static void start_brace(void) { n_braces++; comprintf("{"); } static void close_brace(void) { assert(n_braces > 0); n_braces--; comprintf("}"); } static void finish_braces(void) { while (n_braces > 0) close_brace(); } static inline void gen_update_next_handler(void) { return; /* Can anything clever be done here? */ } static void gen_writebyte(const char *address, const char *source) { comprintf("\twritebyte(%s, %s, scratchie);\n", address, source); } static void gen_writeword(const char *address, const char *source) { comprintf("\twriteword(%s, %s, scratchie);\n", address, source); } static void gen_writelong(const char *address, const char *source) { comprintf("\twritelong(%s, %s, scratchie);\n", address, source); } static void gen_readbyte(const char *address, const char* dest) { comprintf("\treadbyte(%s, %s, scratchie);\n", address, dest); } static void gen_readword(const char *address, const char *dest) { comprintf("\treadword(%s,%s,scratchie);\n", address, dest); } static void gen_readlong(const char *address, const char *dest) { comprintf("\treadlong(%s, %s, scratchie);\n", address, dest); } static const char * gen_nextilong(void) { static char buffer[80]; sprintf(buffer, "comp_get_ilong((m68k_pc_offset+=4)-4)"); insn_n_cycles += 4; long_opcode = 1; return buffer; } static const char * gen_nextiword(void) { static char buffer[80]; sprintf(buffer, "comp_get_iword((m68k_pc_offset+=2)-2)"); insn_n_cycles += 2; long_opcode = 1; return buffer; } static const char * gen_nextibyte(void) { static char buffer[80]; sprintf(buffer, "comp_get_ibyte((m68k_pc_offset+=2)-2)"); insn_n_cycles += 2; long_opcode = 1; return buffer; } #if defined(USE_JIT_FPU) // Only used by FPU (future), get rid of unused warning static void swap_opcode (void) { comprintf("#if defined(HAVE_GET_WORD_UNSWAPPED) && !defined(FULLMMU)\n"); comprintf("\topcode = do_byteswap_16(opcode);\n"); comprintf("#endif\n"); } #endif static void sync_m68k_pc(void) { comprintf("\t if (m68k_pc_offset>SYNC_PC_OFFSET) sync_m68k_pc();\n"); } /* getv == 1: fetch data; getv != 0: check for odd address. If movem != 0, * the calling routine handles Apdi and Aipi modes. * gb-- movem == 2 means the same thing but for a MOVE16 instruction */ static void genamode(amodes mode, const char *reg, wordsizes size, const char *name, int getv, int movem) { start_brace(); switch (mode) { case Dreg: /* Do we need to check dodgy here? */ assert (!movem); if (getv == 1 || getv == 2) { /* We generate the variable even for getv==2, so we can use it as a destination for MOVE */ comprintf("\tint %s = %s;\n", name, reg); } return; case Areg: assert (!movem); if (getv == 1 || getv == 2) { /* see above */ comprintf("\tint %s = dodgy ? scratchie++ : %s + 8;\n", name, reg); if (getv == 1) { comprintf("\tif (dodgy) \n"); comprintf("\t\tmov_l_rr(%s, %s + 8);\n", name, reg); } } return; case Aind: comprintf("\tint %sa = dodgy ? scratchie++ : %s + 8;\n", name, reg); comprintf("\tif (dodgy)\n"); comprintf("\t\tmov_l_rr(%sa, %s + 8);\n", name, reg); break; case Aipi: comprintf("\tint %sa = scratchie++;\n", name); comprintf("\tmov_l_rr(%sa, %s + 8);\n", name, reg); break; case Apdi: switch (size) { case sz_byte: if (movem) { comprintf("\tint %sa = dodgy ? scratchie++ : %s + 8;\n", name, reg); comprintf("\tif (dodgy)\n"); comprintf("\t\tmov_l_rr(%sa, 8 + %s);\n", name, reg); } else { start_brace(); comprintf("\tint %sa = dodgy ? scratchie++ : %s + 8;\n", name, reg); comprintf("\tlea_l_brr(%s + 8, %s + 8, (uae_s32)-areg_byteinc[%s]);\n", reg, reg, reg); comprintf("\tif (dodgy)\n"); comprintf("\t\tmov_l_rr(%sa, 8 + %s);\n", name, reg); } break; case sz_word: if (movem) { comprintf("\tint %sa=dodgy?scratchie++:%s+8;\n", name, reg); comprintf("\tif (dodgy) \n"); comprintf("\tmov_l_rr(%sa,8+%s);\n", name, reg); } else { start_brace(); comprintf("\tint %sa = dodgy ? scratchie++ : %s + 8;\n", name, reg); comprintf("\tlea_l_brr(%s + 8, %s + 8, -2);\n", reg, reg); comprintf("\tif (dodgy)\n"); comprintf("\t\tmov_l_rr(%sa, 8 + %s);\n", name, reg); } break; case sz_long: if (movem) { comprintf("\tint %sa = dodgy ? scratchie++ : %s + 8;\n", name, reg); comprintf("\tif (dodgy)\n"); comprintf("\t\tmov_l_rr(%sa, 8 + %s);\n", name, reg); } else { start_brace(); comprintf("\tint %sa = dodgy ? scratchie++ : %s + 8;\n", name, reg); comprintf("\tlea_l_brr(%s + 8, %s + 8, -4);\n", reg, reg); comprintf("\tif (dodgy)\n"); comprintf("\t\tmov_l_rr(%sa, 8 + %s);\n", name, reg); } break; default: assert(0); break; } break; case Ad16: comprintf("\tint %sa = scratchie++;\n", name); comprintf("\tmov_l_rr(%sa, 8 + %s);\n", name, reg); comprintf("\tlea_l_brr(%sa, %sa, (uae_s32)(uae_s16)%s);\n", name, name, gen_nextiword()); break; case Ad8r: comprintf("\tint %sa = scratchie++;\n", name); comprintf("\tcalc_disp_ea_020(%s + 8, %s, %sa, scratchie);\n", reg, gen_nextiword(), name); break; case PC16: comprintf("\tint %sa = scratchie++;\n", name); comprintf("\tuae_u32 address = start_pc + ((char *)comp_pc_p - (char *)start_pc_p) + m68k_pc_offset;\n"); comprintf("\tuae_s32 PC16off = (uae_s32)(uae_s16)%s;\n", gen_nextiword()); comprintf("\tmov_l_ri(%sa, address + PC16off);\n", name); break; case PC8r: comprintf("\tint pctmp = scratchie++;\n"); comprintf("\tint %sa = scratchie++;\n", name); comprintf("\tuae_u32 address = start_pc + ((char *)comp_pc_p - (char *)start_pc_p) + m68k_pc_offset;\n"); start_brace(); comprintf("\tmov_l_ri(pctmp,address);\n"); comprintf("\tcalc_disp_ea_020(pctmp, %s, %sa, scratchie);\n", gen_nextiword(), name); break; case absw: comprintf("\tint %sa = scratchie++;\n", name); comprintf("\tmov_l_ri(%sa, (uae_s32)(uae_s16)%s);\n", name, gen_nextiword()); break; case absl: comprintf("\tint %sa = scratchie++;\n", name); comprintf("\tmov_l_ri(%sa, %s); /* absl */\n", name, gen_nextilong()); break; case imm: assert (getv == 1); switch (size) { case sz_byte: comprintf("\tint %s = scratchie++;\n", name); comprintf("\tmov_l_ri(%s, (uae_s32)(uae_s8)%s);\n", name, gen_nextibyte()); break; case sz_word: comprintf("\tint %s = scratchie++;\n", name); comprintf("\tmov_l_ri(%s, (uae_s32)(uae_s16)%s);\n", name, gen_nextiword()); break; case sz_long: comprintf("\tint %s = scratchie++;\n", name); comprintf("\tmov_l_ri(%s, %s);\n", name, gen_nextilong()); break; default: assert(0); break; } return; case imm0: assert (getv == 1); comprintf("\tint %s = scratchie++;\n", name); comprintf("\tmov_l_ri(%s, (uae_s32)(uae_s8)%s);\n", name, gen_nextibyte()); return; case imm1: assert (getv == 1); comprintf("\tint %s = scratchie++;\n", name); comprintf("\tmov_l_ri(%s, (uae_s32)(uae_s16)%s);\n", name, gen_nextiword()); return; case imm2: assert (getv == 1); comprintf("\tint %s = scratchie++;\n", name); comprintf("\tmov_l_ri(%s, %s);\n", name, gen_nextilong()); return; case immi: assert (getv == 1); comprintf("\tint %s = scratchie++;\n", name); comprintf("\tmov_l_ri(%s, %s);\n", name, reg); return; default: assert(0); break; } /* We get here for all non-reg non-immediate addressing modes to * actually fetch the value. */ if (getv == 1) { char astring[80]; sprintf(astring, "%sa", name); switch (size) { case sz_byte: insn_n_cycles += 2; break; case sz_word: insn_n_cycles += 2; break; case sz_long: insn_n_cycles += 4; break; default: assert(0); break; } start_brace(); comprintf("\tint %s = scratchie++;\n", name); switch (size) { case sz_byte: gen_readbyte(astring, name); break; case sz_word: gen_readword(astring, name); break; case sz_long: gen_readlong(astring, name); break; default: assert(0); break; } } /* We now might have to fix up the register for pre-dec or post-inc * addressing modes. */ if (!movem) { switch (mode) { case Aipi: switch (size) { case sz_byte: comprintf("\tlea_l_brr(%s + 8,%s + 8, areg_byteinc[%s]);\n", reg, reg, reg); break; case sz_word: comprintf("\tlea_l_brr(%s + 8, %s + 8, 2);\n", reg, reg); break; case sz_long: comprintf("\tlea_l_brr(%s + 8, %s + 8, 4);\n", reg, reg); break; default: assert(0); break; } break; case Apdi: break; default: break; } } } static void genastore(const char *from, amodes mode, const char *reg, wordsizes size, const char *to) { switch (mode) { case Dreg: switch (size) { case sz_byte: comprintf("\tif(%s != %s)\n", reg, from); comprintf("\t\tmov_b_rr(%s, %s);\n", reg, from); break; case sz_word: comprintf("\tif(%s != %s)\n", reg, from); comprintf("\t\tmov_w_rr(%s, %s);\n", reg, from); break; case sz_long: comprintf("\tif(%s != %s)\n", reg, from); comprintf("\t\tmov_l_rr(%s, %s);\n", reg, from); break; default: assert(0); break; } break; case Areg: switch (size) { case sz_word: comprintf("\tif(%s + 8 != %s)\n", reg, from); comprintf("\t\tmov_w_rr(%s + 8, %s);\n", reg, from); break; case sz_long: comprintf("\tif(%s + 8 != %s)\n", reg, from); comprintf("\t\tmov_l_rr(%s + 8, %s);\n", reg, from); break; default: assert(0); break; } break; case Apdi: case absw: case PC16: case PC8r: case Ad16: case Ad8r: case Aipi: case Aind: case absl: { char astring[80]; sprintf(astring, "%sa", to); switch (size) { case sz_byte: insn_n_cycles += 2; gen_writebyte(astring, from); break; case sz_word: insn_n_cycles += 2; gen_writeword(astring, from); break; case sz_long: insn_n_cycles += 4; gen_writelong(astring, from); break; default: assert(0); break; } } break; case imm: case imm0: case imm1: case imm2: case immi: assert(0); break; default: assert(0); break; } } static void gen_move16(uae_u32 opcode, struct instr *curi) { #if defined(USE_JIT2) comprintf("\tint src=scratchie++;\n"); comprintf("\tint dst=scratchie++;\n"); uae_u32 masked_op = (opcode & 0xfff8); if (masked_op == 0xf620) { // POSTINCREMENT SOURCE AND DESTINATION version comprintf("\t uae_u16 dstreg = ((%s)>>12) & 0x07;\n", gen_nextiword()); comprintf("\t jnf_MOVE(src, srcreg + 8);"); comprintf("\t jnf_MOVE(dst, dstreg + 8);"); comprintf("\t if (srcreg != dstreg)\n"); comprintf("\t jnf_ADD_imm(srcreg + 8, srcreg + 8, 16);"); comprintf("\t jnf_ADD_imm(dstreg + 8, dstreg + 8, 16);"); } else { /* Other variants */ genamode(curi->smode, "srcreg", curi->size, "src", 0, 2); genamode(curi->dmode, "dstreg", curi->size, "dst", 0, 2); switch (masked_op) { case 0xf600: comprintf("\t jnf_ADD_imm(srcreg + 8, srcreg + 8, 16);"); break; case 0xf608: comprintf("\t jnf_ADD_imm(dstreg + 8, dstreg + 8, 16);"); break; } } comprintf("\t jnf_MOVE16(dst, src);"); #else comprintf("\tint src=scratchie++;\n"); comprintf("\tint dst=scratchie++;\n"); if ((opcode & 0xfff8) == 0xf620) { /* MOVE16 (Ax)+,(Ay)+ */ comprintf("\tuae_u16 dstreg=((%s)>>12)&0x07;\n", gen_nextiword()); comprintf("\tmov_l_rr(src,8+srcreg);\n"); comprintf("\tmov_l_rr(dst,8+dstreg);\n"); } else { /* Other variants */ genamode(curi->smode, "srcreg", curi->size, "src", 0, 2); genamode(curi->dmode, "dstreg", curi->size, "dst", 0, 2); comprintf("\tmov_l_rr(src,srca);\n"); comprintf("\tmov_l_rr(dst,dsta);\n"); } /* Align on 16-byte boundaries */ comprintf("\tand_l_ri(src,~15);\n"); comprintf("\tand_l_ri(dst,~15);\n"); if ((opcode & 0xfff8) == 0xf620) { comprintf("\tif (srcreg != dstreg)\n"); comprintf("\tarm_ADD_l_ri8(srcreg+8,16);\n"); comprintf("\tarm_ADD_l_ri8(dstreg+8,16);\n"); } else if ((opcode & 0xfff8) == 0xf600) comprintf("\tarm_ADD_l_ri8(srcreg+8,16);\n"); else if ((opcode & 0xfff8) == 0xf608) comprintf("\tarm_ADD_l_ri8(dstreg+8,16);\n"); start_brace(); comprintf("\tint tmp=scratchie;\n"); comprintf("\tscratchie+=4;\n"); comprintf("\tget_n_addr(src,src,scratchie);\n" "\tget_n_addr(dst,dst,scratchie);\n" "\tmov_l_rR(tmp+0,src,0);\n" "\tmov_l_rR(tmp+1,src,4);\n" "\tmov_l_rR(tmp+2,src,8);\n" "\tmov_l_rR(tmp+3,src,12);\n" "\tmov_l_Rr(dst,tmp+0,0);\n" "\tforget_about(tmp+0);\n" "\tmov_l_Rr(dst,tmp+1,4);\n" "\tforget_about(tmp+1);\n" "\tmov_l_Rr(dst,tmp+2,8);\n" "\tforget_about(tmp+2);\n" "\tmov_l_Rr(dst,tmp+3,12);\n"); close_brace(); #endif } static void genmovemel(uae_u16 opcode) { comprintf("\tuae_u16 mask = %s;\n", gen_nextiword()); comprintf("\tint native=scratchie++;\n"); comprintf("\tint i;\n"); comprintf("\tsigned char offset=0;\n"); genamode(table68k[opcode].dmode, "dstreg", table68k[opcode].size, "src", 2, 1); comprintf("\tget_n_addr(srca,native,scratchie);\n"); comprintf("\tfor (i=0;i<16;i++) {\n" "\t\tif ((mask>>i)&1) {\n"); switch (table68k[opcode].size) { case sz_long: comprintf("\t\t\tmov_l_rR(i,native,offset);\n" "\t\t\tmid_bswap_32(i);\n" "\t\t\toffset+=4;\n"); break; case sz_word: comprintf("\t\t\tmov_w_rR(i,native,offset);\n" "\t\t\tmid_bswap_16(i);\n" "\t\t\tsign_extend_16_rr(i,i);\n" "\t\t\toffset+=2;\n"); break; default: assert(0); break; } comprintf("\t\t}\n" "\t}"); if (table68k[opcode].dmode == Aipi) { comprintf("\t\t\tlea_l_brr(8+dstreg,srca,offset);\n"); } } static void genmovemle(uae_u16 opcode) { comprintf("\tuae_u16 mask = %s;\n", gen_nextiword()); comprintf("\tint native=scratchie++;\n"); comprintf("\tint i;\n"); comprintf("\tint tmp=scratchie++;\n"); comprintf("\tsigned char offset=0;\n"); genamode(table68k[opcode].dmode, "dstreg", table68k[opcode].size, "src", 2, 1); comprintf("\tget_n_addr(srca,native,scratchie);\n"); if (table68k[opcode].dmode != Apdi) { comprintf("\tfor (i=0;i<16;i++) {\n" "\t\tif ((mask>>i)&1) {\n"); switch (table68k[opcode].size) { case sz_long: comprintf("\t\t\tmov_l_rr(tmp,i);\n" "\t\t\tmid_bswap_32(tmp);\n" "\t\t\tmov_l_Rr(native,tmp,offset);\n" "\t\t\toffset+=4;\n"); break; case sz_word: comprintf("\t\t\tmov_l_rr(tmp,i);\n" "\t\t\tmid_bswap_16(tmp);\n" "\t\t\tmov_w_Rr(native,tmp,offset);\n" "\t\t\toffset+=2;\n"); break; default: assert(0); break; } } else { /* Pre-decrement */ comprintf("\tfor (i=0;i<16;i++) {\n" "\t\tif ((mask>>i)&1) {\n"); switch (table68k[opcode].size) { case sz_long: comprintf("\t\t\toffset-=4;\n" "\t\t\tmov_l_rr(tmp,15-i);\n" "\t\t\tmid_bswap_32(tmp);\n" "\t\t\tmov_l_Rr(native,tmp,offset);\n"); break; case sz_word: comprintf("\t\t\toffset-=2;\n" "\t\t\tmov_l_rr(tmp,15-i);\n" "\t\t\tmid_bswap_16(tmp);\n" "\t\t\tmov_w_Rr(native,tmp,offset);\n"); break; default: assert(0); break; } } comprintf("\t\t}\n" "\t}"); if (table68k[opcode].dmode == Apdi) { comprintf("\t\t\tlea_l_brr(8+dstreg,srca,(uae_s32)offset);\n"); } } static void duplicate_carry(void) { comprintf("\tif (needed_flags&FLAG_X) duplicate_carry();\n"); } typedef enum { flag_logical_noclobber, flag_logical, flag_add, flag_sub, flag_cmp, flag_addx, flag_subx, flag_zn, flag_av, flag_sv, flag_and, flag_or, flag_eor, flag_mov } flagtypes; #if !defined(USE_JIT2) static void genflags(flagtypes type, wordsizes size, const char *value, const char *src, const char *dst) { if (noflags) { switch (type) { case flag_cmp: comprintf("\tdont_care_flags();\n"); comprintf("/* Weird --- CMP with noflags ;-) */\n"); return; case flag_add: case flag_sub: comprintf("\tdont_care_flags();\n"); { const char* op; switch (type) { case flag_add: op = "add"; break; // nf case flag_sub: op = "sub"; break; // nf default: assert(0); break; } switch (size) { case sz_byte: comprintf("\t%s_b(%s,%s);\n", op, dst, src); break; case sz_word: comprintf("\t%s_w(%s,%s);\n", op, dst, src); break; case sz_long: comprintf("\t%s_l(%s,%s);\n", op, dst, src); break; } return; } break; case flag_and: comprintf("\tdont_care_flags();\n"); switch (size) { case sz_byte: comprintf("if (kill_rodent(dst)) {\n"); comprintf("\tzero_extend_8_rr(scratchie,%s);\n", src); comprintf("\tor_l_ri(scratchie,0xffffff00);\n"); // nf comprintf("\tarm_AND_l(%s,scratchie);\n", dst); comprintf("\tforget_about(scratchie);\n"); comprintf("\t} else \n" "\tarm_AND_b(%s,%s);\n", dst, src); break; case sz_word: comprintf("if (kill_rodent(dst)) {\n"); comprintf("\tzero_extend_16_rr(scratchie,%s);\n", src); comprintf("\tor_l_ri(scratchie,0xffff0000);\n"); // nf comprintf("\tarm_AND_l(%s,scratchie);\n", dst); comprintf("\tforget_about(scratchie);\n"); comprintf("\t} else \n" "\tarm_AND_w(%s,%s);\n", dst, src); break; case sz_long: comprintf("\tarm_AND_l(%s,%s);\n", dst, src); break; } return; case flag_mov: comprintf("\tdont_care_flags();\n"); switch (size) { case sz_byte: comprintf("if (kill_rodent(dst)) {\n"); comprintf("\tzero_extend_8_rr(scratchie,%s);\n", src); comprintf("\tand_l_ri(%s,0xffffff00);\n", dst); // nf comprintf("\tarm_ORR_l(%s,scratchie);\n", dst); comprintf("\tforget_about(scratchie);\n"); comprintf("\t} else \n" "\tmov_b_rr(%s,%s);\n", dst, src); break; case sz_word: comprintf("if (kill_rodent(dst)) {\n"); comprintf("\tzero_extend_16_rr(scratchie,%s);\n", src); comprintf("\tand_l_ri(%s,0xffff0000);\n", dst); // nf comprintf("\tarm_ORR_l(%s,scratchie);\n", dst); comprintf("\tforget_about(scratchie);\n"); comprintf("\t} else \n" "\tmov_w_rr(%s,%s);\n", dst, src); break; case sz_long: comprintf("\tmov_l_rr(%s,%s);\n", dst, src); break; } return; case flag_or: case flag_eor: comprintf("\tdont_care_flags();\n"); start_brace(); { const char* op; switch (type) { case flag_or: op = "ORR"; break; // nf case flag_eor: op = "EOR"; break; // nf default: assert(0); break; } switch (size) { case sz_byte: comprintf("if (kill_rodent(dst)) {\n"); comprintf("\tzero_extend_8_rr(scratchie,%s);\n", src); comprintf("\tarm_%s_l(%s,scratchie);\n", op, dst); comprintf("\tforget_about(scratchie);\n"); comprintf("\t} else \n" "\tarm_%s_b(%s,%s);\n", op, dst, src); break; case sz_word: comprintf("if (kill_rodent(dst)) {\n"); comprintf("\tzero_extend_16_rr(scratchie,%s);\n", src); comprintf("\tarm_%s_l(%s,scratchie);\n", op, dst); comprintf("\tforget_about(scratchie);\n"); comprintf("\t} else \n" "\tarm_%s_w(%s,%s);\n", op, dst, src); break; case sz_long: comprintf("\tarm_%s_l(%s,%s);\n", op, dst, src); break; } close_brace(); return; } case flag_addx: case flag_subx: comprintf("\tdont_care_flags();\n"); { const char* op; switch (type) { case flag_addx: op = "adc"; break; case flag_subx: op = "sbb"; break; default: assert(0); break; } comprintf("\trestore_carry();\n"); /* Reload the X flag into C */ switch (size) { case sz_byte: comprintf("\t%s_b(%s,%s);\n", op, dst, src); break; case sz_word: comprintf("\t%s_w(%s,%s);\n", op, dst, src); break; case sz_long: comprintf("\t%s_l(%s,%s);\n", op, dst, src); break; } return; } break; default: return; } } /* Need the flags, but possibly not all of them */ switch (type) { case flag_logical_noclobber: failure; /* fall through */ case flag_and: case flag_or: case flag_eor: comprintf("\tdont_care_flags();\n"); start_brace(); { const char* op; switch (type) { case flag_and: op = "and"; break; case flag_or: op = "or"; break; case flag_eor: op = "xor"; break; default: assert(0); break; } switch (size) { case sz_byte: comprintf("\tstart_needflags();\n" "\t%s_b(%s,%s);\n", op, dst, src); break; case sz_word: comprintf("\tstart_needflags();\n" "\t%s_w(%s,%s);\n", op, dst, src); break; case sz_long: comprintf("\tstart_needflags();\n" "\t%s_l(%s,%s);\n", op, dst, src); break; } comprintf("\tlive_flags();\n"); comprintf("\tend_needflags();\n"); close_brace(); return; } case flag_mov: comprintf("\tdont_care_flags();\n"); start_brace(); { switch (size) { case sz_byte: comprintf("\tif (%s!=%s) {\n", src, dst); comprintf("\tmov_b_ri(%s,0);\n" "\tstart_needflags();\n", dst); comprintf("\tor_b(%s,%s);\n", dst, src); comprintf("\t} else {\n"); comprintf("\tmov_b_rr(%s,%s);\n", dst, src); comprintf("\ttest_b_rr(%s,%s);\n", dst, dst); comprintf("\t}\n"); break; case sz_word: comprintf("\tif (%s!=%s) {\n", src, dst); comprintf("\tmov_w_ri(%s,0);\n" "\tstart_needflags();\n", dst); comprintf("\tor_w(%s,%s);\n", dst, src); comprintf("\t} else {\n"); comprintf("\tmov_w_rr(%s,%s);\n", dst, src); comprintf("\ttest_w_rr(%s,%s);\n", dst, dst); comprintf("\t}\n"); break; case sz_long: comprintf("\tif (%s!=%s) {\n", src, dst); comprintf("\tmov_l_ri(%s,0);\n" "\tstart_needflags();\n", dst); comprintf("\tor_l(%s,%s);\n", dst, src); comprintf("\t} else {\n"); comprintf("\tmov_l_rr(%s,%s);\n", dst, src); comprintf("\ttest_l_rr(%s,%s);\n", dst, dst); comprintf("\t}\n"); break; } comprintf("\tlive_flags();\n"); comprintf("\tend_needflags();\n"); close_brace(); return; } case flag_logical: comprintf("\tdont_care_flags();\n"); start_brace(); switch (size) { case sz_byte: comprintf("\tstart_needflags();\n" "\ttest_b_rr(%s,%s);\n", value, value); break; case sz_word: comprintf("\tstart_needflags();\n" "\ttest_w_rr(%s,%s);\n", value, value); break; case sz_long: comprintf("\tstart_needflags();\n" "\ttest_l_rr(%s,%s);\n", value, value); break; } comprintf("\tlive_flags();\n"); comprintf("\tend_needflags();\n"); close_brace(); return; case flag_add: case flag_sub: case flag_cmp: comprintf("\tdont_care_flags();\n"); { const char* op; switch (type) { case flag_add: op = "add"; break; case flag_sub: op = "sub"; break; case flag_cmp: op = "cmp"; break; default: assert(0); break; } switch (size) { case sz_byte: comprintf("\tstart_needflags();\n" "\t%s_b(%s,%s);\n", op, dst, src); break; case sz_word: comprintf("\tstart_needflags();\n" "\t%s_w(%s,%s);\n", op, dst, src); break; case sz_long: comprintf("\tstart_needflags();\n" "\t%s_l(%s,%s);\n", op, dst, src); break; } comprintf("\tlive_flags();\n"); comprintf("\tend_needflags();\n"); if (type != flag_cmp) { duplicate_carry(); } comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); return; } case flag_addx: case flag_subx: uses_cmov; comprintf("\tdont_care_flags();\n"); { const char* op; switch (type) { case flag_addx: op = "adc"; break; case flag_subx: op = "sbb"; break; default: assert(0); break; } start_brace(); comprintf("\tint zero=scratchie++;\n" "\tint one=scratchie++;\n" "\tif (needed_flags&FLAG_Z) {\n" "\tmov_l_ri(zero,0);\n" "\tmov_l_ri(one,-1);\n" "\tmake_flags_live();\n" "\tcmov_l_rr(zero,one,%d);\n" "\t}\n", NATIVE_CC_NE); comprintf("\trestore_carry();\n"); /* Reload the X flag into C */ switch (size) { case sz_byte: comprintf("\tstart_needflags();\n" "\t%s_b(%s,%s);\n", op, dst, src); break; case sz_word: comprintf("\tstart_needflags();\n" "\t%s_w(%s,%s);\n", op, dst, src); break; case sz_long: comprintf("\tstart_needflags();\n" "\t%s_l(%s,%s);\n", op, dst, src); break; } comprintf("\tlive_flags();\n"); comprintf("\tif (needed_flags&FLAG_Z) {\n" "\tcmov_l_rr(zero,one,%d);\n" "\tset_zero(zero, one);\n" /* No longer need one */ "\tlive_flags();\n" "\t}\n", NATIVE_CC_NE); comprintf("\tend_needflags();\n"); duplicate_carry(); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); return; } default: failure; break; } } #endif static void gen_abcd(uae_u32 opcode, struct instr *curi, const char* ssize) { #if 0 #else (void) opcode; (void) curi; (void) ssize; failure; /* No BCD maths for me.... */ #endif } static void gen_add(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); comprintf("\t dont_care_flags();\n"); start_brace(); comprintf("\t int tmp=scratchie++;\n"); // Use tmp register to avoid destroying upper part in .B., .W cases if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_ADD_%s(tmp,dst,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); duplicate_carry(); comprintf( "\t if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { comprintf("\t jnf_ADD(tmp,dst,src);\n"); } genastore("tmp", curi->dmode, "dstreg", curi->size, "dst"); #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); genflags(flag_add, curi->size, "", "src", "dst"); genastore("dst", curi->dmode, "dstreg", curi->size, "dst"); #endif } static void gen_adda(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", sz_long, "dst", 1, 0); start_brace(); comprintf("\t jnf_ADDA_%s(dst, src);\n", ssize); genastore("dst", curi->dmode, "dstreg", sz_long, "dst"); #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", sz_long, "dst", 1, 0); start_brace(); comprintf("\tint tmp=scratchie++;\n"); switch (curi->size) { case sz_byte: comprintf("\tsign_extend_8_rr(tmp,src);\n"); break; case sz_word: comprintf("\tsign_extend_16_rr(tmp,src);\n"); break; case sz_long: comprintf("\ttmp=src;\n"); break; default: assert(0); break; } comprintf("\tarm_ADD_l(dst,tmp);\n"); genastore("dst", curi->dmode, "dstreg", sz_long, "dst"); #endif } static void gen_addx(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) isaddx; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); // Use tmp register to avoid destroying upper part in .B., .W cases comprintf("\t dont_care_flags();\n"); comprintf("\t int tmp=scratchie++;\n"); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t restore_carry();\n"); /* Reload the X flag into C */ comprintf("\t start_needflags();\n"); comprintf("\t jff_ADDX_%s(tmp,dst,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); duplicate_carry(); comprintf("\t if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { comprintf("\t restore_carry();\n"); /* Reload the X flag into C */ comprintf("\t jnf_ADDX(tmp,dst,src);\n"); } genastore("tmp", curi->dmode, "dstreg", curi->size, "dst"); #else (void) ssize; isaddx; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); genflags(flag_addx, curi->size, "", "src", "dst"); genastore("dst", curi->dmode, "dstreg", curi->size, "dst"); #endif } static void gen_and(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); comprintf("\t dont_care_flags();\n"); comprintf("\t int tmp=scratchie++;\n"); start_brace(); if (!noflags) { comprintf("\t jff_AND_%s(tmp,dst,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_AND(tmp,dst,src);\n"); } genastore("tmp", curi->dmode, "dstreg", curi->size, "dst"); #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); genflags(flag_and, curi->size, "", "src", "dst"); genastore("dst", curi->dmode, "dstreg", curi->size, "dst"); #endif } static void gen_andsr(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); comprintf("\t jff_ANDSR(ARM_CCR_MAP[src & 0xF], (src & 0x10));\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } #else (void) curi; failure; isjump; #endif } static void gen_asl(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) mayfail; if (curi->smode == Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " return;\n" "} \n"); start_brace(); } comprintf("\t dont_care_flags();\n"); comprintf("\t int tmp=scratchie++;\n"); genamode(curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "data", 1, 0); if (curi->smode != immi) { if (!noflags) { start_brace(); comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); comprintf("\t jff_ASL_%s_reg(tmp,data,cnt);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf( "\t if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { start_brace(); comprintf("\t jnf_LSL_reg(tmp,data,cnt);\n"); } } else { start_brace(); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); comprintf("\t jff_ASL_%s_imm(tmp,data,srcreg);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf( "\t if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { comprintf("\t jnf_LSL_imm(tmp,data,srcreg);\n"); } } genastore("tmp", curi->dmode, "dstreg", curi->size, "data"); #else (void) ssize; mayfail; if (curi->smode == Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " return;\n" "} \n"); start_brace(); } comprintf("\tdont_care_flags();\n"); /* Except for the handling of the V flag, this is identical to LSL. The handling of V is, uhm, unpleasant, so if it's needed, let the normal emulation handle it. Shoulders of giants kinda thing ;-) */ comprintf("if (needed_flags & FLAG_V) {\n" " FAIL(1);\n" " return;\n" "} \n"); genamode(curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "data", 1, 0); if (curi->smode != immi) { if (!noflags) { uses_cmov; start_brace(); comprintf("\tint highmask;\n" "\tint cdata=scratchie++;\n" "\tint tmpcnt=scratchie++;\n"); comprintf("\tmov_l_rr(tmpcnt,cnt);\n" "\tand_l_ri(tmpcnt,63);\n" "\tmov_l_ri(cdata,0);\n" "\tcmov_l_rr(cdata,data,%d);\n", NATIVE_CC_NE); /* cdata is now either data (for shift count!=0) or 0 (for shift count==0) */ switch (curi->size) { case sz_byte: comprintf("\tshll_b_rr(data,cnt);\n" "\thighmask=0x38;\n"); break; case sz_word: comprintf("\tshll_w_rr(data,cnt);\n" "\thighmask=0x30;\n"); break; case sz_long: comprintf("\tshll_l_rr(data,cnt);\n" "\thighmask=0x20;\n"); break; default: assert(0); break; } comprintf("test_l_ri(cnt,highmask);\n" "mov_l_ri(scratchie,0);\n" "cmov_l_rr(scratchie,data,%d);\n", NATIVE_CC_EQ); switch (curi->size) { case sz_byte: comprintf("\tmov_b_rr(data,scratchie);\n"); break; case sz_word: comprintf("\tmov_w_rr(data,scratchie);\n"); break; case sz_long: comprintf("\tmov_l_rr(data,scratchie);\n"); break; default: assert(0); break; } /* Result of shift is now in data. Now we need to determine the carry by shifting cdata one less */ comprintf("\tsub_l_ri(tmpcnt,1);\n"); switch (curi->size) { case sz_byte: comprintf("\tshll_b_rr(cdata,tmpcnt);\n"); break; case sz_word: comprintf("\tshll_w_rr(cdata,tmpcnt);\n"); break; case sz_long: comprintf("\tshll_l_rr(cdata,tmpcnt);\n"); break; default: assert(0); break; } comprintf("test_l_ri(tmpcnt,highmask);\n" "mov_l_ri(scratchie,0);\n" "cmov_l_rr(cdata,scratchie,%d);\n", NATIVE_CC_NE); /* And create the flags */ comprintf("\tstart_needflags();\n"); comprintf("\tif (needed_flags & FLAG_ZNV)\n"); switch (curi->size) { case sz_byte: comprintf("\t test_b_rr(data,data);\n"); comprintf("\t bt_l_ri(cdata,7);\n"); break; case sz_word: comprintf("\t test_w_rr(data,data);\n"); comprintf("\t bt_l_ri(cdata,15);\n"); break; case sz_long: comprintf("\t test_l_rr(data,data);\n"); comprintf("\t bt_l_ri(cdata,31);\n"); break; } comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); genastore("data", curi->dmode, "dstreg", curi->size, "data"); } else { uses_cmov; start_brace(); comprintf("\tint highmask;\n"); switch (curi->size) { case sz_byte: comprintf("\tshll_b_rr(data,cnt);\n" "\thighmask=0x38;\n"); break; case sz_word: comprintf("\tshll_w_rr(data,cnt);\n" "\thighmask=0x30;\n"); break; case sz_long: comprintf("\tshll_l_rr(data,cnt);\n" "\thighmask=0x20;\n"); break; default: assert(0); break; } comprintf("test_l_ri(cnt,highmask);\n" "mov_l_ri(scratchie,0);\n" "cmov_l_rr(scratchie,data,%d);\n", NATIVE_CC_EQ); switch (curi->size) { case sz_byte: comprintf("\tmov_b_rr(data,scratchie);\n"); break; case sz_word: comprintf("\tmov_w_rr(data,scratchie);\n"); break; case sz_long: comprintf("\tmov_l_rr(data,scratchie);\n"); break; default: assert(0); break; } genastore("data", curi->dmode, "dstreg", curi->size, "data"); } } else { start_brace(); comprintf("\tint tmp=scratchie++;\n" "\tint bp;\n" "\tmov_l_rr(tmp,data);\n"); switch (curi->size) { case sz_byte: comprintf("\tshll_b_ri(data,srcreg);\n" "\tbp=8-srcreg;\n"); break; case sz_word: comprintf("\tshll_w_ri(data,srcreg);\n" "\tbp=16-srcreg;\n"); break; case sz_long: comprintf("\tshll_l_ri(data,srcreg);\n" "\tbp=32-srcreg;\n"); break; default: assert(0); break; } if (!noflags) { comprintf("\tstart_needflags();\n"); comprintf("\tif (needed_flags & FLAG_ZNV)\n"); switch (curi->size) { case sz_byte: comprintf("\t test_b_rr(data,data);\n"); break; case sz_word: comprintf("\t test_w_rr(data,data);\n"); break; case sz_long: comprintf("\t test_l_rr(data,data);\n"); break; } comprintf("\t bt_l_ri(tmp,bp);\n"); /* Set C */ comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } genastore("data", curi->dmode, "dstreg", curi->size, "data"); } #endif } static void gen_aslw(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf("\t int tmp=scratchie++;\n"); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_ASLW(tmp,src);\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_ASLW(tmp,src);\n"); } genastore("tmp", curi->smode, "srcreg", curi->size, "src"); #else (void) curi; failure; #endif } static void gen_asr(uae_u32 opcode, struct instr *curi, const char* ssize) { #if defined(USE_JIT2) (void)opcode; mayfail; if (curi->smode == Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " return;\n" "} \n"); start_brace(); } comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "data", 1, 0); start_brace(); comprintf("\t int tmp=scratchie++;\n"); if (curi->smode != immi) { if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); comprintf("\t jff_ASR_%s_reg(tmp,data,cnt);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf( "if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { comprintf("\t jnf_ASR_%s_reg(tmp,data,cnt);\n", ssize); } } else { char *op; if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); op = "ff"; } else op = "nf"; comprintf("\t j%s_ASR_%s_imm(tmp,data,srcreg);\n", op, ssize); if (!noflags) { comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf( "\t if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } } genastore("tmp", curi->dmode, "dstreg", curi->size, "data"); #else (void) opcode; (void) ssize; mayfail; if (curi->smode == Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " return;\n" "} \n"); start_brace(); } comprintf("\tdont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "data", 1, 0); if (curi->smode != immi) { if (!noflags) { uses_cmov; start_brace(); comprintf("\tint highmask;\n" "\tint width;\n" "\tint cdata=scratchie++;\n" "\tint tmpcnt=scratchie++;\n" "\tint highshift=scratchie++;\n"); comprintf("\tmov_l_rr(tmpcnt,cnt);\n" "\tand_l_ri(tmpcnt,63);\n" "\tmov_l_ri(cdata,0);\n" "\tcmov_l_rr(cdata,data,%d);\n", NATIVE_CC_NE); /* cdata is now either data (for shift count!=0) or 0 (for shift count==0) */ switch (curi->size) { case sz_byte: comprintf("\tshra_b_rr(data,cnt);\n" "\thighmask=0x38;\n" "\twidth=8;\n"); break; case sz_word: comprintf("\tshra_w_rr(data,cnt);\n" "\thighmask=0x30;\n" "\twidth=16;\n"); break; case sz_long: comprintf("\tshra_l_rr(data,cnt);\n" "\thighmask=0x20;\n" "\twidth=32;\n"); break; default: assert(0); break; } comprintf("test_l_ri(cnt,highmask);\n" "mov_l_ri(highshift,0);\n" "mov_l_ri(scratchie,width/2);\n" "cmov_l_rr(highshift,scratchie,%d);\n", NATIVE_CC_NE); /* The x86 masks out bits, so we now make sure that things really get shifted as much as planned */ switch (curi->size) { case sz_byte: comprintf("\tshra_b_rr(data,highshift);\n"); break; case sz_word: comprintf("\tshra_w_rr(data,highshift);\n"); break; case sz_long: comprintf("\tshra_l_rr(data,highshift);\n"); break; default: assert(0); break; } /* And again */ switch (curi->size) { case sz_byte: comprintf("\tshra_b_rr(data,highshift);\n"); break; case sz_word: comprintf("\tshra_w_rr(data,highshift);\n"); break; case sz_long: comprintf("\tshra_l_rr(data,highshift);\n"); break; default: assert(0); break; } /* Result of shift is now in data. Now we need to determine the carry by shifting cdata one less */ comprintf("\tsub_l_ri(tmpcnt,1);\n"); switch (curi->size) { case sz_byte: comprintf("\tshra_b_rr(cdata,tmpcnt);\n"); break; case sz_word: comprintf("\tshra_w_rr(cdata,tmpcnt);\n"); break; case sz_long: comprintf("\tshra_l_rr(cdata,tmpcnt);\n"); break; default: assert(0); break; } /* If the shift count was higher than the width, we need to pick up the sign from data */ comprintf("test_l_ri(tmpcnt,highmask);\n" "cmov_l_rr(cdata,data,%d);\n", NATIVE_CC_NE); /* And create the flags */ comprintf("\tstart_needflags();\n"); comprintf("\tif (needed_flags & FLAG_ZNV)\n"); switch (curi->size) { case sz_byte: comprintf("\t test_b_rr(data,data);\n"); break; case sz_word: comprintf("\t test_w_rr(data,data);\n"); break; case sz_long: comprintf("\t test_l_rr(data,data);\n"); break; } comprintf("\t bt_l_ri(cdata,0);\n"); /* Set C */ comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); genastore("data", curi->dmode, "dstreg", curi->size, "data"); } else { uses_cmov; start_brace(); comprintf("\tint highmask;\n" "\tint width;\n" "\tint highshift=scratchie++;\n"); switch (curi->size) { case sz_byte: comprintf("\tshra_b_rr(data,cnt);\n" "\thighmask=0x38;\n" "\twidth=8;\n"); break; case sz_word: comprintf("\tshra_w_rr(data,cnt);\n" "\thighmask=0x30;\n" "\twidth=16;\n"); break; case sz_long: comprintf("\tshra_l_rr(data,cnt);\n" "\thighmask=0x20;\n" "\twidth=32;\n"); break; default: assert(0); break; } comprintf("test_l_ri(cnt,highmask);\n" "mov_l_ri(highshift,0);\n" "mov_l_ri(scratchie,width/2);\n" "cmov_l_rr(highshift,scratchie,%d);\n", NATIVE_CC_NE); /* The x86 masks out bits, so we now make sure that things really get shifted as much as planned */ switch (curi->size) { case sz_byte: comprintf("\tshra_b_rr(data,highshift);\n"); break; case sz_word: comprintf("\tshra_w_rr(data,highshift);\n"); break; case sz_long: comprintf("\tshra_l_rr(data,highshift);\n"); break; default: assert(0); break; } /* And again */ switch (curi->size) { case sz_byte: comprintf("\tshra_b_rr(data,highshift);\n"); break; case sz_word: comprintf("\tshra_w_rr(data,highshift);\n"); break; case sz_long: comprintf("\tshra_l_rr(data,highshift);\n"); break; default: assert(0); break; } genastore("data", curi->dmode, "dstreg", curi->size, "data"); } } else { start_brace(); comprintf("\tint tmp=scratchie++;\n" "\tint bp;\n" "\tmov_l_rr(tmp,data);\n"); switch (curi->size) { case sz_byte: comprintf("\tshra_b_ri(data,srcreg);\n" "\tbp=srcreg-1;\n"); break; case sz_word: comprintf("\tshra_w_ri(data,srcreg);\n" "\tbp=srcreg-1;\n"); break; case sz_long: comprintf("\tshra_l_ri(data,srcreg);\n" "\tbp=srcreg-1;\n"); break; default: assert(0); break; } if (!noflags) { comprintf("\tstart_needflags();\n"); comprintf("\tif (needed_flags & FLAG_ZNV)\n"); switch (curi->size) { case sz_byte: comprintf("\t test_b_rr(data,data);\n"); break; case sz_word: comprintf("\t test_w_rr(data,data);\n"); break; case sz_long: comprintf("\t test_l_rr(data,data);\n"); break; } comprintf("\t bt_l_ri(tmp,bp);\n"); /* Set C */ comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } genastore("data", curi->dmode, "dstreg", curi->size, "data"); } #endif } static void gen_asrw(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf("\t int tmp = scratchie++;\n"); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_ASRW(tmp,src);\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_ASRW(tmp,src);\n"); } genastore("tmp", curi->smode, "srcreg", curi->size, "src"); #else (void) curi; failure; #endif } static void gen_bchg(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); comprintf("\t jff_BCHG_%s(dst,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_BCHG_%s(dst,src);\n", ssize); comprintf("\t dont_care_flags();\n"); } genastore("dst", curi->dmode, "dstreg", curi->size, "dst"); #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); comprintf("\tint s=scratchie++;\n" "\tint tmp=scratchie++;\n" "\tmov_l_rr(s,src);\n"); if (curi->size == sz_byte) comprintf("\tand_l_ri(s,7);\n"); else comprintf("\tand_l_ri(s,31);\n"); comprintf("\tbtc_l_rr(dst,s);\n" /* Answer now in C */ "\tsbb_l(s,s);\n" /* s is 0 if bit was 0, -1 otherwise */ "\tmake_flags_live();\n" /* Get the flags back */ "\tdont_care_flags();\n"); if (!noflags) { comprintf("\tstart_needflags();\n" "\tset_zero(s,tmp);\n" "\tlive_flags();\n" "\tend_needflags();\n"); } genastore("dst", curi->dmode, "dstreg", curi->size, "dst"); #endif } static void gen_bclr(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); comprintf("\t jff_BCLR_%s(dst,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_BCLR_%s(dst,src);\n", ssize); comprintf("\t dont_care_flags();\n"); } genastore("dst", curi->dmode, "dstreg", curi->size, "dst"); #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); comprintf("\tint s=scratchie++;\n" "\tint tmp=scratchie++;\n" "\tmov_l_rr(s,src);\n"); if (curi->size == sz_byte) comprintf("\tand_l_ri(s,7);\n"); else comprintf("\tand_l_ri(s,31);\n"); comprintf("\tbtr_l_rr(dst,s);\n" /* Answer now in C */ "\tsbb_l(s,s);\n" /* s is 0 if bit was 0, -1 otherwise */ "\tmake_flags_live();\n" /* Get the flags back */ "\tdont_care_flags();\n"); if (!noflags) { comprintf("\tstart_needflags();\n" "\tset_zero(s,tmp);\n" "\tlive_flags();\n" "\tend_needflags();\n"); } genastore("dst", curi->dmode, "dstreg", curi->size, "dst"); #endif } static void gen_bset(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); comprintf("\t jff_BSET_%s(dst,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_BSET_%s(dst,src);\n", ssize); comprintf("\t dont_care_flags();\n"); } genastore("dst", curi->dmode, "dstreg", curi->size, "dst"); #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); comprintf("\tint s=scratchie++;\n" "\tint tmp=scratchie++;\n" "\tmov_l_rr(s,src);\n"); if (curi->size == sz_byte) comprintf("\tand_l_ri(s,7);\n"); else comprintf("\tand_l_ri(s,31);\n"); comprintf("\tbts_l_rr(dst,s);\n" /* Answer now in C */ "\tsbb_l(s,s);\n" /* s is 0 if bit was 0, -1 otherwise */ "\tmake_flags_live();\n" /* Get the flags back */ "\tdont_care_flags();\n"); if (!noflags) { comprintf("\tstart_needflags();\n" "\tset_zero(s,tmp);\n" "\tlive_flags();\n" "\tend_needflags();\n"); } genastore("dst", curi->dmode, "dstreg", curi->size, "dst"); #endif } static void gen_btst(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); // If we are not interested in flags it is not necessary to do // anything with the data if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); comprintf("\t jff_BTST_%s(dst,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t dont_care_flags();\n"); } #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); comprintf("\tint s=scratchie++;\n" "\tint tmp=scratchie++;\n" "\tmov_l_rr(s,src);\n"); if (curi->size == sz_byte) comprintf("\tand_l_ri(s,7);\n"); else comprintf("\tand_l_ri(s,31);\n"); comprintf("\tbt_l_rr(dst,s);\n" /* Answer now in C */ "\tsbb_l(s,s);\n" /* s is 0 if bit was 0, -1 otherwise */ "\tmake_flags_live();\n" /* Get the flags back */ "\tdont_care_flags();\n"); if (!noflags) { comprintf("\tstart_needflags();\n" "\tset_zero(s,tmp);\n" "\tlive_flags();\n" "\tend_needflags();\n"); } #endif } static void gen_clr(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 2, 0); comprintf("\t dont_care_flags();\n"); start_brace(); comprintf("\t int tmp=scratchie++;\n"); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_CLR(tmp);\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_CLR(tmp);\n"); } genastore("tmp", curi->smode, "srcreg", curi->size, "src"); #else genamode(curi->smode, "srcreg", curi->size, "src", 2, 0); start_brace(); comprintf("\tint dst=scratchie++;\n"); comprintf("\tmov_l_ri(dst,0);\n"); genflags(flag_logical, curi->size, "dst", "", ""); genastore("dst", curi->smode, "srcreg", curi->size, "src"); #endif } static void gen_cmp(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); comprintf("\t dont_care_flags();\n"); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_CMP_%s(dst,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { comprintf("/* Weird --- CMP with noflags ;-) */\n"); } #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); genflags(flag_cmp, curi->size, "", "src", "dst"); #endif } static void gen_cmpa(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", sz_long, "dst", 1, 0); start_brace(); if (!noflags) { comprintf("\t dont_care_flags();\n"); comprintf("\t start_needflags();\n"); comprintf("\t jff_CMPA_%s(dst,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { comprintf("\tdont_care_flags();\n"); comprintf("/* Weird --- CMP with noflags ;-) */\n"); } #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", sz_long, "dst", 1, 0); start_brace(); comprintf("\tint tmps=scratchie++;\n"); switch (curi->size) { case sz_byte: comprintf("\tsign_extend_8_rr(tmps,src);\n"); break; case sz_word: comprintf("\tsign_extend_16_rr(tmps,src);\n"); break; case sz_long: comprintf("tmps=src;\n"); break; default: assert(0); break; } genflags(flag_cmp, sz_long, "", "tmps", "dst"); #endif } static void gen_dbcc(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if 0 isjump; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "offs", 1, 0); comprintf("uae_u32 voffs;\n"); comprintf("voffs = get_const(offs);\n"); /* That offs is an immediate, so we can clobber it with abandon */ switch (curi->size) { case sz_word: comprintf("\t voffs = (uae_s32)((uae_s16)voffs);\n"); break; default: assert(0); /* Seems this only comes in word flavour */ break; } comprintf("\t voffs -= m68k_pc_offset - m68k_pc_offset_thisinst - 2;\n"); comprintf("\t voffs += (uintptr)comp_pc_p + m68k_pc_offset;\n"); comprintf("\t add_const_v(PC_P, m68k_pc_offset);\n"); comprintf("\t m68k_pc_offset = 0;\n"); start_brace(); if (curi->cc >= 2) { comprintf("\t make_flags_live();\n"); /* Load the flags */ } assert(curi->size == sz_word); switch (curi->cc) { case 0: /* This is an elaborate nop? */ break; case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: comprintf("\t start_needflags();\n"); comprintf("\t jnf_DBcc(src,voffs,%d);\n", curi->cc); comprintf("\t end_needflags();\n"); break; default: assert(0); break; } genastore("src", curi->smode, "srcreg", curi->size, "src"); gen_update_next_handler(); #else isjump; uses_cmov; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "offs", 1, 0); /* That offs is an immediate, so we can clobber it with abandon */ switch (curi->size) { case sz_word: comprintf("\tsign_extend_16_rr(offs,offs);\n"); break; default: assert(0); /* Seems this only comes in word flavour */ break; } comprintf("\tsub_l_ri(offs,m68k_pc_offset-m68k_pc_offset_thisinst-2);\n"); comprintf("\tarm_ADD_l_ri(offs,(uintptr)comp_pc_p);\n"); /* New PC, once the offset_68k is * also added */ /* Let's fold in the m68k_pc_offset at this point */ comprintf("\tarm_ADD_l_ri(offs,m68k_pc_offset);\n"); comprintf("\tarm_ADD_l_ri(PC_P,m68k_pc_offset);\n"); comprintf("\tm68k_pc_offset=0;\n"); start_brace(); comprintf("\tint nsrc=scratchie++;\n"); if (curi->cc >= 2) { comprintf("\tmake_flags_live();\n"); /* Load the flags */ } assert (curi->size == sz_word); switch (curi->cc) { case 0: /* This is an elaborate nop? */ break; case 1: comprintf("\tstart_needflags();\n"); comprintf("\tsub_w_ri(src,1);\n"); comprintf("\t end_needflags();\n"); start_brace(); comprintf("\tuae_u32 v2,v;\n" "\tuae_u32 v1=get_const(PC_P);\n"); comprintf("\tv2=get_const(offs);\n" "\tregister_branch(v1,v2,%d);\n", NATIVE_CC_CC); break; case 8: failure; break; /* Work out details! FIXME */ case 9: failure; break; /* Not critical, though! */ case 2: case 3: case 4: case 5: case 6: case 7: case 10: case 11: case 12: case 13: case 14: case 15: comprintf("\tmov_l_rr(nsrc,src);\n"); comprintf("\tlea_l_brr(scratchie,src,(uae_s32)-1);\n" "\tmov_w_rr(src,scratchie);\n"); comprintf("\tcmov_l_rr(offs,PC_P,%d);\n", cond_codes[curi->cc]); comprintf("\tcmov_l_rr(src,nsrc,%d);\n", cond_codes[curi->cc]); /* OK, now for cc=true, we have src==nsrc and offs==PC_P, so whether we move them around doesn't matter. However, if cc=false, we have offs==jump_pc, and src==nsrc-1 */ comprintf("\t start_needflags();\n"); comprintf("\ttest_w_rr(nsrc,nsrc);\n"); comprintf("\t end_needflags();\n"); comprintf("\tcmov_l_rr(PC_P,offs,%d);\n", NATIVE_CC_NE); break; default: assert(0); break; } genastore("src", curi->smode, "srcreg", curi->size, "src"); gen_update_next_handler(); #endif } static void gen_eor(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); comprintf("\t dont_care_flags();\n"); start_brace(); comprintf("\t int tmp=scratchie++;\n"); if (!noflags) { comprintf("\t jff_EOR_%s(tmp,dst,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_EOR(tmp,dst,src);\n"); } genastore("tmp", curi->dmode, "dstreg", curi->size, "dst"); #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); genflags(flag_eor, curi->size, "", "src", "dst"); genastore("dst", curi->dmode, "dstreg", curi->size, "dst"); #endif } static void gen_eorsr(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); comprintf("\t jff_EORSR(ARM_CCR_MAP[src & 0xF], ((src & 0x10) >> 4));\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } #else (void) curi; failure; isjump; #endif } static void gen_exg(uae_u32 opcode, struct instr *curi, const char* ssize) { #if 0 #else (void) opcode; (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); comprintf("\tint tmp=scratchie++;\n" "\tmov_l_rr(tmp,src);\n"); genastore("dst", curi->smode, "srcreg", curi->size, "src"); genastore("tmp", curi->dmode, "dstreg", curi->size, "dst"); #endif } static void gen_ext(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", sz_long, "src", 1, 0); comprintf("\t dont_care_flags();\n"); start_brace(); comprintf("\t int tmp=scratchie++;\n"); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_EXT_%s(tmp,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_EXT_%s(tmp,src);\n", ssize); } genastore("tmp", curi->smode, "srcreg", curi->size == sz_word ? sz_word : sz_long, "src"); #else (void) ssize; genamode(curi->smode, "srcreg", sz_long, "src", 1, 0); comprintf("\tdont_care_flags();\n"); start_brace(); switch (curi->size) { case sz_byte: comprintf("\tint dst = src;\n" "\tsign_extend_8_rr(src,src);\n"); break; case sz_word: comprintf("\tint dst = scratchie++;\n" "\tsign_extend_8_rr(dst,src);\n"); break; case sz_long: comprintf("\tint dst = src;\n" "\tsign_extend_16_rr(src,src);\n"); break; default: assert(0); break; } genflags(flag_logical, curi->size == sz_word ? sz_word : sz_long, "dst", "", ""); genastore("dst", curi->smode, "srcreg", curi->size == sz_word ? sz_word : sz_long, "src"); #endif } static void gen_lsl(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) mayfail; if (curi->smode == Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " return;\n" "} \n"); start_brace(); } comprintf("\tdont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "data", 1, 0); comprintf("\t int tmp=scratchie++;\n"); if (curi->smode != immi) { if (!noflags) { start_brace(); comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); comprintf("\t jff_LSL_%s_reg(tmp,data,cnt);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf( "\t if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { start_brace(); comprintf("\t jnf_LSL_reg(tmp,data,cnt);\n"); } } else { start_brace(); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); comprintf("\t jff_LSL_%s_imm(tmp,data,srcreg);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf( "\t if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { comprintf("\t jnf_LSL_imm(tmp,data,srcreg);\n"); } } genastore("tmp", curi->dmode, "dstreg", curi->size, "data"); #else mayfail; if (curi->smode == Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " return;\n" "} \n"); start_brace(); } comprintf("\tdont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "data", 1, 0); if (curi->smode != immi) { if (!noflags) { uses_cmov; start_brace(); comprintf("\tint highmask;\n" "\tint cdata=scratchie++;\n" "\tint tmpcnt=scratchie++;\n"); comprintf("\tmov_l_rr(tmpcnt,cnt);\n" "\tand_l_ri(tmpcnt,63);\n" "\tmov_l_ri(cdata,0);\n" "\tcmov_l_rr(cdata,data,%d);\n", NATIVE_CC_NE); /* cdata is now either data (for shift count!=0) or 0 (for shift count==0) */ switch (curi->size) { case sz_byte: comprintf("\tshll_b_rr(data,cnt);\n" "\thighmask=0x38;\n"); break; case sz_word: comprintf("\tshll_w_rr(data,cnt);\n" "\thighmask=0x30;\n"); break; case sz_long: comprintf("\tshll_l_rr(data,cnt);\n" "\thighmask=0x20;\n"); break; default: assert(0); break; } comprintf("test_l_ri(cnt,highmask);\n" "mov_l_ri(scratchie,0);\n" "cmov_l_rr(scratchie,data,%d);\n", NATIVE_CC_EQ); switch (curi->size) { case sz_byte: comprintf("\tmov_b_rr(data,scratchie);\n"); break; case sz_word: comprintf("\tmov_w_rr(data,scratchie);\n"); break; case sz_long: comprintf("\tmov_l_rr(data,scratchie);\n"); break; default: assert(0); break; } /* Result of shift is now in data. Now we need to determine the carry by shifting cdata one less */ comprintf("\tsub_l_ri(tmpcnt,1);\n"); switch (curi->size) { case sz_byte: comprintf("\tshll_b_rr(cdata,tmpcnt);\n"); break; case sz_word: comprintf("\tshll_w_rr(cdata,tmpcnt);\n"); break; case sz_long: comprintf("\tshll_l_rr(cdata,tmpcnt);\n"); break; default: assert(0); break; } comprintf("test_l_ri(tmpcnt,highmask);\n" "mov_l_ri(scratchie,0);\n" "cmov_l_rr(cdata,scratchie,%d);\n", NATIVE_CC_NE); /* And create the flags */ comprintf("\tstart_needflags();\n"); comprintf("\tif (needed_flags & FLAG_ZNV)\n"); switch (curi->size) { case sz_byte: comprintf("\t test_b_rr(data,data);\n"); comprintf("\t bt_l_ri(cdata,7);\n"); break; case sz_word: comprintf("\t test_w_rr(data,data);\n"); comprintf("\t bt_l_ri(cdata,15);\n"); break; case sz_long: comprintf("\t test_l_rr(data,data);\n"); comprintf("\t bt_l_ri(cdata,31);\n"); break; } comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); genastore("data", curi->dmode, "dstreg", curi->size, "data"); } else { uses_cmov; start_brace(); comprintf("\tint highmask;\n"); switch (curi->size) { case sz_byte: comprintf("\tshll_b_rr(data,cnt);\n" "\thighmask=0x38;\n"); break; case sz_word: comprintf("\tshll_w_rr(data,cnt);\n" "\thighmask=0x30;\n"); break; case sz_long: comprintf("\tshll_l_rr(data,cnt);\n" "\thighmask=0x20;\n"); break; default: assert(0); break; } comprintf("test_l_ri(cnt,highmask);\n" "mov_l_ri(scratchie,0);\n" "cmov_l_rr(scratchie,data,%d);\n", NATIVE_CC_EQ); switch (curi->size) { case sz_byte: comprintf("\tmov_b_rr(data,scratchie);\n"); break; case sz_word: comprintf("\tmov_w_rr(data,scratchie);\n"); break; case sz_long: comprintf("\tmov_l_rr(data,scratchie);\n"); break; default: assert(0); break; } genastore("data", curi->dmode, "dstreg", curi->size, "data"); } } else { start_brace(); comprintf("\tint tmp=scratchie++;\n" "\tint bp;\n" "\tmov_l_rr(tmp,data);\n"); switch (curi->size) { case sz_byte: comprintf("\tshll_b_ri(data,srcreg);\n" "\tbp=8-srcreg;\n"); break; case sz_word: comprintf("\tshll_w_ri(data,srcreg);\n" "\tbp=16-srcreg;\n"); break; case sz_long: comprintf("\tshll_l_ri(data,srcreg);\n" "\tbp=32-srcreg;\n"); break; default: assert(0); break; } if (!noflags) { comprintf("\tstart_needflags();\n"); comprintf("\tif (needed_flags & FLAG_ZNV)\n"); switch (curi->size) { case sz_byte: comprintf("\t test_b_rr(data,data);\n"); break; case sz_word: comprintf("\t test_w_rr(data,data);\n"); break; case sz_long: comprintf("\t test_l_rr(data,data);\n"); break; } comprintf("\t bt_l_ri(tmp,bp);\n"); /* Set C */ comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } genastore("data", curi->dmode, "dstreg", curi->size, "data"); } #endif } static void gen_lslw(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf("\t int tmp=scratchie++;\n"); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_LSLW(tmp,src);\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_LSLW(tmp,src);\n"); } genastore("tmp", curi->smode, "srcreg", curi->size, "src"); #else (void) curi; failure; #endif } static void gen_lsr(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) mayfail; if (curi->smode == Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " return;\n" "} \n"); start_brace(); } comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "data", 1, 0); comprintf("\t int tmp=scratchie++;\n"); if (curi->smode != immi) { if (!noflags) { start_brace(); comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); comprintf("\t jff_LSR_%s_reg(tmp,data,cnt);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { start_brace(); comprintf("\t jnf_LSR_%s_reg(tmp,data,cnt);\n", ssize); } } else { start_brace(); char *op; if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); op = "ff"; } else op = "nf"; comprintf("\t j%s_LSR_%s_imm(tmp,data,srcreg);\n", op, ssize); if (!noflags) { comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf( "\t if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } } genastore("tmp", curi->dmode, "dstreg", curi->size, "data"); #else (void) ssize; mayfail; if (curi->smode == Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " return;\n" "} \n"); start_brace(); } comprintf("\tdont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "data", 1, 0); if (curi->smode != immi) { if (!noflags) { uses_cmov; start_brace(); comprintf("\tint highmask;\n" "\tint cdata=scratchie++;\n" "\tint tmpcnt=scratchie++;\n"); comprintf("\tmov_l_rr(tmpcnt,cnt);\n" "\tand_l_ri(tmpcnt,63);\n" "\tmov_l_ri(cdata,0);\n" "\tcmov_l_rr(cdata,data,%d);\n", NATIVE_CC_NE); /* cdata is now either data (for shift count!=0) or 0 (for shift count==0) */ switch (curi->size) { case sz_byte: comprintf("\tshrl_b_rr(data,cnt);\n" "\thighmask=0x38;\n"); break; case sz_word: comprintf("\tshrl_w_rr(data,cnt);\n" "\thighmask=0x30;\n"); break; case sz_long: comprintf("\tshrl_l_rr(data,cnt);\n" "\thighmask=0x20;\n"); break; default: assert(0); break; } comprintf("test_l_ri(cnt,highmask);\n" "mov_l_ri(scratchie,0);\n" "cmov_l_rr(scratchie,data,%d);\n", NATIVE_CC_EQ); switch (curi->size) { case sz_byte: comprintf("\tmov_b_rr(data,scratchie);\n"); break; case sz_word: comprintf("\tmov_w_rr(data,scratchie);\n"); break; case sz_long: comprintf("\tmov_l_rr(data,scratchie);\n"); break; default: assert(0); break; } /* Result of shift is now in data. Now we need to determine the carry by shifting cdata one less */ comprintf("\tsub_l_ri(tmpcnt,1);\n"); switch (curi->size) { case sz_byte: comprintf("\tshrl_b_rr(cdata,tmpcnt);\n"); break; case sz_word: comprintf("\tshrl_w_rr(cdata,tmpcnt);\n"); break; case sz_long: comprintf("\tshrl_l_rr(cdata,tmpcnt);\n"); break; default: assert(0); break; } comprintf("test_l_ri(tmpcnt,highmask);\n" "mov_l_ri(scratchie,0);\n" "cmov_l_rr(cdata,scratchie,%d);\n", NATIVE_CC_NE); /* And create the flags */ comprintf("\tstart_needflags();\n"); comprintf("\tif (needed_flags & FLAG_ZNV)\n"); switch (curi->size) { case sz_byte: comprintf("\t test_b_rr(data,data);\n"); break; case sz_word: comprintf("\t test_w_rr(data,data);\n"); break; case sz_long: comprintf("\t test_l_rr(data,data);\n"); break; } comprintf("\t bt_l_ri(cdata,0);\n"); /* Set C */ comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); genastore("data", curi->dmode, "dstreg", curi->size, "data"); } else { uses_cmov; start_brace(); comprintf("\tint highmask;\n"); switch (curi->size) { case sz_byte: comprintf("\tshrl_b_rr(data,cnt);\n" "\thighmask=0x38;\n"); break; case sz_word: comprintf("\tshrl_w_rr(data,cnt);\n" "\thighmask=0x30;\n"); break; case sz_long: comprintf("\tshrl_l_rr(data,cnt);\n" "\thighmask=0x20;\n"); break; default: assert(0); break; } comprintf("test_l_ri(cnt,highmask);\n" "mov_l_ri(scratchie,0);\n" "cmov_l_rr(scratchie,data,%d);\n", NATIVE_CC_EQ); switch (curi->size) { case sz_byte: comprintf("\tmov_b_rr(data,scratchie);\n"); break; case sz_word: comprintf("\tmov_w_rr(data,scratchie);\n"); break; case sz_long: comprintf("\tmov_l_rr(data,scratchie);\n"); break; default: assert(0); break; } genastore("data", curi->dmode, "dstreg", curi->size, "data"); } } else { start_brace(); comprintf("\tint tmp=scratchie++;\n" "\tint bp;\n" "\tmov_l_rr(tmp,data);\n"); switch (curi->size) { case sz_byte: comprintf("\tshrl_b_ri(data,srcreg);\n" "\tbp=srcreg-1;\n"); break; case sz_word: comprintf("\tshrl_w_ri(data,srcreg);\n" "\tbp=srcreg-1;\n"); break; case sz_long: comprintf("\tshrl_l_ri(data,srcreg);\n" "\tbp=srcreg-1;\n"); break; default: assert(0); break; } if (!noflags) { comprintf("\tstart_needflags();\n"); comprintf("\tif (needed_flags & FLAG_ZNV)\n"); switch (curi->size) { case sz_byte: comprintf("\t test_b_rr(data,data);\n"); break; case sz_word: comprintf("\t test_w_rr(data,data);\n"); break; case sz_long: comprintf("\t test_l_rr(data,data);\n"); break; } comprintf("\t bt_l_ri(tmp,bp);\n"); /* Set C */ comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("\t duplicate_carry();\n"); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } genastore("data", curi->dmode, "dstreg", curi->size, "data"); } #endif } static void gen_lsrw(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf("\t int tmp = scratchie++;\n"); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_LSRW(tmp,src);\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_LSRW(tmp,src);\n"); } genastore("tmp", curi->smode, "srcreg", curi->size, "src"); #else (void) curi; failure; #endif } static void gen_move(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) switch (curi->dmode) { case Dreg: case Areg: genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 2, 0); comprintf("\t dont_care_flags();\n"); start_brace(); comprintf("\t int tmp=scratchie++;\n"); if (!noflags && curi->dmode == Dreg) { comprintf("\t start_needflags();\n"); comprintf("\t jff_MOVE_%s(tmp, src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t tmp = src;\n"); } genastore("tmp", curi->dmode, "dstreg", curi->size, "dst"); break; default: /* It goes to memory, not a register */ genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 2, 0); comprintf("\t dont_care_flags();\n"); start_brace(); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_TST_%s(src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } genastore("src", curi->dmode, "dstreg", curi->size, "dst"); break; } #else (void) ssize; switch (curi->dmode) { case Dreg: case Areg: genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 2, 0); genflags(flag_mov, curi->size, "", "src", "dst"); genastore("dst", curi->dmode, "dstreg", curi->size, "dst"); break; default: /* It goes to memory, not a register */ genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 2, 0); genflags(flag_logical, curi->size, "src", "", ""); genastore("src", curi->dmode, "dstreg", curi->size, "dst"); break; } #endif } static void gen_movea(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 2, 0); start_brace(); comprintf("\t jnf_MOVEA_%s(dst, src);\n", ssize); genastore("dst", curi->dmode, "dstreg", sz_long, "dst"); #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 2, 0); start_brace(); comprintf("\tint tmps=scratchie++;\n"); switch (curi->size) { case sz_word: comprintf("\tsign_extend_16_rr(dst,src);\n"); break; case sz_long: comprintf("\tmov_l_rr(dst,src);\n"); break; default: assert(0); break; } genastore("dst", curi->dmode, "dstreg", sz_long, "dst"); #endif } static void gen_mull(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) comprintf("\t uae_u16 extra=%s;\n", gen_nextiword()); comprintf("\t int r2=(extra>>12)&7;\n" "\t int tmp=scratchie++;\n"); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); /* The two operands are in dst and r2 */ if (!noflags) { comprintf("\t if (extra & 0x0400) {\n"); /* Need full 64 bit result */ comprintf("\t int r3=(extra & 7);\n"); comprintf("\t mov_l_rr(r3,dst);\n"); /* operands now in r3 and r2 */ comprintf("\t if (extra & 0x0800) { \n"); /* signed */ comprintf("\t\t jff_MULS64(r2,r3);\n"); comprintf("\t } else { \n"); comprintf("\t\t jff_MULU64(r2,r3);\n"); comprintf("\t } \n"); /* The result is in r2/r3, with r2 holding the lower 32 bits */ comprintf("\t } else {\n"); /* Only want 32 bit result */ /* operands in dst and r2, result goes into r2 */ /* shouldn't matter whether it's signed or unsigned?!? */ comprintf("\t if (extra & 0x0800) { \n"); /* signed */ comprintf("\t jff_MULS32(r2,dst);\n"); comprintf("\t } else { \n"); comprintf("\t\t jff_MULU32(r2,dst);\n"); comprintf("\t } \n"); /* The result is in r2, with r2 holding the lower 32 bits */ comprintf("\t }\n"); } else { comprintf("\t if (extra & 0x0400) {\n"); /* Need full 64 bit result */ comprintf("\t int r3=(extra & 7);\n"); comprintf("\t mov_l_rr(r3,dst);\n"); /* operands now in r3 and r2 */ comprintf("\t if (extra & 0x0800) { \n"); /* signed */ comprintf("\t\t jnf_MULS64(r2,r3);\n"); comprintf("\t } else { \n"); comprintf("\t\t jnf_MULU64(r2,r3);\n"); comprintf("\t } \n"); /* The result is in r2/r3, with r2 holding the lower 32 bits */ comprintf("\t } else {\n"); /* Only want 32 bit result */ /* operands in dst and r2, result foes into r2 */ /* shouldn't matter whether it's signed or unsigned?!? */ comprintf("\t if (extra & 0x0800) { \n"); /* signed */ comprintf("\t jnf_MULS32(r2,dst);\n"); comprintf("\t } else { \n"); comprintf("\t\t jnf_MULU32(r2,dst);\n"); comprintf("\t } \n"); /* The result is in r2, with r2 holding the lower 32 bits */ comprintf("\t }\n"); } #else if (!noflags) { failure; return; } comprintf("\tuae_u16 extra=%s;\n", gen_nextiword()); comprintf("\tint r2=(extra>>12)&7;\n" "\tint tmp=scratchie++;\n"); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); /* The two operands are in dst and r2 */ comprintf("\tif (extra&0x0400) {\n" /* Need full 64 bit result */ "\tint r3=(extra&7);\n" "\tmov_l_rr(r3,dst);\n"); /* operands now in r3 and r2 */ comprintf("\tif (extra&0x0800) { \n" /* signed */ "\t\timul_64_32(r2,r3);\n" "\t} else { \n" "\t\tmul_64_32(r2,r3);\n" "\t} \n"); /* The result is in r2/tmp, with r2 holding the lower 32 bits */ comprintf("\t} else {\n"); /* Only want 32 bit result */ /* operands in dst and r2, result foes into r2 */ /* shouldn't matter whether it's signed or unsigned?!? */ comprintf("\timul_32_32(r2,dst);\n" "\t}\n"); #endif } static void gen_muls(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", sz_word, "src", 1, 0); genamode(curi->dmode, "dstreg", sz_word, "dst", 1, 0); start_brace(); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_MULS(dst,src);\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_MULS(dst,src);\n"); } genastore("dst", curi->dmode, "dstreg", sz_long, "dst"); #else comprintf("\tdont_care_flags();\n"); genamode(curi->smode, "srcreg", sz_word, "src", 1, 0); genamode(curi->dmode, "dstreg", sz_word, "dst", 1, 0); comprintf("\tsign_extend_16_rr(scratchie,src);\n" "\tsign_extend_16_rr(dst,dst);\n" "\timul_32_32(dst,scratchie);\n"); genflags(flag_logical, sz_long, "dst", "", ""); genastore("dst", curi->dmode, "dstreg", sz_long, "dst"); #endif } static void gen_mulu(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", sz_word, "src", 1, 0); genamode(curi->dmode, "dstreg", sz_word, "dst", 1, 0); start_brace(); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_MULU(dst,src);\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_MULU(dst,src);\n"); } genastore("dst", curi->dmode, "dstreg", sz_long, "dst"); #else comprintf("\tdont_care_flags();\n"); genamode(curi->smode, "srcreg", sz_word, "src", 1, 0); genamode(curi->dmode, "dstreg", sz_word, "dst", 1, 0); /* To do 16x16 unsigned multiplication, we actually use 32x32 signed, and zero-extend the registers first. That solves the problem of MUL needing dedicated registers on the x86 */ comprintf("\tzero_extend_16_rr(scratchie,src);\n" "\tzero_extend_16_rr(dst,dst);\n" "\timul_32_32(dst,scratchie);\n"); genflags(flag_logical, sz_long, "dst", "", ""); genastore("dst", curi->dmode, "dstreg", sz_long, "dst"); #endif } static void gen_nbcd(uae_u32 opcode, struct instr *curi, const char* ssize) { #if 0 #else (void) opcode; (void) curi; (void) ssize; failure; /* Nope! */ #endif } static void gen_neg(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf("\t int tmp=scratchie++;\n"); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_NEG_%s(tmp,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); duplicate_carry(); comprintf("\t if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { comprintf("\t jnf_NEG(tmp,src);\n"); } genastore("tmp", curi->smode, "srcreg", curi->size, "src"); #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf("\tint dst=scratchie++;\n"); comprintf("\tmov_l_ri(dst,0);\n"); genflags(flag_sub, curi->size, "", "src", "dst"); genastore("dst", curi->smode, "srcreg", curi->size, "src"); #endif } static void gen_negx(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) isaddx; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf("\t int dst=scratchie++;\n"); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t restore_inverted_carry();\n"); /* Reload the X flag into C */ comprintf("\t start_needflags();\n"); comprintf("\t jff_NEGX_%s(dst,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); duplicate_carry(); comprintf("\t if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { comprintf("\t restore_inverted_carry();\n"); /* Reload the X flag into C */ comprintf("\t jnf_NEGX(dst,src);\n"); } genastore("dst", curi->smode, "srcreg", curi->size, "src"); #else (void) ssize; isaddx; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf("\tint dst=scratchie++;\n"); comprintf("\tmov_l_ri(dst,0);\n"); genflags(flag_subx, curi->size, "", "src", "dst"); genastore("dst", curi->smode, "srcreg", curi->size, "src"); #endif } static void gen_not(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); comprintf("\t dont_care_flags();\n"); start_brace(); comprintf("\t int tmp=scratchie++;\n"); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_NOT_%s(tmp,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_NOT(tmp,src);\n", ssize); } genastore("tmp", curi->smode, "srcreg", curi->size, "src"); #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf("\tint dst=scratchie++;\n"); comprintf("\tmov_l_ri(dst,0xffffffff);\n"); genflags(flag_eor, curi->size, "", "src", "dst"); genastore("dst", curi->smode, "srcreg", curi->size, "src"); #endif } static void gen_or(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); comprintf("\t dont_care_flags();\n"); start_brace(); comprintf("\t int tmp=scratchie++;\n"); if (!noflags) { comprintf("\t jff_OR_%s(tmp, dst,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_OR(tmp, dst,src);\n"); } genastore("tmp", curi->dmode, "dstreg", curi->size, "dst"); #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); genflags(flag_or, curi->size, "", "src", "dst"); genastore("dst", curi->dmode, "dstreg", curi->size, "dst"); #endif } static void gen_orsr(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t start_needflags();\n"); comprintf("\t jff_ORSR(ARM_CCR_MAP[src & 0xF], ((src & 0x10) >> 4));\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } #else (void) curi; failure; isjump; #endif } static void gen_rol(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) mayfail; if (curi->smode == Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " return;\n" "} \n"); start_brace(); } comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "data", 1, 0); start_brace(); comprintf("\t int tmp=scratchie++;\n"); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_ROL_%s(tmp,data,cnt);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_ROL_%s(tmp,data,cnt);\n", ssize); } genastore("tmp", curi->dmode, "dstreg", curi->size, "data"); #else (void) ssize; mayfail; if (curi->smode == Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " return;\n" "} \n"); start_brace(); } comprintf("\tdont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "data", 1, 0); start_brace(); switch (curi->size) { case sz_long: comprintf("\t rol_l_rr(data,cnt);\n"); break; case sz_word: comprintf("\t rol_w_rr(data,cnt);\n"); break; case sz_byte: comprintf("\t rol_b_rr(data,cnt);\n"); break; } if (!noflags) { comprintf("\tstart_needflags();\n"); comprintf("\tif (needed_flags & FLAG_ZNV)\n"); switch (curi->size) { case sz_byte: comprintf("\t test_b_rr(data,data);\n"); break; case sz_word: comprintf("\t test_w_rr(data,data);\n"); break; case sz_long: comprintf("\t test_l_rr(data,data);\n"); break; } comprintf("\t bt_l_ri(data,0x00);\n"); /* Set C */ comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } genastore("data", curi->dmode, "dstreg", curi->size, "data"); #endif } static void gen_rolw(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf("\t int tmp = scratchie++;\n"); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_ROLW(tmp,src);\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_ROLW(tmp,src);\n"); } genastore("tmp", curi->smode, "srcreg", curi->size, "src"); #else (void) curi; failure; #endif } static void gen_ror(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) mayfail; if (curi->smode == Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " return;\n" "} \n"); start_brace(); } comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "data", 1, 0); start_brace(); comprintf("\t int tmp=scratchie++;\n"); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_ROR_%s(tmp,data,cnt);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_ROR_%s(tmp,data,cnt);\n", ssize); } genastore("tmp", curi->dmode, "dstreg", curi->size, "data"); #else (void) ssize; mayfail; if (curi->smode == Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " return;\n" "} \n"); start_brace(); } comprintf("\tdont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "data", 1, 0); start_brace(); switch (curi->size) { case sz_long: comprintf("\t ror_l_rr(data,cnt);\n"); break; case sz_word: comprintf("\t ror_w_rr(data,cnt);\n"); break; case sz_byte: comprintf("\t ror_b_rr(data,cnt);\n"); break; } if (!noflags) { comprintf("\tstart_needflags();\n"); comprintf("\tif (needed_flags & FLAG_ZNV)\n"); switch (curi->size) { case sz_byte: comprintf("\t test_b_rr(data,data);\n"); break; case sz_word: comprintf("\t test_w_rr(data,data);\n"); break; case sz_long: comprintf("\t test_l_rr(data,data);\n"); break; } switch (curi->size) { case sz_byte: comprintf("\t bt_l_ri(data,0x07);\n"); break; case sz_word: comprintf("\t bt_l_ri(data,0x0f);\n"); break; case sz_long: comprintf("\t bt_l_ri(data,0x1f);\n"); break; } comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } genastore("data", curi->dmode, "dstreg", curi->size, "data"); #endif } static void gen_rorw(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf("\t int tmp = scratchie++;\n"); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_RORW(tmp,src);\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } else { comprintf("\t jnf_RORW(tmp,src);\n"); } genastore("tmp", curi->smode, "srcreg", curi->size, "src"); #else (void) curi; failure; #endif } static void gen_roxl(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) mayfail; if (curi->smode == Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " return;\n" "} \n"); start_brace(); } isaddx; comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "data", 1, 0); start_brace(); comprintf("\t int tmp=scratchie++;\n"); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t restore_carry();\n"); /* Reload the X flag into C */ comprintf("\t start_needflags();\n"); comprintf("\t jff_ROXL_%s(tmp,data,cnt);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); duplicate_carry(); } else { comprintf("\t restore_carry();\n"); /* Reload the X flag into C */ comprintf("\t jnf_ROXL_%s(tmp,data,cnt);\n", ssize); } genastore("tmp", curi->dmode, "dstreg", curi->size, "data"); #else (void) curi; (void) ssize; failure; #endif } static void gen_roxlw(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) isaddx; comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf("\t int tmp = scratchie++;\n"); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t restore_carry();\n"); /* Reload the X flag into C */ comprintf("\t start_needflags();\n"); comprintf("\t jff_ROXLW(tmp,src);\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); duplicate_carry(); } else { comprintf("\t restore_carry();\n"); /* Reload the X flag into C */ comprintf("\t jnf_ROXLW(tmp,src);\n"); } genastore("tmp", curi->smode, "srcreg", curi->size, "src"); #else (void) curi; failure; #endif } static void gen_roxr(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) mayfail; if (curi->smode == Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " return;\n" "} \n"); start_brace(); } isaddx; comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "data", 1, 0); start_brace(); comprintf("\t int tmp=scratchie++;\n"); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t restore_carry();\n"); /* Reload the X flag into C */ comprintf("\t start_needflags();\n"); comprintf("\t jff_ROXR_%s(tmp,data,cnt);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); duplicate_carry(); } else { comprintf("\t restore_carry();\n"); /* Reload the X flag into C */ comprintf("\t jnf_ROXR_%s(tmp,data,cnt);\n", ssize); } genastore("tmp", curi->dmode, "dstreg", curi->size, "data"); #else (void) curi; failure; #endif } static void gen_roxrw(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) isaddx; comprintf("\t dont_care_flags();\n"); genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf("\t int tmp = scratchie++;\n"); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t restore_carry();\n"); /* Reload the X flag into C */ comprintf("\t start_needflags();\n"); comprintf("\t jff_ROXRW(tmp,src);\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); duplicate_carry(); } else { comprintf("\t restore_carry();\n"); /* Reload the X flag into C */ comprintf("\t jnf_ROXRW(tmp,src);\n"); } genastore("tmp", curi->smode, "srcreg", curi->size, "src"); #else (void) curi; failure; #endif } static void gen_sbcd(uae_u32 opcode, struct instr *curi, const char* ssize) { #if 0 #else (void) opcode; (void) curi; (void) ssize; failure; /* I don't think so! */ #endif } static void gen_scc(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if 0 genamode(curi->smode, "srcreg", curi->size, "src", 2, 0); start_brace(); comprintf("\t int val = scratchie++;\n"); switch (curi->cc) { case 0: /* Unconditional set */ case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: comprintf("\t make_flags_live();\n"); /* Load the flags */ comprintf("\t jnf_Scc_ri(val,%d);\n", curi->cc); break; default: assert(0); break; } genastore("val", curi->smode, "srcreg", curi->size, "src"); #else genamode(curi->smode, "srcreg", curi->size, "src", 2, 0); start_brace(); comprintf("\tint val = scratchie++;\n"); /* We set val to 0 if we really should use 255, and to 1 for real 0 */ switch (curi->cc) { case 0: /* Unconditional set */ comprintf("\tmov_l_ri(val,0);\n"); break; case 1: /* Unconditional not-set */ comprintf("\tmov_l_ri(val,1);\n"); break; case 8: failure; break; /* Work out details! FIXME */ case 9: failure; break; /* Not critical, though! */ case 2: case 3: case 4: case 5: case 6: case 7: case 10: case 11: case 12: case 13: case 14: case 15: comprintf("\tmake_flags_live();\n"); /* Load the flags */ /* All condition codes can be inverted by changing the LSB */ comprintf("\tsetcc(val,%d);\n", cond_codes[curi->cc] ^ 1); break; default: assert(0); break; } comprintf("\tsub_b_ri(val,1);\n"); genastore("val", curi->smode, "srcreg", curi->size, "src"); #endif } static void gen_sub(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); comprintf("\t dont_care_flags();\n"); start_brace(); // Use tmp register to avoid destroying upper part in .B., .W cases comprintf("\t int tmp=scratchie++;\n"); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_SUB_%s(tmp,dst,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); duplicate_carry(); comprintf( "\t if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { comprintf("\t jnf_SUB_%s(tmp,dst,src);\n", ssize); } genastore("tmp", curi->dmode, "dstreg", curi->size, "dst"); #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); genflags(flag_sub, curi->size, "", "src", "dst"); genastore("dst", curi->dmode, "dstreg", curi->size, "dst"); #endif } static void gen_suba(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", sz_long, "dst", 1, 0); start_brace(); comprintf("\t jnf_SUBA_%s(dst, src);\n", ssize); genastore("dst", curi->dmode, "dstreg", sz_long, "dst"); #else (void) ssize; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", sz_long, "dst", 1, 0); start_brace(); comprintf("\tint tmp=scratchie++;\n"); switch (curi->size) { case sz_byte: comprintf("\tsign_extend_8_rr(tmp,src);\n"); break; case sz_word: comprintf("\tsign_extend_16_rr(tmp,src);\n"); break; case sz_long: comprintf("\ttmp=src;\n"); break; default: assert(0); break; } comprintf("\tsub_l(dst,tmp);\n"); genastore("dst", curi->dmode, "dstreg", sz_long, "dst"); #endif } static void gen_subx(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; #if defined(USE_JIT2) isaddx; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); comprintf("\tint tmp=scratchie++;\n"); comprintf("\tdont_care_flags();\n"); if (!noflags) { comprintf("\t make_flags_live();\n"); comprintf("\t restore_inverted_carry();\n"); /* Reload the X flag into C */ comprintf("\t start_needflags();\n"); comprintf("\t jff_SUBX_%s(tmp,dst,src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); duplicate_carry(); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { comprintf("\t restore_inverted_carry();\n"); /* Reload the X flag into C */ comprintf("\t jnf_SUBX(tmp,dst,src);\n"); } genastore("tmp", curi->dmode, "dstreg", curi->size, "dst"); #else (void) ssize; isaddx; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 1, 0); genflags(flag_subx, curi->size, "", "src", "dst"); genastore("dst", curi->dmode, "dstreg", curi->size, "dst"); #endif } static void gen_swap(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", sz_long, "src", 1, 0); comprintf("\t dont_care_flags();\n"); start_brace(); if (!noflags) { comprintf("\t start_needflags();\n"); comprintf("\t jff_SWAP(src);\n"); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } else { comprintf("\t jnf_SWAP(src);\n"); } genastore("src", curi->smode, "srcreg", sz_long, "src"); #else genamode(curi->smode, "srcreg", sz_long, "src", 1, 0); comprintf("\tdont_care_flags();\n"); comprintf("\tarm_ROR_l_ri8(src,16);\n"); genflags(flag_logical, sz_long, "src", "", ""); genastore("src", curi->smode, "srcreg", sz_long, "src"); #endif } static void gen_tst(uae_u32 opcode, struct instr *curi, const char* ssize) { (void) opcode; (void) ssize; #if defined(USE_JIT2) genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); comprintf("\t dont_care_flags();\n"); if (!noflags) { start_brace(); comprintf("\t start_needflags();\n"); comprintf("\t jff_TST_%s(src);\n", ssize); comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } #else genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); genflags(flag_logical, curi->size, "src", "", ""); #endif } static int /* returns zero for success, non-zero for failure */ gen_opcode(unsigned long int opcode) { struct instr *curi = table68k + opcode; const char* ssize = NULL; insn_n_cycles = 2; global_failure = 0; long_opcode = 0; global_isjump = 0; global_iscjump = 0; global_isaddx = 0; global_cmov = 0; global_fpu = 0; global_mayfail = 0; hack_opcode = opcode; endstr[0] = 0; start_brace(); comprintf("\tuae_u8 scratchie=S1;\n"); switch (curi->plev) { case 0: /* not privileged */ break; case 1: /* unprivileged only on 68000 */ if (cpu_level == 0) break; if (next_cpu_level < 0) next_cpu_level = 0; /* fall through */ case 2: /* priviledged */ failure; /* Easy ones first */ break; case 3: /* privileged if size == word */ if (curi->size == sz_byte) break; failure; break; } switch (curi->size) { case sz_byte: ssize = "b"; break; case sz_word: ssize = "w"; break; case sz_long: ssize = "l"; break; default: assert(0); break; } (void) ssize; switch (curi->mnemo) { case i_AND: gen_and(opcode, curi, ssize); break; case i_OR: gen_or(opcode, curi, ssize); break; case i_EOR: gen_eor(opcode, curi, ssize); break; case i_ORSR: gen_orsr(opcode, curi, ssize); break; case i_EORSR: gen_eorsr(opcode, curi, ssize); break; case i_ANDSR: gen_andsr(opcode, curi, ssize); break; case i_SUB: gen_sub(opcode, curi, ssize); break; case i_SUBA: gen_suba(opcode, curi, ssize); break; case i_SUBX: gen_subx(opcode, curi, ssize); break; case i_SBCD: gen_sbcd(opcode, curi, ssize); break; case i_ADD: gen_add(opcode, curi, ssize); break; case i_ADDA: gen_adda(opcode, curi, ssize); break; case i_ADDX: gen_addx(opcode, curi, ssize); break; case i_ABCD: gen_abcd(opcode, curi, ssize); break; case i_NEG: gen_neg(opcode, curi, ssize); break; case i_NEGX: gen_negx(opcode, curi, ssize); break; case i_NBCD: gen_nbcd(opcode, curi, ssize); break; case i_CLR: gen_clr(opcode, curi, ssize); break; case i_NOT: gen_not(opcode, curi, ssize); break; case i_TST: gen_tst(opcode, curi, ssize); break; case i_BCHG: gen_bchg(opcode, curi, ssize); break; case i_BCLR: gen_bclr(opcode, curi, ssize); break; case i_BSET: gen_bset(opcode, curi, ssize); break; case i_BTST: gen_btst(opcode, curi, ssize); break; case i_CMPM: case i_CMP: gen_cmp(opcode, curi, ssize); break; case i_CMPA: gen_cmpa(opcode, curi, ssize); break; /* The next two are coded a little unconventional, but they are doing * weird things... */ case i_MVPRM: isjump; failure; break; case i_MVPMR: isjump; failure; break; case i_MOVE: gen_move(opcode, curi, ssize); break; case i_MOVEA: gen_movea(opcode, curi, ssize); break; case i_MVSR2: isjump; failure; break; case i_MV2SR: isjump; failure; break; case i_SWAP: gen_swap(opcode, curi, ssize); break; case i_EXG: gen_exg(opcode, curi, ssize); break; case i_EXT: gen_ext(opcode, curi, ssize); break; case i_MVMEL: genmovemel(opcode); break; case i_MVMLE: genmovemle(opcode); break; case i_TRAP: isjump; failure; break; case i_MVR2USP: isjump; failure; break; case i_MVUSP2R: isjump; failure; break; case i_RESET: isjump; failure; break; case i_NOP: break; case i_STOP: isjump; failure; break; case i_RTE: isjump; failure; break; case i_RTD: genamode(curi->smode, "srcreg", curi->size, "offs", 1, 0); /* offs is constant */ comprintf("\tarm_ADD_l_ri8(offs,4);\n"); start_brace(); comprintf("\tint newad=scratchie++;\n" "\treadlong(15,newad,scratchie);\n" "\tmov_l_mr((uintptr)®s.pc,newad);\n" "\tget_n_addr_jmp(newad,PC_P,scratchie);\n" "\tmov_l_mr((uintptr)®s.pc_oldp,PC_P);\n" "\tm68k_pc_offset=0;\n" "\tarm_ADD_l(15,offs);\n"); gen_update_next_handler(); isjump; break; case i_LINK: genamode(curi->smode, "srcreg", sz_long, "src", 1, 0); genamode(curi->dmode, "dstreg", curi->size, "offs", 1, 0); comprintf("\tsub_l_ri(15,4);\n" "\twritelong_clobber(15,src,scratchie);\n" "\tmov_l_rr(src,15);\n"); if (curi->size == sz_word) comprintf("\tsign_extend_16_rr(offs,offs);\n"); comprintf("\tarm_ADD_l(15,offs);\n"); genastore("src", curi->smode, "srcreg", sz_long, "src"); break; case i_UNLK: genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); comprintf("\tmov_l_rr(15,src);\n" "\treadlong(15,src,scratchie);\n" "\tarm_ADD_l_ri8(15,4);\n"); genastore("src", curi->smode, "srcreg", curi->size, "src"); break; case i_RTS: comprintf("\tint newad=scratchie++;\n" "\treadlong(15,newad,scratchie);\n" "\tmov_l_mr((uintptr)®s.pc,newad);\n" "\tget_n_addr_jmp(newad,PC_P,scratchie);\n" "\tmov_l_mr((uintptr)®s.pc_oldp,PC_P);\n" "\tm68k_pc_offset=0;\n" "\tlea_l_brr(15,15,4);\n"); gen_update_next_handler(); isjump; break; case i_TRAPV: isjump; failure; break; case i_RTR: isjump; failure; break; case i_JSR: isjump; genamode(curi->smode, "srcreg", curi->size, "src", 0, 0); start_brace(); comprintf( "\tuae_u32 retadd=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+m68k_pc_offset;\n"); comprintf("\tint ret=scratchie++;\n" "\tmov_l_ri(ret,retadd);\n" "\tsub_l_ri(15,4);\n" "\twritelong_clobber(15,ret,scratchie);\n"); comprintf("\tmov_l_mr((uintptr)®s.pc,srca);\n" "\tget_n_addr_jmp(srca,PC_P,scratchie);\n" "\tmov_l_mr((uintptr)®s.pc_oldp,PC_P);\n" "\tm68k_pc_offset=0;\n"); gen_update_next_handler(); break; case i_JMP: isjump; genamode(curi->smode, "srcreg", curi->size, "src", 0, 0); comprintf("\tmov_l_mr((uintptr)®s.pc,srca);\n" "\tget_n_addr_jmp(srca,PC_P,scratchie);\n" "\tmov_l_mr((uintptr)®s.pc_oldp,PC_P);\n" "\tm68k_pc_offset=0;\n"); gen_update_next_handler(); break; case i_BSR: is_const_jump; genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf( "\tuae_u32 retadd=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+m68k_pc_offset;\n"); comprintf("\tint ret=scratchie++;\n" "\tmov_l_ri(ret,retadd);\n" "\tsub_l_ri(15,4);\n" "\twritelong_clobber(15,ret,scratchie);\n"); comprintf("\tarm_ADD_l_ri(src,m68k_pc_offset_thisinst+2);\n"); comprintf("\tm68k_pc_offset=0;\n"); comprintf("\tarm_ADD_l(PC_P,src);\n"); comprintf("\tcomp_pc_p=(uae_u8*)get_const(PC_P);\n"); break; case i_Bcc: comprintf("\tuae_u32 v,v1,v2;\n"); genamode(curi->smode, "srcreg", curi->size, "src", 1, 0); /* That source is an immediate, so we can clobber it with abandon */ switch (curi->size) { case sz_byte: comprintf("\tsign_extend_8_rr(src,src);\n"); break; case sz_word: comprintf("\tsign_extend_16_rr(src,src);\n"); break; case sz_long: break; } comprintf( "\tsub_l_ri(src,m68k_pc_offset-m68k_pc_offset_thisinst-2);\n"); /* Leave the following as "add" --- it will allow it to be optimized away due to src being a constant ;-) */ comprintf("\tarm_ADD_l_ri(src,(uintptr)comp_pc_p);\n"); comprintf("\tmov_l_ri(PC_P,(uintptr)comp_pc_p);\n"); /* Now they are both constant. Might as well fold in m68k_pc_offset */ comprintf("\tarm_ADD_l_ri(src,m68k_pc_offset);\n"); comprintf("\tarm_ADD_l_ri(PC_P,m68k_pc_offset);\n"); comprintf("\tm68k_pc_offset=0;\n"); if (curi->cc >= 2) { comprintf("\tv1=get_const(PC_P);\n" "\tv2=get_const(src);\n" "\tregister_branch(v1,v2,%d);\n", cond_codes[curi->cc]); comprintf("\tmake_flags_live();\n"); /* Load the flags */ isjump; } else { is_const_jump; } switch (curi->cc) { case 0: /* Unconditional jump */ comprintf("\tmov_l_rr(PC_P,src);\n"); comprintf("\tcomp_pc_p=(uae_u8*)get_const(PC_P);\n"); break; case 1: break; /* This is silly! */ case 8: failure; break; /* Work out details! FIXME */ case 9: failure; break; /* Not critical, though! */ case 2: case 3: case 4: case 5: case 6: case 7: case 10: case 11: case 12: case 13: case 14: case 15: break; default: assert(0); break; } break; case i_LEA: genamode(curi->smode, "srcreg", curi->size, "src", 0, 0); genamode(curi->dmode, "dstreg", curi->size, "dst", 2, 0); genastore("srca", curi->dmode, "dstreg", curi->size, "dst"); break; case i_PEA: if (table68k[opcode].smode == Areg || table68k[opcode].smode == Aind || table68k[opcode].smode == Aipi || table68k[opcode].smode == Apdi || table68k[opcode].smode == Ad16 || table68k[opcode].smode == Ad8r) comprintf("if (srcreg==7) dodgy=1;\n"); genamode(curi->smode, "srcreg", curi->size, "src", 0, 0); genamode(Apdi, "7", sz_long, "dst", 2, 0); genastore("srca", Apdi, "7", sz_long, "dst"); break; case i_DBcc: gen_dbcc(opcode, curi, ssize); break; case i_Scc: gen_scc(opcode, curi, ssize); break; case i_DIVU: isjump; failure; break; case i_DIVS: isjump; failure; break; case i_MULU: gen_mulu(opcode, curi, ssize); break; case i_MULS: gen_muls(opcode, curi, ssize); break; case i_CHK: isjump; failure; break; case i_CHK2: isjump; failure; break; case i_ASR: gen_asr(opcode, curi, ssize); break; case i_ASL: gen_asl(opcode, curi, ssize); break; case i_LSR: gen_lsr(opcode, curi, ssize); break; case i_LSL: gen_lsl(opcode, curi, ssize); break; case i_ROL: gen_rol(opcode, curi, ssize); break; case i_ROR: gen_ror(opcode, curi, ssize); break; case i_ROXL: gen_roxl(opcode, curi, ssize); break; case i_ROXR: gen_roxr(opcode, curi, ssize); break; case i_ASRW: gen_asrw(opcode, curi, ssize); break; case i_ASLW: gen_aslw(opcode, curi, ssize); break; case i_LSRW: gen_lsrw(opcode, curi, ssize); break; case i_LSLW: gen_lslw(opcode, curi, ssize); break; case i_ROLW: gen_rolw(opcode, curi, ssize); break; case i_RORW: gen_rorw(opcode, curi, ssize); break; case i_ROXLW: gen_roxlw(opcode, curi, ssize); break; case i_ROXRW: gen_roxrw(opcode, curi, ssize); break; case i_MOVEC2: isjump; failure; break; case i_MOVE2C: isjump; failure; break; case i_CAS: failure; break; case i_CAS2: failure; break; case i_MOVES: /* ignore DFC and SFC because we have no MMU */ isjump; failure; break; case i_BKPT: /* only needed for hardware emulators */ isjump; failure; break; case i_CALLM: /* not present in 68030 */ isjump; failure; break; case i_RTM: /* not present in 68030 */ isjump; failure; break; case i_TRAPcc: isjump; failure; break; case i_DIVL: isjump; failure; break; case i_MULL: gen_mull(opcode, curi, ssize); break; case i_BFTST: case i_BFEXTU: case i_BFCHG: case i_BFEXTS: case i_BFCLR: case i_BFFFO: case i_BFSET: case i_BFINS: failure; break; case i_PACK: failure; break; case i_UNPK: failure; break; case i_TAS: failure; break; case i_FPP: uses_fpu; #ifdef USE_JIT_FPU mayfail; comprintf("\tuae_u16 extra=%s;\n",gen_nextiword()); swap_opcode(); comprintf("\tcomp_fpp_opp(opcode,extra);\n"); #else failure; #endif break; case i_FBcc: uses_fpu; #ifdef USE_JIT_FPU isjump; uses_cmov; mayfail; swap_opcode(); comprintf("\tcomp_fbcc_opp(opcode);\n"); #else isjump; failure; #endif break; case i_FDBcc: uses_fpu; isjump; failure; break; case i_FScc: uses_fpu; #ifdef USE_JIT_FPU mayfail; uses_cmov; comprintf("\tuae_u16 extra=%s;\n",gen_nextiword()); swap_opcode(); comprintf("\tcomp_fscc_opp(opcode,extra);\n"); #else failure; #endif break; case i_FTRAPcc: uses_fpu; isjump; failure; break; case i_FSAVE: uses_fpu; failure; break; case i_FRESTORE: uses_fpu; failure; break; case i_CINVL: case i_CINVP: case i_CINVA: isjump; /* Not really, but it's probably a good idea to stop translating at this point */ failure; comprintf("\tflush_icache();\n"); /* Differentiate a bit more? */ break; case i_CPUSHL: case i_CPUSHP: case i_CPUSHA: isjump; /* Not really, but it's probably a good idea to stop translating at this point */ failure; break; case i_MOVE16: gen_move16(opcode, curi); break; case i_EMULOP_RETURN: isjump; failure; break; case i_EMULOP: failure; break; case i_NATFEAT_ID: case i_NATFEAT_CALL: failure; break; case i_MMUOP: isjump; failure; break; default: assert(0); break; } comprintf("%s", endstr); finish_braces(); sync_m68k_pc(); if (global_mayfail) comprintf("\tif (failure) m68k_pc_offset=m68k_pc_offset_thisinst;\n"); return global_failure; } static void generate_includes(FILE * f) { fprintf(f, "#include \"sysdeps.h\"\n"); fprintf(f, "#include \"m68k.h\"\n"); fprintf(f, "#include \"memory-uae.h\"\n"); fprintf(f, "#include \"readcpu.h\"\n"); fprintf(f, "#include \"newcpu.h\"\n"); fprintf(f, "#include \"comptbl.h\"\n"); fprintf(f, "#include \"debug.h\"\n"); } static int postfix; static char *decodeEA (amodes mode, wordsizes size) { static char buffer[80]; buffer[0] = 0; switch (mode){ case Dreg: strcpy (buffer,"Dn"); break; case Areg: strcpy (buffer,"An"); break; case Aind: strcpy (buffer,"(An)"); break; case Aipi: strcpy (buffer,"(An)+"); break; case Apdi: strcpy (buffer,"-(An)"); break; case Ad16: strcpy (buffer,"(d16,An)"); break; case Ad8r: strcpy (buffer,"(d8,An,Xn)"); break; case PC16: strcpy (buffer,"(d16,PC)"); break; case PC8r: strcpy (buffer,"(d8,PC,Xn)"); break; case absw: strcpy (buffer,"(xxx).W"); break; case absl: strcpy (buffer,"(xxx).L"); break; case imm: switch (size){ case sz_byte: strcpy (buffer,"#.B"); break; case sz_word: strcpy (buffer,"#.W"); break; case sz_long: strcpy (buffer,"#.L"); break; default: break; } break; case imm0: strcpy (buffer,"#.B"); break; case imm1: strcpy (buffer,"#.W"); break; case imm2: strcpy (buffer,"#.L"); break; case immi: strcpy (buffer,"#"); break; default: break; } return buffer; } static char *outopcode (const char *name, int opcode) { static char out[100]; struct instr *ins; ins = &table68k[opcode]; strcpy (out, name); if (ins->smode == immi) strcat (out, "Q"); if (ins->size == sz_byte) strcat (out,".B"); if (ins->size == sz_word) strcat (out,".W"); if (ins->size == sz_long) strcat (out,".L"); strcat (out," "); if (ins->suse) strcat (out, decodeEA (ins->smode, ins->size)); if (ins->duse) { if (ins->suse) strcat (out,","); strcat (out, decodeEA (ins->dmode, ins->size)); } return out; } static void generate_one_opcode(int rp, int noflags) { int i; uae_u16 smsk, dmsk; int opcode = opcode_map[rp]; int aborted = 0; int have_srcreg = 0; int have_dstreg = 0; const char *name; if (table68k[opcode].mnemo == i_ILLG || table68k[opcode].clev > cpu_level) return; for (i = 0; lookuptab[i].name[0]; i++) { if (table68k[opcode].mnemo == lookuptab[i].mnemo) break; } if (table68k[opcode].handler != -1) return; switch (table68k[opcode].stype) { case 0: smsk = 7; break; case 1: smsk = 255; break; case 2: smsk = 15; break; case 3: smsk = 7; break; case 4: smsk = 7; break; case 5: smsk = 63; break; case 6: smsk = 255; break; case 7: smsk = 3; break; default: assert(0); break; } dmsk = 7; next_cpu_level = -1; if (table68k[opcode].suse && table68k[opcode].smode != imm && table68k[opcode].smode != imm0 && table68k[opcode].smode != imm1 && table68k[opcode].smode != imm2 && table68k[opcode].smode != absw && table68k[opcode].smode != absl && table68k[opcode].smode != PC8r && table68k[opcode].smode != PC16) { have_srcreg = 1; if (table68k[opcode].spos == -1) { if (((int) table68k[opcode].sreg) >= 128) comprintf("\tuae_s32 srcreg = (uae_s32)(uae_s8)%d;\n", (int) table68k[opcode].sreg); else comprintf("\tuae_s32 srcreg = %d;\n", (int) table68k[opcode].sreg); } else { char source[100]; int pos = table68k[opcode].spos; comprintf( "#if defined(HAVE_GET_WORD_UNSWAPPED) && !defined(FULLMMU)\n"); if (pos < 8 && (smsk >> (8 - pos)) != 0) sprintf(source, "(((opcode >> %d) | (opcode << %d)) & %d)", pos ^ 8, 8 - pos, dmsk); else if (pos != 8) sprintf(source, "((opcode >> %d) & %d)", pos ^ 8, smsk); else sprintf(source, "(opcode & %d)", smsk); if (table68k[opcode].stype == 3) comprintf("\tuae_u32 srcreg = imm8_table[%s];\n", source); else if (table68k[opcode].stype == 1) comprintf("\tuae_u32 srcreg = (uae_s32)(uae_s8)%s;\n", source); else comprintf("\tuae_u32 srcreg = %s;\n", source); comprintf("#else\n"); if (pos) sprintf(source, "((opcode >> %d) & %d)", pos, smsk); else sprintf(source, "(opcode & %d)", smsk); if (table68k[opcode].stype == 3) comprintf("\tuae_s32 srcreg = imm8_table[%s];\n", source); else if (table68k[opcode].stype == 1) comprintf("\tuae_s32 srcreg = (uae_s32)(uae_s8)%s;\n", source); else comprintf("\tuae_s32 srcreg = %s;\n", source); comprintf("#endif\n"); } } if (table68k[opcode].duse /* Yes, the dmode can be imm, in case of LINK or DBcc */ && table68k[opcode].dmode != imm && table68k[opcode].dmode != imm0 && table68k[opcode].dmode != imm1 && table68k[opcode].dmode != imm2 && table68k[opcode].dmode != absw && table68k[opcode].dmode != absl) { have_dstreg = 1; if (table68k[opcode].dpos == -1) { if (((int) table68k[opcode].dreg) >= 128) comprintf("\tuae_s32 dstreg = (uae_s32)(uae_s8)%d;\n", (int) table68k[opcode].dreg); else comprintf("\tuae_s32 dstreg = %d;\n", (int) table68k[opcode].dreg); } else { int pos = table68k[opcode].dpos; comprintf( "#if defined(HAVE_GET_WORD_UNSWAPPED) && !defined(FULLMMU)\n"); if (pos < 8 && (dmsk >> (8 - pos)) != 0) comprintf( "\tuae_u32 dstreg = ((opcode >> %d) | (opcode << %d)) & %d;\n", pos ^ 8, 8 - pos, dmsk); else if (pos != 8) comprintf("\tuae_u32 dstreg = (opcode >> %d) & %d;\n", pos ^ 8, dmsk); else comprintf("\tuae_u32 dstreg = opcode & %d;\n", dmsk); comprintf("#else\n"); if (pos) comprintf("\tuae_u32 dstreg = (opcode >> %d) & %d;\n", pos, dmsk); else comprintf("\tuae_u32 dstreg = opcode & %d;\n", dmsk); comprintf("#endif\n"); } } if (have_srcreg && have_dstreg && (table68k[opcode].dmode == Areg || table68k[opcode].dmode == Aind || table68k[opcode].dmode == Aipi || table68k[opcode].dmode == Apdi || table68k[opcode].dmode == Ad16 || table68k[opcode].dmode == Ad8r) && (table68k[opcode].smode == Areg || table68k[opcode].smode == Aind || table68k[opcode].smode == Aipi || table68k[opcode].smode == Apdi || table68k[opcode].smode == Ad16 || table68k[opcode].smode == Ad8r)) { comprintf("\tuae_u32 dodgy=(srcreg==(uae_s32)dstreg);\n"); } else { comprintf("\tuae_u32 dodgy=0;\n"); } comprintf("\tuae_u32 m68k_pc_offset_thisinst=m68k_pc_offset;\n"); comprintf("\tm68k_pc_offset+=2;\n"); aborted = gen_opcode(opcode); { int flags = 0; if (global_isjump) flags |= 1; if (long_opcode) flags |= 2; if (global_cmov) flags |= 4; if (global_isaddx) flags |= 8; if (global_iscjump) flags |= 16; if (global_fpu) flags |= 32; comprintf("}\n"); name = lookuptab[i].name; if (aborted) { fprintf(stblfile, "{ NULL, 0x%08x, %d }, /* %s */\n", opcode, flags, name); com_discard(); } else { const char *tbl = noflags ? "nf" : "ff"; fprintf(stblfile, "{ op_%x_%d_comp_%s, %d, 0x%08x }, /* %s */\n", opcode, postfix, tbl, opcode, flags, name); fprintf(headerfile, "extern compop_func op_%x_%d_comp_%s;\n", opcode, postfix, tbl); printf ("/* %s */\n", outopcode (name, opcode)); printf( "void REGPARAM2 op_%x_%d_comp_%s(uae_u32 opcode) /* %s */\n{\n", opcode, postfix, tbl, name); com_flush(); } } opcode_next_clev[rp] = next_cpu_level; opcode_last_postfix[rp] = postfix; } static void generate_func(int noflags) { int i, j, rp; const char *tbl = noflags ? "nf" : "ff"; using_prefetch = 0; using_exception_3 = 0; for (i = 0; i < 1; i++) /* We only do one level! */ { cpu_level = 4 - i; postfix = i; fprintf(stblfile, "const struct comptbl op_smalltbl_%d_comp_%s[] = {\n", postfix, tbl); /* sam: this is for people with low memory (eg. me :)) */ printf("\n" "#if !defined(PART_1) && !defined(PART_2) && " "!defined(PART_3) && !defined(PART_4) && " "!defined(PART_5) && !defined(PART_6) && " "!defined(PART_7) && !defined(PART_8)" "\n" "#define PART_1 1\n" "#define PART_2 1\n" "#define PART_3 1\n" "#define PART_4 1\n" "#define PART_5 1\n" "#define PART_6 1\n" "#define PART_7 1\n" "#define PART_8 1\n" "#endif\n\n"); rp = 0; for (j = 1; j <= 8; ++j) { int k = (j * nr_cpuop_funcs) / 8; printf("#ifdef PART_%d\n", j); for (; rp < k; rp++) generate_one_opcode(rp, noflags); printf("#endif\n\n"); } fprintf(stblfile, "{ 0, 65536, 0 }};\n"); } } #if (defined(OS_cygwin) || defined(OS_mingw)) && defined(EXTENDED_SIGSEGV) void cygwin_mingw_abort() { #undef abort abort(); } #endif int main(void) { init_table68k(); opcode_map = (int *) malloc(sizeof(int) * nr_cpuop_funcs); opcode_last_postfix = (int *) malloc(sizeof(int) * nr_cpuop_funcs); opcode_next_clev = (int *) malloc(sizeof(int) * nr_cpuop_funcs); counts = (unsigned long *) malloc(65536 * sizeof(unsigned long)); read_counts(); /* It would be a lot nicer to put all in one file (we'd also get rid of * cputbl.h that way), but cpuopti can't cope. That could be fixed, but * I don't dare to touch the 68k version. */ headerfile = fopen("comptbl.h", "wb"); fprintf (headerfile, "" "extern const struct comptbl op_smalltbl_0_comp_nf[];\n" "extern const struct comptbl op_smalltbl_0_comp_ff[];\n" ""); stblfile = fopen("compstbl.cpp", "wb"); if (freopen("compemu.cpp", "wb", stdout) == NULL) { assert(0); } generate_includes(stdout); generate_includes(stblfile); printf("#include \"compiler/compemu.h\"\n"); noflags = 0; generate_func(noflags); free(opcode_map); free(opcode_last_postfix); free(opcode_next_clev); free(counts); opcode_map = (int *) malloc(sizeof(int) * nr_cpuop_funcs); opcode_last_postfix = (int *) malloc(sizeof(int) * nr_cpuop_funcs); opcode_next_clev = (int *) malloc(sizeof(int) * nr_cpuop_funcs); counts = (unsigned long *) malloc(65536 * sizeof(unsigned long)); read_counts(); noflags = 1; generate_func(noflags); free(opcode_map); free(opcode_last_postfix); free(opcode_next_clev); free(counts); free(table68k); fclose(stblfile); fclose(headerfile); return 0; } aranym-1.1.0/src/uae_cpu/compiler/gencomp.c0000664000175000017500000023713713454637622017035 0ustar joyjoy/* * compiler/gencomp.c - MC680x0 compilation generator * * Based on work Copyright 1995, 1996 Bernd Schmidt * Changes for UAE-JIT Copyright 2000 Bernd Meyer * * Adaptation for ARAnyM/ARM, copyright 2001-2014 * Milan Jurik, Jens Heitmann * * Adaptation for Basilisk II and improvements, copyright 2000-2005 * Gwenole Beauchesne * * Basilisk II (C) 1997-2005 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #define CC_FOR_BUILD 1 #include "sysconfig.h" #include "sysdeps.h" #include "readcpu.h" #undef NDEBUG #include #include #include #include #include #include #undef abort #ifdef UAE /* #define DISABLE_I_OR_AND_EOR #define DISABLE_I_SUB #define DISABLE_I_SUBA #define DISABLE_I_SUBX #define DISABLE_I_ADD #define DISABLE_I_ADDA #define DISABLE_I_ADDX #define DISABLE_I_NEG #define DISABLE_I_NEGX #define DISABLE_I_CLR #define DISABLE_I_NOT #define DISABLE_I_TST #define DISABLE_I_BCHG_BCLR_BSET_BTST #define DISABLE_I_CMPM_CMP #define DISABLE_I_CMPA #define DISABLE_I_MOVE #define DISABLE_I_MOVEA #define DISABLE_I_SWAP #define DISABLE_I_EXG #define DISABLE_I_EXT #define DISABLE_I_MVEL #define DISABLE_I_MVMLE #define DISABLE_I_RTD #define DISABLE_I_LINK #define DISABLE_I_UNLK #define DISABLE_I_RTS #define DISABLE_I_JSR #define DISABLE_I_JMP #define DISABLE_I_BSR #define DISABLE_I_BCC #define DISABLE_I_LEA #define DISABLE_I_PEA #define DISABLE_I_DBCC #define DISABLE_I_SCC #define DISABLE_I_MULU #define DISABLE_I_MULS #define DISABLE_I_ASR #define DISABLE_I_ASL #define DISABLE_I_LSR #define DISABLE_I_LSL #define DISABLE_I_ROL #define DISABLE_I_ROR #define DISABLE_I_MULL #define DISABLE_I_FPP #define DISABLE_I_FBCC #define DISABLE_I_FSCC #define DISABLE_I_MOVE16 */ #endif /* UAE */ #ifdef UAE #define JIT_PATH "jit/" #ifdef FSUAE #define GEN_PATH "gen/" #else #define GEN_PATH "jit/" #endif #define RETURN "return 0;" #define RETTYPE "uae_u32" #define NEXT_CPU_LEVEL 5 #else #define JIT_PATH "compiler/" #define GEN_PATH "" #define RETURN "return;" #define RETTYPE "void" #define NEXT_CPU_LEVEL 4 #endif #define BOOL_TYPE "int" #define failure global_failure=1 #define FAILURE global_failure=1 #define isjump global_isjump=1 #define is_const_jump global_iscjump=1 #define isaddx global_isaddx=1 #define uses_cmov global_cmov=1 #define mayfail global_mayfail=1 #define uses_fpu global_fpu=1 int hack_opcode; static int global_failure; static int global_isjump; static int global_iscjump; static int global_isaddx; static int global_cmov; static int long_opcode; static int global_mayfail; static int global_fpu; static char endstr[1000]; static char lines[100000]; static int comp_index=0; #include "flags_x86.h" #ifndef __attribute__ # ifndef __GNUC__ # define __attribute__(x) # endif #endif static int cond_codes[]={-1,-1, NATIVE_CC_HI,NATIVE_CC_LS, NATIVE_CC_CC,NATIVE_CC_CS, NATIVE_CC_NE,NATIVE_CC_EQ, -1,-1, NATIVE_CC_PL,NATIVE_CC_MI, NATIVE_CC_GE,NATIVE_CC_LT, NATIVE_CC_GT,NATIVE_CC_LE }; __attribute__((format(printf, 1, 2))) static void comprintf(const char *format, ...) { va_list args; va_start(args, format); comp_index += vsprintf(lines + comp_index, format, args); va_end(args); } static void com_discard(void) { comp_index = 0; } static void com_flush(void) { int i; for (i = 0; i < comp_index; i++) putchar(lines[i]); com_discard(); } static FILE *headerfile; static FILE *stblfile; static int using_prefetch; static int using_exception_3; static int cpu_level; static int noflags; /* For the current opcode, the next lower level that will have different code. * Initialized to -1 for each opcode. If it remains unchanged, indicates we * are done with that opcode. */ static int next_cpu_level; static int *opcode_map; static int *opcode_next_clev; static int *opcode_last_postfix; static unsigned long *counts; static void read_counts(void) { FILE *file; unsigned long opcode, count, total; char name[20]; int nr = 0; memset (counts, 0, 65536 * sizeof *counts); file = fopen ("frequent.68k", "r"); if (file) { if (fscanf (file, "Total: %lu\n", &total) != 1) { assert(0); } while (fscanf (file, "%lx: %lu %s\n", &opcode, &count, name) == 3) { opcode_next_clev[nr] = NEXT_CPU_LEVEL; opcode_last_postfix[nr] = -1; opcode_map[nr++] = opcode; counts[opcode] = count; } fclose (file); } if (nr == nr_cpuop_funcs) return; for (opcode = 0; opcode < 0x10000; opcode++) { if (table68k[opcode].handler == -1 && table68k[opcode].mnemo != i_ILLG && counts[opcode] == 0) { opcode_next_clev[nr] = NEXT_CPU_LEVEL; opcode_last_postfix[nr] = -1; opcode_map[nr++] = opcode; counts[opcode] = count; } } assert (nr == nr_cpuop_funcs); } static int n_braces = 0; static int insn_n_cycles; static void start_brace (void) { n_braces++; comprintf ("{"); } static void close_brace (void) { assert (n_braces > 0); n_braces--; comprintf ("}"); } static void finish_braces (void) { while (n_braces > 0) close_brace (); } static inline void gen_update_next_handler(void) { return; /* Can anything clever be done here? */ } static void gen_writebyte(const char *address, const char *source) { comprintf("\twritebyte(%s, %s, scratchie);\n", address, source); } static void gen_writeword(const char *address, const char *source) { comprintf("\twriteword(%s, %s, scratchie);\n", address, source); } static void gen_writelong(const char *address, const char *source) { comprintf("\twritelong(%s, %s, scratchie);\n", address, source); } static void gen_readbyte(const char *address, const char* dest) { comprintf("\treadbyte(%s, %s, scratchie);\n", address, dest); } static void gen_readword(const char *address, const char *dest) { comprintf("\treadword(%s,%s,scratchie);\n", address, dest); } static void gen_readlong(const char *address, const char *dest) { comprintf("\treadlong(%s, %s, scratchie);\n", address, dest); } static const char * gen_nextilong (void) { static char buffer[80]; sprintf (buffer, "comp_get_ilong((m68k_pc_offset+=4)-4)"); insn_n_cycles += 4; long_opcode=1; return buffer; } static const char * gen_nextiword (void) { static char buffer[80]; sprintf (buffer, "comp_get_iword((m68k_pc_offset+=2)-2)"); insn_n_cycles+=2; long_opcode=1; return buffer; } static const char * gen_nextibyte (void) { static char buffer[80]; sprintf (buffer, "comp_get_ibyte((m68k_pc_offset+=2)-2)"); insn_n_cycles += 2; long_opcode=1; return buffer; } static void swap_opcode (void) { #ifdef UAE /* no-op */ #else comprintf("#ifdef USE_JIT_FPU\n"); comprintf("#if defined(HAVE_GET_WORD_UNSWAPPED) && !defined(FULLMMU)\n"); comprintf("\topcode = do_byteswap_16(opcode);\n"); comprintf("#endif\n"); comprintf("#endif\n"); #endif } static void sync_m68k_pc (void) { comprintf("\t if (m68k_pc_offset > SYNC_PC_OFFSET) sync_m68k_pc();\n"); } /* getv == 1: fetch data; getv != 0: check for odd address. If movem != 0, * the calling routine handles Apdi and Aipi modes. * gb-- movem == 2 means the same thing but for a MOVE16 instruction */ static void genamode(amodes mode, const char *reg, wordsizes size, const char *name, int getv, int movem) { start_brace(); switch (mode) { case Dreg: /* Do we need to check dodgy here? */ assert (!movem); if (getv == 1 || getv == 2) { /* We generate the variable even for getv==2, so we can use it as a destination for MOVE */ comprintf("\tint %s = %s;\n", name, reg); } return; case Areg: assert (!movem); if (getv == 1 || getv == 2) { /* see above */ comprintf("\tint %s = dodgy ? scratchie++ : %s + 8;\n", name, reg); if (getv == 1) { comprintf("\tif (dodgy) \n"); comprintf("\t\tmov_l_rr(%s, %s + 8);\n", name, reg); } } return; case Aind: comprintf("\tint %sa = dodgy ? scratchie++ : %s + 8;\n", name, reg); comprintf("\tif (dodgy)\n"); comprintf("\t\tmov_l_rr(%sa, %s + 8);\n", name, reg); break; case Aipi: comprintf("\tint %sa = scratchie++;\n", name); comprintf("\tmov_l_rr(%sa, %s + 8);\n", name, reg); break; case Apdi: switch (size) { case sz_byte: if (movem) { comprintf("\tint %sa = dodgy ? scratchie++ : %s + 8;\n", name, reg); comprintf("\tif (dodgy)\n"); comprintf("\t\tmov_l_rr(%sa, 8 + %s);\n", name, reg); } else { start_brace(); comprintf("\tint %sa = dodgy ? scratchie++ : %s + 8;\n", name, reg); comprintf("\tlea_l_brr(%s + 8, %s + 8, (uae_s32)-areg_byteinc[%s]);\n", reg, reg, reg); comprintf("\tif (dodgy)\n"); comprintf("\t\tmov_l_rr(%sa, 8 + %s);\n", name, reg); } break; case sz_word: if (movem) { comprintf("\tint %sa=dodgy?scratchie++:%s+8;\n", name, reg); comprintf("\tif (dodgy) \n"); comprintf("\tmov_l_rr(%sa,8+%s);\n", name, reg); } else { start_brace(); comprintf("\tint %sa = dodgy ? scratchie++ : %s + 8;\n", name, reg); comprintf("\tlea_l_brr(%s + 8, %s + 8, -2);\n", reg, reg); comprintf("\tif (dodgy)\n"); comprintf("\t\tmov_l_rr(%sa, 8 + %s);\n", name, reg); } break; case sz_long: if (movem) { comprintf("\tint %sa = dodgy ? scratchie++ : %s + 8;\n", name, reg); comprintf("\tif (dodgy)\n"); comprintf("\t\tmov_l_rr(%sa, 8 + %s);\n", name, reg); } else { start_brace(); comprintf("\tint %sa = dodgy ? scratchie++ : %s + 8;\n", name, reg); comprintf("\tlea_l_brr(%s + 8, %s + 8, -4);\n", reg, reg); comprintf("\tif (dodgy)\n"); comprintf("\t\tmov_l_rr(%sa, 8 + %s);\n", name, reg); } break; default: assert(0); break; } break; case Ad16: comprintf("\tint %sa = scratchie++;\n", name); comprintf("\tmov_l_rr(%sa, 8 + %s);\n", name, reg); comprintf("\tlea_l_brr(%sa, %sa, (uae_s32)(uae_s16)%s);\n", name, name, gen_nextiword()); break; case Ad8r: comprintf("\tint %sa = scratchie++;\n", name); comprintf("\tcalc_disp_ea_020(%s + 8, %s, %sa, scratchie);\n", reg, gen_nextiword(), name); break; case PC16: comprintf("\tint %sa = scratchie++;\n", name); comprintf("\tuae_u32 address = start_pc + ((char *)comp_pc_p - (char *)start_pc_p) + m68k_pc_offset;\n"); comprintf("\tuae_s32 PC16off = (uae_s32)(uae_s16)%s;\n", gen_nextiword()); comprintf("\tmov_l_ri(%sa, address + PC16off);\n", name); break; case PC8r: comprintf("\tint pctmp = scratchie++;\n"); comprintf("\tint %sa = scratchie++;\n", name); comprintf("\tuae_u32 address = start_pc + ((char *)comp_pc_p - (char *)start_pc_p) + m68k_pc_offset;\n"); start_brace(); comprintf("\tmov_l_ri(pctmp,address);\n"); comprintf("\tcalc_disp_ea_020(pctmp, %s, %sa, scratchie);\n", gen_nextiword(), name); break; case absw: comprintf("\tint %sa = scratchie++;\n", name); comprintf("\tmov_l_ri(%sa, (uae_s32)(uae_s16)%s);\n", name, gen_nextiword()); break; case absl: comprintf("\tint %sa = scratchie++;\n", name); comprintf("\tmov_l_ri(%sa, %s); /* absl */\n", name, gen_nextilong()); break; case imm: assert (getv == 1); switch (size) { case sz_byte: comprintf("\tint %s = scratchie++;\n", name); comprintf("\tmov_l_ri(%s, (uae_s32)(uae_s8)%s);\n", name, gen_nextibyte()); break; case sz_word: comprintf("\tint %s = scratchie++;\n", name); comprintf("\tmov_l_ri(%s, (uae_s32)(uae_s16)%s);\n", name, gen_nextiword()); break; case sz_long: comprintf("\tint %s = scratchie++;\n", name); comprintf("\tmov_l_ri(%s, %s);\n", name, gen_nextilong()); break; default: assert(0); break; } return; case imm0: assert (getv == 1); comprintf("\tint %s = scratchie++;\n", name); comprintf("\tmov_l_ri(%s, (uae_s32)(uae_s8)%s);\n", name, gen_nextibyte()); return; case imm1: assert (getv == 1); comprintf("\tint %s = scratchie++;\n", name); comprintf("\tmov_l_ri(%s, (uae_s32)(uae_s16)%s);\n", name, gen_nextiword()); return; case imm2: assert (getv == 1); comprintf("\tint %s = scratchie++;\n", name); comprintf("\tmov_l_ri(%s, %s);\n", name, gen_nextilong()); return; case immi: assert (getv == 1); comprintf("\tint %s = scratchie++;\n", name); comprintf("\tmov_l_ri(%s, %s);\n", name, reg); return; default: assert(0); break; } /* We get here for all non-reg non-immediate addressing modes to * actually fetch the value. */ if (getv == 1) { char astring[80]; sprintf(astring, "%sa", name); switch (size) { case sz_byte: insn_n_cycles += 2; break; case sz_word: insn_n_cycles += 2; break; case sz_long: insn_n_cycles += 4; break; default: assert(0); break; } start_brace(); comprintf("\tint %s = scratchie++;\n", name); switch (size) { case sz_byte: gen_readbyte(astring, name); break; case sz_word: gen_readword(astring, name); break; case sz_long: gen_readlong(astring, name); break; default: assert(0); break; } } /* We now might have to fix up the register for pre-dec or post-inc * addressing modes. */ if (!movem) { switch (mode) { case Aipi: switch (size) { case sz_byte: comprintf("\tlea_l_brr(%s + 8,%s + 8, areg_byteinc[%s]);\n", reg, reg, reg); break; case sz_word: comprintf("\tlea_l_brr(%s + 8, %s + 8, 2);\n", reg, reg); break; case sz_long: comprintf("\tlea_l_brr(%s + 8, %s + 8, 4);\n", reg, reg); break; default: assert(0); break; } break; case Apdi: break; default: break; } } } static void genastore(const char *from, amodes mode, const char *reg, wordsizes size, const char *to) { switch (mode) { case Dreg: switch (size) { case sz_byte: comprintf("\tif(%s != %s)\n", reg, from); comprintf("\t\tmov_b_rr(%s, %s);\n", reg, from); break; case sz_word: comprintf("\tif(%s != %s)\n", reg, from); comprintf("\t\tmov_w_rr(%s, %s);\n", reg, from); break; case sz_long: comprintf("\tif(%s != %s)\n", reg, from); comprintf("\t\tmov_l_rr(%s, %s);\n", reg, from); break; default: assert(0); break; } break; case Areg: switch (size) { case sz_word: comprintf("\tif(%s + 8 != %s)\n", reg, from); comprintf("\t\tmov_w_rr(%s + 8, %s);\n", reg, from); break; case sz_long: comprintf("\tif(%s + 8 != %s)\n", reg, from); comprintf("\t\tmov_l_rr(%s + 8, %s);\n", reg, from); break; default: assert(0); break; } break; case Apdi: case absw: case PC16: case PC8r: case Ad16: case Ad8r: case Aipi: case Aind: case absl: { char astring[80]; sprintf(astring, "%sa", to); switch (size) { case sz_byte: insn_n_cycles += 2; gen_writebyte(astring, from); break; case sz_word: insn_n_cycles += 2; gen_writeword(astring, from); break; case sz_long: insn_n_cycles += 4; gen_writelong(astring, from); break; default: assert(0); break; } } break; case imm: case imm0: case imm1: case imm2: case immi: assert(0); break; default: assert(0); break; } } static void genmov16(uae_u32 opcode, struct instr *curi) { comprintf("\tint src=scratchie++;\n"); comprintf("\tint dst=scratchie++;\n"); if ((opcode & 0xfff8) == 0xf620) { /* MOVE16 (Ax)+,(Ay)+ */ comprintf("\tuae_u16 dstreg=((%s)>>12)&0x07;\n", gen_nextiword()); comprintf("\tmov_l_rr(src,8+srcreg);\n"); comprintf("\tmov_l_rr(dst,8+dstreg);\n"); } else { /* Other variants */ genamode (curi->smode, "srcreg", curi->size, "src", 0, 2); genamode (curi->dmode, "dstreg", curi->size, "dst", 0, 2); comprintf("\tmov_l_rr(src,srca);\n"); comprintf("\tmov_l_rr(dst,dsta);\n"); } /* Align on 16-byte boundaries */ comprintf("\tand_l_ri(src,~15);\n"); comprintf("\tand_l_ri(dst,~15);\n"); if ((opcode & 0xfff8) == 0xf620) { comprintf("\tif (srcreg != dstreg)\n"); comprintf("\tadd_l_ri(srcreg+8,16);\n"); comprintf("\tadd_l_ri(dstreg+8,16);\n"); } else if ((opcode & 0xfff8) == 0xf600) comprintf("\tadd_l_ri(srcreg+8,16);\n"); else if ((opcode & 0xfff8) == 0xf608) comprintf("\tadd_l_ri(dstreg+8,16);\n"); #ifdef UAE comprintf("\tif (special_mem) {\n"); comprintf("\t\tint tmp=scratchie;\n"); comprintf("\tscratchie+=4;\n" "\treadlong(src,tmp,scratchie);\n" "\twritelong_clobber(dst,tmp,scratchie);\n" "\tadd_l_ri(src,4);\n" "\tadd_l_ri(dst,4);\n" "\treadlong(src,tmp,scratchie);\n" "\twritelong_clobber(dst,tmp,scratchie);\n" "\tadd_l_ri(src,4);\n" "\tadd_l_ri(dst,4);\n" "\treadlong(src,tmp,scratchie);\n" "\twritelong_clobber(dst,tmp,scratchie);\n" "\tadd_l_ri(src,4);\n" "\tadd_l_ri(dst,4);\n" "\treadlong(src,tmp,scratchie);\n" "\twritelong_clobber(dst,tmp,scratchie);\n"); comprintf("\t} else\n"); #endif start_brace(); comprintf("\tint tmp=scratchie;\n"); comprintf("\tscratchie+=4;\n" "\tget_n_addr(src,src,scratchie);\n" "\tget_n_addr(dst,dst,scratchie);\n" "\tmov_l_rR(tmp+0,src,0);\n" "\tmov_l_rR(tmp+1,src,4);\n" "\tmov_l_rR(tmp+2,src,8);\n" "\tmov_l_rR(tmp+3,src,12);\n" "\tmov_l_Rr(dst,tmp+0,0);\n" "\tforget_about(tmp+0);\n" "\tmov_l_Rr(dst,tmp+1,4);\n" "\tforget_about(tmp+1);\n" "\tmov_l_Rr(dst,tmp+2,8);\n" "\tforget_about(tmp+2);\n" "\tmov_l_Rr(dst,tmp+3,12);\n"); close_brace(); } static void genmovemel (uae_u16 opcode) { comprintf ("\tuae_u16 mask = %s;\n", gen_nextiword ()); comprintf ("\tint native=scratchie++;\n"); comprintf ("\tint i;\n"); comprintf ("\tsigned char offset=0;\n"); genamode (table68k[opcode].dmode, "dstreg", table68k[opcode].size, "src", 2, 1); #ifdef UAE if (table68k[opcode].size == sz_long) comprintf("\tif (1 && !special_mem) {\n"); else comprintf("\tif (1 && !special_mem) {\n"); #endif /* Fast but unsafe... */ comprintf("\tget_n_addr(srca,native,scratchie);\n"); comprintf("\tfor (i=0;i<16;i++) {\n" "\t\tif ((mask>>i)&1) {\n"); switch(table68k[opcode].size) { case sz_long: comprintf("\t\t\tmov_l_rR(i,native,offset);\n" "\t\t\tmid_bswap_32(i);\n" "\t\t\toffset+=4;\n"); break; case sz_word: comprintf("\t\t\tmov_w_rR(i,native,offset);\n" "\t\t\tmid_bswap_16(i);\n" "\t\t\tsign_extend_16_rr(i,i);\n" "\t\t\toffset+=2;\n"); break; default: assert(0); } comprintf("\t\t}\n" "\t}"); if (table68k[opcode].dmode == Aipi) { comprintf("\t\t\tlea_l_brr(8+dstreg,srca,offset);\n"); } /* End fast but unsafe. */ #ifdef UAE comprintf("\t} else {\n"); comprintf ("\t\tint tmp=scratchie++;\n"); comprintf("\t\tmov_l_rr(tmp,srca);\n"); comprintf("\t\tfor (i=0;i<16;i++) {\n" "\t\t\tif ((mask>>i)&1) {\n"); switch(table68k[opcode].size) { case sz_long: comprintf("\t\t\t\treadlong(tmp,i,scratchie);\n" "\t\t\t\tadd_l_ri(tmp,4);\n"); break; case sz_word: comprintf("\t\t\t\treadword(tmp,i,scratchie);\n" "\t\t\t\tadd_l_ri(tmp,2);\n"); break; default: assert(0); } comprintf("\t\t\t}\n" "\t\t}\n"); if (table68k[opcode].dmode == Aipi) { comprintf("\t\tmov_l_rr(8+dstreg,tmp);\n"); } comprintf("\t}\n"); #endif } static void genmovemle (uae_u16 opcode) { comprintf ("\tuae_u16 mask = %s;\n", gen_nextiword ()); comprintf ("\tint native=scratchie++;\n"); comprintf ("\tint i;\n"); comprintf ("\tint tmp=scratchie++;\n"); comprintf ("\tsigned char offset=0;\n"); genamode (table68k[opcode].dmode, "dstreg", table68k[opcode].size, "src", 2, 1); #ifdef UAE /* *Sigh* Some clever geek realized that the fastest way to copy a buffer from main memory to the gfx card is by using movmle. Good on her, but unfortunately, gfx mem isn't "real" mem, and thus that act of cleverness means that movmle must pay attention to special_mem, or Genetic Species is a rather boring-looking game ;-) */ if (table68k[opcode].size == sz_long) comprintf("\tif (1 && !special_mem) {\n"); else comprintf("\tif (1 && !special_mem) {\n"); #endif comprintf("\tget_n_addr(srca,native,scratchie);\n"); if (table68k[opcode].dmode!=Apdi) { comprintf("\tfor (i=0;i<16;i++) {\n" "\t\tif ((mask>>i)&1) {\n"); switch(table68k[opcode].size) { case sz_long: comprintf("\t\t\tmov_l_rr(tmp,i);\n" "\t\t\tmid_bswap_32(tmp);\n" "\t\t\tmov_l_Rr(native,tmp,offset);\n" "\t\t\toffset+=4;\n"); break; case sz_word: comprintf("\t\t\tmov_l_rr(tmp,i);\n" "\t\t\tmid_bswap_16(tmp);\n" "\t\t\tmov_w_Rr(native,tmp,offset);\n" "\t\t\toffset+=2;\n"); break; default: assert(0); } } else { /* Pre-decrement */ comprintf("\tfor (i=0;i<16;i++) {\n" "\t\tif ((mask>>i)&1) {\n"); switch(table68k[opcode].size) { case sz_long: comprintf("\t\t\toffset-=4;\n" "\t\t\tmov_l_rr(tmp,15-i);\n" "\t\t\tmid_bswap_32(tmp);\n" "\t\t\tmov_l_Rr(native,tmp,offset);\n" ); break; case sz_word: comprintf("\t\t\toffset-=2;\n" "\t\t\tmov_l_rr(tmp,15-i);\n" "\t\t\tmid_bswap_16(tmp);\n" "\t\t\tmov_w_Rr(native,tmp,offset);\n" ); break; default: assert(0); } } comprintf("\t\t}\n" "\t}"); if (table68k[opcode].dmode == Apdi) { comprintf("\t\t\tlea_l_brr(8+dstreg,srca,(uae_s32)offset);\n"); } #ifdef UAE comprintf("\t} else {\n"); if (table68k[opcode].dmode!=Apdi) { comprintf("\tmov_l_rr(tmp,srca);\n"); comprintf("\tfor (i=0;i<16;i++) {\n" "\t\tif ((mask>>i)&1) {\n"); switch(table68k[opcode].size) { case sz_long: comprintf("\t\t\twritelong(tmp,i,scratchie);\n" "\t\t\tadd_l_ri(tmp,4);\n"); break; case sz_word: comprintf("\t\t\twriteword(tmp,i,scratchie);\n" "\t\t\tadd_l_ri(tmp,2);\n"); break; default: assert(0); } } else { /* Pre-decrement */ comprintf("\tfor (i=0;i<16;i++) {\n" "\t\tif ((mask>>i)&1) {\n"); switch(table68k[opcode].size) { case sz_long: comprintf("\t\t\tsub_l_ri(srca,4);\n" "\t\t\twritelong(srca,15-i,scratchie);\n"); break; case sz_word: comprintf("\t\t\tsub_l_ri(srca,2);\n" "\t\t\twriteword(srca,15-i,scratchie);\n"); break; default: assert(0); } } comprintf("\t\t}\n" "\t}"); if (table68k[opcode].dmode == Apdi) { comprintf("\t\t\tmov_l_rr(8+dstreg,srca);\n"); } comprintf("\t}\n"); #endif } static void duplicate_carry (void) { comprintf ("\tif (needed_flags&FLAG_X) duplicate_carry();\n"); } typedef enum { flag_logical_noclobber, flag_logical, flag_add, flag_sub, flag_cmp, flag_addx, flag_subx, flag_zn, flag_av, flag_sv, flag_and, flag_or, flag_eor, flag_mov } flagtypes; static void genflags (flagtypes type, wordsizes size, const char *value, const char *src, const char *dst) { if (noflags) { switch(type) { case flag_cmp: comprintf("\tdont_care_flags();\n"); comprintf("/* Weird --- CMP with noflags ;-) */\n"); return; case flag_add: case flag_sub: comprintf("\tdont_care_flags();\n"); { const char* op; switch(type) { case flag_add: op="add"; break; case flag_sub: op="sub"; break; default: assert(0); } switch (size) { case sz_byte: comprintf("\t%s_b(%s,%s);\n",op,dst,src); break; case sz_word: comprintf("\t%s_w(%s,%s);\n",op,dst,src); break; case sz_long: comprintf("\t%s_l(%s,%s);\n",op,dst,src); break; } return; } break; case flag_and: comprintf("\tdont_care_flags();\n"); switch (size) { case sz_byte: comprintf("if (kill_rodent(dst)) {\n"); comprintf("\tzero_extend_8_rr(scratchie,%s);\n",src); comprintf("\tor_l_ri(scratchie,0xffffff00);\n"); comprintf("\tand_l(%s,scratchie);\n",dst); comprintf("\tforget_about(scratchie);\n"); comprintf("\t} else \n" "\tand_b(%s,%s);\n",dst,src); break; case sz_word: comprintf("if (kill_rodent(dst)) {\n"); comprintf("\tzero_extend_16_rr(scratchie,%s);\n",src); comprintf("\tor_l_ri(scratchie,0xffff0000);\n"); comprintf("\tand_l(%s,scratchie);\n",dst); comprintf("\tforget_about(scratchie);\n"); comprintf("\t} else \n" "\tand_w(%s,%s);\n",dst,src); break; case sz_long: comprintf("\tand_l(%s,%s);\n",dst,src); break; } return; case flag_mov: comprintf("\tdont_care_flags();\n"); switch (size) { case sz_byte: comprintf("if (kill_rodent(dst)) {\n"); comprintf("\tzero_extend_8_rr(scratchie,%s);\n",src); comprintf("\tand_l_ri(%s,0xffffff00);\n",dst); comprintf("\tor_l(%s,scratchie);\n",dst); comprintf("\tforget_about(scratchie);\n"); comprintf("\t} else \n" "\tmov_b_rr(%s,%s);\n",dst,src); break; case sz_word: comprintf("if (kill_rodent(dst)) {\n"); comprintf("\tzero_extend_16_rr(scratchie,%s);\n",src); comprintf("\tand_l_ri(%s,0xffff0000);\n",dst); comprintf("\tor_l(%s,scratchie);\n",dst); comprintf("\tforget_about(scratchie);\n"); comprintf("\t} else \n" "\tmov_w_rr(%s,%s);\n",dst,src); break; case sz_long: comprintf("\tmov_l_rr(%s,%s);\n",dst,src); break; } return; case flag_or: case flag_eor: comprintf("\tdont_care_flags();\n"); start_brace(); { const char* op; switch(type) { case flag_or: op="or"; break; case flag_eor: op="xor"; break; default: assert(0); } switch (size) { case sz_byte: comprintf("if (kill_rodent(dst)) {\n"); comprintf("\tzero_extend_8_rr(scratchie,%s);\n",src); comprintf("\t%s_l(%s,scratchie);\n",op,dst); comprintf("\tforget_about(scratchie);\n"); comprintf("\t} else \n" "\t%s_b(%s,%s);\n",op,dst,src); break; case sz_word: comprintf("if (kill_rodent(dst)) {\n"); comprintf("\tzero_extend_16_rr(scratchie,%s);\n",src); comprintf("\t%s_l(%s,scratchie);\n",op,dst); comprintf("\tforget_about(scratchie);\n"); comprintf("\t} else \n" "\t%s_w(%s,%s);\n",op,dst,src); break; case sz_long: comprintf("\t%s_l(%s,%s);\n",op,dst,src); break; } close_brace(); return; } case flag_addx: case flag_subx: comprintf("\tdont_care_flags();\n"); { const char* op; switch(type) { case flag_addx: op="adc"; break; case flag_subx: op="sbb"; break; default: assert(0); } comprintf("\trestore_carry();\n"); /* Reload the X flag into C */ switch (size) { case sz_byte: comprintf("\t%s_b(%s,%s);\n",op,dst,src); break; case sz_word: comprintf("\t%s_w(%s,%s);\n",op,dst,src); break; case sz_long: comprintf("\t%s_l(%s,%s);\n",op,dst,src); break; } return; } break; default: return; } } /* Need the flags, but possibly not all of them */ switch (type) { case flag_logical_noclobber: failure; /* fall through */ case flag_and: case flag_or: case flag_eor: comprintf("\tdont_care_flags();\n"); start_brace(); { const char* op; switch(type) { case flag_and: op="and"; break; case flag_or: op="or"; break; case flag_eor: op="xor"; break; default: assert(0); } switch (size) { case sz_byte: comprintf("\tstart_needflags();\n" "\t%s_b(%s,%s);\n",op,dst,src); break; case sz_word: comprintf("\tstart_needflags();\n" "\t%s_w(%s,%s);\n",op,dst,src); break; case sz_long: comprintf("\tstart_needflags();\n" "\t%s_l(%s,%s);\n",op,dst,src); break; } comprintf("\tlive_flags();\n"); comprintf("\tend_needflags();\n"); close_brace(); return; } case flag_mov: comprintf("\tdont_care_flags();\n"); start_brace(); { switch (size) { case sz_byte: comprintf("\tif (%s!=%s) {\n",src,dst); comprintf("\tmov_b_ri(%s,0);\n" "\tstart_needflags();\n",dst); comprintf("\tor_b(%s,%s);\n",dst,src); comprintf("\t} else {\n"); comprintf("\tmov_b_rr(%s,%s);\n",dst,src); comprintf("\ttest_b_rr(%s,%s);\n",dst,dst); comprintf("\t}\n"); break; case sz_word: comprintf("\tif (%s!=%s) {\n",src,dst); comprintf("\tmov_w_ri(%s,0);\n" "\tstart_needflags();\n",dst); comprintf("\tor_w(%s,%s);\n",dst,src); comprintf("\t} else {\n"); comprintf("\tmov_w_rr(%s,%s);\n",dst,src); comprintf("\ttest_w_rr(%s,%s);\n",dst,dst); comprintf("\t}\n"); break; case sz_long: comprintf("\tif (%s!=%s) {\n",src,dst); comprintf("\tmov_l_ri(%s,0);\n" "\tstart_needflags();\n",dst); comprintf("\tor_l(%s,%s);\n",dst,src); comprintf("\t} else {\n"); comprintf("\tmov_l_rr(%s,%s);\n",dst,src); comprintf("\ttest_l_rr(%s,%s);\n",dst,dst); comprintf("\t}\n"); break; } comprintf("\tlive_flags();\n"); comprintf("\tend_needflags();\n"); close_brace(); return; } case flag_logical: comprintf("\tdont_care_flags();\n"); start_brace(); switch (size) { case sz_byte: comprintf("\tstart_needflags();\n" "\ttest_b_rr(%s,%s);\n",value,value); break; case sz_word: comprintf("\tstart_needflags();\n" "\ttest_w_rr(%s,%s);\n",value,value); break; case sz_long: comprintf("\tstart_needflags();\n" "\ttest_l_rr(%s,%s);\n",value,value); break; } comprintf("\tlive_flags();\n"); comprintf("\tend_needflags();\n"); close_brace(); return; case flag_add: case flag_sub: case flag_cmp: comprintf("\tdont_care_flags();\n"); { const char* op; switch(type) { case flag_add: op="add"; break; case flag_sub: op="sub"; break; case flag_cmp: op="cmp"; break; default: assert(0); } switch (size) { case sz_byte: comprintf("\tstart_needflags();\n" "\t%s_b(%s,%s);\n",op,dst,src); break; case sz_word: comprintf("\tstart_needflags();\n" "\t%s_w(%s,%s);\n",op,dst,src); break; case sz_long: comprintf("\tstart_needflags();\n" "\t%s_l(%s,%s);\n",op,dst,src); break; } comprintf("\tlive_flags();\n"); comprintf("\tend_needflags();\n"); if (type!=flag_cmp) { duplicate_carry(); } comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); return; } case flag_addx: case flag_subx: uses_cmov; comprintf("\tdont_care_flags();\n"); { const char* op; switch(type) { case flag_addx: op="adc"; break; case flag_subx: op="sbb"; break; default: assert(0); } start_brace(); comprintf("\tint zero=scratchie++;\n" "\tint one=scratchie++;\n" "\tif (needed_flags&FLAG_Z) {\n" "\tmov_l_ri(zero,0);\n" "\tmov_l_ri(one,-1);\n" "\tmake_flags_live();\n" "\tcmov_l_rr(zero,one,%d);\n" "\t}\n",NATIVE_CC_NE); comprintf("\trestore_carry();\n"); /* Reload the X flag into C */ switch (size) { case sz_byte: comprintf("\tstart_needflags();\n" "\t%s_b(%s,%s);\n",op,dst,src); break; case sz_word: comprintf("\tstart_needflags();\n" "\t%s_w(%s,%s);\n",op,dst,src); break; case sz_long: comprintf("\tstart_needflags();\n" "\t%s_l(%s,%s);\n",op,dst,src); break; } comprintf("\tlive_flags();\n"); comprintf("\tif (needed_flags&FLAG_Z) {\n"); comprintf("\tcmov_l_rr(zero,one,%d);\n", NATIVE_CC_NE); comprintf("\tset_zero(zero, one);\n"); /* No longer need one */ comprintf("\tlive_flags();\n"); comprintf("\t}\n"); comprintf("\tend_needflags();\n"); duplicate_carry(); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); return; } default: failure; break; } } static int /* returns zero for success, non-zero for failure */ gen_opcode (unsigned int opcode) { struct instr *curi = table68k + opcode; const char* ssize=NULL; insn_n_cycles = 2; global_failure=0; long_opcode=0; global_isjump=0; global_iscjump=0; global_isaddx=0; global_cmov=0; global_fpu=0; global_mayfail=0; hack_opcode=opcode; endstr[0]=0; start_brace (); comprintf("\tuae_u8 scratchie=S1;\n"); switch (curi->plev) { case 0: /* not privileged */ break; case 1: /* unprivileged only on 68000 */ if (cpu_level == 0) break; if (next_cpu_level < 0) next_cpu_level = 0; /* fall through */ case 2: /* priviledged */ failure; /* Easy ones first */ break; case 3: /* privileged if size == word */ if (curi->size == sz_byte) break; failure; break; } switch (curi->size) { case sz_byte: ssize="b"; break; case sz_word: ssize="w"; break; case sz_long: ssize="l"; break; default: assert(0); } (void)ssize; switch (curi->mnemo) { case i_OR: case i_AND: case i_EOR: #ifdef DISABLE_I_OR_AND_EOR failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); switch(curi->mnemo) { case i_OR: genflags (flag_or, curi->size, "", "src", "dst"); break; case i_AND: genflags (flag_and, curi->size, "", "src", "dst"); break; case i_EOR: genflags (flag_eor, curi->size, "", "src", "dst"); break; } genastore ("dst", curi->dmode, "dstreg", curi->size, "dst"); break; case i_ORSR: case i_EORSR: failure; isjump; break; case i_ANDSR: failure; isjump; break; case i_SUB: #ifdef DISABLE_I_SUB failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); genflags (flag_sub, curi->size, "", "src", "dst"); genastore ("dst", curi->dmode, "dstreg", curi->size, "dst"); break; case i_SUBA: #ifdef DISABLE_I_SUBA failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", sz_long, "dst", 1, 0); start_brace(); comprintf("\tint tmp=scratchie++;\n"); switch(curi->size) { case sz_byte: comprintf("\tsign_extend_8_rr(tmp,src);\n"); break; case sz_word: comprintf("\tsign_extend_16_rr(tmp,src);\n"); break; case sz_long: comprintf("\ttmp=src;\n"); break; default: assert(0); } comprintf("\tsub_l(dst,tmp);\n"); genastore ("dst", curi->dmode, "dstreg", sz_long, "dst"); break; case i_SUBX: #ifdef DISABLE_I_SUBX failure; #endif isaddx; genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); genflags (flag_subx, curi->size, "", "src", "dst"); genastore ("dst", curi->dmode, "dstreg", curi->size, "dst"); break; case i_SBCD: failure; /* I don't think so! */ break; case i_ADD: #ifdef DISABLE_I_ADD failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); genflags (flag_add, curi->size, "", "src", "dst"); genastore ("dst", curi->dmode, "dstreg", curi->size, "dst"); break; case i_ADDA: #ifdef DISABLE_I_ADDA failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", sz_long, "dst", 1, 0); start_brace(); comprintf("\tint tmp=scratchie++;\n"); switch(curi->size) { case sz_byte: comprintf("\tsign_extend_8_rr(tmp,src);\n"); break; case sz_word: comprintf("\tsign_extend_16_rr(tmp,src);\n"); break; case sz_long: comprintf("\ttmp=src;\n"); break; default: assert(0); } comprintf("\tadd_l(dst,tmp);\n"); genastore ("dst", curi->dmode, "dstreg", sz_long, "dst"); break; case i_ADDX: #ifdef DISABLE_I_ADDX failure; #endif isaddx; genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); genflags (flag_addx, curi->size, "", "src", "dst"); genastore ("dst", curi->dmode, "dstreg", curi->size, "dst"); break; case i_ABCD: failure; /* No BCD maths for me.... */ break; case i_NEG: #ifdef DISABLE_I_NEG failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace (); comprintf("\tint dst=scratchie++;\n"); comprintf("\tmov_l_ri(dst,0);\n"); genflags (flag_sub, curi->size, "", "src", "dst"); genastore ("dst", curi->smode, "srcreg", curi->size, "src"); break; case i_NEGX: #ifdef DISABLE_I_NEGX failure; #endif isaddx; genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace (); comprintf("\tint dst=scratchie++;\n"); comprintf("\tmov_l_ri(dst,0);\n"); genflags (flag_subx, curi->size, "", "src", "dst"); genastore ("dst", curi->smode, "srcreg", curi->size, "src"); break; case i_NBCD: failure; /* Nope! */ break; case i_CLR: #ifdef DISABLE_I_CLR failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 2, 0); start_brace(); comprintf("\tint dst=scratchie++;\n"); comprintf("\tmov_l_ri(dst,0);\n"); genflags (flag_logical, curi->size, "dst", "", ""); genastore ("dst", curi->smode, "srcreg", curi->size, "src"); break; case i_NOT: #ifdef DISABLE_I_NOT failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace (); comprintf("\tint dst=scratchie++;\n"); comprintf("\tmov_l_ri(dst,0xffffffff);\n"); genflags (flag_eor, curi->size, "", "src", "dst"); genastore ("dst", curi->smode, "srcreg", curi->size, "src"); break; case i_TST: #ifdef DISABLE_I_TST failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genflags (flag_logical, curi->size, "src", "", ""); break; case i_BCHG: case i_BCLR: case i_BSET: case i_BTST: #ifdef DISABLE_I_BCHG_BCLR_BSET_BTST failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); comprintf("\tint s=scratchie++;\n" "\tint tmp=scratchie++;\n" "\tmov_l_rr(s,src);\n"); if (curi->size == sz_byte) comprintf("\tand_l_ri(s,7);\n"); else comprintf("\tand_l_ri(s,31);\n"); { const char* op; int need_write=1; switch(curi->mnemo) { case i_BCHG: op="btc"; break; case i_BCLR: op="btr"; break; case i_BSET: op="bts"; break; case i_BTST: op="bt"; need_write=0; break; default: op=""; assert(0); } comprintf("\t%s_l_rr(dst,s);\n" /* Answer now in C */ "\tsbb_l(s,s);\n" /* s is 0 if bit was 0, -1 otherwise */ "\tmake_flags_live();\n" /* Get the flags back */ "\tdont_care_flags();\n",op); if (!noflags) { comprintf("\tstart_needflags();\n" "\tset_zero(s,tmp);\n" "\tlive_flags();\n" "\tend_needflags();\n"); } if (need_write) genastore ("dst", curi->dmode, "dstreg", curi->size, "dst"); } break; case i_CMPM: case i_CMP: #ifdef DISABLE_I_CMPM_CMP failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace (); genflags (flag_cmp, curi->size, "", "src", "dst"); break; case i_CMPA: #ifdef DISABLE_I_CMPA failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", sz_long, "dst", 1, 0); start_brace(); comprintf("\tint tmps=scratchie++;\n"); switch(curi->size) { case sz_byte: comprintf("\tsign_extend_8_rr(tmps,src);\n"); break; case sz_word: comprintf("\tsign_extend_16_rr(tmps,src);\n"); break; case sz_long: comprintf("tmps=src;\n"); break; default: assert(0); } genflags (flag_cmp, sz_long, "", "tmps", "dst"); break; /* The next two are coded a little unconventional, but they are doing * weird things... */ case i_MVPRM: isjump; failure; break; case i_MVPMR: isjump; failure; break; case i_MOVE: #ifdef DISABLE_I_MOVE failure; #endif switch(curi->dmode) { case Dreg: case Areg: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0); genflags (flag_mov, curi->size, "", "src", "dst"); genastore ("dst", curi->dmode, "dstreg", curi->size, "dst"); break; default: /* It goes to memory, not a register */ genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0); genflags (flag_logical, curi->size, "src", "", ""); genastore ("src", curi->dmode, "dstreg", curi->size, "dst"); break; } break; case i_MOVEA: #ifdef DISABLE_I_MOVEA failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0); start_brace(); comprintf("\tint tmps=scratchie++;\n"); switch(curi->size) { case sz_word: comprintf("\tsign_extend_16_rr(dst,src);\n"); break; case sz_long: comprintf("\tmov_l_rr(dst,src);\n"); break; default: assert(0); } genastore ("dst", curi->dmode, "dstreg", sz_long, "dst"); break; case i_MVSR2: isjump; failure; break; case i_MV2SR: isjump; failure; break; case i_SWAP: #ifdef DISABLE_I_SWAP failure; #endif genamode (curi->smode, "srcreg", sz_long, "src", 1, 0); comprintf("\tdont_care_flags();\n"); comprintf("\trol_l_ri(src,16);\n"); genflags (flag_logical, sz_long, "src", "", ""); genastore ("src", curi->smode, "srcreg", sz_long, "src"); break; case i_EXG: #ifdef DISABLE_I_EXG failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); start_brace(); comprintf("\tint tmp=scratchie++;\n" "\tmov_l_rr(tmp,src);\n"); genastore ("dst", curi->smode, "srcreg", curi->size, "src"); genastore ("tmp", curi->dmode, "dstreg", curi->size, "dst"); break; case i_EXT: #ifdef DISABLE_I_EXT failure; #endif genamode (curi->smode, "srcreg", sz_long, "src", 1, 0); comprintf("\tdont_care_flags();\n"); start_brace (); switch (curi->size) { case sz_byte: comprintf ("\tint dst = src;\n" "\tsign_extend_8_rr(src,src);\n"); break; case sz_word: comprintf ("\tint dst = scratchie++;\n" "\tsign_extend_8_rr(dst,src);\n"); break; case sz_long: comprintf ("\tint dst = src;\n" "\tsign_extend_16_rr(src,src);\n"); break; default: assert(0); } genflags (flag_logical, curi->size == sz_word ? sz_word : sz_long, "dst", "", ""); genastore ("dst", curi->smode, "srcreg", curi->size == sz_word ? sz_word : sz_long, "src"); break; case i_MVMEL: #ifdef DISABLE_I_MVEL failure; #endif genmovemel (opcode); break; case i_MVMLE: #ifdef DISABLE_I_MVMLE failure; #endif genmovemle (opcode); break; case i_TRAP: isjump; failure; break; case i_MVR2USP: isjump; failure; break; case i_MVUSP2R: isjump; failure; break; case i_RESET: isjump; failure; break; case i_NOP: break; case i_STOP: isjump; failure; break; case i_RTE: isjump; failure; break; case i_RTD: #ifdef DISABLE_I_RTD failure; #endif genamode (curi->smode, "srcreg", curi->size, "offs", 1, 0); /* offs is constant */ comprintf("\tadd_l_ri(offs,4);\n"); start_brace(); comprintf("\tint newad=scratchie++;\n" "\treadlong(15,newad,scratchie);\n" "\tmov_l_mr((uintptr)®s.pc,newad);\n" "\tget_n_addr_jmp(newad,PC_P,scratchie);\n" "\tmov_l_mr((uintptr)®s.pc_oldp,PC_P);\n" "\tm68k_pc_offset=0;\n" "\tadd_l(15,offs);\n"); gen_update_next_handler(); isjump; break; case i_LINK: #ifdef DISABLE_I_LINK failure; #endif genamode (curi->smode, "srcreg", sz_long, "src", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "offs", 1, 0); comprintf("\tsub_l_ri(15,4);\n" "\twritelong_clobber(15,src,scratchie);\n" "\tmov_l_rr(src,15);\n"); if (curi->size==sz_word) comprintf("\tsign_extend_16_rr(offs,offs);\n"); comprintf("\tadd_l(15,offs);\n"); genastore ("src", curi->smode, "srcreg", sz_long, "src"); break; case i_UNLK: #ifdef DISABLE_I_UNLK failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); comprintf("\tmov_l_rr(15,src);\n" "\treadlong(15,src,scratchie);\n" "\tadd_l_ri(15,4);\n"); genastore ("src", curi->smode, "srcreg", curi->size, "src"); break; case i_RTS: #ifdef DISABLE_I_RTS failure; #endif comprintf("\tint newad=scratchie++;\n" "\treadlong(15,newad,scratchie);\n" "\tmov_l_mr((uintptr)®s.pc,newad);\n" "\tget_n_addr_jmp(newad,PC_P,scratchie);\n" "\tmov_l_mr((uintptr)®s.pc_oldp,PC_P);\n" "\tm68k_pc_offset=0;\n" "\tlea_l_brr(15,15,4);\n"); gen_update_next_handler(); isjump; break; case i_TRAPV: isjump; failure; break; case i_RTR: isjump; failure; break; case i_JSR: #ifdef DISABLE_I_JSR failure; #endif isjump; genamode (curi->smode, "srcreg", curi->size, "src", 0, 0); start_brace(); comprintf("\tuae_u32 retadd=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+m68k_pc_offset;\n"); comprintf("\tint ret=scratchie++;\n" "\tmov_l_ri(ret,retadd);\n" "\tsub_l_ri(15,4);\n" "\twritelong_clobber(15,ret,scratchie);\n"); comprintf("\tmov_l_mr((uintptr)®s.pc,srca);\n" "\tget_n_addr_jmp(srca,PC_P,scratchie);\n" "\tmov_l_mr((uintptr)®s.pc_oldp,PC_P);\n" "\tm68k_pc_offset=0;\n"); gen_update_next_handler(); break; case i_JMP: #ifdef DISABLE_I_JMP failure; #endif isjump; genamode (curi->smode, "srcreg", curi->size, "src", 0, 0); comprintf("\tmov_l_mr((uintptr)®s.pc,srca);\n" "\tget_n_addr_jmp(srca,PC_P,scratchie);\n" "\tmov_l_mr((uintptr)®s.pc_oldp,PC_P);\n" "\tm68k_pc_offset=0;\n"); gen_update_next_handler(); break; case i_BSR: #ifdef DISABLE_I_BSR failure; #endif is_const_jump; genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); start_brace(); comprintf("\tuae_u32 retadd=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+m68k_pc_offset;\n"); comprintf("\tint ret=scratchie++;\n" "\tmov_l_ri(ret,retadd);\n" "\tsub_l_ri(15,4);\n" "\twritelong_clobber(15,ret,scratchie);\n"); comprintf("\tadd_l_ri(src,m68k_pc_offset_thisinst+2);\n"); comprintf("\tm68k_pc_offset=0;\n"); comprintf("\tadd_l(PC_P,src);\n"); comprintf("\tcomp_pc_p=(uae_u8*)(uintptr)get_const(PC_P);\n"); break; case i_Bcc: #ifdef DISABLE_I_BCC failure; #endif comprintf("\tuae_u32 v,v1,v2;\n"); genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); /* That source is an immediate, so we can clobber it with abandon */ switch(curi->size) { case sz_byte: comprintf("\tsign_extend_8_rr(src,src);\n"); break; case sz_word: comprintf("\tsign_extend_16_rr(src,src);\n"); break; case sz_long: break; } comprintf("\tsub_l_ri(src,m68k_pc_offset-m68k_pc_offset_thisinst-2);\n"); /* Leave the following as "add" --- it will allow it to be optimized away due to src being a constant ;-) */ comprintf("\tadd_l_ri(src,(uintptr)comp_pc_p);\n"); comprintf("\tmov_l_ri(PC_P,(uintptr)comp_pc_p);\n"); /* Now they are both constant. Might as well fold in m68k_pc_offset */ comprintf("\tadd_l_ri(src,m68k_pc_offset);\n"); comprintf("\tadd_l_ri(PC_P,m68k_pc_offset);\n"); comprintf("\tm68k_pc_offset=0;\n"); if (curi->cc>=2) { comprintf("\tv1=get_const(PC_P);\n" "\tv2=get_const(src);\n" "\tregister_branch(v1,v2,%d);\n", cond_codes[curi->cc]); comprintf("\tmake_flags_live();\n"); /* Load the flags */ isjump; } else { is_const_jump; } switch(curi->cc) { case 0: /* Unconditional jump */ comprintf("\tmov_l_rr(PC_P,src);\n"); comprintf("\tcomp_pc_p=(uae_u8*)(uintptr)get_const(PC_P);\n"); break; case 1: break; /* This is silly! */ case 8: failure; break; /* Work out details! FIXME */ case 9: failure; break; /* Not critical, though! */ case 2: case 3: case 4: case 5: case 6: case 7: case 10: case 11: case 12: case 13: case 14: case 15: break; default: assert(0); } break; case i_LEA: #ifdef DISABLE_I_LEA failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0); genastore ("srca", curi->dmode, "dstreg", curi->size, "dst"); break; case i_PEA: #ifdef DISABLE_I_PEA failure; #endif if (table68k[opcode].smode==Areg || table68k[opcode].smode==Aind || table68k[opcode].smode==Aipi || table68k[opcode].smode==Apdi || table68k[opcode].smode==Ad16 || table68k[opcode].smode==Ad8r) comprintf("if (srcreg==7) dodgy=1;\n"); genamode (curi->smode, "srcreg", curi->size, "src", 0, 0); genamode (Apdi, "7", sz_long, "dst", 2, 0); genastore ("srca", Apdi, "7", sz_long, "dst"); break; case i_DBcc: #ifdef DISABLE_I_DBCC failure; #endif isjump; uses_cmov; genamode (curi->smode, "srcreg", curi->size, "src", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "offs", 1, 0); /* That offs is an immediate, so we can clobber it with abandon */ switch(curi->size) { case sz_word: comprintf("\tsign_extend_16_rr(offs,offs);\n"); break; default: assert(0); /* Seems this only comes in word flavour */ } comprintf("\tsub_l_ri(offs,m68k_pc_offset-m68k_pc_offset_thisinst-2);\n"); comprintf("\tadd_l_ri(offs,(uintptr)comp_pc_p);\n"); /* New PC, once the offset_68k is * also added */ /* Let's fold in the m68k_pc_offset at this point */ comprintf("\tadd_l_ri(offs,m68k_pc_offset);\n"); comprintf("\tadd_l_ri(PC_P,m68k_pc_offset);\n"); comprintf("\tm68k_pc_offset=0;\n"); start_brace(); comprintf("\tint nsrc=scratchie++;\n"); if (curi->cc>=2) { comprintf("\tmake_flags_live();\n"); /* Load the flags */ } assert (curi->size==sz_word); switch(curi->cc) { case 0: /* This is an elaborate nop? */ break; case 1: comprintf("\tstart_needflags();\n"); comprintf("\tsub_w_ri(src,1);\n"); comprintf("\t end_needflags();\n"); start_brace(); comprintf("\tuae_u32 v2,v;\n" "\tuae_u32 v1=get_const(PC_P);\n"); comprintf("\tv2=get_const(offs);\n" "\tregister_branch(v1,v2,%d);\n", NATIVE_CC_CC); break; case 8: failure; break; /* Work out details! FIXME */ case 9: failure; break; /* Not critical, though! */ case 2: case 3: case 4: case 5: case 6: case 7: case 10: case 11: case 12: case 13: case 14: case 15: comprintf("\tmov_l_rr(nsrc,src);\n"); comprintf("\tlea_l_brr(scratchie,src,(uae_s32)-1);\n" "\tmov_w_rr(src,scratchie);\n"); comprintf("\tcmov_l_rr(offs,PC_P,%d);\n", cond_codes[curi->cc]); comprintf("\tcmov_l_rr(src,nsrc,%d);\n", cond_codes[curi->cc]); /* OK, now for cc=true, we have src==nsrc and offs==PC_P, so whether we move them around doesn't matter. However, if cc=false, we have offs==jump_pc, and src==nsrc-1 */ comprintf("\t start_needflags();\n"); comprintf("\ttest_w_rr(nsrc,nsrc);\n"); comprintf("\t end_needflags();\n"); comprintf("\tcmov_l_rr(PC_P,offs,%d);\n", NATIVE_CC_NE); break; default: assert(0); } genastore ("src", curi->smode, "srcreg", curi->size, "src"); gen_update_next_handler(); break; case i_Scc: #ifdef DISABLE_I_SCC failure; #endif genamode (curi->smode, "srcreg", curi->size, "src", 2, 0); start_brace (); comprintf ("\tint val = scratchie++;\n"); /* We set val to 0 if we really should use 255, and to 1 for real 0 */ switch(curi->cc) { case 0: /* Unconditional set */ comprintf("\tmov_l_ri(val,0);\n"); break; case 1: /* Unconditional not-set */ comprintf("\tmov_l_ri(val,1);\n"); break; case 8: failure; break; /* Work out details! FIXME */ case 9: failure; break; /* Not critical, though! */ case 2: case 3: case 4: case 5: case 6: case 7: case 10: case 11: case 12: case 13: case 14: case 15: comprintf("\tmake_flags_live();\n"); /* Load the flags */ /* All condition codes can be inverted by changing the LSB */ comprintf("\tsetcc(val,%d);\n", cond_codes[curi->cc]^1); break; default: assert(0); } comprintf("\tsub_b_ri(val,1);\n"); genastore ("val", curi->smode, "srcreg", curi->size, "src"); break; case i_DIVU: isjump; failure; break; case i_DIVS: isjump; failure; break; case i_MULU: #ifdef DISABLE_I_MULU failure; #endif comprintf("\tdont_care_flags();\n"); genamode (curi->smode, "srcreg", sz_word, "src", 1, 0); genamode (curi->dmode, "dstreg", sz_word, "dst", 1, 0); /* To do 16x16 unsigned multiplication, we actually use 32x32 signed, and zero-extend the registers first. That solves the problem of MUL needing dedicated registers on the x86 */ comprintf("\tzero_extend_16_rr(scratchie,src);\n" "\tzero_extend_16_rr(dst,dst);\n" "\timul_32_32(dst,scratchie);\n"); genflags (flag_logical, sz_long, "dst", "", ""); genastore ("dst", curi->dmode, "dstreg", sz_long, "dst"); break; case i_MULS: #ifdef DISABLE_I_MULS failure; #endif comprintf("\tdont_care_flags();\n"); genamode (curi->smode, "srcreg", sz_word, "src", 1, 0); genamode (curi->dmode, "dstreg", sz_word, "dst", 1, 0); comprintf("\tsign_extend_16_rr(scratchie,src);\n" "\tsign_extend_16_rr(dst,dst);\n" "\timul_32_32(dst,scratchie);\n"); genflags (flag_logical, sz_long, "dst", "", ""); genastore ("dst", curi->dmode, "dstreg", sz_long, "dst"); break; case i_CHK: isjump; failure; break; case i_CHK2: isjump; failure; break; case i_ASR: #ifdef DISABLE_I_ASR failure; #endif mayfail; if (curi->smode==Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " " RETURN "\n" "} \n"); start_brace(); } comprintf("\tdont_care_flags();\n"); genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); start_brace(); if (!noflags) comprintf("\tstart_needflags();\n"); if (curi->smode!=immi) { uses_cmov; start_brace(); comprintf("\tint zero = scratchie++;\n"); comprintf("\tint minus1 = scratchie++;\n"); comprintf("\tand_l_ri(cnt,63);\n"); comprintf("\tmov_l_ri(zero, 0);\n"); comprintf("\tmov_l_ri(minus1, -1);\n"); switch(curi->size) { case sz_byte: comprintf("\ttest_b_rr(data,data);\n"); comprintf("\tcmov_l_rr(zero, minus1, NATIVE_CC_MI);\n"); comprintf("\ttest_l_ri(cnt, 0x38);\n"); comprintf("\tcmov_l_rr(data, zero, NATIVE_CC_NE);\n"); comprintf("\tshra_b_rr(data,cnt);\n"); break; case sz_word: comprintf("\ttest_w_rr(data,data);\n"); comprintf("\tcmov_l_rr(zero, minus1, NATIVE_CC_MI);\n"); comprintf("\ttest_l_ri(cnt, 0x30);\n"); comprintf("\tcmov_l_rr(data, zero, NATIVE_CC_NE);\n"); comprintf("\tshra_w_rr(data,cnt);\n"); break; case sz_long: comprintf("\ttest_l_rr(data,data);\n"); comprintf("\tcmov_l_rr(zero, minus1, NATIVE_CC_MI);\n"); comprintf("\ttest_l_ri(cnt, 0x20);\n"); comprintf("\tcmov_l_rr(data, zero, NATIVE_CC_NE);\n"); comprintf("\tshra_l_rr(data,cnt);\n"); break; default: assert(0); } /* Result of shift is now in data. */ } else { switch(curi->size) { case sz_byte: comprintf("\tshra_b_ri(data,srcreg);\n"); break; case sz_word: comprintf("\tshra_w_ri(data,srcreg);\n"); break; case sz_long: comprintf("\tshra_l_ri(data,srcreg);\n"); break; default: assert(0); } } /* And create the flags */ if (!noflags) { comprintf("\tlive_flags();\n"); comprintf("\tend_needflags();\n"); if (curi->smode!=immi) comprintf("\tsetcc_for_cntzero(cnt, data, %d);\n", curi->size == sz_byte ? 1 : curi->size == sz_word ? 2 : 4); else comprintf("\tduplicate_carry();\n"); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } genastore ("data", curi->dmode, "dstreg", curi->size, "data"); break; case i_ASL: #ifdef DISABLE_I_ASL failure; #endif mayfail; if (curi->smode==Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " " RETURN "\n" "} \n"); start_brace(); } comprintf("\tdont_care_flags();\n"); /* Except for the handling of the V flag, this is identical to LSL. The handling of V is, uhm, unpleasant, so if it's needed, let the normal emulation handle it. Shoulders of giants kinda thing ;-) */ comprintf("if (needed_flags & FLAG_V) {\n" " FAIL(1);\n" " " RETURN "\n" "} \n"); genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); if (!noflags) comprintf("\tstart_needflags();\n"); if (curi->smode!=immi) { uses_cmov; start_brace(); comprintf("\tint zero = scratchie++;\n"); comprintf("\tand_l_ri(cnt,63);\n"); comprintf("\tmov_l_ri(zero, 0);\n"); switch(curi->size) { case sz_byte: comprintf("\ttest_l_ri(cnt, 0x38);\n"); comprintf("\tcmov_l_rr(data, zero, NATIVE_CC_NE);\n"); comprintf("\tshll_b_rr(data,cnt);\n"); break; case sz_word: comprintf("\ttest_l_ri(cnt, 0x30);\n"); comprintf("\tcmov_l_rr(data, zero, NATIVE_CC_NE);\n"); comprintf("\tshll_w_rr(data,cnt);\n"); break; case sz_long: comprintf("\ttest_l_ri(cnt, 0x20);\n"); comprintf("\tcmov_l_rr(data, zero, NATIVE_CC_NE);\n"); comprintf("\tshll_l_rr(data,cnt);\n"); break; default: assert(0); } /* Result of shift is now in data. */ } else { switch(curi->size) { case sz_byte: comprintf("\tshll_b_ri(data,srcreg);\n"); break; case sz_word: comprintf("\tshll_w_ri(data,srcreg);\n"); break; case sz_long: comprintf("\tshll_l_ri(data,srcreg);\n"); break; default: assert(0); } } /* And create the flags */ if (!noflags) { comprintf("\tlive_flags();\n"); comprintf("\tend_needflags();\n"); if (curi->smode!=immi) comprintf("\tsetcc_for_cntzero(cnt, data, %d);\n", curi->size == sz_byte ? 1 : curi->size == sz_word ? 2 : 4); else comprintf("\tduplicate_carry();\n"); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } genastore ("data", curi->dmode, "dstreg", curi->size, "data"); break; case i_LSR: #ifdef DISABLE_I_LSR failure; #endif mayfail; if (curi->smode==Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " " RETURN "\n" "} \n"); start_brace(); } comprintf("\tdont_care_flags();\n"); genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); start_brace(); if (!noflags) comprintf("\tstart_needflags();\n"); if (curi->smode!=immi) { uses_cmov; start_brace(); comprintf("\tint zero = scratchie++;\n"); comprintf("\tand_l_ri(cnt,63);\n"); comprintf("\tmov_l_ri(zero, 0);\n"); switch(curi->size) { case sz_byte: comprintf("\ttest_l_ri(cnt, 0x38);\n"); comprintf("\tcmov_l_rr(data, zero, NATIVE_CC_NE);\n"); comprintf("\tshrl_b_rr(data,cnt);\n"); break; case sz_word: comprintf("\ttest_l_ri(cnt, 0x30);\n"); comprintf("\tcmov_l_rr(data, zero, NATIVE_CC_NE);\n"); comprintf("\tshrl_w_rr(data,cnt);\n"); break; case sz_long: comprintf("\ttest_l_ri(cnt, 0x20);\n"); comprintf("\tcmov_l_rr(data, zero, NATIVE_CC_NE);\n"); comprintf("\tshrl_l_rr(data, cnt);\n"); break; default: assert(0); } /* Result of shift is now in data. */ } else { switch(curi->size) { case sz_byte: comprintf("\tshrl_b_ri(data,srcreg);\n"); break; case sz_word: comprintf("\tshrl_w_ri(data,srcreg);\n"); break; case sz_long: comprintf("\tshrl_l_ri(data,srcreg);\n"); break; default: assert(0); } } /* And create the flags */ if (!noflags) { comprintf("\tlive_flags();\n"); comprintf("\tend_needflags();\n"); if (curi->smode!=immi) comprintf("\tsetcc_for_cntzero(cnt, data, %d);\n", curi->size == sz_byte ? 1 : curi->size == sz_word ? 2 : 4); else comprintf("\tduplicate_carry();\n"); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } genastore ("data", curi->dmode, "dstreg", curi->size, "data"); break; case i_LSL: #ifdef DISABLE_I_LSL failure; #endif mayfail; if (curi->smode==Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " " RETURN "\n" "} \n"); start_brace(); } comprintf("\tdont_care_flags();\n"); genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); start_brace(); if (!noflags) comprintf("\tstart_needflags();\n"); if (curi->smode!=immi) { uses_cmov; start_brace(); comprintf("\tint zero = scratchie++;\n"); comprintf("\tand_l_ri(cnt,63);\n"); comprintf("\tmov_l_ri(zero, 0);\n"); switch(curi->size) { case sz_byte: comprintf("\ttest_l_ri(cnt, 0x38);\n"); comprintf("\tcmov_l_rr(data, zero, NATIVE_CC_NE);\n"); comprintf("\tshll_b_rr(data,cnt);\n"); break; case sz_word: comprintf("\ttest_l_ri(cnt, 0x30);\n"); comprintf("\tcmov_l_rr(data, zero, NATIVE_CC_NE);\n"); comprintf("\tshll_w_rr(data,cnt);\n"); break; case sz_long: comprintf("\ttest_l_ri(cnt, 0x20);\n"); comprintf("\tcmov_l_rr(data, zero, NATIVE_CC_NE);\n"); comprintf("\tshll_l_rr(data,cnt);\n"); break; default: assert(0); } /* Result of shift is now in data. */ } else { switch(curi->size) { case sz_byte: comprintf("\tshll_b_ri(data,srcreg);\n"); break; case sz_word: comprintf("\tshll_w_ri(data,srcreg);\n"); break; case sz_long: comprintf("\tshll_l_ri(data,srcreg);\n"); break; default: assert(0); } } /* And create the flags */ if (!noflags) { comprintf("\tlive_flags();\n"); comprintf("\tend_needflags();\n"); if (curi->smode!=immi) comprintf("\tsetcc_for_cntzero(cnt, data, %d);\n", curi->size == sz_byte ? 1 : curi->size == sz_word ? 2 : 4); else comprintf("\tduplicate_carry();\n"); comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n"); } genastore ("data", curi->dmode, "dstreg", curi->size, "data"); break; case i_ROL: #ifdef DISABLE_I_ROL failure; #endif mayfail; if (curi->smode==Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " " RETURN "\n" "} \n"); start_brace(); } comprintf("\tdont_care_flags();\n"); genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); start_brace (); switch(curi->size) { case sz_long: comprintf("\t rol_l_rr(data,cnt);\n"); break; case sz_word: comprintf("\t rol_w_rr(data,cnt);\n"); break; case sz_byte: comprintf("\t rol_b_rr(data,cnt);\n"); break; } if (!noflags) { comprintf("\tstart_needflags();\n"); /* * x86 ROL instruction does not set ZF/SF, so we need extra checks here */ comprintf("\tif (needed_flags & FLAG_ZNV)\n"); switch(curi->size) { case sz_byte: comprintf("\t test_b_rr(data,data);\n"); break; case sz_word: comprintf("\t test_w_rr(data,data);\n"); break; case sz_long: comprintf("\t test_l_rr(data,data);\n"); break; } comprintf("\t bt_l_ri(data,0x00);\n"); /* Set C */ comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } genastore ("data", curi->dmode, "dstreg", curi->size, "data"); break; case i_ROR: #ifdef DISABLE_I_ROR failure; #endif mayfail; if (curi->smode==Dreg) { comprintf("if ((uae_u32)srcreg==(uae_u32)dstreg) {\n" " FAIL(1);\n" " " RETURN "\n" "} \n"); start_brace(); } comprintf("\tdont_care_flags();\n"); genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0); genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0); start_brace (); switch(curi->size) { case sz_long: comprintf("\t ror_l_rr(data,cnt);\n"); break; case sz_word: comprintf("\t ror_w_rr(data,cnt);\n"); break; case sz_byte: comprintf("\t ror_b_rr(data,cnt);\n"); break; } if (!noflags) { comprintf("\tstart_needflags();\n"); /* * x86 ROR instruction does not set ZF/SF, so we need extra checks here */ comprintf("\tif (needed_flags & FLAG_ZNV)\n"); switch(curi->size) { case sz_byte: comprintf("\t test_b_rr(data,data);\n"); break; case sz_word: comprintf("\t test_w_rr(data,data);\n"); break; case sz_long: comprintf("\t test_l_rr(data,data);\n"); break; } switch(curi->size) { case sz_byte: comprintf("\t bt_l_ri(data,0x07);\n"); break; case sz_word: comprintf("\t bt_l_ri(data,0x0f);\n"); break; case sz_long: comprintf("\t bt_l_ri(data,0x1f);\n"); break; } comprintf("\t live_flags();\n"); comprintf("\t end_needflags();\n"); } genastore ("data", curi->dmode, "dstreg", curi->size, "data"); break; case i_ROXL: failure; break; case i_ROXR: failure; break; case i_ASRW: failure; break; case i_ASLW: failure; break; case i_LSRW: failure; break; case i_LSLW: failure; break; case i_ROLW: failure; break; case i_RORW: failure; break; case i_ROXLW: failure; break; case i_ROXRW: failure; break; case i_MOVEC2: isjump; failure; break; case i_MOVE2C: isjump; failure; break; case i_CAS: failure; break; case i_CAS2: failure; break; case i_MOVES: /* ignore DFC and SFC because we have no MMU */ isjump; failure; break; case i_BKPT: /* only needed for hardware emulators */ isjump; failure; break; case i_CALLM: /* not present in 68030 */ isjump; failure; break; case i_RTM: /* not present in 68030 */ isjump; failure; break; case i_TRAPcc: isjump; failure; break; case i_DIVL: isjump; failure; break; case i_MULL: #ifdef DISABLE_I_MULL failure; #endif if (!noflags) { failure; break; } comprintf("\tuae_u16 extra=%s;\n",gen_nextiword()); comprintf("\tint r2=(extra>>12)&7;\n" "\tint tmp=scratchie++;\n"); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0); /* The two operands are in dst and r2 */ comprintf("\tif (extra&0x0400) {\n" /* Need full 64 bit result */ "\tint r3=(extra&7);\n" "\tmov_l_rr(r3,dst);\n"); /* operands now in r3 and r2 */ comprintf("\tif (extra&0x0800) { \n" /* signed */ "\t\timul_64_32(r2,r3);\n" "\t} else { \n" "\t\tmul_64_32(r2,r3);\n" "\t} \n"); /* The result is in r2/tmp, with r2 holding the lower 32 bits */ comprintf("\t} else {\n"); /* Only want 32 bit result */ /* operands in dst and r2, result foes into r2 */ /* shouldn't matter whether it's signed or unsigned?!? */ comprintf("\timul_32_32(r2,dst);\n" "\t}\n"); break; case i_BFTST: case i_BFEXTU: case i_BFCHG: case i_BFEXTS: case i_BFCLR: case i_BFFFO: case i_BFSET: case i_BFINS: failure; break; case i_PACK: failure; break; case i_UNPK: failure; break; case i_TAS: failure; break; case i_FPP: #ifdef DISABLE_I_FPP failure; #endif uses_fpu; mayfail; comprintf("#ifdef USE_JIT_FPU\n"); comprintf("\tuae_u16 extra=%s;\n",gen_nextiword()); swap_opcode(); comprintf("\tcomp_fpp_opp(opcode,extra);\n"); comprintf("#else\n"); comprintf("\tfailure = 1;\n"); comprintf("#endif\n"); break; case i_FBcc: #ifdef DISABLE_I_FBCC failure; #endif uses_fpu; isjump; uses_cmov; mayfail; comprintf("#ifdef USE_JIT_FPU\n"); swap_opcode(); comprintf("\tcomp_fbcc_opp(opcode);\n"); comprintf("#else\n"); comprintf("\tfailure = 1;\n"); comprintf("#endif\n"); break; case i_FDBcc: uses_fpu; isjump; failure; break; case i_FScc: #ifdef DISABLE_I_FSCC failure; #endif uses_fpu; mayfail; uses_cmov; comprintf("#ifdef USE_JIT_FPU\n"); comprintf("\tuae_u16 extra=%s;\n",gen_nextiword()); swap_opcode(); comprintf("\tcomp_fscc_opp(opcode,extra);\n"); comprintf("#else\n"); comprintf("\tfailure = 1;\n"); comprintf("#endif\n"); break; case i_FTRAPcc: uses_fpu; isjump; failure; break; case i_FSAVE: uses_fpu; failure; break; case i_FRESTORE: uses_fpu; failure; break; case i_CINVL: case i_CINVP: case i_CINVA: isjump; /* Not really, but it's probably a good idea to stop translating at this point */ failure; comprintf ("\tflush_icache();\n"); /* Differentiate a bit more? */ break; case i_CPUSHL: case i_CPUSHP: case i_CPUSHA: isjump; /* Not really, but it's probably a good idea to stop translating at this point */ failure; break; case i_MOVE16: #ifdef DISABLE_I_MOVE16 failure; #endif genmov16(opcode,curi); break; #ifdef UAE case i_MMUOP030: case i_PFLUSHN: case i_PFLUSH: case i_PFLUSHAN: case i_PFLUSHA: case i_PLPAR: case i_PLPAW: case i_PTESTR: case i_PTESTW: case i_LPSTOP: isjump; failure; break; #endif #ifdef WINUAE_ARANYM case i_EMULOP_RETURN: isjump; failure; break; case i_EMULOP: failure; break; case i_NATFEAT_ID: case i_NATFEAT_CALL: failure; break; case i_MMUOP: isjump; failure; break; #endif default: assert(0); break; } comprintf("%s",endstr); finish_braces (); sync_m68k_pc (); if (global_mayfail) comprintf("\tif (failure) m68k_pc_offset=m68k_pc_offset_thisinst;\n"); return global_failure; } static void generate_includes (FILE * f) { fprintf (f, "#include \"sysconfig.h\"\n"); fprintf (f, "#if defined(JIT)\n"); fprintf (f, "#include \"sysdeps.h\"\n"); #ifdef UAE fprintf (f, "#include \"options.h\"\n"); fprintf (f, "#include \"uae/memory.h\"\n"); #else fprintf (f, "#include \"m68k.h\"\n"); fprintf (f, "#include \"memory-uae.h\"\n"); #endif fprintf (f, "#include \"readcpu.h\"\n"); fprintf (f, "#include \"newcpu.h\"\n"); fprintf (f, "#include \"comptbl.h\"\n"); fprintf (f, "#include \"debug.h\"\n"); } static int postfix; static char *decodeEA (amodes mode, wordsizes size) { static char buffer[80]; buffer[0] = 0; switch (mode){ case Dreg: strcpy (buffer,"Dn"); break; case Areg: strcpy (buffer,"An"); break; case Aind: strcpy (buffer,"(An)"); break; case Aipi: strcpy (buffer,"(An)+"); break; case Apdi: strcpy (buffer,"-(An)"); break; case Ad16: strcpy (buffer,"(d16,An)"); break; case Ad8r: strcpy (buffer,"(d8,An,Xn)"); break; case PC16: strcpy (buffer,"(d16,PC)"); break; case PC8r: strcpy (buffer,"(d8,PC,Xn)"); break; case absw: strcpy (buffer,"(xxx).W"); break; case absl: strcpy (buffer,"(xxx).L"); break; case imm: switch (size){ case sz_byte: strcpy (buffer,"#.B"); break; case sz_word: strcpy (buffer,"#.W"); break; case sz_long: strcpy (buffer,"#.L"); break; default: break; } break; case imm0: strcpy (buffer,"#.B"); break; case imm1: strcpy (buffer,"#.W"); break; case imm2: strcpy (buffer,"#.L"); break; case immi: strcpy (buffer,"#"); break; default: break; } return buffer; } static char *outopcode (const char *name, int opcode) { static char out[100]; struct instr *ins; ins = &table68k[opcode]; strcpy (out, name); if (ins->smode == immi) strcat (out, "Q"); if (ins->size == sz_byte) strcat (out,".B"); if (ins->size == sz_word) strcat (out,".W"); if (ins->size == sz_long) strcat (out,".L"); strcat (out," "); if (ins->suse) strcat (out, decodeEA (ins->smode, ins->size)); if (ins->duse) { if (ins->suse) strcat (out,","); strcat (out, decodeEA (ins->dmode, ins->size)); } return out; } static void generate_one_opcode (int rp, int noflags) { int i; uae_u16 smsk, dmsk; unsigned int opcode = opcode_map[rp]; int aborted=0; int have_srcreg=0; int have_dstreg=0; const char *name; if (table68k[opcode].mnemo == i_ILLG || table68k[opcode].clev > cpu_level) return; for (i = 0; lookuptab[i].name[0]; i++) { if (table68k[opcode].mnemo == lookuptab[i].mnemo) break; } if (table68k[opcode].handler != -1) return; switch (table68k[opcode].stype) { case 0: smsk = 7; break; case 1: smsk = 255; break; case 2: smsk = 15; break; case 3: smsk = 7; break; case 4: smsk = 7; break; case 5: smsk = 63; break; #ifndef UAE case 6: smsk = 255; break; #endif case 7: smsk = 3; break; default: smsk = 0; assert(0); } dmsk = 7; next_cpu_level = -1; if (table68k[opcode].suse && table68k[opcode].smode != imm && table68k[opcode].smode != imm0 && table68k[opcode].smode != imm1 && table68k[opcode].smode != imm2 && table68k[opcode].smode != absw && table68k[opcode].smode != absl && table68k[opcode].smode != PC8r && table68k[opcode].smode != PC16) { have_srcreg=1; if (table68k[opcode].spos == -1) { if (((int) table68k[opcode].sreg) >= 128) comprintf ("\tuae_s32 srcreg = (uae_s32)(uae_s8)%d;\n", (int) table68k[opcode].sreg); else comprintf ("\tuae_s32 srcreg = %d;\n", (int) table68k[opcode].sreg); } else { char source[100]; int pos = table68k[opcode].spos; #ifndef UAE comprintf ("#if defined(HAVE_GET_WORD_UNSWAPPED) && !defined(FULLMMU)\n"); if (pos < 8 && (smsk >> (8 - pos)) != 0) sprintf (source, "(((opcode >> %d) | (opcode << %d)) & %d)", pos ^ 8, 8 - pos, dmsk); else if (pos != 8) sprintf (source, "((opcode >> %d) & %d)", pos ^ 8, smsk); else sprintf (source, "(opcode & %d)", smsk); if (table68k[opcode].stype == 3) comprintf ("\tuae_u32 srcreg = imm8_table[%s];\n", source); else if (table68k[opcode].stype == 1) comprintf ("\tuae_u32 srcreg = (uae_s32)(uae_s8)%s;\n", source); else comprintf ("\tuae_u32 srcreg = %s;\n", source); comprintf ("#else\n"); #endif if (pos) sprintf (source, "((opcode >> %d) & %d)", pos, smsk); else sprintf (source, "(opcode & %d)", smsk); if (table68k[opcode].stype == 3) comprintf ("\tuae_s32 srcreg = imm8_table[%s];\n", source); else if (table68k[opcode].stype == 1) comprintf ("\tuae_s32 srcreg = (uae_s32)(uae_s8)%s;\n", source); else comprintf ("\tuae_s32 srcreg = %s;\n", source); #ifndef UAE comprintf ("#endif\n"); #endif } } if (table68k[opcode].duse /* Yes, the dmode can be imm, in case of LINK or DBcc */ && table68k[opcode].dmode != imm && table68k[opcode].dmode != imm0 && table68k[opcode].dmode != imm1 && table68k[opcode].dmode != imm2 && table68k[opcode].dmode != absw && table68k[opcode].dmode != absl) { have_dstreg=1; if (table68k[opcode].dpos == -1) { if (((int) table68k[opcode].dreg) >= 128) comprintf ("\tuae_s32 dstreg = (uae_s32)(uae_s8)%d;\n", (int) table68k[opcode].dreg); else comprintf ("\tuae_s32 dstreg = %d;\n", (int) table68k[opcode].dreg); } else { int pos = table68k[opcode].dpos; #ifndef UAE comprintf ("#if defined(HAVE_GET_WORD_UNSWAPPED) && !defined(FULLMMU)\n"); if (pos < 8 && (dmsk >> (8 - pos)) != 0) comprintf ("\tuae_u32 dstreg = ((opcode >> %d) | (opcode << %d)) & %d;\n", pos ^ 8, 8 - pos, dmsk); else if (pos != 8) comprintf ("\tuae_u32 dstreg = (opcode >> %d) & %d;\n", pos ^ 8, dmsk); else comprintf ("\tuae_u32 dstreg = opcode & %d;\n", dmsk); comprintf ("#else\n"); #endif if (pos) comprintf ("\tuae_u32 dstreg = (opcode >> %d) & %d;\n", pos, dmsk); else comprintf ("\tuae_u32 dstreg = opcode & %d;\n", dmsk); #ifndef UAE comprintf ("#endif\n"); #endif } } if (have_srcreg && have_dstreg && (table68k[opcode].dmode==Areg || table68k[opcode].dmode==Aind || table68k[opcode].dmode==Aipi || table68k[opcode].dmode==Apdi || table68k[opcode].dmode==Ad16 || table68k[opcode].dmode==Ad8r) && (table68k[opcode].smode==Areg || table68k[opcode].smode==Aind || table68k[opcode].smode==Aipi || table68k[opcode].smode==Apdi || table68k[opcode].smode==Ad16 || table68k[opcode].smode==Ad8r) ) { comprintf("\tuae_u32 dodgy=(srcreg==(uae_s32)dstreg);\n"); } else { comprintf("\tuae_u32 dodgy=0;\n"); } comprintf("\tuae_u32 m68k_pc_offset_thisinst=m68k_pc_offset;\n"); comprintf("\tm68k_pc_offset+=2;\n"); aborted=gen_opcode (opcode); { char flags[64 * 6]; *flags = '\0'; if (global_isjump) strcat(flags, "COMP_OPCODE_ISJUMP|"); if (long_opcode) strcat(flags, "COMP_OPCODE_LONG_OPCODE|"); if (global_cmov) strcat(flags, "COMP_OPCODE_CMOV|"); if (global_isaddx) strcat(flags, "COMP_OPCODE_ISADDX|"); if (global_iscjump) strcat(flags, "COMP_OPCODE_ISCJUMP|"); if (global_fpu) strcat(flags, "COMP_OPCODE_USES_FPU|"); if (*flags) flags[strlen(flags) - 1] = '\0'; else strcpy(flags, "0"); #ifdef UAE /* RETTYPE != void */ comprintf ("return 0;\n"); #endif comprintf ("}\n"); name = lookuptab[i].name; if (aborted) { fprintf (stblfile, "{ NULL, %u, %s }, /* %s */\n", opcode, flags, name); com_discard(); } else { const char *tbl = noflags ? "nf" : "ff"; fprintf (stblfile, "{ op_%x_%d_comp_%s, %u, %s }, /* %s */\n", opcode, postfix, tbl, opcode, flags, name); fprintf (headerfile, "extern compop_func op_%x_%d_comp_%s;\n", opcode, postfix, tbl); printf ("/* %s */\n", outopcode (name, opcode)); printf (RETTYPE " REGPARAM2 op_%x_%d_comp_%s(uae_u32 opcode) /* %s */\n{\n", opcode, postfix, tbl, name); com_flush(); } } opcode_next_clev[rp] = next_cpu_level; opcode_last_postfix[rp] = postfix; } static void generate_func (int noflags) { int i, j, rp; const char *tbl = noflags ? "nf" : "ff"; using_prefetch = 0; using_exception_3 = 0; for (i = 0; i < 1; i++) /* We only do one level! */ { cpu_level = NEXT_CPU_LEVEL - i; postfix = i; fprintf (stblfile, "const struct comptbl op_smalltbl_%d_comp_%s[] = {\n", postfix, tbl); /* sam: this is for people with low memory (eg. me :)) */ printf ("\n" "#if !defined(PART_1) && !defined(PART_2) && " "!defined(PART_3) && !defined(PART_4) && " "!defined(PART_5) && !defined(PART_6) && " "!defined(PART_7) && !defined(PART_8)" "\n" "#define PART_1 1\n" "#define PART_2 1\n" "#define PART_3 1\n" "#define PART_4 1\n" "#define PART_5 1\n" "#define PART_6 1\n" "#define PART_7 1\n" "#define PART_8 1\n" "#endif\n\n"); #ifdef UAE printf ("extern void comp_fpp_opp();\n" "extern void comp_fscc_opp();\n" "extern void comp_fbcc_opp();\n\n"); #endif rp = 0; for (j = 1; j <= 8; ++j) { int k = (j * nr_cpuop_funcs) / 8; printf ("#ifdef PART_%d\n", j); for (; rp < k; rp++) generate_one_opcode (rp,noflags); printf ("#endif\n\n"); } fprintf (stblfile, "{ 0, 65536, 0 }};\n"); } } #if (defined(OS_cygwin) || defined(OS_mingw)) && defined(EXTENDED_SIGSEGV) void cygwin_mingw_abort() { #undef abort abort(); } #endif #if defined(FSUAE) && defined (WINDOWS) #include "windows.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) #else int main(void) #endif { init_table68k (); opcode_map = (int *) malloc (sizeof (int) * nr_cpuop_funcs); opcode_last_postfix = (int *) malloc (sizeof (int) * nr_cpuop_funcs); opcode_next_clev = (int *) malloc (sizeof (int) * nr_cpuop_funcs); counts = (unsigned long *) malloc (65536 * sizeof (unsigned long)); read_counts (); /* It would be a lot nicer to put all in one file (we'd also get rid of * cputbl.h that way), but cpuopti can't cope. That could be fixed, but * I don't dare to touch the 68k version. */ headerfile = fopen (GEN_PATH "comptbl.h", "wb"); fprintf (headerfile, "" "extern const struct comptbl op_smalltbl_0_comp_nf[];\n" "extern const struct comptbl op_smalltbl_0_comp_ff[];\n" ""); stblfile = fopen (GEN_PATH "compstbl.cpp", "wb"); if (freopen (GEN_PATH "compemu.cpp", "wb", stdout) == NULL) { abort(); } generate_includes (stdout); generate_includes (stblfile); printf("#include \"" JIT_PATH "compemu.h\"\n"); printf("#include \"" JIT_PATH "flags_x86.h\"\n"); noflags=0; generate_func (noflags); free(opcode_map); free(opcode_last_postfix); free(opcode_next_clev); free(counts); opcode_map = (int *) malloc (sizeof (int) * nr_cpuop_funcs); opcode_last_postfix = (int *) malloc (sizeof (int) * nr_cpuop_funcs); opcode_next_clev = (int *) malloc (sizeof (int) * nr_cpuop_funcs); counts = (unsigned long *) malloc (65536 * sizeof (unsigned long)); read_counts (); noflags=1; generate_func (noflags); printf ("#endif\n"); fprintf (stblfile, "#endif\n"); free(opcode_map); free(opcode_last_postfix); free(opcode_next_clev); free(counts); free (table68k); fclose (stblfile); fclose (headerfile); return 0; } #ifdef UAE void write_log (const TCHAR *format,...) { } #endif aranym-1.1.0/src/uae_cpu/compiler/flags_x86.h0000664000175000017500000000277213454637622017206 0ustar joyjoy/* * compiler/flags_x86.h - Native flags definitions for IA-32 * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * * Adaptation for Basilisk II and improvements, copyright 2000-2002 * Gwenole Beauchesne * * Basilisk II (C) 1997-2002 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NATIVE_FLAGS_X86_H #define NATIVE_FLAGS_X86_H /* Native integer code conditions */ enum { NATIVE_CC_HI = 7, NATIVE_CC_LS = 6, NATIVE_CC_CC = 3, NATIVE_CC_CS = 2, NATIVE_CC_NE = 5, NATIVE_CC_EQ = 4, NATIVE_CC_VC = 1, NATIVE_CC_VS = 0, NATIVE_CC_PL = 9, NATIVE_CC_MI = 8, NATIVE_CC_GE = 13, NATIVE_CC_LT = 12, NATIVE_CC_GT = 15, NATIVE_CC_LE = 14 }; /* FIXME: include/flags_x86.h in UAE had the following values: NATIVE_CC_VC = 11, NATIVE_CC_VS = 10, */ #endif /* NATIVE_FLAGS_X86_H */ aranym-1.1.0/src/uae_cpu/compiler/flags_arm.h0000664000175000017500000000320213454637622017325 0ustar joyjoy/* * compiler/flags_arm.h - Native flags definitions for ARM * * Copyright (c) 2013 Jens Heitmann of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * * Adaptation for Basilisk II and improvements, copyright 2000-2002 * Gwenole Beauchesne * * Basilisk II (C) 1997-2002 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NATIVE_FLAGS_ARM_H #define NATIVE_FLAGS_ARM_H /* Native integer code conditions */ enum { NATIVE_CC_EQ = 0, NATIVE_CC_NE = 1, NATIVE_CC_CS = 2, NATIVE_CC_CC = 3, NATIVE_CC_MI = 4, NATIVE_CC_PL = 5, NATIVE_CC_VS = 6, NATIVE_CC_VC = 7, NATIVE_CC_HI = 8, NATIVE_CC_LS = 9, NATIVE_CC_GE = 10, NATIVE_CC_LT = 11, NATIVE_CC_GT = 12, NATIVE_CC_LE = 13, NATIVE_CC_AL = 14 }; #endif /* NATIVE_FLAGS_ARM_H */ aranym-1.1.0/src/uae_cpu/compiler/compstbla.cpp0000664000175000017500000000021413454637622017711 0ustar joyjoy/* * compstbl.cpp must be compiled twice, once for the generator program * and once for the actual executable */ #include "compstbl.cpp" aranym-1.1.0/src/uae_cpu/compiler/compemu_support.cpp0000664000175000017500000035172713454637622021210 0ustar joyjoy/* * compiler/compemu_support.cpp - Core dynamic translation engine * * Copyright (c) 2001-2009 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * JIT compiler m68k -> IA-32 and AMD64 / ARM * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * Adaptation for Basilisk II and improvements, copyright 2000-2004 Gwenole Beauchesne * Portions related to CPU detection come from linux/arch/i386/kernel/setup.c * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifdef UAE #define writemem_special writemem #define readmem_special readmem #else #if !FIXED_ADDRESSING #error "Only Fixed Addressing is supported with the JIT Compiler" #endif #if defined(X86_ASSEMBLY) && !SAHF_SETO_PROFITABLE #error "Only [LS]AHF scheme to [gs]et flags is supported with the JIT Compiler" #endif /* NOTE: support for AMD64 assumes translation cache and other code * buffers are allocated into a 32-bit address space because (i) B2/JIT * code is not 64-bit clean and (ii) it's faster to resolve branches * that way. */ #if !defined(CPU_i386) && !defined(CPU_x86_64) && !defined(CPU_arm) #error "Only IA-32, X86-64 and ARM v6 targets are supported with the JIT Compiler" #endif #endif #define USE_MATCH 0 /* kludge for Brian, so he can compile under MSVC++ */ #define USE_NORMAL_CALLING_CONVENTION 0 #include "sysconfig.h" #include "sysdeps.h" #ifdef JIT #ifdef UAE #include "options.h" #include "events.h" #include "uae/memory.h" #include "custom.h" #else #include "cpu_emulation.h" #include "main.h" #include "vm_alloc.h" #include "m68k.h" #include "memory-uae.h" #include "readcpu.h" #endif #include "newcpu.h" #include "comptbl.h" #ifdef UAE #include "compemu.h" #ifdef FSUAE #include "codegen_udis86.h" #endif #else #include "compiler/compemu.h" #include "fpu/fpu.h" #include "fpu/flags.h" #include "parameters.h" static void build_comp(void); #endif #include "verify.h" #ifdef UAE #ifdef FSUAE #include "uae/fs.h" #endif #include "uae/log.h" #if defined(__pie__) || defined (__PIE__) #error Position-independent code (PIE) cannot be used with JIT #endif #include "uae/vm.h" #define VM_PAGE_READ UAE_VM_READ #define VM_PAGE_WRITE UAE_VM_WRITE #define VM_PAGE_EXECUTE UAE_VM_EXECUTE #define VM_MAP_FAILED UAE_VM_ALLOC_FAILED #define VM_MAP_DEFAULT 1 #define VM_MAP_32BIT 1 #define vm_protect(address, size, protect) uae_vm_protect(address, size, protect) #define vm_release(address, size) uae_vm_free(address, size) static inline void *vm_acquire(size_t size, int options = VM_MAP_DEFAULT) { assert(options == (VM_MAP_DEFAULT | VM_MAP_32BIT)); return uae_vm_alloc(size, UAE_VM_32BIT, UAE_VM_READ_WRITE); } #define UNUSED(x) #include "uae.h" #include "uae/log.h" #define jit_log(format, ...) \ uae_log("JIT: " format "\n", ##__VA_ARGS__); #define jit_log2(format, ...) #define MEMBaseDiff uae_p32(NATMEM_OFFSET) #ifdef NATMEM_OFFSET #define FIXED_ADDRESSING 1 #endif #define SAHF_SETO_PROFITABLE // %%% BRIAN KING WAS HERE %%% extern bool canbang; #include "compemu_prefs.cpp" #define uint32 uae_u32 #define uint8 uae_u8 static inline int distrust_check(int value) { #ifdef JIT_ALWAYS_DISTRUST return 1; #else int distrust = value; #ifdef FSUAE switch (value) { case 0: distrust = 0; break; case 1: distrust = 1; break; case 2: distrust = ((start_pc & 0xF80000) == 0xF80000); break; case 3: distrust = !have_done_picasso; break; default: abort(); } #endif return distrust; #endif } static inline int distrust_byte(void) { return distrust_check(currprefs.comptrustbyte); } static inline int distrust_word(void) { return distrust_check(currprefs.comptrustword); } static inline int distrust_long(void) { return distrust_check(currprefs.comptrustlong); } static inline int distrust_addr(void) { return distrust_check(currprefs.comptrustnaddr); } #else #define DEBUG 0 #include "debug.h" #define NATMEM_OFFSET MEMBaseDiff #define canbang 1 #define op_illg op_illg_1 #ifdef WINUAE_ARANYM void jit_abort(const char *format, ...) { va_list args; va_start(args, format); ndebug::pdbvprintf(format, args); va_end(args); abort(); } #endif #if DEBUG #define PROFILE_COMPILE_TIME 1 #define PROFILE_UNTRANSLATED_INSNS 1 #endif #endif # include # include # include # include #if defined(CPU_x86_64) && 0 #define RECORD_REGISTER_USAGE 1 #endif #ifdef JIT_DEBUG #undef abort #define abort() do { \ fprintf(stderr, "Abort in file %s at line %d\n", __FILE__, __LINE__); \ compiler_dumpstate(); \ exit(EXIT_FAILURE); \ } while (0) #endif #ifdef RECORD_REGISTER_USAGE static uint64 reg_count[16]; static int reg_count_local[16]; static int reg_count_compare(const void *ap, const void *bp) { const int a = *((int *)ap); const int b = *((int *)bp); return reg_count[b] - reg_count[a]; } #endif #ifdef PROFILE_COMPILE_TIME #include static uae_u32 compile_count = 0; static clock_t compile_time = 0; static clock_t emul_start_time = 0; static clock_t emul_end_time = 0; #endif #ifdef PROFILE_UNTRANSLATED_INSNS static const int untranslated_top_ten = 50; static uae_u32 raw_cputbl_count[65536] = { 0, }; static uae_u16 opcode_nums[65536]; static int untranslated_compfn(const void *e1, const void *e2) { return raw_cputbl_count[*(const uae_u16 *)e1] < raw_cputbl_count[*(const uae_u16 *)e2]; } #endif static compop_func *compfunctbl[65536]; static compop_func *nfcompfunctbl[65536]; #ifdef NOFLAGS_SUPPORT static cpuop_func *nfcpufunctbl[65536]; #endif uae_u8* comp_pc_p; #ifdef UAE /* defined in uae.h */ #else // External variables #endif // gb-- Extra data for Basilisk II/JIT #ifdef JIT_DEBUG #define JITDebug bx_options.jit.jitdebug // Enable runtime disassemblers through mon? #else #define JITDebug false // Don't use JIT debug mode at all #endif #if USE_INLINING #ifdef UAE #define follow_const_jumps (currprefs.comp_constjump != 0) #else static bool follow_const_jumps = true; // Flag: translation through constant jumps #endif #else const bool follow_const_jumps = false; #endif const uae_u32 MIN_CACHE_SIZE = 1024; // Minimal translation cache size (1 MB) static uae_u32 cache_size = 0; // Size of total cache allocated for compiled blocks static uae_u32 current_cache_size = 0; // Cache grows upwards: how much has been consumed already static bool lazy_flush = true; // Flag: lazy translation cache invalidation // Flag: compile FPU instructions ? #ifdef UAE #ifdef USE_JIT_FPU #define avoid_fpu (!currprefs.compfpu) #else #define avoid_fpu (true) #endif #else #ifdef USE_JIT_FPU #define avoid_fpu (!bx_options.jit.jitfpu) #else #define avoid_fpu (true) #endif #endif static bool have_cmov = false; // target has CMOV instructions ? static bool have_rat_stall = true; // target has partial register stalls ? const bool tune_alignment = true; // Tune code alignments for running CPU ? const bool tune_nop_fillers = true; // Tune no-op fillers for architecture static bool setzflg_uses_bsf = false; // setzflg virtual instruction can use native BSF instruction correctly? static int align_loops = 32; // Align the start of loops static int align_jumps = 32; // Align the start of jumps static int optcount[10] = { #ifdef UAE 4, // How often a block has to be executed before it is translated #else 10, // How often a block has to be executed before it is translated #endif 0, // How often to use naive translation 0, 0, 0, 0, -1, -1, -1, -1 }; #ifdef UAE /* FIXME: op_properties is currently in compemu.h */ op_properties prop[65536]; static inline bool is_const_jump(uae_u32 opcode) { return prop[opcode].is_const_jump != 0; } #else struct op_properties { uae_u8 use_flags; uae_u8 set_flags; uae_u8 is_addx; uae_u8 cflow; }; static op_properties prop[65536]; static inline int end_block(uae_u32 opcode) { return (prop[opcode].cflow & fl_end_block); } static inline bool is_const_jump(uae_u32 opcode) { return (prop[opcode].cflow == fl_const_jump); } #if 0 static inline bool may_trap(uae_u32 opcode) { return (prop[opcode].cflow & fl_trap); } #endif #endif static inline unsigned int cft_map (unsigned int f) { #ifdef UAE return f; #else #if !defined(HAVE_GET_WORD_UNSWAPPED) || defined(FULLMMU) return f; #else return ((f >> 8) & 255) | ((f & 255) << 8); #endif #endif } uae_u8* start_pc_p; uae_u32 start_pc; uae_u32 current_block_pc_p; static uintptr current_block_start_target; uae_u32 needed_flags; static uintptr next_pc_p; static uintptr taken_pc_p; static int branch_cc; static int redo_current_block; #ifdef UAE int segvcount=0; #endif static uae_u8* current_compile_p=NULL; static uae_u8* max_compile_start; static uae_u8* compiled_code=NULL; static uae_s32 reg_alloc_run; const int POPALLSPACE_SIZE = 2048; /* That should be enough space */ static uae_u8 *popallspace=NULL; void* pushall_call_handler=NULL; static void* popall_do_nothing=NULL; static void* popall_exec_nostats=NULL; static void* popall_execute_normal=NULL; static void* popall_cache_miss=NULL; static void* popall_recompile_block=NULL; static void* popall_check_checksum=NULL; /* The 68k only ever executes from even addresses. So right now, we * waste half the entries in this array * UPDATE: We now use those entries to store the start of the linked * lists that we maintain for each hash result. */ static cacheline cache_tags[TAGSIZE]; static int cache_enabled=0; static blockinfo* hold_bi[MAX_HOLD_BI]; static blockinfo* active; static blockinfo* dormant; #ifdef NOFLAGS_SUPPORT /* 68040 */ extern const struct cputbl op_smalltbl_0_nf[]; #endif extern const struct comptbl op_smalltbl_0_comp_nf[]; extern const struct comptbl op_smalltbl_0_comp_ff[]; #ifdef NOFLAGS_SUPPORT /* 68020 + 68881 */ extern const struct cputbl op_smalltbl_1_nf[]; /* 68020 */ extern const struct cputbl op_smalltbl_2_nf[]; /* 68010 */ extern const struct cputbl op_smalltbl_3_nf[]; /* 68000 */ extern const struct cputbl op_smalltbl_4_nf[]; /* 68000 slow but compatible. */ extern const struct cputbl op_smalltbl_5_nf[]; #endif #ifdef WINUAE_ARANYM static void flush_icache_hard(int n); static void flush_icache_lazy(int n); static void flush_icache_none(int n); void (*flush_icache)(int n) = flush_icache_none; #endif static bigstate live; static smallstate empty_ss; static smallstate default_ss; static int optlev; static int writereg(int r, int size); static void unlock2(int r); static void setlock(int r); static int readreg_specific(int r, int size, int spec); static int writereg_specific(int r, int size, int spec); static void prepare_for_call_1(void); static void prepare_for_call_2(void); static void align_target(uae_u32 a); static void inline flush_cpu_icache(void *from, void *to); static void inline write_jmp_target(uae_u32 *jmpaddr, cpuop_func* a); static void inline emit_jmp_target(uae_u32 a); uae_u32 m68k_pc_offset; /* Some arithmetic operations can be optimized away if the operands * are known to be constant. But that's only a good idea when the * side effects they would have on the flags are not important. This * variable indicates whether we need the side effects or not */ static uae_u32 needflags=0; /* Flag handling is complicated. * * x86 instructions create flags, which quite often are exactly what we * want. So at times, the "68k" flags are actually in the x86 flags. * * Then again, sometimes we do x86 instructions that clobber the x86 * flags, but don't represent a corresponding m68k instruction. In that * case, we have to save them. * * We used to save them to the stack, but now store them back directly * into the regflags.cznv of the traditional emulation. Thus some odd * names. * * So flags can be in either of two places (used to be three; boy were * things complicated back then!); And either place can contain either * valid flags or invalid trash (and on the stack, there was also the * option of "nothing at all", now gone). A couple of variables keep * track of the respective states. * * To make things worse, we might or might not be interested in the flags. * by default, we are, but a call to dont_care_flags can change that * until the next call to live_flags. If we are not, pretty much whatever * is in the register and/or the native flags is seen as valid. */ static inline blockinfo* get_blockinfo(uae_u32 cl) { return cache_tags[cl+1].bi; } static inline blockinfo* get_blockinfo_addr(void* addr) { blockinfo* bi=get_blockinfo(cacheline(addr)); while (bi) { if (bi->pc_p==addr) return bi; bi=bi->next_same_cl; } return NULL; } #ifdef WINUAE_ARANYM /******************************************************************* * Disassembler support * *******************************************************************/ #define TARGET_M68K 0 #define TARGET_POWERPC 1 #define TARGET_X86 2 #define TARGET_X86_64 3 #define TARGET_ARM 4 #if defined(CPU_i386) #define TARGET_NATIVE TARGET_X86 #endif #if defined(CPU_powerpc) #define TARGET_NATIVE TARGET_POWERPC #endif #if defined(CPU_x86_64) #define TARGET_NATIVE TARGET_X86_64 #endif #if defined(CPU_arm) #define TARGET_NATIVE TARGET_ARM #endif #include "disasm-glue.h" #ifdef JIT_DEBUG static void disasm_block(int disasm_target, const uint8 *start, size_t length) { UNUSED(start); UNUSED(length); switch (disasm_target) { case TARGET_M68K: #if defined(HAVE_DISASM_M68K) { char buf[256]; disasm_info.memory_vma = ((memptr)((uintptr_t)(start) - MEMBaseDiff)); while (length > 0) { int isize = m68k_disasm_to_buf(&disasm_info, buf, 1); bug("%s", buf); if (isize < 0) break; if ((uintptr)isize > length) break; length -= isize; } } #endif break; case TARGET_X86: case TARGET_X86_64: #if defined(HAVE_DISASM_X86) { const uint8 *end = start + length; char buf[256]; while (start < end) { start = x86_disasm(start, buf, 1); bug("%s", buf); } } #endif break; case TARGET_ARM: #if defined(HAVE_DISASM_ARM) { const uint8 *end = start + length; char buf[256]; while (start < end) { start = arm_disasm(start, buf, 1); bug("%s", buf); } } #endif break; } } static inline void disasm_native_block(const uint8 *start, size_t length) { disasm_block(TARGET_NATIVE, start, length); } static inline void disasm_m68k_block(const uint8 *start, size_t length) { disasm_block(TARGET_M68K, start, length); } #endif #endif /******************************************************************* * All sorts of list related functions for all of the lists * *******************************************************************/ static inline void remove_from_cl_list(blockinfo* bi) { uae_u32 cl=cacheline(bi->pc_p); if (bi->prev_same_cl_p) *(bi->prev_same_cl_p)=bi->next_same_cl; if (bi->next_same_cl) bi->next_same_cl->prev_same_cl_p=bi->prev_same_cl_p; if (cache_tags[cl+1].bi) cache_tags[cl].handler=cache_tags[cl+1].bi->handler_to_use; else cache_tags[cl].handler=(cpuop_func*)popall_execute_normal; } static inline void remove_from_list(blockinfo* bi) { if (bi->prev_p) *(bi->prev_p)=bi->next; if (bi->next) bi->next->prev_p=bi->prev_p; } #if 0 static inline void remove_from_lists(blockinfo* bi) { remove_from_list(bi); remove_from_cl_list(bi); } #endif static inline void add_to_cl_list(blockinfo* bi) { uae_u32 cl=cacheline(bi->pc_p); if (cache_tags[cl+1].bi) cache_tags[cl+1].bi->prev_same_cl_p=&(bi->next_same_cl); bi->next_same_cl=cache_tags[cl+1].bi; cache_tags[cl+1].bi=bi; bi->prev_same_cl_p=&(cache_tags[cl+1].bi); cache_tags[cl].handler=bi->handler_to_use; } static inline void raise_in_cl_list(blockinfo* bi) { remove_from_cl_list(bi); add_to_cl_list(bi); } static inline void add_to_active(blockinfo* bi) { if (active) active->prev_p=&(bi->next); bi->next=active; active=bi; bi->prev_p=&active; } static inline void add_to_dormant(blockinfo* bi) { if (dormant) dormant->prev_p=&(bi->next); bi->next=dormant; dormant=bi; bi->prev_p=&dormant; } static inline void remove_dep(dependency* d) { if (d->prev_p) *(d->prev_p)=d->next; if (d->next) d->next->prev_p=d->prev_p; d->prev_p=NULL; d->next=NULL; } /* This block's code is about to be thrown away, so it no longer depends on anything else */ static inline void remove_deps(blockinfo* bi) { remove_dep(&(bi->dep[0])); remove_dep(&(bi->dep[1])); } static inline void adjust_jmpdep(dependency* d, cpuop_func* a) { write_jmp_target(d->jmp_off, a); } /******************************************************************** * Soft flush handling support functions * ********************************************************************/ static inline void set_dhtu(blockinfo* bi, cpuop_func *dh) { jit_log2("bi is %p",bi); if (dh!=bi->direct_handler_to_use) { dependency* x=bi->deplist; jit_log2("bi->deplist=%p",bi->deplist); while (x) { jit_log2("x is %p",x); jit_log2("x->next is %p",x->next); jit_log2("x->prev_p is %p",x->prev_p); if (x->jmp_off) { adjust_jmpdep(x,dh); } x=x->next; } bi->direct_handler_to_use=dh; } } static inline void invalidate_block(blockinfo* bi) { int i; bi->optlevel=0; bi->count=optcount[0]-1; bi->handler=NULL; bi->handler_to_use=(cpuop_func*)popall_execute_normal; bi->direct_handler=NULL; set_dhtu(bi,bi->direct_pen); bi->needed_flags=0xff; bi->status=BI_INVALID; for (i=0;i<2;i++) { bi->dep[i].jmp_off=NULL; bi->dep[i].target=NULL; } remove_deps(bi); } static inline void create_jmpdep(blockinfo* bi, int i, uae_u32* jmpaddr, uae_u32 target) { blockinfo* tbi=get_blockinfo_addr((void*)(uintptr)target); Dif(!tbi) { jit_abort("Could not create jmpdep!"); } bi->dep[i].jmp_off=jmpaddr; bi->dep[i].source=bi; bi->dep[i].target=tbi; bi->dep[i].next=tbi->deplist; if (bi->dep[i].next) bi->dep[i].next->prev_p=&(bi->dep[i].next); bi->dep[i].prev_p=&(tbi->deplist); tbi->deplist=&(bi->dep[i]); } static inline void block_need_recompile(blockinfo * bi) { uae_u32 cl = cacheline(bi->pc_p); set_dhtu(bi, bi->direct_pen); bi->direct_handler = bi->direct_pen; bi->handler_to_use = (cpuop_func *)popall_execute_normal; bi->handler = (cpuop_func *)popall_execute_normal; if (bi == cache_tags[cl + 1].bi) cache_tags[cl].handler = (cpuop_func *)popall_execute_normal; bi->status = BI_NEED_RECOMP; } #if USE_MATCH static inline void mark_callers_recompile(blockinfo * bi) { dependency *x = bi->deplist; while (x) { dependency *next = x->next; /* This disappears when we mark for * recompilation and thus remove the * blocks from the lists */ if (x->jmp_off) { blockinfo *cbi = x->source; Dif(cbi->status == BI_INVALID) { jit_log("invalid block in dependency list"); // FIXME? // abort(); } if (cbi->status == BI_ACTIVE || cbi->status == BI_NEED_CHECK) { block_need_recompile(cbi); mark_callers_recompile(cbi); } else if (cbi->status == BI_COMPILING) { redo_current_block = 1; } else if (cbi->status == BI_NEED_RECOMP) { /* nothing */ } else { jit_log2("Status %d in mark_callers",cbi->status); // FIXME? } } x = next; } } #endif static inline blockinfo* get_blockinfo_addr_new(void* addr, int /* setstate */) { blockinfo* bi=get_blockinfo_addr(addr); int i; if (!bi) { for (i=0;ipc_p=(uae_u8*)addr; invalidate_block(bi); add_to_active(bi); add_to_cl_list(bi); } } } if (!bi) { jit_abort("Looking for blockinfo, can't find free one"); } return bi; } static void prepare_block(blockinfo* bi); /* Managment of blockinfos. A blockinfo struct is allocated whenever a new block has to be compiled. If the list of free blockinfos is empty, we allocate a new pool of blockinfos and link the newly created blockinfos altogether into the list of free blockinfos. Otherwise, we simply pop a structure of the free list. Blockinfo are lazily deallocated, i.e. chained altogether in the list of free blockinfos whenvever a translation cache flush (hard or soft) request occurs. */ template< class T > class LazyBlockAllocator { enum { kPoolSize = 1 + (16384 - sizeof(T) - sizeof(void *)) / sizeof(T) }; struct Pool { T chunk[kPoolSize]; Pool * next; }; Pool * mPools; T * mChunks; public: LazyBlockAllocator() : mPools(0), mChunks(0) { } #ifdef UAE #else ~LazyBlockAllocator(); #endif T * acquire(); void release(T * const); }; #ifdef UAE /* uae_vm_release may do logging, which isn't safe to do when the application * is shutting down. Better to release memory manually with a function call * to a release_all method on shutdown, or even simpler, just let the OS * handle it (we're shutting down anyway). */ #else template< class T > LazyBlockAllocator::~LazyBlockAllocator() { Pool * currentPool = mPools; while (currentPool) { Pool * deadPool = currentPool; currentPool = currentPool->next; vm_release(deadPool, sizeof(Pool)); } } #endif template< class T > T * LazyBlockAllocator::acquire() { if (!mChunks) { // There is no chunk left, allocate a new pool and link the // chunks into the free list Pool * newPool = (Pool *)vm_acquire(sizeof(Pool), VM_MAP_DEFAULT | VM_MAP_32BIT); if (newPool == VM_MAP_FAILED) { jit_abort("Could not allocate block pool!"); } for (T * chunk = &newPool->chunk[0]; chunk < &newPool->chunk[kPoolSize]; chunk++) { chunk->next = mChunks; mChunks = chunk; } newPool->next = mPools; mPools = newPool; } T * chunk = mChunks; mChunks = chunk->next; return chunk; } template< class T > void LazyBlockAllocator::release(T * const chunk) { chunk->next = mChunks; mChunks = chunk; } template< class T > class HardBlockAllocator { public: T * acquire() { T * data = (T *)current_compile_p; current_compile_p += sizeof(T); return data; } void release(T * const ) { // Deallocated on invalidation } }; #if USE_SEPARATE_BIA static LazyBlockAllocator BlockInfoAllocator; static LazyBlockAllocator ChecksumInfoAllocator; #else static HardBlockAllocator BlockInfoAllocator; static HardBlockAllocator ChecksumInfoAllocator; #endif static inline checksum_info *alloc_checksum_info(void) { checksum_info *csi = ChecksumInfoAllocator.acquire(); csi->next = NULL; return csi; } static inline void free_checksum_info(checksum_info *csi) { csi->next = NULL; ChecksumInfoAllocator.release(csi); } static inline void free_checksum_info_chain(checksum_info *csi) { while (csi != NULL) { checksum_info *csi2 = csi->next; free_checksum_info(csi); csi = csi2; } } static inline blockinfo *alloc_blockinfo(void) { blockinfo *bi = BlockInfoAllocator.acquire(); #if USE_CHECKSUM_INFO bi->csi = NULL; #endif return bi; } static inline void free_blockinfo(blockinfo *bi) { #if USE_CHECKSUM_INFO free_checksum_info_chain(bi->csi); bi->csi = NULL; #endif BlockInfoAllocator.release(bi); } static inline void alloc_blockinfos(void) { int i; blockinfo* bi; for (i=0;i>24)&0xff) | ((v>>8)&0xff00) | ((v<<8)&0xff0000) | ((v<<24)&0xff000000); #endif } void set_target(uae_u8* t) { target=t; } static inline uae_u8* get_target_noopt(void) { return target; } inline uae_u8* get_target(void) { return get_target_noopt(); } /******************************************************************** * New version of data buffer: interleave data and code * ********************************************************************/ #if defined(USE_DATA_BUFFER) #define DATA_BUFFER_SIZE 1024 // Enlarge POPALLSPACE_SIZE if this value is greater than 768 #define DATA_BUFFER_MAXOFFSET 4096 - 32 // max range between emit of data and use of data static uae_u8* data_writepos = 0; static uae_u8* data_endpos = 0; #if DEBUG static long data_wasted = 0; #endif static inline void compemu_raw_branch(IMM d); static inline void data_check_end(long n, long codesize) { if(data_writepos + n > data_endpos || get_target_noopt() + codesize - data_writepos > DATA_BUFFER_MAXOFFSET) { // Start new buffer #if DEBUG if(data_writepos < data_endpos) data_wasted += data_endpos - data_writepos; #endif compemu_raw_branch(DATA_BUFFER_SIZE); data_writepos = get_target_noopt(); data_endpos = data_writepos + DATA_BUFFER_SIZE; set_target(get_target_noopt() + DATA_BUFFER_SIZE); } } static inline long data_word_offs(uae_u16 x) { data_check_end(4, 4); #ifdef WORDS_BIGENDIAN *((uae_u16*)data_writepos)=x; data_writepos += 2; *((uae_u16*)data_writepos)=0; data_writepos += 2; #else *((uae_u32*)data_writepos)=x; data_writepos += 4; #endif return (long)data_writepos - (long)get_target_noopt() - 12; } static inline long data_long(uae_u32 x, long codesize) { data_check_end(4, codesize); *((uae_u32*)data_writepos)=x; data_writepos += 4; return (long)data_writepos - 4; } static inline long data_long_offs(uae_u32 x) { data_check_end(4, 4); *((uae_u32*)data_writepos)=x; data_writepos += 4; return (long)data_writepos - (long)get_target_noopt() - 12; } static inline long get_data_offset(long t) { return t - (long)get_target_noopt() - 8; } static inline void reset_data_buffer(void) { data_writepos = 0; data_endpos = 0; } #endif /******************************************************************** * Getting the information about the target CPU * ********************************************************************/ #if defined(CPU_arm) #include "codegen_arm.cpp" #endif #if defined(CPU_i386) || defined(CPU_x86_64) #include "codegen_x86.cpp" #endif /******************************************************************** * Flags status handling. EMIT TIME! * ********************************************************************/ static void bt_l_ri_noclobber(RR4 r, IMM i); static void make_flags_live_internal(void) { if (live.flags_in_flags==VALID) return; Dif (live.flags_on_stack==TRASH) { jit_abort("Want flags, got something on stack, but it is TRASH"); } if (live.flags_on_stack==VALID) { int tmp; tmp=readreg_specific(FLAGTMP,4,FLAG_NREG2); raw_reg_to_flags(tmp); unlock2(tmp); live.flags_in_flags=VALID; return; } jit_abort("Huh? live.flags_in_flags=%d, live.flags_on_stack=%d, but need to make live", live.flags_in_flags,live.flags_on_stack); } static void flags_to_stack(void) { if (live.flags_on_stack==VALID) return; if (!live.flags_are_important) { live.flags_on_stack=VALID; return; } Dif (live.flags_in_flags!=VALID) jit_abort("flags_to_stack != VALID"); else { int tmp; tmp=writereg_specific(FLAGTMP,4,FLAG_NREG1); raw_flags_to_reg(tmp); unlock2(tmp); } live.flags_on_stack=VALID; } static inline void clobber_flags(void) { if (live.flags_in_flags==VALID && live.flags_on_stack!=VALID) flags_to_stack(); live.flags_in_flags=TRASH; } /* Prepare for leaving the compiled stuff */ static inline void flush_flags(void) { flags_to_stack(); return; } int touchcnt; /******************************************************************** * Partial register flushing for optimized calls * ********************************************************************/ struct regusage { uae_u16 rmask; uae_u16 wmask; }; #if 0 static inline void ru_set(uae_u16 *mask, int reg) { #if USE_OPTIMIZED_CALLS *mask |= 1 << reg; #else UNUSED(mask); UNUSED(reg); #endif } static inline bool ru_get(const uae_u16 *mask, int reg) { #if USE_OPTIMIZED_CALLS return (*mask & (1 << reg)); #else UNUSED(mask); UNUSED(reg); /* Default: instruction reads & write to register */ return true; #endif } static inline void ru_set_read(regusage *ru, int reg) { ru_set(&ru->rmask, reg); } static inline void ru_set_write(regusage *ru, int reg) { ru_set(&ru->wmask, reg); } static inline bool ru_read_p(const regusage *ru, int reg) { return ru_get(&ru->rmask, reg); } static inline bool ru_write_p(const regusage *ru, int reg) { return ru_get(&ru->wmask, reg); } static void ru_fill_ea(regusage *ru, int reg, amodes mode, wordsizes size, int write_mode) { switch (mode) { case Areg: reg += 8; /* fall through */ case Dreg: ru_set(write_mode ? &ru->wmask : &ru->rmask, reg); break; case Ad16: /* skip displacment */ m68k_pc_offset += 2; case Aind: case Aipi: case Apdi: ru_set_read(ru, reg+8); break; case Ad8r: ru_set_read(ru, reg+8); /* fall through */ case PC8r: { uae_u16 dp = comp_get_iword((m68k_pc_offset+=2)-2); reg = (dp >> 12) & 15; ru_set_read(ru, reg); if (dp & 0x100) m68k_pc_offset += (((dp & 0x30) >> 3) & 7) + ((dp & 3) * 2); break; } case PC16: case absw: case imm0: case imm1: m68k_pc_offset += 2; break; case absl: case imm2: m68k_pc_offset += 4; break; case immi: m68k_pc_offset += (size == sz_long) ? 4 : 2; break; } } /* TODO: split into a static initialization part and a dynamic one (instructions depending on extension words) */ static void ru_fill(regusage *ru, uae_u32 opcode) { m68k_pc_offset += 2; /* Default: no register is used or written to */ ru->rmask = 0; ru->wmask = 0; uae_u32 real_opcode = cft_map(opcode); struct instr *dp = &table68k[real_opcode]; bool rw_dest = true; bool handled = false; /* Handle some instructions specifically */ uae_u16 ext; switch (dp->mnemo) { case i_BFCHG: case i_BFCLR: case i_BFEXTS: case i_BFEXTU: case i_BFFFO: case i_BFINS: case i_BFSET: case i_BFTST: ext = comp_get_iword((m68k_pc_offset+=2)-2); if (ext & 0x800) ru_set_read(ru, (ext >> 6) & 7); if (ext & 0x020) ru_set_read(ru, ext & 7); ru_fill_ea(ru, dp->dreg, (amodes)dp->dmode, (wordsizes)dp->size, 1); if (dp->dmode == Dreg) ru_set_read(ru, dp->dreg); switch (dp->mnemo) { case i_BFEXTS: case i_BFEXTU: case i_BFFFO: ru_set_write(ru, (ext >> 12) & 7); break; case i_BFINS: ru_set_read(ru, (ext >> 12) & 7); /* fall through */ case i_BFCHG: case i_BFCLR: case i_BSET: if (dp->dmode == Dreg) ru_set_write(ru, dp->dreg); break; } handled = true; rw_dest = false; break; case i_BTST: rw_dest = false; break; case i_CAS: { ext = comp_get_iword((m68k_pc_offset+=2)-2); int Du = ext & 7; ru_set_read(ru, Du); int Dc = (ext >> 6) & 7; ru_set_read(ru, Dc); ru_set_write(ru, Dc); break; } case i_CAS2: { int Dc1, Dc2, Du1, Du2, Rn1, Rn2; ext = comp_get_iword((m68k_pc_offset+=2)-2); Rn1 = (ext >> 12) & 15; Du1 = (ext >> 6) & 7; Dc1 = ext & 7; ru_set_read(ru, Rn1); ru_set_read(ru, Du1); ru_set_read(ru, Dc1); ru_set_write(ru, Dc1); ext = comp_get_iword((m68k_pc_offset+=2)-2); Rn2 = (ext >> 12) & 15; Du2 = (ext >> 6) & 7; Dc2 = ext & 7; ru_set_read(ru, Rn2); ru_set_read(ru, Du2); ru_set_write(ru, Dc2); break; } case i_DIVL: case i_MULL: m68k_pc_offset += 2; break; case i_LEA: case i_MOVE: case i_MOVEA: case i_MOVE16: rw_dest = false; break; case i_PACK: case i_UNPK: rw_dest = false; m68k_pc_offset += 2; break; case i_TRAPcc: m68k_pc_offset += (dp->size == sz_long) ? 4 : 2; break; case i_RTR: /* do nothing, just for coverage debugging */ break; /* TODO: handle EXG instruction */ } /* Handle A-Traps better */ if ((real_opcode & 0xf000) == 0xa000) { handled = true; } /* Handle EmulOps better */ if ((real_opcode & 0xff00) == 0x7100) { handled = true; ru->rmask = 0xffff; ru->wmask = 0; } if (dp->suse && !handled) ru_fill_ea(ru, dp->sreg, (amodes)dp->smode, (wordsizes)dp->size, 0); if (dp->duse && !handled) ru_fill_ea(ru, dp->dreg, (amodes)dp->dmode, (wordsizes)dp->size, 1); if (rw_dest) ru->rmask |= ru->wmask; handled = handled || dp->suse || dp->duse; /* Mark all registers as used/written if the instruction may trap */ if (may_trap(opcode)) { handled = true; ru->rmask = 0xffff; ru->wmask = 0xffff; } if (!handled) { jit_abort("ru_fill: %04x = { %04x, %04x }", real_opcode, ru->rmask, ru->wmask); } } #endif /******************************************************************** * register allocation per block logging * ********************************************************************/ static uae_s8 vstate[VREGS]; static uae_s8 vwritten[VREGS]; static uae_s8 nstate[N_REGS]; #define L_UNKNOWN -127 #define L_UNAVAIL -1 #define L_NEEDED -2 #define L_UNNEEDED -3 #if USE_MATCH static inline void big_to_small_state(bigstate * /* b */, smallstate * s) { int i; for (i = 0; i < VREGS; i++) s->virt[i] = vstate[i]; for (i = 0; i < N_REGS; i++) s->nat[i] = nstate[i]; } static inline int callers_need_recompile(bigstate * /* b */, smallstate * s) { int i; int reverse = 0; for (i = 0; i < VREGS; i++) { if (vstate[i] != L_UNNEEDED && s->virt[i] == L_UNNEEDED) return 1; if (vstate[i] == L_UNNEEDED && s->virt[i] != L_UNNEEDED) reverse++; } for (i = 0; i < N_REGS; i++) { if (nstate[i] >= 0 && nstate[i] != s->nat[i]) return 1; if (nstate[i] < 0 && s->nat[i] >= 0) reverse++; } if (reverse >= 2 && USE_MATCH) return 1; /* In this case, it might be worth recompiling the * callers */ return 0; } #endif static inline void log_startblock(void) { int i; for (i = 0; i < VREGS; i++) { vstate[i] = L_UNKNOWN; vwritten[i] = 0; } for (i = 0; i < N_REGS; i++) nstate[i] = L_UNKNOWN; } /* Using an n-reg for a temp variable */ static inline void log_isused(int n) { if (nstate[n] == L_UNKNOWN) nstate[n] = L_UNAVAIL; } static inline void log_visused(int r) { if (vstate[r] == L_UNKNOWN) vstate[r] = L_NEEDED; } static inline void do_load_reg(int n, int r) { if (r == FLAGTMP) raw_load_flagreg(n, r); else if (r == FLAGX) raw_load_flagx(n, r); else compemu_raw_mov_l_rm(n, (uintptr) live.state[r].mem); } #if 0 static inline void check_load_reg(int n, int r) { compemu_raw_mov_l_rm(n, (uintptr) live.state[r].mem); } #endif static inline void log_vwrite(int r) { vwritten[r] = 1; } /* Using an n-reg to hold a v-reg */ static inline void log_isreg(int n, int r) { if (nstate[n] == L_UNKNOWN && r < 16 && !vwritten[r] && USE_MATCH) nstate[n] = r; else { do_load_reg(n, r); if (nstate[n] == L_UNKNOWN) nstate[n] = L_UNAVAIL; } if (vstate[r] == L_UNKNOWN) vstate[r] = L_NEEDED; } static inline void log_clobberreg(int r) { if (vstate[r] == L_UNKNOWN) vstate[r] = L_UNNEEDED; } /* This ends all possibility of clever register allocation */ static inline void log_flush(void) { int i; for (i = 0; i < VREGS; i++) if (vstate[i] == L_UNKNOWN) vstate[i] = L_NEEDED; for (i = 0; i < N_REGS; i++) if (nstate[i] == L_UNKNOWN) nstate[i] = L_UNAVAIL; } static inline void log_dump(void) { int i; return; jit_log("----------------------"); for (i = 0; i < N_REGS; i++) { switch (nstate[i]) { case L_UNKNOWN: jit_log("Nat %d : UNKNOWN", i); break; case L_UNAVAIL: jit_log("Nat %d : UNAVAIL", i); break; default: jit_log("Nat %d : %d", i, nstate[i]); break; } } for (i = 0; i < VREGS; i++) { if (vstate[i] == L_UNNEEDED) { jit_log("Virt %d: UNNEEDED", i); } } } /******************************************************************** * register status handling. EMIT TIME! * ********************************************************************/ static inline void set_status(int r, int status) { if (status == ISCONST) log_clobberreg(r); live.state[r].status=status; } static inline int isinreg(int r) { return live.state[r].status==CLEAN || live.state[r].status==DIRTY; } static inline void adjust_nreg(int r, uae_u32 val) { if (!val) return; compemu_raw_lea_l_brr(r,r,val); } static void tomem(int r) { int rr=live.state[r].realreg; if (isinreg(r)) { if (live.state[r].val && live.nat[rr].nholds==1 && !live.nat[rr].locked) { jit_log2("RemovingA offset %x from reg %d (%d) at %p", live.state[r].val,r,rr,target); adjust_nreg(rr,live.state[r].val); live.state[r].val=0; live.state[r].dirtysize=4; set_status(r,DIRTY); } } if (live.state[r].status==DIRTY) { switch (live.state[r].dirtysize) { case 1: compemu_raw_mov_b_mr((uintptr)live.state[r].mem,rr); break; case 2: compemu_raw_mov_w_mr((uintptr)live.state[r].mem,rr); break; case 4: compemu_raw_mov_l_mr((uintptr)live.state[r].mem,rr); break; default: abort(); } log_vwrite(r); set_status(r,CLEAN); live.state[r].dirtysize=0; } } static inline int isconst(int r) { return live.state[r].status==ISCONST; } int is_const(int r) { return isconst(r); } static inline void writeback_const(int r) { if (!isconst(r)) return; Dif (live.state[r].needflush==NF_HANDLER) { jit_abort("Trying to write back constant NF_HANDLER!"); } compemu_raw_mov_l_mi((uintptr)live.state[r].mem,live.state[r].val); log_vwrite(r); live.state[r].val=0; set_status(r,INMEM); } static inline void tomem_c(int r) { if (isconst(r)) { writeback_const(r); } else tomem(r); } static void evict(int r) { int rr; if (!isinreg(r)) return; tomem(r); rr=live.state[r].realreg; Dif (live.nat[rr].locked && live.nat[rr].nholds==1) { jit_abort("register %d in nreg %d is locked!",r,live.state[r].realreg); } live.nat[rr].nholds--; if (live.nat[rr].nholds!=live.state[r].realind) { /* Was not last */ int topreg=live.nat[rr].holds[live.nat[rr].nholds]; int thisind=live.state[r].realind; live.nat[rr].holds[thisind]=topreg; live.state[topreg].realind=thisind; } live.state[r].realreg=-1; set_status(r,INMEM); } static inline void free_nreg(int r) { int i=live.nat[r].nholds; while (i) { int vr; --i; vr=live.nat[r].holds[i]; evict(vr); } Dif (live.nat[r].nholds!=0) { jit_abort("Failed to free nreg %d, nholds is %d",r,live.nat[r].nholds); } } /* Use with care! */ static inline void isclean(int r) { if (!isinreg(r)) return; live.state[r].validsize=4; live.state[r].dirtysize=0; live.state[r].val=0; set_status(r,CLEAN); } static inline void disassociate(int r) { isclean(r); evict(r); } static inline void set_const(int r, uae_u32 val) { disassociate(r); live.state[r].val=val; set_status(r,ISCONST); } static inline uae_u32 get_offset(int r) { return live.state[r].val; } static int alloc_reg_hinted(int r, int size, int willclobber, int hint) { int bestreg; uae_s32 when; int i; uae_s32 badness=0; /* to shut up gcc */ bestreg=-1; when=2000000000; /* XXX use a regalloc_order table? */ for (i=0;i0) { free_nreg(bestreg); } if (isinreg(r)) { int rr=live.state[r].realreg; /* This will happen if we read a partially dirty register at a bigger size */ Dif (willclobber || live.state[r].validsize>=size) jit_abort("willclobber || live.state[r].validsize>=size"); Dif (live.nat[rr].nholds!=1) jit_abort("live.nat[rr].nholds!=1"); if (size==4 && live.state[r].validsize==2) { log_isused(bestreg); log_visused(r); compemu_raw_mov_l_rm(bestreg,(uintptr)live.state[r].mem); compemu_raw_bswap_32(bestreg); compemu_raw_zero_extend_16_rr(rr,rr); compemu_raw_zero_extend_16_rr(bestreg,bestreg); compemu_raw_bswap_32(bestreg); compemu_raw_lea_l_rr_indexed(rr, rr, bestreg, 1); live.state[r].validsize=4; live.nat[rr].touched=touchcnt++; return rr; } if (live.state[r].validsize==1) { /* Nothing yet */ } evict(r); } if (!willclobber) { if (live.state[r].status!=UNDEF) { if (isconst(r)) { compemu_raw_mov_l_ri(bestreg,live.state[r].val); live.state[r].val=0; live.state[r].dirtysize=4; set_status(r,DIRTY); log_isused(bestreg); } else { log_isreg(bestreg, r); /* This will also load it! */ live.state[r].dirtysize=0; set_status(r,CLEAN); } } else { live.state[r].val=0; live.state[r].dirtysize=0; set_status(r,CLEAN); log_isused(bestreg); } live.state[r].validsize=4; } else { /* this is the easiest way, but not optimal. FIXME! */ /* Now it's trickier, but hopefully still OK */ if (!isconst(r) || size==4) { live.state[r].validsize=size; live.state[r].dirtysize=size; live.state[r].val=0; set_status(r,DIRTY); if (size == 4) { log_clobberreg(r); log_isused(bestreg); } else { log_visused(r); log_isused(bestreg); } } else { if (live.state[r].status!=UNDEF) compemu_raw_mov_l_ri(bestreg,live.state[r].val); live.state[r].val=0; live.state[r].validsize=4; live.state[r].dirtysize=4; set_status(r,DIRTY); log_isused(bestreg); } } live.state[r].realreg=bestreg; live.state[r].realind=live.nat[bestreg].nholds; live.nat[bestreg].touched=touchcnt++; live.nat[bestreg].holds[live.nat[bestreg].nholds]=r; live.nat[bestreg].nholds++; return bestreg; } /* static int alloc_reg(int r, int size, int willclobber) { return alloc_reg_hinted(r,size,willclobber,-1); } */ static void unlock2(int r) { Dif (!live.nat[r].locked) jit_abort("unlock2 %d not locked", r); live.nat[r].locked--; } static void setlock(int r) { live.nat[r].locked++; } static void mov_nregs(int d, int s) { int nd=live.nat[d].nholds; int i; if (s==d) return; if (nd>0) free_nreg(d); log_isused(d); compemu_raw_mov_l_rr(d,s); for (i=0;i=size) { n=live.state[r].realreg; switch(size) { case 1: if (live.nat[n].canbyte || spec>=0) { answer=n; } break; case 2: if (live.nat[n].canword || spec>=0) { answer=n; } break; case 4: answer=n; break; default: abort(); } if (answer<0) evict(r); } /* either the value was in memory to start with, or it was evicted and is in memory now */ if (answer<0) { answer=alloc_reg_hinted(r,spec>=0?4:size,0,spec); } if (spec>=0 && spec!=answer) { /* Too bad */ mov_nregs(spec,answer); answer=spec; } live.nat[answer].locked++; live.nat[answer].touched=touchcnt++; return answer; } static int readreg(int r, int size) { return readreg_general(r,size,-1,0); } static int readreg_specific(int r, int size, int spec) { return readreg_general(r,size,spec,0); } static int readreg_offset(int r, int size) { return readreg_general(r,size,-1,1); } /* writereg_general(r, size, spec) * * INPUT * - r : mid-layer register * - size : requested size (1/2/4) * - spec : -1 if find or make a register free, otherwise specifies * the physical register to use in any case * * OUTPUT * - hard (physical, x86 here) register allocated to virtual register r */ static inline int writereg_general(int r, int size, int spec) { int n; int answer=-1; record_register(r); if (size<4) { remove_offset(r,spec); } make_exclusive(r,size,spec); if (isinreg(r)) { int nvsize=size>live.state[r].validsize?size:live.state[r].validsize; int ndsize=size>live.state[r].dirtysize?size:live.state[r].dirtysize; n=live.state[r].realreg; Dif (live.nat[n].nholds!=1) jit_abort("live.nat[%d].nholds!=1", n); switch(size) { case 1: if (live.nat[n].canbyte || spec>=0) { live.state[r].dirtysize=ndsize; live.state[r].validsize=nvsize; answer=n; } break; case 2: if (live.nat[n].canword || spec>=0) { live.state[r].dirtysize=ndsize; live.state[r].validsize=nvsize; answer=n; } break; case 4: live.state[r].dirtysize=ndsize; live.state[r].validsize=nvsize; answer=n; break; default: abort(); } if (answer<0) evict(r); } /* either the value was in memory to start with, or it was evicted and is in memory now */ if (answer<0) { answer=alloc_reg_hinted(r,size,1,spec); } if (spec>=0 && spec!=answer) { mov_nregs(spec,answer); answer=spec; } if (live.state[r].status==UNDEF) live.state[r].validsize=4; live.state[r].dirtysize=size>live.state[r].dirtysize?size:live.state[r].dirtysize; live.state[r].validsize=size>live.state[r].validsize?size:live.state[r].validsize; live.nat[answer].locked++; live.nat[answer].touched=touchcnt++; if (size==4) { live.state[r].val=0; } else { Dif (live.state[r].val) { jit_abort("Problem with val"); } } set_status(r,DIRTY); return answer; } static int writereg(int r, int size) { return writereg_general(r,size,-1); } static int writereg_specific(int r, int size, int spec) { return writereg_general(r,size,spec); } static inline int rmw_general(int r, int wsize, int rsize, int spec) { int n; int answer=-1; record_register(r); if (live.state[r].status==UNDEF) { jit_log("WARNING: Unexpected read of undefined register %d",r); } remove_offset(r,spec); make_exclusive(r,0,spec); Dif (wsize=rsize) { n=live.state[r].realreg; Dif (live.nat[n].nholds!=1) jit_abort("live.nat[%d].nholds!=1", n); switch(rsize) { case 1: if (live.nat[n].canbyte || spec>=0) { answer=n; } break; case 2: if (live.nat[n].canword || spec>=0) { answer=n; } break; case 4: answer=n; break; default: abort(); } if (answer<0) evict(r); } /* either the value was in memory to start with, or it was evicted and is in memory now */ if (answer<0) { answer=alloc_reg_hinted(r,spec>=0?4:rsize,0,spec); } if (spec>=0 && spec!=answer) { /* Too bad */ mov_nregs(spec,answer); answer=spec; } if (wsize>live.state[r].dirtysize) live.state[r].dirtysize=wsize; if (wsize>live.state[r].validsize) live.state[r].validsize=wsize; set_status(r,DIRTY); live.nat[answer].locked++; live.nat[answer].touched=touchcnt++; Dif (live.state[r].val) { jit_abort("Problem with val(rmw)"); } return answer; } static int rmw(int r, int wsize, int rsize) { return rmw_general(r,wsize,rsize,-1); } static int rmw_specific(int r, int wsize, int rsize, int spec) { return rmw_general(r,wsize,rsize,spec); } /* needed for restoring the carry flag on non-P6 cores */ static void bt_l_ri_noclobber(RR4 r, IMM i) { int size=4; if (i<16) size=2; r=readreg(r,size); compemu_raw_bt_l_ri(r,i); unlock2(r); } /******************************************************************** * FPU register status handling. EMIT TIME! * ********************************************************************/ static void f_tomem(int r) { if (live.fate[r].status==DIRTY) { #if defined(USE_LONG_DOUBLE) raw_fmov_ext_mr((uintptr)live.fate[r].mem,live.fate[r].realreg); #else raw_fmov_mr((uintptr)live.fate[r].mem,live.fate[r].realreg); #endif live.fate[r].status=CLEAN; } } static void f_tomem_drop(int r) { if (live.fate[r].status==DIRTY) { #if defined(USE_LONG_DOUBLE) raw_fmov_ext_mr_drop((uintptr)live.fate[r].mem,live.fate[r].realreg); #else raw_fmov_mr_drop((uintptr)live.fate[r].mem,live.fate[r].realreg); #endif live.fate[r].status=INMEM; } } static inline int f_isinreg(int r) { return live.fate[r].status==CLEAN || live.fate[r].status==DIRTY; } static void f_evict(int r) { int rr; if (!f_isinreg(r)) return; rr=live.fate[r].realreg; if (live.fat[rr].nholds==1) f_tomem_drop(r); else f_tomem(r); Dif (live.fat[rr].locked && live.fat[rr].nholds==1) { jit_abort("FPU register %d in nreg %d is locked!",r,live.fate[r].realreg); } live.fat[rr].nholds--; if (live.fat[rr].nholds!=live.fate[r].realind) { /* Was not last */ int topreg=live.fat[rr].holds[live.fat[rr].nholds]; int thisind=live.fate[r].realind; live.fat[rr].holds[thisind]=topreg; live.fate[topreg].realind=thisind; } live.fate[r].status=INMEM; live.fate[r].realreg=-1; } static inline void f_free_nreg(int r) { int i=live.fat[r].nholds; while (i) { int vr; --i; vr=live.fat[r].holds[i]; f_evict(vr); } Dif (live.fat[r].nholds!=0) { jit_abort("Failed to free nreg %d, nholds is %d",r,live.fat[r].nholds); } } /* Use with care! */ static inline void f_isclean(int r) { if (!f_isinreg(r)) return; live.fate[r].status=CLEAN; } static inline void f_disassociate(int r) { f_isclean(r); f_evict(r); } static int f_alloc_reg(int r, int willclobber) { int bestreg; uae_s32 when; int i; uae_s32 badness; bestreg=-1; when=2000000000; for (i=N_FREGS;i--;) { badness=live.fat[i].touched; if (live.fat[i].nholds==0) badness=0; if (!live.fat[i].locked && badness0) { f_free_nreg(bestreg); } if (f_isinreg(r)) { f_evict(r); } if (!willclobber) { if (live.fate[r].status!=UNDEF) { #if defined(USE_LONG_DOUBLE) raw_fmov_ext_rm(bestreg,(uintptr)live.fate[r].mem); #else raw_fmov_rm(bestreg,(uintptr)live.fate[r].mem); #endif } live.fate[r].status=CLEAN; } else { live.fate[r].status=DIRTY; } live.fate[r].realreg=bestreg; live.fate[r].realind=live.fat[bestreg].nholds; live.fat[bestreg].touched=touchcnt++; live.fat[bestreg].holds[live.fat[bestreg].nholds]=r; live.fat[bestreg].nholds++; return bestreg; } static void f_unlock(int r) { Dif (!live.fat[r].locked) jit_abort ("unlock %d", r); live.fat[r].locked--; } static void f_setlock(int r) { live.fat[r].locked++; } static inline int f_readreg(int r) { int n; int answer=-1; if (f_isinreg(r)) { n=live.fate[r].realreg; answer=n; } /* either the value was in memory to start with, or it was evicted and is in memory now */ if (answer<0) answer=f_alloc_reg(r,0); live.fat[answer].locked++; live.fat[answer].touched=touchcnt++; return answer; } static inline void f_make_exclusive(int r, int clobber) { freg_status oldstate; int rr=live.fate[r].realreg; int nr; int nind; int ndirt=0; int i; if (!f_isinreg(r)) return; if (live.fat[rr].nholds==1) return; for (i=0;i : enable runtime disassemblers : %s", JITDebug ? "yes" : "no"); jit_log(" : compile FPU instructions : %s", !avoid_fpu ? "yes" : "no"); // Get size of the translation cache (in KB) cache_size = bx_options.jit.jitcachesize; jit_log(" : requested translation cache size : %d KB", cache_size); setzflg_uses_bsf = target_check_bsf(); jit_log(" : target processor has CMOV instructions : %s", have_cmov ? "yes" : "no"); jit_log(" : target processor can suffer from partial register stalls : %s", have_rat_stall ? "yes" : "no"); jit_log(" : alignment for loops, jumps are %d, %d", align_loops, align_jumps); #if defined(CPU_i386) || defined(CPU_x86_64) jit_log(" : target processor has SSE2 instructions : %s", cpuinfo.x86_has_xmm2 ? "yes" : "no"); jit_log(" : cache linesize is %lu", (unsigned long)cpuinfo.x86_clflush_size); #endif // Translation cache flush mechanism lazy_flush = (bx_options.jit.jitlazyflush == 0) ? false : true; jit_log(" : lazy translation cache invalidation : %s", str_on_off(lazy_flush)); flush_icache = lazy_flush ? flush_icache_lazy : flush_icache_hard; // Compiler features jit_log(" : register aliasing : %s", str_on_off(1)); jit_log(" : FP register aliasing : %s", str_on_off(USE_F_ALIAS)); jit_log(" : lazy constant offsetting : %s", str_on_off(USE_OFFSET)); #if USE_INLINING follow_const_jumps = bx_options.jit.jitinline; #endif jit_log(" : block inlining : %s", str_on_off(follow_const_jumps)); jit_log(" : separate blockinfo allocation : %s", str_on_off(USE_SEPARATE_BIA)); // Build compiler tables init_table68k(); build_comp(); #endif initialized = true; #ifdef PROFILE_UNTRANSLATED_INSNS jit_log(" : gather statistics on untranslated insns count"); #endif #ifdef PROFILE_COMPILE_TIME jit_log(" : gather statistics on translation time"); emul_start_time = clock(); #endif } #ifdef UAE static #endif void compiler_exit(void) { #ifdef PROFILE_COMPILE_TIME emul_end_time = clock(); #endif #ifdef UAE #else #if DEBUG #if defined(USE_DATA_BUFFER) jit_log("data_wasted = %ld bytes", data_wasted); #endif #endif // Deallocate translation cache if (compiled_code) { vm_release(compiled_code, cache_size * 1024); compiled_code = 0; } // Deallocate popallspace if (popallspace) { vm_release(popallspace, POPALLSPACE_SIZE); popallspace = 0; } #endif #ifdef PROFILE_COMPILE_TIME jit_log("### Compile Block statistics"); jit_log("Number of calls to compile_block : %d", compile_count); uae_u32 emul_time = emul_end_time - emul_start_time; jit_log("Total emulation time : %.1f sec", double(emul_time)/double(CLOCKS_PER_SEC)); jit_log("Total compilation time : %.1f sec (%.1f%%)", double(compile_time)/double(CLOCKS_PER_SEC), 100.0*double(compile_time)/double(emul_time)); #endif #ifdef PROFILE_UNTRANSLATED_INSNS uae_u64 untranslated_count = 0; for (int i = 0; i < 65536; i++) { opcode_nums[i] = i; untranslated_count += raw_cputbl_count[i]; } bug("Sorting out untranslated instructions count..."); qsort(opcode_nums, 65536, sizeof(uae_u16), untranslated_compfn); jit_log("Rank Opc Count Name"); for (int i = 0; i < untranslated_top_ten; i++) { uae_u32 count = raw_cputbl_count[opcode_nums[i]]; struct instr *dp; struct mnemolookup *lookup; if (!count) break; dp = table68k + opcode_nums[i]; for (lookup = lookuptab; lookup->mnemo != (instrmnem)dp->mnemo; lookup++) ; bug("%03d: %04x %10u %s", i, opcode_nums[i], count, lookup->name); } #endif #ifdef RECORD_REGISTER_USAGE int reg_count_ids[16]; uint64 tot_reg_count = 0; for (int i = 0; i < 16; i++) { reg_count_ids[i] = i; tot_reg_count += reg_count[i]; } qsort(reg_count_ids, 16, sizeof(int), reg_count_compare); uint64 cum_reg_count = 0; for (int i = 0; i < 16; i++) { int r = reg_count_ids[i]; cum_reg_count += reg_count[r]; jit_log("%c%d : %16ld %2.1f%% [%2.1f]", r < 8 ? 'D' : 'A', r % 8, reg_count[r], 100.0*double(reg_count[r])/double(tot_reg_count), 100.0*double(cum_reg_count)/double(tot_reg_count)); } #endif exit_table68k(); } #ifdef UAE #else bool compiler_use_jit(void) { // Check for the "jit" prefs item if (!bx_options.jit.jit) return false; // Don't use JIT if translation cache size is less then MIN_CACHE_SIZE KB if (bx_options.jit.jitcachesize < MIN_CACHE_SIZE) { panicbug(" : translation cache size is less than %d KB. Disabling JIT.\n", MIN_CACHE_SIZE); return false; } return true; } #endif static void init_comp(void) { int i; uae_s8* cb=can_byte; uae_s8* cw=can_word; uae_s8* au=always_used; #ifdef RECORD_REGISTER_USAGE for (i=0;i<16;i++) reg_count_local[i] = 0; #endif for (i=0;i= uae_p32(kickmem_bank.baseaddr) && addr < uae_p32(kickmem_bank.baseaddr + 8 * 65536)); #else return ((addr >= (uintptr)ROMBaseHost) && (addr < (uintptr)ROMBaseHost + ROMSize)); #endif } static void flush_all(void) { int i; log_flush(); for (i=0;i0) free_nreg(i); for (i=0;i0) f_free_nreg(i); live.flags_in_flags=TRASH; /* Note: We assume we already rescued the flags at the very start of the call_r functions! */ } /******************************************************************** * Memory access and related functions, CREATE time * ********************************************************************/ void register_branch(uae_u32 not_taken, uae_u32 taken, uae_u8 cond) { next_pc_p=not_taken; taken_pc_p=taken; branch_cc=cond; } /* Note: get_handler may fail in 64 Bit environments, if direct_handler_to_use is * outside 32 bit */ static uintptr get_handler(uintptr addr) { blockinfo* bi=get_blockinfo_addr_new((void*)(uintptr)addr,0); return (uintptr)bi->direct_handler_to_use; } /* This version assumes that it is writing *real* memory, and *will* fail * if that assumption is wrong! No branches, no second chances, just * straight go-for-it attitude */ static void writemem_real(int address, int source, int size, int tmp, int clobber) { int f=tmp; #ifdef NATMEM_OFFSET if (canbang) { /* Woohoo! go directly at the memory! */ if (clobber) f=source; switch(size) { case 1: mov_b_bRr(address,source,MEMBaseDiff); break; case 2: mov_w_rr(f,source); mid_bswap_16(f); mov_w_bRr(address,f,MEMBaseDiff); break; case 4: mov_l_rr(f,source); mid_bswap_32(f); mov_l_bRr(address,f,MEMBaseDiff); break; } forget_about(tmp); forget_about(f); return; } #endif #ifdef UAE mov_l_rr(f,address); shrl_l_ri(f,16); /* The index into the baseaddr table */ mov_l_rm_indexed(f,uae_p32(baseaddr),f,SIZEOF_VOID_P); /* FIXME: is SIZEOF_VOID_P correct? */ if (address==source) { /* IBrowse does this! */ if (size > 1) { add_l(f,address); /* f now holds the final address */ switch (size) { case 2: mid_bswap_16(source); mov_w_Rr(f,source,0); mid_bswap_16(source); return; case 4: mid_bswap_32(source); mov_l_Rr(f,source,0); mid_bswap_32(source); return; } } } switch (size) { /* f now holds the offset */ case 1: mov_b_mrr_indexed(address,f,1,source); break; case 2: mid_bswap_16(source); mov_w_mrr_indexed(address,f,1,source); mid_bswap_16(source); break; /* base, index, source */ case 4: mid_bswap_32(source); mov_l_mrr_indexed(address,f,1,source); mid_bswap_32(source); break; } #endif } #ifdef UAE static inline void writemem(int address, int source, int offset, int size, int tmp) { int f=tmp; mov_l_rr(f,address); shrl_l_ri(f,16); /* The index into the mem bank table */ mov_l_rm_indexed(f,uae_p32(mem_banks),f,SIZEOF_VOID_P); /* FIXME: is SIZEOF_VOID_P correct? */ /* Now f holds a pointer to the actual membank */ mov_l_rR(f,f,offset); /* Now f holds the address of the b/w/lput function */ call_r_02(f,address,source,4,size); forget_about(tmp); } #endif void writebyte(int address, int source, int tmp) { #ifdef UAE if ((special_mem & S_WRITE) || distrust_byte()) writemem_special(address, source, 5 * SIZEOF_VOID_P, 1, tmp); else #endif writemem_real(address,source,1,tmp,0); } static inline void writeword_general(int address, int source, int tmp, int clobber) { #ifdef UAE if ((special_mem & S_WRITE) || distrust_word()) writemem_special(address, source, 4 * SIZEOF_VOID_P, 2, tmp); else #endif writemem_real(address,source,2,tmp,clobber); } void writeword_clobber(int address, int source, int tmp) { writeword_general(address,source,tmp,1); } void writeword(int address, int source, int tmp) { writeword_general(address,source,tmp,0); } static inline void writelong_general(int address, int source, int tmp, int clobber) { #ifdef UAE if ((special_mem & S_WRITE) || distrust_long()) writemem_special(address, source, 3 * SIZEOF_VOID_P, 4, tmp); else #endif writemem_real(address,source,4,tmp,clobber); } void writelong_clobber(int address, int source, int tmp) { writelong_general(address,source,tmp,1); } void writelong(int address, int source, int tmp) { writelong_general(address,source,tmp,0); } /* This version assumes that it is reading *real* memory, and *will* fail * if that assumption is wrong! No branches, no second chances, just * straight go-for-it attitude */ static void readmem_real(int address, int dest, int size, int tmp) { int f=tmp; if (size==4 && address!=dest) f=dest; #ifdef NATMEM_OFFSET if (canbang) { /* Woohoo! go directly at the memory! */ switch(size) { case 1: mov_b_brR(dest,address,MEMBaseDiff); break; case 2: mov_w_brR(dest,address,MEMBaseDiff); mid_bswap_16(dest); break; case 4: mov_l_brR(dest,address,MEMBaseDiff); mid_bswap_32(dest); break; } forget_about(tmp); (void) f; return; } #endif #ifdef UAE mov_l_rr(f,address); shrl_l_ri(f,16); /* The index into the baseaddr table */ mov_l_rm_indexed(f,uae_p32(baseaddr),f,SIZEOF_VOID_P); /* FIXME: is SIZEOF_VOID_P correct? */ /* f now holds the offset */ switch(size) { case 1: mov_b_rrm_indexed(dest,address,f,1); break; case 2: mov_w_rrm_indexed(dest,address,f,1); mid_bswap_16(dest); break; case 4: mov_l_rrm_indexed(dest,address,f,1); mid_bswap_32(dest); break; } forget_about(tmp); #endif } #ifdef UAE static inline void readmem(int address, int dest, int offset, int size, int tmp) { int f=tmp; mov_l_rr(f,address); shrl_l_ri(f,16); /* The index into the mem bank table */ mov_l_rm_indexed(f,uae_p32(mem_banks),f,SIZEOF_VOID_P); /* FIXME: is SIZEOF_VOID_P correct? */ /* Now f holds a pointer to the actual membank */ mov_l_rR(f,f,offset); /* Now f holds the address of the b/w/lget function */ call_r_11(dest,f,address,size,4); forget_about(tmp); } #endif void readbyte(int address, int dest, int tmp) { #ifdef UAE if ((special_mem & S_READ) || distrust_byte()) readmem_special(address, dest, 2 * SIZEOF_VOID_P, 1, tmp); else #endif readmem_real(address,dest,1,tmp); } void readword(int address, int dest, int tmp) { #ifdef UAE if ((special_mem & S_READ) || distrust_word()) readmem_special(address, dest, 1 * SIZEOF_VOID_P, 2, tmp); else #endif readmem_real(address,dest,2,tmp); } void readlong(int address, int dest, int tmp) { #ifdef UAE if ((special_mem & S_READ) || distrust_long()) readmem_special(address, dest, 0 * SIZEOF_VOID_P, 4, tmp); else #endif readmem_real(address,dest,4,tmp); } void get_n_addr(int address, int dest, int tmp) { #ifdef UAE if (special_mem || distrust_addr()) { /* This one might appear a bit odd... */ readmem(address, dest, 6 * SIZEOF_VOID_P, 4, tmp); return; } #endif // a is the register containing the virtual address // after the offset had been fetched int a=tmp; // f is the register that will contain the offset int f=tmp; // a == f == tmp if (address == dest) if (address!=dest) { a=address; f=dest; } #ifdef NATMEM_OFFSET if (canbang) { #if FIXED_ADDRESSING lea_l_brr(dest,address,MEMBaseDiff); #else # error "Only fixed adressing mode supported" #endif forget_about(tmp); (void) f; (void) a; return; } #endif #ifdef UAE mov_l_rr(f,address); mov_l_rr(dest,address); // gb-- nop if dest==address shrl_l_ri(f,16); mov_l_rm_indexed(f,uae_p32(baseaddr),f,SIZEOF_VOID_P); /* FIXME: is SIZEOF_VOID_P correct? */ add_l(dest,f); forget_about(tmp); #endif } void get_n_addr_jmp(int address, int dest, int tmp) { #ifdef WINUAE_ARANYM /* For this, we need to get the same address as the rest of UAE would --- otherwise we end up translating everything twice */ get_n_addr(address,dest,tmp); #else int f=tmp; if (address!=dest) f=dest; mov_l_rr(f,address); shrl_l_ri(f,16); /* The index into the baseaddr bank table */ mov_l_rm_indexed(dest,uae_p32(baseaddr),f,SIZEOF_VOID_P); /* FIXME: is SIZEOF_VOID_P correct? */ add_l(dest,address); and_l_ri (dest, ~1); forget_about(tmp); #endif } /* base is a register, but dp is an actual value. target is a register, as is tmp */ void calc_disp_ea_020(int base, uae_u32 dp, int target, int tmp) { int reg = (dp >> 12) & 15; int regd_shift=(dp >> 9) & 3; if (dp & 0x100) { int ignorebase=(dp&0x80); int ignorereg=(dp&0x40); int addbase=0; int outer=0; if ((dp & 0x30) == 0x20) addbase = (uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2); if ((dp & 0x30) == 0x30) addbase = comp_get_ilong((m68k_pc_offset+=4)-4); if ((dp & 0x3) == 0x2) outer = (uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2); if ((dp & 0x3) == 0x3) outer = comp_get_ilong((m68k_pc_offset+=4)-4); if ((dp & 0x4) == 0) { /* add regd *before* the get_long */ if (!ignorereg) { if ((dp & 0x800) == 0) sign_extend_16_rr(target,reg); else mov_l_rr(target,reg); shll_l_ri(target,regd_shift); } else mov_l_ri(target,0); /* target is now regd */ if (!ignorebase) add_l(target,base); add_l_ri(target,addbase); if (dp&0x03) readlong(target,target,tmp); } else { /* do the getlong first, then add regd */ if (!ignorebase) { mov_l_rr(target,base); add_l_ri(target,addbase); } else mov_l_ri(target,addbase); if (dp&0x03) readlong(target,target,tmp); if (!ignorereg) { if ((dp & 0x800) == 0) sign_extend_16_rr(tmp,reg); else mov_l_rr(tmp,reg); shll_l_ri(tmp,regd_shift); /* tmp is now regd */ add_l(target,tmp); } } add_l_ri(target,outer); } else { /* 68000 version */ if ((dp & 0x800) == 0) { /* Sign extend */ sign_extend_16_rr(target,reg); lea_l_brr_indexed(target,base,target,1< : actual translation cache size : %d KB at %p-%p", cache_size, compiled_code, compiled_code + cache_size*1024); #ifdef USE_DATA_BUFFER max_compile_start = compiled_code + cache_size*1024 - BYTES_PER_INST - DATA_BUFFER_SIZE; #else max_compile_start = compiled_code + cache_size*1024 - BYTES_PER_INST; #endif current_compile_p = compiled_code; current_cache_size = 0; #if defined(USE_DATA_BUFFER) reset_data_buffer(); #endif } } static void calc_checksum(blockinfo* bi, uae_u32* c1, uae_u32* c2) { uae_u32 k1 = 0; uae_u32 k2 = 0; #if USE_CHECKSUM_INFO checksum_info *csi = bi->csi; Dif(!csi) abort(); while (csi) { uae_s32 len = csi->length; uintptr tmp = (uintptr)csi->start_p; #else uae_s32 len = bi->len; uintptr tmp = (uintptr)bi->min_pcp; #endif uae_u32* pos; len += (tmp & 3); tmp &= ~((uintptr)3); pos = (uae_u32 *)tmp; if (len >= 0 && len <= MAX_CHECKSUM_LEN) { while (len > 0) { k1 += *pos; k2 ^= *pos; pos++; len -= 4; } } #if USE_CHECKSUM_INFO csi = csi->next; } #endif *c1 = k1; *c2 = k2; } #if 0 static void show_checksum(CSI_TYPE* csi) { uae_u32 k1=0; uae_u32 k2=0; uae_s32 len=CSI_LENGTH(csi); uae_u32 tmp=(uintptr)CSI_START_P(csi); uae_u32* pos; len+=(tmp&3); tmp&=(~3); pos=(uae_u32*)tmp; if (len<0 || len>MAX_CHECKSUM_LEN) { return; } else { while (len>0) { jit_log("%08x ",*pos); pos++; len-=4; } jit_log(" bla"); } } #endif int check_for_cache_miss(void) { blockinfo* bi=get_blockinfo_addr(regs.pc_p); if (bi) { int cl=cacheline(regs.pc_p); if (bi!=cache_tags[cl+1].bi) { raise_in_cl_list(bi); return 1; } } return 0; } static void recompile_block(void) { /* An existing block's countdown code has expired. We need to make sure that execute_normal doesn't refuse to recompile due to a perceived cache miss... */ blockinfo* bi=get_blockinfo_addr(regs.pc_p); Dif (!bi) jit_abort("recompile_block"); raise_in_cl_list(bi); execute_normal(); return; } static void cache_miss(void) { blockinfo* bi=get_blockinfo_addr(regs.pc_p); #if COMP_DEBUG uae_u32 cl=cacheline(regs.pc_p); blockinfo* bi2=get_blockinfo(cl); #endif if (!bi) { execute_normal(); /* Compile this block now */ return; } Dif (!bi2 || bi==bi2) { jit_abort("Unexplained cache miss %p %p",bi,bi2); } raise_in_cl_list(bi); return; } static int called_check_checksum(blockinfo* bi); static inline int block_check_checksum(blockinfo* bi) { uae_u32 c1,c2; bool isgood; if (bi->status!=BI_NEED_CHECK) return 1; /* This block is in a checked state */ if (bi->c1 || bi->c2) calc_checksum(bi,&c1,&c2); else { c1=c2=1; /* Make sure it doesn't match */ } isgood=(c1==bi->c1 && c2==bi->c2); if (isgood) { /* This block is still OK. So we reactivate. Of course, that means we have to move it into the needs-to-be-flushed list */ bi->handler_to_use=bi->handler; set_dhtu(bi,bi->direct_handler); bi->status=BI_CHECKING; isgood=called_check_checksum(bi) != 0; } if (isgood) { jit_log2("reactivate %p/%p (%x %x/%x %x)",bi,bi->pc_p, c1,c2,bi->c1,bi->c2); remove_from_list(bi); add_to_active(bi); raise_in_cl_list(bi); bi->status=BI_ACTIVE; } else { /* This block actually changed. We need to invalidate it, and set it up to be recompiled */ jit_log2("discard %p/%p (%x %x/%x %x)",bi,bi->pc_p, c1,c2,bi->c1,bi->c2); invalidate_block(bi); raise_in_cl_list(bi); } return isgood; } static int called_check_checksum(blockinfo* bi) { int isgood=1; int i; for (i=0;i<2 && isgood;i++) { if (bi->dep[i].jmp_off) { isgood=block_check_checksum(bi->dep[i].target); } } return isgood; } static void check_checksum(void) { blockinfo* bi=get_blockinfo_addr(regs.pc_p); uae_u32 cl=cacheline(regs.pc_p); blockinfo* bi2=get_blockinfo(cl); /* These are not the droids you are looking for... */ if (!bi) { /* Whoever is the primary target is in a dormant state, but calling it was accidental, and we should just compile this new block */ execute_normal(); return; } if (bi!=bi2) { /* The block was hit accidentally, but it does exist. Cache miss */ cache_miss(); return; } if (!block_check_checksum(bi)) execute_normal(); } static inline void match_states(blockinfo* bi) { int i; smallstate* s=&(bi->env); if (bi->status==BI_NEED_CHECK) { block_check_checksum(bi); } if (bi->status==BI_ACTIVE || bi->status==BI_FINALIZING) { /* Deal with the *promises* the block makes (about not using certain vregs) */ for (i=0;i<16;i++) { if (s->virt[i]==L_UNNEEDED) { jit_log2("unneeded reg %d at %p",i,target); COMPCALL(forget_about)(i); // FIXME } } } flush(1); /* And now deal with the *demands* the block makes */ for (i=0;inat[i]; if (v>=0) { // printf("Loading reg %d into %d at %p\n",v,i,target); readreg_specific(v,4,i); // do_load_reg(i,v); // setlock(i); } } for (i=0;inat[i]; if (v>=0) { unlock2(i); } } } static inline void create_popalls(void) { int i,r; if (popallspace == NULL) { if ((popallspace = alloc_code(POPALLSPACE_SIZE)) == NULL) { jit_log("WARNING: Could not allocate popallspace!"); #ifdef UAE if (currprefs.cachesize > 0) #endif { jit_abort("Could not allocate popallspace!"); } #ifdef UAE /* This is not fatal if JIT is not used. If JIT is * turned on, it will crash, but it would have crashed * anyway. */ return; #endif } } vm_protect(popallspace, POPALLSPACE_SIZE, VM_PAGE_READ | VM_PAGE_WRITE); int stack_space = STACK_OFFSET; for (i=0;idirect_pen=(cpuop_func*)get_target(); compemu_raw_mov_l_rm(0,(uintptr)&(bi->pc_p)); compemu_raw_mov_l_mr((uintptr)®s.pc_p,0); compemu_raw_jmp((uintptr)popall_execute_normal); align_target(align_jumps); bi->direct_pcc=(cpuop_func*)get_target(); compemu_raw_mov_l_rm(0,(uintptr)&(bi->pc_p)); compemu_raw_mov_l_mr((uintptr)®s.pc_p,0); compemu_raw_jmp((uintptr)popall_check_checksum); flush_cpu_icache((void *)current_compile_p, (void *)target); current_compile_p=get_target(); bi->deplist=NULL; for (i=0;i<2;i++) { bi->dep[i].prev_p=NULL; bi->dep[i].next=NULL; } bi->env=default_ss; bi->status=BI_INVALID; bi->havestate=0; //bi->env=empty_ss; } #ifdef UAE void compemu_reset(void) { set_cache_state(0); } #endif #ifdef UAE #else // OPCODE is in big endian format, use cft_map() beforehand, if needed. #endif static inline void reset_compop(int opcode) { compfunctbl[opcode] = NULL; nfcompfunctbl[opcode] = NULL; } static int read_opcode(const char *p) { int opcode = 0; for (int i = 0; i < 4; i++) { int op = p[i]; switch (op) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': opcode = (opcode << 4) | (op - '0'); break; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': opcode = (opcode << 4) | ((op - 'a') + 10); break; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': opcode = (opcode << 4) | ((op - 'A') + 10); break; default: return -1; } } return opcode; } static bool merge_blacklist() { #ifdef UAE const char *blacklist = ""; #else const char *blacklist = bx_options.jit.jitblacklist; #endif if (blacklist[0] != '\0') { const char *p = blacklist; for (;;) { if (*p == 0) return true; int opcode1 = read_opcode(p); if (opcode1 < 0) return false; p += 4; int opcode2 = opcode1; if (*p == '-') { p++; opcode2 = read_opcode(p); if (opcode2 < 0) return false; p += 4; } if (*p == 0 || *p == ',') { jit_log(" : blacklist opcodes : %04x-%04x", opcode1, opcode2); for (int opcode = opcode1; opcode <= opcode2; opcode++) reset_compop(cft_map(opcode)); if (*(p++) == ',') continue; return true; } return false; } } return true; } void build_comp(void) { #ifdef FSUAE if (!g_fs_uae_jit_compiler) { jit_log("JIT: JIT compiler is not enabled"); return; } #endif int i; unsigned long opcode; const struct comptbl* tbl=op_smalltbl_0_comp_ff; const struct comptbl* nftbl=op_smalltbl_0_comp_nf; int count; #ifdef WINUAE_ARANYM unsigned int cpu_level = 4; // 68040 const struct cputbl *nfctbl = op_smalltbl_0_nf; #else #ifdef NOFLAGS_SUPPORT struct comptbl *nfctbl = (currprefs.cpu_level >= 5 ? op_smalltbl_0_nf : currprefs.cpu_level == 4 ? op_smalltbl_1_nf : (currprefs.cpu_level == 2 || currprefs.cpu_level == 3) ? op_smalltbl_2_nf : currprefs.cpu_level == 1 ? op_smalltbl_3_nf : ! currprefs.cpu_compatible ? op_smalltbl_4_nf : op_smalltbl_5_nf); #endif #endif // Initialize target CPU (check for features, e.g. CMOV, rat stalls) raw_init_cpu(); #ifdef NATMEM_OFFSET #ifdef UAE #ifdef JIT_EXCEPTION_HANDLER install_exception_handler(); #endif #endif #endif jit_log(" : building compiler function tables"); for (opcode = 0; opcode < 65536; opcode++) { reset_compop(opcode); #ifdef NOFLAGS_SUPPORT nfcpufunctbl[opcode] = op_illg; #endif prop[opcode].use_flags = FLAG_ALL; prop[opcode].set_flags = FLAG_ALL; #ifdef UAE prop[opcode].is_jump=1; #else prop[opcode].cflow = fl_trap; // ILLEGAL instructions do trap #endif } for (i = 0; tbl[i].opcode < 65536; i++) { #ifdef UAE int isjmp = (tbl[i].specific & COMP_OPCODE_ISJUMP); int isaddx = (tbl[i].specific & COMP_OPCODE_ISADDX); int iscjmp = (tbl[i].specific & COMP_OPCODE_ISCJUMP); prop[cft_map(tbl[i].opcode)].is_jump = isjmp; prop[cft_map(tbl[i].opcode)].is_const_jump = iscjmp; prop[cft_map(tbl[i].opcode)].is_addx = isaddx; #else int cflow = table68k[tbl[i].opcode].cflow; if (follow_const_jumps && (tbl[i].specific & COMP_OPCODE_ISCJUMP)) cflow = fl_const_jump; else cflow &= ~fl_const_jump; prop[cft_map(tbl[i].opcode)].cflow = cflow; #endif bool uses_fpu = (tbl[i].specific & COMP_OPCODE_USES_FPU) != 0; if (uses_fpu && avoid_fpu) compfunctbl[cft_map(tbl[i].opcode)] = NULL; else compfunctbl[cft_map(tbl[i].opcode)] = tbl[i].handler; } for (i = 0; nftbl[i].opcode < 65536; i++) { bool uses_fpu = (tbl[i].specific & COMP_OPCODE_USES_FPU) != 0; if (uses_fpu && avoid_fpu) nfcompfunctbl[cft_map(nftbl[i].opcode)] = NULL; else nfcompfunctbl[cft_map(nftbl[i].opcode)] = nftbl[i].handler; #ifdef NOFLAGS_SUPPORT nfcpufunctbl[cft_map(nftbl[i].opcode)] = nfctbl[i].handler; #endif } #ifdef NOFLAGS_SUPPORT for (i = 0; nfctbl[i].handler; i++) { nfcpufunctbl[cft_map(nfctbl[i].opcode)] = nfctbl[i].handler; } #endif for (opcode = 0; opcode < 65536; opcode++) { compop_func *f; compop_func *nff; #ifdef NOFLAGS_SUPPORT cpuop_func *nfcf; #endif int isaddx; #ifdef UAE int isjmp,iscjmp; #else int cflow; #endif #ifdef UAE int cpu_level = (currprefs.cpu_model - 68000) / 10; if (cpu_level > 4) cpu_level--; #endif if ((instrmnem)table68k[opcode].mnemo == i_ILLG || table68k[opcode].clev > cpu_level) continue; if (table68k[opcode].handler != -1) { f = compfunctbl[cft_map(table68k[opcode].handler)]; nff = nfcompfunctbl[cft_map(table68k[opcode].handler)]; #ifdef NOFLAGS_SUPPORT nfcf = nfcpufunctbl[cft_map(table68k[opcode].handler)]; #endif isaddx = prop[cft_map(table68k[opcode].handler)].is_addx; prop[cft_map(opcode)].is_addx = isaddx; #ifdef UAE isjmp = prop[cft_map(table68k[opcode].handler)].is_jump; iscjmp = prop[cft_map(table68k[opcode].handler)].is_const_jump; prop[cft_map(opcode)].is_jump = isjmp; prop[cft_map(opcode)].is_const_jump = iscjmp; #else cflow = prop[cft_map(table68k[opcode].handler)].cflow; prop[cft_map(opcode)].cflow = cflow; #endif compfunctbl[cft_map(opcode)] = f; nfcompfunctbl[cft_map(opcode)] = nff; #ifdef NOFLAGS_SUPPORT Dif (nfcf == op_illg) abort(); nfcpufunctbl[cft_map(opcode)] = nfcf; #endif } prop[cft_map(opcode)].set_flags = table68k[opcode].flagdead; prop[cft_map(opcode)].use_flags = table68k[opcode].flaglive; /* Unconditional jumps don't evaluate condition codes, so they * don't actually use any flags themselves */ #ifdef UAE if (prop[cft_map(opcode)].is_const_jump) #else if (prop[cft_map(opcode)].cflow & fl_const_jump) #endif prop[cft_map(opcode)].use_flags = 0; } #ifdef NOFLAGS_SUPPORT for (i = 0; nfctbl[i].handler != NULL; i++) { if (nfctbl[i].specific) nfcpufunctbl[cft_map(tbl[i].opcode)] = nfctbl[i].handler; } #endif /* Merge in blacklist */ if (!merge_blacklist()) { jit_log(" : blacklist merge failure!"); } count=0; for (opcode = 0; opcode < 65536; opcode++) { if (compfunctbl[cft_map(opcode)]) count++; } jit_log(" : supposedly %d compileable opcodes!",count); /* Initialise state */ create_popalls(); alloc_cache(); reset_lists(); for (i=0;ipc_p)].handler=(cpuop_func*)popall_execute_normal; cache_tags[cacheline(bi->pc_p)+1].bi=NULL; dbi=bi; bi=bi->next; free_blockinfo(dbi); } bi=dormant; while(bi) { cache_tags[cacheline(bi->pc_p)].handler=(cpuop_func*)popall_execute_normal; cache_tags[cacheline(bi->pc_p)+1].bi=NULL; dbi=bi; bi=bi->next; free_blockinfo(dbi); } reset_lists(); if (!compiled_code) return; #if defined(USE_DATA_BUFFER) reset_data_buffer(); #endif current_compile_p=compiled_code; #ifdef UAE set_special(0); /* To get out of compiled code */ #else SPCFLAGS_SET( SPCFLAG_JIT_EXEC_RETURN ); /* To get out of compiled code */ #endif } /* "Soft flushing" --- instead of actually throwing everything away, we simply mark everything as "needs to be checked". */ #ifdef WINUAE_ARANYM static inline void flush_icache_lazy(int) #else void flush_icache(uaecptr ptr, int n) #endif { blockinfo* bi; blockinfo* bi2; #ifdef UAE if (currprefs.comp_hardflush) { flush_icache_hard(ptr, n); return; } #endif if (!active) return; bi=active; while (bi) { uae_u32 cl=cacheline(bi->pc_p); if (bi->status==BI_INVALID || bi->status==BI_NEED_RECOMP) { if (bi==cache_tags[cl+1].bi) cache_tags[cl].handler=(cpuop_func*)popall_execute_normal; bi->handler_to_use=(cpuop_func*)popall_execute_normal; set_dhtu(bi,bi->direct_pen); bi->status=BI_INVALID; } else { if (bi==cache_tags[cl+1].bi) cache_tags[cl].handler=(cpuop_func*)popall_check_checksum; bi->handler_to_use=(cpuop_func*)popall_check_checksum; set_dhtu(bi,bi->direct_pcc); bi->status=BI_NEED_CHECK; } bi2=bi; bi=bi->next; } /* bi2 is now the last entry in the active list */ bi2->next=dormant; if (dormant) dormant->prev_p=&(bi2->next); dormant=active; active->prev_p=&dormant; active=NULL; } #ifdef UAE static #endif void flush_icache_range(uae_u32 start, uae_u32 length) { if (!active) return; #if LAZY_FLUSH_ICACHE_RANGE uae_u8 *start_p = get_real_address(start); blockinfo *bi = active; while (bi) { #if USE_CHECKSUM_INFO bool invalidate = false; for (checksum_info *csi = bi->csi; csi && !invalidate; csi = csi->next) invalidate = (((start_p - csi->start_p) < csi->length) || ((csi->start_p - start_p) < length)); #else // Assume system is consistent and would invalidate the right range const bool invalidate = (bi->pc_p - start_p) < length; #endif if (invalidate) { uae_u32 cl = cacheline(bi->pc_p); if (bi == cache_tags[cl + 1].bi) cache_tags[cl].handler = (cpuop_func *)popall_execute_normal; bi->handler_to_use = (cpuop_func *)popall_execute_normal; set_dhtu(bi, bi->direct_pen); bi->status = BI_NEED_RECOMP; } bi = bi->next; } return; #else UNUSED(start); UNUSED(length); #endif flush_icache(-1); } /* static void catastrophe(void) { jit_abort("catastprophe"); } */ int failure; #ifdef UAE static inline unsigned int get_opcode_cft_map(unsigned int f) { return ((f >> 8) & 255) | ((f & 255) << 8); } #define DO_GET_OPCODE(a) (get_opcode_cft_map((uae_u16)*(a))) #else #if defined(HAVE_GET_WORD_UNSWAPPED) && !defined(FULLMMU) # define DO_GET_OPCODE(a) (do_get_mem_word_unswapped((uae_u16 *)(a))) #else # define DO_GET_OPCODE(a) (do_get_mem_word((uae_u16 *)(a))) #endif #endif #ifdef JIT_DEBUG static uae_u8 *last_regs_pc_p = 0; static uae_u8 *last_compiled_block_addr = 0; void compiler_dumpstate(void) { if (!JITDebug) return; jit_log("### Host addresses"); jit_log("MEM_BASE : %lx", (unsigned long)MEMBaseDiff); jit_log("PC_P : %p", ®s.pc_p); jit_log("SPCFLAGS : %p", ®s.spcflags); jit_log("D0-D7 : %p-%p", ®s.regs[0], ®s.regs[7]); jit_log("A0-A7 : %p-%p", ®s.regs[8], ®s.regs[15]); jit_log(" "); jit_log("### M68k processor state"); m68k_dumpstate(stderr, 0); jit_log(" "); jit_log("### Block in Atari address space"); jit_log("M68K block : %p", (void *)(uintptr)last_regs_pc_p); if (last_regs_pc_p != 0) { jit_log("Native block : %p (%d bytes)", (void *)last_compiled_block_addr, get_blockinfo_addr(last_regs_pc_p)->direct_handler_size); } jit_log(" "); } #endif #ifdef UAE void compile_block(cpu_history *pc_hist, int blocklen, int totcycles) { if (cache_enabled && compiled_code && currprefs.cpu_model >= 68020) { #else static void compile_block(cpu_history* pc_hist, int blocklen) { if (cache_enabled && compiled_code) { #endif #ifdef PROFILE_COMPILE_TIME compile_count++; clock_t start_time = clock(); #endif #ifdef JIT_DEBUG bool disasm_block = false; #endif /* OK, here we need to 'compile' a block */ int i; int r; int was_comp=0; uae_u8 liveflags[MAXRUN+1]; #if USE_CHECKSUM_INFO bool trace_in_rom = isinrom((uintptr)pc_hist[0].location) != 0; uintptr max_pcp=(uintptr)pc_hist[blocklen - 1].location; uintptr min_pcp=max_pcp; #else uintptr max_pcp=(uintptr)pc_hist[0].location; uintptr min_pcp=max_pcp; #endif uae_u32 cl=cacheline(pc_hist[0].location); void* specflags=(void*)®s.spcflags; blockinfo* bi=NULL; blockinfo* bi2; int extra_len=0; redo_current_block=0; if (current_compile_p >= MAX_COMPILE_PTR) flush_icache_hard(7); alloc_blockinfos(); bi=get_blockinfo_addr_new(pc_hist[0].location,0); bi2=get_blockinfo(cl); optlev=bi->optlevel; if (bi->status!=BI_INVALID) { Dif (bi!=bi2) { /* I don't think it can happen anymore. Shouldn't, in any case. So let's make sure... */ jit_abort("WOOOWOO count=%d, ol=%d %p %p", bi->count,bi->optlevel,bi->handler_to_use, cache_tags[cl].handler); } Dif (bi->count!=-1 && bi->status!=BI_NEED_RECOMP) { jit_abort("bi->count=%d, bi->status=%d,bi->optlevel=%d",bi->count,bi->status,bi->optlevel); /* What the heck? We are not supposed to be here! */ } } if (bi->count==-1) { optlev++; while (!optcount[optlev]) optlev++; bi->count=optcount[optlev]-1; } current_block_pc_p=(uintptr)pc_hist[0].location; remove_deps(bi); /* We are about to create new code */ bi->optlevel=optlev; bi->pc_p=(uae_u8*)pc_hist[0].location; #if USE_CHECKSUM_INFO free_checksum_info_chain(bi->csi); bi->csi = NULL; #endif liveflags[blocklen]=FLAG_ALL; /* All flags needed afterwards */ i=blocklen; while (i--) { uae_u16* currpcp=pc_hist[i].location; uae_u32 op=DO_GET_OPCODE(currpcp); #if USE_CHECKSUM_INFO trace_in_rom = trace_in_rom && isinrom((uintptr)currpcp); if (follow_const_jumps && is_const_jump(op)) { checksum_info *csi = alloc_checksum_info(); csi->start_p = (uae_u8 *)min_pcp; csi->length = max_pcp - min_pcp + LONGEST_68K_INST; csi->next = bi->csi; bi->csi = csi; max_pcp = (uintptr)currpcp; } min_pcp = (uintptr)currpcp; #else if ((uintptr)currpcpmax_pcp) max_pcp=(uintptr)currpcp; #endif #ifdef UAE if (!currprefs.compnf) { liveflags[i]=FLAG_ALL; } else #endif { liveflags[i] = ((liveflags[i+1] & (~prop[op].set_flags))|prop[op].use_flags); if (prop[op].is_addx && (liveflags[i+1]&FLAG_Z)==0) liveflags[i]&= ~FLAG_Z; } } #if USE_CHECKSUM_INFO checksum_info *csi = alloc_checksum_info(); csi->start_p = (uae_u8 *)min_pcp; csi->length = max_pcp - min_pcp + LONGEST_68K_INST; csi->next = bi->csi; bi->csi = csi; #endif bi->needed_flags=liveflags[0]; align_target(align_loops); was_comp=0; bi->direct_handler=(cpuop_func*)get_target(); set_dhtu(bi,bi->direct_handler); bi->status=BI_COMPILING; current_block_start_target=(uintptr)get_target(); log_startblock(); if (bi->count>=0) { /* Need to generate countdown code */ compemu_raw_mov_l_mi((uintptr)®s.pc_p,(uintptr)pc_hist[0].location); compemu_raw_sub_l_mi((uintptr)&(bi->count),1); compemu_raw_jl((uintptr)popall_recompile_block); } if (optlev==0) { /* No need to actually translate */ /* Execute normally without keeping stats */ compemu_raw_mov_l_mi((uintptr)®s.pc_p,(uintptr)pc_hist[0].location); compemu_raw_jmp((uintptr)popall_exec_nostats); } else { reg_alloc_run=0; next_pc_p=0; taken_pc_p=0; branch_cc=0; // Only to be initialized. Will be set together with next_pc_p comp_pc_p=(uae_u8*)pc_hist[0].location; init_comp(); was_comp=1; #ifdef USE_CPU_EMUL_SERVICES compemu_raw_sub_l_mi((uintptr)&emulated_ticks,blocklen); compemu_raw_jcc_b_oponly(NATIVE_CC_GT); uae_s8 *branchadd=(uae_s8*)get_target(); skip_byte(); raw_dec_sp(STACK_SHADOW_SPACE); compemu_raw_call((uintptr)cpu_do_check_ticks); raw_inc_sp(STACK_SHADOW_SPACE); *branchadd=(uintptr)get_target()-((uintptr)branchadd+1); #endif #ifdef JIT_DEBUG if (JITDebug) { compemu_raw_mov_l_mi((uintptr)&last_regs_pc_p,(uintptr)pc_hist[0].location); compemu_raw_mov_l_mi((uintptr)&last_compiled_block_addr,current_block_start_target); } #endif for (i=0;i1) { failure=0; if (!was_comp) { comp_pc_p=(uae_u8*)pc_hist[i].location; init_comp(); } was_comp=1; #ifdef WINUAE_ARANYM bool isnop = do_get_mem_word(pc_hist[i].location) == 0x4e71 || ((i + 1) < blocklen && do_get_mem_word(pc_hist[i+1].location) == 0x4e71); if (isnop) compemu_raw_mov_l_mi((uintptr)®s.fault_pc, ((uintptr)(pc_hist[i].location)) - MEMBaseDiff); #endif comptbl[opcode](opcode); freescratch(); if (!(liveflags[i+1] & FLAG_CZNV)) { /* We can forget about flags */ dont_care_flags(); } #if INDIVIDUAL_INST flush(1); nop(); flush(1); was_comp=0; #endif #ifdef WINUAE_ARANYM /* * workaround for buserror handling: on a "nop", write registers back */ if (isnop) { flush(1); nop(); was_comp=0; } #endif } if (failure) { if (was_comp) { flush(1); was_comp=0; } compemu_raw_mov_l_ri(REG_PAR1,(uae_u32)opcode); #if USE_NORMAL_CALLING_CONVENTION raw_push_l_r(REG_PAR1); #endif compemu_raw_mov_l_mi((uintptr)®s.pc_p, (uintptr)pc_hist[i].location); raw_dec_sp(STACK_SHADOW_SPACE); compemu_raw_call((uintptr)cputbl[opcode]); raw_inc_sp(STACK_SHADOW_SPACE); #ifdef PROFILE_UNTRANSLATED_INSNS // raw_cputbl_count[] is indexed with plain opcode (in m68k order) compemu_raw_add_l_mi((uintptr)&raw_cputbl_count[cft_map(opcode)],1); #endif #if USE_NORMAL_CALLING_CONVENTION raw_inc_sp(4); #endif if (i < blocklen - 1) { uae_s8* branchadd; /* if (SPCFLAGS_TEST(SPCFLAG_STOP)) popall_do_nothing() */ compemu_raw_mov_l_rm(0,(uintptr)specflags); compemu_raw_test_l_rr(0,0); #if defined(USE_DATA_BUFFER) data_check_end(8, 64); // just a pessimistic guess... #endif compemu_raw_jz_b_oponly(); branchadd=(uae_s8*)get_target(); skip_byte(); #ifdef UAE raw_sub_l_mi(uae_p32(&countdown),scaled_cycles(totcycles)); #endif compemu_raw_jmp((uintptr)popall_do_nothing); *branchadd=(uintptr)get_target()-(uintptr)branchadd-1; } } } #if 1 /* This isn't completely kosher yet; It really needs to be be integrated into a general inter-block-dependency scheme */ if (next_pc_p && taken_pc_p && was_comp && taken_pc_p==current_block_pc_p) { blockinfo* bi1=get_blockinfo_addr_new((void*)next_pc_p,0); blockinfo* bi2=get_blockinfo_addr_new((void*)taken_pc_p,0); uae_u8 x=bi1->needed_flags; if (x==0xff || 1) { /* To be on the safe side */ uae_u16* next=(uae_u16*)next_pc_p; uae_u32 op=DO_GET_OPCODE(next); x=FLAG_ALL; x&=(~prop[op].set_flags); x|=prop[op].use_flags; } x|=bi2->needed_flags; if (!(x & FLAG_CZNV)) { /* We can forget about flags */ dont_care_flags(); extra_len+=2; /* The next instruction now is part of this block */ } } #endif log_flush(); if (next_pc_p) { /* A branch was registered */ uintptr t1=next_pc_p; uintptr t2=taken_pc_p; int cc=branch_cc; uae_u32* branchadd; uae_u32* tba; bigstate tmp; blockinfo* tbi; if (taken_pc_penv))) { mark_callers_recompile(bi); } big_to_small_state(&live,&(bi->env)); #endif #if USE_CHECKSUM_INFO remove_from_list(bi); if (trace_in_rom) { // No need to checksum that block trace on cache invalidation free_checksum_info_chain(bi->csi); bi->csi = NULL; add_to_dormant(bi); } else { calc_checksum(bi,&(bi->c1),&(bi->c2)); add_to_active(bi); } #else if (next_pc_p+extra_len>=max_pcp && next_pc_p+extra_lenlen=max_pcp-min_pcp; bi->min_pcp=min_pcp; remove_from_list(bi); if (isinrom(min_pcp) && isinrom(max_pcp)) { add_to_dormant(bi); /* No need to checksum it on cache flush. Please don't start changing ROMs in flight! */ } else { calc_checksum(bi,&(bi->c1),&(bi->c2)); add_to_active(bi); } #endif current_cache_size += get_target() - (uae_u8 *)current_compile_p; #ifdef JIT_DEBUG bi->direct_handler_size = get_target() - (uae_u8 *)current_block_start_target; if (JITDebug && disasm_block) { uaecptr block_addr = start_pc + ((char *)pc_hist[0].location - (char *)start_pc_p); jit_log("M68K block @ 0x%08x (%d insns)", block_addr, blocklen); uae_u32 block_size = ((uae_u8 *)pc_hist[blocklen - 1].location - (uae_u8 *)pc_hist[0].location) + 1; #ifdef WINUAE_ARANYM disasm_m68k_block((const uae_u8 *)pc_hist[0].location, block_size); #endif jit_log("Compiled block @ %p", pc_hist[0].location); #ifdef WINUAE_ARANYM disasm_native_block((const uae_u8 *)current_block_start_target, bi->direct_handler_size); #endif UNUSED(block_addr); } #endif log_dump(); align_target(align_jumps); #ifdef UAE #ifdef USE_UDIS86 UDISFN(current_block_start_target, target) #endif #endif /* This is the non-direct handler */ bi->handler= bi->handler_to_use=(cpuop_func *)get_target(); compemu_raw_cmp_l_mi((uintptr)®s.pc_p,(uintptr)pc_hist[0].location); compemu_raw_jnz((uintptr)popall_cache_miss); comp_pc_p=(uae_u8*)pc_hist[0].location; bi->status=BI_FINALIZING; init_comp(); match_states(bi); flush(1); compemu_raw_jmp((uintptr)bi->direct_handler); flush_cpu_icache((void *)current_block_start_target, (void *)target); current_compile_p=get_target(); raise_in_cl_list(bi); #ifdef UAE bi->nexthandler=current_compile_p; #endif /* We will flush soon, anyway, so let's do it now */ if (current_compile_p >= MAX_COMPILE_PTR) flush_icache_hard(7); bi->status=BI_ACTIVE; if (redo_current_block) block_need_recompile(bi); #ifdef PROFILE_COMPILE_TIME compile_time += (clock() - start_time); #endif #ifdef UAE /* Account for compilation time */ do_extra_cycles(totcycles); #endif } #ifdef USE_CPU_EMUL_SERVICES /* Account for compilation time */ cpu_do_check_ticks(); #endif } #ifdef UAE /* Slightly different function defined in newcpu.cpp */ #else void do_nothing(void) { /* What did you expect this to do? */ } #endif #ifdef UAE /* Different implementation in newcpu.cpp */ #else void exec_nostats(void) { for (;;) { uae_u32 opcode = GET_OPCODE; #ifdef FLIGHT_RECORDER m68k_record_step(m68k_getpc(), cft_map(opcode)); #endif (*cpufunctbl[opcode])(opcode); cpu_check_ticks(); if (end_block(opcode) || SPCFLAGS_TEST(SPCFLAG_ALL)) { return; /* We will deal with the spcflags in the caller */ } } } #endif #ifdef UAE /* FIXME: check differences against UAE execute_normal (newcpu.cpp) */ #else void execute_normal(void) { if (!check_for_cache_miss()) { cpu_history pc_hist[MAXRUN]; int blocklen = 0; #if 0 && FIXED_ADDRESSING start_pc_p = regs.pc_p; start_pc = get_virtual_address(regs.pc_p); #else start_pc_p = regs.pc_oldp; start_pc = regs.pc; #endif for (;;) { /* Take note: This is the do-it-normal loop */ pc_hist[blocklen++].location = (uae_u16 *)regs.pc_p; uae_u32 opcode = GET_OPCODE; #ifdef FLIGHT_RECORDER m68k_record_step(m68k_getpc(), cft_map(opcode)); #endif (*cpufunctbl[opcode])(opcode); cpu_check_ticks(); if (end_block(opcode) || SPCFLAGS_TEST(SPCFLAG_ALL) || blocklen>=MAXRUN) { compile_block(pc_hist, blocklen); return; /* We will deal with the spcflags in the caller */ } /* No need to check regs.spcflags, because if they were set, we'd have ended up inside that "if" */ } } } #endif typedef void (*compiled_handler)(void); #ifdef UAE /* FIXME: check differences against UAE m68k_do_compile_execute */ #else void m68k_do_compile_execute(void) { for (;;) { ((compiled_handler)(pushall_call_handler))(); /* Whenever we return from that, we should check spcflags */ if (SPCFLAGS_TEST(SPCFLAG_ALL)) { if (m68k_do_specialties ()) return; } } } #endif #ifdef UAE /* FIXME: check differences against UAE m68k_compile_execute */ #else void m68k_compile_execute (void) { setjmpagain: TRY(prb) { for (;;) { if (quit_program > 0) { if (quit_program == 1) { #ifdef FLIGHT_RECORDER dump_flight_recorder(); #endif break; } quit_program = 0; m68k_reset (); } m68k_do_compile_execute(); } } CATCH(prb) { jit_log("m68k_compile_execute: exception %d pc=%08x (%08x+%p-%p) fault_pc=%08x addr=%08x -> %08x sp=%08x", int(prb), m68k_getpc(), regs.pc, regs.pc_p, regs.pc_oldp, regs.fault_pc, regs.mmu_fault_addr, get_long (regs.vbr + 4*prb), regs.regs[15]); flush_icache(0); Exception(prb, 0); goto setjmpagain; } } #endif #endif /* JIT */ aranym-1.1.0/src/uae_cpu/compiler/compemu_midfunc_x86.h0000664000175000017500000002517213454637622021263 0ustar joyjoy/* * compiler/compemu_midfunc_x86.h - Native MIDFUNCS for IA-32 and AMD64 * * Copyright (c) 2014 Jens Heitmann of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * * Adaptation for Basilisk II and improvements, copyright 2000-2002 * Gwenole Beauchesne * * Basilisk II (C) 1997-2002 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Note: * File is included by compemu.h * */ DECLARE_MIDFUNC(bt_l_ri(RR4 r, IMM i)); DECLARE_MIDFUNC(bt_l_rr(RR4 r, RR4 b)); DECLARE_MIDFUNC(btc_l_ri(RW4 r, IMM i)); DECLARE_MIDFUNC(btc_l_rr(RW4 r, RR4 b)); DECLARE_MIDFUNC(bts_l_ri(RW4 r, IMM i)); DECLARE_MIDFUNC(bts_l_rr(RW4 r, RR4 b)); DECLARE_MIDFUNC(btr_l_ri(RW4 r, IMM i)); DECLARE_MIDFUNC(btr_l_rr(RW4 r, RR4 b)); DECLARE_MIDFUNC(mov_l_rm(W4 d, IMM s)); DECLARE_MIDFUNC(call_r(RR4 r)); DECLARE_MIDFUNC(sub_l_mi(IMM d, IMM s)); DECLARE_MIDFUNC(mov_l_mi(IMM d, IMM s)); DECLARE_MIDFUNC(mov_w_mi(IMM d, IMM s)); DECLARE_MIDFUNC(mov_b_mi(IMM d, IMM s)); DECLARE_MIDFUNC(rol_b_ri(RW1 r, IMM i)); DECLARE_MIDFUNC(rol_w_ri(RW2 r, IMM i)); DECLARE_MIDFUNC(rol_l_ri(RW4 r, IMM i)); DECLARE_MIDFUNC(rol_l_rr(RW4 d, RR1 r)); DECLARE_MIDFUNC(rol_w_rr(RW2 d, RR1 r)); DECLARE_MIDFUNC(rol_b_rr(RW1 d, RR1 r)); DECLARE_MIDFUNC(shll_l_rr(RW4 d, RR1 r)); DECLARE_MIDFUNC(shll_w_rr(RW2 d, RR1 r)); DECLARE_MIDFUNC(shll_b_rr(RW1 d, RR1 r)); DECLARE_MIDFUNC(ror_b_ri(RR1 r, IMM i)); DECLARE_MIDFUNC(ror_w_ri(RR2 r, IMM i)); DECLARE_MIDFUNC(ror_l_ri(RR4 r, IMM i)); DECLARE_MIDFUNC(ror_l_rr(RR4 d, RR1 r)); DECLARE_MIDFUNC(ror_w_rr(RR2 d, RR1 r)); DECLARE_MIDFUNC(ror_b_rr(RR1 d, RR1 r)); DECLARE_MIDFUNC(shrl_l_rr(RW4 d, RR1 r)); DECLARE_MIDFUNC(shrl_w_rr(RW2 d, RR1 r)); DECLARE_MIDFUNC(shrl_b_rr(RW1 d, RR1 r)); DECLARE_MIDFUNC(shra_l_rr(RW4 d, RR1 r)); DECLARE_MIDFUNC(shra_w_rr(RW2 d, RR1 r)); DECLARE_MIDFUNC(shra_b_rr(RW1 d, RR1 r)); DECLARE_MIDFUNC(shll_l_ri(RW4 r, IMM i)); DECLARE_MIDFUNC(shll_w_ri(RW2 r, IMM i)); DECLARE_MIDFUNC(shll_b_ri(RW1 r, IMM i)); DECLARE_MIDFUNC(shrl_l_ri(RW4 r, IMM i)); DECLARE_MIDFUNC(shrl_w_ri(RW2 r, IMM i)); DECLARE_MIDFUNC(shrl_b_ri(RW1 r, IMM i)); DECLARE_MIDFUNC(shra_l_ri(RW4 r, IMM i)); DECLARE_MIDFUNC(shra_w_ri(RW2 r, IMM i)); DECLARE_MIDFUNC(shra_b_ri(RW1 r, IMM i)); DECLARE_MIDFUNC(setcc(W1 d, IMM cc)); DECLARE_MIDFUNC(setcc_m(IMM d, IMM cc)); DECLARE_MIDFUNC(cmov_l_rr(RW4 d, RR4 s, IMM cc)); DECLARE_MIDFUNC(cmov_l_rm(RW4 d, IMM s, IMM cc)); DECLARE_MIDFUNC(bsf_l_rr(W4 d, RR4 s)); DECLARE_MIDFUNC(pop_m(IMM d)); DECLARE_MIDFUNC(push_m(IMM d)); DECLARE_MIDFUNC(pop_l(W4 d)); DECLARE_MIDFUNC(push_l_i(IMM i)); DECLARE_MIDFUNC(push_l(RR4 s)); DECLARE_MIDFUNC(clear_16(RW4 r)); DECLARE_MIDFUNC(clear_8(RW4 r)); DECLARE_MIDFUNC(sign_extend_32_rr(W4 d, RR2 s)); DECLARE_MIDFUNC(sign_extend_16_rr(W4 d, RR2 s)); DECLARE_MIDFUNC(sign_extend_8_rr(W4 d, RR1 s)); DECLARE_MIDFUNC(zero_extend_16_rr(W4 d, RR2 s)); DECLARE_MIDFUNC(zero_extend_8_rr(W4 d, RR1 s)); DECLARE_MIDFUNC(imul_64_32(RW4 d, RW4 s)); DECLARE_MIDFUNC(mul_64_32(RW4 d, RW4 s)); DECLARE_MIDFUNC(simulate_bsf(W4 tmp, RW4 s)); DECLARE_MIDFUNC(imul_32_32(RW4 d, RR4 s)); DECLARE_MIDFUNC(mul_32_32(RW4 d, RR4 s)); DECLARE_MIDFUNC(mov_b_rr(W1 d, RR1 s)); DECLARE_MIDFUNC(mov_w_rr(W2 d, RR2 s)); DECLARE_MIDFUNC(mov_l_rrm_indexed(W4 d,RR4 baser, RR4 index, IMM factor)); DECLARE_MIDFUNC(mov_w_rrm_indexed(W2 d, RR4 baser, RR4 index, IMM factor)); DECLARE_MIDFUNC(mov_b_rrm_indexed(W1 d, RR4 baser, RR4 index, IMM factor)); DECLARE_MIDFUNC(mov_l_mrr_indexed(RR4 baser, RR4 index, IMM factor, RR4 s)); DECLARE_MIDFUNC(mov_w_mrr_indexed(RR4 baser, RR4 index, IMM factor, RR2 s)); DECLARE_MIDFUNC(mov_b_mrr_indexed(RR4 baser, RR4 index, IMM factor, RR1 s)); DECLARE_MIDFUNC(mov_l_bmrr_indexed(IMM base, RR4 baser, RR4 index, IMM factor, RR4 s)); DECLARE_MIDFUNC(mov_w_bmrr_indexed(IMM base, RR4 baser, RR4 index, IMM factor, RR2 s)); DECLARE_MIDFUNC(mov_b_bmrr_indexed(IMM base, RR4 baser, RR4 index, IMM factor, RR1 s)); DECLARE_MIDFUNC(mov_l_brrm_indexed(W4 d, IMM base, RR4 baser, RR4 index, IMM factor)); DECLARE_MIDFUNC(mov_w_brrm_indexed(W2 d, IMM base, RR4 baser, RR4 index, IMM factor)); DECLARE_MIDFUNC(mov_b_brrm_indexed(W1 d, IMM base, RR4 baser, RR4 index, IMM factor)); DECLARE_MIDFUNC(mov_l_rm_indexed(W4 d, IMM base, RR4 index, IMM factor)); DECLARE_MIDFUNC(mov_l_rR(W4 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_w_rR(W2 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_b_rR(W1 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_l_brR(W4 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_w_brR(W2 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_b_brR(W1 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_l_Ri(RR4 d, IMM i, IMM offset)); DECLARE_MIDFUNC(mov_w_Ri(RR4 d, IMM i, IMM offset)); DECLARE_MIDFUNC(mov_b_Ri(RR4 d, IMM i, IMM offset)); DECLARE_MIDFUNC(mov_l_Rr(RR4 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_w_Rr(RR4 d, RR2 s, IMM offset)); DECLARE_MIDFUNC(mov_b_Rr(RR4 d, RR1 s, IMM offset)); DECLARE_MIDFUNC(lea_l_brr(W4 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(lea_l_brr_indexed(W4 d, RR4 s, RR4 index, IMM factor, IMM offset)); DECLARE_MIDFUNC(lea_l_rr_indexed(W4 d, RR4 s, RR4 index, IMM factor)); DECLARE_MIDFUNC(mov_l_bRr(RR4 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_w_bRr(RR4 d, RR2 s, IMM offset)); DECLARE_MIDFUNC(mov_b_bRr(RR4 d, RR1 s, IMM offset)); DECLARE_MIDFUNC(mid_bswap_32(RW4 r)); DECLARE_MIDFUNC(mid_bswap_16(RW2 r)); DECLARE_MIDFUNC(mov_l_rr(W4 d, RR4 s)); DECLARE_MIDFUNC(mov_l_mr(IMM d, RR4 s)); DECLARE_MIDFUNC(mov_w_mr(IMM d, RR2 s)); DECLARE_MIDFUNC(mov_w_rm(W2 d, IMM s)); DECLARE_MIDFUNC(mov_b_mr(IMM d, RR1 s)); DECLARE_MIDFUNC(mov_b_rm(W1 d, IMM s)); DECLARE_MIDFUNC(mov_l_ri(W4 d, IMM s)); DECLARE_MIDFUNC(mov_w_ri(W2 d, IMM s)); DECLARE_MIDFUNC(mov_b_ri(W1 d, IMM s)); DECLARE_MIDFUNC(add_l_mi(IMM d, IMM s) ); DECLARE_MIDFUNC(add_w_mi(IMM d, IMM s) ); DECLARE_MIDFUNC(add_b_mi(IMM d, IMM s) ); DECLARE_MIDFUNC(test_l_ri(RR4 d, IMM i)); DECLARE_MIDFUNC(test_l_rr(RR4 d, RR4 s)); DECLARE_MIDFUNC(test_w_rr(RR2 d, RR2 s)); DECLARE_MIDFUNC(test_b_rr(RR1 d, RR1 s)); DECLARE_MIDFUNC(and_l_ri(RW4 d, IMM i)); DECLARE_MIDFUNC(and_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(and_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(and_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(or_l_rm(RW4 d, IMM s)); DECLARE_MIDFUNC(or_l_ri(RW4 d, IMM i)); DECLARE_MIDFUNC(or_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(or_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(or_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(adc_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(adc_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(adc_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(add_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(add_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(add_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(sub_l_ri(RW4 d, IMM i)); DECLARE_MIDFUNC(sub_w_ri(RW2 d, IMM i)); DECLARE_MIDFUNC(sub_b_ri(RW1 d, IMM i)); DECLARE_MIDFUNC(add_l_ri(RW4 d, IMM i)); DECLARE_MIDFUNC(add_w_ri(RW2 d, IMM i)); DECLARE_MIDFUNC(add_b_ri(RW1 d, IMM i)); DECLARE_MIDFUNC(sbb_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(sbb_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(sbb_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(sub_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(sub_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(sub_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(cmp_l(RR4 d, RR4 s)); DECLARE_MIDFUNC(cmp_l_ri(RR4 r, IMM i)); DECLARE_MIDFUNC(cmp_w(RR2 d, RR2 s)); DECLARE_MIDFUNC(cmp_b(RR1 d, RR1 s)); DECLARE_MIDFUNC(xor_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(xor_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(xor_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(live_flags(void)); DECLARE_MIDFUNC(dont_care_flags(void)); DECLARE_MIDFUNC(duplicate_carry(void)); DECLARE_MIDFUNC(setcc_for_cntzero(RR4 d, RR4 data, int size)); DECLARE_MIDFUNC(restore_carry(void)); DECLARE_MIDFUNC(start_needflags(void)); DECLARE_MIDFUNC(end_needflags(void)); DECLARE_MIDFUNC(make_flags_live(void)); DECLARE_MIDFUNC(call_r_11(RR4 r, W4 out1, RR4 in1, IMM osize, IMM isize)); DECLARE_MIDFUNC(call_r_02(RR4 r, RR4 in1, RR4 in2, IMM isize1, IMM isize2)); DECLARE_MIDFUNC(forget_about(W4 r)); DECLARE_MIDFUNC(nop(void)); DECLARE_MIDFUNC(f_forget_about(FW r)); DECLARE_MIDFUNC(fmov_pi(FW r)); DECLARE_MIDFUNC(fmov_log10_2(FW r)); DECLARE_MIDFUNC(fmov_log2_e(FW r)); DECLARE_MIDFUNC(fmov_loge_2(FW r)); DECLARE_MIDFUNC(fmov_1(FW r)); DECLARE_MIDFUNC(fmov_0(FW r)); DECLARE_MIDFUNC(fmov_rm(FW r, MEMR m)); DECLARE_MIDFUNC(fmov_mr(MEMW m, FR r)); DECLARE_MIDFUNC(fmovi_rm(FW r, MEMR m)); DECLARE_MIDFUNC(fmovi_mr(MEMW m, FR r)); DECLARE_MIDFUNC(fmovi_mrb(MEMW m, FR r, double *bounds)); DECLARE_MIDFUNC(fmovs_rm(FW r, MEMR m)); DECLARE_MIDFUNC(fmovs_mr(MEMW m, FR r)); DECLARE_MIDFUNC(fcuts_r(FRW r)); DECLARE_MIDFUNC(fcut_r(FRW r)); DECLARE_MIDFUNC(fmov_ext_mr(MEMW m, FR r)); DECLARE_MIDFUNC(fmov_ext_rm(FW r, MEMR m)); DECLARE_MIDFUNC(fmov_rr(FW d, FR s)); DECLARE_MIDFUNC(fldcw_m_indexed(RR4 index, IMM base)); DECLARE_MIDFUNC(ftst_r(FR r)); DECLARE_MIDFUNC(dont_care_fflags(void)); DECLARE_MIDFUNC(fsqrt_rr(FW d, FR s)); DECLARE_MIDFUNC(fabs_rr(FW d, FR s)); DECLARE_MIDFUNC(frndint_rr(FW d, FR s)); DECLARE_MIDFUNC(fgetexp_rr(FW d, FR s)); DECLARE_MIDFUNC(fgetman_rr(FW d, FR s)); DECLARE_MIDFUNC(fsin_rr(FW d, FR s)); DECLARE_MIDFUNC(fcos_rr(FW d, FR s)); DECLARE_MIDFUNC(ftan_rr(FW d, FR s)); DECLARE_MIDFUNC(fsincos_rr(FW d, FW c, FR s)); DECLARE_MIDFUNC(fscale_rr(FRW d, FR s)); DECLARE_MIDFUNC(ftwotox_rr(FW d, FR s)); DECLARE_MIDFUNC(fetox_rr(FW d, FR s)); DECLARE_MIDFUNC(fetoxM1_rr(FW d, FR s)); DECLARE_MIDFUNC(ftentox_rr(FW d, FR s)); DECLARE_MIDFUNC(flog2_rr(FW d, FR s)); DECLARE_MIDFUNC(flogN_rr(FW d, FR s)); DECLARE_MIDFUNC(flogNP1_rr(FW d, FR s)); DECLARE_MIDFUNC(flog10_rr(FW d, FR s)); DECLARE_MIDFUNC(fasin_rr(FW d, FR s)); DECLARE_MIDFUNC(facos_rr(FW d, FR s)); DECLARE_MIDFUNC(fatan_rr(FW d, FR s)); DECLARE_MIDFUNC(fatanh_rr(FW d, FR s)); DECLARE_MIDFUNC(fsinh_rr(FW d, FR s)); DECLARE_MIDFUNC(fcosh_rr(FW d, FR s)); DECLARE_MIDFUNC(ftanh_rr(FW d, FR s)); DECLARE_MIDFUNC(fneg_rr(FW d, FR s)); DECLARE_MIDFUNC(fadd_rr(FRW d, FR s)); DECLARE_MIDFUNC(fsub_rr(FRW d, FR s)); DECLARE_MIDFUNC(fmul_rr(FRW d, FR s)); DECLARE_MIDFUNC(frem_rr(FRW d, FR s)); DECLARE_MIDFUNC(frem1_rr(FRW d, FR s)); DECLARE_MIDFUNC(fdiv_rr(FRW d, FR s)); DECLARE_MIDFUNC(fcmp_rr(FR d, FR s)); DECLARE_MIDFUNC(fflags_into_flags(W2 tmp)); aranym-1.1.0/src/uae_cpu/compiler/compemu_midfunc_x86.cpp0000664000175000017500000015307113454637622021616 0ustar joyjoy/* * compiler/compemu_midfunc_arm.cpp - Native MIDFUNCS for IA-32 and AMD64 * * Copyright (c) 2014 Jens Heitmann of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * * Adaptation for Basilisk II and improvements, copyright 2000-2002 * Gwenole Beauchesne * * Basilisk II (C) 1997-2002 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Note: * File is included by compemu_support.cpp * */ static int f_rmw(int r) { int n; f_make_exclusive(r,0); if (f_isinreg(r)) { n=live.fate[r].realreg; } else n=f_alloc_reg(r,0); live.fate[r].status=DIRTY; live.fat[n].locked++; live.fat[n].touched=touchcnt++; return n; } static void fflags_into_flags_internal(uae_u32 tmp) { int r; clobber_flags(); r=f_readreg(FP_RESULT); if (FFLAG_NREG_CLOBBER_CONDITION) { int tmp2=tmp; tmp=writereg_specific(tmp,4,FFLAG_NREG); raw_fflags_into_flags(r); unlock2(tmp); forget_about(tmp2); } else raw_fflags_into_flags(r); f_unlock(r); live_flags(); } /******************************************************************** * CPU functions exposed to gencomp. Both CREATE and EMIT time * ********************************************************************/ /* * RULES FOR HANDLING REGISTERS: * * * In the function headers, order the parameters * - 1st registers written to * - 2nd read/modify/write registers * - 3rd registers read from * * Before calling raw_*, you must call readreg, writereg or rmw for * each register * * The order for this is * - 1st call remove_offset for all registers written to with size<4 * - 2nd call readreg for all registers read without offset * - 3rd call rmw for all rmw registers * - 4th call readreg_offset for all registers that can handle offsets * - 5th call get_offset for all the registers from the previous step * - 6th call writereg for all written-to registers * - 7th call raw_* * - 8th unlock2 all registers that were locked */ MIDFUNC(0,live_flags,(void)) { live.flags_on_stack=TRASH; live.flags_in_flags=VALID; live.flags_are_important=1; } MENDFUNC(0,live_flags,(void)) MIDFUNC(0,dont_care_flags,(void)) { live.flags_are_important=0; } MENDFUNC(0,dont_care_flags,(void)) MIDFUNC(0,duplicate_carry,(void)) { evict(FLAGX); make_flags_live_internal(); #ifdef UAE COMPCALL(setcc_m)((uintptr)live.state[FLAGX].mem + 1, NATIVE_CC_CS); #else COMPCALL(setcc_m)((uintptr)live.state[FLAGX].mem, NATIVE_CC_CS); #endif log_vwrite(FLAGX); } MENDFUNC(0,duplicate_carry,(void)) MIDFUNC(3,setcc_for_cntzero,(RR4 /* cnt */, RR4 data, int size)) { uae_u8 *branchadd; uae_u8 *branchadd2; evict(FLAGX); make_flags_live_internal(); raw_pushfl(); /* * shift count can only be in CL register; see shrl_b_rr */ raw_test_b_rr(X86_CL, X86_CL); /* if zero, leave X unaffected; carry flag will already be cleared */ raw_jz_b_oponly(); branchadd = get_target(); skip_byte(); /* shift count was non-zero; update also x-flag */ raw_popfl(); #ifdef UAE COMPCALL(setcc_m)((uintptr)live.state[FLAGX].mem + 1, NATIVE_CC_CS); #else COMPCALL(setcc_m)((uintptr)live.state[FLAGX].mem, NATIVE_CC_CS); #endif log_vwrite(FLAGX); raw_jmp_b_oponly(); branchadd2 = get_target(); skip_byte(); *branchadd = (uintptr)get_target() - ((uintptr)branchadd + 1); /* shift count was zero; need to set Z & N flags since the native flags were unaffected */ raw_popfl(); data = readreg(data, size); switch (size) { case 1: raw_test_b_rr(data, data); break; case 2: raw_test_w_rr(data, data); break; case 4: raw_test_l_rr(data, data); break; } unlock2(data); *branchadd2 = (uintptr)get_target() - ((uintptr)branchadd2 + 1); } MIDFUNC(0,restore_carry,(void)) { if (!have_rat_stall) { /* Not a P6 core, i.e. no partial stalls */ #ifdef UAE bt_l_ri_noclobber(FLAGX, 8); #else bt_l_ri_noclobber(FLAGX, 0); #endif } else { /* Avoid the stall the above creates. This is slow on non-P6, though. */ #ifdef UAE COMPCALL(rol_w_ri(FLAGX, 8)); #else COMPCALL(rol_b_ri(FLAGX, 8)); #endif isclean(FLAGX); } } MENDFUNC(0,restore_carry,(void)) MIDFUNC(0,start_needflags,(void)) { needflags=1; } MENDFUNC(0,start_needflags,(void)) MIDFUNC(0,end_needflags,(void)) { needflags=0; } MENDFUNC(0,end_needflags,(void)) MIDFUNC(0,make_flags_live,(void)) { make_flags_live_internal(); } MENDFUNC(0,make_flags_live,(void)) MIDFUNC(1,fflags_into_flags,(W2 tmp)) { clobber_flags(); fflags_into_flags_internal(tmp); } MENDFUNC(1,fflags_into_flags,(W2 tmp)) MIDFUNC(2,bt_l_ri,(RR4 r, IMM i)) /* This is defined as only affecting C */ { int size=4; if (i<16) size=2; CLOBBER_BT; r=readreg(r,size); raw_bt_l_ri(r,i); unlock2(r); } MENDFUNC(2,bt_l_ri,(RR4 r, IMM i)) /* This is defined as only affecting C */ MIDFUNC(2,bt_l_rr,(RR4 r, RR4 b)) /* This is defined as only affecting C */ { CLOBBER_BT; r=readreg(r,4); b=readreg(b,4); raw_bt_l_rr(r,b); unlock2(r); unlock2(b); } MENDFUNC(2,bt_l_rr,(RR4 r, RR4 b)) /* This is defined as only affecting C */ MIDFUNC(2,btc_l_ri,(RW4 r, IMM i)) { int size=4; if (i<16) size=2; CLOBBER_BT; r=rmw(r,size,size); raw_btc_l_ri(r,i); unlock2(r); } MENDFUNC(2,btc_l_ri,(RW4 r, IMM i)) MIDFUNC(2,btc_l_rr,(RW4 r, RR4 b)) { CLOBBER_BT; b=readreg(b,4); r=rmw(r,4,4); raw_btc_l_rr(r,b); unlock2(r); unlock2(b); } MENDFUNC(2,btc_l_rr,(RW4 r, RR4 b)) MIDFUNC(2,btr_l_ri,(RW4 r, IMM i)) { int size=4; if (i<16) size=2; CLOBBER_BT; r=rmw(r,size,size); raw_btr_l_ri(r,i); unlock2(r); } MENDFUNC(2,btr_l_ri,(RW4 r, IMM i)) MIDFUNC(2,btr_l_rr,(RW4 r, RR4 b)) { CLOBBER_BT; b=readreg(b,4); r=rmw(r,4,4); raw_btr_l_rr(r,b); unlock2(r); unlock2(b); } MENDFUNC(2,btr_l_rr,(RW4 r, RR4 b)) MIDFUNC(2,bts_l_ri,(RW4 r, IMM i)) { int size=4; if (i<16) size=2; CLOBBER_BT; r=rmw(r,size,size); raw_bts_l_ri(r,i); unlock2(r); } MENDFUNC(2,bts_l_ri,(RW4 r, IMM i)) MIDFUNC(2,bts_l_rr,(RW4 r, RR4 b)) { CLOBBER_BT; b=readreg(b,4); r=rmw(r,4,4); raw_bts_l_rr(r,b); unlock2(r); unlock2(b); } MENDFUNC(2,bts_l_rr,(RW4 r, RR4 b)) MIDFUNC(2,mov_l_rm,(W4 d, IMM s)) { CLOBBER_MOV; d=writereg(d,4); raw_mov_l_rm(d,s); unlock2(d); } MENDFUNC(2,mov_l_rm,(W4 d, IMM s)) MIDFUNC(1,call_r,(RR4 r)) /* Clobbering is implicit */ { r=readreg(r,4); raw_dec_sp(STACK_SHADOW_SPACE); raw_call_r(r); raw_inc_sp(STACK_SHADOW_SPACE); unlock2(r); } MENDFUNC(1,call_r,(RR4 r)) /* Clobbering is implicit */ MIDFUNC(2,sub_l_mi,(IMM d, IMM s)) { CLOBBER_SUB; raw_sub_l_mi(d,s) ; } MENDFUNC(2,sub_l_mi,(IMM d, IMM s)) MIDFUNC(2,mov_l_mi,(IMM d, IMM s)) { CLOBBER_MOV; raw_mov_l_mi(d,s) ; } MENDFUNC(2,mov_l_mi,(IMM d, IMM s)) MIDFUNC(2,mov_w_mi,(IMM d, IMM s)) { CLOBBER_MOV; raw_mov_w_mi(d,s) ; } MENDFUNC(2,mov_w_mi,(IMM d, IMM s)) MIDFUNC(2,mov_b_mi,(IMM d, IMM s)) { CLOBBER_MOV; raw_mov_b_mi(d,s) ; } MENDFUNC(2,mov_b_mi,(IMM d, IMM s)) MIDFUNC(2,rol_b_ri,(RW1 r, IMM i)) { if (!i && !needflags) return; CLOBBER_ROL; r=rmw(r,1,1); raw_rol_b_ri(r,i); unlock2(r); } MENDFUNC(2,rol_b_ri,(RW1 r, IMM i)) MIDFUNC(2,rol_w_ri,(RW2 r, IMM i)) { if (!i && !needflags) return; CLOBBER_ROL; r=rmw(r,2,2); raw_rol_w_ri(r,i); unlock2(r); } MENDFUNC(2,rol_w_ri,(RW2 r, IMM i)) MIDFUNC(2,rol_l_ri,(RW4 r, IMM i)) { if (!i && !needflags) return; CLOBBER_ROL; r=rmw(r,4,4); raw_rol_l_ri(r,i); unlock2(r); } MENDFUNC(2,rol_l_ri,(RW4 r, IMM i)) MIDFUNC(2,rol_l_rr,(RW4 d, RR1 r)) { if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(rol_l_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_ROL; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,4,4); Dif (r!=X86_CL) { jit_abort("Illegal register %d in rol_l_rr",r); } raw_rol_l_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,rol_l_rr,(RW4 d, RR1 r)) MIDFUNC(2,rol_w_rr,(RW2 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(rol_w_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_ROL; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,2,2); Dif (r!=X86_CL) { jit_abort("Illegal register %d in rol_w_rr",r); } raw_rol_w_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,rol_w_rr,(RW2 d, RR1 r)) MIDFUNC(2,rol_b_rr,(RW1 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(rol_b_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_ROL; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,1,1); Dif (r!=X86_CL) { jit_abort("Illegal register %d in rol_b_rr",r); } raw_rol_b_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,rol_b_rr,(RW1 d, RR1 r)) MIDFUNC(2,shll_l_rr,(RW4 d, RR1 r)) { if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(shll_l_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHLL; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,4,4); Dif (r!=X86_CL) { jit_abort("Illegal register %d in shll_l_rr",r); } raw_shll_l_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,shll_l_rr,(RW4 d, RR1 r)) MIDFUNC(2,shll_w_rr,(RW2 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(shll_w_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHLL; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,2,2); Dif (r!=X86_CL) { jit_abort("Illegal register %d in shll_w_rr",r); } raw_shll_w_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,shll_w_rr,(RW2 d, RR1 r)) MIDFUNC(2,shll_b_rr,(RW1 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(shll_b_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHLL; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,1,1); Dif (r!=X86_CL) { jit_abort("Illegal register %d in shll_b_rr",r); } raw_shll_b_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,shll_b_rr,(RW1 d, RR1 r)) MIDFUNC(2,ror_b_ri,(RR1 r, IMM i)) { if (!i && !needflags) return; CLOBBER_ROR; r=rmw(r,1,1); raw_ror_b_ri(r,i); unlock2(r); } MENDFUNC(2,ror_b_ri,(RR1 r, IMM i)) MIDFUNC(2,ror_w_ri,(RR2 r, IMM i)) { if (!i && !needflags) return; CLOBBER_ROR; r=rmw(r,2,2); raw_ror_w_ri(r,i); unlock2(r); } MENDFUNC(2,ror_w_ri,(RR2 r, IMM i)) MIDFUNC(2,ror_l_ri,(RR4 r, IMM i)) { if (!i && !needflags) return; CLOBBER_ROR; r=rmw(r,4,4); raw_ror_l_ri(r,i); unlock2(r); } MENDFUNC(2,ror_l_ri,(RR4 r, IMM i)) MIDFUNC(2,ror_l_rr,(RR4 d, RR1 r)) { if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(ror_l_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_ROR; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,4,4); raw_ror_l_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,ror_l_rr,(RR4 d, RR1 r)) MIDFUNC(2,ror_w_rr,(RR2 d, RR1 r)) { if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(ror_w_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_ROR; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,2,2); raw_ror_w_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,ror_w_rr,(RR2 d, RR1 r)) MIDFUNC(2,ror_b_rr,(RR1 d, RR1 r)) { if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(ror_b_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_ROR; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,1,1); raw_ror_b_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,ror_b_rr,(RR1 d, RR1 r)) MIDFUNC(2,shrl_l_rr,(RW4 d, RR1 r)) { if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(shrl_l_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHRL; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,4,4); Dif (r!=X86_CL) { jit_abort("Illegal register %d in shrl_l_rr",r); } raw_shrl_l_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,shrl_l_rr,(RW4 d, RR1 r)) MIDFUNC(2,shrl_w_rr,(RW2 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(shrl_w_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHRL; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,2,2); Dif (r!=X86_CL) { jit_abort("Illegal register %d in shrl_w_rr",r); } raw_shrl_w_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,shrl_w_rr,(RW2 d, RR1 r)) MIDFUNC(2,shrl_b_rr,(RW1 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(shrl_b_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHRL; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,1,1); Dif (r!=X86_CL) { jit_abort("Illegal register %d in shrl_b_rr",r); } raw_shrl_b_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,shrl_b_rr,(RW1 d, RR1 r)) MIDFUNC(2,shll_l_ri,(RW4 r, IMM i)) { if (!i && !needflags) return; if (isconst(r) && !needflags) { live.state[r].val<<=i; return; } CLOBBER_SHLL; r=rmw(r,4,4); raw_shll_l_ri(r,i); unlock2(r); } MENDFUNC(2,shll_l_ri,(RW4 r, IMM i)) MIDFUNC(2,shll_w_ri,(RW2 r, IMM i)) { if (!i && !needflags) return; CLOBBER_SHLL; r=rmw(r,2,2); raw_shll_w_ri(r,i); unlock2(r); } MENDFUNC(2,shll_w_ri,(RW2 r, IMM i)) MIDFUNC(2,shll_b_ri,(RW1 r, IMM i)) { if (!i && !needflags) return; CLOBBER_SHLL; r=rmw(r,1,1); raw_shll_b_ri(r,i); unlock2(r); } MENDFUNC(2,shll_b_ri,(RW1 r, IMM i)) MIDFUNC(2,shrl_l_ri,(RW4 r, IMM i)) { if (!i && !needflags) return; if (isconst(r) && !needflags) { live.state[r].val>>=i; return; } CLOBBER_SHRL; r=rmw(r,4,4); raw_shrl_l_ri(r,i); unlock2(r); } MENDFUNC(2,shrl_l_ri,(RW4 r, IMM i)) MIDFUNC(2,shrl_w_ri,(RW2 r, IMM i)) { if (!i && !needflags) return; CLOBBER_SHRL; r=rmw(r,2,2); raw_shrl_w_ri(r,i); unlock2(r); } MENDFUNC(2,shrl_w_ri,(RW2 r, IMM i)) MIDFUNC(2,shrl_b_ri,(RW1 r, IMM i)) { if (!i && !needflags) return; CLOBBER_SHRL; r=rmw(r,1,1); raw_shrl_b_ri(r,i); unlock2(r); } MENDFUNC(2,shrl_b_ri,(RW1 r, IMM i)) MIDFUNC(2,shra_l_ri,(RW4 r, IMM i)) { if (!i && !needflags) return; CLOBBER_SHRA; r=rmw(r,4,4); raw_shra_l_ri(r,i); unlock2(r); } MENDFUNC(2,shra_l_ri,(RW4 r, IMM i)) MIDFUNC(2,shra_w_ri,(RW2 r, IMM i)) { if (!i && !needflags) return; CLOBBER_SHRA; r=rmw(r,2,2); raw_shra_w_ri(r,i); unlock2(r); } MENDFUNC(2,shra_w_ri,(RW2 r, IMM i)) MIDFUNC(2,shra_b_ri,(RW1 r, IMM i)) { if (!i && !needflags) return; CLOBBER_SHRA; r=rmw(r,1,1); raw_shra_b_ri(r,i); unlock2(r); } MENDFUNC(2,shra_b_ri,(RW1 r, IMM i)) MIDFUNC(2,shra_l_rr,(RW4 d, RR1 r)) { if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(shra_l_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHRA; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,4,4); Dif (r!=X86_CL) { jit_abort("Illegal register %d in shra_l_rr",r); } raw_shra_l_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,shra_l_rr,(RW4 d, RR1 r)) MIDFUNC(2,shra_w_rr,(RW2 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(shra_w_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHRA; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,2,2); Dif (r!=X86_CL) { jit_abort("Illegal register %d in shra_w_rr",r); } raw_shra_w_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,shra_w_rr,(RW2 d, RR1 r)) MIDFUNC(2,shra_b_rr,(RW1 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r) && (uae_u8)live.state[r].val != 0) { COMPCALL(shra_b_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHRA; r=readreg_specific(r,1,SHIFTCOUNT_NREG); d=rmw(d,1,1); Dif (r!=X86_CL) { jit_abort("Illegal register %d in shra_b_rr",r); } raw_shra_b_rr(d,r) ; unlock2(r); unlock2(d); } MENDFUNC(2,shra_b_rr,(RW1 d, RR1 r)) MIDFUNC(2,setcc,(W1 d, IMM cc)) { CLOBBER_SETCC; d=writereg(d,1); raw_setcc(d,cc); unlock2(d); } MENDFUNC(2,setcc,(W1 d, IMM cc)) MIDFUNC(2,setcc_m,(IMM d, IMM cc)) { CLOBBER_SETCC; raw_setcc_m(d,cc); } MENDFUNC(2,setcc_m,(IMM d, IMM cc)) MIDFUNC(3,cmov_l_rr,(RW4 d, RR4 s, IMM cc)) { if (d==s) return; CLOBBER_CMOV; s=readreg(s,4); d=rmw(d,4,4); raw_cmov_l_rr(d,s,cc); unlock2(s); unlock2(d); } MENDFUNC(3,cmov_l_rr,(RW4 d, RR4 s, IMM cc)) MIDFUNC(3,cmov_l_rm,(RW4 d, IMM s, IMM cc)) { CLOBBER_CMOV; d=rmw(d,4,4); raw_cmov_l_rm(d,s,cc); unlock2(d); } MENDFUNC(3,cmov_l_rm,(RW4 d, IMM s, IMM cc)) MIDFUNC(2,bsf_l_rr,(W4 d, RR4 s)) { CLOBBER_BSF; s = readreg(s, 4); d = writereg(d, 4); raw_bsf_l_rr(d, s); unlock2(s); unlock2(d); } MENDFUNC(2,bsf_l_rr,(W4 d, RR4 s)) /* Set the Z flag depending on the value in s. Note that the value has to be 0 or -1 (or, more precisely, for non-zero values, bit 14 must be set)! */ MIDFUNC(2,simulate_bsf,(W4 tmp, RW4 s)) { CLOBBER_BSF; s=rmw_specific(s,4,4,FLAG_NREG3); tmp=writereg(tmp,4); raw_flags_set_zero(s, tmp); unlock2(tmp); unlock2(s); } MENDFUNC(2,simulate_bsf,(W4 tmp, RW4 s)) MIDFUNC(2,imul_32_32,(RW4 d, RR4 s)) { CLOBBER_MUL; s=readreg(s,4); d=rmw(d,4,4); raw_imul_32_32(d,s); unlock2(s); unlock2(d); } MENDFUNC(2,imul_32_32,(RW4 d, RR4 s)) MIDFUNC(2,imul_64_32,(RW4 d, RW4 s)) { CLOBBER_MUL; s=rmw_specific(s,4,4,MUL_NREG2); d=rmw_specific(d,4,4,MUL_NREG1); raw_imul_64_32(d,s); unlock2(s); unlock2(d); } MENDFUNC(2,imul_64_32,(RW4 d, RW4 s)) MIDFUNC(2,mul_64_32,(RW4 d, RW4 s)) { CLOBBER_MUL; s=rmw_specific(s,4,4,MUL_NREG2); d=rmw_specific(d,4,4,MUL_NREG1); raw_mul_64_32(d,s); unlock2(s); unlock2(d); } MENDFUNC(2,mul_64_32,(RW4 d, RW4 s)) MIDFUNC(2,mul_32_32,(RW4 d, RR4 s)) { CLOBBER_MUL; s=readreg(s,4); d=rmw(d,4,4); raw_mul_32_32(d,s); unlock2(s); unlock2(d); } MENDFUNC(2,mul_32_32,(RW4 d, RR4 s)) #if SIZEOF_VOID_P == 8 MIDFUNC(2,sign_extend_32_rr,(W4 d, RR2 s)) { int isrmw; if (isconst(s)) { set_const(d,(uae_s32)live.state[s].val); return; } CLOBBER_SE32; isrmw=(s==d); if (!isrmw) { s=readreg(s,4); d=writereg(d,4); } else { /* If we try to lock this twice, with different sizes, we are int trouble! */ s=d=rmw(s,4,4); } raw_sign_extend_32_rr(d,s); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(2,sign_extend_32_rr,(W4 d, RR2 s)) #endif MIDFUNC(2,sign_extend_16_rr,(W4 d, RR2 s)) { int isrmw; if (isconst(s)) { set_const(d,(uae_s32)(uae_s16)live.state[s].val); return; } CLOBBER_SE16; isrmw=(s==d); if (!isrmw) { s=readreg(s,2); d=writereg(d,4); } else { /* If we try to lock this twice, with different sizes, we are int trouble! */ s=d=rmw(s,4,2); } raw_sign_extend_16_rr(d,s); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(2,sign_extend_16_rr,(W4 d, RR2 s)) MIDFUNC(2,sign_extend_8_rr,(W4 d, RR1 s)) { int isrmw; if (isconst(s)) { set_const(d,(uae_s32)(uae_s8)live.state[s].val); return; } isrmw=(s==d); CLOBBER_SE8; if (!isrmw) { s=readreg(s,1); d=writereg(d,4); } else { /* If we try to lock this twice, with different sizes, we are int trouble! */ s=d=rmw(s,4,1); } raw_sign_extend_8_rr(d,s); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(2,sign_extend_8_rr,(W4 d, RR1 s)) MIDFUNC(2,zero_extend_16_rr,(W4 d, RR2 s)) { int isrmw; if (isconst(s)) { set_const(d,(uae_u32)(uae_u16)live.state[s].val); return; } isrmw=(s==d); CLOBBER_ZE16; if (!isrmw) { s=readreg(s,2); d=writereg(d,4); } else { /* If we try to lock this twice, with different sizes, we are int trouble! */ s=d=rmw(s,4,2); } raw_zero_extend_16_rr(d,s); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(2,zero_extend_16_rr,(W4 d, RR2 s)) MIDFUNC(2,zero_extend_8_rr,(W4 d, RR1 s)) { int isrmw; if (isconst(s)) { set_const(d,(uae_u32)(uae_u8)live.state[s].val); return; } isrmw=(s==d); CLOBBER_ZE8; if (!isrmw) { s=readreg(s,1); d=writereg(d,4); } else { /* If we try to lock this twice, with different sizes, we are int trouble! */ s=d=rmw(s,4,1); } raw_zero_extend_8_rr(d,s); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(2,zero_extend_8_rr,(W4 d, RR1 s)) MIDFUNC(2,mov_b_rr,(W1 d, RR1 s)) { if (d==s) return; if (isconst(s)) { COMPCALL(mov_b_ri)(d,(uae_u8)live.state[s].val); return; } CLOBBER_MOV; s=readreg(s,1); d=writereg(d,1); raw_mov_b_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,mov_b_rr,(W1 d, RR1 s)) MIDFUNC(2,mov_w_rr,(W2 d, RR2 s)) { if (d==s) return; if (isconst(s)) { COMPCALL(mov_w_ri)(d,(uae_u16)live.state[s].val); return; } CLOBBER_MOV; s=readreg(s,2); d=writereg(d,2); raw_mov_w_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,mov_w_rr,(W2 d, RR2 s)) MIDFUNC(4,mov_l_rrm_indexed,(W4 d,RR4 baser, RR4 index, IMM factor)) { CLOBBER_MOV; baser=readreg(baser,4); index=readreg(index,4); d=writereg(d,4); raw_mov_l_rrm_indexed(d,baser,index,factor); unlock2(d); unlock2(baser); unlock2(index); } MENDFUNC(4,mov_l_rrm_indexed,(W4 d,RR4 baser, RR4 index, IMM factor)) MIDFUNC(4,mov_w_rrm_indexed,(W2 d, RR4 baser, RR4 index, IMM factor)) { CLOBBER_MOV; baser=readreg(baser,4); index=readreg(index,4); d=writereg(d,2); raw_mov_w_rrm_indexed(d,baser,index,factor); unlock2(d); unlock2(baser); unlock2(index); } MENDFUNC(4,mov_w_rrm_indexed,(W2 d, RR4 baser, RR4 index, IMM factor)) MIDFUNC(4,mov_b_rrm_indexed,(W1 d, RR4 baser, RR4 index, IMM factor)) { CLOBBER_MOV; baser=readreg(baser,4); index=readreg(index,4); d=writereg(d,1); raw_mov_b_rrm_indexed(d,baser,index,factor); unlock2(d); unlock2(baser); unlock2(index); } MENDFUNC(4,mov_b_rrm_indexed,(W1 d, RR4 baser, RR4 index, IMM factor)) MIDFUNC(4,mov_l_mrr_indexed,(RR4 baser, RR4 index, IMM factor, RR4 s)) { CLOBBER_MOV; baser=readreg(baser,4); index=readreg(index,4); s=readreg(s,4); Dif (baser==s || index==s) jit_abort("mov_l_mrr_indexed"); raw_mov_l_mrr_indexed(baser,index,factor,s); unlock2(s); unlock2(baser); unlock2(index); } MENDFUNC(4,mov_l_mrr_indexed,(RR4 baser, RR4 index, IMM factor, RR4 s)) MIDFUNC(4,mov_w_mrr_indexed,(RR4 baser, RR4 index, IMM factor, RR2 s)) { CLOBBER_MOV; baser=readreg(baser,4); index=readreg(index,4); s=readreg(s,2); raw_mov_w_mrr_indexed(baser,index,factor,s); unlock2(s); unlock2(baser); unlock2(index); } MENDFUNC(4,mov_w_mrr_indexed,(RR4 baser, RR4 index, IMM factor, RR2 s)) MIDFUNC(4,mov_b_mrr_indexed,(RR4 baser, RR4 index, IMM factor, RR1 s)) { CLOBBER_MOV; s=readreg(s,1); baser=readreg(baser,4); index=readreg(index,4); raw_mov_b_mrr_indexed(baser,index,factor,s); unlock2(s); unlock2(baser); unlock2(index); } MENDFUNC(4,mov_b_mrr_indexed,(RR4 baser, RR4 index, IMM factor, RR1 s)) MIDFUNC(5,mov_l_bmrr_indexed,(IMM base, RR4 baser, RR4 index, IMM factor, RR4 s)) { int basereg=baser; int indexreg=index; CLOBBER_MOV; s=readreg(s,4); baser=readreg_offset(baser,4); index=readreg_offset(index,4); base+=get_offset(basereg); base+=factor*get_offset(indexreg); raw_mov_l_bmrr_indexed(base,baser,index,factor,s); unlock2(s); unlock2(baser); unlock2(index); } MENDFUNC(5,mov_l_bmrr_indexed,(IMM base, RR4 baser, RR4 index, IMM factor, RR4 s)) MIDFUNC(5,mov_w_bmrr_indexed,(IMM base, RR4 baser, RR4 index, IMM factor, RR2 s)) { int basereg=baser; int indexreg=index; CLOBBER_MOV; s=readreg(s,2); baser=readreg_offset(baser,4); index=readreg_offset(index,4); base+=get_offset(basereg); base+=factor*get_offset(indexreg); raw_mov_w_bmrr_indexed(base,baser,index,factor,s); unlock2(s); unlock2(baser); unlock2(index); } MENDFUNC(5,mov_w_bmrr_indexed,(IMM base, RR4 baser, RR4 index, IMM factor, RR2 s)) MIDFUNC(5,mov_b_bmrr_indexed,(IMM base, RR4 baser, RR4 index, IMM factor, RR1 s)) { int basereg=baser; int indexreg=index; CLOBBER_MOV; s=readreg(s,1); baser=readreg_offset(baser,4); index=readreg_offset(index,4); base+=get_offset(basereg); base+=factor*get_offset(indexreg); raw_mov_b_bmrr_indexed(base,baser,index,factor,s); unlock2(s); unlock2(baser); unlock2(index); } MENDFUNC(5,mov_b_bmrr_indexed,(IMM base, RR4 baser, RR4 index, IMM factor, RR1 s)) /* Read a long from base+baser+factor*index */ MIDFUNC(5,mov_l_brrm_indexed,(W4 d, IMM base, RR4 baser, RR4 index, IMM factor)) { int basereg=baser; int indexreg=index; CLOBBER_MOV; baser=readreg_offset(baser,4); index=readreg_offset(index,4); base+=get_offset(basereg); base+=factor*get_offset(indexreg); d=writereg(d,4); raw_mov_l_brrm_indexed(d,base,baser,index,factor); unlock2(d); unlock2(baser); unlock2(index); } MENDFUNC(5,mov_l_brrm_indexed,(W4 d, IMM base, RR4 baser, RR4 index, IMM factor)) MIDFUNC(5,mov_w_brrm_indexed,(W2 d, IMM base, RR4 baser, RR4 index, IMM factor)) { int basereg=baser; int indexreg=index; CLOBBER_MOV; remove_offset(d,-1); baser=readreg_offset(baser,4); index=readreg_offset(index,4); base+=get_offset(basereg); base+=factor*get_offset(indexreg); d=writereg(d,2); raw_mov_w_brrm_indexed(d,base,baser,index,factor); unlock2(d); unlock2(baser); unlock2(index); } MENDFUNC(5,mov_w_brrm_indexed,(W2 d, IMM base, RR4 baser, RR4 index, IMM factor)) MIDFUNC(5,mov_b_brrm_indexed,(W1 d, IMM base, RR4 baser, RR4 index, IMM factor)) { int basereg=baser; int indexreg=index; CLOBBER_MOV; remove_offset(d,-1); baser=readreg_offset(baser,4); index=readreg_offset(index,4); base+=get_offset(basereg); base+=factor*get_offset(indexreg); d=writereg(d,1); raw_mov_b_brrm_indexed(d,base,baser,index,factor); unlock2(d); unlock2(baser); unlock2(index); } MENDFUNC(5,mov_b_brrm_indexed,(W1 d, IMM base, RR4 baser, RR4 index, IMM factor)) /* Read a long from base+factor*index */ MIDFUNC(4,mov_l_rm_indexed,(W4 d, IMM base, RR4 index, IMM factor)) { int indexreg=index; if (isconst(index)) { COMPCALL(mov_l_rm)(d,base+factor*live.state[index].val); return; } CLOBBER_MOV; index=readreg_offset(index,4); base+=get_offset(indexreg)*factor; d=writereg(d,4); raw_mov_l_rm_indexed(d,base,index,factor); unlock2(index); unlock2(d); } MENDFUNC(4,mov_l_rm_indexed,(W4 d, IMM base, RR4 index, IMM factor)) /* read the long at the address contained in s+offset and store in d */ MIDFUNC(3,mov_l_rR,(W4 d, RR4 s, IMM offset)) { if (isconst(s)) { COMPCALL(mov_l_rm)(d,live.state[s].val+offset); return; } CLOBBER_MOV; s=readreg(s,4); d=writereg(d,4); raw_mov_l_rR(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_l_rR,(W4 d, RR4 s, IMM offset)) /* read the word at the address contained in s+offset and store in d */ MIDFUNC(3,mov_w_rR,(W2 d, RR4 s, IMM offset)) { if (isconst(s)) { COMPCALL(mov_w_rm)(d,live.state[s].val+offset); return; } CLOBBER_MOV; s=readreg(s,4); d=writereg(d,2); raw_mov_w_rR(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_w_rR,(W2 d, RR4 s, IMM offset)) /* read the word at the address contained in s+offset and store in d */ MIDFUNC(3,mov_b_rR,(W1 d, RR4 s, IMM offset)) { if (isconst(s)) { COMPCALL(mov_b_rm)(d,live.state[s].val+offset); return; } CLOBBER_MOV; s=readreg(s,4); d=writereg(d,1); raw_mov_b_rR(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_b_rR,(W1 d, RR4 s, IMM offset)) /* read the long at the address contained in s+offset and store in d */ MIDFUNC(3,mov_l_brR,(W4 d, RR4 s, IMM offset)) { int sreg=s; if (isconst(s)) { COMPCALL(mov_l_rm)(d,live.state[s].val+offset); return; } CLOBBER_MOV; s=readreg_offset(s,4); offset+=get_offset(sreg); d=writereg(d,4); raw_mov_l_brR(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_l_brR,(W4 d, RR4 s, IMM offset)) /* read the word at the address contained in s+offset and store in d */ MIDFUNC(3,mov_w_brR,(W2 d, RR4 s, IMM offset)) { int sreg=s; if (isconst(s)) { COMPCALL(mov_w_rm)(d,live.state[s].val+offset); return; } CLOBBER_MOV; remove_offset(d,-1); s=readreg_offset(s,4); offset+=get_offset(sreg); d=writereg(d,2); raw_mov_w_brR(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_w_brR,(W2 d, RR4 s, IMM offset)) /* read the word at the address contained in s+offset and store in d */ MIDFUNC(3,mov_b_brR,(W1 d, RR4 s, IMM offset)) { int sreg=s; if (isconst(s)) { COMPCALL(mov_b_rm)(d,live.state[s].val+offset); return; } CLOBBER_MOV; remove_offset(d,-1); s=readreg_offset(s,4); offset+=get_offset(sreg); d=writereg(d,1); raw_mov_b_brR(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_b_brR,(W1 d, RR4 s, IMM offset)) MIDFUNC(3,mov_l_Ri,(RR4 d, IMM i, IMM offset)) { int dreg=d; if (isconst(d)) { COMPCALL(mov_l_mi)(live.state[d].val+offset,i); return; } CLOBBER_MOV; d=readreg_offset(d,4); offset+=get_offset(dreg); raw_mov_l_Ri(d,i,offset); unlock2(d); } MENDFUNC(3,mov_l_Ri,(RR4 d, IMM i, IMM offset)) MIDFUNC(3,mov_w_Ri,(RR4 d, IMM i, IMM offset)) { int dreg=d; if (isconst(d)) { COMPCALL(mov_w_mi)(live.state[d].val+offset,i); return; } CLOBBER_MOV; d=readreg_offset(d,4); offset+=get_offset(dreg); raw_mov_w_Ri(d,i,offset); unlock2(d); } MENDFUNC(3,mov_w_Ri,(RR4 d, IMM i, IMM offset)) MIDFUNC(3,mov_b_Ri,(RR4 d, IMM i, IMM offset)) { int dreg=d; if (isconst(d)) { COMPCALL(mov_b_mi)(live.state[d].val+offset,i); return; } CLOBBER_MOV; d=readreg_offset(d,4); offset+=get_offset(dreg); raw_mov_b_Ri(d,i,offset); unlock2(d); } MENDFUNC(3,mov_b_Ri,(RR4 d, IMM i, IMM offset)) /* Warning! OFFSET is byte sized only! */ MIDFUNC(3,mov_l_Rr,(RR4 d, RR4 s, IMM offset)) { if (isconst(d)) { COMPCALL(mov_l_mr)(live.state[d].val+offset,s); return; } if (isconst(s)) { COMPCALL(mov_l_Ri)(d,live.state[s].val,offset); return; } CLOBBER_MOV; s=readreg(s,4); d=readreg(d,4); raw_mov_l_Rr(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_l_Rr,(RR4 d, RR4 s, IMM offset)) MIDFUNC(3,mov_w_Rr,(RR4 d, RR2 s, IMM offset)) { if (isconst(d)) { COMPCALL(mov_w_mr)(live.state[d].val+offset,s); return; } if (isconst(s)) { COMPCALL(mov_w_Ri)(d,(uae_u16)live.state[s].val,offset); return; } CLOBBER_MOV; s=readreg(s,2); d=readreg(d,4); raw_mov_w_Rr(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_w_Rr,(RR4 d, RR2 s, IMM offset)) MIDFUNC(3,mov_b_Rr,(RR4 d, RR1 s, IMM offset)) { if (isconst(d)) { COMPCALL(mov_b_mr)(live.state[d].val+offset,s); return; } if (isconst(s)) { COMPCALL(mov_b_Ri)(d,(uae_u8)live.state[s].val,offset); return; } CLOBBER_MOV; s=readreg(s,1); d=readreg(d,4); raw_mov_b_Rr(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_b_Rr,(RR4 d, RR1 s, IMM offset)) MIDFUNC(3,lea_l_brr,(W4 d, RR4 s, IMM offset)) { if (isconst(s)) { COMPCALL(mov_l_ri)(d,live.state[s].val+offset); return; } #if USE_OFFSET if (d==s) { add_offset(d,offset); return; } #endif CLOBBER_LEA; s=readreg(s,4); d=writereg(d,4); raw_lea_l_brr(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,lea_l_brr,(W4 d, RR4 s, IMM offset)) MIDFUNC(5,lea_l_brr_indexed,(W4 d, RR4 s, RR4 index, IMM factor, IMM offset)) { if (!offset) { COMPCALL(lea_l_rr_indexed)(d,s,index,factor); return; } CLOBBER_LEA; s=readreg(s,4); index=readreg(index,4); d=writereg(d,4); raw_lea_l_brr_indexed(d,s,index,factor,offset); unlock2(d); unlock2(index); unlock2(s); } MENDFUNC(5,lea_l_brr_indexed,(W4 d, RR4 s, RR4 index, IMM factor, IMM offset)) MIDFUNC(4,lea_l_rr_indexed,(W4 d, RR4 s, RR4 index, IMM factor)) { CLOBBER_LEA; s=readreg(s,4); index=readreg(index,4); d=writereg(d,4); raw_lea_l_rr_indexed(d,s,index,factor); unlock2(d); unlock2(index); unlock2(s); } MENDFUNC(4,lea_l_rr_indexed,(W4 d, RR4 s, RR4 index, IMM factor)) /* write d to the long at the address contained in s+offset */ MIDFUNC(3,mov_l_bRr,(RR4 d, RR4 s, IMM offset)) { int dreg=d; if (isconst(d)) { COMPCALL(mov_l_mr)(live.state[d].val+offset,s); return; } CLOBBER_MOV; s=readreg(s,4); d=readreg_offset(d,4); offset+=get_offset(dreg); raw_mov_l_bRr(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_l_bRr,(RR4 d, RR4 s, IMM offset)) /* write the word at the address contained in s+offset and store in d */ MIDFUNC(3,mov_w_bRr,(RR4 d, RR2 s, IMM offset)) { int dreg=d; if (isconst(d)) { COMPCALL(mov_w_mr)(live.state[d].val+offset,s); return; } CLOBBER_MOV; s=readreg(s,2); d=readreg_offset(d,4); offset+=get_offset(dreg); raw_mov_w_bRr(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_w_bRr,(RR4 d, RR2 s, IMM offset)) MIDFUNC(3,mov_b_bRr,(RR4 d, RR1 s, IMM offset)) { int dreg=d; if (isconst(d)) { COMPCALL(mov_b_mr)(live.state[d].val+offset,s); return; } CLOBBER_MOV; s=readreg(s,1); d=readreg_offset(d,4); offset+=get_offset(dreg); raw_mov_b_bRr(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_b_bRr,(RR4 d, RR1 s, IMM offset)) MIDFUNC(1,mid_bswap_32,(RW4 r)) { if (isconst(r)) { uae_u32 oldv=live.state[r].val; live.state[r].val=reverse32(oldv); return; } CLOBBER_SW32; r=rmw(r,4,4); raw_bswap_32(r); unlock2(r); } MENDFUNC(1,mid_bswap_32,(RW4 r)) MIDFUNC(1,mid_bswap_16,(RW2 r)) { if (isconst(r)) { uae_u32 oldv=live.state[r].val; live.state[r].val=((oldv>>8)&0xff) | ((oldv<<8)&0xff00) | (oldv&0xffff0000); return; } CLOBBER_SW16; r=rmw(r,2,2); raw_bswap_16(r); unlock2(r); } MENDFUNC(1,mid_bswap_16,(RW2 r)) MIDFUNC(2,mov_l_rr,(W4 d, RR4 s)) { int olds; if (d==s) { /* How pointless! */ return; } if (isconst(s)) { COMPCALL(mov_l_ri)(d,live.state[s].val); return; } olds=s; disassociate(d); s=readreg_offset(s,4); live.state[d].realreg=s; live.state[d].realind=live.nat[s].nholds; live.state[d].val=live.state[olds].val; live.state[d].validsize=4; live.state[d].dirtysize=4; set_status(d,DIRTY); live.nat[s].holds[live.nat[s].nholds]=d; live.nat[s].nholds++; log_clobberreg(d); jit_log2("Added %d to nreg %d(%d), now holds %d regs", d,s,live.state[d].realind,live.nat[s].nholds); unlock2(s); } MENDFUNC(2,mov_l_rr,(W4 d, RR4 s)) MIDFUNC(2,mov_l_mr,(IMM d, RR4 s)) { if (isconst(s)) { COMPCALL(mov_l_mi)(d,live.state[s].val); return; } CLOBBER_MOV; s=readreg(s,4); raw_mov_l_mr(d,s); unlock2(s); } MENDFUNC(2,mov_l_mr,(IMM d, RR4 s)) MIDFUNC(2,mov_w_mr,(IMM d, RR2 s)) { if (isconst(s)) { COMPCALL(mov_w_mi)(d,(uae_u16)live.state[s].val); return; } CLOBBER_MOV; s=readreg(s,2); raw_mov_w_mr(d,s); unlock2(s); } MENDFUNC(2,mov_w_mr,(IMM d, RR2 s)) MIDFUNC(2,mov_w_rm,(W2 d, IMM s)) { CLOBBER_MOV; d=writereg(d,2); raw_mov_w_rm(d,s); unlock2(d); } MENDFUNC(2,mov_w_rm,(W2 d, IMM s)) MIDFUNC(2,mov_b_mr,(IMM d, RR1 s)) { if (isconst(s)) { COMPCALL(mov_b_mi)(d,(uae_u8)live.state[s].val); return; } CLOBBER_MOV; s=readreg(s,1); raw_mov_b_mr(d,s); unlock2(s); } MENDFUNC(2,mov_b_mr,(IMM d, RR1 s)) MIDFUNC(2,mov_b_rm,(W1 d, IMM s)) { CLOBBER_MOV; d=writereg(d,1); raw_mov_b_rm(d,s); unlock2(d); } MENDFUNC(2,mov_b_rm,(W1 d, IMM s)) MIDFUNC(2,mov_l_ri,(W4 d, IMM s)) { set_const(d,s); return; } MENDFUNC(2,mov_l_ri,(W4 d, IMM s)) MIDFUNC(2,mov_w_ri,(W2 d, IMM s)) { CLOBBER_MOV; d=writereg(d,2); raw_mov_w_ri(d,s); unlock2(d); } MENDFUNC(2,mov_w_ri,(W2 d, IMM s)) MIDFUNC(2,mov_b_ri,(W1 d, IMM s)) { CLOBBER_MOV; d=writereg(d,1); raw_mov_b_ri(d,s); unlock2(d); } MENDFUNC(2,mov_b_ri,(W1 d, IMM s)) MIDFUNC(2,add_l_mi,(IMM d, IMM s)) { CLOBBER_ADD; raw_add_l_mi(d,s) ; } MENDFUNC(2,add_l_mi,(IMM d, IMM s)) MIDFUNC(2,add_w_mi,(IMM d, IMM s)) { CLOBBER_ADD; raw_add_w_mi(d,s) ; } MENDFUNC(2,add_w_mi,(IMM d, IMM s)) MIDFUNC(2,add_b_mi,(IMM d, IMM s)) { CLOBBER_ADD; raw_add_b_mi(d,s) ; } MENDFUNC(2,add_b_mi,(IMM d, IMM s)) MIDFUNC(2,test_l_ri,(RR4 d, IMM i)) { CLOBBER_TEST; d=readreg(d,4); raw_test_l_ri(d,i); unlock2(d); } MENDFUNC(2,test_l_ri,(RR4 d, IMM i)) MIDFUNC(2,test_l_rr,(RR4 d, RR4 s)) { CLOBBER_TEST; d=readreg(d,4); s=readreg(s,4); raw_test_l_rr(d,s);; unlock2(d); unlock2(s); } MENDFUNC(2,test_l_rr,(RR4 d, RR4 s)) MIDFUNC(2,test_w_rr,(RR2 d, RR2 s)) { CLOBBER_TEST; d=readreg(d,2); s=readreg(s,2); raw_test_w_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,test_w_rr,(RR2 d, RR2 s)) MIDFUNC(2,test_b_rr,(RR1 d, RR1 s)) { CLOBBER_TEST; d=readreg(d,1); s=readreg(s,1); raw_test_b_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,test_b_rr,(RR1 d, RR1 s)) MIDFUNC(2,and_l_ri,(RW4 d, IMM i)) { if (isconst(d) && !needflags) { live.state[d].val &= i; return; } CLOBBER_AND; d=rmw(d,4,4); raw_and_l_ri(d,i); unlock2(d); } MENDFUNC(2,and_l_ri,(RW4 d, IMM i)) MIDFUNC(2,and_l,(RW4 d, RR4 s)) { CLOBBER_AND; s=readreg(s,4); d=rmw(d,4,4); raw_and_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,and_l,(RW4 d, RR4 s)) MIDFUNC(2,and_w,(RW2 d, RR2 s)) { CLOBBER_AND; s=readreg(s,2); d=rmw(d,2,2); raw_and_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,and_w,(RW2 d, RR2 s)) MIDFUNC(2,and_b,(RW1 d, RR1 s)) { CLOBBER_AND; s=readreg(s,1); d=rmw(d,1,1); raw_and_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,and_b,(RW1 d, RR1 s)) // gb-- used for making an fpcr value in compemu_fpp.cpp MIDFUNC(2,or_l_rm,(RW4 d, IMM s)) { CLOBBER_OR; d=rmw(d,4,4); raw_or_l_rm(d,s); unlock2(d); } MENDFUNC(2,or_l_rm,(RW4 d, IMM s)) MIDFUNC(2,or_l_ri,(RW4 d, IMM i)) { if (isconst(d) && !needflags) { live.state[d].val|=i; return; } CLOBBER_OR; d=rmw(d,4,4); raw_or_l_ri(d,i); unlock2(d); } MENDFUNC(2,or_l_ri,(RW4 d, IMM i)) MIDFUNC(2,or_l,(RW4 d, RR4 s)) { if (isconst(d) && isconst(s) && !needflags) { live.state[d].val|=live.state[s].val; return; } CLOBBER_OR; s=readreg(s,4); d=rmw(d,4,4); raw_or_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,or_l,(RW4 d, RR4 s)) MIDFUNC(2,or_w,(RW2 d, RR2 s)) { CLOBBER_OR; s=readreg(s,2); d=rmw(d,2,2); raw_or_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,or_w,(RW2 d, RR2 s)) MIDFUNC(2,or_b,(RW1 d, RR1 s)) { CLOBBER_OR; s=readreg(s,1); d=rmw(d,1,1); raw_or_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,or_b,(RW1 d, RR1 s)) MIDFUNC(2,adc_l,(RW4 d, RR4 s)) { CLOBBER_ADC; s=readreg(s,4); d=rmw(d,4,4); raw_adc_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,adc_l,(RW4 d, RR4 s)) MIDFUNC(2,adc_w,(RW2 d, RR2 s)) { CLOBBER_ADC; s=readreg(s,2); d=rmw(d,2,2); raw_adc_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,adc_w,(RW2 d, RR2 s)) MIDFUNC(2,adc_b,(RW1 d, RR1 s)) { CLOBBER_ADC; s=readreg(s,1); d=rmw(d,1,1); raw_adc_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,adc_b,(RW1 d, RR1 s)) MIDFUNC(2,add_l,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(add_l_ri)(d,live.state[s].val); return; } CLOBBER_ADD; s=readreg(s,4); d=rmw(d,4,4); raw_add_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,add_l,(RW4 d, RR4 s)) MIDFUNC(2,add_w,(RW2 d, RR2 s)) { if (isconst(s)) { COMPCALL(add_w_ri)(d,(uae_u16)live.state[s].val); return; } CLOBBER_ADD; s=readreg(s,2); d=rmw(d,2,2); raw_add_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,add_w,(RW2 d, RR2 s)) MIDFUNC(2,add_b,(RW1 d, RR1 s)) { if (isconst(s)) { COMPCALL(add_b_ri)(d,(uae_u8)live.state[s].val); return; } CLOBBER_ADD; s=readreg(s,1); d=rmw(d,1,1); raw_add_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,add_b,(RW1 d, RR1 s)) MIDFUNC(2,sub_l_ri,(RW4 d, IMM i)) { if (!i && !needflags) return; if (isconst(d) && !needflags) { live.state[d].val-=i; return; } #if USE_OFFSET if (!needflags) { add_offset(d,-i); return; } #endif CLOBBER_SUB; d=rmw(d,4,4); raw_sub_l_ri(d,i); unlock2(d); } MENDFUNC(2,sub_l_ri,(RW4 d, IMM i)) MIDFUNC(2,sub_w_ri,(RW2 d, IMM i)) { if (!i && !needflags) return; CLOBBER_SUB; d=rmw(d,2,2); raw_sub_w_ri(d,i); unlock2(d); } MENDFUNC(2,sub_w_ri,(RW2 d, IMM i)) MIDFUNC(2,sub_b_ri,(RW1 d, IMM i)) { if (!i && !needflags) return; CLOBBER_SUB; d=rmw(d,1,1); raw_sub_b_ri(d,i); unlock2(d); } MENDFUNC(2,sub_b_ri,(RW1 d, IMM i)) MIDFUNC(2,add_l_ri,(RW4 d, IMM i)) { if (!i && !needflags) return; if (isconst(d) && !needflags) { live.state[d].val+=i; return; } #if USE_OFFSET if (!needflags) { add_offset(d,i); return; } #endif CLOBBER_ADD; d=rmw(d,4,4); raw_add_l_ri(d,i); unlock2(d); } MENDFUNC(2,add_l_ri,(RW4 d, IMM i)) MIDFUNC(2,add_w_ri,(RW2 d, IMM i)) { if (!i && !needflags) return; CLOBBER_ADD; d=rmw(d,2,2); raw_add_w_ri(d,i); unlock2(d); } MENDFUNC(2,add_w_ri,(RW2 d, IMM i)) MIDFUNC(2,add_b_ri,(RW1 d, IMM i)) { if (!i && !needflags) return; CLOBBER_ADD; d=rmw(d,1,1); raw_add_b_ri(d,i); unlock2(d); } MENDFUNC(2,add_b_ri,(RW1 d, IMM i)) MIDFUNC(2,sbb_l,(RW4 d, RR4 s)) { CLOBBER_SBB; s=readreg(s,4); d=rmw(d,4,4); raw_sbb_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,sbb_l,(RW4 d, RR4 s)) MIDFUNC(2,sbb_w,(RW2 d, RR2 s)) { CLOBBER_SBB; s=readreg(s,2); d=rmw(d,2,2); raw_sbb_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,sbb_w,(RW2 d, RR2 s)) MIDFUNC(2,sbb_b,(RW1 d, RR1 s)) { CLOBBER_SBB; s=readreg(s,1); d=rmw(d,1,1); raw_sbb_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,sbb_b,(RW1 d, RR1 s)) MIDFUNC(2,sub_l,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(sub_l_ri)(d,live.state[s].val); return; } CLOBBER_SUB; s=readreg(s,4); d=rmw(d,4,4); raw_sub_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,sub_l,(RW4 d, RR4 s)) MIDFUNC(2,sub_w,(RW2 d, RR2 s)) { if (isconst(s)) { COMPCALL(sub_w_ri)(d,(uae_u16)live.state[s].val); return; } CLOBBER_SUB; s=readreg(s,2); d=rmw(d,2,2); raw_sub_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,sub_w,(RW2 d, RR2 s)) MIDFUNC(2,sub_b,(RW1 d, RR1 s)) { if (isconst(s)) { COMPCALL(sub_b_ri)(d,(uae_u8)live.state[s].val); return; } CLOBBER_SUB; s=readreg(s,1); d=rmw(d,1,1); raw_sub_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,sub_b,(RW1 d, RR1 s)) MIDFUNC(2,cmp_l,(RR4 d, RR4 s)) { CLOBBER_CMP; s=readreg(s,4); d=readreg(d,4); raw_cmp_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,cmp_l,(RR4 d, RR4 s)) MIDFUNC(2,cmp_l_ri,(RR4 r, IMM i)) { CLOBBER_CMP; r=readreg(r,4); raw_cmp_l_ri(r,i); unlock2(r); } MENDFUNC(2,cmp_l_ri,(RR4 r, IMM i)) MIDFUNC(2,cmp_w,(RR2 d, RR2 s)) { CLOBBER_CMP; s=readreg(s,2); d=readreg(d,2); raw_cmp_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,cmp_w,(RR2 d, RR2 s)) MIDFUNC(2,cmp_b,(RR1 d, RR1 s)) { CLOBBER_CMP; s=readreg(s,1); d=readreg(d,1); raw_cmp_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,cmp_b,(RR1 d, RR1 s)) MIDFUNC(2,xor_l,(RW4 d, RR4 s)) { CLOBBER_XOR; s=readreg(s,4); d=rmw(d,4,4); raw_xor_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,xor_l,(RW4 d, RR4 s)) MIDFUNC(2,xor_w,(RW2 d, RR2 s)) { CLOBBER_XOR; s=readreg(s,2); d=rmw(d,2,2); raw_xor_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,xor_w,(RW2 d, RR2 s)) MIDFUNC(2,xor_b,(RW1 d, RR1 s)) { CLOBBER_XOR; s=readreg(s,1); d=rmw(d,1,1); raw_xor_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,xor_b,(RW1 d, RR1 s)) MIDFUNC(5,call_r_11,(W4 out1, RR4 r, RR4 in1, IMM osize, IMM isize)) { clobber_flags(); remove_all_offsets(); if (osize==4) { if (out1!=in1 && out1!=r) { COMPCALL(forget_about)(out1); } } else { tomem_c(out1); } in1=readreg_specific(in1,isize,REG_PAR1); r=readreg(r,4); prepare_for_call_1(); /* This should ensure that there won't be any need for swapping nregs in prepare_for_call_2 */ #if USE_NORMAL_CALLING_CONVENTION raw_push_l_r(in1); #endif unlock2(in1); unlock2(r); prepare_for_call_2(); raw_dec_sp(STACK_SHADOW_SPACE); raw_call_r(r); raw_inc_sp(STACK_SHADOW_SPACE); #if USE_NORMAL_CALLING_CONVENTION raw_inc_sp(4); #endif live.nat[REG_RESULT].holds[0]=out1; live.nat[REG_RESULT].nholds=1; live.nat[REG_RESULT].touched=touchcnt++; live.state[out1].realreg=REG_RESULT; live.state[out1].realind=0; live.state[out1].val=0; live.state[out1].validsize=osize; live.state[out1].dirtysize=osize; set_status(out1,DIRTY); } MENDFUNC(5,call_r_11,(W4 out1, RR4 r, RR4 in1, IMM osize, IMM isize)) MIDFUNC(5,call_r_02,(RR4 r, RR4 in1, RR4 in2, IMM isize1, IMM isize2)) { clobber_flags(); remove_all_offsets(); in1=readreg_specific(in1,isize1,REG_PAR1); in2=readreg_specific(in2,isize2,REG_PAR2); r=readreg(r,4); prepare_for_call_1(); /* This should ensure that there won't be any need for swapping nregs in prepare_for_call_2 */ #if USE_NORMAL_CALLING_CONVENTION raw_push_l_r(in2); raw_push_l_r(in1); #endif unlock2(r); unlock2(in1); unlock2(in2); prepare_for_call_2(); raw_dec_sp(STACK_SHADOW_SPACE); raw_call_r(r); raw_inc_sp(STACK_SHADOW_SPACE); #if USE_NORMAL_CALLING_CONVENTION raw_inc_sp(8); #endif } MENDFUNC(5,call_r_02,(RR4 r, RR4 in1, RR4 in2, IMM isize1, IMM isize2)) /* forget_about() takes a mid-layer register */ MIDFUNC(1,forget_about,(W4 r)) { if (isinreg(r)) disassociate(r); live.state[r].val=0; set_status(r,UNDEF); } MENDFUNC(1,forget_about,(W4 r)) MIDFUNC(0,nop,(void)) { raw_emit_nop(); } MENDFUNC(0,nop,(void)) MIDFUNC(1,f_forget_about,(FW r)) { if (f_isinreg(r)) f_disassociate(r); live.fate[r].status=UNDEF; } MENDFUNC(1,f_forget_about,(FW r)) MIDFUNC(1,fmov_pi,(FW r)) { r=f_writereg(r); raw_fmov_pi(r); f_unlock(r); } MENDFUNC(1,fmov_pi,(FW r)) MIDFUNC(1,fmov_log10_2,(FW r)) { r=f_writereg(r); raw_fmov_log10_2(r); f_unlock(r); } MENDFUNC(1,fmov_log10_2,(FW r)) MIDFUNC(1,fmov_log2_e,(FW r)) { r=f_writereg(r); raw_fmov_log2_e(r); f_unlock(r); } MENDFUNC(1,fmov_log2_e,(FW r)) MIDFUNC(1,fmov_loge_2,(FW r)) { r=f_writereg(r); raw_fmov_loge_2(r); f_unlock(r); } MENDFUNC(1,fmov_loge_2,(FW r)) MIDFUNC(1,fmov_1,(FW r)) { r=f_writereg(r); raw_fmov_1(r); f_unlock(r); } MENDFUNC(1,fmov_1,(FW r)) MIDFUNC(1,fmov_0,(FW r)) { r=f_writereg(r); raw_fmov_0(r); f_unlock(r); } MENDFUNC(1,fmov_0,(FW r)) MIDFUNC(2,fmov_rm,(FW r, MEMR m)) { r=f_writereg(r); raw_fmov_rm(r,m); f_unlock(r); } MENDFUNC(2,fmov_rm,(FW r, MEMR m)) MIDFUNC(2,fmovi_rm,(FW r, MEMR m)) { r=f_writereg(r); raw_fmovi_rm(r,m); f_unlock(r); } MENDFUNC(2,fmovi_rm,(FW r, MEMR m)) MIDFUNC(2,fmovi_mr,(MEMW m, FR r)) { r=f_readreg(r); raw_fmovi_mr(m,r); f_unlock(r); } MENDFUNC(2,fmovi_mr,(MEMW m, FR r)) MIDFUNC(3,fmovi_mrb,(MEMW m, FR r, double *bounds)) { r=f_readreg(r); raw_fmovi_mrb(m,r,bounds); f_unlock(r); } MENDFUNC(3,fmovi_mrb,(MEMW m, FR r, double *bounds)) MIDFUNC(2,fmovs_rm,(FW r, MEMR m)) { r=f_writereg(r); raw_fmovs_rm(r,m); f_unlock(r); } MENDFUNC(2,fmovs_rm,(FW r, MEMR m)) MIDFUNC(2,fmovs_mr,(MEMW m, FR r)) { r=f_readreg(r); raw_fmovs_mr(m,r); f_unlock(r); } MENDFUNC(2,fmovs_mr,(MEMW m, FR r)) MIDFUNC(1,fcuts_r,(FRW r)) { r=f_rmw(r); raw_fcuts_r(r); f_unlock(r); } MENDFUNC(1,fcuts_r,(FRW r)) MIDFUNC(1,fcut_r,(FRW r)) { r=f_rmw(r); raw_fcut_r(r); f_unlock(r); } MENDFUNC(1,fcut_r,(FRW r)) MIDFUNC(2,fmov_ext_mr,(MEMW m, FR r)) { r=f_readreg(r); raw_fmov_ext_mr(m,r); f_unlock(r); } MENDFUNC(2,fmov_ext_mr,(MEMW m, FR r)) MIDFUNC(2,fmov_mr,(MEMW m, FR r)) { r=f_readreg(r); raw_fmov_mr(m,r); f_unlock(r); } MENDFUNC(2,fmov_mr,(MEMW m, FR r)) MIDFUNC(2,fmov_ext_rm,(FW r, MEMR m)) { r=f_writereg(r); raw_fmov_ext_rm(r,m); f_unlock(r); } MENDFUNC(2,fmov_ext_rm,(FW r, MEMR m)) MIDFUNC(2,fmov_rr,(FW d, FR s)) { if (d==s) { /* How pointless! */ return; } #if USE_F_ALIAS f_disassociate(d); s=f_readreg(s); live.fate[d].realreg=s; live.fate[d].realind=live.fat[s].nholds; live.fate[d].status=DIRTY; live.fat[s].holds[live.fat[s].nholds]=d; live.fat[s].nholds++; f_unlock(s); #else s=f_readreg(s); d=f_writereg(d); raw_fmov_rr(d,s); f_unlock(s); f_unlock(d); #endif } MENDFUNC(2,fmov_rr,(FW d, FR s)) MIDFUNC(2,fldcw_m_indexed,(RR4 index, IMM base)) { index=readreg(index,4); raw_fldcw_m_indexed(index,base); unlock2(index); } MENDFUNC(2,fldcw_m_indexed,(RR4 index, IMM base)) MIDFUNC(1,ftst_r,(FR r)) { r=f_readreg(r); raw_ftst_r(r); f_unlock(r); } MENDFUNC(1,ftst_r,(FR r)) MIDFUNC(0,dont_care_fflags,(void)) { f_disassociate(FP_RESULT); } MENDFUNC(0,dont_care_fflags,(void)) MIDFUNC(2,fsqrt_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_fsqrt_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fsqrt_rr,(FW d, FR s)) MIDFUNC(2,fabs_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_fabs_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fabs_rr,(FW d, FR s)) MIDFUNC(2,fgetexp_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_fgetexp_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fgetexp_rr,(FW d, FR s)) MIDFUNC(2,fgetman_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_fgetman_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fgetman_rr,(FW d, FR s)) MIDFUNC(2,fsin_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_fsin_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fsin_rr,(FW d, FR s)) MIDFUNC(2,fcos_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_fcos_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fcos_rr,(FW d, FR s)) MIDFUNC(2,ftan_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_ftan_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,ftan_rr,(FW d, FR s)) MIDFUNC(3,fsincos_rr,(FW d, FW c, FR s)) { s=f_readreg(s); /* s for source */ d=f_writereg(d); /* d for sine */ c=f_writereg(c); /* c for cosine */ raw_fsincos_rr(d,c,s); f_unlock(s); f_unlock(d); f_unlock(c); } MENDFUNC(3,fsincos_rr,(FW d, FW c, FR s)) MIDFUNC(2,fscale_rr,(FRW d, FR s)) { s=f_readreg(s); d=f_rmw(d); raw_fscale_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fscale_rr,(FRW d, FR s)) MIDFUNC(2,ftwotox_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_ftwotox_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,ftwotox_rr,(FW d, FR s)) MIDFUNC(2,fetox_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_fetox_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fetox_rr,(FW d, FR s)) MIDFUNC(2,frndint_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_frndint_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,frndint_rr,(FW d, FR s)) MIDFUNC(2,fetoxM1_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_fetoxM1_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fetoxM1_rr,(FW d, FR s)) MIDFUNC(2,ftentox_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_ftentox_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,ftentox_rr,(FW d, FR s)) MIDFUNC(2,flog2_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_flog2_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,flog2_rr,(FW d, FR s)) MIDFUNC(2,flogN_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_flogN_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,flogN_rr,(FW d, FR s)) MIDFUNC(2,flogNP1_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_flogNP1_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,flogNP1_rr,(FW d, FR s)) MIDFUNC(2,flog10_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_flog10_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,flog10_rr,(FW d, FR s)) MIDFUNC(2,fasin_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_fasin_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fasin_rr,(FW d, FR s)) MIDFUNC(2,facos_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_facos_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,facos_rr,(FW d, FR s)) MIDFUNC(2,fatan_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_fatan_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fatan_rr,(FW d, FR s)) MIDFUNC(2,fatanh_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_fatanh_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fatanh_rr,(FW d, FR s)) MIDFUNC(2,fsinh_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_fsinh_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fsinh_rr,(FW d, FR s)) MIDFUNC(2,fcosh_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_fcosh_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fcosh_rr,(FW d, FR s)) MIDFUNC(2,ftanh_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_ftanh_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,ftanh_rr,(FW d, FR s)) MIDFUNC(2,fneg_rr,(FW d, FR s)) { s=f_readreg(s); d=f_writereg(d); raw_fneg_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fneg_rr,(FW d, FR s)) MIDFUNC(2,fadd_rr,(FRW d, FR s)) { s=f_readreg(s); d=f_rmw(d); raw_fadd_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fadd_rr,(FRW d, FR s)) MIDFUNC(2,fsub_rr,(FRW d, FR s)) { s=f_readreg(s); d=f_rmw(d); raw_fsub_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fsub_rr,(FRW d, FR s)) MIDFUNC(2,fcmp_rr,(FR d, FR s)) { d=f_readreg(d); s=f_readreg(s); raw_fcmp_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fcmp_rr,(FR d, FR s)) MIDFUNC(2,fdiv_rr,(FRW d, FR s)) { s=f_readreg(s); d=f_rmw(d); raw_fdiv_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fdiv_rr,(FRW d, FR s)) MIDFUNC(2,frem_rr,(FRW d, FR s)) { s=f_readreg(s); d=f_rmw(d); raw_frem_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,frem_rr,(FRW d, FR s)) MIDFUNC(2,frem1_rr,(FRW d, FR s)) { s=f_readreg(s); d=f_rmw(d); raw_frem1_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,frem1_rr,(FRW d, FR s)) MIDFUNC(2,fmul_rr,(FRW d, FR s)) { s=f_readreg(s); d=f_rmw(d); raw_fmul_rr(d,s); f_unlock(s); f_unlock(d); } MENDFUNC(2,fmul_rr,(FRW d, FR s)) #ifdef __GNUC__ static inline void mfence(void) { #ifdef CPU_i386 if (!cpuinfo.x86_has_xmm2) __asm__ __volatile__("lock; addl $0,0(%%esp)":::"memory"); else #endif __asm__ __volatile__("mfence":::"memory"); } static inline void clflush(volatile void *__p) { __asm__ __volatile__("clflush %0" : "+m" (*(volatile char *)__p)); } static inline void flush_cpu_icache(void *start, void *stop) { mfence(); if (cpuinfo.x86_clflush_size != 0) { volatile char *vaddr = (volatile char *)(((uintptr)start / cpuinfo.x86_clflush_size) * cpuinfo.x86_clflush_size); volatile char *vend = (volatile char *)((((uintptr)stop + cpuinfo.x86_clflush_size - 1) / cpuinfo.x86_clflush_size) * cpuinfo.x86_clflush_size); while (vaddr < vend) { clflush(vaddr); vaddr += cpuinfo.x86_clflush_size; } } mfence(); } #else static inline void flush_cpu_icache(void *start, void *stop) { UNUSED(start); UNUSED(stop); } #endif static inline void write_jmp_target(uae_u32 *jmpaddr, cpuop_func* a) { uintptr rel = (uintptr) a - ((uintptr) jmpaddr + 4); *(jmpaddr) = (uae_u32) rel; flush_cpu_icache((void *) jmpaddr, (void *) &jmpaddr[1]); } static inline void emit_jmp_target(uae_u32 a) { emit_long(a-((uintptr)target+4)); } aranym-1.1.0/src/uae_cpu/compiler/compemu_midfunc_arm2.h0000664000175000017500000002601513454637622021474 0ustar joyjoy/* * compiler/compemu_midfunc_arm2.h - Native MIDFUNCS for ARM (JIT v2) * * Copyright (c) 2014 Jens Heitmann of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * * Adaptation for Basilisk II and improvements, copyright 2000-2002 * Gwenole Beauchesne * * Basilisk II (C) 1997-2002 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Note: * File is included by compemu.h * */ // Arm optimized midfunc extern const uae_u32 ARM_CCR_MAP[]; DECLARE_MIDFUNC(restore_inverted_carry(void)); // ADD DECLARE_MIDFUNC(jnf_ADD(W4 d, RR4 s, RR4 v)); DECLARE_MIDFUNC(jnf_ADD_imm(W4 d, RR4 s, IMM v)); DECLARE_MIDFUNC(jff_ADD_b(W4 d, RR1 s, RR1 v)); DECLARE_MIDFUNC(jff_ADD_w(W4 d, RR2 s, RR2 v)); DECLARE_MIDFUNC(jff_ADD_l(W4 d, RR4 s, RR4 v)); DECLARE_MIDFUNC(jff_ADD_b_imm(W4 d, RR1 s, IMM v)); DECLARE_MIDFUNC(jff_ADD_w_imm(W4 d, RR2 s, IMM v)); DECLARE_MIDFUNC(jff_ADD_l_imm(W4 d, RR4 s, IMM v)); // ADDA DECLARE_MIDFUNC(jnf_ADDA_b(W4 d, RR1 s)); DECLARE_MIDFUNC(jnf_ADDA_w(W4 d, RR2 s)); DECLARE_MIDFUNC(jnf_ADDA_l(W4 d, RR4 s)); // ADDX DECLARE_MIDFUNC(jnf_ADDX(W4 d, RR4 s, RR4 v)); DECLARE_MIDFUNC(jff_ADDX_b(W4 d, RR1 s, RR4 v)); DECLARE_MIDFUNC(jff_ADDX_w(W4 d, RR2 s, RR4 v)); DECLARE_MIDFUNC(jff_ADDX_l(W4 d, RR4 s, RR4 v)); // AND DECLARE_MIDFUNC(jnf_AND(W4 d, RR4 s, RR4 v)); DECLARE_MIDFUNC(jff_AND_b(W4 d, RR1 s, RR1 v)); DECLARE_MIDFUNC(jff_AND_w(W4 d, RR2 s, RR2 v)); DECLARE_MIDFUNC(jff_AND_l(W4 d, RR4 s, RR4 v)); // ANDSR DECLARE_MIDFUNC(jff_ANDSR(IMM s, IMM x)); // ASL DECLARE_MIDFUNC(jff_ASL_b_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jff_ASL_w_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jff_ASL_l_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jff_ASL_b_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ASL_w_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ASL_l_reg(W4 d, RR4 s, RR4 i)); // ASLW DECLARE_MIDFUNC(jff_ASLW(W4 d, RR4 s)); DECLARE_MIDFUNC(jnf_ASLW(W4 d, RR4 s)); // ASR DECLARE_MIDFUNC(jnf_ASR_b_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jnf_ASR_w_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jnf_ASR_l_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jff_ASR_b_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jff_ASR_w_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jff_ASR_l_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jnf_ASR_b_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jnf_ASR_w_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jnf_ASR_l_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ASR_b_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ASR_w_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ASR_l_reg(W4 d, RR4 s, RR4 i)); // ASRW DECLARE_MIDFUNC(jff_ASRW(W4 d, RR4 s)); DECLARE_MIDFUNC(jnf_ASRW(W4 d, RR4 s)); // BCHG DECLARE_MIDFUNC(jnf_BCHG_b_imm(RW4 d, IMM s)); DECLARE_MIDFUNC(jnf_BCHG_l_imm(RW4 d, IMM s)); DECLARE_MIDFUNC(jff_BCHG_b_imm(RW4 d, IMM s)); DECLARE_MIDFUNC(jff_BCHG_l_imm(RW4 d, IMM s)); DECLARE_MIDFUNC(jnf_BCHG_b(RW4 d, RR4 s)); DECLARE_MIDFUNC(jnf_BCHG_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(jff_BCHG_b(RW4 d, RR4 s)); DECLARE_MIDFUNC(jff_BCHG_l(RW4 d, RR4 s)); // BCLR DECLARE_MIDFUNC(jnf_BCLR_b_imm(RW4 d, IMM s)); DECLARE_MIDFUNC(jnf_BCLR_l_imm(RW4 d, IMM s)); DECLARE_MIDFUNC(jnf_BCLR_b(RW4 d, RR4 s)); DECLARE_MIDFUNC(jnf_BCLR_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(jff_BCLR_b_imm(RW4 d, IMM s)); DECLARE_MIDFUNC(jff_BCLR_l_imm(RW4 d, IMM s)); DECLARE_MIDFUNC(jff_BCLR_b(RW4 d, RR4 s)); DECLARE_MIDFUNC(jff_BCLR_l(RW4 d, RR4 s)); // BSET DECLARE_MIDFUNC(jnf_BSET_b_imm(RW4 d, IMM s)); DECLARE_MIDFUNC(jnf_BSET_l_imm(RW4 d, IMM s)); DECLARE_MIDFUNC(jnf_BSET_b(RW4 d, RR4 s)); DECLARE_MIDFUNC(jnf_BSET_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(jff_BSET_b_imm(RW4 d, IMM s)); DECLARE_MIDFUNC(jff_BSET_l_imm(RW4 d, IMM s)); DECLARE_MIDFUNC(jff_BSET_b(RW4 d, RR4 s)); DECLARE_MIDFUNC(jff_BSET_l(RW4 d, RR4 s)); // BTST DECLARE_MIDFUNC(jff_BTST_b_imm(RR4 d, IMM s)); DECLARE_MIDFUNC(jff_BTST_l_imm(RR4 d, IMM s)); DECLARE_MIDFUNC(jff_BTST_b(RR4 d, RR4 s)); DECLARE_MIDFUNC(jff_BTST_l(RR4 d, RR4 s)); // CLR DECLARE_MIDFUNC (jnf_CLR(W4 d)); DECLARE_MIDFUNC (jff_CLR(W4 d)); // CMP DECLARE_MIDFUNC(jff_CMP_b(RR1 d, RR1 s)); DECLARE_MIDFUNC(jff_CMP_w(RR2 d, RR2 s)); DECLARE_MIDFUNC(jff_CMP_l(RR4 d, RR4 s)); // CMPA DECLARE_MIDFUNC(jff_CMPA_b(RR1 d, RR1 s)); DECLARE_MIDFUNC(jff_CMPA_w(RR2 d, RR2 s)); DECLARE_MIDFUNC(jff_CMPA_l(RR4 d, RR4 s)); // EOR DECLARE_MIDFUNC(jnf_EOR(W4 d, RR4 s, RR4 v)); DECLARE_MIDFUNC(jff_EOR_b(W4 d, RR1 s, RR1 v)); DECLARE_MIDFUNC(jff_EOR_w(W4 d, RR2 s, RR2 v)); DECLARE_MIDFUNC(jff_EOR_l(W4 d, RR4 s, RR4 v)); // EORSR DECLARE_MIDFUNC(jff_EORSR(IMM s, IMM x)); // EXT DECLARE_MIDFUNC(jnf_EXT_b(W4 d, RR4 s)); DECLARE_MIDFUNC(jnf_EXT_w(W4 d, RR4 s)); DECLARE_MIDFUNC(jnf_EXT_l(W4 d, RR4 s)); DECLARE_MIDFUNC(jff_EXT_b(W4 d, RR4 s)); DECLARE_MIDFUNC(jff_EXT_w(W4 d, RR4 s)); DECLARE_MIDFUNC(jff_EXT_l(W4 d, RR4 s)); // LSL DECLARE_MIDFUNC(jnf_LSL_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jnf_LSL_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_LSL_b_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jff_LSL_w_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jff_LSL_l_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jff_LSL_b_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_LSL_w_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_LSL_l_reg(W4 d, RR4 s, RR4 i)); // LSLW DECLARE_MIDFUNC(jff_LSLW(W4 d, RR4 s)); DECLARE_MIDFUNC(jnf_LSLW(W4 d, RR4 s)); // LSR DECLARE_MIDFUNC(jnf_LSR_b_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jnf_LSR_w_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jnf_LSR_l_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jff_LSR_b_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jff_LSR_w_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jff_LSR_l_imm(W4 d, RR4 s, IMM i)); DECLARE_MIDFUNC(jnf_LSR_b_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jnf_LSR_w_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jnf_LSR_l_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_LSR_b_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_LSR_w_reg(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_LSR_l_reg(W4 d, RR4 s, RR4 i)); // LSRW DECLARE_MIDFUNC(jff_LSRW(W4 d, RR4 s)); DECLARE_MIDFUNC(jnf_LSRW(W4 d, RR4 s)); // MOVE DECLARE_MIDFUNC(jnf_MOVE(W4 d, RR4 s)); DECLARE_MIDFUNC(jff_MOVE_b_imm(W4 d, IMM i)); DECLARE_MIDFUNC(jff_MOVE_w_imm(W4 d, IMM i)); DECLARE_MIDFUNC(jff_MOVE_l_imm(W4 d, IMM i)); DECLARE_MIDFUNC(jff_MOVE_b(W4 d, RR1 s)); DECLARE_MIDFUNC(jff_MOVE_w(W4 d, RR2 s)); DECLARE_MIDFUNC(jff_MOVE_l(W4 d, RR4 s)); // MOVE16 DECLARE_MIDFUNC(jnf_MOVE16(RR4 d, RR4 s)); // MOVEA DECLARE_MIDFUNC(jnf_MOVEA_w(W4 d, RR2 s)); DECLARE_MIDFUNC(jnf_MOVEA_l(W4 d, RR4 s)); // MULS DECLARE_MIDFUNC (jnf_MULS(RW4 d, RR4 s)); DECLARE_MIDFUNC (jff_MULS(RW4 d, RR4 s)); DECLARE_MIDFUNC (jnf_MULS32(RW4 d, RR4 s)); DECLARE_MIDFUNC (jff_MULS32(RW4 d, RR4 s)); DECLARE_MIDFUNC (jnf_MULS64(RW4 d, RW4 s)); DECLARE_MIDFUNC (jff_MULS64(RW4 d, RW4 s)); // MULU DECLARE_MIDFUNC (jnf_MULU(RW4 d, RR4 s)); DECLARE_MIDFUNC (jff_MULU(RW4 d, RR4 s)); DECLARE_MIDFUNC (jnf_MULU32(RW4 d, RR4 s)); DECLARE_MIDFUNC (jff_MULU32(RW4 d, RR4 s)); DECLARE_MIDFUNC (jnf_MULU64(RW4 d, RW4 s)); DECLARE_MIDFUNC (jff_MULU64(RW4 d, RW4 s)); // NEG DECLARE_MIDFUNC(jnf_NEG(W4 d, RR4 s)); DECLARE_MIDFUNC(jff_NEG_b(W4 d, RR1 s)); DECLARE_MIDFUNC(jff_NEG_w(W4 d, RR2 s)); DECLARE_MIDFUNC(jff_NEG_l(W4 d, RR4 s)); // NEGX DECLARE_MIDFUNC(jnf_NEGX(W4 d, RR4 s)); DECLARE_MIDFUNC(jff_NEGX_b(W4 d, RR1 s)); DECLARE_MIDFUNC(jff_NEGX_w(W4 d, RR2 s)); DECLARE_MIDFUNC(jff_NEGX_l(W4 d, RR4 s)); // NOT DECLARE_MIDFUNC(jnf_NOT(W4 d, RR4 s)); DECLARE_MIDFUNC(jff_NOT_b(W4 d, RR1 s)); DECLARE_MIDFUNC(jff_NOT_w(W4 d, RR2 s)); DECLARE_MIDFUNC(jff_NOT_l(W4 d, RR4 s)); // OR DECLARE_MIDFUNC(jnf_OR(W4 d, RR4 s, RR4 v)); DECLARE_MIDFUNC(jff_OR_b(W4 d, RR1 s, RR1 v)); DECLARE_MIDFUNC(jff_OR_w(W4 d, RR2 s, RR2 v)); DECLARE_MIDFUNC(jff_OR_l(W4 d, RR4 s, RR4 v)); // ORSR DECLARE_MIDFUNC(jff_ORSR(IMM s, IMM x)); // ROL DECLARE_MIDFUNC(jnf_ROL_b(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jnf_ROL_w(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jnf_ROL_l(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ROL_b(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ROL_w(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ROL_l(W4 d, RR4 s, RR4 i)); // ROLW DECLARE_MIDFUNC(jff_ROLW(W4 d, RR4 s)); DECLARE_MIDFUNC(jnf_ROLW(W4 d, RR4 s)); // RORW DECLARE_MIDFUNC(jff_RORW(W4 d, RR4 s)); DECLARE_MIDFUNC(jnf_RORW(W4 d, RR4 s)); // ROXL DECLARE_MIDFUNC(jnf_ROXL_b(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jnf_ROXL_w(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jnf_ROXL_l(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ROXL_b(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ROXL_w(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ROXL_l(W4 d, RR4 s, RR4 i)); // ROXLW DECLARE_MIDFUNC(jff_ROXLW(W4 d, RR4 s)); DECLARE_MIDFUNC(jnf_ROXLW(W4 d, RR4 s)); // ROR DECLARE_MIDFUNC(jnf_ROR_b(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jnf_ROR_w(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jnf_ROR_l(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ROR_b(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ROR_w(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ROR_l(W4 d, RR4 s, RR4 i)); // ROXR DECLARE_MIDFUNC(jnf_ROXR_b(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jnf_ROXR_w(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jnf_ROXR_l(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ROXR_b(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ROXR_w(W4 d, RR4 s, RR4 i)); DECLARE_MIDFUNC(jff_ROXR_l(W4 d, RR4 s, RR4 i)); // ROXRW DECLARE_MIDFUNC(jff_ROXRW(W4 d, RR4 s)); DECLARE_MIDFUNC(jnf_ROXRW(W4 d, RR4 s)); // SUB DECLARE_MIDFUNC(jnf_SUB_b_imm(W4 d, RR4 s, IMM v)); DECLARE_MIDFUNC(jnf_SUB_b(W4 d, RR4 s, RR4 v)); DECLARE_MIDFUNC(jnf_SUB_w_imm(W4 d, RR4 s, IMM v)); DECLARE_MIDFUNC(jnf_SUB_w(W4 d, RR4 s, RR4 v)); DECLARE_MIDFUNC(jnf_SUB_l_imm(W4 d, RR4 s, IMM v)); DECLARE_MIDFUNC(jnf_SUB_l(W4 d, RR4 s, RR4 v)); DECLARE_MIDFUNC(jff_SUB_b(W4 d, RR1 s, RR1 v)); DECLARE_MIDFUNC(jff_SUB_w(W4 d, RR2 s, RR2 v)); DECLARE_MIDFUNC(jff_SUB_l(W4 d, RR4 s, RR4 v)); DECLARE_MIDFUNC(jff_SUB_b_imm(W4 d, RR1 s, IMM v)); DECLARE_MIDFUNC(jff_SUB_w_imm(W4 d, RR2 s, IMM v)); DECLARE_MIDFUNC(jff_SUB_l_imm(W4 d, RR4 s, IMM v)); // SUBA DECLARE_MIDFUNC(jnf_SUBA_b(W4 d, RR1 s)); DECLARE_MIDFUNC(jnf_SUBA_w(W4 d, RR2 s)); DECLARE_MIDFUNC(jnf_SUBA_l(W4 d, RR4 s)); // SUBX DECLARE_MIDFUNC(jnf_SUBX(W4 d, RR4 s, RR4 v)); DECLARE_MIDFUNC(jff_SUBX_b(W4 d, RR1 s, RR4 v)); DECLARE_MIDFUNC(jff_SUBX_w(W4 d, RR2 s, RR4 v)); DECLARE_MIDFUNC(jff_SUBX_l(W4 d, RR4 s, RR4 v)); // SWAP DECLARE_MIDFUNC (jnf_SWAP(RW4 d)); DECLARE_MIDFUNC (jff_SWAP(RW4 d)); // TST DECLARE_MIDFUNC (jff_TST_b(RR1 s)); DECLARE_MIDFUNC (jff_TST_w(RR2 s)); DECLARE_MIDFUNC (jff_TST_l(RR4 s)); aranym-1.1.0/src/uae_cpu/compiler/compemu_midfunc_arm2.cpp0000664000175000017500000030751213454637622022033 0ustar joyjoy/* * compiler/compemu_midfunc_arm.cpp - Native MIDFUNCS for ARM (JIT v2) * * Copyright (c) 2014 Jens Heitmann of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * * Adaptation for Basilisk II and improvements, copyright 2000-2002 * Gwenole Beauchesne * * Basilisk II (C) 1997-2002 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Note: * File is included by compemu_support.cpp * */ const uae_u32 ARM_CCR_MAP[] = { 0, ARM_C_FLAG, // 1 C ARM_V_FLAG, // 2 V ARM_C_FLAG | ARM_V_FLAG, // 3 VC ARM_Z_FLAG, // 4 Z ARM_Z_FLAG | ARM_C_FLAG, // 5 ZC ARM_Z_FLAG | ARM_V_FLAG, // 6 ZV ARM_Z_FLAG | ARM_C_FLAG | ARM_V_FLAG, // 7 ZVC ARM_N_FLAG, // 8 N ARM_N_FLAG | ARM_C_FLAG, // 9 NC ARM_N_FLAG | ARM_V_FLAG, // 10 NV ARM_N_FLAG | ARM_C_FLAG | ARM_V_FLAG, // 11 NVC ARM_N_FLAG | ARM_Z_FLAG, // 12 NZ ARM_N_FLAG | ARM_Z_FLAG | ARM_C_FLAG, // 13 NZC ARM_N_FLAG | ARM_Z_FLAG | ARM_V_FLAG, // 14 NZV ARM_N_FLAG | ARM_Z_FLAG | ARM_C_FLAG | ARM_V_FLAG, // 15 NZVC }; // First we start with some helper functions (may be moved to codegen_arm) static inline void UNSIGNED8_IMM_2_REG(W4 r, IMM v) { MOV_ri8(r, (uint8) v); } static inline void SIGNED8_IMM_2_REG(W4 r, IMM v) { if (v & 0x80) { MVN_ri8(r, (uint8) ~v); } else { MOV_ri8(r, (uint8) v); } } static inline void UNSIGNED16_IMM_2_REG(W4 r, IMM v) { MOV_ri8(r, (uint8) v); ORR_rri8RORi(r, r, (uint8)(v >> 8), 24); } static inline void SIGNED16_IMM_2_REG(W4 r, IMM v) { #if defined(ARMV6_ASSEMBLY) MOV_ri8(r, (uint8) v); ORR_rri8RORi(r, r, (uint8)(v >> 8), 24); SXTH_rr(r, r); #else MOV_ri8(r, (uint8)(v << 16)); ORR_rri8RORi(r, r, (uint8)(v >> 8), 8); ASR_rri(r, r, 16); #endif } static inline void UNSIGNED8_REG_2_REG(W4 d, RR4 s) { #if defined(ARMV6_ASSEMBLY) UXTB_rr(d, s); #else ROR_rri(d, s, 8); LSR_rri(d, d, 24); #endif } static inline void SIGNED8_REG_2_REG(W4 d, RR4 s) { #if defined(ARMV6_ASSEMBLY) SXTB_rr(d, s); #else ROR_rri(d, s, 8); ASR_rri(d, d, 24); #endif } static inline void UNSIGNED16_REG_2_REG(W4 d, RR4 s) { #if defined(ARMV6_ASSEMBLY) UXTH_rr(d, s); #else LSL_rri(d, s, 16); LSR_rri(d, d, 16); #endif } static inline void SIGNED16_REG_2_REG(W4 d, RR4 s) { #if defined(ARMV6_ASSEMBLY) SXTH_rr(d, s); #else LSL_rri(d, s, 16); ASR_rri(d, d, 16); #endif } #define ZERO_EXTEND_8_REG_2_REG(d,s) UNSIGNED8_REG_2_REG(d,s) #define ZERO_EXTEND_16_REG_2_REG(d,s) UNSIGNED16_REG_2_REG(d,s) #define SIGN_EXTEND_8_REG_2_REG(d,s) SIGNED8_REG_2_REG(d,s) #define SIGN_EXTEND_16_REG_2_REG(d,s) SIGNED16_REG_2_REG(d,s) MIDFUNC(0,restore_inverted_carry,(void)) { RR4 r=readreg(FLAGX,4); MRS_CPSR(REG_WORK1); TEQ_ri(r,1); CC_BIC_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_C_FLAG); CC_ORR_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_C_FLAG); MSR_CPSRf_r(REG_WORK1); unlock2(r); } MENDFUNC(0,restore_inverted_carry,(void)) /* * ADD * Operand Syntax: , Dn * Dn, * * Operand Size: 8,16,32 * * X Set the same as the carry bit. * N Set if the result is negative. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Set if an overflow is generated. Cleared otherwise. * C Set if a carry is generated. Cleared otherwise. * */ MIDFUNC(3,jnf_ADD_imm,(W4 d, RR4 s, IMM v)) { if (isconst(s)) { set_const(d,live.state[s].val+v); return; } s=readreg(s,4); d=writereg(d,4); compemu_raw_mov_l_ri(REG_WORK1, v); ADD_rrr(d,s,REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ADD_imm,(W4 d, RR4 s, IMM v)) MIDFUNC(3,jnf_ADD,(W4 d, RR4 s, RR4 v)) { if (isconst(v)) { COMPCALL(jnf_ADD_imm)(d,s,live.state[v].val); return; } v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); ADD_rrr(d,s,v); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jnf_ADD,(W4 d, RR4 s, RR4 v)) MIDFUNC(3,jff_ADD_b_imm,(W4 d, RR1 s, IMM v)) { s=readreg(s,4); d=writereg(d,4); SIGNED8_IMM_2_REG(REG_WORK2, (uint8)v); SIGNED8_REG_2_REG(REG_WORK1, s); ADDS_rrr(d,REG_WORK1,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(3,jff_ADD_b_imm,(W4 d, RR1 s, IMM v)) MIDFUNC(3,jff_ADD_b,(W4 d, RR1 s, RR1 v)) { if (isconst(v)) { COMPCALL(jff_ADD_b_imm)(d,s,live.state[v].val); return; } v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); SIGNED8_REG_2_REG(REG_WORK1, s); SIGNED8_REG_2_REG(REG_WORK2, v); ADDS_rrr(d,REG_WORK1,REG_WORK2); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jff_ADD_b,(W4 d, RR1 s, RR1 v)) MIDFUNC(3,jff_ADD_w_imm,(W4 d, RR2 s, IMM v)) { s=readreg(s,4); d=writereg(d,4); SIGNED16_IMM_2_REG(REG_WORK2, (uint16)v); SIGNED16_REG_2_REG(REG_WORK1, s); ADDS_rrr(d,REG_WORK1,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(3,jff_ADD_w_imm,(W4 d, RR2 s, IMM v)) MIDFUNC(3,jff_ADD_w,(W4 d, RR2 s, RR2 v)) { if (isconst(v)) { COMPCALL(jff_ADD_w_imm)(d,s,live.state[v].val); return; } v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(REG_WORK1, s); SIGNED16_REG_2_REG(REG_WORK2, v); ADDS_rrr(d,REG_WORK1,REG_WORK2); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jff_ADD_w,(W4 d, RR2 s, RR2 v)) MIDFUNC(3,jff_ADD_l_imm,(W4 d, RR4 s, IMM v)) { s=readreg(s,4); d=writereg(d,4); compemu_raw_mov_l_ri(REG_WORK2, v); ADDS_rrr(d,s,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(3,jff_ADD_l_imm,(W4 d, RR4 s, IMM v)) MIDFUNC(3,jff_ADD_l,(W4 d, RR4 s, RR4 v)) { if (isconst(v)) { COMPCALL(jff_ADD_l_imm)(d,s,live.state[v].val); return; } v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); ADDS_rrr(d,s,v); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jff_ADD_l,(W4 d, RR4 s, RR4 v)) /* * ADDA * Operand Syntax: , An * * Operand Size: 16,32 * * Flags: Not affected. * */ MIDFUNC(2,jnf_ADDA_b,(W4 d, RR1 s)) { s=readreg(s,4); d=rmw(d,4,4); SIGNED8_REG_2_REG(REG_WORK1,s); ADD_rrr(d,d,REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_ADDA_b,(W4 d, RR1 s)) MIDFUNC(2,jnf_ADDA_w,(W4 d, RR2 s)) { s=readreg(s,4); d=rmw(d,4,4); SIGNED16_REG_2_REG(REG_WORK1,s); ADD_rrr(d,d,REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_ADDA_w,(W4 d, RR2 s)) MIDFUNC(2,jnf_ADDA_l,(W4 d, RR4 s)) { s=readreg(s,4); d=rmw(d,4,4); ADD_rrr(d,d,s); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_ADDA_l,(W4 d, RR4 s)) /* * ADDX * Operand Syntax: Dy, Dx * -(Ay), -(Ax) * * Operand Size: 8,16,32 * * X Set the same as the carry bit. * N Set if the result is negative. Cleared otherwise. * Z Cleared if the result is nonzero; unchanged otherwise. * V Set if an overflow is generated. Cleared otherwise. * C Set if a carry is generated. Cleared otherwise. * * Attention: Z is cleared only if the result is nonzero. Unchanged otherwise * */ MIDFUNC(3,jnf_ADDX,(W4 d, RR4 s, RR4 v)) { s=readreg(s,4); v=readreg(v,4); d=writereg(d,4); ADC_rrr(d,s,v); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jnf_ADDX,(W4 d, RR4 s, RR4 v)) MIDFUNC(3,jff_ADDX_b,(W4 d, RR1 s, RR1 v)) { s=readreg(s,4); v=readreg(v,4); d=writereg(d,4); CC_MVN_ri(NATIVE_CC_EQ, REG_WORK2, 0); CC_MVN_ri(NATIVE_CC_NE, REG_WORK2, ARM_Z_FLAG); PUSH(REG_WORK2); SIGNED8_REG_2_REG(REG_WORK1, s); SIGNED8_REG_2_REG(REG_WORK2, v); ADCS_rrr(d,REG_WORK1,REG_WORK2); POP(REG_WORK2); MRS_CPSR(REG_WORK1); AND_rrr(REG_WORK1, REG_WORK1, REG_WORK2); MSR_CPSR_r(REG_WORK1); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jff_ADDX_b,(W4 d, RR1 s, RR1 v)) MIDFUNC(3,jff_ADDX_w,(W4 d, RR2 s, RR2 v)) { s=readreg(s,4); v=readreg(v,4); d=writereg(d,4); CC_MVN_ri(NATIVE_CC_EQ, REG_WORK2, 0); CC_MVN_ri(NATIVE_CC_NE, REG_WORK2, ARM_Z_FLAG); PUSH(REG_WORK2); SIGNED16_REG_2_REG(REG_WORK1, s); SIGNED16_REG_2_REG(REG_WORK2, v); ADCS_rrr(d,REG_WORK1,REG_WORK2); POP(REG_WORK2); MRS_CPSR(REG_WORK1); AND_rrr(REG_WORK1, REG_WORK1, REG_WORK2); MSR_CPSR_r(REG_WORK1); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jff_ADDX_w,(W4 d, RR2 s, RR2 v)) MIDFUNC(3,jff_ADDX_l,(W4 d, RR4 s, RR4 v)) { s=readreg(s,4); v=readreg(v,4); d=writereg(d,4); CC_MVN_ri(NATIVE_CC_EQ, REG_WORK2, 0); CC_MVN_ri(NATIVE_CC_NE, REG_WORK2, ARM_Z_FLAG); PUSH(REG_WORK2); ADCS_rrr(d,s,v); POP(REG_WORK2); MRS_CPSR(REG_WORK1); AND_rrr(REG_WORK1, REG_WORK1, REG_WORK2); MSR_CPSR_r(REG_WORK1); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jff_ADDX_l,(W4 d, RR4 s, RR4 v)) /* * ANDI * Operand Syntax: #, CCR * * Operand Size: 8 * * X Cleared if bit 4 of immediate operand is zero. Unchanged otherwise. * N Cleared if bit 3 of immediate operand is zero. Unchanged otherwise. * Z Cleared if bit 2 of immediate operand is zero. Unchanged otherwise. * V Cleared if bit 1 of immediate operand is zero. Unchanged otherwise. * C Cleared if bit 0 of immediate operand is zero. Unchanged otherwise. * */ MIDFUNC(1,jff_ANDSR,(IMM s, IMM x)) { MRS_CPSR(REG_WORK1); AND_rri(REG_WORK1, REG_WORK1, s); MSR_CPSRf_r(REG_WORK1); if (!x) { compemu_raw_mov_l_ri(REG_WORK1, (uintptr)live.state[FLAGX].mem); MOV_ri(REG_WORK2, 0); STRB_rR(REG_WORK2, REG_WORK1); } } MENDFUNC(1,jff_ANDSR,(IMM s)) /* * AND * Operand Syntax: , Dn * Dn, * * Operand Size: 8,16,32 * * X Not affected. * N Set if the most significant bit of the result is set. * Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Always cleared. * */ MIDFUNC(3,jnf_AND,(W4 d, RR4 s, RR4 v)) { if (isconst(s) && isconst(v)) { set_const(d, live.state[s].val&live.state[v].val); return; } v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); AND_rrr(d, s, v); unlock2(v); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_AND,(RW4 d, RR4 s, RR4 v)) MIDFUNC(3,jff_AND_b,(W4 d, RR1 s, RR1 v)) { v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); SIGNED8_REG_2_REG(REG_WORK1, s); SIGNED8_REG_2_REG(REG_WORK2, v); MSR_CPSRf_i(0); ANDS_rrr(d, REG_WORK1, REG_WORK2); unlock2(v); unlock2(d); unlock2(s); } MENDFUNC(3,jff_AND_b,(RW4 d, RR1 s, RR1 v)) MIDFUNC(3,jff_AND_w,(W4 d, RR2 s, RR2 v)) { v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(REG_WORK1, s); SIGNED16_REG_2_REG(REG_WORK2, v); MSR_CPSRf_i(0); ANDS_rrr(d, REG_WORK1, REG_WORK2); unlock2(v); unlock2(d); unlock2(s); } MENDFUNC(3,jff_AND_w,(RW4 d, RR2 s, RR2 v)) MIDFUNC(3,jff_AND_l,(W4 d, RR4 s, RR4 v)) { v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); MSR_CPSRf_i(0); ANDS_rrr(d, s,v); unlock2(v); unlock2(d); unlock2(s); } MENDFUNC(3,jff_AND_l,(RW4 d, RR4 s, RR4 v)) /* * ASL * Operand Syntax: Dx, Dy * #, Dy * * * Operand Size: 8,16,32 * * X Set according to the last bit shifted out of the operand. Unaffected for a shift count of zero. * N Set if the most significant bit of the result is set. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Set if the most significant bit is changed at any time during the shift operation. Cleared otherwise. * C Set according to the last bit shifted out of the operand. Unaffected for a shift count of zero. * */ MIDFUNC(3,jff_ASL_b_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d, s, 24); if (i) { MRS_CPSR(REG_WORK1); // store flags BIC_rri(REG_WORK1, REG_WORK1, ARM_N_FLAG|ARM_Z_FLAG|ARM_V_FLAG);// Clear everything except N & Z PUSH(REG_WORK1); // Calculate V Flag MVN_ri(REG_WORK2, 0); LSR_rri(REG_WORK2, REG_WORK2, (i+1)); MVN_rr(REG_WORK2, REG_WORK2); AND_rrr(REG_WORK1, d, REG_WORK2); TST_rr(REG_WORK1, REG_WORK1); CC_TEQ_rr(NATIVE_CC_NE, REG_WORK1, REG_WORK2); POP(REG_WORK1); CC_ORR_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_V_FLAG); MSR_CPSRf_r(REG_WORK1);// restore flags LSLS_rri(d,d,i); } else { MSR_CPSRf_i(0); TST_rr(d,d); } REV_rr(d,d); unlock2(d); unlock2(s); } MENDFUNC(3,jff_ASL_b_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ASL_w_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d, s, 16); if (i) { MRS_CPSR(REG_WORK1); // store flags BIC_rri(REG_WORK1, REG_WORK1, ARM_N_FLAG|ARM_Z_FLAG|ARM_V_FLAG);// Clear everything except N & Z PUSH(REG_WORK1); // Calculate V Flag MVN_ri(REG_WORK2, 0); LSR_rri(REG_WORK2, REG_WORK2, (i+1)); MVN_rr(REG_WORK2, REG_WORK2); AND_rrr(REG_WORK1, d, REG_WORK2); TST_rr(REG_WORK1, REG_WORK1); CC_TEQ_rr(NATIVE_CC_NE, REG_WORK1, REG_WORK2); POP(REG_WORK1); CC_ORR_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_V_FLAG); MSR_CPSRf_r(REG_WORK1);// retore flags LSLS_rri(d,d,i); } else { MSR_CPSRf_i(0); TST_rr(d,d); } ASR_rri(d,d, 16); unlock2(d); unlock2(s); } MENDFUNC(3,jff_ASL_w_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ASL_l_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); if (i) { MRS_CPSR(REG_WORK1); // store flags BIC_rri(REG_WORK1, REG_WORK1, ARM_N_FLAG|ARM_Z_FLAG|ARM_V_FLAG);// Clear everything except C PUSH(REG_WORK1); // Calculate V Flag MVN_ri(REG_WORK2, 0); LSR_rri(REG_WORK2, REG_WORK2, (i+1)); MVN_rr(REG_WORK2, REG_WORK2); AND_rrr(REG_WORK1, s, REG_WORK2); TST_rr(REG_WORK1, REG_WORK1); CC_TEQ_rr(NATIVE_CC_NE, REG_WORK1, REG_WORK2); POP(REG_WORK1); CC_ORR_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_V_FLAG); MSR_CPSRf_r(REG_WORK1);// retore flags LSLS_rri(d,s,i); } else { MSR_CPSRf_i(0); MOVS_rr(d, s); } unlock2(d); unlock2(s); } MENDFUNC(3,jff_ASL_l_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ASL_b_reg,(W4 d, RR4 s, RR4 i)) { i=readreg(i,4); s=readreg(s,4); d=writereg(d,4); // Calculate V Flag MRS_CPSR(REG_WORK1);// store flags BIC_rri(REG_WORK1, REG_WORK1, ARM_N_FLAG|ARM_Z_FLAG|ARM_V_FLAG);// Clear everything except C PUSH(REG_WORK1); LSL_rri(d, s, 24); // Calculate V Flag MVN_ri(REG_WORK2, 0); LSR_rrr(REG_WORK2, REG_WORK2, i); LSR_rri(REG_WORK2, REG_WORK2, 1); MVN_rr(REG_WORK2, REG_WORK2); AND_rrr(REG_WORK1, d, REG_WORK2); TST_rr(REG_WORK1, REG_WORK1); CC_TEQ_rr(NATIVE_CC_NE, REG_WORK1, REG_WORK2); POP(REG_WORK1); CC_ORR_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_V_FLAG); MSR_CPSRf_r(REG_WORK1);// retore flags AND_rri(REG_WORK2, i, 63); LSLS_rrr(d,d,REG_WORK2); ASR_rri(d,d, 24); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ASL_b_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ASL_w_reg,(W4 d, RR4 s, RR4 i)) { i=readreg(i,4); s=readreg(s,4); d=writereg(d,4); // Calculate V Flag MRS_CPSR(REG_WORK1);// store flags BIC_rri(REG_WORK1, REG_WORK1, ARM_N_FLAG|ARM_Z_FLAG|ARM_V_FLAG);// Clear everything except c PUSH(REG_WORK1); LSL_rri(d, s, 16); // Calculate V Flag MVN_ri(REG_WORK2, 0); LSR_rrr(REG_WORK2, REG_WORK2, i); LSR_rri(REG_WORK2, REG_WORK2, 1); MVN_rr(REG_WORK2, REG_WORK2); AND_rrr(REG_WORK1, d, REG_WORK2); TST_rr(REG_WORK1, REG_WORK1); CC_TEQ_rr(NATIVE_CC_NE, REG_WORK1, REG_WORK2); POP(REG_WORK1); CC_ORR_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_V_FLAG); MSR_CPSRf_r(REG_WORK1);// retore flags AND_rri(REG_WORK2, i, 63); LSLS_rrr(d,d,REG_WORK2); ASR_rri(d,d, 16); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ASL_w_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ASL_l_reg,(W4 d, RR4 s, RR4 i)) { i=readreg(i,4); s=readreg(s,4); d=writereg(d,4); // Calculate V Flag MRS_CPSR(REG_WORK1);// store flags BIC_rri(REG_WORK1, REG_WORK1, ARM_N_FLAG|ARM_Z_FLAG|ARM_V_FLAG);// Clear everything except C PUSH(REG_WORK1); // Calculate V Flag MVN_ri(REG_WORK2, 0); LSR_rrr(REG_WORK2, REG_WORK2, i); LSR_rri(REG_WORK2, REG_WORK2, 1); MVN_rr(REG_WORK2, REG_WORK2); AND_rrr(REG_WORK1, s, REG_WORK2); TST_rr(REG_WORK1, REG_WORK1); CC_TEQ_rr(NATIVE_CC_NE, REG_WORK1, REG_WORK2); POP(REG_WORK1); CC_ORR_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_V_FLAG); MSR_CPSRf_r(REG_WORK1);// retore flags AND_rri(REG_WORK2, i, 63); LSLS_rrr(d,s,REG_WORK2); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ASL_l_reg,(W4 d, RR4 s, RR4 i)) /* * ASLW * Operand Syntax: * * Operand Size: 16 * * X Set according to the last bit shifted out of the operand. * N Set if the most significant bit of the result is set. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Set if the most significant bit is changed at any time during the shift operation. Cleared otherwise. * C Set according to the last bit shifted out of the operand. * */ MIDFUNC(2,jnf_ASLW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,1); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_ASLW,(W4 d, RR4 s)) MIDFUNC(2,jff_ASLW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); MSR_CPSRf_i(0); LSLS_rri(d,s,17); MRS_CPSR(REG_WORK1); CC_ORR_rri(NATIVE_CC_MI, REG_WORK1, REG_WORK1, ARM_V_FLAG); CC_EOR_rri(NATIVE_CC_CS, REG_WORK1, REG_WORK1, ARM_V_FLAG); MSR_CPSRf_r(REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(2,jff_ASLW,(W4 d, RR4 s)) /* * ASR * Operand Syntax: Dx, Dy * #, Dy * * * Operand Size: 8,16,32 * * X Set according to the last bit shifted out of the operand. Unaffected for a shift count of zero. * N Set if the most significant bit of the result is set. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Set if the most significant bit is changed at any time during the shift operation. Cleared otherwise. * C Set according to the last bit shifted out of the operand. Unaffected for a shift count of zero. * */ MIDFUNC(3,jnf_ASR_b_imm,(W4 d, RR4 s, IMM i)) { if (!i) return; s=readreg(s,4); d=writereg(d,4); SIGNED8_REG_2_REG(d, s); ASR_rri(d,d,i); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ASR_b_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ASR_w_imm,(W4 d, RR4 s, IMM i)) { if (!i) return; s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(d, s); ASR_rri(d,d,i); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ASR_w_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ASR_l_imm,(W4 d, RR4 s, IMM i)) { if (!i) return; s=readreg(s,4); d=writereg(d,4); ASR_rri(d,s,i); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ASR_l_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ASR_b_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); SIGNED8_REG_2_REG(d, s); if (i) { MSR_CPSRf_i(0); ASRS_rri(d,d,i); } else { CC_MSR_CPSRf_r(NATIVE_CC_CC, 0); // Clear everything except C CC_MSR_CPSRf_r(NATIVE_CC_CS, ARM_C_FLAG);// Clear everything except C TST_rr(d,d); } unlock2(d); unlock2(s); } MENDFUNC(3,jff_ASR_b_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ASR_w_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(d, s); if (i) { MSR_CPSRf_i(0); ASRS_rri(d,d,i); } else { CC_MSR_CPSRf_r(NATIVE_CC_CC, 0); // Clear everything except C CC_MSR_CPSRf_r(NATIVE_CC_CS, ARM_C_FLAG);// Clear everything except C TST_rr(d,d); } unlock2(d); unlock2(s); } MENDFUNC(3,jff_ASR_w_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ASR_l_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); if (i) { MSR_CPSRf_i(0); ASRS_rri(d,s,i); } else { CC_MSR_CPSRf_r(NATIVE_CC_CC, 0); // Clear everything except C CC_MSR_CPSRf_r(NATIVE_CC_CS, ARM_C_FLAG);// Clear everything except C TST_rr(s,s); } unlock2(d); unlock2(s); } MENDFUNC(3,jff_ASR_l_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ASR_b_reg,(W4 d, RR4 s, RR4 i)) { i=readreg(i,4); s=readreg(s,4); d=writereg(d,4); SIGNED8_REG_2_REG(d, s); AND_rri(REG_WORK1, i, 63); ASR_rrr(d,d,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ASR_b_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jnf_ASR_w_reg,(W4 d, RR4 s, RR4 i)) { i=readreg(i,4); s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(d, s); AND_rri(REG_WORK1, i, 63); ASR_rrr(d,d,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ASR_w_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jnf_ASR_l_reg,(W4 d, RR4 s, RR4 i)) { i=readreg(i,4); s=readreg(s,4); d=writereg(d,4); AND_rri(REG_WORK1, i, 63); ASR_rrr(d,s,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ASR_l_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ASR_b_reg,(W4 d, RR4 s, RR4 i)) { i=readreg(i,4); s=readreg(s,4); d=writereg(d,4); SIGNED8_REG_2_REG(d, s); CC_MSR_CPSRf_r(NATIVE_CC_CC, 0); // Clear everything except C CC_MSR_CPSRf_r(NATIVE_CC_CS, ARM_C_FLAG);// Clear everything except C AND_rri(REG_WORK1, i, 63); ASRS_rrr(d,d,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ASR_b_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ASR_w_reg,(W4 d, RR4 s, RR4 i)) { i=readreg(i,4); s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(d, s); CC_MSR_CPSRf_r(NATIVE_CC_CC, 0); // Clear everything except C CC_MSR_CPSRf_r(NATIVE_CC_CS, ARM_C_FLAG);// Clear everything except C AND_rri(REG_WORK1, i, 63); ASRS_rrr(d,d,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ASR_w_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ASR_l_reg,(W4 d, RR4 s, RR4 i)) { i=readreg(i,4); s=readreg(s,4); d=writereg(d,4); CC_MSR_CPSRf_r(NATIVE_CC_CC, 0); // Clear everything except C CC_MSR_CPSRf_r(NATIVE_CC_CS, ARM_C_FLAG);// Clear everything except C AND_rri(REG_WORK1, i, 63); ASRS_rrr(d,s,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ASR_l_reg,(W4 d, RR4 s, RR4 i)) /* * ASRW * Operand Syntax: * * Operand Size: 16 * * X Set according to the last bit shifted out of the operand. * N Set if the most significant bit of the result is set. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Set if the most significant bit is changed at any time during the shift operation. Cleared otherwise. * C Set according to the last bit shifted out of the operand. * */ MIDFUNC(2,jnf_ASRW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(d, s); ASR_rri(d,d,1); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_ASRW,(W4 d, RR4 s)) MIDFUNC(2,jff_ASRW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(d, s); MSR_CPSRf_i(0); ASR_rri(d,d,1); unlock2(d); unlock2(s); } MENDFUNC(2,jff_ASRW,(W4 d, RR4 s)) /* * BCHG * Operand Syntax: Dn, * #, * * Operand Size: 8,32 * * X Not affected. * N Not affected. * Z Set if the bit tested is zero. Cleared otherwise. * V Not affected. * C Not affected. * */ MIDFUNC(2,jnf_BCHG_b_imm,(RW4 d, IMM s)) { d=rmw(d,4,4); EOR_rri(d,d,(1 << s)); unlock2(d); } MENDFUNC(2,jnf_BCHG_b_imm,(RW4 d, IMM s)) MIDFUNC(2,jnf_BCHG_l_imm,(RW4 d, IMM s)) { d=rmw(d,4,4); EOR_rri(d,d,(1 << s)); unlock2(d); } MENDFUNC(2,jnf_BCHG_l_imm,(RW4 d, IMM s)) MIDFUNC(2,jnf_BCHG_b,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jnf_BCHG_b_imm)(d,live.state[s].val&7); return; } s=readreg(s,4); d=rmw(d,4,4); AND_rri(REG_WORK1, s, 7); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); EOR_rrr(d,d,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_BCHG_b,(RW4 d, RR4 s)) MIDFUNC(2,jnf_BCHG_l,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jnf_BCHG_l_imm)(d,live.state[s].val&31); return; } s=readreg(s,4); d=rmw(d,4,4); AND_rri(REG_WORK1, s, 31); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); EOR_rrr(d,d,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_BCHG_l,(RW4 d, RR4 s)) MIDFUNC(2,jff_BCHG_b_imm,(RW4 d, IMM s)) { d=rmw(d,4,4); uae_u32 v = (1 << s); MRS_CPSR(REG_WORK1); TST_ri(d,v); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); EOR_rri(d,d,v); unlock2(d); } MENDFUNC(2,jff_BCHG_b_imm,(RW4 d, IMM s)) MIDFUNC(2,jff_BCHG_l_imm,(RW4 d, IMM s)) { d=rmw(d,4,4); uae_u32 v = (1 << s); MRS_CPSR(REG_WORK1); TST_ri(d,v); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); EOR_rri(d,d,v); unlock2(d); } MENDFUNC(2,jff_BCHG_l_imm,(RW4 d, IMM s)) MIDFUNC(2,jff_BCHG_b,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jff_BCHG_b_imm)(d,live.state[s].val&7); return; } s=readreg(s,4); d=rmw(d,4,4); AND_rri(REG_WORK1, s, 7); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); MRS_CPSR(REG_WORK1); TST_rr(d,REG_WORK2); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); EOR_rrr(d,d,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(2,jff_BCHG_b,(RW4 d, RR4 s)) MIDFUNC(2,jff_BCHG_l,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jff_BCHG_l_imm)(d,live.state[s].val&31); return; } s=readreg(s,4); d=rmw(d,4,4); AND_rri(REG_WORK1, s, 31); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); MRS_CPSR(REG_WORK1); TST_rr(d,REG_WORK2); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); EOR_rrr(d,d,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(2,jff_BCHG_l,(RW4 d, RR4 s)) /* * BCLR * Operand Syntax: Dn, * #, * * Operand Size: 8,32 * * X Not affected. * N Not affected. * Z Set if the bit tested is zero. Cleared otherwise. * V Not affected. * C Not affected. * */ MIDFUNC(2,jnf_BCLR_b_imm,(RW4 d, IMM s)) { d=rmw(d,4,4); BIC_rri(d,d,(1 << s)); unlock2(d); } MENDFUNC(2,jnf_BCLR_b_imm,(RW4 d, IMM s)) MIDFUNC(2,jnf_BCLR_l_imm,(RW4 d, IMM s)) { d=rmw(d,4,4); BIC_rri(d,d,(1 << s)); unlock2(d); } MENDFUNC(2,jnf_BCLR_l_imm,(RW4 d, IMM s)) MIDFUNC(2,jnf_BCLR_b,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jnf_BCLR_b_imm)(d,live.state[s].val&7); return; } s=readreg(s,4); d=rmw(d,4,4); AND_rri(REG_WORK1, s, 7); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); BIC_rrr(d,d,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_BCLR_b,(RW4 d, RR4 s)) MIDFUNC(2,jnf_BCLR_l,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jnf_BCLR_l_imm)(d,live.state[s].val&31); return; } s=readreg(s,4); d=rmw(d,4,4); AND_rri(REG_WORK1, s, 31); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); BIC_rrr(d,d,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_BCLR_l,(RW4 d, RR4 s)) MIDFUNC(2,jff_BCLR_b_imm,(RW4 d, IMM s)) { d=rmw(d,4,4); uae_u32 v = (1 << s); MRS_CPSR(REG_WORK1); TST_ri(d,v); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); BIC_rri(d,d,v); unlock2(d); } MENDFUNC(2,jff_BCLR_b_imm,(RW4 d, IMM s)) MIDFUNC(2,jff_BCLR_l_imm,(RW4 d, IMM s)) { d=rmw(d,4,4); uae_u32 v = (1 << s); MRS_CPSR(REG_WORK1); TST_ri(d,v); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); BIC_rri(d,d,v); unlock2(d); } MENDFUNC(2,jff_BCLR_l_imm,(RW4 d, IMM s)) MIDFUNC(2,jff_BCLR_b,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jff_BCLR_b_imm)(d,live.state[s].val&7); return; } s=readreg(s,4); d=rmw(d,4,4); AND_rri(REG_WORK1, s, 7); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); MRS_CPSR(REG_WORK1); TST_rr(d,REG_WORK2); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); BIC_rrr(d,d,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(2,jff_BCLR_b,(RW4 d, RR4 s)) MIDFUNC(2,jff_BCLR_l,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jff_BCLR_l_imm)(d,live.state[s].val&31); return; } s=readreg(s,4); d=rmw(d,4,4); AND_rri(REG_WORK1, s, 31); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); MRS_CPSR(REG_WORK1); TST_rr(d,REG_WORK2); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); BIC_rrr(d,d,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(2,jff_BCLR_l,(RW4 d, RR4 s)) /* * BSET * Operand Syntax: Dn, * #, * * Operand Size: 8,32 * * X Not affected. * N Not affected. * Z Set if the bit tested is zero. Cleared otherwise. * V Not affected. * C Not affected. * */ MIDFUNC(2,jnf_BSET_b_imm,(RW4 d, IMM s)) { d=rmw(d,4,4); ORR_rri(d,d,(1 << s)); unlock2(d); } MENDFUNC(2,jnf_BSET_b_imm,(RW4 d, IMM s)) MIDFUNC(2,jnf_BSET_l_imm,(RW4 d, IMM s)) { d=rmw(d,4,4); ORR_rri(d,d,(1 << s)); unlock2(d); } MENDFUNC(2,jnf_BSET_l_imm,(RW4 d, IMM s)) MIDFUNC(2,jnf_BSET_b,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jnf_BSET_b_imm)(d,live.state[s].val&7); return; } s=readreg(s,4); d=rmw(d,4,4); AND_rri(REG_WORK1, s, 7); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); ORR_rrr(d,d,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_BSET_b,(RW4 d, RR4 s)) MIDFUNC(2,jnf_BSET_l,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jnf_BSET_l_imm)(d,live.state[s].val&31); return; } s=readreg(s,4); d=rmw(d,4,4); AND_rri(REG_WORK1, s, 31); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); ORR_rrr(d,d,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_BSET_l,(RW4 d, RR4 s)) MIDFUNC(2,jff_BSET_b_imm,(RW4 d, IMM s)) { d=rmw(d,4,4); uae_u32 v = (1 << s); MRS_CPSR(REG_WORK1); TST_ri(d,v); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); ORR_rri(d,d,v); unlock2(d); } MENDFUNC(2,jff_BSET_b_imm,(RW4 d, IMM s)) MIDFUNC(2,jff_BSET_l_imm,(RW4 d, IMM s)) { d=rmw(d,4,4); uae_u32 v = (1 << s); MRS_CPSR(REG_WORK1); TST_ri(d,v); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); ORR_rri(d,d,v); unlock2(d); } MENDFUNC(2,jff_BSET_l_imm,(RW4 d, IMM s)) MIDFUNC(2,jff_BSET_b,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jff_BSET_b_imm)(d,live.state[s].val&7); return; } s=readreg(s,4); d=rmw(d,4,4); AND_rri(REG_WORK1, s, 7); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); MRS_CPSR(REG_WORK1); TST_rr(d,REG_WORK2); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); ORR_rrr(d,d,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(2,jff_BSET_b,(RW4 d, RR4 s)) MIDFUNC(2,jff_BSET_l,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jff_BSET_l_imm)(d,live.state[s].val&31); return; } s=readreg(s,4); d=rmw(d,4,4); AND_rri(REG_WORK1, s, 31); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); MRS_CPSR(REG_WORK1); TST_rr(d,REG_WORK2); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); ORR_rrr(d,d,REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(2,jff_BSET_l,(RW4 d, RR4 s)) /* * BTST * Operand Syntax: Dn, * #, * * Operand Size: 8,32 * * X Not affected * N Not affected * Z Set if the bit tested is zero. Cleared otherwise * V Not affected * C Not affected * */ MIDFUNC(2,jff_BTST_b_imm,(RR4 d, IMM s)) { d=readreg(d,4); MRS_CPSR(REG_WORK1); TST_ri(d,(1 << s)); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); unlock2(d); } MENDFUNC(2,jff_BTST_b_imm,(RR4 d, IMM s)) MIDFUNC(2,jff_BTST_l_imm,(RR4 d, IMM s)) { d=readreg(d,4); MRS_CPSR(REG_WORK1); TST_ri(d,(1 << s)); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); unlock2(d); } MENDFUNC(2,jff_BTST_l_imm,(RR4 d, IMM s)) MIDFUNC(2,jff_BTST_b,(RR4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jff_BTST_b_imm)(d,live.state[s].val&7); return; } s=readreg(s,4); d=readreg(d,4); AND_rri(REG_WORK1, s, 7); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); MRS_CPSR(REG_WORK1); TST_rr(d,REG_WORK2); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(2,jff_BTST_b,(RR4 d, RR4 s)) MIDFUNC(2,jff_BTST_l,(RR4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jff_BTST_l_imm)(d,live.state[s].val&31); return; } s=readreg(s,4); d=readreg(d,4); AND_rri(REG_WORK1, s, 31); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); MRS_CPSR(REG_WORK1); TST_rr(d,REG_WORK2); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_Z_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_Z_FLAG); MSR_CPSR_r(REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(2,jff_BTST_l,(RR4 d, RR4 s)) /* * CLR * Operand Syntax: * * Operand Size: 8,16,32 * * X Not affected. * N Always cleared. * Z Always set. * V Always cleared. * C Always cleared. * */ MIDFUNC(1,jnf_CLR,(W4 d)) { d=writereg(d,4); MOV_ri(d,0); unlock2(d); } MENDFUNC(1,jnf_CLR,(W4 d)) MIDFUNC(1,jff_CLR,(W4 d)) { d=writereg(d,4); MOV_ri(d,0); MSR_CPSR_i(ARM_Z_FLAG); unlock2(d); } MENDFUNC(1,jff_CLR,(W4 d)) /* * CMP * Operand Syntax: , Dn * * Operand Size: 8,16,32 * * X Not affected. * N Set if the result is negative. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Set if an overflow occurs. Cleared otherwise. * C Set if a borrow occurs. Cleared otherwise. * */ MIDFUNC(2,jff_CMP_b,(RR1 d, RR1 s)) { d=readreg(d,4); s=readreg(s,4); SIGNED8_REG_2_REG(REG_WORK1, d); SIGNED8_REG_2_REG(REG_WORK2, s); CMP_rr(REG_WORK1,REG_WORK2); MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); MSR_CPSR_r(REG_WORK1); // inverted_carry = true; unlock2(s); unlock2(d); } MENDFUNC(2,jff_CMP_b,(RR1 d, RR1 s)) MIDFUNC(2,jff_CMP_w,(RR2 d, RR2 s)) { d=readreg(d,4); s=readreg(s,4); SIGNED16_REG_2_REG(REG_WORK1, d); SIGNED16_REG_2_REG(REG_WORK2, s); CMP_rr(REG_WORK1,REG_WORK2); MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); MSR_CPSR_r(REG_WORK1); // inverted_carry = true; unlock2(s); unlock2(d); } MENDFUNC(2,jff_CMP_w,(RR2 d, RR2 s)) MIDFUNC(2,jff_CMP_l,(RR4 d, RR4 s)) { d=readreg(d,4); s=readreg(s,4); CMP_rr(d,s); MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); MSR_CPSR_r(REG_WORK1); // inverted_carry = true; unlock2(s); unlock2(d); } MENDFUNC(2,jff_CMP_l,(RR4 d, RR4 s)) /* * CMPA * Operand Syntax: , An * * Operand Size: 16,32 * * X Not affected. * N Set if the result is negative. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Set if an overflow occurs. Cleared otherwise. * C Set if a borrow occurs. Cleared otherwise. * */ MIDFUNC(2,jff_CMPA_b,(RR1 d, RR1 s)) { d=readreg(d,4); s=readreg(s,4); SIGNED8_REG_2_REG(REG_WORK2, s); CMP_rr(d,REG_WORK2); MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); MSR_CPSR_r(REG_WORK1); // invertedcarry = true; unlock2(s); unlock2(d); } MENDFUNC(2,jff_CMPA_b,(RR1 d, RR1 s)) MIDFUNC(2,jff_CMPA_w,(RR2 d, RR2 s)) { d=readreg(d,4); s=readreg(s,4); SIGNED16_REG_2_REG(REG_WORK2, s); CMP_rr(d,REG_WORK2); MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); MSR_CPSR_r(REG_WORK1); // invertedcarry = true; unlock2(s); unlock2(d); } MENDFUNC(2,jff_CMPA_w,(RR2 d, RR2 s)) MIDFUNC(2,jff_CMPA_l,(RR4 d, RR4 s)) { d=readreg(d,4); s=readreg(s,4); CMP_rr(d,s); MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); MSR_CPSR_r(REG_WORK1); // invertedcarry = true; unlock2(s); unlock2(d); } MENDFUNC(2,jff_CMPA_l,(RR4 d, RR4 s)) /* * EOR * Operand Syntax: Dn, * * Operand Size: 8,16,32 * * X Not affected. * N Set if the most significant bit of the result is set. * Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Always cleared. * */ MIDFUNC(3,jnf_EOR,(W4 d, RR4 s, RR4 v)) { if (isconst(s) && isconst(v)) { set_const(d, live.state[s].val^live.state[v].val); return; } v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); EOR_rrr(d, s, v); unlock2(v); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_EOR,(RW4 d, RR4 s, RR4 v)) MIDFUNC(3,jff_EOR_b,(W4 d, RR1 s, RR1 v)) { v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); SIGNED8_REG_2_REG(REG_WORK1, s); SIGNED8_REG_2_REG(REG_WORK2, v); MSR_CPSRf_i(0); EORS_rrr(d, REG_WORK1, REG_WORK2); unlock2(v); unlock2(d); unlock2(s); } MENDFUNC(3,jff_EOR_b,(RW4 d, RR1 s, RR1 v)) MIDFUNC(3,jff_EOR_w,(W4 d, RR2 s, RR2 v)) { v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(REG_WORK1, s); SIGNED16_REG_2_REG(REG_WORK2, v); MSR_CPSRf_i(0); EORS_rrr(d, REG_WORK1, REG_WORK2); unlock2(v); unlock2(d); unlock2(s); } MENDFUNC(3,jff_EOR_w,(RW4 d, RR2 s, RR2 v)) MIDFUNC(3,jff_EOR_l,(W4 d, RR4 s, RR4 v)) { v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); MSR_CPSRf_i(0); EORS_rrr(d, s,v); unlock2(v); unlock2(d); unlock2(s); } MENDFUNC(3,jff_EOR_l,(RW4 d, RR4 s, RR4 v)) /* * EORI * Operand Syntax: #, CCR * * Operand Size: 8 * * X — Changed if bit 4 of immediate operand is one; unchanged otherwise. * N — Changed if bit 3 of immediate operand is one; unchanged otherwise. * Z — Changed if bit 2 of immediate operand is one; unchanged otherwise. * V — Changed if bit 1 of immediate operand is one; unchanged otherwise. * C — Changed if bit 0 of immediate operand is one; unchanged otherwise. * */ MIDFUNC(1,jff_EORSR,(IMM s, IMM x)) { MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, s); MSR_CPSRf_r(REG_WORK1); if (x) { compemu_raw_mov_l_ri(REG_WORK1, (uintptr)live.state[FLAGX].mem); LDRB_rR(REG_WORK2, REG_WORK1); EOR_rri(REG_WORK2, REG_WORK2, 1); STRB_rR(REG_WORK2, REG_WORK1); } } MENDFUNC(1,jff_EORSR,(IMM s)) /* * EXT * Operand Syntax: * * Operand Size: 16,32 * * X Not affected. * N Set if the result is negative. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Always cleared. * */ MIDFUNC(2,jnf_EXT_b,(W4 d, RR4 s)) { if (isconst(s)) { set_const(d,(uae_s32)(uae_s8)live.state[s].val); return; } s=readreg(s,4); d=writereg(d,4); SIGNED8_REG_2_REG(d, s); unlock2(s); unlock2(d); } MENDFUNC(2,jnf_EXT_b,(W4 d, RR4 s)) MIDFUNC(2,jnf_EXT_w,(W4 d, RR4 s)) { if (isconst(s)) { set_const(d,(uae_s32)(uae_s8)live.state[s].val); return; } s=readreg(s,4); d=writereg(d,4); SIGNED8_REG_2_REG(d, s); unlock2(s); unlock2(d); } MENDFUNC(2,jnf_EXT_w,(W4 d, RR4 s)) MIDFUNC(2,jnf_EXT_l,(W4 d, RR4 s)) { if (isconst(s)) { set_const(d,(uae_s32)(uae_s16)live.state[s].val); return; } s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(d, s); unlock2(s); unlock2(d); } MENDFUNC(2,jnf_EXT_l,(W4 d, RR4 s)) MIDFUNC(2,jff_EXT_b,(W4 d, RR4 s)) { if (isconst(s)) { d=writereg(d,4); SIGNED8_IMM_2_REG(d, (uint8)live.state[s].val); } else { s=readreg(s,4); d=writereg(d,4); SIGNED8_REG_2_REG(d, s); unlock2(s); } MSR_CPSRf_i(0); TST_rr(d,d); unlock2(d); } MENDFUNC(2,jff_EXT_b,(W4 d, RR4 s)) MIDFUNC(2,jff_EXT_w,(W4 d, RR4 s)) { if (isconst(s)) { d=writereg(d,4); SIGNED8_IMM_2_REG(d, (uint8)live.state[s].val); } else { s=readreg(s,4); d=writereg(d,4); SIGNED8_REG_2_REG(d, s); unlock2(s); } MSR_CPSRf_i(0); TST_rr(d,d); unlock2(d); } MENDFUNC(2,jff_EXT_w,(W4 d, RR4 s)) MIDFUNC(2,jff_EXT_l,(W4 d, RR4 s)) { if (isconst(s)) { d=writereg(d,4); SIGNED16_IMM_2_REG(d, (uint16)live.state[s].val); } else { s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(d, s); unlock2(s); } MSR_CPSRf_i(0); TST_rr(d,d); unlock2(d); } MENDFUNC(2,jff_EXT_l,(W4 d, RR4 s)) /* * LSL * Operand Syntax: Dx, Dy * #, Dy * * * Operand Size: 8,16,32 * * X Set according to the last bit shifted out of the operand. Unaffected for a shift count of zero. * N Set if the result is negative. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Set according to the last bit shifted out of the operand. Cleared for a shift count of zero. * */ MIDFUNC(3,jnf_LSL_imm,(W4 d, RR4 s, IMM i)) { if (!i) return; s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,i); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_LSL_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_LSL_reg,(W4 d, RR4 s, RR4 i)) { i=readreg(i,4); s=readreg(s,4); d=writereg(d,4); AND_rri(REG_WORK1, i, 63); LSL_rrr(d,s,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_LSL_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_LSL_b_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); UNSIGNED8_REG_2_REG(d, s); MSR_CPSRf_i(0); REV_rr(d,d); if (i) { LSLS_rri(d,d,i); } else { TST_rr(d,d); } REV_rr(d,d); unlock2(d); unlock2(s); } MENDFUNC(3,jff_LSL_b_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_LSL_w_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); MSR_CPSRf_i(0); LSL_rri(d,s,16); if (i) { LSLS_rri(d,d,i); } else { TST_rr(d,d); } LSR_rri(d,d,16); unlock2(d); unlock2(s); } MENDFUNC(3,jff_LSL_w_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_LSL_l_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); MSR_CPSRf_i(0); if (i) { LSLS_rri(d,s,i); } else { MOV_rr(d,s); TST_rr(d,d); } unlock2(d); unlock2(s); } MENDFUNC(3,jff_LSL_l_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_LSL_b_reg,(W4 d, RR4 s, RR4 i)) { i=readreg(i,4); s=readreg(s,4); d=writereg(d,4); UNSIGNED8_REG_2_REG(d,s); CC_MSR_CPSRf_r(NATIVE_CC_CC, 0); // Clear everything except C CC_MSR_CPSRf_r(NATIVE_CC_CS, ARM_C_FLAG);// Clear everything except C REV_rr(d,d); AND_rri(REG_WORK1, i, 63); LSLS_rrr(d,d,REG_WORK1); REV_rr(d,d); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_LSL_b_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_LSL_w_reg,(W4 d, RR4 s, RR4 i)) { i=readreg(i,4); s=readreg(s,4); d=writereg(d,4); CC_MSR_CPSRf_r(NATIVE_CC_CC, 0); // Clear everything except C CC_MSR_CPSRf_r(NATIVE_CC_CS, ARM_C_FLAG);// Clear everything except C LSL_rri(d, s, 16); AND_rri(REG_WORK1, i, 63); LSLS_rrr(d,d,REG_WORK1); LSR_rri(d, d, 16); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_LSL_w_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_LSL_l_reg,(W4 d, RR4 s, RR4 i)) { i=readreg(i,4); s=readreg(s,4); d=writereg(d,4); CC_MSR_CPSRf_r(NATIVE_CC_CC, 0); // Clear everything except C CC_MSR_CPSRf_r(NATIVE_CC_CS, ARM_C_FLAG);// Clear everything except C AND_rri(REG_WORK1, i, 63); LSLS_rrr(d,s,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_LSL_l_reg,(W4 d, RR4 s, RR4 i)) /* * LSLW * Operand Syntax: * * Operand Size: 16 * * X Set according to the last bit shifted out of the operand. Unaffected for a shift count of zero. * N Set if the result is negative. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Set according to the last bit shifted out of the operand. Cleared for a shift count of zero. * */ MIDFUNC(2,jnf_LSLW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,1); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_LSLW,(W4 d, RR4 s)) MIDFUNC(2,jff_LSLW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); MSR_CPSRf_i(0); LSLS_rri(d,s,17); LSR_rri(d,d,16); unlock2(d); unlock2(s); } MENDFUNC(2,jff_LSLW,(W4 d, RR4 s)) /* * LSR * Operand Syntax: Dx, Dy * #, Dy * * * Operand Size: 8,16,32 * * X Set according to the last bit shifted out of the operand. * Unaffected for a shift count of zero. * N Set if the result is negative. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Set according to the last bit shifted out of the operand. * Cleared for a shift count of zero. * */ MIDFUNC(3,jnf_LSR_b_imm,(W4 d, RR4 s, IMM i)) { int isrmw; if (!i) return; isrmw=(s==d); if (!isrmw) { s=readreg(s,4); d=writereg(d,4); } else { s=d=rmw(s,4,4); } UNSIGNED8_REG_2_REG(d, s); LSR_rri(d,d,i); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(3,jnf_LSR_b_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_LSR_w_imm,(W4 d, RR4 s, IMM i)) { int isrmw; if (!i) return; isrmw=(s==d); if (!isrmw) { s=readreg(s,4); d=writereg(d,4); } else { s=d=rmw(s,4,4); } UNSIGNED16_REG_2_REG(d, s); LSR_rri(d,d,i); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(3,jnf_LSR_w_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_LSR_l_imm,(W4 d, RR4 s, IMM i)) { int isrmw; if (!i) return; isrmw=(s==d); if (!isrmw) { s=readreg(s,4); d=writereg(d,4); } else { s=d=rmw(s,4,4); } LSR_rri(d,s,i); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(3,jnf_LSR_l_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_LSR_b_imm,(W4 d, RR4 s, IMM i)) { int isrmw; isrmw=(s==d); if (!isrmw) { s=readreg(s,4); d=writereg(d,4); } else { s=d=rmw(s,4,4); } UNSIGNED8_REG_2_REG(d, s); MSR_CPSRf_i(0); if (i) { LSRS_rri(d,d,i); } else { TST_rr(d,d); } if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(3,jff_LSR_b_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_LSR_w_imm,(W4 d, RR4 s, IMM i)) { int isrmw; isrmw=(s==d); if (!isrmw) { s=readreg(s,4); d=writereg(d,4); } else { s=d=rmw(s,4,4); } UNSIGNED16_REG_2_REG(d, s); MSR_CPSRf_i(0); if (i) { LSRS_rri(d,d,i); } else { TST_rr(d,d); } if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(3,jff_LSR_w_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_LSR_l_imm,(W4 d, RR4 s, IMM i)) { int isrmw; isrmw=(s==d); if (!isrmw) { s=readreg(s,4); d=writereg(d,4); } else { s=d=rmw(s,4,4); } MSR_CPSRf_i(0); if (i) { LSRS_rri(d,s,i); } else { TST_rr(s,s); } if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(3,jff_LSR_l_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_LSR_b_reg,(W4 d, RR4 s, RR4 i)) { int isrmw; i=readreg(i,4); isrmw=(s==d); if (!isrmw) { s=readreg(s,4); d=writereg(d,4); } else { s=d=rmw(s,4,4); } UNSIGNED8_REG_2_REG(d, s); AND_rri(REG_WORK1, i, 63); LSR_rrr(d,d,REG_WORK1); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } unlock2(i); } MENDFUNC(3,jnf_LSR_b_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jnf_LSR_w_reg,(W4 d, RR4 s, RR4 i)) { int isrmw; i=readreg(i,4); isrmw=(s==d); if (!isrmw) { s=readreg(s,4); d=writereg(d,4); } else { s=d=rmw(s,4,4); } UNSIGNED16_REG_2_REG(d, s); AND_rri(REG_WORK1, i, 63); LSR_rrr(d,d,REG_WORK1); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } unlock2(i); } MENDFUNC(3,jnf_LSR_w_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jnf_LSR_l_reg,(W4 d, RR4 s, RR4 i)) { int isrmw; i=readreg(i,4); isrmw=(s==d); if (!isrmw) { s=readreg(s,4); d=writereg(d,4); } else { s=d=rmw(s,4,4); } AND_rri(REG_WORK1, i, 63); LSR_rrr(d,s,REG_WORK1); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } unlock2(i); } MENDFUNC(3,jnf_LSR_l_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_LSR_b_reg,(W4 d, RR4 s, RR4 i)) { int isrmw; i=readreg(i,4); isrmw=(s==d); if (!isrmw) { s=readreg(s,4); d=writereg(d,4); } else { s=d=rmw(s,4,4); } UNSIGNED8_REG_2_REG(d, s); CC_MSR_CPSRf_r(NATIVE_CC_CC, 0); // Clear everything except C CC_MSR_CPSRf_r(NATIVE_CC_CS, ARM_C_FLAG);// Clear everything except C AND_rri(REG_WORK1, i, 63); LSRS_rrr(d,d,REG_WORK1); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } unlock2(i); } MENDFUNC(3,jff_LSR_b_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_LSR_w_reg,(W4 d, RR4 s, RR4 i)) { int isrmw; i=readreg(i,4); isrmw=(s==d); if (!isrmw) { s=readreg(s,4); d=writereg(d,4); } else { s=d=rmw(s,4,4); } UNSIGNED16_REG_2_REG(d, s); CC_MSR_CPSRf_r(NATIVE_CC_CC, 0); // Clear everything except C CC_MSR_CPSRf_r(NATIVE_CC_CS, ARM_C_FLAG);// Clear everything except C AND_rri(REG_WORK1, i, 63); LSRS_rrr(d,d,REG_WORK1); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } unlock2(i); } MENDFUNC(3,jff_LSR_w_reg,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_LSR_l_reg,(W4 d, RR4 s, RR4 i)) { int isrmw; i=readreg(i,4); isrmw=(s==d); if (!isrmw) { s=readreg(s,4); d=writereg(d,4); } else { s=d=rmw(s,4,4); } CC_MSR_CPSRf_r(NATIVE_CC_CC, 0); // Clear everything except C CC_MSR_CPSRf_r(NATIVE_CC_CS, ARM_C_FLAG);// Clear everything except C AND_rri(REG_WORK1, i, 63); LSRS_rrr(d,s,REG_WORK1); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } unlock2(i); } MENDFUNC(3,jff_LSR_l_reg,(W4 d, RR4 s, RR4 i)) /* * LSRW * Operand Syntax: * * Operand Size: 16 * * X Set according to the last bit shifted out of the operand. Unaffected for a shift count of zero. * N Set if the result is negative. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Set according to the last bit shifted out of the operand. Cleared for a shift count of zero. * */ MIDFUNC(2,jnf_LSRW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); UNSIGNED16_REG_2_REG(d, s); LSR_rri(d,d,1); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_LSRW,(W4 d, RR4 s)) MIDFUNC(2,jff_LSRW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); UNSIGNED16_REG_2_REG(d, s); MSR_CPSRf_i(0); LSR_rri(d,d,1); unlock2(d); unlock2(s); } MENDFUNC(2,jff_LSRW,(W4 d, RR4 s)) /* * MOVE * Operand Syntax: , * * Operand Size: 8,16,32 * * X Not affected. * N Set if the result is negative. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Always cleared. * */ MIDFUNC(2,jnf_MOVE,(W4 d, RR4 s)) { if (isconst(s)) { set_const(d,live.state[s].val); return; } s=readreg(s,4); d=writereg(d,4); MOV_rr(d, s); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_MOVE,(W4 d, RR4 s)) MIDFUNC(2,jff_MOVE_b_imm,(W4 d, IMM s)) { d=writereg(d,4); SIGNED8_IMM_2_REG(d, (uint8)s); MSR_CPSRf_i(0); TST_rr(d,d); unlock2(d); } MENDFUNC(2,jff_MOVE_b_imm,(W4 d, IMM s)) MIDFUNC(2,jff_MOVE_w_imm,(W4 d, IMM s)) { d=writereg(d,4); SIGNED16_IMM_2_REG(d, (uint16)s); MSR_CPSRf_i(0); TST_rr(d,d); unlock2(d); } MENDFUNC(2,jff_MOVE_w_imm,(W4 d, IMM s)) MIDFUNC(2,jff_MOVE_l_imm,(W4 d, IMM s)) { d=writereg(d,4); compemu_raw_mov_l_ri(d, s); MSR_CPSRf_i(0); TST_rr(d,d); unlock2(d); } MENDFUNC(2,jff_MOVE_l_imm,(W4 d, IMM s)) MIDFUNC(2,jff_MOVE_b,(W4 d, RR1 s)) { if (isconst(s)) { COMPCALL(jff_MOVE_b_imm)(d,live.state[s].val); return; } s=readreg(s,4); d=writereg(d,4); SIGNED8_REG_2_REG(d, s); MSR_CPSRf_i(0); TST_rr(d,d); unlock2(d); unlock2(s); } MENDFUNC(2,jff_MOVE_b,(W4 d, RR1 s)) MIDFUNC(2,jff_MOVE_w,(W4 d, RR2 s)) { if (isconst(s)) { COMPCALL(jff_MOVE_w_imm)(d,live.state[s].val); return; } s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(d, s); MSR_CPSRf_i(0); TST_rr(d,d); unlock2(d); unlock2(s); } MENDFUNC(2,jff_MOVE_w,(W4 d, RR2 s)) MIDFUNC(2,jff_MOVE_l,(W4 d, RR4 s)) { if (isconst(s)) { COMPCALL(jff_MOVE_l_imm)(d,live.state[s].val); return; } s=readreg(s,4); d=writereg(d,4); MSR_CPSRf_i(0); MOVS_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,jff_MOVE_l,(W4 d, RR4 s)) /* * MOVE16 * * Flags: Not affected. * */ MIDFUNC(2,jnf_MOVE16,(RR4 d, RR4 s)) { s=readreg(s,4); d=readreg(d,4); BIC_rri(s, s, 0x000000FF); BIC_rri(d, d, 0x000000FF); compemu_raw_mov_l_ri(REG_WORK1, (IMM)MEMBaseDiff); ADD_rrr(s, s, REG_WORK1); ADD_rrr(d, d, REG_WORK1); LDR_rRI(REG_WORK1, s, 8); LDR_rRI(REG_WORK2, s, 12); PUSH_REGS((1<, An * * Operand Size: 16,32 * * Flags: Not affected. * */ MIDFUNC(2,jnf_MOVEA_w,(W4 d, RR2 s)) { s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_MOVEA_w,(W4 d, RR2 s)) MIDFUNC(2,jnf_MOVEA_l,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); MOV_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_MOVEA_l,(W4 d, RR4 s)) /* * MULS * Operand Syntax: , Dn * * Operand Size: 16 * * X Not affected. * N Set if the result is negative. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Set if overflow. Cleared otherwise. (32 Bit multiply only) * C Always cleared. * */ MIDFUNC(2,jnf_MULS,(RW4 d, RR4 s)) { s = readreg(s, 4); d = rmw(d, 4, 4); SIGN_EXTEND_16_REG_2_REG(d,d); SIGN_EXTEND_16_REG_2_REG(REG_WORK1,s); MUL_rrr(d, d, REG_WORK1); unlock2(s); unlock2(d); } MENDFUNC(2,jnf_MULS,(RW4 d, RR4 s)) MIDFUNC(2,jff_MULS,(RW4 d, RR4 s)) { s = readreg(s, 4); d = rmw(d, 4, 4); SIGN_EXTEND_16_REG_2_REG(d,d); SIGN_EXTEND_16_REG_2_REG(REG_WORK1,s); MSR_CPSRf_i(0); MULS_rrr(d, d, REG_WORK1); unlock2(s); unlock2(d); } MENDFUNC(2,jff_MULS,(RW4 d, RR4 s)) MIDFUNC(2,jnf_MULS32,(RW4 d, RR4 s)) { s = readreg(s, 4); d = rmw(d, 4, 4); MUL_rrr(d, d, s); unlock2(s); unlock2(d); } MENDFUNC(2,jnf_MULS32,(RW4 d, RR4 s)) MIDFUNC(2,jff_MULS32,(RW4 d, RR4 s)) { s = readreg(s, 4); d = rmw(d, 4, 4); MSR_CPSRf_i(0); // L, H, SMULLS_rrrr(d, REG_WORK2, d, s); MRS_CPSR(REG_WORK1); TEQ_rrASRi(REG_WORK2,d,31); CC_ORR_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_V_FLAG); MSR_CPSRf_r(REG_WORK1); unlock2(s); unlock2(d); } MENDFUNC(2,jff_MULS32,(RW4 d, RR4 s)) MIDFUNC(2,jnf_MULS64,(RW4 d, RW4 s)) { s = rmw(s, 4, 4); d = rmw(d, 4, 4); // L, H, SMULL_rrrr(d, s, d, s); unlock2(s); unlock2(d); } MENDFUNC(2,jnf_MULS64,(RW4 d, RW4 s)) MIDFUNC(2,jff_MULS64,(RW4 d, RW4 s)) { s = rmw(s, 4, 4); d = rmw(d, 4, 4); MSR_CPSRf_i(0); // L, H, SMULLS_rrrr(d, s, d, s); MRS_CPSR(REG_WORK1); TEQ_rrASRi(s,d,31); CC_ORR_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_V_FLAG); MSR_CPSRf_r(REG_WORK1); unlock2(s); unlock2(d); } MENDFUNC(2,jff_MULS64,(RW4 d, RW4 s)) /* * MULU * Operand Syntax: , Dn * * Operand Size: 16 * * X Not affected. * N Set if the result is negative. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Set if overflow. Cleared otherwise. (32 Bit multiply only) * C Always cleared. * */ MIDFUNC(2,jnf_MULU,(RW4 d, RR4 s)) { s = readreg(s, 4); d = rmw(d, 4, 4); ZERO_EXTEND_16_REG_2_REG(d,d); ZERO_EXTEND_16_REG_2_REG(REG_WORK1,s); MUL_rrr(d, d, REG_WORK1); unlock2(s); unlock2(d); } MENDFUNC(2,jnf_MULU,(RW4 d, RR4 s)) MIDFUNC(2,jff_MULU,(RW4 d, RR4 s)) { s = readreg(s, 4); d = rmw(d, 4, 4); ZERO_EXTEND_16_REG_2_REG(d,d); ZERO_EXTEND_16_REG_2_REG(REG_WORK1, s); MSR_CPSRf_i(0); MULS_rrr(d, d, REG_WORK1); unlock2(s); unlock2(d); } MENDFUNC(2,jff_MULU,(RW4 d, RR4 s)) MIDFUNC(2,jnf_MULU32,(RW4 d, RR4 s)) { s = readreg(s, 4); d = rmw(d, 4, 4); MUL_rrr(d, d, s); unlock2(s); unlock2(d); } MENDFUNC(2,jnf_MULU32,(RW4 d, RR4 s)) MIDFUNC(2,jff_MULU32,(RW4 d, RR4 s)) { s = readreg(s, 4); d = rmw(d, 4, 4); // L, H, MSR_CPSRf_i(0); UMULLS_rrrr(d, REG_WORK2, d, s); MRS_CPSR(REG_WORK1); TST_rr(REG_WORK2,REG_WORK2); CC_ORR_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_V_FLAG); MSR_CPSRf_r(REG_WORK1); unlock2(s); unlock2(d); } MENDFUNC(2,jff_MULU32,(RW4 d, RR4 s)) MIDFUNC(2,jnf_MULU64,(RW4 d, RW4 s)) { s = rmw(s, 4, 4); d = rmw(d, 4, 4); // L, H, UMULL_rrrr(d, s, d, s); unlock2(s); unlock2(d); } MENDFUNC(2,jnf_MULU64,(RW4 d, RW4 s)) MIDFUNC(2,jff_MULU64,(RW4 d, RW4 s)) { s = rmw(s, 4, 4); d = rmw(d, 4, 4); // L, H, MSR_CPSRf_i(0); UMULLS_rrrr(d, s, d, s); MRS_CPSR(REG_WORK1); TST_rr(s,s); CC_ORR_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_V_FLAG); MSR_CPSRf_r(REG_WORK1); unlock2(s); unlock2(d); } MENDFUNC(2,jff_MULU64,(RW4 d, RW4 s)) /* * NEG * Operand Syntax: * * Operand Size: 8,16,32 * * X Set the same as the carry bit. * N Set if the result is negative. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Set if an overflow occurs. Cleared otherwise. * C Cleared if the result is zero. Set otherwise. * */ MIDFUNC(2,jnf_NEG,(W4 d, RR4 s)) { d=writereg(d,4); s=readreg(s,4); RSB_rri(d,s,0); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_NEG,(W4 d, RR4 s)) MIDFUNC(2,jff_NEG_b,(W4 d, RR1 s)) { d=writereg(d,4); s=readreg(s,4); SIGNED8_REG_2_REG(REG_WORK1, s); RSBS_rri(d,REG_WORK1,0); // inverted_carry = true; MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); MSR_CPSR_r(REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(2,jff_NEG_b,(W4 d, RR1 s)) MIDFUNC(2,jff_NEG_w,(W4 d, RR2 s)) { d=writereg(d,4); s=readreg(s,4); SIGNED16_REG_2_REG(REG_WORK1, s); RSBS_rri(d,REG_WORK1,0); // inverted_carry = true; MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); MSR_CPSR_r(REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(2,jff_NEG_w,(W4 d, RR2 s)) MIDFUNC(2,jff_NEG_l,(W4 d, RR4 s)) { d=writereg(d,4); s=readreg(s,4); RSBS_rri(d,s,0); // inverted_carry = true; MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); MSR_CPSR_r(REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(2,jff_NEG_l,(W4 d, RR4 s)) /* * NEGX * Operand Syntax: * * Operand Size: 8,16,32 * * X Set the same as the carry bit. * N Set if the result is negative. Cleared otherwise. * Z Cleared if the result is nonzero; unchanged otherwise. * V Set if an overflow occurs. Cleared otherwise. * C Cleared if the result is zero. Set otherwise. * * Attention: Z is cleared only if the result is nonzero. Unchanged otherwise * */ MIDFUNC(2,jnf_NEGX,(W4 d, RR4 s)) { d=writereg(d,4); s=readreg(s,4); RSC_rri(d,s,0); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_NEGX,(W4 d, RR4 s)) MIDFUNC(2,jff_NEGX_b,(W4 d, RR1 s)) { d=writereg(d,4); s=readreg(s,4); MRS_CPSR(REG_WORK2); CC_MVN_ri(NATIVE_CC_EQ, REG_WORK2, 0); CC_MVN_ri(NATIVE_CC_NE, REG_WORK2, ARM_Z_FLAG); SIGNED8_REG_2_REG(REG_WORK1, s); RSCS_rri(d,REG_WORK1,0); MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); AND_rrr(REG_WORK1, REG_WORK1, REG_WORK2); MSR_CPSR_r(REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(2,jff_NEGX_b,(W4 d, RR1 s)) MIDFUNC(2,jff_NEGX_w,(W4 d, RR2 s)) { d=writereg(d,4); s=readreg(s,4); MRS_CPSR(REG_WORK2); CC_MVN_ri(NATIVE_CC_EQ, REG_WORK2, 0); CC_MVN_ri(NATIVE_CC_NE, REG_WORK2, ARM_Z_FLAG); SIGNED16_REG_2_REG(REG_WORK1, s); RSCS_rri(d,REG_WORK1,0); MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); AND_rrr(REG_WORK1, REG_WORK1, REG_WORK2); MSR_CPSR_r(REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(2,jff_NEGX_w,(W4 d, RR2 s)) MIDFUNC(2,jff_NEGX_l,(W4 d, RR4 s)) { d=writereg(d,4); s=readreg(s,4); MRS_CPSR(REG_WORK2); CC_MVN_ri(NATIVE_CC_EQ, REG_WORK2, 0); CC_MVN_ri(NATIVE_CC_NE, REG_WORK2, ARM_Z_FLAG); RSCS_rri(d,s,0); MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); AND_rrr(REG_WORK1, REG_WORK1, REG_WORK2); MSR_CPSR_r(REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(2,jff_NEGX_l,(W4 d, RR4 s)) /* * NOT * Operand Syntax: * * Operand Size: 8,16,32 * * X Not affected. * N Set if the result is negative. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Always cleared. * */ MIDFUNC(2,jnf_NOT,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); MVN_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_NOT,(W4 d, RR4 s)) MIDFUNC(2,jff_NOT_b,(W4 d, RR1 s)) { s=readreg(s,4); d=writereg(d,4); UNSIGNED8_REG_2_REG(d,s); MSR_CPSRf_i(0); // Clear flags MVNS_rr(d,d); unlock2(d); unlock2(s); } MENDFUNC(2,jff_NOT_b,(W4 d, RR1 s)) MIDFUNC(2,jff_NOT_w,(W4 d, RR2 s)) { s=readreg(s,4); d=writereg(d,4); UNSIGNED16_REG_2_REG(d,s); MSR_CPSRf_i(0); // Clear flags MVNS_rr(d,d); unlock2(d); unlock2(s); } MENDFUNC(2,jff_NOT_w,(W4 d, RR2 s)) MIDFUNC(2,jff_NOT_l,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); MSR_CPSRf_i(0); // Clear flags MVNS_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,jff_NOT_l,(W4 d, RR4 s)) /* * OR * Operand Syntax: , Dn * Dn, * * Operand Size: 8,16,32 * * X Not affected. * N Set if the most significant bit of the result is set. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Always cleared. * */ MIDFUNC(3,jnf_OR,(W4 d, RR4 s, RR4 v)) { if (isconst(s) && isconst(v)) { set_const(d, live.state[s].val|live.state[v].val); return; } v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); ORR_rrr(d, s, v); unlock2(v); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_OR,(RW4 d, RR4 s, RR4 v)) MIDFUNC(3,jff_OR_b,(W4 d, RR1 s, RR1 v)) { v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); SIGNED8_REG_2_REG(REG_WORK1, s); SIGNED8_REG_2_REG(REG_WORK2, v); MSR_CPSRf_i(0); ORRS_rrr(d, REG_WORK1, REG_WORK2); unlock2(v); unlock2(d); unlock2(s); } MENDFUNC(3,jff_OR_b,(RW4 d, RR1 s, RR1 v)) MIDFUNC(3,jff_OR_w,(W4 d, RR2 s, RR2 v)) { v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(REG_WORK1, s); SIGNED16_REG_2_REG(REG_WORK2, v); MSR_CPSRf_i(0); ORRS_rrr(d, REG_WORK1, REG_WORK2); unlock2(v); unlock2(d); unlock2(s); } MENDFUNC(3,jff_OR_w,(RW4 d, RR2 s, RR2 v)) MIDFUNC(3,jff_OR_l,(W4 d, RR4 s, RR4 v)) { v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); MSR_CPSRf_i(0); ORRS_rrr(d, s,v); unlock2(v); unlock2(d); unlock2(s); } MENDFUNC(3,jff_OR_l,(RW4 d, RR4 s, RR4 v)) /* * ORI * Operand Syntax: #, CCR * * Operand Size: 8 * * X — Set if bit 4 of immediate operand is one; unchanged otherwise. * N — Set if bit 3 of immediate operand is one; unchanged otherwise. * Z — Set if bit 2 of immediate operand is one; unchanged otherwise. * V — Set if bit 1 of immediate operand is one; unchanged otherwise. * C — Set if bit 0 of immediate operand is one; unchanged otherwise. * */ MIDFUNC(1,jff_ORSR,(IMM s, IMM x)) { MRS_CPSR(REG_WORK1); ORR_rri(REG_WORK1, REG_WORK1, s); MSR_CPSRf_r(REG_WORK1); if (x) { compemu_raw_mov_l_ri(REG_WORK1, (uintptr)live.state[FLAGX].mem); MOV_ri(REG_WORK2, 1); STRB_rR(REG_WORK2, REG_WORK1); } } MENDFUNC(1,jff_ORSR,(IMM s)) /* * ROL * Operand Syntax: Dx, Dy * #, Dy * * * Operand Size: 8,16,32 * * X Not affected. * N Set if the most significant bit of the result is set. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Set according to the last bit rotated out of the operand. Cleared when the rotate count is zero. * */ MIDFUNC(3,jnf_ROL_b_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,24); ORR_rrrLSRi(d,d,d,8); ORR_rrrLSRi(d,d,d,16); ROR_rri(d,d,(32-(i&0x1f))); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ROL_b_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ROL_w_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,16); ORR_rrrLSRi(d,d,d,16); ROR_rri(d,d,(32-(i&0x1f))); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ROL_w_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ROL_l_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); ROR_rri(d,s,(32-(i&0x1f))); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ROL_l_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ROL_b_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,24); ORR_rrrLSRi(d,d,d,8); ORR_rrrLSRi(d,d,d,16); MSR_CPSRf_i(0); if (i) { RORS_rri(d,d,(32-(i&0x1f))); MRS_CPSR(REG_WORK2); TST_ri(d, 1); CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); MSR_CPSR_r(REG_WORK2); } else { TST_rr(d,d); } unlock2(d); unlock2(s); } MENDFUNC(3,jff_ROL_b_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ROL_w_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,16); ORR_rrrLSRi(d,d,d,16); MSR_CPSRf_i(0); if (i) { RORS_rri(d,d,(32-(i&0x1f))); MRS_CPSR(REG_WORK2); TST_ri(d, 1); CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); MSR_CPSR_r(REG_WORK2); } else { TST_rr(d,d); } unlock2(d); unlock2(s); } MENDFUNC(3,jff_ROL_w_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ROL_l_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); MSR_CPSRf_i(0); if (i) { RORS_rri(d,s,(32-(i&0x1f))); MRS_CPSR(REG_WORK2); TST_ri(d, 1); CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); MSR_CPSR_r(REG_WORK2); } else { MOVS_rr(d,s); } unlock2(d); unlock2(s); } MENDFUNC(3,jff_ROL_l_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ROL_b,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jnf_ROL_b_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); AND_rri(REG_WORK1, i, 0x1f); RSB_rri(REG_WORK1, REG_WORK1, 32); LSL_rri(d,s,24); ORR_rrrLSRi(d,d,d,8); ORR_rrrLSRi(d,d,d,16); ROR_rrr(d,d,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ROL_b,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jnf_ROL_w,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jnf_ROL_w_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); AND_rri(REG_WORK1, i, 0x1f); RSB_rri(REG_WORK1, REG_WORK1, 32); LSL_rri(d,s,16); ORR_rrrLSRi(d,d,d,16); ROR_rrr(d,d,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ROL_w,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jnf_ROL_l,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jnf_ROL_l_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); AND_rri(REG_WORK1, i, 0x1f); RSB_rri(REG_WORK1, REG_WORK1, 32); ROR_rrr(d,s,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ROL_l,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ROL_b,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jff_ROL_b_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); AND_rri(REG_WORK1, i, 0x1f); RSB_rri(REG_WORK1, REG_WORK1, 32); LSL_rri(d,s,24); ORR_rrrLSRi(d,d,d,8); ORR_rrrLSRi(d,d,d,16); MSR_CPSRf_i(0); RORS_rrr(d,d,REG_WORK1); MRS_CPSR(REG_WORK2); TST_ri(d, 1); CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); MSR_CPSR_r(REG_WORK2); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ROL_b,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ROL_w,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jff_ROL_w_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); AND_rri(REG_WORK1, i, 0x1f); RSB_rri(REG_WORK1, REG_WORK1, 32); LSL_rri(d,s,16); ORR_rrrLSRi(d,d,d,16); MSR_CPSRf_i(0); RORS_rrr(d,d,REG_WORK1); MRS_CPSR(REG_WORK2); TST_ri(d, 1); CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); MSR_CPSR_r(REG_WORK2); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ROL_w,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ROL_l,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jff_ROL_l_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); AND_rri(REG_WORK1, i, 0x1f); RSB_rri(REG_WORK1, REG_WORK1, 32); MSR_CPSRf_i(0); RORS_rrr(d,s,REG_WORK1); MRS_CPSR(REG_WORK2); TST_ri(d, 1); CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); MSR_CPSR_r(REG_WORK2); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ROL_l,(W4 d, RR4 s, RR4 i)) /* * ROLW * Operand Syntax: * * Operand Size: 16 * * X Not affected. * N Set if the most significant bit of the result is set. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Set according to the last bit rotated out of the operand. Cleared when the rotate count is zero. * */ MIDFUNC(2,jnf_ROLW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,16); ORR_rrrLSRi(d,d,d,16); ROR_rri(d,d,(32-1)); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_ROLW,(W4 d, RR4 s)) MIDFUNC(2,jff_ROLW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,16); ORR_rrrLSRi(d,d,d,16); MSR_CPSRf_i(0); RORS_rri(d,d,(32-1)); MRS_CPSR(REG_WORK2); TST_ri(d, 1); CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); MSR_CPSR_r(REG_WORK2); unlock2(d); unlock2(s); } MENDFUNC(2,jff_ROLW,(W4 d, RR4 s)) /* * RORW * Operand Syntax: * * Operand Size: 16 * * X Not affected. * N Set if the most significant bit of the result is set. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Set according to the last bit rotated out of the operand. * */ MIDFUNC(2,jnf_RORW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,16); ORR_rrrLSRi(d,d,d,16); ROR_rri(d,d,1); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_RORW,(W4 d, RR4 s)) MIDFUNC(2,jff_RORW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,16); ORR_rrrLSRi(d,d,d,16); MSR_CPSRf_i(0); RORS_rri(d,d,1); unlock2(d); unlock2(s); } MENDFUNC(2,jff_RORW,(W4 d, RR4 s)) /* * ROXL * Operand Syntax: Dx, Dy * #, Dy * * Operand Size: 8,16,32 * * X Set according to the last bit rotated out of the operand. Cleared when the rotate count is zero. * N Set if the most significant bit of the result is set. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Set according to the last bit rotated out of the operand. Cleared when the rotate count is zero. * */ MIDFUNC(3,jnf_ROXL_b_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); if (i > 0) { UNSIGNED8_REG_2_REG(d,s); LSL_rri(d,d,i); CC_ORR_rri(NATIVE_CC_CS, d,d, (1 << (i - 1))); if (i > 1) ORR_rrrLSRi(d,d,d,9); } else { MOV_rr(d,s); } unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ROXL_b_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ROXL_w_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); if (i > 0) { UNSIGNED16_REG_2_REG(d,s); LSL_rri(d,d,i); CC_ORR_rri(NATIVE_CC_CS, d,d, (1 << (i - 1))); if (i > 1) ORR_rrrLSRi(d,d,d,17); } else { MOV_rr(d,s); } unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ROXL_w_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ROXL_l_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); if (i > 0) { LSL_rri(d,s,i); CC_ORR_rri(NATIVE_CC_CS, d,d, (1 << (i - 1))); if (i > 1) ORR_rrrLSRi(d,d,s,(32-i)); } else { MOV_rr(d,s); } unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ROXL_l_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ROXL_b_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); if (i > 0) { UNSIGNED8_REG_2_REG(d,s); LSL_rri(d,d,i); CC_ORR_rri(NATIVE_CC_CS, d,d, (1 << (i - 1))); if (i > 1) ORR_rrrLSRi(d,d,d,9); TST_ri(s, (1<<(8-i))); CC_MSR_CPSRf_i(NATIVE_CC_NE, ARM_C_FLAG); CC_MSR_CPSRf_i(NATIVE_CC_EQ, 0); } else { MOV_rr(d,s); MSR_CPSRf_i(0); } SIGNED8_REG_2_REG(d,d); TST_rr(d,d); unlock2(d); unlock2(s); } MENDFUNC(3,jff_ROXL_b_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ROXL_w_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); if (i > 0) { UNSIGNED16_REG_2_REG(d,s); LSL_rri(d,d,i); CC_ORR_rri(NATIVE_CC_CS, d,d, (1 << (i - 1))); if (i > 1) ORR_rrrLSRi(d,d,d,17); TST_ri(s, (1<<(16-i))); CC_MSR_CPSRf_i(NATIVE_CC_NE, ARM_C_FLAG); CC_MSR_CPSRf_i(NATIVE_CC_EQ, 0); } else { MOV_rr(d,s); MSR_CPSRf_i(0); } SIGNED16_REG_2_REG(d,d); TST_rr(d,d); unlock2(d); unlock2(s); } MENDFUNC(3,jff_ROXL_w_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ROXL_l_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); if (i > 0) { LSL_rri(d,s,i); CC_ORR_rri(NATIVE_CC_CS, d,d, (1 << (i - 1))); if (i > 1) ORR_rrrLSRi(d,d,s,(32-i)); TST_ri(s, (1<<(32-i))); CC_MSR_CPSRf_i(NATIVE_CC_NE, ARM_C_FLAG); CC_MSR_CPSRf_i(NATIVE_CC_EQ, 0); } else { MOV_rr(d,s); MSR_CPSRf_i(0); } TST_rr(d,d); unlock2(d); unlock2(s); } MENDFUNC(3,jff_ROXL_l_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ROXL_b,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jnf_ROXL_b_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); MOV_rr(d,s); MRS_CPSR(REG_WORK2); AND_rri(REG_WORK1, i, 0x3f); CMP_ri(REG_WORK1, 36); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 36); CMP_ri(REG_WORK1, 18); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 18); CMP_ri(REG_WORK1, 9); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 9); CMP_ri(REG_WORK1, 0); #if defined(ARMV6_ASSEMBLY) BLE_i(8-1); #else BLE_i(9-1); #endif SUB_rri(REG_WORK1, REG_WORK1, 1); LSL_rri(d, d, 1); MSR_CPSRf_r(REG_WORK2); CC_ORR_rri(NATIVE_CC_CS, d,d,1); LSL_rrr(d, d, REG_WORK1); RSB_rri(REG_WORK1, REG_WORK1, 8); #if defined(ARMV6_ASSEMBLY) UXTB_rr(REG_WORK2, s); #else ROR_rri(REG_WORK2, s, 8); LSR_rri(REG_WORK2, REG_WORK2, 24); #endif ORR_rrrLSRr(d,d,REG_WORK2,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ROXL_b,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jnf_ROXL_w,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jnf_ROXL_w_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); UNSIGNED16_REG_2_REG(d,s); MRS_CPSR(REG_WORK2); CMP_ri(REG_WORK1, 34); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 34); CMP_ri(REG_WORK1, 17); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 17); CMP_ri(REG_WORK1, 0); #if defined(ARMV6_ASSEMBLY) BLE_i(8-1); #else BLE_i(9-1); #endif SUB_rri(REG_WORK1, REG_WORK1, 1); LSL_rri(d, d, 1); MSR_CPSRf_r(REG_WORK2); CC_ORR_rri(NATIVE_CC_CS, d,d,1); LSL_rrr(d, d, REG_WORK1); RSB_rri(REG_WORK1, REG_WORK1, 16); #if defined(ARMV6_ASSEMBLY) UXTH_rr(REG_WORK2, s); #else LSL_rri(REG_WORK2, s, 16); LSR_rri(REG_WORK2, REG_WORK2, 16); #endif ORR_rrrLSRr(d,d,REG_WORK2,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ROXL_w,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jnf_ROXL_l,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jnf_ROXL_l_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); MOV_rr(d,s); MRS_CPSR(REG_WORK2); CMP_ri(REG_WORK1, 33); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 33); CMP_ri(REG_WORK1, 0); BLE_i(7-1); SUB_rri(REG_WORK1, REG_WORK1, 1); LSL_rri(d, d, 1); MSR_CPSRf_r(REG_WORK2); CC_ORR_rri(NATIVE_CC_CS, d,d,1); LSL_rrr(d, d, REG_WORK1); RSB_rri(REG_WORK1, REG_WORK1, 32); ORR_rrrLSRr(d,d,s,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ROXL_l,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ROXL_b,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jff_ROXL_b_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); MOV_rr(d,s); MRS_CPSR(REG_WORK2); AND_rri(REG_WORK1, i, 0x3f); CMP_ri(REG_WORK1, 36); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 36); CMP_ri(REG_WORK1, 18); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 18); CMP_ri(REG_WORK1, 9); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 9); CMP_ri(REG_WORK1, 0); #if defined(ARMV6_ASSEMBLY) BLE_i(16-1); // label #else BLE_i(17-1); // label #endif SUB_rri(REG_WORK1, REG_WORK1, 1); LSL_rri(d, d, 1); MSR_CPSRf_r(REG_WORK2); CC_ORR_rri(NATIVE_CC_CS, d,d,1); LSL_rrr(d, d, REG_WORK1); MOV_ri(REG_WORK2, 0x80); LSR_rrr(REG_WORK2, REG_WORK2, REG_WORK1); PUSH(REG_WORK2); RSB_rri(REG_WORK1, REG_WORK1, 8); #if defined(ARMV6_ASSEMBLY) UXTB_rr(REG_WORK2, s); #else ROR_rri(REG_WORK2, s, 8); LSR_rri(REG_WORK2, REG_WORK2, 24); #endif ORR_rrrLSRr(d,d,REG_WORK2,REG_WORK1); POP(REG_WORK2); TST_rr(s, REG_WORK2); CC_MSR_CPSRf_i(NATIVE_CC_NE, ARM_C_FLAG); CC_MSR_CPSRf_i(NATIVE_CC_EQ, 0); B_i(0); // label2 // label: MSR_CPSRf_i(0); // label2: raw_sign_extend_8_rr(d,d); TST_rr(d,d); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ROXL_b,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ROXL_w,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jff_ROXL_w_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); MOV_rr(d,s); MRS_CPSR(REG_WORK2); AND_rri(REG_WORK1, i, 0x3f); CMP_ri(REG_WORK1, 34); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 34); CMP_ri(REG_WORK1, 17); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 17); CMP_ri(REG_WORK1, 0); #if defined(ARMV6_ASSEMBLY) BLE_i(16-1); // label #else BLE_i(17-1); // label #endif SUB_rri(REG_WORK1, REG_WORK1, 1); LSL_rri(d, d, 1); MSR_CPSRf_r(REG_WORK2); CC_ORR_rri(NATIVE_CC_CS, d,d,1); LSL_rrr(d, d, REG_WORK1); MOV_ri(REG_WORK2, 0x8000); LSR_rrr(REG_WORK2, REG_WORK2, REG_WORK1); PUSH(REG_WORK2); #if defined(ARMV6_ASSEMBLY) UXTH_rr(REG_WORK2, s); #else LSL_rri(REG_WORK2, s, 16); LSR_rri(REG_WORK2, REG_WORK2, 16); #endif RSB_rri(REG_WORK1, REG_WORK1, 16); ORR_rrrLSRr(d,d,REG_WORK2,REG_WORK1); POP(REG_WORK2); TST_rr(s, REG_WORK2); CC_MSR_CPSRf_i(NATIVE_CC_NE, ARM_C_FLAG); CC_MSR_CPSRf_i(NATIVE_CC_EQ, 0); B_i(0); // label2 // label: MSR_CPSRf_i(0); // label2: SIGNED16_REG_2_REG(d,d); TST_rr(d,d); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ROXL_w,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ROXL_l,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jff_ROXL_l_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); MOV_rr(d,s); MRS_CPSR(REG_WORK2); AND_rri(REG_WORK1, i, 0x3f); CMP_ri(REG_WORK1, 33); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 33); CMP_ri(REG_WORK1, 0); BLE_i(13-1); // label SUB_rri(REG_WORK1, REG_WORK1, 1); LSL_rri(d, d, 1); MSR_CPSRf_r(REG_WORK2); CC_ORR_rri(NATIVE_CC_CS, d,d,1); LSL_rrr(d, d, REG_WORK1); MOV_ri(REG_WORK2, 0x80000000); LSR_rrr(REG_WORK2, REG_WORK2, REG_WORK1); RSB_rri(REG_WORK1, REG_WORK1, 32); ORR_rrrLSRr(d,d,s,REG_WORK1); TST_rr(s, REG_WORK2); CC_MSR_CPSRf_i(NATIVE_CC_NE, ARM_C_FLAG); CC_MSR_CPSRf_i(NATIVE_CC_EQ, 0); B_i(0);// label2 // label: MSR_CPSRf_i(0); // label2: TST_rr(d,d); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ROXL_l,(W4 d, RR4 s, RR4 i)) /* * ROXLW * Operand Syntax: * * Operand Size: 16 * * X Not affected. * N Set if the most significant bit of the result is set. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Set according to the last bit rotated out of the operand. * */ MIDFUNC(2,jnf_ROXLW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,1); ADC_rri(d,d,0); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_ROXLW,(W4 d, RR4 s)) MIDFUNC(2,jff_ROXLW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,1); ADC_rri(d,d,0); MSR_CPSRf_i(0); LSLS_rri(d,d,15); LSR_rri(d,d,16); unlock2(d); unlock2(s); } MENDFUNC(2,jff_ROXLW,(W4 d, RR4 s)) /* * ROR * Operand Syntax: Dx, Dy * #, Dy * * * Operand Size: 8,16,32 * * X Not affected. * N Set if the most significant bit of the result is set. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Set according to the last bit rotated out of the operand. Cleared when the rotate count is zero. * */ MIDFUNC(3,jnf_ROR_b_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,24); ORR_rrrLSRi(d,d,d,8); ORR_rrrLSRi(d,d,d,16); ROR_rri(d,d,i); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ROR_b_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ROR_w_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,16); ORR_rrrLSRi(d,d,d,16); ROR_rri(d,d,i); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ROR_w_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ROR_l_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); ROR_rri(d,s,i); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ROR_l_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ROR_b_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,24); ORR_rrrLSRi(d,d,d,8); ORR_rrrLSRi(d,d,d,16); MSR_CPSRf_i(0); RORS_rri(d,d,i); unlock2(d); unlock2(s); } MENDFUNC(3,jff_ROR_b_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ROR_w_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,16); ORR_rrrLSRi(d,d,d,16); MSR_CPSRf_i(0); RORS_rrr(d,d,i); unlock2(d); unlock2(s); } MENDFUNC(3,jff_ROR_w_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ROR_l_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); MSR_CPSRf_i(0); RORS_rrr(d,s,i); unlock2(d); unlock2(s); } MENDFUNC(3,jff_ROR_l_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ROR_b,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jnf_ROR_b_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); LSL_rri(d,s,24); ORR_rrrLSRi(d,d,d,8); ORR_rrrLSRi(d,d,d,16); ROR_rrr(d,d,i); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ROR_b,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jnf_ROR_w,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jnf_ROR_w_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); LSL_rri(d,s,16); ORR_rrrLSRi(d,d,d,16); ROR_rrr(d,d,i); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ROR_w,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jnf_ROR_l,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jnf_ROR_l_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); ROR_rrr(d,s,i); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ROR_l,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ROR_b,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jff_ROR_b_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); LSL_rri(d,s,24); ORR_rrrLSRi(d,d,d,8); ORR_rrrLSRi(d,d,d,16); MSR_CPSRf_i(0); AND_rri(REG_WORK1, i, 63); RORS_rrr(d,d,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ROR_b,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ROR_w,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jff_ROR_w_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); LSL_rri(d,s,16); ORR_rrrLSRi(d,d,d,16); MSR_CPSRf_i(0); AND_rri(REG_WORK1, i, 63); RORS_rrr(d,d,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ROR_w,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ROR_l,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jff_ROR_l_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); MSR_CPSRf_i(0); AND_rri(REG_WORK1, i, 63); RORS_rrr(d,s,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ROR_l,(W4 d, RR4 s, RR4 i)) /* * ROXR * Operand Syntax: Dx, Dy * #, Dy * * Operand Size: 8,16,32 * * X Set according to the last bit rotated out of the operand. Cleared when the rotate count is zero. * N Set if the most significant bit of the result is set. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Set according to the last bit rotated out of the operand. Cleared when the rotate count is zero. * */ MIDFUNC(3,jnf_ROXR_b_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); if (i > 0) { LSR_rri(d,s,i); CC_ORR_rri(NATIVE_CC_CS, d,d, (0x80 >> (i - 1))); if (i > 1) ORR_rrrLSLi(d,d,s,(9-i)); } else { MOV_rr(d,s); } unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ROXR_b_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ROXR_w_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); if (i > 0) { LSR_rri(d,s,i); CC_ORR_rri(NATIVE_CC_CS, d,d, (0x8000 >> (i - 1))); if (i > 1) ORR_rrrLSLi(d,d,s,(17-i)); } else { MOV_rr(d,s); } unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ROXR_w_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ROXR_l_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); if (i > 0) { LSR_rri(d,s,i); CC_ORR_rri(NATIVE_CC_CS, d,d, (0x80000000 >> (i - 1))); if (i > 1) ORR_rrrLSLi(d,d,s,(33-i)); } else { MOV_rr(d,s); } unlock2(d); unlock2(s); } MENDFUNC(3,jnf_ROXR_l_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ROXR_b_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); if (i > 0) { UNSIGNED8_REG_2_REG(d,s); LSR_rri(d,d,i); CC_ORR_rri(NATIVE_CC_CS, d,d, (0x80 >> (i - 1))); if (i > 1) ORR_rrrLSLi(d,d,s,(9-i)); TST_ri(s, (1<<(i-1))); CC_MSR_CPSRf_i(NATIVE_CC_NE, ARM_C_FLAG); CC_MSR_CPSRf_i(NATIVE_CC_EQ, 0); } else { MOV_rr(d,s); MSR_CPSRf_i(0); } SIGNED8_REG_2_REG(d,d); TST_rr(d,d); unlock2(d); unlock2(s); } MENDFUNC(3,jff_ROXR_b_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ROXR_w_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); if (i > 0) { UNSIGNED16_REG_2_REG(d,s); LSR_rri(d,d,i); CC_ORR_rri(NATIVE_CC_CS, d,d, (0x8000 >> (i - 1))); if (i > 1) ORR_rrrLSLi(d,d,s,(17-i)); TST_ri(s, (1<<(i-1))); CC_MSR_CPSRf_i(NATIVE_CC_NE, ARM_C_FLAG); CC_MSR_CPSRf_i(NATIVE_CC_EQ, 0); } else { MOV_rr(d,s); MSR_CPSRf_i(0); } SIGNED16_REG_2_REG(d,d); TST_rr(d,d); unlock2(d); unlock2(s); } MENDFUNC(3,jff_ROXR_w_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jff_ROXR_l_imm,(W4 d, RR4 s, IMM i)) { s=readreg(s,4); d=writereg(d,4); if (i > 0) { LSR_rri(d,s,i); CC_ORR_rri(NATIVE_CC_CS, d,d, (0x80000000 >> (i - 1))); if (i > 1) ORR_rrrLSLi(d,d,s,(33-i)); TST_ri(s, (1<<(i-1))); CC_MSR_CPSRf_i(NATIVE_CC_NE, ARM_C_FLAG); CC_MSR_CPSRf_i(NATIVE_CC_EQ, 0); } else { MOV_rr(d,s); MSR_CPSRf_i(0); } TST_rr(d,d); unlock2(d); unlock2(s); } MENDFUNC(3,jff_ROXR_l_imm,(W4 d, RR4 s, IMM i)) MIDFUNC(3,jnf_ROXR_b,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jnf_ROXR_b_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); UNSIGNED8_REG_2_REG(d,s); MRS_CPSR(REG_WORK2); AND_rri(REG_WORK1, i, 0x3f); CMP_ri(REG_WORK1, 36); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 36); CMP_ri(REG_WORK1, 18); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 18); CMP_ri(REG_WORK1, 9); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 9); CMP_ri(REG_WORK1, 0); BLE_i(7-1); SUB_rri(REG_WORK1, REG_WORK1, 1); LSR_rri(d, d, 1); MSR_CPSRf_r(REG_WORK2); CC_ORR_rri(NATIVE_CC_CS, d,d,0x80); LSR_rrr(d, d, REG_WORK1); RSB_rri(REG_WORK1, REG_WORK1, 8); ORR_rrrLSLr(d,d,s,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ROXR_b,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jnf_ROXR_w,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jnf_ROXR_w_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); UNSIGNED16_REG_2_REG(d,s); MRS_CPSR(REG_WORK2); CMP_ri(REG_WORK1, 34); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 34); CMP_ri(REG_WORK1, 17); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 17); CMP_ri(REG_WORK1, 0); BLE_i(7-1); SUB_rri(REG_WORK1, REG_WORK1, 1); LSR_rri(d, d, 1); MSR_CPSRf_r(REG_WORK2); CC_ORR_rri(NATIVE_CC_CS, d,d,0x8000); LSR_rrr(d, d, REG_WORK1); RSB_rri(REG_WORK1, REG_WORK1, 16); ORR_rrrLSLr(d,d,s,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ROXR_w,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jnf_ROXR_l,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jnf_ROXR_l_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); MOV_rr(d,s); MRS_CPSR(REG_WORK2); CMP_ri(REG_WORK1, 33); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 33); CMP_ri(REG_WORK1, 0); BLE_i(7-1); SUB_rri(REG_WORK1, REG_WORK1, 1); LSR_rri(d, d, 1); MSR_CPSRf_r(REG_WORK2); CC_ORR_rri(NATIVE_CC_CS, d,d,0x80000000); LSR_rrr(d, d, REG_WORK1); RSB_rri(REG_WORK1, REG_WORK1, 32); ORR_rrrLSLr(d,d,s,REG_WORK1); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jnf_ROXR_l,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ROXR_b,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jff_ROXR_b_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); UNSIGNED8_REG_2_REG(d,s); MRS_CPSR(REG_WORK2); AND_rri(REG_WORK1, i, 0x3f); CMP_ri(REG_WORK1, 36); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 36); CMP_ri(REG_WORK1, 18); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 18); CMP_ri(REG_WORK1, 9); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 9); CMP_ri(REG_WORK1, 0); BLE_i(13-1); // label SUB_rri(REG_WORK1, REG_WORK1, 1); LSR_rri(d, d, 1); MSR_CPSRf_r(REG_WORK2); CC_ORR_rri(NATIVE_CC_CS, d,d,0x80); LSR_rrr(d, d, REG_WORK1); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); RSB_rri(REG_WORK1, REG_WORK1, 8); ORR_rrrLSLr(d,d,s,REG_WORK1); TST_rr(s, REG_WORK2); CC_MSR_CPSRf_i(NATIVE_CC_NE, ARM_C_FLAG); CC_MSR_CPSRf_i(NATIVE_CC_EQ, 0); B_i(0);// label2 // label: MSR_CPSRf_i(0); // label2: SIGNED8_REG_2_REG(d,d); TST_rr(d,d); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ROXR_b,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ROXR_w,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jff_ROXR_w_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); UNSIGNED16_REG_2_REG(d,s); MRS_CPSR(REG_WORK2); AND_rri(REG_WORK1, i, 0x3f); CMP_ri(REG_WORK1, 34); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 34); CMP_ri(REG_WORK1, 17); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 17); CMP_ri(REG_WORK1, 0); BLE_i(13-1); // label SUB_rri(REG_WORK1, REG_WORK1, 1); LSR_rri(d, d, 1); MSR_CPSRf_r(REG_WORK2); CC_ORR_rri(NATIVE_CC_CS, d,d,0x8000); LSR_rrr(d, d, REG_WORK1); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); RSB_rri(REG_WORK1, REG_WORK1, 16); ORR_rrrLSLr(d,d,s,REG_WORK1); TST_rr(s, REG_WORK2); CC_MSR_CPSRf_i(NATIVE_CC_NE, ARM_C_FLAG); CC_MSR_CPSRf_i(NATIVE_CC_EQ, 0); B_i(0);// label2 // label: MSR_CPSRf_i(0); // label2: SIGNED16_REG_2_REG(d,d); TST_rr(d,d); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ROXR_w,(W4 d, RR4 s, RR4 i)) MIDFUNC(3,jff_ROXR_l,(W4 d, RR4 s, RR4 i)) { if (isconst(i)) { COMPCALL(jff_ROXR_l_imm)(d,s,(uae_u8)live.state[i].val); return; } s=readreg(s,4); i=readreg(i,4); d=writereg(d,4); MOV_rr(d,s); MRS_CPSR(REG_WORK2); AND_rri(REG_WORK1, i, 0x3f); CMP_ri(REG_WORK1, 33); CC_SUB_rri(NATIVE_CC_GE, REG_WORK1, REG_WORK1, 33); CMP_ri(REG_WORK1, 0); BLE_i(13-1); // label SUB_rri(REG_WORK1, REG_WORK1, 1); LSR_rri(d, d, 1); MSR_CPSRf_r(REG_WORK2); CC_ORR_rri(NATIVE_CC_CS, d,d,0x80000000); LSR_rrr(d, d, REG_WORK1); MOV_ri(REG_WORK2, 1); LSL_rrr(REG_WORK2, REG_WORK2, REG_WORK1); RSB_rri(REG_WORK1, REG_WORK1, 32); ORR_rrrLSLr(d,d,s,REG_WORK1); TST_rr(s, REG_WORK2); CC_MSR_CPSRf_i(NATIVE_CC_NE, ARM_C_FLAG); CC_MSR_CPSRf_i(NATIVE_CC_EQ, 0); B_i(0);// label2 // label: MSR_CPSRf_i(0); // label2: TST_rr(d,d); unlock2(d); unlock2(s); unlock2(i); } MENDFUNC(3,jff_ROXR_l,(W4 d, RR4 s, RR4 i)) /* * ROXRW * Operand Syntax: * * Operand Size: 16 * * X Not affected. * N Set if the most significant bit of the result is set. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Always cleared. * C Set according to the last bit rotated out of the operand. * */ MIDFUNC(2,jnf_ROXRW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,16); RRX_rr(d,d); LSR_rri(d,d,16); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_ROXRW,(W4 d, RR4 s)) MIDFUNC(2,jff_ROXRW,(W4 d, RR4 s)) { s=readreg(s,4); d=writereg(d,4); LSL_rri(d,s,16); MSR_CPSRf_i(0); RRXS_rr(d,d); LSR_rri(d,d,16); unlock2(d); unlock2(s); } MENDFUNC(2,jff_ROXRW,(W4 d, RR4 s)) /* * SUB * Operand Syntax: , Dn * Dn, * * Operand Size: 8,16,32 * * X Set the same as the carry bit. * N Set if the result is negative. Cleared otherwise. * Z Set if the result is zero. Cleared otherwise. * V Set if an overflow is generated. Cleared otherwise. * C Set if a carry is generated. Cleared otherwise. * */ MIDFUNC(3,jnf_SUB_b_imm,(W4 d, RR4 s, IMM v)) { if (isconst(s)) { set_const(d,live.state[s].val-v); return; } s=readreg(s,4); d=writereg(d,4); UNSIGNED8_IMM_2_REG(REG_WORK1, (uint8)v); SUB_rrr(d,s,REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_SUB_b_imm,(W4 d, RR4 s, IMM v)) MIDFUNC(3,jnf_SUB_b,(W4 d, RR4 s, RR4 v)) { if (isconst(v)) { COMPCALL(jnf_SUB_b_imm)(d,s,live.state[v].val); return; } // d has to be different to s and v v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); SUB_rrr(d,s,v); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jnf_SUB_b,(W4 d, RR4 s, RR4 v)) MIDFUNC(3,jnf_SUB_w_imm,(W4 d, RR4 s, IMM v)) { if (isconst(s)) { set_const(d,live.state[s].val-v); return; } s=readreg(s,4); d=writereg(d,4); UNSIGNED16_IMM_2_REG(REG_WORK1, (uint16)v); SUB_rrr(d,s,REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_SUB_w_imm,(W4 d, RR4 s, IMM v)) MIDFUNC(3,jnf_SUB_w,(W4 d, RR4 s, RR4 v)) { if (isconst(v)) { COMPCALL(jnf_SUB_w_imm)(d,s,live.state[v].val); return; } // d has to be different to s and v v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); SUB_rrr(d,s,v); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jnf_SUB_w,(W4 d, RR4 s, RR4 v)) MIDFUNC(3,jnf_SUB_l_imm,(W4 d, RR4 s, IMM v)) { if (isconst(s)) { set_const(d,live.state[s].val-v); return; } s=readreg(s,4); d=writereg(d,4); compemu_raw_mov_l_ri(REG_WORK1, v); SUB_rrr(d,s,REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(3,jnf_SUB_l_imm,(W4 d, RR4 s, IMM v)) MIDFUNC(3,jnf_SUB_l,(W4 d, RR4 s, RR4 v)) { if (isconst(v)) { COMPCALL(jnf_SUB_l_imm)(d,s,live.state[v].val); return; } // d has to be different to s and v v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); SUB_rrr(d,s,v); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jnf_SUB_l,(W4 d, RR4 s, RR4 v)) MIDFUNC(3,jff_SUB_b_imm,(W4 d, RR1 s, IMM v)) { s=readreg(s,4); d=writereg(d,4); SIGNED8_IMM_2_REG(REG_WORK2, (uint8)v); SIGNED8_REG_2_REG(REG_WORK1, s); SUBS_rrr(d,REG_WORK1,REG_WORK2); // Todo: Handle this with inverted carry MRS_CPSR(REG_WORK1);// mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG);// eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1);// msr CPSR_fc, r2 // inverted_carry = true; unlock2(d); unlock2(s); } MENDFUNC(3,jff_SUB_b_imm,(W4 d, RR1 s, IMM v)) MIDFUNC(3,jff_SUB_b,(W4 d, RR1 s, RR1 v)) { if (isconst(v)) { COMPCALL(jff_SUB_b_imm)(d,s,live.state[v].val); return; } v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); SIGNED8_REG_2_REG(REG_WORK1, s); SIGNED8_REG_2_REG(REG_WORK2, v); SUBS_rrr(d,REG_WORK1,REG_WORK2); // Todo: Handle this with inverted carry MRS_CPSR(REG_WORK1);// mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG);// eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1);// msr CPSR_fc, r2 // inverted_carry = true; unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jff_SUB_b,(W4 d, RR1 s, RR1 v)) MIDFUNC(3,jff_SUB_w_imm,(W4 d, RR2 s, IMM v)) { s=readreg(s,4); d=writereg(d,4); SIGNED16_IMM_2_REG(REG_WORK2, (uint16)v); SIGNED16_REG_2_REG(REG_WORK1, s); SUBS_rrr(d,REG_WORK1,REG_WORK2); // Todo: Handle this with inverted carry MRS_CPSR(REG_WORK1);// mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG);// eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1);// msr CPSR_fc, r2 // inverted_carry = true; unlock2(d); unlock2(s); } MENDFUNC(3,jitc_SUB_ff_w2l_rri,(W4 d, RR2 s, IMM v)) MIDFUNC(3,jff_SUB_w,(W4 d, RR2 s, RR2 v)) { if (isconst(v)) { COMPCALL(jff_SUB_w_imm)(d,s,live.state[v].val); return; } v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); SIGNED16_REG_2_REG(REG_WORK1, s); SIGNED16_REG_2_REG(REG_WORK2, v); SUBS_rrr(d,REG_WORK1,REG_WORK2); // Todo: Handle this with inverted carry MRS_CPSR(REG_WORK1);// mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG);// eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1);// msr CPSR_fc, r2 // inverted_carry = true; unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jff_SUB_w,(W4 d, RR2 s, RR2 v)) MIDFUNC(3,jff_SUB_l_imm,(W4 d, RR4 s, IMM v)) { s=readreg(s,4); d=writereg(d,4); compemu_raw_mov_l_ri(REG_WORK2, v); SUBS_rrr(d,s,REG_WORK2); // Todo: Handle this with inverted carry MRS_CPSR(REG_WORK1);// mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG);// eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1);// msr CPSR_fc, r2 // inverted_carry = true; unlock2(d); unlock2(s); } MENDFUNC(3,jff_SUB_l_imm,(W4 d, RR4 s, IMM v)) MIDFUNC(3,jff_SUB_l,(W4 d, RR4 s, RR4 v)) { if (isconst(v)) { COMPCALL(jff_SUB_l_imm)(d,s,live.state[v].val); return; } v=readreg(v,4); s=readreg(s,4); d=writereg(d,4); SUBS_rrr(d,s,v); // Todo: Handle this with inverted carry MRS_CPSR(REG_WORK1);// mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG);// eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1);// msr CPSR_fc, r2 // inverted_carry = true; unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jff_SUB_l,(W4 d, RR4 s, RR4 v)) /* * SUBA * * Operand Syntax: , Dn * * Operand Size: 16,32 * * Flags: Not affected. * */ MIDFUNC(2,jnf_SUBA_b,(W4 d, RR1 s)) { s=readreg(s,4); d=rmw(d,4,4); SIGNED8_REG_2_REG(REG_WORK1,s); SUB_rrr(d,d,REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_SUBA_b,(W4 d, RR1 s)) MIDFUNC(2,jnf_SUBA_w,(W4 d, RR2 s)) { s=readreg(s,4); d=rmw(d,4,4); SIGNED16_REG_2_REG(REG_WORK1,s); SUB_rrr(d,d,REG_WORK1); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_SUBA_w,(W4 d, RR2 s)) MIDFUNC(2,jnf_SUBA_l,(W4 d, RR4 s)) { s=readreg(s,4); d=rmw(d,4,4); SUB_rrr(d,d,s); unlock2(d); unlock2(s); } MENDFUNC(2,jnf_SUBA_l,(W4 d, RR4 s)) /* * SUBX * Operand Syntax: Dy, Dx * -(Ay), -(Ax) * * Operand Size: 8,16,32 * * X Set the same as the carry bit. * N Set if the result is negative. Cleared otherwise. * Z Cleared if the result is nonzero. Unchanged otherwise. * V Set if an overflow is generated. Cleared otherwise. * C Set if a carry is generated. Cleared otherwise. * * Attention: Z is cleared only if the result is nonzero. Unchanged otherwise * */ MIDFUNC(3,jnf_SUBX,(W4 d, RR4 s, RR4 v)) { s=readreg(s,4); v=readreg(v,4); d=writereg(d,4); SBC_rrr(d,s,v); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jnf_SUBX,(W4 d, RR4 s, RR4 v)) MIDFUNC(3,jff_SUBX_b,(W4 d, RR1 s, RR1 v)) { s=readreg(s,4); v=readreg(v,4); d=writereg(d,4); MRS_CPSR(REG_WORK1); CC_MVN_ri(NATIVE_CC_EQ, REG_WORK1, 0); CC_MVN_ri(NATIVE_CC_NE, REG_WORK1, ARM_Z_FLAG); PUSH(REG_WORK1); SIGNED8_REG_2_REG(REG_WORK1, s); SIGNED8_REG_2_REG(REG_WORK2, v); SBCS_rrr(d,REG_WORK1,REG_WORK2); POP(REG_WORK2); MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); AND_rrr(REG_WORK1, REG_WORK1, REG_WORK2); MSR_CPSR_r(REG_WORK1); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jff_SUBX_b,(W4 d, RR1 s, RR1 v)) MIDFUNC(3,jff_SUBX_w,(W4 d, RR2 s, RR2 v)) { s=readreg(s,4); v=readreg(v,4); d=writereg(d,4); MRS_CPSR(REG_WORK1); CC_MVN_ri(NATIVE_CC_EQ, REG_WORK1, 0); CC_MVN_ri(NATIVE_CC_NE, REG_WORK1, ARM_Z_FLAG); PUSH(REG_WORK1); SIGNED16_REG_2_REG(REG_WORK1, s); SIGNED16_REG_2_REG(REG_WORK2, v); SBCS_rrr(d,REG_WORK1,REG_WORK2); POP(REG_WORK2); MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); AND_rrr(REG_WORK1, REG_WORK1, REG_WORK2); MSR_CPSR_r(REG_WORK1); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jff_SUBX_w,(W4 d, RR2 s, RR2 v)) MIDFUNC(3,jff_SUBX_l,(W4 d, RR4 s, RR4 v)) { s=readreg(s,4); v=readreg(v,4); d=writereg(d,4); MRS_CPSR(REG_WORK2); CC_MVN_ri(NATIVE_CC_EQ, REG_WORK2, 0); CC_MVN_ri(NATIVE_CC_NE, REG_WORK2, ARM_Z_FLAG); SBCS_rrr(d,s,v); MRS_CPSR(REG_WORK1); EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); AND_rrr(REG_WORK1, REG_WORK1, REG_WORK2); MSR_CPSR_r(REG_WORK1); unlock2(d); unlock2(s); unlock2(v); } MENDFUNC(3,jff_SUBX_l,(W4 d, RR4 s, RR4 v)) /* * SWAP * Operand Syntax: Dn * * Operand Size: 16 * * X Not affected. * N Set if the most significant bit of the 32-bit result is set. Cleared otherwise. * Z Set if the 32-bit result is zero. Cleared otherwise. * V Always cleared. * C Always cleared. * */ MIDFUNC(1,jnf_SWAP,(RW4 d)) { d=rmw(d,4,4); ROR_rri(d,d,16); unlock2(d); } MENDFUNC(1,jnf_SWAP,(RW4 d)) MIDFUNC(1,jff_SWAP,(RW4 d)) { d=rmw(d,4,4); ROR_rri(d,d,16); MSR_CPSRf_i(0); TST_rr(d,d); unlock2(d); } MENDFUNC(1,jff_SWAP,(RW4 d)) /* * TST * Operand Syntax: * * Operand Size: 8,16,32 * * X Not affected. * N Set if the operand is negative. Cleared otherwise. * Z Set if the operand is zero. Cleared otherwise. * V Always cleared. * C Always cleared. * */ MIDFUNC(1,jff_TST_b,(RR1 s)) { if (isconst(s)) { SIGNED8_IMM_2_REG(REG_WORK1, (uint8)live.state[s].val); } else { s=readreg(s,4); SIGNED8_REG_2_REG(REG_WORK1, s); unlock2(s); } MSR_CPSRf_i(0); TST_rr(REG_WORK1,REG_WORK1); } MENDFUNC(1,jff_TST_b,(RR1 s)) MIDFUNC(1,jff_TST_w,(RR2 s)) { if (isconst(s)) { SIGNED16_IMM_2_REG(REG_WORK1, (uint16)live.state[s].val); } else { s=readreg(s,4); SIGNED16_REG_2_REG(REG_WORK1, s); unlock2(s); } MSR_CPSRf_i(0); TST_rr(REG_WORK1,REG_WORK1); } MENDFUNC(1,jff_TST_w,(RR2 s)) MIDFUNC(1,jff_TST_l,(RR4 s)) { MSR_CPSRf_i(0); if (isconst(s)) { compemu_raw_mov_l_ri(REG_WORK1, live.state[s].val); TST_rr(REG_WORK1,REG_WORK1); } else { s=readreg(s,4); TST_rr(s,s); unlock2(s); } } MENDFUNC(1,jff_TST_l,(RR4 s)) aranym-1.1.0/src/uae_cpu/compiler/compemu_midfunc_arm.h0000664000175000017500000001645713454637622021423 0ustar joyjoy/* * compiler/compemu_midfunc_arm.h - Native MIDFUNCS for ARM * * Copyright (c) 2014 Jens Heitmann of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * * Adaptation for Basilisk II and improvements, copyright 2000-2002 * Gwenole Beauchesne * * Basilisk II (C) 1997-2002 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Note: * File is included by compemu.h * */ // Arm optimized midfunc DECLARE_MIDFUNC(arm_ADD_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(arm_ADD_l_ri(RW4 d, IMM i)); DECLARE_MIDFUNC(arm_ADD_l_ri8(RW4 d, IMM i)); DECLARE_MIDFUNC(arm_SUB_l_ri8(RW4 d, IMM i)); DECLARE_MIDFUNC(arm_AND_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(arm_AND_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(arm_AND_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(arm_AND_l_ri8(RW4 d, IMM i)); DECLARE_MIDFUNC(arm_EOR_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(arm_EOR_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(arm_EOR_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(arm_ORR_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(arm_ORR_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(arm_ORR_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(arm_ROR_l_ri8(RW4 r, IMM i)); // Emulated midfunc DECLARE_MIDFUNC(bt_l_ri(RR4 r, IMM i)); DECLARE_MIDFUNC(bt_l_rr(RR4 r, RR4 b)); DECLARE_MIDFUNC(btc_l_rr(RW4 r, RR4 b)); DECLARE_MIDFUNC(bts_l_rr(RW4 r, RR4 b)); DECLARE_MIDFUNC(btr_l_rr(RW4 r, RR4 b)); DECLARE_MIDFUNC(mov_l_rm(W4 d, IMM s)); DECLARE_MIDFUNC(mov_l_rm_indexed(W4 d, IMM base, RR4 index, IMM factor)); DECLARE_MIDFUNC(mov_l_mi(IMM d, IMM s)); DECLARE_MIDFUNC(mov_w_mi(IMM d, IMM s)); DECLARE_MIDFUNC(mov_b_mi(IMM d, IMM s)); DECLARE_MIDFUNC(rol_b_ri(RW1 r, IMM i)); DECLARE_MIDFUNC(rol_w_ri(RW2 r, IMM i)); DECLARE_MIDFUNC(rol_l_rr(RW4 d, RR1 r)); DECLARE_MIDFUNC(rol_w_rr(RW2 d, RR1 r)); DECLARE_MIDFUNC(rol_b_rr(RW1 d, RR1 r)); DECLARE_MIDFUNC(rol_l_ri(RW4 r, IMM i)); DECLARE_MIDFUNC(shll_l_rr(RW4 d, RR1 r)); DECLARE_MIDFUNC(shll_w_rr(RW2 d, RR1 r)); DECLARE_MIDFUNC(shll_b_rr(RW1 d, RR1 r)); DECLARE_MIDFUNC(ror_b_ri(RR1 r, IMM i)); DECLARE_MIDFUNC(ror_w_ri(RR2 r, IMM i)); DECLARE_MIDFUNC(ror_l_ri(RR4 r, IMM i)); DECLARE_MIDFUNC(ror_l_rr(RR4 d, RR1 r)); DECLARE_MIDFUNC(ror_w_rr(RR2 d, RR1 r)); DECLARE_MIDFUNC(ror_b_rr(RR1 d, RR1 r)); DECLARE_MIDFUNC(shrl_l_rr(RW4 d, RR1 r)); DECLARE_MIDFUNC(shrl_w_rr(RW2 d, RR1 r)); DECLARE_MIDFUNC(shrl_b_rr(RW1 d, RR1 r)); DECLARE_MIDFUNC(shra_l_rr(RW4 d, RR1 r)); DECLARE_MIDFUNC(shra_w_rr(RW2 d, RR1 r)); DECLARE_MIDFUNC(shra_b_rr(RW1 d, RR1 r)); DECLARE_MIDFUNC(shll_l_ri(RW4 r, IMM i)); DECLARE_MIDFUNC(shll_w_ri(RW2 r, IMM i)); DECLARE_MIDFUNC(shll_b_ri(RW1 r, IMM i)); DECLARE_MIDFUNC(shrl_l_ri(RW4 r, IMM i)); DECLARE_MIDFUNC(shrl_w_ri(RW2 r, IMM i)); DECLARE_MIDFUNC(shrl_b_ri(RW1 r, IMM i)); DECLARE_MIDFUNC(shra_l_ri(RW4 r, IMM i)); DECLARE_MIDFUNC(shra_w_ri(RW2 r, IMM i)); DECLARE_MIDFUNC(shra_b_ri(RW1 r, IMM i)); DECLARE_MIDFUNC(setcc(W1 d, IMM cc)); DECLARE_MIDFUNC(setcc_m(IMM d, IMM cc)); DECLARE_MIDFUNC(cmov_l_rr(RW4 d, RR4 s, IMM cc)); DECLARE_MIDFUNC(bsf_l_rr(W4 d, RR4 s)); DECLARE_MIDFUNC(pop_l(W4 d)); DECLARE_MIDFUNC(push_l(RR4 s)); DECLARE_MIDFUNC(sign_extend_16_rr(W4 d, RR2 s)); DECLARE_MIDFUNC(sign_extend_8_rr(W4 d, RR1 s)); DECLARE_MIDFUNC(zero_extend_16_rr(W4 d, RR2 s)); DECLARE_MIDFUNC(zero_extend_8_rr(W4 d, RR1 s)); DECLARE_MIDFUNC(simulate_bsf(W4 tmp, RW4 s)); DECLARE_MIDFUNC(imul_64_32(RW4 d, RW4 s)); DECLARE_MIDFUNC(mul_64_32(RW4 d, RW4 s)); DECLARE_MIDFUNC(imul_32_32(RW4 d, RR4 s)); DECLARE_MIDFUNC(mov_b_rr(W1 d, RR1 s)); DECLARE_MIDFUNC(mov_w_rr(W2 d, RR2 s)); DECLARE_MIDFUNC(mov_l_rR(W4 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_w_rR(W2 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_l_brR(W4 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_w_brR(W2 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_b_brR(W1 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_l_Ri(RR4 d, IMM i, IMM offset)); DECLARE_MIDFUNC(mov_w_Ri(RR4 d, IMM i, IMM offset)); DECLARE_MIDFUNC(mov_l_Rr(RR4 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_w_Rr(RR4 d, RR2 s, IMM offset)); DECLARE_MIDFUNC(lea_l_brr(W4 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(lea_l_brr_indexed(W4 d, RR4 s, RR4 index, IMM factor, IMM offset)); DECLARE_MIDFUNC(lea_l_rr_indexed(W4 d, RR4 s, RR4 index, IMM factor)); DECLARE_MIDFUNC(mov_l_bRr(RR4 d, RR4 s, IMM offset)); DECLARE_MIDFUNC(mov_w_bRr(RR4 d, RR2 s, IMM offset)); DECLARE_MIDFUNC(mov_b_bRr(RR4 d, RR1 s, IMM offset)); DECLARE_MIDFUNC(mid_bswap_32(RW4 r)); DECLARE_MIDFUNC(mid_bswap_16(RW2 r)); DECLARE_MIDFUNC(mov_l_rr(W4 d, RR4 s)); DECLARE_MIDFUNC(mov_l_mr(IMM d, RR4 s)); DECLARE_MIDFUNC(mov_w_mr(IMM d, RR2 s)); DECLARE_MIDFUNC(mov_w_rm(W2 d, IMM s)); DECLARE_MIDFUNC(mov_b_mr(IMM d, RR1 s)); DECLARE_MIDFUNC(mov_b_rm(W1 d, IMM s)); DECLARE_MIDFUNC(mov_l_ri(W4 d, IMM s)); DECLARE_MIDFUNC(mov_w_ri(W2 d, IMM s)); DECLARE_MIDFUNC(mov_b_ri(W1 d, IMM s)); DECLARE_MIDFUNC(test_l_ri(RR4 d, IMM i)); DECLARE_MIDFUNC(test_l_rr(RR4 d, RR4 s)); DECLARE_MIDFUNC(test_w_rr(RR2 d, RR2 s)); DECLARE_MIDFUNC(test_b_rr(RR1 d, RR1 s)); DECLARE_MIDFUNC(and_l_ri(RW4 d, IMM i)); DECLARE_MIDFUNC(and_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(and_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(and_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(or_l_ri(RW4 d, IMM i)); DECLARE_MIDFUNC(or_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(or_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(or_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(adc_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(adc_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(adc_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(add_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(add_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(add_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(sub_l_ri(RW4 d, IMM i)); DECLARE_MIDFUNC(sub_w_ri(RW2 d, IMM i)); DECLARE_MIDFUNC(sub_b_ri(RW1 d, IMM i)); DECLARE_MIDFUNC(add_l_ri(RW4 d, IMM i)); DECLARE_MIDFUNC(add_w_ri(RW2 d, IMM i)); DECLARE_MIDFUNC(add_b_ri(RW1 d, IMM i)); DECLARE_MIDFUNC(sbb_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(sbb_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(sbb_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(sub_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(sub_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(sub_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(cmp_l(RR4 d, RR4 s)); DECLARE_MIDFUNC(cmp_w(RR2 d, RR2 s)); DECLARE_MIDFUNC(cmp_b(RR1 d, RR1 s)); DECLARE_MIDFUNC(xor_l(RW4 d, RR4 s)); DECLARE_MIDFUNC(xor_w(RW2 d, RR2 s)); DECLARE_MIDFUNC(xor_b(RW1 d, RR1 s)); DECLARE_MIDFUNC(call_r_02(RR4 r, RR4 in1, RR4 in2, IMM isize1, IMM isize2)); DECLARE_MIDFUNC(call_r_11(W4 out1, RR4 r, RR4 in1, IMM osize, IMM isize)); DECLARE_MIDFUNC(live_flags(void)); DECLARE_MIDFUNC(dont_care_flags(void)); DECLARE_MIDFUNC(duplicate_carry(void)); DECLARE_MIDFUNC(restore_carry(void)); DECLARE_MIDFUNC(start_needflags(void)); DECLARE_MIDFUNC(end_needflags(void)); DECLARE_MIDFUNC(make_flags_live(void)); DECLARE_MIDFUNC(forget_about(W4 r)); DECLARE_MIDFUNC(nop(void)); DECLARE_MIDFUNC(f_forget_about(FW r)); aranym-1.1.0/src/uae_cpu/compiler/compemu_midfunc_arm.cpp0000664000175000017500000010666313454637622021755 0ustar joyjoy/* * compiler/compemu_midfunc_arm.cpp - Native MIDFUNCS for ARM * * Copyright (c) 2014 Jens Heitmann of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * * Adaptation for Basilisk II and improvements, copyright 2000-2002 * Gwenole Beauchesne * * Basilisk II (C) 1997-2002 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Note: * File is included by compemu_support.cpp * */ /******************************************************************** * CPU functions exposed to gencomp. Both CREATE and EMIT time * ********************************************************************/ /* * RULES FOR HANDLING REGISTERS: * * * In the function headers, order the parameters * - 1st registers written to * - 2nd read/modify/write registers * - 3rd registers read from * * Before calling raw_*, you must call readreg, writereg or rmw for * each register * * The order for this is * - 1st call remove_offset for all registers written to with size<4 * - 2nd call readreg for all registers read without offset * - 3rd call rmw for all rmw registers * - 4th call readreg_offset for all registers that can handle offsets * - 5th call get_offset for all the registers from the previous step * - 6th call writereg for all written-to registers * - 7th call raw_* * - 8th unlock2 all registers that were locked */ MIDFUNC(0,live_flags,(void)) { live.flags_on_stack=TRASH; live.flags_in_flags=VALID; live.flags_are_important=1; } MENDFUNC(0,live_flags,(void)) MIDFUNC(0,dont_care_flags,(void)) { live.flags_are_important=0; } MENDFUNC(0,dont_care_flags,(void)) MIDFUNC(0,duplicate_carry,(void)) { evict(FLAGX); make_flags_live_internal(); COMPCALL(setcc_m)((uintptr)live.state[FLAGX].mem,NATIVE_CC_CS); log_vwrite(FLAGX); } MENDFUNC(0,duplicate_carry,(void)) MIDFUNC(0,restore_carry,(void)) { #if defined(USE_JIT2) RR4 r=readreg(FLAGX,4); MRS_CPSR(REG_WORK1); TEQ_ri(r,1); CC_BIC_rri(NATIVE_CC_NE, REG_WORK1, REG_WORK1, ARM_C_FLAG); CC_ORR_rri(NATIVE_CC_EQ, REG_WORK1, REG_WORK1, ARM_C_FLAG); MSR_CPSRf_r(REG_WORK1); unlock2(r); #else if (!have_rat_stall) { /* Not a P6 core, i.e. no partial stalls */ bt_l_ri_noclobber(FLAGX,0); } else { /* Avoid the stall the above creates. This is slow on non-P6, though. */ COMPCALL(rol_b_ri(FLAGX,8)); isclean(FLAGX); } #endif } MENDFUNC(0,restore_carry,(void)) MIDFUNC(0,start_needflags,(void)) { needflags=1; } MENDFUNC(0,start_needflags,(void)) MIDFUNC(0,end_needflags,(void)) { needflags=0; } MENDFUNC(0,end_needflags,(void)) MIDFUNC(0,make_flags_live,(void)) { make_flags_live_internal(); } MENDFUNC(0,make_flags_live,(void)) MIDFUNC(2,bt_l_ri,(RR4 r, IMM i)) /* This is defined as only affecting C */ { int size=4; if (i<16) size=2; CLOBBER_BT; r=readreg(r,size); raw_bt_l_ri(r,i); unlock2(r); } MENDFUNC(2,bt_l_ri,(RR4 r, IMM i)) /* This is defined as only affecting C */ MIDFUNC(2,bt_l_rr,(RR4 r, RR4 b)) /* This is defined as only affecting C */ { CLOBBER_BT; r=readreg(r,4); b=readreg(b,4); raw_bt_l_rr(r,b); unlock2(r); unlock2(b); } MENDFUNC(2,bt_l_rr,(RR4 r, RR4 b)) /* This is defined as only affecting C */ MIDFUNC(2,btc_l_rr,(RW4 r, RR4 b)) { CLOBBER_BT; b=readreg(b,4); r=rmw(r,4,4); raw_btc_l_rr(r,b); unlock2(r); unlock2(b); } MENDFUNC(2,btc_l_rr,(RW4 r, RR4 b)) MIDFUNC(2,btr_l_rr,(RW4 r, RR4 b)) { CLOBBER_BT; b=readreg(b,4); r=rmw(r,4,4); raw_btr_l_rr(r,b); unlock2(r); unlock2(b); } MENDFUNC(2,btr_l_rr,(RW4 r, RR4 b)) MIDFUNC(2,bts_l_rr,(RW4 r, RR4 b)) { CLOBBER_BT; b=readreg(b,4); r=rmw(r,4,4); raw_bts_l_rr(r,b); unlock2(r); unlock2(b); } MENDFUNC(2,bts_l_rr,(RW4 r, RR4 b)) MIDFUNC(2,mov_l_rm,(W4 d, IMM s)) { CLOBBER_MOV; d=writereg(d,4); raw_mov_l_rm(d,s); unlock2(d); } MENDFUNC(2,mov_l_rm,(W4 d, IMM s)) MIDFUNC(4,mov_l_rm_indexed,(W4 d, IMM base, RR4 index, IMM factor)) { CLOBBER_MOV; index=readreg(index,4); d=writereg(d,4); raw_mov_l_rm_indexed(d,base,index,factor); unlock2(index); unlock2(d); } MENDFUNC(4,mov_l_rm_indexed,(W4 d, IMM base, RR4 index, IMM factor)) MIDFUNC(2,mov_l_mi,(IMM d, IMM s)) { CLOBBER_MOV; raw_mov_l_mi(d,s); } MENDFUNC(2,mov_l_mi,(IMM d, IMM s)) MIDFUNC(2,mov_w_mi,(IMM d, IMM s)) { CLOBBER_MOV; raw_mov_w_mi(d,s); } MENDFUNC(2,mov_w_mi,(IMM d, IMM s)) MIDFUNC(2,mov_b_mi,(IMM d, IMM s)) { CLOBBER_MOV; raw_mov_b_mi(d,s); } MENDFUNC(2,mov_b_mi,(IMM d, IMM s)) MIDFUNC(2,rol_b_ri,(RW1 r, IMM i)) { if (!i && !needflags) return; CLOBBER_ROL; r=rmw(r,1,1); raw_rol_b_ri(r,i); unlock2(r); } MENDFUNC(2,rol_b_ri,(RW1 r, IMM i)) MIDFUNC(2,rol_w_ri,(RW2 r, IMM i)) { if (!i && !needflags) return; CLOBBER_ROL; r=rmw(r,2,2); raw_rol_w_ri(r,i); unlock2(r); } MENDFUNC(2,rol_w_ri,(RW2 r, IMM i)) MIDFUNC(2,rol_l_ri,(RW4 r, IMM i)) { if (!i && !needflags) return; CLOBBER_ROL; r=rmw(r,4,4); raw_rol_l_ri(r,i); unlock2(r); } MENDFUNC(2,rol_l_ri,(RW4 r, IMM i)) MIDFUNC(2,rol_l_rr,(RW4 d, RR1 r)) { if (isconst(r)) { COMPCALL(rol_l_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_ROL; r=readreg(r,1); d=rmw(d,4,4); raw_rol_l_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,rol_l_rr,(RW4 d, RR1 r)) MIDFUNC(2,rol_w_rr,(RW2 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r)) { COMPCALL(rol_w_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_ROL; r=readreg(r,1); d=rmw(d,2,2); raw_rol_w_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,rol_w_rr,(RW2 d, RR1 r)) MIDFUNC(2,rol_b_rr,(RW1 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r)) { COMPCALL(rol_b_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_ROL; r=readreg(r,1); d=rmw(d,1,1); raw_rol_b_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,rol_b_rr,(RW1 d, RR1 r)) MIDFUNC(2,shll_l_rr,(RW4 d, RR1 r)) { if (isconst(r)) { COMPCALL(shll_l_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHLL; r=readreg(r,1); d=rmw(d,4,4); raw_shll_l_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,shll_l_rr,(RW4 d, RR1 r)) MIDFUNC(2,shll_w_rr,(RW2 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r)) { COMPCALL(shll_w_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHLL; r=readreg(r,1); d=rmw(d,2,2); raw_shll_w_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,shll_w_rr,(RW2 d, RR1 r)) MIDFUNC(2,shll_b_rr,(RW1 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r)) { COMPCALL(shll_b_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHLL; r=readreg(r,1); d=rmw(d,1,1); raw_shll_b_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,shll_b_rr,(RW1 d, RR1 r)) MIDFUNC(2,ror_b_ri,(RR1 r, IMM i)) { if (!i && !needflags) return; CLOBBER_ROR; r=rmw(r,1,1); raw_ror_b_ri(r,i); unlock2(r); } MENDFUNC(2,ror_b_ri,(RR1 r, IMM i)) MIDFUNC(2,ror_w_ri,(RR2 r, IMM i)) { if (!i && !needflags) return; CLOBBER_ROR; r=rmw(r,2,2); raw_ror_w_ri(r,i); unlock2(r); } MENDFUNC(2,ror_w_ri,(RR2 r, IMM i)) MIDFUNC(2,ror_l_ri,(RR4 r, IMM i)) { if (!i && !needflags) return; CLOBBER_ROR; r=rmw(r,4,4); raw_ror_l_ri(r,i); unlock2(r); } MENDFUNC(2,ror_l_ri,(RR4 r, IMM i)) MIDFUNC(2,ror_l_rr,(RR4 d, RR1 r)) { if (isconst(r)) { COMPCALL(ror_l_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_ROR; r=readreg(r,1); d=rmw(d,4,4); raw_ror_l_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,ror_l_rr,(RR4 d, RR1 r)) MIDFUNC(2,ror_w_rr,(RR2 d, RR1 r)) { if (isconst(r)) { COMPCALL(ror_w_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_ROR; r=readreg(r,1); d=rmw(d,2,2); raw_ror_w_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,ror_w_rr,(RR2 d, RR1 r)) MIDFUNC(2,ror_b_rr,(RR1 d, RR1 r)) { if (isconst(r)) { COMPCALL(ror_b_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_ROR; r=readreg(r,1); d=rmw(d,1,1); raw_ror_b_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,ror_b_rr,(RR1 d, RR1 r)) MIDFUNC(2,shrl_l_rr,(RW4 d, RR1 r)) { if (isconst(r)) { COMPCALL(shrl_l_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHRL; r=readreg(r,1); d=rmw(d,4,4); raw_shrl_l_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,shrl_l_rr,(RW4 d, RR1 r)) MIDFUNC(2,shrl_w_rr,(RW2 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r)) { COMPCALL(shrl_w_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHRL; r=readreg(r,1); d=rmw(d,2,2); raw_shrl_w_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,shrl_w_rr,(RW2 d, RR1 r)) MIDFUNC(2,shrl_b_rr,(RW1 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r)) { COMPCALL(shrl_b_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHRL; r=readreg(r,1); d=rmw(d,1,1); raw_shrl_b_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,shrl_b_rr,(RW1 d, RR1 r)) MIDFUNC(2,shll_l_ri,(RW4 r, IMM i)) { if (!i && !needflags) return; if (isconst(r) && !needflags) { live.state[r].val<<=i; return; } CLOBBER_SHLL; r=rmw(r,4,4); raw_shll_l_ri(r,i); unlock2(r); } MENDFUNC(2,shll_l_ri,(RW4 r, IMM i)) MIDFUNC(2,shll_w_ri,(RW2 r, IMM i)) { if (!i && !needflags) return; CLOBBER_SHLL; r=rmw(r,2,2); raw_shll_w_ri(r,i); unlock2(r); } MENDFUNC(2,shll_w_ri,(RW2 r, IMM i)) MIDFUNC(2,shll_b_ri,(RW1 r, IMM i)) { if (!i && !needflags) return; CLOBBER_SHLL; r=rmw(r,1,1); raw_shll_b_ri(r,i); unlock2(r); } MENDFUNC(2,shll_b_ri,(RW1 r, IMM i)) MIDFUNC(2,shrl_l_ri,(RW4 r, IMM i)) { if (!i && !needflags) return; if (isconst(r) && !needflags) { live.state[r].val>>=i; return; } CLOBBER_SHRL; r=rmw(r,4,4); raw_shrl_l_ri(r,i); unlock2(r); } MENDFUNC(2,shrl_l_ri,(RW4 r, IMM i)) MIDFUNC(2,shrl_w_ri,(RW2 r, IMM i)) { if (!i && !needflags) return; CLOBBER_SHRL; r=rmw(r,2,2); raw_shrl_w_ri(r,i); unlock2(r); } MENDFUNC(2,shrl_w_ri,(RW2 r, IMM i)) MIDFUNC(2,shrl_b_ri,(RW1 r, IMM i)) { if (!i && !needflags) return; CLOBBER_SHRL; r=rmw(r,1,1); raw_shrl_b_ri(r,i); unlock2(r); } MENDFUNC(2,shrl_b_ri,(RW1 r, IMM i)) MIDFUNC(2,shra_l_ri,(RW4 r, IMM i)) { if (!i && !needflags) return; CLOBBER_SHRA; r=rmw(r,4,4); raw_shra_l_ri(r,i); unlock2(r); } MENDFUNC(2,shra_l_ri,(RW4 r, IMM i)) MIDFUNC(2,shra_w_ri,(RW2 r, IMM i)) { if (!i && !needflags) return; CLOBBER_SHRA; r=rmw(r,2,2); raw_shra_w_ri(r,i); unlock2(r); } MENDFUNC(2,shra_w_ri,(RW2 r, IMM i)) MIDFUNC(2,shra_b_ri,(RW1 r, IMM i)) { if (!i && !needflags) return; CLOBBER_SHRA; r=rmw(r,1,1); raw_shra_b_ri(r,i); unlock2(r); } MENDFUNC(2,shra_b_ri,(RW1 r, IMM i)) MIDFUNC(2,shra_l_rr,(RW4 d, RR1 r)) { if (isconst(r)) { COMPCALL(shra_l_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHRA; r=readreg(r,1); d=rmw(d,4,4); raw_shra_l_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,shra_l_rr,(RW4 d, RR1 r)) MIDFUNC(2,shra_w_rr,(RW2 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r)) { COMPCALL(shra_w_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHRA; r=readreg(r,1); d=rmw(d,2,2); raw_shra_w_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,shra_w_rr,(RW2 d, RR1 r)) MIDFUNC(2,shra_b_rr,(RW1 d, RR1 r)) { /* Can only do this with r==1, i.e. cl */ if (isconst(r)) { COMPCALL(shra_b_ri)(d,(uae_u8)live.state[r].val); return; } CLOBBER_SHRA; r=readreg(r,1); d=rmw(d,1,1); raw_shra_b_rr(d,r); unlock2(r); unlock2(d); } MENDFUNC(2,shra_b_rr,(RW1 d, RR1 r)) MIDFUNC(2,setcc,(W1 d, IMM cc)) { CLOBBER_SETCC; d=writereg(d,1); raw_setcc(d,cc); unlock2(d); } MENDFUNC(2,setcc,(W1 d, IMM cc)) MIDFUNC(2,setcc_m,(IMM d, IMM cc)) { CLOBBER_SETCC; raw_setcc_m(d,cc); } MENDFUNC(2,setcc_m,(IMM d, IMM cc)) MIDFUNC(3,cmov_l_rr,(RW4 d, RR4 s, IMM cc)) { if (d==s) return; CLOBBER_CMOV; s=readreg(s,4); d=rmw(d,4,4); raw_cmov_l_rr(d,s,cc); unlock2(s); unlock2(d); } MENDFUNC(3,cmov_l_rr,(RW4 d, RR4 s, IMM cc)) MIDFUNC(2,bsf_l_rr,(W4 d, W4 s)) { CLOBBER_BSF; s = readreg(s, 4); d = writereg(d, 4); raw_bsf_l_rr(d, s); unlock2(s); unlock2(d); } MENDFUNC(2,bsf_l_rr,(W4 d, W4 s)) /* Set the Z flag depending on the value in s. Note that the value has to be 0 or -1 (or, more precisely, for non-zero values, bit 14 must be set)! */ MIDFUNC(2,simulate_bsf,(W4 tmp, RW4 s)) { CLOBBER_BSF; s=rmw_specific(s,4,4,FLAG_NREG3); tmp=writereg(tmp,4); raw_flags_set_zero(s, tmp); unlock2(tmp); unlock2(s); } MENDFUNC(2,simulate_bsf,(W4 tmp, RW4 s)) MIDFUNC(2,imul_32_32,(RW4 d, RR4 s)) { CLOBBER_MUL; s=readreg(s,4); d=rmw(d,4,4); raw_imul_32_32(d,s); unlock2(s); unlock2(d); } MENDFUNC(2,imul_32_32,(RW4 d, RR4 s)) MIDFUNC(2,imul_64_32,(RW4 d, RW4 s)) { CLOBBER_MUL; s=rmw_specific(s,4,4,MUL_NREG2); d=rmw_specific(d,4,4,MUL_NREG1); raw_imul_64_32(d,s); unlock2(s); unlock2(d); } MENDFUNC(2,imul_64_32,(RW4 d, RW4 s)) MIDFUNC(2,mul_64_32,(RW4 d, RW4 s)) { CLOBBER_MUL; s=rmw_specific(s,4,4,MUL_NREG2); d=rmw_specific(d,4,4,MUL_NREG1); raw_mul_64_32(d,s); unlock2(s); unlock2(d); } MENDFUNC(2,mul_64_32,(RW4 d, RW4 s)) MIDFUNC(2,sign_extend_16_rr,(W4 d, RR2 s)) { int isrmw; if (isconst(s)) { set_const(d,(uae_s32)(uae_s16)live.state[s].val); return; } CLOBBER_SE16; isrmw=(s==d); if (!isrmw) { s=readreg(s,2); d=writereg(d,4); } else { /* If we try to lock this twice, with different sizes, we are int trouble! */ s=d=rmw(s,4,2); } raw_sign_extend_16_rr(d,s); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(2,sign_extend_16_rr,(W4 d, RR2 s)) MIDFUNC(2,sign_extend_8_rr,(W4 d, RR1 s)) { int isrmw; if (isconst(s)) { set_const(d,(uae_s32)(uae_s8)live.state[s].val); return; } isrmw=(s==d); CLOBBER_SE8; if (!isrmw) { s=readreg(s,1); d=writereg(d,4); } else { /* If we try to lock this twice, with different sizes, we are int trouble! */ s=d=rmw(s,4,1); } raw_sign_extend_8_rr(d,s); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(2,sign_extend_8_rr,(W4 d, RR1 s)) MIDFUNC(2,zero_extend_16_rr,(W4 d, RR2 s)) { int isrmw; if (isconst(s)) { set_const(d,(uae_u32)(uae_u16)live.state[s].val); return; } isrmw=(s==d); CLOBBER_ZE16; if (!isrmw) { s=readreg(s,2); d=writereg(d,4); } else { /* If we try to lock this twice, with different sizes, we are int trouble! */ s=d=rmw(s,4,2); } raw_zero_extend_16_rr(d,s); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(2,zero_extend_16_rr,(W4 d, RR2 s)) MIDFUNC(2,zero_extend_8_rr,(W4 d, RR1 s)) { int isrmw; if (isconst(s)) { set_const(d,(uae_u32)(uae_u8)live.state[s].val); return; } isrmw=(s==d); CLOBBER_ZE8; if (!isrmw) { s=readreg(s,1); d=writereg(d,4); } else { /* If we try to lock this twice, with different sizes, we are int trouble! */ s=d=rmw(s,4,1); } raw_zero_extend_8_rr(d,s); if (!isrmw) { unlock2(d); unlock2(s); } else { unlock2(s); } } MENDFUNC(2,zero_extend_8_rr,(W4 d, RR1 s)) MIDFUNC(2,mov_b_rr,(W1 d, RR1 s)) { if (d==s) return; if (isconst(s)) { COMPCALL(mov_b_ri)(d,(uae_u8)live.state[s].val); return; } CLOBBER_MOV; s=readreg(s,1); d=writereg(d,1); raw_mov_b_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,mov_b_rr,(W1 d, RR1 s)) MIDFUNC(2,mov_w_rr,(W2 d, RR2 s)) { if (d==s) return; if (isconst(s)) { COMPCALL(mov_w_ri)(d,(uae_u16)live.state[s].val); return; } CLOBBER_MOV; s=readreg(s,2); d=writereg(d,2); raw_mov_w_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,mov_w_rr,(W2 d, RR2 s)) /* read the long at the address contained in s+offset and store in d */ MIDFUNC(3,mov_l_rR,(W4 d, RR4 s, IMM offset)) { if (isconst(s)) { COMPCALL(mov_l_rm)(d,live.state[s].val+offset); return; } CLOBBER_MOV; s=readreg(s,4); d=writereg(d,4); raw_mov_l_rR(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_l_rR,(W4 d, RR4 s, IMM offset)) /* read the word at the address contained in s+offset and store in d */ MIDFUNC(3,mov_w_rR,(W2 d, RR4 s, IMM offset)) { if (isconst(s)) { COMPCALL(mov_w_rm)(d,live.state[s].val+offset); return; } CLOBBER_MOV; s=readreg(s,4); d=writereg(d,2); raw_mov_w_rR(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_w_rR,(W2 d, RR4 s, IMM offset)) /* read the long at the address contained in s+offset and store in d */ MIDFUNC(3,mov_l_brR,(W4 d, RR4 s, IMM offset)) { int sreg=s; if (isconst(s)) { COMPCALL(mov_l_rm)(d,live.state[s].val+offset); return; } CLOBBER_MOV; s=readreg_offset(s,4); offset+=get_offset(sreg); d=writereg(d,4); raw_mov_l_brR(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_l_brR,(W4 d, RR4 s, IMM offset)) /* read the word at the address contained in s+offset and store in d */ MIDFUNC(3,mov_w_brR,(W2 d, RR4 s, IMM offset)) { int sreg=s; if (isconst(s)) { COMPCALL(mov_w_rm)(d,live.state[s].val+offset); return; } CLOBBER_MOV; remove_offset(d,-1); s=readreg_offset(s,4); offset+=get_offset(sreg); d=writereg(d,2); raw_mov_w_brR(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_w_brR,(W2 d, RR4 s, IMM offset)) /* read the word at the address contained in s+offset and store in d */ MIDFUNC(3,mov_b_brR,(W1 d, RR4 s, IMM offset)) { int sreg=s; if (isconst(s)) { COMPCALL(mov_b_rm)(d,live.state[s].val+offset); return; } CLOBBER_MOV; remove_offset(d,-1); s=readreg_offset(s,4); offset+=get_offset(sreg); d=writereg(d,1); raw_mov_b_brR(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_b_brR,(W1 d, RR4 s, IMM offset)) MIDFUNC(3,mov_l_Ri,(RR4 d, IMM i, IMM offset)) { int dreg=d; if (isconst(d)) { COMPCALL(mov_l_mi)(live.state[d].val+offset,i); return; } CLOBBER_MOV; d=readreg_offset(d,4); offset+=get_offset(dreg); raw_mov_l_Ri(d,i,offset); unlock2(d); } MENDFUNC(3,mov_l_Ri,(RR4 d, IMM i, IMM offset)) MIDFUNC(3,mov_w_Ri,(RR4 d, IMM i, IMM offset)) { int dreg=d; if (isconst(d)) { COMPCALL(mov_w_mi)(live.state[d].val+offset,i); return; } CLOBBER_MOV; d=readreg_offset(d,4); offset+=get_offset(dreg); raw_mov_w_Ri(d,i,offset); unlock2(d); } MENDFUNC(3,mov_w_Ri,(RR4 d, IMM i, IMM offset)) /* Warning! OFFSET is byte sized only! */ MIDFUNC(3,mov_l_Rr,(RR4 d, RR4 s, IMM offset)) { if (isconst(d)) { COMPCALL(mov_l_mr)(live.state[d].val+offset,s); return; } if (isconst(s)) { COMPCALL(mov_l_Ri)(d,live.state[s].val,offset); return; } CLOBBER_MOV; s=readreg(s,4); d=readreg(d,4); raw_mov_l_Rr(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_l_Rr,(RR4 d, RR4 s, IMM offset)) MIDFUNC(3,mov_w_Rr,(RR4 d, RR2 s, IMM offset)) { if (isconst(d)) { COMPCALL(mov_w_mr)(live.state[d].val+offset,s); return; } if (isconst(s)) { COMPCALL(mov_w_Ri)(d,(uae_u16)live.state[s].val,offset); return; } CLOBBER_MOV; s=readreg(s,2); d=readreg(d,4); raw_mov_w_Rr(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_w_Rr,(RR4 d, RR2 s, IMM offset)) MIDFUNC(3,lea_l_brr,(W4 d, RR4 s, IMM offset)) { if (isconst(s)) { COMPCALL(mov_l_ri)(d,live.state[s].val+offset); return; } #if USE_OFFSET if (d==s) { add_offset(d,offset); return; } #endif CLOBBER_LEA; s=readreg(s,4); d=writereg(d,4); raw_lea_l_brr(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,lea_l_brr,(W4 d, RR4 s, IMM offset)) MIDFUNC(5,lea_l_brr_indexed,(W4 d, RR4 s, RR4 index, IMM factor, IMM offset)) { if (!offset) { COMPCALL(lea_l_rr_indexed)(d,s,index,factor); return; } CLOBBER_LEA; s=readreg(s,4); index=readreg(index,4); d=writereg(d,4); raw_lea_l_brr_indexed(d,s,index,factor,offset); unlock2(d); unlock2(index); unlock2(s); } MENDFUNC(5,lea_l_brr_indexed,(W4 d, RR4 s, RR4 index, IMM factor, IMM offset)) MIDFUNC(4,lea_l_rr_indexed,(W4 d, RR4 s, RR4 index, IMM factor)) { CLOBBER_LEA; s=readreg(s,4); index=readreg(index,4); d=writereg(d,4); raw_lea_l_rr_indexed(d,s,index,factor); unlock2(d); unlock2(index); unlock2(s); } MENDFUNC(4,lea_l_rr_indexed,(W4 d, RR4 s, RR4 index, IMM factor)) /* write d to the long at the address contained in s+offset */ MIDFUNC(3,mov_l_bRr,(RR4 d, RR4 s, IMM offset)) { int dreg=d; if (isconst(d)) { COMPCALL(mov_l_mr)(live.state[d].val+offset,s); return; } CLOBBER_MOV; s=readreg(s,4); d=readreg_offset(d,4); offset+=get_offset(dreg); raw_mov_l_bRr(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_l_bRr,(RR4 d, RR4 s, IMM offset)) /* write the word at the address contained in s+offset and store in d */ MIDFUNC(3,mov_w_bRr,(RR4 d, RR2 s, IMM offset)) { int dreg=d; if (isconst(d)) { COMPCALL(mov_w_mr)(live.state[d].val+offset,s); return; } CLOBBER_MOV; s=readreg(s,2); d=readreg_offset(d,4); offset+=get_offset(dreg); raw_mov_w_bRr(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_w_bRr,(RR4 d, RR2 s, IMM offset)) MIDFUNC(3,mov_b_bRr,(RR4 d, RR1 s, IMM offset)) { int dreg=d; if (isconst(d)) { COMPCALL(mov_b_mr)(live.state[d].val+offset,s); return; } CLOBBER_MOV; s=readreg(s,1); d=readreg_offset(d,4); offset+=get_offset(dreg); raw_mov_b_bRr(d,s,offset); unlock2(d); unlock2(s); } MENDFUNC(3,mov_b_bRr,(RR4 d, RR1 s, IMM offset)) MIDFUNC(1,mid_bswap_32,(RW4 r)) { if (isconst(r)) { uae_u32 oldv=live.state[r].val; live.state[r].val=reverse32(oldv); return; } CLOBBER_SW32; r=rmw(r,4,4); raw_bswap_32(r); unlock2(r); } MENDFUNC(1,mid_bswap_32,(RW4 r)) MIDFUNC(1,mid_bswap_16,(RW2 r)) { if (isconst(r)) { uae_u32 oldv=live.state[r].val; live.state[r].val=((oldv>>8)&0xff) | ((oldv<<8)&0xff00) | (oldv&0xffff0000); return; } CLOBBER_SW16; r=rmw(r,2,2); raw_bswap_16(r); unlock2(r); } MENDFUNC(1,mid_bswap_16,(RW2 r)) MIDFUNC(2,mov_l_rr,(W4 d, RR4 s)) { int olds; if (d==s) { /* How pointless! */ return; } if (isconst(s)) { COMPCALL(mov_l_ri)(d,live.state[s].val); return; } olds=s; disassociate(d); s=readreg_offset(s,4); live.state[d].realreg=s; live.state[d].realind=live.nat[s].nholds; live.state[d].val=live.state[olds].val; live.state[d].validsize=4; live.state[d].dirtysize=4; set_status(d,DIRTY); live.nat[s].holds[live.nat[s].nholds]=d; live.nat[s].nholds++; log_clobberreg(d); D2(panicbug("Added %d to nreg %d(%d), now holds %d regs", d,s,live.state[d].realind,live.nat[s].nholds)); unlock2(s); } MENDFUNC(2,mov_l_rr,(W4 d, RR4 s)) MIDFUNC(2,mov_l_mr,(IMM d, RR4 s)) { if (isconst(s)) { COMPCALL(mov_l_mi)(d,live.state[s].val); return; } CLOBBER_MOV; s=readreg(s,4); raw_mov_l_mr(d,s); unlock2(s); } MENDFUNC(2,mov_l_mr,(IMM d, RR4 s)) MIDFUNC(2,mov_w_mr,(IMM d, RR2 s)) { if (isconst(s)) { COMPCALL(mov_w_mi)(d,(uae_u16)live.state[s].val); return; } CLOBBER_MOV; s=readreg(s,2); raw_mov_w_mr(d,s); unlock2(s); } MENDFUNC(2,mov_w_mr,(IMM d, RR2 s)) MIDFUNC(2,mov_w_rm,(W2 d, IMM s)) { CLOBBER_MOV; d=writereg(d,2); raw_mov_w_rm(d,s); unlock2(d); } MENDFUNC(2,mov_w_rm,(W2 d, IMM s)) MIDFUNC(2,mov_b_mr,(IMM d, RR1 s)) { if (isconst(s)) { COMPCALL(mov_b_mi)(d,(uae_u8)live.state[s].val); return; } CLOBBER_MOV; s=readreg(s,1); raw_mov_b_mr(d,s); unlock2(s); } MENDFUNC(2,mov_b_mr,(IMM d, RR1 s)) MIDFUNC(2,mov_b_rm,(W1 d, IMM s)) { CLOBBER_MOV; d=writereg(d,1); raw_mov_b_rm(d,s); unlock2(d); } MENDFUNC(2,mov_b_rm,(W1 d, IMM s)) MIDFUNC(2,mov_l_ri,(W4 d, IMM s)) { set_const(d,s); return; } MENDFUNC(2,mov_l_ri,(W4 d, IMM s)) MIDFUNC(2,mov_w_ri,(W2 d, IMM s)) { CLOBBER_MOV; d=writereg(d,2); raw_mov_w_ri(d,s); unlock2(d); } MENDFUNC(2,mov_w_ri,(W2 d, IMM s)) MIDFUNC(2,mov_b_ri,(W1 d, IMM s)) { CLOBBER_MOV; d=writereg(d,1); raw_mov_b_ri(d,s); unlock2(d); } MENDFUNC(2,mov_b_ri,(W1 d, IMM s)) MIDFUNC(2,test_l_ri,(RR4 d, IMM i)) { CLOBBER_TEST; d=readreg(d,4); raw_test_l_ri(d,i); unlock2(d); } MENDFUNC(2,test_l_ri,(RR4 d, IMM i)) MIDFUNC(2,test_l_rr,(RR4 d, RR4 s)) { CLOBBER_TEST; d=readreg(d,4); s=readreg(s,4); raw_test_l_rr(d,s);; unlock2(d); unlock2(s); } MENDFUNC(2,test_l_rr,(RR4 d, RR4 s)) MIDFUNC(2,test_w_rr,(RR2 d, RR2 s)) { CLOBBER_TEST; d=readreg(d,2); s=readreg(s,2); raw_test_w_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,test_w_rr,(RR2 d, RR2 s)) MIDFUNC(2,test_b_rr,(RR1 d, RR1 s)) { CLOBBER_TEST; d=readreg(d,1); s=readreg(s,1); raw_test_b_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,test_b_rr,(RR1 d, RR1 s)) MIDFUNC(2,and_l_ri,(RW4 d, IMM i)) { if (isconst(d) && !needflags) { live.state[d].val &= i; return; } CLOBBER_AND; d=rmw(d,4,4); raw_and_l_ri(d,i); unlock2(d); } MENDFUNC(2,and_l_ri,(RW4 d, IMM i)) MIDFUNC(2,and_l,(RW4 d, RR4 s)) { CLOBBER_AND; s=readreg(s,4); d=rmw(d,4,4); raw_and_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,and_l,(RW4 d, RR4 s)) MIDFUNC(2,and_w,(RW2 d, RR2 s)) { CLOBBER_AND; s=readreg(s,2); d=rmw(d,2,2); raw_and_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,and_w,(RW2 d, RR2 s)) MIDFUNC(2,and_b,(RW1 d, RR1 s)) { CLOBBER_AND; s=readreg(s,1); d=rmw(d,1,1); raw_and_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,and_b,(RW1 d, RR1 s)) MIDFUNC(2,or_l_ri,(RW4 d, IMM i)) { if (isconst(d) && !needflags) { live.state[d].val|=i; return; } CLOBBER_OR; d=rmw(d,4,4); raw_or_l_ri(d,i); unlock2(d); } MENDFUNC(2,or_l_ri,(RW4 d, IMM i)) MIDFUNC(2,or_l,(RW4 d, RR4 s)) { if (isconst(d) && isconst(s) && !needflags) { live.state[d].val|=live.state[s].val; return; } CLOBBER_OR; s=readreg(s,4); d=rmw(d,4,4); raw_or_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,or_l,(RW4 d, RR4 s)) MIDFUNC(2,or_w,(RW2 d, RR2 s)) { CLOBBER_OR; s=readreg(s,2); d=rmw(d,2,2); raw_or_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,or_w,(RW2 d, RR2 s)) MIDFUNC(2,or_b,(RW1 d, RR1 s)) { CLOBBER_OR; s=readreg(s,1); d=rmw(d,1,1); raw_or_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,or_b,(RW1 d, RR1 s)) MIDFUNC(2,adc_l,(RW4 d, RR4 s)) { CLOBBER_ADC; s=readreg(s,4); d=rmw(d,4,4); raw_adc_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,adc_l,(RW4 d, RR4 s)) MIDFUNC(2,adc_w,(RW2 d, RR2 s)) { CLOBBER_ADC; s=readreg(s,2); d=rmw(d,2,2); raw_adc_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,adc_w,(RW2 d, RR2 s)) MIDFUNC(2,adc_b,(RW1 d, RR1 s)) { CLOBBER_ADC; s=readreg(s,1); d=rmw(d,1,1); raw_adc_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,adc_b,(RW1 d, RR1 s)) MIDFUNC(2,add_l,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(add_l_ri)(d,live.state[s].val); return; } CLOBBER_ADD; s=readreg(s,4); d=rmw(d,4,4); raw_add_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,add_l,(RW4 d, RR4 s)) MIDFUNC(2,add_w,(RW2 d, RR2 s)) { if (isconst(s)) { COMPCALL(add_w_ri)(d,(uae_u16)live.state[s].val); return; } CLOBBER_ADD; s=readreg(s,2); d=rmw(d,2,2); raw_add_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,add_w,(RW2 d, RR2 s)) MIDFUNC(2,add_b,(RW1 d, RR1 s)) { if (isconst(s)) { COMPCALL(add_b_ri)(d,(uae_u8)live.state[s].val); return; } CLOBBER_ADD; s=readreg(s,1); d=rmw(d,1,1); raw_add_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,add_b,(RW1 d, RR1 s)) MIDFUNC(2,sub_l_ri,(RW4 d, IMM i)) { if (!i && !needflags) return; if (isconst(d) && !needflags) { live.state[d].val-=i; return; } #if USE_OFFSET if (!needflags) { add_offset(d,-i); return; } #endif CLOBBER_SUB; d=rmw(d,4,4); raw_sub_l_ri(d,i); unlock2(d); } MENDFUNC(2,sub_l_ri,(RW4 d, IMM i)) MIDFUNC(2,sub_w_ri,(RW2 d, IMM i)) { if (!i && !needflags) return; CLOBBER_SUB; d=rmw(d,2,2); raw_sub_w_ri(d,i); unlock2(d); } MENDFUNC(2,sub_w_ri,(RW2 d, IMM i)) MIDFUNC(2,sub_b_ri,(RW1 d, IMM i)) { if (!i && !needflags) return; CLOBBER_SUB; d=rmw(d,1,1); raw_sub_b_ri(d,i); unlock2(d); } MENDFUNC(2,sub_b_ri,(RW1 d, IMM i)) MIDFUNC(2,add_l_ri,(RW4 d, IMM i)) { if (!i && !needflags) return; if (isconst(d) && !needflags) { live.state[d].val+=i; return; } #if USE_OFFSET if (!needflags) { add_offset(d,i); return; } #endif CLOBBER_ADD; d=rmw(d,4,4); raw_add_l_ri(d,i); unlock2(d); } MENDFUNC(2,add_l_ri,(RW4 d, IMM i)) MIDFUNC(2,add_w_ri,(RW2 d, IMM i)) { if (!i && !needflags) return; CLOBBER_ADD; d=rmw(d,2,2); raw_add_w_ri(d,i); unlock2(d); } MENDFUNC(2,add_w_ri,(RW2 d, IMM i)) MIDFUNC(2,add_b_ri,(RW1 d, IMM i)) { if (!i && !needflags) return; CLOBBER_ADD; d=rmw(d,1,1); raw_add_b_ri(d,i); unlock2(d); } MENDFUNC(2,add_b_ri,(RW1 d, IMM i)) MIDFUNC(2,sbb_l,(RW4 d, RR4 s)) { CLOBBER_SBB; s=readreg(s,4); d=rmw(d,4,4); raw_sbb_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,sbb_l,(RW4 d, RR4 s)) MIDFUNC(2,sbb_w,(RW2 d, RR2 s)) { CLOBBER_SBB; s=readreg(s,2); d=rmw(d,2,2); raw_sbb_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,sbb_w,(RW2 d, RR2 s)) MIDFUNC(2,sbb_b,(RW1 d, RR1 s)) { CLOBBER_SBB; s=readreg(s,1); d=rmw(d,1,1); raw_sbb_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,sbb_b,(RW1 d, RR1 s)) MIDFUNC(2,sub_l,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(sub_l_ri)(d,live.state[s].val); return; } CLOBBER_SUB; s=readreg(s,4); d=rmw(d,4,4); raw_sub_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,sub_l,(RW4 d, RR4 s)) MIDFUNC(2,sub_w,(RW2 d, RR2 s)) { if (isconst(s)) { COMPCALL(sub_w_ri)(d,(uae_u16)live.state[s].val); return; } CLOBBER_SUB; s=readreg(s,2); d=rmw(d,2,2); raw_sub_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,sub_w,(RW2 d, RR2 s)) MIDFUNC(2,sub_b,(RW1 d, RR1 s)) { if (isconst(s)) { COMPCALL(sub_b_ri)(d,(uae_u8)live.state[s].val); return; } CLOBBER_SUB; s=readreg(s,1); d=rmw(d,1,1); raw_sub_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,sub_b,(RW1 d, RR1 s)) MIDFUNC(2,cmp_l,(RR4 d, RR4 s)) { CLOBBER_CMP; s=readreg(s,4); d=readreg(d,4); raw_cmp_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,cmp_l,(RR4 d, RR4 s)) MIDFUNC(2,cmp_w,(RR2 d, RR2 s)) { CLOBBER_CMP; s=readreg(s,2); d=readreg(d,2); raw_cmp_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,cmp_w,(RR2 d, RR2 s)) MIDFUNC(2,cmp_b,(RR1 d, RR1 s)) { CLOBBER_CMP; s=readreg(s,1); d=readreg(d,1); raw_cmp_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,cmp_b,(RR1 d, RR1 s)) MIDFUNC(2,xor_l,(RW4 d, RR4 s)) { CLOBBER_XOR; s=readreg(s,4); d=rmw(d,4,4); raw_xor_l(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,xor_l,(RW4 d, RR4 s)) MIDFUNC(2,xor_w,(RW2 d, RR2 s)) { CLOBBER_XOR; s=readreg(s,2); d=rmw(d,2,2); raw_xor_w(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,xor_w,(RW2 d, RR2 s)) MIDFUNC(2,xor_b,(RW1 d, RR1 s)) { CLOBBER_XOR; s=readreg(s,1); d=rmw(d,1,1); raw_xor_b(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,xor_b,(RW1 d, RR1 s)) MIDFUNC(5,call_r_02,(RR4 r, RR4 in1, RR4 in2, IMM isize1, IMM isize2)) { clobber_flags(); in1=readreg_specific(in1,isize1,REG_PAR1); in2=readreg_specific(in2,isize2,REG_PAR2); r=readreg(r,4); prepare_for_call_1(); unlock2(r); unlock2(in1); unlock2(in2); prepare_for_call_2(); compemu_raw_call_r(r); } MENDFUNC(5,call_r_02,(RR4 r, RR4 in1, RR4 in2, IMM isize1, IMM isize2)) MIDFUNC(5,call_r_11,(W4 out1, RR4 r, RR4 in1, IMM osize, IMM isize)) { clobber_flags(); if (osize==4) { if (out1!=in1 && out1!=r) { COMPCALL(forget_about)(out1); } } else { tomem_c(out1); } in1=readreg_specific(in1,isize,REG_PAR1); r=readreg(r,4); prepare_for_call_1(); unlock2(in1); unlock2(r); prepare_for_call_2(); compemu_raw_call_r(r); live.nat[REG_RESULT].holds[0]=out1; live.nat[REG_RESULT].nholds=1; live.nat[REG_RESULT].touched=touchcnt++; live.state[out1].realreg=REG_RESULT; live.state[out1].realind=0; live.state[out1].val=0; live.state[out1].validsize=osize; live.state[out1].dirtysize=osize; set_status(out1,DIRTY); } MENDFUNC(5,call_r_11,(W4 out1, RR4 r, RR4 in1, IMM osize, IMM isize)) MIDFUNC(0,nop,(void)) { raw_emit_nop(); } MENDFUNC(0,nop,(void)) /* forget_about() takes a mid-layer register */ MIDFUNC(1,forget_about,(W4 r)) { if (isinreg(r)) disassociate(r); live.state[r].val=0; set_status(r,UNDEF); } MENDFUNC(1,forget_about,(W4 r)) MIDFUNC(1,f_forget_about,(FW r)) { if (f_isinreg(r)) f_disassociate(r); live.fate[r].status=UNDEF; } MENDFUNC(1,f_forget_about,(FW r)) // ARM optimized functions MIDFUNC(2,arm_ADD_l,(RW4 d, RR4 s)) { if (isconst(s)) { COMPCALL(arm_ADD_l_ri)(d,live.state[s].val); return; } s=readreg(s,4); d=rmw(d,4,4); raw_ADD_l_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,arm_ADD_l,(RW4 d, RR4 s)) MIDFUNC(2,arm_ADD_l_ri,(RW4 d, IMM i)) { if (!i) return; if (isconst(d)) { live.state[d].val+=i; return; } #if USE_OFFSET add_offset(d,i); return; #endif d=rmw(d,4,4); raw_LDR_l_ri(REG_WORK1, i); raw_ADD_l_rr(d,REG_WORK1); unlock2(d); } MENDFUNC(2,arm_ADD_l_ri,(RW4 d, IMM i)) MIDFUNC(2,arm_ADD_l_ri8,(RW4 d, IMM i)) { if (!i) return; if (isconst(d)) { live.state[d].val+=i; return; } #if USE_OFFSET add_offset(d,i); return; #endif d=rmw(d,4,4); raw_ADD_l_rri(d,d,i); unlock2(d); } MENDFUNC(2,arm_ADD_l_ri8,(RW4 d, IMM i)) MIDFUNC(2,arm_SUB_l_ri8,(RW4 d, IMM i)) { if (!i) return; if (isconst(d)) { live.state[d].val-=i; return; } #if USE_OFFSET add_offset(d,-i); return; #endif d=rmw(d,4,4); raw_SUB_l_rri(d,d,i); unlock2(d); } MENDFUNC(2,arm_ADD_l_ri8,(RW4 d, IMM i)) MIDFUNC(2,arm_AND_l,(RW4 d, RR4 s)) { s=readreg(s,4); d=rmw(d,4,4); raw_AND_l_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,arm_AND_l,(RW4 d, RR4 s)) MIDFUNC(2,arm_AND_w,(RW2 d, RR2 s)) { s=readreg(s,2); d=rmw(d,2,2); raw_AND_w_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,arm_AND_w,(RW2 d, RR2 s)) MIDFUNC(2,arm_AND_b,(RW1 d, RR1 s)) { s=readreg(s,1); d=rmw(d,1,1); raw_AND_b_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,arm_AND_b,(RW1 d, RR1 s)) MIDFUNC(2,arm_AND_l_ri8,(RW4 d, IMM i)) { if (isconst(d)) { live.state[d].val &= i; return; } d=rmw(d,4,4); raw_AND_l_ri(d,i); unlock2(d); } MENDFUNC(2,arm_AND_l_ri8,(RW4 d, IMM i)) MIDFUNC(2,arm_EOR_b,(RW1 d, RR1 s)) { s=readreg(s,1); d=rmw(d,1,1); raw_EOR_b_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,arm_EOR_b,(RW1 d, RR1 s)) MIDFUNC(2,arm_EOR_l,(RW4 d, RR4 s)) { s=readreg(s,4); d=rmw(d,4,4); raw_EOR_l_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,arm_EOR_l,(RW4 d, RR4 s)) MIDFUNC(2,arm_EOR_w,(RW2 d, RR2 s)) { s=readreg(s,2); d=rmw(d,2,2); raw_EOR_w_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,arm_EOR_w,(RW2 d, RR2 s)) MIDFUNC(2,arm_ORR_b,(RW1 d, RR1 s)) { s=readreg(s,1); d=rmw(d,1,1); raw_ORR_b_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,arm_ORR_b,(RW1 d, RR1 s)) MIDFUNC(2,arm_ORR_l,(RW4 d, RR4 s)) { if (isconst(d) && isconst(s)) { live.state[d].val|=live.state[s].val; return; } s=readreg(s,4); d=rmw(d,4,4); raw_ORR_l_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,arm_ORR_l,(RW4 d, RR4 s)) MIDFUNC(2,arm_ORR_w,(RW2 d, RR2 s)) { s=readreg(s,2); d=rmw(d,2,2); raw_ORR_w_rr(d,s); unlock2(d); unlock2(s); } MENDFUNC(2,arm_ORR_w,(RW2 d, RR2 s)) MIDFUNC(2,arm_ROR_l_ri8,(RW4 r, IMM i)) { if (!i) return; r=rmw(r,4,4); raw_ROR_l_ri(r,i); unlock2(r); } MENDFUNC(2,arm_ROR_l_ri8,(RW4 r, IMM i)) // Other static inline void flush_cpu_icache(void *start, void *stop) { register void *_beg __asm ("a1") = start; register void *_end __asm ("a2") = stop; register void *_flg __asm ("a3") = 0; #ifdef __ARM_EABI__ register unsigned long _scno __asm ("r7") = 0xf0002; __asm __volatile ("swi 0x0 @ sys_cacheflush" : "=r" (_beg) : "0" (_beg), "r" (_end), "r" (_flg), "r" (_scno)); #else __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" : "=r" (_beg) : "0" (_beg), "r" (_end), "r" (_flg)); #endif } static inline void write_jmp_target(uae_u32* jmpaddr, cpuop_func* a) { *(jmpaddr) = (uae_u32) a; flush_cpu_icache((void *) jmpaddr, (void *) &jmpaddr[1]); } static inline void emit_jmp_target(uae_u32 a) { emit_long((uae_u32) a); } aranym-1.1.0/src/uae_cpu/compiler/compemu_fpp.cpp0000664000175000017500000011561013454637622020246 0ustar joyjoy/* * compiler/compemu_fpp.cpp - Dynamic translation of FPU instructions * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * JIT compiler m68k -> IA-32 and AMD64 * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * Adaptation for Basilisk II and improvements, copyright 2000-2004 Gwenole Beauchesne * Portions related to CPU detection come from linux/arch/i386/kernel/setup.c * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * UAE - The Un*x Amiga Emulator * * MC68881 emulation * * Copyright 1996 Herman ten Brugge * Adapted for JIT compilation (c) Bernd Meyer, 2000 */ #include "sysdeps.h" # include # include # include #include "memory-uae.h" #include "readcpu.h" #include "newcpu.h" #include "main.h" #include "compiler/compemu.h" #include "fpu/fpu.h" #include "fpu/flags.h" #include "fpu/exceptions.h" #include "fpu/rounding.h" #define DEBUG 0 #include "debug.h" #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) #define LD(x) x ## L #else #define LD(x) x #endif // gb-- WARNING: get_fpcr() and set_fpcr() support is experimental #define HANDLE_FPCR 0 // - IEEE-based fpu core must be used #if defined(FPU_IEEE) # define CAN_HANDLE_FPCR #endif // - Generic rounding mode and precision modes are supported if set together #if defined(FPU_USE_GENERIC_ROUNDING_MODE) && defined(FPU_USE_GENERIC_ROUNDING_PRECISION) # define CAN_HANDLE_FPCR #endif // - X86 rounding mode and precision modes are *not* supported but might work (?!) #if defined(FPU_USE_X86_ROUNDING_MODE) && defined(FPU_USE_X86_ROUNDING_PRECISION) # define CAN_HANDLE_FPCR #endif #if HANDLE_FPCR && !defined(CAN_HANDLE_FPCR) # warning "Can't handle FPCR, will FAIL(1) at runtime" # undef HANDLE_FPCR # define HANDLE_FPCR 0 #endif #define STATIC_INLINE static inline #define MAKE_FPSR(r) do { fmov_rr(FP_RESULT,r); } while (0) #define delay nop() ;nop() #define delay2 nop() ;nop() #define UNKNOWN_EXTRA 0xFFFFFFFF static void fpuop_illg(uae_u32 opcode, uae_u32 /* extra */) { /* if (extra == UNKNOWN_EXTRA) printf("FPU opcode %x, extra UNKNOWN_EXTRA\n",opcode & 0xFFFF); else printf("FPU opcode %x, extra %x\n",opcode & 0xFFFF,extra & 0xFFFF); */ op_illg(opcode); } uae_s32 temp_fp[4]; /* To convert between FP/integer */ /* return register number, or -1 for failure */ STATIC_INLINE int get_fp_value (uae_u32 opcode, uae_u16 extra) { uaecptr tmppc; uae_u16 tmp; int size; int mode; int reg; uae_u32 ad = 0; static int sz1[8] = { 4, 4, 12, 12, 2, 8, 1, 0 }; static int sz2[8] = { 4, 4, 12, 12, 2, 8, 2, 0 }; if ((extra & 0x4000) == 0) { return ((extra >> 10) & 7); } mode = (opcode >> 3) & 7; reg = opcode & 7; size = (extra >> 10) & 7; switch (mode) { case 0: switch (size) { case 6: sign_extend_8_rr(S1,reg); mov_l_mr((uintptr)temp_fp,S1); delay2; fmovi_rm(FS1,(uintptr)temp_fp); return FS1; case 4: sign_extend_16_rr(S1,reg); mov_l_mr((uintptr)temp_fp,S1); delay2; fmovi_rm(FS1,(uintptr)temp_fp); return FS1; case 0: mov_l_mr((uintptr)temp_fp,reg); delay2; fmovi_rm(FS1,(uintptr)temp_fp); return FS1; case 1: mov_l_mr((uintptr)temp_fp,reg); delay2; fmovs_rm(FS1,(uintptr)temp_fp); return FS1; default: return -1; } return -1; /* Should be unreachable */ case 1: return -1; /* Genuine invalid instruction */ default: break; } /* OK, we *will* have to load something from an address. Let's make sure we know how to handle that, or quit early --- i.e. *before* we do any postincrement/predecrement that we may regret */ switch (size) { case 3: return -1; case 0: case 1: case 2: case 4: case 5: case 6: break; default: return -1; } switch (mode) { case 2: ad=S1; /* We will change it, anyway ;-) */ mov_l_rr(ad,reg+8); break; case 3: ad=S1; mov_l_rr(ad,reg+8); lea_l_brr(reg+8,reg+8,(reg == 7?sz2[size]:sz1[size])); break; case 4: ad=S1; lea_l_brr(reg+8,reg+8,-(reg == 7?sz2[size]:sz1[size])); mov_l_rr(ad,reg+8); break; case 5: { uae_u32 off=(uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2); ad=S1; mov_l_rr(ad,reg+8); lea_l_brr(ad,ad,off); break; } case 6: { uae_u32 dp=comp_get_iword((m68k_pc_offset+=2)-2); ad=S1; calc_disp_ea_020(reg+8,dp,ad,S2); break; } case 7: switch (reg) { case 0: { uae_u32 off=(uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2); ad=S1; mov_l_ri(ad,off); break; } case 1: { uae_u32 off=comp_get_ilong((m68k_pc_offset+=4)-4); ad=S1; mov_l_ri(ad,off); break; } case 2: { uae_u32 address=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+ m68k_pc_offset; uae_s32 PC16off =(uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2); ad=S1; mov_l_ri(ad,address+PC16off); break; } case 3: return -1; tmppc = m68k_getpc (); tmp = next_iword (); ad = get_disp_ea_020 (tmppc, tmp); break; case 4: { uae_u32 address=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+ m68k_pc_offset; ad=S1; // Immediate addressing mode && Operation Length == Byte -> // Use the low-order byte of the extension word. if (size == 6) address++; mov_l_ri(ad,address); m68k_pc_offset+=sz2[size]; break; } default: return -1; } } switch (size) { case 0: readlong(ad,S2,S3); mov_l_mr((uintptr)temp_fp,S2); delay2; fmovi_rm(FS1,(uintptr)temp_fp); break; case 1: readlong(ad,S2,S3); mov_l_mr((uintptr)temp_fp,S2); delay2; fmovs_rm(FS1,(uintptr)temp_fp); break; case 2: readword(ad,S2,S3); mov_w_mr(((uintptr)temp_fp)+8,S2); add_l_ri(ad,4); readlong(ad,S2,S3); mov_l_mr((uintptr)(temp_fp)+4,S2); add_l_ri(ad,4); readlong(ad,S2,S3); mov_l_mr((uintptr)(temp_fp),S2); delay2; fmov_ext_rm(FS1,(uintptr)(temp_fp)); break; case 3: return -1; /* Some silly "packed" stuff */ case 4: readword(ad,S2,S3); sign_extend_16_rr(S2,S2); mov_l_mr((uintptr)temp_fp,S2); delay2; fmovi_rm(FS1,(uintptr)temp_fp); break; case 5: readlong(ad,S2,S3); mov_l_mr(((uintptr)temp_fp)+4,S2); add_l_ri(ad,4); readlong(ad,S2,S3); mov_l_mr((uintptr)(temp_fp),S2); delay2; fmov_rm(FS1,(uintptr)(temp_fp)); break; case 6: readbyte(ad,S2,S3); sign_extend_8_rr(S2,S2); mov_l_mr((uintptr)temp_fp,S2); delay2; fmovi_rm(FS1,(uintptr)temp_fp); break; default: return -1; } return FS1; } /* return of -1 means failure, >=0 means OK */ STATIC_INLINE int put_fp_value (int val, uae_u32 opcode, uae_u16 extra) { uae_u16 tmp; uaecptr tmppc; int size; int mode; int reg; uae_u32 ad; static int sz1[8] = { 4, 4, 12, 12, 2, 8, 1, 0 }; static int sz2[8] = { 4, 4, 12, 12, 2, 8, 2, 0 }; if ((extra & 0x4000) == 0) { const int dest_reg = (extra >> 10) & 7; fmov_rr(dest_reg, val); // gb-- status register is affected MAKE_FPSR(dest_reg); return 0; } mode = (opcode >> 3) & 7; reg = opcode & 7; size = (extra >> 10) & 7; ad = (uae_u32)-1; switch (mode) { case 0: switch (size) { case 6: fmovi_mr((uintptr)temp_fp,val); delay; mov_b_rm(reg,(uintptr)temp_fp); return 0; case 4: fmovi_mr((uintptr)temp_fp,val); delay; mov_w_rm(reg,(uintptr)temp_fp); return 0; case 0: fmovi_mr((uintptr)temp_fp,val); delay; mov_l_rm(reg,(uintptr)temp_fp); return 0; case 1: fmovs_mr((uintptr)temp_fp,val); delay; mov_l_rm(reg,(uintptr)temp_fp); return 0; default: return -1; } case 1: return -1; /* genuine invalid instruction */ default: break; } /* Let's make sure we get out *before* doing something silly if we can't handle the size */ switch (size) { case 0: case 4: case 5: case 6: case 2: case 1: break; case 3: default: return -1; } switch (mode) { case 2: ad=S1; mov_l_rr(ad,reg+8); break; case 3: ad=S1; mov_l_rr(ad,reg+8); lea_l_brr(reg+8,reg+8,(reg == 7?sz2[size]:sz1[size])); break; case 4: ad=S1; lea_l_brr(reg+8,reg+8,-(reg == 7?sz2[size]:sz1[size])); mov_l_rr(ad,reg+8); break; case 5: { uae_u32 off=(uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2); ad=S1; mov_l_rr(ad,reg+8); add_l_ri(ad,off); break; } case 6: { uae_u32 dp=comp_get_iword((m68k_pc_offset+=2)-2); ad=S1; calc_disp_ea_020(reg+8,dp,ad,S2); break; } case 7: switch (reg) { case 0: { uae_u32 off=(uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2); ad=S1; mov_l_ri(ad,off); break; } case 1: { uae_u32 off=comp_get_ilong((m68k_pc_offset+=4)-4); ad=S1; mov_l_ri(ad,off); break; } case 2: { uae_u32 address=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+ m68k_pc_offset; uae_s32 PC16off =(uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2); ad=S1; mov_l_ri(ad,address+PC16off); break; } case 3: return -1; tmppc = m68k_getpc (); tmp = next_iword (); ad = get_disp_ea_020 (tmppc, tmp); break; case 4: { uae_u32 address=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+ m68k_pc_offset; ad=S1; mov_l_ri(ad,address); m68k_pc_offset+=sz2[size]; break; } default: return -1; } } switch (size) { case 0: fmovi_mr((uintptr)temp_fp,val); delay; mov_l_rm(S2,(uintptr)temp_fp); writelong_clobber(ad,S2,S3); break; case 1: fmovs_mr((uintptr)temp_fp,val); delay; mov_l_rm(S2,(uintptr)temp_fp); writelong_clobber(ad,S2,S3); break; case 2: fmov_ext_mr((uintptr)temp_fp,val); delay; mov_w_rm(S2,(uintptr)temp_fp+8); writeword_clobber(ad,S2,S3); add_l_ri(ad,4); mov_l_rm(S2,(uintptr)temp_fp+4); writelong_clobber(ad,S2,S3); add_l_ri(ad,4); mov_l_rm(S2,(uintptr)temp_fp); writelong_clobber(ad,S2,S3); break; case 3: return -1; /* Packed */ case 4: fmovi_mr((uintptr)temp_fp,val); delay; mov_l_rm(S2,(uintptr)temp_fp); writeword_clobber(ad,S2,S3); break; case 5: fmov_mr((uintptr)temp_fp,val); delay; mov_l_rm(S2,(uintptr)temp_fp+4); writelong_clobber(ad,S2,S3); add_l_ri(ad,4); mov_l_rm(S2,(uintptr)temp_fp); writelong_clobber(ad,S2,S3); break; case 6: fmovi_mr((uintptr)temp_fp,val); delay; mov_l_rm(S2,(uintptr)temp_fp); writebyte(ad,S2,S3); break; default: return -1; } return 0; } /* return -1 for failure, or register number for success */ STATIC_INLINE int get_fp_ad (uae_u32 opcode, uae_u32 * ad) { uae_u16 tmp; uaecptr tmppc; int mode; int reg; uae_s32 off; mode = (opcode >> 3) & 7; reg = opcode & 7; switch (mode) { case 0: case 1: return -1; case 2: case 3: case 4: mov_l_rr(S1,8+reg); return S1; *ad = m68k_areg (regs, reg); break; case 5: off=(uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2); mov_l_rr(S1,8+reg); add_l_ri(S1,off); return S1; case 6: return -1; break; case 7: switch (reg) { case 0: off=(uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2); mov_l_ri(S1,off); return S1; case 1: off=comp_get_ilong((m68k_pc_offset+=4)-4); mov_l_ri(S1,off); return S1; case 2: return -1; // *ad = m68k_getpc (); // *ad += (uae_s32) (uae_s16) next_iword (); off=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+m68k_pc_offset; off+=(uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2); mov_l_ri(S1,off); return S1; case 3: return -1; tmppc = m68k_getpc (); tmp = next_iword (); *ad = get_disp_ea_020 (tmppc, tmp); break; default: return -1; } } abort(); } void comp_fdbcc_opp (uae_u32 /* opcode */, uae_u16 /* extra */) { FAIL(1); return; } void comp_fscc_opp (uae_u32 opcode, uae_u16 extra) { uae_u32 ad; int cc; int reg; #ifdef DEBUG_FPP printf ("fscc_opp at %08lx\n", m68k_getpc ()); fflush (stdout); #endif if (extra&0x20) { /* only cc from 00 to 1f are defined */ FAIL(1); return; } if ((opcode & 0x38) != 0) { /* We can only do to integer register */ FAIL(1); return; } fflags_into_flags(S2); reg=(opcode&7); mov_l_ri(S1,255); mov_l_ri(S4,0); switch(extra&0x0f) { /* according to fpp.c, the 0x10 bit is ignored */ case 0: break; /* set never */ case 1: mov_l_rr(S2,S4); cmov_l_rr(S4,S1,4); cmov_l_rr(S4,S2,10); break; case 2: cmov_l_rr(S4,S1,7); break; case 3: cmov_l_rr(S4,S1,3); break; case 4: mov_l_rr(S2,S4); cmov_l_rr(S4,S1,2); cmov_l_rr(S4,S2,10); break; case 5: mov_l_rr(S2,S4); cmov_l_rr(S4,S1,6); cmov_l_rr(S4,S2,10); break; case 6: cmov_l_rr(S4,S1,5); break; case 7: cmov_l_rr(S4,S1,11); break; case 8: cmov_l_rr(S4,S1,10); break; case 9: cmov_l_rr(S4,S1,4); break; case 10: cmov_l_rr(S4,S1,10); cmov_l_rr(S4,S1,7); break; case 11: cmov_l_rr(S4,S1,4); cmov_l_rr(S4,S1,3); break; case 12: cmov_l_rr(S4,S1,2); break; case 13: cmov_l_rr(S4,S1,6); break; case 14: cmov_l_rr(S4,S1,5); cmov_l_rr(S4,S1,10); break; case 15: mov_l_rr(S4,S1); break; } if ((opcode & 0x38) == 0) { mov_b_rr(reg,S4); } else { abort(); if (get_fp_ad (opcode, &ad) == 0) { m68k_setpc (m68k_getpc () - 4); fpuop_illg (opcode,extra); } else put_byte (ad, cc ? 0xff : 0x00); } } void comp_ftrapcc_opp (uae_u32 /* opcode */, uaecptr /* oldpc */) { FAIL(1); return; } void comp_fbcc_opp (uae_u32 opcode) { uae_u32 start_68k_offset=m68k_pc_offset; uae_u32 off; uae_u32 v1; uae_u32 v2; int cc; // comp_pc_p is expected to be bound to 32-bit addresses assert((uintptr)comp_pc_p <= 0xffffffffUL); if (opcode&0x20) { /* only cc from 00 to 1f are defined */ FAIL(1); return; } if ((opcode&0x40)==0) { off=(uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2); } else { off=comp_get_ilong((m68k_pc_offset+=4)-4); } mov_l_ri(S1,(uintptr) (comp_pc_p+off-(m68k_pc_offset-start_68k_offset))); mov_l_ri(PC_P,(uintptr)comp_pc_p); /* Now they are both constant. Might as well fold in m68k_pc_offset */ add_l_ri(S1,m68k_pc_offset); add_l_ri(PC_P,m68k_pc_offset); m68k_pc_offset=0; /* according to fpp.c, the 0x10 bit is ignored (it handles exception handling, which we don't do, anyway ;-) */ cc=opcode&0x0f; v1=get_const(PC_P); v2=get_const(S1); fflags_into_flags(S2); switch(cc) { case 0: break; /* jump never */ case 1: mov_l_rr(S2,PC_P); cmov_l_rr(PC_P,S1,4); cmov_l_rr(PC_P,S2,10); break; case 2: register_branch(v1,v2,7); break; case 3: register_branch(v1,v2,3); break; case 4: mov_l_rr(S2,PC_P); cmov_l_rr(PC_P,S1,2); cmov_l_rr(PC_P,S2,10); break; case 5: mov_l_rr(S2,PC_P); cmov_l_rr(PC_P,S1,6); cmov_l_rr(PC_P,S2,10); break; case 6: register_branch(v1,v2,5); break; case 7: register_branch(v1,v2,11); break; case 8: register_branch(v1,v2,10); break; case 9: register_branch(v1,v2,4); break; case 10: cmov_l_rr(PC_P,S1,10); cmov_l_rr(PC_P,S1,7); break; case 11: cmov_l_rr(PC_P,S1,4); cmov_l_rr(PC_P,S1,3); break; case 12: register_branch(v1,v2,2); break; case 13: register_branch(v1,v2,6); break; case 14: cmov_l_rr(PC_P,S1,5); cmov_l_rr(PC_P,S1,10); break; case 15: mov_l_rr(PC_P,S1); break; } } /* Floating point conditions The "NotANumber" part could be problematic; Howver, when NaN is encountered, the ftst instruction sets bot N and Z to 1 on the x87, so quite often things just fall into place. This is probably not accurate wrt the 68k FPU, but it is *as* accurate as this was before. However, some more thought should go into fixing this stuff up so it accurately emulates the 68k FPU. >==> 13) & 0x7) { case 1: /* illegal */ break; case 3: /* FMOVE Fpn, */ /* 2nd most common */ if (put_fp_value ((extra >> 7)&7 , opcode, extra) < 0) { FAIL(1); return; } return; case 6: /* FMOVEM , */ case 7: /* FMOVEM , */ { uae_u32 ad, list = 0; int incr = 0; if (extra & 0x2000) { /* FMOVEM FPP->memory */ switch ((extra >> 11) & 3) { /* Get out early if failure */ case 0: /* static pred */ case 2: /* static postinc */ break; case 1: /* dynamic pred */ case 3: /* dynamic postinc */ default: FAIL(1); return; } ad=get_fp_ad (opcode, &ad); if ((uae_s32)ad<0) { m68k_setpc (m68k_getpc () - 4); fpuop_illg (opcode,extra); return; } switch ((extra >> 11) & 3) { case 0: /* static pred */ list = extra & 0xff; incr = -1; break; case 2: /* static postinc */ list = extra & 0xff; incr = 1; break; case 1: /* dynamic pred */ case 3: /* dynamic postinc */ abort(); } if (incr < 0) { /* Predecrement */ for (reg = 7; reg >= 0; reg--) { if (list & 0x80) { fmov_ext_mr((uintptr)temp_fp,reg); delay; sub_l_ri(ad,4); mov_l_rm(S2,(uintptr)temp_fp); writelong_clobber(ad,S2,S3); sub_l_ri(ad,4); mov_l_rm(S2,(uintptr)temp_fp+4); writelong_clobber(ad,S2,S3); sub_l_ri(ad,4); mov_w_rm(S2,(uintptr)temp_fp+8); writeword_clobber(ad,S2,S3); } list <<= 1; } } else { /* Postincrement */ for (reg = 0; reg < 8; reg++) { if (list & 0x80) { fmov_ext_mr((uintptr)temp_fp,reg); delay; mov_w_rm(S2,(uintptr)temp_fp+8); writeword_clobber(ad,S2,S3); add_l_ri(ad,4); mov_l_rm(S2,(uintptr)temp_fp+4); writelong_clobber(ad,S2,S3); add_l_ri(ad,4); mov_l_rm(S2,(uintptr)temp_fp); writelong_clobber(ad,S2,S3); add_l_ri(ad,4); } list <<= 1; } } if ((opcode & 0x38) == 0x18) mov_l_rr((opcode & 7)+8,ad); if ((opcode & 0x38) == 0x20) mov_l_rr((opcode & 7)+8,ad); } else { /* FMOVEM memory->FPP */ uae_u32 ad; switch ((extra >> 11) & 3) { /* Get out early if failure */ case 0: /* static pred */ case 2: /* static postinc */ break; case 1: /* dynamic pred */ case 3: /* dynamic postinc */ default: FAIL(1); return; } ad=get_fp_ad (opcode, &ad); if ((uae_s32)ad<0) { m68k_setpc (m68k_getpc () - 4); D(bug("no ad\n")); fpuop_illg (opcode,extra); return; } switch ((extra >> 11) & 3) { case 0: /* static pred */ list = extra & 0xff; incr = -1; break; case 2: /* static postinc */ list = extra & 0xff; incr = 1; break; case 1: /* dynamic pred */ case 3: /* dynamic postinc */ abort(); } if (incr < 0) { // not reached for (reg = 7; reg >= 0; reg--) { if (list & 0x80) { sub_l_ri(ad,4); readlong(ad,S2,S3); mov_l_mr((uintptr)(temp_fp),S2); sub_l_ri(ad,4); readlong(ad,S2,S3); mov_l_mr((uintptr)(temp_fp)+4,S2); sub_l_ri(ad,4); readword(ad,S2,S3); mov_w_mr(((uintptr)temp_fp)+8,S2); delay2; fmov_ext_rm(reg,(uintptr)(temp_fp)); } list <<= 1; } } else { for (reg = 0; reg < 8; reg++) { if (list & 0x80) { readword(ad,S2,S3); mov_w_mr(((uintptr)temp_fp)+8,S2); add_l_ri(ad,4); readlong(ad,S2,S3); mov_l_mr((uintptr)(temp_fp)+4,S2); add_l_ri(ad,4); readlong(ad,S2,S3); mov_l_mr((uintptr)(temp_fp),S2); add_l_ri(ad,4); delay2; fmov_ext_rm(reg,(uintptr)(temp_fp)); } list <<= 1; } } if ((opcode & 0x38) == 0x18) mov_l_rr((opcode & 7)+8,ad); if ((opcode & 0x38) == 0x20) mov_l_rr((opcode & 7)+8,ad); } } return; case 4: /* FMOVEM , */ case 5: /* FMOVEM , */ /* rare */ if ((opcode & 0x30) == 0) { /* = Dn or An */ if (extra & 0x2000) { if (extra & 0x1000) { #if HANDLE_FPCR mov_l_rm(opcode & 15, (uintptr)&fpu.fpcr.rounding_mode); or_l_rm(opcode & 15, (uintptr)&fpu.fpcr.rounding_precision); #else FAIL(1); return; #endif } if (extra & 0x0800) { FAIL(1); return; } if (extra & 0x0400) { /* FPIAR: fixme; we cannot correctly return the address from compiled code */ mov_l_rm(opcode & 15,(uintptr)&fpu.instruction_address); return; } } else { // gb-- moved here so that we may FAIL() without generating any code if (extra & 0x0800) { // set_fpsr(m68k_dreg (regs, opcode & 15)); FAIL(1); return; } if (extra & 0x1000) { #if HANDLE_FPCR #if defined(FPU_USE_X86_ROUNDING_MODE) && defined(FPU_USE_X86_ROUNDING_PRECISION) FAIL(1); return; #endif mov_l_rr(S1,opcode & 15); mov_l_rr(S2,opcode & 15); and_l_ri(S1,FPCR_ROUNDING_PRECISION); and_l_ri(S2,FPCR_ROUNDING_MODE); mov_l_mr((uintptr)&fpu.fpcr.rounding_precision,S1); mov_l_mr((uintptr)&fpu.fpcr.rounding_mode,S2); #else FAIL(1); return; #endif } if (extra & 0x0400) { /* FPIAR: does that make sense at all? */ mov_l_mr((uintptr)&fpu.instruction_address,opcode & 15); } return; } } else if ((opcode & 0x3f) == 0x3c) { /* = #imm */ if ((extra & 0x2000) == 0) { // gb-- moved here so that we may FAIL() without generating any code if (extra & 0x0800) { FAIL(1); return; } if (extra & 0x1000) { comp_get_ilong((m68k_pc_offset+=4)-4); #if HANDLE_FPCR #if defined(FPU_USE_X86_ROUNDING_MODE) && defined(FPU_USE_X86_ROUNDING_PRECISION) FAIL(1); return; #endif // mov_l_mi((uintptr)®s.fpcr,val); mov_l_ri(S1,val); mov_l_ri(S2,val); and_l_ri(S1,FPCR_ROUNDING_PRECISION); and_l_ri(S2,FPCR_ROUNDING_MODE); mov_l_mr((uintptr)&fpu.fpcr.rounding_precision,S1); mov_l_mr((uintptr)&fpu.fpcr.rounding_mode,S2); #else FAIL(1); return; #endif } if (extra & 0x0400) { uae_u32 val=comp_get_ilong((m68k_pc_offset+=4)-4); mov_l_mi((uintptr)&fpu.instruction_address,val); } return; } FAIL(1); return; } else if (extra & 0x2000) { FAIL(1); return; } else { FAIL(1); return; } FAIL(1); return; case 0: case 2: /* Extremely common */ reg = (extra >> 7) & 7; if ((extra & 0xfc00) == 0x5c00) { switch (extra & 0x7f) { case 0x00: fmov_pi(reg); break; case 0x0b: fmov_log10_2(reg); break; case 0x0c: #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fmov_ext_rm(reg,(uintptr)&const_e); #else fmov_rm(reg,(uintptr)&const_e); #endif break; case 0x0d: fmov_log2_e(reg); break; case 0x0e: #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fmov_ext_rm(reg,(uintptr)&const_log10_e); #else fmov_rm(reg,(uintptr)&const_log10_e); #endif break; case 0x0f: fmov_0(reg); break; case 0x30: fmov_loge_2(reg); break; case 0x31: #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) fmov_ext_rm(reg,(uintptr)&const_loge_10); #else fmov_rm(reg,(uintptr)&const_loge_10); #endif break; case 0x32: fmov_1(reg); break; case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: case 0x3a: case 0x3b: #if defined(USE_LONG_DOUBLE) || defined(USE_QUAD_DOUBLE) case 0x3c: case 0x3d: case 0x3e: case 0x3f: fmov_ext_rm(reg,(uintptr)(power10+(extra & 0x7f)-0x32)); #else fmov_rm(reg,(uintptr)(power10+(extra & 0x7f)-0x32)); #endif break; default: /* This is not valid, so we fail */ FAIL(1); return; } return; } switch (extra & 0x7f) { case 0x00: /* FMOVE */ case 0x40: /* Explicit rounding. This is just a quick fix. Same * for all other cases that have three choices */ case 0x44: dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fmov_rr(reg,src); MAKE_FPSR (src); break; case 0x01: /* FINT */ FAIL(1); return; dont_care_fflags(); break; case 0x02: /* FSINH */ FAIL(1); return; dont_care_fflags(); break; case 0x03: /* FINTRZ */ #ifdef USE_X86_FPUCW /* If we have control over the CW, we can do this */ dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } mov_l_ri(S1,16); /* Switch to "round to zero" mode */ fldcw_m_indexed(S1,(uae_u32)x86_fpucw); frndint_rr(reg,src); /* restore control word */ mov_l_rm(S1,(uintptr)®s.fpcr); and_l_ri(S1,0x000000f0); fldcw_m_indexed(S1,(uintptr)x86_fpucw); MAKE_FPSR (reg); break; #endif FAIL(1); return; break; case 0x04: /* FSQRT */ case 0x41: case 0x45: dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fsqrt_rr(reg,src); MAKE_FPSR (reg); break; case 0x06: /* FLOGNP1 */ FAIL(1); return; dont_care_fflags(); break; case 0x08: /* FETOXM1 */ FAIL(1); return; dont_care_fflags(); break; case 0x09: /* FTANH */ FAIL(1); return; dont_care_fflags(); break; case 0x0a: /* FATAN */ FAIL(1); return; dont_care_fflags(); break; case 0x0c: /* FASIN */ FAIL(1); return; dont_care_fflags(); break; case 0x0d: /* FATANH */ FAIL(1); return; dont_care_fflags(); break; case 0x0e: /* FSIN */ dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fsin_rr(reg,src); MAKE_FPSR (reg); break; case 0x0f: /* FTAN */ FAIL(1); return; dont_care_fflags(); break; case 0x10: /* FETOX */ dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fetox_rr(reg,src); MAKE_FPSR (reg); break; case 0x11: /* FTWOTOX */ dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } ftwotox_rr(reg,src); MAKE_FPSR (reg); break; case 0x12: /* FTENTOX */ FAIL(1); return; dont_care_fflags(); break; case 0x14: /* FLOGN */ FAIL(1); return; dont_care_fflags(); break; case 0x15: /* FLOG10 */ FAIL(1); return; dont_care_fflags(); break; case 0x16: /* FLOG2 */ dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } flog2_rr(reg,src); MAKE_FPSR (reg); break; case 0x18: /* FABS */ case 0x58: case 0x5c: dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fabs_rr(reg,src); MAKE_FPSR (reg); break; case 0x19: /* FCOSH */ FAIL(1); return; dont_care_fflags(); break; case 0x1a: /* FNEG */ case 0x5a: case 0x5e: dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fneg_rr(reg,src); MAKE_FPSR (reg); break; case 0x1c: /* FACOS */ FAIL(1); return; dont_care_fflags(); break; case 0x1d: /* FCOS */ dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fcos_rr(reg,src); MAKE_FPSR (reg); break; case 0x1e: /* FGETEXP */ FAIL(1); return; dont_care_fflags(); break; case 0x1f: /* FGETMAN */ FAIL(1); return; dont_care_fflags(); break; case 0x20: /* FDIV */ case 0x60: case 0x64: dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fdiv_rr(reg,src); MAKE_FPSR (reg); break; case 0x21: /* FMOD */ dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } frem_rr(reg,src); MAKE_FPSR (reg); break; case 0x22: /* FADD */ case 0x62: case 0x66: dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fadd_rr(reg,src); MAKE_FPSR (reg); break; case 0x23: /* FMUL */ case 0x63: case 0x67: dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fmul_rr(reg,src); MAKE_FPSR (reg); break; case 0x24: /* FSGLDIV */ dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fdiv_rr(reg,src); MAKE_FPSR (reg); break; case 0x25: /* FREM */ // gb-- disabled because the quotient byte must be computed // otherwise, free rotation in ClarisWorks doesn't work. FAIL(1); return; dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } frem1_rr(reg,src); MAKE_FPSR (reg); break; case 0x26: /* FSCALE */ dont_care_fflags(); FAIL(1); return; break; case 0x27: /* FSGLMUL */ dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fmul_rr(reg,src); MAKE_FPSR (reg); break; case 0x28: /* FSUB */ case 0x68: case 0x6c: dont_care_fflags(); src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fsub_rr(reg,src); MAKE_FPSR (reg); break; case 0x30: /* FSINCOS */ case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: FAIL(1); return; dont_care_fflags(); break; case 0x38: /* FCMP */ src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fmov_rr(FP_RESULT,reg); fsub_rr(FP_RESULT,src); /* Right way? */ break; case 0x3a: /* FTST */ src=get_fp_value (opcode, extra); if (src < 0) { FAIL(1); /* Illegal instruction */ return; } fmov_rr(FP_RESULT,src); break; default: FAIL(1); return; break; } return; } m68k_setpc (m68k_getpc () - 4); fpuop_illg (opcode,extra); } aranym-1.1.0/src/uae_cpu/compiler/compemu8.cpp0000664000175000017500000000004613454637622017465 0ustar joyjoy#define PART_8 #include "compemu.cpp" aranym-1.1.0/src/uae_cpu/compiler/compemu7.cpp0000664000175000017500000000004613454637622017464 0ustar joyjoy#define PART_7 #include "compemu.cpp" aranym-1.1.0/src/uae_cpu/compiler/compemu6.cpp0000664000175000017500000000004613454637622017463 0ustar joyjoy#define PART_6 #include "compemu.cpp" aranym-1.1.0/src/uae_cpu/compiler/compemu5.cpp0000664000175000017500000000004613454637622017462 0ustar joyjoy#define PART_5 #include "compemu.cpp" aranym-1.1.0/src/uae_cpu/compiler/compemu4.cpp0000664000175000017500000000004613454637622017461 0ustar joyjoy#define PART_4 #include "compemu.cpp" aranym-1.1.0/src/uae_cpu/compiler/compemu3.cpp0000664000175000017500000000004613454637622017460 0ustar joyjoy#define PART_3 #include "compemu.cpp" aranym-1.1.0/src/uae_cpu/compiler/compemu2.cpp0000664000175000017500000000004613454637622017457 0ustar joyjoy#define PART_2 #include "compemu.cpp" aranym-1.1.0/src/uae_cpu/compiler/compemu1.cpp0000664000175000017500000000004613454637622017456 0ustar joyjoy#define PART_1 #include "compemu.cpp" aranym-1.1.0/src/uae_cpu/compiler/compemu.h0000664000175000017500000003323013454637622017043 0ustar joyjoy/* * compiler/compemu.h - Public interface and definitions * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * JIT compiler m68k -> IA-32 and AMD64 * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * Adaptation for Basilisk II and improvements, copyright 2000-2004 Gwenole Beauchesne * Portions related to CPU detection come from linux/arch/i386/kernel/setup.c * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef COMPEMU_H #define COMPEMU_H #include "sysconfig.h" #include "newcpu.h" #ifdef UAE #ifdef CPU_64_BIT typedef uae_u64 uintptr; #else typedef uae_u32 uintptr; #endif /* FIXME: cpummu.cpp also checks for USE_JIT, possibly others */ #define USE_JIT #endif #ifdef USE_JIT #ifdef JIT_DEBUG /* dump some information (m68k block, x86 block addresses) about the compiler state */ extern void compiler_dumpstate(void); #endif /* Now that we do block chaining, and also have linked lists on each tag, TAGMASK can be much smaller and still do its job. Saves several megs of memory! */ #define TAGMASK 0x0000ffff #define TAGSIZE (TAGMASK+1) #define MAXRUN 1024 #define cacheline(x) (((uintptr)x)&TAGMASK) extern uae_u8* start_pc_p; extern uae_u32 start_pc; struct blockinfo_t; struct cpu_history { uae_u16* location; #ifdef UAE uae_u8 specmem; #endif }; union cacheline { cpuop_func* handler; blockinfo_t * bi; }; /* Use new spill/reload strategy when calling external functions */ #define USE_OPTIMIZED_CALLS 0 #if USE_OPTIMIZED_CALLS #error implementation in progress #endif /* (gb) When on, this option can save save up to 30% compilation time * when many lazy flushes occur (e.g. apps in MacOS 8.x). */ #define USE_SEPARATE_BIA 1 /* Use chain of checksum_info_t to compute the block checksum */ #define USE_CHECKSUM_INFO 1 /* Use code inlining, aka follow-up of constant jumps */ #define USE_INLINING 1 /* Inlining requires the chained checksuming information */ #if USE_INLINING #undef USE_CHECKSUM_INFO #define USE_CHECKSUM_INFO 1 #endif /* Does flush_icache_range() only check for blocks falling in the requested range? */ #define LAZY_FLUSH_ICACHE_RANGE 0 #define USE_F_ALIAS 1 #define USE_OFFSET 1 #define COMP_DEBUG 1 #if COMP_DEBUG #define Dif(x) if (x) #else #define Dif(x) if (0) #endif #define SCALE 2 #define BYTES_PER_INST 10240 /* paranoid ;-) */ #if defined(CPU_arm) #define LONGEST_68K_INST 256 /* The number of bytes the longest possible 68k instruction takes */ #else #define LONGEST_68K_INST 16 /* The number of bytes the longest possible 68k instruction takes */ #endif #define MAX_CHECKSUM_LEN 2048 /* The maximum size we calculate checksums for. Anything larger will be flushed unconditionally even with SOFT_FLUSH */ #define MAX_HOLD_BI 3 /* One for the current block, and up to two for jump targets */ #define INDIVIDUAL_INST 0 #ifdef WINUAE_ARANYM #define FLAG_X 0x0010 #define FLAG_N 0x0008 #define FLAG_Z 0x0004 #define FLAG_V 0x0002 #define FLAG_C 0x0001 #else #define FLAG_C 0x0010 #define FLAG_V 0x0008 #define FLAG_Z 0x0004 #define FLAG_N 0x0002 #define FLAG_X 0x0001 #endif #define FLAG_CZNV (FLAG_C | FLAG_Z | FLAG_N | FLAG_V) #define FLAG_ALL (FLAG_C | FLAG_Z | FLAG_N | FLAG_V | FLAG_X) #define FLAG_ZNV (FLAG_Z | FLAG_N | FLAG_V) #define KILLTHERAT 1 /* Set to 1 to avoid some partial_rat_stalls */ #if defined(CPU_arm) #define USE_DATA_BUFFER #define N_REGS 13 /* really 16, but 13 to 15 are SP, LR, PC */ #else #if defined(CPU_x86_64) #define N_REGS 16 /* really only 15, but they are numbered 0-3,5-15 */ #else #define N_REGS 8 /* really only 7, but they are numbered 0,1,2,3,5,6,7 */ #endif #endif #define N_FREGS 6 /* That leaves us two positions on the stack to play with */ /* Functions exposed to newcpu, or to what was moved from newcpu.c to * compemu_support.c */ #ifdef WINUAE_ARANYM extern void compiler_init(void); extern void compiler_exit(void); extern bool compiler_use_jit(void); #endif extern void flush(int save_regs); extern void set_target(uae_u8* t); extern uae_u8* get_target(void); #ifdef UAE extern void build_comp(void); #endif extern void set_cache_state(int enabled); extern int get_cache_state(void); extern uae_u32 get_jitted_size(void); #ifdef JIT #ifdef WINUAE_ARANYM extern void (*flush_icache)(int n); #else extern void flush_icache(uaecptr ptr, int n); extern void flush_icache_hard(uaecptr ptr, int n); static inline void flush_icache(int n) { flush_icache(0, n); } static inline void flush_icache_hard(int n) { flush_icache(0, n); } #endif #endif extern void alloc_cache(void); extern int check_for_cache_miss(void); /* JIT FPU compilation */ extern void comp_fpp_opp (uae_u32 opcode, uae_u16 extra); extern void comp_fbcc_opp (uae_u32 opcode); extern void comp_fscc_opp (uae_u32 opcode, uae_u16 extra); void comp_fdbcc_opp (uae_u32 opcode, uae_u16 extra); void comp_ftrapcc_opp (uae_u32 opcode, uaecptr oldpc); void comp_fsave_opp (uae_u32 opcode); void comp_frestore_opp (uae_u32 opcode); extern uae_u32 needed_flags; extern uae_u8* comp_pc_p; extern void* pushall_call_handler; #define VREGS 32 #define VFREGS 16 #define INMEM 1 #define CLEAN 2 #define DIRTY 3 #define UNDEF 4 #define ISCONST 5 typedef struct { uae_u32* mem; uae_u32 val; uae_u8 is_swapped; uae_u8 status; uae_s8 realreg; /* gb-- realreg can hold -1 */ uae_u8 realind; /* The index in the holds[] array */ uae_u8 needflush; uae_u8 validsize; uae_u8 dirtysize; uae_u8 dummy; } reg_status; typedef struct { uae_u32* mem; double val; uae_u8 status; uae_s8 realreg; /* gb-- realreg can hold -1 */ uae_u8 realind; uae_u8 needflush; } freg_status; #define PC_P 16 #define FLAGX 17 #define FLAGTMP 18 #define NEXT_HANDLER 19 #define S1 20 #define S2 21 #define S3 22 #define S4 23 #define S5 24 #define S6 25 #define S7 26 #define S8 27 #define S9 28 #define S10 29 #define S11 30 #define S12 31 #define FP_RESULT 8 #define FS1 9 #define FS2 10 #define FS3 11 typedef struct { uae_u32 touched; uae_s8 holds[VREGS]; uae_u8 nholds; uae_u8 canbyte; uae_u8 canword; uae_u8 locked; } n_status; typedef struct { uae_u32 touched; uae_s8 holds[VFREGS]; uae_u8 nholds; uae_u8 locked; } fn_status; /* For flag handling */ #define NADA 1 #define TRASH 2 #define VALID 3 /* needflush values */ #define NF_SCRATCH 0 #define NF_TOMEM 1 #define NF_HANDLER 2 typedef struct { /* Integer part */ reg_status state[VREGS]; n_status nat[N_REGS]; uae_u32 flags_on_stack; uae_u32 flags_in_flags; uae_u32 flags_are_important; /* FPU part */ freg_status fate[VFREGS]; fn_status fat[N_FREGS]; /* x86 FPU part */ uae_s8 spos[N_FREGS]; uae_s8 onstack[6]; uae_s8 tos; } bigstate; typedef struct { /* Integer part */ uae_s8 virt[VREGS]; uae_s8 nat[N_REGS]; } smallstate; extern int touchcnt; #define IMM uae_s32 #define RR1 uae_u32 #define RR2 uae_u32 #define RR4 uae_u32 /* R1, R2, R4 collides with ARM registers defined in ucontext #define R1 uae_u32 #define R2 uae_u32 #define R4 uae_u32 */ #define W1 uae_u32 #define W2 uae_u32 #define W4 uae_u32 #define RW1 uae_u32 #define RW2 uae_u32 #define RW4 uae_u32 #define MEMR uae_u32 #define MEMW uae_u32 #define MEMRW uae_u32 #define FW uae_u32 #define FR uae_u32 #define FRW uae_u32 #define MIDFUNC(nargs,func,args) void func args #define MENDFUNC(nargs,func,args) #define COMPCALL(func) func #define LOWFUNC(flags,mem,nargs,func,args) static inline void func args #define LENDFUNC(flags,mem,nargs,func,args) /* What we expose to the outside */ #define DECLARE_MIDFUNC(func) extern void func #if defined(CPU_arm) #include "compemu_midfunc_arm.h" #if defined(USE_JIT2) #include "compemu_midfunc_arm2.h" #endif #endif #if defined(CPU_i386) || defined(CPU_x86_64) #include "compemu_midfunc_x86.h" #endif #undef DECLARE_MIDFUNC extern int failure; #define FAIL(x) do { failure|=x; } while (0) /* Convenience functions exposed to gencomp */ extern uae_u32 m68k_pc_offset; extern void readbyte(int address, int dest, int tmp); extern void readword(int address, int dest, int tmp); extern void readlong(int address, int dest, int tmp); extern void writebyte(int address, int source, int tmp); extern void writeword(int address, int source, int tmp); extern void writelong(int address, int source, int tmp); extern void writeword_clobber(int address, int source, int tmp); extern void writelong_clobber(int address, int source, int tmp); extern void get_n_addr(int address, int dest, int tmp); extern void get_n_addr_jmp(int address, int dest, int tmp); extern void calc_disp_ea_020(int base, uae_u32 dp, int target, int tmp); /* Set native Z flag only if register is zero */ extern void set_zero(int r, int tmp); extern int kill_rodent(int r); #define SYNC_PC_OFFSET 100 extern void sync_m68k_pc(void); extern uae_u32 get_const(int r); extern int is_const(int r); extern void register_branch(uae_u32 not_taken, uae_u32 taken, uae_u8 cond); #define comp_get_ibyte(o) do_get_mem_byte((uae_u8 *)(comp_pc_p + (o) + 1)) #define comp_get_iword(o) do_get_mem_word((uae_u16 *)(comp_pc_p + (o))) #define comp_get_ilong(o) do_get_mem_long((uae_u32 *)(comp_pc_p + (o))) struct blockinfo_t; typedef struct dep_t { uae_u32* jmp_off; struct blockinfo_t* target; struct blockinfo_t* source; struct dep_t** prev_p; struct dep_t* next; } dependency; typedef struct checksum_info_t { uae_u8 *start_p; uae_u32 length; struct checksum_info_t *next; } checksum_info; typedef struct blockinfo_t { uae_s32 count; cpuop_func* direct_handler_to_use; cpuop_func* handler_to_use; /* The direct handler does not check for the correct address */ cpuop_func* handler; cpuop_func* direct_handler; cpuop_func* direct_pen; cpuop_func* direct_pcc; #ifdef UAE uae_u8* nexthandler; #endif uae_u8* pc_p; uae_u32 c1; uae_u32 c2; #if USE_CHECKSUM_INFO checksum_info *csi; #else uae_u32 len; uae_u32 min_pcp; #endif struct blockinfo_t* next_same_cl; struct blockinfo_t** prev_same_cl_p; struct blockinfo_t* next; struct blockinfo_t** prev_p; uae_u8 optlevel; uae_u8 needed_flags; uae_u8 status; uae_u8 havestate; dependency dep[2]; /* Holds things we depend on */ dependency* deplist; /* List of things that depend on this */ smallstate env; #ifdef JIT_DEBUG /* (gb) size of the compiled block (direct handler) */ uae_u32 direct_handler_size; #endif } blockinfo; #define BI_INVALID 0 #define BI_ACTIVE 1 #define BI_NEED_RECOMP 2 #define BI_NEED_CHECK 3 #define BI_CHECKING 4 #define BI_COMPILING 5 #define BI_FINALIZING 6 void execute_normal(void); void exec_nostats(void); void do_nothing(void); #else static inline void flush_icache(int) { } #endif /* !USE_JIT */ #ifdef UAE typedef struct { uae_u8 type; uae_u8 reg; uae_u32 next; } regacc; #define JIT_EXCEPTION_HANDLER // #define JIT_ALWAYS_DISTRUST /* ARAnyM uses fpu_register name, used in scratch_t */ /* FIXME: check that no ARAnyM code assumes different floating point type */ typedef fptype fpu_register; extern void compile_block(cpu_history* pc_hist, int blocklen, int totcyles); #define MAXCYCLES (1000 * CYCLE_UNIT) #define scaled_cycles(x) (currprefs.m68k_speed<0?(((x)/SCALE)?(((x)/SCALE (uintptr_t) 0xffffffff) { jit_abort("JIT: 64-bit pointer (0x%llx) at %s:%d (fatal)", (unsigned long long)address, file, line); } return (uae_u32) address; } #define uae_p32(x) (check_uae_p32((uintptr)(x), __FILE__, __LINE__)) #else #define uae_p32(x) ((uae_u32)(x)) #endif #endif /* COMPEMU_H */ aranym-1.1.0/src/uae_cpu/compiler/codegen_x86.h0000664000175000017500000027166513454637622017527 0ustar joyjoy/* * compiler/codegen_x86.h - IA-32 and AMD64 code generator * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * JIT compiler m68k -> IA-32 and AMD64 * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * This file is derived from CCG, copyright 1999-2003 Ian Piumarta * Adaptation for Basilisk II and improvements, copyright 2000-2004 Gwenole Beauchesne * Portions related to CPU detection come from linux/arch/i386/kernel/setup.c * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef X86_RTASM_H #define X86_RTASM_H /* NOTES * * o Best viewed on a 1024x768 screen with fixed-6x10 font ;-) * * TODO * * o Fix FIXMEs * o i387 FPU instructions * o SSE instructions * o Optimize for cases where register numbers are not integral constants */ /* --- Configuration ------------------------------------------------------- */ /* Define to settle a "flat" register set, i.e. different regno for each size variant. */ #ifndef X86_FLAT_REGISTERS #define X86_FLAT_REGISTERS 1 #endif /* Define to generate x86-64 code. */ #ifndef X86_TARGET_64BIT #define X86_TARGET_64BIT 0 #endif /* Define to optimize ALU instructions. */ #ifndef X86_OPTIMIZE_ALU #define X86_OPTIMIZE_ALU 1 #endif /* Define to optimize rotate/shift instructions. */ #ifndef X86_OPTIMIZE_ROTSHI #define X86_OPTIMIZE_ROTSHI 1 #endif /* Define to optimize absolute addresses for RIP relative addressing. */ #ifndef X86_RIP_RELATIVE_ADDR #define X86_RIP_RELATIVE_ADDR 1 #endif /* --- Macros -------------------------------------------------------------- */ /* Functions used to emit code. * * x86_emit_byte(B) * x86_emit_word(W) * x86_emit_long(L) */ /* Get pointer to current code * * x86_get_target() */ /* Abort assembler, fatal failure. * * x86_emit_failure(MSG) */ #define x86_emit_failure0(MSG) (x86_emit_failure(MSG),0) /* --- Register set -------------------------------------------------------- */ enum { X86_RIP = -2, #if X86_FLAT_REGISTERS X86_NOREG = 0, X86_Reg8L_Base = 0x10, X86_Reg8H_Base = 0x20, X86_Reg16_Base = 0x30, X86_Reg32_Base = 0x40, X86_Reg64_Base = 0x50, X86_RegMMX_Base = 0x60, X86_RegXMM_Base = 0x70, #else X86_NOREG = -1, X86_Reg8L_Base = 0, X86_Reg8H_Base = 16, X86_Reg16_Base = 0, X86_Reg32_Base = 0, X86_Reg64_Base = 0, X86_RegMMX_Base = 0, X86_RegXMM_Base = 0, #endif }; enum { X86_AL = X86_Reg8L_Base, X86_CL, X86_DL, X86_BL, X86_SPL, X86_BPL, X86_SIL, X86_DIL, X86_R8B, X86_R9B, X86_R10B, X86_R11B, X86_R12B, X86_R13B, X86_R14B, X86_R15B, X86_AH = X86_Reg8H_Base + 4, X86_CH, X86_DH, X86_BH }; enum { X86_AX = X86_Reg16_Base, X86_CX, X86_DX, X86_BX, X86_SP, X86_BP, X86_SI, X86_DI, X86_R8W, X86_R9W, X86_R10W, X86_R11W, X86_R12W, X86_R13W, X86_R14W, X86_R15W }; enum { X86_EAX = X86_Reg32_Base, X86_ECX, X86_EDX, X86_EBX, X86_ESP, X86_EBP, X86_ESI, X86_EDI, X86_R8D, X86_R9D, X86_R10D, X86_R11D, X86_R12D, X86_R13D, X86_R14D, X86_R15D }; enum { X86_RAX = X86_Reg64_Base, X86_RCX, X86_RDX, X86_RBX, X86_RSP, X86_RBP, X86_RSI, X86_RDI, X86_R8, X86_R9, X86_R10, X86_R11, X86_R12, X86_R13, X86_R14, X86_R15 }; enum { X86_MM0 = X86_RegMMX_Base, X86_MM1, X86_MM2, X86_MM3, X86_MM4, X86_MM5, X86_MM6, X86_MM7, }; enum { X86_XMM0 = X86_RegXMM_Base, X86_XMM1, X86_XMM2, X86_XMM3, X86_XMM4, X86_XMM5, X86_XMM6, X86_XMM7, X86_XMM8, X86_XMM9, X86_XMM10, X86_XMM11, X86_XMM12, X86_XMM13, X86_XMM14, X86_XMM15 }; /* Register control and access * * _r0P(R) Null register? * _rIP(R) RIP register? * _rXP(R) Extended register? * * _rC(R) Class of register (only valid if X86_FLAT_REGISTERS) * _rR(R) Full register number * _rN(R) Short register number for encoding * * _r1(R) 8-bit register ID * _r2(R) 16-bit register ID * _r4(R) 32-bit register ID * _r8(R) 64-bit register ID * _rM(R) MMX register ID * _rX(R) XMM register ID * _rA(R) Address register ID used for EA calculation */ #define _r0P(R) ((int)(R) == (int)X86_NOREG) #define _rIP(R) ((int)(R) == (int)X86_RIP) #if X86_FLAT_REGISTERS #define _rC(R) ((R) & 0xf0) #define _rR(R) ((R) & 0x0f) #define _rN(R) ((R) & 0x07) #define _rXP(R) ((R) > 0 && _rR(R) > 7) #else #define _rN(R) ((R) & 0x07) #define _rR(R) (int(R)) #define _rXP(R) (_rR(R) > 7 && _rR(R) < 16) #endif #if !defined(_ASM_SAFETY) || ! X86_FLAT_REGISTERS #define _r1(R) _rN(R) #define _r2(R) _rN(R) #define _r4(R) _rN(R) #define _r8(R) _rN(R) #define _rA(R) _rN(R) #define _rM(R) _rN(R) #define _rX(R) _rN(R) #else #define _r1(R) ( ((_rC(R) & (X86_Reg8L_Base | X86_Reg8H_Base)) != 0) ? _rN(R) : x86_emit_failure0( "8-bit register required")) #define _r2(R) ( (_rC(R) == X86_Reg16_Base) ? _rN(R) : x86_emit_failure0("16-bit register required")) #define _r4(R) ( (_rC(R) == X86_Reg32_Base) ? _rN(R) : x86_emit_failure0("32-bit register required")) #define _r8(R) ( (_rC(R) == X86_Reg64_Base) ? _rN(R) : x86_emit_failure0("64-bit register required")) #define _rA(R) ( X86_TARGET_64BIT ? \ ( (_rC(R) == X86_Reg64_Base) ? _rN(R) : x86_emit_failure0("not a valid 64-bit base/index expression")) : \ ( (_rC(R) == X86_Reg32_Base) ? _rN(R) : x86_emit_failure0("not a valid 32-bit base/index expression")) ) #define _rM(R) ( (_rC(R) == X86_RegMMX_Base) ? _rN(R) : x86_emit_failure0("MMX register required")) #define _rX(R) ( (_rC(R) == X86_RegXMM_Base) ? _rN(R) : x86_emit_failure0("SSE register required")) #endif #define _rSP() (X86_TARGET_64BIT ? (int)X86_RSP : (int)X86_ESP) #define _r1e8lP(R) (int(R) >= X86_SPL && int(R) <= X86_DIL) #define _rbpP(R) (_rR(R) == _rR(X86_RBP)) #define _rspP(R) (_rR(R) == _rR(X86_RSP)) #define _rbp13P(R) (_rN(R) == _rN(X86_RBP)) #define _rsp12P(R) (_rN(R) == _rN(X86_RSP)) /* ========================================================================= */ /* --- UTILITY ------------------------------------------------------------- */ /* ========================================================================= */ typedef signed char _sc; typedef unsigned char _uc; typedef signed short _ss; typedef unsigned short _us; typedef signed int _sl; typedef unsigned int _ul; #define _UC(X) ((_uc )(uintptr_t)(X)) #define _US(X) ((_us )(uintptr_t)(X)) #define _SL(X) ((_sl )(uintptr_t)(X)) #define _UL(X) ((_ul )(uintptr_t)(X)) #define _PUC(X) ((_uc *)(X)) #define _PUS(X) ((_us *)(X)) #define _PSL(X) ((_sl *)(X)) #define _PUL(X) ((_ul *)(X)) #undef _B #undef _W #undef _L #undef _Q #define _B(B) x86_emit_byte((B)) #define _W(W) x86_emit_word((W)) #define _L(L) x86_emit_long((L)) #define _Q(Q) x86_emit_quad((Q)) #define _MASK(N) ((unsigned)((1<<(N)))-1) #define _siP(N,I) (!((((unsigned)(I))^(((unsigned)(I))<<1))&~_MASK(N))) #define _uiP(N,I) (!(((unsigned)(I))&~_MASK(N))) #define _suiP(N,I) (_siP(N,I) | _uiP(N,I)) #ifndef _ASM_SAFETY #define _ck_s(W,I) (_UL(I) & _MASK(W)) #define _ck_u(W,I) (_UL(I) & _MASK(W)) #define _ck_su(W,I) (_UL(I) & _MASK(W)) #define _ck_d(W,I) (_UL(I) & _MASK(W)) #else #define _ck_s(W,I) (_siP(W,I) ? (_UL(I) & _MASK(W)) : x86_emit_failure0( "signed integer `"#I"' too large for "#W"-bit field")) #define _ck_u(W,I) (_uiP(W,I) ? (_UL(I) & _MASK(W)) : x86_emit_failure0("unsigned integer `"#I"' too large for "#W"-bit field")) #define _ck_su(W,I) (_suiP(W,I) ? (_UL(I) & _MASK(W)) : x86_emit_failure0( "integer `"#I"' too large for "#W"-bit field")) #define _ck_d(W,I) (_siP(W,I) ? (_UL(I) & _MASK(W)) : x86_emit_failure0( "displacement `"#I"' too large for "#W"-bit field")) #endif #define _s0P(I) ((I)==0) #define _s8P(I) _siP(8,I) #define _s16P(I) _siP(16,I) #define _u8P(I) _uiP(8,I) #define _u16P(I) _uiP(16,I) #define _su8(I) _ck_su(8,I) #define _su16(I) _ck_su(16,I) #define _s1(I) _ck_s( 1,I) #define _s2(I) _ck_s( 2,I) #define _s3(I) _ck_s( 3,I) #define _s4(I) _ck_s( 4,I) #define _s5(I) _ck_s( 5,I) #define _s6(I) _ck_s( 6,I) #define _s7(I) _ck_s( 7,I) #define _s8(I) _ck_s( 8,I) #define _s9(I) _ck_s( 9,I) #define _s10(I) _ck_s(10,I) #define _s11(I) _ck_s(11,I) #define _s12(I) _ck_s(12,I) #define _s13(I) _ck_s(13,I) #define _s14(I) _ck_s(14,I) #define _s15(I) _ck_s(15,I) #define _s16(I) _ck_s(16,I) #define _s17(I) _ck_s(17,I) #define _s18(I) _ck_s(18,I) #define _s19(I) _ck_s(19,I) #define _s20(I) _ck_s(20,I) #define _s21(I) _ck_s(21,I) #define _s22(I) _ck_s(22,I) #define _s23(I) _ck_s(23,I) #define _s24(I) _ck_s(24,I) #define _s25(I) _ck_s(25,I) #define _s26(I) _ck_s(26,I) #define _s27(I) _ck_s(27,I) #define _s28(I) _ck_s(28,I) #define _s29(I) _ck_s(29,I) #define _s30(I) _ck_s(30,I) #define _s31(I) _ck_s(31,I) #define _u1(I) _ck_u( 1,I) #define _u2(I) _ck_u( 2,I) #define _u3(I) _ck_u( 3,I) #define _u4(I) _ck_u( 4,I) #define _u5(I) _ck_u( 5,I) #define _u6(I) _ck_u( 6,I) #define _u7(I) _ck_u( 7,I) #define _u8(I) _ck_u( 8,I) #define _u9(I) _ck_u( 9,I) #define _u10(I) _ck_u(10,I) #define _u11(I) _ck_u(11,I) #define _u12(I) _ck_u(12,I) #define _u13(I) _ck_u(13,I) #define _u14(I) _ck_u(14,I) #define _u15(I) _ck_u(15,I) #define _u16(I) _ck_u(16,I) #define _u17(I) _ck_u(17,I) #define _u18(I) _ck_u(18,I) #define _u19(I) _ck_u(19,I) #define _u20(I) _ck_u(20,I) #define _u21(I) _ck_u(21,I) #define _u22(I) _ck_u(22,I) #define _u23(I) _ck_u(23,I) #define _u24(I) _ck_u(24,I) #define _u25(I) _ck_u(25,I) #define _u26(I) _ck_u(26,I) #define _u27(I) _ck_u(27,I) #define _u28(I) _ck_u(28,I) #define _u29(I) _ck_u(29,I) #define _u30(I) _ck_u(30,I) #define _u31(I) _ck_u(31,I) /* ========================================================================= */ /* --- ASSEMBLER ----------------------------------------------------------- */ /* ========================================================================= */ #define _b00 0 #define _b01 1 #define _b10 2 #define _b11 3 #define _b000 0 #define _b001 1 #define _b010 2 #define _b011 3 #define _b100 4 #define _b101 5 #define _b110 6 #define _b111 7 #define _OFF4(D) (_UL(D) - _UL(x86_get_target())) #define _CKD8(D) _ck_d(8, ((_uc) _OFF4(D)) ) #define _D8(D) (_B(0), ((*(_PUC(x86_get_target())-1))= _CKD8(D))) #define _D32(D) (_L(0), ((*(_PUL(x86_get_target())-1))= _OFF4(D))) #ifndef _ASM_SAFETY # define _M(M) (M) # define _r(R) (R) # define _m(M) (M) # define _s(S) (S) # define _i(I) (I) # define _b(B) (B) #else # define _M(M) (((M)>3) ? x86_emit_failure0("internal error: mod = " #M) : (M)) # define _r(R) (((R)>7) ? x86_emit_failure0("internal error: reg = " #R) : (R)) # define _m(M) (((M)>7) ? x86_emit_failure0("internal error: r/m = " #M) : (M)) # define _s(S) (((S)>3) ? x86_emit_failure0("internal error: memory scale = " #S) : (S)) # define _i(I) (((I)>7) ? x86_emit_failure0("internal error: memory index = " #I) : (I)) # define _b(B) (((B)>7) ? x86_emit_failure0("internal error: memory base = " #B) : (B)) #endif #define _Mrm(Md,R,M) _B((_M(Md)<<6)|(_r(R)<<3)|_m(M)) #define _SIB(Sc,I, B) _B((_s(Sc)<<6)|(_i(I)<<3)|_b(B)) #define _SCL(S) ((((S)==1) ? _b00 : \ (((S)==2) ? _b01 : \ (((S)==4) ? _b10 : \ (((S)==8) ? _b11 : x86_emit_failure0("illegal scale: " #S)))))) /* --- Memory subformats - urgh! ------------------------------------------- */ /* _r_D() is RIP addressing mode if X86_TARGET_64BIT, use _r_DSIB() instead */ #define _r_D( R, D ) (_Mrm(_b00,_rN(R),_b101 ) ,_L((long)(D))) #define _r_DSIB(R, D ) (_Mrm(_b00,_rN(R),_b100 ),_SIB(_SCL(1),_b100 ,_b101 ),_L((long)(D))) #define _r_0B( R, B ) (_Mrm(_b00,_rN(R),_rA(B)) ) #define _r_0BIS(R, B,I,S) (_Mrm(_b00,_rN(R),_b100 ),_SIB(_SCL(S),_rA(I),_rA(B)) ) #define _r_1B( R, D,B ) (_Mrm(_b01,_rN(R),_rA(B)) ,_B((long)(D))) #define _r_1BIS(R, D,B,I,S) (_Mrm(_b01,_rN(R),_b100 ),_SIB(_SCL(S),_rA(I),_rA(B)),_B((long)(D))) #define _r_4B( R, D,B ) (_Mrm(_b10,_rN(R),_rA(B)) ,_L((long)(D))) #define _r_4IS( R, D,I,S) (_Mrm(_b00,_rN(R),_b100 ),_SIB(_SCL(S),_rA(I),_b101 ),_L((long)(D))) #define _r_4BIS(R, D,B,I,S) (_Mrm(_b10,_rN(R),_b100 ),_SIB(_SCL(S),_rA(I),_rA(B)),_L((long)(D))) #define _r_DB( R, D,B ) ((_s0P(D) && (!_rbp13P(B)) ? _r_0B (R, B ) : (_s8P(D) ? _r_1B( R,D,B ) : _r_4B( R,D,B )))) #define _r_DBIS(R, D,B,I,S) ((_s0P(D) && (!_rbp13P(B)) ? _r_0BIS(R, B,I,S) : (_s8P(D) ? _r_1BIS(R,D,B,I,S) : _r_4BIS(R,D,B,I,S)))) /* Use RIP-addressing in 64-bit mode, if possible */ #define _x86_RIP_addressing_possible(D,O) (X86_RIP_RELATIVE_ADDR && \ ((uintptr)x86_get_target() + 4 + (O) - (D) <= 0xffffffff)) #define _r_X( R, D,B,I,S,O) (_r0P(I) ? (_r0P(B) ? (!X86_TARGET_64BIT ? _r_D(R,D) : \ (_x86_RIP_addressing_possible(D, O) ? \ _r_D(R, (D) - ((uintptr)x86_get_target() + 4 + (O))) : \ _r_DSIB(R,D))) : \ (_rIP(B) ? _r_D (R,D ) : \ (_rsp12P(B) ? _r_DBIS(R,D,_rSP(),_rSP(),1) : \ _r_DB (R,D, B )))) : \ (_r0P(B) ? _r_4IS (R,D, I,S) : \ (!_rspP(I) ? _r_DBIS(R,D, B, I,S) : \ x86_emit_failure("illegal index register: %esp")))) /* --- Instruction formats ------------------------------------------------- */ #define _m32only(X) (! X86_TARGET_64BIT ? X : x86_emit_failure("invalid instruction in 64-bit mode")) #define _m64only(X) ( X86_TARGET_64BIT ? X : x86_emit_failure("invalid instruction in 32-bit mode")) #define _m64(X) ( X86_TARGET_64BIT ? X : ((void)0) ) /* _format Opcd ModR/M dN(rB,rI,Sc) imm... */ #define _d16() ( _B(0x66 ) ) #define _O( OP ) ( _B( OP ) ) #define _Or( OP,R ) ( _B( (OP)|_r(R)) ) #define _OO( OP ) ( _B((OP)>>8), _B( (uae_u8)(OP) ) ) #define _OOr( OP,R ) ( _B((OP)>>8), _B( (OP)|_r(R)) ) #define _Os( OP,B ) ( _s8P(B) ? _B(((OP)|_b10)) : _B(OP) ) #define _sW( W ) ( _s8P(W) ? _B(W):_W(W) ) #define _sL( L ) ( _s8P(L) ? _B(L):_L(L) ) #define _sWO( W ) ( _s8P(W) ? 1 : 2 ) #define _sLO( L ) ( _s8P(L) ? 1 : 4 ) #define _O_B( OP ,B ) ( _O ( OP ) ,_B(B) ) #define _O_W( OP ,W ) ( _O ( OP ) ,_W(W) ) #define _O_L( OP ,L ) ( _O ( OP ) ,_L(L) ) #define _O_D8( OP ,D ) ( _O ( OP ) ,_D8(D) ) #define _O_D32( OP ,D ) ( _O ( OP ) ,_D32(D) ) #define _OO_D32( OP ,D ) ( _OO ( OP ) ,_D32(D) ) #define _Os_sW( OP ,W ) ( _Os ( OP,W) ,_sW(W) ) #define _Os_sL( OP ,L ) ( _Os ( OP,L) ,_sL(L) ) #define _O_W_B( OP ,W,B) ( _O ( OP ) ,_W(W),_B(B)) #define _Or_B( OP,R ,B ) ( _Or ( OP,R) ,_B(B) ) #define _Or_W( OP,R ,W ) ( _Or ( OP,R) ,_W(W) ) #define _Or_L( OP,R ,L ) ( _Or ( OP,R) ,_L(L) ) #define _Or_Q( OP,R ,Q ) ( _Or ( OP,R) ,_Q(Q) ) #define _O_Mrm( OP ,MO,R,M ) ( _O ( OP ),_Mrm(MO,R,M ) ) #define _OO_Mrm( OP ,MO,R,M ) ( _OO ( OP ),_Mrm(MO,R,M ) ) #define _O_Mrm_B( OP ,MO,R,M ,B ) ( _O ( OP ),_Mrm(MO,R,M ) ,_B(B) ) #define _O_Mrm_W( OP ,MO,R,M ,W ) ( _O ( OP ),_Mrm(MO,R,M ) ,_W(W) ) #define _O_Mrm_L( OP ,MO,R,M ,L ) ( _O ( OP ),_Mrm(MO,R,M ) ,_L(L) ) #define _OO_Mrm_B( OP ,MO,R,M ,B ) ( _OO ( OP ),_Mrm(MO,R,M ) ,_B(B) ) #define _Os_Mrm_sW(OP ,MO,R,M ,W ) ( _Os ( OP,W),_Mrm(MO,R,M ),_sW(W) ) #define _Os_Mrm_sL(OP ,MO,R,M ,L ) ( _Os ( OP,L),_Mrm(MO,R,M ),_sL(L) ) #define _O_r_X( OP ,R ,MD,MB,MI,MS ) ( _O ( OP ),_r_X( R ,MD,MB,MI,MS,0) ) #define _OO_r_X( OP ,R ,MD,MB,MI,MS ) ( _OO ( OP ),_r_X( R ,MD,MB,MI,MS,0) ) #define _O_r_X_B( OP ,R ,MD,MB,MI,MS,B ) ( _O ( OP ),_r_X( R ,MD,MB,MI,MS,1) ,_B(B) ) #define _O_r_X_W( OP ,R ,MD,MB,MI,MS,W ) ( _O ( OP ),_r_X( R ,MD,MB,MI,MS,2) ,_W(W) ) #define _O_r_X_L( OP ,R ,MD,MB,MI,MS,L ) ( _O ( OP ),_r_X( R ,MD,MB,MI,MS,4) ,_L(L) ) #define _OO_r_X_B( OP ,R ,MD,MB,MI,MS,B ) ( _OO ( OP ),_r_X( R ,MD,MB,MI,MS,1) ,_B(B) ) #define _Os_r_X_sW(OP ,R ,MD,MB,MI,MS,W ) ( _Os ( OP,W),_r_X( R ,MD,MB,MI,MS,_sWO(W)),_sW(W)) #define _Os_r_X_sL(OP ,R ,MD,MB,MI,MS,L ) ( _Os ( OP,L),_r_X( R ,MD,MB,MI,MS,_sLO(L)),_sL(L)) #define _O_X_B( OP ,MD,MB,MI,MS,B ) ( _O_r_X_B( OP ,0 ,MD,MB,MI,MS ,B) ) #define _O_X_W( OP ,MD,MB,MI,MS,W ) ( _O_r_X_W( OP ,0 ,MD,MB,MI,MS ,W) ) #define _O_X_L( OP ,MD,MB,MI,MS,L ) ( _O_r_X_L( OP ,0 ,MD,MB,MI,MS ,L) ) /* --- REX prefixes -------------------------------------------------------- */ #undef _VOID #define _VOID() ((void)0) #define _BIT(X) (!!(X)) #define _d64(W,R,X,B) (_B(0x40|(W)<<3|(R)<<2|(X)<<1|(B))) #define __REXwrxb(L,W,R,X,B) ((W|R|X|B) || (L) ? _d64(W,R,X,B) : _VOID()) #define __REXwrx_(L,W,R,X,MR) (__REXwrxb(L,W,R,X,_BIT(_rIP(MR)?0:_rXP(MR)))) #define __REXw_x_(L,W,R,X,MR) (__REXwrx_(L,W,_BIT(_rXP(R)),X,MR)) #define __REX_reg(RR) (__REXwrxb(0,0,0,00,_BIT(_rXP(RR)))) #define __REX_mem(MB,MI) (__REXwrxb(0,0,0,_BIT(_rXP(MI)),_BIT(_rXP(MB)))) // FIXME: can't mix new (SPL,BPL,SIL,DIL) with (AH,BH,CH,DH) #define _REXBrr(RR,MR) _m64(__REXw_x_(_r1e8lP(RR)||_r1e8lP(MR),0,RR,0,MR)) #define _REXBmr(MB,MI,RD) _m64(__REXw_x_(_r1e8lP(RD)||_r1e8lP(MB),0,RD,_BIT(_rXP(MI)),MB)) #define _REXBrm(RS,MB,MI) _REXBmr(MB,MI,RS) #define _REXBLrr(RR,MR) _m64(__REXw_x_(_r1e8lP(MR),0,RR,0,MR)) #define _REXLrr(RR,MR) _m64(__REXw_x_(0,0,RR,0,MR)) #define _REXLmr(MB,MI,RD) _m64(__REXw_x_(0,0,RD,_BIT(_rXP(MI)),MB)) #define _REXLrm(RS,MB,MI) _REXLmr(MB,MI,RS) #define _REXLr(RR) _m64(__REX_reg(RR)) #define _REXLm(MB,MI) _m64(__REX_mem(MB,MI)) #define _REXQrr(RR,MR) _m64only(__REXw_x_(0,1,RR,0,MR)) #define _REXQmr(MB,MI,RD) _m64only(__REXw_x_(0,1,RD,_BIT(_rXP(MI)),MB)) #define _REXQrm(RS,MB,MI) _REXQmr(MB,MI,RS) #define _REXQr(RR) _m64only(__REX_reg(RR)) #define _REXQm(MB,MI) _m64only(__REX_mem(MB,MI)) /* ========================================================================= */ /* --- Fully-qualified intrinsic instructions ------------------------------ */ /* ========================================================================= */ /* OPCODE + i = immediate operand * + r = register operand * + m = memory operand (disp,base,index,scale) * + sr/sm = a star preceding a register or memory * + 0 = top of stack register (for FPU instructions) * * NOTE in x86-64 mode: a memory operand with only a valid * displacement value will lead to the expect absolute mode. If * RIP addressing is necessary, X86_RIP shall be used as the base * register argument. */ /* --- ALU instructions ---------------------------------------------------- */ enum { X86_ADD = 0, X86_OR = 1, X86_ADC = 2, X86_SBB = 3, X86_AND = 4, X86_SUB = 5, X86_XOR = 6, X86_CMP = 7, }; /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define _ALUBrr(OP,RS, RD) (_REXBrr(RS, RD), _O_Mrm (((OP) << 3) ,_b11,_r1(RS),_r1(RD) )) #define _ALUBmr(OP, MD, MB, MI, MS, RD) (_REXBmr(MB, MI, RD), _O_r_X (((OP) << 3) + 2,_r1(RD) ,MD,MB,MI,MS )) #define _ALUBrm(OP, RS, MD, MB, MI, MS) (_REXBrm(RS, MB, MI), _O_r_X (((OP) << 3) , ,_r1(RS) ,MD,MB,MI,MS )) #define _ALUBir(OP, IM, RD) (X86_OPTIMIZE_ALU && ((RD) == X86_AL) ? \ (_REXBrr(0, RD), _O_B (((OP) << 3) + 4 ,_su8(IM))) : \ (_REXBrr(0, RD), _O_Mrm_B (0x80 ,_b11,OP ,_r1(RD) ,_su8(IM))) ) #define _ALUBim(OP, IM, MD, MB, MI, MS) (_REXBrm(0, MB, MI), _O_r_X_B (0x80 ,OP ,MD,MB,MI,MS ,_su8(IM))) #define _ALUWrr(OP, RS, RD) (_d16(), _REXLrr(RS, RD), _O_Mrm (((OP) << 3) + 1,_b11,_r2(RS),_r2(RD) )) #define _ALUWmr(OP, MD, MB, MI, MS, RD) (_d16(), _REXLmr(MB, MI, RD), _O_r_X (((OP) << 3) + 3 ,_r2(RD) ,MD,MB,MI,MS )) #define _ALUWrm(OP, RS, MD, MB, MI, MS) (_d16(), _REXLrm(RS, MB, MI), _O_r_X (((OP) << 3) + 1 ,_r2(RS) ,MD,MB,MI,MS )) #define _ALUWir(OP, IM, RD) (X86_OPTIMIZE_ALU && ((RD) == X86_AX) ? \ (_d16(), _REXLrr(0, RD), _O_W (((OP) << 3) + 5 ,_su16(IM))) : \ (_d16(), _REXLrr(0, RD), _Os_Mrm_sW (0x81 ,_b11,OP ,_r2(RD) ,_su16(IM))) ) #define _ALUWim(OP, IM, MD, MB, MI, MS) (_d16(), _REXLrm(0, MB, MI), _Os_r_X_sW (0x81 ,OP ,MD,MB,MI,MS ,_su16(IM))) #define _ALULrr(OP, RS, RD) (_REXLrr(RS, RD), _O_Mrm (((OP) << 3) + 1,_b11,_r4(RS),_r4(RD) )) #define _ALULmr(OP, MD, MB, MI, MS, RD) (_REXLmr(MB, MI, RD), _O_r_X (((OP) << 3) + 3 ,_r4(RD) ,MD,MB,MI,MS )) #define _ALULrm(OP, RS, MD, MB, MI, MS) (_REXLrm(RS, MB, MI), _O_r_X (((OP) << 3) + 1 ,_r4(RS) ,MD,MB,MI,MS )) #define _ALULir(OP, IM, RD) (X86_OPTIMIZE_ALU && ((RD) == X86_EAX) ? \ (_REXLrr(0, RD), _O_L (((OP) << 3) + 5 ,IM )) : \ (_REXLrr(0, RD), _Os_Mrm_sL (0x81 ,_b11,OP ,_r4(RD) ,IM )) ) #define _ALULim(OP, IM, MD, MB, MI, MS) (_REXLrm(0, MB, MI), _Os_r_X_sL (0x81 ,OP ,MD,MB,MI,MS ,IM )) #define _ALUQrr(OP, RS, RD) (_REXQrr(RS, RD), _O_Mrm (((OP) << 3) + 1,_b11,_r8(RS),_r8(RD) )) #define _ALUQmr(OP, MD, MB, MI, MS, RD) (_REXQmr(MB, MI, RD), _O_r_X (((OP) << 3) + 3 ,_r8(RD) ,MD,MB,MI,MS )) #define _ALUQrm(OP, RS, MD, MB, MI, MS) (_REXQrm(RS, MB, MI), _O_r_X (((OP) << 3) + 1 ,_r8(RS) ,MD,MB,MI,MS )) #define _ALUQir(OP, IM, RD) (X86_OPTIMIZE_ALU && ((RD) == X86_RAX) ? \ (_REXQrr(0, RD), _O_L (((OP) << 3) + 5 ,IM )) : \ (_REXQrr(0, RD), _Os_Mrm_sL (0x81 ,_b11,OP ,_r8(RD) ,IM )) ) #define _ALUQim(OP, IM, MD, MB, MI, MS) (_REXQrm(0, MB, MI), _Os_r_X_sL (0x81 ,OP ,MD,MB,MI,MS ,IM )) #define ADCBrr(RS, RD) _ALUBrr(X86_ADC, RS, RD) #define ADCBmr(MD, MB, MI, MS, RD) _ALUBmr(X86_ADC, MD, MB, MI, MS, RD) #define ADCBrm(RS, MD, MB, MI, MS) _ALUBrm(X86_ADC, RS, MD, MB, MI, MS) #define ADCBir(IM, RD) _ALUBir(X86_ADC, IM, RD) #define ADCBim(IM, MD, MB, MI, MS) _ALUBim(X86_ADC, IM, MD, MB, MI, MS) #define ADCWrr(RS, RD) _ALUWrr(X86_ADC, RS, RD) #define ADCWmr(MD, MB, MI, MS, RD) _ALUWmr(X86_ADC, MD, MB, MI, MS, RD) #define ADCWrm(RS, MD, MB, MI, MS) _ALUWrm(X86_ADC, RS, MD, MB, MI, MS) #define ADCWir(IM, RD) _ALUWir(X86_ADC, IM, RD) #define ADCWim(IM, MD, MB, MI, MS) _ALUWim(X86_ADC, IM, MD, MB, MI, MS) #define ADCLrr(RS, RD) _ALULrr(X86_ADC, RS, RD) #define ADCLmr(MD, MB, MI, MS, RD) _ALULmr(X86_ADC, MD, MB, MI, MS, RD) #define ADCLrm(RS, MD, MB, MI, MS) _ALULrm(X86_ADC, RS, MD, MB, MI, MS) #define ADCLir(IM, RD) _ALULir(X86_ADC, IM, RD) #define ADCLim(IM, MD, MB, MI, MS) _ALULim(X86_ADC, IM, MD, MB, MI, MS) #define ADCQrr(RS, RD) _ALUQrr(X86_ADC, RS, RD) #define ADCQmr(MD, MB, MI, MS, RD) _ALUQmr(X86_ADC, MD, MB, MI, MS, RD) #define ADCQrm(RS, MD, MB, MI, MS) _ALUQrm(X86_ADC, RS, MD, MB, MI, MS) #define ADCQir(IM, RD) _ALUQir(X86_ADC, IM, RD) #define ADCQim(IM, MD, MB, MI, MS) _ALUQim(X86_ADC, IM, MD, MB, MI, MS) #define ADDBrr(RS, RD) _ALUBrr(X86_ADD, RS, RD) #define ADDBmr(MD, MB, MI, MS, RD) _ALUBmr(X86_ADD, MD, MB, MI, MS, RD) #define ADDBrm(RS, MD, MB, MI, MS) _ALUBrm(X86_ADD, RS, MD, MB, MI, MS) #define ADDBir(IM, RD) _ALUBir(X86_ADD, IM, RD) #define ADDBim(IM, MD, MB, MI, MS) _ALUBim(X86_ADD, IM, MD, MB, MI, MS) #define ADDWrr(RS, RD) _ALUWrr(X86_ADD, RS, RD) #define ADDWmr(MD, MB, MI, MS, RD) _ALUWmr(X86_ADD, MD, MB, MI, MS, RD) #define ADDWrm(RS, MD, MB, MI, MS) _ALUWrm(X86_ADD, RS, MD, MB, MI, MS) #define ADDWir(IM, RD) _ALUWir(X86_ADD, IM, RD) #define ADDWim(IM, MD, MB, MI, MS) _ALUWim(X86_ADD, IM, MD, MB, MI, MS) #define ADDLrr(RS, RD) _ALULrr(X86_ADD, RS, RD) #define ADDLmr(MD, MB, MI, MS, RD) _ALULmr(X86_ADD, MD, MB, MI, MS, RD) #define ADDLrm(RS, MD, MB, MI, MS) _ALULrm(X86_ADD, RS, MD, MB, MI, MS) #define ADDLir(IM, RD) _ALULir(X86_ADD, IM, RD) #define ADDLim(IM, MD, MB, MI, MS) _ALULim(X86_ADD, IM, MD, MB, MI, MS) #define ADDQrr(RS, RD) _ALUQrr(X86_ADD, RS, RD) #define ADDQmr(MD, MB, MI, MS, RD) _ALUQmr(X86_ADD, MD, MB, MI, MS, RD) #define ADDQrm(RS, MD, MB, MI, MS) _ALUQrm(X86_ADD, RS, MD, MB, MI, MS) #define ADDQir(IM, RD) _ALUQir(X86_ADD, IM, RD) #define ADDQim(IM, MD, MB, MI, MS) _ALUQim(X86_ADD, IM, MD, MB, MI, MS) #define ANDBrr(RS, RD) _ALUBrr(X86_AND, RS, RD) #define ANDBmr(MD, MB, MI, MS, RD) _ALUBmr(X86_AND, MD, MB, MI, MS, RD) #define ANDBrm(RS, MD, MB, MI, MS) _ALUBrm(X86_AND, RS, MD, MB, MI, MS) #define ANDBir(IM, RD) _ALUBir(X86_AND, IM, RD) #define ANDBim(IM, MD, MB, MI, MS) _ALUBim(X86_AND, IM, MD, MB, MI, MS) #define ANDWrr(RS, RD) _ALUWrr(X86_AND, RS, RD) #define ANDWmr(MD, MB, MI, MS, RD) _ALUWmr(X86_AND, MD, MB, MI, MS, RD) #define ANDWrm(RS, MD, MB, MI, MS) _ALUWrm(X86_AND, RS, MD, MB, MI, MS) #define ANDWir(IM, RD) _ALUWir(X86_AND, IM, RD) #define ANDWim(IM, MD, MB, MI, MS) _ALUWim(X86_AND, IM, MD, MB, MI, MS) #define ANDLrr(RS, RD) _ALULrr(X86_AND, RS, RD) #define ANDLmr(MD, MB, MI, MS, RD) _ALULmr(X86_AND, MD, MB, MI, MS, RD) #define ANDLrm(RS, MD, MB, MI, MS) _ALULrm(X86_AND, RS, MD, MB, MI, MS) #define ANDLir(IM, RD) _ALULir(X86_AND, IM, RD) #define ANDLim(IM, MD, MB, MI, MS) _ALULim(X86_AND, IM, MD, MB, MI, MS) #define ANDQrr(RS, RD) _ALUQrr(X86_AND, RS, RD) #define ANDQmr(MD, MB, MI, MS, RD) _ALUQmr(X86_AND, MD, MB, MI, MS, RD) #define ANDQrm(RS, MD, MB, MI, MS) _ALUQrm(X86_AND, RS, MD, MB, MI, MS) #define ANDQir(IM, RD) _ALUQir(X86_AND, IM, RD) #define ANDQim(IM, MD, MB, MI, MS) _ALUQim(X86_AND, IM, MD, MB, MI, MS) #define CMPBrr(RS, RD) _ALUBrr(X86_CMP, RS, RD) #define CMPBmr(MD, MB, MI, MS, RD) _ALUBmr(X86_CMP, MD, MB, MI, MS, RD) #define CMPBrm(RS, MD, MB, MI, MS) _ALUBrm(X86_CMP, RS, MD, MB, MI, MS) #define CMPBir(IM, RD) _ALUBir(X86_CMP, IM, RD) #define CMPBim(IM, MD, MB, MI, MS) _ALUBim(X86_CMP, IM, MD, MB, MI, MS) #define CMPWrr(RS, RD) _ALUWrr(X86_CMP, RS, RD) #define CMPWmr(MD, MB, MI, MS, RD) _ALUWmr(X86_CMP, MD, MB, MI, MS, RD) #define CMPWrm(RS, MD, MB, MI, MS) _ALUWrm(X86_CMP, RS, MD, MB, MI, MS) #define CMPWir(IM, RD) _ALUWir(X86_CMP, IM, RD) #define CMPWim(IM, MD, MB, MI, MS) _ALUWim(X86_CMP, IM, MD, MB, MI, MS) #define CMPLrr(RS, RD) _ALULrr(X86_CMP, RS, RD) #define CMPLmr(MD, MB, MI, MS, RD) _ALULmr(X86_CMP, MD, MB, MI, MS, RD) #define CMPLrm(RS, MD, MB, MI, MS) _ALULrm(X86_CMP, RS, MD, MB, MI, MS) #define CMPLir(IM, RD) _ALULir(X86_CMP, IM, RD) #define CMPLim(IM, MD, MB, MI, MS) _ALULim(X86_CMP, IM, MD, MB, MI, MS) #define CMPQrr(RS, RD) _ALUQrr(X86_CMP, RS, RD) #define CMPQmr(MD, MB, MI, MS, RD) _ALUQmr(X86_CMP, MD, MB, MI, MS, RD) #define CMPQrm(RS, MD, MB, MI, MS) _ALUQrm(X86_CMP, RS, MD, MB, MI, MS) #define CMPQir(IM, RD) _ALUQir(X86_CMP, IM, RD) #define CMPQim(IM, MD, MB, MI, MS) _ALUQim(X86_CMP, IM, MD, MB, MI, MS) #define ORBrr(RS, RD) _ALUBrr(X86_OR, RS, RD) #define ORBmr(MD, MB, MI, MS, RD) _ALUBmr(X86_OR, MD, MB, MI, MS, RD) #define ORBrm(RS, MD, MB, MI, MS) _ALUBrm(X86_OR, RS, MD, MB, MI, MS) #define ORBir(IM, RD) _ALUBir(X86_OR, IM, RD) #define ORBim(IM, MD, MB, MI, MS) _ALUBim(X86_OR, IM, MD, MB, MI, MS) #define ORWrr(RS, RD) _ALUWrr(X86_OR, RS, RD) #define ORWmr(MD, MB, MI, MS, RD) _ALUWmr(X86_OR, MD, MB, MI, MS, RD) #define ORWrm(RS, MD, MB, MI, MS) _ALUWrm(X86_OR, RS, MD, MB, MI, MS) #define ORWir(IM, RD) _ALUWir(X86_OR, IM, RD) #define ORWim(IM, MD, MB, MI, MS) _ALUWim(X86_OR, IM, MD, MB, MI, MS) #define ORLrr(RS, RD) _ALULrr(X86_OR, RS, RD) #define ORLmr(MD, MB, MI, MS, RD) _ALULmr(X86_OR, MD, MB, MI, MS, RD) #define ORLrm(RS, MD, MB, MI, MS) _ALULrm(X86_OR, RS, MD, MB, MI, MS) #define ORLir(IM, RD) _ALULir(X86_OR, IM, RD) #define ORLim(IM, MD, MB, MI, MS) _ALULim(X86_OR, IM, MD, MB, MI, MS) #define ORQrr(RS, RD) _ALUQrr(X86_OR, RS, RD) #define ORQmr(MD, MB, MI, MS, RD) _ALUQmr(X86_OR, MD, MB, MI, MS, RD) #define ORQrm(RS, MD, MB, MI, MS) _ALUQrm(X86_OR, RS, MD, MB, MI, MS) #define ORQir(IM, RD) _ALUQir(X86_OR, IM, RD) #define ORQim(IM, MD, MB, MI, MS) _ALUQim(X86_OR, IM, MD, MB, MI, MS) #define SBBBrr(RS, RD) _ALUBrr(X86_SBB, RS, RD) #define SBBBmr(MD, MB, MI, MS, RD) _ALUBmr(X86_SBB, MD, MB, MI, MS, RD) #define SBBBrm(RS, MD, MB, MI, MS) _ALUBrm(X86_SBB, RS, MD, MB, MI, MS) #define SBBBir(IM, RD) _ALUBir(X86_SBB, IM, RD) #define SBBBim(IM, MD, MB, MI, MS) _ALUBim(X86_SBB, IM, MD, MB, MI, MS) #define SBBWrr(RS, RD) _ALUWrr(X86_SBB, RS, RD) #define SBBWmr(MD, MB, MI, MS, RD) _ALUWmr(X86_SBB, MD, MB, MI, MS, RD) #define SBBWrm(RS, MD, MB, MI, MS) _ALUWrm(X86_SBB, RS, MD, MB, MI, MS) #define SBBWir(IM, RD) _ALUWir(X86_SBB, IM, RD) #define SBBWim(IM, MD, MB, MI, MS) _ALUWim(X86_SBB, IM, MD, MB, MI, MS) #define SBBLrr(RS, RD) _ALULrr(X86_SBB, RS, RD) #define SBBLmr(MD, MB, MI, MS, RD) _ALULmr(X86_SBB, MD, MB, MI, MS, RD) #define SBBLrm(RS, MD, MB, MI, MS) _ALULrm(X86_SBB, RS, MD, MB, MI, MS) #define SBBLir(IM, RD) _ALULir(X86_SBB, IM, RD) #define SBBLim(IM, MD, MB, MI, MS) _ALULim(X86_SBB, IM, MD, MB, MI, MS) #define SBBQrr(RS, RD) _ALUQrr(X86_SBB, RS, RD) #define SBBQmr(MD, MB, MI, MS, RD) _ALUQmr(X86_SBB, MD, MB, MI, MS, RD) #define SBBQrm(RS, MD, MB, MI, MS) _ALUQrm(X86_SBB, RS, MD, MB, MI, MS) #define SBBQir(IM, RD) _ALUQir(X86_SBB, IM, RD) #define SBBQim(IM, MD, MB, MI, MS) _ALUQim(X86_SBB, IM, MD, MB, MI, MS) #define SUBBrr(RS, RD) _ALUBrr(X86_SUB, RS, RD) #define SUBBmr(MD, MB, MI, MS, RD) _ALUBmr(X86_SUB, MD, MB, MI, MS, RD) #define SUBBrm(RS, MD, MB, MI, MS) _ALUBrm(X86_SUB, RS, MD, MB, MI, MS) #define SUBBir(IM, RD) _ALUBir(X86_SUB, IM, RD) #define SUBBim(IM, MD, MB, MI, MS) _ALUBim(X86_SUB, IM, MD, MB, MI, MS) #define SUBWrr(RS, RD) _ALUWrr(X86_SUB, RS, RD) #define SUBWmr(MD, MB, MI, MS, RD) _ALUWmr(X86_SUB, MD, MB, MI, MS, RD) #define SUBWrm(RS, MD, MB, MI, MS) _ALUWrm(X86_SUB, RS, MD, MB, MI, MS) #define SUBWir(IM, RD) _ALUWir(X86_SUB, IM, RD) #define SUBWim(IM, MD, MB, MI, MS) _ALUWim(X86_SUB, IM, MD, MB, MI, MS) #define SUBLrr(RS, RD) _ALULrr(X86_SUB, RS, RD) #define SUBLmr(MD, MB, MI, MS, RD) _ALULmr(X86_SUB, MD, MB, MI, MS, RD) #define SUBLrm(RS, MD, MB, MI, MS) _ALULrm(X86_SUB, RS, MD, MB, MI, MS) #define SUBLir(IM, RD) _ALULir(X86_SUB, IM, RD) #define SUBLim(IM, MD, MB, MI, MS) _ALULim(X86_SUB, IM, MD, MB, MI, MS) #define SUBQrr(RS, RD) _ALUQrr(X86_SUB, RS, RD) #define SUBQmr(MD, MB, MI, MS, RD) _ALUQmr(X86_SUB, MD, MB, MI, MS, RD) #define SUBQrm(RS, MD, MB, MI, MS) _ALUQrm(X86_SUB, RS, MD, MB, MI, MS) #define SUBQir(IM, RD) _ALUQir(X86_SUB, IM, RD) #define SUBQim(IM, MD, MB, MI, MS) _ALUQim(X86_SUB, IM, MD, MB, MI, MS) #define XORBrr(RS, RD) _ALUBrr(X86_XOR, RS, RD) #define XORBmr(MD, MB, MI, MS, RD) _ALUBmr(X86_XOR, MD, MB, MI, MS, RD) #define XORBrm(RS, MD, MB, MI, MS) _ALUBrm(X86_XOR, RS, MD, MB, MI, MS) #define XORBir(IM, RD) _ALUBir(X86_XOR, IM, RD) #define XORBim(IM, MD, MB, MI, MS) _ALUBim(X86_XOR, IM, MD, MB, MI, MS) #define XORWrr(RS, RD) _ALUWrr(X86_XOR, RS, RD) #define XORWmr(MD, MB, MI, MS, RD) _ALUWmr(X86_XOR, MD, MB, MI, MS, RD) #define XORWrm(RS, MD, MB, MI, MS) _ALUWrm(X86_XOR, RS, MD, MB, MI, MS) #define XORWir(IM, RD) _ALUWir(X86_XOR, IM, RD) #define XORWim(IM, MD, MB, MI, MS) _ALUWim(X86_XOR, IM, MD, MB, MI, MS) #define XORLrr(RS, RD) _ALULrr(X86_XOR, RS, RD) #define XORLmr(MD, MB, MI, MS, RD) _ALULmr(X86_XOR, MD, MB, MI, MS, RD) #define XORLrm(RS, MD, MB, MI, MS) _ALULrm(X86_XOR, RS, MD, MB, MI, MS) #define XORLir(IM, RD) _ALULir(X86_XOR, IM, RD) #define XORLim(IM, MD, MB, MI, MS) _ALULim(X86_XOR, IM, MD, MB, MI, MS) #define XORQrr(RS, RD) _ALUQrr(X86_XOR, RS, RD) #define XORQmr(MD, MB, MI, MS, RD) _ALUQmr(X86_XOR, MD, MB, MI, MS, RD) #define XORQrm(RS, MD, MB, MI, MS) _ALUQrm(X86_XOR, RS, MD, MB, MI, MS) #define XORQir(IM, RD) _ALUQir(X86_XOR, IM, RD) #define XORQim(IM, MD, MB, MI, MS) _ALUQim(X86_XOR, IM, MD, MB, MI, MS) /* --- Shift/Rotate instructions ------------------------------------------- */ enum { X86_ROL = 0, X86_ROR = 1, X86_RCL = 2, X86_RCR = 3, X86_SHL = 4, X86_SHR = 5, X86_SAR = 7, }; /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define _ROTSHIBir(OP,IM,RD) (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \ (_REXBrr(0, RD), _O_Mrm (0xd0 ,_b11,OP,_r1(RD) )) : \ (_REXBrr(0, RD), _O_Mrm_B (0xc0 ,_b11,OP,_r1(RD) ,_u8(IM))) ) #define _ROTSHIBim(OP,IM,MD,MB,MI,MS) (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \ (_REXBrm(0, MB, MI), _O_r_X (0xd0 ,OP ,MD,MB,MI,MS )) : \ (_REXBrm(0, MB, MI), _O_r_X_B (0xc0 ,OP ,MD,MB,MI,MS ,_u8(IM))) ) #define _ROTSHIBrr(OP,RS,RD) (((RS) == X86_CL) ? \ (_REXBrr(RS, RD), _O_Mrm (0xd2 ,_b11,OP,_r1(RD) )) : \ x86_emit_failure("source register must be CL" ) ) #define _ROTSHIBrm(OP,RS,MD,MB,MI,MS) (((RS) == X86_CL) ? \ (_REXBrm(RS, MB, MI), _O_r_X (0xd2 ,OP ,MD,MB,MI,MS )) : \ x86_emit_failure("source register must be CL" ) ) #define _ROTSHIWir(OP,IM,RD) (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \ (_d16(), _REXLrr(0, RD), _O_Mrm (0xd1 ,_b11,OP,_r2(RD) )) : \ (_d16(), _REXLrr(0, RD), _O_Mrm_B (0xc1 ,_b11,OP,_r2(RD) ,_u8(IM))) ) #define _ROTSHIWim(OP,IM,MD,MB,MI,MS) (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \ (_d16(), _REXLrm(0, MB, MI), _O_r_X (0xd1 ,OP ,MD,MB,MI,MS )) : \ (_d16(), _REXLrm(0, MB, MI), _O_r_X_B (0xc1 ,OP ,MD,MB,MI,MS ,_u8(IM))) ) #define _ROTSHIWrr(OP,RS,RD) (((RS) == X86_CL) ? \ (_d16(), _REXLrr(RS, RD), _O_Mrm (0xd3 ,_b11,OP,_r2(RD) )) : \ x86_emit_failure("source register must be CL" ) ) #define _ROTSHIWrm(OP,RS,MD,MB,MI,MS) (((RS) == X86_CL) ? \ (_d16(), _REXLrm(RS, MB, MI), _O_r_X (0xd3 ,OP ,MD,MB,MI,MS )) : \ x86_emit_failure("source register must be CL" ) ) #define _ROTSHILir(OP,IM,RD) (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \ (_REXLrr(0, RD), _O_Mrm (0xd1 ,_b11,OP,_r4(RD) )) : \ (_REXLrr(0, RD), _O_Mrm_B (0xc1 ,_b11,OP,_r4(RD) ,_u8(IM))) ) #define _ROTSHILim(OP,IM,MD,MB,MI,MS) (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \ (_REXLrm(0, MB, MI), _O_r_X (0xd1 ,OP ,MD,MB,MI,MS )) : \ (_REXLrm(0, MB, MI), _O_r_X_B (0xc1 ,OP ,MD,MB,MI,MS ,_u8(IM))) ) #define _ROTSHILrr(OP,RS,RD) (((RS) == X86_CL) ? \ (_REXLrr(RS, RD), _O_Mrm (0xd3 ,_b11,OP,_r4(RD) )) : \ x86_emit_failure("source register must be CL" ) ) #define _ROTSHILrm(OP,RS,MD,MB,MI,MS) (((RS) == X86_CL) ? \ (_REXLrm(RS, MB, MI), _O_r_X (0xd3 ,OP ,MD,MB,MI,MS )) : \ x86_emit_failure("source register must be CL" ) ) #define _ROTSHIQir(OP,IM,RD) (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \ (_REXQrr(0, RD), _O_Mrm (0xd1 ,_b11,OP,_r8(RD) )) : \ (_REXQrr(0, RD), _O_Mrm_B (0xc1 ,_b11,OP,_r8(RD) ,_u8(IM))) ) #define _ROTSHIQim(OP,IM,MD,MB,MI,MS) (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \ (_REXQrm(0, MB, MI), _O_r_X (0xd1 ,OP ,MD,MB,MI,MS )) : \ (_REXQrm(0, MB, MI), _O_r_X_B (0xc1 ,OP ,MD,MB,MI,MS ,_u8(IM))) ) #define _ROTSHIQrr(OP,RS,RD) (((RS) == X86_CL) ? \ (_REXQrr(RS, RD), _O_Mrm (0xd3 ,_b11,OP,_r8(RD) )) : \ x86_emit_failure("source register must be CL" ) ) #define _ROTSHIQrm(OP,RS,MD,MB,MI,MS) (((RS) == X86_CL) ? \ (_REXQrm(RS, MB, MI), _O_r_X (0xd3 ,OP ,MD,MB,MI,MS )) : \ x86_emit_failure("source register must be CL" ) ) #define ROLBir(IM, RD) _ROTSHIBir(X86_ROL, IM, RD) #define ROLBim(IM, MD, MB, MI, MS) _ROTSHIBim(X86_ROL, IM, MD, MB, MI, MS) #define ROLBrr(RS, RD) _ROTSHIBrr(X86_ROL, RS, RD) #define ROLBrm(RS, MD, MB, MI, MS) _ROTSHIBrm(X86_ROL, RS, MD, MB, MI, MS) #define ROLWir(IM, RD) _ROTSHIWir(X86_ROL, IM, RD) #define ROLWim(IM, MD, MB, MI, MS) _ROTSHIWim(X86_ROL, IM, MD, MB, MI, MS) #define ROLWrr(RS, RD) _ROTSHIWrr(X86_ROL, RS, RD) #define ROLWrm(RS, MD, MB, MI, MS) _ROTSHIWrm(X86_ROL, RS, MD, MB, MI, MS) #define ROLLir(IM, RD) _ROTSHILir(X86_ROL, IM, RD) #define ROLLim(IM, MD, MB, MI, MS) _ROTSHILim(X86_ROL, IM, MD, MB, MI, MS) #define ROLLrr(RS, RD) _ROTSHILrr(X86_ROL, RS, RD) #define ROLLrm(RS, MD, MB, MI, MS) _ROTSHILrm(X86_ROL, RS, MD, MB, MI, MS) #define ROLQir(IM, RD) _ROTSHIQir(X86_ROL, IM, RD) #define ROLQim(IM, MD, MB, MI, MS) _ROTSHIQim(X86_ROL, IM, MD, MB, MI, MS) #define ROLQrr(RS, RD) _ROTSHIQrr(X86_ROL, RS, RD) #define ROLQrm(RS, MD, MB, MI, MS) _ROTSHIQrm(X86_ROL, RS, MD, MB, MI, MS) #define RORBir(IM, RD) _ROTSHIBir(X86_ROR, IM, RD) #define RORBim(IM, MD, MB, MI, MS) _ROTSHIBim(X86_ROR, IM, MD, MB, MI, MS) #define RORBrr(RS, RD) _ROTSHIBrr(X86_ROR, RS, RD) #define RORBrm(RS, MD, MB, MI, MS) _ROTSHIBrm(X86_ROR, RS, MD, MB, MI, MS) #define RORWir(IM, RD) _ROTSHIWir(X86_ROR, IM, RD) #define RORWim(IM, MD, MB, MI, MS) _ROTSHIWim(X86_ROR, IM, MD, MB, MI, MS) #define RORWrr(RS, RD) _ROTSHIWrr(X86_ROR, RS, RD) #define RORWrm(RS, MD, MB, MI, MS) _ROTSHIWrm(X86_ROR, RS, MD, MB, MI, MS) #define RORLir(IM, RD) _ROTSHILir(X86_ROR, IM, RD) #define RORLim(IM, MD, MB, MI, MS) _ROTSHILim(X86_ROR, IM, MD, MB, MI, MS) #define RORLrr(RS, RD) _ROTSHILrr(X86_ROR, RS, RD) #define RORLrm(RS, MD, MB, MI, MS) _ROTSHILrm(X86_ROR, RS, MD, MB, MI, MS) #define RORQir(IM, RD) _ROTSHIQir(X86_ROR, IM, RD) #define RORQim(IM, MD, MB, MI, MS) _ROTSHIQim(X86_ROR, IM, MD, MB, MI, MS) #define RORQrr(RS, RD) _ROTSHIQrr(X86_ROR, RS, RD) #define RORQrm(RS, MD, MB, MI, MS) _ROTSHIQrm(X86_ROR, RS, MD, MB, MI, MS) #define RCLBir(IM, RD) _ROTSHIBir(X86_RCL, IM, RD) #define RCLBim(IM, MD, MB, MI, MS) _ROTSHIBim(X86_RCL, IM, MD, MB, MI, MS) #define RCLBrr(RS, RD) _ROTSHIBrr(X86_RCL, RS, RD) #define RCLBrm(RS, MD, MB, MI, MS) _ROTSHIBrm(X86_RCL, RS, MD, MB, MI, MS) #define RCLWir(IM, RD) _ROTSHIWir(X86_RCL, IM, RD) #define RCLWim(IM, MD, MB, MI, MS) _ROTSHIWim(X86_RCL, IM, MD, MB, MI, MS) #define RCLWrr(RS, RD) _ROTSHIWrr(X86_RCL, RS, RD) #define RCLWrm(RS, MD, MB, MI, MS) _ROTSHIWrm(X86_RCL, RS, MD, MB, MI, MS) #define RCLLir(IM, RD) _ROTSHILir(X86_RCL, IM, RD) #define RCLLim(IM, MD, MB, MI, MS) _ROTSHILim(X86_RCL, IM, MD, MB, MI, MS) #define RCLLrr(RS, RD) _ROTSHILrr(X86_RCL, RS, RD) #define RCLLrm(RS, MD, MB, MI, MS) _ROTSHILrm(X86_RCL, RS, MD, MB, MI, MS) #define RCLQir(IM, RD) _ROTSHIQir(X86_RCL, IM, RD) #define RCLQim(IM, MD, MB, MI, MS) _ROTSHIQim(X86_RCL, IM, MD, MB, MI, MS) #define RCLQrr(RS, RD) _ROTSHIQrr(X86_RCL, RS, RD) #define RCLQrm(RS, MD, MB, MI, MS) _ROTSHIQrm(X86_RCL, RS, MD, MB, MI, MS) #define RCRBir(IM, RD) _ROTSHIBir(X86_RCR, IM, RD) #define RCRBim(IM, MD, MB, MI, MS) _ROTSHIBim(X86_RCR, IM, MD, MB, MI, MS) #define RCRBrr(RS, RD) _ROTSHIBrr(X86_RCR, RS, RD) #define RCRBrm(RS, MD, MB, MI, MS) _ROTSHIBrm(X86_RCR, RS, MD, MB, MI, MS) #define RCRWir(IM, RD) _ROTSHIWir(X86_RCR, IM, RD) #define RCRWim(IM, MD, MB, MI, MS) _ROTSHIWim(X86_RCR, IM, MD, MB, MI, MS) #define RCRWrr(RS, RD) _ROTSHIWrr(X86_RCR, RS, RD) #define RCRWrm(RS, MD, MB, MI, MS) _ROTSHIWrm(X86_RCR, RS, MD, MB, MI, MS) #define RCRLir(IM, RD) _ROTSHILir(X86_RCR, IM, RD) #define RCRLim(IM, MD, MB, MI, MS) _ROTSHILim(X86_RCR, IM, MD, MB, MI, MS) #define RCRLrr(RS, RD) _ROTSHILrr(X86_RCR, RS, RD) #define RCRLrm(RS, MD, MB, MI, MS) _ROTSHILrm(X86_RCR, RS, MD, MB, MI, MS) #define RCRQir(IM, RD) _ROTSHIQir(X86_RCR, IM, RD) #define RCRQim(IM, MD, MB, MI, MS) _ROTSHIQim(X86_RCR, IM, MD, MB, MI, MS) #define RCRQrr(RS, RD) _ROTSHIQrr(X86_RCR, RS, RD) #define RCRQrm(RS, MD, MB, MI, MS) _ROTSHIQrm(X86_RCR, RS, MD, MB, MI, MS) #define SHLBir(IM, RD) _ROTSHIBir(X86_SHL, IM, RD) #define SHLBim(IM, MD, MB, MI, MS) _ROTSHIBim(X86_SHL, IM, MD, MB, MI, MS) #define SHLBrr(RS, RD) _ROTSHIBrr(X86_SHL, RS, RD) #define SHLBrm(RS, MD, MB, MI, MS) _ROTSHIBrm(X86_SHL, RS, MD, MB, MI, MS) #define SHLWir(IM, RD) _ROTSHIWir(X86_SHL, IM, RD) #define SHLWim(IM, MD, MB, MI, MS) _ROTSHIWim(X86_SHL, IM, MD, MB, MI, MS) #define SHLWrr(RS, RD) _ROTSHIWrr(X86_SHL, RS, RD) #define SHLWrm(RS, MD, MB, MI, MS) _ROTSHIWrm(X86_SHL, RS, MD, MB, MI, MS) #define SHLLir(IM, RD) _ROTSHILir(X86_SHL, IM, RD) #define SHLLim(IM, MD, MB, MI, MS) _ROTSHILim(X86_SHL, IM, MD, MB, MI, MS) #define SHLLrr(RS, RD) _ROTSHILrr(X86_SHL, RS, RD) #define SHLLrm(RS, MD, MB, MI, MS) _ROTSHILrm(X86_SHL, RS, MD, MB, MI, MS) #define SHLQir(IM, RD) _ROTSHIQir(X86_SHL, IM, RD) #define SHLQim(IM, MD, MB, MI, MS) _ROTSHIQim(X86_SHL, IM, MD, MB, MI, MS) #define SHLQrr(RS, RD) _ROTSHIQrr(X86_SHL, RS, RD) #define SHLQrm(RS, MD, MB, MI, MS) _ROTSHIQrm(X86_SHL, RS, MD, MB, MI, MS) #define SHRBir(IM, RD) _ROTSHIBir(X86_SHR, IM, RD) #define SHRBim(IM, MD, MB, MI, MS) _ROTSHIBim(X86_SHR, IM, MD, MB, MI, MS) #define SHRBrr(RS, RD) _ROTSHIBrr(X86_SHR, RS, RD) #define SHRBrm(RS, MD, MB, MI, MS) _ROTSHIBrm(X86_SHR, RS, MD, MB, MI, MS) #define SHRWir(IM, RD) _ROTSHIWir(X86_SHR, IM, RD) #define SHRWim(IM, MD, MB, MI, MS) _ROTSHIWim(X86_SHR, IM, MD, MB, MI, MS) #define SHRWrr(RS, RD) _ROTSHIWrr(X86_SHR, RS, RD) #define SHRWrm(RS, MD, MB, MI, MS) _ROTSHIWrm(X86_SHR, RS, MD, MB, MI, MS) #define SHRLir(IM, RD) _ROTSHILir(X86_SHR, IM, RD) #define SHRLim(IM, MD, MB, MI, MS) _ROTSHILim(X86_SHR, IM, MD, MB, MI, MS) #define SHRLrr(RS, RD) _ROTSHILrr(X86_SHR, RS, RD) #define SHRLrm(RS, MD, MB, MI, MS) _ROTSHILrm(X86_SHR, RS, MD, MB, MI, MS) #define SHRQir(IM, RD) _ROTSHIQir(X86_SHR, IM, RD) #define SHRQim(IM, MD, MB, MI, MS) _ROTSHIQim(X86_SHR, IM, MD, MB, MI, MS) #define SHRQrr(RS, RD) _ROTSHIQrr(X86_SHR, RS, RD) #define SHRQrm(RS, MD, MB, MI, MS) _ROTSHIQrm(X86_SHR, RS, MD, MB, MI, MS) #define SALBir SHLBir #define SALBim SHLBim #define SALBrr SHLBrr #define SALBrm SHLBrm #define SALWir SHLWir #define SALWim SHLWim #define SALWrr SHLWrr #define SALWrm SHLWrm #define SALLir SHLLir #define SALLim SHLLim #define SALLrr SHLLrr #define SALLrm SHLLrm #define SALQir SHLQir #define SALQim SHLQim #define SALQrr SHLQrr #define SALQrm SHLQrm #define SARBir(IM, RD) _ROTSHIBir(X86_SAR, IM, RD) #define SARBim(IM, MD, MB, MI, MS) _ROTSHIBim(X86_SAR, IM, MD, MB, MI, MS) #define SARBrr(RS, RD) _ROTSHIBrr(X86_SAR, RS, RD) #define SARBrm(RS, MD, MB, MI, MS) _ROTSHIBrm(X86_SAR, RS, MD, MB, MI, MS) #define SARWir(IM, RD) _ROTSHIWir(X86_SAR, IM, RD) #define SARWim(IM, MD, MB, MI, MS) _ROTSHIWim(X86_SAR, IM, MD, MB, MI, MS) #define SARWrr(RS, RD) _ROTSHIWrr(X86_SAR, RS, RD) #define SARWrm(RS, MD, MB, MI, MS) _ROTSHIWrm(X86_SAR, RS, MD, MB, MI, MS) #define SARLir(IM, RD) _ROTSHILir(X86_SAR, IM, RD) #define SARLim(IM, MD, MB, MI, MS) _ROTSHILim(X86_SAR, IM, MD, MB, MI, MS) #define SARLrr(RS, RD) _ROTSHILrr(X86_SAR, RS, RD) #define SARLrm(RS, MD, MB, MI, MS) _ROTSHILrm(X86_SAR, RS, MD, MB, MI, MS) #define SARQir(IM, RD) _ROTSHIQir(X86_SAR, IM, RD) #define SARQim(IM, MD, MB, MI, MS) _ROTSHIQim(X86_SAR, IM, MD, MB, MI, MS) #define SARQrr(RS, RD) _ROTSHIQrr(X86_SAR, RS, RD) #define SARQrm(RS, MD, MB, MI, MS) _ROTSHIQrm(X86_SAR, RS, MD, MB, MI, MS) /* --- Bit test instructions ----------------------------------------------- */ enum { X86_BT = 4, X86_BTS = 5, X86_BTR = 6, X86_BTC = 7, }; /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define _BTWir(OP, IM, RD) (_d16(), _REXLrr(0, RD), _OO_Mrm_B (0x0fba ,_b11,OP ,_r2(RD) ,_u8(IM))) #define _BTWim(OP, IM, MD, MB, MI, MS) (_d16(), _REXLrm(0, MB, MI), _OO_r_X_B (0x0fba ,OP ,MD,MB,MI,MS ,_u8(IM))) #define _BTWrr(OP, RS, RD) (_d16(), _REXLrr(RS, RD), _OO_Mrm (0x0f83|((OP)<<3),_b11,_r2(RS),_r2(RD) )) #define _BTWrm(OP, RS, MD, MB, MI, MS) (_d16(), _REXLrm(RS, MB, MI), _OO_r_X (0x0f83|((OP)<<3) ,_r2(RS) ,MD,MB,MI,MS )) #define _BTLir(OP, IM, RD) (_REXLrr(0, RD), _OO_Mrm_B (0x0fba ,_b11,OP ,_r4(RD) ,_u8(IM))) #define _BTLim(OP, IM, MD, MB, MI, MS) (_REXLrm(0, MB, MI), _OO_r_X_B (0x0fba ,OP ,MD,MB,MI,MS ,_u8(IM))) #define _BTLrr(OP, RS, RD) (_REXLrr(RS, RD), _OO_Mrm (0x0f83|((OP)<<3),_b11,_r4(RS),_r4(RD) )) #define _BTLrm(OP, RS, MD, MB, MI, MS) (_REXLrm(RS, MB, MI), _OO_r_X (0x0f83|((OP)<<3) ,_r4(RS) ,MD,MB,MI,MS )) #define _BTQir(OP, IM, RD) (_REXQrr(0, RD), _OO_Mrm_B (0x0fba ,_b11,OP ,_r8(RD) ,_u8(IM))) #define _BTQim(OP, IM, MD, MB, MI, MS) (_REXQrm(0, MB, MI), _OO_r_X_B (0x0fba ,OP ,MD,MB,MI,MS ,_u8(IM))) #define _BTQrr(OP, RS, RD) (_REXQrr(RS, RD), _OO_Mrm (0x0f83|((OP)<<3),_b11,_r8(RS),_r8(RD) )) #define _BTQrm(OP, RS, MD, MB, MI, MS) (_REXQrm(RS, MB, MI), _OO_r_X (0x0f83|((OP)<<3) ,_r8(RS) ,MD,MB,MI,MS )) #define BTWir(IM, RD) _BTWir(X86_BT, IM, RD) #define BTWim(IM, MD, MB, MI, MS) _BTWim(X86_BT, IM, MD, MI, MS) #define BTWrr(RS, RD) _BTWrr(X86_BT, RS, RD) #define BTWrm(RS, MD, MB, MI, MS) _BTWrm(X86_BT, RS, MD, MB, MI, MS) #define BTLir(IM, RD) _BTLir(X86_BT, IM, RD) #define BTLim(IM, MD, MB, MI, MS) _BTLim(X86_BT, IM, MD, MB, MI, MS) #define BTLrr(RS, RD) _BTLrr(X86_BT, RS, RD) #define BTLrm(RS, MD, MB, MI, MS) _BTLrm(X86_BT, RS, MD, MB, MI, MS) #define BTQir(IM, RD) _BTQir(X86_BT, IM, RD) #define BTQim(IM, MD, MB, MI, MS) _BTQim(X86_BT, IM, MD, MB, MI, MS) #define BTQrr(RS, RD) _BTQrr(X86_BT, RS, RD) #define BTQrm(RS, MD, MB, MI, MS) _BTQrm(X86_BT, RS, MD, MB, MI, MS) #define BTCWir(IM, RD) _BTWir(X86_BTC, IM, RD) #define BTCWim(IM, MD, MB, MI, MS) _BTWim(X86_BTC, IM, MD, MI, MS) #define BTCWrr(RS, RD) _BTWrr(X86_BTC, RS, RD) #define BTCWrm(RS, MD, MB, MI, MS) _BTWrm(X86_BTC, RS, MD, MB, MI, MS) #define BTCLir(IM, RD) _BTLir(X86_BTC, IM, RD) #define BTCLim(IM, MD, MB, MI, MS) _BTLim(X86_BTC, IM, MD, MB, MI, MS) #define BTCLrr(RS, RD) _BTLrr(X86_BTC, RS, RD) #define BTCLrm(RS, MD, MB, MI, MS) _BTLrm(X86_BTC, RS, MD, MB, MI, MS) #define BTCQir(IM, RD) _BTQir(X86_BTC, IM, RD) #define BTCQim(IM, MD, MB, MI, MS) _BTQim(X86_BTC, IM, MD, MB, MI, MS) #define BTCQrr(RS, RD) _BTQrr(X86_BTC, RS, RD) #define BTCQrm(RS, MD, MB, MI, MS) _BTQrm(X86_BTC, RS, MD, MB, MI, MS) #define BTRWir(IM, RD) _BTWir(X86_BTR, IM, RD) #define BTRWim(IM, MD, MB, MI, MS) _BTWim(X86_BTR, IM, MD, MI, MS) #define BTRWrr(RS, RD) _BTWrr(X86_BTR, RS, RD) #define BTRWrm(RS, MD, MB, MI, MS) _BTWrm(X86_BTR, RS, MD, MB, MI, MS) #define BTRLir(IM, RD) _BTLir(X86_BTR, IM, RD) #define BTRLim(IM, MD, MB, MI, MS) _BTLim(X86_BTR, IM, MD, MB, MI, MS) #define BTRLrr(RS, RD) _BTLrr(X86_BTR, RS, RD) #define BTRLrm(RS, MD, MB, MI, MS) _BTLrm(X86_BTR, RS, MD, MB, MI, MS) #define BTRQir(IM, RD) _BTQir(X86_BTR, IM, RD) #define BTRQim(IM, MD, MB, MI, MS) _BTQim(X86_BTR, IM, MD, MB, MI, MS) #define BTRQrr(RS, RD) _BTQrr(X86_BTR, RS, RD) #define BTRQrm(RS, MD, MB, MI, MS) _BTQrm(X86_BTR, RS, MD, MB, MI, MS) #define BTSWir(IM, RD) _BTWir(X86_BTS, IM, RD) #define BTSWim(IM, MD, MB, MI, MS) _BTWim(X86_BTS, IM, MD, MI, MS) #define BTSWrr(RS, RD) _BTWrr(X86_BTS, RS, RD) #define BTSWrm(RS, MD, MB, MI, MS) _BTWrm(X86_BTS, RS, MD, MB, MI, MS) #define BTSLir(IM, RD) _BTLir(X86_BTS, IM, RD) #define BTSLim(IM, MD, MB, MI, MS) _BTLim(X86_BTS, IM, MD, MB, MI, MS) #define BTSLrr(RS, RD) _BTLrr(X86_BTS, RS, RD) #define BTSLrm(RS, MD, MB, MI, MS) _BTLrm(X86_BTS, RS, MD, MB, MI, MS) #define BTSQir(IM, RD) _BTQir(X86_BTS, IM, RD) #define BTSQim(IM, MD, MB, MI, MS) _BTQim(X86_BTS, IM, MD, MB, MI, MS) #define BTSQrr(RS, RD) _BTQrr(X86_BTS, RS, RD) #define BTSQrm(RS, MD, MB, MI, MS) _BTQrm(X86_BTS, RS, MD, MB, MI, MS) /* --- Move instructions --------------------------------------------------- */ /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define MOVBrr(RS, RD) (_REXBrr(RS, RD), _O_Mrm (0x88 ,_b11,_r1(RS),_r1(RD) )) #define MOVBmr(MD, MB, MI, MS, RD) (_REXBmr(MB, MI, RD), _O_r_X (0x8a ,_r1(RD) ,MD,MB,MI,MS )) #define MOVBrm(RS, MD, MB, MI, MS) (_REXBrm(RS, MB, MI), _O_r_X (0x88 ,_r1(RS) ,MD,MB,MI,MS )) #define MOVBir(IM, R) (_REXBrr(0, R), _Or_B (0xb0,_r1(R) ,_su8(IM))) #define MOVBim(IM, MD, MB, MI, MS) (_REXBrm(0, MB, MI), _O_X_B (0xc6 ,MD,MB,MI,MS ,_su8(IM))) #define MOVWrr(RS, RD) (_d16(), _REXLrr(RS, RD), _O_Mrm (0x89 ,_b11,_r2(RS),_r2(RD) )) #define MOVWmr(MD, MB, MI, MS, RD) (_d16(), _REXLmr(MB, MI, RD), _O_r_X (0x8b ,_r2(RD) ,MD,MB,MI,MS )) #define MOVWrm(RS, MD, MB, MI, MS) (_d16(), _REXLrm(RS, MB, MI), _O_r_X (0x89 ,_r2(RS) ,MD,MB,MI,MS )) #define MOVWir(IM, R) (_d16(), _REXLrr(0, R), _Or_W (0xb8,_r2(R) ,_su16(IM))) #define MOVWim(IM, MD, MB, MI, MS) (_d16(), _REXLrm(0, MB, MI), _O_X_W (0xc7 ,MD,MB,MI,MS ,_su16(IM))) #define MOVLrr(RS, RD) (_REXLrr(RS, RD), _O_Mrm (0x89 ,_b11,_r4(RS),_r4(RD) )) #define MOVLmr(MD, MB, MI, MS, RD) (_REXLmr(MB, MI, RD), _O_r_X (0x8b ,_r4(RD) ,MD,MB,MI,MS )) #define MOVLrm(RS, MD, MB, MI, MS) (_REXLrm(RS, MB, MI), _O_r_X (0x89 ,_r4(RS) ,MD,MB,MI,MS )) #define MOVLir(IM, R) (_REXLrr(0, R), _Or_L (0xb8,_r4(R) ,IM )) #define MOVLim(IM, MD, MB, MI, MS) (_REXLrm(0, MB, MI), _O_X_L (0xc7 ,MD,MB,MI,MS ,IM )) #define MOVQrr(RS, RD) (_REXQrr(RS, RD), _O_Mrm (0x89 ,_b11,_r8(RS),_r8(RD) )) #define MOVQmr(MD, MB, MI, MS, RD) (_REXQmr(MB, MI, RD), _O_r_X (0x8b ,_r8(RD) ,MD,MB,MI,MS )) #define MOVQrm(RS, MD, MB, MI, MS) (_REXQrm(RS, MB, MI), _O_r_X (0x89 ,_r8(RS) ,MD,MB,MI,MS )) #define MOVQir(IM, R) (_REXQrr(0, R), _Or_Q (0xb8,_r8(R) ,IM )) #define MOVQim(IM, MD, MB, MI, MS) (_REXQrm(0, MB, MI), _O_X_L (0xc7 ,MD,MB,MI,MS ,IM )) /* --- Unary and Multiply/Divide instructions ------------------------------ */ enum { X86_NOT = 2, X86_NEG = 3, X86_MUL = 4, X86_IMUL = 5, X86_DIV = 6, X86_IDIV = 7, }; /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define _UNARYBr(OP, RS) (_REXBrr(0, RS), _O_Mrm (0xf6 ,_b11,OP ,_r1(RS) )) #define _UNARYBm(OP, MD, MB, MI, MS) (_REXBrm(0, MB, MI), _O_r_X (0xf6 ,OP ,MD,MB,MI,MS )) #define _UNARYWr(OP, RS) (_d16(), _REXLrr(0, RS), _O_Mrm (0xf7 ,_b11,OP ,_r2(RS) )) #define _UNARYWm(OP, MD, MB, MI, MS) (_d16(), _REXLmr(MB, MI, 0), _O_r_X (0xf7 ,OP ,MD,MB,MI,MS )) #define _UNARYLr(OP, RS) (_REXLrr(0, RS), _O_Mrm (0xf7 ,_b11,OP ,_r4(RS) )) #define _UNARYLm(OP, MD, MB, MI, MS) (_REXLmr(MB, MI, 0), _O_r_X (0xf7 ,OP ,MD,MB,MI,MS )) #define _UNARYQr(OP, RS) (_REXQrr(0, RS), _O_Mrm (0xf7 ,_b11,OP ,_r8(RS) )) #define _UNARYQm(OP, MD, MB, MI, MS) (_REXQmr(MB, MI, 0), _O_r_X (0xf7 ,OP ,MD,MB,MI,MS )) #define NOTBr(RS) _UNARYBr(X86_NOT, RS) #define NOTBm(MD, MB, MI, MS) _UNARYBm(X86_NOT, MD, MB, MI, MS) #define NOTWr(RS) _UNARYWr(X86_NOT, RS) #define NOTWm(MD, MB, MI, MS) _UNARYWm(X86_NOT, MD, MB, MI, MS) #define NOTLr(RS) _UNARYLr(X86_NOT, RS) #define NOTLm(MD, MB, MI, MS) _UNARYLm(X86_NOT, MD, MB, MI, MS) #define NOTQr(RS) _UNARYQr(X86_NOT, RS) #define NOTQm(MD, MB, MI, MS) _UNARYQm(X86_NOT, MD, MB, MI, MS) #define NEGBr(RS) _UNARYBr(X86_NEG, RS) #define NEGBm(MD, MB, MI, MS) _UNARYBm(X86_NEG, MD, MB, MI, MS) #define NEGWr(RS) _UNARYWr(X86_NEG, RS) #define NEGWm(MD, MB, MI, MS) _UNARYWm(X86_NEG, MD, MB, MI, MS) #define NEGLr(RS) _UNARYLr(X86_NEG, RS) #define NEGLm(MD, MB, MI, MS) _UNARYLm(X86_NEG, MD, MB, MI, MS) #define NEGQr(RS) _UNARYQr(X86_NEG, RS) #define NEGQm(MD, MB, MI, MS) _UNARYQm(X86_NEG, MD, MB, MI, MS) #define MULBr(RS) _UNARYBr(X86_MUL, RS) #define MULBm(MD, MB, MI, MS) _UNARYBm(X86_MUL, MD, MB, MI, MS) #define MULWr(RS) _UNARYWr(X86_MUL, RS) #define MULWm(MD, MB, MI, MS) _UNARYWm(X86_MUL, MD, MB, MI, MS) #define MULLr(RS) _UNARYLr(X86_MUL, RS) #define MULLm(MD, MB, MI, MS) _UNARYLm(X86_MUL, MD, MB, MI, MS) #define MULQr(RS) _UNARYQr(X86_MUL, RS) #define MULQm(MD, MB, MI, MS) _UNARYQm(X86_MUL, MD, MB, MI, MS) #define IMULBr(RS) _UNARYBr(X86_IMUL, RS) #define IMULBm(MD, MB, MI, MS) _UNARYBm(X86_IMUL, MD, MB, MI, MS) #define IMULWr(RS) _UNARYWr(X86_IMUL, RS) #define IMULWm(MD, MB, MI, MS) _UNARYWm(X86_IMUL, MD, MB, MI, MS) #define IMULLr(RS) _UNARYLr(X86_IMUL, RS) #define IMULLm(MD, MB, MI, MS) _UNARYLm(X86_IMUL, MD, MB, MI, MS) #define IMULQr(RS) _UNARYQr(X86_IMUL, RS) #define IMULQm(MD, MB, MI, MS) _UNARYQm(X86_IMUL, MD, MB, MI, MS) #define DIVBr(RS) _UNARYBr(X86_DIV, RS) #define DIVBm(MD, MB, MI, MS) _UNARYBm(X86_DIV, MD, MB, MI, MS) #define DIVWr(RS) _UNARYWr(X86_DIV, RS) #define DIVWm(MD, MB, MI, MS) _UNARYWm(X86_DIV, MD, MB, MI, MS) #define DIVLr(RS) _UNARYLr(X86_DIV, RS) #define DIVLm(MD, MB, MI, MS) _UNARYLm(X86_DIV, MD, MB, MI, MS) #define DIVQr(RS) _UNARYQr(X86_DIV, RS) #define DIVQm(MD, MB, MI, MS) _UNARYQm(X86_DIV, MD, MB, MI, MS) #define IDIVBr(RS) _UNARYBr(X86_IDIV, RS) #define IDIVBm(MD, MB, MI, MS) _UNARYBm(X86_IDIV, MD, MB, MI, MS) #define IDIVWr(RS) _UNARYWr(X86_IDIV, RS) #define IDIVWm(MD, MB, MI, MS) _UNARYWm(X86_IDIV, MD, MB, MI, MS) #define IDIVLr(RS) _UNARYLr(X86_IDIV, RS) #define IDIVLm(MD, MB, MI, MS) _UNARYLm(X86_IDIV, MD, MB, MI, MS) #define IDIVQr(RS) _UNARYQr(X86_IDIV, RS) #define IDIVQm(MD, MB, MI, MS) _UNARYQm(X86_IDIV, MD, MB, MI, MS) /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define IMULWrr(RS, RD) (_d16(), _REXLrr(RD, RS), _OO_Mrm (0x0faf ,_b11,_r2(RD),_r2(RS) )) #define IMULWmr(MD, MB, MI, MS, RD) (_d16(), _REXLmr(MB, MI, RD), _OO_r_X (0x0faf ,_r2(RD) ,MD,MB,MI,MS )) #define IMULWirr(IM,RS,RD) (_d16(), _REXLrr(RS, RD), _Os_Mrm_sW (0x69 ,_b11,_r2(RS),_r2(RD) ,_su16(IM) )) #define IMULWimr(IM,MD,MB,MI,MS,RD) (_d16(), _REXLmr(MB, MI, RD), _Os_r_X_sW (0x69 ,_r2(RD) ,MD,MB,MI,MS ,_su16(IM) )) #define IMULLir(IM, RD) (_REXLrr(0, RD), _Os_Mrm_sL (0x69 ,_b11,_r4(RD),_r4(RD) ,IM )) #define IMULLrr(RS, RD) (_REXLrr(RD, RS), _OO_Mrm (0x0faf ,_b11,_r4(RD),_r4(RS) )) #define IMULLmr(MD, MB, MI, MS, RD) (_REXLmr(MB, MI, RD), _OO_r_X (0x0faf ,_r4(RD) ,MD,MB,MI,MS )) #define IMULQir(IM, RD) (_REXQrr(0, RD), _Os_Mrm_sL (0x69 ,_b11,_r8(RD),_r8(RD) ,IM )) #define IMULQrr(RS, RD) (_REXQrr(RD, RS), _OO_Mrm (0x0faf ,_b11,_r8(RD),_r8(RS) )) #define IMULQmr(MD, MB, MI, MS, RD) (_REXQmr(MB, MI, RD), _OO_r_X (0x0faf ,_r8(RD) ,MD,MB,MI,MS )) #define IMULLirr(IM,RS,RD) (_REXLrr(RS, RD), _Os_Mrm_sL (0x69 ,_b11,_r4(RS),_r4(RD) ,IM )) #define IMULLimr(IM,MD,MB,MI,MS,RD) (_REXLmr(MB, MI, RD), _Os_r_X_sL (0x69 ,_r4(RD) ,MD,MB,MI,MS ,IM )) #define IMULQirr(IM,RS,RD) (_REXQrr(RS, RD), _Os_Mrm_sL (0x69 ,_b11,_r8(RS),_r8(RD) ,IM )) #define IMULQimr(IM,MD,MB,MI,MS,RD) (_REXQmr(MB, MI, RD), _Os_r_X_sL (0x69 ,_r8(RD) ,MD,MB,MI,MS ,IM )) /* --- Control Flow related instructions ----------------------------------- */ enum { X86_CC_O = 0x0, X86_CC_NO = 0x1, X86_CC_NAE = 0x2, X86_CC_B = 0x2, X86_CC_C = 0x2, X86_CC_AE = 0x3, X86_CC_NB = 0x3, X86_CC_NC = 0x3, X86_CC_E = 0x4, X86_CC_Z = 0x4, X86_CC_NE = 0x5, X86_CC_NZ = 0x5, X86_CC_BE = 0x6, X86_CC_NA = 0x6, X86_CC_A = 0x7, X86_CC_NBE = 0x7, X86_CC_S = 0x8, X86_CC_NS = 0x9, X86_CC_P = 0xa, X86_CC_PE = 0xa, X86_CC_NP = 0xb, X86_CC_PO = 0xb, X86_CC_L = 0xc, X86_CC_NGE = 0xc, X86_CC_GE = 0xd, X86_CC_NL = 0xd, X86_CC_LE = 0xe, X86_CC_NG = 0xe, X86_CC_G = 0xf, X86_CC_NLE = 0xf, }; /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ // FIXME: no prefix is availble to encode a 32-bit operand size in 64-bit mode #define CALLm(M) _O_D32 (0xe8 ,(int)(M) ) #define _CALLLsr(R) (_REXLrr(0, R), _O_Mrm (0xff ,_b11,_b010,_r4(R) )) #define _CALLQsr(R) (_REXQrr(0, R), _O_Mrm (0xff ,_b11,_b010,_r8(R) )) #define CALLsr(R) ( X86_TARGET_64BIT ? _CALLQsr(R) : _CALLLsr(R)) #define CALLsm(D,B,I,S) (_REXLrm(0, B, I), _O_r_X (0xff ,_b010 ,(int)(D),B,I,S )) // FIXME: no prefix is availble to encode a 32-bit operand size in 64-bit mode #define JMPSm(M) _O_D8 (0xeb ,(int)(M) ) #define JMPm(M) _O_D32 (0xe9 ,(int)(M) ) #define _JMPLsr(R) (_REXLrr(0, R), _O_Mrm (0xff ,_b11,_b100,_r4(R) )) #define _JMPQsr(R) (_REXQrr(0, R), _O_Mrm (0xff ,_b11,_b100,_r8(R) )) #define JMPsr(R) ( X86_TARGET_64BIT ? _JMPQsr(R) : _JMPLsr(R)) #define JMPsm(D,B,I,S) (_REXLrm(0, B, I), _O_r_X (0xff ,_b100 ,(int)(D),B,I,S )) /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define JCCSii(CC, D) _O_B (0x70|(CC) ,(_sc)(int)(D) ) #define JCCSim(CC, D) _O_D8 (0x70|(CC) ,(int)(D) ) #define JOSm(D) JCCSim(0x0, D) #define JNOSm(D) JCCSim(0x1, D) #define JBSm(D) JCCSim(0x2, D) #define JNAESm(D) JCCSim(0x2, D) #define JNBSm(D) JCCSim(0x3, D) #define JAESm(D) JCCSim(0x3, D) #define JESm(D) JCCSim(0x4, D) #define JZSm(D) JCCSim(0x4, D) #define JNESm(D) JCCSim(0x5, D) #define JNZSm(D) JCCSim(0x5, D) #define JBESm(D) JCCSim(0x6, D) #define JNASm(D) JCCSim(0x6, D) #define JNBESm(D) JCCSim(0x7, D) #define JASm(D) JCCSim(0x7, D) #define JSSm(D) JCCSim(0x8, D) #define JNSSm(D) JCCSim(0x9, D) #define JPSm(D) JCCSim(0xa, D) #define JPESm(D) JCCSim(0xa, D) #define JNPSm(D) JCCSim(0xb, D) #define JPOSm(D) JCCSim(0xb, D) #define JLSm(D) JCCSim(0xc, D) #define JNGESm(D) JCCSim(0xc, D) #define JNLSm(D) JCCSim(0xd, D) #define JGESm(D) JCCSim(0xd, D) #define JLESm(D) JCCSim(0xe, D) #define JNGSm(D) JCCSim(0xe, D) #define JNLESm(D) JCCSim(0xf, D) #define JGSm(D) JCCSim(0xf, D) /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define JCCii(CC, D) _OO_L (0x0f80|(CC) ,(int)(D) ) #define JCCim(CC, D) _OO_D32 (0x0f80|(CC) ,(int)(D) ) #define JOm(D) JCCim(0x0, D) #define JNOm(D) JCCim(0x1, D) #define JBm(D) JCCim(0x2, D) #define JNAEm(D) JCCim(0x2, D) #define JNBm(D) JCCim(0x3, D) #define JAEm(D) JCCim(0x3, D) #define JEm(D) JCCim(0x4, D) #define JZm(D) JCCim(0x4, D) #define JNEm(D) JCCim(0x5, D) #define JNZm(D) JCCim(0x5, D) #define JBEm(D) JCCim(0x6, D) #define JNAm(D) JCCim(0x6, D) #define JNBEm(D) JCCim(0x7, D) #define JAm(D) JCCim(0x7, D) #define JSm(D) JCCim(0x8, D) #define JNSm(D) JCCim(0x9, D) #define JPm(D) JCCim(0xa, D) #define JPEm(D) JCCim(0xa, D) #define JNPm(D) JCCim(0xb, D) #define JPOm(D) JCCim(0xb, D) #define JLm(D) JCCim(0xc, D) #define JNGEm(D) JCCim(0xc, D) #define JNLm(D) JCCim(0xd, D) #define JGEm(D) JCCim(0xd, D) #define JLEm(D) JCCim(0xe, D) #define JNGm(D) JCCim(0xe, D) #define JNLEm(D) JCCim(0xf, D) #define JGm(D) JCCim(0xf, D) /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define SETCCir(CC, RD) (_REXBrr(0, RD), _OO_Mrm (0x0f90|(CC) ,_b11,_b000,_r1(RD) )) #define SETOr(RD) SETCCir(0x0,RD) #define SETNOr(RD) SETCCir(0x1,RD) #define SETBr(RD) SETCCir(0x2,RD) #define SETNAEr(RD) SETCCir(0x2,RD) #define SETNBr(RD) SETCCir(0x3,RD) #define SETAEr(RD) SETCCir(0x3,RD) #define SETEr(RD) SETCCir(0x4,RD) #define SETZr(RD) SETCCir(0x4,RD) #define SETNEr(RD) SETCCir(0x5,RD) #define SETNZr(RD) SETCCir(0x5,RD) #define SETBEr(RD) SETCCir(0x6,RD) #define SETNAr(RD) SETCCir(0x6,RD) #define SETNBEr(RD) SETCCir(0x7,RD) #define SETAr(RD) SETCCir(0x7,RD) #define SETSr(RD) SETCCir(0x8,RD) #define SETNSr(RD) SETCCir(0x9,RD) #define SETPr(RD) SETCCir(0xa,RD) #define SETPEr(RD) SETCCir(0xa,RD) #define SETNPr(RD) SETCCir(0xb,RD) #define SETPOr(RD) SETCCir(0xb,RD) #define SETLr(RD) SETCCir(0xc,RD) #define SETNGEr(RD) SETCCir(0xc,RD) #define SETNLr(RD) SETCCir(0xd,RD) #define SETGEr(RD) SETCCir(0xd,RD) #define SETLEr(RD) SETCCir(0xe,RD) #define SETNGr(RD) SETCCir(0xe,RD) #define SETNLEr(RD) SETCCir(0xf,RD) #define SETGr(RD) SETCCir(0xf,RD) /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define SETCCim(CC,MD,MB,MI,MS) (_REXBrm(0, MB, MI), _OO_r_X (0x0f90|(CC) ,_b000 ,MD,MB,MI,MS )) #define SETOm(D, B, I, S) SETCCim(0x0, D, B, I, S) #define SETNOm(D, B, I, S) SETCCim(0x1, D, B, I, S) #define SETBm(D, B, I, S) SETCCim(0x2, D, B, I, S) #define SETNAEm(D, B, I, S) SETCCim(0x2, D, B, I, S) #define SETNBm(D, B, I, S) SETCCim(0x3, D, B, I, S) #define SETAEm(D, B, I, S) SETCCim(0x3, D, B, I, S) #define SETEm(D, B, I, S) SETCCim(0x4, D, B, I, S) #define SETZm(D, B, I, S) SETCCim(0x4, D, B, I, S) #define SETNEm(D, B, I, S) SETCCim(0x5, D, B, I, S) #define SETNZm(D, B, I, S) SETCCim(0x5, D, B, I, S) #define SETBEm(D, B, I, S) SETCCim(0x6, D, B, I, S) #define SETNAm(D, B, I, S) SETCCim(0x6, D, B, I, S) #define SETNBEm(D, B, I, S) SETCCim(0x7, D, B, I, S) #define SETAm(D, B, I, S) SETCCim(0x7, D, B, I, S) #define SETSm(D, B, I, S) SETCCim(0x8, D, B, I, S) #define SETNSm(D, B, I, S) SETCCim(0x9, D, B, I, S) #define SETPm(D, B, I, S) SETCCim(0xa, D, B, I, S) #define SETPEm(D, B, I, S) SETCCim(0xa, D, B, I, S) #define SETNPm(D, B, I, S) SETCCim(0xb, D, B, I, S) #define SETPOm(D, B, I, S) SETCCim(0xb, D, B, I, S) #define SETLm(D, B, I, S) SETCCim(0xc, D, B, I, S) #define SETNGEm(D, B, I, S) SETCCim(0xc, D, B, I, S) #define SETNLm(D, B, I, S) SETCCim(0xd, D, B, I, S) #define SETGEm(D, B, I, S) SETCCim(0xd, D, B, I, S) #define SETLEm(D, B, I, S) SETCCim(0xe, D, B, I, S) #define SETNGm(D, B, I, S) SETCCim(0xe, D, B, I, S) #define SETNLEm(D, B, I, S) SETCCim(0xf, D, B, I, S) #define SETGm(D, B, I, S) SETCCim(0xf, D, B, I, S) /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define CMOVWrr(CC,RS,RD) (_d16(), _REXLrr(RD, RS), _OO_Mrm (0x0f40|(CC) ,_b11,_r2(RD),_r2(RS) )) #define CMOVWmr(CC,MD,MB,MI,MS,RD) (_d16(), _REXLmr(MB, MI, RD), _OO_r_X (0x0f40|(CC) ,_r2(RD) ,MD,MB,MI,MS )) #define CMOVLrr(CC,RS,RD) (_REXLrr(RD, RS), _OO_Mrm (0x0f40|(CC) ,_b11,_r4(RD),_r4(RS) )) #define CMOVLmr(CC,MD,MB,MI,MS,RD) (_REXLmr(MB, MI, RD), _OO_r_X (0x0f40|(CC) ,_r4(RD) ,MD,MB,MI,MS )) #define CMOVQrr(CC,RS,RD) (_REXQrr(RD, RS), _OO_Mrm (0x0f40|(CC) ,_b11,_r8(RD),_r8(RS) )) #define CMOVQmr(CC,MD,MB,MI,MS,RD) (_REXQmr(MB, MI, RD), _OO_r_X (0x0f40|(CC) ,_r8(RD) ,MD,MB,MI,MS )) /* --- Push/Pop instructions ----------------------------------------------- */ /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define POPWr(RD) _m32only((_d16(), _Or (0x58,_r2(RD) ))) #define POPWm(MD, MB, MI, MS) _m32only((_d16(), _O_r_X (0x8f ,_b000 ,MD,MB,MI,MS ))) #define POPLr(RD) _m32only( _Or (0x58,_r4(RD) )) #define POPLm(MD, MB, MI, MS) _m32only( _O_r_X (0x8f ,_b000 ,MD,MB,MI,MS )) #define POPQr(RD) _m64only((_REXQr(RD), _Or (0x58,_r8(RD) ))) #define POPQm(MD, MB, MI, MS) _m64only((_REXQm(MB, MI), _O_r_X (0x8f ,_b000 ,MD,MB,MI,MS ))) #define PUSHWr(RS) _m32only((_d16(), _Or (0x50,_r2(RS) ))) #define PUSHWm(MD, MB, MI, MS) _m32only((_d16(), _O_r_X (0xff, ,_b110 ,MD,MB,MI,MS ))) #define PUSHWi(IM) _m32only((_d16(), _Os_sW (0x68 ,IM ))) #define PUSHLr(RS) _m32only( _Or (0x50,_r4(RS) )) #define PUSHLm(MD, MB, MI, MS) _m32only( _O_r_X (0xff ,_b110 ,MD,MB,MI,MS )) #define PUSHLi(IM) _m32only( _Os_sL (0x68 ,IM )) #define PUSHQr(RS) _m64only((_REXQr(RS), _Or (0x50,_r8(RS) ))) #define PUSHQm(MD, MB, MI, MS) _m64only((_REXQm(MB, MI), _O_r_X (0xff ,_b110 ,MD,MB,MI,MS ))) #define PUSHQi(IM) _m64only( _Os_sL (0x68 ,IM )) #define POPA() (_d16(), _O (0x61 )) #define POPAD() _O (0x61 ) #define PUSHA() (_d16(), _O (0x60 )) #define PUSHAD() _O (0x60 ) #define POPF() _O (0x9d ) #define PUSHF() _O (0x9c ) /* --- Test instructions --------------------------------------------------- */ /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define TESTBrr(RS, RD) (_REXBrr(RS, RD), _O_Mrm (0x84 ,_b11,_r1(RS),_r1(RD) )) #define TESTBrm(RS, MD, MB, MI, MS) (_REXBrm(RS, MB, MI), _O_r_X (0x84 ,_r1(RS) ,MD,MB,MI,MS )) #define TESTBir(IM, RD) (X86_OPTIMIZE_ALU && ((RD) == X86_AL) ? \ (_REXBrr(0, RD), _O_B (0xa8 ,_u8(IM))) : \ (_REXBrr(0, RD), _O_Mrm_B (0xf6 ,_b11,_b000 ,_r1(RD) ,_u8(IM))) ) #define TESTBim(IM, MD, MB, MI, MS) (_REXBrm(0, MB, MI), _O_r_X_B (0xf6 ,_b000 ,MD,MB,MI,MS ,_u8(IM))) #define TESTWrr(RS, RD) (_d16(), _REXLrr(RS, RD), _O_Mrm (0x85 ,_b11,_r2(RS),_r2(RD) )) #define TESTWrm(RS, MD, MB, MI, MS) (_d16(), _REXLrm(RS, MB, MI), _O_r_X (0x85 ,_r2(RS) ,MD,MB,MI,MS )) #define TESTWir(IM, RD) (X86_OPTIMIZE_ALU && ((RD) == X86_AX) ? \ (_d16(), _REXLrr(0, RD), _O_W (0xa9 ,_u16(IM))) : \ (_d16(), _REXLrr(0, RD), _O_Mrm_W (0xf7 ,_b11,_b000 ,_r2(RD) ,_u16(IM))) ) #define TESTWim(IM, MD, MB, MI, MS) (_d16(), _REXLrm(0, MB, MI), _O_r_X_W (0xf7 ,_b000 ,MD,MB,MI,MS ,_u16(IM))) #define TESTLrr(RS, RD) (_REXLrr(RS, RD), _O_Mrm (0x85 ,_b11,_r4(RS),_r4(RD) )) #define TESTLrm(RS, MD, MB, MI, MS) (_REXLrm(RS, MB, MI), _O_r_X (0x85 ,_r4(RS) ,MD,MB,MI,MS )) #define TESTLir(IM, RD) (X86_OPTIMIZE_ALU && ((RD) == X86_EAX) ? \ (_REXLrr(0, RD), _O_L (0xa9 ,IM )) : \ (_REXLrr(0, RD), _O_Mrm_L (0xf7 ,_b11,_b000 ,_r4(RD) ,IM )) ) #define TESTLim(IM, MD, MB, MI, MS) (_REXLrm(0, MB, MI), _O_r_X_L (0xf7 ,_b000 ,MD,MB,MI,MS ,IM )) #define TESTQrr(RS, RD) (_REXQrr(RS, RD), _O_Mrm (0x85 ,_b11,_r8(RS),_r8(RD) )) #define TESTQrm(RS, MD, MB, MI, MS) (_REXQrm(RS, MB, MI), _O_r_X (0x85 ,_r8(RS) ,MD,MB,MI,MS )) #define TESTQir(IM, RD) (X86_OPTIMIZE_ALU && ((RD) == X86_RAX) ? \ (_REXQrr(0, RD), _O_L (0xa9 ,IM )) : \ (_REXQrr(0, RD), _O_Mrm_L (0xf7 ,_b11,_b000 ,_r8(RD) ,IM )) ) #define TESTQim(IM, MD, MB, MI, MS) (_REXQrm(0, MB, MI), _O_r_X_L (0xf7 ,_b000 ,MD,MB,MI,MS ,IM )) /* --- Exchange instructions ----------------------------------------------- */ /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define CMPXCHGBrr(RS, RD) (_REXBrr(RS, RD), _OO_Mrm (0x0fb0 ,_b11,_r1(RS),_r1(RD) )) #define CMPXCHGBrm(RS, MD, MB, MI, MS) (_REXBrm(RS, MB, MI), _OO_r_X (0x0fb0 ,_r1(RS) ,MD,MB,MI,MS )) #define CMPXCHGWrr(RS, RD) (_d16(), _REXLrr(RS, RD), _OO_Mrm (0x0fb1 ,_b11,_r2(RS),_r2(RD) )) #define CMPXCHGWrm(RS, MD, MB, MI, MS) (_d16(), _REXLrm(RS, MB, MI), _OO_r_X (0x0fb1 ,_r2(RS) ,MD,MB,MI,MS )) #define CMPXCHGLrr(RS, RD) (_REXLrr(RS, RD), _OO_Mrm (0x0fb1 ,_b11,_r4(RS),_r4(RD) )) #define CMPXCHGLrm(RS, MD, MB, MI, MS) (_REXLrm(RS, MB, MI), _OO_r_X (0x0fb1 ,_r4(RS) ,MD,MB,MI,MS )) #define CMPXCHGQrr(RS, RD) (_REXQrr(RS, RD), _OO_Mrm (0x0fb1 ,_b11,_r8(RS),_r8(RD) )) #define CMPXCHGQrm(RS, MD, MB, MI, MS) (_REXQrm(RS, MB, MI), _OO_r_X (0x0fb1 ,_r8(RS) ,MD,MB,MI,MS )) #define XADDBrr(RS, RD) (_REXBrr(RS, RD), _OO_Mrm (0x0fc0 ,_b11,_r1(RS),_r1(RD) )) #define XADDBrm(RS, MD, MB, MI, MS) (_REXBrm(RS, MB, MI), _OO_r_X (0x0fc0 ,_r1(RS) ,MD,MB,MI,MS )) #define XADDWrr(RS, RD) (_d16(), _REXLrr(RS, RD), _OO_Mrm (0x0fc1 ,_b11,_r2(RS),_r2(RD) )) #define XADDWrm(RS, MD, MB, MI, MS) (_d16(), _REXLrm(RS, MB, MI), _OO_r_X (0x0fc1 ,_r2(RS) ,MD,MB,MI,MS )) #define XADDLrr(RS, RD) (_REXLrr(RS, RD), _OO_Mrm (0x0fc1 ,_b11,_r4(RS),_r4(RD) )) #define XADDLrm(RS, MD, MB, MI, MS) (_REXLrm(RS, MB, MI), _OO_r_X (0x0fc1 ,_r4(RS) ,MD,MB,MI,MS )) #define XADDQrr(RS, RD) (_REXQrr(RS, RD), _OO_Mrm (0x0fc1 ,_b11,_r8(RS),_r8(RD) )) #define XADDQrm(RS, MD, MB, MI, MS) (_REXQrm(RS, MB, MI), _OO_r_X (0x0fc1 ,_r8(RS) ,MD,MB,MI,MS )) #define XCHGBrr(RS, RD) (_REXBrr(RS, RD), _O_Mrm (0x86 ,_b11,_r1(RS),_r1(RD) )) #define XCHGBrm(RS, MD, MB, MI, MS) (_REXBrm(RS, MB, MI), _O_r_X (0x86 ,_r1(RS) ,MD,MB,MI,MS )) #define XCHGWrr(RS, RD) (_d16(), _REXLrr(RS, RD), _O_Mrm (0x87 ,_b11,_r2(RS),_r2(RD) )) #define XCHGWrm(RS, MD, MB, MI, MS) (_d16(), _REXLrm(RS, MB, MI), _O_r_X (0x87 ,_r2(RS) ,MD,MB,MI,MS )) #define XCHGLrr(RS, RD) (_REXLrr(RS, RD), _O_Mrm (0x87 ,_b11,_r4(RS),_r4(RD) )) #define XCHGLrm(RS, MD, MB, MI, MS) (_REXLrm(RS, MB, MI), _O_r_X (0x87 ,_r4(RS) ,MD,MB,MI,MS )) #define XCHGQrr(RS, RD) (_REXQrr(RS, RD), _O_Mrm (0x87 ,_b11,_r8(RS),_r8(RD) )) #define XCHGQrm(RS, MD, MB, MI, MS) (_REXQrm(RS, MB, MI), _O_r_X (0x87 ,_r8(RS) ,MD,MB,MI,MS )) /* --- Increment/Decrement instructions ------------------------------------ */ /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define DECBm(MD, MB, MI, MS) (_REXBrm(0, MB, MI), _O_r_X (0xfe ,_b001 ,MD,MB,MI,MS )) #define DECBr(RD) (_REXBrr(0, RD), _O_Mrm (0xfe ,_b11,_b001 ,_r1(RD) )) #define DECWm(MD, MB, MI, MS) (_d16(), _REXLrm(0, MB, MI), _O_r_X (0xff ,_b001 ,MD,MB,MI,MS )) #define DECWr(RD) (! X86_TARGET_64BIT ? (_d16(), _Or (0x48,_r2(RD) )) : \ (_d16(), _REXLrr(0, RD), _O_Mrm (0xff ,_b11,_b001 ,_r2(RD) ))) #define DECLm(MD, MB, MI, MS) (_REXLrm(0, MB, MI), _O_r_X (0xff ,_b001 ,MD,MB,MI,MS )) #define DECLr(RD) (! X86_TARGET_64BIT ? _Or (0x48,_r4(RD) ) : \ (_REXLrr(0, RD), _O_Mrm (0xff ,_b11,_b001 ,_r4(RD) ))) #define DECQm(MD, MB, MI, MS) (_REXQrm(0, MB, MI), _O_r_X (0xff ,_b001 ,MD,MB,MI,MS )) #define DECQr(RD) (_REXQrr(0, RD), _O_Mrm (0xff ,_b11,_b001 ,_r8(RD) )) #define INCBm(MD, MB, MI, MS) (_REXBrm(0, MB, MI), _O_r_X (0xfe ,_b000 ,MD,MB,MI,MS )) #define INCBr(RD) (_REXBrr(0, RD), _O_Mrm (0xfe ,_b11,_b000 ,_r1(RD) )) #define INCWm(MD, MB, MI, MS) (_d16(), _REXLrm(0, MB, MI), _O_r_X (0xff ,_b000 ,MD,MB,MI,MS )) #define INCWr(RD) (! X86_TARGET_64BIT ? (_d16(), _Or (0x40,_r2(RD) )) : \ (_d16(), _REXLrr(0, RD), _O_Mrm (0xff ,_b11,_b000 ,_r2(RD) )) ) #define INCLm(MD, MB, MI, MS) (_REXLrm(0, MB, MI), _O_r_X (0xff ,_b000 ,MD,MB,MI,MS )) #define INCLr(RD) (! X86_TARGET_64BIT ? _Or (0x40,_r4(RD) ) : \ (_REXLrr(0, RD), _O_Mrm (0xff ,_b11,_b000 ,_r4(RD) ))) #define INCQm(MD, MB, MI, MS) (_REXQrm(0, MB, MI), _O_r_X (0xff ,_b000 ,MD,MB,MI,MS )) #define INCQr(RD) (_REXQrr(0, RD), _O_Mrm (0xff ,_b11,_b000 ,_r8(RD) )) /* --- Misc instructions --------------------------------------------------- */ /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define BSFWrr(RS, RD) (_d16(), _REXLrr(RD, RS), _OO_Mrm (0x0fbc ,_b11,_r2(RD),_r2(RS) )) #define BSFWmr(MD, MB, MI, MS, RD) (_d16(), _REXLmr(MB, MI, RD), _OO_r_X (0x0fbc ,_r2(RD) ,MD,MB,MI,MS )) #define BSRWrr(RS, RD) (_d16(), _REXLrr(RD, RS), _OO_Mrm (0x0fbd ,_b11,_r2(RD),_r2(RS) )) #define BSRWmr(MD, MB, MI, MS, RD) (_d16(), _REXLmr(MB, MI, RD), _OO_r_X (0x0fbd ,_r2(RD) ,MD,MB,MI,MS )) #define BSFLrr(RS, RD) (_REXLrr(RD, RS), _OO_Mrm (0x0fbc ,_b11,_r4(RD),_r4(RS) )) #define BSFLmr(MD, MB, MI, MS, RD) (_REXLmr(MB, MI, RD), _OO_r_X (0x0fbc ,_r4(RD) ,MD,MB,MI,MS )) #define BSRLrr(RS, RD) (_REXLrr(RD, RS), _OO_Mrm (0x0fbd ,_b11,_r4(RD),_r4(RS) )) #define BSRLmr(MD, MB, MI, MS, RD) (_REXLmr(MB, MI, RD), _OO_r_X (0x0fbd ,_r4(RD) ,MD,MB,MI,MS )) #define BSFQrr(RS, RD) (_REXQrr(RD, RS), _OO_Mrm (0x0fbc ,_b11,_r8(RD),_r8(RS) )) #define BSFQmr(MD, MB, MI, MS, RD) (_REXQmr(MB, MI, RD), _OO_r_X (0x0fbc ,_r8(RD) ,MD,MB,MI,MS )) #define BSRQrr(RS, RD) (_REXQrr(RD, RS), _OO_Mrm (0x0fbd ,_b11,_r8(RD),_r8(RS) )) #define BSRQmr(MD, MB, MI, MS, RD) (_REXQmr(MB, MI, RD), _OO_r_X (0x0fbd ,_r8(RD) ,MD,MB,MI,MS )) /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define MOVSBWrr(RS, RD) (_d16(), _REXBLrr(RD, RS), _OO_Mrm (0x0fbe ,_b11,_r2(RD),_r1(RS) )) #define MOVSBWmr(MD, MB, MI, MS, RD) (_d16(), _REXLmr(MB, MI, RD), _OO_r_X (0x0fbe ,_r2(RD) ,MD,MB,MI,MS )) #define MOVZBWrr(RS, RD) (_d16(), _REXBLrr(RD, RS), _OO_Mrm (0x0fb6 ,_b11,_r2(RD),_r1(RS) )) #define MOVZBWmr(MD, MB, MI, MS, RD) (_d16(), _REXLmr(MB, MI, RD), _OO_r_X (0x0fb6 ,_r2(RD) ,MD,MB,MI,MS )) #define MOVSBLrr(RS, RD) (_REXBLrr(RD, RS), _OO_Mrm (0x0fbe ,_b11,_r4(RD),_r1(RS) )) #define MOVSBLmr(MD, MB, MI, MS, RD) (_REXLmr(MB, MI, RD), _OO_r_X (0x0fbe ,_r4(RD) ,MD,MB,MI,MS )) #define MOVZBLrr(RS, RD) (_REXBLrr(RD, RS), _OO_Mrm (0x0fb6 ,_b11,_r4(RD),_r1(RS) )) #define MOVZBLmr(MD, MB, MI, MS, RD) (_REXLmr(MB, MI, RD), _OO_r_X (0x0fb6 ,_r4(RD) ,MD,MB,MI,MS )) #define MOVSBQrr(RS, RD) (_REXQrr(RD, RS), _OO_Mrm (0x0fbe ,_b11,_r8(RD),_r1(RS) )) #define MOVSBQmr(MD, MB, MI, MS, RD) (_REXQmr(MB, MI, RD), _OO_r_X (0x0fbe ,_r8(RD) ,MD,MB,MI,MS )) #define MOVZBQrr(RS, RD) (_REXQrr(RD, RS), _OO_Mrm (0x0fb6 ,_b11,_r8(RD),_r1(RS) )) #define MOVZBQmr(MD, MB, MI, MS, RD) (_REXQmr(MB, MI, RD), _OO_r_X (0x0fb6 ,_r8(RD) ,MD,MB,MI,MS )) #define MOVSWLrr(RS, RD) (_REXLrr(RD, RS), _OO_Mrm (0x0fbf ,_b11,_r4(RD),_r2(RS) )) #define MOVSWLmr(MD, MB, MI, MS, RD) (_REXLmr(MB, MI, RD), _OO_r_X (0x0fbf ,_r4(RD) ,MD,MB,MI,MS )) #define MOVZWLrr(RS, RD) (_REXLrr(RD, RS), _OO_Mrm (0x0fb7 ,_b11,_r4(RD),_r2(RS) )) #define MOVZWLmr(MD, MB, MI, MS, RD) (_REXLmr(MB, MI, RD), _OO_r_X (0x0fb7 ,_r4(RD) ,MD,MB,MI,MS )) #define MOVSWQrr(RS, RD) (_REXQrr(RD, RS), _OO_Mrm (0x0fbf ,_b11,_r8(RD),_r2(RS) )) #define MOVSWQmr(MD, MB, MI, MS, RD) (_REXQmr(MB, MI, RD), _OO_r_X (0x0fbf ,_r8(RD) ,MD,MB,MI,MS )) #define MOVZWQrr(RS, RD) (_REXQrr(RD, RS), _OO_Mrm (0x0fb7 ,_b11,_r8(RD),_r2(RS) )) #define MOVZWQmr(MD, MB, MI, MS, RD) (_REXQmr(MB, MI, RD), _OO_r_X (0x0fb7 ,_r8(RD) ,MD,MB,MI,MS )) #define MOVSLQrr(RS, RD) _m64only((_REXQrr(RD, RS), _O_Mrm (0x63 ,_b11,_r8(RD),_r4(RS) ))) #define MOVSLQmr(MD, MB, MI, MS, RD) _m64only((_REXQmr(MB, MI, RD), _O_r_X (0x63 ,_r8(RD) ,MD,MB,MI,MS ))) /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define LEALmr(MD, MB, MI, MS, RD) (_REXLmr(MB, MI, RD), _O_r_X (0x8d ,_r4(RD) ,MD,MB,MI,MS )) #define BSWAPLr(R) (_REXLrr(0, R), _OOr (0x0fc8,_r4(R) )) #define BSWAPQr(R) (_REXQrr(0, R), _OOr (0x0fc8,_r8(R) )) #define CLC() _O (0xf8 ) #define STC() _O (0xf9 ) #define CMC() _O (0xf5 ) #define CLD() _O (0xfc ) #define STD() _O (0xfd ) #define CBTW() (_d16(), _O (0x98 )) #define CWTL() _O (0x98 ) #define CLTQ() _m64only(_REXQrr(0, 0), _O (0x98 )) #define CBW CBTW #define CWDE CWTL #define CDQE CLTQ #define CWTD() (_d16(), _O (0x99 )) #define CLTD() _O (0x99 ) #define CQTO() _m64only(_REXQrr(0, 0), _O (0x99 )) #define CWD CWTD #define CDQ CLTD #define CQO CQTO #define LAHF() _O (0x9f ) #define SAHF() _O (0x9e ) /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define CPUID() _OO (0x0fa2 ) #define RDTSC() _OO (0xff31 ) #define ENTERii(W, B) _O_W_B (0xc8 ,_su16(W),_su8(B)) #define LEAVE() _O (0xc9 ) #define RET() _O (0xc3 ) #define RETi(IM) _O_W (0xc2 ,_su16(IM)) #define NOP() _O (0x90 ) /* --- Media 128-bit instructions ------------------------------------------ */ enum { X86_SSE_CVTIS = 0x2a, X86_SSE_CVTSI = 0x2d, X86_SSE_UCOMI = 0x2e, X86_SSE_COMI = 0x2f, X86_SSE_SQRT = 0x51, X86_SSE_RSQRT = 0x52, X86_SSE_RCP = 0x53, X86_SSE_AND = 0x54, X86_SSE_ANDN = 0x55, X86_SSE_OR = 0x56, X86_SSE_XOR = 0x57, X86_SSE_ADD = 0x58, X86_SSE_MUL = 0x59, X86_SSE_CVTSD = 0x5a, X86_SSE_CVTDT = 0x5b, X86_SSE_SUB = 0x5c, X86_SSE_MIN = 0x5d, X86_SSE_DIV = 0x5e, X86_SSE_MAX = 0x5f, }; /* _format Opcd ,Mod ,r ,m ,mem=dsp+sib ,imm... */ #define __SSELrr(OP,RS,RSA,RD,RDA) (_REXLrr(RD, RS), _OO_Mrm (0x0f00|(OP) ,_b11,RDA(RD),RSA(RS) )) #define __SSELmr(OP,MD,MB,MI,MS,RD,RDA) (_REXLmr(MB, MI, RD), _OO_r_X (0x0f00|(OP) ,RDA(RD) ,MD,MB,MI,MS )) #define __SSELrm(OP,RS,RSA,MD,MB,MI,MS) (_REXLrm(RS, MB, MI), _OO_r_X (0x0f00|(OP) ,RSA(RS) ,MD,MB,MI,MS )) #define __SSEQrr(OP,RS,RSA,RD,RDA) (_REXQrr(RD, RS), _OO_Mrm (0x0f00|(OP) ,_b11,RDA(RD),RSA(RS) )) #define __SSEQmr(OP,MD,MB,MI,MS,RD,RDA) (_REXQmr(MB, MI, RD), _OO_r_X (0x0f00|(OP) ,RDA(RD) ,MD,MB,MI,MS )) #define __SSEQrm(OP,RS,RSA,MD,MB,MI,MS) (_REXQrm(RS, MB, MI), _OO_r_X (0x0f00|(OP) ,RSA(RS) ,MD,MB,MI,MS )) #define _SSELrr(PX,OP,RS,RSA,RD,RDA) (_B(PX), __SSELrr(OP, RS, RSA, RD, RDA)) #define _SSELmr(PX,OP,MD,MB,MI,MS,RD,RDA) (_B(PX), __SSELmr(OP, MD, MB, MI, MS, RD, RDA)) #define _SSELrm(PX,OP,RS,RSA,MD,MB,MI,MS) (_B(PX), __SSELrm(OP, RS, RSA, MD, MB, MI, MS)) #define _SSEQrr(PX,OP,RS,RSA,RD,RDA) (_B(PX), __SSEQrr(OP, RS, RSA, RD, RDA)) #define _SSEQmr(PX,OP,MD,MB,MI,MS,RD,RDA) (_B(PX), __SSEQmr(OP, MD, MB, MI, MS, RD, RDA)) #define _SSEQrm(PX,OP,RS,RSA,MD,MB,MI,MS) (_B(PX), __SSEQrm(OP, RS, RSA, MD, MB, MI, MS)) #define _SSEPSrr(OP,RS,RD) __SSELrr( OP, RS,_rX, RD,_rX) #define _SSEPSmr(OP,MD,MB,MI,MS,RD) __SSELmr( OP, MD, MB, MI, MS, RD,_rX) #define _SSEPSrm(OP,RS,MD,MB,MI,MS) __SSELrm( OP, RS,_rX, MD, MB, MI, MS) #define _SSEPDrr(OP,RS,RD) _SSELrr(0x66, OP, RS,_rX, RD,_rX) #define _SSEPDmr(OP,MD,MB,MI,MS,RD) _SSELmr(0x66, OP, MD, MB, MI, MS, RD,_rX) #define _SSEPDrm(OP,RS,MD,MB,MI,MS) _SSELrm(0x66, OP, RS,_rX, MD, MB, MI, MS) #define _SSESSrr(OP,RS,RD) _SSELrr(0xf3, OP, RS,_rX, RD,_rX) #define _SSESSmr(OP,MD,MB,MI,MS,RD) _SSELmr(0xf3, OP, MD, MB, MI, MS, RD,_rX) #define _SSESSrm(OP,RS,MD,MB,MI,MS) _SSELrm(0xf3, OP, RS,_rX, MD, MB, MI, MS) #define _SSESDrr(OP,RS,RD) _SSELrr(0xf2, OP, RS,_rX, RD,_rX) #define _SSESDmr(OP,MD,MB,MI,MS,RD) _SSELmr(0xf2, OP, MD, MB, MI, MS, RD,_rX) #define _SSESDrm(OP,RS,MD,MB,MI,MS) _SSELrm(0xf2, OP, RS,_rX, MD, MB, MI, MS) #define ADDPSrr(RS, RD) _SSEPSrr(X86_SSE_ADD, RS, RD) #define ADDPSmr(MD, MB, MI, MS, RD) _SSEPSmr(X86_SSE_ADD, MD, MB, MI, MS, RD) #define ADDPDrr(RS, RD) _SSEPDrr(X86_SSE_ADD, RS, RD) #define ADDPDmr(MD, MB, MI, MS, RD) _SSEPDmr(X86_SSE_ADD, MD, MB, MI, MS, RD) #define ADDSSrr(RS, RD) _SSESSrr(X86_SSE_ADD, RS, RD) #define ADDSSmr(MD, MB, MI, MS, RD) _SSESSmr(X86_SSE_ADD, MD, MB, MI, MS, RD) #define ADDSDrr(RS, RD) _SSESDrr(X86_SSE_ADD, RS, RD) #define ADDSDmr(MD, MB, MI, MS, RD) _SSESDmr(X86_SSE_ADD, MD, MB, MI, MS, RD) #define ANDNPSrr(RS, RD) _SSEPSrr(X86_SSE_ANDN, RS, RD) #define ANDNPSmr(MD, MB, MI, MS, RD) _SSEPSmr(X86_SSE_ANDN, MD, MB, MI, MS, RD) #define ANDNPDrr(RS, RD) _SSEPDrr(X86_SSE_ANDN, RS, RD) #define ANDNPDmr(MD, MB, MI, MS, RD) _SSEPDmr(X86_SSE_ANDN, MD, MB, MI, MS, RD) #define ANDPSrr(RS, RD) _SSEPSrr(X86_SSE_AND, RS, RD) #define ANDPSmr(MD, MB, MI, MS, RD) _SSEPSmr(X86_SSE_AND, MD, MB, MI, MS, RD) #define ANDPDrr(RS, RD) _SSEPDrr(X86_SSE_AND, RS, RD) #define ANDPDmr(MD, MB, MI, MS, RD) _SSEPDmr(X86_SSE_AND, MD, MB, MI, MS, RD) #define DIVPSrr(RS, RD) _SSEPSrr(X86_SSE_DIV, RS, RD) #define DIVPSmr(MD, MB, MI, MS, RD) _SSEPSmr(X86_SSE_DIV, MD, MB, MI, MS, RD) #define DIVPDrr(RS, RD) _SSEPDrr(X86_SSE_DIV, RS, RD) #define DIVPDmr(MD, MB, MI, MS, RD) _SSEPDmr(X86_SSE_DIV, MD, MB, MI, MS, RD) #define DIVSSrr(RS, RD) _SSESSrr(X86_SSE_DIV, RS, RD) #define DIVSSmr(MD, MB, MI, MS, RD) _SSESSmr(X86_SSE_DIV, MD, MB, MI, MS, RD) #define DIVSDrr(RS, RD) _SSESDrr(X86_SSE_DIV, RS, RD) #define DIVSDmr(MD, MB, MI, MS, RD) _SSESDmr(X86_SSE_DIV, MD, MB, MI, MS, RD) #define MAXPSrr(RS, RD) _SSEPSrr(X86_SSE_MAX, RS, RD) #define MAXPSmr(MD, MB, MI, MS, RD) _SSEPSmr(X86_SSE_MAX, MD, MB, MI, MS, RD) #define MAXPDrr(RS, RD) _SSEPDrr(X86_SSE_MAX, RS, RD) #define MAXPDmr(MD, MB, MI, MS, RD) _SSEPDmr(X86_SSE_MAX, MD, MB, MI, MS, RD) #define MAXSSrr(RS, RD) _SSESSrr(X86_SSE_MAX, RS, RD) #define MAXSSmr(MD, MB, MI, MS, RD) _SSESSmr(X86_SSE_MAX, MD, MB, MI, MS, RD) #define MAXSDrr(RS, RD) _SSESDrr(X86_SSE_MAX, RS, RD) #define MAXSDmr(MD, MB, MI, MS, RD) _SSESDmr(X86_SSE_MAX, MD, MB, MI, MS, RD) #define MINPSrr(RS, RD) _SSEPSrr(X86_SSE_MIN, RS, RD) #define MINPSmr(MD, MB, MI, MS, RD) _SSEPSmr(X86_SSE_MIN, MD, MB, MI, MS, RD) #define MINPDrr(RS, RD) _SSEPDrr(X86_SSE_MIN, RS, RD) #define MINPDmr(MD, MB, MI, MS, RD) _SSEPDmr(X86_SSE_MIN, MD, MB, MI, MS, RD) #define MINSSrr(RS, RD) _SSESSrr(X86_SSE_MIN, RS, RD) #define MINSSmr(MD, MB, MI, MS, RD) _SSESSmr(X86_SSE_MIN, MD, MB, MI, MS, RD) #define MINSDrr(RS, RD) _SSESDrr(X86_SSE_MIN, RS, RD) #define MINSDmr(MD, MB, MI, MS, RD) _SSESDmr(X86_SSE_MIN, MD, MB, MI, MS, RD) #define MULPSrr(RS, RD) _SSEPSrr(X86_SSE_MUL, RS, RD) #define MULPSmr(MD, MB, MI, MS, RD) _SSEPSmr(X86_SSE_MUL, MD, MB, MI, MS, RD) #define MULPDrr(RS, RD) _SSEPDrr(X86_SSE_MUL, RS, RD) #define MULPDmr(MD, MB, MI, MS, RD) _SSEPDmr(X86_SSE_MUL, MD, MB, MI, MS, RD) #define MULSSrr(RS, RD) _SSESSrr(X86_SSE_MUL, RS, RD) #define MULSSmr(MD, MB, MI, MS, RD) _SSESSmr(X86_SSE_MUL, MD, MB, MI, MS, RD) #define MULSDrr(RS, RD) _SSESDrr(X86_SSE_MUL, RS, RD) #define MULSDmr(MD, MB, MI, MS, RD) _SSESDmr(X86_SSE_MUL, MD, MB, MI, MS, RD) #define ORPSrr(RS, RD) _SSEPSrr(X86_SSE_OR, RS, RD) #define ORPSmr(MD, MB, MI, MS, RD) _SSEPSmr(X86_SSE_OR, MD, MB, MI, MS, RD) #define ORPDrr(RS, RD) _SSEPDrr(X86_SSE_OR, RS, RD) #define ORPDmr(MD, MB, MI, MS, RD) _SSEPDmr(X86_SSE_OR, MD, MB, MI, MS, RD) #define RCPPSrr(RS, RD) _SSEPSrr(X86_SSE_RCP, RS, RD) #define RCPPSmr(MD, MB, MI, MS, RD) _SSEPSmr(X86_SSE_RCP, MD, MB, MI, MS, RD) #define RCPSSrr(RS, RD) _SSESSrr(X86_SSE_RCP, RS, RD) #define RCPSSmr(MD, MB, MI, MS, RD) _SSESSmr(X86_SSE_RCP, MD, MB, MI, MS, RD) #define RSQRTPSrr(RS, RD) _SSEPSrr(X86_SSE_RSQRT, RS, RD) #define RSQRTPSmr(MD, MB, MI, MS, RD) _SSEPSmr(X86_SSE_RSQRT, MD, MB, MI, MS, RD) #define RSQRTSSrr(RS, RD) _SSESSrr(X86_SSE_RSQRT, RS, RD) #define RSQRTSSmr(MD, MB, MI, MS, RD) _SSESSmr(X86_SSE_RSQRT, MD, MB, MI, MS, RD) #define SQRTPSrr(RS, RD) _SSEPSrr(X86_SSE_SQRT, RS, RD) #define SQRTPSmr(MD, MB, MI, MS, RD) _SSEPSmr(X86_SSE_SQRT, MD, MB, MI, MS, RD) #define SQRTPDrr(RS, RD) _SSEPDrr(X86_SSE_SQRT, RS, RD) #define SQRTPDmr(MD, MB, MI, MS, RD) _SSEPDmr(X86_SSE_SQRT, MD, MB, MI, MS, RD) #define SQRTSSrr(RS, RD) _SSESSrr(X86_SSE_SQRT, RS, RD) #define SQRTSSmr(MD, MB, MI, MS, RD) _SSESSmr(X86_SSE_SQRT, MD, MB, MI, MS, RD) #define SQRTSDrr(RS, RD) _SSESDrr(X86_SSE_SQRT, RS, RD) #define SQRTSDmr(MD, MB, MI, MS, RD) _SSESDmr(X86_SSE_SQRT, MD, MB, MI, MS, RD) #define SUBPSrr(RS, RD) _SSEPSrr(X86_SSE_SUB, RS, RD) #define SUBPSmr(MD, MB, MI, MS, RD) _SSEPSmr(X86_SSE_SUB, MD, MB, MI, MS, RD) #define SUBPDrr(RS, RD) _SSEPDrr(X86_SSE_SUB, RS, RD) #define SUBPDmr(MD, MB, MI, MS, RD) _SSEPDmr(X86_SSE_SUB, MD, MB, MI, MS, RD) #define SUBSSrr(RS, RD) _SSESSrr(X86_SSE_SUB, RS, RD) #define SUBSSmr(MD, MB, MI, MS, RD) _SSESSmr(X86_SSE_SUB, MD, MB, MI, MS, RD) #define SUBSDrr(RS, RD) _SSESDrr(X86_SSE_SUB, RS, RD) #define SUBSDmr(MD, MB, MI, MS, RD) _SSESDmr(X86_SSE_SUB, MD, MB, MI, MS, RD) #define XORPSrr(RS, RD) _SSEPSrr(X86_SSE_XOR, RS, RD) #define XORPSmr(MD, MB, MI, MS, RD) _SSEPSmr(X86_SSE_XOR, MD, MB, MI, MS, RD) #define XORPDrr(RS, RD) _SSEPDrr(X86_SSE_XOR, RS, RD) #define XORPDmr(MD, MB, MI, MS, RD) _SSEPDmr(X86_SSE_XOR, MD, MB, MI, MS, RD) #define COMISSrr(RS, RD) _SSESSrr(X86_SSE_COMI, RS, RD) #define COMISSmr(MD, MB, MI, MS, RD) _SSESSmr(X86_SSE_COMI, MD, MB, MI, MS, RD) #define COMISDrr(RS, RD) _SSESDrr(X86_SSE_COMI, RS, RD) #define COMISDmr(MD, MB, MI, MS, RD) _SSESDmr(X86_SSE_COMI, MD, MB, MI, MS, RD) #define UCOMISSrr(RS, RD) _SSESSrr(X86_SSE_UCOMI, RS, RD) #define UCOMISSmr(MD, MB, MI, MS, RD) _SSESSmr(X86_SSE_UCOMI, MD, MB, MI, MS, RD) #define UCOMISDrr(RS, RD) _SSESDrr(X86_SSE_UCOMI, RS, RD) #define UCOMISDmr(MD, MB, MI, MS, RD) _SSESDmr(X86_SSE_UCOMI, MD, MB, MI, MS, RD) #define MOVAPSrr(RS, RD) _SSEPSrr(0x28, RS, RD) #define MOVAPSmr(MD, MB, MI, MS, RD) _SSEPSmr(0x28, MD, MB, MI, MS, RD) #define MOVAPSrm(RS, MD, MB, MI, MS) _SSEPSrm(0x29, RS, MD, MB, MI, MS) #define MOVAPDrr(RS, RD) _SSEPDrr(0x28, RS, RD) #define MOVAPDmr(MD, MB, MI, MS, RD) _SSEPDmr(0x28, MD, MB, MI, MS, RD) #define MOVAPDrm(RS, MD, MB, MI, MS) _SSEPDrm(0x29, RS, MD, MB, MI, MS) #define CVTPS2PIrr(RS, RD) __SSELrr( X86_SSE_CVTSI, RS,_rX, RD,_rM) #define CVTPS2PImr(MD, MB, MI, MS, RD) __SSELmr( X86_SSE_CVTSI, MD, MB, MI, MS, RD,_rM) #define CVTPD2PIrr(RS, RD) _SSELrr(0x66, X86_SSE_CVTSI, RS,_rX, RD,_rM) #define CVTPD2PImr(MD, MB, MI, MS, RD) _SSELmr(0x66, X86_SSE_CVTSI, MD, MB, MI, MS, RD,_rM) #define CVTPI2PSrr(RS, RD) __SSELrr( X86_SSE_CVTIS, RS,_rM, RD,_rX) #define CVTPI2PSmr(MD, MB, MI, MS, RD) __SSELmr( X86_SSE_CVTIS, MD, MB, MI, MS, RD,_rX) #define CVTPI2PDrr(RS, RD) _SSELrr(0x66, X86_SSE_CVTIS, RS,_rM, RD,_rX) #define CVTPI2PDmr(MD, MB, MI, MS, RD) _SSELmr(0x66, X86_SSE_CVTIS, MD, MB, MI, MS, RD,_rX) #define CVTPS2PDrr(RS, RD) __SSELrr( X86_SSE_CVTSD, RS,_rX, RD,_rX) #define CVTPS2PDmr(MD, MB, MI, MS, RD) __SSELmr( X86_SSE_CVTSD, MD, MB, MI, MS, RD,_rX) #define CVTPD2PSrr(RS, RD) _SSELrr(0x66, X86_SSE_CVTSD, RS,_rX, RD,_rX) #define CVTPD2PSmr(MD, MB, MI, MS, RD) _SSELmr(0x66, X86_SSE_CVTSD, MD, MB, MI, MS, RD,_rX) #define CVTSS2SDrr(RS, RD) _SSELrr(0xf3, X86_SSE_CVTSD, RS,_rX, RD,_rX) #define CVTSS2SDmr(MD, MB, MI, MS, RD) _SSELmr(0xf3, X86_SSE_CVTSD, MD, MB, MI, MS, RD,_rX) #define CVTSD2SSrr(RS, RD) _SSELrr(0xf2, X86_SSE_CVTSD, RS,_rX, RD,_rX) #define CVTSD2SSmr(MD, MB, MI, MS, RD) _SSELmr(0xf2, X86_SSE_CVTSD, MD, MB, MI, MS, RD,_rX) #define CVTSS2SILrr(RS, RD) _SSELrr(0xf3, X86_SSE_CVTSI, RS,_rX, RD,_r4) #define CVTSS2SILmr(MD, MB, MI, MS, RD) _SSELmr(0xf3, X86_SSE_CVTSI, MD, MB, MI, MS, RD,_r4) #define CVTSD2SILrr(RS, RD) _SSELrr(0xf2, X86_SSE_CVTSI, RS,_rX, RD,_r4) #define CVTSD2SILmr(MD, MB, MI, MS, RD) _SSELmr(0xf2, X86_SSE_CVTSI, MD, MB, MI, MS, RD,_r4) #define CVTSI2SSLrr(RS, RD) _SSELrr(0xf3, X86_SSE_CVTIS, RS,_r4, RD,_rX) #define CVTSI2SSLmr(MD, MB, MI, MS, RD) _SSELmr(0xf3, X86_SSE_CVTIS, MD, MB, MI, MS, RD,_rX) #define CVTSI2SDLrr(RS, RD) _SSELrr(0xf2, X86_SSE_CVTIS, RS,_r4, RD,_rX) #define CVTSI2SDLmr(MD, MB, MI, MS, RD) _SSELmr(0xf2, X86_SSE_CVTIS, MD, MB, MI, MS, RD,_rX) #define CVTSS2SIQrr(RS, RD) _SSEQrr(0xf3, X86_SSE_CVTSI, RS,_rX, RD,_r8) #define CVTSS2SIQmr(MD, MB, MI, MS, RD) _SSEQmr(0xf3, X86_SSE_CVTSI, MD, MB, MI, MS, RD,_r8) #define CVTSD2SIQrr(RS, RD) _SSEQrr(0xf2, X86_SSE_CVTSI, RS,_rX, RD,_r8) #define CVTSD2SIQmr(MD, MB, MI, MS, RD) _SSEQmr(0xf2, X86_SSE_CVTSI, MD, MB, MI, MS, RD,_r8) #define CVTSI2SSQrr(RS, RD) _SSEQrr(0xf3, X86_SSE_CVTIS, RS,_r8, RD,_rX) #define CVTSI2SSQmr(MD, MB, MI, MS, RD) _SSEQmr(0xf3, X86_SSE_CVTIS, MD, MB, MI, MS, RD,_rX) #define CVTSI2SDQrr(RS, RD) _SSEQrr(0xf2, X86_SSE_CVTIS, RS,_r8, RD,_rX) #define CVTSI2SDQmr(MD, MB, MI, MS, RD) _SSEQmr(0xf2, X86_SSE_CVTIS, MD, MB, MI, MS, RD,_rX) #define MOVDLXrr(RS, RD) _SSELrr(0x66, 0x6e, RS,_r4, RD,_rX) #define MOVDLXmr(MD, MB, MI, MS, RD) _SSELmr(0x66, 0x6e, MD, MB, MI, MS, RD,_rX) #define MOVDQXrr(RS, RD) _SSEQrr(0x66, 0x6e, RS,_r8, RD,_rX) #define MOVDQXmr(MD, MB, MI, MS, RD) _SSEQmr(0x66, 0x6e, MD, MB, MI, MS, RD,_rX) #define MOVDXLrr(RS, RD) _SSELrr(0x66, 0x7e, RS,_rX, RD,_r4) #define MOVDXLrm(RS, MD, MB, MI, MS) _SSELrm(0x66, 0x7e, RS,_rX, MD, MB, MI, MS) #define MOVDXQrr(RS, RD) _SSEQrr(0x66, 0x7e, RS,_rX, RD,_r8) #define MOVDXQrm(RS, MD, MB, MI, MS) _SSEQrm(0x66, 0x7e, RS,_rX, MD, MB, MI, MS) #define MOVDLMrr(RS, RD) __SSELrr( 0x6e, RS,_r4, RD,_rM) #define MOVDLMmr(MD, MB, MI, MS, RD) __SSELmr( 0x6e, MD, MB, MI, MS, RD,_rM) #define MOVDQMrr(RS, RD) __SSEQrr( 0x6e, RS,_r8, RD,_rM) #define MOVDQMmr(MD, MB, MI, MS, RD) __SSEQmr( 0x6e, MD, MB, MI, MS, RD,_rM) #define MOVDMLrr(RS, RD) __SSELrr( 0x7e, RS,_rM, RD,_r4) #define MOVDMLrm(RS, MD, MB, MI, MS) __SSELrm( 0x7e, RS,_rM, MD, MB, MI, MS) #define MOVDMQrr(RS, RD) __SSEQrr( 0x7e, RS,_rM, RD,_r8) #define MOVDMQrm(RS, MD, MB, MI, MS) __SSEQrm( 0x7e, RS,_rM, MD, MB, MI, MS) #define MOVDQ2Qrr(RS, RD) _SSELrr(0xf2, 0xd6, RS,_rX, RD,_rM) #define MOVHLPSrr(RS, RD) __SSELrr( 0x12, RS,_rX, RD,_rX) #define MOVLHPSrr(RS, RD) __SSELrr( 0x16, RS,_rX, RD,_rX) #define MOVDQArr(RS, RD) _SSELrr(0x66, 0x6f, RS,_rX, RD,_rX) #define MOVDQAmr(MD, MB, MI, MS, RD) _SSELmr(0x66, 0x6f, MD, MB, MI, MS, RD,_rX) #define MOVDQArm(RS, MD, MB, MI, MS) _SSELrm(0x66, 0x7f, RS,_rX, MD, MB, MI, MS) #define MOVDQUrr(RS, RD) _SSELrr(0xf3, 0x6f, RS,_rX, RD,_rX) #define MOVDQUmr(MD, MB, MI, MS, RD) _SSELmr(0xf3, 0x6f, MD, MB, MI, MS, RD,_rX) #define MOVDQUrm(RS, MD, MB, MI, MS) _SSELrm(0xf3, 0x7f, RS,_rX, MD, MB, MI, MS) #define MOVHPDmr(MD, MB, MI, MS, RD) _SSELmr(0x66, 0x16, MD, MB, MI, MS, RD,_rX) #define MOVHPDrm(RS, MD, MB, MI, MS) _SSELrm(0x66, 0x17, RS,_rX, MD, MB, MI, MS) #define MOVHPSmr(MD, MB, MI, MS, RD) __SSELmr( 0x16, MD, MB, MI, MS, RD,_rX) #define MOVHPSrm(RS, MD, MB, MI, MS) __SSELrm( 0x17, RS,_rX, MD, MB, MI, MS) #define MOVLPDmr(MD, MB, MI, MS, RD) _SSELmr(0x66, 0x12, MD, MB, MI, MS, RD,_rX) #define MOVLPDrm(RS, MD, MB, MI, MS) _SSELrm(0x66, 0x13, RS,_rX, MD, MB, MI, MS) #define MOVLPSmr(MD, MB, MI, MS, RD) __SSELmr( 0x12, MD, MB, MI, MS, RD,_rX) #define MOVLPSrm(RS, MD, MB, MI, MS) __SSELrm( 0x13, RS,_rX, MD, MB, MI, MS) /* --- FLoating-Point instructions ----------------------------------------- */ #define _ESCmi(D,B,I,S,OP) (_REXLrm(0,B,I), _O_r_X(0xd8|(OP & 7), (OP >> 3), D,B,I,S)) #define FLDr(R) _OOr(0xd9c0,_rN(R)) #define FLDLm(D,B,I,S) _ESCmi(D,B,I,S,005) #define FLDSm(D,B,I,S) _ESCmi(D,B,I,S,001) #define FLDTm(D,B,I,S) _ESCmi(D,B,I,S,053) #define FSTr(R) _OOr(0xddd0,_rN(R)) #define FSTSm(D,B,I,S) _ESCmi(D,B,I,S,021) #define FSTLm(D,B,I,S) _ESCmi(D,B,I,S,025) #define FSTPr(R) _OOr(0xddd8,_rN(R)) #define FSTPSm(D,B,I,S) _ESCmi(D,B,I,S,031) #define FSTPLm(D,B,I,S) _ESCmi(D,B,I,S,035) #define FSTPTm(D,B,I,S) _ESCmi(D,B,I,S,073) #define FADDr0(R) _OOr(0xd8c0,_rN(R)) #define FADD0r(R) _OOr(0xdcc0,_rN(R)) #define FADDP0r(R) _OOr(0xdec0,_rN(R)) #define FADDSm(D,B,I,S) _ESCmi(D,B,I,S,000) #define FADDLm(D,B,I,S) _ESCmi(D,B,I,S,004) #define FSUBSm(D,B,I,S) _ESCmi(D,B,I,S,040) #define FSUBLm(D,B,I,S) _ESCmi(D,B,I,S,044) #define FSUBr0(R) _OOr(0xd8e0,_rN(R)) #define FSUB0r(R) _OOr(0xdce8,_rN(R)) #define FSUBP0r(R) _OOr(0xdee8,_rN(R)) #define FSUBRr0(R) _OOr(0xd8e8,_rN(R)) #define FSUBR0r(R) _OOr(0xdce0,_rN(R)) #define FSUBRP0r(R) _OOr(0xdee0,_rN(R)) #define FSUBRSm(D,B,I,S) _ESCmi(D,B,I,S,050) #define FSUBRLm(D,B,I,S) _ESCmi(D,B,I,S,054) #define FMULr0(R) _OOr(0xd8c8,_rN(R)) #define FMUL0r(R) _OOr(0xdcc8,_rN(R)) #define FMULP0r(R) _OOr(0xdec8,_rN(R)) #define FMULSm(D,B,I,S) _ESCmi(D,B,I,S,010) #define FMULLm(D,B,I,S) _ESCmi(D,B,I,S,014) #define FDIVr0(R) _OOr(0xd8f0,_rN(R)) #define FDIV0r(R) _OOr(0xdcf8,_rN(R)) #define FDIVP0r(R) _OOr(0xdef8,_rN(R)) #define FDIVSm(D,B,I,S) _ESCmi(D,B,I,S,060) #define FDIVLm(D,B,I,S) _ESCmi(D,B,I,S,064) #define FDIVRr0(R) _OOr(0xd8f8,_rN(R)) #define FDIVR0r(R) _OOr(0xdcf0,_rN(R)) #define FDIVRP0r(R) _OOr(0xdef0,_rN(R)) #define FDIVRSm(D,B,I,S) _ESCmi(D,B,I,S,070) #define FDIVRLm(D,B,I,S) _ESCmi(D,B,I,S,074) #define FCMOVBr0(R) _OOr(0xdac0,_rN(R)) #define FCMOVBEr0(R) _OOr(0xdad0,_rN(R)) #define FCMOVEr0(R) _OOr(0xdac8,_rN(R)) #define FCMOVNBr0(R) _OOr(0xdbc0,_rN(R)) #define FCMOVNBEr0(R) _OOr(0xdbd0,_rN(R)) #define FCMOVNEr0(R) _OOr(0xdbc8,_rN(R)) #define FCMOVNUr0(R) _OOr(0xdbd8,_rN(R)) #define FCMOVUr0(R) _OOr(0xdad8,_rN(R)) #define FCOMIr0(R) _OOr(0xdbf0,_rN(R)) #define FCOMIPr0(R) _OOr(0xdff0,_rN(R)) #define FCOMr(R) _OOr(0xd8d0,_rN(R)) #define FCOMSm(D,B,I,S) _ESCmi(D,B,I,S,020) #define FCOMLm(D,B,I,S) _ESCmi(D,B,I,S,024) #define FCOMPr(R) _OOr(0xd8d8,_rN(R)) #define FCOMPSm(D,B,I,S) _ESCmi(D,B,I,S,030) #define FCOMPLm(D,B,I,S) _ESCmi(D,B,I,S,034) #define FUCOMIr0(R) _OOr(0xdbe8,_rN(R)) #define FUCOMIPr0(R) _OOr(0xdfe8,_rN(R)) #define FUCOMPr(R) _OOr(0xdde8,_rN(R)) #define FUCOMr(R) _OOr(0xdde0,_rN(R)) #define FIADDLm(D,B,I,S) _ESCmi(D,B,I,S,002) #define FICOMLm(D,B,I,S) _ESCmi(D,B,I,S,022) #define FICOMPLm(D,B,I,S) _ESCmi(D,B,I,S,032) #define FIDIVLm(D,B,I,S) _ESCmi(D,B,I,S,062) #define FIDIVRLm(D,B,I,S) _ESCmi(D,B,I,S,072) #define FILDLm(D,B,I,S) _ESCmi(D,B,I,S,003) #define FILDQm(D,B,I,S) _ESCmi(D,B,I,S,057) #define FIMULLm(D,B,I,S) _ESCmi(D,B,I,S,012) #define FISTLm(D,B,I,S) _ESCmi(D,B,I,S,023) #define FISTPLm(D,B,I,S) _ESCmi(D,B,I,S,033) #define FISTPQm(D,B,I,S) _ESCmi(D,B,I,S,077) #define FISUBLm(D,B,I,S) _ESCmi(D,B,I,S,042) #define FISUBRLm(D,B,I,S) _ESCmi(D,B,I,S,052) #define FREEr(R) _OOr(0xddc0,_rN(R)) #define FXCHr(R) _OOr(0xd9c8,_rN(R)) #endif /* X86_RTASM_H */ aranym-1.1.0/src/uae_cpu/compiler/codegen_x86.cpp0000664000175000017500000036472313454637622020060 0ustar joyjoy/* * compiler/codegen_x86.cpp - IA-32 and AMD64 code generator * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * JIT compiler m68k -> IA-32 and AMD64 * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * Adaptation for Basilisk II and improvements, copyright 2000-2004 Gwenole Beauchesne * Portions related to CPU detection come from linux/arch/i386/kernel/setup.c * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This should eventually end up in machdep/, but for now, x86 is the only target, and it's easier this way... */ #include "flags_x86.h" /************************************************************************* * Some basic information about the the target CPU * *************************************************************************/ #define R1 RR1 #define R2 RR2 #define R4 RR4 #define EAX_INDEX 0 #define ECX_INDEX 1 #define EDX_INDEX 2 #define EBX_INDEX 3 #define ESP_INDEX 4 #define EBP_INDEX 5 #define ESI_INDEX 6 #define EDI_INDEX 7 #if defined(CPU_x86_64) #define R8_INDEX 8 #define R9_INDEX 9 #define R10_INDEX 10 #define R11_INDEX 11 #define R12_INDEX 12 #define R13_INDEX 13 #define R14_INDEX 14 #define R15_INDEX 15 #endif /* XXX this has to match X86_Reg8H_Base + 4 */ #define AH_INDEX (0x10+4+EAX_INDEX) #define CH_INDEX (0x10+4+ECX_INDEX) #define DH_INDEX (0x10+4+EDX_INDEX) #define BH_INDEX (0x10+4+EBX_INDEX) /* The register in which subroutines return an integer return value */ #define REG_RESULT EAX_INDEX /* The registers subroutines take their first and second argument in */ #ifdef _WIN32 /* Handle the _fastcall parameters of ECX and EDX */ #define REG_PAR1 ECX_INDEX #define REG_PAR2 EDX_INDEX #elif defined(CPU_x86_64) #define REG_PAR1 EDI_INDEX #define REG_PAR2 ESI_INDEX #else #define REG_PAR1 EAX_INDEX #define REG_PAR2 EDX_INDEX #endif #define REG_PC_PRE EAX_INDEX /* The register we use for preloading regs.pc_p */ #ifdef _WIN32 #define REG_PC_TMP ECX_INDEX #else #define REG_PC_TMP ECX_INDEX /* Another register that is not the above */ #endif #define SHIFTCOUNT_NREG ECX_INDEX /* Register that can be used for shiftcount. -1 if any reg will do */ #define MUL_NREG1 EAX_INDEX /* %eax will hold the low 32 bits after a 32x32 mul */ #define MUL_NREG2 EDX_INDEX /* %edx will hold the high 32 bits */ #define STACK_ALIGN 16 #define STACK_OFFSET sizeof(void *) #ifdef _WIN64 /* In the Microsoft x64 calling convention, it's the caller's responsibility * to allocate 32 bytes of "shadow space" on the stack right before calling * the function (regardless of the actual number of parameters used). */ #define STACK_SHADOW_SPACE 32 #else #define STACK_SHADOW_SPACE 0 #endif #if defined(CPU_x86_64) #ifdef UAE /* Register R12 (and ESP) cannot be used with simple [r/m + disp32] addressing, * since r/m bits 100 implies SIB byte. Simplest fix is to not use these * registers. Also note that these registers are listed in the freescratch * function as well. */ uae_s8 always_used[] = { ESP_INDEX, R12_INDEX, -1 }; #else uae_s8 always_used[] = { ESP_INDEX, -1 }; #endif uae_s8 can_byte[]={0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,-1}; uae_s8 can_word[]={0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,-1}; #else uae_s8 always_used[] = { ESP_INDEX, -1 }; uae_s8 can_byte[]={0,1,2,3,-1}; uae_s8 can_word[]={0,1,2,3,5,6,7,-1}; #endif static bool have_lahf_lm = true; // target has LAHF supported in long mode ? #if USE_OPTIMIZED_CALLS /* Make sure interpretive core does not use cpuopti */ uae_u8 call_saved[]={0,0,0,1,1,1,1,1}; #error FIXME: code not ready #else /* cpuopti mutate instruction handlers to assume registers are saved by the caller */ uae_u8 call_saved[]={0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0}; #endif /* This *should* be the same as call_saved. But: - We might not really know which registers are saved, and which aren't, so we need to preserve some, but don't want to rely on everyone else also saving those registers - Special registers (such like the stack pointer) should not be "preserved" by pushing, even though they are "saved" across function calls */ #if defined(CPU_x86_64) #ifdef _WIN64 /* https://msdn.microsoft.com/en-us/library/6t169e9c.aspx: * "The registers RBX, RBP, RDI, RSI, RSP, R12, R13, R14, and R15 are * considered nonvolatile and must be saved and restored by a function that * uses them". Also saving r11 for now (see comment below). */ static const uae_u8 need_to_preserve[]={0,0,0,1,0,1,1,1,0,0,0,1,1,1,1,1}; #else /* callee-saved registers as defined by Linux AMD64 ABI: rbx, rbp, rsp, r12 - r15 */ /* preserve r11 because it's generally used to hold pointers to functions */ /* FIXME: not really sure what the point of saving r11 is (??). If functions * cannot assume calle preserves it, it will not be used across calls anyway? */ static const uae_u8 need_to_preserve[]={0,0,0,1,0,1,0,0,0,0,0,1,1,1,1,1}; #endif #else /* callee-saved registers as defined by System V IA-32 ABI: edi, esi, ebx, ebp */ static const uae_u8 need_to_preserve[]={0,0,0,1,0,1,1,1}; #endif /* Whether classes of instructions do or don't clobber the native flags */ #define CLOBBER_MOV #define CLOBBER_LEA #define CLOBBER_CMOV #define CLOBBER_POP #define CLOBBER_PUSH #define CLOBBER_SUB clobber_flags() #define CLOBBER_SBB clobber_flags() #define CLOBBER_CMP clobber_flags() #define CLOBBER_ADD clobber_flags() #define CLOBBER_ADC clobber_flags() #define CLOBBER_AND clobber_flags() #define CLOBBER_OR clobber_flags() #define CLOBBER_XOR clobber_flags() #define CLOBBER_ROL clobber_flags() #define CLOBBER_ROR clobber_flags() #define CLOBBER_SHLL clobber_flags() #define CLOBBER_SHRL clobber_flags() #define CLOBBER_SHRA clobber_flags() #define CLOBBER_TEST clobber_flags() #define CLOBBER_CL16 #define CLOBBER_CL8 #define CLOBBER_SE32 #define CLOBBER_SE16 #define CLOBBER_SE8 #define CLOBBER_ZE32 #define CLOBBER_ZE16 #define CLOBBER_ZE8 #define CLOBBER_SW16 clobber_flags() #define CLOBBER_SW32 #define CLOBBER_SETCC #define CLOBBER_MUL clobber_flags() #define CLOBBER_BT clobber_flags() #define CLOBBER_BSF clobber_flags() /* The older code generator is now deprecated. */ #define USE_NEW_RTASM 1 #if USE_NEW_RTASM #if defined(CPU_x86_64) #define X86_TARGET_64BIT 1 /* The address override prefix causes a 5 cycles penalty on Intel Core processors. Another solution would be to decompose the load in an LEA, MOV (to zero-extend), MOV (from memory): is it better? */ #define ADDR32 x86_emit_byte(0x67), #else #define ADDR32 #endif #define X86_FLAT_REGISTERS 0 #define X86_OPTIMIZE_ALU 1 #define X86_OPTIMIZE_ROTSHI 1 #include "codegen_x86.h" #define x86_emit_byte(B) emit_byte(B) #define x86_emit_word(W) emit_word(W) #define x86_emit_long(L) emit_long(L) #define x86_emit_quad(Q) emit_quad(Q) #define x86_get_target() get_target() #define x86_emit_failure(MSG) jit_fail(MSG, __FILE__, __LINE__, __FUNCTION__) static inline void x86_64_addr32(void) { #ifdef CPU_x86_64 emit_byte(0x67); #endif } static inline void x86_64_rex(bool /* w */, uae_u32 * /* r */, uae_u32 * /* x */, uae_u32 *b) { #ifdef CPU_x86_64 int rex_byte = 0x40; if (*b >= R8_INDEX) { *b -= R8_INDEX; rex_byte |= 1; } if (rex_byte != 0x40) { emit_byte(rex_byte); } #else UNUSED(b); #endif } static inline void x86_64_prefix( bool addr32, bool w, uae_u32 *r, uae_u32 *x, uae_u32 *b) { if (addr32) { x86_64_addr32(); } x86_64_rex(w, r, x, b); } // Some mappings to mark compemu_support calls as only used by compemu // These are still mainly x86 minded. Should be more CPU independent in the future #define compemu_raw_add_l_mi(a,b) raw_add_l_mi(a,b) #define compemu_raw_and_l_ri(a,b) raw_and_l_ri(a,b) #define compemu_raw_bswap_32(a) raw_bswap_32(a) #define compemu_raw_bt_l_ri(a,b) raw_bt_l_ri(a,b) #define compemu_raw_call(a) raw_call(a) #define compemu_raw_cmov_l_rm_indexed(a,b,c,d,e) raw_cmov_l_rm_indexed(a,b,c,d,e) #define compemu_raw_cmp_l_mi(a,b) raw_cmp_l_mi(a,b) #define compemu_raw_cmp_l_mi8(a,b) raw_cmp_l_mi(a,b) #define compemu_raw_jcc_b_oponly(a) raw_jcc_b_oponly(a) #define compemu_raw_jcc_l_oponly(a) raw_jcc_l_oponly(a) #define compemu_raw_jl(a) raw_jl(a) #define compemu_raw_jmp(a) raw_jmp(a) #define compemu_raw_jmp_m_indexed(a,b,c) raw_jmp_m_indexed(a,b,c) #define compemu_raw_jmp_r(a) raw_jmp_r(a) #define compemu_raw_jnz(a) raw_jnz(a) #define compemu_raw_jz_b_oponly() raw_jz_b_oponly() #define compemu_raw_lea_l_brr(a,b,c) raw_lea_l_brr(a,b,c) #define compemu_raw_lea_l_brr_indexed(a,b,c,d,e) raw_lea_l_brr_indexed(a,b,c,d,e) #define compemu_raw_mov_b_mr(a,b) raw_mov_b_mr(a,b) #define compemu_raw_mov_l_mi(a,b) raw_mov_l_mi(a,b) #define compemu_raw_mov_l_mr(a,b) raw_mov_l_mr(a,b) #define compemu_raw_mov_l_ri(a,b) raw_mov_l_ri(a,b) #define compemu_raw_mov_l_rm(a,b) raw_mov_l_rm(a,b) #define compemu_raw_mov_l_rr(a,b) raw_mov_l_rr(a,b) #define compemu_raw_mov_w_mr(a,b) raw_mov_w_mr(a,b) #define compemu_raw_sub_l_mi(a,b) raw_sub_l_mi(a,b) #define compemu_raw_test_l_rr(a,b) raw_test_l_rr(a,b) #define compemu_raw_zero_extend_16_rr(a,b) raw_zero_extend_16_rr(a,b) #define compemu_raw_lea_l_rr_indexed(a,b,c,d) raw_lea_l_rr_indexed(a,b,c,d) static void jit_fail(const char *msg, const char *file, int line, const char *function) { jit_abort("failure in function %s from file %s at line %d: %s", function, file, line, msg); } LOWFUNC(NONE,WRITE,1,raw_push_l_r,(R4 r)) { #if defined(CPU_x86_64) PUSHQr(r); #else PUSHLr(r); #endif } LENDFUNC(NONE,WRITE,1,raw_push_l_r,(R4 r)) LOWFUNC(NONE,READ,1,raw_pop_l_r,(R4 r)) { #if defined(CPU_x86_64) POPQr(r); #else POPLr(r); #endif } LENDFUNC(NONE,READ,1,raw_pop_l_r,(R4 r)) LOWFUNC(NONE,READ,1,raw_pop_l_m,(MEMW d)) { #if defined(CPU_x86_64) POPQm(d, X86_NOREG, X86_NOREG, 1); #else POPLm(d, X86_NOREG, X86_NOREG, 1); #endif } LENDFUNC(NONE,READ,1,raw_pop_l_m,(MEMW d)) LOWFUNC(WRITE,NONE,2,raw_bt_l_ri,(R4 r, IMM i)) { BTLir(i, r); } LENDFUNC(WRITE,NONE,2,raw_bt_l_ri,(R4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_bt_l_rr,(R4 r, R4 b)) { BTLrr(b, r); } LENDFUNC(WRITE,NONE,2,raw_bt_l_rr,(R4 r, R4 b)) LOWFUNC(WRITE,NONE,2,raw_btc_l_ri,(RW4 r, IMM i)) { BTCLir(i, r); } LENDFUNC(WRITE,NONE,2,raw_btc_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_btc_l_rr,(RW4 r, R4 b)) { BTCLrr(b, r); } LENDFUNC(WRITE,NONE,2,raw_btc_l_rr,(RW4 r, R4 b)) LOWFUNC(WRITE,NONE,2,raw_btr_l_ri,(RW4 r, IMM i)) { BTRLir(i, r); } LENDFUNC(WRITE,NONE,2,raw_btr_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_btr_l_rr,(RW4 r, R4 b)) { BTRLrr(b, r); } LENDFUNC(WRITE,NONE,2,raw_btr_l_rr,(RW4 r, R4 b)) LOWFUNC(WRITE,NONE,2,raw_bts_l_ri,(RW4 r, IMM i)) { BTSLir(i, r); } LENDFUNC(WRITE,NONE,2,raw_bts_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_bts_l_rr,(RW4 r, R4 b)) { BTSLrr(b, r); } LENDFUNC(WRITE,NONE,2,raw_bts_l_rr,(RW4 r, R4 b)) LOWFUNC(WRITE,NONE,2,raw_sub_w_ri,(RW2 d, IMM i)) { SUBWir(i, d); } LENDFUNC(WRITE,NONE,2,raw_sub_w_ri,(RW2 d, IMM i)) LOWFUNC(NONE,READ,2,raw_mov_l_rm,(W4 d, MEMR s)) { ADDR32 MOVLmr(s, X86_NOREG, X86_NOREG, 1, d); } LENDFUNC(NONE,READ,2,raw_mov_l_rm,(W4 d, MEMR s)) LOWFUNC(NONE,WRITE,2,raw_mov_l_mi,(MEMW d, IMM s)) { ADDR32 MOVLim(s, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,2,raw_mov_l_mi,(MEMW d, IMM s)) LOWFUNC(NONE,WRITE,2,raw_mov_w_mi,(MEMW d, IMM s)) { ADDR32 MOVWim(s, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,2,raw_mov_w_mi,(MEMW d, IMM s)) LOWFUNC(NONE,WRITE,2,raw_mov_b_mi,(MEMW d, IMM s)) { ADDR32 MOVBim(s, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,2,raw_mov_b_mi,(MEMW d, IMM s)) LOWFUNC(WRITE,RMW,2,raw_rol_b_mi,(MEMRW d, IMM i)) { ADDR32 ROLBim(i, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(WRITE,RMW,2,raw_rol_b_mi,(MEMRW d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_rol_b_ri,(RW1 r, IMM i)) { ROLBir(i, r); } LENDFUNC(WRITE,NONE,2,raw_rol_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_rol_w_ri,(RW2 r, IMM i)) { ROLWir(i, r); } LENDFUNC(WRITE,NONE,2,raw_rol_w_ri,(RW2 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_rol_l_ri,(RW4 r, IMM i)) { ROLLir(i, r); } LENDFUNC(WRITE,NONE,2,raw_rol_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_rol_l_rr,(RW4 d, R1 r)) { ROLLrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_rol_l_rr,(RW4 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_rol_w_rr,(RW2 d, R1 r)) { ROLWrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_rol_w_rr,(RW2 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_rol_b_rr,(RW1 d, R1 r)) { ROLBrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_rol_b_rr,(RW1 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shll_l_rr,(RW4 d, R1 r)) { SHLLrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_shll_l_rr,(RW4 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shll_w_rr,(RW2 d, R1 r)) { SHLWrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_shll_w_rr,(RW2 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shll_b_rr,(RW1 d, R1 r)) { SHLBrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_shll_b_rr,(RW1 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_ror_b_ri,(RW1 r, IMM i)) { RORBir(i, r); } LENDFUNC(WRITE,NONE,2,raw_ror_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_ror_w_ri,(RW2 r, IMM i)) { RORWir(i, r); } LENDFUNC(WRITE,NONE,2,raw_ror_w_ri,(RW2 r, IMM i)) LOWFUNC(WRITE,READ,2,raw_or_l_rm,(RW4 d, MEMR s)) { ADDR32 ORLmr(s, X86_NOREG, X86_NOREG, 1, d); } LENDFUNC(WRITE,READ,2,raw_or_l_rm,(RW4 d, MEMR s)) LOWFUNC(WRITE,NONE,2,raw_ror_l_ri,(RW4 r, IMM i)) { RORLir(i, r); } LENDFUNC(WRITE,NONE,2,raw_ror_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_ror_l_rr,(RW4 d, R1 r)) { RORLrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_ror_l_rr,(RW4 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_ror_w_rr,(RW2 d, R1 r)) { RORWrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_ror_w_rr,(RW2 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_ror_b_rr,(RW1 d, R1 r)) { RORBrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_ror_b_rr,(RW1 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shrl_l_rr,(RW4 d, R1 r)) { SHRLrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_shrl_l_rr,(RW4 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shrl_w_rr,(RW2 d, R1 r)) { SHRWrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_shrl_w_rr,(RW2 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shrl_b_rr,(RW1 d, R1 r)) { SHRBrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_shrl_b_rr,(RW1 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shra_l_rr,(RW4 d, R1 r)) { SARLrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_shra_l_rr,(RW4 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shra_w_rr,(RW2 d, R1 r)) { SARWrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_shra_w_rr,(RW2 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shra_b_rr,(RW1 d, R1 r)) { SARBrr(r, d); } LENDFUNC(WRITE,NONE,2,raw_shra_b_rr,(RW1 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shll_l_ri,(RW4 r, IMM i)) { SHLLir(i, r); } LENDFUNC(WRITE,NONE,2,raw_shll_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shll_w_ri,(RW2 r, IMM i)) { SHLWir(i, r); } LENDFUNC(WRITE,NONE,2,raw_shll_w_ri,(RW2 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shll_b_ri,(RW1 r, IMM i)) { SHLBir(i, r); } LENDFUNC(WRITE,NONE,2,raw_shll_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shrl_l_ri,(RW4 r, IMM i)) { SHRLir(i, r); } LENDFUNC(WRITE,NONE,2,raw_shrl_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shrl_w_ri,(RW2 r, IMM i)) { SHRWir(i, r); } LENDFUNC(WRITE,NONE,2,raw_shrl_w_ri,(RW2 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shrl_b_ri,(RW1 r, IMM i)) { SHRBir(i, r); } LENDFUNC(WRITE,NONE,2,raw_shrl_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shra_l_ri,(RW4 r, IMM i)) { SARLir(i, r); } LENDFUNC(WRITE,NONE,2,raw_shra_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shra_w_ri,(RW2 r, IMM i)) { SARWir(i, r); } LENDFUNC(WRITE,NONE,2,raw_shra_w_ri,(RW2 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shra_b_ri,(RW1 r, IMM i)) { SARBir(i, r); } LENDFUNC(WRITE,NONE,2,raw_shra_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,1,raw_sahf,(R2)) { SAHF(); } LENDFUNC(WRITE,NONE,1,raw_sahf,(R2 dummy_ah)) LOWFUNC(NONE,NONE,1,raw_cpuid,(R4)) { CPUID(); } LENDFUNC(NONE,NONE,1,raw_cpuid,(R4 dummy_eax)) LOWFUNC(READ,NONE,1,raw_lahf,(W2)) { LAHF(); } LENDFUNC(READ,NONE,1,raw_lahf,(W2 dummy_ah)) LOWFUNC(READ,NONE,2,raw_setcc,(W1 d, IMM cc)) { SETCCir(cc, d); } LENDFUNC(READ,NONE,2,raw_setcc,(W1 d, IMM cc)) LOWFUNC(READ,WRITE,2,raw_setcc_m,(MEMW d, IMM cc)) { ADDR32 SETCCim(cc, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(READ,WRITE,2,raw_setcc_m,(MEMW d, IMM cc)) LOWFUNC(READ,NONE,3,raw_cmov_l_rr,(RW4 d, R4 s, IMM cc)) { if (have_cmov) CMOVLrr(cc, s, d); else { /* replacement using branch and mov */ uae_s8 *target_p = (uae_s8 *)x86_get_target() + 1; JCCSii(cc^1, 0); MOVLrr(s, d); *target_p = (uintptr)x86_get_target() - ((uintptr)target_p + 1); } } LENDFUNC(READ,NONE,3,raw_cmov_l_rr,(RW4 d, R4 s, IMM cc)) LOWFUNC(WRITE,NONE,2,raw_bsf_l_rr,(W4 d, R4 s)) { BSFLrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_bsf_l_rr,(W4 d, R4 s)) LOWFUNC(NONE,NONE,2,raw_sign_extend_32_rr,(W4 d, R4 s)) { MOVSLQrr(s, d); } LENDFUNC(NONE,NONE,2,raw_sign_extend_32_rr,(W4 d, R4 s)) LOWFUNC(NONE,NONE,2,raw_sign_extend_16_rr,(W4 d, R2 s)) { MOVSWLrr(s, d); } LENDFUNC(NONE,NONE,2,raw_sign_extend_16_rr,(W4 d, R2 s)) LOWFUNC(NONE,NONE,2,raw_sign_extend_8_rr,(W4 d, R1 s)) { MOVSBLrr(s, d); } LENDFUNC(NONE,NONE,2,raw_sign_extend_8_rr,(W4 d, R1 s)) LOWFUNC(NONE,NONE,2,raw_zero_extend_16_rr,(W4 d, R2 s)) { MOVZWLrr(s, d); } LENDFUNC(NONE,NONE,2,raw_zero_extend_16_rr,(W4 d, R2 s)) LOWFUNC(NONE,NONE,2,raw_zero_extend_8_rr,(W4 d, R1 s)) { MOVZBLrr(s, d); } LENDFUNC(NONE,NONE,2,raw_zero_extend_8_rr,(W4 d, R1 s)) LOWFUNC(NONE,NONE,2,raw_imul_32_32,(RW4 d, R4 s)) { IMULLrr(s, d); } LENDFUNC(NONE,NONE,2,raw_imul_32_32,(RW4 d, R4 s)) LOWFUNC(NONE,NONE,2,raw_imul_64_32,(RW4 d, RW4 s)) { if (d!=MUL_NREG1 || s!=MUL_NREG2) { jit_abort("Bad register in IMUL: d=%d, s=%d",d,s); } IMULLr(s); } LENDFUNC(NONE,NONE,2,raw_imul_64_32,(RW4 d, RW4 s)) LOWFUNC(NONE,NONE,2,raw_mul_64_32,(RW4 d, RW4 s)) { if (d!=MUL_NREG1 || s!=MUL_NREG2) { jit_abort("Bad register in MUL: d=%d, s=%d",d,s); } MULLr(s); } LENDFUNC(NONE,NONE,2,raw_mul_64_32,(RW4 d, RW4 s)) LOWFUNC(NONE,NONE,2,raw_mul_32_32,(RW4, R4)) { x86_emit_failure("raw_mul_32_32"); /* %^$&%^$%#^ x86! */ } LENDFUNC(NONE,NONE,2,raw_mul_32_32,(RW4 d, R4 s)) LOWFUNC(NONE,NONE,2,raw_mov_b_rr,(W1 d, R1 s)) { MOVBrr(s, d); } LENDFUNC(NONE,NONE,2,raw_mov_b_rr,(W1 d, R1 s)) LOWFUNC(NONE,NONE,2,raw_mov_w_rr,(W2 d, R2 s)) { MOVWrr(s, d); } LENDFUNC(NONE,NONE,2,raw_mov_w_rr,(W2 d, R2 s)) LOWFUNC(NONE,READ,4,raw_mov_l_rrm_indexed,(W4 d,R4 baser, R4 index, IMM factor)) { ADDR32 MOVLmr(0, baser, index, factor, d); } LENDFUNC(NONE,READ,4,raw_mov_l_rrm_indexed,(W4 d,R4 baser, R4 index, IMM factor)) LOWFUNC(NONE,READ,4,raw_mov_w_rrm_indexed,(W2 d, R4 baser, R4 index, IMM factor)) { ADDR32 MOVWmr(0, baser, index, factor, d); } LENDFUNC(NONE,READ,4,raw_mov_w_rrm_indexed,(W2 d, R4 baser, R4 index, IMM factor)) LOWFUNC(NONE,READ,4,raw_mov_b_rrm_indexed,(W1 d, R4 baser, R4 index, IMM factor)) { ADDR32 MOVBmr(0, baser, index, factor, d); } LENDFUNC(NONE,READ,4,raw_mov_b_rrm_indexed,(W1 d, R4 baser, R4 index, IMM factor)) LOWFUNC(NONE,WRITE,4,raw_mov_l_mrr_indexed,(R4 baser, R4 index, IMM factor, R4 s)) { ADDR32 MOVLrm(s, 0, baser, index, factor); } LENDFUNC(NONE,WRITE,4,raw_mov_l_mrr_indexed,(R4 baser, R4 index, IMM factor, R4 s)) LOWFUNC(NONE,WRITE,4,raw_mov_w_mrr_indexed,(R4 baser, R4 index, IMM factor, R2 s)) { ADDR32 MOVWrm(s, 0, baser, index, factor); } LENDFUNC(NONE,WRITE,4,raw_mov_w_mrr_indexed,(R4 baser, R4 index, IMM factor, R2 s)) LOWFUNC(NONE,WRITE,4,raw_mov_b_mrr_indexed,(R4 baser, R4 index, IMM factor, R1 s)) { ADDR32 MOVBrm(s, 0, baser, index, factor); } LENDFUNC(NONE,WRITE,4,raw_mov_b_mrr_indexed,(R4 baser, R4 index, IMM factor, R1 s)) LOWFUNC(NONE,WRITE,5,raw_mov_l_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R4 s)) { ADDR32 MOVLrm(s, base, baser, index, factor); } LENDFUNC(NONE,WRITE,5,raw_mov_l_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R4 s)) LOWFUNC(NONE,WRITE,5,raw_mov_w_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R2 s)) { ADDR32 MOVWrm(s, base, baser, index, factor); } LENDFUNC(NONE,WRITE,5,raw_mov_w_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R2 s)) LOWFUNC(NONE,WRITE,5,raw_mov_b_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R1 s)) { ADDR32 MOVBrm(s, base, baser, index, factor); } LENDFUNC(NONE,WRITE,5,raw_mov_b_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R1 s)) LOWFUNC(NONE,READ,5,raw_mov_l_brrm_indexed,(W4 d, IMM base, R4 baser, R4 index, IMM factor)) { ADDR32 MOVLmr(base, baser, index, factor, d); } LENDFUNC(NONE,READ,5,raw_mov_l_brrm_indexed,(W4 d, IMM base, R4 baser, R4 index, IMM factor)) LOWFUNC(NONE,READ,5,raw_mov_w_brrm_indexed,(W2 d, IMM base, R4 baser, R4 index, IMM factor)) { ADDR32 MOVWmr(base, baser, index, factor, d); } LENDFUNC(NONE,READ,5,raw_mov_w_brrm_indexed,(W2 d, IMM base, R4 baser, R4 index, IMM factor)) LOWFUNC(NONE,READ,5,raw_mov_b_brrm_indexed,(W1 d, IMM base, R4 baser, R4 index, IMM factor)) { ADDR32 MOVBmr(base, baser, index, factor, d); } LENDFUNC(NONE,READ,5,raw_mov_b_brrm_indexed,(W1 d, IMM base, R4 baser, R4 index, IMM factor)) LOWFUNC(NONE,READ,4,raw_mov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM factor)) { ADDR32 MOVLmr(base, X86_NOREG, index, factor, d); } LENDFUNC(NONE,READ,4,raw_mov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM factor)) LOWFUNC(NONE,READ,5,raw_cmov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM factor, IMM cond)) { if (have_cmov) ADDR32 CMOVLmr(cond, base, X86_NOREG, index, factor, d); else { /* replacement using branch and mov */ uae_s8 *target_p = (uae_s8 *)x86_get_target() + 1; JCCSii(cond^1, 0); ADDR32 MOVLmr(base, X86_NOREG, index, factor, d); *target_p = (uintptr)x86_get_target() - ((uintptr)target_p + 1); } } LENDFUNC(NONE,READ,5,raw_cmov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM factor, IMM cond)) LOWFUNC(NONE,READ,3,raw_cmov_l_rm,(W4 d, IMM mem, IMM cond)) { if (have_cmov) CMOVLmr(cond, mem, X86_NOREG, X86_NOREG, 1, d); else { /* replacement using branch and mov */ uae_s8 *target_p = (uae_s8 *)x86_get_target() + 1; JCCSii(cond^1, 0); ADDR32 MOVLmr(mem, X86_NOREG, X86_NOREG, 1, d); *target_p = (uintptr)x86_get_target() - ((uintptr)target_p + 1); } } LENDFUNC(NONE,READ,3,raw_cmov_l_rm,(W4 d, IMM mem, IMM cond)) LOWFUNC(NONE,READ,3,raw_mov_l_rR,(W4 d, R4 s, IMM offset)) { ADDR32 MOVLmr(offset, s, X86_NOREG, 1, d); } LENDFUNC(NONE,READ,3,raw_mov_l_rR,(W4 d, R4 s, IMM offset)) LOWFUNC(NONE,READ,3,raw_mov_w_rR,(W2 d, R4 s, IMM offset)) { ADDR32 MOVWmr(offset, s, X86_NOREG, 1, d); } LENDFUNC(NONE,READ,3,raw_mov_w_rR,(W2 d, R4 s, IMM offset)) LOWFUNC(NONE,READ,3,raw_mov_b_rR,(W1 d, R4 s, IMM offset)) { ADDR32 MOVBmr(offset, s, X86_NOREG, 1, d); } LENDFUNC(NONE,READ,3,raw_mov_b_rR,(W1 d, R4 s, IMM offset)) LOWFUNC(NONE,READ,3,raw_mov_l_brR,(W4 d, R4 s, IMM offset)) { ADDR32 MOVLmr(offset, s, X86_NOREG, 1, d); } LENDFUNC(NONE,READ,3,raw_mov_l_brR,(W4 d, R4 s, IMM offset)) LOWFUNC(NONE,READ,3,raw_mov_w_brR,(W2 d, R4 s, IMM offset)) { ADDR32 MOVWmr(offset, s, X86_NOREG, 1, d); } LENDFUNC(NONE,READ,3,raw_mov_w_brR,(W2 d, R4 s, IMM offset)) LOWFUNC(NONE,READ,3,raw_mov_b_brR,(W1 d, R4 s, IMM offset)) { ADDR32 MOVBmr(offset, s, X86_NOREG, 1, d); } LENDFUNC(NONE,READ,3,raw_mov_b_brR,(W1 d, R4 s, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_l_Ri,(R4 d, IMM i, IMM offset)) { ADDR32 MOVLim(i, offset, d, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,3,raw_mov_l_Ri,(R4 d, IMM i, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_w_Ri,(R4 d, IMM i, IMM offset)) { ADDR32 MOVWim(i, offset, d, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,3,raw_mov_w_Ri,(R4 d, IMM i, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_b_Ri,(R4 d, IMM i, IMM offset)) { ADDR32 MOVBim(i, offset, d, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,3,raw_mov_b_Ri,(R4 d, IMM i, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_l_Rr,(R4 d, R4 s, IMM offset)) { ADDR32 MOVLrm(s, offset, d, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,3,raw_mov_l_Rr,(R4 d, R4 s, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_w_Rr,(R4 d, R2 s, IMM offset)) { ADDR32 MOVWrm(s, offset, d, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,3,raw_mov_w_Rr,(R4 d, R2 s, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_b_Rr,(R4 d, R1 s, IMM offset)) { ADDR32 MOVBrm(s, offset, d, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,3,raw_mov_b_Rr,(R4 d, R1 s, IMM offset)) LOWFUNC(NONE,NONE,3,raw_lea_l_brr,(W4 d, R4 s, IMM offset)) { ADDR32 LEALmr(offset, s, X86_NOREG, 1, d); } LENDFUNC(NONE,NONE,3,raw_lea_l_brr,(W4 d, R4 s, IMM offset)) LOWFUNC(NONE,NONE,5,raw_lea_l_brr_indexed,(W4 d, R4 s, R4 index, IMM factor, IMM offset)) { ADDR32 LEALmr(offset, s, index, factor, d); } LENDFUNC(NONE,NONE,5,raw_lea_l_brr_indexed,(W4 d, R4 s, R4 index, IMM factor, IMM offset)) LOWFUNC(NONE,NONE,4,raw_lea_l_rr_indexed,(W4 d, R4 s, R4 index, IMM factor)) { ADDR32 LEALmr(0, s, index, factor, d); } LENDFUNC(NONE,NONE,4,raw_lea_l_rr_indexed,(W4 d, R4 s, R4 index, IMM factor)) LOWFUNC(NONE,NONE,4,raw_lea_l_r_scaled,(W4 d, R4 index, IMM factor)) { ADDR32 LEALmr(0, X86_NOREG, index, factor, d); } LENDFUNC(NONE,NONE,4,raw_lea_l_r_scaled,(W4 d, R4 index, IMM factor)) LOWFUNC(NONE,WRITE,3,raw_mov_l_bRr,(R4 d, R4 s, IMM offset)) { ADDR32 MOVLrm(s, offset, d, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,3,raw_mov_l_bRr,(R4 d, R4 s, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_w_bRr,(R4 d, R2 s, IMM offset)) { ADDR32 MOVWrm(s, offset, d, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,3,raw_mov_w_bRr,(R4 d, R2 s, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_b_bRr,(R4 d, R1 s, IMM offset)) { ADDR32 MOVBrm(s, offset, d, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,3,raw_mov_b_bRr,(R4 d, R1 s, IMM offset)) LOWFUNC(NONE,NONE,1,raw_bswap_32,(RW4 r)) { BSWAPLr(r); } LENDFUNC(NONE,NONE,1,raw_bswap_32,(RW4 r)) LOWFUNC(WRITE,NONE,1,raw_bswap_16,(RW2 r)) { ROLWir(8, r); } LENDFUNC(WRITE,NONE,1,raw_bswap_16,(RW2 r)) LOWFUNC(NONE,NONE,2,raw_mov_l_rr,(W4 d, R4 s)) { MOVLrr(s, d); } LENDFUNC(NONE,NONE,2,raw_mov_l_rr,(W4 d, R4 s)) LOWFUNC(NONE,WRITE,2,raw_mov_l_mr,(IMM d, R4 s)) { ADDR32 MOVLrm(s, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,2,raw_mov_l_mr,(IMM d, R4 s)) LOWFUNC(NONE,WRITE,2,raw_mov_w_mr,(IMM d, R2 s)) { ADDR32 MOVWrm(s, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,2,raw_mov_w_mr,(IMM d, R2 s)) LOWFUNC(NONE,READ,2,raw_mov_w_rm,(W2 d, IMM s)) { ADDR32 MOVWmr(s, X86_NOREG, X86_NOREG, 1, d); } LENDFUNC(NONE,READ,2,raw_mov_w_rm,(W2 d, IMM s)) LOWFUNC(NONE,WRITE,2,raw_mov_b_mr,(IMM d, R1 s)) { ADDR32 MOVBrm(s, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(NONE,WRITE,2,raw_mov_b_mr,(IMM d, R1 s)) LOWFUNC(NONE,READ,2,raw_mov_b_rm,(W1 d, IMM s)) { ADDR32 MOVBmr(s, X86_NOREG, X86_NOREG, 1, d); } LENDFUNC(NONE,READ,2,raw_mov_b_rm,(W1 d, IMM s)) LOWFUNC(NONE,NONE,2,raw_mov_l_ri,(W4 d, IMM s)) { MOVLir(s, d); } LENDFUNC(NONE,NONE,2,raw_mov_l_ri,(W4 d, IMM s)) LOWFUNC(NONE,NONE,2,raw_mov_w_ri,(W2 d, IMM s)) { MOVWir(s, d); } LENDFUNC(NONE,NONE,2,raw_mov_w_ri,(W2 d, IMM s)) LOWFUNC(NONE,NONE,2,raw_mov_b_ri,(W1 d, IMM s)) { MOVBir(s, d); } LENDFUNC(NONE,NONE,2,raw_mov_b_ri,(W1 d, IMM s)) LOWFUNC(RMW,RMW,2,raw_adc_l_mi,(MEMRW d, IMM s)) { ADDR32 ADCLim(s, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(RMW,RMW,2,raw_adc_l_mi,(MEMRW d, IMM s)) LOWFUNC(WRITE,RMW,2,raw_add_l_mi,(IMM d, IMM s)) { ADDR32 ADDLim(s, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(WRITE,RMW,2,raw_add_l_mi,(IMM d, IMM s)) LOWFUNC(WRITE,RMW,2,raw_add_w_mi,(IMM d, IMM s)) { ADDR32 ADDWim(s, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(WRITE,RMW,2,raw_add_w_mi,(IMM d, IMM s)) LOWFUNC(WRITE,RMW,2,raw_add_b_mi,(IMM d, IMM s)) { ADDR32 ADDBim(s, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(WRITE,RMW,2,raw_add_b_mi,(IMM d, IMM s)) LOWFUNC(WRITE,NONE,2,raw_test_l_ri,(R4 d, IMM i)) { TESTLir(i, d); } LENDFUNC(WRITE,NONE,2,raw_test_l_ri,(R4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_test_l_rr,(R4 d, R4 s)) { TESTLrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_test_l_rr,(R4 d, R4 s)) LOWFUNC(WRITE,NONE,2,raw_test_w_rr,(R2 d, R2 s)) { TESTWrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_test_w_rr,(R2 d, R2 s)) LOWFUNC(WRITE,NONE,2,raw_test_b_rr,(R1 d, R1 s)) { TESTBrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_test_b_rr,(R1 d, R1 s)) LOWFUNC(WRITE,NONE,2,raw_xor_l_ri,(RW4 d, IMM i)) { XORLir(i, d); } LENDFUNC(WRITE,NONE,2,raw_xor_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_and_l_ri,(RW4 d, IMM i)) { ANDLir(i, d); } LENDFUNC(WRITE,NONE,2,raw_and_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_and_w_ri,(RW2 d, IMM i)) { ANDWir(i, d); } LENDFUNC(WRITE,NONE,2,raw_and_w_ri,(RW2 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_and_l,(RW4 d, R4 s)) { ANDLrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_and_l,(RW4 d, R4 s)) LOWFUNC(WRITE,NONE,2,raw_and_w,(RW2 d, R2 s)) { ANDWrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_and_w,(RW2 d, R2 s)) LOWFUNC(WRITE,NONE,2,raw_and_b,(RW1 d, R1 s)) { ANDBrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_and_b,(RW1 d, R1 s)) LOWFUNC(WRITE,NONE,2,raw_or_l_ri,(RW4 d, IMM i)) { ORLir(i, d); } LENDFUNC(WRITE,NONE,2,raw_or_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_or_l,(RW4 d, R4 s)) { ORLrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_or_l,(RW4 d, R4 s)) LOWFUNC(WRITE,NONE,2,raw_or_w,(RW2 d, R2 s)) { ORWrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_or_w,(RW2 d, R2 s)) LOWFUNC(WRITE,NONE,2,raw_or_b,(RW1 d, R1 s)) { ORBrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_or_b,(RW1 d, R1 s)) LOWFUNC(RMW,NONE,2,raw_adc_l,(RW4 d, R4 s)) { ADCLrr(s, d); } LENDFUNC(RMW,NONE,2,raw_adc_l,(RW4 d, R4 s)) LOWFUNC(RMW,NONE,2,raw_adc_w,(RW2 d, R2 s)) { ADCWrr(s, d); } LENDFUNC(RMW,NONE,2,raw_adc_w,(RW2 d, R2 s)) LOWFUNC(RMW,NONE,2,raw_adc_b,(RW1 d, R1 s)) { ADCBrr(s, d); } LENDFUNC(RMW,NONE,2,raw_adc_b,(RW1 d, R1 s)) LOWFUNC(WRITE,NONE,2,raw_add_l,(RW4 d, R4 s)) { ADDLrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_add_l,(RW4 d, R4 s)) LOWFUNC(WRITE,NONE,2,raw_add_w,(RW2 d, R2 s)) { ADDWrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_add_w,(RW2 d, R2 s)) LOWFUNC(WRITE,NONE,2,raw_add_b,(RW1 d, R1 s)) { ADDBrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_add_b,(RW1 d, R1 s)) LOWFUNC(WRITE,NONE,2,raw_sub_l_ri,(RW4 d, IMM i)) { SUBLir(i, d); } LENDFUNC(WRITE,NONE,2,raw_sub_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_sub_b_ri,(RW1 d, IMM i)) { SUBBir(i, d); } LENDFUNC(WRITE,NONE,2,raw_sub_b_ri,(RW1 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_add_l_ri,(RW4 d, IMM i)) { ADDLir(i, d); } LENDFUNC(WRITE,NONE,2,raw_add_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_add_w_ri,(RW2 d, IMM i)) { ADDWir(i, d); } LENDFUNC(WRITE,NONE,2,raw_add_w_ri,(RW2 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_add_b_ri,(RW1 d, IMM i)) { ADDBir(i, d); } LENDFUNC(WRITE,NONE,2,raw_add_b_ri,(RW1 d, IMM i)) LOWFUNC(RMW,NONE,2,raw_sbb_l,(RW4 d, R4 s)) { SBBLrr(s, d); } LENDFUNC(RMW,NONE,2,raw_sbb_l,(RW4 d, R4 s)) LOWFUNC(RMW,NONE,2,raw_sbb_w,(RW2 d, R2 s)) { SBBWrr(s, d); } LENDFUNC(RMW,NONE,2,raw_sbb_w,(RW2 d, R2 s)) LOWFUNC(RMW,NONE,2,raw_sbb_b,(RW1 d, R1 s)) { SBBBrr(s, d); } LENDFUNC(RMW,NONE,2,raw_sbb_b,(RW1 d, R1 s)) LOWFUNC(WRITE,NONE,2,raw_sub_l,(RW4 d, R4 s)) { SUBLrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_sub_l,(RW4 d, R4 s)) LOWFUNC(WRITE,NONE,2,raw_sub_w,(RW2 d, R2 s)) { SUBWrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_sub_w,(RW2 d, R2 s)) LOWFUNC(WRITE,NONE,2,raw_sub_b,(RW1 d, R1 s)) { SUBBrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_sub_b,(RW1 d, R1 s)) LOWFUNC(WRITE,NONE,2,raw_cmp_l,(R4 d, R4 s)) { CMPLrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_cmp_l,(R4 d, R4 s)) LOWFUNC(WRITE,NONE,2,raw_cmp_l_ri,(R4 r, IMM i)) { CMPLir(i, r); } LENDFUNC(WRITE,NONE,2,raw_cmp_l_ri,(R4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_cmp_w,(R2 d, R2 s)) { CMPWrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_cmp_w,(R2 d, R2 s)) LOWFUNC(WRITE,READ,2,raw_cmp_b_mi,(MEMR d, IMM s)) { ADDR32 CMPBim(s, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(WRITE,READ,2,raw_cmp_b_mi,(MEMR d, IMM s)) LOWFUNC(WRITE,NONE,2,raw_cmp_b_ri,(R1 d, IMM i)) { CMPBir(i, d); } LENDFUNC(WRITE,NONE,2,raw_cmp_b_ri,(R1 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_cmp_b,(R1 d, R1 s)) { CMPBrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_cmp_b,(R1 d, R1 s)) LOWFUNC(WRITE,READ,4,raw_cmp_l_rm_indexed,(R4 d, IMM offset, R4 index, IMM factor)) { ADDR32 CMPLmr(offset, X86_NOREG, index, factor, d); } LENDFUNC(WRITE,READ,4,raw_cmp_l_rm_indexed,(R4 d, IMM offset, R4 index, IMM factor)) LOWFUNC(WRITE,NONE,2,raw_xor_l,(RW4 d, R4 s)) { XORLrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_xor_l,(RW4 d, R4 s)) LOWFUNC(WRITE,NONE,2,raw_xor_w,(RW2 d, R2 s)) { XORWrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_xor_w,(RW2 d, R2 s)) LOWFUNC(WRITE,NONE,2,raw_xor_b,(RW1 d, R1 s)) { XORBrr(s, d); } LENDFUNC(WRITE,NONE,2,raw_xor_b,(RW1 d, R1 s)) LOWFUNC(WRITE,RMW,2,raw_sub_l_mi,(MEMRW d, IMM s)) { ADDR32 SUBLim(s, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(WRITE,RMW,2,raw_sub_l_mi,(MEMRW d, IMM s)) LOWFUNC(WRITE,READ,2,raw_cmp_l_mi,(MEMR d, IMM s)) { ADDR32 CMPLim(s, d, X86_NOREG, X86_NOREG, 1); } LENDFUNC(WRITE,READ,2,raw_cmp_l_mi,(MEMR d, IMM s)) LOWFUNC(NONE,NONE,2,raw_xchg_l_rr,(RW4 r1, RW4 r2)) { XCHGLrr(r2, r1); } LENDFUNC(NONE,NONE,2,raw_xchg_l_rr,(RW4 r1, RW4 r2)) LOWFUNC(NONE,NONE,2,raw_xchg_b_rr,(RW4 r1, RW4 r2)) { XCHGBrr(r2, r1); } LENDFUNC(NONE,NONE,2,raw_xchg_b_rr,(RW4 r1, RW4 r2)) LOWFUNC(READ,WRITE,0,raw_pushfl,(void)) { PUSHF(); } LENDFUNC(READ,WRITE,0,raw_pushfl,(void)) LOWFUNC(WRITE,READ,0,raw_popfl,(void)) { POPF(); } LENDFUNC(WRITE,READ,0,raw_popfl,(void)) /* Generate floating-point instructions */ static inline void x86_fadd_m(MEMR s) { ADDR32 FADDLm(s,X86_NOREG,X86_NOREG,1); } #else /* !USE_NEW_RTASM */ const bool optimize_accum = true; const bool optimize_imm8 = true; const bool optimize_shift_once = true; /************************************************************************* * Actual encoding of the instructions on the target CPU * *************************************************************************/ static inline int isaccum(int r) { return (r == EAX_INDEX); } static inline int isbyte(uae_s32 x) { return (x>=-128 && x<=127); } static inline int isword(uae_s32 x) { return (x>=-32768 && x<=32767); } LOWFUNC(NONE,WRITE,1,raw_push_l_r,(R4 r)) { emit_byte(0x50+r); } LENDFUNC(NONE,WRITE,1,raw_push_l_r,(R4 r)) LOWFUNC(NONE,READ,1,raw_pop_l_r,(R4 r)) { emit_byte(0x58+r); } LENDFUNC(NONE,READ,1,raw_pop_l_r,(R4 r)) LOWFUNC(NONE,READ,1,raw_pop_l_m,(MEMW d)) { emit_byte(0x8f); emit_byte(0x05); emit_long(d); } LENDFUNC(NONE,READ,1,raw_pop_l_m,(MEMW d)) LOWFUNC(WRITE,NONE,2,raw_bt_l_ri,(R4 r, IMM i)) { emit_byte(0x0f); emit_byte(0xba); emit_byte(0xe0+r); emit_byte(i); } LENDFUNC(WRITE,NONE,2,raw_bt_l_ri,(R4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_bt_l_rr,(R4 r, R4 b)) { emit_byte(0x0f); emit_byte(0xa3); emit_byte(0xc0+8*b+r); } LENDFUNC(WRITE,NONE,2,raw_bt_l_rr,(R4 r, R4 b)) LOWFUNC(WRITE,NONE,2,raw_btc_l_ri,(RW4 r, IMM i)) { emit_byte(0x0f); emit_byte(0xba); emit_byte(0xf8+r); emit_byte(i); } LENDFUNC(WRITE,NONE,2,raw_btc_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_btc_l_rr,(RW4 r, R4 b)) { emit_byte(0x0f); emit_byte(0xbb); emit_byte(0xc0+8*b+r); } LENDFUNC(WRITE,NONE,2,raw_btc_l_rr,(RW4 r, R4 b)) LOWFUNC(WRITE,NONE,2,raw_btr_l_ri,(RW4 r, IMM i)) { emit_byte(0x0f); emit_byte(0xba); emit_byte(0xf0+r); emit_byte(i); } LENDFUNC(WRITE,NONE,2,raw_btr_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_btr_l_rr,(RW4 r, R4 b)) { emit_byte(0x0f); emit_byte(0xb3); emit_byte(0xc0+8*b+r); } LENDFUNC(WRITE,NONE,2,raw_btr_l_rr,(RW4 r, R4 b)) LOWFUNC(WRITE,NONE,2,raw_bts_l_ri,(RW4 r, IMM i)) { emit_byte(0x0f); emit_byte(0xba); emit_byte(0xe8+r); emit_byte(i); } LENDFUNC(WRITE,NONE,2,raw_bts_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_bts_l_rr,(RW4 r, R4 b)) { emit_byte(0x0f); emit_byte(0xab); emit_byte(0xc0+8*b+r); } LENDFUNC(WRITE,NONE,2,raw_bts_l_rr,(RW4 r, R4 b)) LOWFUNC(WRITE,NONE,2,raw_sub_w_ri,(RW2 d, IMM i)) { emit_byte(0x66); if (isbyte(i)) { emit_byte(0x83); emit_byte(0xe8+d); emit_byte(i); } else { if (optimize_accum && isaccum(d)) emit_byte(0x2d); else { emit_byte(0x81); emit_byte(0xe8+d); } emit_word(i); } } LENDFUNC(WRITE,NONE,2,raw_sub_w_ri,(RW2 d, IMM i)) LOWFUNC(NONE,READ,2,raw_mov_l_rm,(W4 d, MEMR s)) { emit_byte(0x8b); emit_byte(0x05+8*d); emit_long(s); } LENDFUNC(NONE,READ,2,raw_mov_l_rm,(W4 d, MEMR s)) LOWFUNC(NONE,WRITE,2,raw_mov_l_mi,(MEMW d, IMM s)) { emit_byte(0xc7); emit_byte(0x05); emit_long(d); emit_long(s); } LENDFUNC(NONE,WRITE,2,raw_mov_l_mi,(MEMW d, IMM s)) LOWFUNC(NONE,WRITE,2,raw_mov_w_mi,(MEMW d, IMM s)) { emit_byte(0x66); emit_byte(0xc7); emit_byte(0x05); emit_long(d); emit_word(s); } LENDFUNC(NONE,WRITE,2,raw_mov_w_mi,(MEMW d, IMM s)) LOWFUNC(NONE,WRITE,2,raw_mov_b_mi,(MEMW d, IMM s)) { emit_byte(0xc6); emit_byte(0x05); emit_long(d); emit_byte(s); } LENDFUNC(NONE,WRITE,2,raw_mov_b_mi,(MEMW d, IMM s)) LOWFUNC(WRITE,RMW,2,raw_rol_b_mi,(MEMRW d, IMM i)) { if (optimize_shift_once && (i == 1)) { emit_byte(0xd0); emit_byte(0x05); emit_long(d); } else { emit_byte(0xc0); emit_byte(0x05); emit_long(d); emit_byte(i); } } LENDFUNC(WRITE,RMW,2,raw_rol_b_mi,(MEMRW d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_rol_b_ri,(RW1 r, IMM i)) { if (optimize_shift_once && (i == 1)) { emit_byte(0xd0); emit_byte(0xc0+r); } else { emit_byte(0xc0); emit_byte(0xc0+r); emit_byte(i); } } LENDFUNC(WRITE,NONE,2,raw_rol_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_rol_w_ri,(RW2 r, IMM i)) { emit_byte(0x66); emit_byte(0xc1); emit_byte(0xc0+r); emit_byte(i); } LENDFUNC(WRITE,NONE,2,raw_rol_w_ri,(RW2 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_rol_l_ri,(RW4 r, IMM i)) { if (optimize_shift_once && (i == 1)) { emit_byte(0xd1); emit_byte(0xc0+r); } else { emit_byte(0xc1); emit_byte(0xc0+r); emit_byte(i); } } LENDFUNC(WRITE,NONE,2,raw_rol_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_rol_l_rr,(RW4 d, R1 r)) { emit_byte(0xd3); emit_byte(0xc0+d); } LENDFUNC(WRITE,NONE,2,raw_rol_l_rr,(RW4 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_rol_w_rr,(RW2 d, R1 r)) { emit_byte(0x66); emit_byte(0xd3); emit_byte(0xc0+d); } LENDFUNC(WRITE,NONE,2,raw_rol_w_rr,(RW2 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_rol_b_rr,(RW1 d, R1 r)) { emit_byte(0xd2); emit_byte(0xc0+d); } LENDFUNC(WRITE,NONE,2,raw_rol_b_rr,(RW1 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shll_l_rr,(RW4 d, R1 r)) { emit_byte(0xd3); emit_byte(0xe0+d); } LENDFUNC(WRITE,NONE,2,raw_shll_l_rr,(RW4 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shll_w_rr,(RW2 d, R1 r)) { emit_byte(0x66); emit_byte(0xd3); emit_byte(0xe0+d); } LENDFUNC(WRITE,NONE,2,raw_shll_w_rr,(RW2 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shll_b_rr,(RW1 d, R1 r)) { emit_byte(0xd2); emit_byte(0xe0+d); } LENDFUNC(WRITE,NONE,2,raw_shll_b_rr,(RW1 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_ror_b_ri,(RW1 r, IMM i)) { if (optimize_shift_once && (i == 1)) { emit_byte(0xd0); emit_byte(0xc8+r); } else { emit_byte(0xc0); emit_byte(0xc8+r); emit_byte(i); } } LENDFUNC(WRITE,NONE,2,raw_ror_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_ror_w_ri,(RW2 r, IMM i)) { emit_byte(0x66); emit_byte(0xc1); emit_byte(0xc8+r); emit_byte(i); } LENDFUNC(WRITE,NONE,2,raw_ror_w_ri,(RW2 r, IMM i)) // gb-- used for making an fpcr value in compemu_fpp.cpp LOWFUNC(WRITE,READ,2,raw_or_l_rm,(RW4 d, MEMR s)) { emit_byte(0x0b); emit_byte(0x05+8*d); emit_long(s); } LENDFUNC(WRITE,READ,2,raw_or_l_rm,(RW4 d, MEMR s)) LOWFUNC(WRITE,NONE,2,raw_ror_l_ri,(RW4 r, IMM i)) { if (optimize_shift_once && (i == 1)) { emit_byte(0xd1); emit_byte(0xc8+r); } else { emit_byte(0xc1); emit_byte(0xc8+r); emit_byte(i); } } LENDFUNC(WRITE,NONE,2,raw_ror_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_ror_l_rr,(RW4 d, R1 r)) { emit_byte(0xd3); emit_byte(0xc8+d); } LENDFUNC(WRITE,NONE,2,raw_ror_l_rr,(RW4 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_ror_w_rr,(RW2 d, R1 r)) { emit_byte(0x66); emit_byte(0xd3); emit_byte(0xc8+d); } LENDFUNC(WRITE,NONE,2,raw_ror_w_rr,(RW2 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_ror_b_rr,(RW1 d, R1 r)) { emit_byte(0xd2); emit_byte(0xc8+d); } LENDFUNC(WRITE,NONE,2,raw_ror_b_rr,(RW1 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shrl_l_rr,(RW4 d, R1 r)) { emit_byte(0xd3); emit_byte(0xe8+d); } LENDFUNC(WRITE,NONE,2,raw_shrl_l_rr,(RW4 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shrl_w_rr,(RW2 d, R1 r)) { emit_byte(0x66); emit_byte(0xd3); emit_byte(0xe8+d); } LENDFUNC(WRITE,NONE,2,raw_shrl_w_rr,(RW2 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shrl_b_rr,(RW1 d, R1 r)) { emit_byte(0xd2); emit_byte(0xe8+d); } LENDFUNC(WRITE,NONE,2,raw_shrl_b_rr,(RW1 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shra_l_rr,(RW4 d, R1 r)) { emit_byte(0xd3); emit_byte(0xf8+d); } LENDFUNC(WRITE,NONE,2,raw_shra_l_rr,(RW4 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shra_w_rr,(RW2 d, R1 r)) { emit_byte(0x66); emit_byte(0xd3); emit_byte(0xf8+d); } LENDFUNC(WRITE,NONE,2,raw_shra_w_rr,(RW2 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shra_b_rr,(RW1 d, R1 r)) { emit_byte(0xd2); emit_byte(0xf8+d); } LENDFUNC(WRITE,NONE,2,raw_shra_b_rr,(RW1 d, R1 r)) LOWFUNC(WRITE,NONE,2,raw_shll_l_ri,(RW4 r, IMM i)) { if (optimize_shift_once && (i == 1)) { emit_byte(0xd1); emit_byte(0xe0+r); } else { emit_byte(0xc1); emit_byte(0xe0+r); emit_byte(i); } } LENDFUNC(WRITE,NONE,2,raw_shll_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shll_w_ri,(RW2 r, IMM i)) { emit_byte(0x66); emit_byte(0xc1); emit_byte(0xe0+r); emit_byte(i); } LENDFUNC(WRITE,NONE,2,raw_shll_w_ri,(RW2 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shll_b_ri,(RW1 r, IMM i)) { if (optimize_shift_once && (i == 1)) { emit_byte(0xd0); emit_byte(0xe0+r); } else { emit_byte(0xc0); emit_byte(0xe0+r); emit_byte(i); } } LENDFUNC(WRITE,NONE,2,raw_shll_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shrl_l_ri,(RW4 r, IMM i)) { if (optimize_shift_once && (i == 1)) { emit_byte(0xd1); emit_byte(0xe8+r); } else { emit_byte(0xc1); emit_byte(0xe8+r); emit_byte(i); } } LENDFUNC(WRITE,NONE,2,raw_shrl_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shrl_w_ri,(RW2 r, IMM i)) { emit_byte(0x66); emit_byte(0xc1); emit_byte(0xe8+r); emit_byte(i); } LENDFUNC(WRITE,NONE,2,raw_shrl_w_ri,(RW2 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shrl_b_ri,(RW1 r, IMM i)) { if (optimize_shift_once && (i == 1)) { emit_byte(0xd0); emit_byte(0xe8+r); } else { emit_byte(0xc0); emit_byte(0xe8+r); emit_byte(i); } } LENDFUNC(WRITE,NONE,2,raw_shrl_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shra_l_ri,(RW4 r, IMM i)) { if (optimize_shift_once && (i == 1)) { emit_byte(0xd1); emit_byte(0xf8+r); } else { emit_byte(0xc1); emit_byte(0xf8+r); emit_byte(i); } } LENDFUNC(WRITE,NONE,2,raw_shra_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shra_w_ri,(RW2 r, IMM i)) { emit_byte(0x66); emit_byte(0xc1); emit_byte(0xf8+r); emit_byte(i); } LENDFUNC(WRITE,NONE,2,raw_shra_w_ri,(RW2 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shra_b_ri,(RW1 r, IMM i)) { if (optimize_shift_once && (i == 1)) { emit_byte(0xd0); emit_byte(0xf8+r); } else { emit_byte(0xc0); emit_byte(0xf8+r); emit_byte(i); } } LENDFUNC(WRITE,NONE,2,raw_shra_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,1,raw_sahf,(R2 dummy_ah)) { emit_byte(0x9e); } LENDFUNC(WRITE,NONE,1,raw_sahf,(R2 dummy_ah)) LOWFUNC(NONE,NONE,1,raw_cpuid,(R4 dummy_eax)) { emit_byte(0x0f); emit_byte(0xa2); } LENDFUNC(NONE,NONE,1,raw_cpuid,(R4 dummy_eax)) LOWFUNC(READ,NONE,1,raw_lahf,(W2 dummy_ah)) { emit_byte(0x9f); } LENDFUNC(READ,NONE,1,raw_lahf,(W2 dummy_ah)) LOWFUNC(READ,NONE,2,raw_setcc,(W1 d, IMM cc)) { emit_byte(0x0f); emit_byte(0x90+cc); emit_byte(0xc0+d); } LENDFUNC(READ,NONE,2,raw_setcc,(W1 d, IMM cc)) LOWFUNC(READ,WRITE,2,raw_setcc_m,(MEMW d, IMM cc)) { emit_byte(0x0f); emit_byte(0x90+cc); emit_byte(0x05); emit_long(d); } LENDFUNC(READ,WRITE,2,raw_setcc_m,(MEMW d, IMM cc)) LOWFUNC(READ,NONE,3,raw_cmov_l_rr,(RW4 d, R4 s, IMM cc)) { if (have_cmov) { emit_byte(0x0f); emit_byte(0x40+cc); emit_byte(0xc0+8*d+s); } else { /* replacement using branch and mov */ int uncc=(cc^1); emit_byte(0x70+uncc); emit_byte(2); /* skip next 2 bytes if not cc=true */ emit_byte(0x89); emit_byte(0xc0+8*s+d); } } LENDFUNC(READ,NONE,3,raw_cmov_l_rr,(RW4 d, R4 s, IMM cc)) LOWFUNC(WRITE,NONE,2,raw_bsf_l_rr,(W4 d, R4 s)) { emit_byte(0x0f); emit_byte(0xbc); emit_byte(0xc0+8*d+s); } LENDFUNC(WRITE,NONE,2,raw_bsf_l_rr,(W4 d, R4 s)) LOWFUNC(NONE,NONE,2,raw_sign_extend_16_rr,(W4 d, R2 s)) { emit_byte(0x0f); emit_byte(0xbf); emit_byte(0xc0+8*d+s); } LENDFUNC(NONE,NONE,2,raw_sign_extend_16_rr,(W4 d, R2 s)) LOWFUNC(NONE,NONE,2,raw_sign_extend_8_rr,(W4 d, R1 s)) { emit_byte(0x0f); emit_byte(0xbe); emit_byte(0xc0+8*d+s); } LENDFUNC(NONE,NONE,2,raw_sign_extend_8_rr,(W4 d, R1 s)) LOWFUNC(NONE,NONE,2,raw_zero_extend_16_rr,(W4 d, R2 s)) { emit_byte(0x0f); emit_byte(0xb7); emit_byte(0xc0+8*d+s); } LENDFUNC(NONE,NONE,2,raw_zero_extend_16_rr,(W4 d, R2 s)) LOWFUNC(NONE,NONE,2,raw_zero_extend_8_rr,(W4 d, R1 s)) { emit_byte(0x0f); emit_byte(0xb6); emit_byte(0xc0+8*d+s); } LENDFUNC(NONE,NONE,2,raw_zero_extend_8_rr,(W4 d, R1 s)) LOWFUNC(NONE,NONE,2,raw_imul_32_32,(RW4 d, R4 s)) { emit_byte(0x0f); emit_byte(0xaf); emit_byte(0xc0+8*d+s); } LENDFUNC(NONE,NONE,2,raw_imul_32_32,(RW4 d, R4 s)) LOWFUNC(NONE,NONE,2,raw_imul_64_32,(RW4 d, RW4 s)) { if (d!=MUL_NREG1 || s!=MUL_NREG2) { jit_abort("Bad register in IMUL: d=%d, s=%d\n",d,s); } emit_byte(0xf7); emit_byte(0xea); } LENDFUNC(NONE,NONE,2,raw_imul_64_32,(RW4 d, RW4 s)) LOWFUNC(NONE,NONE,2,raw_mul_64_32,(RW4 d, RW4 s)) { if (d!=MUL_NREG1 || s!=MUL_NREG2) { jit_abort("Bad register in MUL: d=%d, s=%d",d,s); } emit_byte(0xf7); emit_byte(0xe2); } LENDFUNC(NONE,NONE,2,raw_mul_64_32,(RW4 d, RW4 s)) LOWFUNC(NONE,NONE,2,raw_mul_32_32,(RW4 d, R4 s)) { jit_abort("unsupported MUL"); /* %^$&%^$%#^ x86! */ emit_byte(0x0f); emit_byte(0xaf); emit_byte(0xc0+8*d+s); } LENDFUNC(NONE,NONE,2,raw_mul_32_32,(RW4 d, R4 s)) LOWFUNC(NONE,NONE,2,raw_mov_b_rr,(W1 d, R1 s)) { emit_byte(0x88); emit_byte(0xc0+8*s+d); } LENDFUNC(NONE,NONE,2,raw_mov_b_rr,(W1 d, R1 s)) LOWFUNC(NONE,NONE,2,raw_mov_w_rr,(W2 d, R2 s)) { emit_byte(0x66); emit_byte(0x89); emit_byte(0xc0+8*s+d); } LENDFUNC(NONE,NONE,2,raw_mov_w_rr,(W2 d, R2 s)) LOWFUNC(NONE,READ,4,raw_mov_l_rrm_indexed,(W4 d,R4 baser, R4 index, IMM factor)) { int isebp=(baser==5)?0x40:0; int fi; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } emit_byte(0x8b); emit_byte(0x04+8*d+isebp); emit_byte(baser+8*index+0x40*fi); if (isebp) emit_byte(0x00); } LENDFUNC(NONE,READ,4,raw_mov_l_rrm_indexed,(W4 d,R4 baser, R4 index, IMM factor)) LOWFUNC(NONE,READ,4,raw_mov_w_rrm_indexed,(W2 d, R4 baser, R4 index, IMM factor)) { int fi; int isebp; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } isebp=(baser==5)?0x40:0; emit_byte(0x66); emit_byte(0x8b); emit_byte(0x04+8*d+isebp); emit_byte(baser+8*index+0x40*fi); if (isebp) emit_byte(0x00); } LENDFUNC(NONE,READ,4,raw_mov_w_rrm_indexed,(W2 d, R4 baser, R4 index, IMM factor)) LOWFUNC(NONE,READ,4,raw_mov_b_rrm_indexed,(W1 d, R4 baser, R4 index, IMM factor)) { int fi; int isebp; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } isebp=(baser==5)?0x40:0; emit_byte(0x8a); emit_byte(0x04+8*d+isebp); emit_byte(baser+8*index+0x40*fi); if (isebp) emit_byte(0x00); } LENDFUNC(NONE,READ,4,raw_mov_b_rrm_indexed,(W1 d, R4 baser, R4 index, IMM factor)) LOWFUNC(NONE,WRITE,4,raw_mov_l_mrr_indexed,(R4 baser, R4 index, IMM factor, R4 s)) { int fi; int isebp; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } isebp=(baser==5)?0x40:0; emit_byte(0x89); emit_byte(0x04+8*s+isebp); emit_byte(baser+8*index+0x40*fi); if (isebp) emit_byte(0x00); } LENDFUNC(NONE,WRITE,4,raw_mov_l_mrr_indexed,(R4 baser, R4 index, IMM factor, R4 s)) LOWFUNC(NONE,WRITE,4,raw_mov_w_mrr_indexed,(R4 baser, R4 index, IMM factor, R2 s)) { int fi; int isebp; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } isebp=(baser==5)?0x40:0; emit_byte(0x66); emit_byte(0x89); emit_byte(0x04+8*s+isebp); emit_byte(baser+8*index+0x40*fi); if (isebp) emit_byte(0x00); } LENDFUNC(NONE,WRITE,4,raw_mov_w_mrr_indexed,(R4 baser, R4 index, IMM factor, R2 s)) LOWFUNC(NONE,WRITE,4,raw_mov_b_mrr_indexed,(R4 baser, R4 index, IMM factor, R1 s)) { int fi; int isebp; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } isebp=(baser==5)?0x40:0; emit_byte(0x88); emit_byte(0x04+8*s+isebp); emit_byte(baser+8*index+0x40*fi); if (isebp) emit_byte(0x00); } LENDFUNC(NONE,WRITE,4,raw_mov_b_mrr_indexed,(R4 baser, R4 index, IMM factor, R1 s)) LOWFUNC(NONE,WRITE,5,raw_mov_l_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R4 s)) { int fi; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } emit_byte(0x89); emit_byte(0x84+8*s); emit_byte(baser+8*index+0x40*fi); emit_long(base); } LENDFUNC(NONE,WRITE,5,raw_mov_l_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R4 s)) LOWFUNC(NONE,WRITE,5,raw_mov_w_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R2 s)) { int fi; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } emit_byte(0x66); emit_byte(0x89); emit_byte(0x84+8*s); emit_byte(baser+8*index+0x40*fi); emit_long(base); } LENDFUNC(NONE,WRITE,5,raw_mov_w_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R2 s)) LOWFUNC(NONE,WRITE,5,raw_mov_b_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R1 s)) { int fi; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } emit_byte(0x88); emit_byte(0x84+8*s); emit_byte(baser+8*index+0x40*fi); emit_long(base); } LENDFUNC(NONE,WRITE,5,raw_mov_b_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R1 s)) LOWFUNC(NONE,READ,5,raw_mov_l_brrm_indexed,(W4 d, IMM base, R4 baser, R4 index, IMM factor)) { int fi; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } emit_byte(0x8b); emit_byte(0x84+8*d); emit_byte(baser+8*index+0x40*fi); emit_long(base); } LENDFUNC(NONE,READ,5,raw_mov_l_brrm_indexed,(W4 d, IMM base, R4 baser, R4 index, IMM factor)) LOWFUNC(NONE,READ,5,raw_mov_w_brrm_indexed,(W2 d, IMM base, R4 baser, R4 index, IMM factor)) { int fi; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } emit_byte(0x66); emit_byte(0x8b); emit_byte(0x84+8*d); emit_byte(baser+8*index+0x40*fi); emit_long(base); } LENDFUNC(NONE,READ,5,raw_mov_w_brrm_indexed,(W2 d, IMM base, R4 baser, R4 index, IMM factor)) LOWFUNC(NONE,READ,5,raw_mov_b_brrm_indexed,(W1 d, IMM base, R4 baser, R4 index, IMM factor)) { int fi; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } emit_byte(0x8a); emit_byte(0x84+8*d); emit_byte(baser+8*index+0x40*fi); emit_long(base); } LENDFUNC(NONE,READ,5,raw_mov_b_brrm_indexed,(W1 d, IMM base, R4 baser, R4 index, IMM factor)) LOWFUNC(NONE,READ,4,raw_mov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM factor)) { int fi; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: jit_abort("Bad factor %d in mov_l_rm_indexed!",factor); } emit_byte(0x8b); emit_byte(0x04+8*d); emit_byte(0x05+8*index+64*fi); emit_long(base); } LENDFUNC(NONE,READ,4,raw_mov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM factor)) LOWFUNC(NONE,READ,5,raw_cmov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM factor, IMM cond)) { int fi; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: jit_abort("Bad factor %d in mov_l_rm_indexed!",factor); } if (have_cmov) { emit_byte(0x0f); emit_byte(0x40+cond); emit_byte(0x04+8*d); emit_byte(0x05+8*index+64*fi); emit_long(base); } else { /* replacement using branch and mov */ int uncc=(cond^1); emit_byte(0x70+uncc); emit_byte(7); /* skip next 7 bytes if not cc=true */ emit_byte(0x8b); emit_byte(0x04+8*d); emit_byte(0x05+8*index+64*fi); emit_long(base); } } LENDFUNC(NONE,READ,5,raw_cmov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM factor, IMM cond)) LOWFUNC(NONE,READ,3,raw_cmov_l_rm,(W4 d, IMM mem, IMM cond)) { if (have_cmov) { emit_byte(0x0f); emit_byte(0x40+cond); emit_byte(0x05+8*d); emit_long(mem); } else { /* replacement using branch and mov */ int uncc=(cond^1); emit_byte(0x70+uncc); emit_byte(6); /* skip next 6 bytes if not cc=true */ emit_byte(0x8b); emit_byte(0x05+8*d); emit_long(mem); } } LENDFUNC(NONE,READ,3,raw_cmov_l_rm,(W4 d, IMM mem, IMM cond)) LOWFUNC(NONE,READ,3,raw_mov_l_rR,(W4 d, R4 s, IMM offset)) { Dif(!isbyte(offset)) abort(); emit_byte(0x8b); emit_byte(0x40+8*d+s); emit_byte(offset); } LENDFUNC(NONE,READ,3,raw_mov_l_rR,(W4 d, R4 s, IMM offset)) LOWFUNC(NONE,READ,3,raw_mov_w_rR,(W2 d, R4 s, IMM offset)) { Dif(!isbyte(offset)) abort(); emit_byte(0x66); emit_byte(0x8b); emit_byte(0x40+8*d+s); emit_byte(offset); } LENDFUNC(NONE,READ,3,raw_mov_w_rR,(W2 d, R4 s, IMM offset)) LOWFUNC(NONE,READ,3,raw_mov_b_rR,(W1 d, R4 s, IMM offset)) { Dif(!isbyte(offset)) abort(); emit_byte(0x8a); emit_byte(0x40+8*d+s); emit_byte(offset); } LENDFUNC(NONE,READ,3,raw_mov_b_rR,(W1 d, R4 s, IMM offset)) LOWFUNC(NONE,READ,3,raw_mov_l_brR,(W4 d, R4 s, IMM offset)) { emit_byte(0x8b); emit_byte(0x80+8*d+s); emit_long(offset); } LENDFUNC(NONE,READ,3,raw_mov_l_brR,(W4 d, R4 s, IMM offset)) LOWFUNC(NONE,READ,3,raw_mov_w_brR,(W2 d, R4 s, IMM offset)) { emit_byte(0x66); emit_byte(0x8b); emit_byte(0x80+8*d+s); emit_long(offset); } LENDFUNC(NONE,READ,3,raw_mov_w_brR,(W2 d, R4 s, IMM offset)) LOWFUNC(NONE,READ,3,raw_mov_b_brR,(W1 d, R4 s, IMM offset)) { emit_byte(0x8a); emit_byte(0x80+8*d+s); emit_long(offset); } LENDFUNC(NONE,READ,3,raw_mov_b_brR,(W1 d, R4 s, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_l_Ri,(R4 d, IMM i, IMM offset)) { Dif(!isbyte(offset)) abort(); emit_byte(0xc7); emit_byte(0x40+d); emit_byte(offset); emit_long(i); } LENDFUNC(NONE,WRITE,3,raw_mov_l_Ri,(R4 d, IMM i, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_w_Ri,(R4 d, IMM i, IMM offset)) { Dif(!isbyte(offset)) abort(); emit_byte(0x66); emit_byte(0xc7); emit_byte(0x40+d); emit_byte(offset); emit_word(i); } LENDFUNC(NONE,WRITE,3,raw_mov_w_Ri,(R4 d, IMM i, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_b_Ri,(R4 d, IMM i, IMM offset)) { Dif(!isbyte(offset)) abort(); emit_byte(0xc6); emit_byte(0x40+d); emit_byte(offset); emit_byte(i); } LENDFUNC(NONE,WRITE,3,raw_mov_b_Ri,(R4 d, IMM i, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_l_Rr,(R4 d, R4 s, IMM offset)) { Dif(!isbyte(offset)) abort(); emit_byte(0x89); emit_byte(0x40+8*s+d); emit_byte(offset); } LENDFUNC(NONE,WRITE,3,raw_mov_l_Rr,(R4 d, R4 s, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_w_Rr,(R4 d, R2 s, IMM offset)) { Dif(!isbyte(offset)) abort(); emit_byte(0x66); emit_byte(0x89); emit_byte(0x40+8*s+d); emit_byte(offset); } LENDFUNC(NONE,WRITE,3,raw_mov_w_Rr,(R4 d, R2 s, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_b_Rr,(R4 d, R1 s, IMM offset)) { Dif(!isbyte(offset)) abort(); emit_byte(0x88); emit_byte(0x40+8*s+d); emit_byte(offset); } LENDFUNC(NONE,WRITE,3,raw_mov_b_Rr,(R4 d, R1 s, IMM offset)) LOWFUNC(NONE,NONE,3,raw_lea_l_brr,(W4 d, R4 s, IMM offset)) { if (optimize_imm8 && isbyte(offset)) { emit_byte(0x8d); emit_byte(0x40+8*d+s); emit_byte(offset); } else { emit_byte(0x8d); emit_byte(0x80+8*d+s); emit_long(offset); } } LENDFUNC(NONE,NONE,3,raw_lea_l_brr,(W4 d, R4 s, IMM offset)) LOWFUNC(NONE,NONE,5,raw_lea_l_brr_indexed,(W4 d, R4 s, R4 index, IMM factor, IMM offset)) { int fi; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } if (optimize_imm8 && isbyte(offset)) { emit_byte(0x8d); emit_byte(0x44+8*d); emit_byte(0x40*fi+8*index+s); emit_byte(offset); } else { emit_byte(0x8d); emit_byte(0x84+8*d); emit_byte(0x40*fi+8*index+s); emit_long(offset); } } LENDFUNC(NONE,NONE,5,raw_lea_l_brr_indexed,(W4 d, R4 s, R4 index, IMM factor, IMM offset)) LOWFUNC(NONE,NONE,4,raw_lea_l_rr_indexed,(W4 d, R4 s, R4 index, IMM factor)) { int isebp=(s==5)?0x40:0; int fi; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } emit_byte(0x8d); emit_byte(0x04+8*d+isebp); emit_byte(0x40*fi+8*index+s); if (isebp) emit_byte(0); } LENDFUNC(NONE,NONE,4,raw_lea_l_rr_indexed,(W4 d, R4 s, R4 index, IMM factor)) LOWFUNC(NONE,WRITE,3,raw_mov_l_bRr,(R4 d, R4 s, IMM offset)) { if (optimize_imm8 && isbyte(offset)) { emit_byte(0x89); emit_byte(0x40+8*s+d); emit_byte(offset); } else { emit_byte(0x89); emit_byte(0x80+8*s+d); emit_long(offset); } } LENDFUNC(NONE,WRITE,3,raw_mov_l_bRr,(R4 d, R4 s, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_w_bRr,(R4 d, R2 s, IMM offset)) { emit_byte(0x66); emit_byte(0x89); emit_byte(0x80+8*s+d); emit_long(offset); } LENDFUNC(NONE,WRITE,3,raw_mov_w_bRr,(R4 d, R2 s, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_b_bRr,(R4 d, R1 s, IMM offset)) { if (optimize_imm8 && isbyte(offset)) { emit_byte(0x88); emit_byte(0x40+8*s+d); emit_byte(offset); } else { emit_byte(0x88); emit_byte(0x80+8*s+d); emit_long(offset); } } LENDFUNC(NONE,WRITE,3,raw_mov_b_bRr,(R4 d, R1 s, IMM offset)) LOWFUNC(NONE,NONE,1,raw_bswap_32,(RW4 r)) { emit_byte(0x0f); emit_byte(0xc8+r); } LENDFUNC(NONE,NONE,1,raw_bswap_32,(RW4 r)) LOWFUNC(WRITE,NONE,1,raw_bswap_16,(RW2 r)) { emit_byte(0x66); emit_byte(0xc1); emit_byte(0xc0+r); emit_byte(0x08); } LENDFUNC(WRITE,NONE,1,raw_bswap_16,(RW2 r)) LOWFUNC(NONE,NONE,2,raw_mov_l_rr,(W4 d, R4 s)) { emit_byte(0x89); emit_byte(0xc0+8*s+d); } LENDFUNC(NONE,NONE,2,raw_mov_l_rr,(W4 d, R4 s)) LOWFUNC(NONE,WRITE,2,raw_mov_l_mr,(IMM d, R4 s)) { emit_byte(0x89); emit_byte(0x05+8*s); emit_long(d); } LENDFUNC(NONE,WRITE,2,raw_mov_l_mr,(IMM d, R4 s)) LOWFUNC(NONE,WRITE,2,raw_mov_w_mr,(IMM d, R2 s)) { emit_byte(0x66); emit_byte(0x89); emit_byte(0x05+8*s); emit_long(d); } LENDFUNC(NONE,WRITE,2,raw_mov_w_mr,(IMM d, R2 s)) LOWFUNC(NONE,READ,2,raw_mov_w_rm,(W2 d, IMM s)) { emit_byte(0x66); emit_byte(0x8b); emit_byte(0x05+8*d); emit_long(s); } LENDFUNC(NONE,READ,2,raw_mov_w_rm,(W2 d, IMM s)) LOWFUNC(NONE,WRITE,2,raw_mov_b_mr,(IMM d, R1 s)) { emit_byte(0x88); emit_byte(0x05+8*(s&0xf)); /* XXX this handles %ah case (defined as 0x10+4) and others */ emit_long(d); } LENDFUNC(NONE,WRITE,2,raw_mov_b_mr,(IMM d, R1 s)) LOWFUNC(NONE,READ,2,raw_mov_b_rm,(W1 d, IMM s)) { emit_byte(0x8a); emit_byte(0x05+8*d); emit_long(s); } LENDFUNC(NONE,READ,2,raw_mov_b_rm,(W1 d, IMM s)) LOWFUNC(NONE,NONE,2,raw_mov_l_ri,(W4 d, IMM s)) { emit_byte(0xb8+d); emit_long(s); } LENDFUNC(NONE,NONE,2,raw_mov_l_ri,(W4 d, IMM s)) LOWFUNC(NONE,NONE,2,raw_mov_w_ri,(W2 d, IMM s)) { emit_byte(0x66); emit_byte(0xb8+d); emit_word(s); } LENDFUNC(NONE,NONE,2,raw_mov_w_ri,(W2 d, IMM s)) LOWFUNC(NONE,NONE,2,raw_mov_b_ri,(W1 d, IMM s)) { emit_byte(0xb0+d); emit_byte(s); } LENDFUNC(NONE,NONE,2,raw_mov_b_ri,(W1 d, IMM s)) LOWFUNC(RMW,RMW,2,raw_adc_l_mi,(MEMRW d, IMM s)) { emit_byte(0x81); emit_byte(0x15); emit_long(d); emit_long(s); } LENDFUNC(RMW,RMW,2,raw_adc_l_mi,(MEMRW d, IMM s)) LOWFUNC(WRITE,RMW,2,raw_add_l_mi,(IMM d, IMM s)) { if (optimize_imm8 && isbyte(s)) { emit_byte(0x83); emit_byte(0x05); emit_long(d); emit_byte(s); } else { emit_byte(0x81); emit_byte(0x05); emit_long(d); emit_long(s); } } LENDFUNC(WRITE,RMW,2,raw_add_l_mi,(IMM d, IMM s)) LOWFUNC(WRITE,RMW,2,raw_add_w_mi,(IMM d, IMM s)) { emit_byte(0x66); emit_byte(0x81); emit_byte(0x05); emit_long(d); emit_word(s); } LENDFUNC(WRITE,RMW,2,raw_add_w_mi,(IMM d, IMM s)) LOWFUNC(WRITE,RMW,2,raw_add_b_mi,(IMM d, IMM s)) { emit_byte(0x80); emit_byte(0x05); emit_long(d); emit_byte(s); } LENDFUNC(WRITE,RMW,2,raw_add_b_mi,(IMM d, IMM s)) LOWFUNC(WRITE,NONE,2,raw_test_l_ri,(R4 d, IMM i)) { if (optimize_accum && isaccum(d)) emit_byte(0xa9); else { emit_byte(0xf7); emit_byte(0xc0+d); } emit_long(i); } LENDFUNC(WRITE,NONE,2,raw_test_l_ri,(R4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_test_l_rr,(R4 d, R4 s)) { emit_byte(0x85); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_test_l_rr,(R4 d, R4 s)) LOWFUNC(WRITE,NONE,2,raw_test_w_rr,(R2 d, R2 s)) { emit_byte(0x66); emit_byte(0x85); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_test_w_rr,(R2 d, R2 s)) LOWFUNC(WRITE,NONE,2,raw_test_b_rr,(R1 d, R1 s)) { emit_byte(0x84); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_test_b_rr,(R1 d, R1 s)) LOWFUNC(WRITE,NONE,2,raw_xor_l_ri,(RW4 d, IMM i)) { emit_byte(0x81); emit_byte(0xf0+d); emit_long(i); } LENDFUNC(WRITE,NONE,2,raw_xor_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_and_l_ri,(RW4 d, IMM i)) { if (optimize_imm8 && isbyte(i)) { emit_byte(0x83); emit_byte(0xe0+d); emit_byte(i); } else { if (optimize_accum && isaccum(d)) emit_byte(0x25); else { emit_byte(0x81); emit_byte(0xe0+d); } emit_long(i); } } LENDFUNC(WRITE,NONE,2,raw_and_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_and_w_ri,(RW2 d, IMM i)) { emit_byte(0x66); if (optimize_imm8 && isbyte(i)) { emit_byte(0x83); emit_byte(0xe0+d); emit_byte(i); } else { if (optimize_accum && isaccum(d)) emit_byte(0x25); else { emit_byte(0x81); emit_byte(0xe0+d); } emit_word(i); } } LENDFUNC(WRITE,NONE,2,raw_and_w_ri,(RW2 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_and_l,(RW4 d, R4 s)) { emit_byte(0x21); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_and_l,(RW4 d, R4 s)) LOWFUNC(WRITE,NONE,2,raw_and_w,(RW2 d, R2 s)) { emit_byte(0x66); emit_byte(0x21); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_and_w,(RW2 d, R2 s)) LOWFUNC(WRITE,NONE,2,raw_and_b,(RW1 d, R1 s)) { emit_byte(0x20); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_and_b,(RW1 d, R1 s)) LOWFUNC(WRITE,NONE,2,raw_or_l_ri,(RW4 d, IMM i)) { if (optimize_imm8 && isbyte(i)) { emit_byte(0x83); emit_byte(0xc8+d); emit_byte(i); } else { if (optimize_accum && isaccum(d)) emit_byte(0x0d); else { emit_byte(0x81); emit_byte(0xc8+d); } emit_long(i); } } LENDFUNC(WRITE,NONE,2,raw_or_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_or_l,(RW4 d, R4 s)) { emit_byte(0x09); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_or_l,(RW4 d, R4 s)) LOWFUNC(WRITE,NONE,2,raw_or_w,(RW2 d, R2 s)) { emit_byte(0x66); emit_byte(0x09); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_or_w,(RW2 d, R2 s)) LOWFUNC(WRITE,NONE,2,raw_or_b,(RW1 d, R1 s)) { emit_byte(0x08); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_or_b,(RW1 d, R1 s)) LOWFUNC(RMW,NONE,2,raw_adc_l,(RW4 d, R4 s)) { emit_byte(0x11); emit_byte(0xc0+8*s+d); } LENDFUNC(RMW,NONE,2,raw_adc_l,(RW4 d, R4 s)) LOWFUNC(RMW,NONE,2,raw_adc_w,(RW2 d, R2 s)) { emit_byte(0x66); emit_byte(0x11); emit_byte(0xc0+8*s+d); } LENDFUNC(RMW,NONE,2,raw_adc_w,(RW2 d, R2 s)) LOWFUNC(RMW,NONE,2,raw_adc_b,(RW1 d, R1 s)) { emit_byte(0x10); emit_byte(0xc0+8*s+d); } LENDFUNC(RMW,NONE,2,raw_adc_b,(RW1 d, R1 s)) LOWFUNC(WRITE,NONE,2,raw_add_l,(RW4 d, R4 s)) { emit_byte(0x01); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_add_l,(RW4 d, R4 s)) LOWFUNC(WRITE,NONE,2,raw_add_w,(RW2 d, R2 s)) { emit_byte(0x66); emit_byte(0x01); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_add_w,(RW2 d, R2 s)) LOWFUNC(WRITE,NONE,2,raw_add_b,(RW1 d, R1 s)) { emit_byte(0x00); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_add_b,(RW1 d, R1 s)) LOWFUNC(WRITE,NONE,2,raw_sub_l_ri,(RW4 d, IMM i)) { if (isbyte(i)) { emit_byte(0x83); emit_byte(0xe8+d); emit_byte(i); } else { if (optimize_accum && isaccum(d)) emit_byte(0x2d); else { emit_byte(0x81); emit_byte(0xe8+d); } emit_long(i); } } LENDFUNC(WRITE,NONE,2,raw_sub_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_sub_b_ri,(RW1 d, IMM i)) { if (optimize_accum && isaccum(d)) emit_byte(0x2c); else { emit_byte(0x80); emit_byte(0xe8+d); } emit_byte(i); } LENDFUNC(WRITE,NONE,2,raw_sub_b_ri,(RW1 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_add_l_ri,(RW4 d, IMM i)) { if (isbyte(i)) { emit_byte(0x83); emit_byte(0xc0+d); emit_byte(i); } else { if (optimize_accum && isaccum(d)) emit_byte(0x05); else { emit_byte(0x81); emit_byte(0xc0+d); } emit_long(i); } } LENDFUNC(WRITE,NONE,2,raw_add_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_add_w_ri,(RW2 d, IMM i)) { emit_byte(0x66); if (isbyte(i)) { emit_byte(0x83); emit_byte(0xc0+d); emit_byte(i); } else { if (optimize_accum && isaccum(d)) emit_byte(0x05); else { emit_byte(0x81); emit_byte(0xc0+d); } emit_word(i); } } LENDFUNC(WRITE,NONE,2,raw_add_w_ri,(RW2 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_add_b_ri,(RW1 d, IMM i)) { if (optimize_accum && isaccum(d)) emit_byte(0x04); else { emit_byte(0x80); emit_byte(0xc0+d); } emit_byte(i); } LENDFUNC(WRITE,NONE,2,raw_add_b_ri,(RW1 d, IMM i)) LOWFUNC(RMW,NONE,2,raw_sbb_l,(RW4 d, R4 s)) { emit_byte(0x19); emit_byte(0xc0+8*s+d); } LENDFUNC(RMW,NONE,2,raw_sbb_l,(RW4 d, R4 s)) LOWFUNC(RMW,NONE,2,raw_sbb_w,(RW2 d, R2 s)) { emit_byte(0x66); emit_byte(0x19); emit_byte(0xc0+8*s+d); } LENDFUNC(RMW,NONE,2,raw_sbb_w,(RW2 d, R2 s)) LOWFUNC(RMW,NONE,2,raw_sbb_b,(RW1 d, R1 s)) { emit_byte(0x18); emit_byte(0xc0+8*s+d); } LENDFUNC(RMW,NONE,2,raw_sbb_b,(RW1 d, R1 s)) LOWFUNC(WRITE,NONE,2,raw_sub_l,(RW4 d, R4 s)) { emit_byte(0x29); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_sub_l,(RW4 d, R4 s)) LOWFUNC(WRITE,NONE,2,raw_sub_w,(RW2 d, R2 s)) { emit_byte(0x66); emit_byte(0x29); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_sub_w,(RW2 d, R2 s)) LOWFUNC(WRITE,NONE,2,raw_sub_b,(RW1 d, R1 s)) { emit_byte(0x28); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_sub_b,(RW1 d, R1 s)) LOWFUNC(WRITE,NONE,2,raw_cmp_l,(R4 d, R4 s)) { emit_byte(0x39); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_cmp_l,(R4 d, R4 s)) LOWFUNC(WRITE,NONE,2,raw_cmp_l_ri,(R4 r, IMM i)) { if (optimize_imm8 && isbyte(i)) { emit_byte(0x83); emit_byte(0xf8+r); emit_byte(i); } else { if (optimize_accum && isaccum(r)) emit_byte(0x3d); else { emit_byte(0x81); emit_byte(0xf8+r); } emit_long(i); } } LENDFUNC(WRITE,NONE,2,raw_cmp_l_ri,(R4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_cmp_w,(R2 d, R2 s)) { emit_byte(0x66); emit_byte(0x39); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_cmp_w,(R2 d, R2 s)) LOWFUNC(WRITE,READ,2,raw_cmp_b_mi,(MEMR d, IMM s)) { emit_byte(0x80); emit_byte(0x3d); emit_long(d); emit_byte(s); } LENDFUNC(WRITE,READ,2,raw_cmp_l_mi,(MEMR d, IMM s)) LOWFUNC(WRITE,NONE,2,raw_cmp_b_ri,(R1 d, IMM i)) { if (optimize_accum && isaccum(d)) emit_byte(0x3c); else { emit_byte(0x80); emit_byte(0xf8+d); } emit_byte(i); } LENDFUNC(WRITE,NONE,2,raw_cmp_b_ri,(R1 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_cmp_b,(R1 d, R1 s)) { emit_byte(0x38); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_cmp_b,(R1 d, R1 s)) LOWFUNC(WRITE,READ,4,raw_cmp_l_rm_indexed,(R4 d, IMM offset, R4 index, IMM factor)) { int fi; switch(factor) { case 1: fi=0; break; case 2: fi=1; break; case 4: fi=2; break; case 8: fi=3; break; default: abort(); } emit_byte(0x39); emit_byte(0x04+8*d); emit_byte(5+8*index+0x40*fi); emit_long(offset); } LENDFUNC(WRITE,READ,4,raw_cmp_l_rm_indexed,(R4 d, IMM offset, R4 index, IMM factor)) LOWFUNC(WRITE,NONE,2,raw_xor_l,(RW4 d, R4 s)) { emit_byte(0x31); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_xor_l,(RW4 d, R4 s)) LOWFUNC(WRITE,NONE,2,raw_xor_w,(RW2 d, R2 s)) { emit_byte(0x66); emit_byte(0x31); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_xor_w,(RW2 d, R2 s)) LOWFUNC(WRITE,NONE,2,raw_xor_b,(RW1 d, R1 s)) { emit_byte(0x30); emit_byte(0xc0+8*s+d); } LENDFUNC(WRITE,NONE,2,raw_xor_b,(RW1 d, R1 s)) LOWFUNC(WRITE,RMW,2,raw_sub_l_mi,(MEMRW d, IMM s)) { if (optimize_imm8 && isbyte(s)) { emit_byte(0x83); emit_byte(0x2d); emit_long(d); emit_byte(s); } else { emit_byte(0x81); emit_byte(0x2d); emit_long(d); emit_long(s); } } LENDFUNC(WRITE,RMW,2,raw_sub_l_mi,(MEMRW d, IMM s)) LOWFUNC(WRITE,READ,2,raw_cmp_l_mi,(MEMR d, IMM s)) { if (optimize_imm8 && isbyte(s)) { emit_byte(0x83); emit_byte(0x3d); emit_long(d); emit_byte(s); } else { emit_byte(0x81); emit_byte(0x3d); emit_long(d); emit_long(s); } } LENDFUNC(WRITE,READ,2,raw_cmp_l_mi,(MEMR d, IMM s)) LOWFUNC(NONE,NONE,2,raw_xchg_l_rr,(RW4 r1, RW4 r2)) { emit_byte(0x87); emit_byte(0xc0+8*r1+r2); } LENDFUNC(NONE,NONE,2,raw_xchg_l_rr,(RW4 r1, RW4 r2)) LOWFUNC(NONE,NONE,2,raw_xchg_b_rr,(RW4 r1, RW4 r2)) { emit_byte(0x86); emit_byte(0xc0+8*(r1&0xf)+(r2&0xf)); /* XXX this handles upper-halves registers (e.g. %ah defined as 0x10+4) */ } LENDFUNC(NONE,NONE,2,raw_xchg_l_rr,(RW4 r1, RW4 r2)) /************************************************************************* * FIXME: mem access modes probably wrong * *************************************************************************/ LOWFUNC(READ,WRITE,0,raw_pushfl,(void)) { emit_byte(0x9c); } LENDFUNC(READ,WRITE,0,raw_pushfl,(void)) LOWFUNC(WRITE,READ,0,raw_popfl,(void)) { emit_byte(0x9d); } LENDFUNC(WRITE,READ,0,raw_popfl,(void)) /* Generate floating-point instructions */ static inline void x86_fadd_m(MEMR s) { emit_byte(0xdc); emit_byte(0x05); emit_long(s); } #endif /* USE_NEW_RTASM */ /************************************************************************* * Unoptimizable stuff --- jump * *************************************************************************/ static inline void raw_call_r(R4 r) { #if USE_NEW_RTASM CALLsr(r); #else emit_byte(0xff); emit_byte(0xd0+r); #endif } static inline void raw_call_m_indexed(uae_u32 base, uae_u32 r, uae_u32 m) { #if USE_NEW_RTASM ADDR32 CALLsm(base, X86_NOREG, r, m); #else int mu; switch(m) { case 1: mu=0; break; case 2: mu=1; break; case 4: mu=2; break; case 8: mu=3; break; default: abort(); } emit_byte(0xff); emit_byte(0x14); emit_byte(0x05+8*r+0x40*mu); emit_long(base); #endif } static inline void raw_jmp_r(R4 r) { #if USE_NEW_RTASM JMPsr(r); #else emit_byte(0xff); emit_byte(0xe0+r); #endif } static inline void raw_jmp_m_indexed(uae_u32 base, uae_u32 r, uae_u32 m) { #if USE_NEW_RTASM ADDR32 JMPsm(base, X86_NOREG, r, m); #else int mu; switch (m) { case 1: mu=0; break; case 2: mu=1; break; case 4: mu=2; break; case 8: mu=3; break; default: abort(); } emit_byte(0xff); emit_byte(0x24); emit_byte(0x05+8*r+0x40*mu); emit_long(base); #endif } static inline void raw_jmp_m(uae_u32 base) { emit_byte(0xff); emit_byte(0x25); emit_long(base); } static inline void raw_call(uae_u32 t) { #if USE_NEW_RTASM ADDR32 CALLm(t); #else emit_byte(0xe8); emit_long(t-(uintptr)target-4); #endif } static inline void raw_jmp(uae_u32 t) { #if USE_NEW_RTASM ADDR32 JMPm(t); #else emit_byte(0xe9); emit_long(t-(uintptr)target-4); #endif } static inline void raw_jl(uae_u32 t) { emit_byte(0x0f); emit_byte(0x8c); emit_long(t-(uintptr)target-4); } static inline void raw_jz(uae_u32 t) { emit_byte(0x0f); emit_byte(0x84); emit_long(t-(uintptr)target-4); } static inline void raw_jnz(uae_u32 t) { emit_byte(0x0f); emit_byte(0x85); emit_long(t-(uintptr)target-4); } static inline void raw_jnz_l_oponly(void) { emit_byte(0x0f); emit_byte(0x85); } static inline void raw_jcc_l_oponly(int cc) { emit_byte(0x0f); emit_byte(0x80+cc); } static inline void raw_jnz_b_oponly(void) { emit_byte(0x75); } static inline void raw_jz_b_oponly(void) { emit_byte(0x74); } static inline void raw_jcc_b_oponly(int cc) { emit_byte(0x70+cc); } static inline void raw_jmp_l_oponly(void) { emit_byte(0xe9); } static inline void raw_jmp_b_oponly(void) { emit_byte(0xeb); } static inline void raw_ret(void) { emit_byte(0xc3); } static inline void raw_emit_nop(void) { emit_byte(0x90); } static inline void raw_emit_nop_filler(int nbytes) { #if defined(CPU_x86_64) /* The recommended way to pad 64bit code is to use NOPs preceded by maximally four 0x66 prefixes. Balance the size of nops. */ static const uae_u8 prefixes[4] = { 0x66, 0x66, 0x66, 0x66 }; if (nbytes == 0) return; int i; int nnops = (nbytes + 3) / 4; int len = nbytes / nnops; int remains = nbytes - nnops * len; for (i = 0; i < remains; i++) { emit_block(prefixes, len); raw_emit_nop(); } for (; i < nnops; i++) { emit_block(prefixes, len - 1); raw_emit_nop(); } #else /* Source: GNU Binutils 2.12.90.0.15 */ /* Various efficient no-op patterns for aligning code labels. Note: Don't try to assemble the instructions in the comments. 0L and 0w are not legal. */ static const uae_u8 f32_1[] = {0x90}; /* nop */ static const uae_u8 f32_2[] = {0x89,0xf6}; /* movl %esi,%esi */ static const uae_u8 f32_3[] = {0x8d,0x76,0x00}; /* leal 0(%esi),%esi */ static const uae_u8 f32_4[] = {0x8d,0x74,0x26,0x00}; /* leal 0(%esi,1),%esi */ static const uae_u8 f32_5[] = {0x90, /* nop */ 0x8d,0x74,0x26,0x00}; /* leal 0(%esi,1),%esi */ static const uae_u8 f32_6[] = {0x8d,0xb6,0x00,0x00,0x00,0x00}; /* leal 0L(%esi),%esi */ static const uae_u8 f32_7[] = {0x8d,0xb4,0x26,0x00,0x00,0x00,0x00}; /* leal 0L(%esi,1),%esi */ static const uae_u8 f32_8[] = {0x90, /* nop */ 0x8d,0xb4,0x26,0x00,0x00,0x00,0x00}; /* leal 0L(%esi,1),%esi */ static const uae_u8 f32_9[] = {0x89,0xf6, /* movl %esi,%esi */ 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00}; /* leal 0L(%edi,1),%edi */ static const uae_u8 f32_10[] = {0x8d,0x76,0x00, /* leal 0(%esi),%esi */ 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00}; /* leal 0L(%edi,1),%edi */ static const uae_u8 f32_11[] = {0x8d,0x74,0x26,0x00, /* leal 0(%esi,1),%esi */ 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00}; /* leal 0L(%edi,1),%edi */ static const uae_u8 f32_12[] = {0x8d,0xb6,0x00,0x00,0x00,0x00, /* leal 0L(%esi),%esi */ 0x8d,0xbf,0x00,0x00,0x00,0x00}; /* leal 0L(%edi),%edi */ static const uae_u8 f32_13[] = {0x8d,0xb6,0x00,0x00,0x00,0x00, /* leal 0L(%esi),%esi */ 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00}; /* leal 0L(%edi,1),%edi */ static const uae_u8 f32_14[] = {0x8d,0xb4,0x26,0x00,0x00,0x00,0x00, /* leal 0L(%esi,1),%esi */ 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00}; /* leal 0L(%edi,1),%edi */ static const uae_u8 f32_15[] = {0xeb,0x0d,0x90,0x90,0x90,0x90,0x90, /* jmp .+15; lotsa nops */ 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90}; static const uae_u8 f32_16[] = {0xeb,0x0d,0x90,0x90,0x90,0x90,0x90, /* jmp .+15; lotsa nops */ 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90}; static const uae_u8 *const f32_patt[] = { f32_1, f32_2, f32_3, f32_4, f32_5, f32_6, f32_7, f32_8, f32_9, f32_10, f32_11, f32_12, f32_13, f32_14, f32_15 }; int nloops = nbytes / 16; while (nloops-- > 0) emit_block(f32_16, sizeof(f32_16)); nbytes %= 16; if (nbytes) emit_block(f32_patt[nbytes - 1], nbytes); #endif } /************************************************************************* * Flag handling, to and fro UAE flag register * *************************************************************************/ static inline void raw_flags_evicted(int r) { //live.state[FLAGTMP].status=CLEAN; live.state[FLAGTMP].status=INMEM; live.state[FLAGTMP].realreg=-1; /* We just "evicted" FLAGTMP. */ if (live.nat[r].nholds!=1) { /* Huh? */ abort(); } live.nat[r].nholds=0; } #define FLAG_NREG1_FLAGREG 0 /* Set to -1 if any register will do */ static inline void raw_flags_to_reg_FLAGREG(int r) { raw_lahf(0); /* Most flags in AH */ //raw_setcc(r,0); /* V flag in AL */ raw_setcc_m((uintptr)live.state[FLAGTMP].mem,0); #if 1 /* Let's avoid those nasty partial register stalls */ //raw_mov_b_mr((uintptr)live.state[FLAGTMP].mem,r); raw_mov_b_mr(((uintptr)live.state[FLAGTMP].mem)+1,AH_INDEX); raw_flags_evicted(r); #endif } #define FLAG_NREG2_FLAGREG 0 /* Set to -1 if any register will do */ static inline void raw_reg_to_flags_FLAGREG(int r) { raw_cmp_b_ri(r,-127); /* set V */ raw_sahf(0); } #define FLAG_NREG3_FLAGREG 0 /* Set to -1 if any register will do */ static __inline__ void raw_flags_set_zero_FLAGREG(int s, int tmp) { raw_mov_l_rr(tmp,s); raw_lahf(s); /* flags into ah */ SETOr(X86_AL); /* V flag into al */ raw_and_l_ri(s,0xffffbfff); raw_and_l_ri(tmp,0x00004000); raw_xor_l_ri(tmp,0x00004000); raw_or_l(s,tmp); raw_cmp_b_ri(X86_AL,-127); /* set V */ raw_sahf(s); } static inline void raw_flags_init_FLAGREG(void) { } #define FLAG_NREG1_FLAGSTK -1 /* Set to -1 if any register will do */ static inline void raw_flags_to_reg_FLAGSTK(int r) { raw_pushfl(); raw_pop_l_r(r); raw_mov_l_mr((uintptr)live.state[FLAGTMP].mem,r); raw_flags_evicted(r); } #define FLAG_NREG2_FLAGSTK -1 /* Set to -1 if any register will do */ static inline void raw_reg_to_flags_FLAGSTK(int r) { raw_push_l_r(r); raw_popfl(); } #define FLAG_NREG3_FLAGSTK -1 /* Set to -1 if any register will do */ static inline void raw_flags_set_zero_FLAGSTK(int s, int tmp) { raw_mov_l_rr(tmp,s); raw_pushfl(); raw_pop_l_r(s); raw_and_l_ri(s,0xffffffbf); raw_and_l_ri(tmp,0x00000040); raw_xor_l_ri(tmp,0x00000040); raw_or_l(s,tmp); raw_push_l_r(s); raw_popfl(); } static inline void raw_flags_init_FLAGSTK(void) { } #if defined(CPU_x86_64) /* Try to use the LAHF/SETO method on x86_64 since it is faster. This can't be the default because some older CPUs don't support LAHF/SAHF in long mode. */ static int FLAG_NREG1_FLAGGEN = 0; static inline void raw_flags_to_reg_FLAGGEN(int r) { if (have_lahf_lm) { // NOTE: the interpreter uses the normal EFLAGS layout // pushf/popf CF(0) ZF( 6) SF( 7) OF(11) // sahf/lahf CF(8) ZF(14) SF(15) OF( 0) assert(r == 0); raw_setcc(r,0); /* V flag in AL */ raw_lea_l_r_scaled(0,0,8); /* move it to its EFLAGS location */ raw_mov_b_mr(((uintptr)live.state[FLAGTMP].mem)+1,0); raw_lahf(0); /* most flags in AH */ raw_mov_b_mr((uintptr)live.state[FLAGTMP].mem,AH_INDEX); raw_flags_evicted(r); } else raw_flags_to_reg_FLAGSTK(r); } static int FLAG_NREG2_FLAGGEN = 0; static inline void raw_reg_to_flags_FLAGGEN(int r) { if (have_lahf_lm) { raw_xchg_b_rr(0,AH_INDEX); raw_cmp_b_ri(r,-120); /* set V */ raw_sahf(0); } else raw_reg_to_flags_FLAGSTK(r); } static int FLAG_NREG3_FLAGGEN = 0; static inline void raw_flags_set_zero_FLAGGEN(int s, int tmp) { if (have_lahf_lm) raw_flags_set_zero_FLAGREG(s, tmp); else raw_flags_set_zero_FLAGSTK(s, tmp); } static inline void raw_flags_init_FLAGGEN(void) { if (have_lahf_lm) { FLAG_NREG1_FLAGGEN = FLAG_NREG1_FLAGREG; FLAG_NREG2_FLAGGEN = FLAG_NREG2_FLAGREG; FLAG_NREG1_FLAGGEN = FLAG_NREG3_FLAGREG; } else { FLAG_NREG1_FLAGGEN = FLAG_NREG1_FLAGSTK; FLAG_NREG2_FLAGGEN = FLAG_NREG2_FLAGSTK; FLAG_NREG1_FLAGGEN = FLAG_NREG3_FLAGSTK; } } #endif #ifdef SAHF_SETO_PROFITABLE #define FLAG_SUFFIX FLAGREG #elif defined CPU_x86_64 #define FLAG_SUFFIX FLAGGEN #else #define FLAG_SUFFIX FLAGSTK #endif #define FLAG_GLUE_2(x, y) x ## _ ## y #define FLAG_GLUE_1(x, y) FLAG_GLUE_2(x, y) #define FLAG_GLUE(x) FLAG_GLUE_1(x, FLAG_SUFFIX) #define raw_flags_init FLAG_GLUE(raw_flags_init) #define FLAG_NREG1 FLAG_GLUE(FLAG_NREG1) #define raw_flags_to_reg FLAG_GLUE(raw_flags_to_reg) #define FLAG_NREG2 FLAG_GLUE(FLAG_NREG2) #define raw_reg_to_flags FLAG_GLUE(raw_reg_to_flags) #define FLAG_NREG3 FLAG_GLUE(FLAG_NREG3) #define raw_flags_set_zero FLAG_GLUE(raw_flags_set_zero) /* Apparently, there are enough instructions between flag store and flag reload to avoid the partial memory stall */ static inline void raw_load_flagreg(uae_u32 target, uae_u32 r) { /* attention: in 64bit mode, relies on LITTE_ENDIANESS of regflags.cznv */ raw_mov_l_rm(target,(uintptr)live.state[r].mem); } static inline void raw_load_flagx(uae_u32 target, uae_u32 r) { #if FLAGBIT_X < 8 if (live.nat[target].canbyte) raw_mov_b_rm(target,(uintptr)live.state[r].mem); else #endif if (live.nat[target].canword) raw_mov_w_rm(target,(uintptr)live.state[r].mem); else raw_mov_l_rm(target,(uintptr)live.state[r].mem); } static inline void raw_dec_sp(int off) { if (off) { #ifdef CPU_x86_64 emit_byte(0x48); /* REX prefix */ #endif raw_sub_l_ri(ESP_INDEX,off); } } static inline void raw_inc_sp(int off) { if (off) { #ifdef CPU_x86_64 emit_byte(0x48); /* REX prefix */ #endif raw_add_l_ri(ESP_INDEX,off); } } static inline void raw_push_regs_to_preserve(void) { for (int i=N_REGS;i--;) { if (need_to_preserve[i]) raw_push_l_r(i); } } static inline void raw_pop_preserved_regs(void) { for (int i=0;ix86_vendor_id; if (!strcmp(v, "GenuineIntel")) c->x86_vendor = X86_VENDOR_INTEL; else if (!strcmp(v, "AuthenticAMD")) c->x86_vendor = X86_VENDOR_AMD; else if (!strcmp(v, "CyrixInstead")) c->x86_vendor = X86_VENDOR_CYRIX; else if (!strcmp(v, "Geode by NSC")) c->x86_vendor = X86_VENDOR_NSC; else if (!strcmp(v, "UMC UMC UMC ")) c->x86_vendor = X86_VENDOR_UMC; else if (!strcmp(v, "CentaurHauls")) c->x86_vendor = X86_VENDOR_CENTAUR; else if (!strcmp(v, "NexGenDriven")) c->x86_vendor = X86_VENDOR_NEXGEN; else if (!strcmp(v, "RiseRiseRise")) c->x86_vendor = X86_VENDOR_RISE; else if (!strcmp(v, "GenuineTMx86") || !strcmp(v, "TransmetaCPU")) c->x86_vendor = X86_VENDOR_TRANSMETA; else c->x86_vendor = X86_VENDOR_UNKNOWN; } /* * Generic CPUID function * clear %ecx since some cpus (Cyrix MII) do not set or clear %ecx * resulting in stale register contents being returned. */ /* Some CPUID calls want 'count' to be placed in ecx */ #ifdef __GNUC__ static void cpuid_count(uae_u32 op, uae_u32 count, uae_u32 *eax, uae_u32 *ebx, uae_u32 *ecx, uae_u32 *edx) { uae_u32 _eax, _ebx, _ecx, _edx; _eax = op; _ecx = count; __asm__ __volatile__( " movl %0,%%eax \n" " movl %2,%%ecx \n" " cpuid \n" " movl %%eax,%0 \n" " movl %%ebx,%1 \n" " movl %%ecx,%2 \n" " movl %%edx,%3 \n" : "+m" (_eax), "=m" (_ebx), "+m" (_ecx), "=m" (_edx) : : "eax", "ebx", "ecx", "edx"); *eax = _eax; *ebx = _ebx; *ecx = _ecx; *edx = _edx; } #endif #ifdef _MSC_VER #include static void cpuid_count(uae_u32 op, uae_u32 count, uae_u32 *eax, uae_u32 *ebx, uae_u32 *ecx, uae_u32 *edx) { int cpuinfo[4]; cpuinfo[0] = op; cpuinfo[1] = 0; cpuinfo[2] = count; cpuinfo[3] = 0; __cpuidex(cpuinfo, op, count); *eax = cpuinfo[0]; *ebx = cpuinfo[1]; *ecx = cpuinfo[2]; *edx = cpuinfo[3]; } #endif static void cpuid(uae_u32 op, uae_u32 *eax, uae_u32 *ebx, uae_u32 *ecx, uae_u32 *edx) { cpuid_count(op, 0, eax, ebx, ecx, edx); } static void raw_init_cpu(void) { struct cpuinfo_x86 *c = &cpuinfo; uae_u32 dummy; /* Defaults */ c->x86_processor = X86_PROCESSOR_max; c->x86_vendor = X86_VENDOR_UNKNOWN; c->cpuid_level = -1; /* CPUID not detected */ c->x86_model = c->x86_mask = 0; /* So far unknown... */ c->x86_vendor_id[0] = '\0'; /* Unset */ c->x86_hwcap = 0; #ifdef CPU_x86_64 c->x86_clflush_size = 64; #else c->x86_clflush_size = 32; #endif /* Get vendor name */ c->x86_vendor_id[12] = '\0'; cpuid(0x00000000, (uae_u32 *)&c->cpuid_level, (uae_u32 *)&c->x86_vendor_id[0], (uae_u32 *)&c->x86_vendor_id[8], (uae_u32 *)&c->x86_vendor_id[4]); x86_get_cpu_vendor(c); /* Intel-defined flags: level 0x00000001 */ c->x86_brand_id = 0; if ( c->cpuid_level >= 0x00000001 ) { uae_u32 tfms, brand_id; cpuid(0x00000001, &tfms, &brand_id, &dummy, &c->x86_hwcap); c->x86 = (tfms >> 8) & 15; if (c->x86 == 0xf) c->x86 += (tfms >> 20) & 0xff; /* extended family */ c->x86_model = (tfms >> 4) & 15; if (c->x86_model == 0xf) c->x86_model |= (tfms >> 12) & 0xf0; /* extended model */ c->x86_brand_id = brand_id & 0xff; c->x86_mask = tfms & 15; if (c->x86_hwcap & (1 << 19)) { c->x86_clflush_size = ((brand_id >> 8) & 0xff) * 8; } } else { /* Have CPUID level 0 only - unheard of */ c->x86 = 4; } /* AMD-defined flags: level 0x80000001 */ uae_u32 xlvl; cpuid(0x80000000, &xlvl, &dummy, &dummy, &dummy); if ( (xlvl & 0xffff0000) == 0x80000000 ) { if ( xlvl >= 0x80000001 ) { uae_u32 features, extra_features; cpuid(0x80000001, &dummy, &dummy, &extra_features, &features); if (features & (1 << 29)) { /* Assume x86-64 if long mode is supported */ c->x86_processor = X86_PROCESSOR_X86_64; } if (extra_features & (1 << 0)) have_lahf_lm = true; } } /* Canonicalize processor ID */ switch (c->x86) { case 3: c->x86_processor = X86_PROCESSOR_I386; break; case 4: c->x86_processor = X86_PROCESSOR_I486; break; case 5: if (c->x86_vendor == X86_VENDOR_AMD) c->x86_processor = X86_PROCESSOR_K6; else c->x86_processor = X86_PROCESSOR_PENTIUM; break; case 6: if (c->x86_vendor == X86_VENDOR_AMD) c->x86_processor = X86_PROCESSOR_ATHLON; else c->x86_processor = X86_PROCESSOR_PENTIUMPRO; break; case 15: if (c->x86_processor == X86_PROCESSOR_max) { switch (c->x86_vendor) { case X86_VENDOR_INTEL: c->x86_processor = X86_PROCESSOR_PENTIUM4; break; case X86_VENDOR_AMD: /* Assume a 32-bit Athlon processor if not in long mode */ c->x86_processor = X86_PROCESSOR_ATHLON; break; } } break; } if (c->x86_processor == X86_PROCESSOR_max) { c->x86_processor = X86_PROCESSOR_I386; jit_log("Error: unknown processor type"); jit_log(" Family : %d", c->x86); jit_log(" Model : %d", c->x86_model); jit_log(" Mask : %d", c->x86_mask); jit_log(" Vendor : %s [%d]", c->x86_vendor_id, c->x86_vendor); if (c->x86_brand_id) { jit_log(" BrandID : %02x", c->x86_brand_id); } } /* Have CMOV support? */ have_cmov = (c->x86_hwcap & (1 << 15)) != 0; #if defined(CPU_x86_64) if (!have_cmov) { jit_abort("x86-64 implementations are bound to have CMOV!"); } #endif c->x86_has_xmm2 = (c->x86_hwcap & (1 << 26)) != 0; /* Can the host CPU suffer from partial register stalls? */ // non-RAT_STALL mode is currently broken have_rat_stall = true; //(c->x86_vendor == X86_VENDOR_INTEL); #if 0 /* It appears that partial register writes are a bad idea even on AMD K7 cores, even though they are not supposed to have the dreaded rat stall. Why? Anyway, that's why we lie about it ;-) */ if (c->x86_processor == X86_PROCESSOR_ATHLON) have_rat_stall = true; #endif /* Alignments */ if (tune_alignment) { align_loops = x86_alignments[c->x86_processor].align_loop; align_jumps = x86_alignments[c->x86_processor].align_jump; } jit_log(" : Max CPUID level=%d Processor is %s [%s]", c->cpuid_level, c->x86_vendor_id, x86_processor_string_table[c->x86_processor]); raw_flags_init(); } #ifndef UAE static void __attribute_noinline__ prevent_redzone_use(void) {} static bool target_check_bsf(void) { bool mismatch = false; for (int g_ZF = 0; g_ZF <= 1; g_ZF++) { for (int g_CF = 0; g_CF <= 1; g_CF++) { for (int g_OF = 0; g_OF <= 1; g_OF++) { for (int g_SF = 0; g_SF <= 1; g_SF++) { for (int value = -1; value <= 1; value++) { uintptr flags = (g_SF << 7) | (g_OF << 11) | (g_ZF << 6) | g_CF; intptr tmp = value; prevent_redzone_use(); __asm__ __volatile__ ("push %0; popf; bsf %1,%1; pushf; pop %0" : "+r" (flags), "+r" (tmp) : : "cc"); int OF = (flags >> 11) & 1; int SF = (flags >> 7) & 1; int ZF = (flags >> 6) & 1; int CF = flags & 1; tmp = (value == 0); if (ZF != tmp || SF != g_SF || OF != g_OF || CF != g_CF) mismatch = true; } } } } } if (mismatch) { jit_log(" : Target CPU defines all flags on BSF instruction"); } return !mismatch; } #endif /************************************************************************* * FPU stuff * *************************************************************************/ static inline void raw_fp_init(void) { int i; for (i=0;i1) { emit_byte(0x9b); emit_byte(0xdb); emit_byte(0xe3); live.tos=-1; } #endif while (live.tos>=1) { emit_byte(0xde); emit_byte(0xd9); live.tos-=2; } while (live.tos>=0) { emit_byte(0xdd); emit_byte(0xd8); live.tos--; } raw_fp_init(); } static inline void make_tos(int r) { int p,q; if (live.spos[r]<0) { /* Register not yet on stack */ emit_byte(0xd9); emit_byte(0xe8); /* Push '1' on the stack, just to grow it */ live.tos++; live.spos[r]=live.tos; live.onstack[live.tos]=r; return; } /* Register is on stack */ if (live.tos==live.spos[r]) return; p=live.spos[r]; q=live.onstack[live.tos]; emit_byte(0xd9); emit_byte(0xc8+live.tos-live.spos[r]); /* exchange it with top of stack */ live.onstack[live.tos]=r; live.spos[r]=live.tos; live.onstack[p]=q; live.spos[q]=p; } static inline void make_tos2(int r, int r2) { int q; make_tos(r2); /* Put the reg that's supposed to end up in position2 on top */ if (live.spos[r]<0) { /* Register not yet on stack */ make_tos(r); /* This will extend the stack */ return; } /* Register is on stack */ emit_byte(0xd9); emit_byte(0xc9); /* Move r2 into position 2 */ q=live.onstack[live.tos-1]; live.onstack[live.tos]=q; live.spos[q]=live.tos; live.onstack[live.tos-1]=r2; live.spos[r2]=live.tos-1; make_tos(r); /* And r into 1 */ } static inline int stackpos(int r) { if (live.spos[r]<0) abort(); if (live.tos=0) { /* source is on top of stack, and we already have the dest */ int dd=stackpos(d); emit_byte(0xdd); emit_byte(0xd0+dd); } else { emit_byte(0xd9); emit_byte(0xc0+ds); /* duplicate source on tos */ tos_make(d); /* store to destination, pop if necessary */ } } LENDFUNC(NONE,NONE,2,raw_fmov_rr,(FW d, FR s)) LOWFUNC(NONE,READ,2,raw_fldcw_m_indexed,(R4 index, IMM base)) { x86_64_prefix(true, false, NULL, NULL, &index); emit_byte(0xd9); emit_byte(0xa8 + index); emit_long(base); } LENDFUNC(NONE,READ,2,raw_fldcw_m_indexed,(R4 index, IMM base)) LOWFUNC(NONE,NONE,2,raw_fsqrt_rr,(FW d, FR s)) { int ds; if (d!=s) { usereg(s); ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* duplicate source */ emit_byte(0xd9); emit_byte(0xfa); /* take square root */ tos_make(d); /* store to destination */ } else { make_tos(d); emit_byte(0xd9); emit_byte(0xfa); /* take square root */ } } LENDFUNC(NONE,NONE,2,raw_fsqrt_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fabs_rr,(FW d, FR s)) { int ds; if (d!=s) { usereg(s); ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* duplicate source */ emit_byte(0xd9); emit_byte(0xe1); /* take fabs */ tos_make(d); /* store to destination */ } else { make_tos(d); emit_byte(0xd9); emit_byte(0xe1); /* take fabs */ } } LENDFUNC(NONE,NONE,2,raw_fabs_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_frndint_rr,(FW d, FR s)) { int ds; if (d!=s) { usereg(s); ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* duplicate source */ emit_byte(0xd9); emit_byte(0xfc); /* take frndint */ tos_make(d); /* store to destination */ } else { make_tos(d); emit_byte(0xd9); emit_byte(0xfc); /* take frndint */ } } LENDFUNC(NONE,NONE,2,raw_frndint_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fcos_rr,(FW d, FR s)) { int ds; if (d!=s) { usereg(s); ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* duplicate source */ emit_byte(0xd9); emit_byte(0xff); /* take cos */ tos_make(d); /* store to destination */ } else { make_tos(d); emit_byte(0xd9); emit_byte(0xff); /* take cos */ } } LENDFUNC(NONE,NONE,2,raw_fcos_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fsin_rr,(FW d, FR s)) { int ds; if (d!=s) { usereg(s); ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ emit_byte(0xd9); emit_byte(0xfe); /* fsin sin(x) */ tos_make(d); /* store to destination */ } else { make_tos(d); emit_byte(0xd9); emit_byte(0xfe); /* fsin y=sin(x) */ } } LENDFUNC(NONE,NONE,2,raw_fsin_rr,(FW d, FR s)) static const double one = 1; LOWFUNC(NONE,NONE,2,raw_ftwotox_rr,(FW d, FR s)) { int ds; usereg(s); ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ emit_byte(0xd9); emit_byte(0xc0); /* duplicate top of stack. Now up to 8 high */ emit_byte(0xd9); emit_byte(0xfc); /* frndint int(x) */ emit_byte(0xd9); emit_byte(0xc9); /* swap top two elements */ emit_byte(0xd8); emit_byte(0xe1); /* fsub frac(x) = x - int(x) */ emit_byte(0xd9); emit_byte(0xf0); /* f2xm1 (2^frac(x))-1 */ x86_fadd_m((uintptr) &one); /* Add '1' without using extra stack space */ emit_byte(0xd9); emit_byte(0xfd); /* fscale (2^frac(x))*2^int(x) */ emit_byte(0xdd); emit_byte(0xd9); /* fstp copy & pop */ tos_make(d); /* store y=2^x */ } LENDFUNC(NONE,NONE,2,raw_ftwotox_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fetox_rr,(FW d, FR s)) { int ds; usereg(s); ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* duplicate source */ emit_byte(0xd9); emit_byte(0xea); /* fldl2e log2(e) */ emit_byte(0xde); emit_byte(0xc9); /* fmulp --- multiply source by log2(e) */ emit_byte(0xd9); emit_byte(0xc0); /* duplicate top of stack. Now up to 8 high */ emit_byte(0xd9); emit_byte(0xfc); /* rndint */ emit_byte(0xd9); emit_byte(0xc9); /* swap top two elements */ emit_byte(0xd8); emit_byte(0xe1); /* subtract rounded from original */ emit_byte(0xd9); emit_byte(0xf0); /* f2xm1 */ x86_fadd_m((uintptr)&one); /* Add '1' without using extra stack space */ emit_byte(0xd9); emit_byte(0xfd); /* and scale it */ emit_byte(0xdd); emit_byte(0xd9); /* take he rounded value off */ tos_make(d); /* store to destination */ } LENDFUNC(NONE,NONE,2,raw_fetox_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_flog2_rr,(FW d, FR s)) { int ds; usereg(s); ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* duplicate source */ emit_byte(0xd9); emit_byte(0xe8); /* push '1' */ emit_byte(0xd9); emit_byte(0xc9); /* swap top two */ emit_byte(0xd9); emit_byte(0xf1); /* take 1*log2(x) */ tos_make(d); /* store to destination */ } LENDFUNC(NONE,NONE,2,raw_flog2_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fneg_rr,(FW d, FR s)) { int ds; if (d!=s) { usereg(s); ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* duplicate source */ emit_byte(0xd9); emit_byte(0xe0); /* take fchs */ tos_make(d); /* store to destination */ } else { make_tos(d); emit_byte(0xd9); emit_byte(0xe0); /* take fchs */ } } LENDFUNC(NONE,NONE,2,raw_fneg_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fadd_rr,(FRW d, FR s)) { int ds; usereg(s); usereg(d); if (live.spos[s]==live.tos) { /* Source is on top of stack */ ds=stackpos(d); emit_byte(0xdc); emit_byte(0xc0+ds); /* add source to dest*/ } else { make_tos(d); ds=stackpos(s); emit_byte(0xd8); emit_byte(0xc0+ds); /* add source to dest*/ } } LENDFUNC(NONE,NONE,2,raw_fadd_rr,(FRW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fsub_rr,(FRW d, FR s)) { int ds; usereg(s); usereg(d); if (live.spos[s]==live.tos) { /* Source is on top of stack */ ds=stackpos(d); emit_byte(0xdc); emit_byte(0xe8+ds); /* sub source from dest*/ } else { make_tos(d); ds=stackpos(s); emit_byte(0xd8); emit_byte(0xe0+ds); /* sub src from dest */ } } LENDFUNC(NONE,NONE,2,raw_fsub_rr,(FRW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fcmp_rr,(FR d, FR s)) { int ds; usereg(s); usereg(d); make_tos(d); ds=stackpos(s); emit_byte(0xdd); emit_byte(0xe0+ds); /* cmp dest with source*/ } LENDFUNC(NONE,NONE,2,raw_fcmp_rr,(FR d, FR s)) LOWFUNC(NONE,NONE,2,raw_fmul_rr,(FRW d, FR s)) { int ds; usereg(s); usereg(d); if (live.spos[s]==live.tos) { /* Source is on top of stack */ ds=stackpos(d); emit_byte(0xdc); emit_byte(0xc8+ds); /* mul dest by source*/ } else { make_tos(d); ds=stackpos(s); emit_byte(0xd8); emit_byte(0xc8+ds); /* mul dest by source*/ } } LENDFUNC(NONE,NONE,2,raw_fmul_rr,(FRW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fdiv_rr,(FRW d, FR s)) { int ds; usereg(s); usereg(d); if (live.spos[s]==live.tos) { /* Source is on top of stack */ ds=stackpos(d); emit_byte(0xdc); emit_byte(0xf8+ds); /* div dest by source */ } else { make_tos(d); ds=stackpos(s); emit_byte(0xd8); emit_byte(0xf0+ds); /* div dest by source*/ } } LENDFUNC(NONE,NONE,2,raw_fdiv_rr,(FRW d, FR s)) LOWFUNC(NONE,NONE,2,raw_frem_rr,(FRW d, FR s)) { int ds; usereg(s); usereg(d); make_tos2(d,s); ds=stackpos(s); if (ds!=1) { jit_abort("Failed horribly in raw_frem_rr! ds is %d",ds); } emit_byte(0xd9); emit_byte(0xf8); /* take rem from dest by source */ } LENDFUNC(NONE,NONE,2,raw_frem_rr,(FRW d, FR s)) LOWFUNC(NONE,NONE,2,raw_frem1_rr,(FRW d, FR s)) { int ds; usereg(s); usereg(d); make_tos2(d,s); ds=stackpos(s); if (ds!=1) { jit_abort("Failed horribly in raw_frem1_rr! ds is %d",ds); } emit_byte(0xd9); emit_byte(0xf5); /* take rem1 from dest by source */ } LENDFUNC(NONE,NONE,2,raw_frem1_rr,(FRW d, FR s)) LOWFUNC(NONE,NONE,1,raw_ftst_r,(FR r)) { make_tos(r); emit_byte(0xd9); /* ftst */ emit_byte(0xe4); } LENDFUNC(NONE,NONE,1,raw_ftst_r,(FR r)) LOWFUNC(NONE,NONE,2,raw_fetoxM1_rr,(FW d, FR s)) { int ds; if (s==d) make_tos(s); else { ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ } emit_byte(0xd9); emit_byte(0xea); /* fldl2e log2(e) */ emit_byte(0xd8); emit_byte(0xc9); /* fmul x*log2(e) */ emit_byte(0xdd); emit_byte(0xd1); /* fst copy up */ emit_byte(0xd9); emit_byte(0xfc); /* frndint int(x*log2(e)) */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap top two elements */ emit_byte(0xd8); emit_byte(0xe1); /* fsub x*log2(e) - int(x*log2(e)) */ emit_byte(0xd9); emit_byte(0xf0); /* f2xm1 (2^frac(x))-1 */ emit_byte(0xd9); emit_byte(0xfd); /* fscale ((2^frac(x))-1)*2^int(x*log2(e)) */ emit_byte(0xdd); emit_byte(0xd9); /* fstp copy & pop */ if (s!=d) tos_make(d); /* store y=(e^x)-1 */ } LENDFUNC(NONE,NONE,2,raw_fetoxM1_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_ftentox_rr,(FW d, FR s)) { int ds; if (s==d) make_tos(s); else { ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ } emit_byte(0xd9); emit_byte(0xe9); /* fldl2t log2(10) */ emit_byte(0xd8); emit_byte(0xc9); /* fmul x*log2(10) */ emit_byte(0xdd); emit_byte(0xd1); /* fst copy up */ emit_byte(0xd9); emit_byte(0xfc); /* frndint int(x*log2(10)) */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap top two elements */ emit_byte(0xd8); emit_byte(0xe1); /* fsub x*log2(10) - int(x*log2(10)) */ emit_byte(0xd9); emit_byte(0xf0); /* f2xm1 (2^frac(x))-1 */ x86_fadd_m((uintptr) &one); emit_byte(0xd9); emit_byte(0xfd); /* fscale (2^frac(x))*2^int(x*log2(10)) */ emit_byte(0xdd); emit_byte(0xd9); /* fstp copy & pop */ if (s!=d) tos_make(d); /* store y=10^x */ } LENDFUNC(NONE,NONE,2,raw_ftentox_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,3,raw_fsincos_rr,(FW d, FW c, FR s)) { int ds; if (s==d) { //write_log (_T("FSINCOS src = dest\n")); make_tos(s); emit_byte(0xd9); emit_byte(0xfb); /* fsincos sin(x) push cos(x) */ tos_make(c); /* store cos(x) to c */ return; } ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ emit_byte(0xd9); emit_byte(0xfb); /* fsincos sin(x) push cos(x) */ if (live.spos[c]<0) { if (live.spos[d]<0) { /* occupy both regs directly */ live.tos++; live.spos[d]=live.tos; live.onstack[live.tos]=d; /* sin(x) comes first */ live.tos++; live.spos[c]=live.tos; live.onstack[live.tos]=c; } else { emit_byte(0xd9); emit_byte(0xc9); /* fxch swap cos(x) with sin(x) */ emit_byte(0xdd); /* store sin(x) to d & pop */ emit_byte(0xd8+(live.tos+2)-live.spos[d]); live.tos++; /* occupy a reg for cos(x) here */ live.spos[c]=live.tos; live.onstack[live.tos]=c; } } else { emit_byte(0xdd); /* store cos(x) to c & pop */ emit_byte(0xd8+(live.tos+2)-live.spos[c]); tos_make(d); /* store sin(x) to destination */ } } LENDFUNC(NONE,NONE,3,raw_fsincos_rr,(FW d, FW c, FR s)) LOWFUNC(NONE,NONE,2,raw_fscale_rr,(FRW d, FR s)) { int ds; if (live.spos[d]==live.tos && live.spos[s]==live.tos-1) { //write_log (_T("fscale found x in TOS-1 and y in TOS\n")); emit_byte(0xd9); emit_byte(0xfd); /* fscale y*(2^x) */ } else { make_tos(s); /* tos=x */ ds=stackpos(d); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld y */ emit_byte(0xd9); emit_byte(0xfd); /* fscale y*(2^x) */ tos_make(d); /* store y=y*(2^x) */ } } LENDFUNC(NONE,NONE,2,raw_fscale_rr,(FRW d, FR s)) LOWFUNC(NONE,NONE,2,raw_ftan_rr,(FW d, FR s)) { int ds; if (d!=s) { ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ emit_byte(0xd9); emit_byte(0xf2); /* fptan tan(x)=y/1.0 */ emit_byte(0xdd); emit_byte(0xd8); /* fstp pop 1.0 */ tos_make(d); /* store to destination */ } else { make_tos(d); emit_byte(0xd9); emit_byte(0xf2); /* fptan tan(x)=y/1.0 */ emit_byte(0xdd); emit_byte(0xd8); /* fstp pop 1.0 */ } } LENDFUNC(NONE,NONE,2,raw_ftan_rr,(FW d, FR s)) #ifdef CPU_x86_64 #define REX64() emit_byte(0x48) #else #define REX64() #endif LOWFUNC(NONE,NONE,1,raw_fcuts_r,(FRW r)) { make_tos(r); /* TOS = r */ REX64(); emit_byte(0x83); emit_byte(0xc4); emit_byte(0xfc); /* add -4 to esp */ emit_byte(0xd9); emit_byte(0x1c); emit_byte(0x24); /* fstp store r as SINGLE to [esp] and pop */ emit_byte(0xd9); emit_byte(0x04); emit_byte(0x24); /* fld load r as SINGLE from [esp] */ emit_byte(0x9b); /* let the CPU wait on FPU exceptions */ REX64(); emit_byte(0x83); emit_byte(0xc4); emit_byte(0x04); /* add +4 to esp */ } LENDFUNC(NONE,NONE,1,raw_fcuts_r,(FRW r)) LOWFUNC(NONE,NONE,1,raw_fcut_r,(FRW r)) { make_tos(r); /* TOS = r */ REX64(); emit_byte(0x83); emit_byte(0xc4); emit_byte(0xf8); /* add -8 to esp */ emit_byte(0xdd); emit_byte(0x1c); emit_byte(0x24); /* fstp store r as DOUBLE to [esp] and pop */ emit_byte(0xdd); emit_byte(0x04); emit_byte(0x24); /* fld load r as DOUBLE from [esp] */ emit_byte(0x9b); /* let the CPU wait on FPU exceptions */ REX64(); emit_byte(0x83); emit_byte(0xc4); emit_byte(0x08); /* add +8 to esp */ } LENDFUNC(NONE,NONE,1,raw_fcut_r,(FRW r)) LOWFUNC(NONE,NONE,2,raw_fgetexp_rr,(FW d, FR s)) { int ds; if (d!=s) { ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ emit_byte(0xd9); emit_byte(0xf4); /* fxtract exp push man */ emit_byte(0xdd); emit_byte(0xd8); /* fstp just pop man */ tos_make(d); /* store exp to destination */ } else { make_tos(d); /* tos=x=y */ emit_byte(0xd9); emit_byte(0xf4); /* fxtract exp push man */ emit_byte(0xdd); emit_byte(0xd8); /* fstp just pop man */ } } LENDFUNC(NONE,NONE,2,raw_fgetexp_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fgetman_rr,(FW d, FR s)) { int ds; if (d!=s) { ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ emit_byte(0xd9); emit_byte(0xf4); /* fxtract exp push man */ emit_byte(0xdd); emit_byte(0xd9); /* fstp copy man up & pop */ tos_make(d); /* store man to destination */ } else { make_tos(d); /* tos=x=y */ emit_byte(0xd9); emit_byte(0xf4); /* fxtract exp push man */ emit_byte(0xdd); emit_byte(0xd9); /* fstp copy man up & pop */ } } LENDFUNC(NONE,NONE,2,raw_fgetman_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_flogN_rr,(FW d, FR s)) { int ds; if (s==d) make_tos(s); else { ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ } emit_byte(0xd9); emit_byte(0xed); /* fldln2 logN(2) */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap logN(2) with x */ emit_byte(0xd9); emit_byte(0xf1); /* fyl2x logN(2)*log2(x) */ if (s!=d) tos_make(d); /* store y=logN(x) */ } LENDFUNC(NONE,NONE,2,raw_flogN_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_flogNP1_rr,(FW d, FR s)) { int ds; if (s==d) make_tos(s); else { ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ } emit_byte(0xd9); emit_byte(0xed); /* fldln2 logN(2) */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap logN(2) with x */ emit_byte(0xd9); emit_byte(0xf9); /* fyl2xp1 logN(2)*log2(x+1) */ if (s!=d) tos_make(d); /* store y=logN(x+1) */ } LENDFUNC(NONE,NONE,2,raw_flogNP1_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_flog10_rr,(FW d, FR s)) { int ds; if (s==d) make_tos(s); else { ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ } emit_byte(0xd9); emit_byte(0xec); /* fldlg2 log10(2) */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap log10(2) with x */ emit_byte(0xd9); emit_byte(0xf1); /* fyl2x log10(2)*log2(x) */ if (s!=d) tos_make(d); /* store y=log10(x) */ } LENDFUNC(NONE,NONE,2,raw_flog10_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fasin_rr,(FW d, FR s)) { int ds; ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ emit_byte(0xd8); emit_byte(0xc8); /* fmul x*x */ emit_byte(0xd9); emit_byte(0xe8); /* fld 1.0 */ emit_byte(0xde); emit_byte(0xe1); /* fsubrp 1 - (x^2) */ emit_byte(0xd9); emit_byte(0xfa); /* fsqrt sqrt(1-(x^2)) */ emit_byte(0xd9); emit_byte(0xc1+ds); /* fld x again */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap x with sqrt(1-(x^2)) */ emit_byte(0xd9); emit_byte(0xf3); /* fpatan atan(x/sqrt(1-(x^2))) & pop */ tos_make(d); /* store y=asin(x) */ } LENDFUNC(NONE,NONE,2,raw_fasin_rr,(FW d, FR s)) static uae_u32 pihalf[] = {0x2168c234, 0xc90fdaa2, 0x3fff}; // LSB=0 to get acos(1)=0 LOWFUNC(NONE,NONE,2,raw_facos_rr,(FW d, FR s)) { int ds; ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ emit_byte(0xd8); emit_byte(0xc8); /* fmul x*x */ emit_byte(0xd9); emit_byte(0xe8); /* fld 1.0 */ emit_byte(0xde); emit_byte(0xe1); /* fsubrp 1 - (x^2) */ emit_byte(0xd9); emit_byte(0xfa); /* fsqrt sqrt(1-(x^2)) */ emit_byte(0xd9); emit_byte(0xc1+ds); /* fld x again */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap x with sqrt(1-(x^2)) */ emit_byte(0xd9); emit_byte(0xf3); /* fpatan atan(x/sqrt(1-(x^2))) & pop */ raw_fldt((uintptr) &pihalf); /* fld load pi/2 from pihalf */ emit_byte(0xde); emit_byte(0xe1); /* fsubrp pi/2 - asin(x) & pop */ tos_make(d); /* store y=acos(x) */ } LENDFUNC(NONE,NONE,2,raw_facos_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fatan_rr,(FW d, FR s)) { int ds; if (s==d) make_tos(s); else { ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ } emit_byte(0xd9); emit_byte(0xe8); /* fld 1.0 */ emit_byte(0xd9); emit_byte(0xf3); /* fpatan atan(x)/1 & pop*/ if (s!=d) tos_make(d); /* store y=atan(x) */ } LENDFUNC(NONE,NONE,2,raw_fatan_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fatanh_rr,(FW d, FR s)) { int ds; ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ emit_byte(0xd9); emit_byte(0xe8); /* fld 1.0 */ emit_byte(0xdc); emit_byte(0xc1); /* fadd 1 + x */ emit_byte(0xd8); emit_byte(0xe2+ds); /* fsub 1 - x */ emit_byte(0xde); emit_byte(0xf9); /* fdivp (1+x)/(1-x) */ emit_byte(0xd9); emit_byte(0xed); /* fldl2e logN(2) */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap logN(2) with (1+x)/(1-x) */ emit_byte(0xd9); emit_byte(0xf1); /* fyl2x logN(2)*log2((1+x)/(1-x)) pop */ emit_byte(0xd9); emit_byte(0xe8); /* fld 1.0 */ emit_byte(0xd9); emit_byte(0xe0); /* fchs -1.0 */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap */ emit_byte(0xd9); emit_byte(0xfd); /* fscale logN((1+x)/(1-x)) * 2^(-1) */ emit_byte(0xdd); emit_byte(0xd9); /* fstp copy & pop */ tos_make(d); /* store y=atanh(x) */ } LENDFUNC(NONE,NONE,2,raw_fatanh_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fsinh_rr,(FW d, FR s)) { int ds,tr; tr=live.onstack[live.tos+3]; if (s==d) make_tos(s); else { ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ } emit_byte(0xd9); emit_byte(0xea); /* fldl2e log2(e) */ emit_byte(0xd8); emit_byte(0xc9); /* fmul x*log2(e) */ emit_byte(0xdd); emit_byte(0xd1); /* fst copy x*log2(e) */ if (tr>=0) { emit_byte(0xd9); emit_byte(0xca); /* fxch swap with temp-reg */ REX64(); emit_byte(0x83); emit_byte(0xc4); emit_byte(0xf4); /* add -12 to esp */ emit_byte(0xdb); emit_byte(0x3c); emit_byte(0x24); /* fstp store temp-reg to [esp] & pop */ } emit_byte(0xd9); emit_byte(0xe0); /* fchs -x*log2(e) */ emit_byte(0xd9); emit_byte(0xc0); /* fld -x*log2(e) again */ emit_byte(0xd9); emit_byte(0xfc); /* frndint int(-x*log2(e)) */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap */ emit_byte(0xd8); emit_byte(0xe1); /* fsub -x*log2(e) - int(-x*log2(e)) */ emit_byte(0xd9); emit_byte(0xf0); /* f2xm1 (2^frac(x))-1 */ x86_fadd_m((uintptr) &one); emit_byte(0xd9); emit_byte(0xfd); /* fscale (2^frac(x))*2^int(x*log2(e)) */ emit_byte(0xd9); emit_byte(0xca); /* fxch swap e^-x with x*log2(e) in tr */ emit_byte(0xdd); emit_byte(0xd1); /* fst copy x*log2(e) */ emit_byte(0xd9); emit_byte(0xfc); /* frndint int(x*log2(e)) */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap */ emit_byte(0xd8); emit_byte(0xe1); /* fsub x*log2(e) - int(x*log2(e)) */ emit_byte(0xd9); emit_byte(0xf0); /* f2xm1 (2^frac(x))-1 */ x86_fadd_m((uintptr) &one); emit_byte(0xd9); emit_byte(0xfd); /* fscale (2^frac(x))*2^int(x*log2(e)) */ emit_byte(0xdd); emit_byte(0xd9); /* fstp copy e^x & pop */ if (tr>=0) { emit_byte(0xdb); emit_byte(0x2c); emit_byte(0x24); /* fld load temp-reg from [esp] */ emit_byte(0xd9); emit_byte(0xca); /* fxch swap temp-reg with e^-x in tr */ emit_byte(0xde); emit_byte(0xe9); /* fsubp (e^x)-(e^-x) */ REX64(); emit_byte(0x83); emit_byte(0xc4); emit_byte(0x0c); /* delayed add +12 to esp */ } else { emit_byte(0xde); emit_byte(0xe1); /* fsubrp (e^x)-(e^-x) */ } emit_byte(0xd9); emit_byte(0xe8); /* fld 1.0 */ emit_byte(0xd9); emit_byte(0xe0); /* fchs -1.0 */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap */ emit_byte(0xd9); emit_byte(0xfd); /* fscale ((e^x)-(e^-x))/2 */ emit_byte(0xdd); emit_byte(0xd9); /* fstp copy & pop */ if (s!=d) tos_make(d); /* store y=sinh(x) */ } LENDFUNC(NONE,NONE,2,raw_fsinh_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_fcosh_rr,(FW d, FR s)) { int ds,tr; tr=live.onstack[live.tos+3]; if (s==d) make_tos(s); else { ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ } emit_byte(0xd9); emit_byte(0xea); /* fldl2e log2(e) */ emit_byte(0xd8); emit_byte(0xc9); /* fmul x*log2(e) */ emit_byte(0xdd); emit_byte(0xd1); /* fst copy x*log2(e) */ if (tr>=0) { emit_byte(0xd9); emit_byte(0xca); /* fxch swap with temp-reg */ REX64(); emit_byte(0x83); emit_byte(0xc4); emit_byte(0xf4); /* add -12 to esp */ emit_byte(0xdb); emit_byte(0x3c); emit_byte(0x24); /* fstp store temp-reg to [esp] & pop */ } emit_byte(0xd9); emit_byte(0xe0); /* fchs -x*log2(e) */ emit_byte(0xd9); emit_byte(0xc0); /* fld -x*log2(e) again */ emit_byte(0xd9); emit_byte(0xfc); /* frndint int(-x*log2(e)) */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap */ emit_byte(0xd8); emit_byte(0xe1); /* fsub -x*log2(e) - int(-x*log2(e)) */ emit_byte(0xd9); emit_byte(0xf0); /* f2xm1 (2^frac(x))-1 */ x86_fadd_m((uintptr) &one); emit_byte(0xd9); emit_byte(0xfd); /* fscale (2^frac(x))*2^int(x*log2(e)) */ emit_byte(0xd9); emit_byte(0xca); /* fxch swap e^-x with x*log2(e) in tr */ emit_byte(0xdd); emit_byte(0xd1); /* fst copy x*log2(e) */ emit_byte(0xd9); emit_byte(0xfc); /* frndint int(x*log2(e)) */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap */ emit_byte(0xd8); emit_byte(0xe1); /* fsub x*log2(e) - int(x*log2(e)) */ emit_byte(0xd9); emit_byte(0xf0); /* f2xm1 (2^frac(x))-1 */ x86_fadd_m((uintptr) &one); emit_byte(0xd9); emit_byte(0xfd); /* fscale (2^frac(x))*2^int(x*log2(e)) */ emit_byte(0xdd); emit_byte(0xd9); /* fstp copy e^x & pop */ if (tr>=0) { emit_byte(0xdb); emit_byte(0x2c); emit_byte(0x24); /* fld load temp-reg from [esp] */ emit_byte(0xd9); emit_byte(0xca); /* fxch swap temp-reg with e^-x in tr */ REX64(); emit_byte(0x83); emit_byte(0xc4); emit_byte(0x0c); /* delayed add +12 to esp */ } emit_byte(0xde); emit_byte(0xc1); /* faddp (e^x)+(e^-x) */ emit_byte(0xd9); emit_byte(0xe8); /* fld 1.0 */ emit_byte(0xd9); emit_byte(0xe0); /* fchs -1.0 */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap */ emit_byte(0xd9); emit_byte(0xfd); /* fscale ((e^x)+(e^-x))/2 */ emit_byte(0xdd); emit_byte(0xd9); /* fstp copy & pop */ if (s!=d) tos_make(d); /* store y=cosh(x) */ } LENDFUNC(NONE,NONE,2,raw_fcosh_rr,(FW d, FR s)) LOWFUNC(NONE,NONE,2,raw_ftanh_rr,(FW d, FR s)) { int ds,tr; tr=live.onstack[live.tos+3]; if (s==d) make_tos(s); else { ds=stackpos(s); emit_byte(0xd9); emit_byte(0xc0+ds); /* fld x */ } emit_byte(0xd9); emit_byte(0xea); /* fldl2e log2(e) */ emit_byte(0xd8); emit_byte(0xc9); /* fmul x*log2(e) */ emit_byte(0xdd); emit_byte(0xd1); /* fst copy x*log2(e) */ if (tr>=0) { emit_byte(0xd9); emit_byte(0xca); /* fxch swap with temp-reg */ REX64(); emit_byte(0x83); emit_byte(0xc4); emit_byte(0xf4); /* add -12 to esp */ emit_byte(0xdb); emit_byte(0x3c); emit_byte(0x24); /* fstp store temp-reg to [esp] & pop */ } emit_byte(0xd9); emit_byte(0xe0); /* fchs -x*log2(e) */ emit_byte(0xd9); emit_byte(0xc0); /* fld -x*log2(e) again */ emit_byte(0xd9); emit_byte(0xfc); /* frndint int(-x*log2(e)) */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap */ emit_byte(0xd8); emit_byte(0xe1); /* fsub -x*log2(e) - int(-x*log2(e)) */ emit_byte(0xd9); emit_byte(0xf0); /* f2xm1 (2^frac(x))-1 */ x86_fadd_m((uintptr) &one); emit_byte(0xd9); emit_byte(0xfd); /* fscale (2^frac(x))*2^int(x*log2(e)) */ emit_byte(0xd9); emit_byte(0xca); /* fxch swap e^-x with x*log2(e) */ emit_byte(0xdd); emit_byte(0xd1); /* fst copy x*log2(e) */ emit_byte(0xd9); emit_byte(0xfc); /* frndint int(x*log2(e)) */ emit_byte(0xd9); emit_byte(0xc9); /* fxch swap */ emit_byte(0xd8); emit_byte(0xe1); /* fsub x*log2(e) - int(x*log2(e)) */ emit_byte(0xd9); emit_byte(0xf0); /* f2xm1 (2^frac(x))-1 */ x86_fadd_m((uintptr) &one); emit_byte(0xd9); emit_byte(0xfd); /* fscale (2^frac(x))*2^int(x*log2(e)) */ emit_byte(0xdd); emit_byte(0xd1); /* fst copy e^x */ emit_byte(0xd8); emit_byte(0xc2); /* fadd (e^x)+(e^-x) */ emit_byte(0xd9); emit_byte(0xca); /* fxch swap with e^-x */ emit_byte(0xde); emit_byte(0xe9); /* fsubp (e^x)-(e^-x) */ if (tr>=0) { emit_byte(0xdb); emit_byte(0x2c); emit_byte(0x24); /* fld load temp-reg from [esp] */ emit_byte(0xd9); emit_byte(0xca); /* fxch swap temp-reg with e^-x in tr */ emit_byte(0xde); emit_byte(0xf9); /* fdivp ((e^x)-(e^-x))/((e^x)+(e^-x)) */ REX64(); emit_byte(0x83); emit_byte(0xc4); emit_byte(0x0c); /* delayed add +12 to esp */ } else { emit_byte(0xde); emit_byte(0xf1); /* fdivrp ((e^x)-(e^-x))/((e^x)+(e^-x)) */ } if (s!=d) tos_make(d); /* store y=tanh(x) */ } LENDFUNC(NONE,NONE,2,raw_ftanh_rr,(FW d, FR s)) /* %eax register is clobbered if target processor doesn't support fucomi */ #define FFLAG_NREG_CLOBBER_CONDITION !have_cmov #define FFLAG_NREG EAX_INDEX static inline void raw_fflags_into_flags(int r) { int p; usereg(r); p=stackpos(r); emit_byte(0xd9); emit_byte(0xee); /* Push 0 */ emit_byte(0xd9); emit_byte(0xc9+p); /* swap top two around */ if (have_cmov) { // gb-- fucomi is for P6 cores only, not K6-2 then... emit_byte(0xdb); emit_byte(0xe9+p); /* fucomi them */ } else { emit_byte(0xdd); emit_byte(0xe1+p); /* fucom them */ emit_byte(0x9b); emit_byte(0xdf); emit_byte(0xe0); /* fstsw ax */ raw_sahf(0); /* sahf */ } emit_byte(0xdd); emit_byte(0xd9+p); /* store value back, and get rid of 0 */ } aranym-1.1.0/src/uae_cpu/compiler/codegen_arm.h0000664000175000017500000024173013454637622017647 0ustar joyjoy/* * compiler/codegen_arm.h - IA-32 and AMD64 code generator * * Copyright (c) 2013 Jens Heitmann of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * JIT compiler m68k -> ARM * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * This file is derived from CCG, copyright 1999-2003 Ian Piumarta * Adaptation for Basilisk II and improvements, copyright 2000-2004 Gwenole Beauchesne * Portions related to CPU detection come from linux/arch/i386/kernel/setup.c * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef ARM_RTASM_H #define ARM_RTASM_H /* NOTES * */ /* --- Configuration ------------------------------------------------------- */ /* CPSR flags */ #define ARM_N_FLAG 0x80000000 #define ARM_Z_FLAG 0x40000000 #define ARM_C_FLAG 0x20000000 #define ARM_V_FLAG 0x10000000 #define ARM_Q_FLAG 0x08000000 #define ARM_CV_FLAGS (ARM_C_FLAG|ARM_V_FLAG) #define ARM_GE3 0x00080000 #define ARM_GE2 0x00040000 #define ARM_GE1 0x00020000 #define ARM_GE0 0x00010000 /* --- Macros -------------------------------------------------------------- */ /* ========================================================================= */ /* --- UTILITY ------------------------------------------------------------- */ /* ========================================================================= */ #define _W(c) emit_long(c) #define _LS2_ADDR(a) (((a) & 0x01f0000f) | (((a) & 0xf0) << 4)) /* ========================================================================= */ /* --- ENCODINGS ----------------------------------------------------------- */ /* ========================================================================= */ #define IMM32(c) (((c) & 0xffffff00) == 0 ? (c) : \ ((c) & 0x3fffffc0) == 0 ? (0x100 | (((c) >> 30) & 0x3) | ((((c) & 0x0000003f) << 2))) : \ ((c) & 0x0ffffff0) == 0 ? (0x200 | (((c) >> 28) & 0xf) | ((((c) & 0x0000000f) << 4))) : \ ((c) & 0x03fffffc) == 0 ? (0x300 | (((c) >> 26) & 0x3f) | ((((c) & 0x00000003) << 6)) ) : \ ((c) & 0x00ffffff) == 0 ? (0x400 | (((c) >> 24) & 0xff)) : \ ((c) & 0xc03fffff) == 0 ? (0x500 | ((c) >> 22)) : \ ((c) & 0xf00fffff) == 0 ? (0x600 | ((c) >> 20)) : \ ((c) & 0xfc03ffff) == 0 ? (0x700 | ((c) >> 18)) : \ ((c) & 0xff00ffff) == 0 ? (0x800 | ((c) >> 16)) : \ ((c) & 0xffc03fff) == 0 ? (0x900 | ((c) >> 14)) : \ ((c) & 0xfff00fff) == 0 ? (0xa00 | ((c) >> 12)) : \ ((c) & 0xfffc03ff) == 0 ? (0xb00 | ((c) >> 10)) : \ ((c) & 0xffff00ff) == 0 ? (0xc00 | ((c) >> 8)) : \ ((c) & 0xffffc03f) == 0 ? (0xd00 | ((c) >> 6)) : \ ((c) & 0xfffff00f) == 0 ? (0xe00 | ((c) >> 4)) : \ ((c) & 0xfffffc03) == 0 ? (0xf00 | ((c) >> 2)) : \ 0\ ) #define SHIFT_IMM(c) (0x02000000 | (IMM32((c)))) #define UNSHIFTED_IMM8(c) (0x02000000 | (c)) #define SHIFT_IMM8_ROR(c,r) (0x02000000 | (c) | ((r >> 1) << 8)) #define SHIFT_REG(Rm) (Rm) #define SHIFT_LSL_i(Rm,s) ((Rm) | ((s) << 7)) #define SHIFT_LSL_r(Rm,Rs) ((Rm) | ((Rs) << 8) | 0x10) #define SHIFT_LSR_i(Rm,s) ((Rm) | ((s) << 7) | 0x20) #define SHIFT_LSR_r(Rm,Rs) ((Rm) | ((Rs) << 8) | 0x30) #define SHIFT_ASR_i(Rm,s) ((Rm) | ((s) << 7) | 0x40) #define SHIFT_ASR_r(Rm,Rs) ((Rm) | ((Rs) << 8) | 0x50) #define SHIFT_ROR_i(Rm,s) ((Rm) | ((s) << 7) | 0x60) #define SHIFT_ROR_r(Rm,Rs) ((Rm) | ((Rs) << 8) | 0x70) #define SHIFT_RRX(Rm) ((Rm) | 0x60) #define SHIFT_PK(Rm,s) ((Rm) | ((s) << 7)) /* Load/Store addressings */ #define ADR_ADD(v) ((1 << 23) | (v)) #define ADR_SUB(v) (v) #define ADR_IMM(v) ((v) | (1 << 24)) #define ADR_IMMPOST(v) (v) #define ADR_REG(Rm) ((1 << 25) | (1 << 24) | (Rm)) #define ADR_REGPOST(Rm) ((1 << 25) | (Rm)) #define ADD_IMM(i) ADR_ADD(ADR_IMM(i)) #define SUB_IMM(i) ADR_SUB(ADR_IMM(i)) #define ADD_REG(Rm) ADR_ADD(ADR_REG(Rm)) #define SUB_REG(Rm) ADR_SUB(ADR_REG(Rm)) #define ADD_LSL(Rm,i) ADR_ADD(ADR_REG(Rm) | ((i) << 7)) #define SUB_LSL(Rm,i) ADR_SUB(ADR_REG(Rm) | ((i) << 7)) #define ADD_LSR(Rm,i) ADR_ADD(ADR_REG(Rm) | (((i) & 0x1f) << 7) | (1 << 5)) #define SUB_LSR(Rm,i) ADR_SUB(ADR_REG(Rm) | (((i) & 0x1f) << 7) | (1 << 5)) #define ADD_ASR(Rm,i) ADR_ADD(ADR_REG(Rm) | (((i) & 0x1f) << 7) | (2 << 5)) #define SUB_ASR(Rm,i) ADR_SUB(ADR_REG(Rm) | (((i) & 0x1f) << 7) | (2 << 5)) #define ADD_ROR(Rm,i) ADR_ADD(ADR_REG(Rm) | (((i) & 0x1f) << 7) | (3 << 5)) #define SUB_ROR(Rm,i) ADR_SUB(ADR_REG(Rm) | (((i) & 0x1f) << 7) | (3 << 5)) #define ADD_RRX(Rm) ADR_ADD(ADR_REG(Rm) | (3 << 5)) #define SUB_RRX(Rm) ADR_SUB(ADR_REG(Rm) | (3 << 5)) #define ADD2_IMM(i) ADR_ADD(i | (1 << 22)) #define SUB2_IMM(i) ADR_SUB(i | (1 << 22)) #define ADD2_REG(Rm) ADR_ADD(Rm) #define SUB2_REG(Rm) ADR_SUB(Rm) /* MOV, MVN */ #define _OP1(cc,op,s,Rd,shift) _W(((cc) << 28) | ((op) << 21) | ((s) << 20) | ((Rd) << 12) | (shift)) /* CMP, CMN, TST, TEQ */ #define _OP2(cc,op,Rn,shift) _W(((cc) << 28) | ((op) << 21) | (1 << 20) | ((Rn) << 16) | (shift)) /* ADD, SUB, RSB, ADC, SBC, RSC, AND, BIC, EOR, ORR */ #define _OP3(cc,op,s,Rd,Rn,shift) _W(((cc) << 28) | ((op) << 21) | ((s) << 20) | ((Rn) << 16) | ((Rd) << 12) | (shift)) /* LDR, STR */ #define _LS1(cc,l,b,Rd,Rn,a) _W(((cc) << 28) | (0x01 << 26) | ((l) << 20) | ((b) << 22) | ((Rn) << 16) | ((Rd) << 12) | (a)) #define _LS2(cc,p,l,s,h,Rd,Rn,a) _W(((cc) << 28) | ((p) << 24) | ((l) << 20) | ((Rn) << 16) | ((Rd) << 12) | ((s) << 6) | ((h) << 5) | 0x90 | _LS2_ADDR((a))) /* ========================================================================= */ /* --- OPCODES ------------------------------------------------------------- */ /* ========================================================================= */ /* Branch instructions */ #ifndef __ANDROID__ enum { _B, _BL, _BLX, _BX, _BXJ }; #endif /* Data processing instructions */ enum { _AND = 0, _EOR, _SUB, _RSB, _ADD, _ADC, _SBC, _RSC, _TST, _TEQ, _CMP, _CMN, _ORR, _MOV, _BIC, _MVN }; /* Single instruction Multiple Data (SIMD) instructions */ /* Multiply instructions */ /* Parallel instructions */ /* Extend instructions */ /* Miscellaneous arithmetic instrations */ /* Status register transfer instructions */ /* Load and Store instructions */ /* Coprocessor instructions */ /* Exception generation instructions */ /* ========================================================================= */ /* --- ASSEMBLER ----------------------------------------------------------- */ /* ========================================================================= */ #define NOP() _W(0xe1a00000) #define SETEND_BE() _W(0xf1010200) #define SETEND_LE() _W(0xf1010000) /* Data processing instructions */ /* Opcodes Type 1 */ /* MOVcc rd,#i */ #define CC_MOV_ri8(cc,Rd,i) _OP1(cc,_MOV,0,Rd,UNSHIFTED_IMM8(i)) /* MOVcc Rd,#i ROR #s */ #define CC_MOV_ri8RORi(cc,Rd,i,s) _OP1(cc,_MOV,0,Rd,SHIFT_IMM8_ROR(i,s)) #define CC_MOV_ri(cc,Rd,i) _OP1(cc,_MOV,0,Rd,SHIFT_IMM(i)) #define CC_MOV_rr(cc,Rd,Rm) _OP1(cc,_MOV,0,Rd,SHIFT_REG(Rm)) #define CC_MOV_rrLSLi(cc,Rd,Rm,i) _OP1(cc,_MOV,0,Rd,SHIFT_LSL_i(Rm,i)) #define CC_MOV_rrLSLr(cc,Rd,Rm,Rs) _OP1(cc,_MOV,0,Rd,SHIFT_LSL_r(Rm,Rs)) #define CC_MOV_rrLSRi(cc,Rd,Rm,i) _OP1(cc,_MOV,0,Rd,SHIFT_LSR_i(Rm,i)) #define CC_MOV_rrLSRr(cc,Rd,Rm,Rs) _OP1(cc,_MOV,0,Rd,SHIFT_LSR_r(Rm,Rs)) #define CC_MOV_rrASRi(cc,Rd,Rm,i) _OP1(cc,_MOV,0,Rd,SHIFT_ASR_i(Rm,i)) #define CC_MOV_rrASRr(cc,Rd,Rm,Rs) _OP1(cc,_MOV,0,Rd,SHIFT_ASR_r(Rm,Rs)) #define CC_MOV_rrRORi(cc,Rd,Rm,i) _OP1(cc,_MOV,0,Rd,SHIFT_ROR_i(Rm,i)) #define CC_MOV_rrRORr(cc,Rd,Rm,Rs) _OP1(cc,_MOV,0,Rd,SHIFT_ROR_r(Rm,Rs)) #define CC_MOV_rrRRX(cc,Rd,Rm) _OP1(cc,_MOV,0,Rd,SHIFT_RRX(Rm)) /* MOV rd,#i */ #define MOV_ri8(Rd,i) CC_MOV_ri8(NATIVE_CC_AL,Rd,i) /* MOV Rd,#i ROR #s */ #define MOV_ri8RORi(Rd,i,s) CC_MOV_ri8RORi(NATIVE_CC_AL,Rd,i,s) #define MOV_ri(Rd,i) CC_MOV_ri(NATIVE_CC_AL,Rd,i) #define MOV_rr(Rd,Rm) CC_MOV_rr(NATIVE_CC_AL,Rd,Rm) #define MOV_rrLSLi(Rd,Rm,i) CC_MOV_rrLSLi(NATIVE_CC_AL,Rd,Rm,i) #define MOV_rrLSLr(Rd,Rm,Rs) CC_MOV_rrLSLr(NATIVE_CC_AL,Rd,Rm,Rs) #define MOV_rrLSRi(Rd,Rm,i) CC_MOV_rrLSRi(NATIVE_CC_AL,Rd,Rm,i) #define MOV_rrLSRr(Rd,Rm,Rs) CC_MOV_rrLSRr(NATIVE_CC_AL,Rd,Rm,Rs) #define MOV_rrASRi(Rd,Rm,i) CC_MOV_rrASRi(NATIVE_CC_AL,Rd,Rm,i) #define MOV_rrASRr(Rd,Rm,Rs) CC_MOV_rrASRr(NATIVE_CC_AL,Rd,Rm,Rs) #define MOV_rrRORi(Rd,Rm,i) CC_MOV_rrRORi(NATIVE_CC_AL,Rd,Rm,i) #define MOV_rrRORr(Rd,Rm,Rs) CC_MOV_rrRORr(NATIVE_CC_AL,Rd,Rm,Rs) #define MOV_rrRRX(Rd,Rm) CC_MOV_rrRRX(NATIVE_CC_AL,Rd,Rm) #define CC_MOVS_ri(cc,Rd,i) _OP1(cc,_MOV,1,Rd,SHIFT_IMM(i)) #define CC_MOVS_rr(cc,Rd,Rm) _OP1(cc,_MOV,1,Rd,SHIFT_REG(Rm)) #define CC_MOVS_rrLSLi(cc,Rd,Rm,i) _OP1(cc,_MOV,1,Rd,SHIFT_LSL_i(Rm,i)) #define CC_MOVS_rrLSLr(cc,Rd,Rm,Rs) _OP1(cc,_MOV,1,Rd,SHIFT_LSL_r(Rm,Rs)) #define CC_MOVS_rrLSRi(cc,Rd,Rm,i) _OP1(cc,_MOV,1,Rd,SHIFT_LSR_i(Rm,i)) #define CC_MOVS_rrLSRr(cc,Rd,Rm,Rs) _OP1(cc,_MOV,1,Rd,SHIFT_LSR_r(Rm,Rs)) #define CC_MOVS_rrASRi(cc,Rd,Rm,i) _OP1(cc,_MOV,1,Rd,SHIFT_ASR_i(Rm,i)) #define CC_MOVS_rrASRr(cc,Rd,Rm,Rs) _OP1(cc,_MOV,1,Rd,SHIFT_ASR_r(Rm,Rs)) #define CC_MOVS_rrRORi(cc,Rd,Rm,i) _OP1(cc,_MOV,1,Rd,SHIFT_ROR_i(Rm,i)) #define CC_MOVS_rrRORr(cc,Rd,Rm,Rs) _OP1(cc,_MOV,1,Rd,SHIFT_ROR_r(Rm,Rs)) #define CC_MOVS_rrRRX(cc,Rd,Rm) _OP1(cc,_MOV,1,Rd,SHIFT_RRX(Rm)) #define MOVS_ri(Rd,i) CC_MOVS_ri(NATIVE_CC_AL,Rd,i) #define MOVS_rr(Rd,Rm) CC_MOVS_rr(NATIVE_CC_AL,Rd,Rm) #define MOVS_rrLSLi(Rd,Rm,i) CC_MOVS_rrLSLi(NATIVE_CC_AL,Rd,Rm,i) #define MOVS_rrLSLr(Rd,Rm,Rs) CC_MOVS_rrLSLr(NATIVE_CC_AL,Rd,Rm,Rs) #define MOVS_rrLSRi(Rd,Rm,i) CC_MOVS_rrLSRi(NATIVE_CC_AL,Rd,Rm,i) #define MOVS_rrLSRr(Rd,Rm,Rs) CC_MOVS_rrLSRr(NATIVE_CC_AL,Rd,Rm,Rs) #define MOVS_rrASRi(Rd,Rm,i) CC_MOVS_rrASRi(NATIVE_CC_AL,Rd,Rm,i) #define MOVS_rrASRr(Rd,Rm,Rs) CC_MOVS_rrASRr(NATIVE_CC_AL,Rd,Rm,Rs) #define MOVS_rrRORi(Rd,Rm,i) CC_MOVS_rrRORi(NATIVE_CC_AL,Rd,Rm,i) #define MOVS_rrRORr(Rd,Rm,Rs) CC_MOVS_rrRORr(NATIVE_CC_AL,Rd,Rm,Rs) #define MOVS_rrRRX(Rd,Rm) CC_MOVS_rrRRX(NATIVE_CC_AL,Rd,Rm) /* MVNcc rd,#i */ #define CC_MVN_ri8(cc,Rd,i) _OP1(cc,_MVN,0,Rd,UNSHIFTED_IMM8(i)) /* MVNcc Rd,#i ROR #s */ #define CC_MVN_ri8RORi(cc,Rd,i,s) _OP1(cc,_MVN,0,Rd,SHIFT_IMM8_ROR(i,s)) #define CC_MVN_ri(cc,Rd,i) _OP1(cc,_MVN,0,Rd,SHIFT_IMM(i)) #define CC_MVN_rr(cc,Rd,Rm) _OP1(cc,_MVN,0,Rd,SHIFT_REG(Rm)) #define CC_MVN_rrLSLi(cc,Rd,Rm,i) _OP1(cc,_MVN,0,Rd,SHIFT_LSL_i(Rm,i)) #define CC_MVN_rrLSLr(cc,Rd,Rm,Rs) _OP1(cc,_MVN,0,Rd,SHIFT_LSL_r(Rm,Rs)) #define CC_MVN_rrLSRi(cc,Rd,Rm,i) _OP1(cc,_MVN,0,Rd,SHIFT_LSR_i(Rm,i)) #define CC_MVN_rrLSRr(cc,Rd,Rm,Rs) _OP1(cc,_MVN,0,Rd,SHIFT_LSR_r(Rm,Rs)) #define CC_MVN_rrASRi(cc,Rd,Rm,i) _OP1(cc,_MVN,0,Rd,SHIFT_ASR_i(Rm,i)) #define CC_MVN_rrASRr(cc,Rd,Rm,Rs) _OP1(cc,_MVN,0,Rd,SHIFT_ASR_r(Rm,Rs)) #define CC_MVN_rrRORi(cc,Rd,Rm,i) _OP1(cc,_MVN,0,Rd,SHIFT_ROR_i(Rm,i)) #define CC_MVN_rrRORr(cc,Rd,Rm,Rs) _OP1(cc,_MVN,0,Rd,SHIFT_ROR_r(Rm,Rs)) #define CC_MVN_rrRRX(cc,Rd,Rm) _OP1(cc,_MVN,0,Rd,SHIFT_RRX(Rm)) /* MVN rd,#i */ #define MVN_ri8(Rd,i) CC_MVN_ri8(NATIVE_CC_AL,Rd,i) /* MVN Rd,#i ROR #s */ #define MVN_ri8RORi(Rd,i,s) CC_MVN_ri8RORi(NATIVE_CC_AL,Rd,i,s) #define MVN_ri(Rd,i) CC_MVN_ri(NATIVE_CC_AL,Rd,i) #define MVN_rr(Rd,Rm) CC_MVN_rr(NATIVE_CC_AL,Rd,Rm) #define MVN_rrLSLi(Rd,Rm,i) CC_MVN_rrLSLi(NATIVE_CC_AL,Rd,Rm,i) #define MVN_rrLSLr(Rd,Rm,Rs) CC_MVN_rrLSLr(NATIVE_CC_AL,Rd,Rm,Rs) #define MVN_rrLSRi(Rd,Rm,i) CC_MVN_rrLSRi(NATIVE_CC_AL,Rd,Rm,i) #define MVN_rrLSRr(Rd,Rm,Rs) CC_MVN_rrLSRr(NATIVE_CC_AL,Rd,Rm,Rs) #define MVN_rrASRi(Rd,Rm,i) CC_MVN_rrASRi(NATIVE_CC_AL,Rd,Rm,i) #define MVN_rrASRr(Rd,Rm,Rs) CC_MVN_rrASRr(NATIVE_CC_AL,Rd,Rm,Rs) #define MVN_rrRORi(Rd,Rm,i) CC_MVN_rrRORi(NATIVE_CC_AL,Rd,Rm,i) #define MVN_rrRORr(Rd,Rm,Rs) CC_MVN_rrRORr(NATIVE_CC_AL,Rd,Rm,Rs) #define MVN_rrRRX(Rd,Rm) CC_MVN_rrRRX(NATIVE_CC_AL,Rd,Rm) #define CC_MVNS_ri(cc,Rd,i) _OP1(cc,_MVN,1,Rd,SHIFT_IMM(i)) #define CC_MVNS_rr(cc,Rd,Rm) _OP1(cc,_MVN,1,Rd,SHIFT_REG(Rm)) #define CC_MVNS_rrLSLi(cc,Rd,Rm,i) _OP1(cc,_MVN,1,Rd,SHIFT_LSL_i(Rm,i)) #define CC_MVNS_rrLSLr(cc,Rd,Rm,Rs) _OP1(cc,_MVN,1,Rd,SHIFT_LSL_r(Rm,Rs)) #define CC_MVNS_rrLSRi(cc,Rd,Rm,i) _OP1(cc,_MVN,1,Rd,SHIFT_LSR_i(Rm,i)) #define CC_MVNS_rrLSRr(cc,Rd,Rm,Rs) _OP1(cc,_MVN,1,Rd,SHIFT_LSR_r(Rm,Rs)) #define CC_MVNS_rrASRi(cc,Rd,Rm,i) _OP1(cc,_MVN,1,Rd,SHIFT_ASR_i(Rm,i)) #define CC_MVNS_rrASRr(cc,Rd,Rm,Rs) _OP1(cc,_MVN,1,Rd,SHIFT_ASR_r(Rm,Rs)) #define CC_MVNS_rrRORi(cc,Rd,Rm,i) _OP1(cc,_MVN,1,Rd,SHIFT_ROR_i(Rm,i)) #define CC_MVNS_rrRORr(cc,Rd,Rm,Rs) _OP1(cc,_MVN,1,Rd,SHIFT_ROR_r(Rm,Rs)) #define CC_MVNS_rrRRX(cc,Rd,Rm) _OP1(cc,_MVN,1,Rd,SHIFT_RRX(Rm)) #define MVNS_ri(Rd,i) CC_MVNS_ri(NATIVE_CC_AL,Rd,i) #define MVNS_rr(Rd,Rm) CC_MVNS_rr(NATIVE_CC_AL,Rd,Rm) #define MVNS_rrLSLi(Rd,Rm,i) CC_MVNS_rrLSLi(NATIVE_CC_AL,Rd,Rm,i) #define MVNS_rrLSLr(Rd,Rm,Rs) CC_MVNS_rrLSLr(NATIVE_CC_AL,Rd,Rm,Rs) #define MVNS_rrLSRi(Rd,Rm,i) CC_MVNS_rrLSRi(NATIVE_CC_AL,Rd,Rm,i) #define MVNS_rrLSRr(Rd,Rm,Rs) CC_MVNS_rrLSRr(NATIVE_CC_AL,Rd,Rm,Rs) #define MVNS_rrASRi(Rd,Rm,i) CC_MVNS_rrASRi(NATIVE_CC_AL,Rd,Rm,i) #define MVNS_rrASRr(Rd,Rm,Rs) CC_MVNS_rrASRr(NATIVE_CC_AL,Rd,Rm,Rs) #define MVNS_rrRORi(Rd,Rm,i) CC_MVNS_rrRORi(NATIVE_CC_AL,Rd,Rm,i) #define MVNS_rrRORr(Rd,Rm,Rs) CC_MVNS_rrRORr(NATIVE_CC_AL,Rd,Rm,Rs) #define MVNS_rrRRX(Rd,Rm) CC_MVNS_rrRRX(NATIVE_CC_AL,Rd,Rm) /* Opcodes Type 2 */ #define CC_CMP_ri(cc,Rn,i) _OP2(cc,_CMP,Rn,SHIFT_IMM(i)) #define CC_CMP_rr(cc,Rn,Rm) _OP2(cc,_CMP,Rn,SHIFT_REG(Rm)) #define CC_CMP_rrLSLi(cc,Rn,Rm,i) _OP2(cc,_CMP,Rn,SHIFT_LSL_i(Rm,i)) #define CC_CMP_rrLSLr(cc,Rn,Rm,Rs) _OP2(cc,_CMP,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_CMP_rrLSRi(cc,Rn,Rm,i) _OP2(cc,_CMP,Rn,SHIFT_LSR_i(Rm,i)) #define CC_CMP_rrLSRr(cc,Rn,Rm,Rs) _OP2(cc,_CMP,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_CMP_rrASRi(cc,Rn,Rm,i) _OP2(cc,_CMP,Rn,SHIFT_ASR_i(Rm,i)) #define CC_CMP_rrASRr(cc,Rn,Rm,Rs) _OP2(cc,_CMP,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_CMP_rrRORi(cc,Rn,Rm,i) _OP2(cc,_CMP,Rn,SHIFT_ROR_i(Rm,i)) #define CC_CMP_rrRORr(cc,Rn,Rm,Rs) _OP2(cc,_CMP,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_CMP_rrRRX(cc,Rn,Rm) _OP2(cc,_CMP,Rn,SHIFT_RRX(Rm)) #define CMP_ri(Rn,i) CC_CMP_ri(NATIVE_CC_AL,Rn,i) #define CMP_rr(Rn,Rm) CC_CMP_rr(NATIVE_CC_AL,Rn,Rm) #define CMP_rrLSLi(Rn,Rm,i) CC_CMP_rrLSLi(NATIVE_CC_AL,Rn,Rm,i) #define CMP_rrLSLr(Rn,Rm,Rs) CC_CMP_rrLSLr(NATIVE_CC_AL,Rn,Rm,Rs) #define CMP_rrLSRi(Rn,Rm,i) CC_CMP_rrLSRi(NATIVE_CC_AL,Rn,Rm,i) #define CMP_rrLSRr(Rn,Rm,Rs) CC_CMP_rrLSRr(NATIVE_CC_AL,Rn,Rm,Rs) #define CMP_rrASRi(Rn,Rm,i) CC_CMP_rrASRi(NATIVE_CC_AL,Rn,Rm,i) #define CMP_rrASRr(Rn,Rm,Rs) CC_CMP_rrASRr(NATIVE_CC_AL,Rn,Rm,Rs) #define CMP_rrRORi(Rn,Rm,i) CC_CMP_rrRORi(NATIVE_CC_AL,Rn,Rm,i) #define CMP_rrRORr(Rn,Rm,Rs) CC_CMP_rrRORr(NATIVE_CC_AL,Rn,Rm,Rs) #define CMP_rrRRX(Rn,Rm) CC_CMP_rrRRX(NATIVE_CC_AL,Rn,Rm) #define CC_CMN_ri(cc,Rn,i) _OP2(cc,_CMN,Rn,SHIFT_IMM(i)) #define CC_CMN_rr(cc,Rn,r) _OP2(cc,_CMN,Rn,SHIFT_REG(r)) #define CC_CMN_rrLSLi(cc,Rn,Rm,i) _OP2(cc,_CMN,Rn,SHIFT_LSL_i(Rm,i)) #define CC_CMN_rrLSLr(cc,Rn,Rm,Rs) _OP2(cc,_CMN,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_CMN_rrLSRi(cc,Rn,Rm,i) _OP2(cc,_CMN,Rn,SHIFT_LSR_i(Rm,i)) #define CC_CMN_rrLSRr(cc,Rn,Rm,Rs) _OP2(cc,_CMN,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_CMN_rrASRi(cc,Rn,Rm,i) _OP2(cc,_CMN,Rn,SHIFT_ASR_i(Rm,i)) #define CC_CMN_rrASRr(cc,Rn,Rm,Rs) _OP2(cc,_CMN,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_CMN_rrRORi(cc,Rn,Rm,i) _OP2(cc,_CMN,Rn,SHIFT_ROR_i(Rm,i)) #define CC_CMN_rrRORr(cc,Rn,Rm,Rs) _OP2(cc,_CMN,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_CMN_rrRRX(cc,Rn,Rm) _OP2(cc,_CMN,Rn,SHIFT_RRX(Rm)) #define CMN_ri(Rn,i) CC_CMN_ri(NATIVE_CC_AL,Rn,i) #define CMN_rr(Rn,r) CC_CMN_rr(NATIVE_CC_AL,Rn,r) #define CMN_rrLSLi(Rn,Rm,i) CC_CMN_rrLSLi(NATIVE_CC_AL,Rn,Rm,i) #define CMN_rrLSLr(Rn,Rm,Rs) CC_CMN_rrLSLr(NATIVE_CC_AL,Rn,Rm,Rs) #define CMN_rrLSRi(Rn,Rm,i) CC_CMN_rrLSRi(NATIVE_CC_AL,Rn,Rm,i) #define CMN_rrLSRr(Rn,Rm,Rs) CC_CMN_rrLSRr(NATIVE_CC_AL,Rn,Rm,Rs) #define CMN_rrASRi(Rn,Rm,i) CC_CMN_rrASRi(NATIVE_CC_AL,Rn,Rm,i) #define CMN_rrASRr(Rn,Rm,Rs) CC_CMN_rrASRr(NATIVE_CC_AL,Rn,Rm,Rs) #define CMN_rrRORi(Rn,Rm,i) CC_CMN_rrRORi(NATIVE_CC_AL,Rn,Rm,i) #define CMN_rrRORr(Rn,Rm,Rs) CC_CMN_rrRORr(NATIVE_CC_AL,Rn,Rm,Rs) #define CMN_rrRRX(Rn,Rm) CC_CMN_rrRRX(NATIVE_CC_AL,Rn,Rm) #define CC_TST_ri(cc,Rn,i) _OP2(cc,_TST,Rn,SHIFT_IMM(i)) #define CC_TST_rr(cc,Rn,r) _OP2(cc,_TST,Rn,SHIFT_REG(r)) #define CC_TST_rrLSLi(cc,Rn,Rm,i) _OP2(cc,_TST,Rn,SHIFT_LSL_i(Rm,i)) #define CC_TST_rrLSLr(cc,Rn,Rm,Rs) _OP2(cc,_TST,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_TST_rrLSRi(cc,Rn,Rm,i) _OP2(cc,_TST,Rn,SHIFT_LSR_i(Rm,i)) #define CC_TST_rrLSRr(cc,Rn,Rm,Rs) _OP2(cc,_TST,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_TST_rrASRi(cc,Rn,Rm,i) _OP2(cc,_TST,Rn,SHIFT_ASR_i(Rm,i)) #define CC_TST_rrASRr(cc,Rn,Rm,Rs) _OP2(cc,_TST,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_TST_rrRORi(cc,Rn,Rm,i) _OP2(cc,_TST,Rn,SHIFT_ROR_i(Rm,i)) #define CC_TST_rrRORr(cc,Rn,Rm,Rs) _OP2(cc,_TST,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_TST_rrRRX(cc,Rn,Rm) _OP2(cc,_TST,Rn,SHIFT_RRX(Rm)) #define TST_ri(Rn,i) CC_TST_ri(NATIVE_CC_AL,Rn,i) #define TST_rr(Rn,r) CC_TST_rr(NATIVE_CC_AL,Rn,r) #define TST_rrLSLi(Rn,Rm,i) CC_TST_rrLSLi(NATIVE_CC_AL,Rn,Rm,i) #define TST_rrLSLr(Rn,Rm,Rs) CC_TST_rrLSLr(NATIVE_CC_AL,Rn,Rm,Rs) #define TST_rrLSRi(Rn,Rm,i) CC_TST_rrLSRi(NATIVE_CC_AL,Rn,Rm,i) #define TST_rrLSRr(Rn,Rm,Rs) CC_TST_rrLSRr(NATIVE_CC_AL,Rn,Rm,Rs) #define TST_rrASRi(Rn,Rm,i) CC_TST_rrASRi(NATIVE_CC_AL,Rn,Rm,i) #define TST_rrASRr(Rn,Rm,Rs) CC_TST_rrASRr(NATIVE_CC_AL,Rn,Rm,Rs) #define TST_rrRORi(Rn,Rm,i) CC_TST_rrRORi(NATIVE_CC_AL,Rn,Rm,i) #define TST_rrRORr(Rn,Rm,Rs) CC_TST_rrRORr(NATIVE_CC_AL,Rn,Rm,Rs) #define TST_rrRRX(Rn,Rm) CC_TST_rrRRX(NATIVE_CC_AL,Rn,Rm) #define CC_TEQ_ri(cc,Rn,i) _OP2(cc,_TEQ,Rn,SHIFT_IMM(i)) #define CC_TEQ_rr(cc,Rn,r) _OP2(cc,_TEQ,Rn,SHIFT_REG(r)) #define CC_TEQ_rrLSLi(cc,Rn,Rm,i) _OP2(cc,_TEQ,Rn,SHIFT_LSL_i(Rm,i)) #define CC_TEQ_rrLSLr(cc,Rn,Rm,Rs) _OP2(cc,_TEQ,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_TEQ_rrLSRi(cc,Rn,Rm,i) _OP2(cc,_TEQ,Rn,SHIFT_LSR_i(Rm,i)) #define CC_TEQ_rrLSRr(cc,Rn,Rm,Rs) _OP2(cc,_TEQ,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_TEQ_rrASRi(cc,Rn,Rm,i) _OP2(cc,_TEQ,Rn,SHIFT_ASR_i(Rm,i)) #define CC_TEQ_rrASRr(cc,Rn,Rm,Rs) _OP2(cc,_TEQ,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_TEQ_rrRORi(cc,Rn,Rm,i) _OP2(cc,_TEQ,Rn,SHIFT_ROR_i(Rm,i)) #define CC_TEQ_rrRORr(cc,Rn,Rm,Rs) _OP2(cc,_TEQ,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_TEQ_rrRRX(cc,Rn,Rm) _OP2(cc,_TEQ,Rn,SHIFT_RRX(Rm)) #define TEQ_ri(Rn,i) CC_TEQ_ri(NATIVE_CC_AL,Rn,i) #define TEQ_rr(Rn,r) CC_TEQ_rr(NATIVE_CC_AL,Rn,r) #define TEQ_rrLSLi(Rn,Rm,i) CC_TEQ_rrLSLi(NATIVE_CC_AL,Rn,Rm,i) #define TEQ_rrLSLr(Rn,Rm,Rs) CC_TEQ_rrLSLr(NATIVE_CC_AL,Rn,Rm,Rs) #define TEQ_rrLSRi(Rn,Rm,i) CC_TEQ_rrLSRi(NATIVE_CC_AL,Rn,Rm,i) #define TEQ_rrLSRr(Rn,Rm,Rs) CC_TEQ_rrLSRr(NATIVE_CC_AL,Rn,Rm,Rs) #define TEQ_rrASRi(Rn,Rm,i) CC_TEQ_rrASRi(NATIVE_CC_AL,Rn,Rm,i) #define TEQ_rrASRr(Rn,Rm,Rs) CC_TEQ_rrASRr(NATIVE_CC_AL,Rn,Rm,Rs) #define TEQ_rrRORi(Rn,Rm,i) CC_TEQ_rrRORi(NATIVE_CC_AL,Rn,Rm,i) #define TEQ_rrRORr(Rn,Rm,Rs) CC_TEQ_rrRORr(NATIVE_CC_AL,Rn,Rm,Rs) #define TEQ_rrRRX(Rn,Rm) CC_TEQ_rrRRX(NATIVE_CC_AL,Rn,Rm) /* Opcodes Type 3 */ #define CC_AND_rri(cc,Rd,Rn,i) _OP3(cc,_AND,0,Rd,Rn,SHIFT_IMM(i)) #define CC_AND_rrr(cc,Rd,Rn,Rm) _OP3(cc,_AND,0,Rd,Rn,SHIFT_REG(Rm)) #define CC_AND_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_AND,0,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_AND_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_AND,0,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_AND_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_AND,0,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_AND_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_AND,0,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_AND_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_AND,0,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_AND_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_AND,0,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_AND_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_AND,0,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_AND_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_AND,0,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_AND_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_AND,0,Rd,Rn,SHIFT_RRX(Rm)) #define AND_rri(Rd,Rn,i) CC_AND_rri(NATIVE_CC_AL,Rd,Rn,i) #define AND_rrr(Rd,Rn,Rm) CC_AND_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define AND_rrrLSLi(Rd,Rn,Rm,i) CC_AND_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define AND_rrrLSLr(Rd,Rn,Rm,Rs) CC_AND_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define AND_rrrLSRi(Rd,Rn,Rm,i) CC_AND_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define AND_rrrLSRr(Rd,Rn,Rm,Rs) CC_AND_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define AND_rrrASRi(Rd,Rn,Rm,i) CC_AND_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define AND_rrrASRr(Rd,Rn,Rm,Rs) CC_AND_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define AND_rrrRORi(Rd,Rn,Rm,i) CC_AND_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define AND_rrrRORr(Rd,Rn,Rm,Rs) CC_AND_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define AND_rrrRRX(Rd,Rn,Rm) CC_AND_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_ANDS_rri(cc,Rd,Rn,i) _OP3(cc,_AND,1,Rd,Rn,SHIFT_IMM(i)) #define CC_ANDS_rrr(cc,Rd,Rn,Rm) _OP3(cc,_AND,1,Rd,Rn,SHIFT_REG(Rm)) #define CC_ANDS_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_AND,1,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_ANDS_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_AND,1,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_ANDS_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_AND,1,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_ANDS_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_AND,1,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_ANDS_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_AND,1,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_ANDS_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_AND,1,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_ANDS_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_AND,1,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_ANDS_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_AND,1,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_ANDS_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_AND,1,Rd,Rn,SHIFT_RRX(Rm)) #define ANDS_rri(Rd,Rn,i) CC_ANDS_rri(NATIVE_CC_AL,Rd,Rn,i) #define ANDS_rrr(Rd,Rn,Rm) CC_ANDS_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define ANDS_rrrLSLi(Rd,Rn,Rm,i) CC_ANDS_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ANDS_rrrLSLr(Rd,Rn,Rm,Rs) CC_ANDS_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ANDS_rrrLSRi(Rd,Rn,Rm,i) CC_ANDS_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ANDS_rrrLSRr(Rd,Rn,Rm,Rs) CC_ANDS_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ANDS_rrrASRi(Rd,Rn,Rm,i) CC_ANDS_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ANDS_rrrASRr(Rd,Rn,Rm,Rs) CC_ANDS_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ANDS_rrrRORi(Rd,Rn,Rm,i) CC_ANDS_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ANDS_rrrRORr(Rd,Rn,Rm,Rs) CC_ANDS_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ANDS_rrrRRX(Rd,Rn,Rm) CC_ANDS_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_EOR_rri(cc,Rd,Rn,i) _OP3(cc,_EOR,0,Rd,Rn,SHIFT_IMM(i)) #define CC_EOR_rrr(cc,Rd,Rn,Rm) _OP3(cc,_EOR,0,Rd,Rn,SHIFT_REG(Rm)) #define CC_EOR_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_EOR,0,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_EOR_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_EOR,0,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_EOR_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_EOR,0,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_EOR_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_EOR,0,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_EOR_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_EOR,0,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_EOR_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_EOR,0,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_EOR_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_EOR,0,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_EOR_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_EOR,0,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_EOR_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_EOR,0,Rd,Rn,SHIFT_RRX(Rm)) #define EOR_rri(Rd,Rn,i) CC_EOR_rri(NATIVE_CC_AL,Rd,Rn,i) #define EOR_rrr(Rd,Rn,Rm) CC_EOR_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define EOR_rrrLSLi(Rd,Rn,Rm,i) CC_EOR_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define EOR_rrrLSLr(Rd,Rn,Rm,Rs) CC_EOR_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define EOR_rrrLSRi(Rd,Rn,Rm,i) CC_EOR_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define EOR_rrrLSRr(Rd,Rn,Rm,Rs) CC_EOR_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define EOR_rrrASRi(Rd,Rn,Rm,i) CC_EOR_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define EOR_rrrASRr(Rd,Rn,Rm,Rs) CC_EOR_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define EOR_rrrRORi(Rd,Rn,Rm,i) CC_EOR_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define EOR_rrrRORr(Rd,Rn,Rm,Rs) CC_EOR_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define EOR_rrrRRX(Rd,Rn,Rm) CC_EOR_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_EORS_rri(cc,Rd,Rn,i) _OP3(cc,_EOR,1,Rd,Rn,SHIFT_IMM(i)) #define CC_EORS_rrr(cc,Rd,Rn,Rm) _OP3(cc,_EOR,1,Rd,Rn,SHIFT_REG(Rm)) #define CC_EORS_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_EOR,1,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_EORS_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_EOR,1,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_EORS_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_EOR,1,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_EORS_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_EOR,1,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_EORS_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_EOR,1,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_EORS_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_EOR,1,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_EORS_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_EOR,1,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_EORS_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_EOR,1,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_EORS_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_EOR,1,Rd,Rn,SHIFT_RRX(Rm)) #define EORS_rri(Rd,Rn,i) CC_EORS_rri(NATIVE_CC_AL,Rd,Rn,i) #define EORS_rrr(Rd,Rn,Rm) CC_EORS_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define EORS_rrrLSLi(Rd,Rn,Rm,i) CC_EORS_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define EORS_rrrLSLr(Rd,Rn,Rm,Rs) CC_EORS_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define EORS_rrrLSRi(Rd,Rn,Rm,i) CC_EORS_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define EORS_rrrLSRr(Rd,Rn,Rm,Rs) CC_EORS_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define EORS_rrrASRi(Rd,Rn,Rm,i) CC_EORS_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define EORS_rrrASRr(Rd,Rn,Rm,Rs) CC_EORS_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define EORS_rrrRORi(Rd,Rn,Rm,i) CC_EORS_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define EORS_rrrRORr(Rd,Rn,Rm,Rs) CC_EORS_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define EORS_rrrRRX(Rd,Rn,Rm) CC_EORS_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_SUB_rri(cc,Rd,Rn,i) _OP3(cc,_SUB,0,Rd,Rn,SHIFT_IMM(i)) #define CC_SUB_rrr(cc,Rd,Rn,Rm) _OP3(cc,_SUB,0,Rd,Rn,SHIFT_REG(Rm)) #define CC_SUB_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_SUB,0,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_SUB_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SUB,0,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_SUB_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_SUB,0,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_SUB_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SUB,0,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_SUB_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_SUB,0,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_SUB_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SUB,0,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_SUB_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_SUB,0,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_SUB_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SUB,0,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_SUB_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_SUB,0,Rd,Rn,SHIFT_RRX(Rm)) #define SUB_rri(Rd,Rn,i) CC_SUB_rri(NATIVE_CC_AL,Rd,Rn,i) #define SUB_rrr(Rd,Rn,Rm) CC_SUB_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define SUB_rrrLSLi(Rd,Rn,Rm,i) CC_SUB_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SUB_rrrLSLr(Rd,Rn,Rm,Rs) CC_SUB_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SUB_rrrLSRi(Rd,Rn,Rm,i) CC_SUB_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SUB_rrrLSRr(Rd,Rn,Rm,Rs) CC_SUB_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SUB_rrrASRi(Rd,Rn,Rm,i) CC_SUB_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SUB_rrrASRr(Rd,Rn,Rm,Rs) CC_SUB_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SUB_rrrRORi(Rd,Rn,Rm,i) CC_SUB_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SUB_rrrRORr(Rd,Rn,Rm,Rs) CC_SUB_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SUB_rrrRRX(Rd,Rn,Rm) CC_SUB_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_SUBS_rri(cc,Rd,Rn,i) _OP3(cc,_SUB,1,Rd,Rn,SHIFT_IMM(i)) #define CC_SUBS_rrr(cc,Rd,Rn,Rm) _OP3(cc,_SUB,1,Rd,Rn,SHIFT_REG(Rm)) #define CC_SUBS_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_SUB,1,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_SUBS_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SUB,1,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_SUBS_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_SUB,1,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_SUBS_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SUB,1,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_SUBS_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_SUB,1,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_SUBS_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SUB,1,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_SUBS_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_SUB,1,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_SUBS_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SUB,1,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_SUBS_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_SUB,1,Rd,Rn,SHIFT_RRX(Rm)) #define SUBS_rri(Rd,Rn,i) CC_SUBS_rri(NATIVE_CC_AL,Rd,Rn,i) #define SUBS_rrr(Rd,Rn,Rm) CC_SUBS_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define SUBS_rrrLSLi(Rd,Rn,Rm,i) CC_SUBS_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SUBS_rrrLSLr(Rd,Rn,Rm,Rs) CC_SUBS_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SUBS_rrrLSRi(Rd,Rn,Rm,i) CC_SUBS_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SUBS_rrrLSRr(Rd,Rn,Rm,Rs) CC_SUBS_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SUBS_rrrASRi(Rd,Rn,Rm,i) CC_SUBS_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SUBS_rrrASRr(Rd,Rn,Rm,Rs) CC_SUBS_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SUBS_rrrRORi(Rd,Rn,Rm,i) CC_SUBS_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SUBS_rrrRORr(Rd,Rn,Rm,Rs) CC_SUBS_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SUBS_rrrRRX(Rd,Rn,Rm) CC_SUBS_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_RSB_rri(cc,Rd,Rn,i) _OP3(cc,_RSB,0,Rd,Rn,SHIFT_IMM(i)) #define CC_RSB_rrr(cc,Rd,Rn,Rm) _OP3(cc,_RSB,0,Rd,Rn,SHIFT_REG(Rm)) #define CC_RSB_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSB,0,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_RSB_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSB,0,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_RSB_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSB,0,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_RSB_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSB,0,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_RSB_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSB,0,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_RSB_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSB,0,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_RSB_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSB,0,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_RSB_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSB,0,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_RSB_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_RSB,0,Rd,Rn,SHIFT_RRX(Rm)) #define RSB_rri(Rd,Rn,i) CC_RSB_rri(NATIVE_CC_AL,Rd,Rn,i) #define RSB_rrr(Rd,Rn,Rm) CC_RSB_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define RSB_rrrLSLi(Rd,Rn,Rm,i) CC_RSB_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSB_rrrLSLr(Rd,Rn,Rm,Rs) CC_RSB_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSB_rrrLSRi(Rd,Rn,Rm,i) CC_RSB_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSB_rrrLSRr(Rd,Rn,Rm,Rs) CC_RSB_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSB_rrrASRi(Rd,Rn,Rm,i) CC_RSB_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSB_rrrASRr(Rd,Rn,Rm,Rs) CC_RSB_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSB_rrrRORi(Rd,Rn,Rm,i) CC_RSB_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSB_rrrRORr(Rd,Rn,Rm,Rs) CC_RSB_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSB_rrrRRX(Rd,Rn,Rm) CC_RSB_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_RSBS_rri(cc,Rd,Rn,i) _OP3(cc,_RSB,1,Rd,Rn,SHIFT_IMM(i)) #define CC_RSBS_rrr(cc,Rd,Rn,Rm) _OP3(cc,_RSB,1,Rd,Rn,SHIFT_REG(Rm)) #define CC_RSBS_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSB,1,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_RSBS_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSB,1,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_RSBS_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSB,1,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_RSBS_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSB,1,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_RSBS_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSB,1,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_RSBS_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSB,1,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_RSBS_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSB,1,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_RSBS_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSB,1,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_RSBS_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_RSB,1,Rd,Rn,SHIFT_RRX(Rm)) #define RSBS_rri(Rd,Rn,i) CC_RSBS_rri(NATIVE_CC_AL,Rd,Rn,i) #define RSBS_rrr(Rd,Rn,Rm) CC_RSBS_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define RSBS_rrrLSLi(Rd,Rn,Rm,i) CC_RSBS_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSBS_rrrLSLr(Rd,Rn,Rm,Rs) CC_RSBS_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSBS_rrrLSRi(Rd,Rn,Rm,i) CC_RSBS_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSBS_rrrLSRr(Rd,Rn,Rm,Rs) CC_RSBS_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSBS_rrrASRi(Rd,Rn,Rm,i) CC_RSBS_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSBS_rrrASRr(Rd,Rn,Rm,Rs) CC_RSBS_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSBS_rrrRORi(Rd,Rn,Rm,i) CC_RSBS_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSBS_rrrRORr(Rd,Rn,Rm,Rs) CC_RSBS_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSBS_rrrRRX(Rd,Rn,Rm) CC_RSBS_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_ADD_rri8(cc,Rd,Rn,i) _OP3(cc,_ADD,0,Rd,Rn,UNSHIFT_IMM8(i)) #define CC_ADD_rri8RORi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADD,0,Rd,Rn,SHIFT_IMM8_ROR(Rm,i)) #define CC_ADD_rri(cc,Rd,Rn,i) _OP3(cc,_ADD,0,Rd,Rn,SHIFT_IMM(i)) #define CC_ADD_rrr(cc,Rd,Rn,Rm) _OP3(cc,_ADD,0,Rd,Rn,SHIFT_REG(Rm)) #define CC_ADD_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADD,0,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_ADD_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADD,0,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_ADD_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADD,0,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_ADD_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADD,0,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_ADD_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADD,0,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_ADD_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADD,0,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_ADD_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADD,0,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_ADD_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADD,0,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_ADD_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_ADD,0,Rd,Rn,SHIFT_RRX(Rm)) #define ADD_rri8(cc,Rd,Rn,i) CC_ADD_rri8(NATIVE_CC_AL,Rd,Rn,i) #define ADD_rri8RORi(cc,Rd,Rn,Rm,i) CC_ADD_rri8RORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADD_rri(Rd,Rn,i) CC_ADD_rri(NATIVE_CC_AL,Rd,Rn,i) #define ADD_rrr(Rd,Rn,Rm) CC_ADD_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define ADD_rrrLSLi(Rd,Rn,Rm,i) CC_ADD_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADD_rrrLSLr(Rd,Rn,Rm,Rs) CC_ADD_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADD_rrrLSRi(Rd,Rn,Rm,i) CC_ADD_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADD_rrrLSRr(Rd,Rn,Rm,Rs) CC_ADD_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADD_rrrASRi(Rd,Rn,Rm,i) CC_ADD_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADD_rrrASRr(Rd,Rn,Rm,Rs) CC_ADD_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADD_rrrRORi(Rd,Rn,Rm,i) CC_ADD_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADD_rrrRORr(Rd,Rn,Rm,Rs) CC_ADD_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADD_rrrRRX(Rd,Rn,Rm) CC_ADD_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_ADDS_rri(cc,Rd,Rn,i) _OP3(cc,_ADD,1,Rd,Rn,SHIFT_IMM(i)) #define CC_ADDS_rrr(cc,Rd,Rn,Rm) _OP3(cc,_ADD,1,Rd,Rn,SHIFT_REG(Rm)) #define CC_ADDS_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADD,1,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_ADDS_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADD,1,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_ADDS_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADD,1,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_ADDS_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADD,1,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_ADDS_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADD,1,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_ADDS_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADD,1,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_ADDS_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADD,1,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_ADDS_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADD,1,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_ADDS_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_ADD,1,Rd,Rn,SHIFT_RRX(Rm)) #define ADDS_rri(Rd,Rn,i) CC_ADDS_rri(NATIVE_CC_AL,Rd,Rn,i) #define ADDS_rrr(Rd,Rn,Rm) CC_ADDS_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define ADDS_rrrLSLi(Rd,Rn,Rm,i) CC_ADDS_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADDS_rrrLSLr(Rd,Rn,Rm,Rs) CC_ADDS_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADDS_rrrLSRi(Rd,Rn,Rm,i) CC_ADDS_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADDS_rrrLSRr(Rd,Rn,Rm,Rs) CC_ADDS_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADDS_rrrASRi(Rd,Rn,Rm,i) CC_ADDS_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADDS_rrrASRr(Rd,Rn,Rm,Rs) CC_ADDS_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADDS_rrrRORi(Rd,Rn,Rm,i) CC_ADDS_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADDS_rrrRORr(Rd,Rn,Rm,Rs) CC_ADDS_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADDS_rrrRRX(Rd,Rn,Rm) CC_ADDS_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_ADC_rri(cc,Rd,Rn,i) _OP3(cc,_ADC,0,Rd,Rn,SHIFT_IMM(i)) #define CC_ADC_rrr(cc,Rd,Rn,Rm) _OP3(cc,_ADC,0,Rd,Rn,SHIFT_REG(Rm)) #define CC_ADC_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADC,0,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_ADC_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADC,0,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_ADC_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADC,0,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_ADC_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADC,0,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_ADC_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADC,0,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_ADC_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADC,0,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_ADC_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADC,0,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_ADC_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADC,0,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_ADC_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_ADC,0,Rd,Rn,SHIFT_RRX(Rm)) #define ADC_rri(Rd,Rn,i) CC_ADC_rri(NATIVE_CC_AL,Rd,Rn,i) #define ADC_rrr(Rd,Rn,Rm) CC_ADC_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define ADC_rrrLSLi(Rd,Rn,Rm,i) CC_ADC_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADC_rrrLSLr(Rd,Rn,Rm,Rs) CC_ADC_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADC_rrrLSRi(Rd,Rn,Rm,i) CC_ADC_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADC_rrrLSRr(Rd,Rn,Rm,Rs) CC_ADC_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADC_rrrASRi(Rd,Rn,Rm,i) CC_ADC_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADC_rrrASRr(Rd,Rn,Rm,Rs) CC_ADC_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADC_rrrRORi(Rd,Rn,Rm,i) CC_ADC_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADC_rrrRORr(Rd,Rn,Rm,Rs) CC_ADC_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADC_rrrRRX(Rd,Rn,Rm) CC_ADC_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_ADCS_rri(cc,Rd,Rn,i) _OP3(cc,_ADC,1,Rd,Rn,SHIFT_IMM(i)) #define CC_ADCS_rrr(cc,Rd,Rn,Rm) _OP3(cc,_ADC,1,Rd,Rn,SHIFT_REG(Rm)) #define CC_ADCS_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADC,1,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_ADCS_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADC,1,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_ADCS_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADC,1,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_ADCS_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADC,1,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_ADCS_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADC,1,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_ADCS_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADC,1,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_ADCS_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_ADC,1,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_ADCS_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ADC,1,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_ADCS_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_ADC,1,Rd,Rn,SHIFT_RRX(Rm)) #define ADCS_rri(Rd,Rn,i) CC_ADCS_rri(NATIVE_CC_AL,Rd,Rn,i) #define ADCS_rrr(Rd,Rn,Rm) CC_ADCS_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define ADCS_rrrLSLi(Rd,Rn,Rm,i) CC_ADCS_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADCS_rrrLSLr(Rd,Rn,Rm,Rs) CC_ADCS_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADCS_rrrLSRi(Rd,Rn,Rm,i) CC_ADCS_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADCS_rrrLSRr(Rd,Rn,Rm,Rs) CC_ADCS_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADCS_rrrASRi(Rd,Rn,Rm,i) CC_ADCS_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADCS_rrrASRr(Rd,Rn,Rm,Rs) CC_ADCS_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADCS_rrrRORi(Rd,Rn,Rm,i) CC_ADCS_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ADCS_rrrRORr(Rd,Rn,Rm,Rs) CC_ADCS_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ADCS_rrrRRX(Rd,Rn,Rm) CC_ADCS_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_SBC_rri(cc,Rd,Rn,i) _OP3(cc,_SBC,0,Rd,Rn,SHIFT_IMM(i)) #define CC_SBC_rrr(cc,Rd,Rn,Rm) _OP3(cc,_SBC,0,Rd,Rn,SHIFT_REG(Rm)) #define CC_SBC_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_SBC,0,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_SBC_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SBC,0,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_SBC_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_SBC,0,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_SBC_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SBC,0,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_SBC_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_SBC,0,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_SBC_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SBC,0,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_SBC_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_SBC,0,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_SBC_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SBC,0,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_SBC_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_SBC,0,Rd,Rn,SHIFT_RRX(Rm)) #define SBC_rri(Rd,Rn,i) CC_SBC_rri(NATIVE_CC_AL,Rd,Rn,i) #define SBC_rrr(Rd,Rn,Rm) CC_SBC_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define SBC_rrrLSLi(Rd,Rn,Rm,i) CC_SBC_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SBC_rrrLSLr(Rd,Rn,Rm,Rs) CC_SBC_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SBC_rrrLSRi(Rd,Rn,Rm,i) CC_SBC_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SBC_rrrLSRr(Rd,Rn,Rm,Rs) CC_SBC_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SBC_rrrASRi(Rd,Rn,Rm,i) CC_SBC_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SBC_rrrASRr(Rd,Rn,Rm,Rs) CC_SBC_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SBC_rrrRORi(Rd,Rn,Rm,i) CC_SBC_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SBC_rrrRORr(Rd,Rn,Rm,Rs) CC_SBC_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SBC_rrrRRX(Rd,Rn,Rm) CC_SBC_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_SBCS_rri(cc,Rd,Rn,i) _OP3(cc,_SBC,1,Rd,Rn,SHIFT_IMM(i)) #define CC_SBCS_rrr(cc,Rd,Rn,Rm) _OP3(cc,_SBC,1,Rd,Rn,SHIFT_REG(Rm)) #define CC_SBCS_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_SBC,1,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_SBCS_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SBC,1,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_SBCS_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_SBC,1,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_SBCS_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SBC,1,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_SBCS_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_SBC,1,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_SBCS_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SBC,1,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_SBCS_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_SBC,1,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_SBCS_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_SBC,1,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_SBCS_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_SBC,1,Rd,Rn,SHIFT_RRX(Rm)) #define SBCS_rri(Rd,Rn,i) CC_SBCS_rri(NATIVE_CC_AL,Rd,Rn,i) #define SBCS_rrr(Rd,Rn,Rm) CC_SBCS_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define SBCS_rrrLSLi(Rd,Rn,Rm,i) CC_SBCS_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SBCS_rrrLSLr(Rd,Rn,Rm,Rs) CC_SBCS_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SBCS_rrrLSRi(Rd,Rn,Rm,i) CC_SBCS_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SBCS_rrrLSRr(Rd,Rn,Rm,Rs) CC_SBCS_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SBCS_rrrASRi(Rd,Rn,Rm,i) CC_SBCS_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SBCS_rrrASRr(Rd,Rn,Rm,Rs) CC_SBCS_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SBCS_rrrRORi(Rd,Rn,Rm,i) CC_SBCS_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define SBCS_rrrRORr(Rd,Rn,Rm,Rs) CC_SBCS_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define SBCS_rrrRRX(Rd,Rn,Rm) CC_SBCS_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_RSC_rri(cc,Rd,Rn,i) _OP3(cc,_RSC,0,Rd,Rn,SHIFT_IMM(i)) #define CC_RSC_rrr(cc,Rd,Rn,Rm) _OP3(cc,_RSC,0,Rd,Rn,SHIFT_REG(Rm)) #define CC_RSC_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSC,0,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_RSC_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSC,0,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_RSC_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSC,0,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_RSC_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSC,0,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_RSC_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSC,0,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_RSC_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSC,0,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_RSC_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSC,0,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_RSC_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSC,0,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_RSC_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_RSC,0,Rd,Rn,SHIFT_RRX(Rm)) #define RSC_rri(Rd,Rn,i) CC_RSC_rri(NATIVE_CC_AL,Rd,Rn,i) #define RSC_rrr(Rd,Rn,Rm) CC_RSC_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define RSC_rrrLSLi(Rd,Rn,Rm,i) CC_RSC_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSC_rrrLSLr(Rd,Rn,Rm,Rs) CC_RSC_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSC_rrrLSRi(Rd,Rn,Rm,i) CC_RSC_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSC_rrrLSRr(Rd,Rn,Rm,Rs) CC_RSC_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSC_rrrASRi(Rd,Rn,Rm,i) CC_RSC_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSC_rrrASRr(Rd,Rn,Rm,Rs) CC_RSC_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSC_rrrRORi(Rd,Rn,Rm,i) CC_RSC_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSC_rrrRORr(Rd,Rn,Rm,Rs) CC_RSC_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSC_rrrRRX(Rd,Rn,Rm) CC_RSC_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_RSCS_rri(cc,Rd,Rn,i) _OP3(cc,_RSC,1,Rd,Rn,SHIFT_IMM(i)) #define CC_RSCS_rrr(cc,Rd,Rn,Rm) _OP3(cc,_RSC,1,Rd,Rn,SHIFT_REG(Rm)) #define CC_RSCS_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSC,1,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_RSCS_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSC,1,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_RSCS_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSC,1,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_RSCS_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSC,1,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_RSCS_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSC,1,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_RSCS_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSC,1,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_RSCS_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_RSC,1,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_RSCS_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_RSC,1,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_RSCS_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_RSC,1,Rd,Rn,SHIFT_RRX(Rm)) #define RSCS_rri(Rd,Rn,i) CC_RSCS_rri(NATIVE_CC_AL,Rd,Rn,i) #define RSCS_rrr(Rd,Rn,Rm) CC_RSCS_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define RSCS_rrrLSLi(Rd,Rn,Rm,i) CC_RSCS_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSCS_rrrLSLr(Rd,Rn,Rm,Rs) CC_RSCS_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSCS_rrrLSRi(Rd,Rn,Rm,i) CC_RSCS_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSCS_rrrLSRr(Rd,Rn,Rm,Rs) CC_RSCS_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSCS_rrrASRi(Rd,Rn,Rm,i) CC_RSCS_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSCS_rrrASRr(Rd,Rn,Rm,Rs) CC_RSCS_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSCS_rrrRORi(Rd,Rn,Rm,i) CC_RSCS_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define RSCS_rrrRORr(Rd,Rn,Rm,Rs) CC_RSCS_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define RSCS_rrrRRX(Rd,Rn,Rm) CC_RSCS_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) /* ORRcc Rd,Rn,#i */ #define CC_ORR_rri8(cc,Rd,Rn,i) _OP3(cc,_ORR,0,Rd,Rn,UNSHIFTED_IMM8(i)) /* ORRcc Rd,Rn,#i ROR #s */ #define CC_ORR_rri8RORi(cc,Rd,Rn,i,s) _OP3(cc,_ORR,0,Rd,Rn,SHIFT_IMM8_ROR(i,s)) #define CC_ORR_rri(cc,Rd,Rn,i) _OP3(cc,_ORR,0,Rd,Rn,SHIFT_IMM(i)) #define CC_ORR_rrr(cc,Rd,Rn,Rm) _OP3(cc,_ORR,0,Rd,Rn,SHIFT_REG(Rm)) #define CC_ORR_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_ORR,0,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_ORR_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ORR,0,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_ORR_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_ORR,0,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_ORR_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ORR,0,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_ORR_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_ORR,0,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_ORR_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ORR,0,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_ORR_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_ORR,0,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_ORR_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ORR,0,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_ORR_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_ORR,0,Rd,Rn,SHIFT_RRX(Rm)) /* ORR Rd,Rn,#i */ #define ORR_rri8(Rd,Rn,i) CC_ORR_rri8(NATIVE_CC_AL,Rd,Rn,i) /* ORR Rd,Rn,#i ROR #s */ #define ORR_rri8RORi(Rd,Rn,i,s) CC_ORR_rri8RORi(NATIVE_CC_AL,Rd,Rn,i,s) #define ORR_rri(Rd,Rn,i) CC_ORR_rri(NATIVE_CC_AL,Rd,Rn,i) #define ORR_rrr(Rd,Rn,Rm) CC_ORR_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define ORR_rrrLSLi(Rd,Rn,Rm,i) CC_ORR_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ORR_rrrLSLr(Rd,Rn,Rm,Rs) CC_ORR_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ORR_rrrLSRi(Rd,Rn,Rm,i) CC_ORR_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ORR_rrrLSRr(Rd,Rn,Rm,Rs) CC_ORR_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ORR_rrrASRi(Rd,Rn,Rm,i) CC_ORR_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ORR_rrrASRr(Rd,Rn,Rm,Rs) CC_ORR_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ORR_rrrRORi(Rd,Rn,Rm,i) CC_ORR_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ORR_rrrRORr(Rd,Rn,Rm,Rs) CC_ORR_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ORR_rrrRRX(Rd,Rn,Rm) CC_ORR_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_ORRS_rri(cc,Rd,Rn,i) _OP3(cc,_ORR,1,Rd,Rn,SHIFT_IMM(i)) #define CC_ORRS_rrr(cc,Rd,Rn,Rm) _OP3(cc,_ORR,1,Rd,Rn,SHIFT_REG(Rm)) #define CC_ORRS_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_ORR,1,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_ORRS_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ORR,1,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_ORRS_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_ORR,1,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_ORRS_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ORR,1,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_ORRS_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_ORR,1,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_ORRS_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ORR,1,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_ORRS_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_ORR,1,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_ORRS_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_ORR,1,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_ORRS_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_ORR,1,Rd,Rn,SHIFT_RRX(Rm)) #define ORRS_rri(Rd,Rn,i) CC_ORRS_rri(NATIVE_CC_AL,Rd,Rn,i) #define ORRS_rrr(Rd,Rn,Rm) CC_ORRS_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define ORRS_rrrLSLi(Rd,Rn,Rm,i) CC_ORRS_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ORRS_rrrLSLr(Rd,Rn,Rm,Rs) CC_ORRS_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ORRS_rrrLSRi(Rd,Rn,Rm,i) CC_ORRS_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ORRS_rrrLSRr(Rd,Rn,Rm,Rs) CC_ORRS_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ORRS_rrrASRi(Rd,Rn,Rm,i) CC_ORRS_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ORRS_rrrASRr(Rd,Rn,Rm,Rs) CC_ORRS_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ORRS_rrrRORi(Rd,Rn,Rm,i) CC_ORRS_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define ORRS_rrrRORr(Rd,Rn,Rm,Rs) CC_ORRS_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define ORRS_rrrRRX(Rd,Rn,Rm) CC_ORRS_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_BIC_rri(cc,Rd,Rn,i) _OP3(cc,_BIC,0,Rd,Rn,SHIFT_IMM(i)) #define CC_BIC_rrr(cc,Rd,Rn,Rm) _OP3(cc,_BIC,0,Rd,Rn,SHIFT_REG(Rm)) #define CC_BIC_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_BIC,0,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_BIC_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_BIC,0,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_BIC_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_BIC,0,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_BIC_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_BIC,0,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_BIC_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_BIC,0,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_BIC_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_BIC,0,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_BIC_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_BIC,0,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_BIC_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_BIC,0,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_BIC_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_BIC,0,Rd,Rn,SHIFT_RRX(Rm)) #define BIC_rri(Rd,Rn,i) CC_BIC_rri(NATIVE_CC_AL,Rd,Rn,i) #define BIC_rrr(Rd,Rn,Rm) CC_BIC_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define BIC_rrrLSLi(Rd,Rn,Rm,i) CC_BIC_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define BIC_rrrLSLr(Rd,Rn,Rm,Rs) CC_BIC_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define BIC_rrrLSRi(Rd,Rn,Rm,i) CC_BIC_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define BIC_rrrLSRr(Rd,Rn,Rm,Rs) CC_BIC_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define BIC_rrrASRi(Rd,Rn,Rm,i) CC_BIC_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define BIC_rrrASRr(Rd,Rn,Rm,Rs) CC_BIC_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define BIC_rrrRORi(Rd,Rn,Rm,i) CC_BIC_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define BIC_rrrRORr(Rd,Rn,Rm,Rs) CC_BIC_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define BIC_rrrRRX(Rd,Rn,Rm) CC_BIC_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_BICS_rri(cc,Rd,Rn,i) _OP3(cc,_BIC,1,Rd,Rn,SHIFT_IMM(i)) #define CC_BICS_rrr(cc,Rd,Rn,Rm) _OP3(cc,_BIC,1,Rd,Rn,SHIFT_REG(Rm)) #define CC_BICS_rrrLSLi(cc,Rd,Rn,Rm,i) _OP3(cc,_BIC,1,Rd,Rn,SHIFT_LSL_i(Rm,i)) #define CC_BICS_rrrLSLr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_BIC,1,Rd,Rn,SHIFT_LSL_r(Rm,Rs)) #define CC_BICS_rrrLSRi(cc,Rd,Rn,Rm,i) _OP3(cc,_BIC,1,Rd,Rn,SHIFT_LSR_i(Rm,i)) #define CC_BICS_rrrLSRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_BIC,1,Rd,Rn,SHIFT_LSR_r(Rm,Rs)) #define CC_BICS_rrrASRi(cc,Rd,Rn,Rm,i) _OP3(cc,_BIC,1,Rd,Rn,SHIFT_ASR_i(Rm,i)) #define CC_BICS_rrrASRr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_BIC,1,Rd,Rn,SHIFT_ASR_r(Rm,Rs)) #define CC_BICS_rrrRORi(cc,Rd,Rn,Rm,i) _OP3(cc,_BIC,1,Rd,Rn,SHIFT_ROR_i(Rm,i)) #define CC_BICS_rrrRORr(cc,Rd,Rn,Rm,Rs) _OP3(cc,_BIC,1,Rd,Rn,SHIFT_ROR_r(Rm,Rs)) #define CC_BICS_rrrRRX(cc,Rd,Rn,Rm) _OP3(cc,_BIC,1,Rd,Rn,SHIFT_RRX(Rm)) #define BICS_rri(Rd,Rn,i) CC_BICS_rri(NATIVE_CC_AL,Rd,Rn,i) #define BICS_rrr(Rd,Rn,Rm) CC_BICS_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define BICS_rrrLSLi(Rd,Rn,Rm,i) CC_BICS_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define BICS_rrrLSLr(Rd,Rn,Rm,Rs) CC_BICS_rrrLSLr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define BICS_rrrLSRi(Rd,Rn,Rm,i) CC_BICS_rrrLSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define BICS_rrrLSRr(Rd,Rn,Rm,Rs) CC_BICS_rrrLSRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define BICS_rrrASRi(Rd,Rn,Rm,i) CC_BICS_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define BICS_rrrASRr(Rd,Rn,Rm,Rs) CC_BICS_rrrASRr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define BICS_rrrRORi(Rd,Rn,Rm,i) CC_BICS_rrrRORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define BICS_rrrRORr(Rd,Rn,Rm,Rs) CC_BICS_rrrRORr(NATIVE_CC_AL,Rd,Rn,Rm,Rs) #define BICS_rrrRRX(Rd,Rn,Rm) CC_BICS_rrrRRX(NATIVE_CC_AL,Rd,Rn,Rm) /* Branch instructions */ #define CC_B_i(cc,i) _W(((cc) << 28) | (10 << 24) | (i)) #define CC_BL_i(cc,i) _W(((cc) << 28) | (11 << 24) | (i)) #define CC_BLX_r(cc,r) _W(((cc) << 28) | (0x12 << 20) | (3 << 4) | (0xfff << 8) | (r)) #define CC_BX_r(cc,r) _W(((cc) << 28) | (0x12 << 20) | (1 << 4) | (0xfff << 8) | (r)) #define CC_BXJ_r(cc,r) _W(((cc) << 28) | (0x12 << 20) | (2 << 4) | (0xfff << 8) | (r)) #define BEQ_i(i) CC_B_i(NATIVE_CC_EQ,i) #define BNE_i(i) CC_B_i(NATIVE_CC_NE,i) #define BCS_i(i) CC_B_i(NATIVE_CC_CS,i) #define BCC_i(i) CC_B_i(NATIVE_CC_CC,i) #define BMI_i(i) CC_B_i(NATIVE_CC_MI,i) #define BPL_i(i) CC_B_i(NATIVE_CC_PL,i) #define BVS_i(i) CC_B_i(NATIVE_CC_VS,i) #define BVC_i(i) CC_B_i(NATIVE_CC_VC,i) #define BHI_i(i) CC_B_i(NATIVE_CC_HI,i) #define BLS_i(i) CC_B_i(NATIVE_CC_LS,i) #define BGE_i(i) CC_B_i(NATIVE_CC_GE,i) #define BLT_i(i) CC_B_i(NATIVE_CC_LT,i) #define BGT_i(i) CC_B_i(NATIVE_CC_GT,i) #define BLE_i(i) CC_B_i(NATIVE_CC_LE,i) #define B_i(i) CC_B_i(NATIVE_CC_AL,i) #define BL_i(i) CC_BL_i(NATIVE_CC_AL,i) #define BLX_i(i) _W((NATIVE_CC_AL << 28) | (10 << 24) | (i)) #define BLX_r(r) CC_BLX_r(NATIVE_CC_AL,r) #define BX_r(r) CC_BX_r(NATIVE_CC_AL,r) #define BXJ_r(r) CC_BXJ_r(NATIVE_CC_AL,r) /* Status register instructions */ #define CC_MRS_CPSR(cc,Rd) _W(((cc) << 28) | (0x10 << 20) | ((Rd) << 12) | (0xf << 16)) #define MRS_CPSR(Rd) CC_MRS_CPSR(NATIVE_CC_AL,Rd) #define CC_MRS_SPSR(cc,Rd) _W(((cc) << 28) | (0x14 << 20) | ((Rd) << 12) | (0xf << 16)) #define MRS_SPSR(Rd) CC_MRS_SPSR(NATIVE_CC_AL,Rd) #define CC_MSR_CPSR_i(cc,i) _W(((cc) << 28) | (0x32 << 20) | (0x9 << 16) | (0xf << 12) | SHIFT_IMM(i)) #define CC_MSR_CPSR_r(cc,Rm) _W(((cc) << 28) | (0x12 << 20) | (0x9 << 16) | (0xf << 12) | (Rm)) #define MSR_CPSR_i(i) CC_MSR_CPSR_i(NATIVE_CC_AL,(i)) #define MSR_CPSR_r(Rm) CC_MSR_CPSR_r(NATIVE_CC_AL,(Rm)) #define CC_MSR_CPSRf_i(cc,i) _W(((cc) << 28) | (0x32 << 20) | (0x8 << 16) | (0xf << 12) | SHIFT_IMM(i)) #define CC_MSR_CPSRf_r(cc,Rm) _W(((cc) << 28) | (0x12 << 20) | (0x8 << 16) | (0xf << 12) | (Rm)) #define MSR_CPSRf_i(i) CC_MSR_CPSRf_i(NATIVE_CC_AL,(i)) #define MSR_CPSRf_r(Rm) CC_MSR_CPSRf_r(NATIVE_CC_AL,(Rm)) #define CC_MSR_CPSRc_i(cc,i) _W(((cc) << 28) | (0x32 << 20) | (0x1 << 16) | (0xf << 12) | SHIFT_IMM(i)) #define CC_MSR_CPSRc_r(cc,Rm) _W(((cc) << 28) | (0x12 << 20) | (0x1 << 16) | (0xf << 12) | (Rm)) #define MSR_CPSRc_i(i) CC_MSR_CPSRc_i(NATIVE_CC_AL,(i)) #define MSR_CPSRc_r(Rm) CC_MSR_CPSRc_r(NATIVE_CC_AL,(Rm)) /* Load Store instructions */ #define CC_PUSH(cc,r) _W(((cc) << 28) | (0x92d << 16) | (1 << (r))) #define PUSH(r) CC_PUSH(NATIVE_CC_AL, r) #define CC_PUSH_REGS(cc,r) _W(((cc) << 28) | (0x92d << 16) | (r)) #define PUSH_REGS(r) CC_PUSH_REGS(NATIVE_CC_AL, r) #define CC_POP(cc,r) _W(((cc) << 28) | (0x8bd << 16) | (1 << (r))) #define POP(r) CC_POP(NATIVE_CC_AL, r) #define CC_POP_REGS(cc,r) _W(((cc) << 28) | (0x8bd << 16) | (r)) #define POP_REGS(r) CC_POP_REGS(NATIVE_CC_AL, r) #define CC_LDR_rR(cc,Rd,Rn) _LS1(cc,1,0,Rd,Rn,ADD_IMM(0)) #define CC_LDR_rRI(cc,Rd,Rn,i) _LS1(cc,1,0,Rd,Rn,(i) >= 0 ? ADD_IMM(i) : SUB_IMM(-(i))) #define CC_LDR_rRi(cc,Rd,Rn,i) _LS1(cc,1,0,Rd,Rn,SUB_IMM(i)) #define CC_LDR_rRR(cc,Rd,Rn,Rm) _LS1(cc,1,0,Rd,Rn,ADD_REG(Rm)) #define CC_LDR_rRr(cc,Rd,Rn,Rm) _LS1(cc,1,0,Rd,Rn,SUB_REG(Rm)) #define CC_LDR_rRR_LSLi(cc,Rd,Rn,Rm,i) _LS1(cc,1,0,Rd,Rn,ADD_LSL(Rm,i)) #define CC_LDR_rRr_LSLi(cc,Rd,Rn,Rm,i) _LS1(cc,1,0,Rd,Rn,SUB_LSL(Rm,i)) #define CC_LDR_rRR_LSRi(cc,Rd,Rn,Rm,i) _LS1(cc,1,0,Rd,Rn,ADD_LSR(Rm,i)) #define CC_LDR_rRr_LSRi(cc,Rd,Rn,Rm,i) _LS1(cc,1,0,Rd,Rn,SUB_LSR(Rm,i)) #define CC_LDR_rRR_ASRi(cc,Rd,Rn,Rm,i) _LS1(cc,1,0,Rd,Rn,ADD_ASR(Rm,i)) #define CC_LDR_rRr_ASRi(cc,Rd,Rn,Rm,i) _LS1(cc,1,0,Rd,Rn,SUB_ASR(Rm,i)) #define CC_LDR_rRR_RORi(cc,Rd,Rn,Rm,i) _LS1(cc,1,0,Rd,Rn,ADD_ROR(Rm,i)) #define CC_LDR_rRr_RORi(cc,Rd,Rn,Rm,i) _LS1(cc,1,0,Rd,Rn,SUB_ROR(Rm,i)) #define CC_LDR_rRR_RRX(cc,Rd,Rn,Rm) _LS1(cc,1,0,Rd,Rn,ADD_RRX(Rm)) #define CC_LDR_rRr_RRX(cc,Rd,Rn,Rm) _LS1(cc,1,0,Rd,Rn,SUB_RRX(Rm)) #define LDR_rR(Rd,Rn) CC_LDR_rR(NATIVE_CC_AL,Rd,Rn) #define LDR_rRI(Rd,Rn,i) CC_LDR_rRI(NATIVE_CC_AL,Rd,Rn,i) #define LDR_rRi(Rd,Rn,i) CC_LDR_rRi(NATIVE_CC_AL,Rd,Rn,i) #define LDR_rRR(Rd,Rn,Rm) CC_LDR_rRR(NATIVE_CC_AL,Rd,Rn,Rm) #define LDR_rRr(Rd,Rn,Rm) CC_LDR_rRr(NATIVE_CC_AL,Rd,Rn,Rm) #define LDR_rRR_LSLi(Rd,Rn,Rm,i) CC_LDR_rRR_LSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDR_rRr_LSLi(Rd,Rn,Rm,i) CC_LDR_rRr_LSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDR_rRR_LSRi(Rd,Rn,Rm,i) CC_LDR_rRR_LSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDR_rRr_LSRi(Rd,Rn,Rm,i) CC_LDR_rRr_LSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDR_rRR_ASRi(Rd,Rn,Rm,i) CC_LDR_rRR_ASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDR_rRr_ASRi(Rd,Rn,Rm,i) CC_LDR_rRr_ASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDR_rRR_RORi(Rd,Rn,Rm,i) CC_LDR_rRR_RORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDR_rRr_RORi(Rd,Rn,Rm,i) CC_LDR_rRr_RORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDR_rRR_RRX(Rd,Rn,Rm) CC_LDR_rRR_RRX(NATIVE_CC_AL,Rd,Rn,Rm) #define LDR_rRr_RRX(Rd,Rn,Rm) CC_LDR_rRr_RRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_STR_rR(cc,Rd,Rn) _LS1(cc,0,0,Rd,Rn,ADD_IMM(0)) #define CC_STR_rRI(cc,Rd,Rn,i) _LS1(cc,0,0,Rd,Rn,ADD_IMM(i)) #define CC_STR_rRi(cc,Rd,Rn,i) _LS1(cc,0,0,Rd,Rn,SUB_IMM(i)) #define CC_STR_rRR(cc,Rd,Rn,Rm) _LS1(cc,0,0,Rd,Rn,ADD_REG(Rm)) #define CC_STR_rRr(cc,Rd,Rn,Rm) _LS1(cc,0,0,Rd,Rn,SUB_REG(Rm)) #define CC_STR_rRR_LSLi(cc,Rd,Rn,Rm,i) _LS1(cc,0,0,Rd,Rn,ADD_LSL(Rm,i)) #define CC_STR_rRr_LSLi(cc,Rd,Rn,Rm,i) _LS1(cc,0,0,Rd,Rn,SUB_LSL(Rm,i)) #define CC_STR_rRR_LSRi(cc,Rd,Rn,Rm,i) _LS1(cc,0,0,Rd,Rn,ADD_LSR(Rm,i)) #define CC_STR_rRr_LSRi(cc,Rd,Rn,Rm,i) _LS1(cc,0,0,Rd,Rn,SUB_LSR(Rm,i)) #define CC_STR_rRR_ASRi(cc,Rd,Rn,Rm,i) _LS1(cc,0,0,Rd,Rn,ADD_ASR(Rm,i)) #define CC_STR_rRr_ASRi(cc,Rd,Rn,Rm,i) _LS1(cc,0,0,Rd,Rn,SUB_ASR(Rm,i)) #define CC_STR_rRR_RORi(cc,Rd,Rn,Rm,i) _LS1(cc,0,0,Rd,Rn,ADD_ROR(Rm,i)) #define CC_STR_rRr_RORi(cc,Rd,Rn,Rm,i) _LS1(cc,0,0,Rd,Rn,SUB_ROR(Rm,i)) #define CC_STR_rRR_RRX(cc,Rd,Rn,Rm) _LS1(cc,0,0,Rd,Rn,ADD_RRX(Rm)) #define CC_STR_rRr_RRX(cc,Rd,Rn,Rm) _LS1(cc,0,0,Rd,Rn,SUB_RRX(Rm)) #define STR_rR(Rd,Rn) CC_STR_rR(NATIVE_CC_AL,Rd,Rn) #define STR_rRI(Rd,Rn,i) CC_STR_rRI(NATIVE_CC_AL,Rd,Rn,i) #define STR_rRi(Rd,Rn,i) CC_STR_rRi(NATIVE_CC_AL,Rd,Rn,i) #define STR_rRR(Rd,Rn,Rm) CC_STR_rRR(NATIVE_CC_AL,Rd,Rn,Rm) #define STR_rRr(Rd,Rn,Rm) CC_STR_rRr(NATIVE_CC_AL,Rd,Rn,Rm) #define STR_rRR_LSLi(Rd,Rn,Rm,i) CC_STR_rRR_LSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STR_rRr_LSLi(Rd,Rn,Rm,i) CC_STR_rRr_LSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STR_rRR_LSRi(Rd,Rn,Rm,i) CC_STR_rRR_LSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STR_rRr_LSRi(Rd,Rn,Rm,i) CC_STR_rRr_LSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STR_rRR_ASRi(Rd,Rn,Rm,i) CC_STR_rRR_ASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STR_rRr_ASRi(Rd,Rn,Rm,i) CC_STR_rRr_ASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STR_rRR_RORi(Rd,Rn,Rm,i) CC_STR_rRR_RORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STR_rRr_RORi(Rd,Rn,Rm,i) CC_STR_rRr_RORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STR_rRR_RRX(Rd,Rn,Rm) CC_STR_rRR_RRX(NATIVE_CC_AL,Rd,Rn,Rm) #define STR_rRr_RRX(Rd,Rn,Rm) CC_STR_rRr_RRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_LDRB_rR(cc,Rd,Rn) _LS1(cc,1,1,Rd,Rn,ADD_IMM(0)) #define CC_LDRB_rRI(cc,Rd,Rn,i) _LS1(cc,1,1,Rd,Rn,ADD_IMM(i)) #define CC_LDRB_rRi(cc,Rd,Rn,i) _LS1(cc,1,1,Rd,Rn,SUB_IMM(i)) #define CC_LDRB_rRR(cc,Rd,Rn,Rm) _LS1(cc,1,1,Rd,Rn,ADD_REG(Rm)) #define CC_LDRB_rRr(cc,Rd,Rn,Rm) _LS1(cc,1,1,Rd,Rn,SUB_REG(Rm)) #define CC_LDRB_rRR_LSLi(cc,Rd,Rn,Rm,i) _LS1(cc,1,1,Rd,Rn,ADD_LSL(Rm,i)) #define CC_LDRB_rRr_LSLi(cc,Rd,Rn,Rm,i) _LS1(cc,1,1,Rd,Rn,SUB_LSL(Rm,i)) #define CC_LDRB_rRR_LSRi(cc,Rd,Rn,Rm,i) _LS1(cc,1,1,Rd,Rn,ADD_LSR(Rm,i)) #define CC_LDRB_rRr_LSRi(cc,Rd,Rn,Rm,i) _LS1(cc,1,1,Rd,Rn,SUB_LSR(Rm,i)) #define CC_LDRB_rRR_ASRi(cc,Rd,Rn,Rm,i) _LS1(cc,1,1,Rd,Rn,ADD_ASR(Rm,i)) #define CC_LDRB_rRr_ASRi(cc,Rd,Rn,Rm,i) _LS1(cc,1,1,Rd,Rn,SUB_ASR(Rm,i)) #define CC_LDRB_rRR_RORi(cc,Rd,Rn,Rm,i) _LS1(cc,1,1,Rd,Rn,ADD_ROR(Rm,i)) #define CC_LDRB_rRr_RORi(cc,Rd,Rn,Rm,i) _LS1(cc,1,1,Rd,Rn,SUB_ROR(Rm,i)) #define CC_LDRB_rRR_RRX(cc,Rd,Rn,Rm) _LS1(cc,1,1,Rd,Rn,ADD_RRX(Rm)) #define CC_LDRB_rRr_RRX(cc,Rd,Rn,Rm) _LS1(cc,1,1,Rd,Rn,SUB_RRX(Rm)) #define LDRB_rR(Rd,Rn) CC_LDRB_rR(NATIVE_CC_AL,Rd,Rn) #define LDRB_rRI(Rd,Rn,i) CC_LDRB_rRI(NATIVE_CC_AL,Rd,Rn,i) #define LDRB_rRi(Rd,Rn,i) CC_LDRB_rRi(NATIVE_CC_AL,Rd,Rn,i) #define LDRB_rRR(Rd,Rn,Rm) CC_LDRB_rRR(NATIVE_CC_AL,Rd,Rn,Rm) #define LDRB_rRr(Rd,Rn,Rm) CC_LDRB_rRr(NATIVE_CC_AL,Rd,Rn,Rm) #define LDRB_rRR_LSLi(Rd,Rn,Rm,i) CC_LDRB_rRR_LSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDRB_rRr_LSLi(Rd,Rn,Rm,i) CC_LDRB_rRr_LSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDRB_rRR_LSRi(Rd,Rn,Rm,i) CC_LDRB_rRR_LSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDRB_rRr_LSRi(Rd,Rn,Rm,i) CC_LDRB_rRr_LSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDRB_rRR_ASRi(Rd,Rn,Rm,i) CC_LDRB_rRR_ASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDRB_rRr_ASRi(Rd,Rn,Rm,i) CC_LDRB_rRr_ASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDRB_rRR_RORi(Rd,Rn,Rm,i) CC_LDRB_rRR_RORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDRB_rRr_RORi(Rd,Rn,Rm,i) CC_LDRB_rRr_RORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define LDRB_rRR_RRX(Rd,Rn,Rm) CC_LDRB_rRR_RRX(NATIVE_CC_AL,Rd,Rn,Rm) #define LDRB_rRr_RRX(Rd,Rn,Rm) CC_LDRB_rRr_RRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_STRB_rR(cc,Rd,Rn) _LS1(cc,0,1,Rd,Rn,ADD_IMM(0)) #define CC_STRB_rRI(cc,Rd,Rn,i) _LS1(cc,0,1,Rd,Rn,ADD_IMM(i)) #define CC_STRB_rRi(cc,Rd,Rn,i) _LS1(cc,0,1,Rd,Rn,SUB_IMM(i)) #define CC_STRB_rRR(cc,Rd,Rn,Rm) _LS1(cc,0,1,Rd,Rn,ADD_REG(Rm)) #define CC_STRB_rRr(cc,Rd,Rn,Rm) _LS1(cc,0,1,Rd,Rn,SUB_REG(Rm)) #define CC_STRB_rRR_LSLi(cc,Rd,Rn,Rm,i) _LS1(cc,0,1,Rd,Rn,ADD_LSL(Rm,i)) #define CC_STRB_rRr_LSLi(cc,Rd,Rn,Rm,i) _LS1(cc,0,1,Rd,Rn,SUB_LSL(Rm,i)) #define CC_STRB_rRR_LSRi(cc,Rd,Rn,Rm,i) _LS1(cc,0,1,Rd,Rn,ADD_LSR(Rm,i)) #define CC_STRB_rRr_LSRi(cc,Rd,Rn,Rm,i) _LS1(cc,0,1,Rd,Rn,SUB_LSR(Rm,i)) #define CC_STRB_rRR_ASRi(cc,Rd,Rn,Rm,i) _LS1(cc,0,1,Rd,Rn,ADD_ASR(Rm,i)) #define CC_STRB_rRr_ASRi(cc,Rd,Rn,Rm,i) _LS1(cc,0,1,Rd,Rn,SUB_ASR(Rm,i)) #define CC_STRB_rRR_RORi(cc,Rd,Rn,Rm,i) _LS1(cc,0,1,Rd,Rn,ADD_ROR(Rm,i)) #define CC_STRB_rRr_RORi(cc,Rd,Rn,Rm,i) _LS1(cc,0,1,Rd,Rn,SUB_ROR(Rm,i)) #define CC_STRB_rRR_RRX(cc,Rd,Rn,Rm) _LS1(cc,0,1,Rd,Rn,ADD_RRX(Rm)) #define CC_STRB_rRr_RRX(cc,Rd,Rn,Rm) _LS1(cc,0,1,Rd,Rn,SUB_RRX(Rm)) #define STRB_rR(Rd,Rn) CC_STRB_rR(NATIVE_CC_AL,Rd,Rn) #define STRB_rRI(Rd,Rn,i) CC_STRB_rRI(NATIVE_CC_AL,Rd,Rn,i) #define STRB_rRi(Rd,Rn,i) CC_STRB_rRi(NATIVE_CC_AL,Rd,Rn,i) #define STRB_rRR(Rd,Rn,Rm) CC_STRB_rRR(NATIVE_CC_AL,Rd,Rn,Rm) #define STRB_rRr(Rd,Rn,Rm) CC_STRB_rRr(NATIVE_CC_AL,Rd,Rn,Rm) #define STRB_rRR_LSLi(Rd,Rn,Rm,i) CC_STRB_rRR_LSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STRB_rRr_LSLi(Rd,Rn,Rm,i) CC_STRB_rRr_LSLi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STRB_rRR_LSRi(Rd,Rn,Rm,i) CC_STRB_rRR_LSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STRB_rRr_LSRi(Rd,Rn,Rm,i) CC_STRB_rRr_LSRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STRB_rRR_ASRi(Rd,Rn,Rm,i) CC_STRB_rRR_ASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STRB_rRr_ASRi(Rd,Rn,Rm,i) CC_STRB_rRr_ASRi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STRB_rRR_RORi(Rd,Rn,Rm,i) CC_STRB_rRR_RORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STRB_rRr_RORi(Rd,Rn,Rm,i) CC_STRB_rRr_RORi(NATIVE_CC_AL,Rd,Rn,Rm,i) #define STRB_rRR_RRX(Rd,Rn,Rm) CC_STRB_rRR_RRX(NATIVE_CC_AL,Rd,Rn,Rm) #define STRB_rRr_RRX(Rd,Rn,Rm) CC_STRB_rRr_RRX(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_LDRSH_rR(cc,Rd,Rn) _LS2(cc,1,1,1,1,Rd,Rn,ADD2_IMM(0)) #define CC_LDRSH_rRI(cc,Rd,Rn,i) _LS2(cc,1,1,1,1,Rd,Rn,ADD2_IMM(i)) #define CC_LDRSH_rRi(cc,Rd,Rn,i) _LS2(cc,1,1,1,1,Rd,Rn,SUB2_IMM(i)) #define CC_LDRSH_rRR(cc,Rd,Rn,Rm) _LS2(cc,1,1,1,1,Rd,Rn,ADD2_REG(Rm)) #define CC_LDRSH_rRr(cc,Rd,Rn,Rm) _LS2(cc,1,1,1,1,Rd,Rn,SUB2_REG(Rm)) #define LDRSH_rR(Rd,Rn) CC_LDRSH_rR(NATIVE_CC_AL,Rd,Rn) #define LDRSH_rRI(Rd,Rn,i) CC_LDRSH_rRI(NATIVE_CC_AL,Rd,Rn,i) #define LDRSH_rRi(Rd,Rn,i) CC_LDRSH_rRi(NATIVE_CC_AL,Rd,Rn,i) #define LDRSH_rRR(Rd,Rn,Rm) CC_LDRSH_rRR(NATIVE_CC_AL,Rd,Rn,Rm) #define LDRSH_rRr(Rd,Rn,Rm) CC_LDRSH_rRr(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_LDRH_rR(cc,Rd,Rn) _LS2(cc,1,1,0,1,Rd,Rn,ADD2_IMM(0)) #define CC_LDRH_rRI(cc,Rd,Rn,i) _LS2(cc,1,1,0,1,Rd,Rn,(i) >= 0 ? ADD2_IMM(i) : SUB2_IMM(-(i))) #define CC_LDRH_rRi(cc,Rd,Rn,i) _LS2(cc,1,1,0,1,Rd,Rn,SUB2_IMM(i)) #define CC_LDRH_rRR(cc,Rd,Rn,Rm) _LS2(cc,1,1,0,1,Rd,Rn,ADD2_REG(Rm)) #define CC_LDRH_rRr(cc,Rd,Rn,Rm) _LS2(cc,1,1,0,1,Rd,Rn,SUB2_REG(Rm)) #define LDRH_rR(Rd,Rn) CC_LDRH_rR(NATIVE_CC_AL,Rd,Rn) #define LDRH_rRI(Rd,Rn,i) CC_LDRH_rRI(NATIVE_CC_AL,Rd,Rn,i) #define LDRH_rRi(Rd,Rn,i) CC_LDRH_rRi(NATIVE_CC_AL,Rd,Rn,i) #define LDRH_rRR(Rd,Rn,Rm) CC_LDRH_rRR(NATIVE_CC_AL,Rd,Rn,Rm) #define LDRH_rRr(Rd,Rn,Rm) CC_LDRH_rRr(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_STRD_rR(cc,Rd,Rn) _LS2(cc,1,0,1,1,Rd,Rn,ADD2_IMM(0)) #define CC_STRD_rRI(cc,Rd,Rn,i) _LS2(cc,1,0,1,1,Rd,Rn,ADD2_IMM(i)) #define CC_STRD_rRi(cc,Rd,Rn,i) _LS2(cc,1,0,1,1,Rd,Rn,SUB2_IMM(i)) #define CC_STRD_rRR(cc,Rd,Rn,Rm) _LS2(cc,1,0,1,1,Rd,Rn,ADD2_REG(Rm)) #define CC_STRD_rRr(cc,Rd,Rn,Rm) _LS2(cc,1,0,1,1,Rd,Rn,SUB2_REG(Rm)) #define STRD_rR(Rd,Rn) CC_STRD_rR(NATIVE_CC_AL,Rd,Rn) #define STRD_rRI(Rd,Rn,i) CC_STRD_rRI(NATIVE_CC_AL,Rd,Rn,i) #define STRD_rRi(Rd,Rn,i) CC_STRD_rRi(NATIVE_CC_AL,Rd,Rn,i) #define STRD_rRR(Rd,Rn,Rm) CC_STRD_rRR(NATIVE_CC_AL,Rd,Rn,Rm) #define STRD_rRr(Rd,Rn,Rm) CC_STRD_rRr(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_STRH_rR(cc,Rd,Rn) _LS2(cc,1,0,0,1,Rd,Rn,ADD2_IMM(0)) #define CC_STRH_rRI(cc,Rd,Rn,i) _LS2(cc,1,0,0,1,Rd,Rn,ADD2_IMM(i)) #define CC_STRH_rRi(cc,Rd,Rn,i) _LS2(cc,1,0,0,1,Rd,Rn,SUB2_IMM(i)) #define CC_STRH_rRR(cc,Rd,Rn,Rm) _LS2(cc,1,0,0,1,Rd,Rn,ADD2_REG(Rm)) #define CC_STRH_rRr(cc,Rd,Rn,Rm) _LS2(cc,1,0,0,1,Rd,Rn,SUB2_REG(Rm)) #define STRH_rR(Rd,Rn) CC_STRH_rR(NATIVE_CC_AL,Rd,Rn) #define STRH_rRI(Rd,Rn,i) CC_STRH_rRI(NATIVE_CC_AL,Rd,Rn,i) #define STRH_rRi(Rd,Rn,i) CC_STRH_rRi(NATIVE_CC_AL,Rd,Rn,i) #define STRH_rRR(Rd,Rn,Rm) CC_STRH_rRR(NATIVE_CC_AL,Rd,Rn,Rm) #define STRH_rRr(Rd,Rn,Rm) CC_STRH_rRr(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_LDRSB_rR(cc,Rd,Rn) _LS2(cc,1,1,1,0,Rd,Rn,ADD2_IMM(0)) #define CC_LDRSB_rRI(cc,Rd,Rn,i) _LS2(cc,1,1,1,0,Rd,Rn,ADD2_IMM(i)) #define CC_LDRSB_rRi(cc,Rd,Rn,i) _LS2(cc,1,1,1,0,Rd,Rn,SUB2_IMM(i)) #define CC_LDRSB_rRR(cc,Rd,Rn,Rm) _LS2(cc,1,1,1,0,Rd,Rn,ADD2_REG(Rm)) #define CC_LDRSB_rRr(cc,Rd,Rn,Rm) _LS2(cc,1,1,1,0,Rd,Rn,SUB2_REG(Rm)) #define LDRSB_rR(Rd,Rn) CC_LDRSB_rR(NATIVE_CC_AL,Rd,Rn) #define LDRSB_rRI(Rd,Rn,i) CC_LDRSB_rRI(NATIVE_CC_AL,Rd,Rn,i) #define LDRSB_rRi(Rd,Rn,i) CC_LDRSB_rRi(NATIVE_CC_AL,Rd,Rn,i) #define LDRSB_rRR(Rd,Rn,Rm) CC_LDRSB_rRR(NATIVE_CC_AL,Rd,Rn,Rm) #define LDRSB_rRr(Rd,Rn,Rm) CC_LDRSB_rRr(NATIVE_CC_AL,Rd,Rn,Rm) #define CC_LDRD_rR(cc,Rd,Rn) _LS2(cc,1,0,1,0,Rd,Rn,ADD2_IMM(0)) #define CC_LDRD_rRI(cc,Rd,Rn,i) _LS2(cc,1,0,1,0,Rd,Rn,ADD2_IMM(i)) #define CC_LDRD_rRi(cc,Rd,Rn,i) _LS2(cc,1,0,1,0,Rd,Rn,SUB2_IMM(i)) #define CC_LDRD_rRR(cc,Rd,Rn,Rm) _LS2(cc,1,0,1,0,Rd,Rn,ADD2_REG(Rm)) #define CC_LDRD_rRr(cc,Rd,Rn,Rm) _LS2(cc,1,0,1,0,Rd,Rn,SUB2_REG(Rm)) #define LDRD_rR(Rd,Rn) CC_LDRD_rR(NATIVE_CC_AL,Rd,Rn) #define LDRD_rRI(Rd,Rn,i) CC_LDRD_rRI(NATIVE_CC_AL,Rd,Rn,i) #define LDRD_rRi(Rd,Rn,i) CC_LDRD_rRi(NATIVE_CC_AL,Rd,Rn,i) #define LDRD_rRR(Rd,Rn,Rm) CC_LDRD_rRR(NATIVE_CC_AL,Rd,Rn,Rm) #define LDRD_rRr(Rd,Rn,Rm) CC_LDRD_rRr(NATIVE_CC_AL,Rd,Rn,Rm) /* Multiply */ #define CC_SMULL_rrrr(cc, RdLo, RdHi, Rm, Rs) _W(((cc) << 28) | (0x0C << 20) | ((RdHi) << 16) | ((RdLo) << 12) | ((Rs) << 8) | (0x9 << 4) | (Rm)) #define SMULL_rrrr(RdLo,RdHi,Rm,Rs) CC_SMULL_rrrr(NATIVE_CC_AL,RdLo,RdHi,Rm,Rs) #define CC_SMULLS_rrrr(cc, RdLo, RdHi, Rm, Rs) _W(((cc) << 28) | (0x0D << 20) | ((RdHi) << 16) | ((RdLo) << 12) | ((Rs) << 8) | (0x9 << 4) | (Rm)) #define SMULLS_rrrr(RdLo,RdHi,Rm,Rs) CC_SMULLS_rrrr(NATIVE_CC_AL,RdLo,RdHi,Rm,Rs) #define CC_MUL_rrr(cc, Rd, Rm, Rs) _W(((cc) << 28) | (0x00 << 20) | ((Rd) << 16) | ((Rs) << 8) | (0x9 << 4) | (Rm)) #define MUL_rrr(Rd, Rm, Rs) CC_MUL_rrr(NATIVE_CC_AL, Rd, Rm, Rs) #define CC_MULS_rrr(cc, Rd, Rm, Rs) _W(((cc) << 28) | (0x01 << 20) | ((Rd) << 16) | ((Rs) << 8) | (0x9 << 4) | (Rm)) #define MULS_rrr(Rd, Rm, Rs) CC_MULS_rrr(NATIVE_CC_AL, Rd, Rm, Rs) #define CC_UMULL_rrrr(cc, RdLo, RdHi, Rm, Rs) _W(((cc) << 28) | (0x08 << 20) | ((RdHi) << 16) | ((RdLo) << 12) | ((Rs) << 8) | (0x9 << 4) | (Rm)) #define UMULL_rrrr(RdLo,RdHi,Rm,Rs) CC_UMULL_rrrr(NATIVE_CC_AL,RdLo,RdHi,Rm,Rs) #define CC_UMULLS_rrrr(cc, RdLo, RdHi, Rm, Rs) _W(((cc) << 28) | (0x09 << 20) | ((RdHi) << 16) | ((RdLo) << 12) | ((Rs) << 8) | (0x9 << 4) | (Rm)) #define UMULLS_rrrr(RdLo,RdHi,Rm,Rs) CC_UMULLS_rrrr(NATIVE_CC_AL,RdLo,RdHi,Rm,Rs) /* Others */ #define CC_CLZ_rr(cc,Rd,Rm) _W(((cc) << 28) | (0x16 << 20) | (0xf << 16) | ((Rd) << 12) | (0xf << 8) | (0x1 << 4) | SHIFT_REG(Rm)) #define CLZ_rr(Rd,Rm) CC_CLZ_rr(NATIVE_CC_AL,Rd,Rm) /* Alias */ #define LSL_rri(Rd,Rm,i) MOV_rrLSLi(Rd,Rm,i) #define LSL_rrr(Rd,Rm,Rs) MOV_rrLSLr(Rd,Rm,Rs) #define LSR_rri(Rd,Rm,i) MOV_rrLSRi(Rd,Rm,i) #define LSR_rrr(Rd,Rm,Rs) MOV_rrLSRr(Rd,Rm,Rs) #define ASR_rri(Rd,Rm,i) MOV_rrASRi(Rd,Rm,i) #define ASR_rrr(Rd,Rm,Rs) MOV_rrASRr(Rd,Rm,Rs) #define ROR_rri(Rd,Rm,i) MOV_rrRORi(Rd,Rm,i) #define ROR_rrr(Rd,Rm,Rs) MOV_rrRORr(Rd,Rm,Rs) #define RRX_rr(Rd,Rm) MOV_rrRRX(Rd,Rm) #define LSLS_rri(Rd,Rm,i) MOVS_rrLSLi(Rd,Rm,i) #define LSLS_rrr(Rd,Rm,Rs) MOVS_rrLSLr(Rd,Rm,Rs) #define LSRS_rri(Rd,Rm,i) MOVS_rrLSRi(Rd,Rm,i) #define LSRS_rrr(Rd,Rm,Rs) MOVS_rrLSRr(Rd,Rm,Rs) #define ASRS_rri(Rd,Rm,i) MOVS_rrASRi(Rd,Rm,i) #define ASRS_rrr(Rd,Rm,Rs) MOVS_rrASRr(Rd,Rm,Rs) #define RORS_rri(Rd,Rm,i) MOVS_rrRORi(Rd,Rm,i) #define RORS_rrr(Rd,Rm,Rs) MOVS_rrRORr(Rd,Rm,Rs) #define RRXS_rr(Rd,Rm) MOVS_rrRRX(Rd,Rm) /* ARMV6 ops */ #define CC_SXTB_rr(cc,Rd,Rm) _W(((cc) << 28) | (0x6a << 20) | (0xf << 16) | ((Rd) << 12) | (0x7 << 4) | SHIFT_REG(Rm)) #define SXTB_rr(Rd,Rm) CC_SXTB_rr(NATIVE_CC_AL,Rd,Rm) #define CC_SXTB_rr_ROR8(cc,Rd,Rm) _W(((cc) << 28) | (0x6a << 20) | (0xf << 16) | ((Rd) << 12) | (1 << 10) | (0x7 << 4) | SHIFT_REG(Rm)) #define SXTB_rr_ROR8(Rd,Rm) CC_SXTB_rr_ROR8(NATIVE_CC_AL,Rd,Rm) #define CC_SXTB_rr_ROR16(cc,Rd,Rm) _W(((cc) << 28) | (0x6a << 20) | (0xf << 16) | ((Rd) << 12) | (2 << 10) | (0x7 << 4) | SHIFT_REG(Rm)) #define SXTB_rr_ROR16(Rd,Rm) CC_SXTB_rr_ROR16(NATIVE_CC_AL,Rd,Rm) #define CC_SXTB_rr_ROR24(cc,Rd,Rm) _W(((cc) << 28) | (0x6a << 20) | (0xf << 16) | ((Rd) << 12) | (3 << 10) | (0x7 << 4) | SHIFT_REG(Rm)) #define SXTB_rr_ROR24(Rd,Rm) CC_SXTB_rr_ROR24(NATIVE_CC_AL,Rd,Rm) #define CC_SXTH_rr(cc,Rd,Rm) _W(((cc) << 28) | (0x6b << 20) | (0xf << 16) | ((Rd) << 12) | (0x7 << 4) | SHIFT_REG(Rm)) #define SXTH_rr(Rd,Rm) CC_SXTH_rr(NATIVE_CC_AL,Rd,Rm) #define CC_SXTH_rr_ROR8(cc,Rd,Rm) _W(((cc) << 28) | (0x6b << 20) | (0xf << 16) | ((Rd) << 12) | (1 << 10) | (0x7 << 4) | SHIFT_REG(Rm)) #define SXTH_rr_ROR8(Rd,Rm) CC_SXTH_rr_ROR8(NATIVE_CC_AL,Rd,Rm) #define CC_SXTH_rr_ROR16(cc,Rd,Rm) _W(((cc) << 28) | (0x6b << 20) | (0xf << 16) | ((Rd) << 12) | (2 << 10) | (0x7 << 4) | SHIFT_REG(Rm)) #define SXTH_rr_ROR16(Rd,Rm) CC_SXTH_rr_ROR16(NATIVE_CC_AL,Rd,Rm) #define CC_SXTH_rr_ROR24(cc,Rd,Rm) _W(((cc) << 28) | (0x6b << 20) | (0xf << 16) | ((Rd) << 12) | (3 << 10) | (0x7 << 4) | SHIFT_REG(Rm)) #define SXTH_rr_ROR24(Rd,Rm) CC_SXTH_rr_ROR24(NATIVE_CC_AL,Rd,Rm) #define CC_UXTB_rr(cc,Rd,Rm) _W(((cc) << 28) | (0x6e << 20) | (0xf << 16) | ((Rd) << 12) | (0x7 << 4) | SHIFT_REG(Rm)) #define UXTB_rr(Rd,Rm) CC_UXTB_rr(NATIVE_CC_AL,Rd,Rm) #define CC_UXTB_rr_ROR8(cc,Rd,Rm) _W(((cc) << 28) | (0x6e << 20) | (0xf << 16) | ((Rd) << 12) | (1 << 10) | (0x7 << 4) | SHIFT_REG(Rm)) #define UXTB_rr_ROR8(Rd,Rm) CC_UXTB_rr_ROR8(NATIVE_CC_AL,Rd,Rm) #define CC_UXTB_rr_ROR16(cc,Rd,Rm) _W(((cc) << 28) | (0x6e << 20) | (0xf << 16) | ((Rd) << 12) | (2 << 10) | (0x7 << 4) | SHIFT_REG(Rm)) #define UXTB_rr_ROR16(Rd,Rm) CC_UXTB_rr_ROR16(NATIVE_CC_AL,Rd,Rm) #define CC_UXTB_rr_ROR24(cc,Rd,Rm) _W(((cc) << 28) | (0x6e << 20) | (0xf << 16) | ((Rd) << 12) | (3 << 10) | (0x7 << 4) | SHIFT_REG(Rm)) #define UXTB_rr_ROR24(Rd,Rm) CC_UXTB_rr_ROR24(NATIVE_CC_AL,Rd,Rm) #define CC_UXTH_rr(cc,Rd,Rm) _W(((cc) << 28) | (0x6f << 20) | (0xf << 16) | ((Rd) << 12) | (0x7 << 4) | SHIFT_REG(Rm)) #define UXTH_rr(Rd,Rm) CC_UXTH_rr(NATIVE_CC_AL,Rd,Rm) #define CC_UXTH_rr_ROR8(cc,Rd,Rm) _W(((cc) << 28) | (0x6f << 20) | (0xf << 16) | ((Rd) << 12) | (1 << 10) | (0x7 << 4) | SHIFT_REG(Rm)) #define UXTH_rr_ROR8(Rd,Rm) CC_UXTH_rr_ROR8(NATIVE_CC_AL,Rd,Rm) #define CC_UXTH_rr_ROR16(cc,Rd,Rm) _W(((cc) << 28) | (0x6f << 20) | (0xf << 16) | ((Rd) << 12) | (2 << 10) | (0x7 << 4) | SHIFT_REG(Rm)) #define UXTH_rr_ROR16(Rd,Rm) CC_UXTH_rr_ROR16(NATIVE_CC_AL,Rd,Rm) #define CC_UXTH_rr_ROR24(cc,Rd,Rm) _W(((cc) << 28) | (0x6f << 20) | (0xf << 16) | ((Rd) << 12) | (3 << 10) | (0x7 << 4) | SHIFT_REG(Rm)) #define UXTH_rr_ROR24(Rd,Rm) CC_UXTH_rr_ROR24(NATIVE_CC_AL,Rd,Rm) #define CC_REV_rr(cc,Rd,Rm) _W(((cc) << 28) | (0x6b << 20) | (0xf << 16) | (0xf << 8) | ((Rd) << 12) | (0x3 << 4) | SHIFT_REG(Rm)) #define REV_rr(Rd,Rm) CC_REV_rr(NATIVE_CC_AL,Rd,Rm) #define CC_REV16_rr(cc,Rd,Rm) _W(((cc) << 28) | (0x6b << 20) | (0xf << 16) | (0xf << 8) | ((Rd) << 12) | (0xB << 4) | SHIFT_REG(Rm)) #define REV16_rr(Rd,Rm) CC_REV16_rr(NATIVE_CC_AL,Rd,Rm) #define CC_REVSH_rr(cc,Rd,Rm) _W(((cc) << 28) | (0x6f << 20) | (0xf << 16) | (0xf << 8) | ((Rd) << 12) | (0xB << 4) | SHIFT_REG(Rm)) #define REVSH_rr(Rd,Rm) CC_REVSH_rr(NATIVE_CC_AL,Rd,Rm) #define CC_PKHBT_rrr(cc,Rd,Rn,Rm) _W(((cc) << 28) | (0x68 << 20) | (Rn << 16) | (Rd << 12) | (0x1 << 4) | (Rm)) #define CC_PKHBT_rrrLSLi(cc,Rd,Rn,Rm,s) _W(((cc) << 28) | (0x68 << 20) | (Rn << 16) | (Rd << 12) | (0x1 << 4) | SHIFT_PK(Rm, s)) #define PKHBT_rrr(Rd,Rn,Rm) CC_PKHBT_rrr(NATIVE_CC_AL,Rd,Rn,Rm) #define PKHBT_rrrLSLi(Rd,Rn,Rm,s) CC_PKHBT_rrrLSLi(NATIVE_CC_AL,Rd,Rn,Rm,s) #define CC_PKHTB_rrrASRi(cc,Rd,Rn,Rm,s) _W(((cc) << 28) | (0x68 << 20) | (Rn << 16) | (Rd << 12) | (0x5 << 4) | SHIFT_PK(Rm, s)) #define PKHTB_rrrASRi(Rd,Rn,Rm,s) CC_PKHTB_rrrASRi(NATIVE_CC_AL,Rd,Rn,Rm,s) #endif /* ARM_RTASM_H */ aranym-1.1.0/src/uae_cpu/compiler/codegen_arm.cpp0000664000175000017500000025254213454637622020205 0ustar joyjoy/* * compiler/codegen_arm.cpp - ARM code generator * * Copyright (c) 2013 Jens Heitmann of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * JIT compiler m68k -> ARM * * Original 68040 JIT compiler for UAE, copyright 2000-2002 Bernd Meyer * Adaptation for Basilisk II and improvements, copyright 2000-2004 Gwenole Beauchesne * Portions related to CPU detection come from linux/arch/i386/kernel/setup.c * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Current state: * - Experimental * - Still optimizable * - Not clock cycle optimized * - as a first step this compiler emulates x86 instruction to be compatible * with gencomp. Better would be a specialized version of gencomp compiling * 68k instructions to ARM compatible instructions. This is a step for the * future * */ #include "flags_arm.h" // Declare the built-in __clear_cache function. extern void __clear_cache (char*, char*); /************************************************************************* * Some basic information about the the target CPU * *************************************************************************/ #define R0_INDEX 0 #define R1_INDEX 1 #define R2_INDEX 2 #define R3_INDEX 3 #define R4_INDEX 4 #define R5_INDEX 5 #define R6_INDEX 6 #define R7_INDEX 7 #define R8_INDEX 8 #define R9_INDEX 9 #define R10_INDEX 10 #define R11_INDEX 11 #define R12_INDEX 12 #define R13_INDEX 13 #define R14_INDEX 14 #define R15_INDEX 15 #define RSP_INDEX 13 #define RLR_INDEX 14 #define RPC_INDEX 15 /* The register in which subroutines return an integer return value */ #define REG_RESULT R0_INDEX /* The registers subroutines take their first and second argument in */ #define REG_PAR1 R0_INDEX #define REG_PAR2 R1_INDEX #define REG_WORK1 R2_INDEX #define REG_WORK2 R3_INDEX //#define REG_DATAPTR R10_INDEX #define REG_PC_PRE R0_INDEX /* The register we use for preloading regs.pc_p */ #define REG_PC_TMP R1_INDEX /* Another register that is not the above */ #define SHIFTCOUNT_NREG R1_INDEX /* Register that can be used for shiftcount. -1 if any reg will do. Normally this can be set to -1 but compemu_support is tied to 1 */ #define MUL_NREG1 R0_INDEX /* %r4 will hold the low 32 bits after a 32x32 mul */ #define MUL_NREG2 R1_INDEX /* %r5 will hold the high 32 bits */ #define STACK_ALIGN 4 #define STACK_OFFSET sizeof(void *) #define STACK_SHADOW_SPACE 0 uae_s8 always_used[]={2,3,-1}; uae_s8 can_byte[]={0,1,4,5,6,7,8,9,10,11,12,-1}; uae_s8 can_word[]={0,1,4,5,6,7,8,9,10,11,12,-1}; uae_u8 call_saved[]={0,0,0,0,1,1,1,1,1,1,1,1,0,1,1,1}; /* This *should* be the same as call_saved. But: - We might not really know which registers are saved, and which aren't, so we need to preserve some, but don't want to rely on everyone else also saving those registers - Special registers (such like the stack pointer) should not be "preserved" by pushing, even though they are "saved" across function calls */ static const uae_u8 need_to_preserve[]={0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0}; static const uae_u32 PRESERVE_MASK = ((1<=-128 && x<=127); } static inline int is8bit(uae_s32 x) { return (x>=-255 && x<=255); } static inline int isword(uae_s32 x) { return (x>=-32768 && x<=32767); } #define jit_unimplemented(fmt, ...) do{ panicbug("**** Unimplemented ****"); panicbug(fmt, ## __VA_ARGS__); abort(); }while (0) #if 0 /* currently unused */ static void jit_fail(const char *msg, const char *file, int line, const char *function) { panicbug("JIT failure in function %s from file %s at line %d: %s", function, file, line, msg); abort(); } #endif LOWFUNC(NONE,WRITE,1,raw_push_l_r,(RR4 r)) { PUSH(r); } LENDFUNC(NONE,WRITE,1,raw_push_l_r,(RR4 r)) LOWFUNC(NONE,READ,1,raw_pop_l_r,(RR4 r)) { POP(r); } LENDFUNC(NONE,READ,1,raw_pop_l_r,(RR4 r)) LOWFUNC(RMW,NONE,2,raw_adc_b,(RW1 d, RR1 s)) { MVN_ri(REG_WORK1, 0); // mvn r2,#0 LSL_rri(REG_WORK2, d, 24); // lsl r3, %[d], #24 ORR_rrrLSRi(REG_WORK2, REG_WORK2, REG_WORK1, 8); // orr r3, r3, r2, lsr #8 LSL_rri(REG_WORK1, s, 24); // lsl r2, %[s], #24 ADCS_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // adcs r3, r3, r2 BIC_rri(d, d, 0xFF); // bic %[d],%[d],#0xFF ORR_rrrLSRi(d, d, REG_WORK2, 24); // orr %[d],%[d], R3 LSR #24 } LENDFUNC(RMW,NONE,2,raw_adc_b,(RW1 d, RR1 s)) LOWFUNC(RMW,NONE,2,raw_adc_w,(RW2 d, RR2 s)) { MVN_ri(REG_WORK1, 0); // mvn r2,#0 LSL_rri(REG_WORK2, d, 16); // lsl r3, %[d], #16 ORR_rrrLSRi(REG_WORK2, REG_WORK2, REG_WORK1, 16); // orr r3, r3, r2, lsr #16 LSL_rri(REG_WORK1, s, 16); // lsl r2, %[s], #16 ADCS_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // adds r3, r3, r2 #ifdef ARMV6_ASSEMBLY PKHTB_rrrASRi(d,d,REG_WORK2,16); #else BIC_rri(d, d, 0xff); // bic %[d],%[d],#0xff BIC_rri(d, d, 0xff00); // bic %[d],%[d],#0xff00 ORR_rrrLSRi(d, d, REG_WORK2, 16); // orr %[d], %[d], r3, lsr #16 #endif } LENDFUNC(RMW,NONE,2,raw_adc_w,(RW2 d, RR2 s)) LOWFUNC(RMW,NONE,2,raw_adc_l,(RW4 d, RR4 s)) { ADCS_rrr(d, d, s); // adcs %[d],%[d],%[s] } LENDFUNC(RMW,NONE,2,raw_adc_l,(RW4 d, RR4 s)) LOWFUNC(WRITE,NONE,2,raw_add_b,(RW1 d, RR1 s)) { LSL_rri(REG_WORK1, s, 24); // lsl r2, %[s], #24 LSL_rri(REG_WORK2, d, 24); // lsl r3, %[d], #24 ADDS_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // adds r3, r3, r2 BIC_rri(d, d, 0xFF); // bic %[d],%[d],#0xFF ORR_rrrLSRi(d, d, REG_WORK2, 24); // orr %[d],%[d], r3 LSR #24 } LENDFUNC(WRITE,NONE,2,raw_add_b,(RW1 d, RR1 s)) LOWFUNC(WRITE,NONE,2,raw_add_w,(RW2 d, RR2 s)) { LSL_rri(REG_WORK1, s, 16); // lsl r2, %[s], #16 LSL_rri(REG_WORK2, d, 16); // lsl r3, %[d], #16 ADDS_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // adds r3, r3, r2 #ifdef ARMV6_ASSEMBLY PKHTB_rrrASRi(d,d,REG_WORK2,16); #else BIC_rri(d, d, 0xff); // bic %[d],%[d],#0xff BIC_rri(d, d, 0xff00); // bic %[d],%[d],#0xff00 ORR_rrrLSRi(d, d, REG_WORK2, 16); // orr r7, r7, r3, LSR #16 #endif } LENDFUNC(WRITE,NONE,2,raw_add_w,(RW2 d, RR2 s)) LOWFUNC(WRITE,NONE,2,raw_add_l,(RW4 d, RR4 s)) { ADDS_rrr(d, d, s); // adds %[d], %[d], %[s] } LENDFUNC(WRITE,NONE,2,raw_add_l,(RW4 d, RR4 s)) LOWFUNC(WRITE,NONE,2,raw_add_w_ri,(RW2 d, IMM i)) { #if defined(USE_DATA_BUFFER) long offs = data_word_offs(i); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldrh r2, [pc, #offs] #else # ifdef ARMV6_ASSEMBLY LDRH_rRI(REG_WORK1, RPC_INDEX, 24); // ldrh r2, [pc, #24] ; # else LDRH_rRI(REG_WORK1, RPC_INDEX, 16); // ldrh r2, [pc, #16] ; # endif #endif LSL_rri(REG_WORK2, d, 16); // lsl r3, %[d], #16 LSL_rri(REG_WORK1, REG_WORK1, 16); // lsl r2, r2, #16 ADDS_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // adds r3, r3, r2 #ifdef ARMV6_ASSEMBLY PKHTB_rrrASRi(d,d,REG_WORK2,16); #else BIC_rri(d, d, 0xff); // bic %[d],%[d],#0xff BIC_rri(d, d, 0xff00); // bic %[d],%[d],#0xff00 ORR_rrrLSRi(d, d, REG_WORK2, 16); // orr %[d],%[d], r3, LSR #16 #endif #if !defined(USE_DATA_BUFFER) B_i(0); // b //: emit_word(i); skip_word(0); //: #endif } LENDFUNC(WRITE,NONE,2,raw_add_w_ri,(RW2 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_add_b_ri,(RW1 d, IMM i)) { LSL_rri(REG_WORK2, d, 24); // lsl r3, %[d], #24 ADDS_rri(REG_WORK2, REG_WORK2, i << 24); // adds r3, r3, #0x12000000 BIC_rri(d, d, 0xFF); // bic %[d],%[d], #0xFF ORR_rrrLSRi(d, d, REG_WORK2, 24); // orr %[d],%[d], r3, lsr #24 } LENDFUNC(WRITE,NONE,2,raw_add_b_ri,(RW1 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_add_l_ri,(RW4 d, IMM i)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(i); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ADDS_rrr(d, d, REG_WORK1); // adds %[d], %[d], r2 #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; ADDS_rrr(d, d, REG_WORK1); // adds %[d], %[d], r2 B_i(0); // b //: emit_long(i); //: #endif } LENDFUNC(WRITE,NONE,2,raw_add_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_and_b,(RW1 d, RR1 s)) { MVN_rrLSLi(REG_WORK1, s, 24); // mvn r2, %[s], lsl #24 MVN_rrLSRi(REG_WORK1, REG_WORK1, 24); // mvn r2, %[s], lsr #24 AND_rrr(d, d, REG_WORK1); // and %[d], %[d], r2 LSLS_rri(REG_WORK1, d, 24); // lsls r2, %[d], #24 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_and_b,(RW1 d, RR1 s)) LOWFUNC(WRITE,NONE,2,raw_and_w,(RW2 d, RR2 s)) { MVN_rrLSLi(REG_WORK1, s, 16); // mvn r2, %[s], lsl #16 MVN_rrLSRi(REG_WORK1, REG_WORK1, 16); // mvn r2, %[s], lsr #16 AND_rrr(d, d, REG_WORK1); // and %[d], %[d], r2 LSLS_rri(REG_WORK1, d, 16); // lsls r2, %[d], #16 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_and_w,(RW2 d, RR2 s)) LOWFUNC(WRITE,NONE,2,raw_and_l,(RW4 d, RR4 s)) { ANDS_rrr(d, d, s); // ands r7, r7, r6 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_and_l,(RW4 d, RR4 s)) LOWFUNC(WRITE,NONE,2,raw_and_l_ri,(RW4 d, IMM i)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(i); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] #else LDR_rRI(REG_WORK1, RPC_INDEX, 16); // ldr r2, [pc, #16] ; #endif ANDS_rrr(d, d, REG_WORK1); // ands %[d], %[d], r2 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 #if !defined(USE_DATA_BUFFER) B_i(0); // b //: emit_long(i); //: #endif } LENDFUNC(WRITE,NONE,2,raw_and_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_bsf_l_rr,(W4 d, RR4 s)) { MOV_rr(REG_WORK1, s); // mov r2,%[s] RSB_rri(REG_WORK2, REG_WORK1, 0); // rsb r3,r2,#0 AND_rrr(REG_WORK1, REG_WORK1, REG_WORK2); // and r2,r2,r3 CLZ_rr(REG_WORK2, REG_WORK1); // clz r3,r2 MOV_ri(d, 32); // mov %[d],#32 SUB_rrr(d, d, REG_WORK2); // sub %[d],%[d],r3 MRS_CPSR(REG_WORK2); // mrs r3,cpsr TEQ_ri(d, 0); // teq %[d],#0 CC_SUBS_rri(NATIVE_CC_NE, d,d,1); // sub %[d],%[d],#1 CC_BIC_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_Z_FLAG); // bic r3,r3,#0x40000000 CC_ORR_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_Z_FLAG); // orr r3,r3,#0x40000000 MSR_CPSR_r(REG_WORK2); // msr cpsr,r3 } LENDFUNC(WRITE,NONE,2,raw_bsf_l_rr,(W4 d, RR4 s)) LOWFUNC(WRITE,NONE,1,raw_bswap_16,(RW2 r)) { #if defined(ARMV6_ASSEMBLY) REVSH_rr(REG_WORK1,r); // revsh r2,%[r] UXTH_rr(REG_WORK1, REG_WORK1); // utxh r2,r2 LSR_rri(r, r, 16); ORR_rrrLSLi(r, REG_WORK1, r, 16); // orr %[r], %[r], r2 #else MOV_rr(REG_WORK1, r); // mov r2, r6 BIC_rri(REG_WORK1, REG_WORK1, 0xff0000); // bic r2, r2, #0xff0000 BIC_rri(REG_WORK1, REG_WORK1, 0xff000000); // bic r2, r2, #0xff000000 EOR_rrr(r, r, REG_WORK1); // eor r6, r6, r2 ORR_rrrLSRi(r, r, REG_WORK1, 8); // orr r6, r6, r2, lsr #8 BIC_rri(REG_WORK1, REG_WORK1, 0xff00); // bic r2, r2, #0xff00 ORR_rrrLSLi(r,r,REG_WORK1, 8); // orr r6, r6, r2, lsl #8 #endif } LENDFUNC(WRITE,NONE,1,raw_bswap_16,(RW2 r)) LOWFUNC(NONE,NONE,1,raw_bswap_32,(RW4 r)) { #if defined(ARMV6_ASSEMBLY) REV_rr(r,r); // rev %[r],%[r] #else EOR_rrrRORi(REG_WORK1, r, r, 16); // eor r2, r6, r6, ror #16 BIC_rri(REG_WORK1, REG_WORK1, 0xff0000); // bic r2, r2, #0xff0000 ROR_rri(r, r, 8); // ror r6, r6, #8 EOR_rrrLSRi(r, r, REG_WORK1, 8); // eor r6, r6, r2, lsr #8 #endif } LENDFUNC(NONE,NONE,1,raw_bswap_32,(RW4 r)) LOWFUNC(WRITE,NONE,2,raw_bt_l_ri,(RR4 r, IMM i)) { int imm = (1 << (i & 0x1f)); MRS_CPSR(REG_WORK2); // mrs r3, CPSR TST_ri(r, imm); // tst r6, #0x1000000 CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); // bic r3, r3, #0x20000000 CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); // orr r3, r3, #0x20000000 MSR_CPSR_r(REG_WORK2); // msr CPSR_fc, r3 } LENDFUNC(WRITE,NONE,2,raw_bt_l_ri,(RR4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_bt_l_rr,(RR4 r, RR4 b)) { AND_rri(REG_WORK2, b, 0x1f); // and r3, r7, #0x1f LSR_rrr(REG_WORK1, r, REG_WORK2); // lsr r2, r6, r3 MRS_CPSR(REG_WORK2); // mrs r3, CPSR TST_ri(REG_WORK1, 1); // tst r2, #1 CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); // orr r3, r3, #0x20000000 CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); // bic r3, r3, #0x20000000 MSR_CPSR_r(REG_WORK2); // msr CPSR_fc, r3 } LENDFUNC(WRITE,NONE,2,raw_bt_l_rr,(RR4 r, RR4 b)) LOWFUNC(WRITE,NONE,2,raw_btc_l_rr,(RW4 r, RR4 b)) { MOV_ri(REG_WORK1, 1); // mov r2, #1 AND_rri(REG_WORK2, b, 0x1f); // and r3, r7, #0x1f LSL_rrr(REG_WORK1, REG_WORK1, REG_WORK2); // lsl r2, r2, r3 MRS_CPSR(REG_WORK2); // mrs r3, CPSR TST_rr(r, REG_WORK1); // tst r6, r2 CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); // orr r3, r3, #0x20000000 CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); // bic r3, r3, #0x20000000 EOR_rrr(r, r, REG_WORK1); // eor r6, r6, r2 MSR_CPSR_r(REG_WORK2); // msr CPSR_fc, r3 } LENDFUNC(WRITE,NONE,2,raw_btc_l_rr,(RW4 r, RR4 b)) LOWFUNC(WRITE,NONE,2,raw_btr_l_rr,(RW4 r, RR4 b)) { MOV_ri(REG_WORK1, 1); // mov r2, #1 AND_rri(REG_WORK2, b, 0x1f); // and r3, r7, #0x1f LSL_rrr(REG_WORK1, REG_WORK1, REG_WORK2); // lsl r2, r2, r3 MRS_CPSR(REG_WORK2); // mrs r3, CPSR TST_rr(r, REG_WORK1); // tst r6, r2 CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); // orr r3, r3, #0x20000000 CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); // bic r3, r3, #0x20000000 BIC_rrr(r, r, REG_WORK1); // bic r6, r6, r2 MSR_CPSR_r(REG_WORK2); // msr CPSR_fc, r3 } LENDFUNC(WRITE,NONE,2,raw_btr_l_rr,(RW4 r, RR4 b)) LOWFUNC(WRITE,NONE,2,raw_bts_l_rr,(RW4 r, RR4 b)) { MOV_ri(REG_WORK1, 1); // mov r2, #1 AND_rri(REG_WORK2, b, 0x1f); // and r3, r7, #0x1f LSL_rrr(REG_WORK1, REG_WORK1, REG_WORK2); // lsl r2, r2, r3 MRS_CPSR(REG_WORK2); // mrs r3, CPSR TST_rr(r, REG_WORK1); // tst r6, r2 CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); // orr r3, r3, #0x20000000 CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); // bic r3, r3, #0x20000000 ORR_rrr(r, r, REG_WORK1); // orr r6, r6, r2 MSR_CPSR_r(REG_WORK2); // msr CPSR_fc, r3 } LENDFUNC(WRITE,NONE,2,raw_bts_l_rr,(RW4 r, RR4 b)) LOWFUNC(READ,NONE,3,raw_cmov_l_rr,(RW4 d, RR4 s, IMM cc)) { switch (cc) { case 9: // LS BEQ_i(0); // beq Z != 0 BCC_i(0); // bcc C == 0 //: MOV_rr(d, s); // mov r7,r6 break; case 8: // HI BEQ_i(1); // beq Z != 0 BCS_i(0); // bcs C != 0 MOV_rr(d, s); // mov r7,#0 break; default: CC_MOV_rr(cc, d, s); // MOVcc R7,#1 break; } //: } LENDFUNC(READ,NONE,3,raw_cmov_l_rr,(RW4 d, RR4 s, IMM cc)) LOWFUNC(WRITE,NONE,2,raw_cmp_b,(RR1 d, RR1 s)) { #if defined(ARMV6_ASSEMBLY) SXTB_rr(REG_WORK1, d); // sxtb r2,%[d] SXTB_rr(REG_WORK2, s); // sxtb r3,%[s] #else LSL_rri(REG_WORK1, d, 24); // lsl r2,r6,#24 LSL_rri(REG_WORK2, s, 24); // lsl r3,r7,#24 #endif CMP_rr(REG_WORK1, REG_WORK2); // cmp r2, r3 MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_cmp_b,(RR1 d, RR1 s)) LOWFUNC(WRITE,NONE,2,raw_cmp_w,(RR2 d, RR2 s)) { #if defined(ARMV6_ASSEMBLY) SXTH_rr(REG_WORK1, d); // sxtb r2,%[d] SXTH_rr(REG_WORK2, s); // sxtb r3,%[s] #else LSL_rri(REG_WORK1, d, 16); // lsl r6, r1, #16 LSL_rri(REG_WORK2, s, 16); // lsl r7, r2, #16 #endif CMP_rr(REG_WORK1, REG_WORK2); // cmp r7, r6, asr #16 MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_cmp_w,(RR2 d, RR2 s)) LOWFUNC(WRITE,NONE,2,raw_cmp_l,(RR4 d, RR4 s)) { CMP_rr(d, s); // cmp r7, r6 MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_cmp_l,(RR4 d, RR4 s)) LOWFUNC(NONE,NONE,2,raw_imul_32_32,(RW4 d, RR4 s)) { SMULL_rrrr(REG_WORK1, REG_WORK2, d, s); // smull r2,r3,r7,r6 MOV_rr(d, REG_WORK1); // mov r7,r2 } LENDFUNC(NONE,NONE,2,raw_imul_32_32,(RW4 d, RR4 s)) LOWFUNC(NONE,NONE,2,raw_imul_64_32,(RW4 d, RW4 s)) { SMULL_rrrr(REG_WORK1, REG_WORK2, d, s); // smull r2,r3,r7,r6 MOV_rr(MUL_NREG1, REG_WORK1); // mov r7,r2 MOV_rr(MUL_NREG2, REG_WORK2); } LENDFUNC(NONE,NONE,2,raw_imul_64_32,(RW4 d, RW4 s)) LOWFUNC(NONE,NONE,3,raw_lea_l_brr,(W4 d, RR4 s, IMM offset)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(offset); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ADD_rrr(d, s, REG_WORK1); // add r7, r6, r2 #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; ADD_rrr(d, s, REG_WORK1); // add r7, r6, r2 B_i(0); // b //: emit_long(offset); //: #endif } LENDFUNC(NONE,NONE,3,raw_lea_l_brr,(W4 d, RR4 s, IMM offset)) LOWFUNC(NONE,NONE,5,raw_lea_l_brr_indexed,(W4 d, RR4 s, RR4 index, IMM factor, IMM offset)) { int shft; switch(factor) { case 1: shft=0; break; case 2: shft=1; break; case 4: shft=2; break; case 8: shft=3; break; default: abort(); } #if defined(USE_DATA_BUFFER) long offs = data_long_offs(offset); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // LDR R2,[PC, #offs] #else LDR_rRI(REG_WORK1, RPC_INDEX, 8); // LDR R2,[PC, #8] #endif ADD_rrr(REG_WORK1, s, REG_WORK1); // ADD R7,R6,R2 ADD_rrrLSLi(d, REG_WORK1, index, shft); // ADD R7,R7,R5,LSL #2 #if !defined(USE_DATA_BUFFER) B_i(0); // B jp emit_long(offset); //; #endif } LENDFUNC(NONE,NONE,5,raw_lea_l_brr_indexed,(W4 d, RR4 s, RR4 index, IMM factor, IMM offset)) LOWFUNC(NONE,NONE,4,raw_lea_l_rr_indexed,(W4 d, RR4 s, RR4 index, IMM factor)) { int shft; switch(factor) { case 1: shft=0; break; case 2: shft=1; break; case 4: shft=2; break; case 8: shft=3; break; default: abort(); } ADD_rrrLSLi(d, s, index, shft); // ADD R7,R6,R5,LSL #2 } LENDFUNC(NONE,NONE,4,raw_lea_l_rr_indexed,(W4 d, RR4 s, RR4 index, IMM factor)) LOWFUNC(NONE,READ,3,raw_mov_b_brR,(W1 d, RR4 s, IMM offset)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(offset); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] #else LDR_rRI(REG_WORK1, RPC_INDEX, 12); // ldr r2, [pc, #12] ; #endif LDRB_rRR(REG_WORK1, REG_WORK1, s); // ldrb r2, [r2, r6] BIC_rri(d, d, 0xff); // bic r7, r7, #0xff ORR_rrr(d, d, REG_WORK1); // orr r7, r7, r2 #if !defined(USE_DATA_BUFFER) B_i(0); // b //: emit_long(offset); //: #endif } LENDFUNC(NONE,READ,3,raw_mov_b_brR,(W1 d, RR4 s, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_b_bRr,(RR4 d, RR1 s, IMM offset)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(offset); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2,[pc, #offs] STRB_rRR(s, d, REG_WORK1); // strb r6,[r7, r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2,[pc,#4] STRB_rRR(s, d, REG_WORK1); // strb r6,[r7, r2] B_i(0); // b //: emit_long(offset); //: #endif } LENDFUNC(NONE,WRITE,3,raw_mov_b_bRr,(RR4 d, RR1 s, IMM offset)) LOWFUNC(NONE,WRITE,2,raw_mov_b_mi,(MEMW d, IMM s)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(d); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; #else LDR_rRI(REG_WORK1, RPC_INDEX, 8); // ldr r2, [pc, #8] ; #endif MOV_ri(REG_WORK2, s & 0xFF); // mov r3, #0x34 STRB_rR(REG_WORK2, REG_WORK1); // strb r3, [r2] #if !defined(USE_DATA_BUFFER) B_i(0); // b //d: emit_long(d); //: #endif } LENDFUNC(NONE,WRITE,2,raw_mov_b_mi,(MEMW d, IMM s)) LOWFUNC(NONE,WRITE,2,raw_mov_b_mr,(IMM d, RR1 s)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(d); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] STRB_rR(s, REG_WORK1); // strb r6, [r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; STRB_rR(s, REG_WORK1); // strb r6, [r2] B_i(0); // b //: emit_long(d); //: #endif } LENDFUNC(NONE,WRITE,2,raw_mov_b_mr,(IMM d, RR1 s)) LOWFUNC(NONE,NONE,2,raw_mov_b_ri,(W1 d, IMM s)) { BIC_rri(d, d, 0xff); // bic %[d], %[d], #0xff ORR_rri(d, d, (s & 0xff)); // orr %[d], %[d], #%[s] } LENDFUNC(NONE,NONE,2,raw_mov_b_ri,(W1 d, IMM s)) LOWFUNC(NONE,READ,2,raw_mov_b_rm,(W1 d, IMM s)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(s); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] #else LDR_rRI(REG_WORK1, RPC_INDEX, 12); // ldr r2, [pc, #12] ; #endif LDRB_rR(REG_WORK2, REG_WORK1); // ldrb r2, [r2] BIC_rri(d, d, 0xff); // bic r7, r7, #0xff ORR_rrr(d, REG_WORK2, d); // orr r7, r2, r7 #if !defined(USE_DATA_BUFFER) B_i(0); // b //: emit_long(s); //: #endif } LENDFUNC(NONE,READ,2,raw_mov_b_rm,(W1 d, IMM s)) LOWFUNC(NONE,NONE,2,raw_mov_b_rr,(W1 d, RR1 s)) { AND_rri(REG_WORK1, s, 0xff); // and r2,r2, #0xff BIC_rri(d, d, 0x0ff); // bic %[d], %[d], #0xff ORR_rrr(d, d, REG_WORK1); // orr %[d], %[d], r2 } LENDFUNC(NONE,NONE,2,raw_mov_b_rr,(W1 d, RR1 s)) LOWFUNC(NONE,READ,3,raw_mov_l_brR,(W4 d, RR4 s, IMM offset)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(offset); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] LDR_rRR(d, REG_WORK1, s); // ldr r7, [r2, r6] #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; LDR_rRR(d, REG_WORK1, s); // ldr r7, [r2, r6] B_i(0); // b emit_long(offset); //: //: #endif } LENDFUNC(NONE,READ,3,raw_mov_l_brR,(W4 d, RR4 s, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_l_bRr,(RR4 d, RR4 s, IMM offset)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(offset); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2,[pc, #offs] STR_rRR(s, d, REG_WORK1); // str R6,[R7, r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2,[pc,#4] ; STR_rRR(s, d, REG_WORK1); // str R6,[R7, r2] B_i(0); // b //: emit_long(offset); //: #endif } LENDFUNC(NONE,WRITE,3,raw_mov_l_bRr,(RR4 d, RR4 s, IMM offset)) LOWFUNC(NONE,WRITE,2,raw_mov_l_mi,(MEMW d, IMM s)) { // TODO: optimize imm #if defined(USE_DATA_BUFFER) data_check_end(8, 12); long offs = data_long_offs(d); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; d offs = data_long_offs(s); LDR_rRI(REG_WORK2, RPC_INDEX, offs); // ldr r3, [pc, #offs] ; s STR_rR(REG_WORK2, REG_WORK1); // str r3, [r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 8); // ldr r2, [pc, #8] ; LDR_rRI(REG_WORK2, RPC_INDEX, 8); // ldr r3, [pc, #8] ; STR_rR(REG_WORK2, REG_WORK1); // str r3, [r2] B_i(1); // b emit_long(d); //: emit_long(s); //: //: #endif } LENDFUNC(NONE,WRITE,2,raw_mov_l_mi,(MEMW d, IMM s)) LOWFUNC(NONE,READ,3,raw_mov_w_brR,(W2 d, RR4 s, IMM offset)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(offset); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] #else # ifdef ARMV6_ASSEMBLY LDR_rRI(REG_WORK1, RPC_INDEX, 8); // ldr r2, [pc, #16] ; # else LDR_rRI(REG_WORK1, RPC_INDEX, 16); // ldr r2, [pc, #16] ; # endif #endif LDRH_rRR(REG_WORK1, REG_WORK1, s); // ldrh r2, [r2, r6] #ifdef ARMV6_ASSEMBLY PKHBT_rrr(d,REG_WORK1,d); #else BIC_rri(d, d, 0xff); // bic r7, r7, #0xff BIC_rri(d, d, 0xff00); // bic r7, r7, #0xff00 ORR_rrr(d, d, REG_WORK1); // orr r7, r7, r2 #endif #if !defined(USE_DATA_BUFFER) B_i(0); // b emit_long(offset); //: //: #endif } LENDFUNC(NONE,READ,3,raw_mov_w_brR,(W2 d, RR4 s, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_w_bRr,(RR4 d, RR2 s, IMM offset)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(offset); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2,[pc, #offs] STRH_rRR(s, d, REG_WORK1); // strh r6,[r7, r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2,[pc,#4] STRH_rRR(s, d, REG_WORK1); // strh r6,[r7, r2] B_i(0); // b //: emit_long(offset); //: #endif } LENDFUNC(NONE,WRITE,3,raw_mov_w_bRr,(RR4 d, RR2 s, IMM offset)) LOWFUNC(NONE,WRITE,2,raw_mov_w_mr,(IMM d, RR2 s)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(d); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc,#offs] STRH_rR(s, REG_WORK1); // strh r3, [r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; STRH_rR(s, REG_WORK1); // strh r3, [r2] B_i(0); // b //: emit_long(d); //: #endif } LENDFUNC(NONE,WRITE,2,raw_mov_w_mr,(IMM d, RR2 s)) LOWFUNC(NONE,NONE,2,raw_mov_w_ri,(W2 d, IMM s)) { #if defined(USE_DATA_BUFFER) long offs = data_word_offs(s); LDR_rRI(REG_WORK2, RPC_INDEX, offs); // ldrh r3, [pc, #offs] #else # ifdef ARMV6_ASSEMBLY LDRH_rRI(REG_WORK2, RPC_INDEX, 12); // ldrh r3, [pc, #12] ; # else LDRH_rRI(REG_WORK2, RPC_INDEX, 4); // ldrh r3, [pc, #12] ; # endif #endif #ifdef ARMV6_ASSEMBLY PKHBT_rrr(d,REG_WORK2,d); #else BIC_rri(REG_WORK1, d, 0xff); // bic r2, r7, #0xff BIC_rri(REG_WORK1, REG_WORK1, 0xff00); // bic r2, r2, #0xff00 ORR_rrr(d, REG_WORK2, REG_WORK1); // orr r7, r3, r2 #endif #if !defined(USE_DATA_BUFFER) B_i(0); // b //: emit_word(s); skip_word(0); //: #endif } LENDFUNC(NONE,NONE,2,raw_mov_w_ri,(W2 d, IMM s)) LOWFUNC(NONE,WRITE,2,raw_mov_w_mi,(MEMW d, IMM s)) { // TODO: optimize imm #if defined(USE_DATA_BUFFER) data_check_end(8, 12); long offs = data_long_offs(d); LDR_rRI(REG_WORK2, RPC_INDEX, offs); // ldr r3, [pc, #offs] ; offs = data_word_offs(s); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; STRH_rR(REG_WORK1, REG_WORK2); // strh r2, [r3] #else LDR_rRI(REG_WORK2, RPC_INDEX, 8); // ldr r3, [pc, #8] ; LDRH_rRI(REG_WORK1, RPC_INDEX, 8); // ldrh r2, [pc, #8] ; STRH_rR(REG_WORK1, REG_WORK2); // strh r2, [r3] B_i(1); // b //mem: emit_long(d); //imm: emit_word(s); skip_word(0); // Alignment //: #endif } LENDFUNC(NONE,WRITE,2,raw_mov_w_mi,(MEMW d, IMM s)) LOWFUNC(NONE,WRITE,2,raw_mov_l_mr,(IMM d, RR4 s)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(d); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] STR_rR(s, REG_WORK1); // str r3, [r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; STR_rR(s, REG_WORK1); // str r3, [r2] B_i(0); // b //: emit_long(d); //: #endif } LENDFUNC(NONE,WRITE,2,raw_mov_l_mr,(IMM d, RR4 s)) LOWFUNC(NONE,WRITE,3,raw_mov_w_Ri,(RR4 d, IMM i, IMM offset)) { Dif(!isbyte(offset)) abort(); #if defined(USE_DATA_BUFFER) long offs = data_word_offs(i); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] #else LDRH_rRI(REG_WORK1, RPC_INDEX, 4); // ldrh r2, [pc, #4] ; #endif if (offset >= 0) STRH_rRI(REG_WORK1, d, offset); // strh r2, [r7, #0x54] else STRH_rRi(REG_WORK1, d, -offset);// strh r2, [r7, #-0x54] #if !defined(USE_DATA_BUFFER) B_i(0); // b //: emit_word(i); skip_word(0); //: #endif } LENDFUNC(NONE,WRITE,3,raw_mov_w_Ri,(RR4 d, IMM i, IMM offset)) LOWFUNC(NONE,READ,2,raw_mov_w_rm,(W2 d, IMM s)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(s); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] #else LDR_rRI(REG_WORK1, RPC_INDEX, 12); // ldr r2, [pc, #12] ; #endif LDRH_rR(REG_WORK1, REG_WORK1); // ldrh r2, [r2] LSR_rri(d, d, 16); // lsr r7, r7, #16 ORR_rrrLSLi(d, REG_WORK1, d, 16); // orr r7, r2, r7, lsl #16 #if !defined(USE_DATA_BUFFER) B_i(0); // b //: emit_long(s); //: #endif } LENDFUNC(NONE,READ,2,raw_mov_w_rm,(W2 d, IMM s)) LOWFUNC(NONE,NONE,2,raw_mov_w_rr,(W2 d, RR2 s)) { LSL_rri(REG_WORK1, s, 16); // lsl r2, r6, #16 ORR_rrrLSRi(d, REG_WORK1, d, 16); // orr r7, r2, r7, lsr #16 ROR_rri(d, d, 16); // ror r7, r7, #16 } LENDFUNC(NONE,NONE,2,raw_mov_w_rr,(W2 d, RR2 s)) LOWFUNC(NONE,READ,3,raw_mov_w_rR,(W2 d, RR4 s, IMM offset)) { Dif(!isbyte(offset)) abort(); if (offset >= 0) LDRH_rRI(REG_WORK1, s, offset); // ldrh r2, [r6, #12] else LDRH_rRi(REG_WORK1, s, -offset); // ldrh r2, [r6, #-12] #ifdef ARMV6_ASSEMBLY PKHBT_rrr(d,REG_WORK1,d); #else BIC_rri(d, d, 0xff); // bic r7, r7, #0xff BIC_rri(d, d, 0xff00); // bic r7, r7, #0xff00 ORR_rrr(d, d, REG_WORK1); // orr r7, r7, r2 #endif } LENDFUNC(NONE,READ,3,raw_mov_w_rR,(W2 d, RR4 s, IMM offset)) LOWFUNC(NONE,WRITE,3,raw_mov_w_Rr,(RR4 d, RR2 s, IMM offset)) { Dif(!isbyte(offset)) abort(); if (offset >= 0) STRH_rRI(s, d, offset); // strh r6, [r7, #0x7f] else STRH_rRi(s, d, -offset);// strh r6, [r7, #-0x7f] } LENDFUNC(NONE,WRITE,3,raw_mov_w_Rr,(RR4 d, RR2 s, IMM offset)) LOWFUNC(NONE,READ,2,raw_mov_l_rm,(W4 d, MEMR s)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(s); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [r10, #offs] LDR_rR(d, REG_WORK1); // ldr r7, [r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; LDR_rR(d, REG_WORK1); // ldr r7, [r2] B_i(0); // b emit_long(s); //: //: #endif } LENDFUNC(NONE,READ,2,raw_mov_l_rm,(W4 d, MEMR s)) LOWFUNC(NONE,READ,4,raw_mov_l_rm_indexed,(W4 d, MEMR base, RR4 index, IMM factor)) { int shft; switch(factor) { case 1: shft=0; break; case 2: shft=1; break; case 4: shft=2; break; case 8: shft=3; break; default: abort(); } #if defined(USE_DATA_BUFFER) long offs = data_long_offs(base); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] LDR_rRR_LSLi(d, REG_WORK1, index, shft); // ldr %[d], [r2, %[index], lsl #[shift]] #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; LDR_rRR_LSLi(d, REG_WORK1, index, shft); // ldr %[d], [r2, %[index], lsl #[shift]] B_i(0); // b emit_long(base); //: //: #endif } LENDFUNC(NONE,READ,4,raw_mov_l_rm_indexed,(W4 d, MEMR base, RR4 index, IMM factor)) LOWFUNC(NONE,WRITE,3,raw_mov_l_Ri,(RR4 d, IMM i, IMM offset8)) { Dif(!isbyte(offset8)) abort(); #if defined(USE_DATA_BUFFER) long offs = data_long_offs(i); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; #endif if (offset8 >= 0) STR_rRI(REG_WORK1, d, offset8); // str r2, [r7, #0x54] else STR_rRi(REG_WORK1, d, -offset8); // str r2, [r7, #-0x54] #if !defined(USE_DATA_BUFFER) B_i(0); // b //: emit_long(i); //: #endif } LENDFUNC(NONE,WRITE,3,raw_mov_l_Ri,(RR4 d, IMM i, IMM offset)) LOWFUNC(NONE,READ,3,raw_mov_l_rR,(W4 d, RR4 s, IMM offset)) { Dif(!isbyte(offset)) abort(); if (offset >= 0) { LDR_rRI(d, s, offset); // ldr r2, [r1, #-12] } else LDR_rRi(d, s, -offset); // ldr r2, [r1, #12] } LENDFUNC(NONE,READ,3,raw_mov_l_rR,(W4 d, RR4 s, IMM offset)) LOWFUNC(NONE,NONE,2,raw_mov_l_rr,(W4 d, RR4 s)) { MOV_rr(d, s); // mov %[d], %[s] } LENDFUNC(NONE,NONE,2,raw_mov_l_rr,(W4 d, RR4 s)) LOWFUNC(NONE,WRITE,3,raw_mov_l_Rr,(RR4 d, RR4 s, IMM offset)) { Dif(!isbyte(offset)) abort(); if (offset >= 0) STR_rRI(s, d, offset); // str r6, [r7, #12] else STR_rRi(s, d, -offset); // str r6, [r7, #-12] } LENDFUNC(NONE,WRITE,3,raw_mov_l_Rr,(RR4 d, RR4 s, IMM offset)) LOWFUNC(NONE,NONE,2,raw_mul_64_32,(RW4 d, RW4 s)) { UMULL_rrrr(REG_WORK1, REG_WORK2, d, s); // umull r2,r3,r7,r6 MOV_rr(MUL_NREG1, REG_WORK1); // mov r7,r2 MOV_rr(MUL_NREG2, REG_WORK2); } LENDFUNC(NONE,NONE,2,raw_mul_64_32,(RW4 d, RW4 s)) LOWFUNC(WRITE,NONE,2,raw_or_b,(RW1 d, RR1 s)) { AND_rri(REG_WORK1, s, 0xFF); // and r2, %[s], 0xFF ORR_rrr(d, d, REG_WORK1); // orr %[d], %[d], r2 LSLS_rri(REG_WORK1, d, 24); // lsls r2, %[d], #24 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_or_b,(RW1 d, RR1 s)) LOWFUNC(WRITE,NONE,2,raw_or_w,(RW2 d, RR2 s)) { #if defined(ARMV6_ASSEMBLY) UXTH_rr(REG_WORK1, s); // UXTH r2, %[s] #else BIC_rri(REG_WORK1, s, 0xff000000); // bic r2, %[s], #0xff000000 BIC_rri(REG_WORK1, REG_WORK1, 0x00ff0000); // bic r2, r2, #0x00ff0000 #endif ORR_rrr(d, d, REG_WORK1); // orr %[d], %[d], r2 LSLS_rri(REG_WORK1, d, 16); // lsls r2, %[d], #16 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_or_w,(RW2 d, RR2 s)) LOWFUNC(WRITE,NONE,2,raw_or_l,(RW4 d, RR4 s)) { ORRS_rrr(d, d, s); // orrs r7, r7, r6 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_or_l,(RW4 d, RR4 s)) LOWFUNC(WRITE,NONE,2,raw_or_l_ri,(RW4 d, IMM i)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(i); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // LDR r2, [pc, #offs] #else LDR_rRI(REG_WORK1, RPC_INDEX, 16); // LDR r2, [pc,#16] ; #endif ORRS_rrr(d, d, REG_WORK1); // ORRS r7,r7,r2 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 #if !defined(USE_DATA_BUFFER) B_i(0); // b // value: emit_long(i); //jp: #endif } LENDFUNC(WRITE,NONE,2,raw_or_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_rol_b_ri,(RW1 r, IMM i)) { // TODO: Check if the Bittest is necessary. compemu.c seems to do it itself, but meanwhile make sure, that carry is set correctly int imm = 32 - (i & 0x1f); MOV_rrLSLi(REG_WORK1, r, 24); // mov r2,r7,lsl #24 ORR_rrrLSRi(REG_WORK1, REG_WORK1, REG_WORK1, 16); // orr r2,r2,r2,lsr #16 ORR_rrrLSRi(REG_WORK1, REG_WORK1, REG_WORK1, 8); // orr r2,r2,r2,lsr #8 RORS_rri(REG_WORK1, REG_WORK1, imm); // rors r2,r2,#(32 - (i & 0x1f)) MRS_CPSR(REG_WORK2); // mrs r3,cpsr TST_ri(REG_WORK1, 1); // tst r2,#1 CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); // orr r3,r3,#0x20000000 CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); // bic r3,r3,#0x20000000 MSR_CPSR_r(REG_WORK2); AND_rri(REG_WORK1, REG_WORK1, 0xff); // and r2,r2,#0xff BIC_rri(r, r, 0xff); // bic r7,r7,#0xff ORR_rrr(r, r, REG_WORK1); // orr r7,r7,r2 } LENDFUNC(WRITE,NONE,2,raw_rol_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_rol_b_rr,(RW1 d, RR1 r)) { // TODO: Check if the Bittest is necessary. compemu.c seems to do it itself, but meanwhile make sure, that carry is set correctly MOV_ri(REG_WORK2, 32); // mov r3,#32 AND_rri(REG_WORK1, r, 0x1f); // and r2,r6,#0x1f SUB_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // sub r3,r3,r2 MOV_rrLSLi(REG_WORK1, d, 24); // mov r2,r7,lsl #24 ORR_rrrLSRi(REG_WORK1, REG_WORK1, REG_WORK1, 16); // orr r2,r2,r2,lsr #16 ORR_rrrLSRi(REG_WORK1, REG_WORK1, REG_WORK1, 8); // orr r2,r2,r2,lsr #8 RORS_rrr(REG_WORK1, REG_WORK1, REG_WORK2); // rors r2,r2,r3 MRS_CPSR(REG_WORK2); // mrs r3,cpsr TST_ri(REG_WORK1, 1); // tst r2,#1 CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); // orr r3,r3,#0x20000000 CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); // bic r3,r3,#0x20000000 MSR_CPSR_r(REG_WORK2); AND_rri(REG_WORK1, REG_WORK1, 0xff); // and r2,r2,#0xff BIC_rri(d, d, 0xff); // bic r7,r7,#0xff ORR_rrr(d, d, REG_WORK1); // orr r7,r7,r2 } LENDFUNC(WRITE,NONE,2,raw_rol_b_rr,(RW1 d, RR1 r)) LOWFUNC(WRITE,NONE,2,raw_rol_w_ri,(RW2 r, IMM i)) { // TODO: Check if the Bittest is necessary. compemu.c seems to do it itself, but meanwhile make sure, that carry is set correctly int imm = 32 - (i & 0x1f); MOV_rrLSLi(REG_WORK1, r, 16); // mov r2,r7,lsl #16 ORR_rrrLSRi(REG_WORK1, REG_WORK1, REG_WORK1, 16); // orr r2,r2,r2,lsr #16 RORS_rri(REG_WORK1, REG_WORK1, imm); // rors r2,r2,#(32 - (i & 0x1f)) MRS_CPSR(REG_WORK2); // mrs r3,cpsr TST_ri(REG_WORK1, 1); // tst r2,#1 CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); // orr r3,r3,#0x20000000 CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); // bic r3,r3,#0x20000000 MSR_CPSR_r(REG_WORK2); BIC_rri(r, r, 0xff00); // bic r2,r2,#0xff00 BIC_rri(r, r, 0xff); // bic r2,r2,#0xff ORR_rrrLSRi(r, r, REG_WORK1, 16); // orr r7,r7,r2,lsr #16 } LENDFUNC(WRITE,NONE,2,raw_rol_w_ri,(RW2 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_rol_w_rr,(RW2 d, RR1 r)) { // TODO: Check if the Bittest is necessary. compemu.c seems to do it itself, but meanwhile make sure, that carry is set correctly MOV_ri(REG_WORK2, 32); // mov r3,#32 AND_rri(REG_WORK1, r, 0x1f); // and r2,r6,#0x1f SUB_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // sub r3,r3,r2 MOV_rrLSLi(REG_WORK1, d, 16); // mov r2,r7,lsl #16 ORR_rrrLSRi(REG_WORK1, REG_WORK1, REG_WORK1, 16); // orr r2,r2,r2,lsr #16 RORS_rrr(REG_WORK1, REG_WORK1, REG_WORK2); // rors r2,r2,r3 MRS_CPSR(REG_WORK2); // mrs r3,cpsr TST_ri(REG_WORK1, 1); // tst r2,#1 CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); // orr r3,r3,#0x20000000 CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); // bic r3,r3,#0x20000000 MSR_CPSR_r(REG_WORK2); BIC_rri(d, d, 0xff00); // bic r2,r2,#0xff00 BIC_rri(d, d, 0xff); // bic r2,r2,#0xff ORR_rrrLSRi(d, d, REG_WORK1, 16); // orr r2,r2,r7,lsr #16 } LENDFUNC(WRITE,NONE,2,raw_rol_w_rr,(RW2 d, RR1 r)) LOWFUNC(WRITE,NONE,2,raw_rol_l_ri,(RW4 r, IMM i)) { // TODO: Check if the Bittest is necessary. compemu.c seems to do it itself, but meanwhile make sure, that carry is set correctly int imm = 32 - (i & 0x1f); RORS_rri(r, r, imm); // rors r7,r7,#(32 - (i & 0x1f)) MRS_CPSR(REG_WORK2); // mrs r3,cpsr TST_ri(r, 1); // tst r7,#1 CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); // orr r3,r3,#0x20000000 CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); // bic r3,r3,#0x20000000 MSR_CPSR_r(REG_WORK2); } LENDFUNC(WRITE,NONE,2,raw_rol_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_ror_l_ri,(RW4 r, IMM i)) { RORS_rri(r, r, i & 0x1F); // RORS r7,r7,#12 } LENDFUNC(WRITE,NONE,2,raw_ror_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_rol_l_rr,(RW4 d, RR1 r)) { // TODO: Check if the Bittest is necessary. compemu.c seems to do it itself, but meanwhile make sure, that carry is set correctly MOV_ri(REG_WORK1, 32); // mov r2,#32 AND_rri(REG_WORK2, r, 0x1f); // and r3,r6,#0x1f SUB_rrr(REG_WORK1, REG_WORK1, REG_WORK2); // sub r2,r2,r3 RORS_rrr(d, d, REG_WORK1); // rors r7,r7,r2 MRS_CPSR(REG_WORK2); // mrs r3,cpsr TST_ri(d, 1); // tst r7,#1 CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); // orr r3,r3,#0x20000000 CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); // bic r3,r3,#0x20000000 MSR_CPSR_r(REG_WORK2); } LENDFUNC(WRITE,NONE,2,raw_rol_l_rr,(RW4 d, RR1 r)) LOWFUNC(WRITE,NONE,2,raw_ror_l_rr,(RW4 d, RR1 r)) { RORS_rrr(d, d, r); // RORS r7,r7,r6 } LENDFUNC(WRITE,NONE,2,raw_ror_l_rr,(RW4 d, RR1 r)) LOWFUNC(WRITE,NONE,2,raw_ror_b_ri,(RW1 r, IMM i)) { MOV_rrLSLi(REG_WORK1, r, 24); // mov r2,r7,lsl #24 ORR_rrrLSRi(REG_WORK1, REG_WORK1, REG_WORK1, 16); // orr r2,r2,r2,lsr #16 ORR_rrrLSRi(REG_WORK1, REG_WORK1, REG_WORK1, 8); // orr r2,r2,r2,lsr #8 RORS_rri(REG_WORK1, REG_WORK1, i & 0x1f); // rors r2,r2,#12 AND_rri(REG_WORK1, REG_WORK1, 0xff); // and r2,r2,#0xff BIC_rri(r, r, 0xff); // bic r7,r7,#0xff ORR_rrr(r, r, REG_WORK1); // orr r7,r7,r2 } LENDFUNC(WRITE,NONE,2,raw_ror_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_ror_b_rr,(RW1 d, RR1 r)) { MOV_rrLSLi(REG_WORK1, d, 24); // mov r2,r7,lsl #24 ORR_rrrLSRi(REG_WORK1, REG_WORK1, REG_WORK1, 16); // orr r2,r2,r2,lsr #16 ORR_rrrLSRi(REG_WORK1, REG_WORK1, REG_WORK1, 8); // orr r2,r2,r2,lsr #8 RORS_rrr(REG_WORK1, REG_WORK1, r); // rors r2,r2,r6 AND_rri(REG_WORK1, REG_WORK1, 0xff); // and r2,r2,#0xff BIC_rri(d, d, 0xff); // bic r7,r7,#0xff ORR_rrr(d, d, REG_WORK1); // orr r7,r7,r2 } LENDFUNC(WRITE,NONE,2,raw_ror_b_rr,(RW1 d, RR1 r)) LOWFUNC(WRITE,NONE,2,raw_ror_w_ri,(RW2 r, IMM i)) { MOV_rrLSLi(REG_WORK1, r, 16); // mov r2,r7,lsl #16 ORR_rrrLSRi(REG_WORK1, REG_WORK1, REG_WORK1, 16); // orr r2,r2,r2,lsr #16 RORS_rri(REG_WORK1, REG_WORK1, i & 0x1f); // RORS r2,r2,#12 BIC_rri(r, r, 0xff00); // bic r7,r7,#0xff00 BIC_rri(r, r, 0xff); // bic r7,r7,#0xff ORR_rrrLSRi(r, r, REG_WORK1, 16); // orr r7,r7,r2,lsr #16 } LENDFUNC(WRITE,NONE,2,raw_ror_w_ri,(RW2 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_ror_w_rr,(RW2 d, RR1 r)) { MOV_rrLSLi(REG_WORK1, d, 16); // mov r2,r7,lsl #16 ORR_rrrLSRi(REG_WORK1, REG_WORK1, REG_WORK1, 16); // orr r2,r2,r2,lsr #16 RORS_rrr(REG_WORK1, REG_WORK1, r); // RORS r2,r2,r6 BIC_rri(d, d, 0xff00); // bic r7,r7,#0xff00 BIC_rri(d, d, 0xff); // bic r7,r7,#0xff ORR_rrrLSRi(d, d, REG_WORK1, 16); // orr r7,r7,r2,lsr #16 } LENDFUNC(WRITE,NONE,2,raw_ror_w_rr,(RW2 d, RR1 r)) LOWFUNC(RMW,NONE,2,raw_sbb_b,(RW1 d, RR1 s)) { MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 LSL_rri(REG_WORK2, d, 24); // lsl r3, %[d], #24 LSL_rri(REG_WORK1, s, 24); // lsl r2, r6, #24 SBCS_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // subs r3, r3, r2 BIC_rri(d, d, 0xFF); ORR_rrrLSRi(d, d, REG_WORK2, 24); // orr r7, r7, r3 MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(RMW,NONE,2,raw_sbb_b,(RW1 d, RR1 s)) LOWFUNC(RMW,NONE,2,raw_sbb_l,(RW4 d, RR4 s)) { MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 SBCS_rrr(d, d, s); // sbcs r7, r7, r6 MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(RMW,NONE,2,raw_sbb_l,(RW4 d, RR4 s)) LOWFUNC(RMW,NONE,2,raw_sbb_w,(RW2 d, RR2 s)) { MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 LSL_rri(REG_WORK2, d, 16); // lsl r3, %[d], #24 LSL_rri(REG_WORK1, s, 16); // lsl r2, r6, #16 SBCS_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // subs r3, r3, r2 BIC_rri(d,d, 0xff); BIC_rri(d,d, 0xff00); ORR_rrrLSRi(d, d, REG_WORK2, 16); // orr r7, r7, r3 MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(RMW,NONE,2,raw_sbb_w,(RW2 d, RR2 s)) LOWFUNC(READ,NONE,2,raw_setcc,(W1 d, IMM cc)) { switch (cc) { case 9: // LS BEQ_i(0); // beq BCC_i(1); // bcs MOV_ri(d, 1); // mov r7,#0 B_i(0); // b //: MOV_ri(d, 0); // mov r7,#1 break; case 8: // HI BEQ_i(2); // beq Z != 0 BCS_i(1); // bcc C = 0 //: MOV_ri(d, 1); // mov r7,#0 B_i(0); // b //: MOV_ri(d, 0); // mov r7,#1 break; default: CC_MOV_ri(cc, d, 1); // MOVcc R7,#1 CC_MOV_ri(cc^1, d, 0); // MOVcc^1 R7,#0 break; } //: } LENDFUNC(READ,NONE,2,raw_setcc,(W1 d, IMM cc)) LOWFUNC(READ,WRITE,2,raw_setcc_m,(MEMW d, IMM cc)) { switch (cc) { case 9: // LS BEQ_i(0); // beq BCC_i(1); // bcs MOV_ri(REG_WORK1, 1); // mov r2,#0 B_i(0); // b //: MOV_ri(REG_WORK1, 0); // mov r2,#1 break; case 8: // HI BEQ_i(2); // beq Z != 0 BCS_i(1); // bcc C = 0 MOV_ri(REG_WORK1, 1); // mov r2,#0 B_i(0); // b //: MOV_ri(REG_WORK1, 0); // mov r2,#1 break; default: CC_MOV_ri(cc, REG_WORK1, 1); // MOVcc R2,#1 CC_MOV_ri(cc^1, REG_WORK1, 0); // MOVcc^1 R2,#0 break; } //: #if defined(USE_DATA_BUFFER) long offs = data_long_offs(d); LDR_rRI(REG_WORK2, RPC_INDEX, offs); // LDR R3,[PC, #offs] #else LDR_rRI(REG_WORK2, RPC_INDEX, 4); // LDR R3,[PC, #4] #endif STRB_rR(REG_WORK1, REG_WORK2); // STRB R2,[R3] #if !defined(USE_DATA_BUFFER) B_i(0); // B emit_long(d); //: #endif } LENDFUNC(READ,WRITE,2,raw_setcc_m,(MEMW d, IMM cc)) LOWFUNC(WRITE,NONE,2,raw_shll_b_ri,(RW1 r, IMM i)) { LSL_rri(REG_WORK1, r, 24); // LSL r2,r7,#24 LSLS_rri(REG_WORK1, REG_WORK1, i & 0x1f); // LSLS r2,r2,#12 BIC_rri(r, r, 0xff); // BIC r7,r7,0xff ORR_rrrLSRi(r, r, REG_WORK1, 24); // ORR r7,r7,r2,lsr #24 } LENDFUNC(WRITE,NONE,2,raw_shll_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shll_b_rr,(RW1 d, RR1 r)) { LSL_rri(REG_WORK1, d, 24); // LSL r2,r7,#24 LSLS_rrr(REG_WORK1, REG_WORK1, r); // LSLS r2,r2,r6 BIC_rri(d, d, 0xff); // BIC r7,r7,#0xff ORR_rrrLSRi(d, d, REG_WORK1, 24); // ORR r7,r7,r2,lsr #24 } LENDFUNC(WRITE,NONE,2,raw_shll_b_rr,(RW1 d, RR1 r)) LOWFUNC(WRITE,NONE,2,raw_shll_l_ri,(RW4 r, IMM i)) { LSLS_rri(r,r, i & 0x1f); // lsls r7,r7,#12 } LENDFUNC(WRITE,NONE,2,raw_shll_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shll_l_rr,(RW4 d, RR1 r)) { LSLS_rrr(d, d, r); } LENDFUNC(WRITE,NONE,2,raw_shll_l_rr,(RW4 d, RR1 r)) LOWFUNC(WRITE,NONE,2,raw_shll_w_ri,(RW2 r, IMM i)) { LSL_rri(REG_WORK1, r, 16); // LSL r2,r7,#16 LSLS_rri(REG_WORK1, REG_WORK1, i&0x1f); // LSLS r2,r2,#12 ORR_rrrLSRi(REG_WORK1, REG_WORK1, r, 16); // ORR r2,r2,r7,lsr #16 ROR_rri(r, REG_WORK1, 16); // ROR r7,r2,#16 } LENDFUNC(WRITE,NONE,2,raw_shll_w_ri,(RW2 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shll_w_rr,(RW2 d, RR1 r)) { LSL_rri(REG_WORK1, d, 16); // LSL r2,r7,#16 LSLS_rrr(REG_WORK1, REG_WORK1, r); // LSLS r2,r2,r6 ORR_rrrLSRi(REG_WORK1, REG_WORK1, d, 16); // ORR r2,r2,r7,lsr #16 ROR_rri(d, REG_WORK1, 16); // ROR r7,r2,#16 } LENDFUNC(WRITE,NONE,2,raw_shll_w_rr,(RW2 d, RR1 r)) LOWFUNC(WRITE,NONE,2,raw_shra_b_ri,(RW1 r, IMM i)) { LSL_rri(REG_WORK1, r, 24); // lsl r2,r7,#24 ASR_rri(REG_WORK1, REG_WORK1, 24); // asr r2,r2,#24 ASRS_rri(REG_WORK1, REG_WORK1, i & 0x1f); // asrs r2,r2,#12 AND_rri(REG_WORK1, REG_WORK1, 0xff); // and r2,r2,#0xff BIC_rri(r,r, 0xff); // bic r7,r7,#0xff ORR_rrr(r,r,REG_WORK1); // orr r7,r7,r2 } LENDFUNC(WRITE,NONE,2,raw_shra_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shra_b_rr,(RW1 d, RR1 r)) { LSL_rri(REG_WORK1, d, 24); // lsl r2,r7,#24 ASR_rri(REG_WORK1, REG_WORK1, 24); // asr r2,r2,#24 ASRS_rrr(REG_WORK1, REG_WORK1, r); // asrs r2,r2,r6 AND_rri(REG_WORK1, REG_WORK1, 0xff); // and r2,r2,#0xff BIC_rri(d,d, 0xff); // bic r7,r7,#0xff ORR_rrr(d,d,REG_WORK1); // orr r7,r7,r2 } LENDFUNC(WRITE,NONE,2,raw_shra_b_rr,(RW1 d, RR1 r)) LOWFUNC(WRITE,NONE,2,raw_shra_w_ri,(RW2 r, IMM i)) { LSL_rri(REG_WORK1, r, 16); // lsl r2,r7,#16 ASR_rri(REG_WORK1, REG_WORK1, 16); // asr r2,r2,#16 ASRS_rri(REG_WORK1, REG_WORK1, i & 0x1f); // asrs r2,r2,#12 #if defined(ARMV6_ASSEMBLY) UXTH_rr(REG_WORK1, REG_WORK1); #else BIC_rri(REG_WORK1, REG_WORK1, 0xff000000); BIC_rri(REG_WORK1, REG_WORK1, 0xff0000); #endif BIC_rri(r,r,0xff00); // bic r7,r7,#0xff00 BIC_rri(r,r,0xff); // bic r7,r7,#0xff ORR_rrr(r,r,REG_WORK1); // orr r7,r7,r2 } LENDFUNC(WRITE,NONE,2,raw_shra_w_ri,(RW2 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shra_w_rr,(RW2 d, RR1 r)) { LSL_rri(REG_WORK1, d, 16); // lsl r2,r7,#16 ASR_rri(REG_WORK1, REG_WORK1, 16); // asr r2,r2,#16 ASRS_rrr(REG_WORK1, REG_WORK1, r); // asrs r2,r2,r6 #if defined(ARMV6_ASSEMBLY) UXTH_rr(REG_WORK1, REG_WORK1); #else BIC_rri(REG_WORK1, REG_WORK1, 0xff000000); // bic r2,r2,#0xff000000 BIC_rri(REG_WORK1, REG_WORK1, 0xff0000); // bic r2,r2,#0xff0000 #endif BIC_rri(d,d, 0xff00); // bic r7,r7,#0xff00 BIC_rri(d,d, 0xff); // bic r7,r7,#0xff ORR_rrr(d,d,REG_WORK1); // orr r7,r7,r2 } LENDFUNC(WRITE,NONE,2,raw_shra_w_rr,(RW2 d, RR1 r)) LOWFUNC(WRITE,NONE,2,raw_shra_l_ri,(RW4 r, IMM i)) { ASRS_rri(r, r, i & 0x1f); // ASRS r7,r7,#12 } LENDFUNC(WRITE,NONE,2,raw_shra_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shra_l_rr,(RW4 d, RR1 r)) { ASRS_rrr(d, d, r); // ASRS r7,r7,r6 } LENDFUNC(WRITE,NONE,2,raw_shra_l_rr,(RW4 d, RR1 r)) LOWFUNC(WRITE,NONE,2,raw_shrl_b_ri,(RW1 r, IMM i)) { AND_rri(REG_WORK1, r, 0xff); // AND r2,r7,#0xFF LSRS_rri(REG_WORK1, REG_WORK1, i & 0x1f); // LSRS r2,r2,r6 BIC_rri(r, r, 0xFF); // BIC r7,r7,#0xff ORR_rrr(r, r, REG_WORK1); // ORR r7,r7,r2 } LENDFUNC(WRITE,NONE,2,raw_shrl_b_ri,(RW1 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shrl_b_rr,(RW1 d, RR1 r)) { AND_rri(REG_WORK1, d, 0xff); // AND r2,r7,#0xFF LSRS_rrr(REG_WORK1, REG_WORK1, r); // LSRS r2,r2,r6 BIC_rri(d, d, 0xFF); // BIC r7,r7,#0xff ORR_rrr(d, d, REG_WORK1); // ORR r7,r7,r2 } LENDFUNC(WRITE,NONE,2,raw_shrl_b_rr,(RW1 d, RR1 r)) LOWFUNC(WRITE,NONE,2,raw_shrl_l_ri,(RW4 r, IMM i)) { LSRS_rri(r, r, i & 0x1f); // LSRS r7,r7,#12 } LENDFUNC(WRITE,NONE,2,raw_shrl_l_ri,(RW4 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shrl_w_ri,(RW2 r, IMM i)) { #if defined(ARMV6_ASSEMBLY) UXTH_rr(REG_WORK1, r); #else BIC_rri(REG_WORK1, r, 0xff0000); // BIC r2,r7,#0xff0000 BIC_rri(REG_WORK1, REG_WORK1, 0xff000000); // BIC r2,r2,#0xff000000 #endif LSRS_rri(REG_WORK1, REG_WORK1, i & 0x1f); // LSRS r2,r2,#12 BIC_rri(r, r, 0xFF); // BIC r7,r7,#0xff BIC_rri(r, r, 0xFF00); // BIC r7,r7,#0xff00 ORR_rrr(r, r, REG_WORK1); // ORR r7,r7,r2 } LENDFUNC(WRITE,NONE,2,raw_shrl_w_ri,(RW2 r, IMM i)) LOWFUNC(WRITE,NONE,2,raw_shrl_w_rr,(RW2 d, RR1 r)) { #if defined(ARMV6_ASSEMBLY) UXTH_rr(REG_WORK1, d); #else BIC_rri(REG_WORK1, d, 0xff0000); // BIC r2,r7,#0xff0000 BIC_rri(REG_WORK1, REG_WORK1, 0xff000000); // BIC r2,r2,#0xff000000 #endif LSRS_rrr(REG_WORK1, REG_WORK1, r); // LSRS r2,r2,r6 BIC_rri(d, d, 0xFF); // BIC r7,r7,#0xff BIC_rri(d, d, 0xFF00); // BIC r7,r7,#0xff00 ORR_rrr(d, d, REG_WORK1); // ORR r7,r7,r2 } LENDFUNC(WRITE,NONE,2,raw_shrl_w_rr,(RW2 d, RR1 r)) LOWFUNC(WRITE,NONE,2,raw_shrl_l_rr,(RW4 d, RR1 r)) { LSRS_rrr(d, d, r); } LENDFUNC(WRITE,NONE,2,raw_shrl_l_rr,(RW4 d, RR1 r)) LOWFUNC(WRITE,NONE,2,raw_sub_b,(RW1 d, RR1 s)) { LSL_rri(REG_WORK1, s, 24); // lsl r2, r6, #24 LSL_rri(REG_WORK2, d, 24); // lsl r3, r7, #24 SUBS_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // subs r3, r3, r2 BIC_rri(d, d, 0xFF); ORR_rrrLSRi(d, d, REG_WORK2, 24); // orr r7, r7, r3 MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_sub_b,(RW1 d, RR1 s)) LOWFUNC(WRITE,NONE,2,raw_sub_b_ri,(RW1 d, IMM i)) { LSL_rri(REG_WORK2, d, 24); // lsl r3, r7, #24 SUBS_rri(REG_WORK2, REG_WORK2, i << 24); // subs r3, r3, #0x12000000 BIC_rri(d, d, 0xFF); // bic r7, r7, #0xFF ORR_rrrLSRi(d, d, REG_WORK2, 24); // orr r7, r7, r3, lsr #24 MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_sub_b_ri,(RW1 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_sub_l,(RW4 d, RR4 s)) { SUBS_rrr(d, d, s); // subs r7, r7, r6 MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_sub_l,(RW4 d, RR4 s)) LOWFUNC(WRITE,NONE,2,raw_sub_l_ri,(RW4 d, IMM i)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(i); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] #else LDR_rRI(REG_WORK1, RPC_INDEX, 16); // ldr r2, [pc, #16] ; #endif SUBS_rrr(d, d, REG_WORK1); // subs r7, r7, r2 MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 #if !defined(USE_DATA_BUFFER) B_i(0); // b //: emit_long(i); //: #endif } LENDFUNC(WRITE,NONE,2,raw_sub_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_sub_w,(RW2 d, RR2 s)) { LSL_rri(REG_WORK1, s, 16); // lsl r2, r6, #16 LSL_rri(REG_WORK2, d, 16); // lsl r3, r7, #16 SUBS_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // subs r3, r3, r2 BIC_rri(d, d, 0xff); BIC_rri(d, d, 0xff00); ORR_rrrLSRi(d, d, REG_WORK2, 16); // orr r7, r7, r3 MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_sub_w,(RW2 d, RR2 s)) LOWFUNC(WRITE,NONE,2,raw_sub_w_ri,(RW2 d, IMM i)) { // TODO: optimize_imm #if defined(USE_DATA_BUFFER) long offs = data_word_offs(i); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; #else LDRH_rRI(REG_WORK1, RPC_INDEX, 36); // ldrh r2, [pc, #36] ; #endif LSL_rri(REG_WORK1, REG_WORK1, 16); // lsl r2, r2, #16 LSL_rri(REG_WORK2, d, 16); // lsl r3, r6, #16 SUBS_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // subs r3, r3, r2 BIC_rri(d, d, 0xff); BIC_rri(d, d, 0xff00); ORR_rrrLSRi(d, d, REG_WORK2, 16); // orr r6, r3, r6, lsr #16 MRS_CPSR(REG_WORK1); // mrs r2, CPSR EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG); // eor r2, r2, #0x20000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 #if !defined(USE_DATA_BUFFER) B_i(0); // b emit_word(i); skip_word(0); //: //: #endif } LENDFUNC(WRITE,NONE,2,raw_sub_w_ri,(RW2 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_test_b_rr,(RR1 d, RR1 s)) { #if defined(ARMV6_ASSEMBLY) SXTB_rr(REG_WORK1, s); SXTB_rr(REG_WORK2, d); #else LSL_rri(REG_WORK1, s, 24); // lsl r2, r6, #24 LSL_rri(REG_WORK2, d, 24); // lsl r3, r7, #24 #endif TST_rr(REG_WORK2, REG_WORK1); // tst r3, r2 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_test_b_rr,(RR1 d, RR1 s)) LOWFUNC(WRITE,NONE,2,raw_test_l_ri,(RR4 d, IMM i)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(i); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] #else LDR_rRI(REG_WORK1, RPC_INDEX, 16); // ldr r2, [pc, #16] ; #endif TST_rr(d, REG_WORK1); // tst r7, r2 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 #if !defined(USE_DATA_BUFFER) B_i(0); // b //: emit_long(i); //: #endif } LENDFUNC(WRITE,NONE,2,raw_test_l_ri,(RR4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_test_l_rr,(RR4 d, RR4 s)) { TST_rr(d, s); // tst r7, r6 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_test_l_rr,(RR4 d, RR4 s)) LOWFUNC(WRITE,NONE,2,raw_test_w_rr,(RR2 d, RR2 s)) { #ifdef ARMV6_ASSEMBLY SXTH_rr(REG_WORK1, s); SXTH_rr(REG_WORK2, d); #else LSL_rri(REG_WORK1, s, 16); // lsl r2, r6, #16 LSL_rri(REG_WORK2, d, 16); // lsl r3, r7, #16 #endif TST_rr(REG_WORK2, REG_WORK1); // tst r3, r2 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_test_w_rr,(RR2 d, RR2 s)) LOWFUNC(WRITE,NONE,2,raw_xor_b,(RW1 d, RR1 s)) { AND_rri(REG_WORK1, s, 0xFF); // and r2, %[s], 0xFF EOR_rrr(d, d, REG_WORK1); // eor %[d], %[d], r2 LSLS_rri(REG_WORK1, d, 24); // lsls r2, %[d], #24 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_xor_b,(RW1 d, RR1 s)) LOWFUNC(WRITE,NONE,2,raw_xor_w,(RW2 d, RR2 s)) { #if defined(ARMV6_ASSEMBLY) UXTH_rr(REG_WORK1, s); // UXTH r2, %[s] #else BIC_rri(REG_WORK1, s, 0xff000000); // bic r2, %[s], #0xff000000 BIC_rri(REG_WORK1, REG_WORK1, 0x00ff0000); // bic r2, r2, #0x00ff0000 #endif EOR_rrr(d, d, REG_WORK1); // eor %[d], %[d], r2 LSLS_rri(REG_WORK1, d, 16); // lsls r2, %[d], #16 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_xor_w,(RW2 d, RR2 s)) LOWFUNC(WRITE,NONE,2,raw_xor_l,(RW4 d, RR4 s)) { EORS_rrr(d, d, s); // eors r7, r7, r6 MRS_CPSR(REG_WORK1); // mrs r2, CPSR BIC_rri(REG_WORK1, REG_WORK1, ARM_CV_FLAGS); // bic r2, r2, #0x30000000 MSR_CPSR_r(REG_WORK1); // msr CPSR_fc, r2 } LENDFUNC(WRITE,NONE,2,raw_xor_l,(RW4 d, RR4 s)) LOWFUNC(NONE,NONE,2,raw_sign_extend_16_rr,(W4 d, RR2 s)) { #if defined(ARMV6_ASSEMBLY) SXTH_rr(d, s); // sxth %[d],%[s] #else LSL_rri(d, s, 16); // lsl r6, r7, #16 ASR_rri(d, d, 16); // asr r6, r6, #16 #endif } LENDFUNC(NONE,NONE,2,raw_sign_extend_16_rr,(W4 d, RR2 s)) LOWFUNC(NONE,NONE,2,raw_sign_extend_8_rr,(W4 d, RR1 s)) { #if defined(ARMV6_ASSEMBLY) SXTB_rr(d, s); // SXTB %[d],%[s] #else ROR_rri(d, s, 8); // ror r6, r7, #8 ASR_rri(d, d, 24); // asr r6, r6, #24 #endif } LENDFUNC(NONE,NONE,2,raw_sign_extend_8_rr,(W4 d, RR1 s)) LOWFUNC(NONE,NONE,2,raw_zero_extend_8_rr,(W4 d, RR1 s)) { #if defined(ARMV6_ASSEMBLY) UXTB_rr(d, s); // UXTB %[d], %[s] #else ROR_rri(d, s, 8); // ror r2, r1, #8 LSR_rri(d, d, 24); // lsr r2, r2, #24 #endif } LENDFUNC(NONE,NONE,2,raw_zero_extend_8_rr,(W4 d, RR1 s)) LOWFUNC(NONE,NONE,2,raw_zero_extend_16_rr,(W4 d, RR2 s)) { #if defined(ARMV6_ASSEMBLY) UXTH_rr(d, s); // UXTH %[d], %[s] #else BIC_rri(d, s, 0xff000000); // bic %[d], %[s], #0xff000000 BIC_rri(d, d, 0x00ff0000); // bic %[d], %[d], #0x00ff0000 #endif } LENDFUNC(NONE,NONE,2,raw_zero_extend_16_rr,(W4 d, RR2 s)) static inline void raw_dec_sp(int off) { if (off) { LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; SUB_rrr(RSP_INDEX, RSP_INDEX, REG_WORK1); // sub r7, r7, r2 B_i(0); // b //: emit_long(off); } } static inline void raw_inc_sp(int off) { if (off) { LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; ADD_rrr(RSP_INDEX, RSP_INDEX, REG_WORK1); // sub r7, r7, r2 B_i(0); // b //: emit_long(off); } } static inline void raw_push_regs_to_preserve(void) { PUSH_REGS(PRESERVE_MASK); } static inline void raw_pop_preserved_regs(void) { POP_REGS(PRESERVE_MASK); } // Verify!!! /* FLAGX is byte sized, and we *do* write it at that size */ static inline void raw_load_flagx(uae_u32 t, uae_u32 r) { raw_mov_l_rm(t,(uintptr)live.state[r].mem); } static inline void raw_flags_evicted(int r) { //live.state[FLAGTMP].status=CLEAN; live.state[FLAGTMP].status=INMEM; live.state[FLAGTMP].realreg=-1; /* We just "evicted" FLAGTMP. */ if (live.nat[r].nholds!=1) { /* Huh? */ abort(); } live.nat[r].nholds=0; } static inline void raw_flags_init(void) { } static __inline__ void raw_flags_set_zero(int s, int tmp) { raw_mov_l_rr(tmp,s); MRS_CPSR(s); BIC_rri(s,s,ARM_Z_FLAG); AND_rri(tmp,tmp,ARM_Z_FLAG); EOR_rri(tmp,tmp,ARM_Z_FLAG); ORR_rrr(s,s,tmp); MSR_CPSR_r(s); } static inline void raw_flags_to_reg(int r) { MRS_CPSR(r); raw_mov_l_mr((uintptr)live.state[FLAGTMP].mem,r); raw_flags_evicted(r); } static inline void raw_reg_to_flags(int r) { MSR_CPSR_r(r); // msr CPSR_fc, %r } /* Apparently, there are enough instructions between flag store and flag reload to avoid the partial memory stall */ static inline void raw_load_flagreg(uae_u32 t, uae_u32 r) { raw_mov_l_rm(t,(uintptr)live.state[r].mem); } /* %eax register is clobbered if target processor doesn't support fucomi */ #define FFLAG_NREG_CLOBBER_CONDITION !have_cmov #define FFLAG_NREG R0_INDEX #define FLAG_NREG2 -1 #define FLAG_NREG1 -1 #define FLAG_NREG3 -1 static inline void raw_fflags_into_flags(int r) { jit_unimplemented("raw_fflags_into_flags %x", r); } static inline void raw_fp_init(void) { int i; for (i=0;i=1) { // emit_byte(0xde); // emit_byte(0xd9); live.tos-=2; } while (live.tos>=0) { // emit_byte(0xdd); // emit_byte(0xd8); live.tos--; } raw_fp_init(); } LOWFUNC(NONE,WRITE,2,raw_fmov_mr_drop,(MEMW m, FR r)) { jit_unimplemented("raw_fmov_mr_drop %x %x", m, r); } LENDFUNC(NONE,WRITE,2,raw_fmov_mr_drop,(MEMW m, FR r)) LOWFUNC(NONE,WRITE,2,raw_fmov_mr,(MEMW m, FR r)) { jit_unimplemented("raw_fmov_mr %x %x", m, r); } LENDFUNC(NONE,WRITE,2,raw_fmov_mr,(MEMW m, FR r)) LOWFUNC(NONE,READ,2,raw_fmov_rm,(FW r, MEMR m)) { jit_unimplemented("raw_fmov_rm %x %x", r, m); } LENDFUNC(NONE,READ,2,raw_fmov_rm,(FW r, MEMR m)) LOWFUNC(NONE,NONE,2,raw_fmov_rr,(FW d, FR s)) { jit_unimplemented("raw_fmov_rr %x %x", d, s); } LENDFUNC(NONE,NONE,2,raw_fmov_rr,(FW d, FR s)) static inline void raw_emit_nop_filler(int nbytes) { nbytes >>= 2; while(nbytes--) { NOP(); } } static inline void raw_emit_nop(void) { NOP(); } #ifdef UAE static #endif void compiler_status() { jit_log("compiled code starts at %p, current at %p (size 0x%x)", compiled_code, current_compile_p, (unsigned int)(current_compile_p - compiled_code)); } // // ARM doesn't have bsf, but clz is a good alternative instruction for it // static bool target_check_bsf(void) { return false; } static void raw_init_cpu(void) { /* Have CMOV support, because ARM support conditions for all instructions */ have_cmov = true; align_loops = 0; align_jumps = 0; raw_flags_init(); } // // Arm instructions // LOWFUNC(WRITE,NONE,2,raw_ADD_l_rr,(RW4 d, RR4 s)) { ADD_rrr(d, d, s); } LENDFUNC(WRITE,NONE,2,raw_ADD_l_rr,(RW4 d, RR4 s)) LOWFUNC(WRITE,NONE,2,raw_ADD_l_rri,(RW4 d, RR4 s, IMM i)) { ADD_rri(d, s, i); } LENDFUNC(WRITE,NONE,2,raw_ADD_l_rri,(RW4 d, RR4 s, IMM i)) LOWFUNC(WRITE,NONE,2,raw_SUB_l_rri,(RW4 d, RR4 s, IMM i)) { SUB_rri(d, s, i); } LENDFUNC(WRITE,NONE,2,raw_SUB_l_rri,(RW4 d, RR4 s, IMM i)) LOWFUNC(WRITE,NONE,2,raw_AND_b_rr,(RW1 d, RR1 s)) { MVN_rrLSLi(REG_WORK1, s, 24); // mvn r2, %[s], lsl #24 MVN_rrLSRi(REG_WORK1, REG_WORK1, 24); // mvn r2, %[s], lsr #24 AND_rrr(d, d, REG_WORK1); // and %[d], %[d], r2 } LENDFUNC(WRITE,NONE,2,raw_AND_b_rr,(RW1 d, RR1 s)) LOWFUNC(WRITE,NONE,2,raw_AND_l_rr,(RW4 d, RR4 s)) { AND_rrr(d, d, s); } LENDFUNC(WRITE,NONE,2,raw_AND_l_rr,(RW4 d, RR4 s)) LOWFUNC(WRITE,NONE,2,raw_AND_l_ri,(RW4 d, IMM i)) { AND_rri(d, d, i); } LENDFUNC(WRITE,NONE,2,raw_AND_l_ri,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_AND_w_rr,(RW2 d, RR2 s)) { MVN_rrLSLi(REG_WORK1, s, 16); // mvn r2, %[s], lsl #16 MVN_rrLSRi(REG_WORK1, REG_WORK1, 16); // mvn r2, %[s], lsr #16 AND_rrr(d, d, REG_WORK1); // and %[d], %[d], r2 } LENDFUNC(WRITE,NONE,2,raw_AND_w_rr,(RW2 d, RR2 s)) LOWFUNC(WRITE,NONE,2,raw_EOR_b_rr,(RW1 d, RR1 s)) { #if defined(ARMV6_ASSEMBLY) UXTB_rr(REG_WORK1, s); // UXTH r2, %[s] #else AND_rri(REG_WORK1, s, 0xFF); // and r2, %[s], 0xFF #endif EOR_rrr(d, d, REG_WORK1); // eor %[d], %[d], r2 } LENDFUNC(WRITE,NONE,2,raw_EOR_b_rr,(RW1 d, RR1 s)) LOWFUNC(WRITE,NONE,2,raw_EOR_l_rr,(RW4 d, RR4 s)) { EOR_rrr(d, d, s); // eors r7, r7, r6 } LENDFUNC(WRITE,NONE,2,raw_EOR_l_rr,(RW4 d, RR4 s)) LOWFUNC(WRITE,NONE,2,raw_EOR_w_rr,(RW2 d, RR2 s)) { #if defined(ARMV6_ASSEMBLY) UXTH_rr(REG_WORK1, s); // UXTH r2, %[s] EOR_rrr(d, d, REG_WORK1); // eor %[d], %[d], r2 #else LSL_rri(REG_WORK1, s, 16); // bic r2, %[s], #0xff000000 EOR_rrrLSRi(d, d, REG_WORK1, 16); // orr %[d], %[d], r2 #endif } LENDFUNC(WRITE,NONE,2,raw_EOR_w_rr,(RW2 d, RR2 s)) LOWFUNC(WRITE,NONE,2,raw_LDR_l_ri,(RW4 d, IMM i)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(i); LDR_rRI(d, RPC_INDEX, offs); // ldr r2, [pc, #offs] #else LDR_rR(d, RPC_INDEX); B_i(0); emit_long(i); #endif } LENDFUNC(WRITE,NONE,2,raw_LDR_l_rr,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_MOV_l_ri8,(RW4 d, IMM i)) { MOV_ri(d, i); } LENDFUNC(WRITE,NONE,2,raw_MOV_l_ri8,(RW4 d, IMM i)) LOWFUNC(WRITE,NONE,2,raw_ORR_b_rr,(RW1 d, RR1 s)) { #if defined(ARMV6_ASSEMBLY) UXTB_rr(REG_WORK1, s); // UXTH r2, %[s] #else AND_rri(REG_WORK1, s, 0xFF); // and r2, %[s], 0xFF #endif ORR_rrr(d, d, REG_WORK1); // orr %[d], %[d], r2 } LENDFUNC(WRITE,NONE,2,raw_ORR_b_rr,(RW1 d, RR1 s)) LOWFUNC(WRITE,NONE,2,raw_ORR_l_rr,(RW4 d, RR4 s)) { ORR_rrr(d, d, s); } LENDFUNC(WRITE,NONE,2,raw_ORR_l_rr,(RW4 d, RR4 s)) LOWFUNC(WRITE,NONE,2,raw_ORR_w_rr,(RW2 d, RR2 s)) { #if defined(ARMV6_ASSEMBLY) UXTH_rr(REG_WORK1, s); // UXTH r2, %[s] ORR_rrr(d, d, REG_WORK1); // orr %[d], %[d], r2 #else LSL_rri(REG_WORK1, s, 16); // bic r2, %[s], #0xff000000 ORR_rrrLSRi(d, d, REG_WORK1, 16); // orr %[d], %[d], r2 #endif } LENDFUNC(WRITE,NONE,2,raw_ORR_w_rr,(RW2 d, RR2 s)) LOWFUNC(WRITE,NONE,2,raw_ROR_l_ri,(RW4 r, IMM i)) { ROR_rri(r, r, i); } LENDFUNC(WRITE,NONE,2,raw_ROR_l_ri,(RW4 r, IMM i)) // // compuemu_support used raw calls // LOWFUNC(WRITE,RMW,2,compemu_raw_add_l_mi,(IMM d, IMM s)) { #if defined(USE_DATA_BUFFER) data_check_end(8, 24); long target = data_long(d, 24); long offs = get_data_offset(target); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; d LDR_rR(REG_WORK2, REG_WORK1); // ldr r3, [r2] offs = data_long_offs(s); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; s ADD_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // adds r3, r3, r2 offs = get_data_offset(target); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; d STR_rR(REG_WORK2, REG_WORK1); // str r3, [r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 20); // ldr r2, [pc, #20] ; LDR_rR(REG_WORK2, REG_WORK1); // ldr r3, [r2] LDR_rRI(REG_WORK1, RPC_INDEX, 16); // ldr r2, [pc, #16] ; ADD_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // adds r3, r3, r2 LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; STR_rR(REG_WORK2, REG_WORK1); // str r3, [r2] B_i(1); // b //: emit_long(d); //: emit_long(s); //: #endif } LENDFUNC(WRITE,RMW,2,compemu_raw_add_l_mi,(IMM d, IMM s)) LOWFUNC(WRITE,NONE,2,compemu_raw_and_l_ri,(RW4 d, IMM i)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(i); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; AND_rrr(d, d, REG_WORK1); // ands %[d], %[d], r2 #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #16] ; AND_rrr(d, d, REG_WORK1); // ands %[d], %[d], r2 B_i(0); emit_long(i); #endif } LENDFUNC(WRITE,NONE,2,compemu_raw_and_l_ri,(RW4 d, IMM i)) LOWFUNC(NONE,NONE,1,compemu_raw_bswap_32,(RW4 r)) { #if defined(ARMV6_ASSEMBLY) REV_rr(r,r); // rev %[r],%[r] #else EOR_rrrRORi(REG_WORK1, r, r, 16); // eor r2, r6, r6, ror #16 BIC_rri(REG_WORK1, REG_WORK1, 0xff0000); // bic r2, r2, #0xff0000 ROR_rri(r, r, 8); // ror r6, r6, #8 EOR_rrrLSRi(r, r, REG_WORK1, 8); // eor r6, r6, r2, lsr #8 #endif } LENDFUNC(NONE,NONE,1,compemu_raw_bswap_32,(RW4 r)) LOWFUNC(WRITE,NONE,2,compemu_raw_bt_l_ri,(RR4 r, IMM i)) { int imm = (1 << (i & 0x1f)); MRS_CPSR(REG_WORK2); // mrs r3, CPSR TST_ri(r, imm); // tst r6, #0x1000000 CC_BIC_rri(NATIVE_CC_EQ, REG_WORK2, REG_WORK2, ARM_C_FLAG); // bic r3, r3, #0x20000000 CC_ORR_rri(NATIVE_CC_NE, REG_WORK2, REG_WORK2, ARM_C_FLAG); // orr r3, r3, #0x20000000 MSR_CPSR_r(REG_WORK2); // msr CPSR_fc, r3 } LENDFUNC(WRITE,NONE,2,compemu_raw_bt_l_ri,(RR4 r, IMM i)) LOWFUNC(NONE,READ,5,compemu_raw_cmov_l_rm_indexed,(W4 d, IMM base, RR4 index, IMM factor, IMM cond)) { int shft; switch(factor) { case 1: shft=0; break; case 2: shft=1; break; case 4: shft=2; break; case 8: shft=3; break; default: abort(); } switch (cond) { case 9: // LS jit_unimplemented("cmov LS not implemented"); abort(); case 8: // HI jit_unimplemented("cmov HI not implemented"); abort(); default: #if defined(USE_DATA_BUFFER) long offs = data_long_offs(base); CC_LDR_rRI(cond, REG_WORK1, RPC_INDEX, offs); // ldrcc r2, [pc, #offs] ; CC_LDR_rRR_LSLi(cond, d, REG_WORK1, index, shft); // ldrcc %[d], [r2, %[index], lsl #[shift]] #else CC_LDR_rRI(cond, REG_WORK1, RPC_INDEX, 4); // ldrcc r2, [pc, #4] ; CC_LDR_rRR_LSLi(cond, d, REG_WORK1, index, shft); // ldrcc %[d], [r2, %[index], lsl #[shift]] B_i(0); // b #endif break; } #if !defined(USE_DATA_BUFFER) emit_long(base); // : //: #endif } LENDFUNC(NONE,READ,5,compemu_raw_cmov_l_rm_indexed,(W4 d, IMM base, RR4 index, IMM factor, IMM cond)) LOWFUNC(WRITE,READ,2,compemu_raw_cmp_l_mi,(MEMR d, IMM s)) { #if defined(USE_DATA_BUFFER) data_check_end(8, 16); long offs = data_long_offs(d); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; d LDR_rR(REG_WORK1, REG_WORK1); // ldr r2, [r2] offs = data_long_offs(s); LDR_rRI(REG_WORK2, RPC_INDEX, offs); // ldr r3, [pc, #offs] ; s CMP_rr(REG_WORK1, REG_WORK2); // cmp r2, r3 #else LDR_rRI(REG_WORK1, RPC_INDEX, 12); // ldr r2, [pc, #24] ; LDR_rR(REG_WORK1, REG_WORK1); // ldr r2, [r2] LDR_rRI(REG_WORK2, RPC_INDEX, 8); // ldr r3, [pc, #20] ; CMP_rr(REG_WORK1, REG_WORK2); // cmp r2, r3 B_i(1); // b //: emit_long(d); //: emit_long(s); //: #endif } LENDFUNC(WRITE,READ,2,compemu_raw_cmp_l_mi,(MEMR d, IMM s)) LOWFUNC(WRITE,READ,2,compemu_raw_cmp_l_mi8,(MEMR d, IMM s)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(d); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; #else LDR_rRI(REG_WORK1, RPC_INDEX, 8); // ldr r2, [pc, #8] ; #endif LDR_rR(REG_WORK1, REG_WORK1); // ldr r2, [r2] CMP_ri(REG_WORK1, s); // cmp r2, r3 #if !defined(USE_DATA_BUFFER) B_i(0); // b //: emit_long(d); //: #endif } LENDFUNC(WRITE,READ,2,compemu_raw_cmp_l_mi8,(MEMR d, IMM s)) LOWFUNC(NONE,NONE,3,compemu_raw_lea_l_brr,(W4 d, RR4 s, IMM offset)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(offset); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; ADD_rrr(d, s, REG_WORK1); // add r7, r6, r2 #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; ADD_rrr(d, s, REG_WORK1); // add r7, r6, r2 B_i(0); // b //: emit_long(offset); //: #endif } LENDFUNC(NONE,NONE,3,compemu_raw_lea_l_brr,(W4 d, RR4 s, IMM offset)) LOWFUNC(NONE,NONE,4,compemu_raw_lea_l_rr_indexed,(W4 d, RR4 s, RR4 index, IMM factor)) { int shft; switch(factor) { case 1: shft=0; break; case 2: shft=1; break; case 4: shft=2; break; case 8: shft=3; break; default: abort(); } ADD_rrrLSLi(d, s, index, shft); // ADD R7,R6,R5,LSL #2 } LENDFUNC(NONE,NONE,4,compemu_raw_lea_l_rr_indexed,(W4 d, RR4 s, RR4 index, IMM factor)) LOWFUNC(NONE,WRITE,2,compemu_raw_mov_b_mr,(IMM d, RR1 s)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(d); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; STRB_rR(s, REG_WORK1); // strb r6, [r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; STRB_rR(s, REG_WORK1); // strb r6, [r2] B_i(0); // b //: emit_long(d); //: #endif } LENDFUNC(NONE,WRITE,2,compemu_raw_mov_b_mr,(IMM d, RR1 s)) LOWFUNC(NONE,WRITE,2,compemu_raw_mov_l_mi,(MEMW d, IMM s)) { // TODO: optimize imm #if defined(USE_DATA_BUFFER) data_check_end(8, 12); long offs = data_long_offs(d); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; d offs = data_long_offs(s); LDR_rRI(REG_WORK2, RPC_INDEX, offs); // ldr r3, [pc, #offs] ; s STR_rR(REG_WORK2, REG_WORK1); // str r3, [r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 8); // ldr r2, [pc, #8] ; LDR_rRI(REG_WORK2, RPC_INDEX, 8); // ldr r3, [pc, #8] ; STR_rR(REG_WORK2, REG_WORK1); // str r3, [r2] B_i(1); // b emit_long(d); //: emit_long(s); //: //: #endif } LENDFUNC(NONE,WRITE,2,compemu_raw_mov_l_mi,(MEMW d, IMM s)) LOWFUNC(NONE,WRITE,2,compemu_raw_mov_l_mr,(IMM d, RR4 s)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(d); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; STR_rR(s, REG_WORK1); // str r3, [r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; STR_rR(s, REG_WORK1); // str r3, [r2] B_i(0); // b //: emit_long(d); //: #endif } LENDFUNC(NONE,WRITE,2,compemu_raw_mov_l_mr,(IMM d, RR4 s)) LOWFUNC(NONE,NONE,2,compemu_raw_mov_l_ri,(W4 d, IMM s)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(s); LDR_rRI(d, RPC_INDEX, offs); // ldr %[d], [pc, #offs] ; #else LDR_rR(d, RPC_INDEX); // ldr %[d], [pc] ; B_i(0); // b //: emit_long(s); //: #endif } LENDFUNC(NONE,NONE,2,compemu_raw_mov_l_ri,(W4 d, IMM s)) LOWFUNC(NONE,READ,2,compemu_raw_mov_l_rm,(W4 d, MEMR s)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(s); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; LDR_rR(d, REG_WORK1); // ldr r7, [r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; LDR_rR(d, REG_WORK1); // ldr r7, [r2] B_i(0); // b emit_long(s); //: //: #endif } LENDFUNC(NONE,READ,2,compemu_raw_mov_l_rm,(W4 d, MEMR s)) LOWFUNC(NONE,NONE,2,compemu_raw_mov_l_rr,(W4 d, RR4 s)) { MOV_rr(d, s); // mov %[d], %[s] } LENDFUNC(NONE,NONE,2,compemu_raw_mov_l_rr,(W4 d, RR4 s)) LOWFUNC(NONE,WRITE,2,compemu_raw_mov_w_mr,(IMM d, RR2 s)) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(d); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; STRH_rR(s, REG_WORK1); // strh r3, [r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #4] ; STRH_rR(s, REG_WORK1); // strh r3, [r2] B_i(0); // b //: emit_long(d); //: #endif } LENDFUNC(NONE,WRITE,2,compemu_raw_mov_w_mr,(IMM d, RR2 s)) LOWFUNC(WRITE,RMW,2,compemu_raw_sub_l_mi,(MEMRW d, IMM s)) { #if defined(USE_DATA_BUFFER) data_check_end(8, 24); long target = data_long(d, 24); long offs = get_data_offset(target); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; d LDR_rR(REG_WORK2, REG_WORK1); // ldr r3, [r2] offs = data_long_offs(s); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; s SUBS_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // subs r3, r3, r2 offs = get_data_offset(target); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; d STR_rR(REG_WORK2, REG_WORK1); // str r3, [r2] #else LDR_rRI(REG_WORK1, RPC_INDEX, 20); // ldr r2, [pc, #32] ; LDR_rR(REG_WORK2, REG_WORK1); // ldr r3, [r2] LDR_rRI(REG_WORK1, RPC_INDEX, 16); // ldr r2, [pc, #28] ; SUBS_rrr(REG_WORK2, REG_WORK2, REG_WORK1); // subs r3, r3, r2 LDR_rRI(REG_WORK1, RPC_INDEX, 4); // ldr r2, [pc, #16] ; STR_rR(REG_WORK2, REG_WORK1); // str r3, [r2] B_i(1); // b //: emit_long(d); //: emit_long(s); //: #endif } LENDFUNC(WRITE,RMW,2,compemu_raw_sub_l_mi,(MEMRW d, IMM s)) LOWFUNC(WRITE,NONE,2,compemu_raw_test_l_rr,(RR4 d, RR4 s)) { TST_rr(d, s); // tst r7, r6 } LENDFUNC(WRITE,NONE,2,compemu_raw_test_l_rr,(RR4 d, RR4 s)) LOWFUNC(NONE,NONE,2,compemu_raw_zero_extend_16_rr,(W4 d, RR2 s)) { #if defined(ARMV6_ASSEMBLY) UXTH_rr(d, s); // UXTH %[d], %[s] #else BIC_rri(d, s, 0xff000000); // bic %[d], %[s], #0xff000000 BIC_rri(d, d, 0x00ff0000); // bic %[d], %[d], #0x00ff0000 #endif } LENDFUNC(NONE,NONE,2,compemu_raw_zero_extend_16_rr,(W4 d, RR2 s)) static inline void compemu_raw_call(uae_u32 t) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(t); LDR_rRI(REG_WORK1, RPC_INDEX, offs); // ldr r2, [pc, #offs] ; #else LDR_rRI(REG_WORK1, RPC_INDEX, 12); // ldr r2, [pc, #12] ; #endif PUSH(RLR_INDEX); // push {lr} BLX_r(REG_WORK1); // blx r2 POP(RLR_INDEX); // pop {lr} #if !defined(USE_DATA_BUFFER) B_i(0); // b //: emit_long(t); //: #endif } static inline void compemu_raw_call_r(RR4 r) { PUSH(RLR_INDEX); // push {lr} BLX_r(r); // blx r0 POP(RLR_INDEX); // pop {lr} } static inline void compemu_raw_jcc_l_oponly(int cc) { switch (cc) { case 9: // LS BEQ_i(0); // beq BCC_i(2); // bcc //: LDR_rR(REG_WORK1, RPC_INDEX); // ldr r2, [pc] ; BX_r(REG_WORK1); // bx r2 break; case 8: // HI BEQ_i(3); // beq BCS_i(2); // bcs //: LDR_rR(REG_WORK1, RPC_INDEX); // ldr r2, [pc] ; BX_r(REG_WORK1); // bx r2 break; default: CC_LDR_rRI(cc, REG_WORK1, RPC_INDEX, 4); // ldrlt r2, [pc, #4] ; CC_BX_r(cc, REG_WORK1); // bxlt r2 B_i(0); // b break; } // emit of target will be done by caller } static inline void compemu_raw_jl(uae_u32 t) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(t); CC_LDR_rRI(NATIVE_CC_LT, RPC_INDEX, RPC_INDEX, offs); // ldrlt pc, [pc, offs] #else CC_LDR_rR(NATIVE_CC_LT, RPC_INDEX, RPC_INDEX); // ldrlt pc, [pc] B_i(0); // b //: emit_long(t); //: #endif } static inline void compemu_raw_jmp(uae_u32 t) { LDR_rR(REG_WORK1, RPC_INDEX); // ldr r2, [pc] BX_r(REG_WORK1); // bx r2 emit_long(t); } static inline void compemu_raw_jmp_m_indexed(uae_u32 base, uae_u32 r, uae_u32 m) { int shft; switch(m) { case 1: shft=0; break; case 2: shft=1; break; case 4: shft=2; break; case 8: shft=3; break; default: abort(); } LDR_rR(REG_WORK1, RPC_INDEX); // ldr r2, [pc] ; LDR_rRR_LSLi(RPC_INDEX, REG_WORK1, r, shft); // ldr pc, [r2, r6, lsl #3] emit_long(base); } static inline void compemu_raw_jmp_r(RR4 r) { BX_r(r); } static inline void compemu_raw_jnz(uae_u32 t) { #if defined(USE_DATA_BUFFER) long offs = data_long_offs(t); CC_LDR_rRI(NATIVE_CC_NE, RPC_INDEX, RPC_INDEX, offs); // ldrne pc, [pc, offs] #else CC_LDR_rR(NATIVE_CC_NE, RPC_INDEX, RPC_INDEX); // ldrne pc, [pc] B_i(0); // b emit_long(t); //: #endif } static inline void compemu_raw_jz_b_oponly(void) { BNE_i(2); // bne jp LDRSB_rRI(REG_WORK1, RPC_INDEX, 3); // ldrsb r2,[pc,#3] ADD_rrr(RPC_INDEX, RPC_INDEX, REG_WORK1); // add pc,pc,r2 skip_n_bytes(3); // } static inline void compemu_raw_branch(IMM d) { B_i((d >> 2) - 1); } aranym-1.1.0/src/uae_cpu/build68k.c0000664000175000017500000001600113454637622015204 0ustar joyjoy/* * build68k.c - m68k CPU builder * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * UAE - The Un*x Amiga Emulator * * Read 68000 CPU specs from file "table68k" and build table68k.c * * Copyright 1995,1996 Bernd Schmidt */ #include "readcpu.h" #include #include #include #include #include #undef abort static FILE *tablef; static int nextch = 0; static void getnextch(void) { do { nextch = fgetc(tablef); if (nextch == '%') { do { nextch = fgetc(tablef); } while (nextch != EOF && nextch != '\n'); } } while (nextch != EOF && isspace(nextch)); } static int nextchtohex(void) { switch (isupper (nextch) ? tolower (nextch) : nextch) { case '0': return 0; case '1': return 1; case '2': return 2; case '3': return 3; case '4': return 4; case '5': return 5; case '6': return 6; case '7': return 7; case '8': return 8; case '9': return 9; case 'a': return 10; case 'b': return 11; case 'c': return 12; case 'd': return 13; case 'e': return 14; case 'f': return 15; default: abort(); } } int main() { int no_insns = 0; printf ("#include \"sysdeps.h\"\n"); printf ("#include \"readcpu.h\"\n"); printf ("struct instr_def defs68k[] = {\n"); #if 0 tablef = fopen("table68k","r"); if (tablef == NULL) { fprintf(stderr, "table68k not found\n"); exit(1); } #else tablef = stdin; #endif getnextch(); while (nextch != EOF) { int cpulevel, plevel, sduse; int i; char patbits[16]; char opcstr[256]; int bitpos[16]; int flagset[5], flaguse[5]; char cflow; unsigned int bitmask,bitpattern; int n_variable; n_variable = 0; bitmask = bitpattern = 0; memset (bitpos, 0, sizeof(bitpos)); for(i=0; i<16; i++) { int currbit; bitmask <<= 1; bitpattern <<= 1; switch (nextch) { case '0': currbit = bit0; bitmask |= 1; break; case '1': currbit = bit1; bitmask |= 1; bitpattern |= 1; break; case 'c': currbit = bitc; break; case 'C': currbit = bitC; break; case 'f': currbit = bitf; break; case 'i': currbit = biti; break; case 'I': currbit = bitI; break; case 'j': currbit = bitj; break; case 'J': currbit = bitJ; break; case 'k': currbit = bitk; break; case 'K': currbit = bitK; break; case 's': currbit = bits; break; case 'S': currbit = bitS; break; case 'd': currbit = bitd; break; case 'D': currbit = bitD; break; case 'r': currbit = bitr; break; case 'R': currbit = bitR; break; case 'z': currbit = bitz; break; case 'E': currbit = bitE; break; case 'p': currbit = bitp; break; default: abort(); } if (!(bitmask & 1)) { bitpos[n_variable] = currbit; n_variable++; } if (nextch == '0' || nextch == '1') bitmask |= 1; if (nextch == '1') bitpattern |= 1; patbits[i] = nextch; getnextch(); } (void) patbits; while (isspace(nextch) || nextch == ':') /* Get CPU and privilege level */ getnextch(); switch (nextch) { case '0': cpulevel = 0; break; case '1': cpulevel = 1; break; case '2': cpulevel = 2; break; case '3': cpulevel = 3; break; case '4': cpulevel = 4; break; case '5': cpulevel = 5; break; default: abort(); } getnextch(); switch (nextch) { case '0': plevel = 0; break; case '1': plevel = 1; break; case '2': plevel = 2; break; case '3': plevel = 3; break; default: abort(); } getnextch(); while (isspace(nextch)) /* Get flag set information */ getnextch(); if (nextch != ':') abort(); for(i = 0; i < 5; i++) { getnextch(); switch(nextch){ case '-': flagset[i] = fa_unset; break; case '/': flagset[i] = fa_isjmp; break; case '+': flagset[i] = fa_isbranch; break; case '0': flagset[i] = fa_zero; break; case '1': flagset[i] = fa_one; break; case 'x': flagset[i] = fa_dontcare; break; case '?': flagset[i] = fa_unknown; break; default: flagset[i] = fa_set; break; } } getnextch(); while (isspace(nextch)) getnextch(); if (nextch != ':') /* Get flag used information */ abort(); for(i = 0; i < 5; i++) { getnextch(); switch(nextch){ case '-': flaguse[i] = fu_unused; break; case '/': flaguse[i] = fu_isjmp; break; case '+': flaguse[i] = fu_maybecc; break; case '?': flaguse[i] = fu_unknown; break; default: flaguse[i] = fu_used; break; } } getnextch(); while (isspace(nextch)) getnextch(); if (nextch != ':') /* Get control flow information */ abort(); cflow = 0; for(i = 0; i < 2; i++) { getnextch(); switch(nextch){ case '-': break; case 'R': cflow |= fl_return; break; case 'B': cflow |= fl_branch; break; case 'J': cflow |= fl_jump; break; case 'T': cflow |= fl_trap; break; default: abort(); } } getnextch(); while (isspace(nextch)) getnextch(); if (nextch != ':') /* Get source/dest usage information */ abort(); getnextch(); sduse = nextchtohex() << 4; getnextch(); sduse |= nextchtohex(); getnextch(); while (isspace(nextch)) getnextch(); if (nextch != ':') abort(); assert(fgets(opcstr, 250, tablef) != NULL); getnextch(); { int j; /* Remove superfluous spaces from the string */ char *opstrp = opcstr, *osendp; int slen = 0; while (isspace((int)*opstrp)) opstrp++; osendp = opstrp; while (*osendp) { if (!isspace ((int)*osendp)) slen = osendp - opstrp + 1; osendp++; } opstrp[slen] = 0; if (no_insns > 0) printf(",\n"); no_insns++; printf("{ %d, %d, {", bitpattern, n_variable); for (j = 0; j < 16; j++) { printf("%d", bitpos[j]); if (j < 15) printf(","); } printf ("}, %d, %d, %d, { ", bitmask, cpulevel, plevel); for(i = 0; i < 5; i++) { printf("{ %d, %d }%c ", flaguse[i], flagset[i], i == 4 ? ' ' : ','); } printf("}, %d, %d, \"%s\"}", cflow, sduse, opstrp); } } printf("};\nint n_defs68k = %d;\n", no_insns); return 0; } aranym-1.1.0/src/uae_cpu/aranym_glue.cpp0000664000175000017500000001563213454637622016430 0ustar joyjoy/* * aranym_glue.cpp - CPU interface * * Copyright (c) 2001-2004 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "newcpu.h" #include "hardware.h" #include "input.h" #ifdef USE_JIT # include "compiler/compemu.h" #endif #include "nf_objs.h" #include "debug.h" // RAM and ROM pointers memptr RAMBase = 0; // RAM base (Atari address space) gb-- init is important uint8 *RAMBaseHost; // RAM base (host address space) uint32 RAMSize = 0x00e00000; // Size of RAM memptr ROMBase = 0x00e00000; // ROM base (Atari address space) uint8 *ROMBaseHost; // ROM base (host address space) uint32 ROMSize = 0x00100000; // Size of ROM uint32 RealROMSize; // Real size of ROM memptr HWBase = 0x00f00000; // HW base (Atari address space) uint8 *HWBaseHost; // HW base (host address space) uint32 HWSize = 0x00100000; // Size of HW space memptr FastRAMBase = 0x01000000; // Fast-RAM base (Atari address space) uint8 *FastRAMBaseHost; // Fast-RAM base (host address space) #ifdef HW_SIGSEGV uint8 *FakeIOBaseHost; #endif #ifdef FIXED_VIDEORAM memptr VideoRAMBase = ARANYMVRAMSTART; // VideoRAM base (Atari address space) #else memptr VideoRAMBase; // VideoRAM base (Atari address space) #endif uint8 *VideoRAMBaseHost;// VideoRAM base (host address space) //uint32 VideoRAMSize; // Size of VideoRAM #ifndef NOT_MALLOC uintptr MEMBaseDiff; // Global offset between a Atari address and its Host equivalent uintptr ROMBaseDiff; uintptr FastRAMBaseDiff; #endif uintptr VMEMBaseDiff; // Global offset between a Atari VideoRAM address and /dev/fb0 mmap #if defined(ENABLE_EXCLUSIVE_SPCFLAGS) && !defined(HAVE_HARDWARE_LOCKS) SDL_mutex *spcflags_lock; #endif #if defined(ENABLE_REALSTOP) SDL_cond *stop_condition; #endif /* * Initialize 680x0 emulation */ bool InitMEM() { InitMEMBaseDiff(RAMBaseHost, RAMBase); InitROMBaseDiff(ROMBaseHost, ROMBase); InitFastRAMBaseDiff(FastRAMBaseHost, FastRAMBase); InitVMEMBaseDiff(VideoRAMBaseHost, VideoRAMBase); return true; } bool Init680x0(void) { init_m68k(); #if defined(ENABLE_EXCLUSIVE_SPCFLAGS) && !defined(HAVE_HARDWARE_LOCKS) if ((spcflags_lock = SDL_CreateMutex()) == NULL) { panicbug("Error by SDL_CreateMutex()"); exit(EXIT_FAILURE); } #endif #if ENABLE_REALSTOP if ((stop_condition = SDL_CreateCond()) == NULL) { panicbug("Error by SDL_CreateCond()"); exit(EXIT_FAILURE); } #endif #ifdef USE_JIT if (bx_options.jit.jit) compiler_init(); #endif return true; } /* * Instr. RESET */ void AtariReset(void) { // reset Atari hardware here HWReset(); // reset NatFeats here NFReset(); // reset the input devices (input.cpp) InputReset(); } /* * Reset CPU */ void Reset680x0(void) { m68k_reset(); } /* * Deinitialize 680x0 emulation */ void Exit680x0(void) { #ifdef USE_JIT if (bx_options.jit.jit) compiler_exit(); #endif exit_m68k(); } /* * Reset and start 680x0 emulation */ void Start680x0(void) { m68k_reset(); #ifdef USE_JIT if (bx_options.jit.jit) { m68k_compile_execute(); } else #endif m68k_execute(); } /* * Restart running 680x0 emulation safely from different thread */ void Restart680x0(void) { quit_program = 2; TriggerNMI(); } /* * Quit 680x0 emulation safely from different thread */ void Quit680x0(void) { quit_program = 1; TriggerNMI(); } int MFPdoInterrupt(void) { return getMFP()->doInterrupt(); } int SCCdoInterrupt(void) { return getSCC()->doInterrupt(); } /* * Trigger interrupts */ void TriggerInternalIRQ(void) { SPCFLAGS_SET( SPCFLAG_INTERNAL_IRQ ); } void TriggerInt3(void) { SPCFLAGS_SET( SPCFLAG_INT3 ); } void TriggerVBL(void) { SPCFLAGS_SET( SPCFLAG_VBL ); } void TriggerInt5(void) { SPCFLAGS_SET( SPCFLAG_INT5 ); } void TriggerSCC(bool enable) { if (enable) SPCFLAGS_SET( SPCFLAG_SCC ); else SPCFLAGS_CLEAR( SPCFLAG_SCC ); } void TriggerMFP(bool enable) { if (enable) SPCFLAGS_SET( SPCFLAG_MFP ); else SPCFLAGS_CLEAR( SPCFLAG_MFP ); } void TriggerNMI(void) { SPCFLAGS_SET( SPCFLAG_BRK ); // use _BRK for NMI } #ifndef REBOOT_OR_HALT #define REBOOT_OR_HALT 0 // halt by default #endif #if REBOOT_OR_HALT == 1 # define CPU_MSG "CPU: Rebooting" # define CPU_ACTION Restart680x0() #else # define CPU_MSG "CPU: Halting" # define CPU_ACTION Quit680x0() #endif #ifdef ENABLE_EPSLIMITER #ifndef EPS_LIMIT # define EPS_LIMIT 10000 /* this might be too high if ARAnyM is slowed down by printing the bus errors on console */ #endif void check_eps_limit(uaecptr pc) { static long last_exception_time=-1; static long exception_per_sec=0; static long exception_per_sec_pc=0; static uaecptr prevpc = 0; if (bx_options.cpu.eps_enabled) { if (last_exception_time == -1) { last_exception_time = SDL_GetTicks(); } exception_per_sec++; if (pc == prevpc) { /* BUS ERRORs occur at the same PC - watch out! */ exception_per_sec_pc++; } else { exception_per_sec_pc = 0; prevpc = pc; } if (SDL_GetTicks() - last_exception_time > 1000) { last_exception_time = SDL_GetTicks(); if (exception_per_sec_pc > bx_options.cpu.eps_max || exception_per_sec > EPS_LIMIT /* make it configurable */) { panicbug("CPU: Exception per second limit reached: %ld/%ld", exception_per_sec_pc, exception_per_sec); /* would be cool to open SDL dialog here: */ /* [Exception per seconds limit reached. XXXXX exception occured in the last second. The limit is set to YYYYY in your config file. Do you want to continue emulation, reset ARAnyM or quit ?][Continue] [Reset] [Quit] */ panicbug(CPU_MSG); CPU_ACTION; } exception_per_sec = 0; exception_per_sec_pc = 0; } } } #endif void report_double_bus_error() { panicbug("CPU: Double bus fault detected !"); /* would be cool to open SDL dialog here: */ /* [Double bus fault detected. The emulated system crashed badly. Do you want to reset ARAnyM or quit ?] [Reset] [Quit]" */ panicbug(CPU_MSG); CPU_ACTION; } #ifdef FLIGHT_RECORDER extern bool cpu_flight_recorder_active; void cpu_flight_recorder(int activate) { cpu_flight_recorder_active = activate; } #endif aranym-1.1.0/src/uae_cpu/Makefile.am0000664000175000017500000000353013454637622015447 0ustar joyjoy# # Note: this Makefile only contains rules for the source # generator tools. # # # suppress warnings about overriding LDFLAGS and CPPFLAGS # AUTOMAKE_OPTIONS = -Wno-gnu AM_CPPFLAGS = $(DEFINES) \ "-I$(srcdir)/../include" \ "-I$(srcdir)/../Unix" \ "-I$(builddir)/.." \ "-I$(builddir)" \ "-I$(srcdir)" CC = $(CC_FOR_BUILD) CXX = $(CXX_FOR_BUILD) LDFLAGS = $(LDFLAGS_FOR_BUILD) CPPFLAGS = $(CPPFLAGS_FOR_BUILD) CFLAGS = $(CFLAGS_FOR_BUILD) CXXFLAGS = $(CXXFLAGS_FOR_BUILD) LIBS=-lm CFLAGS_NOWARN = $(DBGSP) AM_CFLAGS = $(CFLAGS_NOWARN) $(WFLAGS) AM_CXXFLAGS = $(CFLAGS_NOWARN) $(WFLAGS) noinst_PROGRAMS = build68k gencpu if USE_JIT noinst_PROGRAMS += gencomp endif BUILT_SOURCES = \ cpudefs.cpp \ cpuemu.cpp \ cpustbl.cpp \ cpufunctbl.cpp \ cputbl.h \ $(empty) build68k_SOURCES = build68k.c gencpu_SOURCES = gencpu.c m68k.h readcpu.cpp readcpu.h cpudefs.cpp gencomp_SOURCES = if GENCOMP_ARCH_X86 gencomp_SOURCES += compiler/gencomp.c endif if GENCOMP_ARCH_ARM gencomp_SOURCES += compiler/gencomp_arm.c endif gencomp_SOURCES += readcpu.cpp cpudefs.cpp if USE_JIT BUILT_SOURCES += compemu.cpp compstbl.cpp comptbl.h endif cpudefs.cpp: build68k$(EXEEXT) $(srcdir)/table68k $(AM_V_GEN)./build68k <$(srcdir)/table68k > $@ cpuemu.cpp: gencpu$(EXEEXT) $(AM_V_GEN)./gencpu$(EXEEXT) cpustbl.cpp cpufunctbl.cpp cputbl.h: cpuemu.cpp compemu.cpp: gencomp$(EXEEXT) $(AM_V_GEN)./gencomp$(EXEEXT) compstbl.cpp comptbl.h: compemu.cpp CLEANFILES = $(BUILT_SOURCES) EXTRA_DIST = \ table68k \ compiler/codegen_arm.cpp compiler/codegen_arm.h \ compiler/compemu_midfunc_arm.cpp compiler/compemu_midfunc_arm.h \ compiler/compemu_midfunc_arm2.cpp compiler/compemu_midfunc_arm2.h \ compiler/test_codegen_arm.c \ compiler/codegen_x86.cpp compiler/codegen_x86.h \ compiler/compemu_midfunc_x86.cpp compiler/compemu_midfunc_x86.h \ compiler/test_codegen_x86.cpp \ $(empty) aranym-1.1.0/src/tools.cpp0000664000175000017500000000554513454637622013646 0ustar joyjoy/* * tools.cpp - non-32bit CPU and miscelany utilities * * Copyright (c) 2001-2003 STanda of ARAnyM developer team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include #include #include "tools.h" #if SIZEOF_VOID_P != 4 || DEBUG_NON32BIT // the instance for the memptr <-> void* conversions // usefull for systems where the sizeof(void*) != 4 NativeTypeMapper memptrMapper; #endif // SIZEOF_VOID_P != 4 char *safe_strncpy(char *dest, const char *src, size_t size) { if (dest == NULL) return NULL; if (size > 0) { strncpy(dest, src != NULL ? src : "", size); dest[size-1] = '\0'; } return dest; } char *safe_strncat(char *dest, const char *src, size_t size) { if (dest == NULL) return NULL; if (size > 0) { if (src && (strlen(src) + strlen(dest)) < size) strcpy(dest + strlen(dest), src); } return dest; } char *my_canonicalize_file_name(const char *filename, bool append_slash) { if (filename == NULL) return NULL; #if (!defined HAVE_CANONICALIZE_FILE_NAME && defined HAVE_REALPATH) || defined __CYGWIN__ #ifdef PATH_MAX int path_max = PATH_MAX; #else int path_max = pathconf(filename, _PC_PATH_MAX); if (path_max <= 0) path_max = 4096; #endif #endif char *resolved; #if defined HAVE_CANONICALIZE_FILE_NAME resolved = canonicalize_file_name(filename); #elif defined HAVE_REALPATH char *tmp = (char *)malloc(path_max); char *realp = realpath(filename, tmp); resolved = (realp != NULL) ? strdup(realp) : NULL; free(tmp); #else resolved = NULL; #endif if (resolved == NULL) resolved = strdup(filename); if (resolved) { #ifdef __CYGWIN__ char *tmp2 = (char *)malloc(path_max); strcpy(tmp2, resolved); cygwin_path_to_win32(tmp2, path_max); free(resolved); resolved = tmp2; #endif strd2upath(resolved, resolved); if (append_slash) { size_t len = strlen(resolved); if (len > 1 && resolved[len - 1] != *DIRSEPARATOR) { resolved = (char *)realloc(resolved, len + sizeof(DIRSEPARATOR)); if (resolved) strcat(resolved, DIRSEPARATOR); } } } return resolved; } aranym-1.1.0/src/serial_port.cpp0000664000175000017500000001313113454637622015017 0ustar joyjoy/* Serial port emulation, Linux driver ARAnyM (C) 2005-2008 Patrice Mandin 2010 Jean Conter This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include #include #include #include #include #include #ifdef __CYGWIN__ #include /* for FIONREAD */ #endif #include "serial.h" #include "serial_port.h" #include #define DEBUG 0 #include "debug.h" Serialport::Serialport(void) { D(bug("Serialport: interface created")); oldTBE = 0; oldStatus = 0; handle = open(bx_options.serial.serport,O_RDWR|O_NDELAY|O_NONBLOCK);/* Raw mode */ // /dev/ttyS0 by default or /dev/ttyUSB0 : see Serport in ./aranym/config [SERIAL] if (handle<0) { D(bug("Serialport: Can not open device %s", bx_options.serial.serport)); return; } } Serialport::~Serialport(void) { D(bug("Serialport: interface destroyed")); if (handle>=0) { fcntl(handle,F_SETFL,0);// back to (almost...) normal close(handle); handle=-1; } } void Serialport::reset(void) { D(bug("Serialport: reset")); } uint8 Serialport::getData() { uint8 value=0; int nb; D(bug("Serialport: getData")); if (handle>=0) { nb=read(handle,&value,1); if(nb<0){ D(bug("Serialport: impossible to get data")); } } return value; } void Serialport::setData(uint8 value) { int nb; D(bug("Serialport: setData")); if (handle>=0) { //while((getTBE()&4)==0); nb=write(handle,&value,1); if(nb<0) D(bug("Serialport: setdata problem")); // NB: wait for TBE before single write cancelled (not available with USB) // and replaced by the following do while (add a timeout if necessary) do{ nb=write(handle,&value,1);// nb<0 if device not ready }while(nb<0); } } void Serialport::setBaud(uint32 value) { D(bug("Serialport: setBaud")); if (handle<0) return; speed_t new_speed = B0; switch(value){ case 230400: new_speed = B230400; break; case 115200: new_speed = B115200; break; case 57600: new_speed = B57600; break; case 38400: new_speed = B38400; break; case 19200: new_speed = B19200; break; case 9600: new_speed = B9600; break; case 4800: new_speed = B4800; break; case 2400: new_speed = B2400; break; case 1800: new_speed = B1800; break; case 1200: new_speed = B1200; break; case 600: new_speed = B600; break; case 300: new_speed = B300; break; case 200: new_speed = B200; break; case 150: new_speed = B150; break; case 134: new_speed = B134; break; case 110: new_speed = B110; break; case 75: new_speed = B75; break; case 50: new_speed = B50; break; default: D(bug("unregistered baud value $%x\n",value)); break; } if (new_speed == B0) return; struct termios options; tcgetattr(handle,&options); cfsetispeed(&options, new_speed); cfsetospeed(&options, new_speed); options.c_cflag|=(CLOCAL | CREAD);// options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);// raw input options.c_iflag &= ~(ICRNL);// CR is not CR+LF tcsetattr(handle,TCSANOW,&options); } void Serialport::setRTS(bool value) { int status=0; if (handle>=0) { if(ioctl(handle,TIOCMGET,&status)<0){ D(bug("Serialport: Can't get status")); } if(value)status|=TIOCM_RTS; else status&=~TIOCM_RTS; ioctl(handle,TIOCMSET,&status); } } void Serialport::setDTR(bool value) { int status=0; if (handle>=0) { if(ioctl(handle,TIOCMGET,&status)<0){ D(bug("Serialport: Can't get status")); } if(value)status|=TIOCM_DTR; else status&=~TIOCM_DTR; ioctl(handle,TIOCMSET,&status); } } /* void Serialport::setRTSDTR(uint8 value) { int status=0; if (handle>=0) { if(ioctl(handle,TIOCMGET,&status)<0){ D(bug("Serialport: Can't get status")); } if(value&2)status|=TIOCM_RTS; else status&=~TIOCM_RTS; if(value&128)status|=TIOCM_DTR; else status&=~TIOCM_DTR; ioctl(handle,TIOCMSET,&status); } } */ uint16 Serialport::getStatus() { uint16 value; uint16 diff; int status=0; int nbchar=0; value=0; D(bug("Serialport: getStatus")); if (handle>=0) { if (ioctl(handle,FIONREAD,&nbchar)<0){ D(bug("Serialport: Can't get input fifo count")); } getSCC()->charcount=nbchar;// to optimize input (see UGLY in scc.cpp) if(nbchar>0) value=0x0401;// RxIC+RBF value|=getTBE();// TxIC value|=(1<TxIP (based on real TBE) } #endif oldTBE=value; return value; } aranym-1.1.0/src/serial.cpp0000664000175000017500000000316113454637622013755 0ustar joyjoy/* Serial port emulation, base class ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "parameters.h" #include "serial.h" #define DEBUG 0 #include "debug.h" /*--- Public functions ---*/ Serial::Serial(void) { D(bug("serial: created")); } Serial::~Serial(void) { D(bug("serial: destroyed")); } void Serial::reset(void) { D(bug("serial: reset")); } uint8 Serial::getData() { D(bug("serial: getData")); return 0; } void Serial::setData(uint8 value) { DUNUSED(value); D(bug("serial: setData")); } void Serial::setBaud(uint32 value) { DUNUSED(value); D(bug("serial: setBaud")); } uint16 Serial::getStatus() { D(bug("serial: getStatus")); return 0; } void Serial::setRTS(bool value) { DUNUSED(value); D(bug("serial: setRTS")); } void Serial::setDTR(bool value) { DUNUSED(value); D(bug("serial: setDTR")); } uint16 Serial::getTBE() { D(bug("serial: getTBE")); return 0; } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/sdl_bmp.cpp0000664000175000017500000002324513454637622014123 0ustar joyjoy/* BMP loading (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "SDL_compat.h" #include "dirty_rects.h" #include "host_surface.h" #include "logo.h" #include "hostscreen.h" #include "host.h" #define DEBUG 0 #include "debug.h" /* Compression encodings for BMP files */ #ifndef BI_RGB #define BI_RGB 0 #define BI_RLE8 1 #define BI_RLE4 2 #define BI_BITFIELDS 3 #endif static void CorrectAlphaChannel(SDL_Surface * surface) { /* Check to see if there is any alpha channel data */ SDL_bool hasAlpha = SDL_FALSE; #if SDL_BYTEORDER == SDL_BIG_ENDIAN int alphaChannelOffset = 0; #else int alphaChannelOffset = 3; #endif Uint8 *alpha = ((Uint8 *) surface->pixels) + alphaChannelOffset; Uint8 *end = alpha + surface->h * surface->pitch; while (alpha < end) { if (*alpha != 0) { hasAlpha = SDL_TRUE; break; } alpha += 4; } if (!hasAlpha) { alpha = ((Uint8 *) surface->pixels) + alphaChannelOffset; while (alpha < end) { *alpha = SDL_ALPHA_OPAQUE; alpha += 4; } } } SDL_Surface *mySDL_LoadBMP_RW(SDL_RWops * src, int freesrc) { SDL_bool was_error; Sint64 fp_offset = 0; int bmpPitch; int i, pad; SDL_Surface *surface; Uint32 Rmask; Uint32 Gmask; Uint32 Bmask; Uint32 Amask; SDL_Palette *palette; Uint8 *bits; Uint8 *top, *end; SDL_bool topDown; int ExpandBMP; SDL_bool correctAlpha = SDL_FALSE; /* The Win32 BMP file header (14 bytes) */ char magic[2]; /* Uint32 bfSize = 0; */ /* Uint16 bfReserved1 = 0; */ /* Uint16 bfReserved2 = 0; */ Uint32 bfOffBits = 0; /* The Win32 BITMAPINFOHEADER struct (40 bytes) */ Uint32 biSize = 0; Sint32 biWidth = 0; Sint32 biHeight = 0; /* Uint16 biPlanes = 0; */ Uint16 biBitCount = 0; Uint32 biCompression = 0; /* Uint32 biSizeImage = 0; */ /* Sint32 biXPelsPerMeter = 0; */ /* Sint32 biYPelsPerMeter = 0; */ Uint32 biClrUsed = 0; /* Uint32 biClrImportant = 0; */ /* Make sure we are passed a valid data source */ surface = NULL; was_error = SDL_FALSE; if (src == NULL) { was_error = SDL_TRUE; goto done; } /* Read in the BMP file header */ fp_offset = SDL_RWtell(src); SDL_ClearError(); if (SDL_RWread(src, magic, 1, 2) != 2) { SDL_Error(SDL_EFREAD); was_error = SDL_TRUE; goto done; } if (SDL_strncmp(magic, "BM", 2) != 0) { SDL_SetError("File is not a Windows BMP file"); was_error = SDL_TRUE; goto done; } /* bfSize = */ SDL_ReadLE32(src); /* bfReserved1 = */ SDL_ReadLE16(src); /* bfReserved2 = */ SDL_ReadLE16(src); bfOffBits = SDL_ReadLE32(src); /* Read the Win32 BITMAPINFOHEADER */ biSize = SDL_ReadLE32(src); if (biSize == 12) { biWidth = (Uint32) SDL_ReadLE16(src); biHeight = (Uint32) SDL_ReadLE16(src); /* biPlanes = */ SDL_ReadLE16(src); biBitCount = SDL_ReadLE16(src); biCompression = BI_RGB; } else { const unsigned int headerSize = 40; biWidth = SDL_ReadLE32(src); biHeight = SDL_ReadLE32(src); /* biPlanes = */ SDL_ReadLE16(src); biBitCount = SDL_ReadLE16(src); biCompression = SDL_ReadLE32(src); /* biSizeImage = */ SDL_ReadLE32(src); /* biXPelsPerMeter = */ SDL_ReadLE32(src); /* biYPelsPerMeter = */ SDL_ReadLE32(src); biClrUsed = SDL_ReadLE32(src); /* biClrImportant = */ SDL_ReadLE32(src); if (biSize > headerSize) { SDL_RWseek(src, (biSize - headerSize), RW_SEEK_CUR); } } if (biHeight < 0) { topDown = SDL_TRUE; biHeight = -biHeight; } else { topDown = SDL_FALSE; } /* Check for read error */ if (SDL_strcmp(SDL_GetError(), "") != 0) { was_error = SDL_TRUE; goto done; } /* Expand 1 and 4 bit bitmaps to 8 bits per pixel */ switch (biBitCount) { case 1: case 4: ExpandBMP = biBitCount; biBitCount = 8; break; default: ExpandBMP = 0; break; } /* We don't support any BMP compression right now */ Rmask = Gmask = Bmask = Amask = 0; switch (biCompression) { case BI_RGB: /* If there are no masks, use the defaults */ if (bfOffBits == (14 + biSize)) { /* Default values for the BMP format */ switch (biBitCount) { case 15: case 16: Rmask = 0x7C00; Gmask = 0x03E0; Bmask = 0x001F; break; case 24: #if SDL_BYTEORDER == SDL_BIG_ENDIAN Rmask = 0x000000FF; Gmask = 0x0000FF00; Bmask = 0x00FF0000; #else Rmask = 0x00FF0000; Gmask = 0x0000FF00; Bmask = 0x000000FF; #endif break; case 32: /* We don't know if this has alpha channel or not */ correctAlpha = SDL_TRUE; Amask = 0xFF000000; Rmask = 0x00FF0000; Gmask = 0x0000FF00; Bmask = 0x000000FF; break; default: break; } break; } /* Fall through -- read the RGB masks */ case BI_BITFIELDS: switch (biBitCount) { case 15: case 16: Rmask = SDL_ReadLE32(src); Gmask = SDL_ReadLE32(src); Bmask = SDL_ReadLE32(src); break; case 32: Rmask = SDL_ReadLE32(src); Gmask = SDL_ReadLE32(src); Bmask = SDL_ReadLE32(src); Amask = SDL_ReadLE32(src); break; default: break; } break; default: SDL_SetError("Compressed BMP files not supported"); was_error = SDL_TRUE; goto done; } /* Create a compatible surface, note that the colors are RGB ordered */ surface = SDL_CreateRGBSurface(0, biWidth, biHeight, biBitCount, Rmask, Gmask, Bmask, Amask); if (surface == NULL) { was_error = SDL_TRUE; goto done; } /* Load the palette, if any */ palette = (surface->format)->palette; if (palette) { if (biClrUsed == 0) { biClrUsed = 1 << biBitCount; } if ((int) biClrUsed > palette->ncolors) { palette->ncolors = biClrUsed; palette->colors = (SDL_Color *) SDL_realloc(palette->colors, palette->ncolors * sizeof(*palette->colors)); if (!palette->colors) { SDL_OutOfMemory(); was_error = SDL_TRUE; goto done; } } else if ((int) biClrUsed < palette->ncolors) { palette->ncolors = biClrUsed; } if (biSize == 12) { for (i = 0; i < (int) biClrUsed; ++i) { SDL_RWread(src, &palette->colors[i].b, 1, 1); SDL_RWread(src, &palette->colors[i].g, 1, 1); SDL_RWread(src, &palette->colors[i].r, 1, 1); #if SDL_VERSION_ATLEAST(2, 0, 0) palette->colors[i].a = SDL_ALPHA_OPAQUE; #else palette->colors[i].unused = SDL_ALPHA_OPAQUE; #endif } } else { for (i = 0; i < (int) biClrUsed; ++i) { SDL_RWread(src, &palette->colors[i].b, 1, 1); SDL_RWread(src, &palette->colors[i].g, 1, 1); SDL_RWread(src, &palette->colors[i].r, 1, 1); #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_RWread(src, &palette->colors[i].a, 1, 1); #else SDL_RWread(src, &palette->colors[i].unused, 1, 1); #endif /* According to Microsoft documentation, the fourth element is reserved and must be zero, so we shouldn't treat it as alpha. */ #if SDL_VERSION_ATLEAST(2, 0, 0) palette->colors[i].a = SDL_ALPHA_OPAQUE; #else palette->colors[i].unused = SDL_ALPHA_OPAQUE; #endif } } } /* Read the surface pixels. Note that the bmp image is upside down */ if (SDL_RWseek(src, fp_offset + bfOffBits, RW_SEEK_SET) < 0) { SDL_Error(SDL_EFSEEK); was_error = SDL_TRUE; goto done; } top = (Uint8 *) surface->pixels; end = (Uint8 *) surface->pixels + (surface->h * surface->pitch); switch (ExpandBMP) { case 1: bmpPitch = (biWidth + 7) >> 3; pad = (((bmpPitch) % 4) ? (4 - ((bmpPitch) % 4)) : 0); break; case 4: bmpPitch = (biWidth + 1) >> 1; pad = (((bmpPitch) % 4) ? (4 - ((bmpPitch) % 4)) : 0); break; default: pad = ((surface->pitch % 4) ? (4 - (surface->pitch % 4)) : 0); break; } if (topDown) { bits = top; } else { bits = end - surface->pitch; } while (bits >= top && bits < end) { switch (ExpandBMP) { case 1: case 4: { Uint8 pixel = 0; int shift = (8 - ExpandBMP); for (i = 0; i < surface->w; ++i) { if (i % (8 / ExpandBMP) == 0) { if (!SDL_RWread(src, &pixel, 1, 1)) { SDL_SetError("Error reading from BMP"); was_error = SDL_TRUE; goto done; } } *(bits + i) = (pixel >> shift); pixel <<= ExpandBMP; } } break; default: if ((int)SDL_RWread(src, bits, 1, surface->pitch) != (int)surface->pitch) { SDL_Error(SDL_EFREAD); was_error = SDL_TRUE; goto done; } #if SDL_BYTEORDER == SDL_BIG_ENDIAN /* Byte-swap the pixels if needed. Note that the 24bpp case has already been taken care of above. */ switch (biBitCount) { case 15: case 16: { Uint16 *pix = (Uint16 *) bits; for (i = 0; i < surface->w; i++) pix[i] = SDL_Swap16(pix[i]); } break; case 32: { Uint32 *pix = (Uint32 *) bits; for (i = 0; i < surface->w; i++) pix[i] = SDL_Swap32(pix[i]); } break; } #endif break; } /* Skip padding bytes, ugh */ if (pad) { Uint8 padbyte; for (i = 0; i < pad; ++i) { SDL_RWread(src, &padbyte, 1, 1); } } if (topDown) { bits += surface->pitch; } else { bits -= surface->pitch; } } if (correctAlpha) { CorrectAlphaChannel(surface); } done: if (was_error) { if (src) { SDL_RWseek(src, fp_offset, RW_SEEK_SET); } SDL_FreeSurface(surface); surface = NULL; } if (freesrc && src) { SDL_RWclose(src); } return surface; } aranym-1.1.0/src/scc.cpp0000664000175000017500000003156613454637622013260 0ustar joyjoy/* * scc.cpp - SCC 85C30 emulation code (preliminary) * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * 2010 Jean Conter * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "scc.h" #include "parameters.h" #include "serial.h" #ifdef ENABLE_SERIALUNIX #include "serial_port.h" #endif #include "dsp.h" #define DEBUG 0 #include "debug.h" SCC::SCC(memptr addr, uint32 size) : BASE_IO(addr, size) { #ifdef ENABLE_SERIALUNIX serial = new Serialport; #else serial = new Serial; #endif reset(); } SCC::~SCC() { delete serial; } void SCC::reset() { active_reg = 0; for(unsigned int i=0; ireset(); } void SCC::channelAreset() { scc_regs[15]=0xF8; scc_regs[14]=0xA0; scc_regs[11]=0x08; scc_regs[9]=0; RR3&=~0x38;RR3M&=~0x38; scc_regs[0]=1<=4)?16:0;//16=channel B switch(addr) { case 0: //channel A case 4: //channel B switch(active_reg){ case 0: if(set2){ // RR0B temp=serial->getStatus();// only for channel B scc_regs[16]=temp&0xFF;// define CTS(5), TBE(2) and RBF=RCA(0) RR3=RR3M&(temp>>8);// define RxIP(2), TxIP(1) and ExtIP(0) } else{scc_regs[0]=4;if(scc_regs[9]==0x20)RR3|=0x8;} value=scc_regs[set2];// not yet defined for channel A break; case 2:// not really useful (RR2 seems unaccessed...) value=scc_regs[2]; if(set2==0)break;// vector base only for RR2A if((scc_regs[9]&1)==0)break;// no status bit added // status bit added to vector if (scc_regs[9]&0x10){// modify high bits if(RR3==0){value|=0x60;break;} if(RR3&32){value|=0x30;break;}// A RxIP if(RR3&16){value|=0x10;break;}// A TxIP if(RR3&8){value|=0x50;break;}// A Ext IP if(RR3&4){value|=0x20;break;}// B RBF if(RR3&2)break;// B TBE if(RR3&1)value|=0x40;// B Ext Status } else{//modify low bits if(RR3==0){value|=6;break;}// no one if(RR3&32){value|=0xC;break;}// A RxIP if(RR3&16){value|=0x8;break;}// A TxIP if(RR3&8){value|=0xA;break;}// A Ext IP if(RR3&4){value|=4;break;}// B RBF if(RR3&2)break;// B TBE if(RR3&1)value|=2;// B Ext Status (CTS) } break; case 3: value=(set2)?0:RR3; //access on A channel only break; case 4:// RR0 value=scc_regs[set2]; break; case 8:// DATA reg if(set2){ // only channel B processed scc_regs[8+set2]=serial->getData(); } value=scc_regs[8+set2]; break; case 9://WR13 value=scc_regs[13+set2]; break; case 11:// WR15 case 15:// EXT/STATUS IT Ctrl value=scc_regs[15+set2]&=0xFA;// mask out D2 and D0 break; case 12:// BRG LSB case 13:// BRG MSB value=scc_regs[active_reg+set2]; break; default:// RR5,RR6,RR7,RR10,RR14 not processed D(bug("scc : unprocessed read address=$%x *********\n",active_reg)); value=0; break; } break; case 2:// channel A value=scc_regs[8]; // TBD (LAN) break; case 6:// channel B scc_regs[8+16]=serial->getData(); value=scc_regs[8+16]; break; default: D(bug("scc : illegal read address=$%x\n",addr)); break; } active_reg=0;// next access for RR0 or WR0 /* D(bug("HWget_b(0x%08x)=0x%02x at 0x%08x", addr+HW, value, showPC()));*/ return value; } void SCC::handleWrite(memptr addr, uint8 value) { int i,set2; uint32 BaudRate; addr -= getHWoffset(); set2=(addr>=4)?16:0;// channel B switch(addr) { case 0: case 4: switch(active_reg) { case 0: if(value<=15)active_reg = value & 0x0f; else{ if((value&0x38)==0x38){// Reset Highest IUS (last operation in IT service routine) for(i=0x20;i;i>>=1){ if(RR3&i)break; } #define UGLY #ifdef UGLY // tricky & ugly speed improvement for input if(i==4){// RxIP charcount--; if(charcount<=0) RR3&=~4;// optimize input; don't reset RxIP when chars are buffered } else RR3&=~i; #else RR3&=~i; #endif } else if((value&0x38)==0x28){// Reset Tx int pending if(set2)RR3&=~2;// channel B else RR3&=~0x10;// channel A } else if((value&0x38)==0x10){// Reset Ext/Status ints if(set2)RR3&=~1;// channel B else RR3&=~8;// channel A } TriggerSCC((RR3&RR3M)&&((0xB&scc_regs[9])==9)); // clear SCC flag if no pending IT // or no properly configured WR9 // must be done here to avoid scc_do_Interrupt call without pending IT } break; default: // all but 0 scc_regs[active_reg+set2] = value; if(active_reg==2)scc_regs[active_reg] = value;// single WR2 on SCC else if(active_reg==8){ if(set2)serial->setData(value);// channel B only // channel A to be done if necessary } else if(active_reg==1){// Tx/Rx interrupt enable switch(set2){ case 0:// channel A if(value&1)RR3M|=8;else RR3&=~8;// no IP(RR3) if not enabled(RR3M) if(value&2)RR3M|=16;else RR3&=~16; if(value&0x18)RR3M|=32;else RR3&=~32; break; default:// channel B if(value&1)RR3M|=1;else RR3&=~1; if(value&2)RR3M|=2;else RR3&=~2; if(value&0x18)RR3M|=4;else RR3&=~4; // set or clear SCC flag if necessary (see later) break; } } else if(active_reg==5){// Transmit parameter and control serial->setRTS(value&2); serial->setDTR(value&128); // Tx character format & Tx CRC would be selected also here (8 bits/char and no CRC assumed) } else if(active_reg==9){// Master interrupt control (common for both channels) scc_regs[9] = value;// single WR9 (accessible by both channels) if(value&0x40){channelBreset();} if(value&0x80){channelAreset();} // set or clear SCC flag accordingly (see later) } else if(active_reg==13){// set baud rate according to WR13 and WR12 // Normally we have to set the baud rate according // to clock source (WR11) and clock mode (WR4) // In fact, we choose the baud rate from the value stored in WR12 & WR13 // Note: we assume that WR13 is always written last (after WR12) // we tried to be more or less compatible with HSMODEM (see below) // 75 and 50 bauds are preserved because 153600 and 76800 were not available // 3600 and 2000 were also unavailable and are remapped to 57600 and 38400 respectively BaudRate=0; switch (value){ case 0: switch (scc_regs[12+set2]){ case 0://HSMODEM for 200 mapped to 230400 BaudRate=230400; break; case 2://HSMODEM for 150 mapped to 115200 BaudRate=115200; break; case 6://HSMODEM for 134 mapped to 57600 case 0x7e://HSMODEM for 3600 remapped to 57600 case 0x44://normal for 3600 remapped to 57600 BaudRate=57600; break; case 0xa://HSMODEM for 110 mapped to 38400 case 0xe4://HSMODEM for 2000 remapped to 38400 case 0x7c://normal for 2000 remapped to 38400 BaudRate=38400; break; case 0x16://HSMODEM for 19200 case 0xb:// normal for 19200 BaudRate=19200; break; case 0x2e://HSMODEM for 9600 case 0x18://normal for 9600 BaudRate=9600; break; case 0x5e://HSMODEM for 4800 case 0x32://normal for 4800 BaudRate=4800; break; case 0xbe://HSMODEM for 2400 case 0x67://normal BaudRate=2400; break; case 0xfe://HSMODEM for 1800 case 0x8a://normal for 1800 BaudRate=1800; break; case 0xd0://normal for 1200 BaudRate=1200; break; case 1://HSMODEM for 75 kept to 75 BaudRate=75; break; case 4://HSMODEM for 50 kept to 50 BaudRate=50; break; default: D(bug("unexpected LSB constant for baud rate")); break; } break; case 1: switch(scc_regs[12+set2]){ case 0xa1://normal for 600 BaudRate=600; break; case 0x7e://HSMODEM for 1200 BaudRate=1200; break; } break; case 2: if(scc_regs[12+set2]==0xfe)BaudRate=600;//HSMODEM break; case 3: if(scc_regs[12+set2]==0x45)BaudRate=300;//normal break; case 4: if(scc_regs[12+set2]==0xe8)BaudRate=200;//normal break; case 5: if(scc_regs[12+set2]==0xfe)BaudRate=300;//HSMODEM break; case 6: if(scc_regs[12+set2]==0x8c)BaudRate=150;//normal break; case 7: if(scc_regs[12+set2]==0x4d)BaudRate=134;//normal break; case 8: if(scc_regs[12+set2]==0xee)BaudRate=110;//normal break; case 0xd: if(scc_regs[12+set2]==0x1a)BaudRate=75;//normal break; case 0x13: if(scc_regs[12+set2]==0xa8)BaudRate=50;//normal break; case 0xff://HSMODEM dummy value->silently ignored break; default: D(bug("unexpected MSB constant for baud rate")); break; } if(BaudRate)serial->setBaud(BaudRate);// set only if defined /* summary of baud rates: Rsconf Falcon Falcon(+HSMODEM) Aranym Aranym(+HSMODEM) 0 19200 19200 19200 19200 1 9600 9600 9600 9600 2 4800 4800 4800 4800 3 3600 3600 57600 57600 4 2400 2400 2400 2400 5 2000 2000 38400 38400 6 1800 1800 1800 1800 7 1200 1200 1200 1200 8 600 600 600 600 9 300 300 300 300 10 200 230400 200 230400 11 150 115200 150 115200 12 134 57600 134 57600 13 110 38400 110 38400 14 75 153600 75 75 15 50 76800 50 50 */ } else if(active_reg==15){// external status int control if(value&1) { D(bug("SCC WR7 prime not yet processed\n")); } } if( (active_reg==1)||(active_reg==2)||(active_reg==9)) TriggerSCC((RR3&RR3M) && ((0xB&scc_regs[9])==9)); // set or clear SCC flag accordingly. Yes it's ugly but avoids unnecessary useless calls active_reg=0;// next access for RR0 or WR0 break; } break; case 2: // channel A to be done if necessary break; case 6: // channel B serial->setData(value); break; default: D(bug( "scc : illegal write address =$%x\n",addr)); break; } /* D(bug("HWput_b(0x%08x,0x%02x) at 0x%08x", addr+HW, value, showPC()));*/ } void SCC::IRQ(void) { uint16 temp; temp=serial->getStatus(); if(scc_regs[9]==0x20) temp|=0x800; // fake ExtStatusChange for HSMODEM install scc_regs[16]=temp&0xFF;// RR0B RR3=RR3M&(temp>>8); if((RR3)&&((scc_regs[9]&0xB)==9)) TriggerSCC(true); } // return : vector number, or zero if no interrupt int SCC::doInterrupt() { int vector; uint8 i; for(i = 0x20 ; i ; i>>=1) { // highest priority first if(RR3 & i & RR3M) break ; } vector = scc_regs[2];//WR2 = base of vectored interrupts for SCC if((scc_regs[9]&3)==0) return vector;// no status included in vector if((scc_regs[9]&0x32)!=0) { //shouldn't happen with TOS, (to be completed if needed) D(bug( "unexpected WR9 contents \n")); // no Soft IACK, Status Low control bit expected, no NV return 0; } switch(i) { case 0: /* this shouldn't happen :-) */ D(bug( "scc_do_interrupt called with no pending interrupt\n")); vector=0;// cancel break; case 1: vector|=2;// Ch B Ext/status change break; case 2: break;// Ch B Transmit buffer Empty case 4: vector|=4;// Ch B Receive Char available break; case 8: vector|=0xA;// Ch A Ext/status change break; case 16: vector|=8;// Ch A Transmit Buffer Empty break; case 32: vector|=0xC;// Ch A Receive Char available break; // special receive condition not yet processed } #if 0 D(bug( "SCC::doInterrupt : vector %d\n", vector)); #endif return vector ; } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/rtc.cpp0000664000175000017500000001423713454637622013274 0ustar joyjoy/* * rtc.cpp - Atari NVRAM emulation code * * Copyright (c) 2001-2006 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "rtc.h" #include "parameters.h" #define DEBUG 0 #include "debug.h" #define CKS_RANGE_START 14 #define CKS_RANGE_END (14+47) #define CKS_RANGE_LEN (CKS_RANGE_END-CKS_RANGE_START+1) #define CKS_LOC (14+48) uint8 nvram[64]={48,255,21,255,23,255,1,25,3,33,42,14,112,128, 0,0,0,0,0,0,0,0,17,46,32,1,255,0,0,56,135,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,31}; #define NVRAM_SYSTEM_LANGUAGE 20 #define NVRAM_KEYBOARD_LAYOUT 21 /* int byte15th = (colors & 7) | (80:40) << 3 | (VGA : TV) << 4 | (PAL : NTSC) << 5| overscan << 6 | STcompatible << 7); int byte14th = VGA:TV ? line doubling : half screen; */ RTC::RTC(memptr addr, uint32 size) : BASE_IO(addr, size) { init(); reset(); } void RTC::reset() { patch(); index = 0; } RTC::~RTC() { save(); // save NVRAM file upon exit automatically (should be conditionalized) } void RTC::init() { // set up the nvram filename getConfFilename(ARANYMNVRAM, nvram_filename, sizeof(nvram_filename)); load(); // load NVRAM file automatically } void RTC::patch() { if (bx_options.video.monitor != -1) { if (bx_options.video.monitor == 0) // VGA nvram[29] |= 0x10; // the monitor type should be set on a working copy only else nvram[29] &= ~0x10; } if (bx_options.video.boot_color_depth != -1) { int res = nvram[29] & 0x07; switch(bx_options.video.boot_color_depth) { case 1: res = 0; break; case 2: res = 1; break; case 4: res = 2; break; case 8: res = 3; break; case 16: res = 4; break; } nvram[29] &= ~0x07; nvram[29] |= res; // the booting resolution should be set on a working copy only } if (bx_options.tos.cookie_akp != -1) { nvram[NVRAM_SYSTEM_LANGUAGE] = bx_options.tos.cookie_akp & 0xff; nvram[NVRAM_KEYBOARD_LAYOUT] = (bx_options.tos.cookie_akp >> 8) & 0xff; } setChecksum(); } bool RTC::load() { bool ret = false; FILE *f = fopen(nvram_filename, "rb"); if (f != NULL) { uint8 fnvram[CKS_RANGE_LEN]; if (fread(fnvram, 1, CKS_RANGE_LEN, f) == CKS_RANGE_LEN) { memcpy(nvram+CKS_RANGE_START, fnvram, CKS_RANGE_LEN); ret = true; } fclose(f); if (false /*verbose*/) infoprint("NVRAM loaded from '%s'", nvram_filename); } else { panicbug("NVRAM not found at '%s'", nvram_filename); } return ret; } bool RTC::save() { bool ret = false; FILE *f = fopen(nvram_filename, "wb"); if (f != NULL) { if (fwrite(nvram+CKS_RANGE_START, 1, CKS_RANGE_LEN, f) == CKS_RANGE_LEN) { ret = true; } fclose(f); } else { panicbug("ERROR: cannot store NVRAM to '%s'", nvram_filename); } return ret; } uint8 RTC::handleRead(memptr addr) { addr -= getHWoffset(); if (addr > getHWsize()) return 0; switch(addr) { case 1: return index; case 3: return getData(); } return 0; } void RTC::handleWrite(memptr addr, uint8 value) { addr -= getHWoffset(); if (addr > getHWsize()) return; switch(addr) { case 1: setAddr(value); break; case 3: setData(value); break; } } void RTC::setAddr(uint8 value) { if (value < sizeof(nvram)) { index = value; } else { D(bug("NVRAM: trying to set out-of-bound position (%d)", value)); } } void RTC::freezeTime(void) { time_t tim = time(NULL); frozen_time = *(bx_options.gmtime ? gmtime(&tim) : localtime(&tim)); } struct tm RTC::getFrozenTime(void) { if (!(nvram[11] & 0x80)) freezeTime(); return frozen_time; } uint8 RTC::getData() { uint8 value; #define BIN_TO_BCD() \ if (!(nvram[11] & 0x04)) \ value = ((value / 10) << 4) | (value % 10) switch(index) { case 0: value = getFrozenTime().tm_sec; BIN_TO_BCD(); break; case 2: value = getFrozenTime().tm_min; BIN_TO_BCD(); break; case 4: value = getFrozenTime().tm_hour; if (!(nvram[11] & 0x02)) { uint8 pmflag = (value == 0 || value >= 13) ? 0x80 : 0; value = value % 12; if (value == 0) value = 12; BIN_TO_BCD(); value |= pmflag; } else { BIN_TO_BCD(); } break; case 6: value = getFrozenTime().tm_wday + 1; BIN_TO_BCD(); break; case 7: value = getFrozenTime().tm_mday; BIN_TO_BCD(); break; case 8: value = getFrozenTime().tm_mon+1; BIN_TO_BCD(); break; case 9: value = getFrozenTime().tm_year - 68; BIN_TO_BCD(); break; case 1: /* alarm seconds */ case 3: /* alarm minutes */ case 5: /* alarm hour */ value = nvram[index]; BIN_TO_BCD(); break; case 10: nvram[index] ^= 0x80; // toggle UIP bit value = nvram[index]; break; default: value = nvram[index]; break; } D(bug("Reading NVRAM data at %d = %d ($%02x) at %06x", index, value, value, showPC())); return value; } void RTC::setData(uint8 value) { D(bug("Writing NVRAM data at %d = %d ($%02x) at %06x", index, value, value, showPC())); switch (index) { case 11: if (value & 0x80) freezeTime(); break; } nvram[index] = value; } nvram_t RTC::getNvramKeyboard() { /* Return keyboard language setting */ return (nvram_t) nvram[NVRAM_KEYBOARD_LAYOUT]; } /* the checksum is over all bytes except the checksum bytes * themselves; these are at the very end */ void RTC::setChecksum() { int i; unsigned char sum = 0; for(i = CKS_RANGE_START; i <= CKS_RANGE_END; ++i) sum += nvram[i]; nvram[CKS_LOC] = ~sum; nvram[CKS_LOC+1] = sum; } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/romdiff.cpp0000664000175000017500000003654113454637622014134 0ustar joyjoy/* * This is the list of neccessary changes * for patching the original TOS 4.04 for 68040 compatibility. * * Autogenerated by tools/romdiff.c tool */ #include "romdiff.h" /* 00005a */ static unsigned char const romdiff_0[10] = { 0x4d, 0xfa, 0x00, 0x08, /* move.l #$00000808,d0 lea.l $00E00064(pc),a6 */ 0x4e, 0xf9, 0x00, 0xe7, 0xb0, 0x00 /* movec d0,cacr jmp $00E7B000 */ }; /* 00006a */ static unsigned char const romdiff_1[24] = { 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* pmove.l $00E49430,tc nops */ 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* pmove.l $00E49430,tt0 nops */ 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71 /* pmove.l $00E49430,tt1 nops */ }; /* 0003c4: patch for cpu type detection */ static unsigned char const romdiff_2[58] = { 0x20, 0xfc, 0x00, 0x00, 0x00, 0x28, /* moveq.l #0,d1 move.l #$00000028,(a0)+ */ /* movea.w #$0010,a2 */ 0x4e, 0x71, /* movea.l (a2),a3 nop */ 0xf5, 0x18, /* movea.l a7,a1 pflusha */ 0x4e, 0x71, /* move.l #$00E003F8,(a2) nop */ 0x20, 0xfc, 0x5f, 0x5f, 0x4e, 0x46, /* move.l #$5F5F4E46,(a0)+ */ /* move.w ccr,d0 */ 0x20, 0xfc, 0x00, 0xe7, 0xb1, 0x90, /* moveq.l #10,d1 move.l #$00E7B190,(a0)+ */ /* extb.l d0 */ /* moveq.l #20,d1 */ 0x4e, 0x71, 0x4e, 0x71, /* movec cacr,d0 */ 0x4e, 0x71, 0x4e, 0x71, /* bset #9,d0 */ 0x4e, 0x71, 0x4e, 0x71, /* movec d0,cacr */ 0x4e, 0x71, 0x4e, 0x71, /* movec cacr,d0 */ 0x4e, 0x71, 0x4e, 0x71, /* bclr #9,d0 */ 0x4e, 0x71, /* beq.s $00E003F8 */ 0x4e, 0x71, /* moveq.l #30,d1 */ 0x4e, 0x71, 0x4e, 0x71, /* movec d0,cacr */ 0x4e, 0x71, /* movea.l a1,a7 */ 0x4e, 0x71, /* move.l a3,(a2) */ 0x4e, 0x71 /* move.l d1,(a0)+ */ }; /* 00063e */ static unsigned char const romdiff_3[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d0,cacr nops */ }; /* 0006ac: skip 80 sec delay on coldboot, and rom crc check */ static unsigned char const romdiff_4[2] = { 0x60, 0x00 /* bcc $00E00746 bra $00E00746 */ }; /* 000756 */ static unsigned char const romdiff_5[10] = { 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* move.l #$00000808,d0 nops */ 0xf4, 0xf8, 0x4e, 0x71 /* movec d0,cacr cpusha bc; nop */ }; /* 000860 */ static unsigned char const romdiff_6[14] = { 0x4e, 0x71, 0xf4, 0xf8, /* movec cacr,d0 nop; cpusha bc */ 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* or.l #$00000808,d0 nops */ 0x4e, 0x71, 0x4e, 0x71 /* movec d0,cacr nops */ }; /* 000974 */ static unsigned char const romdiff_7[4] = { 0xa0, 0x00, 0x71, 0x04 /* movea.l ($0000047A).w,a0 aline #0; dc.w $7104 EmulOp(M68K_EMUL_INIT) */ }; /* 0014e6 */ static unsigned char const romdiff_8[32] = { 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* pmove.q $00E4995A,crp nops */ 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* pmove.l $00E49962,tc nops */ 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* pmove.l $00E49966,tt0 nops */ 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71 /* pmove.l $00E4996A,tt1 nops */ }; /* 0018d0 */ static unsigned char const romdiff_9[12] = { 0x4e, 0x71, 0xf4, 0xf8, /* movec cacr,d1 nop; cpusha bc */ 0x4e, 0x71, 0x4e, 0x71, /* ori.w #$0808,d1 nops */ 0x4e, 0x71, 0x4e, 0x71 /* movec d1,cacr nops */ }; /* 001952 */ static unsigned char const romdiff_10[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d0,cacr nops */ }; /* 001F24: ide timeout */ static unsigned char const romdiff_11[6] = { 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71 }; /* 00398c */ static unsigned char const romdiff_12[6] = { 0x4e, 0xf9, 0x00, 0xe7, 0xb0, 0xf4 /* move.w #$2700,sr jmp $00E7B0F4 */ }; /* 0039a0 */ static unsigned char const romdiff_13[24] = { 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* pmove.l $00E49B92,tc nops */ 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* pmove.l $00E49B92,tt0 nops */ 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71 /* pmove.l $00E49B92,tt1 nops */ }; /* 00990c */ static unsigned char const romdiff_14[12] = { 0x4e, 0x71, 0xf4, 0x98, /* movec cacr,d2 nop; cinva ic */ 0x4e, 0x71, 0x4e, 0x71, /* bset #3,d2 nops */ 0x4e, 0x71, 0x4e, 0x71 /* movec d2,cacr nops */ }; /* 011bd6 */ static unsigned char const romdiff_15[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d0,cacr nops */ }; /* 011c5e */ static unsigned char const romdiff_16[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d7,cacr nops */ }; /* 011d5a */ static unsigned char const romdiff_17[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d0,cacr nops */ }; /* 0125c0 */ static unsigned char const romdiff_18[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d5,cacr nops */ }; /* 012936 */ static unsigned char const romdiff_19[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d6,cacr nops */ }; /* 012982 */ static unsigned char const romdiff_20[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d6,cacr nops */ }; /* 0129e6 */ static unsigned char const romdiff_21[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d6,cacr nops */ }; /* 012bfe */ static unsigned char const romdiff_22[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d5,cacr nops */ }; /* 012c7e */ static unsigned char const romdiff_23[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d5,cacr nops */ }; /* 012cf6 */ static unsigned char const romdiff_24[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d2,cacr nops */ }; /* 012d74 */ static unsigned char const romdiff_25[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d0,cacr nops */ }; /* 012ddc */ static unsigned char const romdiff_26[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d0,cacr nops */ }; /* 012e9e */ static unsigned char const romdiff_27[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d0,cacr nops */ }; /* 017b54 */ static unsigned char const romdiff_28[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d0,cacr nops */ }; /* 017bec */ static unsigned char const romdiff_29[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d0,cacr nops */ }; /* 0250d8 */ static unsigned char const romdiff_30[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d7,cacr nops */ }; /* 044510 */ static unsigned char const romdiff_31[4] = { 0x4e, 0x71, 0x4e, 0x71 /* movec d7,cacr nops */ }; /* 07b000 */ static unsigned char const romdiff_32[420] = { 0x40, 0xc7, /* move.w sr,d7 */ 0x00, 0x7c, 0x07, 0x00, /* ori.w #$0700,sr */ 0x4e, 0x7a, 0x10, 0x06, /* movec dtt0,d1 */ 0x70, 0x00, /* moveq.l #0,d0 */ 0x4e, 0x7b, 0x00, 0x02, /* movec d0,cacr */ 0x4e, 0x71, /* nop */ 0xf4, 0xd8, /* cinva bc */ 0x4e, 0x71, /* nop */ 0x20, 0x3c, 0x00, 0xff, 0xe0, 0x40, /* move.l #$00FFE040,d0 */ 0x4e, 0x7b, 0x00, 0x06, /* movec d0,dtt0 */ 0x4e, 0x71, /* nop */ 0xf5, 0x18, /* pflusha */ 0x4e, 0x71, /* nop */ 0x7c, 0x00, /* moveq.l #0,d6 */ 0x4e, 0x7a, 0x08, 0x07, /* movec srp,d0 */ 0x4a, 0x80, /* tst.l d0 */ 0x67, 0x32, /* beq.s $00E7B062 */ 0xb0, 0xbc, 0x05, 0x00, 0x00, 0x00, /* cmp.l #$05000000,d0 */ 0x64, 0x2a, /* bcc.s $00E7B062 */ 0xb0, 0xbc, 0x00, 0xe0, 0x00, 0x00, /* cmp.l #$00E00000,d0 */ 0x65, 0x08, /* bcs.s $00E7B048 */ 0xb0, 0xbc, 0x01, 0x00, 0x00, 0x00, /* cmp.l #$01000000,d0 */ 0x65, 0x1a, /* bcs.s $00E7B062 */ /* e7b048 : */ 0x20, 0x40, /* movea.l d0,a0 */ 0x0c, 0xa8, 0x54, 0x52, 0x45, 0x45, 0xff, 0xe8, /* cmpi.l #$54524545,-24(a0) */ 0x66, 0x00, 0x00, 0x0e, /* bne.w $00E7B062 */ 0x0c, 0xa8, 0x4b, 0x45, 0x45, 0x50, 0xff, 0xec, /* cmpi.l #$4B454550,-20(a0) */ 0x66, 0x02, /* bne.s $00E7B062 */ 0x7c, 0x01, /* moveq.l #1,d6 */ /* e7b062 : */ 0x4e, 0x71, /* nop */ 0x4e, 0x7b, 0x10, 0x06, /* movec d1,dtt0 */ 0x4e, 0x71, /* nop */ 0xf5, 0x18, /* pflusha */ 0x4e, 0x71, /* nop */ 0x4a, 0x86, /* tst.l d6 */ 0x67, 0x2e, /* beq.s $00E7B0A0 */ 0x20, 0x08, /* move.l a0,d0 */ 0x4e, 0x7b, 0x08, 0x07, /* movec d0,srp */ 0x4e, 0x7b, 0x08, 0x06, /* movec d0,urp */ 0x20, 0x3c, 0x00, 0x00, 0xc0, 0x00, /* move.l #$0000C000,d0 */ 0x4e, 0x7b, 0x00, 0x03, /* movec d0,tc */ 0x70, 0x00, /* moveq.l #0,d0 */ 0x4e, 0x7b, 0x00, 0x04, /* movec d0,itt0 */ 0x4e, 0x7b, 0x00, 0x05, /* movec d0,itt1 */ 0x4e, 0x7b, 0x00, 0x06, /* movec d0,dtt0 */ 0x4e, 0x7b, 0x00, 0x07, /* movec d0,dtt1 */ 0x4e, 0x71, /* nop */ 0xf5, 0x18, /* pflusha */ 0x4e, 0x71, /* nop */ 0x60, 0x32, /* bra.s $00E7B0D2 */ /* e7b0a0 : */ 0x20, 0x3c, 0x00, 0xff, 0xe0, 0x00, /* move.l #$00FFE000,d0 */ 0x4e, 0x7b, 0x00, 0x04, /* movec d0,itt0 */ 0x20, 0x3c, 0x00, 0xff, 0xe0, 0x40, /* move.l #$00FFE040,d0 */ 0x4e, 0x7b, 0x00, 0x06, /* movec d0,dtt0 */ 0x70, 0x00, /* moveq.l #0,d0 */ 0x4e, 0x7b, 0x00, 0x05, /* movec d0,itt1 */ 0x4e, 0x7b, 0x00, 0x07, /* movec d0,dtt1 */ 0x70, 0x00, /* moveq.l #0,d0 */ 0x4e, 0x7b, 0x00, 0x03, /* movec d0,tc */ 0x4e, 0x7b, 0x08, 0x07, /* movec d0,srp */ 0x4e, 0x7b, 0x08, 0x06, /* movec d0,urp */ 0x4e, 0x71, /* nop */ 0xf5, 0x18, /* pflusha */ 0x4e, 0x71, /* nop */ /* e7b0d2 : */ 0x20, 0x3c, 0x00, 0x00, 0x80, 0x00, /* move.l #$00008000,d0 */ 0x4e, 0x7b, 0x00, 0x02, /* movec d0,cacr */ 0x46, 0xc7, /* move.w d7,sr */ 0x4e, 0xd6, /* jmp (a6) */ /* e7b0e0 : */ 0x08, 0xb8, 0x00, 0x05, 0x82, 0x66, /* bclr #5,($FFFF8266).w */ 0x08, 0xb8, 0x00, 0x06, 0x82, 0x66, /* bclr #6,($FFFF8266).w */ 0x08, 0xb8, 0x00, 0x00, 0x82, 0x0a, /* bclr #0,($FFFF820A).w */ 0x4e, 0xd0, /* jmp (a0) */ /* e7b0f4 : */ 0x00, 0x7c, 0x07, 0x00, /* ori.w #$0700,sr */ 0x72, 0x00, /* moveq.l #0,d1 */ 0x41, 0xf8, 0x98, 0x00, /* lea.l ($FFFF9800).w,a0 */ 0x30, 0x3c, 0x00, 0xff, /* move.w #$00FF,d0 */ 0x20, 0xc1, /* move.l d1,(a0)+ */ 0x51, 0xc8, 0xff, 0xfc, /* dbf d0,$00E7B102 */ 0x41, 0xf8, 0x82, 0x40, /* lea.l ($FFFF8240).w,a0 */ 0x70, 0x07, /* moveq.l #7,d0 */ 0x20, 0xc1, /* move.l d1,(a0)+ */ 0x51, 0xc8, 0xff, 0xfc, /* dbf d0,$00E7B10E */ 0x70, 0x00, /* moveq.l #0,d0 */ 0x4e, 0x7b, 0x00, 0x02, /* movec d0,cacr */ 0x4e, 0x71, /* nop */ 0x4e, 0x71, /* nop */ 0xf4, 0xd8, /* cinva bc */ 0x4e, 0x71, /* nop */ 0x41, 0xf8, 0x00, 0x08, /* lea.l ($00000008).w,a0 */ 0x20, 0x3c, 0x00, 0x00, 0x06, 0x00, /* move.l #$00000600,d0 */ 0x90, 0x88, /* sub.l a0,d0 */ 0xe4, 0x88, /* lsr.l #2,d0 */ 0x42, 0x81, /* clr.l d1 */ /* e7b132 : */ 0x20, 0xc1, /* move.l d1,(a0)+ */ 0x53, 0x80, /* subq.l #1,d0 */ 0x66, 0xfa, /* bne.s $00E7B132 */ 0x4e, 0x71, /* nop */ 0xf5, 0x18, /* pflusha */ 0x4e, 0x71, /* nop */ 0x20, 0x3c, 0x00, 0xff, 0xe0, 0x00, /* move.l #$00FFE000,d0 */ 0x4e, 0x7b, 0x00, 0x04, /* movec d0,itt0 */ 0x20, 0x3c, 0x00, 0xff, 0xe0, 0x40, /* move.l #$00FFE040,d0 */ 0x4e, 0x7b, 0x00, 0x06, /* movec d0,dtt0 */ 0x70, 0x00, /* moveq.l #0,d0 */ 0x4e, 0x7b, 0x00, 0x05, /* movec d0,itt1 */ 0x4e, 0x7b, 0x00, 0x07, /* movec d0,dtt1 */ 0x4e, 0x71, /* nop */ 0x70, 0x00, /* moveq.l #0,d0 */ 0x4e, 0x7b, 0x00, 0x03, /* movec d0,tc */ 0x4e, 0x71, /* nop */ 0x4e, 0x7b, 0x08, 0x07, /* movec d0,srp */ 0x4e, 0x7b, 0x08, 0x06, /* movec d0,urp */ 0x4e, 0x71, /* nop */ 0x4e, 0xf9, 0x00, 0xe0, 0x00, 0x30, /* jmp $00E00030 */ /* e7b176 : */ 0x4e, 0x7a, 0x00, 0x02, /* movec cacr,d0 */ 0x08, 0x80, 0x00, 0x0f, /* bclr #15,d0 */ 0x67, 0x0a, /* beq.s $00E7B18A */ 0x4e, 0x7b, 0x00, 0x02, /* movec d0,cacr */ 0x4e, 0x71, /* nop */ 0xf4, 0x98, /* cinva ic */ 0x4e, 0x71, /* nop */ 0x4e, 0xf9, 0xde, 0xad, 0xfa, 0xce, /* jmp $DEADFACE */ /* e7b190 : */ 0x20, 0x02, 0x10, 0x21, /* dc.l 0x20021021 */ 0x00, 0xe7, 0xb1, 0x9c, /* dc.l 0x00e7b19c */ 0x00, 0xe7, 0xb1, 0xa0, /* dc.l 0x00e7b1a0 */ /* e7b19c : */ 0x73, 0x00, /* dc.w 0x7300 (nf_id) */ 0x4e, 0x75, /* rts */ /* e7b1a0 : */ 0x73, 0x01, /* dc.w 0x7301 (nf_call) */ 0x4e, 0x75 /* rts */ }; ROMdiff const tosdiff[] = { { 0x00005a, 0x203c0000, 10, romdiff_0 }, { 0x00006a, 0xf0394000, 24, romdiff_1 }, { 0x0003c4, 0x7200347c, 58, romdiff_2 }, { 0x00063e, 0x4e7b0002, 4, romdiff_3 }, { 0x0006ac, 0x64000098, 2, romdiff_4 }, { 0x000756, 0x203c0000, 10, romdiff_5 }, { 0x000860, 0x4e7a0002, 14, romdiff_6 }, { 0x000974, 0x2078047a, 4, romdiff_7 }, { 0x0014e6, 0xf0394c00, 32, romdiff_8 }, { 0x0018d0, 0x4e7a1002, 12, romdiff_9 }, { 0x001952, 0x4e7b0002, 4, romdiff_10 }, { 0x001f24, 0xb0b804ba, 6, romdiff_11 }, { 0x00398c, 0x46fc2700, 6, romdiff_12 }, { 0x0039a0, 0xf0394000, 24, romdiff_13 }, { 0x00990c, 0x4e7a2002, 12, romdiff_14 }, { 0x011bd6, 0x4e7b0002, 4, romdiff_15 }, { 0x011c5e, 0x4e7b7002, 4, romdiff_16 }, { 0x011d5a, 0x4e7b0002, 4, romdiff_17 }, { 0x0125c0, 0x4e7b5002, 4, romdiff_18 }, { 0x012936, 0x4e7b6002, 4, romdiff_19 }, { 0x012982, 0x4e7b6002, 4, romdiff_20 }, { 0x0129e6, 0x4e7b6002, 4, romdiff_21 }, { 0x012bfe, 0x4e7b5002, 4, romdiff_22 }, { 0x012c7e, 0x4e7b5002, 4, romdiff_23 }, { 0x012cf6, 0x4e7b2002, 4, romdiff_24 }, { 0x012d74, 0x4e7b0002, 4, romdiff_25 }, { 0x012ddc, 0x4e7b0002, 4, romdiff_26 }, { 0x012e9e, 0x4e7b0002, 4, romdiff_27 }, { 0x017b54, 0x4e7b0002, 4, romdiff_28 }, { 0x017bec, 0x4e7b0002, 4, romdiff_29 }, { 0x0250d8, 0x4e7b7002, 4, romdiff_30 }, { 0x044510, 0x4e7b7002, 4, romdiff_31 }, { 0x07b000, 0xffffffff, 420, romdiff_32 }, { 0, 0, 0, 0 } }; aranym-1.1.0/src/parameters.cpp0000664000175000017500000017661613454637622014661 0ustar joyjoy/* * parameters.cpp - parameter init/load/save code * * Copyright (c) 2001-2010 ARAnyM developer team (see AUTHORS) * * Authors: * MJ Milan Jurik * Joy Petr Stehlik * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "parameters.h" #include "tools.h" // for safe_strncpy() #include "host.h" #include "host_filesys.h" #include "cfgopts.h" #include "natfeat/nf_base.h" #include "rtc.h" #include "vm_alloc.h" #include "main.h" #define DEBUG 0 #include "debug.h" #include #ifdef OS_darwin # include #endif #ifndef USE_JIT # define USE_JIT 0 #endif #ifndef USE_JIT_FPU # define USE_JIT_FPU 0 #endif #if defined(HW_SIGSEGV) # define MEMORY_CHECK "sseg" #elif defined(EXTENDED_SIGSEGV) && defined(ARAM_PAGE_CHECK) # define MEMORY_CHECK "pagehwsp" #elif defined(EXTENDED_SIGSEGV) # define MEMORY_CHECK "hwsp" #elif defined(ARAM_PAGE_CHECK) # define MEMORY_CHECK "page" #elif defined(NOCHECKBOUNDARY) # define MEMORY_CHECK "none" #else # define MEMORY_CHECK "full" #endif #ifndef FULLMMU # define FULLMMU 0 #endif #ifndef DSP_EMULATION # define DSP_EMULATION 0 #endif #ifndef DSP_DISASM # define DSP_DISASM 0 #endif #ifndef ENABLE_OPENGL # define ENABLE_OPENGL 0 #endif #ifndef HOSTFS_SUPPORT # define HOSTFS_SUPPORT 0 #endif #ifndef USES_FPU_CORE # define USES_FPU_CORE "" #endif #ifndef PROVIDES_NATFEATS # define PROVIDES_NATFEATS "" #endif enum { OPT_PROBE_FIXED = 256, OPT_FIXEDMEM_OFFSET, OPT_SET_OPTION }; static struct option const long_options[] = { #ifndef FixedSizeFastRAM {"fastram", required_argument, 0, 'F'}, #endif {"floppy", required_argument, 0, 'a'}, {"resolution", required_argument, 0, 'r'}, #ifdef DEBUGGER {"debug", no_argument, 0, 'D'}, #endif {"fullscreen", no_argument, 0, 'f'}, {"nomouse", no_argument, 0, 'N'}, {"refresh", required_argument, 0, 'v'}, {"monitor", required_argument, 0, 'm'}, #if HOSTFS_SUPPORT {"disk", required_argument, 0, 'd'}, #endif {"help", no_argument, 0, 'h'}, {"version", no_argument, 0, 'V'}, {"config", required_argument, 0, 'c'}, {"save", no_argument, 0, 's'}, #ifdef SDL_GUI {"gui", no_argument, 0, 'G'}, #endif {"swap-ide", no_argument, 0, 'S'}, {"emutos", no_argument, 0, 'e'}, {"locale", required_argument, 0, 'k'}, #ifdef ENABLE_LILO {"lilo", no_argument, 0, 'l'}, #endif {"display", required_argument, 0, 'P'}, #if FIXED_ADDRESSING {"probe-fixed", no_argument, 0, OPT_PROBE_FIXED }, {"fixedmem", required_argument, 0, OPT_FIXEDMEM_OFFSET }, #endif {"option", required_argument, 0, OPT_SET_OPTION }, {NULL, 0, NULL, 0} }; #define TOS_FILENAME "ROM" #define EMUTOS_FILENAME "emutos-aranym.img" #define FREEMINT_FILENAME "mintara.prg" #ifndef DEFAULT_SERIAL #define DEFAULT_SERIAL "/dev/ttyS0" #endif char *program_name; // set by main() bool boot_emutos = false; bool boot_lilo = false; bool halt_on_reboot = false; bool ide_swap = false; uint32 FastRAMSize; #if FIXED_ADDRESSING uintptr fixed_memory_offset = FMEMORY; #endif static char config_file[512]; #if !defined(XIF_HOST_IP) && !defined(XIF_ATARI_IP) && !defined(XIF_NETMASK) # define XIF_TYPE "ptp" # define XIF_TUNNEL "tap0" # define XIF_HOST_IP "192.168.0.1" # define XIF_ATARI_IP "192.168.0.2" # define XIF_NETMASK "255.255.255.0" # define XIF_MAC_ADDR "00:41:45:54:48:30" // just made up from \0AETH0 #endif static bool saveConfigFile = false; bx_options_t bx_options; static bx_atadevice_options_t *diskc = &bx_options.atadevice[0][0]; static bx_atadevice_options_t *diskd = &bx_options.atadevice[0][1]; #if defined(__IRIX__) /* IRIX doesn't have a GL library versioning system */ #define DEFAULT_OPENGL "libGL.so" #elif defined(__MACOSX__) /* note: this is the Quartz version, not the X11 version */ #define DEFAULT_OPENGL "/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib" #elif defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) /* note: this is the Windows version, not the cygwin version */ #define DEFAULT_OPENGL "opengl32.dll" #define DEFAULT_OSMESA "" #elif defined(__QNXNTO__) #define DEFAULT_OPENGL "libGL.so:libGL.so.3" #elif defined(__OpenBSD__) #define DEFAULT_OPENGL "libGL.so:libGL.so.16.0:libGL.so.15.0:libGL.so.14.0" #else #define DEFAULT_OPENGL "libGL.so:libGL.so.1" #endif #ifndef DEFAULT_OSMESA #define DEFAULT_OSMESA "libOSMesa.so:libOSMesa.8.so:libOSMesa.7.so:libOSMesa.6.so" #endif // configuration file /*************************************************************************/ static struct { SDL_Keycode current; int sdl1; const char *name; } const sdl_keysyms[] = { { SDLK_BACKSPACE, 8, "Backspace" }, { SDLK_TAB, 9, "Tab" }, { SDLK_CLEAR, 12, "Clear" }, { SDLK_RETURN, 13, "Return" }, { SDLK_PAUSE, 19, "Pause" }, { SDLK_ESCAPE, 27, "Escape" }, { SDLK_SPACE, 32, "Space" }, { SDLK_EXCLAIM, 33, "!" }, { SDLK_QUOTEDBL, 34, "\"" }, { SDLK_HASH, 35, "#" }, { SDLK_DOLLAR, 36, "$" }, { SDLK_AMPERSAND, 38, "&" }, { SDLK_QUOTE, 39, "'" }, { SDLK_LEFTPAREN, 40, "(" }, { SDLK_RIGHTPAREN, 41, ")" }, { SDLK_ASTERISK, 42, "*" }, { SDLK_PLUS, 43, "+" }, { SDLK_COMMA, 44, "," }, { SDLK_MINUS, 45, "-" }, { SDLK_PERIOD, 46, "." }, { SDLK_SLASH, 47, "/" }, { SDLK_0, 48, "0" }, { SDLK_1, 49, "1" }, { SDLK_2, 50, "2" }, { SDLK_3, 51, "3" }, { SDLK_4, 52, "4" }, { SDLK_5, 53, "5" }, { SDLK_6, 54, "6" }, { SDLK_7, 55, "7" }, { SDLK_8, 56, "8" }, { SDLK_9, 57, "9" }, { SDLK_COLON, 58, ":" }, { SDLK_SEMICOLON, 59, ";" }, { SDLK_LESS, 60, "<" }, { SDLK_EQUALS, 61, "=" }, { SDLK_GREATER, 62, ">" }, { SDLK_QUESTION, 63, "?" }, { SDLK_AT, 64, "@" }, { SDLK_LEFTBRACKET, 91, "[" }, { SDLK_BACKSLASH, 92, "\\" }, { SDLK_RIGHTBRACKET, 93, "]" }, { SDLK_CARET, 94, "^" }, { SDLK_UNDERSCORE, 95, "_" }, { SDLK_BACKQUOTE, 96, "`" }, { SDLK_a, 97, "a" }, { SDLK_b, 98, "b" }, { SDLK_c, 99, "c" }, { SDLK_d, 100, "d" }, { SDLK_e, 101, "e" }, { SDLK_f, 102, "f" }, { SDLK_g, 103, "g" }, { SDLK_h, 104, "h" }, { SDLK_i, 105, "i" }, { SDLK_j, 106, "j" }, { SDLK_k, 107, "k" }, { SDLK_l, 108, "l" }, { SDLK_m, 109, "m" }, { SDLK_n, 110, "n" }, { SDLK_o, 111, "o" }, { SDLK_p, 112, "p" }, { SDLK_q, 113, "q" }, { SDLK_r, 114, "r" }, { SDLK_s, 115, "s" }, { SDLK_t, 116, "t" }, { SDLK_u, 117, "u" }, { SDLK_v, 118, "v" }, { SDLK_w, 119, "w" }, { SDLK_x, 120, "x" }, { SDLK_y, 121, "y" }, { SDLK_z, 122, "z" }, { SDLK_DELETE, 127, "Delete" }, /* { SDLK_WORLD_0, 160 }, { SDLK_WORLD_1, 161 }, { SDLK_WORLD_2, 162 }, { SDLK_WORLD_3, 163 }, { SDLK_WORLD_4, 164 }, { SDLK_WORLD_5, 165 }, { SDLK_WORLD_6, 166 }, { SDLK_WORLD_7, 167 }, { SDLK_WORLD_8, 168 }, { SDLK_WORLD_9, 169 }, { SDLK_WORLD_10, 170 }, { SDLK_WORLD_11, 171 }, { SDLK_WORLD_12, 172 }, { SDLK_WORLD_13, 173 }, { SDLK_WORLD_14, 174 }, { SDLK_WORLD_15, 175 }, { SDLK_WORLD_16, 176 }, { SDLK_WORLD_17, 177 }, { SDLK_WORLD_18, 178 }, { SDLK_WORLD_19, 179 }, { SDLK_WORLD_20, 180 }, { SDLK_WORLD_21, 181 }, { SDLK_WORLD_22, 182 }, { SDLK_WORLD_23, 183 }, { SDLK_WORLD_24, 184 }, { SDLK_WORLD_25, 185 }, { SDLK_WORLD_26, 186 }, { SDLK_WORLD_27, 187 }, { SDLK_WORLD_28, 188 }, { SDLK_WORLD_29, 189 }, { SDLK_WORLD_30, 190 }, { SDLK_WORLD_31, 191 }, { SDLK_WORLD_32, 192 }, { SDLK_WORLD_33, 193 }, { SDLK_WORLD_34, 194 }, { SDLK_WORLD_35, 195 }, { SDLK_WORLD_36, 196 }, { SDLK_WORLD_37, 197 }, { SDLK_WORLD_38, 198 }, { SDLK_WORLD_39, 199 }, { SDLK_WORLD_40, 200 }, { SDLK_WORLD_41, 201 }, { SDLK_WORLD_42, 202 }, { SDLK_WORLD_43, 203 }, { SDLK_WORLD_44, 204 }, { SDLK_WORLD_45, 205 }, { SDLK_WORLD_46, 206 }, { SDLK_WORLD_47, 207 }, { SDLK_WORLD_48, 208 }, { SDLK_WORLD_49, 209 }, { SDLK_WORLD_50, 210 }, { SDLK_WORLD_51, 211 }, { SDLK_WORLD_52, 212 }, { SDLK_WORLD_53, 213 }, { SDLK_WORLD_54, 214 }, { SDLK_WORLD_55, 215 }, { SDLK_WORLD_56, 216 }, { SDLK_WORLD_57, 217 }, { SDLK_WORLD_58, 218 }, { SDLK_WORLD_59, 219 }, { SDLK_WORLD_60, 220 }, { SDLK_WORLD_61, 221 }, { SDLK_WORLD_62, 222 }, { SDLK_WORLD_63, 223 }, { SDLK_WORLD_64, 224 }, { SDLK_WORLD_65, 225 }, { SDLK_WORLD_66, 226 }, { SDLK_WORLD_67, 227 }, { SDLK_WORLD_68, 228 }, { SDLK_WORLD_69, 229 }, { SDLK_WORLD_70, 230 }, { SDLK_WORLD_71, 231 }, { SDLK_WORLD_72, 232 }, { SDLK_WORLD_73, 233 }, { SDLK_WORLD_74, 234 }, { SDLK_WORLD_75, 235 }, { SDLK_WORLD_76, 236 }, { SDLK_WORLD_77, 237 }, { SDLK_WORLD_78, 238 }, { SDLK_WORLD_79, 239 }, { SDLK_WORLD_80, 240 }, { SDLK_WORLD_81, 241 }, { SDLK_WORLD_82, 242 }, { SDLK_WORLD_83, 243 }, { SDLK_WORLD_84, 244 }, { SDLK_WORLD_85, 245 }, { SDLK_WORLD_86, 246 }, { SDLK_WORLD_87, 247 }, { SDLK_WORLD_88, 248 }, { SDLK_WORLD_89, 249 }, { SDLK_WORLD_90, 250 }, { SDLK_WORLD_91, 251 }, { SDLK_WORLD_92, 252 }, { SDLK_WORLD_93, 253 }, { SDLK_WORLD_94, 254 }, { SDLK_WORLD_95, 255 }, */ { SDLK_KP_0, 256, "Keypad 0" }, { SDLK_KP_1, 257, "Keypad 1" }, { SDLK_KP_2, 258, "Keypad 2" }, { SDLK_KP_3, 259, "Keypad 3" }, { SDLK_KP_4, 260, "Keypad 4" }, { SDLK_KP_5, 261, "Keypad 5" }, { SDLK_KP_6, 262, "Keypad 6" }, { SDLK_KP_7, 263, "Keypad 7" }, { SDLK_KP_8, 264, "Keypad 8" }, { SDLK_KP_9, 265, "Keypad 9" }, { SDLK_KP_PERIOD, 266, "Keypad ." }, { SDLK_KP_DIVIDE, 267, "Keypad /" }, { SDLK_KP_MULTIPLY, 268, "Keypad *" }, { SDLK_KP_MINUS, 269, "Keypad -" }, { SDLK_KP_PLUS, 270, "Keypad +" }, { SDLK_KP_ENTER, 271, "Keypad Enter" }, { SDLK_KP_EQUALS, 272, "Keypad =" }, { SDLK_UP, 273, "Up" }, { SDLK_DOWN, 274, "Down" }, { SDLK_RIGHT, 275, "Right" }, { SDLK_LEFT, 276, "Left" }, { SDLK_INSERT, 277, "Insert" }, { SDLK_HOME, 278, "Home" }, { SDLK_END, 279, "End" }, { SDLK_PAGEUP, 280, "PageUp" }, { SDLK_PAGEDOWN, 281, "PageDown" }, { SDLK_F1, 282, "F1" }, { SDLK_F2, 283, "F2" }, { SDLK_F3, 284, "F3" }, { SDLK_F4, 285, "F4" }, { SDLK_F5, 286, "F5" }, { SDLK_F6, 287, "F6" }, { SDLK_F7, 288, "F7" }, { SDLK_F8, 289, "F8" }, { SDLK_F9, 290, "F9" }, { SDLK_F10, 291, "F10" }, { SDLK_F11, 292, "F11" }, { SDLK_F12, 293, "F12" }, { SDLK_F13, 294, "F13" }, { SDLK_F14, 295, "F14" }, { SDLK_F15, 296, "F15" }, { SDLK_NUMLOCKCLEAR, 300, "Numlock" }, { SDLK_CAPSLOCK, 301, "CapsLock" }, { SDLK_SCROLLLOCK, 302, "ScrollLock" }, { SDLK_RSHIFT, 303, "Right Shift" }, { SDLK_LSHIFT, 304, "Left Shift" }, { SDLK_RCTRL, 305, "Right Ctrl" }, { SDLK_LCTRL, 306, "Left Ctrl" }, { SDLK_RALT, 307, "Right Alt" }, { SDLK_LALT, 308, "Left Alt" }, { SDLK_RGUI, 309, "Right GUI" }, { SDLK_LGUI, 310, "Left GUI" }, // { SDLK_LSUPER, 311 }, // { SDLK_RSUPER, 312 }, { SDLK_MODE, 313, "ModeSwitch" }, // { SDLK_COMPOSE, 314 }, { SDLK_HELP, 315, "Help" }, { SDLK_PRINTSCREEN, 316, "PrintScreen" }, { SDLK_SYSREQ, 317, "SysReq" }, { SDLK_CANCEL, 318, "Cancel" }, { SDLK_MENU, 319, "Menu" }, { SDLK_POWER, 320, "Power" }, // { SDLK_EURO, 321 }, { SDLK_UNDO, 322, "Undo" }, #if SDL_VERSION_ATLEAST(2, 0, 0) { SDLK_APPLICATION, 0, "Application" }, { SDLK_F16, 0, "F16" }, { SDLK_F17, 0, "F17" }, { SDLK_F18, 0, "F18" }, { SDLK_F19, 0, "F19" }, { SDLK_F20, 0, "F20" }, { SDLK_F21, 0, "F21" }, { SDLK_F22, 0, "F22" }, { SDLK_F23, 0, "F23" }, { SDLK_F24, 0, "F24" }, { SDLK_EXECUTE, 0, "Execute" }, { SDLK_SELECT, 0, "Select" }, { SDLK_STOP, 0, "Stop" }, { SDLK_AGAIN, 0, "Again" }, { SDLK_CUT, 0, "Cut" }, { SDLK_COPY, 0, "Copy" }, { SDLK_PASTE, 0, "Paste" }, { SDLK_FIND, 0, "Find" }, { SDLK_MUTE, 0, "Mute" }, { SDLK_VOLUMEUP, 0, "VolumeUp" }, { SDLK_VOLUMEDOWN, 0, "VolumeDown" }, { SDLK_KP_COMMA, 0, "Keypad ," }, { SDLK_PRIOR, 0, "Prior" }, { SDLK_RETURN2, 0, "Return" }, { SDLK_SEPARATOR, 0, "Separator" }, { SDLK_OUT, 0, "Out" }, { SDLK_OPER, 0, "Oper" }, { SDLK_CLEARAGAIN, 0, "Clear / Again" }, { SDLK_CRSEL, 0, "CrSel" }, { SDLK_EXSEL, 0, "ExSel" }, { SDLK_KP_00, 0, "Keypad 00" }, { SDLK_KP_000, 0, "Keypad 000" }, { SDLK_THOUSANDSSEPARATOR, 0, "ThousandsSeparator" }, { SDLK_DECIMALSEPARATOR, 0, "DecimalSeparator" }, { SDLK_CURRENCYUNIT, 0, "CurrencyUnit" }, { SDLK_CURRENCYSUBUNIT, 0, "CurrencySubUnit" }, #endif }; static const char *sdl_getkeyname(SDL_Keycode sym) { for (unsigned int i = 0; i < sizeof(sdl_keysyms) / sizeof(sdl_keysyms[0]); i++) if (sdl_keysyms[i].current == sym) return sdl_keysyms[i].name; return SDL_GetKeyName(sym); } char *keysymToString(char *buffer, const bx_hotkey *keysym) { *buffer = 0; SDL_Keymod mods = keysym->mod; if (mods & KMOD_LSHIFT) strcat(buffer, "LS+"); if (mods & KMOD_RSHIFT) strcat(buffer, "RS+"); if (mods & KMOD_LCTRL) strcat(buffer, "LC+"); if (mods & KMOD_RCTRL) strcat(buffer, "RC+"); if (mods & KMOD_LALT) strcat(buffer, "LA+"); if (mods & KMOD_RALT) strcat(buffer, "RA+"); if (mods & KMOD_LGUI) strcat(buffer, "LM+"); if (mods & KMOD_RGUI) strcat(buffer, "RM+"); if (mods & KMOD_MODE) strcat(buffer, "MO+"); if (keysym->sym) { strcat(buffer, sdl_getkeyname(keysym->sym)); } else { // mod keys only, remove last plus sign int len = strlen(buffer); if (len > 0 && buffer[len-1] == '+') buffer[len-1] = '\0'; } return buffer; } bool stringToKeysym(bx_hotkey *keysym, const char *string) { int sym, mod; if ( sscanf(string, "%i:%i", &sym, &mod) == 2) { /* * old format with direct encoding; keysyms are from SDL < 2.0 * We must translate the SDL 1.2.x values */ for (unsigned int i = 0; i < sizeof(sdl_keysyms) / sizeof(sdl_keysyms[0]); i++) { if (sym == sdl_keysyms[i].sdl1) { keysym->mod = SDL_Keymod(mod); keysym->sym = sdl_keysyms[i].current; return true; } } if (mod != 0 && sym == 0) { /* modifiers only */ keysym->mod = SDL_Keymod(mod); keysym->sym = SDLK_UNKNOWN; return true; } return false; } mod = 0; #define MOD(s, k) \ if (strncmp(string, s, sizeof(s) - 1) == 0 && \ (string[sizeof(s) - 1] == '+' || string[sizeof(s) - 1] == '\0')) \ { mod |= k; string += sizeof(s) - 1; if (*string == '+') string++; } MOD("LS", KMOD_LSHIFT); MOD("RS", KMOD_RSHIFT); MOD("LC", KMOD_LCTRL); MOD("RC", KMOD_RCTRL); MOD("LA", KMOD_LALT); MOD("RA", KMOD_RALT); MOD("LM", KMOD_LGUI); MOD("RM", KMOD_RGUI); MOD("MO", KMOD_MODE); #undef MOD for (unsigned int i = 0; i < sizeof(sdl_keysyms) / sizeof(sdl_keysyms[0]); i++) { if (strcmp(sdl_keysyms[i].name, string) == 0) { keysym->mod = SDL_Keymod(mod); keysym->sym = sdl_keysyms[i].current; return true; } } if (mod != 0) { /* modifiers only */ keysym->mod = SDL_Keymod(mod); keysym->sym = SDLK_UNKNOWN; return true; } return false; } /* * split a pathlist into an array of strings. * returns a single block of malloced memory */ char **split_pathlist(const char *pathlist) { size_t size; const char *p; size_t cnt; char *dst; char **result; if (pathlist == NULL) return NULL; /* count words */ cnt = 2; p = pathlist; while (*p != '\0') { if (*p == ';' || *p == ':') cnt++; p++; } size = (p - pathlist) + cnt * (sizeof(char *) + 2); result = (char **)malloc(size); if (result == NULL) return NULL; p = pathlist; dst = (char *)(result + cnt); cnt = 0; p = pathlist; while (*p != '\0') { result[cnt] = dst; while (*p != '\0') { if (*p == ';' || *p == ':') { size_t len = dst - result[cnt]; if (*p == ':' && len == 1 && isalnum(p[-1])) { *dst++ = *p++; continue; } break; } *dst++ = *p++; } *dst++ = '\0'; cnt++; if (*p != '\0') p++; } result[cnt] = NULL; return result; } /*************************************************************************/ struct Config_Tag global_conf[]={ { "FastRAM", Int_Tag, &bx_options.fastram, 0, 0}, { "FixedMemoryOffset", HexLong_Tag, &bx_options.fixed_memory_offset, 0, 0}, // FIXME: implement Ptr_Tag { "Floppy", Path_Tag, bx_options.floppy.path, sizeof(bx_options.floppy.path), 0}, { "TOS", Path_Tag, bx_options.tos.tos_path, sizeof(bx_options.tos.tos_path), 0}, { "EmuTOS", Path_Tag, bx_options.tos.emutos_path, sizeof(bx_options.tos.emutos_path), 0}, { "Bootstrap", Path_Tag, bx_options.bootstrap_path, sizeof(bx_options.bootstrap_path), 0}, { "BootstrapArgs", String_Tag, bx_options.bootstrap_args, sizeof(bx_options.bootstrap_args), 0}, { "BootDrive", Char_Tag, &bx_options.bootdrive, 0, 0}, { "GMTime", Bool_Tag, &bx_options.gmtime, 0, 0}, { "EpsEnabled", Bool_Tag, &bx_options.cpu.eps_enabled, 0, 0}, { "EpsMax", Int_Tag, &bx_options.cpu.eps_max, 0, 0}, { "SnapshotDir", Path_Tag, bx_options.snapshot_dir, sizeof(bx_options.snapshot_dir), 0}, { NULL , Error_Tag, NULL, 0, 0 } }; static void preset_global() { strcpy(bx_options.tos.tos_path, TOS_FILENAME); strcpy(bx_options.tos.emutos_path, EMUTOS_FILENAME); strcpy(bx_options.bootstrap_path, FREEMINT_FILENAME); bx_options.gmtime = false; // use localtime by default strcpy(bx_options.floppy.path, ""); #ifdef FixedSizeFastRAM FastRAMSize = FixedSizeFastRAM * 1024 * 1024; #else FastRAMSize = 0; #endif #if FIXED_ADDRESSING bx_options.fixed_memory_offset = fixed_memory_offset; #endif bx_options.cpu.eps_enabled = false; bx_options.cpu.eps_max = 20; strcpy(bx_options.snapshot_dir, "snapshots"); } static void postload_global() { #ifndef FixedSizeFastRAM FastRAMSize = bx_options.fastram * 1024 * 1024; #endif #if FIXED_ADDRESSING fixed_memory_offset = bx_options.fixed_memory_offset; if (fixed_memory_offset == 0) fixed_memory_offset = FMEMORY; #endif if (!isalpha(bx_options.bootdrive)) bx_options.bootdrive = 0; } static void presave_global() { bx_options.fastram = FastRAMSize / 1024 / 1024; #if FIXED_ADDRESSING bx_options.fixed_memory_offset = fixed_memory_offset; #endif if (bx_options.bootdrive == 0) bx_options.bootdrive = ' '; } /*************************************************************************/ struct Config_Tag startup_conf[]={ { "GrabMouse", Bool_Tag, &bx_options.startup.grabMouseAllowed, 0, 0}, { "Debugger", Bool_Tag, &bx_options.startup.debugger, 0, 0}, { NULL , Error_Tag, NULL, 0, 0 } }; static void preset_startup() { bx_options.startup.debugger = false; bx_options.startup.grabMouseAllowed = true; } static void postload_startup() { } static void presave_startup() { } /*************************************************************************/ struct Config_Tag jit_conf[]={ { "JIT", Bool_Tag, &bx_options.jit.jit, 0, 0}, { "JITFPU", Bool_Tag, &bx_options.jit.jitfpu, 0, 0}, { "JITCacheSize", Int_Tag, &bx_options.jit.jitcachesize, 0, 0}, { "JITLazyFlush", Int_Tag, &bx_options.jit.jitlazyflush, 0, 0}, { "JITBlackList", String_Tag, &bx_options.jit.jitblacklist, sizeof(bx_options.jit.jitblacklist), 0}, { "JITInline", Bool_Tag, &bx_options.jit.jitinline, 0, 0}, { "JITDebug", Bool_Tag, &bx_options.jit.jitdebug, 0, 0}, { NULL , Error_Tag, NULL, 0, 0 } }; static void preset_jit() { bx_options.jit.jit = true; bx_options.jit.jitfpu = true; bx_options.jit.jitcachesize = 8192; bx_options.jit.jitlazyflush = 1; strcpy(bx_options.jit.jitblacklist, ""); } static void postload_jit() { } static void presave_jit() { } /*************************************************************************/ struct Config_Tag tos_conf[]={ { "Cookie_MCH", HexLong_Tag, &bx_options.tos.cookie_mch, 0, 0}, { "RedirConsole", Bool_Tag, &bx_options.tos.redirect_CON, 0, 0}, { NULL , Error_Tag, NULL, 0, 0 } }; static void preset_tos() { bx_options.tos.redirect_CON = false; bx_options.tos.cookie_mch = 0x00050000; // ARAnyM bx_options.tos.cookie_akp = -1; } static void postload_tos() { } static void presave_tos() { } /*************************************************************************/ struct Config_Tag video_conf[]={ { "FullScreen", Bool_Tag, &bx_options.video.fullscreen, 0, 0}, { "BootColorDepth", Byte_Tag, &bx_options.video.boot_color_depth, 0, 0}, { "VidelRefresh", Byte_Tag, &bx_options.video.refresh, 0, 0}, { "VidelMonitor", Byte_Tag, &bx_options.video.monitor, 0, 0}, { "SingleBlitComposing", Bool_Tag, &bx_options.video.single_blit_composing, 0, 0}, { "SingleBlitRefresh", Bool_Tag, &bx_options.video.single_blit_refresh, 0, 0}, { "WindowPos", String_Tag, bx_options.video.window_pos, sizeof(bx_options.video.window_pos), 0}, { NULL , Error_Tag, NULL, 0, 0 } }; static void preset_video() { bx_options.video.fullscreen = false; // Boot in Fullscreen bx_options.video.boot_color_depth = -1; // Boot in color depth bx_options.video.monitor = -1; // preserve default NVRAM monitor bx_options.video.refresh = 2; // 25 Hz update strcpy(bx_options.video.window_pos, ""); // ARAnyM window position on screen bx_options.video.single_blit_composing = false; // Use chunky screen composing bx_options.video.single_blit_refresh = false; // Use chunky screen refreshing } static void postload_video() { if (bx_options.video.refresh < 1 || bx_options.video.refresh > 200) bx_options.video.refresh = 2; // default if input parameter is insane } static void presave_video() { } /*************************************************************************/ struct Config_Tag opengl_conf[]={ { "Enabled", Bool_Tag, &bx_options.opengl.enabled, 0, 0}, { "Filtered", Bool_Tag, &bx_options.opengl.filtered, 0, 0}, { "Library", String_Tag, bx_options.opengl.library, sizeof(bx_options.opengl.library), 0}, { NULL , Error_Tag, NULL, 0, 0 } }; static void preset_opengl() { bx_options.opengl.enabled = false; bx_options.opengl.filtered = false; strcpy(bx_options.opengl.library, DEFAULT_OPENGL); } static void postload_opengl() { #ifndef ENABLE_OPENGL bx_options.opengl.enabled = false; #endif } static void presave_opengl() { } /*************************************************************************/ #define BX_DISK_CONFIG(Disk) struct Config_Tag Disk ## _configs[] = { \ { "Present", Bool_Tag, &Disk->present, 0, 0}, \ { "IsCDROM", Bool_Tag, &Disk->isCDROM, 0, 0}, \ { "ByteSwap", Bool_Tag, &Disk->byteswap, 0, 0}, \ { "ReadOnly", Bool_Tag, &Disk->readonly, 0, 0}, \ { "Path", Path_Tag, Disk->path, sizeof(Disk->path), 0}, \ { "Cylinders", Int_Tag, &Disk->cylinders, 0, 0}, \ { "Heads", Int_Tag, &Disk->heads, 0, 0}, \ { "SectorsPerTrack", Int_Tag, &Disk->spt, 0, 0}, \ { "ModelName", String_Tag, Disk->model, sizeof(Disk->model), 0}, \ { NULL , Error_Tag, NULL, 0, 0 } \ } BX_DISK_CONFIG(diskc); BX_DISK_CONFIG(diskd); static void set_ide(unsigned int number, const char *dev_path, int cylinders, int heads, int spt, int byteswap, bool readonly, const char *model_name) { // Autodetect ??? if (cylinders == -1) { if ((cylinders = get_geometry(dev_path, geoCylinders)) == -1) { panicbug("Disk %s has unknown geometry.", dev_path); exit(EXIT_FAILURE); } } if (heads == -1) { if ((heads = get_geometry(dev_path, geoHeads)) == -1) { panicbug("Disk %s has unknown geometry.", dev_path); exit(EXIT_FAILURE); } } if (spt == -1) { if ((spt = get_geometry(dev_path, geoSpt)) == -1) { panicbug("Disk %s has unknown geometry.", dev_path); exit(EXIT_FAILURE); } } if (byteswap == -1) { if ((byteswap = get_geometry(dev_path, geoByteswap)) == -1) { panicbug("Disk %s has unknown geometry.", dev_path); exit(EXIT_FAILURE); } } bx_atadevice_options_t *disk; switch(number) { case 0: disk = diskc; break; case 1: disk = diskd; break; default: disk = NULL; break; } if (disk != NULL) { disk->present = strlen(dev_path) > 0; disk->isCDROM = false; disk->byteswap = byteswap; disk->readonly = readonly; disk->cylinders = cylinders; disk->heads = heads; disk->spt = spt; strcpy(disk->path, dev_path); safe_strncpy(disk->model, model_name, sizeof(disk->model)); } if (cylinders && heads && spt) { D(bug("IDE%d CHS geometry: %d/%d/%d %d", number, cylinders, heads, spt, byteswap)); } } static void preset_ide() { set_ide(0, "", 0, 0, 0, false, false, "Master"); set_ide(1, "", 0, 0, 0, false, false, "Slave"); bx_options.newHardDriveSupport = true; } static void postload_ide() { } static void presave_ide() { } /*************************************************************************/ #define DISK_CONFIG(Disk) struct Config_Tag Disk ## _configs[] = { \ { "Path", Path_Tag, Disk->path, sizeof(Disk->path), 0}, \ { "Present", Bool_Tag, &Disk->present, 0, 0}, \ { "PartID", String_Tag, Disk->partID, sizeof(Disk->partID), 0}, \ { "ByteSwap", Bool_Tag, &Disk->byteswap, 0, 0}, \ { "ReadOnly", Bool_Tag, &Disk->readonly, 0, 0}, \ { NULL , Error_Tag, NULL, 0, 0 } \ } static bx_scsidevice_options_t *disk0 = &bx_options.disks[0]; static bx_scsidevice_options_t *disk1 = &bx_options.disks[1]; static bx_scsidevice_options_t *disk2 = &bx_options.disks[2]; static bx_scsidevice_options_t *disk3 = &bx_options.disks[3]; static bx_scsidevice_options_t *disk4 = &bx_options.disks[4]; static bx_scsidevice_options_t *disk5 = &bx_options.disks[5]; static bx_scsidevice_options_t *disk6 = &bx_options.disks[6]; static bx_scsidevice_options_t *disk7 = &bx_options.disks[7]; DISK_CONFIG(disk0); DISK_CONFIG(disk1); DISK_CONFIG(disk2); DISK_CONFIG(disk3); DISK_CONFIG(disk4); DISK_CONFIG(disk5); DISK_CONFIG(disk6); DISK_CONFIG(disk7); static void preset_disk() { for(int i=0; i 0) { char *ptrLast = bx_options.aranymfs.drive[i].rootPath + len-1; if (*ptrLast == ':') { *ptrLast = '\0'; bx_options.aranymfs.drive[i].halfSensitive = false; } #if defined(__CYGWIN__) || defined(_WIN32) // interpet "C:" here as the root directory of C:, not the current directory if (DriveFromLetter(bx_options.aranymfs.drive[i].rootPath[0]) >= 0 && bx_options.aranymfs.drive[i].rootPath[1] == ':' && bx_options.aranymfs.drive[i].rootPath[2] == '\0') strcat(bx_options.aranymfs.drive[i].rootPath, DIRSEPARATOR); #endif #if defined(__CYGWIN__) cygwin_path_to_win32(bx_options.aranymfs.drive[i].rootPath, sizeof(bx_options.aranymfs.drive[i].rootPath)); #endif strd2upath(bx_options.aranymfs.drive[i].rootPath, bx_options.aranymfs.drive[i].rootPath); len = strlen(bx_options.aranymfs.drive[i].rootPath); ptrLast = bx_options.aranymfs.drive[i].rootPath + len-1; if (*ptrLast != *DIRSEPARATOR) strcat(bx_options.aranymfs.drive[i].rootPath, DIRSEPARATOR); } } } static void presave_arafs() { for(int i=0; i < HOSTFS_MAX_DRIVES; i++) { safe_strncpy(bx_options.aranymfs.drive[i].configPath, bx_options.aranymfs.drive[i].rootPath, sizeof(bx_options.aranymfs.drive[i].configPath)); if ( strlen(bx_options.aranymfs.drive[i].rootPath) > 0 && !bx_options.aranymfs.drive[i].halfSensitive ) { // set the halfSensitive indicator strcat( bx_options.aranymfs.drive[i].configPath, ":" ); } } } /*************************************************************************/ // struct Config_Tag ethernet_conf[]={ #define ETH_CONFIG(Eth) struct Config_Tag Eth ## _conf[] = { \ { "Type", String_Tag, &Eth->type, sizeof(Eth->type), 0}, \ { "Tunnel", String_Tag, &Eth->tunnel, sizeof(Eth->tunnel), 0}, \ { "HostIP", String_Tag, &Eth->ip_host, sizeof(Eth->ip_host), 0}, \ { "AtariIP", String_Tag, &Eth->ip_atari, sizeof(Eth->ip_atari), 0}, \ { "Netmask", String_Tag, &Eth->netmask, sizeof(Eth->netmask), 0}, \ { "MAC", String_Tag, &Eth->mac_addr, sizeof(Eth->mac_addr), 0}, \ { NULL , Error_Tag, NULL, 0, 0 } \ } static bx_ethernet_options_t *eth0 = &bx_options.ethernet[0]; static bx_ethernet_options_t *eth1 = &bx_options.ethernet[1]; static bx_ethernet_options_t *eth2 = &bx_options.ethernet[2]; static bx_ethernet_options_t *eth3 = &bx_options.ethernet[3]; ETH_CONFIG(eth0); ETH_CONFIG(eth1); ETH_CONFIG(eth2); ETH_CONFIG(eth3); #define ETH(i, x) bx_options.ethernet[i].x static void preset_ethernet() { // ETH[0] with some default values safe_strncpy(ETH(0, type), XIF_TYPE, sizeof(ETH(0, type))); safe_strncpy(ETH(0, tunnel), XIF_TUNNEL, sizeof(ETH(0, tunnel))); safe_strncpy(ETH(0, ip_host), XIF_HOST_IP, sizeof(ETH(0, ip_host))); safe_strncpy(ETH(0, ip_atari), XIF_ATARI_IP, sizeof(ETH(0, ip_atari))); safe_strncpy(ETH(0, netmask), XIF_NETMASK, sizeof(ETH(0, netmask))); safe_strncpy(ETH(0, mac_addr), XIF_MAC_ADDR, sizeof(ETH(0, mac_addr))); // ETH[1] - ETH[MAX_ETH] are empty by default for(int i=1; ienable(MIDI(enabled)); } static void presave_midi() { } /*************************************************************************/ #define NFCDROM_ENTRY(c,n) \ { c, Int_Tag, &bx_options.nfcdroms[n].physdevtohostdev, sizeof(bx_options.nfcdroms[n].physdevtohostdev), 0} struct Config_Tag nfcdroms_conf[]={ NFCDROM_ENTRY("A", 0), NFCDROM_ENTRY("B", 1), NFCDROM_ENTRY("C", 2), NFCDROM_ENTRY("D", 3), NFCDROM_ENTRY("E", 4), NFCDROM_ENTRY("F", 5), NFCDROM_ENTRY("G", 6), NFCDROM_ENTRY("H", 7), NFCDROM_ENTRY("I", 8), NFCDROM_ENTRY("J", 9), NFCDROM_ENTRY("K", 10), NFCDROM_ENTRY("L", 11), NFCDROM_ENTRY("M", 12), NFCDROM_ENTRY("N", 13), NFCDROM_ENTRY("O", 14), NFCDROM_ENTRY("P", 15), NFCDROM_ENTRY("Q", 16), NFCDROM_ENTRY("R", 17), NFCDROM_ENTRY("S", 18), NFCDROM_ENTRY("T", 19), NFCDROM_ENTRY("U", 20), NFCDROM_ENTRY("V", 21), NFCDROM_ENTRY("W", 22), NFCDROM_ENTRY("X", 23), NFCDROM_ENTRY("Y", 24), NFCDROM_ENTRY("Z", 25), NFCDROM_ENTRY("0", 26), NFCDROM_ENTRY("1", 27), NFCDROM_ENTRY("2", 28), NFCDROM_ENTRY("3", 29), NFCDROM_ENTRY("4", 30), NFCDROM_ENTRY("5", 31), { NULL , Error_Tag, NULL, 0, 0 } }; static void preset_nfcdroms() { for(int i=0; i < CD_MAX_DRIVES; i++) { bx_options.nfcdroms[i].physdevtohostdev = -1; } } static void postload_nfcdroms() { } static void presave_nfcdroms() { } /*************************************************************************/ struct Config_Tag autozoom_conf[]={ { "Enabled", Bool_Tag, &bx_options.autozoom.enabled, 0, 0}, { "IntegerCoefs", Bool_Tag, &bx_options.autozoom.integercoefs, 0, 0}, { "FixedSize", Bool_Tag, &bx_options.autozoom.fixedsize, 0, 0}, { "Width", Int_Tag, &bx_options.autozoom.width, 0, 0}, { "Height", Int_Tag, &bx_options.autozoom.height, 0, 0}, { NULL , Error_Tag, NULL, 0, 0 } }; static void preset_autozoom() { bx_options.autozoom.enabled = false; bx_options.autozoom.integercoefs = false; bx_options.autozoom.fixedsize = false; bx_options.autozoom.width = 640; bx_options.autozoom.height = 480; } static void postload_autozoom() { } static void presave_autozoom() { } /*************************************************************************/ #define OSMESA_CONF(x) bx_options.osmesa.x struct Config_Tag osmesa_conf[]={ { "ChannelSize", Int_Tag, &OSMESA_CONF(channel_size), 0, 0}, { "LibGL", String_Tag, &OSMESA_CONF(libgl), sizeof(OSMESA_CONF(libgl)), 0}, { "LibOSMesa", String_Tag, &OSMESA_CONF(libosmesa), sizeof(OSMESA_CONF(libosmesa)), 0}, { NULL , Error_Tag, NULL, 0, 0 } }; static void preset_osmesa() { OSMESA_CONF(channel_size) = 0; safe_strncpy(OSMESA_CONF(libgl), DEFAULT_OPENGL, sizeof(OSMESA_CONF(libgl))); safe_strncpy(OSMESA_CONF(libosmesa), DEFAULT_OSMESA, sizeof(OSMESA_CONF(libosmesa))); } static void postload_osmesa() { } static void presave_osmesa() { } /*************************************************************************/ #define PARALLEL_CONF(x) bx_options.parallel.x struct Config_Tag parallel_conf[]={ { "Type", String_Tag, &PARALLEL_CONF(type), sizeof(PARALLEL_CONF(type)), 0}, { "File", String_Tag, &PARALLEL_CONF(file), sizeof(PARALLEL_CONF(file)), 0}, { "Parport", String_Tag, &PARALLEL_CONF(parport), sizeof(PARALLEL_CONF(parport)), 0}, { "Enabled", Bool_Tag, &PARALLEL_CONF(enabled), 0, 0}, { NULL , Error_Tag, NULL, 0, 0 } }; static void preset_parallel() { safe_strncpy(PARALLEL_CONF(type), "file", sizeof(PARALLEL_CONF(type))); safe_strncpy(PARALLEL_CONF(file), "stderr", sizeof(PARALLEL_CONF(type))); safe_strncpy(PARALLEL_CONF(parport), "/dev/parport0", sizeof(PARALLEL_CONF(parport))); } static void postload_parallel() { } static void presave_parallel() { } /*************************************************************************/ #define SERIAL_CONF(x) bx_options.serial.x struct Config_Tag serial_conf[]={ { "Serport", String_Tag, &SERIAL_CONF(serport), sizeof(SERIAL_CONF(serport)), 0}, { "Enabled", Bool_Tag, &SERIAL_CONF(enabled), 0, 0}, { NULL , Error_Tag, NULL, 0, 0 } }; static void preset_serial() { safe_strncpy(SERIAL_CONF(serport), DEFAULT_SERIAL, sizeof(SERIAL_CONF(serport))); } static void postload_serial() { } static void presave_serial() { } /*************************************************************************/ #define NATFEAT_CONF(x) bx_options.natfeats.x struct Config_Tag natfeat_conf[]={ { "CDROM", String_Tag, &NATFEAT_CONF(cdrom_driver), sizeof(NATFEAT_CONF(cdrom_driver)), 0}, { "Vdi", String_Tag, &NATFEAT_CONF(vdi_driver), sizeof(NATFEAT_CONF(vdi_driver)), 0}, { "HOSTEXEC", Bool_Tag, &NATFEAT_CONF(hostexec_enabled), 0, 0}, { NULL , Error_Tag, NULL, 0, 0 } }; static void preset_natfeat() { safe_strncpy(NATFEAT_CONF(cdrom_driver), "sdl", sizeof(NATFEAT_CONF(cdrom_driver))); safe_strncpy(NATFEAT_CONF(vdi_driver), "soft", sizeof(NATFEAT_CONF(vdi_driver))); NATFEAT_CONF(hostexec_enabled) = false; } static void postload_natfeat() { #ifndef ENABLE_OPENGL safe_strncpy(NATFEAT_CONF(vdi_driver), "soft", sizeof(NATFEAT_CONF(vdi_driver))); #endif } static void presave_natfeat() { } /*************************************************************************/ #define NFVDI_CONF(x) bx_options.nfvdi.x struct Config_Tag nfvdi_conf[]={ { "UseHostMouseCursor", Bool_Tag, &NFVDI_CONF(use_host_mouse_cursor), 0, 0}, { NULL , Error_Tag, NULL, 0, 0 } }; static void preset_nfvdi() { NFVDI_CONF(use_host_mouse_cursor) = false; } static void postload_nfvdi() { } static void presave_nfvdi() { } /*************************************************************************/ static char hotkeys[10][HOTKEYS_STRING_SIZE]; struct Config_Tag hotkeys_conf[]={ { "Setup", String_Tag, hotkeys[0], HOTKEYS_STRING_SIZE, 0}, { "Quit", String_Tag, hotkeys[1], HOTKEYS_STRING_SIZE, 0}, { "Reboot", String_Tag, hotkeys[2], HOTKEYS_STRING_SIZE, 0}, { "ColdReboot", String_Tag, hotkeys[3], HOTKEYS_STRING_SIZE, 0}, { "Ungrab", String_Tag, hotkeys[4], HOTKEYS_STRING_SIZE, 0}, { "Debug", String_Tag, hotkeys[5], HOTKEYS_STRING_SIZE, 0}, { "Screenshot", String_Tag, hotkeys[6], HOTKEYS_STRING_SIZE, 0}, { "Fullscreen", String_Tag, hotkeys[7], HOTKEYS_STRING_SIZE, 0}, { "Sound", String_Tag, hotkeys[8], HOTKEYS_STRING_SIZE, 0}, { NULL , Error_Tag, NULL, 0, 0 } }; typedef struct { char *string; bx_hotkey *keysym; } HOTKEYS_REL; HOTKEYS_REL hotkeys_rel[]={ { hotkeys[0], &bx_options.hotkeys.setup }, { hotkeys[1], &bx_options.hotkeys.quit }, { hotkeys[2], &bx_options.hotkeys.warmreboot }, { hotkeys[3], &bx_options.hotkeys.coldreboot }, { hotkeys[4], &bx_options.hotkeys.ungrab }, { hotkeys[5], &bx_options.hotkeys.debug }, { hotkeys[6], &bx_options.hotkeys.screenshot }, { hotkeys[7], &bx_options.hotkeys.fullscreen }, { hotkeys[8], &bx_options.hotkeys.sound } }; static void preset_hotkeys() { // default values #ifdef OS_darwin strcpy(hotkeys[0], "LM+,"); strcpy(hotkeys[1], "LM+q"); strcpy(hotkeys[2], "LM+r"); strcpy(hotkeys[3], "LS+LM+r"); strcpy(hotkeys[4], "LM+Escape"); strcpy(hotkeys[5], "LM+d"); strcpy(hotkeys[6], "LM+s"); strcpy(hotkeys[7], "LM+f"); strcpy(hotkeys[8], "RM+s"); #else strcpy(hotkeys[0], "Pause"); strcpy(hotkeys[1], "LS+Pause"); strcpy(hotkeys[2], "LC+Pause"); strcpy(hotkeys[3], "LS+LC+Pause"); strcpy(hotkeys[4], "LS+LC+LA+Escape"); strcpy(hotkeys[5], "LA+Pause"); strcpy(hotkeys[6], "PrintScreen"); strcpy(hotkeys[7], "ScrollLock"); strcpy(hotkeys[8], "RA+s"); #endif } static void postload_hotkeys() { // convert from string to pair of ints for(uint16 i=0; iaudio.Enable(bx_options.audio.enabled); } static void presave_audio() { } /*************************************************************************/ struct Config_Tag joysticks_conf[]={ { "Ikbd0", Int_Tag, &bx_options.joysticks.ikbd0, 0, 0}, { "Ikbd1", Int_Tag, &bx_options.joysticks.ikbd1, 0, 0}, { "JoypadA", Int_Tag, &bx_options.joysticks.joypada, 0, 0}, { "JoypadAButtons", String_Tag, &bx_options.joysticks.joypada_mapping, sizeof(bx_options.joysticks.joypada_mapping), 0}, { "JoypadB", Int_Tag, &bx_options.joysticks.joypadb, 0, 0}, { "JoypadBButtons", String_Tag, &bx_options.joysticks.joypadb_mapping, sizeof(bx_options.joysticks.joypadb_mapping), 0}, { NULL , Error_Tag, NULL, 0, 0 } }; static void preset_joysticks() { bx_options.joysticks.ikbd0 = -1; /* This one is wired to mouse */ bx_options.joysticks.ikbd1 = 0; bx_options.joysticks.joypada = -1; bx_options.joysticks.joypadb = -1; safe_strncpy(bx_options.joysticks.joypada_mapping, "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16", sizeof(bx_options.joysticks.joypada_mapping)); safe_strncpy(bx_options.joysticks.joypadb_mapping, "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16", sizeof(bx_options.joysticks.joypadb_mapping)); } static void postload_joysticks() { } static void presave_joysticks() { } /*************************************************************************/ struct Config_Tag cmdline_conf[]={ { "IdeSwap", Bool_Tag, &ide_swap, 0, 0 }, { "BootEmutos", Bool_Tag, &boot_emutos, 0, 0 }, { "BootLilo", Bool_Tag, &boot_lilo, 0, 0 }, { "HaltOnReboot", Bool_Tag, &halt_on_reboot, 0, 0 }, { "ConfigFile", Path_Tag, config_file, sizeof(config_file), 0 }, #ifdef SDL_GUI { "StartupGUI", Bool_Tag, &startupGUI, 0, 0 }, #endif { NULL , Error_Tag, NULL, 0, 0 } }; /*************************************************************************/ static struct Config_Section const all_sections[] = { { "[GLOBAL]", global_conf, false, preset_global, postload_global, presave_global }, { "[STARTUP]", startup_conf, false, preset_startup, postload_startup, presave_startup }, { "[IKBD]", ikbd_conf, false, preset_ikbd, postload_ikbd, presave_ikbd }, { "[HOTKEYS]", hotkeys_conf, false, preset_hotkeys, postload_hotkeys, presave_hotkeys }, { "[JIT]", jit_conf, false, preset_jit, postload_jit, presave_jit }, { "[VIDEO]", video_conf, false, preset_video, postload_video, presave_video }, { "[TOS]", tos_conf, false, preset_tos, postload_tos, presave_tos }, { "[IDE0]", diskc_configs, false, preset_ide, postload_ide, presave_ide }, // beware of ide_swap { "[IDE1]", diskd_configs, false, 0, 0, 0 }, /* DISKS sections */ { "[PARTITION0]", disk0_configs, false, preset_disk, postload_disk, presave_disk }, { "[PARTITION1]", disk1_configs, true, 0, 0, 0 }, { "[PARTITION2]", disk2_configs, true, 0, 0, 0 }, { "[PARTITION3]", disk3_configs, true, 0, 0, 0 }, { "[PARTITION4]", disk4_configs, true, 0, 0, 0 }, { "[PARTITION5]", disk5_configs, true, 0, 0, 0 }, { "[PARTITION6]", disk6_configs, true, 0, 0, 0 }, { "[PARTITION7]", disk7_configs, true, 0, 0, 0 }, { "[HOSTFS]", arafs_conf, false, preset_arafs, postload_arafs, presave_arafs }, { "[OPENGL]", opengl_conf, false, preset_opengl, postload_opengl, presave_opengl }, /* MAX_ETH sections */ { "[ETH0]", eth0_conf, false, preset_ethernet, postload_ethernet, presave_ethernet }, { "[ETH1]", eth1_conf, true, 0, 0, 0 }, { "[ETH2]", eth2_conf, true, 0, 0, 0 }, { "[ETH3]", eth3_conf, true, 0, 0, 0 }, { "[LILO]", lilo_conf, false, preset_lilo, postload_lilo, presave_lilo }, { "[MIDI]", midi_conf, false, preset_midi, postload_midi, presave_midi }, { "[CDROMS]", nfcdroms_conf, false, preset_nfcdroms, postload_nfcdroms, presave_nfcdroms }, { "[AUTOZOOM]", autozoom_conf, false, preset_autozoom, postload_autozoom, presave_autozoom }, { "[NFOSMESA]", osmesa_conf, false, preset_osmesa, postload_osmesa, presave_osmesa }, { "[PARALLEL]", parallel_conf, false, preset_parallel, postload_parallel, presave_parallel }, { "[SERIAL]", serial_conf, false, preset_serial, postload_serial, presave_serial }, { "[NATFEATS]", natfeat_conf, false, preset_natfeat, postload_natfeat, presave_natfeat }, { "[NFVDI]", nfvdi_conf, false, preset_nfvdi, postload_nfvdi, presave_nfvdi }, { "[AUDIO]", audio_conf, false, preset_audio, postload_audio, presave_audio }, { "[JOYSTICKS]", joysticks_conf,false, preset_joysticks, postload_joysticks, presave_joysticks }, { "cmdline", cmdline_conf, false, 0, 0, 0 }, { 0, 0, false, 0, 0, 0 } }; const struct Config_Section *getConfigSections(void) { return all_sections; } /*************************************************************************/ static void usage (int status) { printf ("Usage: %s [OPTIONS]\n", program_name); printf ("\ Options:\n\ -a, --floppy NAME floppy image file NAME\n\ -e, --emutos boot EmuTOS\n\ -N, --nomouse don't grab mouse at startup\n\ -f, --fullscreen start in fullscreen\n\ -v, --refresh VIDEL refresh rate in VBL (default 2)\n\ -r, --resolution boot in X color depth [1,2,4,8,16]\n\ -m, --monitor attached monitor: 0 = VGA, 1 = TV\n\ -c, --config FILE read different configuration file\n\ -s, --save save configuration file\n\ -S, --swap-ide swap IDE drives\n\ -P or
set window position\n\ -k, --locale set NVRAM keyboard layout and language\n\ --option section:key:value set configuration value\n\ "); #ifdef SDL_GUI printf(" -G, --gui open GUI at startup\n"); #endif #if HOSTFS_SUPPORT printf(" -d, --disk CHAR:PATH[:] HostFS mapping, e.g. d:/atari/d_drive\n"); #endif #ifdef ENABLE_LILO printf(" -l, --lilo boot a linux kernel\n"); printf(" -H, --halt linux kernel halts on reboot\n"); #endif #ifndef FixedSizeFastRAM printf(" -F, --fastram SIZE FastRAM size (in MB)\n"); #endif #if FIXED_ADDRESSING printf(" --fixedmem OFFSET use OFFSET for Atari memory (default: 0x%08x)\n", (unsigned int) fixed_memory_offset); printf(" --probe-fixed try to figure out best value for above offset\n"); #endif #ifdef DEBUGGER printf(" -D, --debug start debugger\n"); #endif printf ("\ \n\ -h, --help display this help and exit\n\ -V, --version output version information and exit\n\ "); exit (status); } static void preset_cfg() { for (const struct Config_Section *section = all_sections; section->name; section++) { if (section->skip_if_empty) { /* * This is assumed in saveSettings(). * Check this here because it is not called on startup. */ if (section->tags->type != String_Tag && section->tags->type != Path_Tag) { panicbug("type of first entry in config section %s not String or Path", section->name); abort(); } } if (section->preset) section->preset(); } } static void postload_cfg() { for (const struct Config_Section *section = all_sections; section->name; section++) if (section->postload) section->postload(); } static void presave_cfg() { for (const struct Config_Section *section = all_sections; section->name; section++) if (section->presave) section->presave(); } static void print_version(void) { loadSettings(config_file); // infoprint("%s\n", version_string); infoprint("Configuration:"); infoprint("SDL (compiled) : %d.%d.%d", SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL); SDL_version linked; SDL_GetVersion(&linked); infoprint("SDL (linked) : %d.%d.%d", linked.major, linked.minor, linked.patch); infoprint("CPU JIT compiler : %s%s", USE_JIT ? "enabled" : "disabled", USE_JIT ? (bx_options.jit.jit ? " (active)" : " (inactive)") : ""); infoprint("FPU JIT compiler : %s%s", USE_JIT_FPU ? "enabled" : "disabled", USE_JIT_FPU ? (bx_options.jit.jitfpu ? " (active)" : " (inactive)") : ""); #if FIXED_ADDRESSING if (fixed_memory_offset != FMEMORY) infoprint("Addressing mode : fixed (0x%08x; default: 0x%08x)", (unsigned int) fixed_memory_offset, FMEMORY); else infoprint("Addressing mode : fixed (0x%08x)", (unsigned int) fixed_memory_offset); #else infoprint("Addressing mode : %s", DIRECT_ADDRESSING ? "direct" : "normal"); #endif infoprint("Memory check : %s", MEMORY_CHECK); infoprint("Full MMU : %s", FULLMMU ? "enabled" : "disabled"); infoprint("FPU : %s", USES_FPU_CORE); infoprint("DSP : %s", DSP_EMULATION ? "enabled" : "disabled"); infoprint("DSP disassembler : %s", DSP_DISASM ? "enabled" : "disabled"); infoprint("OpenGL support : %s", ENABLE_OPENGL ? "enabled" : "disabled"); infoprint("Native features : %s", PROVIDES_NATFEATS); } static void early_cmdline_check(int argc, char **argv) { for (int c = 0; c < argc; c++) { char *p = argv[c]; if (strcmp(p, "-S") == 0 || strcmp(p, "--swap-ide") == 0) ide_swap = true; else if ((strcmp(p, "-c") == 0) || (strcmp(p, "--config") == 0)) { if ((c + 1) < argc) { setConfigFile(argv[c + 1]); } else { panicbug("config switch requires one parameter"); exit(EXIT_FAILURE); } } else if ((strcmp(p, "-h") == 0) || (strcmp(p, "--help") == 0)) { usage(EXIT_SUCCESS); } else if ((strcmp(p, "-V") == 0) || (strcmp(p, "--version") == 0)) { print_version(); exit(EXIT_SUCCESS); #if FIXED_ADDRESSING } else if ((strcmp(p, "--probe-fixed") == 0)) { vm_probe_fixed(); exit(EXIT_SUCCESS); #endif } } } static int process_cmdline(int argc, char **argv) { int c; while ((c = getopt_long (argc, argv, "a:" /* floppy image file */ "e" /* boot emutos */ #ifdef ENABLE_LILO "l" /* boot lilo */ "H" /* halt on reboot */ #endif #ifdef DEBUGGER "D" /* debugger */ #endif #ifndef FixedSizeFastRAM "F:" /* FastRAM */ #endif "N" /* no mouse */ "f" /* fullscreen */ "v:" /* VIDEL refresh */ "r:" /* resolution */ "m:" /* attached monitor */ #if HOSTFS_SUPPORT "d:" /* filesystem assignment */ #endif "s" /* save config file */ "c:" /* path to config file */ #ifdef SDL_GUI "G" /* GUI startup */ #endif "P:" /* position of the window */ "S" /* swap IDE drives */ "k:" /* keyboard layout */ "h" /* help */ "V" /* version */, long_options, (int *) 0)) != EOF) { switch (c) { case 'V': case 'h': case 'c': case 'S': /* processed in early_cmdline_check already */ break; #ifdef SDL_GUI case 'G': startupGUI = true; break; #endif #ifdef DEBUGGER case 'D': bx_options.startup.debugger = true; break; #endif case 'e': boot_emutos = true; break; case 'f': bx_options.video.fullscreen = true; break; #ifdef ENABLE_LILO case 'l': boot_lilo = true; break; case 'H': halt_on_reboot = true; break; #endif case 'v': bx_options.video.refresh = atoi(optarg); break; case 'N': bx_options.startup.grabMouseAllowed = false; break; case 'm': bx_options.video.monitor = atoi(optarg); break; case 'a': if ((strlen(optarg)-1) > sizeof(bx_options.floppy.path)) panicbug("Floppy image filename longer than %u chars.", (unsigned)sizeof(bx_options.floppy.path)); safe_strncpy(bx_options.floppy.path, optarg, sizeof(bx_options.floppy.path)); break; case 'r': bx_options.video.boot_color_depth = atoi(optarg); break; case 'P': safe_strncpy(bx_options.video.window_pos, optarg, sizeof(bx_options.video.window_pos)); break; #if HOSTFS_SUPPORT case 'd': if ( strlen(optarg) < 4 || optarg[1] != ':') { panicbug("Not enough parameters for -d"); break; } // set the drive { int8 i = DriveFromLetter(optarg[0]); if (i <= 0 || i >= HOSTFS_MAX_DRIVES) { panicbug("Drive out of [A-Z] range for -d"); break; } safe_strncpy( bx_options.aranymfs.drive[i].configPath, optarg+2, sizeof(bx_options.aranymfs.drive[i].configPath) ); // Note: tail colon processing (case sensitivity flag) is // done later by calling postload_cfg. // Just make sure postload_cfg is called after this. } break; #endif case 's': saveConfigFile = true; break; #ifndef FixedSizeFastRAM case 'F': bx_options.fastram = atoi(optarg); break; #endif case 'k': { static struct { char name[6]; nvram_t id; } const countries[] = { { "us", COUNTRY_US }, { "en_US", COUNTRY_US }, { "de", COUNTRY_DE }, { "de_DE", COUNTRY_DE }, { "fr", COUNTRY_FR }, { "fr_FR", COUNTRY_FR }, { "uk", COUNTRY_UK }, { "en_GB", COUNTRY_UK }, { "es", COUNTRY_ES }, { "es_ES", COUNTRY_ES }, { "it", COUNTRY_IT }, { "it_IT", COUNTRY_IT }, { "se", COUNTRY_SE }, { "sv_SE", COUNTRY_SE }, { "ch", COUNTRY_SF }, { "fr_CH", COUNTRY_SF }, { "cd", COUNTRY_SG }, { "de_CH", COUNTRY_SG }, { "tr", COUNTRY_TR }, { "tr_TR", COUNTRY_TR }, { "fi", COUNTRY_FI }, { "fi_FI", COUNTRY_FI }, { "no", COUNTRY_NO }, { "no_NO", COUNTRY_NO }, { "dk", COUNTRY_DK }, { "da_DK", COUNTRY_DK }, { "sa", COUNTRY_SA }, { "ar_SA", COUNTRY_SA }, { "nl", COUNTRY_NL }, { "nl_NL", COUNTRY_NL }, { "cz", COUNTRY_CZ }, { "cS_CZ", COUNTRY_CZ }, { "hu", COUNTRY_HU }, { "hu_HU", COUNTRY_HU }, { "pl", COUNTRY_PL }, { "pl_PL", COUNTRY_PL }, { "lt", COUNTRY_PL }, { "lt_LT", COUNTRY_LT }, { "ru", COUNTRY_RU }, { "ru_RU", COUNTRY_RU }, { "ee", COUNTRY_EE }, { "et_EE", COUNTRY_EE }, { "by", COUNTRY_BY }, { "be_BY", COUNTRY_BY }, { "ua", COUNTRY_UA }, { "uk_UA", COUNTRY_UA }, { "sk", COUNTRY_SK }, { "sk_SK", COUNTRY_SK }, { "ro", COUNTRY_RO }, { "ro_RO", COUNTRY_RO }, { "bg", COUNTRY_BG }, { "bg_BG", COUNTRY_BG }, { "si", COUNTRY_SI }, { "sl_SI", COUNTRY_SI }, { "hr", COUNTRY_HR }, { "hr_HR", COUNTRY_HR }, { "rs", COUNTRY_RS }, { "sr_RS", COUNTRY_RS }, { "me", COUNTRY_ME }, { "sr_ME", COUNTRY_ME }, { "mk", COUNTRY_MK }, { "mk_MK", COUNTRY_MK }, { "gr", COUNTRY_GR }, { "el_GR", COUNTRY_GR }, { "lv", COUNTRY_LV }, { "lv_LV", COUNTRY_LV }, { "il", COUNTRY_IL }, { "he_IL", COUNTRY_IL }, { "za", COUNTRY_ZA }, { "af_ZA", COUNTRY_ZA }, /* ambigious language */ { "pt", COUNTRY_PT }, { "pt_PT", COUNTRY_PT }, { "be", COUNTRY_BE }, { "fr_BE", COUNTRY_BE }, { "jp", COUNTRY_JP }, { "ja_JP", COUNTRY_JP }, { "cn", COUNTRY_CN }, { "zh_CN", COUNTRY_CN }, { "kr", COUNTRY_KR }, { "ko_KR", COUNTRY_KR }, { "vn", COUNTRY_VN }, { "vi_VN", COUNTRY_VN }, { "in", COUNTRY_IN }, { "ar_IN", COUNTRY_IN }, /* ambigious language */ { "ir", COUNTRY_IR }, { "fa_IR", COUNTRY_IR }, { "mn", COUNTRY_MN }, { "mn_MN", COUNTRY_MN }, { "np", COUNTRY_NP }, { "ne_NP", COUNTRY_NP }, { "la", COUNTRY_LA }, { "lo_LA", COUNTRY_LA }, { "kh", COUNTRY_KH }, { "km_KH", COUNTRY_KH }, { "id", COUNTRY_ID }, { "id_ID", COUNTRY_ID }, { "bd", COUNTRY_BD }, { "bn_BD", COUNTRY_BD }, }; bx_options.tos.cookie_akp = -1; for(unsigned i=0; i 0) { char *ptrLast = buffer + dirlen - 1; if (*ptrLast != '/' && *ptrLast != '\\') strcat(buffer, DIRSEPARATOR); } strcat(buffer, file); } else { panicbug("addFilename(\"%s\") - buffer too small!", file); safe_strncpy(buffer, file, bufsize); // at least the filename } strd2upath(buffer, buffer); return buffer; } // build a complete path to an user-specific file char *getConfFilename(const char *file, char *buffer, unsigned int bufsize) { Host::getConfFolder(buffer, bufsize); // Does the folder exist? struct stat buf; if (stat(buffer, &buf) == -1) { D(bug("Creating config folder '%s'", buffer)); Host::makeDir(buffer); } return addFilename(buffer, file, bufsize); } // build a complete path to system wide data file char *getDataFilename(const char *file, char *buffer, unsigned int bufsize) { char *name = getConfFilename(file, buffer, bufsize); struct stat buf; if (stat(name, &buf) == -1) { Host::getDataFolder(buffer, bufsize); name = addFilename(buffer, file, bufsize); } return name; } static bool decode_ini_file(const char *rcfile) { // Does the config exist? struct stat buf; if (stat(rcfile, &buf) == -1) { infoprint("Config file '%s' not found. It's been created with default values. Edit it to suit your needs.", rcfile); saveConfigFile = true; #ifdef SDL_GUI startupGUI = true; #endif return false; } infoprint("Using config file: '%s'", rcfile); bool verbose = false; char home_folder[1024]; char data_folder[1024]; Host::getHomeFolder(home_folder, sizeof(home_folder)); Host::getDataFolder(data_folder, sizeof(data_folder)); ConfigOptions cfgopts(rcfile, home_folder, data_folder); for (const struct Config_Section *section = all_sections; section->name; section++) { struct Config_Tag *conf = section->tags; if (*section->name != '[') continue; if (ide_swap) { if (conf == diskc_configs) conf = diskd_configs; else if (conf == diskd_configs) conf = diskc_configs; } cfgopts.process_config(conf, section->name, verbose); } return true; } bool loadSettings(const char *cfg_file) { preset_cfg(); bool ret = decode_ini_file(cfg_file); postload_cfg(); return ret; } bool saveSettings(const char *fs) { presave_cfg(); char home_folder[1024]; char data_folder[1024]; Host::getHomeFolder(home_folder, sizeof(home_folder)); Host::getDataFolder(data_folder, sizeof(data_folder)); ConfigOptions cfgopts(fs, home_folder, data_folder); bool first = true; for (const struct Config_Section *section = all_sections; section->name; section++, first = false) { struct Config_Tag *conf = section->tags; if (*section->name != '[') continue; if (ide_swap) { if (conf == diskc_configs) conf = diskd_configs; else if (conf == diskd_configs) conf = diskc_configs; } if (!section->skip_if_empty || strlen((const char *)conf->buf) != 0) if (cfgopts.update_config(conf, section->name) < 0) { if (first) { panicbug("Error while writing the '%s' config file.", fs); return false; } } } return true; } /* * set config variable by name * 'section_name' must be passed without brackets here */ bool setConfigValue(const char *section_name, const char *key, const char *value) { char home_folder[1024]; char data_folder[1024]; Host::getHomeFolder(home_folder, sizeof(home_folder)); Host::getDataFolder(data_folder, sizeof(data_folder)); ConfigOptions cfgopts(config_file, home_folder, data_folder); int len = strlen(section_name); for (const struct Config_Section *section = all_sections; section->name; section++) { struct Config_Tag *conf = section->tags; if (*section->name != '[') continue; if (strncmp(section->name + 1, section_name, len) != 0 || section->name[len + 1] != ']') continue; if (ide_swap) { if (conf == diskc_configs) conf = diskd_configs; else if (conf == diskd_configs) conf = diskc_configs; } for (; conf->code; conf++) { if (strcmp(conf->code, key) == 0) { bool ret = cfgopts.set_config_value(conf, value); if (ret && section->postload) section->postload(); return ret; } } return false; } return false; } void listConfigValues(bool type) { char home_folder[1024]; char data_folder[1024]; Host::getHomeFolder(home_folder, sizeof(home_folder)); Host::getDataFolder(data_folder, sizeof(data_folder)); ConfigOptions cfgopts(config_file, home_folder, data_folder); for (const struct Config_Section *section = all_sections; section->name; section++) { const char *name = section->name; if (*name == '[') name++; const char *end = strchr(name, ']'); int len = (int)(end ? (end - name) : strlen(name)); char *section_name = strdup(name); section_name[len] = '\0'; for (struct Config_Tag *conf = section->tags; conf->code; conf++) { if (ide_swap) { if (conf == diskc_configs) conf = diskd_configs; else if (conf == diskd_configs) conf = diskc_configs; } char *value = cfgopts.get_config_value(conf, type); printf("%s:%s:%s\n", section_name, conf->code, value ? value : ""); } free(section_name); } } bool decode_switches(int argc, char **argv) { getConfFilename(ARANYMCONFIG, config_file, sizeof(config_file)); early_cmdline_check(argc, argv); preset_cfg(); decode_ini_file(config_file); process_cmdline(argc, argv); postload_cfg(); if (saveConfigFile) { D(bug("Storing configuration to file '%s'", config_file)); if (saveSettings(config_file)) loadSettings(config_file); } return true; } const char *getConfigFile() { return config_file; } void setConfigFile(const char *filename) { safe_strncpy(config_file, filename, sizeof(config_file)); } aranym-1.1.0/src/parallel_x86.cpp0000664000175000017500000000425113454637622015000 0ustar joyjoy/* Parallel port emulation, Linux/X86 hardware access ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include "parallel.h" #include "parallel_x86.h" #define DEBUG 0 #include "debug.h" #define outportb(a,b) outb(b,a) #define inportb(a) inb(a) #define permission(a,b,c) ioperm(a,b,c) ParallelX86::ParallelX86(void) { gcontrol = (1 << 2); /* Ucc */ port = 0x378; old_strobe = -1; old_busy = -1; // get the permission permission(port,4,1); } ParallelX86::~ParallelX86(void) { } void ParallelX86::reset(void) { } inline void ParallelX86::set_ctrl(int x) { gcontrol |= (1 << x); outportb(port+2, gcontrol); } inline void ParallelX86::clr_ctrl(int x) { gcontrol &=~(1 << x); outportb(port+2, gcontrol); } void ParallelX86::setDirection(bool out) { if (out) clr_ctrl(5); else set_ctrl(5); D(bug("Parallel:direction: %s", out ? "OUT" : "IN")); } uint8 ParallelX86::getData() { uint8 data = inportb(port); D(bug("Parallel:getData()=$%x", data)); return data; } void ParallelX86::setData(uint8 value) { outportb(port, value); D(bug("Parallel:setData($%x)", value)); } uint8 ParallelX86::getBusy() { uint8 busy = !(inportb(port+1) & 0x80); if (old_busy != busy) D(bug("Parallel:Busy = %s", busy == 1 ? "YES" : "NO")); old_busy = busy; return busy; } void ParallelX86::setStrobe(bool high) { if (old_strobe != -1 && old_strobe == high) D(bug("Parallel:strobe(%s)", high ? "HIGH" : "LOW")); if (high) clr_ctrl(0); else set_ctrl(0); old_strobe = high; } aranym-1.1.0/src/parallel_parport.cpp0000664000175000017500000000610313454637622016040 0ustar joyjoy/* Parallel port emulation, Linux /dev/parport driver ARAnyM (C) 2005-2008 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include #include #include "parallel.h" #include "parallel_parport.h" #define DEBUG 0 #include "debug.h" ParallelParport::ParallelParport(void) { D(bug("ParallelParport: interface created")); handle = open(bx_options.parallel.parport,O_RDWR); if (handle<0) { panicbug("ParallelParport: Can not open device %s", bx_options.parallel.parport); return; } if (ioctl(handle, PPCLAIM)<0) { panicbug("ParallelParport: Can not claim access to parport device"); close(handle); handle=-1; return; } } ParallelParport::~ParallelParport(void) { D(bug("ParallelParport: interface destroyed")); if (handle>=0) { setDirection(1); if (ioctl(handle, PPRELEASE)<0) { panicbug("ParallelParport: Can not release parport device"); } close(handle); handle=-1; } } void ParallelParport::reset(void) { D(bug("ParallelParport: reset")); setDirection(1); setStrobe(0); } void ParallelParport::setDirection(bool out) { int datadir; D(bug("ParallelParport: setDirection")); if (handle<0) { return; } datadir = out ? 0 : 1; if (ioctl(handle, PPDATADIR, &datadir)<0) { panicbug("ParallelParport: Can not set direction"); } } uint8 ParallelParport::getData() { uint8 value=0; D(bug("ParallelParport: getData")); if (handle>=0) { if (ioctl(handle, PPRDATA, &value)<0) { panicbug("ParallelParport: Error reading data from device"); } } return value; } void ParallelParport::setData(uint8 value) { D(bug("ParallelParport: setData")); if (handle>=0) { if (ioctl(handle, PPWDATA, &value)<0) { panicbug("ParallelParport: Error writing data to device"); } } } uint8 ParallelParport::getBusy() { uint8 value; value=0; D(bug("ParallelParport: getBusy")); if (handle>=0) { if (ioctl(handle, PPRSTATUS, &value)<0) { panicbug("ParallelParport: Can not read BUSY line"); } } return ((value & PARPORT_STATUS_BUSY)!=0); } void ParallelParport::setStrobe(bool high) { struct ppdev_frob_struct frob; D(bug("ParallelParport: setStrobe")); if (handle<0) { return; } frob.mask = PARPORT_CONTROL_STROBE; frob.val = high ? PARPORT_CONTROL_STROBE : 0; if (ioctl(handle, PPFCONTROL, &frob)<0) { panicbug("ParallelParport: Can not set STROBE line"); } } aranym-1.1.0/src/parallel_file.cpp0000664000175000017500000000440413454637622015272 0ustar joyjoy/* Parallel port emulation, output to file ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "parameters.h" #include "parallel.h" #include "parallel_file.h" #define DEBUG 0 #include "debug.h" #include /*--- Public functions ---*/ ParallelFile::ParallelFile(void) { D(bug("parallel_file: created")); close_handle = 0; handle = NULL; } ParallelFile::~ParallelFile(void) { D(bug("parallel_file: destroyed")); if (handle && close_handle) { fclose(handle); handle=NULL; } } void ParallelFile::reset(void) { D(bug("parallel_file: reset")); } void ParallelFile::setDirection(bool out) { DUNUSED(out); D(bug("parallel_file: setDirection")); } uint8 ParallelFile::getData() { D(bug("parallel_file: getData")); return 0; } void ParallelFile::setData(uint8 value) { D(bug("parallel_file: setData")); if (!handle) { bx_parallel_options_t * p = &bx_options.parallel; if (strcmp("file", p->type)==0) { if (strcmp("stdout", p->file)==0) { handle = stdout; } else if (strcmp("stderr", p->file)==0) { handle = stderr; } else if (strlen(p->file) > 0) { handle = fopen(p->file, "w"); if (!handle) { panicbug("Can not open file for parallel port\n"); return; } close_handle=1; } } } fputc(value,handle); if (!close_handle) { fflush(handle); /* useful if you want to see the output before EOLN */ } } uint8 ParallelFile::getBusy() { D(bug("parallel_file: getBusy")); return 0; } void ParallelFile::setStrobe(bool high) { DUNUSED(high); D(bug("parallel_file: setStrobe")); } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/parallel.cpp0000664000175000017500000000301013454637622014263 0ustar joyjoy/* Parallel port emulation, base class ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "parameters.h" #include "parallel.h" #define DEBUG 0 #include "debug.h" /*--- Public functions ---*/ Parallel::Parallel(void) { D(bug("parallel: created")); } Parallel::~Parallel(void) { D(bug("parallel: destroyed")); } void Parallel::reset(void) { D(bug("parallel: reset")); } void Parallel::setDirection(bool out) { DUNUSED(out); D(bug("parallel: setDirection")); } uint8 Parallel::getData() { D(bug("parallel: getData")); return 0; } void Parallel::setData(uint8 value) { DUNUSED(value); D(bug("parallel: setData")); } uint8 Parallel::getBusy() { D(bug("parallel: getBusy")); return 0; } void Parallel::setStrobe(bool high) { DUNUSED(high); D(bug("parallel: setStrobe")); } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/ndebug.cpp0000664000175000017500000010002313454637622013735 0ustar joyjoy/* * ndebug.cpp - new ARAnyM fullscreen debugger * * Copyright (c) 2001-2009 Milan Jurik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "memory-uae.h" #include "newcpu.h" #include "m68k.h" #include "cpu_emulation.h" #include "input.h" #include "cpummu.h" #include "fpu/fpu.h" #include "host.h" #define DEBUG 1 #include "debug.h" #include #include #include #include #if defined(__ANDROID__) # include #endif #ifndef HAVE_VASPRINTF /* NDEBUG needs vasprintf, implementation in GNU binutils (libiberty) */ extern "C" int vasprintf(char **, const char *, va_list); #endif #include "parameters.h" #include "main.h" /* QuitEmulator */ #ifndef HAVE_STRDUP extern "C" char *strdup(const char *s) { char *n = (char *)malloc(strlen(s) + 1); strcpy(n, s); return n; } #endif #ifdef FULL_HISTORY unsigned int firsthist = 0; unsigned int lasthist = 0; #ifdef NEED_TO_DEBUG_BADLY struct regstruct history[MAX_HIST]; struct flag_struct historyf[MAX_HIST]; #else uaecptr history[MAX_HIST]; #endif #endif /* FULL_HISTORY */ #ifdef DEBUGGER #if defined(HAVE_TERMIOS_H) termios ndebug::savetty; #define get1char() read(0, buffer, sizeof(buffer)) > 0 #elif defined(_WIN32) #include #define tcsetattr(a, b, c) #define get1char() _get1char(buffer) static inline int _get1char(char *buffer) { int c; c = _getch(); if (c == EOF) return false; buffer[0] = c; return true; } #else you loose #endif bool ndebug::issavettyvalid = false; unsigned int ndebug::rowlen = 78; //unsigned int ndebug::dbsize = 1000; unsigned int ndebug::warnlen = 10; char **ndebug::dbbuffer = NULL; unsigned int ndebug::dbstart = 0; unsigned int ndebug::dbend = 0; unsigned int ndebug::dbfull = 0; unsigned int ndebug::actualrow = 0; unsigned int ndebug::tp = 0; bool ndebug::do_skip = false; uaecptr ndebug::skipaddr = 0; bool ndebug::do_skip_value = false; uaecptr ndebug::value_addr = 0; uint32 ndebug::value; ndebug::value_test_t ndebug::value_test; uint32 ndebug::do_breakpoints = 0; bool ndebug::breakpoint[max_breakpoints]; uaecptr ndebug::breakpoint_address[max_breakpoints]; char ndebug::old_debug_cmd[80] = " "; static const char *strhelp[] = {"Help:\n", " h, ? show this help\n", " Q quit ARAnyM\n", " R reset CPU\n", " A set Ax\n", " D set Dx\n", " P set USP(0), ISP(1), MSP(2), VBR(3), IMASK(4), PC(5)\n", " S set TC(0), SRP(1), URP(2), DTT0(3), DTT1(4),\n", " ITT0(5), ITT1(6), CACR(7), CAAR(8)\n", " i enable/disable IRQ\n", " I enable/disable IRQ debugging\n", " g
start execution at the current address or
\n", " t
step one instruction at current addres or
\n", " z step through one instruction - useful for JSR, DBRA etc\n", " f
step forward until PC=
\n", " m
memory dump starting at
\n", " d
disassembly starting at
\n", " E dump contents of interrupt registers\n", " e dump contents of trap vectors\n", " b dump contents of stack's top\n", " T
translate log2phys address\n", " s save a block of ARAnyM memory\n", " l load file to ARAnyM memory\n", " W
write into ARAnyM memory\n", " N convert No.\n", " C show numbers of debug types\n", " c change to debug type No.\n", " q change to debug type No. 0\n", " j | J browse up\n", " k | K browse down\n", " r refresh D(bug()) | reset actual row\n", " L save debugger's info to \n", " v X step forward until (
) = (X=b,w,l)\n", " V X
step forward until (
) changed (X=b,w,l)\n", " B
toggle breakpoint on
\n", #ifdef FULL_HISTORY " H show history of PC\n", #endif #ifdef FULLMMU " u dump the MMU translation tables and state\n", #endif NULL }; void ndebug::ignore_ws (char **c) { while (**c && isspace(**c)) (*c)++; } void ndebug::reset_actualrow() { if (dbend < get_warnlen()) { actualrow = dbfull ? (dbsize - (get_warnlen() - dbend)) : 0; } else { actualrow = dbend - get_warnlen(); } } void ndebug::set_actualrow(signed int r) { if (r == 0) return; if (r < 0) { r = -r; r %= dbsize; if (actualrow < (unsigned int) r) { actualrow = dbfull ? (dbsize - (r - actualrow)) : 0; } else { actualrow -= r; } } else { if ((actualrow + r) < dbend) { actualrow += r; } else { actualrow = dbfull ? (dbsize - (dbend - (actualrow + r))) : dbend; } } } #endif /* DEBUGGER */ void ndebug::dbprintf(const char *s, ...) { va_list a; #ifdef DEBUGGER { int ret; char *buf; if (dbbuffer[dbend] != NULL) { free(dbbuffer[dbend]); dbbuffer[dbend] = NULL; } va_start(a, s); ret = vasprintf(&buf, s, a); va_end(a); if (ret >= 0) { dbbuffer[dbend++] = buf; if (dbend == dbsize) dbend = 0; if (dbstart == dbend) dbstart++; if (dbstart == dbsize) dbstart = 0; reset_actualrow(); } } #endif { va_start(a, s); vfprintf(stderr, s, a); fprintf(stderr, "\n"); #ifdef __ANDROID__ __android_log_vprint(ANDROID_LOG_INFO, "Aranym", s, a); #endif va_end(a); fflush(stderr); } } void ndebug::pdbprintf(const char *s, ...) { va_list a; va_start(a, s); ndebug::pdbvprintf(s, a); va_end(a); } void ndebug::pdbvprintf(const char *s, va_list a) { #ifdef DEBUGGER { int ret; char *buf; va_list a2; if (dbbuffer[dbend] != NULL) { free(dbbuffer[dbend]); dbbuffer[dbend] = NULL; } va_copy(a2, a); ret = vasprintf(&buf, s, a2); if (ret >= 0) { dbbuffer[dbend++] = buf; if (dbend == dbsize) dbend = 0; if (dbstart == dbend) dbstart++; if (dbstart == dbsize) dbstart = 0; reset_actualrow(); } } #endif vfprintf(stderr, s, a); fprintf(stderr, "\n"); #ifdef __ANDROID__ { va_list a2; va_copy(a2, a); __android_log_vprint(ANDROID_LOG_INFO, "Aranym", s, a2); } #endif fflush(stderr); } #ifdef DEBUGGER void ndebug::warn_print(FILE * f) { unsigned int ar; for (unsigned int i = 0; i < get_warnlen(); i++) { ar = (actualrow + i) % dbsize; if (dbbuffer[ar] != NULL && ((((dbstart <= dbend) && (ar >= dbstart) && (ar <= dbend)) || (dbstart > dbend)) && (i < dbsize))) { fprintf(f, "%-*.*s", rowlen, rowlen, dbbuffer[ar]); } else { for (unsigned int j = 0; j < rowlen; j++) putc(' ', f); } fprintf(f, "|\n"); } } void ndebug::m68k_print(FILE * f) { if (regs.s == 0) regs.usp = m68k_areg(regs, 7); if (regs.s && regs.m) regs.msp = m68k_areg(regs, 7); if (regs.s && regs.m == 0) regs.isp = m68k_areg(regs, 7); fprintf(f, " A0: %08lx A4: %08lx D0: %08lx D4: %08lx USP=%08lx\n", (unsigned long) m68k_areg(regs, 0), (unsigned long) m68k_areg(regs, 4), (unsigned long) m68k_dreg(regs, 0), (unsigned long) m68k_dreg(regs, 4), (unsigned long) regs.usp); fprintf(f, " A1: %08lx A5: %08lx D1: %08lx D5: %08lx ISP=%08lx\n", (unsigned long) m68k_areg(regs, 1), (unsigned long) m68k_areg(regs, 5), (unsigned long) m68k_dreg(regs, 1), (unsigned long) m68k_dreg(regs, 5), (unsigned long) regs.isp); fprintf(f, " A2: %08lx A6: %08lx D2: %08lx D6: %08lx MSP=%08lx\n", (unsigned long) m68k_areg(regs, 2), (unsigned long) m68k_areg(regs, 6), (unsigned long) m68k_dreg(regs, 2), (unsigned long) m68k_dreg(regs, 6), (unsigned long) regs.msp); fprintf(f, " A3: %08lx A7: %08lx D3: %08lx D7: %08lx VBR=%08lx\n", (unsigned long) m68k_areg(regs, 3), (unsigned long) m68k_areg(regs, 7), (unsigned long) m68k_dreg(regs, 3), (unsigned long) m68k_dreg(regs, 7), (unsigned long) regs.vbr); fprintf(f, "T=%d%d S=%d M=%d X=%d N=%d Z=%d V=%u C=%u TC=%04x\n", regs.t1, regs.t0, regs.s, regs.m, (int)GET_XFLG(), (int)GET_NFLG(), (int)GET_ZFLG(), (unsigned)GET_VFLG(), (unsigned)GET_CFLG(), (unsigned int) ((((int) regs.mmu_enabled) << 15) | (((int) regs.mmu_pagesize_8k) << 14))); fprintf(f, "CACR=%08lx DTT0=%08lx ITT0=%08lx SRP=%08lx SFC=%d%d%d\n", (unsigned long) regs.cacr, (unsigned long) regs.dtt0, (unsigned long) regs.itt0, (unsigned long) regs.srp, (int) (regs.sfc / 4), (int) ((regs.sfc & 2) / 2), (int) (regs.sfc % 2)); fprintf(f, "CAAR=%08lx DTT1=%08lx ITT1=%08lx URP=%08lx DFC=%d%d%d\n", (unsigned long) regs.caar, (unsigned long) regs.dtt1, (unsigned long) regs.itt1, (unsigned long) regs.urp, (int) (regs.dfc / 4), (int) ((regs.dfc & 2) / 2), (int) (regs.dfc % 2)); for (unsigned int i = 0; i < 8; i++) { fprintf(f, "FP%d: %Lg ", i, (long double)fpu.registers[i]); if (i == 3) fprintf(f, "N=%d Z=%d\n", (fpu.fpsr.condition_codes & 0x8000000) != 0, (fpu.fpsr.condition_codes & 0x4000000) != 0); if (i == 7) fprintf (f, "I=%d NAN=%d\n", (fpu.fpsr.condition_codes & 0x2000000) != 0, (fpu.fpsr.condition_codes & 0x1000000) != 0); } } void ndebug::instr_print(FILE * f) { uaecptr nextpc; newm68k_disasm(f, m68k_getpc(), &nextpc, 1); fprintf(f, "next PC: %08lx\n", (unsigned long) nextpc); } void ndebug::show(FILE *f) { warn_print(f); m68k_print(f); instr_print(f); } void ndebug::showHelp(FILE *f) { int i = 0; while (strhelp[i] != NULL) { for (unsigned int j = 0; j < (get_len() - 2); j++) { if (strhelp[i] == NULL) break; fprintf(f, "%s",strhelp[i++]); } if (strhelp[i] != NULL) pressenkey(f); } } void ndebug::set_Ax(char **inl) { int reg; if (more_params(inl)) if ((reg = readhex(inl)) < 8) if (more_params(inl)) m68k_areg(regs, reg) = readhex(inl); } void ndebug::set_Dx(char **inl) { int reg; if (more_params(inl)) if ((reg = readhex(inl)) < 8) if (more_params(inl)) m68k_dreg(regs, reg) = readhex(inl); } void ndebug::set_Px(char **inl) { char reg; if (more_params(inl)) if ((reg = readhex(inl)) < 6) if (more_params(inl)) switch (reg) { case 0: regs.usp = readhex(inl); break; case 1: regs.isp = readhex(inl); break; case 2: regs.msp = readhex(inl); break; case 3: regs.vbr = readhex(inl); break; case 4: regs.intmask = readhex(inl); break; case 5: m68k_setpc((uaecptr)readhex(inl)); break; } } void ndebug::set_Sx(char **inl) { char reg; unsigned int r; if (more_params(inl)) if ((reg = readhex(inl)) < 9) if (more_params(inl)) switch (reg) { case 0: r = readhex(inl); #ifdef FULLMMU mmu_set_tc(r & 0xc000); #endif (void) r; break; case 1: regs.srp = readhex(inl); break; case 2: regs.urp = readhex(inl); break; case 3: regs.dtt0 = readhex(inl); break; case 4: regs.dtt1 = readhex(inl); break; case 5: regs.itt0 = readhex(inl); break; case 6: regs.itt1 = readhex(inl); break; case 7: regs.cacr = readhex(inl); break; case 8: regs.caar = readhex(inl); break; } } void ndebug::errorintofile(FILE *, char **inl) { char *name; FILE *fp; unsigned int ar; if (!more_params (inl)) { bug("L command needs more arguments!"); return; } name = *inl; while (**inl != '\0' && !isspace (**inl)) (*inl)++; **inl = '\0'; fp = fopen (name, "w"); if (fp == NULL) { bug("Couldn't open file"); return; } for (unsigned int i = 0; i < dbsize; i++) { ar = (dbstart + i) % dbsize; if (dbbuffer[ar] != NULL && ((((dbstart <= dbend) && (ar >= dbstart) && (ar <= dbend)) || (dbstart > dbend)) && (i < dbsize))) { fprintf(fp, "%s\n", dbbuffer[ar]); } } fclose (fp); return; } void ndebug::saveintofile(FILE *, char **inl) { uae_u32 src, len; char *name; FILE *fp; if (!more_params (inl)) goto S_argh; name = *inl; while (**inl != '\0' && !isspace (**inl)) (*inl)++; if (!isspace (**inl)) goto S_argh; **inl = '\0'; (*inl)++; if (!more_params (inl)) goto S_argh; src = readhex (inl); if (!more_params (inl)) goto S_argh; len = readhex (inl); if (!ValidAtariAddr(src, false, len)) { bug("Invalid memory address\n"); return; } fp = fopen (name, "w"); if (fp == NULL) { bug("Couldn't open file"); return; } for(unsigned int i = 0; i < len; i++) if (fputc(ReadAtariInt8(src++), fp) == EOF) { bug("Error writing file"); break; } fclose (fp); return; S_argh: bug("s command needs more arguments!"); } void ndebug::loadintomemory(FILE *, char **inl) { uae_u32 src; char *name; FILE *fp; int c; if (!more_params (inl)) goto S_argh; name = *inl; while (**inl != '\0' && !isspace (**inl)) (*inl)++; if (!isspace (**inl)) goto S_argh; **inl = '\0'; (*inl)++; if (!more_params (inl)) goto S_argh; src = readhex (inl); fp = fopen (name, "r"); if (fp == NULL) { bug("Couldn't open file"); return; } while ((c = fgetc(fp)) != EOF) WriteAtariInt8(src++, (char)c) ; fclose (fp); return; S_argh: bug("l command needs more arguments!"); } void ndebug::writeintomem(FILE *, char **c) { uae_u32 addr = 0; uae_u32 val = 0; char nc; ignore_ws(c); while (isxdigit(nc = **c)) { (*c)++; addr *= 16; nc = toupper(nc); if (isdigit(nc)) { addr += nc - '0'; } else { addr += nc - 'A' + 10; } } ignore_ws(c); while (isxdigit(nc = **c)) { (*c)++; val *= 10; nc = toupper(nc); if (isdigit(nc)) { val += nc - '0'; } } ignore_ws(c); addr = addr < 0xff000000 ? addr : addr & 0x00ffffff; if (addr < (RAMSize + ROMSize + FastRAMSize)) { if ((addr & 0xfff00000) == 0x00f00000) { switch (**c) { case 'b': val &= 0x000000ff; HWput_b(addr, val); break; case 'w': val &= 0x0000ffff; HWput_w(addr, val); break; default: HWput_l(addr, val); } } else { WriteAtariInt32(addr, val); } bug("Wrote %d at %08x", val ,addr); } else { bug("Invalid address %08x", addr); } } void ndebug::backtrace(FILE *f, unsigned int lines) { uaecptr st = m68k_areg(regs,7); while (lines-- > 0) { if (valid_address(st, 0, sz_long)) fprintf (f, "%08lx: %08x\n", (unsigned long)st, ReadAtariInt32(st)); else fprintf (f, " unknown address\n"); st += 2; } } void ndebug::log2phys(FILE *, uaecptr addr) { #ifdef FULLMMU if (regs.mmu_enabled) { SAVE_EXCEPTION; TRY(prb) { bug("MMU enabled: %08lx -> %08lx", (unsigned long)addr, (unsigned long)mmu_translate(addr, regs.s, 1, 0)); } CATCH(prb) { switch (prb) { case 2: bug("Bus error"); break; case 3: bug("Access error"); break; default: bug("Unknonw access error - %d", int(prb)); } } RESTORE_EXCEPTION; } else #endif /* FULLMMU */ { bug("MMU disabled: %08lx", (unsigned long)addr); } } unsigned int ndebug::get_len() { // Derived from pine 4.21 - termout.unx #if defined(HAVE_TERMIOS_H) struct winsize win; if ((ioctl(1, TIOCGWINSZ, &win) >= 0 || /* 1 is stdout */ ioctl(0, TIOCGWINSZ, &win) >= 0) && /* 0 is stdin */ win.ws_row != 0) { return win.ws_row; } fprintf(stderr, "ioctl(TIOCWINSZ) failed\n"); exit(2); return -1; #elif defined(_WIN32) CONSOLE_SCREEN_BUFFER_INFO info; if (GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info)) return info.dwMaximumWindowSize.Y; return 24; #endif } void ndebug::showTypes() { bug("States of debugger:"); bug("0: classical canonical debugger (like UAE)"); bug("1: direct (icanonical) debugger"); bug("2: memory browser"); bug("3: MMU TT browser"); } int ndebug::canon(FILE *f, uaecptr nextpc, uaecptr &nxdis, uaecptr &nxmem) { char input[80]; char cmd, *inptr; int count; uae_u32 daddr; uae_u32 maddr; show(f); if (irqindebug) fprintf(f, "i"); if (ignore_irq) fprintf(f, "I"); fprintf(f, ">"); fflush(f); if (fgets(input, 80, stdin) == NULL) { return 0; } if (input[0] == '\n') strcpy(input, old_debug_cmd); inptr = input; strcpy(old_debug_cmd, input); cmd = next_char(&inptr); switch (cmd) { case '?': case 'h': showHelp(f); pressenkey(f); break; case 'Q': fprintf(f, "Really quit?\n"); if (fgets(input, 80, stdin) == NULL) QuitEmulator(0); if (input[0] == 'y' || input[0] == 'Y') QuitEmulator(0); break; case 'R': m68k_reset(); break; case 'i': irqindebug = !irqindebug; break; case 'I': ignore_irq = !ignore_irq; break; case 'e': dump_traps (f); pressenkey(f); break; case 'E': dump_ints (f); pressenkey(f); break; case 'A': set_Ax(&inptr); break; case 'D': set_Dx(&inptr); break; case 'P': set_Px(&inptr); break; case 'S': set_Sx(&inptr); break; case 'g': if (more_params(&inptr)) m68k_setpc(readhex(&inptr)); fill_prefetch_0(); /* * debugger activation/deactivation need to be rewriteen * deactivate_debugger(); */ if (do_breakpoints) SPCFLAGS_SET( SPCFLAG_BRK ); return 0; case 't': if (more_params(&inptr)) m68k_setpc(readhex(&inptr)); SPCFLAGS_SET( SPCFLAG_BRK ); return 0; case 'd': if (more_params(&inptr)) daddr = readhex(&inptr); else daddr = nxdis; if (more_params(&inptr)) count = readhex(&inptr); else count = get_len() - 3; newm68k_disasm(f, daddr, &nxdis, count); pressenkey(f); break; case 'm': if (more_params(&inptr)) maddr = readhex(&inptr); else maddr = nxmem; if (more_params(&inptr)) count = readhex(&inptr); else count = (get_len() - 2) / 2; dumpmem(f, maddr, &nxmem, count); pressenkey(f); break; case 'b': if (more_params(&inptr)) count = readhex(&inptr); else count = get_len() - 3; backtrace(f, count); pressenkey(f); break; case 'T': if (more_params(&inptr)) maddr = readhex(&inptr); else maddr = nxmem; log2phys(f, maddr); break; case 's': saveintofile(f, &inptr); break; case 'l': loadintomemory(f, &inptr); break; case 'W': writeintomem(f, &inptr); break; case 'N': convertNo(&inptr); break; case 'C': showTypes(); break; case 'c': if (more_params(&inptr)) tp = readhex(&inptr); else bug("c command needs one argument!"); break; case 'j': set_actualrow(-1); break; case 'J': set_actualrow(1 - get_warnlen()); break; case 'k': set_actualrow(1); break; case 'K': set_actualrow(get_warnlen() - 1); break; case 'r': reset_actualrow(); break; case 'z': skipaddr = nextpc; do_skip = true; irqindebug = true; SPCFLAGS_SET( SPCFLAG_BRK ); return 0; case 'f': if (!more_params(&inptr)) { bug("f command needs one parameter!"); break; } skipaddr = readhex(&inptr); do_skip = true; irqindebug = true; SPCFLAGS_SET( SPCFLAG_BRK ); return 0; case 'B': { unsigned int i; uaecptr address; if (!more_params(&inptr)) { bug("f command needs one parameter!"); break; } address = readhex(&inptr); for (i = 0; i < max_breakpoints; i++) if ((breakpoint[i]) && (address == breakpoint_address[i])) break; if (i < max_breakpoints) { breakpoint[i] = false; do_breakpoints--; bug("Breakpoint on %08x removed", address); break; } for (i = 0; i RAMSize + ROMSize + FastRAMSize) nxmem = 0; break; case 'J': nxmem = maddr + 32 - 32 * count; if (nxmem > RAMSize + ROMSize + FastRAMSize) nxmem = 0; break; case 'k': nxmem = maddr + 32; if (nxmem > RAMSize + ROMSize + FastRAMSize) nxmem = RAMSize + ROMSize + FastRAMSize; break; case 'K': nxmem = maddr + 32 * count - 32; if (nxmem > RAMSize + ROMSize + FastRAMSize) nxmem = RAMSize + ROMSize + FastRAMSize; break; case 'q': tp = 0; break; default: nxmem = maddr; break; } break; } } fprintf(stderr, "\n"); tcsetattr(0, TCSAFLUSH, &savetty); fflush(stderr); return 1; } void ndebug::run() { if (do_skip || do_skip_value || do_breakpoints) { bool success = false; if (do_skip && (m68k_getpc() == skipaddr)) { do_skip = false; success = true; } if (do_skip_value) { switch (value_test) { case EQUAL_value_test_8: if (ReadAtariInt8(value_addr) == value) { do_skip_value = false; success = true; } break; case EQUAL_value_test_16: if (ReadAtariInt16(value_addr) == value){ do_skip_value = false; success = true; } break; case EQUAL_value_test_32: if (ReadAtariInt32(value_addr) == value){ do_skip_value = false; success = true; } break; case CHANGE_value_test_8: if (ReadAtariInt8(value_addr) != value) { do_skip_value = false; success = true; } break; case CHANGE_value_test_16: if (ReadAtariInt16(value_addr) != value){ do_skip_value = false; success = true; } break; case CHANGE_value_test_32: if (ReadAtariInt32(value_addr) != value){ do_skip_value = false; success = true; } break; } } if (do_breakpoints) { unsigned int i; for (i = 0; i < max_breakpoints; i++) if ((breakpoint[i]) && (breakpoint_address[i] == m68k_getpc())) break; if (i < max_breakpoints) success = true; } if (!success) { SPCFLAGS_SET( SPCFLAG_BRK ); return; } } irqindebug = false; // release keyboard and mouse control SDL_bool wasGrabbed; HostScreen *video; if (host && (video = host->video) != NULL) { wasGrabbed = grabMouse(SDL_FALSE); video->releaseTheMouse(); } else { wasGrabbed = SDL_FALSE; } uaecptr nextpc, nxdis, nxmem; newm68k_disasm(stderr, m68k_getpc(), &nextpc, 0); nxdis = nextpc; nxmem = 0; bool done = false; while (!done) { switch(tp) { default: case 0: if (canon(stderr, nextpc, nxdis, nxmem) == 0) done = true; break; case 1: if (icanon(stderr, nextpc, nxdis, nxmem) == 0) done = true; break; case 2: if (dm(stderr, nextpc, nxdis, nxmem) == 0) done = true; break; } } if (wasGrabbed) video->grabTheMouse(); if (!SPCFLAGS_TEST(SPCFLAG_BRK)) debugging = false; } void ndebug::init() { if ((dbbuffer = (char **) malloc(dbsize * sizeof(char *))) == NULL) { fprintf(stderr, "Not enough memory!"); exit(2); } for (unsigned int i = 0; i < dbsize; i++) dbbuffer[i] = NULL; for (unsigned int i = 0; i < max_breakpoints; i++) breakpoint[i] = false; #if defined(HAVE_TERMIOS_H) if (tcgetattr(0, &savetty) == -1) { fprintf(stderr, "tcgetattr error: %d!\n", errno); } else #endif { issavettyvalid = true; } } void ndebug::nexit() { if (issavettyvalid) { tcsetattr(0, TCSAFLUSH, &savetty); } issavettyvalid = false; } void ndebug::dumpmem(FILE *f, VOLATILE uaecptr addr, uaecptr * nxmem, unsigned int _lns) { SAVE_EXCEPTION; VOLATILE uaecptr a; VOLATILE unsigned int lns = _lns; broken_in = 0; for (; lns-- && !broken_in;) { VOLATILE int i; fprintf(f, "%08lx: \n", (unsigned long)addr); for (i = 0; i < 16; i++) { TRY(prb) { a = addr < 0xff000000 ? addr : addr & 0x00ffffff; if ((addr & 0xfff00000) == 0x00f00000) { fprintf(f, "%04x ", (unsigned int) HWget_w(a)); } else { fprintf(f, "%04x ", (unsigned int) ReadAtariInt16(a)); } } CATCH(prb) { fprintf (f, "UA "); } addr += 2; } fprintf(f, "\n"); } *nxmem = addr; RESTORE_EXCEPTION; } uae_u32 ndebug::readhex (char v, char **c) { char nc; uae_u32 val; if (isxdigit(v)) { v = toupper(v); if (isdigit(v)) { val = v - '0'; } else { val = v - 'A' + 10; } } else return 0; while (isxdigit(nc = **c)) { (*c)++; val *= 16; nc = toupper(nc); if (isdigit(nc)) { val += nc - '0'; } else { val += nc - 'A' + 10; } } return val; } uae_u32 ndebug::readoct (char v, char **c) { char nc; uae_u32 val; if (isdigit(v) && (v < '8')) val = v - '0'; else return 0; while (isdigit(nc = **c) && (nc < '8')) { (*c)++; val *= 8; val += nc - '0'; } return val; } uae_u32 ndebug::readbin (char v, char **c) { char nc; uae_u32 val; if (isdigit(v) && (v < '2')) val = v - '0'; else return 0; while (isdigit(nc = **c) && (nc < '2')) { (*c)++; val *= 2; val += nc - '0'; } return val; } uae_u32 ndebug::readdec (char v, char **c) { char nc; uae_u32 val; if (isdigit(v)) val = v - '0'; else return 0; while (isdigit(nc = **c)) { (*c)++; val *= 10; val += nc - '0'; } return val; } char *ndebug::dectobin (uae_u32 val) { char *s = (char *)malloc(sizeof(char)); if (s == NULL) { fprintf(stderr, "Not enough memory!"); exit(2); } while (val) { char *ps = strdup(s); if (ps == NULL) { fprintf(stderr, "Not enough memory!"); exit(2); } free(s); s = (char *)malloc((strlen(ps) + 2) * sizeof(char)); if (s == NULL) { fprintf(stderr, "Not enough memory!"); exit(2); } s[0] = val % 2 + '0'; val /= 2; strcpy(s + 1, ps); free(ps); } return s; } void ndebug::convertNo(char **s) { char c; uae_u32 val = 0; ignore_ws(s); switch (c = next_char(s)) { case '0': if ((c = next_char(s)) == 'x') val = readhex(next_char(s), s); else val = readoct(c, s); break; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': val = readdec(c, s); break; default: bug("N command needs one argument!"); return; } bug("%d 0x%X 0%o %s", val, val, val, dectobin(val)); } #endif /* DEBUGGER */ #ifdef FULL_HISTORY void ndebug::showHistory(unsigned int count, bool) { unsigned int temp = lasthist; #ifdef NEED_TO_DEBUG_BADLY struct regstruct save_regs = regs; struct flag_struct save_flags = regflags; #endif while (count-- > 0 && temp != firsthist) { if (temp == 0) temp = MAX_HIST-1; else temp--; } bug("History:"); while (temp != lasthist) { #ifdef NEED_TO_DEBUG_BADLY regs = history[temp]; regflags = historyf[temp]; m68k_dumpstate (stderr, NULL); #else showDisasm(history[temp]); #endif //bug("%04x", history[temp]); if (++temp == MAX_HIST) temp = 0; } #ifdef NEED_TO_DEBUG_BADLY regs = save_regs; regflags = save_flags; #endif } #endif /* FULL_HISTORY */ /* vim:ts=4:sw=4: */ aranym-1.1.0/src/ncr5380.cpp0000664000175000017500000001031313454637622013575 0ustar joyjoy/* * Atari Falcon NCR5380 SCSI emulation * * ARAnyM (C) 2003 Patrice Mandin * and stuff from Linux NCR5380 scsi driver * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Includes ---*/ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "ncr5380.h" #define DEBUG 0 #include "debug.h" /*--- Defines ---*/ #define OUTPUT_DATA_REG 0 /* wo DATA lines on SCSI bus */ #define CURRENT_SCSI_DATA_REG 0 /* ro same */ #define INITIATOR_COMMAND_REG 1 /* rw */ #define ICR_ASSERT_RST 0x80 /* rw Set to assert RST */ #define ICR_ARBITRATION_PROGRESS 0x40 /* ro Indicates arbitration complete */ #define ICR_TRI_STATE 0x40 /* wo Set to tri-state drivers */ #define ICR_ARBITRATION_LOST 0x20 /* ro Indicates arbitration lost */ #define ICR_DIFF_ENABLE 0x20 /* wo Set to enable diff. drivers */ #define ICR_ASSERT_ACK 0x10 /* rw ini Set to assert ACK */ #define ICR_ASSERT_BSY 0x08 /* rw Set to assert BSY */ #define ICR_ASSERT_SEL 0x04 /* rw Set to assert SEL */ #define ICR_ASSERT_ATN 0x02 /* rw Set to assert ATN */ #define ICR_ASSERT_DATA 0x01 /* rw SCSI_DATA_REG is asserted */ #define MODE_REG 2 #define TARGET_COMMAND_REG 3 #define STATUS_REG 4 /* ro */ #define SR_RST 0x80 #define SR_BSY 0x40 #define SR_REQ 0x20 #define SR_MSG 0x10 #define SR_CD 0x08 #define SR_IO 0x04 #define SR_SEL 0x02 #define SR_DBP 0x01 #define SELECT_ENABLE_REG 4 /* wo */ #define BUS_AND_STATUS_REG 5 /* ro */ #define START_DMA_SEND_REG 5 /* wo */ #define INPUT_DATA_REG 6 /* ro */ #define START_DMA_TARGET_RECEIVE_REG 6 /* wo */ #define RESET_PARITY_INTERRUPT_REG 7 /* ro */ #define START_DMA_INITIATOR_RECEIVE_REG 7 /* wo */ /*--- Types ---*/ /*--- Constants ---*/ #if DEBUG static const char *ncr5380_regnames[16]={ "current scsi data", "initiator command", "mode", "target command", "status", "bus and status", "input data", "reset parity interrupt", "output data", "initiator command", "mode", "target command", "select enable", "start dma send", "start dma target receive", "start dma initiator receive" }; #endif /*--- Variables ---*/ /*--- Constructor/destructor ---*/ NCR5380::NCR5380(void) { D(bug("ncr5380: interface created")); reset(); } NCR5380::~NCR5380(void) { D(bug("ncr5380: interface destroyed")); } void NCR5380::reset(void) { hd_count = hd_status = hd_initiator = hd_mode = 0; D(bug("ncr5380: reset")); } uae_u8 NCR5380::ReadData(uae_u16 control) { uae_u8 data; int regnum; regnum = control & 7; data=0; switch(regnum) { case CURRENT_SCSI_DATA_REG: break; case INITIATOR_COMMAND_REG: data = hd_initiator = ICR_ARBITRATION_PROGRESS; break; case MODE_REG: data = hd_mode; break; case TARGET_COMMAND_REG: break; case STATUS_REG: data = hd_status = SR_REQ; break; case BUS_AND_STATUS_REG: break; case INPUT_DATA_REG: break; case RESET_PARITY_INTERRUPT_REG: break; } D(bug("ncr5380: read %s register: value=0x%02x", ncr5380_regnames[regnum], data)); return data; } void NCR5380::WriteData(uae_u16 control, uae_u8 data) { int regnum; regnum = control & 7; D(bug("ncr5380: write %s register: value=0x%02x",ncr5380_regnames[regnum+8], data)); switch(regnum) { case OUTPUT_DATA_REG: break; case INITIATOR_COMMAND_REG: hd_initiator = data; break; case MODE_REG: hd_mode = data; break; case TARGET_COMMAND_REG: break; case SELECT_ENABLE_REG: break; case START_DMA_SEND_REG: break; case START_DMA_TARGET_RECEIVE_REG: break; case START_DMA_INITIATOR_RECEIVE_REG: break; } } aranym-1.1.0/src/natfeats.cpp0000664000175000017500000001037213454637622014305 0ustar joyjoy/** * NatFeats (Native Features main dispatcher) * * Petr Stehlik (c) 2002-2005 * * GPL */ #include "natfeats.h" #include "nf_objs.h" #include "maptab.h" #ifdef OS_darwin #include #endif #define DEBUG 0 #include "debug.h" #define ID_SHIFT 20 #define IDX2MASTERID(idx) (((idx)+1) << ID_SHIFT) #define MASTERID2IDX(id) (((id) >> ID_SHIFT)-1) #define MASKOUTMASTERID(id) ((id) & ((1L << ID_SHIFT)-1)) static memptr context = 0; uint32 nf_get_id(memptr stack) { char name[80]; memptr name_ptr = ReadInt32(stack); Atari2HostSafeStrncpy(name, name_ptr, sizeof(name)); D(bug("nf_get_id '%s'", name)); for(unsigned int i=0; i < nf_objs_cnt; i++) { if (strcasecmp(name, nf_objects[i]->name()) == 0) { D(bug("Found the NatFeat at %d", i)); return IDX2MASTERID(i); } } return 0; /* ID with given name not found */ } int32 nf_call(memptr stack, bool inSuper) { uint32 fncode = ReadInt32(stack); unsigned int idx = MASTERID2IDX(fncode); if (idx >= nf_objs_cnt) { D(bug("nf_call: wrong ID %d", idx)); return 0; /* returning an undefined value */ } fncode = MASKOUTMASTERID(fncode); context = stack + 4; /* parameters follow on the stack */ NF_Base *obj = nf_objects[idx]; if (strcmp(obj->name(), "NF_STDERR") != 0) { D(bug("nf_call(%s, %d)", obj->name(), fncode)); } if (obj->isSuperOnly() && !inSuper) { panicbug("nf_call(%s, %d): privilege violation", obj->name(), fncode); THROW(8); // privilege exception } return obj->dispatch(fncode); } uint32 nf_getparameter(int i) { if (i < 0) return 0; return ReadInt32(context + i*4); } void Atari2HostUtf8Copy(char *dst, memptr src, size_t count) { unsigned short ch; while ( count > 1) { ch = ReadNFInt8(src++); if (ch == 0) break; ch = atari_to_utf16[ch]; if (ch < 0x80) { *dst++ = ch; count--; } else if (ch < 0x800 || count < 3) { *dst++ = ((ch >> 6) & 0x3f) | 0xc0; *dst++ = (ch & 0x3f) | 0x80; count -= 2; } else { *dst++ = ((ch >> 12) & 0x0f) | 0xe0; *dst++ = ((ch >> 6) & 0x3f) | 0x80; *dst++ = (ch & 0x3f) | 0x80; count -= 3; } } if (count > 0) *dst = '\0'; } void Host2AtariUtf8Copy(memptr dst, const char *src, size_t count) { #ifdef OS_darwin /* MacOSX uses decomposed strings, normalize them first */ CFMutableStringRef theString = CFStringCreateMutable(NULL, 0); CFStringAppendCString(theString, src, kCFStringEncodingUTF8); CFStringNormalize(theString, kCFStringNormalizationFormC); UniChar ch; unsigned short c; CFIndex idx; CFIndex len = CFStringGetLength(theString); idx = 0; while ( count > 1 && idx < len ) { ch = CFStringGetCharacterAtIndex(theString, idx); c = utf16_to_atari[ch]; if (c >= 0x100) { charset_conv_error(ch); /* not convertible. return utf8-sequence to avoid producing duplicate filenames */ if (ch < 0x80) { WriteNFInt8(dst++, ch); count--; } else if (ch < 0x800 || count < 3) { WriteNFInt8(dst++, ((ch >> 6) & 0x3f) | 0xc0); WriteNFInt8(dst++, (ch & 0x3f) | 0x80); count -= 2; } else { WriteNFInt8(dst++, ((ch >> 12) & 0x0f) | 0xe0); WriteNFInt8(dst++, ((ch >> 6) & 0x3f) | 0x80); WriteNFInt8(dst++, (ch & 0x3f) | 0x80); count -= 3; } } else { WriteNFInt8( dst++, c ); count -= 1; } idx++; } if (count > 0) { WriteNFInt8( dst, 0 ); } CFRelease(theString); #else unsigned short ch; unsigned short c; size_t bytes; while ( count > 1 && *src ) { c = (unsigned char) *src; ch = c; if (ch < 0x80) { bytes = 1; } else if ((ch & 0xe0) == 0xc0 || count < 3) { ch = ((ch & 0x1f) << 6) | (src[1] & 0x3f); bytes = 2; } else { ch = ((((ch & 0x0f) << 6) | (src[1] & 0x3f)) << 6) | (src[2] & 0x3f); bytes = 3; } c = utf16_to_atari[ch]; if (c >= 0x100) { charset_conv_error(ch); /* not convertible. return utf8-sequence to avoid producing duplicate filenames */ WriteNFInt8(dst++, *src++); if (bytes >= 2) WriteNFInt8(dst++, *src++); if (bytes >= 3) WriteNFInt8(dst++, *src++); count -= bytes; } else { WriteNFInt8( dst++, c ); src += bytes; count -= 1; } } if (count > 0) { WriteNFInt8( dst, 0 ); } #endif } void charset_conv_error(unsigned short ch) { bug("cannot convert $%04x to atari codeset", ch); } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/natfeat/0000775000175000017500000000000013454637641013414 5ustar joyjoyaranym-1.1.0/src/natfeat/xhdi.h0000664000175000017500000000544413454637622014527 0ustar joyjoy/* * xhdi.h - XHDI like disk driver interface - declaration * * Copyright (c) 2002-2008 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _XHDI_H #define _XHDI_H #include "nf_base.h" #include "parameters.h" #define ACSI_START 0 #define ACSI_END 7 #define SCSI_START 8 #define SCSI_END 15 #define IDE_START 16 #define IDE_END 17 typedef memptr wmemptr; typedef memptr lmemptr; struct disk_t { char path[512]; char name[41]; bool present; bool readonly; bool byteswap; bool sim_root; // true if the disk has to simulate root sector char partID[3]; // partition ID - not used for real harddisks int size_blocks; // partition size in blocks - not used for real harddisks FILE *file; }; class XHDIDriver : public NF_Base { private: disk_t disks[IDE_END+1]; // ACSI + SCSI + IDE private: void copy_atadevice_settings(const bx_atadevice_options_t *src, disk_t *dest); void copy_scsidevice_settings(int index, const bx_scsidevice_options_t *src, disk_t *dest); disk_t *dev2disk(uint16 major, uint16 minor); void byteSwapBuf(uint8 *buf, int size); bool setDiskSizeInBlocks(disk_t *disk); void init_disks(void); void close_disks(void); protected: int32 XHDrvMap(); int32 XHInqDriver(uint16 bios_device, memptr name, memptr version, memptr company, wmemptr ahdi_version, wmemptr maxIPL); int32 XHReadWrite(uint16 major, uint16 minor, uint16 rwflag, uint32 recno, uint16 count, memptr buf); int32 XHInqTarget2(uint16 major, uint16 minor, lmemptr blocksize, lmemptr device_flags, memptr product_name, uint16 stringlen); int32 XHInqDev2(uint16 bios_device, wmemptr major, wmemptr minor, lmemptr start_sector, memptr bpb, lmemptr blocks, memptr partid); int32 XHGetCapacity(uint16 major, uint16 minor, lmemptr blocks, lmemptr blocksize); public: XHDIDriver(); ~XHDIDriver(); void reset(); const char *name() { return "XHDI"; } bool isSuperOnly() { return true; } int32 dispatch(uint32 fncode); }; #endif /* _XHDI_H */ /* vim:ts=4:sw=4: */ aranym-1.1.0/src/natfeat/xhdi.cpp0000664000175000017500000003154713454637622015065 0ustar joyjoy/* * xhdi.cpp - XHDI like disk driver interface * * Copyright (c) 2002-2008 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include #include "cpu_emulation.h" #include "xhdi.h" #include "atari_rootsec.h" #include "tools.h" #include #if (defined(X86_ASSEMBLY) || defined(X86_64_ASSEMBLY)) && defined(__SSE2__) #include /* #define USE_SSE_BYTESWAP 1 */ #endif #define DEBUG 0 #include "debug.h" #ifndef HAVE_FSEEKO # define fseeko(a,b,c) fseek(a,b,c) #endif #ifdef __BEOS__ extern "C" int fseeko(FILE *stream, off_t offset, int whence); #endif #define XHDI_BLOCK_SIZE 512 /* XHDI error codes */ #include "toserror.h" XHDIDriver::XHDIDriver() { init_disks(); } XHDIDriver::~XHDIDriver() { close_disks(); } void XHDIDriver::reset() { close_disks(); init_disks(); } void XHDIDriver::init_disks() { // init all disks for(unsigned i=0; ifile != NULL) { #ifdef HAVE_FSYNC fsync(fileno(disk->file)); #endif fclose(disk->file); disk->file = NULL; } } } void XHDIDriver::copy_atadevice_settings(const bx_atadevice_options_t *src, disk_t *dest) { safe_strncpy(dest->path, src->path, sizeof(dest->path)); safe_strncpy(dest->name, src->model, sizeof(dest->name)); dest->present = (src->isCDROM ? false : src->present); // CD-ROMs not supported via XHDI dest->readonly = src->readonly; dest->byteswap = src->byteswap; dest->sim_root = false; // ATA devices are real disks // check and remember disk size setDiskSizeInBlocks(dest); } void XHDIDriver::copy_scsidevice_settings(int index, const bx_scsidevice_options_t *src, disk_t *dest) { safe_strncpy(dest->path, src->path, sizeof(dest->path)); sprintf(dest->name, "PARTITION%d", index); dest->present = src->present; dest->readonly = src->readonly; dest->byteswap = src->byteswap; dest->sim_root = true; // SCSI devices are simulated by prepending a virtual root sector to a single partition // check and remember disk size setDiskSizeInBlocks(dest); dest->partID[0] = src->partID[0]; dest->partID[1] = src->partID[1]; dest->partID[2] = src->partID[2]; } disk_t *XHDIDriver::dev2disk(uint16 major, uint16 minor) { if (minor != 0) return NULL; disk_t *disk = NULL; if (major >= SCSI_START && major <= IDE_END) { disk = &disks[major]; if (disk->present) { return disk; } } return NULL; } void XHDIDriver::byteSwapBuf(uint8 *dst, int size) { #ifdef USE_SSE_BYTESWAP __m128i A; if ((((uintptr)dst) & 0xf) == 0) { while (size >= 16) { A = *((__m128i *)dst); *((__m128i *)dst) = _mm_or_si128(_mm_srli_epi16(A, 8), _mm_or_si128(_mm_slli_epi16(A, 8), _mm_setzero_si128())); dst += 16; size -= 16; } } #endif while (size >= 2) { char tmp = *dst++; dst[-1] = *dst; *dst++ = tmp; size -= 2; } } int32 XHDIDriver::XHDrvMap() { D(bug("ARAnyM XHDrvMap")); return 0; // drive map } int32 XHDIDriver::XHInqDriver(uint16 bios_device, memptr name, memptr version, memptr company, wmemptr ahdi_version, wmemptr maxIPL) { DUNUSED(bios_device); DUNUSED(name); DUNUSED(version); DUNUSED(company); DUNUSED(ahdi_version); DUNUSED(maxIPL); D(bug("ARAnyM XHInqDriver(bios_device=%u)", bios_device)); return TOS_EINVFN; } int32 XHDIDriver::XHReadWrite(uint16 major, uint16 minor, uint16 rwflag, uint32 recno, uint16 count, memptr buf) { D(bug("ARAnyM XH%s(%u.%u, recno=%lu, count=%u, buf=$%x)", (rwflag & 1) ? "Write" : "Read", major, minor, recno, count, buf)); disk_t *disk = dev2disk(major, minor); if (disk == NULL) { return TOS_EUNDEV; } bool writing = (rwflag & 1); if (writing && disk->readonly) { return TOS_EACCDN; } FILE *f = disk->file; if (f == NULL) { // TODO FIXME - if opening the IDE disk drives here then block the ATA emu layer // until the disk->path is closed here again! Otherwise bad data loss might occur // if both the direct PARTITION access and the ATA emu layer start writing to the same disk f = fopen(disk->path, disk->readonly ? "rb" : "r+b"); if (f != NULL) { disk->file = f; } else { return TOS_EDRVNR; } } if (disk->sim_root) { if (recno == 0 && count > 0) { if (!writing) { // simulate the root sector assert(sizeof(rootsector) == XHDI_BLOCK_SIZE); rootsector sector; memset(§or, 0, sizeof(rootsector)); sector.hd_siz = SDL_SwapBE32(disk->size_blocks); sector.part[0].flg = 1; if (disk->partID[0] == '$') { sector.part[0].id[0] = 0; sector.part[0].id[1] = 'D'; char str[3] = {disk->partID[1], disk->partID[2], 0}; sector.part[0].id[2] = strtol(str, NULL, 16); } else { sector.part[0].id[0] = disk->partID[0]; sector.part[0].id[1] = disk->partID[1]; sector.part[0].id[2] = disk->partID[2]; } int start_sect = 1; sector.part[0].st = SDL_SwapBE32(start_sect); sector.part[0].siz = SDL_SwapBE32(disk->size_blocks - start_sect); // zero out the other three partitions in PTBL for(int i=1; i<4; i++) { sector.part[i].flg = 0; sector.part[i].id[0] = 0; sector.part[i].id[1] = 0; sector.part[i].id[2] = 0; sector.part[i].st = 0; sector.part[i].siz = 0; } Host2Atari_memcpy(buf, §or, sizeof(sector)); } // correct the count and buffer position count--; buf+=XHDI_BLOCK_SIZE; if (count == 0) { return writing ? TOS_EACCDN : TOS_E_OK; } } // correct the offset to the partition if (recno > 0) recno--; } off_t offset = (off_t)recno * XHDI_BLOCK_SIZE; if (fseeko(f, offset, SEEK_SET) != 0) return errnoHost2Mint(errno, TOS_EINVAL); if (count == 0) return writing ? TOS_EACCDN : TOS_E_OK; memptr bytes = count * XHDI_BLOCK_SIZE; if (writing) { #ifdef USE_SSE_BYTESWAP __attribute__((__aligned__(16)) #endif uint8 tempbuf[bytes]; memptr src_end = buf + bytes - 1; if (! ValidAtariAddr(buf, false, 1)) BUS_ERROR(buf); if (! ValidAtariAddr(src_end, false, 1)) BUS_ERROR(src_end); uint8 *src = Atari2HostAddr(buf); if (! disk->byteswap) { memcpy(tempbuf, src, bytes); byteSwapBuf(tempbuf, bytes); src = tempbuf; } if (fwrite(src, bytes, 1, f) != 1) { panicbug("nfXHDI: Error writing to device %u.%u (record=%d)", major, minor, recno); return TOS_EWRITF; } } else { memptr dst_end = buf + bytes - 1; if (! ValidAtariAddr(buf, true, 1)) BUS_ERROR(buf); if (! ValidAtariAddr(dst_end, true, 1)) BUS_ERROR(dst_end); uint8 *dst = Atari2HostAddr(buf); if (fread(dst, bytes, 1, f) != 1) { panicbug("nfXHDI: error reading device %u.%u (record=%d)", major, minor, recno); return TOS_EREADF; } else { if (! disk->byteswap) byteSwapBuf(dst, bytes); } } return TOS_E_OK; } int32 XHDIDriver::XHInqTarget2(uint16 major, uint16 minor, lmemptr blocksize, lmemptr device_flags, memptr product_name, uint16 stringlen) { D(bug("ARAnyM XHInqTarget2(%u.%u, product_name_len=%u)", major, minor, stringlen)); disk_t *disk = dev2disk(major, minor); if (disk == NULL) return TOS_EUNDEV; if (blocksize) { WriteInt32(blocksize, XHDI_BLOCK_SIZE); } if (device_flags) { WriteInt32(device_flags, 0); } if (product_name && stringlen) { Host2AtariSafeStrncpy(product_name, disk->name, stringlen); } return TOS_E_OK; } int32 XHDIDriver::XHInqDev2(uint16 bios_device, wmemptr major, wmemptr minor, lmemptr start_sector, memptr bpb, lmemptr blocks, memptr partid) { DUNUSED(bios_device); DUNUSED(major); DUNUSED(minor); DUNUSED(start_sector); DUNUSED(bpb); DUNUSED(blocks); DUNUSED(partid); D(bug("ARAnyM XHInqDev2(bios_device=%u)", bios_device)); return TOS_EINVFN; } int32 XHDIDriver::XHGetCapacity(uint16 major, uint16 minor, lmemptr blocks, lmemptr blocksize) { D(bug("ARAnyM XHGetCapacity(%u.%u, blocks=%lu, blocksize=%lu)", major, minor, blocks, blocksize)); disk_t *disk = dev2disk(major, minor); if (disk == NULL) return TOS_EUNDEV; if (! setDiskSizeInBlocks(disk)) return TOS_EDRVNR; D(bug("XHGetCapacity in blocks = %ld\n", disk->size_blocks)); if (blocks != 0) WriteAtariInt32(blocks, disk->size_blocks); if (blocksize != 0) WriteAtariInt32(blocksize, XHDI_BLOCK_SIZE); return TOS_E_OK; } int32 XHDIDriver::dispatch(uint32 fncode) { D(bug("ARAnyM XHDI(%u)", fncode)); int32 ret; switch(fncode) { case 0: ret = 0x0130; /* XHDI version */ break; case 1: ret = XHInqTarget2( getParameter(0), /* UWORD major */ getParameter(1), /* UWORD minor */ getParameter(2), /* ULONG *block_size */ getParameter(3), /* ULONG *device_flags */ getParameter(4), /* char *product_name */ 33 /* UWORD stringlen */ ); break; case 6: ret = XHDrvMap(); break; case 7: ret = XHInqDev2( getParameter(0), /* UWORD bios_device */ getParameter(1), /* UWORD *major */ getParameter(2), /* UWORD *minor */ getParameter(3), /* ULONG *start_sector */ getParameter(4), /* BPB *bpb */ 0, /* ULONG *blocks */ 0 /* char *partid */ ); break; case 8: ret = XHInqDriver( getParameter(0), /* UWORD bios_device */ getParameter(1), /* char *name */ getParameter(2), /* char *version */ getParameter(3), /* char *company */ getParameter(4), /* UWORD *ahdi_version */ getParameter(5) /* UWORD *maxIPL */ ); break; case 10: ret = XHReadWrite( getParameter(0), /* UWORD major */ getParameter(1), /* UWORD minor */ getParameter(2), /* UWORD rwflag */ getParameter(3), /* ULONG recno */ getParameter(4), /* UWORD count */ getParameter(5) /* void *buf */ ); break; case 11: ret = XHInqTarget2( getParameter(0), /* UWORD major */ getParameter(1), /* UWORD minor */ getParameter(2), /* ULONG *block_size */ getParameter(3), /* ULONG *device_flags */ getParameter(4), /* char *product_name */ getParameter(5) /* UWORD stringlen */ ); break; case 12: ret = XHInqDev2( getParameter(0), /* UWORD bios_device */ getParameter(1), /* UWORD *major */ getParameter(2), /* UWORD *minor */ getParameter(3), /* ULONG *start_sector */ getParameter(4), /* BPB *bpb */ getParameter(5), /* ULONG *blocks */ getParameter(6) /* char *partid */ ); break; case 14: ret = XHGetCapacity( getParameter(0), /* UWORD major */ getParameter(1), /* UWORD minor */ getParameter(2), /* ULONG *blocks */ getParameter(3) /* ULONG *blocksize */ ); break; case 2: /* XHReserve */ case 3: /* XHLock */ case 4: /* XHStop */ case 5: /* XHEject */ case 9: /* XHNewCookie */ case 15: /* XHMediumChanged */ case 16: /* XHMiNTInfo */ case 17: /* XHDOSLimits */ case 18: /* XHLastAccess */ case 19: /* XHReaccess */ default: ret = TOS_EINVFN; D(bug("Unimplemented ARAnyM XHDI function #%d", fncode)); break; } D(bug("ARAnyM XHDI function returning with %d", ret)); return ret; } bool XHDIDriver::setDiskSizeInBlocks(disk_t *disk) { disk->size_blocks = 0; if (! disk->present) return false; struct stat buf; long blocks = 0; if (stat(disk->path, &buf)) return false; if (S_ISBLK(buf.st_mode)) { int fd = open(disk->path, 0); if (fd < 0) { panicbug("open(%s) failed", disk->path); return false; } blocks = lseek(fd, 0, SEEK_END) / XHDI_BLOCK_SIZE; close(fd); D(bug("%ld blocks on %s", blocks, disk->path)); } else { blocks = buf.st_size / XHDI_BLOCK_SIZE; } if (disk->sim_root) blocks++; // add the virtual master boot record disk->size_blocks = blocks; return true; } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/natfeat/usbhost.h0000664000175000017500000001346413454637622015263 0ustar joyjoy/* * USB host chip emulation * * Copyright (c) 2012-2015 David Galvez. ARAnyM development team (see AUTHORS). * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _USBHOST_H #define _USBHOST_H /*--- Includes ---*/ #include #include "nf_base.h" #include "../../atari/usbhost/usb.h" #include "../gui-sdl/dlgUsb.h" /*--- definitions ---*/ /* --- USB HUB constants -------------------- */ /* destination of request */ #define RH_INTERFACE 0x01 #define RH_ENDPOINT 0x02 #define RH_OTHER 0x03 #define RH_CLASS 0x20 #define RH_VENDOR 0x40 /* Requests: bRequest << 8 | bmRequestType */ #define RH_GET_STATUS 0x0080 #define RH_CLEAR_FEATURE 0x0100 #define RH_SET_FEATURE 0x0300 #define RH_SET_ADDRESS 0x0500 #define RH_GET_DESCRIPTOR 0x0680 #define RH_SET_DESCRIPTOR 0x0700 #define RH_GET_CONFIGURATION 0x0880 #define RH_SET_CONFIGURATION 0x0900 #define RH_GET_STATE 0x0280 #define RH_GET_INTERFACE 0x0A80 #define RH_SET_INTERFACE 0x0B00 #define RH_SYNC_FRAME 0x0C80 /* Our Vendor Specific Request */ #define RH_SET_EP 0x2000 /* Hub port features */ #define RH_PORT_CONNECTION 0x00 #define RH_PORT_ENABLE 0x01 #define RH_PORT_SUSPEND 0x02 #define RH_PORT_OVER_CURRENT 0x03 #define RH_PORT_RESET 0x04 #define RH_PORT_POWER 0x08 #define RH_PORT_LOW_SPEED 0x09 #define RH_C_PORT_CONNECTION 0x10 #define RH_C_PORT_ENABLE 0x11 #define RH_C_PORT_SUSPEND 0x12 #define RH_C_PORT_OVER_CURRENT 0x13 #define RH_C_PORT_RESET 0x14 /* PortStatus */ #define RH_PS_CCS (1 << 0) /* current connect status */ #define RH_PS_PES (1 << 1) /* port enable status */ #define RH_PS_PSS (1 << 2) /* port suspend status */ #define RH_PS_POCI (1 << 3) /* port over current indicator */ #define RH_PS_PRS (1 << 4) /* port reset status */ #define RH_PS_PPS (1 << 8) /* port power status */ #define RH_PS_LSDA (1 << 9) /* low:1 speed device attached */ #define RH_PS_FSDA (1 << 10) /* full:0 high:1 speed device attached */ #define RH_PS_CSC (1 << 16) /* connect status change */ #define RH_PS_PESC (1 << 17) /* port enable status change */ #define RH_PS_PSSC (1 << 18) /* port suspend statuschange */ #define RH_PS_OCIC (1 << 19) /* over current indicatorchange */ #define RH_PS_PRSC (1 << 20) /* port reset status change */ /* Hub features */ #define RH_C_HUB_LOCAL_POWER 0x00 #define RH_C_HUB_OVER_CURRENT 0x01 #define RH_DEVICE_REMOTE_WAKEUP 0x00 #define RH_ENDPOINT_STALL 0x01 #define RH_ACK 0x01 #define RH_REQ_ERR -1 #define RH_NACK 0x00 #define USB_MAX_DEVICE 32 #define NUMBER_OF_PORTS 2 /*--- Types ---*/ /* Devices attached to the Atari */ typedef struct { int port_number; int libusb_dev_idx; int atari_dev_idx; int32 interface; uint16 busy; uint16 wPortStatus; uint16 wPortChange; } port_t; typedef struct { port_t port[NUMBER_OF_PORTS]; unsigned int number_of_roothub; } roothub_t; /* Devices attached to the Host */ typedef struct virtual_usbdev { int idx_dev; struct libusb_device_descriptor dev_desc; struct libusb_config_descriptor *config_desc; /* Only support for one configuration */ bool virtdev_available; bool connected; int port_number; char product_name[MAX_PRODUCT_LENGTH]; } virtual_usbdev_t; /*--- Low level API functions that need to be supported ---*/ /* int usb_lowlevel_init(void) int usb_lowlevel_stop(void) int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer, int len, int interval) int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer, int len, struct devrequest *setup) int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, void *buffer, int len) */ /*--- Class ---*/ class USBHost : public NF_Base { private: int32 rh_devnum; /* address of Root Hub endpoint */ int32 aranym_submit_rh_msg(uint32 pipe, memptr buffer, int32 transfer_len, devrequest *cmd); int32 rh_port_status(memptr rh); int32 usb_lowlevel_init(void); int32 usb_lowlevel_stop(void); int32 submit_control_msg(uint32 pipe, memptr buffer, int32 len, memptr devrequest); int32 submit_int_msg(uint32 pipe, memptr buffer, int32 len, int32 interval); int32 submit_bulk_msg(uint32 pipe, memptr buffer, int32 len); public: USBHost(); ~USBHost(); void reset(); const char *name() { return "USBHOST"; } bool isSuperOnly() { return true; } int32 dispatch(uint32 fncode); }; /* External functions (usbhost.cpp) */ extern void usbhost_init_libusb(void); extern int32 usbhost_get_device_list(void); extern void usbhost_free_usb_devices(void); extern int usbhost_claim_device(int virtdev_index); extern int usbhost_release_device(int virtdev_index); /* External variables (usbhost.cpp) */ extern int number_ports_used; extern virtual_usbdev_t virtual_device[USB_MAX_DEVICE]; #endif /* _USBHOST_H */ aranym-1.1.0/src/natfeat/usbhost.cpp0000664000175000017500000005720713454637622015621 0ustar joyjoy/* * USB host chip emulation * * Copyright (c) 2012-2015 David Galvez. ARAnyM development team (see AUTHORS). * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "usbhost.h" #include "../../atari/usbhost/usbhost_nfapi.h" #define DEBUG 0 #include "debug.h" #include "SDL_compat.h" #include /*--- Defines ---*/ #define EINVFN -32 #define min1_t(type,x,y) \ ({ type __x = (x); type __y = (y); __x < __y ? __x : __y; }) /* Galvez: added to avoid the variables being shadowed warning */ #define min2_t(type,x,y) \ ({ type __a = (x); type __b = (y); __a < __b ? __a : __b; }) /* USBHOst runs at interrupt level 5 by default but can be reconfigured */ #if 0 # define INTLEVEL 3 # define TRIGGER_INTERRUPT TriggerInt3() #else # define INTLEVEL 5 # define TRIGGER_INTERRUPT TriggerInt5() #endif /* --- Virtual Root Hub ---------------------------------------------------- */ /* Device descriptor */ static uint8 root_hub_dev_des[] = { 0x12, /* uint8 bLength; */ 0x01, /* uint8 bDescriptorType; Device */ 0x00, /* uint16 bcdUSB; v1.1 */ 0x02, 0x09, /* uint8 bDeviceClass; HUB_CLASSCODE */ 0x00, /* uint8 bDeviceSubClass; */ 0x00, /* uint8 bDeviceProtocol; */ 0x08, /* uint8 bMaxPacketSize0; 8 Bytes */ 0x00, /* uint16 idVendor; */ 0x00, 0x00, /* uint16 idProduct; */ 0x00, 0x00, /* uint16 bcdDevice; */ 0x00, 0x00, /* uint8 iManufacturer; */ 0x01, /* uint8 iProduct; */ 0x00, /* uint8 iSerialNumber; */ 0x01 /* uint8 bNumConfigurations; */ }; /* Configuration descriptor */ static uint8 root_hub_config_des[] = { 0x09, /* uint8 bLength; */ 0x02, /* uint8 bDescriptorType; Configuration */ 0x19, /* uint16 wTotalLength; */ 0x00, 0x01, /* uint8 bNumInterfaces; */ 0x01, /* uint8 bConfigurationValue; */ 0x00, /* uint8 iConfiguration; */ 0x40, /* uint8 bmAttributes; Bit 7: Bus-powered, 6: Self-powered, 5 Remote-wakwup, 4..0: resvd */ 0x00, /* uint8 MaxPower; */ /* interface */ 0x09, /* uint8 if_bLength; */ 0x04, /* uint8 if_bDescriptorType; Interface */ 0x00, /* uint8 if_bInterfaceNumber; */ 0x00, /* uint8 if_bAlternateSetting; */ 0x01, /* uint8 if_bNumEndpoints; */ 0x09, /* uint8 if_bInterfaceClass; HUB_CLASSCODE */ 0x00, /* uint8 if_bInterfaceSubClass; */ 0x00, /* uint8 if_bInterfaceProtocol; */ 0x00, /* uint8 if_iInterface; */ /* endpoint */ 0x07, /* uint8 ep_bLength; */ 0x05, /* uint8 ep_bDescriptorType; Endpoint */ 0x81, /* uint8 ep_bEndpointAddress; IN Endpoint 1 */ 0x03, /* uint8 ep_bmAttributes; Interrupt */ 0x00, /* uint16 ep_wMaxPacketSize; ((MAX_ROOT_PORTS + 1) / 8 */ 0x02, 0xff /* uint8 ep_bInterval; 255 ms */ }; /* Standard string descriptors */ static uint8 root_hub_str_index0[] = { 0x04, /* uint8 bLength; */ 0x03, /* uint8 bDescriptorType; String-descriptor */ 0x09, /* uint8 lang ID */ 0x04, /* uint8 lang ID */ }; static uint8 root_hub_str_index1[] = { 0x22, /* uint8 bLength; */ 0x03, /* uint8 bDescriptorType; String-descriptor */ 'A', /* uint8 Unicode */ 0, /* uint8 Unicode */ 'R', /* uint8 Unicode */ 0, /* uint8 Unicode */ 'A', /* uint8 Unicode */ 0, /* uint8 Unicode */ 'N', /* uint8 Unicode */ 0, /* uint8 Unicode */ 'Y', /* uint8 Unicode */ 0, /* uint8 Unicode */ 'M', /* uint8 Unicode */ 0, /* uint8 Unicode */ ' ', /* uint8 Unicode */ 0, /* uint8 Unicode */ ' ', /* uint8 Unicode */ 0, /* uint8 Unicode */ 'R', /* uint8 Unicode */ 0, /* uint8 Unicode */ 'o', /* uint8 Unicode */ 0, /* uint8 Unicode */ 'o', /* uint8 Unicode */ 0, /* uint8 Unicode */ 't', /* uint8 Unicode */ 0, /* uint8 Unicode */ ' ', /* uint8 Unicode */ 0, /* uint8 Unicode */ 'H', /* uint8 Unicode */ 0, /* uint8 Unicode */ 'u', /* uint8 Unicode */ 0, /* uint8 Unicode */ 'b', /* uint8 Unicode */ 0, /* uint8 Unicode */ }; /* Class descriptor */ static uint8 root_hub_class_des[] = { 0x09, /* uint8 bDescLength*/ 0x29, /* uint8 bDescriptorType: 0x29 for hub */ 0x02, /* uint8 bNbrPorts: 2 downstream ports */ 0x09, /* uint16 wHubCharacteristics */ /* Bit 0,1: individual port power switching */ /* Bit 2: stand alone hub */ /* Bit 3,4: individual port overcurrent protection */ 0x00, /* Bit 8,15: reserved */ 0xff, /* uint8 bPwrOn2PwrGood */ 0x00, /* unit8 bHubContrCurrent */ 0x00, /* uint8 DeviceRemovable */ 0xff, /* uint8 PortPwrCtrlMask */ }; /* Class status */ static uint8 root_hub_class_st[] = { 0x00, /* uint16 wHubStatus */ /* Bit 0: Local power supply good */ /* Bit 1: No overcurrent condition extsts */ 0x00, 0x00, /* uint16 wHubChange */ /* Bit 0: No change has occurred to Local Power Status */ /* Bit 1: No change has occurred to Local Power Status */ 0x00, }; /*--- Global variables ---*/ virtual_usbdev_t virtual_device[USB_MAX_DEVICE]; int number_ports_used; int reset_flag; roothub_t roothub; uint32 port_status[NUMBER_OF_PORTS]; static libusb_device **devs; static libusb_device *dev; static libusb_device_handle *devh[USB_MAX_DEVICE]; static bool init_flag = false; /*--- Functions ---*/ void fill_port_status(unsigned int port_number, bool connected) { D(bug("USBHost: fill_port_status()")); if (connected) port_status[port_number] |= RH_PS_CCS; /* Device attached */ else port_status[port_number] &= ~RH_PS_CCS; /* Device dettached */ port_status[port_number] |= RH_PS_CSC; /* connect status change */ D(bug("USBHost: (After) P%d port_status %x", port_number, port_status[port_number])); } int32 usbhost_get_device_list(void) { int idx_dev = 0, idx_virtdev = 0; ssize_t cnt; number_ports_used = 0; cnt = libusb_get_device_list(NULL, &devs); D(bug("USBHost: Number of USB devices attached to host bus: %d", (int)cnt)); if (cnt < 0) return (int32)cnt; while ((dev = devs[idx_dev]) != NULL) { int r = libusb_open(dev, &devh[idx_dev]); if (r < 0) { D(bug("USBHost: Failed to open the device %d", idx_dev)); goto try_another; } D(bug("USBHost: Device %d opened", idx_dev)); r = libusb_get_device_descriptor(dev, &virtual_device[idx_virtdev].dev_desc); if (r < 0) { D(bug("USBHost: Unable to get device descriptor %d", r)); goto try_another; } if (virtual_device[idx_virtdev].dev_desc.bDeviceClass == LIBUSB_CLASS_HUB) { D(bug("USBHost: Device is a HUB")); goto try_another; } r = libusb_get_string_descriptor_ascii( devh[idx_dev], virtual_device[idx_virtdev].dev_desc.iProduct, (unsigned char *)virtual_device[idx_virtdev].product_name, MAX_PRODUCT_LENGTH); if (r < 0) { D(bug("USBHost: Unable to get string descriptor %d", r)); goto try_another; } r = libusb_get_config_descriptor(dev, 0, &virtual_device[idx_virtdev].config_desc); if (r < 0) { D(bug("USBHost: Unable to get configuration descriptor %d", r)); goto try_another; } D(bug("USBHost: Number of interfaces %d", virtual_device[idx_virtdev].config_desc->bNumInterfaces)); virtual_device[idx_virtdev].idx_dev = idx_dev; virtual_device[idx_virtdev].virtdev_available = true; idx_virtdev++; try_another: idx_dev++; } return 0; } int usbhost_release_device(int virtdev_index) { D(bug("USBHost: Release device %d", virtdev_index)); int r = -1; int dev_index, if_index; int port_number; int no_of_ifaces; dev_index = virtual_device[virtdev_index].idx_dev; no_of_ifaces = virtual_device[virtdev_index].config_desc->bNumInterfaces; for (if_index = 0; if_index < no_of_ifaces; if_index++) { r = libusb_release_interface(devh[dev_index], if_index); if (r < 0) { D(bug("USBHost: Releasing interface %d failed", if_index)); } } virtual_device[virtdev_index].connected = false; port_number = virtual_device[virtdev_index].port_number; roothub.port[port_number].busy = false; roothub.port[port_number].atari_dev_idx = -1; fill_port_status(port_number, virtual_device[virtdev_index].connected); return r; } void usbhost_free_usb_devices(void) { int i = 0; while (devs[i] != NULL) { if (virtual_device[i].connected) usbhost_release_device(i); libusb_close(devh[i]); devh[i] = NULL; i++; } libusb_free_device_list(devs,0); memset(&virtual_device, 0, USB_MAX_DEVICE * sizeof(virtual_usbdev_t)); } int usbhost_claim_device(int virtdev_index) { D(bug("USBHost: Claim device %d", virtdev_index)); int r = -1; int dev_index, if_index; int no_of_ifaces; dev_index = virtual_device[virtdev_index].idx_dev; no_of_ifaces = virtual_device[virtdev_index].config_desc->bNumInterfaces; for (if_index = 0; if_index < no_of_ifaces; if_index++ ) { r = libusb_kernel_driver_active(devh[dev_index], if_index); if (r < 0) { D(bug("USBHost: Checking if kernel driver is active failed. Error %d", r)); return -1; } if (r == 1) { D(bug("USBHost: Kernel driver active for interface %d", if_index)); D(bug("USBHost: Trying to detach it")); r = libusb_detach_kernel_driver(devh[dev_index], if_index); } else goto claim; if (r < 0) { D(bug("USBHost: Driver detaching failed")); return -1; } claim: r = libusb_claim_interface(devh[dev_index], if_index); if (r < 0) { D(bug("USBHost: Claiming interface number %d failed", if_index)); } } virtual_device[virtdev_index].connected = true; for (int i = 0; i < NUMBER_OF_PORTS; i++) { if (roothub.port[i].busy == true) continue; roothub.port[i].busy = true; roothub.port[i].port_number = i; roothub.port[i].libusb_dev_idx = dev_index; virtual_device[virtdev_index].port_number = i; break; } fill_port_status(virtual_device[virtdev_index].port_number, virtual_device[virtdev_index].connected); return r; } void print_devs(libusb_device **devs) { libusb_device *dev; int i = 0; while ((dev = devs[i++]) != NULL) { struct libusb_device_descriptor desc; int r = libusb_get_device_descriptor(dev, &desc); if (r < 0) { panicbug("USBHost: failed to get device descriptor"); return; } printf("USBHost: %04x:%04x (bus %d, device %d)\n", desc.idVendor, desc.idProduct, libusb_get_bus_number(dev), libusb_get_device_address(dev)); } } int trigger_interrupt(void *) { D(bug("USBHost: send interrupt")); for (;;) { for (int port_number = 0; port_number < NUMBER_OF_PORTS; port_number++) { if ((port_status[port_number] & RH_PS_CSC)) { TRIGGER_INTERRUPT; D(bug("USBHost: trigger interrupt. port_status[%d] %x", port_number, port_status[port_number])); } } SDL_Delay(250); } return 0; } void usbhost_init_libusb(void) { if (init_flag) return; if (libusb_init(NULL)) { D(bug("USBHost: Imposible to start libusb")); return; } libusb_set_debug(NULL, 3); for (int i = 0; i < USB_MAX_DEVICE; i++) { virtual_device[i].connected = false; virtual_device[i].virtdev_available = false; } for (int i = 0; i < NUMBER_OF_PORTS; i++) { roothub.port[i].libusb_dev_idx = 0; roothub.port[i].atari_dev_idx = -1; } SDL_CreateNamedThread(trigger_interrupt, "USB", NULL); usbhost_get_device_list(); init_flag = true; } /*--- Private functions ---*/ /*--- Support functions ---*/ int32 USBHost::aranym_submit_rh_msg(uint32 pipe, memptr buffer, int32 transfer_len, devrequest *cmd) { D(bug("USBHost: aranym_submit_rh_msg()")); int32 leni = transfer_len; int32 len = 0; uint32 datab[4]; uint8 *data_buf = (uint8 *) datab; int32 stat = 0; uint16 bmRType_bReq; uint16 wValue; uint16 wIndex; uint16 wLength; if (usb_pipeint(pipe)) { D(bug("USBHost: Root-Hub submit IRQ: NOT implemented")); return -1; } bmRType_bReq = cmd->requesttype | (cmd->request << 8); wValue = cmd->value; wIndex = cmd->index; wLength = cmd->length; D(bug("USBHost: --- HUB ----------------------------------------")); D(bug("USBHost: submit rh urb, req=%x val=%#x index=%#x len=%d", bmRType_bReq, wValue, wIndex, wLength)); D(bug("USBHost: ------------------------------------------------")); switch (bmRType_bReq) { case RH_GET_STATUS: D(bug("USBHost: RH_GET_STATUS")); *data_buf = (SDL_BYTEORDER == SDL_BIG_ENDIAN) ? (uint16) SDL_Swap16(1) : (uint16)(1) ; len = 2; break; case RH_GET_STATUS | RH_INTERFACE: D(bug("USBHost: RH_GET_STATUS | RH_INTERFACE")); *data_buf = (SDL_BYTEORDER == SDL_BIG_ENDIAN) ? (uint16) SDL_Swap16(0) : (uint16)(0) ; len = 2; break; case RH_GET_STATUS | RH_ENDPOINT: D(bug("USBHost: RH_GET_STATUS | RH_ENDPOINT")); *data_buf = (SDL_BYTEORDER == SDL_BIG_ENDIAN) ? (uint16) SDL_Swap16(0) : (uint16)(0) ; len = 2; break; case RH_GET_STATUS | RH_CLASS: D(bug("USBHost: RH_GET_STATUS | RH_CLASS")); data_buf = root_hub_class_st; len = 4; break; case RH_GET_STATUS | RH_OTHER | RH_CLASS: D(bug("USBHost: RH_GET_STATUS | RH_OTHER | RH_CLASS")); *(uint32 *)data_buf = (SDL_BYTEORDER == SDL_BIG_ENDIAN) ? SDL_Swap32(port_status[wIndex - 1]) : port_status[wIndex - 1]; len = 4; break; case RH_CLEAR_FEATURE | RH_ENDPOINT: D(bug("USBHost: RH_CLEAR_FEATURE | RH_ENDPOINT")); switch (wValue) { case RH_ENDPOINT_STALL: D(bug("USBHost: C_HUB_ENDPOINT_STALL")); len = 0; break; } break; case RH_CLEAR_FEATURE | RH_CLASS: D(bug("USBHost: RH_CLEAR_FEATURE | RH_CLASS")); switch (wValue) { case RH_C_HUB_LOCAL_POWER: D(bug("USBHost: C_HUB_LOCAL_POWER")); len = 0; break; case RH_C_HUB_OVER_CURRENT: D(bug("USBHost: C_HUB_OVER_CURRENT")); len = 0; break; } break; case RH_CLEAR_FEATURE | RH_OTHER | RH_CLASS: D(bug("USBHost: RH_CLEAR_FEATURE | RH_OTHER | RH_CLASS")); switch (wValue) { case RH_PORT_ENABLE: port_status[wIndex - 1] &= ~RH_PS_PES; len = 0; break; case RH_PORT_SUSPEND: port_status[wIndex - 1] |= RH_PS_PSS; len = 0; break; case RH_PORT_POWER: len = 0; break; case RH_C_PORT_CONNECTION: port_status[wIndex - 1] &= ~RH_PS_CSC; len = 0; break; case RH_C_PORT_ENABLE: port_status[wIndex - 1] &= ~RH_PS_PESC; len = 0; break; case RH_C_PORT_SUSPEND: len = 0; break; case RH_C_PORT_OVER_CURRENT: port_status[wIndex - 1] &= ~RH_PS_OCIC; len = 0; break; case RH_C_PORT_RESET: port_status[wIndex - 1] &= ~RH_PS_PRSC; len = 0; break; default: D(bug("USBHost: invalid wValue")); stat = USB_ST_STALLED; } break; case RH_SET_FEATURE | RH_OTHER | RH_CLASS: D(bug("USBHost: RH_SET_FEATURE | RH_OTHER | RH_CLASS")); switch (wValue) { case RH_PORT_SUSPEND: len = 0; break; case RH_PORT_RESET: port_status[wIndex - 1] |= RH_PS_PRS; len = 0; break; case RH_PORT_POWER: port_status[wIndex - 1] |= RH_PS_PPS; len = 0; break; case RH_PORT_ENABLE: len = 0; break; default: D(bug("USBHost: invalid wValue")); stat = USB_ST_STALLED; } break; case RH_SET_ADDRESS: D(bug("USBHost: RH_SET_ADDRESS")); rh_devnum = wValue; len = 0; break; case RH_GET_DESCRIPTOR: D(bug("USBHost: RH_GET_DESCRIPTOR: %x, %d", wValue, wLength)); switch (wValue) { case (USB_DT_DEVICE << 8): /* device descriptor */ len = min1_t(uint32, leni, min2_t(uint32, sizeof(root_hub_dev_des), wLength)); data_buf = root_hub_dev_des; break; case (USB_DT_CONFIG << 8): /* configuration descriptor */ len = min1_t(uint32, leni, min2_t(uint32, sizeof(root_hub_config_des), wLength)); data_buf = root_hub_config_des; break; case ((USB_DT_STRING << 8) | 0x00): /* string 0 descriptors */ len = min1_t(uint32, leni, min2_t(uint32, sizeof(root_hub_str_index0), wLength)); data_buf = root_hub_str_index0; break; case ((USB_DT_STRING << 8) | 0x01): /* string 1 descriptors */ len = min1_t(uint32, leni, min2_t(uint32, sizeof(root_hub_str_index1), wLength)); data_buf = root_hub_str_index1; break; default: D(bug("USBHost: invalid wValue")); stat = USB_ST_STALLED; } break; case RH_GET_DESCRIPTOR | RH_CLASS: D(bug("USBHost: RH_GET_DESCRIPTOR | RH_CLASS")); data_buf = root_hub_class_des; len = min1_t(uint32, leni, min2_t(uint32, data_buf[0], wLength)); break; case RH_GET_CONFIGURATION: D(bug("USBHost: RH_GET_CONFIGURATION")); *(uint8 *) data_buf = 0x01; len = 1; break; case RH_SET_CONFIGURATION: D(bug("USBHost: RH_SET_CONFIGURATION")); len = 0; break; default: D(bug("USBHost: *** *** *** unsupported root hub command *** *** ***")); stat = USB_ST_STALLED; } len = min1_t(uint32, len, leni); if(buffer != 0) Host2Atari_memcpy(buffer, data_buf, len); return (stat ? -1 : len); } int32 USBHost::rh_port_status(memptr rh) { for (int i = 0; i < NUMBER_OF_PORTS; i++) { WriteInt32(rh + 4 * i, port_status[i]); } return 0; } /*--- API USB functions ---*/ int32 USBHost::usb_lowlevel_init(void) { D(bug("\nUSBHost: usb_lowlevel_init()")); rh_devnum = 0; reset(); return 0; } int32 USBHost::usb_lowlevel_stop(void) { D(bug("\nUSBHost: usb_lowlevel_stop()")); return 0; } int32 USBHost::submit_control_msg(uint32 pipe, memptr buffer, int32 len, memptr devrequest) { D(bug("\nUSBHost: submit_control_msg()")); struct devrequest *cmd; uint8 *tempbuff; int32 r = -1; unsigned int dev_idx = 0; int i; uint16 bmRType; uint16 bReq; uint16 wValue; uint16 wIndex; uint16 wLength; cmd = (struct devrequest *)Atari2HostAddr(devrequest); tempbuff = (uint8 *) Atari2HostAddr(buffer); int32 devnum = usb_pipedevice(pipe); D(bug("USBHost: devnum %d ", devnum)); /* Control message is for the HUB? */ if (devnum == rh_devnum) return aranym_submit_rh_msg(pipe, buffer, len, cmd); bmRType = cmd->requesttype; bReq = cmd->request; wValue = cmd->value; wIndex = cmd->index; wLength = cmd->length; D(bug("USBHost: bmRType %x, bReq %x, wValue %x, wIndex %x, wLength %x", bmRType, bReq, wValue, wIndex, wLength)); /* Don't allow to change device's addresses set by the host OS */ if (bReq == USB_REQ_SET_ADDRESS) { for (i = 0; i < NUMBER_OF_PORTS; i++) { /* * We need to be careful to don't assign to an empty port an already connected * device during the virtual machine reboot. For this we've created the reset_flag * which indicates that we are setting USB devices during a reboot scenario. */ if (((roothub.port[i].atari_dev_idx < 0) && !reset_flag) || ((roothub.port[i].atari_dev_idx >= 0) && reset_flag)) { roothub.port[i].atari_dev_idx = wValue; if (reset_flag) reset_flag = 0; break; } } D(bug("USBHost: Attempt to set device address")); r = 0; } else if ((bReq == USB_REQ_SET_CONFIGURATION) && (wValue > 1)) { /* We only support one configuration per device */ D(bug("USBHost: Attempt to change to configuration number %d ", wValue)); r = -1; } else { for (i = 0; i < NUMBER_OF_PORTS; i++) { if (roothub.port[i].atari_dev_idx == devnum) { dev_idx = roothub.port[i].libusb_dev_idx; D(bug("USBHost: dev_idx %d ", dev_idx)); break; } } r = libusb_control_transfer(devh[dev_idx], bmRType, bReq, wValue, wIndex, tempbuff, wLength, 0); D(bug("USBHost: bytes transmitted %d ", r)); } return r; } int32 USBHost::submit_int_msg(uint32 /* pipe */, memptr /* buffer */, int32 /* len*/, int32 /* interval*/) { D(bug("\nUSBHost: submit_int_msg()")); D(bug("\nUSBHost: Function not supported yet")); return -1; } int32 USBHost::submit_bulk_msg(uint32 pipe, memptr buffer, int32 len) { D(bug("\nUSBHost: submit_bulk_msg()")); uint8 *tempbuff; int32 dir_out; uint8 endpoint; int32 devnum; int32 transferred; unsigned int dev_idx = 0; int i; int32 r; tempbuff = (uint8 *)Atari2HostAddr(buffer); dir_out = usb_pipeout(pipe); endpoint = usb_pipeendpoint(pipe) | (dir_out ? LIBUSB_ENDPOINT_OUT : LIBUSB_ENDPOINT_IN); devnum = usb_pipedevice(pipe); D(bug("USBHost: devnum %d ", devnum)); D(bug("USBHost: pipe %x ", pipe)); D(bug("USBHost: --- BULK -----------------------------------------------")); D(bug("USBHost: dev=%d endpoint=%d endpoint address= %x buf=%p size=%d dir_out=%d", usb_pipedevice(pipe), usb_pipeendpoint(pipe), endpoint, tempbuff, len, dir_out)); for (i = 0; i < NUMBER_OF_PORTS; i++) { if (roothub.port[i].atari_dev_idx == devnum) { dev_idx = roothub.port[i].libusb_dev_idx; D(bug("USBHost: dev_idx %d ", dev_idx)); break; } } r = libusb_bulk_transfer(devh[dev_idx], endpoint, tempbuff, len, &transferred, 1000); D(bug("USBHost: return: %d len: %d transferred: %d", r, len, transferred)); return r; } /*--- Public functions ---*/ /* reset, called upon OS reboot */ void USBHost::reset() { D(bug("USBHost: reset")); for (int i = 0; i < NUMBER_OF_PORTS; i++) { port_status[i] |= (RH_PS_PPS | RH_PS_PES); if (port_status[i] & RH_PS_CCS) { reset_flag = 1; port_status[i] |= RH_PS_CSC; } } } /*--- Dispatcher ---*/ int32 USBHost::dispatch(uint32 fncode) { int32 ret; D(bug("USBHost: dispatch(%u)", fncode)); ret = EINVFN; switch(fncode) { case GET_VERSION: D(bug("USBHost: getVersion")); ret = USBHOST_NFAPI_VERSION; break; case USBHOST_INTLEVEL: D(bug("USBHost: getINTlevel")); ret = INTLEVEL; break; case USBHOST_RH_PORT_STATUS: ret = rh_port_status(getParameter(0)); break; case USBHOST_LOWLEVEL_INIT: ret = usb_lowlevel_init(); break; case USBHOST_LOWLEVEL_STOP: ret = usb_lowlevel_stop(); break; case USBHOST_SUBMIT_CONTROL_MSG: ret = submit_control_msg(getParameter(0), getParameter(1), getParameter(2), getParameter(3)); break; case USBHOST_SUBMIT_INT_MSG: ret = submit_int_msg(getParameter(0), getParameter(1), getParameter(2), getParameter(3)); break; case USBHOST_SUBMIT_BULK_MSG: ret = submit_bulk_msg(getParameter(0), getParameter(1), getParameter(2)); break; default: D(bug("USBHost: unimplemented function #%d", fncode)); break; } D(bug("USBHost: function returning with 0x%08x", ret)); return ret; } /*--- Constructor/destructor functions ---*/ USBHost::USBHost() { for (int i = 0; i < NUMBER_OF_PORTS; i++) { port_status[i] = 0x0000; /* Clean before use */ } D(bug("USBHost: created")); } USBHost::~USBHost() { int i = USB_MAX_DEVICE - 1; unsigned int port_number = 0; if (init_flag) { while (i >= 0) { if (devh[i] != NULL) { D(bug("USBHost: Trying to close device %d", i)); while (port_number < NUMBER_OF_PORTS) { if (roothub.port[port_number].libusb_dev_idx == i) { if (libusb_release_interface(devh[i], roothub.port[port_number].interface) < 0) { D(bug("USBHost: unable to release device interface")); } if (libusb_attach_kernel_driver(devh[i], roothub.port[port_number].interface) < 0) { D(bug("USBHost: unable to reattach kernel driver to interface")); } break; } port_number++; } libusb_close(devh[i]); devh[i] = NULL; D(bug("USBHost: %d device closed", i)); } i--; } usbhost_free_usb_devices(); libusb_exit(NULL); } D(bug("USBHost: destroyed")); } aranym-1.1.0/src/natfeat/osmesa_context.h0000664000175000017500000002407213454637622016624 0ustar joyjoy/* NatFeat host OSMesa rendering; context management ARAnyM (C) 2015 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFOSMESA_CONTEXT_H #define NFOSMESA_CONTEXT_H #if defined(__MACOSX__) #include #endif #if defined(SDL_VIDEO_DRIVER_X11) && defined(HAVE_X11_XLIB_H) #include #endif /*--- Base Class ---*/ class OffscreenContext { protected: /* * handle of library to fetch system dependant functions from */ void *lib_handle; /* * user-specified number of pixels per row */ GLint userRowLength; /* * TRUE -> Y increases upward (default) * FALSE -> Y increases downward */ GLboolean yup; /* Atari buffer */ memptr dst_buffer; /* * Host buffer, if channel reduction needed (deprecated) * or when we cannot pass the atari address directly * (e.g. when using FULLMMU, or glReadPixels() in opposite Y-order) */ void *host_buffer; GLsizei buffer_width, buffer_height, buffer_bpp; /* * format of the conversion buffer */ GLenum srcformat; /* * requested destination format */ GLenum dstformat; /* * number of bytes per pixel for the dstformat */ GLsizei destination_bpp; /* * conversion needed from srcformat to dstformat ? */ bool conversion; /* * true if dstformat was changed from OSMESA_ARGB to GL_BGRA * (GL does not have something like GL_ARGB) */ bool swapcomponents; GLboolean error_check_enabled; void ConvertContext8(); /* 8 bits per channel */ void ConvertContext16(void); /* 16 bits per channel */ void ConvertContext32(void); /* 32 bits per channel */ void ResizeBuffer(GLsizei newBpp); GLboolean getYup() { return yup; } GLint getUserRowLength() { return userRowLength ? userRowLength : width; } virtual void setYup(GLboolean enable) { yup = enable; } virtual bool UpsideDown(void) { return false; } virtual void setUserRowLength(GLint length) { userRowLength = length; if (userRowLength != 0 && userRowLength != width) conversion = true; } static bool FormatHasAlpha(GLenum format); public: static GLboolean has_MESA_pack_invert; GLenum type; GLsizei width, height; OffscreenContext(void *glhandle); virtual ~OffscreenContext(); virtual bool TestContext() = 0; virtual bool CreateContext(GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OffscreenContext *sharelist) = 0; virtual GLboolean MakeCurrent(memptr buffer, GLenum type, GLsizei width, GLsizei height) = 0; virtual GLboolean MakeCurrent() = 0; virtual GLboolean ClearCurrent() = 0; virtual void Postprocess(const char * /* filter */, GLuint /* enable_value */) {} virtual bool GetIntegerv(GLint pname, GLint *value) = 0; virtual void PixelStore(GLint pname, GLint value); virtual void ColorClamp(GLboolean enable) = 0; virtual void ConvertContext(); virtual void GetColorBuffer(GLint *width, GLint *height, GLint *format, memptr *buffer); virtual void GetDepthBuffer(GLint *width, GLint *height, GLint *bytesPerValue, memptr *buffer); virtual bool IsOpengl(void) = 0; }; /*--- Class for using OSMesa offscreen rendering ---*/ class MesaContext : public OffscreenContext { protected: OSMesaContext ctx; public: MesaContext(void *glhandle); virtual ~MesaContext(); virtual bool CreateContext(GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OffscreenContext *sharelist); virtual GLboolean MakeCurrent(memptr buffer, GLenum type, GLsizei width, GLsizei height); virtual GLboolean MakeCurrent(); virtual GLboolean ClearCurrent(); virtual void Postprocess(const char *filter, GLuint enable_value); virtual bool GetIntegerv(GLint pname, GLint *value); virtual void PixelStore(GLint pname, GLint value); virtual void ColorClamp(GLboolean enable); virtual bool TestContext(); virtual bool IsOpengl(void) { return false; } }; /*--- Base Class for using OpenGL render buffers ---*/ class OpenglContext : public OffscreenContext { protected: GLint render_width; GLint render_height; GLint depthBits; GLint stencilBits; GLint accumBits; GLuint framebuffer; GLuint colorbuffer; GLuint colortex; bool useTeximage; GLenum texTarget; GLuint depthbuffer; GLenum depthformat; GLuint stencilbuffer; GLboolean has_GL_EXT_packed_depth_stencil; GLboolean has_GL_NV_packed_depth_stencil; GLboolean has_GL_EXT_texture_object; GLboolean has_GL_XX_texture_rectangle; GLboolean has_GL_ARB_texture_non_power_of_two; virtual bool CreateContext(GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OffscreenContext *sharelist); void DestroyContext(void); GLboolean MakeBufferCurrent(bool create_buffer); GLboolean ClearCurrent(); virtual void setYup(GLboolean enable); virtual bool UpsideDown(void) { return !getYup(); } GLboolean createBuffers(); public: OpenglContext(void *glhandle); virtual ~OpenglContext(); virtual bool GetIntegerv(GLint pname, GLint *value); virtual void ColorClamp(GLboolean enable); virtual void ConvertContext(); virtual bool IsOpengl(void) { return true; } }; /*--- System dependant classes using OpenGL ---*/ #if defined(SDL_VIDEO_DRIVER_X11) && defined(HAVE_X11_XLIB_H) class X11OpenglContext : public OpenglContext { protected: GLXContext ctx; GLXPbuffer pbuffer; static Display *dpy; static Window sdlwindow; static int screen; static XVisualInfo* (*pglXChooseVisual)(Display *dpy, int, int *); static GLXContext (*pglXCreateContext)(Display *, XVisualInfo *, GLXContext, int); static int (*pglXMakeCurrent)(Display *, GLXDrawable, GLXContext); static GLXContext (*pglXGetCurrentContext)(void); static void (*pglXDestroyContext)(Display *, GLXContext); static const char *(*pglXQueryServerString)(Display *, int, int); static const char *(*pglXGetClientString)(Display *, int); static const char *(*pglXQueryExtensionsString)(Display *, int); static GLXContext (*pglXCreateContextAttribsARB) (Display *dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list); static GLXFBConfig * (*pglXChooseFBConfig) (Display *dpy, int screen, const int *attrib_list, int *nelements); static Bool (*pglXMakeContextCurrent) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); static GLXPbuffer (*pglXCreatePbuffer) (Display *dpy, GLXFBConfig config, const int *attrib_list); static void (*pglXDestroyPbuffer) (Display *dpy, GLXPbuffer pbuf); static int (*pXFree)(void *); void dispose(); public: X11OpenglContext(void *glhandle); virtual ~X11OpenglContext(); virtual bool CreateContext(GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OffscreenContext *sharelist); virtual GLboolean MakeCurrent(memptr buffer, GLenum type, GLsizei width, GLsizei height); virtual GLboolean MakeCurrent(); virtual GLboolean ClearCurrent(); virtual bool TestContext(); static void InitPointers(void *lib_handle); static SDL_GLContext GetSDLContext(void); static void SetSDLContext(SDL_GLContext ctx); }; #endif #if defined(SDL_VIDEO_DRIVER_WINDOWS) class Win32OpenglContext : public OpenglContext { private: static LONG CALLBACK tmpWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); static bool windClassRegistered; static HWND tmpHwnd; static HDC tmphdc; static HWND sdlwindow; protected: HGLRC ctx; int iPixelFormat; static int (WINAPI *pwglGetPixelFormat)(HDC); static int (WINAPI *pwglChoosePixelFormat) (HDC hDc, const PIXELFORMATDESCRIPTOR *pPfd); static WINBOOL (WINAPI *pwglSetPixelFormat) (HDC hDc, int ipfd, const PIXELFORMATDESCRIPTOR *ppfd); static WINBOOL (WINAPI *pwglSwapBuffers)(HDC); static int (WINAPI *pwglDescribePixelFormat)(HDC hdc, int iPixelFormat, UINT nBytes, PIXELFORMATDESCRIPTOR *ppfd); static WINBOOL (WINAPI *pwglCopyContext)(HGLRC, HGLRC, UINT); static HGLRC (WINAPI *pwglCreateContext)(HDC hdc); static HGLRC WINAPI (*pwglCreateLayerContext)(HDC, int); static WINBOOL (WINAPI *pwglDeleteContext)(HGLRC); static HGLRC (WINAPI *pwglGetCurrentContext)(void); static HDC (WINAPI *pwglGetCurrentDC)(void); static WINBOOL (WINAPI *pwglMakeCurrent)(HDC, HGLRC); static WINBOOL (WINAPI *pwglShareLists)(HGLRC, HGLRC); static const GLubyte * (WINAPI *pwglGetExtensionsStringARB) (HDC hdc); static const GLubyte * (WINAPI *pwglGetExtensionsStringEXT) (void); void dispose(); public: Win32OpenglContext(void *glhandle); virtual ~Win32OpenglContext(); virtual bool CreateContext(GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OffscreenContext *sharelist); virtual GLboolean MakeCurrent(memptr buffer, GLenum type, GLsizei width, GLsizei height); virtual GLboolean MakeCurrent(); virtual GLboolean ClearCurrent(); virtual bool TestContext(); static void InitPointers(void *lib_handle); static HGLRC CreateTmpContext(int &iPixelFormat, GLint _colorBits = 32, GLint _depthBits = 0, GLint _stencilBits = 0, GLint _accumBits = 0); static void DeleteTmpContext(HGLRC tmp_ctx); static SDL_GLContext GetSDLContext(void); static void SetSDLContext(SDL_GLContext ctx); }; #endif #if defined(SDL_VIDEO_DRIVER_QUARTZ) || defined(SDL_VIDEO_DRIVER_COCOA) #include class QuartzOpenglContext : public OpenglContext { protected: CGLContextObj ctx; void dispose(); public: QuartzOpenglContext(void *glhandle); virtual ~QuartzOpenglContext(); virtual bool CreateContext(GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OffscreenContext *sharelist); virtual GLboolean MakeCurrent(memptr buffer, GLenum type, GLsizei width, GLsizei height); virtual GLboolean MakeCurrent(); virtual GLboolean ClearCurrent(); virtual bool TestContext(); }; #endif #endif /* NFOSMESA_CONTEXT_H */ aranym-1.1.0/src/natfeat/osmesa_context.cpp0000664000175000017500000021313413454637622017156 0ustar joyjoy/* NatFeat host OSMesa rendering ARAnyM (C) 2004,2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "SDL_compat.h" #include #include #if !defined(SDL_VIDEO_DRIVER_X11) || defined(HAVE_X11_XLIB_H) #include #endif #include #include "cpu_emulation.h" #include "parameters.h" #include "nfosmesa.h" #include "../../atari/nfosmesa/nfosmesa_nfapi.h" #include "osmesa_context.h" #if SDL_VERSION_ATLEAST(2, 0, 0) #include "host.h" #endif #define DEBUG 0 #include "debug.h" #ifdef NFOSMESA_SUPPORT /*--- Defines ---*/ #define VDI_ARGB 0x8 #define VDI_RGB 0xf #define DIRECT_VDI_ARGB 0x10 /*--- Classes ---*/ /* * class to save current pixel pack attributes, * set them to default values and * restore them in the destructor */ class PixelPackAttributes { private: bool restore; public: GLint pack_swap_bytes; GLint pack_lsb_first; GLint pack_row_length; GLint pack_image_height; GLint pack_skip_pixels; GLint pack_skip_rows; GLint pack_skip_images; GLint pack_alignment; GLint pack_invert; PixelPackAttributes(bool save_and_restore = true); virtual ~PixelPackAttributes(void); }; /*-----------------------------------------------------------------------*/ PixelPackAttributes::PixelPackAttributes(bool save_and_restore) : restore(save_and_restore), pack_swap_bytes(GL_FALSE), pack_lsb_first(GL_FALSE), pack_row_length(0), pack_image_height(0), pack_skip_pixels(0), pack_skip_rows(0), pack_skip_images(0), pack_alignment(4), pack_invert(GL_FALSE) { OSMesaDriver::fn.glGetIntegerv(GL_PACK_SWAP_BYTES, &pack_swap_bytes); OSMesaDriver::fn.glGetIntegerv(GL_PACK_LSB_FIRST, &pack_lsb_first); OSMesaDriver::fn.glGetIntegerv(GL_PACK_ROW_LENGTH, &pack_row_length); OSMesaDriver::fn.glGetIntegerv(GL_PACK_IMAGE_HEIGHT, &pack_image_height); OSMesaDriver::fn.glGetIntegerv(GL_PACK_SKIP_PIXELS, &pack_skip_pixels); OSMesaDriver::fn.glGetIntegerv(GL_PACK_SKIP_ROWS, &pack_skip_rows); OSMesaDriver::fn.glGetIntegerv(GL_PACK_SKIP_IMAGES, &pack_skip_images); OSMesaDriver::fn.glGetIntegerv(GL_PACK_ALIGNMENT, &pack_alignment); if (OffscreenContext::has_MESA_pack_invert) OSMesaDriver::fn.glGetIntegerv(GL_PACK_INVERT_MESA, &pack_invert); if (save_and_restore) { OSMesaDriver::fn.glPixelStorei(GL_PACK_SWAP_BYTES, GL_FALSE); OSMesaDriver::fn.glPixelStorei(GL_PACK_LSB_FIRST, GL_FALSE); OSMesaDriver::fn.glPixelStorei(GL_PACK_ROW_LENGTH, 0); OSMesaDriver::fn.glPixelStorei(GL_PACK_IMAGE_HEIGHT, 0); OSMesaDriver::fn.glPixelStorei(GL_PACK_SKIP_PIXELS, 0); OSMesaDriver::fn.glPixelStorei(GL_PACK_SKIP_ROWS, 0); OSMesaDriver::fn.glPixelStorei(GL_PACK_SKIP_IMAGES, 0); OSMesaDriver::fn.glPixelStorei(GL_PACK_ALIGNMENT, 4); if (OffscreenContext::has_MESA_pack_invert) OSMesaDriver::fn.glPixelStorei(GL_PACK_INVERT_MESA, GL_FALSE); } } /*-----------------------------------------------------------------------*/ PixelPackAttributes::~PixelPackAttributes(void) { if (restore) { OSMesaDriver::fn.glPixelStorei(GL_PACK_SWAP_BYTES, pack_swap_bytes); OSMesaDriver::fn.glPixelStorei(GL_PACK_LSB_FIRST, pack_lsb_first); OSMesaDriver::fn.glPixelStorei(GL_PACK_ROW_LENGTH, pack_row_length); OSMesaDriver::fn.glPixelStorei(GL_PACK_IMAGE_HEIGHT, pack_image_height); OSMesaDriver::fn.glPixelStorei(GL_PACK_SKIP_PIXELS, pack_skip_pixels); OSMesaDriver::fn.glPixelStorei(GL_PACK_SKIP_ROWS, pack_skip_rows); OSMesaDriver::fn.glPixelStorei(GL_PACK_SKIP_IMAGES, pack_skip_images); OSMesaDriver::fn.glPixelStorei(GL_PACK_ALIGNMENT, pack_alignment); if (OffscreenContext::has_MESA_pack_invert) OSMesaDriver::fn.glPixelStorei(GL_PACK_INVERT_MESA, pack_invert); } } /*************************************************************************/ /*-----------------------------------------------------------------------*/ /*************************************************************************/ /*--- Base Class ---*/ GLboolean OffscreenContext::has_MESA_pack_invert = GL_FALSE; OffscreenContext::OffscreenContext(void *glhandle) : lib_handle(glhandle), userRowLength(0), yup(GL_TRUE), dst_buffer(0), host_buffer(NULL), buffer_width(0), buffer_height(0), buffer_bpp(0), srcformat(GL_NONE), dstformat(GL_NONE), destination_bpp(0), conversion(false), swapcomponents(false), error_check_enabled(GL_FALSE), type(GL_NONE), width(0), height(0) { } /*-----------------------------------------------------------------------*/ OffscreenContext::~OffscreenContext() { if (host_buffer) { free(host_buffer); host_buffer = NULL; } } /*-----------------------------------------------------------------------*/ void OffscreenContext::PixelStore(GLint pname, GLint value) { switch (pname) { case OSMESA_ROW_LENGTH: if (value >= 0) setUserRowLength(value); break; case OSMESA_Y_UP: setYup(value ? GL_TRUE : GL_FALSE); break; } } /*-----------------------------------------------------------------------*/ void OffscreenContext::GetColorBuffer(GLint *_width, GLint *_height, GLint *_format, memptr *_buffer) { *_width = width; *_height = height; *_format = dstformat; *_buffer = dst_buffer; } /*-----------------------------------------------------------------------*/ void OffscreenContext::GetDepthBuffer(GLint *_width, GLint *_height, GLint *_bytesPerValue, memptr *_buffer) { *_width = width; *_height = height; *_bytesPerValue = 0; /* * Can not return pointer in host memory; * if this is ever needed, we have to split it like glGetString() */ *_buffer = 0; } /*-----------------------------------------------------------------------*/ bool OffscreenContext::FormatHasAlpha(GLenum format) { switch (format) { case OSMESA_RGBA: /* case GL_RGBA: */ case OSMESA_BGRA: case GL_BGRA_EXT: case OSMESA_ARGB: case VDI_ARGB: case DIRECT_VDI_ARGB: return true; } return false; } /*-----------------------------------------------------------------------*/ void OffscreenContext::ResizeBuffer(GLsizei newBpp) { if (host_buffer == NULL || width != buffer_width || height != buffer_height || newBpp != buffer_bpp) { host_buffer = realloc(host_buffer, width * height * newBpp); buffer_width = width; buffer_height = height; buffer_bpp = newBpp; } } /*-----------------------------------------------------------------------*/ void OffscreenContext::ConvertContext() { if (!conversion) return; switch (bx_options.osmesa.channel_size) { case 16: ConvertContext16(); break; case 32: ConvertContext32(); break; case 8: default: ConvertContext8(); break; } } /*-----------------------------------------------------------------------*/ void OffscreenContext::ConvertContext8() { int x, y, srcpitch, dstpitch; switch (dstformat) { case OSMESA_RGB_565: /* * assumes srcformat also == OSMESA_RGB_565 */ if (host_buffer) { Uint16 *srcline, *srccol, color; memptr dstline, dstcol; srcline = (Uint16 *)host_buffer; srcpitch = width; dstline = dst_buffer; dstpitch = getUserRowLength() << 1; if (UpsideDown()) { dstline += (height - 1) * dstpitch; dstpitch = -dstpitch; } for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { color = *srccol++; WriteInt16(dstcol, color); dstcol += 2; } srcline += srcpitch; dstline += dstpitch; } } else { /* * without host_buffer; colorbuffer was already written to atari memory */ Uint16 *srcline, *srccol, color; srcline = (Uint16 *)Atari2HostAddr(dst_buffer); srcpitch = getUserRowLength(); for (y = 0; y < height; y++) { srccol = srcline; for (x = 0; x < width; x++) { color = SDL_SwapBE16(*srccol); *srccol++ = color; } srcline += srcpitch; } } break; /* * all others are byte formats, and we are only here * because we can't do glReadPixels() directly to atari memory * assumes srcformat == OSMESA_ARGB */ case OSMESA_RGB: case VDI_RGB: /* case GL_RGB: */ { memptr dstline, dstcol; Uint8 *srcline, *srccol; srcline = (Uint8 *)host_buffer; srcpitch = width * 4; dstline = dst_buffer; dstpitch = getUserRowLength() * 3; if (UpsideDown()) { dstline += (height - 1) * dstpitch; dstpitch = -dstpitch; } for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { WriteInt8(dstcol++, srccol[1]); WriteInt8(dstcol++, srccol[2]); WriteInt8(dstcol++, srccol[3]); srccol += 4; } srcline += srcpitch; dstline += dstpitch; } } break; case OSMESA_BGR: case GL_BGR: { memptr dstline, dstcol; Uint8 *srcline, *srccol; srcline = (Uint8 *)host_buffer; srcpitch = width * 4; dstline = dst_buffer; dstpitch = getUserRowLength() * 3; if (UpsideDown()) { dstline += (height - 1) * dstpitch; dstpitch = -dstpitch; } for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { WriteInt8(dstcol++, srccol[3]); WriteInt8(dstcol++, srccol[2]); WriteInt8(dstcol++, srccol[1]); srccol += 4; } srcline += srcpitch; dstline += dstpitch; } } break; case OSMESA_BGRA: case GL_BGRA_EXT: { memptr dstline, dstcol; Uint8 *srcline, *srccol; srcline = (Uint8 *)host_buffer; srcpitch = width * 4; dstline = dst_buffer; dstpitch = getUserRowLength() * 4; if (UpsideDown()) { dstline += (height - 1) * dstpitch; dstpitch = -dstpitch; } for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { WriteInt8(dstcol++, srccol[3]); WriteInt8(dstcol++, srccol[2]); WriteInt8(dstcol++, srccol[1]); WriteInt8(dstcol++, srccol[0]); srccol += 4; } srcline += srcpitch; dstline += dstpitch; } } break; case OSMESA_ARGB: case VDI_ARGB: case DIRECT_VDI_ARGB: #if NFOSMESA_NEED_BYTE_CONV { memptr dstline, dstcol; Uint8 *srcline, *srccol; srcline = (Uint8 *)host_buffer; srcpitch = width * 4; dstline = dst_buffer; dstpitch = getUserRowLength() * 4; if (UpsideDown()) { dstline += (height - 1) * dstpitch; dstpitch = -dstpitch; } for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { WriteInt8(dstcol++, srccol[0]); WriteInt8(dstcol++, srccol[1]); WriteInt8(dstcol++, srccol[2]); WriteInt8(dstcol++, srccol[3]); srccol += 4; } srcline += srcpitch; dstline += dstpitch; } } #else { Uint32 *dstline, *dstcol; Uint32 *srcline, *srccol; srcline = (Uint32 *)host_buffer; srcpitch = width; dstline = (Uint32 *) Atari2HostAddr(dst_buffer); dstpitch = getUserRowLength(); if (UpsideDown()) { dstline += (height - 1) * dstpitch; dstpitch = -dstpitch; } for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { *dstcol++ = *srccol++; } srcline += srcpitch; dstline += dstpitch; } } #endif break; } } /*-----------------------------------------------------------------------*/ /* * assumes srcformat == OSMESA_ARGB */ void OffscreenContext::ConvertContext16() { int x,y, r,g,b,a, srcpitch, dstpitch, color; Uint16 *srcline, *srccol; srcline = (Uint16 *) host_buffer; srcpitch = width * 4; switch(dstformat) { case OSMESA_RGB_565: { memptr dstline, dstcol; dstline = dst_buffer; dstpitch = getUserRowLength() << 1; for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { srccol++; /* Skip alpha */ r = ((*srccol++)>>11) & 31; g = ((*srccol++)>>10) & 63; b = ((*srccol++)>>11) & 31; color = (r<<11)|(g<<5)|b; WriteInt16(dstcol, color); dstcol += 2; } srcline += srcpitch; dstline += dstpitch; } } break; case OSMESA_RGB: case VDI_RGB: /* case GL_RGB: */ { memptr dstline, dstcol; dstline = dst_buffer; dstpitch = getUserRowLength() * 3; for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { srccol++; /* Skip alpha */ r = ((*srccol++)>>8) & 255; g = ((*srccol++)>>8) & 255; b = ((*srccol++)>>8) & 255; WriteInt8(dstcol++, r); WriteInt8(dstcol++, g); WriteInt8(dstcol++, b); } srcline += srcpitch; dstline += dstpitch; } } break; case OSMESA_BGR: case GL_BGR: { memptr dstline, dstcol; dstline = dst_buffer; dstpitch = getUserRowLength() * 3; for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { srccol++; /* Skip alpha */ r = ((*srccol++)>>8) & 255; g = ((*srccol++)>>8) & 255; b = ((*srccol++)>>8) & 255; WriteInt8(dstcol++, b); WriteInt8(dstcol++, g); WriteInt8(dstcol++, r); } srcline += srcpitch; dstline += dstpitch; } } break; case OSMESA_BGRA: case GL_BGRA_EXT: { memptr dstline, dstcol; dstline = dst_buffer; dstpitch = getUserRowLength() << 2; for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width;x ++) { a = ((*srccol++)>>8) & 255; r = ((*srccol++)>>8) & 255; g = ((*srccol++)>>8) & 255; b = ((*srccol++)>>8) & 255; color = (b<<24)|(g<<16)|(r<<8)|a; WriteInt32(dstcol, color); dstcol += 4; } srcline += srcpitch; dstline += dstpitch; } } break; case OSMESA_ARGB: case VDI_ARGB: case DIRECT_VDI_ARGB: { memptr dstline, dstcol; dstline = dst_buffer; dstpitch = getUserRowLength() << 2; for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { a = ((*srccol++)>>8) & 255; r = ((*srccol++)>>8) & 255; g = ((*srccol++)>>8) & 255; b = ((*srccol++)>>8) & 255; color = (a<<24)|(r<<16)|(g<<8)|b; WriteInt32(dstcol, color); dstcol += 4; } srcline += srcpitch; dstline += dstpitch; } } break; case OSMESA_RGBA: /* case GL_RGBA: */ { memptr dstline, dstcol; dstline = dst_buffer; dstpitch = getUserRowLength() << 2; for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { a = ((*srccol++)>>8) & 255; r = ((*srccol++)>>8) & 255; g = ((*srccol++)>>8) & 255; b = ((*srccol++)>>8) & 255; color = (r<<24)|(g<<16)|(b<<8)|a; WriteInt32(dstcol, color); dstcol += 4; } srcline += srcpitch; dstline += dstpitch; } } break; } } /*-----------------------------------------------------------------------*/ /* * assumes srcformat == OSMESA_ARGB */ void OffscreenContext::ConvertContext32() { #define FLOAT_TO_INT(source, value, maximum) \ { \ value = (int) (source * maximum ## .0); \ if (value>maximum) value=maximum; \ if (value<0) value=0; \ } int x,y, r,g,b,a, srcpitch, dstpitch, color; float *srcline, *srccol; srcline = (float *) host_buffer; srcpitch = width * 4; switch(dstformat) { case OSMESA_RGB_565: { memptr dstline, dstcol; dstline = dst_buffer; dstpitch = getUserRowLength() << 1; for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { srccol++; /* Skip alpha */ FLOAT_TO_INT(*srccol++, r, 31); FLOAT_TO_INT(*srccol++, g, 63); FLOAT_TO_INT(*srccol++, b, 31); color = (r<<11)|(g<<5)|b; WriteInt16(dstcol, color); dstcol += 2; } srcline += srcpitch; dstline += dstpitch; } } break; case OSMESA_RGB: case VDI_RGB: /* case GL_RGB: */ { memptr dstline, dstcol; dstline = dst_buffer; dstpitch = getUserRowLength() * 3; for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { srccol++; /* Skip alpha */ FLOAT_TO_INT(*srccol++, r, 255); FLOAT_TO_INT(*srccol++, g, 255); FLOAT_TO_INT(*srccol++, b, 255); WriteInt8(dstcol++, r); WriteInt8(dstcol++, g); WriteInt8(dstcol++, b); } srcline += srcpitch; dstline += dstpitch; } } break; case OSMESA_BGR: case GL_BGR: { memptr dstline, dstcol; dstline = dst_buffer; dstpitch = getUserRowLength() * 3; for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { srccol++; /* Skip alpha */ FLOAT_TO_INT(*srccol++, r, 255); FLOAT_TO_INT(*srccol++, g, 255); FLOAT_TO_INT(*srccol++, b, 255); WriteInt8(dstcol++, b); WriteInt8(dstcol++, g); WriteInt8(dstcol++, r); } srcline += srcpitch; dstline += dstpitch; } } break; case OSMESA_BGRA: case GL_BGRA_EXT: { memptr dstline, dstcol; dstline = dst_buffer; dstpitch = getUserRowLength() << 2; for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { FLOAT_TO_INT(*srccol++, a, 255); FLOAT_TO_INT(*srccol++, r, 255); FLOAT_TO_INT(*srccol++, g, 255); FLOAT_TO_INT(*srccol++, b, 255); color = (b<<24)|(g<<16)|(r<<8)|a; WriteInt32(dstcol, color); dstcol += 4; } srcline += srcpitch; dstline += dstpitch; } } break; case OSMESA_ARGB: case VDI_ARGB: case DIRECT_VDI_ARGB: { memptr dstline, dstcol; dstline = dst_buffer; dstpitch = getUserRowLength() << 2; for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width; x++) { FLOAT_TO_INT(*srccol++, a, 255); FLOAT_TO_INT(*srccol++, r, 255); FLOAT_TO_INT(*srccol++, g, 255); FLOAT_TO_INT(*srccol++, b, 255); color = (a<<24)|(r<<16)|(g<<8)|b; WriteInt32(dstcol, color); dstcol += 4; } srcline += srcpitch; dstline += dstpitch; } } break; case OSMESA_RGBA: /* case GL_RGBA: */ { memptr dstline, dstcol; dstline = dst_buffer; dstpitch = getUserRowLength() << 2; for (y = 0; y < height; y++) { srccol = srcline; dstcol = dstline; for (x = 0; x < width;x++) { FLOAT_TO_INT(*srccol++, a, 255); FLOAT_TO_INT(*srccol++, r, 255); FLOAT_TO_INT(*srccol++, g, 255); FLOAT_TO_INT(*srccol++, b, 255); color = (r<<24)|(g<<16)|(g<<8)|a; WriteInt32(dstcol, color); dstcol += 4; } srcline += srcpitch; dstline += dstpitch; } } break; } } /*************************************************************************/ /*-----------------------------------------------------------------------*/ /*************************************************************************/ /*--- Mesa Class ---*/ MesaContext::MesaContext(void *glhandle) : OffscreenContext(glhandle), ctx(0) { } /*-----------------------------------------------------------------------*/ MesaContext::~MesaContext() { if (ctx) { OSMesaDriver::fn.OSMesaDestroyContext(ctx); } } /*-----------------------------------------------------------------------*/ bool MesaContext::CreateContext(GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OffscreenContext *share_ctx) { MesaContext *mesa_share = (MesaContext *)share_ctx; OSMesaContext share = mesa_share ? mesa_share->ctx : NULL; dstformat = format; /* Select format */ srcformat = format; conversion = false; swapcomponents = false; destination_bpp = 0; switch (dstformat) { case OSMESA_COLOR_INDEX: /* case GL_COLOR_INDEX: */ dstformat = GL_COLOR_INDEX; destination_bpp = 1; break; case OSMESA_RGBA: /* case GL_RGBA: */ dstformat = GL_RGBA; destination_bpp = 4; break; case OSMESA_BGRA: case GL_BGRA_EXT: dstformat = GL_BGRA_EXT; destination_bpp = 4; break; case OSMESA_ARGB: case VDI_ARGB: case DIRECT_VDI_ARGB: dstformat = OSMESA_ARGB; destination_bpp = 4; break; case OSMESA_RGB: case VDI_RGB: /* case GL_RGB: */ dstformat = GL_RGB; destination_bpp = 3; break; case OSMESA_BGR: case GL_BGR: dstformat = GL_BGR; destination_bpp = 3; break; case OSMESA_RGB_565: destination_bpp = 2; #if NFOSMESA_NEED_INT_CONV /* TODO; without FULLMMU, we might get away with just setting GL_PACK_SWAP_BYTES */ conversion = true; #endif break; } if (bx_options.osmesa.channel_size > 8 && format != OSMESA_COLOR_INDEX && format != GL_NONE) { /* We are using libOSMesa[16,32] */ srcformat = OSMESA_ARGB; conversion = true; } D(bug("nfosmesa: format:0x%x -> 0x%x, conversion: %s", srcformat, dstformat, conversion ? "true" : "false")); D(bug("nfosmesa: depth=%d, stencil=%d, accum=%d", depthBits, stencilBits, accumBits)); if (GL_ISAVAILABLE(OSMesaCreateContextExt)) ctx = OSMesaDriver::fn.OSMesaCreateContextExt(srcformat, depthBits, stencilBits, accumBits, share); else ctx = OSMesaDriver::fn.OSMesaCreateContext(srcformat, share); return ctx != NULL; } /*-----------------------------------------------------------------------*/ bool MesaContext::TestContext() { GLubyte pixels[256]; if (!GL_ISAVAILABLE(OSMesaGetProcAddress) || !GL_ISAVAILABLE(OSMesaMakeCurrent) || (!GL_ISAVAILABLE(OSMesaCreateContext) && !GL_ISAVAILABLE(OSMesaCreateContextExt)) || !GL_ISAVAILABLE(OSMesaDestroyContext)) { D(bug("missing OSMesa functions")); return false; } if (!CreateContext(GL_RGB, 0, 0, 0, 0)) { D(bug("can not create context")); return false; } if (!OSMesaDriver::fn.OSMesaMakeCurrent(ctx, pixels, GL_UNSIGNED_BYTE, 1, 1)) return false; const GLubyte *extensions = OSMesaDriver::fn.glGetString(GL_EXTENSIONS); OffscreenContext::has_MESA_pack_invert = gl_HasExtension("GL_MESA_pack_invert", extensions); #if DEBUG { const GLubyte *str; str = OSMesaDriver::fn.glGetString(GL_VERSION); D(bug("GL Version: %s", str)); str = OSMesaDriver::fn.glGetString(GL_VENDOR); D(bug("GL Vendor: %s", str)); str = OSMesaDriver::fn.glGetString(GL_RENDERER); D(bug("GL Renderer: %s", str)); str = OSMesaDriver::fn.glGetString(GL_EXTENSIONS); D(bug("GL Extensions: %s", str)); str = OSMesaDriver::fn.glGetString(GL_SHADING_LANGUAGE_VERSION); if (str != NULL) D(bug("GL Shading Language : %s", str)); } #endif OSMesaDriver::fn.OSMesaMakeCurrent(NULL, 0, 0, 0, 0); OSMesaDriver::fn.OSMesaDestroyContext(ctx); ctx = 0; return true; } /*-----------------------------------------------------------------------*/ GLboolean MesaContext::MakeCurrent(memptr _buffer, GLenum _type, GLsizei _width, GLsizei _height) { dst_buffer = _buffer; type = _type; width = _width; height = _height; if (bx_options.osmesa.channel_size > 8) { ResizeBuffer(4 * (bx_options.osmesa.channel_size>>3)); switch(bx_options.osmesa.channel_size) { case 16: type = GL_UNSIGNED_SHORT; break; case 32: type = GL_FLOAT; break; } } else { if (dstformat == OSMESA_RGB_565) { type = GL_UNSIGNED_SHORT_5_6_5; #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV conversion = true; #endif if (conversion) ResizeBuffer(2); } else { type = GL_UNSIGNED_BYTE; #if NFOSMESA_NEED_BYTE_CONV if (dstformat != GL_NONE) conversion = true; #endif if (conversion) ResizeBuffer(4); } } return MakeCurrent(); } /*-----------------------------------------------------------------------*/ GLboolean MesaContext::MakeCurrent() { void *draw_buffer; draw_buffer = Atari2HostAddr(dst_buffer); if (host_buffer) draw_buffer = host_buffer; return OSMesaDriver::fn.OSMesaMakeCurrent(ctx, draw_buffer, type, width, height); } /*-----------------------------------------------------------------------*/ GLboolean MesaContext::ClearCurrent() { return OSMesaDriver::fn.OSMesaMakeCurrent(NULL, NULL, 0, 0, 0); } /*-----------------------------------------------------------------------*/ void MesaContext::Postprocess(const char *filter, GLuint enable_value) { if (GL_ISAVAILABLE(OSMesaPostprocess)) OSMesaDriver::fn.OSMesaPostprocess(ctx, filter, enable_value); else bug("nfosmesa: OSMesaPostprocess: no such function"); } /*-----------------------------------------------------------------------*/ bool MesaContext::GetIntegerv(GLint pname, GLint *value) { if (GL_ISAVAILABLE(OSMesaGetIntegerv)) OSMesaDriver::fn.OSMesaGetIntegerv(pname, value); return true; } /*-----------------------------------------------------------------------*/ void MesaContext::PixelStore(GLint pname, GLint value) { OffscreenContext::PixelStore(pname, value); if (GL_ISAVAILABLE(OSMesaPixelStore)) OSMesaDriver::fn.OSMesaPixelStore(pname, value); } /*-----------------------------------------------------------------------*/ void MesaContext::ColorClamp(GLboolean enable) { if (GL_ISAVAILABLE(OSMesaColorClamp)) OSMesaDriver::fn.OSMesaColorClamp(enable); else bug("nfosmesa: OSMesaColorClamp: no such function"); } /*************************************************************************/ /*-----------------------------------------------------------------------*/ /*************************************************************************/ /*--- Base Class for using OpenGL render buffers ---*/ OpenglContext::OpenglContext(void *glhandle) : OffscreenContext(glhandle), render_width(0), render_height(0), depthBits(0), stencilBits(0), accumBits(0), framebuffer(0), colorbuffer(0), colortex(0), useTeximage(false), texTarget(GL_TEXTURE_2D), depthbuffer(0), depthformat(GL_NONE), stencilbuffer(0), has_GL_EXT_packed_depth_stencil(GL_FALSE), has_GL_NV_packed_depth_stencil(GL_FALSE), has_GL_EXT_texture_object(GL_FALSE), has_GL_XX_texture_rectangle(GL_FALSE), has_GL_ARB_texture_non_power_of_two(GL_FALSE) { } /*-----------------------------------------------------------------------*/ OpenglContext::~OpenglContext() { DestroyContext(); } /*-----------------------------------------------------------------------*/ void OpenglContext::DestroyContext() { /* * Delete resources */ if (colorbuffer) { OSMesaDriver::fn.glDeleteRenderbuffersEXT(1, &colorbuffer); D(OSMesaDriver::PrintErrors("glDeleteRenderbuffersEXT(colorbuffer)")); colorbuffer = 0; } if (colortex) { OSMesaDriver::fn.glDeleteTexturesEXT(1, &colortex); D(OSMesaDriver::PrintErrors("glDeleteTexturesEXT(colortex)")); colortex = 0; } if (stencilbuffer && stencilbuffer != depthbuffer) { OSMesaDriver::fn.glDeleteRenderbuffersEXT(1, &stencilbuffer); D(OSMesaDriver::PrintErrors("glDeleteRenderbuffersEXT(stencilbuffer)")); } stencilbuffer = 0; if (depthbuffer) { OSMesaDriver::fn.glDeleteRenderbuffersEXT(1, &depthbuffer); D(OSMesaDriver::PrintErrors("glDeleteRenderbuffersEXT(depthbuffer)")); depthbuffer = 0; } /* * Bind 0, which means render to back buffer, as a result, fb is unbound */ if (framebuffer) { OSMesaDriver::fn.glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); OSMesaDriver::fn.glDeleteFramebuffersEXT(1, &framebuffer); D(OSMesaDriver::PrintErrors("glDeleteFramebuffersEXT(framebuffer)")); framebuffer = 0; } } /*-----------------------------------------------------------------------*/ bool OpenglContext::CreateContext(GLenum format, GLint _depthBits, GLint _stencilBits, GLint _accumBits, OffscreenContext * /* sharelist */) { const GLubyte *extensions; extensions = OSMesaDriver::fn.glGetString(GL_EXTENSIONS); if (!gl_HasExtension("GL_EXT_framebuffer_object", extensions) || !GL_ISAVAILABLE(glGenFramebuffersEXT) || !GL_ISAVAILABLE(glBindFramebufferEXT) || !GL_ISAVAILABLE(glGenRenderbuffersEXT) || !GL_ISAVAILABLE(glBindRenderbufferEXT) || !GL_ISAVAILABLE(glDeleteRenderbuffersEXT) || !GL_ISAVAILABLE(glDeleteFramebuffersEXT) || !GL_ISAVAILABLE(glFramebufferRenderbufferEXT) || !GL_ISAVAILABLE(glRenderbufferStorageEXT) || !GL_ISAVAILABLE(glCheckFramebufferStatusEXT)) { D(bug("no GL_EXT_framebuffer_object extension")); return false; } has_GL_EXT_packed_depth_stencil = gl_HasExtension("GL_EXT_packed_depth_stencil", extensions); has_GL_NV_packed_depth_stencil = gl_HasExtension("GL_NV_packed_depth_stencil", extensions); has_GL_EXT_texture_object = gl_HasExtension("GL_EXT_texture_object", extensions); has_GL_XX_texture_rectangle = gl_HasExtension("GL_ARB_texture_rectangle", extensions) || gl_HasExtension("GL_EXT_texture_rectangle", extensions) || gl_HasExtension("GL_NV_texture_rectangle", extensions); has_GL_ARB_texture_non_power_of_two = gl_HasExtension("GL_ARB_texture_non_power_of_two", extensions); dstformat = format; depthBits = _depthBits; stencilBits = _stencilBits; accumBits = _accumBits; /* Select format */ srcformat = format; conversion = false; swapcomponents = false; destination_bpp = 0; switch (dstformat) { case OSMESA_COLOR_INDEX: /* case GL_COLOR_INDEX: */ dstformat = GL_COLOR_INDEX; destination_bpp = 1; break; case OSMESA_RGBA: /* case GL_RGBA: */ dstformat = GL_RGBA; destination_bpp = 4; break; case OSMESA_BGRA: case GL_BGRA_EXT: dstformat = GL_BGRA_EXT; destination_bpp = 4; break; case OSMESA_ARGB: case VDI_ARGB: case DIRECT_VDI_ARGB: destination_bpp = 4; /* GL has no GL_ARGB format */ dstformat = GL_BGRA_EXT; swapcomponents = true; break; case OSMESA_RGB: case VDI_RGB: /* case GL_RGB: */ dstformat = GL_RGB; destination_bpp = 3; break; case OSMESA_BGR: case GL_BGR: dstformat = GL_BGR; destination_bpp = 3; break; case OSMESA_RGB_565: destination_bpp = 2; #if NFOSMESA_NEED_INT_CONV /* TODO; without FULLMMU, we might get away with just setting GL_PACK_SWAP_BYTES */ conversion = true; #endif break; } #if NFOSMESA_NEED_BYTE_CONV conversion = true; #endif /* * the FBO can't be created until we know the dimensions, * which we receive through OSMesaMakeCurrent() */ return true; } /*-----------------------------------------------------------------------*/ void OpenglContext::setYup(GLboolean enable) { OffscreenContext::setYup(enable); /* * glReadPixels() always returns pixel data upside down, * and doing glReadPixels() a single row at a time to correct that * is much slower than doing a single read into a temporary buffer * and doing the conversion ourselves */ if (!enable && !OffscreenContext::has_MESA_pack_invert) { conversion = true; } createBuffers(); } /*-----------------------------------------------------------------------*/ GLboolean OpenglContext::createBuffers() { GLenum status; bool recreate = false; useTeximage = false; texTarget = GL_TEXTURE_2D; depthformat = GL_NONE; /* * create a framebuffer object */ if (framebuffer == 0) { OSMesaDriver::fn.glGenFramebuffersEXT(1, &framebuffer); D(OSMesaDriver::PrintErrors("glGenFramebufferEXT")); if (framebuffer == 0) return GL_FALSE; } OSMesaDriver::fn.glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framebuffer); D(OSMesaDriver::PrintErrors("glBindFramebufferEXT(framebuffer)")); /* * if storage has already been assigned, * have to recreate render buffers */ if (width != render_width || height != render_height) { if (colorbuffer) { OSMesaDriver::fn.glDeleteRenderbuffersEXT(1, &colorbuffer); D(OSMesaDriver::PrintErrors("glDeleteRenderbuffersEXT(colorbuffer)")); colorbuffer = 0; } if (colortex) { OSMesaDriver::fn.glDeleteTexturesEXT(1, &colortex); D(OSMesaDriver::PrintErrors("glDeleteTexturesEXT(colortex)")); colortex = 0; } if (stencilbuffer && stencilbuffer != depthbuffer) { OSMesaDriver::fn.glDeleteRenderbuffersEXT(1, &stencilbuffer); D(OSMesaDriver::PrintErrors("glDeleteRenderbuffersEXT(stencilbuffer)")); } stencilbuffer = 0; if (depthbuffer) { OSMesaDriver::fn.glDeleteRenderbuffersEXT(1, &depthbuffer); D(OSMesaDriver::PrintErrors("glDeleteRenderbuffersEXT(depthbuffer)")); depthbuffer = 0; } render_width = width; render_height = height; recreate = true; } /* * Create a color buffer */ if (dstformat != GL_NONE) { if (colorbuffer == 0) { OSMesaDriver::fn.glGenRenderbuffersEXT(1, &colorbuffer); D(OSMesaDriver::PrintErrors("glGenRenderbuffersEXT(colorbuffer)")); if (colorbuffer == 0) return GL_FALSE; } if (colortex == 0 && has_GL_EXT_texture_object) { OSMesaDriver::fn.glGenTexturesEXT(1, &colortex); D(OSMesaDriver::PrintErrors("glGenTexturesEXT(colortex)")); if (colortex == 0) return GL_FALSE; } } /* * Attach color buffer to FBO */ GLint tex_width = render_width; GLint tex_height = render_height; if (dstformat != GL_NONE && recreate) { if (false && colortex) { useTeximage = true; if (has_GL_ARB_texture_non_power_of_two) { texTarget = GL_TEXTURE_2D; } else if (has_GL_XX_texture_rectangle) { texTarget = GL_TEXTURE_RECTANGLE_ARB; } else { GLint tex_dim = MAX(tex_width, tex_height); texTarget = GL_TEXTURE_2D; tex_width = 64; while (tex_width < tex_dim) tex_width <<= 1; tex_height = tex_width; } OSMesaDriver::fn.glBindTexture(texTarget, colortex); D(OSMesaDriver::PrintErrors("glBindTexture(colortex)")); OSMesaDriver::fn.glTexParameteri(texTarget, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); OSMesaDriver::fn.glTexParameteri(texTarget, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); OSMesaDriver::fn.glTexParameteri(texTarget, GL_TEXTURE_MIN_FILTER, GL_NEAREST); OSMesaDriver::fn.glTexParameteri(texTarget, GL_TEXTURE_MAG_FILTER, GL_NEAREST); OSMesaDriver::fn.glTexImage2D(texTarget, 0, GL_RGBA8, tex_width, tex_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); D(OSMesaDriver::PrintErrors("glTexImage2D")); OSMesaDriver::fn.glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, texTarget, colortex, 0); D(OSMesaDriver::PrintErrors("glFramebufferTexture2DEXT(colortex)")); } else { OSMesaDriver::fn.glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, colorbuffer); D(OSMesaDriver::PrintErrors("glBindRenderbufferEXT(colorbuffer)")); OSMesaDriver::fn.glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGBA8, tex_width, tex_height); D(OSMesaDriver::PrintErrors("glRenderbufferStorageEXT(colorbuffer)")); OSMesaDriver::fn.glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, colorbuffer); D(OSMesaDriver::PrintErrors("glFramebufferRenderbufferEXT(colorbuffer)")); } } /* * Create a depth/stencil buffer */ if (depthBits > 0) { if (depthbuffer == 0) { OSMesaDriver::fn.glGenRenderbuffersEXT(1, &depthbuffer); D(OSMesaDriver::PrintErrors("glGenRenderbuffersEXT(depthbuffer)")); if (depthbuffer == 0) return GL_FALSE; } if (stencilBits > 0 && has_GL_EXT_packed_depth_stencil) { if (stencilbuffer == 0) stencilbuffer = depthbuffer; depthformat = GL_DEPTH24_STENCIL8_EXT; } else if (stencilBits > 0 && has_GL_NV_packed_depth_stencil) { if (stencilbuffer == 0) stencilbuffer = depthbuffer; depthformat = GL_UNSIGNED_INT_24_8_NV; } else { depthformat = GL_DEPTH_COMPONENT; } } if (stencilBits > 0) { if (stencilbuffer == 0) { OSMesaDriver::fn.glGenRenderbuffersEXT(1, &stencilbuffer); D(OSMesaDriver::PrintErrors("glGenRenderbuffersEXT(stencilbuffer)")); if (stencilbuffer == 0) return GL_FALSE; } } /* * Attach depth & stencil buffer to FBO */ if (recreate) { if (depthbuffer) { OSMesaDriver::fn.glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthbuffer); D(OSMesaDriver::PrintErrors("glBindRenderbufferEXT(depthbuffer)")); OSMesaDriver::fn.glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, depthformat, tex_width, tex_height); D(OSMesaDriver::PrintErrors("glRenderbufferStorageEXT(depthbuffer)")); OSMesaDriver::fn.glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthbuffer); D(OSMesaDriver::PrintErrors("glFramebufferRenderbufferEXT(depthbuffer)")); } if (stencilbuffer) { OSMesaDriver::fn.glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, stencilbuffer); D(OSMesaDriver::PrintErrors("glBindRenderbufferEXT(stencilbuffer)")); if (stencilbuffer != depthbuffer) { OSMesaDriver::fn.glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_STENCIL_INDEX, tex_width, tex_height); D(OSMesaDriver::PrintErrors("glRenderbufferStorageEXT(stencilbuffer)")); } OSMesaDriver::fn.glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, stencilbuffer); D(OSMesaDriver::PrintErrors("glFramebufferRenderbufferEXT(stencilbuffer)")); } OSMesaDriver::fn.glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0); D(OSMesaDriver::PrintErrors("glBindRenderbufferEXT(0)")); } /* FIXME: accum buffers are not directly supported */ if (recreate) { status = OSMesaDriver::fn.glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); D(OSMesaDriver::PrintErrors("glCheckFramebufferStatusEXT")); switch (status) { case GL_FRAMEBUFFER_COMPLETE_EXT: D(bug("nfosmesa: framebuffer complete")); break; case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT: D(bug("nfosmesa: incomplete attachment")); break; case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT: D(bug("nfosmesa: incomplete missing attachment")); break; case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT: D(bug("nfosmesa: incomplete dimensions (%dx%d, depth %d, stencil %d)", render_width, render_height, depthBits, stencilBits)); break; case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT: D(bug("nfosmesa: incomplete formats")); break; case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT: D(bug("nfosmesa: incomplete draw buffer")); break; case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT: D(bug("nfosmesa: incomplete read buffer")); break; case GL_FRAMEBUFFER_UNSUPPORTED_EXT: D(bug("nfosmesa: unsupported format")); break; } if (status != GL_FRAMEBUFFER_COMPLETE_EXT) return GL_FALSE; } if (conversion) { if (swapcomponents && dstformat == GL_BGRA_EXT) { /* * set it back to what was actually requested */ dstformat = OSMESA_ARGB; swapcomponents = false; } ResizeBuffer(4); } return GL_TRUE; } /*-----------------------------------------------------------------------*/ GLboolean OpenglContext::MakeBufferCurrent(bool create_buffer) { if (create_buffer) { if (!createBuffers()) return GL_FALSE; } OSMesaDriver::fn.glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framebuffer); D(OSMesaDriver::PrintErrors("glBindFramebufferEXT")); OSMesaDriver::fn.glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, colorbuffer); D(OSMesaDriver::PrintErrors("glBindRenderbufferEXT(colorbuffer)")); return GL_TRUE; } /*-----------------------------------------------------------------------*/ GLboolean OpenglContext::ClearCurrent() { OSMesaDriver::fn.glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0); D(OSMesaDriver::PrintErrors("glBindRenderbufferEXT(0)")); OSMesaDriver::fn.glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); D(OSMesaDriver::PrintErrors("glBindFramebufferEXT(0)")); return GL_TRUE; } /*-----------------------------------------------------------------------*/ bool OpenglContext::GetIntegerv(GLint pname, GLint *value) { GLuint buffer; switch (pname) { case OSMESA_WIDTH: buffer = colorbuffer; if (buffer == 0) buffer = depthbuffer; OSMesaDriver::fn.glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT, GL_RENDERBUFFER_WIDTH, value); break; case OSMESA_HEIGHT: buffer = colorbuffer; if (buffer == 0) buffer = depthbuffer; OSMesaDriver::fn.glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT, GL_RENDERBUFFER_HEIGHT, value); break; case OSMESA_FORMAT: if (swapcomponents && dstformat == GL_BGRA_EXT) *value = OSMESA_ARGB; else *value = dstformat; break; case OSMESA_TYPE: *value = type; break; case OSMESA_ROW_LENGTH: *value = userRowLength; break; case OSMESA_Y_UP: *value = getYup(); break; case OSMESA_MAX_WIDTH: case OSMESA_MAX_HEIGHT: OSMesaDriver::fn.glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE, value); break; default: return false; } return true; } /*-----------------------------------------------------------------------*/ void OpenglContext::ConvertContext() { GLboolean texEnabled = GL_FALSE; PixelPackAttributes pack; if (useTeximage) { texEnabled = OSMesaDriver::fn.glIsEnabled(texTarget); if (texEnabled) OSMesaDriver::fn.glDisable(texTarget); } #if DEBUG { static int beenhere; if (beenhere++ < 10) { D(bug("OpenglContext::ConvertContext: hostbuffer=%p yup=%d dstformat=%x conversion=%d width=%d height=%d", host_buffer, getYup(), dstformat, conversion, render_width, render_height)); } } #endif if (host_buffer) { if (dstformat == OSMESA_RGB_565) { /* the conversion routines want OSMESA_RGB565 */ GLenum dsttype = GL_UNSIGNED_SHORT_5_6_5; OSMesaDriver::fn.glReadPixels(0, 0, width, height, GL_RGB, dsttype, host_buffer); } else { GLenum dsttype = SDL_BYTEORDER == SDL_LIL_ENDIAN ? GL_UNSIGNED_INT_8_8_8_8 : GL_UNSIGNED_INT_8_8_8_8_REV; /* the conversion routines want GL_ARGB */ OSMesaDriver::fn.glReadPixels(0, 0, width, height, GL_BGRA_EXT, dsttype, host_buffer); } D(OSMesaDriver::PrintErrors("glReadPixels")); OffscreenContext::ConvertContext(); } else { OSMesaDriver::fn.glPixelStorei(GL_PACK_ROW_LENGTH, getUserRowLength()); D(OSMesaDriver::PrintErrors("glPixelStorei(GL_PACK_ROW_LENGTH)")); if (swapcomponents) { GLenum dsttype = SDL_BYTEORDER == SDL_LIL_ENDIAN ? GL_UNSIGNED_INT_8_8_8_8 : GL_UNSIGNED_INT_8_8_8_8_REV; if (getYup()) { OSMesaDriver::fn.glReadPixels(0, 0, width, height, dstformat, dsttype, Atari2HostAddr(dst_buffer)); } else if (OffscreenContext::has_MESA_pack_invert) { OSMesaDriver::fn.glPixelStorei(GL_PACK_INVERT_MESA, GL_TRUE); OSMesaDriver::fn.glReadPixels(0, 0, width, height, dstformat, dsttype, Atari2HostAddr(dst_buffer)); } else { /* just in case; we should not be here */ char *ptr = (char *)Atari2HostAddr(dst_buffer); GLint pitch = getUserRowLength() * destination_bpp; for (GLsizei y = height; --y >= 0; ) { OSMesaDriver::fn.glReadPixels(0, y, width, 1, dstformat, dsttype, ptr); ptr += pitch; } } } else if (dstformat == OSMESA_RGB_565) { GLenum dsttype = SDL_BYTEORDER == SDL_LIL_ENDIAN ? GL_UNSIGNED_SHORT_5_6_5 : GL_UNSIGNED_SHORT_5_6_5_REV; if (getYup()) { OSMesaDriver::fn.glReadPixels(0, 0, width, height, GL_RGB, dsttype, Atari2HostAddr(dst_buffer)); } else if (OffscreenContext::has_MESA_pack_invert) { OSMesaDriver::fn.glPixelStorei(GL_PACK_INVERT_MESA, GL_TRUE); OSMesaDriver::fn.glReadPixels(0, 0, width, height, GL_RGB, dsttype, Atari2HostAddr(dst_buffer)); } else { /* just in case; we should not be here */ char *ptr = (char *)Atari2HostAddr(dst_buffer); GLint pitch = getUserRowLength() * destination_bpp; for (GLsizei y = height; --y >= 0; ) { OSMesaDriver::fn.glReadPixels(0, y, width, 1, GL_RGB, dsttype, ptr); ptr += pitch; } } } else { if (getYup()) { OSMesaDriver::fn.glReadPixels(0, 0, width, height, dstformat, type, Atari2HostAddr(dst_buffer)); } else if (OffscreenContext::has_MESA_pack_invert) { OSMesaDriver::fn.glPixelStorei(GL_PACK_INVERT_MESA, GL_TRUE); OSMesaDriver::fn.glReadPixels(0, 0, width, height, dstformat, type, Atari2HostAddr(dst_buffer)); } else { /* just in case; we should not be here */ char *ptr = (char *)Atari2HostAddr(dst_buffer); GLint pitch = getUserRowLength() * destination_bpp; for (GLsizei y = height; --y >= 0; ) { OSMesaDriver::fn.glReadPixels(0, y, width, 1, dstformat, type, ptr); ptr += pitch; } } } D(OSMesaDriver::PrintErrors("glReadPixels")); } if (texEnabled) OSMesaDriver::fn.glEnable(texTarget); } /*-----------------------------------------------------------------------*/ void OpenglContext::ColorClamp(GLboolean enable) { GLenum clamp = enable ? GL_TRUE : GL_FIXED_ONLY; if (GL_ISAVAILABLE(glClampColor)) OSMesaDriver::fn.glClampColor(GL_CLAMP_FRAGMENT_COLOR, clamp); else if (GL_ISAVAILABLE(glClampColorARB)) OSMesaDriver::fn.glClampColorARB(GL_CLAMP_FRAGMENT_COLOR, clamp); else bug("nfosmesa: OSMesaColorClamp: no such function"); } /*************************************************************************/ /*-----------------------------------------------------------------------*/ /*************************************************************************/ /* X11 */ #if defined(SDL_VIDEO_DRIVER_X11) && defined(HAVE_X11_XLIB_H) Display *X11OpenglContext::dpy; Window X11OpenglContext::sdlwindow; int X11OpenglContext::screen; XVisualInfo* (*X11OpenglContext::pglXChooseVisual)(Display *dpy, int, int *); GLXContext (*X11OpenglContext::pglXCreateContext)(Display *, XVisualInfo *, GLXContext, int); int (*X11OpenglContext::pglXMakeCurrent)(Display *, GLXDrawable, GLXContext); GLXContext (*X11OpenglContext::pglXGetCurrentContext)(void); void (*X11OpenglContext::pglXDestroyContext)(Display *, GLXContext); const char *(*X11OpenglContext::pglXQueryServerString)(Display *, int, int); const char *(*X11OpenglContext::pglXGetClientString)(Display *, int); const char *(*X11OpenglContext::pglXQueryExtensionsString)(Display *, int); GLXContext (*X11OpenglContext::pglXCreateContextAttribsARB) (Display *dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list); GLXFBConfig * (*X11OpenglContext::pglXChooseFBConfig) (Display *dpy, int screen, const int *attrib_list, int *nelements); Bool (*X11OpenglContext::pglXMakeContextCurrent) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); GLXPbuffer (*X11OpenglContext::pglXCreatePbuffer) (Display *dpy, GLXFBConfig config, const int *attrib_list); void (*X11OpenglContext::pglXDestroyPbuffer) (Display *dpy, GLXPbuffer pbuf); int (*X11OpenglContext::pXFree)(void *); /*-----------------------------------------------------------------------*/ X11OpenglContext::X11OpenglContext(void *glhandle) : OpenglContext(glhandle), ctx(NULL) { InitPointers(lib_handle); } /*-----------------------------------------------------------------------*/ X11OpenglContext::~X11OpenglContext() { dispose(); } /*-----------------------------------------------------------------------*/ void X11OpenglContext::InitPointers(void *lib_handle) { SDL_SysWMinfo info; SDL_VERSION(&info.version); if ( #if SDL_VERSION_ATLEAST(2, 0, 0) (host && host->video && SDL_GetWindowWMInfo(host->video->Window(), &info) > 0) #else SDL_GetWMInfo(&info) > 0 #endif && info.subsystem == SDL_SYSWM_X11) { dpy = info.info.x11.display; sdlwindow = info.info.x11.window; screen = DefaultScreen(dpy); pglXChooseVisual = (XVisualInfo *(*)(Display *, int, int *))SDL_LoadFunction(lib_handle, "glXChooseVisual"); pglXCreateContext = (GLXContext (*)(Display *, XVisualInfo *, GLXContext, int))SDL_LoadFunction(lib_handle, "glXCreateContext"); pglXMakeCurrent = (int (*)(Display *, GLXDrawable, GLXContext))SDL_LoadFunction(lib_handle, "glXMakeCurrent"); pglXGetCurrentContext = (GLXContext (*)(void))SDL_LoadFunction(lib_handle, "glXGetCurrentContext"); pglXDestroyContext = (void (*)(Display *, GLXContext)) SDL_LoadFunction(lib_handle, "glXDestroyContext"); pglXQueryServerString = (const char *(*)(Display *, int, int))SDL_LoadFunction(lib_handle, "glXQueryServerString"); pglXGetClientString = (const char *(*)(Display *, int))SDL_LoadFunction(lib_handle, "glXGetClientString"); pglXQueryExtensionsString = (const char *(*)(Display *, int))SDL_LoadFunction(lib_handle, "glXQueryExtensionsString"); pglXCreateContextAttribsARB = (GLXContext (*) (Display *, GLXFBConfig, GLXContext, Bool, const int *)) SDL_LoadFunction(lib_handle, "glXCreateContextAttribsARB"); pglXChooseFBConfig = (GLXFBConfig *(*) (Display *, int, const int *, int *)) SDL_LoadFunction(lib_handle, "glXChooseFBConfig"); pglXMakeContextCurrent = (Bool (*) (Display *, GLXDrawable draw, GLXDrawable read, GLXContext ctx)) SDL_LoadFunction(lib_handle, "glXMakeContextCurrent"); pglXCreatePbuffer = (GLXPbuffer (*) (Display *, GLXFBConfig, const int *)) SDL_LoadFunction(lib_handle, "glXCreatePbuffer"); pglXDestroyPbuffer = (void (*) (Display *, GLXPbuffer)) SDL_LoadFunction(lib_handle, "glXDestroyPbuffer"); /* * look up dynamically too, because SDL loads X11 also dynamically, * and the appplication is not neccessarily linked to X11 */ pXFree = (int (*)(void *))SDL_LoadFunction(lib_handle, "XFree"); } } /*-----------------------------------------------------------------------*/ void X11OpenglContext::dispose() { OpenglContext::DestroyContext(); if (ctx) { pglXDestroyContext(dpy, ctx); ctx = 0; } if (pbuffer) { pglXDestroyPbuffer(dpy, pbuffer); pbuffer = None; } } /*-----------------------------------------------------------------------*/ bool X11OpenglContext::CreateContext(GLenum format, GLint _depthBits, GLint _stencilBits, GLint _accumBits, OffscreenContext *share_ctx) { int i; X11OpenglContext *opengl_share = (X11OpenglContext *)share_ctx; GLXFBConfig *fbConfigs; GLXFBConfig config; int num_configs = 0; int attributeList[40]; int context_attribs[] = { None }; int pbuffer_attribs[] = { GLX_PBUFFER_WIDTH, 32, GLX_PBUFFER_HEIGHT, 32, None }; i = 0; attributeList[i++] = GLX_DRAWABLE_TYPE; attributeList[i++] = GLX_PBUFFER_BIT; attributeList[i++] = GLX_DOUBLEBUFFER; attributeList[i++] = False; if (format == GL_COLOR_INDEX) { attributeList[i++] = GLX_BUFFER_SIZE; attributeList[i++] = 8; attributeList[i++] = GLX_RENDER_TYPE; attributeList[i++] = GLX_COLOR_INDEX_BIT; } else { attributeList[i++] = GLX_RENDER_TYPE; attributeList[i++] = GLX_RGBA_BIT; attributeList[i++] = GLX_RED_SIZE; attributeList[i++] = 8; attributeList[i++] = GLX_GREEN_SIZE; attributeList[i++] = 8; attributeList[i++] = GLX_BLUE_SIZE; attributeList[i++] = 8; if (FormatHasAlpha(format)) { attributeList[i++] = GLX_ALPHA_SIZE; attributeList[i++] = 8; } } if (_depthBits > 0) { attributeList[i++] = GLX_DEPTH_SIZE; attributeList[i++] = _depthBits; } if (_stencilBits > 0) { attributeList[i++] = GLX_STENCIL_SIZE; attributeList[i++] = _stencilBits; } if (_accumBits > 0) { attributeList[i++] = GLX_ACCUM_RED_SIZE; attributeList[i++] = 8; attributeList[i++] = GLX_ACCUM_GREEN_SIZE; attributeList[i++] = 8; attributeList[i++] = GLX_ACCUM_BLUE_SIZE; attributeList[i++] = 8; if (FormatHasAlpha(format)) { attributeList[i++] = GLX_ACCUM_ALPHA_SIZE; attributeList[i++] = 8; } } attributeList[i] = None; fbConfigs = pglXChooseFBConfig(dpy, screen, attributeList, &num_configs); if (fbConfigs == NULL || num_configs == 0) { D(bug("No suitable visual")); pXFree(fbConfigs); return false; } config = fbConfigs[0]; ctx = pglXCreateContextAttribsARB(dpy, config, opengl_share ? opengl_share->ctx : NULL, True, context_attribs); pbuffer = pglXCreatePbuffer(dpy, config, pbuffer_attribs); pXFree(fbConfigs); if (!ctx || !pbuffer) return false; if (!pglXMakeContextCurrent(dpy, pbuffer, pbuffer, ctx)) return false; if (!OpenglContext::CreateContext(format, _depthBits, _stencilBits, _accumBits, share_ctx)) return false; return true; } /*-----------------------------------------------------------------------*/ bool X11OpenglContext::TestContext() { if (!dpy) { D(bug("TestContext:: not running on X11")); return false; } if (pglXChooseVisual == 0 || pglXCreateContext == 0 || pglXMakeCurrent == 0 || pglXDestroyContext == 0 || pglXCreateContextAttribsARB == 0 || pglXChooseFBConfig == 0 || pglXCreatePbuffer == 0 || pglXMakeContextCurrent == 0 || pglXDestroyPbuffer == 0 || pXFree == 0) { D(bug("missing glX functions")); return false; } /* * we need a context to get usable values from glGetString() */ if (!CreateContext(GL_RGB, 0, 0, 0, NULL)) { D(bug("can not create context")); dispose(); return false; } const GLubyte *extensions = OSMesaDriver::fn.glGetString(GL_EXTENSIONS); OffscreenContext::has_MESA_pack_invert = gl_HasExtension("GL_MESA_pack_invert", extensions); #if DEBUG { const GLubyte *str; str = OSMesaDriver::fn.glGetString(GL_VERSION); D(bug("GL Version: %s", str)); str = OSMesaDriver::fn.glGetString(GL_VENDOR); D(bug("GL Vendor: %s", str)); str = OSMesaDriver::fn.glGetString(GL_RENDERER); D(bug("GL Renderer: %s", str)); str = OSMesaDriver::fn.glGetString(GL_EXTENSIONS); D(bug("GL Extensions: %s", str)); str = OSMesaDriver::fn.glGetString(GL_SHADING_LANGUAGE_VERSION); if (str != NULL) D(bug("GL Shading Language : %s", str)); if (pglXQueryServerString) { str = (const GLubyte *)pglXQueryServerString(dpy, screen, GLX_VENDOR); D(bug("GL Server Vendor : %s", str)); str = (const GLubyte *)pglXQueryServerString(dpy, screen, GLX_VERSION); D(bug("GL Server Version : %s", str)); str = (const GLubyte *)pglXQueryServerString(dpy, screen, GLX_EXTENSIONS); D(bug("GL Server Extensions : %s", str)); } if (pglXQueryExtensionsString) { str = (const GLubyte *)pglXQueryExtensionsString(dpy, screen); D(bug("GL Server XExtensions : %s", str)); } if (pglXGetClientString) { str = (const GLubyte *)pglXGetClientString(dpy, GLX_VENDOR); D(bug("GL Client Vendor : %s", str)); str = (const GLubyte *)pglXGetClientString(dpy, GLX_VERSION); D(bug("GL Client Version : %s", str)); str = (const GLubyte *)pglXGetClientString(dpy, GLX_EXTENSIONS); D(bug("GL Client Extensions : %s", str)); } } #endif dispose(); return true; } /*-----------------------------------------------------------------------*/ GLboolean X11OpenglContext::MakeCurrent(memptr _buffer, GLenum _type, GLsizei _width, GLsizei _height) { dst_buffer = _buffer; type = _type; width = _width; height = _height; if (!pglXMakeContextCurrent(dpy, pbuffer, pbuffer, ctx)) return GL_FALSE; return OpenglContext::MakeBufferCurrent(true); } /*-----------------------------------------------------------------------*/ GLboolean X11OpenglContext::MakeCurrent() { if (!pglXMakeContextCurrent(dpy, pbuffer, pbuffer, ctx)) return GL_FALSE; return OpenglContext::MakeBufferCurrent(false); } /*-----------------------------------------------------------------------*/ GLboolean X11OpenglContext::ClearCurrent() { OpenglContext::ClearCurrent(); if (!pglXMakeContextCurrent(dpy, None, None, NULL)) return GL_FALSE; return GL_TRUE; } /*-----------------------------------------------------------------------*/ #if !defined(SDL_VIDEO_DRIVER_QUARTZ) && !defined(SDL_VIDEO_DRIVER_COCOA) #if !SDL_VERSION_ATLEAST(2, 0, 0) SDL_GLContext X11OpenglContext::GetSDLContext(void) { if (!dpy || !pglXGetCurrentContext) return NULL; return pglXGetCurrentContext(); } SDL_GLContext SDL_GL_GetCurrentContext(void) { return X11OpenglContext::GetSDLContext(); } #endif /*-----------------------------------------------------------------------*/ void X11OpenglContext::SetSDLContext(SDL_GLContext ctx) { if (!dpy || !pglXMakeCurrent) return; pglXMakeCurrent(dpy, sdlwindow, (GLXContext)ctx); } void SDL_GL_SetCurrentContext(SDL_GLContext ctx) { X11OpenglContext::SetSDLContext(ctx); } #endif #endif /* SDL_VIDEO_DRIVER_X11 */ /*************************************************************************/ /*-----------------------------------------------------------------------*/ /*************************************************************************/ /* Windows */ #if defined(SDL_VIDEO_DRIVER_WINDOWS) bool Win32OpenglContext::windClassRegistered; HWND Win32OpenglContext::tmpHwnd; HWND Win32OpenglContext::sdlwindow; HDC Win32OpenglContext::tmphdc; int (WINAPI *Win32OpenglContext::pwglGetPixelFormat)(HDC); int (WINAPI *Win32OpenglContext::pwglChoosePixelFormat) (HDC hDc, const PIXELFORMATDESCRIPTOR *pPfd); WINBOOL (WINAPI *Win32OpenglContext::pwglSetPixelFormat) (HDC hDc, int ipfd, const PIXELFORMATDESCRIPTOR *ppfd); WINBOOL (WINAPI *Win32OpenglContext::pwglSwapBuffers)(HDC); int (WINAPI *Win32OpenglContext::pwglDescribePixelFormat)(HDC hdc, int iPixelFormat, UINT nBytes, PIXELFORMATDESCRIPTOR *ppfd); WINBOOL (WINAPI *Win32OpenglContext::pwglCopyContext)(HGLRC, HGLRC, UINT); HGLRC (WINAPI *Win32OpenglContext::pwglCreateContext)(HDC hdc); HGLRC WINAPI (*Win32OpenglContext::pwglCreateLayerContext)(HDC, int); WINBOOL (WINAPI *Win32OpenglContext::pwglDeleteContext)(HGLRC); HGLRC (WINAPI *Win32OpenglContext::pwglGetCurrentContext)(void); HDC (WINAPI *Win32OpenglContext::pwglGetCurrentDC)(void); WINBOOL (WINAPI *Win32OpenglContext::pwglMakeCurrent)(HDC, HGLRC); WINBOOL (WINAPI *Win32OpenglContext::pwglShareLists)(HGLRC, HGLRC); const GLubyte * (WINAPI *Win32OpenglContext::pwglGetExtensionsStringARB) (HDC hdc); const GLubyte * (WINAPI *Win32OpenglContext::pwglGetExtensionsStringEXT) (void); LONG CALLBACK Win32OpenglContext::tmpWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { return DefWindowProc(hwnd, msg, wParam, lParam); } /*-----------------------------------------------------------------------*/ void Win32OpenglContext::InitPointers(void *glhandle) { HMODULE gdi = GetModuleHandleA("gdi32.dll"); pwglGetPixelFormat = (int (WINAPI *)(HDC)) GetProcAddress(gdi, "GetPixelFormat"); pwglChoosePixelFormat = (int (WINAPI *) (HDC, const PIXELFORMATDESCRIPTOR *)) GetProcAddress(gdi, "ChoosePixelFormat"); pwglSetPixelFormat = (WINBOOL (WINAPI *) (HDC, int, const PIXELFORMATDESCRIPTOR *)) GetProcAddress(gdi, "SetPixelFormat"); pwglSwapBuffers = (WINBOOL (WINAPI *)(HDC)) GetProcAddress(gdi, "SwapBuffers"); pwglDescribePixelFormat = (int (WINAPI *)(HDC, int, UINT, PIXELFORMATDESCRIPTOR *)) GetProcAddress(gdi, "DescribePixelFormat"); pwglCopyContext = (WINBOOL (WINAPI *)(HGLRC, HGLRC, UINT))SDL_LoadFunction(glhandle, "wglCopyContext"); pwglCreateContext = (HGLRC (WINAPI *)(HDC))SDL_LoadFunction(glhandle, "wglCreateContext"); pwglCreateLayerContext = (HGLRC WINAPI (*)(HDC, int))SDL_LoadFunction(glhandle, "wglCreateLayerContext"); pwglDeleteContext = (WINBOOL (WINAPI *)(HGLRC)) SDL_LoadFunction(glhandle, "wglDeleteContext"); pwglGetCurrentContext = (HGLRC (WINAPI *)(void)) SDL_LoadFunction(glhandle, "wglGetCurrentContext"); pwglGetCurrentDC = (HDC (WINAPI *)(void)) SDL_LoadFunction(glhandle, "wglGetCurrentDC"); pwglMakeCurrent = (WINBOOL (WINAPI *)(HDC, HGLRC))SDL_LoadFunction(glhandle, "wglMakeCurrent"); pwglShareLists = (WINBOOL (WINAPI *)(HGLRC, HGLRC)) SDL_LoadFunction(glhandle, "wglShareLists"); pwglGetExtensionsStringARB = (const GLubyte * (WINAPI *) (HDC)) SDL_LoadFunction(glhandle, "wglGetExtensionsStringARB"); pwglGetExtensionsStringEXT = (const GLubyte * (WINAPI *) (void)) SDL_LoadFunction(glhandle, "wglGetExtensionsStringEXT"); } /*-----------------------------------------------------------------------*/ Win32OpenglContext::Win32OpenglContext(void *glhandle) : OpenglContext(glhandle), ctx(NULL), iPixelFormat(0) { InitPointers(lib_handle); } /*-----------------------------------------------------------------------*/ Win32OpenglContext::~Win32OpenglContext() { dispose(); } /*-----------------------------------------------------------------------*/ void Win32OpenglContext::dispose() { OpenglContext::DestroyContext(); if (ctx) { pwglDeleteContext(ctx); ctx = 0; } } /*-----------------------------------------------------------------------*/ HGLRC Win32OpenglContext::CreateTmpContext(int &iPixelFormat, GLint _colorBits, GLint _depthBits, GLint _stencilBits, GLint _accumBits) { PIXELFORMATDESCRIPTOR pfd; HGLRC tmp_ctx; if (!windClassRegistered) { WNDCLASS wc; HINSTANCE hInst; hInst = GetModuleHandle(NULL); wc.style = CS_BYTEALIGNCLIENT | CS_OWNDC; wc.lpfnWndProc = tmpWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInst; wc.hIcon = NULL; wc.hCursor = NULL; wc.hbrBackground = NULL; wc.lpszMenuName = NULL; wc.lpszClassName = "Win32OpenglTmpWindow"; if (!RegisterClass(&wc)) { D(bug("can't register window class: %s", win32_errstring(GetLastError()))); return NULL; } tmpHwnd = CreateWindow("Win32OpenglTmpWindow", "", WS_POPUP | WS_DISABLED, 0, 0, 10, 10, NULL, NULL, hInst, NULL); if (tmpHwnd == NULL) { D(bug("can't create window: %s", win32_errstring(GetLastError()))); return NULL; } tmphdc = GetDC(tmpHwnd); if (tmphdc == NULL) { D(bug("can't get DC: %s", win32_errstring(GetLastError()))); return NULL; } windClassRegistered = true; } if (pwglCreateContext == 0 || pwglMakeCurrent == 0 || pwglDeleteContext == 0 || pwglChoosePixelFormat == 0 || pwglGetPixelFormat == 0 || pwglSetPixelFormat == 0) { D(bug("missing WGL functions")); return NULL; } memset(&pfd, 0, sizeof(pfd)); pfd.nSize = sizeof(pfd); pfd.nVersion = 1; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL; pfd.iPixelType = _colorBits > 8 ? PFD_TYPE_RGBA : PFD_TYPE_COLORINDEX; pfd.cColorBits = _colorBits; pfd.cDepthBits = _depthBits; pfd.cStencilBits = _stencilBits; pfd.cAccumBits = _accumBits; pfd.cRedBits = 8; pfd.cGreenBits = 8; pfd.cBlueBits = 8; iPixelFormat = pwglChoosePixelFormat(tmphdc, &pfd); if (iPixelFormat == 0) { D(bug("pixel format not available: %s", win32_errstring(GetLastError()))); return NULL; } if (!pwglSetPixelFormat(tmphdc, iPixelFormat, &pfd)) { D(bug("can't set pixel format: %s", win32_errstring(GetLastError()))); return NULL; } pwglMakeCurrent(NULL, NULL); tmp_ctx = pwglCreateContext(tmphdc); if (!pwglMakeCurrent(tmphdc, tmp_ctx)) { D(bug("can't set context: %s", win32_errstring(GetLastError()))); return NULL; } return tmp_ctx; } /*-----------------------------------------------------------------------*/ void Win32OpenglContext::DeleteTmpContext(HGLRC tmp_ctx) { if (tmp_ctx) { pwglMakeCurrent(NULL, NULL); pwglDeleteContext(tmp_ctx); } } /*-----------------------------------------------------------------------*/ bool Win32OpenglContext::CreateContext(GLenum format, GLint _depthBits, GLint _stencilBits, GLint _accumBits, OffscreenContext *share_ctx) { bool ok = false; Win32OpenglContext *opengl_share = (Win32OpenglContext *)share_ctx; GLint _colorBits = format == GL_COLOR_INDEX ? 8 : 32; ctx = CreateTmpContext(iPixelFormat, _colorBits, _depthBits, _stencilBits, _accumBits); if (ctx) { if (OpenglContext::CreateContext(format, _depthBits, _stencilBits, _accumBits, share_ctx)) ok = true; if (opengl_share) if (!pwglShareLists || !pwglShareLists(opengl_share->ctx, ctx)) { D(bug("wglShareLists: sharing display lists failed")); ok = false; } } return ok; } /*-----------------------------------------------------------------------*/ bool Win32OpenglContext::TestContext() { /* * we need a context to get usable values from glGetString() */ if (!CreateContext(GL_RGB, 0, 0, 0, NULL)) { D(bug("can not create context")); dispose(); return false; } const GLubyte *extensions = OSMesaDriver::fn.glGetString(GL_EXTENSIONS); OffscreenContext::has_MESA_pack_invert = gl_HasExtension("GL_MESA_pack_invert", extensions); #if DEBUG { const GLubyte *str; str = OSMesaDriver::fn.glGetString(GL_VERSION); D(bug("GL Version: %s", str)); str = OSMesaDriver::fn.glGetString(GL_VENDOR); D(bug("GL Vendor: %s", str)); str = OSMesaDriver::fn.glGetString(GL_RENDERER); D(bug("GL Renderer: %s", str)); str = OSMesaDriver::fn.glGetString(GL_EXTENSIONS); D(bug("GL Extensions: %s", str)); str = OSMesaDriver::fn.glGetString(GL_SHADING_LANGUAGE_VERSION); if (str != NULL) D(bug("GL Shading Language : %s", str)); if (pwglGetExtensionsStringARB) { str = pwglGetExtensionsStringARB(tmphdc); D(bug("Server Extensions : %s", str)); } else if (pwglGetExtensionsStringEXT) { str = pwglGetExtensionsStringEXT(); D(bug("Server Extensions : %s", str)); } } #endif dispose(); return true; } /*-----------------------------------------------------------------------*/ GLboolean Win32OpenglContext::MakeCurrent(memptr _buffer, GLenum _type, GLsizei _width, GLsizei _height) { GLboolean ok = GL_FALSE; dst_buffer = _buffer; type = _type; width = _width; height = _height; if (pwglMakeCurrent(tmphdc, ctx)) ok = OpenglContext::MakeBufferCurrent(true); return ok; } /*-----------------------------------------------------------------------*/ GLboolean Win32OpenglContext::MakeCurrent() { GLboolean ok = GL_FALSE; if (pwglMakeCurrent(tmphdc, ctx)) ok = OpenglContext::MakeBufferCurrent(false); return ok; } /*-----------------------------------------------------------------------*/ GLboolean Win32OpenglContext::ClearCurrent() { OpenglContext::ClearCurrent(); if (!pwglMakeCurrent(NULL, NULL)) return GL_FALSE; return GL_TRUE; } /*-----------------------------------------------------------------------*/ #if !SDL_VERSION_ATLEAST(2, 0, 0) SDL_GLContext Win32OpenglContext::GetSDLContext(void) { SDL_SysWMinfo info; SDL_VERSION(&info.version); if (SDL_GetWMInfo(&info) > 0) { sdlwindow = info.window; return (SDL_GLContext)info.hglrc; } return NULL; } SDL_GLContext SDL_GL_GetCurrentContext(void) { return Win32OpenglContext::GetSDLContext(); } #endif /*-----------------------------------------------------------------------*/ void Win32OpenglContext::SetSDLContext(SDL_GLContext ctx) { if (sdlwindow && pwglMakeCurrent) { HDC hdc = GetDC(sdlwindow); pwglMakeCurrent(hdc, (HGLRC)ctx); ReleaseDC(sdlwindow, hdc); } } void SDL_GL_SetCurrentContext(SDL_GLContext ctx) { Win32OpenglContext::SetSDLContext(ctx); } #endif /* SDL_VIDEO_DRIVER_WINDOWS */ /*************************************************************************/ /*-----------------------------------------------------------------------*/ /*************************************************************************/ /* MacOSX CoreGraphics/Quartz/Cocoa */ #if defined(SDL_VIDEO_DRIVER_QUARTZ) || defined(SDL_VIDEO_DRIVER_COCOA) QuartzOpenglContext::QuartzOpenglContext(void *glhandle) : OpenglContext(glhandle), ctx(NULL) { } /*-----------------------------------------------------------------------*/ QuartzOpenglContext::~QuartzOpenglContext() { dispose(); } /*-----------------------------------------------------------------------*/ void QuartzOpenglContext::dispose() { OpenglContext::DestroyContext(); if (ctx) { CGLDestroyContext(ctx); ctx = 0; } } /*-----------------------------------------------------------------------*/ bool QuartzOpenglContext::CreateContext(GLenum format, GLint _depthBits, GLint _stencilBits, GLint _accumBits, OffscreenContext *share_ctx) { CGLPixelFormatAttribute attribs[20]; int i; int npix = 0; CGLError error; CGLPixelFormatObj pixelformat = 0; ctx = NULL; i = 0; attribs[i++] = kCGLPFACompliant; attribs[i++] = kCGLPFAColorSize; attribs[i++] = (CGLPixelFormatAttribute)(format == GL_COLOR_INDEX ? 8 : 24); if (_depthBits > 0) { attribs[i++] = kCGLPFADepthSize; attribs[i++] = (CGLPixelFormatAttribute)_depthBits; } if (_stencilBits > 0) { attribs[i++] = kCGLPFAStencilSize; attribs[i++] = (CGLPixelFormatAttribute)_stencilBits; } if (_accumBits > 0) { attribs[i++] = kCGLPFAAccumSize; attribs[i++] = (CGLPixelFormatAttribute)_accumBits; } attribs[i++] = kCGLPFAAccelerated; attribs[i] = (CGLPixelFormatAttribute)0; error = CGLChoosePixelFormat(attribs, &pixelformat, &npix); if (pixelformat == 0) { /* retry without accelerated */ attribs[--i] = (CGLPixelFormatAttribute)0; error = CGLChoosePixelFormat(attribs, &pixelformat, &npix); } if (pixelformat == 0) { D(bug("No suitable visual: %s", CGLErrorString(error))); return false; } QuartzOpenglContext *opengl_share = (QuartzOpenglContext *)share_ctx; error = CGLCreateContext(pixelformat, opengl_share ? opengl_share->ctx : NULL, &ctx); CGLDestroyPixelFormat(pixelformat); if (ctx == NULL) { D(bug("CGLCreateContext failed: %s", CGLErrorString(error))); return false; } error = CGLSetCurrentContext(ctx); if (error != kCGLNoError) { D(bug("CGLSetCurrentContext failed: %s", CGLErrorString(error))); return false; } if (!OpenglContext::CreateContext(format, _depthBits, _stencilBits, _accumBits, share_ctx)) return false; return true; } /*-----------------------------------------------------------------------*/ bool QuartzOpenglContext::TestContext() { /* * we need a context to get usable values from glGetString() */ if (!CreateContext(GL_RGB, 0, 0, 0, NULL)) { D(bug("can not create context")); dispose(); return false; } const GLubyte *extensions = OSMesaDriver::fn.glGetString(GL_EXTENSIONS); OffscreenContext::has_MESA_pack_invert = gl_HasExtension("GL_MESA_pack_invert", extensions); #if DEBUG { const GLubyte *str; str = OSMesaDriver::fn.glGetString(GL_VERSION); D(bug("GL Version: %s", str)); str = OSMesaDriver::fn.glGetString(GL_VENDOR); D(bug("GL Vendor: %s", str)); str = OSMesaDriver::fn.glGetString(GL_RENDERER); D(bug("GL Renderer: %s", str)); str = OSMesaDriver::fn.glGetString(GL_EXTENSIONS); D(bug("GL Extensions: %s", str)); str = OSMesaDriver::fn.glGetString(GL_SHADING_LANGUAGE_VERSION); if (str != NULL) D(bug("GL Shading Language : %s", str)); } #endif dispose(); return true; } /*-----------------------------------------------------------------------*/ GLboolean QuartzOpenglContext::MakeCurrent(memptr _buffer, GLenum _type, GLsizei _width, GLsizei _height) { dst_buffer = _buffer; type = _type; width = _width; height = _height; CGLError error = CGLSetCurrentContext(ctx); if (error != kCGLNoError) { D(bug("CGLSetCurrentContext failed: %s", CGLErrorString(error))); return GL_FALSE; } return OpenglContext::MakeBufferCurrent(true); } /*-----------------------------------------------------------------------*/ GLboolean QuartzOpenglContext::MakeCurrent() { CGLError error = CGLSetCurrentContext(ctx); if (error != kCGLNoError) { D(bug("CGLSetCurrentContext failed: %s", CGLErrorString(error))); return GL_FALSE; } return OpenglContext::MakeBufferCurrent(false); } /*-----------------------------------------------------------------------*/ GLboolean QuartzOpenglContext::ClearCurrent() { OpenglContext::ClearCurrent(); if (CGLSetCurrentContext(NULL) != kCGLNoError) return GL_FALSE; return GL_TRUE; } #endif #endif aranym-1.1.0/src/natfeat/nfvdi_soft.h0000664000175000017500000001132213454637622015724 0ustar joyjoy/* NatFeat VDI driver ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFVDI_SOFT_H #define NFVDI_SOFT_H /*--- Includes ---*/ #include "parameters.h" /*--- Defines ---*/ /*--- Types ---*/ /*--- Class ---*/ class SoftVdiDriver : public VdiDriver { public: SoftVdiDriver(); ~SoftVdiDriver(); protected: void restoreMouseBackground(void); void saveMouseBackground(int16 x, int16 y, int16 width, int16 height); int32 openWorkstation(void); int32 closeWorkstation(void); int32 getPixel(memptr vwk, memptr src, int32 x, int32 y); int32 putPixel(memptr vwk, memptr dst, int32 x, int32 y, uint32 color); int32 drawMouse(memptr wk, int32 x, int32 y, uint32 mode, uint32 data, uint32 hot_x, uint32 hot_y, uint32 fgColor, uint32 bgColor, uint32 mouse_type); int32 expandArea(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp, uint32 fgColor, uint32 bgColor); int32 fillArea(memptr vwk, uint32 x_, uint32 y_, int32 w, int32 h, memptr pattern_address, uint32 fgColor, uint32 bgColor, uint32 logOp, uint32 interior_style); void fillArea(uint32 x, uint32 y, uint32 w, uint32 h, uint16* pattern, uint32 fgColor, uint32 bgColor, uint32 logOp); int32 drawLine(memptr vwk, uint32 x1_, uint32 y1_, uint32 x2_, uint32 y2_, uint32 pattern, uint32 fgColor, uint32 bgColor, uint32 logOp, memptr clip); int32 fillPoly(memptr vwk, memptr points_addr, int n, memptr index_addr, int moves, memptr pattern_addr, uint32 fgColor, uint32 bgColor, uint32 logOp, uint32 interior_style, memptr clip); int32 drawText(memptr vwk, memptr text, uint32 length, int32 dst_x, int32 dst_y, memptr font, uint32 w, uint32 h, uint32 fgColor, uint32 bgColor, uint32 logOp, memptr clip); void getHwColor(uint16 index, uint32 red, uint32 green, uint32 blue, memptr hw_value); void setColor(memptr vwk, uint32 paletteIndex, uint32 red, uint32 green, uint32 blue); int32 getFbAddr(void); int32 blitArea_M2S(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp); int32 blitArea_S2M(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp); int32 blitArea_S2S(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp); private: bool clipLine(int x1, int y1, int x2, int y2, int cliprect[]); int drawSingleLine(int x1, int y1, int x2, int y2, uint16 pattern, uint32 fgColor, uint32 bgColor, int logOp, int cliprect[], int minmax[]); int drawTableLine(memptr table, int length, uint16 pattern, uint32 fgColor, uint32 bgColor, int logOp, int cliprect[], int minmax[]); int drawMoveLine(memptr table, int length, memptr index, int moves, uint16 pattern, uint32 fgColor, uint32 bgColor, int logOp, int cliprect[], int minmax[]); /* Functions from hostscreen */ uint32 hsGetPixel( int x, int y ); void hsPutPixel( int x, int y, uint32 color ); void hsFillArea( int x, int y, int w, int h, uint16 *pattern, uint32 fgColor, uint32 bgColor, uint16 logOp ); void hsGfxBoxColorPattern( int x, int y, int w, int h, uint16 *areaPattern, uint32 fgColor, uint32 bgColor, uint16 logOp ); void hsBlitArea( int sx, int sy, int dx, int dy, int w, int h ); void hsDrawLine( int x1, int y1, int x2, int y2, uint16 pattern, uint32 fgColor, uint32 bgColor, uint16 logOp, int cliprect[]); void gfxHLineColor ( int16 x1, int16 x2, int16 y, uint16 pattern, uint32 fgColor, uint32 bgColor, uint16 logOp, int cliprect[] ); void gfxVLineColor( int16 x, int16 y1, int16 y2, uint16 pattern, uint32 fgColor, uint32 bgColor, uint16 logOp, int cliprect[] ); inline bool clipped(int x, int y, int cliprect[]) { if (x < cliprect[0] || x > cliprect[2]) return true; if (y < cliprect[1] || y > cliprect[3]) return true; return false; } /* SDL 1.2.10 to 1.2.13 has a bug when blitting inside same surface */ int sdl_buggy_blitsurface; }; #endif /* NFVDI_SOFT_H */ aranym-1.1.0/src/natfeat/nfvdi_soft.cpp0000664000175000017500000020415213454637622016264 0ustar joyjoy/* NatFeat VDI driver, software ARAnyM (C) 2001-2008 Standa Opichal and others, see the AUTHORS file This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "parameters.h" #include "host.h" #include "host_surface.h" #include "nfvdi.h" #include "nfvdi_soft.h" #define DEBUG 0 #include "debug.h" #include /*--- Defines ---*/ #define EINVFN -32 static const uint8 tos_colours[] = { 0,255,1,2,4,6,3,5,7,8,9,10,12,14,11,13 }; #define toTosColors( color ) \ ( (color)<(sizeof(tos_colours)/sizeof(*tos_colours)) ? tos_colours[color] : ((color) == 255 ? 15 : (color)) ) /*--- Types ---*/ /*--- Variables ---*/ /*--- Public functions ---*/ SoftVdiDriver::SoftVdiDriver() { SDL_version version; SDL_GetVersion(&version); /* SDL 1.2.10 to 1.2.13 has a bug when blitting inside same surface */ sdl_buggy_blitsurface = (SDL_VERSIONNUM(version.major, version.minor, version.patch) >= SDL_VERSIONNUM(1,2,10) && SDL_VERSIONNUM(version.major, version.minor, version.patch) <= SDL_VERSIONNUM(1,2,13)) /* SDL 2.x seems to not allow blitting inside the same surface at all */ || SDL_VERSIONNUM(version.major, version.minor, version.patch) >= SDL_VERSIONNUM(2,0,0); } SoftVdiDriver::~SoftVdiDriver() { } /*--- Private functions ---*/ int32 SoftVdiDriver::openWorkstation(void) { return VdiDriver::openWorkstation(); } int32 SoftVdiDriver::closeWorkstation(void) { return VdiDriver::closeWorkstation(); } /** * Get a coloured pixel. * * c_read_pixel(Virtual *vwk, MFDB *mfdb, long x, long y) * read_pixel * In: a1 VDI struct, source MFDB * d1 x * d2 y * * Only one mode here. * * Note that a1 does not point to the VDI struct, but to a place in memory * where the VDI struct pointer can be found. Four bytes beyond that address * is a pointer to the destination MFDB. * * Since an MFDB is passed, the source is not necessarily the screen. **/ int32 SoftVdiDriver::getPixel(memptr vwk, memptr src, int32 x, int32 y) { if (src) return VdiDriver::getPixel(vwk, src, x, y); return (surface ? hsGetPixel(x, y) : 0); } /** * Set a coloured pixel. * * c_write_pixel(Virtual *vwk, MFDB *mfdb, long x, long y, long colour) * write_pixel * In: a1 VDI struct, destination MFDB * d0 colour * d1 x or table address * d2 y or table length (high) and type (low) * XXX: ? * * This function has two modes: * - single pixel * - table based multi pixel (special mode 0 (low word of 'y')) * * Note that a1 does not point to the VDI struct, but to a place in memory * where the VDI struct pointer can be found. Four bytes beyond that address * is a pointer to the destination MFDB. * * As usual, only the first one is necessary, and a return with d0 = -1 * signifies that a special mode should be broken down to the basic one. * * Since an MFDB is passed, the destination is not necessarily the screen. **/ int32 SoftVdiDriver::putPixel(memptr vwk, memptr dst, int32 x, int32 y, uint32 color) { if (vwk & 1) return 0; if (dst) return VdiDriver::putPixel(vwk, dst, x, y, color); if (surface) { hsPutPixel(x, y, color); surface->setDirtyRect(x,y,1,1); } return 1; } /** * Draw the mouse * * Draw a coloured line between two points. * * c_mouse_draw(Workstation *wk, long x, long y, Mouse *mouse) * mouse_draw * In: a1 Pointer to Workstation struct * d0/d1 x,y * d2 0 - move shown 1 - move hidden 2 - hide 3 - show >7 - change shape (pointer to mouse struct) * * Unlike all the other functions, this does not receive a pointer to a VDI * struct, but rather one to the screen's workstation struct. This is * because the mouse handling concerns the screen as a whole (and the * routine is also called from inside interrupt routines). * * The Mouse structure pointer doubles as a mode variable. If it is a small * number, the mouse's state is supposed to change somehow, while a large * number is a pointer to a new mouse shape. * * This is currently not a required function, but it probably should be. * The fallback handling is not done in the usual way, and to make it * at least somewhat usable, the mouse pointer is reduced to 4x4 pixels. * * typedef struct Fgbg_ { * short background; * short foreground; * } Fgbg; * * typedef struct Mouse_ { * 0 short type; * 2 short hide; * struct position_ { * 4 short x; * 6 short y; * } position; * struct hotspot_ { * 8 short x; * 10 short y; * } hotspot; * 12 Fgbg colour; * 16 short mask[16]; * 48 short data[16]; * 80 void *extra_info; * } Mouse; **/ extern "C" { static uint16 reverse_bits(uint16 data) { uint16 res = 0; for(uint16 i = 0; i <= 15; i++) res |= ((data >> i) & 1) << (15 - i); return res; } } void SoftVdiDriver::restoreMouseBackground(void) { int16 x = Mouse.storage.x; int16 y = Mouse.storage.y; for(uint16 i = 0; i < Mouse.storage.height; i++) for(uint16 j = 0; j < Mouse.storage.width; j++) hsPutPixel(x + j, y + i, Mouse.storage.background[i][j]); surface->setDirtyRect(x,y,16,16); } void SoftVdiDriver::saveMouseBackground(int16 x, int16 y, int16 width, int16 height) { D2(bug("fVDI: saveMouseBackground: %d,%d,%d,%d", x, y, width, height)); for(uint16 i = 0; i < height; i++) for(uint16 j = 0; j < width; j++) { Mouse.storage.background[i][j] = hsGetPixel(x + j, y + i); } Mouse.storage.x = x; Mouse.storage.y = y; Mouse.storage.height = height; Mouse.storage.width = width; } int SoftVdiDriver::drawMouse(memptr wk, int32 x, int32 y, uint32 mode, uint32 data, uint32 hot_x, uint32 hot_y, uint32 fgColor, uint32 bgColor, uint32 mouse_type) { if (bx_options.nfvdi.use_host_mouse_cursor) { return VdiDriver::drawMouse(wk,x,y,mode,data,hot_x,hot_y,fgColor,bgColor,mouse_type); } if (!surface) { return 1; } DUNUSED(wk); DUNUSED(mouse_type); D2(bug("fVDI: mouse mode: %x", mode)); switch (mode) { case 4: case 0: // move shown restoreMouseBackground(); break; case 5: case 1: // move hidden return 1; case 2: // hide restoreMouseBackground(); return 1; case 3: // show break; case 6: case 7: break; default: // change pointer shape D(bug("fVDI: mouse : %08x, %08x, (%08x,%08x)", hot_x, hot_y, fgColor, bgColor)); memptr fPatterAddress = (memptr)mode; for(uint16 i = 0; i < 32; i += 2) Mouse.mask[i >> 1] = reverse_bits(ReadInt16(fPatterAddress + i)); fPatterAddress = (memptr)data; for(uint16 i = 0; i < 32; i += 2) Mouse.shape[i >> 1] = reverse_bits(ReadInt16(fPatterAddress + i)); Mouse.hotspot.x = hot_x & 0xf; Mouse.hotspot.y = hot_y & 0xf; Mouse.storage.color.foreground = fgColor; Mouse.storage.color.background = bgColor; return 1; } // handle the mouse hotspot point x -= Mouse.hotspot.x; y -= Mouse.hotspot.y; // roll the pattern properly uint16 mm[16]; uint16 md[16]; uint16 shift = x & 0xf; for(uint16 i = 0; i <= 15; i++) { mm[(i + (y & 0xf)) & 0xf] = (Mouse.mask[i] << shift) | ((Mouse.mask[i] >> (16 - shift)) & ((1 << shift) - 1)); md[(i + (y & 0xf)) & 0xf] = (Mouse.shape[i] << shift) | ((Mouse.shape[i] >> (16 - shift)) & ((1 << shift) - 1)); } // beware of the edges of the screen int32 w, h; if (x < 0) { w = 16 + x; x = 0; } else { w = 16; if (x + 16 >= surface->getWidth()) w = surface->getWidth() - x; } if (y < 0) { h = 16 + y; y = 0; } else { h = 16; if (y + 16 >= surface->getHeight()) h = surface->getHeight() - y; } D2(bug("fVDI: mouse x,y: %d,%d,%d,%d (%x,%x)", x, y, w, h, Mouse.storage.color.background, Mouse.storage.color.foreground)); // draw the mouse saveMouseBackground(x, y, w, h); hsFillArea(x, y, w, h, mm, Mouse.storage.color.background, Mouse.storage.color.background, 2); hsFillArea(x, y, w, h, md, Mouse.storage.color.foreground, Mouse.storage.color.foreground, 2); return 1; } /** * Expand a monochrome area to a coloured one. * * c_expand_area(Virtual *vwk, MFDB *src, long src_x, long src_y, * MFDB *dst, long dst_x, long dst_y, * long w, long h, long operation, long colour) * expand_area * In: a1 VDI struct, destination MFDB, VDI struct, source MFDB * d0 height and width to move (high and low word) * d1-d2 source coordinates * d3-d4 destination coordinates * d6 background and foreground colour * d7 logic operation * * Only one mode here. * * Note that a1 does not point to the VDI struct, but to a place in memory * where the VDI struct pointer can be found. Four bytes beyond that address * is a pointer to the destination MFDB, and then comes a VDI struct * pointer again (the same) and a pointer to the source MFDB. * * Since MFDBs are passed, the screen is not necessarily involved. * * A return with 0 gives a fallback (normally pixel by pixel drawing by * the fVDI engine). * * typedef struct MFDB_ { * short *address; * short width; * short height; * short wdwidth; * short standard; * short bitplanes; * short reserved[3]; * } MFDB; **/ int32 SoftVdiDriver::expandArea(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp, uint32 fgColor, uint32 bgColor) { if (dest) { return VdiDriver::expandArea(vwk, src, sx, sy, dest, dx, dy, w, h, logOp, fgColor, bgColor); } if (!surface) { return 1; } SDL_Surface *sdl_surf = surface->getSdlSurface(); if (!sdl_surf) { return 1; } if (surface->getBpp() == 8) { fgColor &= 0xff; bgColor &= 0xff; } uint16 pitch = ReadInt16(src + MFDB_WDWIDTH) * 2; // the byte width (always monochrom); /* Linux does not wrap on words */ if ( (uint32)ReadInt16( src + MFDB_STAND ) & 0x1000 ) { pitch >>= 1; } memptr data = ReadInt32(src + MFDB_ADDRESS) + sy * pitch; // MFDB *src->address; D(bug("fVDI: %s %x %d,%d:%d,%d:%d,%d (%lx, %lx)", "expandArea", logOp, sx, sy, dx, dy, w, h, fgColor, bgColor )); D2(bug("fVDI: %s %x,%x : %x,%x", "expandArea - MFDB addresses", src, dest, ReadInt32( src ),ReadInt32( dest ))); D2(bug("fVDI: %s %x, %d, %d", "expandArea - src: data address, MFDB wdwidth << 1, bitplanes", data, pitch, ReadInt16( src + MFDB_NPLANES ))); D2(bug("fVDI: %s %x, %d, %d", "expandArea - dst: data address, MFDB wdwidth << 1, bitplanes", ReadInt32(dest), ReadInt16(dest + MFDB_WDWIDTH) * (ReadInt16(dest + MFDB_NPLANES) >> 2), ReadInt16(dest + MFDB_NPLANES))); if ( (uint32)ReadInt16( src + MFDB_STAND ) & 0x100 ) { if ( ReadInt16( src + MFDB_NPLANES ) != 8 ) { bug("fVDI: Only 8bit chunky expand is supported so far."); return 0; } /* 8bit greyscale aplha expand */ if ( surface->getBpp() != 32 ) { bug("fVDI: Only 4byte SDL_Surface color depths supported so far."); return 0; } SDL_Surface *asurf = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, 32, sdl_surf->format->Rmask, sdl_surf->format->Gmask, sdl_surf->format->Bmask, 0xFF000000); if ( asurf == NULL ) return 0; if (logOp == MD_REPLACE) { D(bug("fVDI: expandArea 8bit: logOp=%d screen=%p, format=%p [%d]", logOp, sdl_surf, sdl_surf->format, sdl_surf->format->BytesPerPixel)); /* no alpha surface */ SDL_Surface *blocksurf = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, sdl_surf->format->BitsPerPixel, sdl_surf->format->Rmask, sdl_surf->format->Gmask, sdl_surf->format->Bmask, 0xFF000000); if ( blocksurf == NULL ) return 0; /* fill with the background color */ for(uint16 j = 0; j < h; j++) { uint32 *dst = (uint32 *)blocksurf->pixels + j * blocksurf->pitch/4; for(uint16 i = 0; i < w; i++) *dst++ = bgColor | 0xff000000UL; } /* transparent alpha blit */ for(uint16 j = 0; j < h; j++) { uint32 *dst = (uint32 *)asurf->pixels + j * asurf->pitch/4; for(uint16 i = sx; i < sx + w; i++) { *dst++ = fgColor | (ReadInt8(data + j * pitch + i) << 24); } } SDL_Rect identRect = { 0, 0, Uint16(w), Uint16(h) }; SDL_BlitSurface(asurf,NULL,blocksurf,&identRect); SDL_FreeSurface(asurf); /* blit the whole thing to the screen */ asurf = blocksurf; } else { D(bug("fVDI: expandArea 8bit: logOp=%d %lx %lx", logOp, fgColor, bgColor)); for(uint16 j = 0; j < h; j++) { uint32 *dst = (uint32 *)asurf->pixels + j * asurf->pitch/4; switch(logOp) { case MD_TRANS: for(uint16 i = sx; i < sx + w; i++) { *dst++ = fgColor | (ReadInt8(data + j * pitch + i) << 24); } break; case MD_XOR: for(uint16 i = sx; i < sx + w; i++) { *dst++ = (~hsGetPixel(dx + i - sx, dy + j) & ~0xff000000UL) | (ReadInt8(data + j * pitch + i) << 24); } break; case MD_ERASE: for(uint16 i = sx; i < sx + w; i++) { *dst++ = bgColor | ((0xff - ReadInt8(data + j * pitch + i)) << 24); } break; } } } D(bug("fVDI: %s %x, %d, %d", "8BIT expandArea - src: data address, MFDB wdwidth << 1, bitplanes", data, pitch, ReadInt16( src + MFDB_NPLANES ))); SDL_Rect destRect = { Sint16(dx), Sint16(dy), Uint16(w), Uint16(h) }; SDL_BlitSurface(asurf,NULL,surface->getSdlSurface(),&destRect); SDL_FreeSurface(asurf); surface->setDirtyRect(dx,dy,w,h); return 1; } D(bug("fVDI: expandArea M->S")); for(uint16 j = 0; j < h; j++) { D2(fprintf(stderr, "fVDI: bmp:")); uint16 theWord = ReadInt16(data + j * pitch + ((sx >> 3) & 0xfffe)); for(uint16 i = sx; i < sx + w; i++) { if (i % 16 == 0) theWord = ReadInt16(data + j * pitch + ((i >> 3) & 0xfffe)); D2(fprintf(stderr, "%s", ((theWord >> (15 - (i & 0xf))) & 1) ? "1" : " ")); switch(logOp) { case MD_REPLACE: hsPutPixel(dx + i - sx, dy + j, ((theWord >> (15 - (i & 0xf))) & 1) ? fgColor : bgColor); break; case MD_TRANS: if ((theWord >> (15 - (i & 0xf))) & 1) hsPutPixel(dx + i - sx, dy + j, fgColor); break; case MD_XOR: if ((theWord >> (15 - (i & 0xf))) & 1) hsPutPixel(dx + i - sx, dy + j, ~hsGetPixel(dx + i - sx, dy + j)); break; case MD_ERASE: if (!((theWord >> (15 - (i & 0xf))) & 1)) hsPutPixel(dx + i - sx, dy + j, bgColor); break; } } D2(bug("")); //newline } surface->setDirtyRect(dx,dy,w,h); return 1; } /** * Fill a coloured area using a monochrome pattern. * * c_fill_area(Virtual *vwk, long x, long y, long w, long h, * short *pattern, long colour, long mode, long interior_style) * fill_area * In: a1 VDI struct * d0 height and width to fill (high and low word) * d1 x or table address * d2 y or table length (high) and type (low) * d3 pattern address * d4 colour * * This function has two modes: * - single block to fill * - table based y/x1/x2 spans to fill (special mode 0 (low word of 'y')) * * As usual, only the first one is necessary, and a return with d0 = -1 * signifies that a special mode should be broken down to the basic one. * * An immediate return with 0 gives a fallback (normally line based drawing * by the fVDI engine for solid fills, otherwise pixel by pixel). * A negative return will break down the special mode into separate calls, * with no more fallback possible. **/ int32 SoftVdiDriver::fillArea(memptr vwk, uint32 x_, uint32 y_, int32 w, int32 h, memptr pattern_addr, uint32 fgColor, uint32 bgColor, uint32 logOp, uint32 interior_style) { DUNUSED(interior_style); if (!surface) { return 1; } if (surface->getBpp() == 8) { fgColor &= 0xff; bgColor &= 0xff; } uint16 pattern[16]; for(int i = 0; i < 16; ++i) pattern[i] = ReadInt16(pattern_addr + i * 2); memptr table = 0; int x = x_; int y = y_; if ((long)vwk & 1) { if ((y_ & 0xffff) != 0) return -1; // Don't know about this kind of table operation table = (memptr)x_; h = (y_ >> 16) & 0xffff; vwk -= 1; } D(bug("fVDI: %s %d %d,%d:%d,%d : %d,%d p:%x, (fgc:%lx : bgc:%lx)", "fillArea", logOp, x, y, w, h, x + w - 1, x + h - 1, *pattern, fgColor, bgColor)); int minx = 1000000; int miny = 1000000; int maxx = -1000000; int maxy = -1000000; /* Perform rectangle fill. */ if (!table) { hsFillArea(x, y, w, h, pattern, fgColor, bgColor, logOp); minx = x; miny = y; maxx = x + w - 1; maxy = y + h - 1; } else { for(h = h - 1; h >= 0; h--) { y = (int16)ReadInt16(table); table+=2; x = (int16)ReadInt16(table); table+=2; w = (int16)ReadInt16(table) - x + 1; table+=2; hsFillArea(x, y, w, 1, pattern, fgColor, bgColor, logOp); if (x < minx) minx = x; if (y < miny) miny = y; if (x + w - 1 > maxx) maxx = x + w - 1; if (y > maxy) maxy = y; } } return 1; } void SoftVdiDriver::fillArea(uint32 x, uint32 y, uint32 w, uint32 h, uint16* pattern, uint32 fgColor, uint32 bgColor, uint32 logOp) { hsFillArea(x, y, w, h, pattern, fgColor, bgColor, logOp); } /** * Blit an area * * c_blit_area(Virtual *vwk, MFDB *src, long src_x, long src_y, * MFDB *dst, long dst_x, long dst_y, * long w, long h, long operation) * blit_area * In: a1 VDI struct, destination MFDB, VDI struct, source MFDB * d0 height and width to move (high and low word) * d1-d2 source coordinates * d3-d4 destination coordinates * d7 logic operation * * Only one mode here. * * Note that a1 does not point to the VDI struct, but to a place in memory * where the VDI struct pointer can be found. Four bytes beyond that address * is a pointer to the destination MFDB, and then comes a VDI struct * pointer again (the same) and a pointer to the source MFDB. * * Since MFDBs are passed, the screen is not necessarily involved. * * A return with 0 gives a fallback (normally pixel by pixel drawing by the * fVDI engine). **/ int32 SoftVdiDriver::blitArea_M2S(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp) { DUNUSED(vwk); DUNUSED(dest); if (!surface) { return 1; } SDL_Surface *sdl_surf = surface->getSdlSurface(); if (!sdl_surf) { return 1; } uint32 planes = ReadInt16(src + MFDB_NPLANES); // MFDB *src->bitplanes uint32 pitch = ReadInt16(src + MFDB_WDWIDTH) * planes * 2; // MFDB *src->pitch if ( (uint32)ReadInt16( src + MFDB_STAND ) & 0x1000 ) { /* Linux does not wrap on words */ pitch >>= 1; } memptr data = ReadInt32(src) + sy * pitch; // MFDB *src->address host OS address uint32 srcData; uint32 destData; switch(planes) { case 16: data += sx * 2; if (logOp != S_ONLY) { for(int32 j = 0; j < h; j++) { for(int32 i = 0; i < w; i++) { srcData = ReadInt16(data + j * pitch + i * 2); destData = hsGetPixel(dx + i, dy + j); destData = applyBlitLogOperation(logOp, destData, srcData); hsPutPixel(dx + i, dy + j, destData); } } } else { uint16* daddr_base = (uint16*) sdl_surf->pixels; daddr_base += dy * (sdl_surf->pitch>>1) + dx; memptr saddr_base = data; for(int32 j = 0; j < h; j++) { uint16* daddr = daddr_base; memptr saddr = saddr_base; daddr_base += sdl_surf->pitch / 2; saddr_base += pitch; for(int32 i = 0; i < w; i++) { destData = ReadInt16(saddr); saddr += 2; *daddr++ = destData; } } } break; case 24: data += sx * 3; for(int32 j = 0; j < h; j++) for(int32 i = 0; i < w; i++) { srcData = get_dtriplet(data + j * pitch + i * 3); destData = hsGetPixel(dx + i, dy + j); destData = applyBlitLogOperation(logOp, destData, srcData); hsPutPixel(dx + i, dy + j, destData); } break; case 32: data += sx * 4; if (logOp != S_ONLY) { for(int32 j = 0; j < h; j++) for(int32 i = 0; i < w; i++) { srcData = ReadInt32(data + j * pitch + i * 4); destData = hsGetPixel(dx + i, dy + j); destData = applyBlitLogOperation(logOp, destData, srcData); hsPutPixel(dx + i, dy + j, destData); } } else { uint32* daddr_base = (uint32*) sdl_surf->pixels; daddr_base += dy * (sdl_surf->pitch>>2) + dx; memptr saddr_base = data; for(int32 j = 0; j < h; j++) { uint32* daddr = daddr_base; #ifdef FULLMMU memptr saddr = saddr_base; #else uint32 *saddr = (uint32 *)phys_get_real_address(saddr_base); #endif daddr_base += sdl_surf->pitch / 4; saddr_base += pitch; for(int32 i = 0; i < w; i++) { #ifdef FULLMMU destData = ReadInt32(saddr); saddr += 4; #else destData= (uint32) do_get_mem_long(saddr++); #endif *daddr++ = destData; } } } break; default: // bitplane modes... if (planes < 16) { if ( ((uint32)ReadInt16( src + MFDB_STAND ) & 0x100) && planes == 8) { D(bug("fVDI: blitArea M->S: chunky8bit")); for(int32 j = 0; j < h; j++) { for(int32 i = sx; i < sx + w; i++) { srcData = ReadInt8(data + j * pitch + i); destData = hsGetPixel(dx + i - sx, dy + j); destData = applyBlitLogOperation(logOp, destData, srcData); hsPutPixel(dx + i - sx, dy + j, destData); } } } else { uint8 color[16]; D(bug("fVDI: blitArea M->S: bitplaneToChunky conversion")); uint16 *dataHost = (uint16*)Atari2HostAddr(data); // FIXME: Hack! Should use the get_X() methods above for(int32 j = 0; j < h; j++) { uint32 wordIndex = (j * pitch >> 1) + (sx >> 4) * planes; HostScreen::bitplaneToChunky(&dataHost[wordIndex], planes, color); for(int32 i = sx; i < sx + w; i++) { uint8 bitNo = i & 0xf; if (bitNo == 0) { uint32 wordIndex = (j * pitch >> 1) + (i >> 4) * planes; HostScreen::bitplaneToChunky(&dataHost[wordIndex], planes, color); } destData = hsGetPixel(dx + i - sx, dy + j); destData = applyBlitLogOperation(logOp, destData, color[bitNo]); hsPutPixel(dx + i - sx, dy + j, destData); } } } } } surface->setDirtyRect(dx,dy,w,h); return 1; } int32 SoftVdiDriver::blitArea_S2M(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp) { DUNUSED(vwk); DUNUSED(src); DUNUSED(dest); if (!surface) { return 1; } SDL_Surface *sdl_surf = surface->getSdlSurface(); if (!sdl_surf) { return 1; } uint32 planes = ReadInt16(dest + MFDB_NPLANES); // MFDB *dest->bitplanes uint32 destPitch = ReadInt16(dest + MFDB_WDWIDTH) * planes * 2; // MFDB *dest->pitch memptr destAddress = ReadInt32(dest); uint32 srcData; uint32 destData; switch(planes) { case 16: for(int32 j = 0; j < h; j++) for(int32 i = sx; i < sx + w; i++) { uint32 offset = (dx + i - sx) * 2 + (dy + j) * destPitch; srcData = hsGetPixel(i, sy + j); destData = ReadInt16(destAddress + offset); destData = applyBlitLogOperation(logOp, destData, srcData); WriteInt16(destAddress + offset, destData); } break; case 24: for(int32 j = 0; j < h; j++) for(int32 i = sx; i < sx + w; i++) { uint32 offset = (dx + i - sx) * 3 + (dy + j) * destPitch; srcData = hsGetPixel( i, sy + j ); destData = get_dtriplet(destAddress + offset); destData = applyBlitLogOperation(logOp, destData, srcData); put_dtriplet(destAddress + offset, destData); } break; case 32: #ifdef FULLMMU for(int32 j = 0; j < h; j++) for(int32 i = sx; i < sx + w; i++) { uint32 offset = (dx + i - sx) * 4 + (dy + j) * destPitch; srcData = hsGetPixel(i, sy + j); destData = ReadInt32(destAddress + offset); destData = applyBlitLogOperation(logOp, destData, srcData); WriteInt32(destAddress + offset, destData); } #else if (logOp != S_ONLY) { for(int32 j = 0; j < h; j++) { uint32 offset = dx*4 + (dy + j) * destPitch; for(int32 i = sx; i < sx + w; i++) { srcData = hsGetPixel(i, sy + j); destData = ReadInt32(destAddress + offset); destData = applyBlitLogOperation(logOp, destData, srcData); WriteInt32(destAddress + offset, destData); offset += 4; } } } else { for(int32 j2 = 0; j2 < h; j2++) { uint32 offset = dx*4 + (dy + j2) * destPitch; uint32 *destaddr = (uint32 *)phys_get_real_address(destAddress + offset); for(int32 i2 = sx; i2 < sx + w; i2++) { srcData = hsGetPixel(i2, sy + j2); do_put_mem_long(destaddr++, srcData); offset += 4; } } } #endif break; default: if (planes < 16) { D(bug("fVDI: blitArea S->M: bitplane conversion")); uint16 bitplanePixels[8]; uint32 pitch = sdl_surf->pitch; uint8* dataHost = (uint8*)sdl_surf->pixels + sy * pitch; for(int32 j = 0; j < h; j++) { uint32 pixelPosition = j * pitch + (sx & ~0xf); // div 16 chunkyToBitplane(dataHost + pixelPosition, planes, bitplanePixels); for(uint32 d = 0; d < planes; d++) WriteInt16(destAddress + (((dx >> 4) * planes) + d) * 2 + (dy + j) * destPitch, bitplanePixels[d]); for(int32 i = sx; i < sx + w; i++) { uint8 bitNo = i & 0xf; if (bitNo == 0) { uint32 wordIndex = ((dx + i - sx) >> 4) * planes; uint32 pixelPosition = j * pitch + (i & ~0xf); // div 16 chunkyToBitplane(dataHost + pixelPosition, planes, bitplanePixels); for(uint32 d = 0; d < planes; d++) WriteInt16(destAddress + (wordIndex + d) * 2 + (dy + j) * destPitch, bitplanePixels[d]); } } } } } return 1; } int32 SoftVdiDriver::blitArea_S2S(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp) { DUNUSED(vwk); DUNUSED(src); DUNUSED(dest); if (!surface) { return 1; } if (logOp == S_ONLY) { // for S->S blits... -> SDL does the whole thing at once hsBlitArea(sx, sy, dx, dy, w, h); } else { uint32 srcData; uint32 destData; for(int32 j = 0; j < h; j++) for(int32 i = 0; i < w; i++) { srcData = hsGetPixel(i + sx, sy + j); destData = hsGetPixel(i + dx, dy + j); destData = applyBlitLogOperation(logOp, destData, srcData); hsPutPixel(dx + i, dy + j, destData); } surface->setDirtyRect(dx,dy,w,h); } return 1; } /** * Draw a coloured line between two points * * c_draw_line(Virtual *vwk, long x1, long y1, long x2, long y2, * long pattern, long colour) * draw_line * In: a1 VDI struct * d0 logic operation * d1 x1 or table address * d2 y1 or table length (high) and type (low) * d3 x2 or move point count * d4 y2 or move index address * d5 pattern * d6 colour * * This function has three modes: * - single line * - table based coordinate pairs (special mode 0 (low word of 'y1')) * - table based coordinate pairs+moves (special mode 1) * * As usual, only the first one is necessary, and a return with d0 = -1 * signifies that a special mode should be broken down to the basic one. * * An immediate return with 0 gives a fallback (normally pixel by pixel * drawing by the fVDI engine). * A negative return will break down the special modes into separate calls, * with no more fallback possible. **/ /* --------- Clipping routines for box/line */ /* Clipping based heavily on code from */ /* http://www.ncsa.uiuc.edu/Vis/Graphics/src/clipCohSuth.c */ #define CLIP_LEFT_EDGE 0x1 #define CLIP_RIGHT_EDGE 0x2 #define CLIP_BOTTOM_EDGE 0x4 #define CLIP_TOP_EDGE 0x8 #define CLIP_INSIDE(a) (!a) #define CLIP_REJECT(a,b) (a&b) #define CLIP_ACCEPT(a,b) (!(a|b)) #if 0 static inline int clipEncode (int x, int y, int left, int top, int right, int bottom) { int code = 0; if (x < left) { code |= CLIP_LEFT_EDGE; } else if (x > right) { code |= CLIP_RIGHT_EDGE; } if (y < top) { code |= CLIP_TOP_EDGE; } else if (y > bottom) { code |= CLIP_BOTTOM_EDGE; } return code; } #endif bool SoftVdiDriver::clipLine(int x1, int y1, int x2, int y2, int cliprect[]) { // Get clipping boundary int left, top, right, bottom; int swaptmp; left = cliprect[0]; top = cliprect[1]; right = cliprect[2]; bottom = cliprect[3]; if (right < left) { swaptmp = right; right = left; left = swaptmp; } if (bottom < top) { swaptmp = bottom; bottom = top; top = swaptmp; } cliprect[0] = left; cliprect[1] = top; cliprect[2] = right; cliprect[3] = bottom; if (x2 < x1) { swaptmp = x1; x1 = x2; x2 = swaptmp; } if (y2 < y1) { swaptmp = y1; y1 = y2; y2 = swaptmp; } if (x2 < left || x1 > right) return false; if (y2 < top || y1 > bottom) return false; return true; } // Don't forget rotation of pattern! int SoftVdiDriver::drawSingleLine(int x1, int y1, int x2, int y2, uint16 pattern, uint32 fgColor, uint32 bgColor, int logOp, int cliprect[], int minmax[]) { if (clipLine(x1, y1, x2, y2, cliprect)) { // Do not draw the line when it is completely out D(bug("fVDI: %s %d,%d:%d,%d (%lx,%lx)", "drawSingleLine", x1, y1, x2, y2, fgColor, bgColor)); hsDrawLine(x1, y1, x2, y2, pattern, fgColor, bgColor, logOp, cliprect); if (x1 < x2) { if (x1 < minmax[0]) minmax[0] = x1; if (x2 > minmax[2]) minmax[2] = x2; } else { if (x2 < minmax[0]) minmax[0] = x2; if (x1 > minmax[2]) minmax[2] = x1; } if (y1 < y2) { if (y1 < minmax[1]) minmax[1] = y1; if (y2 > minmax[3]) minmax[3] = y2; } else { if (y2 < minmax[1]) minmax[1] = y2; if (y1 > minmax[3]) minmax[3] = y1; } } return 1; } // Don't forget rotation of pattern! int SoftVdiDriver::drawTableLine(memptr table, int length, uint16 pattern, uint32 fgColor, uint32 bgColor, int logOp, int cliprect[], int minmax[]) { int x1 = (int16)ReadInt16(table); table+=2; int y1 = (int16)ReadInt16(table); table+=2; for(--length; length > 0; length--) { int x2 = (int16)ReadInt16(table); table+=2; int y2 = (int16)ReadInt16(table); table+=2; drawSingleLine(x1, y1, x2, y2, pattern, fgColor, bgColor, logOp, cliprect, minmax); x1 = x2; y1 = y2; } return 1; } // Don't forget rotation of pattern! int SoftVdiDriver::drawMoveLine(memptr table, int length, memptr index, int moves, uint16 pattern, uint32 fgColor, uint32 bgColor, int logOp, int cliprect[], int minmax[]) { int x1 = (int16)ReadInt16(table); table+=2; int y1 = (int16)ReadInt16(table); table+=2; moves *= 2; moves-=2; if ((int16)ReadInt16(index + moves) == -4) moves-=2; if ((int16)ReadInt16(index + moves) == -2) moves-=2; int movepnt = -1; if (moves >= 0) movepnt = ((int16)ReadInt16(index + moves) + 4) / 2; for(int n = 1; n < length; n++) { int x2 = (int16)ReadInt16(table); table+=2; int y2 = (int16)ReadInt16(table); table+=2; if (n == movepnt) { moves-=2; if (moves >= 0) movepnt = ((int16)ReadInt16(index + moves) + 4) / 2; else movepnt = -1; /* Never again equal to n */ x1 = x2; y1 = y2; continue; } drawSingleLine(x1, y1, x2, y2, pattern, fgColor, bgColor, logOp, cliprect, minmax); x1 = x2; y1 = y2; } return 1; } int32 SoftVdiDriver::drawLine(memptr vwk, uint32 x1_, uint32 y1_, uint32 x2_, uint32 y2_, uint32 pattern, uint32 fgColor, uint32 bgColor, uint32 logOp, memptr clip) { if (!surface) { return 1; } if (surface->getBpp() == 8) { fgColor &= 0xff; bgColor &= 0xff; } memptr table = 0; memptr index = 0; int length = 0; int moves = 0; int16 x1 = x1_; int16 y1 = y1_; int16 x2 = x2_; int16 y2 = y2_; if (vwk & 1) { if ((unsigned)(y1 & 0xffff) > 1) return -1; /* Don't know about this kind of table operation */ table = (memptr)x1_; length = (y1_ >> 16) & 0xffff; if ((y1_ & 0xffff) == 1) { index = (memptr)y2_; moves = x2_ & 0xffff; } vwk -= 1; x1 = (int16)ReadInt16(table); y1 = (int16)ReadInt16(table + 2); x2 = (int16)ReadInt16(table + 4); y2 = (int16)ReadInt16(table + 6); } int cliparray[4]; if (clip) { // Clipping is not off cliparray[0] = (int16)ReadInt32(clip); cliparray[1] = (int16)ReadInt32(clip + 4); cliparray[2] = (int16)ReadInt32(clip + 8); cliparray[3] = (int16)ReadInt32(clip + 12); D2(bug("fVDI: %s %d,%d:%d,%d", "clipLineTO", cliparray[0], cliparray[1], cliparray[2], cliparray[3])); } else { cliparray[0] = 0; cliparray[1] = 0; cliparray[2] = surface->getWidth() - 1; cliparray[3] = surface->getHeight() - 1; } int minmax[4] = {1000000, 1000000, -1000000, -1000000}; #ifdef TEST_STRAIGHT // Not yet working int eq_coord = (x1 == x2) + 2 * (y1 == y2); #endif if (table) { if (moves) drawMoveLine(table, length, index, moves, pattern, fgColor, bgColor, logOp, cliparray, minmax); else { #ifdef TEST_STRAIGHT // Not yet working if (eq_coord && ((pattern & 0xffff) == 0xffff) && (logOp < MD_XOR)) { table += 8; for(--length; length > 0; length--) { if (eq_coord & 1) { if (y1 < y2) vertical(x1, y1, 1, y2 - y1 + 1); else vertical(x2, y2, 1, y1 - y2 + 1); } else if (eq_coord & 2) { if (x1 < x2) horizontal(x1, y1, x2 - x1 + 1, 1); else horizontal(x2, y2, x1 - x2 + 1, 1); } else { length++; table -= 8; break; } x1 = x2; y1 = y2; x2 = (int16)ReadInt16(table); table+=2; y2 = (int16)ReadInt16(table); table+=2; eq_coord = (x1 == x2) + 2 * (y1 == y2); } } #endif switch (length) { case 0: break; case 1: drawSingleLine(x1, y1, x2, y2, pattern, fgColor, bgColor, logOp, cliparray, minmax); break; default: drawTableLine(table, length, pattern, fgColor, bgColor, logOp, cliparray, minmax); break; } } #ifdef TEST_STRAIGHT // Not yet working } else if (eq_coord && ((pattern & 0xffff) == 0xffff)) { if (eq_coord & 1) { if (y1 < y2) vertical(x1, y1, 1, y2 - y1 + 1); else vertical(x2, y2, 1, y1 - y2 + 1); } else { if (x1 < x2) horizontal(x1, y1, x2 - x1 + 1, 1); else horizontal(x2, y2, x1 - x2 + 1, 1); } #endif } else drawSingleLine(x1, y1, x2, y2, pattern, fgColor, bgColor, logOp, cliparray, minmax); if (minmax[0] != 1000000) { D(bug("fVDI: %s %d,%d:%d,%d", "drawLineUp", minmax[0], minmax[1], minmax[2], minmax[3])); } else { D2(bug("fVDI: drawLineUp nothing to redraw")); } return 1; } int32 SoftVdiDriver::fillPoly(memptr vwk, memptr points_addr, int n, memptr index_addr, int moves, memptr pattern_addr, uint32 fgColor, uint32 bgColor, uint32 logOp, uint32 interior_style, memptr clip) { #if 0 return VdiDriver::fillPoly(vwk, points_addr, n, index_addr, moves, pattern_addr, fgColor, bgColor, logOp, interior_style, clip); #else DUNUSED(interior_style); if (vwk & 1) return -1; // Don't know about any special fills // Allocate arrays for data if (!AllocPoints(n) || !AllocIndices(moves) || !AllocCrossings(200)) return -1; uint16 pattern[16]; for(int i = 0; i < 16; ++i) pattern[i] = ReadInt16(pattern_addr + i * 2); int cliparray[4]; int* cliprect = 0; if (clip) { // Clipping is not off cliprect = cliparray; cliprect[0] = (int16)ReadInt32(clip); cliprect[1] = (int16)ReadInt32(clip + 4); cliprect[2] = (int16)ReadInt32(clip + 8); cliprect[3] = (int16)ReadInt32(clip + 12); D2(bug("fVDI: %s %d,%d:%d,%d", "clipFillTO", cliprect[0], cliprect[1], cliprect[2], cliprect[3])); } Points p(alloc_point); int16* index = alloc_index; int16* crossing = alloc_crossing; for(int i = 0; i < n; ++i) { p[i][0] = (int16)ReadInt16(points_addr + i * 4); p[i][1] = (int16)ReadInt16(points_addr + i * 4 + 2); } bool indices = moves; for(int i = 0; i < moves; ++i) index[i] = (int16)ReadInt16(index_addr + i * 2); if (!n) return 1; if (!surface) { return 1; } if (!indices) { if ((p[0][0] == p[n - 1][0]) && (p[0][1] == p[n - 1][1])) n--; } else { moves--; if (index[moves] == -4) moves--; if (index[moves] == -2) moves--; } int miny = p[0][1]; int maxy = miny; for(int i = 1; i < n; ++i) { int16 y = p[i][1]; if (y < miny) { miny = y; } if (y > maxy) { maxy = y; } } if (cliprect) { if (miny < cliprect[1]) miny = cliprect[1]; if (maxy > cliprect[3]) maxy = cliprect[3]; } int minx = 1000000; int maxx = -1000000; for(int16 y = miny; y <= maxy; ++y) { int ints = 0; int16 x1 = 0; // Make the compiler happy with some initializations int16 y1 = 0; int16 x2 = 0; int16 y2 = 0; int move_n = 0; int movepnt = 0; if (indices) { move_n = moves; movepnt = (index[move_n] + 4) / 2; x2 = p[0][0]; y2 = p[0][1]; } else { x1 = p[n - 1][0]; y1 = p[n - 1][1]; } for(int i = indices; i < n; ++i) { if (EnoughCrossings(ints + 1) || AllocCrossings(ints + 1)) crossing = alloc_crossing; else break; // At least something will get drawn if (indices) { x1 = x2; y1 = y2; } x2 = p[i][0]; y2 = p[i][1]; if (indices) { if (i == movepnt) { if (--move_n >= 0) movepnt = (index[move_n] + 4) / 2; else movepnt = -1; // Never again equal to n continue; } } if (y1 < y2) { if ((y >= y1) && (y < y2)) { crossing[ints++] = SMUL_DIV((y - y1), (x2 - x1), (y2 - y1)) + x1; } } else if (y1 > y2) { if ((y >= y2) && (y < y1)) { crossing[ints++] = SMUL_DIV((y - y2), (x1 - x2), (y1 - y2)) + x2; } } if (!indices) { x1 = x2; y1 = y2; } } for(int i = 0; i < ints - 1; ++i) { for(int j = i + 1; j < ints; ++j) { if (crossing[i] > crossing[j]) { int16 tmp = crossing[i]; crossing[i] = crossing[j]; crossing[j] = tmp; } } } x1 = cliprect[0]; x2 = cliprect[2]; for(int i = 0; i < ints - 1; i += 2) { y1 = crossing[i]; // Really x-values, but... y2 = crossing[i + 1]; if (y1 < x1) y1 = x1; if (y2 > x2) y2 = x2; if (y1 <= y2) { hsFillArea(y1, y, y2 - y1 + 1, 1, pattern, fgColor, bgColor, logOp); if (y1 < minx) minx = y1; if (y2 > maxx) maxx = y2; } } } return 1; #endif } int32 SoftVdiDriver::drawText(memptr vwk, memptr text, uint32 length, int32 dst_x, int32 dst_y, memptr font, uint32 w, uint32 h, uint32 fgColor, uint32 bgColor, uint32 logOp, memptr clip) { DUNUSED(vwk); DUNUSED(text); DUNUSED(length); DUNUSED(dst_x); DUNUSED(dst_y); DUNUSED(font); DUNUSED(w); DUNUSED(h); DUNUSED(fgColor); DUNUSED(bgColor); DUNUSED(logOp); DUNUSED(clip); return 0; } void SoftVdiDriver::getHwColor(uint16 index, uint32 red, uint32 green, uint32 blue, memptr hw_value) { if (!surface) { return; } SDL_Surface *sdl_surf = surface->getSdlSurface(); if (!sdl_surf) { return; } if (surface->getBpp() == 8) { WriteInt32( hw_value, index ); } else { int r = (red*255 + 500) / 1000; int g = (green*255 + 500) / 1000; int b = (blue*255 + 500) / 1000; WriteInt32( hw_value, SDL_MapRGB(sdl_surf->format, r,g,b)); } } /** * Set palette colour (hooked into the c_set_colors driver function by STanda) * * set_color_hook * 4(a7) paletteIndex * 8(a7) red component byte value * 10(a7) green component byte value * 12(a7) blue component byte value **/ void SoftVdiDriver::setColor(memptr /*vwk*/, uint32 paletteIndex, uint32 red, uint32 green, uint32 blue) { if (!surface) { return; } if (surface->getBpp() != 8) { return; } SDL_Color color; color.r = (red*255 + 500) / 1000; color.g = (green*255 + 500) / 1000; color.b = (blue*255 + 500) / 1000; #if SDL_VERSION_ATLEAST(2, 0, 0) color.a = WINDOW_ALPHA; #endif surface->setPalette(&color, toTosColors(paletteIndex), 1); } int32 SoftVdiDriver::getFbAddr(void) { return 0; } /*--- Functions copied from hostscreen class ---*/ /** * This macro handles the endianity for 24 bit per item data **/ #if SDL_BYTEORDER == SDL_BIG_ENDIAN #define putBpp24Pixel( address, color ) \ { \ ((Uint8*)(address))[0] = ((color) >> 16) & 0xff; \ ((Uint8*)(address))[1] = ((color) >> 8) & 0xff; \ ((Uint8*)(address))[2] = (color) & 0xff; \ } #define getBpp24Pixel( address ) \ ( ((uint32)(address)[0] << 16) | ((uint32)(address)[1] << 8) | (uint32)(address)[2] ) #else #define putBpp24Pixel( address, color ) \ { \ ((Uint8*)(address))[0] = (color) & 0xff; \ ((Uint8*)(address))[1] = ((color) >> 8) & 0xff; \ ((Uint8*)(address))[2] = ((color) >> 16) & 0xff; \ } #define getBpp24Pixel( address ) \ ( ((uint32)(address)[2] << 16) | ((uint32)(address)[1] << 8) | (uint32)(address)[0] ) #endif uint32 SoftVdiDriver::hsGetPixel( int x, int y ) { uint32 color = 0; if ( x < 0 || x >= surface->getWidth() || y < 0 || y >= surface->getHeight() ) return color; SDL_Surface *sdl_surf = surface->getSdlSurface(); int bpp; uint8 *p; /* Get destination format */ bpp = sdl_surf->format->BytesPerPixel; p = (uint8 *)sdl_surf->pixels + y * sdl_surf->pitch + x * bpp; switch(bpp) { case 1: color = (uint32)(*(uint8 *)p); break; case 2: color = (uint32)(*(uint16 *)p); break; case 3: // FIXME maybe some & problems? and endian color = getBpp24Pixel( p ); break; case 4: color = *(uint32 *)p; break; } /* switch */ return color; } void SoftVdiDriver::hsPutPixel( int x, int y, uint32 color ) { if ( x < 0 || x >= surface->getWidth() || y < 0 || y >= surface->getHeight() ) return; SDL_Surface *sdl_surf = surface->getSdlSurface(); int bpp; uint8 *p; /* Get destination format */ bpp = sdl_surf->format->BytesPerPixel; p = (uint8 *)sdl_surf->pixels + y * sdl_surf->pitch + x * bpp; switch(bpp) { case 1: *p = color; break; case 2: *(uint16 *)p = color; break; case 3: putBpp24Pixel( p, color ); break; case 4: *(uint32 *)p = color; break; } /* switch */ } void SoftVdiDriver::hsFillArea( int x, int y, int w, int h, uint16 *pattern, uint32 fgColor, uint32 bgColor, uint16 logOp ) { hsGfxBoxColorPattern( x, y, w, h, pattern, fgColor, bgColor, logOp ); } /** * Derived from the SDL_gfxPrimitives::boxColor(). * The colors are in the destination surface format here. * The trivial cases optimalization removed. * * @author STanda **/ void SoftVdiDriver::hsGfxBoxColorPattern( int x, int y, int w, int h, uint16 *areaPattern, uint32 fgColor, uint32 bgColor, uint16 logOp ) { uint8 *pixel, *pixellast; int16 pixx, pixy; int16 i; int y0 = y; int16 dx=w; int16 dy=h; if (!surface) { return; } SDL_Surface *sdl_surf = surface->getSdlSurface(); if (!sdl_surf) { return; } /* More variable setup */ pixx = sdl_surf->format->BytesPerPixel; pixy = sdl_surf->pitch; pixel = ((uint8*)sdl_surf->pixels) + pixx * (int32)x + pixy * (int32)y; pixellast = pixel + pixy*dy; // STanda // FIXME here the pattern should be checked out of the loops for performance // but for now it is good enough (if there is no pattern -> another switch?) /* Draw */ switch(surface->getBpp()) { case 8: pixy -= (pixx*dx); switch (logOp) { case MD_REPLACE: for (; pixelsetDirtyRect(x,y0,w,h); } void SoftVdiDriver::hsBlitArea( int sx, int sy, int dx, int dy, int w, int h ) { SDL_Rect srcrect; SDL_Rect dstrect; SDL_Surface *sdl_surf = surface->getSdlSurface(); if (sdl_buggy_blitsurface) { SDL_Surface *a_surf; a_surf = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, sdl_surf->format->BitsPerPixel, sdl_surf->format->Rmask, sdl_surf->format->Gmask, sdl_surf->format->Bmask, sdl_surf->format->Amask); if (a_surf) { if (sdl_surf->format->BitsPerPixel<=8) { #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_SetPaletteColors(a_surf->format->palette, sdl_surf->format->palette->colors, 0, 256); #else SDL_SetPalette(a_surf, SDL_LOGPAL, sdl_surf->format->palette->colors, 0, 256); #endif } srcrect.x = sx; srcrect.y = sy; dstrect.x = 0; dstrect.y = 0; srcrect.w = dstrect.w = w; srcrect.h = dstrect.h = h; SDL_BlitSurface(sdl_surf, &srcrect, a_surf, &dstrect); srcrect.x = 0; srcrect.y = 0; dstrect.x = dx; dstrect.y = dy; SDL_BlitSurface(a_surf, &srcrect, sdl_surf, &dstrect); SDL_FreeSurface(a_surf); } } else { srcrect.x = sx; srcrect.y = sy; dstrect.x = dx; dstrect.y = dy; srcrect.w = dstrect.w = w; srcrect.h = dstrect.h = h; SDL_BlitSurface(sdl_surf, &srcrect, sdl_surf, &dstrect); } surface->setDirtyRect(dx,dy,w,h); } /* Non-alpha line drawing code adapted from routine */ /* by Pete Shinners, pete@shinners.org */ /* Originally from pygame, http://pygame.seul.org */ #define lineloop(putfg, putbg) \ switch (vec) \ { \ case 0: \ /* drawing from bottom left to top right */ \ if (pattern == 0xffff && (logOp == MD_REPLACE || logOp == MD_TRANS)) \ { \ for (;;) { \ \ if (!clipped(x, y, cliprect)) \ { \ putfg; \ } \ if (--diff == 0) \ break; \ if (x1 >= 0) \ { \ ++x, pixel += pixx; \ x1 += dy; \ } \ if (x1 < 0) \ { \ --y, pixel -= pixy; \ x1 += dx; \ } \ } \ } else { \ for (;; ppos++) { \ \ if (!clipped(x, y, cliprect)) \ { \ if ( ( pattern & ( 1 << ( (ppos) & 0xf ) )) != 0 ) \ { \ putfg; \ } else { \ putbg; \ } \ } \ if (--diff == 0) \ break; \ if (x1 >= 0) \ { \ ++x, pixel += pixx; \ x1 += dy; \ } \ if (x1 < 0) \ { \ --y, pixel -= pixy; \ x1 += dx; \ } \ } \ } \ break; \ case 1: \ /* drawing from bottom right to top left */ \ if (pattern == 0xffff && (logOp == MD_REPLACE || logOp == MD_TRANS)) \ { \ for (;;) { \ \ if (!clipped(x, y, cliprect)) \ { \ putfg; \ } \ if (--diff == 0) \ break; \ if (x1 >= 0) \ { \ --x, pixel -= pixx; \ x1 += dy; \ } \ if (x1 < 0) \ { \ --y, pixel -= pixy; \ x1 += dx; \ } \ } \ } else { \ for (;; ppos++) { \ \ if (!clipped(x, y, cliprect)) \ { \ if ( ( pattern & ( 1 << ( (ppos) & 0xf ) )) != 0 ) \ { \ putfg; \ } else { \ putbg; \ } \ } \ if (--diff == 0) \ break; \ if (x1 >= 0) \ { \ --x, pixel -= pixx; \ x1 += dy; \ } \ if (x1 < 0) \ { \ --y, pixel -= pixy; \ x1 += dx; \ } \ } \ } \ break; \ case 2: \ /* drawing from top left to bottom right */ \ if (pattern == 0xffff && (logOp == MD_REPLACE || logOp == MD_TRANS)) \ { \ for (;;) { \ \ if (!clipped(x, y, cliprect)) \ { \ putfg; \ } \ if (--diff == 0) \ break; \ if (x1 >= 0) \ { \ ++x, pixel += pixx; \ x1 += dy; \ } \ if (x1 < 0) \ { \ ++y, pixel += pixy; \ x1 += dx; \ } \ } \ } else { \ for (;; ppos++) { \ \ if (!clipped(x, y, cliprect)) \ { \ if ( ( pattern & ( 1 << ( (ppos) & 0xf ) )) != 0 ) \ { \ putfg; \ } else { \ putbg; \ } \ } \ if (--diff == 0) \ break; \ if (x1 >= 0) \ { \ ++x, pixel += pixx; \ x1 += dy; \ } \ if (x1 < 0) \ { \ ++y, pixel += pixy; \ x1 += dx; \ } \ } \ } \ break; \ case 3: \ /* drawing from top right to bottom left */ \ if (pattern == 0xffff && (logOp == MD_REPLACE || logOp == MD_TRANS)) \ { \ for (;;) { \ \ if (!clipped(x, y, cliprect)) \ { \ putfg; \ } \ if (--diff == 0) \ break; \ if (x1 >= 0) \ { \ --x, pixel -= pixx; \ x1 += dy; \ } \ if (x1 < 0) \ { \ ++y, pixel += pixy; \ x1 += dx; \ } \ } \ } else { \ for (;; ppos++) { \ \ if (!clipped(x, y, cliprect)) \ { \ if ( ( pattern & ( 1 << ( (ppos) & 0xf ) )) != 0 ) \ { \ putfg; \ } else { \ putbg; \ } \ } \ if (--diff == 0) \ break; \ if (x1 >= 0) \ { \ --x, pixel -= pixx; \ x1 += dy; \ } \ if (x1 < 0) \ { \ ++y, pixel += pixy; \ x1 += dx; \ } \ } \ } \ break; \ } void SoftVdiDriver::hsDrawLine( int x1, int y1, int x2, int y2, uint16 pattern, uint32 fgColor, uint32 bgColor, uint16 logOp, int cliprect[]) { int16 pixx, pixy; int16 x, y; int16 dx, dy; uint8 *pixel; uint8 ppos; int diff; int vec; /* Test for special cases of straight lines or single point */ if (x1 == x2) { if (y1 < y2) { gfxVLineColor(x1, y1, y2, pattern, fgColor, bgColor, logOp, cliprect); } else if (y1 > y2) { gfxVLineColor(x1, y2, y1, pattern, fgColor, bgColor, logOp, cliprect); } else { if (!clipped(x1, y1, cliprect)) { switch (logOp) { case MD_REPLACE: hsPutPixel( x1, y1, pattern ? fgColor : bgColor ); break; case MD_TRANS: if ( pattern ) hsPutPixel( x1, y1, fgColor ); break; case MD_XOR: if ( pattern ) hsPutPixel( x1, y1, ~ hsGetPixel( x1, y1 ) ); break; case MD_ERASE: if ( ! pattern ) hsPutPixel( x1, y1, fgColor ); break; } surface->setDirtyRect(x1,y1,1,1); } } return; } if (y1 == y2) { if (x1 < x2) { gfxHLineColor(x1, x2, y1, pattern, fgColor, bgColor, logOp, cliprect); } else if (x1 > x2) { gfxHLineColor(x2, x1, y1, pattern, fgColor, bgColor, logOp, cliprect); } else { /* x1 == x2; already catched above */ } return; } SDL_Surface *sdl_surf = surface->getSdlSurface(); if (!sdl_surf) { return; } D2(bug("CLn %3d,%3d,%3d,%3d", x1, x2, y1, y2)); /* Variable setup */ dx = x2 - x1; dy = y2 - y1; vec = 0; if (dx < 0) { dx = -dx; vec |= 1; } if (dy >= 0) { vec |= 2; dy = -dy; } diff = -dy; if (dx > diff) diff = dx; diff++; ppos = 0; surface->setDirtyLine(x1, y1, x2, y2); /* More variable setup */ pixx = sdl_surf->format->BytesPerPixel; pixy = sdl_surf->pitch; pixel = ((uint8*)sdl_surf->pixels) + pixx * x1 + pixy * y1; // D2(bug("ln pix pixx, pixy: %d,%d : %d,%d : %x, %d", sx, sy, dx, dy, pixx, pixy)); /* Draw */ x = x1; y = y1; x1 = (dx + dy) / 2; switch(surface->getBpp()) { case 8: switch (logOp) { case MD_REPLACE: lineloop(*(uint8*)pixel = fgColor, *(uint8*)pixel = bgColor); break; case MD_TRANS: lineloop(*(uint8*)pixel = fgColor, ); break; case MD_XOR: lineloop(*(uint8*)pixel = ~(*(uint8*)pixel), ); break; case MD_ERASE: lineloop(, *(uint8*)pixel = fgColor); break; } break; case 15: case 16: switch (logOp) { case MD_REPLACE: lineloop(*(uint16*)pixel = fgColor, *(uint16*)pixel = bgColor); break; case MD_TRANS: lineloop(*(uint16*)pixel = fgColor, ); break; case MD_XOR: lineloop(*(uint16*)pixel = ~(*(uint16*)pixel), ); break; case MD_ERASE: lineloop(, *(uint16*)pixel = fgColor); break; } break; case 24: switch (logOp) { case MD_REPLACE: lineloop(putBpp24Pixel(pixel, fgColor), putBpp24Pixel(pixel, bgColor)); break; case MD_TRANS: lineloop(putBpp24Pixel(pixel, fgColor), ); break; case MD_XOR: lineloop(putBpp24Pixel(pixel, getBpp24Pixel( pixel )), ); break; case MD_ERASE: lineloop(, putBpp24Pixel(pixel, fgColor)); break; } break; default: /* case 4 */ switch (logOp) { case MD_REPLACE: lineloop(*(uint32*)pixel = fgColor, *(uint32*)pixel = bgColor); break; case MD_TRANS: lineloop(*(uint32*)pixel = fgColor, ); break; case MD_XOR: lineloop(*(uint32*)pixel = ~(*(uint32*)pixel), ); break; case MD_ERASE: lineloop(, *(uint32*)pixel = fgColor); break; } break; } } void SoftVdiDriver::gfxHLineColor ( int16 x1, int16 x2, int16 y, uint16 pattern, uint32 fgColor, uint32 bgColor, uint16 logOp, int cliprect[] ) { uint8 *pixel,*pixellast; int pixx, pixy; int16 w; uint8 ppos; /* Calculate width */ if (x1 < cliprect[0]) x1 = cliprect[0]; if (y < cliprect[1]) return; if (x2 > cliprect[2]) x2 = cliprect[2]; if (y > cliprect[3]) return; w=x2-x1+1; /* Sanity check on width */ if (w<=0) return; SDL_Surface *sdl_surf = surface->getSdlSurface(); if (!sdl_surf) { return; } if (pattern == 0xffff && (logOp == MD_REPLACE || logOp == MD_TRANS)) { SDL_Rect rect; rect.x = x1; rect.y = y; rect.w = w; rect.h = 1; SDL_FillRect(sdl_surf, &rect, fgColor); surface->setDirtyLine(x1, y, x2, y); return; } /* More variable setup */ pixx = sdl_surf->format->BytesPerPixel; pixy = sdl_surf->pitch; pixel = ((uint8*)sdl_surf->pixels) + pixx * (int)x1 + pixy * (int)y; ppos = 0; D2(bug("HLn %3d,%3d,%3d", x1, x2, y)); /* Draw */ switch(surface->getBpp()) { case 8: pixellast = pixel + w; switch (logOp) { case MD_REPLACE: for (; pixelsetDirtyLine(x1, y, x2, y); } void SoftVdiDriver::gfxVLineColor( int16 x, int16 y1, int16 y2, uint16 pattern, uint32 fgColor, uint32 bgColor, uint16 logOp, int cliprect[] ) { uint8 *pixel, *pixellast; int pixx, pixy; int16 h; uint8 ppos; /* Calculate height */ if (x < cliprect[0]) return; if (y1 < cliprect[1]) y1 = cliprect[1]; if (x > cliprect[2]) return; if (y2 > cliprect[3]) y2 = cliprect[3]; h=y2-y1+1; /* Sanity check on height */ if (h<=0) return; SDL_Surface *sdl_surf = surface->getSdlSurface(); if (!sdl_surf) { return; } if (pattern == 0xffff && (logOp == MD_REPLACE || logOp == MD_TRANS)) { SDL_Rect rect; rect.x = x; rect.y = y1; rect.w = 1; rect.h = h; SDL_FillRect(sdl_surf, &rect, fgColor); surface->setDirtyLine(x, y1, x, y2); return; } ppos = 0; D2(bug("VLn %3d,%3d,%3d", x, y1, y2)); /* More variable setup */ pixx = sdl_surf->format->BytesPerPixel; pixy = sdl_surf->pitch; pixel = ((uint8*)sdl_surf->pixels) + pixx * (int)x + pixy * (int)y1; pixellast = pixel + pixy*h; /* Draw */ switch(surface->getBpp()) { case 8: switch (logOp) { case MD_REPLACE: for (; pixelsetDirtyLine(x, y1, x, y2); } aranym-1.1.0/src/natfeat/nfvdi_opengl.h0000664000175000017500000001022513454637622016236 0ustar joyjoy/* NatFeat VDI driver, OpenGL renderer ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFVDI_OPENGL_H #define NFVDI_OPENGL_H /*--- Includes ---*/ #include "parameters.h" #include "SDL_opengl_wrapper.h" /* * duplicated from SDL_opengl_wrapper.h; * for some unknown reason, on old MacOS 10.6.8, * with Xcode 3.2.6, those are not included there */ #if defined(__MACOSX__) #include /* Header File For The OpenGL Library */ #include /* Header File For The GLU Library */ #elif defined(__MACOS__) #include /* Header File For The OpenGL Library */ #include /* Header File For The GLU Library */ #else #include /* Header File For The OpenGL Library */ #include /* Header File For The GLU Library */ #endif /*--- Defines ---*/ /*--- Types ---*/ /*--- Class ---*/ class OpenGLVdiDriver : public VdiDriver { public: OpenGLVdiDriver(); ~OpenGLVdiDriver(); protected: void restoreMouseBackground(void); void saveMouseBackground(int16 x, int16 y, int16 width, int16 height); int32 openWorkstation(void); int32 closeWorkstation(void); int32 getPixel(memptr vwk, memptr src, int32 x, int32 y); int32 putPixel(memptr vwk, memptr dst, int32 x, int32 y, uint32 color); int32 drawMouse(memptr wk, int32 x, int32 y, uint32 mode, uint32 data, uint32 hot_x, uint32 hot_y, uint32 fgColor, uint32 bgColor, uint32 mouse_type); int32 expandArea(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp, uint32 fgColor, uint32 bgColor); int32 fillArea(memptr vwk, uint32 x_, uint32 y_, int32 w, int32 h, memptr pattern_address, uint32 fgColor, uint32 bgColor, uint32 logOp, uint32 interior_style); void fillArea(uint32 x, uint32 y, uint32 w, uint32 h, uint16* pattern, uint32 fgColor, uint32 bgColor, uint32 logOp); int32 drawLine(memptr vwk, uint32 x1_, uint32 y1_, uint32 x2_, uint32 y2_, uint32 pattern, uint32 fgColor, uint32 bgColor, uint32 logOp, memptr clip); int32 fillPoly(memptr vwk, memptr points_addr, int n, memptr index_addr, int moves, memptr pattern_addr, uint32 fgColor, uint32 bgColor, uint32 logOp, uint32 interior_style, memptr clip); int32 drawText(memptr vwk, memptr text, uint32 length, int32 dst_x, int32 dst_y, memptr font, uint32 w, uint32 h, uint32 fgColor, uint32 bgColor, uint32 logOp, memptr clip); void getHwColor(uint16 index, uint32 red, uint32 green, uint32 blue, memptr hw_value); void setColor(memptr vwk, uint32 paletteIndex, uint32 red, uint32 green, uint32 blue); int32 getFbAddr(void); int32 blitArea_M2S(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp); int32 blitArea_S2M(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp); int32 blitArea_S2S(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp); private: GLuint mouse_tex_obj; uint32 mouse_texture[16][16]; int drawSingleLine(int x1, int y1, int x2, int y2, uint16 pattern, uint32 fgColor, uint32 bgColor, int logOp); int drawTableLine(memptr table, int length, uint16 pattern, uint32 fgColor, uint32 bgColor, int logOp); int drawMoveLine(memptr table, int length, memptr index, int moves, uint16 pattern, uint32 fgColor, uint32 bgColor, int logOp); /* Polygon tesselator */ GLUtesselator *tess; }; #endif /* NFVDI_OPENGL_H */ aranym-1.1.0/src/natfeat/nfvdi_opengl.cpp0000664000175000017500000010166613454637622016603 0ustar joyjoy/* NatFeat VDI driver, OpenGL renderer ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "hostscreen.h" #include "host.h" #include "nfvdi.h" #include "nfvdi_opengl.h" #define DEBUG 0 #include "debug.h" #include "dyngl.h" #define ENABLE_GLU_TESSELATOR 0 /*--- Defines ---*/ #define EINVFN -32 static const GLenum logicOps[16]={ GL_CLEAR, GL_AND, GL_AND_REVERSE, GL_COPY, GL_AND_INVERTED, GL_NOOP, GL_XOR, GL_OR, GL_NOR, GL_EQUIV, GL_INVERT, GL_OR_REVERSE, GL_COPY_INVERTED, GL_OR_INVERTED, GL_NAND, GL_SET }; /*--- Types ---*/ /*--- Variables ---*/ /*--- Public functions ---*/ OpenGLVdiDriver::OpenGLVdiDriver() { mouse_tex_obj=0; memset(mouse_texture, 0, sizeof(mouse_texture)); tess=NULL; } OpenGLVdiDriver::~OpenGLVdiDriver() { if (mouse_tex_obj>0) { gl.DeleteTextures(1, &mouse_tex_obj); mouse_tex_obj=0; } #if ENABLE_GLU_TESSELATOR if (tess) { gluDeleteTess(tess); tess=NULL; } #endif } /*--- Private functions ---*/ int32 OpenGLVdiDriver::openWorkstation(void) { host->video->EnableOpenGLVdi(); if (!bx_options.nfvdi.use_host_mouse_cursor) { if (mouse_tex_obj==0) { gl.GenTextures(1, &mouse_tex_obj); } } return VdiDriver::openWorkstation(); } int32 OpenGLVdiDriver::closeWorkstation(void) { host->video->DisableOpenGLVdi(); if (mouse_tex_obj>0) { gl.DeleteTextures(1, &mouse_tex_obj); mouse_tex_obj=0; } return VdiDriver::closeWorkstation(); } /** * Get a coloured pixel. * * c_read_pixel(Virtual *vwk, MFDB *mfdb, long x, long y) * read_pixel * In: a1 VDI struct, source MFDB * d1 x * d2 y * * Only one mode here. * * Note that a1 does not point to the VDI struct, but to a place in memory * where the VDI struct pointer can be found. Four bytes beyond that address * is a pointer to the destination MFDB. * * Since an MFDB is passed, the source is not necessarily the screen. **/ int32 OpenGLVdiDriver::getPixel(memptr vwk, memptr src, int32 x, int32 y) { Uint32 color; if (vwk & 1) return 0; if (src) return VdiDriver::getPixel(vwk, src, x, y); // D(bug("glvdi: getpixel")); gl.ReadPixels(x,y,1,1, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, &color); /* We have a RGBA color in host byte order, convert it to ARGB */ color >>= 8; /* Mask out alpha bits */ return (color & 0x00ffffffUL); } /** * Set a coloured pixel. * * c_write_pixel(Virtual *vwk, MFDB *mfdb, long x, long y, long colour) * write_pixel * In: a1 VDI struct, destination MFDB * d0 colour * d1 x or table address * d2 y or table length (high) and type (low) * XXX: ? * * This function has two modes: * - single pixel * - table based multi pixel (special mode 0 (low word of 'y')) * * Note that a1 does not point to the VDI struct, but to a place in memory * where the VDI struct pointer can be found. Four bytes beyond that address * is a pointer to the destination MFDB. * * As usual, only the first one is necessary, and a return with d0 = -1 * signifies that a special mode should be broken down to the basic one. * * Since an MFDB is passed, the destination is not necessarily the screen. **/ int32 OpenGLVdiDriver::putPixel(memptr vwk, memptr dst, int32 x, int32 y, uint32 color) { if (vwk & 1) return 0; if (dst) return VdiDriver::putPixel(vwk, dst, x, y, color); gl.Begin(GL_POINTS); gl.Color3ub((color>>16)&0xff, (color>>8)&0xff, color&0xff); gl.Vertex2i(x,y); gl.End(); // D(bug("glvdi: putpixel(%d,%d,0x%08x)", x,y,color)); return 1; } /** * Draw the mouse * * Draw a coloured line between two points. * * c_mouse_draw(Workstation *wk, long x, long y, Mouse *mouse) * mouse_draw * In: a1 Pointer to Workstation struct * d0/d1 x,y * d2 0 - move shown 1 - move hidden 2 - hide 3 - show >7 - change shape (pointer to mouse struct) * * Unlike all the other functions, this does not receive a pointer to a VDI * struct, but rather one to the screen's workstation struct. This is * because the mouse handling concerns the screen as a whole (and the * routine is also called from inside interrupt routines). * * The Mouse structure pointer doubles as a mode variable. If it is a small * number, the mouse's state is supposed to change somehow, while a large * number is a pointer to a new mouse shape. * * This is currently not a required function, but it probably should be. * The fallback handling is not done in the usual way, and to make it * at least somewhat usable, the mouse pointer is reduced to 4x4 pixels. * * typedef struct Fgbg_ { * short background; * short foreground; * } Fgbg; * * typedef struct Mouse_ { * 0 short type; * 2 short hide; * struct position_ { * 4 short x; * 6 short y; * } position; * struct hotspot_ { * 8 short x; * 10 short y; * } hotspot; * 12 Fgbg colour; * 16 short mask[16]; * 48 short data[16]; * 80 void *extra_info; * } Mouse; **/ void OpenGLVdiDriver::restoreMouseBackground(void) { D(bug("restore >%d %d %d %d", Mouse.storage.x, Mouse.storage.y+Mouse.storage.height, Mouse.storage.width, Mouse.storage.height)); gl.RasterPos2i(Mouse.storage.x,Mouse.storage.y+Mouse.storage.height); gl.DrawPixels(Mouse.storage.width, Mouse.storage.height, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, &(Mouse.storage.background[0][0])); } void OpenGLVdiDriver::saveMouseBackground(int16 x, int16 y, int16 width, int16 height) { Mouse.storage.x = x; Mouse.storage.y = y; Mouse.storage.width = width; Mouse.storage.height = height; y = host->video->getHeight()-(y+height); D(bug("save <%d %d %d %d", x, y, width, height)); gl.ReadPixels( x, y, width, height, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, &(Mouse.storage.background[0][0]) ); } int OpenGLVdiDriver::drawMouse(memptr wk, int32 x, int32 y, uint32 mode, uint32 data, uint32 hot_x, uint32 hot_y, uint32 fgColor, uint32 bgColor, uint32 mouse_type) { if (bx_options.nfvdi.use_host_mouse_cursor) { return VdiDriver::drawMouse(wk,x,y,mode,data,hot_x,hot_y,fgColor,bgColor,mouse_type); } DUNUSED(wk); DUNUSED(fgColor); DUNUSED(bgColor); DUNUSED(mouse_type); switch (mode) { case 4: case 0: // move shown restoreMouseBackground(); break; case 5: case 1: // move hidden return 1; case 2: // hide restoreMouseBackground(); return 1; case 3: // show break; case 6: case 7: break; default: // change pointer shape { Uint16 *cur_data, *cur_mask; int mx,my; cur_data = (Uint16 *)Atari2HostAddr(data); cur_mask = (Uint16 *)Atari2HostAddr(mode); for (my=0;my<16;my++) { for (mx=0;mx<16;mx++) { Uint32 color=0xffffff00UL; /* white */ if (SDL_SwapBE16(cur_data[my]) & (1<video->getWidth(), maxy=host->video->getHeight(); x = (x>maxx ? maxx : (x<0 ? 0: x)); y = (y>maxy ? maxy : (y<0 ? 0: y)); saveMouseBackground(x,y,MIN(maxx-x, 16),MIN(maxy-y-1, 16)); gl.Enable(GL_TEXTURE_2D); gl.Enable(GL_BLEND); gl.BlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); /* Texture may have been unbound */ gl.BindTexture(GL_TEXTURE_2D, mouse_tex_obj); /* Render the textured quad */ gl.Begin(GL_QUADS); gl.TexCoord2f(0.0,0.0); gl.Vertex2i(x,y); gl.TexCoord2f(1.0,0.0); gl.Vertex2i(x+16,y); gl.TexCoord2f(1.0,1.0); gl.Vertex2i(x+16,y+16); gl.TexCoord2f(0.0,1.0); gl.Vertex2i(x,y+16); gl.End(); gl.Disable(GL_BLEND); gl.Disable(GL_TEXTURE_2D); return 1; } /** * Expand a monochrome area to a coloured one. * * c_expand_area(Virtual *vwk, MFDB *src, long src_x, long src_y, * MFDB *dst, long dst_x, long dst_y, * long w, long h, long operation, long colour) * expand_area * In: a1 VDI struct, destination MFDB, VDI struct, source MFDB * d0 height and width to move (high and low word) * d1-d2 source coordinates * d3-d4 destination coordinates * d6 background and foreground colour * d7 logic operation * * Only one mode here. * * Note that a1 does not point to the VDI struct, but to a place in memory * where the VDI struct pointer can be found. Four bytes beyond that address * is a pointer to the destination MFDB, and then comes a VDI struct * pointer again (the same) and a pointer to the source MFDB. * * Since MFDBs are passed, the screen is not necessarily involved. * * A return with 0 gives a fallback (normally pixel by pixel drawing by * the fVDI engine). * * typedef struct MFDB_ { * short *address; * short width; * short height; * short wdwidth; * short standard; * short bitplanes; * short reserved[3]; * } MFDB; **/ int32 OpenGLVdiDriver::expandArea(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp, uint32 fgColor, uint32 bgColor) { Uint8 *bitmap, *s, *d; int width, srcpitch, dstpitch, y; if (dest) return VdiDriver::expandArea(vwk, src, sx, sy, dest, dx, dy, w, h, logOp, fgColor, bgColor); /* Allocate temp space for monochrome bitmap */ width = (w + 8 + 31) & ~31; bitmap = (Uint8 *)malloc((width*h)>>3); if (bitmap==NULL) { return -1; } /* Copy the bitmap from source */ srcpitch = ReadInt16(src + MFDB_WDWIDTH) * 2; s = (Uint8 *)Atari2HostAddr(ReadInt32(src + MFDB_ADDRESS) + sy * srcpitch + (sx >> 3)); dstpitch = width>>3; d = bitmap + (dstpitch * (h-1)); for (y=0;y>3); s += srcpitch; d -= dstpitch; } if (logOp == 1) { /* First, the back color */ gl.Color3ub((bgColor>>16)&0xff,(bgColor>>8)&0xff,bgColor&0xff); gl.Begin(GL_QUADS); gl.Vertex2i(dx, dy); gl.Vertex2i(dx+w, dy); gl.Vertex2i(dx+w, dy+h); gl.Vertex2i(dx, dy+h); gl.End(); } gl.Scissor(dx, host->video->getHeight() - (dy + h), w, h); gl.Enable(GL_SCISSOR_TEST); gl.Enable(GL_COLOR_LOGIC_OP); if (logOp == 3) { gl.LogicOp(GL_XOR); gl.Color3ub(0xff,0xff,0xff); } else { gl.LogicOp(GL_COPY); gl.Color3ub((fgColor>>16)&0xff,(fgColor>>8)&0xff,fgColor&0xff); } gl.RasterPos2i(dx,dy+h-1); gl.Bitmap(w+8,h, sx & 7,0, 0,0, (const GLubyte *)bitmap); gl.Disable(GL_COLOR_LOGIC_OP); gl.Disable(GL_SCISSOR_TEST); free(bitmap); return 1; } /** * Fill a coloured area using a monochrome pattern. * * c_fill_area(Virtual *vwk, long x, long y, long w, long h, * short *pattern, long colour, long mode, long interior_style) * fill_area * In: a1 VDI struct * d0 height and width to fill (high and low word) * d1 x or table address * d2 y or table length (high) and type (low) * d3 pattern address * d4 colour * * This function has two modes: * - single block to fill * - table based y/x1/x2 spans to fill (special mode 0 (low word of 'y')) * * As usual, only the first one is necessary, and a return with d0 = -1 * signifies that a special mode should be broken down to the basic one. * * An immediate return with 0 gives a fallback (normally line based drawing * by the fVDI engine for solid fills, otherwise pixel by pixel). * A negative return will break down the special mode into separate calls, * with no more fallback possible. **/ int32 OpenGLVdiDriver::fillArea(memptr vwk, uint32 x_, uint32 y_, int32 w, int32 h, memptr pattern_addr, uint32 fgColor, uint32 bgColor, uint32 logOp, uint32 /*interior_style*/) { if (host->video->getBpp() == 8) { fgColor &= 0xff; bgColor &= 0xff; } uint16 pattern[16]; for(int i = 0; i < 16; ++i) pattern[i] = ReadInt16(pattern_addr + i * 2); memptr table = 0; int x = x_; int y = y_; if ((long)vwk & 1) { if ((y_ & 0xffff) != 0) return -1; // Don't know about this kind of table operation table = (memptr)x_; h = (y_ >> 16) & 0xffff; vwk -= 1; } D(bug("glvdi: %s %d %d,%d:%d,%d : %d,%d p:%x, (fgc:%lx : bgc:%lx)", "fillArea", logOp, x, y, w, h, x + w - 1, x + h - 1, *pattern, fgColor, bgColor)); /* Perform rectangle fill. */ if (!table) { /* Generate the pattern */ uint32 gl_pattern[32]; int i; memset(gl_pattern,0, sizeof(gl_pattern)); for (i=0; i<32; i++) { gl_pattern[i] = (pattern[i&15]<<16)|pattern[i&15]; } /* First, the back color */ if (logOp == 1) { gl.Color3ub((bgColor>>16)&0xff,(bgColor>>8)&0xff,bgColor&0xff); gl.Begin(GL_QUADS); gl.Vertex2i(x,y); gl.Vertex2i(x+w,y); gl.Vertex2i(x+w,y+h); gl.Vertex2i(x,y+h); gl.End(); } gl.Enable(GL_COLOR_LOGIC_OP); if (logOp == 3) { gl.LogicOp(GL_XOR); gl.Color3ub(0xff,0xff,0xff); } else { gl.LogicOp(GL_COPY); gl.Color3ub((fgColor>>16)&0xff,(fgColor>>8)&0xff,fgColor&0xff); } /* Fill with fgColor */ gl.Enable(GL_POLYGON_STIPPLE); gl.PolygonStipple((const GLubyte *)gl_pattern); gl.Begin(GL_POLYGON); gl.Vertex2i(x,y); gl.Vertex2i(x+w,y); gl.Vertex2i(x+w,y+h); gl.Vertex2i(x,y+h); gl.End(); gl.Disable(GL_POLYGON_STIPPLE); D(bug("glvdi: fillarea, with polygon")); } else { for(h = h - 1; h >= 0; h--) { y = (int16)ReadInt16(table); table+=2; x = (int16)ReadInt16(table); table+=2; w = (int16)ReadInt16(table) - x + 1; table+=2; /* First, the back color */ if (logOp==1) { gl.Color3ub((bgColor>>16)&0xff,(bgColor>>8)&0xff,bgColor&0xff); gl.Begin(GL_LINES); gl.Vertex2i(x,y); gl.Vertex2i(x+w-1,y); gl.End(); } gl.Enable(GL_COLOR_LOGIC_OP); if (logOp == 3) { gl.LogicOp(GL_XOR); gl.Color3ub(0xff,0xff,0xff); } else { gl.LogicOp(GL_COPY); gl.Color3ub((fgColor>>16)&0xff,(fgColor>>8)&0xff,fgColor&0xff); } /* Fill with fgColor */ gl.Enable(GL_LINE_STIPPLE); gl.LineStipple(1,pattern[y&15]); gl.Begin(GL_LINES); gl.Vertex2i(x,y); gl.Vertex2i(x+w-1,y); gl.End(); gl.Disable(GL_LINE_STIPPLE); } D(bug("glvdi: fillarea, with horizontal lines")); } gl.Disable(GL_COLOR_LOGIC_OP); return 1; } void OpenGLVdiDriver::fillArea(uint32 x, uint32 y, uint32 w, uint32 h, uint16* pattern, uint32 fgColor, uint32 bgColor, uint32 logOp) { /* First, the back color */ if (logOp==1) { gl.Color3ub((bgColor>>16)&0xff,(bgColor>>8)&0xff,bgColor&0xff); gl.Begin(GL_LINES); gl.Vertex2i(x,y); gl.Vertex2i(x+w-1,y+h-1); gl.End(); } gl.Enable(GL_COLOR_LOGIC_OP); if (logOp == 3) { gl.LogicOp(GL_XOR); gl.Color3ub(0xff,0xff,0xff); } else { gl.LogicOp(GL_COPY); gl.Color3ub((fgColor>>16)&0xff,(fgColor>>8)&0xff,fgColor&0xff); } /* Fill with fgColor */ gl.Enable(GL_LINE_STIPPLE); gl.LineStipple(1,pattern[y&15]); gl.Begin(GL_LINES); gl.Vertex2i(x,y); gl.Vertex2i(x+w-1,y+h-1); gl.End(); gl.Disable(GL_LINE_STIPPLE); gl.Disable(GL_COLOR_LOGIC_OP); } /** * Blit an area * * c_blit_area(Virtual *vwk, MFDB *src, long src_x, long src_y, * MFDB *dst, long dst_x, long dst_y, * long w, long h, long operation) * blit_area * In: a1 VDI struct, destination MFDB, VDI struct, source MFDB * d0 height and width to move (high and low word) * d1-d2 source coordinates * d3-d4 destination coordinates * d7 logic operation * * Only one mode here. * * Note that a1 does not point to the VDI struct, but to a place in memory * where the VDI struct pointer can be found. Four bytes beyond that address * is a pointer to the destination MFDB, and then comes a VDI struct * pointer again (the same) and a pointer to the source MFDB. * * Since MFDBs are passed, the screen is not necessarily involved. * * A return with 0 gives a fallback (normally pixel by pixel drawing by the * fVDI engine). **/ int32 OpenGLVdiDriver::blitArea_M2S(memptr /*vwk*/, memptr src, int32 sx, int32 sy, memptr /*dest*/, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp) { int y; /* Clear rectangle ? */ if ((logOp==0) || (logOp==15)) { if (logOp==0) { gl.Color3ub(0,0,0); } else if (logOp==15) { gl.Color3ub(0xff,0xff,0xff); } gl.Begin(GL_QUADS); gl.Vertex2i(dx,dy); gl.Vertex2i(dx+w,dy); gl.Vertex2i(dx+w,dy+h); gl.Vertex2i(dx,dy+h); gl.End(); D(bug("glvdi: blit_m2s: clear rectangle")); return 1; } D(bug("glvdi: blit_m2s(%dx%d: %d,%d -> %d,%d, %d)",w,h,sx,sy,dx,dy,logOp)); uint32 planes = ReadInt16(src + MFDB_NPLANES); // MFDB *dest->bitplanes if ((planes!=16) && (planes!=32)) { D(bug("glvdi: blit_m2s: %d planes unsupported",planes)); return -1; } uint32 srcPitch = ReadInt16(src + MFDB_WDWIDTH) * planes * 2; // MFDB *dest->pitch Uint8 *srcAddress = Atari2HostAddr(ReadInt32(src)); srcAddress += sy * srcPitch; srcAddress += sx * (planes>>3); gl.Enable(GL_COLOR_LOGIC_OP); gl.LogicOp(logicOps[logOp]); for (y=0;y %d,%d, %d)",w,h,sx,sy,dx,dy,logOp)); uint32 planes = ReadInt16(dest + MFDB_NPLANES); // MFDB *dest->bitplanes if ((planes!=16) && (planes!=32)) { D(bug("glvdi: blit_s2m: %d planes unsupported",planes)); return -1; } if ((logOp!=0) && (logOp!=3) && (logOp!=15)) { bug("glvdi: blit_s2m: logOp %d unsupported",logOp); return -1; } uint32 destPitch = ReadInt16(dest + MFDB_WDWIDTH) * planes * 2; // MFDB *dest->pitch Uint8 *destAddress = Atari2HostAddr(ReadInt32(dest)); destAddress += dy * destPitch; destAddress += dx * (planes>>3); for (y=0;y>3)); break; case 15: memset(destAddress, 0xff, w*(planes>>3)); break; case 3: switch(planes) { case 16: #if SDL_BYTEORDER == SDL_LIL_ENDIAN gl.PixelStorei(GL_PACK_SWAP_BYTES, GL_TRUE); #endif gl.ReadPixels(sx,host->video->getHeight()-(sy+y+1), w,1, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, destAddress); #if SDL_BYTEORDER == SDL_LIL_ENDIAN gl.PixelStorei(GL_PACK_SWAP_BYTES, GL_FALSE); #endif break; case 32: gl.ReadPixels(sx,host->video->getHeight()-(sy+y+1), w,1, GL_BGRA, #if SDL_BYTEORDER == SDL_LIL_ENDIAN GL_UNSIGNED_INT_8_8_8_8, #else GL_UNSIGNED_INT_8_8_8_8_REV, #endif destAddress); break; } break; } if (planes==32) { /* Clear alpha value */ for(Uint32 n = 0; n < destPitch; n += 4) { destAddress[n] = 0; } } destAddress += destPitch; } return 1; } int32 OpenGLVdiDriver::blitArea_S2S(memptr /*vwk*/, memptr /*src*/, int32 sx, int32 sy, memptr /*dest*/, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp) { /* Copy a rectangle on itself ? */ if ((sx==dx) && (sy==dy) && (logOp==3)) { D(bug("glvdi: blit_s2s: self copy")); return 1; } /* Clear rectangle ? */ if ((logOp==0) || (logOp==15)) { if (logOp==0) { gl.Color3ub(0,0,0); } else if (logOp==15) { gl.Color3ub(0xff,0xff,0xff); } gl.Begin(GL_QUADS); gl.Vertex2i(dx,dy); gl.Vertex2i(dx+w-1,dy); gl.Vertex2i(dx+w-1,dy+h-1); gl.Vertex2i(dx,dy+h-1); gl.End(); D(bug("glvdi: blit_s2s: clear rectangle")); return 1; } gl.Enable(GL_COLOR_LOGIC_OP); gl.LogicOp(logicOps[logOp & 15]); #if 0 gl.RasterPos2i(dx,dy+h-1); gl.CopyPixels(sx,host->video->getHeight()-(sy+h-1), w,h, GL_COLOR); #else if (sy >= dy) { if (dy + h == (int32)host->video->getHeight()) h--; gl.RasterPos2i(dx,dy+h); gl.CopyPixels(sx,host->video->getHeight()-(sy+h), w,h, GL_COLOR); } else { int srcy = host->video->getHeight()-(sy+h); if (dy + h < (int32)host->video->getHeight()) { gl.RasterPos2i(dx,dy+h); gl.CopyPixels(sx,srcy, w,h, GL_COLOR); } else { gl.RasterPos2i(dx, host->video->getHeight() - 1); gl.CopyPixels(sx,srcy+1, w,h, GL_COLOR); } } #endif gl.Disable(GL_COLOR_LOGIC_OP); return 1; } /** * Draw a coloured line between two points * * c_draw_line(Virtual *vwk, long x1, long y1, long x2, long y2, * long pattern, long colour) * draw_line * In: a1 VDI struct * d0 logic operation * d1 x1 or table address * d2 y1 or table length (high) and type (low) * d3 x2 or move point count * d4 y2 or move index address * d5 pattern * d6 colour * * This function has three modes: * - single line * - table based coordinate pairs (special mode 0 (low word of 'y1')) * - table based coordinate pairs+moves (special mode 1) * * As usual, only the first one is necessary, and a return with d0 = -1 * signifies that a special mode should be broken down to the basic one. * * An immediate return with 0 gives a fallback (normally pixel by pixel * drawing by the fVDI engine). * A negative return will break down the special modes into separate calls, * with no more fallback possible. **/ int OpenGLVdiDriver::drawSingleLine(int x1, int y1, int x2, int y2, uint16 pattern, uint32 fgColor, uint32 bgColor, int logOp) { if ((logOp == 1) && (pattern != 0xffff)) { /* First, the back color */ gl.Color3ub((bgColor>>16)&0xff,(bgColor>>8)&0xff,bgColor&0xff); if ((x1 == x2) && (y1 == y2)) { gl.Begin(GL_POINTS); gl.Vertex2i(x1,y1); gl.End(); } else { gl.Begin(GL_LINES); gl.Vertex2i(x1,y1); gl.Vertex2i(x2,y2); gl.End(); } } gl.Enable(GL_COLOR_LOGIC_OP); if (logOp == 3) { gl.LogicOp(GL_XOR); gl.Color3ub(0xff,0xff,0xff); } else { gl.LogicOp(GL_COPY); gl.Color3ub((fgColor>>16)&0xff,(fgColor>>8)&0xff,fgColor&0xff); } gl.Enable(GL_LINE_STIPPLE); gl.LineStipple(1,pattern); /* Draw with fgColor */ if ((x1 == x2) && (y1 == y2)) { gl.Begin(GL_POINTS); gl.Vertex2i(x1,y1); gl.End(); } else { gl.Begin(GL_LINES); gl.Vertex2i(x1,y1); gl.Vertex2i(x2,y2); gl.End(); } gl.Disable(GL_LINE_STIPPLE); gl.Disable(GL_COLOR_LOGIC_OP); D(bug("glvdi: drawline(%d,%d,%d,%d,0x%08x,0x%08x",x1,y1,x2,y2,fgColor,bgColor)); return 1; } int OpenGLVdiDriver::drawTableLine(memptr table, int length, uint16 pattern, uint32 fgColor, uint32 bgColor, int logOp) { int x, y, tmp_length; memptr tmp_table; if ((logOp == 1) && (pattern != 0xffff)) { /* First, the back color */ gl.Color3ub((bgColor>>16)&0xff,(bgColor>>8)&0xff,bgColor&0xff); tmp_length = length; tmp_table = table; if ((ReadInt16(table) == ReadInt16(table + length * 4 - 4)) && (ReadInt16(table + 2) == ReadInt16(table + length * 4 - 2))) { length--; gl.Begin(GL_LINE_LOOP); } else { gl.Begin(GL_LINE_STRIP); } for(; length > 0; length--) { x = (int16)ReadInt16(table); table += 2; y = (int16)ReadInt16(table); table += 2; gl.Vertex2i(x, y); } length = tmp_length; table = tmp_table; gl.End(); } gl.Enable(GL_COLOR_LOGIC_OP); if (logOp == 3) { gl.LogicOp(GL_XOR); gl.Color3ub(0xff,0xff,0xff); } else { gl.LogicOp(GL_COPY); gl.Color3ub((fgColor>>16)&0xff,(fgColor>>8)&0xff,fgColor&0xff); } gl.Enable(GL_LINE_STIPPLE); gl.LineStipple(1,pattern); /* Draw with fgColor */ if ((ReadInt16(table) == ReadInt16(table + length * 4 - 4)) && (ReadInt16(table + 2) == ReadInt16(table + length * 4 - 2))) { length--; gl.Begin(GL_LINE_LOOP); } else { gl.Begin(GL_LINE_STRIP); } for(; length > 0; length--) { x = (int16)ReadInt16(table); table += 2; y = (int16)ReadInt16(table); table += 2; gl.Vertex2i(x, y); } gl.End(); gl.Disable(GL_LINE_STIPPLE); gl.Disable(GL_COLOR_LOGIC_OP); D(bug("glvdi: drawTableLine(%d,0x%08x,0x%08x",length,fgColor,bgColor)); return 1; } int OpenGLVdiDriver::drawMoveLine(memptr table, int length, memptr index, int moves, uint16 pattern, uint32 fgColor, uint32 bgColor, int logOp) { int x1 = (int16)ReadInt16(table); table+=2; int y1 = (int16)ReadInt16(table); table+=2; moves *= 2; moves-=2; if ((int16)ReadInt16(index + moves) == -4) moves-=2; if ((int16)ReadInt16(index + moves) == -2) moves-=2; int movepnt = -1; if (moves >= 0) movepnt = ((int16)ReadInt16(index + moves) + 4) / 2; for(int n = 1; n < length; n++) { int x2 = (int16)ReadInt16(table); table+=2; int y2 = (int16)ReadInt16(table); table+=2; if (n == movepnt) { moves-=2; if (moves >= 0) movepnt = ((int16)ReadInt16(index + moves) + 4) / 2; else movepnt = -1; /* Never again equal to n */ x1 = x2; y1 = y2; continue; } drawSingleLine(x1, y1, x2, y2, pattern, fgColor, bgColor, logOp); x1 = x2; y1 = y2; } return 1; } int32 OpenGLVdiDriver::drawLine(memptr vwk, uint32 x1_, uint32 y1_, uint32 x2_, uint32 y2_, uint32 pattern, uint32 fgColor, uint32 bgColor, uint32 logOp, memptr clip) { int cx1,cy1,cx2,cy2; if (host->video->getBpp() == 8) { fgColor &= 0xff; bgColor &= 0xff; } cx1=ReadInt32(clip); cy1=ReadInt32(clip+4); cx2=ReadInt32(clip+8); cy2=ReadInt32(clip+12); gl.Scissor(cx1,host->video->getHeight()-(cy2+1),cx2-cx1+1,cy2-cy1+1); gl.Enable(GL_SCISSOR_TEST); memptr table = 0; memptr index = 0; int length = 0; int moves = 0; int16 x1 = x1_; int16 y1 = y1_; int16 x2 = x2_; int16 y2 = y2_; if (vwk & 1) { if ((unsigned)(y1 & 0xffff) > 1) return -1; /* Don't know about this kind of table operation */ table = (memptr)x1_; length = (y1_ >> 16) & 0xffff; if ((y1_ & 0xffff) == 1) { index = (memptr)y2_; moves = x2_ & 0xffff; } vwk -= 1; x1 = (int16)ReadInt16(table); y1 = (int16)ReadInt16(table + 2); x2 = (int16)ReadInt16(table + 4); y2 = (int16)ReadInt16(table + 6); } if (table) { if (moves) drawMoveLine(table, length, index, moves, pattern, fgColor, bgColor, logOp); else { switch (length) { case 0: break; case 1: drawSingleLine(x1, y1, x2, y2, pattern, fgColor, bgColor, logOp); break; default: drawTableLine(table, length, pattern, fgColor, bgColor, logOp); break; } } } else drawSingleLine(x1, y1, x2, y2, pattern, fgColor, bgColor, logOp); gl.Disable(GL_SCISSOR_TEST); return 1; } /* Polygon tesselator callback functions */ #if ENABLE_GLU_TESSELATOR #ifndef CALLBACK #define CALLBACK #endif extern "C" { static void CALLBACK tess_begin(GLenum which) { gl.Begin(which); } static void CALLBACK tess_end(void) { gl.End(); } static void CALLBACK tess_error(GLenum errorCode) { fprintf(stderr,"glvdi: Tesselation error: %s\n", gluErrorString(errorCode)); } } #endif int32 OpenGLVdiDriver::fillPoly(memptr vwk, memptr points_addr, int n, memptr index_addr, int moves, memptr pattern_addr, uint32 fgColor, uint32 bgColor, uint32 logOp, uint32 interior_style, memptr clip) { #if !ENABLE_GLU_TESSELATOR return VdiDriver::fillPoly(vwk, points_addr, n, index_addr, moves, pattern_addr, fgColor, bgColor, logOp, interior_style, clip); #else int i,cx1,cy1,cx2,cy2, tess_list; GLdouble *poly_coords; uint32 gl_pattern[32]; DUNUSED(index_addr); DUNUSED(interior_style); if (vwk & 1) return -1; // Don't know about any special fills if (!n) return 1; if (moves) { D(bug("nfvdi:opengl: fillPoly():moves table unsupported")); return 1; } uint16 pattern[16]; for(i=0;i<16;i++) pattern[i] = ReadInt16(pattern_addr + i * 2); memset(gl_pattern,0, sizeof(gl_pattern)); for (i=0; i<32; i++) { gl_pattern[i] = (pattern[i&15]<<16)|pattern[i&15]; } cx1=ReadInt32(clip); cy1=ReadInt32(clip+4); cx2=ReadInt32(clip+8); cy2=ReadInt32(clip+12); gl.Scissor(cx1,host->video->getHeight()-(cy2+1),cx2-cx1+1,cy2-cy1+1); gl.Enable(GL_SCISSOR_TEST); /* Create tesselator */ if (!tess) { tess=gluNewTess(); gluTessCallback(tess,GLU_TESS_VERTEX,(_GLUfuncptr)gl.Vertex3dv); gluTessCallback(tess,GLU_TESS_BEGIN,(_GLUfuncptr)tess_begin); gluTessCallback(tess,GLU_TESS_END,(_GLUfuncptr)tess_end); gluTessCallback(tess,GLU_TESS_ERROR,(_GLUfuncptr)tess_error); } /* Tesselate polygon in list */ tess_list = gl.GenLists(1); poly_coords = new GLdouble[3*n]; gl.NewList(tess_list, GL_COMPILE); gluTessBeginPolygon(tess, NULL); gluTessBeginContour(tess); for (i=0;i>16)&0xff,(bgColor>>8)&0xff,bgColor&0xff); gl.CallList(tess_list); } gl.Enable(GL_COLOR_LOGIC_OP); if (logOp == 3) { gl.LogicOp(GL_XOR); gl.Color3ub(0xff,0xff,0xff); } else { gl.LogicOp(GL_COPY); gl.Color3ub((fgColor>>16)&0xff,(fgColor>>8)&0xff,fgColor&0xff); } gl.Enable(GL_POLYGON_STIPPLE); gl.PolygonStipple((const GLubyte *)gl_pattern); gl.CallList(tess_list); gl.DeleteLists(tess_list,1); gl.Disable(GL_POLYGON_STIPPLE); gl.Disable(GL_SCISSOR_TEST); D(bug("glvdi: fillpoly")); return 1; #endif } int32 OpenGLVdiDriver::drawText(memptr vwk, memptr text, uint32 length, int32 dx, int32 dy, memptr font, uint32 ch_w, uint32 ch_h, uint32 fgColor, uint32 bgColor, uint32 logOp, memptr clip) { DUNUSED(vwk); int32 cx1, cy1, cx2, cy2; cx1 = ReadInt32(clip); cy1 = ReadInt32(clip + 4); cx2 = ReadInt32(clip + 8); cy2 = ReadInt32(clip + 12); int width, count; if ((dy + (int32)ch_h <= cy1) || (dy > cy2) || (dx > cx2) || (dx + (width = length * (int32)ch_w) <= cx1)) return 1; if (dx + width - (int32)ch_w > cx2) { count = dx + width - cx2 - 1; count /= ch_w; length -= count; } if (dx + (int32)ch_w <= cx1) { count = cx1 - dx; count /= ch_w; length -= count; dx += ch_w * count; text += count * 2; } /* Allocate temporary space for monochrome bitmap */ width = (ch_w * length + 31) & ~31; /* Changed meaning of width from above! */ Uint8 *bitmap = (Uint8 *)malloc((width * ch_h) >> 3); if (!bitmap) { return -1; } uint8 *fontaddr = Atari2HostAddr(font); width >>= 3; for(uint32 i = 0; i < length; i++) { Uint8 *chardata = &fontaddr[ReadInt16(text) * 16]; text += 2; Uint8 *ptr = bitmap + i + (ch_h - 1) * width; for(uint32 j = 0; j < ch_h; j++) { *ptr = *chardata++; ptr -= width; } } int sx, w, h; sx = 0; w = ch_w * length; h = ch_h; gl.Scissor(cx1, host->video->getHeight() - cy2 - 1, cx2 - cx1 + 1, cy2 - cy1 + 1); gl.Enable(GL_SCISSOR_TEST); if (logOp == 1) { /* First, the back color */ gl.Color3ub((bgColor >> 16) & 0xff, (bgColor >> 8) & 0xff, bgColor & 0xff); gl.Begin(GL_QUADS); gl.Vertex2i(dx, dy); gl.Vertex2i(dx + w, dy); gl.Vertex2i(dx + w, dy + h); gl.Vertex2i(dx, dy + h); gl.End(); } gl.Enable(GL_COLOR_LOGIC_OP); if (logOp == 3) { gl.LogicOp(GL_XOR); gl.Color3ub(0xff, 0xff, 0xff); } else { gl.LogicOp(GL_COPY); gl.Color3ub((fgColor >> 16) & 0xff, (fgColor >> 8) & 0xff, fgColor & 0xff); } sx = 0; if (dx < 0) { sx = -dx; dx = 0; } gl.RasterPos2i(dx, dy + h - 1); gl.Bitmap(w, h, sx, 0, 0, 0, (const GLubyte *)bitmap); gl.Disable(GL_COLOR_LOGIC_OP); gl.Disable(GL_SCISSOR_TEST); free(bitmap); return 1; } void OpenGLVdiDriver::getHwColor(uint16 /*index*/, uint32 red, uint32 green, uint32 blue, memptr hw_value) { WriteInt32(hw_value, (((red * 255 + 500) / 1000) << 16) | (((green * 255 + 500) / 1000) << 8)|((blue * 255 + 500) / 1000)); } /** * Set palette colour (hooked into the c_set_colors driver function by STanda) * * set_color_hook * 4(a7) paletteIndex * 8(a7) red component byte value * 10(a7) green component byte value * 12(a7) blue component byte value **/ void OpenGLVdiDriver::setColor(memptr /*vwk*/, uint32 /*paletteIndex*/, uint32 /*red*/, uint32 /*green*/, uint32 /*blue*/) { } int32 OpenGLVdiDriver::getFbAddr(void) { return 0; } aranym-1.1.0/src/natfeat/nfvdi.h0000664000175000017500000001614213454637622014676 0ustar joyjoy/* NatFeat VDI driver ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFVDI_H #define NFVDI_H /*--- Includes ---*/ #include "SDL_compat.h" #include "nf_base.h" #include "parameters.h" #include "../include/dirty_rects.h" /*--- Defines ---*/ // The Atari structures offsets #define MFDB_ADDRESS 0 #define MFDB_WIDTH 4 #define MFDB_HEIGHT 6 #define MFDB_WDWIDTH 8 #define MFDB_STAND 10 #define MFDB_NPLANES 12 /* gsx modes */ #define MD_REPLACE 1 #define MD_TRANS 2 #define MD_XOR 3 #define MD_ERASE 4 /* bit blt rules */ #define ALL_WHITE 0 #define S_AND_D 1 #define S_AND_NOTD 2 #define S_ONLY 3 #define NOTS_AND_D 4 #define D_ONLY 5 #define S_XOR_D 6 #define S_OR_D 7 #define NOT_SORD 8 #define NOT_SXORD 9 #define D_INVERT 10 #define NOT_D D_INVERT #define S_OR_NOTD 11 #define NOT_S 12 #define NOTS_OR_D 13 #define NOT_SANDD 14 #define ALL_BLACK 15 // This is supposed to be a fast 16x16/16 with 32 bit intermediate result #define SMUL_DIV(x,y,z) ((short)(((x)*(long)(y))/(z))) // Some other possible variants are //#define SMUL_DIV(x,y,z) ((long)(y - y1) * (x2 - x1) / (y2 - y1)) //#define SMUL_DIV(x,y,z) ((short)(((short)(x)*(long)((short)(y)))/(short)(z))) #if SDL_BYTEORDER == SDL_BIG_ENDIAN #define put_dtriplet(address, data) \ { \ WriteInt8((address), ((data) >> 16) & 0xff); \ WriteInt8((address) + 1, ((data) >> 8) & 0xff); \ WriteInt8((address) + 2, (data) & 0xff); \ } #define get_dtriplet(address) \ ((ReadInt8((address)) << 16) | (ReadInt8((address) + 1) << 8) | ReadInt8((address) + 2)) #else #define put_dtriplet(address, data) \ { \ WriteInt8((address), (data) & 0xff); \ WriteInt8((address) + 1, ((data) >> 8) & 0xff); \ WriteInt8((address) + 2, ((data) >> 16) & 0xff); \ } #define get_dtriplet(address) \ ((ReadInt8((address) + 2) << 16) | (ReadInt8((address) + 1) << 8) | ReadInt8((address))) #endif // SDL_BYTEORDER == SDL_BIG_ENDIAN /*--- Types ---*/ /*--- Class ---*/ class HostSurface; class VdiDriver : public NF_Base { public: const char *name() { return "fVDI"; } bool isSuperOnly() { return false; } int32 dispatch(uint32 fncode); void reset(); VdiDriver(); virtual ~VdiDriver(); HostSurface *getSurface(void); protected: HostSurface *surface; struct _Mouse { struct { uint16 x, y; uint16 width, height; uint32 background[16][16]; // The mouse background backup surface for FVDIDriver struct { uint32 foreground; // The mouse shape color for FVDIDriver uint32 background; // The mouse mask color for FVDIDriver } color; } storage; struct hotspot_ { int16 x, y; } hotspot; struct colors_ { int16 fgColorIndex, bgColorIndex; } colors; uint16 mask[16]; uint16 shape[16]; } Mouse; virtual void restoreMouseBackground(void); virtual void saveMouseBackground(int16 x, int16 y, int16 width, int16 height); void setResolution(int32 width, int32 height, int32 depth); int32 getWidth(void); int32 getHeight(void); int32 getBpp(void); int32 blitArea(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp); virtual int32 openWorkstation(void); virtual int32 closeWorkstation(void); virtual int32 getPixel(memptr vwk, memptr src, int32 x, int32 y); virtual int32 putPixel(memptr vwk, memptr dst, int32 x, int32 y, uint32 color); virtual int32 drawMouse(memptr wk, int32 x, int32 y, uint32 mode, uint32 data, uint32 hot_x, uint32 hot_y, uint32 fgColor, uint32 bgColor, uint32 mouse_type); virtual int32 expandArea(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp, uint32 fgColor, uint32 bgColor); virtual int32 fillArea(memptr vwk, uint32 x_, uint32 y_, int32 w, int32 h, memptr pattern_address, uint32 fgColor, uint32 bgColor, uint32 logOp, uint32 interior_style); virtual void fillArea(uint32 x, uint32 y, uint32 w, uint32 h, uint16* pattern, uint32 fgColor, uint32 bgColor, uint32 logOp) = 0; virtual int32 drawLine(memptr vwk, uint32 x1_, uint32 y1_, uint32 x2_, uint32 y2_, uint32 pattern, uint32 fgColor, uint32 bgColor, uint32 logOp, memptr clip); virtual int32 fillPoly(memptr vwk, memptr points_addr, int n, memptr index_addr, int moves, memptr pattern_addr, uint32 fgColor, uint32 bgColor, uint32 logOp, uint32 interior_style, memptr clip); virtual int32 drawText(memptr vwk, memptr text, uint32 length, int32 dst_x, int32 dst_y, memptr font, uint32 w, uint32 h, uint32 fgColor, uint32 bgColor, uint32 logOp, memptr clip); virtual void getHwColor(uint16 index, uint32 red, uint32 green, uint32 blue, memptr hw_value); virtual void setColor(memptr vwk, uint32 paletteIndex, uint32 red, uint32 green, uint32 blue); virtual int32 getFbAddr(void); /* Blit memory to screen */ virtual int32 blitArea_M2S(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp); /* Blit screen to screen */ virtual int32 blitArea_S2S(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp); /* Blit screen to memory */ virtual int32 blitArea_S2M(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp); /* Inlinable functions */ void chunkyToBitplane(uint8 *sdlPixelData, uint16 bpp, uint16 bitplaneWords[8]); uint32 applyBlitLogOperation(int logicalOperation, uint32 destinationData, uint32 sourceData); // fillPoly helpers bool AllocIndices(int n); bool AllocCrossings(int n); bool EnoughCrossings(int n) { return n <= crossing_count; } bool AllocPoints(int n); int16* alloc_index; int16* alloc_crossing; int16* alloc_point; // A helper class to make it possible to access // points in a nicer way in fillPoly. class Points { public: explicit Points(int16* vector_) : vector(vector_) { } ~Points() { } int16* operator[](int n) { return &vector[n * 2]; } private: int16* vector; }; private: SDL_Cursor *cursor; int events, new_event, mouse_x, mouse_y, buttons, wheel, vblank; /* Blit memory to memory */ int32 blitArea_M2M(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp); int index_count; int crossing_count; int point_count; }; #endif /* NFVDI_H */ aranym-1.1.0/src/natfeat/nfvdi.cpp0000664000175000017500000011321513454637622015230 0ustar joyjoy/* NatFeat VDI driver ARAnyM (C) 2005,2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "parameters.h" #include "dirty_rects.h" #include "host_surface.h" #include "nfvdi.h" #include "fvdidrv_nfapi.h" // keep in sync with same file in fVDI CVS #include "hostscreen.h" #include "host.h" #include "cpu_emulation.h" #define DEBUG 0 #include "debug.h" #include /*--- Defines ---*/ #define EINVFN -32 /*--- Types ---*/ /*--- Variables ---*/ /*--- Public functions ---*/ int32 VdiDriver::dispatch(uint32 fncode) { int32 ret = EINVFN; D(bug("nfvdi: dispatch(%u)", fncode)); if (fncode & 0x80000000) { if (!events) return 1; fncode &= 0x7fffffff; if (fncode & 0x8000) { mouse_x = fncode >> 16; mouse_y = fncode & 0x7fff; new_event |= 1; } else { switch (fncode >> 28) { case 3: buttons = ((fncode & 1) << 1) | ((fncode & 2) >> 1); new_event |= 2; break; case 4: wheel += (signed char)(fncode & 0xff); new_event |= 4; break; case 5: vblank++; new_event |= 8; break; } } TriggerInt3(); return 0; } if (fncode == FVDI_EVENT) { memptr array = getParameter(0); switch((int)array) { case 0: return bx_options.nfvdi.use_host_mouse_cursor; case 1: new_event = buttons = wheel = vblank = 0; events = 1; break; default: int n = 0; if (new_event & 1) { WriteInt32(array + n++ * 4, 2); WriteInt32(array + n++ * 4, (mouse_x << 16) | (mouse_y & 0xffff)); } if (new_event & 2) { WriteInt32(array + n++ * 4, 3); WriteInt32(array + n++ * 4, buttons); } if (new_event & 4) { WriteInt32(array + n++ * 4, 4); WriteInt32(array + n++ * 4, 0x00000000 | (wheel & 0xffff)); } if (new_event & 8) { WriteInt32(array + n++ * 4, 5); WriteInt32(array + n++ * 4, vblank); } if (n < 8) WriteInt32(array + n * 4, 0); new_event = wheel = vblank = 0; break; } return 1; } switch(fncode) { case FVDI_GET_VERSION: ret = FVDIDRV_NFAPI_VERSION; break; case FVDI_GET_PIXEL: ret = getPixel((memptr)getParameter(0),(memptr)getParameter(1),getParameter(2),getParameter(3)); break; case FVDI_PUT_PIXEL: ret = putPixel((memptr)getParameter(0),(memptr)getParameter(1),getParameter(2),getParameter(3),getParameter(4)); break; case FVDI_MOUSE: { // mode (0/1 - move, 2 - hide, 3 - show) // These are only valid when not mode uint32 mask = getParameter(3); if ( mask > 7 ) { ret = drawMouse((memptr)getParameter(0), // wk getParameter(1), getParameter(2), // x, y mask, // mask* getParameter(4), // data* getParameter(5), getParameter(6), // hot_x, hot_y getParameter(7), // fgColor getParameter(8), // bgColor getParameter(9)); // type } else { ret = drawMouse((memptr)getParameter(0), // wk getParameter(1), getParameter(2), // x, y mask, 0, 0, 0, 0, 0, 0); // dummy } } break; case FVDI_EXPAND_AREA: ret = expandArea((memptr)getParameter(0), // vwk (memptr)getParameter(1), // src MFDB* getParameter(2), getParameter(3), // sx, sy (memptr)getParameter(4), // dest MFDB* getParameter(5), getParameter(6), // dx, dy getParameter(7), // width getParameter(8), // height getParameter(9), // logical operation getParameter(10), // fgColor getParameter(11)); // bgColor break; case FVDI_FILL_AREA: ret = fillArea((memptr)getParameter(0), // vwk getParameter(1), getParameter(2), // x, y // table*, table length/type (0 - y/x1/x2 spans) getParameter(3), getParameter(4), // width, height (memptr)getParameter(5), // pattern* getParameter(6), // fgColor getParameter(7), // bgColor getParameter(8), // mode getParameter(9)); // interior style break; case FVDI_BLIT_AREA: ret = blitArea((memptr)getParameter(0), // vwk (memptr)getParameter(1), // src MFDB* getParameter(2), getParameter(3), // sx, sy (memptr)getParameter(4), // dest MFDB* getParameter(5), getParameter(6), // dx, dy getParameter(7), // width getParameter(8), // height getParameter(9)); // logical operation break; case FVDI_LINE: ret = drawLine((memptr)getParameter(0), // vwk getParameter(1), getParameter(2), // x1, y1 // table*, table length/type (0 - coordinate pairs, 1 - pairs + moves) getParameter(3), getParameter(4), // x2, y2 // move point count, move index* getParameter(5) & 0xffff, // pattern getParameter(6), // fgColor getParameter(7), // bgColor getParameter(8) & 0xffff, // logical operation (memptr)getParameter(9)); // clip rectangle* (0 or long[4]) break; case FVDI_FILL_POLYGON: ret = fillPoly((memptr)getParameter(0), // vwk (memptr)getParameter(1), // points* getParameter(2), // point count (memptr)getParameter(3), // index* getParameter(4), // index count (memptr)getParameter(5), // pattern* getParameter(6), // fgColor getParameter(7), // bgColor getParameter(8), // logic operation getParameter(9), // interior style (memptr)getParameter(10)); // clip rectangle break; case FVDI_TEXT_AREA: ret = drawText((memptr)getParameter(0), // vwk (memptr)getParameter(1), // text* getParameter(2), // length getParameter(3), // dst_x getParameter(4), // dst_y (memptr)getParameter(5), // font* getParameter(6), // width getParameter(7), // height getParameter(8), // fgColor getParameter(9), // bgColor getParameter(10), // logic operation (memptr)getParameter(11)); // clip rectangle break; case FVDI_GET_HWCOLOR: getHwColor(getParameter(0), getParameter(1), getParameter(2), getParameter(3), getParameter(4)); break; case FVDI_SET_COLOR: setColor(getParameter(4), getParameter(0), getParameter(1), getParameter(2), getParameter(3)); break; case FVDI_GET_FBADDR: ret = getFbAddr(); break; case FVDI_SET_RESOLUTION: setResolution(getParameter(0),getParameter(1),getParameter(2)); ret = 0; break; case FVDI_GET_WIDTH: ret = getWidth(); break; case FVDI_GET_HEIGHT: ret = getHeight(); break; case FVDI_OPENWK: ret = openWorkstation(); break; case FVDI_CLOSEWK: ret = closeWorkstation(); break; case FVDI_GETBPP: ret = getBpp(); break; default: D(bug("nfvdi: unimplemented function #%d", fncode)); break; } D(bug("nfvdi: function returning with 0x%08x", ret)); return ret; } VdiDriver::VdiDriver() : surface(NULL) { index_count = crossing_count = point_count = 0; alloc_index = alloc_crossing = alloc_point = NULL; cursor = NULL; Mouse.storage.x = Mouse.storage.y = Mouse.storage.width = Mouse.storage.height = 0; events = 0; } VdiDriver::~VdiDriver() { delete[] alloc_index; delete[] alloc_crossing; delete[] alloc_point; if (cursor) { SDL_FreeCursor(cursor); cursor = NULL; } if (surface) { host->video->destroySurface(surface); } } void VdiDriver::reset() { host->video->setVidelRendering(true); } /*--- Protected functions ---*/ void VdiDriver::chunkyToBitplane(uint8 *sdlPixelData, uint16 bpp, uint16 bitplaneWords[8]) { DUNUSED(bpp); for (int l=0; l<16; l++) { uint8 data = sdlPixelData[l]; // note: this is about 2000 dryhstones speedup (the local variable) bitplaneWords[0] <<= 1; bitplaneWords[0] |= (data >> 0) & 1; bitplaneWords[1] <<= 1; bitplaneWords[1] |= (data >> 1) & 1; bitplaneWords[2] <<= 1; bitplaneWords[2] |= (data >> 2) & 1; bitplaneWords[3] <<= 1; bitplaneWords[3] |= (data >> 3) & 1; bitplaneWords[4] <<= 1; bitplaneWords[4] |= (data >> 4) & 1; bitplaneWords[5] <<= 1; bitplaneWords[5] |= (data >> 5) & 1; bitplaneWords[6] <<= 1; bitplaneWords[6] |= (data >> 6) & 1; bitplaneWords[7] <<= 1; bitplaneWords[7] |= (data >> 7) & 1; } } uint32 VdiDriver::applyBlitLogOperation(int logicalOperation, uint32 destinationData, uint32 sourceData) { switch(logicalOperation) { case ALL_WHITE: destinationData = 0; break; case S_AND_D: destinationData = sourceData & destinationData; break; case S_AND_NOTD: destinationData = sourceData & ~destinationData; break; case S_ONLY: destinationData = sourceData; break; case NOTS_AND_D: destinationData = ~sourceData & destinationData; break; /* case D_ONLY: destinationData = destinationData; break; */ case S_XOR_D: destinationData = sourceData ^ destinationData; break; case S_OR_D: destinationData = sourceData | destinationData; break; case NOT_SORD: destinationData = ~(sourceData | destinationData); break; case NOT_SXORD: destinationData = ~(sourceData ^ destinationData); break; case D_INVERT: destinationData = ~destinationData; break; case S_OR_NOTD: destinationData = sourceData | ~destinationData; break; case NOT_S: destinationData = ~sourceData; break; case NOTS_OR_D: destinationData = ~sourceData | destinationData; break; case NOT_SANDD: destinationData = ~(sourceData & destinationData); break; case ALL_BLACK: destinationData = 0xffffffffUL; break; } return destinationData; } HostSurface *VdiDriver::getSurface(void) { return surface; } void VdiDriver::setResolution(int32 width, int32 height, int32 depth) { if (bx_options.autozoom.fixedsize) { width = bx_options.autozoom.width; height = bx_options.autozoom.height; if ((bx_options.autozoom.width == 0) && (bx_options.autozoom.height == 0)) { width = host->video->getWidth(); height = host->video->getHeight(); } } if (width<64) { width = 64; } if (height<64) { height = 64; } if (depth<8) { depth = 8; } /* Recreate surface if needed */ if (surface) { if (surface->getBpp() == depth) { if ((surface->getWidth() != width) || (surface->getHeight() != height)) { surface->resize(width, height); } } else { delete surface; surface = NULL; } } if (surface==NULL) { surface = host->video->createSurface(width,height,depth); } /* TODO: restore palette ? */ } int32 VdiDriver::getWidth(void) { return (surface ? surface->getWidth() : 0); } int32 VdiDriver::getHeight(void) { return (surface ? surface->getHeight() : 0); } int32 VdiDriver::openWorkstation(void) { host->video->setVidelRendering(false); return 1; } int32 VdiDriver::closeWorkstation(void) { host->video->setVidelRendering(true); return 1; } int32 VdiDriver::getBpp(void) { if (!surface) { return 0; } SDL_Surface *sdl_surf = surface->getSdlSurface(); return (sdl_surf ? sdl_surf->format->BitsPerPixel : 0); } // The polygon code needs some arrays of unknown size // These routines and members are used so that no unnecessary allocations are done bool VdiDriver::AllocIndices(int n) { if (n > index_count) { D2(bug("More indices %d->%d\n", index_count, n)); int count = n * 2; // Take a few extra right away int16* tmp = new(std::nothrow) int16[count]; if (!tmp) { count = n; tmp = new(std::nothrow) int16[count]; } if (tmp) { delete[] alloc_index; alloc_index = tmp; index_count = count; } } return index_count >= n; } bool VdiDriver::AllocCrossings(int n) { if (n > crossing_count) { D2(bug("More crossings %d->%d\n", crossing_count, n)); int count = n * 2; // Take a few extra right away int16* tmp = new(std::nothrow) int16[count]; if (!tmp) { count = (n * 3) / 2; // Try not so many extra tmp = new(std::nothrow) int16[count]; } if (!tmp) { count = n; // This is going to be slow if it goes on... tmp = new(std::nothrow) int16[count]; } if (tmp) { memcpy(tmp, alloc_crossing, crossing_count * sizeof(*alloc_crossing)); delete[] alloc_crossing; alloc_crossing = tmp; crossing_count = count; } } return crossing_count >= n; } bool VdiDriver::AllocPoints(int n) { if (n > point_count) { D2(bug("More points %d->%d", point_count, n)); int count = n * 2; // Take a few extra right away int16* tmp = new(std::nothrow) int16[count * 2]; if (!tmp) { count = n; tmp = new(std::nothrow) int16[count * 2]; } if (tmp) { delete[] alloc_point; alloc_point = tmp; point_count = count; } } return point_count >= n; } /*--- Virtual functions ---*/ /** * Get a coloured pixel. * * c_read_pixel(Virtual *vwk, MFDB *mfdb, long x, long y) * read_pixel * In: a1 VDI struct, source MFDB * d1 x * d2 y * * Only one mode here. * * Note that a1 does not point to the VDI struct, but to a place in memory * where the VDI struct pointer can be found. Four bytes beyond that address * is a pointer to the destination MFDB. * * Since an MFDB is passed, the source is not necessarily the screen. **/ int32 VdiDriver::getPixel(memptr vwk, memptr src, int32 x, int32 y) { DUNUSED(vwk); uint32 row_address, color = 0; uint16 planes; if (!src) { D(bug("VdiDriver::getPixel(): source is NULL")); return color; } planes = ReadInt16(src + MFDB_NPLANES); row_address = ReadInt32(src + MFDB_ADDRESS) + ReadInt16(src + MFDB_WDWIDTH) * 2 * planes * y; switch (planes) { case 8: color = ReadInt8(row_address + x); break; case 16: color = ReadInt16(row_address + x * 2); break; case 24: color = ((uint32)ReadInt8(row_address + x * 3) << 16) + ((uint32)ReadInt8(row_address + x * 3 + 1) << 8) + (uint32)ReadInt8(row_address + x * 3 + 2); break; case 32: color = ReadInt32(row_address + x * 4); break; } return color; } /** * Set a coloured pixel. * * c_write_pixel(Virtual *vwk, MFDB *mfdb, long x, long y, long colour) * write_pixel * In: a1 VDI struct, destination MFDB * d0 colour * d1 x or table address * d2 y or table length (high) and type (low) * XXX: ? * * This function has two modes: * - single pixel * - table based multi pixel (special mode 0 (low word of 'y')) * * Note that a1 does not point to the VDI struct, but to a place in memory * where the VDI struct pointer can be found. Four bytes beyond that address * is a pointer to the destination MFDB. * * As usual, only the first one is necessary, and a return with d0 = -1 * signifies that a special mode should be broken down to the basic one. * * Since an MFDB is passed, the destination is not necessarily the screen. **/ int32 VdiDriver::putPixel(memptr vwk, memptr dst, int32 x, int32 y, uint32 color) { if (vwk & 1) return 0; if (!dst) { D(bug("VdiDriver::putPixel(): destination is NULL")); return color; } uint16 planes = ReadInt16(dst + MFDB_NPLANES); uint32 row_address = ReadInt32(dst + MFDB_ADDRESS) + ReadInt16(dst + MFDB_WDWIDTH) * 2 * planes * y; switch (planes) { case 8: WriteInt8(row_address + x, color); break; case 16: WriteInt16(row_address + x * 2, color); break; case 24: WriteInt8(row_address + x * 3, (color >> 16) & 0xff); WriteInt8(row_address + x * 3 + 1, (color >> 8) & 0xff); WriteInt8(row_address + x * 3 + 2, color & 0xff); break; case 32: WriteInt32(row_address + x * 4, color); break; } return 1; } /** * Draw the mouse * * Draw a coloured line between two points. * * c_mouse_draw(Workstation *wk, long x, long y, Mouse *mouse) * mouse_draw * In: a1 Pointer to Workstation struct * d0/d1 x,y * d2 0 - move shown 1 - move hidden 2 - hide 3 - show >3 - change shape (pointer to mouse struct) * * Unlike all the other functions, this does not receive a pointer to a VDI * struct, but rather one to the screen's workstation struct. This is * because the mouse handling concerns the screen as a whole (and the * routine is also called from inside interrupt routines). * * The Mouse structure pointer doubles as a mode variable. If it is a small * number, the mouse's state is supposed to change somehow, while a large * number is a pointer to a new mouse shape. * * This is currently not a required function, but it probably should be. * The fallback handling is not done in the usual way, and to make it * at least somewhat usable, the mouse pointer is reduced to 4x4 pixels. * * typedef struct Fgbg_ { * short background; * short foreground; * } Fgbg; * * typedef struct Mouse_ { * 0 short type; * 2 short hide; * struct position_ { * 4 short x; * 6 short y; * } position; * struct hotspot_ { * 8 short x; * 10 short y; * } hotspot; * 12 Fgbg colour; * 16 short mask[16]; * 48 short data[16]; * 80 void *extra_info; * } Mouse; **/ void VdiDriver::restoreMouseBackground(void) { } void VdiDriver::saveMouseBackground(int16 /*x*/, int16 /*y*/, int16 /*width*/, int16 /*height*/) { } int32 VdiDriver::drawMouse(memptr wk, int32 x, int32 y, uint32 mode, uint32 data, uint32 hot_x, uint32 hot_y, uint32 fgColor, uint32 bgColor, uint32 mouse_type) { DUNUSED(wk); DUNUSED(fgColor); DUNUSED(bgColor); DUNUSED(mouse_type); D(bug("VdiDriver::drawMouse(): x,y = [%ld,%ld] mode=%ld", x, y, mode)); switch (mode) { case 0: case 1: break; case 2: #if 0 SDL_ShowCursor(SDL_DISABLE); #endif break; case 3: SDL_ShowCursor(SDL_ENABLE); break; case 4: case 5: host->video->WarpMouse(x, y); break; case 6: case 7: break; default: { if (cursor) SDL_FreeCursor(cursor); cursor = SDL_CreateCursor( (Uint8 *)Atari2HostAddr(data), (Uint8 *)Atari2HostAddr(mode), 16, 16, hot_x, hot_y ); SDL_SetCursor(cursor); } break; } return 1; } /** * Expand a monochrome area to a coloured one. * * c_expand_area(Virtual *vwk, MFDB *src, long src_x, long src_y, * MFDB *dst, long dst_x, long dst_y, * long w, long h, long operation, long colour) * expand_area * In: a1 VDI struct, destination MFDB, VDI struct, source MFDB * d0 height and width to move (high and low word) * d1-d2 source coordinates * d3-d4 destination coordinates * d6 background and foreground colour * d7 logic operation * * Only one mode here. * * Note that a1 does not point to the VDI struct, but to a place in memory * where the VDI struct pointer can be found. Four bytes beyond that address * is a pointer to the destination MFDB, and then comes a VDI struct * pointer again (the same) and a pointer to the source MFDB. * * Since MFDBs are passed, the screen is not necessarily involved. * * A return with 0 gives a fallback (normally pixel by pixel drawing by * the fVDI engine). * * typedef struct MFDB_ { * short *address; * short width; * short height; * short wdwidth; * short standard; * short bitplanes; * short reserved[3]; * } MFDB; **/ int32 VdiDriver::expandArea(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp, uint32 fgColor, uint32 bgColor) { DUNUSED(vwk); if (!dest) { D(bug("VdiDriver::expandArea(): destination is NULL")); return 1; } if (getBpp() == 8) { fgColor &= 0xff; bgColor &= 0xff; } uint16 pitch = ReadInt16(src + MFDB_WDWIDTH) * 2; // the byte width (always monochrom); memptr data = ReadInt32(src + MFDB_ADDRESS) + sy * pitch; // MFDB *src->address; D(bug("fVDI: %s %x %d,%d:%d,%d:%d,%d (%lx, %lx)", "expandArea", logOp, sx, sy, dx, dy, w, h, fgColor, bgColor )); D2(bug("fVDI: %s %x,%x : %x,%x", "expandArea - MFDB addresses", src, dest, ReadInt32( src ),ReadInt32( dest ))); D2(bug("fVDI: %s %x, %d, %d", "expandArea - src: data address, MFDB wdwidth << 1, bitplanes", data, pitch, ReadInt16( src + MFDB_NPLANES ))); D2(bug("fVDI: %s %x, %d, %d", "expandArea - dst: data address, MFDB wdwidth << 1, bitplanes", ReadInt32(dest), ReadInt16(dest + MFDB_WDWIDTH) * (ReadInt16(dest + MFDB_NPLANES) >> 2), ReadInt16(dest + MFDB_NPLANES))); uint32 destPlanes = (uint32)ReadInt16( dest + MFDB_NPLANES ); uint32 destPitch = ReadInt16(dest + MFDB_WDWIDTH) * destPlanes << 1; // MFDB *dest->pitch uint32 destAddress = ReadInt32(dest); switch(destPlanes) { case 16: for(uint16 j = 0; j < h; j++) { D2(fprintf(stderr, "fVDI: bmp:")); uint16 theWord = ReadInt16(data + j * pitch + ((sx >> 3) & 0xfffe)); for(uint16 i = sx; i < sx + w; i++) { uint32 offset = (dx + i - sx) * 2 + (dy + j) * destPitch; if (i % 16 == 0) theWord = ReadInt16(data + j * pitch + ((i >> 3) & 0xfffe)); D2(fprintf(stderr, "%s", ((theWord >> (15 - (i & 0xf))) & 1) ? "1" : " ")); switch(logOp) { case 1: WriteInt16(destAddress + offset, ((theWord >> (15 - (i & 0xf))) & 1) ? fgColor : bgColor); break; case 2: if ((theWord >> (15 - (i & 0xf))) & 1) WriteInt16(destAddress + offset, fgColor); break; case 3: if ((theWord >> (15 - (i & 0xf))) & 1) WriteInt16(destAddress + offset, ~ReadInt16(destAddress + offset)); break; case 4: if (!((theWord >> (15 - (i & 0xf))) & 1)) WriteInt16(destAddress + offset, bgColor); break; } } D2(bug("")); //newline } break; case 24: for(uint16 j = 0; j < h; j++) { D2(fprintf(stderr, "fVDI: bmp:")); uint16 theWord = ReadInt16(data + j * pitch + ((sx >> 3) & 0xfffe)); for(uint16 i = sx; i < sx + w; i++) { uint32 offset = (dx + i - sx) * 3 + (dy + j) * destPitch; if (i % 16 == 0) theWord = ReadInt16(data + j * pitch + ((i >> 3) & 0xfffe)); D2(fprintf(stderr, "%s", ((theWord >> (15 - (i & 0xf))) & 1) ? "1" : " ")); switch(logOp) { case 1: put_dtriplet(destAddress + offset, ((theWord >> (15 - (i & 0xf))) & 1) ? fgColor : bgColor); break; case 2: if ((theWord >> (15 - (i & 0xf))) & 1) put_dtriplet(destAddress + offset, fgColor); break; case 3: if ((theWord >> (15-(i&0xf))) & 1) put_dtriplet(destAddress + offset, ~get_dtriplet(destAddress + offset)); break; case 4: if (!((theWord >> (15 - (i & 0xf))) & 1)) put_dtriplet(destAddress + offset, bgColor); break; } } D2(bug("")); //newline } break; case 32: for(uint16 j = 0; j < h; j++) { D2(fprintf(stderr, "fVDI: bmp:")); uint16 theWord = ReadInt16(data + j * pitch + ((sx >> 3) & 0xfffe)); for(uint16 i = sx; i < sx + w; i++) { uint32 offset = (dx + i - sx) * 4 + (dy + j) * destPitch; if (i % 16 == 0) theWord = ReadInt16(data + j * pitch + ((i >> 3) & 0xfffe)); D2(fprintf(stderr, "%s", ((theWord >> (15 - (i & 0xf))) & 1) ? "1" : " ")); switch(logOp) { case 1: WriteInt32(destAddress + offset, ((theWord >> (15 - (i & 0xf))) & 1) ? fgColor : bgColor); break; case 2: if ((theWord >> (15-(i&0xf))) & 1) WriteInt32(destAddress + offset, fgColor); break; case 3: if ((theWord >> (15 - (i & 0xf))) & 1) WriteInt32(destAddress + offset, ~ReadInt32(destAddress + offset)); break; case 4: if (!((theWord >> (15 - (i & 0xf))) & 1)) WriteInt32(destAddress + offset, bgColor); break; } } D2(bug("")); //newline } break; default: { // do the mangling for bitplanes. TOS<->VDI color conversions implemented. uint8 color[16]; uint16 bitplanePixels[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // initialized just to quiet GCC warning for(uint16 j = 0; j < h; j++) { D2(fprintf(stderr, "fVDI: bmp:")); uint32 address = destAddress + ((((dx >> 4) * destPlanes) << 1) + (dy + j) * destPitch); HostScreen::bitplaneToChunky((uint16*)Atari2HostAddr(address), destPlanes, color); uint16 theWord = ReadInt16(data + j * pitch + ((sx >> 3) & 0xfffe)); for(uint16 i = sx; i < sx + w; i++) { if (i % 16 == 0) { uint32 wordIndex = ((dx + i - sx) >> 4) * destPlanes; // convert the 16pixels (VDI->TOS colors - within the chunkyToBitplane // function) into the bitplane and write it to the destination // // note: we can't do the conversion directly // because it needs the little->bigendian conversion chunkyToBitplane(color, destPlanes, bitplanePixels); for(uint32 d = 0; d < destPlanes; d++) WriteInt16(address + (d<<1), bitplanePixels[d]); // convert next 16pixels to chunky address = destAddress + ((wordIndex << 1) + (dy + j) * destPitch); HostScreen::bitplaneToChunky((uint16*)Atari2HostAddr(address), destPlanes, color); theWord = ReadInt16(data + j * pitch + ((i >> 3) & 0xfffe)); } D2(fprintf(stderr, "%s", ((theWord >> (15 - (i & 0xf))) & 1) ? "1" : " ")); switch(logOp) { case 1: color[i&0xf] = ((theWord >> (15 - (i & 0xf))) & 1) ? fgColor : bgColor; break; case 2: if ((theWord >> (15-(i&0xf))) & 1) color[i&0xf] = fgColor; break; case 3: if ((theWord >> (15 - (i & 0xf))) & 1) color[i&0xf] = ~color[i&0xf]; break; case 4: if (!((theWord >> (15 - (i & 0xf))) & 1)) color[i&0xf] = bgColor; break; } } chunkyToBitplane(color, destPlanes, bitplanePixels); for(uint32 d = 0; d < destPlanes; d++) WriteInt16(address + (d<<1), bitplanePixels[d]); D2(bug("")); //newline } } break; } return 1; } /** * Fill a coloured area using a monochrome pattern. * * c_fill_area(Virtual *vwk, long x, long y, long w, long h, * short *pattern, long colour, long mode, long interior_style) * fill_area * In: a1 VDI struct * d0 height and width to fill (high and low word) * d1 x or table address * d2 y or table length (high) and type (low) * d3 pattern address * d4 colour * * This function has two modes: * - single block to fill * - table based y/x1/x2 spans to fill (special mode 0 (low word of 'y')) * * As usual, only the first one is necessary, and a return with d0 = -1 * signifies that a special mode should be broken down to the basic one. * * An immediate return with 0 gives a fallback (normally line based drawing * by the fVDI engine for solid fills, otherwise pixel by pixel). * A negative return will break down the special mode into separate calls, * with no more fallback possible. **/ int32 VdiDriver::fillArea(memptr vwk, uint32 x_, uint32 y_, int32 w, int32 h, memptr pattern_addr, uint32 fgColor, uint32 bgColor, uint32 logOp, uint32 interior_style) { DUNUSED(vwk); DUNUSED(x_); DUNUSED(y_); DUNUSED(w); DUNUSED(h); DUNUSED(pattern_addr); DUNUSED(fgColor); DUNUSED(bgColor); DUNUSED(logOp); DUNUSED(interior_style); return -1; } /** * Blit an area * * c_blit_area(Virtual *vwk, MFDB *src, long src_x, long src_y, * MFDB *dst, long dst_x, long dst_y, * long w, long h, long operation) * blit_area * In: a1 VDI struct, destination MFDB, VDI struct, source MFDB * d0 height and width to move (high and low word) * d1-d2 source coordinates * d3-d4 destination coordinates * d7 logic operation * * Only one mode here. * * Note that a1 does not point to the VDI struct, but to a place in memory * where the VDI struct pointer can be found. Four bytes beyond that address * is a pointer to the destination MFDB, and then comes a VDI struct * pointer again (the same) and a pointer to the source MFDB. * * Since MFDBs are passed, the screen is not necessarily involved. * * A return with 0 gives a fallback (normally pixel by pixel drawing by the * fVDI engine). **/ int32 VdiDriver::blitArea(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp) { int32 ret; if (src) { if (dest) { ret=blitArea_M2M(vwk, src, sx, sy, dest, dx, dy, w, h, logOp); } else { ret=blitArea_M2S(vwk, src, sx, sy, dest, dx, dy, w, h, logOp); } } else { if (dest) { ret=blitArea_S2M(vwk, src, sx, sy, dest, dx, dy, w, h, logOp); } else { ret=blitArea_S2S(vwk, src, sx, sy, dest, dx, dy, w, h, logOp); } } return ret; } int32 VdiDriver::blitArea_M2M(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp) { DUNUSED(vwk); uint32 planes = ReadInt16(src + MFDB_NPLANES); // MFDB *src->bitplanes uint32 pitch = ReadInt16(src + MFDB_WDWIDTH) * planes * 2; // MFDB *src->pitch memptr data = ReadInt32(src) + sy * pitch; // MFDB *src->address host OS address // the destPlanes is always the same? planes = ReadInt16(dest + MFDB_NPLANES); // MFDB *dest->bitplanes uint32 destPitch = ReadInt16(dest + MFDB_WDWIDTH) * planes * 2; // MFDB *dest->pitch memptr destAddress = (memptr)ReadInt32(dest); D(bug("fVDI: blitArea M->M")); uint32 srcData; uint32 destData; switch(planes) { case 16: for(int32 j = 0; j < h; j++) for(int32 i = sx; i < sx + w; i++) { uint32 offset = (dx + i - sx) * 2 + (dy + j) * destPitch; srcData = ReadInt16(data + j * pitch + i * 2); destData = ReadInt16(destAddress + offset); destData = applyBlitLogOperation(logOp, destData, srcData); WriteInt16(destAddress + offset, destData); } break; case 24: for(int32 j = 0; j < h; j++) for(int32 i = sx; i < sx + w; i++) { uint32 offset = (dx + i - sx) * 3 + (dy + j) * destPitch; srcData = get_dtriplet(data + j * pitch + i * 3); destData = get_dtriplet(destAddress + offset); destData = applyBlitLogOperation(logOp, destData, srcData); put_dtriplet(destAddress + offset, destData); } break; case 32: for(int32 j = 0; j < h; j++) for(int32 i = sx; i < sx + w; i++) { uint32 offset = (dx + i - sx) * 4 + (dy + j) * destPitch; srcData = ReadInt32(data + j * pitch + i * 4); destData = ReadInt32(destAddress + offset); destData = applyBlitLogOperation(logOp, destData, srcData); WriteInt32(destAddress + offset, destData); } break; default: if (planes < 16) { D(bug("fVDI: blitArea M->M: NOT TESTED bitplaneToCunky conversion")); } } return 1; } int32 VdiDriver::blitArea_M2S(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp) { DUNUSED(vwk); DUNUSED(src); DUNUSED(sx); DUNUSED(sy); DUNUSED(dest); DUNUSED(dx); DUNUSED(dy); DUNUSED(w); DUNUSED(h); DUNUSED(logOp); return -1; } int32 VdiDriver::blitArea_S2M(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp) { DUNUSED(vwk); DUNUSED(src); DUNUSED(sx); DUNUSED(sy); DUNUSED(dest); DUNUSED(dx); DUNUSED(dy); DUNUSED(w); DUNUSED(h); DUNUSED(logOp); return -1; } int32 VdiDriver::blitArea_S2S(memptr vwk, memptr src, int32 sx, int32 sy, memptr dest, int32 dx, int32 dy, int32 w, int32 h, uint32 logOp) { DUNUSED(vwk); DUNUSED(src); DUNUSED(sx); DUNUSED(sy); DUNUSED(dest); DUNUSED(dx); DUNUSED(dy); DUNUSED(w); DUNUSED(h); DUNUSED(logOp); return -1; } /** * Draw a coloured line between two points * * c_draw_line(Virtual *vwk, long x1, long y1, long x2, long y2, * long pattern, long colour) * draw_line * In: a1 VDI struct * d0 logic operation * d1 x1 or table address * d2 y1 or table length (high) and type (low) * d3 x2 or move point count * d4 y2 or move index address * d5 pattern * d6 colour * * This function has three modes: * - single line * - table based coordinate pairs (special mode 0 (low word of 'y1')) * - table based coordinate pairs+moves (special mode 1) * * As usual, only the first one is necessary, and a return with d0 = -1 * signifies that a special mode should be broken down to the basic one. * * An immediate return with 0 gives a fallback (normally pixel by pixel * drawing by the fVDI engine). * A negative return will break down the special modes into separate calls, * with no more fallback possible. **/ int32 VdiDriver::drawLine(memptr vwk, uint32 x1_, uint32 y1_, uint32 x2_, uint32 y2_, uint32 pattern, uint32 fgColor, uint32 bgColor, uint32 logOp, memptr clip) { DUNUSED(vwk); DUNUSED(x1_); DUNUSED(y1_); DUNUSED(x2_); DUNUSED(y2_); DUNUSED(pattern); DUNUSED(fgColor); DUNUSED(bgColor); DUNUSED(logOp); DUNUSED(clip); return -1; } int32 VdiDriver::fillPoly(memptr vwk, memptr points_addr, int n, memptr index_addr, int moves, memptr pattern_addr, uint32 fgColor, uint32 bgColor, uint32 logOp, uint32 interior_style, memptr clip) { DUNUSED(interior_style); if (vwk & 1) return -1; // Don't know about any special fills // Allocate arrays for data if (!AllocPoints(n) || !AllocIndices(moves) || !AllocCrossings(200)) return -1; uint16 pattern[16]; for(int i = 0; i < 16; ++i) pattern[i] = ReadInt16(pattern_addr + i * 2); int cliparray[4]; int* cliprect = 0; if (clip) { // Clipping is not off cliprect = cliparray; cliprect[0] = (int16)ReadInt32(clip); cliprect[1] = (int16)ReadInt32(clip + 4); cliprect[2] = (int16)ReadInt32(clip + 8); cliprect[3] = (int16)ReadInt32(clip + 12); D2(bug("fVDI: %s %d,%d:%d,%d", "clipLineTO", cliprect[0], cliprect[1], cliprect[2], cliprect[3])); } Points p(alloc_point); int16* index = alloc_index; int16* crossing = alloc_crossing; for(int i = 0; i < n; ++i) { p[i][0] = (int16)ReadInt16(points_addr + i * 4); p[i][1] = (int16)ReadInt16(points_addr + i * 4 + 2); } bool indices = moves; for(int i = 0; i < moves; ++i) index[i] = (int16)ReadInt16(index_addr + i * 2); if (!n) return 1; if (!indices) { if ((p[0][0] == p[n - 1][0]) && (p[0][1] == p[n - 1][1])) n--; } else { moves--; if (index[moves] == -4) moves--; if (index[moves] == -2) moves--; } int miny = p[0][1]; int maxy = miny; for(int i = 1; i < n; ++i) { int16 y = p[i][1]; if (y < miny) { miny = y; } if (y > maxy) { maxy = y; } } if (cliprect) { if (miny < cliprect[1]) miny = cliprect[1]; if (maxy > cliprect[3]) maxy = cliprect[3]; } int minx = 1000000; int maxx = -1000000; for(int16 y = miny; y <= maxy; ++y) { int ints = 0; int16 x1 = 0; // Make the compiler happy with some initializations int16 y1 = 0; int16 x2 = 0; int16 y2 = 0; int move_n = 0; int movepnt = 0; if (indices) { move_n = moves; movepnt = (index[move_n] + 4) / 2; x2 = p[0][0]; y2 = p[0][1]; } else { x1 = p[n - 1][0]; y1 = p[n - 1][1]; } for(int i = indices; i < n; ++i) { if (EnoughCrossings(ints + 1) || AllocCrossings(ints + 1)) crossing = alloc_crossing; else break; // At least something will get drawn if (indices) { x1 = x2; y1 = y2; } x2 = p[i][0]; y2 = p[i][1]; if (indices) { if (i == movepnt) { if (--move_n >= 0) movepnt = (index[move_n] + 4) / 2; else movepnt = -1; // Never again equal to n continue; } } if (y1 < y2) { if ((y >= y1) && (y < y2)) { crossing[ints++] = SMUL_DIV((y - y1), (x2 - x1), (y2 - y1)) + x1; } } else if (y1 > y2) { if ((y >= y2) && (y < y1)) { crossing[ints++] = SMUL_DIV((y - y2), (x1 - x2), (y1 - y2)) + x2; } } if (!indices) { x1 = x2; y1 = y2; } } for(int i = 0; i < ints - 1; ++i) { for(int j = i + 1; j < ints; ++j) { if (crossing[i] > crossing[j]) { int16 tmp = crossing[i]; crossing[i] = crossing[j]; crossing[j] = tmp; } } } x1 = cliprect[0]; x2 = cliprect[2]; for(int i = 0; i < ints - 1; i += 2) { y1 = crossing[i]; // Really x-values, but... y2 = crossing[i + 1]; if (y1 < x1) y1 = x1; if (y2 > x2) y2 = x2; if (y1 <= y2) { fillArea(y1, y, y2 - y1 + 1, 1, pattern, fgColor, bgColor, logOp); if (y1 < minx) minx = y1; if (y2 > maxx) maxx = y2; } } } return 1; } int32 VdiDriver::drawText(memptr vwk, memptr text, uint32 length, int32 dst_x, int32 dst_y, memptr font, uint32 w, uint32 h, uint32 fgColor, uint32 bgColor, uint32 logOp, memptr clip) { DUNUSED(vwk); DUNUSED(text); DUNUSED(length); DUNUSED(dst_x); DUNUSED(dst_y); DUNUSED(font); DUNUSED(w); DUNUSED(h); DUNUSED(fgColor); DUNUSED(bgColor); DUNUSED(logOp); DUNUSED(clip); return -1; } void VdiDriver::getHwColor(uint16 index, uint32 red, uint32 green, uint32 blue, memptr hw_value) { DUNUSED(index); DUNUSED(red); DUNUSED(green); DUNUSED(blue); DUNUSED(hw_value); } void VdiDriver::setColor(memptr vwk, uint32 paletteIndex, uint32 red, uint32 green, uint32 blue) { DUNUSED(vwk); DUNUSED(paletteIndex); DUNUSED(red); DUNUSED(green); DUNUSED(blue); } int32 VdiDriver::getFbAddr(void) { return 0; } aranym-1.1.0/src/natfeat/nfpci_linux.h0000664000175000017500000000404513454637622016105 0ustar joyjoy/* NatFeat host PCI access, Linux PCI driver ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFPCI_LINUX_H #define NFPCI_LINUX_H #include "parameters.h" /*--- Types ---*/ typedef struct { /* Infos read from PCI_FILE_DEVICES */ /* 0: bus, device, function */ /* 1: vendor id, device id */ /* 2: irq */ /* 3-8: base addresses */ /* 9: ROM base address */ /* 10-15: sizes */ /* 16: ROM size */ uint32 info[17]; /* Configuration bytes */ unsigned char config[256]; uint32 config_length; /* Device file to access config bytes */ char filename[256]; } pci_device_t; /*--- Linux PCI driver class ---*/ class PciDriverLinux : public PciDriver { private: int32 find_device(uint32 device_vendor_id, uint32 index); int32 find_classcode(uint32 class_code, uint32 index); int32 read_config_byte(uint32 device_handle, memptr data, uint32 num_register); int32 read_config_word(uint32 device_handle, memptr data, uint32 num_register); int32 read_config_long(uint32 device_handle, memptr data, uint32 num_register); int32 read_config_byte_fast(uint32 device_handle, uint32 num_register); int32 read_config_word_fast(uint32 device_handle, uint32 num_register); int32 read_config_long_fast(uint32 device_handle, uint32 num_register); pci_device_t *pci_devices; uint32 num_pci_devices; public: PciDriverLinux(); virtual ~PciDriverLinux(); }; #endif /* NFPCI_LINUX_H */ aranym-1.1.0/src/natfeat/nfpci_linux.cpp0000664000175000017500000002011413454637622016433 0ustar joyjoy/* NatFeat host PCI access, Linux PCI driver ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include "sysdeps.h" #include "cpu_emulation.h" #include "parameters.h" #include "nfpci.h" #include "nfpci_linux.h" #define DEBUG 0 #include "debug.h" /*--- Defines ---*/ #define NFPCI_NAME "nf:pci:linux: " #define PCI_FILE_DEVICES "/proc/bus/pci/devices" /*--- Public functions ---*/ PciDriverLinux::PciDriverLinux() { uint32 device[17], i; char buffer[512]; FILE *f, *fc; D(bug(NFPCI_NAME "PciDriverLinux()")); num_pci_devices=0; pci_devices=NULL; f=fopen(PCI_FILE_DEVICES,"r"); if (f==NULL) { return; } while (fgets(buffer, sizeof(buffer)-1, f)) { pci_device_t *new_device; sscanf(buffer, "%x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x", &device[0], &device[1], &device[2], &device[3], &device[4], &device[5], &device[6], &device[7], &device[8], &device[9], &device[10], &device[11], &device[12], &device[13], &device[14], &device[15], &device[16] ); /* Add device to list */ ++num_pci_devices; pci_devices=(pci_device_t *)realloc(pci_devices, num_pci_devices * sizeof(pci_device_t)); new_device = &pci_devices[num_pci_devices-1]; for (i=0; i<17; i++) { new_device->info[i]=device[i]; } snprintf(new_device->filename, sizeof(new_device->filename), "/proc/bus/pci/%02x/%02x.%x", (new_device->info[0] >> 8) & 0xff, (new_device->info[0] >> 3) & 0x1f, new_device->info[0] & 0x07 ); /* Read configuration bytes, 256 bytes max. */ memset(new_device->config, 0, sizeof(new_device->config)); fc=fopen(new_device->filename, "r"); if (fc==NULL) { continue; } new_device->config_length = fread(&(new_device->config[0]), 1, 256, fc); fclose(fc); } fclose(f); /* List devices */ #if DEBUG D(bug(NFPCI_NAME " %d PCI devices found:", num_pci_devices)); for (i=0; i>16) & 0xffff, pci_devices[i].info[1] & 0xffff, pci_devices[i].filename )); for (k=0; k<(pci_devices[i].config_length>>3); k++) { sprintf(buffer, "0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x", pci_devices[i].config[k*8+0], pci_devices[i].config[k*8+1], pci_devices[i].config[k*8+2], pci_devices[i].config[k*8+3], pci_devices[i].config[k*8+4], pci_devices[i].config[k*8+5], pci_devices[i].config[k*8+6], pci_devices[i].config[k*8+7] ); D(bug(NFPCI_NAME " %s", buffer)); } } #endif } PciDriverLinux::~PciDriverLinux() { D(bug(NFPCI_NAME "~PciDriverLinux()")); if (pci_devices!=NULL) { free(pci_devices); pci_devices=NULL; } num_pci_devices=0; } /*--- Private functions ---*/ int32 PciDriverLinux::find_device(uint32 device_vendor_id, uint32 index) { uint32 i, j; D(bug(NFPCI_NAME "find_device(0x%08x,%d)", device_vendor_id, index)); j=0; for (i=0; i>24) & 0x07; if ((class_mask & (1<<2))==0) { class_code &= 0x0000ffffUL; } if ((class_mask & (1<<1))==0) { class_code &= 0x00ff00ffUL; } if ((class_mask & (1<<0))==0) { class_code &= 0x00ffff00UL; } j=0; for (i=0; inum_pci_devices) return ATARI_PCI_BAD_HANDLE; if (num_register>(uint32)(pci_devices[device_handle].config_length-1)) return ATARI_PCI_BAD_REGISTER_NUMBER; buf = (unsigned char *) (Atari2HostAddr(data)); *buf = pci_devices[device_handle].config[num_register]; return ATARI_PCI_SUCCESSFUL; } int32 PciDriverLinux::read_config_word(uint32 device_handle, memptr data, uint32 num_register) { unsigned short *buf; D(bug(NFPCI_NAME "read_config_word(0x%08x,0x%08x,%d)", device_handle, data, num_register)); if (device_handle>num_pci_devices) return ATARI_PCI_BAD_HANDLE; if (num_register>(uint32)(pci_devices[device_handle].config_length-2)) return ATARI_PCI_BAD_REGISTER_NUMBER; num_register &= -2; buf = (unsigned short *) (Atari2HostAddr(data)); *buf = (pci_devices[device_handle].config[num_register]<<8) | pci_devices[device_handle].config[num_register+1]; return ATARI_PCI_SUCCESSFUL; } int32 PciDriverLinux::read_config_long(uint32 device_handle, memptr data, uint32 num_register) { unsigned long *buf; D(bug(NFPCI_NAME "read_config_long(0x%08x,0x%08x,%d)", device_handle, data, num_register)); if (device_handle>num_pci_devices) return ATARI_PCI_BAD_HANDLE; if (num_register>pci_devices[device_handle].config_length-4) return ATARI_PCI_BAD_REGISTER_NUMBER; num_register &= -4; buf = (unsigned long *) (Atari2HostAddr(data)); *buf = (pci_devices[device_handle].config[num_register]<<24) | (pci_devices[device_handle].config[num_register+1]<<16) | (pci_devices[device_handle].config[num_register+2]<<8) | pci_devices[device_handle].config[num_register+3]; return ATARI_PCI_SUCCESSFUL; } int32 PciDriverLinux::read_config_byte_fast(uint32 device_handle, uint32 num_register) { unsigned char reg_value; D(bug(NFPCI_NAME "read_config_byte_fast(0x%08x,%d)", device_handle, num_register)); if ((device_handle>num_pci_devices) || (num_register>(pci_devices[device_handle].config_length-1))) { return 0; } reg_value = pci_devices[device_handle].config[num_register]; return (int32) reg_value; } int32 PciDriverLinux::read_config_word_fast(uint32 device_handle, uint32 num_register) { unsigned short reg_value; D(bug(NFPCI_NAME "read_config_word_fast(0x%08x,%d)", device_handle, num_register)); if ((device_handle>num_pci_devices) || (num_register>(pci_devices[device_handle].config_length-2))) { return 0; } num_register &= -2; reg_value = (pci_devices[device_handle].config[num_register]<<8) | pci_devices[device_handle].config[num_register+1]; return (int32) reg_value; } int32 PciDriverLinux::read_config_long_fast(uint32 device_handle, uint32 num_register) { unsigned long reg_value; D(bug(NFPCI_NAME "read_config_long_fast(0x%08x,%d)", device_handle, num_register)); if ((device_handle>num_pci_devices) || (num_register>(pci_devices[device_handle].config_length-4))) { return 0; } num_register &= -4; reg_value = (pci_devices[device_handle].config[num_register]<<24) | (pci_devices[device_handle].config[num_register+1]<<16) | (pci_devices[device_handle].config[num_register+2]<<8) | pci_devices[device_handle].config[num_register+3]; return (int32) reg_value; } aranym-1.1.0/src/natfeat/nfpci.h0000664000175000017500000001135013454637622014663 0ustar joyjoy/* NatFeat host PCI access ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFPCI_H #define NFPCI_H /*--- Includes ---*/ #include "nf_base.h" #include "parameters.h" /*--- Defines ---*/ /* Error codes for PCI BIOS */ #define ATARI_PCI_SUCCESSFUL 0x00000000L #define ATARI_PCI_FUNC_NOT_SUPPORTED 0xfffffffeL #define ATARI_PCI_BAD_VENDOR_ID 0xfffffffdL #define ATARI_PCI_DEVICE_NOT_FOUND 0xfffffffcL #define ATARI_PCI_BAD_REGISTER_NUMBER 0xfffffffbL #define ATARI_PCI_SET_FAILED 0xfffffffaL #define ATARI_PCI_BUFFER_TOO_SMALL 0xfffffff9L #define ATARI_PCI_GENERAL_ERROR 0xfffffff8L #define ATARI_PCI_BAD_HANDLE 0xfffffff7L #define ARANYM_PCI_ID ((3<<24)|1) /*--- Types ---*/ /*--- Class ---*/ class PciDriver : public NF_Base { private: int32 get_machine_id(void); protected: virtual int32 find_device(uint32 device_vendor_id, uint32 index); virtual int32 find_classcode(uint32 class_code, uint32 index); virtual int32 read_config_byte(uint32 device_handle, memptr data, uint32 num_register); virtual int32 read_config_word(uint32 device_handle, memptr data, uint32 num_register); virtual int32 read_config_long(uint32 device_handle, memptr data, uint32 num_register); virtual int32 read_config_byte_fast(uint32 device_handle, uint32 num_register); virtual int32 read_config_word_fast(uint32 device_handle, uint32 num_register); virtual int32 read_config_long_fast(uint32 device_handle, uint32 num_register); virtual int32 write_config_byte(uint32 device_handle, uint32 num_register, uint32 value); virtual int32 write_config_word(uint32 device_handle, uint32 num_register, uint32 value); virtual int32 write_config_long(uint32 device_handle, uint32 num_register, uint32 value); virtual int32 hook_interrupt(uint32 device_handle, memptr data, uint32 parameter); virtual int32 unhook_interrupt(uint32 device_handle); virtual int32 special_cycle(uint32 num_bus, uint32 data); /* get_routing */ /* set_interrupt */ virtual int32 get_resource(uint32 device_handle); virtual int32 get_card_used(uint32 device_handle, memptr callback); virtual int32 set_card_used(uint32 device_handle, memptr callback); virtual int32 read_mem_byte(uint32 device_handle, uint32 pci_address, uint32 num_register); virtual int32 read_mem_word(uint32 device_handle, uint32 pci_address, uint32 num_register); virtual int32 read_mem_long(uint32 device_handle, uint32 pci_address, uint32 num_register); virtual int32 read_mem_byte_fast(uint32 device_handle, uint32 pci_address); virtual int32 read_mem_word_fast(uint32 device_handle, uint32 pci_address); virtual int32 read_mem_long_fast(uint32 device_handle, uint32 pci_address); virtual int32 write_mem_byte(uint32 device_handle, uint32 pci_address, uint32 value); virtual int32 write_mem_word(uint32 device_handle, uint32 pci_address, uint32 value); virtual int32 write_mem_long(uint32 device_handle, uint32 pci_address, uint32 value); virtual int32 read_io_byte(uint32 device_handle, uint32 pci_address, memptr data); virtual int32 read_io_word(uint32 device_handle, uint32 pci_address, memptr data); virtual int32 read_io_long(uint32 device_handle, uint32 pci_address, memptr data); virtual int32 read_io_byte_fast(uint32 device_handle, uint32 pci_address); virtual int32 read_io_word_fast(uint32 device_handle, uint32 pci_address); virtual int32 read_io_long_fast(uint32 device_handle, uint32 pci_address); virtual int32 write_io_byte(uint32 device_handle, uint32 pci_address, uint32 value); virtual int32 write_io_word(uint32 device_handle, uint32 pci_address, uint32 value); virtual int32 write_io_long(uint32 device_handle, uint32 pci_address, uint32 value); virtual int32 get_pagesize(void); virtual int32 virt_to_bus(uint32 device_handle, memptr virt_cpu_address, memptr data); virtual int32 bus_to_virt(uint32 device_handle, uint32 pci_address, memptr data); virtual int32 virt_to_phys(memptr virt_cpu_address, memptr data); virtual int32 phys_to_virt(memptr phys_cpu_address, memptr data); public: const char *name() { return "PCI"; } bool isSuperOnly() { return true; } int32 dispatch(uint32 fncode); virtual ~PciDriver() { }; }; #endif /* NFPCI_H */ aranym-1.1.0/src/natfeat/nfpci.cpp0000664000175000017500000002526413454637622015227 0ustar joyjoy/* NatFeat host PCI access ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "parameters.h" #include "nfpci.h" #include "../../atari/nfpci/nfpci_nfapi.h" #define DEBUG 0 #include "debug.h" /*--- Defines ---*/ #define NFPCI_NAME "nf:pci: " /*--- Types ---*/ /*--- Public functions ---*/ int32 PciDriver::dispatch(uint32 fncode) { int32 ret; D(bug(NFPCI_NAME "dispatch(%u)", fncode)); ret = ATARI_PCI_GENERAL_ERROR; switch(fncode) { case GET_VERSION: ret = ARANFPCI_NFAPI_VERSION; break; case NFPCI_FIND_DEVICE: ret = find_device(getParameter(0),getParameter(1)); break; case NFPCI_FIND_CLASSCODE: ret = find_classcode(getParameter(0),getParameter(1)); break; case NFPCI_READ_CONFIG_BYTE: ret = read_config_byte(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_READ_CONFIG_WORD: ret = read_config_word(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_READ_CONFIG_LONG: ret = read_config_long(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_READ_CONFIG_BYTE_FAST: ret = read_config_byte_fast(getParameter(0),getParameter(1)); break; case NFPCI_READ_CONFIG_WORD_FAST: ret = read_config_word_fast(getParameter(0),getParameter(1)); break; case NFPCI_READ_CONFIG_LONG_FAST: ret = read_config_long_fast(getParameter(0),getParameter(1)); break; case NFPCI_WRITE_CONFIG_BYTE: ret = write_config_byte(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_WRITE_CONFIG_WORD: ret = write_config_word(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_WRITE_CONFIG_LONG: ret = write_config_long(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_HOOK_INTERRUPT: ret = hook_interrupt(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_UNHOOK_INTERRUPT: ret = unhook_interrupt(getParameter(0)); break; case NFPCI_SPECIAL_CYCLE: ret = special_cycle(getParameter(0),getParameter(1)); break; case NFPCI_GET_RESOURCE: ret = get_resource(getParameter(0)); break; case NFPCI_GET_CARD_USED: ret = get_card_used(getParameter(0),getParameter(1)); break; case NFPCI_SET_CARD_USED: ret = set_card_used(getParameter(0),getParameter(1)); break; case NFPCI_READ_MEM_BYTE: ret = read_mem_byte(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_READ_MEM_WORD: ret = read_mem_word(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_READ_MEM_LONG: ret = read_mem_long(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_READ_MEM_BYTE_FAST: ret = read_mem_byte_fast(getParameter(0),getParameter(1)); break; case NFPCI_READ_MEM_WORD_FAST: ret = read_mem_word_fast(getParameter(0),getParameter(1)); break; case NFPCI_READ_MEM_LONG_FAST: ret = read_mem_long_fast(getParameter(0),getParameter(1)); break; case NFPCI_WRITE_MEM_BYTE: ret = write_mem_byte(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_WRITE_MEM_WORD: ret = write_mem_word(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_WRITE_MEM_LONG: ret = write_mem_long(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_READ_IO_BYTE: ret = read_io_byte(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_READ_IO_WORD: ret = read_io_word(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_READ_IO_LONG: ret = read_io_long(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_READ_IO_BYTE_FAST: ret = read_io_byte_fast(getParameter(0),getParameter(1)); break; case NFPCI_READ_IO_WORD_FAST: ret = read_io_word_fast(getParameter(0),getParameter(1)); break; case NFPCI_READ_IO_LONG_FAST: ret = read_io_long_fast(getParameter(0),getParameter(1)); break; case NFPCI_WRITE_IO_BYTE: ret = write_io_byte(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_WRITE_IO_WORD: ret = write_io_word(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_WRITE_IO_LONG: ret = write_io_long(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_GET_MACHINE_ID: ret = get_machine_id(); break; case NFPCI_GET_PAGESIZE: ret = get_pagesize(); break; case NFPCI_VIRT_TO_BUS: ret = virt_to_bus(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_BUS_TO_VIRT: ret = bus_to_virt(getParameter(0),getParameter(1),getParameter(2)); break; case NFPCI_VIRT_TO_PHYS: ret = virt_to_phys(getParameter(0),getParameter(1)); break; case NFPCI_PHYS_TO_VIRT: ret = phys_to_virt(getParameter(0),getParameter(1)); break; default: D(bug(NFPCI_NAME " unimplemented function #%d", fncode)); break; } D(bug(NFPCI_NAME " function returning with 0x%08x", ret)); return ret; } int32 PciDriver::find_device(uint32 /*device_vendor_id*/, uint32 /*index*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::find_classcode(uint32 /*class_code*/, uint32 /*index*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::read_config_byte(uint32 /*device_handle*/, memptr /*data*/, uint32 /*num_register*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::read_config_word(uint32 /*device_handle*/, memptr /*data*/, uint32 /*num_register*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::read_config_long(uint32 /*device_handle*/, memptr /*data*/, uint32 /*num_register*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::read_config_byte_fast(uint32 /*device_handle*/, uint32 /*num_register*/) { return 0xffffffffUL; } int32 PciDriver::read_config_word_fast(uint32 /*device_handle*/, uint32 /*num_register*/) { return 0xffffffffUL; } int32 PciDriver::read_config_long_fast(uint32 /*device_handle*/, uint32 /*num_register*/) { return 0xffffffffUL; } int32 PciDriver::write_config_byte(uint32 /*device_handle*/, uint32 /*num_register*/, uint32 /*value*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::write_config_word(uint32 /*device_handle*/, uint32 /*num_register*/, uint32 /*value*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::write_config_long(uint32 /*device_handle*/, uint32 /*num_register*/, uint32 /*value*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::hook_interrupt(uint32 /*device_handle*/, memptr /*data*/, uint32 /*parameter*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::unhook_interrupt(uint32 /*device_handle*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::special_cycle(uint32 /*num_bus*/, uint32 /*data*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } /* get_routing */ /* set_interrupt */ int32 PciDriver::get_resource(uint32 /*device_handle*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::get_card_used(uint32 /*device_handle*/, memptr /*callback*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::set_card_used(uint32 /*device_handle*/, memptr /*callback*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::read_mem_byte(uint32 /*device_handle*/, uint32 /*pci_address*/, uint32 /*num_register*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::read_mem_word(uint32 /*device_handle*/, uint32 /*pci_address*/, uint32 /*num_register*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::read_mem_long(uint32 /*device_handle*/, uint32 /*pci_address*/, uint32 /*num_register*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::read_mem_byte_fast(uint32 /*device_handle*/, uint32 /*pci_address*/) { return 0xffffffffL; } int32 PciDriver::read_mem_word_fast(uint32 /*device_handle*/, uint32 /*pci_address*/) { return 0xffffffffL; } int32 PciDriver::read_mem_long_fast(uint32 /*device_handle*/, uint32 /*pci_address*/) { return 0xffffffffL; } int32 PciDriver::write_mem_byte(uint32 /*device_handle*/, uint32 /*pci_address*/, uint32 /*value*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::write_mem_word(uint32 /*device_handle*/, uint32 /*pci_address*/, uint32 /*value*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::write_mem_long(uint32 /*device_handle*/, uint32 /*pci_address*/, uint32 /*value*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::read_io_byte(uint32 /*device_handle*/, uint32 /*pci_address*/, memptr /*data*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::read_io_word(uint32 /*device_handle*/, uint32 /*pci_address*/, memptr /*data*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::read_io_long(uint32 /*device_handle*/, uint32 /*pci_address*/, memptr /*data*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::read_io_byte_fast(uint32 /*device_handle*/, uint32 /*pci_address*/) { return 0xffffffffL; } int32 PciDriver::read_io_word_fast(uint32 /*device_handle*/, uint32 /*pci_address*/) { return 0xffffffffL; } int32 PciDriver::read_io_long_fast(uint32 /*device_handle*/, uint32 /*pci_address*/) { return 0xffffffffL; } int32 PciDriver::write_io_byte(uint32 /*device_handle*/, uint32 /*pci_address*/, uint32 /*value*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::write_io_word(uint32 /*device_handle*/, uint32 /*pci_address*/, uint32 /*value*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::write_io_long(uint32 /*device_handle*/, uint32 /*pci_address*/, uint32 /*value*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::get_machine_id(void) { return ARANYM_PCI_ID; } int32 PciDriver::get_pagesize(void) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::virt_to_bus(uint32 /*device_handle*/, memptr /*virt_cpu_address*/, memptr /*data*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::bus_to_virt(uint32 /*device_handle*/, uint32 /*pci_address*/, memptr /*data*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::virt_to_phys(memptr /*virt_cpu_address*/, memptr /*data*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } int32 PciDriver::phys_to_virt(memptr /*phys_cpu_address*/, memptr /*data*/) { return ATARI_PCI_FUNC_NOT_SUPPORTED; } aranym-1.1.0/src/natfeat/nfosmesa/0000775000175000017500000000000013454637622015226 5ustar joyjoyaranym-1.1.0/src/natfeat/nfosmesa/paramcount-gl.c0000664000175000017500000110702213454637622020146 0ustar joyjoy/* * -- DO NOT EDIT -- * Generated by dyngl.pl from ./tools/glfuncs.h */ static unsigned char const paramcount[NFOSMESA_LAST] = { 0, /* GETVERSION */ 2 /* NFOSMESA_LENGLGETSTRING */, 3 /* NFOSMESA_PUTGLGETSTRING */, 2 /* NFOSMESA_OSMESACREATECONTEXT */, 5 /* NFOSMESA_OSMESACREATECONTEXTEXT */, 1 /* NFOSMESA_OSMESADESTROYCONTEXT */, 5 /* NFOSMESA_OSMESAMAKECURRENT */, 0 /* NFOSMESA_OSMESAGETCURRENTCONTEXT */, 2 /* NFOSMESA_OSMESAPIXELSTORE */, 2 /* NFOSMESA_OSMESAGETINTEGERV */, 5 /* NFOSMESA_OSMESAGETDEPTHBUFFER */, 5 /* NFOSMESA_OSMESAGETCOLORBUFFER */, 1 /* NFOSMESA_OSMESAGETPROCADDRESS */, 1 /* NFOSMESA_GLCLEARINDEX */, 4 /* NFOSMESA_GLCLEARCOLOR */, 1 /* NFOSMESA_GLCLEAR */, 1 /* NFOSMESA_GLINDEXMASK */, 4 /* NFOSMESA_GLCOLORMASK */, 2 /* NFOSMESA_GLALPHAFUNC */, 2 /* NFOSMESA_GLBLENDFUNC */, 1 /* NFOSMESA_GLLOGICOP */, 1 /* NFOSMESA_GLCULLFACE */, 1 /* NFOSMESA_GLFRONTFACE */, 1 /* NFOSMESA_GLPOINTSIZE */, 1 /* NFOSMESA_GLLINEWIDTH */, 2 /* NFOSMESA_GLLINESTIPPLE */, 2 /* NFOSMESA_GLPOLYGONMODE */, 2 /* NFOSMESA_GLPOLYGONOFFSET */, 1 /* NFOSMESA_GLPOLYGONSTIPPLE */, 1 /* NFOSMESA_GLGETPOLYGONSTIPPLE */, 1 /* NFOSMESA_GLEDGEFLAG */, 1 /* NFOSMESA_GLEDGEFLAGV */, 4 /* NFOSMESA_GLSCISSOR */, 2 /* NFOSMESA_GLCLIPPLANE */, 2 /* NFOSMESA_GLGETCLIPPLANE */, 1 /* NFOSMESA_GLDRAWBUFFER */, 1 /* NFOSMESA_GLREADBUFFER */, 1 /* NFOSMESA_GLENABLE */, 1 /* NFOSMESA_GLDISABLE */, 1 /* NFOSMESA_GLISENABLED */, 1 /* NFOSMESA_GLENABLECLIENTSTATE */, 1 /* NFOSMESA_GLDISABLECLIENTSTATE */, 2 /* NFOSMESA_GLGETBOOLEANV */, 2 /* NFOSMESA_GLGETDOUBLEV */, 2 /* NFOSMESA_GLGETFLOATV */, 2 /* NFOSMESA_GLGETINTEGERV */, 1 /* NFOSMESA_GLPUSHATTRIB */, 0 /* NFOSMESA_GLPOPATTRIB */, 1 /* NFOSMESA_GLPUSHCLIENTATTRIB */, 0 /* NFOSMESA_GLPOPCLIENTATTRIB */, 1 /* NFOSMESA_GLRENDERMODE */, 0 /* NFOSMESA_GLGETERROR */, 0 /* NFOSMESA_GLFINISH */, 0 /* NFOSMESA_GLFLUSH */, 2 /* NFOSMESA_GLHINT */, 2 /* NFOSMESA_GLCLEARDEPTH */, 1 /* NFOSMESA_GLDEPTHFUNC */, 1 /* NFOSMESA_GLDEPTHMASK */, 4 /* NFOSMESA_GLDEPTHRANGE */, 4 /* NFOSMESA_GLCLEARACCUM */, 2 /* NFOSMESA_GLACCUM */, 1 /* NFOSMESA_GLMATRIXMODE */, 12 /* NFOSMESA_GLORTHO */, 12 /* NFOSMESA_GLFRUSTUM */, 4 /* NFOSMESA_GLVIEWPORT */, 0 /* NFOSMESA_GLPUSHMATRIX */, 0 /* NFOSMESA_GLPOPMATRIX */, 0 /* NFOSMESA_GLLOADIDENTITY */, 1 /* NFOSMESA_GLLOADMATRIXD */, 1 /* NFOSMESA_GLLOADMATRIXF */, 1 /* NFOSMESA_GLMULTMATRIXD */, 1 /* NFOSMESA_GLMULTMATRIXF */, 8 /* NFOSMESA_GLROTATED */, 4 /* NFOSMESA_GLROTATEF */, 6 /* NFOSMESA_GLSCALED */, 3 /* NFOSMESA_GLSCALEF */, 6 /* NFOSMESA_GLTRANSLATED */, 3 /* NFOSMESA_GLTRANSLATEF */, 1 /* NFOSMESA_GLISLIST */, 2 /* NFOSMESA_GLDELETELISTS */, 1 /* NFOSMESA_GLGENLISTS */, 2 /* NFOSMESA_GLNEWLIST */, 0 /* NFOSMESA_GLENDLIST */, 1 /* NFOSMESA_GLCALLLIST */, 3 /* NFOSMESA_GLCALLLISTS */, 1 /* NFOSMESA_GLLISTBASE */, 1 /* NFOSMESA_GLBEGIN */, 0 /* NFOSMESA_GLEND */, 4 /* NFOSMESA_GLVERTEX2D */, 2 /* NFOSMESA_GLVERTEX2F */, 2 /* NFOSMESA_GLVERTEX2I */, 2 /* NFOSMESA_GLVERTEX2S */, 6 /* NFOSMESA_GLVERTEX3D */, 3 /* NFOSMESA_GLVERTEX3F */, 3 /* NFOSMESA_GLVERTEX3I */, 3 /* NFOSMESA_GLVERTEX3S */, 8 /* NFOSMESA_GLVERTEX4D */, 4 /* NFOSMESA_GLVERTEX4F */, 4 /* NFOSMESA_GLVERTEX4I */, 4 /* NFOSMESA_GLVERTEX4S */, 1 /* NFOSMESA_GLVERTEX2DV */, 1 /* NFOSMESA_GLVERTEX2FV */, 1 /* NFOSMESA_GLVERTEX2IV */, 1 /* NFOSMESA_GLVERTEX2SV */, 1 /* NFOSMESA_GLVERTEX3DV */, 1 /* NFOSMESA_GLVERTEX3FV */, 1 /* NFOSMESA_GLVERTEX3IV */, 1 /* NFOSMESA_GLVERTEX3SV */, 1 /* NFOSMESA_GLVERTEX4DV */, 1 /* NFOSMESA_GLVERTEX4FV */, 1 /* NFOSMESA_GLVERTEX4IV */, 1 /* NFOSMESA_GLVERTEX4SV */, 3 /* NFOSMESA_GLNORMAL3B */, 6 /* NFOSMESA_GLNORMAL3D */, 3 /* NFOSMESA_GLNORMAL3F */, 3 /* NFOSMESA_GLNORMAL3I */, 3 /* NFOSMESA_GLNORMAL3S */, 1 /* NFOSMESA_GLNORMAL3BV */, 1 /* NFOSMESA_GLNORMAL3DV */, 1 /* NFOSMESA_GLNORMAL3FV */, 1 /* NFOSMESA_GLNORMAL3IV */, 1 /* NFOSMESA_GLNORMAL3SV */, 2 /* NFOSMESA_GLINDEXD */, 1 /* NFOSMESA_GLINDEXF */, 1 /* NFOSMESA_GLINDEXI */, 1 /* NFOSMESA_GLINDEXS */, 1 /* NFOSMESA_GLINDEXUB */, 1 /* NFOSMESA_GLINDEXDV */, 1 /* NFOSMESA_GLINDEXFV */, 1 /* NFOSMESA_GLINDEXIV */, 1 /* NFOSMESA_GLINDEXSV */, 1 /* NFOSMESA_GLINDEXUBV */, 3 /* NFOSMESA_GLCOLOR3B */, 6 /* NFOSMESA_GLCOLOR3D */, 3 /* NFOSMESA_GLCOLOR3F */, 3 /* NFOSMESA_GLCOLOR3I */, 3 /* NFOSMESA_GLCOLOR3S */, 3 /* NFOSMESA_GLCOLOR3UB */, 3 /* NFOSMESA_GLCOLOR3UI */, 3 /* NFOSMESA_GLCOLOR3US */, 4 /* NFOSMESA_GLCOLOR4B */, 8 /* NFOSMESA_GLCOLOR4D */, 4 /* NFOSMESA_GLCOLOR4F */, 4 /* NFOSMESA_GLCOLOR4I */, 4 /* NFOSMESA_GLCOLOR4S */, 4 /* NFOSMESA_GLCOLOR4UB */, 4 /* NFOSMESA_GLCOLOR4UI */, 4 /* NFOSMESA_GLCOLOR4US */, 1 /* NFOSMESA_GLCOLOR3BV */, 1 /* NFOSMESA_GLCOLOR3DV */, 1 /* NFOSMESA_GLCOLOR3FV */, 1 /* NFOSMESA_GLCOLOR3IV */, 1 /* NFOSMESA_GLCOLOR3SV */, 1 /* NFOSMESA_GLCOLOR3UBV */, 1 /* NFOSMESA_GLCOLOR3UIV */, 1 /* NFOSMESA_GLCOLOR3USV */, 1 /* NFOSMESA_GLCOLOR4BV */, 1 /* NFOSMESA_GLCOLOR4DV */, 1 /* NFOSMESA_GLCOLOR4FV */, 1 /* NFOSMESA_GLCOLOR4IV */, 1 /* NFOSMESA_GLCOLOR4SV */, 1 /* NFOSMESA_GLCOLOR4UBV */, 1 /* NFOSMESA_GLCOLOR4UIV */, 1 /* NFOSMESA_GLCOLOR4USV */, 2 /* NFOSMESA_GLTEXCOORD1D */, 1 /* NFOSMESA_GLTEXCOORD1F */, 1 /* NFOSMESA_GLTEXCOORD1I */, 1 /* NFOSMESA_GLTEXCOORD1S */, 4 /* NFOSMESA_GLTEXCOORD2D */, 2 /* NFOSMESA_GLTEXCOORD2F */, 2 /* NFOSMESA_GLTEXCOORD2I */, 2 /* NFOSMESA_GLTEXCOORD2S */, 6 /* NFOSMESA_GLTEXCOORD3D */, 3 /* NFOSMESA_GLTEXCOORD3F */, 3 /* NFOSMESA_GLTEXCOORD3I */, 3 /* NFOSMESA_GLTEXCOORD3S */, 8 /* NFOSMESA_GLTEXCOORD4D */, 4 /* NFOSMESA_GLTEXCOORD4F */, 4 /* NFOSMESA_GLTEXCOORD4I */, 4 /* NFOSMESA_GLTEXCOORD4S */, 1 /* NFOSMESA_GLTEXCOORD1DV */, 1 /* NFOSMESA_GLTEXCOORD1FV */, 1 /* NFOSMESA_GLTEXCOORD1IV */, 1 /* NFOSMESA_GLTEXCOORD1SV */, 1 /* NFOSMESA_GLTEXCOORD2DV */, 1 /* NFOSMESA_GLTEXCOORD2FV */, 1 /* NFOSMESA_GLTEXCOORD2IV */, 1 /* NFOSMESA_GLTEXCOORD2SV */, 1 /* NFOSMESA_GLTEXCOORD3DV */, 1 /* NFOSMESA_GLTEXCOORD3FV */, 1 /* NFOSMESA_GLTEXCOORD3IV */, 1 /* NFOSMESA_GLTEXCOORD3SV */, 1 /* NFOSMESA_GLTEXCOORD4DV */, 1 /* NFOSMESA_GLTEXCOORD4FV */, 1 /* NFOSMESA_GLTEXCOORD4IV */, 1 /* NFOSMESA_GLTEXCOORD4SV */, 4 /* NFOSMESA_GLRASTERPOS2D */, 2 /* NFOSMESA_GLRASTERPOS2F */, 2 /* NFOSMESA_GLRASTERPOS2I */, 2 /* NFOSMESA_GLRASTERPOS2S */, 6 /* NFOSMESA_GLRASTERPOS3D */, 3 /* NFOSMESA_GLRASTERPOS3F */, 3 /* NFOSMESA_GLRASTERPOS3I */, 3 /* NFOSMESA_GLRASTERPOS3S */, 8 /* NFOSMESA_GLRASTERPOS4D */, 4 /* NFOSMESA_GLRASTERPOS4F */, 4 /* NFOSMESA_GLRASTERPOS4I */, 4 /* NFOSMESA_GLRASTERPOS4S */, 1 /* NFOSMESA_GLRASTERPOS2DV */, 1 /* NFOSMESA_GLRASTERPOS2FV */, 1 /* NFOSMESA_GLRASTERPOS2IV */, 1 /* NFOSMESA_GLRASTERPOS2SV */, 1 /* NFOSMESA_GLRASTERPOS3DV */, 1 /* NFOSMESA_GLRASTERPOS3FV */, 1 /* NFOSMESA_GLRASTERPOS3IV */, 1 /* NFOSMESA_GLRASTERPOS3SV */, 1 /* NFOSMESA_GLRASTERPOS4DV */, 1 /* NFOSMESA_GLRASTERPOS4FV */, 1 /* NFOSMESA_GLRASTERPOS4IV */, 1 /* NFOSMESA_GLRASTERPOS4SV */, 8 /* NFOSMESA_GLRECTD */, 4 /* NFOSMESA_GLRECTF */, 4 /* NFOSMESA_GLRECTI */, 4 /* NFOSMESA_GLRECTS */, 2 /* NFOSMESA_GLRECTDV */, 2 /* NFOSMESA_GLRECTFV */, 2 /* NFOSMESA_GLRECTIV */, 2 /* NFOSMESA_GLRECTSV */, 4 /* NFOSMESA_GLVERTEXPOINTER */, 3 /* NFOSMESA_GLNORMALPOINTER */, 4 /* NFOSMESA_GLCOLORPOINTER */, 3 /* NFOSMESA_GLINDEXPOINTER */, 4 /* NFOSMESA_GLTEXCOORDPOINTER */, 2 /* NFOSMESA_GLEDGEFLAGPOINTER */, 2 /* NFOSMESA_GLGETPOINTERV */, 1 /* NFOSMESA_GLARRAYELEMENT */, 3 /* NFOSMESA_GLDRAWARRAYS */, 4 /* NFOSMESA_GLDRAWELEMENTS */, 3 /* NFOSMESA_GLINTERLEAVEDARRAYS */, 1 /* NFOSMESA_GLSHADEMODEL */, 3 /* NFOSMESA_GLLIGHTF */, 3 /* NFOSMESA_GLLIGHTI */, 3 /* NFOSMESA_GLLIGHTFV */, 3 /* NFOSMESA_GLLIGHTIV */, 3 /* NFOSMESA_GLGETLIGHTFV */, 3 /* NFOSMESA_GLGETLIGHTIV */, 2 /* NFOSMESA_GLLIGHTMODELF */, 2 /* NFOSMESA_GLLIGHTMODELI */, 2 /* NFOSMESA_GLLIGHTMODELFV */, 2 /* NFOSMESA_GLLIGHTMODELIV */, 3 /* NFOSMESA_GLMATERIALF */, 3 /* NFOSMESA_GLMATERIALI */, 3 /* NFOSMESA_GLMATERIALFV */, 3 /* NFOSMESA_GLMATERIALIV */, 3 /* NFOSMESA_GLGETMATERIALFV */, 3 /* NFOSMESA_GLGETMATERIALIV */, 2 /* NFOSMESA_GLCOLORMATERIAL */, 2 /* NFOSMESA_GLPIXELZOOM */, 2 /* NFOSMESA_GLPIXELSTOREF */, 2 /* NFOSMESA_GLPIXELSTOREI */, 2 /* NFOSMESA_GLPIXELTRANSFERF */, 2 /* NFOSMESA_GLPIXELTRANSFERI */, 3 /* NFOSMESA_GLPIXELMAPFV */, 3 /* NFOSMESA_GLPIXELMAPUIV */, 3 /* NFOSMESA_GLPIXELMAPUSV */, 2 /* NFOSMESA_GLGETPIXELMAPFV */, 2 /* NFOSMESA_GLGETPIXELMAPUIV */, 2 /* NFOSMESA_GLGETPIXELMAPUSV */, 7 /* NFOSMESA_GLBITMAP */, 7 /* NFOSMESA_GLREADPIXELS */, 5 /* NFOSMESA_GLDRAWPIXELS */, 5 /* NFOSMESA_GLCOPYPIXELS */, 3 /* NFOSMESA_GLSTENCILFUNC */, 1 /* NFOSMESA_GLSTENCILMASK */, 3 /* NFOSMESA_GLSTENCILOP */, 1 /* NFOSMESA_GLCLEARSTENCIL */, 4 /* NFOSMESA_GLTEXGEND */, 3 /* NFOSMESA_GLTEXGENF */, 3 /* NFOSMESA_GLTEXGENI */, 3 /* NFOSMESA_GLTEXGENDV */, 3 /* NFOSMESA_GLTEXGENFV */, 3 /* NFOSMESA_GLTEXGENIV */, 3 /* NFOSMESA_GLGETTEXGENDV */, 3 /* NFOSMESA_GLGETTEXGENFV */, 3 /* NFOSMESA_GLGETTEXGENIV */, 3 /* NFOSMESA_GLTEXENVF */, 3 /* NFOSMESA_GLTEXENVI */, 3 /* NFOSMESA_GLTEXENVFV */, 3 /* NFOSMESA_GLTEXENVIV */, 3 /* NFOSMESA_GLGETTEXENVFV */, 3 /* NFOSMESA_GLGETTEXENVIV */, 3 /* NFOSMESA_GLTEXPARAMETERF */, 3 /* NFOSMESA_GLTEXPARAMETERI */, 3 /* NFOSMESA_GLTEXPARAMETERFV */, 3 /* NFOSMESA_GLTEXPARAMETERIV */, 3 /* NFOSMESA_GLGETTEXPARAMETERFV */, 3 /* NFOSMESA_GLGETTEXPARAMETERIV */, 4 /* NFOSMESA_GLGETTEXLEVELPARAMETERFV */, 4 /* NFOSMESA_GLGETTEXLEVELPARAMETERIV */, 8 /* NFOSMESA_GLTEXIMAGE1D */, 9 /* NFOSMESA_GLTEXIMAGE2D */, 5 /* NFOSMESA_GLGETTEXIMAGE */, 2 /* NFOSMESA_GLGENTEXTURES */, 2 /* NFOSMESA_GLDELETETEXTURES */, 2 /* NFOSMESA_GLBINDTEXTURE */, 3 /* NFOSMESA_GLPRIORITIZETEXTURES */, 3 /* NFOSMESA_GLARETEXTURESRESIDENT */, 1 /* NFOSMESA_GLISTEXTURE */, 7 /* NFOSMESA_GLTEXSUBIMAGE1D */, 9 /* NFOSMESA_GLTEXSUBIMAGE2D */, 7 /* NFOSMESA_GLCOPYTEXIMAGE1D */, 8 /* NFOSMESA_GLCOPYTEXIMAGE2D */, 6 /* NFOSMESA_GLCOPYTEXSUBIMAGE1D */, 8 /* NFOSMESA_GLCOPYTEXSUBIMAGE2D */, 8 /* NFOSMESA_GLMAP1D */, 6 /* NFOSMESA_GLMAP1F */, 14 /* NFOSMESA_GLMAP2D */, 10 /* NFOSMESA_GLMAP2F */, 3 /* NFOSMESA_GLGETMAPDV */, 3 /* NFOSMESA_GLGETMAPFV */, 3 /* NFOSMESA_GLGETMAPIV */, 2 /* NFOSMESA_GLEVALCOORD1D */, 1 /* NFOSMESA_GLEVALCOORD1F */, 1 /* NFOSMESA_GLEVALCOORD1DV */, 1 /* NFOSMESA_GLEVALCOORD1FV */, 4 /* NFOSMESA_GLEVALCOORD2D */, 2 /* NFOSMESA_GLEVALCOORD2F */, 1 /* NFOSMESA_GLEVALCOORD2DV */, 1 /* NFOSMESA_GLEVALCOORD2FV */, 5 /* NFOSMESA_GLMAPGRID1D */, 3 /* NFOSMESA_GLMAPGRID1F */, 10 /* NFOSMESA_GLMAPGRID2D */, 6 /* NFOSMESA_GLMAPGRID2F */, 1 /* NFOSMESA_GLEVALPOINT1 */, 2 /* NFOSMESA_GLEVALPOINT2 */, 3 /* NFOSMESA_GLEVALMESH1 */, 5 /* NFOSMESA_GLEVALMESH2 */, 2 /* NFOSMESA_GLFOGF */, 2 /* NFOSMESA_GLFOGI */, 2 /* NFOSMESA_GLFOGFV */, 2 /* NFOSMESA_GLFOGIV */, 3 /* NFOSMESA_GLFEEDBACKBUFFER */, 1 /* NFOSMESA_GLPASSTHROUGH */, 2 /* NFOSMESA_GLSELECTBUFFER */, 0 /* NFOSMESA_GLINITNAMES */, 1 /* NFOSMESA_GLLOADNAME */, 1 /* NFOSMESA_GLPUSHNAME */, 0 /* NFOSMESA_GLPOPNAME */, 1 /* NFOSMESA_GLENABLETRACEMESA */, 1 /* NFOSMESA_GLDISABLETRACEMESA */, 2 /* NFOSMESA_GLNEWTRACEMESA */, 0 /* NFOSMESA_GLENDTRACEMESA */, 1 /* NFOSMESA_GLTRACEASSERTATTRIBMESA */, 1 /* NFOSMESA_GLTRACECOMMENTMESA */, 2 /* NFOSMESA_GLTRACETEXTUREMESA */, 2 /* NFOSMESA_GLTRACELISTMESA */, 2 /* NFOSMESA_GLTRACEPOINTERMESA */, 3 /* NFOSMESA_GLTRACEPOINTERRANGEMESA */, 2 /* NFOSMESA_GLBLENDEQUATIONSEPARATEATI */, 4 /* NFOSMESA_GLBLENDCOLOR */, 1 /* NFOSMESA_GLBLENDEQUATION */, 6 /* NFOSMESA_GLDRAWRANGEELEMENTS */, 6 /* NFOSMESA_GLCOLORTABLE */, 3 /* NFOSMESA_GLCOLORTABLEPARAMETERFV */, 3 /* NFOSMESA_GLCOLORTABLEPARAMETERIV */, 5 /* NFOSMESA_GLCOPYCOLORTABLE */, 4 /* NFOSMESA_GLGETCOLORTABLE */, 3 /* NFOSMESA_GLGETCOLORTABLEPARAMETERFV */, 3 /* NFOSMESA_GLGETCOLORTABLEPARAMETERIV */, 6 /* NFOSMESA_GLCOLORSUBTABLE */, 5 /* NFOSMESA_GLCOPYCOLORSUBTABLE */, 6 /* NFOSMESA_GLCONVOLUTIONFILTER1D */, 7 /* NFOSMESA_GLCONVOLUTIONFILTER2D */, 3 /* NFOSMESA_GLCONVOLUTIONPARAMETERF */, 3 /* NFOSMESA_GLCONVOLUTIONPARAMETERFV */, 3 /* NFOSMESA_GLCONVOLUTIONPARAMETERI */, 3 /* NFOSMESA_GLCONVOLUTIONPARAMETERIV */, 5 /* NFOSMESA_GLCOPYCONVOLUTIONFILTER1D */, 6 /* NFOSMESA_GLCOPYCONVOLUTIONFILTER2D */, 4 /* NFOSMESA_GLGETCONVOLUTIONFILTER */, 3 /* NFOSMESA_GLGETCONVOLUTIONPARAMETERFV */, 3 /* NFOSMESA_GLGETCONVOLUTIONPARAMETERIV */, 6 /* NFOSMESA_GLGETSEPARABLEFILTER */, 8 /* NFOSMESA_GLSEPARABLEFILTER2D */, 5 /* NFOSMESA_GLGETHISTOGRAM */, 3 /* NFOSMESA_GLGETHISTOGRAMPARAMETERFV */, 3 /* NFOSMESA_GLGETHISTOGRAMPARAMETERIV */, 5 /* NFOSMESA_GLGETMINMAX */, 3 /* NFOSMESA_GLGETMINMAXPARAMETERFV */, 3 /* NFOSMESA_GLGETMINMAXPARAMETERIV */, 4 /* NFOSMESA_GLHISTOGRAM */, 3 /* NFOSMESA_GLMINMAX */, 1 /* NFOSMESA_GLRESETHISTOGRAM */, 1 /* NFOSMESA_GLRESETMINMAX */, 10 /* NFOSMESA_GLTEXIMAGE3D */, 11 /* NFOSMESA_GLTEXSUBIMAGE3D */, 9 /* NFOSMESA_GLCOPYTEXSUBIMAGE3D */, 1 /* NFOSMESA_GLACTIVETEXTURE */, 1 /* NFOSMESA_GLCLIENTACTIVETEXTURE */, 3 /* NFOSMESA_GLMULTITEXCOORD1D */, 2 /* NFOSMESA_GLMULTITEXCOORD1DV */, 2 /* NFOSMESA_GLMULTITEXCOORD1F */, 2 /* NFOSMESA_GLMULTITEXCOORD1FV */, 2 /* NFOSMESA_GLMULTITEXCOORD1I */, 2 /* NFOSMESA_GLMULTITEXCOORD1IV */, 2 /* NFOSMESA_GLMULTITEXCOORD1S */, 2 /* NFOSMESA_GLMULTITEXCOORD1SV */, 5 /* NFOSMESA_GLMULTITEXCOORD2D */, 2 /* NFOSMESA_GLMULTITEXCOORD2DV */, 3 /* NFOSMESA_GLMULTITEXCOORD2F */, 2 /* NFOSMESA_GLMULTITEXCOORD2FV */, 3 /* NFOSMESA_GLMULTITEXCOORD2I */, 2 /* NFOSMESA_GLMULTITEXCOORD2IV */, 3 /* NFOSMESA_GLMULTITEXCOORD2S */, 2 /* NFOSMESA_GLMULTITEXCOORD2SV */, 7 /* NFOSMESA_GLMULTITEXCOORD3D */, 2 /* NFOSMESA_GLMULTITEXCOORD3DV */, 4 /* NFOSMESA_GLMULTITEXCOORD3F */, 2 /* NFOSMESA_GLMULTITEXCOORD3FV */, 4 /* NFOSMESA_GLMULTITEXCOORD3I */, 2 /* NFOSMESA_GLMULTITEXCOORD3IV */, 4 /* NFOSMESA_GLMULTITEXCOORD3S */, 2 /* NFOSMESA_GLMULTITEXCOORD3SV */, 9 /* NFOSMESA_GLMULTITEXCOORD4D */, 2 /* NFOSMESA_GLMULTITEXCOORD4DV */, 5 /* NFOSMESA_GLMULTITEXCOORD4F */, 2 /* NFOSMESA_GLMULTITEXCOORD4FV */, 5 /* NFOSMESA_GLMULTITEXCOORD4I */, 2 /* NFOSMESA_GLMULTITEXCOORD4IV */, 5 /* NFOSMESA_GLMULTITEXCOORD4S */, 2 /* NFOSMESA_GLMULTITEXCOORD4SV */, 1 /* NFOSMESA_GLLOADTRANSPOSEMATRIXF */, 1 /* NFOSMESA_GLLOADTRANSPOSEMATRIXD */, 1 /* NFOSMESA_GLMULTTRANSPOSEMATRIXF */, 1 /* NFOSMESA_GLMULTTRANSPOSEMATRIXD */, 2 /* NFOSMESA_GLSAMPLECOVERAGE */, 9 /* NFOSMESA_GLCOMPRESSEDTEXIMAGE3D */, 8 /* NFOSMESA_GLCOMPRESSEDTEXIMAGE2D */, 7 /* NFOSMESA_GLCOMPRESSEDTEXIMAGE1D */, 11 /* NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3D */, 9 /* NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2D */, 7 /* NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1D */, 3 /* NFOSMESA_GLGETCOMPRESSEDTEXIMAGE */, 4 /* NFOSMESA_GLBLENDFUNCSEPARATE */, 1 /* NFOSMESA_GLFOGCOORDF */, 1 /* NFOSMESA_GLFOGCOORDFV */, 2 /* NFOSMESA_GLFOGCOORDD */, 1 /* NFOSMESA_GLFOGCOORDDV */, 3 /* NFOSMESA_GLFOGCOORDPOINTER */, 4 /* NFOSMESA_GLMULTIDRAWARRAYS */, 5 /* NFOSMESA_GLMULTIDRAWELEMENTS */, 2 /* NFOSMESA_GLPOINTPARAMETERF */, 2 /* NFOSMESA_GLPOINTPARAMETERFV */, 2 /* NFOSMESA_GLPOINTPARAMETERI */, 2 /* NFOSMESA_GLPOINTPARAMETERIV */, 3 /* NFOSMESA_GLSECONDARYCOLOR3B */, 1 /* NFOSMESA_GLSECONDARYCOLOR3BV */, 6 /* NFOSMESA_GLSECONDARYCOLOR3D */, 1 /* NFOSMESA_GLSECONDARYCOLOR3DV */, 3 /* NFOSMESA_GLSECONDARYCOLOR3F */, 1 /* NFOSMESA_GLSECONDARYCOLOR3FV */, 3 /* NFOSMESA_GLSECONDARYCOLOR3I */, 1 /* NFOSMESA_GLSECONDARYCOLOR3IV */, 3 /* NFOSMESA_GLSECONDARYCOLOR3S */, 1 /* NFOSMESA_GLSECONDARYCOLOR3SV */, 3 /* NFOSMESA_GLSECONDARYCOLOR3UB */, 1 /* NFOSMESA_GLSECONDARYCOLOR3UBV */, 3 /* NFOSMESA_GLSECONDARYCOLOR3UI */, 1 /* NFOSMESA_GLSECONDARYCOLOR3UIV */, 3 /* NFOSMESA_GLSECONDARYCOLOR3US */, 1 /* NFOSMESA_GLSECONDARYCOLOR3USV */, 4 /* NFOSMESA_GLSECONDARYCOLORPOINTER */, 4 /* NFOSMESA_GLWINDOWPOS2D */, 1 /* NFOSMESA_GLWINDOWPOS2DV */, 2 /* NFOSMESA_GLWINDOWPOS2F */, 1 /* NFOSMESA_GLWINDOWPOS2FV */, 2 /* NFOSMESA_GLWINDOWPOS2I */, 1 /* NFOSMESA_GLWINDOWPOS2IV */, 2 /* NFOSMESA_GLWINDOWPOS2S */, 1 /* NFOSMESA_GLWINDOWPOS2SV */, 6 /* NFOSMESA_GLWINDOWPOS3D */, 1 /* NFOSMESA_GLWINDOWPOS3DV */, 3 /* NFOSMESA_GLWINDOWPOS3F */, 1 /* NFOSMESA_GLWINDOWPOS3FV */, 3 /* NFOSMESA_GLWINDOWPOS3I */, 1 /* NFOSMESA_GLWINDOWPOS3IV */, 3 /* NFOSMESA_GLWINDOWPOS3S */, 1 /* NFOSMESA_GLWINDOWPOS3SV */, 2 /* NFOSMESA_GLGENQUERIES */, 2 /* NFOSMESA_GLDELETEQUERIES */, 1 /* NFOSMESA_GLISQUERY */, 2 /* NFOSMESA_GLBEGINQUERY */, 1 /* NFOSMESA_GLENDQUERY */, 3 /* NFOSMESA_GLGETQUERYIV */, 3 /* NFOSMESA_GLGETQUERYOBJECTIV */, 3 /* NFOSMESA_GLGETQUERYOBJECTUIV */, 2 /* NFOSMESA_GLBINDBUFFER */, 2 /* NFOSMESA_GLDELETEBUFFERS */, 2 /* NFOSMESA_GLGENBUFFERS */, 1 /* NFOSMESA_GLISBUFFER */, 4 /* NFOSMESA_GLBUFFERDATA */, 4 /* NFOSMESA_GLBUFFERSUBDATA */, 4 /* NFOSMESA_GLGETBUFFERSUBDATA */, 2 /* NFOSMESA_GLMAPBUFFER */, 1 /* NFOSMESA_GLUNMAPBUFFER */, 3 /* NFOSMESA_GLGETBUFFERPARAMETERIV */, 3 /* NFOSMESA_GLGETBUFFERPOINTERV */, 1 /* NFOSMESA_GLACTIVETEXTUREARB */, 1 /* NFOSMESA_GLCLIENTACTIVETEXTUREARB */, 3 /* NFOSMESA_GLMULTITEXCOORD1DARB */, 2 /* NFOSMESA_GLMULTITEXCOORD1DVARB */, 2 /* NFOSMESA_GLMULTITEXCOORD1FARB */, 2 /* NFOSMESA_GLMULTITEXCOORD1FVARB */, 2 /* NFOSMESA_GLMULTITEXCOORD1IARB */, 2 /* NFOSMESA_GLMULTITEXCOORD1IVARB */, 2 /* NFOSMESA_GLMULTITEXCOORD1SARB */, 2 /* NFOSMESA_GLMULTITEXCOORD1SVARB */, 5 /* NFOSMESA_GLMULTITEXCOORD2DARB */, 2 /* NFOSMESA_GLMULTITEXCOORD2DVARB */, 3 /* NFOSMESA_GLMULTITEXCOORD2FARB */, 2 /* NFOSMESA_GLMULTITEXCOORD2FVARB */, 3 /* NFOSMESA_GLMULTITEXCOORD2IARB */, 2 /* NFOSMESA_GLMULTITEXCOORD2IVARB */, 3 /* NFOSMESA_GLMULTITEXCOORD2SARB */, 2 /* NFOSMESA_GLMULTITEXCOORD2SVARB */, 7 /* NFOSMESA_GLMULTITEXCOORD3DARB */, 2 /* NFOSMESA_GLMULTITEXCOORD3DVARB */, 4 /* NFOSMESA_GLMULTITEXCOORD3FARB */, 2 /* NFOSMESA_GLMULTITEXCOORD3FVARB */, 4 /* NFOSMESA_GLMULTITEXCOORD3IARB */, 2 /* NFOSMESA_GLMULTITEXCOORD3IVARB */, 4 /* NFOSMESA_GLMULTITEXCOORD3SARB */, 2 /* NFOSMESA_GLMULTITEXCOORD3SVARB */, 9 /* NFOSMESA_GLMULTITEXCOORD4DARB */, 2 /* NFOSMESA_GLMULTITEXCOORD4DVARB */, 5 /* NFOSMESA_GLMULTITEXCOORD4FARB */, 2 /* NFOSMESA_GLMULTITEXCOORD4FVARB */, 5 /* NFOSMESA_GLMULTITEXCOORD4IARB */, 2 /* NFOSMESA_GLMULTITEXCOORD4IVARB */, 5 /* NFOSMESA_GLMULTITEXCOORD4SARB */, 2 /* NFOSMESA_GLMULTITEXCOORD4SVARB */, 1 /* NFOSMESA_GLLOADTRANSPOSEMATRIXFARB */, 1 /* NFOSMESA_GLLOADTRANSPOSEMATRIXDARB */, 1 /* NFOSMESA_GLMULTTRANSPOSEMATRIXFARB */, 1 /* NFOSMESA_GLMULTTRANSPOSEMATRIXDARB */, 2 /* NFOSMESA_GLSAMPLECOVERAGEARB */, 9 /* NFOSMESA_GLCOMPRESSEDTEXIMAGE3DARB */, 8 /* NFOSMESA_GLCOMPRESSEDTEXIMAGE2DARB */, 7 /* NFOSMESA_GLCOMPRESSEDTEXIMAGE1DARB */, 11 /* NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3DARB */, 9 /* NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2DARB */, 7 /* NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1DARB */, 3 /* NFOSMESA_GLGETCOMPRESSEDTEXIMAGEARB */, 2 /* NFOSMESA_GLPOINTPARAMETERFARB */, 2 /* NFOSMESA_GLPOINTPARAMETERFVARB */, 2 /* NFOSMESA_GLWEIGHTBVARB */, 2 /* NFOSMESA_GLWEIGHTSVARB */, 2 /* NFOSMESA_GLWEIGHTIVARB */, 2 /* NFOSMESA_GLWEIGHTFVARB */, 2 /* NFOSMESA_GLWEIGHTDVARB */, 2 /* NFOSMESA_GLWEIGHTUBVARB */, 2 /* NFOSMESA_GLWEIGHTUSVARB */, 2 /* NFOSMESA_GLWEIGHTUIVARB */, 4 /* NFOSMESA_GLWEIGHTPOINTERARB */, 1 /* NFOSMESA_GLVERTEXBLENDARB */, 1 /* NFOSMESA_GLCURRENTPALETTEMATRIXARB */, 2 /* NFOSMESA_GLMATRIXINDEXUBVARB */, 2 /* NFOSMESA_GLMATRIXINDEXUSVARB */, 2 /* NFOSMESA_GLMATRIXINDEXUIVARB */, 4 /* NFOSMESA_GLMATRIXINDEXPOINTERARB */, 4 /* NFOSMESA_GLWINDOWPOS2DARB */, 1 /* NFOSMESA_GLWINDOWPOS2DVARB */, 2 /* NFOSMESA_GLWINDOWPOS2FARB */, 1 /* NFOSMESA_GLWINDOWPOS2FVARB */, 2 /* NFOSMESA_GLWINDOWPOS2IARB */, 1 /* NFOSMESA_GLWINDOWPOS2IVARB */, 2 /* NFOSMESA_GLWINDOWPOS2SARB */, 1 /* NFOSMESA_GLWINDOWPOS2SVARB */, 6 /* NFOSMESA_GLWINDOWPOS3DARB */, 1 /* NFOSMESA_GLWINDOWPOS3DVARB */, 3 /* NFOSMESA_GLWINDOWPOS3FARB */, 1 /* NFOSMESA_GLWINDOWPOS3FVARB */, 3 /* NFOSMESA_GLWINDOWPOS3IARB */, 1 /* NFOSMESA_GLWINDOWPOS3IVARB */, 3 /* NFOSMESA_GLWINDOWPOS3SARB */, 1 /* NFOSMESA_GLWINDOWPOS3SVARB */, 3 /* NFOSMESA_GLVERTEXATTRIB1DARB */, 2 /* NFOSMESA_GLVERTEXATTRIB1DVARB */, 2 /* NFOSMESA_GLVERTEXATTRIB1FARB */, 2 /* NFOSMESA_GLVERTEXATTRIB1FVARB */, 2 /* NFOSMESA_GLVERTEXATTRIB1SARB */, 2 /* NFOSMESA_GLVERTEXATTRIB1SVARB */, 5 /* NFOSMESA_GLVERTEXATTRIB2DARB */, 2 /* NFOSMESA_GLVERTEXATTRIB2DVARB */, 3 /* NFOSMESA_GLVERTEXATTRIB2FARB */, 2 /* NFOSMESA_GLVERTEXATTRIB2FVARB */, 3 /* NFOSMESA_GLVERTEXATTRIB2SARB */, 2 /* NFOSMESA_GLVERTEXATTRIB2SVARB */, 7 /* NFOSMESA_GLVERTEXATTRIB3DARB */, 2 /* NFOSMESA_GLVERTEXATTRIB3DVARB */, 4 /* NFOSMESA_GLVERTEXATTRIB3FARB */, 2 /* NFOSMESA_GLVERTEXATTRIB3FVARB */, 4 /* NFOSMESA_GLVERTEXATTRIB3SARB */, 2 /* NFOSMESA_GLVERTEXATTRIB3SVARB */, 2 /* NFOSMESA_GLVERTEXATTRIB4NBVARB */, 2 /* NFOSMESA_GLVERTEXATTRIB4NIVARB */, 2 /* NFOSMESA_GLVERTEXATTRIB4NSVARB */, 5 /* NFOSMESA_GLVERTEXATTRIB4NUBARB */, 2 /* NFOSMESA_GLVERTEXATTRIB4NUBVARB */, 2 /* NFOSMESA_GLVERTEXATTRIB4NUIVARB */, 2 /* NFOSMESA_GLVERTEXATTRIB4NUSVARB */, 2 /* NFOSMESA_GLVERTEXATTRIB4BVARB */, 9 /* NFOSMESA_GLVERTEXATTRIB4DARB */, 2 /* NFOSMESA_GLVERTEXATTRIB4DVARB */, 5 /* NFOSMESA_GLVERTEXATTRIB4FARB */, 2 /* NFOSMESA_GLVERTEXATTRIB4FVARB */, 2 /* NFOSMESA_GLVERTEXATTRIB4IVARB */, 5 /* NFOSMESA_GLVERTEXATTRIB4SARB */, 2 /* NFOSMESA_GLVERTEXATTRIB4SVARB */, 2 /* NFOSMESA_GLVERTEXATTRIB4UBVARB */, 2 /* NFOSMESA_GLVERTEXATTRIB4UIVARB */, 2 /* NFOSMESA_GLVERTEXATTRIB4USVARB */, 6 /* NFOSMESA_GLVERTEXATTRIBPOINTERARB */, 1 /* NFOSMESA_GLENABLEVERTEXATTRIBARRAYARB */, 1 /* NFOSMESA_GLDISABLEVERTEXATTRIBARRAYARB */, 4 /* NFOSMESA_GLPROGRAMSTRINGARB */, 2 /* NFOSMESA_GLBINDPROGRAMARB */, 2 /* NFOSMESA_GLDELETEPROGRAMSARB */, 2 /* NFOSMESA_GLGENPROGRAMSARB */, 10 /* NFOSMESA_GLPROGRAMENVPARAMETER4DARB */, 3 /* NFOSMESA_GLPROGRAMENVPARAMETER4DVARB */, 6 /* NFOSMESA_GLPROGRAMENVPARAMETER4FARB */, 3 /* NFOSMESA_GLPROGRAMENVPARAMETER4FVARB */, 10 /* NFOSMESA_GLPROGRAMLOCALPARAMETER4DARB */, 3 /* NFOSMESA_GLPROGRAMLOCALPARAMETER4DVARB */, 6 /* NFOSMESA_GLPROGRAMLOCALPARAMETER4FARB */, 3 /* NFOSMESA_GLPROGRAMLOCALPARAMETER4FVARB */, 3 /* NFOSMESA_GLGETPROGRAMENVPARAMETERDVARB */, 3 /* NFOSMESA_GLGETPROGRAMENVPARAMETERFVARB */, 3 /* NFOSMESA_GLGETPROGRAMLOCALPARAMETERDVARB */, 3 /* NFOSMESA_GLGETPROGRAMLOCALPARAMETERFVARB */, 3 /* NFOSMESA_GLGETPROGRAMIVARB */, 3 /* NFOSMESA_GLGETPROGRAMSTRINGARB */, 3 /* NFOSMESA_GLGETVERTEXATTRIBDVARB */, 3 /* NFOSMESA_GLGETVERTEXATTRIBFVARB */, 3 /* NFOSMESA_GLGETVERTEXATTRIBIVARB */, 3 /* NFOSMESA_GLGETVERTEXATTRIBPOINTERVARB */, 1 /* NFOSMESA_GLISPROGRAMARB */, 2 /* NFOSMESA_GLBINDBUFFERARB */, 2 /* NFOSMESA_GLDELETEBUFFERSARB */, 2 /* NFOSMESA_GLGENBUFFERSARB */, 1 /* NFOSMESA_GLISBUFFERARB */, 4 /* NFOSMESA_GLBUFFERDATAARB */, 4 /* NFOSMESA_GLBUFFERSUBDATAARB */, 4 /* NFOSMESA_GLGETBUFFERSUBDATAARB */, 2 /* NFOSMESA_GLMAPBUFFERARB */, 1 /* NFOSMESA_GLUNMAPBUFFERARB */, 3 /* NFOSMESA_GLGETBUFFERPARAMETERIVARB */, 3 /* NFOSMESA_GLGETBUFFERPOINTERVARB */, 2 /* NFOSMESA_GLGENQUERIESARB */, 2 /* NFOSMESA_GLDELETEQUERIESARB */, 1 /* NFOSMESA_GLISQUERYARB */, 2 /* NFOSMESA_GLBEGINQUERYARB */, 1 /* NFOSMESA_GLENDQUERYARB */, 3 /* NFOSMESA_GLGETQUERYIVARB */, 3 /* NFOSMESA_GLGETQUERYOBJECTIVARB */, 3 /* NFOSMESA_GLGETQUERYOBJECTUIVARB */, 1 /* NFOSMESA_GLDELETEOBJECTARB */, 1 /* NFOSMESA_GLGETHANDLEARB */, 2 /* NFOSMESA_GLDETACHOBJECTARB */, 1 /* NFOSMESA_GLCREATESHADEROBJECTARB */, 4 /* NFOSMESA_GLSHADERSOURCEARB */, 1 /* NFOSMESA_GLCOMPILESHADERARB */, 0 /* NFOSMESA_GLCREATEPROGRAMOBJECTARB */, 2 /* NFOSMESA_GLATTACHOBJECTARB */, 1 /* NFOSMESA_GLLINKPROGRAMARB */, 1 /* NFOSMESA_GLUSEPROGRAMOBJECTARB */, 1 /* NFOSMESA_GLVALIDATEPROGRAMARB */, 2 /* NFOSMESA_GLUNIFORM1FARB */, 3 /* NFOSMESA_GLUNIFORM2FARB */, 4 /* NFOSMESA_GLUNIFORM3FARB */, 5 /* NFOSMESA_GLUNIFORM4FARB */, 2 /* NFOSMESA_GLUNIFORM1IARB */, 3 /* NFOSMESA_GLUNIFORM2IARB */, 4 /* NFOSMESA_GLUNIFORM3IARB */, 5 /* NFOSMESA_GLUNIFORM4IARB */, 3 /* NFOSMESA_GLUNIFORM1FVARB */, 3 /* NFOSMESA_GLUNIFORM2FVARB */, 3 /* NFOSMESA_GLUNIFORM3FVARB */, 3 /* NFOSMESA_GLUNIFORM4FVARB */, 3 /* NFOSMESA_GLUNIFORM1IVARB */, 3 /* NFOSMESA_GLUNIFORM2IVARB */, 3 /* NFOSMESA_GLUNIFORM3IVARB */, 3 /* NFOSMESA_GLUNIFORM4IVARB */, 4 /* NFOSMESA_GLUNIFORMMATRIX2FVARB */, 4 /* NFOSMESA_GLUNIFORMMATRIX3FVARB */, 4 /* NFOSMESA_GLUNIFORMMATRIX4FVARB */, 3 /* NFOSMESA_GLGETOBJECTPARAMETERFVARB */, 3 /* NFOSMESA_GLGETOBJECTPARAMETERIVARB */, 4 /* NFOSMESA_GLGETINFOLOGARB */, 4 /* NFOSMESA_GLGETATTACHEDOBJECTSARB */, 2 /* NFOSMESA_GLGETUNIFORMLOCATIONARB */, 7 /* NFOSMESA_GLGETACTIVEUNIFORMARB */, 3 /* NFOSMESA_GLGETUNIFORMFVARB */, 3 /* NFOSMESA_GLGETUNIFORMIVARB */, 4 /* NFOSMESA_GLGETSHADERSOURCEARB */, 3 /* NFOSMESA_GLBINDATTRIBLOCATIONARB */, 7 /* NFOSMESA_GLGETACTIVEATTRIBARB */, 2 /* NFOSMESA_GLGETATTRIBLOCATIONARB */, 2 /* NFOSMESA_GLDRAWBUFFERSARB */, 4 /* NFOSMESA_GLBLENDCOLOREXT */, 2 /* NFOSMESA_GLPOLYGONOFFSETEXT */, 10 /* NFOSMESA_GLTEXIMAGE3DEXT */, 11 /* NFOSMESA_GLTEXSUBIMAGE3DEXT */, 3 /* NFOSMESA_GLGETTEXFILTERFUNCSGIS */, 4 /* NFOSMESA_GLTEXFILTERFUNCSGIS */, 7 /* NFOSMESA_GLTEXSUBIMAGE1DEXT */, 9 /* NFOSMESA_GLTEXSUBIMAGE2DEXT */, 7 /* NFOSMESA_GLCOPYTEXIMAGE1DEXT */, 8 /* NFOSMESA_GLCOPYTEXIMAGE2DEXT */, 6 /* NFOSMESA_GLCOPYTEXSUBIMAGE1DEXT */, 8 /* NFOSMESA_GLCOPYTEXSUBIMAGE2DEXT */, 9 /* NFOSMESA_GLCOPYTEXSUBIMAGE3DEXT */, 5 /* NFOSMESA_GLGETHISTOGRAMEXT */, 3 /* NFOSMESA_GLGETHISTOGRAMPARAMETERFVEXT */, 3 /* NFOSMESA_GLGETHISTOGRAMPARAMETERIVEXT */, 5 /* NFOSMESA_GLGETMINMAXEXT */, 3 /* NFOSMESA_GLGETMINMAXPARAMETERFVEXT */, 3 /* NFOSMESA_GLGETMINMAXPARAMETERIVEXT */, 4 /* NFOSMESA_GLHISTOGRAMEXT */, 3 /* NFOSMESA_GLMINMAXEXT */, 1 /* NFOSMESA_GLRESETHISTOGRAMEXT */, 1 /* NFOSMESA_GLRESETMINMAXEXT */, 6 /* NFOSMESA_GLCONVOLUTIONFILTER1DEXT */, 7 /* NFOSMESA_GLCONVOLUTIONFILTER2DEXT */, 3 /* NFOSMESA_GLCONVOLUTIONPARAMETERFEXT */, 3 /* NFOSMESA_GLCONVOLUTIONPARAMETERFVEXT */, 3 /* NFOSMESA_GLCONVOLUTIONPARAMETERIEXT */, 3 /* NFOSMESA_GLCONVOLUTIONPARAMETERIVEXT */, 5 /* NFOSMESA_GLCOPYCONVOLUTIONFILTER1DEXT */, 6 /* NFOSMESA_GLCOPYCONVOLUTIONFILTER2DEXT */, 4 /* NFOSMESA_GLGETCONVOLUTIONFILTEREXT */, 3 /* NFOSMESA_GLGETCONVOLUTIONPARAMETERFVEXT */, 3 /* NFOSMESA_GLGETCONVOLUTIONPARAMETERIVEXT */, 6 /* NFOSMESA_GLGETSEPARABLEFILTEREXT */, 8 /* NFOSMESA_GLSEPARABLEFILTER2DEXT */, 6 /* NFOSMESA_GLCOLORTABLESGI */, 3 /* NFOSMESA_GLCOLORTABLEPARAMETERFVSGI */, 3 /* NFOSMESA_GLCOLORTABLEPARAMETERIVSGI */, 5 /* NFOSMESA_GLCOPYCOLORTABLESGI */, 4 /* NFOSMESA_GLGETCOLORTABLESGI */, 3 /* NFOSMESA_GLGETCOLORTABLEPARAMETERFVSGI */, 3 /* NFOSMESA_GLGETCOLORTABLEPARAMETERIVSGI */, 1 /* NFOSMESA_GLPIXELTEXGENSGIX */, 2 /* NFOSMESA_GLPIXELTEXGENPARAMETERISGIS */, 2 /* NFOSMESA_GLPIXELTEXGENPARAMETERIVSGIS */, 2 /* NFOSMESA_GLPIXELTEXGENPARAMETERFSGIS */, 2 /* NFOSMESA_GLPIXELTEXGENPARAMETERFVSGIS */, 2 /* NFOSMESA_GLGETPIXELTEXGENPARAMETERIVSGIS */, 2 /* NFOSMESA_GLGETPIXELTEXGENPARAMETERFVSGIS */, 11 /* NFOSMESA_GLTEXIMAGE4DSGIS */, 13 /* NFOSMESA_GLTEXSUBIMAGE4DSGIS */, 3 /* NFOSMESA_GLARETEXTURESRESIDENTEXT */, 2 /* NFOSMESA_GLBINDTEXTUREEXT */, 2 /* NFOSMESA_GLDELETETEXTURESEXT */, 2 /* NFOSMESA_GLGENTEXTURESEXT */, 1 /* NFOSMESA_GLISTEXTUREEXT */, 3 /* NFOSMESA_GLPRIORITIZETEXTURESEXT */, 3 /* NFOSMESA_GLDETAILTEXFUNCSGIS */, 2 /* NFOSMESA_GLGETDETAILTEXFUNCSGIS */, 3 /* NFOSMESA_GLSHARPENTEXFUNCSGIS */, 2 /* NFOSMESA_GLGETSHARPENTEXFUNCSGIS */, 2 /* NFOSMESA_GLSAMPLEMASKSGIS */, 1 /* NFOSMESA_GLSAMPLEPATTERNSGIS */, 1 /* NFOSMESA_GLARRAYELEMENTEXT */, 5 /* NFOSMESA_GLCOLORPOINTEREXT */, 3 /* NFOSMESA_GLDRAWARRAYSEXT */, 3 /* NFOSMESA_GLEDGEFLAGPOINTEREXT */, 2 /* NFOSMESA_GLGETPOINTERVEXT */, 4 /* NFOSMESA_GLINDEXPOINTEREXT */, 4 /* NFOSMESA_GLNORMALPOINTEREXT */, 5 /* NFOSMESA_GLTEXCOORDPOINTEREXT */, 5 /* NFOSMESA_GLVERTEXPOINTEREXT */, 1 /* NFOSMESA_GLBLENDEQUATIONEXT */, 2 /* NFOSMESA_GLSPRITEPARAMETERFSGIX */, 2 /* NFOSMESA_GLSPRITEPARAMETERFVSGIX */, 2 /* NFOSMESA_GLSPRITEPARAMETERISGIX */, 2 /* NFOSMESA_GLSPRITEPARAMETERIVSGIX */, 2 /* NFOSMESA_GLPOINTPARAMETERFEXT */, 2 /* NFOSMESA_GLPOINTPARAMETERFVEXT */, 2 /* NFOSMESA_GLPOINTPARAMETERFSGIS */, 2 /* NFOSMESA_GLPOINTPARAMETERFVSGIS */, 0 /* NFOSMESA_GLGETINSTRUMENTSSGIX */, 2 /* NFOSMESA_GLINSTRUMENTSBUFFERSGIX */, 1 /* NFOSMESA_GLPOLLINSTRUMENTSSGIX */, 1 /* NFOSMESA_GLREADINSTRUMENTSSGIX */, 0 /* NFOSMESA_GLSTARTINSTRUMENTSSGIX */, 1 /* NFOSMESA_GLSTOPINSTRUMENTSSGIX */, 1 /* NFOSMESA_GLFRAMEZOOMSGIX */, 0 /* NFOSMESA_GLTAGSAMPLEBUFFERSGIX */, 20 /* NFOSMESA_GLDEFORMATIONMAP3DSGIX */, 14 /* NFOSMESA_GLDEFORMATIONMAP3FSGIX */, 1 /* NFOSMESA_GLDEFORMSGIX */, 1 /* NFOSMESA_GLLOADIDENTITYDEFORMATIONMAPSGIX */, 1 /* NFOSMESA_GLREFERENCEPLANESGIX */, 0 /* NFOSMESA_GLFLUSHRASTERSGIX */, 2 /* NFOSMESA_GLFOGFUNCSGIS */, 1 /* NFOSMESA_GLGETFOGFUNCSGIS */, 3 /* NFOSMESA_GLIMAGETRANSFORMPARAMETERIHP */, 3 /* NFOSMESA_GLIMAGETRANSFORMPARAMETERFHP */, 3 /* NFOSMESA_GLIMAGETRANSFORMPARAMETERIVHP */, 3 /* NFOSMESA_GLIMAGETRANSFORMPARAMETERFVHP */, 3 /* NFOSMESA_GLGETIMAGETRANSFORMPARAMETERIVHP */, 3 /* NFOSMESA_GLGETIMAGETRANSFORMPARAMETERFVHP */, 6 /* NFOSMESA_GLCOLORSUBTABLEEXT */, 5 /* NFOSMESA_GLCOPYCOLORSUBTABLEEXT */, 2 /* NFOSMESA_GLHINTPGI */, 6 /* NFOSMESA_GLCOLORTABLEEXT */, 4 /* NFOSMESA_GLGETCOLORTABLEEXT */, 3 /* NFOSMESA_GLGETCOLORTABLEPARAMETERIVEXT */, 3 /* NFOSMESA_GLGETCOLORTABLEPARAMETERFVEXT */, 3 /* NFOSMESA_GLGETLISTPARAMETERFVSGIX */, 3 /* NFOSMESA_GLGETLISTPARAMETERIVSGIX */, 3 /* NFOSMESA_GLLISTPARAMETERFSGIX */, 3 /* NFOSMESA_GLLISTPARAMETERFVSGIX */, 3 /* NFOSMESA_GLLISTPARAMETERISGIX */, 3 /* NFOSMESA_GLLISTPARAMETERIVSGIX */, 2 /* NFOSMESA_GLINDEXMATERIALEXT */, 2 /* NFOSMESA_GLINDEXFUNCEXT */, 2 /* NFOSMESA_GLLOCKARRAYSEXT */, 0 /* NFOSMESA_GLUNLOCKARRAYSEXT */, 2 /* NFOSMESA_GLCULLPARAMETERDVEXT */, 2 /* NFOSMESA_GLCULLPARAMETERFVEXT */, 2 /* NFOSMESA_GLFRAGMENTCOLORMATERIALSGIX */, 3 /* NFOSMESA_GLFRAGMENTLIGHTFSGIX */, 3 /* NFOSMESA_GLFRAGMENTLIGHTFVSGIX */, 3 /* NFOSMESA_GLFRAGMENTLIGHTISGIX */, 3 /* NFOSMESA_GLFRAGMENTLIGHTIVSGIX */, 2 /* NFOSMESA_GLFRAGMENTLIGHTMODELFSGIX */, 2 /* NFOSMESA_GLFRAGMENTLIGHTMODELFVSGIX */, 2 /* NFOSMESA_GLFRAGMENTLIGHTMODELISGIX */, 2 /* NFOSMESA_GLFRAGMENTLIGHTMODELIVSGIX */, 3 /* NFOSMESA_GLFRAGMENTMATERIALFSGIX */, 3 /* NFOSMESA_GLFRAGMENTMATERIALFVSGIX */, 3 /* NFOSMESA_GLFRAGMENTMATERIALISGIX */, 3 /* NFOSMESA_GLFRAGMENTMATERIALIVSGIX */, 3 /* NFOSMESA_GLGETFRAGMENTLIGHTFVSGIX */, 3 /* NFOSMESA_GLGETFRAGMENTLIGHTIVSGIX */, 3 /* NFOSMESA_GLGETFRAGMENTMATERIALFVSGIX */, 3 /* NFOSMESA_GLGETFRAGMENTMATERIALIVSGIX */, 2 /* NFOSMESA_GLLIGHTENVISGIX */, 6 /* NFOSMESA_GLDRAWRANGEELEMENTSEXT */, 1 /* NFOSMESA_GLAPPLYTEXTUREEXT */, 1 /* NFOSMESA_GLTEXTURELIGHTEXT */, 2 /* NFOSMESA_GLTEXTUREMATERIALEXT */, 1 /* NFOSMESA_GLASYNCMARKERSGIX */, 1 /* NFOSMESA_GLFINISHASYNCSGIX */, 1 /* NFOSMESA_GLPOLLASYNCSGIX */, 1 /* NFOSMESA_GLGENASYNCMARKERSSGIX */, 2 /* NFOSMESA_GLDELETEASYNCMARKERSSGIX */, 1 /* NFOSMESA_GLISASYNCMARKERSGIX */, 3 /* NFOSMESA_GLVERTEXPOINTERVINTEL */, 2 /* NFOSMESA_GLNORMALPOINTERVINTEL */, 3 /* NFOSMESA_GLCOLORPOINTERVINTEL */, 3 /* NFOSMESA_GLTEXCOORDPOINTERVINTEL */, 3 /* NFOSMESA_GLPIXELTRANSFORMPARAMETERIEXT */, 3 /* NFOSMESA_GLPIXELTRANSFORMPARAMETERFEXT */, 3 /* NFOSMESA_GLPIXELTRANSFORMPARAMETERIVEXT */, 3 /* NFOSMESA_GLPIXELTRANSFORMPARAMETERFVEXT */, 3 /* NFOSMESA_GLSECONDARYCOLOR3BEXT */, 1 /* NFOSMESA_GLSECONDARYCOLOR3BVEXT */, 6 /* NFOSMESA_GLSECONDARYCOLOR3DEXT */, 1 /* NFOSMESA_GLSECONDARYCOLOR3DVEXT */, 3 /* NFOSMESA_GLSECONDARYCOLOR3FEXT */, 1 /* NFOSMESA_GLSECONDARYCOLOR3FVEXT */, 3 /* NFOSMESA_GLSECONDARYCOLOR3IEXT */, 1 /* NFOSMESA_GLSECONDARYCOLOR3IVEXT */, 3 /* NFOSMESA_GLSECONDARYCOLOR3SEXT */, 1 /* NFOSMESA_GLSECONDARYCOLOR3SVEXT */, 3 /* NFOSMESA_GLSECONDARYCOLOR3UBEXT */, 1 /* NFOSMESA_GLSECONDARYCOLOR3UBVEXT */, 3 /* NFOSMESA_GLSECONDARYCOLOR3UIEXT */, 1 /* NFOSMESA_GLSECONDARYCOLOR3UIVEXT */, 3 /* NFOSMESA_GLSECONDARYCOLOR3USEXT */, 1 /* NFOSMESA_GLSECONDARYCOLOR3USVEXT */, 4 /* NFOSMESA_GLSECONDARYCOLORPOINTEREXT */, 1 /* NFOSMESA_GLTEXTURENORMALEXT */, 4 /* NFOSMESA_GLMULTIDRAWARRAYSEXT */, 5 /* NFOSMESA_GLMULTIDRAWELEMENTSEXT */, 1 /* NFOSMESA_GLFOGCOORDFEXT */, 1 /* NFOSMESA_GLFOGCOORDFVEXT */, 2 /* NFOSMESA_GLFOGCOORDDEXT */, 1 /* NFOSMESA_GLFOGCOORDDVEXT */, 3 /* NFOSMESA_GLFOGCOORDPOINTEREXT */, 3 /* NFOSMESA_GLTANGENT3BEXT */, 1 /* NFOSMESA_GLTANGENT3BVEXT */, 6 /* NFOSMESA_GLTANGENT3DEXT */, 1 /* NFOSMESA_GLTANGENT3DVEXT */, 3 /* NFOSMESA_GLTANGENT3FEXT */, 1 /* NFOSMESA_GLTANGENT3FVEXT */, 3 /* NFOSMESA_GLTANGENT3IEXT */, 1 /* NFOSMESA_GLTANGENT3IVEXT */, 3 /* NFOSMESA_GLTANGENT3SEXT */, 1 /* NFOSMESA_GLTANGENT3SVEXT */, 3 /* NFOSMESA_GLBINORMAL3BEXT */, 1 /* NFOSMESA_GLBINORMAL3BVEXT */, 6 /* NFOSMESA_GLBINORMAL3DEXT */, 1 /* NFOSMESA_GLBINORMAL3DVEXT */, 3 /* NFOSMESA_GLBINORMAL3FEXT */, 1 /* NFOSMESA_GLBINORMAL3FVEXT */, 3 /* NFOSMESA_GLBINORMAL3IEXT */, 1 /* NFOSMESA_GLBINORMAL3IVEXT */, 3 /* NFOSMESA_GLBINORMAL3SEXT */, 1 /* NFOSMESA_GLBINORMAL3SVEXT */, 3 /* NFOSMESA_GLTANGENTPOINTEREXT */, 3 /* NFOSMESA_GLBINORMALPOINTEREXT */, 0 /* NFOSMESA_GLFINISHTEXTURESUNX */, 1 /* NFOSMESA_GLGLOBALALPHAFACTORBSUN */, 1 /* NFOSMESA_GLGLOBALALPHAFACTORSSUN */, 1 /* NFOSMESA_GLGLOBALALPHAFACTORISUN */, 1 /* NFOSMESA_GLGLOBALALPHAFACTORFSUN */, 2 /* NFOSMESA_GLGLOBALALPHAFACTORDSUN */, 1 /* NFOSMESA_GLGLOBALALPHAFACTORUBSUN */, 1 /* NFOSMESA_GLGLOBALALPHAFACTORUSSUN */, 1 /* NFOSMESA_GLGLOBALALPHAFACTORUISUN */, 1 /* NFOSMESA_GLREPLACEMENTCODEUISUN */, 1 /* NFOSMESA_GLREPLACEMENTCODEUSSUN */, 1 /* NFOSMESA_GLREPLACEMENTCODEUBSUN */, 1 /* NFOSMESA_GLREPLACEMENTCODEUIVSUN */, 1 /* NFOSMESA_GLREPLACEMENTCODEUSVSUN */, 1 /* NFOSMESA_GLREPLACEMENTCODEUBVSUN */, 3 /* NFOSMESA_GLREPLACEMENTCODEPOINTERSUN */, 6 /* NFOSMESA_GLCOLOR4UBVERTEX2FSUN */, 2 /* NFOSMESA_GLCOLOR4UBVERTEX2FVSUN */, 7 /* NFOSMESA_GLCOLOR4UBVERTEX3FSUN */, 2 /* NFOSMESA_GLCOLOR4UBVERTEX3FVSUN */, 6 /* NFOSMESA_GLCOLOR3FVERTEX3FSUN */, 2 /* NFOSMESA_GLCOLOR3FVERTEX3FVSUN */, 6 /* NFOSMESA_GLNORMAL3FVERTEX3FSUN */, 2 /* NFOSMESA_GLNORMAL3FVERTEX3FVSUN */, 10 /* NFOSMESA_GLCOLOR4FNORMAL3FVERTEX3FSUN */, 3 /* NFOSMESA_GLCOLOR4FNORMAL3FVERTEX3FVSUN */, 5 /* NFOSMESA_GLTEXCOORD2FVERTEX3FSUN */, 2 /* NFOSMESA_GLTEXCOORD2FVERTEX3FVSUN */, 8 /* NFOSMESA_GLTEXCOORD4FVERTEX4FSUN */, 2 /* NFOSMESA_GLTEXCOORD4FVERTEX4FVSUN */, 9 /* NFOSMESA_GLTEXCOORD2FCOLOR4UBVERTEX3FSUN */, 3 /* NFOSMESA_GLTEXCOORD2FCOLOR4UBVERTEX3FVSUN */, 8 /* NFOSMESA_GLTEXCOORD2FCOLOR3FVERTEX3FSUN */, 3 /* NFOSMESA_GLTEXCOORD2FCOLOR3FVERTEX3FVSUN */, 8 /* NFOSMESA_GLTEXCOORD2FNORMAL3FVERTEX3FSUN */, 3 /* NFOSMESA_GLTEXCOORD2FNORMAL3FVERTEX3FVSUN */, 12 /* NFOSMESA_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN */, 4 /* NFOSMESA_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN */, 15 /* NFOSMESA_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUN */, 4 /* NFOSMESA_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUN */, 4 /* NFOSMESA_GLREPLACEMENTCODEUIVERTEX3FSUN */, 2 /* NFOSMESA_GLREPLACEMENTCODEUIVERTEX3FVSUN */, 8 /* NFOSMESA_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUN */, 3 /* NFOSMESA_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUN */, 7 /* NFOSMESA_GLREPLACEMENTCODEUICOLOR3FVERTEX3FSUN */, 3 /* NFOSMESA_GLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUN */, 7 /* NFOSMESA_GLREPLACEMENTCODEUINORMAL3FVERTEX3FSUN */, 3 /* NFOSMESA_GLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUN */, 11 /* NFOSMESA_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUN */, 4 /* NFOSMESA_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUN */, 6 /* NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUN */, 3 /* NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUN */, 9 /* NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUN */, 4 /* NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUN */, 13 /* NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN */, 5 /* NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN */, 4 /* NFOSMESA_GLBLENDFUNCSEPARATEEXT */, 4 /* NFOSMESA_GLBLENDFUNCSEPARATEINGR */, 1 /* NFOSMESA_GLVERTEXWEIGHTFEXT */, 1 /* NFOSMESA_GLVERTEXWEIGHTFVEXT */, 4 /* NFOSMESA_GLVERTEXWEIGHTPOINTEREXT */, 0 /* NFOSMESA_GLFLUSHVERTEXARRAYRANGENV */, 2 /* NFOSMESA_GLVERTEXARRAYRANGENV */, 2 /* NFOSMESA_GLCOMBINERPARAMETERFVNV */, 2 /* NFOSMESA_GLCOMBINERPARAMETERFNV */, 2 /* NFOSMESA_GLCOMBINERPARAMETERIVNV */, 2 /* NFOSMESA_GLCOMBINERPARAMETERINV */, 6 /* NFOSMESA_GLCOMBINERINPUTNV */, 10 /* NFOSMESA_GLCOMBINEROUTPUTNV */, 4 /* NFOSMESA_GLFINALCOMBINERINPUTNV */, 5 /* NFOSMESA_GLGETCOMBINERINPUTPARAMETERFVNV */, 5 /* NFOSMESA_GLGETCOMBINERINPUTPARAMETERIVNV */, 4 /* NFOSMESA_GLGETCOMBINEROUTPUTPARAMETERFVNV */, 4 /* NFOSMESA_GLGETCOMBINEROUTPUTPARAMETERIVNV */, 3 /* NFOSMESA_GLGETFINALCOMBINERINPUTPARAMETERFVNV */, 3 /* NFOSMESA_GLGETFINALCOMBINERINPUTPARAMETERIVNV */, 0 /* NFOSMESA_GLRESIZEBUFFERSMESA */, 4 /* NFOSMESA_GLWINDOWPOS2DMESA */, 1 /* NFOSMESA_GLWINDOWPOS2DVMESA */, 2 /* NFOSMESA_GLWINDOWPOS2FMESA */, 1 /* NFOSMESA_GLWINDOWPOS2FVMESA */, 2 /* NFOSMESA_GLWINDOWPOS2IMESA */, 1 /* NFOSMESA_GLWINDOWPOS2IVMESA */, 2 /* NFOSMESA_GLWINDOWPOS2SMESA */, 1 /* NFOSMESA_GLWINDOWPOS2SVMESA */, 6 /* NFOSMESA_GLWINDOWPOS3DMESA */, 1 /* NFOSMESA_GLWINDOWPOS3DVMESA */, 3 /* NFOSMESA_GLWINDOWPOS3FMESA */, 1 /* NFOSMESA_GLWINDOWPOS3FVMESA */, 3 /* NFOSMESA_GLWINDOWPOS3IMESA */, 1 /* NFOSMESA_GLWINDOWPOS3IVMESA */, 3 /* NFOSMESA_GLWINDOWPOS3SMESA */, 1 /* NFOSMESA_GLWINDOWPOS3SVMESA */, 8 /* NFOSMESA_GLWINDOWPOS4DMESA */, 1 /* NFOSMESA_GLWINDOWPOS4DVMESA */, 4 /* NFOSMESA_GLWINDOWPOS4FMESA */, 1 /* NFOSMESA_GLWINDOWPOS4FVMESA */, 4 /* NFOSMESA_GLWINDOWPOS4IMESA */, 1 /* NFOSMESA_GLWINDOWPOS4IVMESA */, 4 /* NFOSMESA_GLWINDOWPOS4SMESA */, 1 /* NFOSMESA_GLWINDOWPOS4SVMESA */, 5 /* NFOSMESA_GLMULTIMODEDRAWARRAYSIBM */, 6 /* NFOSMESA_GLMULTIMODEDRAWELEMENTSIBM */, 5 /* NFOSMESA_GLCOLORPOINTERLISTIBM */, 5 /* NFOSMESA_GLSECONDARYCOLORPOINTERLISTIBM */, 3 /* NFOSMESA_GLEDGEFLAGPOINTERLISTIBM */, 4 /* NFOSMESA_GLFOGCOORDPOINTERLISTIBM */, 4 /* NFOSMESA_GLINDEXPOINTERLISTIBM */, 4 /* NFOSMESA_GLNORMALPOINTERLISTIBM */, 5 /* NFOSMESA_GLTEXCOORDPOINTERLISTIBM */, 5 /* NFOSMESA_GLVERTEXPOINTERLISTIBM */, 1 /* NFOSMESA_GLTBUFFERMASK3DFX */, 2 /* NFOSMESA_GLSAMPLEMASKEXT */, 1 /* NFOSMESA_GLSAMPLEPATTERNEXT */, 4 /* NFOSMESA_GLTEXTURECOLORMASKSGIS */, 2 /* NFOSMESA_GLIGLOOINTERFACESGIX */, 2 /* NFOSMESA_GLDELETEFENCESNV */, 2 /* NFOSMESA_GLGENFENCESNV */, 1 /* NFOSMESA_GLISFENCENV */, 1 /* NFOSMESA_GLTESTFENCENV */, 3 /* NFOSMESA_GLGETFENCEIVNV */, 1 /* NFOSMESA_GLFINISHFENCENV */, 2 /* NFOSMESA_GLSETFENCENV */, 9 /* NFOSMESA_GLMAPCONTROLPOINTSNV */, 3 /* NFOSMESA_GLMAPPARAMETERIVNV */, 3 /* NFOSMESA_GLMAPPARAMETERFVNV */, 7 /* NFOSMESA_GLGETMAPCONTROLPOINTSNV */, 3 /* NFOSMESA_GLGETMAPPARAMETERIVNV */, 3 /* NFOSMESA_GLGETMAPPARAMETERFVNV */, 4 /* NFOSMESA_GLGETMAPATTRIBPARAMETERIVNV */, 4 /* NFOSMESA_GLGETMAPATTRIBPARAMETERFVNV */, 2 /* NFOSMESA_GLEVALMAPSNV */, 3 /* NFOSMESA_GLCOMBINERSTAGEPARAMETERFVNV */, 3 /* NFOSMESA_GLGETCOMBINERSTAGEPARAMETERFVNV */, 3 /* NFOSMESA_GLAREPROGRAMSRESIDENTNV */, 2 /* NFOSMESA_GLBINDPROGRAMNV */, 2 /* NFOSMESA_GLDELETEPROGRAMSNV */, 3 /* NFOSMESA_GLEXECUTEPROGRAMNV */, 2 /* NFOSMESA_GLGENPROGRAMSNV */, 4 /* NFOSMESA_GLGETPROGRAMPARAMETERDVNV */, 4 /* NFOSMESA_GLGETPROGRAMPARAMETERFVNV */, 3 /* NFOSMESA_GLGETPROGRAMIVNV */, 3 /* NFOSMESA_GLGETPROGRAMSTRINGNV */, 4 /* NFOSMESA_GLGETTRACKMATRIXIVNV */, 3 /* NFOSMESA_GLGETVERTEXATTRIBDVNV */, 3 /* NFOSMESA_GLGETVERTEXATTRIBFVNV */, 3 /* NFOSMESA_GLGETVERTEXATTRIBIVNV */, 3 /* NFOSMESA_GLGETVERTEXATTRIBPOINTERVNV */, 1 /* NFOSMESA_GLISPROGRAMNV */, 4 /* NFOSMESA_GLLOADPROGRAMNV */, 10 /* NFOSMESA_GLPROGRAMPARAMETER4DNV */, 3 /* NFOSMESA_GLPROGRAMPARAMETER4DVNV */, 6 /* NFOSMESA_GLPROGRAMPARAMETER4FNV */, 3 /* NFOSMESA_GLPROGRAMPARAMETER4FVNV */, 4 /* NFOSMESA_GLPROGRAMPARAMETERS4DVNV */, 4 /* NFOSMESA_GLPROGRAMPARAMETERS4FVNV */, 2 /* NFOSMESA_GLREQUESTRESIDENTPROGRAMSNV */, 4 /* NFOSMESA_GLTRACKMATRIXNV */, 5 /* NFOSMESA_GLVERTEXATTRIBPOINTERNV */, 3 /* NFOSMESA_GLVERTEXATTRIB1DNV */, 2 /* NFOSMESA_GLVERTEXATTRIB1DVNV */, 2 /* NFOSMESA_GLVERTEXATTRIB1FNV */, 2 /* NFOSMESA_GLVERTEXATTRIB1FVNV */, 2 /* NFOSMESA_GLVERTEXATTRIB1SNV */, 2 /* NFOSMESA_GLVERTEXATTRIB1SVNV */, 5 /* NFOSMESA_GLVERTEXATTRIB2DNV */, 2 /* NFOSMESA_GLVERTEXATTRIB2DVNV */, 3 /* NFOSMESA_GLVERTEXATTRIB2FNV */, 2 /* NFOSMESA_GLVERTEXATTRIB2FVNV */, 3 /* NFOSMESA_GLVERTEXATTRIB2SNV */, 2 /* NFOSMESA_GLVERTEXATTRIB2SVNV */, 7 /* NFOSMESA_GLVERTEXATTRIB3DNV */, 2 /* NFOSMESA_GLVERTEXATTRIB3DVNV */, 4 /* NFOSMESA_GLVERTEXATTRIB3FNV */, 2 /* NFOSMESA_GLVERTEXATTRIB3FVNV */, 4 /* NFOSMESA_GLVERTEXATTRIB3SNV */, 2 /* NFOSMESA_GLVERTEXATTRIB3SVNV */, 9 /* NFOSMESA_GLVERTEXATTRIB4DNV */, 2 /* NFOSMESA_GLVERTEXATTRIB4DVNV */, 5 /* NFOSMESA_GLVERTEXATTRIB4FNV */, 2 /* NFOSMESA_GLVERTEXATTRIB4FVNV */, 5 /* NFOSMESA_GLVERTEXATTRIB4SNV */, 2 /* NFOSMESA_GLVERTEXATTRIB4SVNV */, 5 /* NFOSMESA_GLVERTEXATTRIB4UBNV */, 2 /* NFOSMESA_GLVERTEXATTRIB4UBVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS1DVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS1FVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS1SVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS2DVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS2FVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS2SVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS3DVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS3FVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS3SVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS4DVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS4FVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS4SVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS4UBVNV */, 2 /* NFOSMESA_GLTEXBUMPPARAMETERIVATI */, 2 /* NFOSMESA_GLTEXBUMPPARAMETERFVATI */, 2 /* NFOSMESA_GLGETTEXBUMPPARAMETERIVATI */, 2 /* NFOSMESA_GLGETTEXBUMPPARAMETERFVATI */, 1 /* NFOSMESA_GLGENFRAGMENTSHADERSATI */, 1 /* NFOSMESA_GLBINDFRAGMENTSHADERATI */, 1 /* NFOSMESA_GLDELETEFRAGMENTSHADERATI */, 0 /* NFOSMESA_GLBEGINFRAGMENTSHADERATI */, 0 /* NFOSMESA_GLENDFRAGMENTSHADERATI */, 3 /* NFOSMESA_GLPASSTEXCOORDATI */, 3 /* NFOSMESA_GLSAMPLEMAPATI */, 7 /* NFOSMESA_GLCOLORFRAGMENTOP1ATI */, 10 /* NFOSMESA_GLCOLORFRAGMENTOP2ATI */, 13 /* NFOSMESA_GLCOLORFRAGMENTOP3ATI */, 6 /* NFOSMESA_GLALPHAFRAGMENTOP1ATI */, 9 /* NFOSMESA_GLALPHAFRAGMENTOP2ATI */, 12 /* NFOSMESA_GLALPHAFRAGMENTOP3ATI */, 2 /* NFOSMESA_GLSETFRAGMENTSHADERCONSTANTATI */, 2 /* NFOSMESA_GLPNTRIANGLESIATI */, 2 /* NFOSMESA_GLPNTRIANGLESFATI */, 3 /* NFOSMESA_GLNEWOBJECTBUFFERATI */, 1 /* NFOSMESA_GLISOBJECTBUFFERATI */, 5 /* NFOSMESA_GLUPDATEOBJECTBUFFERATI */, 3 /* NFOSMESA_GLGETOBJECTBUFFERFVATI */, 3 /* NFOSMESA_GLGETOBJECTBUFFERIVATI */, 1 /* NFOSMESA_GLFREEOBJECTBUFFERATI */, 6 /* NFOSMESA_GLARRAYOBJECTATI */, 3 /* NFOSMESA_GLGETARRAYOBJECTFVATI */, 3 /* NFOSMESA_GLGETARRAYOBJECTIVATI */, 5 /* NFOSMESA_GLVARIANTARRAYOBJECTATI */, 3 /* NFOSMESA_GLGETVARIANTARRAYOBJECTFVATI */, 3 /* NFOSMESA_GLGETVARIANTARRAYOBJECTIVATI */, 0 /* NFOSMESA_GLBEGINVERTEXSHADEREXT */, 0 /* NFOSMESA_GLENDVERTEXSHADEREXT */, 1 /* NFOSMESA_GLBINDVERTEXSHADEREXT */, 1 /* NFOSMESA_GLGENVERTEXSHADERSEXT */, 1 /* NFOSMESA_GLDELETEVERTEXSHADEREXT */, 3 /* NFOSMESA_GLSHADEROP1EXT */, 4 /* NFOSMESA_GLSHADEROP2EXT */, 5 /* NFOSMESA_GLSHADEROP3EXT */, 6 /* NFOSMESA_GLSWIZZLEEXT */, 6 /* NFOSMESA_GLWRITEMASKEXT */, 3 /* NFOSMESA_GLINSERTCOMPONENTEXT */, 3 /* NFOSMESA_GLEXTRACTCOMPONENTEXT */, 4 /* NFOSMESA_GLGENSYMBOLSEXT */, 3 /* NFOSMESA_GLSETINVARIANTEXT */, 3 /* NFOSMESA_GLSETLOCALCONSTANTEXT */, 2 /* NFOSMESA_GLVARIANTBVEXT */, 2 /* NFOSMESA_GLVARIANTSVEXT */, 2 /* NFOSMESA_GLVARIANTIVEXT */, 2 /* NFOSMESA_GLVARIANTFVEXT */, 2 /* NFOSMESA_GLVARIANTDVEXT */, 2 /* NFOSMESA_GLVARIANTUBVEXT */, 2 /* NFOSMESA_GLVARIANTUSVEXT */, 2 /* NFOSMESA_GLVARIANTUIVEXT */, 4 /* NFOSMESA_GLVARIANTPOINTEREXT */, 1 /* NFOSMESA_GLENABLEVARIANTCLIENTSTATEEXT */, 1 /* NFOSMESA_GLDISABLEVARIANTCLIENTSTATEEXT */, 2 /* NFOSMESA_GLBINDLIGHTPARAMETEREXT */, 2 /* NFOSMESA_GLBINDMATERIALPARAMETEREXT */, 3 /* NFOSMESA_GLBINDTEXGENPARAMETEREXT */, 2 /* NFOSMESA_GLBINDTEXTUREUNITPARAMETEREXT */, 1 /* NFOSMESA_GLBINDPARAMETEREXT */, 2 /* NFOSMESA_GLISVARIANTENABLEDEXT */, 3 /* NFOSMESA_GLGETVARIANTBOOLEANVEXT */, 3 /* NFOSMESA_GLGETVARIANTINTEGERVEXT */, 3 /* NFOSMESA_GLGETVARIANTFLOATVEXT */, 3 /* NFOSMESA_GLGETVARIANTPOINTERVEXT */, 3 /* NFOSMESA_GLGETINVARIANTBOOLEANVEXT */, 3 /* NFOSMESA_GLGETINVARIANTINTEGERVEXT */, 3 /* NFOSMESA_GLGETINVARIANTFLOATVEXT */, 3 /* NFOSMESA_GLGETLOCALCONSTANTBOOLEANVEXT */, 3 /* NFOSMESA_GLGETLOCALCONSTANTINTEGERVEXT */, 3 /* NFOSMESA_GLGETLOCALCONSTANTFLOATVEXT */, 2 /* NFOSMESA_GLVERTEXSTREAM1SATI */, 2 /* NFOSMESA_GLVERTEXSTREAM1SVATI */, 2 /* NFOSMESA_GLVERTEXSTREAM1IATI */, 2 /* NFOSMESA_GLVERTEXSTREAM1IVATI */, 2 /* NFOSMESA_GLVERTEXSTREAM1FATI */, 2 /* NFOSMESA_GLVERTEXSTREAM1FVATI */, 3 /* NFOSMESA_GLVERTEXSTREAM1DATI */, 2 /* NFOSMESA_GLVERTEXSTREAM1DVATI */, 3 /* NFOSMESA_GLVERTEXSTREAM2SATI */, 2 /* NFOSMESA_GLVERTEXSTREAM2SVATI */, 3 /* NFOSMESA_GLVERTEXSTREAM2IATI */, 2 /* NFOSMESA_GLVERTEXSTREAM2IVATI */, 3 /* NFOSMESA_GLVERTEXSTREAM2FATI */, 2 /* NFOSMESA_GLVERTEXSTREAM2FVATI */, 5 /* NFOSMESA_GLVERTEXSTREAM2DATI */, 2 /* NFOSMESA_GLVERTEXSTREAM2DVATI */, 4 /* NFOSMESA_GLVERTEXSTREAM3SATI */, 2 /* NFOSMESA_GLVERTEXSTREAM3SVATI */, 4 /* NFOSMESA_GLVERTEXSTREAM3IATI */, 2 /* NFOSMESA_GLVERTEXSTREAM3IVATI */, 4 /* NFOSMESA_GLVERTEXSTREAM3FATI */, 2 /* NFOSMESA_GLVERTEXSTREAM3FVATI */, 7 /* NFOSMESA_GLVERTEXSTREAM3DATI */, 2 /* NFOSMESA_GLVERTEXSTREAM3DVATI */, 5 /* NFOSMESA_GLVERTEXSTREAM4SATI */, 2 /* NFOSMESA_GLVERTEXSTREAM4SVATI */, 5 /* NFOSMESA_GLVERTEXSTREAM4IATI */, 2 /* NFOSMESA_GLVERTEXSTREAM4IVATI */, 5 /* NFOSMESA_GLVERTEXSTREAM4FATI */, 2 /* NFOSMESA_GLVERTEXSTREAM4FVATI */, 9 /* NFOSMESA_GLVERTEXSTREAM4DATI */, 2 /* NFOSMESA_GLVERTEXSTREAM4DVATI */, 4 /* NFOSMESA_GLNORMALSTREAM3BATI */, 2 /* NFOSMESA_GLNORMALSTREAM3BVATI */, 4 /* NFOSMESA_GLNORMALSTREAM3SATI */, 2 /* NFOSMESA_GLNORMALSTREAM3SVATI */, 4 /* NFOSMESA_GLNORMALSTREAM3IATI */, 2 /* NFOSMESA_GLNORMALSTREAM3IVATI */, 4 /* NFOSMESA_GLNORMALSTREAM3FATI */, 2 /* NFOSMESA_GLNORMALSTREAM3FVATI */, 7 /* NFOSMESA_GLNORMALSTREAM3DATI */, 2 /* NFOSMESA_GLNORMALSTREAM3DVATI */, 1 /* NFOSMESA_GLCLIENTACTIVEVERTEXSTREAMATI */, 2 /* NFOSMESA_GLVERTEXBLENDENVIATI */, 2 /* NFOSMESA_GLVERTEXBLENDENVFATI */, 2 /* NFOSMESA_GLELEMENTPOINTERATI */, 2 /* NFOSMESA_GLDRAWELEMENTARRAYATI */, 4 /* NFOSMESA_GLDRAWRANGEELEMENTARRAYATI */, 4 /* NFOSMESA_GLDRAWMESHARRAYSSUN */, 2 /* NFOSMESA_GLGENOCCLUSIONQUERIESNV */, 2 /* NFOSMESA_GLDELETEOCCLUSIONQUERIESNV */, 1 /* NFOSMESA_GLISOCCLUSIONQUERYNV */, 1 /* NFOSMESA_GLBEGINOCCLUSIONQUERYNV */, 0 /* NFOSMESA_GLENDOCCLUSIONQUERYNV */, 3 /* NFOSMESA_GLGETOCCLUSIONQUERYIVNV */, 3 /* NFOSMESA_GLGETOCCLUSIONQUERYUIVNV */, 2 /* NFOSMESA_GLPOINTPARAMETERINV */, 2 /* NFOSMESA_GLPOINTPARAMETERIVNV */, 1 /* NFOSMESA_GLACTIVESTENCILFACEEXT */, 2 /* NFOSMESA_GLELEMENTPOINTERAPPLE */, 3 /* NFOSMESA_GLDRAWELEMENTARRAYAPPLE */, 5 /* NFOSMESA_GLDRAWRANGEELEMENTARRAYAPPLE */, 4 /* NFOSMESA_GLMULTIDRAWELEMENTARRAYAPPLE */, 6 /* NFOSMESA_GLMULTIDRAWRANGEELEMENTARRAYAPPLE */, 2 /* NFOSMESA_GLGENFENCESAPPLE */, 2 /* NFOSMESA_GLDELETEFENCESAPPLE */, 1 /* NFOSMESA_GLSETFENCEAPPLE */, 1 /* NFOSMESA_GLISFENCEAPPLE */, 1 /* NFOSMESA_GLTESTFENCEAPPLE */, 1 /* NFOSMESA_GLFINISHFENCEAPPLE */, 2 /* NFOSMESA_GLTESTOBJECTAPPLE */, 2 /* NFOSMESA_GLFINISHOBJECTAPPLE */, 1 /* NFOSMESA_GLBINDVERTEXARRAYAPPLE */, 2 /* NFOSMESA_GLDELETEVERTEXARRAYSAPPLE */, 2 /* NFOSMESA_GLGENVERTEXARRAYSAPPLE */, 1 /* NFOSMESA_GLISVERTEXARRAYAPPLE */, 2 /* NFOSMESA_GLVERTEXARRAYRANGEAPPLE */, 2 /* NFOSMESA_GLFLUSHVERTEXARRAYRANGEAPPLE */, 2 /* NFOSMESA_GLVERTEXARRAYPARAMETERIAPPLE */, 2 /* NFOSMESA_GLDRAWBUFFERSATI */, 7 /* NFOSMESA_GLPROGRAMNAMEDPARAMETER4FNV */, 11 /* NFOSMESA_GLPROGRAMNAMEDPARAMETER4DNV */, 4 /* NFOSMESA_GLPROGRAMNAMEDPARAMETER4FVNV */, 4 /* NFOSMESA_GLPROGRAMNAMEDPARAMETER4DVNV */, 4 /* NFOSMESA_GLGETPROGRAMNAMEDPARAMETERFVNV */, 4 /* NFOSMESA_GLGETPROGRAMNAMEDPARAMETERDVNV */, 2 /* NFOSMESA_GLVERTEX2HNV */, 1 /* NFOSMESA_GLVERTEX2HVNV */, 3 /* NFOSMESA_GLVERTEX3HNV */, 1 /* NFOSMESA_GLVERTEX3HVNV */, 4 /* NFOSMESA_GLVERTEX4HNV */, 1 /* NFOSMESA_GLVERTEX4HVNV */, 3 /* NFOSMESA_GLNORMAL3HNV */, 1 /* NFOSMESA_GLNORMAL3HVNV */, 3 /* NFOSMESA_GLCOLOR3HNV */, 1 /* NFOSMESA_GLCOLOR3HVNV */, 4 /* NFOSMESA_GLCOLOR4HNV */, 1 /* NFOSMESA_GLCOLOR4HVNV */, 1 /* NFOSMESA_GLTEXCOORD1HNV */, 1 /* NFOSMESA_GLTEXCOORD1HVNV */, 2 /* NFOSMESA_GLTEXCOORD2HNV */, 1 /* NFOSMESA_GLTEXCOORD2HVNV */, 3 /* NFOSMESA_GLTEXCOORD3HNV */, 1 /* NFOSMESA_GLTEXCOORD3HVNV */, 4 /* NFOSMESA_GLTEXCOORD4HNV */, 1 /* NFOSMESA_GLTEXCOORD4HVNV */, 2 /* NFOSMESA_GLMULTITEXCOORD1HNV */, 2 /* NFOSMESA_GLMULTITEXCOORD1HVNV */, 3 /* NFOSMESA_GLMULTITEXCOORD2HNV */, 2 /* NFOSMESA_GLMULTITEXCOORD2HVNV */, 4 /* NFOSMESA_GLMULTITEXCOORD3HNV */, 2 /* NFOSMESA_GLMULTITEXCOORD3HVNV */, 5 /* NFOSMESA_GLMULTITEXCOORD4HNV */, 2 /* NFOSMESA_GLMULTITEXCOORD4HVNV */, 1 /* NFOSMESA_GLFOGCOORDHNV */, 1 /* NFOSMESA_GLFOGCOORDHVNV */, 3 /* NFOSMESA_GLSECONDARYCOLOR3HNV */, 1 /* NFOSMESA_GLSECONDARYCOLOR3HVNV */, 1 /* NFOSMESA_GLVERTEXWEIGHTHNV */, 1 /* NFOSMESA_GLVERTEXWEIGHTHVNV */, 2 /* NFOSMESA_GLVERTEXATTRIB1HNV */, 2 /* NFOSMESA_GLVERTEXATTRIB1HVNV */, 3 /* NFOSMESA_GLVERTEXATTRIB2HNV */, 2 /* NFOSMESA_GLVERTEXATTRIB2HVNV */, 4 /* NFOSMESA_GLVERTEXATTRIB3HNV */, 2 /* NFOSMESA_GLVERTEXATTRIB3HVNV */, 5 /* NFOSMESA_GLVERTEXATTRIB4HNV */, 2 /* NFOSMESA_GLVERTEXATTRIB4HVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS1HVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS2HVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS3HVNV */, 3 /* NFOSMESA_GLVERTEXATTRIBS4HVNV */, 3 /* NFOSMESA_GLPIXELDATARANGENV */, 1 /* NFOSMESA_GLFLUSHPIXELDATARANGENV */, 0 /* NFOSMESA_GLPRIMITIVERESTARTNV */, 1 /* NFOSMESA_GLPRIMITIVERESTARTINDEXNV */, 1 /* NFOSMESA_GLMAPOBJECTBUFFERATI */, 1 /* NFOSMESA_GLUNMAPOBJECTBUFFERATI */, 4 /* NFOSMESA_GLSTENCILOPSEPARATEATI */, 4 /* NFOSMESA_GLSTENCILFUNCSEPARATEATI */, 7 /* NFOSMESA_GLVERTEXATTRIBARRAYOBJECTATI */, 3 /* NFOSMESA_GLGETVERTEXATTRIBARRAYOBJECTFVATI */, 3 /* NFOSMESA_GLGETVERTEXATTRIBARRAYOBJECTIVATI */, 4 /* NFOSMESA_GLDEPTHBOUNDSEXT */, 2 /* NFOSMESA_GLBLENDEQUATIONSEPARATEEXT */, 1 /* NFOSMESA_OSMESACOLORCLAMP */, 3 /* NFOSMESA_OSMESAPOSTPROCESS */, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4 /* OSMesaCreateLDG */, 0 /* OSMesaDestroyLDG */, 0 /* max_width */, 0 /* max_height */, 0 /* information */, 1 /* exception_error */, 9 /* NFOSMESA_GLULOOKATF */, 6 /* NFOSMESA_GLFRUSTUMF */, 6 /* NFOSMESA_GLORTHOF */, 1 /* swapbuffer */, 18 /* NFOSMESA_GLULOOKAT */, 0, 0, 0, 0, 0, 2 /* NFOSMESA_GLACCUMXOES */, 1 /* NFOSMESA_GLACTIVEPROGRAMEXT */, 2 /* NFOSMESA_GLACTIVESHADERPROGRAM */, 2 /* NFOSMESA_GLACTIVEVARYINGNV */, 4 /* NFOSMESA_GLADDSWAPHINTRECTWIN */, 2 /* NFOSMESA_GLALPHAFUNCXOES */, 2 /* NFOSMESA_GLATTACHSHADER */, 2 /* NFOSMESA_GLBEGINCONDITIONALRENDER */, 2 /* NFOSMESA_GLBEGINCONDITIONALRENDERNV */, 1 /* NFOSMESA_GLBEGINCONDITIONALRENDERNVX */, 1 /* NFOSMESA_GLBEGINPERFMONITORAMD */, 1 /* NFOSMESA_GLBEGINPERFQUERYINTEL */, 3 /* NFOSMESA_GLBEGINQUERYINDEXED */, 1 /* NFOSMESA_GLBEGINTRANSFORMFEEDBACK */, 1 /* NFOSMESA_GLBEGINTRANSFORMFEEDBACKEXT */, 1 /* NFOSMESA_GLBEGINTRANSFORMFEEDBACKNV */, 1 /* NFOSMESA_GLBEGINVIDEOCAPTURENV */, 3 /* NFOSMESA_GLBINDATTRIBLOCATION */, 3 /* NFOSMESA_GLBINDBUFFERBASE */, 3 /* NFOSMESA_GLBINDBUFFERBASEEXT */, 3 /* NFOSMESA_GLBINDBUFFERBASENV */, 4 /* NFOSMESA_GLBINDBUFFEROFFSETEXT */, 4 /* NFOSMESA_GLBINDBUFFEROFFSETNV */, 5 /* NFOSMESA_GLBINDBUFFERRANGE */, 5 /* NFOSMESA_GLBINDBUFFERRANGEEXT */, 5 /* NFOSMESA_GLBINDBUFFERRANGENV */, 4 /* NFOSMESA_GLBINDBUFFERSBASE */, 6 /* NFOSMESA_GLBINDBUFFERSRANGE */, 3 /* NFOSMESA_GLBINDFRAGDATALOCATION */, 3 /* NFOSMESA_GLBINDFRAGDATALOCATIONEXT */, 4 /* NFOSMESA_GLBINDFRAGDATALOCATIONINDEXED */, 2 /* NFOSMESA_GLBINDFRAMEBUFFER */, 2 /* NFOSMESA_GLBINDFRAMEBUFFEREXT */, 7 /* NFOSMESA_GLBINDIMAGETEXTURE */, 7 /* NFOSMESA_GLBINDIMAGETEXTUREEXT */, 3 /* NFOSMESA_GLBINDIMAGETEXTURES */, 3 /* NFOSMESA_GLBINDMULTITEXTUREEXT */, 1 /* NFOSMESA_GLBINDPROGRAMPIPELINE */, 2 /* NFOSMESA_GLBINDRENDERBUFFER */, 2 /* NFOSMESA_GLBINDRENDERBUFFEREXT */, 2 /* NFOSMESA_GLBINDSAMPLER */, 3 /* NFOSMESA_GLBINDSAMPLERS */, 3 /* NFOSMESA_GLBINDTEXTURES */, 2 /* NFOSMESA_GLBINDTRANSFORMFEEDBACK */, 2 /* NFOSMESA_GLBINDTRANSFORMFEEDBACKNV */, 1 /* NFOSMESA_GLBINDVERTEXARRAY */, 4 /* NFOSMESA_GLBINDVERTEXBUFFER */, 5 /* NFOSMESA_GLBINDVERTEXBUFFERS */, 4 /* NFOSMESA_GLBINDVIDEOCAPTURESTREAMBUFFERNV */, 5 /* NFOSMESA_GLBINDVIDEOCAPTURESTREAMTEXTURENV */, 7 /* NFOSMESA_GLBITMAPXOES */, 0 /* NFOSMESA_GLBLENDBARRIERNV */, 4 /* NFOSMESA_GLBLENDCOLORXOES */, 2 /* NFOSMESA_GLBLENDEQUATIONINDEXEDAMD */, 2 /* NFOSMESA_GLBLENDEQUATIONSEPARATE */, 3 /* NFOSMESA_GLBLENDEQUATIONSEPARATEINDEXEDAMD */, 3 /* NFOSMESA_GLBLENDEQUATIONSEPARATEI */, 3 /* NFOSMESA_GLBLENDEQUATIONSEPARATEIARB */, 2 /* NFOSMESA_GLBLENDEQUATIONI */, 2 /* NFOSMESA_GLBLENDEQUATIONIARB */, 3 /* NFOSMESA_GLBLENDFUNCINDEXEDAMD */, 5 /* NFOSMESA_GLBLENDFUNCSEPARATEINDEXEDAMD */, 5 /* NFOSMESA_GLBLENDFUNCSEPARATEI */, 5 /* NFOSMESA_GLBLENDFUNCSEPARATEIARB */, 3 /* NFOSMESA_GLBLENDFUNCI */, 3 /* NFOSMESA_GLBLENDFUNCIARB */, 2 /* NFOSMESA_GLBLENDPARAMETERINV */, 10 /* NFOSMESA_GLBLITFRAMEBUFFER */, 10 /* NFOSMESA_GLBLITFRAMEBUFFEREXT */, 5 /* NFOSMESA_GLBUFFERADDRESSRANGENV */, 3 /* NFOSMESA_GLBUFFERPARAMETERIAPPLE */, 4 /* NFOSMESA_GLBUFFERSTORAGE */, 1 /* NFOSMESA_GLCHECKFRAMEBUFFERSTATUS */, 1 /* NFOSMESA_GLCHECKFRAMEBUFFERSTATUSEXT */, 2 /* NFOSMESA_GLCHECKNAMEDFRAMEBUFFERSTATUSEXT */, 2 /* NFOSMESA_GLCLAMPCOLOR */, 2 /* NFOSMESA_GLCLAMPCOLORARB */, 4 /* NFOSMESA_GLCLEARACCUMXOES */, 5 /* NFOSMESA_GLCLEARBUFFERDATA */, 7 /* NFOSMESA_GLCLEARBUFFERSUBDATA */, 4 /* NFOSMESA_GLCLEARBUFFERFI */, 3 /* NFOSMESA_GLCLEARBUFFERFV */, 3 /* NFOSMESA_GLCLEARBUFFERIV */, 3 /* NFOSMESA_GLCLEARBUFFERUIV */, 4 /* NFOSMESA_GLCLEARCOLORIIEXT */, 4 /* NFOSMESA_GLCLEARCOLORIUIEXT */, 4 /* NFOSMESA_GLCLEARCOLORXOES */, 3 /* NFOSMESA_GLCLEARDEBUGLOGMESA */, 2 /* NFOSMESA_GLCLEARDEPTHDNV */, 1 /* NFOSMESA_GLCLEARDEPTHF */, 1 /* NFOSMESA_GLCLEARDEPTHFOES */, 1 /* NFOSMESA_GLCLEARDEPTHXOES */, 5 /* NFOSMESA_GLCLEARNAMEDBUFFERDATAEXT */, 7 /* NFOSMESA_GLCLEARNAMEDBUFFERSUBDATAEXT */, 5 /* NFOSMESA_GLCLEARTEXIMAGE */, 11 /* NFOSMESA_GLCLEARTEXSUBIMAGE */, 1 /* NFOSMESA_GLCLIENTATTRIBDEFAULTEXT */, 4 /* NFOSMESA_GLCLIENTWAITSYNC */, 2 /* NFOSMESA_GLCLIPPLANEFOES */, 2 /* NFOSMESA_GLCLIPPLANEXOES */, 3 /* NFOSMESA_GLCOLOR3XOES */, 1 /* NFOSMESA_GLCOLOR3XVOES */, 4 /* NFOSMESA_GLCOLOR4XOES */, 1 /* NFOSMESA_GLCOLOR4XVOES */, 3 /* NFOSMESA_GLCOLORFORMATNV */, 5 /* NFOSMESA_GLCOLORMASKINDEXEDEXT */, 5 /* NFOSMESA_GLCOLORMASKI */, 2 /* NFOSMESA_GLCOLORP3UI */, 2 /* NFOSMESA_GLCOLORP3UIV */, 2 /* NFOSMESA_GLCOLORP4UI */, 2 /* NFOSMESA_GLCOLORP4UIV */, 1 /* NFOSMESA_GLCOMPILESHADER */, 4 /* NFOSMESA_GLCOMPILESHADERINCLUDEARB */, 8 /* NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE1DEXT */, 9 /* NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE2DEXT */, 10 /* NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE3DEXT */, 8 /* NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE1DEXT */, 10 /* NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE2DEXT */, 12 /* NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE3DEXT */, 8 /* NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE1DEXT */, 9 /* NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE2DEXT */, 10 /* NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE3DEXT */, 8 /* NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE1DEXT */, 10 /* NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE2DEXT */, 12 /* NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE3DEXT */, 3 /* NFOSMESA_GLCONVOLUTIONPARAMETERXOES */, 3 /* NFOSMESA_GLCONVOLUTIONPARAMETERXVOES */, 5 /* NFOSMESA_GLCOPYBUFFERSUBDATA */, 15 /* NFOSMESA_GLCOPYIMAGESUBDATA */, 15 /* NFOSMESA_GLCOPYIMAGESUBDATANV */, 8 /* NFOSMESA_GLCOPYMULTITEXIMAGE1DEXT */, 9 /* NFOSMESA_GLCOPYMULTITEXIMAGE2DEXT */, 7 /* NFOSMESA_GLCOPYMULTITEXSUBIMAGE1DEXT */, 9 /* NFOSMESA_GLCOPYMULTITEXSUBIMAGE2DEXT */, 10 /* NFOSMESA_GLCOPYMULTITEXSUBIMAGE3DEXT */, 2 /* NFOSMESA_GLCOPYPATHNV */, 8 /* NFOSMESA_GLCOPYTEXTUREIMAGE1DEXT */, 9 /* NFOSMESA_GLCOPYTEXTUREIMAGE2DEXT */, 7 /* NFOSMESA_GLCOPYTEXTURESUBIMAGE1DEXT */, 9 /* NFOSMESA_GLCOPYTEXTURESUBIMAGE2DEXT */, 10 /* NFOSMESA_GLCOPYTEXTURESUBIMAGE3DEXT */, 7 /* NFOSMESA_GLCOVERFILLPATHINSTANCEDNV */, 2 /* NFOSMESA_GLCOVERFILLPATHNV */, 7 /* NFOSMESA_GLCOVERSTROKEPATHINSTANCEDNV */, 2 /* NFOSMESA_GLCOVERSTROKEPATHNV */, 0 /* NFOSMESA_GLCREATEDEBUGOBJECTMESA */, 2 /* NFOSMESA_GLCREATEPERFQUERYINTEL */, 0 /* NFOSMESA_GLCREATEPROGRAM */, 1 /* NFOSMESA_GLCREATESHADER */, 2 /* NFOSMESA_GLCREATESHADERPROGRAMEXT */, 3 /* NFOSMESA_GLCREATESHADERPROGRAMV */, 3 /* NFOSMESA_GLCREATESYNCFROMCLEVENTARB */, 2 /* NFOSMESA_GLDEBUGMESSAGECALLBACK */, 2 /* NFOSMESA_GLDEBUGMESSAGECALLBACKAMD */, 2 /* NFOSMESA_GLDEBUGMESSAGECALLBACKARB */, 6 /* NFOSMESA_GLDEBUGMESSAGECONTROL */, 6 /* NFOSMESA_GLDEBUGMESSAGECONTROLARB */, 5 /* NFOSMESA_GLDEBUGMESSAGEENABLEAMD */, 6 /* NFOSMESA_GLDEBUGMESSAGEINSERT */, 5 /* NFOSMESA_GLDEBUGMESSAGEINSERTAMD */, 6 /* NFOSMESA_GLDEBUGMESSAGEINSERTARB */, 2 /* NFOSMESA_GLDELETEFRAMEBUFFERS */, 2 /* NFOSMESA_GLDELETEFRAMEBUFFERSEXT */, 2 /* NFOSMESA_GLDELETENAMEDSTRINGARB */, 3 /* NFOSMESA_GLDELETENAMESAMD */, 1 /* NFOSMESA_GLDELETEOBJECTBUFFERATI */, 2 /* NFOSMESA_GLDELETEPATHSNV */, 2 /* NFOSMESA_GLDELETEPERFMONITORSAMD */, 1 /* NFOSMESA_GLDELETEPERFQUERYINTEL */, 1 /* NFOSMESA_GLDELETEPROGRAM */, 2 /* NFOSMESA_GLDELETEPROGRAMPIPELINES */, 2 /* NFOSMESA_GLDELETERENDERBUFFERS */, 2 /* NFOSMESA_GLDELETERENDERBUFFERSEXT */, 2 /* NFOSMESA_GLDELETESAMPLERS */, 1 /* NFOSMESA_GLDELETESHADER */, 1 /* NFOSMESA_GLDELETESYNC */, 2 /* NFOSMESA_GLDELETETRANSFORMFEEDBACKS */, 2 /* NFOSMESA_GLDELETETRANSFORMFEEDBACKSNV */, 2 /* NFOSMESA_GLDELETEVERTEXARRAYS */, 4 /* NFOSMESA_GLDEPTHBOUNDSDNV */, 3 /* NFOSMESA_GLDEPTHRANGEARRAYV */, 5 /* NFOSMESA_GLDEPTHRANGEINDEXED */, 4 /* NFOSMESA_GLDEPTHRANGEDNV */, 2 /* NFOSMESA_GLDEPTHRANGEF */, 2 /* NFOSMESA_GLDEPTHRANGEFOES */, 2 /* NFOSMESA_GLDEPTHRANGEXOES */, 2 /* NFOSMESA_GLDETACHSHADER */, 2 /* NFOSMESA_GLDISABLECLIENTSTATEINDEXEDEXT */, 2 /* NFOSMESA_GLDISABLECLIENTSTATEIEXT */, 2 /* NFOSMESA_GLDISABLEINDEXEDEXT */, 2 /* NFOSMESA_GLDISABLEVERTEXARRAYATTRIBEXT */, 2 /* NFOSMESA_GLDISABLEVERTEXARRAYEXT */, 2 /* NFOSMESA_GLDISABLEVERTEXATTRIBAPPLE */, 1 /* NFOSMESA_GLDISABLEVERTEXATTRIBARRAY */, 2 /* NFOSMESA_GLDISABLEI */, 3 /* NFOSMESA_GLDISPATCHCOMPUTE */, 6 /* NFOSMESA_GLDISPATCHCOMPUTEGROUPSIZEARB */, 1 /* NFOSMESA_GLDISPATCHCOMPUTEINDIRECT */, 2 /* NFOSMESA_GLDRAWARRAYSINDIRECT */, 4 /* NFOSMESA_GLDRAWARRAYSINSTANCED */, 4 /* NFOSMESA_GLDRAWARRAYSINSTANCEDARB */, 5 /* NFOSMESA_GLDRAWARRAYSINSTANCEDBASEINSTANCE */, 4 /* NFOSMESA_GLDRAWARRAYSINSTANCEDEXT */, 2 /* NFOSMESA_GLDRAWBUFFERS */, 5 /* NFOSMESA_GLDRAWELEMENTSBASEVERTEX */, 3 /* NFOSMESA_GLDRAWELEMENTSINDIRECT */, 5 /* NFOSMESA_GLDRAWELEMENTSINSTANCED */, 5 /* NFOSMESA_GLDRAWELEMENTSINSTANCEDARB */, 6 /* NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEINSTANCE */, 6 /* NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEVERTEX */, 7 /* NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE */, 5 /* NFOSMESA_GLDRAWELEMENTSINSTANCEDEXT */, 7 /* NFOSMESA_GLDRAWRANGEELEMENTSBASEVERTEX */, 11 /* NFOSMESA_GLDRAWTEXTURENV */, 2 /* NFOSMESA_GLDRAWTRANSFORMFEEDBACK */, 3 /* NFOSMESA_GLDRAWTRANSFORMFEEDBACKINSTANCED */, 2 /* NFOSMESA_GLDRAWTRANSFORMFEEDBACKNV */, 3 /* NFOSMESA_GLDRAWTRANSFORMFEEDBACKSTREAM */, 4 /* NFOSMESA_GLDRAWTRANSFORMFEEDBACKSTREAMINSTANCED */, 1 /* NFOSMESA_GLEDGEFLAGFORMATNV */, 2 /* NFOSMESA_GLENABLECLIENTSTATEINDEXEDEXT */, 2 /* NFOSMESA_GLENABLECLIENTSTATEIEXT */, 2 /* NFOSMESA_GLENABLEINDEXEDEXT */, 2 /* NFOSMESA_GLENABLEVERTEXARRAYATTRIBEXT */, 2 /* NFOSMESA_GLENABLEVERTEXARRAYEXT */, 2 /* NFOSMESA_GLENABLEVERTEXATTRIBAPPLE */, 1 /* NFOSMESA_GLENABLEVERTEXATTRIBARRAY */, 2 /* NFOSMESA_GLENABLEI */, 0 /* NFOSMESA_GLENDCONDITIONALRENDER */, 0 /* NFOSMESA_GLENDCONDITIONALRENDERNV */, 0 /* NFOSMESA_GLENDCONDITIONALRENDERNVX */, 1 /* NFOSMESA_GLENDPERFMONITORAMD */, 1 /* NFOSMESA_GLENDPERFQUERYINTEL */, 2 /* NFOSMESA_GLENDQUERYINDEXED */, 0 /* NFOSMESA_GLENDTRANSFORMFEEDBACK */, 0 /* NFOSMESA_GLENDTRANSFORMFEEDBACKEXT */, 0 /* NFOSMESA_GLENDTRANSFORMFEEDBACKNV */, 1 /* NFOSMESA_GLENDVIDEOCAPTURENV */, 1 /* NFOSMESA_GLEVALCOORD1XOES */, 1 /* NFOSMESA_GLEVALCOORD1XVOES */, 2 /* NFOSMESA_GLEVALCOORD2XOES */, 1 /* NFOSMESA_GLEVALCOORD2XVOES */, 3 /* NFOSMESA_GLFEEDBACKBUFFERXOES */, 2 /* NFOSMESA_GLFENCESYNC */, 0 /* NFOSMESA_GLFINISHRENDERAPPLE */, 3 /* NFOSMESA_GLFLUSHMAPPEDBUFFERRANGE */, 3 /* NFOSMESA_GLFLUSHMAPPEDBUFFERRANGEAPPLE */, 3 /* NFOSMESA_GLFLUSHMAPPEDNAMEDBUFFERRANGEEXT */, 0 /* NFOSMESA_GLFLUSHRENDERAPPLE */, 1 /* NFOSMESA_GLFLUSHSTATICDATAIBM */, 2 /* NFOSMESA_GLFOGCOORDFORMATNV */, 2 /* NFOSMESA_GLFOGXOES */, 2 /* NFOSMESA_GLFOGXVOES */, 0 /* NFOSMESA_GLFRAMETERMINATORGREMEDY */, 2 /* NFOSMESA_GLFRAMEBUFFERDRAWBUFFEREXT */, 3 /* NFOSMESA_GLFRAMEBUFFERDRAWBUFFERSEXT */, 3 /* NFOSMESA_GLFRAMEBUFFERPARAMETERI */, 2 /* NFOSMESA_GLFRAMEBUFFERREADBUFFEREXT */, 4 /* NFOSMESA_GLFRAMEBUFFERRENDERBUFFER */, 4 /* NFOSMESA_GLFRAMEBUFFERRENDERBUFFEREXT */, 4 /* NFOSMESA_GLFRAMEBUFFERTEXTURE */, 5 /* NFOSMESA_GLFRAMEBUFFERTEXTURE1D */, 5 /* NFOSMESA_GLFRAMEBUFFERTEXTURE1DEXT */, 5 /* NFOSMESA_GLFRAMEBUFFERTEXTURE2D */, 5 /* NFOSMESA_GLFRAMEBUFFERTEXTURE2DEXT */, 6 /* NFOSMESA_GLFRAMEBUFFERTEXTURE3D */, 6 /* NFOSMESA_GLFRAMEBUFFERTEXTURE3DEXT */, 4 /* NFOSMESA_GLFRAMEBUFFERTEXTUREARB */, 4 /* NFOSMESA_GLFRAMEBUFFERTEXTUREEXT */, 5 /* NFOSMESA_GLFRAMEBUFFERTEXTUREFACEARB */, 5 /* NFOSMESA_GLFRAMEBUFFERTEXTUREFACEEXT */, 5 /* NFOSMESA_GLFRAMEBUFFERTEXTURELAYER */, 5 /* NFOSMESA_GLFRAMEBUFFERTEXTURELAYERARB */, 5 /* NFOSMESA_GLFRAMEBUFFERTEXTURELAYEREXT */, 6 /* NFOSMESA_GLFRUSTUMFOES */, 6 /* NFOSMESA_GLFRUSTUMXOES */, 2 /* NFOSMESA_GLGENFRAMEBUFFERS */, 2 /* NFOSMESA_GLGENFRAMEBUFFERSEXT */, 3 /* NFOSMESA_GLGENNAMESAMD */, 1 /* NFOSMESA_GLGENPATHSNV */, 2 /* NFOSMESA_GLGENPERFMONITORSAMD */, 2 /* NFOSMESA_GLGENPROGRAMPIPELINES */, 2 /* NFOSMESA_GLGENRENDERBUFFERS */, 2 /* NFOSMESA_GLGENRENDERBUFFERSEXT */, 2 /* NFOSMESA_GLGENSAMPLERS */, 2 /* NFOSMESA_GLGENTRANSFORMFEEDBACKS */, 2 /* NFOSMESA_GLGENTRANSFORMFEEDBACKSNV */, 2 /* NFOSMESA_GLGENVERTEXARRAYS */, 1 /* NFOSMESA_GLGENERATEMIPMAP */, 1 /* NFOSMESA_GLGENERATEMIPMAPEXT */, 2 /* NFOSMESA_GLGENERATEMULTITEXMIPMAPEXT */, 2 /* NFOSMESA_GLGENERATETEXTUREMIPMAPEXT */, 4 /* NFOSMESA_GLGETACTIVEATOMICCOUNTERBUFFERIV */, 7 /* NFOSMESA_GLGETACTIVEATTRIB */, 6 /* NFOSMESA_GLGETACTIVESUBROUTINENAME */, 6 /* NFOSMESA_GLGETACTIVESUBROUTINEUNIFORMNAME */, 5 /* NFOSMESA_GLGETACTIVESUBROUTINEUNIFORMIV */, 7 /* NFOSMESA_GLGETACTIVEUNIFORM */, 2 /* NFOSMESA_GLGETACTIVEUNIFORMBLOCKINDEX */, 5 /* NFOSMESA_GLGETACTIVEUNIFORMBLOCKNAME */, 4 /* NFOSMESA_GLGETACTIVEUNIFORMBLOCKIV */, 5 /* NFOSMESA_GLGETACTIVEUNIFORMNAME */, 5 /* NFOSMESA_GLGETACTIVEUNIFORMSIV */, 7 /* NFOSMESA_GLGETACTIVEVARYINGNV */, 4 /* NFOSMESA_GLGETATTACHEDSHADERS */, 2 /* NFOSMESA_GLGETATTRIBLOCATION */, 3 /* NFOSMESA_GLGETBOOLEANINDEXEDVEXT */, 3 /* NFOSMESA_GLGETBOOLEANI_V */, 3 /* NFOSMESA_GLGETBUFFERPARAMETERI64V */, 3 /* NFOSMESA_GLGETBUFFERPARAMETERUI64VNV */, 2 /* NFOSMESA_GLGETCLIPPLANEFOES */, 2 /* NFOSMESA_GLGETCLIPPLANEXOES */, 4 /* NFOSMESA_GLGETCOMPRESSEDMULTITEXIMAGEEXT */, 4 /* NFOSMESA_GLGETCOMPRESSEDTEXTUREIMAGEEXT */, 3 /* NFOSMESA_GLGETCONVOLUTIONPARAMETERXVOES */, 3 /* NFOSMESA_GLGETDEBUGLOGLENGTHMESA */, 6 /* NFOSMESA_GLGETDEBUGLOGMESA */, 8 /* NFOSMESA_GLGETDEBUGMESSAGELOG */, 7 /* NFOSMESA_GLGETDEBUGMESSAGELOGAMD */, 8 /* NFOSMESA_GLGETDEBUGMESSAGELOGARB */, 3 /* NFOSMESA_GLGETDOUBLEINDEXEDVEXT */, 3 /* NFOSMESA_GLGETDOUBLEI_V */, 3 /* NFOSMESA_GLGETDOUBLEI_VEXT */, 1 /* NFOSMESA_GLGETFIRSTPERFQUERYIDINTEL */, 2 /* NFOSMESA_GLGETFIXEDVOES */, 3 /* NFOSMESA_GLGETFLOATINDEXEDVEXT */, 3 /* NFOSMESA_GLGETFLOATI_V */, 3 /* NFOSMESA_GLGETFLOATI_VEXT */, 2 /* NFOSMESA_GLGETFRAGDATAINDEX */, 2 /* NFOSMESA_GLGETFRAGDATALOCATION */, 2 /* NFOSMESA_GLGETFRAGDATALOCATIONEXT */, 4 /* NFOSMESA_GLGETFRAMEBUFFERATTACHMENTPARAMETERIV */, 4 /* NFOSMESA_GLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXT */, 3 /* NFOSMESA_GLGETFRAMEBUFFERPARAMETERIV */, 3 /* NFOSMESA_GLGETFRAMEBUFFERPARAMETERIVEXT */, 0 /* NFOSMESA_GLGETGRAPHICSRESETSTATUSARB */, 3 /* NFOSMESA_GLGETHISTOGRAMPARAMETERXVOES */, 5 /* NFOSMESA_GLGETIMAGEHANDLEARB */, 5 /* NFOSMESA_GLGETIMAGEHANDLENV */, 3 /* NFOSMESA_GLGETINTEGER64I_V */, 2 /* NFOSMESA_GLGETINTEGER64V */, 3 /* NFOSMESA_GLGETINTEGERINDEXEDVEXT */, 3 /* NFOSMESA_GLGETINTEGERI_V */, 3 /* NFOSMESA_GLGETINTEGERUI64I_VNV */, 2 /* NFOSMESA_GLGETINTEGERUI64VNV */, 5 /* NFOSMESA_GLGETINTERNALFORMATI64V */, 5 /* NFOSMESA_GLGETINTERNALFORMATIV */, 3 /* NFOSMESA_GLGETLIGHTXOES */, 3 /* NFOSMESA_GLGETMAPXVOES */, 3 /* NFOSMESA_GLGETMATERIALXOES */, 4 /* NFOSMESA_GLGETMULTITEXENVFVEXT */, 4 /* NFOSMESA_GLGETMULTITEXENVIVEXT */, 4 /* NFOSMESA_GLGETMULTITEXGENDVEXT */, 4 /* NFOSMESA_GLGETMULTITEXGENFVEXT */, 4 /* NFOSMESA_GLGETMULTITEXGENIVEXT */, 6 /* NFOSMESA_GLGETMULTITEXIMAGEEXT */, 5 /* NFOSMESA_GLGETMULTITEXLEVELPARAMETERFVEXT */, 5 /* NFOSMESA_GLGETMULTITEXLEVELPARAMETERIVEXT */, 4 /* NFOSMESA_GLGETMULTITEXPARAMETERIIVEXT */, 4 /* NFOSMESA_GLGETMULTITEXPARAMETERIUIVEXT */, 4 /* NFOSMESA_GLGETMULTITEXPARAMETERFVEXT */, 4 /* NFOSMESA_GLGETMULTITEXPARAMETERIVEXT */, 3 /* NFOSMESA_GLGETMULTISAMPLEFV */, 3 /* NFOSMESA_GLGETMULTISAMPLEFVNV */, 3 /* NFOSMESA_GLGETNAMEDBUFFERPARAMETERIVEXT */, 3 /* NFOSMESA_GLGETNAMEDBUFFERPARAMETERUI64VNV */, 3 /* NFOSMESA_GLGETNAMEDBUFFERPOINTERVEXT */, 4 /* NFOSMESA_GLGETNAMEDBUFFERSUBDATAEXT */, 4 /* NFOSMESA_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT */, 3 /* NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERIVEXT */, 4 /* NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERIIVEXT */, 4 /* NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXT */, 4 /* NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERDVEXT */, 4 /* NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERFVEXT */, 4 /* NFOSMESA_GLGETNAMEDPROGRAMSTRINGEXT */, 4 /* NFOSMESA_GLGETNAMEDPROGRAMIVEXT */, 3 /* NFOSMESA_GLGETNAMEDRENDERBUFFERPARAMETERIVEXT */, 5 /* NFOSMESA_GLGETNAMEDSTRINGARB */, 4 /* NFOSMESA_GLGETNAMEDSTRINGIVARB */, 2 /* NFOSMESA_GLGETNEXTPERFQUERYIDINTEL */, 5 /* NFOSMESA_GLGETOBJECTLABEL */, 5 /* NFOSMESA_GLGETOBJECTLABELEXT */, 4 /* NFOSMESA_GLGETOBJECTPARAMETERIVAPPLE */, 4 /* NFOSMESA_GLGETOBJECTPTRLABEL */, 3 /* NFOSMESA_GLGETPATHCOLORGENFVNV */, 3 /* NFOSMESA_GLGETPATHCOLORGENIVNV */, 2 /* NFOSMESA_GLGETPATHCOMMANDSNV */, 2 /* NFOSMESA_GLGETPATHCOORDSNV */, 2 /* NFOSMESA_GLGETPATHDASHARRAYNV */, 3 /* NFOSMESA_GLGETPATHLENGTHNV */, 5 /* NFOSMESA_GLGETPATHMETRICRANGENV */, 7 /* NFOSMESA_GLGETPATHMETRICSNV */, 3 /* NFOSMESA_GLGETPATHPARAMETERFVNV */, 3 /* NFOSMESA_GLGETPATHPARAMETERIVNV */, 9 /* NFOSMESA_GLGETPATHSPACINGNV */, 3 /* NFOSMESA_GLGETPATHTEXGENFVNV */, 3 /* NFOSMESA_GLGETPATHTEXGENIVNV */, 11 /* NFOSMESA_GLGETPERFCOUNTERINFOINTEL */, 5 /* NFOSMESA_GLGETPERFMONITORCOUNTERDATAAMD */, 4 /* NFOSMESA_GLGETPERFMONITORCOUNTERINFOAMD */, 5 /* NFOSMESA_GLGETPERFMONITORCOUNTERSTRINGAMD */, 5 /* NFOSMESA_GLGETPERFMONITORCOUNTERSAMD */, 4 /* NFOSMESA_GLGETPERFMONITORGROUPSTRINGAMD */, 3 /* NFOSMESA_GLGETPERFMONITORGROUPSAMD */, 5 /* NFOSMESA_GLGETPERFQUERYDATAINTEL */, 2 /* NFOSMESA_GLGETPERFQUERYIDBYNAMEINTEL */, 7 /* NFOSMESA_GLGETPERFQUERYINFOINTEL */, 3 /* NFOSMESA_GLGETPIXELMAPXV */, 3 /* NFOSMESA_GLGETPIXELTRANSFORMPARAMETERFVEXT */, 3 /* NFOSMESA_GLGETPIXELTRANSFORMPARAMETERIVEXT */, 3 /* NFOSMESA_GLGETPOINTERINDEXEDVEXT */, 3 /* NFOSMESA_GLGETPOINTERI_VEXT */, 5 /* NFOSMESA_GLGETPROGRAMBINARY */, 3 /* NFOSMESA_GLGETPROGRAMENVPARAMETERIIVNV */, 3 /* NFOSMESA_GLGETPROGRAMENVPARAMETERIUIVNV */, 4 /* NFOSMESA_GLGETPROGRAMINFOLOG */, 4 /* NFOSMESA_GLGETPROGRAMINTERFACEIV */, 3 /* NFOSMESA_GLGETPROGRAMLOCALPARAMETERIIVNV */, 3 /* NFOSMESA_GLGETPROGRAMLOCALPARAMETERIUIVNV */, 4 /* NFOSMESA_GLGETPROGRAMPIPELINEINFOLOG */, 3 /* NFOSMESA_GLGETPROGRAMPIPELINEIV */, 4 /* NFOSMESA_GLGETPROGRAMREGISTERFVMESA */, 3 /* NFOSMESA_GLGETPROGRAMRESOURCEINDEX */, 3 /* NFOSMESA_GLGETPROGRAMRESOURCELOCATION */, 3 /* NFOSMESA_GLGETPROGRAMRESOURCELOCATIONINDEX */, 6 /* NFOSMESA_GLGETPROGRAMRESOURCENAME */, 8 /* NFOSMESA_GLGETPROGRAMRESOURCEIV */, 4 /* NFOSMESA_GLGETPROGRAMSTAGEIV */, 3 /* NFOSMESA_GLGETPROGRAMSUBROUTINEPARAMETERUIVNV */, 3 /* NFOSMESA_GLGETPROGRAMIV */, 4 /* NFOSMESA_GLGETQUERYINDEXEDIV */, 3 /* NFOSMESA_GLGETQUERYOBJECTI64V */, 3 /* NFOSMESA_GLGETQUERYOBJECTI64VEXT */, 3 /* NFOSMESA_GLGETQUERYOBJECTUI64V */, 3 /* NFOSMESA_GLGETQUERYOBJECTUI64VEXT */, 3 /* NFOSMESA_GLGETRENDERBUFFERPARAMETERIV */, 3 /* NFOSMESA_GLGETRENDERBUFFERPARAMETERIVEXT */, 3 /* NFOSMESA_GLGETSAMPLERPARAMETERIIV */, 3 /* NFOSMESA_GLGETSAMPLERPARAMETERIUIV */, 3 /* NFOSMESA_GLGETSAMPLERPARAMETERFV */, 3 /* NFOSMESA_GLGETSAMPLERPARAMETERIV */, 4 /* NFOSMESA_GLGETSHADERINFOLOG */, 4 /* NFOSMESA_GLGETSHADERPRECISIONFORMAT */, 4 /* NFOSMESA_GLGETSHADERSOURCE */, 3 /* NFOSMESA_GLGETSHADERIV */, 3 /* NFOSMESA_LENGLGETSTRINGI */, 4 /* NFOSMESA_PUTGLGETSTRINGI */, 3 /* NFOSMESA_GLGETSUBROUTINEINDEX */, 3 /* NFOSMESA_GLGETSUBROUTINEUNIFORMLOCATION */, 5 /* NFOSMESA_GLGETSYNCIV */, 3 /* NFOSMESA_GLGETTEXENVXVOES */, 3 /* NFOSMESA_GLGETTEXGENXVOES */, 4 /* NFOSMESA_GLGETTEXLEVELPARAMETERXVOES */, 3 /* NFOSMESA_GLGETTEXPARAMETERIIV */, 3 /* NFOSMESA_GLGETTEXPARAMETERIIVEXT */, 3 /* NFOSMESA_GLGETTEXPARAMETERIUIV */, 3 /* NFOSMESA_GLGETTEXPARAMETERIUIVEXT */, 3 /* NFOSMESA_GLGETTEXPARAMETERPOINTERVAPPLE */, 3 /* NFOSMESA_GLGETTEXPARAMETERXVOES */, 1 /* NFOSMESA_GLGETTEXTUREHANDLEARB */, 1 /* NFOSMESA_GLGETTEXTUREHANDLENV */, 6 /* NFOSMESA_GLGETTEXTUREIMAGEEXT */, 5 /* NFOSMESA_GLGETTEXTURELEVELPARAMETERFVEXT */, 5 /* NFOSMESA_GLGETTEXTURELEVELPARAMETERIVEXT */, 4 /* NFOSMESA_GLGETTEXTUREPARAMETERIIVEXT */, 4 /* NFOSMESA_GLGETTEXTUREPARAMETERIUIVEXT */, 4 /* NFOSMESA_GLGETTEXTUREPARAMETERFVEXT */, 4 /* NFOSMESA_GLGETTEXTUREPARAMETERIVEXT */, 2 /* NFOSMESA_GLGETTEXTURESAMPLERHANDLEARB */, 2 /* NFOSMESA_GLGETTEXTURESAMPLERHANDLENV */, 7 /* NFOSMESA_GLGETTRANSFORMFEEDBACKVARYING */, 7 /* NFOSMESA_GLGETTRANSFORMFEEDBACKVARYINGEXT */, 3 /* NFOSMESA_GLGETTRANSFORMFEEDBACKVARYINGNV */, 2 /* NFOSMESA_GLGETUNIFORMBLOCKINDEX */, 2 /* NFOSMESA_GLGETUNIFORMBUFFERSIZEEXT */, 4 /* NFOSMESA_GLGETUNIFORMINDICES */, 2 /* NFOSMESA_GLGETUNIFORMLOCATION */, 2 /* NFOSMESA_GLGETUNIFORMOFFSETEXT */, 3 /* NFOSMESA_GLGETUNIFORMSUBROUTINEUIV */, 3 /* NFOSMESA_GLGETUNIFORMDV */, 3 /* NFOSMESA_GLGETUNIFORMFV */, 3 /* NFOSMESA_GLGETUNIFORMI64VNV */, 3 /* NFOSMESA_GLGETUNIFORMIV */, 3 /* NFOSMESA_GLGETUNIFORMUI64VNV */, 3 /* NFOSMESA_GLGETUNIFORMUIV */, 3 /* NFOSMESA_GLGETUNIFORMUIVEXT */, 2 /* NFOSMESA_GLGETVARYINGLOCATIONNV */, 4 /* NFOSMESA_GLGETVERTEXARRAYINTEGERI_VEXT */, 3 /* NFOSMESA_GLGETVERTEXARRAYINTEGERVEXT */, 4 /* NFOSMESA_GLGETVERTEXARRAYPOINTERI_VEXT */, 3 /* NFOSMESA_GLGETVERTEXARRAYPOINTERVEXT */, 3 /* NFOSMESA_GLGETVERTEXATTRIBIIV */, 3 /* NFOSMESA_GLGETVERTEXATTRIBIIVEXT */, 3 /* NFOSMESA_GLGETVERTEXATTRIBIUIV */, 3 /* NFOSMESA_GLGETVERTEXATTRIBIUIVEXT */, 3 /* NFOSMESA_GLGETVERTEXATTRIBLDV */, 3 /* NFOSMESA_GLGETVERTEXATTRIBLDVEXT */, 3 /* NFOSMESA_GLGETVERTEXATTRIBLI64VNV */, 3 /* NFOSMESA_GLGETVERTEXATTRIBLUI64VARB */, 3 /* NFOSMESA_GLGETVERTEXATTRIBLUI64VNV */, 3 /* NFOSMESA_GLGETVERTEXATTRIBPOINTERV */, 3 /* NFOSMESA_GLGETVERTEXATTRIBDV */, 3 /* NFOSMESA_GLGETVERTEXATTRIBFV */, 3 /* NFOSMESA_GLGETVERTEXATTRIBIV */, 4 /* NFOSMESA_GLGETVIDEOCAPTURESTREAMDVNV */, 4 /* NFOSMESA_GLGETVIDEOCAPTURESTREAMFVNV */, 4 /* NFOSMESA_GLGETVIDEOCAPTURESTREAMIVNV */, 3 /* NFOSMESA_GLGETVIDEOCAPTUREIVNV */, 3 /* NFOSMESA_GLGETVIDEOI64VNV */, 3 /* NFOSMESA_GLGETVIDEOIVNV */, 3 /* NFOSMESA_GLGETVIDEOUI64VNV */, 3 /* NFOSMESA_GLGETVIDEOUIVNV */, 5 /* NFOSMESA_GLGETNCOLORTABLEARB */, 4 /* NFOSMESA_GLGETNCOMPRESSEDTEXIMAGEARB */, 5 /* NFOSMESA_GLGETNCONVOLUTIONFILTERARB */, 6 /* NFOSMESA_GLGETNHISTOGRAMARB */, 4 /* NFOSMESA_GLGETNMAPDVARB */, 4 /* NFOSMESA_GLGETNMAPFVARB */, 4 /* NFOSMESA_GLGETNMAPIVARB */, 6 /* NFOSMESA_GLGETNMINMAXARB */, 3 /* NFOSMESA_GLGETNPIXELMAPFVARB */, 3 /* NFOSMESA_GLGETNPIXELMAPUIVARB */, 3 /* NFOSMESA_GLGETNPIXELMAPUSVARB */, 2 /* NFOSMESA_GLGETNPOLYGONSTIPPLEARB */, 8 /* NFOSMESA_GLGETNSEPARABLEFILTERARB */, 6 /* NFOSMESA_GLGETNTEXIMAGEARB */, 4 /* NFOSMESA_GLGETNUNIFORMDVARB */, 4 /* NFOSMESA_GLGETNUNIFORMFVARB */, 4 /* NFOSMESA_GLGETNUNIFORMIVARB */, 4 /* NFOSMESA_GLGETNUNIFORMUIVARB */, 3 /* NFOSMESA_GLIMPORTSYNCEXT */, 2 /* NFOSMESA_GLINDEXFORMATNV */, 1 /* NFOSMESA_GLINDEXXOES */, 1 /* NFOSMESA_GLINDEXXVOES */, 2 /* NFOSMESA_GLINSERTEVENTMARKEREXT */, 4 /* NFOSMESA_GLINTERPOLATEPATHSNV */, 1 /* NFOSMESA_GLINVALIDATEBUFFERDATA */, 3 /* NFOSMESA_GLINVALIDATEBUFFERSUBDATA */, 3 /* NFOSMESA_GLINVALIDATEFRAMEBUFFER */, 7 /* NFOSMESA_GLINVALIDATESUBFRAMEBUFFER */, 2 /* NFOSMESA_GLINVALIDATETEXIMAGE */, 8 /* NFOSMESA_GLINVALIDATETEXSUBIMAGE */, 1 /* NFOSMESA_GLISBUFFERRESIDENTNV */, 2 /* NFOSMESA_GLISENABLEDINDEXEDEXT */, 2 /* NFOSMESA_GLISENABLEDI */, 1 /* NFOSMESA_GLISFRAMEBUFFER */, 1 /* NFOSMESA_GLISFRAMEBUFFEREXT */, 2 /* NFOSMESA_GLISIMAGEHANDLERESIDENTARB */, 2 /* NFOSMESA_GLISIMAGEHANDLERESIDENTNV */, 2 /* NFOSMESA_GLISNAMEAMD */, 1 /* NFOSMESA_GLISNAMEDBUFFERRESIDENTNV */, 2 /* NFOSMESA_GLISNAMEDSTRINGARB */, 1 /* NFOSMESA_GLISPATHNV */, 4 /* NFOSMESA_GLISPOINTINFILLPATHNV */, 3 /* NFOSMESA_GLISPOINTINSTROKEPATHNV */, 1 /* NFOSMESA_GLISPROGRAM */, 1 /* NFOSMESA_GLISPROGRAMPIPELINE */, 1 /* NFOSMESA_GLISRENDERBUFFER */, 1 /* NFOSMESA_GLISRENDERBUFFEREXT */, 1 /* NFOSMESA_GLISSAMPLER */, 1 /* NFOSMESA_GLISSHADER */, 1 /* NFOSMESA_GLISSYNC */, 2 /* NFOSMESA_GLISTEXTUREHANDLERESIDENTARB */, 2 /* NFOSMESA_GLISTEXTUREHANDLERESIDENTNV */, 1 /* NFOSMESA_GLISTRANSFORMFEEDBACK */, 1 /* NFOSMESA_GLISTRANSFORMFEEDBACKNV */, 1 /* NFOSMESA_GLISVERTEXARRAY */, 2 /* NFOSMESA_GLISVERTEXATTRIBENABLEDAPPLE */, 4 /* NFOSMESA_GLLABELOBJECTEXT */, 2 /* NFOSMESA_GLLIGHTMODELXOES */, 2 /* NFOSMESA_GLLIGHTMODELXVOES */, 3 /* NFOSMESA_GLLIGHTXOES */, 3 /* NFOSMESA_GLLIGHTXVOES */, 1 /* NFOSMESA_GLLINEWIDTHXOES */, 1 /* NFOSMESA_GLLINKPROGRAM */, 1 /* NFOSMESA_GLLOADMATRIXXOES */, 1 /* NFOSMESA_GLLOADTRANSPOSEMATRIXXOES */, 1 /* NFOSMESA_GLMAKEBUFFERNONRESIDENTNV */, 2 /* NFOSMESA_GLMAKEBUFFERRESIDENTNV */, 2 /* NFOSMESA_GLMAKEIMAGEHANDLENONRESIDENTARB */, 2 /* NFOSMESA_GLMAKEIMAGEHANDLENONRESIDENTNV */, 3 /* NFOSMESA_GLMAKEIMAGEHANDLERESIDENTARB */, 3 /* NFOSMESA_GLMAKEIMAGEHANDLERESIDENTNV */, 1 /* NFOSMESA_GLMAKENAMEDBUFFERNONRESIDENTNV */, 2 /* NFOSMESA_GLMAKENAMEDBUFFERRESIDENTNV */, 2 /* NFOSMESA_GLMAKETEXTUREHANDLENONRESIDENTARB */, 2 /* NFOSMESA_GLMAKETEXTUREHANDLENONRESIDENTNV */, 2 /* NFOSMESA_GLMAKETEXTUREHANDLERESIDENTARB */, 2 /* NFOSMESA_GLMAKETEXTUREHANDLERESIDENTNV */, 6 /* NFOSMESA_GLMAP1XOES */, 10 /* NFOSMESA_GLMAP2XOES */, 4 /* NFOSMESA_GLMAPBUFFERRANGE */, 3 /* NFOSMESA_GLMAPGRID1XOES */, 5 /* NFOSMESA_GLMAPGRID2XOES */, 2 /* NFOSMESA_GLMAPNAMEDBUFFEREXT */, 4 /* NFOSMESA_GLMAPNAMEDBUFFERRANGEEXT */, 5 /* NFOSMESA_GLMAPTEXTURE2DINTEL */, 9 /* NFOSMESA_GLMAPVERTEXATTRIB1DAPPLE */, 7 /* NFOSMESA_GLMAPVERTEXATTRIB1FAPPLE */, 15 /* NFOSMESA_GLMAPVERTEXATTRIB2DAPPLE */, 11 /* NFOSMESA_GLMAPVERTEXATTRIB2FAPPLE */, 3 /* NFOSMESA_GLMATERIALXOES */, 3 /* NFOSMESA_GLMATERIALXVOES */, 13 /* NFOSMESA_GLMATRIXFRUSTUMEXT */, 1 /* NFOSMESA_GLMATRIXLOADIDENTITYEXT */, 2 /* NFOSMESA_GLMATRIXLOADTRANSPOSEDEXT */, 2 /* NFOSMESA_GLMATRIXLOADTRANSPOSEFEXT */, 2 /* NFOSMESA_GLMATRIXLOADDEXT */, 2 /* NFOSMESA_GLMATRIXLOADFEXT */, 2 /* NFOSMESA_GLMATRIXMULTTRANSPOSEDEXT */, 2 /* NFOSMESA_GLMATRIXMULTTRANSPOSEFEXT */, 2 /* NFOSMESA_GLMATRIXMULTDEXT */, 2 /* NFOSMESA_GLMATRIXMULTFEXT */, 13 /* NFOSMESA_GLMATRIXORTHOEXT */, 1 /* NFOSMESA_GLMATRIXPOPEXT */, 1 /* NFOSMESA_GLMATRIXPUSHEXT */, 9 /* NFOSMESA_GLMATRIXROTATEDEXT */, 5 /* NFOSMESA_GLMATRIXROTATEFEXT */, 7 /* NFOSMESA_GLMATRIXSCALEDEXT */, 4 /* NFOSMESA_GLMATRIXSCALEFEXT */, 7 /* NFOSMESA_GLMATRIXTRANSLATEDEXT */, 4 /* NFOSMESA_GLMATRIXTRANSLATEFEXT */, 1 /* NFOSMESA_GLMEMORYBARRIER */, 1 /* NFOSMESA_GLMEMORYBARRIEREXT */, 1 /* NFOSMESA_GLMINSAMPLESHADING */, 1 /* NFOSMESA_GLMINSAMPLESHADINGARB */, 1 /* NFOSMESA_GLMULTMATRIXXOES */, 1 /* NFOSMESA_GLMULTTRANSPOSEMATRIXXOES */, 4 /* NFOSMESA_GLMULTIDRAWARRAYSINDIRECT */, 4 /* NFOSMESA_GLMULTIDRAWARRAYSINDIRECTAMD */, 5 /* NFOSMESA_GLMULTIDRAWARRAYSINDIRECTBINDLESSNV */, 5 /* NFOSMESA_GLMULTIDRAWARRAYSINDIRECTCOUNTARB */, 6 /* NFOSMESA_GLMULTIDRAWELEMENTSBASEVERTEX */, 5 /* NFOSMESA_GLMULTIDRAWELEMENTSINDIRECT */, 5 /* NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTAMD */, 6 /* NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTBINDLESSNV */, 6 /* NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTCOUNTARB */, 4 /* NFOSMESA_GLMULTITEXBUFFEREXT */, 2 /* NFOSMESA_GLMULTITEXCOORD1BOES */, 2 /* NFOSMESA_GLMULTITEXCOORD1BVOES */, 2 /* NFOSMESA_GLMULTITEXCOORD1XOES */, 2 /* NFOSMESA_GLMULTITEXCOORD1XVOES */, 3 /* NFOSMESA_GLMULTITEXCOORD2BOES */, 2 /* NFOSMESA_GLMULTITEXCOORD2BVOES */, 3 /* NFOSMESA_GLMULTITEXCOORD2XOES */, 2 /* NFOSMESA_GLMULTITEXCOORD2XVOES */, 4 /* NFOSMESA_GLMULTITEXCOORD3BOES */, 2 /* NFOSMESA_GLMULTITEXCOORD3BVOES */, 4 /* NFOSMESA_GLMULTITEXCOORD3XOES */, 2 /* NFOSMESA_GLMULTITEXCOORD3XVOES */, 5 /* NFOSMESA_GLMULTITEXCOORD4BOES */, 2 /* NFOSMESA_GLMULTITEXCOORD4BVOES */, 5 /* NFOSMESA_GLMULTITEXCOORD4XOES */, 2 /* NFOSMESA_GLMULTITEXCOORD4XVOES */, 3 /* NFOSMESA_GLMULTITEXCOORDP1UI */, 3 /* NFOSMESA_GLMULTITEXCOORDP1UIV */, 3 /* NFOSMESA_GLMULTITEXCOORDP2UI */, 3 /* NFOSMESA_GLMULTITEXCOORDP2UIV */, 3 /* NFOSMESA_GLMULTITEXCOORDP3UI */, 3 /* NFOSMESA_GLMULTITEXCOORDP3UIV */, 3 /* NFOSMESA_GLMULTITEXCOORDP4UI */, 3 /* NFOSMESA_GLMULTITEXCOORDP4UIV */, 5 /* NFOSMESA_GLMULTITEXCOORDPOINTEREXT */, 4 /* NFOSMESA_GLMULTITEXENVFEXT */, 4 /* NFOSMESA_GLMULTITEXENVFVEXT */, 4 /* NFOSMESA_GLMULTITEXENVIEXT */, 4 /* NFOSMESA_GLMULTITEXENVIVEXT */, 5 /* NFOSMESA_GLMULTITEXGENDEXT */, 4 /* NFOSMESA_GLMULTITEXGENDVEXT */, 4 /* NFOSMESA_GLMULTITEXGENFEXT */, 4 /* NFOSMESA_GLMULTITEXGENFVEXT */, 4 /* NFOSMESA_GLMULTITEXGENIEXT */, 4 /* NFOSMESA_GLMULTITEXGENIVEXT */, 9 /* NFOSMESA_GLMULTITEXIMAGE1DEXT */, 10 /* NFOSMESA_GLMULTITEXIMAGE2DEXT */, 11 /* NFOSMESA_GLMULTITEXIMAGE3DEXT */, 4 /* NFOSMESA_GLMULTITEXPARAMETERIIVEXT */, 4 /* NFOSMESA_GLMULTITEXPARAMETERIUIVEXT */, 4 /* NFOSMESA_GLMULTITEXPARAMETERFEXT */, 4 /* NFOSMESA_GLMULTITEXPARAMETERFVEXT */, 4 /* NFOSMESA_GLMULTITEXPARAMETERIEXT */, 4 /* NFOSMESA_GLMULTITEXPARAMETERIVEXT */, 3 /* NFOSMESA_GLMULTITEXRENDERBUFFEREXT */, 8 /* NFOSMESA_GLMULTITEXSUBIMAGE1DEXT */, 10 /* NFOSMESA_GLMULTITEXSUBIMAGE2DEXT */, 12 /* NFOSMESA_GLMULTITEXSUBIMAGE3DEXT */, 4 /* NFOSMESA_GLNAMEDBUFFERDATAEXT */, 4 /* NFOSMESA_GLNAMEDBUFFERSTORAGEEXT */, 4 /* NFOSMESA_GLNAMEDBUFFERSUBDATAEXT */, 5 /* NFOSMESA_GLNAMEDCOPYBUFFERSUBDATAEXT */, 3 /* NFOSMESA_GLNAMEDFRAMEBUFFERPARAMETERIEXT */, 4 /* NFOSMESA_GLNAMEDFRAMEBUFFERRENDERBUFFEREXT */, 5 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE1DEXT */, 5 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE2DEXT */, 6 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE3DEXT */, 4 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTUREEXT */, 5 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTUREFACEEXT */, 5 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURELAYEREXT */, 11 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4DEXT */, 4 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4DVEXT */, 7 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4FEXT */, 4 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4FVEXT */, 7 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4IEXT */, 4 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4IVEXT */, 7 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4UIEXT */, 4 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4UIVEXT */, 5 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERS4FVEXT */, 5 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERSI4IVEXT */, 5 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXT */, 5 /* NFOSMESA_GLNAMEDPROGRAMSTRINGEXT */, 4 /* NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEEXT */, 6 /* NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXT */, 5 /* NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXT */, 5 /* NFOSMESA_GLNAMEDSTRINGARB */, 3 /* NFOSMESA_GLNORMAL3XOES */, 1 /* NFOSMESA_GLNORMAL3XVOES */, 2 /* NFOSMESA_GLNORMALFORMATNV */, 2 /* NFOSMESA_GLNORMALP3UI */, 2 /* NFOSMESA_GLNORMALP3UIV */, 4 /* NFOSMESA_GLOBJECTLABEL */, 3 /* NFOSMESA_GLOBJECTPTRLABEL */, 3 /* NFOSMESA_GLOBJECTPURGEABLEAPPLE */, 3 /* NFOSMESA_GLOBJECTUNPURGEABLEAPPLE */, 6 /* NFOSMESA_GLORTHOFOES */, 6 /* NFOSMESA_GLORTHOXOES */, 1 /* NFOSMESA_GLPASSTHROUGHXOES */, 2 /* NFOSMESA_GLPATCHPARAMETERFV */, 2 /* NFOSMESA_GLPATCHPARAMETERI */, 4 /* NFOSMESA_GLPATHCOLORGENNV */, 6 /* NFOSMESA_GLPATHCOMMANDSNV */, 4 /* NFOSMESA_GLPATHCOORDSNV */, 1 /* NFOSMESA_GLPATHCOVERDEPTHFUNCNV */, 3 /* NFOSMESA_GLPATHDASHARRAYNV */, 1 /* NFOSMESA_GLPATHFOGGENNV */, 9 /* NFOSMESA_GLPATHGLYPHRANGENV */, 10 /* NFOSMESA_GLPATHGLYPHSNV */, 3 /* NFOSMESA_GLPATHPARAMETERFNV */, 3 /* NFOSMESA_GLPATHPARAMETERFVNV */, 3 /* NFOSMESA_GLPATHPARAMETERINV */, 3 /* NFOSMESA_GLPATHPARAMETERIVNV */, 2 /* NFOSMESA_GLPATHSTENCILDEPTHOFFSETNV */, 3 /* NFOSMESA_GLPATHSTENCILFUNCNV */, 4 /* NFOSMESA_GLPATHSTRINGNV */, 8 /* NFOSMESA_GLPATHSUBCOMMANDSNV */, 5 /* NFOSMESA_GLPATHSUBCOORDSNV */, 4 /* NFOSMESA_GLPATHTEXGENNV */, 0 /* NFOSMESA_GLPAUSETRANSFORMFEEDBACK */, 0 /* NFOSMESA_GLPAUSETRANSFORMFEEDBACKNV */, 3 /* NFOSMESA_GLPIXELMAPX */, 2 /* NFOSMESA_GLPIXELSTOREX */, 2 /* NFOSMESA_GLPIXELTRANSFERXOES */, 2 /* NFOSMESA_GLPIXELZOOMXOES */, 8 /* NFOSMESA_GLPOINTALONGPATHNV */, 2 /* NFOSMESA_GLPOINTPARAMETERXVOES */, 3 /* NFOSMESA_GLPOINTSIZEPOINTERAPPLE */, 1 /* NFOSMESA_GLPOINTSIZEXOES */, 2 /* NFOSMESA_GLPOLYGONOFFSETXOES */, 0 /* NFOSMESA_GLPOPDEBUGGROUP */, 0 /* NFOSMESA_GLPOPGROUPMARKEREXT */, 14 /* NFOSMESA_GLPRESENTFRAMEDUALFILLNV */, 12 /* NFOSMESA_GLPRESENTFRAMEKEYEDNV */, 1 /* NFOSMESA_GLPRIMITIVERESTARTINDEX */, 3 /* NFOSMESA_GLPRIORITIZETEXTURESXOES */, 4 /* NFOSMESA_GLPROGRAMBINARY */, 5 /* NFOSMESA_GLPROGRAMBUFFERPARAMETERSIIVNV */, 5 /* NFOSMESA_GLPROGRAMBUFFERPARAMETERSIUIVNV */, 5 /* NFOSMESA_GLPROGRAMBUFFERPARAMETERSFVNV */, 3 /* NFOSMESA_GLPROGRAMCALLBACKMESA */, 6 /* NFOSMESA_GLPROGRAMENVPARAMETERI4INV */, 3 /* NFOSMESA_GLPROGRAMENVPARAMETERI4IVNV */, 6 /* NFOSMESA_GLPROGRAMENVPARAMETERI4UINV */, 3 /* NFOSMESA_GLPROGRAMENVPARAMETERI4UIVNV */, 4 /* NFOSMESA_GLPROGRAMENVPARAMETERS4FVEXT */, 4 /* NFOSMESA_GLPROGRAMENVPARAMETERSI4IVNV */, 4 /* NFOSMESA_GLPROGRAMENVPARAMETERSI4UIVNV */, 6 /* NFOSMESA_GLPROGRAMLOCALPARAMETERI4INV */, 3 /* NFOSMESA_GLPROGRAMLOCALPARAMETERI4IVNV */, 6 /* NFOSMESA_GLPROGRAMLOCALPARAMETERI4UINV */, 3 /* NFOSMESA_GLPROGRAMLOCALPARAMETERI4UIVNV */, 4 /* NFOSMESA_GLPROGRAMLOCALPARAMETERS4FVEXT */, 4 /* NFOSMESA_GLPROGRAMLOCALPARAMETERSI4IVNV */, 4 /* NFOSMESA_GLPROGRAMLOCALPARAMETERSI4UIVNV */, 3 /* NFOSMESA_GLPROGRAMPARAMETERI */, 3 /* NFOSMESA_GLPROGRAMPARAMETERIARB */, 3 /* NFOSMESA_GLPROGRAMPARAMETERIEXT */, 3 /* NFOSMESA_GLPROGRAMSUBROUTINEPARAMETERSUIVNV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1D */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1DEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1DV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1DVEXT */, 3 /* NFOSMESA_GLPROGRAMUNIFORM1F */, 3 /* NFOSMESA_GLPROGRAMUNIFORM1FEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1FV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1FVEXT */, 3 /* NFOSMESA_GLPROGRAMUNIFORM1I */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1I64NV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1I64VNV */, 3 /* NFOSMESA_GLPROGRAMUNIFORM1IEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1IV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1IVEXT */, 3 /* NFOSMESA_GLPROGRAMUNIFORM1UI */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1UI64NV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1UI64VNV */, 3 /* NFOSMESA_GLPROGRAMUNIFORM1UIEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1UIV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1UIVEXT */, 6 /* NFOSMESA_GLPROGRAMUNIFORM2D */, 6 /* NFOSMESA_GLPROGRAMUNIFORM2DEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2DV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2DVEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2F */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2FEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2FV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2FVEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2I */, 6 /* NFOSMESA_GLPROGRAMUNIFORM2I64NV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2I64VNV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2IEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2IV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2IVEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2UI */, 6 /* NFOSMESA_GLPROGRAMUNIFORM2UI64NV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2UI64VNV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2UIEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2UIV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2UIVEXT */, 8 /* NFOSMESA_GLPROGRAMUNIFORM3D */, 8 /* NFOSMESA_GLPROGRAMUNIFORM3DEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM3DV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM3DVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORM3F */, 5 /* NFOSMESA_GLPROGRAMUNIFORM3FEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM3FV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM3FVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORM3I */, 8 /* NFOSMESA_GLPROGRAMUNIFORM3I64NV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM3I64VNV */, 5 /* NFOSMESA_GLPROGRAMUNIFORM3IEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM3IV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM3IVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORM3UI */, 8 /* NFOSMESA_GLPROGRAMUNIFORM3UI64NV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM3UI64VNV */, 5 /* NFOSMESA_GLPROGRAMUNIFORM3UIEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM3UIV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM3UIVEXT */, 10 /* NFOSMESA_GLPROGRAMUNIFORM4D */, 10 /* NFOSMESA_GLPROGRAMUNIFORM4DEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM4DV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM4DVEXT */, 6 /* NFOSMESA_GLPROGRAMUNIFORM4F */, 6 /* NFOSMESA_GLPROGRAMUNIFORM4FEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM4FV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM4FVEXT */, 6 /* NFOSMESA_GLPROGRAMUNIFORM4I */, 10 /* NFOSMESA_GLPROGRAMUNIFORM4I64NV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM4I64VNV */, 6 /* NFOSMESA_GLPROGRAMUNIFORM4IEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM4IV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM4IVEXT */, 6 /* NFOSMESA_GLPROGRAMUNIFORM4UI */, 10 /* NFOSMESA_GLPROGRAMUNIFORM4UI64NV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM4UI64VNV */, 6 /* NFOSMESA_GLPROGRAMUNIFORM4UIEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORM4UIV */, 4 /* NFOSMESA_GLPROGRAMUNIFORM4UIVEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64ARB */, 4 /* NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64NV */, 4 /* NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64VARB */, 4 /* NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64VNV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2DV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2DVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2FV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2FVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3DV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3DVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3FV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3FVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4DV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4DVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4FV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4FVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3DV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3DVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3FV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3FVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2DV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2DVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2FV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2FVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4DV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4DVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4FV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4FVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4DV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4DVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4FV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4FVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2DV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2DVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2FV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2FVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3DV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3DVEXT */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3FV */, 5 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3FVEXT */, 4 /* NFOSMESA_GLPROGRAMUNIFORMUI64NV */, 4 /* NFOSMESA_GLPROGRAMUNIFORMUI64VNV */, 2 /* NFOSMESA_GLPROGRAMVERTEXLIMITNV */, 1 /* NFOSMESA_GLPROVOKINGVERTEX */, 1 /* NFOSMESA_GLPROVOKINGVERTEXEXT */, 1 /* NFOSMESA_GLPUSHCLIENTATTRIBDEFAULTEXT */, 4 /* NFOSMESA_GLPUSHDEBUGGROUP */, 2 /* NFOSMESA_GLPUSHGROUPMARKEREXT */, 2 /* NFOSMESA_GLQUERYCOUNTER */, 2 /* NFOSMESA_GLQUERYMATRIXXOES */, 4 /* NFOSMESA_GLQUERYOBJECTPARAMETERUIAMD */, 2 /* NFOSMESA_GLRASTERPOS2XOES */, 1 /* NFOSMESA_GLRASTERPOS2XVOES */, 3 /* NFOSMESA_GLRASTERPOS3XOES */, 1 /* NFOSMESA_GLRASTERPOS3XVOES */, 4 /* NFOSMESA_GLRASTERPOS4XOES */, 1 /* NFOSMESA_GLRASTERPOS4XVOES */, 8 /* NFOSMESA_GLREADNPIXELSARB */, 4 /* NFOSMESA_GLRECTXOES */, 2 /* NFOSMESA_GLRECTXVOES */, 0 /* NFOSMESA_GLRELEASESHADERCOMPILER */, 4 /* NFOSMESA_GLRENDERBUFFERSTORAGE */, 4 /* NFOSMESA_GLRENDERBUFFERSTORAGEEXT */, 5 /* NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLE */, 6 /* NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENV */, 5 /* NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLEEXT */, 0 /* NFOSMESA_GLRESUMETRANSFORMFEEDBACK */, 0 /* NFOSMESA_GLRESUMETRANSFORMFEEDBACKNV */, 4 /* NFOSMESA_GLROTATEXOES */, 2 /* NFOSMESA_GLSAMPLECOVERAGEOES */, 2 /* NFOSMESA_GLSAMPLEMASKINDEXEDNV */, 2 /* NFOSMESA_GLSAMPLEMASKI */, 1 /* NFOSMESA_GLSAMPLEPASS */, 1 /* NFOSMESA_GLSAMPLEPASSARB */, 3 /* NFOSMESA_GLSAMPLERPARAMETERIIV */, 3 /* NFOSMESA_GLSAMPLERPARAMETERIUIV */, 3 /* NFOSMESA_GLSAMPLERPARAMETERF */, 3 /* NFOSMESA_GLSAMPLERPARAMETERFV */, 3 /* NFOSMESA_GLSAMPLERPARAMETERI */, 3 /* NFOSMESA_GLSAMPLERPARAMETERIV */, 3 /* NFOSMESA_GLSCALEXOES */, 3 /* NFOSMESA_GLSCISSORARRAYV */, 5 /* NFOSMESA_GLSCISSORINDEXED */, 2 /* NFOSMESA_GLSCISSORINDEXEDV */, 3 /* NFOSMESA_GLSECONDARYCOLORFORMATNV */, 2 /* NFOSMESA_GLSECONDARYCOLORP3UI */, 2 /* NFOSMESA_GLSECONDARYCOLORP3UIV */, 5 /* NFOSMESA_GLSELECTPERFMONITORCOUNTERSAMD */, 3 /* NFOSMESA_GLSETMULTISAMPLEFVAMD */, 5 /* NFOSMESA_GLSHADERBINARY */, 4 /* NFOSMESA_GLSHADERSOURCE */, 3 /* NFOSMESA_GLSHADERSTORAGEBLOCKBINDING */, 2 /* NFOSMESA_GLSTENCILCLEARTAGEXT */, 8 /* NFOSMESA_GLSTENCILFILLPATHINSTANCEDNV */, 3 /* NFOSMESA_GLSTENCILFILLPATHNV */, 4 /* NFOSMESA_GLSTENCILFUNCSEPARATE */, 2 /* NFOSMESA_GLSTENCILMASKSEPARATE */, 4 /* NFOSMESA_GLSTENCILOPSEPARATE */, 2 /* NFOSMESA_GLSTENCILOPVALUEAMD */, 8 /* NFOSMESA_GLSTENCILSTROKEPATHINSTANCEDNV */, 3 /* NFOSMESA_GLSTENCILSTROKEPATHNV */, 2 /* NFOSMESA_GLSTRINGMARKERGREMEDY */, 0 /* NFOSMESA_GLSWAPAPPLE */, 1 /* NFOSMESA_GLSYNCTEXTUREINTEL */, 1 /* NFOSMESA_GLTESSELLATIONFACTORAMD */, 1 /* NFOSMESA_GLTESSELLATIONMODEAMD */, 3 /* NFOSMESA_GLTEXBUFFER */, 3 /* NFOSMESA_GLTEXBUFFERARB */, 3 /* NFOSMESA_GLTEXBUFFEREXT */, 5 /* NFOSMESA_GLTEXBUFFERRANGE */, 1 /* NFOSMESA_GLTEXCOORD1BOES */, 1 /* NFOSMESA_GLTEXCOORD1BVOES */, 1 /* NFOSMESA_GLTEXCOORD1XOES */, 1 /* NFOSMESA_GLTEXCOORD1XVOES */, 2 /* NFOSMESA_GLTEXCOORD2BOES */, 1 /* NFOSMESA_GLTEXCOORD2BVOES */, 2 /* NFOSMESA_GLTEXCOORD2XOES */, 1 /* NFOSMESA_GLTEXCOORD2XVOES */, 3 /* NFOSMESA_GLTEXCOORD3BOES */, 1 /* NFOSMESA_GLTEXCOORD3BVOES */, 3 /* NFOSMESA_GLTEXCOORD3XOES */, 1 /* NFOSMESA_GLTEXCOORD3XVOES */, 4 /* NFOSMESA_GLTEXCOORD4BOES */, 1 /* NFOSMESA_GLTEXCOORD4BVOES */, 4 /* NFOSMESA_GLTEXCOORD4XOES */, 1 /* NFOSMESA_GLTEXCOORD4XVOES */, 3 /* NFOSMESA_GLTEXCOORDFORMATNV */, 2 /* NFOSMESA_GLTEXCOORDP1UI */, 2 /* NFOSMESA_GLTEXCOORDP1UIV */, 2 /* NFOSMESA_GLTEXCOORDP2UI */, 2 /* NFOSMESA_GLTEXCOORDP2UIV */, 2 /* NFOSMESA_GLTEXCOORDP3UI */, 2 /* NFOSMESA_GLTEXCOORDP3UIV */, 2 /* NFOSMESA_GLTEXCOORDP4UI */, 2 /* NFOSMESA_GLTEXCOORDP4UIV */, 3 /* NFOSMESA_GLTEXENVXOES */, 3 /* NFOSMESA_GLTEXENVXVOES */, 3 /* NFOSMESA_GLTEXGENXOES */, 3 /* NFOSMESA_GLTEXGENXVOES */, 6 /* NFOSMESA_GLTEXIMAGE2DMULTISAMPLE */, 7 /* NFOSMESA_GLTEXIMAGE2DMULTISAMPLECOVERAGENV */, 7 /* NFOSMESA_GLTEXIMAGE3DMULTISAMPLE */, 8 /* NFOSMESA_GLTEXIMAGE3DMULTISAMPLECOVERAGENV */, 9 /* NFOSMESA_GLTEXPAGECOMMITMENTARB */, 3 /* NFOSMESA_GLTEXPARAMETERIIV */, 3 /* NFOSMESA_GLTEXPARAMETERIIVEXT */, 3 /* NFOSMESA_GLTEXPARAMETERIUIV */, 3 /* NFOSMESA_GLTEXPARAMETERIUIVEXT */, 3 /* NFOSMESA_GLTEXPARAMETERXOES */, 3 /* NFOSMESA_GLTEXPARAMETERXVOES */, 2 /* NFOSMESA_GLTEXRENDERBUFFERNV */, 3 /* NFOSMESA_GLTEXSCISSORFUNCINTEL */, 3 /* NFOSMESA_GLTEXSCISSORINTEL */, 4 /* NFOSMESA_GLTEXSTORAGE1D */, 5 /* NFOSMESA_GLTEXSTORAGE2D */, 6 /* NFOSMESA_GLTEXSTORAGE2DMULTISAMPLE */, 6 /* NFOSMESA_GLTEXSTORAGE3D */, 7 /* NFOSMESA_GLTEXSTORAGE3DMULTISAMPLE */, 7 /* NFOSMESA_GLTEXSTORAGESPARSEAMD */, 0 /* NFOSMESA_GLTEXTUREBARRIERNV */, 4 /* NFOSMESA_GLTEXTUREBUFFEREXT */, 6 /* NFOSMESA_GLTEXTUREBUFFERRANGEEXT */, 1 /* NFOSMESA_GLTEXTUREFOGSGIX */, 9 /* NFOSMESA_GLTEXTUREIMAGE1DEXT */, 10 /* NFOSMESA_GLTEXTUREIMAGE2DEXT */, 8 /* NFOSMESA_GLTEXTUREIMAGE2DMULTISAMPLECOVERAGENV */, 7 /* NFOSMESA_GLTEXTUREIMAGE2DMULTISAMPLENV */, 11 /* NFOSMESA_GLTEXTUREIMAGE3DEXT */, 9 /* NFOSMESA_GLTEXTUREIMAGE3DMULTISAMPLECOVERAGENV */, 8 /* NFOSMESA_GLTEXTUREIMAGE3DMULTISAMPLENV */, 9 /* NFOSMESA_GLTEXTUREPAGECOMMITMENTEXT */, 4 /* NFOSMESA_GLTEXTUREPARAMETERIIVEXT */, 4 /* NFOSMESA_GLTEXTUREPARAMETERIUIVEXT */, 4 /* NFOSMESA_GLTEXTUREPARAMETERFEXT */, 4 /* NFOSMESA_GLTEXTUREPARAMETERFVEXT */, 4 /* NFOSMESA_GLTEXTUREPARAMETERIEXT */, 4 /* NFOSMESA_GLTEXTUREPARAMETERIVEXT */, 3 /* NFOSMESA_GLTEXTURERANGEAPPLE */, 3 /* NFOSMESA_GLTEXTURERENDERBUFFEREXT */, 5 /* NFOSMESA_GLTEXTURESTORAGE1DEXT */, 6 /* NFOSMESA_GLTEXTURESTORAGE2DEXT */, 7 /* NFOSMESA_GLTEXTURESTORAGE2DMULTISAMPLEEXT */, 7 /* NFOSMESA_GLTEXTURESTORAGE3DEXT */, 8 /* NFOSMESA_GLTEXTURESTORAGE3DMULTISAMPLEEXT */, 8 /* NFOSMESA_GLTEXTURESTORAGESPARSEAMD */, 8 /* NFOSMESA_GLTEXTURESUBIMAGE1DEXT */, 10 /* NFOSMESA_GLTEXTURESUBIMAGE2DEXT */, 12 /* NFOSMESA_GLTEXTURESUBIMAGE3DEXT */, 8 /* NFOSMESA_GLTEXTUREVIEW */, 3 /* NFOSMESA_GLTRANSFORMFEEDBACKATTRIBSNV */, 5 /* NFOSMESA_GLTRANSFORMFEEDBACKSTREAMATTRIBSNV */, 4 /* NFOSMESA_GLTRANSFORMFEEDBACKVARYINGS */, 4 /* NFOSMESA_GLTRANSFORMFEEDBACKVARYINGSEXT */, 4 /* NFOSMESA_GLTRANSFORMFEEDBACKVARYINGSNV */, 4 /* NFOSMESA_GLTRANSFORMPATHNV */, 3 /* NFOSMESA_GLTRANSLATEXOES */, 3 /* NFOSMESA_GLUNIFORM1D */, 3 /* NFOSMESA_GLUNIFORM1DV */, 2 /* NFOSMESA_GLUNIFORM1F */, 3 /* NFOSMESA_GLUNIFORM1FV */, 2 /* NFOSMESA_GLUNIFORM1I */, 3 /* NFOSMESA_GLUNIFORM1I64NV */, 3 /* NFOSMESA_GLUNIFORM1I64VNV */, 3 /* NFOSMESA_GLUNIFORM1IV */, 2 /* NFOSMESA_GLUNIFORM1UI */, 3 /* NFOSMESA_GLUNIFORM1UI64NV */, 3 /* NFOSMESA_GLUNIFORM1UI64VNV */, 2 /* NFOSMESA_GLUNIFORM1UIEXT */, 3 /* NFOSMESA_GLUNIFORM1UIV */, 3 /* NFOSMESA_GLUNIFORM1UIVEXT */, 5 /* NFOSMESA_GLUNIFORM2D */, 3 /* NFOSMESA_GLUNIFORM2DV */, 3 /* NFOSMESA_GLUNIFORM2F */, 3 /* NFOSMESA_GLUNIFORM2FV */, 3 /* NFOSMESA_GLUNIFORM2I */, 5 /* NFOSMESA_GLUNIFORM2I64NV */, 3 /* NFOSMESA_GLUNIFORM2I64VNV */, 3 /* NFOSMESA_GLUNIFORM2IV */, 3 /* NFOSMESA_GLUNIFORM2UI */, 5 /* NFOSMESA_GLUNIFORM2UI64NV */, 3 /* NFOSMESA_GLUNIFORM2UI64VNV */, 3 /* NFOSMESA_GLUNIFORM2UIEXT */, 3 /* NFOSMESA_GLUNIFORM2UIV */, 3 /* NFOSMESA_GLUNIFORM2UIVEXT */, 7 /* NFOSMESA_GLUNIFORM3D */, 3 /* NFOSMESA_GLUNIFORM3DV */, 4 /* NFOSMESA_GLUNIFORM3F */, 3 /* NFOSMESA_GLUNIFORM3FV */, 4 /* NFOSMESA_GLUNIFORM3I */, 7 /* NFOSMESA_GLUNIFORM3I64NV */, 3 /* NFOSMESA_GLUNIFORM3I64VNV */, 3 /* NFOSMESA_GLUNIFORM3IV */, 4 /* NFOSMESA_GLUNIFORM3UI */, 7 /* NFOSMESA_GLUNIFORM3UI64NV */, 3 /* NFOSMESA_GLUNIFORM3UI64VNV */, 4 /* NFOSMESA_GLUNIFORM3UIEXT */, 3 /* NFOSMESA_GLUNIFORM3UIV */, 3 /* NFOSMESA_GLUNIFORM3UIVEXT */, 9 /* NFOSMESA_GLUNIFORM4D */, 3 /* NFOSMESA_GLUNIFORM4DV */, 5 /* NFOSMESA_GLUNIFORM4F */, 3 /* NFOSMESA_GLUNIFORM4FV */, 5 /* NFOSMESA_GLUNIFORM4I */, 9 /* NFOSMESA_GLUNIFORM4I64NV */, 3 /* NFOSMESA_GLUNIFORM4I64VNV */, 3 /* NFOSMESA_GLUNIFORM4IV */, 5 /* NFOSMESA_GLUNIFORM4UI */, 9 /* NFOSMESA_GLUNIFORM4UI64NV */, 3 /* NFOSMESA_GLUNIFORM4UI64VNV */, 5 /* NFOSMESA_GLUNIFORM4UIEXT */, 3 /* NFOSMESA_GLUNIFORM4UIV */, 3 /* NFOSMESA_GLUNIFORM4UIVEXT */, 3 /* NFOSMESA_GLUNIFORMBLOCKBINDING */, 3 /* NFOSMESA_GLUNIFORMBUFFEREXT */, 3 /* NFOSMESA_GLUNIFORMHANDLEUI64ARB */, 3 /* NFOSMESA_GLUNIFORMHANDLEUI64NV */, 3 /* NFOSMESA_GLUNIFORMHANDLEUI64VARB */, 3 /* NFOSMESA_GLUNIFORMHANDLEUI64VNV */, 4 /* NFOSMESA_GLUNIFORMMATRIX2DV */, 4 /* NFOSMESA_GLUNIFORMMATRIX2FV */, 4 /* NFOSMESA_GLUNIFORMMATRIX2X3DV */, 4 /* NFOSMESA_GLUNIFORMMATRIX2X3FV */, 4 /* NFOSMESA_GLUNIFORMMATRIX2X4DV */, 4 /* NFOSMESA_GLUNIFORMMATRIX2X4FV */, 4 /* NFOSMESA_GLUNIFORMMATRIX3DV */, 4 /* NFOSMESA_GLUNIFORMMATRIX3FV */, 4 /* NFOSMESA_GLUNIFORMMATRIX3X2DV */, 4 /* NFOSMESA_GLUNIFORMMATRIX3X2FV */, 4 /* NFOSMESA_GLUNIFORMMATRIX3X4DV */, 4 /* NFOSMESA_GLUNIFORMMATRIX3X4FV */, 4 /* NFOSMESA_GLUNIFORMMATRIX4DV */, 4 /* NFOSMESA_GLUNIFORMMATRIX4FV */, 4 /* NFOSMESA_GLUNIFORMMATRIX4X2DV */, 4 /* NFOSMESA_GLUNIFORMMATRIX4X2FV */, 4 /* NFOSMESA_GLUNIFORMMATRIX4X3DV */, 4 /* NFOSMESA_GLUNIFORMMATRIX4X3FV */, 3 /* NFOSMESA_GLUNIFORMSUBROUTINESUIV */, 3 /* NFOSMESA_GLUNIFORMUI64NV */, 3 /* NFOSMESA_GLUNIFORMUI64VNV */, 1 /* NFOSMESA_GLUNMAPNAMEDBUFFEREXT */, 2 /* NFOSMESA_GLUNMAPTEXTURE2DINTEL */, 1 /* NFOSMESA_GLUSEPROGRAM */, 3 /* NFOSMESA_GLUSEPROGRAMSTAGES */, 2 /* NFOSMESA_GLUSESHADERPROGRAMEXT */, 0 /* NFOSMESA_GLVDPAUFININV */, 5 /* NFOSMESA_GLVDPAUGETSURFACEIVNV */, 2 /* NFOSMESA_GLVDPAUINITNV */, 1 /* NFOSMESA_GLVDPAUISSURFACENV */, 2 /* NFOSMESA_GLVDPAUMAPSURFACESNV */, 4 /* NFOSMESA_GLVDPAUREGISTEROUTPUTSURFACENV */, 4 /* NFOSMESA_GLVDPAUREGISTERVIDEOSURFACENV */, 2 /* NFOSMESA_GLVDPAUSURFACEACCESSNV */, 2 /* NFOSMESA_GLVDPAUUNMAPSURFACESNV */, 1 /* NFOSMESA_GLVDPAUUNREGISTERSURFACENV */, 1 /* NFOSMESA_GLVALIDATEPROGRAM */, 1 /* NFOSMESA_GLVALIDATEPROGRAMPIPELINE */, 2 /* NFOSMESA_GLVERTEX2BOES */, 1 /* NFOSMESA_GLVERTEX2BVOES */, 1 /* NFOSMESA_GLVERTEX2XOES */, 1 /* NFOSMESA_GLVERTEX2XVOES */, 3 /* NFOSMESA_GLVERTEX3BOES */, 1 /* NFOSMESA_GLVERTEX3BVOES */, 2 /* NFOSMESA_GLVERTEX3XOES */, 1 /* NFOSMESA_GLVERTEX3XVOES */, 4 /* NFOSMESA_GLVERTEX4BOES */, 1 /* NFOSMESA_GLVERTEX4BVOES */, 3 /* NFOSMESA_GLVERTEX4XOES */, 1 /* NFOSMESA_GLVERTEX4XVOES */, 5 /* NFOSMESA_GLVERTEXARRAYBINDVERTEXBUFFEREXT */, 6 /* NFOSMESA_GLVERTEXARRAYCOLOROFFSETEXT */, 4 /* NFOSMESA_GLVERTEXARRAYEDGEFLAGOFFSETEXT */, 5 /* NFOSMESA_GLVERTEXARRAYFOGCOORDOFFSETEXT */, 5 /* NFOSMESA_GLVERTEXARRAYINDEXOFFSETEXT */, 7 /* NFOSMESA_GLVERTEXARRAYMULTITEXCOORDOFFSETEXT */, 5 /* NFOSMESA_GLVERTEXARRAYNORMALOFFSETEXT */, 6 /* NFOSMESA_GLVERTEXARRAYSECONDARYCOLOROFFSETEXT */, 6 /* NFOSMESA_GLVERTEXARRAYTEXCOORDOFFSETEXT */, 3 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBBINDINGEXT */, 3 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBDIVISOREXT */, 6 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBFORMATEXT */, 5 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBIFORMATEXT */, 7 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBIOFFSETEXT */, 5 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBLFORMATEXT */, 7 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBLOFFSETEXT */, 8 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBOFFSETEXT */, 3 /* NFOSMESA_GLVERTEXARRAYVERTEXBINDINGDIVISOREXT */, 6 /* NFOSMESA_GLVERTEXARRAYVERTEXOFFSETEXT */, 3 /* NFOSMESA_GLVERTEXATTRIB1D */, 2 /* NFOSMESA_GLVERTEXATTRIB1DV */, 2 /* NFOSMESA_GLVERTEXATTRIB1F */, 2 /* NFOSMESA_GLVERTEXATTRIB1FV */, 2 /* NFOSMESA_GLVERTEXATTRIB1S */, 2 /* NFOSMESA_GLVERTEXATTRIB1SV */, 5 /* NFOSMESA_GLVERTEXATTRIB2D */, 2 /* NFOSMESA_GLVERTEXATTRIB2DV */, 3 /* NFOSMESA_GLVERTEXATTRIB2F */, 2 /* NFOSMESA_GLVERTEXATTRIB2FV */, 3 /* NFOSMESA_GLVERTEXATTRIB2S */, 2 /* NFOSMESA_GLVERTEXATTRIB2SV */, 7 /* NFOSMESA_GLVERTEXATTRIB3D */, 2 /* NFOSMESA_GLVERTEXATTRIB3DV */, 4 /* NFOSMESA_GLVERTEXATTRIB3F */, 2 /* NFOSMESA_GLVERTEXATTRIB3FV */, 4 /* NFOSMESA_GLVERTEXATTRIB3S */, 2 /* NFOSMESA_GLVERTEXATTRIB3SV */, 2 /* NFOSMESA_GLVERTEXATTRIB4NBV */, 2 /* NFOSMESA_GLVERTEXATTRIB4NIV */, 2 /* NFOSMESA_GLVERTEXATTRIB4NSV */, 5 /* NFOSMESA_GLVERTEXATTRIB4NUB */, 2 /* NFOSMESA_GLVERTEXATTRIB4NUBV */, 2 /* NFOSMESA_GLVERTEXATTRIB4NUIV */, 2 /* NFOSMESA_GLVERTEXATTRIB4NUSV */, 2 /* NFOSMESA_GLVERTEXATTRIB4BV */, 9 /* NFOSMESA_GLVERTEXATTRIB4D */, 2 /* NFOSMESA_GLVERTEXATTRIB4DV */, 5 /* NFOSMESA_GLVERTEXATTRIB4F */, 2 /* NFOSMESA_GLVERTEXATTRIB4FV */, 2 /* NFOSMESA_GLVERTEXATTRIB4IV */, 5 /* NFOSMESA_GLVERTEXATTRIB4S */, 2 /* NFOSMESA_GLVERTEXATTRIB4SV */, 2 /* NFOSMESA_GLVERTEXATTRIB4UBV */, 2 /* NFOSMESA_GLVERTEXATTRIB4UIV */, 2 /* NFOSMESA_GLVERTEXATTRIB4USV */, 2 /* NFOSMESA_GLVERTEXATTRIBBINDING */, 2 /* NFOSMESA_GLVERTEXATTRIBDIVISOR */, 2 /* NFOSMESA_GLVERTEXATTRIBDIVISORARB */, 5 /* NFOSMESA_GLVERTEXATTRIBFORMAT */, 5 /* NFOSMESA_GLVERTEXATTRIBFORMATNV */, 2 /* NFOSMESA_GLVERTEXATTRIBI1I */, 2 /* NFOSMESA_GLVERTEXATTRIBI1IEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBI1IV */, 2 /* NFOSMESA_GLVERTEXATTRIBI1IVEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBI1UI */, 2 /* NFOSMESA_GLVERTEXATTRIBI1UIEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBI1UIV */, 2 /* NFOSMESA_GLVERTEXATTRIBI1UIVEXT */, 3 /* NFOSMESA_GLVERTEXATTRIBI2I */, 3 /* NFOSMESA_GLVERTEXATTRIBI2IEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBI2IV */, 2 /* NFOSMESA_GLVERTEXATTRIBI2IVEXT */, 3 /* NFOSMESA_GLVERTEXATTRIBI2UI */, 3 /* NFOSMESA_GLVERTEXATTRIBI2UIEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBI2UIV */, 2 /* NFOSMESA_GLVERTEXATTRIBI2UIVEXT */, 4 /* NFOSMESA_GLVERTEXATTRIBI3I */, 4 /* NFOSMESA_GLVERTEXATTRIBI3IEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBI3IV */, 2 /* NFOSMESA_GLVERTEXATTRIBI3IVEXT */, 4 /* NFOSMESA_GLVERTEXATTRIBI3UI */, 4 /* NFOSMESA_GLVERTEXATTRIBI3UIEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBI3UIV */, 2 /* NFOSMESA_GLVERTEXATTRIBI3UIVEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBI4BV */, 2 /* NFOSMESA_GLVERTEXATTRIBI4BVEXT */, 5 /* NFOSMESA_GLVERTEXATTRIBI4I */, 5 /* NFOSMESA_GLVERTEXATTRIBI4IEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBI4IV */, 2 /* NFOSMESA_GLVERTEXATTRIBI4IVEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBI4SV */, 2 /* NFOSMESA_GLVERTEXATTRIBI4SVEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBI4UBV */, 2 /* NFOSMESA_GLVERTEXATTRIBI4UBVEXT */, 5 /* NFOSMESA_GLVERTEXATTRIBI4UI */, 5 /* NFOSMESA_GLVERTEXATTRIBI4UIEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBI4UIV */, 2 /* NFOSMESA_GLVERTEXATTRIBI4UIVEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBI4USV */, 2 /* NFOSMESA_GLVERTEXATTRIBI4USVEXT */, 4 /* NFOSMESA_GLVERTEXATTRIBIFORMAT */, 4 /* NFOSMESA_GLVERTEXATTRIBIFORMATNV */, 5 /* NFOSMESA_GLVERTEXATTRIBIPOINTER */, 5 /* NFOSMESA_GLVERTEXATTRIBIPOINTEREXT */, 3 /* NFOSMESA_GLVERTEXATTRIBL1D */, 3 /* NFOSMESA_GLVERTEXATTRIBL1DEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBL1DV */, 2 /* NFOSMESA_GLVERTEXATTRIBL1DVEXT */, 3 /* NFOSMESA_GLVERTEXATTRIBL1I64NV */, 2 /* NFOSMESA_GLVERTEXATTRIBL1I64VNV */, 3 /* NFOSMESA_GLVERTEXATTRIBL1UI64ARB */, 3 /* NFOSMESA_GLVERTEXATTRIBL1UI64NV */, 2 /* NFOSMESA_GLVERTEXATTRIBL1UI64VARB */, 2 /* NFOSMESA_GLVERTEXATTRIBL1UI64VNV */, 5 /* NFOSMESA_GLVERTEXATTRIBL2D */, 5 /* NFOSMESA_GLVERTEXATTRIBL2DEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBL2DV */, 2 /* NFOSMESA_GLVERTEXATTRIBL2DVEXT */, 5 /* NFOSMESA_GLVERTEXATTRIBL2I64NV */, 2 /* NFOSMESA_GLVERTEXATTRIBL2I64VNV */, 5 /* NFOSMESA_GLVERTEXATTRIBL2UI64NV */, 2 /* NFOSMESA_GLVERTEXATTRIBL2UI64VNV */, 7 /* NFOSMESA_GLVERTEXATTRIBL3D */, 7 /* NFOSMESA_GLVERTEXATTRIBL3DEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBL3DV */, 2 /* NFOSMESA_GLVERTEXATTRIBL3DVEXT */, 7 /* NFOSMESA_GLVERTEXATTRIBL3I64NV */, 2 /* NFOSMESA_GLVERTEXATTRIBL3I64VNV */, 7 /* NFOSMESA_GLVERTEXATTRIBL3UI64NV */, 2 /* NFOSMESA_GLVERTEXATTRIBL3UI64VNV */, 9 /* NFOSMESA_GLVERTEXATTRIBL4D */, 9 /* NFOSMESA_GLVERTEXATTRIBL4DEXT */, 2 /* NFOSMESA_GLVERTEXATTRIBL4DV */, 2 /* NFOSMESA_GLVERTEXATTRIBL4DVEXT */, 9 /* NFOSMESA_GLVERTEXATTRIBL4I64NV */, 2 /* NFOSMESA_GLVERTEXATTRIBL4I64VNV */, 9 /* NFOSMESA_GLVERTEXATTRIBL4UI64NV */, 2 /* NFOSMESA_GLVERTEXATTRIBL4UI64VNV */, 4 /* NFOSMESA_GLVERTEXATTRIBLFORMAT */, 4 /* NFOSMESA_GLVERTEXATTRIBLFORMATNV */, 5 /* NFOSMESA_GLVERTEXATTRIBLPOINTER */, 5 /* NFOSMESA_GLVERTEXATTRIBLPOINTEREXT */, 4 /* NFOSMESA_GLVERTEXATTRIBP1UI */, 4 /* NFOSMESA_GLVERTEXATTRIBP1UIV */, 4 /* NFOSMESA_GLVERTEXATTRIBP2UI */, 4 /* NFOSMESA_GLVERTEXATTRIBP2UIV */, 4 /* NFOSMESA_GLVERTEXATTRIBP3UI */, 4 /* NFOSMESA_GLVERTEXATTRIBP3UIV */, 4 /* NFOSMESA_GLVERTEXATTRIBP4UI */, 4 /* NFOSMESA_GLVERTEXATTRIBP4UIV */, 3 /* NFOSMESA_GLVERTEXATTRIBPARAMETERIAMD */, 6 /* NFOSMESA_GLVERTEXATTRIBPOINTER */, 2 /* NFOSMESA_GLVERTEXBINDINGDIVISOR */, 3 /* NFOSMESA_GLVERTEXFORMATNV */, 2 /* NFOSMESA_GLVERTEXP2UI */, 2 /* NFOSMESA_GLVERTEXP2UIV */, 2 /* NFOSMESA_GLVERTEXP3UI */, 2 /* NFOSMESA_GLVERTEXP3UIV */, 2 /* NFOSMESA_GLVERTEXP4UI */, 2 /* NFOSMESA_GLVERTEXP4UIV */, 1 /* NFOSMESA_GLVERTEXPOINTSIZEFAPPLE */, 3 /* NFOSMESA_GLVIDEOCAPTURENV */, 4 /* NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERDVNV */, 4 /* NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERFVNV */, 4 /* NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERIVNV */, 3 /* NFOSMESA_GLVIEWPORTARRAYV */, 5 /* NFOSMESA_GLVIEWPORTINDEXEDF */, 2 /* NFOSMESA_GLVIEWPORTINDEXEDFV */, 4 /* NFOSMESA_GLWAITSYNC */, 4 /* NFOSMESA_GLWEIGHTPATHSNV */, 2 /* NFOSMESA_GLBINDTEXTUREUNIT */, 0 /* NFOSMESA_GLBLENDBARRIERKHR */, 12 /* NFOSMESA_GLBLITNAMEDFRAMEBUFFER */, 4 /* NFOSMESA_GLBUFFERPAGECOMMITMENTARB */, 1 /* NFOSMESA_GLCALLCOMMANDLISTNV */, 2 /* NFOSMESA_GLCHECKNAMEDFRAMEBUFFERSTATUS */, 5 /* NFOSMESA_GLCLEARNAMEDBUFFERDATA */, 7 /* NFOSMESA_GLCLEARNAMEDBUFFERSUBDATA */, 5 /* NFOSMESA_GLCLEARNAMEDFRAMEBUFFERFI */, 4 /* NFOSMESA_GLCLEARNAMEDFRAMEBUFFERFV */, 4 /* NFOSMESA_GLCLEARNAMEDFRAMEBUFFERIV */, 4 /* NFOSMESA_GLCLEARNAMEDFRAMEBUFFERUIV */, 2 /* NFOSMESA_GLCLIPCONTROL */, 2 /* NFOSMESA_GLCOMMANDLISTSEGMENTSNV */, 1 /* NFOSMESA_GLCOMPILECOMMANDLISTNV */, 7 /* NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE1D */, 9 /* NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE2D */, 11 /* NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE3D */, 5 /* NFOSMESA_GLCOPYNAMEDBUFFERSUBDATA */, 6 /* NFOSMESA_GLCOPYTEXTURESUBIMAGE1D */, 8 /* NFOSMESA_GLCOPYTEXTURESUBIMAGE2D */, 9 /* NFOSMESA_GLCOPYTEXTURESUBIMAGE3D */, 1 /* NFOSMESA_GLCOVERAGEMODULATIONNV */, 2 /* NFOSMESA_GLCOVERAGEMODULATIONTABLENV */, 2 /* NFOSMESA_GLCREATEBUFFERS */, 2 /* NFOSMESA_GLCREATECOMMANDLISTSNV */, 2 /* NFOSMESA_GLCREATEFRAMEBUFFERS */, 2 /* NFOSMESA_GLCREATEPROGRAMPIPELINES */, 3 /* NFOSMESA_GLCREATEQUERIES */, 2 /* NFOSMESA_GLCREATERENDERBUFFERS */, 2 /* NFOSMESA_GLCREATESAMPLERS */, 2 /* NFOSMESA_GLCREATESTATESNV */, 3 /* NFOSMESA_GLCREATETEXTURES */, 2 /* NFOSMESA_GLCREATETRANSFORMFEEDBACKS */, 2 /* NFOSMESA_GLCREATEVERTEXARRAYS */, 2 /* NFOSMESA_GLDELETECOMMANDLISTSNV */, 2 /* NFOSMESA_GLDELETESTATESNV */, 2 /* NFOSMESA_GLDISABLEVERTEXARRAYATTRIB */, 4 /* NFOSMESA_GLDRAWCOMMANDSADDRESSNV */, 5 /* NFOSMESA_GLDRAWCOMMANDSNV */, 5 /* NFOSMESA_GLDRAWCOMMANDSSTATESADDRESSNV */, 6 /* NFOSMESA_GLDRAWCOMMANDSSTATESNV */, 2 /* NFOSMESA_GLENABLEVERTEXARRAYATTRIB */, 3 /* NFOSMESA_GLFLUSHMAPPEDNAMEDBUFFERRANGE */, 1 /* NFOSMESA_GLFRAGMENTCOVERAGECOLORNV */, 4 /* NFOSMESA_GLFRAMEBUFFERSAMPLELOCATIONSFVNV */, 6 /* NFOSMESA_GLFRAMEBUFFERTEXTUREMULTIVIEWOVR */, 1 /* NFOSMESA_GLGENERATETEXTUREMIPMAP */, 2 /* NFOSMESA_GLGETCOMMANDHEADERNV */, 4 /* NFOSMESA_GLGETCOMPRESSEDTEXTUREIMAGE */, 10 /* NFOSMESA_GLGETCOMPRESSEDTEXTURESUBIMAGE */, 2 /* NFOSMESA_GLGETCOVERAGEMODULATIONTABLENV */, 0 /* NFOSMESA_GLGETGRAPHICSRESETSTATUS */, 6 /* NFOSMESA_GLGETINTERNALFORMATSAMPLEIVNV */, 3 /* NFOSMESA_GLGETNAMEDBUFFERPARAMETERI64V */, 3 /* NFOSMESA_GLGETNAMEDBUFFERPARAMETERIV */, 3 /* NFOSMESA_GLGETNAMEDBUFFERPOINTERV */, 4 /* NFOSMESA_GLGETNAMEDBUFFERSUBDATA */, 4 /* NFOSMESA_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV */, 3 /* NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERIV */, 3 /* NFOSMESA_GLGETNAMEDRENDERBUFFERPARAMETERIV */, 8 /* NFOSMESA_GLGETPROGRAMRESOURCEFVNV */, 4 /* NFOSMESA_GLGETQUERYBUFFEROBJECTI64V */, 4 /* NFOSMESA_GLGETQUERYBUFFEROBJECTIV */, 4 /* NFOSMESA_GLGETQUERYBUFFEROBJECTUI64V */, 4 /* NFOSMESA_GLGETQUERYBUFFEROBJECTUIV */, 1 /* NFOSMESA_GLGETSTAGEINDEXNV */, 6 /* NFOSMESA_GLGETTEXTUREIMAGE */, 4 /* NFOSMESA_GLGETTEXTURELEVELPARAMETERFV */, 4 /* NFOSMESA_GLGETTEXTURELEVELPARAMETERIV */, 3 /* NFOSMESA_GLGETTEXTUREPARAMETERIIV */, 3 /* NFOSMESA_GLGETTEXTUREPARAMETERIUIV */, 3 /* NFOSMESA_GLGETTEXTUREPARAMETERFV */, 3 /* NFOSMESA_GLGETTEXTUREPARAMETERIV */, 12 /* NFOSMESA_GLGETTEXTURESUBIMAGE */, 4 /* NFOSMESA_GLGETTRANSFORMFEEDBACKI64_V */, 4 /* NFOSMESA_GLGETTRANSFORMFEEDBACKI_V */, 3 /* NFOSMESA_GLGETTRANSFORMFEEDBACKIV */, 4 /* NFOSMESA_GLGETVERTEXARRAYINDEXED64IV */, 4 /* NFOSMESA_GLGETVERTEXARRAYINDEXEDIV */, 3 /* NFOSMESA_GLGETVERTEXARRAYIV */, 5 /* NFOSMESA_GLGETNCOLORTABLE */, 4 /* NFOSMESA_GLGETNCOMPRESSEDTEXIMAGE */, 5 /* NFOSMESA_GLGETNCONVOLUTIONFILTER */, 6 /* NFOSMESA_GLGETNHISTOGRAM */, 4 /* NFOSMESA_GLGETNMAPDV */, 4 /* NFOSMESA_GLGETNMAPFV */, 4 /* NFOSMESA_GLGETNMAPIV */, 6 /* NFOSMESA_GLGETNMINMAX */, 3 /* NFOSMESA_GLGETNPIXELMAPFV */, 3 /* NFOSMESA_GLGETNPIXELMAPUIV */, 3 /* NFOSMESA_GLGETNPIXELMAPUSV */, 2 /* NFOSMESA_GLGETNPOLYGONSTIPPLE */, 8 /* NFOSMESA_GLGETNSEPARABLEFILTER */, 6 /* NFOSMESA_GLGETNTEXIMAGE */, 4 /* NFOSMESA_GLGETNUNIFORMDV */, 4 /* NFOSMESA_GLGETNUNIFORMFV */, 4 /* NFOSMESA_GLGETNUNIFORMIV */, 4 /* NFOSMESA_GLGETNUNIFORMUIV */, 3 /* NFOSMESA_GLINVALIDATENAMEDFRAMEBUFFERDATA */, 7 /* NFOSMESA_GLINVALIDATENAMEDFRAMEBUFFERSUBDATA */, 1 /* NFOSMESA_GLISCOMMANDLISTNV */, 1 /* NFOSMESA_GLISSTATENV */, 7 /* NFOSMESA_GLLISTDRAWCOMMANDSSTATESCLIENTNV */, 2 /* NFOSMESA_GLMAPNAMEDBUFFER */, 4 /* NFOSMESA_GLMAPNAMEDBUFFERRANGE */, 2 /* NFOSMESA_GLMATRIXLOAD3X2FNV */, 2 /* NFOSMESA_GLMATRIXLOAD3X3FNV */, 2 /* NFOSMESA_GLMATRIXLOADTRANSPOSE3X3FNV */, 2 /* NFOSMESA_GLMATRIXMULT3X2FNV */, 2 /* NFOSMESA_GLMATRIXMULT3X3FNV */, 2 /* NFOSMESA_GLMATRIXMULTTRANSPOSE3X3FNV */, 1 /* NFOSMESA_GLMEMORYBARRIERBYREGION */, 6 /* NFOSMESA_GLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV */, 7 /* NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV */, 4 /* NFOSMESA_GLNAMEDBUFFERDATA */, 4 /* NFOSMESA_GLNAMEDBUFFERPAGECOMMITMENTARB */, 4 /* NFOSMESA_GLNAMEDBUFFERPAGECOMMITMENTEXT */, 4 /* NFOSMESA_GLNAMEDBUFFERSTORAGE */, 4 /* NFOSMESA_GLNAMEDBUFFERSUBDATA */, 2 /* NFOSMESA_GLNAMEDFRAMEBUFFERDRAWBUFFER */, 3 /* NFOSMESA_GLNAMEDFRAMEBUFFERDRAWBUFFERS */, 3 /* NFOSMESA_GLNAMEDFRAMEBUFFERPARAMETERI */, 2 /* NFOSMESA_GLNAMEDFRAMEBUFFERREADBUFFER */, 4 /* NFOSMESA_GLNAMEDFRAMEBUFFERRENDERBUFFER */, 4 /* NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV */, 4 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE */, 5 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURELAYER */, 4 /* NFOSMESA_GLNAMEDRENDERBUFFERSTORAGE */, 5 /* NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLE */, 8 /* NFOSMESA_GLPATHGLYPHINDEXARRAYNV */, 6 /* NFOSMESA_GLPATHGLYPHINDEXRANGENV */, 9 /* NFOSMESA_GLPATHMEMORYGLYPHINDEXARRAYNV */, 3 /* NFOSMESA_GLPOLYGONOFFSETCLAMPEXT */, 5 /* NFOSMESA_GLPROGRAMPATHFRAGMENTINPUTGENNV */, 2 /* NFOSMESA_GLRASTERSAMPLESEXT */, 8 /* NFOSMESA_GLREADNPIXELS */, 0 /* NFOSMESA_GLRESOLVEDEPTHVALUESNV */, 2 /* NFOSMESA_GLSTATECAPTURENV */, 9 /* NFOSMESA_GLSTENCILTHENCOVERFILLPATHINSTANCEDNV */, 4 /* NFOSMESA_GLSTENCILTHENCOVERFILLPATHNV */, 9 /* NFOSMESA_GLSTENCILTHENCOVERSTROKEPATHINSTANCEDNV */, 4 /* NFOSMESA_GLSTENCILTHENCOVERSTROKEPATHNV */, 2 /* NFOSMESA_GLSUBPIXELPRECISIONBIASNV */, 0 /* NFOSMESA_GLTEXTUREBARRIER */, 3 /* NFOSMESA_GLTEXTUREBUFFER */, 5 /* NFOSMESA_GLTEXTUREBUFFERRANGE */, 3 /* NFOSMESA_GLTEXTUREPARAMETERIIV */, 3 /* NFOSMESA_GLTEXTUREPARAMETERIUIV */, 3 /* NFOSMESA_GLTEXTUREPARAMETERF */, 3 /* NFOSMESA_GLTEXTUREPARAMETERFV */, 3 /* NFOSMESA_GLTEXTUREPARAMETERI */, 3 /* NFOSMESA_GLTEXTUREPARAMETERIV */, 4 /* NFOSMESA_GLTEXTURESTORAGE1D */, 5 /* NFOSMESA_GLTEXTURESTORAGE2D */, 6 /* NFOSMESA_GLTEXTURESTORAGE2DMULTISAMPLE */, 6 /* NFOSMESA_GLTEXTURESTORAGE3D */, 7 /* NFOSMESA_GLTEXTURESTORAGE3DMULTISAMPLE */, 7 /* NFOSMESA_GLTEXTURESUBIMAGE1D */, 9 /* NFOSMESA_GLTEXTURESUBIMAGE2D */, 11 /* NFOSMESA_GLTEXTURESUBIMAGE3D */, 3 /* NFOSMESA_GLTRANSFORMFEEDBACKBUFFERBASE */, 5 /* NFOSMESA_GLTRANSFORMFEEDBACKBUFFERRANGE */, 1 /* NFOSMESA_GLUNMAPNAMEDBUFFER */, 3 /* NFOSMESA_GLVERTEXARRAYATTRIBBINDING */, 6 /* NFOSMESA_GLVERTEXARRAYATTRIBFORMAT */, 5 /* NFOSMESA_GLVERTEXARRAYATTRIBIFORMAT */, 5 /* NFOSMESA_GLVERTEXARRAYATTRIBLFORMAT */, 3 /* NFOSMESA_GLVERTEXARRAYBINDINGDIVISOR */, 2 /* NFOSMESA_GLVERTEXARRAYELEMENTBUFFER */, 5 /* NFOSMESA_GLVERTEXARRAYVERTEXBUFFER */, 6 /* NFOSMESA_GLVERTEXARRAYVERTEXBUFFERS */, 2 /* NFOSMESA_OSMESACREATECONTEXTATTRIBS */, 5 /* NFOSMESA_GLSPECIALIZESHADER */, 5 /* NFOSMESA_GLSPECIALIZESHADERARB */, 5 /* NFOSMESA_GLMULTIDRAWARRAYSINDIRECTCOUNT */, 6 /* NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTCOUNT */, 3 /* NFOSMESA_GLPOLYGONOFFSETCLAMP */, 8 /* NFOSMESA_GLPRIMITIVEBOUNDINGBOXARB */, 3 /* NFOSMESA_GLUNIFORM1I64ARB */, 5 /* NFOSMESA_GLUNIFORM2I64ARB */, 7 /* NFOSMESA_GLUNIFORM3I64ARB */, 9 /* NFOSMESA_GLUNIFORM4I64ARB */, 3 /* NFOSMESA_GLUNIFORM1I64VARB */, 3 /* NFOSMESA_GLUNIFORM2I64VARB */, 3 /* NFOSMESA_GLUNIFORM3I64VARB */, 3 /* NFOSMESA_GLUNIFORM4I64VARB */, 3 /* NFOSMESA_GLUNIFORM1UI64ARB */, 5 /* NFOSMESA_GLUNIFORM2UI64ARB */, 7 /* NFOSMESA_GLUNIFORM3UI64ARB */, 9 /* NFOSMESA_GLUNIFORM4UI64ARB */, 3 /* NFOSMESA_GLUNIFORM1UI64VARB */, 3 /* NFOSMESA_GLUNIFORM2UI64VARB */, 3 /* NFOSMESA_GLUNIFORM3UI64VARB */, 3 /* NFOSMESA_GLUNIFORM4UI64VARB */, 3 /* NFOSMESA_GLGETUNIFORMI64VARB */, 3 /* NFOSMESA_GLGETUNIFORMUI64VARB */, 4 /* NFOSMESA_GLGETNUNIFORMI64VARB */, 4 /* NFOSMESA_GLGETNUNIFORMUI64VARB */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1I64ARB */, 6 /* NFOSMESA_GLPROGRAMUNIFORM2I64ARB */, 8 /* NFOSMESA_GLPROGRAMUNIFORM3I64ARB */, 10 /* NFOSMESA_GLPROGRAMUNIFORM4I64ARB */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1I64VARB */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2I64VARB */, 4 /* NFOSMESA_GLPROGRAMUNIFORM3I64VARB */, 4 /* NFOSMESA_GLPROGRAMUNIFORM4I64VARB */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1UI64ARB */, 6 /* NFOSMESA_GLPROGRAMUNIFORM2UI64ARB */, 8 /* NFOSMESA_GLPROGRAMUNIFORM3UI64ARB */, 10 /* NFOSMESA_GLPROGRAMUNIFORM4UI64ARB */, 4 /* NFOSMESA_GLPROGRAMUNIFORM1UI64VARB */, 4 /* NFOSMESA_GLPROGRAMUNIFORM2UI64VARB */, 4 /* NFOSMESA_GLPROGRAMUNIFORM3UI64VARB */, 4 /* NFOSMESA_GLPROGRAMUNIFORM4UI64VARB */, 1 /* NFOSMESA_GLMAXSHADERCOMPILERTHREADSARB */, 4 /* NFOSMESA_GLFRAMEBUFFERSAMPLELOCATIONSFVARB */, 4 /* NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARB */, 0 /* NFOSMESA_GLEVALUATEDEPTHVALUESARB */, 1 /* NFOSMESA_GLMAXSHADERCOMPILERTHREADSKHR */, 5 /* NFOSMESA_GLBUFFERSTORAGEEXTERNALEXT */, 5 /* NFOSMESA_GLNAMEDBUFFERSTORAGEEXTERNALEXT */, 2 /* NFOSMESA_GLGETUNSIGNEDBYTEVEXT */, 3 /* NFOSMESA_GLGETUNSIGNEDBYTEI_VEXT */, 2 /* NFOSMESA_GLDELETEMEMORYOBJECTSEXT */, 1 /* NFOSMESA_GLISMEMORYOBJECTEXT */, 2 /* NFOSMESA_GLCREATEMEMORYOBJECTSEXT */, 3 /* NFOSMESA_GLMEMORYOBJECTPARAMETERIVEXT */, 3 /* NFOSMESA_GLGETMEMORYOBJECTPARAMETERIVEXT */, 8 /* NFOSMESA_GLTEXSTORAGEMEM2DEXT */, 9 /* NFOSMESA_GLTEXSTORAGEMEM2DMULTISAMPLEEXT */, 9 /* NFOSMESA_GLTEXSTORAGEMEM3DEXT */, 10 /* NFOSMESA_GLTEXSTORAGEMEM3DMULTISAMPLEEXT */, 5 /* NFOSMESA_GLBUFFERSTORAGEMEMEXT */, 8 /* NFOSMESA_GLTEXTURESTORAGEMEM2DEXT */, 9 /* NFOSMESA_GLTEXTURESTORAGEMEM2DMULTISAMPLEEXT */, 9 /* NFOSMESA_GLTEXTURESTORAGEMEM3DEXT */, 10 /* NFOSMESA_GLTEXTURESTORAGEMEM3DMULTISAMPLEEXT */, 5 /* NFOSMESA_GLNAMEDBUFFERSTORAGEMEMEXT */, 7 /* NFOSMESA_GLTEXSTORAGEMEM1DEXT */, 7 /* NFOSMESA_GLTEXTURESTORAGEMEM1DEXT */, 5 /* NFOSMESA_GLIMPORTMEMORYFDEXT */, 5 /* NFOSMESA_GLIMPORTMEMORYWIN32HANDLEEXT */, 5 /* NFOSMESA_GLIMPORTMEMORYWIN32NAMEEXT */, 2 /* NFOSMESA_GLGENSEMAPHORESEXT */, 2 /* NFOSMESA_GLDELETESEMAPHORESEXT */, 1 /* NFOSMESA_GLISSEMAPHOREEXT */, 3 /* NFOSMESA_GLSEMAPHOREPARAMETERUI64VEXT */, 3 /* NFOSMESA_GLGETSEMAPHOREPARAMETERUI64VEXT */, 6 /* NFOSMESA_GLWAITSEMAPHOREEXT */, 6 /* NFOSMESA_GLSIGNALSEMAPHOREEXT */, 3 /* NFOSMESA_GLIMPORTSEMAPHOREFDEXT */, 3 /* NFOSMESA_GLIMPORTSEMAPHOREWIN32HANDLEEXT */, 3 /* NFOSMESA_GLIMPORTSEMAPHOREWIN32NAMEEXT */, 4 /* NFOSMESA_GLACQUIREKEYEDMUTEXWIN32EXT */, 3 /* NFOSMESA_GLRELEASEKEYEDMUTEXWIN32EXT */, 5 /* NFOSMESA_GLLGPUNAMEDBUFFERSUBDATANVX */, 17 /* NFOSMESA_GLLGPUCOPYIMAGESUBDATANVX */, 0 /* NFOSMESA_GLLGPUINTERLOCKNVX */, 1 /* NFOSMESA_GLALPHATOCOVERAGEDITHERCONTROLNV */, 12 /* NFOSMESA_GLDRAWVKIMAGENV */, 1 /* NFOSMESA_GLGETVKPROCADDRNV */, 2 /* NFOSMESA_GLWAITVKSEMAPHORENV */, 2 /* NFOSMESA_GLSIGNALVKSEMAPHORENV */, 2 /* NFOSMESA_GLSIGNALVKFENCENV */, 1 /* NFOSMESA_GLRENDERGPUMASKNV */, 5 /* NFOSMESA_GLMULTICASTBUFFERSUBDATANV */, 7 /* NFOSMESA_GLMULTICASTCOPYBUFFERSUBDATANV */, 17 /* NFOSMESA_GLMULTICASTCOPYIMAGESUBDATANV */, 12 /* NFOSMESA_GLMULTICASTBLITFRAMEBUFFERNV */, 5 /* NFOSMESA_GLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNV */, 0 /* NFOSMESA_GLMULTICASTBARRIERNV */, 2 /* NFOSMESA_GLMULTICASTWAITSYNCNV */, 4 /* NFOSMESA_GLMULTICASTGETQUERYOBJECTIVNV */, 4 /* NFOSMESA_GLMULTICASTGETQUERYOBJECTUIVNV */, 4 /* NFOSMESA_GLMULTICASTGETQUERYOBJECTI64VNV */, 4 /* NFOSMESA_GLMULTICASTGETQUERYOBJECTUI64VNV */, 4 /* NFOSMESA_GLQUERYRESOURCENV */, 2 /* NFOSMESA_GLGENQUERYRESOURCETAGNV */, 2 /* NFOSMESA_GLDELETEQUERYRESOURCETAGNV */, 2 /* NFOSMESA_GLQUERYRESOURCETAGNV */, 4 /* NFOSMESA_GLFRAMEBUFFERSAMPLEPOSITIONSFVAMD */, 4 /* NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMD */, 6 /* NFOSMESA_GLGETFRAMEBUFFERPARAMETERFVAMD */, 6 /* NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERFVAMD */, 3 /* NFOSMESA_GLWINDOWRECTANGLESEXT */, 0 /* NFOSMESA_GLAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL */, 5 /* NFOSMESA_GLVIEWPORTSWIZZLENV */, 3 /* NFOSMESA_GLVIEWPORTPOSITIONWSCALENV */, 2 /* NFOSMESA_GLCONSERVATIVERASTERPARAMETERFNV */, 2 /* NFOSMESA_GLCONSERVATIVERASTERPARAMETERINV */ }; #define NFOSMESA_MAXPARAMS 20 static struct { const char *name; unsigned int funcno; } const gl_functionnames[] = { { "OSMesaColorClamp", NFOSMESA_OSMESACOLORCLAMP }, { "OSMesaCreateContext", NFOSMESA_OSMESACREATECONTEXT }, { "OSMesaCreateContextAttribs", NFOSMESA_OSMESACREATECONTEXTATTRIBS }, { "OSMesaCreateContextExt", NFOSMESA_OSMESACREATECONTEXTEXT }, { "OSMesaDestroyContext", NFOSMESA_OSMESADESTROYCONTEXT }, { "OSMesaGetColorBuffer", NFOSMESA_OSMESAGETCOLORBUFFER }, { "OSMesaGetCurrentContext", NFOSMESA_OSMESAGETCURRENTCONTEXT }, { "OSMesaGetDepthBuffer", NFOSMESA_OSMESAGETDEPTHBUFFER }, { "OSMesaGetIntegerv", NFOSMESA_OSMESAGETINTEGERV }, { "OSMesaGetProcAddress", NFOSMESA_OSMESAGETPROCADDRESS }, { "OSMesaMakeCurrent", NFOSMESA_OSMESAMAKECURRENT }, { "OSMesaPixelStore", NFOSMESA_OSMESAPIXELSTORE }, { "OSMesaPostprocess", NFOSMESA_OSMESAPOSTPROCESS }, { "glAccum", NFOSMESA_GLACCUM }, { "glAccumxOES", NFOSMESA_GLACCUMXOES }, { "glAcquireKeyedMutexWin32EXT", NFOSMESA_GLACQUIREKEYEDMUTEXWIN32EXT }, { "glActiveProgramEXT", NFOSMESA_GLACTIVEPROGRAMEXT }, { "glActiveShaderProgram", NFOSMESA_GLACTIVESHADERPROGRAM }, { "glActiveStencilFaceEXT", NFOSMESA_GLACTIVESTENCILFACEEXT }, { "glActiveTexture", NFOSMESA_GLACTIVETEXTURE }, { "glActiveTextureARB", NFOSMESA_GLACTIVETEXTUREARB }, { "glActiveVaryingNV", NFOSMESA_GLACTIVEVARYINGNV }, { "glAddSwapHintRectWIN", NFOSMESA_GLADDSWAPHINTRECTWIN }, { "glAlphaFragmentOp1ATI", NFOSMESA_GLALPHAFRAGMENTOP1ATI }, { "glAlphaFragmentOp2ATI", NFOSMESA_GLALPHAFRAGMENTOP2ATI }, { "glAlphaFragmentOp3ATI", NFOSMESA_GLALPHAFRAGMENTOP3ATI }, { "glAlphaFunc", NFOSMESA_GLALPHAFUNC }, { "glAlphaFuncxOES", NFOSMESA_GLALPHAFUNCXOES }, { "glAlphaToCoverageDitherControlNV", NFOSMESA_GLALPHATOCOVERAGEDITHERCONTROLNV }, { "glApplyFramebufferAttachmentCMAAINTEL", NFOSMESA_GLAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL }, { "glApplyTextureEXT", NFOSMESA_GLAPPLYTEXTUREEXT }, { "glAreProgramsResidentNV", NFOSMESA_GLAREPROGRAMSRESIDENTNV }, { "glAreTexturesResident", NFOSMESA_GLARETEXTURESRESIDENT }, { "glAreTexturesResidentEXT", NFOSMESA_GLARETEXTURESRESIDENTEXT }, { "glArrayElement", NFOSMESA_GLARRAYELEMENT }, { "glArrayElementEXT", NFOSMESA_GLARRAYELEMENTEXT }, { "glArrayObjectATI", NFOSMESA_GLARRAYOBJECTATI }, { "glAsyncMarkerSGIX", NFOSMESA_GLASYNCMARKERSGIX }, { "glAttachObjectARB", NFOSMESA_GLATTACHOBJECTARB }, { "glAttachShader", NFOSMESA_GLATTACHSHADER }, { "glBegin", NFOSMESA_GLBEGIN }, { "glBeginConditionalRender", NFOSMESA_GLBEGINCONDITIONALRENDER }, { "glBeginConditionalRenderNV", NFOSMESA_GLBEGINCONDITIONALRENDERNV }, { "glBeginConditionalRenderNVX", NFOSMESA_GLBEGINCONDITIONALRENDERNVX }, { "glBeginFragmentShaderATI", NFOSMESA_GLBEGINFRAGMENTSHADERATI }, { "glBeginOcclusionQueryNV", NFOSMESA_GLBEGINOCCLUSIONQUERYNV }, { "glBeginPerfMonitorAMD", NFOSMESA_GLBEGINPERFMONITORAMD }, { "glBeginPerfQueryINTEL", NFOSMESA_GLBEGINPERFQUERYINTEL }, { "glBeginQuery", NFOSMESA_GLBEGINQUERY }, { "glBeginQueryARB", NFOSMESA_GLBEGINQUERYARB }, { "glBeginQueryIndexed", NFOSMESA_GLBEGINQUERYINDEXED }, { "glBeginTransformFeedback", NFOSMESA_GLBEGINTRANSFORMFEEDBACK }, { "glBeginTransformFeedbackEXT", NFOSMESA_GLBEGINTRANSFORMFEEDBACKEXT }, { "glBeginTransformFeedbackNV", NFOSMESA_GLBEGINTRANSFORMFEEDBACKNV }, { "glBeginVertexShaderEXT", NFOSMESA_GLBEGINVERTEXSHADEREXT }, { "glBeginVideoCaptureNV", NFOSMESA_GLBEGINVIDEOCAPTURENV }, { "glBindAttribLocation", NFOSMESA_GLBINDATTRIBLOCATION }, { "glBindAttribLocationARB", NFOSMESA_GLBINDATTRIBLOCATIONARB }, { "glBindBuffer", NFOSMESA_GLBINDBUFFER }, { "glBindBufferARB", NFOSMESA_GLBINDBUFFERARB }, { "glBindBufferBase", NFOSMESA_GLBINDBUFFERBASE }, { "glBindBufferBaseEXT", NFOSMESA_GLBINDBUFFERBASEEXT }, { "glBindBufferBaseNV", NFOSMESA_GLBINDBUFFERBASENV }, { "glBindBufferOffsetEXT", NFOSMESA_GLBINDBUFFEROFFSETEXT }, { "glBindBufferOffsetNV", NFOSMESA_GLBINDBUFFEROFFSETNV }, { "glBindBufferRange", NFOSMESA_GLBINDBUFFERRANGE }, { "glBindBufferRangeEXT", NFOSMESA_GLBINDBUFFERRANGEEXT }, { "glBindBufferRangeNV", NFOSMESA_GLBINDBUFFERRANGENV }, { "glBindBuffersBase", NFOSMESA_GLBINDBUFFERSBASE }, { "glBindBuffersRange", NFOSMESA_GLBINDBUFFERSRANGE }, { "glBindFragDataLocation", NFOSMESA_GLBINDFRAGDATALOCATION }, { "glBindFragDataLocationEXT", NFOSMESA_GLBINDFRAGDATALOCATIONEXT }, { "glBindFragDataLocationIndexed", NFOSMESA_GLBINDFRAGDATALOCATIONINDEXED }, { "glBindFragmentShaderATI", NFOSMESA_GLBINDFRAGMENTSHADERATI }, { "glBindFramebuffer", NFOSMESA_GLBINDFRAMEBUFFER }, { "glBindFramebufferEXT", NFOSMESA_GLBINDFRAMEBUFFEREXT }, { "glBindImageTexture", NFOSMESA_GLBINDIMAGETEXTURE }, { "glBindImageTextureEXT", NFOSMESA_GLBINDIMAGETEXTUREEXT }, { "glBindImageTextures", NFOSMESA_GLBINDIMAGETEXTURES }, { "glBindLightParameterEXT", NFOSMESA_GLBINDLIGHTPARAMETEREXT }, { "glBindMaterialParameterEXT", NFOSMESA_GLBINDMATERIALPARAMETEREXT }, { "glBindMultiTextureEXT", NFOSMESA_GLBINDMULTITEXTUREEXT }, { "glBindParameterEXT", NFOSMESA_GLBINDPARAMETEREXT }, { "glBindProgramARB", NFOSMESA_GLBINDPROGRAMARB }, { "glBindProgramNV", NFOSMESA_GLBINDPROGRAMNV }, { "glBindProgramPipeline", NFOSMESA_GLBINDPROGRAMPIPELINE }, { "glBindRenderbuffer", NFOSMESA_GLBINDRENDERBUFFER }, { "glBindRenderbufferEXT", NFOSMESA_GLBINDRENDERBUFFEREXT }, { "glBindSampler", NFOSMESA_GLBINDSAMPLER }, { "glBindSamplers", NFOSMESA_GLBINDSAMPLERS }, { "glBindTexGenParameterEXT", NFOSMESA_GLBINDTEXGENPARAMETEREXT }, { "glBindTexture", NFOSMESA_GLBINDTEXTURE }, { "glBindTextureEXT", NFOSMESA_GLBINDTEXTUREEXT }, { "glBindTextureUnit", NFOSMESA_GLBINDTEXTUREUNIT }, { "glBindTextureUnitParameterEXT", NFOSMESA_GLBINDTEXTUREUNITPARAMETEREXT }, { "glBindTextures", NFOSMESA_GLBINDTEXTURES }, { "glBindTransformFeedback", NFOSMESA_GLBINDTRANSFORMFEEDBACK }, { "glBindTransformFeedbackNV", NFOSMESA_GLBINDTRANSFORMFEEDBACKNV }, { "glBindVertexArray", NFOSMESA_GLBINDVERTEXARRAY }, { "glBindVertexArrayAPPLE", NFOSMESA_GLBINDVERTEXARRAYAPPLE }, { "glBindVertexBuffer", NFOSMESA_GLBINDVERTEXBUFFER }, { "glBindVertexBuffers", NFOSMESA_GLBINDVERTEXBUFFERS }, { "glBindVertexShaderEXT", NFOSMESA_GLBINDVERTEXSHADEREXT }, { "glBindVideoCaptureStreamBufferNV", NFOSMESA_GLBINDVIDEOCAPTURESTREAMBUFFERNV }, { "glBindVideoCaptureStreamTextureNV", NFOSMESA_GLBINDVIDEOCAPTURESTREAMTEXTURENV }, { "glBinormal3bEXT", NFOSMESA_GLBINORMAL3BEXT }, { "glBinormal3bvEXT", NFOSMESA_GLBINORMAL3BVEXT }, { "glBinormal3dEXT", NFOSMESA_GLBINORMAL3DEXT }, { "glBinormal3dvEXT", NFOSMESA_GLBINORMAL3DVEXT }, { "glBinormal3fEXT", NFOSMESA_GLBINORMAL3FEXT }, { "glBinormal3fvEXT", NFOSMESA_GLBINORMAL3FVEXT }, { "glBinormal3iEXT", NFOSMESA_GLBINORMAL3IEXT }, { "glBinormal3ivEXT", NFOSMESA_GLBINORMAL3IVEXT }, { "glBinormal3sEXT", NFOSMESA_GLBINORMAL3SEXT }, { "glBinormal3svEXT", NFOSMESA_GLBINORMAL3SVEXT }, { "glBinormalPointerEXT", NFOSMESA_GLBINORMALPOINTEREXT }, { "glBitmap", NFOSMESA_GLBITMAP }, { "glBitmapxOES", NFOSMESA_GLBITMAPXOES }, { "glBlendBarrierKHR", NFOSMESA_GLBLENDBARRIERKHR }, { "glBlendBarrierNV", NFOSMESA_GLBLENDBARRIERNV }, { "glBlendColor", NFOSMESA_GLBLENDCOLOR }, { "glBlendColorEXT", NFOSMESA_GLBLENDCOLOREXT }, { "glBlendColorxOES", NFOSMESA_GLBLENDCOLORXOES }, { "glBlendEquation", NFOSMESA_GLBLENDEQUATION }, { "glBlendEquationEXT", NFOSMESA_GLBLENDEQUATIONEXT }, { "glBlendEquationIndexedAMD", NFOSMESA_GLBLENDEQUATIONINDEXEDAMD }, { "glBlendEquationSeparate", NFOSMESA_GLBLENDEQUATIONSEPARATE }, { "glBlendEquationSeparateATI", NFOSMESA_GLBLENDEQUATIONSEPARATEATI }, { "glBlendEquationSeparateEXT", NFOSMESA_GLBLENDEQUATIONSEPARATEEXT }, { "glBlendEquationSeparateIndexedAMD", NFOSMESA_GLBLENDEQUATIONSEPARATEINDEXEDAMD }, { "glBlendEquationSeparatei", NFOSMESA_GLBLENDEQUATIONSEPARATEI }, { "glBlendEquationSeparateiARB", NFOSMESA_GLBLENDEQUATIONSEPARATEIARB }, { "glBlendEquationi", NFOSMESA_GLBLENDEQUATIONI }, { "glBlendEquationiARB", NFOSMESA_GLBLENDEQUATIONIARB }, { "glBlendFunc", NFOSMESA_GLBLENDFUNC }, { "glBlendFuncIndexedAMD", NFOSMESA_GLBLENDFUNCINDEXEDAMD }, { "glBlendFuncSeparate", NFOSMESA_GLBLENDFUNCSEPARATE }, { "glBlendFuncSeparateEXT", NFOSMESA_GLBLENDFUNCSEPARATEEXT }, { "glBlendFuncSeparateINGR", NFOSMESA_GLBLENDFUNCSEPARATEINGR }, { "glBlendFuncSeparateIndexedAMD", NFOSMESA_GLBLENDFUNCSEPARATEINDEXEDAMD }, { "glBlendFuncSeparatei", NFOSMESA_GLBLENDFUNCSEPARATEI }, { "glBlendFuncSeparateiARB", NFOSMESA_GLBLENDFUNCSEPARATEIARB }, { "glBlendFunci", NFOSMESA_GLBLENDFUNCI }, { "glBlendFunciARB", NFOSMESA_GLBLENDFUNCIARB }, { "glBlendParameteriNV", NFOSMESA_GLBLENDPARAMETERINV }, { "glBlitFramebuffer", NFOSMESA_GLBLITFRAMEBUFFER }, { "glBlitFramebufferEXT", NFOSMESA_GLBLITFRAMEBUFFEREXT }, { "glBlitNamedFramebuffer", NFOSMESA_GLBLITNAMEDFRAMEBUFFER }, { "glBufferAddressRangeNV", NFOSMESA_GLBUFFERADDRESSRANGENV }, { "glBufferData", NFOSMESA_GLBUFFERDATA }, { "glBufferDataARB", NFOSMESA_GLBUFFERDATAARB }, { "glBufferPageCommitmentARB", NFOSMESA_GLBUFFERPAGECOMMITMENTARB }, { "glBufferParameteriAPPLE", NFOSMESA_GLBUFFERPARAMETERIAPPLE }, { "glBufferStorage", NFOSMESA_GLBUFFERSTORAGE }, { "glBufferStorageExternalEXT", NFOSMESA_GLBUFFERSTORAGEEXTERNALEXT }, { "glBufferStorageMemEXT", NFOSMESA_GLBUFFERSTORAGEMEMEXT }, { "glBufferSubData", NFOSMESA_GLBUFFERSUBDATA }, { "glBufferSubDataARB", NFOSMESA_GLBUFFERSUBDATAARB }, { "glCallCommandListNV", NFOSMESA_GLCALLCOMMANDLISTNV }, { "glCallList", NFOSMESA_GLCALLLIST }, { "glCallLists", NFOSMESA_GLCALLLISTS }, { "glCheckFramebufferStatus", NFOSMESA_GLCHECKFRAMEBUFFERSTATUS }, { "glCheckFramebufferStatusEXT", NFOSMESA_GLCHECKFRAMEBUFFERSTATUSEXT }, { "glCheckNamedFramebufferStatus", NFOSMESA_GLCHECKNAMEDFRAMEBUFFERSTATUS }, { "glCheckNamedFramebufferStatusEXT", NFOSMESA_GLCHECKNAMEDFRAMEBUFFERSTATUSEXT }, { "glClampColor", NFOSMESA_GLCLAMPCOLOR }, { "glClampColorARB", NFOSMESA_GLCLAMPCOLORARB }, { "glClear", NFOSMESA_GLCLEAR }, { "glClearAccum", NFOSMESA_GLCLEARACCUM }, { "glClearAccumxOES", NFOSMESA_GLCLEARACCUMXOES }, { "glClearBufferData", NFOSMESA_GLCLEARBUFFERDATA }, { "glClearBufferSubData", NFOSMESA_GLCLEARBUFFERSUBDATA }, { "glClearBufferfi", NFOSMESA_GLCLEARBUFFERFI }, { "glClearBufferfv", NFOSMESA_GLCLEARBUFFERFV }, { "glClearBufferiv", NFOSMESA_GLCLEARBUFFERIV }, { "glClearBufferuiv", NFOSMESA_GLCLEARBUFFERUIV }, { "glClearColor", NFOSMESA_GLCLEARCOLOR }, { "glClearColorIiEXT", NFOSMESA_GLCLEARCOLORIIEXT }, { "glClearColorIuiEXT", NFOSMESA_GLCLEARCOLORIUIEXT }, { "glClearColorxOES", NFOSMESA_GLCLEARCOLORXOES }, { "glClearDebugLogMESA", NFOSMESA_GLCLEARDEBUGLOGMESA }, { "glClearDepth", NFOSMESA_GLCLEARDEPTH }, { "glClearDepthdNV", NFOSMESA_GLCLEARDEPTHDNV }, { "glClearDepthf", NFOSMESA_GLCLEARDEPTHF }, { "glClearDepthfOES", NFOSMESA_GLCLEARDEPTHFOES }, { "glClearDepthxOES", NFOSMESA_GLCLEARDEPTHXOES }, { "glClearIndex", NFOSMESA_GLCLEARINDEX }, { "glClearNamedBufferData", NFOSMESA_GLCLEARNAMEDBUFFERDATA }, { "glClearNamedBufferDataEXT", NFOSMESA_GLCLEARNAMEDBUFFERDATAEXT }, { "glClearNamedBufferSubData", NFOSMESA_GLCLEARNAMEDBUFFERSUBDATA }, { "glClearNamedBufferSubDataEXT", NFOSMESA_GLCLEARNAMEDBUFFERSUBDATAEXT }, { "glClearNamedFramebufferfi", NFOSMESA_GLCLEARNAMEDFRAMEBUFFERFI }, { "glClearNamedFramebufferfv", NFOSMESA_GLCLEARNAMEDFRAMEBUFFERFV }, { "glClearNamedFramebufferiv", NFOSMESA_GLCLEARNAMEDFRAMEBUFFERIV }, { "glClearNamedFramebufferuiv", NFOSMESA_GLCLEARNAMEDFRAMEBUFFERUIV }, { "glClearStencil", NFOSMESA_GLCLEARSTENCIL }, { "glClearTexImage", NFOSMESA_GLCLEARTEXIMAGE }, { "glClearTexSubImage", NFOSMESA_GLCLEARTEXSUBIMAGE }, { "glClientActiveTexture", NFOSMESA_GLCLIENTACTIVETEXTURE }, { "glClientActiveTextureARB", NFOSMESA_GLCLIENTACTIVETEXTUREARB }, { "glClientActiveVertexStreamATI", NFOSMESA_GLCLIENTACTIVEVERTEXSTREAMATI }, { "glClientAttribDefaultEXT", NFOSMESA_GLCLIENTATTRIBDEFAULTEXT }, { "glClientWaitSync", NFOSMESA_GLCLIENTWAITSYNC }, { "glClipControl", NFOSMESA_GLCLIPCONTROL }, { "glClipPlane", NFOSMESA_GLCLIPPLANE }, { "glClipPlanefOES", NFOSMESA_GLCLIPPLANEFOES }, { "glClipPlanexOES", NFOSMESA_GLCLIPPLANEXOES }, { "glColor3b", NFOSMESA_GLCOLOR3B }, { "glColor3bv", NFOSMESA_GLCOLOR3BV }, { "glColor3d", NFOSMESA_GLCOLOR3D }, { "glColor3dv", NFOSMESA_GLCOLOR3DV }, { "glColor3f", NFOSMESA_GLCOLOR3F }, { "glColor3fVertex3fSUN", NFOSMESA_GLCOLOR3FVERTEX3FSUN }, { "glColor3fVertex3fvSUN", NFOSMESA_GLCOLOR3FVERTEX3FVSUN }, { "glColor3fv", NFOSMESA_GLCOLOR3FV }, { "glColor3hNV", NFOSMESA_GLCOLOR3HNV }, { "glColor3hvNV", NFOSMESA_GLCOLOR3HVNV }, { "glColor3i", NFOSMESA_GLCOLOR3I }, { "glColor3iv", NFOSMESA_GLCOLOR3IV }, { "glColor3s", NFOSMESA_GLCOLOR3S }, { "glColor3sv", NFOSMESA_GLCOLOR3SV }, { "glColor3ub", NFOSMESA_GLCOLOR3UB }, { "glColor3ubv", NFOSMESA_GLCOLOR3UBV }, { "glColor3ui", NFOSMESA_GLCOLOR3UI }, { "glColor3uiv", NFOSMESA_GLCOLOR3UIV }, { "glColor3us", NFOSMESA_GLCOLOR3US }, { "glColor3usv", NFOSMESA_GLCOLOR3USV }, { "glColor3xOES", NFOSMESA_GLCOLOR3XOES }, { "glColor3xvOES", NFOSMESA_GLCOLOR3XVOES }, { "glColor4b", NFOSMESA_GLCOLOR4B }, { "glColor4bv", NFOSMESA_GLCOLOR4BV }, { "glColor4d", NFOSMESA_GLCOLOR4D }, { "glColor4dv", NFOSMESA_GLCOLOR4DV }, { "glColor4f", NFOSMESA_GLCOLOR4F }, { "glColor4fNormal3fVertex3fSUN", NFOSMESA_GLCOLOR4FNORMAL3FVERTEX3FSUN }, { "glColor4fNormal3fVertex3fvSUN", NFOSMESA_GLCOLOR4FNORMAL3FVERTEX3FVSUN }, { "glColor4fv", NFOSMESA_GLCOLOR4FV }, { "glColor4hNV", NFOSMESA_GLCOLOR4HNV }, { "glColor4hvNV", NFOSMESA_GLCOLOR4HVNV }, { "glColor4i", NFOSMESA_GLCOLOR4I }, { "glColor4iv", NFOSMESA_GLCOLOR4IV }, { "glColor4s", NFOSMESA_GLCOLOR4S }, { "glColor4sv", NFOSMESA_GLCOLOR4SV }, { "glColor4ub", NFOSMESA_GLCOLOR4UB }, { "glColor4ubVertex2fSUN", NFOSMESA_GLCOLOR4UBVERTEX2FSUN }, { "glColor4ubVertex2fvSUN", NFOSMESA_GLCOLOR4UBVERTEX2FVSUN }, { "glColor4ubVertex3fSUN", NFOSMESA_GLCOLOR4UBVERTEX3FSUN }, { "glColor4ubVertex3fvSUN", NFOSMESA_GLCOLOR4UBVERTEX3FVSUN }, { "glColor4ubv", NFOSMESA_GLCOLOR4UBV }, { "glColor4ui", NFOSMESA_GLCOLOR4UI }, { "glColor4uiv", NFOSMESA_GLCOLOR4UIV }, { "glColor4us", NFOSMESA_GLCOLOR4US }, { "glColor4usv", NFOSMESA_GLCOLOR4USV }, { "glColor4xOES", NFOSMESA_GLCOLOR4XOES }, { "glColor4xvOES", NFOSMESA_GLCOLOR4XVOES }, { "glColorFormatNV", NFOSMESA_GLCOLORFORMATNV }, { "glColorFragmentOp1ATI", NFOSMESA_GLCOLORFRAGMENTOP1ATI }, { "glColorFragmentOp2ATI", NFOSMESA_GLCOLORFRAGMENTOP2ATI }, { "glColorFragmentOp3ATI", NFOSMESA_GLCOLORFRAGMENTOP3ATI }, { "glColorMask", NFOSMESA_GLCOLORMASK }, { "glColorMaskIndexedEXT", NFOSMESA_GLCOLORMASKINDEXEDEXT }, { "glColorMaski", NFOSMESA_GLCOLORMASKI }, { "glColorMaterial", NFOSMESA_GLCOLORMATERIAL }, { "glColorP3ui", NFOSMESA_GLCOLORP3UI }, { "glColorP3uiv", NFOSMESA_GLCOLORP3UIV }, { "glColorP4ui", NFOSMESA_GLCOLORP4UI }, { "glColorP4uiv", NFOSMESA_GLCOLORP4UIV }, { "glColorPointer", NFOSMESA_GLCOLORPOINTER }, { "glColorPointerEXT", NFOSMESA_GLCOLORPOINTEREXT }, { "glColorPointerListIBM", NFOSMESA_GLCOLORPOINTERLISTIBM }, { "glColorPointervINTEL", NFOSMESA_GLCOLORPOINTERVINTEL }, { "glColorSubTable", NFOSMESA_GLCOLORSUBTABLE }, { "glColorSubTableEXT", NFOSMESA_GLCOLORSUBTABLEEXT }, { "glColorTable", NFOSMESA_GLCOLORTABLE }, { "glColorTableEXT", NFOSMESA_GLCOLORTABLEEXT }, { "glColorTableParameterfv", NFOSMESA_GLCOLORTABLEPARAMETERFV }, { "glColorTableParameterfvSGI", NFOSMESA_GLCOLORTABLEPARAMETERFVSGI }, { "glColorTableParameteriv", NFOSMESA_GLCOLORTABLEPARAMETERIV }, { "glColorTableParameterivSGI", NFOSMESA_GLCOLORTABLEPARAMETERIVSGI }, { "glColorTableSGI", NFOSMESA_GLCOLORTABLESGI }, { "glCombinerInputNV", NFOSMESA_GLCOMBINERINPUTNV }, { "glCombinerOutputNV", NFOSMESA_GLCOMBINEROUTPUTNV }, { "glCombinerParameterfNV", NFOSMESA_GLCOMBINERPARAMETERFNV }, { "glCombinerParameterfvNV", NFOSMESA_GLCOMBINERPARAMETERFVNV }, { "glCombinerParameteriNV", NFOSMESA_GLCOMBINERPARAMETERINV }, { "glCombinerParameterivNV", NFOSMESA_GLCOMBINERPARAMETERIVNV }, { "glCombinerStageParameterfvNV", NFOSMESA_GLCOMBINERSTAGEPARAMETERFVNV }, { "glCommandListSegmentsNV", NFOSMESA_GLCOMMANDLISTSEGMENTSNV }, { "glCompileCommandListNV", NFOSMESA_GLCOMPILECOMMANDLISTNV }, { "glCompileShader", NFOSMESA_GLCOMPILESHADER }, { "glCompileShaderARB", NFOSMESA_GLCOMPILESHADERARB }, { "glCompileShaderIncludeARB", NFOSMESA_GLCOMPILESHADERINCLUDEARB }, { "glCompressedMultiTexImage1DEXT", NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE1DEXT }, { "glCompressedMultiTexImage2DEXT", NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE2DEXT }, { "glCompressedMultiTexImage3DEXT", NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE3DEXT }, { "glCompressedMultiTexSubImage1DEXT", NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE1DEXT }, { "glCompressedMultiTexSubImage2DEXT", NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE2DEXT }, { "glCompressedMultiTexSubImage3DEXT", NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE3DEXT }, { "glCompressedTexImage1D", NFOSMESA_GLCOMPRESSEDTEXIMAGE1D }, { "glCompressedTexImage1DARB", NFOSMESA_GLCOMPRESSEDTEXIMAGE1DARB }, { "glCompressedTexImage2D", NFOSMESA_GLCOMPRESSEDTEXIMAGE2D }, { "glCompressedTexImage2DARB", NFOSMESA_GLCOMPRESSEDTEXIMAGE2DARB }, { "glCompressedTexImage3D", NFOSMESA_GLCOMPRESSEDTEXIMAGE3D }, { "glCompressedTexImage3DARB", NFOSMESA_GLCOMPRESSEDTEXIMAGE3DARB }, { "glCompressedTexSubImage1D", NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1D }, { "glCompressedTexSubImage1DARB", NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1DARB }, { "glCompressedTexSubImage2D", NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2D }, { "glCompressedTexSubImage2DARB", NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2DARB }, { "glCompressedTexSubImage3D", NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3D }, { "glCompressedTexSubImage3DARB", NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3DARB }, { "glCompressedTextureImage1DEXT", NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE1DEXT }, { "glCompressedTextureImage2DEXT", NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE2DEXT }, { "glCompressedTextureImage3DEXT", NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE3DEXT }, { "glCompressedTextureSubImage1D", NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE1D }, { "glCompressedTextureSubImage1DEXT", NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE1DEXT }, { "glCompressedTextureSubImage2D", NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE2D }, { "glCompressedTextureSubImage2DEXT", NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE2DEXT }, { "glCompressedTextureSubImage3D", NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE3D }, { "glCompressedTextureSubImage3DEXT", NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE3DEXT }, { "glConservativeRasterParameterfNV", NFOSMESA_GLCONSERVATIVERASTERPARAMETERFNV }, { "glConservativeRasterParameteriNV", NFOSMESA_GLCONSERVATIVERASTERPARAMETERINV }, { "glConvolutionFilter1D", NFOSMESA_GLCONVOLUTIONFILTER1D }, { "glConvolutionFilter1DEXT", NFOSMESA_GLCONVOLUTIONFILTER1DEXT }, { "glConvolutionFilter2D", NFOSMESA_GLCONVOLUTIONFILTER2D }, { "glConvolutionFilter2DEXT", NFOSMESA_GLCONVOLUTIONFILTER2DEXT }, { "glConvolutionParameterf", NFOSMESA_GLCONVOLUTIONPARAMETERF }, { "glConvolutionParameterfEXT", NFOSMESA_GLCONVOLUTIONPARAMETERFEXT }, { "glConvolutionParameterfv", NFOSMESA_GLCONVOLUTIONPARAMETERFV }, { "glConvolutionParameterfvEXT", NFOSMESA_GLCONVOLUTIONPARAMETERFVEXT }, { "glConvolutionParameteri", NFOSMESA_GLCONVOLUTIONPARAMETERI }, { "glConvolutionParameteriEXT", NFOSMESA_GLCONVOLUTIONPARAMETERIEXT }, { "glConvolutionParameteriv", NFOSMESA_GLCONVOLUTIONPARAMETERIV }, { "glConvolutionParameterivEXT", NFOSMESA_GLCONVOLUTIONPARAMETERIVEXT }, { "glConvolutionParameterxOES", NFOSMESA_GLCONVOLUTIONPARAMETERXOES }, { "glConvolutionParameterxvOES", NFOSMESA_GLCONVOLUTIONPARAMETERXVOES }, { "glCopyBufferSubData", NFOSMESA_GLCOPYBUFFERSUBDATA }, { "glCopyColorSubTable", NFOSMESA_GLCOPYCOLORSUBTABLE }, { "glCopyColorSubTableEXT", NFOSMESA_GLCOPYCOLORSUBTABLEEXT }, { "glCopyColorTable", NFOSMESA_GLCOPYCOLORTABLE }, { "glCopyColorTableSGI", NFOSMESA_GLCOPYCOLORTABLESGI }, { "glCopyConvolutionFilter1D", NFOSMESA_GLCOPYCONVOLUTIONFILTER1D }, { "glCopyConvolutionFilter1DEXT", NFOSMESA_GLCOPYCONVOLUTIONFILTER1DEXT }, { "glCopyConvolutionFilter2D", NFOSMESA_GLCOPYCONVOLUTIONFILTER2D }, { "glCopyConvolutionFilter2DEXT", NFOSMESA_GLCOPYCONVOLUTIONFILTER2DEXT }, { "glCopyImageSubData", NFOSMESA_GLCOPYIMAGESUBDATA }, { "glCopyImageSubDataNV", NFOSMESA_GLCOPYIMAGESUBDATANV }, { "glCopyMultiTexImage1DEXT", NFOSMESA_GLCOPYMULTITEXIMAGE1DEXT }, { "glCopyMultiTexImage2DEXT", NFOSMESA_GLCOPYMULTITEXIMAGE2DEXT }, { "glCopyMultiTexSubImage1DEXT", NFOSMESA_GLCOPYMULTITEXSUBIMAGE1DEXT }, { "glCopyMultiTexSubImage2DEXT", NFOSMESA_GLCOPYMULTITEXSUBIMAGE2DEXT }, { "glCopyMultiTexSubImage3DEXT", NFOSMESA_GLCOPYMULTITEXSUBIMAGE3DEXT }, { "glCopyNamedBufferSubData", NFOSMESA_GLCOPYNAMEDBUFFERSUBDATA }, { "glCopyPathNV", NFOSMESA_GLCOPYPATHNV }, { "glCopyPixels", NFOSMESA_GLCOPYPIXELS }, { "glCopyTexImage1D", NFOSMESA_GLCOPYTEXIMAGE1D }, { "glCopyTexImage1DEXT", NFOSMESA_GLCOPYTEXIMAGE1DEXT }, { "glCopyTexImage2D", NFOSMESA_GLCOPYTEXIMAGE2D }, { "glCopyTexImage2DEXT", NFOSMESA_GLCOPYTEXIMAGE2DEXT }, { "glCopyTexSubImage1D", NFOSMESA_GLCOPYTEXSUBIMAGE1D }, { "glCopyTexSubImage1DEXT", NFOSMESA_GLCOPYTEXSUBIMAGE1DEXT }, { "glCopyTexSubImage2D", NFOSMESA_GLCOPYTEXSUBIMAGE2D }, { "glCopyTexSubImage2DEXT", NFOSMESA_GLCOPYTEXSUBIMAGE2DEXT }, { "glCopyTexSubImage3D", NFOSMESA_GLCOPYTEXSUBIMAGE3D }, { "glCopyTexSubImage3DEXT", NFOSMESA_GLCOPYTEXSUBIMAGE3DEXT }, { "glCopyTextureImage1DEXT", NFOSMESA_GLCOPYTEXTUREIMAGE1DEXT }, { "glCopyTextureImage2DEXT", NFOSMESA_GLCOPYTEXTUREIMAGE2DEXT }, { "glCopyTextureSubImage1D", NFOSMESA_GLCOPYTEXTURESUBIMAGE1D }, { "glCopyTextureSubImage1DEXT", NFOSMESA_GLCOPYTEXTURESUBIMAGE1DEXT }, { "glCopyTextureSubImage2D", NFOSMESA_GLCOPYTEXTURESUBIMAGE2D }, { "glCopyTextureSubImage2DEXT", NFOSMESA_GLCOPYTEXTURESUBIMAGE2DEXT }, { "glCopyTextureSubImage3D", NFOSMESA_GLCOPYTEXTURESUBIMAGE3D }, { "glCopyTextureSubImage3DEXT", NFOSMESA_GLCOPYTEXTURESUBIMAGE3DEXT }, { "glCoverFillPathInstancedNV", NFOSMESA_GLCOVERFILLPATHINSTANCEDNV }, { "glCoverFillPathNV", NFOSMESA_GLCOVERFILLPATHNV }, { "glCoverStrokePathInstancedNV", NFOSMESA_GLCOVERSTROKEPATHINSTANCEDNV }, { "glCoverStrokePathNV", NFOSMESA_GLCOVERSTROKEPATHNV }, { "glCoverageModulationNV", NFOSMESA_GLCOVERAGEMODULATIONNV }, { "glCoverageModulationTableNV", NFOSMESA_GLCOVERAGEMODULATIONTABLENV }, { "glCreateBuffers", NFOSMESA_GLCREATEBUFFERS }, { "glCreateCommandListsNV", NFOSMESA_GLCREATECOMMANDLISTSNV }, { "glCreateDebugObjectMESA", NFOSMESA_GLCREATEDEBUGOBJECTMESA }, { "glCreateFramebuffers", NFOSMESA_GLCREATEFRAMEBUFFERS }, { "glCreateMemoryObjectsEXT", NFOSMESA_GLCREATEMEMORYOBJECTSEXT }, { "glCreatePerfQueryINTEL", NFOSMESA_GLCREATEPERFQUERYINTEL }, { "glCreateProgram", NFOSMESA_GLCREATEPROGRAM }, { "glCreateProgramObjectARB", NFOSMESA_GLCREATEPROGRAMOBJECTARB }, { "glCreateProgramPipelines", NFOSMESA_GLCREATEPROGRAMPIPELINES }, { "glCreateQueries", NFOSMESA_GLCREATEQUERIES }, { "glCreateRenderbuffers", NFOSMESA_GLCREATERENDERBUFFERS }, { "glCreateSamplers", NFOSMESA_GLCREATESAMPLERS }, { "glCreateShader", NFOSMESA_GLCREATESHADER }, { "glCreateShaderObjectARB", NFOSMESA_GLCREATESHADEROBJECTARB }, { "glCreateShaderProgramEXT", NFOSMESA_GLCREATESHADERPROGRAMEXT }, { "glCreateShaderProgramv", NFOSMESA_GLCREATESHADERPROGRAMV }, { "glCreateStatesNV", NFOSMESA_GLCREATESTATESNV }, { "glCreateSyncFromCLeventARB", NFOSMESA_GLCREATESYNCFROMCLEVENTARB }, { "glCreateTextures", NFOSMESA_GLCREATETEXTURES }, { "glCreateTransformFeedbacks", NFOSMESA_GLCREATETRANSFORMFEEDBACKS }, { "glCreateVertexArrays", NFOSMESA_GLCREATEVERTEXARRAYS }, { "glCullFace", NFOSMESA_GLCULLFACE }, { "glCullParameterdvEXT", NFOSMESA_GLCULLPARAMETERDVEXT }, { "glCullParameterfvEXT", NFOSMESA_GLCULLPARAMETERFVEXT }, { "glCurrentPaletteMatrixARB", NFOSMESA_GLCURRENTPALETTEMATRIXARB }, { "glDebugMessageCallback", NFOSMESA_GLDEBUGMESSAGECALLBACK }, { "glDebugMessageCallbackAMD", NFOSMESA_GLDEBUGMESSAGECALLBACKAMD }, { "glDebugMessageCallbackARB", NFOSMESA_GLDEBUGMESSAGECALLBACKARB }, { "glDebugMessageControl", NFOSMESA_GLDEBUGMESSAGECONTROL }, { "glDebugMessageControlARB", NFOSMESA_GLDEBUGMESSAGECONTROLARB }, { "glDebugMessageEnableAMD", NFOSMESA_GLDEBUGMESSAGEENABLEAMD }, { "glDebugMessageInsert", NFOSMESA_GLDEBUGMESSAGEINSERT }, { "glDebugMessageInsertAMD", NFOSMESA_GLDEBUGMESSAGEINSERTAMD }, { "glDebugMessageInsertARB", NFOSMESA_GLDEBUGMESSAGEINSERTARB }, { "glDeformSGIX", NFOSMESA_GLDEFORMSGIX }, { "glDeformationMap3dSGIX", NFOSMESA_GLDEFORMATIONMAP3DSGIX }, { "glDeformationMap3fSGIX", NFOSMESA_GLDEFORMATIONMAP3FSGIX }, { "glDeleteAsyncMarkersSGIX", NFOSMESA_GLDELETEASYNCMARKERSSGIX }, { "glDeleteBuffers", NFOSMESA_GLDELETEBUFFERS }, { "glDeleteBuffersARB", NFOSMESA_GLDELETEBUFFERSARB }, { "glDeleteCommandListsNV", NFOSMESA_GLDELETECOMMANDLISTSNV }, { "glDeleteFencesAPPLE", NFOSMESA_GLDELETEFENCESAPPLE }, { "glDeleteFencesNV", NFOSMESA_GLDELETEFENCESNV }, { "glDeleteFragmentShaderATI", NFOSMESA_GLDELETEFRAGMENTSHADERATI }, { "glDeleteFramebuffers", NFOSMESA_GLDELETEFRAMEBUFFERS }, { "glDeleteFramebuffersEXT", NFOSMESA_GLDELETEFRAMEBUFFERSEXT }, { "glDeleteLists", NFOSMESA_GLDELETELISTS }, { "glDeleteMemoryObjectsEXT", NFOSMESA_GLDELETEMEMORYOBJECTSEXT }, { "glDeleteNamedStringARB", NFOSMESA_GLDELETENAMEDSTRINGARB }, { "glDeleteNamesAMD", NFOSMESA_GLDELETENAMESAMD }, { "glDeleteObjectARB", NFOSMESA_GLDELETEOBJECTARB }, { "glDeleteObjectBufferATI", NFOSMESA_GLDELETEOBJECTBUFFERATI }, { "glDeleteOcclusionQueriesNV", NFOSMESA_GLDELETEOCCLUSIONQUERIESNV }, { "glDeletePathsNV", NFOSMESA_GLDELETEPATHSNV }, { "glDeletePerfMonitorsAMD", NFOSMESA_GLDELETEPERFMONITORSAMD }, { "glDeletePerfQueryINTEL", NFOSMESA_GLDELETEPERFQUERYINTEL }, { "glDeleteProgram", NFOSMESA_GLDELETEPROGRAM }, { "glDeleteProgramPipelines", NFOSMESA_GLDELETEPROGRAMPIPELINES }, { "glDeleteProgramsARB", NFOSMESA_GLDELETEPROGRAMSARB }, { "glDeleteProgramsNV", NFOSMESA_GLDELETEPROGRAMSNV }, { "glDeleteQueries", NFOSMESA_GLDELETEQUERIES }, { "glDeleteQueriesARB", NFOSMESA_GLDELETEQUERIESARB }, { "glDeleteQueryResourceTagNV", NFOSMESA_GLDELETEQUERYRESOURCETAGNV }, { "glDeleteRenderbuffers", NFOSMESA_GLDELETERENDERBUFFERS }, { "glDeleteRenderbuffersEXT", NFOSMESA_GLDELETERENDERBUFFERSEXT }, { "glDeleteSamplers", NFOSMESA_GLDELETESAMPLERS }, { "glDeleteSemaphoresEXT", NFOSMESA_GLDELETESEMAPHORESEXT }, { "glDeleteShader", NFOSMESA_GLDELETESHADER }, { "glDeleteStatesNV", NFOSMESA_GLDELETESTATESNV }, { "glDeleteSync", NFOSMESA_GLDELETESYNC }, { "glDeleteTextures", NFOSMESA_GLDELETETEXTURES }, { "glDeleteTexturesEXT", NFOSMESA_GLDELETETEXTURESEXT }, { "glDeleteTransformFeedbacks", NFOSMESA_GLDELETETRANSFORMFEEDBACKS }, { "glDeleteTransformFeedbacksNV", NFOSMESA_GLDELETETRANSFORMFEEDBACKSNV }, { "glDeleteVertexArrays", NFOSMESA_GLDELETEVERTEXARRAYS }, { "glDeleteVertexArraysAPPLE", NFOSMESA_GLDELETEVERTEXARRAYSAPPLE }, { "glDeleteVertexShaderEXT", NFOSMESA_GLDELETEVERTEXSHADEREXT }, { "glDepthBoundsEXT", NFOSMESA_GLDEPTHBOUNDSEXT }, { "glDepthBoundsdNV", NFOSMESA_GLDEPTHBOUNDSDNV }, { "glDepthFunc", NFOSMESA_GLDEPTHFUNC }, { "glDepthMask", NFOSMESA_GLDEPTHMASK }, { "glDepthRange", NFOSMESA_GLDEPTHRANGE }, { "glDepthRangeArrayv", NFOSMESA_GLDEPTHRANGEARRAYV }, { "glDepthRangeIndexed", NFOSMESA_GLDEPTHRANGEINDEXED }, { "glDepthRangedNV", NFOSMESA_GLDEPTHRANGEDNV }, { "glDepthRangef", NFOSMESA_GLDEPTHRANGEF }, { "glDepthRangefOES", NFOSMESA_GLDEPTHRANGEFOES }, { "glDepthRangexOES", NFOSMESA_GLDEPTHRANGEXOES }, { "glDetachObjectARB", NFOSMESA_GLDETACHOBJECTARB }, { "glDetachShader", NFOSMESA_GLDETACHSHADER }, { "glDetailTexFuncSGIS", NFOSMESA_GLDETAILTEXFUNCSGIS }, { "glDisable", NFOSMESA_GLDISABLE }, { "glDisableClientState", NFOSMESA_GLDISABLECLIENTSTATE }, { "glDisableClientStateIndexedEXT", NFOSMESA_GLDISABLECLIENTSTATEINDEXEDEXT }, { "glDisableClientStateiEXT", NFOSMESA_GLDISABLECLIENTSTATEIEXT }, { "glDisableIndexedEXT", NFOSMESA_GLDISABLEINDEXEDEXT }, { "glDisableTraceMESA", NFOSMESA_GLDISABLETRACEMESA }, { "glDisableVariantClientStateEXT", NFOSMESA_GLDISABLEVARIANTCLIENTSTATEEXT }, { "glDisableVertexArrayAttrib", NFOSMESA_GLDISABLEVERTEXARRAYATTRIB }, { "glDisableVertexArrayAttribEXT", NFOSMESA_GLDISABLEVERTEXARRAYATTRIBEXT }, { "glDisableVertexArrayEXT", NFOSMESA_GLDISABLEVERTEXARRAYEXT }, { "glDisableVertexAttribAPPLE", NFOSMESA_GLDISABLEVERTEXATTRIBAPPLE }, { "glDisableVertexAttribArray", NFOSMESA_GLDISABLEVERTEXATTRIBARRAY }, { "glDisableVertexAttribArrayARB", NFOSMESA_GLDISABLEVERTEXATTRIBARRAYARB }, { "glDisablei", NFOSMESA_GLDISABLEI }, { "glDispatchCompute", NFOSMESA_GLDISPATCHCOMPUTE }, { "glDispatchComputeGroupSizeARB", NFOSMESA_GLDISPATCHCOMPUTEGROUPSIZEARB }, { "glDispatchComputeIndirect", NFOSMESA_GLDISPATCHCOMPUTEINDIRECT }, { "glDrawArrays", NFOSMESA_GLDRAWARRAYS }, { "glDrawArraysEXT", NFOSMESA_GLDRAWARRAYSEXT }, { "glDrawArraysIndirect", NFOSMESA_GLDRAWARRAYSINDIRECT }, { "glDrawArraysInstanced", NFOSMESA_GLDRAWARRAYSINSTANCED }, { "glDrawArraysInstancedARB", NFOSMESA_GLDRAWARRAYSINSTANCEDARB }, { "glDrawArraysInstancedBaseInstance", NFOSMESA_GLDRAWARRAYSINSTANCEDBASEINSTANCE }, { "glDrawArraysInstancedEXT", NFOSMESA_GLDRAWARRAYSINSTANCEDEXT }, { "glDrawBuffer", NFOSMESA_GLDRAWBUFFER }, { "glDrawBuffers", NFOSMESA_GLDRAWBUFFERS }, { "glDrawBuffersARB", NFOSMESA_GLDRAWBUFFERSARB }, { "glDrawBuffersATI", NFOSMESA_GLDRAWBUFFERSATI }, { "glDrawCommandsAddressNV", NFOSMESA_GLDRAWCOMMANDSADDRESSNV }, { "glDrawCommandsNV", NFOSMESA_GLDRAWCOMMANDSNV }, { "glDrawCommandsStatesAddressNV", NFOSMESA_GLDRAWCOMMANDSSTATESADDRESSNV }, { "glDrawCommandsStatesNV", NFOSMESA_GLDRAWCOMMANDSSTATESNV }, { "glDrawElementArrayAPPLE", NFOSMESA_GLDRAWELEMENTARRAYAPPLE }, { "glDrawElementArrayATI", NFOSMESA_GLDRAWELEMENTARRAYATI }, { "glDrawElements", NFOSMESA_GLDRAWELEMENTS }, { "glDrawElementsBaseVertex", NFOSMESA_GLDRAWELEMENTSBASEVERTEX }, { "glDrawElementsIndirect", NFOSMESA_GLDRAWELEMENTSINDIRECT }, { "glDrawElementsInstanced", NFOSMESA_GLDRAWELEMENTSINSTANCED }, { "glDrawElementsInstancedARB", NFOSMESA_GLDRAWELEMENTSINSTANCEDARB }, { "glDrawElementsInstancedBaseInstance", NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEINSTANCE }, { "glDrawElementsInstancedBaseVertex", NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEVERTEX }, { "glDrawElementsInstancedBaseVertexBaseInstance", NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE }, { "glDrawElementsInstancedEXT", NFOSMESA_GLDRAWELEMENTSINSTANCEDEXT }, { "glDrawMeshArraysSUN", NFOSMESA_GLDRAWMESHARRAYSSUN }, { "glDrawPixels", NFOSMESA_GLDRAWPIXELS }, { "glDrawRangeElementArrayAPPLE", NFOSMESA_GLDRAWRANGEELEMENTARRAYAPPLE }, { "glDrawRangeElementArrayATI", NFOSMESA_GLDRAWRANGEELEMENTARRAYATI }, { "glDrawRangeElements", NFOSMESA_GLDRAWRANGEELEMENTS }, { "glDrawRangeElementsBaseVertex", NFOSMESA_GLDRAWRANGEELEMENTSBASEVERTEX }, { "glDrawRangeElementsEXT", NFOSMESA_GLDRAWRANGEELEMENTSEXT }, { "glDrawTextureNV", NFOSMESA_GLDRAWTEXTURENV }, { "glDrawTransformFeedback", NFOSMESA_GLDRAWTRANSFORMFEEDBACK }, { "glDrawTransformFeedbackInstanced", NFOSMESA_GLDRAWTRANSFORMFEEDBACKINSTANCED }, { "glDrawTransformFeedbackNV", NFOSMESA_GLDRAWTRANSFORMFEEDBACKNV }, { "glDrawTransformFeedbackStream", NFOSMESA_GLDRAWTRANSFORMFEEDBACKSTREAM }, { "glDrawTransformFeedbackStreamInstanced", NFOSMESA_GLDRAWTRANSFORMFEEDBACKSTREAMINSTANCED }, { "glDrawVkImageNV", NFOSMESA_GLDRAWVKIMAGENV }, { "glEdgeFlag", NFOSMESA_GLEDGEFLAG }, { "glEdgeFlagFormatNV", NFOSMESA_GLEDGEFLAGFORMATNV }, { "glEdgeFlagPointer", NFOSMESA_GLEDGEFLAGPOINTER }, { "glEdgeFlagPointerEXT", NFOSMESA_GLEDGEFLAGPOINTEREXT }, { "glEdgeFlagPointerListIBM", NFOSMESA_GLEDGEFLAGPOINTERLISTIBM }, { "glEdgeFlagv", NFOSMESA_GLEDGEFLAGV }, { "glElementPointerAPPLE", NFOSMESA_GLELEMENTPOINTERAPPLE }, { "glElementPointerATI", NFOSMESA_GLELEMENTPOINTERATI }, { "glEnable", NFOSMESA_GLENABLE }, { "glEnableClientState", NFOSMESA_GLENABLECLIENTSTATE }, { "glEnableClientStateIndexedEXT", NFOSMESA_GLENABLECLIENTSTATEINDEXEDEXT }, { "glEnableClientStateiEXT", NFOSMESA_GLENABLECLIENTSTATEIEXT }, { "glEnableIndexedEXT", NFOSMESA_GLENABLEINDEXEDEXT }, { "glEnableTraceMESA", NFOSMESA_GLENABLETRACEMESA }, { "glEnableVariantClientStateEXT", NFOSMESA_GLENABLEVARIANTCLIENTSTATEEXT }, { "glEnableVertexArrayAttrib", NFOSMESA_GLENABLEVERTEXARRAYATTRIB }, { "glEnableVertexArrayAttribEXT", NFOSMESA_GLENABLEVERTEXARRAYATTRIBEXT }, { "glEnableVertexArrayEXT", NFOSMESA_GLENABLEVERTEXARRAYEXT }, { "glEnableVertexAttribAPPLE", NFOSMESA_GLENABLEVERTEXATTRIBAPPLE }, { "glEnableVertexAttribArray", NFOSMESA_GLENABLEVERTEXATTRIBARRAY }, { "glEnableVertexAttribArrayARB", NFOSMESA_GLENABLEVERTEXATTRIBARRAYARB }, { "glEnablei", NFOSMESA_GLENABLEI }, { "glEnd", NFOSMESA_GLEND }, { "glEndConditionalRender", NFOSMESA_GLENDCONDITIONALRENDER }, { "glEndConditionalRenderNV", NFOSMESA_GLENDCONDITIONALRENDERNV }, { "glEndConditionalRenderNVX", NFOSMESA_GLENDCONDITIONALRENDERNVX }, { "glEndFragmentShaderATI", NFOSMESA_GLENDFRAGMENTSHADERATI }, { "glEndList", NFOSMESA_GLENDLIST }, { "glEndOcclusionQueryNV", NFOSMESA_GLENDOCCLUSIONQUERYNV }, { "glEndPerfMonitorAMD", NFOSMESA_GLENDPERFMONITORAMD }, { "glEndPerfQueryINTEL", NFOSMESA_GLENDPERFQUERYINTEL }, { "glEndQuery", NFOSMESA_GLENDQUERY }, { "glEndQueryARB", NFOSMESA_GLENDQUERYARB }, { "glEndQueryIndexed", NFOSMESA_GLENDQUERYINDEXED }, { "glEndTraceMESA", NFOSMESA_GLENDTRACEMESA }, { "glEndTransformFeedback", NFOSMESA_GLENDTRANSFORMFEEDBACK }, { "glEndTransformFeedbackEXT", NFOSMESA_GLENDTRANSFORMFEEDBACKEXT }, { "glEndTransformFeedbackNV", NFOSMESA_GLENDTRANSFORMFEEDBACKNV }, { "glEndVertexShaderEXT", NFOSMESA_GLENDVERTEXSHADEREXT }, { "glEndVideoCaptureNV", NFOSMESA_GLENDVIDEOCAPTURENV }, { "glEvalCoord1d", NFOSMESA_GLEVALCOORD1D }, { "glEvalCoord1dv", NFOSMESA_GLEVALCOORD1DV }, { "glEvalCoord1f", NFOSMESA_GLEVALCOORD1F }, { "glEvalCoord1fv", NFOSMESA_GLEVALCOORD1FV }, { "glEvalCoord1xOES", NFOSMESA_GLEVALCOORD1XOES }, { "glEvalCoord1xvOES", NFOSMESA_GLEVALCOORD1XVOES }, { "glEvalCoord2d", NFOSMESA_GLEVALCOORD2D }, { "glEvalCoord2dv", NFOSMESA_GLEVALCOORD2DV }, { "glEvalCoord2f", NFOSMESA_GLEVALCOORD2F }, { "glEvalCoord2fv", NFOSMESA_GLEVALCOORD2FV }, { "glEvalCoord2xOES", NFOSMESA_GLEVALCOORD2XOES }, { "glEvalCoord2xvOES", NFOSMESA_GLEVALCOORD2XVOES }, { "glEvalMapsNV", NFOSMESA_GLEVALMAPSNV }, { "glEvalMesh1", NFOSMESA_GLEVALMESH1 }, { "glEvalMesh2", NFOSMESA_GLEVALMESH2 }, { "glEvalPoint1", NFOSMESA_GLEVALPOINT1 }, { "glEvalPoint2", NFOSMESA_GLEVALPOINT2 }, { "glEvaluateDepthValuesARB", NFOSMESA_GLEVALUATEDEPTHVALUESARB }, { "glExecuteProgramNV", NFOSMESA_GLEXECUTEPROGRAMNV }, { "glExtractComponentEXT", NFOSMESA_GLEXTRACTCOMPONENTEXT }, { "glFeedbackBuffer", NFOSMESA_GLFEEDBACKBUFFER }, { "glFeedbackBufferxOES", NFOSMESA_GLFEEDBACKBUFFERXOES }, { "glFenceSync", NFOSMESA_GLFENCESYNC }, { "glFinalCombinerInputNV", NFOSMESA_GLFINALCOMBINERINPUTNV }, { "glFinish", NFOSMESA_GLFINISH }, { "glFinishAsyncSGIX", NFOSMESA_GLFINISHASYNCSGIX }, { "glFinishFenceAPPLE", NFOSMESA_GLFINISHFENCEAPPLE }, { "glFinishFenceNV", NFOSMESA_GLFINISHFENCENV }, { "glFinishObjectAPPLE", NFOSMESA_GLFINISHOBJECTAPPLE }, { "glFinishRenderAPPLE", NFOSMESA_GLFINISHRENDERAPPLE }, { "glFinishTextureSUNX", NFOSMESA_GLFINISHTEXTURESUNX }, { "glFlush", NFOSMESA_GLFLUSH }, { "glFlushMappedBufferRange", NFOSMESA_GLFLUSHMAPPEDBUFFERRANGE }, { "glFlushMappedBufferRangeAPPLE", NFOSMESA_GLFLUSHMAPPEDBUFFERRANGEAPPLE }, { "glFlushMappedNamedBufferRange", NFOSMESA_GLFLUSHMAPPEDNAMEDBUFFERRANGE }, { "glFlushMappedNamedBufferRangeEXT", NFOSMESA_GLFLUSHMAPPEDNAMEDBUFFERRANGEEXT }, { "glFlushPixelDataRangeNV", NFOSMESA_GLFLUSHPIXELDATARANGENV }, { "glFlushRasterSGIX", NFOSMESA_GLFLUSHRASTERSGIX }, { "glFlushRenderAPPLE", NFOSMESA_GLFLUSHRENDERAPPLE }, { "glFlushStaticDataIBM", NFOSMESA_GLFLUSHSTATICDATAIBM }, { "glFlushVertexArrayRangeAPPLE", NFOSMESA_GLFLUSHVERTEXARRAYRANGEAPPLE }, { "glFlushVertexArrayRangeNV", NFOSMESA_GLFLUSHVERTEXARRAYRANGENV }, { "glFogCoordFormatNV", NFOSMESA_GLFOGCOORDFORMATNV }, { "glFogCoordPointer", NFOSMESA_GLFOGCOORDPOINTER }, { "glFogCoordPointerEXT", NFOSMESA_GLFOGCOORDPOINTEREXT }, { "glFogCoordPointerListIBM", NFOSMESA_GLFOGCOORDPOINTERLISTIBM }, { "glFogCoordd", NFOSMESA_GLFOGCOORDD }, { "glFogCoorddEXT", NFOSMESA_GLFOGCOORDDEXT }, { "glFogCoorddv", NFOSMESA_GLFOGCOORDDV }, { "glFogCoorddvEXT", NFOSMESA_GLFOGCOORDDVEXT }, { "glFogCoordf", NFOSMESA_GLFOGCOORDF }, { "glFogCoordfEXT", NFOSMESA_GLFOGCOORDFEXT }, { "glFogCoordfv", NFOSMESA_GLFOGCOORDFV }, { "glFogCoordfvEXT", NFOSMESA_GLFOGCOORDFVEXT }, { "glFogCoordhNV", NFOSMESA_GLFOGCOORDHNV }, { "glFogCoordhvNV", NFOSMESA_GLFOGCOORDHVNV }, { "glFogFuncSGIS", NFOSMESA_GLFOGFUNCSGIS }, { "glFogf", NFOSMESA_GLFOGF }, { "glFogfv", NFOSMESA_GLFOGFV }, { "glFogi", NFOSMESA_GLFOGI }, { "glFogiv", NFOSMESA_GLFOGIV }, { "glFogxOES", NFOSMESA_GLFOGXOES }, { "glFogxvOES", NFOSMESA_GLFOGXVOES }, { "glFragmentColorMaterialSGIX", NFOSMESA_GLFRAGMENTCOLORMATERIALSGIX }, { "glFragmentCoverageColorNV", NFOSMESA_GLFRAGMENTCOVERAGECOLORNV }, { "glFragmentLightModelfSGIX", NFOSMESA_GLFRAGMENTLIGHTMODELFSGIX }, { "glFragmentLightModelfvSGIX", NFOSMESA_GLFRAGMENTLIGHTMODELFVSGIX }, { "glFragmentLightModeliSGIX", NFOSMESA_GLFRAGMENTLIGHTMODELISGIX }, { "glFragmentLightModelivSGIX", NFOSMESA_GLFRAGMENTLIGHTMODELIVSGIX }, { "glFragmentLightfSGIX", NFOSMESA_GLFRAGMENTLIGHTFSGIX }, { "glFragmentLightfvSGIX", NFOSMESA_GLFRAGMENTLIGHTFVSGIX }, { "glFragmentLightiSGIX", NFOSMESA_GLFRAGMENTLIGHTISGIX }, { "glFragmentLightivSGIX", NFOSMESA_GLFRAGMENTLIGHTIVSGIX }, { "glFragmentMaterialfSGIX", NFOSMESA_GLFRAGMENTMATERIALFSGIX }, { "glFragmentMaterialfvSGIX", NFOSMESA_GLFRAGMENTMATERIALFVSGIX }, { "glFragmentMaterialiSGIX", NFOSMESA_GLFRAGMENTMATERIALISGIX }, { "glFragmentMaterialivSGIX", NFOSMESA_GLFRAGMENTMATERIALIVSGIX }, { "glFrameTerminatorGREMEDY", NFOSMESA_GLFRAMETERMINATORGREMEDY }, { "glFrameZoomSGIX", NFOSMESA_GLFRAMEZOOMSGIX }, { "glFramebufferDrawBufferEXT", NFOSMESA_GLFRAMEBUFFERDRAWBUFFEREXT }, { "glFramebufferDrawBuffersEXT", NFOSMESA_GLFRAMEBUFFERDRAWBUFFERSEXT }, { "glFramebufferParameteri", NFOSMESA_GLFRAMEBUFFERPARAMETERI }, { "glFramebufferReadBufferEXT", NFOSMESA_GLFRAMEBUFFERREADBUFFEREXT }, { "glFramebufferRenderbuffer", NFOSMESA_GLFRAMEBUFFERRENDERBUFFER }, { "glFramebufferRenderbufferEXT", NFOSMESA_GLFRAMEBUFFERRENDERBUFFEREXT }, { "glFramebufferSampleLocationsfvARB", NFOSMESA_GLFRAMEBUFFERSAMPLELOCATIONSFVARB }, { "glFramebufferSampleLocationsfvNV", NFOSMESA_GLFRAMEBUFFERSAMPLELOCATIONSFVNV }, { "glFramebufferSamplePositionsfvAMD", NFOSMESA_GLFRAMEBUFFERSAMPLEPOSITIONSFVAMD }, { "glFramebufferTexture", NFOSMESA_GLFRAMEBUFFERTEXTURE }, { "glFramebufferTexture1D", NFOSMESA_GLFRAMEBUFFERTEXTURE1D }, { "glFramebufferTexture1DEXT", NFOSMESA_GLFRAMEBUFFERTEXTURE1DEXT }, { "glFramebufferTexture2D", NFOSMESA_GLFRAMEBUFFERTEXTURE2D }, { "glFramebufferTexture2DEXT", NFOSMESA_GLFRAMEBUFFERTEXTURE2DEXT }, { "glFramebufferTexture3D", NFOSMESA_GLFRAMEBUFFERTEXTURE3D }, { "glFramebufferTexture3DEXT", NFOSMESA_GLFRAMEBUFFERTEXTURE3DEXT }, { "glFramebufferTextureARB", NFOSMESA_GLFRAMEBUFFERTEXTUREARB }, { "glFramebufferTextureEXT", NFOSMESA_GLFRAMEBUFFERTEXTUREEXT }, { "glFramebufferTextureFaceARB", NFOSMESA_GLFRAMEBUFFERTEXTUREFACEARB }, { "glFramebufferTextureFaceEXT", NFOSMESA_GLFRAMEBUFFERTEXTUREFACEEXT }, { "glFramebufferTextureLayer", NFOSMESA_GLFRAMEBUFFERTEXTURELAYER }, { "glFramebufferTextureLayerARB", NFOSMESA_GLFRAMEBUFFERTEXTURELAYERARB }, { "glFramebufferTextureLayerEXT", NFOSMESA_GLFRAMEBUFFERTEXTURELAYEREXT }, { "glFramebufferTextureMultiviewOVR", NFOSMESA_GLFRAMEBUFFERTEXTUREMULTIVIEWOVR }, { "glFreeObjectBufferATI", NFOSMESA_GLFREEOBJECTBUFFERATI }, { "glFrontFace", NFOSMESA_GLFRONTFACE }, { "glFrustum", NFOSMESA_GLFRUSTUM }, { "glFrustumf", NFOSMESA_GLFRUSTUMF }, { "glFrustumfOES", NFOSMESA_GLFRUSTUMFOES }, { "glFrustumxOES", NFOSMESA_GLFRUSTUMXOES }, { "glGenAsyncMarkersSGIX", NFOSMESA_GLGENASYNCMARKERSSGIX }, { "glGenBuffers", NFOSMESA_GLGENBUFFERS }, { "glGenBuffersARB", NFOSMESA_GLGENBUFFERSARB }, { "glGenFencesAPPLE", NFOSMESA_GLGENFENCESAPPLE }, { "glGenFencesNV", NFOSMESA_GLGENFENCESNV }, { "glGenFragmentShadersATI", NFOSMESA_GLGENFRAGMENTSHADERSATI }, { "glGenFramebuffers", NFOSMESA_GLGENFRAMEBUFFERS }, { "glGenFramebuffersEXT", NFOSMESA_GLGENFRAMEBUFFERSEXT }, { "glGenLists", NFOSMESA_GLGENLISTS }, { "glGenNamesAMD", NFOSMESA_GLGENNAMESAMD }, { "glGenOcclusionQueriesNV", NFOSMESA_GLGENOCCLUSIONQUERIESNV }, { "glGenPathsNV", NFOSMESA_GLGENPATHSNV }, { "glGenPerfMonitorsAMD", NFOSMESA_GLGENPERFMONITORSAMD }, { "glGenProgramPipelines", NFOSMESA_GLGENPROGRAMPIPELINES }, { "glGenProgramsARB", NFOSMESA_GLGENPROGRAMSARB }, { "glGenProgramsNV", NFOSMESA_GLGENPROGRAMSNV }, { "glGenQueries", NFOSMESA_GLGENQUERIES }, { "glGenQueriesARB", NFOSMESA_GLGENQUERIESARB }, { "glGenQueryResourceTagNV", NFOSMESA_GLGENQUERYRESOURCETAGNV }, { "glGenRenderbuffers", NFOSMESA_GLGENRENDERBUFFERS }, { "glGenRenderbuffersEXT", NFOSMESA_GLGENRENDERBUFFERSEXT }, { "glGenSamplers", NFOSMESA_GLGENSAMPLERS }, { "glGenSemaphoresEXT", NFOSMESA_GLGENSEMAPHORESEXT }, { "glGenSymbolsEXT", NFOSMESA_GLGENSYMBOLSEXT }, { "glGenTextures", NFOSMESA_GLGENTEXTURES }, { "glGenTexturesEXT", NFOSMESA_GLGENTEXTURESEXT }, { "glGenTransformFeedbacks", NFOSMESA_GLGENTRANSFORMFEEDBACKS }, { "glGenTransformFeedbacksNV", NFOSMESA_GLGENTRANSFORMFEEDBACKSNV }, { "glGenVertexArrays", NFOSMESA_GLGENVERTEXARRAYS }, { "glGenVertexArraysAPPLE", NFOSMESA_GLGENVERTEXARRAYSAPPLE }, { "glGenVertexShadersEXT", NFOSMESA_GLGENVERTEXSHADERSEXT }, { "glGenerateMipmap", NFOSMESA_GLGENERATEMIPMAP }, { "glGenerateMipmapEXT", NFOSMESA_GLGENERATEMIPMAPEXT }, { "glGenerateMultiTexMipmapEXT", NFOSMESA_GLGENERATEMULTITEXMIPMAPEXT }, { "glGenerateTextureMipmap", NFOSMESA_GLGENERATETEXTUREMIPMAP }, { "glGenerateTextureMipmapEXT", NFOSMESA_GLGENERATETEXTUREMIPMAPEXT }, { "glGetActiveAtomicCounterBufferiv", NFOSMESA_GLGETACTIVEATOMICCOUNTERBUFFERIV }, { "glGetActiveAttrib", NFOSMESA_GLGETACTIVEATTRIB }, { "glGetActiveAttribARB", NFOSMESA_GLGETACTIVEATTRIBARB }, { "glGetActiveSubroutineName", NFOSMESA_GLGETACTIVESUBROUTINENAME }, { "glGetActiveSubroutineUniformName", NFOSMESA_GLGETACTIVESUBROUTINEUNIFORMNAME }, { "glGetActiveSubroutineUniformiv", NFOSMESA_GLGETACTIVESUBROUTINEUNIFORMIV }, { "glGetActiveUniform", NFOSMESA_GLGETACTIVEUNIFORM }, { "glGetActiveUniformARB", NFOSMESA_GLGETACTIVEUNIFORMARB }, { "glGetActiveUniformBlockIndex", NFOSMESA_GLGETACTIVEUNIFORMBLOCKINDEX }, { "glGetActiveUniformBlockName", NFOSMESA_GLGETACTIVEUNIFORMBLOCKNAME }, { "glGetActiveUniformBlockiv", NFOSMESA_GLGETACTIVEUNIFORMBLOCKIV }, { "glGetActiveUniformName", NFOSMESA_GLGETACTIVEUNIFORMNAME }, { "glGetActiveUniformsiv", NFOSMESA_GLGETACTIVEUNIFORMSIV }, { "glGetActiveVaryingNV", NFOSMESA_GLGETACTIVEVARYINGNV }, { "glGetArrayObjectfvATI", NFOSMESA_GLGETARRAYOBJECTFVATI }, { "glGetArrayObjectivATI", NFOSMESA_GLGETARRAYOBJECTIVATI }, { "glGetAttachedObjectsARB", NFOSMESA_GLGETATTACHEDOBJECTSARB }, { "glGetAttachedShaders", NFOSMESA_GLGETATTACHEDSHADERS }, { "glGetAttribLocation", NFOSMESA_GLGETATTRIBLOCATION }, { "glGetAttribLocationARB", NFOSMESA_GLGETATTRIBLOCATIONARB }, { "glGetBooleanIndexedvEXT", NFOSMESA_GLGETBOOLEANINDEXEDVEXT }, { "glGetBooleani_v", NFOSMESA_GLGETBOOLEANI_V }, { "glGetBooleanv", NFOSMESA_GLGETBOOLEANV }, { "glGetBufferParameteri64v", NFOSMESA_GLGETBUFFERPARAMETERI64V }, { "glGetBufferParameteriv", NFOSMESA_GLGETBUFFERPARAMETERIV }, { "glGetBufferParameterivARB", NFOSMESA_GLGETBUFFERPARAMETERIVARB }, { "glGetBufferParameterui64vNV", NFOSMESA_GLGETBUFFERPARAMETERUI64VNV }, { "glGetBufferPointerv", NFOSMESA_GLGETBUFFERPOINTERV }, { "glGetBufferPointervARB", NFOSMESA_GLGETBUFFERPOINTERVARB }, { "glGetBufferSubData", NFOSMESA_GLGETBUFFERSUBDATA }, { "glGetBufferSubDataARB", NFOSMESA_GLGETBUFFERSUBDATAARB }, { "glGetClipPlane", NFOSMESA_GLGETCLIPPLANE }, { "glGetClipPlanefOES", NFOSMESA_GLGETCLIPPLANEFOES }, { "glGetClipPlanexOES", NFOSMESA_GLGETCLIPPLANEXOES }, { "glGetColorTable", NFOSMESA_GLGETCOLORTABLE }, { "glGetColorTableEXT", NFOSMESA_GLGETCOLORTABLEEXT }, { "glGetColorTableParameterfv", NFOSMESA_GLGETCOLORTABLEPARAMETERFV }, { "glGetColorTableParameterfvEXT", NFOSMESA_GLGETCOLORTABLEPARAMETERFVEXT }, { "glGetColorTableParameterfvSGI", NFOSMESA_GLGETCOLORTABLEPARAMETERFVSGI }, { "glGetColorTableParameteriv", NFOSMESA_GLGETCOLORTABLEPARAMETERIV }, { "glGetColorTableParameterivEXT", NFOSMESA_GLGETCOLORTABLEPARAMETERIVEXT }, { "glGetColorTableParameterivSGI", NFOSMESA_GLGETCOLORTABLEPARAMETERIVSGI }, { "glGetColorTableSGI", NFOSMESA_GLGETCOLORTABLESGI }, { "glGetCombinerInputParameterfvNV", NFOSMESA_GLGETCOMBINERINPUTPARAMETERFVNV }, { "glGetCombinerInputParameterivNV", NFOSMESA_GLGETCOMBINERINPUTPARAMETERIVNV }, { "glGetCombinerOutputParameterfvNV", NFOSMESA_GLGETCOMBINEROUTPUTPARAMETERFVNV }, { "glGetCombinerOutputParameterivNV", NFOSMESA_GLGETCOMBINEROUTPUTPARAMETERIVNV }, { "glGetCombinerStageParameterfvNV", NFOSMESA_GLGETCOMBINERSTAGEPARAMETERFVNV }, { "glGetCommandHeaderNV", NFOSMESA_GLGETCOMMANDHEADERNV }, { "glGetCompressedMultiTexImageEXT", NFOSMESA_GLGETCOMPRESSEDMULTITEXIMAGEEXT }, { "glGetCompressedTexImage", NFOSMESA_GLGETCOMPRESSEDTEXIMAGE }, { "glGetCompressedTexImageARB", NFOSMESA_GLGETCOMPRESSEDTEXIMAGEARB }, { "glGetCompressedTextureImage", NFOSMESA_GLGETCOMPRESSEDTEXTUREIMAGE }, { "glGetCompressedTextureImageEXT", NFOSMESA_GLGETCOMPRESSEDTEXTUREIMAGEEXT }, { "glGetCompressedTextureSubImage", NFOSMESA_GLGETCOMPRESSEDTEXTURESUBIMAGE }, { "glGetConvolutionFilter", NFOSMESA_GLGETCONVOLUTIONFILTER }, { "glGetConvolutionFilterEXT", NFOSMESA_GLGETCONVOLUTIONFILTEREXT }, { "glGetConvolutionParameterfv", NFOSMESA_GLGETCONVOLUTIONPARAMETERFV }, { "glGetConvolutionParameterfvEXT", NFOSMESA_GLGETCONVOLUTIONPARAMETERFVEXT }, { "glGetConvolutionParameteriv", NFOSMESA_GLGETCONVOLUTIONPARAMETERIV }, { "glGetConvolutionParameterivEXT", NFOSMESA_GLGETCONVOLUTIONPARAMETERIVEXT }, { "glGetConvolutionParameterxvOES", NFOSMESA_GLGETCONVOLUTIONPARAMETERXVOES }, { "glGetCoverageModulationTableNV", NFOSMESA_GLGETCOVERAGEMODULATIONTABLENV }, { "glGetDebugLogLengthMESA", NFOSMESA_GLGETDEBUGLOGLENGTHMESA }, { "glGetDebugLogMESA", NFOSMESA_GLGETDEBUGLOGMESA }, { "glGetDebugMessageLog", NFOSMESA_GLGETDEBUGMESSAGELOG }, { "glGetDebugMessageLogAMD", NFOSMESA_GLGETDEBUGMESSAGELOGAMD }, { "glGetDebugMessageLogARB", NFOSMESA_GLGETDEBUGMESSAGELOGARB }, { "glGetDetailTexFuncSGIS", NFOSMESA_GLGETDETAILTEXFUNCSGIS }, { "glGetDoubleIndexedvEXT", NFOSMESA_GLGETDOUBLEINDEXEDVEXT }, { "glGetDoublei_v", NFOSMESA_GLGETDOUBLEI_V }, { "glGetDoublei_vEXT", NFOSMESA_GLGETDOUBLEI_VEXT }, { "glGetDoublev", NFOSMESA_GLGETDOUBLEV }, { "glGetError", NFOSMESA_GLGETERROR }, { "glGetFenceivNV", NFOSMESA_GLGETFENCEIVNV }, { "glGetFinalCombinerInputParameterfvNV", NFOSMESA_GLGETFINALCOMBINERINPUTPARAMETERFVNV }, { "glGetFinalCombinerInputParameterivNV", NFOSMESA_GLGETFINALCOMBINERINPUTPARAMETERIVNV }, { "glGetFirstPerfQueryIdINTEL", NFOSMESA_GLGETFIRSTPERFQUERYIDINTEL }, { "glGetFixedvOES", NFOSMESA_GLGETFIXEDVOES }, { "glGetFloatIndexedvEXT", NFOSMESA_GLGETFLOATINDEXEDVEXT }, { "glGetFloati_v", NFOSMESA_GLGETFLOATI_V }, { "glGetFloati_vEXT", NFOSMESA_GLGETFLOATI_VEXT }, { "glGetFloatv", NFOSMESA_GLGETFLOATV }, { "glGetFogFuncSGIS", NFOSMESA_GLGETFOGFUNCSGIS }, { "glGetFragDataIndex", NFOSMESA_GLGETFRAGDATAINDEX }, { "glGetFragDataLocation", NFOSMESA_GLGETFRAGDATALOCATION }, { "glGetFragDataLocationEXT", NFOSMESA_GLGETFRAGDATALOCATIONEXT }, { "glGetFragmentLightfvSGIX", NFOSMESA_GLGETFRAGMENTLIGHTFVSGIX }, { "glGetFragmentLightivSGIX", NFOSMESA_GLGETFRAGMENTLIGHTIVSGIX }, { "glGetFragmentMaterialfvSGIX", NFOSMESA_GLGETFRAGMENTMATERIALFVSGIX }, { "glGetFragmentMaterialivSGIX", NFOSMESA_GLGETFRAGMENTMATERIALIVSGIX }, { "glGetFramebufferAttachmentParameteriv", NFOSMESA_GLGETFRAMEBUFFERATTACHMENTPARAMETERIV }, { "glGetFramebufferAttachmentParameterivEXT", NFOSMESA_GLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXT }, { "glGetFramebufferParameterfvAMD", NFOSMESA_GLGETFRAMEBUFFERPARAMETERFVAMD }, { "glGetFramebufferParameteriv", NFOSMESA_GLGETFRAMEBUFFERPARAMETERIV }, { "glGetFramebufferParameterivEXT", NFOSMESA_GLGETFRAMEBUFFERPARAMETERIVEXT }, { "glGetGraphicsResetStatus", NFOSMESA_GLGETGRAPHICSRESETSTATUS }, { "glGetGraphicsResetStatusARB", NFOSMESA_GLGETGRAPHICSRESETSTATUSARB }, { "glGetHandleARB", NFOSMESA_GLGETHANDLEARB }, { "glGetHistogram", NFOSMESA_GLGETHISTOGRAM }, { "glGetHistogramEXT", NFOSMESA_GLGETHISTOGRAMEXT }, { "glGetHistogramParameterfv", NFOSMESA_GLGETHISTOGRAMPARAMETERFV }, { "glGetHistogramParameterfvEXT", NFOSMESA_GLGETHISTOGRAMPARAMETERFVEXT }, { "glGetHistogramParameteriv", NFOSMESA_GLGETHISTOGRAMPARAMETERIV }, { "glGetHistogramParameterivEXT", NFOSMESA_GLGETHISTOGRAMPARAMETERIVEXT }, { "glGetHistogramParameterxvOES", NFOSMESA_GLGETHISTOGRAMPARAMETERXVOES }, { "glGetImageHandleARB", NFOSMESA_GLGETIMAGEHANDLEARB }, { "glGetImageHandleNV", NFOSMESA_GLGETIMAGEHANDLENV }, { "glGetImageTransformParameterfvHP", NFOSMESA_GLGETIMAGETRANSFORMPARAMETERFVHP }, { "glGetImageTransformParameterivHP", NFOSMESA_GLGETIMAGETRANSFORMPARAMETERIVHP }, { "glGetInfoLogARB", NFOSMESA_GLGETINFOLOGARB }, { "glGetInstrumentsSGIX", NFOSMESA_GLGETINSTRUMENTSSGIX }, { "glGetInteger64i_v", NFOSMESA_GLGETINTEGER64I_V }, { "glGetInteger64v", NFOSMESA_GLGETINTEGER64V }, { "glGetIntegerIndexedvEXT", NFOSMESA_GLGETINTEGERINDEXEDVEXT }, { "glGetIntegeri_v", NFOSMESA_GLGETINTEGERI_V }, { "glGetIntegerui64i_vNV", NFOSMESA_GLGETINTEGERUI64I_VNV }, { "glGetIntegerui64vNV", NFOSMESA_GLGETINTEGERUI64VNV }, { "glGetIntegerv", NFOSMESA_GLGETINTEGERV }, { "glGetInternalformatSampleivNV", NFOSMESA_GLGETINTERNALFORMATSAMPLEIVNV }, { "glGetInternalformati64v", NFOSMESA_GLGETINTERNALFORMATI64V }, { "glGetInternalformativ", NFOSMESA_GLGETINTERNALFORMATIV }, { "glGetInvariantBooleanvEXT", NFOSMESA_GLGETINVARIANTBOOLEANVEXT }, { "glGetInvariantFloatvEXT", NFOSMESA_GLGETINVARIANTFLOATVEXT }, { "glGetInvariantIntegervEXT", NFOSMESA_GLGETINVARIANTINTEGERVEXT }, { "glGetLightfv", NFOSMESA_GLGETLIGHTFV }, { "glGetLightiv", NFOSMESA_GLGETLIGHTIV }, { "glGetLightxOES", NFOSMESA_GLGETLIGHTXOES }, { "glGetListParameterfvSGIX", NFOSMESA_GLGETLISTPARAMETERFVSGIX }, { "glGetListParameterivSGIX", NFOSMESA_GLGETLISTPARAMETERIVSGIX }, { "glGetLocalConstantBooleanvEXT", NFOSMESA_GLGETLOCALCONSTANTBOOLEANVEXT }, { "glGetLocalConstantFloatvEXT", NFOSMESA_GLGETLOCALCONSTANTFLOATVEXT }, { "glGetLocalConstantIntegervEXT", NFOSMESA_GLGETLOCALCONSTANTINTEGERVEXT }, { "glGetMapAttribParameterfvNV", NFOSMESA_GLGETMAPATTRIBPARAMETERFVNV }, { "glGetMapAttribParameterivNV", NFOSMESA_GLGETMAPATTRIBPARAMETERIVNV }, { "glGetMapControlPointsNV", NFOSMESA_GLGETMAPCONTROLPOINTSNV }, { "glGetMapParameterfvNV", NFOSMESA_GLGETMAPPARAMETERFVNV }, { "glGetMapParameterivNV", NFOSMESA_GLGETMAPPARAMETERIVNV }, { "glGetMapdv", NFOSMESA_GLGETMAPDV }, { "glGetMapfv", NFOSMESA_GLGETMAPFV }, { "glGetMapiv", NFOSMESA_GLGETMAPIV }, { "glGetMapxvOES", NFOSMESA_GLGETMAPXVOES }, { "glGetMaterialfv", NFOSMESA_GLGETMATERIALFV }, { "glGetMaterialiv", NFOSMESA_GLGETMATERIALIV }, { "glGetMaterialxOES", NFOSMESA_GLGETMATERIALXOES }, { "glGetMemoryObjectParameterivEXT", NFOSMESA_GLGETMEMORYOBJECTPARAMETERIVEXT }, { "glGetMinmax", NFOSMESA_GLGETMINMAX }, { "glGetMinmaxEXT", NFOSMESA_GLGETMINMAXEXT }, { "glGetMinmaxParameterfv", NFOSMESA_GLGETMINMAXPARAMETERFV }, { "glGetMinmaxParameterfvEXT", NFOSMESA_GLGETMINMAXPARAMETERFVEXT }, { "glGetMinmaxParameteriv", NFOSMESA_GLGETMINMAXPARAMETERIV }, { "glGetMinmaxParameterivEXT", NFOSMESA_GLGETMINMAXPARAMETERIVEXT }, { "glGetMultiTexEnvfvEXT", NFOSMESA_GLGETMULTITEXENVFVEXT }, { "glGetMultiTexEnvivEXT", NFOSMESA_GLGETMULTITEXENVIVEXT }, { "glGetMultiTexGendvEXT", NFOSMESA_GLGETMULTITEXGENDVEXT }, { "glGetMultiTexGenfvEXT", NFOSMESA_GLGETMULTITEXGENFVEXT }, { "glGetMultiTexGenivEXT", NFOSMESA_GLGETMULTITEXGENIVEXT }, { "glGetMultiTexImageEXT", NFOSMESA_GLGETMULTITEXIMAGEEXT }, { "glGetMultiTexLevelParameterfvEXT", NFOSMESA_GLGETMULTITEXLEVELPARAMETERFVEXT }, { "glGetMultiTexLevelParameterivEXT", NFOSMESA_GLGETMULTITEXLEVELPARAMETERIVEXT }, { "glGetMultiTexParameterIivEXT", NFOSMESA_GLGETMULTITEXPARAMETERIIVEXT }, { "glGetMultiTexParameterIuivEXT", NFOSMESA_GLGETMULTITEXPARAMETERIUIVEXT }, { "glGetMultiTexParameterfvEXT", NFOSMESA_GLGETMULTITEXPARAMETERFVEXT }, { "glGetMultiTexParameterivEXT", NFOSMESA_GLGETMULTITEXPARAMETERIVEXT }, { "glGetMultisamplefv", NFOSMESA_GLGETMULTISAMPLEFV }, { "glGetMultisamplefvNV", NFOSMESA_GLGETMULTISAMPLEFVNV }, { "glGetNamedBufferParameteri64v", NFOSMESA_GLGETNAMEDBUFFERPARAMETERI64V }, { "glGetNamedBufferParameteriv", NFOSMESA_GLGETNAMEDBUFFERPARAMETERIV }, { "glGetNamedBufferParameterivEXT", NFOSMESA_GLGETNAMEDBUFFERPARAMETERIVEXT }, { "glGetNamedBufferParameterui64vNV", NFOSMESA_GLGETNAMEDBUFFERPARAMETERUI64VNV }, { "glGetNamedBufferPointerv", NFOSMESA_GLGETNAMEDBUFFERPOINTERV }, { "glGetNamedBufferPointervEXT", NFOSMESA_GLGETNAMEDBUFFERPOINTERVEXT }, { "glGetNamedBufferSubData", NFOSMESA_GLGETNAMEDBUFFERSUBDATA }, { "glGetNamedBufferSubDataEXT", NFOSMESA_GLGETNAMEDBUFFERSUBDATAEXT }, { "glGetNamedFramebufferAttachmentParameteriv", NFOSMESA_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV }, { "glGetNamedFramebufferAttachmentParameterivEXT", NFOSMESA_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT }, { "glGetNamedFramebufferParameterfvAMD", NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERFVAMD }, { "glGetNamedFramebufferParameteriv", NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERIV }, { "glGetNamedFramebufferParameterivEXT", NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERIVEXT }, { "glGetNamedProgramLocalParameterIivEXT", NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERIIVEXT }, { "glGetNamedProgramLocalParameterIuivEXT", NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXT }, { "glGetNamedProgramLocalParameterdvEXT", NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERDVEXT }, { "glGetNamedProgramLocalParameterfvEXT", NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERFVEXT }, { "glGetNamedProgramStringEXT", NFOSMESA_GLGETNAMEDPROGRAMSTRINGEXT }, { "glGetNamedProgramivEXT", NFOSMESA_GLGETNAMEDPROGRAMIVEXT }, { "glGetNamedRenderbufferParameteriv", NFOSMESA_GLGETNAMEDRENDERBUFFERPARAMETERIV }, { "glGetNamedRenderbufferParameterivEXT", NFOSMESA_GLGETNAMEDRENDERBUFFERPARAMETERIVEXT }, { "glGetNamedStringARB", NFOSMESA_GLGETNAMEDSTRINGARB }, { "glGetNamedStringivARB", NFOSMESA_GLGETNAMEDSTRINGIVARB }, { "glGetNextPerfQueryIdINTEL", NFOSMESA_GLGETNEXTPERFQUERYIDINTEL }, { "glGetObjectBufferfvATI", NFOSMESA_GLGETOBJECTBUFFERFVATI }, { "glGetObjectBufferivATI", NFOSMESA_GLGETOBJECTBUFFERIVATI }, { "glGetObjectLabel", NFOSMESA_GLGETOBJECTLABEL }, { "glGetObjectLabelEXT", NFOSMESA_GLGETOBJECTLABELEXT }, { "glGetObjectParameterfvARB", NFOSMESA_GLGETOBJECTPARAMETERFVARB }, { "glGetObjectParameterivAPPLE", NFOSMESA_GLGETOBJECTPARAMETERIVAPPLE }, { "glGetObjectParameterivARB", NFOSMESA_GLGETOBJECTPARAMETERIVARB }, { "glGetObjectPtrLabel", NFOSMESA_GLGETOBJECTPTRLABEL }, { "glGetOcclusionQueryivNV", NFOSMESA_GLGETOCCLUSIONQUERYIVNV }, { "glGetOcclusionQueryuivNV", NFOSMESA_GLGETOCCLUSIONQUERYUIVNV }, { "glGetPathColorGenfvNV", NFOSMESA_GLGETPATHCOLORGENFVNV }, { "glGetPathColorGenivNV", NFOSMESA_GLGETPATHCOLORGENIVNV }, { "glGetPathCommandsNV", NFOSMESA_GLGETPATHCOMMANDSNV }, { "glGetPathCoordsNV", NFOSMESA_GLGETPATHCOORDSNV }, { "glGetPathDashArrayNV", NFOSMESA_GLGETPATHDASHARRAYNV }, { "glGetPathLengthNV", NFOSMESA_GLGETPATHLENGTHNV }, { "glGetPathMetricRangeNV", NFOSMESA_GLGETPATHMETRICRANGENV }, { "glGetPathMetricsNV", NFOSMESA_GLGETPATHMETRICSNV }, { "glGetPathParameterfvNV", NFOSMESA_GLGETPATHPARAMETERFVNV }, { "glGetPathParameterivNV", NFOSMESA_GLGETPATHPARAMETERIVNV }, { "glGetPathSpacingNV", NFOSMESA_GLGETPATHSPACINGNV }, { "glGetPathTexGenfvNV", NFOSMESA_GLGETPATHTEXGENFVNV }, { "glGetPathTexGenivNV", NFOSMESA_GLGETPATHTEXGENIVNV }, { "glGetPerfCounterInfoINTEL", NFOSMESA_GLGETPERFCOUNTERINFOINTEL }, { "glGetPerfMonitorCounterDataAMD", NFOSMESA_GLGETPERFMONITORCOUNTERDATAAMD }, { "glGetPerfMonitorCounterInfoAMD", NFOSMESA_GLGETPERFMONITORCOUNTERINFOAMD }, { "glGetPerfMonitorCounterStringAMD", NFOSMESA_GLGETPERFMONITORCOUNTERSTRINGAMD }, { "glGetPerfMonitorCountersAMD", NFOSMESA_GLGETPERFMONITORCOUNTERSAMD }, { "glGetPerfMonitorGroupStringAMD", NFOSMESA_GLGETPERFMONITORGROUPSTRINGAMD }, { "glGetPerfMonitorGroupsAMD", NFOSMESA_GLGETPERFMONITORGROUPSAMD }, { "glGetPerfQueryDataINTEL", NFOSMESA_GLGETPERFQUERYDATAINTEL }, { "glGetPerfQueryIdByNameINTEL", NFOSMESA_GLGETPERFQUERYIDBYNAMEINTEL }, { "glGetPerfQueryInfoINTEL", NFOSMESA_GLGETPERFQUERYINFOINTEL }, { "glGetPixelMapfv", NFOSMESA_GLGETPIXELMAPFV }, { "glGetPixelMapuiv", NFOSMESA_GLGETPIXELMAPUIV }, { "glGetPixelMapusv", NFOSMESA_GLGETPIXELMAPUSV }, { "glGetPixelMapxv", NFOSMESA_GLGETPIXELMAPXV }, { "glGetPixelTexGenParameterfvSGIS", NFOSMESA_GLGETPIXELTEXGENPARAMETERFVSGIS }, { "glGetPixelTexGenParameterivSGIS", NFOSMESA_GLGETPIXELTEXGENPARAMETERIVSGIS }, { "glGetPixelTransformParameterfvEXT", NFOSMESA_GLGETPIXELTRANSFORMPARAMETERFVEXT }, { "glGetPixelTransformParameterivEXT", NFOSMESA_GLGETPIXELTRANSFORMPARAMETERIVEXT }, { "glGetPointerIndexedvEXT", NFOSMESA_GLGETPOINTERINDEXEDVEXT }, { "glGetPointeri_vEXT", NFOSMESA_GLGETPOINTERI_VEXT }, { "glGetPointerv", NFOSMESA_GLGETPOINTERV }, { "glGetPointervEXT", NFOSMESA_GLGETPOINTERVEXT }, { "glGetPolygonStipple", NFOSMESA_GLGETPOLYGONSTIPPLE }, { "glGetProgramBinary", NFOSMESA_GLGETPROGRAMBINARY }, { "glGetProgramEnvParameterIivNV", NFOSMESA_GLGETPROGRAMENVPARAMETERIIVNV }, { "glGetProgramEnvParameterIuivNV", NFOSMESA_GLGETPROGRAMENVPARAMETERIUIVNV }, { "glGetProgramEnvParameterdvARB", NFOSMESA_GLGETPROGRAMENVPARAMETERDVARB }, { "glGetProgramEnvParameterfvARB", NFOSMESA_GLGETPROGRAMENVPARAMETERFVARB }, { "glGetProgramInfoLog", NFOSMESA_GLGETPROGRAMINFOLOG }, { "glGetProgramInterfaceiv", NFOSMESA_GLGETPROGRAMINTERFACEIV }, { "glGetProgramLocalParameterIivNV", NFOSMESA_GLGETPROGRAMLOCALPARAMETERIIVNV }, { "glGetProgramLocalParameterIuivNV", NFOSMESA_GLGETPROGRAMLOCALPARAMETERIUIVNV }, { "glGetProgramLocalParameterdvARB", NFOSMESA_GLGETPROGRAMLOCALPARAMETERDVARB }, { "glGetProgramLocalParameterfvARB", NFOSMESA_GLGETPROGRAMLOCALPARAMETERFVARB }, { "glGetProgramNamedParameterdvNV", NFOSMESA_GLGETPROGRAMNAMEDPARAMETERDVNV }, { "glGetProgramNamedParameterfvNV", NFOSMESA_GLGETPROGRAMNAMEDPARAMETERFVNV }, { "glGetProgramParameterdvNV", NFOSMESA_GLGETPROGRAMPARAMETERDVNV }, { "glGetProgramParameterfvNV", NFOSMESA_GLGETPROGRAMPARAMETERFVNV }, { "glGetProgramPipelineInfoLog", NFOSMESA_GLGETPROGRAMPIPELINEINFOLOG }, { "glGetProgramPipelineiv", NFOSMESA_GLGETPROGRAMPIPELINEIV }, { "glGetProgramRegisterfvMESA", NFOSMESA_GLGETPROGRAMREGISTERFVMESA }, { "glGetProgramResourceIndex", NFOSMESA_GLGETPROGRAMRESOURCEINDEX }, { "glGetProgramResourceLocation", NFOSMESA_GLGETPROGRAMRESOURCELOCATION }, { "glGetProgramResourceLocationIndex", NFOSMESA_GLGETPROGRAMRESOURCELOCATIONINDEX }, { "glGetProgramResourceName", NFOSMESA_GLGETPROGRAMRESOURCENAME }, { "glGetProgramResourcefvNV", NFOSMESA_GLGETPROGRAMRESOURCEFVNV }, { "glGetProgramResourceiv", NFOSMESA_GLGETPROGRAMRESOURCEIV }, { "glGetProgramStageiv", NFOSMESA_GLGETPROGRAMSTAGEIV }, { "glGetProgramStringARB", NFOSMESA_GLGETPROGRAMSTRINGARB }, { "glGetProgramStringNV", NFOSMESA_GLGETPROGRAMSTRINGNV }, { "glGetProgramSubroutineParameteruivNV", NFOSMESA_GLGETPROGRAMSUBROUTINEPARAMETERUIVNV }, { "glGetProgramiv", NFOSMESA_GLGETPROGRAMIV }, { "glGetProgramivARB", NFOSMESA_GLGETPROGRAMIVARB }, { "glGetProgramivNV", NFOSMESA_GLGETPROGRAMIVNV }, { "glGetQueryBufferObjecti64v", NFOSMESA_GLGETQUERYBUFFEROBJECTI64V }, { "glGetQueryBufferObjectiv", NFOSMESA_GLGETQUERYBUFFEROBJECTIV }, { "glGetQueryBufferObjectui64v", NFOSMESA_GLGETQUERYBUFFEROBJECTUI64V }, { "glGetQueryBufferObjectuiv", NFOSMESA_GLGETQUERYBUFFEROBJECTUIV }, { "glGetQueryIndexediv", NFOSMESA_GLGETQUERYINDEXEDIV }, { "glGetQueryObjecti64v", NFOSMESA_GLGETQUERYOBJECTI64V }, { "glGetQueryObjecti64vEXT", NFOSMESA_GLGETQUERYOBJECTI64VEXT }, { "glGetQueryObjectiv", NFOSMESA_GLGETQUERYOBJECTIV }, { "glGetQueryObjectivARB", NFOSMESA_GLGETQUERYOBJECTIVARB }, { "glGetQueryObjectui64v", NFOSMESA_GLGETQUERYOBJECTUI64V }, { "glGetQueryObjectui64vEXT", NFOSMESA_GLGETQUERYOBJECTUI64VEXT }, { "glGetQueryObjectuiv", NFOSMESA_GLGETQUERYOBJECTUIV }, { "glGetQueryObjectuivARB", NFOSMESA_GLGETQUERYOBJECTUIVARB }, { "glGetQueryiv", NFOSMESA_GLGETQUERYIV }, { "glGetQueryivARB", NFOSMESA_GLGETQUERYIVARB }, { "glGetRenderbufferParameteriv", NFOSMESA_GLGETRENDERBUFFERPARAMETERIV }, { "glGetRenderbufferParameterivEXT", NFOSMESA_GLGETRENDERBUFFERPARAMETERIVEXT }, { "glGetSamplerParameterIiv", NFOSMESA_GLGETSAMPLERPARAMETERIIV }, { "glGetSamplerParameterIuiv", NFOSMESA_GLGETSAMPLERPARAMETERIUIV }, { "glGetSamplerParameterfv", NFOSMESA_GLGETSAMPLERPARAMETERFV }, { "glGetSamplerParameteriv", NFOSMESA_GLGETSAMPLERPARAMETERIV }, { "glGetSemaphoreParameterui64vEXT", NFOSMESA_GLGETSEMAPHOREPARAMETERUI64VEXT }, { "glGetSeparableFilter", NFOSMESA_GLGETSEPARABLEFILTER }, { "glGetSeparableFilterEXT", NFOSMESA_GLGETSEPARABLEFILTEREXT }, { "glGetShaderInfoLog", NFOSMESA_GLGETSHADERINFOLOG }, { "glGetShaderPrecisionFormat", NFOSMESA_GLGETSHADERPRECISIONFORMAT }, { "glGetShaderSource", NFOSMESA_GLGETSHADERSOURCE }, { "glGetShaderSourceARB", NFOSMESA_GLGETSHADERSOURCEARB }, { "glGetShaderiv", NFOSMESA_GLGETSHADERIV }, { "glGetSharpenTexFuncSGIS", NFOSMESA_GLGETSHARPENTEXFUNCSGIS }, { "glGetStageIndexNV", NFOSMESA_GLGETSTAGEINDEXNV }, { "glGetString", NFOSMESA_LENGLGETSTRING }, { "glGetStringi", NFOSMESA_LENGLGETSTRINGI }, { "glGetSubroutineIndex", NFOSMESA_GLGETSUBROUTINEINDEX }, { "glGetSubroutineUniformLocation", NFOSMESA_GLGETSUBROUTINEUNIFORMLOCATION }, { "glGetSynciv", NFOSMESA_GLGETSYNCIV }, { "glGetTexBumpParameterfvATI", NFOSMESA_GLGETTEXBUMPPARAMETERFVATI }, { "glGetTexBumpParameterivATI", NFOSMESA_GLGETTEXBUMPPARAMETERIVATI }, { "glGetTexEnvfv", NFOSMESA_GLGETTEXENVFV }, { "glGetTexEnviv", NFOSMESA_GLGETTEXENVIV }, { "glGetTexEnvxvOES", NFOSMESA_GLGETTEXENVXVOES }, { "glGetTexFilterFuncSGIS", NFOSMESA_GLGETTEXFILTERFUNCSGIS }, { "glGetTexGendv", NFOSMESA_GLGETTEXGENDV }, { "glGetTexGenfv", NFOSMESA_GLGETTEXGENFV }, { "glGetTexGeniv", NFOSMESA_GLGETTEXGENIV }, { "glGetTexGenxvOES", NFOSMESA_GLGETTEXGENXVOES }, { "glGetTexImage", NFOSMESA_GLGETTEXIMAGE }, { "glGetTexLevelParameterfv", NFOSMESA_GLGETTEXLEVELPARAMETERFV }, { "glGetTexLevelParameteriv", NFOSMESA_GLGETTEXLEVELPARAMETERIV }, { "glGetTexLevelParameterxvOES", NFOSMESA_GLGETTEXLEVELPARAMETERXVOES }, { "glGetTexParameterIiv", NFOSMESA_GLGETTEXPARAMETERIIV }, { "glGetTexParameterIivEXT", NFOSMESA_GLGETTEXPARAMETERIIVEXT }, { "glGetTexParameterIuiv", NFOSMESA_GLGETTEXPARAMETERIUIV }, { "glGetTexParameterIuivEXT", NFOSMESA_GLGETTEXPARAMETERIUIVEXT }, { "glGetTexParameterPointervAPPLE", NFOSMESA_GLGETTEXPARAMETERPOINTERVAPPLE }, { "glGetTexParameterfv", NFOSMESA_GLGETTEXPARAMETERFV }, { "glGetTexParameteriv", NFOSMESA_GLGETTEXPARAMETERIV }, { "glGetTexParameterxvOES", NFOSMESA_GLGETTEXPARAMETERXVOES }, { "glGetTextureHandleARB", NFOSMESA_GLGETTEXTUREHANDLEARB }, { "glGetTextureHandleNV", NFOSMESA_GLGETTEXTUREHANDLENV }, { "glGetTextureImage", NFOSMESA_GLGETTEXTUREIMAGE }, { "glGetTextureImageEXT", NFOSMESA_GLGETTEXTUREIMAGEEXT }, { "glGetTextureLevelParameterfv", NFOSMESA_GLGETTEXTURELEVELPARAMETERFV }, { "glGetTextureLevelParameterfvEXT", NFOSMESA_GLGETTEXTURELEVELPARAMETERFVEXT }, { "glGetTextureLevelParameteriv", NFOSMESA_GLGETTEXTURELEVELPARAMETERIV }, { "glGetTextureLevelParameterivEXT", NFOSMESA_GLGETTEXTURELEVELPARAMETERIVEXT }, { "glGetTextureParameterIiv", NFOSMESA_GLGETTEXTUREPARAMETERIIV }, { "glGetTextureParameterIivEXT", NFOSMESA_GLGETTEXTUREPARAMETERIIVEXT }, { "glGetTextureParameterIuiv", NFOSMESA_GLGETTEXTUREPARAMETERIUIV }, { "glGetTextureParameterIuivEXT", NFOSMESA_GLGETTEXTUREPARAMETERIUIVEXT }, { "glGetTextureParameterfv", NFOSMESA_GLGETTEXTUREPARAMETERFV }, { "glGetTextureParameterfvEXT", NFOSMESA_GLGETTEXTUREPARAMETERFVEXT }, { "glGetTextureParameteriv", NFOSMESA_GLGETTEXTUREPARAMETERIV }, { "glGetTextureParameterivEXT", NFOSMESA_GLGETTEXTUREPARAMETERIVEXT }, { "glGetTextureSamplerHandleARB", NFOSMESA_GLGETTEXTURESAMPLERHANDLEARB }, { "glGetTextureSamplerHandleNV", NFOSMESA_GLGETTEXTURESAMPLERHANDLENV }, { "glGetTextureSubImage", NFOSMESA_GLGETTEXTURESUBIMAGE }, { "glGetTrackMatrixivNV", NFOSMESA_GLGETTRACKMATRIXIVNV }, { "glGetTransformFeedbackVarying", NFOSMESA_GLGETTRANSFORMFEEDBACKVARYING }, { "glGetTransformFeedbackVaryingEXT", NFOSMESA_GLGETTRANSFORMFEEDBACKVARYINGEXT }, { "glGetTransformFeedbackVaryingNV", NFOSMESA_GLGETTRANSFORMFEEDBACKVARYINGNV }, { "glGetTransformFeedbacki64_v", NFOSMESA_GLGETTRANSFORMFEEDBACKI64_V }, { "glGetTransformFeedbacki_v", NFOSMESA_GLGETTRANSFORMFEEDBACKI_V }, { "glGetTransformFeedbackiv", NFOSMESA_GLGETTRANSFORMFEEDBACKIV }, { "glGetUniformBlockIndex", NFOSMESA_GLGETUNIFORMBLOCKINDEX }, { "glGetUniformBufferSizeEXT", NFOSMESA_GLGETUNIFORMBUFFERSIZEEXT }, { "glGetUniformIndices", NFOSMESA_GLGETUNIFORMINDICES }, { "glGetUniformLocation", NFOSMESA_GLGETUNIFORMLOCATION }, { "glGetUniformLocationARB", NFOSMESA_GLGETUNIFORMLOCATIONARB }, { "glGetUniformOffsetEXT", NFOSMESA_GLGETUNIFORMOFFSETEXT }, { "glGetUniformSubroutineuiv", NFOSMESA_GLGETUNIFORMSUBROUTINEUIV }, { "glGetUniformdv", NFOSMESA_GLGETUNIFORMDV }, { "glGetUniformfv", NFOSMESA_GLGETUNIFORMFV }, { "glGetUniformfvARB", NFOSMESA_GLGETUNIFORMFVARB }, { "glGetUniformi64vARB", NFOSMESA_GLGETUNIFORMI64VARB }, { "glGetUniformi64vNV", NFOSMESA_GLGETUNIFORMI64VNV }, { "glGetUniformiv", NFOSMESA_GLGETUNIFORMIV }, { "glGetUniformivARB", NFOSMESA_GLGETUNIFORMIVARB }, { "glGetUniformui64vARB", NFOSMESA_GLGETUNIFORMUI64VARB }, { "glGetUniformui64vNV", NFOSMESA_GLGETUNIFORMUI64VNV }, { "glGetUniformuiv", NFOSMESA_GLGETUNIFORMUIV }, { "glGetUniformuivEXT", NFOSMESA_GLGETUNIFORMUIVEXT }, { "glGetUnsignedBytei_vEXT", NFOSMESA_GLGETUNSIGNEDBYTEI_VEXT }, { "glGetUnsignedBytevEXT", NFOSMESA_GLGETUNSIGNEDBYTEVEXT }, { "glGetVariantArrayObjectfvATI", NFOSMESA_GLGETVARIANTARRAYOBJECTFVATI }, { "glGetVariantArrayObjectivATI", NFOSMESA_GLGETVARIANTARRAYOBJECTIVATI }, { "glGetVariantBooleanvEXT", NFOSMESA_GLGETVARIANTBOOLEANVEXT }, { "glGetVariantFloatvEXT", NFOSMESA_GLGETVARIANTFLOATVEXT }, { "glGetVariantIntegervEXT", NFOSMESA_GLGETVARIANTINTEGERVEXT }, { "glGetVariantPointervEXT", NFOSMESA_GLGETVARIANTPOINTERVEXT }, { "glGetVaryingLocationNV", NFOSMESA_GLGETVARYINGLOCATIONNV }, { "glGetVertexArrayIndexed64iv", NFOSMESA_GLGETVERTEXARRAYINDEXED64IV }, { "glGetVertexArrayIndexediv", NFOSMESA_GLGETVERTEXARRAYINDEXEDIV }, { "glGetVertexArrayIntegeri_vEXT", NFOSMESA_GLGETVERTEXARRAYINTEGERI_VEXT }, { "glGetVertexArrayIntegervEXT", NFOSMESA_GLGETVERTEXARRAYINTEGERVEXT }, { "glGetVertexArrayPointeri_vEXT", NFOSMESA_GLGETVERTEXARRAYPOINTERI_VEXT }, { "glGetVertexArrayPointervEXT", NFOSMESA_GLGETVERTEXARRAYPOINTERVEXT }, { "glGetVertexArrayiv", NFOSMESA_GLGETVERTEXARRAYIV }, { "glGetVertexAttribArrayObjectfvATI", NFOSMESA_GLGETVERTEXATTRIBARRAYOBJECTFVATI }, { "glGetVertexAttribArrayObjectivATI", NFOSMESA_GLGETVERTEXATTRIBARRAYOBJECTIVATI }, { "glGetVertexAttribIiv", NFOSMESA_GLGETVERTEXATTRIBIIV }, { "glGetVertexAttribIivEXT", NFOSMESA_GLGETVERTEXATTRIBIIVEXT }, { "glGetVertexAttribIuiv", NFOSMESA_GLGETVERTEXATTRIBIUIV }, { "glGetVertexAttribIuivEXT", NFOSMESA_GLGETVERTEXATTRIBIUIVEXT }, { "glGetVertexAttribLdv", NFOSMESA_GLGETVERTEXATTRIBLDV }, { "glGetVertexAttribLdvEXT", NFOSMESA_GLGETVERTEXATTRIBLDVEXT }, { "glGetVertexAttribLi64vNV", NFOSMESA_GLGETVERTEXATTRIBLI64VNV }, { "glGetVertexAttribLui64vARB", NFOSMESA_GLGETVERTEXATTRIBLUI64VARB }, { "glGetVertexAttribLui64vNV", NFOSMESA_GLGETVERTEXATTRIBLUI64VNV }, { "glGetVertexAttribPointerv", NFOSMESA_GLGETVERTEXATTRIBPOINTERV }, { "glGetVertexAttribPointervARB", NFOSMESA_GLGETVERTEXATTRIBPOINTERVARB }, { "glGetVertexAttribPointervNV", NFOSMESA_GLGETVERTEXATTRIBPOINTERVNV }, { "glGetVertexAttribdv", NFOSMESA_GLGETVERTEXATTRIBDV }, { "glGetVertexAttribdvARB", NFOSMESA_GLGETVERTEXATTRIBDVARB }, { "glGetVertexAttribdvNV", NFOSMESA_GLGETVERTEXATTRIBDVNV }, { "glGetVertexAttribfv", NFOSMESA_GLGETVERTEXATTRIBFV }, { "glGetVertexAttribfvARB", NFOSMESA_GLGETVERTEXATTRIBFVARB }, { "glGetVertexAttribfvNV", NFOSMESA_GLGETVERTEXATTRIBFVNV }, { "glGetVertexAttribiv", NFOSMESA_GLGETVERTEXATTRIBIV }, { "glGetVertexAttribivARB", NFOSMESA_GLGETVERTEXATTRIBIVARB }, { "glGetVertexAttribivNV", NFOSMESA_GLGETVERTEXATTRIBIVNV }, { "glGetVideoCaptureStreamdvNV", NFOSMESA_GLGETVIDEOCAPTURESTREAMDVNV }, { "glGetVideoCaptureStreamfvNV", NFOSMESA_GLGETVIDEOCAPTURESTREAMFVNV }, { "glGetVideoCaptureStreamivNV", NFOSMESA_GLGETVIDEOCAPTURESTREAMIVNV }, { "glGetVideoCaptureivNV", NFOSMESA_GLGETVIDEOCAPTUREIVNV }, { "glGetVideoi64vNV", NFOSMESA_GLGETVIDEOI64VNV }, { "glGetVideoivNV", NFOSMESA_GLGETVIDEOIVNV }, { "glGetVideoui64vNV", NFOSMESA_GLGETVIDEOUI64VNV }, { "glGetVideouivNV", NFOSMESA_GLGETVIDEOUIVNV }, { "glGetVkProcAddrNV", NFOSMESA_GLGETVKPROCADDRNV }, { "glGetnColorTable", NFOSMESA_GLGETNCOLORTABLE }, { "glGetnColorTableARB", NFOSMESA_GLGETNCOLORTABLEARB }, { "glGetnCompressedTexImage", NFOSMESA_GLGETNCOMPRESSEDTEXIMAGE }, { "glGetnCompressedTexImageARB", NFOSMESA_GLGETNCOMPRESSEDTEXIMAGEARB }, { "glGetnConvolutionFilter", NFOSMESA_GLGETNCONVOLUTIONFILTER }, { "glGetnConvolutionFilterARB", NFOSMESA_GLGETNCONVOLUTIONFILTERARB }, { "glGetnHistogram", NFOSMESA_GLGETNHISTOGRAM }, { "glGetnHistogramARB", NFOSMESA_GLGETNHISTOGRAMARB }, { "glGetnMapdv", NFOSMESA_GLGETNMAPDV }, { "glGetnMapdvARB", NFOSMESA_GLGETNMAPDVARB }, { "glGetnMapfv", NFOSMESA_GLGETNMAPFV }, { "glGetnMapfvARB", NFOSMESA_GLGETNMAPFVARB }, { "glGetnMapiv", NFOSMESA_GLGETNMAPIV }, { "glGetnMapivARB", NFOSMESA_GLGETNMAPIVARB }, { "glGetnMinmax", NFOSMESA_GLGETNMINMAX }, { "glGetnMinmaxARB", NFOSMESA_GLGETNMINMAXARB }, { "glGetnPixelMapfv", NFOSMESA_GLGETNPIXELMAPFV }, { "glGetnPixelMapfvARB", NFOSMESA_GLGETNPIXELMAPFVARB }, { "glGetnPixelMapuiv", NFOSMESA_GLGETNPIXELMAPUIV }, { "glGetnPixelMapuivARB", NFOSMESA_GLGETNPIXELMAPUIVARB }, { "glGetnPixelMapusv", NFOSMESA_GLGETNPIXELMAPUSV }, { "glGetnPixelMapusvARB", NFOSMESA_GLGETNPIXELMAPUSVARB }, { "glGetnPolygonStipple", NFOSMESA_GLGETNPOLYGONSTIPPLE }, { "glGetnPolygonStippleARB", NFOSMESA_GLGETNPOLYGONSTIPPLEARB }, { "glGetnSeparableFilter", NFOSMESA_GLGETNSEPARABLEFILTER }, { "glGetnSeparableFilterARB", NFOSMESA_GLGETNSEPARABLEFILTERARB }, { "glGetnTexImage", NFOSMESA_GLGETNTEXIMAGE }, { "glGetnTexImageARB", NFOSMESA_GLGETNTEXIMAGEARB }, { "glGetnUniformdv", NFOSMESA_GLGETNUNIFORMDV }, { "glGetnUniformdvARB", NFOSMESA_GLGETNUNIFORMDVARB }, { "glGetnUniformfv", NFOSMESA_GLGETNUNIFORMFV }, { "glGetnUniformfvARB", NFOSMESA_GLGETNUNIFORMFVARB }, { "glGetnUniformi64vARB", NFOSMESA_GLGETNUNIFORMI64VARB }, { "glGetnUniformiv", NFOSMESA_GLGETNUNIFORMIV }, { "glGetnUniformivARB", NFOSMESA_GLGETNUNIFORMIVARB }, { "glGetnUniformui64vARB", NFOSMESA_GLGETNUNIFORMUI64VARB }, { "glGetnUniformuiv", NFOSMESA_GLGETNUNIFORMUIV }, { "glGetnUniformuivARB", NFOSMESA_GLGETNUNIFORMUIVARB }, { "glGlobalAlphaFactorbSUN", NFOSMESA_GLGLOBALALPHAFACTORBSUN }, { "glGlobalAlphaFactordSUN", NFOSMESA_GLGLOBALALPHAFACTORDSUN }, { "glGlobalAlphaFactorfSUN", NFOSMESA_GLGLOBALALPHAFACTORFSUN }, { "glGlobalAlphaFactoriSUN", NFOSMESA_GLGLOBALALPHAFACTORISUN }, { "glGlobalAlphaFactorsSUN", NFOSMESA_GLGLOBALALPHAFACTORSSUN }, { "glGlobalAlphaFactorubSUN", NFOSMESA_GLGLOBALALPHAFACTORUBSUN }, { "glGlobalAlphaFactoruiSUN", NFOSMESA_GLGLOBALALPHAFACTORUISUN }, { "glGlobalAlphaFactorusSUN", NFOSMESA_GLGLOBALALPHAFACTORUSSUN }, { "glHint", NFOSMESA_GLHINT }, { "glHintPGI", NFOSMESA_GLHINTPGI }, { "glHistogram", NFOSMESA_GLHISTOGRAM }, { "glHistogramEXT", NFOSMESA_GLHISTOGRAMEXT }, { "glIglooInterfaceSGIX", NFOSMESA_GLIGLOOINTERFACESGIX }, { "glImageTransformParameterfHP", NFOSMESA_GLIMAGETRANSFORMPARAMETERFHP }, { "glImageTransformParameterfvHP", NFOSMESA_GLIMAGETRANSFORMPARAMETERFVHP }, { "glImageTransformParameteriHP", NFOSMESA_GLIMAGETRANSFORMPARAMETERIHP }, { "glImageTransformParameterivHP", NFOSMESA_GLIMAGETRANSFORMPARAMETERIVHP }, { "glImportMemoryFdEXT", NFOSMESA_GLIMPORTMEMORYFDEXT }, { "glImportMemoryWin32HandleEXT", NFOSMESA_GLIMPORTMEMORYWIN32HANDLEEXT }, { "glImportMemoryWin32NameEXT", NFOSMESA_GLIMPORTMEMORYWIN32NAMEEXT }, { "glImportSemaphoreFdEXT", NFOSMESA_GLIMPORTSEMAPHOREFDEXT }, { "glImportSemaphoreWin32HandleEXT", NFOSMESA_GLIMPORTSEMAPHOREWIN32HANDLEEXT }, { "glImportSemaphoreWin32NameEXT", NFOSMESA_GLIMPORTSEMAPHOREWIN32NAMEEXT }, { "glImportSyncEXT", NFOSMESA_GLIMPORTSYNCEXT }, { "glIndexFormatNV", NFOSMESA_GLINDEXFORMATNV }, { "glIndexFuncEXT", NFOSMESA_GLINDEXFUNCEXT }, { "glIndexMask", NFOSMESA_GLINDEXMASK }, { "glIndexMaterialEXT", NFOSMESA_GLINDEXMATERIALEXT }, { "glIndexPointer", NFOSMESA_GLINDEXPOINTER }, { "glIndexPointerEXT", NFOSMESA_GLINDEXPOINTEREXT }, { "glIndexPointerListIBM", NFOSMESA_GLINDEXPOINTERLISTIBM }, { "glIndexd", NFOSMESA_GLINDEXD }, { "glIndexdv", NFOSMESA_GLINDEXDV }, { "glIndexf", NFOSMESA_GLINDEXF }, { "glIndexfv", NFOSMESA_GLINDEXFV }, { "glIndexi", NFOSMESA_GLINDEXI }, { "glIndexiv", NFOSMESA_GLINDEXIV }, { "glIndexs", NFOSMESA_GLINDEXS }, { "glIndexsv", NFOSMESA_GLINDEXSV }, { "glIndexub", NFOSMESA_GLINDEXUB }, { "glIndexubv", NFOSMESA_GLINDEXUBV }, { "glIndexxOES", NFOSMESA_GLINDEXXOES }, { "glIndexxvOES", NFOSMESA_GLINDEXXVOES }, { "glInitNames", NFOSMESA_GLINITNAMES }, { "glInsertComponentEXT", NFOSMESA_GLINSERTCOMPONENTEXT }, { "glInsertEventMarkerEXT", NFOSMESA_GLINSERTEVENTMARKEREXT }, { "glInstrumentsBufferSGIX", NFOSMESA_GLINSTRUMENTSBUFFERSGIX }, { "glInterleavedArrays", NFOSMESA_GLINTERLEAVEDARRAYS }, { "glInterpolatePathsNV", NFOSMESA_GLINTERPOLATEPATHSNV }, { "glInvalidateBufferData", NFOSMESA_GLINVALIDATEBUFFERDATA }, { "glInvalidateBufferSubData", NFOSMESA_GLINVALIDATEBUFFERSUBDATA }, { "glInvalidateFramebuffer", NFOSMESA_GLINVALIDATEFRAMEBUFFER }, { "glInvalidateNamedFramebufferData", NFOSMESA_GLINVALIDATENAMEDFRAMEBUFFERDATA }, { "glInvalidateNamedFramebufferSubData", NFOSMESA_GLINVALIDATENAMEDFRAMEBUFFERSUBDATA }, { "glInvalidateSubFramebuffer", NFOSMESA_GLINVALIDATESUBFRAMEBUFFER }, { "glInvalidateTexImage", NFOSMESA_GLINVALIDATETEXIMAGE }, { "glInvalidateTexSubImage", NFOSMESA_GLINVALIDATETEXSUBIMAGE }, { "glIsAsyncMarkerSGIX", NFOSMESA_GLISASYNCMARKERSGIX }, { "glIsBuffer", NFOSMESA_GLISBUFFER }, { "glIsBufferARB", NFOSMESA_GLISBUFFERARB }, { "glIsBufferResidentNV", NFOSMESA_GLISBUFFERRESIDENTNV }, { "glIsCommandListNV", NFOSMESA_GLISCOMMANDLISTNV }, { "glIsEnabled", NFOSMESA_GLISENABLED }, { "glIsEnabledIndexedEXT", NFOSMESA_GLISENABLEDINDEXEDEXT }, { "glIsEnabledi", NFOSMESA_GLISENABLEDI }, { "glIsFenceAPPLE", NFOSMESA_GLISFENCEAPPLE }, { "glIsFenceNV", NFOSMESA_GLISFENCENV }, { "glIsFramebuffer", NFOSMESA_GLISFRAMEBUFFER }, { "glIsFramebufferEXT", NFOSMESA_GLISFRAMEBUFFEREXT }, { "glIsImageHandleResidentARB", NFOSMESA_GLISIMAGEHANDLERESIDENTARB }, { "glIsImageHandleResidentNV", NFOSMESA_GLISIMAGEHANDLERESIDENTNV }, { "glIsList", NFOSMESA_GLISLIST }, { "glIsMemoryObjectEXT", NFOSMESA_GLISMEMORYOBJECTEXT }, { "glIsNameAMD", NFOSMESA_GLISNAMEAMD }, { "glIsNamedBufferResidentNV", NFOSMESA_GLISNAMEDBUFFERRESIDENTNV }, { "glIsNamedStringARB", NFOSMESA_GLISNAMEDSTRINGARB }, { "glIsObjectBufferATI", NFOSMESA_GLISOBJECTBUFFERATI }, { "glIsOcclusionQueryNV", NFOSMESA_GLISOCCLUSIONQUERYNV }, { "glIsPathNV", NFOSMESA_GLISPATHNV }, { "glIsPointInFillPathNV", NFOSMESA_GLISPOINTINFILLPATHNV }, { "glIsPointInStrokePathNV", NFOSMESA_GLISPOINTINSTROKEPATHNV }, { "glIsProgram", NFOSMESA_GLISPROGRAM }, { "glIsProgramARB", NFOSMESA_GLISPROGRAMARB }, { "glIsProgramNV", NFOSMESA_GLISPROGRAMNV }, { "glIsProgramPipeline", NFOSMESA_GLISPROGRAMPIPELINE }, { "glIsQuery", NFOSMESA_GLISQUERY }, { "glIsQueryARB", NFOSMESA_GLISQUERYARB }, { "glIsRenderbuffer", NFOSMESA_GLISRENDERBUFFER }, { "glIsRenderbufferEXT", NFOSMESA_GLISRENDERBUFFEREXT }, { "glIsSampler", NFOSMESA_GLISSAMPLER }, { "glIsSemaphoreEXT", NFOSMESA_GLISSEMAPHOREEXT }, { "glIsShader", NFOSMESA_GLISSHADER }, { "glIsStateNV", NFOSMESA_GLISSTATENV }, { "glIsSync", NFOSMESA_GLISSYNC }, { "glIsTexture", NFOSMESA_GLISTEXTURE }, { "glIsTextureEXT", NFOSMESA_GLISTEXTUREEXT }, { "glIsTextureHandleResidentARB", NFOSMESA_GLISTEXTUREHANDLERESIDENTARB }, { "glIsTextureHandleResidentNV", NFOSMESA_GLISTEXTUREHANDLERESIDENTNV }, { "glIsTransformFeedback", NFOSMESA_GLISTRANSFORMFEEDBACK }, { "glIsTransformFeedbackNV", NFOSMESA_GLISTRANSFORMFEEDBACKNV }, { "glIsVariantEnabledEXT", NFOSMESA_GLISVARIANTENABLEDEXT }, { "glIsVertexArray", NFOSMESA_GLISVERTEXARRAY }, { "glIsVertexArrayAPPLE", NFOSMESA_GLISVERTEXARRAYAPPLE }, { "glIsVertexAttribEnabledAPPLE", NFOSMESA_GLISVERTEXATTRIBENABLEDAPPLE }, { "glLGPUCopyImageSubDataNVX", NFOSMESA_GLLGPUCOPYIMAGESUBDATANVX }, { "glLGPUInterlockNVX", NFOSMESA_GLLGPUINTERLOCKNVX }, { "glLGPUNamedBufferSubDataNVX", NFOSMESA_GLLGPUNAMEDBUFFERSUBDATANVX }, { "glLabelObjectEXT", NFOSMESA_GLLABELOBJECTEXT }, { "glLightEnviSGIX", NFOSMESA_GLLIGHTENVISGIX }, { "glLightModelf", NFOSMESA_GLLIGHTMODELF }, { "glLightModelfv", NFOSMESA_GLLIGHTMODELFV }, { "glLightModeli", NFOSMESA_GLLIGHTMODELI }, { "glLightModeliv", NFOSMESA_GLLIGHTMODELIV }, { "glLightModelxOES", NFOSMESA_GLLIGHTMODELXOES }, { "glLightModelxvOES", NFOSMESA_GLLIGHTMODELXVOES }, { "glLightf", NFOSMESA_GLLIGHTF }, { "glLightfv", NFOSMESA_GLLIGHTFV }, { "glLighti", NFOSMESA_GLLIGHTI }, { "glLightiv", NFOSMESA_GLLIGHTIV }, { "glLightxOES", NFOSMESA_GLLIGHTXOES }, { "glLightxvOES", NFOSMESA_GLLIGHTXVOES }, { "glLineStipple", NFOSMESA_GLLINESTIPPLE }, { "glLineWidth", NFOSMESA_GLLINEWIDTH }, { "glLineWidthxOES", NFOSMESA_GLLINEWIDTHXOES }, { "glLinkProgram", NFOSMESA_GLLINKPROGRAM }, { "glLinkProgramARB", NFOSMESA_GLLINKPROGRAMARB }, { "glListBase", NFOSMESA_GLLISTBASE }, { "glListDrawCommandsStatesClientNV", NFOSMESA_GLLISTDRAWCOMMANDSSTATESCLIENTNV }, { "glListParameterfSGIX", NFOSMESA_GLLISTPARAMETERFSGIX }, { "glListParameterfvSGIX", NFOSMESA_GLLISTPARAMETERFVSGIX }, { "glListParameteriSGIX", NFOSMESA_GLLISTPARAMETERISGIX }, { "glListParameterivSGIX", NFOSMESA_GLLISTPARAMETERIVSGIX }, { "glLoadIdentity", NFOSMESA_GLLOADIDENTITY }, { "glLoadIdentityDeformationMapSGIX", NFOSMESA_GLLOADIDENTITYDEFORMATIONMAPSGIX }, { "glLoadMatrixd", NFOSMESA_GLLOADMATRIXD }, { "glLoadMatrixf", NFOSMESA_GLLOADMATRIXF }, { "glLoadMatrixxOES", NFOSMESA_GLLOADMATRIXXOES }, { "glLoadName", NFOSMESA_GLLOADNAME }, { "glLoadProgramNV", NFOSMESA_GLLOADPROGRAMNV }, { "glLoadTransposeMatrixd", NFOSMESA_GLLOADTRANSPOSEMATRIXD }, { "glLoadTransposeMatrixdARB", NFOSMESA_GLLOADTRANSPOSEMATRIXDARB }, { "glLoadTransposeMatrixf", NFOSMESA_GLLOADTRANSPOSEMATRIXF }, { "glLoadTransposeMatrixfARB", NFOSMESA_GLLOADTRANSPOSEMATRIXFARB }, { "glLoadTransposeMatrixxOES", NFOSMESA_GLLOADTRANSPOSEMATRIXXOES }, { "glLockArraysEXT", NFOSMESA_GLLOCKARRAYSEXT }, { "glLogicOp", NFOSMESA_GLLOGICOP }, { "glMakeBufferNonResidentNV", NFOSMESA_GLMAKEBUFFERNONRESIDENTNV }, { "glMakeBufferResidentNV", NFOSMESA_GLMAKEBUFFERRESIDENTNV }, { "glMakeImageHandleNonResidentARB", NFOSMESA_GLMAKEIMAGEHANDLENONRESIDENTARB }, { "glMakeImageHandleNonResidentNV", NFOSMESA_GLMAKEIMAGEHANDLENONRESIDENTNV }, { "glMakeImageHandleResidentARB", NFOSMESA_GLMAKEIMAGEHANDLERESIDENTARB }, { "glMakeImageHandleResidentNV", NFOSMESA_GLMAKEIMAGEHANDLERESIDENTNV }, { "glMakeNamedBufferNonResidentNV", NFOSMESA_GLMAKENAMEDBUFFERNONRESIDENTNV }, { "glMakeNamedBufferResidentNV", NFOSMESA_GLMAKENAMEDBUFFERRESIDENTNV }, { "glMakeTextureHandleNonResidentARB", NFOSMESA_GLMAKETEXTUREHANDLENONRESIDENTARB }, { "glMakeTextureHandleNonResidentNV", NFOSMESA_GLMAKETEXTUREHANDLENONRESIDENTNV }, { "glMakeTextureHandleResidentARB", NFOSMESA_GLMAKETEXTUREHANDLERESIDENTARB }, { "glMakeTextureHandleResidentNV", NFOSMESA_GLMAKETEXTUREHANDLERESIDENTNV }, { "glMap1d", NFOSMESA_GLMAP1D }, { "glMap1f", NFOSMESA_GLMAP1F }, { "glMap1xOES", NFOSMESA_GLMAP1XOES }, { "glMap2d", NFOSMESA_GLMAP2D }, { "glMap2f", NFOSMESA_GLMAP2F }, { "glMap2xOES", NFOSMESA_GLMAP2XOES }, { "glMapBuffer", NFOSMESA_GLMAPBUFFER }, { "glMapBufferARB", NFOSMESA_GLMAPBUFFERARB }, { "glMapBufferRange", NFOSMESA_GLMAPBUFFERRANGE }, { "glMapControlPointsNV", NFOSMESA_GLMAPCONTROLPOINTSNV }, { "glMapGrid1d", NFOSMESA_GLMAPGRID1D }, { "glMapGrid1f", NFOSMESA_GLMAPGRID1F }, { "glMapGrid1xOES", NFOSMESA_GLMAPGRID1XOES }, { "glMapGrid2d", NFOSMESA_GLMAPGRID2D }, { "glMapGrid2f", NFOSMESA_GLMAPGRID2F }, { "glMapGrid2xOES", NFOSMESA_GLMAPGRID2XOES }, { "glMapNamedBuffer", NFOSMESA_GLMAPNAMEDBUFFER }, { "glMapNamedBufferEXT", NFOSMESA_GLMAPNAMEDBUFFEREXT }, { "glMapNamedBufferRange", NFOSMESA_GLMAPNAMEDBUFFERRANGE }, { "glMapNamedBufferRangeEXT", NFOSMESA_GLMAPNAMEDBUFFERRANGEEXT }, { "glMapObjectBufferATI", NFOSMESA_GLMAPOBJECTBUFFERATI }, { "glMapParameterfvNV", NFOSMESA_GLMAPPARAMETERFVNV }, { "glMapParameterivNV", NFOSMESA_GLMAPPARAMETERIVNV }, { "glMapTexture2DINTEL", NFOSMESA_GLMAPTEXTURE2DINTEL }, { "glMapVertexAttrib1dAPPLE", NFOSMESA_GLMAPVERTEXATTRIB1DAPPLE }, { "glMapVertexAttrib1fAPPLE", NFOSMESA_GLMAPVERTEXATTRIB1FAPPLE }, { "glMapVertexAttrib2dAPPLE", NFOSMESA_GLMAPVERTEXATTRIB2DAPPLE }, { "glMapVertexAttrib2fAPPLE", NFOSMESA_GLMAPVERTEXATTRIB2FAPPLE }, { "glMaterialf", NFOSMESA_GLMATERIALF }, { "glMaterialfv", NFOSMESA_GLMATERIALFV }, { "glMateriali", NFOSMESA_GLMATERIALI }, { "glMaterialiv", NFOSMESA_GLMATERIALIV }, { "glMaterialxOES", NFOSMESA_GLMATERIALXOES }, { "glMaterialxvOES", NFOSMESA_GLMATERIALXVOES }, { "glMatrixFrustumEXT", NFOSMESA_GLMATRIXFRUSTUMEXT }, { "glMatrixIndexPointerARB", NFOSMESA_GLMATRIXINDEXPOINTERARB }, { "glMatrixIndexubvARB", NFOSMESA_GLMATRIXINDEXUBVARB }, { "glMatrixIndexuivARB", NFOSMESA_GLMATRIXINDEXUIVARB }, { "glMatrixIndexusvARB", NFOSMESA_GLMATRIXINDEXUSVARB }, { "glMatrixLoad3x2fNV", NFOSMESA_GLMATRIXLOAD3X2FNV }, { "glMatrixLoad3x3fNV", NFOSMESA_GLMATRIXLOAD3X3FNV }, { "glMatrixLoadIdentityEXT", NFOSMESA_GLMATRIXLOADIDENTITYEXT }, { "glMatrixLoadTranspose3x3fNV", NFOSMESA_GLMATRIXLOADTRANSPOSE3X3FNV }, { "glMatrixLoadTransposedEXT", NFOSMESA_GLMATRIXLOADTRANSPOSEDEXT }, { "glMatrixLoadTransposefEXT", NFOSMESA_GLMATRIXLOADTRANSPOSEFEXT }, { "glMatrixLoaddEXT", NFOSMESA_GLMATRIXLOADDEXT }, { "glMatrixLoadfEXT", NFOSMESA_GLMATRIXLOADFEXT }, { "glMatrixMode", NFOSMESA_GLMATRIXMODE }, { "glMatrixMult3x2fNV", NFOSMESA_GLMATRIXMULT3X2FNV }, { "glMatrixMult3x3fNV", NFOSMESA_GLMATRIXMULT3X3FNV }, { "glMatrixMultTranspose3x3fNV", NFOSMESA_GLMATRIXMULTTRANSPOSE3X3FNV }, { "glMatrixMultTransposedEXT", NFOSMESA_GLMATRIXMULTTRANSPOSEDEXT }, { "glMatrixMultTransposefEXT", NFOSMESA_GLMATRIXMULTTRANSPOSEFEXT }, { "glMatrixMultdEXT", NFOSMESA_GLMATRIXMULTDEXT }, { "glMatrixMultfEXT", NFOSMESA_GLMATRIXMULTFEXT }, { "glMatrixOrthoEXT", NFOSMESA_GLMATRIXORTHOEXT }, { "glMatrixPopEXT", NFOSMESA_GLMATRIXPOPEXT }, { "glMatrixPushEXT", NFOSMESA_GLMATRIXPUSHEXT }, { "glMatrixRotatedEXT", NFOSMESA_GLMATRIXROTATEDEXT }, { "glMatrixRotatefEXT", NFOSMESA_GLMATRIXROTATEFEXT }, { "glMatrixScaledEXT", NFOSMESA_GLMATRIXSCALEDEXT }, { "glMatrixScalefEXT", NFOSMESA_GLMATRIXSCALEFEXT }, { "glMatrixTranslatedEXT", NFOSMESA_GLMATRIXTRANSLATEDEXT }, { "glMatrixTranslatefEXT", NFOSMESA_GLMATRIXTRANSLATEFEXT }, { "glMaxShaderCompilerThreadsARB", NFOSMESA_GLMAXSHADERCOMPILERTHREADSARB }, { "glMaxShaderCompilerThreadsKHR", NFOSMESA_GLMAXSHADERCOMPILERTHREADSKHR }, { "glMemoryBarrier", NFOSMESA_GLMEMORYBARRIER }, { "glMemoryBarrierByRegion", NFOSMESA_GLMEMORYBARRIERBYREGION }, { "glMemoryBarrierEXT", NFOSMESA_GLMEMORYBARRIEREXT }, { "glMemoryObjectParameterivEXT", NFOSMESA_GLMEMORYOBJECTPARAMETERIVEXT }, { "glMinSampleShading", NFOSMESA_GLMINSAMPLESHADING }, { "glMinSampleShadingARB", NFOSMESA_GLMINSAMPLESHADINGARB }, { "glMinmax", NFOSMESA_GLMINMAX }, { "glMinmaxEXT", NFOSMESA_GLMINMAXEXT }, { "glMultMatrixd", NFOSMESA_GLMULTMATRIXD }, { "glMultMatrixf", NFOSMESA_GLMULTMATRIXF }, { "glMultMatrixxOES", NFOSMESA_GLMULTMATRIXXOES }, { "glMultTransposeMatrixd", NFOSMESA_GLMULTTRANSPOSEMATRIXD }, { "glMultTransposeMatrixdARB", NFOSMESA_GLMULTTRANSPOSEMATRIXDARB }, { "glMultTransposeMatrixf", NFOSMESA_GLMULTTRANSPOSEMATRIXF }, { "glMultTransposeMatrixfARB", NFOSMESA_GLMULTTRANSPOSEMATRIXFARB }, { "glMultTransposeMatrixxOES", NFOSMESA_GLMULTTRANSPOSEMATRIXXOES }, { "glMultiDrawArrays", NFOSMESA_GLMULTIDRAWARRAYS }, { "glMultiDrawArraysEXT", NFOSMESA_GLMULTIDRAWARRAYSEXT }, { "glMultiDrawArraysIndirect", NFOSMESA_GLMULTIDRAWARRAYSINDIRECT }, { "glMultiDrawArraysIndirectAMD", NFOSMESA_GLMULTIDRAWARRAYSINDIRECTAMD }, { "glMultiDrawArraysIndirectBindlessCountNV", NFOSMESA_GLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV }, { "glMultiDrawArraysIndirectBindlessNV", NFOSMESA_GLMULTIDRAWARRAYSINDIRECTBINDLESSNV }, { "glMultiDrawArraysIndirectCount", NFOSMESA_GLMULTIDRAWARRAYSINDIRECTCOUNT }, { "glMultiDrawArraysIndirectCountARB", NFOSMESA_GLMULTIDRAWARRAYSINDIRECTCOUNTARB }, { "glMultiDrawElementArrayAPPLE", NFOSMESA_GLMULTIDRAWELEMENTARRAYAPPLE }, { "glMultiDrawElements", NFOSMESA_GLMULTIDRAWELEMENTS }, { "glMultiDrawElementsBaseVertex", NFOSMESA_GLMULTIDRAWELEMENTSBASEVERTEX }, { "glMultiDrawElementsEXT", NFOSMESA_GLMULTIDRAWELEMENTSEXT }, { "glMultiDrawElementsIndirect", NFOSMESA_GLMULTIDRAWELEMENTSINDIRECT }, { "glMultiDrawElementsIndirectAMD", NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTAMD }, { "glMultiDrawElementsIndirectBindlessCountNV", NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV }, { "glMultiDrawElementsIndirectBindlessNV", NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTBINDLESSNV }, { "glMultiDrawElementsIndirectCount", NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTCOUNT }, { "glMultiDrawElementsIndirectCountARB", NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTCOUNTARB }, { "glMultiDrawRangeElementArrayAPPLE", NFOSMESA_GLMULTIDRAWRANGEELEMENTARRAYAPPLE }, { "glMultiModeDrawArraysIBM", NFOSMESA_GLMULTIMODEDRAWARRAYSIBM }, { "glMultiModeDrawElementsIBM", NFOSMESA_GLMULTIMODEDRAWELEMENTSIBM }, { "glMultiTexBufferEXT", NFOSMESA_GLMULTITEXBUFFEREXT }, { "glMultiTexCoord1bOES", NFOSMESA_GLMULTITEXCOORD1BOES }, { "glMultiTexCoord1bvOES", NFOSMESA_GLMULTITEXCOORD1BVOES }, { "glMultiTexCoord1d", NFOSMESA_GLMULTITEXCOORD1D }, { "glMultiTexCoord1dARB", NFOSMESA_GLMULTITEXCOORD1DARB }, { "glMultiTexCoord1dv", NFOSMESA_GLMULTITEXCOORD1DV }, { "glMultiTexCoord1dvARB", NFOSMESA_GLMULTITEXCOORD1DVARB }, { "glMultiTexCoord1f", NFOSMESA_GLMULTITEXCOORD1F }, { "glMultiTexCoord1fARB", NFOSMESA_GLMULTITEXCOORD1FARB }, { "glMultiTexCoord1fv", NFOSMESA_GLMULTITEXCOORD1FV }, { "glMultiTexCoord1fvARB", NFOSMESA_GLMULTITEXCOORD1FVARB }, { "glMultiTexCoord1hNV", NFOSMESA_GLMULTITEXCOORD1HNV }, { "glMultiTexCoord1hvNV", NFOSMESA_GLMULTITEXCOORD1HVNV }, { "glMultiTexCoord1i", NFOSMESA_GLMULTITEXCOORD1I }, { "glMultiTexCoord1iARB", NFOSMESA_GLMULTITEXCOORD1IARB }, { "glMultiTexCoord1iv", NFOSMESA_GLMULTITEXCOORD1IV }, { "glMultiTexCoord1ivARB", NFOSMESA_GLMULTITEXCOORD1IVARB }, { "glMultiTexCoord1s", NFOSMESA_GLMULTITEXCOORD1S }, { "glMultiTexCoord1sARB", NFOSMESA_GLMULTITEXCOORD1SARB }, { "glMultiTexCoord1sv", NFOSMESA_GLMULTITEXCOORD1SV }, { "glMultiTexCoord1svARB", NFOSMESA_GLMULTITEXCOORD1SVARB }, { "glMultiTexCoord1xOES", NFOSMESA_GLMULTITEXCOORD1XOES }, { "glMultiTexCoord1xvOES", NFOSMESA_GLMULTITEXCOORD1XVOES }, { "glMultiTexCoord2bOES", NFOSMESA_GLMULTITEXCOORD2BOES }, { "glMultiTexCoord2bvOES", NFOSMESA_GLMULTITEXCOORD2BVOES }, { "glMultiTexCoord2d", NFOSMESA_GLMULTITEXCOORD2D }, { "glMultiTexCoord2dARB", NFOSMESA_GLMULTITEXCOORD2DARB }, { "glMultiTexCoord2dv", NFOSMESA_GLMULTITEXCOORD2DV }, { "glMultiTexCoord2dvARB", NFOSMESA_GLMULTITEXCOORD2DVARB }, { "glMultiTexCoord2f", NFOSMESA_GLMULTITEXCOORD2F }, { "glMultiTexCoord2fARB", NFOSMESA_GLMULTITEXCOORD2FARB }, { "glMultiTexCoord2fv", NFOSMESA_GLMULTITEXCOORD2FV }, { "glMultiTexCoord2fvARB", NFOSMESA_GLMULTITEXCOORD2FVARB }, { "glMultiTexCoord2hNV", NFOSMESA_GLMULTITEXCOORD2HNV }, { "glMultiTexCoord2hvNV", NFOSMESA_GLMULTITEXCOORD2HVNV }, { "glMultiTexCoord2i", NFOSMESA_GLMULTITEXCOORD2I }, { "glMultiTexCoord2iARB", NFOSMESA_GLMULTITEXCOORD2IARB }, { "glMultiTexCoord2iv", NFOSMESA_GLMULTITEXCOORD2IV }, { "glMultiTexCoord2ivARB", NFOSMESA_GLMULTITEXCOORD2IVARB }, { "glMultiTexCoord2s", NFOSMESA_GLMULTITEXCOORD2S }, { "glMultiTexCoord2sARB", NFOSMESA_GLMULTITEXCOORD2SARB }, { "glMultiTexCoord2sv", NFOSMESA_GLMULTITEXCOORD2SV }, { "glMultiTexCoord2svARB", NFOSMESA_GLMULTITEXCOORD2SVARB }, { "glMultiTexCoord2xOES", NFOSMESA_GLMULTITEXCOORD2XOES }, { "glMultiTexCoord2xvOES", NFOSMESA_GLMULTITEXCOORD2XVOES }, { "glMultiTexCoord3bOES", NFOSMESA_GLMULTITEXCOORD3BOES }, { "glMultiTexCoord3bvOES", NFOSMESA_GLMULTITEXCOORD3BVOES }, { "glMultiTexCoord3d", NFOSMESA_GLMULTITEXCOORD3D }, { "glMultiTexCoord3dARB", NFOSMESA_GLMULTITEXCOORD3DARB }, { "glMultiTexCoord3dv", NFOSMESA_GLMULTITEXCOORD3DV }, { "glMultiTexCoord3dvARB", NFOSMESA_GLMULTITEXCOORD3DVARB }, { "glMultiTexCoord3f", NFOSMESA_GLMULTITEXCOORD3F }, { "glMultiTexCoord3fARB", NFOSMESA_GLMULTITEXCOORD3FARB }, { "glMultiTexCoord3fv", NFOSMESA_GLMULTITEXCOORD3FV }, { "glMultiTexCoord3fvARB", NFOSMESA_GLMULTITEXCOORD3FVARB }, { "glMultiTexCoord3hNV", NFOSMESA_GLMULTITEXCOORD3HNV }, { "glMultiTexCoord3hvNV", NFOSMESA_GLMULTITEXCOORD3HVNV }, { "glMultiTexCoord3i", NFOSMESA_GLMULTITEXCOORD3I }, { "glMultiTexCoord3iARB", NFOSMESA_GLMULTITEXCOORD3IARB }, { "glMultiTexCoord3iv", NFOSMESA_GLMULTITEXCOORD3IV }, { "glMultiTexCoord3ivARB", NFOSMESA_GLMULTITEXCOORD3IVARB }, { "glMultiTexCoord3s", NFOSMESA_GLMULTITEXCOORD3S }, { "glMultiTexCoord3sARB", NFOSMESA_GLMULTITEXCOORD3SARB }, { "glMultiTexCoord3sv", NFOSMESA_GLMULTITEXCOORD3SV }, { "glMultiTexCoord3svARB", NFOSMESA_GLMULTITEXCOORD3SVARB }, { "glMultiTexCoord3xOES", NFOSMESA_GLMULTITEXCOORD3XOES }, { "glMultiTexCoord3xvOES", NFOSMESA_GLMULTITEXCOORD3XVOES }, { "glMultiTexCoord4bOES", NFOSMESA_GLMULTITEXCOORD4BOES }, { "glMultiTexCoord4bvOES", NFOSMESA_GLMULTITEXCOORD4BVOES }, { "glMultiTexCoord4d", NFOSMESA_GLMULTITEXCOORD4D }, { "glMultiTexCoord4dARB", NFOSMESA_GLMULTITEXCOORD4DARB }, { "glMultiTexCoord4dv", NFOSMESA_GLMULTITEXCOORD4DV }, { "glMultiTexCoord4dvARB", NFOSMESA_GLMULTITEXCOORD4DVARB }, { "glMultiTexCoord4f", NFOSMESA_GLMULTITEXCOORD4F }, { "glMultiTexCoord4fARB", NFOSMESA_GLMULTITEXCOORD4FARB }, { "glMultiTexCoord4fv", NFOSMESA_GLMULTITEXCOORD4FV }, { "glMultiTexCoord4fvARB", NFOSMESA_GLMULTITEXCOORD4FVARB }, { "glMultiTexCoord4hNV", NFOSMESA_GLMULTITEXCOORD4HNV }, { "glMultiTexCoord4hvNV", NFOSMESA_GLMULTITEXCOORD4HVNV }, { "glMultiTexCoord4i", NFOSMESA_GLMULTITEXCOORD4I }, { "glMultiTexCoord4iARB", NFOSMESA_GLMULTITEXCOORD4IARB }, { "glMultiTexCoord4iv", NFOSMESA_GLMULTITEXCOORD4IV }, { "glMultiTexCoord4ivARB", NFOSMESA_GLMULTITEXCOORD4IVARB }, { "glMultiTexCoord4s", NFOSMESA_GLMULTITEXCOORD4S }, { "glMultiTexCoord4sARB", NFOSMESA_GLMULTITEXCOORD4SARB }, { "glMultiTexCoord4sv", NFOSMESA_GLMULTITEXCOORD4SV }, { "glMultiTexCoord4svARB", NFOSMESA_GLMULTITEXCOORD4SVARB }, { "glMultiTexCoord4xOES", NFOSMESA_GLMULTITEXCOORD4XOES }, { "glMultiTexCoord4xvOES", NFOSMESA_GLMULTITEXCOORD4XVOES }, { "glMultiTexCoordP1ui", NFOSMESA_GLMULTITEXCOORDP1UI }, { "glMultiTexCoordP1uiv", NFOSMESA_GLMULTITEXCOORDP1UIV }, { "glMultiTexCoordP2ui", NFOSMESA_GLMULTITEXCOORDP2UI }, { "glMultiTexCoordP2uiv", NFOSMESA_GLMULTITEXCOORDP2UIV }, { "glMultiTexCoordP3ui", NFOSMESA_GLMULTITEXCOORDP3UI }, { "glMultiTexCoordP3uiv", NFOSMESA_GLMULTITEXCOORDP3UIV }, { "glMultiTexCoordP4ui", NFOSMESA_GLMULTITEXCOORDP4UI }, { "glMultiTexCoordP4uiv", NFOSMESA_GLMULTITEXCOORDP4UIV }, { "glMultiTexCoordPointerEXT", NFOSMESA_GLMULTITEXCOORDPOINTEREXT }, { "glMultiTexEnvfEXT", NFOSMESA_GLMULTITEXENVFEXT }, { "glMultiTexEnvfvEXT", NFOSMESA_GLMULTITEXENVFVEXT }, { "glMultiTexEnviEXT", NFOSMESA_GLMULTITEXENVIEXT }, { "glMultiTexEnvivEXT", NFOSMESA_GLMULTITEXENVIVEXT }, { "glMultiTexGendEXT", NFOSMESA_GLMULTITEXGENDEXT }, { "glMultiTexGendvEXT", NFOSMESA_GLMULTITEXGENDVEXT }, { "glMultiTexGenfEXT", NFOSMESA_GLMULTITEXGENFEXT }, { "glMultiTexGenfvEXT", NFOSMESA_GLMULTITEXGENFVEXT }, { "glMultiTexGeniEXT", NFOSMESA_GLMULTITEXGENIEXT }, { "glMultiTexGenivEXT", NFOSMESA_GLMULTITEXGENIVEXT }, { "glMultiTexImage1DEXT", NFOSMESA_GLMULTITEXIMAGE1DEXT }, { "glMultiTexImage2DEXT", NFOSMESA_GLMULTITEXIMAGE2DEXT }, { "glMultiTexImage3DEXT", NFOSMESA_GLMULTITEXIMAGE3DEXT }, { "glMultiTexParameterIivEXT", NFOSMESA_GLMULTITEXPARAMETERIIVEXT }, { "glMultiTexParameterIuivEXT", NFOSMESA_GLMULTITEXPARAMETERIUIVEXT }, { "glMultiTexParameterfEXT", NFOSMESA_GLMULTITEXPARAMETERFEXT }, { "glMultiTexParameterfvEXT", NFOSMESA_GLMULTITEXPARAMETERFVEXT }, { "glMultiTexParameteriEXT", NFOSMESA_GLMULTITEXPARAMETERIEXT }, { "glMultiTexParameterivEXT", NFOSMESA_GLMULTITEXPARAMETERIVEXT }, { "glMultiTexRenderbufferEXT", NFOSMESA_GLMULTITEXRENDERBUFFEREXT }, { "glMultiTexSubImage1DEXT", NFOSMESA_GLMULTITEXSUBIMAGE1DEXT }, { "glMultiTexSubImage2DEXT", NFOSMESA_GLMULTITEXSUBIMAGE2DEXT }, { "glMultiTexSubImage3DEXT", NFOSMESA_GLMULTITEXSUBIMAGE3DEXT }, { "glMulticastBarrierNV", NFOSMESA_GLMULTICASTBARRIERNV }, { "glMulticastBlitFramebufferNV", NFOSMESA_GLMULTICASTBLITFRAMEBUFFERNV }, { "glMulticastBufferSubDataNV", NFOSMESA_GLMULTICASTBUFFERSUBDATANV }, { "glMulticastCopyBufferSubDataNV", NFOSMESA_GLMULTICASTCOPYBUFFERSUBDATANV }, { "glMulticastCopyImageSubDataNV", NFOSMESA_GLMULTICASTCOPYIMAGESUBDATANV }, { "glMulticastFramebufferSampleLocationsfvNV", NFOSMESA_GLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNV }, { "glMulticastGetQueryObjecti64vNV", NFOSMESA_GLMULTICASTGETQUERYOBJECTI64VNV }, { "glMulticastGetQueryObjectivNV", NFOSMESA_GLMULTICASTGETQUERYOBJECTIVNV }, { "glMulticastGetQueryObjectui64vNV", NFOSMESA_GLMULTICASTGETQUERYOBJECTUI64VNV }, { "glMulticastGetQueryObjectuivNV", NFOSMESA_GLMULTICASTGETQUERYOBJECTUIVNV }, { "glMulticastWaitSyncNV", NFOSMESA_GLMULTICASTWAITSYNCNV }, { "glNamedBufferData", NFOSMESA_GLNAMEDBUFFERDATA }, { "glNamedBufferDataEXT", NFOSMESA_GLNAMEDBUFFERDATAEXT }, { "glNamedBufferPageCommitmentARB", NFOSMESA_GLNAMEDBUFFERPAGECOMMITMENTARB }, { "glNamedBufferPageCommitmentEXT", NFOSMESA_GLNAMEDBUFFERPAGECOMMITMENTEXT }, { "glNamedBufferStorage", NFOSMESA_GLNAMEDBUFFERSTORAGE }, { "glNamedBufferStorageEXT", NFOSMESA_GLNAMEDBUFFERSTORAGEEXT }, { "glNamedBufferStorageExternalEXT", NFOSMESA_GLNAMEDBUFFERSTORAGEEXTERNALEXT }, { "glNamedBufferStorageMemEXT", NFOSMESA_GLNAMEDBUFFERSTORAGEMEMEXT }, { "glNamedBufferSubData", NFOSMESA_GLNAMEDBUFFERSUBDATA }, { "glNamedBufferSubDataEXT", NFOSMESA_GLNAMEDBUFFERSUBDATAEXT }, { "glNamedCopyBufferSubDataEXT", NFOSMESA_GLNAMEDCOPYBUFFERSUBDATAEXT }, { "glNamedFramebufferDrawBuffer", NFOSMESA_GLNAMEDFRAMEBUFFERDRAWBUFFER }, { "glNamedFramebufferDrawBuffers", NFOSMESA_GLNAMEDFRAMEBUFFERDRAWBUFFERS }, { "glNamedFramebufferParameteri", NFOSMESA_GLNAMEDFRAMEBUFFERPARAMETERI }, { "glNamedFramebufferParameteriEXT", NFOSMESA_GLNAMEDFRAMEBUFFERPARAMETERIEXT }, { "glNamedFramebufferReadBuffer", NFOSMESA_GLNAMEDFRAMEBUFFERREADBUFFER }, { "glNamedFramebufferRenderbuffer", NFOSMESA_GLNAMEDFRAMEBUFFERRENDERBUFFER }, { "glNamedFramebufferRenderbufferEXT", NFOSMESA_GLNAMEDFRAMEBUFFERRENDERBUFFEREXT }, { "glNamedFramebufferSampleLocationsfvARB", NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARB }, { "glNamedFramebufferSampleLocationsfvNV", NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV }, { "glNamedFramebufferSamplePositionsfvAMD", NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMD }, { "glNamedFramebufferTexture", NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE }, { "glNamedFramebufferTexture1DEXT", NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE1DEXT }, { "glNamedFramebufferTexture2DEXT", NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE2DEXT }, { "glNamedFramebufferTexture3DEXT", NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE3DEXT }, { "glNamedFramebufferTextureEXT", NFOSMESA_GLNAMEDFRAMEBUFFERTEXTUREEXT }, { "glNamedFramebufferTextureFaceEXT", NFOSMESA_GLNAMEDFRAMEBUFFERTEXTUREFACEEXT }, { "glNamedFramebufferTextureLayer", NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURELAYER }, { "glNamedFramebufferTextureLayerEXT", NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURELAYEREXT }, { "glNamedProgramLocalParameter4dEXT", NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4DEXT }, { "glNamedProgramLocalParameter4dvEXT", NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4DVEXT }, { "glNamedProgramLocalParameter4fEXT", NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4FEXT }, { "glNamedProgramLocalParameter4fvEXT", NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4FVEXT }, { "glNamedProgramLocalParameterI4iEXT", NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4IEXT }, { "glNamedProgramLocalParameterI4ivEXT", NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4IVEXT }, { "glNamedProgramLocalParameterI4uiEXT", NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4UIEXT }, { "glNamedProgramLocalParameterI4uivEXT", NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4UIVEXT }, { "glNamedProgramLocalParameters4fvEXT", NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERS4FVEXT }, { "glNamedProgramLocalParametersI4ivEXT", NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERSI4IVEXT }, { "glNamedProgramLocalParametersI4uivEXT", NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXT }, { "glNamedProgramStringEXT", NFOSMESA_GLNAMEDPROGRAMSTRINGEXT }, { "glNamedRenderbufferStorage", NFOSMESA_GLNAMEDRENDERBUFFERSTORAGE }, { "glNamedRenderbufferStorageEXT", NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEEXT }, { "glNamedRenderbufferStorageMultisample", NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLE }, { "glNamedRenderbufferStorageMultisampleCoverageEXT", NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXT }, { "glNamedRenderbufferStorageMultisampleEXT", NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXT }, { "glNamedStringARB", NFOSMESA_GLNAMEDSTRINGARB }, { "glNewList", NFOSMESA_GLNEWLIST }, { "glNewObjectBufferATI", NFOSMESA_GLNEWOBJECTBUFFERATI }, { "glNewTraceMESA", NFOSMESA_GLNEWTRACEMESA }, { "glNormal3b", NFOSMESA_GLNORMAL3B }, { "glNormal3bv", NFOSMESA_GLNORMAL3BV }, { "glNormal3d", NFOSMESA_GLNORMAL3D }, { "glNormal3dv", NFOSMESA_GLNORMAL3DV }, { "glNormal3f", NFOSMESA_GLNORMAL3F }, { "glNormal3fVertex3fSUN", NFOSMESA_GLNORMAL3FVERTEX3FSUN }, { "glNormal3fVertex3fvSUN", NFOSMESA_GLNORMAL3FVERTEX3FVSUN }, { "glNormal3fv", NFOSMESA_GLNORMAL3FV }, { "glNormal3hNV", NFOSMESA_GLNORMAL3HNV }, { "glNormal3hvNV", NFOSMESA_GLNORMAL3HVNV }, { "glNormal3i", NFOSMESA_GLNORMAL3I }, { "glNormal3iv", NFOSMESA_GLNORMAL3IV }, { "glNormal3s", NFOSMESA_GLNORMAL3S }, { "glNormal3sv", NFOSMESA_GLNORMAL3SV }, { "glNormal3xOES", NFOSMESA_GLNORMAL3XOES }, { "glNormal3xvOES", NFOSMESA_GLNORMAL3XVOES }, { "glNormalFormatNV", NFOSMESA_GLNORMALFORMATNV }, { "glNormalP3ui", NFOSMESA_GLNORMALP3UI }, { "glNormalP3uiv", NFOSMESA_GLNORMALP3UIV }, { "glNormalPointer", NFOSMESA_GLNORMALPOINTER }, { "glNormalPointerEXT", NFOSMESA_GLNORMALPOINTEREXT }, { "glNormalPointerListIBM", NFOSMESA_GLNORMALPOINTERLISTIBM }, { "glNormalPointervINTEL", NFOSMESA_GLNORMALPOINTERVINTEL }, { "glNormalStream3bATI", NFOSMESA_GLNORMALSTREAM3BATI }, { "glNormalStream3bvATI", NFOSMESA_GLNORMALSTREAM3BVATI }, { "glNormalStream3dATI", NFOSMESA_GLNORMALSTREAM3DATI }, { "glNormalStream3dvATI", NFOSMESA_GLNORMALSTREAM3DVATI }, { "glNormalStream3fATI", NFOSMESA_GLNORMALSTREAM3FATI }, { "glNormalStream3fvATI", NFOSMESA_GLNORMALSTREAM3FVATI }, { "glNormalStream3iATI", NFOSMESA_GLNORMALSTREAM3IATI }, { "glNormalStream3ivATI", NFOSMESA_GLNORMALSTREAM3IVATI }, { "glNormalStream3sATI", NFOSMESA_GLNORMALSTREAM3SATI }, { "glNormalStream3svATI", NFOSMESA_GLNORMALSTREAM3SVATI }, { "glObjectLabel", NFOSMESA_GLOBJECTLABEL }, { "glObjectPtrLabel", NFOSMESA_GLOBJECTPTRLABEL }, { "glObjectPurgeableAPPLE", NFOSMESA_GLOBJECTPURGEABLEAPPLE }, { "glObjectUnpurgeableAPPLE", NFOSMESA_GLOBJECTUNPURGEABLEAPPLE }, { "glOrtho", NFOSMESA_GLORTHO }, { "glOrthof", NFOSMESA_GLORTHOF }, { "glOrthofOES", NFOSMESA_GLORTHOFOES }, { "glOrthoxOES", NFOSMESA_GLORTHOXOES }, { "glPNTrianglesfATI", NFOSMESA_GLPNTRIANGLESFATI }, { "glPNTrianglesiATI", NFOSMESA_GLPNTRIANGLESIATI }, { "glPassTexCoordATI", NFOSMESA_GLPASSTEXCOORDATI }, { "glPassThrough", NFOSMESA_GLPASSTHROUGH }, { "glPassThroughxOES", NFOSMESA_GLPASSTHROUGHXOES }, { "glPatchParameterfv", NFOSMESA_GLPATCHPARAMETERFV }, { "glPatchParameteri", NFOSMESA_GLPATCHPARAMETERI }, { "glPathColorGenNV", NFOSMESA_GLPATHCOLORGENNV }, { "glPathCommandsNV", NFOSMESA_GLPATHCOMMANDSNV }, { "glPathCoordsNV", NFOSMESA_GLPATHCOORDSNV }, { "glPathCoverDepthFuncNV", NFOSMESA_GLPATHCOVERDEPTHFUNCNV }, { "glPathDashArrayNV", NFOSMESA_GLPATHDASHARRAYNV }, { "glPathFogGenNV", NFOSMESA_GLPATHFOGGENNV }, { "glPathGlyphIndexArrayNV", NFOSMESA_GLPATHGLYPHINDEXARRAYNV }, { "glPathGlyphIndexRangeNV", NFOSMESA_GLPATHGLYPHINDEXRANGENV }, { "glPathGlyphRangeNV", NFOSMESA_GLPATHGLYPHRANGENV }, { "glPathGlyphsNV", NFOSMESA_GLPATHGLYPHSNV }, { "glPathMemoryGlyphIndexArrayNV", NFOSMESA_GLPATHMEMORYGLYPHINDEXARRAYNV }, { "glPathParameterfNV", NFOSMESA_GLPATHPARAMETERFNV }, { "glPathParameterfvNV", NFOSMESA_GLPATHPARAMETERFVNV }, { "glPathParameteriNV", NFOSMESA_GLPATHPARAMETERINV }, { "glPathParameterivNV", NFOSMESA_GLPATHPARAMETERIVNV }, { "glPathStencilDepthOffsetNV", NFOSMESA_GLPATHSTENCILDEPTHOFFSETNV }, { "glPathStencilFuncNV", NFOSMESA_GLPATHSTENCILFUNCNV }, { "glPathStringNV", NFOSMESA_GLPATHSTRINGNV }, { "glPathSubCommandsNV", NFOSMESA_GLPATHSUBCOMMANDSNV }, { "glPathSubCoordsNV", NFOSMESA_GLPATHSUBCOORDSNV }, { "glPathTexGenNV", NFOSMESA_GLPATHTEXGENNV }, { "glPauseTransformFeedback", NFOSMESA_GLPAUSETRANSFORMFEEDBACK }, { "glPauseTransformFeedbackNV", NFOSMESA_GLPAUSETRANSFORMFEEDBACKNV }, { "glPixelDataRangeNV", NFOSMESA_GLPIXELDATARANGENV }, { "glPixelMapfv", NFOSMESA_GLPIXELMAPFV }, { "glPixelMapuiv", NFOSMESA_GLPIXELMAPUIV }, { "glPixelMapusv", NFOSMESA_GLPIXELMAPUSV }, { "glPixelMapx", NFOSMESA_GLPIXELMAPX }, { "glPixelStoref", NFOSMESA_GLPIXELSTOREF }, { "glPixelStorei", NFOSMESA_GLPIXELSTOREI }, { "glPixelStorex", NFOSMESA_GLPIXELSTOREX }, { "glPixelTexGenParameterfSGIS", NFOSMESA_GLPIXELTEXGENPARAMETERFSGIS }, { "glPixelTexGenParameterfvSGIS", NFOSMESA_GLPIXELTEXGENPARAMETERFVSGIS }, { "glPixelTexGenParameteriSGIS", NFOSMESA_GLPIXELTEXGENPARAMETERISGIS }, { "glPixelTexGenParameterivSGIS", NFOSMESA_GLPIXELTEXGENPARAMETERIVSGIS }, { "glPixelTexGenSGIX", NFOSMESA_GLPIXELTEXGENSGIX }, { "glPixelTransferf", NFOSMESA_GLPIXELTRANSFERF }, { "glPixelTransferi", NFOSMESA_GLPIXELTRANSFERI }, { "glPixelTransferxOES", NFOSMESA_GLPIXELTRANSFERXOES }, { "glPixelTransformParameterfEXT", NFOSMESA_GLPIXELTRANSFORMPARAMETERFEXT }, { "glPixelTransformParameterfvEXT", NFOSMESA_GLPIXELTRANSFORMPARAMETERFVEXT }, { "glPixelTransformParameteriEXT", NFOSMESA_GLPIXELTRANSFORMPARAMETERIEXT }, { "glPixelTransformParameterivEXT", NFOSMESA_GLPIXELTRANSFORMPARAMETERIVEXT }, { "glPixelZoom", NFOSMESA_GLPIXELZOOM }, { "glPixelZoomxOES", NFOSMESA_GLPIXELZOOMXOES }, { "glPointAlongPathNV", NFOSMESA_GLPOINTALONGPATHNV }, { "glPointParameterf", NFOSMESA_GLPOINTPARAMETERF }, { "glPointParameterfARB", NFOSMESA_GLPOINTPARAMETERFARB }, { "glPointParameterfEXT", NFOSMESA_GLPOINTPARAMETERFEXT }, { "glPointParameterfSGIS", NFOSMESA_GLPOINTPARAMETERFSGIS }, { "glPointParameterfv", NFOSMESA_GLPOINTPARAMETERFV }, { "glPointParameterfvARB", NFOSMESA_GLPOINTPARAMETERFVARB }, { "glPointParameterfvEXT", NFOSMESA_GLPOINTPARAMETERFVEXT }, { "glPointParameterfvSGIS", NFOSMESA_GLPOINTPARAMETERFVSGIS }, { "glPointParameteri", NFOSMESA_GLPOINTPARAMETERI }, { "glPointParameteriNV", NFOSMESA_GLPOINTPARAMETERINV }, { "glPointParameteriv", NFOSMESA_GLPOINTPARAMETERIV }, { "glPointParameterivNV", NFOSMESA_GLPOINTPARAMETERIVNV }, { "glPointParameterxvOES", NFOSMESA_GLPOINTPARAMETERXVOES }, { "glPointSize", NFOSMESA_GLPOINTSIZE }, { "glPointSizePointerAPPLE", NFOSMESA_GLPOINTSIZEPOINTERAPPLE }, { "glPointSizexOES", NFOSMESA_GLPOINTSIZEXOES }, { "glPollAsyncSGIX", NFOSMESA_GLPOLLASYNCSGIX }, { "glPollInstrumentsSGIX", NFOSMESA_GLPOLLINSTRUMENTSSGIX }, { "glPolygonMode", NFOSMESA_GLPOLYGONMODE }, { "glPolygonOffset", NFOSMESA_GLPOLYGONOFFSET }, { "glPolygonOffsetClamp", NFOSMESA_GLPOLYGONOFFSETCLAMP }, { "glPolygonOffsetClampEXT", NFOSMESA_GLPOLYGONOFFSETCLAMPEXT }, { "glPolygonOffsetEXT", NFOSMESA_GLPOLYGONOFFSETEXT }, { "glPolygonOffsetxOES", NFOSMESA_GLPOLYGONOFFSETXOES }, { "glPolygonStipple", NFOSMESA_GLPOLYGONSTIPPLE }, { "glPopAttrib", NFOSMESA_GLPOPATTRIB }, { "glPopClientAttrib", NFOSMESA_GLPOPCLIENTATTRIB }, { "glPopDebugGroup", NFOSMESA_GLPOPDEBUGGROUP }, { "glPopGroupMarkerEXT", NFOSMESA_GLPOPGROUPMARKEREXT }, { "glPopMatrix", NFOSMESA_GLPOPMATRIX }, { "glPopName", NFOSMESA_GLPOPNAME }, { "glPresentFrameDualFillNV", NFOSMESA_GLPRESENTFRAMEDUALFILLNV }, { "glPresentFrameKeyedNV", NFOSMESA_GLPRESENTFRAMEKEYEDNV }, { "glPrimitiveBoundingBoxARB", NFOSMESA_GLPRIMITIVEBOUNDINGBOXARB }, { "glPrimitiveRestartIndex", NFOSMESA_GLPRIMITIVERESTARTINDEX }, { "glPrimitiveRestartIndexNV", NFOSMESA_GLPRIMITIVERESTARTINDEXNV }, { "glPrimitiveRestartNV", NFOSMESA_GLPRIMITIVERESTARTNV }, { "glPrioritizeTextures", NFOSMESA_GLPRIORITIZETEXTURES }, { "glPrioritizeTexturesEXT", NFOSMESA_GLPRIORITIZETEXTURESEXT }, { "glPrioritizeTexturesxOES", NFOSMESA_GLPRIORITIZETEXTURESXOES }, { "glProgramBinary", NFOSMESA_GLPROGRAMBINARY }, { "glProgramBufferParametersIivNV", NFOSMESA_GLPROGRAMBUFFERPARAMETERSIIVNV }, { "glProgramBufferParametersIuivNV", NFOSMESA_GLPROGRAMBUFFERPARAMETERSIUIVNV }, { "glProgramBufferParametersfvNV", NFOSMESA_GLPROGRAMBUFFERPARAMETERSFVNV }, { "glProgramCallbackMESA", NFOSMESA_GLPROGRAMCALLBACKMESA }, { "glProgramEnvParameter4dARB", NFOSMESA_GLPROGRAMENVPARAMETER4DARB }, { "glProgramEnvParameter4dvARB", NFOSMESA_GLPROGRAMENVPARAMETER4DVARB }, { "glProgramEnvParameter4fARB", NFOSMESA_GLPROGRAMENVPARAMETER4FARB }, { "glProgramEnvParameter4fvARB", NFOSMESA_GLPROGRAMENVPARAMETER4FVARB }, { "glProgramEnvParameterI4iNV", NFOSMESA_GLPROGRAMENVPARAMETERI4INV }, { "glProgramEnvParameterI4ivNV", NFOSMESA_GLPROGRAMENVPARAMETERI4IVNV }, { "glProgramEnvParameterI4uiNV", NFOSMESA_GLPROGRAMENVPARAMETERI4UINV }, { "glProgramEnvParameterI4uivNV", NFOSMESA_GLPROGRAMENVPARAMETERI4UIVNV }, { "glProgramEnvParameters4fvEXT", NFOSMESA_GLPROGRAMENVPARAMETERS4FVEXT }, { "glProgramEnvParametersI4ivNV", NFOSMESA_GLPROGRAMENVPARAMETERSI4IVNV }, { "glProgramEnvParametersI4uivNV", NFOSMESA_GLPROGRAMENVPARAMETERSI4UIVNV }, { "glProgramLocalParameter4dARB", NFOSMESA_GLPROGRAMLOCALPARAMETER4DARB }, { "glProgramLocalParameter4dvARB", NFOSMESA_GLPROGRAMLOCALPARAMETER4DVARB }, { "glProgramLocalParameter4fARB", NFOSMESA_GLPROGRAMLOCALPARAMETER4FARB }, { "glProgramLocalParameter4fvARB", NFOSMESA_GLPROGRAMLOCALPARAMETER4FVARB }, { "glProgramLocalParameterI4iNV", NFOSMESA_GLPROGRAMLOCALPARAMETERI4INV }, { "glProgramLocalParameterI4ivNV", NFOSMESA_GLPROGRAMLOCALPARAMETERI4IVNV }, { "glProgramLocalParameterI4uiNV", NFOSMESA_GLPROGRAMLOCALPARAMETERI4UINV }, { "glProgramLocalParameterI4uivNV", NFOSMESA_GLPROGRAMLOCALPARAMETERI4UIVNV }, { "glProgramLocalParameters4fvEXT", NFOSMESA_GLPROGRAMLOCALPARAMETERS4FVEXT }, { "glProgramLocalParametersI4ivNV", NFOSMESA_GLPROGRAMLOCALPARAMETERSI4IVNV }, { "glProgramLocalParametersI4uivNV", NFOSMESA_GLPROGRAMLOCALPARAMETERSI4UIVNV }, { "glProgramNamedParameter4dNV", NFOSMESA_GLPROGRAMNAMEDPARAMETER4DNV }, { "glProgramNamedParameter4dvNV", NFOSMESA_GLPROGRAMNAMEDPARAMETER4DVNV }, { "glProgramNamedParameter4fNV", NFOSMESA_GLPROGRAMNAMEDPARAMETER4FNV }, { "glProgramNamedParameter4fvNV", NFOSMESA_GLPROGRAMNAMEDPARAMETER4FVNV }, { "glProgramParameter4dNV", NFOSMESA_GLPROGRAMPARAMETER4DNV }, { "glProgramParameter4dvNV", NFOSMESA_GLPROGRAMPARAMETER4DVNV }, { "glProgramParameter4fNV", NFOSMESA_GLPROGRAMPARAMETER4FNV }, { "glProgramParameter4fvNV", NFOSMESA_GLPROGRAMPARAMETER4FVNV }, { "glProgramParameteri", NFOSMESA_GLPROGRAMPARAMETERI }, { "glProgramParameteriARB", NFOSMESA_GLPROGRAMPARAMETERIARB }, { "glProgramParameteriEXT", NFOSMESA_GLPROGRAMPARAMETERIEXT }, { "glProgramParameters4dvNV", NFOSMESA_GLPROGRAMPARAMETERS4DVNV }, { "glProgramParameters4fvNV", NFOSMESA_GLPROGRAMPARAMETERS4FVNV }, { "glProgramPathFragmentInputGenNV", NFOSMESA_GLPROGRAMPATHFRAGMENTINPUTGENNV }, { "glProgramStringARB", NFOSMESA_GLPROGRAMSTRINGARB }, { "glProgramSubroutineParametersuivNV", NFOSMESA_GLPROGRAMSUBROUTINEPARAMETERSUIVNV }, { "glProgramUniform1d", NFOSMESA_GLPROGRAMUNIFORM1D }, { "glProgramUniform1dEXT", NFOSMESA_GLPROGRAMUNIFORM1DEXT }, { "glProgramUniform1dv", NFOSMESA_GLPROGRAMUNIFORM1DV }, { "glProgramUniform1dvEXT", NFOSMESA_GLPROGRAMUNIFORM1DVEXT }, { "glProgramUniform1f", NFOSMESA_GLPROGRAMUNIFORM1F }, { "glProgramUniform1fEXT", NFOSMESA_GLPROGRAMUNIFORM1FEXT }, { "glProgramUniform1fv", NFOSMESA_GLPROGRAMUNIFORM1FV }, { "glProgramUniform1fvEXT", NFOSMESA_GLPROGRAMUNIFORM1FVEXT }, { "glProgramUniform1i", NFOSMESA_GLPROGRAMUNIFORM1I }, { "glProgramUniform1i64ARB", NFOSMESA_GLPROGRAMUNIFORM1I64ARB }, { "glProgramUniform1i64NV", NFOSMESA_GLPROGRAMUNIFORM1I64NV }, { "glProgramUniform1i64vARB", NFOSMESA_GLPROGRAMUNIFORM1I64VARB }, { "glProgramUniform1i64vNV", NFOSMESA_GLPROGRAMUNIFORM1I64VNV }, { "glProgramUniform1iEXT", NFOSMESA_GLPROGRAMUNIFORM1IEXT }, { "glProgramUniform1iv", NFOSMESA_GLPROGRAMUNIFORM1IV }, { "glProgramUniform1ivEXT", NFOSMESA_GLPROGRAMUNIFORM1IVEXT }, { "glProgramUniform1ui", NFOSMESA_GLPROGRAMUNIFORM1UI }, { "glProgramUniform1ui64ARB", NFOSMESA_GLPROGRAMUNIFORM1UI64ARB }, { "glProgramUniform1ui64NV", NFOSMESA_GLPROGRAMUNIFORM1UI64NV }, { "glProgramUniform1ui64vARB", NFOSMESA_GLPROGRAMUNIFORM1UI64VARB }, { "glProgramUniform1ui64vNV", NFOSMESA_GLPROGRAMUNIFORM1UI64VNV }, { "glProgramUniform1uiEXT", NFOSMESA_GLPROGRAMUNIFORM1UIEXT }, { "glProgramUniform1uiv", NFOSMESA_GLPROGRAMUNIFORM1UIV }, { "glProgramUniform1uivEXT", NFOSMESA_GLPROGRAMUNIFORM1UIVEXT }, { "glProgramUniform2d", NFOSMESA_GLPROGRAMUNIFORM2D }, { "glProgramUniform2dEXT", NFOSMESA_GLPROGRAMUNIFORM2DEXT }, { "glProgramUniform2dv", NFOSMESA_GLPROGRAMUNIFORM2DV }, { "glProgramUniform2dvEXT", NFOSMESA_GLPROGRAMUNIFORM2DVEXT }, { "glProgramUniform2f", NFOSMESA_GLPROGRAMUNIFORM2F }, { "glProgramUniform2fEXT", NFOSMESA_GLPROGRAMUNIFORM2FEXT }, { "glProgramUniform2fv", NFOSMESA_GLPROGRAMUNIFORM2FV }, { "glProgramUniform2fvEXT", NFOSMESA_GLPROGRAMUNIFORM2FVEXT }, { "glProgramUniform2i", NFOSMESA_GLPROGRAMUNIFORM2I }, { "glProgramUniform2i64ARB", NFOSMESA_GLPROGRAMUNIFORM2I64ARB }, { "glProgramUniform2i64NV", NFOSMESA_GLPROGRAMUNIFORM2I64NV }, { "glProgramUniform2i64vARB", NFOSMESA_GLPROGRAMUNIFORM2I64VARB }, { "glProgramUniform2i64vNV", NFOSMESA_GLPROGRAMUNIFORM2I64VNV }, { "glProgramUniform2iEXT", NFOSMESA_GLPROGRAMUNIFORM2IEXT }, { "glProgramUniform2iv", NFOSMESA_GLPROGRAMUNIFORM2IV }, { "glProgramUniform2ivEXT", NFOSMESA_GLPROGRAMUNIFORM2IVEXT }, { "glProgramUniform2ui", NFOSMESA_GLPROGRAMUNIFORM2UI }, { "glProgramUniform2ui64ARB", NFOSMESA_GLPROGRAMUNIFORM2UI64ARB }, { "glProgramUniform2ui64NV", NFOSMESA_GLPROGRAMUNIFORM2UI64NV }, { "glProgramUniform2ui64vARB", NFOSMESA_GLPROGRAMUNIFORM2UI64VARB }, { "glProgramUniform2ui64vNV", NFOSMESA_GLPROGRAMUNIFORM2UI64VNV }, { "glProgramUniform2uiEXT", NFOSMESA_GLPROGRAMUNIFORM2UIEXT }, { "glProgramUniform2uiv", NFOSMESA_GLPROGRAMUNIFORM2UIV }, { "glProgramUniform2uivEXT", NFOSMESA_GLPROGRAMUNIFORM2UIVEXT }, { "glProgramUniform3d", NFOSMESA_GLPROGRAMUNIFORM3D }, { "glProgramUniform3dEXT", NFOSMESA_GLPROGRAMUNIFORM3DEXT }, { "glProgramUniform3dv", NFOSMESA_GLPROGRAMUNIFORM3DV }, { "glProgramUniform3dvEXT", NFOSMESA_GLPROGRAMUNIFORM3DVEXT }, { "glProgramUniform3f", NFOSMESA_GLPROGRAMUNIFORM3F }, { "glProgramUniform3fEXT", NFOSMESA_GLPROGRAMUNIFORM3FEXT }, { "glProgramUniform3fv", NFOSMESA_GLPROGRAMUNIFORM3FV }, { "glProgramUniform3fvEXT", NFOSMESA_GLPROGRAMUNIFORM3FVEXT }, { "glProgramUniform3i", NFOSMESA_GLPROGRAMUNIFORM3I }, { "glProgramUniform3i64ARB", NFOSMESA_GLPROGRAMUNIFORM3I64ARB }, { "glProgramUniform3i64NV", NFOSMESA_GLPROGRAMUNIFORM3I64NV }, { "glProgramUniform3i64vARB", NFOSMESA_GLPROGRAMUNIFORM3I64VARB }, { "glProgramUniform3i64vNV", NFOSMESA_GLPROGRAMUNIFORM3I64VNV }, { "glProgramUniform3iEXT", NFOSMESA_GLPROGRAMUNIFORM3IEXT }, { "glProgramUniform3iv", NFOSMESA_GLPROGRAMUNIFORM3IV }, { "glProgramUniform3ivEXT", NFOSMESA_GLPROGRAMUNIFORM3IVEXT }, { "glProgramUniform3ui", NFOSMESA_GLPROGRAMUNIFORM3UI }, { "glProgramUniform3ui64ARB", NFOSMESA_GLPROGRAMUNIFORM3UI64ARB }, { "glProgramUniform3ui64NV", NFOSMESA_GLPROGRAMUNIFORM3UI64NV }, { "glProgramUniform3ui64vARB", NFOSMESA_GLPROGRAMUNIFORM3UI64VARB }, { "glProgramUniform3ui64vNV", NFOSMESA_GLPROGRAMUNIFORM3UI64VNV }, { "glProgramUniform3uiEXT", NFOSMESA_GLPROGRAMUNIFORM3UIEXT }, { "glProgramUniform3uiv", NFOSMESA_GLPROGRAMUNIFORM3UIV }, { "glProgramUniform3uivEXT", NFOSMESA_GLPROGRAMUNIFORM3UIVEXT }, { "glProgramUniform4d", NFOSMESA_GLPROGRAMUNIFORM4D }, { "glProgramUniform4dEXT", NFOSMESA_GLPROGRAMUNIFORM4DEXT }, { "glProgramUniform4dv", NFOSMESA_GLPROGRAMUNIFORM4DV }, { "glProgramUniform4dvEXT", NFOSMESA_GLPROGRAMUNIFORM4DVEXT }, { "glProgramUniform4f", NFOSMESA_GLPROGRAMUNIFORM4F }, { "glProgramUniform4fEXT", NFOSMESA_GLPROGRAMUNIFORM4FEXT }, { "glProgramUniform4fv", NFOSMESA_GLPROGRAMUNIFORM4FV }, { "glProgramUniform4fvEXT", NFOSMESA_GLPROGRAMUNIFORM4FVEXT }, { "glProgramUniform4i", NFOSMESA_GLPROGRAMUNIFORM4I }, { "glProgramUniform4i64ARB", NFOSMESA_GLPROGRAMUNIFORM4I64ARB }, { "glProgramUniform4i64NV", NFOSMESA_GLPROGRAMUNIFORM4I64NV }, { "glProgramUniform4i64vARB", NFOSMESA_GLPROGRAMUNIFORM4I64VARB }, { "glProgramUniform4i64vNV", NFOSMESA_GLPROGRAMUNIFORM4I64VNV }, { "glProgramUniform4iEXT", NFOSMESA_GLPROGRAMUNIFORM4IEXT }, { "glProgramUniform4iv", NFOSMESA_GLPROGRAMUNIFORM4IV }, { "glProgramUniform4ivEXT", NFOSMESA_GLPROGRAMUNIFORM4IVEXT }, { "glProgramUniform4ui", NFOSMESA_GLPROGRAMUNIFORM4UI }, { "glProgramUniform4ui64ARB", NFOSMESA_GLPROGRAMUNIFORM4UI64ARB }, { "glProgramUniform4ui64NV", NFOSMESA_GLPROGRAMUNIFORM4UI64NV }, { "glProgramUniform4ui64vARB", NFOSMESA_GLPROGRAMUNIFORM4UI64VARB }, { "glProgramUniform4ui64vNV", NFOSMESA_GLPROGRAMUNIFORM4UI64VNV }, { "glProgramUniform4uiEXT", NFOSMESA_GLPROGRAMUNIFORM4UIEXT }, { "glProgramUniform4uiv", NFOSMESA_GLPROGRAMUNIFORM4UIV }, { "glProgramUniform4uivEXT", NFOSMESA_GLPROGRAMUNIFORM4UIVEXT }, { "glProgramUniformHandleui64ARB", NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64ARB }, { "glProgramUniformHandleui64NV", NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64NV }, { "glProgramUniformHandleui64vARB", NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64VARB }, { "glProgramUniformHandleui64vNV", NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64VNV }, { "glProgramUniformMatrix2dv", NFOSMESA_GLPROGRAMUNIFORMMATRIX2DV }, { "glProgramUniformMatrix2dvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX2DVEXT }, { "glProgramUniformMatrix2fv", NFOSMESA_GLPROGRAMUNIFORMMATRIX2FV }, { "glProgramUniformMatrix2fvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX2FVEXT }, { "glProgramUniformMatrix2x3dv", NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3DV }, { "glProgramUniformMatrix2x3dvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3DVEXT }, { "glProgramUniformMatrix2x3fv", NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3FV }, { "glProgramUniformMatrix2x3fvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3FVEXT }, { "glProgramUniformMatrix2x4dv", NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4DV }, { "glProgramUniformMatrix2x4dvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4DVEXT }, { "glProgramUniformMatrix2x4fv", NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4FV }, { "glProgramUniformMatrix2x4fvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4FVEXT }, { "glProgramUniformMatrix3dv", NFOSMESA_GLPROGRAMUNIFORMMATRIX3DV }, { "glProgramUniformMatrix3dvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX3DVEXT }, { "glProgramUniformMatrix3fv", NFOSMESA_GLPROGRAMUNIFORMMATRIX3FV }, { "glProgramUniformMatrix3fvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX3FVEXT }, { "glProgramUniformMatrix3x2dv", NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2DV }, { "glProgramUniformMatrix3x2dvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2DVEXT }, { "glProgramUniformMatrix3x2fv", NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2FV }, { "glProgramUniformMatrix3x2fvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2FVEXT }, { "glProgramUniformMatrix3x4dv", NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4DV }, { "glProgramUniformMatrix3x4dvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4DVEXT }, { "glProgramUniformMatrix3x4fv", NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4FV }, { "glProgramUniformMatrix3x4fvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4FVEXT }, { "glProgramUniformMatrix4dv", NFOSMESA_GLPROGRAMUNIFORMMATRIX4DV }, { "glProgramUniformMatrix4dvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX4DVEXT }, { "glProgramUniformMatrix4fv", NFOSMESA_GLPROGRAMUNIFORMMATRIX4FV }, { "glProgramUniformMatrix4fvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX4FVEXT }, { "glProgramUniformMatrix4x2dv", NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2DV }, { "glProgramUniformMatrix4x2dvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2DVEXT }, { "glProgramUniformMatrix4x2fv", NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2FV }, { "glProgramUniformMatrix4x2fvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2FVEXT }, { "glProgramUniformMatrix4x3dv", NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3DV }, { "glProgramUniformMatrix4x3dvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3DVEXT }, { "glProgramUniformMatrix4x3fv", NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3FV }, { "glProgramUniformMatrix4x3fvEXT", NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3FVEXT }, { "glProgramUniformui64NV", NFOSMESA_GLPROGRAMUNIFORMUI64NV }, { "glProgramUniformui64vNV", NFOSMESA_GLPROGRAMUNIFORMUI64VNV }, { "glProgramVertexLimitNV", NFOSMESA_GLPROGRAMVERTEXLIMITNV }, { "glProvokingVertex", NFOSMESA_GLPROVOKINGVERTEX }, { "glProvokingVertexEXT", NFOSMESA_GLPROVOKINGVERTEXEXT }, { "glPushAttrib", NFOSMESA_GLPUSHATTRIB }, { "glPushClientAttrib", NFOSMESA_GLPUSHCLIENTATTRIB }, { "glPushClientAttribDefaultEXT", NFOSMESA_GLPUSHCLIENTATTRIBDEFAULTEXT }, { "glPushDebugGroup", NFOSMESA_GLPUSHDEBUGGROUP }, { "glPushGroupMarkerEXT", NFOSMESA_GLPUSHGROUPMARKEREXT }, { "glPushMatrix", NFOSMESA_GLPUSHMATRIX }, { "glPushName", NFOSMESA_GLPUSHNAME }, { "glQueryCounter", NFOSMESA_GLQUERYCOUNTER }, { "glQueryMatrixxOES", NFOSMESA_GLQUERYMATRIXXOES }, { "glQueryObjectParameteruiAMD", NFOSMESA_GLQUERYOBJECTPARAMETERUIAMD }, { "glQueryResourceNV", NFOSMESA_GLQUERYRESOURCENV }, { "glQueryResourceTagNV", NFOSMESA_GLQUERYRESOURCETAGNV }, { "glRasterPos2d", NFOSMESA_GLRASTERPOS2D }, { "glRasterPos2dv", NFOSMESA_GLRASTERPOS2DV }, { "glRasterPos2f", NFOSMESA_GLRASTERPOS2F }, { "glRasterPos2fv", NFOSMESA_GLRASTERPOS2FV }, { "glRasterPos2i", NFOSMESA_GLRASTERPOS2I }, { "glRasterPos2iv", NFOSMESA_GLRASTERPOS2IV }, { "glRasterPos2s", NFOSMESA_GLRASTERPOS2S }, { "glRasterPos2sv", NFOSMESA_GLRASTERPOS2SV }, { "glRasterPos2xOES", NFOSMESA_GLRASTERPOS2XOES }, { "glRasterPos2xvOES", NFOSMESA_GLRASTERPOS2XVOES }, { "glRasterPos3d", NFOSMESA_GLRASTERPOS3D }, { "glRasterPos3dv", NFOSMESA_GLRASTERPOS3DV }, { "glRasterPos3f", NFOSMESA_GLRASTERPOS3F }, { "glRasterPos3fv", NFOSMESA_GLRASTERPOS3FV }, { "glRasterPos3i", NFOSMESA_GLRASTERPOS3I }, { "glRasterPos3iv", NFOSMESA_GLRASTERPOS3IV }, { "glRasterPos3s", NFOSMESA_GLRASTERPOS3S }, { "glRasterPos3sv", NFOSMESA_GLRASTERPOS3SV }, { "glRasterPos3xOES", NFOSMESA_GLRASTERPOS3XOES }, { "glRasterPos3xvOES", NFOSMESA_GLRASTERPOS3XVOES }, { "glRasterPos4d", NFOSMESA_GLRASTERPOS4D }, { "glRasterPos4dv", NFOSMESA_GLRASTERPOS4DV }, { "glRasterPos4f", NFOSMESA_GLRASTERPOS4F }, { "glRasterPos4fv", NFOSMESA_GLRASTERPOS4FV }, { "glRasterPos4i", NFOSMESA_GLRASTERPOS4I }, { "glRasterPos4iv", NFOSMESA_GLRASTERPOS4IV }, { "glRasterPos4s", NFOSMESA_GLRASTERPOS4S }, { "glRasterPos4sv", NFOSMESA_GLRASTERPOS4SV }, { "glRasterPos4xOES", NFOSMESA_GLRASTERPOS4XOES }, { "glRasterPos4xvOES", NFOSMESA_GLRASTERPOS4XVOES }, { "glRasterSamplesEXT", NFOSMESA_GLRASTERSAMPLESEXT }, { "glReadBuffer", NFOSMESA_GLREADBUFFER }, { "glReadInstrumentsSGIX", NFOSMESA_GLREADINSTRUMENTSSGIX }, { "glReadPixels", NFOSMESA_GLREADPIXELS }, { "glReadnPixels", NFOSMESA_GLREADNPIXELS }, { "glReadnPixelsARB", NFOSMESA_GLREADNPIXELSARB }, { "glRectd", NFOSMESA_GLRECTD }, { "glRectdv", NFOSMESA_GLRECTDV }, { "glRectf", NFOSMESA_GLRECTF }, { "glRectfv", NFOSMESA_GLRECTFV }, { "glRecti", NFOSMESA_GLRECTI }, { "glRectiv", NFOSMESA_GLRECTIV }, { "glRects", NFOSMESA_GLRECTS }, { "glRectsv", NFOSMESA_GLRECTSV }, { "glRectxOES", NFOSMESA_GLRECTXOES }, { "glRectxvOES", NFOSMESA_GLRECTXVOES }, { "glReferencePlaneSGIX", NFOSMESA_GLREFERENCEPLANESGIX }, { "glReleaseKeyedMutexWin32EXT", NFOSMESA_GLRELEASEKEYEDMUTEXWIN32EXT }, { "glReleaseShaderCompiler", NFOSMESA_GLRELEASESHADERCOMPILER }, { "glRenderGpuMaskNV", NFOSMESA_GLRENDERGPUMASKNV }, { "glRenderMode", NFOSMESA_GLRENDERMODE }, { "glRenderbufferStorage", NFOSMESA_GLRENDERBUFFERSTORAGE }, { "glRenderbufferStorageEXT", NFOSMESA_GLRENDERBUFFERSTORAGEEXT }, { "glRenderbufferStorageMultisample", NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLE }, { "glRenderbufferStorageMultisampleCoverageNV", NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENV }, { "glRenderbufferStorageMultisampleEXT", NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLEEXT }, { "glReplacementCodePointerSUN", NFOSMESA_GLREPLACEMENTCODEPOINTERSUN }, { "glReplacementCodeubSUN", NFOSMESA_GLREPLACEMENTCODEUBSUN }, { "glReplacementCodeubvSUN", NFOSMESA_GLREPLACEMENTCODEUBVSUN }, { "glReplacementCodeuiColor3fVertex3fSUN", NFOSMESA_GLREPLACEMENTCODEUICOLOR3FVERTEX3FSUN }, { "glReplacementCodeuiColor3fVertex3fvSUN", NFOSMESA_GLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUN }, { "glReplacementCodeuiColor4fNormal3fVertex3fSUN", NFOSMESA_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUN }, { "glReplacementCodeuiColor4fNormal3fVertex3fvSUN", NFOSMESA_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUN }, { "glReplacementCodeuiColor4ubVertex3fSUN", NFOSMESA_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUN }, { "glReplacementCodeuiColor4ubVertex3fvSUN", NFOSMESA_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUN }, { "glReplacementCodeuiNormal3fVertex3fSUN", NFOSMESA_GLREPLACEMENTCODEUINORMAL3FVERTEX3FSUN }, { "glReplacementCodeuiNormal3fVertex3fvSUN", NFOSMESA_GLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUN }, { "glReplacementCodeuiSUN", NFOSMESA_GLREPLACEMENTCODEUISUN }, { "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN", NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN }, { "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN", NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN }, { "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN", NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUN }, { "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN", NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUN }, { "glReplacementCodeuiTexCoord2fVertex3fSUN", NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUN }, { "glReplacementCodeuiTexCoord2fVertex3fvSUN", NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUN }, { "glReplacementCodeuiVertex3fSUN", NFOSMESA_GLREPLACEMENTCODEUIVERTEX3FSUN }, { "glReplacementCodeuiVertex3fvSUN", NFOSMESA_GLREPLACEMENTCODEUIVERTEX3FVSUN }, { "glReplacementCodeuivSUN", NFOSMESA_GLREPLACEMENTCODEUIVSUN }, { "glReplacementCodeusSUN", NFOSMESA_GLREPLACEMENTCODEUSSUN }, { "glReplacementCodeusvSUN", NFOSMESA_GLREPLACEMENTCODEUSVSUN }, { "glRequestResidentProgramsNV", NFOSMESA_GLREQUESTRESIDENTPROGRAMSNV }, { "glResetHistogram", NFOSMESA_GLRESETHISTOGRAM }, { "glResetHistogramEXT", NFOSMESA_GLRESETHISTOGRAMEXT }, { "glResetMinmax", NFOSMESA_GLRESETMINMAX }, { "glResetMinmaxEXT", NFOSMESA_GLRESETMINMAXEXT }, { "glResizeBuffersMESA", NFOSMESA_GLRESIZEBUFFERSMESA }, { "glResolveDepthValuesNV", NFOSMESA_GLRESOLVEDEPTHVALUESNV }, { "glResumeTransformFeedback", NFOSMESA_GLRESUMETRANSFORMFEEDBACK }, { "glResumeTransformFeedbackNV", NFOSMESA_GLRESUMETRANSFORMFEEDBACKNV }, { "glRotated", NFOSMESA_GLROTATED }, { "glRotatef", NFOSMESA_GLROTATEF }, { "glRotatexOES", NFOSMESA_GLROTATEXOES }, { "glSampleCoverage", NFOSMESA_GLSAMPLECOVERAGE }, { "glSampleCoverageARB", NFOSMESA_GLSAMPLECOVERAGEARB }, { "glSampleCoverageOES", NFOSMESA_GLSAMPLECOVERAGEOES }, { "glSampleMapATI", NFOSMESA_GLSAMPLEMAPATI }, { "glSampleMaskEXT", NFOSMESA_GLSAMPLEMASKEXT }, { "glSampleMaskIndexedNV", NFOSMESA_GLSAMPLEMASKINDEXEDNV }, { "glSampleMaskSGIS", NFOSMESA_GLSAMPLEMASKSGIS }, { "glSampleMaski", NFOSMESA_GLSAMPLEMASKI }, { "glSamplePass", NFOSMESA_GLSAMPLEPASS }, { "glSamplePassARB", NFOSMESA_GLSAMPLEPASSARB }, { "glSamplePatternEXT", NFOSMESA_GLSAMPLEPATTERNEXT }, { "glSamplePatternSGIS", NFOSMESA_GLSAMPLEPATTERNSGIS }, { "glSamplerParameterIiv", NFOSMESA_GLSAMPLERPARAMETERIIV }, { "glSamplerParameterIuiv", NFOSMESA_GLSAMPLERPARAMETERIUIV }, { "glSamplerParameterf", NFOSMESA_GLSAMPLERPARAMETERF }, { "glSamplerParameterfv", NFOSMESA_GLSAMPLERPARAMETERFV }, { "glSamplerParameteri", NFOSMESA_GLSAMPLERPARAMETERI }, { "glSamplerParameteriv", NFOSMESA_GLSAMPLERPARAMETERIV }, { "glScaled", NFOSMESA_GLSCALED }, { "glScalef", NFOSMESA_GLSCALEF }, { "glScalexOES", NFOSMESA_GLSCALEXOES }, { "glScissor", NFOSMESA_GLSCISSOR }, { "glScissorArrayv", NFOSMESA_GLSCISSORARRAYV }, { "glScissorIndexed", NFOSMESA_GLSCISSORINDEXED }, { "glScissorIndexedv", NFOSMESA_GLSCISSORINDEXEDV }, { "glSecondaryColor3b", NFOSMESA_GLSECONDARYCOLOR3B }, { "glSecondaryColor3bEXT", NFOSMESA_GLSECONDARYCOLOR3BEXT }, { "glSecondaryColor3bv", NFOSMESA_GLSECONDARYCOLOR3BV }, { "glSecondaryColor3bvEXT", NFOSMESA_GLSECONDARYCOLOR3BVEXT }, { "glSecondaryColor3d", NFOSMESA_GLSECONDARYCOLOR3D }, { "glSecondaryColor3dEXT", NFOSMESA_GLSECONDARYCOLOR3DEXT }, { "glSecondaryColor3dv", NFOSMESA_GLSECONDARYCOLOR3DV }, { "glSecondaryColor3dvEXT", NFOSMESA_GLSECONDARYCOLOR3DVEXT }, { "glSecondaryColor3f", NFOSMESA_GLSECONDARYCOLOR3F }, { "glSecondaryColor3fEXT", NFOSMESA_GLSECONDARYCOLOR3FEXT }, { "glSecondaryColor3fv", NFOSMESA_GLSECONDARYCOLOR3FV }, { "glSecondaryColor3fvEXT", NFOSMESA_GLSECONDARYCOLOR3FVEXT }, { "glSecondaryColor3hNV", NFOSMESA_GLSECONDARYCOLOR3HNV }, { "glSecondaryColor3hvNV", NFOSMESA_GLSECONDARYCOLOR3HVNV }, { "glSecondaryColor3i", NFOSMESA_GLSECONDARYCOLOR3I }, { "glSecondaryColor3iEXT", NFOSMESA_GLSECONDARYCOLOR3IEXT }, { "glSecondaryColor3iv", NFOSMESA_GLSECONDARYCOLOR3IV }, { "glSecondaryColor3ivEXT", NFOSMESA_GLSECONDARYCOLOR3IVEXT }, { "glSecondaryColor3s", NFOSMESA_GLSECONDARYCOLOR3S }, { "glSecondaryColor3sEXT", NFOSMESA_GLSECONDARYCOLOR3SEXT }, { "glSecondaryColor3sv", NFOSMESA_GLSECONDARYCOLOR3SV }, { "glSecondaryColor3svEXT", NFOSMESA_GLSECONDARYCOLOR3SVEXT }, { "glSecondaryColor3ub", NFOSMESA_GLSECONDARYCOLOR3UB }, { "glSecondaryColor3ubEXT", NFOSMESA_GLSECONDARYCOLOR3UBEXT }, { "glSecondaryColor3ubv", NFOSMESA_GLSECONDARYCOLOR3UBV }, { "glSecondaryColor3ubvEXT", NFOSMESA_GLSECONDARYCOLOR3UBVEXT }, { "glSecondaryColor3ui", NFOSMESA_GLSECONDARYCOLOR3UI }, { "glSecondaryColor3uiEXT", NFOSMESA_GLSECONDARYCOLOR3UIEXT }, { "glSecondaryColor3uiv", NFOSMESA_GLSECONDARYCOLOR3UIV }, { "glSecondaryColor3uivEXT", NFOSMESA_GLSECONDARYCOLOR3UIVEXT }, { "glSecondaryColor3us", NFOSMESA_GLSECONDARYCOLOR3US }, { "glSecondaryColor3usEXT", NFOSMESA_GLSECONDARYCOLOR3USEXT }, { "glSecondaryColor3usv", NFOSMESA_GLSECONDARYCOLOR3USV }, { "glSecondaryColor3usvEXT", NFOSMESA_GLSECONDARYCOLOR3USVEXT }, { "glSecondaryColorFormatNV", NFOSMESA_GLSECONDARYCOLORFORMATNV }, { "glSecondaryColorP3ui", NFOSMESA_GLSECONDARYCOLORP3UI }, { "glSecondaryColorP3uiv", NFOSMESA_GLSECONDARYCOLORP3UIV }, { "glSecondaryColorPointer", NFOSMESA_GLSECONDARYCOLORPOINTER }, { "glSecondaryColorPointerEXT", NFOSMESA_GLSECONDARYCOLORPOINTEREXT }, { "glSecondaryColorPointerListIBM", NFOSMESA_GLSECONDARYCOLORPOINTERLISTIBM }, { "glSelectBuffer", NFOSMESA_GLSELECTBUFFER }, { "glSelectPerfMonitorCountersAMD", NFOSMESA_GLSELECTPERFMONITORCOUNTERSAMD }, { "glSemaphoreParameterui64vEXT", NFOSMESA_GLSEMAPHOREPARAMETERUI64VEXT }, { "glSeparableFilter2D", NFOSMESA_GLSEPARABLEFILTER2D }, { "glSeparableFilter2DEXT", NFOSMESA_GLSEPARABLEFILTER2DEXT }, { "glSetFenceAPPLE", NFOSMESA_GLSETFENCEAPPLE }, { "glSetFenceNV", NFOSMESA_GLSETFENCENV }, { "glSetFragmentShaderConstantATI", NFOSMESA_GLSETFRAGMENTSHADERCONSTANTATI }, { "glSetInvariantEXT", NFOSMESA_GLSETINVARIANTEXT }, { "glSetLocalConstantEXT", NFOSMESA_GLSETLOCALCONSTANTEXT }, { "glSetMultisamplefvAMD", NFOSMESA_GLSETMULTISAMPLEFVAMD }, { "glShadeModel", NFOSMESA_GLSHADEMODEL }, { "glShaderBinary", NFOSMESA_GLSHADERBINARY }, { "glShaderOp1EXT", NFOSMESA_GLSHADEROP1EXT }, { "glShaderOp2EXT", NFOSMESA_GLSHADEROP2EXT }, { "glShaderOp3EXT", NFOSMESA_GLSHADEROP3EXT }, { "glShaderSource", NFOSMESA_GLSHADERSOURCE }, { "glShaderSourceARB", NFOSMESA_GLSHADERSOURCEARB }, { "glShaderStorageBlockBinding", NFOSMESA_GLSHADERSTORAGEBLOCKBINDING }, { "glSharpenTexFuncSGIS", NFOSMESA_GLSHARPENTEXFUNCSGIS }, { "glSignalSemaphoreEXT", NFOSMESA_GLSIGNALSEMAPHOREEXT }, { "glSignalVkFenceNV", NFOSMESA_GLSIGNALVKFENCENV }, { "glSignalVkSemaphoreNV", NFOSMESA_GLSIGNALVKSEMAPHORENV }, { "glSpecializeShader", NFOSMESA_GLSPECIALIZESHADER }, { "glSpecializeShaderARB", NFOSMESA_GLSPECIALIZESHADERARB }, { "glSpriteParameterfSGIX", NFOSMESA_GLSPRITEPARAMETERFSGIX }, { "glSpriteParameterfvSGIX", NFOSMESA_GLSPRITEPARAMETERFVSGIX }, { "glSpriteParameteriSGIX", NFOSMESA_GLSPRITEPARAMETERISGIX }, { "glSpriteParameterivSGIX", NFOSMESA_GLSPRITEPARAMETERIVSGIX }, { "glStartInstrumentsSGIX", NFOSMESA_GLSTARTINSTRUMENTSSGIX }, { "glStateCaptureNV", NFOSMESA_GLSTATECAPTURENV }, { "glStencilClearTagEXT", NFOSMESA_GLSTENCILCLEARTAGEXT }, { "glStencilFillPathInstancedNV", NFOSMESA_GLSTENCILFILLPATHINSTANCEDNV }, { "glStencilFillPathNV", NFOSMESA_GLSTENCILFILLPATHNV }, { "glStencilFunc", NFOSMESA_GLSTENCILFUNC }, { "glStencilFuncSeparate", NFOSMESA_GLSTENCILFUNCSEPARATE }, { "glStencilFuncSeparateATI", NFOSMESA_GLSTENCILFUNCSEPARATEATI }, { "glStencilMask", NFOSMESA_GLSTENCILMASK }, { "glStencilMaskSeparate", NFOSMESA_GLSTENCILMASKSEPARATE }, { "glStencilOp", NFOSMESA_GLSTENCILOP }, { "glStencilOpSeparate", NFOSMESA_GLSTENCILOPSEPARATE }, { "glStencilOpSeparateATI", NFOSMESA_GLSTENCILOPSEPARATEATI }, { "glStencilOpValueAMD", NFOSMESA_GLSTENCILOPVALUEAMD }, { "glStencilStrokePathInstancedNV", NFOSMESA_GLSTENCILSTROKEPATHINSTANCEDNV }, { "glStencilStrokePathNV", NFOSMESA_GLSTENCILSTROKEPATHNV }, { "glStencilThenCoverFillPathInstancedNV", NFOSMESA_GLSTENCILTHENCOVERFILLPATHINSTANCEDNV }, { "glStencilThenCoverFillPathNV", NFOSMESA_GLSTENCILTHENCOVERFILLPATHNV }, { "glStencilThenCoverStrokePathInstancedNV", NFOSMESA_GLSTENCILTHENCOVERSTROKEPATHINSTANCEDNV }, { "glStencilThenCoverStrokePathNV", NFOSMESA_GLSTENCILTHENCOVERSTROKEPATHNV }, { "glStopInstrumentsSGIX", NFOSMESA_GLSTOPINSTRUMENTSSGIX }, { "glStringMarkerGREMEDY", NFOSMESA_GLSTRINGMARKERGREMEDY }, { "glSubpixelPrecisionBiasNV", NFOSMESA_GLSUBPIXELPRECISIONBIASNV }, { "glSwapAPPLE", NFOSMESA_GLSWAPAPPLE }, { "glSwizzleEXT", NFOSMESA_GLSWIZZLEEXT }, { "glSyncTextureINTEL", NFOSMESA_GLSYNCTEXTUREINTEL }, { "glTagSampleBufferSGIX", NFOSMESA_GLTAGSAMPLEBUFFERSGIX }, { "glTangent3bEXT", NFOSMESA_GLTANGENT3BEXT }, { "glTangent3bvEXT", NFOSMESA_GLTANGENT3BVEXT }, { "glTangent3dEXT", NFOSMESA_GLTANGENT3DEXT }, { "glTangent3dvEXT", NFOSMESA_GLTANGENT3DVEXT }, { "glTangent3fEXT", NFOSMESA_GLTANGENT3FEXT }, { "glTangent3fvEXT", NFOSMESA_GLTANGENT3FVEXT }, { "glTangent3iEXT", NFOSMESA_GLTANGENT3IEXT }, { "glTangent3ivEXT", NFOSMESA_GLTANGENT3IVEXT }, { "glTangent3sEXT", NFOSMESA_GLTANGENT3SEXT }, { "glTangent3svEXT", NFOSMESA_GLTANGENT3SVEXT }, { "glTangentPointerEXT", NFOSMESA_GLTANGENTPOINTEREXT }, { "glTbufferMask3DFX", NFOSMESA_GLTBUFFERMASK3DFX }, { "glTessellationFactorAMD", NFOSMESA_GLTESSELLATIONFACTORAMD }, { "glTessellationModeAMD", NFOSMESA_GLTESSELLATIONMODEAMD }, { "glTestFenceAPPLE", NFOSMESA_GLTESTFENCEAPPLE }, { "glTestFenceNV", NFOSMESA_GLTESTFENCENV }, { "glTestObjectAPPLE", NFOSMESA_GLTESTOBJECTAPPLE }, { "glTexBuffer", NFOSMESA_GLTEXBUFFER }, { "glTexBufferARB", NFOSMESA_GLTEXBUFFERARB }, { "glTexBufferEXT", NFOSMESA_GLTEXBUFFEREXT }, { "glTexBufferRange", NFOSMESA_GLTEXBUFFERRANGE }, { "glTexBumpParameterfvATI", NFOSMESA_GLTEXBUMPPARAMETERFVATI }, { "glTexBumpParameterivATI", NFOSMESA_GLTEXBUMPPARAMETERIVATI }, { "glTexCoord1bOES", NFOSMESA_GLTEXCOORD1BOES }, { "glTexCoord1bvOES", NFOSMESA_GLTEXCOORD1BVOES }, { "glTexCoord1d", NFOSMESA_GLTEXCOORD1D }, { "glTexCoord1dv", NFOSMESA_GLTEXCOORD1DV }, { "glTexCoord1f", NFOSMESA_GLTEXCOORD1F }, { "glTexCoord1fv", NFOSMESA_GLTEXCOORD1FV }, { "glTexCoord1hNV", NFOSMESA_GLTEXCOORD1HNV }, { "glTexCoord1hvNV", NFOSMESA_GLTEXCOORD1HVNV }, { "glTexCoord1i", NFOSMESA_GLTEXCOORD1I }, { "glTexCoord1iv", NFOSMESA_GLTEXCOORD1IV }, { "glTexCoord1s", NFOSMESA_GLTEXCOORD1S }, { "glTexCoord1sv", NFOSMESA_GLTEXCOORD1SV }, { "glTexCoord1xOES", NFOSMESA_GLTEXCOORD1XOES }, { "glTexCoord1xvOES", NFOSMESA_GLTEXCOORD1XVOES }, { "glTexCoord2bOES", NFOSMESA_GLTEXCOORD2BOES }, { "glTexCoord2bvOES", NFOSMESA_GLTEXCOORD2BVOES }, { "glTexCoord2d", NFOSMESA_GLTEXCOORD2D }, { "glTexCoord2dv", NFOSMESA_GLTEXCOORD2DV }, { "glTexCoord2f", NFOSMESA_GLTEXCOORD2F }, { "glTexCoord2fColor3fVertex3fSUN", NFOSMESA_GLTEXCOORD2FCOLOR3FVERTEX3FSUN }, { "glTexCoord2fColor3fVertex3fvSUN", NFOSMESA_GLTEXCOORD2FCOLOR3FVERTEX3FVSUN }, { "glTexCoord2fColor4fNormal3fVertex3fSUN", NFOSMESA_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN }, { "glTexCoord2fColor4fNormal3fVertex3fvSUN", NFOSMESA_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN }, { "glTexCoord2fColor4ubVertex3fSUN", NFOSMESA_GLTEXCOORD2FCOLOR4UBVERTEX3FSUN }, { "glTexCoord2fColor4ubVertex3fvSUN", NFOSMESA_GLTEXCOORD2FCOLOR4UBVERTEX3FVSUN }, { "glTexCoord2fNormal3fVertex3fSUN", NFOSMESA_GLTEXCOORD2FNORMAL3FVERTEX3FSUN }, { "glTexCoord2fNormal3fVertex3fvSUN", NFOSMESA_GLTEXCOORD2FNORMAL3FVERTEX3FVSUN }, { "glTexCoord2fVertex3fSUN", NFOSMESA_GLTEXCOORD2FVERTEX3FSUN }, { "glTexCoord2fVertex3fvSUN", NFOSMESA_GLTEXCOORD2FVERTEX3FVSUN }, { "glTexCoord2fv", NFOSMESA_GLTEXCOORD2FV }, { "glTexCoord2hNV", NFOSMESA_GLTEXCOORD2HNV }, { "glTexCoord2hvNV", NFOSMESA_GLTEXCOORD2HVNV }, { "glTexCoord2i", NFOSMESA_GLTEXCOORD2I }, { "glTexCoord2iv", NFOSMESA_GLTEXCOORD2IV }, { "glTexCoord2s", NFOSMESA_GLTEXCOORD2S }, { "glTexCoord2sv", NFOSMESA_GLTEXCOORD2SV }, { "glTexCoord2xOES", NFOSMESA_GLTEXCOORD2XOES }, { "glTexCoord2xvOES", NFOSMESA_GLTEXCOORD2XVOES }, { "glTexCoord3bOES", NFOSMESA_GLTEXCOORD3BOES }, { "glTexCoord3bvOES", NFOSMESA_GLTEXCOORD3BVOES }, { "glTexCoord3d", NFOSMESA_GLTEXCOORD3D }, { "glTexCoord3dv", NFOSMESA_GLTEXCOORD3DV }, { "glTexCoord3f", NFOSMESA_GLTEXCOORD3F }, { "glTexCoord3fv", NFOSMESA_GLTEXCOORD3FV }, { "glTexCoord3hNV", NFOSMESA_GLTEXCOORD3HNV }, { "glTexCoord3hvNV", NFOSMESA_GLTEXCOORD3HVNV }, { "glTexCoord3i", NFOSMESA_GLTEXCOORD3I }, { "glTexCoord3iv", NFOSMESA_GLTEXCOORD3IV }, { "glTexCoord3s", NFOSMESA_GLTEXCOORD3S }, { "glTexCoord3sv", NFOSMESA_GLTEXCOORD3SV }, { "glTexCoord3xOES", NFOSMESA_GLTEXCOORD3XOES }, { "glTexCoord3xvOES", NFOSMESA_GLTEXCOORD3XVOES }, { "glTexCoord4bOES", NFOSMESA_GLTEXCOORD4BOES }, { "glTexCoord4bvOES", NFOSMESA_GLTEXCOORD4BVOES }, { "glTexCoord4d", NFOSMESA_GLTEXCOORD4D }, { "glTexCoord4dv", NFOSMESA_GLTEXCOORD4DV }, { "glTexCoord4f", NFOSMESA_GLTEXCOORD4F }, { "glTexCoord4fColor4fNormal3fVertex4fSUN", NFOSMESA_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUN }, { "glTexCoord4fColor4fNormal3fVertex4fvSUN", NFOSMESA_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUN }, { "glTexCoord4fVertex4fSUN", NFOSMESA_GLTEXCOORD4FVERTEX4FSUN }, { "glTexCoord4fVertex4fvSUN", NFOSMESA_GLTEXCOORD4FVERTEX4FVSUN }, { "glTexCoord4fv", NFOSMESA_GLTEXCOORD4FV }, { "glTexCoord4hNV", NFOSMESA_GLTEXCOORD4HNV }, { "glTexCoord4hvNV", NFOSMESA_GLTEXCOORD4HVNV }, { "glTexCoord4i", NFOSMESA_GLTEXCOORD4I }, { "glTexCoord4iv", NFOSMESA_GLTEXCOORD4IV }, { "glTexCoord4s", NFOSMESA_GLTEXCOORD4S }, { "glTexCoord4sv", NFOSMESA_GLTEXCOORD4SV }, { "glTexCoord4xOES", NFOSMESA_GLTEXCOORD4XOES }, { "glTexCoord4xvOES", NFOSMESA_GLTEXCOORD4XVOES }, { "glTexCoordFormatNV", NFOSMESA_GLTEXCOORDFORMATNV }, { "glTexCoordP1ui", NFOSMESA_GLTEXCOORDP1UI }, { "glTexCoordP1uiv", NFOSMESA_GLTEXCOORDP1UIV }, { "glTexCoordP2ui", NFOSMESA_GLTEXCOORDP2UI }, { "glTexCoordP2uiv", NFOSMESA_GLTEXCOORDP2UIV }, { "glTexCoordP3ui", NFOSMESA_GLTEXCOORDP3UI }, { "glTexCoordP3uiv", NFOSMESA_GLTEXCOORDP3UIV }, { "glTexCoordP4ui", NFOSMESA_GLTEXCOORDP4UI }, { "glTexCoordP4uiv", NFOSMESA_GLTEXCOORDP4UIV }, { "glTexCoordPointer", NFOSMESA_GLTEXCOORDPOINTER }, { "glTexCoordPointerEXT", NFOSMESA_GLTEXCOORDPOINTEREXT }, { "glTexCoordPointerListIBM", NFOSMESA_GLTEXCOORDPOINTERLISTIBM }, { "glTexCoordPointervINTEL", NFOSMESA_GLTEXCOORDPOINTERVINTEL }, { "glTexEnvf", NFOSMESA_GLTEXENVF }, { "glTexEnvfv", NFOSMESA_GLTEXENVFV }, { "glTexEnvi", NFOSMESA_GLTEXENVI }, { "glTexEnviv", NFOSMESA_GLTEXENVIV }, { "glTexEnvxOES", NFOSMESA_GLTEXENVXOES }, { "glTexEnvxvOES", NFOSMESA_GLTEXENVXVOES }, { "glTexFilterFuncSGIS", NFOSMESA_GLTEXFILTERFUNCSGIS }, { "glTexGend", NFOSMESA_GLTEXGEND }, { "glTexGendv", NFOSMESA_GLTEXGENDV }, { "glTexGenf", NFOSMESA_GLTEXGENF }, { "glTexGenfv", NFOSMESA_GLTEXGENFV }, { "glTexGeni", NFOSMESA_GLTEXGENI }, { "glTexGeniv", NFOSMESA_GLTEXGENIV }, { "glTexGenxOES", NFOSMESA_GLTEXGENXOES }, { "glTexGenxvOES", NFOSMESA_GLTEXGENXVOES }, { "glTexImage1D", NFOSMESA_GLTEXIMAGE1D }, { "glTexImage2D", NFOSMESA_GLTEXIMAGE2D }, { "glTexImage2DMultisample", NFOSMESA_GLTEXIMAGE2DMULTISAMPLE }, { "glTexImage2DMultisampleCoverageNV", NFOSMESA_GLTEXIMAGE2DMULTISAMPLECOVERAGENV }, { "glTexImage3D", NFOSMESA_GLTEXIMAGE3D }, { "glTexImage3DEXT", NFOSMESA_GLTEXIMAGE3DEXT }, { "glTexImage3DMultisample", NFOSMESA_GLTEXIMAGE3DMULTISAMPLE }, { "glTexImage3DMultisampleCoverageNV", NFOSMESA_GLTEXIMAGE3DMULTISAMPLECOVERAGENV }, { "glTexImage4DSGIS", NFOSMESA_GLTEXIMAGE4DSGIS }, { "glTexPageCommitmentARB", NFOSMESA_GLTEXPAGECOMMITMENTARB }, { "glTexParameterIiv", NFOSMESA_GLTEXPARAMETERIIV }, { "glTexParameterIivEXT", NFOSMESA_GLTEXPARAMETERIIVEXT }, { "glTexParameterIuiv", NFOSMESA_GLTEXPARAMETERIUIV }, { "glTexParameterIuivEXT", NFOSMESA_GLTEXPARAMETERIUIVEXT }, { "glTexParameterf", NFOSMESA_GLTEXPARAMETERF }, { "glTexParameterfv", NFOSMESA_GLTEXPARAMETERFV }, { "glTexParameteri", NFOSMESA_GLTEXPARAMETERI }, { "glTexParameteriv", NFOSMESA_GLTEXPARAMETERIV }, { "glTexParameterxOES", NFOSMESA_GLTEXPARAMETERXOES }, { "glTexParameterxvOES", NFOSMESA_GLTEXPARAMETERXVOES }, { "glTexRenderbufferNV", NFOSMESA_GLTEXRENDERBUFFERNV }, { "glTexScissorFuncINTEL", NFOSMESA_GLTEXSCISSORFUNCINTEL }, { "glTexScissorINTEL", NFOSMESA_GLTEXSCISSORINTEL }, { "glTexStorage1D", NFOSMESA_GLTEXSTORAGE1D }, { "glTexStorage2D", NFOSMESA_GLTEXSTORAGE2D }, { "glTexStorage2DMultisample", NFOSMESA_GLTEXSTORAGE2DMULTISAMPLE }, { "glTexStorage3D", NFOSMESA_GLTEXSTORAGE3D }, { "glTexStorage3DMultisample", NFOSMESA_GLTEXSTORAGE3DMULTISAMPLE }, { "glTexStorageMem1DEXT", NFOSMESA_GLTEXSTORAGEMEM1DEXT }, { "glTexStorageMem2DEXT", NFOSMESA_GLTEXSTORAGEMEM2DEXT }, { "glTexStorageMem2DMultisampleEXT", NFOSMESA_GLTEXSTORAGEMEM2DMULTISAMPLEEXT }, { "glTexStorageMem3DEXT", NFOSMESA_GLTEXSTORAGEMEM3DEXT }, { "glTexStorageMem3DMultisampleEXT", NFOSMESA_GLTEXSTORAGEMEM3DMULTISAMPLEEXT }, { "glTexStorageSparseAMD", NFOSMESA_GLTEXSTORAGESPARSEAMD }, { "glTexSubImage1D", NFOSMESA_GLTEXSUBIMAGE1D }, { "glTexSubImage1DEXT", NFOSMESA_GLTEXSUBIMAGE1DEXT }, { "glTexSubImage2D", NFOSMESA_GLTEXSUBIMAGE2D }, { "glTexSubImage2DEXT", NFOSMESA_GLTEXSUBIMAGE2DEXT }, { "glTexSubImage3D", NFOSMESA_GLTEXSUBIMAGE3D }, { "glTexSubImage3DEXT", NFOSMESA_GLTEXSUBIMAGE3DEXT }, { "glTexSubImage4DSGIS", NFOSMESA_GLTEXSUBIMAGE4DSGIS }, { "glTextureBarrier", NFOSMESA_GLTEXTUREBARRIER }, { "glTextureBarrierNV", NFOSMESA_GLTEXTUREBARRIERNV }, { "glTextureBuffer", NFOSMESA_GLTEXTUREBUFFER }, { "glTextureBufferEXT", NFOSMESA_GLTEXTUREBUFFEREXT }, { "glTextureBufferRange", NFOSMESA_GLTEXTUREBUFFERRANGE }, { "glTextureBufferRangeEXT", NFOSMESA_GLTEXTUREBUFFERRANGEEXT }, { "glTextureColorMaskSGIS", NFOSMESA_GLTEXTURECOLORMASKSGIS }, { "glTextureFogSGIX", NFOSMESA_GLTEXTUREFOGSGIX }, { "glTextureImage1DEXT", NFOSMESA_GLTEXTUREIMAGE1DEXT }, { "glTextureImage2DEXT", NFOSMESA_GLTEXTUREIMAGE2DEXT }, { "glTextureImage2DMultisampleCoverageNV", NFOSMESA_GLTEXTUREIMAGE2DMULTISAMPLECOVERAGENV }, { "glTextureImage2DMultisampleNV", NFOSMESA_GLTEXTUREIMAGE2DMULTISAMPLENV }, { "glTextureImage3DEXT", NFOSMESA_GLTEXTUREIMAGE3DEXT }, { "glTextureImage3DMultisampleCoverageNV", NFOSMESA_GLTEXTUREIMAGE3DMULTISAMPLECOVERAGENV }, { "glTextureImage3DMultisampleNV", NFOSMESA_GLTEXTUREIMAGE3DMULTISAMPLENV }, { "glTextureLightEXT", NFOSMESA_GLTEXTURELIGHTEXT }, { "glTextureMaterialEXT", NFOSMESA_GLTEXTUREMATERIALEXT }, { "glTextureNormalEXT", NFOSMESA_GLTEXTURENORMALEXT }, { "glTexturePageCommitmentEXT", NFOSMESA_GLTEXTUREPAGECOMMITMENTEXT }, { "glTextureParameterIiv", NFOSMESA_GLTEXTUREPARAMETERIIV }, { "glTextureParameterIivEXT", NFOSMESA_GLTEXTUREPARAMETERIIVEXT }, { "glTextureParameterIuiv", NFOSMESA_GLTEXTUREPARAMETERIUIV }, { "glTextureParameterIuivEXT", NFOSMESA_GLTEXTUREPARAMETERIUIVEXT }, { "glTextureParameterf", NFOSMESA_GLTEXTUREPARAMETERF }, { "glTextureParameterfEXT", NFOSMESA_GLTEXTUREPARAMETERFEXT }, { "glTextureParameterfv", NFOSMESA_GLTEXTUREPARAMETERFV }, { "glTextureParameterfvEXT", NFOSMESA_GLTEXTUREPARAMETERFVEXT }, { "glTextureParameteri", NFOSMESA_GLTEXTUREPARAMETERI }, { "glTextureParameteriEXT", NFOSMESA_GLTEXTUREPARAMETERIEXT }, { "glTextureParameteriv", NFOSMESA_GLTEXTUREPARAMETERIV }, { "glTextureParameterivEXT", NFOSMESA_GLTEXTUREPARAMETERIVEXT }, { "glTextureRangeAPPLE", NFOSMESA_GLTEXTURERANGEAPPLE }, { "glTextureRenderbufferEXT", NFOSMESA_GLTEXTURERENDERBUFFEREXT }, { "glTextureStorage1D", NFOSMESA_GLTEXTURESTORAGE1D }, { "glTextureStorage1DEXT", NFOSMESA_GLTEXTURESTORAGE1DEXT }, { "glTextureStorage2D", NFOSMESA_GLTEXTURESTORAGE2D }, { "glTextureStorage2DEXT", NFOSMESA_GLTEXTURESTORAGE2DEXT }, { "glTextureStorage2DMultisample", NFOSMESA_GLTEXTURESTORAGE2DMULTISAMPLE }, { "glTextureStorage2DMultisampleEXT", NFOSMESA_GLTEXTURESTORAGE2DMULTISAMPLEEXT }, { "glTextureStorage3D", NFOSMESA_GLTEXTURESTORAGE3D }, { "glTextureStorage3DEXT", NFOSMESA_GLTEXTURESTORAGE3DEXT }, { "glTextureStorage3DMultisample", NFOSMESA_GLTEXTURESTORAGE3DMULTISAMPLE }, { "glTextureStorage3DMultisampleEXT", NFOSMESA_GLTEXTURESTORAGE3DMULTISAMPLEEXT }, { "glTextureStorageMem1DEXT", NFOSMESA_GLTEXTURESTORAGEMEM1DEXT }, { "glTextureStorageMem2DEXT", NFOSMESA_GLTEXTURESTORAGEMEM2DEXT }, { "glTextureStorageMem2DMultisampleEXT", NFOSMESA_GLTEXTURESTORAGEMEM2DMULTISAMPLEEXT }, { "glTextureStorageMem3DEXT", NFOSMESA_GLTEXTURESTORAGEMEM3DEXT }, { "glTextureStorageMem3DMultisampleEXT", NFOSMESA_GLTEXTURESTORAGEMEM3DMULTISAMPLEEXT }, { "glTextureStorageSparseAMD", NFOSMESA_GLTEXTURESTORAGESPARSEAMD }, { "glTextureSubImage1D", NFOSMESA_GLTEXTURESUBIMAGE1D }, { "glTextureSubImage1DEXT", NFOSMESA_GLTEXTURESUBIMAGE1DEXT }, { "glTextureSubImage2D", NFOSMESA_GLTEXTURESUBIMAGE2D }, { "glTextureSubImage2DEXT", NFOSMESA_GLTEXTURESUBIMAGE2DEXT }, { "glTextureSubImage3D", NFOSMESA_GLTEXTURESUBIMAGE3D }, { "glTextureSubImage3DEXT", NFOSMESA_GLTEXTURESUBIMAGE3DEXT }, { "glTextureView", NFOSMESA_GLTEXTUREVIEW }, { "glTraceAssertAttribMESA", NFOSMESA_GLTRACEASSERTATTRIBMESA }, { "glTraceCommentMESA", NFOSMESA_GLTRACECOMMENTMESA }, { "glTraceListMESA", NFOSMESA_GLTRACELISTMESA }, { "glTracePointerMESA", NFOSMESA_GLTRACEPOINTERMESA }, { "glTracePointerRangeMESA", NFOSMESA_GLTRACEPOINTERRANGEMESA }, { "glTraceTextureMESA", NFOSMESA_GLTRACETEXTUREMESA }, { "glTrackMatrixNV", NFOSMESA_GLTRACKMATRIXNV }, { "glTransformFeedbackAttribsNV", NFOSMESA_GLTRANSFORMFEEDBACKATTRIBSNV }, { "glTransformFeedbackBufferBase", NFOSMESA_GLTRANSFORMFEEDBACKBUFFERBASE }, { "glTransformFeedbackBufferRange", NFOSMESA_GLTRANSFORMFEEDBACKBUFFERRANGE }, { "glTransformFeedbackStreamAttribsNV", NFOSMESA_GLTRANSFORMFEEDBACKSTREAMATTRIBSNV }, { "glTransformFeedbackVaryings", NFOSMESA_GLTRANSFORMFEEDBACKVARYINGS }, { "glTransformFeedbackVaryingsEXT", NFOSMESA_GLTRANSFORMFEEDBACKVARYINGSEXT }, { "glTransformFeedbackVaryingsNV", NFOSMESA_GLTRANSFORMFEEDBACKVARYINGSNV }, { "glTransformPathNV", NFOSMESA_GLTRANSFORMPATHNV }, { "glTranslated", NFOSMESA_GLTRANSLATED }, { "glTranslatef", NFOSMESA_GLTRANSLATEF }, { "glTranslatexOES", NFOSMESA_GLTRANSLATEXOES }, { "glUniform1d", NFOSMESA_GLUNIFORM1D }, { "glUniform1dv", NFOSMESA_GLUNIFORM1DV }, { "glUniform1f", NFOSMESA_GLUNIFORM1F }, { "glUniform1fARB", NFOSMESA_GLUNIFORM1FARB }, { "glUniform1fv", NFOSMESA_GLUNIFORM1FV }, { "glUniform1fvARB", NFOSMESA_GLUNIFORM1FVARB }, { "glUniform1i", NFOSMESA_GLUNIFORM1I }, { "glUniform1i64ARB", NFOSMESA_GLUNIFORM1I64ARB }, { "glUniform1i64NV", NFOSMESA_GLUNIFORM1I64NV }, { "glUniform1i64vARB", NFOSMESA_GLUNIFORM1I64VARB }, { "glUniform1i64vNV", NFOSMESA_GLUNIFORM1I64VNV }, { "glUniform1iARB", NFOSMESA_GLUNIFORM1IARB }, { "glUniform1iv", NFOSMESA_GLUNIFORM1IV }, { "glUniform1ivARB", NFOSMESA_GLUNIFORM1IVARB }, { "glUniform1ui", NFOSMESA_GLUNIFORM1UI }, { "glUniform1ui64ARB", NFOSMESA_GLUNIFORM1UI64ARB }, { "glUniform1ui64NV", NFOSMESA_GLUNIFORM1UI64NV }, { "glUniform1ui64vARB", NFOSMESA_GLUNIFORM1UI64VARB }, { "glUniform1ui64vNV", NFOSMESA_GLUNIFORM1UI64VNV }, { "glUniform1uiEXT", NFOSMESA_GLUNIFORM1UIEXT }, { "glUniform1uiv", NFOSMESA_GLUNIFORM1UIV }, { "glUniform1uivEXT", NFOSMESA_GLUNIFORM1UIVEXT }, { "glUniform2d", NFOSMESA_GLUNIFORM2D }, { "glUniform2dv", NFOSMESA_GLUNIFORM2DV }, { "glUniform2f", NFOSMESA_GLUNIFORM2F }, { "glUniform2fARB", NFOSMESA_GLUNIFORM2FARB }, { "glUniform2fv", NFOSMESA_GLUNIFORM2FV }, { "glUniform2fvARB", NFOSMESA_GLUNIFORM2FVARB }, { "glUniform2i", NFOSMESA_GLUNIFORM2I }, { "glUniform2i64ARB", NFOSMESA_GLUNIFORM2I64ARB }, { "glUniform2i64NV", NFOSMESA_GLUNIFORM2I64NV }, { "glUniform2i64vARB", NFOSMESA_GLUNIFORM2I64VARB }, { "glUniform2i64vNV", NFOSMESA_GLUNIFORM2I64VNV }, { "glUniform2iARB", NFOSMESA_GLUNIFORM2IARB }, { "glUniform2iv", NFOSMESA_GLUNIFORM2IV }, { "glUniform2ivARB", NFOSMESA_GLUNIFORM2IVARB }, { "glUniform2ui", NFOSMESA_GLUNIFORM2UI }, { "glUniform2ui64ARB", NFOSMESA_GLUNIFORM2UI64ARB }, { "glUniform2ui64NV", NFOSMESA_GLUNIFORM2UI64NV }, { "glUniform2ui64vARB", NFOSMESA_GLUNIFORM2UI64VARB }, { "glUniform2ui64vNV", NFOSMESA_GLUNIFORM2UI64VNV }, { "glUniform2uiEXT", NFOSMESA_GLUNIFORM2UIEXT }, { "glUniform2uiv", NFOSMESA_GLUNIFORM2UIV }, { "glUniform2uivEXT", NFOSMESA_GLUNIFORM2UIVEXT }, { "glUniform3d", NFOSMESA_GLUNIFORM3D }, { "glUniform3dv", NFOSMESA_GLUNIFORM3DV }, { "glUniform3f", NFOSMESA_GLUNIFORM3F }, { "glUniform3fARB", NFOSMESA_GLUNIFORM3FARB }, { "glUniform3fv", NFOSMESA_GLUNIFORM3FV }, { "glUniform3fvARB", NFOSMESA_GLUNIFORM3FVARB }, { "glUniform3i", NFOSMESA_GLUNIFORM3I }, { "glUniform3i64ARB", NFOSMESA_GLUNIFORM3I64ARB }, { "glUniform3i64NV", NFOSMESA_GLUNIFORM3I64NV }, { "glUniform3i64vARB", NFOSMESA_GLUNIFORM3I64VARB }, { "glUniform3i64vNV", NFOSMESA_GLUNIFORM3I64VNV }, { "glUniform3iARB", NFOSMESA_GLUNIFORM3IARB }, { "glUniform3iv", NFOSMESA_GLUNIFORM3IV }, { "glUniform3ivARB", NFOSMESA_GLUNIFORM3IVARB }, { "glUniform3ui", NFOSMESA_GLUNIFORM3UI }, { "glUniform3ui64ARB", NFOSMESA_GLUNIFORM3UI64ARB }, { "glUniform3ui64NV", NFOSMESA_GLUNIFORM3UI64NV }, { "glUniform3ui64vARB", NFOSMESA_GLUNIFORM3UI64VARB }, { "glUniform3ui64vNV", NFOSMESA_GLUNIFORM3UI64VNV }, { "glUniform3uiEXT", NFOSMESA_GLUNIFORM3UIEXT }, { "glUniform3uiv", NFOSMESA_GLUNIFORM3UIV }, { "glUniform3uivEXT", NFOSMESA_GLUNIFORM3UIVEXT }, { "glUniform4d", NFOSMESA_GLUNIFORM4D }, { "glUniform4dv", NFOSMESA_GLUNIFORM4DV }, { "glUniform4f", NFOSMESA_GLUNIFORM4F }, { "glUniform4fARB", NFOSMESA_GLUNIFORM4FARB }, { "glUniform4fv", NFOSMESA_GLUNIFORM4FV }, { "glUniform4fvARB", NFOSMESA_GLUNIFORM4FVARB }, { "glUniform4i", NFOSMESA_GLUNIFORM4I }, { "glUniform4i64ARB", NFOSMESA_GLUNIFORM4I64ARB }, { "glUniform4i64NV", NFOSMESA_GLUNIFORM4I64NV }, { "glUniform4i64vARB", NFOSMESA_GLUNIFORM4I64VARB }, { "glUniform4i64vNV", NFOSMESA_GLUNIFORM4I64VNV }, { "glUniform4iARB", NFOSMESA_GLUNIFORM4IARB }, { "glUniform4iv", NFOSMESA_GLUNIFORM4IV }, { "glUniform4ivARB", NFOSMESA_GLUNIFORM4IVARB }, { "glUniform4ui", NFOSMESA_GLUNIFORM4UI }, { "glUniform4ui64ARB", NFOSMESA_GLUNIFORM4UI64ARB }, { "glUniform4ui64NV", NFOSMESA_GLUNIFORM4UI64NV }, { "glUniform4ui64vARB", NFOSMESA_GLUNIFORM4UI64VARB }, { "glUniform4ui64vNV", NFOSMESA_GLUNIFORM4UI64VNV }, { "glUniform4uiEXT", NFOSMESA_GLUNIFORM4UIEXT }, { "glUniform4uiv", NFOSMESA_GLUNIFORM4UIV }, { "glUniform4uivEXT", NFOSMESA_GLUNIFORM4UIVEXT }, { "glUniformBlockBinding", NFOSMESA_GLUNIFORMBLOCKBINDING }, { "glUniformBufferEXT", NFOSMESA_GLUNIFORMBUFFEREXT }, { "glUniformHandleui64ARB", NFOSMESA_GLUNIFORMHANDLEUI64ARB }, { "glUniformHandleui64NV", NFOSMESA_GLUNIFORMHANDLEUI64NV }, { "glUniformHandleui64vARB", NFOSMESA_GLUNIFORMHANDLEUI64VARB }, { "glUniformHandleui64vNV", NFOSMESA_GLUNIFORMHANDLEUI64VNV }, { "glUniformMatrix2dv", NFOSMESA_GLUNIFORMMATRIX2DV }, { "glUniformMatrix2fv", NFOSMESA_GLUNIFORMMATRIX2FV }, { "glUniformMatrix2fvARB", NFOSMESA_GLUNIFORMMATRIX2FVARB }, { "glUniformMatrix2x3dv", NFOSMESA_GLUNIFORMMATRIX2X3DV }, { "glUniformMatrix2x3fv", NFOSMESA_GLUNIFORMMATRIX2X3FV }, { "glUniformMatrix2x4dv", NFOSMESA_GLUNIFORMMATRIX2X4DV }, { "glUniformMatrix2x4fv", NFOSMESA_GLUNIFORMMATRIX2X4FV }, { "glUniformMatrix3dv", NFOSMESA_GLUNIFORMMATRIX3DV }, { "glUniformMatrix3fv", NFOSMESA_GLUNIFORMMATRIX3FV }, { "glUniformMatrix3fvARB", NFOSMESA_GLUNIFORMMATRIX3FVARB }, { "glUniformMatrix3x2dv", NFOSMESA_GLUNIFORMMATRIX3X2DV }, { "glUniformMatrix3x2fv", NFOSMESA_GLUNIFORMMATRIX3X2FV }, { "glUniformMatrix3x4dv", NFOSMESA_GLUNIFORMMATRIX3X4DV }, { "glUniformMatrix3x4fv", NFOSMESA_GLUNIFORMMATRIX3X4FV }, { "glUniformMatrix4dv", NFOSMESA_GLUNIFORMMATRIX4DV }, { "glUniformMatrix4fv", NFOSMESA_GLUNIFORMMATRIX4FV }, { "glUniformMatrix4fvARB", NFOSMESA_GLUNIFORMMATRIX4FVARB }, { "glUniformMatrix4x2dv", NFOSMESA_GLUNIFORMMATRIX4X2DV }, { "glUniformMatrix4x2fv", NFOSMESA_GLUNIFORMMATRIX4X2FV }, { "glUniformMatrix4x3dv", NFOSMESA_GLUNIFORMMATRIX4X3DV }, { "glUniformMatrix4x3fv", NFOSMESA_GLUNIFORMMATRIX4X3FV }, { "glUniformSubroutinesuiv", NFOSMESA_GLUNIFORMSUBROUTINESUIV }, { "glUniformui64NV", NFOSMESA_GLUNIFORMUI64NV }, { "glUniformui64vNV", NFOSMESA_GLUNIFORMUI64VNV }, { "glUnlockArraysEXT", NFOSMESA_GLUNLOCKARRAYSEXT }, { "glUnmapBuffer", NFOSMESA_GLUNMAPBUFFER }, { "glUnmapBufferARB", NFOSMESA_GLUNMAPBUFFERARB }, { "glUnmapNamedBuffer", NFOSMESA_GLUNMAPNAMEDBUFFER }, { "glUnmapNamedBufferEXT", NFOSMESA_GLUNMAPNAMEDBUFFEREXT }, { "glUnmapObjectBufferATI", NFOSMESA_GLUNMAPOBJECTBUFFERATI }, { "glUnmapTexture2DINTEL", NFOSMESA_GLUNMAPTEXTURE2DINTEL }, { "glUpdateObjectBufferATI", NFOSMESA_GLUPDATEOBJECTBUFFERATI }, { "glUseProgram", NFOSMESA_GLUSEPROGRAM }, { "glUseProgramObjectARB", NFOSMESA_GLUSEPROGRAMOBJECTARB }, { "glUseProgramStages", NFOSMESA_GLUSEPROGRAMSTAGES }, { "glUseShaderProgramEXT", NFOSMESA_GLUSESHADERPROGRAMEXT }, { "glVDPAUFiniNV", NFOSMESA_GLVDPAUFININV }, { "glVDPAUGetSurfaceivNV", NFOSMESA_GLVDPAUGETSURFACEIVNV }, { "glVDPAUInitNV", NFOSMESA_GLVDPAUINITNV }, { "glVDPAUIsSurfaceNV", NFOSMESA_GLVDPAUISSURFACENV }, { "glVDPAUMapSurfacesNV", NFOSMESA_GLVDPAUMAPSURFACESNV }, { "glVDPAURegisterOutputSurfaceNV", NFOSMESA_GLVDPAUREGISTEROUTPUTSURFACENV }, { "glVDPAURegisterVideoSurfaceNV", NFOSMESA_GLVDPAUREGISTERVIDEOSURFACENV }, { "glVDPAUSurfaceAccessNV", NFOSMESA_GLVDPAUSURFACEACCESSNV }, { "glVDPAUUnmapSurfacesNV", NFOSMESA_GLVDPAUUNMAPSURFACESNV }, { "glVDPAUUnregisterSurfaceNV", NFOSMESA_GLVDPAUUNREGISTERSURFACENV }, { "glValidateProgram", NFOSMESA_GLVALIDATEPROGRAM }, { "glValidateProgramARB", NFOSMESA_GLVALIDATEPROGRAMARB }, { "glValidateProgramPipeline", NFOSMESA_GLVALIDATEPROGRAMPIPELINE }, { "glVariantArrayObjectATI", NFOSMESA_GLVARIANTARRAYOBJECTATI }, { "glVariantPointerEXT", NFOSMESA_GLVARIANTPOINTEREXT }, { "glVariantbvEXT", NFOSMESA_GLVARIANTBVEXT }, { "glVariantdvEXT", NFOSMESA_GLVARIANTDVEXT }, { "glVariantfvEXT", NFOSMESA_GLVARIANTFVEXT }, { "glVariantivEXT", NFOSMESA_GLVARIANTIVEXT }, { "glVariantsvEXT", NFOSMESA_GLVARIANTSVEXT }, { "glVariantubvEXT", NFOSMESA_GLVARIANTUBVEXT }, { "glVariantuivEXT", NFOSMESA_GLVARIANTUIVEXT }, { "glVariantusvEXT", NFOSMESA_GLVARIANTUSVEXT }, { "glVertex2bOES", NFOSMESA_GLVERTEX2BOES }, { "glVertex2bvOES", NFOSMESA_GLVERTEX2BVOES }, { "glVertex2d", NFOSMESA_GLVERTEX2D }, { "glVertex2dv", NFOSMESA_GLVERTEX2DV }, { "glVertex2f", NFOSMESA_GLVERTEX2F }, { "glVertex2fv", NFOSMESA_GLVERTEX2FV }, { "glVertex2hNV", NFOSMESA_GLVERTEX2HNV }, { "glVertex2hvNV", NFOSMESA_GLVERTEX2HVNV }, { "glVertex2i", NFOSMESA_GLVERTEX2I }, { "glVertex2iv", NFOSMESA_GLVERTEX2IV }, { "glVertex2s", NFOSMESA_GLVERTEX2S }, { "glVertex2sv", NFOSMESA_GLVERTEX2SV }, { "glVertex2xOES", NFOSMESA_GLVERTEX2XOES }, { "glVertex2xvOES", NFOSMESA_GLVERTEX2XVOES }, { "glVertex3bOES", NFOSMESA_GLVERTEX3BOES }, { "glVertex3bvOES", NFOSMESA_GLVERTEX3BVOES }, { "glVertex3d", NFOSMESA_GLVERTEX3D }, { "glVertex3dv", NFOSMESA_GLVERTEX3DV }, { "glVertex3f", NFOSMESA_GLVERTEX3F }, { "glVertex3fv", NFOSMESA_GLVERTEX3FV }, { "glVertex3hNV", NFOSMESA_GLVERTEX3HNV }, { "glVertex3hvNV", NFOSMESA_GLVERTEX3HVNV }, { "glVertex3i", NFOSMESA_GLVERTEX3I }, { "glVertex3iv", NFOSMESA_GLVERTEX3IV }, { "glVertex3s", NFOSMESA_GLVERTEX3S }, { "glVertex3sv", NFOSMESA_GLVERTEX3SV }, { "glVertex3xOES", NFOSMESA_GLVERTEX3XOES }, { "glVertex3xvOES", NFOSMESA_GLVERTEX3XVOES }, { "glVertex4bOES", NFOSMESA_GLVERTEX4BOES }, { "glVertex4bvOES", NFOSMESA_GLVERTEX4BVOES }, { "glVertex4d", NFOSMESA_GLVERTEX4D }, { "glVertex4dv", NFOSMESA_GLVERTEX4DV }, { "glVertex4f", NFOSMESA_GLVERTEX4F }, { "glVertex4fv", NFOSMESA_GLVERTEX4FV }, { "glVertex4hNV", NFOSMESA_GLVERTEX4HNV }, { "glVertex4hvNV", NFOSMESA_GLVERTEX4HVNV }, { "glVertex4i", NFOSMESA_GLVERTEX4I }, { "glVertex4iv", NFOSMESA_GLVERTEX4IV }, { "glVertex4s", NFOSMESA_GLVERTEX4S }, { "glVertex4sv", NFOSMESA_GLVERTEX4SV }, { "glVertex4xOES", NFOSMESA_GLVERTEX4XOES }, { "glVertex4xvOES", NFOSMESA_GLVERTEX4XVOES }, { "glVertexArrayAttribBinding", NFOSMESA_GLVERTEXARRAYATTRIBBINDING }, { "glVertexArrayAttribFormat", NFOSMESA_GLVERTEXARRAYATTRIBFORMAT }, { "glVertexArrayAttribIFormat", NFOSMESA_GLVERTEXARRAYATTRIBIFORMAT }, { "glVertexArrayAttribLFormat", NFOSMESA_GLVERTEXARRAYATTRIBLFORMAT }, { "glVertexArrayBindVertexBufferEXT", NFOSMESA_GLVERTEXARRAYBINDVERTEXBUFFEREXT }, { "glVertexArrayBindingDivisor", NFOSMESA_GLVERTEXARRAYBINDINGDIVISOR }, { "glVertexArrayColorOffsetEXT", NFOSMESA_GLVERTEXARRAYCOLOROFFSETEXT }, { "glVertexArrayEdgeFlagOffsetEXT", NFOSMESA_GLVERTEXARRAYEDGEFLAGOFFSETEXT }, { "glVertexArrayElementBuffer", NFOSMESA_GLVERTEXARRAYELEMENTBUFFER }, { "glVertexArrayFogCoordOffsetEXT", NFOSMESA_GLVERTEXARRAYFOGCOORDOFFSETEXT }, { "glVertexArrayIndexOffsetEXT", NFOSMESA_GLVERTEXARRAYINDEXOFFSETEXT }, { "glVertexArrayMultiTexCoordOffsetEXT", NFOSMESA_GLVERTEXARRAYMULTITEXCOORDOFFSETEXT }, { "glVertexArrayNormalOffsetEXT", NFOSMESA_GLVERTEXARRAYNORMALOFFSETEXT }, { "glVertexArrayParameteriAPPLE", NFOSMESA_GLVERTEXARRAYPARAMETERIAPPLE }, { "glVertexArrayRangeAPPLE", NFOSMESA_GLVERTEXARRAYRANGEAPPLE }, { "glVertexArrayRangeNV", NFOSMESA_GLVERTEXARRAYRANGENV }, { "glVertexArraySecondaryColorOffsetEXT", NFOSMESA_GLVERTEXARRAYSECONDARYCOLOROFFSETEXT }, { "glVertexArrayTexCoordOffsetEXT", NFOSMESA_GLVERTEXARRAYTEXCOORDOFFSETEXT }, { "glVertexArrayVertexAttribBindingEXT", NFOSMESA_GLVERTEXARRAYVERTEXATTRIBBINDINGEXT }, { "glVertexArrayVertexAttribDivisorEXT", NFOSMESA_GLVERTEXARRAYVERTEXATTRIBDIVISOREXT }, { "glVertexArrayVertexAttribFormatEXT", NFOSMESA_GLVERTEXARRAYVERTEXATTRIBFORMATEXT }, { "glVertexArrayVertexAttribIFormatEXT", NFOSMESA_GLVERTEXARRAYVERTEXATTRIBIFORMATEXT }, { "glVertexArrayVertexAttribIOffsetEXT", NFOSMESA_GLVERTEXARRAYVERTEXATTRIBIOFFSETEXT }, { "glVertexArrayVertexAttribLFormatEXT", NFOSMESA_GLVERTEXARRAYVERTEXATTRIBLFORMATEXT }, { "glVertexArrayVertexAttribLOffsetEXT", NFOSMESA_GLVERTEXARRAYVERTEXATTRIBLOFFSETEXT }, { "glVertexArrayVertexAttribOffsetEXT", NFOSMESA_GLVERTEXARRAYVERTEXATTRIBOFFSETEXT }, { "glVertexArrayVertexBindingDivisorEXT", NFOSMESA_GLVERTEXARRAYVERTEXBINDINGDIVISOREXT }, { "glVertexArrayVertexBuffer", NFOSMESA_GLVERTEXARRAYVERTEXBUFFER }, { "glVertexArrayVertexBuffers", NFOSMESA_GLVERTEXARRAYVERTEXBUFFERS }, { "glVertexArrayVertexOffsetEXT", NFOSMESA_GLVERTEXARRAYVERTEXOFFSETEXT }, { "glVertexAttrib1d", NFOSMESA_GLVERTEXATTRIB1D }, { "glVertexAttrib1dARB", NFOSMESA_GLVERTEXATTRIB1DARB }, { "glVertexAttrib1dNV", NFOSMESA_GLVERTEXATTRIB1DNV }, { "glVertexAttrib1dv", NFOSMESA_GLVERTEXATTRIB1DV }, { "glVertexAttrib1dvARB", NFOSMESA_GLVERTEXATTRIB1DVARB }, { "glVertexAttrib1dvNV", NFOSMESA_GLVERTEXATTRIB1DVNV }, { "glVertexAttrib1f", NFOSMESA_GLVERTEXATTRIB1F }, { "glVertexAttrib1fARB", NFOSMESA_GLVERTEXATTRIB1FARB }, { "glVertexAttrib1fNV", NFOSMESA_GLVERTEXATTRIB1FNV }, { "glVertexAttrib1fv", NFOSMESA_GLVERTEXATTRIB1FV }, { "glVertexAttrib1fvARB", NFOSMESA_GLVERTEXATTRIB1FVARB }, { "glVertexAttrib1fvNV", NFOSMESA_GLVERTEXATTRIB1FVNV }, { "glVertexAttrib1hNV", NFOSMESA_GLVERTEXATTRIB1HNV }, { "glVertexAttrib1hvNV", NFOSMESA_GLVERTEXATTRIB1HVNV }, { "glVertexAttrib1s", NFOSMESA_GLVERTEXATTRIB1S }, { "glVertexAttrib1sARB", NFOSMESA_GLVERTEXATTRIB1SARB }, { "glVertexAttrib1sNV", NFOSMESA_GLVERTEXATTRIB1SNV }, { "glVertexAttrib1sv", NFOSMESA_GLVERTEXATTRIB1SV }, { "glVertexAttrib1svARB", NFOSMESA_GLVERTEXATTRIB1SVARB }, { "glVertexAttrib1svNV", NFOSMESA_GLVERTEXATTRIB1SVNV }, { "glVertexAttrib2d", NFOSMESA_GLVERTEXATTRIB2D }, { "glVertexAttrib2dARB", NFOSMESA_GLVERTEXATTRIB2DARB }, { "glVertexAttrib2dNV", NFOSMESA_GLVERTEXATTRIB2DNV }, { "glVertexAttrib2dv", NFOSMESA_GLVERTEXATTRIB2DV }, { "glVertexAttrib2dvARB", NFOSMESA_GLVERTEXATTRIB2DVARB }, { "glVertexAttrib2dvNV", NFOSMESA_GLVERTEXATTRIB2DVNV }, { "glVertexAttrib2f", NFOSMESA_GLVERTEXATTRIB2F }, { "glVertexAttrib2fARB", NFOSMESA_GLVERTEXATTRIB2FARB }, { "glVertexAttrib2fNV", NFOSMESA_GLVERTEXATTRIB2FNV }, { "glVertexAttrib2fv", NFOSMESA_GLVERTEXATTRIB2FV }, { "glVertexAttrib2fvARB", NFOSMESA_GLVERTEXATTRIB2FVARB }, { "glVertexAttrib2fvNV", NFOSMESA_GLVERTEXATTRIB2FVNV }, { "glVertexAttrib2hNV", NFOSMESA_GLVERTEXATTRIB2HNV }, { "glVertexAttrib2hvNV", NFOSMESA_GLVERTEXATTRIB2HVNV }, { "glVertexAttrib2s", NFOSMESA_GLVERTEXATTRIB2S }, { "glVertexAttrib2sARB", NFOSMESA_GLVERTEXATTRIB2SARB }, { "glVertexAttrib2sNV", NFOSMESA_GLVERTEXATTRIB2SNV }, { "glVertexAttrib2sv", NFOSMESA_GLVERTEXATTRIB2SV }, { "glVertexAttrib2svARB", NFOSMESA_GLVERTEXATTRIB2SVARB }, { "glVertexAttrib2svNV", NFOSMESA_GLVERTEXATTRIB2SVNV }, { "glVertexAttrib3d", NFOSMESA_GLVERTEXATTRIB3D }, { "glVertexAttrib3dARB", NFOSMESA_GLVERTEXATTRIB3DARB }, { "glVertexAttrib3dNV", NFOSMESA_GLVERTEXATTRIB3DNV }, { "glVertexAttrib3dv", NFOSMESA_GLVERTEXATTRIB3DV }, { "glVertexAttrib3dvARB", NFOSMESA_GLVERTEXATTRIB3DVARB }, { "glVertexAttrib3dvNV", NFOSMESA_GLVERTEXATTRIB3DVNV }, { "glVertexAttrib3f", NFOSMESA_GLVERTEXATTRIB3F }, { "glVertexAttrib3fARB", NFOSMESA_GLVERTEXATTRIB3FARB }, { "glVertexAttrib3fNV", NFOSMESA_GLVERTEXATTRIB3FNV }, { "glVertexAttrib3fv", NFOSMESA_GLVERTEXATTRIB3FV }, { "glVertexAttrib3fvARB", NFOSMESA_GLVERTEXATTRIB3FVARB }, { "glVertexAttrib3fvNV", NFOSMESA_GLVERTEXATTRIB3FVNV }, { "glVertexAttrib3hNV", NFOSMESA_GLVERTEXATTRIB3HNV }, { "glVertexAttrib3hvNV", NFOSMESA_GLVERTEXATTRIB3HVNV }, { "glVertexAttrib3s", NFOSMESA_GLVERTEXATTRIB3S }, { "glVertexAttrib3sARB", NFOSMESA_GLVERTEXATTRIB3SARB }, { "glVertexAttrib3sNV", NFOSMESA_GLVERTEXATTRIB3SNV }, { "glVertexAttrib3sv", NFOSMESA_GLVERTEXATTRIB3SV }, { "glVertexAttrib3svARB", NFOSMESA_GLVERTEXATTRIB3SVARB }, { "glVertexAttrib3svNV", NFOSMESA_GLVERTEXATTRIB3SVNV }, { "glVertexAttrib4Nbv", NFOSMESA_GLVERTEXATTRIB4NBV }, { "glVertexAttrib4NbvARB", NFOSMESA_GLVERTEXATTRIB4NBVARB }, { "glVertexAttrib4Niv", NFOSMESA_GLVERTEXATTRIB4NIV }, { "glVertexAttrib4NivARB", NFOSMESA_GLVERTEXATTRIB4NIVARB }, { "glVertexAttrib4Nsv", NFOSMESA_GLVERTEXATTRIB4NSV }, { "glVertexAttrib4NsvARB", NFOSMESA_GLVERTEXATTRIB4NSVARB }, { "glVertexAttrib4Nub", NFOSMESA_GLVERTEXATTRIB4NUB }, { "glVertexAttrib4NubARB", NFOSMESA_GLVERTEXATTRIB4NUBARB }, { "glVertexAttrib4Nubv", NFOSMESA_GLVERTEXATTRIB4NUBV }, { "glVertexAttrib4NubvARB", NFOSMESA_GLVERTEXATTRIB4NUBVARB }, { "glVertexAttrib4Nuiv", NFOSMESA_GLVERTEXATTRIB4NUIV }, { "glVertexAttrib4NuivARB", NFOSMESA_GLVERTEXATTRIB4NUIVARB }, { "glVertexAttrib4Nusv", NFOSMESA_GLVERTEXATTRIB4NUSV }, { "glVertexAttrib4NusvARB", NFOSMESA_GLVERTEXATTRIB4NUSVARB }, { "glVertexAttrib4bv", NFOSMESA_GLVERTEXATTRIB4BV }, { "glVertexAttrib4bvARB", NFOSMESA_GLVERTEXATTRIB4BVARB }, { "glVertexAttrib4d", NFOSMESA_GLVERTEXATTRIB4D }, { "glVertexAttrib4dARB", NFOSMESA_GLVERTEXATTRIB4DARB }, { "glVertexAttrib4dNV", NFOSMESA_GLVERTEXATTRIB4DNV }, { "glVertexAttrib4dv", NFOSMESA_GLVERTEXATTRIB4DV }, { "glVertexAttrib4dvARB", NFOSMESA_GLVERTEXATTRIB4DVARB }, { "glVertexAttrib4dvNV", NFOSMESA_GLVERTEXATTRIB4DVNV }, { "glVertexAttrib4f", NFOSMESA_GLVERTEXATTRIB4F }, { "glVertexAttrib4fARB", NFOSMESA_GLVERTEXATTRIB4FARB }, { "glVertexAttrib4fNV", NFOSMESA_GLVERTEXATTRIB4FNV }, { "glVertexAttrib4fv", NFOSMESA_GLVERTEXATTRIB4FV }, { "glVertexAttrib4fvARB", NFOSMESA_GLVERTEXATTRIB4FVARB }, { "glVertexAttrib4fvNV", NFOSMESA_GLVERTEXATTRIB4FVNV }, { "glVertexAttrib4hNV", NFOSMESA_GLVERTEXATTRIB4HNV }, { "glVertexAttrib4hvNV", NFOSMESA_GLVERTEXATTRIB4HVNV }, { "glVertexAttrib4iv", NFOSMESA_GLVERTEXATTRIB4IV }, { "glVertexAttrib4ivARB", NFOSMESA_GLVERTEXATTRIB4IVARB }, { "glVertexAttrib4s", NFOSMESA_GLVERTEXATTRIB4S }, { "glVertexAttrib4sARB", NFOSMESA_GLVERTEXATTRIB4SARB }, { "glVertexAttrib4sNV", NFOSMESA_GLVERTEXATTRIB4SNV }, { "glVertexAttrib4sv", NFOSMESA_GLVERTEXATTRIB4SV }, { "glVertexAttrib4svARB", NFOSMESA_GLVERTEXATTRIB4SVARB }, { "glVertexAttrib4svNV", NFOSMESA_GLVERTEXATTRIB4SVNV }, { "glVertexAttrib4ubNV", NFOSMESA_GLVERTEXATTRIB4UBNV }, { "glVertexAttrib4ubv", NFOSMESA_GLVERTEXATTRIB4UBV }, { "glVertexAttrib4ubvARB", NFOSMESA_GLVERTEXATTRIB4UBVARB }, { "glVertexAttrib4ubvNV", NFOSMESA_GLVERTEXATTRIB4UBVNV }, { "glVertexAttrib4uiv", NFOSMESA_GLVERTEXATTRIB4UIV }, { "glVertexAttrib4uivARB", NFOSMESA_GLVERTEXATTRIB4UIVARB }, { "glVertexAttrib4usv", NFOSMESA_GLVERTEXATTRIB4USV }, { "glVertexAttrib4usvARB", NFOSMESA_GLVERTEXATTRIB4USVARB }, { "glVertexAttribArrayObjectATI", NFOSMESA_GLVERTEXATTRIBARRAYOBJECTATI }, { "glVertexAttribBinding", NFOSMESA_GLVERTEXATTRIBBINDING }, { "glVertexAttribDivisor", NFOSMESA_GLVERTEXATTRIBDIVISOR }, { "glVertexAttribDivisorARB", NFOSMESA_GLVERTEXATTRIBDIVISORARB }, { "glVertexAttribFormat", NFOSMESA_GLVERTEXATTRIBFORMAT }, { "glVertexAttribFormatNV", NFOSMESA_GLVERTEXATTRIBFORMATNV }, { "glVertexAttribI1i", NFOSMESA_GLVERTEXATTRIBI1I }, { "glVertexAttribI1iEXT", NFOSMESA_GLVERTEXATTRIBI1IEXT }, { "glVertexAttribI1iv", NFOSMESA_GLVERTEXATTRIBI1IV }, { "glVertexAttribI1ivEXT", NFOSMESA_GLVERTEXATTRIBI1IVEXT }, { "glVertexAttribI1ui", NFOSMESA_GLVERTEXATTRIBI1UI }, { "glVertexAttribI1uiEXT", NFOSMESA_GLVERTEXATTRIBI1UIEXT }, { "glVertexAttribI1uiv", NFOSMESA_GLVERTEXATTRIBI1UIV }, { "glVertexAttribI1uivEXT", NFOSMESA_GLVERTEXATTRIBI1UIVEXT }, { "glVertexAttribI2i", NFOSMESA_GLVERTEXATTRIBI2I }, { "glVertexAttribI2iEXT", NFOSMESA_GLVERTEXATTRIBI2IEXT }, { "glVertexAttribI2iv", NFOSMESA_GLVERTEXATTRIBI2IV }, { "glVertexAttribI2ivEXT", NFOSMESA_GLVERTEXATTRIBI2IVEXT }, { "glVertexAttribI2ui", NFOSMESA_GLVERTEXATTRIBI2UI }, { "glVertexAttribI2uiEXT", NFOSMESA_GLVERTEXATTRIBI2UIEXT }, { "glVertexAttribI2uiv", NFOSMESA_GLVERTEXATTRIBI2UIV }, { "glVertexAttribI2uivEXT", NFOSMESA_GLVERTEXATTRIBI2UIVEXT }, { "glVertexAttribI3i", NFOSMESA_GLVERTEXATTRIBI3I }, { "glVertexAttribI3iEXT", NFOSMESA_GLVERTEXATTRIBI3IEXT }, { "glVertexAttribI3iv", NFOSMESA_GLVERTEXATTRIBI3IV }, { "glVertexAttribI3ivEXT", NFOSMESA_GLVERTEXATTRIBI3IVEXT }, { "glVertexAttribI3ui", NFOSMESA_GLVERTEXATTRIBI3UI }, { "glVertexAttribI3uiEXT", NFOSMESA_GLVERTEXATTRIBI3UIEXT }, { "glVertexAttribI3uiv", NFOSMESA_GLVERTEXATTRIBI3UIV }, { "glVertexAttribI3uivEXT", NFOSMESA_GLVERTEXATTRIBI3UIVEXT }, { "glVertexAttribI4bv", NFOSMESA_GLVERTEXATTRIBI4BV }, { "glVertexAttribI4bvEXT", NFOSMESA_GLVERTEXATTRIBI4BVEXT }, { "glVertexAttribI4i", NFOSMESA_GLVERTEXATTRIBI4I }, { "glVertexAttribI4iEXT", NFOSMESA_GLVERTEXATTRIBI4IEXT }, { "glVertexAttribI4iv", NFOSMESA_GLVERTEXATTRIBI4IV }, { "glVertexAttribI4ivEXT", NFOSMESA_GLVERTEXATTRIBI4IVEXT }, { "glVertexAttribI4sv", NFOSMESA_GLVERTEXATTRIBI4SV }, { "glVertexAttribI4svEXT", NFOSMESA_GLVERTEXATTRIBI4SVEXT }, { "glVertexAttribI4ubv", NFOSMESA_GLVERTEXATTRIBI4UBV }, { "glVertexAttribI4ubvEXT", NFOSMESA_GLVERTEXATTRIBI4UBVEXT }, { "glVertexAttribI4ui", NFOSMESA_GLVERTEXATTRIBI4UI }, { "glVertexAttribI4uiEXT", NFOSMESA_GLVERTEXATTRIBI4UIEXT }, { "glVertexAttribI4uiv", NFOSMESA_GLVERTEXATTRIBI4UIV }, { "glVertexAttribI4uivEXT", NFOSMESA_GLVERTEXATTRIBI4UIVEXT }, { "glVertexAttribI4usv", NFOSMESA_GLVERTEXATTRIBI4USV }, { "glVertexAttribI4usvEXT", NFOSMESA_GLVERTEXATTRIBI4USVEXT }, { "glVertexAttribIFormat", NFOSMESA_GLVERTEXATTRIBIFORMAT }, { "glVertexAttribIFormatNV", NFOSMESA_GLVERTEXATTRIBIFORMATNV }, { "glVertexAttribIPointer", NFOSMESA_GLVERTEXATTRIBIPOINTER }, { "glVertexAttribIPointerEXT", NFOSMESA_GLVERTEXATTRIBIPOINTEREXT }, { "glVertexAttribL1d", NFOSMESA_GLVERTEXATTRIBL1D }, { "glVertexAttribL1dEXT", NFOSMESA_GLVERTEXATTRIBL1DEXT }, { "glVertexAttribL1dv", NFOSMESA_GLVERTEXATTRIBL1DV }, { "glVertexAttribL1dvEXT", NFOSMESA_GLVERTEXATTRIBL1DVEXT }, { "glVertexAttribL1i64NV", NFOSMESA_GLVERTEXATTRIBL1I64NV }, { "glVertexAttribL1i64vNV", NFOSMESA_GLVERTEXATTRIBL1I64VNV }, { "glVertexAttribL1ui64ARB", NFOSMESA_GLVERTEXATTRIBL1UI64ARB }, { "glVertexAttribL1ui64NV", NFOSMESA_GLVERTEXATTRIBL1UI64NV }, { "glVertexAttribL1ui64vARB", NFOSMESA_GLVERTEXATTRIBL1UI64VARB }, { "glVertexAttribL1ui64vNV", NFOSMESA_GLVERTEXATTRIBL1UI64VNV }, { "glVertexAttribL2d", NFOSMESA_GLVERTEXATTRIBL2D }, { "glVertexAttribL2dEXT", NFOSMESA_GLVERTEXATTRIBL2DEXT }, { "glVertexAttribL2dv", NFOSMESA_GLVERTEXATTRIBL2DV }, { "glVertexAttribL2dvEXT", NFOSMESA_GLVERTEXATTRIBL2DVEXT }, { "glVertexAttribL2i64NV", NFOSMESA_GLVERTEXATTRIBL2I64NV }, { "glVertexAttribL2i64vNV", NFOSMESA_GLVERTEXATTRIBL2I64VNV }, { "glVertexAttribL2ui64NV", NFOSMESA_GLVERTEXATTRIBL2UI64NV }, { "glVertexAttribL2ui64vNV", NFOSMESA_GLVERTEXATTRIBL2UI64VNV }, { "glVertexAttribL3d", NFOSMESA_GLVERTEXATTRIBL3D }, { "glVertexAttribL3dEXT", NFOSMESA_GLVERTEXATTRIBL3DEXT }, { "glVertexAttribL3dv", NFOSMESA_GLVERTEXATTRIBL3DV }, { "glVertexAttribL3dvEXT", NFOSMESA_GLVERTEXATTRIBL3DVEXT }, { "glVertexAttribL3i64NV", NFOSMESA_GLVERTEXATTRIBL3I64NV }, { "glVertexAttribL3i64vNV", NFOSMESA_GLVERTEXATTRIBL3I64VNV }, { "glVertexAttribL3ui64NV", NFOSMESA_GLVERTEXATTRIBL3UI64NV }, { "glVertexAttribL3ui64vNV", NFOSMESA_GLVERTEXATTRIBL3UI64VNV }, { "glVertexAttribL4d", NFOSMESA_GLVERTEXATTRIBL4D }, { "glVertexAttribL4dEXT", NFOSMESA_GLVERTEXATTRIBL4DEXT }, { "glVertexAttribL4dv", NFOSMESA_GLVERTEXATTRIBL4DV }, { "glVertexAttribL4dvEXT", NFOSMESA_GLVERTEXATTRIBL4DVEXT }, { "glVertexAttribL4i64NV", NFOSMESA_GLVERTEXATTRIBL4I64NV }, { "glVertexAttribL4i64vNV", NFOSMESA_GLVERTEXATTRIBL4I64VNV }, { "glVertexAttribL4ui64NV", NFOSMESA_GLVERTEXATTRIBL4UI64NV }, { "glVertexAttribL4ui64vNV", NFOSMESA_GLVERTEXATTRIBL4UI64VNV }, { "glVertexAttribLFormat", NFOSMESA_GLVERTEXATTRIBLFORMAT }, { "glVertexAttribLFormatNV", NFOSMESA_GLVERTEXATTRIBLFORMATNV }, { "glVertexAttribLPointer", NFOSMESA_GLVERTEXATTRIBLPOINTER }, { "glVertexAttribLPointerEXT", NFOSMESA_GLVERTEXATTRIBLPOINTEREXT }, { "glVertexAttribP1ui", NFOSMESA_GLVERTEXATTRIBP1UI }, { "glVertexAttribP1uiv", NFOSMESA_GLVERTEXATTRIBP1UIV }, { "glVertexAttribP2ui", NFOSMESA_GLVERTEXATTRIBP2UI }, { "glVertexAttribP2uiv", NFOSMESA_GLVERTEXATTRIBP2UIV }, { "glVertexAttribP3ui", NFOSMESA_GLVERTEXATTRIBP3UI }, { "glVertexAttribP3uiv", NFOSMESA_GLVERTEXATTRIBP3UIV }, { "glVertexAttribP4ui", NFOSMESA_GLVERTEXATTRIBP4UI }, { "glVertexAttribP4uiv", NFOSMESA_GLVERTEXATTRIBP4UIV }, { "glVertexAttribParameteriAMD", NFOSMESA_GLVERTEXATTRIBPARAMETERIAMD }, { "glVertexAttribPointer", NFOSMESA_GLVERTEXATTRIBPOINTER }, { "glVertexAttribPointerARB", NFOSMESA_GLVERTEXATTRIBPOINTERARB }, { "glVertexAttribPointerNV", NFOSMESA_GLVERTEXATTRIBPOINTERNV }, { "glVertexAttribs1dvNV", NFOSMESA_GLVERTEXATTRIBS1DVNV }, { "glVertexAttribs1fvNV", NFOSMESA_GLVERTEXATTRIBS1FVNV }, { "glVertexAttribs1hvNV", NFOSMESA_GLVERTEXATTRIBS1HVNV }, { "glVertexAttribs1svNV", NFOSMESA_GLVERTEXATTRIBS1SVNV }, { "glVertexAttribs2dvNV", NFOSMESA_GLVERTEXATTRIBS2DVNV }, { "glVertexAttribs2fvNV", NFOSMESA_GLVERTEXATTRIBS2FVNV }, { "glVertexAttribs2hvNV", NFOSMESA_GLVERTEXATTRIBS2HVNV }, { "glVertexAttribs2svNV", NFOSMESA_GLVERTEXATTRIBS2SVNV }, { "glVertexAttribs3dvNV", NFOSMESA_GLVERTEXATTRIBS3DVNV }, { "glVertexAttribs3fvNV", NFOSMESA_GLVERTEXATTRIBS3FVNV }, { "glVertexAttribs3hvNV", NFOSMESA_GLVERTEXATTRIBS3HVNV }, { "glVertexAttribs3svNV", NFOSMESA_GLVERTEXATTRIBS3SVNV }, { "glVertexAttribs4dvNV", NFOSMESA_GLVERTEXATTRIBS4DVNV }, { "glVertexAttribs4fvNV", NFOSMESA_GLVERTEXATTRIBS4FVNV }, { "glVertexAttribs4hvNV", NFOSMESA_GLVERTEXATTRIBS4HVNV }, { "glVertexAttribs4svNV", NFOSMESA_GLVERTEXATTRIBS4SVNV }, { "glVertexAttribs4ubvNV", NFOSMESA_GLVERTEXATTRIBS4UBVNV }, { "glVertexBindingDivisor", NFOSMESA_GLVERTEXBINDINGDIVISOR }, { "glVertexBlendARB", NFOSMESA_GLVERTEXBLENDARB }, { "glVertexBlendEnvfATI", NFOSMESA_GLVERTEXBLENDENVFATI }, { "glVertexBlendEnviATI", NFOSMESA_GLVERTEXBLENDENVIATI }, { "glVertexFormatNV", NFOSMESA_GLVERTEXFORMATNV }, { "glVertexP2ui", NFOSMESA_GLVERTEXP2UI }, { "glVertexP2uiv", NFOSMESA_GLVERTEXP2UIV }, { "glVertexP3ui", NFOSMESA_GLVERTEXP3UI }, { "glVertexP3uiv", NFOSMESA_GLVERTEXP3UIV }, { "glVertexP4ui", NFOSMESA_GLVERTEXP4UI }, { "glVertexP4uiv", NFOSMESA_GLVERTEXP4UIV }, { "glVertexPointSizefAPPLE", NFOSMESA_GLVERTEXPOINTSIZEFAPPLE }, { "glVertexPointer", NFOSMESA_GLVERTEXPOINTER }, { "glVertexPointerEXT", NFOSMESA_GLVERTEXPOINTEREXT }, { "glVertexPointerListIBM", NFOSMESA_GLVERTEXPOINTERLISTIBM }, { "glVertexPointervINTEL", NFOSMESA_GLVERTEXPOINTERVINTEL }, { "glVertexStream1dATI", NFOSMESA_GLVERTEXSTREAM1DATI }, { "glVertexStream1dvATI", NFOSMESA_GLVERTEXSTREAM1DVATI }, { "glVertexStream1fATI", NFOSMESA_GLVERTEXSTREAM1FATI }, { "glVertexStream1fvATI", NFOSMESA_GLVERTEXSTREAM1FVATI }, { "glVertexStream1iATI", NFOSMESA_GLVERTEXSTREAM1IATI }, { "glVertexStream1ivATI", NFOSMESA_GLVERTEXSTREAM1IVATI }, { "glVertexStream1sATI", NFOSMESA_GLVERTEXSTREAM1SATI }, { "glVertexStream1svATI", NFOSMESA_GLVERTEXSTREAM1SVATI }, { "glVertexStream2dATI", NFOSMESA_GLVERTEXSTREAM2DATI }, { "glVertexStream2dvATI", NFOSMESA_GLVERTEXSTREAM2DVATI }, { "glVertexStream2fATI", NFOSMESA_GLVERTEXSTREAM2FATI }, { "glVertexStream2fvATI", NFOSMESA_GLVERTEXSTREAM2FVATI }, { "glVertexStream2iATI", NFOSMESA_GLVERTEXSTREAM2IATI }, { "glVertexStream2ivATI", NFOSMESA_GLVERTEXSTREAM2IVATI }, { "glVertexStream2sATI", NFOSMESA_GLVERTEXSTREAM2SATI }, { "glVertexStream2svATI", NFOSMESA_GLVERTEXSTREAM2SVATI }, { "glVertexStream3dATI", NFOSMESA_GLVERTEXSTREAM3DATI }, { "glVertexStream3dvATI", NFOSMESA_GLVERTEXSTREAM3DVATI }, { "glVertexStream3fATI", NFOSMESA_GLVERTEXSTREAM3FATI }, { "glVertexStream3fvATI", NFOSMESA_GLVERTEXSTREAM3FVATI }, { "glVertexStream3iATI", NFOSMESA_GLVERTEXSTREAM3IATI }, { "glVertexStream3ivATI", NFOSMESA_GLVERTEXSTREAM3IVATI }, { "glVertexStream3sATI", NFOSMESA_GLVERTEXSTREAM3SATI }, { "glVertexStream3svATI", NFOSMESA_GLVERTEXSTREAM3SVATI }, { "glVertexStream4dATI", NFOSMESA_GLVERTEXSTREAM4DATI }, { "glVertexStream4dvATI", NFOSMESA_GLVERTEXSTREAM4DVATI }, { "glVertexStream4fATI", NFOSMESA_GLVERTEXSTREAM4FATI }, { "glVertexStream4fvATI", NFOSMESA_GLVERTEXSTREAM4FVATI }, { "glVertexStream4iATI", NFOSMESA_GLVERTEXSTREAM4IATI }, { "glVertexStream4ivATI", NFOSMESA_GLVERTEXSTREAM4IVATI }, { "glVertexStream4sATI", NFOSMESA_GLVERTEXSTREAM4SATI }, { "glVertexStream4svATI", NFOSMESA_GLVERTEXSTREAM4SVATI }, { "glVertexWeightPointerEXT", NFOSMESA_GLVERTEXWEIGHTPOINTEREXT }, { "glVertexWeightfEXT", NFOSMESA_GLVERTEXWEIGHTFEXT }, { "glVertexWeightfvEXT", NFOSMESA_GLVERTEXWEIGHTFVEXT }, { "glVertexWeighthNV", NFOSMESA_GLVERTEXWEIGHTHNV }, { "glVertexWeighthvNV", NFOSMESA_GLVERTEXWEIGHTHVNV }, { "glVideoCaptureNV", NFOSMESA_GLVIDEOCAPTURENV }, { "glVideoCaptureStreamParameterdvNV", NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERDVNV }, { "glVideoCaptureStreamParameterfvNV", NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERFVNV }, { "glVideoCaptureStreamParameterivNV", NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERIVNV }, { "glViewport", NFOSMESA_GLVIEWPORT }, { "glViewportArrayv", NFOSMESA_GLVIEWPORTARRAYV }, { "glViewportIndexedf", NFOSMESA_GLVIEWPORTINDEXEDF }, { "glViewportIndexedfv", NFOSMESA_GLVIEWPORTINDEXEDFV }, { "glViewportPositionWScaleNV", NFOSMESA_GLVIEWPORTPOSITIONWSCALENV }, { "glViewportSwizzleNV", NFOSMESA_GLVIEWPORTSWIZZLENV }, { "glWaitSemaphoreEXT", NFOSMESA_GLWAITSEMAPHOREEXT }, { "glWaitSync", NFOSMESA_GLWAITSYNC }, { "glWaitVkSemaphoreNV", NFOSMESA_GLWAITVKSEMAPHORENV }, { "glWeightPathsNV", NFOSMESA_GLWEIGHTPATHSNV }, { "glWeightPointerARB", NFOSMESA_GLWEIGHTPOINTERARB }, { "glWeightbvARB", NFOSMESA_GLWEIGHTBVARB }, { "glWeightdvARB", NFOSMESA_GLWEIGHTDVARB }, { "glWeightfvARB", NFOSMESA_GLWEIGHTFVARB }, { "glWeightivARB", NFOSMESA_GLWEIGHTIVARB }, { "glWeightsvARB", NFOSMESA_GLWEIGHTSVARB }, { "glWeightubvARB", NFOSMESA_GLWEIGHTUBVARB }, { "glWeightuivARB", NFOSMESA_GLWEIGHTUIVARB }, { "glWeightusvARB", NFOSMESA_GLWEIGHTUSVARB }, { "glWindowPos2d", NFOSMESA_GLWINDOWPOS2D }, { "glWindowPos2dARB", NFOSMESA_GLWINDOWPOS2DARB }, { "glWindowPos2dMESA", NFOSMESA_GLWINDOWPOS2DMESA }, { "glWindowPos2dv", NFOSMESA_GLWINDOWPOS2DV }, { "glWindowPos2dvARB", NFOSMESA_GLWINDOWPOS2DVARB }, { "glWindowPos2dvMESA", NFOSMESA_GLWINDOWPOS2DVMESA }, { "glWindowPos2f", NFOSMESA_GLWINDOWPOS2F }, { "glWindowPos2fARB", NFOSMESA_GLWINDOWPOS2FARB }, { "glWindowPos2fMESA", NFOSMESA_GLWINDOWPOS2FMESA }, { "glWindowPos2fv", NFOSMESA_GLWINDOWPOS2FV }, { "glWindowPos2fvARB", NFOSMESA_GLWINDOWPOS2FVARB }, { "glWindowPos2fvMESA", NFOSMESA_GLWINDOWPOS2FVMESA }, { "glWindowPos2i", NFOSMESA_GLWINDOWPOS2I }, { "glWindowPos2iARB", NFOSMESA_GLWINDOWPOS2IARB }, { "glWindowPos2iMESA", NFOSMESA_GLWINDOWPOS2IMESA }, { "glWindowPos2iv", NFOSMESA_GLWINDOWPOS2IV }, { "glWindowPos2ivARB", NFOSMESA_GLWINDOWPOS2IVARB }, { "glWindowPos2ivMESA", NFOSMESA_GLWINDOWPOS2IVMESA }, { "glWindowPos2s", NFOSMESA_GLWINDOWPOS2S }, { "glWindowPos2sARB", NFOSMESA_GLWINDOWPOS2SARB }, { "glWindowPos2sMESA", NFOSMESA_GLWINDOWPOS2SMESA }, { "glWindowPos2sv", NFOSMESA_GLWINDOWPOS2SV }, { "glWindowPos2svARB", NFOSMESA_GLWINDOWPOS2SVARB }, { "glWindowPos2svMESA", NFOSMESA_GLWINDOWPOS2SVMESA }, { "glWindowPos3d", NFOSMESA_GLWINDOWPOS3D }, { "glWindowPos3dARB", NFOSMESA_GLWINDOWPOS3DARB }, { "glWindowPos3dMESA", NFOSMESA_GLWINDOWPOS3DMESA }, { "glWindowPos3dv", NFOSMESA_GLWINDOWPOS3DV }, { "glWindowPos3dvARB", NFOSMESA_GLWINDOWPOS3DVARB }, { "glWindowPos3dvMESA", NFOSMESA_GLWINDOWPOS3DVMESA }, { "glWindowPos3f", NFOSMESA_GLWINDOWPOS3F }, { "glWindowPos3fARB", NFOSMESA_GLWINDOWPOS3FARB }, { "glWindowPos3fMESA", NFOSMESA_GLWINDOWPOS3FMESA }, { "glWindowPos3fv", NFOSMESA_GLWINDOWPOS3FV }, { "glWindowPos3fvARB", NFOSMESA_GLWINDOWPOS3FVARB }, { "glWindowPos3fvMESA", NFOSMESA_GLWINDOWPOS3FVMESA }, { "glWindowPos3i", NFOSMESA_GLWINDOWPOS3I }, { "glWindowPos3iARB", NFOSMESA_GLWINDOWPOS3IARB }, { "glWindowPos3iMESA", NFOSMESA_GLWINDOWPOS3IMESA }, { "glWindowPos3iv", NFOSMESA_GLWINDOWPOS3IV }, { "glWindowPos3ivARB", NFOSMESA_GLWINDOWPOS3IVARB }, { "glWindowPos3ivMESA", NFOSMESA_GLWINDOWPOS3IVMESA }, { "glWindowPos3s", NFOSMESA_GLWINDOWPOS3S }, { "glWindowPos3sARB", NFOSMESA_GLWINDOWPOS3SARB }, { "glWindowPos3sMESA", NFOSMESA_GLWINDOWPOS3SMESA }, { "glWindowPos3sv", NFOSMESA_GLWINDOWPOS3SV }, { "glWindowPos3svARB", NFOSMESA_GLWINDOWPOS3SVARB }, { "glWindowPos3svMESA", NFOSMESA_GLWINDOWPOS3SVMESA }, { "glWindowPos4dMESA", NFOSMESA_GLWINDOWPOS4DMESA }, { "glWindowPos4dvMESA", NFOSMESA_GLWINDOWPOS4DVMESA }, { "glWindowPos4fMESA", NFOSMESA_GLWINDOWPOS4FMESA }, { "glWindowPos4fvMESA", NFOSMESA_GLWINDOWPOS4FVMESA }, { "glWindowPos4iMESA", NFOSMESA_GLWINDOWPOS4IMESA }, { "glWindowPos4ivMESA", NFOSMESA_GLWINDOWPOS4IVMESA }, { "glWindowPos4sMESA", NFOSMESA_GLWINDOWPOS4SMESA }, { "glWindowPos4svMESA", NFOSMESA_GLWINDOWPOS4SVMESA }, { "glWindowRectanglesEXT", NFOSMESA_GLWINDOWRECTANGLESEXT }, { "glWriteMaskEXT", NFOSMESA_GLWRITEMASKEXT }, { "gluLookAt", NFOSMESA_GLULOOKAT }, { "gluLookAtf", NFOSMESA_GLULOOKATF } }; aranym-1.1.0/src/natfeat/nfosmesa/dispatch-gl.c0000664000175000017500000357540013454637622017607 0ustar joyjoy/* * -- DO NOT EDIT -- * Generated by dyngl.pl from ./tools/glfuncs.h */ case NFOSMESA_GLACCUM: D(funcname = "glAccum"); if (GL_ISAVAILABLE(glAccum)) nfglAccum( getStackedParameter(0), /* GLenum op */ getStackedFloat(1) /* GLfloat value */); break; case NFOSMESA_GLACCUMXOES: D(funcname = "glAccumxOES"); if (GL_ISAVAILABLE(glAccumxOES)) nfglAccumxOES( getStackedParameter(0), /* GLenum op */ getStackedParameter(1) /* GLfixed value */); break; case NFOSMESA_GLACQUIREKEYEDMUTEXWIN32EXT: D(funcname = "glAcquireKeyedMutexWin32EXT"); if (GL_ISAVAILABLE(glAcquireKeyedMutexWin32EXT)) ret = nfglAcquireKeyedMutexWin32EXT( getStackedParameter(0), /* GLuint memory */ getStackedParameter64(1), /* GLuint64 key */ getStackedParameter(3) /* GLuint timeout */); break; case NFOSMESA_GLACTIVEPROGRAMEXT: D(funcname = "glActiveProgramEXT"); if (GL_ISAVAILABLE(glActiveProgramEXT)) nfglActiveProgramEXT( getStackedParameter(0) /* GLuint program */); break; case NFOSMESA_GLACTIVESHADERPROGRAM: D(funcname = "glActiveShaderProgram"); if (GL_ISAVAILABLE(glActiveShaderProgram)) nfglActiveShaderProgram( getStackedParameter(0), /* GLuint pipeline */ getStackedParameter(1) /* GLuint program */); break; case NFOSMESA_GLACTIVESTENCILFACEEXT: D(funcname = "glActiveStencilFaceEXT"); if (GL_ISAVAILABLE(glActiveStencilFaceEXT)) nfglActiveStencilFaceEXT( getStackedParameter(0) /* GLenum face */); break; case NFOSMESA_GLACTIVETEXTURE: D(funcname = "glActiveTexture"); if (GL_ISAVAILABLE(glActiveTexture)) nfglActiveTexture( getStackedParameter(0) /* GLenum texture */); break; case NFOSMESA_GLACTIVETEXTUREARB: D(funcname = "glActiveTextureARB"); if (GL_ISAVAILABLE(glActiveTextureARB)) nfglActiveTextureARB( getStackedParameter(0) /* GLenum texture */); break; case NFOSMESA_GLACTIVEVARYINGNV: D(funcname = "glActiveVaryingNV"); if (GL_ISAVAILABLE(glActiveVaryingNV)) nfglActiveVaryingNV( getStackedParameter(0), /* GLuint program */ getStackedPointer(1, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLADDSWAPHINTRECTWIN: D(funcname = "glAddSwapHintRectWIN"); if (GL_ISAVAILABLE(glAddSwapHintRectWIN)) nfglAddSwapHintRectWIN( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3) /* GLsizei height */); break; case NFOSMESA_GLALPHAFRAGMENTOP1ATI: D(funcname = "glAlphaFragmentOp1ATI"); if (GL_ISAVAILABLE(glAlphaFragmentOp1ATI)) nfglAlphaFragmentOp1ATI( getStackedParameter(0), /* GLenum op */ getStackedParameter(1), /* GLuint dst */ getStackedParameter(2), /* GLuint dstMod */ getStackedParameter(3), /* GLuint arg1 */ getStackedParameter(4), /* GLuint arg1Rep */ getStackedParameter(5) /* GLuint arg1Mod */); break; case NFOSMESA_GLALPHAFRAGMENTOP2ATI: D(funcname = "glAlphaFragmentOp2ATI"); if (GL_ISAVAILABLE(glAlphaFragmentOp2ATI)) nfglAlphaFragmentOp2ATI( getStackedParameter(0), /* GLenum op */ getStackedParameter(1), /* GLuint dst */ getStackedParameter(2), /* GLuint dstMod */ getStackedParameter(3), /* GLuint arg1 */ getStackedParameter(4), /* GLuint arg1Rep */ getStackedParameter(5), /* GLuint arg1Mod */ getStackedParameter(6), /* GLuint arg2 */ getStackedParameter(7), /* GLuint arg2Rep */ getStackedParameter(8) /* GLuint arg2Mod */); break; case NFOSMESA_GLALPHAFRAGMENTOP3ATI: D(funcname = "glAlphaFragmentOp3ATI"); if (GL_ISAVAILABLE(glAlphaFragmentOp3ATI)) nfglAlphaFragmentOp3ATI( getStackedParameter(0), /* GLenum op */ getStackedParameter(1), /* GLuint dst */ getStackedParameter(2), /* GLuint dstMod */ getStackedParameter(3), /* GLuint arg1 */ getStackedParameter(4), /* GLuint arg1Rep */ getStackedParameter(5), /* GLuint arg1Mod */ getStackedParameter(6), /* GLuint arg2 */ getStackedParameter(7), /* GLuint arg2Rep */ getStackedParameter(8), /* GLuint arg2Mod */ getStackedParameter(9), /* GLuint arg3 */ getStackedParameter(10), /* GLuint arg3Rep */ getStackedParameter(11) /* GLuint arg3Mod */); break; case NFOSMESA_GLALPHAFUNC: D(funcname = "glAlphaFunc"); if (GL_ISAVAILABLE(glAlphaFunc)) nfglAlphaFunc( getStackedParameter(0), /* GLenum func */ getStackedFloat(1) /* GLclampf ref */); break; case NFOSMESA_GLALPHAFUNCXOES: D(funcname = "glAlphaFuncxOES"); if (GL_ISAVAILABLE(glAlphaFuncxOES)) nfglAlphaFuncxOES( getStackedParameter(0), /* GLenum func */ getStackedParameter(1) /* GLfixed ref */); break; case NFOSMESA_GLALPHATOCOVERAGEDITHERCONTROLNV: D(funcname = "glAlphaToCoverageDitherControlNV"); if (GL_ISAVAILABLE(glAlphaToCoverageDitherControlNV)) nfglAlphaToCoverageDitherControlNV( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL: D(funcname = "glApplyFramebufferAttachmentCMAAINTEL"); if (GL_ISAVAILABLE(glApplyFramebufferAttachmentCMAAINTEL)) nfglApplyFramebufferAttachmentCMAAINTEL(); break; case NFOSMESA_GLAPPLYTEXTUREEXT: D(funcname = "glApplyTextureEXT"); if (GL_ISAVAILABLE(glApplyTextureEXT)) nfglApplyTextureEXT( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLAREPROGRAMSRESIDENTNV: D(funcname = "glAreProgramsResidentNV"); if (GL_ISAVAILABLE(glAreProgramsResidentNV)) ret = nfglAreProgramsResidentNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *), /* const GLuint *programs */ getStackedPointer(2, GLboolean *) /* GLboolean *residences */); break; case NFOSMESA_GLARETEXTURESRESIDENT: D(funcname = "glAreTexturesResident"); if (GL_ISAVAILABLE(glAreTexturesResident)) ret = nfglAreTexturesResident( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *), /* const GLuint *textures */ getStackedPointer(2, GLboolean *) /* GLboolean *residences */); break; case NFOSMESA_GLARETEXTURESRESIDENTEXT: D(funcname = "glAreTexturesResidentEXT"); if (GL_ISAVAILABLE(glAreTexturesResidentEXT)) ret = nfglAreTexturesResidentEXT( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *), /* const GLuint *textures */ getStackedPointer(2, GLboolean *) /* GLboolean *residences */); break; case NFOSMESA_GLARRAYELEMENT: D(funcname = "glArrayElement"); if (GL_ISAVAILABLE(glArrayElement)) nfglArrayElement( getStackedParameter(0) /* GLint i */); break; case NFOSMESA_GLARRAYELEMENTEXT: D(funcname = "glArrayElementEXT"); if (GL_ISAVAILABLE(glArrayElementEXT)) nfglArrayElementEXT( getStackedParameter(0) /* GLint i */); break; case NFOSMESA_GLARRAYOBJECTATI: D(funcname = "glArrayObjectATI"); if (GL_ISAVAILABLE(glArrayObjectATI)) nfglArrayObjectATI( getStackedParameter(0), /* GLenum array */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei stride */ getStackedParameter(4), /* GLuint buffer */ getStackedParameter(5) /* GLuint offset */); break; case NFOSMESA_GLASYNCMARKERSGIX: D(funcname = "glAsyncMarkerSGIX"); if (GL_ISAVAILABLE(glAsyncMarkerSGIX)) nfglAsyncMarkerSGIX( getStackedParameter(0) /* GLuint marker */); break; case NFOSMESA_GLATTACHOBJECTARB: D(funcname = "glAttachObjectARB"); if (GL_ISAVAILABLE(glAttachObjectARB)) nfglAttachObjectARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB containerObj */ (GLhandleARB)(uintptr_t)getStackedParameter(1) /* GLhandleARB obj */); break; case NFOSMESA_GLATTACHSHADER: D(funcname = "glAttachShader"); if (GL_ISAVAILABLE(glAttachShader)) nfglAttachShader( getStackedParameter(0), /* GLuint program */ getStackedParameter(1) /* GLuint shader */); break; case NFOSMESA_GLBEGIN: D(funcname = "glBegin"); if (GL_ISAVAILABLE(glBegin)) nfglBegin( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLBEGINCONDITIONALRENDER: D(funcname = "glBeginConditionalRender"); if (GL_ISAVAILABLE(glBeginConditionalRender)) nfglBeginConditionalRender( getStackedParameter(0), /* GLuint id */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLBEGINCONDITIONALRENDERNV: D(funcname = "glBeginConditionalRenderNV"); if (GL_ISAVAILABLE(glBeginConditionalRenderNV)) nfglBeginConditionalRenderNV( getStackedParameter(0), /* GLuint id */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLBEGINCONDITIONALRENDERNVX: D(funcname = "glBeginConditionalRenderNVX"); if (GL_ISAVAILABLE(glBeginConditionalRenderNVX)) nfglBeginConditionalRenderNVX( getStackedParameter(0) /* GLuint id */); break; case NFOSMESA_GLBEGINFRAGMENTSHADERATI: D(funcname = "glBeginFragmentShaderATI"); if (GL_ISAVAILABLE(glBeginFragmentShaderATI)) nfglBeginFragmentShaderATI(); break; case NFOSMESA_GLBEGINOCCLUSIONQUERYNV: D(funcname = "glBeginOcclusionQueryNV"); if (GL_ISAVAILABLE(glBeginOcclusionQueryNV)) nfglBeginOcclusionQueryNV( getStackedParameter(0) /* GLuint id */); break; case NFOSMESA_GLBEGINPERFMONITORAMD: D(funcname = "glBeginPerfMonitorAMD"); if (GL_ISAVAILABLE(glBeginPerfMonitorAMD)) nfglBeginPerfMonitorAMD( getStackedParameter(0) /* GLuint monitor */); break; case NFOSMESA_GLBEGINPERFQUERYINTEL: D(funcname = "glBeginPerfQueryINTEL"); if (GL_ISAVAILABLE(glBeginPerfQueryINTEL)) nfglBeginPerfQueryINTEL( getStackedParameter(0) /* GLuint queryHandle */); break; case NFOSMESA_GLBEGINQUERY: D(funcname = "glBeginQuery"); if (GL_ISAVAILABLE(glBeginQuery)) nfglBeginQuery( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint id */); break; case NFOSMESA_GLBEGINQUERYARB: D(funcname = "glBeginQueryARB"); if (GL_ISAVAILABLE(glBeginQueryARB)) nfglBeginQueryARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint id */); break; case NFOSMESA_GLBEGINQUERYINDEXED: D(funcname = "glBeginQueryIndexed"); if (GL_ISAVAILABLE(glBeginQueryIndexed)) nfglBeginQueryIndexed( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2) /* GLuint id */); break; case NFOSMESA_GLBEGINTRANSFORMFEEDBACK: D(funcname = "glBeginTransformFeedback"); if (GL_ISAVAILABLE(glBeginTransformFeedback)) nfglBeginTransformFeedback( getStackedParameter(0) /* GLenum primitiveMode */); break; case NFOSMESA_GLBEGINTRANSFORMFEEDBACKEXT: D(funcname = "glBeginTransformFeedbackEXT"); if (GL_ISAVAILABLE(glBeginTransformFeedbackEXT)) nfglBeginTransformFeedbackEXT( getStackedParameter(0) /* GLenum primitiveMode */); break; case NFOSMESA_GLBEGINTRANSFORMFEEDBACKNV: D(funcname = "glBeginTransformFeedbackNV"); if (GL_ISAVAILABLE(glBeginTransformFeedbackNV)) nfglBeginTransformFeedbackNV( getStackedParameter(0) /* GLenum primitiveMode */); break; case NFOSMESA_GLBEGINVERTEXSHADEREXT: D(funcname = "glBeginVertexShaderEXT"); if (GL_ISAVAILABLE(glBeginVertexShaderEXT)) nfglBeginVertexShaderEXT(); break; case NFOSMESA_GLBEGINVIDEOCAPTURENV: D(funcname = "glBeginVideoCaptureNV"); if (GL_ISAVAILABLE(glBeginVideoCaptureNV)) nfglBeginVideoCaptureNV( getStackedParameter(0) /* GLuint video_capture_slot */); break; case NFOSMESA_GLBINDATTRIBLOCATION: D(funcname = "glBindAttribLocation"); if (GL_ISAVAILABLE(glBindAttribLocation)) nfglBindAttribLocation( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLBINDATTRIBLOCATIONARB: D(funcname = "glBindAttribLocationARB"); if (GL_ISAVAILABLE(glBindAttribLocationARB)) nfglBindAttribLocationARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB programObj */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, const GLcharARB *) /* const GLcharARB *name */); break; case NFOSMESA_GLBINDBUFFER: D(funcname = "glBindBuffer"); if (GL_ISAVAILABLE(glBindBuffer)) nfglBindBuffer( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint buffer */); break; case NFOSMESA_GLBINDBUFFERARB: D(funcname = "glBindBufferARB"); if (GL_ISAVAILABLE(glBindBufferARB)) nfglBindBufferARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint buffer */); break; case NFOSMESA_GLBINDBUFFERBASE: D(funcname = "glBindBufferBase"); if (GL_ISAVAILABLE(glBindBufferBase)) nfglBindBufferBase( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2) /* GLuint buffer */); break; case NFOSMESA_GLBINDBUFFERBASEEXT: D(funcname = "glBindBufferBaseEXT"); if (GL_ISAVAILABLE(glBindBufferBaseEXT)) nfglBindBufferBaseEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2) /* GLuint buffer */); break; case NFOSMESA_GLBINDBUFFERBASENV: D(funcname = "glBindBufferBaseNV"); if (GL_ISAVAILABLE(glBindBufferBaseNV)) nfglBindBufferBaseNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2) /* GLuint buffer */); break; case NFOSMESA_GLBINDBUFFEROFFSETEXT: D(funcname = "glBindBufferOffsetEXT"); if (GL_ISAVAILABLE(glBindBufferOffsetEXT)) nfglBindBufferOffsetEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLuint buffer */ getStackedParameter(3) /* GLintptr offset */); break; case NFOSMESA_GLBINDBUFFEROFFSETNV: D(funcname = "glBindBufferOffsetNV"); if (GL_ISAVAILABLE(glBindBufferOffsetNV)) nfglBindBufferOffsetNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLuint buffer */ getStackedParameter(3) /* GLintptr offset */); break; case NFOSMESA_GLBINDBUFFERRANGE: D(funcname = "glBindBufferRange"); if (GL_ISAVAILABLE(glBindBufferRange)) nfglBindBufferRange( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLuint buffer */ getStackedParameter(3), /* GLintptr offset */ getStackedParameter(4) /* GLsizeiptr size */); break; case NFOSMESA_GLBINDBUFFERRANGEEXT: D(funcname = "glBindBufferRangeEXT"); if (GL_ISAVAILABLE(glBindBufferRangeEXT)) nfglBindBufferRangeEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLuint buffer */ getStackedParameter(3), /* GLintptr offset */ getStackedParameter(4) /* GLsizeiptr size */); break; case NFOSMESA_GLBINDBUFFERRANGENV: D(funcname = "glBindBufferRangeNV"); if (GL_ISAVAILABLE(glBindBufferRangeNV)) nfglBindBufferRangeNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLuint buffer */ getStackedParameter(3), /* GLintptr offset */ getStackedParameter(4) /* GLsizeiptr size */); break; case NFOSMESA_GLBINDBUFFERSBASE: D(funcname = "glBindBuffersBase"); if (GL_ISAVAILABLE(glBindBuffersBase)) nfglBindBuffersBase( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint first */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint *) /* const GLuint *buffers */); break; case NFOSMESA_GLBINDBUFFERSRANGE: D(funcname = "glBindBuffersRange"); if (GL_ISAVAILABLE(glBindBuffersRange)) nfglBindBuffersRange( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint first */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint *), /* const GLuint *buffers */ getStackedPointer(4, const GLintptr *), /* const GLintptr *offsets */ getStackedPointer(5, const GLsizeiptr *) /* const GLsizeiptr *sizes */); break; case NFOSMESA_GLBINDFRAGDATALOCATION: D(funcname = "glBindFragDataLocation"); if (GL_ISAVAILABLE(glBindFragDataLocation)) nfglBindFragDataLocation( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint color */ getStackedPointer(2, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLBINDFRAGDATALOCATIONEXT: D(funcname = "glBindFragDataLocationEXT"); if (GL_ISAVAILABLE(glBindFragDataLocationEXT)) nfglBindFragDataLocationEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint color */ getStackedPointer(2, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLBINDFRAGDATALOCATIONINDEXED: D(funcname = "glBindFragDataLocationIndexed"); if (GL_ISAVAILABLE(glBindFragDataLocationIndexed)) nfglBindFragDataLocationIndexed( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint colorNumber */ getStackedParameter(2), /* GLuint index */ getStackedPointer(3, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLBINDFRAGMENTSHADERATI: D(funcname = "glBindFragmentShaderATI"); if (GL_ISAVAILABLE(glBindFragmentShaderATI)) nfglBindFragmentShaderATI( getStackedParameter(0) /* GLuint id */); break; case NFOSMESA_GLBINDFRAMEBUFFER: D(funcname = "glBindFramebuffer"); if (GL_ISAVAILABLE(glBindFramebuffer)) nfglBindFramebuffer( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint framebuffer */); break; case NFOSMESA_GLBINDFRAMEBUFFEREXT: D(funcname = "glBindFramebufferEXT"); if (GL_ISAVAILABLE(glBindFramebufferEXT)) nfglBindFramebufferEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint framebuffer */); break; case NFOSMESA_GLBINDIMAGETEXTURE: D(funcname = "glBindImageTexture"); if (GL_ISAVAILABLE(glBindImageTexture)) nfglBindImageTexture( getStackedParameter(0), /* GLuint unit */ getStackedParameter(1), /* GLuint texture */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLboolean32 layered */ getStackedParameter(4), /* GLint layer */ getStackedParameter(5), /* GLenum access */ getStackedParameter(6) /* GLenum format */); break; case NFOSMESA_GLBINDIMAGETEXTUREEXT: D(funcname = "glBindImageTextureEXT"); if (GL_ISAVAILABLE(glBindImageTextureEXT)) nfglBindImageTextureEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLuint texture */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLboolean32 layered */ getStackedParameter(4), /* GLint layer */ getStackedParameter(5), /* GLenum access */ getStackedParameter(6) /* GLint format */); break; case NFOSMESA_GLBINDIMAGETEXTURES: D(funcname = "glBindImageTextures"); if (GL_ISAVAILABLE(glBindImageTextures)) nfglBindImageTextures( getStackedParameter(0), /* GLuint first */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint *) /* const GLuint *textures */); break; case NFOSMESA_GLBINDLIGHTPARAMETEREXT: D(funcname = "glBindLightParameterEXT"); if (GL_ISAVAILABLE(glBindLightParameterEXT)) ret = nfglBindLightParameterEXT( getStackedParameter(0), /* GLenum light */ getStackedParameter(1) /* GLenum value */); break; case NFOSMESA_GLBINDMATERIALPARAMETEREXT: D(funcname = "glBindMaterialParameterEXT"); if (GL_ISAVAILABLE(glBindMaterialParameterEXT)) ret = nfglBindMaterialParameterEXT( getStackedParameter(0), /* GLenum face */ getStackedParameter(1) /* GLenum value */); break; case NFOSMESA_GLBINDMULTITEXTUREEXT: D(funcname = "glBindMultiTextureEXT"); if (GL_ISAVAILABLE(glBindMultiTextureEXT)) nfglBindMultiTextureEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2) /* GLuint texture */); break; case NFOSMESA_GLBINDPARAMETEREXT: D(funcname = "glBindParameterEXT"); if (GL_ISAVAILABLE(glBindParameterEXT)) ret = nfglBindParameterEXT( getStackedParameter(0) /* GLenum value */); break; case NFOSMESA_GLBINDPROGRAMARB: D(funcname = "glBindProgramARB"); if (GL_ISAVAILABLE(glBindProgramARB)) nfglBindProgramARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint program */); break; case NFOSMESA_GLBINDPROGRAMNV: D(funcname = "glBindProgramNV"); if (GL_ISAVAILABLE(glBindProgramNV)) nfglBindProgramNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint id */); break; case NFOSMESA_GLBINDPROGRAMPIPELINE: D(funcname = "glBindProgramPipeline"); if (GL_ISAVAILABLE(glBindProgramPipeline)) nfglBindProgramPipeline( getStackedParameter(0) /* GLuint pipeline */); break; case NFOSMESA_GLBINDRENDERBUFFER: D(funcname = "glBindRenderbuffer"); if (GL_ISAVAILABLE(glBindRenderbuffer)) nfglBindRenderbuffer( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint renderbuffer */); break; case NFOSMESA_GLBINDRENDERBUFFEREXT: D(funcname = "glBindRenderbufferEXT"); if (GL_ISAVAILABLE(glBindRenderbufferEXT)) nfglBindRenderbufferEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint renderbuffer */); break; case NFOSMESA_GLBINDSAMPLER: D(funcname = "glBindSampler"); if (GL_ISAVAILABLE(glBindSampler)) nfglBindSampler( getStackedParameter(0), /* GLuint unit */ getStackedParameter(1) /* GLuint sampler */); break; case NFOSMESA_GLBINDSAMPLERS: D(funcname = "glBindSamplers"); if (GL_ISAVAILABLE(glBindSamplers)) nfglBindSamplers( getStackedParameter(0), /* GLuint first */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint *) /* const GLuint *samplers */); break; case NFOSMESA_GLBINDTEXGENPARAMETEREXT: D(funcname = "glBindTexGenParameterEXT"); if (GL_ISAVAILABLE(glBindTexGenParameterEXT)) ret = nfglBindTexGenParameterEXT( getStackedParameter(0), /* GLenum unit */ getStackedParameter(1), /* GLenum coord */ getStackedParameter(2) /* GLenum value */); break; case NFOSMESA_GLBINDTEXTURE: D(funcname = "glBindTexture"); if (GL_ISAVAILABLE(glBindTexture)) nfglBindTexture( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint texture */); break; case NFOSMESA_GLBINDTEXTUREEXT: D(funcname = "glBindTextureEXT"); if (GL_ISAVAILABLE(glBindTextureEXT)) nfglBindTextureEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint texture */); break; case NFOSMESA_GLBINDTEXTUREUNIT: D(funcname = "glBindTextureUnit"); if (GL_ISAVAILABLE(glBindTextureUnit)) nfglBindTextureUnit( getStackedParameter(0), /* GLuint unit */ getStackedParameter(1) /* GLuint texture */); break; case NFOSMESA_GLBINDTEXTUREUNITPARAMETEREXT: D(funcname = "glBindTextureUnitParameterEXT"); if (GL_ISAVAILABLE(glBindTextureUnitParameterEXT)) ret = nfglBindTextureUnitParameterEXT( getStackedParameter(0), /* GLenum unit */ getStackedParameter(1) /* GLenum value */); break; case NFOSMESA_GLBINDTEXTURES: D(funcname = "glBindTextures"); if (GL_ISAVAILABLE(glBindTextures)) nfglBindTextures( getStackedParameter(0), /* GLuint first */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint *) /* const GLuint *textures */); break; case NFOSMESA_GLBINDTRANSFORMFEEDBACK: D(funcname = "glBindTransformFeedback"); if (GL_ISAVAILABLE(glBindTransformFeedback)) nfglBindTransformFeedback( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint id */); break; case NFOSMESA_GLBINDTRANSFORMFEEDBACKNV: D(funcname = "glBindTransformFeedbackNV"); if (GL_ISAVAILABLE(glBindTransformFeedbackNV)) nfglBindTransformFeedbackNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint id */); break; case NFOSMESA_GLBINDVERTEXARRAY: D(funcname = "glBindVertexArray"); if (GL_ISAVAILABLE(glBindVertexArray)) nfglBindVertexArray( getStackedParameter(0) /* GLuint array */); break; case NFOSMESA_GLBINDVERTEXARRAYAPPLE: D(funcname = "glBindVertexArrayAPPLE"); if (GL_ISAVAILABLE(glBindVertexArrayAPPLE)) nfglBindVertexArrayAPPLE( getStackedParameter(0) /* GLuint array */); break; case NFOSMESA_GLBINDVERTEXBUFFER: D(funcname = "glBindVertexBuffer"); if (GL_ISAVAILABLE(glBindVertexBuffer)) nfglBindVertexBuffer( getStackedParameter(0), /* GLuint bindingindex */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLintptr offset */ getStackedParameter(3) /* GLsizei stride */); break; case NFOSMESA_GLBINDVERTEXBUFFERS: D(funcname = "glBindVertexBuffers"); if (GL_ISAVAILABLE(glBindVertexBuffers)) nfglBindVertexBuffers( getStackedParameter(0), /* GLuint first */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint *), /* const GLuint *buffers */ getStackedPointer(3, const GLintptr *), /* const GLintptr *offsets */ getStackedPointer(4, const GLsizei *) /* const GLsizei *strides */); break; case NFOSMESA_GLBINDVERTEXSHADEREXT: D(funcname = "glBindVertexShaderEXT"); if (GL_ISAVAILABLE(glBindVertexShaderEXT)) nfglBindVertexShaderEXT( getStackedParameter(0) /* GLuint id */); break; case NFOSMESA_GLBINDVIDEOCAPTURESTREAMBUFFERNV: D(funcname = "glBindVideoCaptureStreamBufferNV"); if (GL_ISAVAILABLE(glBindVideoCaptureStreamBufferNV)) nfglBindVideoCaptureStreamBufferNV( getStackedParameter(0), /* GLuint video_capture_slot */ getStackedParameter(1), /* GLuint stream */ getStackedParameter(2), /* GLenum frame_region */ getStackedParameter(3) /* GLintptrARB offset */); break; case NFOSMESA_GLBINDVIDEOCAPTURESTREAMTEXTURENV: D(funcname = "glBindVideoCaptureStreamTextureNV"); if (GL_ISAVAILABLE(glBindVideoCaptureStreamTextureNV)) nfglBindVideoCaptureStreamTextureNV( getStackedParameter(0), /* GLuint video_capture_slot */ getStackedParameter(1), /* GLuint stream */ getStackedParameter(2), /* GLenum frame_region */ getStackedParameter(3), /* GLenum target */ getStackedParameter(4) /* GLuint texture */); break; case NFOSMESA_GLBINORMAL3BEXT: D(funcname = "glBinormal3bEXT"); if (GL_ISAVAILABLE(glBinormal3bEXT)) nfglBinormal3bEXT( getStackedParameter(0), /* GLbyte32 bx */ getStackedParameter(1), /* GLbyte32 by */ getStackedParameter(2) /* GLbyte32 bz */); break; case NFOSMESA_GLBINORMAL3BVEXT: D(funcname = "glBinormal3bvEXT"); if (GL_ISAVAILABLE(glBinormal3bvEXT)) nfglBinormal3bvEXT( getStackedPointer(0, const GLbyte *) /* const GLbyte *v */); break; case NFOSMESA_GLBINORMAL3DEXT: D(funcname = "glBinormal3dEXT"); if (GL_ISAVAILABLE(glBinormal3dEXT)) nfglBinormal3dEXT( getStackedDouble(0), /* GLdouble bx */ getStackedDouble(2), /* GLdouble by */ getStackedDouble(4) /* GLdouble bz */); break; case NFOSMESA_GLBINORMAL3DVEXT: D(funcname = "glBinormal3dvEXT"); if (GL_ISAVAILABLE(glBinormal3dvEXT)) nfglBinormal3dvEXT( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLBINORMAL3FEXT: D(funcname = "glBinormal3fEXT"); if (GL_ISAVAILABLE(glBinormal3fEXT)) nfglBinormal3fEXT( getStackedFloat(0), /* GLfloat bx */ getStackedFloat(1), /* GLfloat by */ getStackedFloat(2) /* GLfloat bz */); break; case NFOSMESA_GLBINORMAL3FVEXT: D(funcname = "glBinormal3fvEXT"); if (GL_ISAVAILABLE(glBinormal3fvEXT)) nfglBinormal3fvEXT( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLBINORMAL3IEXT: D(funcname = "glBinormal3iEXT"); if (GL_ISAVAILABLE(glBinormal3iEXT)) nfglBinormal3iEXT( getStackedParameter(0), /* GLint bx */ getStackedParameter(1), /* GLint by */ getStackedParameter(2) /* GLint bz */); break; case NFOSMESA_GLBINORMAL3IVEXT: D(funcname = "glBinormal3ivEXT"); if (GL_ISAVAILABLE(glBinormal3ivEXT)) nfglBinormal3ivEXT( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLBINORMAL3SEXT: D(funcname = "glBinormal3sEXT"); if (GL_ISAVAILABLE(glBinormal3sEXT)) nfglBinormal3sEXT( getStackedParameter(0), /* GLshort32 bx */ getStackedParameter(1), /* GLshort32 by */ getStackedParameter(2) /* GLshort32 bz */); break; case NFOSMESA_GLBINORMAL3SVEXT: D(funcname = "glBinormal3svEXT"); if (GL_ISAVAILABLE(glBinormal3svEXT)) nfglBinormal3svEXT( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLBINORMALPOINTEREXT: D(funcname = "glBinormalPointerEXT"); if (GL_ISAVAILABLE(glBinormalPointerEXT)) nfglBinormalPointerEXT( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLsizei stride */ getStackedPointer(2, const void *) /* const void *pointer */); break; case NFOSMESA_GLBITMAP: D(funcname = "glBitmap"); if (GL_ISAVAILABLE(glBitmap)) nfglBitmap( getStackedParameter(0), /* GLsizei width */ getStackedParameter(1), /* GLsizei height */ getStackedFloat(2), /* GLfloat xorig */ getStackedFloat(3), /* GLfloat yorig */ getStackedFloat(4), /* GLfloat xmove */ getStackedFloat(5), /* GLfloat ymove */ getStackedPointer(6, const GLubyte *) /* const GLubyte *bitmap */); break; case NFOSMESA_GLBITMAPXOES: D(funcname = "glBitmapxOES"); if (GL_ISAVAILABLE(glBitmapxOES)) nfglBitmapxOES( getStackedParameter(0), /* GLsizei width */ getStackedParameter(1), /* GLsizei height */ getStackedParameter(2), /* GLfixed xorig */ getStackedParameter(3), /* GLfixed yorig */ getStackedParameter(4), /* GLfixed xmove */ getStackedParameter(5), /* GLfixed ymove */ getStackedPointer(6, const GLubyte *) /* const GLubyte *bitmap */); break; case NFOSMESA_GLBLENDBARRIERKHR: D(funcname = "glBlendBarrierKHR"); if (GL_ISAVAILABLE(glBlendBarrierKHR)) nfglBlendBarrierKHR(); break; case NFOSMESA_GLBLENDBARRIERNV: D(funcname = "glBlendBarrierNV"); if (GL_ISAVAILABLE(glBlendBarrierNV)) nfglBlendBarrierNV(); break; case NFOSMESA_GLBLENDCOLOR: D(funcname = "glBlendColor"); if (GL_ISAVAILABLE(glBlendColor)) nfglBlendColor( getStackedFloat(0), /* GLfloat red */ getStackedFloat(1), /* GLfloat green */ getStackedFloat(2), /* GLfloat blue */ getStackedFloat(3) /* GLfloat alpha */); break; case NFOSMESA_GLBLENDCOLOREXT: D(funcname = "glBlendColorEXT"); if (GL_ISAVAILABLE(glBlendColorEXT)) nfglBlendColorEXT( getStackedFloat(0), /* GLfloat red */ getStackedFloat(1), /* GLfloat green */ getStackedFloat(2), /* GLfloat blue */ getStackedFloat(3) /* GLfloat alpha */); break; case NFOSMESA_GLBLENDCOLORXOES: D(funcname = "glBlendColorxOES"); if (GL_ISAVAILABLE(glBlendColorxOES)) nfglBlendColorxOES( getStackedParameter(0), /* GLfixed red */ getStackedParameter(1), /* GLfixed green */ getStackedParameter(2), /* GLfixed blue */ getStackedParameter(3) /* GLfixed alpha */); break; case NFOSMESA_GLBLENDEQUATION: D(funcname = "glBlendEquation"); if (GL_ISAVAILABLE(glBlendEquation)) nfglBlendEquation( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLBLENDEQUATIONEXT: D(funcname = "glBlendEquationEXT"); if (GL_ISAVAILABLE(glBlendEquationEXT)) nfglBlendEquationEXT( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLBLENDEQUATIONINDEXEDAMD: D(funcname = "glBlendEquationIndexedAMD"); if (GL_ISAVAILABLE(glBlendEquationIndexedAMD)) nfglBlendEquationIndexedAMD( getStackedParameter(0), /* GLuint buf */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLBLENDEQUATIONSEPARATE: D(funcname = "glBlendEquationSeparate"); if (GL_ISAVAILABLE(glBlendEquationSeparate)) nfglBlendEquationSeparate( getStackedParameter(0), /* GLenum modeRGB */ getStackedParameter(1) /* GLenum modeAlpha */); break; case NFOSMESA_GLBLENDEQUATIONSEPARATEATI: D(funcname = "glBlendEquationSeparateATI"); if (GL_ISAVAILABLE(glBlendEquationSeparateATI)) nfglBlendEquationSeparateATI( getStackedParameter(0), /* GLenum equationRGB */ getStackedParameter(1) /* GLenum equationAlpha */); break; case NFOSMESA_GLBLENDEQUATIONSEPARATEEXT: D(funcname = "glBlendEquationSeparateEXT"); if (GL_ISAVAILABLE(glBlendEquationSeparateEXT)) nfglBlendEquationSeparateEXT( getStackedParameter(0), /* GLenum modeRGB */ getStackedParameter(1) /* GLenum modeAlpha */); break; case NFOSMESA_GLBLENDEQUATIONSEPARATEINDEXEDAMD: D(funcname = "glBlendEquationSeparateIndexedAMD"); if (GL_ISAVAILABLE(glBlendEquationSeparateIndexedAMD)) nfglBlendEquationSeparateIndexedAMD( getStackedParameter(0), /* GLuint buf */ getStackedParameter(1), /* GLenum modeRGB */ getStackedParameter(2) /* GLenum modeAlpha */); break; case NFOSMESA_GLBLENDEQUATIONSEPARATEI: D(funcname = "glBlendEquationSeparatei"); if (GL_ISAVAILABLE(glBlendEquationSeparatei)) nfglBlendEquationSeparatei( getStackedParameter(0), /* GLuint buf */ getStackedParameter(1), /* GLenum modeRGB */ getStackedParameter(2) /* GLenum modeAlpha */); break; case NFOSMESA_GLBLENDEQUATIONSEPARATEIARB: D(funcname = "glBlendEquationSeparateiARB"); if (GL_ISAVAILABLE(glBlendEquationSeparateiARB)) nfglBlendEquationSeparateiARB( getStackedParameter(0), /* GLuint buf */ getStackedParameter(1), /* GLenum modeRGB */ getStackedParameter(2) /* GLenum modeAlpha */); break; case NFOSMESA_GLBLENDEQUATIONI: D(funcname = "glBlendEquationi"); if (GL_ISAVAILABLE(glBlendEquationi)) nfglBlendEquationi( getStackedParameter(0), /* GLuint buf */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLBLENDEQUATIONIARB: D(funcname = "glBlendEquationiARB"); if (GL_ISAVAILABLE(glBlendEquationiARB)) nfglBlendEquationiARB( getStackedParameter(0), /* GLuint buf */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLBLENDFUNC: D(funcname = "glBlendFunc"); if (GL_ISAVAILABLE(glBlendFunc)) nfglBlendFunc( getStackedParameter(0), /* GLenum sfactor */ getStackedParameter(1) /* GLenum dfactor */); break; case NFOSMESA_GLBLENDFUNCINDEXEDAMD: D(funcname = "glBlendFuncIndexedAMD"); if (GL_ISAVAILABLE(glBlendFuncIndexedAMD)) nfglBlendFuncIndexedAMD( getStackedParameter(0), /* GLuint buf */ getStackedParameter(1), /* GLenum src */ getStackedParameter(2) /* GLenum dst */); break; case NFOSMESA_GLBLENDFUNCSEPARATE: D(funcname = "glBlendFuncSeparate"); if (GL_ISAVAILABLE(glBlendFuncSeparate)) nfglBlendFuncSeparate( getStackedParameter(0), /* GLenum sfactorRGB */ getStackedParameter(1), /* GLenum dfactorRGB */ getStackedParameter(2), /* GLenum sfactorAlpha */ getStackedParameter(3) /* GLenum dfactorAlpha */); break; case NFOSMESA_GLBLENDFUNCSEPARATEEXT: D(funcname = "glBlendFuncSeparateEXT"); if (GL_ISAVAILABLE(glBlendFuncSeparateEXT)) nfglBlendFuncSeparateEXT( getStackedParameter(0), /* GLenum sfactorRGB */ getStackedParameter(1), /* GLenum dfactorRGB */ getStackedParameter(2), /* GLenum sfactorAlpha */ getStackedParameter(3) /* GLenum dfactorAlpha */); break; case NFOSMESA_GLBLENDFUNCSEPARATEINGR: D(funcname = "glBlendFuncSeparateINGR"); if (GL_ISAVAILABLE(glBlendFuncSeparateINGR)) nfglBlendFuncSeparateINGR( getStackedParameter(0), /* GLenum sfactorRGB */ getStackedParameter(1), /* GLenum dfactorRGB */ getStackedParameter(2), /* GLenum sfactorAlpha */ getStackedParameter(3) /* GLenum dfactorAlpha */); break; case NFOSMESA_GLBLENDFUNCSEPARATEINDEXEDAMD: D(funcname = "glBlendFuncSeparateIndexedAMD"); if (GL_ISAVAILABLE(glBlendFuncSeparateIndexedAMD)) nfglBlendFuncSeparateIndexedAMD( getStackedParameter(0), /* GLuint buf */ getStackedParameter(1), /* GLenum srcRGB */ getStackedParameter(2), /* GLenum dstRGB */ getStackedParameter(3), /* GLenum srcAlpha */ getStackedParameter(4) /* GLenum dstAlpha */); break; case NFOSMESA_GLBLENDFUNCSEPARATEI: D(funcname = "glBlendFuncSeparatei"); if (GL_ISAVAILABLE(glBlendFuncSeparatei)) nfglBlendFuncSeparatei( getStackedParameter(0), /* GLuint buf */ getStackedParameter(1), /* GLenum srcRGB */ getStackedParameter(2), /* GLenum dstRGB */ getStackedParameter(3), /* GLenum srcAlpha */ getStackedParameter(4) /* GLenum dstAlpha */); break; case NFOSMESA_GLBLENDFUNCSEPARATEIARB: D(funcname = "glBlendFuncSeparateiARB"); if (GL_ISAVAILABLE(glBlendFuncSeparateiARB)) nfglBlendFuncSeparateiARB( getStackedParameter(0), /* GLuint buf */ getStackedParameter(1), /* GLenum srcRGB */ getStackedParameter(2), /* GLenum dstRGB */ getStackedParameter(3), /* GLenum srcAlpha */ getStackedParameter(4) /* GLenum dstAlpha */); break; case NFOSMESA_GLBLENDFUNCI: D(funcname = "glBlendFunci"); if (GL_ISAVAILABLE(glBlendFunci)) nfglBlendFunci( getStackedParameter(0), /* GLuint buf */ getStackedParameter(1), /* GLenum src */ getStackedParameter(2) /* GLenum dst */); break; case NFOSMESA_GLBLENDFUNCIARB: D(funcname = "glBlendFunciARB"); if (GL_ISAVAILABLE(glBlendFunciARB)) nfglBlendFunciARB( getStackedParameter(0), /* GLuint buf */ getStackedParameter(1), /* GLenum src */ getStackedParameter(2) /* GLenum dst */); break; case NFOSMESA_GLBLENDPARAMETERINV: D(funcname = "glBlendParameteriNV"); if (GL_ISAVAILABLE(glBlendParameteriNV)) nfglBlendParameteriNV( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint value */); break; case NFOSMESA_GLBLITFRAMEBUFFER: D(funcname = "glBlitFramebuffer"); if (GL_ISAVAILABLE(glBlitFramebuffer)) nfglBlitFramebuffer( getStackedParameter(0), /* GLint srcX0 */ getStackedParameter(1), /* GLint srcY0 */ getStackedParameter(2), /* GLint srcX1 */ getStackedParameter(3), /* GLint srcY1 */ getStackedParameter(4), /* GLint dstX0 */ getStackedParameter(5), /* GLint dstY0 */ getStackedParameter(6), /* GLint dstX1 */ getStackedParameter(7), /* GLint dstY1 */ getStackedParameter(8), /* GLbitfield mask */ getStackedParameter(9) /* GLenum filter */); break; case NFOSMESA_GLBLITFRAMEBUFFEREXT: D(funcname = "glBlitFramebufferEXT"); if (GL_ISAVAILABLE(glBlitFramebufferEXT)) nfglBlitFramebufferEXT( getStackedParameter(0), /* GLint srcX0 */ getStackedParameter(1), /* GLint srcY0 */ getStackedParameter(2), /* GLint srcX1 */ getStackedParameter(3), /* GLint srcY1 */ getStackedParameter(4), /* GLint dstX0 */ getStackedParameter(5), /* GLint dstY0 */ getStackedParameter(6), /* GLint dstX1 */ getStackedParameter(7), /* GLint dstY1 */ getStackedParameter(8), /* GLbitfield mask */ getStackedParameter(9) /* GLenum filter */); break; case NFOSMESA_GLBLITNAMEDFRAMEBUFFER: D(funcname = "glBlitNamedFramebuffer"); if (GL_ISAVAILABLE(glBlitNamedFramebuffer)) nfglBlitNamedFramebuffer( getStackedParameter(0), /* GLuint readFramebuffer */ getStackedParameter(1), /* GLuint drawFramebuffer */ getStackedParameter(2), /* GLint srcX0 */ getStackedParameter(3), /* GLint srcY0 */ getStackedParameter(4), /* GLint srcX1 */ getStackedParameter(5), /* GLint srcY1 */ getStackedParameter(6), /* GLint dstX0 */ getStackedParameter(7), /* GLint dstY0 */ getStackedParameter(8), /* GLint dstX1 */ getStackedParameter(9), /* GLint dstY1 */ getStackedParameter(10), /* GLbitfield mask */ getStackedParameter(11) /* GLenum filter */); break; case NFOSMESA_GLBUFFERADDRESSRANGENV: D(funcname = "glBufferAddressRangeNV"); if (GL_ISAVAILABLE(glBufferAddressRangeNV)) nfglBufferAddressRangeNV( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1), /* GLuint index */ getStackedParameter64(2), /* GLuint64EXT address */ getStackedParameter(4) /* GLsizeiptr length */); break; case NFOSMESA_GLBUFFERDATA: D(funcname = "glBufferData"); if (GL_ISAVAILABLE(glBufferData)) nfglBufferData( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizeiptr size */ getStackedPointer(2, const void *), /* const void *data */ getStackedParameter(3) /* GLenum usage */); break; case NFOSMESA_GLBUFFERDATAARB: D(funcname = "glBufferDataARB"); if (GL_ISAVAILABLE(glBufferDataARB)) nfglBufferDataARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizeiptrARB size */ getStackedPointer(2, const void *), /* const void *data */ getStackedParameter(3) /* GLenum usage */); break; case NFOSMESA_GLBUFFERPAGECOMMITMENTARB: D(funcname = "glBufferPageCommitmentARB"); if (GL_ISAVAILABLE(glBufferPageCommitmentARB)) nfglBufferPageCommitmentARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2), /* GLsizeiptr size */ getStackedParameter(3) /* GLboolean32 commit */); break; case NFOSMESA_GLBUFFERPARAMETERIAPPLE: D(funcname = "glBufferParameteriAPPLE"); if (GL_ISAVAILABLE(glBufferParameteriAPPLE)) nfglBufferParameteriAPPLE( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLBUFFERSTORAGE: D(funcname = "glBufferStorage"); if (GL_ISAVAILABLE(glBufferStorage)) nfglBufferStorage( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizeiptr size */ getStackedPointer(2, const void *), /* const void *data */ getStackedParameter(3) /* GLbitfield flags */); break; case NFOSMESA_GLBUFFERSTORAGEEXTERNALEXT: D(funcname = "glBufferStorageExternalEXT"); if (GL_ISAVAILABLE(glBufferStorageExternalEXT)) nfglBufferStorageExternalEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2), /* GLsizeiptr size */ getStackedPointer(3, GLeglClientBufferEXT ), /* GLeglClientBufferEXT clientBuffer */ getStackedParameter(4) /* GLbitfield flags */); break; case NFOSMESA_GLBUFFERSTORAGEMEMEXT: D(funcname = "glBufferStorageMemEXT"); if (GL_ISAVAILABLE(glBufferStorageMemEXT)) nfglBufferStorageMemEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizeiptr size */ getStackedParameter(2), /* GLuint memory */ getStackedParameter64(3) /* GLuint64 offset */); break; case NFOSMESA_GLBUFFERSUBDATA: D(funcname = "glBufferSubData"); if (GL_ISAVAILABLE(glBufferSubData)) nfglBufferSubData( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2), /* GLsizeiptr size */ getStackedPointer(3, const void *) /* const void *data */); break; case NFOSMESA_GLBUFFERSUBDATAARB: D(funcname = "glBufferSubDataARB"); if (GL_ISAVAILABLE(glBufferSubDataARB)) nfglBufferSubDataARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLintptrARB offset */ getStackedParameter(2), /* GLsizeiptrARB size */ getStackedPointer(3, const void *) /* const void *data */); break; case NFOSMESA_GLCALLCOMMANDLISTNV: D(funcname = "glCallCommandListNV"); if (GL_ISAVAILABLE(glCallCommandListNV)) nfglCallCommandListNV( getStackedParameter(0) /* GLuint list */); break; case NFOSMESA_GLCALLLIST: D(funcname = "glCallList"); if (GL_ISAVAILABLE(glCallList)) nfglCallList( getStackedParameter(0) /* GLuint list */); break; case NFOSMESA_GLCALLLISTS: D(funcname = "glCallLists"); if (GL_ISAVAILABLE(glCallLists)) nfglCallLists( getStackedParameter(0), /* GLsizei n */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const GLvoid *) /* const GLvoid *lists */); break; case NFOSMESA_GLCHECKFRAMEBUFFERSTATUS: D(funcname = "glCheckFramebufferStatus"); if (GL_ISAVAILABLE(glCheckFramebufferStatus)) ret = nfglCheckFramebufferStatus( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLCHECKFRAMEBUFFERSTATUSEXT: D(funcname = "glCheckFramebufferStatusEXT"); if (GL_ISAVAILABLE(glCheckFramebufferStatusEXT)) ret = nfglCheckFramebufferStatusEXT( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLCHECKNAMEDFRAMEBUFFERSTATUS: D(funcname = "glCheckNamedFramebufferStatus"); if (GL_ISAVAILABLE(glCheckNamedFramebufferStatus)) ret = nfglCheckNamedFramebufferStatus( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1) /* GLenum target */); break; case NFOSMESA_GLCHECKNAMEDFRAMEBUFFERSTATUSEXT: D(funcname = "glCheckNamedFramebufferStatusEXT"); if (GL_ISAVAILABLE(glCheckNamedFramebufferStatusEXT)) ret = nfglCheckNamedFramebufferStatusEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1) /* GLenum target */); break; case NFOSMESA_GLCLAMPCOLOR: D(funcname = "glClampColor"); if (GL_ISAVAILABLE(glClampColor)) nfglClampColor( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLenum clamp */); break; case NFOSMESA_GLCLAMPCOLORARB: D(funcname = "glClampColorARB"); if (GL_ISAVAILABLE(glClampColorARB)) nfglClampColorARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLenum clamp */); break; case NFOSMESA_GLCLEAR: D(funcname = "glClear"); if (GL_ISAVAILABLE(glClear)) nfglClear( getStackedParameter(0) /* GLbitfield mask */); break; case NFOSMESA_GLCLEARACCUM: D(funcname = "glClearAccum"); if (GL_ISAVAILABLE(glClearAccum)) nfglClearAccum( getStackedFloat(0), /* GLfloat red */ getStackedFloat(1), /* GLfloat green */ getStackedFloat(2), /* GLfloat blue */ getStackedFloat(3) /* GLfloat alpha */); break; case NFOSMESA_GLCLEARACCUMXOES: D(funcname = "glClearAccumxOES"); if (GL_ISAVAILABLE(glClearAccumxOES)) nfglClearAccumxOES( getStackedParameter(0), /* GLfixed red */ getStackedParameter(1), /* GLfixed green */ getStackedParameter(2), /* GLfixed blue */ getStackedParameter(3) /* GLfixed alpha */); break; case NFOSMESA_GLCLEARBUFFERDATA: D(funcname = "glClearBufferData"); if (GL_ISAVAILABLE(glClearBufferData)) nfglClearBufferData( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedPointer(4, const void *) /* const void *data */); break; case NFOSMESA_GLCLEARBUFFERSUBDATA: D(funcname = "glClearBufferSubData"); if (GL_ISAVAILABLE(glClearBufferSubData)) nfglClearBufferSubData( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLintptr offset */ getStackedParameter(3), /* GLsizeiptr size */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLenum type */ getStackedPointer(6, const void *) /* const void *data */); break; case NFOSMESA_GLCLEARBUFFERFI: D(funcname = "glClearBufferfi"); if (GL_ISAVAILABLE(glClearBufferfi)) nfglClearBufferfi( getStackedParameter(0), /* GLenum buffer */ getStackedParameter(1), /* GLint drawbuffer */ getStackedFloat(2), /* GLfloat depth */ getStackedParameter(3) /* GLint stencil */); break; case NFOSMESA_GLCLEARBUFFERFV: D(funcname = "glClearBufferfv"); if (GL_ISAVAILABLE(glClearBufferfv)) nfglClearBufferfv( getStackedParameter(0), /* GLenum buffer */ getStackedParameter(1), /* GLint drawbuffer */ getStackedPointer(2, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLCLEARBUFFERIV: D(funcname = "glClearBufferiv"); if (GL_ISAVAILABLE(glClearBufferiv)) nfglClearBufferiv( getStackedParameter(0), /* GLenum buffer */ getStackedParameter(1), /* GLint drawbuffer */ getStackedPointer(2, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLCLEARBUFFERUIV: D(funcname = "glClearBufferuiv"); if (GL_ISAVAILABLE(glClearBufferuiv)) nfglClearBufferuiv( getStackedParameter(0), /* GLenum buffer */ getStackedParameter(1), /* GLint drawbuffer */ getStackedPointer(2, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLCLEARCOLOR: D(funcname = "glClearColor"); if (GL_ISAVAILABLE(glClearColor)) nfglClearColor( getStackedFloat(0), /* GLclampf red */ getStackedFloat(1), /* GLclampf green */ getStackedFloat(2), /* GLclampf blue */ getStackedFloat(3) /* GLclampf alpha */); break; case NFOSMESA_GLCLEARCOLORIIEXT: D(funcname = "glClearColorIiEXT"); if (GL_ISAVAILABLE(glClearColorIiEXT)) nfglClearColorIiEXT( getStackedParameter(0), /* GLint red */ getStackedParameter(1), /* GLint green */ getStackedParameter(2), /* GLint blue */ getStackedParameter(3) /* GLint alpha */); break; case NFOSMESA_GLCLEARCOLORIUIEXT: D(funcname = "glClearColorIuiEXT"); if (GL_ISAVAILABLE(glClearColorIuiEXT)) nfglClearColorIuiEXT( getStackedParameter(0), /* GLuint red */ getStackedParameter(1), /* GLuint green */ getStackedParameter(2), /* GLuint blue */ getStackedParameter(3) /* GLuint alpha */); break; case NFOSMESA_GLCLEARCOLORXOES: D(funcname = "glClearColorxOES"); if (GL_ISAVAILABLE(glClearColorxOES)) nfglClearColorxOES( getStackedParameter(0), /* GLfixed red */ getStackedParameter(1), /* GLfixed green */ getStackedParameter(2), /* GLfixed blue */ getStackedParameter(3) /* GLfixed alpha */); break; case NFOSMESA_GLCLEARDEBUGLOGMESA: D(funcname = "glClearDebugLogMESA"); if (GL_ISAVAILABLE(glClearDebugLogMESA)) nfglClearDebugLogMESA( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB obj */ getStackedParameter(1), /* GLenum logType */ getStackedParameter(2) /* GLenum shaderType */); break; case NFOSMESA_GLCLEARDEPTH: D(funcname = "glClearDepth"); if (GL_ISAVAILABLE(glClearDepth)) nfglClearDepth( getStackedDouble(0) /* GLclampd depth */); break; case NFOSMESA_GLCLEARDEPTHDNV: D(funcname = "glClearDepthdNV"); if (GL_ISAVAILABLE(glClearDepthdNV)) nfglClearDepthdNV( getStackedDouble(0) /* GLdouble depth */); break; case NFOSMESA_GLCLEARDEPTHF: D(funcname = "glClearDepthf"); if (GL_ISAVAILABLE(glClearDepthf)) nfglClearDepthf( getStackedFloat(0) /* GLfloat d */); break; case NFOSMESA_GLCLEARDEPTHFOES: D(funcname = "glClearDepthfOES"); if (GL_ISAVAILABLE(glClearDepthfOES)) nfglClearDepthfOES( getStackedFloat(0) /* GLclampf depth */); break; case NFOSMESA_GLCLEARDEPTHXOES: D(funcname = "glClearDepthxOES"); if (GL_ISAVAILABLE(glClearDepthxOES)) nfglClearDepthxOES( getStackedParameter(0) /* GLfixed depth */); break; case NFOSMESA_GLCLEARINDEX: D(funcname = "glClearIndex"); if (GL_ISAVAILABLE(glClearIndex)) nfglClearIndex( getStackedFloat(0) /* GLfloat c */); break; case NFOSMESA_GLCLEARNAMEDBUFFERDATA: D(funcname = "glClearNamedBufferData"); if (GL_ISAVAILABLE(glClearNamedBufferData)) nfglClearNamedBufferData( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedPointer(4, const void *) /* const void *data */); break; case NFOSMESA_GLCLEARNAMEDBUFFERDATAEXT: D(funcname = "glClearNamedBufferDataEXT"); if (GL_ISAVAILABLE(glClearNamedBufferDataEXT)) nfglClearNamedBufferDataEXT( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedPointer(4, const void *) /* const void *data */); break; case NFOSMESA_GLCLEARNAMEDBUFFERSUBDATA: D(funcname = "glClearNamedBufferSubData"); if (GL_ISAVAILABLE(glClearNamedBufferSubData)) nfglClearNamedBufferSubData( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLintptr offset */ getStackedParameter(3), /* GLsizeiptr size */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLenum type */ getStackedPointer(6, const void *) /* const void *data */); break; case NFOSMESA_GLCLEARNAMEDBUFFERSUBDATAEXT: D(funcname = "glClearNamedBufferSubDataEXT"); if (GL_ISAVAILABLE(glClearNamedBufferSubDataEXT)) nfglClearNamedBufferSubDataEXT( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLsizeiptr offset */ getStackedParameter(3), /* GLsizeiptr size */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLenum type */ getStackedPointer(6, const void *) /* const void *data */); break; case NFOSMESA_GLCLEARNAMEDFRAMEBUFFERFI: D(funcname = "glClearNamedFramebufferfi"); if (GL_ISAVAILABLE(glClearNamedFramebufferfi)) nfglClearNamedFramebufferfi( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum buffer */ getStackedParameter(2), /* GLint drawbuffer */ getStackedFloat(3), /* GLfloat depth */ getStackedParameter(4) /* GLint stencil */); break; case NFOSMESA_GLCLEARNAMEDFRAMEBUFFERFV: D(funcname = "glClearNamedFramebufferfv"); if (GL_ISAVAILABLE(glClearNamedFramebufferfv)) nfglClearNamedFramebufferfv( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum buffer */ getStackedParameter(2), /* GLint drawbuffer */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLCLEARNAMEDFRAMEBUFFERIV: D(funcname = "glClearNamedFramebufferiv"); if (GL_ISAVAILABLE(glClearNamedFramebufferiv)) nfglClearNamedFramebufferiv( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum buffer */ getStackedParameter(2), /* GLint drawbuffer */ getStackedPointer(3, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLCLEARNAMEDFRAMEBUFFERUIV: D(funcname = "glClearNamedFramebufferuiv"); if (GL_ISAVAILABLE(glClearNamedFramebufferuiv)) nfglClearNamedFramebufferuiv( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum buffer */ getStackedParameter(2), /* GLint drawbuffer */ getStackedPointer(3, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLCLEARSTENCIL: D(funcname = "glClearStencil"); if (GL_ISAVAILABLE(glClearStencil)) nfglClearStencil( getStackedParameter(0) /* GLint s */); break; case NFOSMESA_GLCLEARTEXIMAGE: D(funcname = "glClearTexImage"); if (GL_ISAVAILABLE(glClearTexImage)) nfglClearTexImage( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedPointer(4, const void *) /* const void *data */); break; case NFOSMESA_GLCLEARTEXSUBIMAGE: D(funcname = "glClearTexSubImage"); if (GL_ISAVAILABLE(glClearTexSubImage)) nfglClearTexSubImage( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLsizei depth */ getStackedParameter(8), /* GLenum format */ getStackedParameter(9), /* GLenum type */ getStackedPointer(10, const void *) /* const void *data */); break; case NFOSMESA_GLCLIENTACTIVETEXTURE: D(funcname = "glClientActiveTexture"); if (GL_ISAVAILABLE(glClientActiveTexture)) nfglClientActiveTexture( getStackedParameter(0) /* GLenum texture */); break; case NFOSMESA_GLCLIENTACTIVETEXTUREARB: D(funcname = "glClientActiveTextureARB"); if (GL_ISAVAILABLE(glClientActiveTextureARB)) nfglClientActiveTextureARB( getStackedParameter(0) /* GLenum texture */); break; case NFOSMESA_GLCLIENTACTIVEVERTEXSTREAMATI: D(funcname = "glClientActiveVertexStreamATI"); if (GL_ISAVAILABLE(glClientActiveVertexStreamATI)) nfglClientActiveVertexStreamATI( getStackedParameter(0) /* GLenum stream */); break; case NFOSMESA_GLCLIENTATTRIBDEFAULTEXT: D(funcname = "glClientAttribDefaultEXT"); if (GL_ISAVAILABLE(glClientAttribDefaultEXT)) nfglClientAttribDefaultEXT( getStackedParameter(0) /* GLbitfield mask */); break; case NFOSMESA_GLCLIENTWAITSYNC: D(funcname = "glClientWaitSync"); if (GL_ISAVAILABLE(glClientWaitSync)) ret = nfglClientWaitSync( (GLsync)(uintptr_t)getStackedParameter(0), /* GLsync sync */ getStackedParameter(1), /* GLbitfield flags */ getStackedParameter64(2) /* GLuint64 timeout */); break; case NFOSMESA_GLCLIPCONTROL: D(funcname = "glClipControl"); if (GL_ISAVAILABLE(glClipControl)) nfglClipControl( getStackedParameter(0), /* GLenum origin */ getStackedParameter(1) /* GLenum depth */); break; case NFOSMESA_GLCLIPPLANE: D(funcname = "glClipPlane"); if (GL_ISAVAILABLE(glClipPlane)) nfglClipPlane( getStackedParameter(0), /* GLenum plane */ getStackedPointer(1, const GLdouble *) /* const GLdouble *equation */); break; case NFOSMESA_GLCLIPPLANEFOES: D(funcname = "glClipPlanefOES"); if (GL_ISAVAILABLE(glClipPlanefOES)) nfglClipPlanefOES( getStackedParameter(0), /* GLenum plane */ getStackedPointer(1, const GLfloat *) /* const GLfloat *equation */); break; case NFOSMESA_GLCLIPPLANEXOES: D(funcname = "glClipPlanexOES"); if (GL_ISAVAILABLE(glClipPlanexOES)) nfglClipPlanexOES( getStackedParameter(0), /* GLenum plane */ getStackedPointer(1, const GLfixed *) /* const GLfixed *equation */); break; case NFOSMESA_GLCOLOR3B: D(funcname = "glColor3b"); if (GL_ISAVAILABLE(glColor3b)) nfglColor3b( getStackedParameter(0), /* GLbyte32 red */ getStackedParameter(1), /* GLbyte32 green */ getStackedParameter(2) /* GLbyte32 blue */); break; case NFOSMESA_GLCOLOR3BV: D(funcname = "glColor3bv"); if (GL_ISAVAILABLE(glColor3bv)) nfglColor3bv( getStackedPointer(0, const GLbyte *) /* const GLbyte *v */); break; case NFOSMESA_GLCOLOR3D: D(funcname = "glColor3d"); if (GL_ISAVAILABLE(glColor3d)) nfglColor3d( getStackedDouble(0), /* GLdouble red */ getStackedDouble(2), /* GLdouble green */ getStackedDouble(4) /* GLdouble blue */); break; case NFOSMESA_GLCOLOR3DV: D(funcname = "glColor3dv"); if (GL_ISAVAILABLE(glColor3dv)) nfglColor3dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLCOLOR3F: D(funcname = "glColor3f"); if (GL_ISAVAILABLE(glColor3f)) nfglColor3f( getStackedFloat(0), /* GLfloat red */ getStackedFloat(1), /* GLfloat green */ getStackedFloat(2) /* GLfloat blue */); break; case NFOSMESA_GLCOLOR3FVERTEX3FSUN: D(funcname = "glColor3fVertex3fSUN"); if (GL_ISAVAILABLE(glColor3fVertex3fSUN)) nfglColor3fVertex3fSUN( getStackedFloat(0), /* GLfloat r */ getStackedFloat(1), /* GLfloat g */ getStackedFloat(2), /* GLfloat b */ getStackedFloat(3), /* GLfloat x */ getStackedFloat(4), /* GLfloat y */ getStackedFloat(5) /* GLfloat z */); break; case NFOSMESA_GLCOLOR3FVERTEX3FVSUN: D(funcname = "glColor3fVertex3fvSUN"); if (GL_ISAVAILABLE(glColor3fVertex3fvSUN)) nfglColor3fVertex3fvSUN( getStackedPointer(0, const GLfloat *), /* const GLfloat *c */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLCOLOR3FV: D(funcname = "glColor3fv"); if (GL_ISAVAILABLE(glColor3fv)) nfglColor3fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLCOLOR3HNV: D(funcname = "glColor3hNV"); if (GL_ISAVAILABLE(glColor3hNV)) nfglColor3hNV( getStackedParameter(0), /* GLhalfNV32 red */ getStackedParameter(1), /* GLhalfNV32 green */ getStackedParameter(2) /* GLhalfNV32 blue */); break; case NFOSMESA_GLCOLOR3HVNV: D(funcname = "glColor3hvNV"); if (GL_ISAVAILABLE(glColor3hvNV)) nfglColor3hvNV( getStackedPointer(0, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLCOLOR3I: D(funcname = "glColor3i"); if (GL_ISAVAILABLE(glColor3i)) nfglColor3i( getStackedParameter(0), /* GLint red */ getStackedParameter(1), /* GLint green */ getStackedParameter(2) /* GLint blue */); break; case NFOSMESA_GLCOLOR3IV: D(funcname = "glColor3iv"); if (GL_ISAVAILABLE(glColor3iv)) nfglColor3iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLCOLOR3S: D(funcname = "glColor3s"); if (GL_ISAVAILABLE(glColor3s)) nfglColor3s( getStackedParameter(0), /* GLshort32 red */ getStackedParameter(1), /* GLshort32 green */ getStackedParameter(2) /* GLshort32 blue */); break; case NFOSMESA_GLCOLOR3SV: D(funcname = "glColor3sv"); if (GL_ISAVAILABLE(glColor3sv)) nfglColor3sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLCOLOR3UB: D(funcname = "glColor3ub"); if (GL_ISAVAILABLE(glColor3ub)) nfglColor3ub( getStackedParameter(0), /* GLubyte32 red */ getStackedParameter(1), /* GLubyte32 green */ getStackedParameter(2) /* GLubyte32 blue */); break; case NFOSMESA_GLCOLOR3UBV: D(funcname = "glColor3ubv"); if (GL_ISAVAILABLE(glColor3ubv)) nfglColor3ubv( getStackedPointer(0, const GLubyte *) /* const GLubyte *v */); break; case NFOSMESA_GLCOLOR3UI: D(funcname = "glColor3ui"); if (GL_ISAVAILABLE(glColor3ui)) nfglColor3ui( getStackedParameter(0), /* GLuint red */ getStackedParameter(1), /* GLuint green */ getStackedParameter(2) /* GLuint blue */); break; case NFOSMESA_GLCOLOR3UIV: D(funcname = "glColor3uiv"); if (GL_ISAVAILABLE(glColor3uiv)) nfglColor3uiv( getStackedPointer(0, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLCOLOR3US: D(funcname = "glColor3us"); if (GL_ISAVAILABLE(glColor3us)) nfglColor3us( getStackedParameter(0), /* GLushort32 red */ getStackedParameter(1), /* GLushort32 green */ getStackedParameter(2) /* GLushort32 blue */); break; case NFOSMESA_GLCOLOR3USV: D(funcname = "glColor3usv"); if (GL_ISAVAILABLE(glColor3usv)) nfglColor3usv( getStackedPointer(0, const GLushort *) /* const GLushort *v */); break; case NFOSMESA_GLCOLOR3XOES: D(funcname = "glColor3xOES"); if (GL_ISAVAILABLE(glColor3xOES)) nfglColor3xOES( getStackedParameter(0), /* GLfixed red */ getStackedParameter(1), /* GLfixed green */ getStackedParameter(2) /* GLfixed blue */); break; case NFOSMESA_GLCOLOR3XVOES: D(funcname = "glColor3xvOES"); if (GL_ISAVAILABLE(glColor3xvOES)) nfglColor3xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *components */); break; case NFOSMESA_GLCOLOR4B: D(funcname = "glColor4b"); if (GL_ISAVAILABLE(glColor4b)) nfglColor4b( getStackedParameter(0), /* GLbyte32 red */ getStackedParameter(1), /* GLbyte32 green */ getStackedParameter(2), /* GLbyte32 blue */ getStackedParameter(3) /* GLbyte32 alpha */); break; case NFOSMESA_GLCOLOR4BV: D(funcname = "glColor4bv"); if (GL_ISAVAILABLE(glColor4bv)) nfglColor4bv( getStackedPointer(0, const GLbyte *) /* const GLbyte *v */); break; case NFOSMESA_GLCOLOR4D: D(funcname = "glColor4d"); if (GL_ISAVAILABLE(glColor4d)) nfglColor4d( getStackedDouble(0), /* GLdouble red */ getStackedDouble(2), /* GLdouble green */ getStackedDouble(4), /* GLdouble blue */ getStackedDouble(6) /* GLdouble alpha */); break; case NFOSMESA_GLCOLOR4DV: D(funcname = "glColor4dv"); if (GL_ISAVAILABLE(glColor4dv)) nfglColor4dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLCOLOR4F: D(funcname = "glColor4f"); if (GL_ISAVAILABLE(glColor4f)) nfglColor4f( getStackedFloat(0), /* GLfloat red */ getStackedFloat(1), /* GLfloat green */ getStackedFloat(2), /* GLfloat blue */ getStackedFloat(3) /* GLfloat alpha */); break; case NFOSMESA_GLCOLOR4FNORMAL3FVERTEX3FSUN: D(funcname = "glColor4fNormal3fVertex3fSUN"); if (GL_ISAVAILABLE(glColor4fNormal3fVertex3fSUN)) nfglColor4fNormal3fVertex3fSUN( getStackedFloat(0), /* GLfloat r */ getStackedFloat(1), /* GLfloat g */ getStackedFloat(2), /* GLfloat b */ getStackedFloat(3), /* GLfloat a */ getStackedFloat(4), /* GLfloat nx */ getStackedFloat(5), /* GLfloat ny */ getStackedFloat(6), /* GLfloat nz */ getStackedFloat(7), /* GLfloat x */ getStackedFloat(8), /* GLfloat y */ getStackedFloat(9) /* GLfloat z */); break; case NFOSMESA_GLCOLOR4FNORMAL3FVERTEX3FVSUN: D(funcname = "glColor4fNormal3fVertex3fvSUN"); if (GL_ISAVAILABLE(glColor4fNormal3fVertex3fvSUN)) nfglColor4fNormal3fVertex3fvSUN( getStackedPointer(0, const GLfloat *), /* const GLfloat *c */ getStackedPointer(1, const GLfloat *), /* const GLfloat *n */ getStackedPointer(2, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLCOLOR4FV: D(funcname = "glColor4fv"); if (GL_ISAVAILABLE(glColor4fv)) nfglColor4fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLCOLOR4HNV: D(funcname = "glColor4hNV"); if (GL_ISAVAILABLE(glColor4hNV)) nfglColor4hNV( getStackedParameter(0), /* GLhalfNV32 red */ getStackedParameter(1), /* GLhalfNV32 green */ getStackedParameter(2), /* GLhalfNV32 blue */ getStackedParameter(3) /* GLhalfNV32 alpha */); break; case NFOSMESA_GLCOLOR4HVNV: D(funcname = "glColor4hvNV"); if (GL_ISAVAILABLE(glColor4hvNV)) nfglColor4hvNV( getStackedPointer(0, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLCOLOR4I: D(funcname = "glColor4i"); if (GL_ISAVAILABLE(glColor4i)) nfglColor4i( getStackedParameter(0), /* GLint red */ getStackedParameter(1), /* GLint green */ getStackedParameter(2), /* GLint blue */ getStackedParameter(3) /* GLint alpha */); break; case NFOSMESA_GLCOLOR4IV: D(funcname = "glColor4iv"); if (GL_ISAVAILABLE(glColor4iv)) nfglColor4iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLCOLOR4S: D(funcname = "glColor4s"); if (GL_ISAVAILABLE(glColor4s)) nfglColor4s( getStackedParameter(0), /* GLshort32 red */ getStackedParameter(1), /* GLshort32 green */ getStackedParameter(2), /* GLshort32 blue */ getStackedParameter(3) /* GLshort32 alpha */); break; case NFOSMESA_GLCOLOR4SV: D(funcname = "glColor4sv"); if (GL_ISAVAILABLE(glColor4sv)) nfglColor4sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLCOLOR4UB: D(funcname = "glColor4ub"); if (GL_ISAVAILABLE(glColor4ub)) nfglColor4ub( getStackedParameter(0), /* GLubyte32 red */ getStackedParameter(1), /* GLubyte32 green */ getStackedParameter(2), /* GLubyte32 blue */ getStackedParameter(3) /* GLubyte32 alpha */); break; case NFOSMESA_GLCOLOR4UBVERTEX2FSUN: D(funcname = "glColor4ubVertex2fSUN"); if (GL_ISAVAILABLE(glColor4ubVertex2fSUN)) nfglColor4ubVertex2fSUN( getStackedParameter(0), /* GLubyte32 r */ getStackedParameter(1), /* GLubyte32 g */ getStackedParameter(2), /* GLubyte32 b */ getStackedParameter(3), /* GLubyte32 a */ getStackedFloat(4), /* GLfloat x */ getStackedFloat(5) /* GLfloat y */); break; case NFOSMESA_GLCOLOR4UBVERTEX2FVSUN: D(funcname = "glColor4ubVertex2fvSUN"); if (GL_ISAVAILABLE(glColor4ubVertex2fvSUN)) nfglColor4ubVertex2fvSUN( getStackedPointer(0, const GLubyte *), /* const GLubyte *c */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLCOLOR4UBVERTEX3FSUN: D(funcname = "glColor4ubVertex3fSUN"); if (GL_ISAVAILABLE(glColor4ubVertex3fSUN)) nfglColor4ubVertex3fSUN( getStackedParameter(0), /* GLubyte32 r */ getStackedParameter(1), /* GLubyte32 g */ getStackedParameter(2), /* GLubyte32 b */ getStackedParameter(3), /* GLubyte32 a */ getStackedFloat(4), /* GLfloat x */ getStackedFloat(5), /* GLfloat y */ getStackedFloat(6) /* GLfloat z */); break; case NFOSMESA_GLCOLOR4UBVERTEX3FVSUN: D(funcname = "glColor4ubVertex3fvSUN"); if (GL_ISAVAILABLE(glColor4ubVertex3fvSUN)) nfglColor4ubVertex3fvSUN( getStackedPointer(0, const GLubyte *), /* const GLubyte *c */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLCOLOR4UBV: D(funcname = "glColor4ubv"); if (GL_ISAVAILABLE(glColor4ubv)) nfglColor4ubv( getStackedPointer(0, const GLubyte *) /* const GLubyte *v */); break; case NFOSMESA_GLCOLOR4UI: D(funcname = "glColor4ui"); if (GL_ISAVAILABLE(glColor4ui)) nfglColor4ui( getStackedParameter(0), /* GLuint red */ getStackedParameter(1), /* GLuint green */ getStackedParameter(2), /* GLuint blue */ getStackedParameter(3) /* GLuint alpha */); break; case NFOSMESA_GLCOLOR4UIV: D(funcname = "glColor4uiv"); if (GL_ISAVAILABLE(glColor4uiv)) nfglColor4uiv( getStackedPointer(0, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLCOLOR4US: D(funcname = "glColor4us"); if (GL_ISAVAILABLE(glColor4us)) nfglColor4us( getStackedParameter(0), /* GLushort32 red */ getStackedParameter(1), /* GLushort32 green */ getStackedParameter(2), /* GLushort32 blue */ getStackedParameter(3) /* GLushort32 alpha */); break; case NFOSMESA_GLCOLOR4USV: D(funcname = "glColor4usv"); if (GL_ISAVAILABLE(glColor4usv)) nfglColor4usv( getStackedPointer(0, const GLushort *) /* const GLushort *v */); break; case NFOSMESA_GLCOLOR4XOES: D(funcname = "glColor4xOES"); if (GL_ISAVAILABLE(glColor4xOES)) nfglColor4xOES( getStackedParameter(0), /* GLfixed red */ getStackedParameter(1), /* GLfixed green */ getStackedParameter(2), /* GLfixed blue */ getStackedParameter(3) /* GLfixed alpha */); break; case NFOSMESA_GLCOLOR4XVOES: D(funcname = "glColor4xvOES"); if (GL_ISAVAILABLE(glColor4xvOES)) nfglColor4xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *components */); break; case NFOSMESA_GLCOLORFORMATNV: D(funcname = "glColorFormatNV"); if (GL_ISAVAILABLE(glColorFormatNV)) nfglColorFormatNV( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2) /* GLsizei stride */); break; case NFOSMESA_GLCOLORFRAGMENTOP1ATI: D(funcname = "glColorFragmentOp1ATI"); if (GL_ISAVAILABLE(glColorFragmentOp1ATI)) nfglColorFragmentOp1ATI( getStackedParameter(0), /* GLenum op */ getStackedParameter(1), /* GLuint dst */ getStackedParameter(2), /* GLuint dstMask */ getStackedParameter(3), /* GLuint dstMod */ getStackedParameter(4), /* GLuint arg1 */ getStackedParameter(5), /* GLuint arg1Rep */ getStackedParameter(6) /* GLuint arg1Mod */); break; case NFOSMESA_GLCOLORFRAGMENTOP2ATI: D(funcname = "glColorFragmentOp2ATI"); if (GL_ISAVAILABLE(glColorFragmentOp2ATI)) nfglColorFragmentOp2ATI( getStackedParameter(0), /* GLenum op */ getStackedParameter(1), /* GLuint dst */ getStackedParameter(2), /* GLuint dstMask */ getStackedParameter(3), /* GLuint dstMod */ getStackedParameter(4), /* GLuint arg1 */ getStackedParameter(5), /* GLuint arg1Rep */ getStackedParameter(6), /* GLuint arg1Mod */ getStackedParameter(7), /* GLuint arg2 */ getStackedParameter(8), /* GLuint arg2Rep */ getStackedParameter(9) /* GLuint arg2Mod */); break; case NFOSMESA_GLCOLORFRAGMENTOP3ATI: D(funcname = "glColorFragmentOp3ATI"); if (GL_ISAVAILABLE(glColorFragmentOp3ATI)) nfglColorFragmentOp3ATI( getStackedParameter(0), /* GLenum op */ getStackedParameter(1), /* GLuint dst */ getStackedParameter(2), /* GLuint dstMask */ getStackedParameter(3), /* GLuint dstMod */ getStackedParameter(4), /* GLuint arg1 */ getStackedParameter(5), /* GLuint arg1Rep */ getStackedParameter(6), /* GLuint arg1Mod */ getStackedParameter(7), /* GLuint arg2 */ getStackedParameter(8), /* GLuint arg2Rep */ getStackedParameter(9), /* GLuint arg2Mod */ getStackedParameter(10), /* GLuint arg3 */ getStackedParameter(11), /* GLuint arg3Rep */ getStackedParameter(12) /* GLuint arg3Mod */); break; case NFOSMESA_GLCOLORMASK: D(funcname = "glColorMask"); if (GL_ISAVAILABLE(glColorMask)) nfglColorMask( getStackedParameter(0), /* GLboolean32 red */ getStackedParameter(1), /* GLboolean32 green */ getStackedParameter(2), /* GLboolean32 blue */ getStackedParameter(3) /* GLboolean32 alpha */); break; case NFOSMESA_GLCOLORMASKINDEXEDEXT: D(funcname = "glColorMaskIndexedEXT"); if (GL_ISAVAILABLE(glColorMaskIndexedEXT)) nfglColorMaskIndexedEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLboolean32 r */ getStackedParameter(2), /* GLboolean32 g */ getStackedParameter(3), /* GLboolean32 b */ getStackedParameter(4) /* GLboolean32 a */); break; case NFOSMESA_GLCOLORMASKI: D(funcname = "glColorMaski"); if (GL_ISAVAILABLE(glColorMaski)) nfglColorMaski( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLboolean32 r */ getStackedParameter(2), /* GLboolean32 g */ getStackedParameter(3), /* GLboolean32 b */ getStackedParameter(4) /* GLboolean32 a */); break; case NFOSMESA_GLCOLORMATERIAL: D(funcname = "glColorMaterial"); if (GL_ISAVAILABLE(glColorMaterial)) nfglColorMaterial( getStackedParameter(0), /* GLenum face */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLCOLORP3UI: D(funcname = "glColorP3ui"); if (GL_ISAVAILABLE(glColorP3ui)) nfglColorP3ui( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLuint color */); break; case NFOSMESA_GLCOLORP3UIV: D(funcname = "glColorP3uiv"); if (GL_ISAVAILABLE(glColorP3uiv)) nfglColorP3uiv( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const GLuint *) /* const GLuint *color */); break; case NFOSMESA_GLCOLORP4UI: D(funcname = "glColorP4ui"); if (GL_ISAVAILABLE(glColorP4ui)) nfglColorP4ui( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLuint color */); break; case NFOSMESA_GLCOLORP4UIV: D(funcname = "glColorP4uiv"); if (GL_ISAVAILABLE(glColorP4uiv)) nfglColorP4uiv( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const GLuint *) /* const GLuint *color */); break; case NFOSMESA_GLCOLORPOINTER: D(funcname = "glColorPointer"); if (GL_ISAVAILABLE(glColorPointer)) nfglColorPointer( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLsizei stride */ getStackedPointer(3, const GLvoid *) /* const GLvoid *pointer */); break; case NFOSMESA_GLCOLORPOINTEREXT: D(funcname = "glColorPointerEXT"); if (GL_ISAVAILABLE(glColorPointerEXT)) nfglColorPointerEXT( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLsizei stride */ getStackedParameter(3), /* GLsizei count */ getStackedPointer(4, const void *) /* const void *pointer */); break; case NFOSMESA_GLCOLORPOINTERLISTIBM: D(funcname = "glColorPointerListIBM"); if (GL_ISAVAILABLE(glColorPointerListIBM)) nfglColorPointerListIBM( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLint stride */ getStackedPointer(3, const void * *), /* const void * *pointer */ getStackedParameter(4) /* GLint ptrstride */); break; case NFOSMESA_GLCOLORPOINTERVINTEL: D(funcname = "glColorPointervINTEL"); if (GL_ISAVAILABLE(glColorPointervINTEL)) nfglColorPointervINTEL( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const void * *) /* const void * *pointer */); break; case NFOSMESA_GLCOLORSUBTABLE: D(funcname = "glColorSubTable"); if (GL_ISAVAILABLE(glColorSubTable)) nfglColorSubTable( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei start */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLenum format */ getStackedParameter(4), /* GLenum type */ getStackedPointer(5, const void *) /* const void *data */); break; case NFOSMESA_GLCOLORSUBTABLEEXT: D(funcname = "glColorSubTableEXT"); if (GL_ISAVAILABLE(glColorSubTableEXT)) nfglColorSubTableEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei start */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLenum format */ getStackedParameter(4), /* GLenum type */ getStackedPointer(5, const void *) /* const void *data */); break; case NFOSMESA_GLCOLORTABLE: D(funcname = "glColorTable"); if (GL_ISAVAILABLE(glColorTable)) nfglColorTable( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3), /* GLenum format */ getStackedParameter(4), /* GLenum type */ getStackedPointer(5, const void *) /* const void *table */); break; case NFOSMESA_GLCOLORTABLEEXT: D(funcname = "glColorTableEXT"); if (GL_ISAVAILABLE(glColorTableEXT)) nfglColorTableEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalFormat */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3), /* GLenum format */ getStackedParameter(4), /* GLenum type */ getStackedPointer(5, const void *) /* const void *table */); break; case NFOSMESA_GLCOLORTABLEPARAMETERFV: D(funcname = "glColorTableParameterfv"); if (GL_ISAVAILABLE(glColorTableParameterfv)) nfglColorTableParameterfv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLCOLORTABLEPARAMETERFVSGI: D(funcname = "glColorTableParameterfvSGI"); if (GL_ISAVAILABLE(glColorTableParameterfvSGI)) nfglColorTableParameterfvSGI( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLCOLORTABLEPARAMETERIV: D(funcname = "glColorTableParameteriv"); if (GL_ISAVAILABLE(glColorTableParameteriv)) nfglColorTableParameteriv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLCOLORTABLEPARAMETERIVSGI: D(funcname = "glColorTableParameterivSGI"); if (GL_ISAVAILABLE(glColorTableParameterivSGI)) nfglColorTableParameterivSGI( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLCOLORTABLESGI: D(funcname = "glColorTableSGI"); if (GL_ISAVAILABLE(glColorTableSGI)) nfglColorTableSGI( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3), /* GLenum format */ getStackedParameter(4), /* GLenum type */ getStackedPointer(5, const void *) /* const void *table */); break; case NFOSMESA_GLCOMBINERINPUTNV: D(funcname = "glCombinerInputNV"); if (GL_ISAVAILABLE(glCombinerInputNV)) nfglCombinerInputNV( getStackedParameter(0), /* GLenum stage */ getStackedParameter(1), /* GLenum portion */ getStackedParameter(2), /* GLenum variable */ getStackedParameter(3), /* GLenum input */ getStackedParameter(4), /* GLenum mapping */ getStackedParameter(5) /* GLenum componentUsage */); break; case NFOSMESA_GLCOMBINEROUTPUTNV: D(funcname = "glCombinerOutputNV"); if (GL_ISAVAILABLE(glCombinerOutputNV)) nfglCombinerOutputNV( getStackedParameter(0), /* GLenum stage */ getStackedParameter(1), /* GLenum portion */ getStackedParameter(2), /* GLenum abOutput */ getStackedParameter(3), /* GLenum cdOutput */ getStackedParameter(4), /* GLenum sumOutput */ getStackedParameter(5), /* GLenum scale */ getStackedParameter(6), /* GLenum bias */ getStackedParameter(7), /* GLboolean32 abDotProduct */ getStackedParameter(8), /* GLboolean32 cdDotProduct */ getStackedParameter(9) /* GLboolean32 muxSum */); break; case NFOSMESA_GLCOMBINERPARAMETERFNV: D(funcname = "glCombinerParameterfNV"); if (GL_ISAVAILABLE(glCombinerParameterfNV)) nfglCombinerParameterfNV( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat param */); break; case NFOSMESA_GLCOMBINERPARAMETERFVNV: D(funcname = "glCombinerParameterfvNV"); if (GL_ISAVAILABLE(glCombinerParameterfvNV)) nfglCombinerParameterfvNV( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLCOMBINERPARAMETERINV: D(funcname = "glCombinerParameteriNV"); if (GL_ISAVAILABLE(glCombinerParameteriNV)) nfglCombinerParameteriNV( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLCOMBINERPARAMETERIVNV: D(funcname = "glCombinerParameterivNV"); if (GL_ISAVAILABLE(glCombinerParameterivNV)) nfglCombinerParameterivNV( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLCOMBINERSTAGEPARAMETERFVNV: D(funcname = "glCombinerStageParameterfvNV"); if (GL_ISAVAILABLE(glCombinerStageParameterfvNV)) nfglCombinerStageParameterfvNV( getStackedParameter(0), /* GLenum stage */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLCOMMANDLISTSEGMENTSNV: D(funcname = "glCommandListSegmentsNV"); if (GL_ISAVAILABLE(glCommandListSegmentsNV)) nfglCommandListSegmentsNV( getStackedParameter(0), /* GLuint list */ getStackedParameter(1) /* GLuint segments */); break; case NFOSMESA_GLCOMPILECOMMANDLISTNV: D(funcname = "glCompileCommandListNV"); if (GL_ISAVAILABLE(glCompileCommandListNV)) nfglCompileCommandListNV( getStackedParameter(0) /* GLuint list */); break; case NFOSMESA_GLCOMPILESHADER: D(funcname = "glCompileShader"); if (GL_ISAVAILABLE(glCompileShader)) nfglCompileShader( getStackedParameter(0) /* GLuint shader */); break; case NFOSMESA_GLCOMPILESHADERARB: D(funcname = "glCompileShaderARB"); if (GL_ISAVAILABLE(glCompileShaderARB)) nfglCompileShaderARB( (GLhandleARB)(uintptr_t)getStackedParameter(0) /* GLhandleARB shaderObj */); break; case NFOSMESA_GLCOMPILESHADERINCLUDEARB: D(funcname = "glCompileShaderIncludeARB"); if (GL_ISAVAILABLE(glCompileShaderIncludeARB)) nfglCompileShaderIncludeARB( getStackedParameter(0), /* GLuint shader */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLchar *const *), /* const GLchar *const *path */ getStackedPointer(3, const GLint *) /* const GLint *length */); break; case NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE1DEXT: D(funcname = "glCompressedMultiTexImage1DEXT"); if (GL_ISAVAILABLE(glCompressedMultiTexImage1DEXT)) nfglCompressedMultiTexImage1DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLint border */ getStackedParameter(6), /* GLsizei imageSize */ getStackedPointer(7, const void *) /* const void *bits */); break; case NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE2DEXT: D(funcname = "glCompressedMultiTexImage2DEXT"); if (GL_ISAVAILABLE(glCompressedMultiTexImage2DEXT)) nfglCompressedMultiTexImage2DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLint border */ getStackedParameter(7), /* GLsizei imageSize */ getStackedPointer(8, const void *) /* const void *bits */); break; case NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE3DEXT: D(funcname = "glCompressedMultiTexImage3DEXT"); if (GL_ISAVAILABLE(glCompressedMultiTexImage3DEXT)) nfglCompressedMultiTexImage3DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLsizei depth */ getStackedParameter(7), /* GLint border */ getStackedParameter(8), /* GLsizei imageSize */ getStackedPointer(9, const void *) /* const void *bits */); break; case NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE1DEXT: D(funcname = "glCompressedMultiTexSubImage1DEXT"); if (GL_ISAVAILABLE(glCompressedMultiTexSubImage1DEXT)) nfglCompressedMultiTexSubImage1DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLenum format */ getStackedParameter(6), /* GLsizei imageSize */ getStackedPointer(7, const void *) /* const void *bits */); break; case NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE2DEXT: D(funcname = "glCompressedMultiTexSubImage2DEXT"); if (GL_ISAVAILABLE(glCompressedMultiTexSubImage2DEXT)) nfglCompressedMultiTexSubImage2DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLint yoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLenum format */ getStackedParameter(8), /* GLsizei imageSize */ getStackedPointer(9, const void *) /* const void *bits */); break; case NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE3DEXT: D(funcname = "glCompressedMultiTexSubImage3DEXT"); if (GL_ISAVAILABLE(glCompressedMultiTexSubImage3DEXT)) nfglCompressedMultiTexSubImage3DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLint yoffset */ getStackedParameter(5), /* GLint zoffset */ getStackedParameter(6), /* GLsizei width */ getStackedParameter(7), /* GLsizei height */ getStackedParameter(8), /* GLsizei depth */ getStackedParameter(9), /* GLenum format */ getStackedParameter(10), /* GLsizei imageSize */ getStackedPointer(11, const void *) /* const void *bits */); break; case NFOSMESA_GLCOMPRESSEDTEXIMAGE1D: D(funcname = "glCompressedTexImage1D"); if (GL_ISAVAILABLE(glCompressedTexImage1D)) nfglCompressedTexImage1D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLint border */ getStackedParameter(5), /* GLsizei imageSize */ getStackedPointer(6, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXIMAGE1DARB: D(funcname = "glCompressedTexImage1DARB"); if (GL_ISAVAILABLE(glCompressedTexImage1DARB)) nfglCompressedTexImage1DARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLint border */ getStackedParameter(5), /* GLsizei imageSize */ getStackedPointer(6, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXIMAGE2D: D(funcname = "glCompressedTexImage2D"); if (GL_ISAVAILABLE(glCompressedTexImage2D)) nfglCompressedTexImage2D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLint border */ getStackedParameter(6), /* GLsizei imageSize */ getStackedPointer(7, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXIMAGE2DARB: D(funcname = "glCompressedTexImage2DARB"); if (GL_ISAVAILABLE(glCompressedTexImage2DARB)) nfglCompressedTexImage2DARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLint border */ getStackedParameter(6), /* GLsizei imageSize */ getStackedPointer(7, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXIMAGE3D: D(funcname = "glCompressedTexImage3D"); if (GL_ISAVAILABLE(glCompressedTexImage3D)) nfglCompressedTexImage3D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLsizei depth */ getStackedParameter(6), /* GLint border */ getStackedParameter(7), /* GLsizei imageSize */ getStackedPointer(8, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXIMAGE3DARB: D(funcname = "glCompressedTexImage3DARB"); if (GL_ISAVAILABLE(glCompressedTexImage3DARB)) nfglCompressedTexImage3DARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLsizei depth */ getStackedParameter(6), /* GLint border */ getStackedParameter(7), /* GLsizei imageSize */ getStackedPointer(8, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1D: D(funcname = "glCompressedTexSubImage1D"); if (GL_ISAVAILABLE(glCompressedTexSubImage1D)) nfglCompressedTexSubImage1D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLsizei imageSize */ getStackedPointer(6, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1DARB: D(funcname = "glCompressedTexSubImage1DARB"); if (GL_ISAVAILABLE(glCompressedTexSubImage1DARB)) nfglCompressedTexSubImage1DARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLsizei imageSize */ getStackedPointer(6, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2D: D(funcname = "glCompressedTexSubImage2D"); if (GL_ISAVAILABLE(glCompressedTexSubImage2D)) nfglCompressedTexSubImage2D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLenum format */ getStackedParameter(7), /* GLsizei imageSize */ getStackedPointer(8, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2DARB: D(funcname = "glCompressedTexSubImage2DARB"); if (GL_ISAVAILABLE(glCompressedTexSubImage2DARB)) nfglCompressedTexSubImage2DARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLenum format */ getStackedParameter(7), /* GLsizei imageSize */ getStackedPointer(8, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3D: D(funcname = "glCompressedTexSubImage3D"); if (GL_ISAVAILABLE(glCompressedTexSubImage3D)) nfglCompressedTexSubImage3D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLsizei depth */ getStackedParameter(8), /* GLenum format */ getStackedParameter(9), /* GLsizei imageSize */ getStackedPointer(10, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3DARB: D(funcname = "glCompressedTexSubImage3DARB"); if (GL_ISAVAILABLE(glCompressedTexSubImage3DARB)) nfglCompressedTexSubImage3DARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLsizei depth */ getStackedParameter(8), /* GLenum format */ getStackedParameter(9), /* GLsizei imageSize */ getStackedPointer(10, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE1DEXT: D(funcname = "glCompressedTextureImage1DEXT"); if (GL_ISAVAILABLE(glCompressedTextureImage1DEXT)) nfglCompressedTextureImage1DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLint border */ getStackedParameter(6), /* GLsizei imageSize */ getStackedPointer(7, const void *) /* const void *bits */); break; case NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE2DEXT: D(funcname = "glCompressedTextureImage2DEXT"); if (GL_ISAVAILABLE(glCompressedTextureImage2DEXT)) nfglCompressedTextureImage2DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLint border */ getStackedParameter(7), /* GLsizei imageSize */ getStackedPointer(8, const void *) /* const void *bits */); break; case NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE3DEXT: D(funcname = "glCompressedTextureImage3DEXT"); if (GL_ISAVAILABLE(glCompressedTextureImage3DEXT)) nfglCompressedTextureImage3DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLsizei depth */ getStackedParameter(7), /* GLint border */ getStackedParameter(8), /* GLsizei imageSize */ getStackedPointer(9, const void *) /* const void *bits */); break; case NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE1D: D(funcname = "glCompressedTextureSubImage1D"); if (GL_ISAVAILABLE(glCompressedTextureSubImage1D)) nfglCompressedTextureSubImage1D( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLsizei imageSize */ getStackedPointer(6, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE1DEXT: D(funcname = "glCompressedTextureSubImage1DEXT"); if (GL_ISAVAILABLE(glCompressedTextureSubImage1DEXT)) nfglCompressedTextureSubImage1DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLenum format */ getStackedParameter(6), /* GLsizei imageSize */ getStackedPointer(7, const void *) /* const void *bits */); break; case NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE2D: D(funcname = "glCompressedTextureSubImage2D"); if (GL_ISAVAILABLE(glCompressedTextureSubImage2D)) nfglCompressedTextureSubImage2D( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLenum format */ getStackedParameter(7), /* GLsizei imageSize */ getStackedPointer(8, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE2DEXT: D(funcname = "glCompressedTextureSubImage2DEXT"); if (GL_ISAVAILABLE(glCompressedTextureSubImage2DEXT)) nfglCompressedTextureSubImage2DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLint yoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLenum format */ getStackedParameter(8), /* GLsizei imageSize */ getStackedPointer(9, const void *) /* const void *bits */); break; case NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE3D: D(funcname = "glCompressedTextureSubImage3D"); if (GL_ISAVAILABLE(glCompressedTextureSubImage3D)) nfglCompressedTextureSubImage3D( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLsizei depth */ getStackedParameter(8), /* GLenum format */ getStackedParameter(9), /* GLsizei imageSize */ getStackedPointer(10, const void *) /* const void *data */); break; case NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE3DEXT: D(funcname = "glCompressedTextureSubImage3DEXT"); if (GL_ISAVAILABLE(glCompressedTextureSubImage3DEXT)) nfglCompressedTextureSubImage3DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLint yoffset */ getStackedParameter(5), /* GLint zoffset */ getStackedParameter(6), /* GLsizei width */ getStackedParameter(7), /* GLsizei height */ getStackedParameter(8), /* GLsizei depth */ getStackedParameter(9), /* GLenum format */ getStackedParameter(10), /* GLsizei imageSize */ getStackedPointer(11, const void *) /* const void *bits */); break; case NFOSMESA_GLCONSERVATIVERASTERPARAMETERFNV: D(funcname = "glConservativeRasterParameterfNV"); if (GL_ISAVAILABLE(glConservativeRasterParameterfNV)) nfglConservativeRasterParameterfNV( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat value */); break; case NFOSMESA_GLCONSERVATIVERASTERPARAMETERINV: D(funcname = "glConservativeRasterParameteriNV"); if (GL_ISAVAILABLE(glConservativeRasterParameteriNV)) nfglConservativeRasterParameteriNV( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLCONVOLUTIONFILTER1D: D(funcname = "glConvolutionFilter1D"); if (GL_ISAVAILABLE(glConvolutionFilter1D)) nfglConvolutionFilter1D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3), /* GLenum format */ getStackedParameter(4), /* GLenum type */ getStackedPointer(5, const void *) /* const void *image */); break; case NFOSMESA_GLCONVOLUTIONFILTER1DEXT: D(funcname = "glConvolutionFilter1DEXT"); if (GL_ISAVAILABLE(glConvolutionFilter1DEXT)) nfglConvolutionFilter1DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3), /* GLenum format */ getStackedParameter(4), /* GLenum type */ getStackedPointer(5, const void *) /* const void *image */); break; case NFOSMESA_GLCONVOLUTIONFILTER2D: D(funcname = "glConvolutionFilter2D"); if (GL_ISAVAILABLE(glConvolutionFilter2D)) nfglConvolutionFilter2D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3), /* GLsizei height */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLenum type */ getStackedPointer(6, const void *) /* const void *image */); break; case NFOSMESA_GLCONVOLUTIONFILTER2DEXT: D(funcname = "glConvolutionFilter2DEXT"); if (GL_ISAVAILABLE(glConvolutionFilter2DEXT)) nfglConvolutionFilter2DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3), /* GLsizei height */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLenum type */ getStackedPointer(6, const void *) /* const void *image */); break; case NFOSMESA_GLCONVOLUTIONPARAMETERF: D(funcname = "glConvolutionParameterf"); if (GL_ISAVAILABLE(glConvolutionParameterf)) nfglConvolutionParameterf( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat params */); break; case NFOSMESA_GLCONVOLUTIONPARAMETERFEXT: D(funcname = "glConvolutionParameterfEXT"); if (GL_ISAVAILABLE(glConvolutionParameterfEXT)) nfglConvolutionParameterfEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat params */); break; case NFOSMESA_GLCONVOLUTIONPARAMETERFV: D(funcname = "glConvolutionParameterfv"); if (GL_ISAVAILABLE(glConvolutionParameterfv)) nfglConvolutionParameterfv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLCONVOLUTIONPARAMETERFVEXT: D(funcname = "glConvolutionParameterfvEXT"); if (GL_ISAVAILABLE(glConvolutionParameterfvEXT)) nfglConvolutionParameterfvEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLCONVOLUTIONPARAMETERI: D(funcname = "glConvolutionParameteri"); if (GL_ISAVAILABLE(glConvolutionParameteri)) nfglConvolutionParameteri( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint params */); break; case NFOSMESA_GLCONVOLUTIONPARAMETERIEXT: D(funcname = "glConvolutionParameteriEXT"); if (GL_ISAVAILABLE(glConvolutionParameteriEXT)) nfglConvolutionParameteriEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint params */); break; case NFOSMESA_GLCONVOLUTIONPARAMETERIV: D(funcname = "glConvolutionParameteriv"); if (GL_ISAVAILABLE(glConvolutionParameteriv)) nfglConvolutionParameteriv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLCONVOLUTIONPARAMETERIVEXT: D(funcname = "glConvolutionParameterivEXT"); if (GL_ISAVAILABLE(glConvolutionParameterivEXT)) nfglConvolutionParameterivEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLCONVOLUTIONPARAMETERXOES: D(funcname = "glConvolutionParameterxOES"); if (GL_ISAVAILABLE(glConvolutionParameterxOES)) nfglConvolutionParameterxOES( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLfixed param */); break; case NFOSMESA_GLCONVOLUTIONPARAMETERXVOES: D(funcname = "glConvolutionParameterxvOES"); if (GL_ISAVAILABLE(glConvolutionParameterxvOES)) nfglConvolutionParameterxvOES( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfixed *) /* const GLfixed *params */); break; case NFOSMESA_GLCOPYBUFFERSUBDATA: D(funcname = "glCopyBufferSubData"); if (GL_ISAVAILABLE(glCopyBufferSubData)) nfglCopyBufferSubData( getStackedParameter(0), /* GLenum readTarget */ getStackedParameter(1), /* GLenum writeTarget */ getStackedParameter(2), /* GLintptr readOffset */ getStackedParameter(3), /* GLintptr writeOffset */ getStackedParameter(4) /* GLsizeiptr size */); break; case NFOSMESA_GLCOPYCOLORSUBTABLE: D(funcname = "glCopyColorSubTable"); if (GL_ISAVAILABLE(glCopyColorSubTable)) nfglCopyColorSubTable( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei start */ getStackedParameter(2), /* GLint x */ getStackedParameter(3), /* GLint y */ getStackedParameter(4) /* GLsizei width */); break; case NFOSMESA_GLCOPYCOLORSUBTABLEEXT: D(funcname = "glCopyColorSubTableEXT"); if (GL_ISAVAILABLE(glCopyColorSubTableEXT)) nfglCopyColorSubTableEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei start */ getStackedParameter(2), /* GLint x */ getStackedParameter(3), /* GLint y */ getStackedParameter(4) /* GLsizei width */); break; case NFOSMESA_GLCOPYCOLORTABLE: D(funcname = "glCopyColorTable"); if (GL_ISAVAILABLE(glCopyColorTable)) nfglCopyColorTable( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLint x */ getStackedParameter(3), /* GLint y */ getStackedParameter(4) /* GLsizei width */); break; case NFOSMESA_GLCOPYCOLORTABLESGI: D(funcname = "glCopyColorTableSGI"); if (GL_ISAVAILABLE(glCopyColorTableSGI)) nfglCopyColorTableSGI( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLint x */ getStackedParameter(3), /* GLint y */ getStackedParameter(4) /* GLsizei width */); break; case NFOSMESA_GLCOPYCONVOLUTIONFILTER1D: D(funcname = "glCopyConvolutionFilter1D"); if (GL_ISAVAILABLE(glCopyConvolutionFilter1D)) nfglCopyConvolutionFilter1D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLint x */ getStackedParameter(3), /* GLint y */ getStackedParameter(4) /* GLsizei width */); break; case NFOSMESA_GLCOPYCONVOLUTIONFILTER1DEXT: D(funcname = "glCopyConvolutionFilter1DEXT"); if (GL_ISAVAILABLE(glCopyConvolutionFilter1DEXT)) nfglCopyConvolutionFilter1DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLint x */ getStackedParameter(3), /* GLint y */ getStackedParameter(4) /* GLsizei width */); break; case NFOSMESA_GLCOPYCONVOLUTIONFILTER2D: D(funcname = "glCopyConvolutionFilter2D"); if (GL_ISAVAILABLE(glCopyConvolutionFilter2D)) nfglCopyConvolutionFilter2D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLint x */ getStackedParameter(3), /* GLint y */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5) /* GLsizei height */); break; case NFOSMESA_GLCOPYCONVOLUTIONFILTER2DEXT: D(funcname = "glCopyConvolutionFilter2DEXT"); if (GL_ISAVAILABLE(glCopyConvolutionFilter2DEXT)) nfglCopyConvolutionFilter2DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLint x */ getStackedParameter(3), /* GLint y */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5) /* GLsizei height */); break; case NFOSMESA_GLCOPYIMAGESUBDATA: D(funcname = "glCopyImageSubData"); if (GL_ISAVAILABLE(glCopyImageSubData)) nfglCopyImageSubData( getStackedParameter(0), /* GLuint srcName */ getStackedParameter(1), /* GLenum srcTarget */ getStackedParameter(2), /* GLint srcLevel */ getStackedParameter(3), /* GLint srcX */ getStackedParameter(4), /* GLint srcY */ getStackedParameter(5), /* GLint srcZ */ getStackedParameter(6), /* GLuint dstName */ getStackedParameter(7), /* GLenum dstTarget */ getStackedParameter(8), /* GLint dstLevel */ getStackedParameter(9), /* GLint dstX */ getStackedParameter(10), /* GLint dstY */ getStackedParameter(11), /* GLint dstZ */ getStackedParameter(12), /* GLsizei srcWidth */ getStackedParameter(13), /* GLsizei srcHeight */ getStackedParameter(14) /* GLsizei srcDepth */); break; case NFOSMESA_GLCOPYIMAGESUBDATANV: D(funcname = "glCopyImageSubDataNV"); if (GL_ISAVAILABLE(glCopyImageSubDataNV)) nfglCopyImageSubDataNV( getStackedParameter(0), /* GLuint srcName */ getStackedParameter(1), /* GLenum srcTarget */ getStackedParameter(2), /* GLint srcLevel */ getStackedParameter(3), /* GLint srcX */ getStackedParameter(4), /* GLint srcY */ getStackedParameter(5), /* GLint srcZ */ getStackedParameter(6), /* GLuint dstName */ getStackedParameter(7), /* GLenum dstTarget */ getStackedParameter(8), /* GLint dstLevel */ getStackedParameter(9), /* GLint dstX */ getStackedParameter(10), /* GLint dstY */ getStackedParameter(11), /* GLint dstZ */ getStackedParameter(12), /* GLsizei width */ getStackedParameter(13), /* GLsizei height */ getStackedParameter(14) /* GLsizei depth */); break; case NFOSMESA_GLCOPYMULTITEXIMAGE1DEXT: D(funcname = "glCopyMultiTexImage1DEXT"); if (GL_ISAVAILABLE(glCopyMultiTexImage1DEXT)) nfglCopyMultiTexImage1DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLint x */ getStackedParameter(5), /* GLint y */ getStackedParameter(6), /* GLsizei width */ getStackedParameter(7) /* GLint border */); break; case NFOSMESA_GLCOPYMULTITEXIMAGE2DEXT: D(funcname = "glCopyMultiTexImage2DEXT"); if (GL_ISAVAILABLE(glCopyMultiTexImage2DEXT)) nfglCopyMultiTexImage2DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLint x */ getStackedParameter(5), /* GLint y */ getStackedParameter(6), /* GLsizei width */ getStackedParameter(7), /* GLsizei height */ getStackedParameter(8) /* GLint border */); break; case NFOSMESA_GLCOPYMULTITEXSUBIMAGE1DEXT: D(funcname = "glCopyMultiTexSubImage1DEXT"); if (GL_ISAVAILABLE(glCopyMultiTexSubImage1DEXT)) nfglCopyMultiTexSubImage1DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLint x */ getStackedParameter(5), /* GLint y */ getStackedParameter(6) /* GLsizei width */); break; case NFOSMESA_GLCOPYMULTITEXSUBIMAGE2DEXT: D(funcname = "glCopyMultiTexSubImage2DEXT"); if (GL_ISAVAILABLE(glCopyMultiTexSubImage2DEXT)) nfglCopyMultiTexSubImage2DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLint yoffset */ getStackedParameter(5), /* GLint x */ getStackedParameter(6), /* GLint y */ getStackedParameter(7), /* GLsizei width */ getStackedParameter(8) /* GLsizei height */); break; case NFOSMESA_GLCOPYMULTITEXSUBIMAGE3DEXT: D(funcname = "glCopyMultiTexSubImage3DEXT"); if (GL_ISAVAILABLE(glCopyMultiTexSubImage3DEXT)) nfglCopyMultiTexSubImage3DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLint yoffset */ getStackedParameter(5), /* GLint zoffset */ getStackedParameter(6), /* GLint x */ getStackedParameter(7), /* GLint y */ getStackedParameter(8), /* GLsizei width */ getStackedParameter(9) /* GLsizei height */); break; case NFOSMESA_GLCOPYNAMEDBUFFERSUBDATA: D(funcname = "glCopyNamedBufferSubData"); if (GL_ISAVAILABLE(glCopyNamedBufferSubData)) nfglCopyNamedBufferSubData( getStackedParameter(0), /* GLuint readBuffer */ getStackedParameter(1), /* GLuint writeBuffer */ getStackedParameter(2), /* GLintptr readOffset */ getStackedParameter(3), /* GLintptr writeOffset */ getStackedParameter(4) /* GLsizeiptr size */); break; case NFOSMESA_GLCOPYPATHNV: D(funcname = "glCopyPathNV"); if (GL_ISAVAILABLE(glCopyPathNV)) nfglCopyPathNV( getStackedParameter(0), /* GLuint resultPath */ getStackedParameter(1) /* GLuint srcPath */); break; case NFOSMESA_GLCOPYPIXELS: D(funcname = "glCopyPixels"); if (GL_ISAVAILABLE(glCopyPixels)) nfglCopyPixels( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3), /* GLsizei height */ getStackedParameter(4) /* GLenum type */); break; case NFOSMESA_GLCOPYTEXIMAGE1D: D(funcname = "glCopyTexImage1D"); if (GL_ISAVAILABLE(glCopyTexImage1D)) nfglCopyTexImage1D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLint x */ getStackedParameter(4), /* GLint y */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6) /* GLint border */); break; case NFOSMESA_GLCOPYTEXIMAGE1DEXT: D(funcname = "glCopyTexImage1DEXT"); if (GL_ISAVAILABLE(glCopyTexImage1DEXT)) nfglCopyTexImage1DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLint x */ getStackedParameter(4), /* GLint y */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6) /* GLint border */); break; case NFOSMESA_GLCOPYTEXIMAGE2D: D(funcname = "glCopyTexImage2D"); if (GL_ISAVAILABLE(glCopyTexImage2D)) nfglCopyTexImage2D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLint x */ getStackedParameter(4), /* GLint y */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7) /* GLint border */); break; case NFOSMESA_GLCOPYTEXIMAGE2DEXT: D(funcname = "glCopyTexImage2DEXT"); if (GL_ISAVAILABLE(glCopyTexImage2DEXT)) nfglCopyTexImage2DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLint x */ getStackedParameter(4), /* GLint y */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7) /* GLint border */); break; case NFOSMESA_GLCOPYTEXSUBIMAGE1D: D(funcname = "glCopyTexSubImage1D"); if (GL_ISAVAILABLE(glCopyTexSubImage1D)) nfglCopyTexSubImage1D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint x */ getStackedParameter(4), /* GLint y */ getStackedParameter(5) /* GLsizei width */); break; case NFOSMESA_GLCOPYTEXSUBIMAGE1DEXT: D(funcname = "glCopyTexSubImage1DEXT"); if (GL_ISAVAILABLE(glCopyTexSubImage1DEXT)) nfglCopyTexSubImage1DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint x */ getStackedParameter(4), /* GLint y */ getStackedParameter(5) /* GLsizei width */); break; case NFOSMESA_GLCOPYTEXSUBIMAGE2D: D(funcname = "glCopyTexSubImage2D"); if (GL_ISAVAILABLE(glCopyTexSubImage2D)) nfglCopyTexSubImage2D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint x */ getStackedParameter(5), /* GLint y */ getStackedParameter(6), /* GLsizei width */ getStackedParameter(7) /* GLsizei height */); break; case NFOSMESA_GLCOPYTEXSUBIMAGE2DEXT: D(funcname = "glCopyTexSubImage2DEXT"); if (GL_ISAVAILABLE(glCopyTexSubImage2DEXT)) nfglCopyTexSubImage2DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint x */ getStackedParameter(5), /* GLint y */ getStackedParameter(6), /* GLsizei width */ getStackedParameter(7) /* GLsizei height */); break; case NFOSMESA_GLCOPYTEXSUBIMAGE3D: D(funcname = "glCopyTexSubImage3D"); if (GL_ISAVAILABLE(glCopyTexSubImage3D)) nfglCopyTexSubImage3D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLint x */ getStackedParameter(6), /* GLint y */ getStackedParameter(7), /* GLsizei width */ getStackedParameter(8) /* GLsizei height */); break; case NFOSMESA_GLCOPYTEXSUBIMAGE3DEXT: D(funcname = "glCopyTexSubImage3DEXT"); if (GL_ISAVAILABLE(glCopyTexSubImage3DEXT)) nfglCopyTexSubImage3DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLint x */ getStackedParameter(6), /* GLint y */ getStackedParameter(7), /* GLsizei width */ getStackedParameter(8) /* GLsizei height */); break; case NFOSMESA_GLCOPYTEXTUREIMAGE1DEXT: D(funcname = "glCopyTextureImage1DEXT"); if (GL_ISAVAILABLE(glCopyTextureImage1DEXT)) nfglCopyTextureImage1DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLint x */ getStackedParameter(5), /* GLint y */ getStackedParameter(6), /* GLsizei width */ getStackedParameter(7) /* GLint border */); break; case NFOSMESA_GLCOPYTEXTUREIMAGE2DEXT: D(funcname = "glCopyTextureImage2DEXT"); if (GL_ISAVAILABLE(glCopyTextureImage2DEXT)) nfglCopyTextureImage2DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLint x */ getStackedParameter(5), /* GLint y */ getStackedParameter(6), /* GLsizei width */ getStackedParameter(7), /* GLsizei height */ getStackedParameter(8) /* GLint border */); break; case NFOSMESA_GLCOPYTEXTURESUBIMAGE1D: D(funcname = "glCopyTextureSubImage1D"); if (GL_ISAVAILABLE(glCopyTextureSubImage1D)) nfglCopyTextureSubImage1D( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint x */ getStackedParameter(4), /* GLint y */ getStackedParameter(5) /* GLsizei width */); break; case NFOSMESA_GLCOPYTEXTURESUBIMAGE1DEXT: D(funcname = "glCopyTextureSubImage1DEXT"); if (GL_ISAVAILABLE(glCopyTextureSubImage1DEXT)) nfglCopyTextureSubImage1DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLint x */ getStackedParameter(5), /* GLint y */ getStackedParameter(6) /* GLsizei width */); break; case NFOSMESA_GLCOPYTEXTURESUBIMAGE2D: D(funcname = "glCopyTextureSubImage2D"); if (GL_ISAVAILABLE(glCopyTextureSubImage2D)) nfglCopyTextureSubImage2D( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint x */ getStackedParameter(5), /* GLint y */ getStackedParameter(6), /* GLsizei width */ getStackedParameter(7) /* GLsizei height */); break; case NFOSMESA_GLCOPYTEXTURESUBIMAGE2DEXT: D(funcname = "glCopyTextureSubImage2DEXT"); if (GL_ISAVAILABLE(glCopyTextureSubImage2DEXT)) nfglCopyTextureSubImage2DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLint yoffset */ getStackedParameter(5), /* GLint x */ getStackedParameter(6), /* GLint y */ getStackedParameter(7), /* GLsizei width */ getStackedParameter(8) /* GLsizei height */); break; case NFOSMESA_GLCOPYTEXTURESUBIMAGE3D: D(funcname = "glCopyTextureSubImage3D"); if (GL_ISAVAILABLE(glCopyTextureSubImage3D)) nfglCopyTextureSubImage3D( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLint x */ getStackedParameter(6), /* GLint y */ getStackedParameter(7), /* GLsizei width */ getStackedParameter(8) /* GLsizei height */); break; case NFOSMESA_GLCOPYTEXTURESUBIMAGE3DEXT: D(funcname = "glCopyTextureSubImage3DEXT"); if (GL_ISAVAILABLE(glCopyTextureSubImage3DEXT)) nfglCopyTextureSubImage3DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLint yoffset */ getStackedParameter(5), /* GLint zoffset */ getStackedParameter(6), /* GLint x */ getStackedParameter(7), /* GLint y */ getStackedParameter(8), /* GLsizei width */ getStackedParameter(9) /* GLsizei height */); break; case NFOSMESA_GLCOVERFILLPATHINSTANCEDNV: D(funcname = "glCoverFillPathInstancedNV"); if (GL_ISAVAILABLE(glCoverFillPathInstancedNV)) nfglCoverFillPathInstancedNV( getStackedParameter(0), /* GLsizei numPaths */ getStackedParameter(1), /* GLenum pathNameType */ getStackedPointer(2, const void *), /* const void *paths */ getStackedParameter(3), /* GLuint pathBase */ getStackedParameter(4), /* GLenum coverMode */ getStackedParameter(5), /* GLenum transformType */ getStackedPointer(6, const GLfloat *) /* const GLfloat *transformValues */); break; case NFOSMESA_GLCOVERFILLPATHNV: D(funcname = "glCoverFillPathNV"); if (GL_ISAVAILABLE(glCoverFillPathNV)) nfglCoverFillPathNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1) /* GLenum coverMode */); break; case NFOSMESA_GLCOVERSTROKEPATHINSTANCEDNV: D(funcname = "glCoverStrokePathInstancedNV"); if (GL_ISAVAILABLE(glCoverStrokePathInstancedNV)) nfglCoverStrokePathInstancedNV( getStackedParameter(0), /* GLsizei numPaths */ getStackedParameter(1), /* GLenum pathNameType */ getStackedPointer(2, const void *), /* const void *paths */ getStackedParameter(3), /* GLuint pathBase */ getStackedParameter(4), /* GLenum coverMode */ getStackedParameter(5), /* GLenum transformType */ getStackedPointer(6, const GLfloat *) /* const GLfloat *transformValues */); break; case NFOSMESA_GLCOVERSTROKEPATHNV: D(funcname = "glCoverStrokePathNV"); if (GL_ISAVAILABLE(glCoverStrokePathNV)) nfglCoverStrokePathNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1) /* GLenum coverMode */); break; case NFOSMESA_GLCOVERAGEMODULATIONNV: D(funcname = "glCoverageModulationNV"); if (GL_ISAVAILABLE(glCoverageModulationNV)) nfglCoverageModulationNV( getStackedParameter(0) /* GLenum components */); break; case NFOSMESA_GLCOVERAGEMODULATIONTABLENV: D(funcname = "glCoverageModulationTableNV"); if (GL_ISAVAILABLE(glCoverageModulationTableNV)) nfglCoverageModulationTableNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLCREATEBUFFERS: D(funcname = "glCreateBuffers"); if (GL_ISAVAILABLE(glCreateBuffers)) nfglCreateBuffers( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *buffers */); break; case NFOSMESA_GLCREATECOMMANDLISTSNV: D(funcname = "glCreateCommandListsNV"); if (GL_ISAVAILABLE(glCreateCommandListsNV)) nfglCreateCommandListsNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *lists */); break; case NFOSMESA_GLCREATEDEBUGOBJECTMESA: D(funcname = "glCreateDebugObjectMESA"); if (GL_ISAVAILABLE(glCreateDebugObjectMESA)) ret = (uint32)(uintptr_t)nfglCreateDebugObjectMESA(); break; case NFOSMESA_GLCREATEFRAMEBUFFERS: D(funcname = "glCreateFramebuffers"); if (GL_ISAVAILABLE(glCreateFramebuffers)) nfglCreateFramebuffers( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *framebuffers */); break; case NFOSMESA_GLCREATEMEMORYOBJECTSEXT: D(funcname = "glCreateMemoryObjectsEXT"); if (GL_ISAVAILABLE(glCreateMemoryObjectsEXT)) nfglCreateMemoryObjectsEXT( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *memoryObjects */); break; case NFOSMESA_GLCREATEPERFQUERYINTEL: D(funcname = "glCreatePerfQueryINTEL"); if (GL_ISAVAILABLE(glCreatePerfQueryINTEL)) nfglCreatePerfQueryINTEL( getStackedParameter(0), /* GLuint queryId */ getStackedPointer(1, GLuint *) /* GLuint *queryHandle */); break; case NFOSMESA_GLCREATEPROGRAM: D(funcname = "glCreateProgram"); if (GL_ISAVAILABLE(glCreateProgram)) ret = nfglCreateProgram(); break; case NFOSMESA_GLCREATEPROGRAMOBJECTARB: D(funcname = "glCreateProgramObjectARB"); if (GL_ISAVAILABLE(glCreateProgramObjectARB)) ret = (uint32)(uintptr_t)nfglCreateProgramObjectARB(); break; case NFOSMESA_GLCREATEPROGRAMPIPELINES: D(funcname = "glCreateProgramPipelines"); if (GL_ISAVAILABLE(glCreateProgramPipelines)) nfglCreateProgramPipelines( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *pipelines */); break; case NFOSMESA_GLCREATEQUERIES: D(funcname = "glCreateQueries"); if (GL_ISAVAILABLE(glCreateQueries)) nfglCreateQueries( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei n */ getStackedPointer(2, GLuint *) /* GLuint *ids */); break; case NFOSMESA_GLCREATERENDERBUFFERS: D(funcname = "glCreateRenderbuffers"); if (GL_ISAVAILABLE(glCreateRenderbuffers)) nfglCreateRenderbuffers( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *renderbuffers */); break; case NFOSMESA_GLCREATESAMPLERS: D(funcname = "glCreateSamplers"); if (GL_ISAVAILABLE(glCreateSamplers)) nfglCreateSamplers( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *samplers */); break; case NFOSMESA_GLCREATESHADER: D(funcname = "glCreateShader"); if (GL_ISAVAILABLE(glCreateShader)) ret = nfglCreateShader( getStackedParameter(0) /* GLenum type */); break; case NFOSMESA_GLCREATESHADEROBJECTARB: D(funcname = "glCreateShaderObjectARB"); if (GL_ISAVAILABLE(glCreateShaderObjectARB)) ret = (uint32)(uintptr_t)nfglCreateShaderObjectARB( getStackedParameter(0) /* GLenum shaderType */); break; case NFOSMESA_GLCREATESHADERPROGRAMEXT: D(funcname = "glCreateShaderProgramEXT"); if (GL_ISAVAILABLE(glCreateShaderProgramEXT)) ret = nfglCreateShaderProgramEXT( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const GLchar *) /* const GLchar *string */); break; case NFOSMESA_GLCREATESHADERPROGRAMV: D(funcname = "glCreateShaderProgramv"); if (GL_ISAVAILABLE(glCreateShaderProgramv)) ret = nfglCreateShaderProgramv( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLchar *const *) /* const GLchar *const *strings */); break; case NFOSMESA_GLCREATESTATESNV: D(funcname = "glCreateStatesNV"); if (GL_ISAVAILABLE(glCreateStatesNV)) nfglCreateStatesNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *states */); break; #if 0 case NFOSMESA_GLCREATESYNCFROMCLEVENTARB: D(funcname = "glCreateSyncFromCLeventARB"); if (GL_ISAVAILABLE(glCreateSyncFromCLeventARB)) ret = (uint32)(uintptr_t)nfglCreateSyncFromCLeventARB( getStackedPointer(0, struct _cl_context *), /* struct _cl_context *context */ getStackedPointer(1, struct _cl_event *), /* struct _cl_event *event */ getStackedParameter(2) /* GLbitfield flags */); break; #endif case NFOSMESA_GLCREATETEXTURES: D(funcname = "glCreateTextures"); if (GL_ISAVAILABLE(glCreateTextures)) nfglCreateTextures( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei n */ getStackedPointer(2, GLuint *) /* GLuint *textures */); break; case NFOSMESA_GLCREATETRANSFORMFEEDBACKS: D(funcname = "glCreateTransformFeedbacks"); if (GL_ISAVAILABLE(glCreateTransformFeedbacks)) nfglCreateTransformFeedbacks( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *ids */); break; case NFOSMESA_GLCREATEVERTEXARRAYS: D(funcname = "glCreateVertexArrays"); if (GL_ISAVAILABLE(glCreateVertexArrays)) nfglCreateVertexArrays( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *arrays */); break; case NFOSMESA_GLCULLFACE: D(funcname = "glCullFace"); if (GL_ISAVAILABLE(glCullFace)) nfglCullFace( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLCULLPARAMETERDVEXT: D(funcname = "glCullParameterdvEXT"); if (GL_ISAVAILABLE(glCullParameterdvEXT)) nfglCullParameterdvEXT( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLCULLPARAMETERFVEXT: D(funcname = "glCullParameterfvEXT"); if (GL_ISAVAILABLE(glCullParameterfvEXT)) nfglCullParameterfvEXT( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLCURRENTPALETTEMATRIXARB: D(funcname = "glCurrentPaletteMatrixARB"); if (GL_ISAVAILABLE(glCurrentPaletteMatrixARB)) nfglCurrentPaletteMatrixARB( getStackedParameter(0) /* GLint index */); break; #if 0 case NFOSMESA_GLDEBUGMESSAGECALLBACK: D(funcname = "glDebugMessageCallback"); if (GL_ISAVAILABLE(glDebugMessageCallback)) nfglDebugMessageCallback( getStackedPointer(0, GLDEBUGPROC ), /* GLDEBUGPROC callback */ getStackedPointer(1, const void *) /* const void *userParam */); break; #endif #if 0 case NFOSMESA_GLDEBUGMESSAGECALLBACKAMD: D(funcname = "glDebugMessageCallbackAMD"); if (GL_ISAVAILABLE(glDebugMessageCallbackAMD)) nfglDebugMessageCallbackAMD( getStackedPointer(0, GLDEBUGPROCAMD ), /* GLDEBUGPROCAMD callback */ getStackedPointer(1, void *) /* void *userParam */); break; #endif #if 0 case NFOSMESA_GLDEBUGMESSAGECALLBACKARB: D(funcname = "glDebugMessageCallbackARB"); if (GL_ISAVAILABLE(glDebugMessageCallbackARB)) nfglDebugMessageCallbackARB( getStackedPointer(0, GLDEBUGPROCARB ), /* GLDEBUGPROCARB callback */ getStackedPointer(1, const void *) /* const void *userParam */); break; #endif case NFOSMESA_GLDEBUGMESSAGECONTROL: D(funcname = "glDebugMessageControl"); if (GL_ISAVAILABLE(glDebugMessageControl)) nfglDebugMessageControl( getStackedParameter(0), /* GLenum source */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLenum severity */ getStackedParameter(3), /* GLsizei count */ getStackedPointer(4, const GLuint *), /* const GLuint *ids */ getStackedParameter(5) /* GLboolean32 enabled */); break; case NFOSMESA_GLDEBUGMESSAGECONTROLARB: D(funcname = "glDebugMessageControlARB"); if (GL_ISAVAILABLE(glDebugMessageControlARB)) nfglDebugMessageControlARB( getStackedParameter(0), /* GLenum source */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLenum severity */ getStackedParameter(3), /* GLsizei count */ getStackedPointer(4, const GLuint *), /* const GLuint *ids */ getStackedParameter(5) /* GLboolean32 enabled */); break; case NFOSMESA_GLDEBUGMESSAGEENABLEAMD: D(funcname = "glDebugMessageEnableAMD"); if (GL_ISAVAILABLE(glDebugMessageEnableAMD)) nfglDebugMessageEnableAMD( getStackedParameter(0), /* GLenum category */ getStackedParameter(1), /* GLenum severity */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint *), /* const GLuint *ids */ getStackedParameter(4) /* GLboolean32 enabled */); break; case NFOSMESA_GLDEBUGMESSAGEINSERT: D(funcname = "glDebugMessageInsert"); if (GL_ISAVAILABLE(glDebugMessageInsert)) nfglDebugMessageInsert( getStackedParameter(0), /* GLenum source */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLuint id */ getStackedParameter(3), /* GLenum severity */ getStackedParameter(4), /* GLsizei length */ getStackedPointer(5, const GLchar *) /* const GLchar *buf */); break; case NFOSMESA_GLDEBUGMESSAGEINSERTAMD: D(funcname = "glDebugMessageInsertAMD"); if (GL_ISAVAILABLE(glDebugMessageInsertAMD)) nfglDebugMessageInsertAMD( getStackedParameter(0), /* GLenum category */ getStackedParameter(1), /* GLenum severity */ getStackedParameter(2), /* GLuint id */ getStackedParameter(3), /* GLsizei length */ getStackedPointer(4, const GLchar *) /* const GLchar *buf */); break; case NFOSMESA_GLDEBUGMESSAGEINSERTARB: D(funcname = "glDebugMessageInsertARB"); if (GL_ISAVAILABLE(glDebugMessageInsertARB)) nfglDebugMessageInsertARB( getStackedParameter(0), /* GLenum source */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLuint id */ getStackedParameter(3), /* GLenum severity */ getStackedParameter(4), /* GLsizei length */ getStackedPointer(5, const GLchar *) /* const GLchar *buf */); break; case NFOSMESA_GLDEFORMSGIX: D(funcname = "glDeformSGIX"); if (GL_ISAVAILABLE(glDeformSGIX)) nfglDeformSGIX( getStackedParameter(0) /* GLbitfield mask */); break; case NFOSMESA_GLDEFORMATIONMAP3DSGIX: D(funcname = "glDeformationMap3dSGIX"); if (GL_ISAVAILABLE(glDeformationMap3dSGIX)) nfglDeformationMap3dSGIX( getStackedParameter(0), /* GLenum target */ getStackedDouble(1), /* GLdouble u1 */ getStackedDouble(3), /* GLdouble u2 */ getStackedParameter(5), /* GLint ustride */ getStackedParameter(6), /* GLint uorder */ getStackedDouble(7), /* GLdouble v1 */ getStackedDouble(9), /* GLdouble v2 */ getStackedParameter(11), /* GLint vstride */ getStackedParameter(12), /* GLint vorder */ getStackedDouble(13), /* GLdouble w1 */ getStackedDouble(15), /* GLdouble w2 */ getStackedParameter(17), /* GLint wstride */ getStackedParameter(18), /* GLint worder */ getStackedPointer(19, const GLdouble *) /* const GLdouble *points */); break; case NFOSMESA_GLDEFORMATIONMAP3FSGIX: D(funcname = "glDeformationMap3fSGIX"); if (GL_ISAVAILABLE(glDeformationMap3fSGIX)) nfglDeformationMap3fSGIX( getStackedParameter(0), /* GLenum target */ getStackedFloat(1), /* GLfloat u1 */ getStackedFloat(2), /* GLfloat u2 */ getStackedParameter(3), /* GLint ustride */ getStackedParameter(4), /* GLint uorder */ getStackedFloat(5), /* GLfloat v1 */ getStackedFloat(6), /* GLfloat v2 */ getStackedParameter(7), /* GLint vstride */ getStackedParameter(8), /* GLint vorder */ getStackedFloat(9), /* GLfloat w1 */ getStackedFloat(10), /* GLfloat w2 */ getStackedParameter(11), /* GLint wstride */ getStackedParameter(12), /* GLint worder */ getStackedPointer(13, const GLfloat *) /* const GLfloat *points */); break; case NFOSMESA_GLDELETEASYNCMARKERSSGIX: D(funcname = "glDeleteAsyncMarkersSGIX"); if (GL_ISAVAILABLE(glDeleteAsyncMarkersSGIX)) nfglDeleteAsyncMarkersSGIX( getStackedParameter(0), /* GLuint marker */ getStackedParameter(1) /* GLsizei range */); break; case NFOSMESA_GLDELETEBUFFERS: D(funcname = "glDeleteBuffers"); if (GL_ISAVAILABLE(glDeleteBuffers)) nfglDeleteBuffers( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *buffers */); break; case NFOSMESA_GLDELETEBUFFERSARB: D(funcname = "glDeleteBuffersARB"); if (GL_ISAVAILABLE(glDeleteBuffersARB)) nfglDeleteBuffersARB( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *buffers */); break; case NFOSMESA_GLDELETECOMMANDLISTSNV: D(funcname = "glDeleteCommandListsNV"); if (GL_ISAVAILABLE(glDeleteCommandListsNV)) nfglDeleteCommandListsNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *lists */); break; case NFOSMESA_GLDELETEFENCESAPPLE: D(funcname = "glDeleteFencesAPPLE"); if (GL_ISAVAILABLE(glDeleteFencesAPPLE)) nfglDeleteFencesAPPLE( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *fences */); break; case NFOSMESA_GLDELETEFENCESNV: D(funcname = "glDeleteFencesNV"); if (GL_ISAVAILABLE(glDeleteFencesNV)) nfglDeleteFencesNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *fences */); break; case NFOSMESA_GLDELETEFRAGMENTSHADERATI: D(funcname = "glDeleteFragmentShaderATI"); if (GL_ISAVAILABLE(glDeleteFragmentShaderATI)) nfglDeleteFragmentShaderATI( getStackedParameter(0) /* GLuint id */); break; case NFOSMESA_GLDELETEFRAMEBUFFERS: D(funcname = "glDeleteFramebuffers"); if (GL_ISAVAILABLE(glDeleteFramebuffers)) nfglDeleteFramebuffers( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *framebuffers */); break; case NFOSMESA_GLDELETEFRAMEBUFFERSEXT: D(funcname = "glDeleteFramebuffersEXT"); if (GL_ISAVAILABLE(glDeleteFramebuffersEXT)) nfglDeleteFramebuffersEXT( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *framebuffers */); break; case NFOSMESA_GLDELETELISTS: D(funcname = "glDeleteLists"); if (GL_ISAVAILABLE(glDeleteLists)) nfglDeleteLists( getStackedParameter(0), /* GLuint list */ getStackedParameter(1) /* GLsizei range */); break; case NFOSMESA_GLDELETEMEMORYOBJECTSEXT: D(funcname = "glDeleteMemoryObjectsEXT"); if (GL_ISAVAILABLE(glDeleteMemoryObjectsEXT)) nfglDeleteMemoryObjectsEXT( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *memoryObjects */); break; case NFOSMESA_GLDELETENAMEDSTRINGARB: D(funcname = "glDeleteNamedStringARB"); if (GL_ISAVAILABLE(glDeleteNamedStringARB)) nfglDeleteNamedStringARB( getStackedParameter(0), /* GLint namelen */ getStackedPointer(1, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLDELETENAMESAMD: D(funcname = "glDeleteNamesAMD"); if (GL_ISAVAILABLE(glDeleteNamesAMD)) nfglDeleteNamesAMD( getStackedParameter(0), /* GLenum identifier */ getStackedParameter(1), /* GLuint num */ getStackedPointer(2, const GLuint *) /* const GLuint *names */); break; case NFOSMESA_GLDELETEOBJECTARB: D(funcname = "glDeleteObjectARB"); if (GL_ISAVAILABLE(glDeleteObjectARB)) nfglDeleteObjectARB( (GLhandleARB)(uintptr_t)getStackedParameter(0) /* GLhandleARB obj */); break; case NFOSMESA_GLDELETEOBJECTBUFFERATI: D(funcname = "glDeleteObjectBufferATI"); if (GL_ISAVAILABLE(glDeleteObjectBufferATI)) nfglDeleteObjectBufferATI( getStackedParameter(0) /* GLuint buffer */); break; case NFOSMESA_GLDELETEOCCLUSIONQUERIESNV: D(funcname = "glDeleteOcclusionQueriesNV"); if (GL_ISAVAILABLE(glDeleteOcclusionQueriesNV)) nfglDeleteOcclusionQueriesNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *ids */); break; case NFOSMESA_GLDELETEPATHSNV: D(funcname = "glDeletePathsNV"); if (GL_ISAVAILABLE(glDeletePathsNV)) nfglDeletePathsNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1) /* GLsizei range */); break; case NFOSMESA_GLDELETEPERFMONITORSAMD: D(funcname = "glDeletePerfMonitorsAMD"); if (GL_ISAVAILABLE(glDeletePerfMonitorsAMD)) nfglDeletePerfMonitorsAMD( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *monitors */); break; case NFOSMESA_GLDELETEPERFQUERYINTEL: D(funcname = "glDeletePerfQueryINTEL"); if (GL_ISAVAILABLE(glDeletePerfQueryINTEL)) nfglDeletePerfQueryINTEL( getStackedParameter(0) /* GLuint queryHandle */); break; case NFOSMESA_GLDELETEPROGRAM: D(funcname = "glDeleteProgram"); if (GL_ISAVAILABLE(glDeleteProgram)) nfglDeleteProgram( getStackedParameter(0) /* GLuint program */); break; case NFOSMESA_GLDELETEPROGRAMPIPELINES: D(funcname = "glDeleteProgramPipelines"); if (GL_ISAVAILABLE(glDeleteProgramPipelines)) nfglDeleteProgramPipelines( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *pipelines */); break; case NFOSMESA_GLDELETEPROGRAMSARB: D(funcname = "glDeleteProgramsARB"); if (GL_ISAVAILABLE(glDeleteProgramsARB)) nfglDeleteProgramsARB( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *programs */); break; case NFOSMESA_GLDELETEPROGRAMSNV: D(funcname = "glDeleteProgramsNV"); if (GL_ISAVAILABLE(glDeleteProgramsNV)) nfglDeleteProgramsNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *programs */); break; case NFOSMESA_GLDELETEQUERIES: D(funcname = "glDeleteQueries"); if (GL_ISAVAILABLE(glDeleteQueries)) nfglDeleteQueries( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *ids */); break; case NFOSMESA_GLDELETEQUERIESARB: D(funcname = "glDeleteQueriesARB"); if (GL_ISAVAILABLE(glDeleteQueriesARB)) nfglDeleteQueriesARB( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *ids */); break; case NFOSMESA_GLDELETEQUERYRESOURCETAGNV: D(funcname = "glDeleteQueryResourceTagNV"); if (GL_ISAVAILABLE(glDeleteQueryResourceTagNV)) nfglDeleteQueryResourceTagNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLint *) /* const GLint *tagIds */); break; case NFOSMESA_GLDELETERENDERBUFFERS: D(funcname = "glDeleteRenderbuffers"); if (GL_ISAVAILABLE(glDeleteRenderbuffers)) nfglDeleteRenderbuffers( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *renderbuffers */); break; case NFOSMESA_GLDELETERENDERBUFFERSEXT: D(funcname = "glDeleteRenderbuffersEXT"); if (GL_ISAVAILABLE(glDeleteRenderbuffersEXT)) nfglDeleteRenderbuffersEXT( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *renderbuffers */); break; case NFOSMESA_GLDELETESAMPLERS: D(funcname = "glDeleteSamplers"); if (GL_ISAVAILABLE(glDeleteSamplers)) nfglDeleteSamplers( getStackedParameter(0), /* GLsizei count */ getStackedPointer(1, const GLuint *) /* const GLuint *samplers */); break; case NFOSMESA_GLDELETESEMAPHORESEXT: D(funcname = "glDeleteSemaphoresEXT"); if (GL_ISAVAILABLE(glDeleteSemaphoresEXT)) nfglDeleteSemaphoresEXT( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *semaphores */); break; case NFOSMESA_GLDELETESHADER: D(funcname = "glDeleteShader"); if (GL_ISAVAILABLE(glDeleteShader)) nfglDeleteShader( getStackedParameter(0) /* GLuint shader */); break; case NFOSMESA_GLDELETESTATESNV: D(funcname = "glDeleteStatesNV"); if (GL_ISAVAILABLE(glDeleteStatesNV)) nfglDeleteStatesNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *states */); break; case NFOSMESA_GLDELETESYNC: D(funcname = "glDeleteSync"); if (GL_ISAVAILABLE(glDeleteSync)) nfglDeleteSync( (GLsync)(uintptr_t)getStackedParameter(0) /* GLsync sync */); break; case NFOSMESA_GLDELETETEXTURES: D(funcname = "glDeleteTextures"); if (GL_ISAVAILABLE(glDeleteTextures)) nfglDeleteTextures( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *textures */); break; case NFOSMESA_GLDELETETEXTURESEXT: D(funcname = "glDeleteTexturesEXT"); if (GL_ISAVAILABLE(glDeleteTexturesEXT)) nfglDeleteTexturesEXT( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *textures */); break; case NFOSMESA_GLDELETETRANSFORMFEEDBACKS: D(funcname = "glDeleteTransformFeedbacks"); if (GL_ISAVAILABLE(glDeleteTransformFeedbacks)) nfglDeleteTransformFeedbacks( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *ids */); break; case NFOSMESA_GLDELETETRANSFORMFEEDBACKSNV: D(funcname = "glDeleteTransformFeedbacksNV"); if (GL_ISAVAILABLE(glDeleteTransformFeedbacksNV)) nfglDeleteTransformFeedbacksNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *ids */); break; case NFOSMESA_GLDELETEVERTEXARRAYS: D(funcname = "glDeleteVertexArrays"); if (GL_ISAVAILABLE(glDeleteVertexArrays)) nfglDeleteVertexArrays( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *arrays */); break; case NFOSMESA_GLDELETEVERTEXARRAYSAPPLE: D(funcname = "glDeleteVertexArraysAPPLE"); if (GL_ISAVAILABLE(glDeleteVertexArraysAPPLE)) nfglDeleteVertexArraysAPPLE( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *arrays */); break; case NFOSMESA_GLDELETEVERTEXSHADEREXT: D(funcname = "glDeleteVertexShaderEXT"); if (GL_ISAVAILABLE(glDeleteVertexShaderEXT)) nfglDeleteVertexShaderEXT( getStackedParameter(0) /* GLuint id */); break; case NFOSMESA_GLDEPTHBOUNDSEXT: D(funcname = "glDepthBoundsEXT"); if (GL_ISAVAILABLE(glDepthBoundsEXT)) nfglDepthBoundsEXT( getStackedDouble(0), /* GLclampd zmin */ getStackedDouble(2) /* GLclampd zmax */); break; case NFOSMESA_GLDEPTHBOUNDSDNV: D(funcname = "glDepthBoundsdNV"); if (GL_ISAVAILABLE(glDepthBoundsdNV)) nfglDepthBoundsdNV( getStackedDouble(0), /* GLdouble zmin */ getStackedDouble(2) /* GLdouble zmax */); break; case NFOSMESA_GLDEPTHFUNC: D(funcname = "glDepthFunc"); if (GL_ISAVAILABLE(glDepthFunc)) nfglDepthFunc( getStackedParameter(0) /* GLenum func */); break; case NFOSMESA_GLDEPTHMASK: D(funcname = "glDepthMask"); if (GL_ISAVAILABLE(glDepthMask)) nfglDepthMask( getStackedParameter(0) /* GLboolean32 flag */); break; case NFOSMESA_GLDEPTHRANGE: D(funcname = "glDepthRange"); if (GL_ISAVAILABLE(glDepthRange)) nfglDepthRange( getStackedDouble(0), /* GLclampd zNear */ getStackedDouble(2) /* GLclampd zFar */); break; case NFOSMESA_GLDEPTHRANGEARRAYV: D(funcname = "glDepthRangeArrayv"); if (GL_ISAVAILABLE(glDepthRangeArrayv)) nfglDepthRangeArrayv( getStackedParameter(0), /* GLuint first */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLDEPTHRANGEINDEXED: D(funcname = "glDepthRangeIndexed"); if (GL_ISAVAILABLE(glDepthRangeIndexed)) nfglDepthRangeIndexed( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble n */ getStackedDouble(3) /* GLdouble f */); break; case NFOSMESA_GLDEPTHRANGEDNV: D(funcname = "glDepthRangedNV"); if (GL_ISAVAILABLE(glDepthRangedNV)) nfglDepthRangedNV( getStackedDouble(0), /* GLdouble zNear */ getStackedDouble(2) /* GLdouble zFar */); break; case NFOSMESA_GLDEPTHRANGEF: D(funcname = "glDepthRangef"); if (GL_ISAVAILABLE(glDepthRangef)) nfglDepthRangef( getStackedFloat(0), /* GLfloat n */ getStackedFloat(1) /* GLfloat f */); break; case NFOSMESA_GLDEPTHRANGEFOES: D(funcname = "glDepthRangefOES"); if (GL_ISAVAILABLE(glDepthRangefOES)) nfglDepthRangefOES( getStackedFloat(0), /* GLclampf n */ getStackedFloat(1) /* GLclampf f */); break; case NFOSMESA_GLDEPTHRANGEXOES: D(funcname = "glDepthRangexOES"); if (GL_ISAVAILABLE(glDepthRangexOES)) nfglDepthRangexOES( getStackedParameter(0), /* GLfixed n */ getStackedParameter(1) /* GLfixed f */); break; case NFOSMESA_GLDETACHOBJECTARB: D(funcname = "glDetachObjectARB"); if (GL_ISAVAILABLE(glDetachObjectARB)) nfglDetachObjectARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB containerObj */ (GLhandleARB)(uintptr_t)getStackedParameter(1) /* GLhandleARB attachedObj */); break; case NFOSMESA_GLDETACHSHADER: D(funcname = "glDetachShader"); if (GL_ISAVAILABLE(glDetachShader)) nfglDetachShader( getStackedParameter(0), /* GLuint program */ getStackedParameter(1) /* GLuint shader */); break; case NFOSMESA_GLDETAILTEXFUNCSGIS: D(funcname = "glDetailTexFuncSGIS"); if (GL_ISAVAILABLE(glDetailTexFuncSGIS)) nfglDetailTexFuncSGIS( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei n */ getStackedPointer(2, const GLfloat *) /* const GLfloat *points */); break; case NFOSMESA_GLDISABLE: D(funcname = "glDisable"); if (GL_ISAVAILABLE(glDisable)) nfglDisable( getStackedParameter(0) /* GLenum cap */); break; case NFOSMESA_GLDISABLECLIENTSTATE: D(funcname = "glDisableClientState"); if (GL_ISAVAILABLE(glDisableClientState)) nfglDisableClientState( getStackedParameter(0) /* GLenum array */); break; case NFOSMESA_GLDISABLECLIENTSTATEINDEXEDEXT: D(funcname = "glDisableClientStateIndexedEXT"); if (GL_ISAVAILABLE(glDisableClientStateIndexedEXT)) nfglDisableClientStateIndexedEXT( getStackedParameter(0), /* GLenum array */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLDISABLECLIENTSTATEIEXT: D(funcname = "glDisableClientStateiEXT"); if (GL_ISAVAILABLE(glDisableClientStateiEXT)) nfglDisableClientStateiEXT( getStackedParameter(0), /* GLenum array */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLDISABLEINDEXEDEXT: D(funcname = "glDisableIndexedEXT"); if (GL_ISAVAILABLE(glDisableIndexedEXT)) nfglDisableIndexedEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLDISABLETRACEMESA: D(funcname = "glDisableTraceMESA"); if (GL_ISAVAILABLE(glDisableTraceMESA)) nfglDisableTraceMESA( getStackedParameter(0) /* GLbitfield mask */); break; case NFOSMESA_GLDISABLEVARIANTCLIENTSTATEEXT: D(funcname = "glDisableVariantClientStateEXT"); if (GL_ISAVAILABLE(glDisableVariantClientStateEXT)) nfglDisableVariantClientStateEXT( getStackedParameter(0) /* GLuint id */); break; case NFOSMESA_GLDISABLEVERTEXARRAYATTRIB: D(funcname = "glDisableVertexArrayAttrib"); if (GL_ISAVAILABLE(glDisableVertexArrayAttrib)) nfglDisableVertexArrayAttrib( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLDISABLEVERTEXARRAYATTRIBEXT: D(funcname = "glDisableVertexArrayAttribEXT"); if (GL_ISAVAILABLE(glDisableVertexArrayAttribEXT)) nfglDisableVertexArrayAttribEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLDISABLEVERTEXARRAYEXT: D(funcname = "glDisableVertexArrayEXT"); if (GL_ISAVAILABLE(glDisableVertexArrayEXT)) nfglDisableVertexArrayEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1) /* GLenum array */); break; case NFOSMESA_GLDISABLEVERTEXATTRIBAPPLE: D(funcname = "glDisableVertexAttribAPPLE"); if (GL_ISAVAILABLE(glDisableVertexAttribAPPLE)) nfglDisableVertexAttribAPPLE( getStackedParameter(0), /* GLuint index */ getStackedParameter(1) /* GLenum pname */); break; case NFOSMESA_GLDISABLEVERTEXATTRIBARRAY: D(funcname = "glDisableVertexAttribArray"); if (GL_ISAVAILABLE(glDisableVertexAttribArray)) nfglDisableVertexAttribArray( getStackedParameter(0) /* GLuint index */); break; case NFOSMESA_GLDISABLEVERTEXATTRIBARRAYARB: D(funcname = "glDisableVertexAttribArrayARB"); if (GL_ISAVAILABLE(glDisableVertexAttribArrayARB)) nfglDisableVertexAttribArrayARB( getStackedParameter(0) /* GLuint index */); break; case NFOSMESA_GLDISABLEI: D(funcname = "glDisablei"); if (GL_ISAVAILABLE(glDisablei)) nfglDisablei( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLDISPATCHCOMPUTE: D(funcname = "glDispatchCompute"); if (GL_ISAVAILABLE(glDispatchCompute)) nfglDispatchCompute( getStackedParameter(0), /* GLuint num_groups_x */ getStackedParameter(1), /* GLuint num_groups_y */ getStackedParameter(2) /* GLuint num_groups_z */); break; case NFOSMESA_GLDISPATCHCOMPUTEGROUPSIZEARB: D(funcname = "glDispatchComputeGroupSizeARB"); if (GL_ISAVAILABLE(glDispatchComputeGroupSizeARB)) nfglDispatchComputeGroupSizeARB( getStackedParameter(0), /* GLuint num_groups_x */ getStackedParameter(1), /* GLuint num_groups_y */ getStackedParameter(2), /* GLuint num_groups_z */ getStackedParameter(3), /* GLuint group_size_x */ getStackedParameter(4), /* GLuint group_size_y */ getStackedParameter(5) /* GLuint group_size_z */); break; case NFOSMESA_GLDISPATCHCOMPUTEINDIRECT: D(funcname = "glDispatchComputeIndirect"); if (GL_ISAVAILABLE(glDispatchComputeIndirect)) nfglDispatchComputeIndirect( getStackedParameter(0) /* GLintptr indirect */); break; case NFOSMESA_GLDRAWARRAYS: D(funcname = "glDrawArrays"); if (GL_ISAVAILABLE(glDrawArrays)) nfglDrawArrays( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLint first */ getStackedParameter(2) /* GLsizei count */); break; case NFOSMESA_GLDRAWARRAYSEXT: D(funcname = "glDrawArraysEXT"); if (GL_ISAVAILABLE(glDrawArraysEXT)) nfglDrawArraysEXT( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLint first */ getStackedParameter(2) /* GLsizei count */); break; case NFOSMESA_GLDRAWARRAYSINDIRECT: D(funcname = "glDrawArraysIndirect"); if (GL_ISAVAILABLE(glDrawArraysIndirect)) nfglDrawArraysIndirect( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const void *) /* const void *indirect */); break; case NFOSMESA_GLDRAWARRAYSINSTANCED: D(funcname = "glDrawArraysInstanced"); if (GL_ISAVAILABLE(glDrawArraysInstanced)) nfglDrawArraysInstanced( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLint first */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3) /* GLsizei instancecount */); break; case NFOSMESA_GLDRAWARRAYSINSTANCEDARB: D(funcname = "glDrawArraysInstancedARB"); if (GL_ISAVAILABLE(glDrawArraysInstancedARB)) nfglDrawArraysInstancedARB( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLint first */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3) /* GLsizei primcount */); break; case NFOSMESA_GLDRAWARRAYSINSTANCEDBASEINSTANCE: D(funcname = "glDrawArraysInstancedBaseInstance"); if (GL_ISAVAILABLE(glDrawArraysInstancedBaseInstance)) nfglDrawArraysInstancedBaseInstance( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLint first */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLsizei instancecount */ getStackedParameter(4) /* GLuint baseinstance */); break; case NFOSMESA_GLDRAWARRAYSINSTANCEDEXT: D(funcname = "glDrawArraysInstancedEXT"); if (GL_ISAVAILABLE(glDrawArraysInstancedEXT)) nfglDrawArraysInstancedEXT( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLint start */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3) /* GLsizei primcount */); break; case NFOSMESA_GLDRAWBUFFER: D(funcname = "glDrawBuffer"); if (GL_ISAVAILABLE(glDrawBuffer)) nfglDrawBuffer( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLDRAWBUFFERS: D(funcname = "glDrawBuffers"); if (GL_ISAVAILABLE(glDrawBuffers)) nfglDrawBuffers( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLenum *) /* const GLenum *bufs */); break; case NFOSMESA_GLDRAWBUFFERSARB: D(funcname = "glDrawBuffersARB"); if (GL_ISAVAILABLE(glDrawBuffersARB)) nfglDrawBuffersARB( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLenum *) /* const GLenum *bufs */); break; case NFOSMESA_GLDRAWBUFFERSATI: D(funcname = "glDrawBuffersATI"); if (GL_ISAVAILABLE(glDrawBuffersATI)) nfglDrawBuffersATI( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLenum *) /* const GLenum *bufs */); break; case NFOSMESA_GLDRAWCOMMANDSADDRESSNV: D(funcname = "glDrawCommandsAddressNV"); if (GL_ISAVAILABLE(glDrawCommandsAddressNV)) nfglDrawCommandsAddressNV( getStackedParameter(0), /* GLenum primitiveMode */ getStackedPointer(1, const GLuint64 *), /* const GLuint64 *indirects */ getStackedPointer(2, const GLsizei *), /* const GLsizei *sizes */ getStackedParameter(3) /* GLuint count */); break; case NFOSMESA_GLDRAWCOMMANDSNV: D(funcname = "glDrawCommandsNV"); if (GL_ISAVAILABLE(glDrawCommandsNV)) nfglDrawCommandsNV( getStackedParameter(0), /* GLenum primitiveMode */ getStackedParameter(1), /* GLuint buffer */ getStackedPointer(2, const GLintptr *), /* const GLintptr *indirects */ getStackedPointer(3, const GLsizei *), /* const GLsizei *sizes */ getStackedParameter(4) /* GLuint count */); break; case NFOSMESA_GLDRAWCOMMANDSSTATESADDRESSNV: D(funcname = "glDrawCommandsStatesAddressNV"); if (GL_ISAVAILABLE(glDrawCommandsStatesAddressNV)) nfglDrawCommandsStatesAddressNV( getStackedPointer(0, const GLuint64 *), /* const GLuint64 *indirects */ getStackedPointer(1, const GLsizei *), /* const GLsizei *sizes */ getStackedPointer(2, const GLuint *), /* const GLuint *states */ getStackedPointer(3, const GLuint *), /* const GLuint *fbos */ getStackedParameter(4) /* GLuint count */); break; case NFOSMESA_GLDRAWCOMMANDSSTATESNV: D(funcname = "glDrawCommandsStatesNV"); if (GL_ISAVAILABLE(glDrawCommandsStatesNV)) nfglDrawCommandsStatesNV( getStackedParameter(0), /* GLuint buffer */ getStackedPointer(1, const GLintptr *), /* const GLintptr *indirects */ getStackedPointer(2, const GLsizei *), /* const GLsizei *sizes */ getStackedPointer(3, const GLuint *), /* const GLuint *states */ getStackedPointer(4, const GLuint *), /* const GLuint *fbos */ getStackedParameter(5) /* GLuint count */); break; case NFOSMESA_GLDRAWELEMENTARRAYAPPLE: D(funcname = "glDrawElementArrayAPPLE"); if (GL_ISAVAILABLE(glDrawElementArrayAPPLE)) nfglDrawElementArrayAPPLE( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLint first */ getStackedParameter(2) /* GLsizei count */); break; case NFOSMESA_GLDRAWELEMENTARRAYATI: D(funcname = "glDrawElementArrayATI"); if (GL_ISAVAILABLE(glDrawElementArrayATI)) nfglDrawElementArrayATI( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1) /* GLsizei count */); break; case NFOSMESA_GLDRAWELEMENTS: D(funcname = "glDrawElements"); if (GL_ISAVAILABLE(glDrawElements)) nfglDrawElements( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, const GLvoid *) /* const GLvoid *indices */); break; case NFOSMESA_GLDRAWELEMENTSBASEVERTEX: D(funcname = "glDrawElementsBaseVertex"); if (GL_ISAVAILABLE(glDrawElementsBaseVertex)) nfglDrawElementsBaseVertex( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, const void *), /* const void *indices */ getStackedParameter(4) /* GLint basevertex */); break; case NFOSMESA_GLDRAWELEMENTSINDIRECT: D(funcname = "glDrawElementsIndirect"); if (GL_ISAVAILABLE(glDrawElementsIndirect)) nfglDrawElementsIndirect( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const void *) /* const void *indirect */); break; case NFOSMESA_GLDRAWELEMENTSINSTANCED: D(funcname = "glDrawElementsInstanced"); if (GL_ISAVAILABLE(glDrawElementsInstanced)) nfglDrawElementsInstanced( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, const void *), /* const void *indices */ getStackedParameter(4) /* GLsizei instancecount */); break; case NFOSMESA_GLDRAWELEMENTSINSTANCEDARB: D(funcname = "glDrawElementsInstancedARB"); if (GL_ISAVAILABLE(glDrawElementsInstancedARB)) nfglDrawElementsInstancedARB( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, const void *), /* const void *indices */ getStackedParameter(4) /* GLsizei primcount */); break; case NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEINSTANCE: D(funcname = "glDrawElementsInstancedBaseInstance"); if (GL_ISAVAILABLE(glDrawElementsInstancedBaseInstance)) nfglDrawElementsInstancedBaseInstance( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, const void *), /* const void *indices */ getStackedParameter(4), /* GLsizei instancecount */ getStackedParameter(5) /* GLuint baseinstance */); break; case NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEVERTEX: D(funcname = "glDrawElementsInstancedBaseVertex"); if (GL_ISAVAILABLE(glDrawElementsInstancedBaseVertex)) nfglDrawElementsInstancedBaseVertex( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, const void *), /* const void *indices */ getStackedParameter(4), /* GLsizei instancecount */ getStackedParameter(5) /* GLint basevertex */); break; case NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE: D(funcname = "glDrawElementsInstancedBaseVertexBaseInstance"); if (GL_ISAVAILABLE(glDrawElementsInstancedBaseVertexBaseInstance)) nfglDrawElementsInstancedBaseVertexBaseInstance( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, const void *), /* const void *indices */ getStackedParameter(4), /* GLsizei instancecount */ getStackedParameter(5), /* GLint basevertex */ getStackedParameter(6) /* GLuint baseinstance */); break; case NFOSMESA_GLDRAWELEMENTSINSTANCEDEXT: D(funcname = "glDrawElementsInstancedEXT"); if (GL_ISAVAILABLE(glDrawElementsInstancedEXT)) nfglDrawElementsInstancedEXT( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, const void *), /* const void *indices */ getStackedParameter(4) /* GLsizei primcount */); break; case NFOSMESA_GLDRAWMESHARRAYSSUN: D(funcname = "glDrawMeshArraysSUN"); if (GL_ISAVAILABLE(glDrawMeshArraysSUN)) nfglDrawMeshArraysSUN( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLint first */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3) /* GLsizei width */); break; case NFOSMESA_GLDRAWPIXELS: D(funcname = "glDrawPixels"); if (GL_ISAVAILABLE(glDrawPixels)) nfglDrawPixels( getStackedParameter(0), /* GLsizei width */ getStackedParameter(1), /* GLsizei height */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedPointer(4, const GLvoid *) /* const GLvoid *pixels */); break; case NFOSMESA_GLDRAWRANGEELEMENTARRAYAPPLE: D(funcname = "glDrawRangeElementArrayAPPLE"); if (GL_ISAVAILABLE(glDrawRangeElementArrayAPPLE)) nfglDrawRangeElementArrayAPPLE( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLuint start */ getStackedParameter(2), /* GLuint end */ getStackedParameter(3), /* GLint first */ getStackedParameter(4) /* GLsizei count */); break; case NFOSMESA_GLDRAWRANGEELEMENTARRAYATI: D(funcname = "glDrawRangeElementArrayATI"); if (GL_ISAVAILABLE(glDrawRangeElementArrayATI)) nfglDrawRangeElementArrayATI( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLuint start */ getStackedParameter(2), /* GLuint end */ getStackedParameter(3) /* GLsizei count */); break; case NFOSMESA_GLDRAWRANGEELEMENTS: D(funcname = "glDrawRangeElements"); if (GL_ISAVAILABLE(glDrawRangeElements)) nfglDrawRangeElements( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLuint start */ getStackedParameter(2), /* GLuint end */ getStackedParameter(3), /* GLsizei count */ getStackedParameter(4), /* GLenum type */ getStackedPointer(5, const void *) /* const void *indices */); break; case NFOSMESA_GLDRAWRANGEELEMENTSBASEVERTEX: D(funcname = "glDrawRangeElementsBaseVertex"); if (GL_ISAVAILABLE(glDrawRangeElementsBaseVertex)) nfglDrawRangeElementsBaseVertex( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLuint start */ getStackedParameter(2), /* GLuint end */ getStackedParameter(3), /* GLsizei count */ getStackedParameter(4), /* GLenum type */ getStackedPointer(5, const void *), /* const void *indices */ getStackedParameter(6) /* GLint basevertex */); break; case NFOSMESA_GLDRAWRANGEELEMENTSEXT: D(funcname = "glDrawRangeElementsEXT"); if (GL_ISAVAILABLE(glDrawRangeElementsEXT)) nfglDrawRangeElementsEXT( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLuint start */ getStackedParameter(2), /* GLuint end */ getStackedParameter(3), /* GLsizei count */ getStackedParameter(4), /* GLenum type */ getStackedPointer(5, const void *) /* const void *indices */); break; case NFOSMESA_GLDRAWTEXTURENV: D(funcname = "glDrawTextureNV"); if (GL_ISAVAILABLE(glDrawTextureNV)) nfglDrawTextureNV( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLuint sampler */ getStackedFloat(2), /* GLfloat x0 */ getStackedFloat(3), /* GLfloat y0 */ getStackedFloat(4), /* GLfloat x1 */ getStackedFloat(5), /* GLfloat y1 */ getStackedFloat(6), /* GLfloat z */ getStackedFloat(7), /* GLfloat s0 */ getStackedFloat(8), /* GLfloat t0 */ getStackedFloat(9), /* GLfloat s1 */ getStackedFloat(10) /* GLfloat t1 */); break; case NFOSMESA_GLDRAWTRANSFORMFEEDBACK: D(funcname = "glDrawTransformFeedback"); if (GL_ISAVAILABLE(glDrawTransformFeedback)) nfglDrawTransformFeedback( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1) /* GLuint id */); break; case NFOSMESA_GLDRAWTRANSFORMFEEDBACKINSTANCED: D(funcname = "glDrawTransformFeedbackInstanced"); if (GL_ISAVAILABLE(glDrawTransformFeedbackInstanced)) nfglDrawTransformFeedbackInstanced( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLuint id */ getStackedParameter(2) /* GLsizei instancecount */); break; case NFOSMESA_GLDRAWTRANSFORMFEEDBACKNV: D(funcname = "glDrawTransformFeedbackNV"); if (GL_ISAVAILABLE(glDrawTransformFeedbackNV)) nfglDrawTransformFeedbackNV( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1) /* GLuint id */); break; case NFOSMESA_GLDRAWTRANSFORMFEEDBACKSTREAM: D(funcname = "glDrawTransformFeedbackStream"); if (GL_ISAVAILABLE(glDrawTransformFeedbackStream)) nfglDrawTransformFeedbackStream( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLuint id */ getStackedParameter(2) /* GLuint stream */); break; case NFOSMESA_GLDRAWTRANSFORMFEEDBACKSTREAMINSTANCED: D(funcname = "glDrawTransformFeedbackStreamInstanced"); if (GL_ISAVAILABLE(glDrawTransformFeedbackStreamInstanced)) nfglDrawTransformFeedbackStreamInstanced( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLuint id */ getStackedParameter(2), /* GLuint stream */ getStackedParameter(3) /* GLsizei instancecount */); break; case NFOSMESA_GLDRAWVKIMAGENV: D(funcname = "glDrawVkImageNV"); if (GL_ISAVAILABLE(glDrawVkImageNV)) nfglDrawVkImageNV( getStackedParameter64(0), /* GLuint64 vkImage */ getStackedParameter(2), /* GLuint sampler */ getStackedFloat(3), /* GLfloat x0 */ getStackedFloat(4), /* GLfloat y0 */ getStackedFloat(5), /* GLfloat x1 */ getStackedFloat(6), /* GLfloat y1 */ getStackedFloat(7), /* GLfloat z */ getStackedFloat(8), /* GLfloat s0 */ getStackedFloat(9), /* GLfloat t0 */ getStackedFloat(10), /* GLfloat s1 */ getStackedFloat(11) /* GLfloat t1 */); break; case NFOSMESA_GLEDGEFLAG: D(funcname = "glEdgeFlag"); if (GL_ISAVAILABLE(glEdgeFlag)) nfglEdgeFlag( getStackedParameter(0) /* GLboolean32 flag */); break; case NFOSMESA_GLEDGEFLAGFORMATNV: D(funcname = "glEdgeFlagFormatNV"); if (GL_ISAVAILABLE(glEdgeFlagFormatNV)) nfglEdgeFlagFormatNV( getStackedParameter(0) /* GLsizei stride */); break; case NFOSMESA_GLEDGEFLAGPOINTER: D(funcname = "glEdgeFlagPointer"); if (GL_ISAVAILABLE(glEdgeFlagPointer)) nfglEdgeFlagPointer( getStackedParameter(0), /* GLsizei stride */ getStackedPointer(1, const GLvoid *) /* const GLvoid *pointer */); break; case NFOSMESA_GLEDGEFLAGPOINTEREXT: D(funcname = "glEdgeFlagPointerEXT"); if (GL_ISAVAILABLE(glEdgeFlagPointerEXT)) nfglEdgeFlagPointerEXT( getStackedParameter(0), /* GLsizei stride */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLboolean *) /* const GLboolean *pointer */); break; case NFOSMESA_GLEDGEFLAGPOINTERLISTIBM: D(funcname = "glEdgeFlagPointerListIBM"); if (GL_ISAVAILABLE(glEdgeFlagPointerListIBM)) nfglEdgeFlagPointerListIBM( getStackedParameter(0), /* GLint stride */ getStackedPointer(1, const GLboolean * *), /* const GLboolean * *pointer */ getStackedParameter(2) /* GLint ptrstride */); break; case NFOSMESA_GLEDGEFLAGV: D(funcname = "glEdgeFlagv"); if (GL_ISAVAILABLE(glEdgeFlagv)) nfglEdgeFlagv( getStackedPointer(0, const GLboolean *) /* const GLboolean *flag */); break; case NFOSMESA_GLELEMENTPOINTERAPPLE: D(funcname = "glElementPointerAPPLE"); if (GL_ISAVAILABLE(glElementPointerAPPLE)) nfglElementPointerAPPLE( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const void *) /* const void *pointer */); break; case NFOSMESA_GLELEMENTPOINTERATI: D(funcname = "glElementPointerATI"); if (GL_ISAVAILABLE(glElementPointerATI)) nfglElementPointerATI( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const void *) /* const void *pointer */); break; case NFOSMESA_GLENABLE: D(funcname = "glEnable"); if (GL_ISAVAILABLE(glEnable)) nfglEnable( getStackedParameter(0) /* GLenum cap */); break; case NFOSMESA_GLENABLECLIENTSTATE: D(funcname = "glEnableClientState"); if (GL_ISAVAILABLE(glEnableClientState)) nfglEnableClientState( getStackedParameter(0) /* GLenum array */); break; case NFOSMESA_GLENABLECLIENTSTATEINDEXEDEXT: D(funcname = "glEnableClientStateIndexedEXT"); if (GL_ISAVAILABLE(glEnableClientStateIndexedEXT)) nfglEnableClientStateIndexedEXT( getStackedParameter(0), /* GLenum array */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLENABLECLIENTSTATEIEXT: D(funcname = "glEnableClientStateiEXT"); if (GL_ISAVAILABLE(glEnableClientStateiEXT)) nfglEnableClientStateiEXT( getStackedParameter(0), /* GLenum array */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLENABLEINDEXEDEXT: D(funcname = "glEnableIndexedEXT"); if (GL_ISAVAILABLE(glEnableIndexedEXT)) nfglEnableIndexedEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLENABLETRACEMESA: D(funcname = "glEnableTraceMESA"); if (GL_ISAVAILABLE(glEnableTraceMESA)) nfglEnableTraceMESA( getStackedParameter(0) /* GLbitfield mask */); break; case NFOSMESA_GLENABLEVARIANTCLIENTSTATEEXT: D(funcname = "glEnableVariantClientStateEXT"); if (GL_ISAVAILABLE(glEnableVariantClientStateEXT)) nfglEnableVariantClientStateEXT( getStackedParameter(0) /* GLuint id */); break; case NFOSMESA_GLENABLEVERTEXARRAYATTRIB: D(funcname = "glEnableVertexArrayAttrib"); if (GL_ISAVAILABLE(glEnableVertexArrayAttrib)) nfglEnableVertexArrayAttrib( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLENABLEVERTEXARRAYATTRIBEXT: D(funcname = "glEnableVertexArrayAttribEXT"); if (GL_ISAVAILABLE(glEnableVertexArrayAttribEXT)) nfglEnableVertexArrayAttribEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLENABLEVERTEXARRAYEXT: D(funcname = "glEnableVertexArrayEXT"); if (GL_ISAVAILABLE(glEnableVertexArrayEXT)) nfglEnableVertexArrayEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1) /* GLenum array */); break; case NFOSMESA_GLENABLEVERTEXATTRIBAPPLE: D(funcname = "glEnableVertexAttribAPPLE"); if (GL_ISAVAILABLE(glEnableVertexAttribAPPLE)) nfglEnableVertexAttribAPPLE( getStackedParameter(0), /* GLuint index */ getStackedParameter(1) /* GLenum pname */); break; case NFOSMESA_GLENABLEVERTEXATTRIBARRAY: D(funcname = "glEnableVertexAttribArray"); if (GL_ISAVAILABLE(glEnableVertexAttribArray)) nfglEnableVertexAttribArray( getStackedParameter(0) /* GLuint index */); break; case NFOSMESA_GLENABLEVERTEXATTRIBARRAYARB: D(funcname = "glEnableVertexAttribArrayARB"); if (GL_ISAVAILABLE(glEnableVertexAttribArrayARB)) nfglEnableVertexAttribArrayARB( getStackedParameter(0) /* GLuint index */); break; case NFOSMESA_GLENABLEI: D(funcname = "glEnablei"); if (GL_ISAVAILABLE(glEnablei)) nfglEnablei( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLEND: D(funcname = "glEnd"); if (GL_ISAVAILABLE(glEnd)) nfglEnd(); break; case NFOSMESA_GLENDCONDITIONALRENDER: D(funcname = "glEndConditionalRender"); if (GL_ISAVAILABLE(glEndConditionalRender)) nfglEndConditionalRender(); break; case NFOSMESA_GLENDCONDITIONALRENDERNV: D(funcname = "glEndConditionalRenderNV"); if (GL_ISAVAILABLE(glEndConditionalRenderNV)) nfglEndConditionalRenderNV(); break; case NFOSMESA_GLENDCONDITIONALRENDERNVX: D(funcname = "glEndConditionalRenderNVX"); if (GL_ISAVAILABLE(glEndConditionalRenderNVX)) nfglEndConditionalRenderNVX(); break; case NFOSMESA_GLENDFRAGMENTSHADERATI: D(funcname = "glEndFragmentShaderATI"); if (GL_ISAVAILABLE(glEndFragmentShaderATI)) nfglEndFragmentShaderATI(); break; case NFOSMESA_GLENDLIST: D(funcname = "glEndList"); if (GL_ISAVAILABLE(glEndList)) nfglEndList(); break; case NFOSMESA_GLENDOCCLUSIONQUERYNV: D(funcname = "glEndOcclusionQueryNV"); if (GL_ISAVAILABLE(glEndOcclusionQueryNV)) nfglEndOcclusionQueryNV(); break; case NFOSMESA_GLENDPERFMONITORAMD: D(funcname = "glEndPerfMonitorAMD"); if (GL_ISAVAILABLE(glEndPerfMonitorAMD)) nfglEndPerfMonitorAMD( getStackedParameter(0) /* GLuint monitor */); break; case NFOSMESA_GLENDPERFQUERYINTEL: D(funcname = "glEndPerfQueryINTEL"); if (GL_ISAVAILABLE(glEndPerfQueryINTEL)) nfglEndPerfQueryINTEL( getStackedParameter(0) /* GLuint queryHandle */); break; case NFOSMESA_GLENDQUERY: D(funcname = "glEndQuery"); if (GL_ISAVAILABLE(glEndQuery)) nfglEndQuery( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLENDQUERYARB: D(funcname = "glEndQueryARB"); if (GL_ISAVAILABLE(glEndQueryARB)) nfglEndQueryARB( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLENDQUERYINDEXED: D(funcname = "glEndQueryIndexed"); if (GL_ISAVAILABLE(glEndQueryIndexed)) nfglEndQueryIndexed( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLENDTRACEMESA: D(funcname = "glEndTraceMESA"); if (GL_ISAVAILABLE(glEndTraceMESA)) nfglEndTraceMESA(); break; case NFOSMESA_GLENDTRANSFORMFEEDBACK: D(funcname = "glEndTransformFeedback"); if (GL_ISAVAILABLE(glEndTransformFeedback)) nfglEndTransformFeedback(); break; case NFOSMESA_GLENDTRANSFORMFEEDBACKEXT: D(funcname = "glEndTransformFeedbackEXT"); if (GL_ISAVAILABLE(glEndTransformFeedbackEXT)) nfglEndTransformFeedbackEXT(); break; case NFOSMESA_GLENDTRANSFORMFEEDBACKNV: D(funcname = "glEndTransformFeedbackNV"); if (GL_ISAVAILABLE(glEndTransformFeedbackNV)) nfglEndTransformFeedbackNV(); break; case NFOSMESA_GLENDVERTEXSHADEREXT: D(funcname = "glEndVertexShaderEXT"); if (GL_ISAVAILABLE(glEndVertexShaderEXT)) nfglEndVertexShaderEXT(); break; case NFOSMESA_GLENDVIDEOCAPTURENV: D(funcname = "glEndVideoCaptureNV"); if (GL_ISAVAILABLE(glEndVideoCaptureNV)) nfglEndVideoCaptureNV( getStackedParameter(0) /* GLuint video_capture_slot */); break; case NFOSMESA_GLEVALCOORD1D: D(funcname = "glEvalCoord1d"); if (GL_ISAVAILABLE(glEvalCoord1d)) nfglEvalCoord1d( getStackedDouble(0) /* GLdouble u */); break; case NFOSMESA_GLEVALCOORD1DV: D(funcname = "glEvalCoord1dv"); if (GL_ISAVAILABLE(glEvalCoord1dv)) nfglEvalCoord1dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *u */); break; case NFOSMESA_GLEVALCOORD1F: D(funcname = "glEvalCoord1f"); if (GL_ISAVAILABLE(glEvalCoord1f)) nfglEvalCoord1f( getStackedFloat(0) /* GLfloat u */); break; case NFOSMESA_GLEVALCOORD1FV: D(funcname = "glEvalCoord1fv"); if (GL_ISAVAILABLE(glEvalCoord1fv)) nfglEvalCoord1fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *u */); break; case NFOSMESA_GLEVALCOORD1XOES: D(funcname = "glEvalCoord1xOES"); if (GL_ISAVAILABLE(glEvalCoord1xOES)) nfglEvalCoord1xOES( getStackedParameter(0) /* GLfixed u */); break; case NFOSMESA_GLEVALCOORD1XVOES: D(funcname = "glEvalCoord1xvOES"); if (GL_ISAVAILABLE(glEvalCoord1xvOES)) nfglEvalCoord1xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLEVALCOORD2D: D(funcname = "glEvalCoord2d"); if (GL_ISAVAILABLE(glEvalCoord2d)) nfglEvalCoord2d( getStackedDouble(0), /* GLdouble u */ getStackedDouble(2) /* GLdouble v */); break; case NFOSMESA_GLEVALCOORD2DV: D(funcname = "glEvalCoord2dv"); if (GL_ISAVAILABLE(glEvalCoord2dv)) nfglEvalCoord2dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *u */); break; case NFOSMESA_GLEVALCOORD2F: D(funcname = "glEvalCoord2f"); if (GL_ISAVAILABLE(glEvalCoord2f)) nfglEvalCoord2f( getStackedFloat(0), /* GLfloat u */ getStackedFloat(1) /* GLfloat v */); break; case NFOSMESA_GLEVALCOORD2FV: D(funcname = "glEvalCoord2fv"); if (GL_ISAVAILABLE(glEvalCoord2fv)) nfglEvalCoord2fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *u */); break; case NFOSMESA_GLEVALCOORD2XOES: D(funcname = "glEvalCoord2xOES"); if (GL_ISAVAILABLE(glEvalCoord2xOES)) nfglEvalCoord2xOES( getStackedParameter(0), /* GLfixed u */ getStackedParameter(1) /* GLfixed v */); break; case NFOSMESA_GLEVALCOORD2XVOES: D(funcname = "glEvalCoord2xvOES"); if (GL_ISAVAILABLE(glEvalCoord2xvOES)) nfglEvalCoord2xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLEVALMAPSNV: D(funcname = "glEvalMapsNV"); if (GL_ISAVAILABLE(glEvalMapsNV)) nfglEvalMapsNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLEVALMESH1: D(funcname = "glEvalMesh1"); if (GL_ISAVAILABLE(glEvalMesh1)) nfglEvalMesh1( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLint i1 */ getStackedParameter(2) /* GLint i2 */); break; case NFOSMESA_GLEVALMESH2: D(funcname = "glEvalMesh2"); if (GL_ISAVAILABLE(glEvalMesh2)) nfglEvalMesh2( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLint i1 */ getStackedParameter(2), /* GLint i2 */ getStackedParameter(3), /* GLint j1 */ getStackedParameter(4) /* GLint j2 */); break; case NFOSMESA_GLEVALPOINT1: D(funcname = "glEvalPoint1"); if (GL_ISAVAILABLE(glEvalPoint1)) nfglEvalPoint1( getStackedParameter(0) /* GLint i */); break; case NFOSMESA_GLEVALPOINT2: D(funcname = "glEvalPoint2"); if (GL_ISAVAILABLE(glEvalPoint2)) nfglEvalPoint2( getStackedParameter(0), /* GLint i */ getStackedParameter(1) /* GLint j */); break; case NFOSMESA_GLEVALUATEDEPTHVALUESARB: D(funcname = "glEvaluateDepthValuesARB"); if (GL_ISAVAILABLE(glEvaluateDepthValuesARB)) nfglEvaluateDepthValuesARB(); break; case NFOSMESA_GLEXECUTEPROGRAMNV: D(funcname = "glExecuteProgramNV"); if (GL_ISAVAILABLE(glExecuteProgramNV)) nfglExecuteProgramNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint id */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLEXTRACTCOMPONENTEXT: D(funcname = "glExtractComponentEXT"); if (GL_ISAVAILABLE(glExtractComponentEXT)) nfglExtractComponentEXT( getStackedParameter(0), /* GLuint res */ getStackedParameter(1), /* GLuint src */ getStackedParameter(2) /* GLuint num */); break; case NFOSMESA_GLFEEDBACKBUFFER: D(funcname = "glFeedbackBuffer"); if (GL_ISAVAILABLE(glFeedbackBuffer)) nfglFeedbackBuffer( getStackedParameter(0), /* GLsizei size */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, GLfloat *) /* GLfloat *buffer */); break; case NFOSMESA_GLFEEDBACKBUFFERXOES: D(funcname = "glFeedbackBufferxOES"); if (GL_ISAVAILABLE(glFeedbackBufferxOES)) nfglFeedbackBufferxOES( getStackedParameter(0), /* GLsizei n */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const GLfixed *) /* const GLfixed *buffer */); break; case NFOSMESA_GLFENCESYNC: D(funcname = "glFenceSync"); if (GL_ISAVAILABLE(glFenceSync)) ret = (uint32)(uintptr_t)nfglFenceSync( getStackedParameter(0), /* GLenum condition */ getStackedParameter(1) /* GLbitfield flags */); break; case NFOSMESA_GLFINALCOMBINERINPUTNV: D(funcname = "glFinalCombinerInputNV"); if (GL_ISAVAILABLE(glFinalCombinerInputNV)) nfglFinalCombinerInputNV( getStackedParameter(0), /* GLenum variable */ getStackedParameter(1), /* GLenum input */ getStackedParameter(2), /* GLenum mapping */ getStackedParameter(3) /* GLenum componentUsage */); break; case NFOSMESA_GLFINISH: D(funcname = "glFinish"); if (GL_ISAVAILABLE(glFinish)) nfglFinish(); break; case NFOSMESA_GLFINISHASYNCSGIX: D(funcname = "glFinishAsyncSGIX"); if (GL_ISAVAILABLE(glFinishAsyncSGIX)) ret = nfglFinishAsyncSGIX( getStackedPointer(0, GLuint *) /* GLuint *markerp */); break; case NFOSMESA_GLFINISHFENCEAPPLE: D(funcname = "glFinishFenceAPPLE"); if (GL_ISAVAILABLE(glFinishFenceAPPLE)) nfglFinishFenceAPPLE( getStackedParameter(0) /* GLuint fence */); break; case NFOSMESA_GLFINISHFENCENV: D(funcname = "glFinishFenceNV"); if (GL_ISAVAILABLE(glFinishFenceNV)) nfglFinishFenceNV( getStackedParameter(0) /* GLuint fence */); break; case NFOSMESA_GLFINISHOBJECTAPPLE: D(funcname = "glFinishObjectAPPLE"); if (GL_ISAVAILABLE(glFinishObjectAPPLE)) nfglFinishObjectAPPLE( getStackedParameter(0), /* GLenum object */ getStackedParameter(1) /* GLuint name */); break; case NFOSMESA_GLFINISHRENDERAPPLE: D(funcname = "glFinishRenderAPPLE"); if (GL_ISAVAILABLE(glFinishRenderAPPLE)) nfglFinishRenderAPPLE(); break; case NFOSMESA_GLFINISHTEXTURESUNX: D(funcname = "glFinishTextureSUNX"); if (GL_ISAVAILABLE(glFinishTextureSUNX)) nfglFinishTextureSUNX(); break; case NFOSMESA_GLFLUSH: D(funcname = "glFlush"); if (GL_ISAVAILABLE(glFlush)) nfglFlush(); break; case NFOSMESA_GLFLUSHMAPPEDBUFFERRANGE: D(funcname = "glFlushMappedBufferRange"); if (GL_ISAVAILABLE(glFlushMappedBufferRange)) nfglFlushMappedBufferRange( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2) /* GLsizeiptr length */); break; case NFOSMESA_GLFLUSHMAPPEDBUFFERRANGEAPPLE: D(funcname = "glFlushMappedBufferRangeAPPLE"); if (GL_ISAVAILABLE(glFlushMappedBufferRangeAPPLE)) nfglFlushMappedBufferRangeAPPLE( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2) /* GLsizeiptr size */); break; case NFOSMESA_GLFLUSHMAPPEDNAMEDBUFFERRANGE: D(funcname = "glFlushMappedNamedBufferRange"); if (GL_ISAVAILABLE(glFlushMappedNamedBufferRange)) nfglFlushMappedNamedBufferRange( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2) /* GLsizeiptr length */); break; case NFOSMESA_GLFLUSHMAPPEDNAMEDBUFFERRANGEEXT: D(funcname = "glFlushMappedNamedBufferRangeEXT"); if (GL_ISAVAILABLE(glFlushMappedNamedBufferRangeEXT)) nfglFlushMappedNamedBufferRangeEXT( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2) /* GLsizeiptr length */); break; case NFOSMESA_GLFLUSHPIXELDATARANGENV: D(funcname = "glFlushPixelDataRangeNV"); if (GL_ISAVAILABLE(glFlushPixelDataRangeNV)) nfglFlushPixelDataRangeNV( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLFLUSHRASTERSGIX: D(funcname = "glFlushRasterSGIX"); if (GL_ISAVAILABLE(glFlushRasterSGIX)) nfglFlushRasterSGIX(); break; case NFOSMESA_GLFLUSHRENDERAPPLE: D(funcname = "glFlushRenderAPPLE"); if (GL_ISAVAILABLE(glFlushRenderAPPLE)) nfglFlushRenderAPPLE(); break; case NFOSMESA_GLFLUSHSTATICDATAIBM: D(funcname = "glFlushStaticDataIBM"); if (GL_ISAVAILABLE(glFlushStaticDataIBM)) nfglFlushStaticDataIBM( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLFLUSHVERTEXARRAYRANGEAPPLE: D(funcname = "glFlushVertexArrayRangeAPPLE"); if (GL_ISAVAILABLE(glFlushVertexArrayRangeAPPLE)) nfglFlushVertexArrayRangeAPPLE( getStackedParameter(0), /* GLsizei length */ getStackedPointer(1, void *) /* void *pointer */); break; case NFOSMESA_GLFLUSHVERTEXARRAYRANGENV: D(funcname = "glFlushVertexArrayRangeNV"); if (GL_ISAVAILABLE(glFlushVertexArrayRangeNV)) nfglFlushVertexArrayRangeNV(); break; case NFOSMESA_GLFOGCOORDFORMATNV: D(funcname = "glFogCoordFormatNV"); if (GL_ISAVAILABLE(glFogCoordFormatNV)) nfglFogCoordFormatNV( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLsizei stride */); break; case NFOSMESA_GLFOGCOORDPOINTER: D(funcname = "glFogCoordPointer"); if (GL_ISAVAILABLE(glFogCoordPointer)) nfglFogCoordPointer( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLsizei stride */ getStackedPointer(2, const void *) /* const void *pointer */); break; case NFOSMESA_GLFOGCOORDPOINTEREXT: D(funcname = "glFogCoordPointerEXT"); if (GL_ISAVAILABLE(glFogCoordPointerEXT)) nfglFogCoordPointerEXT( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLsizei stride */ getStackedPointer(2, const void *) /* const void *pointer */); break; case NFOSMESA_GLFOGCOORDPOINTERLISTIBM: D(funcname = "glFogCoordPointerListIBM"); if (GL_ISAVAILABLE(glFogCoordPointerListIBM)) nfglFogCoordPointerListIBM( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLint stride */ getStackedPointer(2, const void * *), /* const void * *pointer */ getStackedParameter(3) /* GLint ptrstride */); break; case NFOSMESA_GLFOGCOORDD: D(funcname = "glFogCoordd"); if (GL_ISAVAILABLE(glFogCoordd)) nfglFogCoordd( getStackedDouble(0) /* GLdouble coord */); break; case NFOSMESA_GLFOGCOORDDEXT: D(funcname = "glFogCoorddEXT"); if (GL_ISAVAILABLE(glFogCoorddEXT)) nfglFogCoorddEXT( getStackedDouble(0) /* GLdouble coord */); break; case NFOSMESA_GLFOGCOORDDV: D(funcname = "glFogCoorddv"); if (GL_ISAVAILABLE(glFogCoorddv)) nfglFogCoorddv( getStackedPointer(0, const GLdouble *) /* const GLdouble *coord */); break; case NFOSMESA_GLFOGCOORDDVEXT: D(funcname = "glFogCoorddvEXT"); if (GL_ISAVAILABLE(glFogCoorddvEXT)) nfglFogCoorddvEXT( getStackedPointer(0, const GLdouble *) /* const GLdouble *coord */); break; case NFOSMESA_GLFOGCOORDF: D(funcname = "glFogCoordf"); if (GL_ISAVAILABLE(glFogCoordf)) nfglFogCoordf( getStackedFloat(0) /* GLfloat coord */); break; case NFOSMESA_GLFOGCOORDFEXT: D(funcname = "glFogCoordfEXT"); if (GL_ISAVAILABLE(glFogCoordfEXT)) nfglFogCoordfEXT( getStackedFloat(0) /* GLfloat coord */); break; case NFOSMESA_GLFOGCOORDFV: D(funcname = "glFogCoordfv"); if (GL_ISAVAILABLE(glFogCoordfv)) nfglFogCoordfv( getStackedPointer(0, const GLfloat *) /* const GLfloat *coord */); break; case NFOSMESA_GLFOGCOORDFVEXT: D(funcname = "glFogCoordfvEXT"); if (GL_ISAVAILABLE(glFogCoordfvEXT)) nfglFogCoordfvEXT( getStackedPointer(0, const GLfloat *) /* const GLfloat *coord */); break; case NFOSMESA_GLFOGCOORDHNV: D(funcname = "glFogCoordhNV"); if (GL_ISAVAILABLE(glFogCoordhNV)) nfglFogCoordhNV( getStackedParameter(0) /* GLhalfNV32 fog */); break; case NFOSMESA_GLFOGCOORDHVNV: D(funcname = "glFogCoordhvNV"); if (GL_ISAVAILABLE(glFogCoordhvNV)) nfglFogCoordhvNV( getStackedPointer(0, const GLhalfNV *) /* const GLhalfNV *fog */); break; case NFOSMESA_GLFOGFUNCSGIS: D(funcname = "glFogFuncSGIS"); if (GL_ISAVAILABLE(glFogFuncSGIS)) nfglFogFuncSGIS( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLfloat *) /* const GLfloat *points */); break; case NFOSMESA_GLFOGF: D(funcname = "glFogf"); if (GL_ISAVAILABLE(glFogf)) nfglFogf( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat param */); break; case NFOSMESA_GLFOGFV: D(funcname = "glFogfv"); if (GL_ISAVAILABLE(glFogfv)) nfglFogfv( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLFOGI: D(funcname = "glFogi"); if (GL_ISAVAILABLE(glFogi)) nfglFogi( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLFOGIV: D(funcname = "glFogiv"); if (GL_ISAVAILABLE(glFogiv)) nfglFogiv( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLFOGXOES: D(funcname = "glFogxOES"); if (GL_ISAVAILABLE(glFogxOES)) nfglFogxOES( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLfixed param */); break; case NFOSMESA_GLFOGXVOES: D(funcname = "glFogxvOES"); if (GL_ISAVAILABLE(glFogxvOES)) nfglFogxvOES( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfixed *) /* const GLfixed *param */); break; case NFOSMESA_GLFRAGMENTCOLORMATERIALSGIX: D(funcname = "glFragmentColorMaterialSGIX"); if (GL_ISAVAILABLE(glFragmentColorMaterialSGIX)) nfglFragmentColorMaterialSGIX( getStackedParameter(0), /* GLenum face */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLFRAGMENTCOVERAGECOLORNV: D(funcname = "glFragmentCoverageColorNV"); if (GL_ISAVAILABLE(glFragmentCoverageColorNV)) nfglFragmentCoverageColorNV( getStackedParameter(0) /* GLuint color */); break; case NFOSMESA_GLFRAGMENTLIGHTMODELFSGIX: D(funcname = "glFragmentLightModelfSGIX"); if (GL_ISAVAILABLE(glFragmentLightModelfSGIX)) nfglFragmentLightModelfSGIX( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat param */); break; case NFOSMESA_GLFRAGMENTLIGHTMODELFVSGIX: D(funcname = "glFragmentLightModelfvSGIX"); if (GL_ISAVAILABLE(glFragmentLightModelfvSGIX)) nfglFragmentLightModelfvSGIX( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLFRAGMENTLIGHTMODELISGIX: D(funcname = "glFragmentLightModeliSGIX"); if (GL_ISAVAILABLE(glFragmentLightModeliSGIX)) nfglFragmentLightModeliSGIX( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLFRAGMENTLIGHTMODELIVSGIX: D(funcname = "glFragmentLightModelivSGIX"); if (GL_ISAVAILABLE(glFragmentLightModelivSGIX)) nfglFragmentLightModelivSGIX( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLFRAGMENTLIGHTFSGIX: D(funcname = "glFragmentLightfSGIX"); if (GL_ISAVAILABLE(glFragmentLightfSGIX)) nfglFragmentLightfSGIX( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat param */); break; case NFOSMESA_GLFRAGMENTLIGHTFVSGIX: D(funcname = "glFragmentLightfvSGIX"); if (GL_ISAVAILABLE(glFragmentLightfvSGIX)) nfglFragmentLightfvSGIX( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLFRAGMENTLIGHTISGIX: D(funcname = "glFragmentLightiSGIX"); if (GL_ISAVAILABLE(glFragmentLightiSGIX)) nfglFragmentLightiSGIX( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLFRAGMENTLIGHTIVSGIX: D(funcname = "glFragmentLightivSGIX"); if (GL_ISAVAILABLE(glFragmentLightivSGIX)) nfglFragmentLightivSGIX( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLFRAGMENTMATERIALFSGIX: D(funcname = "glFragmentMaterialfSGIX"); if (GL_ISAVAILABLE(glFragmentMaterialfSGIX)) nfglFragmentMaterialfSGIX( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat param */); break; case NFOSMESA_GLFRAGMENTMATERIALFVSGIX: D(funcname = "glFragmentMaterialfvSGIX"); if (GL_ISAVAILABLE(glFragmentMaterialfvSGIX)) nfglFragmentMaterialfvSGIX( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLFRAGMENTMATERIALISGIX: D(funcname = "glFragmentMaterialiSGIX"); if (GL_ISAVAILABLE(glFragmentMaterialiSGIX)) nfglFragmentMaterialiSGIX( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLFRAGMENTMATERIALIVSGIX: D(funcname = "glFragmentMaterialivSGIX"); if (GL_ISAVAILABLE(glFragmentMaterialivSGIX)) nfglFragmentMaterialivSGIX( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLFRAMETERMINATORGREMEDY: D(funcname = "glFrameTerminatorGREMEDY"); if (GL_ISAVAILABLE(glFrameTerminatorGREMEDY)) nfglFrameTerminatorGREMEDY(); break; case NFOSMESA_GLFRAMEZOOMSGIX: D(funcname = "glFrameZoomSGIX"); if (GL_ISAVAILABLE(glFrameZoomSGIX)) nfglFrameZoomSGIX( getStackedParameter(0) /* GLint factor */); break; case NFOSMESA_GLFRAMEBUFFERDRAWBUFFEREXT: D(funcname = "glFramebufferDrawBufferEXT"); if (GL_ISAVAILABLE(glFramebufferDrawBufferEXT)) nfglFramebufferDrawBufferEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLFRAMEBUFFERDRAWBUFFERSEXT: D(funcname = "glFramebufferDrawBuffersEXT"); if (GL_ISAVAILABLE(glFramebufferDrawBuffersEXT)) nfglFramebufferDrawBuffersEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLsizei n */ getStackedPointer(2, const GLenum *) /* const GLenum *bufs */); break; case NFOSMESA_GLFRAMEBUFFERPARAMETERI: D(funcname = "glFramebufferParameteri"); if (GL_ISAVAILABLE(glFramebufferParameteri)) nfglFramebufferParameteri( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLFRAMEBUFFERREADBUFFEREXT: D(funcname = "glFramebufferReadBufferEXT"); if (GL_ISAVAILABLE(glFramebufferReadBufferEXT)) nfglFramebufferReadBufferEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLFRAMEBUFFERRENDERBUFFER: D(funcname = "glFramebufferRenderbuffer"); if (GL_ISAVAILABLE(glFramebufferRenderbuffer)) nfglFramebufferRenderbuffer( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum renderbuffertarget */ getStackedParameter(3) /* GLuint renderbuffer */); break; case NFOSMESA_GLFRAMEBUFFERRENDERBUFFEREXT: D(funcname = "glFramebufferRenderbufferEXT"); if (GL_ISAVAILABLE(glFramebufferRenderbufferEXT)) nfglFramebufferRenderbufferEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum renderbuffertarget */ getStackedParameter(3) /* GLuint renderbuffer */); break; case NFOSMESA_GLFRAMEBUFFERSAMPLELOCATIONSFVARB: D(funcname = "glFramebufferSampleLocationsfvARB"); if (GL_ISAVAILABLE(glFramebufferSampleLocationsfvARB)) nfglFramebufferSampleLocationsfvARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint start */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLFRAMEBUFFERSAMPLELOCATIONSFVNV: D(funcname = "glFramebufferSampleLocationsfvNV"); if (GL_ISAVAILABLE(glFramebufferSampleLocationsfvNV)) nfglFramebufferSampleLocationsfvNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint start */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLFRAMEBUFFERSAMPLEPOSITIONSFVAMD: D(funcname = "glFramebufferSamplePositionsfvAMD"); if (GL_ISAVAILABLE(glFramebufferSamplePositionsfvAMD)) nfglFramebufferSamplePositionsfvAMD( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint numsamples */ getStackedParameter(2), /* GLuint pixelindex */ getStackedPointer(3, const GLfloat *) /* const GLfloat *values */); break; case NFOSMESA_GLFRAMEBUFFERTEXTURE: D(funcname = "glFramebufferTexture"); if (GL_ISAVAILABLE(glFramebufferTexture)) nfglFramebufferTexture( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLuint texture */ getStackedParameter(3) /* GLint level */); break; case NFOSMESA_GLFRAMEBUFFERTEXTURE1D: D(funcname = "glFramebufferTexture1D"); if (GL_ISAVAILABLE(glFramebufferTexture1D)) nfglFramebufferTexture1D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum textarget */ getStackedParameter(3), /* GLuint texture */ getStackedParameter(4) /* GLint level */); break; case NFOSMESA_GLFRAMEBUFFERTEXTURE1DEXT: D(funcname = "glFramebufferTexture1DEXT"); if (GL_ISAVAILABLE(glFramebufferTexture1DEXT)) nfglFramebufferTexture1DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum textarget */ getStackedParameter(3), /* GLuint texture */ getStackedParameter(4) /* GLint level */); break; case NFOSMESA_GLFRAMEBUFFERTEXTURE2D: D(funcname = "glFramebufferTexture2D"); if (GL_ISAVAILABLE(glFramebufferTexture2D)) nfglFramebufferTexture2D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum textarget */ getStackedParameter(3), /* GLuint texture */ getStackedParameter(4) /* GLint level */); break; case NFOSMESA_GLFRAMEBUFFERTEXTURE2DEXT: D(funcname = "glFramebufferTexture2DEXT"); if (GL_ISAVAILABLE(glFramebufferTexture2DEXT)) nfglFramebufferTexture2DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum textarget */ getStackedParameter(3), /* GLuint texture */ getStackedParameter(4) /* GLint level */); break; case NFOSMESA_GLFRAMEBUFFERTEXTURE3D: D(funcname = "glFramebufferTexture3D"); if (GL_ISAVAILABLE(glFramebufferTexture3D)) nfglFramebufferTexture3D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum textarget */ getStackedParameter(3), /* GLuint texture */ getStackedParameter(4), /* GLint level */ getStackedParameter(5) /* GLint zoffset */); break; case NFOSMESA_GLFRAMEBUFFERTEXTURE3DEXT: D(funcname = "glFramebufferTexture3DEXT"); if (GL_ISAVAILABLE(glFramebufferTexture3DEXT)) nfglFramebufferTexture3DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum textarget */ getStackedParameter(3), /* GLuint texture */ getStackedParameter(4), /* GLint level */ getStackedParameter(5) /* GLint zoffset */); break; case NFOSMESA_GLFRAMEBUFFERTEXTUREARB: D(funcname = "glFramebufferTextureARB"); if (GL_ISAVAILABLE(glFramebufferTextureARB)) nfglFramebufferTextureARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLuint texture */ getStackedParameter(3) /* GLint level */); break; case NFOSMESA_GLFRAMEBUFFERTEXTUREEXT: D(funcname = "glFramebufferTextureEXT"); if (GL_ISAVAILABLE(glFramebufferTextureEXT)) nfglFramebufferTextureEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLuint texture */ getStackedParameter(3) /* GLint level */); break; case NFOSMESA_GLFRAMEBUFFERTEXTUREFACEARB: D(funcname = "glFramebufferTextureFaceARB"); if (GL_ISAVAILABLE(glFramebufferTextureFaceARB)) nfglFramebufferTextureFaceARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLuint texture */ getStackedParameter(3), /* GLint level */ getStackedParameter(4) /* GLenum face */); break; case NFOSMESA_GLFRAMEBUFFERTEXTUREFACEEXT: D(funcname = "glFramebufferTextureFaceEXT"); if (GL_ISAVAILABLE(glFramebufferTextureFaceEXT)) nfglFramebufferTextureFaceEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLuint texture */ getStackedParameter(3), /* GLint level */ getStackedParameter(4) /* GLenum face */); break; case NFOSMESA_GLFRAMEBUFFERTEXTURELAYER: D(funcname = "glFramebufferTextureLayer"); if (GL_ISAVAILABLE(glFramebufferTextureLayer)) nfglFramebufferTextureLayer( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLuint texture */ getStackedParameter(3), /* GLint level */ getStackedParameter(4) /* GLint layer */); break; case NFOSMESA_GLFRAMEBUFFERTEXTURELAYERARB: D(funcname = "glFramebufferTextureLayerARB"); if (GL_ISAVAILABLE(glFramebufferTextureLayerARB)) nfglFramebufferTextureLayerARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLuint texture */ getStackedParameter(3), /* GLint level */ getStackedParameter(4) /* GLint layer */); break; case NFOSMESA_GLFRAMEBUFFERTEXTURELAYEREXT: D(funcname = "glFramebufferTextureLayerEXT"); if (GL_ISAVAILABLE(glFramebufferTextureLayerEXT)) nfglFramebufferTextureLayerEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLuint texture */ getStackedParameter(3), /* GLint level */ getStackedParameter(4) /* GLint layer */); break; case NFOSMESA_GLFRAMEBUFFERTEXTUREMULTIVIEWOVR: D(funcname = "glFramebufferTextureMultiviewOVR"); if (GL_ISAVAILABLE(glFramebufferTextureMultiviewOVR)) nfglFramebufferTextureMultiviewOVR( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLuint texture */ getStackedParameter(3), /* GLint level */ getStackedParameter(4), /* GLint baseViewIndex */ getStackedParameter(5) /* GLsizei numViews */); break; case NFOSMESA_GLFREEOBJECTBUFFERATI: D(funcname = "glFreeObjectBufferATI"); if (GL_ISAVAILABLE(glFreeObjectBufferATI)) nfglFreeObjectBufferATI( getStackedParameter(0) /* GLuint buffer */); break; case NFOSMESA_GLFRONTFACE: D(funcname = "glFrontFace"); if (GL_ISAVAILABLE(glFrontFace)) nfglFrontFace( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLFRUSTUM: D(funcname = "glFrustum"); if (GL_ISAVAILABLE(glFrustum)) nfglFrustum( getStackedDouble(0), /* GLdouble left */ getStackedDouble(2), /* GLdouble right */ getStackedDouble(4), /* GLdouble bottom */ getStackedDouble(6), /* GLdouble top */ getStackedDouble(8), /* GLdouble zNear */ getStackedDouble(10) /* GLdouble zFar */); break; case NFOSMESA_GLFRUSTUMFOES: D(funcname = "glFrustumfOES"); if (GL_ISAVAILABLE(glFrustumfOES)) nfglFrustumfOES( getStackedFloat(0), /* GLfloat l */ getStackedFloat(1), /* GLfloat r */ getStackedFloat(2), /* GLfloat b */ getStackedFloat(3), /* GLfloat t */ getStackedFloat(4), /* GLfloat n */ getStackedFloat(5) /* GLfloat f */); break; case NFOSMESA_GLFRUSTUMXOES: D(funcname = "glFrustumxOES"); if (GL_ISAVAILABLE(glFrustumxOES)) nfglFrustumxOES( getStackedParameter(0), /* GLfixed l */ getStackedParameter(1), /* GLfixed r */ getStackedParameter(2), /* GLfixed b */ getStackedParameter(3), /* GLfixed t */ getStackedParameter(4), /* GLfixed n */ getStackedParameter(5) /* GLfixed f */); break; case NFOSMESA_GLGENASYNCMARKERSSGIX: D(funcname = "glGenAsyncMarkersSGIX"); if (GL_ISAVAILABLE(glGenAsyncMarkersSGIX)) ret = nfglGenAsyncMarkersSGIX( getStackedParameter(0) /* GLsizei range */); break; case NFOSMESA_GLGENBUFFERS: D(funcname = "glGenBuffers"); if (GL_ISAVAILABLE(glGenBuffers)) nfglGenBuffers( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *buffers */); break; case NFOSMESA_GLGENBUFFERSARB: D(funcname = "glGenBuffersARB"); if (GL_ISAVAILABLE(glGenBuffersARB)) nfglGenBuffersARB( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *buffers */); break; case NFOSMESA_GLGENFENCESAPPLE: D(funcname = "glGenFencesAPPLE"); if (GL_ISAVAILABLE(glGenFencesAPPLE)) nfglGenFencesAPPLE( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *fences */); break; case NFOSMESA_GLGENFENCESNV: D(funcname = "glGenFencesNV"); if (GL_ISAVAILABLE(glGenFencesNV)) nfglGenFencesNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *fences */); break; case NFOSMESA_GLGENFRAGMENTSHADERSATI: D(funcname = "glGenFragmentShadersATI"); if (GL_ISAVAILABLE(glGenFragmentShadersATI)) ret = nfglGenFragmentShadersATI( getStackedParameter(0) /* GLuint range */); break; case NFOSMESA_GLGENFRAMEBUFFERS: D(funcname = "glGenFramebuffers"); if (GL_ISAVAILABLE(glGenFramebuffers)) nfglGenFramebuffers( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *framebuffers */); break; case NFOSMESA_GLGENFRAMEBUFFERSEXT: D(funcname = "glGenFramebuffersEXT"); if (GL_ISAVAILABLE(glGenFramebuffersEXT)) nfglGenFramebuffersEXT( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *framebuffers */); break; case NFOSMESA_GLGENLISTS: D(funcname = "glGenLists"); if (GL_ISAVAILABLE(glGenLists)) ret = nfglGenLists( getStackedParameter(0) /* GLsizei range */); break; case NFOSMESA_GLGENNAMESAMD: D(funcname = "glGenNamesAMD"); if (GL_ISAVAILABLE(glGenNamesAMD)) nfglGenNamesAMD( getStackedParameter(0), /* GLenum identifier */ getStackedParameter(1), /* GLuint num */ getStackedPointer(2, GLuint *) /* GLuint *names */); break; case NFOSMESA_GLGENOCCLUSIONQUERIESNV: D(funcname = "glGenOcclusionQueriesNV"); if (GL_ISAVAILABLE(glGenOcclusionQueriesNV)) nfglGenOcclusionQueriesNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *ids */); break; case NFOSMESA_GLGENPATHSNV: D(funcname = "glGenPathsNV"); if (GL_ISAVAILABLE(glGenPathsNV)) ret = nfglGenPathsNV( getStackedParameter(0) /* GLsizei range */); break; case NFOSMESA_GLGENPERFMONITORSAMD: D(funcname = "glGenPerfMonitorsAMD"); if (GL_ISAVAILABLE(glGenPerfMonitorsAMD)) nfglGenPerfMonitorsAMD( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *monitors */); break; case NFOSMESA_GLGENPROGRAMPIPELINES: D(funcname = "glGenProgramPipelines"); if (GL_ISAVAILABLE(glGenProgramPipelines)) nfglGenProgramPipelines( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *pipelines */); break; case NFOSMESA_GLGENPROGRAMSARB: D(funcname = "glGenProgramsARB"); if (GL_ISAVAILABLE(glGenProgramsARB)) nfglGenProgramsARB( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *programs */); break; case NFOSMESA_GLGENPROGRAMSNV: D(funcname = "glGenProgramsNV"); if (GL_ISAVAILABLE(glGenProgramsNV)) nfglGenProgramsNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *programs */); break; case NFOSMESA_GLGENQUERIES: D(funcname = "glGenQueries"); if (GL_ISAVAILABLE(glGenQueries)) nfglGenQueries( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *ids */); break; case NFOSMESA_GLGENQUERIESARB: D(funcname = "glGenQueriesARB"); if (GL_ISAVAILABLE(glGenQueriesARB)) nfglGenQueriesARB( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *ids */); break; case NFOSMESA_GLGENQUERYRESOURCETAGNV: D(funcname = "glGenQueryResourceTagNV"); if (GL_ISAVAILABLE(glGenQueryResourceTagNV)) nfglGenQueryResourceTagNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLint *) /* GLint *tagIds */); break; case NFOSMESA_GLGENRENDERBUFFERS: D(funcname = "glGenRenderbuffers"); if (GL_ISAVAILABLE(glGenRenderbuffers)) nfglGenRenderbuffers( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *renderbuffers */); break; case NFOSMESA_GLGENRENDERBUFFERSEXT: D(funcname = "glGenRenderbuffersEXT"); if (GL_ISAVAILABLE(glGenRenderbuffersEXT)) nfglGenRenderbuffersEXT( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *renderbuffers */); break; case NFOSMESA_GLGENSAMPLERS: D(funcname = "glGenSamplers"); if (GL_ISAVAILABLE(glGenSamplers)) nfglGenSamplers( getStackedParameter(0), /* GLsizei count */ getStackedPointer(1, GLuint *) /* GLuint *samplers */); break; case NFOSMESA_GLGENSEMAPHORESEXT: D(funcname = "glGenSemaphoresEXT"); if (GL_ISAVAILABLE(glGenSemaphoresEXT)) nfglGenSemaphoresEXT( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *semaphores */); break; case NFOSMESA_GLGENSYMBOLSEXT: D(funcname = "glGenSymbolsEXT"); if (GL_ISAVAILABLE(glGenSymbolsEXT)) ret = nfglGenSymbolsEXT( getStackedParameter(0), /* GLenum datatype */ getStackedParameter(1), /* GLenum storagetype */ getStackedParameter(2), /* GLenum range */ getStackedParameter(3) /* GLuint components */); break; case NFOSMESA_GLGENTEXTURES: D(funcname = "glGenTextures"); if (GL_ISAVAILABLE(glGenTextures)) nfglGenTextures( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *textures */); break; case NFOSMESA_GLGENTEXTURESEXT: D(funcname = "glGenTexturesEXT"); if (GL_ISAVAILABLE(glGenTexturesEXT)) nfglGenTexturesEXT( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *textures */); break; case NFOSMESA_GLGENTRANSFORMFEEDBACKS: D(funcname = "glGenTransformFeedbacks"); if (GL_ISAVAILABLE(glGenTransformFeedbacks)) nfglGenTransformFeedbacks( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *ids */); break; case NFOSMESA_GLGENTRANSFORMFEEDBACKSNV: D(funcname = "glGenTransformFeedbacksNV"); if (GL_ISAVAILABLE(glGenTransformFeedbacksNV)) nfglGenTransformFeedbacksNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *ids */); break; case NFOSMESA_GLGENVERTEXARRAYS: D(funcname = "glGenVertexArrays"); if (GL_ISAVAILABLE(glGenVertexArrays)) nfglGenVertexArrays( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *arrays */); break; case NFOSMESA_GLGENVERTEXARRAYSAPPLE: D(funcname = "glGenVertexArraysAPPLE"); if (GL_ISAVAILABLE(glGenVertexArraysAPPLE)) nfglGenVertexArraysAPPLE( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, GLuint *) /* GLuint *arrays */); break; case NFOSMESA_GLGENVERTEXSHADERSEXT: D(funcname = "glGenVertexShadersEXT"); if (GL_ISAVAILABLE(glGenVertexShadersEXT)) ret = nfglGenVertexShadersEXT( getStackedParameter(0) /* GLuint range */); break; case NFOSMESA_GLGENERATEMIPMAP: D(funcname = "glGenerateMipmap"); if (GL_ISAVAILABLE(glGenerateMipmap)) nfglGenerateMipmap( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLGENERATEMIPMAPEXT: D(funcname = "glGenerateMipmapEXT"); if (GL_ISAVAILABLE(glGenerateMipmapEXT)) nfglGenerateMipmapEXT( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLGENERATEMULTITEXMIPMAPEXT: D(funcname = "glGenerateMultiTexMipmapEXT"); if (GL_ISAVAILABLE(glGenerateMultiTexMipmapEXT)) nfglGenerateMultiTexMipmapEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1) /* GLenum target */); break; case NFOSMESA_GLGENERATETEXTUREMIPMAP: D(funcname = "glGenerateTextureMipmap"); if (GL_ISAVAILABLE(glGenerateTextureMipmap)) nfglGenerateTextureMipmap( getStackedParameter(0) /* GLuint texture */); break; case NFOSMESA_GLGENERATETEXTUREMIPMAPEXT: D(funcname = "glGenerateTextureMipmapEXT"); if (GL_ISAVAILABLE(glGenerateTextureMipmapEXT)) nfglGenerateTextureMipmapEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1) /* GLenum target */); break; case NFOSMESA_GLGETACTIVEATOMICCOUNTERBUFFERIV: D(funcname = "glGetActiveAtomicCounterBufferiv"); if (GL_ISAVAILABLE(glGetActiveAtomicCounterBufferiv)) nfglGetActiveAtomicCounterBufferiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint bufferIndex */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETACTIVEATTRIB: D(funcname = "glGetActiveAttrib"); if (GL_ISAVAILABLE(glGetActiveAttrib)) nfglGetActiveAttrib( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLsizei *), /* GLsizei *length */ getStackedPointer(4, GLint *), /* GLint *size */ getStackedPointer(5, GLenum *), /* GLenum *type */ getStackedPointer(6, GLchar *) /* GLchar *name */); break; case NFOSMESA_GLGETACTIVEATTRIBARB: D(funcname = "glGetActiveAttribARB"); if (GL_ISAVAILABLE(glGetActiveAttribARB)) nfglGetActiveAttribARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB programObj */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei maxLength */ getStackedPointer(3, GLsizei *), /* GLsizei *length */ getStackedPointer(4, GLint *), /* GLint *size */ getStackedPointer(5, GLenum *), /* GLenum *type */ getStackedPointer(6, GLcharARB *) /* GLcharARB *name */); break; case NFOSMESA_GLGETACTIVESUBROUTINENAME: D(funcname = "glGetActiveSubroutineName"); if (GL_ISAVAILABLE(glGetActiveSubroutineName)) nfglGetActiveSubroutineName( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum shadertype */ getStackedParameter(2), /* GLuint index */ getStackedParameter(3), /* GLsizei bufsize */ getStackedPointer(4, GLsizei *), /* GLsizei *length */ getStackedPointer(5, GLchar *) /* GLchar *name */); break; case NFOSMESA_GLGETACTIVESUBROUTINEUNIFORMNAME: D(funcname = "glGetActiveSubroutineUniformName"); if (GL_ISAVAILABLE(glGetActiveSubroutineUniformName)) nfglGetActiveSubroutineUniformName( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum shadertype */ getStackedParameter(2), /* GLuint index */ getStackedParameter(3), /* GLsizei bufsize */ getStackedPointer(4, GLsizei *), /* GLsizei *length */ getStackedPointer(5, GLchar *) /* GLchar *name */); break; case NFOSMESA_GLGETACTIVESUBROUTINEUNIFORMIV: D(funcname = "glGetActiveSubroutineUniformiv"); if (GL_ISAVAILABLE(glGetActiveSubroutineUniformiv)) nfglGetActiveSubroutineUniformiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum shadertype */ getStackedParameter(2), /* GLuint index */ getStackedParameter(3), /* GLenum pname */ getStackedPointer(4, GLint *) /* GLint *values */); break; case NFOSMESA_GLGETACTIVEUNIFORM: D(funcname = "glGetActiveUniform"); if (GL_ISAVAILABLE(glGetActiveUniform)) nfglGetActiveUniform( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLsizei *), /* GLsizei *length */ getStackedPointer(4, GLint *), /* GLint *size */ getStackedPointer(5, GLenum *), /* GLenum *type */ getStackedPointer(6, GLchar *) /* GLchar *name */); break; case NFOSMESA_GLGETACTIVEUNIFORMARB: D(funcname = "glGetActiveUniformARB"); if (GL_ISAVAILABLE(glGetActiveUniformARB)) nfglGetActiveUniformARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB programObj */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei maxLength */ getStackedPointer(3, GLsizei *), /* GLsizei *length */ getStackedPointer(4, GLint *), /* GLint *size */ getStackedPointer(5, GLenum *), /* GLenum *type */ getStackedPointer(6, GLcharARB *) /* GLcharARB *name */); break; case NFOSMESA_GLGETACTIVEUNIFORMBLOCKINDEX: D(funcname = "glGetActiveUniformBlockIndex"); if (GL_ISAVAILABLE(glGetActiveUniformBlockIndex)) ret = nfglGetActiveUniformBlockIndex( getStackedParameter(0), /* GLuint program */ getStackedPointer(1, const GLchar *) /* const GLchar *uniformBlockName */); break; case NFOSMESA_GLGETACTIVEUNIFORMBLOCKNAME: D(funcname = "glGetActiveUniformBlockName"); if (GL_ISAVAILABLE(glGetActiveUniformBlockName)) nfglGetActiveUniformBlockName( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint uniformBlockIndex */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLsizei *), /* GLsizei *length */ getStackedPointer(4, GLchar *) /* GLchar *uniformBlockName */); break; case NFOSMESA_GLGETACTIVEUNIFORMBLOCKIV: D(funcname = "glGetActiveUniformBlockiv"); if (GL_ISAVAILABLE(glGetActiveUniformBlockiv)) nfglGetActiveUniformBlockiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint uniformBlockIndex */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETACTIVEUNIFORMNAME: D(funcname = "glGetActiveUniformName"); if (GL_ISAVAILABLE(glGetActiveUniformName)) nfglGetActiveUniformName( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint uniformIndex */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLsizei *), /* GLsizei *length */ getStackedPointer(4, GLchar *) /* GLchar *uniformName */); break; case NFOSMESA_GLGETACTIVEUNIFORMSIV: D(funcname = "glGetActiveUniformsiv"); if (GL_ISAVAILABLE(glGetActiveUniformsiv)) nfglGetActiveUniformsiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLsizei uniformCount */ getStackedPointer(2, const GLuint *), /* const GLuint *uniformIndices */ getStackedParameter(3), /* GLenum pname */ getStackedPointer(4, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETACTIVEVARYINGNV: D(funcname = "glGetActiveVaryingNV"); if (GL_ISAVAILABLE(glGetActiveVaryingNV)) nfglGetActiveVaryingNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLsizei *), /* GLsizei *length */ getStackedPointer(4, GLsizei *), /* GLsizei *size */ getStackedPointer(5, GLenum *), /* GLenum *type */ getStackedPointer(6, GLchar *) /* GLchar *name */); break; case NFOSMESA_GLGETARRAYOBJECTFVATI: D(funcname = "glGetArrayObjectfvATI"); if (GL_ISAVAILABLE(glGetArrayObjectfvATI)) nfglGetArrayObjectfvATI( getStackedParameter(0), /* GLenum array */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETARRAYOBJECTIVATI: D(funcname = "glGetArrayObjectivATI"); if (GL_ISAVAILABLE(glGetArrayObjectivATI)) nfglGetArrayObjectivATI( getStackedParameter(0), /* GLenum array */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETATTACHEDOBJECTSARB: D(funcname = "glGetAttachedObjectsARB"); if (GL_ISAVAILABLE(glGetAttachedObjectsARB)) nfglGetAttachedObjectsARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB containerObj */ getStackedParameter(1), /* GLsizei maxCount */ getStackedPointer(2, GLsizei *), /* GLsizei *count */ getStackedPointer(3, GLhandleARB *) /* GLhandleARB *obj */); break; case NFOSMESA_GLGETATTACHEDSHADERS: D(funcname = "glGetAttachedShaders"); if (GL_ISAVAILABLE(glGetAttachedShaders)) nfglGetAttachedShaders( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLsizei maxCount */ getStackedPointer(2, GLsizei *), /* GLsizei *count */ getStackedPointer(3, GLuint *) /* GLuint *shaders */); break; case NFOSMESA_GLGETATTRIBLOCATION: D(funcname = "glGetAttribLocation"); if (GL_ISAVAILABLE(glGetAttribLocation)) ret = nfglGetAttribLocation( getStackedParameter(0), /* GLuint program */ getStackedPointer(1, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLGETATTRIBLOCATIONARB: D(funcname = "glGetAttribLocationARB"); if (GL_ISAVAILABLE(glGetAttribLocationARB)) ret = nfglGetAttribLocationARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB programObj */ getStackedPointer(1, const GLcharARB *) /* const GLcharARB *name */); break; case NFOSMESA_GLGETBOOLEANINDEXEDVEXT: D(funcname = "glGetBooleanIndexedvEXT"); if (GL_ISAVAILABLE(glGetBooleanIndexedvEXT)) nfglGetBooleanIndexedvEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLboolean *) /* GLboolean *data */); break; case NFOSMESA_GLGETBOOLEANI_V: D(funcname = "glGetBooleani_v"); if (GL_ISAVAILABLE(glGetBooleani_v)) nfglGetBooleani_v( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLboolean *) /* GLboolean *data */); break; case NFOSMESA_GLGETBOOLEANV: D(funcname = "glGetBooleanv"); if (GL_ISAVAILABLE(glGetBooleanv)) nfglGetBooleanv( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, GLboolean *) /* GLboolean *params */); break; case NFOSMESA_GLGETBUFFERPARAMETERI64V: D(funcname = "glGetBufferParameteri64v"); if (GL_ISAVAILABLE(glGetBufferParameteri64v)) nfglGetBufferParameteri64v( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint64 *) /* GLint64 *params */); break; case NFOSMESA_GLGETBUFFERPARAMETERIV: D(funcname = "glGetBufferParameteriv"); if (GL_ISAVAILABLE(glGetBufferParameteriv)) nfglGetBufferParameteriv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETBUFFERPARAMETERIVARB: D(funcname = "glGetBufferParameterivARB"); if (GL_ISAVAILABLE(glGetBufferParameterivARB)) nfglGetBufferParameterivARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETBUFFERPARAMETERUI64VNV: D(funcname = "glGetBufferParameterui64vNV"); if (GL_ISAVAILABLE(glGetBufferParameterui64vNV)) nfglGetBufferParameterui64vNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint64EXT *) /* GLuint64EXT *params */); break; case NFOSMESA_GLGETBUFFERPOINTERV: D(funcname = "glGetBufferPointerv"); if (GL_ISAVAILABLE(glGetBufferPointerv)) nfglGetBufferPointerv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, void * *) /* void * *params */); break; case NFOSMESA_GLGETBUFFERPOINTERVARB: D(funcname = "glGetBufferPointervARB"); if (GL_ISAVAILABLE(glGetBufferPointervARB)) nfglGetBufferPointervARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, void * *) /* void * *params */); break; #if 0 case NFOSMESA_GLGETBUFFERSUBDATA: D(funcname = "glGetBufferSubData"); if (GL_ISAVAILABLE(glGetBufferSubData)) nfglGetBufferSubData( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2), /* GLsizeiptr size */ getStackedPointer(3, void *) /* void *data */); break; #endif #if 0 case NFOSMESA_GLGETBUFFERSUBDATAARB: D(funcname = "glGetBufferSubDataARB"); if (GL_ISAVAILABLE(glGetBufferSubDataARB)) nfglGetBufferSubDataARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLintptrARB offset */ getStackedParameter(2), /* GLsizeiptrARB size */ getStackedPointer(3, void *) /* void *data */); break; #endif case NFOSMESA_GLGETCLIPPLANE: D(funcname = "glGetClipPlane"); if (GL_ISAVAILABLE(glGetClipPlane)) nfglGetClipPlane( getStackedParameter(0), /* GLenum plane */ getStackedPointer(1, GLdouble *) /* GLdouble *equation */); break; case NFOSMESA_GLGETCLIPPLANEFOES: D(funcname = "glGetClipPlanefOES"); if (GL_ISAVAILABLE(glGetClipPlanefOES)) nfglGetClipPlanefOES( getStackedParameter(0), /* GLenum plane */ getStackedPointer(1, GLfloat *) /* GLfloat *equation */); break; case NFOSMESA_GLGETCLIPPLANEXOES: D(funcname = "glGetClipPlanexOES"); if (GL_ISAVAILABLE(glGetClipPlanexOES)) nfglGetClipPlanexOES( getStackedParameter(0), /* GLenum plane */ getStackedPointer(1, GLfixed *) /* GLfixed *equation */); break; case NFOSMESA_GLGETCOLORTABLE: D(funcname = "glGetColorTable"); if (GL_ISAVAILABLE(glGetColorTable)) nfglGetColorTable( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, void *) /* void *table */); break; case NFOSMESA_GLGETCOLORTABLEEXT: D(funcname = "glGetColorTableEXT"); if (GL_ISAVAILABLE(glGetColorTableEXT)) nfglGetColorTableEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, void *) /* void *data */); break; case NFOSMESA_GLGETCOLORTABLEPARAMETERFV: D(funcname = "glGetColorTableParameterfv"); if (GL_ISAVAILABLE(glGetColorTableParameterfv)) nfglGetColorTableParameterfv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETCOLORTABLEPARAMETERFVEXT: D(funcname = "glGetColorTableParameterfvEXT"); if (GL_ISAVAILABLE(glGetColorTableParameterfvEXT)) nfglGetColorTableParameterfvEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETCOLORTABLEPARAMETERFVSGI: D(funcname = "glGetColorTableParameterfvSGI"); if (GL_ISAVAILABLE(glGetColorTableParameterfvSGI)) nfglGetColorTableParameterfvSGI( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETCOLORTABLEPARAMETERIV: D(funcname = "glGetColorTableParameteriv"); if (GL_ISAVAILABLE(glGetColorTableParameteriv)) nfglGetColorTableParameteriv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETCOLORTABLEPARAMETERIVEXT: D(funcname = "glGetColorTableParameterivEXT"); if (GL_ISAVAILABLE(glGetColorTableParameterivEXT)) nfglGetColorTableParameterivEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETCOLORTABLEPARAMETERIVSGI: D(funcname = "glGetColorTableParameterivSGI"); if (GL_ISAVAILABLE(glGetColorTableParameterivSGI)) nfglGetColorTableParameterivSGI( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETCOLORTABLESGI: D(funcname = "glGetColorTableSGI"); if (GL_ISAVAILABLE(glGetColorTableSGI)) nfglGetColorTableSGI( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, void *) /* void *table */); break; case NFOSMESA_GLGETCOMBINERINPUTPARAMETERFVNV: D(funcname = "glGetCombinerInputParameterfvNV"); if (GL_ISAVAILABLE(glGetCombinerInputParameterfvNV)) nfglGetCombinerInputParameterfvNV( getStackedParameter(0), /* GLenum stage */ getStackedParameter(1), /* GLenum portion */ getStackedParameter(2), /* GLenum variable */ getStackedParameter(3), /* GLenum pname */ getStackedPointer(4, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETCOMBINERINPUTPARAMETERIVNV: D(funcname = "glGetCombinerInputParameterivNV"); if (GL_ISAVAILABLE(glGetCombinerInputParameterivNV)) nfglGetCombinerInputParameterivNV( getStackedParameter(0), /* GLenum stage */ getStackedParameter(1), /* GLenum portion */ getStackedParameter(2), /* GLenum variable */ getStackedParameter(3), /* GLenum pname */ getStackedPointer(4, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETCOMBINEROUTPUTPARAMETERFVNV: D(funcname = "glGetCombinerOutputParameterfvNV"); if (GL_ISAVAILABLE(glGetCombinerOutputParameterfvNV)) nfglGetCombinerOutputParameterfvNV( getStackedParameter(0), /* GLenum stage */ getStackedParameter(1), /* GLenum portion */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETCOMBINEROUTPUTPARAMETERIVNV: D(funcname = "glGetCombinerOutputParameterivNV"); if (GL_ISAVAILABLE(glGetCombinerOutputParameterivNV)) nfglGetCombinerOutputParameterivNV( getStackedParameter(0), /* GLenum stage */ getStackedParameter(1), /* GLenum portion */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETCOMBINERSTAGEPARAMETERFVNV: D(funcname = "glGetCombinerStageParameterfvNV"); if (GL_ISAVAILABLE(glGetCombinerStageParameterfvNV)) nfglGetCombinerStageParameterfvNV( getStackedParameter(0), /* GLenum stage */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETCOMMANDHEADERNV: D(funcname = "glGetCommandHeaderNV"); if (GL_ISAVAILABLE(glGetCommandHeaderNV)) ret = nfglGetCommandHeaderNV( getStackedParameter(0), /* GLenum tokenID */ getStackedParameter(1) /* GLuint size */); break; case NFOSMESA_GLGETCOMPRESSEDMULTITEXIMAGEEXT: D(funcname = "glGetCompressedMultiTexImageEXT"); if (GL_ISAVAILABLE(glGetCompressedMultiTexImageEXT)) nfglGetCompressedMultiTexImageEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint lod */ getStackedPointer(3, void *) /* void *img */); break; case NFOSMESA_GLGETCOMPRESSEDTEXIMAGE: D(funcname = "glGetCompressedTexImage"); if (GL_ISAVAILABLE(glGetCompressedTexImage)) nfglGetCompressedTexImage( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedPointer(2, void *) /* void *img */); break; case NFOSMESA_GLGETCOMPRESSEDTEXIMAGEARB: D(funcname = "glGetCompressedTexImageARB"); if (GL_ISAVAILABLE(glGetCompressedTexImageARB)) nfglGetCompressedTexImageARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedPointer(2, void *) /* void *img */); break; case NFOSMESA_GLGETCOMPRESSEDTEXTUREIMAGE: D(funcname = "glGetCompressedTextureImage"); if (GL_ISAVAILABLE(glGetCompressedTextureImage)) nfglGetCompressedTextureImage( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, void *) /* void *pixels */); break; case NFOSMESA_GLGETCOMPRESSEDTEXTUREIMAGEEXT: D(funcname = "glGetCompressedTextureImageEXT"); if (GL_ISAVAILABLE(glGetCompressedTextureImageEXT)) nfglGetCompressedTextureImageEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint lod */ getStackedPointer(3, void *) /* void *img */); break; case NFOSMESA_GLGETCOMPRESSEDTEXTURESUBIMAGE: D(funcname = "glGetCompressedTextureSubImage"); if (GL_ISAVAILABLE(glGetCompressedTextureSubImage)) nfglGetCompressedTextureSubImage( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLsizei depth */ getStackedParameter(8), /* GLsizei bufSize */ getStackedPointer(9, void *) /* void *pixels */); break; case NFOSMESA_GLGETCONVOLUTIONFILTER: D(funcname = "glGetConvolutionFilter"); if (GL_ISAVAILABLE(glGetConvolutionFilter)) nfglGetConvolutionFilter( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, void *) /* void *image */); break; case NFOSMESA_GLGETCONVOLUTIONFILTEREXT: D(funcname = "glGetConvolutionFilterEXT"); if (GL_ISAVAILABLE(glGetConvolutionFilterEXT)) nfglGetConvolutionFilterEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, void *) /* void *image */); break; case NFOSMESA_GLGETCONVOLUTIONPARAMETERFV: D(funcname = "glGetConvolutionParameterfv"); if (GL_ISAVAILABLE(glGetConvolutionParameterfv)) nfglGetConvolutionParameterfv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETCONVOLUTIONPARAMETERFVEXT: D(funcname = "glGetConvolutionParameterfvEXT"); if (GL_ISAVAILABLE(glGetConvolutionParameterfvEXT)) nfglGetConvolutionParameterfvEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETCONVOLUTIONPARAMETERIV: D(funcname = "glGetConvolutionParameteriv"); if (GL_ISAVAILABLE(glGetConvolutionParameteriv)) nfglGetConvolutionParameteriv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETCONVOLUTIONPARAMETERIVEXT: D(funcname = "glGetConvolutionParameterivEXT"); if (GL_ISAVAILABLE(glGetConvolutionParameterivEXT)) nfglGetConvolutionParameterivEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETCONVOLUTIONPARAMETERXVOES: D(funcname = "glGetConvolutionParameterxvOES"); if (GL_ISAVAILABLE(glGetConvolutionParameterxvOES)) nfglGetConvolutionParameterxvOES( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfixed *) /* GLfixed *params */); break; case NFOSMESA_GLGETCOVERAGEMODULATIONTABLENV: D(funcname = "glGetCoverageModulationTableNV"); if (GL_ISAVAILABLE(glGetCoverageModulationTableNV)) nfglGetCoverageModulationTableNV( getStackedParameter(0), /* GLsizei bufsize */ getStackedPointer(1, GLfloat *) /* GLfloat *v */); break; case NFOSMESA_GLGETDEBUGLOGLENGTHMESA: D(funcname = "glGetDebugLogLengthMESA"); if (GL_ISAVAILABLE(glGetDebugLogLengthMESA)) ret = nfglGetDebugLogLengthMESA( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB obj */ getStackedParameter(1), /* GLenum logType */ getStackedParameter(2) /* GLenum shaderType */); break; case NFOSMESA_GLGETDEBUGLOGMESA: D(funcname = "glGetDebugLogMESA"); if (GL_ISAVAILABLE(glGetDebugLogMESA)) nfglGetDebugLogMESA( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB obj */ getStackedParameter(1), /* GLenum logType */ getStackedParameter(2), /* GLenum shaderType */ getStackedParameter(3), /* GLsizei maxLength */ getStackedPointer(4, GLsizei *), /* GLsizei *length */ getStackedPointer(5, GLcharARB *) /* GLcharARB *debugLog */); break; case NFOSMESA_GLGETDEBUGMESSAGELOG: D(funcname = "glGetDebugMessageLog"); if (GL_ISAVAILABLE(glGetDebugMessageLog)) ret = nfglGetDebugMessageLog( getStackedParameter(0), /* GLuint count */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLenum *), /* GLenum *sources */ getStackedPointer(3, GLenum *), /* GLenum *types */ getStackedPointer(4, GLuint *), /* GLuint *ids */ getStackedPointer(5, GLenum *), /* GLenum *severities */ getStackedPointer(6, GLsizei *), /* GLsizei *lengths */ getStackedPointer(7, GLchar *) /* GLchar *messageLog */); break; case NFOSMESA_GLGETDEBUGMESSAGELOGAMD: D(funcname = "glGetDebugMessageLogAMD"); if (GL_ISAVAILABLE(glGetDebugMessageLogAMD)) ret = nfglGetDebugMessageLogAMD( getStackedParameter(0), /* GLuint count */ getStackedParameter(1), /* GLsizei bufsize */ getStackedPointer(2, GLenum *), /* GLenum *categories */ getStackedPointer(3, GLuint *), /* GLuint *severities */ getStackedPointer(4, GLuint *), /* GLuint *ids */ getStackedPointer(5, GLsizei *), /* GLsizei *lengths */ getStackedPointer(6, GLchar *) /* GLchar *message */); break; case NFOSMESA_GLGETDEBUGMESSAGELOGARB: D(funcname = "glGetDebugMessageLogARB"); if (GL_ISAVAILABLE(glGetDebugMessageLogARB)) ret = nfglGetDebugMessageLogARB( getStackedParameter(0), /* GLuint count */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLenum *), /* GLenum *sources */ getStackedPointer(3, GLenum *), /* GLenum *types */ getStackedPointer(4, GLuint *), /* GLuint *ids */ getStackedPointer(5, GLenum *), /* GLenum *severities */ getStackedPointer(6, GLsizei *), /* GLsizei *lengths */ getStackedPointer(7, GLchar *) /* GLchar *messageLog */); break; case NFOSMESA_GLGETDETAILTEXFUNCSGIS: D(funcname = "glGetDetailTexFuncSGIS"); if (GL_ISAVAILABLE(glGetDetailTexFuncSGIS)) nfglGetDetailTexFuncSGIS( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, GLfloat *) /* GLfloat *points */); break; case NFOSMESA_GLGETDOUBLEINDEXEDVEXT: D(funcname = "glGetDoubleIndexedvEXT"); if (GL_ISAVAILABLE(glGetDoubleIndexedvEXT)) nfglGetDoubleIndexedvEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLdouble *) /* GLdouble *data */); break; case NFOSMESA_GLGETDOUBLEI_V: D(funcname = "glGetDoublei_v"); if (GL_ISAVAILABLE(glGetDoublei_v)) nfglGetDoublei_v( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLdouble *) /* GLdouble *data */); break; case NFOSMESA_GLGETDOUBLEI_VEXT: D(funcname = "glGetDoublei_vEXT"); if (GL_ISAVAILABLE(glGetDoublei_vEXT)) nfglGetDoublei_vEXT( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETDOUBLEV: D(funcname = "glGetDoublev"); if (GL_ISAVAILABLE(glGetDoublev)) nfglGetDoublev( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETERROR: D(funcname = "glGetError"); if (GL_ISAVAILABLE(glGetError)) ret = nfglGetError(); break; case NFOSMESA_GLGETFENCEIVNV: D(funcname = "glGetFenceivNV"); if (GL_ISAVAILABLE(glGetFenceivNV)) nfglGetFenceivNV( getStackedParameter(0), /* GLuint fence */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETFINALCOMBINERINPUTPARAMETERFVNV: D(funcname = "glGetFinalCombinerInputParameterfvNV"); if (GL_ISAVAILABLE(glGetFinalCombinerInputParameterfvNV)) nfglGetFinalCombinerInputParameterfvNV( getStackedParameter(0), /* GLenum variable */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETFINALCOMBINERINPUTPARAMETERIVNV: D(funcname = "glGetFinalCombinerInputParameterivNV"); if (GL_ISAVAILABLE(glGetFinalCombinerInputParameterivNV)) nfglGetFinalCombinerInputParameterivNV( getStackedParameter(0), /* GLenum variable */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETFIRSTPERFQUERYIDINTEL: D(funcname = "glGetFirstPerfQueryIdINTEL"); if (GL_ISAVAILABLE(glGetFirstPerfQueryIdINTEL)) nfglGetFirstPerfQueryIdINTEL( getStackedPointer(0, GLuint *) /* GLuint *queryId */); break; case NFOSMESA_GLGETFIXEDVOES: D(funcname = "glGetFixedvOES"); if (GL_ISAVAILABLE(glGetFixedvOES)) nfglGetFixedvOES( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, GLfixed *) /* GLfixed *params */); break; case NFOSMESA_GLGETFLOATINDEXEDVEXT: D(funcname = "glGetFloatIndexedvEXT"); if (GL_ISAVAILABLE(glGetFloatIndexedvEXT)) nfglGetFloatIndexedvEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLfloat *) /* GLfloat *data */); break; case NFOSMESA_GLGETFLOATI_V: D(funcname = "glGetFloati_v"); if (GL_ISAVAILABLE(glGetFloati_v)) nfglGetFloati_v( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLfloat *) /* GLfloat *data */); break; case NFOSMESA_GLGETFLOATI_VEXT: D(funcname = "glGetFloati_vEXT"); if (GL_ISAVAILABLE(glGetFloati_vEXT)) nfglGetFloati_vEXT( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETFLOATV: D(funcname = "glGetFloatv"); if (GL_ISAVAILABLE(glGetFloatv)) nfglGetFloatv( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETFOGFUNCSGIS: D(funcname = "glGetFogFuncSGIS"); if (GL_ISAVAILABLE(glGetFogFuncSGIS)) nfglGetFogFuncSGIS( getStackedPointer(0, GLfloat *) /* GLfloat *points */); break; case NFOSMESA_GLGETFRAGDATAINDEX: D(funcname = "glGetFragDataIndex"); if (GL_ISAVAILABLE(glGetFragDataIndex)) ret = nfglGetFragDataIndex( getStackedParameter(0), /* GLuint program */ getStackedPointer(1, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLGETFRAGDATALOCATION: D(funcname = "glGetFragDataLocation"); if (GL_ISAVAILABLE(glGetFragDataLocation)) ret = nfglGetFragDataLocation( getStackedParameter(0), /* GLuint program */ getStackedPointer(1, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLGETFRAGDATALOCATIONEXT: D(funcname = "glGetFragDataLocationEXT"); if (GL_ISAVAILABLE(glGetFragDataLocationEXT)) ret = nfglGetFragDataLocationEXT( getStackedParameter(0), /* GLuint program */ getStackedPointer(1, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLGETFRAGMENTLIGHTFVSGIX: D(funcname = "glGetFragmentLightfvSGIX"); if (GL_ISAVAILABLE(glGetFragmentLightfvSGIX)) nfglGetFragmentLightfvSGIX( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETFRAGMENTLIGHTIVSGIX: D(funcname = "glGetFragmentLightivSGIX"); if (GL_ISAVAILABLE(glGetFragmentLightivSGIX)) nfglGetFragmentLightivSGIX( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETFRAGMENTMATERIALFVSGIX: D(funcname = "glGetFragmentMaterialfvSGIX"); if (GL_ISAVAILABLE(glGetFragmentMaterialfvSGIX)) nfglGetFragmentMaterialfvSGIX( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETFRAGMENTMATERIALIVSGIX: D(funcname = "glGetFragmentMaterialivSGIX"); if (GL_ISAVAILABLE(glGetFragmentMaterialivSGIX)) nfglGetFragmentMaterialivSGIX( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETFRAMEBUFFERATTACHMENTPARAMETERIV: D(funcname = "glGetFramebufferAttachmentParameteriv"); if (GL_ISAVAILABLE(glGetFramebufferAttachmentParameteriv)) nfglGetFramebufferAttachmentParameteriv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXT: D(funcname = "glGetFramebufferAttachmentParameterivEXT"); if (GL_ISAVAILABLE(glGetFramebufferAttachmentParameterivEXT)) nfglGetFramebufferAttachmentParameterivEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETFRAMEBUFFERPARAMETERFVAMD: D(funcname = "glGetFramebufferParameterfvAMD"); if (GL_ISAVAILABLE(glGetFramebufferParameterfvAMD)) nfglGetFramebufferParameterfvAMD( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2), /* GLuint numsamples */ getStackedParameter(3), /* GLuint pixelindex */ getStackedParameter(4), /* GLsizei size */ getStackedPointer(5, GLfloat *) /* GLfloat *values */); break; case NFOSMESA_GLGETFRAMEBUFFERPARAMETERIV: D(funcname = "glGetFramebufferParameteriv"); if (GL_ISAVAILABLE(glGetFramebufferParameteriv)) nfglGetFramebufferParameteriv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETFRAMEBUFFERPARAMETERIVEXT: D(funcname = "glGetFramebufferParameterivEXT"); if (GL_ISAVAILABLE(glGetFramebufferParameterivEXT)) nfglGetFramebufferParameterivEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETGRAPHICSRESETSTATUS: D(funcname = "glGetGraphicsResetStatus"); if (GL_ISAVAILABLE(glGetGraphicsResetStatus)) ret = nfglGetGraphicsResetStatus(); break; case NFOSMESA_GLGETGRAPHICSRESETSTATUSARB: D(funcname = "glGetGraphicsResetStatusARB"); if (GL_ISAVAILABLE(glGetGraphicsResetStatusARB)) ret = nfglGetGraphicsResetStatusARB(); break; case NFOSMESA_GLGETHANDLEARB: D(funcname = "glGetHandleARB"); if (GL_ISAVAILABLE(glGetHandleARB)) ret = (uint32)(uintptr_t)nfglGetHandleARB( getStackedParameter(0) /* GLenum pname */); break; case NFOSMESA_GLGETHISTOGRAM: D(funcname = "glGetHistogram"); if (GL_ISAVAILABLE(glGetHistogram)) nfglGetHistogram( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLboolean32 reset */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedPointer(4, void *) /* void *values */); break; case NFOSMESA_GLGETHISTOGRAMEXT: D(funcname = "glGetHistogramEXT"); if (GL_ISAVAILABLE(glGetHistogramEXT)) nfglGetHistogramEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLboolean32 reset */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedPointer(4, void *) /* void *values */); break; case NFOSMESA_GLGETHISTOGRAMPARAMETERFV: D(funcname = "glGetHistogramParameterfv"); if (GL_ISAVAILABLE(glGetHistogramParameterfv)) nfglGetHistogramParameterfv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETHISTOGRAMPARAMETERFVEXT: D(funcname = "glGetHistogramParameterfvEXT"); if (GL_ISAVAILABLE(glGetHistogramParameterfvEXT)) nfglGetHistogramParameterfvEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETHISTOGRAMPARAMETERIV: D(funcname = "glGetHistogramParameteriv"); if (GL_ISAVAILABLE(glGetHistogramParameteriv)) nfglGetHistogramParameteriv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETHISTOGRAMPARAMETERIVEXT: D(funcname = "glGetHistogramParameterivEXT"); if (GL_ISAVAILABLE(glGetHistogramParameterivEXT)) nfglGetHistogramParameterivEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETHISTOGRAMPARAMETERXVOES: D(funcname = "glGetHistogramParameterxvOES"); if (GL_ISAVAILABLE(glGetHistogramParameterxvOES)) nfglGetHistogramParameterxvOES( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfixed *) /* GLfixed *params */); break; case NFOSMESA_GLGETIMAGEHANDLEARB: D(funcname = "glGetImageHandleARB"); if (GL_ISAVAILABLE(glGetImageHandleARB)) ret = nfglGetImageHandleARB( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLboolean32 layered */ getStackedParameter(3), /* GLint layer */ getStackedParameter(4) /* GLenum format */); break; case NFOSMESA_GLGETIMAGEHANDLENV: D(funcname = "glGetImageHandleNV"); if (GL_ISAVAILABLE(glGetImageHandleNV)) ret = nfglGetImageHandleNV( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLboolean32 layered */ getStackedParameter(3), /* GLint layer */ getStackedParameter(4) /* GLenum format */); break; case NFOSMESA_GLGETIMAGETRANSFORMPARAMETERFVHP: D(funcname = "glGetImageTransformParameterfvHP"); if (GL_ISAVAILABLE(glGetImageTransformParameterfvHP)) nfglGetImageTransformParameterfvHP( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETIMAGETRANSFORMPARAMETERIVHP: D(funcname = "glGetImageTransformParameterivHP"); if (GL_ISAVAILABLE(glGetImageTransformParameterivHP)) nfglGetImageTransformParameterivHP( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETINFOLOGARB: D(funcname = "glGetInfoLogARB"); if (GL_ISAVAILABLE(glGetInfoLogARB)) nfglGetInfoLogARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB obj */ getStackedParameter(1), /* GLsizei maxLength */ getStackedPointer(2, GLsizei *), /* GLsizei *length */ getStackedPointer(3, GLcharARB *) /* GLcharARB *infoLog */); break; case NFOSMESA_GLGETINSTRUMENTSSGIX: D(funcname = "glGetInstrumentsSGIX"); if (GL_ISAVAILABLE(glGetInstrumentsSGIX)) ret = nfglGetInstrumentsSGIX(); break; case NFOSMESA_GLGETINTEGER64I_V: D(funcname = "glGetInteger64i_v"); if (GL_ISAVAILABLE(glGetInteger64i_v)) nfglGetInteger64i_v( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLint64 *) /* GLint64 *data */); break; case NFOSMESA_GLGETINTEGER64V: D(funcname = "glGetInteger64v"); if (GL_ISAVAILABLE(glGetInteger64v)) nfglGetInteger64v( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, GLint64 *) /* GLint64 *data */); break; case NFOSMESA_GLGETINTEGERINDEXEDVEXT: D(funcname = "glGetIntegerIndexedvEXT"); if (GL_ISAVAILABLE(glGetIntegerIndexedvEXT)) nfglGetIntegerIndexedvEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLint *) /* GLint *data */); break; case NFOSMESA_GLGETINTEGERI_V: D(funcname = "glGetIntegeri_v"); if (GL_ISAVAILABLE(glGetIntegeri_v)) nfglGetIntegeri_v( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLint *) /* GLint *data */); break; case NFOSMESA_GLGETINTEGERUI64I_VNV: D(funcname = "glGetIntegerui64i_vNV"); if (GL_ISAVAILABLE(glGetIntegerui64i_vNV)) nfglGetIntegerui64i_vNV( getStackedParameter(0), /* GLenum value */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLuint64EXT *) /* GLuint64EXT *result */); break; case NFOSMESA_GLGETINTEGERUI64VNV: D(funcname = "glGetIntegerui64vNV"); if (GL_ISAVAILABLE(glGetIntegerui64vNV)) nfglGetIntegerui64vNV( getStackedParameter(0), /* GLenum value */ getStackedPointer(1, GLuint64EXT *) /* GLuint64EXT *result */); break; case NFOSMESA_GLGETINTEGERV: D(funcname = "glGetIntegerv"); if (GL_ISAVAILABLE(glGetIntegerv)) nfglGetIntegerv( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETINTERNALFORMATSAMPLEIVNV: D(funcname = "glGetInternalformatSampleivNV"); if (GL_ISAVAILABLE(glGetInternalformatSampleivNV)) nfglGetInternalformatSampleivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLsizei samples */ getStackedParameter(3), /* GLenum pname */ getStackedParameter(4), /* GLsizei bufSize */ getStackedPointer(5, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETINTERNALFORMATI64V: D(funcname = "glGetInternalformati64v"); if (GL_ISAVAILABLE(glGetInternalformati64v)) nfglGetInternalformati64v( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLenum pname */ getStackedParameter(3), /* GLsizei bufSize */ getStackedPointer(4, GLint64 *) /* GLint64 *params */); break; case NFOSMESA_GLGETINTERNALFORMATIV: D(funcname = "glGetInternalformativ"); if (GL_ISAVAILABLE(glGetInternalformativ)) nfglGetInternalformativ( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLenum pname */ getStackedParameter(3), /* GLsizei bufSize */ getStackedPointer(4, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETINVARIANTBOOLEANVEXT: D(funcname = "glGetInvariantBooleanvEXT"); if (GL_ISAVAILABLE(glGetInvariantBooleanvEXT)) nfglGetInvariantBooleanvEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum value */ getStackedPointer(2, GLboolean *) /* GLboolean *data */); break; case NFOSMESA_GLGETINVARIANTFLOATVEXT: D(funcname = "glGetInvariantFloatvEXT"); if (GL_ISAVAILABLE(glGetInvariantFloatvEXT)) nfglGetInvariantFloatvEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum value */ getStackedPointer(2, GLfloat *) /* GLfloat *data */); break; case NFOSMESA_GLGETINVARIANTINTEGERVEXT: D(funcname = "glGetInvariantIntegervEXT"); if (GL_ISAVAILABLE(glGetInvariantIntegervEXT)) nfglGetInvariantIntegervEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum value */ getStackedPointer(2, GLint *) /* GLint *data */); break; case NFOSMESA_GLGETLIGHTFV: D(funcname = "glGetLightfv"); if (GL_ISAVAILABLE(glGetLightfv)) nfglGetLightfv( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETLIGHTIV: D(funcname = "glGetLightiv"); if (GL_ISAVAILABLE(glGetLightiv)) nfglGetLightiv( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETLIGHTXOES: D(funcname = "glGetLightxOES"); if (GL_ISAVAILABLE(glGetLightxOES)) nfglGetLightxOES( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfixed *) /* GLfixed *params */); break; case NFOSMESA_GLGETLISTPARAMETERFVSGIX: D(funcname = "glGetListParameterfvSGIX"); if (GL_ISAVAILABLE(glGetListParameterfvSGIX)) nfglGetListParameterfvSGIX( getStackedParameter(0), /* GLuint list */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETLISTPARAMETERIVSGIX: D(funcname = "glGetListParameterivSGIX"); if (GL_ISAVAILABLE(glGetListParameterivSGIX)) nfglGetListParameterivSGIX( getStackedParameter(0), /* GLuint list */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETLOCALCONSTANTBOOLEANVEXT: D(funcname = "glGetLocalConstantBooleanvEXT"); if (GL_ISAVAILABLE(glGetLocalConstantBooleanvEXT)) nfglGetLocalConstantBooleanvEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum value */ getStackedPointer(2, GLboolean *) /* GLboolean *data */); break; case NFOSMESA_GLGETLOCALCONSTANTFLOATVEXT: D(funcname = "glGetLocalConstantFloatvEXT"); if (GL_ISAVAILABLE(glGetLocalConstantFloatvEXT)) nfglGetLocalConstantFloatvEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum value */ getStackedPointer(2, GLfloat *) /* GLfloat *data */); break; case NFOSMESA_GLGETLOCALCONSTANTINTEGERVEXT: D(funcname = "glGetLocalConstantIntegervEXT"); if (GL_ISAVAILABLE(glGetLocalConstantIntegervEXT)) nfglGetLocalConstantIntegervEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum value */ getStackedPointer(2, GLint *) /* GLint *data */); break; case NFOSMESA_GLGETMAPATTRIBPARAMETERFVNV: D(funcname = "glGetMapAttribParameterfvNV"); if (GL_ISAVAILABLE(glGetMapAttribParameterfvNV)) nfglGetMapAttribParameterfvNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETMAPATTRIBPARAMETERIVNV: D(funcname = "glGetMapAttribParameterivNV"); if (GL_ISAVAILABLE(glGetMapAttribParameterivNV)) nfglGetMapAttribParameterivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETMAPCONTROLPOINTSNV: D(funcname = "glGetMapControlPointsNV"); if (GL_ISAVAILABLE(glGetMapControlPointsNV)) nfglGetMapControlPointsNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei ustride */ getStackedParameter(4), /* GLsizei vstride */ getStackedParameter(5), /* GLboolean32 packed */ getStackedPointer(6, void *) /* void *points */); break; case NFOSMESA_GLGETMAPPARAMETERFVNV: D(funcname = "glGetMapParameterfvNV"); if (GL_ISAVAILABLE(glGetMapParameterfvNV)) nfglGetMapParameterfvNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETMAPPARAMETERIVNV: D(funcname = "glGetMapParameterivNV"); if (GL_ISAVAILABLE(glGetMapParameterivNV)) nfglGetMapParameterivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETMAPDV: D(funcname = "glGetMapdv"); if (GL_ISAVAILABLE(glGetMapdv)) nfglGetMapdv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum query */ getStackedPointer(2, GLdouble *) /* GLdouble *v */); break; case NFOSMESA_GLGETMAPFV: D(funcname = "glGetMapfv"); if (GL_ISAVAILABLE(glGetMapfv)) nfglGetMapfv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum query */ getStackedPointer(2, GLfloat *) /* GLfloat *v */); break; case NFOSMESA_GLGETMAPIV: D(funcname = "glGetMapiv"); if (GL_ISAVAILABLE(glGetMapiv)) nfglGetMapiv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum query */ getStackedPointer(2, GLint *) /* GLint *v */); break; case NFOSMESA_GLGETMAPXVOES: D(funcname = "glGetMapxvOES"); if (GL_ISAVAILABLE(glGetMapxvOES)) nfglGetMapxvOES( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum query */ getStackedPointer(2, GLfixed *) /* GLfixed *v */); break; case NFOSMESA_GLGETMATERIALFV: D(funcname = "glGetMaterialfv"); if (GL_ISAVAILABLE(glGetMaterialfv)) nfglGetMaterialfv( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETMATERIALIV: D(funcname = "glGetMaterialiv"); if (GL_ISAVAILABLE(glGetMaterialiv)) nfglGetMaterialiv( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETMATERIALXOES: D(funcname = "glGetMaterialxOES"); if (GL_ISAVAILABLE(glGetMaterialxOES)) nfglGetMaterialxOES( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLfixed param */); break; case NFOSMESA_GLGETMEMORYOBJECTPARAMETERIVEXT: D(funcname = "glGetMemoryObjectParameterivEXT"); if (GL_ISAVAILABLE(glGetMemoryObjectParameterivEXT)) nfglGetMemoryObjectParameterivEXT( getStackedParameter(0), /* GLuint memoryObject */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETMINMAX: D(funcname = "glGetMinmax"); if (GL_ISAVAILABLE(glGetMinmax)) nfglGetMinmax( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLboolean32 reset */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedPointer(4, void *) /* void *values */); break; case NFOSMESA_GLGETMINMAXEXT: D(funcname = "glGetMinmaxEXT"); if (GL_ISAVAILABLE(glGetMinmaxEXT)) nfglGetMinmaxEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLboolean32 reset */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedPointer(4, void *) /* void *values */); break; case NFOSMESA_GLGETMINMAXPARAMETERFV: D(funcname = "glGetMinmaxParameterfv"); if (GL_ISAVAILABLE(glGetMinmaxParameterfv)) nfglGetMinmaxParameterfv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETMINMAXPARAMETERFVEXT: D(funcname = "glGetMinmaxParameterfvEXT"); if (GL_ISAVAILABLE(glGetMinmaxParameterfvEXT)) nfglGetMinmaxParameterfvEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETMINMAXPARAMETERIV: D(funcname = "glGetMinmaxParameteriv"); if (GL_ISAVAILABLE(glGetMinmaxParameteriv)) nfglGetMinmaxParameteriv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETMINMAXPARAMETERIVEXT: D(funcname = "glGetMinmaxParameterivEXT"); if (GL_ISAVAILABLE(glGetMinmaxParameterivEXT)) nfglGetMinmaxParameterivEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETMULTITEXENVFVEXT: D(funcname = "glGetMultiTexEnvfvEXT"); if (GL_ISAVAILABLE(glGetMultiTexEnvfvEXT)) nfglGetMultiTexEnvfvEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETMULTITEXENVIVEXT: D(funcname = "glGetMultiTexEnvivEXT"); if (GL_ISAVAILABLE(glGetMultiTexEnvivEXT)) nfglGetMultiTexEnvivEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETMULTITEXGENDVEXT: D(funcname = "glGetMultiTexGendvEXT"); if (GL_ISAVAILABLE(glGetMultiTexGendvEXT)) nfglGetMultiTexGendvEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum coord */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETMULTITEXGENFVEXT: D(funcname = "glGetMultiTexGenfvEXT"); if (GL_ISAVAILABLE(glGetMultiTexGenfvEXT)) nfglGetMultiTexGenfvEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum coord */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETMULTITEXGENIVEXT: D(funcname = "glGetMultiTexGenivEXT"); if (GL_ISAVAILABLE(glGetMultiTexGenivEXT)) nfglGetMultiTexGenivEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum coord */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETMULTITEXIMAGEEXT: D(funcname = "glGetMultiTexImageEXT"); if (GL_ISAVAILABLE(glGetMultiTexImageEXT)) nfglGetMultiTexImageEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum format */ getStackedParameter(4), /* GLenum type */ getStackedPointer(5, void *) /* void *pixels */); break; case NFOSMESA_GLGETMULTITEXLEVELPARAMETERFVEXT: D(funcname = "glGetMultiTexLevelParameterfvEXT"); if (GL_ISAVAILABLE(glGetMultiTexLevelParameterfvEXT)) nfglGetMultiTexLevelParameterfvEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum pname */ getStackedPointer(4, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETMULTITEXLEVELPARAMETERIVEXT: D(funcname = "glGetMultiTexLevelParameterivEXT"); if (GL_ISAVAILABLE(glGetMultiTexLevelParameterivEXT)) nfglGetMultiTexLevelParameterivEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum pname */ getStackedPointer(4, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETMULTITEXPARAMETERIIVEXT: D(funcname = "glGetMultiTexParameterIivEXT"); if (GL_ISAVAILABLE(glGetMultiTexParameterIivEXT)) nfglGetMultiTexParameterIivEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETMULTITEXPARAMETERIUIVEXT: D(funcname = "glGetMultiTexParameterIuivEXT"); if (GL_ISAVAILABLE(glGetMultiTexParameterIuivEXT)) nfglGetMultiTexParameterIuivEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETMULTITEXPARAMETERFVEXT: D(funcname = "glGetMultiTexParameterfvEXT"); if (GL_ISAVAILABLE(glGetMultiTexParameterfvEXT)) nfglGetMultiTexParameterfvEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETMULTITEXPARAMETERIVEXT: D(funcname = "glGetMultiTexParameterivEXT"); if (GL_ISAVAILABLE(glGetMultiTexParameterivEXT)) nfglGetMultiTexParameterivEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETMULTISAMPLEFV: D(funcname = "glGetMultisamplefv"); if (GL_ISAVAILABLE(glGetMultisamplefv)) nfglGetMultisamplefv( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLfloat *) /* GLfloat *val */); break; case NFOSMESA_GLGETMULTISAMPLEFVNV: D(funcname = "glGetMultisamplefvNV"); if (GL_ISAVAILABLE(glGetMultisamplefvNV)) nfglGetMultisamplefvNV( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLfloat *) /* GLfloat *val */); break; case NFOSMESA_GLGETNAMEDBUFFERPARAMETERI64V: D(funcname = "glGetNamedBufferParameteri64v"); if (GL_ISAVAILABLE(glGetNamedBufferParameteri64v)) nfglGetNamedBufferParameteri64v( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint64 *) /* GLint64 *params */); break; case NFOSMESA_GLGETNAMEDBUFFERPARAMETERIV: D(funcname = "glGetNamedBufferParameteriv"); if (GL_ISAVAILABLE(glGetNamedBufferParameteriv)) nfglGetNamedBufferParameteriv( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETNAMEDBUFFERPARAMETERIVEXT: D(funcname = "glGetNamedBufferParameterivEXT"); if (GL_ISAVAILABLE(glGetNamedBufferParameterivEXT)) nfglGetNamedBufferParameterivEXT( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETNAMEDBUFFERPARAMETERUI64VNV: D(funcname = "glGetNamedBufferParameterui64vNV"); if (GL_ISAVAILABLE(glGetNamedBufferParameterui64vNV)) nfglGetNamedBufferParameterui64vNV( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint64EXT *) /* GLuint64EXT *params */); break; case NFOSMESA_GLGETNAMEDBUFFERPOINTERV: D(funcname = "glGetNamedBufferPointerv"); if (GL_ISAVAILABLE(glGetNamedBufferPointerv)) nfglGetNamedBufferPointerv( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, void * *) /* void * *params */); break; case NFOSMESA_GLGETNAMEDBUFFERPOINTERVEXT: D(funcname = "glGetNamedBufferPointervEXT"); if (GL_ISAVAILABLE(glGetNamedBufferPointervEXT)) nfglGetNamedBufferPointervEXT( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, void * *) /* void * *params */); break; #if 0 case NFOSMESA_GLGETNAMEDBUFFERSUBDATA: D(funcname = "glGetNamedBufferSubData"); if (GL_ISAVAILABLE(glGetNamedBufferSubData)) nfglGetNamedBufferSubData( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2), /* GLsizeiptr size */ getStackedPointer(3, void *) /* void *data */); break; #endif #if 0 case NFOSMESA_GLGETNAMEDBUFFERSUBDATAEXT: D(funcname = "glGetNamedBufferSubDataEXT"); if (GL_ISAVAILABLE(glGetNamedBufferSubDataEXT)) nfglGetNamedBufferSubDataEXT( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2), /* GLsizeiptr size */ getStackedPointer(3, void *) /* void *data */); break; #endif case NFOSMESA_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV: D(funcname = "glGetNamedFramebufferAttachmentParameteriv"); if (GL_ISAVAILABLE(glGetNamedFramebufferAttachmentParameteriv)) nfglGetNamedFramebufferAttachmentParameteriv( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT: D(funcname = "glGetNamedFramebufferAttachmentParameterivEXT"); if (GL_ISAVAILABLE(glGetNamedFramebufferAttachmentParameterivEXT)) nfglGetNamedFramebufferAttachmentParameterivEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERFVAMD: D(funcname = "glGetNamedFramebufferParameterfvAMD"); if (GL_ISAVAILABLE(glGetNamedFramebufferParameterfvAMD)) nfglGetNamedFramebufferParameterfvAMD( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2), /* GLuint numsamples */ getStackedParameter(3), /* GLuint pixelindex */ getStackedParameter(4), /* GLsizei size */ getStackedPointer(5, GLfloat *) /* GLfloat *values */); break; case NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERIV: D(funcname = "glGetNamedFramebufferParameteriv"); if (GL_ISAVAILABLE(glGetNamedFramebufferParameteriv)) nfglGetNamedFramebufferParameteriv( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *param */); break; case NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERIVEXT: D(funcname = "glGetNamedFramebufferParameterivEXT"); if (GL_ISAVAILABLE(glGetNamedFramebufferParameterivEXT)) nfglGetNamedFramebufferParameterivEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERIIVEXT: D(funcname = "glGetNamedProgramLocalParameterIivEXT"); if (GL_ISAVAILABLE(glGetNamedProgramLocalParameterIivEXT)) nfglGetNamedProgramLocalParameterIivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXT: D(funcname = "glGetNamedProgramLocalParameterIuivEXT"); if (GL_ISAVAILABLE(glGetNamedProgramLocalParameterIuivEXT)) nfglGetNamedProgramLocalParameterIuivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedPointer(3, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERDVEXT: D(funcname = "glGetNamedProgramLocalParameterdvEXT"); if (GL_ISAVAILABLE(glGetNamedProgramLocalParameterdvEXT)) nfglGetNamedProgramLocalParameterdvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedPointer(3, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERFVEXT: D(funcname = "glGetNamedProgramLocalParameterfvEXT"); if (GL_ISAVAILABLE(glGetNamedProgramLocalParameterfvEXT)) nfglGetNamedProgramLocalParameterfvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedPointer(3, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETNAMEDPROGRAMSTRINGEXT: D(funcname = "glGetNamedProgramStringEXT"); if (GL_ISAVAILABLE(glGetNamedProgramStringEXT)) nfglGetNamedProgramStringEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, void *) /* void *string */); break; case NFOSMESA_GLGETNAMEDPROGRAMIVEXT: D(funcname = "glGetNamedProgramivEXT"); if (GL_ISAVAILABLE(glGetNamedProgramivEXT)) nfglGetNamedProgramivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETNAMEDRENDERBUFFERPARAMETERIV: D(funcname = "glGetNamedRenderbufferParameteriv"); if (GL_ISAVAILABLE(glGetNamedRenderbufferParameteriv)) nfglGetNamedRenderbufferParameteriv( getStackedParameter(0), /* GLuint renderbuffer */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETNAMEDRENDERBUFFERPARAMETERIVEXT: D(funcname = "glGetNamedRenderbufferParameterivEXT"); if (GL_ISAVAILABLE(glGetNamedRenderbufferParameterivEXT)) nfglGetNamedRenderbufferParameterivEXT( getStackedParameter(0), /* GLuint renderbuffer */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETNAMEDSTRINGARB: D(funcname = "glGetNamedStringARB"); if (GL_ISAVAILABLE(glGetNamedStringARB)) nfglGetNamedStringARB( getStackedParameter(0), /* GLint namelen */ getStackedPointer(1, const GLchar *), /* const GLchar *name */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLint *), /* GLint *stringlen */ getStackedPointer(4, GLchar *) /* GLchar *string */); break; case NFOSMESA_GLGETNAMEDSTRINGIVARB: D(funcname = "glGetNamedStringivARB"); if (GL_ISAVAILABLE(glGetNamedStringivARB)) nfglGetNamedStringivARB( getStackedParameter(0), /* GLint namelen */ getStackedPointer(1, const GLchar *), /* const GLchar *name */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETNEXTPERFQUERYIDINTEL: D(funcname = "glGetNextPerfQueryIdINTEL"); if (GL_ISAVAILABLE(glGetNextPerfQueryIdINTEL)) nfglGetNextPerfQueryIdINTEL( getStackedParameter(0), /* GLuint queryId */ getStackedPointer(1, GLuint *) /* GLuint *nextQueryId */); break; case NFOSMESA_GLGETOBJECTBUFFERFVATI: D(funcname = "glGetObjectBufferfvATI"); if (GL_ISAVAILABLE(glGetObjectBufferfvATI)) nfglGetObjectBufferfvATI( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETOBJECTBUFFERIVATI: D(funcname = "glGetObjectBufferivATI"); if (GL_ISAVAILABLE(glGetObjectBufferivATI)) nfglGetObjectBufferivATI( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETOBJECTLABEL: D(funcname = "glGetObjectLabel"); if (GL_ISAVAILABLE(glGetObjectLabel)) nfglGetObjectLabel( getStackedParameter(0), /* GLenum identifier */ getStackedParameter(1), /* GLuint name */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLsizei *), /* GLsizei *length */ getStackedPointer(4, GLchar *) /* GLchar *label */); break; case NFOSMESA_GLGETOBJECTLABELEXT: D(funcname = "glGetObjectLabelEXT"); if (GL_ISAVAILABLE(glGetObjectLabelEXT)) nfglGetObjectLabelEXT( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLuint object */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLsizei *), /* GLsizei *length */ getStackedPointer(4, GLchar *) /* GLchar *label */); break; case NFOSMESA_GLGETOBJECTPARAMETERFVARB: D(funcname = "glGetObjectParameterfvARB"); if (GL_ISAVAILABLE(glGetObjectParameterfvARB)) nfglGetObjectParameterfvARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB obj */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETOBJECTPARAMETERIVAPPLE: D(funcname = "glGetObjectParameterivAPPLE"); if (GL_ISAVAILABLE(glGetObjectParameterivAPPLE)) nfglGetObjectParameterivAPPLE( getStackedParameter(0), /* GLenum objectType */ getStackedParameter(1), /* GLuint name */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETOBJECTPARAMETERIVARB: D(funcname = "glGetObjectParameterivARB"); if (GL_ISAVAILABLE(glGetObjectParameterivARB)) nfglGetObjectParameterivARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB obj */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETOBJECTPTRLABEL: D(funcname = "glGetObjectPtrLabel"); if (GL_ISAVAILABLE(glGetObjectPtrLabel)) nfglGetObjectPtrLabel( getStackedPointer(0, const void *), /* const void *ptr */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLsizei *), /* GLsizei *length */ getStackedPointer(3, GLchar *) /* GLchar *label */); break; case NFOSMESA_GLGETOCCLUSIONQUERYIVNV: D(funcname = "glGetOcclusionQueryivNV"); if (GL_ISAVAILABLE(glGetOcclusionQueryivNV)) nfglGetOcclusionQueryivNV( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETOCCLUSIONQUERYUIVNV: D(funcname = "glGetOcclusionQueryuivNV"); if (GL_ISAVAILABLE(glGetOcclusionQueryuivNV)) nfglGetOcclusionQueryuivNV( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETPATHCOLORGENFVNV: D(funcname = "glGetPathColorGenfvNV"); if (GL_ISAVAILABLE(glGetPathColorGenfvNV)) nfglGetPathColorGenfvNV( getStackedParameter(0), /* GLenum color */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *value */); break; case NFOSMESA_GLGETPATHCOLORGENIVNV: D(funcname = "glGetPathColorGenivNV"); if (GL_ISAVAILABLE(glGetPathColorGenivNV)) nfglGetPathColorGenivNV( getStackedParameter(0), /* GLenum color */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *value */); break; case NFOSMESA_GLGETPATHCOMMANDSNV: D(funcname = "glGetPathCommandsNV"); if (GL_ISAVAILABLE(glGetPathCommandsNV)) nfglGetPathCommandsNV( getStackedParameter(0), /* GLuint path */ getStackedPointer(1, GLubyte *) /* GLubyte *commands */); break; case NFOSMESA_GLGETPATHCOORDSNV: D(funcname = "glGetPathCoordsNV"); if (GL_ISAVAILABLE(glGetPathCoordsNV)) nfglGetPathCoordsNV( getStackedParameter(0), /* GLuint path */ getStackedPointer(1, GLfloat *) /* GLfloat *coords */); break; case NFOSMESA_GLGETPATHDASHARRAYNV: D(funcname = "glGetPathDashArrayNV"); if (GL_ISAVAILABLE(glGetPathDashArrayNV)) nfglGetPathDashArrayNV( getStackedParameter(0), /* GLuint path */ getStackedPointer(1, GLfloat *) /* GLfloat *dashArray */); break; case NFOSMESA_GLGETPATHLENGTHNV: D(funcname = "glGetPathLengthNV"); if (GL_ISAVAILABLE(glGetPathLengthNV)) ret = nfglGetPathLengthNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLsizei startSegment */ getStackedParameter(2) /* GLsizei numSegments */); break; case NFOSMESA_GLGETPATHMETRICRANGENV: D(funcname = "glGetPathMetricRangeNV"); if (GL_ISAVAILABLE(glGetPathMetricRangeNV)) nfglGetPathMetricRangeNV( getStackedParameter(0), /* GLbitfield metricQueryMask */ getStackedParameter(1), /* GLuint firstPathName */ getStackedParameter(2), /* GLsizei numPaths */ getStackedParameter(3), /* GLsizei stride */ getStackedPointer(4, GLfloat *) /* GLfloat *metrics */); break; case NFOSMESA_GLGETPATHMETRICSNV: D(funcname = "glGetPathMetricsNV"); if (GL_ISAVAILABLE(glGetPathMetricsNV)) nfglGetPathMetricsNV( getStackedParameter(0), /* GLbitfield metricQueryMask */ getStackedParameter(1), /* GLsizei numPaths */ getStackedParameter(2), /* GLenum pathNameType */ getStackedPointer(3, const void *), /* const void *paths */ getStackedParameter(4), /* GLuint pathBase */ getStackedParameter(5), /* GLsizei stride */ getStackedPointer(6, GLfloat *) /* GLfloat *metrics */); break; case NFOSMESA_GLGETPATHPARAMETERFVNV: D(funcname = "glGetPathParameterfvNV"); if (GL_ISAVAILABLE(glGetPathParameterfvNV)) nfglGetPathParameterfvNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *value */); break; case NFOSMESA_GLGETPATHPARAMETERIVNV: D(funcname = "glGetPathParameterivNV"); if (GL_ISAVAILABLE(glGetPathParameterivNV)) nfglGetPathParameterivNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *value */); break; case NFOSMESA_GLGETPATHSPACINGNV: D(funcname = "glGetPathSpacingNV"); if (GL_ISAVAILABLE(glGetPathSpacingNV)) nfglGetPathSpacingNV( getStackedParameter(0), /* GLenum pathListMode */ getStackedParameter(1), /* GLsizei numPaths */ getStackedParameter(2), /* GLenum pathNameType */ getStackedPointer(3, const void *), /* const void *paths */ getStackedParameter(4), /* GLuint pathBase */ getStackedFloat(5), /* GLfloat advanceScale */ getStackedFloat(6), /* GLfloat kerningScale */ getStackedParameter(7), /* GLenum transformType */ getStackedPointer(8, GLfloat *) /* GLfloat *returnedSpacing */); break; case NFOSMESA_GLGETPATHTEXGENFVNV: D(funcname = "glGetPathTexGenfvNV"); if (GL_ISAVAILABLE(glGetPathTexGenfvNV)) nfglGetPathTexGenfvNV( getStackedParameter(0), /* GLenum texCoordSet */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *value */); break; case NFOSMESA_GLGETPATHTEXGENIVNV: D(funcname = "glGetPathTexGenivNV"); if (GL_ISAVAILABLE(glGetPathTexGenivNV)) nfglGetPathTexGenivNV( getStackedParameter(0), /* GLenum texCoordSet */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *value */); break; case NFOSMESA_GLGETPERFCOUNTERINFOINTEL: D(funcname = "glGetPerfCounterInfoINTEL"); if (GL_ISAVAILABLE(glGetPerfCounterInfoINTEL)) nfglGetPerfCounterInfoINTEL( getStackedParameter(0), /* GLuint queryId */ getStackedParameter(1), /* GLuint counterId */ getStackedParameter(2), /* GLuint counterNameLength */ getStackedPointer(3, GLchar *), /* GLchar *counterName */ getStackedParameter(4), /* GLuint counterDescLength */ getStackedPointer(5, GLchar *), /* GLchar *counterDesc */ getStackedPointer(6, GLuint *), /* GLuint *counterOffset */ getStackedPointer(7, GLuint *), /* GLuint *counterDataSize */ getStackedPointer(8, GLuint *), /* GLuint *counterTypeEnum */ getStackedPointer(9, GLuint *), /* GLuint *counterDataTypeEnum */ getStackedPointer(10, GLuint64 *) /* GLuint64 *rawCounterMaxValue */); break; case NFOSMESA_GLGETPERFMONITORCOUNTERDATAAMD: D(funcname = "glGetPerfMonitorCounterDataAMD"); if (GL_ISAVAILABLE(glGetPerfMonitorCounterDataAMD)) nfglGetPerfMonitorCounterDataAMD( getStackedParameter(0), /* GLuint monitor */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2), /* GLsizei dataSize */ getStackedPointer(3, GLuint *), /* GLuint *data */ getStackedPointer(4, GLint *) /* GLint *bytesWritten */); break; case NFOSMESA_GLGETPERFMONITORCOUNTERINFOAMD: D(funcname = "glGetPerfMonitorCounterInfoAMD"); if (GL_ISAVAILABLE(glGetPerfMonitorCounterInfoAMD)) nfglGetPerfMonitorCounterInfoAMD( getStackedParameter(0), /* GLuint group */ getStackedParameter(1), /* GLuint counter */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, void *) /* void *data */); break; case NFOSMESA_GLGETPERFMONITORCOUNTERSTRINGAMD: D(funcname = "glGetPerfMonitorCounterStringAMD"); if (GL_ISAVAILABLE(glGetPerfMonitorCounterStringAMD)) nfglGetPerfMonitorCounterStringAMD( getStackedParameter(0), /* GLuint group */ getStackedParameter(1), /* GLuint counter */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLsizei *), /* GLsizei *length */ getStackedPointer(4, GLchar *) /* GLchar *counterString */); break; case NFOSMESA_GLGETPERFMONITORCOUNTERSAMD: D(funcname = "glGetPerfMonitorCountersAMD"); if (GL_ISAVAILABLE(glGetPerfMonitorCountersAMD)) nfglGetPerfMonitorCountersAMD( getStackedParameter(0), /* GLuint group */ getStackedPointer(1, GLint *), /* GLint *numCounters */ getStackedPointer(2, GLint *), /* GLint *maxActiveCounters */ getStackedParameter(3), /* GLsizei counterSize */ getStackedPointer(4, GLuint *) /* GLuint *counters */); break; case NFOSMESA_GLGETPERFMONITORGROUPSTRINGAMD: D(funcname = "glGetPerfMonitorGroupStringAMD"); if (GL_ISAVAILABLE(glGetPerfMonitorGroupStringAMD)) nfglGetPerfMonitorGroupStringAMD( getStackedParameter(0), /* GLuint group */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLsizei *), /* GLsizei *length */ getStackedPointer(3, GLchar *) /* GLchar *groupString */); break; case NFOSMESA_GLGETPERFMONITORGROUPSAMD: D(funcname = "glGetPerfMonitorGroupsAMD"); if (GL_ISAVAILABLE(glGetPerfMonitorGroupsAMD)) nfglGetPerfMonitorGroupsAMD( getStackedPointer(0, GLint *), /* GLint *numGroups */ getStackedParameter(1), /* GLsizei groupsSize */ getStackedPointer(2, GLuint *) /* GLuint *groups */); break; case NFOSMESA_GLGETPERFQUERYDATAINTEL: D(funcname = "glGetPerfQueryDataINTEL"); if (GL_ISAVAILABLE(glGetPerfQueryDataINTEL)) nfglGetPerfQueryDataINTEL( getStackedParameter(0), /* GLuint queryHandle */ getStackedParameter(1), /* GLuint flags */ getStackedParameter(2), /* GLsizei dataSize */ getStackedPointer(3, GLvoid *), /* GLvoid *data */ getStackedPointer(4, GLuint *) /* GLuint *bytesWritten */); break; case NFOSMESA_GLGETPERFQUERYIDBYNAMEINTEL: D(funcname = "glGetPerfQueryIdByNameINTEL"); if (GL_ISAVAILABLE(glGetPerfQueryIdByNameINTEL)) nfglGetPerfQueryIdByNameINTEL( getStackedPointer(0, GLchar *), /* GLchar *queryName */ getStackedPointer(1, GLuint *) /* GLuint *queryId */); break; case NFOSMESA_GLGETPERFQUERYINFOINTEL: D(funcname = "glGetPerfQueryInfoINTEL"); if (GL_ISAVAILABLE(glGetPerfQueryInfoINTEL)) nfglGetPerfQueryInfoINTEL( getStackedParameter(0), /* GLuint queryId */ getStackedParameter(1), /* GLuint queryNameLength */ getStackedPointer(2, GLchar *), /* GLchar *queryName */ getStackedPointer(3, GLuint *), /* GLuint *dataSize */ getStackedPointer(4, GLuint *), /* GLuint *noCounters */ getStackedPointer(5, GLuint *), /* GLuint *noInstances */ getStackedPointer(6, GLuint *) /* GLuint *capsMask */); break; case NFOSMESA_GLGETPIXELMAPFV: D(funcname = "glGetPixelMapfv"); if (GL_ISAVAILABLE(glGetPixelMapfv)) nfglGetPixelMapfv( getStackedParameter(0), /* GLenum map */ getStackedPointer(1, GLfloat *) /* GLfloat *values */); break; case NFOSMESA_GLGETPIXELMAPUIV: D(funcname = "glGetPixelMapuiv"); if (GL_ISAVAILABLE(glGetPixelMapuiv)) nfglGetPixelMapuiv( getStackedParameter(0), /* GLenum map */ getStackedPointer(1, GLuint *) /* GLuint *values */); break; case NFOSMESA_GLGETPIXELMAPUSV: D(funcname = "glGetPixelMapusv"); if (GL_ISAVAILABLE(glGetPixelMapusv)) nfglGetPixelMapusv( getStackedParameter(0), /* GLenum map */ getStackedPointer(1, GLushort *) /* GLushort *values */); break; case NFOSMESA_GLGETPIXELMAPXV: D(funcname = "glGetPixelMapxv"); if (GL_ISAVAILABLE(glGetPixelMapxv)) nfglGetPixelMapxv( getStackedParameter(0), /* GLenum map */ getStackedParameter(1), /* GLint size */ getStackedPointer(2, GLfixed *) /* GLfixed *values */); break; case NFOSMESA_GLGETPIXELTEXGENPARAMETERFVSGIS: D(funcname = "glGetPixelTexGenParameterfvSGIS"); if (GL_ISAVAILABLE(glGetPixelTexGenParameterfvSGIS)) nfglGetPixelTexGenParameterfvSGIS( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETPIXELTEXGENPARAMETERIVSGIS: D(funcname = "glGetPixelTexGenParameterivSGIS"); if (GL_ISAVAILABLE(glGetPixelTexGenParameterivSGIS)) nfglGetPixelTexGenParameterivSGIS( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETPIXELTRANSFORMPARAMETERFVEXT: D(funcname = "glGetPixelTransformParameterfvEXT"); if (GL_ISAVAILABLE(glGetPixelTransformParameterfvEXT)) nfglGetPixelTransformParameterfvEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETPIXELTRANSFORMPARAMETERIVEXT: D(funcname = "glGetPixelTransformParameterivEXT"); if (GL_ISAVAILABLE(glGetPixelTransformParameterivEXT)) nfglGetPixelTransformParameterivEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETPOINTERINDEXEDVEXT: D(funcname = "glGetPointerIndexedvEXT"); if (GL_ISAVAILABLE(glGetPointerIndexedvEXT)) nfglGetPointerIndexedvEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, void * *) /* void * *data */); break; case NFOSMESA_GLGETPOINTERI_VEXT: D(funcname = "glGetPointeri_vEXT"); if (GL_ISAVAILABLE(glGetPointeri_vEXT)) nfglGetPointeri_vEXT( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, void * *) /* void * *params */); break; case NFOSMESA_GLGETPOINTERV: D(funcname = "glGetPointerv"); if (GL_ISAVAILABLE(glGetPointerv)) nfglGetPointerv( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, GLvoid* *) /* GLvoid* *params */); break; case NFOSMESA_GLGETPOINTERVEXT: D(funcname = "glGetPointervEXT"); if (GL_ISAVAILABLE(glGetPointervEXT)) nfglGetPointervEXT( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, void * *) /* void * *params */); break; case NFOSMESA_GLGETPOLYGONSTIPPLE: D(funcname = "glGetPolygonStipple"); if (GL_ISAVAILABLE(glGetPolygonStipple)) nfglGetPolygonStipple( getStackedPointer(0, GLubyte *) /* GLubyte *mask */); break; case NFOSMESA_GLGETPROGRAMBINARY: D(funcname = "glGetProgramBinary"); if (GL_ISAVAILABLE(glGetProgramBinary)) nfglGetProgramBinary( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLsizei *), /* GLsizei *length */ getStackedPointer(3, GLenum *), /* GLenum *binaryFormat */ getStackedPointer(4, void *) /* void *binary */); break; case NFOSMESA_GLGETPROGRAMENVPARAMETERIIVNV: D(funcname = "glGetProgramEnvParameterIivNV"); if (GL_ISAVAILABLE(glGetProgramEnvParameterIivNV)) nfglGetProgramEnvParameterIivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETPROGRAMENVPARAMETERIUIVNV: D(funcname = "glGetProgramEnvParameterIuivNV"); if (GL_ISAVAILABLE(glGetProgramEnvParameterIuivNV)) nfglGetProgramEnvParameterIuivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETPROGRAMENVPARAMETERDVARB: D(funcname = "glGetProgramEnvParameterdvARB"); if (GL_ISAVAILABLE(glGetProgramEnvParameterdvARB)) nfglGetProgramEnvParameterdvARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETPROGRAMENVPARAMETERFVARB: D(funcname = "glGetProgramEnvParameterfvARB"); if (GL_ISAVAILABLE(glGetProgramEnvParameterfvARB)) nfglGetProgramEnvParameterfvARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETPROGRAMINFOLOG: D(funcname = "glGetProgramInfoLog"); if (GL_ISAVAILABLE(glGetProgramInfoLog)) nfglGetProgramInfoLog( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLsizei *), /* GLsizei *length */ getStackedPointer(3, GLchar *) /* GLchar *infoLog */); break; case NFOSMESA_GLGETPROGRAMINTERFACEIV: D(funcname = "glGetProgramInterfaceiv"); if (GL_ISAVAILABLE(glGetProgramInterfaceiv)) nfglGetProgramInterfaceiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum programInterface */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETPROGRAMLOCALPARAMETERIIVNV: D(funcname = "glGetProgramLocalParameterIivNV"); if (GL_ISAVAILABLE(glGetProgramLocalParameterIivNV)) nfglGetProgramLocalParameterIivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETPROGRAMLOCALPARAMETERIUIVNV: D(funcname = "glGetProgramLocalParameterIuivNV"); if (GL_ISAVAILABLE(glGetProgramLocalParameterIuivNV)) nfglGetProgramLocalParameterIuivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETPROGRAMLOCALPARAMETERDVARB: D(funcname = "glGetProgramLocalParameterdvARB"); if (GL_ISAVAILABLE(glGetProgramLocalParameterdvARB)) nfglGetProgramLocalParameterdvARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETPROGRAMLOCALPARAMETERFVARB: D(funcname = "glGetProgramLocalParameterfvARB"); if (GL_ISAVAILABLE(glGetProgramLocalParameterfvARB)) nfglGetProgramLocalParameterfvARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETPROGRAMNAMEDPARAMETERDVNV: D(funcname = "glGetProgramNamedParameterdvNV"); if (GL_ISAVAILABLE(glGetProgramNamedParameterdvNV)) nfglGetProgramNamedParameterdvNV( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLsizei len */ getStackedPointer(2, const GLubyte *), /* const GLubyte *name */ getStackedPointer(3, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETPROGRAMNAMEDPARAMETERFVNV: D(funcname = "glGetProgramNamedParameterfvNV"); if (GL_ISAVAILABLE(glGetProgramNamedParameterfvNV)) nfglGetProgramNamedParameterfvNV( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLsizei len */ getStackedPointer(2, const GLubyte *), /* const GLubyte *name */ getStackedPointer(3, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETPROGRAMPARAMETERDVNV: D(funcname = "glGetProgramParameterdvNV"); if (GL_ISAVAILABLE(glGetProgramParameterdvNV)) nfglGetProgramParameterdvNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETPROGRAMPARAMETERFVNV: D(funcname = "glGetProgramParameterfvNV"); if (GL_ISAVAILABLE(glGetProgramParameterfvNV)) nfglGetProgramParameterfvNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETPROGRAMPIPELINEINFOLOG: D(funcname = "glGetProgramPipelineInfoLog"); if (GL_ISAVAILABLE(glGetProgramPipelineInfoLog)) nfglGetProgramPipelineInfoLog( getStackedParameter(0), /* GLuint pipeline */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLsizei *), /* GLsizei *length */ getStackedPointer(3, GLchar *) /* GLchar *infoLog */); break; case NFOSMESA_GLGETPROGRAMPIPELINEIV: D(funcname = "glGetProgramPipelineiv"); if (GL_ISAVAILABLE(glGetProgramPipelineiv)) nfglGetProgramPipelineiv( getStackedParameter(0), /* GLuint pipeline */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETPROGRAMREGISTERFVMESA: D(funcname = "glGetProgramRegisterfvMESA"); if (GL_ISAVAILABLE(glGetProgramRegisterfvMESA)) nfglGetProgramRegisterfvMESA( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei len */ getStackedPointer(2, const GLubyte *), /* const GLubyte *name */ getStackedPointer(3, GLfloat *) /* GLfloat *v */); break; case NFOSMESA_GLGETPROGRAMRESOURCEINDEX: D(funcname = "glGetProgramResourceIndex"); if (GL_ISAVAILABLE(glGetProgramResourceIndex)) ret = nfglGetProgramResourceIndex( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum programInterface */ getStackedPointer(2, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLGETPROGRAMRESOURCELOCATION: D(funcname = "glGetProgramResourceLocation"); if (GL_ISAVAILABLE(glGetProgramResourceLocation)) ret = nfglGetProgramResourceLocation( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum programInterface */ getStackedPointer(2, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLGETPROGRAMRESOURCELOCATIONINDEX: D(funcname = "glGetProgramResourceLocationIndex"); if (GL_ISAVAILABLE(glGetProgramResourceLocationIndex)) ret = nfglGetProgramResourceLocationIndex( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum programInterface */ getStackedPointer(2, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLGETPROGRAMRESOURCENAME: D(funcname = "glGetProgramResourceName"); if (GL_ISAVAILABLE(glGetProgramResourceName)) nfglGetProgramResourceName( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum programInterface */ getStackedParameter(2), /* GLuint index */ getStackedParameter(3), /* GLsizei bufSize */ getStackedPointer(4, GLsizei *), /* GLsizei *length */ getStackedPointer(5, GLchar *) /* GLchar *name */); break; case NFOSMESA_GLGETPROGRAMRESOURCEFVNV: D(funcname = "glGetProgramResourcefvNV"); if (GL_ISAVAILABLE(glGetProgramResourcefvNV)) nfglGetProgramResourcefvNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum programInterface */ getStackedParameter(2), /* GLuint index */ getStackedParameter(3), /* GLsizei propCount */ getStackedPointer(4, const GLenum *), /* const GLenum *props */ getStackedParameter(5), /* GLsizei bufSize */ getStackedPointer(6, GLsizei *), /* GLsizei *length */ getStackedPointer(7, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETPROGRAMRESOURCEIV: D(funcname = "glGetProgramResourceiv"); if (GL_ISAVAILABLE(glGetProgramResourceiv)) nfglGetProgramResourceiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum programInterface */ getStackedParameter(2), /* GLuint index */ getStackedParameter(3), /* GLsizei propCount */ getStackedPointer(4, const GLenum *), /* const GLenum *props */ getStackedParameter(5), /* GLsizei bufSize */ getStackedPointer(6, GLsizei *), /* GLsizei *length */ getStackedPointer(7, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETPROGRAMSTAGEIV: D(funcname = "glGetProgramStageiv"); if (GL_ISAVAILABLE(glGetProgramStageiv)) nfglGetProgramStageiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum shadertype */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *values */); break; case NFOSMESA_GLGETPROGRAMSTRINGARB: D(funcname = "glGetProgramStringARB"); if (GL_ISAVAILABLE(glGetProgramStringARB)) nfglGetProgramStringARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, void *) /* void *string */); break; case NFOSMESA_GLGETPROGRAMSTRINGNV: D(funcname = "glGetProgramStringNV"); if (GL_ISAVAILABLE(glGetProgramStringNV)) nfglGetProgramStringNV( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLubyte *) /* GLubyte *program */); break; case NFOSMESA_GLGETPROGRAMSUBROUTINEPARAMETERUIVNV: D(funcname = "glGetProgramSubroutineParameteruivNV"); if (GL_ISAVAILABLE(glGetProgramSubroutineParameteruivNV)) nfglGetProgramSubroutineParameteruivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLuint *) /* GLuint *param */); break; case NFOSMESA_GLGETPROGRAMIV: D(funcname = "glGetProgramiv"); if (GL_ISAVAILABLE(glGetProgramiv)) nfglGetProgramiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETPROGRAMIVARB: D(funcname = "glGetProgramivARB"); if (GL_ISAVAILABLE(glGetProgramivARB)) nfglGetProgramivARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETPROGRAMIVNV: D(funcname = "glGetProgramivNV"); if (GL_ISAVAILABLE(glGetProgramivNV)) nfglGetProgramivNV( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETQUERYBUFFEROBJECTI64V: D(funcname = "glGetQueryBufferObjecti64v"); if (GL_ISAVAILABLE(glGetQueryBufferObjecti64v)) nfglGetQueryBufferObjecti64v( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLenum pname */ getStackedParameter(3) /* GLintptr offset */); break; case NFOSMESA_GLGETQUERYBUFFEROBJECTIV: D(funcname = "glGetQueryBufferObjectiv"); if (GL_ISAVAILABLE(glGetQueryBufferObjectiv)) nfglGetQueryBufferObjectiv( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLenum pname */ getStackedParameter(3) /* GLintptr offset */); break; case NFOSMESA_GLGETQUERYBUFFEROBJECTUI64V: D(funcname = "glGetQueryBufferObjectui64v"); if (GL_ISAVAILABLE(glGetQueryBufferObjectui64v)) nfglGetQueryBufferObjectui64v( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLenum pname */ getStackedParameter(3) /* GLintptr offset */); break; case NFOSMESA_GLGETQUERYBUFFEROBJECTUIV: D(funcname = "glGetQueryBufferObjectuiv"); if (GL_ISAVAILABLE(glGetQueryBufferObjectuiv)) nfglGetQueryBufferObjectuiv( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLenum pname */ getStackedParameter(3) /* GLintptr offset */); break; case NFOSMESA_GLGETQUERYINDEXEDIV: D(funcname = "glGetQueryIndexediv"); if (GL_ISAVAILABLE(glGetQueryIndexediv)) nfglGetQueryIndexediv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETQUERYOBJECTI64V: D(funcname = "glGetQueryObjecti64v"); if (GL_ISAVAILABLE(glGetQueryObjecti64v)) nfglGetQueryObjecti64v( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint64 *) /* GLint64 *params */); break; case NFOSMESA_GLGETQUERYOBJECTI64VEXT: D(funcname = "glGetQueryObjecti64vEXT"); if (GL_ISAVAILABLE(glGetQueryObjecti64vEXT)) nfglGetQueryObjecti64vEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint64 *) /* GLint64 *params */); break; case NFOSMESA_GLGETQUERYOBJECTIV: D(funcname = "glGetQueryObjectiv"); if (GL_ISAVAILABLE(glGetQueryObjectiv)) nfglGetQueryObjectiv( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETQUERYOBJECTIVARB: D(funcname = "glGetQueryObjectivARB"); if (GL_ISAVAILABLE(glGetQueryObjectivARB)) nfglGetQueryObjectivARB( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETQUERYOBJECTUI64V: D(funcname = "glGetQueryObjectui64v"); if (GL_ISAVAILABLE(glGetQueryObjectui64v)) nfglGetQueryObjectui64v( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint64 *) /* GLuint64 *params */); break; case NFOSMESA_GLGETQUERYOBJECTUI64VEXT: D(funcname = "glGetQueryObjectui64vEXT"); if (GL_ISAVAILABLE(glGetQueryObjectui64vEXT)) nfglGetQueryObjectui64vEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint64 *) /* GLuint64 *params */); break; case NFOSMESA_GLGETQUERYOBJECTUIV: D(funcname = "glGetQueryObjectuiv"); if (GL_ISAVAILABLE(glGetQueryObjectuiv)) nfglGetQueryObjectuiv( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETQUERYOBJECTUIVARB: D(funcname = "glGetQueryObjectuivARB"); if (GL_ISAVAILABLE(glGetQueryObjectuivARB)) nfglGetQueryObjectuivARB( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETQUERYIV: D(funcname = "glGetQueryiv"); if (GL_ISAVAILABLE(glGetQueryiv)) nfglGetQueryiv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETQUERYIVARB: D(funcname = "glGetQueryivARB"); if (GL_ISAVAILABLE(glGetQueryivARB)) nfglGetQueryivARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETRENDERBUFFERPARAMETERIV: D(funcname = "glGetRenderbufferParameteriv"); if (GL_ISAVAILABLE(glGetRenderbufferParameteriv)) nfglGetRenderbufferParameteriv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETRENDERBUFFERPARAMETERIVEXT: D(funcname = "glGetRenderbufferParameterivEXT"); if (GL_ISAVAILABLE(glGetRenderbufferParameterivEXT)) nfglGetRenderbufferParameterivEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETSAMPLERPARAMETERIIV: D(funcname = "glGetSamplerParameterIiv"); if (GL_ISAVAILABLE(glGetSamplerParameterIiv)) nfglGetSamplerParameterIiv( getStackedParameter(0), /* GLuint sampler */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETSAMPLERPARAMETERIUIV: D(funcname = "glGetSamplerParameterIuiv"); if (GL_ISAVAILABLE(glGetSamplerParameterIuiv)) nfglGetSamplerParameterIuiv( getStackedParameter(0), /* GLuint sampler */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETSAMPLERPARAMETERFV: D(funcname = "glGetSamplerParameterfv"); if (GL_ISAVAILABLE(glGetSamplerParameterfv)) nfglGetSamplerParameterfv( getStackedParameter(0), /* GLuint sampler */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETSAMPLERPARAMETERIV: D(funcname = "glGetSamplerParameteriv"); if (GL_ISAVAILABLE(glGetSamplerParameteriv)) nfglGetSamplerParameteriv( getStackedParameter(0), /* GLuint sampler */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETSEMAPHOREPARAMETERUI64VEXT: D(funcname = "glGetSemaphoreParameterui64vEXT"); if (GL_ISAVAILABLE(glGetSemaphoreParameterui64vEXT)) nfglGetSemaphoreParameterui64vEXT( getStackedParameter(0), /* GLuint semaphore */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint64 *) /* GLuint64 *params */); break; case NFOSMESA_GLGETSEPARABLEFILTER: D(funcname = "glGetSeparableFilter"); if (GL_ISAVAILABLE(glGetSeparableFilter)) nfglGetSeparableFilter( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, void *), /* void *row */ getStackedPointer(4, void *), /* void *column */ getStackedPointer(5, void *) /* void *span */); break; case NFOSMESA_GLGETSEPARABLEFILTEREXT: D(funcname = "glGetSeparableFilterEXT"); if (GL_ISAVAILABLE(glGetSeparableFilterEXT)) nfglGetSeparableFilterEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, void *), /* void *row */ getStackedPointer(4, void *), /* void *column */ getStackedPointer(5, void *) /* void *span */); break; case NFOSMESA_GLGETSHADERINFOLOG: D(funcname = "glGetShaderInfoLog"); if (GL_ISAVAILABLE(glGetShaderInfoLog)) nfglGetShaderInfoLog( getStackedParameter(0), /* GLuint shader */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLsizei *), /* GLsizei *length */ getStackedPointer(3, GLchar *) /* GLchar *infoLog */); break; case NFOSMESA_GLGETSHADERPRECISIONFORMAT: D(funcname = "glGetShaderPrecisionFormat"); if (GL_ISAVAILABLE(glGetShaderPrecisionFormat)) nfglGetShaderPrecisionFormat( getStackedParameter(0), /* GLenum shadertype */ getStackedParameter(1), /* GLenum precisiontype */ getStackedPointer(2, GLint *), /* GLint *range */ getStackedPointer(3, GLint *) /* GLint *precision */); break; case NFOSMESA_GLGETSHADERSOURCE: D(funcname = "glGetShaderSource"); if (GL_ISAVAILABLE(glGetShaderSource)) nfglGetShaderSource( getStackedParameter(0), /* GLuint shader */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLsizei *), /* GLsizei *length */ getStackedPointer(3, GLchar *) /* GLchar *source */); break; case NFOSMESA_GLGETSHADERSOURCEARB: D(funcname = "glGetShaderSourceARB"); if (GL_ISAVAILABLE(glGetShaderSourceARB)) nfglGetShaderSourceARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB obj */ getStackedParameter(1), /* GLsizei maxLength */ getStackedPointer(2, GLsizei *), /* GLsizei *length */ getStackedPointer(3, GLcharARB *) /* GLcharARB *source */); break; case NFOSMESA_GLGETSHADERIV: D(funcname = "glGetShaderiv"); if (GL_ISAVAILABLE(glGetShaderiv)) nfglGetShaderiv( getStackedParameter(0), /* GLuint shader */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETSHARPENTEXFUNCSGIS: D(funcname = "glGetSharpenTexFuncSGIS"); if (GL_ISAVAILABLE(glGetSharpenTexFuncSGIS)) nfglGetSharpenTexFuncSGIS( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, GLfloat *) /* GLfloat *points */); break; case NFOSMESA_GLGETSTAGEINDEXNV: D(funcname = "glGetStageIndexNV"); if (GL_ISAVAILABLE(glGetStageIndexNV)) ret = nfglGetStageIndexNV( getStackedParameter(0) /* GLenum shadertype */); break; #if 0 case NFOSMESA_GLGETSTRING: D(funcname = "glGetString"); if (GL_ISAVAILABLE(glGetString)) ret = (uint32)(uintptr_t)nfglGetString( getStackedParameter(0) /* GLenum name */); break; #endif #if 0 case NFOSMESA_GLGETSTRINGI: D(funcname = "glGetStringi"); if (GL_ISAVAILABLE(glGetStringi)) ret = (uint32)(uintptr_t)nfglGetStringi( getStackedParameter(0), /* GLenum name */ getStackedParameter(1) /* GLuint index */); break; #endif case NFOSMESA_GLGETSUBROUTINEINDEX: D(funcname = "glGetSubroutineIndex"); if (GL_ISAVAILABLE(glGetSubroutineIndex)) ret = nfglGetSubroutineIndex( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum shadertype */ getStackedPointer(2, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLGETSUBROUTINEUNIFORMLOCATION: D(funcname = "glGetSubroutineUniformLocation"); if (GL_ISAVAILABLE(glGetSubroutineUniformLocation)) ret = nfglGetSubroutineUniformLocation( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum shadertype */ getStackedPointer(2, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLGETSYNCIV: D(funcname = "glGetSynciv"); if (GL_ISAVAILABLE(glGetSynciv)) nfglGetSynciv( (GLsync)(uintptr_t)getStackedParameter(0), /* GLsync sync */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLsizei *), /* GLsizei *length */ getStackedPointer(4, GLint *) /* GLint *values */); break; case NFOSMESA_GLGETTEXBUMPPARAMETERFVATI: D(funcname = "glGetTexBumpParameterfvATI"); if (GL_ISAVAILABLE(glGetTexBumpParameterfvATI)) nfglGetTexBumpParameterfvATI( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, GLfloat *) /* GLfloat *param */); break; case NFOSMESA_GLGETTEXBUMPPARAMETERIVATI: D(funcname = "glGetTexBumpParameterivATI"); if (GL_ISAVAILABLE(glGetTexBumpParameterivATI)) nfglGetTexBumpParameterivATI( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, GLint *) /* GLint *param */); break; case NFOSMESA_GLGETTEXENVFV: D(funcname = "glGetTexEnvfv"); if (GL_ISAVAILABLE(glGetTexEnvfv)) nfglGetTexEnvfv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETTEXENVIV: D(funcname = "glGetTexEnviv"); if (GL_ISAVAILABLE(glGetTexEnviv)) nfglGetTexEnviv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETTEXENVXVOES: D(funcname = "glGetTexEnvxvOES"); if (GL_ISAVAILABLE(glGetTexEnvxvOES)) nfglGetTexEnvxvOES( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfixed *) /* GLfixed *params */); break; case NFOSMESA_GLGETTEXFILTERFUNCSGIS: D(funcname = "glGetTexFilterFuncSGIS"); if (GL_ISAVAILABLE(glGetTexFilterFuncSGIS)) nfglGetTexFilterFuncSGIS( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum filter */ getStackedPointer(2, GLfloat *) /* GLfloat *weights */); break; case NFOSMESA_GLGETTEXGENDV: D(funcname = "glGetTexGendv"); if (GL_ISAVAILABLE(glGetTexGendv)) nfglGetTexGendv( getStackedParameter(0), /* GLenum coord */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETTEXGENFV: D(funcname = "glGetTexGenfv"); if (GL_ISAVAILABLE(glGetTexGenfv)) nfglGetTexGenfv( getStackedParameter(0), /* GLenum coord */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETTEXGENIV: D(funcname = "glGetTexGeniv"); if (GL_ISAVAILABLE(glGetTexGeniv)) nfglGetTexGeniv( getStackedParameter(0), /* GLenum coord */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETTEXGENXVOES: D(funcname = "glGetTexGenxvOES"); if (GL_ISAVAILABLE(glGetTexGenxvOES)) nfglGetTexGenxvOES( getStackedParameter(0), /* GLenum coord */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfixed *) /* GLfixed *params */); break; case NFOSMESA_GLGETTEXIMAGE: D(funcname = "glGetTexImage"); if (GL_ISAVAILABLE(glGetTexImage)) nfglGetTexImage( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedPointer(4, GLvoid *) /* GLvoid *pixels */); break; case NFOSMESA_GLGETTEXLEVELPARAMETERFV: D(funcname = "glGetTexLevelParameterfv"); if (GL_ISAVAILABLE(glGetTexLevelParameterfv)) nfglGetTexLevelParameterfv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETTEXLEVELPARAMETERIV: D(funcname = "glGetTexLevelParameteriv"); if (GL_ISAVAILABLE(glGetTexLevelParameteriv)) nfglGetTexLevelParameteriv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETTEXLEVELPARAMETERXVOES: D(funcname = "glGetTexLevelParameterxvOES"); if (GL_ISAVAILABLE(glGetTexLevelParameterxvOES)) nfglGetTexLevelParameterxvOES( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLfixed *) /* GLfixed *params */); break; case NFOSMESA_GLGETTEXPARAMETERIIV: D(funcname = "glGetTexParameterIiv"); if (GL_ISAVAILABLE(glGetTexParameterIiv)) nfglGetTexParameterIiv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETTEXPARAMETERIIVEXT: D(funcname = "glGetTexParameterIivEXT"); if (GL_ISAVAILABLE(glGetTexParameterIivEXT)) nfglGetTexParameterIivEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETTEXPARAMETERIUIV: D(funcname = "glGetTexParameterIuiv"); if (GL_ISAVAILABLE(glGetTexParameterIuiv)) nfglGetTexParameterIuiv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETTEXPARAMETERIUIVEXT: D(funcname = "glGetTexParameterIuivEXT"); if (GL_ISAVAILABLE(glGetTexParameterIuivEXT)) nfglGetTexParameterIuivEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; #if 0 case NFOSMESA_GLGETTEXPARAMETERPOINTERVAPPLE: D(funcname = "glGetTexParameterPointervAPPLE"); if (GL_ISAVAILABLE(glGetTexParameterPointervAPPLE)) nfglGetTexParameterPointervAPPLE( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, void * *) /* void * *params */); break; #endif case NFOSMESA_GLGETTEXPARAMETERFV: D(funcname = "glGetTexParameterfv"); if (GL_ISAVAILABLE(glGetTexParameterfv)) nfglGetTexParameterfv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETTEXPARAMETERIV: D(funcname = "glGetTexParameteriv"); if (GL_ISAVAILABLE(glGetTexParameteriv)) nfglGetTexParameteriv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETTEXPARAMETERXVOES: D(funcname = "glGetTexParameterxvOES"); if (GL_ISAVAILABLE(glGetTexParameterxvOES)) nfglGetTexParameterxvOES( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfixed *) /* GLfixed *params */); break; case NFOSMESA_GLGETTEXTUREHANDLEARB: D(funcname = "glGetTextureHandleARB"); if (GL_ISAVAILABLE(glGetTextureHandleARB)) ret = nfglGetTextureHandleARB( getStackedParameter(0) /* GLuint texture */); break; case NFOSMESA_GLGETTEXTUREHANDLENV: D(funcname = "glGetTextureHandleNV"); if (GL_ISAVAILABLE(glGetTextureHandleNV)) ret = nfglGetTextureHandleNV( getStackedParameter(0) /* GLuint texture */); break; case NFOSMESA_GLGETTEXTUREIMAGE: D(funcname = "glGetTextureImage"); if (GL_ISAVAILABLE(glGetTextureImage)) nfglGetTextureImage( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4), /* GLsizei bufSize */ getStackedPointer(5, void *) /* void *pixels */); break; case NFOSMESA_GLGETTEXTUREIMAGEEXT: D(funcname = "glGetTextureImageEXT"); if (GL_ISAVAILABLE(glGetTextureImageEXT)) nfglGetTextureImageEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum format */ getStackedParameter(4), /* GLenum type */ getStackedPointer(5, void *) /* void *pixels */); break; case NFOSMESA_GLGETTEXTURELEVELPARAMETERFV: D(funcname = "glGetTextureLevelParameterfv"); if (GL_ISAVAILABLE(glGetTextureLevelParameterfv)) nfglGetTextureLevelParameterfv( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETTEXTURELEVELPARAMETERFVEXT: D(funcname = "glGetTextureLevelParameterfvEXT"); if (GL_ISAVAILABLE(glGetTextureLevelParameterfvEXT)) nfglGetTextureLevelParameterfvEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum pname */ getStackedPointer(4, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETTEXTURELEVELPARAMETERIV: D(funcname = "glGetTextureLevelParameteriv"); if (GL_ISAVAILABLE(glGetTextureLevelParameteriv)) nfglGetTextureLevelParameteriv( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETTEXTURELEVELPARAMETERIVEXT: D(funcname = "glGetTextureLevelParameterivEXT"); if (GL_ISAVAILABLE(glGetTextureLevelParameterivEXT)) nfglGetTextureLevelParameterivEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum pname */ getStackedPointer(4, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETTEXTUREPARAMETERIIV: D(funcname = "glGetTextureParameterIiv"); if (GL_ISAVAILABLE(glGetTextureParameterIiv)) nfglGetTextureParameterIiv( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETTEXTUREPARAMETERIIVEXT: D(funcname = "glGetTextureParameterIivEXT"); if (GL_ISAVAILABLE(glGetTextureParameterIivEXT)) nfglGetTextureParameterIivEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETTEXTUREPARAMETERIUIV: D(funcname = "glGetTextureParameterIuiv"); if (GL_ISAVAILABLE(glGetTextureParameterIuiv)) nfglGetTextureParameterIuiv( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETTEXTUREPARAMETERIUIVEXT: D(funcname = "glGetTextureParameterIuivEXT"); if (GL_ISAVAILABLE(glGetTextureParameterIuivEXT)) nfglGetTextureParameterIuivEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETTEXTUREPARAMETERFV: D(funcname = "glGetTextureParameterfv"); if (GL_ISAVAILABLE(glGetTextureParameterfv)) nfglGetTextureParameterfv( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETTEXTUREPARAMETERFVEXT: D(funcname = "glGetTextureParameterfvEXT"); if (GL_ISAVAILABLE(glGetTextureParameterfvEXT)) nfglGetTextureParameterfvEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETTEXTUREPARAMETERIV: D(funcname = "glGetTextureParameteriv"); if (GL_ISAVAILABLE(glGetTextureParameteriv)) nfglGetTextureParameteriv( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETTEXTUREPARAMETERIVEXT: D(funcname = "glGetTextureParameterivEXT"); if (GL_ISAVAILABLE(glGetTextureParameterivEXT)) nfglGetTextureParameterivEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETTEXTURESAMPLERHANDLEARB: D(funcname = "glGetTextureSamplerHandleARB"); if (GL_ISAVAILABLE(glGetTextureSamplerHandleARB)) ret = nfglGetTextureSamplerHandleARB( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1) /* GLuint sampler */); break; case NFOSMESA_GLGETTEXTURESAMPLERHANDLENV: D(funcname = "glGetTextureSamplerHandleNV"); if (GL_ISAVAILABLE(glGetTextureSamplerHandleNV)) ret = nfglGetTextureSamplerHandleNV( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1) /* GLuint sampler */); break; case NFOSMESA_GLGETTEXTURESUBIMAGE: D(funcname = "glGetTextureSubImage"); if (GL_ISAVAILABLE(glGetTextureSubImage)) nfglGetTextureSubImage( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLsizei depth */ getStackedParameter(8), /* GLenum format */ getStackedParameter(9), /* GLenum type */ getStackedParameter(10), /* GLsizei bufSize */ getStackedPointer(11, void *) /* void *pixels */); break; case NFOSMESA_GLGETTRACKMATRIXIVNV: D(funcname = "glGetTrackMatrixivNV"); if (GL_ISAVAILABLE(glGetTrackMatrixivNV)) nfglGetTrackMatrixivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint address */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETTRANSFORMFEEDBACKVARYING: D(funcname = "glGetTransformFeedbackVarying"); if (GL_ISAVAILABLE(glGetTransformFeedbackVarying)) nfglGetTransformFeedbackVarying( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLsizei *), /* GLsizei *length */ getStackedPointer(4, GLsizei *), /* GLsizei *size */ getStackedPointer(5, GLenum *), /* GLenum *type */ getStackedPointer(6, GLchar *) /* GLchar *name */); break; case NFOSMESA_GLGETTRANSFORMFEEDBACKVARYINGEXT: D(funcname = "glGetTransformFeedbackVaryingEXT"); if (GL_ISAVAILABLE(glGetTransformFeedbackVaryingEXT)) nfglGetTransformFeedbackVaryingEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLsizei *), /* GLsizei *length */ getStackedPointer(4, GLsizei *), /* GLsizei *size */ getStackedPointer(5, GLenum *), /* GLenum *type */ getStackedPointer(6, GLchar *) /* GLchar *name */); break; case NFOSMESA_GLGETTRANSFORMFEEDBACKVARYINGNV: D(funcname = "glGetTransformFeedbackVaryingNV"); if (GL_ISAVAILABLE(glGetTransformFeedbackVaryingNV)) nfglGetTransformFeedbackVaryingNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLint *) /* GLint *location */); break; case NFOSMESA_GLGETTRANSFORMFEEDBACKI64_V: D(funcname = "glGetTransformFeedbacki64_v"); if (GL_ISAVAILABLE(glGetTransformFeedbacki64_v)) nfglGetTransformFeedbacki64_v( getStackedParameter(0), /* GLuint xfb */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2), /* GLuint index */ getStackedPointer(3, GLint64 *) /* GLint64 *param */); break; case NFOSMESA_GLGETTRANSFORMFEEDBACKI_V: D(funcname = "glGetTransformFeedbacki_v"); if (GL_ISAVAILABLE(glGetTransformFeedbacki_v)) nfglGetTransformFeedbacki_v( getStackedParameter(0), /* GLuint xfb */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2), /* GLuint index */ getStackedPointer(3, GLint *) /* GLint *param */); break; case NFOSMESA_GLGETTRANSFORMFEEDBACKIV: D(funcname = "glGetTransformFeedbackiv"); if (GL_ISAVAILABLE(glGetTransformFeedbackiv)) nfglGetTransformFeedbackiv( getStackedParameter(0), /* GLuint xfb */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *param */); break; case NFOSMESA_GLGETUNIFORMBLOCKINDEX: D(funcname = "glGetUniformBlockIndex"); if (GL_ISAVAILABLE(glGetUniformBlockIndex)) ret = nfglGetUniformBlockIndex( getStackedParameter(0), /* GLuint program */ getStackedPointer(1, const GLchar *) /* const GLchar *uniformBlockName */); break; case NFOSMESA_GLGETUNIFORMBUFFERSIZEEXT: D(funcname = "glGetUniformBufferSizeEXT"); if (GL_ISAVAILABLE(glGetUniformBufferSizeEXT)) ret = nfglGetUniformBufferSizeEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1) /* GLint location */); break; case NFOSMESA_GLGETUNIFORMINDICES: D(funcname = "glGetUniformIndices"); if (GL_ISAVAILABLE(glGetUniformIndices)) nfglGetUniformIndices( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLsizei uniformCount */ getStackedPointer(2, const GLchar *const *), /* const GLchar *const *uniformNames */ getStackedPointer(3, GLuint *) /* GLuint *uniformIndices */); break; case NFOSMESA_GLGETUNIFORMLOCATION: D(funcname = "glGetUniformLocation"); if (GL_ISAVAILABLE(glGetUniformLocation)) ret = nfglGetUniformLocation( getStackedParameter(0), /* GLuint program */ getStackedPointer(1, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLGETUNIFORMLOCATIONARB: D(funcname = "glGetUniformLocationARB"); if (GL_ISAVAILABLE(glGetUniformLocationARB)) ret = nfglGetUniformLocationARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB programObj */ getStackedPointer(1, const GLcharARB *) /* const GLcharARB *name */); break; case NFOSMESA_GLGETUNIFORMOFFSETEXT: D(funcname = "glGetUniformOffsetEXT"); if (GL_ISAVAILABLE(glGetUniformOffsetEXT)) ret = nfglGetUniformOffsetEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1) /* GLint location */); break; case NFOSMESA_GLGETUNIFORMSUBROUTINEUIV: D(funcname = "glGetUniformSubroutineuiv"); if (GL_ISAVAILABLE(glGetUniformSubroutineuiv)) nfglGetUniformSubroutineuiv( getStackedParameter(0), /* GLenum shadertype */ getStackedParameter(1), /* GLint location */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETUNIFORMDV: D(funcname = "glGetUniformdv"); if (GL_ISAVAILABLE(glGetUniformdv)) nfglGetUniformdv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedPointer(2, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETUNIFORMFV: D(funcname = "glGetUniformfv"); if (GL_ISAVAILABLE(glGetUniformfv)) nfglGetUniformfv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETUNIFORMFVARB: D(funcname = "glGetUniformfvARB"); if (GL_ISAVAILABLE(glGetUniformfvARB)) nfglGetUniformfvARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB programObj */ getStackedParameter(1), /* GLint location */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETUNIFORMI64VARB: D(funcname = "glGetUniformi64vARB"); if (GL_ISAVAILABLE(glGetUniformi64vARB)) nfglGetUniformi64vARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedPointer(2, GLint64 *) /* GLint64 *params */); break; case NFOSMESA_GLGETUNIFORMI64VNV: D(funcname = "glGetUniformi64vNV"); if (GL_ISAVAILABLE(glGetUniformi64vNV)) nfglGetUniformi64vNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedPointer(2, GLint64EXT *) /* GLint64EXT *params */); break; case NFOSMESA_GLGETUNIFORMIV: D(funcname = "glGetUniformiv"); if (GL_ISAVAILABLE(glGetUniformiv)) nfglGetUniformiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETUNIFORMIVARB: D(funcname = "glGetUniformivARB"); if (GL_ISAVAILABLE(glGetUniformivARB)) nfglGetUniformivARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB programObj */ getStackedParameter(1), /* GLint location */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETUNIFORMUI64VARB: D(funcname = "glGetUniformui64vARB"); if (GL_ISAVAILABLE(glGetUniformui64vARB)) nfglGetUniformui64vARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedPointer(2, GLuint64 *) /* GLuint64 *params */); break; case NFOSMESA_GLGETUNIFORMUI64VNV: D(funcname = "glGetUniformui64vNV"); if (GL_ISAVAILABLE(glGetUniformui64vNV)) nfglGetUniformui64vNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedPointer(2, GLuint64EXT *) /* GLuint64EXT *params */); break; case NFOSMESA_GLGETUNIFORMUIV: D(funcname = "glGetUniformuiv"); if (GL_ISAVAILABLE(glGetUniformuiv)) nfglGetUniformuiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETUNIFORMUIVEXT: D(funcname = "glGetUniformuivEXT"); if (GL_ISAVAILABLE(glGetUniformuivEXT)) nfglGetUniformuivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; #if 0 case NFOSMESA_GLGETUNSIGNEDBYTEI_VEXT: D(funcname = "glGetUnsignedBytei_vEXT"); if (GL_ISAVAILABLE(glGetUnsignedBytei_vEXT)) nfglGetUnsignedBytei_vEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, GLubyte *) /* GLubyte *data */); break; #endif #if 0 case NFOSMESA_GLGETUNSIGNEDBYTEVEXT: D(funcname = "glGetUnsignedBytevEXT"); if (GL_ISAVAILABLE(glGetUnsignedBytevEXT)) nfglGetUnsignedBytevEXT( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, GLubyte *) /* GLubyte *data */); break; #endif case NFOSMESA_GLGETVARIANTARRAYOBJECTFVATI: D(funcname = "glGetVariantArrayObjectfvATI"); if (GL_ISAVAILABLE(glGetVariantArrayObjectfvATI)) nfglGetVariantArrayObjectfvATI( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETVARIANTARRAYOBJECTIVATI: D(funcname = "glGetVariantArrayObjectivATI"); if (GL_ISAVAILABLE(glGetVariantArrayObjectivATI)) nfglGetVariantArrayObjectivATI( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETVARIANTBOOLEANVEXT: D(funcname = "glGetVariantBooleanvEXT"); if (GL_ISAVAILABLE(glGetVariantBooleanvEXT)) nfglGetVariantBooleanvEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum value */ getStackedPointer(2, GLboolean *) /* GLboolean *data */); break; case NFOSMESA_GLGETVARIANTFLOATVEXT: D(funcname = "glGetVariantFloatvEXT"); if (GL_ISAVAILABLE(glGetVariantFloatvEXT)) nfglGetVariantFloatvEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum value */ getStackedPointer(2, GLfloat *) /* GLfloat *data */); break; case NFOSMESA_GLGETVARIANTINTEGERVEXT: D(funcname = "glGetVariantIntegervEXT"); if (GL_ISAVAILABLE(glGetVariantIntegervEXT)) nfglGetVariantIntegervEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum value */ getStackedPointer(2, GLint *) /* GLint *data */); break; case NFOSMESA_GLGETVARIANTPOINTERVEXT: D(funcname = "glGetVariantPointervEXT"); if (GL_ISAVAILABLE(glGetVariantPointervEXT)) nfglGetVariantPointervEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum value */ getStackedPointer(2, void * *) /* void * *data */); break; case NFOSMESA_GLGETVARYINGLOCATIONNV: D(funcname = "glGetVaryingLocationNV"); if (GL_ISAVAILABLE(glGetVaryingLocationNV)) ret = nfglGetVaryingLocationNV( getStackedParameter(0), /* GLuint program */ getStackedPointer(1, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLGETVERTEXARRAYINDEXED64IV: D(funcname = "glGetVertexArrayIndexed64iv"); if (GL_ISAVAILABLE(glGetVertexArrayIndexed64iv)) nfglGetVertexArrayIndexed64iv( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint64 *) /* GLint64 *param */); break; case NFOSMESA_GLGETVERTEXARRAYINDEXEDIV: D(funcname = "glGetVertexArrayIndexediv"); if (GL_ISAVAILABLE(glGetVertexArrayIndexediv)) nfglGetVertexArrayIndexediv( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *param */); break; case NFOSMESA_GLGETVERTEXARRAYINTEGERI_VEXT: D(funcname = "glGetVertexArrayIntegeri_vEXT"); if (GL_ISAVAILABLE(glGetVertexArrayIntegeri_vEXT)) nfglGetVertexArrayIntegeri_vEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *param */); break; case NFOSMESA_GLGETVERTEXARRAYINTEGERVEXT: D(funcname = "glGetVertexArrayIntegervEXT"); if (GL_ISAVAILABLE(glGetVertexArrayIntegervEXT)) nfglGetVertexArrayIntegervEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *param */); break; case NFOSMESA_GLGETVERTEXARRAYPOINTERI_VEXT: D(funcname = "glGetVertexArrayPointeri_vEXT"); if (GL_ISAVAILABLE(glGetVertexArrayPointeri_vEXT)) nfglGetVertexArrayPointeri_vEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, void * *) /* void * *param */); break; case NFOSMESA_GLGETVERTEXARRAYPOINTERVEXT: D(funcname = "glGetVertexArrayPointervEXT"); if (GL_ISAVAILABLE(glGetVertexArrayPointervEXT)) nfglGetVertexArrayPointervEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, void * *) /* void * *param */); break; case NFOSMESA_GLGETVERTEXARRAYIV: D(funcname = "glGetVertexArrayiv"); if (GL_ISAVAILABLE(glGetVertexArrayiv)) nfglGetVertexArrayiv( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *param */); break; case NFOSMESA_GLGETVERTEXATTRIBARRAYOBJECTFVATI: D(funcname = "glGetVertexAttribArrayObjectfvATI"); if (GL_ISAVAILABLE(glGetVertexAttribArrayObjectfvATI)) nfglGetVertexAttribArrayObjectfvATI( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETVERTEXATTRIBARRAYOBJECTIVATI: D(funcname = "glGetVertexAttribArrayObjectivATI"); if (GL_ISAVAILABLE(glGetVertexAttribArrayObjectivATI)) nfglGetVertexAttribArrayObjectivATI( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETVERTEXATTRIBIIV: D(funcname = "glGetVertexAttribIiv"); if (GL_ISAVAILABLE(glGetVertexAttribIiv)) nfglGetVertexAttribIiv( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETVERTEXATTRIBIIVEXT: D(funcname = "glGetVertexAttribIivEXT"); if (GL_ISAVAILABLE(glGetVertexAttribIivEXT)) nfglGetVertexAttribIivEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETVERTEXATTRIBIUIV: D(funcname = "glGetVertexAttribIuiv"); if (GL_ISAVAILABLE(glGetVertexAttribIuiv)) nfglGetVertexAttribIuiv( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETVERTEXATTRIBIUIVEXT: D(funcname = "glGetVertexAttribIuivEXT"); if (GL_ISAVAILABLE(glGetVertexAttribIuivEXT)) nfglGetVertexAttribIuivEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETVERTEXATTRIBLDV: D(funcname = "glGetVertexAttribLdv"); if (GL_ISAVAILABLE(glGetVertexAttribLdv)) nfglGetVertexAttribLdv( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETVERTEXATTRIBLDVEXT: D(funcname = "glGetVertexAttribLdvEXT"); if (GL_ISAVAILABLE(glGetVertexAttribLdvEXT)) nfglGetVertexAttribLdvEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETVERTEXATTRIBLI64VNV: D(funcname = "glGetVertexAttribLi64vNV"); if (GL_ISAVAILABLE(glGetVertexAttribLi64vNV)) nfglGetVertexAttribLi64vNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint64EXT *) /* GLint64EXT *params */); break; case NFOSMESA_GLGETVERTEXATTRIBLUI64VARB: D(funcname = "glGetVertexAttribLui64vARB"); if (GL_ISAVAILABLE(glGetVertexAttribLui64vARB)) nfglGetVertexAttribLui64vARB( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint64EXT *) /* GLuint64EXT *params */); break; case NFOSMESA_GLGETVERTEXATTRIBLUI64VNV: D(funcname = "glGetVertexAttribLui64vNV"); if (GL_ISAVAILABLE(glGetVertexAttribLui64vNV)) nfglGetVertexAttribLui64vNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint64EXT *) /* GLuint64EXT *params */); break; case NFOSMESA_GLGETVERTEXATTRIBPOINTERV: D(funcname = "glGetVertexAttribPointerv"); if (GL_ISAVAILABLE(glGetVertexAttribPointerv)) nfglGetVertexAttribPointerv( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, void * *) /* void * *pointer */); break; case NFOSMESA_GLGETVERTEXATTRIBPOINTERVARB: D(funcname = "glGetVertexAttribPointervARB"); if (GL_ISAVAILABLE(glGetVertexAttribPointervARB)) nfglGetVertexAttribPointervARB( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, void * *) /* void * *pointer */); break; case NFOSMESA_GLGETVERTEXATTRIBPOINTERVNV: D(funcname = "glGetVertexAttribPointervNV"); if (GL_ISAVAILABLE(glGetVertexAttribPointervNV)) nfglGetVertexAttribPointervNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, void * *) /* void * *pointer */); break; case NFOSMESA_GLGETVERTEXATTRIBDV: D(funcname = "glGetVertexAttribdv"); if (GL_ISAVAILABLE(glGetVertexAttribdv)) nfglGetVertexAttribdv( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETVERTEXATTRIBDVARB: D(funcname = "glGetVertexAttribdvARB"); if (GL_ISAVAILABLE(glGetVertexAttribdvARB)) nfglGetVertexAttribdvARB( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETVERTEXATTRIBDVNV: D(funcname = "glGetVertexAttribdvNV"); if (GL_ISAVAILABLE(glGetVertexAttribdvNV)) nfglGetVertexAttribdvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETVERTEXATTRIBFV: D(funcname = "glGetVertexAttribfv"); if (GL_ISAVAILABLE(glGetVertexAttribfv)) nfglGetVertexAttribfv( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETVERTEXATTRIBFVARB: D(funcname = "glGetVertexAttribfvARB"); if (GL_ISAVAILABLE(glGetVertexAttribfvARB)) nfglGetVertexAttribfvARB( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETVERTEXATTRIBFVNV: D(funcname = "glGetVertexAttribfvNV"); if (GL_ISAVAILABLE(glGetVertexAttribfvNV)) nfglGetVertexAttribfvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETVERTEXATTRIBIV: D(funcname = "glGetVertexAttribiv"); if (GL_ISAVAILABLE(glGetVertexAttribiv)) nfglGetVertexAttribiv( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETVERTEXATTRIBIVARB: D(funcname = "glGetVertexAttribivARB"); if (GL_ISAVAILABLE(glGetVertexAttribivARB)) nfglGetVertexAttribivARB( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETVERTEXATTRIBIVNV: D(funcname = "glGetVertexAttribivNV"); if (GL_ISAVAILABLE(glGetVertexAttribivNV)) nfglGetVertexAttribivNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETVIDEOCAPTURESTREAMDVNV: D(funcname = "glGetVideoCaptureStreamdvNV"); if (GL_ISAVAILABLE(glGetVideoCaptureStreamdvNV)) nfglGetVideoCaptureStreamdvNV( getStackedParameter(0), /* GLuint video_capture_slot */ getStackedParameter(1), /* GLuint stream */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETVIDEOCAPTURESTREAMFVNV: D(funcname = "glGetVideoCaptureStreamfvNV"); if (GL_ISAVAILABLE(glGetVideoCaptureStreamfvNV)) nfglGetVideoCaptureStreamfvNV( getStackedParameter(0), /* GLuint video_capture_slot */ getStackedParameter(1), /* GLuint stream */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETVIDEOCAPTURESTREAMIVNV: D(funcname = "glGetVideoCaptureStreamivNV"); if (GL_ISAVAILABLE(glGetVideoCaptureStreamivNV)) nfglGetVideoCaptureStreamivNV( getStackedParameter(0), /* GLuint video_capture_slot */ getStackedParameter(1), /* GLuint stream */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETVIDEOCAPTUREIVNV: D(funcname = "glGetVideoCaptureivNV"); if (GL_ISAVAILABLE(glGetVideoCaptureivNV)) nfglGetVideoCaptureivNV( getStackedParameter(0), /* GLuint video_capture_slot */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETVIDEOI64VNV: D(funcname = "glGetVideoi64vNV"); if (GL_ISAVAILABLE(glGetVideoi64vNV)) nfglGetVideoi64vNV( getStackedParameter(0), /* GLuint video_slot */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint64EXT *) /* GLint64EXT *params */); break; case NFOSMESA_GLGETVIDEOIVNV: D(funcname = "glGetVideoivNV"); if (GL_ISAVAILABLE(glGetVideoivNV)) nfglGetVideoivNV( getStackedParameter(0), /* GLuint video_slot */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETVIDEOUI64VNV: D(funcname = "glGetVideoui64vNV"); if (GL_ISAVAILABLE(glGetVideoui64vNV)) nfglGetVideoui64vNV( getStackedParameter(0), /* GLuint video_slot */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint64EXT *) /* GLuint64EXT *params */); break; case NFOSMESA_GLGETVIDEOUIVNV: D(funcname = "glGetVideouivNV"); if (GL_ISAVAILABLE(glGetVideouivNV)) nfglGetVideouivNV( getStackedParameter(0), /* GLuint video_slot */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, GLuint *) /* GLuint *params */); break; #if 0 case NFOSMESA_GLGETVKPROCADDRNV: D(funcname = "glGetVkProcAddrNV"); if (GL_ISAVAILABLE(glGetVkProcAddrNV)) ret = (uint32)(uintptr_t)nfglGetVkProcAddrNV( getStackedPointer(0, const GLchar *) /* const GLchar *name */); break; #endif case NFOSMESA_GLGETNCOLORTABLE: D(funcname = "glGetnColorTable"); if (GL_ISAVAILABLE(glGetnColorTable)) nfglGetnColorTable( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei bufSize */ getStackedPointer(4, void *) /* void *table */); break; case NFOSMESA_GLGETNCOLORTABLEARB: D(funcname = "glGetnColorTableARB"); if (GL_ISAVAILABLE(glGetnColorTableARB)) nfglGetnColorTableARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei bufSize */ getStackedPointer(4, void *) /* void *table */); break; case NFOSMESA_GLGETNCOMPRESSEDTEXIMAGE: D(funcname = "glGetnCompressedTexImage"); if (GL_ISAVAILABLE(glGetnCompressedTexImage)) nfglGetnCompressedTexImage( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint lod */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, void *) /* void *pixels */); break; case NFOSMESA_GLGETNCOMPRESSEDTEXIMAGEARB: D(funcname = "glGetnCompressedTexImageARB"); if (GL_ISAVAILABLE(glGetnCompressedTexImageARB)) nfglGetnCompressedTexImageARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint lod */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, void *) /* void *img */); break; case NFOSMESA_GLGETNCONVOLUTIONFILTER: D(funcname = "glGetnConvolutionFilter"); if (GL_ISAVAILABLE(glGetnConvolutionFilter)) nfglGetnConvolutionFilter( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei bufSize */ getStackedPointer(4, void *) /* void *image */); break; case NFOSMESA_GLGETNCONVOLUTIONFILTERARB: D(funcname = "glGetnConvolutionFilterARB"); if (GL_ISAVAILABLE(glGetnConvolutionFilterARB)) nfglGetnConvolutionFilterARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei bufSize */ getStackedPointer(4, void *) /* void *image */); break; case NFOSMESA_GLGETNHISTOGRAM: D(funcname = "glGetnHistogram"); if (GL_ISAVAILABLE(glGetnHistogram)) nfglGetnHistogram( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLboolean32 reset */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4), /* GLsizei bufSize */ getStackedPointer(5, void *) /* void *values */); break; case NFOSMESA_GLGETNHISTOGRAMARB: D(funcname = "glGetnHistogramARB"); if (GL_ISAVAILABLE(glGetnHistogramARB)) nfglGetnHistogramARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLboolean32 reset */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4), /* GLsizei bufSize */ getStackedPointer(5, void *) /* void *values */); break; case NFOSMESA_GLGETNMAPDV: D(funcname = "glGetnMapdv"); if (GL_ISAVAILABLE(glGetnMapdv)) nfglGetnMapdv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum query */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLdouble *) /* GLdouble *v */); break; case NFOSMESA_GLGETNMAPDVARB: D(funcname = "glGetnMapdvARB"); if (GL_ISAVAILABLE(glGetnMapdvARB)) nfglGetnMapdvARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum query */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLdouble *) /* GLdouble *v */); break; case NFOSMESA_GLGETNMAPFV: D(funcname = "glGetnMapfv"); if (GL_ISAVAILABLE(glGetnMapfv)) nfglGetnMapfv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum query */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLfloat *) /* GLfloat *v */); break; case NFOSMESA_GLGETNMAPFVARB: D(funcname = "glGetnMapfvARB"); if (GL_ISAVAILABLE(glGetnMapfvARB)) nfglGetnMapfvARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum query */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLfloat *) /* GLfloat *v */); break; case NFOSMESA_GLGETNMAPIV: D(funcname = "glGetnMapiv"); if (GL_ISAVAILABLE(glGetnMapiv)) nfglGetnMapiv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum query */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLint *) /* GLint *v */); break; case NFOSMESA_GLGETNMAPIVARB: D(funcname = "glGetnMapivARB"); if (GL_ISAVAILABLE(glGetnMapivARB)) nfglGetnMapivARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum query */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLint *) /* GLint *v */); break; case NFOSMESA_GLGETNMINMAX: D(funcname = "glGetnMinmax"); if (GL_ISAVAILABLE(glGetnMinmax)) nfglGetnMinmax( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLboolean32 reset */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4), /* GLsizei bufSize */ getStackedPointer(5, void *) /* void *values */); break; case NFOSMESA_GLGETNMINMAXARB: D(funcname = "glGetnMinmaxARB"); if (GL_ISAVAILABLE(glGetnMinmaxARB)) nfglGetnMinmaxARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLboolean32 reset */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4), /* GLsizei bufSize */ getStackedPointer(5, void *) /* void *values */); break; case NFOSMESA_GLGETNPIXELMAPFV: D(funcname = "glGetnPixelMapfv"); if (GL_ISAVAILABLE(glGetnPixelMapfv)) nfglGetnPixelMapfv( getStackedParameter(0), /* GLenum map */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLfloat *) /* GLfloat *values */); break; case NFOSMESA_GLGETNPIXELMAPFVARB: D(funcname = "glGetnPixelMapfvARB"); if (GL_ISAVAILABLE(glGetnPixelMapfvARB)) nfglGetnPixelMapfvARB( getStackedParameter(0), /* GLenum map */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLfloat *) /* GLfloat *values */); break; case NFOSMESA_GLGETNPIXELMAPUIV: D(funcname = "glGetnPixelMapuiv"); if (GL_ISAVAILABLE(glGetnPixelMapuiv)) nfglGetnPixelMapuiv( getStackedParameter(0), /* GLenum map */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLuint *) /* GLuint *values */); break; case NFOSMESA_GLGETNPIXELMAPUIVARB: D(funcname = "glGetnPixelMapuivARB"); if (GL_ISAVAILABLE(glGetnPixelMapuivARB)) nfglGetnPixelMapuivARB( getStackedParameter(0), /* GLenum map */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLuint *) /* GLuint *values */); break; case NFOSMESA_GLGETNPIXELMAPUSV: D(funcname = "glGetnPixelMapusv"); if (GL_ISAVAILABLE(glGetnPixelMapusv)) nfglGetnPixelMapusv( getStackedParameter(0), /* GLenum map */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLushort *) /* GLushort *values */); break; case NFOSMESA_GLGETNPIXELMAPUSVARB: D(funcname = "glGetnPixelMapusvARB"); if (GL_ISAVAILABLE(glGetnPixelMapusvARB)) nfglGetnPixelMapusvARB( getStackedParameter(0), /* GLenum map */ getStackedParameter(1), /* GLsizei bufSize */ getStackedPointer(2, GLushort *) /* GLushort *values */); break; case NFOSMESA_GLGETNPOLYGONSTIPPLE: D(funcname = "glGetnPolygonStipple"); if (GL_ISAVAILABLE(glGetnPolygonStipple)) nfglGetnPolygonStipple( getStackedParameter(0), /* GLsizei bufSize */ getStackedPointer(1, GLubyte *) /* GLubyte *pattern */); break; case NFOSMESA_GLGETNPOLYGONSTIPPLEARB: D(funcname = "glGetnPolygonStippleARB"); if (GL_ISAVAILABLE(glGetnPolygonStippleARB)) nfglGetnPolygonStippleARB( getStackedParameter(0), /* GLsizei bufSize */ getStackedPointer(1, GLubyte *) /* GLubyte *pattern */); break; case NFOSMESA_GLGETNSEPARABLEFILTER: D(funcname = "glGetnSeparableFilter"); if (GL_ISAVAILABLE(glGetnSeparableFilter)) nfglGetnSeparableFilter( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei rowBufSize */ getStackedPointer(4, void *), /* void *row */ getStackedParameter(5), /* GLsizei columnBufSize */ getStackedPointer(6, void *), /* void *column */ getStackedPointer(7, void *) /* void *span */); break; case NFOSMESA_GLGETNSEPARABLEFILTERARB: D(funcname = "glGetnSeparableFilterARB"); if (GL_ISAVAILABLE(glGetnSeparableFilterARB)) nfglGetnSeparableFilterARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei rowBufSize */ getStackedPointer(4, void *), /* void *row */ getStackedParameter(5), /* GLsizei columnBufSize */ getStackedPointer(6, void *), /* void *column */ getStackedPointer(7, void *) /* void *span */); break; case NFOSMESA_GLGETNTEXIMAGE: D(funcname = "glGetnTexImage"); if (GL_ISAVAILABLE(glGetnTexImage)) nfglGetnTexImage( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4), /* GLsizei bufSize */ getStackedPointer(5, void *) /* void *pixels */); break; case NFOSMESA_GLGETNTEXIMAGEARB: D(funcname = "glGetnTexImageARB"); if (GL_ISAVAILABLE(glGetnTexImageARB)) nfglGetnTexImageARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4), /* GLsizei bufSize */ getStackedPointer(5, void *) /* void *img */); break; case NFOSMESA_GLGETNUNIFORMDV: D(funcname = "glGetnUniformdv"); if (GL_ISAVAILABLE(glGetnUniformdv)) nfglGetnUniformdv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETNUNIFORMDVARB: D(funcname = "glGetnUniformdvARB"); if (GL_ISAVAILABLE(glGetnUniformdvARB)) nfglGetnUniformdvARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLdouble *) /* GLdouble *params */); break; case NFOSMESA_GLGETNUNIFORMFV: D(funcname = "glGetnUniformfv"); if (GL_ISAVAILABLE(glGetnUniformfv)) nfglGetnUniformfv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETNUNIFORMFVARB: D(funcname = "glGetnUniformfvARB"); if (GL_ISAVAILABLE(glGetnUniformfvARB)) nfglGetnUniformfvARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLfloat *) /* GLfloat *params */); break; case NFOSMESA_GLGETNUNIFORMI64VARB: D(funcname = "glGetnUniformi64vARB"); if (GL_ISAVAILABLE(glGetnUniformi64vARB)) nfglGetnUniformi64vARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLint64 *) /* GLint64 *params */); break; case NFOSMESA_GLGETNUNIFORMIV: D(funcname = "glGetnUniformiv"); if (GL_ISAVAILABLE(glGetnUniformiv)) nfglGetnUniformiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETNUNIFORMIVARB: D(funcname = "glGetnUniformivARB"); if (GL_ISAVAILABLE(glGetnUniformivARB)) nfglGetnUniformivARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLGETNUNIFORMUI64VARB: D(funcname = "glGetnUniformui64vARB"); if (GL_ISAVAILABLE(glGetnUniformui64vARB)) nfglGetnUniformui64vARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLuint64 *) /* GLuint64 *params */); break; case NFOSMESA_GLGETNUNIFORMUIV: D(funcname = "glGetnUniformuiv"); if (GL_ISAVAILABLE(glGetnUniformuiv)) nfglGetnUniformuiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGETNUNIFORMUIVARB: D(funcname = "glGetnUniformuivARB"); if (GL_ISAVAILABLE(glGetnUniformuivARB)) nfglGetnUniformuivARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLGLOBALALPHAFACTORBSUN: D(funcname = "glGlobalAlphaFactorbSUN"); if (GL_ISAVAILABLE(glGlobalAlphaFactorbSUN)) nfglGlobalAlphaFactorbSUN( getStackedParameter(0) /* GLbyte32 factor */); break; case NFOSMESA_GLGLOBALALPHAFACTORDSUN: D(funcname = "glGlobalAlphaFactordSUN"); if (GL_ISAVAILABLE(glGlobalAlphaFactordSUN)) nfglGlobalAlphaFactordSUN( getStackedDouble(0) /* GLdouble factor */); break; case NFOSMESA_GLGLOBALALPHAFACTORFSUN: D(funcname = "glGlobalAlphaFactorfSUN"); if (GL_ISAVAILABLE(glGlobalAlphaFactorfSUN)) nfglGlobalAlphaFactorfSUN( getStackedFloat(0) /* GLfloat factor */); break; case NFOSMESA_GLGLOBALALPHAFACTORISUN: D(funcname = "glGlobalAlphaFactoriSUN"); if (GL_ISAVAILABLE(glGlobalAlphaFactoriSUN)) nfglGlobalAlphaFactoriSUN( getStackedParameter(0) /* GLint factor */); break; case NFOSMESA_GLGLOBALALPHAFACTORSSUN: D(funcname = "glGlobalAlphaFactorsSUN"); if (GL_ISAVAILABLE(glGlobalAlphaFactorsSUN)) nfglGlobalAlphaFactorsSUN( getStackedParameter(0) /* GLshort32 factor */); break; case NFOSMESA_GLGLOBALALPHAFACTORUBSUN: D(funcname = "glGlobalAlphaFactorubSUN"); if (GL_ISAVAILABLE(glGlobalAlphaFactorubSUN)) nfglGlobalAlphaFactorubSUN( getStackedParameter(0) /* GLubyte32 factor */); break; case NFOSMESA_GLGLOBALALPHAFACTORUISUN: D(funcname = "glGlobalAlphaFactoruiSUN"); if (GL_ISAVAILABLE(glGlobalAlphaFactoruiSUN)) nfglGlobalAlphaFactoruiSUN( getStackedParameter(0) /* GLuint factor */); break; case NFOSMESA_GLGLOBALALPHAFACTORUSSUN: D(funcname = "glGlobalAlphaFactorusSUN"); if (GL_ISAVAILABLE(glGlobalAlphaFactorusSUN)) nfglGlobalAlphaFactorusSUN( getStackedParameter(0) /* GLushort32 factor */); break; case NFOSMESA_GLHINT: D(funcname = "glHint"); if (GL_ISAVAILABLE(glHint)) nfglHint( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLHINTPGI: D(funcname = "glHintPGI"); if (GL_ISAVAILABLE(glHintPGI)) nfglHintPGI( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLint mode */); break; case NFOSMESA_GLHISTOGRAM: D(funcname = "glHistogram"); if (GL_ISAVAILABLE(glHistogram)) nfglHistogram( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei width */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3) /* GLboolean32 sink */); break; case NFOSMESA_GLHISTOGRAMEXT: D(funcname = "glHistogramEXT"); if (GL_ISAVAILABLE(glHistogramEXT)) nfglHistogramEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei width */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3) /* GLboolean32 sink */); break; case NFOSMESA_GLIGLOOINTERFACESGIX: D(funcname = "glIglooInterfaceSGIX"); if (GL_ISAVAILABLE(glIglooInterfaceSGIX)) nfglIglooInterfaceSGIX( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const void *) /* const void *params */); break; case NFOSMESA_GLIMAGETRANSFORMPARAMETERFHP: D(funcname = "glImageTransformParameterfHP"); if (GL_ISAVAILABLE(glImageTransformParameterfHP)) nfglImageTransformParameterfHP( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat param */); break; case NFOSMESA_GLIMAGETRANSFORMPARAMETERFVHP: D(funcname = "glImageTransformParameterfvHP"); if (GL_ISAVAILABLE(glImageTransformParameterfvHP)) nfglImageTransformParameterfvHP( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLIMAGETRANSFORMPARAMETERIHP: D(funcname = "glImageTransformParameteriHP"); if (GL_ISAVAILABLE(glImageTransformParameteriHP)) nfglImageTransformParameteriHP( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLIMAGETRANSFORMPARAMETERIVHP: D(funcname = "glImageTransformParameterivHP"); if (GL_ISAVAILABLE(glImageTransformParameterivHP)) nfglImageTransformParameterivHP( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLIMPORTMEMORYFDEXT: D(funcname = "glImportMemoryFdEXT"); if (GL_ISAVAILABLE(glImportMemoryFdEXT)) nfglImportMemoryFdEXT( getStackedParameter(0), /* GLuint memory */ getStackedParameter64(1), /* GLuint64 size */ getStackedParameter(3), /* GLenum handleType */ getStackedParameter(4) /* GLint fd */); break; case NFOSMESA_GLIMPORTMEMORYWIN32HANDLEEXT: D(funcname = "glImportMemoryWin32HandleEXT"); if (GL_ISAVAILABLE(glImportMemoryWin32HandleEXT)) nfglImportMemoryWin32HandleEXT( getStackedParameter(0), /* GLuint memory */ getStackedParameter64(1), /* GLuint64 size */ getStackedParameter(3), /* GLenum handleType */ getStackedPointer(4, void *) /* void *handle */); break; case NFOSMESA_GLIMPORTMEMORYWIN32NAMEEXT: D(funcname = "glImportMemoryWin32NameEXT"); if (GL_ISAVAILABLE(glImportMemoryWin32NameEXT)) nfglImportMemoryWin32NameEXT( getStackedParameter(0), /* GLuint memory */ getStackedParameter64(1), /* GLuint64 size */ getStackedParameter(3), /* GLenum handleType */ getStackedPointer(4, const void *) /* const void *name */); break; case NFOSMESA_GLIMPORTSEMAPHOREFDEXT: D(funcname = "glImportSemaphoreFdEXT"); if (GL_ISAVAILABLE(glImportSemaphoreFdEXT)) nfglImportSemaphoreFdEXT( getStackedParameter(0), /* GLuint semaphore */ getStackedParameter(1), /* GLenum handleType */ getStackedParameter(2) /* GLint fd */); break; case NFOSMESA_GLIMPORTSEMAPHOREWIN32HANDLEEXT: D(funcname = "glImportSemaphoreWin32HandleEXT"); if (GL_ISAVAILABLE(glImportSemaphoreWin32HandleEXT)) nfglImportSemaphoreWin32HandleEXT( getStackedParameter(0), /* GLuint semaphore */ getStackedParameter(1), /* GLenum handleType */ getStackedPointer(2, void *) /* void *handle */); break; case NFOSMESA_GLIMPORTSEMAPHOREWIN32NAMEEXT: D(funcname = "glImportSemaphoreWin32NameEXT"); if (GL_ISAVAILABLE(glImportSemaphoreWin32NameEXT)) nfglImportSemaphoreWin32NameEXT( getStackedParameter(0), /* GLuint semaphore */ getStackedParameter(1), /* GLenum handleType */ getStackedPointer(2, const void *) /* const void *name */); break; #if 0 case NFOSMESA_GLIMPORTSYNCEXT: D(funcname = "glImportSyncEXT"); if (GL_ISAVAILABLE(glImportSyncEXT)) ret = (uint32)(uintptr_t)nfglImportSyncEXT( getStackedParameter(0), /* GLenum external_sync_type */ getStackedParameter(1), /* GLintptr external_sync */ getStackedParameter(2) /* GLbitfield flags */); break; #endif case NFOSMESA_GLINDEXFORMATNV: D(funcname = "glIndexFormatNV"); if (GL_ISAVAILABLE(glIndexFormatNV)) nfglIndexFormatNV( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLsizei stride */); break; case NFOSMESA_GLINDEXFUNCEXT: D(funcname = "glIndexFuncEXT"); if (GL_ISAVAILABLE(glIndexFuncEXT)) nfglIndexFuncEXT( getStackedParameter(0), /* GLenum func */ getStackedFloat(1) /* GLclampf ref */); break; case NFOSMESA_GLINDEXMASK: D(funcname = "glIndexMask"); if (GL_ISAVAILABLE(glIndexMask)) nfglIndexMask( getStackedParameter(0) /* GLuint mask */); break; case NFOSMESA_GLINDEXMATERIALEXT: D(funcname = "glIndexMaterialEXT"); if (GL_ISAVAILABLE(glIndexMaterialEXT)) nfglIndexMaterialEXT( getStackedParameter(0), /* GLenum face */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLINDEXPOINTER: D(funcname = "glIndexPointer"); if (GL_ISAVAILABLE(glIndexPointer)) nfglIndexPointer( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLsizei stride */ getStackedPointer(2, const GLvoid *) /* const GLvoid *pointer */); break; case NFOSMESA_GLINDEXPOINTEREXT: D(funcname = "glIndexPointerEXT"); if (GL_ISAVAILABLE(glIndexPointerEXT)) nfglIndexPointerEXT( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLsizei stride */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const void *) /* const void *pointer */); break; case NFOSMESA_GLINDEXPOINTERLISTIBM: D(funcname = "glIndexPointerListIBM"); if (GL_ISAVAILABLE(glIndexPointerListIBM)) nfglIndexPointerListIBM( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLint stride */ getStackedPointer(2, const void * *), /* const void * *pointer */ getStackedParameter(3) /* GLint ptrstride */); break; case NFOSMESA_GLINDEXD: D(funcname = "glIndexd"); if (GL_ISAVAILABLE(glIndexd)) nfglIndexd( getStackedDouble(0) /* GLdouble c */); break; case NFOSMESA_GLINDEXDV: D(funcname = "glIndexdv"); if (GL_ISAVAILABLE(glIndexdv)) nfglIndexdv( getStackedPointer(0, const GLdouble *) /* const GLdouble *c */); break; case NFOSMESA_GLINDEXF: D(funcname = "glIndexf"); if (GL_ISAVAILABLE(glIndexf)) nfglIndexf( getStackedFloat(0) /* GLfloat c */); break; case NFOSMESA_GLINDEXFV: D(funcname = "glIndexfv"); if (GL_ISAVAILABLE(glIndexfv)) nfglIndexfv( getStackedPointer(0, const GLfloat *) /* const GLfloat *c */); break; case NFOSMESA_GLINDEXI: D(funcname = "glIndexi"); if (GL_ISAVAILABLE(glIndexi)) nfglIndexi( getStackedParameter(0) /* GLint c */); break; case NFOSMESA_GLINDEXIV: D(funcname = "glIndexiv"); if (GL_ISAVAILABLE(glIndexiv)) nfglIndexiv( getStackedPointer(0, const GLint *) /* const GLint *c */); break; case NFOSMESA_GLINDEXS: D(funcname = "glIndexs"); if (GL_ISAVAILABLE(glIndexs)) nfglIndexs( getStackedParameter(0) /* GLshort32 c */); break; case NFOSMESA_GLINDEXSV: D(funcname = "glIndexsv"); if (GL_ISAVAILABLE(glIndexsv)) nfglIndexsv( getStackedPointer(0, const GLshort *) /* const GLshort *c */); break; case NFOSMESA_GLINDEXUB: D(funcname = "glIndexub"); if (GL_ISAVAILABLE(glIndexub)) nfglIndexub( getStackedParameter(0) /* GLubyte32 c */); break; case NFOSMESA_GLINDEXUBV: D(funcname = "glIndexubv"); if (GL_ISAVAILABLE(glIndexubv)) nfglIndexubv( getStackedPointer(0, const GLubyte *) /* const GLubyte *c */); break; case NFOSMESA_GLINDEXXOES: D(funcname = "glIndexxOES"); if (GL_ISAVAILABLE(glIndexxOES)) nfglIndexxOES( getStackedParameter(0) /* GLfixed component */); break; case NFOSMESA_GLINDEXXVOES: D(funcname = "glIndexxvOES"); if (GL_ISAVAILABLE(glIndexxvOES)) nfglIndexxvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *component */); break; case NFOSMESA_GLINITNAMES: D(funcname = "glInitNames"); if (GL_ISAVAILABLE(glInitNames)) nfglInitNames(); break; case NFOSMESA_GLINSERTCOMPONENTEXT: D(funcname = "glInsertComponentEXT"); if (GL_ISAVAILABLE(glInsertComponentEXT)) nfglInsertComponentEXT( getStackedParameter(0), /* GLuint res */ getStackedParameter(1), /* GLuint src */ getStackedParameter(2) /* GLuint num */); break; case NFOSMESA_GLINSERTEVENTMARKEREXT: D(funcname = "glInsertEventMarkerEXT"); if (GL_ISAVAILABLE(glInsertEventMarkerEXT)) nfglInsertEventMarkerEXT( getStackedParameter(0), /* GLsizei length */ getStackedPointer(1, const GLchar *) /* const GLchar *marker */); break; #if 0 case NFOSMESA_GLINSTRUMENTSBUFFERSGIX: D(funcname = "glInstrumentsBufferSGIX"); if (GL_ISAVAILABLE(glInstrumentsBufferSGIX)) nfglInstrumentsBufferSGIX( getStackedParameter(0), /* GLsizei size */ getStackedPointer(1, GLint *) /* GLint *buffer */); break; #endif case NFOSMESA_GLINTERLEAVEDARRAYS: D(funcname = "glInterleavedArrays"); if (GL_ISAVAILABLE(glInterleavedArrays)) nfglInterleavedArrays( getStackedParameter(0), /* GLenum format */ getStackedParameter(1), /* GLsizei stride */ getStackedPointer(2, const GLvoid *) /* const GLvoid *pointer */); break; case NFOSMESA_GLINTERPOLATEPATHSNV: D(funcname = "glInterpolatePathsNV"); if (GL_ISAVAILABLE(glInterpolatePathsNV)) nfglInterpolatePathsNV( getStackedParameter(0), /* GLuint resultPath */ getStackedParameter(1), /* GLuint pathA */ getStackedParameter(2), /* GLuint pathB */ getStackedFloat(3) /* GLfloat weight */); break; case NFOSMESA_GLINVALIDATEBUFFERDATA: D(funcname = "glInvalidateBufferData"); if (GL_ISAVAILABLE(glInvalidateBufferData)) nfglInvalidateBufferData( getStackedParameter(0) /* GLuint buffer */); break; case NFOSMESA_GLINVALIDATEBUFFERSUBDATA: D(funcname = "glInvalidateBufferSubData"); if (GL_ISAVAILABLE(glInvalidateBufferSubData)) nfglInvalidateBufferSubData( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2) /* GLsizeiptr length */); break; case NFOSMESA_GLINVALIDATEFRAMEBUFFER: D(funcname = "glInvalidateFramebuffer"); if (GL_ISAVAILABLE(glInvalidateFramebuffer)) nfglInvalidateFramebuffer( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei numAttachments */ getStackedPointer(2, const GLenum *) /* const GLenum *attachments */); break; case NFOSMESA_GLINVALIDATENAMEDFRAMEBUFFERDATA: D(funcname = "glInvalidateNamedFramebufferData"); if (GL_ISAVAILABLE(glInvalidateNamedFramebufferData)) nfglInvalidateNamedFramebufferData( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLsizei numAttachments */ getStackedPointer(2, const GLenum *) /* const GLenum *attachments */); break; case NFOSMESA_GLINVALIDATENAMEDFRAMEBUFFERSUBDATA: D(funcname = "glInvalidateNamedFramebufferSubData"); if (GL_ISAVAILABLE(glInvalidateNamedFramebufferSubData)) nfglInvalidateNamedFramebufferSubData( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLsizei numAttachments */ getStackedPointer(2, const GLenum *), /* const GLenum *attachments */ getStackedParameter(3), /* GLint x */ getStackedParameter(4), /* GLint y */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6) /* GLsizei height */); break; case NFOSMESA_GLINVALIDATESUBFRAMEBUFFER: D(funcname = "glInvalidateSubFramebuffer"); if (GL_ISAVAILABLE(glInvalidateSubFramebuffer)) nfglInvalidateSubFramebuffer( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei numAttachments */ getStackedPointer(2, const GLenum *), /* const GLenum *attachments */ getStackedParameter(3), /* GLint x */ getStackedParameter(4), /* GLint y */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6) /* GLsizei height */); break; case NFOSMESA_GLINVALIDATETEXIMAGE: D(funcname = "glInvalidateTexImage"); if (GL_ISAVAILABLE(glInvalidateTexImage)) nfglInvalidateTexImage( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1) /* GLint level */); break; case NFOSMESA_GLINVALIDATETEXSUBIMAGE: D(funcname = "glInvalidateTexSubImage"); if (GL_ISAVAILABLE(glInvalidateTexSubImage)) nfglInvalidateTexSubImage( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7) /* GLsizei depth */); break; case NFOSMESA_GLISASYNCMARKERSGIX: D(funcname = "glIsAsyncMarkerSGIX"); if (GL_ISAVAILABLE(glIsAsyncMarkerSGIX)) ret = nfglIsAsyncMarkerSGIX( getStackedParameter(0) /* GLuint marker */); break; case NFOSMESA_GLISBUFFER: D(funcname = "glIsBuffer"); if (GL_ISAVAILABLE(glIsBuffer)) ret = nfglIsBuffer( getStackedParameter(0) /* GLuint buffer */); break; case NFOSMESA_GLISBUFFERARB: D(funcname = "glIsBufferARB"); if (GL_ISAVAILABLE(glIsBufferARB)) ret = nfglIsBufferARB( getStackedParameter(0) /* GLuint buffer */); break; case NFOSMESA_GLISBUFFERRESIDENTNV: D(funcname = "glIsBufferResidentNV"); if (GL_ISAVAILABLE(glIsBufferResidentNV)) ret = nfglIsBufferResidentNV( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLISCOMMANDLISTNV: D(funcname = "glIsCommandListNV"); if (GL_ISAVAILABLE(glIsCommandListNV)) ret = nfglIsCommandListNV( getStackedParameter(0) /* GLuint list */); break; case NFOSMESA_GLISENABLED: D(funcname = "glIsEnabled"); if (GL_ISAVAILABLE(glIsEnabled)) ret = nfglIsEnabled( getStackedParameter(0) /* GLenum cap */); break; case NFOSMESA_GLISENABLEDINDEXEDEXT: D(funcname = "glIsEnabledIndexedEXT"); if (GL_ISAVAILABLE(glIsEnabledIndexedEXT)) ret = nfglIsEnabledIndexedEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLISENABLEDI: D(funcname = "glIsEnabledi"); if (GL_ISAVAILABLE(glIsEnabledi)) ret = nfglIsEnabledi( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint index */); break; case NFOSMESA_GLISFENCEAPPLE: D(funcname = "glIsFenceAPPLE"); if (GL_ISAVAILABLE(glIsFenceAPPLE)) ret = nfglIsFenceAPPLE( getStackedParameter(0) /* GLuint fence */); break; case NFOSMESA_GLISFENCENV: D(funcname = "glIsFenceNV"); if (GL_ISAVAILABLE(glIsFenceNV)) ret = nfglIsFenceNV( getStackedParameter(0) /* GLuint fence */); break; case NFOSMESA_GLISFRAMEBUFFER: D(funcname = "glIsFramebuffer"); if (GL_ISAVAILABLE(glIsFramebuffer)) ret = nfglIsFramebuffer( getStackedParameter(0) /* GLuint framebuffer */); break; case NFOSMESA_GLISFRAMEBUFFEREXT: D(funcname = "glIsFramebufferEXT"); if (GL_ISAVAILABLE(glIsFramebufferEXT)) ret = nfglIsFramebufferEXT( getStackedParameter(0) /* GLuint framebuffer */); break; case NFOSMESA_GLISIMAGEHANDLERESIDENTARB: D(funcname = "glIsImageHandleResidentARB"); if (GL_ISAVAILABLE(glIsImageHandleResidentARB)) ret = nfglIsImageHandleResidentARB( getStackedParameter64(0) /* GLuint64 handle */); break; case NFOSMESA_GLISIMAGEHANDLERESIDENTNV: D(funcname = "glIsImageHandleResidentNV"); if (GL_ISAVAILABLE(glIsImageHandleResidentNV)) ret = nfglIsImageHandleResidentNV( getStackedParameter64(0) /* GLuint64 handle */); break; case NFOSMESA_GLISLIST: D(funcname = "glIsList"); if (GL_ISAVAILABLE(glIsList)) ret = nfglIsList( getStackedParameter(0) /* GLuint list */); break; case NFOSMESA_GLISMEMORYOBJECTEXT: D(funcname = "glIsMemoryObjectEXT"); if (GL_ISAVAILABLE(glIsMemoryObjectEXT)) ret = nfglIsMemoryObjectEXT( getStackedParameter(0) /* GLuint memoryObject */); break; case NFOSMESA_GLISNAMEAMD: D(funcname = "glIsNameAMD"); if (GL_ISAVAILABLE(glIsNameAMD)) ret = nfglIsNameAMD( getStackedParameter(0), /* GLenum identifier */ getStackedParameter(1) /* GLuint name */); break; case NFOSMESA_GLISNAMEDBUFFERRESIDENTNV: D(funcname = "glIsNamedBufferResidentNV"); if (GL_ISAVAILABLE(glIsNamedBufferResidentNV)) ret = nfglIsNamedBufferResidentNV( getStackedParameter(0) /* GLuint buffer */); break; case NFOSMESA_GLISNAMEDSTRINGARB: D(funcname = "glIsNamedStringARB"); if (GL_ISAVAILABLE(glIsNamedStringARB)) ret = nfglIsNamedStringARB( getStackedParameter(0), /* GLint namelen */ getStackedPointer(1, const GLchar *) /* const GLchar *name */); break; case NFOSMESA_GLISOBJECTBUFFERATI: D(funcname = "glIsObjectBufferATI"); if (GL_ISAVAILABLE(glIsObjectBufferATI)) ret = nfglIsObjectBufferATI( getStackedParameter(0) /* GLuint buffer */); break; case NFOSMESA_GLISOCCLUSIONQUERYNV: D(funcname = "glIsOcclusionQueryNV"); if (GL_ISAVAILABLE(glIsOcclusionQueryNV)) ret = nfglIsOcclusionQueryNV( getStackedParameter(0) /* GLuint id */); break; case NFOSMESA_GLISPATHNV: D(funcname = "glIsPathNV"); if (GL_ISAVAILABLE(glIsPathNV)) ret = nfglIsPathNV( getStackedParameter(0) /* GLuint path */); break; case NFOSMESA_GLISPOINTINFILLPATHNV: D(funcname = "glIsPointInFillPathNV"); if (GL_ISAVAILABLE(glIsPointInFillPathNV)) ret = nfglIsPointInFillPathNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLuint mask */ getStackedFloat(2), /* GLfloat x */ getStackedFloat(3) /* GLfloat y */); break; case NFOSMESA_GLISPOINTINSTROKEPATHNV: D(funcname = "glIsPointInStrokePathNV"); if (GL_ISAVAILABLE(glIsPointInStrokePathNV)) ret = nfglIsPointInStrokePathNV( getStackedParameter(0), /* GLuint path */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2) /* GLfloat y */); break; case NFOSMESA_GLISPROGRAM: D(funcname = "glIsProgram"); if (GL_ISAVAILABLE(glIsProgram)) ret = nfglIsProgram( getStackedParameter(0) /* GLuint program */); break; case NFOSMESA_GLISPROGRAMARB: D(funcname = "glIsProgramARB"); if (GL_ISAVAILABLE(glIsProgramARB)) ret = nfglIsProgramARB( getStackedParameter(0) /* GLuint program */); break; case NFOSMESA_GLISPROGRAMNV: D(funcname = "glIsProgramNV"); if (GL_ISAVAILABLE(glIsProgramNV)) ret = nfglIsProgramNV( getStackedParameter(0) /* GLuint id */); break; case NFOSMESA_GLISPROGRAMPIPELINE: D(funcname = "glIsProgramPipeline"); if (GL_ISAVAILABLE(glIsProgramPipeline)) ret = nfglIsProgramPipeline( getStackedParameter(0) /* GLuint pipeline */); break; case NFOSMESA_GLISQUERY: D(funcname = "glIsQuery"); if (GL_ISAVAILABLE(glIsQuery)) ret = nfglIsQuery( getStackedParameter(0) /* GLuint id */); break; case NFOSMESA_GLISQUERYARB: D(funcname = "glIsQueryARB"); if (GL_ISAVAILABLE(glIsQueryARB)) ret = nfglIsQueryARB( getStackedParameter(0) /* GLuint id */); break; case NFOSMESA_GLISRENDERBUFFER: D(funcname = "glIsRenderbuffer"); if (GL_ISAVAILABLE(glIsRenderbuffer)) ret = nfglIsRenderbuffer( getStackedParameter(0) /* GLuint renderbuffer */); break; case NFOSMESA_GLISRENDERBUFFEREXT: D(funcname = "glIsRenderbufferEXT"); if (GL_ISAVAILABLE(glIsRenderbufferEXT)) ret = nfglIsRenderbufferEXT( getStackedParameter(0) /* GLuint renderbuffer */); break; case NFOSMESA_GLISSAMPLER: D(funcname = "glIsSampler"); if (GL_ISAVAILABLE(glIsSampler)) ret = nfglIsSampler( getStackedParameter(0) /* GLuint sampler */); break; case NFOSMESA_GLISSEMAPHOREEXT: D(funcname = "glIsSemaphoreEXT"); if (GL_ISAVAILABLE(glIsSemaphoreEXT)) ret = nfglIsSemaphoreEXT( getStackedParameter(0) /* GLuint semaphore */); break; case NFOSMESA_GLISSHADER: D(funcname = "glIsShader"); if (GL_ISAVAILABLE(glIsShader)) ret = nfglIsShader( getStackedParameter(0) /* GLuint shader */); break; case NFOSMESA_GLISSTATENV: D(funcname = "glIsStateNV"); if (GL_ISAVAILABLE(glIsStateNV)) ret = nfglIsStateNV( getStackedParameter(0) /* GLuint state */); break; case NFOSMESA_GLISSYNC: D(funcname = "glIsSync"); if (GL_ISAVAILABLE(glIsSync)) ret = nfglIsSync( (GLsync)(uintptr_t)getStackedParameter(0) /* GLsync sync */); break; case NFOSMESA_GLISTEXTURE: D(funcname = "glIsTexture"); if (GL_ISAVAILABLE(glIsTexture)) ret = nfglIsTexture( getStackedParameter(0) /* GLuint texture */); break; case NFOSMESA_GLISTEXTUREEXT: D(funcname = "glIsTextureEXT"); if (GL_ISAVAILABLE(glIsTextureEXT)) ret = nfglIsTextureEXT( getStackedParameter(0) /* GLuint texture */); break; case NFOSMESA_GLISTEXTUREHANDLERESIDENTARB: D(funcname = "glIsTextureHandleResidentARB"); if (GL_ISAVAILABLE(glIsTextureHandleResidentARB)) ret = nfglIsTextureHandleResidentARB( getStackedParameter64(0) /* GLuint64 handle */); break; case NFOSMESA_GLISTEXTUREHANDLERESIDENTNV: D(funcname = "glIsTextureHandleResidentNV"); if (GL_ISAVAILABLE(glIsTextureHandleResidentNV)) ret = nfglIsTextureHandleResidentNV( getStackedParameter64(0) /* GLuint64 handle */); break; case NFOSMESA_GLISTRANSFORMFEEDBACK: D(funcname = "glIsTransformFeedback"); if (GL_ISAVAILABLE(glIsTransformFeedback)) ret = nfglIsTransformFeedback( getStackedParameter(0) /* GLuint id */); break; case NFOSMESA_GLISTRANSFORMFEEDBACKNV: D(funcname = "glIsTransformFeedbackNV"); if (GL_ISAVAILABLE(glIsTransformFeedbackNV)) ret = nfglIsTransformFeedbackNV( getStackedParameter(0) /* GLuint id */); break; case NFOSMESA_GLISVARIANTENABLEDEXT: D(funcname = "glIsVariantEnabledEXT"); if (GL_ISAVAILABLE(glIsVariantEnabledEXT)) ret = nfglIsVariantEnabledEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1) /* GLenum cap */); break; case NFOSMESA_GLISVERTEXARRAY: D(funcname = "glIsVertexArray"); if (GL_ISAVAILABLE(glIsVertexArray)) ret = nfglIsVertexArray( getStackedParameter(0) /* GLuint array */); break; case NFOSMESA_GLISVERTEXARRAYAPPLE: D(funcname = "glIsVertexArrayAPPLE"); if (GL_ISAVAILABLE(glIsVertexArrayAPPLE)) ret = nfglIsVertexArrayAPPLE( getStackedParameter(0) /* GLuint array */); break; case NFOSMESA_GLISVERTEXATTRIBENABLEDAPPLE: D(funcname = "glIsVertexAttribEnabledAPPLE"); if (GL_ISAVAILABLE(glIsVertexAttribEnabledAPPLE)) ret = nfglIsVertexAttribEnabledAPPLE( getStackedParameter(0), /* GLuint index */ getStackedParameter(1) /* GLenum pname */); break; case NFOSMESA_GLLGPUCOPYIMAGESUBDATANVX: D(funcname = "glLGPUCopyImageSubDataNVX"); if (GL_ISAVAILABLE(glLGPUCopyImageSubDataNVX)) nfglLGPUCopyImageSubDataNVX( getStackedParameter(0), /* GLuint sourceGpu */ getStackedParameter(1), /* GLbitfield destinationGpuMask */ getStackedParameter(2), /* GLuint srcName */ getStackedParameter(3), /* GLenum srcTarget */ getStackedParameter(4), /* GLint srcLevel */ getStackedParameter(5), /* GLint srcX */ getStackedParameter(6), /* GLint srxY */ getStackedParameter(7), /* GLint srcZ */ getStackedParameter(8), /* GLuint dstName */ getStackedParameter(9), /* GLenum dstTarget */ getStackedParameter(10), /* GLint dstLevel */ getStackedParameter(11), /* GLint dstX */ getStackedParameter(12), /* GLint dstY */ getStackedParameter(13), /* GLint dstZ */ getStackedParameter(14), /* GLsizei width */ getStackedParameter(15), /* GLsizei height */ getStackedParameter(16) /* GLsizei depth */); break; case NFOSMESA_GLLGPUINTERLOCKNVX: D(funcname = "glLGPUInterlockNVX"); if (GL_ISAVAILABLE(glLGPUInterlockNVX)) nfglLGPUInterlockNVX(); break; case NFOSMESA_GLLGPUNAMEDBUFFERSUBDATANVX: D(funcname = "glLGPUNamedBufferSubDataNVX"); if (GL_ISAVAILABLE(glLGPUNamedBufferSubDataNVX)) nfglLGPUNamedBufferSubDataNVX( getStackedParameter(0), /* GLbitfield gpuMask */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLintptr offset */ getStackedParameter(3), /* GLsizeiptr size */ getStackedPointer(4, const void *) /* const void *data */); break; case NFOSMESA_GLLABELOBJECTEXT: D(funcname = "glLabelObjectEXT"); if (GL_ISAVAILABLE(glLabelObjectEXT)) nfglLabelObjectEXT( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLuint object */ getStackedParameter(2), /* GLsizei length */ getStackedPointer(3, const GLchar *) /* const GLchar *label */); break; case NFOSMESA_GLLIGHTENVISGIX: D(funcname = "glLightEnviSGIX"); if (GL_ISAVAILABLE(glLightEnviSGIX)) nfglLightEnviSGIX( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLLIGHTMODELF: D(funcname = "glLightModelf"); if (GL_ISAVAILABLE(glLightModelf)) nfglLightModelf( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat param */); break; case NFOSMESA_GLLIGHTMODELFV: D(funcname = "glLightModelfv"); if (GL_ISAVAILABLE(glLightModelfv)) nfglLightModelfv( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLLIGHTMODELI: D(funcname = "glLightModeli"); if (GL_ISAVAILABLE(glLightModeli)) nfglLightModeli( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLLIGHTMODELIV: D(funcname = "glLightModeliv"); if (GL_ISAVAILABLE(glLightModeliv)) nfglLightModeliv( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLLIGHTMODELXOES: D(funcname = "glLightModelxOES"); if (GL_ISAVAILABLE(glLightModelxOES)) nfglLightModelxOES( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLfixed param */); break; case NFOSMESA_GLLIGHTMODELXVOES: D(funcname = "glLightModelxvOES"); if (GL_ISAVAILABLE(glLightModelxvOES)) nfglLightModelxvOES( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfixed *) /* const GLfixed *param */); break; case NFOSMESA_GLLIGHTF: D(funcname = "glLightf"); if (GL_ISAVAILABLE(glLightf)) nfglLightf( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat param */); break; case NFOSMESA_GLLIGHTFV: D(funcname = "glLightfv"); if (GL_ISAVAILABLE(glLightfv)) nfglLightfv( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLLIGHTI: D(funcname = "glLighti"); if (GL_ISAVAILABLE(glLighti)) nfglLighti( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLLIGHTIV: D(funcname = "glLightiv"); if (GL_ISAVAILABLE(glLightiv)) nfglLightiv( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLLIGHTXOES: D(funcname = "glLightxOES"); if (GL_ISAVAILABLE(glLightxOES)) nfglLightxOES( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLfixed param */); break; case NFOSMESA_GLLIGHTXVOES: D(funcname = "glLightxvOES"); if (GL_ISAVAILABLE(glLightxvOES)) nfglLightxvOES( getStackedParameter(0), /* GLenum light */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfixed *) /* const GLfixed *params */); break; case NFOSMESA_GLLINESTIPPLE: D(funcname = "glLineStipple"); if (GL_ISAVAILABLE(glLineStipple)) nfglLineStipple( getStackedParameter(0), /* GLint factor */ getStackedParameter(1) /* GLushort32 pattern */); break; case NFOSMESA_GLLINEWIDTH: D(funcname = "glLineWidth"); if (GL_ISAVAILABLE(glLineWidth)) nfglLineWidth( getStackedFloat(0) /* GLfloat width */); break; case NFOSMESA_GLLINEWIDTHXOES: D(funcname = "glLineWidthxOES"); if (GL_ISAVAILABLE(glLineWidthxOES)) nfglLineWidthxOES( getStackedParameter(0) /* GLfixed width */); break; case NFOSMESA_GLLINKPROGRAM: D(funcname = "glLinkProgram"); if (GL_ISAVAILABLE(glLinkProgram)) nfglLinkProgram( getStackedParameter(0) /* GLuint program */); break; case NFOSMESA_GLLINKPROGRAMARB: D(funcname = "glLinkProgramARB"); if (GL_ISAVAILABLE(glLinkProgramARB)) nfglLinkProgramARB( (GLhandleARB)(uintptr_t)getStackedParameter(0) /* GLhandleARB programObj */); break; case NFOSMESA_GLLISTBASE: D(funcname = "glListBase"); if (GL_ISAVAILABLE(glListBase)) nfglListBase( getStackedParameter(0) /* GLuint base */); break; case NFOSMESA_GLLISTDRAWCOMMANDSSTATESCLIENTNV: D(funcname = "glListDrawCommandsStatesClientNV"); if (GL_ISAVAILABLE(glListDrawCommandsStatesClientNV)) nfglListDrawCommandsStatesClientNV( getStackedParameter(0), /* GLuint list */ getStackedParameter(1), /* GLuint segment */ getStackedPointer(2, const void * *), /* const void * *indirects */ getStackedPointer(3, const GLsizei *), /* const GLsizei *sizes */ getStackedPointer(4, const GLuint *), /* const GLuint *states */ getStackedPointer(5, const GLuint *), /* const GLuint *fbos */ getStackedParameter(6) /* GLuint count */); break; case NFOSMESA_GLLISTPARAMETERFSGIX: D(funcname = "glListParameterfSGIX"); if (GL_ISAVAILABLE(glListParameterfSGIX)) nfglListParameterfSGIX( getStackedParameter(0), /* GLuint list */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat param */); break; case NFOSMESA_GLLISTPARAMETERFVSGIX: D(funcname = "glListParameterfvSGIX"); if (GL_ISAVAILABLE(glListParameterfvSGIX)) nfglListParameterfvSGIX( getStackedParameter(0), /* GLuint list */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLLISTPARAMETERISGIX: D(funcname = "glListParameteriSGIX"); if (GL_ISAVAILABLE(glListParameteriSGIX)) nfglListParameteriSGIX( getStackedParameter(0), /* GLuint list */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLLISTPARAMETERIVSGIX: D(funcname = "glListParameterivSGIX"); if (GL_ISAVAILABLE(glListParameterivSGIX)) nfglListParameterivSGIX( getStackedParameter(0), /* GLuint list */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLLOADIDENTITY: D(funcname = "glLoadIdentity"); if (GL_ISAVAILABLE(glLoadIdentity)) nfglLoadIdentity(); break; case NFOSMESA_GLLOADIDENTITYDEFORMATIONMAPSGIX: D(funcname = "glLoadIdentityDeformationMapSGIX"); if (GL_ISAVAILABLE(glLoadIdentityDeformationMapSGIX)) nfglLoadIdentityDeformationMapSGIX( getStackedParameter(0) /* GLbitfield mask */); break; case NFOSMESA_GLLOADMATRIXD: D(funcname = "glLoadMatrixd"); if (GL_ISAVAILABLE(glLoadMatrixd)) nfglLoadMatrixd( getStackedPointer(0, const GLdouble *) /* const GLdouble *m */); break; case NFOSMESA_GLLOADMATRIXF: D(funcname = "glLoadMatrixf"); if (GL_ISAVAILABLE(glLoadMatrixf)) nfglLoadMatrixf( getStackedPointer(0, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLLOADMATRIXXOES: D(funcname = "glLoadMatrixxOES"); if (GL_ISAVAILABLE(glLoadMatrixxOES)) nfglLoadMatrixxOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *m */); break; case NFOSMESA_GLLOADNAME: D(funcname = "glLoadName"); if (GL_ISAVAILABLE(glLoadName)) nfglLoadName( getStackedParameter(0) /* GLuint name */); break; case NFOSMESA_GLLOADPROGRAMNV: D(funcname = "glLoadProgramNV"); if (GL_ISAVAILABLE(glLoadProgramNV)) nfglLoadProgramNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint id */ getStackedParameter(2), /* GLsizei len */ getStackedPointer(3, const GLubyte *) /* const GLubyte *program */); break; case NFOSMESA_GLLOADTRANSPOSEMATRIXD: D(funcname = "glLoadTransposeMatrixd"); if (GL_ISAVAILABLE(glLoadTransposeMatrixd)) nfglLoadTransposeMatrixd( getStackedPointer(0, const GLdouble *) /* const GLdouble *m */); break; case NFOSMESA_GLLOADTRANSPOSEMATRIXDARB: D(funcname = "glLoadTransposeMatrixdARB"); if (GL_ISAVAILABLE(glLoadTransposeMatrixdARB)) nfglLoadTransposeMatrixdARB( getStackedPointer(0, const GLdouble *) /* const GLdouble *m */); break; case NFOSMESA_GLLOADTRANSPOSEMATRIXF: D(funcname = "glLoadTransposeMatrixf"); if (GL_ISAVAILABLE(glLoadTransposeMatrixf)) nfglLoadTransposeMatrixf( getStackedPointer(0, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLLOADTRANSPOSEMATRIXFARB: D(funcname = "glLoadTransposeMatrixfARB"); if (GL_ISAVAILABLE(glLoadTransposeMatrixfARB)) nfglLoadTransposeMatrixfARB( getStackedPointer(0, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLLOADTRANSPOSEMATRIXXOES: D(funcname = "glLoadTransposeMatrixxOES"); if (GL_ISAVAILABLE(glLoadTransposeMatrixxOES)) nfglLoadTransposeMatrixxOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *m */); break; case NFOSMESA_GLLOCKARRAYSEXT: D(funcname = "glLockArraysEXT"); if (GL_ISAVAILABLE(glLockArraysEXT)) nfglLockArraysEXT( getStackedParameter(0), /* GLint first */ getStackedParameter(1) /* GLsizei count */); break; case NFOSMESA_GLLOGICOP: D(funcname = "glLogicOp"); if (GL_ISAVAILABLE(glLogicOp)) nfglLogicOp( getStackedParameter(0) /* GLenum opcode */); break; case NFOSMESA_GLMAKEBUFFERNONRESIDENTNV: D(funcname = "glMakeBufferNonResidentNV"); if (GL_ISAVAILABLE(glMakeBufferNonResidentNV)) nfglMakeBufferNonResidentNV( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLMAKEBUFFERRESIDENTNV: D(funcname = "glMakeBufferResidentNV"); if (GL_ISAVAILABLE(glMakeBufferResidentNV)) nfglMakeBufferResidentNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLenum access */); break; case NFOSMESA_GLMAKEIMAGEHANDLENONRESIDENTARB: D(funcname = "glMakeImageHandleNonResidentARB"); if (GL_ISAVAILABLE(glMakeImageHandleNonResidentARB)) nfglMakeImageHandleNonResidentARB( getStackedParameter64(0) /* GLuint64 handle */); break; case NFOSMESA_GLMAKEIMAGEHANDLENONRESIDENTNV: D(funcname = "glMakeImageHandleNonResidentNV"); if (GL_ISAVAILABLE(glMakeImageHandleNonResidentNV)) nfglMakeImageHandleNonResidentNV( getStackedParameter64(0) /* GLuint64 handle */); break; case NFOSMESA_GLMAKEIMAGEHANDLERESIDENTARB: D(funcname = "glMakeImageHandleResidentARB"); if (GL_ISAVAILABLE(glMakeImageHandleResidentARB)) nfglMakeImageHandleResidentARB( getStackedParameter64(0), /* GLuint64 handle */ getStackedParameter(2) /* GLenum access */); break; case NFOSMESA_GLMAKEIMAGEHANDLERESIDENTNV: D(funcname = "glMakeImageHandleResidentNV"); if (GL_ISAVAILABLE(glMakeImageHandleResidentNV)) nfglMakeImageHandleResidentNV( getStackedParameter64(0), /* GLuint64 handle */ getStackedParameter(2) /* GLenum access */); break; case NFOSMESA_GLMAKENAMEDBUFFERNONRESIDENTNV: D(funcname = "glMakeNamedBufferNonResidentNV"); if (GL_ISAVAILABLE(glMakeNamedBufferNonResidentNV)) nfglMakeNamedBufferNonResidentNV( getStackedParameter(0) /* GLuint buffer */); break; case NFOSMESA_GLMAKENAMEDBUFFERRESIDENTNV: D(funcname = "glMakeNamedBufferResidentNV"); if (GL_ISAVAILABLE(glMakeNamedBufferResidentNV)) nfglMakeNamedBufferResidentNV( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1) /* GLenum access */); break; case NFOSMESA_GLMAKETEXTUREHANDLENONRESIDENTARB: D(funcname = "glMakeTextureHandleNonResidentARB"); if (GL_ISAVAILABLE(glMakeTextureHandleNonResidentARB)) nfglMakeTextureHandleNonResidentARB( getStackedParameter64(0) /* GLuint64 handle */); break; case NFOSMESA_GLMAKETEXTUREHANDLENONRESIDENTNV: D(funcname = "glMakeTextureHandleNonResidentNV"); if (GL_ISAVAILABLE(glMakeTextureHandleNonResidentNV)) nfglMakeTextureHandleNonResidentNV( getStackedParameter64(0) /* GLuint64 handle */); break; case NFOSMESA_GLMAKETEXTUREHANDLERESIDENTARB: D(funcname = "glMakeTextureHandleResidentARB"); if (GL_ISAVAILABLE(glMakeTextureHandleResidentARB)) nfglMakeTextureHandleResidentARB( getStackedParameter64(0) /* GLuint64 handle */); break; case NFOSMESA_GLMAKETEXTUREHANDLERESIDENTNV: D(funcname = "glMakeTextureHandleResidentNV"); if (GL_ISAVAILABLE(glMakeTextureHandleResidentNV)) nfglMakeTextureHandleResidentNV( getStackedParameter64(0) /* GLuint64 handle */); break; case NFOSMESA_GLMAP1D: D(funcname = "glMap1d"); if (GL_ISAVAILABLE(glMap1d)) nfglMap1d( getStackedParameter(0), /* GLenum target */ getStackedDouble(1), /* GLdouble u1 */ getStackedDouble(3), /* GLdouble u2 */ getStackedParameter(5), /* GLint stride */ getStackedParameter(6), /* GLint order */ getStackedPointer(7, const GLdouble *) /* const GLdouble *points */); break; case NFOSMESA_GLMAP1F: D(funcname = "glMap1f"); if (GL_ISAVAILABLE(glMap1f)) nfglMap1f( getStackedParameter(0), /* GLenum target */ getStackedFloat(1), /* GLfloat u1 */ getStackedFloat(2), /* GLfloat u2 */ getStackedParameter(3), /* GLint stride */ getStackedParameter(4), /* GLint order */ getStackedPointer(5, const GLfloat *) /* const GLfloat *points */); break; case NFOSMESA_GLMAP1XOES: D(funcname = "glMap1xOES"); if (GL_ISAVAILABLE(glMap1xOES)) nfglMap1xOES( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLfixed u1 */ getStackedParameter(2), /* GLfixed u2 */ getStackedParameter(3), /* GLint stride */ getStackedParameter(4), /* GLint order */ getStackedParameter(5) /* GLfixed points */); break; case NFOSMESA_GLMAP2D: D(funcname = "glMap2d"); if (GL_ISAVAILABLE(glMap2d)) nfglMap2d( getStackedParameter(0), /* GLenum target */ getStackedDouble(1), /* GLdouble u1 */ getStackedDouble(3), /* GLdouble u2 */ getStackedParameter(5), /* GLint ustride */ getStackedParameter(6), /* GLint uorder */ getStackedDouble(7), /* GLdouble v1 */ getStackedDouble(9), /* GLdouble v2 */ getStackedParameter(11), /* GLint vstride */ getStackedParameter(12), /* GLint vorder */ getStackedPointer(13, const GLdouble *) /* const GLdouble *points */); break; case NFOSMESA_GLMAP2F: D(funcname = "glMap2f"); if (GL_ISAVAILABLE(glMap2f)) nfglMap2f( getStackedParameter(0), /* GLenum target */ getStackedFloat(1), /* GLfloat u1 */ getStackedFloat(2), /* GLfloat u2 */ getStackedParameter(3), /* GLint ustride */ getStackedParameter(4), /* GLint uorder */ getStackedFloat(5), /* GLfloat v1 */ getStackedFloat(6), /* GLfloat v2 */ getStackedParameter(7), /* GLint vstride */ getStackedParameter(8), /* GLint vorder */ getStackedPointer(9, const GLfloat *) /* const GLfloat *points */); break; case NFOSMESA_GLMAP2XOES: D(funcname = "glMap2xOES"); if (GL_ISAVAILABLE(glMap2xOES)) nfglMap2xOES( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLfixed u1 */ getStackedParameter(2), /* GLfixed u2 */ getStackedParameter(3), /* GLint ustride */ getStackedParameter(4), /* GLint uorder */ getStackedParameter(5), /* GLfixed v1 */ getStackedParameter(6), /* GLfixed v2 */ getStackedParameter(7), /* GLint vstride */ getStackedParameter(8), /* GLint vorder */ getStackedParameter(9) /* GLfixed points */); break; #if 0 case NFOSMESA_GLMAPBUFFER: D(funcname = "glMapBuffer"); if (GL_ISAVAILABLE(glMapBuffer)) ret = (uint32)(uintptr_t)nfglMapBuffer( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLenum access */); break; #endif #if 0 case NFOSMESA_GLMAPBUFFERARB: D(funcname = "glMapBufferARB"); if (GL_ISAVAILABLE(glMapBufferARB)) ret = (uint32)(uintptr_t)nfglMapBufferARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLenum access */); break; #endif #if 0 case NFOSMESA_GLMAPBUFFERRANGE: D(funcname = "glMapBufferRange"); if (GL_ISAVAILABLE(glMapBufferRange)) ret = (uint32)(uintptr_t)nfglMapBufferRange( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2), /* GLsizeiptr length */ getStackedParameter(3) /* GLbitfield access */); break; #endif case NFOSMESA_GLMAPCONTROLPOINTSNV: D(funcname = "glMapControlPointsNV"); if (GL_ISAVAILABLE(glMapControlPointsNV)) nfglMapControlPointsNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei ustride */ getStackedParameter(4), /* GLsizei vstride */ getStackedParameter(5), /* GLint uorder */ getStackedParameter(6), /* GLint vorder */ getStackedParameter(7), /* GLboolean32 packed */ getStackedPointer(8, const void *) /* const void *points */); break; case NFOSMESA_GLMAPGRID1D: D(funcname = "glMapGrid1d"); if (GL_ISAVAILABLE(glMapGrid1d)) nfglMapGrid1d( getStackedParameter(0), /* GLint un */ getStackedDouble(1), /* GLdouble u1 */ getStackedDouble(3) /* GLdouble u2 */); break; case NFOSMESA_GLMAPGRID1F: D(funcname = "glMapGrid1f"); if (GL_ISAVAILABLE(glMapGrid1f)) nfglMapGrid1f( getStackedParameter(0), /* GLint un */ getStackedFloat(1), /* GLfloat u1 */ getStackedFloat(2) /* GLfloat u2 */); break; case NFOSMESA_GLMAPGRID1XOES: D(funcname = "glMapGrid1xOES"); if (GL_ISAVAILABLE(glMapGrid1xOES)) nfglMapGrid1xOES( getStackedParameter(0), /* GLint n */ getStackedParameter(1), /* GLfixed u1 */ getStackedParameter(2) /* GLfixed u2 */); break; case NFOSMESA_GLMAPGRID2D: D(funcname = "glMapGrid2d"); if (GL_ISAVAILABLE(glMapGrid2d)) nfglMapGrid2d( getStackedParameter(0), /* GLint un */ getStackedDouble(1), /* GLdouble u1 */ getStackedDouble(3), /* GLdouble u2 */ getStackedParameter(5), /* GLint vn */ getStackedDouble(6), /* GLdouble v1 */ getStackedDouble(8) /* GLdouble v2 */); break; case NFOSMESA_GLMAPGRID2F: D(funcname = "glMapGrid2f"); if (GL_ISAVAILABLE(glMapGrid2f)) nfglMapGrid2f( getStackedParameter(0), /* GLint un */ getStackedFloat(1), /* GLfloat u1 */ getStackedFloat(2), /* GLfloat u2 */ getStackedParameter(3), /* GLint vn */ getStackedFloat(4), /* GLfloat v1 */ getStackedFloat(5) /* GLfloat v2 */); break; case NFOSMESA_GLMAPGRID2XOES: D(funcname = "glMapGrid2xOES"); if (GL_ISAVAILABLE(glMapGrid2xOES)) nfglMapGrid2xOES( getStackedParameter(0), /* GLint n */ getStackedParameter(1), /* GLfixed u1 */ getStackedParameter(2), /* GLfixed u2 */ getStackedParameter(3), /* GLfixed v1 */ getStackedParameter(4) /* GLfixed v2 */); break; #if 0 case NFOSMESA_GLMAPNAMEDBUFFER: D(funcname = "glMapNamedBuffer"); if (GL_ISAVAILABLE(glMapNamedBuffer)) ret = (uint32)(uintptr_t)nfglMapNamedBuffer( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1) /* GLenum access */); break; #endif #if 0 case NFOSMESA_GLMAPNAMEDBUFFEREXT: D(funcname = "glMapNamedBufferEXT"); if (GL_ISAVAILABLE(glMapNamedBufferEXT)) ret = (uint32)(uintptr_t)nfglMapNamedBufferEXT( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1) /* GLenum access */); break; #endif #if 0 case NFOSMESA_GLMAPNAMEDBUFFERRANGE: D(funcname = "glMapNamedBufferRange"); if (GL_ISAVAILABLE(glMapNamedBufferRange)) ret = (uint32)(uintptr_t)nfglMapNamedBufferRange( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2), /* GLsizeiptr length */ getStackedParameter(3) /* GLbitfield access */); break; #endif #if 0 case NFOSMESA_GLMAPNAMEDBUFFERRANGEEXT: D(funcname = "glMapNamedBufferRangeEXT"); if (GL_ISAVAILABLE(glMapNamedBufferRangeEXT)) ret = (uint32)(uintptr_t)nfglMapNamedBufferRangeEXT( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2), /* GLsizeiptr length */ getStackedParameter(3) /* GLbitfield access */); break; #endif #if 0 case NFOSMESA_GLMAPOBJECTBUFFERATI: D(funcname = "glMapObjectBufferATI"); if (GL_ISAVAILABLE(glMapObjectBufferATI)) ret = (uint32)(uintptr_t)nfglMapObjectBufferATI( getStackedParameter(0) /* GLuint buffer */); break; #endif case NFOSMESA_GLMAPPARAMETERFVNV: D(funcname = "glMapParameterfvNV"); if (GL_ISAVAILABLE(glMapParameterfvNV)) nfglMapParameterfvNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLMAPPARAMETERIVNV: D(funcname = "glMapParameterivNV"); if (GL_ISAVAILABLE(glMapParameterivNV)) nfglMapParameterivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; #if 0 case NFOSMESA_GLMAPTEXTURE2DINTEL: D(funcname = "glMapTexture2DINTEL"); if (GL_ISAVAILABLE(glMapTexture2DINTEL)) ret = (uint32)(uintptr_t)nfglMapTexture2DINTEL( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLbitfield access */ getStackedPointer(3, const GLint *), /* const GLint *stride */ getStackedPointer(4, const GLenum *) /* const GLenum *layout */); break; #endif case NFOSMESA_GLMAPVERTEXATTRIB1DAPPLE: D(funcname = "glMapVertexAttrib1dAPPLE"); if (GL_ISAVAILABLE(glMapVertexAttrib1dAPPLE)) nfglMapVertexAttrib1dAPPLE( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLuint size */ getStackedDouble(2), /* GLdouble u1 */ getStackedDouble(4), /* GLdouble u2 */ getStackedParameter(6), /* GLint stride */ getStackedParameter(7), /* GLint order */ getStackedPointer(8, const GLdouble *) /* const GLdouble *points */); break; case NFOSMESA_GLMAPVERTEXATTRIB1FAPPLE: D(funcname = "glMapVertexAttrib1fAPPLE"); if (GL_ISAVAILABLE(glMapVertexAttrib1fAPPLE)) nfglMapVertexAttrib1fAPPLE( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLuint size */ getStackedFloat(2), /* GLfloat u1 */ getStackedFloat(3), /* GLfloat u2 */ getStackedParameter(4), /* GLint stride */ getStackedParameter(5), /* GLint order */ getStackedPointer(6, const GLfloat *) /* const GLfloat *points */); break; case NFOSMESA_GLMAPVERTEXATTRIB2DAPPLE: D(funcname = "glMapVertexAttrib2dAPPLE"); if (GL_ISAVAILABLE(glMapVertexAttrib2dAPPLE)) nfglMapVertexAttrib2dAPPLE( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLuint size */ getStackedDouble(2), /* GLdouble u1 */ getStackedDouble(4), /* GLdouble u2 */ getStackedParameter(6), /* GLint ustride */ getStackedParameter(7), /* GLint uorder */ getStackedDouble(8), /* GLdouble v1 */ getStackedDouble(10), /* GLdouble v2 */ getStackedParameter(12), /* GLint vstride */ getStackedParameter(13), /* GLint vorder */ getStackedPointer(14, const GLdouble *) /* const GLdouble *points */); break; case NFOSMESA_GLMAPVERTEXATTRIB2FAPPLE: D(funcname = "glMapVertexAttrib2fAPPLE"); if (GL_ISAVAILABLE(glMapVertexAttrib2fAPPLE)) nfglMapVertexAttrib2fAPPLE( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLuint size */ getStackedFloat(2), /* GLfloat u1 */ getStackedFloat(3), /* GLfloat u2 */ getStackedParameter(4), /* GLint ustride */ getStackedParameter(5), /* GLint uorder */ getStackedFloat(6), /* GLfloat v1 */ getStackedFloat(7), /* GLfloat v2 */ getStackedParameter(8), /* GLint vstride */ getStackedParameter(9), /* GLint vorder */ getStackedPointer(10, const GLfloat *) /* const GLfloat *points */); break; case NFOSMESA_GLMATERIALF: D(funcname = "glMaterialf"); if (GL_ISAVAILABLE(glMaterialf)) nfglMaterialf( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat param */); break; case NFOSMESA_GLMATERIALFV: D(funcname = "glMaterialfv"); if (GL_ISAVAILABLE(glMaterialfv)) nfglMaterialfv( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLMATERIALI: D(funcname = "glMateriali"); if (GL_ISAVAILABLE(glMateriali)) nfglMateriali( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLMATERIALIV: D(funcname = "glMaterialiv"); if (GL_ISAVAILABLE(glMaterialiv)) nfglMaterialiv( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLMATERIALXOES: D(funcname = "glMaterialxOES"); if (GL_ISAVAILABLE(glMaterialxOES)) nfglMaterialxOES( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLfixed param */); break; case NFOSMESA_GLMATERIALXVOES: D(funcname = "glMaterialxvOES"); if (GL_ISAVAILABLE(glMaterialxvOES)) nfglMaterialxvOES( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfixed *) /* const GLfixed *param */); break; case NFOSMESA_GLMATRIXFRUSTUMEXT: D(funcname = "glMatrixFrustumEXT"); if (GL_ISAVAILABLE(glMatrixFrustumEXT)) nfglMatrixFrustumEXT( getStackedParameter(0), /* GLenum mode */ getStackedDouble(1), /* GLdouble left */ getStackedDouble(3), /* GLdouble right */ getStackedDouble(5), /* GLdouble bottom */ getStackedDouble(7), /* GLdouble top */ getStackedDouble(9), /* GLdouble zNear */ getStackedDouble(11) /* GLdouble zFar */); break; case NFOSMESA_GLMATRIXINDEXPOINTERARB: D(funcname = "glMatrixIndexPointerARB"); if (GL_ISAVAILABLE(glMatrixIndexPointerARB)) nfglMatrixIndexPointerARB( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLsizei stride */ getStackedPointer(3, const void *) /* const void *pointer */); break; case NFOSMESA_GLMATRIXINDEXUBVARB: D(funcname = "glMatrixIndexubvARB"); if (GL_ISAVAILABLE(glMatrixIndexubvARB)) nfglMatrixIndexubvARB( getStackedParameter(0), /* GLint size */ getStackedPointer(1, const GLubyte *) /* const GLubyte *indices */); break; case NFOSMESA_GLMATRIXINDEXUIVARB: D(funcname = "glMatrixIndexuivARB"); if (GL_ISAVAILABLE(glMatrixIndexuivARB)) nfglMatrixIndexuivARB( getStackedParameter(0), /* GLint size */ getStackedPointer(1, const GLuint *) /* const GLuint *indices */); break; case NFOSMESA_GLMATRIXINDEXUSVARB: D(funcname = "glMatrixIndexusvARB"); if (GL_ISAVAILABLE(glMatrixIndexusvARB)) nfglMatrixIndexusvARB( getStackedParameter(0), /* GLint size */ getStackedPointer(1, const GLushort *) /* const GLushort *indices */); break; case NFOSMESA_GLMATRIXLOAD3X2FNV: D(funcname = "glMatrixLoad3x2fNV"); if (GL_ISAVAILABLE(glMatrixLoad3x2fNV)) nfglMatrixLoad3x2fNV( getStackedParameter(0), /* GLenum matrixMode */ getStackedPointer(1, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLMATRIXLOAD3X3FNV: D(funcname = "glMatrixLoad3x3fNV"); if (GL_ISAVAILABLE(glMatrixLoad3x3fNV)) nfglMatrixLoad3x3fNV( getStackedParameter(0), /* GLenum matrixMode */ getStackedPointer(1, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLMATRIXLOADIDENTITYEXT: D(funcname = "glMatrixLoadIdentityEXT"); if (GL_ISAVAILABLE(glMatrixLoadIdentityEXT)) nfglMatrixLoadIdentityEXT( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLMATRIXLOADTRANSPOSE3X3FNV: D(funcname = "glMatrixLoadTranspose3x3fNV"); if (GL_ISAVAILABLE(glMatrixLoadTranspose3x3fNV)) nfglMatrixLoadTranspose3x3fNV( getStackedParameter(0), /* GLenum matrixMode */ getStackedPointer(1, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLMATRIXLOADTRANSPOSEDEXT: D(funcname = "glMatrixLoadTransposedEXT"); if (GL_ISAVAILABLE(glMatrixLoadTransposedEXT)) nfglMatrixLoadTransposedEXT( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const GLdouble *) /* const GLdouble *m */); break; case NFOSMESA_GLMATRIXLOADTRANSPOSEFEXT: D(funcname = "glMatrixLoadTransposefEXT"); if (GL_ISAVAILABLE(glMatrixLoadTransposefEXT)) nfglMatrixLoadTransposefEXT( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLMATRIXLOADDEXT: D(funcname = "glMatrixLoaddEXT"); if (GL_ISAVAILABLE(glMatrixLoaddEXT)) nfglMatrixLoaddEXT( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const GLdouble *) /* const GLdouble *m */); break; case NFOSMESA_GLMATRIXLOADFEXT: D(funcname = "glMatrixLoadfEXT"); if (GL_ISAVAILABLE(glMatrixLoadfEXT)) nfglMatrixLoadfEXT( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLMATRIXMODE: D(funcname = "glMatrixMode"); if (GL_ISAVAILABLE(glMatrixMode)) nfglMatrixMode( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLMATRIXMULT3X2FNV: D(funcname = "glMatrixMult3x2fNV"); if (GL_ISAVAILABLE(glMatrixMult3x2fNV)) nfglMatrixMult3x2fNV( getStackedParameter(0), /* GLenum matrixMode */ getStackedPointer(1, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLMATRIXMULT3X3FNV: D(funcname = "glMatrixMult3x3fNV"); if (GL_ISAVAILABLE(glMatrixMult3x3fNV)) nfglMatrixMult3x3fNV( getStackedParameter(0), /* GLenum matrixMode */ getStackedPointer(1, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLMATRIXMULTTRANSPOSE3X3FNV: D(funcname = "glMatrixMultTranspose3x3fNV"); if (GL_ISAVAILABLE(glMatrixMultTranspose3x3fNV)) nfglMatrixMultTranspose3x3fNV( getStackedParameter(0), /* GLenum matrixMode */ getStackedPointer(1, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLMATRIXMULTTRANSPOSEDEXT: D(funcname = "glMatrixMultTransposedEXT"); if (GL_ISAVAILABLE(glMatrixMultTransposedEXT)) nfglMatrixMultTransposedEXT( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const GLdouble *) /* const GLdouble *m */); break; case NFOSMESA_GLMATRIXMULTTRANSPOSEFEXT: D(funcname = "glMatrixMultTransposefEXT"); if (GL_ISAVAILABLE(glMatrixMultTransposefEXT)) nfglMatrixMultTransposefEXT( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLMATRIXMULTDEXT: D(funcname = "glMatrixMultdEXT"); if (GL_ISAVAILABLE(glMatrixMultdEXT)) nfglMatrixMultdEXT( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const GLdouble *) /* const GLdouble *m */); break; case NFOSMESA_GLMATRIXMULTFEXT: D(funcname = "glMatrixMultfEXT"); if (GL_ISAVAILABLE(glMatrixMultfEXT)) nfglMatrixMultfEXT( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLMATRIXORTHOEXT: D(funcname = "glMatrixOrthoEXT"); if (GL_ISAVAILABLE(glMatrixOrthoEXT)) nfglMatrixOrthoEXT( getStackedParameter(0), /* GLenum mode */ getStackedDouble(1), /* GLdouble left */ getStackedDouble(3), /* GLdouble right */ getStackedDouble(5), /* GLdouble bottom */ getStackedDouble(7), /* GLdouble top */ getStackedDouble(9), /* GLdouble zNear */ getStackedDouble(11) /* GLdouble zFar */); break; case NFOSMESA_GLMATRIXPOPEXT: D(funcname = "glMatrixPopEXT"); if (GL_ISAVAILABLE(glMatrixPopEXT)) nfglMatrixPopEXT( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLMATRIXPUSHEXT: D(funcname = "glMatrixPushEXT"); if (GL_ISAVAILABLE(glMatrixPushEXT)) nfglMatrixPushEXT( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLMATRIXROTATEDEXT: D(funcname = "glMatrixRotatedEXT"); if (GL_ISAVAILABLE(glMatrixRotatedEXT)) nfglMatrixRotatedEXT( getStackedParameter(0), /* GLenum mode */ getStackedDouble(1), /* GLdouble angle */ getStackedDouble(3), /* GLdouble x */ getStackedDouble(5), /* GLdouble y */ getStackedDouble(7) /* GLdouble z */); break; case NFOSMESA_GLMATRIXROTATEFEXT: D(funcname = "glMatrixRotatefEXT"); if (GL_ISAVAILABLE(glMatrixRotatefEXT)) nfglMatrixRotatefEXT( getStackedParameter(0), /* GLenum mode */ getStackedFloat(1), /* GLfloat angle */ getStackedFloat(2), /* GLfloat x */ getStackedFloat(3), /* GLfloat y */ getStackedFloat(4) /* GLfloat z */); break; case NFOSMESA_GLMATRIXSCALEDEXT: D(funcname = "glMatrixScaledEXT"); if (GL_ISAVAILABLE(glMatrixScaledEXT)) nfglMatrixScaledEXT( getStackedParameter(0), /* GLenum mode */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5) /* GLdouble z */); break; case NFOSMESA_GLMATRIXSCALEFEXT: D(funcname = "glMatrixScalefEXT"); if (GL_ISAVAILABLE(glMatrixScalefEXT)) nfglMatrixScalefEXT( getStackedParameter(0), /* GLenum mode */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2), /* GLfloat y */ getStackedFloat(3) /* GLfloat z */); break; case NFOSMESA_GLMATRIXTRANSLATEDEXT: D(funcname = "glMatrixTranslatedEXT"); if (GL_ISAVAILABLE(glMatrixTranslatedEXT)) nfglMatrixTranslatedEXT( getStackedParameter(0), /* GLenum mode */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5) /* GLdouble z */); break; case NFOSMESA_GLMATRIXTRANSLATEFEXT: D(funcname = "glMatrixTranslatefEXT"); if (GL_ISAVAILABLE(glMatrixTranslatefEXT)) nfglMatrixTranslatefEXT( getStackedParameter(0), /* GLenum mode */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2), /* GLfloat y */ getStackedFloat(3) /* GLfloat z */); break; case NFOSMESA_GLMAXSHADERCOMPILERTHREADSARB: D(funcname = "glMaxShaderCompilerThreadsARB"); if (GL_ISAVAILABLE(glMaxShaderCompilerThreadsARB)) nfglMaxShaderCompilerThreadsARB( getStackedParameter(0) /* GLuint count */); break; case NFOSMESA_GLMAXSHADERCOMPILERTHREADSKHR: D(funcname = "glMaxShaderCompilerThreadsKHR"); if (GL_ISAVAILABLE(glMaxShaderCompilerThreadsKHR)) nfglMaxShaderCompilerThreadsKHR( getStackedParameter(0) /* GLuint count */); break; case NFOSMESA_GLMEMORYBARRIER: D(funcname = "glMemoryBarrier"); if (GL_ISAVAILABLE(glMemoryBarrier)) nfglMemoryBarrier( getStackedParameter(0) /* GLbitfield barriers */); break; case NFOSMESA_GLMEMORYBARRIERBYREGION: D(funcname = "glMemoryBarrierByRegion"); if (GL_ISAVAILABLE(glMemoryBarrierByRegion)) nfglMemoryBarrierByRegion( getStackedParameter(0) /* GLbitfield barriers */); break; case NFOSMESA_GLMEMORYBARRIEREXT: D(funcname = "glMemoryBarrierEXT"); if (GL_ISAVAILABLE(glMemoryBarrierEXT)) nfglMemoryBarrierEXT( getStackedParameter(0) /* GLbitfield barriers */); break; case NFOSMESA_GLMEMORYOBJECTPARAMETERIVEXT: D(funcname = "glMemoryObjectParameterivEXT"); if (GL_ISAVAILABLE(glMemoryObjectParameterivEXT)) nfglMemoryObjectParameterivEXT( getStackedParameter(0), /* GLuint memoryObject */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLMINSAMPLESHADING: D(funcname = "glMinSampleShading"); if (GL_ISAVAILABLE(glMinSampleShading)) nfglMinSampleShading( getStackedFloat(0) /* GLfloat value */); break; case NFOSMESA_GLMINSAMPLESHADINGARB: D(funcname = "glMinSampleShadingARB"); if (GL_ISAVAILABLE(glMinSampleShadingARB)) nfglMinSampleShadingARB( getStackedFloat(0) /* GLfloat value */); break; case NFOSMESA_GLMINMAX: D(funcname = "glMinmax"); if (GL_ISAVAILABLE(glMinmax)) nfglMinmax( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2) /* GLboolean32 sink */); break; case NFOSMESA_GLMINMAXEXT: D(funcname = "glMinmaxEXT"); if (GL_ISAVAILABLE(glMinmaxEXT)) nfglMinmaxEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2) /* GLboolean32 sink */); break; case NFOSMESA_GLMULTMATRIXD: D(funcname = "glMultMatrixd"); if (GL_ISAVAILABLE(glMultMatrixd)) nfglMultMatrixd( getStackedPointer(0, const GLdouble *) /* const GLdouble *m */); break; case NFOSMESA_GLMULTMATRIXF: D(funcname = "glMultMatrixf"); if (GL_ISAVAILABLE(glMultMatrixf)) nfglMultMatrixf( getStackedPointer(0, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLMULTMATRIXXOES: D(funcname = "glMultMatrixxOES"); if (GL_ISAVAILABLE(glMultMatrixxOES)) nfglMultMatrixxOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *m */); break; case NFOSMESA_GLMULTTRANSPOSEMATRIXD: D(funcname = "glMultTransposeMatrixd"); if (GL_ISAVAILABLE(glMultTransposeMatrixd)) nfglMultTransposeMatrixd( getStackedPointer(0, const GLdouble *) /* const GLdouble *m */); break; case NFOSMESA_GLMULTTRANSPOSEMATRIXDARB: D(funcname = "glMultTransposeMatrixdARB"); if (GL_ISAVAILABLE(glMultTransposeMatrixdARB)) nfglMultTransposeMatrixdARB( getStackedPointer(0, const GLdouble *) /* const GLdouble *m */); break; case NFOSMESA_GLMULTTRANSPOSEMATRIXF: D(funcname = "glMultTransposeMatrixf"); if (GL_ISAVAILABLE(glMultTransposeMatrixf)) nfglMultTransposeMatrixf( getStackedPointer(0, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLMULTTRANSPOSEMATRIXFARB: D(funcname = "glMultTransposeMatrixfARB"); if (GL_ISAVAILABLE(glMultTransposeMatrixfARB)) nfglMultTransposeMatrixfARB( getStackedPointer(0, const GLfloat *) /* const GLfloat *m */); break; case NFOSMESA_GLMULTTRANSPOSEMATRIXXOES: D(funcname = "glMultTransposeMatrixxOES"); if (GL_ISAVAILABLE(glMultTransposeMatrixxOES)) nfglMultTransposeMatrixxOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *m */); break; case NFOSMESA_GLMULTIDRAWARRAYS: D(funcname = "glMultiDrawArrays"); if (GL_ISAVAILABLE(glMultiDrawArrays)) nfglMultiDrawArrays( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const GLint *), /* const GLint *first */ getStackedPointer(2, const GLsizei *), /* const GLsizei *count */ getStackedParameter(3) /* GLsizei drawcount */); break; case NFOSMESA_GLMULTIDRAWARRAYSEXT: D(funcname = "glMultiDrawArraysEXT"); if (GL_ISAVAILABLE(glMultiDrawArraysEXT)) nfglMultiDrawArraysEXT( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const GLint *), /* const GLint *first */ getStackedPointer(2, const GLsizei *), /* const GLsizei *count */ getStackedParameter(3) /* GLsizei primcount */); break; case NFOSMESA_GLMULTIDRAWARRAYSINDIRECT: D(funcname = "glMultiDrawArraysIndirect"); if (GL_ISAVAILABLE(glMultiDrawArraysIndirect)) nfglMultiDrawArraysIndirect( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const void *), /* const void *indirect */ getStackedParameter(2), /* GLsizei drawcount */ getStackedParameter(3) /* GLsizei stride */); break; case NFOSMESA_GLMULTIDRAWARRAYSINDIRECTAMD: D(funcname = "glMultiDrawArraysIndirectAMD"); if (GL_ISAVAILABLE(glMultiDrawArraysIndirectAMD)) nfglMultiDrawArraysIndirectAMD( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const void *), /* const void *indirect */ getStackedParameter(2), /* GLsizei primcount */ getStackedParameter(3) /* GLsizei stride */); break; case NFOSMESA_GLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV: D(funcname = "glMultiDrawArraysIndirectBindlessCountNV"); if (GL_ISAVAILABLE(glMultiDrawArraysIndirectBindlessCountNV)) nfglMultiDrawArraysIndirectBindlessCountNV( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const void *), /* const void *indirect */ getStackedParameter(2), /* GLsizei drawCount */ getStackedParameter(3), /* GLsizei maxDrawCount */ getStackedParameter(4), /* GLsizei stride */ getStackedParameter(5) /* GLint vertexBufferCount */); break; case NFOSMESA_GLMULTIDRAWARRAYSINDIRECTBINDLESSNV: D(funcname = "glMultiDrawArraysIndirectBindlessNV"); if (GL_ISAVAILABLE(glMultiDrawArraysIndirectBindlessNV)) nfglMultiDrawArraysIndirectBindlessNV( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const void *), /* const void *indirect */ getStackedParameter(2), /* GLsizei drawCount */ getStackedParameter(3), /* GLsizei stride */ getStackedParameter(4) /* GLint vertexBufferCount */); break; case NFOSMESA_GLMULTIDRAWARRAYSINDIRECTCOUNT: D(funcname = "glMultiDrawArraysIndirectCount"); if (GL_ISAVAILABLE(glMultiDrawArraysIndirectCount)) nfglMultiDrawArraysIndirectCount( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const void *), /* const void *indirect */ getStackedParameter(2), /* GLintptr drawcount */ getStackedParameter(3), /* GLsizei maxdrawcount */ getStackedParameter(4) /* GLsizei stride */); break; case NFOSMESA_GLMULTIDRAWARRAYSINDIRECTCOUNTARB: D(funcname = "glMultiDrawArraysIndirectCountARB"); if (GL_ISAVAILABLE(glMultiDrawArraysIndirectCountARB)) nfglMultiDrawArraysIndirectCountARB( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const void *), /* const void *indirect */ getStackedParameter(2), /* GLintptr drawcount */ getStackedParameter(3), /* GLsizei maxdrawcount */ getStackedParameter(4) /* GLsizei stride */); break; case NFOSMESA_GLMULTIDRAWELEMENTARRAYAPPLE: D(funcname = "glMultiDrawElementArrayAPPLE"); if (GL_ISAVAILABLE(glMultiDrawElementArrayAPPLE)) nfglMultiDrawElementArrayAPPLE( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const GLint *), /* const GLint *first */ getStackedPointer(2, const GLsizei *), /* const GLsizei *count */ getStackedParameter(3) /* GLsizei primcount */); break; case NFOSMESA_GLMULTIDRAWELEMENTS: D(funcname = "glMultiDrawElements"); if (GL_ISAVAILABLE(glMultiDrawElements)) nfglMultiDrawElements( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const GLsizei *), /* const GLsizei *count */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, const void *const *), /* const void *const *indices */ getStackedParameter(4) /* GLsizei drawcount */); break; case NFOSMESA_GLMULTIDRAWELEMENTSBASEVERTEX: D(funcname = "glMultiDrawElementsBaseVertex"); if (GL_ISAVAILABLE(glMultiDrawElementsBaseVertex)) nfglMultiDrawElementsBaseVertex( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const GLsizei *), /* const GLsizei *count */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, const void *const *), /* const void *const *indices */ getStackedParameter(4), /* GLsizei drawcount */ getStackedPointer(5, const GLint *) /* const GLint *basevertex */); break; case NFOSMESA_GLMULTIDRAWELEMENTSEXT: D(funcname = "glMultiDrawElementsEXT"); if (GL_ISAVAILABLE(glMultiDrawElementsEXT)) nfglMultiDrawElementsEXT( getStackedParameter(0), /* GLenum mode */ getStackedPointer(1, const GLsizei *), /* const GLsizei *count */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, const void *const *), /* const void *const *indices */ getStackedParameter(4) /* GLsizei primcount */); break; case NFOSMESA_GLMULTIDRAWELEMENTSINDIRECT: D(funcname = "glMultiDrawElementsIndirect"); if (GL_ISAVAILABLE(glMultiDrawElementsIndirect)) nfglMultiDrawElementsIndirect( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const void *), /* const void *indirect */ getStackedParameter(3), /* GLsizei drawcount */ getStackedParameter(4) /* GLsizei stride */); break; case NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTAMD: D(funcname = "glMultiDrawElementsIndirectAMD"); if (GL_ISAVAILABLE(glMultiDrawElementsIndirectAMD)) nfglMultiDrawElementsIndirectAMD( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const void *), /* const void *indirect */ getStackedParameter(3), /* GLsizei primcount */ getStackedParameter(4) /* GLsizei stride */); break; case NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV: D(funcname = "glMultiDrawElementsIndirectBindlessCountNV"); if (GL_ISAVAILABLE(glMultiDrawElementsIndirectBindlessCountNV)) nfglMultiDrawElementsIndirectBindlessCountNV( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const void *), /* const void *indirect */ getStackedParameter(3), /* GLsizei drawCount */ getStackedParameter(4), /* GLsizei maxDrawCount */ getStackedParameter(5), /* GLsizei stride */ getStackedParameter(6) /* GLint vertexBufferCount */); break; case NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTBINDLESSNV: D(funcname = "glMultiDrawElementsIndirectBindlessNV"); if (GL_ISAVAILABLE(glMultiDrawElementsIndirectBindlessNV)) nfglMultiDrawElementsIndirectBindlessNV( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const void *), /* const void *indirect */ getStackedParameter(3), /* GLsizei drawCount */ getStackedParameter(4), /* GLsizei stride */ getStackedParameter(5) /* GLint vertexBufferCount */); break; case NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTCOUNT: D(funcname = "glMultiDrawElementsIndirectCount"); if (GL_ISAVAILABLE(glMultiDrawElementsIndirectCount)) nfglMultiDrawElementsIndirectCount( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const void *), /* const void *indirect */ getStackedParameter(3), /* GLintptr drawcount */ getStackedParameter(4), /* GLsizei maxdrawcount */ getStackedParameter(5) /* GLsizei stride */); break; case NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTCOUNTARB: D(funcname = "glMultiDrawElementsIndirectCountARB"); if (GL_ISAVAILABLE(glMultiDrawElementsIndirectCountARB)) nfglMultiDrawElementsIndirectCountARB( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const void *), /* const void *indirect */ getStackedParameter(3), /* GLintptr drawcount */ getStackedParameter(4), /* GLsizei maxdrawcount */ getStackedParameter(5) /* GLsizei stride */); break; case NFOSMESA_GLMULTIDRAWRANGEELEMENTARRAYAPPLE: D(funcname = "glMultiDrawRangeElementArrayAPPLE"); if (GL_ISAVAILABLE(glMultiDrawRangeElementArrayAPPLE)) nfglMultiDrawRangeElementArrayAPPLE( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLuint start */ getStackedParameter(2), /* GLuint end */ getStackedPointer(3, const GLint *), /* const GLint *first */ getStackedPointer(4, const GLsizei *), /* const GLsizei *count */ getStackedParameter(5) /* GLsizei primcount */); break; case NFOSMESA_GLMULTIMODEDRAWARRAYSIBM: D(funcname = "glMultiModeDrawArraysIBM"); if (GL_ISAVAILABLE(glMultiModeDrawArraysIBM)) nfglMultiModeDrawArraysIBM( getStackedPointer(0, const GLenum *), /* const GLenum *mode */ getStackedPointer(1, const GLint *), /* const GLint *first */ getStackedPointer(2, const GLsizei *), /* const GLsizei *count */ getStackedParameter(3), /* GLsizei primcount */ getStackedParameter(4) /* GLint modestride */); break; case NFOSMESA_GLMULTIMODEDRAWELEMENTSIBM: D(funcname = "glMultiModeDrawElementsIBM"); if (GL_ISAVAILABLE(glMultiModeDrawElementsIBM)) nfglMultiModeDrawElementsIBM( getStackedPointer(0, const GLenum *), /* const GLenum *mode */ getStackedPointer(1, const GLsizei *), /* const GLsizei *count */ getStackedParameter(2), /* GLenum type */ getStackedPointer(3, const void *const *), /* const void *const *indices */ getStackedParameter(4), /* GLsizei primcount */ getStackedParameter(5) /* GLint modestride */); break; case NFOSMESA_GLMULTITEXBUFFEREXT: D(funcname = "glMultiTexBufferEXT"); if (GL_ISAVAILABLE(glMultiTexBufferEXT)) nfglMultiTexBufferEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3) /* GLuint buffer */); break; case NFOSMESA_GLMULTITEXCOORD1BOES: D(funcname = "glMultiTexCoord1bOES"); if (GL_ISAVAILABLE(glMultiTexCoord1bOES)) nfglMultiTexCoord1bOES( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1) /* GLbyte32 s */); break; case NFOSMESA_GLMULTITEXCOORD1BVOES: D(funcname = "glMultiTexCoord1bvOES"); if (GL_ISAVAILABLE(glMultiTexCoord1bvOES)) nfglMultiTexCoord1bvOES( getStackedParameter(0), /* GLenum texture */ getStackedPointer(1, const GLbyte *) /* const GLbyte *coords */); break; case NFOSMESA_GLMULTITEXCOORD1D: D(funcname = "glMultiTexCoord1d"); if (GL_ISAVAILABLE(glMultiTexCoord1d)) nfglMultiTexCoord1d( getStackedParameter(0), /* GLenum target */ getStackedDouble(1) /* GLdouble s */); break; case NFOSMESA_GLMULTITEXCOORD1DARB: D(funcname = "glMultiTexCoord1dARB"); if (GL_ISAVAILABLE(glMultiTexCoord1dARB)) nfglMultiTexCoord1dARB( getStackedParameter(0), /* GLenum target */ getStackedDouble(1) /* GLdouble s */); break; case NFOSMESA_GLMULTITEXCOORD1DV: D(funcname = "glMultiTexCoord1dv"); if (GL_ISAVAILABLE(glMultiTexCoord1dv)) nfglMultiTexCoord1dv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLMULTITEXCOORD1DVARB: D(funcname = "glMultiTexCoord1dvARB"); if (GL_ISAVAILABLE(glMultiTexCoord1dvARB)) nfglMultiTexCoord1dvARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLMULTITEXCOORD1F: D(funcname = "glMultiTexCoord1f"); if (GL_ISAVAILABLE(glMultiTexCoord1f)) nfglMultiTexCoord1f( getStackedParameter(0), /* GLenum target */ getStackedFloat(1) /* GLfloat s */); break; case NFOSMESA_GLMULTITEXCOORD1FARB: D(funcname = "glMultiTexCoord1fARB"); if (GL_ISAVAILABLE(glMultiTexCoord1fARB)) nfglMultiTexCoord1fARB( getStackedParameter(0), /* GLenum target */ getStackedFloat(1) /* GLfloat s */); break; case NFOSMESA_GLMULTITEXCOORD1FV: D(funcname = "glMultiTexCoord1fv"); if (GL_ISAVAILABLE(glMultiTexCoord1fv)) nfglMultiTexCoord1fv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLMULTITEXCOORD1FVARB: D(funcname = "glMultiTexCoord1fvARB"); if (GL_ISAVAILABLE(glMultiTexCoord1fvARB)) nfglMultiTexCoord1fvARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLMULTITEXCOORD1HNV: D(funcname = "glMultiTexCoord1hNV"); if (GL_ISAVAILABLE(glMultiTexCoord1hNV)) nfglMultiTexCoord1hNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLhalfNV32 s */); break; case NFOSMESA_GLMULTITEXCOORD1HVNV: D(funcname = "glMultiTexCoord1hvNV"); if (GL_ISAVAILABLE(glMultiTexCoord1hvNV)) nfglMultiTexCoord1hvNV( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLMULTITEXCOORD1I: D(funcname = "glMultiTexCoord1i"); if (GL_ISAVAILABLE(glMultiTexCoord1i)) nfglMultiTexCoord1i( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLint s */); break; case NFOSMESA_GLMULTITEXCOORD1IARB: D(funcname = "glMultiTexCoord1iARB"); if (GL_ISAVAILABLE(glMultiTexCoord1iARB)) nfglMultiTexCoord1iARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLint s */); break; case NFOSMESA_GLMULTITEXCOORD1IV: D(funcname = "glMultiTexCoord1iv"); if (GL_ISAVAILABLE(glMultiTexCoord1iv)) nfglMultiTexCoord1iv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLMULTITEXCOORD1IVARB: D(funcname = "glMultiTexCoord1ivARB"); if (GL_ISAVAILABLE(glMultiTexCoord1ivARB)) nfglMultiTexCoord1ivARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLMULTITEXCOORD1S: D(funcname = "glMultiTexCoord1s"); if (GL_ISAVAILABLE(glMultiTexCoord1s)) nfglMultiTexCoord1s( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLshort32 s */); break; case NFOSMESA_GLMULTITEXCOORD1SARB: D(funcname = "glMultiTexCoord1sARB"); if (GL_ISAVAILABLE(glMultiTexCoord1sARB)) nfglMultiTexCoord1sARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLshort32 s */); break; case NFOSMESA_GLMULTITEXCOORD1SV: D(funcname = "glMultiTexCoord1sv"); if (GL_ISAVAILABLE(glMultiTexCoord1sv)) nfglMultiTexCoord1sv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLMULTITEXCOORD1SVARB: D(funcname = "glMultiTexCoord1svARB"); if (GL_ISAVAILABLE(glMultiTexCoord1svARB)) nfglMultiTexCoord1svARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLMULTITEXCOORD1XOES: D(funcname = "glMultiTexCoord1xOES"); if (GL_ISAVAILABLE(glMultiTexCoord1xOES)) nfglMultiTexCoord1xOES( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1) /* GLfixed s */); break; case NFOSMESA_GLMULTITEXCOORD1XVOES: D(funcname = "glMultiTexCoord1xvOES"); if (GL_ISAVAILABLE(glMultiTexCoord1xvOES)) nfglMultiTexCoord1xvOES( getStackedParameter(0), /* GLenum texture */ getStackedPointer(1, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLMULTITEXCOORD2BOES: D(funcname = "glMultiTexCoord2bOES"); if (GL_ISAVAILABLE(glMultiTexCoord2bOES)) nfglMultiTexCoord2bOES( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1), /* GLbyte32 s */ getStackedParameter(2) /* GLbyte32 t */); break; case NFOSMESA_GLMULTITEXCOORD2BVOES: D(funcname = "glMultiTexCoord2bvOES"); if (GL_ISAVAILABLE(glMultiTexCoord2bvOES)) nfglMultiTexCoord2bvOES( getStackedParameter(0), /* GLenum texture */ getStackedPointer(1, const GLbyte *) /* const GLbyte *coords */); break; case NFOSMESA_GLMULTITEXCOORD2D: D(funcname = "glMultiTexCoord2d"); if (GL_ISAVAILABLE(glMultiTexCoord2d)) nfglMultiTexCoord2d( getStackedParameter(0), /* GLenum target */ getStackedDouble(1), /* GLdouble s */ getStackedDouble(3) /* GLdouble t */); break; case NFOSMESA_GLMULTITEXCOORD2DARB: D(funcname = "glMultiTexCoord2dARB"); if (GL_ISAVAILABLE(glMultiTexCoord2dARB)) nfglMultiTexCoord2dARB( getStackedParameter(0), /* GLenum target */ getStackedDouble(1), /* GLdouble s */ getStackedDouble(3) /* GLdouble t */); break; case NFOSMESA_GLMULTITEXCOORD2DV: D(funcname = "glMultiTexCoord2dv"); if (GL_ISAVAILABLE(glMultiTexCoord2dv)) nfglMultiTexCoord2dv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLMULTITEXCOORD2DVARB: D(funcname = "glMultiTexCoord2dvARB"); if (GL_ISAVAILABLE(glMultiTexCoord2dvARB)) nfglMultiTexCoord2dvARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLMULTITEXCOORD2F: D(funcname = "glMultiTexCoord2f"); if (GL_ISAVAILABLE(glMultiTexCoord2f)) nfglMultiTexCoord2f( getStackedParameter(0), /* GLenum target */ getStackedFloat(1), /* GLfloat s */ getStackedFloat(2) /* GLfloat t */); break; case NFOSMESA_GLMULTITEXCOORD2FARB: D(funcname = "glMultiTexCoord2fARB"); if (GL_ISAVAILABLE(glMultiTexCoord2fARB)) nfglMultiTexCoord2fARB( getStackedParameter(0), /* GLenum target */ getStackedFloat(1), /* GLfloat s */ getStackedFloat(2) /* GLfloat t */); break; case NFOSMESA_GLMULTITEXCOORD2FV: D(funcname = "glMultiTexCoord2fv"); if (GL_ISAVAILABLE(glMultiTexCoord2fv)) nfglMultiTexCoord2fv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLMULTITEXCOORD2FVARB: D(funcname = "glMultiTexCoord2fvARB"); if (GL_ISAVAILABLE(glMultiTexCoord2fvARB)) nfglMultiTexCoord2fvARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLMULTITEXCOORD2HNV: D(funcname = "glMultiTexCoord2hNV"); if (GL_ISAVAILABLE(glMultiTexCoord2hNV)) nfglMultiTexCoord2hNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLhalfNV32 s */ getStackedParameter(2) /* GLhalfNV32 t */); break; case NFOSMESA_GLMULTITEXCOORD2HVNV: D(funcname = "glMultiTexCoord2hvNV"); if (GL_ISAVAILABLE(glMultiTexCoord2hvNV)) nfglMultiTexCoord2hvNV( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLMULTITEXCOORD2I: D(funcname = "glMultiTexCoord2i"); if (GL_ISAVAILABLE(glMultiTexCoord2i)) nfglMultiTexCoord2i( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint s */ getStackedParameter(2) /* GLint t */); break; case NFOSMESA_GLMULTITEXCOORD2IARB: D(funcname = "glMultiTexCoord2iARB"); if (GL_ISAVAILABLE(glMultiTexCoord2iARB)) nfglMultiTexCoord2iARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint s */ getStackedParameter(2) /* GLint t */); break; case NFOSMESA_GLMULTITEXCOORD2IV: D(funcname = "glMultiTexCoord2iv"); if (GL_ISAVAILABLE(glMultiTexCoord2iv)) nfglMultiTexCoord2iv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLMULTITEXCOORD2IVARB: D(funcname = "glMultiTexCoord2ivARB"); if (GL_ISAVAILABLE(glMultiTexCoord2ivARB)) nfglMultiTexCoord2ivARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLMULTITEXCOORD2S: D(funcname = "glMultiTexCoord2s"); if (GL_ISAVAILABLE(glMultiTexCoord2s)) nfglMultiTexCoord2s( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLshort32 s */ getStackedParameter(2) /* GLshort32 t */); break; case NFOSMESA_GLMULTITEXCOORD2SARB: D(funcname = "glMultiTexCoord2sARB"); if (GL_ISAVAILABLE(glMultiTexCoord2sARB)) nfglMultiTexCoord2sARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLshort32 s */ getStackedParameter(2) /* GLshort32 t */); break; case NFOSMESA_GLMULTITEXCOORD2SV: D(funcname = "glMultiTexCoord2sv"); if (GL_ISAVAILABLE(glMultiTexCoord2sv)) nfglMultiTexCoord2sv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLMULTITEXCOORD2SVARB: D(funcname = "glMultiTexCoord2svARB"); if (GL_ISAVAILABLE(glMultiTexCoord2svARB)) nfglMultiTexCoord2svARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLMULTITEXCOORD2XOES: D(funcname = "glMultiTexCoord2xOES"); if (GL_ISAVAILABLE(glMultiTexCoord2xOES)) nfglMultiTexCoord2xOES( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1), /* GLfixed s */ getStackedParameter(2) /* GLfixed t */); break; case NFOSMESA_GLMULTITEXCOORD2XVOES: D(funcname = "glMultiTexCoord2xvOES"); if (GL_ISAVAILABLE(glMultiTexCoord2xvOES)) nfglMultiTexCoord2xvOES( getStackedParameter(0), /* GLenum texture */ getStackedPointer(1, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLMULTITEXCOORD3BOES: D(funcname = "glMultiTexCoord3bOES"); if (GL_ISAVAILABLE(glMultiTexCoord3bOES)) nfglMultiTexCoord3bOES( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1), /* GLbyte32 s */ getStackedParameter(2), /* GLbyte32 t */ getStackedParameter(3) /* GLbyte32 r */); break; case NFOSMESA_GLMULTITEXCOORD3BVOES: D(funcname = "glMultiTexCoord3bvOES"); if (GL_ISAVAILABLE(glMultiTexCoord3bvOES)) nfglMultiTexCoord3bvOES( getStackedParameter(0), /* GLenum texture */ getStackedPointer(1, const GLbyte *) /* const GLbyte *coords */); break; case NFOSMESA_GLMULTITEXCOORD3D: D(funcname = "glMultiTexCoord3d"); if (GL_ISAVAILABLE(glMultiTexCoord3d)) nfglMultiTexCoord3d( getStackedParameter(0), /* GLenum target */ getStackedDouble(1), /* GLdouble s */ getStackedDouble(3), /* GLdouble t */ getStackedDouble(5) /* GLdouble r */); break; case NFOSMESA_GLMULTITEXCOORD3DARB: D(funcname = "glMultiTexCoord3dARB"); if (GL_ISAVAILABLE(glMultiTexCoord3dARB)) nfglMultiTexCoord3dARB( getStackedParameter(0), /* GLenum target */ getStackedDouble(1), /* GLdouble s */ getStackedDouble(3), /* GLdouble t */ getStackedDouble(5) /* GLdouble r */); break; case NFOSMESA_GLMULTITEXCOORD3DV: D(funcname = "glMultiTexCoord3dv"); if (GL_ISAVAILABLE(glMultiTexCoord3dv)) nfglMultiTexCoord3dv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLMULTITEXCOORD3DVARB: D(funcname = "glMultiTexCoord3dvARB"); if (GL_ISAVAILABLE(glMultiTexCoord3dvARB)) nfglMultiTexCoord3dvARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLMULTITEXCOORD3F: D(funcname = "glMultiTexCoord3f"); if (GL_ISAVAILABLE(glMultiTexCoord3f)) nfglMultiTexCoord3f( getStackedParameter(0), /* GLenum target */ getStackedFloat(1), /* GLfloat s */ getStackedFloat(2), /* GLfloat t */ getStackedFloat(3) /* GLfloat r */); break; case NFOSMESA_GLMULTITEXCOORD3FARB: D(funcname = "glMultiTexCoord3fARB"); if (GL_ISAVAILABLE(glMultiTexCoord3fARB)) nfglMultiTexCoord3fARB( getStackedParameter(0), /* GLenum target */ getStackedFloat(1), /* GLfloat s */ getStackedFloat(2), /* GLfloat t */ getStackedFloat(3) /* GLfloat r */); break; case NFOSMESA_GLMULTITEXCOORD3FV: D(funcname = "glMultiTexCoord3fv"); if (GL_ISAVAILABLE(glMultiTexCoord3fv)) nfglMultiTexCoord3fv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLMULTITEXCOORD3FVARB: D(funcname = "glMultiTexCoord3fvARB"); if (GL_ISAVAILABLE(glMultiTexCoord3fvARB)) nfglMultiTexCoord3fvARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLMULTITEXCOORD3HNV: D(funcname = "glMultiTexCoord3hNV"); if (GL_ISAVAILABLE(glMultiTexCoord3hNV)) nfglMultiTexCoord3hNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLhalfNV32 s */ getStackedParameter(2), /* GLhalfNV32 t */ getStackedParameter(3) /* GLhalfNV32 r */); break; case NFOSMESA_GLMULTITEXCOORD3HVNV: D(funcname = "glMultiTexCoord3hvNV"); if (GL_ISAVAILABLE(glMultiTexCoord3hvNV)) nfglMultiTexCoord3hvNV( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLMULTITEXCOORD3I: D(funcname = "glMultiTexCoord3i"); if (GL_ISAVAILABLE(glMultiTexCoord3i)) nfglMultiTexCoord3i( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint s */ getStackedParameter(2), /* GLint t */ getStackedParameter(3) /* GLint r */); break; case NFOSMESA_GLMULTITEXCOORD3IARB: D(funcname = "glMultiTexCoord3iARB"); if (GL_ISAVAILABLE(glMultiTexCoord3iARB)) nfglMultiTexCoord3iARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint s */ getStackedParameter(2), /* GLint t */ getStackedParameter(3) /* GLint r */); break; case NFOSMESA_GLMULTITEXCOORD3IV: D(funcname = "glMultiTexCoord3iv"); if (GL_ISAVAILABLE(glMultiTexCoord3iv)) nfglMultiTexCoord3iv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLMULTITEXCOORD3IVARB: D(funcname = "glMultiTexCoord3ivARB"); if (GL_ISAVAILABLE(glMultiTexCoord3ivARB)) nfglMultiTexCoord3ivARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLMULTITEXCOORD3S: D(funcname = "glMultiTexCoord3s"); if (GL_ISAVAILABLE(glMultiTexCoord3s)) nfglMultiTexCoord3s( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLshort32 s */ getStackedParameter(2), /* GLshort32 t */ getStackedParameter(3) /* GLshort32 r */); break; case NFOSMESA_GLMULTITEXCOORD3SARB: D(funcname = "glMultiTexCoord3sARB"); if (GL_ISAVAILABLE(glMultiTexCoord3sARB)) nfglMultiTexCoord3sARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLshort32 s */ getStackedParameter(2), /* GLshort32 t */ getStackedParameter(3) /* GLshort32 r */); break; case NFOSMESA_GLMULTITEXCOORD3SV: D(funcname = "glMultiTexCoord3sv"); if (GL_ISAVAILABLE(glMultiTexCoord3sv)) nfglMultiTexCoord3sv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLMULTITEXCOORD3SVARB: D(funcname = "glMultiTexCoord3svARB"); if (GL_ISAVAILABLE(glMultiTexCoord3svARB)) nfglMultiTexCoord3svARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLMULTITEXCOORD3XOES: D(funcname = "glMultiTexCoord3xOES"); if (GL_ISAVAILABLE(glMultiTexCoord3xOES)) nfglMultiTexCoord3xOES( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1), /* GLfixed s */ getStackedParameter(2), /* GLfixed t */ getStackedParameter(3) /* GLfixed r */); break; case NFOSMESA_GLMULTITEXCOORD3XVOES: D(funcname = "glMultiTexCoord3xvOES"); if (GL_ISAVAILABLE(glMultiTexCoord3xvOES)) nfglMultiTexCoord3xvOES( getStackedParameter(0), /* GLenum texture */ getStackedPointer(1, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLMULTITEXCOORD4BOES: D(funcname = "glMultiTexCoord4bOES"); if (GL_ISAVAILABLE(glMultiTexCoord4bOES)) nfglMultiTexCoord4bOES( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1), /* GLbyte32 s */ getStackedParameter(2), /* GLbyte32 t */ getStackedParameter(3), /* GLbyte32 r */ getStackedParameter(4) /* GLbyte32 q */); break; case NFOSMESA_GLMULTITEXCOORD4BVOES: D(funcname = "glMultiTexCoord4bvOES"); if (GL_ISAVAILABLE(glMultiTexCoord4bvOES)) nfglMultiTexCoord4bvOES( getStackedParameter(0), /* GLenum texture */ getStackedPointer(1, const GLbyte *) /* const GLbyte *coords */); break; case NFOSMESA_GLMULTITEXCOORD4D: D(funcname = "glMultiTexCoord4d"); if (GL_ISAVAILABLE(glMultiTexCoord4d)) nfglMultiTexCoord4d( getStackedParameter(0), /* GLenum target */ getStackedDouble(1), /* GLdouble s */ getStackedDouble(3), /* GLdouble t */ getStackedDouble(5), /* GLdouble r */ getStackedDouble(7) /* GLdouble q */); break; case NFOSMESA_GLMULTITEXCOORD4DARB: D(funcname = "glMultiTexCoord4dARB"); if (GL_ISAVAILABLE(glMultiTexCoord4dARB)) nfglMultiTexCoord4dARB( getStackedParameter(0), /* GLenum target */ getStackedDouble(1), /* GLdouble s */ getStackedDouble(3), /* GLdouble t */ getStackedDouble(5), /* GLdouble r */ getStackedDouble(7) /* GLdouble q */); break; case NFOSMESA_GLMULTITEXCOORD4DV: D(funcname = "glMultiTexCoord4dv"); if (GL_ISAVAILABLE(glMultiTexCoord4dv)) nfglMultiTexCoord4dv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLMULTITEXCOORD4DVARB: D(funcname = "glMultiTexCoord4dvARB"); if (GL_ISAVAILABLE(glMultiTexCoord4dvARB)) nfglMultiTexCoord4dvARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLMULTITEXCOORD4F: D(funcname = "glMultiTexCoord4f"); if (GL_ISAVAILABLE(glMultiTexCoord4f)) nfglMultiTexCoord4f( getStackedParameter(0), /* GLenum target */ getStackedFloat(1), /* GLfloat s */ getStackedFloat(2), /* GLfloat t */ getStackedFloat(3), /* GLfloat r */ getStackedFloat(4) /* GLfloat q */); break; case NFOSMESA_GLMULTITEXCOORD4FARB: D(funcname = "glMultiTexCoord4fARB"); if (GL_ISAVAILABLE(glMultiTexCoord4fARB)) nfglMultiTexCoord4fARB( getStackedParameter(0), /* GLenum target */ getStackedFloat(1), /* GLfloat s */ getStackedFloat(2), /* GLfloat t */ getStackedFloat(3), /* GLfloat r */ getStackedFloat(4) /* GLfloat q */); break; case NFOSMESA_GLMULTITEXCOORD4FV: D(funcname = "glMultiTexCoord4fv"); if (GL_ISAVAILABLE(glMultiTexCoord4fv)) nfglMultiTexCoord4fv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLMULTITEXCOORD4FVARB: D(funcname = "glMultiTexCoord4fvARB"); if (GL_ISAVAILABLE(glMultiTexCoord4fvARB)) nfglMultiTexCoord4fvARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLMULTITEXCOORD4HNV: D(funcname = "glMultiTexCoord4hNV"); if (GL_ISAVAILABLE(glMultiTexCoord4hNV)) nfglMultiTexCoord4hNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLhalfNV32 s */ getStackedParameter(2), /* GLhalfNV32 t */ getStackedParameter(3), /* GLhalfNV32 r */ getStackedParameter(4) /* GLhalfNV32 q */); break; case NFOSMESA_GLMULTITEXCOORD4HVNV: D(funcname = "glMultiTexCoord4hvNV"); if (GL_ISAVAILABLE(glMultiTexCoord4hvNV)) nfglMultiTexCoord4hvNV( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLMULTITEXCOORD4I: D(funcname = "glMultiTexCoord4i"); if (GL_ISAVAILABLE(glMultiTexCoord4i)) nfglMultiTexCoord4i( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint s */ getStackedParameter(2), /* GLint t */ getStackedParameter(3), /* GLint r */ getStackedParameter(4) /* GLint q */); break; case NFOSMESA_GLMULTITEXCOORD4IARB: D(funcname = "glMultiTexCoord4iARB"); if (GL_ISAVAILABLE(glMultiTexCoord4iARB)) nfglMultiTexCoord4iARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint s */ getStackedParameter(2), /* GLint t */ getStackedParameter(3), /* GLint r */ getStackedParameter(4) /* GLint q */); break; case NFOSMESA_GLMULTITEXCOORD4IV: D(funcname = "glMultiTexCoord4iv"); if (GL_ISAVAILABLE(glMultiTexCoord4iv)) nfglMultiTexCoord4iv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLMULTITEXCOORD4IVARB: D(funcname = "glMultiTexCoord4ivARB"); if (GL_ISAVAILABLE(glMultiTexCoord4ivARB)) nfglMultiTexCoord4ivARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLMULTITEXCOORD4S: D(funcname = "glMultiTexCoord4s"); if (GL_ISAVAILABLE(glMultiTexCoord4s)) nfglMultiTexCoord4s( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLshort32 s */ getStackedParameter(2), /* GLshort32 t */ getStackedParameter(3), /* GLshort32 r */ getStackedParameter(4) /* GLshort32 q */); break; case NFOSMESA_GLMULTITEXCOORD4SARB: D(funcname = "glMultiTexCoord4sARB"); if (GL_ISAVAILABLE(glMultiTexCoord4sARB)) nfglMultiTexCoord4sARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLshort32 s */ getStackedParameter(2), /* GLshort32 t */ getStackedParameter(3), /* GLshort32 r */ getStackedParameter(4) /* GLshort32 q */); break; case NFOSMESA_GLMULTITEXCOORD4SV: D(funcname = "glMultiTexCoord4sv"); if (GL_ISAVAILABLE(glMultiTexCoord4sv)) nfglMultiTexCoord4sv( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLMULTITEXCOORD4SVARB: D(funcname = "glMultiTexCoord4svARB"); if (GL_ISAVAILABLE(glMultiTexCoord4svARB)) nfglMultiTexCoord4svARB( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLMULTITEXCOORD4XOES: D(funcname = "glMultiTexCoord4xOES"); if (GL_ISAVAILABLE(glMultiTexCoord4xOES)) nfglMultiTexCoord4xOES( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1), /* GLfixed s */ getStackedParameter(2), /* GLfixed t */ getStackedParameter(3), /* GLfixed r */ getStackedParameter(4) /* GLfixed q */); break; case NFOSMESA_GLMULTITEXCOORD4XVOES: D(funcname = "glMultiTexCoord4xvOES"); if (GL_ISAVAILABLE(glMultiTexCoord4xvOES)) nfglMultiTexCoord4xvOES( getStackedParameter(0), /* GLenum texture */ getStackedPointer(1, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLMULTITEXCOORDP1UI: D(funcname = "glMultiTexCoordP1ui"); if (GL_ISAVAILABLE(glMultiTexCoordP1ui)) nfglMultiTexCoordP1ui( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2) /* GLuint coords */); break; case NFOSMESA_GLMULTITEXCOORDP1UIV: D(funcname = "glMultiTexCoordP1uiv"); if (GL_ISAVAILABLE(glMultiTexCoordP1uiv)) nfglMultiTexCoordP1uiv( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const GLuint *) /* const GLuint *coords */); break; case NFOSMESA_GLMULTITEXCOORDP2UI: D(funcname = "glMultiTexCoordP2ui"); if (GL_ISAVAILABLE(glMultiTexCoordP2ui)) nfglMultiTexCoordP2ui( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2) /* GLuint coords */); break; case NFOSMESA_GLMULTITEXCOORDP2UIV: D(funcname = "glMultiTexCoordP2uiv"); if (GL_ISAVAILABLE(glMultiTexCoordP2uiv)) nfglMultiTexCoordP2uiv( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const GLuint *) /* const GLuint *coords */); break; case NFOSMESA_GLMULTITEXCOORDP3UI: D(funcname = "glMultiTexCoordP3ui"); if (GL_ISAVAILABLE(glMultiTexCoordP3ui)) nfglMultiTexCoordP3ui( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2) /* GLuint coords */); break; case NFOSMESA_GLMULTITEXCOORDP3UIV: D(funcname = "glMultiTexCoordP3uiv"); if (GL_ISAVAILABLE(glMultiTexCoordP3uiv)) nfglMultiTexCoordP3uiv( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const GLuint *) /* const GLuint *coords */); break; case NFOSMESA_GLMULTITEXCOORDP4UI: D(funcname = "glMultiTexCoordP4ui"); if (GL_ISAVAILABLE(glMultiTexCoordP4ui)) nfglMultiTexCoordP4ui( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2) /* GLuint coords */); break; case NFOSMESA_GLMULTITEXCOORDP4UIV: D(funcname = "glMultiTexCoordP4uiv"); if (GL_ISAVAILABLE(glMultiTexCoordP4uiv)) nfglMultiTexCoordP4uiv( getStackedParameter(0), /* GLenum texture */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const GLuint *) /* const GLuint *coords */); break; case NFOSMESA_GLMULTITEXCOORDPOINTEREXT: D(funcname = "glMultiTexCoordPointerEXT"); if (GL_ISAVAILABLE(glMultiTexCoordPointerEXT)) nfglMultiTexCoordPointerEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei stride */ getStackedPointer(4, const void *) /* const void *pointer */); break; case NFOSMESA_GLMULTITEXENVFEXT: D(funcname = "glMultiTexEnvfEXT"); if (GL_ISAVAILABLE(glMultiTexEnvfEXT)) nfglMultiTexEnvfEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedFloat(3) /* GLfloat param */); break; case NFOSMESA_GLMULTITEXENVFVEXT: D(funcname = "glMultiTexEnvfvEXT"); if (GL_ISAVAILABLE(glMultiTexEnvfvEXT)) nfglMultiTexEnvfvEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLMULTITEXENVIEXT: D(funcname = "glMultiTexEnviEXT"); if (GL_ISAVAILABLE(glMultiTexEnviEXT)) nfglMultiTexEnviEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedParameter(3) /* GLint param */); break; case NFOSMESA_GLMULTITEXENVIVEXT: D(funcname = "glMultiTexEnvivEXT"); if (GL_ISAVAILABLE(glMultiTexEnvivEXT)) nfglMultiTexEnvivEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLMULTITEXGENDEXT: D(funcname = "glMultiTexGendEXT"); if (GL_ISAVAILABLE(glMultiTexGendEXT)) nfglMultiTexGendEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum coord */ getStackedParameter(2), /* GLenum pname */ getStackedDouble(3) /* GLdouble param */); break; case NFOSMESA_GLMULTITEXGENDVEXT: D(funcname = "glMultiTexGendvEXT"); if (GL_ISAVAILABLE(glMultiTexGendvEXT)) nfglMultiTexGendvEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum coord */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLdouble *) /* const GLdouble *params */); break; case NFOSMESA_GLMULTITEXGENFEXT: D(funcname = "glMultiTexGenfEXT"); if (GL_ISAVAILABLE(glMultiTexGenfEXT)) nfglMultiTexGenfEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum coord */ getStackedParameter(2), /* GLenum pname */ getStackedFloat(3) /* GLfloat param */); break; case NFOSMESA_GLMULTITEXGENFVEXT: D(funcname = "glMultiTexGenfvEXT"); if (GL_ISAVAILABLE(glMultiTexGenfvEXT)) nfglMultiTexGenfvEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum coord */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLMULTITEXGENIEXT: D(funcname = "glMultiTexGeniEXT"); if (GL_ISAVAILABLE(glMultiTexGeniEXT)) nfglMultiTexGeniEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum coord */ getStackedParameter(2), /* GLenum pname */ getStackedParameter(3) /* GLint param */); break; case NFOSMESA_GLMULTITEXGENIVEXT: D(funcname = "glMultiTexGenivEXT"); if (GL_ISAVAILABLE(glMultiTexGenivEXT)) nfglMultiTexGenivEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum coord */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLMULTITEXIMAGE1DEXT: D(funcname = "glMultiTexImage1DEXT"); if (GL_ISAVAILABLE(glMultiTexImage1DEXT)) nfglMultiTexImage1DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLint border */ getStackedParameter(6), /* GLenum format */ getStackedParameter(7), /* GLenum type */ getStackedPointer(8, const void *) /* const void *pixels */); break; case NFOSMESA_GLMULTITEXIMAGE2DEXT: D(funcname = "glMultiTexImage2DEXT"); if (GL_ISAVAILABLE(glMultiTexImage2DEXT)) nfglMultiTexImage2DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLint border */ getStackedParameter(7), /* GLenum format */ getStackedParameter(8), /* GLenum type */ getStackedPointer(9, const void *) /* const void *pixels */); break; case NFOSMESA_GLMULTITEXIMAGE3DEXT: D(funcname = "glMultiTexImage3DEXT"); if (GL_ISAVAILABLE(glMultiTexImage3DEXT)) nfglMultiTexImage3DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLsizei depth */ getStackedParameter(7), /* GLint border */ getStackedParameter(8), /* GLenum format */ getStackedParameter(9), /* GLenum type */ getStackedPointer(10, const void *) /* const void *pixels */); break; case NFOSMESA_GLMULTITEXPARAMETERIIVEXT: D(funcname = "glMultiTexParameterIivEXT"); if (GL_ISAVAILABLE(glMultiTexParameterIivEXT)) nfglMultiTexParameterIivEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLMULTITEXPARAMETERIUIVEXT: D(funcname = "glMultiTexParameterIuivEXT"); if (GL_ISAVAILABLE(glMultiTexParameterIuivEXT)) nfglMultiTexParameterIuivEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLuint *) /* const GLuint *params */); break; case NFOSMESA_GLMULTITEXPARAMETERFEXT: D(funcname = "glMultiTexParameterfEXT"); if (GL_ISAVAILABLE(glMultiTexParameterfEXT)) nfglMultiTexParameterfEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedFloat(3) /* GLfloat param */); break; case NFOSMESA_GLMULTITEXPARAMETERFVEXT: D(funcname = "glMultiTexParameterfvEXT"); if (GL_ISAVAILABLE(glMultiTexParameterfvEXT)) nfglMultiTexParameterfvEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLMULTITEXPARAMETERIEXT: D(funcname = "glMultiTexParameteriEXT"); if (GL_ISAVAILABLE(glMultiTexParameteriEXT)) nfglMultiTexParameteriEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedParameter(3) /* GLint param */); break; case NFOSMESA_GLMULTITEXPARAMETERIVEXT: D(funcname = "glMultiTexParameterivEXT"); if (GL_ISAVAILABLE(glMultiTexParameterivEXT)) nfglMultiTexParameterivEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLMULTITEXRENDERBUFFEREXT: D(funcname = "glMultiTexRenderbufferEXT"); if (GL_ISAVAILABLE(glMultiTexRenderbufferEXT)) nfglMultiTexRenderbufferEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2) /* GLuint renderbuffer */); break; case NFOSMESA_GLMULTITEXSUBIMAGE1DEXT: D(funcname = "glMultiTexSubImage1DEXT"); if (GL_ISAVAILABLE(glMultiTexSubImage1DEXT)) nfglMultiTexSubImage1DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLenum format */ getStackedParameter(6), /* GLenum type */ getStackedPointer(7, const void *) /* const void *pixels */); break; case NFOSMESA_GLMULTITEXSUBIMAGE2DEXT: D(funcname = "glMultiTexSubImage2DEXT"); if (GL_ISAVAILABLE(glMultiTexSubImage2DEXT)) nfglMultiTexSubImage2DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLint yoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLenum format */ getStackedParameter(8), /* GLenum type */ getStackedPointer(9, const void *) /* const void *pixels */); break; case NFOSMESA_GLMULTITEXSUBIMAGE3DEXT: D(funcname = "glMultiTexSubImage3DEXT"); if (GL_ISAVAILABLE(glMultiTexSubImage3DEXT)) nfglMultiTexSubImage3DEXT( getStackedParameter(0), /* GLenum texunit */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLint yoffset */ getStackedParameter(5), /* GLint zoffset */ getStackedParameter(6), /* GLsizei width */ getStackedParameter(7), /* GLsizei height */ getStackedParameter(8), /* GLsizei depth */ getStackedParameter(9), /* GLenum format */ getStackedParameter(10), /* GLenum type */ getStackedPointer(11, const void *) /* const void *pixels */); break; case NFOSMESA_GLMULTICASTBARRIERNV: D(funcname = "glMulticastBarrierNV"); if (GL_ISAVAILABLE(glMulticastBarrierNV)) nfglMulticastBarrierNV(); break; case NFOSMESA_GLMULTICASTBLITFRAMEBUFFERNV: D(funcname = "glMulticastBlitFramebufferNV"); if (GL_ISAVAILABLE(glMulticastBlitFramebufferNV)) nfglMulticastBlitFramebufferNV( getStackedParameter(0), /* GLuint srcGpu */ getStackedParameter(1), /* GLuint dstGpu */ getStackedParameter(2), /* GLint srcX0 */ getStackedParameter(3), /* GLint srcY0 */ getStackedParameter(4), /* GLint srcX1 */ getStackedParameter(5), /* GLint srcY1 */ getStackedParameter(6), /* GLint dstX0 */ getStackedParameter(7), /* GLint dstY0 */ getStackedParameter(8), /* GLint dstX1 */ getStackedParameter(9), /* GLint dstY1 */ getStackedParameter(10), /* GLbitfield mask */ getStackedParameter(11) /* GLenum filter */); break; case NFOSMESA_GLMULTICASTBUFFERSUBDATANV: D(funcname = "glMulticastBufferSubDataNV"); if (GL_ISAVAILABLE(glMulticastBufferSubDataNV)) nfglMulticastBufferSubDataNV( getStackedParameter(0), /* GLbitfield gpuMask */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLintptr offset */ getStackedParameter(3), /* GLsizeiptr size */ getStackedPointer(4, const void *) /* const void *data */); break; case NFOSMESA_GLMULTICASTCOPYBUFFERSUBDATANV: D(funcname = "glMulticastCopyBufferSubDataNV"); if (GL_ISAVAILABLE(glMulticastCopyBufferSubDataNV)) nfglMulticastCopyBufferSubDataNV( getStackedParameter(0), /* GLuint readGpu */ getStackedParameter(1), /* GLbitfield writeGpuMask */ getStackedParameter(2), /* GLuint readBuffer */ getStackedParameter(3), /* GLuint writeBuffer */ getStackedParameter(4), /* GLintptr readOffset */ getStackedParameter(5), /* GLintptr writeOffset */ getStackedParameter(6) /* GLsizeiptr size */); break; case NFOSMESA_GLMULTICASTCOPYIMAGESUBDATANV: D(funcname = "glMulticastCopyImageSubDataNV"); if (GL_ISAVAILABLE(glMulticastCopyImageSubDataNV)) nfglMulticastCopyImageSubDataNV( getStackedParameter(0), /* GLuint srcGpu */ getStackedParameter(1), /* GLbitfield dstGpuMask */ getStackedParameter(2), /* GLuint srcName */ getStackedParameter(3), /* GLenum srcTarget */ getStackedParameter(4), /* GLint srcLevel */ getStackedParameter(5), /* GLint srcX */ getStackedParameter(6), /* GLint srcY */ getStackedParameter(7), /* GLint srcZ */ getStackedParameter(8), /* GLuint dstName */ getStackedParameter(9), /* GLenum dstTarget */ getStackedParameter(10), /* GLint dstLevel */ getStackedParameter(11), /* GLint dstX */ getStackedParameter(12), /* GLint dstY */ getStackedParameter(13), /* GLint dstZ */ getStackedParameter(14), /* GLsizei srcWidth */ getStackedParameter(15), /* GLsizei srcHeight */ getStackedParameter(16) /* GLsizei srcDepth */); break; case NFOSMESA_GLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNV: D(funcname = "glMulticastFramebufferSampleLocationsfvNV"); if (GL_ISAVAILABLE(glMulticastFramebufferSampleLocationsfvNV)) nfglMulticastFramebufferSampleLocationsfvNV( getStackedParameter(0), /* GLuint gpu */ getStackedParameter(1), /* GLuint framebuffer */ getStackedParameter(2), /* GLuint start */ getStackedParameter(3), /* GLsizei count */ getStackedPointer(4, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLMULTICASTGETQUERYOBJECTI64VNV: D(funcname = "glMulticastGetQueryObjecti64vNV"); if (GL_ISAVAILABLE(glMulticastGetQueryObjecti64vNV)) nfglMulticastGetQueryObjecti64vNV( getStackedParameter(0), /* GLuint gpu */ getStackedParameter(1), /* GLuint id */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint64 *) /* GLint64 *params */); break; case NFOSMESA_GLMULTICASTGETQUERYOBJECTIVNV: D(funcname = "glMulticastGetQueryObjectivNV"); if (GL_ISAVAILABLE(glMulticastGetQueryObjectivNV)) nfglMulticastGetQueryObjectivNV( getStackedParameter(0), /* GLuint gpu */ getStackedParameter(1), /* GLuint id */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLint *) /* GLint *params */); break; case NFOSMESA_GLMULTICASTGETQUERYOBJECTUI64VNV: D(funcname = "glMulticastGetQueryObjectui64vNV"); if (GL_ISAVAILABLE(glMulticastGetQueryObjectui64vNV)) nfglMulticastGetQueryObjectui64vNV( getStackedParameter(0), /* GLuint gpu */ getStackedParameter(1), /* GLuint id */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLuint64 *) /* GLuint64 *params */); break; case NFOSMESA_GLMULTICASTGETQUERYOBJECTUIVNV: D(funcname = "glMulticastGetQueryObjectuivNV"); if (GL_ISAVAILABLE(glMulticastGetQueryObjectuivNV)) nfglMulticastGetQueryObjectuivNV( getStackedParameter(0), /* GLuint gpu */ getStackedParameter(1), /* GLuint id */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, GLuint *) /* GLuint *params */); break; case NFOSMESA_GLMULTICASTWAITSYNCNV: D(funcname = "glMulticastWaitSyncNV"); if (GL_ISAVAILABLE(glMulticastWaitSyncNV)) nfglMulticastWaitSyncNV( getStackedParameter(0), /* GLuint signalGpu */ getStackedParameter(1) /* GLbitfield waitGpuMask */); break; case NFOSMESA_GLNAMEDBUFFERDATA: D(funcname = "glNamedBufferData"); if (GL_ISAVAILABLE(glNamedBufferData)) nfglNamedBufferData( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLsizeiptr size */ getStackedPointer(2, const void *), /* const void *data */ getStackedParameter(3) /* GLenum usage */); break; case NFOSMESA_GLNAMEDBUFFERDATAEXT: D(funcname = "glNamedBufferDataEXT"); if (GL_ISAVAILABLE(glNamedBufferDataEXT)) nfglNamedBufferDataEXT( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLsizeiptr size */ getStackedPointer(2, const void *), /* const void *data */ getStackedParameter(3) /* GLenum usage */); break; case NFOSMESA_GLNAMEDBUFFERPAGECOMMITMENTARB: D(funcname = "glNamedBufferPageCommitmentARB"); if (GL_ISAVAILABLE(glNamedBufferPageCommitmentARB)) nfglNamedBufferPageCommitmentARB( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2), /* GLsizeiptr size */ getStackedParameter(3) /* GLboolean32 commit */); break; case NFOSMESA_GLNAMEDBUFFERPAGECOMMITMENTEXT: D(funcname = "glNamedBufferPageCommitmentEXT"); if (GL_ISAVAILABLE(glNamedBufferPageCommitmentEXT)) nfglNamedBufferPageCommitmentEXT( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2), /* GLsizeiptr size */ getStackedParameter(3) /* GLboolean32 commit */); break; case NFOSMESA_GLNAMEDBUFFERSTORAGE: D(funcname = "glNamedBufferStorage"); if (GL_ISAVAILABLE(glNamedBufferStorage)) nfglNamedBufferStorage( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLsizeiptr size */ getStackedPointer(2, const void *), /* const void *data */ getStackedParameter(3) /* GLbitfield flags */); break; case NFOSMESA_GLNAMEDBUFFERSTORAGEEXT: D(funcname = "glNamedBufferStorageEXT"); if (GL_ISAVAILABLE(glNamedBufferStorageEXT)) nfglNamedBufferStorageEXT( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLsizeiptr size */ getStackedPointer(2, const void *), /* const void *data */ getStackedParameter(3) /* GLbitfield flags */); break; case NFOSMESA_GLNAMEDBUFFERSTORAGEEXTERNALEXT: D(funcname = "glNamedBufferStorageExternalEXT"); if (GL_ISAVAILABLE(glNamedBufferStorageExternalEXT)) nfglNamedBufferStorageExternalEXT( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2), /* GLsizeiptr size */ getStackedPointer(3, GLeglClientBufferEXT ), /* GLeglClientBufferEXT clientBuffer */ getStackedParameter(4) /* GLbitfield flags */); break; case NFOSMESA_GLNAMEDBUFFERSTORAGEMEMEXT: D(funcname = "glNamedBufferStorageMemEXT"); if (GL_ISAVAILABLE(glNamedBufferStorageMemEXT)) nfglNamedBufferStorageMemEXT( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLsizeiptr size */ getStackedParameter(2), /* GLuint memory */ getStackedParameter64(3) /* GLuint64 offset */); break; case NFOSMESA_GLNAMEDBUFFERSUBDATA: D(funcname = "glNamedBufferSubData"); if (GL_ISAVAILABLE(glNamedBufferSubData)) nfglNamedBufferSubData( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2), /* GLsizeiptr size */ getStackedPointer(3, const void *) /* const void *data */); break; case NFOSMESA_GLNAMEDBUFFERSUBDATAEXT: D(funcname = "glNamedBufferSubDataEXT"); if (GL_ISAVAILABLE(glNamedBufferSubDataEXT)) nfglNamedBufferSubDataEXT( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLintptr offset */ getStackedParameter(2), /* GLsizeiptr size */ getStackedPointer(3, const void *) /* const void *data */); break; case NFOSMESA_GLNAMEDCOPYBUFFERSUBDATAEXT: D(funcname = "glNamedCopyBufferSubDataEXT"); if (GL_ISAVAILABLE(glNamedCopyBufferSubDataEXT)) nfglNamedCopyBufferSubDataEXT( getStackedParameter(0), /* GLuint readBuffer */ getStackedParameter(1), /* GLuint writeBuffer */ getStackedParameter(2), /* GLintptr readOffset */ getStackedParameter(3), /* GLintptr writeOffset */ getStackedParameter(4) /* GLsizeiptr size */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERDRAWBUFFER: D(funcname = "glNamedFramebufferDrawBuffer"); if (GL_ISAVAILABLE(glNamedFramebufferDrawBuffer)) nfglNamedFramebufferDrawBuffer( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1) /* GLenum buf */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERDRAWBUFFERS: D(funcname = "glNamedFramebufferDrawBuffers"); if (GL_ISAVAILABLE(glNamedFramebufferDrawBuffers)) nfglNamedFramebufferDrawBuffers( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLsizei n */ getStackedPointer(2, const GLenum *) /* const GLenum *bufs */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERPARAMETERI: D(funcname = "glNamedFramebufferParameteri"); if (GL_ISAVAILABLE(glNamedFramebufferParameteri)) nfglNamedFramebufferParameteri( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERPARAMETERIEXT: D(funcname = "glNamedFramebufferParameteriEXT"); if (GL_ISAVAILABLE(glNamedFramebufferParameteriEXT)) nfglNamedFramebufferParameteriEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERREADBUFFER: D(funcname = "glNamedFramebufferReadBuffer"); if (GL_ISAVAILABLE(glNamedFramebufferReadBuffer)) nfglNamedFramebufferReadBuffer( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1) /* GLenum src */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERRENDERBUFFER: D(funcname = "glNamedFramebufferRenderbuffer"); if (GL_ISAVAILABLE(glNamedFramebufferRenderbuffer)) nfglNamedFramebufferRenderbuffer( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum renderbuffertarget */ getStackedParameter(3) /* GLuint renderbuffer */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERRENDERBUFFEREXT: D(funcname = "glNamedFramebufferRenderbufferEXT"); if (GL_ISAVAILABLE(glNamedFramebufferRenderbufferEXT)) nfglNamedFramebufferRenderbufferEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum renderbuffertarget */ getStackedParameter(3) /* GLuint renderbuffer */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARB: D(funcname = "glNamedFramebufferSampleLocationsfvARB"); if (GL_ISAVAILABLE(glNamedFramebufferSampleLocationsfvARB)) nfglNamedFramebufferSampleLocationsfvARB( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLuint start */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV: D(funcname = "glNamedFramebufferSampleLocationsfvNV"); if (GL_ISAVAILABLE(glNamedFramebufferSampleLocationsfvNV)) nfglNamedFramebufferSampleLocationsfvNV( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLuint start */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMD: D(funcname = "glNamedFramebufferSamplePositionsfvAMD"); if (GL_ISAVAILABLE(glNamedFramebufferSamplePositionsfvAMD)) nfglNamedFramebufferSamplePositionsfvAMD( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLuint numsamples */ getStackedParameter(2), /* GLuint pixelindex */ getStackedPointer(3, const GLfloat *) /* const GLfloat *values */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE: D(funcname = "glNamedFramebufferTexture"); if (GL_ISAVAILABLE(glNamedFramebufferTexture)) nfglNamedFramebufferTexture( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLuint texture */ getStackedParameter(3) /* GLint level */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE1DEXT: D(funcname = "glNamedFramebufferTexture1DEXT"); if (GL_ISAVAILABLE(glNamedFramebufferTexture1DEXT)) nfglNamedFramebufferTexture1DEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum textarget */ getStackedParameter(3), /* GLuint texture */ getStackedParameter(4) /* GLint level */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE2DEXT: D(funcname = "glNamedFramebufferTexture2DEXT"); if (GL_ISAVAILABLE(glNamedFramebufferTexture2DEXT)) nfglNamedFramebufferTexture2DEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum textarget */ getStackedParameter(3), /* GLuint texture */ getStackedParameter(4) /* GLint level */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE3DEXT: D(funcname = "glNamedFramebufferTexture3DEXT"); if (GL_ISAVAILABLE(glNamedFramebufferTexture3DEXT)) nfglNamedFramebufferTexture3DEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLenum textarget */ getStackedParameter(3), /* GLuint texture */ getStackedParameter(4), /* GLint level */ getStackedParameter(5) /* GLint zoffset */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERTEXTUREEXT: D(funcname = "glNamedFramebufferTextureEXT"); if (GL_ISAVAILABLE(glNamedFramebufferTextureEXT)) nfglNamedFramebufferTextureEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLuint texture */ getStackedParameter(3) /* GLint level */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERTEXTUREFACEEXT: D(funcname = "glNamedFramebufferTextureFaceEXT"); if (GL_ISAVAILABLE(glNamedFramebufferTextureFaceEXT)) nfglNamedFramebufferTextureFaceEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLuint texture */ getStackedParameter(3), /* GLint level */ getStackedParameter(4) /* GLenum face */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURELAYER: D(funcname = "glNamedFramebufferTextureLayer"); if (GL_ISAVAILABLE(glNamedFramebufferTextureLayer)) nfglNamedFramebufferTextureLayer( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLuint texture */ getStackedParameter(3), /* GLint level */ getStackedParameter(4) /* GLint layer */); break; case NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURELAYEREXT: D(funcname = "glNamedFramebufferTextureLayerEXT"); if (GL_ISAVAILABLE(glNamedFramebufferTextureLayerEXT)) nfglNamedFramebufferTextureLayerEXT( getStackedParameter(0), /* GLuint framebuffer */ getStackedParameter(1), /* GLenum attachment */ getStackedParameter(2), /* GLuint texture */ getStackedParameter(3), /* GLint level */ getStackedParameter(4) /* GLint layer */); break; case NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4DEXT: D(funcname = "glNamedProgramLocalParameter4dEXT"); if (GL_ISAVAILABLE(glNamedProgramLocalParameter4dEXT)) nfglNamedProgramLocalParameter4dEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedDouble(3), /* GLdouble x */ getStackedDouble(5), /* GLdouble y */ getStackedDouble(7), /* GLdouble z */ getStackedDouble(9) /* GLdouble w */); break; case NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4DVEXT: D(funcname = "glNamedProgramLocalParameter4dvEXT"); if (GL_ISAVAILABLE(glNamedProgramLocalParameter4dvEXT)) nfglNamedProgramLocalParameter4dvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedPointer(3, const GLdouble *) /* const GLdouble *params */); break; case NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4FEXT: D(funcname = "glNamedProgramLocalParameter4fEXT"); if (GL_ISAVAILABLE(glNamedProgramLocalParameter4fEXT)) nfglNamedProgramLocalParameter4fEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedFloat(3), /* GLfloat x */ getStackedFloat(4), /* GLfloat y */ getStackedFloat(5), /* GLfloat z */ getStackedFloat(6) /* GLfloat w */); break; case NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4FVEXT: D(funcname = "glNamedProgramLocalParameter4fvEXT"); if (GL_ISAVAILABLE(glNamedProgramLocalParameter4fvEXT)) nfglNamedProgramLocalParameter4fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedPointer(3, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4IEXT: D(funcname = "glNamedProgramLocalParameterI4iEXT"); if (GL_ISAVAILABLE(glNamedProgramLocalParameterI4iEXT)) nfglNamedProgramLocalParameterI4iEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedParameter(3), /* GLint x */ getStackedParameter(4), /* GLint y */ getStackedParameter(5), /* GLint z */ getStackedParameter(6) /* GLint w */); break; case NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4IVEXT: D(funcname = "glNamedProgramLocalParameterI4ivEXT"); if (GL_ISAVAILABLE(glNamedProgramLocalParameterI4ivEXT)) nfglNamedProgramLocalParameterI4ivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedPointer(3, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4UIEXT: D(funcname = "glNamedProgramLocalParameterI4uiEXT"); if (GL_ISAVAILABLE(glNamedProgramLocalParameterI4uiEXT)) nfglNamedProgramLocalParameterI4uiEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedParameter(3), /* GLuint x */ getStackedParameter(4), /* GLuint y */ getStackedParameter(5), /* GLuint z */ getStackedParameter(6) /* GLuint w */); break; case NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4UIVEXT: D(funcname = "glNamedProgramLocalParameterI4uivEXT"); if (GL_ISAVAILABLE(glNamedProgramLocalParameterI4uivEXT)) nfglNamedProgramLocalParameterI4uivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedPointer(3, const GLuint *) /* const GLuint *params */); break; case NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERS4FVEXT: D(funcname = "glNamedProgramLocalParameters4fvEXT"); if (GL_ISAVAILABLE(glNamedProgramLocalParameters4fvEXT)) nfglNamedProgramLocalParameters4fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedParameter(3), /* GLsizei count */ getStackedPointer(4, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERSI4IVEXT: D(funcname = "glNamedProgramLocalParametersI4ivEXT"); if (GL_ISAVAILABLE(glNamedProgramLocalParametersI4ivEXT)) nfglNamedProgramLocalParametersI4ivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedParameter(3), /* GLsizei count */ getStackedPointer(4, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXT: D(funcname = "glNamedProgramLocalParametersI4uivEXT"); if (GL_ISAVAILABLE(glNamedProgramLocalParametersI4uivEXT)) nfglNamedProgramLocalParametersI4uivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint index */ getStackedParameter(3), /* GLsizei count */ getStackedPointer(4, const GLuint *) /* const GLuint *params */); break; case NFOSMESA_GLNAMEDPROGRAMSTRINGEXT: D(funcname = "glNamedProgramStringEXT"); if (GL_ISAVAILABLE(glNamedProgramStringEXT)) nfglNamedProgramStringEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum format */ getStackedParameter(3), /* GLsizei len */ getStackedPointer(4, const void *) /* const void *string */); break; case NFOSMESA_GLNAMEDRENDERBUFFERSTORAGE: D(funcname = "glNamedRenderbufferStorage"); if (GL_ISAVAILABLE(glNamedRenderbufferStorage)) nfglNamedRenderbufferStorage( getStackedParameter(0), /* GLuint renderbuffer */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3) /* GLsizei height */); break; case NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEEXT: D(funcname = "glNamedRenderbufferStorageEXT"); if (GL_ISAVAILABLE(glNamedRenderbufferStorageEXT)) nfglNamedRenderbufferStorageEXT( getStackedParameter(0), /* GLuint renderbuffer */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3) /* GLsizei height */); break; case NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLE: D(funcname = "glNamedRenderbufferStorageMultisample"); if (GL_ISAVAILABLE(glNamedRenderbufferStorageMultisample)) nfglNamedRenderbufferStorageMultisample( getStackedParameter(0), /* GLuint renderbuffer */ getStackedParameter(1), /* GLsizei samples */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4) /* GLsizei height */); break; case NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXT: D(funcname = "glNamedRenderbufferStorageMultisampleCoverageEXT"); if (GL_ISAVAILABLE(glNamedRenderbufferStorageMultisampleCoverageEXT)) nfglNamedRenderbufferStorageMultisampleCoverageEXT( getStackedParameter(0), /* GLuint renderbuffer */ getStackedParameter(1), /* GLsizei coverageSamples */ getStackedParameter(2), /* GLsizei colorSamples */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5) /* GLsizei height */); break; case NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXT: D(funcname = "glNamedRenderbufferStorageMultisampleEXT"); if (GL_ISAVAILABLE(glNamedRenderbufferStorageMultisampleEXT)) nfglNamedRenderbufferStorageMultisampleEXT( getStackedParameter(0), /* GLuint renderbuffer */ getStackedParameter(1), /* GLsizei samples */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4) /* GLsizei height */); break; case NFOSMESA_GLNAMEDSTRINGARB: D(funcname = "glNamedStringARB"); if (GL_ISAVAILABLE(glNamedStringARB)) nfglNamedStringARB( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLint namelen */ getStackedPointer(2, const GLchar *), /* const GLchar *name */ getStackedParameter(3), /* GLint stringlen */ getStackedPointer(4, const GLchar *) /* const GLchar *string */); break; case NFOSMESA_GLNEWLIST: D(funcname = "glNewList"); if (GL_ISAVAILABLE(glNewList)) nfglNewList( getStackedParameter(0), /* GLuint list */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLNEWOBJECTBUFFERATI: D(funcname = "glNewObjectBufferATI"); if (GL_ISAVAILABLE(glNewObjectBufferATI)) ret = nfglNewObjectBufferATI( getStackedParameter(0), /* GLsizei size */ getStackedPointer(1, const void *), /* const void *pointer */ getStackedParameter(2) /* GLenum usage */); break; case NFOSMESA_GLNEWTRACEMESA: D(funcname = "glNewTraceMESA"); if (GL_ISAVAILABLE(glNewTraceMESA)) nfglNewTraceMESA( getStackedParameter(0), /* GLbitfield mask */ getStackedPointer(1, const GLubyte *) /* const GLubyte *traceName */); break; case NFOSMESA_GLNORMAL3B: D(funcname = "glNormal3b"); if (GL_ISAVAILABLE(glNormal3b)) nfglNormal3b( getStackedParameter(0), /* GLbyte32 nx */ getStackedParameter(1), /* GLbyte32 ny */ getStackedParameter(2) /* GLbyte32 nz */); break; case NFOSMESA_GLNORMAL3BV: D(funcname = "glNormal3bv"); if (GL_ISAVAILABLE(glNormal3bv)) nfglNormal3bv( getStackedPointer(0, const GLbyte *) /* const GLbyte *v */); break; case NFOSMESA_GLNORMAL3D: D(funcname = "glNormal3d"); if (GL_ISAVAILABLE(glNormal3d)) nfglNormal3d( getStackedDouble(0), /* GLdouble nx */ getStackedDouble(2), /* GLdouble ny */ getStackedDouble(4) /* GLdouble nz */); break; case NFOSMESA_GLNORMAL3DV: D(funcname = "glNormal3dv"); if (GL_ISAVAILABLE(glNormal3dv)) nfglNormal3dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLNORMAL3F: D(funcname = "glNormal3f"); if (GL_ISAVAILABLE(glNormal3f)) nfglNormal3f( getStackedFloat(0), /* GLfloat nx */ getStackedFloat(1), /* GLfloat ny */ getStackedFloat(2) /* GLfloat nz */); break; case NFOSMESA_GLNORMAL3FVERTEX3FSUN: D(funcname = "glNormal3fVertex3fSUN"); if (GL_ISAVAILABLE(glNormal3fVertex3fSUN)) nfglNormal3fVertex3fSUN( getStackedFloat(0), /* GLfloat nx */ getStackedFloat(1), /* GLfloat ny */ getStackedFloat(2), /* GLfloat nz */ getStackedFloat(3), /* GLfloat x */ getStackedFloat(4), /* GLfloat y */ getStackedFloat(5) /* GLfloat z */); break; case NFOSMESA_GLNORMAL3FVERTEX3FVSUN: D(funcname = "glNormal3fVertex3fvSUN"); if (GL_ISAVAILABLE(glNormal3fVertex3fvSUN)) nfglNormal3fVertex3fvSUN( getStackedPointer(0, const GLfloat *), /* const GLfloat *n */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLNORMAL3FV: D(funcname = "glNormal3fv"); if (GL_ISAVAILABLE(glNormal3fv)) nfglNormal3fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLNORMAL3HNV: D(funcname = "glNormal3hNV"); if (GL_ISAVAILABLE(glNormal3hNV)) nfglNormal3hNV( getStackedParameter(0), /* GLhalfNV32 nx */ getStackedParameter(1), /* GLhalfNV32 ny */ getStackedParameter(2) /* GLhalfNV32 nz */); break; case NFOSMESA_GLNORMAL3HVNV: D(funcname = "glNormal3hvNV"); if (GL_ISAVAILABLE(glNormal3hvNV)) nfglNormal3hvNV( getStackedPointer(0, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLNORMAL3I: D(funcname = "glNormal3i"); if (GL_ISAVAILABLE(glNormal3i)) nfglNormal3i( getStackedParameter(0), /* GLint nx */ getStackedParameter(1), /* GLint ny */ getStackedParameter(2) /* GLint nz */); break; case NFOSMESA_GLNORMAL3IV: D(funcname = "glNormal3iv"); if (GL_ISAVAILABLE(glNormal3iv)) nfglNormal3iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLNORMAL3S: D(funcname = "glNormal3s"); if (GL_ISAVAILABLE(glNormal3s)) nfglNormal3s( getStackedParameter(0), /* GLshort32 nx */ getStackedParameter(1), /* GLshort32 ny */ getStackedParameter(2) /* GLshort32 nz */); break; case NFOSMESA_GLNORMAL3SV: D(funcname = "glNormal3sv"); if (GL_ISAVAILABLE(glNormal3sv)) nfglNormal3sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLNORMAL3XOES: D(funcname = "glNormal3xOES"); if (GL_ISAVAILABLE(glNormal3xOES)) nfglNormal3xOES( getStackedParameter(0), /* GLfixed nx */ getStackedParameter(1), /* GLfixed ny */ getStackedParameter(2) /* GLfixed nz */); break; case NFOSMESA_GLNORMAL3XVOES: D(funcname = "glNormal3xvOES"); if (GL_ISAVAILABLE(glNormal3xvOES)) nfglNormal3xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLNORMALFORMATNV: D(funcname = "glNormalFormatNV"); if (GL_ISAVAILABLE(glNormalFormatNV)) nfglNormalFormatNV( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLsizei stride */); break; case NFOSMESA_GLNORMALP3UI: D(funcname = "glNormalP3ui"); if (GL_ISAVAILABLE(glNormalP3ui)) nfglNormalP3ui( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLuint coords */); break; case NFOSMESA_GLNORMALP3UIV: D(funcname = "glNormalP3uiv"); if (GL_ISAVAILABLE(glNormalP3uiv)) nfglNormalP3uiv( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const GLuint *) /* const GLuint *coords */); break; case NFOSMESA_GLNORMALPOINTER: D(funcname = "glNormalPointer"); if (GL_ISAVAILABLE(glNormalPointer)) nfglNormalPointer( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLsizei stride */ getStackedPointer(2, const GLvoid *) /* const GLvoid *pointer */); break; case NFOSMESA_GLNORMALPOINTEREXT: D(funcname = "glNormalPointerEXT"); if (GL_ISAVAILABLE(glNormalPointerEXT)) nfglNormalPointerEXT( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLsizei stride */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const void *) /* const void *pointer */); break; case NFOSMESA_GLNORMALPOINTERLISTIBM: D(funcname = "glNormalPointerListIBM"); if (GL_ISAVAILABLE(glNormalPointerListIBM)) nfglNormalPointerListIBM( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLint stride */ getStackedPointer(2, const void * *), /* const void * *pointer */ getStackedParameter(3) /* GLint ptrstride */); break; case NFOSMESA_GLNORMALPOINTERVINTEL: D(funcname = "glNormalPointervINTEL"); if (GL_ISAVAILABLE(glNormalPointervINTEL)) nfglNormalPointervINTEL( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const void * *) /* const void * *pointer */); break; case NFOSMESA_GLNORMALSTREAM3BATI: D(funcname = "glNormalStream3bATI"); if (GL_ISAVAILABLE(glNormalStream3bATI)) nfglNormalStream3bATI( getStackedParameter(0), /* GLenum stream */ getStackedParameter(1), /* GLbyte32 nx */ getStackedParameter(2), /* GLbyte32 ny */ getStackedParameter(3) /* GLbyte32 nz */); break; case NFOSMESA_GLNORMALSTREAM3BVATI: D(funcname = "glNormalStream3bvATI"); if (GL_ISAVAILABLE(glNormalStream3bvATI)) nfglNormalStream3bvATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLbyte *) /* const GLbyte *coords */); break; case NFOSMESA_GLNORMALSTREAM3DATI: D(funcname = "glNormalStream3dATI"); if (GL_ISAVAILABLE(glNormalStream3dATI)) nfglNormalStream3dATI( getStackedParameter(0), /* GLenum stream */ getStackedDouble(1), /* GLdouble nx */ getStackedDouble(3), /* GLdouble ny */ getStackedDouble(5) /* GLdouble nz */); break; case NFOSMESA_GLNORMALSTREAM3DVATI: D(funcname = "glNormalStream3dvATI"); if (GL_ISAVAILABLE(glNormalStream3dvATI)) nfglNormalStream3dvATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLdouble *) /* const GLdouble *coords */); break; case NFOSMESA_GLNORMALSTREAM3FATI: D(funcname = "glNormalStream3fATI"); if (GL_ISAVAILABLE(glNormalStream3fATI)) nfglNormalStream3fATI( getStackedParameter(0), /* GLenum stream */ getStackedFloat(1), /* GLfloat nx */ getStackedFloat(2), /* GLfloat ny */ getStackedFloat(3) /* GLfloat nz */); break; case NFOSMESA_GLNORMALSTREAM3FVATI: D(funcname = "glNormalStream3fvATI"); if (GL_ISAVAILABLE(glNormalStream3fvATI)) nfglNormalStream3fvATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLfloat *) /* const GLfloat *coords */); break; case NFOSMESA_GLNORMALSTREAM3IATI: D(funcname = "glNormalStream3iATI"); if (GL_ISAVAILABLE(glNormalStream3iATI)) nfglNormalStream3iATI( getStackedParameter(0), /* GLenum stream */ getStackedParameter(1), /* GLint nx */ getStackedParameter(2), /* GLint ny */ getStackedParameter(3) /* GLint nz */); break; case NFOSMESA_GLNORMALSTREAM3IVATI: D(funcname = "glNormalStream3ivATI"); if (GL_ISAVAILABLE(glNormalStream3ivATI)) nfglNormalStream3ivATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLint *) /* const GLint *coords */); break; case NFOSMESA_GLNORMALSTREAM3SATI: D(funcname = "glNormalStream3sATI"); if (GL_ISAVAILABLE(glNormalStream3sATI)) nfglNormalStream3sATI( getStackedParameter(0), /* GLenum stream */ getStackedParameter(1), /* GLshort32 nx */ getStackedParameter(2), /* GLshort32 ny */ getStackedParameter(3) /* GLshort32 nz */); break; case NFOSMESA_GLNORMALSTREAM3SVATI: D(funcname = "glNormalStream3svATI"); if (GL_ISAVAILABLE(glNormalStream3svATI)) nfglNormalStream3svATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLshort *) /* const GLshort *coords */); break; case NFOSMESA_GLOBJECTLABEL: D(funcname = "glObjectLabel"); if (GL_ISAVAILABLE(glObjectLabel)) nfglObjectLabel( getStackedParameter(0), /* GLenum identifier */ getStackedParameter(1), /* GLuint name */ getStackedParameter(2), /* GLsizei length */ getStackedPointer(3, const GLchar *) /* const GLchar *label */); break; case NFOSMESA_GLOBJECTPTRLABEL: D(funcname = "glObjectPtrLabel"); if (GL_ISAVAILABLE(glObjectPtrLabel)) nfglObjectPtrLabel( getStackedPointer(0, const void *), /* const void *ptr */ getStackedParameter(1), /* GLsizei length */ getStackedPointer(2, const GLchar *) /* const GLchar *label */); break; case NFOSMESA_GLOBJECTPURGEABLEAPPLE: D(funcname = "glObjectPurgeableAPPLE"); if (GL_ISAVAILABLE(glObjectPurgeableAPPLE)) ret = nfglObjectPurgeableAPPLE( getStackedParameter(0), /* GLenum objectType */ getStackedParameter(1), /* GLuint name */ getStackedParameter(2) /* GLenum option */); break; case NFOSMESA_GLOBJECTUNPURGEABLEAPPLE: D(funcname = "glObjectUnpurgeableAPPLE"); if (GL_ISAVAILABLE(glObjectUnpurgeableAPPLE)) ret = nfglObjectUnpurgeableAPPLE( getStackedParameter(0), /* GLenum objectType */ getStackedParameter(1), /* GLuint name */ getStackedParameter(2) /* GLenum option */); break; case NFOSMESA_GLORTHO: D(funcname = "glOrtho"); if (GL_ISAVAILABLE(glOrtho)) nfglOrtho( getStackedDouble(0), /* GLdouble left */ getStackedDouble(2), /* GLdouble right */ getStackedDouble(4), /* GLdouble bottom */ getStackedDouble(6), /* GLdouble top */ getStackedDouble(8), /* GLdouble zNear */ getStackedDouble(10) /* GLdouble zFar */); break; case NFOSMESA_GLORTHOFOES: D(funcname = "glOrthofOES"); if (GL_ISAVAILABLE(glOrthofOES)) nfglOrthofOES( getStackedFloat(0), /* GLfloat l */ getStackedFloat(1), /* GLfloat r */ getStackedFloat(2), /* GLfloat b */ getStackedFloat(3), /* GLfloat t */ getStackedFloat(4), /* GLfloat n */ getStackedFloat(5) /* GLfloat f */); break; case NFOSMESA_GLORTHOXOES: D(funcname = "glOrthoxOES"); if (GL_ISAVAILABLE(glOrthoxOES)) nfglOrthoxOES( getStackedParameter(0), /* GLfixed l */ getStackedParameter(1), /* GLfixed r */ getStackedParameter(2), /* GLfixed b */ getStackedParameter(3), /* GLfixed t */ getStackedParameter(4), /* GLfixed n */ getStackedParameter(5) /* GLfixed f */); break; case NFOSMESA_GLPNTRIANGLESFATI: D(funcname = "glPNTrianglesfATI"); if (GL_ISAVAILABLE(glPNTrianglesfATI)) nfglPNTrianglesfATI( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat param */); break; case NFOSMESA_GLPNTRIANGLESIATI: D(funcname = "glPNTrianglesiATI"); if (GL_ISAVAILABLE(glPNTrianglesiATI)) nfglPNTrianglesiATI( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLPASSTEXCOORDATI: D(funcname = "glPassTexCoordATI"); if (GL_ISAVAILABLE(glPassTexCoordATI)) nfglPassTexCoordATI( getStackedParameter(0), /* GLuint dst */ getStackedParameter(1), /* GLuint coord */ getStackedParameter(2) /* GLenum swizzle */); break; case NFOSMESA_GLPASSTHROUGH: D(funcname = "glPassThrough"); if (GL_ISAVAILABLE(glPassThrough)) nfglPassThrough( getStackedFloat(0) /* GLfloat token */); break; case NFOSMESA_GLPASSTHROUGHXOES: D(funcname = "glPassThroughxOES"); if (GL_ISAVAILABLE(glPassThroughxOES)) nfglPassThroughxOES( getStackedParameter(0) /* GLfixed token */); break; case NFOSMESA_GLPATCHPARAMETERFV: D(funcname = "glPatchParameterfv"); if (GL_ISAVAILABLE(glPatchParameterfv)) nfglPatchParameterfv( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfloat *) /* const GLfloat *values */); break; case NFOSMESA_GLPATCHPARAMETERI: D(funcname = "glPatchParameteri"); if (GL_ISAVAILABLE(glPatchParameteri)) nfglPatchParameteri( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint value */); break; case NFOSMESA_GLPATHCOLORGENNV: D(funcname = "glPathColorGenNV"); if (GL_ISAVAILABLE(glPathColorGenNV)) nfglPathColorGenNV( getStackedParameter(0), /* GLenum color */ getStackedParameter(1), /* GLenum genMode */ getStackedParameter(2), /* GLenum colorFormat */ getStackedPointer(3, const GLfloat *) /* const GLfloat *coeffs */); break; case NFOSMESA_GLPATHCOMMANDSNV: D(funcname = "glPathCommandsNV"); if (GL_ISAVAILABLE(glPathCommandsNV)) nfglPathCommandsNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLsizei numCommands */ getStackedPointer(2, const GLubyte *), /* const GLubyte *commands */ getStackedParameter(3), /* GLsizei numCoords */ getStackedParameter(4), /* GLenum coordType */ getStackedPointer(5, const void *) /* const void *coords */); break; case NFOSMESA_GLPATHCOORDSNV: D(funcname = "glPathCoordsNV"); if (GL_ISAVAILABLE(glPathCoordsNV)) nfglPathCoordsNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLsizei numCoords */ getStackedParameter(2), /* GLenum coordType */ getStackedPointer(3, const void *) /* const void *coords */); break; case NFOSMESA_GLPATHCOVERDEPTHFUNCNV: D(funcname = "glPathCoverDepthFuncNV"); if (GL_ISAVAILABLE(glPathCoverDepthFuncNV)) nfglPathCoverDepthFuncNV( getStackedParameter(0) /* GLenum func */); break; case NFOSMESA_GLPATHDASHARRAYNV: D(funcname = "glPathDashArrayNV"); if (GL_ISAVAILABLE(glPathDashArrayNV)) nfglPathDashArrayNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLsizei dashCount */ getStackedPointer(2, const GLfloat *) /* const GLfloat *dashArray */); break; case NFOSMESA_GLPATHFOGGENNV: D(funcname = "glPathFogGenNV"); if (GL_ISAVAILABLE(glPathFogGenNV)) nfglPathFogGenNV( getStackedParameter(0) /* GLenum genMode */); break; case NFOSMESA_GLPATHGLYPHINDEXARRAYNV: D(funcname = "glPathGlyphIndexArrayNV"); if (GL_ISAVAILABLE(glPathGlyphIndexArrayNV)) ret = nfglPathGlyphIndexArrayNV( getStackedParameter(0), /* GLuint firstPathName */ getStackedParameter(1), /* GLenum fontTarget */ getStackedPointer(2, const void *), /* const void *fontName */ getStackedParameter(3), /* GLbitfield fontStyle */ getStackedParameter(4), /* GLuint firstGlyphIndex */ getStackedParameter(5), /* GLsizei numGlyphs */ getStackedParameter(6), /* GLuint pathParameterTemplate */ getStackedFloat(7) /* GLfloat emScale */); break; case NFOSMESA_GLPATHGLYPHINDEXRANGENV: D(funcname = "glPathGlyphIndexRangeNV"); if (GL_ISAVAILABLE(glPathGlyphIndexRangeNV)) ret = nfglPathGlyphIndexRangeNV( getStackedParameter(0), /* GLenum fontTarget */ getStackedPointer(1, const void *), /* const void *fontName */ getStackedParameter(2), /* GLbitfield fontStyle */ getStackedParameter(3), /* GLuint pathParameterTemplate */ getStackedFloat(4), /* GLfloat emScale */ getStackedPointer(5, GLuint *) /* GLuint *baseAndCount */); break; case NFOSMESA_GLPATHGLYPHRANGENV: D(funcname = "glPathGlyphRangeNV"); if (GL_ISAVAILABLE(glPathGlyphRangeNV)) nfglPathGlyphRangeNV( getStackedParameter(0), /* GLuint firstPathName */ getStackedParameter(1), /* GLenum fontTarget */ getStackedPointer(2, const void *), /* const void *fontName */ getStackedParameter(3), /* GLbitfield fontStyle */ getStackedParameter(4), /* GLuint firstGlyph */ getStackedParameter(5), /* GLsizei numGlyphs */ getStackedParameter(6), /* GLenum handleMissingGlyphs */ getStackedParameter(7), /* GLuint pathParameterTemplate */ getStackedFloat(8) /* GLfloat emScale */); break; case NFOSMESA_GLPATHGLYPHSNV: D(funcname = "glPathGlyphsNV"); if (GL_ISAVAILABLE(glPathGlyphsNV)) nfglPathGlyphsNV( getStackedParameter(0), /* GLuint firstPathName */ getStackedParameter(1), /* GLenum fontTarget */ getStackedPointer(2, const void *), /* const void *fontName */ getStackedParameter(3), /* GLbitfield fontStyle */ getStackedParameter(4), /* GLsizei numGlyphs */ getStackedParameter(5), /* GLenum type */ getStackedPointer(6, const void *), /* const void *charcodes */ getStackedParameter(7), /* GLenum handleMissingGlyphs */ getStackedParameter(8), /* GLuint pathParameterTemplate */ getStackedFloat(9) /* GLfloat emScale */); break; case NFOSMESA_GLPATHMEMORYGLYPHINDEXARRAYNV: D(funcname = "glPathMemoryGlyphIndexArrayNV"); if (GL_ISAVAILABLE(glPathMemoryGlyphIndexArrayNV)) ret = nfglPathMemoryGlyphIndexArrayNV( getStackedParameter(0), /* GLuint firstPathName */ getStackedParameter(1), /* GLenum fontTarget */ getStackedParameter(2), /* GLsizeiptr fontSize */ getStackedPointer(3, const void *), /* const void *fontData */ getStackedParameter(4), /* GLsizei faceIndex */ getStackedParameter(5), /* GLuint firstGlyphIndex */ getStackedParameter(6), /* GLsizei numGlyphs */ getStackedParameter(7), /* GLuint pathParameterTemplate */ getStackedFloat(8) /* GLfloat emScale */); break; case NFOSMESA_GLPATHPARAMETERFNV: D(funcname = "glPathParameterfNV"); if (GL_ISAVAILABLE(glPathParameterfNV)) nfglPathParameterfNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat value */); break; case NFOSMESA_GLPATHPARAMETERFVNV: D(funcname = "glPathParameterfvNV"); if (GL_ISAVAILABLE(glPathParameterfvNV)) nfglPathParameterfvNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPATHPARAMETERINV: D(funcname = "glPathParameteriNV"); if (GL_ISAVAILABLE(glPathParameteriNV)) nfglPathParameteriNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint value */); break; case NFOSMESA_GLPATHPARAMETERIVNV: D(funcname = "glPathParameterivNV"); if (GL_ISAVAILABLE(glPathParameterivNV)) nfglPathParameterivNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLPATHSTENCILDEPTHOFFSETNV: D(funcname = "glPathStencilDepthOffsetNV"); if (GL_ISAVAILABLE(glPathStencilDepthOffsetNV)) nfglPathStencilDepthOffsetNV( getStackedFloat(0), /* GLfloat factor */ getStackedFloat(1) /* GLfloat units */); break; case NFOSMESA_GLPATHSTENCILFUNCNV: D(funcname = "glPathStencilFuncNV"); if (GL_ISAVAILABLE(glPathStencilFuncNV)) nfglPathStencilFuncNV( getStackedParameter(0), /* GLenum func */ getStackedParameter(1), /* GLint ref */ getStackedParameter(2) /* GLuint mask */); break; case NFOSMESA_GLPATHSTRINGNV: D(funcname = "glPathStringNV"); if (GL_ISAVAILABLE(glPathStringNV)) nfglPathStringNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLsizei length */ getStackedPointer(3, const void *) /* const void *pathString */); break; case NFOSMESA_GLPATHSUBCOMMANDSNV: D(funcname = "glPathSubCommandsNV"); if (GL_ISAVAILABLE(glPathSubCommandsNV)) nfglPathSubCommandsNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLsizei commandStart */ getStackedParameter(2), /* GLsizei commandsToDelete */ getStackedParameter(3), /* GLsizei numCommands */ getStackedPointer(4, const GLubyte *), /* const GLubyte *commands */ getStackedParameter(5), /* GLsizei numCoords */ getStackedParameter(6), /* GLenum coordType */ getStackedPointer(7, const void *) /* const void *coords */); break; case NFOSMESA_GLPATHSUBCOORDSNV: D(funcname = "glPathSubCoordsNV"); if (GL_ISAVAILABLE(glPathSubCoordsNV)) nfglPathSubCoordsNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLsizei coordStart */ getStackedParameter(2), /* GLsizei numCoords */ getStackedParameter(3), /* GLenum coordType */ getStackedPointer(4, const void *) /* const void *coords */); break; case NFOSMESA_GLPATHTEXGENNV: D(funcname = "glPathTexGenNV"); if (GL_ISAVAILABLE(glPathTexGenNV)) nfglPathTexGenNV( getStackedParameter(0), /* GLenum texCoordSet */ getStackedParameter(1), /* GLenum genMode */ getStackedParameter(2), /* GLint components */ getStackedPointer(3, const GLfloat *) /* const GLfloat *coeffs */); break; case NFOSMESA_GLPAUSETRANSFORMFEEDBACK: D(funcname = "glPauseTransformFeedback"); if (GL_ISAVAILABLE(glPauseTransformFeedback)) nfglPauseTransformFeedback(); break; case NFOSMESA_GLPAUSETRANSFORMFEEDBACKNV: D(funcname = "glPauseTransformFeedbackNV"); if (GL_ISAVAILABLE(glPauseTransformFeedbackNV)) nfglPauseTransformFeedbackNV(); break; case NFOSMESA_GLPIXELDATARANGENV: D(funcname = "glPixelDataRangeNV"); if (GL_ISAVAILABLE(glPixelDataRangeNV)) nfglPixelDataRangeNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei length */ getStackedPointer(2, const void *) /* const void *pointer */); break; case NFOSMESA_GLPIXELMAPFV: D(funcname = "glPixelMapfv"); if (GL_ISAVAILABLE(glPixelMapfv)) nfglPixelMapfv( getStackedParameter(0), /* GLenum map */ getStackedParameter(1), /* GLsizei mapsize */ getStackedPointer(2, const GLfloat *) /* const GLfloat *values */); break; case NFOSMESA_GLPIXELMAPUIV: D(funcname = "glPixelMapuiv"); if (GL_ISAVAILABLE(glPixelMapuiv)) nfglPixelMapuiv( getStackedParameter(0), /* GLenum map */ getStackedParameter(1), /* GLsizei mapsize */ getStackedPointer(2, const GLuint *) /* const GLuint *values */); break; case NFOSMESA_GLPIXELMAPUSV: D(funcname = "glPixelMapusv"); if (GL_ISAVAILABLE(glPixelMapusv)) nfglPixelMapusv( getStackedParameter(0), /* GLenum map */ getStackedParameter(1), /* GLsizei mapsize */ getStackedPointer(2, const GLushort *) /* const GLushort *values */); break; case NFOSMESA_GLPIXELMAPX: D(funcname = "glPixelMapx"); if (GL_ISAVAILABLE(glPixelMapx)) nfglPixelMapx( getStackedParameter(0), /* GLenum map */ getStackedParameter(1), /* GLint size */ getStackedPointer(2, const GLfixed *) /* const GLfixed *values */); break; case NFOSMESA_GLPIXELSTOREF: D(funcname = "glPixelStoref"); if (GL_ISAVAILABLE(glPixelStoref)) nfglPixelStoref( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat param */); break; case NFOSMESA_GLPIXELSTOREI: D(funcname = "glPixelStorei"); if (GL_ISAVAILABLE(glPixelStorei)) nfglPixelStorei( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLPIXELSTOREX: D(funcname = "glPixelStorex"); if (GL_ISAVAILABLE(glPixelStorex)) nfglPixelStorex( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLfixed param */); break; case NFOSMESA_GLPIXELTEXGENPARAMETERFSGIS: D(funcname = "glPixelTexGenParameterfSGIS"); if (GL_ISAVAILABLE(glPixelTexGenParameterfSGIS)) nfglPixelTexGenParameterfSGIS( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat param */); break; case NFOSMESA_GLPIXELTEXGENPARAMETERFVSGIS: D(funcname = "glPixelTexGenParameterfvSGIS"); if (GL_ISAVAILABLE(glPixelTexGenParameterfvSGIS)) nfglPixelTexGenParameterfvSGIS( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLPIXELTEXGENPARAMETERISGIS: D(funcname = "glPixelTexGenParameteriSGIS"); if (GL_ISAVAILABLE(glPixelTexGenParameteriSGIS)) nfglPixelTexGenParameteriSGIS( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLPIXELTEXGENPARAMETERIVSGIS: D(funcname = "glPixelTexGenParameterivSGIS"); if (GL_ISAVAILABLE(glPixelTexGenParameterivSGIS)) nfglPixelTexGenParameterivSGIS( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLPIXELTEXGENSGIX: D(funcname = "glPixelTexGenSGIX"); if (GL_ISAVAILABLE(glPixelTexGenSGIX)) nfglPixelTexGenSGIX( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLPIXELTRANSFERF: D(funcname = "glPixelTransferf"); if (GL_ISAVAILABLE(glPixelTransferf)) nfglPixelTransferf( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat param */); break; case NFOSMESA_GLPIXELTRANSFERI: D(funcname = "glPixelTransferi"); if (GL_ISAVAILABLE(glPixelTransferi)) nfglPixelTransferi( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLPIXELTRANSFERXOES: D(funcname = "glPixelTransferxOES"); if (GL_ISAVAILABLE(glPixelTransferxOES)) nfglPixelTransferxOES( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLfixed param */); break; case NFOSMESA_GLPIXELTRANSFORMPARAMETERFEXT: D(funcname = "glPixelTransformParameterfEXT"); if (GL_ISAVAILABLE(glPixelTransformParameterfEXT)) nfglPixelTransformParameterfEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat param */); break; case NFOSMESA_GLPIXELTRANSFORMPARAMETERFVEXT: D(funcname = "glPixelTransformParameterfvEXT"); if (GL_ISAVAILABLE(glPixelTransformParameterfvEXT)) nfglPixelTransformParameterfvEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLPIXELTRANSFORMPARAMETERIEXT: D(funcname = "glPixelTransformParameteriEXT"); if (GL_ISAVAILABLE(glPixelTransformParameteriEXT)) nfglPixelTransformParameteriEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLPIXELTRANSFORMPARAMETERIVEXT: D(funcname = "glPixelTransformParameterivEXT"); if (GL_ISAVAILABLE(glPixelTransformParameterivEXT)) nfglPixelTransformParameterivEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLPIXELZOOM: D(funcname = "glPixelZoom"); if (GL_ISAVAILABLE(glPixelZoom)) nfglPixelZoom( getStackedFloat(0), /* GLfloat xfactor */ getStackedFloat(1) /* GLfloat yfactor */); break; case NFOSMESA_GLPIXELZOOMXOES: D(funcname = "glPixelZoomxOES"); if (GL_ISAVAILABLE(glPixelZoomxOES)) nfglPixelZoomxOES( getStackedParameter(0), /* GLfixed xfactor */ getStackedParameter(1) /* GLfixed yfactor */); break; case NFOSMESA_GLPOINTALONGPATHNV: D(funcname = "glPointAlongPathNV"); if (GL_ISAVAILABLE(glPointAlongPathNV)) ret = nfglPointAlongPathNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLsizei startSegment */ getStackedParameter(2), /* GLsizei numSegments */ getStackedFloat(3), /* GLfloat distance */ getStackedPointer(4, GLfloat *), /* GLfloat *x */ getStackedPointer(5, GLfloat *), /* GLfloat *y */ getStackedPointer(6, GLfloat *), /* GLfloat *tangentX */ getStackedPointer(7, GLfloat *) /* GLfloat *tangentY */); break; case NFOSMESA_GLPOINTPARAMETERF: D(funcname = "glPointParameterf"); if (GL_ISAVAILABLE(glPointParameterf)) nfglPointParameterf( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat param */); break; case NFOSMESA_GLPOINTPARAMETERFARB: D(funcname = "glPointParameterfARB"); if (GL_ISAVAILABLE(glPointParameterfARB)) nfglPointParameterfARB( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat param */); break; case NFOSMESA_GLPOINTPARAMETERFEXT: D(funcname = "glPointParameterfEXT"); if (GL_ISAVAILABLE(glPointParameterfEXT)) nfglPointParameterfEXT( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat param */); break; case NFOSMESA_GLPOINTPARAMETERFSGIS: D(funcname = "glPointParameterfSGIS"); if (GL_ISAVAILABLE(glPointParameterfSGIS)) nfglPointParameterfSGIS( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat param */); break; case NFOSMESA_GLPOINTPARAMETERFV: D(funcname = "glPointParameterfv"); if (GL_ISAVAILABLE(glPointParameterfv)) nfglPointParameterfv( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLPOINTPARAMETERFVARB: D(funcname = "glPointParameterfvARB"); if (GL_ISAVAILABLE(glPointParameterfvARB)) nfglPointParameterfvARB( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLPOINTPARAMETERFVEXT: D(funcname = "glPointParameterfvEXT"); if (GL_ISAVAILABLE(glPointParameterfvEXT)) nfglPointParameterfvEXT( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLPOINTPARAMETERFVSGIS: D(funcname = "glPointParameterfvSGIS"); if (GL_ISAVAILABLE(glPointParameterfvSGIS)) nfglPointParameterfvSGIS( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLPOINTPARAMETERI: D(funcname = "glPointParameteri"); if (GL_ISAVAILABLE(glPointParameteri)) nfglPointParameteri( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLPOINTPARAMETERINV: D(funcname = "glPointParameteriNV"); if (GL_ISAVAILABLE(glPointParameteriNV)) nfglPointParameteriNV( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLPOINTPARAMETERIV: D(funcname = "glPointParameteriv"); if (GL_ISAVAILABLE(glPointParameteriv)) nfglPointParameteriv( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLPOINTPARAMETERIVNV: D(funcname = "glPointParameterivNV"); if (GL_ISAVAILABLE(glPointParameterivNV)) nfglPointParameterivNV( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLPOINTPARAMETERXVOES: D(funcname = "glPointParameterxvOES"); if (GL_ISAVAILABLE(glPointParameterxvOES)) nfglPointParameterxvOES( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfixed *) /* const GLfixed *params */); break; case NFOSMESA_GLPOINTSIZE: D(funcname = "glPointSize"); if (GL_ISAVAILABLE(glPointSize)) nfglPointSize( getStackedFloat(0) /* GLfloat size */); break; case NFOSMESA_GLPOINTSIZEPOINTERAPPLE: D(funcname = "glPointSizePointerAPPLE"); if (GL_ISAVAILABLE(glPointSizePointerAPPLE)) nfglPointSizePointerAPPLE( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLsizei stride */ getStackedPointer(2, const GLvoid *) /* const GLvoid *pointer */); break; case NFOSMESA_GLPOINTSIZEXOES: D(funcname = "glPointSizexOES"); if (GL_ISAVAILABLE(glPointSizexOES)) nfglPointSizexOES( getStackedParameter(0) /* GLfixed size */); break; case NFOSMESA_GLPOLLASYNCSGIX: D(funcname = "glPollAsyncSGIX"); if (GL_ISAVAILABLE(glPollAsyncSGIX)) ret = nfglPollAsyncSGIX( getStackedPointer(0, GLuint *) /* GLuint *markerp */); break; case NFOSMESA_GLPOLLINSTRUMENTSSGIX: D(funcname = "glPollInstrumentsSGIX"); if (GL_ISAVAILABLE(glPollInstrumentsSGIX)) ret = nfglPollInstrumentsSGIX( getStackedPointer(0, GLint *) /* GLint *marker_p */); break; case NFOSMESA_GLPOLYGONMODE: D(funcname = "glPolygonMode"); if (GL_ISAVAILABLE(glPolygonMode)) nfglPolygonMode( getStackedParameter(0), /* GLenum face */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLPOLYGONOFFSET: D(funcname = "glPolygonOffset"); if (GL_ISAVAILABLE(glPolygonOffset)) nfglPolygonOffset( getStackedFloat(0), /* GLfloat factor */ getStackedFloat(1) /* GLfloat units */); break; case NFOSMESA_GLPOLYGONOFFSETCLAMP: D(funcname = "glPolygonOffsetClamp"); if (GL_ISAVAILABLE(glPolygonOffsetClamp)) nfglPolygonOffsetClamp( getStackedFloat(0), /* GLfloat factor */ getStackedFloat(1), /* GLfloat units */ getStackedFloat(2) /* GLfloat clamp */); break; case NFOSMESA_GLPOLYGONOFFSETCLAMPEXT: D(funcname = "glPolygonOffsetClampEXT"); if (GL_ISAVAILABLE(glPolygonOffsetClampEXT)) nfglPolygonOffsetClampEXT( getStackedFloat(0), /* GLfloat factor */ getStackedFloat(1), /* GLfloat units */ getStackedFloat(2) /* GLfloat clamp */); break; case NFOSMESA_GLPOLYGONOFFSETEXT: D(funcname = "glPolygonOffsetEXT"); if (GL_ISAVAILABLE(glPolygonOffsetEXT)) nfglPolygonOffsetEXT( getStackedFloat(0), /* GLfloat factor */ getStackedFloat(1) /* GLfloat bias */); break; case NFOSMESA_GLPOLYGONOFFSETXOES: D(funcname = "glPolygonOffsetxOES"); if (GL_ISAVAILABLE(glPolygonOffsetxOES)) nfglPolygonOffsetxOES( getStackedParameter(0), /* GLfixed factor */ getStackedParameter(1) /* GLfixed units */); break; case NFOSMESA_GLPOLYGONSTIPPLE: D(funcname = "glPolygonStipple"); if (GL_ISAVAILABLE(glPolygonStipple)) nfglPolygonStipple( getStackedPointer(0, const GLubyte *) /* const GLubyte *mask */); break; case NFOSMESA_GLPOPATTRIB: D(funcname = "glPopAttrib"); if (GL_ISAVAILABLE(glPopAttrib)) nfglPopAttrib(); break; case NFOSMESA_GLPOPCLIENTATTRIB: D(funcname = "glPopClientAttrib"); if (GL_ISAVAILABLE(glPopClientAttrib)) nfglPopClientAttrib(); break; case NFOSMESA_GLPOPDEBUGGROUP: D(funcname = "glPopDebugGroup"); if (GL_ISAVAILABLE(glPopDebugGroup)) nfglPopDebugGroup(); break; case NFOSMESA_GLPOPGROUPMARKEREXT: D(funcname = "glPopGroupMarkerEXT"); if (GL_ISAVAILABLE(glPopGroupMarkerEXT)) nfglPopGroupMarkerEXT(); break; case NFOSMESA_GLPOPMATRIX: D(funcname = "glPopMatrix"); if (GL_ISAVAILABLE(glPopMatrix)) nfglPopMatrix(); break; case NFOSMESA_GLPOPNAME: D(funcname = "glPopName"); if (GL_ISAVAILABLE(glPopName)) nfglPopName(); break; case NFOSMESA_GLPRESENTFRAMEDUALFILLNV: D(funcname = "glPresentFrameDualFillNV"); if (GL_ISAVAILABLE(glPresentFrameDualFillNV)) nfglPresentFrameDualFillNV( getStackedParameter(0), /* GLuint video_slot */ getStackedParameter64(1), /* GLuint64EXT minPresentTime */ getStackedParameter(3), /* GLuint beginPresentTimeId */ getStackedParameter(4), /* GLuint presentDurationId */ getStackedParameter(5), /* GLenum type */ getStackedParameter(6), /* GLenum target0 */ getStackedParameter(7), /* GLuint fill0 */ getStackedParameter(8), /* GLenum target1 */ getStackedParameter(9), /* GLuint fill1 */ getStackedParameter(10), /* GLenum target2 */ getStackedParameter(11), /* GLuint fill2 */ getStackedParameter(12), /* GLenum target3 */ getStackedParameter(13) /* GLuint fill3 */); break; case NFOSMESA_GLPRESENTFRAMEKEYEDNV: D(funcname = "glPresentFrameKeyedNV"); if (GL_ISAVAILABLE(glPresentFrameKeyedNV)) nfglPresentFrameKeyedNV( getStackedParameter(0), /* GLuint video_slot */ getStackedParameter64(1), /* GLuint64EXT minPresentTime */ getStackedParameter(3), /* GLuint beginPresentTimeId */ getStackedParameter(4), /* GLuint presentDurationId */ getStackedParameter(5), /* GLenum type */ getStackedParameter(6), /* GLenum target0 */ getStackedParameter(7), /* GLuint fill0 */ getStackedParameter(8), /* GLuint key0 */ getStackedParameter(9), /* GLenum target1 */ getStackedParameter(10), /* GLuint fill1 */ getStackedParameter(11) /* GLuint key1 */); break; case NFOSMESA_GLPRIMITIVEBOUNDINGBOXARB: D(funcname = "glPrimitiveBoundingBoxARB"); if (GL_ISAVAILABLE(glPrimitiveBoundingBoxARB)) nfglPrimitiveBoundingBoxARB( getStackedFloat(0), /* GLfloat minX */ getStackedFloat(1), /* GLfloat minY */ getStackedFloat(2), /* GLfloat minZ */ getStackedFloat(3), /* GLfloat minW */ getStackedFloat(4), /* GLfloat maxX */ getStackedFloat(5), /* GLfloat maxY */ getStackedFloat(6), /* GLfloat maxZ */ getStackedFloat(7) /* GLfloat maxW */); break; case NFOSMESA_GLPRIMITIVERESTARTINDEX: D(funcname = "glPrimitiveRestartIndex"); if (GL_ISAVAILABLE(glPrimitiveRestartIndex)) nfglPrimitiveRestartIndex( getStackedParameter(0) /* GLuint index */); break; case NFOSMESA_GLPRIMITIVERESTARTINDEXNV: D(funcname = "glPrimitiveRestartIndexNV"); if (GL_ISAVAILABLE(glPrimitiveRestartIndexNV)) nfglPrimitiveRestartIndexNV( getStackedParameter(0) /* GLuint index */); break; case NFOSMESA_GLPRIMITIVERESTARTNV: D(funcname = "glPrimitiveRestartNV"); if (GL_ISAVAILABLE(glPrimitiveRestartNV)) nfglPrimitiveRestartNV(); break; case NFOSMESA_GLPRIORITIZETEXTURES: D(funcname = "glPrioritizeTextures"); if (GL_ISAVAILABLE(glPrioritizeTextures)) nfglPrioritizeTextures( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *), /* const GLuint *textures */ getStackedPointer(2, const GLclampf *) /* const GLclampf *priorities */); break; case NFOSMESA_GLPRIORITIZETEXTURESEXT: D(funcname = "glPrioritizeTexturesEXT"); if (GL_ISAVAILABLE(glPrioritizeTexturesEXT)) nfglPrioritizeTexturesEXT( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *), /* const GLuint *textures */ getStackedPointer(2, const GLclampf *) /* const GLclampf *priorities */); break; case NFOSMESA_GLPRIORITIZETEXTURESXOES: D(funcname = "glPrioritizeTexturesxOES"); if (GL_ISAVAILABLE(glPrioritizeTexturesxOES)) nfglPrioritizeTexturesxOES( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *), /* const GLuint *textures */ getStackedPointer(2, const GLfixed *) /* const GLfixed *priorities */); break; case NFOSMESA_GLPROGRAMBINARY: D(funcname = "glProgramBinary"); if (GL_ISAVAILABLE(glProgramBinary)) nfglProgramBinary( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum binaryFormat */ getStackedPointer(2, const void *), /* const void *binary */ getStackedParameter(3) /* GLsizei length */); break; case NFOSMESA_GLPROGRAMBUFFERPARAMETERSIIVNV: D(funcname = "glProgramBufferParametersIivNV"); if (GL_ISAVAILABLE(glProgramBufferParametersIivNV)) nfglProgramBufferParametersIivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint bindingIndex */ getStackedParameter(2), /* GLuint wordIndex */ getStackedParameter(3), /* GLsizei count */ getStackedPointer(4, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLPROGRAMBUFFERPARAMETERSIUIVNV: D(funcname = "glProgramBufferParametersIuivNV"); if (GL_ISAVAILABLE(glProgramBufferParametersIuivNV)) nfglProgramBufferParametersIuivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint bindingIndex */ getStackedParameter(2), /* GLuint wordIndex */ getStackedParameter(3), /* GLsizei count */ getStackedPointer(4, const GLuint *) /* const GLuint *params */); break; case NFOSMESA_GLPROGRAMBUFFERPARAMETERSFVNV: D(funcname = "glProgramBufferParametersfvNV"); if (GL_ISAVAILABLE(glProgramBufferParametersfvNV)) nfglProgramBufferParametersfvNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint bindingIndex */ getStackedParameter(2), /* GLuint wordIndex */ getStackedParameter(3), /* GLsizei count */ getStackedPointer(4, const GLfloat *) /* const GLfloat *params */); break; #if 0 case NFOSMESA_GLPROGRAMCALLBACKMESA: D(funcname = "glProgramCallbackMESA"); if (GL_ISAVAILABLE(glProgramCallbackMESA)) nfglProgramCallbackMESA( getStackedParameter(0), /* GLenum target */ getStackedPointer(1, GLprogramcallbackMESA ), /* GLprogramcallbackMESA callback */ getStackedPointer(2, GLvoid *) /* GLvoid *data */); break; #endif case NFOSMESA_GLPROGRAMENVPARAMETER4DARB: D(funcname = "glProgramEnvParameter4dARB"); if (GL_ISAVAILABLE(glProgramEnvParameter4dARB)) nfglProgramEnvParameter4dARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedDouble(2), /* GLdouble x */ getStackedDouble(4), /* GLdouble y */ getStackedDouble(6), /* GLdouble z */ getStackedDouble(8) /* GLdouble w */); break; case NFOSMESA_GLPROGRAMENVPARAMETER4DVARB: D(funcname = "glProgramEnvParameter4dvARB"); if (GL_ISAVAILABLE(glProgramEnvParameter4dvARB)) nfglProgramEnvParameter4dvARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, const GLdouble *) /* const GLdouble *params */); break; case NFOSMESA_GLPROGRAMENVPARAMETER4FARB: D(funcname = "glProgramEnvParameter4fARB"); if (GL_ISAVAILABLE(glProgramEnvParameter4fARB)) nfglProgramEnvParameter4fARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedFloat(2), /* GLfloat x */ getStackedFloat(3), /* GLfloat y */ getStackedFloat(4), /* GLfloat z */ getStackedFloat(5) /* GLfloat w */); break; case NFOSMESA_GLPROGRAMENVPARAMETER4FVARB: D(funcname = "glProgramEnvParameter4fvARB"); if (GL_ISAVAILABLE(glProgramEnvParameter4fvARB)) nfglProgramEnvParameter4fvARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLPROGRAMENVPARAMETERI4INV: D(funcname = "glProgramEnvParameterI4iNV"); if (GL_ISAVAILABLE(glProgramEnvParameterI4iNV)) nfglProgramEnvParameterI4iNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLint x */ getStackedParameter(3), /* GLint y */ getStackedParameter(4), /* GLint z */ getStackedParameter(5) /* GLint w */); break; case NFOSMESA_GLPROGRAMENVPARAMETERI4IVNV: D(funcname = "glProgramEnvParameterI4ivNV"); if (GL_ISAVAILABLE(glProgramEnvParameterI4ivNV)) nfglProgramEnvParameterI4ivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLPROGRAMENVPARAMETERI4UINV: D(funcname = "glProgramEnvParameterI4uiNV"); if (GL_ISAVAILABLE(glProgramEnvParameterI4uiNV)) nfglProgramEnvParameterI4uiNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLuint x */ getStackedParameter(3), /* GLuint y */ getStackedParameter(4), /* GLuint z */ getStackedParameter(5) /* GLuint w */); break; case NFOSMESA_GLPROGRAMENVPARAMETERI4UIVNV: D(funcname = "glProgramEnvParameterI4uivNV"); if (GL_ISAVAILABLE(glProgramEnvParameterI4uivNV)) nfglProgramEnvParameterI4uivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, const GLuint *) /* const GLuint *params */); break; case NFOSMESA_GLPROGRAMENVPARAMETERS4FVEXT: D(funcname = "glProgramEnvParameters4fvEXT"); if (GL_ISAVAILABLE(glProgramEnvParameters4fvEXT)) nfglProgramEnvParameters4fvEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLPROGRAMENVPARAMETERSI4IVNV: D(funcname = "glProgramEnvParametersI4ivNV"); if (GL_ISAVAILABLE(glProgramEnvParametersI4ivNV)) nfglProgramEnvParametersI4ivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLPROGRAMENVPARAMETERSI4UIVNV: D(funcname = "glProgramEnvParametersI4uivNV"); if (GL_ISAVAILABLE(glProgramEnvParametersI4uivNV)) nfglProgramEnvParametersI4uivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint *) /* const GLuint *params */); break; case NFOSMESA_GLPROGRAMLOCALPARAMETER4DARB: D(funcname = "glProgramLocalParameter4dARB"); if (GL_ISAVAILABLE(glProgramLocalParameter4dARB)) nfglProgramLocalParameter4dARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedDouble(2), /* GLdouble x */ getStackedDouble(4), /* GLdouble y */ getStackedDouble(6), /* GLdouble z */ getStackedDouble(8) /* GLdouble w */); break; case NFOSMESA_GLPROGRAMLOCALPARAMETER4DVARB: D(funcname = "glProgramLocalParameter4dvARB"); if (GL_ISAVAILABLE(glProgramLocalParameter4dvARB)) nfglProgramLocalParameter4dvARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, const GLdouble *) /* const GLdouble *params */); break; case NFOSMESA_GLPROGRAMLOCALPARAMETER4FARB: D(funcname = "glProgramLocalParameter4fARB"); if (GL_ISAVAILABLE(glProgramLocalParameter4fARB)) nfglProgramLocalParameter4fARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedFloat(2), /* GLfloat x */ getStackedFloat(3), /* GLfloat y */ getStackedFloat(4), /* GLfloat z */ getStackedFloat(5) /* GLfloat w */); break; case NFOSMESA_GLPROGRAMLOCALPARAMETER4FVARB: D(funcname = "glProgramLocalParameter4fvARB"); if (GL_ISAVAILABLE(glProgramLocalParameter4fvARB)) nfglProgramLocalParameter4fvARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLPROGRAMLOCALPARAMETERI4INV: D(funcname = "glProgramLocalParameterI4iNV"); if (GL_ISAVAILABLE(glProgramLocalParameterI4iNV)) nfglProgramLocalParameterI4iNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLint x */ getStackedParameter(3), /* GLint y */ getStackedParameter(4), /* GLint z */ getStackedParameter(5) /* GLint w */); break; case NFOSMESA_GLPROGRAMLOCALPARAMETERI4IVNV: D(funcname = "glProgramLocalParameterI4ivNV"); if (GL_ISAVAILABLE(glProgramLocalParameterI4ivNV)) nfglProgramLocalParameterI4ivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLPROGRAMLOCALPARAMETERI4UINV: D(funcname = "glProgramLocalParameterI4uiNV"); if (GL_ISAVAILABLE(glProgramLocalParameterI4uiNV)) nfglProgramLocalParameterI4uiNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLuint x */ getStackedParameter(3), /* GLuint y */ getStackedParameter(4), /* GLuint z */ getStackedParameter(5) /* GLuint w */); break; case NFOSMESA_GLPROGRAMLOCALPARAMETERI4UIVNV: D(funcname = "glProgramLocalParameterI4uivNV"); if (GL_ISAVAILABLE(glProgramLocalParameterI4uivNV)) nfglProgramLocalParameterI4uivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, const GLuint *) /* const GLuint *params */); break; case NFOSMESA_GLPROGRAMLOCALPARAMETERS4FVEXT: D(funcname = "glProgramLocalParameters4fvEXT"); if (GL_ISAVAILABLE(glProgramLocalParameters4fvEXT)) nfglProgramLocalParameters4fvEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLPROGRAMLOCALPARAMETERSI4IVNV: D(funcname = "glProgramLocalParametersI4ivNV"); if (GL_ISAVAILABLE(glProgramLocalParametersI4ivNV)) nfglProgramLocalParametersI4ivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLPROGRAMLOCALPARAMETERSI4UIVNV: D(funcname = "glProgramLocalParametersI4uivNV"); if (GL_ISAVAILABLE(glProgramLocalParametersI4uivNV)) nfglProgramLocalParametersI4uivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint *) /* const GLuint *params */); break; case NFOSMESA_GLPROGRAMNAMEDPARAMETER4DNV: D(funcname = "glProgramNamedParameter4dNV"); if (GL_ISAVAILABLE(glProgramNamedParameter4dNV)) nfglProgramNamedParameter4dNV( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLsizei len */ getStackedPointer(2, const GLubyte *), /* const GLubyte *name */ getStackedDouble(3), /* GLdouble x */ getStackedDouble(5), /* GLdouble y */ getStackedDouble(7), /* GLdouble z */ getStackedDouble(9) /* GLdouble w */); break; case NFOSMESA_GLPROGRAMNAMEDPARAMETER4DVNV: D(funcname = "glProgramNamedParameter4dvNV"); if (GL_ISAVAILABLE(glProgramNamedParameter4dvNV)) nfglProgramNamedParameter4dvNV( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLsizei len */ getStackedPointer(2, const GLubyte *), /* const GLubyte *name */ getStackedPointer(3, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLPROGRAMNAMEDPARAMETER4FNV: D(funcname = "glProgramNamedParameter4fNV"); if (GL_ISAVAILABLE(glProgramNamedParameter4fNV)) nfglProgramNamedParameter4fNV( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLsizei len */ getStackedPointer(2, const GLubyte *), /* const GLubyte *name */ getStackedFloat(3), /* GLfloat x */ getStackedFloat(4), /* GLfloat y */ getStackedFloat(5), /* GLfloat z */ getStackedFloat(6) /* GLfloat w */); break; case NFOSMESA_GLPROGRAMNAMEDPARAMETER4FVNV: D(funcname = "glProgramNamedParameter4fvNV"); if (GL_ISAVAILABLE(glProgramNamedParameter4fvNV)) nfglProgramNamedParameter4fvNV( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLsizei len */ getStackedPointer(2, const GLubyte *), /* const GLubyte *name */ getStackedPointer(3, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLPROGRAMPARAMETER4DNV: D(funcname = "glProgramParameter4dNV"); if (GL_ISAVAILABLE(glProgramParameter4dNV)) nfglProgramParameter4dNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedDouble(2), /* GLdouble x */ getStackedDouble(4), /* GLdouble y */ getStackedDouble(6), /* GLdouble z */ getStackedDouble(8) /* GLdouble w */); break; case NFOSMESA_GLPROGRAMPARAMETER4DVNV: D(funcname = "glProgramParameter4dvNV"); if (GL_ISAVAILABLE(glProgramParameter4dvNV)) nfglProgramParameter4dvNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLPROGRAMPARAMETER4FNV: D(funcname = "glProgramParameter4fNV"); if (GL_ISAVAILABLE(glProgramParameter4fNV)) nfglProgramParameter4fNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedFloat(2), /* GLfloat x */ getStackedFloat(3), /* GLfloat y */ getStackedFloat(4), /* GLfloat z */ getStackedFloat(5) /* GLfloat w */); break; case NFOSMESA_GLPROGRAMPARAMETER4FVNV: D(funcname = "glProgramParameter4fvNV"); if (GL_ISAVAILABLE(glProgramParameter4fvNV)) nfglProgramParameter4fvNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLPROGRAMPARAMETERI: D(funcname = "glProgramParameteri"); if (GL_ISAVAILABLE(glProgramParameteri)) nfglProgramParameteri( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint value */); break; case NFOSMESA_GLPROGRAMPARAMETERIARB: D(funcname = "glProgramParameteriARB"); if (GL_ISAVAILABLE(glProgramParameteriARB)) nfglProgramParameteriARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint value */); break; case NFOSMESA_GLPROGRAMPARAMETERIEXT: D(funcname = "glProgramParameteriEXT"); if (GL_ISAVAILABLE(glProgramParameteriEXT)) nfglProgramParameteriEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint value */); break; case NFOSMESA_GLPROGRAMPARAMETERS4DVNV: D(funcname = "glProgramParameters4dvNV"); if (GL_ISAVAILABLE(glProgramParameters4dvNV)) nfglProgramParameters4dvNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLPROGRAMPARAMETERS4FVNV: D(funcname = "glProgramParameters4fvNV"); if (GL_ISAVAILABLE(glProgramParameters4fvNV)) nfglProgramParameters4fvNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLPROGRAMPATHFRAGMENTINPUTGENNV: D(funcname = "glProgramPathFragmentInputGenNV"); if (GL_ISAVAILABLE(glProgramPathFragmentInputGenNV)) nfglProgramPathFragmentInputGenNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLenum genMode */ getStackedParameter(3), /* GLint components */ getStackedPointer(4, const GLfloat *) /* const GLfloat *coeffs */); break; case NFOSMESA_GLPROGRAMSTRINGARB: D(funcname = "glProgramStringARB"); if (GL_ISAVAILABLE(glProgramStringARB)) nfglProgramStringARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum format */ getStackedParameter(2), /* GLsizei len */ getStackedPointer(3, const void *) /* const void *string */); break; case NFOSMESA_GLPROGRAMSUBROUTINEPARAMETERSUIVNV: D(funcname = "glProgramSubroutineParametersuivNV"); if (GL_ISAVAILABLE(glProgramSubroutineParametersuivNV)) nfglProgramSubroutineParametersuivNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint *) /* const GLuint *params */); break; case NFOSMESA_GLPROGRAMUNIFORM1D: D(funcname = "glProgramUniform1d"); if (GL_ISAVAILABLE(glProgramUniform1d)) nfglProgramUniform1d( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedDouble(2) /* GLdouble v0 */); break; case NFOSMESA_GLPROGRAMUNIFORM1DEXT: D(funcname = "glProgramUniform1dEXT"); if (GL_ISAVAILABLE(glProgramUniform1dEXT)) nfglProgramUniform1dEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedDouble(2) /* GLdouble x */); break; case NFOSMESA_GLPROGRAMUNIFORM1DV: D(funcname = "glProgramUniform1dv"); if (GL_ISAVAILABLE(glProgramUniform1dv)) nfglProgramUniform1dv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORM1DVEXT: D(funcname = "glProgramUniform1dvEXT"); if (GL_ISAVAILABLE(glProgramUniform1dvEXT)) nfglProgramUniform1dvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORM1F: D(funcname = "glProgramUniform1f"); if (GL_ISAVAILABLE(glProgramUniform1f)) nfglProgramUniform1f( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedFloat(2) /* GLfloat v0 */); break; case NFOSMESA_GLPROGRAMUNIFORM1FEXT: D(funcname = "glProgramUniform1fEXT"); if (GL_ISAVAILABLE(glProgramUniform1fEXT)) nfglProgramUniform1fEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedFloat(2) /* GLfloat v0 */); break; case NFOSMESA_GLPROGRAMUNIFORM1FV: D(funcname = "glProgramUniform1fv"); if (GL_ISAVAILABLE(glProgramUniform1fv)) nfglProgramUniform1fv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORM1FVEXT: D(funcname = "glProgramUniform1fvEXT"); if (GL_ISAVAILABLE(glProgramUniform1fvEXT)) nfglProgramUniform1fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORM1I: D(funcname = "glProgramUniform1i"); if (GL_ISAVAILABLE(glProgramUniform1i)) nfglProgramUniform1i( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2) /* GLint v0 */); break; case NFOSMESA_GLPROGRAMUNIFORM1I64ARB: D(funcname = "glProgramUniform1i64ARB"); if (GL_ISAVAILABLE(glProgramUniform1i64ARB)) nfglProgramUniform1i64ARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2) /* GLint64 x */); break; case NFOSMESA_GLPROGRAMUNIFORM1I64NV: D(funcname = "glProgramUniform1i64NV"); if (GL_ISAVAILABLE(glProgramUniform1i64NV)) nfglProgramUniform1i64NV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2) /* GLint64EXT x */); break; case NFOSMESA_GLPROGRAMUNIFORM1I64VARB: D(funcname = "glProgramUniform1i64vARB"); if (GL_ISAVAILABLE(glProgramUniform1i64vARB)) nfglProgramUniform1i64vARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint64 *) /* const GLint64 *value */); break; case NFOSMESA_GLPROGRAMUNIFORM1I64VNV: D(funcname = "glProgramUniform1i64vNV"); if (GL_ISAVAILABLE(glProgramUniform1i64vNV)) nfglProgramUniform1i64vNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint64EXT *) /* const GLint64EXT *value */); break; case NFOSMESA_GLPROGRAMUNIFORM1IEXT: D(funcname = "glProgramUniform1iEXT"); if (GL_ISAVAILABLE(glProgramUniform1iEXT)) nfglProgramUniform1iEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2) /* GLint v0 */); break; case NFOSMESA_GLPROGRAMUNIFORM1IV: D(funcname = "glProgramUniform1iv"); if (GL_ISAVAILABLE(glProgramUniform1iv)) nfglProgramUniform1iv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM1IVEXT: D(funcname = "glProgramUniform1ivEXT"); if (GL_ISAVAILABLE(glProgramUniform1ivEXT)) nfglProgramUniform1ivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM1UI: D(funcname = "glProgramUniform1ui"); if (GL_ISAVAILABLE(glProgramUniform1ui)) nfglProgramUniform1ui( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2) /* GLuint v0 */); break; case NFOSMESA_GLPROGRAMUNIFORM1UI64ARB: D(funcname = "glProgramUniform1ui64ARB"); if (GL_ISAVAILABLE(glProgramUniform1ui64ARB)) nfglProgramUniform1ui64ARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2) /* GLuint64 x */); break; case NFOSMESA_GLPROGRAMUNIFORM1UI64NV: D(funcname = "glProgramUniform1ui64NV"); if (GL_ISAVAILABLE(glProgramUniform1ui64NV)) nfglProgramUniform1ui64NV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2) /* GLuint64EXT x */); break; case NFOSMESA_GLPROGRAMUNIFORM1UI64VARB: D(funcname = "glProgramUniform1ui64vARB"); if (GL_ISAVAILABLE(glProgramUniform1ui64vARB)) nfglProgramUniform1ui64vARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint64 *) /* const GLuint64 *value */); break; case NFOSMESA_GLPROGRAMUNIFORM1UI64VNV: D(funcname = "glProgramUniform1ui64vNV"); if (GL_ISAVAILABLE(glProgramUniform1ui64vNV)) nfglProgramUniform1ui64vNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint64EXT *) /* const GLuint64EXT *value */); break; case NFOSMESA_GLPROGRAMUNIFORM1UIEXT: D(funcname = "glProgramUniform1uiEXT"); if (GL_ISAVAILABLE(glProgramUniform1uiEXT)) nfglProgramUniform1uiEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2) /* GLuint v0 */); break; case NFOSMESA_GLPROGRAMUNIFORM1UIV: D(funcname = "glProgramUniform1uiv"); if (GL_ISAVAILABLE(glProgramUniform1uiv)) nfglProgramUniform1uiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM1UIVEXT: D(funcname = "glProgramUniform1uivEXT"); if (GL_ISAVAILABLE(glProgramUniform1uivEXT)) nfglProgramUniform1uivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM2D: D(funcname = "glProgramUniform2d"); if (GL_ISAVAILABLE(glProgramUniform2d)) nfglProgramUniform2d( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedDouble(2), /* GLdouble v0 */ getStackedDouble(4) /* GLdouble v1 */); break; case NFOSMESA_GLPROGRAMUNIFORM2DEXT: D(funcname = "glProgramUniform2dEXT"); if (GL_ISAVAILABLE(glProgramUniform2dEXT)) nfglProgramUniform2dEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedDouble(2), /* GLdouble x */ getStackedDouble(4) /* GLdouble y */); break; case NFOSMESA_GLPROGRAMUNIFORM2DV: D(funcname = "glProgramUniform2dv"); if (GL_ISAVAILABLE(glProgramUniform2dv)) nfglProgramUniform2dv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORM2DVEXT: D(funcname = "glProgramUniform2dvEXT"); if (GL_ISAVAILABLE(glProgramUniform2dvEXT)) nfglProgramUniform2dvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORM2F: D(funcname = "glProgramUniform2f"); if (GL_ISAVAILABLE(glProgramUniform2f)) nfglProgramUniform2f( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedFloat(2), /* GLfloat v0 */ getStackedFloat(3) /* GLfloat v1 */); break; case NFOSMESA_GLPROGRAMUNIFORM2FEXT: D(funcname = "glProgramUniform2fEXT"); if (GL_ISAVAILABLE(glProgramUniform2fEXT)) nfglProgramUniform2fEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedFloat(2), /* GLfloat v0 */ getStackedFloat(3) /* GLfloat v1 */); break; case NFOSMESA_GLPROGRAMUNIFORM2FV: D(funcname = "glProgramUniform2fv"); if (GL_ISAVAILABLE(glProgramUniform2fv)) nfglProgramUniform2fv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORM2FVEXT: D(funcname = "glProgramUniform2fvEXT"); if (GL_ISAVAILABLE(glProgramUniform2fvEXT)) nfglProgramUniform2fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORM2I: D(funcname = "glProgramUniform2i"); if (GL_ISAVAILABLE(glProgramUniform2i)) nfglProgramUniform2i( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLint v0 */ getStackedParameter(3) /* GLint v1 */); break; case NFOSMESA_GLPROGRAMUNIFORM2I64ARB: D(funcname = "glProgramUniform2i64ARB"); if (GL_ISAVAILABLE(glProgramUniform2i64ARB)) nfglProgramUniform2i64ARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2), /* GLint64 x */ getStackedParameter64(4) /* GLint64 y */); break; case NFOSMESA_GLPROGRAMUNIFORM2I64NV: D(funcname = "glProgramUniform2i64NV"); if (GL_ISAVAILABLE(glProgramUniform2i64NV)) nfglProgramUniform2i64NV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2), /* GLint64EXT x */ getStackedParameter64(4) /* GLint64EXT y */); break; case NFOSMESA_GLPROGRAMUNIFORM2I64VARB: D(funcname = "glProgramUniform2i64vARB"); if (GL_ISAVAILABLE(glProgramUniform2i64vARB)) nfglProgramUniform2i64vARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint64 *) /* const GLint64 *value */); break; case NFOSMESA_GLPROGRAMUNIFORM2I64VNV: D(funcname = "glProgramUniform2i64vNV"); if (GL_ISAVAILABLE(glProgramUniform2i64vNV)) nfglProgramUniform2i64vNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint64EXT *) /* const GLint64EXT *value */); break; case NFOSMESA_GLPROGRAMUNIFORM2IEXT: D(funcname = "glProgramUniform2iEXT"); if (GL_ISAVAILABLE(glProgramUniform2iEXT)) nfglProgramUniform2iEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLint v0 */ getStackedParameter(3) /* GLint v1 */); break; case NFOSMESA_GLPROGRAMUNIFORM2IV: D(funcname = "glProgramUniform2iv"); if (GL_ISAVAILABLE(glProgramUniform2iv)) nfglProgramUniform2iv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM2IVEXT: D(funcname = "glProgramUniform2ivEXT"); if (GL_ISAVAILABLE(glProgramUniform2ivEXT)) nfglProgramUniform2ivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM2UI: D(funcname = "glProgramUniform2ui"); if (GL_ISAVAILABLE(glProgramUniform2ui)) nfglProgramUniform2ui( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLuint v0 */ getStackedParameter(3) /* GLuint v1 */); break; case NFOSMESA_GLPROGRAMUNIFORM2UI64ARB: D(funcname = "glProgramUniform2ui64ARB"); if (GL_ISAVAILABLE(glProgramUniform2ui64ARB)) nfglProgramUniform2ui64ARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2), /* GLuint64 x */ getStackedParameter64(4) /* GLuint64 y */); break; case NFOSMESA_GLPROGRAMUNIFORM2UI64NV: D(funcname = "glProgramUniform2ui64NV"); if (GL_ISAVAILABLE(glProgramUniform2ui64NV)) nfglProgramUniform2ui64NV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2), /* GLuint64EXT x */ getStackedParameter64(4) /* GLuint64EXT y */); break; case NFOSMESA_GLPROGRAMUNIFORM2UI64VARB: D(funcname = "glProgramUniform2ui64vARB"); if (GL_ISAVAILABLE(glProgramUniform2ui64vARB)) nfglProgramUniform2ui64vARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint64 *) /* const GLuint64 *value */); break; case NFOSMESA_GLPROGRAMUNIFORM2UI64VNV: D(funcname = "glProgramUniform2ui64vNV"); if (GL_ISAVAILABLE(glProgramUniform2ui64vNV)) nfglProgramUniform2ui64vNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint64EXT *) /* const GLuint64EXT *value */); break; case NFOSMESA_GLPROGRAMUNIFORM2UIEXT: D(funcname = "glProgramUniform2uiEXT"); if (GL_ISAVAILABLE(glProgramUniform2uiEXT)) nfglProgramUniform2uiEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLuint v0 */ getStackedParameter(3) /* GLuint v1 */); break; case NFOSMESA_GLPROGRAMUNIFORM2UIV: D(funcname = "glProgramUniform2uiv"); if (GL_ISAVAILABLE(glProgramUniform2uiv)) nfglProgramUniform2uiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM2UIVEXT: D(funcname = "glProgramUniform2uivEXT"); if (GL_ISAVAILABLE(glProgramUniform2uivEXT)) nfglProgramUniform2uivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM3D: D(funcname = "glProgramUniform3d"); if (GL_ISAVAILABLE(glProgramUniform3d)) nfglProgramUniform3d( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedDouble(2), /* GLdouble v0 */ getStackedDouble(4), /* GLdouble v1 */ getStackedDouble(6) /* GLdouble v2 */); break; case NFOSMESA_GLPROGRAMUNIFORM3DEXT: D(funcname = "glProgramUniform3dEXT"); if (GL_ISAVAILABLE(glProgramUniform3dEXT)) nfglProgramUniform3dEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedDouble(2), /* GLdouble x */ getStackedDouble(4), /* GLdouble y */ getStackedDouble(6) /* GLdouble z */); break; case NFOSMESA_GLPROGRAMUNIFORM3DV: D(funcname = "glProgramUniform3dv"); if (GL_ISAVAILABLE(glProgramUniform3dv)) nfglProgramUniform3dv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORM3DVEXT: D(funcname = "glProgramUniform3dvEXT"); if (GL_ISAVAILABLE(glProgramUniform3dvEXT)) nfglProgramUniform3dvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORM3F: D(funcname = "glProgramUniform3f"); if (GL_ISAVAILABLE(glProgramUniform3f)) nfglProgramUniform3f( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedFloat(2), /* GLfloat v0 */ getStackedFloat(3), /* GLfloat v1 */ getStackedFloat(4) /* GLfloat v2 */); break; case NFOSMESA_GLPROGRAMUNIFORM3FEXT: D(funcname = "glProgramUniform3fEXT"); if (GL_ISAVAILABLE(glProgramUniform3fEXT)) nfglProgramUniform3fEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedFloat(2), /* GLfloat v0 */ getStackedFloat(3), /* GLfloat v1 */ getStackedFloat(4) /* GLfloat v2 */); break; case NFOSMESA_GLPROGRAMUNIFORM3FV: D(funcname = "glProgramUniform3fv"); if (GL_ISAVAILABLE(glProgramUniform3fv)) nfglProgramUniform3fv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORM3FVEXT: D(funcname = "glProgramUniform3fvEXT"); if (GL_ISAVAILABLE(glProgramUniform3fvEXT)) nfglProgramUniform3fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORM3I: D(funcname = "glProgramUniform3i"); if (GL_ISAVAILABLE(glProgramUniform3i)) nfglProgramUniform3i( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLint v0 */ getStackedParameter(3), /* GLint v1 */ getStackedParameter(4) /* GLint v2 */); break; case NFOSMESA_GLPROGRAMUNIFORM3I64ARB: D(funcname = "glProgramUniform3i64ARB"); if (GL_ISAVAILABLE(glProgramUniform3i64ARB)) nfglProgramUniform3i64ARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2), /* GLint64 x */ getStackedParameter64(4), /* GLint64 y */ getStackedParameter64(6) /* GLint64 z */); break; case NFOSMESA_GLPROGRAMUNIFORM3I64NV: D(funcname = "glProgramUniform3i64NV"); if (GL_ISAVAILABLE(glProgramUniform3i64NV)) nfglProgramUniform3i64NV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2), /* GLint64EXT x */ getStackedParameter64(4), /* GLint64EXT y */ getStackedParameter64(6) /* GLint64EXT z */); break; case NFOSMESA_GLPROGRAMUNIFORM3I64VARB: D(funcname = "glProgramUniform3i64vARB"); if (GL_ISAVAILABLE(glProgramUniform3i64vARB)) nfglProgramUniform3i64vARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint64 *) /* const GLint64 *value */); break; case NFOSMESA_GLPROGRAMUNIFORM3I64VNV: D(funcname = "glProgramUniform3i64vNV"); if (GL_ISAVAILABLE(glProgramUniform3i64vNV)) nfglProgramUniform3i64vNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint64EXT *) /* const GLint64EXT *value */); break; case NFOSMESA_GLPROGRAMUNIFORM3IEXT: D(funcname = "glProgramUniform3iEXT"); if (GL_ISAVAILABLE(glProgramUniform3iEXT)) nfglProgramUniform3iEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLint v0 */ getStackedParameter(3), /* GLint v1 */ getStackedParameter(4) /* GLint v2 */); break; case NFOSMESA_GLPROGRAMUNIFORM3IV: D(funcname = "glProgramUniform3iv"); if (GL_ISAVAILABLE(glProgramUniform3iv)) nfglProgramUniform3iv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM3IVEXT: D(funcname = "glProgramUniform3ivEXT"); if (GL_ISAVAILABLE(glProgramUniform3ivEXT)) nfglProgramUniform3ivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM3UI: D(funcname = "glProgramUniform3ui"); if (GL_ISAVAILABLE(glProgramUniform3ui)) nfglProgramUniform3ui( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLuint v0 */ getStackedParameter(3), /* GLuint v1 */ getStackedParameter(4) /* GLuint v2 */); break; case NFOSMESA_GLPROGRAMUNIFORM3UI64ARB: D(funcname = "glProgramUniform3ui64ARB"); if (GL_ISAVAILABLE(glProgramUniform3ui64ARB)) nfglProgramUniform3ui64ARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2), /* GLuint64 x */ getStackedParameter64(4), /* GLuint64 y */ getStackedParameter64(6) /* GLuint64 z */); break; case NFOSMESA_GLPROGRAMUNIFORM3UI64NV: D(funcname = "glProgramUniform3ui64NV"); if (GL_ISAVAILABLE(glProgramUniform3ui64NV)) nfglProgramUniform3ui64NV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2), /* GLuint64EXT x */ getStackedParameter64(4), /* GLuint64EXT y */ getStackedParameter64(6) /* GLuint64EXT z */); break; case NFOSMESA_GLPROGRAMUNIFORM3UI64VARB: D(funcname = "glProgramUniform3ui64vARB"); if (GL_ISAVAILABLE(glProgramUniform3ui64vARB)) nfglProgramUniform3ui64vARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint64 *) /* const GLuint64 *value */); break; case NFOSMESA_GLPROGRAMUNIFORM3UI64VNV: D(funcname = "glProgramUniform3ui64vNV"); if (GL_ISAVAILABLE(glProgramUniform3ui64vNV)) nfglProgramUniform3ui64vNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint64EXT *) /* const GLuint64EXT *value */); break; case NFOSMESA_GLPROGRAMUNIFORM3UIEXT: D(funcname = "glProgramUniform3uiEXT"); if (GL_ISAVAILABLE(glProgramUniform3uiEXT)) nfglProgramUniform3uiEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLuint v0 */ getStackedParameter(3), /* GLuint v1 */ getStackedParameter(4) /* GLuint v2 */); break; case NFOSMESA_GLPROGRAMUNIFORM3UIV: D(funcname = "glProgramUniform3uiv"); if (GL_ISAVAILABLE(glProgramUniform3uiv)) nfglProgramUniform3uiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM3UIVEXT: D(funcname = "glProgramUniform3uivEXT"); if (GL_ISAVAILABLE(glProgramUniform3uivEXT)) nfglProgramUniform3uivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM4D: D(funcname = "glProgramUniform4d"); if (GL_ISAVAILABLE(glProgramUniform4d)) nfglProgramUniform4d( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedDouble(2), /* GLdouble v0 */ getStackedDouble(4), /* GLdouble v1 */ getStackedDouble(6), /* GLdouble v2 */ getStackedDouble(8) /* GLdouble v3 */); break; case NFOSMESA_GLPROGRAMUNIFORM4DEXT: D(funcname = "glProgramUniform4dEXT"); if (GL_ISAVAILABLE(glProgramUniform4dEXT)) nfglProgramUniform4dEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedDouble(2), /* GLdouble x */ getStackedDouble(4), /* GLdouble y */ getStackedDouble(6), /* GLdouble z */ getStackedDouble(8) /* GLdouble w */); break; case NFOSMESA_GLPROGRAMUNIFORM4DV: D(funcname = "glProgramUniform4dv"); if (GL_ISAVAILABLE(glProgramUniform4dv)) nfglProgramUniform4dv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORM4DVEXT: D(funcname = "glProgramUniform4dvEXT"); if (GL_ISAVAILABLE(glProgramUniform4dvEXT)) nfglProgramUniform4dvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORM4F: D(funcname = "glProgramUniform4f"); if (GL_ISAVAILABLE(glProgramUniform4f)) nfglProgramUniform4f( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedFloat(2), /* GLfloat v0 */ getStackedFloat(3), /* GLfloat v1 */ getStackedFloat(4), /* GLfloat v2 */ getStackedFloat(5) /* GLfloat v3 */); break; case NFOSMESA_GLPROGRAMUNIFORM4FEXT: D(funcname = "glProgramUniform4fEXT"); if (GL_ISAVAILABLE(glProgramUniform4fEXT)) nfglProgramUniform4fEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedFloat(2), /* GLfloat v0 */ getStackedFloat(3), /* GLfloat v1 */ getStackedFloat(4), /* GLfloat v2 */ getStackedFloat(5) /* GLfloat v3 */); break; case NFOSMESA_GLPROGRAMUNIFORM4FV: D(funcname = "glProgramUniform4fv"); if (GL_ISAVAILABLE(glProgramUniform4fv)) nfglProgramUniform4fv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORM4FVEXT: D(funcname = "glProgramUniform4fvEXT"); if (GL_ISAVAILABLE(glProgramUniform4fvEXT)) nfglProgramUniform4fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORM4I: D(funcname = "glProgramUniform4i"); if (GL_ISAVAILABLE(glProgramUniform4i)) nfglProgramUniform4i( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLint v0 */ getStackedParameter(3), /* GLint v1 */ getStackedParameter(4), /* GLint v2 */ getStackedParameter(5) /* GLint v3 */); break; case NFOSMESA_GLPROGRAMUNIFORM4I64ARB: D(funcname = "glProgramUniform4i64ARB"); if (GL_ISAVAILABLE(glProgramUniform4i64ARB)) nfglProgramUniform4i64ARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2), /* GLint64 x */ getStackedParameter64(4), /* GLint64 y */ getStackedParameter64(6), /* GLint64 z */ getStackedParameter64(8) /* GLint64 w */); break; case NFOSMESA_GLPROGRAMUNIFORM4I64NV: D(funcname = "glProgramUniform4i64NV"); if (GL_ISAVAILABLE(glProgramUniform4i64NV)) nfglProgramUniform4i64NV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2), /* GLint64EXT x */ getStackedParameter64(4), /* GLint64EXT y */ getStackedParameter64(6), /* GLint64EXT z */ getStackedParameter64(8) /* GLint64EXT w */); break; case NFOSMESA_GLPROGRAMUNIFORM4I64VARB: D(funcname = "glProgramUniform4i64vARB"); if (GL_ISAVAILABLE(glProgramUniform4i64vARB)) nfglProgramUniform4i64vARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint64 *) /* const GLint64 *value */); break; case NFOSMESA_GLPROGRAMUNIFORM4I64VNV: D(funcname = "glProgramUniform4i64vNV"); if (GL_ISAVAILABLE(glProgramUniform4i64vNV)) nfglProgramUniform4i64vNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint64EXT *) /* const GLint64EXT *value */); break; case NFOSMESA_GLPROGRAMUNIFORM4IEXT: D(funcname = "glProgramUniform4iEXT"); if (GL_ISAVAILABLE(glProgramUniform4iEXT)) nfglProgramUniform4iEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLint v0 */ getStackedParameter(3), /* GLint v1 */ getStackedParameter(4), /* GLint v2 */ getStackedParameter(5) /* GLint v3 */); break; case NFOSMESA_GLPROGRAMUNIFORM4IV: D(funcname = "glProgramUniform4iv"); if (GL_ISAVAILABLE(glProgramUniform4iv)) nfglProgramUniform4iv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM4IVEXT: D(funcname = "glProgramUniform4ivEXT"); if (GL_ISAVAILABLE(glProgramUniform4ivEXT)) nfglProgramUniform4ivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM4UI: D(funcname = "glProgramUniform4ui"); if (GL_ISAVAILABLE(glProgramUniform4ui)) nfglProgramUniform4ui( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLuint v0 */ getStackedParameter(3), /* GLuint v1 */ getStackedParameter(4), /* GLuint v2 */ getStackedParameter(5) /* GLuint v3 */); break; case NFOSMESA_GLPROGRAMUNIFORM4UI64ARB: D(funcname = "glProgramUniform4ui64ARB"); if (GL_ISAVAILABLE(glProgramUniform4ui64ARB)) nfglProgramUniform4ui64ARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2), /* GLuint64 x */ getStackedParameter64(4), /* GLuint64 y */ getStackedParameter64(6), /* GLuint64 z */ getStackedParameter64(8) /* GLuint64 w */); break; case NFOSMESA_GLPROGRAMUNIFORM4UI64NV: D(funcname = "glProgramUniform4ui64NV"); if (GL_ISAVAILABLE(glProgramUniform4ui64NV)) nfglProgramUniform4ui64NV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2), /* GLuint64EXT x */ getStackedParameter64(4), /* GLuint64EXT y */ getStackedParameter64(6), /* GLuint64EXT z */ getStackedParameter64(8) /* GLuint64EXT w */); break; case NFOSMESA_GLPROGRAMUNIFORM4UI64VARB: D(funcname = "glProgramUniform4ui64vARB"); if (GL_ISAVAILABLE(glProgramUniform4ui64vARB)) nfglProgramUniform4ui64vARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint64 *) /* const GLuint64 *value */); break; case NFOSMESA_GLPROGRAMUNIFORM4UI64VNV: D(funcname = "glProgramUniform4ui64vNV"); if (GL_ISAVAILABLE(glProgramUniform4ui64vNV)) nfglProgramUniform4ui64vNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint64EXT *) /* const GLuint64EXT *value */); break; case NFOSMESA_GLPROGRAMUNIFORM4UIEXT: D(funcname = "glProgramUniform4uiEXT"); if (GL_ISAVAILABLE(glProgramUniform4uiEXT)) nfglProgramUniform4uiEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLuint v0 */ getStackedParameter(3), /* GLuint v1 */ getStackedParameter(4), /* GLuint v2 */ getStackedParameter(5) /* GLuint v3 */); break; case NFOSMESA_GLPROGRAMUNIFORM4UIV: D(funcname = "glProgramUniform4uiv"); if (GL_ISAVAILABLE(glProgramUniform4uiv)) nfglProgramUniform4uiv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLPROGRAMUNIFORM4UIVEXT: D(funcname = "glProgramUniform4uivEXT"); if (GL_ISAVAILABLE(glProgramUniform4uivEXT)) nfglProgramUniform4uivEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64ARB: D(funcname = "glProgramUniformHandleui64ARB"); if (GL_ISAVAILABLE(glProgramUniformHandleui64ARB)) nfglProgramUniformHandleui64ARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2) /* GLuint64 value */); break; case NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64NV: D(funcname = "glProgramUniformHandleui64NV"); if (GL_ISAVAILABLE(glProgramUniformHandleui64NV)) nfglProgramUniformHandleui64NV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2) /* GLuint64 value */); break; case NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64VARB: D(funcname = "glProgramUniformHandleui64vARB"); if (GL_ISAVAILABLE(glProgramUniformHandleui64vARB)) nfglProgramUniformHandleui64vARB( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint64 *) /* const GLuint64 *values */); break; case NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64VNV: D(funcname = "glProgramUniformHandleui64vNV"); if (GL_ISAVAILABLE(glProgramUniformHandleui64vNV)) nfglProgramUniformHandleui64vNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint64 *) /* const GLuint64 *values */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX2DV: D(funcname = "glProgramUniformMatrix2dv"); if (GL_ISAVAILABLE(glProgramUniformMatrix2dv)) nfglProgramUniformMatrix2dv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX2DVEXT: D(funcname = "glProgramUniformMatrix2dvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix2dvEXT)) nfglProgramUniformMatrix2dvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX2FV: D(funcname = "glProgramUniformMatrix2fv"); if (GL_ISAVAILABLE(glProgramUniformMatrix2fv)) nfglProgramUniformMatrix2fv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX2FVEXT: D(funcname = "glProgramUniformMatrix2fvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix2fvEXT)) nfglProgramUniformMatrix2fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3DV: D(funcname = "glProgramUniformMatrix2x3dv"); if (GL_ISAVAILABLE(glProgramUniformMatrix2x3dv)) nfglProgramUniformMatrix2x3dv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3DVEXT: D(funcname = "glProgramUniformMatrix2x3dvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix2x3dvEXT)) nfglProgramUniformMatrix2x3dvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3FV: D(funcname = "glProgramUniformMatrix2x3fv"); if (GL_ISAVAILABLE(glProgramUniformMatrix2x3fv)) nfglProgramUniformMatrix2x3fv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3FVEXT: D(funcname = "glProgramUniformMatrix2x3fvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix2x3fvEXT)) nfglProgramUniformMatrix2x3fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4DV: D(funcname = "glProgramUniformMatrix2x4dv"); if (GL_ISAVAILABLE(glProgramUniformMatrix2x4dv)) nfglProgramUniformMatrix2x4dv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4DVEXT: D(funcname = "glProgramUniformMatrix2x4dvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix2x4dvEXT)) nfglProgramUniformMatrix2x4dvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4FV: D(funcname = "glProgramUniformMatrix2x4fv"); if (GL_ISAVAILABLE(glProgramUniformMatrix2x4fv)) nfglProgramUniformMatrix2x4fv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4FVEXT: D(funcname = "glProgramUniformMatrix2x4fvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix2x4fvEXT)) nfglProgramUniformMatrix2x4fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX3DV: D(funcname = "glProgramUniformMatrix3dv"); if (GL_ISAVAILABLE(glProgramUniformMatrix3dv)) nfglProgramUniformMatrix3dv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX3DVEXT: D(funcname = "glProgramUniformMatrix3dvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix3dvEXT)) nfglProgramUniformMatrix3dvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX3FV: D(funcname = "glProgramUniformMatrix3fv"); if (GL_ISAVAILABLE(glProgramUniformMatrix3fv)) nfglProgramUniformMatrix3fv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX3FVEXT: D(funcname = "glProgramUniformMatrix3fvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix3fvEXT)) nfglProgramUniformMatrix3fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2DV: D(funcname = "glProgramUniformMatrix3x2dv"); if (GL_ISAVAILABLE(glProgramUniformMatrix3x2dv)) nfglProgramUniformMatrix3x2dv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2DVEXT: D(funcname = "glProgramUniformMatrix3x2dvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix3x2dvEXT)) nfglProgramUniformMatrix3x2dvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2FV: D(funcname = "glProgramUniformMatrix3x2fv"); if (GL_ISAVAILABLE(glProgramUniformMatrix3x2fv)) nfglProgramUniformMatrix3x2fv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2FVEXT: D(funcname = "glProgramUniformMatrix3x2fvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix3x2fvEXT)) nfglProgramUniformMatrix3x2fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4DV: D(funcname = "glProgramUniformMatrix3x4dv"); if (GL_ISAVAILABLE(glProgramUniformMatrix3x4dv)) nfglProgramUniformMatrix3x4dv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4DVEXT: D(funcname = "glProgramUniformMatrix3x4dvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix3x4dvEXT)) nfglProgramUniformMatrix3x4dvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4FV: D(funcname = "glProgramUniformMatrix3x4fv"); if (GL_ISAVAILABLE(glProgramUniformMatrix3x4fv)) nfglProgramUniformMatrix3x4fv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4FVEXT: D(funcname = "glProgramUniformMatrix3x4fvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix3x4fvEXT)) nfglProgramUniformMatrix3x4fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX4DV: D(funcname = "glProgramUniformMatrix4dv"); if (GL_ISAVAILABLE(glProgramUniformMatrix4dv)) nfglProgramUniformMatrix4dv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX4DVEXT: D(funcname = "glProgramUniformMatrix4dvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix4dvEXT)) nfglProgramUniformMatrix4dvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX4FV: D(funcname = "glProgramUniformMatrix4fv"); if (GL_ISAVAILABLE(glProgramUniformMatrix4fv)) nfglProgramUniformMatrix4fv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX4FVEXT: D(funcname = "glProgramUniformMatrix4fvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix4fvEXT)) nfglProgramUniformMatrix4fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2DV: D(funcname = "glProgramUniformMatrix4x2dv"); if (GL_ISAVAILABLE(glProgramUniformMatrix4x2dv)) nfglProgramUniformMatrix4x2dv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2DVEXT: D(funcname = "glProgramUniformMatrix4x2dvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix4x2dvEXT)) nfglProgramUniformMatrix4x2dvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2FV: D(funcname = "glProgramUniformMatrix4x2fv"); if (GL_ISAVAILABLE(glProgramUniformMatrix4x2fv)) nfglProgramUniformMatrix4x2fv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2FVEXT: D(funcname = "glProgramUniformMatrix4x2fvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix4x2fvEXT)) nfglProgramUniformMatrix4x2fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3DV: D(funcname = "glProgramUniformMatrix4x3dv"); if (GL_ISAVAILABLE(glProgramUniformMatrix4x3dv)) nfglProgramUniformMatrix4x3dv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3DVEXT: D(funcname = "glProgramUniformMatrix4x3dvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix4x3dvEXT)) nfglProgramUniformMatrix4x3dvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3FV: D(funcname = "glProgramUniformMatrix4x3fv"); if (GL_ISAVAILABLE(glProgramUniformMatrix4x3fv)) nfglProgramUniformMatrix4x3fv( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3FVEXT: D(funcname = "glProgramUniformMatrix4x3fvEXT"); if (GL_ISAVAILABLE(glProgramUniformMatrix4x3fvEXT)) nfglProgramUniformMatrix4x3fvEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedParameter(3), /* GLboolean32 transpose */ getStackedPointer(4, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLPROGRAMUNIFORMUI64NV: D(funcname = "glProgramUniformui64NV"); if (GL_ISAVAILABLE(glProgramUniformui64NV)) nfglProgramUniformui64NV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter64(2) /* GLuint64EXT value */); break; case NFOSMESA_GLPROGRAMUNIFORMUI64VNV: D(funcname = "glProgramUniformui64vNV"); if (GL_ISAVAILABLE(glProgramUniformui64vNV)) nfglProgramUniformui64vNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint64EXT *) /* const GLuint64EXT *value */); break; case NFOSMESA_GLPROGRAMVERTEXLIMITNV: D(funcname = "glProgramVertexLimitNV"); if (GL_ISAVAILABLE(glProgramVertexLimitNV)) nfglProgramVertexLimitNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLint limit */); break; case NFOSMESA_GLPROVOKINGVERTEX: D(funcname = "glProvokingVertex"); if (GL_ISAVAILABLE(glProvokingVertex)) nfglProvokingVertex( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLPROVOKINGVERTEXEXT: D(funcname = "glProvokingVertexEXT"); if (GL_ISAVAILABLE(glProvokingVertexEXT)) nfglProvokingVertexEXT( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLPUSHATTRIB: D(funcname = "glPushAttrib"); if (GL_ISAVAILABLE(glPushAttrib)) nfglPushAttrib( getStackedParameter(0) /* GLbitfield mask */); break; case NFOSMESA_GLPUSHCLIENTATTRIB: D(funcname = "glPushClientAttrib"); if (GL_ISAVAILABLE(glPushClientAttrib)) nfglPushClientAttrib( getStackedParameter(0) /* GLbitfield mask */); break; case NFOSMESA_GLPUSHCLIENTATTRIBDEFAULTEXT: D(funcname = "glPushClientAttribDefaultEXT"); if (GL_ISAVAILABLE(glPushClientAttribDefaultEXT)) nfglPushClientAttribDefaultEXT( getStackedParameter(0) /* GLbitfield mask */); break; case NFOSMESA_GLPUSHDEBUGGROUP: D(funcname = "glPushDebugGroup"); if (GL_ISAVAILABLE(glPushDebugGroup)) nfglPushDebugGroup( getStackedParameter(0), /* GLenum source */ getStackedParameter(1), /* GLuint id */ getStackedParameter(2), /* GLsizei length */ getStackedPointer(3, const GLchar *) /* const GLchar *message */); break; case NFOSMESA_GLPUSHGROUPMARKEREXT: D(funcname = "glPushGroupMarkerEXT"); if (GL_ISAVAILABLE(glPushGroupMarkerEXT)) nfglPushGroupMarkerEXT( getStackedParameter(0), /* GLsizei length */ getStackedPointer(1, const GLchar *) /* const GLchar *marker */); break; case NFOSMESA_GLPUSHMATRIX: D(funcname = "glPushMatrix"); if (GL_ISAVAILABLE(glPushMatrix)) nfglPushMatrix(); break; case NFOSMESA_GLPUSHNAME: D(funcname = "glPushName"); if (GL_ISAVAILABLE(glPushName)) nfglPushName( getStackedParameter(0) /* GLuint name */); break; case NFOSMESA_GLQUERYCOUNTER: D(funcname = "glQueryCounter"); if (GL_ISAVAILABLE(glQueryCounter)) nfglQueryCounter( getStackedParameter(0), /* GLuint id */ getStackedParameter(1) /* GLenum target */); break; case NFOSMESA_GLQUERYMATRIXXOES: D(funcname = "glQueryMatrixxOES"); if (GL_ISAVAILABLE(glQueryMatrixxOES)) ret = nfglQueryMatrixxOES( getStackedPointer(0, GLfixed *), /* GLfixed *mantissa */ getStackedPointer(1, GLint *) /* GLint *exponent */); break; case NFOSMESA_GLQUERYOBJECTPARAMETERUIAMD: D(funcname = "glQueryObjectParameteruiAMD"); if (GL_ISAVAILABLE(glQueryObjectParameteruiAMD)) nfglQueryObjectParameteruiAMD( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint id */ getStackedParameter(2), /* GLenum pname */ getStackedParameter(3) /* GLuint param */); break; case NFOSMESA_GLQUERYRESOURCENV: D(funcname = "glQueryResourceNV"); if (GL_ISAVAILABLE(glQueryResourceNV)) ret = nfglQueryResourceNV( getStackedParameter(0), /* GLenum queryType */ getStackedParameter(1), /* GLint tagId */ getStackedParameter(2), /* GLuint bufSize */ getStackedPointer(3, GLint *) /* GLint *buffer */); break; case NFOSMESA_GLQUERYRESOURCETAGNV: D(funcname = "glQueryResourceTagNV"); if (GL_ISAVAILABLE(glQueryResourceTagNV)) nfglQueryResourceTagNV( getStackedParameter(0), /* GLint tagId */ getStackedPointer(1, const GLchar *) /* const GLchar *tagString */); break; case NFOSMESA_GLRASTERPOS2D: D(funcname = "glRasterPos2d"); if (GL_ISAVAILABLE(glRasterPos2d)) nfglRasterPos2d( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2) /* GLdouble y */); break; case NFOSMESA_GLRASTERPOS2DV: D(funcname = "glRasterPos2dv"); if (GL_ISAVAILABLE(glRasterPos2dv)) nfglRasterPos2dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLRASTERPOS2F: D(funcname = "glRasterPos2f"); if (GL_ISAVAILABLE(glRasterPos2f)) nfglRasterPos2f( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1) /* GLfloat y */); break; case NFOSMESA_GLRASTERPOS2FV: D(funcname = "glRasterPos2fv"); if (GL_ISAVAILABLE(glRasterPos2fv)) nfglRasterPos2fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLRASTERPOS2I: D(funcname = "glRasterPos2i"); if (GL_ISAVAILABLE(glRasterPos2i)) nfglRasterPos2i( getStackedParameter(0), /* GLint x */ getStackedParameter(1) /* GLint y */); break; case NFOSMESA_GLRASTERPOS2IV: D(funcname = "glRasterPos2iv"); if (GL_ISAVAILABLE(glRasterPos2iv)) nfglRasterPos2iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLRASTERPOS2S: D(funcname = "glRasterPos2s"); if (GL_ISAVAILABLE(glRasterPos2s)) nfglRasterPos2s( getStackedParameter(0), /* GLshort32 x */ getStackedParameter(1) /* GLshort32 y */); break; case NFOSMESA_GLRASTERPOS2SV: D(funcname = "glRasterPos2sv"); if (GL_ISAVAILABLE(glRasterPos2sv)) nfglRasterPos2sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLRASTERPOS2XOES: D(funcname = "glRasterPos2xOES"); if (GL_ISAVAILABLE(glRasterPos2xOES)) nfglRasterPos2xOES( getStackedParameter(0), /* GLfixed x */ getStackedParameter(1) /* GLfixed y */); break; case NFOSMESA_GLRASTERPOS2XVOES: D(funcname = "glRasterPos2xvOES"); if (GL_ISAVAILABLE(glRasterPos2xvOES)) nfglRasterPos2xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLRASTERPOS3D: D(funcname = "glRasterPos3d"); if (GL_ISAVAILABLE(glRasterPos3d)) nfglRasterPos3d( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2), /* GLdouble y */ getStackedDouble(4) /* GLdouble z */); break; case NFOSMESA_GLRASTERPOS3DV: D(funcname = "glRasterPos3dv"); if (GL_ISAVAILABLE(glRasterPos3dv)) nfglRasterPos3dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLRASTERPOS3F: D(funcname = "glRasterPos3f"); if (GL_ISAVAILABLE(glRasterPos3f)) nfglRasterPos3f( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1), /* GLfloat y */ getStackedFloat(2) /* GLfloat z */); break; case NFOSMESA_GLRASTERPOS3FV: D(funcname = "glRasterPos3fv"); if (GL_ISAVAILABLE(glRasterPos3fv)) nfglRasterPos3fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLRASTERPOS3I: D(funcname = "glRasterPos3i"); if (GL_ISAVAILABLE(glRasterPos3i)) nfglRasterPos3i( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2) /* GLint z */); break; case NFOSMESA_GLRASTERPOS3IV: D(funcname = "glRasterPos3iv"); if (GL_ISAVAILABLE(glRasterPos3iv)) nfglRasterPos3iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLRASTERPOS3S: D(funcname = "glRasterPos3s"); if (GL_ISAVAILABLE(glRasterPos3s)) nfglRasterPos3s( getStackedParameter(0), /* GLshort32 x */ getStackedParameter(1), /* GLshort32 y */ getStackedParameter(2) /* GLshort32 z */); break; case NFOSMESA_GLRASTERPOS3SV: D(funcname = "glRasterPos3sv"); if (GL_ISAVAILABLE(glRasterPos3sv)) nfglRasterPos3sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLRASTERPOS3XOES: D(funcname = "glRasterPos3xOES"); if (GL_ISAVAILABLE(glRasterPos3xOES)) nfglRasterPos3xOES( getStackedParameter(0), /* GLfixed x */ getStackedParameter(1), /* GLfixed y */ getStackedParameter(2) /* GLfixed z */); break; case NFOSMESA_GLRASTERPOS3XVOES: D(funcname = "glRasterPos3xvOES"); if (GL_ISAVAILABLE(glRasterPos3xvOES)) nfglRasterPos3xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLRASTERPOS4D: D(funcname = "glRasterPos4d"); if (GL_ISAVAILABLE(glRasterPos4d)) nfglRasterPos4d( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2), /* GLdouble y */ getStackedDouble(4), /* GLdouble z */ getStackedDouble(6) /* GLdouble w */); break; case NFOSMESA_GLRASTERPOS4DV: D(funcname = "glRasterPos4dv"); if (GL_ISAVAILABLE(glRasterPos4dv)) nfglRasterPos4dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLRASTERPOS4F: D(funcname = "glRasterPos4f"); if (GL_ISAVAILABLE(glRasterPos4f)) nfglRasterPos4f( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1), /* GLfloat y */ getStackedFloat(2), /* GLfloat z */ getStackedFloat(3) /* GLfloat w */); break; case NFOSMESA_GLRASTERPOS4FV: D(funcname = "glRasterPos4fv"); if (GL_ISAVAILABLE(glRasterPos4fv)) nfglRasterPos4fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLRASTERPOS4I: D(funcname = "glRasterPos4i"); if (GL_ISAVAILABLE(glRasterPos4i)) nfglRasterPos4i( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2), /* GLint z */ getStackedParameter(3) /* GLint w */); break; case NFOSMESA_GLRASTERPOS4IV: D(funcname = "glRasterPos4iv"); if (GL_ISAVAILABLE(glRasterPos4iv)) nfglRasterPos4iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLRASTERPOS4S: D(funcname = "glRasterPos4s"); if (GL_ISAVAILABLE(glRasterPos4s)) nfglRasterPos4s( getStackedParameter(0), /* GLshort32 x */ getStackedParameter(1), /* GLshort32 y */ getStackedParameter(2), /* GLshort32 z */ getStackedParameter(3) /* GLshort32 w */); break; case NFOSMESA_GLRASTERPOS4SV: D(funcname = "glRasterPos4sv"); if (GL_ISAVAILABLE(glRasterPos4sv)) nfglRasterPos4sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLRASTERPOS4XOES: D(funcname = "glRasterPos4xOES"); if (GL_ISAVAILABLE(glRasterPos4xOES)) nfglRasterPos4xOES( getStackedParameter(0), /* GLfixed x */ getStackedParameter(1), /* GLfixed y */ getStackedParameter(2), /* GLfixed z */ getStackedParameter(3) /* GLfixed w */); break; case NFOSMESA_GLRASTERPOS4XVOES: D(funcname = "glRasterPos4xvOES"); if (GL_ISAVAILABLE(glRasterPos4xvOES)) nfglRasterPos4xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLRASTERSAMPLESEXT: D(funcname = "glRasterSamplesEXT"); if (GL_ISAVAILABLE(glRasterSamplesEXT)) nfglRasterSamplesEXT( getStackedParameter(0), /* GLuint samples */ getStackedParameter(1) /* GLboolean32 fixedsamplelocations */); break; case NFOSMESA_GLREADBUFFER: D(funcname = "glReadBuffer"); if (GL_ISAVAILABLE(glReadBuffer)) nfglReadBuffer( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLREADINSTRUMENTSSGIX: D(funcname = "glReadInstrumentsSGIX"); if (GL_ISAVAILABLE(glReadInstrumentsSGIX)) nfglReadInstrumentsSGIX( getStackedParameter(0) /* GLint marker */); break; case NFOSMESA_GLREADPIXELS: D(funcname = "glReadPixels"); if (GL_ISAVAILABLE(glReadPixels)) nfglReadPixels( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3), /* GLsizei height */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLenum type */ getStackedPointer(6, GLvoid *) /* GLvoid *pixels */); break; case NFOSMESA_GLREADNPIXELS: D(funcname = "glReadnPixels"); if (GL_ISAVAILABLE(glReadnPixels)) nfglReadnPixels( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3), /* GLsizei height */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLenum type */ getStackedParameter(6), /* GLsizei bufSize */ getStackedPointer(7, void *) /* void *data */); break; case NFOSMESA_GLREADNPIXELSARB: D(funcname = "glReadnPixelsARB"); if (GL_ISAVAILABLE(glReadnPixelsARB)) nfglReadnPixelsARB( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3), /* GLsizei height */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLenum type */ getStackedParameter(6), /* GLsizei bufSize */ getStackedPointer(7, void *) /* void *data */); break; case NFOSMESA_GLRECTD: D(funcname = "glRectd"); if (GL_ISAVAILABLE(glRectd)) nfglRectd( getStackedDouble(0), /* GLdouble x1 */ getStackedDouble(2), /* GLdouble y1 */ getStackedDouble(4), /* GLdouble x2 */ getStackedDouble(6) /* GLdouble y2 */); break; case NFOSMESA_GLRECTDV: D(funcname = "glRectdv"); if (GL_ISAVAILABLE(glRectdv)) nfglRectdv( getStackedPointer(0, const GLdouble *), /* const GLdouble *v1 */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v2 */); break; case NFOSMESA_GLRECTF: D(funcname = "glRectf"); if (GL_ISAVAILABLE(glRectf)) nfglRectf( getStackedFloat(0), /* GLfloat x1 */ getStackedFloat(1), /* GLfloat y1 */ getStackedFloat(2), /* GLfloat x2 */ getStackedFloat(3) /* GLfloat y2 */); break; case NFOSMESA_GLRECTFV: D(funcname = "glRectfv"); if (GL_ISAVAILABLE(glRectfv)) nfglRectfv( getStackedPointer(0, const GLfloat *), /* const GLfloat *v1 */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v2 */); break; case NFOSMESA_GLRECTI: D(funcname = "glRecti"); if (GL_ISAVAILABLE(glRecti)) nfglRecti( getStackedParameter(0), /* GLint x1 */ getStackedParameter(1), /* GLint y1 */ getStackedParameter(2), /* GLint x2 */ getStackedParameter(3) /* GLint y2 */); break; case NFOSMESA_GLRECTIV: D(funcname = "glRectiv"); if (GL_ISAVAILABLE(glRectiv)) nfglRectiv( getStackedPointer(0, const GLint *), /* const GLint *v1 */ getStackedPointer(1, const GLint *) /* const GLint *v2 */); break; case NFOSMESA_GLRECTS: D(funcname = "glRects"); if (GL_ISAVAILABLE(glRects)) nfglRects( getStackedParameter(0), /* GLshort32 x1 */ getStackedParameter(1), /* GLshort32 y1 */ getStackedParameter(2), /* GLshort32 x2 */ getStackedParameter(3) /* GLshort32 y2 */); break; case NFOSMESA_GLRECTSV: D(funcname = "glRectsv"); if (GL_ISAVAILABLE(glRectsv)) nfglRectsv( getStackedPointer(0, const GLshort *), /* const GLshort *v1 */ getStackedPointer(1, const GLshort *) /* const GLshort *v2 */); break; case NFOSMESA_GLRECTXOES: D(funcname = "glRectxOES"); if (GL_ISAVAILABLE(glRectxOES)) nfglRectxOES( getStackedParameter(0), /* GLfixed x1 */ getStackedParameter(1), /* GLfixed y1 */ getStackedParameter(2), /* GLfixed x2 */ getStackedParameter(3) /* GLfixed y2 */); break; case NFOSMESA_GLRECTXVOES: D(funcname = "glRectxvOES"); if (GL_ISAVAILABLE(glRectxvOES)) nfglRectxvOES( getStackedPointer(0, const GLfixed *), /* const GLfixed *v1 */ getStackedPointer(1, const GLfixed *) /* const GLfixed *v2 */); break; case NFOSMESA_GLREFERENCEPLANESGIX: D(funcname = "glReferencePlaneSGIX"); if (GL_ISAVAILABLE(glReferencePlaneSGIX)) nfglReferencePlaneSGIX( getStackedPointer(0, const GLdouble *) /* const GLdouble *equation */); break; case NFOSMESA_GLRELEASEKEYEDMUTEXWIN32EXT: D(funcname = "glReleaseKeyedMutexWin32EXT"); if (GL_ISAVAILABLE(glReleaseKeyedMutexWin32EXT)) ret = nfglReleaseKeyedMutexWin32EXT( getStackedParameter(0), /* GLuint memory */ getStackedParameter64(1) /* GLuint64 key */); break; case NFOSMESA_GLRELEASESHADERCOMPILER: D(funcname = "glReleaseShaderCompiler"); if (GL_ISAVAILABLE(glReleaseShaderCompiler)) nfglReleaseShaderCompiler(); break; case NFOSMESA_GLRENDERGPUMASKNV: D(funcname = "glRenderGpuMaskNV"); if (GL_ISAVAILABLE(glRenderGpuMaskNV)) nfglRenderGpuMaskNV( getStackedParameter(0) /* GLbitfield mask */); break; case NFOSMESA_GLRENDERMODE: D(funcname = "glRenderMode"); if (GL_ISAVAILABLE(glRenderMode)) ret = nfglRenderMode( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLRENDERBUFFERSTORAGE: D(funcname = "glRenderbufferStorage"); if (GL_ISAVAILABLE(glRenderbufferStorage)) nfglRenderbufferStorage( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3) /* GLsizei height */); break; case NFOSMESA_GLRENDERBUFFERSTORAGEEXT: D(funcname = "glRenderbufferStorageEXT"); if (GL_ISAVAILABLE(glRenderbufferStorageEXT)) nfglRenderbufferStorageEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3) /* GLsizei height */); break; case NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLE: D(funcname = "glRenderbufferStorageMultisample"); if (GL_ISAVAILABLE(glRenderbufferStorageMultisample)) nfglRenderbufferStorageMultisample( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei samples */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4) /* GLsizei height */); break; case NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENV: D(funcname = "glRenderbufferStorageMultisampleCoverageNV"); if (GL_ISAVAILABLE(glRenderbufferStorageMultisampleCoverageNV)) nfglRenderbufferStorageMultisampleCoverageNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei coverageSamples */ getStackedParameter(2), /* GLsizei colorSamples */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5) /* GLsizei height */); break; case NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLEEXT: D(funcname = "glRenderbufferStorageMultisampleEXT"); if (GL_ISAVAILABLE(glRenderbufferStorageMultisampleEXT)) nfglRenderbufferStorageMultisampleEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei samples */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4) /* GLsizei height */); break; case NFOSMESA_GLREPLACEMENTCODEPOINTERSUN: D(funcname = "glReplacementCodePointerSUN"); if (GL_ISAVAILABLE(glReplacementCodePointerSUN)) nfglReplacementCodePointerSUN( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLsizei stride */ getStackedPointer(2, const void * *) /* const void * *pointer */); break; case NFOSMESA_GLREPLACEMENTCODEUBSUN: D(funcname = "glReplacementCodeubSUN"); if (GL_ISAVAILABLE(glReplacementCodeubSUN)) nfglReplacementCodeubSUN( getStackedParameter(0) /* GLubyte32 code */); break; case NFOSMESA_GLREPLACEMENTCODEUBVSUN: D(funcname = "glReplacementCodeubvSUN"); if (GL_ISAVAILABLE(glReplacementCodeubvSUN)) nfglReplacementCodeubvSUN( getStackedPointer(0, const GLubyte *) /* const GLubyte *code */); break; case NFOSMESA_GLREPLACEMENTCODEUICOLOR3FVERTEX3FSUN: D(funcname = "glReplacementCodeuiColor3fVertex3fSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiColor3fVertex3fSUN)) nfglReplacementCodeuiColor3fVertex3fSUN( getStackedParameter(0), /* GLuint rc */ getStackedFloat(1), /* GLfloat r */ getStackedFloat(2), /* GLfloat g */ getStackedFloat(3), /* GLfloat b */ getStackedFloat(4), /* GLfloat x */ getStackedFloat(5), /* GLfloat y */ getStackedFloat(6) /* GLfloat z */); break; case NFOSMESA_GLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUN: D(funcname = "glReplacementCodeuiColor3fVertex3fvSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiColor3fVertex3fvSUN)) nfglReplacementCodeuiColor3fVertex3fvSUN( getStackedPointer(0, const GLuint *), /* const GLuint *rc */ getStackedPointer(1, const GLfloat *), /* const GLfloat *c */ getStackedPointer(2, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUN: D(funcname = "glReplacementCodeuiColor4fNormal3fVertex3fSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiColor4fNormal3fVertex3fSUN)) nfglReplacementCodeuiColor4fNormal3fVertex3fSUN( getStackedParameter(0), /* GLuint rc */ getStackedFloat(1), /* GLfloat r */ getStackedFloat(2), /* GLfloat g */ getStackedFloat(3), /* GLfloat b */ getStackedFloat(4), /* GLfloat a */ getStackedFloat(5), /* GLfloat nx */ getStackedFloat(6), /* GLfloat ny */ getStackedFloat(7), /* GLfloat nz */ getStackedFloat(8), /* GLfloat x */ getStackedFloat(9), /* GLfloat y */ getStackedFloat(10) /* GLfloat z */); break; case NFOSMESA_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUN: D(funcname = "glReplacementCodeuiColor4fNormal3fVertex3fvSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiColor4fNormal3fVertex3fvSUN)) nfglReplacementCodeuiColor4fNormal3fVertex3fvSUN( getStackedPointer(0, const GLuint *), /* const GLuint *rc */ getStackedPointer(1, const GLfloat *), /* const GLfloat *c */ getStackedPointer(2, const GLfloat *), /* const GLfloat *n */ getStackedPointer(3, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUN: D(funcname = "glReplacementCodeuiColor4ubVertex3fSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiColor4ubVertex3fSUN)) nfglReplacementCodeuiColor4ubVertex3fSUN( getStackedParameter(0), /* GLuint rc */ getStackedParameter(1), /* GLubyte32 r */ getStackedParameter(2), /* GLubyte32 g */ getStackedParameter(3), /* GLubyte32 b */ getStackedParameter(4), /* GLubyte32 a */ getStackedFloat(5), /* GLfloat x */ getStackedFloat(6), /* GLfloat y */ getStackedFloat(7) /* GLfloat z */); break; case NFOSMESA_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUN: D(funcname = "glReplacementCodeuiColor4ubVertex3fvSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiColor4ubVertex3fvSUN)) nfglReplacementCodeuiColor4ubVertex3fvSUN( getStackedPointer(0, const GLuint *), /* const GLuint *rc */ getStackedPointer(1, const GLubyte *), /* const GLubyte *c */ getStackedPointer(2, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLREPLACEMENTCODEUINORMAL3FVERTEX3FSUN: D(funcname = "glReplacementCodeuiNormal3fVertex3fSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiNormal3fVertex3fSUN)) nfglReplacementCodeuiNormal3fVertex3fSUN( getStackedParameter(0), /* GLuint rc */ getStackedFloat(1), /* GLfloat nx */ getStackedFloat(2), /* GLfloat ny */ getStackedFloat(3), /* GLfloat nz */ getStackedFloat(4), /* GLfloat x */ getStackedFloat(5), /* GLfloat y */ getStackedFloat(6) /* GLfloat z */); break; case NFOSMESA_GLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUN: D(funcname = "glReplacementCodeuiNormal3fVertex3fvSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiNormal3fVertex3fvSUN)) nfglReplacementCodeuiNormal3fVertex3fvSUN( getStackedPointer(0, const GLuint *), /* const GLuint *rc */ getStackedPointer(1, const GLfloat *), /* const GLfloat *n */ getStackedPointer(2, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLREPLACEMENTCODEUISUN: D(funcname = "glReplacementCodeuiSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiSUN)) nfglReplacementCodeuiSUN( getStackedParameter(0) /* GLuint code */); break; case NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN: D(funcname = "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN)) nfglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN( getStackedParameter(0), /* GLuint rc */ getStackedFloat(1), /* GLfloat s */ getStackedFloat(2), /* GLfloat t */ getStackedFloat(3), /* GLfloat r */ getStackedFloat(4), /* GLfloat g */ getStackedFloat(5), /* GLfloat b */ getStackedFloat(6), /* GLfloat a */ getStackedFloat(7), /* GLfloat nx */ getStackedFloat(8), /* GLfloat ny */ getStackedFloat(9), /* GLfloat nz */ getStackedFloat(10), /* GLfloat x */ getStackedFloat(11), /* GLfloat y */ getStackedFloat(12) /* GLfloat z */); break; case NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN: D(funcname = "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN)) nfglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN( getStackedPointer(0, const GLuint *), /* const GLuint *rc */ getStackedPointer(1, const GLfloat *), /* const GLfloat *tc */ getStackedPointer(2, const GLfloat *), /* const GLfloat *c */ getStackedPointer(3, const GLfloat *), /* const GLfloat *n */ getStackedPointer(4, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUN: D(funcname = "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN)) nfglReplacementCodeuiTexCoord2fNormal3fVertex3fSUN( getStackedParameter(0), /* GLuint rc */ getStackedFloat(1), /* GLfloat s */ getStackedFloat(2), /* GLfloat t */ getStackedFloat(3), /* GLfloat nx */ getStackedFloat(4), /* GLfloat ny */ getStackedFloat(5), /* GLfloat nz */ getStackedFloat(6), /* GLfloat x */ getStackedFloat(7), /* GLfloat y */ getStackedFloat(8) /* GLfloat z */); break; case NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUN: D(funcname = "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN)) nfglReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN( getStackedPointer(0, const GLuint *), /* const GLuint *rc */ getStackedPointer(1, const GLfloat *), /* const GLfloat *tc */ getStackedPointer(2, const GLfloat *), /* const GLfloat *n */ getStackedPointer(3, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUN: D(funcname = "glReplacementCodeuiTexCoord2fVertex3fSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiTexCoord2fVertex3fSUN)) nfglReplacementCodeuiTexCoord2fVertex3fSUN( getStackedParameter(0), /* GLuint rc */ getStackedFloat(1), /* GLfloat s */ getStackedFloat(2), /* GLfloat t */ getStackedFloat(3), /* GLfloat x */ getStackedFloat(4), /* GLfloat y */ getStackedFloat(5) /* GLfloat z */); break; case NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUN: D(funcname = "glReplacementCodeuiTexCoord2fVertex3fvSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiTexCoord2fVertex3fvSUN)) nfglReplacementCodeuiTexCoord2fVertex3fvSUN( getStackedPointer(0, const GLuint *), /* const GLuint *rc */ getStackedPointer(1, const GLfloat *), /* const GLfloat *tc */ getStackedPointer(2, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLREPLACEMENTCODEUIVERTEX3FSUN: D(funcname = "glReplacementCodeuiVertex3fSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiVertex3fSUN)) nfglReplacementCodeuiVertex3fSUN( getStackedParameter(0), /* GLuint rc */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2), /* GLfloat y */ getStackedFloat(3) /* GLfloat z */); break; case NFOSMESA_GLREPLACEMENTCODEUIVERTEX3FVSUN: D(funcname = "glReplacementCodeuiVertex3fvSUN"); if (GL_ISAVAILABLE(glReplacementCodeuiVertex3fvSUN)) nfglReplacementCodeuiVertex3fvSUN( getStackedPointer(0, const GLuint *), /* const GLuint *rc */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLREPLACEMENTCODEUIVSUN: D(funcname = "glReplacementCodeuivSUN"); if (GL_ISAVAILABLE(glReplacementCodeuivSUN)) nfglReplacementCodeuivSUN( getStackedPointer(0, const GLuint *) /* const GLuint *code */); break; case NFOSMESA_GLREPLACEMENTCODEUSSUN: D(funcname = "glReplacementCodeusSUN"); if (GL_ISAVAILABLE(glReplacementCodeusSUN)) nfglReplacementCodeusSUN( getStackedParameter(0) /* GLushort32 code */); break; case NFOSMESA_GLREPLACEMENTCODEUSVSUN: D(funcname = "glReplacementCodeusvSUN"); if (GL_ISAVAILABLE(glReplacementCodeusvSUN)) nfglReplacementCodeusvSUN( getStackedPointer(0, const GLushort *) /* const GLushort *code */); break; case NFOSMESA_GLREQUESTRESIDENTPROGRAMSNV: D(funcname = "glRequestResidentProgramsNV"); if (GL_ISAVAILABLE(glRequestResidentProgramsNV)) nfglRequestResidentProgramsNV( getStackedParameter(0), /* GLsizei n */ getStackedPointer(1, const GLuint *) /* const GLuint *programs */); break; case NFOSMESA_GLRESETHISTOGRAM: D(funcname = "glResetHistogram"); if (GL_ISAVAILABLE(glResetHistogram)) nfglResetHistogram( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLRESETHISTOGRAMEXT: D(funcname = "glResetHistogramEXT"); if (GL_ISAVAILABLE(glResetHistogramEXT)) nfglResetHistogramEXT( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLRESETMINMAX: D(funcname = "glResetMinmax"); if (GL_ISAVAILABLE(glResetMinmax)) nfglResetMinmax( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLRESETMINMAXEXT: D(funcname = "glResetMinmaxEXT"); if (GL_ISAVAILABLE(glResetMinmaxEXT)) nfglResetMinmaxEXT( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLRESIZEBUFFERSMESA: D(funcname = "glResizeBuffersMESA"); if (GL_ISAVAILABLE(glResizeBuffersMESA)) nfglResizeBuffersMESA(); break; case NFOSMESA_GLRESOLVEDEPTHVALUESNV: D(funcname = "glResolveDepthValuesNV"); if (GL_ISAVAILABLE(glResolveDepthValuesNV)) nfglResolveDepthValuesNV(); break; case NFOSMESA_GLRESUMETRANSFORMFEEDBACK: D(funcname = "glResumeTransformFeedback"); if (GL_ISAVAILABLE(glResumeTransformFeedback)) nfglResumeTransformFeedback(); break; case NFOSMESA_GLRESUMETRANSFORMFEEDBACKNV: D(funcname = "glResumeTransformFeedbackNV"); if (GL_ISAVAILABLE(glResumeTransformFeedbackNV)) nfglResumeTransformFeedbackNV(); break; case NFOSMESA_GLROTATED: D(funcname = "glRotated"); if (GL_ISAVAILABLE(glRotated)) nfglRotated( getStackedDouble(0), /* GLdouble angle */ getStackedDouble(2), /* GLdouble x */ getStackedDouble(4), /* GLdouble y */ getStackedDouble(6) /* GLdouble z */); break; case NFOSMESA_GLROTATEF: D(funcname = "glRotatef"); if (GL_ISAVAILABLE(glRotatef)) nfglRotatef( getStackedFloat(0), /* GLfloat angle */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2), /* GLfloat y */ getStackedFloat(3) /* GLfloat z */); break; case NFOSMESA_GLROTATEXOES: D(funcname = "glRotatexOES"); if (GL_ISAVAILABLE(glRotatexOES)) nfglRotatexOES( getStackedParameter(0), /* GLfixed angle */ getStackedParameter(1), /* GLfixed x */ getStackedParameter(2), /* GLfixed y */ getStackedParameter(3) /* GLfixed z */); break; case NFOSMESA_GLSAMPLECOVERAGE: D(funcname = "glSampleCoverage"); if (GL_ISAVAILABLE(glSampleCoverage)) nfglSampleCoverage( getStackedFloat(0), /* GLfloat value */ getStackedParameter(1) /* GLboolean32 invert */); break; case NFOSMESA_GLSAMPLECOVERAGEARB: D(funcname = "glSampleCoverageARB"); if (GL_ISAVAILABLE(glSampleCoverageARB)) nfglSampleCoverageARB( getStackedFloat(0), /* GLfloat value */ getStackedParameter(1) /* GLboolean32 invert */); break; case NFOSMESA_GLSAMPLECOVERAGEOES: D(funcname = "glSampleCoverageOES"); if (GL_ISAVAILABLE(glSampleCoverageOES)) nfglSampleCoverageOES( getStackedParameter(0), /* GLfixed value */ getStackedParameter(1) /* GLboolean32 invert */); break; case NFOSMESA_GLSAMPLEMAPATI: D(funcname = "glSampleMapATI"); if (GL_ISAVAILABLE(glSampleMapATI)) nfglSampleMapATI( getStackedParameter(0), /* GLuint dst */ getStackedParameter(1), /* GLuint interp */ getStackedParameter(2) /* GLenum swizzle */); break; case NFOSMESA_GLSAMPLEMASKEXT: D(funcname = "glSampleMaskEXT"); if (GL_ISAVAILABLE(glSampleMaskEXT)) nfglSampleMaskEXT( getStackedFloat(0), /* GLclampf value */ getStackedParameter(1) /* GLboolean32 invert */); break; case NFOSMESA_GLSAMPLEMASKINDEXEDNV: D(funcname = "glSampleMaskIndexedNV"); if (GL_ISAVAILABLE(glSampleMaskIndexedNV)) nfglSampleMaskIndexedNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1) /* GLbitfield mask */); break; case NFOSMESA_GLSAMPLEMASKSGIS: D(funcname = "glSampleMaskSGIS"); if (GL_ISAVAILABLE(glSampleMaskSGIS)) nfglSampleMaskSGIS( getStackedFloat(0), /* GLclampf value */ getStackedParameter(1) /* GLboolean32 invert */); break; case NFOSMESA_GLSAMPLEMASKI: D(funcname = "glSampleMaski"); if (GL_ISAVAILABLE(glSampleMaski)) nfglSampleMaski( getStackedParameter(0), /* GLuint maskNumber */ getStackedParameter(1) /* GLbitfield mask */); break; case NFOSMESA_GLSAMPLEPASS: D(funcname = "glSamplePass"); if (GL_ISAVAILABLE(glSamplePass)) nfglSamplePass( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLSAMPLEPASSARB: D(funcname = "glSamplePassARB"); if (GL_ISAVAILABLE(glSamplePassARB)) nfglSamplePassARB( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLSAMPLEPATTERNEXT: D(funcname = "glSamplePatternEXT"); if (GL_ISAVAILABLE(glSamplePatternEXT)) nfglSamplePatternEXT( getStackedParameter(0) /* GLenum pattern */); break; case NFOSMESA_GLSAMPLEPATTERNSGIS: D(funcname = "glSamplePatternSGIS"); if (GL_ISAVAILABLE(glSamplePatternSGIS)) nfglSamplePatternSGIS( getStackedParameter(0) /* GLenum pattern */); break; case NFOSMESA_GLSAMPLERPARAMETERIIV: D(funcname = "glSamplerParameterIiv"); if (GL_ISAVAILABLE(glSamplerParameterIiv)) nfglSamplerParameterIiv( getStackedParameter(0), /* GLuint sampler */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *param */); break; case NFOSMESA_GLSAMPLERPARAMETERIUIV: D(funcname = "glSamplerParameterIuiv"); if (GL_ISAVAILABLE(glSamplerParameterIuiv)) nfglSamplerParameterIuiv( getStackedParameter(0), /* GLuint sampler */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLuint *) /* const GLuint *param */); break; case NFOSMESA_GLSAMPLERPARAMETERF: D(funcname = "glSamplerParameterf"); if (GL_ISAVAILABLE(glSamplerParameterf)) nfglSamplerParameterf( getStackedParameter(0), /* GLuint sampler */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat param */); break; case NFOSMESA_GLSAMPLERPARAMETERFV: D(funcname = "glSamplerParameterfv"); if (GL_ISAVAILABLE(glSamplerParameterfv)) nfglSamplerParameterfv( getStackedParameter(0), /* GLuint sampler */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *param */); break; case NFOSMESA_GLSAMPLERPARAMETERI: D(funcname = "glSamplerParameteri"); if (GL_ISAVAILABLE(glSamplerParameteri)) nfglSamplerParameteri( getStackedParameter(0), /* GLuint sampler */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLSAMPLERPARAMETERIV: D(funcname = "glSamplerParameteriv"); if (GL_ISAVAILABLE(glSamplerParameteriv)) nfglSamplerParameteriv( getStackedParameter(0), /* GLuint sampler */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *param */); break; case NFOSMESA_GLSCALED: D(funcname = "glScaled"); if (GL_ISAVAILABLE(glScaled)) nfglScaled( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2), /* GLdouble y */ getStackedDouble(4) /* GLdouble z */); break; case NFOSMESA_GLSCALEF: D(funcname = "glScalef"); if (GL_ISAVAILABLE(glScalef)) nfglScalef( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1), /* GLfloat y */ getStackedFloat(2) /* GLfloat z */); break; case NFOSMESA_GLSCALEXOES: D(funcname = "glScalexOES"); if (GL_ISAVAILABLE(glScalexOES)) nfglScalexOES( getStackedParameter(0), /* GLfixed x */ getStackedParameter(1), /* GLfixed y */ getStackedParameter(2) /* GLfixed z */); break; case NFOSMESA_GLSCISSOR: D(funcname = "glScissor"); if (GL_ISAVAILABLE(glScissor)) nfglScissor( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3) /* GLsizei height */); break; case NFOSMESA_GLSCISSORARRAYV: D(funcname = "glScissorArrayv"); if (GL_ISAVAILABLE(glScissorArrayv)) nfglScissorArrayv( getStackedParameter(0), /* GLuint first */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLSCISSORINDEXED: D(funcname = "glScissorIndexed"); if (GL_ISAVAILABLE(glScissorIndexed)) nfglScissorIndexed( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint left */ getStackedParameter(2), /* GLint bottom */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4) /* GLsizei height */); break; case NFOSMESA_GLSCISSORINDEXEDV: D(funcname = "glScissorIndexedv"); if (GL_ISAVAILABLE(glScissorIndexedv)) nfglScissorIndexedv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLSECONDARYCOLOR3B: D(funcname = "glSecondaryColor3b"); if (GL_ISAVAILABLE(glSecondaryColor3b)) nfglSecondaryColor3b( getStackedParameter(0), /* GLbyte32 red */ getStackedParameter(1), /* GLbyte32 green */ getStackedParameter(2) /* GLbyte32 blue */); break; case NFOSMESA_GLSECONDARYCOLOR3BEXT: D(funcname = "glSecondaryColor3bEXT"); if (GL_ISAVAILABLE(glSecondaryColor3bEXT)) nfglSecondaryColor3bEXT( getStackedParameter(0), /* GLbyte32 red */ getStackedParameter(1), /* GLbyte32 green */ getStackedParameter(2) /* GLbyte32 blue */); break; case NFOSMESA_GLSECONDARYCOLOR3BV: D(funcname = "glSecondaryColor3bv"); if (GL_ISAVAILABLE(glSecondaryColor3bv)) nfglSecondaryColor3bv( getStackedPointer(0, const GLbyte *) /* const GLbyte *v */); break; case NFOSMESA_GLSECONDARYCOLOR3BVEXT: D(funcname = "glSecondaryColor3bvEXT"); if (GL_ISAVAILABLE(glSecondaryColor3bvEXT)) nfglSecondaryColor3bvEXT( getStackedPointer(0, const GLbyte *) /* const GLbyte *v */); break; case NFOSMESA_GLSECONDARYCOLOR3D: D(funcname = "glSecondaryColor3d"); if (GL_ISAVAILABLE(glSecondaryColor3d)) nfglSecondaryColor3d( getStackedDouble(0), /* GLdouble red */ getStackedDouble(2), /* GLdouble green */ getStackedDouble(4) /* GLdouble blue */); break; case NFOSMESA_GLSECONDARYCOLOR3DEXT: D(funcname = "glSecondaryColor3dEXT"); if (GL_ISAVAILABLE(glSecondaryColor3dEXT)) nfglSecondaryColor3dEXT( getStackedDouble(0), /* GLdouble red */ getStackedDouble(2), /* GLdouble green */ getStackedDouble(4) /* GLdouble blue */); break; case NFOSMESA_GLSECONDARYCOLOR3DV: D(funcname = "glSecondaryColor3dv"); if (GL_ISAVAILABLE(glSecondaryColor3dv)) nfglSecondaryColor3dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLSECONDARYCOLOR3DVEXT: D(funcname = "glSecondaryColor3dvEXT"); if (GL_ISAVAILABLE(glSecondaryColor3dvEXT)) nfglSecondaryColor3dvEXT( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLSECONDARYCOLOR3F: D(funcname = "glSecondaryColor3f"); if (GL_ISAVAILABLE(glSecondaryColor3f)) nfglSecondaryColor3f( getStackedFloat(0), /* GLfloat red */ getStackedFloat(1), /* GLfloat green */ getStackedFloat(2) /* GLfloat blue */); break; case NFOSMESA_GLSECONDARYCOLOR3FEXT: D(funcname = "glSecondaryColor3fEXT"); if (GL_ISAVAILABLE(glSecondaryColor3fEXT)) nfglSecondaryColor3fEXT( getStackedFloat(0), /* GLfloat red */ getStackedFloat(1), /* GLfloat green */ getStackedFloat(2) /* GLfloat blue */); break; case NFOSMESA_GLSECONDARYCOLOR3FV: D(funcname = "glSecondaryColor3fv"); if (GL_ISAVAILABLE(glSecondaryColor3fv)) nfglSecondaryColor3fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLSECONDARYCOLOR3FVEXT: D(funcname = "glSecondaryColor3fvEXT"); if (GL_ISAVAILABLE(glSecondaryColor3fvEXT)) nfglSecondaryColor3fvEXT( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLSECONDARYCOLOR3HNV: D(funcname = "glSecondaryColor3hNV"); if (GL_ISAVAILABLE(glSecondaryColor3hNV)) nfglSecondaryColor3hNV( getStackedParameter(0), /* GLhalfNV32 red */ getStackedParameter(1), /* GLhalfNV32 green */ getStackedParameter(2) /* GLhalfNV32 blue */); break; case NFOSMESA_GLSECONDARYCOLOR3HVNV: D(funcname = "glSecondaryColor3hvNV"); if (GL_ISAVAILABLE(glSecondaryColor3hvNV)) nfglSecondaryColor3hvNV( getStackedPointer(0, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLSECONDARYCOLOR3I: D(funcname = "glSecondaryColor3i"); if (GL_ISAVAILABLE(glSecondaryColor3i)) nfglSecondaryColor3i( getStackedParameter(0), /* GLint red */ getStackedParameter(1), /* GLint green */ getStackedParameter(2) /* GLint blue */); break; case NFOSMESA_GLSECONDARYCOLOR3IEXT: D(funcname = "glSecondaryColor3iEXT"); if (GL_ISAVAILABLE(glSecondaryColor3iEXT)) nfglSecondaryColor3iEXT( getStackedParameter(0), /* GLint red */ getStackedParameter(1), /* GLint green */ getStackedParameter(2) /* GLint blue */); break; case NFOSMESA_GLSECONDARYCOLOR3IV: D(funcname = "glSecondaryColor3iv"); if (GL_ISAVAILABLE(glSecondaryColor3iv)) nfglSecondaryColor3iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLSECONDARYCOLOR3IVEXT: D(funcname = "glSecondaryColor3ivEXT"); if (GL_ISAVAILABLE(glSecondaryColor3ivEXT)) nfglSecondaryColor3ivEXT( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLSECONDARYCOLOR3S: D(funcname = "glSecondaryColor3s"); if (GL_ISAVAILABLE(glSecondaryColor3s)) nfglSecondaryColor3s( getStackedParameter(0), /* GLshort32 red */ getStackedParameter(1), /* GLshort32 green */ getStackedParameter(2) /* GLshort32 blue */); break; case NFOSMESA_GLSECONDARYCOLOR3SEXT: D(funcname = "glSecondaryColor3sEXT"); if (GL_ISAVAILABLE(glSecondaryColor3sEXT)) nfglSecondaryColor3sEXT( getStackedParameter(0), /* GLshort32 red */ getStackedParameter(1), /* GLshort32 green */ getStackedParameter(2) /* GLshort32 blue */); break; case NFOSMESA_GLSECONDARYCOLOR3SV: D(funcname = "glSecondaryColor3sv"); if (GL_ISAVAILABLE(glSecondaryColor3sv)) nfglSecondaryColor3sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLSECONDARYCOLOR3SVEXT: D(funcname = "glSecondaryColor3svEXT"); if (GL_ISAVAILABLE(glSecondaryColor3svEXT)) nfglSecondaryColor3svEXT( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLSECONDARYCOLOR3UB: D(funcname = "glSecondaryColor3ub"); if (GL_ISAVAILABLE(glSecondaryColor3ub)) nfglSecondaryColor3ub( getStackedParameter(0), /* GLubyte32 red */ getStackedParameter(1), /* GLubyte32 green */ getStackedParameter(2) /* GLubyte32 blue */); break; case NFOSMESA_GLSECONDARYCOLOR3UBEXT: D(funcname = "glSecondaryColor3ubEXT"); if (GL_ISAVAILABLE(glSecondaryColor3ubEXT)) nfglSecondaryColor3ubEXT( getStackedParameter(0), /* GLubyte32 red */ getStackedParameter(1), /* GLubyte32 green */ getStackedParameter(2) /* GLubyte32 blue */); break; case NFOSMESA_GLSECONDARYCOLOR3UBV: D(funcname = "glSecondaryColor3ubv"); if (GL_ISAVAILABLE(glSecondaryColor3ubv)) nfglSecondaryColor3ubv( getStackedPointer(0, const GLubyte *) /* const GLubyte *v */); break; case NFOSMESA_GLSECONDARYCOLOR3UBVEXT: D(funcname = "glSecondaryColor3ubvEXT"); if (GL_ISAVAILABLE(glSecondaryColor3ubvEXT)) nfglSecondaryColor3ubvEXT( getStackedPointer(0, const GLubyte *) /* const GLubyte *v */); break; case NFOSMESA_GLSECONDARYCOLOR3UI: D(funcname = "glSecondaryColor3ui"); if (GL_ISAVAILABLE(glSecondaryColor3ui)) nfglSecondaryColor3ui( getStackedParameter(0), /* GLuint red */ getStackedParameter(1), /* GLuint green */ getStackedParameter(2) /* GLuint blue */); break; case NFOSMESA_GLSECONDARYCOLOR3UIEXT: D(funcname = "glSecondaryColor3uiEXT"); if (GL_ISAVAILABLE(glSecondaryColor3uiEXT)) nfglSecondaryColor3uiEXT( getStackedParameter(0), /* GLuint red */ getStackedParameter(1), /* GLuint green */ getStackedParameter(2) /* GLuint blue */); break; case NFOSMESA_GLSECONDARYCOLOR3UIV: D(funcname = "glSecondaryColor3uiv"); if (GL_ISAVAILABLE(glSecondaryColor3uiv)) nfglSecondaryColor3uiv( getStackedPointer(0, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLSECONDARYCOLOR3UIVEXT: D(funcname = "glSecondaryColor3uivEXT"); if (GL_ISAVAILABLE(glSecondaryColor3uivEXT)) nfglSecondaryColor3uivEXT( getStackedPointer(0, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLSECONDARYCOLOR3US: D(funcname = "glSecondaryColor3us"); if (GL_ISAVAILABLE(glSecondaryColor3us)) nfglSecondaryColor3us( getStackedParameter(0), /* GLushort32 red */ getStackedParameter(1), /* GLushort32 green */ getStackedParameter(2) /* GLushort32 blue */); break; case NFOSMESA_GLSECONDARYCOLOR3USEXT: D(funcname = "glSecondaryColor3usEXT"); if (GL_ISAVAILABLE(glSecondaryColor3usEXT)) nfglSecondaryColor3usEXT( getStackedParameter(0), /* GLushort32 red */ getStackedParameter(1), /* GLushort32 green */ getStackedParameter(2) /* GLushort32 blue */); break; case NFOSMESA_GLSECONDARYCOLOR3USV: D(funcname = "glSecondaryColor3usv"); if (GL_ISAVAILABLE(glSecondaryColor3usv)) nfglSecondaryColor3usv( getStackedPointer(0, const GLushort *) /* const GLushort *v */); break; case NFOSMESA_GLSECONDARYCOLOR3USVEXT: D(funcname = "glSecondaryColor3usvEXT"); if (GL_ISAVAILABLE(glSecondaryColor3usvEXT)) nfglSecondaryColor3usvEXT( getStackedPointer(0, const GLushort *) /* const GLushort *v */); break; case NFOSMESA_GLSECONDARYCOLORFORMATNV: D(funcname = "glSecondaryColorFormatNV"); if (GL_ISAVAILABLE(glSecondaryColorFormatNV)) nfglSecondaryColorFormatNV( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2) /* GLsizei stride */); break; case NFOSMESA_GLSECONDARYCOLORP3UI: D(funcname = "glSecondaryColorP3ui"); if (GL_ISAVAILABLE(glSecondaryColorP3ui)) nfglSecondaryColorP3ui( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLuint color */); break; case NFOSMESA_GLSECONDARYCOLORP3UIV: D(funcname = "glSecondaryColorP3uiv"); if (GL_ISAVAILABLE(glSecondaryColorP3uiv)) nfglSecondaryColorP3uiv( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const GLuint *) /* const GLuint *color */); break; case NFOSMESA_GLSECONDARYCOLORPOINTER: D(funcname = "glSecondaryColorPointer"); if (GL_ISAVAILABLE(glSecondaryColorPointer)) nfglSecondaryColorPointer( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLsizei stride */ getStackedPointer(3, const void *) /* const void *pointer */); break; case NFOSMESA_GLSECONDARYCOLORPOINTEREXT: D(funcname = "glSecondaryColorPointerEXT"); if (GL_ISAVAILABLE(glSecondaryColorPointerEXT)) nfglSecondaryColorPointerEXT( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLsizei stride */ getStackedPointer(3, const void *) /* const void *pointer */); break; case NFOSMESA_GLSECONDARYCOLORPOINTERLISTIBM: D(funcname = "glSecondaryColorPointerListIBM"); if (GL_ISAVAILABLE(glSecondaryColorPointerListIBM)) nfglSecondaryColorPointerListIBM( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLint stride */ getStackedPointer(3, const void * *), /* const void * *pointer */ getStackedParameter(4) /* GLint ptrstride */); break; case NFOSMESA_GLSELECTBUFFER: D(funcname = "glSelectBuffer"); if (GL_ISAVAILABLE(glSelectBuffer)) nfglSelectBuffer( getStackedParameter(0), /* GLsizei size */ getStackedPointer(1, GLuint *) /* GLuint *buffer */); break; case NFOSMESA_GLSELECTPERFMONITORCOUNTERSAMD: D(funcname = "glSelectPerfMonitorCountersAMD"); if (GL_ISAVAILABLE(glSelectPerfMonitorCountersAMD)) nfglSelectPerfMonitorCountersAMD( getStackedParameter(0), /* GLuint monitor */ getStackedParameter(1), /* GLboolean32 enable */ getStackedParameter(2), /* GLuint group */ getStackedParameter(3), /* GLint numCounters */ getStackedPointer(4, GLuint *) /* GLuint *counterList */); break; case NFOSMESA_GLSEMAPHOREPARAMETERUI64VEXT: D(funcname = "glSemaphoreParameterui64vEXT"); if (GL_ISAVAILABLE(glSemaphoreParameterui64vEXT)) nfglSemaphoreParameterui64vEXT( getStackedParameter(0), /* GLuint semaphore */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLuint64 *) /* const GLuint64 *params */); break; case NFOSMESA_GLSEPARABLEFILTER2D: D(funcname = "glSeparableFilter2D"); if (GL_ISAVAILABLE(glSeparableFilter2D)) nfglSeparableFilter2D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3), /* GLsizei height */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLenum type */ getStackedPointer(6, const void *), /* const void *row */ getStackedPointer(7, const void *) /* const void *column */); break; case NFOSMESA_GLSEPARABLEFILTER2DEXT: D(funcname = "glSeparableFilter2DEXT"); if (GL_ISAVAILABLE(glSeparableFilter2DEXT)) nfglSeparableFilter2DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3), /* GLsizei height */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLenum type */ getStackedPointer(6, const void *), /* const void *row */ getStackedPointer(7, const void *) /* const void *column */); break; case NFOSMESA_GLSETFENCEAPPLE: D(funcname = "glSetFenceAPPLE"); if (GL_ISAVAILABLE(glSetFenceAPPLE)) nfglSetFenceAPPLE( getStackedParameter(0) /* GLuint fence */); break; case NFOSMESA_GLSETFENCENV: D(funcname = "glSetFenceNV"); if (GL_ISAVAILABLE(glSetFenceNV)) nfglSetFenceNV( getStackedParameter(0), /* GLuint fence */ getStackedParameter(1) /* GLenum condition */); break; case NFOSMESA_GLSETFRAGMENTSHADERCONSTANTATI: D(funcname = "glSetFragmentShaderConstantATI"); if (GL_ISAVAILABLE(glSetFragmentShaderConstantATI)) nfglSetFragmentShaderConstantATI( getStackedParameter(0), /* GLuint dst */ getStackedPointer(1, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLSETINVARIANTEXT: D(funcname = "glSetInvariantEXT"); if (GL_ISAVAILABLE(glSetInvariantEXT)) nfglSetInvariantEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const void *) /* const void *addr */); break; case NFOSMESA_GLSETLOCALCONSTANTEXT: D(funcname = "glSetLocalConstantEXT"); if (GL_ISAVAILABLE(glSetLocalConstantEXT)) nfglSetLocalConstantEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const void *) /* const void *addr */); break; case NFOSMESA_GLSETMULTISAMPLEFVAMD: D(funcname = "glSetMultisamplefvAMD"); if (GL_ISAVAILABLE(glSetMultisamplefvAMD)) nfglSetMultisamplefvAMD( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1), /* GLuint index */ getStackedPointer(2, const GLfloat *) /* const GLfloat *val */); break; case NFOSMESA_GLSHADEMODEL: D(funcname = "glShadeModel"); if (GL_ISAVAILABLE(glShadeModel)) nfglShadeModel( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLSHADERBINARY: D(funcname = "glShaderBinary"); if (GL_ISAVAILABLE(glShaderBinary)) nfglShaderBinary( getStackedParameter(0), /* GLsizei count */ getStackedPointer(1, const GLuint *), /* const GLuint *shaders */ getStackedParameter(2), /* GLenum binaryformat */ getStackedPointer(3, const void *), /* const void *binary */ getStackedParameter(4) /* GLsizei length */); break; case NFOSMESA_GLSHADEROP1EXT: D(funcname = "glShaderOp1EXT"); if (GL_ISAVAILABLE(glShaderOp1EXT)) nfglShaderOp1EXT( getStackedParameter(0), /* GLenum op */ getStackedParameter(1), /* GLuint res */ getStackedParameter(2) /* GLuint arg1 */); break; case NFOSMESA_GLSHADEROP2EXT: D(funcname = "glShaderOp2EXT"); if (GL_ISAVAILABLE(glShaderOp2EXT)) nfglShaderOp2EXT( getStackedParameter(0), /* GLenum op */ getStackedParameter(1), /* GLuint res */ getStackedParameter(2), /* GLuint arg1 */ getStackedParameter(3) /* GLuint arg2 */); break; case NFOSMESA_GLSHADEROP3EXT: D(funcname = "glShaderOp3EXT"); if (GL_ISAVAILABLE(glShaderOp3EXT)) nfglShaderOp3EXT( getStackedParameter(0), /* GLenum op */ getStackedParameter(1), /* GLuint res */ getStackedParameter(2), /* GLuint arg1 */ getStackedParameter(3), /* GLuint arg2 */ getStackedParameter(4) /* GLuint arg3 */); break; case NFOSMESA_GLSHADERSOURCE: D(funcname = "glShaderSource"); if (GL_ISAVAILABLE(glShaderSource)) nfglShaderSource( getStackedParameter(0), /* GLuint shader */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLchar *const *), /* const GLchar *const *string */ getStackedPointer(3, const GLint *) /* const GLint *length */); break; case NFOSMESA_GLSHADERSOURCEARB: D(funcname = "glShaderSourceARB"); if (GL_ISAVAILABLE(glShaderSourceARB)) nfglShaderSourceARB( (GLhandleARB)(uintptr_t)getStackedParameter(0), /* GLhandleARB shaderObj */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLcharARB * *), /* const GLcharARB * *string */ getStackedPointer(3, const GLint *) /* const GLint *length */); break; case NFOSMESA_GLSHADERSTORAGEBLOCKBINDING: D(funcname = "glShaderStorageBlockBinding"); if (GL_ISAVAILABLE(glShaderStorageBlockBinding)) nfglShaderStorageBlockBinding( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint storageBlockIndex */ getStackedParameter(2) /* GLuint storageBlockBinding */); break; case NFOSMESA_GLSHARPENTEXFUNCSGIS: D(funcname = "glSharpenTexFuncSGIS"); if (GL_ISAVAILABLE(glSharpenTexFuncSGIS)) nfglSharpenTexFuncSGIS( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei n */ getStackedPointer(2, const GLfloat *) /* const GLfloat *points */); break; case NFOSMESA_GLSIGNALSEMAPHOREEXT: D(funcname = "glSignalSemaphoreEXT"); if (GL_ISAVAILABLE(glSignalSemaphoreEXT)) nfglSignalSemaphoreEXT( getStackedParameter(0), /* GLuint semaphore */ getStackedParameter(1), /* GLuint numBufferBarriers */ getStackedPointer(2, const GLuint *), /* const GLuint *buffers */ getStackedParameter(3), /* GLuint numTextureBarriers */ getStackedPointer(4, const GLuint *), /* const GLuint *textures */ getStackedPointer(5, const GLenum *) /* const GLenum *dstLayouts */); break; case NFOSMESA_GLSIGNALVKFENCENV: D(funcname = "glSignalVkFenceNV"); if (GL_ISAVAILABLE(glSignalVkFenceNV)) nfglSignalVkFenceNV( getStackedParameter64(0) /* GLuint64 vkFence */); break; case NFOSMESA_GLSIGNALVKSEMAPHORENV: D(funcname = "glSignalVkSemaphoreNV"); if (GL_ISAVAILABLE(glSignalVkSemaphoreNV)) nfglSignalVkSemaphoreNV( getStackedParameter64(0) /* GLuint64 vkSemaphore */); break; case NFOSMESA_GLSPECIALIZESHADER: D(funcname = "glSpecializeShader"); if (GL_ISAVAILABLE(glSpecializeShader)) nfglSpecializeShader( getStackedParameter(0), /* GLuint shader */ getStackedPointer(1, const GLchar *), /* const GLchar *pEntryPoint */ getStackedParameter(2), /* GLuint numSpecializationConstants */ getStackedPointer(3, const GLuint *), /* const GLuint *pConstantIndex */ getStackedPointer(4, const GLuint *) /* const GLuint *pConstantValue */); break; case NFOSMESA_GLSPECIALIZESHADERARB: D(funcname = "glSpecializeShaderARB"); if (GL_ISAVAILABLE(glSpecializeShaderARB)) nfglSpecializeShaderARB( getStackedParameter(0), /* GLuint shader */ getStackedPointer(1, const GLchar *), /* const GLchar *pEntryPoint */ getStackedParameter(2), /* GLuint numSpecializationConstants */ getStackedPointer(3, const GLuint *), /* const GLuint *pConstantIndex */ getStackedPointer(4, const GLuint *) /* const GLuint *pConstantValue */); break; case NFOSMESA_GLSPRITEPARAMETERFSGIX: D(funcname = "glSpriteParameterfSGIX"); if (GL_ISAVAILABLE(glSpriteParameterfSGIX)) nfglSpriteParameterfSGIX( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat param */); break; case NFOSMESA_GLSPRITEPARAMETERFVSGIX: D(funcname = "glSpriteParameterfvSGIX"); if (GL_ISAVAILABLE(glSpriteParameterfvSGIX)) nfglSpriteParameterfvSGIX( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLSPRITEPARAMETERISGIX: D(funcname = "glSpriteParameteriSGIX"); if (GL_ISAVAILABLE(glSpriteParameteriSGIX)) nfglSpriteParameteriSGIX( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLSPRITEPARAMETERIVSGIX: D(funcname = "glSpriteParameterivSGIX"); if (GL_ISAVAILABLE(glSpriteParameterivSGIX)) nfglSpriteParameterivSGIX( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLSTARTINSTRUMENTSSGIX: D(funcname = "glStartInstrumentsSGIX"); if (GL_ISAVAILABLE(glStartInstrumentsSGIX)) nfglStartInstrumentsSGIX(); break; case NFOSMESA_GLSTATECAPTURENV: D(funcname = "glStateCaptureNV"); if (GL_ISAVAILABLE(glStateCaptureNV)) nfglStateCaptureNV( getStackedParameter(0), /* GLuint state */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLSTENCILCLEARTAGEXT: D(funcname = "glStencilClearTagEXT"); if (GL_ISAVAILABLE(glStencilClearTagEXT)) nfglStencilClearTagEXT( getStackedParameter(0), /* GLsizei stencilTagBits */ getStackedParameter(1) /* GLuint stencilClearTag */); break; case NFOSMESA_GLSTENCILFILLPATHINSTANCEDNV: D(funcname = "glStencilFillPathInstancedNV"); if (GL_ISAVAILABLE(glStencilFillPathInstancedNV)) nfglStencilFillPathInstancedNV( getStackedParameter(0), /* GLsizei numPaths */ getStackedParameter(1), /* GLenum pathNameType */ getStackedPointer(2, const void *), /* const void *paths */ getStackedParameter(3), /* GLuint pathBase */ getStackedParameter(4), /* GLenum fillMode */ getStackedParameter(5), /* GLuint mask */ getStackedParameter(6), /* GLenum transformType */ getStackedPointer(7, const GLfloat *) /* const GLfloat *transformValues */); break; case NFOSMESA_GLSTENCILFILLPATHNV: D(funcname = "glStencilFillPathNV"); if (GL_ISAVAILABLE(glStencilFillPathNV)) nfglStencilFillPathNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLenum fillMode */ getStackedParameter(2) /* GLuint mask */); break; case NFOSMESA_GLSTENCILFUNC: D(funcname = "glStencilFunc"); if (GL_ISAVAILABLE(glStencilFunc)) nfglStencilFunc( getStackedParameter(0), /* GLenum func */ getStackedParameter(1), /* GLint ref */ getStackedParameter(2) /* GLuint mask */); break; case NFOSMESA_GLSTENCILFUNCSEPARATE: D(funcname = "glStencilFuncSeparate"); if (GL_ISAVAILABLE(glStencilFuncSeparate)) nfglStencilFuncSeparate( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum func */ getStackedParameter(2), /* GLint ref */ getStackedParameter(3) /* GLuint mask */); break; case NFOSMESA_GLSTENCILFUNCSEPARATEATI: D(funcname = "glStencilFuncSeparateATI"); if (GL_ISAVAILABLE(glStencilFuncSeparateATI)) nfglStencilFuncSeparateATI( getStackedParameter(0), /* GLenum frontfunc */ getStackedParameter(1), /* GLenum backfunc */ getStackedParameter(2), /* GLint ref */ getStackedParameter(3) /* GLuint mask */); break; case NFOSMESA_GLSTENCILMASK: D(funcname = "glStencilMask"); if (GL_ISAVAILABLE(glStencilMask)) nfglStencilMask( getStackedParameter(0) /* GLuint mask */); break; case NFOSMESA_GLSTENCILMASKSEPARATE: D(funcname = "glStencilMaskSeparate"); if (GL_ISAVAILABLE(glStencilMaskSeparate)) nfglStencilMaskSeparate( getStackedParameter(0), /* GLenum face */ getStackedParameter(1) /* GLuint mask */); break; case NFOSMESA_GLSTENCILOP: D(funcname = "glStencilOp"); if (GL_ISAVAILABLE(glStencilOp)) nfglStencilOp( getStackedParameter(0), /* GLenum fail */ getStackedParameter(1), /* GLenum zfail */ getStackedParameter(2) /* GLenum zpass */); break; case NFOSMESA_GLSTENCILOPSEPARATE: D(funcname = "glStencilOpSeparate"); if (GL_ISAVAILABLE(glStencilOpSeparate)) nfglStencilOpSeparate( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum sfail */ getStackedParameter(2), /* GLenum dpfail */ getStackedParameter(3) /* GLenum dppass */); break; case NFOSMESA_GLSTENCILOPSEPARATEATI: D(funcname = "glStencilOpSeparateATI"); if (GL_ISAVAILABLE(glStencilOpSeparateATI)) nfglStencilOpSeparateATI( getStackedParameter(0), /* GLenum face */ getStackedParameter(1), /* GLenum sfail */ getStackedParameter(2), /* GLenum dpfail */ getStackedParameter(3) /* GLenum dppass */); break; case NFOSMESA_GLSTENCILOPVALUEAMD: D(funcname = "glStencilOpValueAMD"); if (GL_ISAVAILABLE(glStencilOpValueAMD)) nfglStencilOpValueAMD( getStackedParameter(0), /* GLenum face */ getStackedParameter(1) /* GLuint value */); break; case NFOSMESA_GLSTENCILSTROKEPATHINSTANCEDNV: D(funcname = "glStencilStrokePathInstancedNV"); if (GL_ISAVAILABLE(glStencilStrokePathInstancedNV)) nfglStencilStrokePathInstancedNV( getStackedParameter(0), /* GLsizei numPaths */ getStackedParameter(1), /* GLenum pathNameType */ getStackedPointer(2, const void *), /* const void *paths */ getStackedParameter(3), /* GLuint pathBase */ getStackedParameter(4), /* GLint reference */ getStackedParameter(5), /* GLuint mask */ getStackedParameter(6), /* GLenum transformType */ getStackedPointer(7, const GLfloat *) /* const GLfloat *transformValues */); break; case NFOSMESA_GLSTENCILSTROKEPATHNV: D(funcname = "glStencilStrokePathNV"); if (GL_ISAVAILABLE(glStencilStrokePathNV)) nfglStencilStrokePathNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLint reference */ getStackedParameter(2) /* GLuint mask */); break; case NFOSMESA_GLSTENCILTHENCOVERFILLPATHINSTANCEDNV: D(funcname = "glStencilThenCoverFillPathInstancedNV"); if (GL_ISAVAILABLE(glStencilThenCoverFillPathInstancedNV)) nfglStencilThenCoverFillPathInstancedNV( getStackedParameter(0), /* GLsizei numPaths */ getStackedParameter(1), /* GLenum pathNameType */ getStackedPointer(2, const void *), /* const void *paths */ getStackedParameter(3), /* GLuint pathBase */ getStackedParameter(4), /* GLenum fillMode */ getStackedParameter(5), /* GLuint mask */ getStackedParameter(6), /* GLenum coverMode */ getStackedParameter(7), /* GLenum transformType */ getStackedPointer(8, const GLfloat *) /* const GLfloat *transformValues */); break; case NFOSMESA_GLSTENCILTHENCOVERFILLPATHNV: D(funcname = "glStencilThenCoverFillPathNV"); if (GL_ISAVAILABLE(glStencilThenCoverFillPathNV)) nfglStencilThenCoverFillPathNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLenum fillMode */ getStackedParameter(2), /* GLuint mask */ getStackedParameter(3) /* GLenum coverMode */); break; case NFOSMESA_GLSTENCILTHENCOVERSTROKEPATHINSTANCEDNV: D(funcname = "glStencilThenCoverStrokePathInstancedNV"); if (GL_ISAVAILABLE(glStencilThenCoverStrokePathInstancedNV)) nfglStencilThenCoverStrokePathInstancedNV( getStackedParameter(0), /* GLsizei numPaths */ getStackedParameter(1), /* GLenum pathNameType */ getStackedPointer(2, const void *), /* const void *paths */ getStackedParameter(3), /* GLuint pathBase */ getStackedParameter(4), /* GLint reference */ getStackedParameter(5), /* GLuint mask */ getStackedParameter(6), /* GLenum coverMode */ getStackedParameter(7), /* GLenum transformType */ getStackedPointer(8, const GLfloat *) /* const GLfloat *transformValues */); break; case NFOSMESA_GLSTENCILTHENCOVERSTROKEPATHNV: D(funcname = "glStencilThenCoverStrokePathNV"); if (GL_ISAVAILABLE(glStencilThenCoverStrokePathNV)) nfglStencilThenCoverStrokePathNV( getStackedParameter(0), /* GLuint path */ getStackedParameter(1), /* GLint reference */ getStackedParameter(2), /* GLuint mask */ getStackedParameter(3) /* GLenum coverMode */); break; case NFOSMESA_GLSTOPINSTRUMENTSSGIX: D(funcname = "glStopInstrumentsSGIX"); if (GL_ISAVAILABLE(glStopInstrumentsSGIX)) nfglStopInstrumentsSGIX( getStackedParameter(0) /* GLint marker */); break; case NFOSMESA_GLSTRINGMARKERGREMEDY: D(funcname = "glStringMarkerGREMEDY"); if (GL_ISAVAILABLE(glStringMarkerGREMEDY)) nfglStringMarkerGREMEDY( getStackedParameter(0), /* GLsizei len */ getStackedPointer(1, const void *) /* const void *string */); break; case NFOSMESA_GLSUBPIXELPRECISIONBIASNV: D(funcname = "glSubpixelPrecisionBiasNV"); if (GL_ISAVAILABLE(glSubpixelPrecisionBiasNV)) nfglSubpixelPrecisionBiasNV( getStackedParameter(0), /* GLuint xbits */ getStackedParameter(1) /* GLuint ybits */); break; case NFOSMESA_GLSWAPAPPLE: D(funcname = "glSwapAPPLE"); if (GL_ISAVAILABLE(glSwapAPPLE)) nfglSwapAPPLE(); break; case NFOSMESA_GLSWIZZLEEXT: D(funcname = "glSwizzleEXT"); if (GL_ISAVAILABLE(glSwizzleEXT)) nfglSwizzleEXT( getStackedParameter(0), /* GLuint res */ getStackedParameter(1), /* GLuint in */ getStackedParameter(2), /* GLenum outX */ getStackedParameter(3), /* GLenum outY */ getStackedParameter(4), /* GLenum outZ */ getStackedParameter(5) /* GLenum outW */); break; case NFOSMESA_GLSYNCTEXTUREINTEL: D(funcname = "glSyncTextureINTEL"); if (GL_ISAVAILABLE(glSyncTextureINTEL)) nfglSyncTextureINTEL( getStackedParameter(0) /* GLuint texture */); break; case NFOSMESA_GLTAGSAMPLEBUFFERSGIX: D(funcname = "glTagSampleBufferSGIX"); if (GL_ISAVAILABLE(glTagSampleBufferSGIX)) nfglTagSampleBufferSGIX(); break; case NFOSMESA_GLTANGENT3BEXT: D(funcname = "glTangent3bEXT"); if (GL_ISAVAILABLE(glTangent3bEXT)) nfglTangent3bEXT( getStackedParameter(0), /* GLbyte32 tx */ getStackedParameter(1), /* GLbyte32 ty */ getStackedParameter(2) /* GLbyte32 tz */); break; case NFOSMESA_GLTANGENT3BVEXT: D(funcname = "glTangent3bvEXT"); if (GL_ISAVAILABLE(glTangent3bvEXT)) nfglTangent3bvEXT( getStackedPointer(0, const GLbyte *) /* const GLbyte *v */); break; case NFOSMESA_GLTANGENT3DEXT: D(funcname = "glTangent3dEXT"); if (GL_ISAVAILABLE(glTangent3dEXT)) nfglTangent3dEXT( getStackedDouble(0), /* GLdouble tx */ getStackedDouble(2), /* GLdouble ty */ getStackedDouble(4) /* GLdouble tz */); break; case NFOSMESA_GLTANGENT3DVEXT: D(funcname = "glTangent3dvEXT"); if (GL_ISAVAILABLE(glTangent3dvEXT)) nfglTangent3dvEXT( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLTANGENT3FEXT: D(funcname = "glTangent3fEXT"); if (GL_ISAVAILABLE(glTangent3fEXT)) nfglTangent3fEXT( getStackedFloat(0), /* GLfloat tx */ getStackedFloat(1), /* GLfloat ty */ getStackedFloat(2) /* GLfloat tz */); break; case NFOSMESA_GLTANGENT3FVEXT: D(funcname = "glTangent3fvEXT"); if (GL_ISAVAILABLE(glTangent3fvEXT)) nfglTangent3fvEXT( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLTANGENT3IEXT: D(funcname = "glTangent3iEXT"); if (GL_ISAVAILABLE(glTangent3iEXT)) nfglTangent3iEXT( getStackedParameter(0), /* GLint tx */ getStackedParameter(1), /* GLint ty */ getStackedParameter(2) /* GLint tz */); break; case NFOSMESA_GLTANGENT3IVEXT: D(funcname = "glTangent3ivEXT"); if (GL_ISAVAILABLE(glTangent3ivEXT)) nfglTangent3ivEXT( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLTANGENT3SEXT: D(funcname = "glTangent3sEXT"); if (GL_ISAVAILABLE(glTangent3sEXT)) nfglTangent3sEXT( getStackedParameter(0), /* GLshort32 tx */ getStackedParameter(1), /* GLshort32 ty */ getStackedParameter(2) /* GLshort32 tz */); break; case NFOSMESA_GLTANGENT3SVEXT: D(funcname = "glTangent3svEXT"); if (GL_ISAVAILABLE(glTangent3svEXT)) nfglTangent3svEXT( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLTANGENTPOINTEREXT: D(funcname = "glTangentPointerEXT"); if (GL_ISAVAILABLE(glTangentPointerEXT)) nfglTangentPointerEXT( getStackedParameter(0), /* GLenum type */ getStackedParameter(1), /* GLsizei stride */ getStackedPointer(2, const void *) /* const void *pointer */); break; case NFOSMESA_GLTBUFFERMASK3DFX: D(funcname = "glTbufferMask3DFX"); if (GL_ISAVAILABLE(glTbufferMask3DFX)) nfglTbufferMask3DFX( getStackedParameter(0) /* GLuint mask */); break; case NFOSMESA_GLTESSELLATIONFACTORAMD: D(funcname = "glTessellationFactorAMD"); if (GL_ISAVAILABLE(glTessellationFactorAMD)) nfglTessellationFactorAMD( getStackedFloat(0) /* GLfloat factor */); break; case NFOSMESA_GLTESSELLATIONMODEAMD: D(funcname = "glTessellationModeAMD"); if (GL_ISAVAILABLE(glTessellationModeAMD)) nfglTessellationModeAMD( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLTESTFENCEAPPLE: D(funcname = "glTestFenceAPPLE"); if (GL_ISAVAILABLE(glTestFenceAPPLE)) ret = nfglTestFenceAPPLE( getStackedParameter(0) /* GLuint fence */); break; case NFOSMESA_GLTESTFENCENV: D(funcname = "glTestFenceNV"); if (GL_ISAVAILABLE(glTestFenceNV)) ret = nfglTestFenceNV( getStackedParameter(0) /* GLuint fence */); break; case NFOSMESA_GLTESTOBJECTAPPLE: D(funcname = "glTestObjectAPPLE"); if (GL_ISAVAILABLE(glTestObjectAPPLE)) ret = nfglTestObjectAPPLE( getStackedParameter(0), /* GLenum object */ getStackedParameter(1) /* GLuint name */); break; case NFOSMESA_GLTEXBUFFER: D(funcname = "glTexBuffer"); if (GL_ISAVAILABLE(glTexBuffer)) nfglTexBuffer( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2) /* GLuint buffer */); break; case NFOSMESA_GLTEXBUFFERARB: D(funcname = "glTexBufferARB"); if (GL_ISAVAILABLE(glTexBufferARB)) nfglTexBufferARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2) /* GLuint buffer */); break; case NFOSMESA_GLTEXBUFFEREXT: D(funcname = "glTexBufferEXT"); if (GL_ISAVAILABLE(glTexBufferEXT)) nfglTexBufferEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2) /* GLuint buffer */); break; case NFOSMESA_GLTEXBUFFERRANGE: D(funcname = "glTexBufferRange"); if (GL_ISAVAILABLE(glTexBufferRange)) nfglTexBufferRange( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLuint buffer */ getStackedParameter(3), /* GLintptr offset */ getStackedParameter(4) /* GLsizeiptr size */); break; case NFOSMESA_GLTEXBUMPPARAMETERFVATI: D(funcname = "glTexBumpParameterfvATI"); if (GL_ISAVAILABLE(glTexBumpParameterfvATI)) nfglTexBumpParameterfvATI( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLfloat *) /* const GLfloat *param */); break; case NFOSMESA_GLTEXBUMPPARAMETERIVATI: D(funcname = "glTexBumpParameterivATI"); if (GL_ISAVAILABLE(glTexBumpParameterivATI)) nfglTexBumpParameterivATI( getStackedParameter(0), /* GLenum pname */ getStackedPointer(1, const GLint *) /* const GLint *param */); break; case NFOSMESA_GLTEXCOORD1BOES: D(funcname = "glTexCoord1bOES"); if (GL_ISAVAILABLE(glTexCoord1bOES)) nfglTexCoord1bOES( getStackedParameter(0) /* GLbyte32 s */); break; case NFOSMESA_GLTEXCOORD1BVOES: D(funcname = "glTexCoord1bvOES"); if (GL_ISAVAILABLE(glTexCoord1bvOES)) nfglTexCoord1bvOES( getStackedPointer(0, const GLbyte *) /* const GLbyte *coords */); break; case NFOSMESA_GLTEXCOORD1D: D(funcname = "glTexCoord1d"); if (GL_ISAVAILABLE(glTexCoord1d)) nfglTexCoord1d( getStackedDouble(0) /* GLdouble s */); break; case NFOSMESA_GLTEXCOORD1DV: D(funcname = "glTexCoord1dv"); if (GL_ISAVAILABLE(glTexCoord1dv)) nfglTexCoord1dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLTEXCOORD1F: D(funcname = "glTexCoord1f"); if (GL_ISAVAILABLE(glTexCoord1f)) nfglTexCoord1f( getStackedFloat(0) /* GLfloat s */); break; case NFOSMESA_GLTEXCOORD1FV: D(funcname = "glTexCoord1fv"); if (GL_ISAVAILABLE(glTexCoord1fv)) nfglTexCoord1fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLTEXCOORD1HNV: D(funcname = "glTexCoord1hNV"); if (GL_ISAVAILABLE(glTexCoord1hNV)) nfglTexCoord1hNV( getStackedParameter(0) /* GLhalfNV32 s */); break; case NFOSMESA_GLTEXCOORD1HVNV: D(funcname = "glTexCoord1hvNV"); if (GL_ISAVAILABLE(glTexCoord1hvNV)) nfglTexCoord1hvNV( getStackedPointer(0, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLTEXCOORD1I: D(funcname = "glTexCoord1i"); if (GL_ISAVAILABLE(glTexCoord1i)) nfglTexCoord1i( getStackedParameter(0) /* GLint s */); break; case NFOSMESA_GLTEXCOORD1IV: D(funcname = "glTexCoord1iv"); if (GL_ISAVAILABLE(glTexCoord1iv)) nfglTexCoord1iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLTEXCOORD1S: D(funcname = "glTexCoord1s"); if (GL_ISAVAILABLE(glTexCoord1s)) nfglTexCoord1s( getStackedParameter(0) /* GLshort32 s */); break; case NFOSMESA_GLTEXCOORD1SV: D(funcname = "glTexCoord1sv"); if (GL_ISAVAILABLE(glTexCoord1sv)) nfglTexCoord1sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLTEXCOORD1XOES: D(funcname = "glTexCoord1xOES"); if (GL_ISAVAILABLE(glTexCoord1xOES)) nfglTexCoord1xOES( getStackedParameter(0) /* GLfixed s */); break; case NFOSMESA_GLTEXCOORD1XVOES: D(funcname = "glTexCoord1xvOES"); if (GL_ISAVAILABLE(glTexCoord1xvOES)) nfglTexCoord1xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLTEXCOORD2BOES: D(funcname = "glTexCoord2bOES"); if (GL_ISAVAILABLE(glTexCoord2bOES)) nfglTexCoord2bOES( getStackedParameter(0), /* GLbyte32 s */ getStackedParameter(1) /* GLbyte32 t */); break; case NFOSMESA_GLTEXCOORD2BVOES: D(funcname = "glTexCoord2bvOES"); if (GL_ISAVAILABLE(glTexCoord2bvOES)) nfglTexCoord2bvOES( getStackedPointer(0, const GLbyte *) /* const GLbyte *coords */); break; case NFOSMESA_GLTEXCOORD2D: D(funcname = "glTexCoord2d"); if (GL_ISAVAILABLE(glTexCoord2d)) nfglTexCoord2d( getStackedDouble(0), /* GLdouble s */ getStackedDouble(2) /* GLdouble t */); break; case NFOSMESA_GLTEXCOORD2DV: D(funcname = "glTexCoord2dv"); if (GL_ISAVAILABLE(glTexCoord2dv)) nfglTexCoord2dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLTEXCOORD2F: D(funcname = "glTexCoord2f"); if (GL_ISAVAILABLE(glTexCoord2f)) nfglTexCoord2f( getStackedFloat(0), /* GLfloat s */ getStackedFloat(1) /* GLfloat t */); break; case NFOSMESA_GLTEXCOORD2FCOLOR3FVERTEX3FSUN: D(funcname = "glTexCoord2fColor3fVertex3fSUN"); if (GL_ISAVAILABLE(glTexCoord2fColor3fVertex3fSUN)) nfglTexCoord2fColor3fVertex3fSUN( getStackedFloat(0), /* GLfloat s */ getStackedFloat(1), /* GLfloat t */ getStackedFloat(2), /* GLfloat r */ getStackedFloat(3), /* GLfloat g */ getStackedFloat(4), /* GLfloat b */ getStackedFloat(5), /* GLfloat x */ getStackedFloat(6), /* GLfloat y */ getStackedFloat(7) /* GLfloat z */); break; case NFOSMESA_GLTEXCOORD2FCOLOR3FVERTEX3FVSUN: D(funcname = "glTexCoord2fColor3fVertex3fvSUN"); if (GL_ISAVAILABLE(glTexCoord2fColor3fVertex3fvSUN)) nfglTexCoord2fColor3fVertex3fvSUN( getStackedPointer(0, const GLfloat *), /* const GLfloat *tc */ getStackedPointer(1, const GLfloat *), /* const GLfloat *c */ getStackedPointer(2, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN: D(funcname = "glTexCoord2fColor4fNormal3fVertex3fSUN"); if (GL_ISAVAILABLE(glTexCoord2fColor4fNormal3fVertex3fSUN)) nfglTexCoord2fColor4fNormal3fVertex3fSUN( getStackedFloat(0), /* GLfloat s */ getStackedFloat(1), /* GLfloat t */ getStackedFloat(2), /* GLfloat r */ getStackedFloat(3), /* GLfloat g */ getStackedFloat(4), /* GLfloat b */ getStackedFloat(5), /* GLfloat a */ getStackedFloat(6), /* GLfloat nx */ getStackedFloat(7), /* GLfloat ny */ getStackedFloat(8), /* GLfloat nz */ getStackedFloat(9), /* GLfloat x */ getStackedFloat(10), /* GLfloat y */ getStackedFloat(11) /* GLfloat z */); break; case NFOSMESA_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN: D(funcname = "glTexCoord2fColor4fNormal3fVertex3fvSUN"); if (GL_ISAVAILABLE(glTexCoord2fColor4fNormal3fVertex3fvSUN)) nfglTexCoord2fColor4fNormal3fVertex3fvSUN( getStackedPointer(0, const GLfloat *), /* const GLfloat *tc */ getStackedPointer(1, const GLfloat *), /* const GLfloat *c */ getStackedPointer(2, const GLfloat *), /* const GLfloat *n */ getStackedPointer(3, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLTEXCOORD2FCOLOR4UBVERTEX3FSUN: D(funcname = "glTexCoord2fColor4ubVertex3fSUN"); if (GL_ISAVAILABLE(glTexCoord2fColor4ubVertex3fSUN)) nfglTexCoord2fColor4ubVertex3fSUN( getStackedFloat(0), /* GLfloat s */ getStackedFloat(1), /* GLfloat t */ getStackedParameter(2), /* GLubyte32 r */ getStackedParameter(3), /* GLubyte32 g */ getStackedParameter(4), /* GLubyte32 b */ getStackedParameter(5), /* GLubyte32 a */ getStackedFloat(6), /* GLfloat x */ getStackedFloat(7), /* GLfloat y */ getStackedFloat(8) /* GLfloat z */); break; case NFOSMESA_GLTEXCOORD2FCOLOR4UBVERTEX3FVSUN: D(funcname = "glTexCoord2fColor4ubVertex3fvSUN"); if (GL_ISAVAILABLE(glTexCoord2fColor4ubVertex3fvSUN)) nfglTexCoord2fColor4ubVertex3fvSUN( getStackedPointer(0, const GLfloat *), /* const GLfloat *tc */ getStackedPointer(1, const GLubyte *), /* const GLubyte *c */ getStackedPointer(2, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLTEXCOORD2FNORMAL3FVERTEX3FSUN: D(funcname = "glTexCoord2fNormal3fVertex3fSUN"); if (GL_ISAVAILABLE(glTexCoord2fNormal3fVertex3fSUN)) nfglTexCoord2fNormal3fVertex3fSUN( getStackedFloat(0), /* GLfloat s */ getStackedFloat(1), /* GLfloat t */ getStackedFloat(2), /* GLfloat nx */ getStackedFloat(3), /* GLfloat ny */ getStackedFloat(4), /* GLfloat nz */ getStackedFloat(5), /* GLfloat x */ getStackedFloat(6), /* GLfloat y */ getStackedFloat(7) /* GLfloat z */); break; case NFOSMESA_GLTEXCOORD2FNORMAL3FVERTEX3FVSUN: D(funcname = "glTexCoord2fNormal3fVertex3fvSUN"); if (GL_ISAVAILABLE(glTexCoord2fNormal3fVertex3fvSUN)) nfglTexCoord2fNormal3fVertex3fvSUN( getStackedPointer(0, const GLfloat *), /* const GLfloat *tc */ getStackedPointer(1, const GLfloat *), /* const GLfloat *n */ getStackedPointer(2, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLTEXCOORD2FVERTEX3FSUN: D(funcname = "glTexCoord2fVertex3fSUN"); if (GL_ISAVAILABLE(glTexCoord2fVertex3fSUN)) nfglTexCoord2fVertex3fSUN( getStackedFloat(0), /* GLfloat s */ getStackedFloat(1), /* GLfloat t */ getStackedFloat(2), /* GLfloat x */ getStackedFloat(3), /* GLfloat y */ getStackedFloat(4) /* GLfloat z */); break; case NFOSMESA_GLTEXCOORD2FVERTEX3FVSUN: D(funcname = "glTexCoord2fVertex3fvSUN"); if (GL_ISAVAILABLE(glTexCoord2fVertex3fvSUN)) nfglTexCoord2fVertex3fvSUN( getStackedPointer(0, const GLfloat *), /* const GLfloat *tc */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLTEXCOORD2FV: D(funcname = "glTexCoord2fv"); if (GL_ISAVAILABLE(glTexCoord2fv)) nfglTexCoord2fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLTEXCOORD2HNV: D(funcname = "glTexCoord2hNV"); if (GL_ISAVAILABLE(glTexCoord2hNV)) nfglTexCoord2hNV( getStackedParameter(0), /* GLhalfNV32 s */ getStackedParameter(1) /* GLhalfNV32 t */); break; case NFOSMESA_GLTEXCOORD2HVNV: D(funcname = "glTexCoord2hvNV"); if (GL_ISAVAILABLE(glTexCoord2hvNV)) nfglTexCoord2hvNV( getStackedPointer(0, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLTEXCOORD2I: D(funcname = "glTexCoord2i"); if (GL_ISAVAILABLE(glTexCoord2i)) nfglTexCoord2i( getStackedParameter(0), /* GLint s */ getStackedParameter(1) /* GLint t */); break; case NFOSMESA_GLTEXCOORD2IV: D(funcname = "glTexCoord2iv"); if (GL_ISAVAILABLE(glTexCoord2iv)) nfglTexCoord2iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLTEXCOORD2S: D(funcname = "glTexCoord2s"); if (GL_ISAVAILABLE(glTexCoord2s)) nfglTexCoord2s( getStackedParameter(0), /* GLshort32 s */ getStackedParameter(1) /* GLshort32 t */); break; case NFOSMESA_GLTEXCOORD2SV: D(funcname = "glTexCoord2sv"); if (GL_ISAVAILABLE(glTexCoord2sv)) nfglTexCoord2sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLTEXCOORD2XOES: D(funcname = "glTexCoord2xOES"); if (GL_ISAVAILABLE(glTexCoord2xOES)) nfglTexCoord2xOES( getStackedParameter(0), /* GLfixed s */ getStackedParameter(1) /* GLfixed t */); break; case NFOSMESA_GLTEXCOORD2XVOES: D(funcname = "glTexCoord2xvOES"); if (GL_ISAVAILABLE(glTexCoord2xvOES)) nfglTexCoord2xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLTEXCOORD3BOES: D(funcname = "glTexCoord3bOES"); if (GL_ISAVAILABLE(glTexCoord3bOES)) nfglTexCoord3bOES( getStackedParameter(0), /* GLbyte32 s */ getStackedParameter(1), /* GLbyte32 t */ getStackedParameter(2) /* GLbyte32 r */); break; case NFOSMESA_GLTEXCOORD3BVOES: D(funcname = "glTexCoord3bvOES"); if (GL_ISAVAILABLE(glTexCoord3bvOES)) nfglTexCoord3bvOES( getStackedPointer(0, const GLbyte *) /* const GLbyte *coords */); break; case NFOSMESA_GLTEXCOORD3D: D(funcname = "glTexCoord3d"); if (GL_ISAVAILABLE(glTexCoord3d)) nfglTexCoord3d( getStackedDouble(0), /* GLdouble s */ getStackedDouble(2), /* GLdouble t */ getStackedDouble(4) /* GLdouble r */); break; case NFOSMESA_GLTEXCOORD3DV: D(funcname = "glTexCoord3dv"); if (GL_ISAVAILABLE(glTexCoord3dv)) nfglTexCoord3dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLTEXCOORD3F: D(funcname = "glTexCoord3f"); if (GL_ISAVAILABLE(glTexCoord3f)) nfglTexCoord3f( getStackedFloat(0), /* GLfloat s */ getStackedFloat(1), /* GLfloat t */ getStackedFloat(2) /* GLfloat r */); break; case NFOSMESA_GLTEXCOORD3FV: D(funcname = "glTexCoord3fv"); if (GL_ISAVAILABLE(glTexCoord3fv)) nfglTexCoord3fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLTEXCOORD3HNV: D(funcname = "glTexCoord3hNV"); if (GL_ISAVAILABLE(glTexCoord3hNV)) nfglTexCoord3hNV( getStackedParameter(0), /* GLhalfNV32 s */ getStackedParameter(1), /* GLhalfNV32 t */ getStackedParameter(2) /* GLhalfNV32 r */); break; case NFOSMESA_GLTEXCOORD3HVNV: D(funcname = "glTexCoord3hvNV"); if (GL_ISAVAILABLE(glTexCoord3hvNV)) nfglTexCoord3hvNV( getStackedPointer(0, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLTEXCOORD3I: D(funcname = "glTexCoord3i"); if (GL_ISAVAILABLE(glTexCoord3i)) nfglTexCoord3i( getStackedParameter(0), /* GLint s */ getStackedParameter(1), /* GLint t */ getStackedParameter(2) /* GLint r */); break; case NFOSMESA_GLTEXCOORD3IV: D(funcname = "glTexCoord3iv"); if (GL_ISAVAILABLE(glTexCoord3iv)) nfglTexCoord3iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLTEXCOORD3S: D(funcname = "glTexCoord3s"); if (GL_ISAVAILABLE(glTexCoord3s)) nfglTexCoord3s( getStackedParameter(0), /* GLshort32 s */ getStackedParameter(1), /* GLshort32 t */ getStackedParameter(2) /* GLshort32 r */); break; case NFOSMESA_GLTEXCOORD3SV: D(funcname = "glTexCoord3sv"); if (GL_ISAVAILABLE(glTexCoord3sv)) nfglTexCoord3sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLTEXCOORD3XOES: D(funcname = "glTexCoord3xOES"); if (GL_ISAVAILABLE(glTexCoord3xOES)) nfglTexCoord3xOES( getStackedParameter(0), /* GLfixed s */ getStackedParameter(1), /* GLfixed t */ getStackedParameter(2) /* GLfixed r */); break; case NFOSMESA_GLTEXCOORD3XVOES: D(funcname = "glTexCoord3xvOES"); if (GL_ISAVAILABLE(glTexCoord3xvOES)) nfglTexCoord3xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLTEXCOORD4BOES: D(funcname = "glTexCoord4bOES"); if (GL_ISAVAILABLE(glTexCoord4bOES)) nfglTexCoord4bOES( getStackedParameter(0), /* GLbyte32 s */ getStackedParameter(1), /* GLbyte32 t */ getStackedParameter(2), /* GLbyte32 r */ getStackedParameter(3) /* GLbyte32 q */); break; case NFOSMESA_GLTEXCOORD4BVOES: D(funcname = "glTexCoord4bvOES"); if (GL_ISAVAILABLE(glTexCoord4bvOES)) nfglTexCoord4bvOES( getStackedPointer(0, const GLbyte *) /* const GLbyte *coords */); break; case NFOSMESA_GLTEXCOORD4D: D(funcname = "glTexCoord4d"); if (GL_ISAVAILABLE(glTexCoord4d)) nfglTexCoord4d( getStackedDouble(0), /* GLdouble s */ getStackedDouble(2), /* GLdouble t */ getStackedDouble(4), /* GLdouble r */ getStackedDouble(6) /* GLdouble q */); break; case NFOSMESA_GLTEXCOORD4DV: D(funcname = "glTexCoord4dv"); if (GL_ISAVAILABLE(glTexCoord4dv)) nfglTexCoord4dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLTEXCOORD4F: D(funcname = "glTexCoord4f"); if (GL_ISAVAILABLE(glTexCoord4f)) nfglTexCoord4f( getStackedFloat(0), /* GLfloat s */ getStackedFloat(1), /* GLfloat t */ getStackedFloat(2), /* GLfloat r */ getStackedFloat(3) /* GLfloat q */); break; case NFOSMESA_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUN: D(funcname = "glTexCoord4fColor4fNormal3fVertex4fSUN"); if (GL_ISAVAILABLE(glTexCoord4fColor4fNormal3fVertex4fSUN)) nfglTexCoord4fColor4fNormal3fVertex4fSUN( getStackedFloat(0), /* GLfloat s */ getStackedFloat(1), /* GLfloat t */ getStackedFloat(2), /* GLfloat p */ getStackedFloat(3), /* GLfloat q */ getStackedFloat(4), /* GLfloat r */ getStackedFloat(5), /* GLfloat g */ getStackedFloat(6), /* GLfloat b */ getStackedFloat(7), /* GLfloat a */ getStackedFloat(8), /* GLfloat nx */ getStackedFloat(9), /* GLfloat ny */ getStackedFloat(10), /* GLfloat nz */ getStackedFloat(11), /* GLfloat x */ getStackedFloat(12), /* GLfloat y */ getStackedFloat(13), /* GLfloat z */ getStackedFloat(14) /* GLfloat w */); break; case NFOSMESA_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUN: D(funcname = "glTexCoord4fColor4fNormal3fVertex4fvSUN"); if (GL_ISAVAILABLE(glTexCoord4fColor4fNormal3fVertex4fvSUN)) nfglTexCoord4fColor4fNormal3fVertex4fvSUN( getStackedPointer(0, const GLfloat *), /* const GLfloat *tc */ getStackedPointer(1, const GLfloat *), /* const GLfloat *c */ getStackedPointer(2, const GLfloat *), /* const GLfloat *n */ getStackedPointer(3, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLTEXCOORD4FVERTEX4FSUN: D(funcname = "glTexCoord4fVertex4fSUN"); if (GL_ISAVAILABLE(glTexCoord4fVertex4fSUN)) nfglTexCoord4fVertex4fSUN( getStackedFloat(0), /* GLfloat s */ getStackedFloat(1), /* GLfloat t */ getStackedFloat(2), /* GLfloat p */ getStackedFloat(3), /* GLfloat q */ getStackedFloat(4), /* GLfloat x */ getStackedFloat(5), /* GLfloat y */ getStackedFloat(6), /* GLfloat z */ getStackedFloat(7) /* GLfloat w */); break; case NFOSMESA_GLTEXCOORD4FVERTEX4FVSUN: D(funcname = "glTexCoord4fVertex4fvSUN"); if (GL_ISAVAILABLE(glTexCoord4fVertex4fvSUN)) nfglTexCoord4fVertex4fvSUN( getStackedPointer(0, const GLfloat *), /* const GLfloat *tc */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLTEXCOORD4FV: D(funcname = "glTexCoord4fv"); if (GL_ISAVAILABLE(glTexCoord4fv)) nfglTexCoord4fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLTEXCOORD4HNV: D(funcname = "glTexCoord4hNV"); if (GL_ISAVAILABLE(glTexCoord4hNV)) nfglTexCoord4hNV( getStackedParameter(0), /* GLhalfNV32 s */ getStackedParameter(1), /* GLhalfNV32 t */ getStackedParameter(2), /* GLhalfNV32 r */ getStackedParameter(3) /* GLhalfNV32 q */); break; case NFOSMESA_GLTEXCOORD4HVNV: D(funcname = "glTexCoord4hvNV"); if (GL_ISAVAILABLE(glTexCoord4hvNV)) nfglTexCoord4hvNV( getStackedPointer(0, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLTEXCOORD4I: D(funcname = "glTexCoord4i"); if (GL_ISAVAILABLE(glTexCoord4i)) nfglTexCoord4i( getStackedParameter(0), /* GLint s */ getStackedParameter(1), /* GLint t */ getStackedParameter(2), /* GLint r */ getStackedParameter(3) /* GLint q */); break; case NFOSMESA_GLTEXCOORD4IV: D(funcname = "glTexCoord4iv"); if (GL_ISAVAILABLE(glTexCoord4iv)) nfglTexCoord4iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLTEXCOORD4S: D(funcname = "glTexCoord4s"); if (GL_ISAVAILABLE(glTexCoord4s)) nfglTexCoord4s( getStackedParameter(0), /* GLshort32 s */ getStackedParameter(1), /* GLshort32 t */ getStackedParameter(2), /* GLshort32 r */ getStackedParameter(3) /* GLshort32 q */); break; case NFOSMESA_GLTEXCOORD4SV: D(funcname = "glTexCoord4sv"); if (GL_ISAVAILABLE(glTexCoord4sv)) nfglTexCoord4sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLTEXCOORD4XOES: D(funcname = "glTexCoord4xOES"); if (GL_ISAVAILABLE(glTexCoord4xOES)) nfglTexCoord4xOES( getStackedParameter(0), /* GLfixed s */ getStackedParameter(1), /* GLfixed t */ getStackedParameter(2), /* GLfixed r */ getStackedParameter(3) /* GLfixed q */); break; case NFOSMESA_GLTEXCOORD4XVOES: D(funcname = "glTexCoord4xvOES"); if (GL_ISAVAILABLE(glTexCoord4xvOES)) nfglTexCoord4xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLTEXCOORDFORMATNV: D(funcname = "glTexCoordFormatNV"); if (GL_ISAVAILABLE(glTexCoordFormatNV)) nfglTexCoordFormatNV( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2) /* GLsizei stride */); break; case NFOSMESA_GLTEXCOORDP1UI: D(funcname = "glTexCoordP1ui"); if (GL_ISAVAILABLE(glTexCoordP1ui)) nfglTexCoordP1ui( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLuint coords */); break; case NFOSMESA_GLTEXCOORDP1UIV: D(funcname = "glTexCoordP1uiv"); if (GL_ISAVAILABLE(glTexCoordP1uiv)) nfglTexCoordP1uiv( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const GLuint *) /* const GLuint *coords */); break; case NFOSMESA_GLTEXCOORDP2UI: D(funcname = "glTexCoordP2ui"); if (GL_ISAVAILABLE(glTexCoordP2ui)) nfglTexCoordP2ui( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLuint coords */); break; case NFOSMESA_GLTEXCOORDP2UIV: D(funcname = "glTexCoordP2uiv"); if (GL_ISAVAILABLE(glTexCoordP2uiv)) nfglTexCoordP2uiv( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const GLuint *) /* const GLuint *coords */); break; case NFOSMESA_GLTEXCOORDP3UI: D(funcname = "glTexCoordP3ui"); if (GL_ISAVAILABLE(glTexCoordP3ui)) nfglTexCoordP3ui( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLuint coords */); break; case NFOSMESA_GLTEXCOORDP3UIV: D(funcname = "glTexCoordP3uiv"); if (GL_ISAVAILABLE(glTexCoordP3uiv)) nfglTexCoordP3uiv( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const GLuint *) /* const GLuint *coords */); break; case NFOSMESA_GLTEXCOORDP4UI: D(funcname = "glTexCoordP4ui"); if (GL_ISAVAILABLE(glTexCoordP4ui)) nfglTexCoordP4ui( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLuint coords */); break; case NFOSMESA_GLTEXCOORDP4UIV: D(funcname = "glTexCoordP4uiv"); if (GL_ISAVAILABLE(glTexCoordP4uiv)) nfglTexCoordP4uiv( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const GLuint *) /* const GLuint *coords */); break; case NFOSMESA_GLTEXCOORDPOINTER: D(funcname = "glTexCoordPointer"); if (GL_ISAVAILABLE(glTexCoordPointer)) nfglTexCoordPointer( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLsizei stride */ getStackedPointer(3, const GLvoid *) /* const GLvoid *pointer */); break; case NFOSMESA_GLTEXCOORDPOINTEREXT: D(funcname = "glTexCoordPointerEXT"); if (GL_ISAVAILABLE(glTexCoordPointerEXT)) nfglTexCoordPointerEXT( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLsizei stride */ getStackedParameter(3), /* GLsizei count */ getStackedPointer(4, const void *) /* const void *pointer */); break; case NFOSMESA_GLTEXCOORDPOINTERLISTIBM: D(funcname = "glTexCoordPointerListIBM"); if (GL_ISAVAILABLE(glTexCoordPointerListIBM)) nfglTexCoordPointerListIBM( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLint stride */ getStackedPointer(3, const void * *), /* const void * *pointer */ getStackedParameter(4) /* GLint ptrstride */); break; case NFOSMESA_GLTEXCOORDPOINTERVINTEL: D(funcname = "glTexCoordPointervINTEL"); if (GL_ISAVAILABLE(glTexCoordPointervINTEL)) nfglTexCoordPointervINTEL( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const void * *) /* const void * *pointer */); break; case NFOSMESA_GLTEXENVF: D(funcname = "glTexEnvf"); if (GL_ISAVAILABLE(glTexEnvf)) nfglTexEnvf( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat param */); break; case NFOSMESA_GLTEXENVFV: D(funcname = "glTexEnvfv"); if (GL_ISAVAILABLE(glTexEnvfv)) nfglTexEnvfv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLTEXENVI: D(funcname = "glTexEnvi"); if (GL_ISAVAILABLE(glTexEnvi)) nfglTexEnvi( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLTEXENVIV: D(funcname = "glTexEnviv"); if (GL_ISAVAILABLE(glTexEnviv)) nfglTexEnviv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLTEXENVXOES: D(funcname = "glTexEnvxOES"); if (GL_ISAVAILABLE(glTexEnvxOES)) nfglTexEnvxOES( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLfixed param */); break; case NFOSMESA_GLTEXENVXVOES: D(funcname = "glTexEnvxvOES"); if (GL_ISAVAILABLE(glTexEnvxvOES)) nfglTexEnvxvOES( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfixed *) /* const GLfixed *params */); break; case NFOSMESA_GLTEXFILTERFUNCSGIS: D(funcname = "glTexFilterFuncSGIS"); if (GL_ISAVAILABLE(glTexFilterFuncSGIS)) nfglTexFilterFuncSGIS( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum filter */ getStackedParameter(2), /* GLsizei n */ getStackedPointer(3, const GLfloat *) /* const GLfloat *weights */); break; case NFOSMESA_GLTEXGEND: D(funcname = "glTexGend"); if (GL_ISAVAILABLE(glTexGend)) nfglTexGend( getStackedParameter(0), /* GLenum coord */ getStackedParameter(1), /* GLenum pname */ getStackedDouble(2) /* GLdouble param */); break; case NFOSMESA_GLTEXGENDV: D(funcname = "glTexGendv"); if (GL_ISAVAILABLE(glTexGendv)) nfglTexGendv( getStackedParameter(0), /* GLenum coord */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLdouble *) /* const GLdouble *params */); break; case NFOSMESA_GLTEXGENF: D(funcname = "glTexGenf"); if (GL_ISAVAILABLE(glTexGenf)) nfglTexGenf( getStackedParameter(0), /* GLenum coord */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat param */); break; case NFOSMESA_GLTEXGENFV: D(funcname = "glTexGenfv"); if (GL_ISAVAILABLE(glTexGenfv)) nfglTexGenfv( getStackedParameter(0), /* GLenum coord */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLTEXGENI: D(funcname = "glTexGeni"); if (GL_ISAVAILABLE(glTexGeni)) nfglTexGeni( getStackedParameter(0), /* GLenum coord */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLTEXGENIV: D(funcname = "glTexGeniv"); if (GL_ISAVAILABLE(glTexGeniv)) nfglTexGeniv( getStackedParameter(0), /* GLenum coord */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLTEXGENXOES: D(funcname = "glTexGenxOES"); if (GL_ISAVAILABLE(glTexGenxOES)) nfglTexGenxOES( getStackedParameter(0), /* GLenum coord */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLfixed param */); break; case NFOSMESA_GLTEXGENXVOES: D(funcname = "glTexGenxvOES"); if (GL_ISAVAILABLE(glTexGenxvOES)) nfglTexGenxvOES( getStackedParameter(0), /* GLenum coord */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfixed *) /* const GLfixed *params */); break; case NFOSMESA_GLTEXIMAGE1D: D(funcname = "glTexImage1D"); if (GL_ISAVAILABLE(glTexImage1D)) nfglTexImage1D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLint border */ getStackedParameter(5), /* GLenum format */ getStackedParameter(6), /* GLenum type */ getStackedPointer(7, const GLvoid *) /* const GLvoid *pixels */); break; case NFOSMESA_GLTEXIMAGE2D: D(funcname = "glTexImage2D"); if (GL_ISAVAILABLE(glTexImage2D)) nfglTexImage2D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLint border */ getStackedParameter(6), /* GLenum format */ getStackedParameter(7), /* GLenum type */ getStackedPointer(8, const GLvoid *) /* const GLvoid *pixels */); break; case NFOSMESA_GLTEXIMAGE2DMULTISAMPLE: D(funcname = "glTexImage2DMultisample"); if (GL_ISAVAILABLE(glTexImage2DMultisample)) nfglTexImage2DMultisample( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei samples */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5) /* GLboolean32 fixedsamplelocations */); break; case NFOSMESA_GLTEXIMAGE2DMULTISAMPLECOVERAGENV: D(funcname = "glTexImage2DMultisampleCoverageNV"); if (GL_ISAVAILABLE(glTexImage2DMultisampleCoverageNV)) nfglTexImage2DMultisampleCoverageNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei coverageSamples */ getStackedParameter(2), /* GLsizei colorSamples */ getStackedParameter(3), /* GLint internalFormat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6) /* GLboolean32 fixedSampleLocations */); break; case NFOSMESA_GLTEXIMAGE3D: D(funcname = "glTexImage3D"); if (GL_ISAVAILABLE(glTexImage3D)) nfglTexImage3D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLsizei depth */ getStackedParameter(6), /* GLint border */ getStackedParameter(7), /* GLenum format */ getStackedParameter(8), /* GLenum type */ getStackedPointer(9, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXIMAGE3DEXT: D(funcname = "glTexImage3DEXT"); if (GL_ISAVAILABLE(glTexImage3DEXT)) nfglTexImage3DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLsizei depth */ getStackedParameter(6), /* GLint border */ getStackedParameter(7), /* GLenum format */ getStackedParameter(8), /* GLenum type */ getStackedPointer(9, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXIMAGE3DMULTISAMPLE: D(funcname = "glTexImage3DMultisample"); if (GL_ISAVAILABLE(glTexImage3DMultisample)) nfglTexImage3DMultisample( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei samples */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLsizei depth */ getStackedParameter(6) /* GLboolean32 fixedsamplelocations */); break; case NFOSMESA_GLTEXIMAGE3DMULTISAMPLECOVERAGENV: D(funcname = "glTexImage3DMultisampleCoverageNV"); if (GL_ISAVAILABLE(glTexImage3DMultisampleCoverageNV)) nfglTexImage3DMultisampleCoverageNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei coverageSamples */ getStackedParameter(2), /* GLsizei colorSamples */ getStackedParameter(3), /* GLint internalFormat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLsizei depth */ getStackedParameter(7) /* GLboolean32 fixedSampleLocations */); break; case NFOSMESA_GLTEXIMAGE4DSGIS: D(funcname = "glTexImage4DSGIS"); if (GL_ISAVAILABLE(glTexImage4DSGIS)) nfglTexImage4DSGIS( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLsizei depth */ getStackedParameter(6), /* GLsizei size4d */ getStackedParameter(7), /* GLint border */ getStackedParameter(8), /* GLenum format */ getStackedParameter(9), /* GLenum type */ getStackedPointer(10, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXPAGECOMMITMENTARB: D(funcname = "glTexPageCommitmentARB"); if (GL_ISAVAILABLE(glTexPageCommitmentARB)) nfglTexPageCommitmentARB( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLsizei depth */ getStackedParameter(8) /* GLboolean32 commit */); break; case NFOSMESA_GLTEXPARAMETERIIV: D(funcname = "glTexParameterIiv"); if (GL_ISAVAILABLE(glTexParameterIiv)) nfglTexParameterIiv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLTEXPARAMETERIIVEXT: D(funcname = "glTexParameterIivEXT"); if (GL_ISAVAILABLE(glTexParameterIivEXT)) nfglTexParameterIivEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLTEXPARAMETERIUIV: D(funcname = "glTexParameterIuiv"); if (GL_ISAVAILABLE(glTexParameterIuiv)) nfglTexParameterIuiv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLuint *) /* const GLuint *params */); break; case NFOSMESA_GLTEXPARAMETERIUIVEXT: D(funcname = "glTexParameterIuivEXT"); if (GL_ISAVAILABLE(glTexParameterIuivEXT)) nfglTexParameterIuivEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLuint *) /* const GLuint *params */); break; case NFOSMESA_GLTEXPARAMETERF: D(funcname = "glTexParameterf"); if (GL_ISAVAILABLE(glTexParameterf)) nfglTexParameterf( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat param */); break; case NFOSMESA_GLTEXPARAMETERFV: D(funcname = "glTexParameterfv"); if (GL_ISAVAILABLE(glTexParameterfv)) nfglTexParameterfv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLTEXPARAMETERI: D(funcname = "glTexParameteri"); if (GL_ISAVAILABLE(glTexParameteri)) nfglTexParameteri( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLTEXPARAMETERIV: D(funcname = "glTexParameteriv"); if (GL_ISAVAILABLE(glTexParameteriv)) nfglTexParameteriv( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLTEXPARAMETERXOES: D(funcname = "glTexParameterxOES"); if (GL_ISAVAILABLE(glTexParameterxOES)) nfglTexParameterxOES( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLfixed param */); break; case NFOSMESA_GLTEXPARAMETERXVOES: D(funcname = "glTexParameterxvOES"); if (GL_ISAVAILABLE(glTexParameterxvOES)) nfglTexParameterxvOES( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfixed *) /* const GLfixed *params */); break; case NFOSMESA_GLTEXRENDERBUFFERNV: D(funcname = "glTexRenderbufferNV"); if (GL_ISAVAILABLE(glTexRenderbufferNV)) nfglTexRenderbufferNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1) /* GLuint renderbuffer */); break; case NFOSMESA_GLTEXSCISSORFUNCINTEL: D(funcname = "glTexScissorFuncINTEL"); if (GL_ISAVAILABLE(glTexScissorFuncINTEL)) nfglTexScissorFuncINTEL( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum lfunc */ getStackedParameter(2) /* GLenum hfunc */); break; case NFOSMESA_GLTEXSCISSORINTEL: D(funcname = "glTexScissorINTEL"); if (GL_ISAVAILABLE(glTexScissorINTEL)) nfglTexScissorINTEL( getStackedParameter(0), /* GLenum target */ getStackedFloat(1), /* GLclampf tlow */ getStackedFloat(2) /* GLclampf thigh */); break; case NFOSMESA_GLTEXSTORAGE1D: D(funcname = "glTexStorage1D"); if (GL_ISAVAILABLE(glTexStorage1D)) nfglTexStorage1D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei levels */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3) /* GLsizei width */); break; case NFOSMESA_GLTEXSTORAGE2D: D(funcname = "glTexStorage2D"); if (GL_ISAVAILABLE(glTexStorage2D)) nfglTexStorage2D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei levels */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4) /* GLsizei height */); break; case NFOSMESA_GLTEXSTORAGE2DMULTISAMPLE: D(funcname = "glTexStorage2DMultisample"); if (GL_ISAVAILABLE(glTexStorage2DMultisample)) nfglTexStorage2DMultisample( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei samples */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5) /* GLboolean32 fixedsamplelocations */); break; case NFOSMESA_GLTEXSTORAGE3D: D(funcname = "glTexStorage3D"); if (GL_ISAVAILABLE(glTexStorage3D)) nfglTexStorage3D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei levels */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5) /* GLsizei depth */); break; case NFOSMESA_GLTEXSTORAGE3DMULTISAMPLE: D(funcname = "glTexStorage3DMultisample"); if (GL_ISAVAILABLE(glTexStorage3DMultisample)) nfglTexStorage3DMultisample( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei samples */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLsizei depth */ getStackedParameter(6) /* GLboolean32 fixedsamplelocations */); break; case NFOSMESA_GLTEXSTORAGEMEM1DEXT: D(funcname = "glTexStorageMem1DEXT"); if (GL_ISAVAILABLE(glTexStorageMem1DEXT)) nfglTexStorageMem1DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei levels */ getStackedParameter(2), /* GLenum internalFormat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLuint memory */ getStackedParameter64(5) /* GLuint64 offset */); break; case NFOSMESA_GLTEXSTORAGEMEM2DEXT: D(funcname = "glTexStorageMem2DEXT"); if (GL_ISAVAILABLE(glTexStorageMem2DEXT)) nfglTexStorageMem2DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei levels */ getStackedParameter(2), /* GLenum internalFormat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLuint memory */ getStackedParameter64(6) /* GLuint64 offset */); break; case NFOSMESA_GLTEXSTORAGEMEM2DMULTISAMPLEEXT: D(funcname = "glTexStorageMem2DMultisampleEXT"); if (GL_ISAVAILABLE(glTexStorageMem2DMultisampleEXT)) nfglTexStorageMem2DMultisampleEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei samples */ getStackedParameter(2), /* GLenum internalFormat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLboolean32 fixedSampleLocations */ getStackedParameter(6), /* GLuint memory */ getStackedParameter64(7) /* GLuint64 offset */); break; case NFOSMESA_GLTEXSTORAGEMEM3DEXT: D(funcname = "glTexStorageMem3DEXT"); if (GL_ISAVAILABLE(glTexStorageMem3DEXT)) nfglTexStorageMem3DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei levels */ getStackedParameter(2), /* GLenum internalFormat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLsizei depth */ getStackedParameter(6), /* GLuint memory */ getStackedParameter64(7) /* GLuint64 offset */); break; case NFOSMESA_GLTEXSTORAGEMEM3DMULTISAMPLEEXT: D(funcname = "glTexStorageMem3DMultisampleEXT"); if (GL_ISAVAILABLE(glTexStorageMem3DMultisampleEXT)) nfglTexStorageMem3DMultisampleEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei samples */ getStackedParameter(2), /* GLenum internalFormat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLsizei depth */ getStackedParameter(6), /* GLboolean32 fixedSampleLocations */ getStackedParameter(7), /* GLuint memory */ getStackedParameter64(8) /* GLuint64 offset */); break; case NFOSMESA_GLTEXSTORAGESPARSEAMD: D(funcname = "glTexStorageSparseAMD"); if (GL_ISAVAILABLE(glTexStorageSparseAMD)) nfglTexStorageSparseAMD( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLenum internalFormat */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3), /* GLsizei height */ getStackedParameter(4), /* GLsizei depth */ getStackedParameter(5), /* GLsizei layers */ getStackedParameter(6) /* GLbitfield flags */); break; case NFOSMESA_GLTEXSUBIMAGE1D: D(funcname = "glTexSubImage1D"); if (GL_ISAVAILABLE(glTexSubImage1D)) nfglTexSubImage1D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLenum type */ getStackedPointer(6, const GLvoid *) /* const GLvoid *pixels */); break; case NFOSMESA_GLTEXSUBIMAGE1DEXT: D(funcname = "glTexSubImage1DEXT"); if (GL_ISAVAILABLE(glTexSubImage1DEXT)) nfglTexSubImage1DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLenum type */ getStackedPointer(6, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXSUBIMAGE2D: D(funcname = "glTexSubImage2D"); if (GL_ISAVAILABLE(glTexSubImage2D)) nfglTexSubImage2D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLenum format */ getStackedParameter(7), /* GLenum type */ getStackedPointer(8, const GLvoid *) /* const GLvoid *pixels */); break; case NFOSMESA_GLTEXSUBIMAGE2DEXT: D(funcname = "glTexSubImage2DEXT"); if (GL_ISAVAILABLE(glTexSubImage2DEXT)) nfglTexSubImage2DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLenum format */ getStackedParameter(7), /* GLenum type */ getStackedPointer(8, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXSUBIMAGE3D: D(funcname = "glTexSubImage3D"); if (GL_ISAVAILABLE(glTexSubImage3D)) nfglTexSubImage3D( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLsizei depth */ getStackedParameter(8), /* GLenum format */ getStackedParameter(9), /* GLenum type */ getStackedPointer(10, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXSUBIMAGE3DEXT: D(funcname = "glTexSubImage3DEXT"); if (GL_ISAVAILABLE(glTexSubImage3DEXT)) nfglTexSubImage3DEXT( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLsizei depth */ getStackedParameter(8), /* GLenum format */ getStackedParameter(9), /* GLenum type */ getStackedPointer(10, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXSUBIMAGE4DSGIS: D(funcname = "glTexSubImage4DSGIS"); if (GL_ISAVAILABLE(glTexSubImage4DSGIS)) nfglTexSubImage4DSGIS( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLint woffset */ getStackedParameter(6), /* GLsizei width */ getStackedParameter(7), /* GLsizei height */ getStackedParameter(8), /* GLsizei depth */ getStackedParameter(9), /* GLsizei size4d */ getStackedParameter(10), /* GLenum format */ getStackedParameter(11), /* GLenum type */ getStackedPointer(12, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXTUREBARRIER: D(funcname = "glTextureBarrier"); if (GL_ISAVAILABLE(glTextureBarrier)) nfglTextureBarrier(); break; case NFOSMESA_GLTEXTUREBARRIERNV: D(funcname = "glTextureBarrierNV"); if (GL_ISAVAILABLE(glTextureBarrierNV)) nfglTextureBarrierNV(); break; case NFOSMESA_GLTEXTUREBUFFER: D(funcname = "glTextureBuffer"); if (GL_ISAVAILABLE(glTextureBuffer)) nfglTextureBuffer( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2) /* GLuint buffer */); break; case NFOSMESA_GLTEXTUREBUFFEREXT: D(funcname = "glTextureBufferEXT"); if (GL_ISAVAILABLE(glTextureBufferEXT)) nfglTextureBufferEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3) /* GLuint buffer */); break; case NFOSMESA_GLTEXTUREBUFFERRANGE: D(funcname = "glTextureBufferRange"); if (GL_ISAVAILABLE(glTextureBufferRange)) nfglTextureBufferRange( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum internalformat */ getStackedParameter(2), /* GLuint buffer */ getStackedParameter(3), /* GLintptr offset */ getStackedParameter(4) /* GLsizeiptr size */); break; case NFOSMESA_GLTEXTUREBUFFERRANGEEXT: D(funcname = "glTextureBufferRangeEXT"); if (GL_ISAVAILABLE(glTextureBufferRangeEXT)) nfglTextureBufferRangeEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLuint buffer */ getStackedParameter(4), /* GLintptr offset */ getStackedParameter(5) /* GLsizeiptr size */); break; case NFOSMESA_GLTEXTURECOLORMASKSGIS: D(funcname = "glTextureColorMaskSGIS"); if (GL_ISAVAILABLE(glTextureColorMaskSGIS)) nfglTextureColorMaskSGIS( getStackedParameter(0), /* GLboolean32 red */ getStackedParameter(1), /* GLboolean32 green */ getStackedParameter(2), /* GLboolean32 blue */ getStackedParameter(3) /* GLboolean32 alpha */); break; case NFOSMESA_GLTEXTUREFOGSGIX: D(funcname = "glTextureFogSGIX"); if (GL_ISAVAILABLE(glTextureFogSGIX)) nfglTextureFogSGIX( getStackedParameter(0) /* GLenum pname */); break; case NFOSMESA_GLTEXTUREIMAGE1DEXT: D(funcname = "glTextureImage1DEXT"); if (GL_ISAVAILABLE(glTextureImage1DEXT)) nfglTextureImage1DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLint border */ getStackedParameter(6), /* GLenum format */ getStackedParameter(7), /* GLenum type */ getStackedPointer(8, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXTUREIMAGE2DEXT: D(funcname = "glTextureImage2DEXT"); if (GL_ISAVAILABLE(glTextureImage2DEXT)) nfglTextureImage2DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLint border */ getStackedParameter(7), /* GLenum format */ getStackedParameter(8), /* GLenum type */ getStackedPointer(9, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXTUREIMAGE2DMULTISAMPLECOVERAGENV: D(funcname = "glTextureImage2DMultisampleCoverageNV"); if (GL_ISAVAILABLE(glTextureImage2DMultisampleCoverageNV)) nfglTextureImage2DMultisampleCoverageNV( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLsizei coverageSamples */ getStackedParameter(3), /* GLsizei colorSamples */ getStackedParameter(4), /* GLint internalFormat */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7) /* GLboolean32 fixedSampleLocations */); break; case NFOSMESA_GLTEXTUREIMAGE2DMULTISAMPLENV: D(funcname = "glTextureImage2DMultisampleNV"); if (GL_ISAVAILABLE(glTextureImage2DMultisampleNV)) nfglTextureImage2DMultisampleNV( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLsizei samples */ getStackedParameter(3), /* GLint internalFormat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6) /* GLboolean32 fixedSampleLocations */); break; case NFOSMESA_GLTEXTUREIMAGE3DEXT: D(funcname = "glTextureImage3DEXT"); if (GL_ISAVAILABLE(glTextureImage3DEXT)) nfglTextureImage3DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLsizei depth */ getStackedParameter(7), /* GLint border */ getStackedParameter(8), /* GLenum format */ getStackedParameter(9), /* GLenum type */ getStackedPointer(10, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXTUREIMAGE3DMULTISAMPLECOVERAGENV: D(funcname = "glTextureImage3DMultisampleCoverageNV"); if (GL_ISAVAILABLE(glTextureImage3DMultisampleCoverageNV)) nfglTextureImage3DMultisampleCoverageNV( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLsizei coverageSamples */ getStackedParameter(3), /* GLsizei colorSamples */ getStackedParameter(4), /* GLint internalFormat */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLsizei depth */ getStackedParameter(8) /* GLboolean32 fixedSampleLocations */); break; case NFOSMESA_GLTEXTUREIMAGE3DMULTISAMPLENV: D(funcname = "glTextureImage3DMultisampleNV"); if (GL_ISAVAILABLE(glTextureImage3DMultisampleNV)) nfglTextureImage3DMultisampleNV( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLsizei samples */ getStackedParameter(3), /* GLint internalFormat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLsizei depth */ getStackedParameter(7) /* GLboolean32 fixedSampleLocations */); break; case NFOSMESA_GLTEXTURELIGHTEXT: D(funcname = "glTextureLightEXT"); if (GL_ISAVAILABLE(glTextureLightEXT)) nfglTextureLightEXT( getStackedParameter(0) /* GLenum pname */); break; case NFOSMESA_GLTEXTUREMATERIALEXT: D(funcname = "glTextureMaterialEXT"); if (GL_ISAVAILABLE(glTextureMaterialEXT)) nfglTextureMaterialEXT( getStackedParameter(0), /* GLenum face */ getStackedParameter(1) /* GLenum mode */); break; case NFOSMESA_GLTEXTURENORMALEXT: D(funcname = "glTextureNormalEXT"); if (GL_ISAVAILABLE(glTextureNormalEXT)) nfglTextureNormalEXT( getStackedParameter(0) /* GLenum mode */); break; case NFOSMESA_GLTEXTUREPAGECOMMITMENTEXT: D(funcname = "glTexturePageCommitmentEXT"); if (GL_ISAVAILABLE(glTexturePageCommitmentEXT)) nfglTexturePageCommitmentEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLsizei depth */ getStackedParameter(8) /* GLboolean32 commit */); break; case NFOSMESA_GLTEXTUREPARAMETERIIV: D(funcname = "glTextureParameterIiv"); if (GL_ISAVAILABLE(glTextureParameterIiv)) nfglTextureParameterIiv( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLTEXTUREPARAMETERIIVEXT: D(funcname = "glTextureParameterIivEXT"); if (GL_ISAVAILABLE(glTextureParameterIivEXT)) nfglTextureParameterIivEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLTEXTUREPARAMETERIUIV: D(funcname = "glTextureParameterIuiv"); if (GL_ISAVAILABLE(glTextureParameterIuiv)) nfglTextureParameterIuiv( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLuint *) /* const GLuint *params */); break; case NFOSMESA_GLTEXTUREPARAMETERIUIVEXT: D(funcname = "glTextureParameterIuivEXT"); if (GL_ISAVAILABLE(glTextureParameterIuivEXT)) nfglTextureParameterIuivEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLuint *) /* const GLuint *params */); break; case NFOSMESA_GLTEXTUREPARAMETERF: D(funcname = "glTextureParameterf"); if (GL_ISAVAILABLE(glTextureParameterf)) nfglTextureParameterf( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum pname */ getStackedFloat(2) /* GLfloat param */); break; case NFOSMESA_GLTEXTUREPARAMETERFEXT: D(funcname = "glTextureParameterfEXT"); if (GL_ISAVAILABLE(glTextureParameterfEXT)) nfglTextureParameterfEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedFloat(3) /* GLfloat param */); break; case NFOSMESA_GLTEXTUREPARAMETERFV: D(funcname = "glTextureParameterfv"); if (GL_ISAVAILABLE(glTextureParameterfv)) nfglTextureParameterfv( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLfloat *) /* const GLfloat *param */); break; case NFOSMESA_GLTEXTUREPARAMETERFVEXT: D(funcname = "glTextureParameterfvEXT"); if (GL_ISAVAILABLE(glTextureParameterfvEXT)) nfglTextureParameterfvEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLTEXTUREPARAMETERI: D(funcname = "glTextureParameteri"); if (GL_ISAVAILABLE(glTextureParameteri)) nfglTextureParameteri( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLTEXTUREPARAMETERIEXT: D(funcname = "glTextureParameteriEXT"); if (GL_ISAVAILABLE(glTextureParameteriEXT)) nfglTextureParameteriEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedParameter(3) /* GLint param */); break; case NFOSMESA_GLTEXTUREPARAMETERIV: D(funcname = "glTextureParameteriv"); if (GL_ISAVAILABLE(glTextureParameteriv)) nfglTextureParameteriv( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum pname */ getStackedPointer(2, const GLint *) /* const GLint *param */); break; case NFOSMESA_GLTEXTUREPARAMETERIVEXT: D(funcname = "glTextureParameterivEXT"); if (GL_ISAVAILABLE(glTextureParameterivEXT)) nfglTextureParameterivEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLint *) /* const GLint *params */); break; #if 0 case NFOSMESA_GLTEXTURERANGEAPPLE: D(funcname = "glTextureRangeAPPLE"); if (GL_ISAVAILABLE(glTextureRangeAPPLE)) nfglTextureRangeAPPLE( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLsizei length */ getStackedPointer(2, const void *) /* const void *pointer */); break; #endif case NFOSMESA_GLTEXTURERENDERBUFFEREXT: D(funcname = "glTextureRenderbufferEXT"); if (GL_ISAVAILABLE(glTextureRenderbufferEXT)) nfglTextureRenderbufferEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2) /* GLuint renderbuffer */); break; case NFOSMESA_GLTEXTURESTORAGE1D: D(funcname = "glTextureStorage1D"); if (GL_ISAVAILABLE(glTextureStorage1D)) nfglTextureStorage1D( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLsizei levels */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3) /* GLsizei width */); break; case NFOSMESA_GLTEXTURESTORAGE1DEXT: D(funcname = "glTextureStorage1DEXT"); if (GL_ISAVAILABLE(glTextureStorage1DEXT)) nfglTextureStorage1DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLsizei levels */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4) /* GLsizei width */); break; case NFOSMESA_GLTEXTURESTORAGE2D: D(funcname = "glTextureStorage2D"); if (GL_ISAVAILABLE(glTextureStorage2D)) nfglTextureStorage2D( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLsizei levels */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4) /* GLsizei height */); break; case NFOSMESA_GLTEXTURESTORAGE2DEXT: D(funcname = "glTextureStorage2DEXT"); if (GL_ISAVAILABLE(glTextureStorage2DEXT)) nfglTextureStorage2DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLsizei levels */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5) /* GLsizei height */); break; case NFOSMESA_GLTEXTURESTORAGE2DMULTISAMPLE: D(funcname = "glTextureStorage2DMultisample"); if (GL_ISAVAILABLE(glTextureStorage2DMultisample)) nfglTextureStorage2DMultisample( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLsizei samples */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5) /* GLboolean32 fixedsamplelocations */); break; case NFOSMESA_GLTEXTURESTORAGE2DMULTISAMPLEEXT: D(funcname = "glTextureStorage2DMultisampleEXT"); if (GL_ISAVAILABLE(glTextureStorage2DMultisampleEXT)) nfglTextureStorage2DMultisampleEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLsizei samples */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6) /* GLboolean32 fixedsamplelocations */); break; case NFOSMESA_GLTEXTURESTORAGE3D: D(funcname = "glTextureStorage3D"); if (GL_ISAVAILABLE(glTextureStorage3D)) nfglTextureStorage3D( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLsizei levels */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5) /* GLsizei depth */); break; case NFOSMESA_GLTEXTURESTORAGE3DEXT: D(funcname = "glTextureStorage3DEXT"); if (GL_ISAVAILABLE(glTextureStorage3DEXT)) nfglTextureStorage3DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLsizei levels */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6) /* GLsizei depth */); break; case NFOSMESA_GLTEXTURESTORAGE3DMULTISAMPLE: D(funcname = "glTextureStorage3DMultisample"); if (GL_ISAVAILABLE(glTextureStorage3DMultisample)) nfglTextureStorage3DMultisample( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLsizei samples */ getStackedParameter(2), /* GLenum internalformat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLsizei depth */ getStackedParameter(6) /* GLboolean32 fixedsamplelocations */); break; case NFOSMESA_GLTEXTURESTORAGE3DMULTISAMPLEEXT: D(funcname = "glTextureStorage3DMultisampleEXT"); if (GL_ISAVAILABLE(glTextureStorage3DMultisampleEXT)) nfglTextureStorage3DMultisampleEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLsizei samples */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLsizei depth */ getStackedParameter(7) /* GLboolean32 fixedsamplelocations */); break; case NFOSMESA_GLTEXTURESTORAGEMEM1DEXT: D(funcname = "glTextureStorageMem1DEXT"); if (GL_ISAVAILABLE(glTextureStorageMem1DEXT)) nfglTextureStorageMem1DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLsizei levels */ getStackedParameter(2), /* GLenum internalFormat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLuint memory */ getStackedParameter64(5) /* GLuint64 offset */); break; case NFOSMESA_GLTEXTURESTORAGEMEM2DEXT: D(funcname = "glTextureStorageMem2DEXT"); if (GL_ISAVAILABLE(glTextureStorageMem2DEXT)) nfglTextureStorageMem2DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLsizei levels */ getStackedParameter(2), /* GLenum internalFormat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLuint memory */ getStackedParameter64(6) /* GLuint64 offset */); break; case NFOSMESA_GLTEXTURESTORAGEMEM2DMULTISAMPLEEXT: D(funcname = "glTextureStorageMem2DMultisampleEXT"); if (GL_ISAVAILABLE(glTextureStorageMem2DMultisampleEXT)) nfglTextureStorageMem2DMultisampleEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLsizei samples */ getStackedParameter(2), /* GLenum internalFormat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLboolean32 fixedSampleLocations */ getStackedParameter(6), /* GLuint memory */ getStackedParameter64(7) /* GLuint64 offset */); break; case NFOSMESA_GLTEXTURESTORAGEMEM3DEXT: D(funcname = "glTextureStorageMem3DEXT"); if (GL_ISAVAILABLE(glTextureStorageMem3DEXT)) nfglTextureStorageMem3DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLsizei levels */ getStackedParameter(2), /* GLenum internalFormat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLsizei depth */ getStackedParameter(6), /* GLuint memory */ getStackedParameter64(7) /* GLuint64 offset */); break; case NFOSMESA_GLTEXTURESTORAGEMEM3DMULTISAMPLEEXT: D(funcname = "glTextureStorageMem3DMultisampleEXT"); if (GL_ISAVAILABLE(glTextureStorageMem3DMultisampleEXT)) nfglTextureStorageMem3DMultisampleEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLsizei samples */ getStackedParameter(2), /* GLenum internalFormat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLsizei depth */ getStackedParameter(6), /* GLboolean32 fixedSampleLocations */ getStackedParameter(7), /* GLuint memory */ getStackedParameter64(8) /* GLuint64 offset */); break; case NFOSMESA_GLTEXTURESTORAGESPARSEAMD: D(funcname = "glTextureStorageSparseAMD"); if (GL_ISAVAILABLE(glTextureStorageSparseAMD)) nfglTextureStorageSparseAMD( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLenum internalFormat */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLsizei height */ getStackedParameter(5), /* GLsizei depth */ getStackedParameter(6), /* GLsizei layers */ getStackedParameter(7) /* GLbitfield flags */); break; case NFOSMESA_GLTEXTURESUBIMAGE1D: D(funcname = "glTextureSubImage1D"); if (GL_ISAVAILABLE(glTextureSubImage1D)) nfglTextureSubImage1D( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLsizei width */ getStackedParameter(4), /* GLenum format */ getStackedParameter(5), /* GLenum type */ getStackedPointer(6, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXTURESUBIMAGE1DEXT: D(funcname = "glTextureSubImage1DEXT"); if (GL_ISAVAILABLE(glTextureSubImage1DEXT)) nfglTextureSubImage1DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLenum format */ getStackedParameter(6), /* GLenum type */ getStackedPointer(7, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXTURESUBIMAGE2D: D(funcname = "glTextureSubImage2D"); if (GL_ISAVAILABLE(glTextureSubImage2D)) nfglTextureSubImage2D( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLsizei width */ getStackedParameter(5), /* GLsizei height */ getStackedParameter(6), /* GLenum format */ getStackedParameter(7), /* GLenum type */ getStackedPointer(8, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXTURESUBIMAGE2DEXT: D(funcname = "glTextureSubImage2DEXT"); if (GL_ISAVAILABLE(glTextureSubImage2DEXT)) nfglTextureSubImage2DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLint yoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLenum format */ getStackedParameter(8), /* GLenum type */ getStackedPointer(9, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXTURESUBIMAGE3D: D(funcname = "glTextureSubImage3D"); if (GL_ISAVAILABLE(glTextureSubImage3D)) nfglTextureSubImage3D( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLint level */ getStackedParameter(2), /* GLint xoffset */ getStackedParameter(3), /* GLint yoffset */ getStackedParameter(4), /* GLint zoffset */ getStackedParameter(5), /* GLsizei width */ getStackedParameter(6), /* GLsizei height */ getStackedParameter(7), /* GLsizei depth */ getStackedParameter(8), /* GLenum format */ getStackedParameter(9), /* GLenum type */ getStackedPointer(10, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXTURESUBIMAGE3DEXT: D(funcname = "glTextureSubImage3DEXT"); if (GL_ISAVAILABLE(glTextureSubImage3DEXT)) nfglTextureSubImage3DEXT( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLint level */ getStackedParameter(3), /* GLint xoffset */ getStackedParameter(4), /* GLint yoffset */ getStackedParameter(5), /* GLint zoffset */ getStackedParameter(6), /* GLsizei width */ getStackedParameter(7), /* GLsizei height */ getStackedParameter(8), /* GLsizei depth */ getStackedParameter(9), /* GLenum format */ getStackedParameter(10), /* GLenum type */ getStackedPointer(11, const void *) /* const void *pixels */); break; case NFOSMESA_GLTEXTUREVIEW: D(funcname = "glTextureView"); if (GL_ISAVAILABLE(glTextureView)) nfglTextureView( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLuint origtexture */ getStackedParameter(3), /* GLenum internalformat */ getStackedParameter(4), /* GLuint minlevel */ getStackedParameter(5), /* GLuint numlevels */ getStackedParameter(6), /* GLuint minlayer */ getStackedParameter(7) /* GLuint numlayers */); break; case NFOSMESA_GLTRACEASSERTATTRIBMESA: D(funcname = "glTraceAssertAttribMESA"); if (GL_ISAVAILABLE(glTraceAssertAttribMESA)) nfglTraceAssertAttribMESA( getStackedParameter(0) /* GLbitfield attribMask */); break; case NFOSMESA_GLTRACECOMMENTMESA: D(funcname = "glTraceCommentMESA"); if (GL_ISAVAILABLE(glTraceCommentMESA)) nfglTraceCommentMESA( getStackedPointer(0, const GLubyte *) /* const GLubyte *comment */); break; case NFOSMESA_GLTRACELISTMESA: D(funcname = "glTraceListMESA"); if (GL_ISAVAILABLE(glTraceListMESA)) nfglTraceListMESA( getStackedParameter(0), /* GLuint name */ getStackedPointer(1, const GLubyte *) /* const GLubyte *comment */); break; case NFOSMESA_GLTRACEPOINTERMESA: D(funcname = "glTracePointerMESA"); if (GL_ISAVAILABLE(glTracePointerMESA)) nfglTracePointerMESA( getStackedPointer(0, GLvoid *), /* GLvoid *pointer */ getStackedPointer(1, const GLubyte *) /* const GLubyte *comment */); break; case NFOSMESA_GLTRACEPOINTERRANGEMESA: D(funcname = "glTracePointerRangeMESA"); if (GL_ISAVAILABLE(glTracePointerRangeMESA)) nfglTracePointerRangeMESA( getStackedPointer(0, const GLvoid *), /* const GLvoid *first */ getStackedPointer(1, const GLvoid *), /* const GLvoid *last */ getStackedPointer(2, const GLubyte *) /* const GLubyte *comment */); break; case NFOSMESA_GLTRACETEXTUREMESA: D(funcname = "glTraceTextureMESA"); if (GL_ISAVAILABLE(glTraceTextureMESA)) nfglTraceTextureMESA( getStackedParameter(0), /* GLuint name */ getStackedPointer(1, const GLubyte *) /* const GLubyte *comment */); break; case NFOSMESA_GLTRACKMATRIXNV: D(funcname = "glTrackMatrixNV"); if (GL_ISAVAILABLE(glTrackMatrixNV)) nfglTrackMatrixNV( getStackedParameter(0), /* GLenum target */ getStackedParameter(1), /* GLuint address */ getStackedParameter(2), /* GLenum matrix */ getStackedParameter(3) /* GLenum transform */); break; case NFOSMESA_GLTRANSFORMFEEDBACKATTRIBSNV: D(funcname = "glTransformFeedbackAttribsNV"); if (GL_ISAVAILABLE(glTransformFeedbackAttribsNV)) nfglTransformFeedbackAttribsNV( getStackedParameter(0), /* GLsizei count */ getStackedPointer(1, const GLint *), /* const GLint *attribs */ getStackedParameter(2) /* GLenum bufferMode */); break; case NFOSMESA_GLTRANSFORMFEEDBACKBUFFERBASE: D(funcname = "glTransformFeedbackBufferBase"); if (GL_ISAVAILABLE(glTransformFeedbackBufferBase)) nfglTransformFeedbackBufferBase( getStackedParameter(0), /* GLuint xfb */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2) /* GLuint buffer */); break; case NFOSMESA_GLTRANSFORMFEEDBACKBUFFERRANGE: D(funcname = "glTransformFeedbackBufferRange"); if (GL_ISAVAILABLE(glTransformFeedbackBufferRange)) nfglTransformFeedbackBufferRange( getStackedParameter(0), /* GLuint xfb */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2), /* GLuint buffer */ getStackedParameter(3), /* GLintptr offset */ getStackedParameter(4) /* GLsizeiptr size */); break; case NFOSMESA_GLTRANSFORMFEEDBACKSTREAMATTRIBSNV: D(funcname = "glTransformFeedbackStreamAttribsNV"); if (GL_ISAVAILABLE(glTransformFeedbackStreamAttribsNV)) nfglTransformFeedbackStreamAttribsNV( getStackedParameter(0), /* GLsizei count */ getStackedPointer(1, const GLint *), /* const GLint *attribs */ getStackedParameter(2), /* GLsizei nbuffers */ getStackedPointer(3, const GLint *), /* const GLint *bufstreams */ getStackedParameter(4) /* GLenum bufferMode */); break; case NFOSMESA_GLTRANSFORMFEEDBACKVARYINGS: D(funcname = "glTransformFeedbackVaryings"); if (GL_ISAVAILABLE(glTransformFeedbackVaryings)) nfglTransformFeedbackVaryings( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLchar *const *), /* const GLchar *const *varyings */ getStackedParameter(3) /* GLenum bufferMode */); break; case NFOSMESA_GLTRANSFORMFEEDBACKVARYINGSEXT: D(funcname = "glTransformFeedbackVaryingsEXT"); if (GL_ISAVAILABLE(glTransformFeedbackVaryingsEXT)) nfglTransformFeedbackVaryingsEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLchar *const *), /* const GLchar *const *varyings */ getStackedParameter(3) /* GLenum bufferMode */); break; case NFOSMESA_GLTRANSFORMFEEDBACKVARYINGSNV: D(funcname = "glTransformFeedbackVaryingsNV"); if (GL_ISAVAILABLE(glTransformFeedbackVaryingsNV)) nfglTransformFeedbackVaryingsNV( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint *), /* const GLint *locations */ getStackedParameter(3) /* GLenum bufferMode */); break; case NFOSMESA_GLTRANSFORMPATHNV: D(funcname = "glTransformPathNV"); if (GL_ISAVAILABLE(glTransformPathNV)) nfglTransformPathNV( getStackedParameter(0), /* GLuint resultPath */ getStackedParameter(1), /* GLuint srcPath */ getStackedParameter(2), /* GLenum transformType */ getStackedPointer(3, const GLfloat *) /* const GLfloat *transformValues */); break; case NFOSMESA_GLTRANSLATED: D(funcname = "glTranslated"); if (GL_ISAVAILABLE(glTranslated)) nfglTranslated( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2), /* GLdouble y */ getStackedDouble(4) /* GLdouble z */); break; case NFOSMESA_GLTRANSLATEF: D(funcname = "glTranslatef"); if (GL_ISAVAILABLE(glTranslatef)) nfglTranslatef( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1), /* GLfloat y */ getStackedFloat(2) /* GLfloat z */); break; case NFOSMESA_GLTRANSLATEXOES: D(funcname = "glTranslatexOES"); if (GL_ISAVAILABLE(glTranslatexOES)) nfglTranslatexOES( getStackedParameter(0), /* GLfixed x */ getStackedParameter(1), /* GLfixed y */ getStackedParameter(2) /* GLfixed z */); break; case NFOSMESA_GLUNIFORM1D: D(funcname = "glUniform1d"); if (GL_ISAVAILABLE(glUniform1d)) nfglUniform1d( getStackedParameter(0), /* GLint location */ getStackedDouble(1) /* GLdouble x */); break; case NFOSMESA_GLUNIFORM1DV: D(funcname = "glUniform1dv"); if (GL_ISAVAILABLE(glUniform1dv)) nfglUniform1dv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLUNIFORM1F: D(funcname = "glUniform1f"); if (GL_ISAVAILABLE(glUniform1f)) nfglUniform1f( getStackedParameter(0), /* GLint location */ getStackedFloat(1) /* GLfloat v0 */); break; case NFOSMESA_GLUNIFORM1FARB: D(funcname = "glUniform1fARB"); if (GL_ISAVAILABLE(glUniform1fARB)) nfglUniform1fARB( getStackedParameter(0), /* GLint location */ getStackedFloat(1) /* GLfloat v0 */); break; case NFOSMESA_GLUNIFORM1FV: D(funcname = "glUniform1fv"); if (GL_ISAVAILABLE(glUniform1fv)) nfglUniform1fv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORM1FVARB: D(funcname = "glUniform1fvARB"); if (GL_ISAVAILABLE(glUniform1fvARB)) nfglUniform1fvARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORM1I: D(funcname = "glUniform1i"); if (GL_ISAVAILABLE(glUniform1i)) nfglUniform1i( getStackedParameter(0), /* GLint location */ getStackedParameter(1) /* GLint v0 */); break; case NFOSMESA_GLUNIFORM1I64ARB: D(funcname = "glUniform1i64ARB"); if (GL_ISAVAILABLE(glUniform1i64ARB)) nfglUniform1i64ARB( getStackedParameter(0), /* GLint location */ getStackedParameter64(1) /* GLint64 x */); break; case NFOSMESA_GLUNIFORM1I64NV: D(funcname = "glUniform1i64NV"); if (GL_ISAVAILABLE(glUniform1i64NV)) nfglUniform1i64NV( getStackedParameter(0), /* GLint location */ getStackedParameter64(1) /* GLint64EXT x */); break; case NFOSMESA_GLUNIFORM1I64VARB: D(funcname = "glUniform1i64vARB"); if (GL_ISAVAILABLE(glUniform1i64vARB)) nfglUniform1i64vARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint64 *) /* const GLint64 *value */); break; case NFOSMESA_GLUNIFORM1I64VNV: D(funcname = "glUniform1i64vNV"); if (GL_ISAVAILABLE(glUniform1i64vNV)) nfglUniform1i64vNV( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint64EXT *) /* const GLint64EXT *value */); break; case NFOSMESA_GLUNIFORM1IARB: D(funcname = "glUniform1iARB"); if (GL_ISAVAILABLE(glUniform1iARB)) nfglUniform1iARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1) /* GLint v0 */); break; case NFOSMESA_GLUNIFORM1IV: D(funcname = "glUniform1iv"); if (GL_ISAVAILABLE(glUniform1iv)) nfglUniform1iv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLUNIFORM1IVARB: D(funcname = "glUniform1ivARB"); if (GL_ISAVAILABLE(glUniform1ivARB)) nfglUniform1ivARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLUNIFORM1UI: D(funcname = "glUniform1ui"); if (GL_ISAVAILABLE(glUniform1ui)) nfglUniform1ui( getStackedParameter(0), /* GLint location */ getStackedParameter(1) /* GLuint v0 */); break; case NFOSMESA_GLUNIFORM1UI64ARB: D(funcname = "glUniform1ui64ARB"); if (GL_ISAVAILABLE(glUniform1ui64ARB)) nfglUniform1ui64ARB( getStackedParameter(0), /* GLint location */ getStackedParameter64(1) /* GLuint64 x */); break; case NFOSMESA_GLUNIFORM1UI64NV: D(funcname = "glUniform1ui64NV"); if (GL_ISAVAILABLE(glUniform1ui64NV)) nfglUniform1ui64NV( getStackedParameter(0), /* GLint location */ getStackedParameter64(1) /* GLuint64EXT x */); break; case NFOSMESA_GLUNIFORM1UI64VARB: D(funcname = "glUniform1ui64vARB"); if (GL_ISAVAILABLE(glUniform1ui64vARB)) nfglUniform1ui64vARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint64 *) /* const GLuint64 *value */); break; case NFOSMESA_GLUNIFORM1UI64VNV: D(funcname = "glUniform1ui64vNV"); if (GL_ISAVAILABLE(glUniform1ui64vNV)) nfglUniform1ui64vNV( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint64EXT *) /* const GLuint64EXT *value */); break; case NFOSMESA_GLUNIFORM1UIEXT: D(funcname = "glUniform1uiEXT"); if (GL_ISAVAILABLE(glUniform1uiEXT)) nfglUniform1uiEXT( getStackedParameter(0), /* GLint location */ getStackedParameter(1) /* GLuint v0 */); break; case NFOSMESA_GLUNIFORM1UIV: D(funcname = "glUniform1uiv"); if (GL_ISAVAILABLE(glUniform1uiv)) nfglUniform1uiv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLUNIFORM1UIVEXT: D(funcname = "glUniform1uivEXT"); if (GL_ISAVAILABLE(glUniform1uivEXT)) nfglUniform1uivEXT( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLUNIFORM2D: D(funcname = "glUniform2d"); if (GL_ISAVAILABLE(glUniform2d)) nfglUniform2d( getStackedParameter(0), /* GLint location */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3) /* GLdouble y */); break; case NFOSMESA_GLUNIFORM2DV: D(funcname = "glUniform2dv"); if (GL_ISAVAILABLE(glUniform2dv)) nfglUniform2dv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLUNIFORM2F: D(funcname = "glUniform2f"); if (GL_ISAVAILABLE(glUniform2f)) nfglUniform2f( getStackedParameter(0), /* GLint location */ getStackedFloat(1), /* GLfloat v0 */ getStackedFloat(2) /* GLfloat v1 */); break; case NFOSMESA_GLUNIFORM2FARB: D(funcname = "glUniform2fARB"); if (GL_ISAVAILABLE(glUniform2fARB)) nfglUniform2fARB( getStackedParameter(0), /* GLint location */ getStackedFloat(1), /* GLfloat v0 */ getStackedFloat(2) /* GLfloat v1 */); break; case NFOSMESA_GLUNIFORM2FV: D(funcname = "glUniform2fv"); if (GL_ISAVAILABLE(glUniform2fv)) nfglUniform2fv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORM2FVARB: D(funcname = "glUniform2fvARB"); if (GL_ISAVAILABLE(glUniform2fvARB)) nfglUniform2fvARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORM2I: D(funcname = "glUniform2i"); if (GL_ISAVAILABLE(glUniform2i)) nfglUniform2i( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLint v0 */ getStackedParameter(2) /* GLint v1 */); break; case NFOSMESA_GLUNIFORM2I64ARB: D(funcname = "glUniform2i64ARB"); if (GL_ISAVAILABLE(glUniform2i64ARB)) nfglUniform2i64ARB( getStackedParameter(0), /* GLint location */ getStackedParameter64(1), /* GLint64 x */ getStackedParameter64(3) /* GLint64 y */); break; case NFOSMESA_GLUNIFORM2I64NV: D(funcname = "glUniform2i64NV"); if (GL_ISAVAILABLE(glUniform2i64NV)) nfglUniform2i64NV( getStackedParameter(0), /* GLint location */ getStackedParameter64(1), /* GLint64EXT x */ getStackedParameter64(3) /* GLint64EXT y */); break; case NFOSMESA_GLUNIFORM2I64VARB: D(funcname = "glUniform2i64vARB"); if (GL_ISAVAILABLE(glUniform2i64vARB)) nfglUniform2i64vARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint64 *) /* const GLint64 *value */); break; case NFOSMESA_GLUNIFORM2I64VNV: D(funcname = "glUniform2i64vNV"); if (GL_ISAVAILABLE(glUniform2i64vNV)) nfglUniform2i64vNV( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint64EXT *) /* const GLint64EXT *value */); break; case NFOSMESA_GLUNIFORM2IARB: D(funcname = "glUniform2iARB"); if (GL_ISAVAILABLE(glUniform2iARB)) nfglUniform2iARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLint v0 */ getStackedParameter(2) /* GLint v1 */); break; case NFOSMESA_GLUNIFORM2IV: D(funcname = "glUniform2iv"); if (GL_ISAVAILABLE(glUniform2iv)) nfglUniform2iv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLUNIFORM2IVARB: D(funcname = "glUniform2ivARB"); if (GL_ISAVAILABLE(glUniform2ivARB)) nfglUniform2ivARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLUNIFORM2UI: D(funcname = "glUniform2ui"); if (GL_ISAVAILABLE(glUniform2ui)) nfglUniform2ui( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLuint v0 */ getStackedParameter(2) /* GLuint v1 */); break; case NFOSMESA_GLUNIFORM2UI64ARB: D(funcname = "glUniform2ui64ARB"); if (GL_ISAVAILABLE(glUniform2ui64ARB)) nfglUniform2ui64ARB( getStackedParameter(0), /* GLint location */ getStackedParameter64(1), /* GLuint64 x */ getStackedParameter64(3) /* GLuint64 y */); break; case NFOSMESA_GLUNIFORM2UI64NV: D(funcname = "glUniform2ui64NV"); if (GL_ISAVAILABLE(glUniform2ui64NV)) nfglUniform2ui64NV( getStackedParameter(0), /* GLint location */ getStackedParameter64(1), /* GLuint64EXT x */ getStackedParameter64(3) /* GLuint64EXT y */); break; case NFOSMESA_GLUNIFORM2UI64VARB: D(funcname = "glUniform2ui64vARB"); if (GL_ISAVAILABLE(glUniform2ui64vARB)) nfglUniform2ui64vARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint64 *) /* const GLuint64 *value */); break; case NFOSMESA_GLUNIFORM2UI64VNV: D(funcname = "glUniform2ui64vNV"); if (GL_ISAVAILABLE(glUniform2ui64vNV)) nfglUniform2ui64vNV( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint64EXT *) /* const GLuint64EXT *value */); break; case NFOSMESA_GLUNIFORM2UIEXT: D(funcname = "glUniform2uiEXT"); if (GL_ISAVAILABLE(glUniform2uiEXT)) nfglUniform2uiEXT( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLuint v0 */ getStackedParameter(2) /* GLuint v1 */); break; case NFOSMESA_GLUNIFORM2UIV: D(funcname = "glUniform2uiv"); if (GL_ISAVAILABLE(glUniform2uiv)) nfglUniform2uiv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLUNIFORM2UIVEXT: D(funcname = "glUniform2uivEXT"); if (GL_ISAVAILABLE(glUniform2uivEXT)) nfglUniform2uivEXT( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLUNIFORM3D: D(funcname = "glUniform3d"); if (GL_ISAVAILABLE(glUniform3d)) nfglUniform3d( getStackedParameter(0), /* GLint location */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5) /* GLdouble z */); break; case NFOSMESA_GLUNIFORM3DV: D(funcname = "glUniform3dv"); if (GL_ISAVAILABLE(glUniform3dv)) nfglUniform3dv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLUNIFORM3F: D(funcname = "glUniform3f"); if (GL_ISAVAILABLE(glUniform3f)) nfglUniform3f( getStackedParameter(0), /* GLint location */ getStackedFloat(1), /* GLfloat v0 */ getStackedFloat(2), /* GLfloat v1 */ getStackedFloat(3) /* GLfloat v2 */); break; case NFOSMESA_GLUNIFORM3FARB: D(funcname = "glUniform3fARB"); if (GL_ISAVAILABLE(glUniform3fARB)) nfglUniform3fARB( getStackedParameter(0), /* GLint location */ getStackedFloat(1), /* GLfloat v0 */ getStackedFloat(2), /* GLfloat v1 */ getStackedFloat(3) /* GLfloat v2 */); break; case NFOSMESA_GLUNIFORM3FV: D(funcname = "glUniform3fv"); if (GL_ISAVAILABLE(glUniform3fv)) nfglUniform3fv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORM3FVARB: D(funcname = "glUniform3fvARB"); if (GL_ISAVAILABLE(glUniform3fvARB)) nfglUniform3fvARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORM3I: D(funcname = "glUniform3i"); if (GL_ISAVAILABLE(glUniform3i)) nfglUniform3i( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLint v0 */ getStackedParameter(2), /* GLint v1 */ getStackedParameter(3) /* GLint v2 */); break; case NFOSMESA_GLUNIFORM3I64ARB: D(funcname = "glUniform3i64ARB"); if (GL_ISAVAILABLE(glUniform3i64ARB)) nfglUniform3i64ARB( getStackedParameter(0), /* GLint location */ getStackedParameter64(1), /* GLint64 x */ getStackedParameter64(3), /* GLint64 y */ getStackedParameter64(5) /* GLint64 z */); break; case NFOSMESA_GLUNIFORM3I64NV: D(funcname = "glUniform3i64NV"); if (GL_ISAVAILABLE(glUniform3i64NV)) nfglUniform3i64NV( getStackedParameter(0), /* GLint location */ getStackedParameter64(1), /* GLint64EXT x */ getStackedParameter64(3), /* GLint64EXT y */ getStackedParameter64(5) /* GLint64EXT z */); break; case NFOSMESA_GLUNIFORM3I64VARB: D(funcname = "glUniform3i64vARB"); if (GL_ISAVAILABLE(glUniform3i64vARB)) nfglUniform3i64vARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint64 *) /* const GLint64 *value */); break; case NFOSMESA_GLUNIFORM3I64VNV: D(funcname = "glUniform3i64vNV"); if (GL_ISAVAILABLE(glUniform3i64vNV)) nfglUniform3i64vNV( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint64EXT *) /* const GLint64EXT *value */); break; case NFOSMESA_GLUNIFORM3IARB: D(funcname = "glUniform3iARB"); if (GL_ISAVAILABLE(glUniform3iARB)) nfglUniform3iARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLint v0 */ getStackedParameter(2), /* GLint v1 */ getStackedParameter(3) /* GLint v2 */); break; case NFOSMESA_GLUNIFORM3IV: D(funcname = "glUniform3iv"); if (GL_ISAVAILABLE(glUniform3iv)) nfglUniform3iv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLUNIFORM3IVARB: D(funcname = "glUniform3ivARB"); if (GL_ISAVAILABLE(glUniform3ivARB)) nfglUniform3ivARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLUNIFORM3UI: D(funcname = "glUniform3ui"); if (GL_ISAVAILABLE(glUniform3ui)) nfglUniform3ui( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLuint v0 */ getStackedParameter(2), /* GLuint v1 */ getStackedParameter(3) /* GLuint v2 */); break; case NFOSMESA_GLUNIFORM3UI64ARB: D(funcname = "glUniform3ui64ARB"); if (GL_ISAVAILABLE(glUniform3ui64ARB)) nfglUniform3ui64ARB( getStackedParameter(0), /* GLint location */ getStackedParameter64(1), /* GLuint64 x */ getStackedParameter64(3), /* GLuint64 y */ getStackedParameter64(5) /* GLuint64 z */); break; case NFOSMESA_GLUNIFORM3UI64NV: D(funcname = "glUniform3ui64NV"); if (GL_ISAVAILABLE(glUniform3ui64NV)) nfglUniform3ui64NV( getStackedParameter(0), /* GLint location */ getStackedParameter64(1), /* GLuint64EXT x */ getStackedParameter64(3), /* GLuint64EXT y */ getStackedParameter64(5) /* GLuint64EXT z */); break; case NFOSMESA_GLUNIFORM3UI64VARB: D(funcname = "glUniform3ui64vARB"); if (GL_ISAVAILABLE(glUniform3ui64vARB)) nfglUniform3ui64vARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint64 *) /* const GLuint64 *value */); break; case NFOSMESA_GLUNIFORM3UI64VNV: D(funcname = "glUniform3ui64vNV"); if (GL_ISAVAILABLE(glUniform3ui64vNV)) nfglUniform3ui64vNV( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint64EXT *) /* const GLuint64EXT *value */); break; case NFOSMESA_GLUNIFORM3UIEXT: D(funcname = "glUniform3uiEXT"); if (GL_ISAVAILABLE(glUniform3uiEXT)) nfglUniform3uiEXT( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLuint v0 */ getStackedParameter(2), /* GLuint v1 */ getStackedParameter(3) /* GLuint v2 */); break; case NFOSMESA_GLUNIFORM3UIV: D(funcname = "glUniform3uiv"); if (GL_ISAVAILABLE(glUniform3uiv)) nfglUniform3uiv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLUNIFORM3UIVEXT: D(funcname = "glUniform3uivEXT"); if (GL_ISAVAILABLE(glUniform3uivEXT)) nfglUniform3uivEXT( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLUNIFORM4D: D(funcname = "glUniform4d"); if (GL_ISAVAILABLE(glUniform4d)) nfglUniform4d( getStackedParameter(0), /* GLint location */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5), /* GLdouble z */ getStackedDouble(7) /* GLdouble w */); break; case NFOSMESA_GLUNIFORM4DV: D(funcname = "glUniform4dv"); if (GL_ISAVAILABLE(glUniform4dv)) nfglUniform4dv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLUNIFORM4F: D(funcname = "glUniform4f"); if (GL_ISAVAILABLE(glUniform4f)) nfglUniform4f( getStackedParameter(0), /* GLint location */ getStackedFloat(1), /* GLfloat v0 */ getStackedFloat(2), /* GLfloat v1 */ getStackedFloat(3), /* GLfloat v2 */ getStackedFloat(4) /* GLfloat v3 */); break; case NFOSMESA_GLUNIFORM4FARB: D(funcname = "glUniform4fARB"); if (GL_ISAVAILABLE(glUniform4fARB)) nfglUniform4fARB( getStackedParameter(0), /* GLint location */ getStackedFloat(1), /* GLfloat v0 */ getStackedFloat(2), /* GLfloat v1 */ getStackedFloat(3), /* GLfloat v2 */ getStackedFloat(4) /* GLfloat v3 */); break; case NFOSMESA_GLUNIFORM4FV: D(funcname = "glUniform4fv"); if (GL_ISAVAILABLE(glUniform4fv)) nfglUniform4fv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORM4FVARB: D(funcname = "glUniform4fvARB"); if (GL_ISAVAILABLE(glUniform4fvARB)) nfglUniform4fvARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORM4I: D(funcname = "glUniform4i"); if (GL_ISAVAILABLE(glUniform4i)) nfglUniform4i( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLint v0 */ getStackedParameter(2), /* GLint v1 */ getStackedParameter(3), /* GLint v2 */ getStackedParameter(4) /* GLint v3 */); break; case NFOSMESA_GLUNIFORM4I64ARB: D(funcname = "glUniform4i64ARB"); if (GL_ISAVAILABLE(glUniform4i64ARB)) nfglUniform4i64ARB( getStackedParameter(0), /* GLint location */ getStackedParameter64(1), /* GLint64 x */ getStackedParameter64(3), /* GLint64 y */ getStackedParameter64(5), /* GLint64 z */ getStackedParameter64(7) /* GLint64 w */); break; case NFOSMESA_GLUNIFORM4I64NV: D(funcname = "glUniform4i64NV"); if (GL_ISAVAILABLE(glUniform4i64NV)) nfglUniform4i64NV( getStackedParameter(0), /* GLint location */ getStackedParameter64(1), /* GLint64EXT x */ getStackedParameter64(3), /* GLint64EXT y */ getStackedParameter64(5), /* GLint64EXT z */ getStackedParameter64(7) /* GLint64EXT w */); break; case NFOSMESA_GLUNIFORM4I64VARB: D(funcname = "glUniform4i64vARB"); if (GL_ISAVAILABLE(glUniform4i64vARB)) nfglUniform4i64vARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint64 *) /* const GLint64 *value */); break; case NFOSMESA_GLUNIFORM4I64VNV: D(funcname = "glUniform4i64vNV"); if (GL_ISAVAILABLE(glUniform4i64vNV)) nfglUniform4i64vNV( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint64EXT *) /* const GLint64EXT *value */); break; case NFOSMESA_GLUNIFORM4IARB: D(funcname = "glUniform4iARB"); if (GL_ISAVAILABLE(glUniform4iARB)) nfglUniform4iARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLint v0 */ getStackedParameter(2), /* GLint v1 */ getStackedParameter(3), /* GLint v2 */ getStackedParameter(4) /* GLint v3 */); break; case NFOSMESA_GLUNIFORM4IV: D(funcname = "glUniform4iv"); if (GL_ISAVAILABLE(glUniform4iv)) nfglUniform4iv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLUNIFORM4IVARB: D(funcname = "glUniform4ivARB"); if (GL_ISAVAILABLE(glUniform4ivARB)) nfglUniform4ivARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint *) /* const GLint *value */); break; case NFOSMESA_GLUNIFORM4UI: D(funcname = "glUniform4ui"); if (GL_ISAVAILABLE(glUniform4ui)) nfglUniform4ui( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLuint v0 */ getStackedParameter(2), /* GLuint v1 */ getStackedParameter(3), /* GLuint v2 */ getStackedParameter(4) /* GLuint v3 */); break; case NFOSMESA_GLUNIFORM4UI64ARB: D(funcname = "glUniform4ui64ARB"); if (GL_ISAVAILABLE(glUniform4ui64ARB)) nfglUniform4ui64ARB( getStackedParameter(0), /* GLint location */ getStackedParameter64(1), /* GLuint64 x */ getStackedParameter64(3), /* GLuint64 y */ getStackedParameter64(5), /* GLuint64 z */ getStackedParameter64(7) /* GLuint64 w */); break; case NFOSMESA_GLUNIFORM4UI64NV: D(funcname = "glUniform4ui64NV"); if (GL_ISAVAILABLE(glUniform4ui64NV)) nfglUniform4ui64NV( getStackedParameter(0), /* GLint location */ getStackedParameter64(1), /* GLuint64EXT x */ getStackedParameter64(3), /* GLuint64EXT y */ getStackedParameter64(5), /* GLuint64EXT z */ getStackedParameter64(7) /* GLuint64EXT w */); break; case NFOSMESA_GLUNIFORM4UI64VARB: D(funcname = "glUniform4ui64vARB"); if (GL_ISAVAILABLE(glUniform4ui64vARB)) nfglUniform4ui64vARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint64 *) /* const GLuint64 *value */); break; case NFOSMESA_GLUNIFORM4UI64VNV: D(funcname = "glUniform4ui64vNV"); if (GL_ISAVAILABLE(glUniform4ui64vNV)) nfglUniform4ui64vNV( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint64EXT *) /* const GLuint64EXT *value */); break; case NFOSMESA_GLUNIFORM4UIEXT: D(funcname = "glUniform4uiEXT"); if (GL_ISAVAILABLE(glUniform4uiEXT)) nfglUniform4uiEXT( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLuint v0 */ getStackedParameter(2), /* GLuint v1 */ getStackedParameter(3), /* GLuint v2 */ getStackedParameter(4) /* GLuint v3 */); break; case NFOSMESA_GLUNIFORM4UIV: D(funcname = "glUniform4uiv"); if (GL_ISAVAILABLE(glUniform4uiv)) nfglUniform4uiv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLUNIFORM4UIVEXT: D(funcname = "glUniform4uivEXT"); if (GL_ISAVAILABLE(glUniform4uivEXT)) nfglUniform4uivEXT( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLUNIFORMBLOCKBINDING: D(funcname = "glUniformBlockBinding"); if (GL_ISAVAILABLE(glUniformBlockBinding)) nfglUniformBlockBinding( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLuint uniformBlockIndex */ getStackedParameter(2) /* GLuint uniformBlockBinding */); break; case NFOSMESA_GLUNIFORMBUFFEREXT: D(funcname = "glUniformBufferEXT"); if (GL_ISAVAILABLE(glUniformBufferEXT)) nfglUniformBufferEXT( getStackedParameter(0), /* GLuint program */ getStackedParameter(1), /* GLint location */ getStackedParameter(2) /* GLuint buffer */); break; case NFOSMESA_GLUNIFORMHANDLEUI64ARB: D(funcname = "glUniformHandleui64ARB"); if (GL_ISAVAILABLE(glUniformHandleui64ARB)) nfglUniformHandleui64ARB( getStackedParameter(0), /* GLint location */ getStackedParameter64(1) /* GLuint64 value */); break; case NFOSMESA_GLUNIFORMHANDLEUI64NV: D(funcname = "glUniformHandleui64NV"); if (GL_ISAVAILABLE(glUniformHandleui64NV)) nfglUniformHandleui64NV( getStackedParameter(0), /* GLint location */ getStackedParameter64(1) /* GLuint64 value */); break; case NFOSMESA_GLUNIFORMHANDLEUI64VARB: D(funcname = "glUniformHandleui64vARB"); if (GL_ISAVAILABLE(glUniformHandleui64vARB)) nfglUniformHandleui64vARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint64 *) /* const GLuint64 *value */); break; case NFOSMESA_GLUNIFORMHANDLEUI64VNV: D(funcname = "glUniformHandleui64vNV"); if (GL_ISAVAILABLE(glUniformHandleui64vNV)) nfglUniformHandleui64vNV( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint64 *) /* const GLuint64 *value */); break; case NFOSMESA_GLUNIFORMMATRIX2DV: D(funcname = "glUniformMatrix2dv"); if (GL_ISAVAILABLE(glUniformMatrix2dv)) nfglUniformMatrix2dv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLUNIFORMMATRIX2FV: D(funcname = "glUniformMatrix2fv"); if (GL_ISAVAILABLE(glUniformMatrix2fv)) nfglUniformMatrix2fv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORMMATRIX2FVARB: D(funcname = "glUniformMatrix2fvARB"); if (GL_ISAVAILABLE(glUniformMatrix2fvARB)) nfglUniformMatrix2fvARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORMMATRIX2X3DV: D(funcname = "glUniformMatrix2x3dv"); if (GL_ISAVAILABLE(glUniformMatrix2x3dv)) nfglUniformMatrix2x3dv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLUNIFORMMATRIX2X3FV: D(funcname = "glUniformMatrix2x3fv"); if (GL_ISAVAILABLE(glUniformMatrix2x3fv)) nfglUniformMatrix2x3fv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORMMATRIX2X4DV: D(funcname = "glUniformMatrix2x4dv"); if (GL_ISAVAILABLE(glUniformMatrix2x4dv)) nfglUniformMatrix2x4dv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLUNIFORMMATRIX2X4FV: D(funcname = "glUniformMatrix2x4fv"); if (GL_ISAVAILABLE(glUniformMatrix2x4fv)) nfglUniformMatrix2x4fv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORMMATRIX3DV: D(funcname = "glUniformMatrix3dv"); if (GL_ISAVAILABLE(glUniformMatrix3dv)) nfglUniformMatrix3dv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLUNIFORMMATRIX3FV: D(funcname = "glUniformMatrix3fv"); if (GL_ISAVAILABLE(glUniformMatrix3fv)) nfglUniformMatrix3fv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORMMATRIX3FVARB: D(funcname = "glUniformMatrix3fvARB"); if (GL_ISAVAILABLE(glUniformMatrix3fvARB)) nfglUniformMatrix3fvARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORMMATRIX3X2DV: D(funcname = "glUniformMatrix3x2dv"); if (GL_ISAVAILABLE(glUniformMatrix3x2dv)) nfglUniformMatrix3x2dv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLUNIFORMMATRIX3X2FV: D(funcname = "glUniformMatrix3x2fv"); if (GL_ISAVAILABLE(glUniformMatrix3x2fv)) nfglUniformMatrix3x2fv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORMMATRIX3X4DV: D(funcname = "glUniformMatrix3x4dv"); if (GL_ISAVAILABLE(glUniformMatrix3x4dv)) nfglUniformMatrix3x4dv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLUNIFORMMATRIX3X4FV: D(funcname = "glUniformMatrix3x4fv"); if (GL_ISAVAILABLE(glUniformMatrix3x4fv)) nfglUniformMatrix3x4fv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORMMATRIX4DV: D(funcname = "glUniformMatrix4dv"); if (GL_ISAVAILABLE(glUniformMatrix4dv)) nfglUniformMatrix4dv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLUNIFORMMATRIX4FV: D(funcname = "glUniformMatrix4fv"); if (GL_ISAVAILABLE(glUniformMatrix4fv)) nfglUniformMatrix4fv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORMMATRIX4FVARB: D(funcname = "glUniformMatrix4fvARB"); if (GL_ISAVAILABLE(glUniformMatrix4fvARB)) nfglUniformMatrix4fvARB( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORMMATRIX4X2DV: D(funcname = "glUniformMatrix4x2dv"); if (GL_ISAVAILABLE(glUniformMatrix4x2dv)) nfglUniformMatrix4x2dv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLUNIFORMMATRIX4X2FV: D(funcname = "glUniformMatrix4x2fv"); if (GL_ISAVAILABLE(glUniformMatrix4x2fv)) nfglUniformMatrix4x2fv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORMMATRIX4X3DV: D(funcname = "glUniformMatrix4x3dv"); if (GL_ISAVAILABLE(glUniformMatrix4x3dv)) nfglUniformMatrix4x3dv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLdouble *) /* const GLdouble *value */); break; case NFOSMESA_GLUNIFORMMATRIX4X3FV: D(funcname = "glUniformMatrix4x3fv"); if (GL_ISAVAILABLE(glUniformMatrix4x3fv)) nfglUniformMatrix4x3fv( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedParameter(2), /* GLboolean32 transpose */ getStackedPointer(3, const GLfloat *) /* const GLfloat *value */); break; case NFOSMESA_GLUNIFORMSUBROUTINESUIV: D(funcname = "glUniformSubroutinesuiv"); if (GL_ISAVAILABLE(glUniformSubroutinesuiv)) nfglUniformSubroutinesuiv( getStackedParameter(0), /* GLenum shadertype */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint *) /* const GLuint *indices */); break; case NFOSMESA_GLUNIFORMUI64NV: D(funcname = "glUniformui64NV"); if (GL_ISAVAILABLE(glUniformui64NV)) nfglUniformui64NV( getStackedParameter(0), /* GLint location */ getStackedParameter64(1) /* GLuint64EXT value */); break; case NFOSMESA_GLUNIFORMUI64VNV: D(funcname = "glUniformui64vNV"); if (GL_ISAVAILABLE(glUniformui64vNV)) nfglUniformui64vNV( getStackedParameter(0), /* GLint location */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLuint64EXT *) /* const GLuint64EXT *value */); break; case NFOSMESA_GLUNLOCKARRAYSEXT: D(funcname = "glUnlockArraysEXT"); if (GL_ISAVAILABLE(glUnlockArraysEXT)) nfglUnlockArraysEXT(); break; case NFOSMESA_GLUNMAPBUFFER: D(funcname = "glUnmapBuffer"); if (GL_ISAVAILABLE(glUnmapBuffer)) ret = nfglUnmapBuffer( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLUNMAPBUFFERARB: D(funcname = "glUnmapBufferARB"); if (GL_ISAVAILABLE(glUnmapBufferARB)) ret = nfglUnmapBufferARB( getStackedParameter(0) /* GLenum target */); break; case NFOSMESA_GLUNMAPNAMEDBUFFER: D(funcname = "glUnmapNamedBuffer"); if (GL_ISAVAILABLE(glUnmapNamedBuffer)) ret = nfglUnmapNamedBuffer( getStackedParameter(0) /* GLuint buffer */); break; case NFOSMESA_GLUNMAPNAMEDBUFFEREXT: D(funcname = "glUnmapNamedBufferEXT"); if (GL_ISAVAILABLE(glUnmapNamedBufferEXT)) ret = nfglUnmapNamedBufferEXT( getStackedParameter(0) /* GLuint buffer */); break; case NFOSMESA_GLUNMAPOBJECTBUFFERATI: D(funcname = "glUnmapObjectBufferATI"); if (GL_ISAVAILABLE(glUnmapObjectBufferATI)) nfglUnmapObjectBufferATI( getStackedParameter(0) /* GLuint buffer */); break; case NFOSMESA_GLUNMAPTEXTURE2DINTEL: D(funcname = "glUnmapTexture2DINTEL"); if (GL_ISAVAILABLE(glUnmapTexture2DINTEL)) nfglUnmapTexture2DINTEL( getStackedParameter(0), /* GLuint texture */ getStackedParameter(1) /* GLint level */); break; case NFOSMESA_GLUPDATEOBJECTBUFFERATI: D(funcname = "glUpdateObjectBufferATI"); if (GL_ISAVAILABLE(glUpdateObjectBufferATI)) nfglUpdateObjectBufferATI( getStackedParameter(0), /* GLuint buffer */ getStackedParameter(1), /* GLuint offset */ getStackedParameter(2), /* GLsizei size */ getStackedPointer(3, const void *), /* const void *pointer */ getStackedParameter(4) /* GLenum preserve */); break; case NFOSMESA_GLUSEPROGRAM: D(funcname = "glUseProgram"); if (GL_ISAVAILABLE(glUseProgram)) nfglUseProgram( getStackedParameter(0) /* GLuint program */); break; case NFOSMESA_GLUSEPROGRAMOBJECTARB: D(funcname = "glUseProgramObjectARB"); if (GL_ISAVAILABLE(glUseProgramObjectARB)) nfglUseProgramObjectARB( (GLhandleARB)(uintptr_t)getStackedParameter(0) /* GLhandleARB programObj */); break; case NFOSMESA_GLUSEPROGRAMSTAGES: D(funcname = "glUseProgramStages"); if (GL_ISAVAILABLE(glUseProgramStages)) nfglUseProgramStages( getStackedParameter(0), /* GLuint pipeline */ getStackedParameter(1), /* GLbitfield stages */ getStackedParameter(2) /* GLuint program */); break; case NFOSMESA_GLUSESHADERPROGRAMEXT: D(funcname = "glUseShaderProgramEXT"); if (GL_ISAVAILABLE(glUseShaderProgramEXT)) nfglUseShaderProgramEXT( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLuint program */); break; #if 0 case NFOSMESA_GLVDPAUFININV: D(funcname = "glVDPAUFiniNV"); if (GL_ISAVAILABLE(glVDPAUFiniNV)) nfglVDPAUFiniNV(); break; #endif #if 0 case NFOSMESA_GLVDPAUGETSURFACEIVNV: D(funcname = "glVDPAUGetSurfaceivNV"); if (GL_ISAVAILABLE(glVDPAUGetSurfaceivNV)) nfglVDPAUGetSurfaceivNV( getStackedParameter(0), /* GLvdpauSurfaceNV surface */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2), /* GLsizei bufSize */ getStackedPointer(3, GLsizei *), /* GLsizei *length */ getStackedPointer(4, GLint *) /* GLint *values */); break; #endif #if 0 case NFOSMESA_GLVDPAUINITNV: D(funcname = "glVDPAUInitNV"); if (GL_ISAVAILABLE(glVDPAUInitNV)) nfglVDPAUInitNV( getStackedPointer(0, const void *), /* const void *vdpDevice */ getStackedPointer(1, const void *) /* const void *getProcAddress */); break; #endif #if 0 case NFOSMESA_GLVDPAUISSURFACENV: D(funcname = "glVDPAUIsSurfaceNV"); if (GL_ISAVAILABLE(glVDPAUIsSurfaceNV)) ret = nfglVDPAUIsSurfaceNV( getStackedParameter(0) /* GLvdpauSurfaceNV surface */); break; #endif #if 0 case NFOSMESA_GLVDPAUMAPSURFACESNV: D(funcname = "glVDPAUMapSurfacesNV"); if (GL_ISAVAILABLE(glVDPAUMapSurfacesNV)) nfglVDPAUMapSurfacesNV( getStackedParameter(0), /* GLsizei numSurfaces */ getStackedPointer(1, const GLvdpauSurfaceNV *) /* const GLvdpauSurfaceNV *surfaces */); break; #endif #if 0 case NFOSMESA_GLVDPAUREGISTEROUTPUTSURFACENV: D(funcname = "glVDPAURegisterOutputSurfaceNV"); if (GL_ISAVAILABLE(glVDPAURegisterOutputSurfaceNV)) ret = nfglVDPAURegisterOutputSurfaceNV( getStackedPointer(0, const void *), /* const void *vdpSurface */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLsizei numTextureNames */ getStackedPointer(3, const GLuint *) /* const GLuint *textureNames */); break; #endif #if 0 case NFOSMESA_GLVDPAUREGISTERVIDEOSURFACENV: D(funcname = "glVDPAURegisterVideoSurfaceNV"); if (GL_ISAVAILABLE(glVDPAURegisterVideoSurfaceNV)) ret = nfglVDPAURegisterVideoSurfaceNV( getStackedPointer(0, const void *), /* const void *vdpSurface */ getStackedParameter(1), /* GLenum target */ getStackedParameter(2), /* GLsizei numTextureNames */ getStackedPointer(3, const GLuint *) /* const GLuint *textureNames */); break; #endif #if 0 case NFOSMESA_GLVDPAUSURFACEACCESSNV: D(funcname = "glVDPAUSurfaceAccessNV"); if (GL_ISAVAILABLE(glVDPAUSurfaceAccessNV)) nfglVDPAUSurfaceAccessNV( getStackedParameter(0), /* GLvdpauSurfaceNV surface */ getStackedParameter(1) /* GLenum access */); break; #endif #if 0 case NFOSMESA_GLVDPAUUNMAPSURFACESNV: D(funcname = "glVDPAUUnmapSurfacesNV"); if (GL_ISAVAILABLE(glVDPAUUnmapSurfacesNV)) nfglVDPAUUnmapSurfacesNV( getStackedParameter(0), /* GLsizei numSurface */ getStackedPointer(1, const GLvdpauSurfaceNV *) /* const GLvdpauSurfaceNV *surfaces */); break; #endif #if 0 case NFOSMESA_GLVDPAUUNREGISTERSURFACENV: D(funcname = "glVDPAUUnregisterSurfaceNV"); if (GL_ISAVAILABLE(glVDPAUUnregisterSurfaceNV)) nfglVDPAUUnregisterSurfaceNV( getStackedParameter(0) /* GLvdpauSurfaceNV surface */); break; #endif case NFOSMESA_GLVALIDATEPROGRAM: D(funcname = "glValidateProgram"); if (GL_ISAVAILABLE(glValidateProgram)) nfglValidateProgram( getStackedParameter(0) /* GLuint program */); break; case NFOSMESA_GLVALIDATEPROGRAMARB: D(funcname = "glValidateProgramARB"); if (GL_ISAVAILABLE(glValidateProgramARB)) nfglValidateProgramARB( (GLhandleARB)(uintptr_t)getStackedParameter(0) /* GLhandleARB programObj */); break; case NFOSMESA_GLVALIDATEPROGRAMPIPELINE: D(funcname = "glValidateProgramPipeline"); if (GL_ISAVAILABLE(glValidateProgramPipeline)) nfglValidateProgramPipeline( getStackedParameter(0) /* GLuint pipeline */); break; case NFOSMESA_GLVARIANTARRAYOBJECTATI: D(funcname = "glVariantArrayObjectATI"); if (GL_ISAVAILABLE(glVariantArrayObjectATI)) nfglVariantArrayObjectATI( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLsizei stride */ getStackedParameter(3), /* GLuint buffer */ getStackedParameter(4) /* GLuint offset */); break; case NFOSMESA_GLVARIANTPOINTEREXT: D(funcname = "glVariantPointerEXT"); if (GL_ISAVAILABLE(glVariantPointerEXT)) nfglVariantPointerEXT( getStackedParameter(0), /* GLuint id */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLuint stride */ getStackedPointer(3, const void *) /* const void *addr */); break; case NFOSMESA_GLVARIANTBVEXT: D(funcname = "glVariantbvEXT"); if (GL_ISAVAILABLE(glVariantbvEXT)) nfglVariantbvEXT( getStackedParameter(0), /* GLuint id */ getStackedPointer(1, const GLbyte *) /* const GLbyte *addr */); break; case NFOSMESA_GLVARIANTDVEXT: D(funcname = "glVariantdvEXT"); if (GL_ISAVAILABLE(glVariantdvEXT)) nfglVariantdvEXT( getStackedParameter(0), /* GLuint id */ getStackedPointer(1, const GLdouble *) /* const GLdouble *addr */); break; case NFOSMESA_GLVARIANTFVEXT: D(funcname = "glVariantfvEXT"); if (GL_ISAVAILABLE(glVariantfvEXT)) nfglVariantfvEXT( getStackedParameter(0), /* GLuint id */ getStackedPointer(1, const GLfloat *) /* const GLfloat *addr */); break; case NFOSMESA_GLVARIANTIVEXT: D(funcname = "glVariantivEXT"); if (GL_ISAVAILABLE(glVariantivEXT)) nfglVariantivEXT( getStackedParameter(0), /* GLuint id */ getStackedPointer(1, const GLint *) /* const GLint *addr */); break; case NFOSMESA_GLVARIANTSVEXT: D(funcname = "glVariantsvEXT"); if (GL_ISAVAILABLE(glVariantsvEXT)) nfglVariantsvEXT( getStackedParameter(0), /* GLuint id */ getStackedPointer(1, const GLshort *) /* const GLshort *addr */); break; case NFOSMESA_GLVARIANTUBVEXT: D(funcname = "glVariantubvEXT"); if (GL_ISAVAILABLE(glVariantubvEXT)) nfglVariantubvEXT( getStackedParameter(0), /* GLuint id */ getStackedPointer(1, const GLubyte *) /* const GLubyte *addr */); break; case NFOSMESA_GLVARIANTUIVEXT: D(funcname = "glVariantuivEXT"); if (GL_ISAVAILABLE(glVariantuivEXT)) nfglVariantuivEXT( getStackedParameter(0), /* GLuint id */ getStackedPointer(1, const GLuint *) /* const GLuint *addr */); break; case NFOSMESA_GLVARIANTUSVEXT: D(funcname = "glVariantusvEXT"); if (GL_ISAVAILABLE(glVariantusvEXT)) nfglVariantusvEXT( getStackedParameter(0), /* GLuint id */ getStackedPointer(1, const GLushort *) /* const GLushort *addr */); break; case NFOSMESA_GLVERTEX2BOES: D(funcname = "glVertex2bOES"); if (GL_ISAVAILABLE(glVertex2bOES)) nfglVertex2bOES( getStackedParameter(0), /* GLbyte32 x */ getStackedParameter(1) /* GLbyte32 y */); break; case NFOSMESA_GLVERTEX2BVOES: D(funcname = "glVertex2bvOES"); if (GL_ISAVAILABLE(glVertex2bvOES)) nfglVertex2bvOES( getStackedPointer(0, const GLbyte *) /* const GLbyte *coords */); break; case NFOSMESA_GLVERTEX2D: D(funcname = "glVertex2d"); if (GL_ISAVAILABLE(glVertex2d)) nfglVertex2d( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2) /* GLdouble y */); break; case NFOSMESA_GLVERTEX2DV: D(funcname = "glVertex2dv"); if (GL_ISAVAILABLE(glVertex2dv)) nfglVertex2dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEX2F: D(funcname = "glVertex2f"); if (GL_ISAVAILABLE(glVertex2f)) nfglVertex2f( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1) /* GLfloat y */); break; case NFOSMESA_GLVERTEX2FV: D(funcname = "glVertex2fv"); if (GL_ISAVAILABLE(glVertex2fv)) nfglVertex2fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEX2HNV: D(funcname = "glVertex2hNV"); if (GL_ISAVAILABLE(glVertex2hNV)) nfglVertex2hNV( getStackedParameter(0), /* GLhalfNV32 x */ getStackedParameter(1) /* GLhalfNV32 y */); break; case NFOSMESA_GLVERTEX2HVNV: D(funcname = "glVertex2hvNV"); if (GL_ISAVAILABLE(glVertex2hvNV)) nfglVertex2hvNV( getStackedPointer(0, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLVERTEX2I: D(funcname = "glVertex2i"); if (GL_ISAVAILABLE(glVertex2i)) nfglVertex2i( getStackedParameter(0), /* GLint x */ getStackedParameter(1) /* GLint y */); break; case NFOSMESA_GLVERTEX2IV: D(funcname = "glVertex2iv"); if (GL_ISAVAILABLE(glVertex2iv)) nfglVertex2iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEX2S: D(funcname = "glVertex2s"); if (GL_ISAVAILABLE(glVertex2s)) nfglVertex2s( getStackedParameter(0), /* GLshort32 x */ getStackedParameter(1) /* GLshort32 y */); break; case NFOSMESA_GLVERTEX2SV: D(funcname = "glVertex2sv"); if (GL_ISAVAILABLE(glVertex2sv)) nfglVertex2sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEX2XOES: D(funcname = "glVertex2xOES"); if (GL_ISAVAILABLE(glVertex2xOES)) nfglVertex2xOES( getStackedParameter(0) /* GLfixed x */); break; case NFOSMESA_GLVERTEX2XVOES: D(funcname = "glVertex2xvOES"); if (GL_ISAVAILABLE(glVertex2xvOES)) nfglVertex2xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLVERTEX3BOES: D(funcname = "glVertex3bOES"); if (GL_ISAVAILABLE(glVertex3bOES)) nfglVertex3bOES( getStackedParameter(0), /* GLbyte32 x */ getStackedParameter(1), /* GLbyte32 y */ getStackedParameter(2) /* GLbyte32 z */); break; case NFOSMESA_GLVERTEX3BVOES: D(funcname = "glVertex3bvOES"); if (GL_ISAVAILABLE(glVertex3bvOES)) nfglVertex3bvOES( getStackedPointer(0, const GLbyte *) /* const GLbyte *coords */); break; case NFOSMESA_GLVERTEX3D: D(funcname = "glVertex3d"); if (GL_ISAVAILABLE(glVertex3d)) nfglVertex3d( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2), /* GLdouble y */ getStackedDouble(4) /* GLdouble z */); break; case NFOSMESA_GLVERTEX3DV: D(funcname = "glVertex3dv"); if (GL_ISAVAILABLE(glVertex3dv)) nfglVertex3dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEX3F: D(funcname = "glVertex3f"); if (GL_ISAVAILABLE(glVertex3f)) nfglVertex3f( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1), /* GLfloat y */ getStackedFloat(2) /* GLfloat z */); break; case NFOSMESA_GLVERTEX3FV: D(funcname = "glVertex3fv"); if (GL_ISAVAILABLE(glVertex3fv)) nfglVertex3fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEX3HNV: D(funcname = "glVertex3hNV"); if (GL_ISAVAILABLE(glVertex3hNV)) nfglVertex3hNV( getStackedParameter(0), /* GLhalfNV32 x */ getStackedParameter(1), /* GLhalfNV32 y */ getStackedParameter(2) /* GLhalfNV32 z */); break; case NFOSMESA_GLVERTEX3HVNV: D(funcname = "glVertex3hvNV"); if (GL_ISAVAILABLE(glVertex3hvNV)) nfglVertex3hvNV( getStackedPointer(0, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLVERTEX3I: D(funcname = "glVertex3i"); if (GL_ISAVAILABLE(glVertex3i)) nfglVertex3i( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2) /* GLint z */); break; case NFOSMESA_GLVERTEX3IV: D(funcname = "glVertex3iv"); if (GL_ISAVAILABLE(glVertex3iv)) nfglVertex3iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEX3S: D(funcname = "glVertex3s"); if (GL_ISAVAILABLE(glVertex3s)) nfglVertex3s( getStackedParameter(0), /* GLshort32 x */ getStackedParameter(1), /* GLshort32 y */ getStackedParameter(2) /* GLshort32 z */); break; case NFOSMESA_GLVERTEX3SV: D(funcname = "glVertex3sv"); if (GL_ISAVAILABLE(glVertex3sv)) nfglVertex3sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEX3XOES: D(funcname = "glVertex3xOES"); if (GL_ISAVAILABLE(glVertex3xOES)) nfglVertex3xOES( getStackedParameter(0), /* GLfixed x */ getStackedParameter(1) /* GLfixed y */); break; case NFOSMESA_GLVERTEX3XVOES: D(funcname = "glVertex3xvOES"); if (GL_ISAVAILABLE(glVertex3xvOES)) nfglVertex3xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLVERTEX4BOES: D(funcname = "glVertex4bOES"); if (GL_ISAVAILABLE(glVertex4bOES)) nfglVertex4bOES( getStackedParameter(0), /* GLbyte32 x */ getStackedParameter(1), /* GLbyte32 y */ getStackedParameter(2), /* GLbyte32 z */ getStackedParameter(3) /* GLbyte32 w */); break; case NFOSMESA_GLVERTEX4BVOES: D(funcname = "glVertex4bvOES"); if (GL_ISAVAILABLE(glVertex4bvOES)) nfglVertex4bvOES( getStackedPointer(0, const GLbyte *) /* const GLbyte *coords */); break; case NFOSMESA_GLVERTEX4D: D(funcname = "glVertex4d"); if (GL_ISAVAILABLE(glVertex4d)) nfglVertex4d( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2), /* GLdouble y */ getStackedDouble(4), /* GLdouble z */ getStackedDouble(6) /* GLdouble w */); break; case NFOSMESA_GLVERTEX4DV: D(funcname = "glVertex4dv"); if (GL_ISAVAILABLE(glVertex4dv)) nfglVertex4dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEX4F: D(funcname = "glVertex4f"); if (GL_ISAVAILABLE(glVertex4f)) nfglVertex4f( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1), /* GLfloat y */ getStackedFloat(2), /* GLfloat z */ getStackedFloat(3) /* GLfloat w */); break; case NFOSMESA_GLVERTEX4FV: D(funcname = "glVertex4fv"); if (GL_ISAVAILABLE(glVertex4fv)) nfglVertex4fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEX4HNV: D(funcname = "glVertex4hNV"); if (GL_ISAVAILABLE(glVertex4hNV)) nfglVertex4hNV( getStackedParameter(0), /* GLhalfNV32 x */ getStackedParameter(1), /* GLhalfNV32 y */ getStackedParameter(2), /* GLhalfNV32 z */ getStackedParameter(3) /* GLhalfNV32 w */); break; case NFOSMESA_GLVERTEX4HVNV: D(funcname = "glVertex4hvNV"); if (GL_ISAVAILABLE(glVertex4hvNV)) nfglVertex4hvNV( getStackedPointer(0, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLVERTEX4I: D(funcname = "glVertex4i"); if (GL_ISAVAILABLE(glVertex4i)) nfglVertex4i( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2), /* GLint z */ getStackedParameter(3) /* GLint w */); break; case NFOSMESA_GLVERTEX4IV: D(funcname = "glVertex4iv"); if (GL_ISAVAILABLE(glVertex4iv)) nfglVertex4iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEX4S: D(funcname = "glVertex4s"); if (GL_ISAVAILABLE(glVertex4s)) nfglVertex4s( getStackedParameter(0), /* GLshort32 x */ getStackedParameter(1), /* GLshort32 y */ getStackedParameter(2), /* GLshort32 z */ getStackedParameter(3) /* GLshort32 w */); break; case NFOSMESA_GLVERTEX4SV: D(funcname = "glVertex4sv"); if (GL_ISAVAILABLE(glVertex4sv)) nfglVertex4sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEX4XOES: D(funcname = "glVertex4xOES"); if (GL_ISAVAILABLE(glVertex4xOES)) nfglVertex4xOES( getStackedParameter(0), /* GLfixed x */ getStackedParameter(1), /* GLfixed y */ getStackedParameter(2) /* GLfixed z */); break; case NFOSMESA_GLVERTEX4XVOES: D(funcname = "glVertex4xvOES"); if (GL_ISAVAILABLE(glVertex4xvOES)) nfglVertex4xvOES( getStackedPointer(0, const GLfixed *) /* const GLfixed *coords */); break; case NFOSMESA_GLVERTEXARRAYATTRIBBINDING: D(funcname = "glVertexArrayAttribBinding"); if (GL_ISAVAILABLE(glVertexArrayAttribBinding)) nfglVertexArrayAttribBinding( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint attribindex */ getStackedParameter(2) /* GLuint bindingindex */); break; case NFOSMESA_GLVERTEXARRAYATTRIBFORMAT: D(funcname = "glVertexArrayAttribFormat"); if (GL_ISAVAILABLE(glVertexArrayAttribFormat)) nfglVertexArrayAttribFormat( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint attribindex */ getStackedParameter(2), /* GLint size */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4), /* GLboolean32 normalized */ getStackedParameter(5) /* GLuint relativeoffset */); break; case NFOSMESA_GLVERTEXARRAYATTRIBIFORMAT: D(funcname = "glVertexArrayAttribIFormat"); if (GL_ISAVAILABLE(glVertexArrayAttribIFormat)) nfglVertexArrayAttribIFormat( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint attribindex */ getStackedParameter(2), /* GLint size */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4) /* GLuint relativeoffset */); break; case NFOSMESA_GLVERTEXARRAYATTRIBLFORMAT: D(funcname = "glVertexArrayAttribLFormat"); if (GL_ISAVAILABLE(glVertexArrayAttribLFormat)) nfglVertexArrayAttribLFormat( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint attribindex */ getStackedParameter(2), /* GLint size */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4) /* GLuint relativeoffset */); break; case NFOSMESA_GLVERTEXARRAYBINDVERTEXBUFFEREXT: D(funcname = "glVertexArrayBindVertexBufferEXT"); if (GL_ISAVAILABLE(glVertexArrayBindVertexBufferEXT)) nfglVertexArrayBindVertexBufferEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint bindingindex */ getStackedParameter(2), /* GLuint buffer */ getStackedParameter(3), /* GLintptr offset */ getStackedParameter(4) /* GLsizei stride */); break; case NFOSMESA_GLVERTEXARRAYBINDINGDIVISOR: D(funcname = "glVertexArrayBindingDivisor"); if (GL_ISAVAILABLE(glVertexArrayBindingDivisor)) nfglVertexArrayBindingDivisor( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint bindingindex */ getStackedParameter(2) /* GLuint divisor */); break; case NFOSMESA_GLVERTEXARRAYCOLOROFFSETEXT: D(funcname = "glVertexArrayColorOffsetEXT"); if (GL_ISAVAILABLE(glVertexArrayColorOffsetEXT)) nfglVertexArrayColorOffsetEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLint size */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4), /* GLsizei stride */ getStackedParameter(5) /* GLintptr offset */); break; case NFOSMESA_GLVERTEXARRAYEDGEFLAGOFFSETEXT: D(funcname = "glVertexArrayEdgeFlagOffsetEXT"); if (GL_ISAVAILABLE(glVertexArrayEdgeFlagOffsetEXT)) nfglVertexArrayEdgeFlagOffsetEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLsizei stride */ getStackedParameter(3) /* GLintptr offset */); break; case NFOSMESA_GLVERTEXARRAYELEMENTBUFFER: D(funcname = "glVertexArrayElementBuffer"); if (GL_ISAVAILABLE(glVertexArrayElementBuffer)) nfglVertexArrayElementBuffer( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1) /* GLuint buffer */); break; case NFOSMESA_GLVERTEXARRAYFOGCOORDOFFSETEXT: D(funcname = "glVertexArrayFogCoordOffsetEXT"); if (GL_ISAVAILABLE(glVertexArrayFogCoordOffsetEXT)) nfglVertexArrayFogCoordOffsetEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei stride */ getStackedParameter(4) /* GLintptr offset */); break; case NFOSMESA_GLVERTEXARRAYINDEXOFFSETEXT: D(funcname = "glVertexArrayIndexOffsetEXT"); if (GL_ISAVAILABLE(glVertexArrayIndexOffsetEXT)) nfglVertexArrayIndexOffsetEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei stride */ getStackedParameter(4) /* GLintptr offset */); break; case NFOSMESA_GLVERTEXARRAYMULTITEXCOORDOFFSETEXT: D(funcname = "glVertexArrayMultiTexCoordOffsetEXT"); if (GL_ISAVAILABLE(glVertexArrayMultiTexCoordOffsetEXT)) nfglVertexArrayMultiTexCoordOffsetEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLenum texunit */ getStackedParameter(3), /* GLint size */ getStackedParameter(4), /* GLenum type */ getStackedParameter(5), /* GLsizei stride */ getStackedParameter(6) /* GLintptr offset */); break; case NFOSMESA_GLVERTEXARRAYNORMALOFFSETEXT: D(funcname = "glVertexArrayNormalOffsetEXT"); if (GL_ISAVAILABLE(glVertexArrayNormalOffsetEXT)) nfglVertexArrayNormalOffsetEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei stride */ getStackedParameter(4) /* GLintptr offset */); break; case NFOSMESA_GLVERTEXARRAYPARAMETERIAPPLE: D(funcname = "glVertexArrayParameteriAPPLE"); if (GL_ISAVAILABLE(glVertexArrayParameteriAPPLE)) nfglVertexArrayParameteriAPPLE( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLVERTEXARRAYRANGEAPPLE: D(funcname = "glVertexArrayRangeAPPLE"); if (GL_ISAVAILABLE(glVertexArrayRangeAPPLE)) nfglVertexArrayRangeAPPLE( getStackedParameter(0), /* GLsizei length */ getStackedPointer(1, void *) /* void *pointer */); break; case NFOSMESA_GLVERTEXARRAYRANGENV: D(funcname = "glVertexArrayRangeNV"); if (GL_ISAVAILABLE(glVertexArrayRangeNV)) nfglVertexArrayRangeNV( getStackedParameter(0), /* GLsizei length */ getStackedPointer(1, const void *) /* const void *pointer */); break; case NFOSMESA_GLVERTEXARRAYSECONDARYCOLOROFFSETEXT: D(funcname = "glVertexArraySecondaryColorOffsetEXT"); if (GL_ISAVAILABLE(glVertexArraySecondaryColorOffsetEXT)) nfglVertexArraySecondaryColorOffsetEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLint size */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4), /* GLsizei stride */ getStackedParameter(5) /* GLintptr offset */); break; case NFOSMESA_GLVERTEXARRAYTEXCOORDOFFSETEXT: D(funcname = "glVertexArrayTexCoordOffsetEXT"); if (GL_ISAVAILABLE(glVertexArrayTexCoordOffsetEXT)) nfglVertexArrayTexCoordOffsetEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLint size */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4), /* GLsizei stride */ getStackedParameter(5) /* GLintptr offset */); break; case NFOSMESA_GLVERTEXARRAYVERTEXATTRIBBINDINGEXT: D(funcname = "glVertexArrayVertexAttribBindingEXT"); if (GL_ISAVAILABLE(glVertexArrayVertexAttribBindingEXT)) nfglVertexArrayVertexAttribBindingEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint attribindex */ getStackedParameter(2) /* GLuint bindingindex */); break; case NFOSMESA_GLVERTEXARRAYVERTEXATTRIBDIVISOREXT: D(funcname = "glVertexArrayVertexAttribDivisorEXT"); if (GL_ISAVAILABLE(glVertexArrayVertexAttribDivisorEXT)) nfglVertexArrayVertexAttribDivisorEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint index */ getStackedParameter(2) /* GLuint divisor */); break; case NFOSMESA_GLVERTEXARRAYVERTEXATTRIBFORMATEXT: D(funcname = "glVertexArrayVertexAttribFormatEXT"); if (GL_ISAVAILABLE(glVertexArrayVertexAttribFormatEXT)) nfglVertexArrayVertexAttribFormatEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint attribindex */ getStackedParameter(2), /* GLint size */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4), /* GLboolean32 normalized */ getStackedParameter(5) /* GLuint relativeoffset */); break; case NFOSMESA_GLVERTEXARRAYVERTEXATTRIBIFORMATEXT: D(funcname = "glVertexArrayVertexAttribIFormatEXT"); if (GL_ISAVAILABLE(glVertexArrayVertexAttribIFormatEXT)) nfglVertexArrayVertexAttribIFormatEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint attribindex */ getStackedParameter(2), /* GLint size */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4) /* GLuint relativeoffset */); break; case NFOSMESA_GLVERTEXARRAYVERTEXATTRIBIOFFSETEXT: D(funcname = "glVertexArrayVertexAttribIOffsetEXT"); if (GL_ISAVAILABLE(glVertexArrayVertexAttribIOffsetEXT)) nfglVertexArrayVertexAttribIOffsetEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLuint index */ getStackedParameter(3), /* GLint size */ getStackedParameter(4), /* GLenum type */ getStackedParameter(5), /* GLsizei stride */ getStackedParameter(6) /* GLintptr offset */); break; case NFOSMESA_GLVERTEXARRAYVERTEXATTRIBLFORMATEXT: D(funcname = "glVertexArrayVertexAttribLFormatEXT"); if (GL_ISAVAILABLE(glVertexArrayVertexAttribLFormatEXT)) nfglVertexArrayVertexAttribLFormatEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint attribindex */ getStackedParameter(2), /* GLint size */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4) /* GLuint relativeoffset */); break; case NFOSMESA_GLVERTEXARRAYVERTEXATTRIBLOFFSETEXT: D(funcname = "glVertexArrayVertexAttribLOffsetEXT"); if (GL_ISAVAILABLE(glVertexArrayVertexAttribLOffsetEXT)) nfglVertexArrayVertexAttribLOffsetEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLuint index */ getStackedParameter(3), /* GLint size */ getStackedParameter(4), /* GLenum type */ getStackedParameter(5), /* GLsizei stride */ getStackedParameter(6) /* GLintptr offset */); break; case NFOSMESA_GLVERTEXARRAYVERTEXATTRIBOFFSETEXT: D(funcname = "glVertexArrayVertexAttribOffsetEXT"); if (GL_ISAVAILABLE(glVertexArrayVertexAttribOffsetEXT)) nfglVertexArrayVertexAttribOffsetEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLuint index */ getStackedParameter(3), /* GLint size */ getStackedParameter(4), /* GLenum type */ getStackedParameter(5), /* GLboolean32 normalized */ getStackedParameter(6), /* GLsizei stride */ getStackedParameter(7) /* GLintptr offset */); break; case NFOSMESA_GLVERTEXARRAYVERTEXBINDINGDIVISOREXT: D(funcname = "glVertexArrayVertexBindingDivisorEXT"); if (GL_ISAVAILABLE(glVertexArrayVertexBindingDivisorEXT)) nfglVertexArrayVertexBindingDivisorEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint bindingindex */ getStackedParameter(2) /* GLuint divisor */); break; case NFOSMESA_GLVERTEXARRAYVERTEXBUFFER: D(funcname = "glVertexArrayVertexBuffer"); if (GL_ISAVAILABLE(glVertexArrayVertexBuffer)) nfglVertexArrayVertexBuffer( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint bindingindex */ getStackedParameter(2), /* GLuint buffer */ getStackedParameter(3), /* GLintptr offset */ getStackedParameter(4) /* GLsizei stride */); break; case NFOSMESA_GLVERTEXARRAYVERTEXBUFFERS: D(funcname = "glVertexArrayVertexBuffers"); if (GL_ISAVAILABLE(glVertexArrayVertexBuffers)) nfglVertexArrayVertexBuffers( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint first */ getStackedParameter(2), /* GLsizei count */ getStackedPointer(3, const GLuint *), /* const GLuint *buffers */ getStackedPointer(4, const GLintptr *), /* const GLintptr *offsets */ getStackedPointer(5, const GLsizei *) /* const GLsizei *strides */); break; case NFOSMESA_GLVERTEXARRAYVERTEXOFFSETEXT: D(funcname = "glVertexArrayVertexOffsetEXT"); if (GL_ISAVAILABLE(glVertexArrayVertexOffsetEXT)) nfglVertexArrayVertexOffsetEXT( getStackedParameter(0), /* GLuint vaobj */ getStackedParameter(1), /* GLuint buffer */ getStackedParameter(2), /* GLint size */ getStackedParameter(3), /* GLenum type */ getStackedParameter(4), /* GLsizei stride */ getStackedParameter(5) /* GLintptr offset */); break; case NFOSMESA_GLVERTEXATTRIB1D: D(funcname = "glVertexAttrib1d"); if (GL_ISAVAILABLE(glVertexAttrib1d)) nfglVertexAttrib1d( getStackedParameter(0), /* GLuint index */ getStackedDouble(1) /* GLdouble x */); break; case NFOSMESA_GLVERTEXATTRIB1DARB: D(funcname = "glVertexAttrib1dARB"); if (GL_ISAVAILABLE(glVertexAttrib1dARB)) nfglVertexAttrib1dARB( getStackedParameter(0), /* GLuint index */ getStackedDouble(1) /* GLdouble x */); break; case NFOSMESA_GLVERTEXATTRIB1DNV: D(funcname = "glVertexAttrib1dNV"); if (GL_ISAVAILABLE(glVertexAttrib1dNV)) nfglVertexAttrib1dNV( getStackedParameter(0), /* GLuint index */ getStackedDouble(1) /* GLdouble x */); break; case NFOSMESA_GLVERTEXATTRIB1DV: D(funcname = "glVertexAttrib1dv"); if (GL_ISAVAILABLE(glVertexAttrib1dv)) nfglVertexAttrib1dv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIB1DVARB: D(funcname = "glVertexAttrib1dvARB"); if (GL_ISAVAILABLE(glVertexAttrib1dvARB)) nfglVertexAttrib1dvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIB1DVNV: D(funcname = "glVertexAttrib1dvNV"); if (GL_ISAVAILABLE(glVertexAttrib1dvNV)) nfglVertexAttrib1dvNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIB1F: D(funcname = "glVertexAttrib1f"); if (GL_ISAVAILABLE(glVertexAttrib1f)) nfglVertexAttrib1f( getStackedParameter(0), /* GLuint index */ getStackedFloat(1) /* GLfloat x */); break; case NFOSMESA_GLVERTEXATTRIB1FARB: D(funcname = "glVertexAttrib1fARB"); if (GL_ISAVAILABLE(glVertexAttrib1fARB)) nfglVertexAttrib1fARB( getStackedParameter(0), /* GLuint index */ getStackedFloat(1) /* GLfloat x */); break; case NFOSMESA_GLVERTEXATTRIB1FNV: D(funcname = "glVertexAttrib1fNV"); if (GL_ISAVAILABLE(glVertexAttrib1fNV)) nfglVertexAttrib1fNV( getStackedParameter(0), /* GLuint index */ getStackedFloat(1) /* GLfloat x */); break; case NFOSMESA_GLVERTEXATTRIB1FV: D(funcname = "glVertexAttrib1fv"); if (GL_ISAVAILABLE(glVertexAttrib1fv)) nfglVertexAttrib1fv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIB1FVARB: D(funcname = "glVertexAttrib1fvARB"); if (GL_ISAVAILABLE(glVertexAttrib1fvARB)) nfglVertexAttrib1fvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIB1FVNV: D(funcname = "glVertexAttrib1fvNV"); if (GL_ISAVAILABLE(glVertexAttrib1fvNV)) nfglVertexAttrib1fvNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIB1HNV: D(funcname = "glVertexAttrib1hNV"); if (GL_ISAVAILABLE(glVertexAttrib1hNV)) nfglVertexAttrib1hNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1) /* GLhalfNV32 x */); break; case NFOSMESA_GLVERTEXATTRIB1HVNV: D(funcname = "glVertexAttrib1hvNV"); if (GL_ISAVAILABLE(glVertexAttrib1hvNV)) nfglVertexAttrib1hvNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLVERTEXATTRIB1S: D(funcname = "glVertexAttrib1s"); if (GL_ISAVAILABLE(glVertexAttrib1s)) nfglVertexAttrib1s( getStackedParameter(0), /* GLuint index */ getStackedParameter(1) /* GLshort32 x */); break; case NFOSMESA_GLVERTEXATTRIB1SARB: D(funcname = "glVertexAttrib1sARB"); if (GL_ISAVAILABLE(glVertexAttrib1sARB)) nfglVertexAttrib1sARB( getStackedParameter(0), /* GLuint index */ getStackedParameter(1) /* GLshort32 x */); break; case NFOSMESA_GLVERTEXATTRIB1SNV: D(funcname = "glVertexAttrib1sNV"); if (GL_ISAVAILABLE(glVertexAttrib1sNV)) nfglVertexAttrib1sNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1) /* GLshort32 x */); break; case NFOSMESA_GLVERTEXATTRIB1SV: D(funcname = "glVertexAttrib1sv"); if (GL_ISAVAILABLE(glVertexAttrib1sv)) nfglVertexAttrib1sv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIB1SVARB: D(funcname = "glVertexAttrib1svARB"); if (GL_ISAVAILABLE(glVertexAttrib1svARB)) nfglVertexAttrib1svARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIB1SVNV: D(funcname = "glVertexAttrib1svNV"); if (GL_ISAVAILABLE(glVertexAttrib1svNV)) nfglVertexAttrib1svNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIB2D: D(funcname = "glVertexAttrib2d"); if (GL_ISAVAILABLE(glVertexAttrib2d)) nfglVertexAttrib2d( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3) /* GLdouble y */); break; case NFOSMESA_GLVERTEXATTRIB2DARB: D(funcname = "glVertexAttrib2dARB"); if (GL_ISAVAILABLE(glVertexAttrib2dARB)) nfglVertexAttrib2dARB( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3) /* GLdouble y */); break; case NFOSMESA_GLVERTEXATTRIB2DNV: D(funcname = "glVertexAttrib2dNV"); if (GL_ISAVAILABLE(glVertexAttrib2dNV)) nfglVertexAttrib2dNV( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3) /* GLdouble y */); break; case NFOSMESA_GLVERTEXATTRIB2DV: D(funcname = "glVertexAttrib2dv"); if (GL_ISAVAILABLE(glVertexAttrib2dv)) nfglVertexAttrib2dv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIB2DVARB: D(funcname = "glVertexAttrib2dvARB"); if (GL_ISAVAILABLE(glVertexAttrib2dvARB)) nfglVertexAttrib2dvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIB2DVNV: D(funcname = "glVertexAttrib2dvNV"); if (GL_ISAVAILABLE(glVertexAttrib2dvNV)) nfglVertexAttrib2dvNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIB2F: D(funcname = "glVertexAttrib2f"); if (GL_ISAVAILABLE(glVertexAttrib2f)) nfglVertexAttrib2f( getStackedParameter(0), /* GLuint index */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2) /* GLfloat y */); break; case NFOSMESA_GLVERTEXATTRIB2FARB: D(funcname = "glVertexAttrib2fARB"); if (GL_ISAVAILABLE(glVertexAttrib2fARB)) nfglVertexAttrib2fARB( getStackedParameter(0), /* GLuint index */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2) /* GLfloat y */); break; case NFOSMESA_GLVERTEXATTRIB2FNV: D(funcname = "glVertexAttrib2fNV"); if (GL_ISAVAILABLE(glVertexAttrib2fNV)) nfglVertexAttrib2fNV( getStackedParameter(0), /* GLuint index */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2) /* GLfloat y */); break; case NFOSMESA_GLVERTEXATTRIB2FV: D(funcname = "glVertexAttrib2fv"); if (GL_ISAVAILABLE(glVertexAttrib2fv)) nfglVertexAttrib2fv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIB2FVARB: D(funcname = "glVertexAttrib2fvARB"); if (GL_ISAVAILABLE(glVertexAttrib2fvARB)) nfglVertexAttrib2fvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIB2FVNV: D(funcname = "glVertexAttrib2fvNV"); if (GL_ISAVAILABLE(glVertexAttrib2fvNV)) nfglVertexAttrib2fvNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIB2HNV: D(funcname = "glVertexAttrib2hNV"); if (GL_ISAVAILABLE(glVertexAttrib2hNV)) nfglVertexAttrib2hNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLhalfNV32 x */ getStackedParameter(2) /* GLhalfNV32 y */); break; case NFOSMESA_GLVERTEXATTRIB2HVNV: D(funcname = "glVertexAttrib2hvNV"); if (GL_ISAVAILABLE(glVertexAttrib2hvNV)) nfglVertexAttrib2hvNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLVERTEXATTRIB2S: D(funcname = "glVertexAttrib2s"); if (GL_ISAVAILABLE(glVertexAttrib2s)) nfglVertexAttrib2s( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLshort32 x */ getStackedParameter(2) /* GLshort32 y */); break; case NFOSMESA_GLVERTEXATTRIB2SARB: D(funcname = "glVertexAttrib2sARB"); if (GL_ISAVAILABLE(glVertexAttrib2sARB)) nfglVertexAttrib2sARB( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLshort32 x */ getStackedParameter(2) /* GLshort32 y */); break; case NFOSMESA_GLVERTEXATTRIB2SNV: D(funcname = "glVertexAttrib2sNV"); if (GL_ISAVAILABLE(glVertexAttrib2sNV)) nfglVertexAttrib2sNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLshort32 x */ getStackedParameter(2) /* GLshort32 y */); break; case NFOSMESA_GLVERTEXATTRIB2SV: D(funcname = "glVertexAttrib2sv"); if (GL_ISAVAILABLE(glVertexAttrib2sv)) nfglVertexAttrib2sv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIB2SVARB: D(funcname = "glVertexAttrib2svARB"); if (GL_ISAVAILABLE(glVertexAttrib2svARB)) nfglVertexAttrib2svARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIB2SVNV: D(funcname = "glVertexAttrib2svNV"); if (GL_ISAVAILABLE(glVertexAttrib2svNV)) nfglVertexAttrib2svNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIB3D: D(funcname = "glVertexAttrib3d"); if (GL_ISAVAILABLE(glVertexAttrib3d)) nfglVertexAttrib3d( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5) /* GLdouble z */); break; case NFOSMESA_GLVERTEXATTRIB3DARB: D(funcname = "glVertexAttrib3dARB"); if (GL_ISAVAILABLE(glVertexAttrib3dARB)) nfglVertexAttrib3dARB( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5) /* GLdouble z */); break; case NFOSMESA_GLVERTEXATTRIB3DNV: D(funcname = "glVertexAttrib3dNV"); if (GL_ISAVAILABLE(glVertexAttrib3dNV)) nfglVertexAttrib3dNV( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5) /* GLdouble z */); break; case NFOSMESA_GLVERTEXATTRIB3DV: D(funcname = "glVertexAttrib3dv"); if (GL_ISAVAILABLE(glVertexAttrib3dv)) nfglVertexAttrib3dv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIB3DVARB: D(funcname = "glVertexAttrib3dvARB"); if (GL_ISAVAILABLE(glVertexAttrib3dvARB)) nfglVertexAttrib3dvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIB3DVNV: D(funcname = "glVertexAttrib3dvNV"); if (GL_ISAVAILABLE(glVertexAttrib3dvNV)) nfglVertexAttrib3dvNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIB3F: D(funcname = "glVertexAttrib3f"); if (GL_ISAVAILABLE(glVertexAttrib3f)) nfglVertexAttrib3f( getStackedParameter(0), /* GLuint index */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2), /* GLfloat y */ getStackedFloat(3) /* GLfloat z */); break; case NFOSMESA_GLVERTEXATTRIB3FARB: D(funcname = "glVertexAttrib3fARB"); if (GL_ISAVAILABLE(glVertexAttrib3fARB)) nfglVertexAttrib3fARB( getStackedParameter(0), /* GLuint index */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2), /* GLfloat y */ getStackedFloat(3) /* GLfloat z */); break; case NFOSMESA_GLVERTEXATTRIB3FNV: D(funcname = "glVertexAttrib3fNV"); if (GL_ISAVAILABLE(glVertexAttrib3fNV)) nfglVertexAttrib3fNV( getStackedParameter(0), /* GLuint index */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2), /* GLfloat y */ getStackedFloat(3) /* GLfloat z */); break; case NFOSMESA_GLVERTEXATTRIB3FV: D(funcname = "glVertexAttrib3fv"); if (GL_ISAVAILABLE(glVertexAttrib3fv)) nfglVertexAttrib3fv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIB3FVARB: D(funcname = "glVertexAttrib3fvARB"); if (GL_ISAVAILABLE(glVertexAttrib3fvARB)) nfglVertexAttrib3fvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIB3FVNV: D(funcname = "glVertexAttrib3fvNV"); if (GL_ISAVAILABLE(glVertexAttrib3fvNV)) nfglVertexAttrib3fvNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIB3HNV: D(funcname = "glVertexAttrib3hNV"); if (GL_ISAVAILABLE(glVertexAttrib3hNV)) nfglVertexAttrib3hNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLhalfNV32 x */ getStackedParameter(2), /* GLhalfNV32 y */ getStackedParameter(3) /* GLhalfNV32 z */); break; case NFOSMESA_GLVERTEXATTRIB3HVNV: D(funcname = "glVertexAttrib3hvNV"); if (GL_ISAVAILABLE(glVertexAttrib3hvNV)) nfglVertexAttrib3hvNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLVERTEXATTRIB3S: D(funcname = "glVertexAttrib3s"); if (GL_ISAVAILABLE(glVertexAttrib3s)) nfglVertexAttrib3s( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLshort32 x */ getStackedParameter(2), /* GLshort32 y */ getStackedParameter(3) /* GLshort32 z */); break; case NFOSMESA_GLVERTEXATTRIB3SARB: D(funcname = "glVertexAttrib3sARB"); if (GL_ISAVAILABLE(glVertexAttrib3sARB)) nfglVertexAttrib3sARB( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLshort32 x */ getStackedParameter(2), /* GLshort32 y */ getStackedParameter(3) /* GLshort32 z */); break; case NFOSMESA_GLVERTEXATTRIB3SNV: D(funcname = "glVertexAttrib3sNV"); if (GL_ISAVAILABLE(glVertexAttrib3sNV)) nfglVertexAttrib3sNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLshort32 x */ getStackedParameter(2), /* GLshort32 y */ getStackedParameter(3) /* GLshort32 z */); break; case NFOSMESA_GLVERTEXATTRIB3SV: D(funcname = "glVertexAttrib3sv"); if (GL_ISAVAILABLE(glVertexAttrib3sv)) nfglVertexAttrib3sv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIB3SVARB: D(funcname = "glVertexAttrib3svARB"); if (GL_ISAVAILABLE(glVertexAttrib3svARB)) nfglVertexAttrib3svARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIB3SVNV: D(funcname = "glVertexAttrib3svNV"); if (GL_ISAVAILABLE(glVertexAttrib3svNV)) nfglVertexAttrib3svNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIB4NBV: D(funcname = "glVertexAttrib4Nbv"); if (GL_ISAVAILABLE(glVertexAttrib4Nbv)) nfglVertexAttrib4Nbv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLbyte *) /* const GLbyte *v */); break; case NFOSMESA_GLVERTEXATTRIB4NBVARB: D(funcname = "glVertexAttrib4NbvARB"); if (GL_ISAVAILABLE(glVertexAttrib4NbvARB)) nfglVertexAttrib4NbvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLbyte *) /* const GLbyte *v */); break; case NFOSMESA_GLVERTEXATTRIB4NIV: D(funcname = "glVertexAttrib4Niv"); if (GL_ISAVAILABLE(glVertexAttrib4Niv)) nfglVertexAttrib4Niv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEXATTRIB4NIVARB: D(funcname = "glVertexAttrib4NivARB"); if (GL_ISAVAILABLE(glVertexAttrib4NivARB)) nfglVertexAttrib4NivARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEXATTRIB4NSV: D(funcname = "glVertexAttrib4Nsv"); if (GL_ISAVAILABLE(glVertexAttrib4Nsv)) nfglVertexAttrib4Nsv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIB4NSVARB: D(funcname = "glVertexAttrib4NsvARB"); if (GL_ISAVAILABLE(glVertexAttrib4NsvARB)) nfglVertexAttrib4NsvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIB4NUB: D(funcname = "glVertexAttrib4Nub"); if (GL_ISAVAILABLE(glVertexAttrib4Nub)) nfglVertexAttrib4Nub( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLubyte32 x */ getStackedParameter(2), /* GLubyte32 y */ getStackedParameter(3), /* GLubyte32 z */ getStackedParameter(4) /* GLubyte32 w */); break; case NFOSMESA_GLVERTEXATTRIB4NUBARB: D(funcname = "glVertexAttrib4NubARB"); if (GL_ISAVAILABLE(glVertexAttrib4NubARB)) nfglVertexAttrib4NubARB( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLubyte32 x */ getStackedParameter(2), /* GLubyte32 y */ getStackedParameter(3), /* GLubyte32 z */ getStackedParameter(4) /* GLubyte32 w */); break; case NFOSMESA_GLVERTEXATTRIB4NUBV: D(funcname = "glVertexAttrib4Nubv"); if (GL_ISAVAILABLE(glVertexAttrib4Nubv)) nfglVertexAttrib4Nubv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLubyte *) /* const GLubyte *v */); break; case NFOSMESA_GLVERTEXATTRIB4NUBVARB: D(funcname = "glVertexAttrib4NubvARB"); if (GL_ISAVAILABLE(glVertexAttrib4NubvARB)) nfglVertexAttrib4NubvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLubyte *) /* const GLubyte *v */); break; case NFOSMESA_GLVERTEXATTRIB4NUIV: D(funcname = "glVertexAttrib4Nuiv"); if (GL_ISAVAILABLE(glVertexAttrib4Nuiv)) nfglVertexAttrib4Nuiv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLVERTEXATTRIB4NUIVARB: D(funcname = "glVertexAttrib4NuivARB"); if (GL_ISAVAILABLE(glVertexAttrib4NuivARB)) nfglVertexAttrib4NuivARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLVERTEXATTRIB4NUSV: D(funcname = "glVertexAttrib4Nusv"); if (GL_ISAVAILABLE(glVertexAttrib4Nusv)) nfglVertexAttrib4Nusv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLushort *) /* const GLushort *v */); break; case NFOSMESA_GLVERTEXATTRIB4NUSVARB: D(funcname = "glVertexAttrib4NusvARB"); if (GL_ISAVAILABLE(glVertexAttrib4NusvARB)) nfglVertexAttrib4NusvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLushort *) /* const GLushort *v */); break; case NFOSMESA_GLVERTEXATTRIB4BV: D(funcname = "glVertexAttrib4bv"); if (GL_ISAVAILABLE(glVertexAttrib4bv)) nfglVertexAttrib4bv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLbyte *) /* const GLbyte *v */); break; case NFOSMESA_GLVERTEXATTRIB4BVARB: D(funcname = "glVertexAttrib4bvARB"); if (GL_ISAVAILABLE(glVertexAttrib4bvARB)) nfglVertexAttrib4bvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLbyte *) /* const GLbyte *v */); break; case NFOSMESA_GLVERTEXATTRIB4D: D(funcname = "glVertexAttrib4d"); if (GL_ISAVAILABLE(glVertexAttrib4d)) nfglVertexAttrib4d( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5), /* GLdouble z */ getStackedDouble(7) /* GLdouble w */); break; case NFOSMESA_GLVERTEXATTRIB4DARB: D(funcname = "glVertexAttrib4dARB"); if (GL_ISAVAILABLE(glVertexAttrib4dARB)) nfglVertexAttrib4dARB( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5), /* GLdouble z */ getStackedDouble(7) /* GLdouble w */); break; case NFOSMESA_GLVERTEXATTRIB4DNV: D(funcname = "glVertexAttrib4dNV"); if (GL_ISAVAILABLE(glVertexAttrib4dNV)) nfglVertexAttrib4dNV( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5), /* GLdouble z */ getStackedDouble(7) /* GLdouble w */); break; case NFOSMESA_GLVERTEXATTRIB4DV: D(funcname = "glVertexAttrib4dv"); if (GL_ISAVAILABLE(glVertexAttrib4dv)) nfglVertexAttrib4dv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIB4DVARB: D(funcname = "glVertexAttrib4dvARB"); if (GL_ISAVAILABLE(glVertexAttrib4dvARB)) nfglVertexAttrib4dvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIB4DVNV: D(funcname = "glVertexAttrib4dvNV"); if (GL_ISAVAILABLE(glVertexAttrib4dvNV)) nfglVertexAttrib4dvNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIB4F: D(funcname = "glVertexAttrib4f"); if (GL_ISAVAILABLE(glVertexAttrib4f)) nfglVertexAttrib4f( getStackedParameter(0), /* GLuint index */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2), /* GLfloat y */ getStackedFloat(3), /* GLfloat z */ getStackedFloat(4) /* GLfloat w */); break; case NFOSMESA_GLVERTEXATTRIB4FARB: D(funcname = "glVertexAttrib4fARB"); if (GL_ISAVAILABLE(glVertexAttrib4fARB)) nfglVertexAttrib4fARB( getStackedParameter(0), /* GLuint index */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2), /* GLfloat y */ getStackedFloat(3), /* GLfloat z */ getStackedFloat(4) /* GLfloat w */); break; case NFOSMESA_GLVERTEXATTRIB4FNV: D(funcname = "glVertexAttrib4fNV"); if (GL_ISAVAILABLE(glVertexAttrib4fNV)) nfglVertexAttrib4fNV( getStackedParameter(0), /* GLuint index */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2), /* GLfloat y */ getStackedFloat(3), /* GLfloat z */ getStackedFloat(4) /* GLfloat w */); break; case NFOSMESA_GLVERTEXATTRIB4FV: D(funcname = "glVertexAttrib4fv"); if (GL_ISAVAILABLE(glVertexAttrib4fv)) nfglVertexAttrib4fv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIB4FVARB: D(funcname = "glVertexAttrib4fvARB"); if (GL_ISAVAILABLE(glVertexAttrib4fvARB)) nfglVertexAttrib4fvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIB4FVNV: D(funcname = "glVertexAttrib4fvNV"); if (GL_ISAVAILABLE(glVertexAttrib4fvNV)) nfglVertexAttrib4fvNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIB4HNV: D(funcname = "glVertexAttrib4hNV"); if (GL_ISAVAILABLE(glVertexAttrib4hNV)) nfglVertexAttrib4hNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLhalfNV32 x */ getStackedParameter(2), /* GLhalfNV32 y */ getStackedParameter(3), /* GLhalfNV32 z */ getStackedParameter(4) /* GLhalfNV32 w */); break; case NFOSMESA_GLVERTEXATTRIB4HVNV: D(funcname = "glVertexAttrib4hvNV"); if (GL_ISAVAILABLE(glVertexAttrib4hvNV)) nfglVertexAttrib4hvNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLVERTEXATTRIB4IV: D(funcname = "glVertexAttrib4iv"); if (GL_ISAVAILABLE(glVertexAttrib4iv)) nfglVertexAttrib4iv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEXATTRIB4IVARB: D(funcname = "glVertexAttrib4ivARB"); if (GL_ISAVAILABLE(glVertexAttrib4ivARB)) nfglVertexAttrib4ivARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEXATTRIB4S: D(funcname = "glVertexAttrib4s"); if (GL_ISAVAILABLE(glVertexAttrib4s)) nfglVertexAttrib4s( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLshort32 x */ getStackedParameter(2), /* GLshort32 y */ getStackedParameter(3), /* GLshort32 z */ getStackedParameter(4) /* GLshort32 w */); break; case NFOSMESA_GLVERTEXATTRIB4SARB: D(funcname = "glVertexAttrib4sARB"); if (GL_ISAVAILABLE(glVertexAttrib4sARB)) nfglVertexAttrib4sARB( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLshort32 x */ getStackedParameter(2), /* GLshort32 y */ getStackedParameter(3), /* GLshort32 z */ getStackedParameter(4) /* GLshort32 w */); break; case NFOSMESA_GLVERTEXATTRIB4SNV: D(funcname = "glVertexAttrib4sNV"); if (GL_ISAVAILABLE(glVertexAttrib4sNV)) nfglVertexAttrib4sNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLshort32 x */ getStackedParameter(2), /* GLshort32 y */ getStackedParameter(3), /* GLshort32 z */ getStackedParameter(4) /* GLshort32 w */); break; case NFOSMESA_GLVERTEXATTRIB4SV: D(funcname = "glVertexAttrib4sv"); if (GL_ISAVAILABLE(glVertexAttrib4sv)) nfglVertexAttrib4sv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIB4SVARB: D(funcname = "glVertexAttrib4svARB"); if (GL_ISAVAILABLE(glVertexAttrib4svARB)) nfglVertexAttrib4svARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIB4SVNV: D(funcname = "glVertexAttrib4svNV"); if (GL_ISAVAILABLE(glVertexAttrib4svNV)) nfglVertexAttrib4svNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIB4UBNV: D(funcname = "glVertexAttrib4ubNV"); if (GL_ISAVAILABLE(glVertexAttrib4ubNV)) nfglVertexAttrib4ubNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLubyte32 x */ getStackedParameter(2), /* GLubyte32 y */ getStackedParameter(3), /* GLubyte32 z */ getStackedParameter(4) /* GLubyte32 w */); break; case NFOSMESA_GLVERTEXATTRIB4UBV: D(funcname = "glVertexAttrib4ubv"); if (GL_ISAVAILABLE(glVertexAttrib4ubv)) nfglVertexAttrib4ubv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLubyte *) /* const GLubyte *v */); break; case NFOSMESA_GLVERTEXATTRIB4UBVARB: D(funcname = "glVertexAttrib4ubvARB"); if (GL_ISAVAILABLE(glVertexAttrib4ubvARB)) nfglVertexAttrib4ubvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLubyte *) /* const GLubyte *v */); break; case NFOSMESA_GLVERTEXATTRIB4UBVNV: D(funcname = "glVertexAttrib4ubvNV"); if (GL_ISAVAILABLE(glVertexAttrib4ubvNV)) nfglVertexAttrib4ubvNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLubyte *) /* const GLubyte *v */); break; case NFOSMESA_GLVERTEXATTRIB4UIV: D(funcname = "glVertexAttrib4uiv"); if (GL_ISAVAILABLE(glVertexAttrib4uiv)) nfglVertexAttrib4uiv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLVERTEXATTRIB4UIVARB: D(funcname = "glVertexAttrib4uivARB"); if (GL_ISAVAILABLE(glVertexAttrib4uivARB)) nfglVertexAttrib4uivARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLVERTEXATTRIB4USV: D(funcname = "glVertexAttrib4usv"); if (GL_ISAVAILABLE(glVertexAttrib4usv)) nfglVertexAttrib4usv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLushort *) /* const GLushort *v */); break; case NFOSMESA_GLVERTEXATTRIB4USVARB: D(funcname = "glVertexAttrib4usvARB"); if (GL_ISAVAILABLE(glVertexAttrib4usvARB)) nfglVertexAttrib4usvARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLushort *) /* const GLushort *v */); break; case NFOSMESA_GLVERTEXATTRIBARRAYOBJECTATI: D(funcname = "glVertexAttribArrayObjectATI"); if (GL_ISAVAILABLE(glVertexAttribArrayObjectATI)) nfglVertexAttribArrayObjectATI( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLboolean32 normalized */ getStackedParameter(4), /* GLsizei stride */ getStackedParameter(5), /* GLuint buffer */ getStackedParameter(6) /* GLuint offset */); break; case NFOSMESA_GLVERTEXATTRIBBINDING: D(funcname = "glVertexAttribBinding"); if (GL_ISAVAILABLE(glVertexAttribBinding)) nfglVertexAttribBinding( getStackedParameter(0), /* GLuint attribindex */ getStackedParameter(1) /* GLuint bindingindex */); break; case NFOSMESA_GLVERTEXATTRIBDIVISOR: D(funcname = "glVertexAttribDivisor"); if (GL_ISAVAILABLE(glVertexAttribDivisor)) nfglVertexAttribDivisor( getStackedParameter(0), /* GLuint index */ getStackedParameter(1) /* GLuint divisor */); break; case NFOSMESA_GLVERTEXATTRIBDIVISORARB: D(funcname = "glVertexAttribDivisorARB"); if (GL_ISAVAILABLE(glVertexAttribDivisorARB)) nfglVertexAttribDivisorARB( getStackedParameter(0), /* GLuint index */ getStackedParameter(1) /* GLuint divisor */); break; case NFOSMESA_GLVERTEXATTRIBFORMAT: D(funcname = "glVertexAttribFormat"); if (GL_ISAVAILABLE(glVertexAttribFormat)) nfglVertexAttribFormat( getStackedParameter(0), /* GLuint attribindex */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLboolean32 normalized */ getStackedParameter(4) /* GLuint relativeoffset */); break; case NFOSMESA_GLVERTEXATTRIBFORMATNV: D(funcname = "glVertexAttribFormatNV"); if (GL_ISAVAILABLE(glVertexAttribFormatNV)) nfglVertexAttribFormatNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLboolean32 normalized */ getStackedParameter(4) /* GLsizei stride */); break; case NFOSMESA_GLVERTEXATTRIBI1I: D(funcname = "glVertexAttribI1i"); if (GL_ISAVAILABLE(glVertexAttribI1i)) nfglVertexAttribI1i( getStackedParameter(0), /* GLuint index */ getStackedParameter(1) /* GLint x */); break; case NFOSMESA_GLVERTEXATTRIBI1IEXT: D(funcname = "glVertexAttribI1iEXT"); if (GL_ISAVAILABLE(glVertexAttribI1iEXT)) nfglVertexAttribI1iEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1) /* GLint x */); break; case NFOSMESA_GLVERTEXATTRIBI1IV: D(funcname = "glVertexAttribI1iv"); if (GL_ISAVAILABLE(glVertexAttribI1iv)) nfglVertexAttribI1iv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEXATTRIBI1IVEXT: D(funcname = "glVertexAttribI1ivEXT"); if (GL_ISAVAILABLE(glVertexAttribI1ivEXT)) nfglVertexAttribI1ivEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEXATTRIBI1UI: D(funcname = "glVertexAttribI1ui"); if (GL_ISAVAILABLE(glVertexAttribI1ui)) nfglVertexAttribI1ui( getStackedParameter(0), /* GLuint index */ getStackedParameter(1) /* GLuint x */); break; case NFOSMESA_GLVERTEXATTRIBI1UIEXT: D(funcname = "glVertexAttribI1uiEXT"); if (GL_ISAVAILABLE(glVertexAttribI1uiEXT)) nfglVertexAttribI1uiEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1) /* GLuint x */); break; case NFOSMESA_GLVERTEXATTRIBI1UIV: D(funcname = "glVertexAttribI1uiv"); if (GL_ISAVAILABLE(glVertexAttribI1uiv)) nfglVertexAttribI1uiv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLVERTEXATTRIBI1UIVEXT: D(funcname = "glVertexAttribI1uivEXT"); if (GL_ISAVAILABLE(glVertexAttribI1uivEXT)) nfglVertexAttribI1uivEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLVERTEXATTRIBI2I: D(funcname = "glVertexAttribI2i"); if (GL_ISAVAILABLE(glVertexAttribI2i)) nfglVertexAttribI2i( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint x */ getStackedParameter(2) /* GLint y */); break; case NFOSMESA_GLVERTEXATTRIBI2IEXT: D(funcname = "glVertexAttribI2iEXT"); if (GL_ISAVAILABLE(glVertexAttribI2iEXT)) nfglVertexAttribI2iEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint x */ getStackedParameter(2) /* GLint y */); break; case NFOSMESA_GLVERTEXATTRIBI2IV: D(funcname = "glVertexAttribI2iv"); if (GL_ISAVAILABLE(glVertexAttribI2iv)) nfglVertexAttribI2iv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEXATTRIBI2IVEXT: D(funcname = "glVertexAttribI2ivEXT"); if (GL_ISAVAILABLE(glVertexAttribI2ivEXT)) nfglVertexAttribI2ivEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEXATTRIBI2UI: D(funcname = "glVertexAttribI2ui"); if (GL_ISAVAILABLE(glVertexAttribI2ui)) nfglVertexAttribI2ui( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLuint x */ getStackedParameter(2) /* GLuint y */); break; case NFOSMESA_GLVERTEXATTRIBI2UIEXT: D(funcname = "glVertexAttribI2uiEXT"); if (GL_ISAVAILABLE(glVertexAttribI2uiEXT)) nfglVertexAttribI2uiEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLuint x */ getStackedParameter(2) /* GLuint y */); break; case NFOSMESA_GLVERTEXATTRIBI2UIV: D(funcname = "glVertexAttribI2uiv"); if (GL_ISAVAILABLE(glVertexAttribI2uiv)) nfglVertexAttribI2uiv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLVERTEXATTRIBI2UIVEXT: D(funcname = "glVertexAttribI2uivEXT"); if (GL_ISAVAILABLE(glVertexAttribI2uivEXT)) nfglVertexAttribI2uivEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLVERTEXATTRIBI3I: D(funcname = "glVertexAttribI3i"); if (GL_ISAVAILABLE(glVertexAttribI3i)) nfglVertexAttribI3i( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint x */ getStackedParameter(2), /* GLint y */ getStackedParameter(3) /* GLint z */); break; case NFOSMESA_GLVERTEXATTRIBI3IEXT: D(funcname = "glVertexAttribI3iEXT"); if (GL_ISAVAILABLE(glVertexAttribI3iEXT)) nfglVertexAttribI3iEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint x */ getStackedParameter(2), /* GLint y */ getStackedParameter(3) /* GLint z */); break; case NFOSMESA_GLVERTEXATTRIBI3IV: D(funcname = "glVertexAttribI3iv"); if (GL_ISAVAILABLE(glVertexAttribI3iv)) nfglVertexAttribI3iv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEXATTRIBI3IVEXT: D(funcname = "glVertexAttribI3ivEXT"); if (GL_ISAVAILABLE(glVertexAttribI3ivEXT)) nfglVertexAttribI3ivEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEXATTRIBI3UI: D(funcname = "glVertexAttribI3ui"); if (GL_ISAVAILABLE(glVertexAttribI3ui)) nfglVertexAttribI3ui( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLuint x */ getStackedParameter(2), /* GLuint y */ getStackedParameter(3) /* GLuint z */); break; case NFOSMESA_GLVERTEXATTRIBI3UIEXT: D(funcname = "glVertexAttribI3uiEXT"); if (GL_ISAVAILABLE(glVertexAttribI3uiEXT)) nfglVertexAttribI3uiEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLuint x */ getStackedParameter(2), /* GLuint y */ getStackedParameter(3) /* GLuint z */); break; case NFOSMESA_GLVERTEXATTRIBI3UIV: D(funcname = "glVertexAttribI3uiv"); if (GL_ISAVAILABLE(glVertexAttribI3uiv)) nfglVertexAttribI3uiv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLVERTEXATTRIBI3UIVEXT: D(funcname = "glVertexAttribI3uivEXT"); if (GL_ISAVAILABLE(glVertexAttribI3uivEXT)) nfglVertexAttribI3uivEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLVERTEXATTRIBI4BV: D(funcname = "glVertexAttribI4bv"); if (GL_ISAVAILABLE(glVertexAttribI4bv)) nfglVertexAttribI4bv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLbyte *) /* const GLbyte *v */); break; case NFOSMESA_GLVERTEXATTRIBI4BVEXT: D(funcname = "glVertexAttribI4bvEXT"); if (GL_ISAVAILABLE(glVertexAttribI4bvEXT)) nfglVertexAttribI4bvEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLbyte *) /* const GLbyte *v */); break; case NFOSMESA_GLVERTEXATTRIBI4I: D(funcname = "glVertexAttribI4i"); if (GL_ISAVAILABLE(glVertexAttribI4i)) nfglVertexAttribI4i( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint x */ getStackedParameter(2), /* GLint y */ getStackedParameter(3), /* GLint z */ getStackedParameter(4) /* GLint w */); break; case NFOSMESA_GLVERTEXATTRIBI4IEXT: D(funcname = "glVertexAttribI4iEXT"); if (GL_ISAVAILABLE(glVertexAttribI4iEXT)) nfglVertexAttribI4iEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint x */ getStackedParameter(2), /* GLint y */ getStackedParameter(3), /* GLint z */ getStackedParameter(4) /* GLint w */); break; case NFOSMESA_GLVERTEXATTRIBI4IV: D(funcname = "glVertexAttribI4iv"); if (GL_ISAVAILABLE(glVertexAttribI4iv)) nfglVertexAttribI4iv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEXATTRIBI4IVEXT: D(funcname = "glVertexAttribI4ivEXT"); if (GL_ISAVAILABLE(glVertexAttribI4ivEXT)) nfglVertexAttribI4ivEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLVERTEXATTRIBI4SV: D(funcname = "glVertexAttribI4sv"); if (GL_ISAVAILABLE(glVertexAttribI4sv)) nfglVertexAttribI4sv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIBI4SVEXT: D(funcname = "glVertexAttribI4svEXT"); if (GL_ISAVAILABLE(glVertexAttribI4svEXT)) nfglVertexAttribI4svEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIBI4UBV: D(funcname = "glVertexAttribI4ubv"); if (GL_ISAVAILABLE(glVertexAttribI4ubv)) nfglVertexAttribI4ubv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLubyte *) /* const GLubyte *v */); break; case NFOSMESA_GLVERTEXATTRIBI4UBVEXT: D(funcname = "glVertexAttribI4ubvEXT"); if (GL_ISAVAILABLE(glVertexAttribI4ubvEXT)) nfglVertexAttribI4ubvEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLubyte *) /* const GLubyte *v */); break; case NFOSMESA_GLVERTEXATTRIBI4UI: D(funcname = "glVertexAttribI4ui"); if (GL_ISAVAILABLE(glVertexAttribI4ui)) nfglVertexAttribI4ui( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLuint x */ getStackedParameter(2), /* GLuint y */ getStackedParameter(3), /* GLuint z */ getStackedParameter(4) /* GLuint w */); break; case NFOSMESA_GLVERTEXATTRIBI4UIEXT: D(funcname = "glVertexAttribI4uiEXT"); if (GL_ISAVAILABLE(glVertexAttribI4uiEXT)) nfglVertexAttribI4uiEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLuint x */ getStackedParameter(2), /* GLuint y */ getStackedParameter(3), /* GLuint z */ getStackedParameter(4) /* GLuint w */); break; case NFOSMESA_GLVERTEXATTRIBI4UIV: D(funcname = "glVertexAttribI4uiv"); if (GL_ISAVAILABLE(glVertexAttribI4uiv)) nfglVertexAttribI4uiv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLVERTEXATTRIBI4UIVEXT: D(funcname = "glVertexAttribI4uivEXT"); if (GL_ISAVAILABLE(glVertexAttribI4uivEXT)) nfglVertexAttribI4uivEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint *) /* const GLuint *v */); break; case NFOSMESA_GLVERTEXATTRIBI4USV: D(funcname = "glVertexAttribI4usv"); if (GL_ISAVAILABLE(glVertexAttribI4usv)) nfglVertexAttribI4usv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLushort *) /* const GLushort *v */); break; case NFOSMESA_GLVERTEXATTRIBI4USVEXT: D(funcname = "glVertexAttribI4usvEXT"); if (GL_ISAVAILABLE(glVertexAttribI4usvEXT)) nfglVertexAttribI4usvEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLushort *) /* const GLushort *v */); break; case NFOSMESA_GLVERTEXATTRIBIFORMAT: D(funcname = "glVertexAttribIFormat"); if (GL_ISAVAILABLE(glVertexAttribIFormat)) nfglVertexAttribIFormat( getStackedParameter(0), /* GLuint attribindex */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3) /* GLuint relativeoffset */); break; case NFOSMESA_GLVERTEXATTRIBIFORMATNV: D(funcname = "glVertexAttribIFormatNV"); if (GL_ISAVAILABLE(glVertexAttribIFormatNV)) nfglVertexAttribIFormatNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3) /* GLsizei stride */); break; case NFOSMESA_GLVERTEXATTRIBIPOINTER: D(funcname = "glVertexAttribIPointer"); if (GL_ISAVAILABLE(glVertexAttribIPointer)) nfglVertexAttribIPointer( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei stride */ getStackedPointer(4, const void *) /* const void *pointer */); break; case NFOSMESA_GLVERTEXATTRIBIPOINTEREXT: D(funcname = "glVertexAttribIPointerEXT"); if (GL_ISAVAILABLE(glVertexAttribIPointerEXT)) nfglVertexAttribIPointerEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei stride */ getStackedPointer(4, const void *) /* const void *pointer */); break; case NFOSMESA_GLVERTEXATTRIBL1D: D(funcname = "glVertexAttribL1d"); if (GL_ISAVAILABLE(glVertexAttribL1d)) nfglVertexAttribL1d( getStackedParameter(0), /* GLuint index */ getStackedDouble(1) /* GLdouble x */); break; case NFOSMESA_GLVERTEXATTRIBL1DEXT: D(funcname = "glVertexAttribL1dEXT"); if (GL_ISAVAILABLE(glVertexAttribL1dEXT)) nfglVertexAttribL1dEXT( getStackedParameter(0), /* GLuint index */ getStackedDouble(1) /* GLdouble x */); break; case NFOSMESA_GLVERTEXATTRIBL1DV: D(funcname = "glVertexAttribL1dv"); if (GL_ISAVAILABLE(glVertexAttribL1dv)) nfglVertexAttribL1dv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIBL1DVEXT: D(funcname = "glVertexAttribL1dvEXT"); if (GL_ISAVAILABLE(glVertexAttribL1dvEXT)) nfglVertexAttribL1dvEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIBL1I64NV: D(funcname = "glVertexAttribL1i64NV"); if (GL_ISAVAILABLE(glVertexAttribL1i64NV)) nfglVertexAttribL1i64NV( getStackedParameter(0), /* GLuint index */ getStackedParameter64(1) /* GLint64EXT x */); break; case NFOSMESA_GLVERTEXATTRIBL1I64VNV: D(funcname = "glVertexAttribL1i64vNV"); if (GL_ISAVAILABLE(glVertexAttribL1i64vNV)) nfglVertexAttribL1i64vNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint64EXT *) /* const GLint64EXT *v */); break; case NFOSMESA_GLVERTEXATTRIBL1UI64ARB: D(funcname = "glVertexAttribL1ui64ARB"); if (GL_ISAVAILABLE(glVertexAttribL1ui64ARB)) nfglVertexAttribL1ui64ARB( getStackedParameter(0), /* GLuint index */ getStackedParameter64(1) /* GLuint64EXT x */); break; case NFOSMESA_GLVERTEXATTRIBL1UI64NV: D(funcname = "glVertexAttribL1ui64NV"); if (GL_ISAVAILABLE(glVertexAttribL1ui64NV)) nfglVertexAttribL1ui64NV( getStackedParameter(0), /* GLuint index */ getStackedParameter64(1) /* GLuint64EXT x */); break; case NFOSMESA_GLVERTEXATTRIBL1UI64VARB: D(funcname = "glVertexAttribL1ui64vARB"); if (GL_ISAVAILABLE(glVertexAttribL1ui64vARB)) nfglVertexAttribL1ui64vARB( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint64EXT *) /* const GLuint64EXT *v */); break; case NFOSMESA_GLVERTEXATTRIBL1UI64VNV: D(funcname = "glVertexAttribL1ui64vNV"); if (GL_ISAVAILABLE(glVertexAttribL1ui64vNV)) nfglVertexAttribL1ui64vNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint64EXT *) /* const GLuint64EXT *v */); break; case NFOSMESA_GLVERTEXATTRIBL2D: D(funcname = "glVertexAttribL2d"); if (GL_ISAVAILABLE(glVertexAttribL2d)) nfglVertexAttribL2d( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3) /* GLdouble y */); break; case NFOSMESA_GLVERTEXATTRIBL2DEXT: D(funcname = "glVertexAttribL2dEXT"); if (GL_ISAVAILABLE(glVertexAttribL2dEXT)) nfglVertexAttribL2dEXT( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3) /* GLdouble y */); break; case NFOSMESA_GLVERTEXATTRIBL2DV: D(funcname = "glVertexAttribL2dv"); if (GL_ISAVAILABLE(glVertexAttribL2dv)) nfglVertexAttribL2dv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIBL2DVEXT: D(funcname = "glVertexAttribL2dvEXT"); if (GL_ISAVAILABLE(glVertexAttribL2dvEXT)) nfglVertexAttribL2dvEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIBL2I64NV: D(funcname = "glVertexAttribL2i64NV"); if (GL_ISAVAILABLE(glVertexAttribL2i64NV)) nfglVertexAttribL2i64NV( getStackedParameter(0), /* GLuint index */ getStackedParameter64(1), /* GLint64EXT x */ getStackedParameter64(3) /* GLint64EXT y */); break; case NFOSMESA_GLVERTEXATTRIBL2I64VNV: D(funcname = "glVertexAttribL2i64vNV"); if (GL_ISAVAILABLE(glVertexAttribL2i64vNV)) nfglVertexAttribL2i64vNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint64EXT *) /* const GLint64EXT *v */); break; case NFOSMESA_GLVERTEXATTRIBL2UI64NV: D(funcname = "glVertexAttribL2ui64NV"); if (GL_ISAVAILABLE(glVertexAttribL2ui64NV)) nfglVertexAttribL2ui64NV( getStackedParameter(0), /* GLuint index */ getStackedParameter64(1), /* GLuint64EXT x */ getStackedParameter64(3) /* GLuint64EXT y */); break; case NFOSMESA_GLVERTEXATTRIBL2UI64VNV: D(funcname = "glVertexAttribL2ui64vNV"); if (GL_ISAVAILABLE(glVertexAttribL2ui64vNV)) nfglVertexAttribL2ui64vNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint64EXT *) /* const GLuint64EXT *v */); break; case NFOSMESA_GLVERTEXATTRIBL3D: D(funcname = "glVertexAttribL3d"); if (GL_ISAVAILABLE(glVertexAttribL3d)) nfglVertexAttribL3d( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5) /* GLdouble z */); break; case NFOSMESA_GLVERTEXATTRIBL3DEXT: D(funcname = "glVertexAttribL3dEXT"); if (GL_ISAVAILABLE(glVertexAttribL3dEXT)) nfglVertexAttribL3dEXT( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5) /* GLdouble z */); break; case NFOSMESA_GLVERTEXATTRIBL3DV: D(funcname = "glVertexAttribL3dv"); if (GL_ISAVAILABLE(glVertexAttribL3dv)) nfglVertexAttribL3dv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIBL3DVEXT: D(funcname = "glVertexAttribL3dvEXT"); if (GL_ISAVAILABLE(glVertexAttribL3dvEXT)) nfglVertexAttribL3dvEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIBL3I64NV: D(funcname = "glVertexAttribL3i64NV"); if (GL_ISAVAILABLE(glVertexAttribL3i64NV)) nfglVertexAttribL3i64NV( getStackedParameter(0), /* GLuint index */ getStackedParameter64(1), /* GLint64EXT x */ getStackedParameter64(3), /* GLint64EXT y */ getStackedParameter64(5) /* GLint64EXT z */); break; case NFOSMESA_GLVERTEXATTRIBL3I64VNV: D(funcname = "glVertexAttribL3i64vNV"); if (GL_ISAVAILABLE(glVertexAttribL3i64vNV)) nfglVertexAttribL3i64vNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint64EXT *) /* const GLint64EXT *v */); break; case NFOSMESA_GLVERTEXATTRIBL3UI64NV: D(funcname = "glVertexAttribL3ui64NV"); if (GL_ISAVAILABLE(glVertexAttribL3ui64NV)) nfglVertexAttribL3ui64NV( getStackedParameter(0), /* GLuint index */ getStackedParameter64(1), /* GLuint64EXT x */ getStackedParameter64(3), /* GLuint64EXT y */ getStackedParameter64(5) /* GLuint64EXT z */); break; case NFOSMESA_GLVERTEXATTRIBL3UI64VNV: D(funcname = "glVertexAttribL3ui64vNV"); if (GL_ISAVAILABLE(glVertexAttribL3ui64vNV)) nfglVertexAttribL3ui64vNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint64EXT *) /* const GLuint64EXT *v */); break; case NFOSMESA_GLVERTEXATTRIBL4D: D(funcname = "glVertexAttribL4d"); if (GL_ISAVAILABLE(glVertexAttribL4d)) nfglVertexAttribL4d( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5), /* GLdouble z */ getStackedDouble(7) /* GLdouble w */); break; case NFOSMESA_GLVERTEXATTRIBL4DEXT: D(funcname = "glVertexAttribL4dEXT"); if (GL_ISAVAILABLE(glVertexAttribL4dEXT)) nfglVertexAttribL4dEXT( getStackedParameter(0), /* GLuint index */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5), /* GLdouble z */ getStackedDouble(7) /* GLdouble w */); break; case NFOSMESA_GLVERTEXATTRIBL4DV: D(funcname = "glVertexAttribL4dv"); if (GL_ISAVAILABLE(glVertexAttribL4dv)) nfglVertexAttribL4dv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIBL4DVEXT: D(funcname = "glVertexAttribL4dvEXT"); if (GL_ISAVAILABLE(glVertexAttribL4dvEXT)) nfglVertexAttribL4dvEXT( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIBL4I64NV: D(funcname = "glVertexAttribL4i64NV"); if (GL_ISAVAILABLE(glVertexAttribL4i64NV)) nfglVertexAttribL4i64NV( getStackedParameter(0), /* GLuint index */ getStackedParameter64(1), /* GLint64EXT x */ getStackedParameter64(3), /* GLint64EXT y */ getStackedParameter64(5), /* GLint64EXT z */ getStackedParameter64(7) /* GLint64EXT w */); break; case NFOSMESA_GLVERTEXATTRIBL4I64VNV: D(funcname = "glVertexAttribL4i64vNV"); if (GL_ISAVAILABLE(glVertexAttribL4i64vNV)) nfglVertexAttribL4i64vNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLint64EXT *) /* const GLint64EXT *v */); break; case NFOSMESA_GLVERTEXATTRIBL4UI64NV: D(funcname = "glVertexAttribL4ui64NV"); if (GL_ISAVAILABLE(glVertexAttribL4ui64NV)) nfglVertexAttribL4ui64NV( getStackedParameter(0), /* GLuint index */ getStackedParameter64(1), /* GLuint64EXT x */ getStackedParameter64(3), /* GLuint64EXT y */ getStackedParameter64(5), /* GLuint64EXT z */ getStackedParameter64(7) /* GLuint64EXT w */); break; case NFOSMESA_GLVERTEXATTRIBL4UI64VNV: D(funcname = "glVertexAttribL4ui64vNV"); if (GL_ISAVAILABLE(glVertexAttribL4ui64vNV)) nfglVertexAttribL4ui64vNV( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLuint64EXT *) /* const GLuint64EXT *v */); break; case NFOSMESA_GLVERTEXATTRIBLFORMAT: D(funcname = "glVertexAttribLFormat"); if (GL_ISAVAILABLE(glVertexAttribLFormat)) nfglVertexAttribLFormat( getStackedParameter(0), /* GLuint attribindex */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3) /* GLuint relativeoffset */); break; case NFOSMESA_GLVERTEXATTRIBLFORMATNV: D(funcname = "glVertexAttribLFormatNV"); if (GL_ISAVAILABLE(glVertexAttribLFormatNV)) nfglVertexAttribLFormatNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3) /* GLsizei stride */); break; case NFOSMESA_GLVERTEXATTRIBLPOINTER: D(funcname = "glVertexAttribLPointer"); if (GL_ISAVAILABLE(glVertexAttribLPointer)) nfglVertexAttribLPointer( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei stride */ getStackedPointer(4, const void *) /* const void *pointer */); break; case NFOSMESA_GLVERTEXATTRIBLPOINTEREXT: D(funcname = "glVertexAttribLPointerEXT"); if (GL_ISAVAILABLE(glVertexAttribLPointerEXT)) nfglVertexAttribLPointerEXT( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei stride */ getStackedPointer(4, const void *) /* const void *pointer */); break; case NFOSMESA_GLVERTEXATTRIBP1UI: D(funcname = "glVertexAttribP1ui"); if (GL_ISAVAILABLE(glVertexAttribP1ui)) nfglVertexAttribP1ui( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLboolean32 normalized */ getStackedParameter(3) /* GLuint value */); break; case NFOSMESA_GLVERTEXATTRIBP1UIV: D(funcname = "glVertexAttribP1uiv"); if (GL_ISAVAILABLE(glVertexAttribP1uiv)) nfglVertexAttribP1uiv( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLboolean32 normalized */ getStackedPointer(3, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLVERTEXATTRIBP2UI: D(funcname = "glVertexAttribP2ui"); if (GL_ISAVAILABLE(glVertexAttribP2ui)) nfglVertexAttribP2ui( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLboolean32 normalized */ getStackedParameter(3) /* GLuint value */); break; case NFOSMESA_GLVERTEXATTRIBP2UIV: D(funcname = "glVertexAttribP2uiv"); if (GL_ISAVAILABLE(glVertexAttribP2uiv)) nfglVertexAttribP2uiv( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLboolean32 normalized */ getStackedPointer(3, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLVERTEXATTRIBP3UI: D(funcname = "glVertexAttribP3ui"); if (GL_ISAVAILABLE(glVertexAttribP3ui)) nfglVertexAttribP3ui( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLboolean32 normalized */ getStackedParameter(3) /* GLuint value */); break; case NFOSMESA_GLVERTEXATTRIBP3UIV: D(funcname = "glVertexAttribP3uiv"); if (GL_ISAVAILABLE(glVertexAttribP3uiv)) nfglVertexAttribP3uiv( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLboolean32 normalized */ getStackedPointer(3, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLVERTEXATTRIBP4UI: D(funcname = "glVertexAttribP4ui"); if (GL_ISAVAILABLE(glVertexAttribP4ui)) nfglVertexAttribP4ui( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLboolean32 normalized */ getStackedParameter(3) /* GLuint value */); break; case NFOSMESA_GLVERTEXATTRIBP4UIV: D(funcname = "glVertexAttribP4uiv"); if (GL_ISAVAILABLE(glVertexAttribP4uiv)) nfglVertexAttribP4uiv( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLboolean32 normalized */ getStackedPointer(3, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLVERTEXATTRIBPARAMETERIAMD: D(funcname = "glVertexAttribParameteriAMD"); if (GL_ISAVAILABLE(glVertexAttribParameteriAMD)) nfglVertexAttribParameteriAMD( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum pname */ getStackedParameter(2) /* GLint param */); break; case NFOSMESA_GLVERTEXATTRIBPOINTER: D(funcname = "glVertexAttribPointer"); if (GL_ISAVAILABLE(glVertexAttribPointer)) nfglVertexAttribPointer( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLboolean32 normalized */ getStackedParameter(4), /* GLsizei stride */ getStackedPointer(5, const void *) /* const void *pointer */); break; case NFOSMESA_GLVERTEXATTRIBPOINTERARB: D(funcname = "glVertexAttribPointerARB"); if (GL_ISAVAILABLE(glVertexAttribPointerARB)) nfglVertexAttribPointerARB( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint size */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLboolean32 normalized */ getStackedParameter(4), /* GLsizei stride */ getStackedPointer(5, const void *) /* const void *pointer */); break; case NFOSMESA_GLVERTEXATTRIBPOINTERNV: D(funcname = "glVertexAttribPointerNV"); if (GL_ISAVAILABLE(glVertexAttribPointerNV)) nfglVertexAttribPointerNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLint fsize */ getStackedParameter(2), /* GLenum type */ getStackedParameter(3), /* GLsizei stride */ getStackedPointer(4, const void *) /* const void *pointer */); break; case NFOSMESA_GLVERTEXATTRIBS1DVNV: D(funcname = "glVertexAttribs1dvNV"); if (GL_ISAVAILABLE(glVertexAttribs1dvNV)) nfglVertexAttribs1dvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIBS1FVNV: D(funcname = "glVertexAttribs1fvNV"); if (GL_ISAVAILABLE(glVertexAttribs1fvNV)) nfglVertexAttribs1fvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIBS1HVNV: D(funcname = "glVertexAttribs1hvNV"); if (GL_ISAVAILABLE(glVertexAttribs1hvNV)) nfglVertexAttribs1hvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei n */ getStackedPointer(2, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLVERTEXATTRIBS1SVNV: D(funcname = "glVertexAttribs1svNV"); if (GL_ISAVAILABLE(glVertexAttribs1svNV)) nfglVertexAttribs1svNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIBS2DVNV: D(funcname = "glVertexAttribs2dvNV"); if (GL_ISAVAILABLE(glVertexAttribs2dvNV)) nfglVertexAttribs2dvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIBS2FVNV: D(funcname = "glVertexAttribs2fvNV"); if (GL_ISAVAILABLE(glVertexAttribs2fvNV)) nfglVertexAttribs2fvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIBS2HVNV: D(funcname = "glVertexAttribs2hvNV"); if (GL_ISAVAILABLE(glVertexAttribs2hvNV)) nfglVertexAttribs2hvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei n */ getStackedPointer(2, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLVERTEXATTRIBS2SVNV: D(funcname = "glVertexAttribs2svNV"); if (GL_ISAVAILABLE(glVertexAttribs2svNV)) nfglVertexAttribs2svNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIBS3DVNV: D(funcname = "glVertexAttribs3dvNV"); if (GL_ISAVAILABLE(glVertexAttribs3dvNV)) nfglVertexAttribs3dvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIBS3FVNV: D(funcname = "glVertexAttribs3fvNV"); if (GL_ISAVAILABLE(glVertexAttribs3fvNV)) nfglVertexAttribs3fvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIBS3HVNV: D(funcname = "glVertexAttribs3hvNV"); if (GL_ISAVAILABLE(glVertexAttribs3hvNV)) nfglVertexAttribs3hvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei n */ getStackedPointer(2, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLVERTEXATTRIBS3SVNV: D(funcname = "glVertexAttribs3svNV"); if (GL_ISAVAILABLE(glVertexAttribs3svNV)) nfglVertexAttribs3svNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIBS4DVNV: D(funcname = "glVertexAttribs4dvNV"); if (GL_ISAVAILABLE(glVertexAttribs4dvNV)) nfglVertexAttribs4dvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLVERTEXATTRIBS4FVNV: D(funcname = "glVertexAttribs4fvNV"); if (GL_ISAVAILABLE(glVertexAttribs4fvNV)) nfglVertexAttribs4fvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVERTEXATTRIBS4HVNV: D(funcname = "glVertexAttribs4hvNV"); if (GL_ISAVAILABLE(glVertexAttribs4hvNV)) nfglVertexAttribs4hvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei n */ getStackedPointer(2, const GLhalfNV *) /* const GLhalfNV *v */); break; case NFOSMESA_GLVERTEXATTRIBS4SVNV: D(funcname = "glVertexAttribs4svNV"); if (GL_ISAVAILABLE(glVertexAttribs4svNV)) nfglVertexAttribs4svNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLVERTEXATTRIBS4UBVNV: D(funcname = "glVertexAttribs4ubvNV"); if (GL_ISAVAILABLE(glVertexAttribs4ubvNV)) nfglVertexAttribs4ubvNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLubyte *) /* const GLubyte *v */); break; case NFOSMESA_GLVERTEXBINDINGDIVISOR: D(funcname = "glVertexBindingDivisor"); if (GL_ISAVAILABLE(glVertexBindingDivisor)) nfglVertexBindingDivisor( getStackedParameter(0), /* GLuint bindingindex */ getStackedParameter(1) /* GLuint divisor */); break; case NFOSMESA_GLVERTEXBLENDARB: D(funcname = "glVertexBlendARB"); if (GL_ISAVAILABLE(glVertexBlendARB)) nfglVertexBlendARB( getStackedParameter(0) /* GLint count */); break; case NFOSMESA_GLVERTEXBLENDENVFATI: D(funcname = "glVertexBlendEnvfATI"); if (GL_ISAVAILABLE(glVertexBlendEnvfATI)) nfglVertexBlendEnvfATI( getStackedParameter(0), /* GLenum pname */ getStackedFloat(1) /* GLfloat param */); break; case NFOSMESA_GLVERTEXBLENDENVIATI: D(funcname = "glVertexBlendEnviATI"); if (GL_ISAVAILABLE(glVertexBlendEnviATI)) nfglVertexBlendEnviATI( getStackedParameter(0), /* GLenum pname */ getStackedParameter(1) /* GLint param */); break; case NFOSMESA_GLVERTEXFORMATNV: D(funcname = "glVertexFormatNV"); if (GL_ISAVAILABLE(glVertexFormatNV)) nfglVertexFormatNV( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2) /* GLsizei stride */); break; case NFOSMESA_GLVERTEXP2UI: D(funcname = "glVertexP2ui"); if (GL_ISAVAILABLE(glVertexP2ui)) nfglVertexP2ui( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLuint value */); break; case NFOSMESA_GLVERTEXP2UIV: D(funcname = "glVertexP2uiv"); if (GL_ISAVAILABLE(glVertexP2uiv)) nfglVertexP2uiv( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLVERTEXP3UI: D(funcname = "glVertexP3ui"); if (GL_ISAVAILABLE(glVertexP3ui)) nfglVertexP3ui( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLuint value */); break; case NFOSMESA_GLVERTEXP3UIV: D(funcname = "glVertexP3uiv"); if (GL_ISAVAILABLE(glVertexP3uiv)) nfglVertexP3uiv( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLVERTEXP4UI: D(funcname = "glVertexP4ui"); if (GL_ISAVAILABLE(glVertexP4ui)) nfglVertexP4ui( getStackedParameter(0), /* GLenum type */ getStackedParameter(1) /* GLuint value */); break; case NFOSMESA_GLVERTEXP4UIV: D(funcname = "glVertexP4uiv"); if (GL_ISAVAILABLE(glVertexP4uiv)) nfglVertexP4uiv( getStackedParameter(0), /* GLenum type */ getStackedPointer(1, const GLuint *) /* const GLuint *value */); break; case NFOSMESA_GLVERTEXPOINTSIZEFAPPLE: D(funcname = "glVertexPointSizefAPPLE"); if (GL_ISAVAILABLE(glVertexPointSizefAPPLE)) nfglVertexPointSizefAPPLE( getStackedFloat(0) /* GLfloat size */); break; case NFOSMESA_GLVERTEXPOINTER: D(funcname = "glVertexPointer"); if (GL_ISAVAILABLE(glVertexPointer)) nfglVertexPointer( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLsizei stride */ getStackedPointer(3, const GLvoid *) /* const GLvoid *pointer */); break; case NFOSMESA_GLVERTEXPOINTEREXT: D(funcname = "glVertexPointerEXT"); if (GL_ISAVAILABLE(glVertexPointerEXT)) nfglVertexPointerEXT( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLsizei stride */ getStackedParameter(3), /* GLsizei count */ getStackedPointer(4, const void *) /* const void *pointer */); break; case NFOSMESA_GLVERTEXPOINTERLISTIBM: D(funcname = "glVertexPointerListIBM"); if (GL_ISAVAILABLE(glVertexPointerListIBM)) nfglVertexPointerListIBM( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLint stride */ getStackedPointer(3, const void * *), /* const void * *pointer */ getStackedParameter(4) /* GLint ptrstride */); break; case NFOSMESA_GLVERTEXPOINTERVINTEL: D(funcname = "glVertexPointervINTEL"); if (GL_ISAVAILABLE(glVertexPointervINTEL)) nfglVertexPointervINTEL( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedPointer(2, const void * *) /* const void * *pointer */); break; case NFOSMESA_GLVERTEXSTREAM1DATI: D(funcname = "glVertexStream1dATI"); if (GL_ISAVAILABLE(glVertexStream1dATI)) nfglVertexStream1dATI( getStackedParameter(0), /* GLenum stream */ getStackedDouble(1) /* GLdouble x */); break; case NFOSMESA_GLVERTEXSTREAM1DVATI: D(funcname = "glVertexStream1dvATI"); if (GL_ISAVAILABLE(glVertexStream1dvATI)) nfglVertexStream1dvATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLdouble *) /* const GLdouble *coords */); break; case NFOSMESA_GLVERTEXSTREAM1FATI: D(funcname = "glVertexStream1fATI"); if (GL_ISAVAILABLE(glVertexStream1fATI)) nfglVertexStream1fATI( getStackedParameter(0), /* GLenum stream */ getStackedFloat(1) /* GLfloat x */); break; case NFOSMESA_GLVERTEXSTREAM1FVATI: D(funcname = "glVertexStream1fvATI"); if (GL_ISAVAILABLE(glVertexStream1fvATI)) nfglVertexStream1fvATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLfloat *) /* const GLfloat *coords */); break; case NFOSMESA_GLVERTEXSTREAM1IATI: D(funcname = "glVertexStream1iATI"); if (GL_ISAVAILABLE(glVertexStream1iATI)) nfglVertexStream1iATI( getStackedParameter(0), /* GLenum stream */ getStackedParameter(1) /* GLint x */); break; case NFOSMESA_GLVERTEXSTREAM1IVATI: D(funcname = "glVertexStream1ivATI"); if (GL_ISAVAILABLE(glVertexStream1ivATI)) nfglVertexStream1ivATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLint *) /* const GLint *coords */); break; case NFOSMESA_GLVERTEXSTREAM1SATI: D(funcname = "glVertexStream1sATI"); if (GL_ISAVAILABLE(glVertexStream1sATI)) nfglVertexStream1sATI( getStackedParameter(0), /* GLenum stream */ getStackedParameter(1) /* GLshort32 x */); break; case NFOSMESA_GLVERTEXSTREAM1SVATI: D(funcname = "glVertexStream1svATI"); if (GL_ISAVAILABLE(glVertexStream1svATI)) nfglVertexStream1svATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLshort *) /* const GLshort *coords */); break; case NFOSMESA_GLVERTEXSTREAM2DATI: D(funcname = "glVertexStream2dATI"); if (GL_ISAVAILABLE(glVertexStream2dATI)) nfglVertexStream2dATI( getStackedParameter(0), /* GLenum stream */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3) /* GLdouble y */); break; case NFOSMESA_GLVERTEXSTREAM2DVATI: D(funcname = "glVertexStream2dvATI"); if (GL_ISAVAILABLE(glVertexStream2dvATI)) nfglVertexStream2dvATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLdouble *) /* const GLdouble *coords */); break; case NFOSMESA_GLVERTEXSTREAM2FATI: D(funcname = "glVertexStream2fATI"); if (GL_ISAVAILABLE(glVertexStream2fATI)) nfglVertexStream2fATI( getStackedParameter(0), /* GLenum stream */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2) /* GLfloat y */); break; case NFOSMESA_GLVERTEXSTREAM2FVATI: D(funcname = "glVertexStream2fvATI"); if (GL_ISAVAILABLE(glVertexStream2fvATI)) nfglVertexStream2fvATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLfloat *) /* const GLfloat *coords */); break; case NFOSMESA_GLVERTEXSTREAM2IATI: D(funcname = "glVertexStream2iATI"); if (GL_ISAVAILABLE(glVertexStream2iATI)) nfglVertexStream2iATI( getStackedParameter(0), /* GLenum stream */ getStackedParameter(1), /* GLint x */ getStackedParameter(2) /* GLint y */); break; case NFOSMESA_GLVERTEXSTREAM2IVATI: D(funcname = "glVertexStream2ivATI"); if (GL_ISAVAILABLE(glVertexStream2ivATI)) nfglVertexStream2ivATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLint *) /* const GLint *coords */); break; case NFOSMESA_GLVERTEXSTREAM2SATI: D(funcname = "glVertexStream2sATI"); if (GL_ISAVAILABLE(glVertexStream2sATI)) nfglVertexStream2sATI( getStackedParameter(0), /* GLenum stream */ getStackedParameter(1), /* GLshort32 x */ getStackedParameter(2) /* GLshort32 y */); break; case NFOSMESA_GLVERTEXSTREAM2SVATI: D(funcname = "glVertexStream2svATI"); if (GL_ISAVAILABLE(glVertexStream2svATI)) nfglVertexStream2svATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLshort *) /* const GLshort *coords */); break; case NFOSMESA_GLVERTEXSTREAM3DATI: D(funcname = "glVertexStream3dATI"); if (GL_ISAVAILABLE(glVertexStream3dATI)) nfglVertexStream3dATI( getStackedParameter(0), /* GLenum stream */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5) /* GLdouble z */); break; case NFOSMESA_GLVERTEXSTREAM3DVATI: D(funcname = "glVertexStream3dvATI"); if (GL_ISAVAILABLE(glVertexStream3dvATI)) nfglVertexStream3dvATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLdouble *) /* const GLdouble *coords */); break; case NFOSMESA_GLVERTEXSTREAM3FATI: D(funcname = "glVertexStream3fATI"); if (GL_ISAVAILABLE(glVertexStream3fATI)) nfglVertexStream3fATI( getStackedParameter(0), /* GLenum stream */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2), /* GLfloat y */ getStackedFloat(3) /* GLfloat z */); break; case NFOSMESA_GLVERTEXSTREAM3FVATI: D(funcname = "glVertexStream3fvATI"); if (GL_ISAVAILABLE(glVertexStream3fvATI)) nfglVertexStream3fvATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLfloat *) /* const GLfloat *coords */); break; case NFOSMESA_GLVERTEXSTREAM3IATI: D(funcname = "glVertexStream3iATI"); if (GL_ISAVAILABLE(glVertexStream3iATI)) nfglVertexStream3iATI( getStackedParameter(0), /* GLenum stream */ getStackedParameter(1), /* GLint x */ getStackedParameter(2), /* GLint y */ getStackedParameter(3) /* GLint z */); break; case NFOSMESA_GLVERTEXSTREAM3IVATI: D(funcname = "glVertexStream3ivATI"); if (GL_ISAVAILABLE(glVertexStream3ivATI)) nfglVertexStream3ivATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLint *) /* const GLint *coords */); break; case NFOSMESA_GLVERTEXSTREAM3SATI: D(funcname = "glVertexStream3sATI"); if (GL_ISAVAILABLE(glVertexStream3sATI)) nfglVertexStream3sATI( getStackedParameter(0), /* GLenum stream */ getStackedParameter(1), /* GLshort32 x */ getStackedParameter(2), /* GLshort32 y */ getStackedParameter(3) /* GLshort32 z */); break; case NFOSMESA_GLVERTEXSTREAM3SVATI: D(funcname = "glVertexStream3svATI"); if (GL_ISAVAILABLE(glVertexStream3svATI)) nfglVertexStream3svATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLshort *) /* const GLshort *coords */); break; case NFOSMESA_GLVERTEXSTREAM4DATI: D(funcname = "glVertexStream4dATI"); if (GL_ISAVAILABLE(glVertexStream4dATI)) nfglVertexStream4dATI( getStackedParameter(0), /* GLenum stream */ getStackedDouble(1), /* GLdouble x */ getStackedDouble(3), /* GLdouble y */ getStackedDouble(5), /* GLdouble z */ getStackedDouble(7) /* GLdouble w */); break; case NFOSMESA_GLVERTEXSTREAM4DVATI: D(funcname = "glVertexStream4dvATI"); if (GL_ISAVAILABLE(glVertexStream4dvATI)) nfglVertexStream4dvATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLdouble *) /* const GLdouble *coords */); break; case NFOSMESA_GLVERTEXSTREAM4FATI: D(funcname = "glVertexStream4fATI"); if (GL_ISAVAILABLE(glVertexStream4fATI)) nfglVertexStream4fATI( getStackedParameter(0), /* GLenum stream */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2), /* GLfloat y */ getStackedFloat(3), /* GLfloat z */ getStackedFloat(4) /* GLfloat w */); break; case NFOSMESA_GLVERTEXSTREAM4FVATI: D(funcname = "glVertexStream4fvATI"); if (GL_ISAVAILABLE(glVertexStream4fvATI)) nfglVertexStream4fvATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLfloat *) /* const GLfloat *coords */); break; case NFOSMESA_GLVERTEXSTREAM4IATI: D(funcname = "glVertexStream4iATI"); if (GL_ISAVAILABLE(glVertexStream4iATI)) nfglVertexStream4iATI( getStackedParameter(0), /* GLenum stream */ getStackedParameter(1), /* GLint x */ getStackedParameter(2), /* GLint y */ getStackedParameter(3), /* GLint z */ getStackedParameter(4) /* GLint w */); break; case NFOSMESA_GLVERTEXSTREAM4IVATI: D(funcname = "glVertexStream4ivATI"); if (GL_ISAVAILABLE(glVertexStream4ivATI)) nfglVertexStream4ivATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLint *) /* const GLint *coords */); break; case NFOSMESA_GLVERTEXSTREAM4SATI: D(funcname = "glVertexStream4sATI"); if (GL_ISAVAILABLE(glVertexStream4sATI)) nfglVertexStream4sATI( getStackedParameter(0), /* GLenum stream */ getStackedParameter(1), /* GLshort32 x */ getStackedParameter(2), /* GLshort32 y */ getStackedParameter(3), /* GLshort32 z */ getStackedParameter(4) /* GLshort32 w */); break; case NFOSMESA_GLVERTEXSTREAM4SVATI: D(funcname = "glVertexStream4svATI"); if (GL_ISAVAILABLE(glVertexStream4svATI)) nfglVertexStream4svATI( getStackedParameter(0), /* GLenum stream */ getStackedPointer(1, const GLshort *) /* const GLshort *coords */); break; case NFOSMESA_GLVERTEXWEIGHTPOINTEREXT: D(funcname = "glVertexWeightPointerEXT"); if (GL_ISAVAILABLE(glVertexWeightPointerEXT)) nfglVertexWeightPointerEXT( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLsizei stride */ getStackedPointer(3, const void *) /* const void *pointer */); break; case NFOSMESA_GLVERTEXWEIGHTFEXT: D(funcname = "glVertexWeightfEXT"); if (GL_ISAVAILABLE(glVertexWeightfEXT)) nfglVertexWeightfEXT( getStackedFloat(0) /* GLfloat weight */); break; case NFOSMESA_GLVERTEXWEIGHTFVEXT: D(funcname = "glVertexWeightfvEXT"); if (GL_ISAVAILABLE(glVertexWeightfvEXT)) nfglVertexWeightfvEXT( getStackedPointer(0, const GLfloat *) /* const GLfloat *weight */); break; case NFOSMESA_GLVERTEXWEIGHTHNV: D(funcname = "glVertexWeighthNV"); if (GL_ISAVAILABLE(glVertexWeighthNV)) nfglVertexWeighthNV( getStackedParameter(0) /* GLhalfNV32 weight */); break; case NFOSMESA_GLVERTEXWEIGHTHVNV: D(funcname = "glVertexWeighthvNV"); if (GL_ISAVAILABLE(glVertexWeighthvNV)) nfglVertexWeighthvNV( getStackedPointer(0, const GLhalfNV *) /* const GLhalfNV *weight */); break; case NFOSMESA_GLVIDEOCAPTURENV: D(funcname = "glVideoCaptureNV"); if (GL_ISAVAILABLE(glVideoCaptureNV)) ret = nfglVideoCaptureNV( getStackedParameter(0), /* GLuint video_capture_slot */ getStackedPointer(1, GLuint *), /* GLuint *sequence_num */ getStackedPointer(2, GLuint64EXT *) /* GLuint64EXT *capture_time */); break; case NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERDVNV: D(funcname = "glVideoCaptureStreamParameterdvNV"); if (GL_ISAVAILABLE(glVideoCaptureStreamParameterdvNV)) nfglVideoCaptureStreamParameterdvNV( getStackedParameter(0), /* GLuint video_capture_slot */ getStackedParameter(1), /* GLuint stream */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLdouble *) /* const GLdouble *params */); break; case NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERFVNV: D(funcname = "glVideoCaptureStreamParameterfvNV"); if (GL_ISAVAILABLE(glVideoCaptureStreamParameterfvNV)) nfglVideoCaptureStreamParameterfvNV( getStackedParameter(0), /* GLuint video_capture_slot */ getStackedParameter(1), /* GLuint stream */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLfloat *) /* const GLfloat *params */); break; case NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERIVNV: D(funcname = "glVideoCaptureStreamParameterivNV"); if (GL_ISAVAILABLE(glVideoCaptureStreamParameterivNV)) nfglVideoCaptureStreamParameterivNV( getStackedParameter(0), /* GLuint video_capture_slot */ getStackedParameter(1), /* GLuint stream */ getStackedParameter(2), /* GLenum pname */ getStackedPointer(3, const GLint *) /* const GLint *params */); break; case NFOSMESA_GLVIEWPORT: D(funcname = "glViewport"); if (GL_ISAVAILABLE(glViewport)) nfglViewport( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2), /* GLsizei width */ getStackedParameter(3) /* GLsizei height */); break; case NFOSMESA_GLVIEWPORTARRAYV: D(funcname = "glViewportArrayv"); if (GL_ISAVAILABLE(glViewportArrayv)) nfglViewportArrayv( getStackedParameter(0), /* GLuint first */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVIEWPORTINDEXEDF: D(funcname = "glViewportIndexedf"); if (GL_ISAVAILABLE(glViewportIndexedf)) nfglViewportIndexedf( getStackedParameter(0), /* GLuint index */ getStackedFloat(1), /* GLfloat x */ getStackedFloat(2), /* GLfloat y */ getStackedFloat(3), /* GLfloat w */ getStackedFloat(4) /* GLfloat h */); break; case NFOSMESA_GLVIEWPORTINDEXEDFV: D(funcname = "glViewportIndexedfv"); if (GL_ISAVAILABLE(glViewportIndexedfv)) nfglViewportIndexedfv( getStackedParameter(0), /* GLuint index */ getStackedPointer(1, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLVIEWPORTPOSITIONWSCALENV: D(funcname = "glViewportPositionWScaleNV"); if (GL_ISAVAILABLE(glViewportPositionWScaleNV)) nfglViewportPositionWScaleNV( getStackedParameter(0), /* GLuint index */ getStackedFloat(1), /* GLfloat xcoeff */ getStackedFloat(2) /* GLfloat ycoeff */); break; case NFOSMESA_GLVIEWPORTSWIZZLENV: D(funcname = "glViewportSwizzleNV"); if (GL_ISAVAILABLE(glViewportSwizzleNV)) nfglViewportSwizzleNV( getStackedParameter(0), /* GLuint index */ getStackedParameter(1), /* GLenum swizzlex */ getStackedParameter(2), /* GLenum swizzley */ getStackedParameter(3), /* GLenum swizzlez */ getStackedParameter(4) /* GLenum swizzlew */); break; case NFOSMESA_GLWAITSEMAPHOREEXT: D(funcname = "glWaitSemaphoreEXT"); if (GL_ISAVAILABLE(glWaitSemaphoreEXT)) nfglWaitSemaphoreEXT( getStackedParameter(0), /* GLuint semaphore */ getStackedParameter(1), /* GLuint numBufferBarriers */ getStackedPointer(2, const GLuint *), /* const GLuint *buffers */ getStackedParameter(3), /* GLuint numTextureBarriers */ getStackedPointer(4, const GLuint *), /* const GLuint *textures */ getStackedPointer(5, const GLenum *) /* const GLenum *srcLayouts */); break; case NFOSMESA_GLWAITSYNC: D(funcname = "glWaitSync"); if (GL_ISAVAILABLE(glWaitSync)) nfglWaitSync( (GLsync)(uintptr_t)getStackedParameter(0), /* GLsync sync */ getStackedParameter(1), /* GLbitfield flags */ getStackedParameter64(2) /* GLuint64 timeout */); break; case NFOSMESA_GLWAITVKSEMAPHORENV: D(funcname = "glWaitVkSemaphoreNV"); if (GL_ISAVAILABLE(glWaitVkSemaphoreNV)) nfglWaitVkSemaphoreNV( getStackedParameter64(0) /* GLuint64 vkSemaphore */); break; case NFOSMESA_GLWEIGHTPATHSNV: D(funcname = "glWeightPathsNV"); if (GL_ISAVAILABLE(glWeightPathsNV)) nfglWeightPathsNV( getStackedParameter(0), /* GLuint resultPath */ getStackedParameter(1), /* GLsizei numPaths */ getStackedPointer(2, const GLuint *), /* const GLuint *paths */ getStackedPointer(3, const GLfloat *) /* const GLfloat *weights */); break; case NFOSMESA_GLWEIGHTPOINTERARB: D(funcname = "glWeightPointerARB"); if (GL_ISAVAILABLE(glWeightPointerARB)) nfglWeightPointerARB( getStackedParameter(0), /* GLint size */ getStackedParameter(1), /* GLenum type */ getStackedParameter(2), /* GLsizei stride */ getStackedPointer(3, const void *) /* const void *pointer */); break; case NFOSMESA_GLWEIGHTBVARB: D(funcname = "glWeightbvARB"); if (GL_ISAVAILABLE(glWeightbvARB)) nfglWeightbvARB( getStackedParameter(0), /* GLint size */ getStackedPointer(1, const GLbyte *) /* const GLbyte *weights */); break; case NFOSMESA_GLWEIGHTDVARB: D(funcname = "glWeightdvARB"); if (GL_ISAVAILABLE(glWeightdvARB)) nfglWeightdvARB( getStackedParameter(0), /* GLint size */ getStackedPointer(1, const GLdouble *) /* const GLdouble *weights */); break; case NFOSMESA_GLWEIGHTFVARB: D(funcname = "glWeightfvARB"); if (GL_ISAVAILABLE(glWeightfvARB)) nfglWeightfvARB( getStackedParameter(0), /* GLint size */ getStackedPointer(1, const GLfloat *) /* const GLfloat *weights */); break; case NFOSMESA_GLWEIGHTIVARB: D(funcname = "glWeightivARB"); if (GL_ISAVAILABLE(glWeightivARB)) nfglWeightivARB( getStackedParameter(0), /* GLint size */ getStackedPointer(1, const GLint *) /* const GLint *weights */); break; case NFOSMESA_GLWEIGHTSVARB: D(funcname = "glWeightsvARB"); if (GL_ISAVAILABLE(glWeightsvARB)) nfglWeightsvARB( getStackedParameter(0), /* GLint size */ getStackedPointer(1, const GLshort *) /* const GLshort *weights */); break; case NFOSMESA_GLWEIGHTUBVARB: D(funcname = "glWeightubvARB"); if (GL_ISAVAILABLE(glWeightubvARB)) nfglWeightubvARB( getStackedParameter(0), /* GLint size */ getStackedPointer(1, const GLubyte *) /* const GLubyte *weights */); break; case NFOSMESA_GLWEIGHTUIVARB: D(funcname = "glWeightuivARB"); if (GL_ISAVAILABLE(glWeightuivARB)) nfglWeightuivARB( getStackedParameter(0), /* GLint size */ getStackedPointer(1, const GLuint *) /* const GLuint *weights */); break; case NFOSMESA_GLWEIGHTUSVARB: D(funcname = "glWeightusvARB"); if (GL_ISAVAILABLE(glWeightusvARB)) nfglWeightusvARB( getStackedParameter(0), /* GLint size */ getStackedPointer(1, const GLushort *) /* const GLushort *weights */); break; case NFOSMESA_GLWINDOWPOS2D: D(funcname = "glWindowPos2d"); if (GL_ISAVAILABLE(glWindowPos2d)) nfglWindowPos2d( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2) /* GLdouble y */); break; case NFOSMESA_GLWINDOWPOS2DARB: D(funcname = "glWindowPos2dARB"); if (GL_ISAVAILABLE(glWindowPos2dARB)) nfglWindowPos2dARB( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2) /* GLdouble y */); break; case NFOSMESA_GLWINDOWPOS2DMESA: D(funcname = "glWindowPos2dMESA"); if (GL_ISAVAILABLE(glWindowPos2dMESA)) nfglWindowPos2dMESA( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2) /* GLdouble y */); break; case NFOSMESA_GLWINDOWPOS2DV: D(funcname = "glWindowPos2dv"); if (GL_ISAVAILABLE(glWindowPos2dv)) nfglWindowPos2dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLWINDOWPOS2DVARB: D(funcname = "glWindowPos2dvARB"); if (GL_ISAVAILABLE(glWindowPos2dvARB)) nfglWindowPos2dvARB( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLWINDOWPOS2DVMESA: D(funcname = "glWindowPos2dvMESA"); if (GL_ISAVAILABLE(glWindowPos2dvMESA)) nfglWindowPos2dvMESA( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLWINDOWPOS2F: D(funcname = "glWindowPos2f"); if (GL_ISAVAILABLE(glWindowPos2f)) nfglWindowPos2f( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1) /* GLfloat y */); break; case NFOSMESA_GLWINDOWPOS2FARB: D(funcname = "glWindowPos2fARB"); if (GL_ISAVAILABLE(glWindowPos2fARB)) nfglWindowPos2fARB( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1) /* GLfloat y */); break; case NFOSMESA_GLWINDOWPOS2FMESA: D(funcname = "glWindowPos2fMESA"); if (GL_ISAVAILABLE(glWindowPos2fMESA)) nfglWindowPos2fMESA( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1) /* GLfloat y */); break; case NFOSMESA_GLWINDOWPOS2FV: D(funcname = "glWindowPos2fv"); if (GL_ISAVAILABLE(glWindowPos2fv)) nfglWindowPos2fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLWINDOWPOS2FVARB: D(funcname = "glWindowPos2fvARB"); if (GL_ISAVAILABLE(glWindowPos2fvARB)) nfglWindowPos2fvARB( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLWINDOWPOS2FVMESA: D(funcname = "glWindowPos2fvMESA"); if (GL_ISAVAILABLE(glWindowPos2fvMESA)) nfglWindowPos2fvMESA( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLWINDOWPOS2I: D(funcname = "glWindowPos2i"); if (GL_ISAVAILABLE(glWindowPos2i)) nfglWindowPos2i( getStackedParameter(0), /* GLint x */ getStackedParameter(1) /* GLint y */); break; case NFOSMESA_GLWINDOWPOS2IARB: D(funcname = "glWindowPos2iARB"); if (GL_ISAVAILABLE(glWindowPos2iARB)) nfglWindowPos2iARB( getStackedParameter(0), /* GLint x */ getStackedParameter(1) /* GLint y */); break; case NFOSMESA_GLWINDOWPOS2IMESA: D(funcname = "glWindowPos2iMESA"); if (GL_ISAVAILABLE(glWindowPos2iMESA)) nfglWindowPos2iMESA( getStackedParameter(0), /* GLint x */ getStackedParameter(1) /* GLint y */); break; case NFOSMESA_GLWINDOWPOS2IV: D(funcname = "glWindowPos2iv"); if (GL_ISAVAILABLE(glWindowPos2iv)) nfglWindowPos2iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLWINDOWPOS2IVARB: D(funcname = "glWindowPos2ivARB"); if (GL_ISAVAILABLE(glWindowPos2ivARB)) nfglWindowPos2ivARB( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLWINDOWPOS2IVMESA: D(funcname = "glWindowPos2ivMESA"); if (GL_ISAVAILABLE(glWindowPos2ivMESA)) nfglWindowPos2ivMESA( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLWINDOWPOS2S: D(funcname = "glWindowPos2s"); if (GL_ISAVAILABLE(glWindowPos2s)) nfglWindowPos2s( getStackedParameter(0), /* GLshort32 x */ getStackedParameter(1) /* GLshort32 y */); break; case NFOSMESA_GLWINDOWPOS2SARB: D(funcname = "glWindowPos2sARB"); if (GL_ISAVAILABLE(glWindowPos2sARB)) nfglWindowPos2sARB( getStackedParameter(0), /* GLshort32 x */ getStackedParameter(1) /* GLshort32 y */); break; case NFOSMESA_GLWINDOWPOS2SMESA: D(funcname = "glWindowPos2sMESA"); if (GL_ISAVAILABLE(glWindowPos2sMESA)) nfglWindowPos2sMESA( getStackedParameter(0), /* GLshort32 x */ getStackedParameter(1) /* GLshort32 y */); break; case NFOSMESA_GLWINDOWPOS2SV: D(funcname = "glWindowPos2sv"); if (GL_ISAVAILABLE(glWindowPos2sv)) nfglWindowPos2sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLWINDOWPOS2SVARB: D(funcname = "glWindowPos2svARB"); if (GL_ISAVAILABLE(glWindowPos2svARB)) nfglWindowPos2svARB( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLWINDOWPOS2SVMESA: D(funcname = "glWindowPos2svMESA"); if (GL_ISAVAILABLE(glWindowPos2svMESA)) nfglWindowPos2svMESA( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLWINDOWPOS3D: D(funcname = "glWindowPos3d"); if (GL_ISAVAILABLE(glWindowPos3d)) nfglWindowPos3d( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2), /* GLdouble y */ getStackedDouble(4) /* GLdouble z */); break; case NFOSMESA_GLWINDOWPOS3DARB: D(funcname = "glWindowPos3dARB"); if (GL_ISAVAILABLE(glWindowPos3dARB)) nfglWindowPos3dARB( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2), /* GLdouble y */ getStackedDouble(4) /* GLdouble z */); break; case NFOSMESA_GLWINDOWPOS3DMESA: D(funcname = "glWindowPos3dMESA"); if (GL_ISAVAILABLE(glWindowPos3dMESA)) nfglWindowPos3dMESA( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2), /* GLdouble y */ getStackedDouble(4) /* GLdouble z */); break; case NFOSMESA_GLWINDOWPOS3DV: D(funcname = "glWindowPos3dv"); if (GL_ISAVAILABLE(glWindowPos3dv)) nfglWindowPos3dv( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLWINDOWPOS3DVARB: D(funcname = "glWindowPos3dvARB"); if (GL_ISAVAILABLE(glWindowPos3dvARB)) nfglWindowPos3dvARB( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLWINDOWPOS3DVMESA: D(funcname = "glWindowPos3dvMESA"); if (GL_ISAVAILABLE(glWindowPos3dvMESA)) nfglWindowPos3dvMESA( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLWINDOWPOS3F: D(funcname = "glWindowPos3f"); if (GL_ISAVAILABLE(glWindowPos3f)) nfglWindowPos3f( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1), /* GLfloat y */ getStackedFloat(2) /* GLfloat z */); break; case NFOSMESA_GLWINDOWPOS3FARB: D(funcname = "glWindowPos3fARB"); if (GL_ISAVAILABLE(glWindowPos3fARB)) nfglWindowPos3fARB( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1), /* GLfloat y */ getStackedFloat(2) /* GLfloat z */); break; case NFOSMESA_GLWINDOWPOS3FMESA: D(funcname = "glWindowPos3fMESA"); if (GL_ISAVAILABLE(glWindowPos3fMESA)) nfglWindowPos3fMESA( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1), /* GLfloat y */ getStackedFloat(2) /* GLfloat z */); break; case NFOSMESA_GLWINDOWPOS3FV: D(funcname = "glWindowPos3fv"); if (GL_ISAVAILABLE(glWindowPos3fv)) nfglWindowPos3fv( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLWINDOWPOS3FVARB: D(funcname = "glWindowPos3fvARB"); if (GL_ISAVAILABLE(glWindowPos3fvARB)) nfglWindowPos3fvARB( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLWINDOWPOS3FVMESA: D(funcname = "glWindowPos3fvMESA"); if (GL_ISAVAILABLE(glWindowPos3fvMESA)) nfglWindowPos3fvMESA( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLWINDOWPOS3I: D(funcname = "glWindowPos3i"); if (GL_ISAVAILABLE(glWindowPos3i)) nfglWindowPos3i( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2) /* GLint z */); break; case NFOSMESA_GLWINDOWPOS3IARB: D(funcname = "glWindowPos3iARB"); if (GL_ISAVAILABLE(glWindowPos3iARB)) nfglWindowPos3iARB( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2) /* GLint z */); break; case NFOSMESA_GLWINDOWPOS3IMESA: D(funcname = "glWindowPos3iMESA"); if (GL_ISAVAILABLE(glWindowPos3iMESA)) nfglWindowPos3iMESA( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2) /* GLint z */); break; case NFOSMESA_GLWINDOWPOS3IV: D(funcname = "glWindowPos3iv"); if (GL_ISAVAILABLE(glWindowPos3iv)) nfglWindowPos3iv( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLWINDOWPOS3IVARB: D(funcname = "glWindowPos3ivARB"); if (GL_ISAVAILABLE(glWindowPos3ivARB)) nfglWindowPos3ivARB( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLWINDOWPOS3IVMESA: D(funcname = "glWindowPos3ivMESA"); if (GL_ISAVAILABLE(glWindowPos3ivMESA)) nfglWindowPos3ivMESA( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLWINDOWPOS3S: D(funcname = "glWindowPos3s"); if (GL_ISAVAILABLE(glWindowPos3s)) nfglWindowPos3s( getStackedParameter(0), /* GLshort32 x */ getStackedParameter(1), /* GLshort32 y */ getStackedParameter(2) /* GLshort32 z */); break; case NFOSMESA_GLWINDOWPOS3SARB: D(funcname = "glWindowPos3sARB"); if (GL_ISAVAILABLE(glWindowPos3sARB)) nfglWindowPos3sARB( getStackedParameter(0), /* GLshort32 x */ getStackedParameter(1), /* GLshort32 y */ getStackedParameter(2) /* GLshort32 z */); break; case NFOSMESA_GLWINDOWPOS3SMESA: D(funcname = "glWindowPos3sMESA"); if (GL_ISAVAILABLE(glWindowPos3sMESA)) nfglWindowPos3sMESA( getStackedParameter(0), /* GLshort32 x */ getStackedParameter(1), /* GLshort32 y */ getStackedParameter(2) /* GLshort32 z */); break; case NFOSMESA_GLWINDOWPOS3SV: D(funcname = "glWindowPos3sv"); if (GL_ISAVAILABLE(glWindowPos3sv)) nfglWindowPos3sv( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLWINDOWPOS3SVARB: D(funcname = "glWindowPos3svARB"); if (GL_ISAVAILABLE(glWindowPos3svARB)) nfglWindowPos3svARB( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLWINDOWPOS3SVMESA: D(funcname = "glWindowPos3svMESA"); if (GL_ISAVAILABLE(glWindowPos3svMESA)) nfglWindowPos3svMESA( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLWINDOWPOS4DMESA: D(funcname = "glWindowPos4dMESA"); if (GL_ISAVAILABLE(glWindowPos4dMESA)) nfglWindowPos4dMESA( getStackedDouble(0), /* GLdouble x */ getStackedDouble(2), /* GLdouble y */ getStackedDouble(4), /* GLdouble z */ getStackedDouble(6) /* GLdouble w */); break; case NFOSMESA_GLWINDOWPOS4DVMESA: D(funcname = "glWindowPos4dvMESA"); if (GL_ISAVAILABLE(glWindowPos4dvMESA)) nfglWindowPos4dvMESA( getStackedPointer(0, const GLdouble *) /* const GLdouble *v */); break; case NFOSMESA_GLWINDOWPOS4FMESA: D(funcname = "glWindowPos4fMESA"); if (GL_ISAVAILABLE(glWindowPos4fMESA)) nfglWindowPos4fMESA( getStackedFloat(0), /* GLfloat x */ getStackedFloat(1), /* GLfloat y */ getStackedFloat(2), /* GLfloat z */ getStackedFloat(3) /* GLfloat w */); break; case NFOSMESA_GLWINDOWPOS4FVMESA: D(funcname = "glWindowPos4fvMESA"); if (GL_ISAVAILABLE(glWindowPos4fvMESA)) nfglWindowPos4fvMESA( getStackedPointer(0, const GLfloat *) /* const GLfloat *v */); break; case NFOSMESA_GLWINDOWPOS4IMESA: D(funcname = "glWindowPos4iMESA"); if (GL_ISAVAILABLE(glWindowPos4iMESA)) nfglWindowPos4iMESA( getStackedParameter(0), /* GLint x */ getStackedParameter(1), /* GLint y */ getStackedParameter(2), /* GLint z */ getStackedParameter(3) /* GLint w */); break; case NFOSMESA_GLWINDOWPOS4IVMESA: D(funcname = "glWindowPos4ivMESA"); if (GL_ISAVAILABLE(glWindowPos4ivMESA)) nfglWindowPos4ivMESA( getStackedPointer(0, const GLint *) /* const GLint *v */); break; case NFOSMESA_GLWINDOWPOS4SMESA: D(funcname = "glWindowPos4sMESA"); if (GL_ISAVAILABLE(glWindowPos4sMESA)) nfglWindowPos4sMESA( getStackedParameter(0), /* GLshort32 x */ getStackedParameter(1), /* GLshort32 y */ getStackedParameter(2), /* GLshort32 z */ getStackedParameter(3) /* GLshort32 w */); break; case NFOSMESA_GLWINDOWPOS4SVMESA: D(funcname = "glWindowPos4svMESA"); if (GL_ISAVAILABLE(glWindowPos4svMESA)) nfglWindowPos4svMESA( getStackedPointer(0, const GLshort *) /* const GLshort *v */); break; case NFOSMESA_GLWINDOWRECTANGLESEXT: D(funcname = "glWindowRectanglesEXT"); if (GL_ISAVAILABLE(glWindowRectanglesEXT)) nfglWindowRectanglesEXT( getStackedParameter(0), /* GLenum mode */ getStackedParameter(1), /* GLsizei count */ getStackedPointer(2, const GLint *) /* const GLint *box */); break; case NFOSMESA_GLWRITEMASKEXT: D(funcname = "glWriteMaskEXT"); if (GL_ISAVAILABLE(glWriteMaskEXT)) nfglWriteMaskEXT( getStackedParameter(0), /* GLuint res */ getStackedParameter(1), /* GLuint in */ getStackedParameter(2), /* GLenum outX */ getStackedParameter(3), /* GLenum outY */ getStackedParameter(4), /* GLenum outZ */ getStackedParameter(5) /* GLenum outW */); break; case NFOSMESA_GLULOOKAT: D(funcname = "gluLookAt"); nfgluLookAt( getStackedDouble(0), /* GLdouble eyeX */ getStackedDouble(2), /* GLdouble eyeY */ getStackedDouble(4), /* GLdouble eyeZ */ getStackedDouble(6), /* GLdouble centerX */ getStackedDouble(8), /* GLdouble centerY */ getStackedDouble(10), /* GLdouble centerZ */ getStackedDouble(12), /* GLdouble upX */ getStackedDouble(14), /* GLdouble upY */ getStackedDouble(16) /* GLdouble upZ */); break; /* Functions generated: 2954 GL + 1 GLU */ aranym-1.1.0/src/natfeat/nfosmesa/call-gl.c0000664000175000017500000366666713454637622016743 0ustar joyjoy/* * -- DO NOT EDIT -- * Generated by dyngl.pl from ./tools/glfuncs.h */ void OSMesaDriver::nfglAccum(GLenum op, GLfloat value) { D(bug("nfosmesa: glAccum(%s, %f)", gl_enum_name(op), value)); fn.glAccum(op, value); } void OSMesaDriver::nfglAccumxOES(GLenum op, GLfixed value) { D(bug("nfosmesa: glAccumxOES(%s, 0x%x)", gl_enum_name(op), value)); fn.glAccumxOES(op, value); } GLboolean OSMesaDriver::nfglAcquireKeyedMutexWin32EXT(GLuint memory, GLuint64 key, GLuint timeout) { D(bug("nfosmesa: glAcquireKeyedMutexWin32EXT(%u, %" PRIu64 ", %u)", memory, key, timeout)); GLboolean __ret = fn.glAcquireKeyedMutexWin32EXT(memory, key, timeout); return __ret; } void OSMesaDriver::nfglActiveProgramEXT(GLuint program) { D(bug("nfosmesa: glActiveProgramEXT(%u)", program)); fn.glActiveProgramEXT(program); } void OSMesaDriver::nfglActiveShaderProgram(GLuint pipeline, GLuint program) { D(bug("nfosmesa: glActiveShaderProgram(%u, %u)", pipeline, program)); fn.glActiveShaderProgram(pipeline, program); } void OSMesaDriver::nfglActiveStencilFaceEXT(GLenum face) { D(bug("nfosmesa: glActiveStencilFaceEXT(%s)", gl_enum_name(face))); fn.glActiveStencilFaceEXT(face); } void OSMesaDriver::nfglActiveTexture(GLenum texture) { D(bug("nfosmesa: glActiveTexture(%s)", gl_enum_name(texture))); fn.glActiveTexture(texture); } void OSMesaDriver::nfglActiveTextureARB(GLenum texture) { D(bug("nfosmesa: glActiveTextureARB(%s)", gl_enum_name(texture))); fn.glActiveTextureARB(texture); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglActiveVaryingNV(GLuint program, memptr name) #else void OSMesaDriver::nfglActiveVaryingNV(GLuint program, const GLchar *name) #endif { D(bug("nfosmesa: glActiveVaryingNV(%u, " PRI_PTR ")", program, AtariOffset(name))); FN_GLACTIVEVARYINGNV(program, name); } void OSMesaDriver::nfglAddSwapHintRectWIN(GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glAddSwapHintRectWIN(%d, %d, %d, %d)", x, y, width, height)); fn.glAddSwapHintRectWIN(x, y, width, height); } void OSMesaDriver::nfglAlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod) { D(bug("nfosmesa: glAlphaFragmentOp1ATI(%s, %u, %u, %u, %u, %u)", gl_enum_name(op), dst, dstMod, arg1, arg1Rep, arg1Mod)); fn.glAlphaFragmentOp1ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod); } void OSMesaDriver::nfglAlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod) { D(bug("nfosmesa: glAlphaFragmentOp2ATI(%s, %u, %u, %u, %u, %u, %u, %u, %u)", gl_enum_name(op), dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod)); fn.glAlphaFragmentOp2ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod); } void OSMesaDriver::nfglAlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod) { D(bug("nfosmesa: glAlphaFragmentOp3ATI(%s, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u)", gl_enum_name(op), dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod)); fn.glAlphaFragmentOp3ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod); } void OSMesaDriver::nfglAlphaFunc(GLenum func, GLclampf ref) { D(bug("nfosmesa: glAlphaFunc(%s, %f)", gl_enum_name(func), ref)); fn.glAlphaFunc(func, ref); } void OSMesaDriver::nfglAlphaFuncxOES(GLenum func, GLfixed ref) { D(bug("nfosmesa: glAlphaFuncxOES(%s, 0x%x)", gl_enum_name(func), ref)); fn.glAlphaFuncxOES(func, ref); } void OSMesaDriver::nfglAlphaToCoverageDitherControlNV(GLenum mode) { D(bug("nfosmesa: glAlphaToCoverageDitherControlNV(%s)", gl_enum_name(mode))); fn.glAlphaToCoverageDitherControlNV(mode); } void OSMesaDriver::nfglApplyFramebufferAttachmentCMAAINTEL(void) { D(bug("nfosmesa: glApplyFramebufferAttachmentCMAAINTEL()")); fn.glApplyFramebufferAttachmentCMAAINTEL(); } void OSMesaDriver::nfglApplyTextureEXT(GLenum mode) { D(bug("nfosmesa: glApplyTextureEXT(%s)", gl_enum_name(mode))); fn.glApplyTextureEXT(mode); } #if NFOSMESA_POINTER_AS_MEMARG GLboolean OSMesaDriver::nfglAreProgramsResidentNV(GLsizei n, memptr programs, memptr residences) #else GLboolean OSMesaDriver::nfglAreProgramsResidentNV(GLsizei n, const GLuint *programs, GLboolean *residences) #endif { D(bug("nfosmesa: glAreProgramsResidentNV(%d, " PRI_PTR ", " PRI_PTR ")", n, AtariOffset(programs), AtariOffset(residences))); FN_GLAREPROGRAMSRESIDENTNV(n, programs, residences); } #if NFOSMESA_POINTER_AS_MEMARG GLboolean OSMesaDriver::nfglAreTexturesResident(GLsizei n, memptr textures, memptr residences) #else GLboolean OSMesaDriver::nfglAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) #endif { D(bug("nfosmesa: glAreTexturesResident(%d, " PRI_PTR ", " PRI_PTR ")", n, AtariOffset(textures), AtariOffset(residences))); FN_GLARETEXTURESRESIDENT(n, textures, residences); } #if NFOSMESA_POINTER_AS_MEMARG GLboolean OSMesaDriver::nfglAreTexturesResidentEXT(GLsizei n, memptr textures, memptr residences) #else GLboolean OSMesaDriver::nfglAreTexturesResidentEXT(GLsizei n, const GLuint *textures, GLboolean *residences) #endif { D(bug("nfosmesa: glAreTexturesResidentEXT(%d, " PRI_PTR ", " PRI_PTR ")", n, AtariOffset(textures), AtariOffset(residences))); FN_GLARETEXTURESRESIDENTEXT(n, textures, residences); } void OSMesaDriver::nfglArrayElement(GLint i) { D(bug("nfosmesa: glArrayElement(%d)", i)); FN_GLARRAYELEMENT(i); } void OSMesaDriver::nfglArrayElementEXT(GLint i) { D(bug("nfosmesa: glArrayElementEXT(%d)", i)); FN_GLARRAYELEMENTEXT(i); } void OSMesaDriver::nfglArrayObjectATI(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset) { D(bug("nfosmesa: glArrayObjectATI(%s, %d, %s, %d, %u, %u)", gl_enum_name(array), size, gl_enum_name(type), stride, buffer, offset)); FN_GLARRAYOBJECTATI(array, size, type, stride, buffer, offset); } void OSMesaDriver::nfglAsyncMarkerSGIX(GLuint marker) { D(bug("nfosmesa: glAsyncMarkerSGIX(%u)", marker)); fn.glAsyncMarkerSGIX(marker); } void OSMesaDriver::nfglAttachObjectARB(GLhandleARB containerObj, GLhandleARB obj) { D(bug("nfosmesa: glAttachObjectARB(%u, %u)", (unsigned int)(uintptr_t)containerObj, (unsigned int)(uintptr_t)obj)); fn.glAttachObjectARB(containerObj, obj); } void OSMesaDriver::nfglAttachShader(GLuint program, GLuint shader) { D(bug("nfosmesa: glAttachShader(%u, %u)", program, shader)); fn.glAttachShader(program, shader); } void OSMesaDriver::nfglBegin(GLenum mode) { D(bug("nfosmesa: glBegin(%s)", gl_enum_name(mode))); fn.glBegin(mode); } void OSMesaDriver::nfglBeginConditionalRender(GLuint id, GLenum mode) { D(bug("nfosmesa: glBeginConditionalRender(%u, %s)", id, gl_enum_name(mode))); fn.glBeginConditionalRender(id, mode); } void OSMesaDriver::nfglBeginConditionalRenderNV(GLuint id, GLenum mode) { D(bug("nfosmesa: glBeginConditionalRenderNV(%u, %s)", id, gl_enum_name(mode))); fn.glBeginConditionalRenderNV(id, mode); } void OSMesaDriver::nfglBeginConditionalRenderNVX(GLuint id) { D(bug("nfosmesa: glBeginConditionalRenderNVX(%u)", id)); fn.glBeginConditionalRenderNVX(id); } void OSMesaDriver::nfglBeginFragmentShaderATI(void) { D(bug("nfosmesa: glBeginFragmentShaderATI()")); fn.glBeginFragmentShaderATI(); } void OSMesaDriver::nfglBeginOcclusionQueryNV(GLuint id) { D(bug("nfosmesa: glBeginOcclusionQueryNV(%u)", id)); fn.glBeginOcclusionQueryNV(id); } void OSMesaDriver::nfglBeginPerfMonitorAMD(GLuint monitor) { D(bug("nfosmesa: glBeginPerfMonitorAMD(%u)", monitor)); fn.glBeginPerfMonitorAMD(monitor); } void OSMesaDriver::nfglBeginPerfQueryINTEL(GLuint queryHandle) { D(bug("nfosmesa: glBeginPerfQueryINTEL(%u)", queryHandle)); fn.glBeginPerfQueryINTEL(queryHandle); } void OSMesaDriver::nfglBeginQuery(GLenum target, GLuint id) { D(bug("nfosmesa: glBeginQuery(%s, %u)", gl_enum_name(target), id)); fn.glBeginQuery(target, id); } void OSMesaDriver::nfglBeginQueryARB(GLenum target, GLuint id) { D(bug("nfosmesa: glBeginQueryARB(%s, %u)", gl_enum_name(target), id)); fn.glBeginQueryARB(target, id); } void OSMesaDriver::nfglBeginQueryIndexed(GLenum target, GLuint index, GLuint id) { D(bug("nfosmesa: glBeginQueryIndexed(%s, %u, %u)", gl_enum_name(target), index, id)); fn.glBeginQueryIndexed(target, index, id); } void OSMesaDriver::nfglBeginTransformFeedback(GLenum primitiveMode) { D(bug("nfosmesa: glBeginTransformFeedback(%s)", gl_enum_name(primitiveMode))); fn.glBeginTransformFeedback(primitiveMode); } void OSMesaDriver::nfglBeginTransformFeedbackEXT(GLenum primitiveMode) { D(bug("nfosmesa: glBeginTransformFeedbackEXT(%s)", gl_enum_name(primitiveMode))); fn.glBeginTransformFeedbackEXT(primitiveMode); } void OSMesaDriver::nfglBeginTransformFeedbackNV(GLenum primitiveMode) { D(bug("nfosmesa: glBeginTransformFeedbackNV(%s)", gl_enum_name(primitiveMode))); fn.glBeginTransformFeedbackNV(primitiveMode); } void OSMesaDriver::nfglBeginVertexShaderEXT(void) { D(bug("nfosmesa: glBeginVertexShaderEXT()")); fn.glBeginVertexShaderEXT(); } void OSMesaDriver::nfglBeginVideoCaptureNV(GLuint video_capture_slot) { D(bug("nfosmesa: glBeginVideoCaptureNV(%u)", video_capture_slot)); fn.glBeginVideoCaptureNV(video_capture_slot); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBindAttribLocation(GLuint program, GLuint index, memptr name) #else void OSMesaDriver::nfglBindAttribLocation(GLuint program, GLuint index, const GLchar *name) #endif { D(bug("nfosmesa: glBindAttribLocation(%u, %u, " PRI_PTR ")", program, index, AtariOffset(name))); FN_GLBINDATTRIBLOCATION(program, index, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBindAttribLocationARB(GLhandleARB programObj, GLuint index, memptr name) #else void OSMesaDriver::nfglBindAttribLocationARB(GLhandleARB programObj, GLuint index, const GLcharARB *name) #endif { D(bug("nfosmesa: glBindAttribLocationARB(%u, %u, " PRI_PTR ")", (unsigned int)(uintptr_t)programObj, index, AtariOffset(name))); FN_GLBINDATTRIBLOCATIONARB(programObj, index, name); } void OSMesaDriver::nfglBindBuffer(GLenum target, GLuint buffer) { D(bug("nfosmesa: glBindBuffer(%s, %u)", gl_enum_name(target), buffer)); FN_GLBINDBUFFER(target, buffer); } void OSMesaDriver::nfglBindBufferARB(GLenum target, GLuint buffer) { D(bug("nfosmesa: glBindBufferARB(%s, %u)", gl_enum_name(target), buffer)); FN_GLBINDBUFFERARB(target, buffer); } void OSMesaDriver::nfglBindBufferBase(GLenum target, GLuint index, GLuint buffer) { D(bug("nfosmesa: glBindBufferBase(%s, %u, %u)", gl_enum_name(target), index, buffer)); FN_GLBINDBUFFERBASE(target, index, buffer); } void OSMesaDriver::nfglBindBufferBaseEXT(GLenum target, GLuint index, GLuint buffer) { D(bug("nfosmesa: glBindBufferBaseEXT(%s, %u, %u)", gl_enum_name(target), index, buffer)); FN_GLBINDBUFFERBASEEXT(target, index, buffer); } void OSMesaDriver::nfglBindBufferBaseNV(GLenum target, GLuint index, GLuint buffer) { D(bug("nfosmesa: glBindBufferBaseNV(%s, %u, %u)", gl_enum_name(target), index, buffer)); FN_GLBINDBUFFERBASENV(target, index, buffer); } void OSMesaDriver::nfglBindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset) { D(bug("nfosmesa: glBindBufferOffsetEXT(%s, %u, %u, %" PRI_IPTR ")", gl_enum_name(target), index, buffer, offset)); fn.glBindBufferOffsetEXT(target, index, buffer, offset); } void OSMesaDriver::nfglBindBufferOffsetNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset) { D(bug("nfosmesa: glBindBufferOffsetNV(%s, %u, %u, %" PRI_IPTR ")", gl_enum_name(target), index, buffer, offset)); fn.glBindBufferOffsetNV(target, index, buffer, offset); } void OSMesaDriver::nfglBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) { D(bug("nfosmesa: glBindBufferRange(%s, %u, %u, %" PRI_IPTR ", %" PRI_IPTR ")", gl_enum_name(target), index, buffer, offset, size)); FN_GLBINDBUFFERRANGE(target, index, buffer, offset, size); } void OSMesaDriver::nfglBindBufferRangeEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) { D(bug("nfosmesa: glBindBufferRangeEXT(%s, %u, %u, %" PRI_IPTR ", %" PRI_IPTR ")", gl_enum_name(target), index, buffer, offset, size)); FN_GLBINDBUFFERRANGEEXT(target, index, buffer, offset, size); } void OSMesaDriver::nfglBindBufferRangeNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) { D(bug("nfosmesa: glBindBufferRangeNV(%s, %u, %u, %" PRI_IPTR ", %" PRI_IPTR ")", gl_enum_name(target), index, buffer, offset, size)); FN_GLBINDBUFFERRANGENV(target, index, buffer, offset, size); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBindBuffersBase(GLenum target, GLuint first, GLsizei count, memptr buffers) #else void OSMesaDriver::nfglBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers) #endif { D(bug("nfosmesa: glBindBuffersBase(%s, %u, %d, " PRI_PTR ")", gl_enum_name(target), first, count, AtariOffset(buffers))); FN_GLBINDBUFFERSBASE(target, first, count, buffers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBindBuffersRange(GLenum target, GLuint first, GLsizei count, memptr buffers, memptr offsets, memptr sizes) #else void OSMesaDriver::nfglBindBuffersRange(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes) #endif { D(bug("nfosmesa: glBindBuffersRange(%s, %u, %d, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", gl_enum_name(target), first, count, AtariOffset(buffers), AtariOffset(offsets), AtariOffset(sizes))); FN_GLBINDBUFFERSRANGE(target, first, count, buffers, offsets, sizes); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBindFragDataLocation(GLuint program, GLuint color, memptr name) #else void OSMesaDriver::nfglBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) #endif { D(bug("nfosmesa: glBindFragDataLocation(%u, %u, " PRI_PTR ")", program, color, AtariOffset(name))); FN_GLBINDFRAGDATALOCATION(program, color, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBindFragDataLocationEXT(GLuint program, GLuint color, memptr name) #else void OSMesaDriver::nfglBindFragDataLocationEXT(GLuint program, GLuint color, const GLchar *name) #endif { D(bug("nfosmesa: glBindFragDataLocationEXT(%u, %u, " PRI_PTR ")", program, color, AtariOffset(name))); FN_GLBINDFRAGDATALOCATIONEXT(program, color, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, memptr name) #else void OSMesaDriver::nfglBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) #endif { D(bug("nfosmesa: glBindFragDataLocationIndexed(%u, %u, %u, " PRI_PTR ")", program, colorNumber, index, AtariOffset(name))); FN_GLBINDFRAGDATALOCATIONINDEXED(program, colorNumber, index, name); } void OSMesaDriver::nfglBindFragmentShaderATI(GLuint id) { D(bug("nfosmesa: glBindFragmentShaderATI(%u)", id)); fn.glBindFragmentShaderATI(id); } void OSMesaDriver::nfglBindFramebuffer(GLenum target, GLuint framebuffer) { D(bug("nfosmesa: glBindFramebuffer(%s, %u)", gl_enum_name(target), framebuffer)); fn.glBindFramebuffer(target, framebuffer); } void OSMesaDriver::nfglBindFramebufferEXT(GLenum target, GLuint framebuffer) { D(bug("nfosmesa: glBindFramebufferEXT(%s, %u)", gl_enum_name(target), framebuffer)); fn.glBindFramebufferEXT(target, framebuffer); } void OSMesaDriver::nfglBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLenum format) { D(bug("nfosmesa: glBindImageTexture(%u, %u, %d, %d, %d, %s, %s)", unit, texture, level, layered, layer, gl_enum_name(access), gl_enum_name(format))); fn.glBindImageTexture(unit, texture, level, layered, layer, access, format); } void OSMesaDriver::nfglBindImageTextureEXT(GLuint index, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLint format) { D(bug("nfosmesa: glBindImageTextureEXT(%u, %u, %d, %d, %d, %s, %d)", index, texture, level, layered, layer, gl_enum_name(access), format)); fn.glBindImageTextureEXT(index, texture, level, layered, layer, access, format); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBindImageTextures(GLuint first, GLsizei count, memptr textures) #else void OSMesaDriver::nfglBindImageTextures(GLuint first, GLsizei count, const GLuint *textures) #endif { D(bug("nfosmesa: glBindImageTextures(%u, %d, " PRI_PTR ")", first, count, AtariOffset(textures))); FN_GLBINDIMAGETEXTURES(first, count, textures); } GLuint OSMesaDriver::nfglBindLightParameterEXT(GLenum light, GLenum value) { D(bug("nfosmesa: glBindLightParameterEXT(%s, %s)", gl_enum_name(light), gl_enum_name(value))); GLuint __ret = fn.glBindLightParameterEXT(light, value); return __ret; } GLuint OSMesaDriver::nfglBindMaterialParameterEXT(GLenum face, GLenum value) { D(bug("nfosmesa: glBindMaterialParameterEXT(%s, %s)", gl_enum_name(face), gl_enum_name(value))); GLuint __ret = fn.glBindMaterialParameterEXT(face, value); return __ret; } void OSMesaDriver::nfglBindMultiTextureEXT(GLenum texunit, GLenum target, GLuint texture) { D(bug("nfosmesa: glBindMultiTextureEXT(%s, %s, %u)", gl_enum_name(texunit), gl_enum_name(target), texture)); fn.glBindMultiTextureEXT(texunit, target, texture); } GLuint OSMesaDriver::nfglBindParameterEXT(GLenum value) { D(bug("nfosmesa: glBindParameterEXT(%s)", gl_enum_name(value))); GLuint __ret = fn.glBindParameterEXT(value); return __ret; } void OSMesaDriver::nfglBindProgramARB(GLenum target, GLuint program) { D(bug("nfosmesa: glBindProgramARB(%s, %u)", gl_enum_name(target), program)); fn.glBindProgramARB(target, program); } void OSMesaDriver::nfglBindProgramNV(GLenum target, GLuint id) { D(bug("nfosmesa: glBindProgramNV(%s, %u)", gl_enum_name(target), id)); fn.glBindProgramNV(target, id); } void OSMesaDriver::nfglBindProgramPipeline(GLuint pipeline) { D(bug("nfosmesa: glBindProgramPipeline(%u)", pipeline)); fn.glBindProgramPipeline(pipeline); } void OSMesaDriver::nfglBindRenderbuffer(GLenum target, GLuint renderbuffer) { D(bug("nfosmesa: glBindRenderbuffer(%s, %u)", gl_enum_name(target), renderbuffer)); fn.glBindRenderbuffer(target, renderbuffer); } void OSMesaDriver::nfglBindRenderbufferEXT(GLenum target, GLuint renderbuffer) { D(bug("nfosmesa: glBindRenderbufferEXT(%s, %u)", gl_enum_name(target), renderbuffer)); fn.glBindRenderbufferEXT(target, renderbuffer); } void OSMesaDriver::nfglBindSampler(GLuint unit, GLuint sampler) { D(bug("nfosmesa: glBindSampler(%u, %u)", unit, sampler)); fn.glBindSampler(unit, sampler); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBindSamplers(GLuint first, GLsizei count, memptr samplers) #else void OSMesaDriver::nfglBindSamplers(GLuint first, GLsizei count, const GLuint *samplers) #endif { D(bug("nfosmesa: glBindSamplers(%u, %d, " PRI_PTR ")", first, count, AtariOffset(samplers))); FN_GLBINDSAMPLERS(first, count, samplers); } GLuint OSMesaDriver::nfglBindTexGenParameterEXT(GLenum unit, GLenum coord, GLenum value) { D(bug("nfosmesa: glBindTexGenParameterEXT(%s, %s, %s)", gl_enum_name(unit), gl_enum_name(coord), gl_enum_name(value))); GLuint __ret = fn.glBindTexGenParameterEXT(unit, coord, value); return __ret; } void OSMesaDriver::nfglBindTexture(GLenum target, GLuint texture) { D(bug("nfosmesa: glBindTexture(%s, %u)", gl_enum_name(target), texture)); fn.glBindTexture(target, texture); } void OSMesaDriver::nfglBindTextureEXT(GLenum target, GLuint texture) { D(bug("nfosmesa: glBindTextureEXT(%s, %u)", gl_enum_name(target), texture)); fn.glBindTextureEXT(target, texture); } void OSMesaDriver::nfglBindTextureUnit(GLuint unit, GLuint texture) { D(bug("nfosmesa: glBindTextureUnit(%u, %u)", unit, texture)); fn.glBindTextureUnit(unit, texture); } GLuint OSMesaDriver::nfglBindTextureUnitParameterEXT(GLenum unit, GLenum value) { D(bug("nfosmesa: glBindTextureUnitParameterEXT(%s, %s)", gl_enum_name(unit), gl_enum_name(value))); GLuint __ret = fn.glBindTextureUnitParameterEXT(unit, value); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBindTextures(GLuint first, GLsizei count, memptr textures) #else void OSMesaDriver::nfglBindTextures(GLuint first, GLsizei count, const GLuint *textures) #endif { D(bug("nfosmesa: glBindTextures(%u, %d, " PRI_PTR ")", first, count, AtariOffset(textures))); FN_GLBINDTEXTURES(first, count, textures); } void OSMesaDriver::nfglBindTransformFeedback(GLenum target, GLuint id) { D(bug("nfosmesa: glBindTransformFeedback(%s, %u)", gl_enum_name(target), id)); fn.glBindTransformFeedback(target, id); } void OSMesaDriver::nfglBindTransformFeedbackNV(GLenum target, GLuint id) { D(bug("nfosmesa: glBindTransformFeedbackNV(%s, %u)", gl_enum_name(target), id)); fn.glBindTransformFeedbackNV(target, id); } void OSMesaDriver::nfglBindVertexArray(GLuint array) { D(bug("nfosmesa: glBindVertexArray(%u)", array)); fn.glBindVertexArray(array); } void OSMesaDriver::nfglBindVertexArrayAPPLE(GLuint array) { D(bug("nfosmesa: glBindVertexArrayAPPLE(%u)", array)); fn.glBindVertexArrayAPPLE(array); } void OSMesaDriver::nfglBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) { D(bug("nfosmesa: glBindVertexBuffer(%u, %u, %" PRI_IPTR ", %d)", bindingindex, buffer, offset, stride)); FN_GLBINDVERTEXBUFFER(bindingindex, buffer, offset, stride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBindVertexBuffers(GLuint first, GLsizei count, memptr buffers, memptr offsets, memptr strides) #else void OSMesaDriver::nfglBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides) #endif { D(bug("nfosmesa: glBindVertexBuffers(%u, %d, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", first, count, AtariOffset(buffers), AtariOffset(offsets), AtariOffset(strides))); FN_GLBINDVERTEXBUFFERS(first, count, buffers, offsets, strides); } void OSMesaDriver::nfglBindVertexShaderEXT(GLuint id) { D(bug("nfosmesa: glBindVertexShaderEXT(%u)", id)); fn.glBindVertexShaderEXT(id); } void OSMesaDriver::nfglBindVideoCaptureStreamBufferNV(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset) { D(bug("nfosmesa: glBindVideoCaptureStreamBufferNV(%u, %u, %s, %" PRI_IPTR ")", video_capture_slot, stream, gl_enum_name(frame_region), offset)); fn.glBindVideoCaptureStreamBufferNV(video_capture_slot, stream, frame_region, offset); } void OSMesaDriver::nfglBindVideoCaptureStreamTextureNV(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture) { D(bug("nfosmesa: glBindVideoCaptureStreamTextureNV(%u, %u, %s, %s, %u)", video_capture_slot, stream, gl_enum_name(frame_region), gl_enum_name(target), texture)); fn.glBindVideoCaptureStreamTextureNV(video_capture_slot, stream, frame_region, target, texture); } void OSMesaDriver::nfglBinormal3bEXT(GLbyte32 bx, GLbyte32 by, GLbyte32 bz) { D(bug("nfosmesa: glBinormal3bEXT(%d, %d, %d)", bx, by, bz)); fn.glBinormal3bEXT(bx, by, bz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBinormal3bvEXT(memptr v) #else void OSMesaDriver::nfglBinormal3bvEXT(const GLbyte *v) #endif { D(bug("nfosmesa: glBinormal3bvEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLBINORMAL3BVEXT(v); } void OSMesaDriver::nfglBinormal3dEXT(GLdouble bx, GLdouble by, GLdouble bz) { D(bug("nfosmesa: glBinormal3dEXT(%f, %f, %f)", bx, by, bz)); fn.glBinormal3dEXT(bx, by, bz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBinormal3dvEXT(memptr v) #else void OSMesaDriver::nfglBinormal3dvEXT(const GLdouble *v) #endif { D(bug("nfosmesa: glBinormal3dvEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLBINORMAL3DVEXT(v); } void OSMesaDriver::nfglBinormal3fEXT(GLfloat bx, GLfloat by, GLfloat bz) { D(bug("nfosmesa: glBinormal3fEXT(%f, %f, %f)", bx, by, bz)); fn.glBinormal3fEXT(bx, by, bz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBinormal3fvEXT(memptr v) #else void OSMesaDriver::nfglBinormal3fvEXT(const GLfloat *v) #endif { D(bug("nfosmesa: glBinormal3fvEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLBINORMAL3FVEXT(v); } void OSMesaDriver::nfglBinormal3iEXT(GLint bx, GLint by, GLint bz) { D(bug("nfosmesa: glBinormal3iEXT(%d, %d, %d)", bx, by, bz)); fn.glBinormal3iEXT(bx, by, bz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBinormal3ivEXT(memptr v) #else void OSMesaDriver::nfglBinormal3ivEXT(const GLint *v) #endif { D(bug("nfosmesa: glBinormal3ivEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLBINORMAL3IVEXT(v); } void OSMesaDriver::nfglBinormal3sEXT(GLshort32 bx, GLshort32 by, GLshort32 bz) { D(bug("nfosmesa: glBinormal3sEXT(%d, %d, %d)", bx, by, bz)); fn.glBinormal3sEXT(bx, by, bz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBinormal3svEXT(memptr v) #else void OSMesaDriver::nfglBinormal3svEXT(const GLshort *v) #endif { D(bug("nfosmesa: glBinormal3svEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLBINORMAL3SVEXT(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBinormalPointerEXT(GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglBinormalPointerEXT(GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glBinormalPointerEXT(%s, %d, " PRI_PTR ")", gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLBINORMALPOINTEREXT(type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, memptr bitmap) #else void OSMesaDriver::nfglBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) #endif { D(bug("nfosmesa: glBitmap(%d, %d, %f, %f, %f, %f, " PRI_PTR ")", width, height, xorig, yorig, xmove, ymove, AtariOffset(bitmap))); FN_GLBITMAP(width, height, xorig, yorig, xmove, ymove, bitmap); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBitmapxOES(GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, memptr bitmap) #else void OSMesaDriver::nfglBitmapxOES(GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap) #endif { D(bug("nfosmesa: glBitmapxOES(%d, %d, 0x%x, 0x%x, 0x%x, 0x%x, " PRI_PTR ")", width, height, xorig, yorig, xmove, ymove, AtariOffset(bitmap))); FN_GLBITMAPXOES(width, height, xorig, yorig, xmove, ymove, bitmap); } void OSMesaDriver::nfglBlendBarrierKHR(void) { D(bug("nfosmesa: glBlendBarrierKHR()")); fn.glBlendBarrierKHR(); } void OSMesaDriver::nfglBlendBarrierNV(void) { D(bug("nfosmesa: glBlendBarrierNV()")); fn.glBlendBarrierNV(); } void OSMesaDriver::nfglBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { D(bug("nfosmesa: glBlendColor(%f, %f, %f, %f)", red, green, blue, alpha)); fn.glBlendColor(red, green, blue, alpha); } void OSMesaDriver::nfglBlendColorEXT(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { D(bug("nfosmesa: glBlendColorEXT(%f, %f, %f, %f)", red, green, blue, alpha)); fn.glBlendColorEXT(red, green, blue, alpha); } void OSMesaDriver::nfglBlendColorxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) { D(bug("nfosmesa: glBlendColorxOES(0x%x, 0x%x, 0x%x, 0x%x)", red, green, blue, alpha)); fn.glBlendColorxOES(red, green, blue, alpha); } void OSMesaDriver::nfglBlendEquation(GLenum mode) { D(bug("nfosmesa: glBlendEquation(%s)", gl_enum_name(mode))); fn.glBlendEquation(mode); } void OSMesaDriver::nfglBlendEquationEXT(GLenum mode) { D(bug("nfosmesa: glBlendEquationEXT(%s)", gl_enum_name(mode))); fn.glBlendEquationEXT(mode); } void OSMesaDriver::nfglBlendEquationIndexedAMD(GLuint buf, GLenum mode) { D(bug("nfosmesa: glBlendEquationIndexedAMD(%u, %s)", buf, gl_enum_name(mode))); fn.glBlendEquationIndexedAMD(buf, mode); } void OSMesaDriver::nfglBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) { D(bug("nfosmesa: glBlendEquationSeparate(%s, %s)", gl_enum_name(modeRGB), gl_enum_name(modeAlpha))); fn.glBlendEquationSeparate(modeRGB, modeAlpha); } void OSMesaDriver::nfglBlendEquationSeparateATI(GLenum equationRGB, GLenum equationAlpha) { D(bug("nfosmesa: glBlendEquationSeparateATI(%s, %s)", gl_enum_name(equationRGB), gl_enum_name(equationAlpha))); fn.glBlendEquationSeparateATI(equationRGB, equationAlpha); } void OSMesaDriver::nfglBlendEquationSeparateEXT(GLenum modeRGB, GLenum modeAlpha) { D(bug("nfosmesa: glBlendEquationSeparateEXT(%s, %s)", gl_enum_name(modeRGB), gl_enum_name(modeAlpha))); fn.glBlendEquationSeparateEXT(modeRGB, modeAlpha); } void OSMesaDriver::nfglBlendEquationSeparateIndexedAMD(GLuint buf, GLenum modeRGB, GLenum modeAlpha) { D(bug("nfosmesa: glBlendEquationSeparateIndexedAMD(%u, %s, %s)", buf, gl_enum_name(modeRGB), gl_enum_name(modeAlpha))); fn.glBlendEquationSeparateIndexedAMD(buf, modeRGB, modeAlpha); } void OSMesaDriver::nfglBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) { D(bug("nfosmesa: glBlendEquationSeparatei(%u, %s, %s)", buf, gl_enum_name(modeRGB), gl_enum_name(modeAlpha))); fn.glBlendEquationSeparatei(buf, modeRGB, modeAlpha); } void OSMesaDriver::nfglBlendEquationSeparateiARB(GLuint buf, GLenum modeRGB, GLenum modeAlpha) { D(bug("nfosmesa: glBlendEquationSeparateiARB(%u, %s, %s)", buf, gl_enum_name(modeRGB), gl_enum_name(modeAlpha))); fn.glBlendEquationSeparateiARB(buf, modeRGB, modeAlpha); } void OSMesaDriver::nfglBlendEquationi(GLuint buf, GLenum mode) { D(bug("nfosmesa: glBlendEquationi(%u, %s)", buf, gl_enum_name(mode))); fn.glBlendEquationi(buf, mode); } void OSMesaDriver::nfglBlendEquationiARB(GLuint buf, GLenum mode) { D(bug("nfosmesa: glBlendEquationiARB(%u, %s)", buf, gl_enum_name(mode))); fn.glBlendEquationiARB(buf, mode); } void OSMesaDriver::nfglBlendFunc(GLenum sfactor, GLenum dfactor) { D(bug("nfosmesa: glBlendFunc(%s, %s)", gl_enum_name(sfactor), gl_enum_name(dfactor))); fn.glBlendFunc(sfactor, dfactor); } void OSMesaDriver::nfglBlendFuncIndexedAMD(GLuint buf, GLenum src, GLenum dst) { D(bug("nfosmesa: glBlendFuncIndexedAMD(%u, %s, %s)", buf, gl_enum_name(src), gl_enum_name(dst))); fn.glBlendFuncIndexedAMD(buf, src, dst); } void OSMesaDriver::nfglBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) { D(bug("nfosmesa: glBlendFuncSeparate(%s, %s, %s, %s)", gl_enum_name(sfactorRGB), gl_enum_name(dfactorRGB), gl_enum_name(sfactorAlpha), gl_enum_name(dfactorAlpha))); fn.glBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); } void OSMesaDriver::nfglBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) { D(bug("nfosmesa: glBlendFuncSeparateEXT(%s, %s, %s, %s)", gl_enum_name(sfactorRGB), gl_enum_name(dfactorRGB), gl_enum_name(sfactorAlpha), gl_enum_name(dfactorAlpha))); fn.glBlendFuncSeparateEXT(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); } void OSMesaDriver::nfglBlendFuncSeparateINGR(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) { D(bug("nfosmesa: glBlendFuncSeparateINGR(%s, %s, %s, %s)", gl_enum_name(sfactorRGB), gl_enum_name(dfactorRGB), gl_enum_name(sfactorAlpha), gl_enum_name(dfactorAlpha))); fn.glBlendFuncSeparateINGR(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); } void OSMesaDriver::nfglBlendFuncSeparateIndexedAMD(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) { D(bug("nfosmesa: glBlendFuncSeparateIndexedAMD(%u, %s, %s, %s, %s)", buf, gl_enum_name(srcRGB), gl_enum_name(dstRGB), gl_enum_name(srcAlpha), gl_enum_name(dstAlpha))); fn.glBlendFuncSeparateIndexedAMD(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); } void OSMesaDriver::nfglBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) { D(bug("nfosmesa: glBlendFuncSeparatei(%u, %s, %s, %s, %s)", buf, gl_enum_name(srcRGB), gl_enum_name(dstRGB), gl_enum_name(srcAlpha), gl_enum_name(dstAlpha))); fn.glBlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); } void OSMesaDriver::nfglBlendFuncSeparateiARB(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) { D(bug("nfosmesa: glBlendFuncSeparateiARB(%u, %s, %s, %s, %s)", buf, gl_enum_name(srcRGB), gl_enum_name(dstRGB), gl_enum_name(srcAlpha), gl_enum_name(dstAlpha))); fn.glBlendFuncSeparateiARB(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); } void OSMesaDriver::nfglBlendFunci(GLuint buf, GLenum src, GLenum dst) { D(bug("nfosmesa: glBlendFunci(%u, %s, %s)", buf, gl_enum_name(src), gl_enum_name(dst))); fn.glBlendFunci(buf, src, dst); } void OSMesaDriver::nfglBlendFunciARB(GLuint buf, GLenum src, GLenum dst) { D(bug("nfosmesa: glBlendFunciARB(%u, %s, %s)", buf, gl_enum_name(src), gl_enum_name(dst))); fn.glBlendFunciARB(buf, src, dst); } void OSMesaDriver::nfglBlendParameteriNV(GLenum pname, GLint value) { D(bug("nfosmesa: glBlendParameteriNV(%s, %d)", gl_enum_name(pname), value)); fn.glBlendParameteriNV(pname, value); } void OSMesaDriver::nfglBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { D(bug("nfosmesa: glBlitFramebuffer(%d, %d, %d, %d, %d, %d, %d, %d, 0x%x, %s)", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, gl_enum_name(filter))); fn.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); } void OSMesaDriver::nfglBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { D(bug("nfosmesa: glBlitFramebufferEXT(%d, %d, %d, %d, %d, %d, %d, %d, 0x%x, %s)", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, gl_enum_name(filter))); fn.glBlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); } void OSMesaDriver::nfglBlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { D(bug("nfosmesa: glBlitNamedFramebuffer(%u, %u, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x, %s)", readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, gl_enum_name(filter))); fn.glBlitNamedFramebuffer(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); } void OSMesaDriver::nfglBufferAddressRangeNV(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length) { D(bug("nfosmesa: glBufferAddressRangeNV(%s, %u, %" PRIu64 ", %" PRI_IPTR ")", gl_enum_name(pname), index, address, length)); fn.glBufferAddressRangeNV(pname, index, address, length); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBufferData(GLenum target, GLsizeiptr size, memptr data, GLenum usage) #else void OSMesaDriver::nfglBufferData(GLenum target, GLsizeiptr size, const void *data, GLenum usage) #endif { D(bug("nfosmesa: glBufferData(%s, %" PRI_IPTR ", " PRI_PTR ", %s)", gl_enum_name(target), size, AtariOffset(data), gl_enum_name(usage))); FN_GLBUFFERDATA(target, size, data, usage); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBufferDataARB(GLenum target, GLsizeiptrARB size, memptr data, GLenum usage) #else void OSMesaDriver::nfglBufferDataARB(GLenum target, GLsizeiptrARB size, const void *data, GLenum usage) #endif { D(bug("nfosmesa: glBufferDataARB(%s, %" PRI_IPTR ", " PRI_PTR ", %s)", gl_enum_name(target), size, AtariOffset(data), gl_enum_name(usage))); FN_GLBUFFERDATAARB(target, size, data, usage); } void OSMesaDriver::nfglBufferPageCommitmentARB(GLenum target, GLintptr offset, GLsizeiptr size, GLboolean32 commit) { D(bug("nfosmesa: glBufferPageCommitmentARB(%s, %" PRI_IPTR ", %" PRI_IPTR ", %d)", gl_enum_name(target), offset, size, commit)); fn.glBufferPageCommitmentARB(target, offset, size, commit); } void OSMesaDriver::nfglBufferParameteriAPPLE(GLenum target, GLenum pname, GLint param) { D(bug("nfosmesa: glBufferParameteriAPPLE(%s, %s, %d)", gl_enum_name(target), gl_enum_name(pname), param)); fn.glBufferParameteriAPPLE(target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBufferStorage(GLenum target, GLsizeiptr size, memptr data, GLbitfield flags) #else void OSMesaDriver::nfglBufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags) #endif { D(bug("nfosmesa: glBufferStorage(%s, %" PRI_IPTR ", " PRI_PTR ", 0x%x)", gl_enum_name(target), size, AtariOffset(data), flags)); FN_GLBUFFERSTORAGE(target, size, data, flags); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBufferStorageExternalEXT(GLenum target, GLintptr offset, GLsizeiptr size, memptr clientBuffer, GLbitfield flags) #else void OSMesaDriver::nfglBufferStorageExternalEXT(GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags) #endif { D(bug("nfosmesa: glBufferStorageExternalEXT(%s, %" PRI_IPTR ", %" PRI_IPTR ", " PRI_PTR ", 0x%x)", gl_enum_name(target), offset, size, AtariOffset(clientBuffer), flags)); FN_GLBUFFERSTORAGEEXTERNALEXT(target, offset, size, clientBuffer, flags); } void OSMesaDriver::nfglBufferStorageMemEXT(GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset) { D(bug("nfosmesa: glBufferStorageMemEXT(%s, %" PRI_IPTR ", %u, %" PRIu64 ")", gl_enum_name(target), size, memory, offset)); fn.glBufferStorageMemEXT(target, size, memory, offset); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, memptr data) #else void OSMesaDriver::nfglBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data) #endif { D(bug("nfosmesa: glBufferSubData(%s, %" PRI_IPTR ", %" PRI_IPTR ", " PRI_PTR ")", gl_enum_name(target), offset, size, AtariOffset(data))); FN_GLBUFFERSUBDATA(target, offset, size, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, memptr data) #else void OSMesaDriver::nfglBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data) #endif { D(bug("nfosmesa: glBufferSubDataARB(%s, %" PRI_IPTR ", %" PRI_IPTR ", " PRI_PTR ")", gl_enum_name(target), offset, size, AtariOffset(data))); FN_GLBUFFERSUBDATAARB(target, offset, size, data); } void OSMesaDriver::nfglCallCommandListNV(GLuint list) { D(bug("nfosmesa: glCallCommandListNV(%u)", list)); fn.glCallCommandListNV(list); } void OSMesaDriver::nfglCallList(GLuint list) { D(bug("nfosmesa: glCallList(%u)", list)); fn.glCallList(list); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCallLists(GLsizei n, GLenum type, memptr lists) #else void OSMesaDriver::nfglCallLists(GLsizei n, GLenum type, const GLvoid *lists) #endif { D(bug("nfosmesa: glCallLists(%d, %s, " PRI_PTR ")", n, gl_enum_name(type), AtariOffset(lists))); FN_GLCALLLISTS(n, type, lists); } GLenum OSMesaDriver::nfglCheckFramebufferStatus(GLenum target) { D(bug("nfosmesa: glCheckFramebufferStatus(%s)", gl_enum_name(target))); GLenum __ret = fn.glCheckFramebufferStatus(target); return __ret; } GLenum OSMesaDriver::nfglCheckFramebufferStatusEXT(GLenum target) { D(bug("nfosmesa: glCheckFramebufferStatusEXT(%s)", gl_enum_name(target))); GLenum __ret = fn.glCheckFramebufferStatusEXT(target); return __ret; } GLenum OSMesaDriver::nfglCheckNamedFramebufferStatus(GLuint framebuffer, GLenum target) { D(bug("nfosmesa: glCheckNamedFramebufferStatus(%u, %s)", framebuffer, gl_enum_name(target))); GLenum __ret = fn.glCheckNamedFramebufferStatus(framebuffer, target); return __ret; } GLenum OSMesaDriver::nfglCheckNamedFramebufferStatusEXT(GLuint framebuffer, GLenum target) { D(bug("nfosmesa: glCheckNamedFramebufferStatusEXT(%u, %s)", framebuffer, gl_enum_name(target))); GLenum __ret = fn.glCheckNamedFramebufferStatusEXT(framebuffer, target); return __ret; } void OSMesaDriver::nfglClampColor(GLenum target, GLenum clamp) { D(bug("nfosmesa: glClampColor(%s, %s)", gl_enum_name(target), gl_enum_name(clamp))); fn.glClampColor(target, clamp); } void OSMesaDriver::nfglClampColorARB(GLenum target, GLenum clamp) { D(bug("nfosmesa: glClampColorARB(%s, %s)", gl_enum_name(target), gl_enum_name(clamp))); fn.glClampColorARB(target, clamp); } void OSMesaDriver::nfglClear(GLbitfield mask) { D(bug("nfosmesa: glClear(0x%x)", mask)); fn.glClear(mask); } void OSMesaDriver::nfglClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { D(bug("nfosmesa: glClearAccum(%f, %f, %f, %f)", red, green, blue, alpha)); fn.glClearAccum(red, green, blue, alpha); } void OSMesaDriver::nfglClearAccumxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) { D(bug("nfosmesa: glClearAccumxOES(0x%x, 0x%x, 0x%x, 0x%x)", red, green, blue, alpha)); fn.glClearAccumxOES(red, green, blue, alpha); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, memptr data) #else void OSMesaDriver::nfglClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data) #endif { D(bug("nfosmesa: glClearBufferData(%s, %s, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(internalformat), gl_enum_name(format), gl_enum_name(type), AtariOffset(data))); FN_GLCLEARBUFFERDATA(target, internalformat, format, type, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, memptr data) #else void OSMesaDriver::nfglClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data) #endif { D(bug("nfosmesa: glClearBufferSubData(%s, %s, %" PRI_IPTR ", %" PRI_IPTR ", %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(internalformat), offset, size, gl_enum_name(format), gl_enum_name(type), AtariOffset(data))); FN_GLCLEARBUFFERSUBDATA(target, internalformat, offset, size, format, type, data); } void OSMesaDriver::nfglClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) { D(bug("nfosmesa: glClearBufferfi(%s, %d, %f, %d)", gl_enum_name(buffer), drawbuffer, depth, stencil)); fn.glClearBufferfi(buffer, drawbuffer, depth, stencil); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClearBufferfv(GLenum buffer, GLint drawbuffer, memptr value) #else void OSMesaDriver::nfglClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) #endif { D(bug("nfosmesa: glClearBufferfv(%s, %d, " PRI_PTR ")", gl_enum_name(buffer), drawbuffer, AtariOffset(value))); FN_GLCLEARBUFFERFV(buffer, drawbuffer, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClearBufferiv(GLenum buffer, GLint drawbuffer, memptr value) #else void OSMesaDriver::nfglClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) #endif { D(bug("nfosmesa: glClearBufferiv(%s, %d, " PRI_PTR ")", gl_enum_name(buffer), drawbuffer, AtariOffset(value))); FN_GLCLEARBUFFERIV(buffer, drawbuffer, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClearBufferuiv(GLenum buffer, GLint drawbuffer, memptr value) #else void OSMesaDriver::nfglClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) #endif { D(bug("nfosmesa: glClearBufferuiv(%s, %d, " PRI_PTR ")", gl_enum_name(buffer), drawbuffer, AtariOffset(value))); FN_GLCLEARBUFFERUIV(buffer, drawbuffer, value); } void OSMesaDriver::nfglClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { D(bug("nfosmesa: glClearColor(%f, %f, %f, %f)", red, green, blue, alpha)); fn.glClearColor(red, green, blue, alpha); } void OSMesaDriver::nfglClearColorIiEXT(GLint red, GLint green, GLint blue, GLint alpha) { D(bug("nfosmesa: glClearColorIiEXT(%d, %d, %d, %d)", red, green, blue, alpha)); fn.glClearColorIiEXT(red, green, blue, alpha); } void OSMesaDriver::nfglClearColorIuiEXT(GLuint red, GLuint green, GLuint blue, GLuint alpha) { D(bug("nfosmesa: glClearColorIuiEXT(%u, %u, %u, %u)", red, green, blue, alpha)); fn.glClearColorIuiEXT(red, green, blue, alpha); } void OSMesaDriver::nfglClearColorxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) { D(bug("nfosmesa: glClearColorxOES(0x%x, 0x%x, 0x%x, 0x%x)", red, green, blue, alpha)); fn.glClearColorxOES(red, green, blue, alpha); } void OSMesaDriver::nfglClearDebugLogMESA(GLhandleARB obj, GLenum logType, GLenum shaderType) { D(bug("nfosmesa: glClearDebugLogMESA(%u, %s, %s)", (unsigned int)(uintptr_t)obj, gl_enum_name(logType), gl_enum_name(shaderType))); fn.glClearDebugLogMESA(obj, logType, shaderType); } void OSMesaDriver::nfglClearDepth(GLclampd depth) { D(bug("nfosmesa: glClearDepth(%f)", depth)); fn.glClearDepth(depth); } void OSMesaDriver::nfglClearDepthdNV(GLdouble depth) { D(bug("nfosmesa: glClearDepthdNV(%f)", depth)); fn.glClearDepthdNV(depth); } void OSMesaDriver::nfglClearDepthf(GLfloat d) { D(bug("nfosmesa: glClearDepthf(%f)", d)); fn.glClearDepthf(d); } void OSMesaDriver::nfglClearDepthfOES(GLclampf depth) { D(bug("nfosmesa: glClearDepthfOES(%f)", depth)); fn.glClearDepthfOES(depth); } void OSMesaDriver::nfglClearDepthxOES(GLfixed depth) { D(bug("nfosmesa: glClearDepthxOES(0x%x)", depth)); fn.glClearDepthxOES(depth); } void OSMesaDriver::nfglClearIndex(GLfloat c) { D(bug("nfosmesa: glClearIndex(%f)", c)); fn.glClearIndex(c); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClearNamedBufferData(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, memptr data) #else void OSMesaDriver::nfglClearNamedBufferData(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data) #endif { D(bug("nfosmesa: glClearNamedBufferData(%u, %s, %s, %s, " PRI_PTR ")", buffer, gl_enum_name(internalformat), gl_enum_name(format), gl_enum_name(type), AtariOffset(data))); FN_GLCLEARNAMEDBUFFERDATA(buffer, internalformat, format, type, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, memptr data) #else void OSMesaDriver::nfglClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data) #endif { D(bug("nfosmesa: glClearNamedBufferDataEXT(%u, %s, %s, %s, " PRI_PTR ")", buffer, gl_enum_name(internalformat), gl_enum_name(format), gl_enum_name(type), AtariOffset(data))); FN_GLCLEARNAMEDBUFFERDATAEXT(buffer, internalformat, format, type, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClearNamedBufferSubData(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, memptr data) #else void OSMesaDriver::nfglClearNamedBufferSubData(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data) #endif { D(bug("nfosmesa: glClearNamedBufferSubData(%u, %s, %" PRI_IPTR ", %" PRI_IPTR ", %s, %s, " PRI_PTR ")", buffer, gl_enum_name(internalformat), offset, size, gl_enum_name(format), gl_enum_name(type), AtariOffset(data))); FN_GLCLEARNAMEDBUFFERSUBDATA(buffer, internalformat, offset, size, format, type, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, memptr data) #else void OSMesaDriver::nfglClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data) #endif { D(bug("nfosmesa: glClearNamedBufferSubDataEXT(%u, %s, %" PRI_IPTR ", %" PRI_IPTR ", %s, %s, " PRI_PTR ")", buffer, gl_enum_name(internalformat), offset, size, gl_enum_name(format), gl_enum_name(type), AtariOffset(data))); FN_GLCLEARNAMEDBUFFERSUBDATAEXT(buffer, internalformat, offset, size, format, type, data); } void OSMesaDriver::nfglClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) { D(bug("nfosmesa: glClearNamedFramebufferfi(%u, %s, %d, %f, %d)", framebuffer, gl_enum_name(buffer), drawbuffer, depth, stencil)); fn.glClearNamedFramebufferfi(framebuffer, buffer, drawbuffer, depth, stencil); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, memptr value) #else void OSMesaDriver::nfglClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value) #endif { D(bug("nfosmesa: glClearNamedFramebufferfv(%u, %s, %d, " PRI_PTR ")", framebuffer, gl_enum_name(buffer), drawbuffer, AtariOffset(value))); FN_GLCLEARNAMEDFRAMEBUFFERFV(framebuffer, buffer, drawbuffer, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, memptr value) #else void OSMesaDriver::nfglClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value) #endif { D(bug("nfosmesa: glClearNamedFramebufferiv(%u, %s, %d, " PRI_PTR ")", framebuffer, gl_enum_name(buffer), drawbuffer, AtariOffset(value))); FN_GLCLEARNAMEDFRAMEBUFFERIV(framebuffer, buffer, drawbuffer, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, memptr value) #else void OSMesaDriver::nfglClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value) #endif { D(bug("nfosmesa: glClearNamedFramebufferuiv(%u, %s, %d, " PRI_PTR ")", framebuffer, gl_enum_name(buffer), drawbuffer, AtariOffset(value))); FN_GLCLEARNAMEDFRAMEBUFFERUIV(framebuffer, buffer, drawbuffer, value); } void OSMesaDriver::nfglClearStencil(GLint s) { D(bug("nfosmesa: glClearStencil(%d)", s)); fn.glClearStencil(s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, memptr data) #else void OSMesaDriver::nfglClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data) #endif { D(bug("nfosmesa: glClearTexImage(%u, %d, %s, %s, " PRI_PTR ")", texture, level, gl_enum_name(format), gl_enum_name(type), AtariOffset(data))); FN_GLCLEARTEXIMAGE(texture, level, format, type, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClearTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, memptr data) #else void OSMesaDriver::nfglClearTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data) #endif { D(bug("nfosmesa: glClearTexSubImage(%u, %d, %d, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", texture, level, xoffset, yoffset, zoffset, width, height, depth, gl_enum_name(format), gl_enum_name(type), AtariOffset(data))); FN_GLCLEARTEXSUBIMAGE(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data); } void OSMesaDriver::nfglClientActiveTexture(GLenum texture) { D(bug("nfosmesa: glClientActiveTexture(%s)", gl_enum_name(texture))); fn.glClientActiveTexture(texture); } void OSMesaDriver::nfglClientActiveTextureARB(GLenum texture) { D(bug("nfosmesa: glClientActiveTextureARB(%s)", gl_enum_name(texture))); fn.glClientActiveTextureARB(texture); } void OSMesaDriver::nfglClientActiveVertexStreamATI(GLenum stream) { D(bug("nfosmesa: glClientActiveVertexStreamATI(%s)", gl_enum_name(stream))); fn.glClientActiveVertexStreamATI(stream); } void OSMesaDriver::nfglClientAttribDefaultEXT(GLbitfield mask) { D(bug("nfosmesa: glClientAttribDefaultEXT(0x%x)", mask)); fn.glClientAttribDefaultEXT(mask); } GLenum OSMesaDriver::nfglClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) { D(bug("nfosmesa: glClientWaitSync(" PRI_PTR ", 0x%x, %" PRIu64 ")", (unsigned int)(uintptr_t)sync, flags, timeout)); GLenum __ret = fn.glClientWaitSync(sync, flags, timeout); return __ret; } void OSMesaDriver::nfglClipControl(GLenum origin, GLenum depth) { D(bug("nfosmesa: glClipControl(%s, %s)", gl_enum_name(origin), gl_enum_name(depth))); fn.glClipControl(origin, depth); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClipPlane(GLenum plane, memptr equation) #else void OSMesaDriver::nfglClipPlane(GLenum plane, const GLdouble *equation) #endif { D(bug("nfosmesa: glClipPlane(%s, " PRI_PTR ")", gl_enum_name(plane), AtariOffset(equation))); FN_GLCLIPPLANE(plane, equation); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClipPlanefOES(GLenum plane, memptr equation) #else void OSMesaDriver::nfglClipPlanefOES(GLenum plane, const GLfloat *equation) #endif { D(bug("nfosmesa: glClipPlanefOES(%s, " PRI_PTR ")", gl_enum_name(plane), AtariOffset(equation))); FN_GLCLIPPLANEFOES(plane, equation); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglClipPlanexOES(GLenum plane, memptr equation) #else void OSMesaDriver::nfglClipPlanexOES(GLenum plane, const GLfixed *equation) #endif { D(bug("nfosmesa: glClipPlanexOES(%s, " PRI_PTR ")", gl_enum_name(plane), AtariOffset(equation))); FN_GLCLIPPLANEXOES(plane, equation); } void OSMesaDriver::nfglColor3b(GLbyte32 red, GLbyte32 green, GLbyte32 blue) { D(bug("nfosmesa: glColor3b(%d, %d, %d)", red, green, blue)); fn.glColor3b(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor3bv(memptr v) #else void OSMesaDriver::nfglColor3bv(const GLbyte *v) #endif { D(bug("nfosmesa: glColor3bv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR3BV(v); } void OSMesaDriver::nfglColor3d(GLdouble red, GLdouble green, GLdouble blue) { D(bug("nfosmesa: glColor3d(%f, %f, %f)", red, green, blue)); fn.glColor3d(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor3dv(memptr v) #else void OSMesaDriver::nfglColor3dv(const GLdouble *v) #endif { D(bug("nfosmesa: glColor3dv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR3DV(v); } void OSMesaDriver::nfglColor3f(GLfloat red, GLfloat green, GLfloat blue) { D(bug("nfosmesa: glColor3f(%f, %f, %f)", red, green, blue)); fn.glColor3f(red, green, blue); } void OSMesaDriver::nfglColor3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glColor3fVertex3fSUN(%f, %f, %f, %f, %f, %f)", r, g, b, x, y, z)); fn.glColor3fVertex3fSUN(r, g, b, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor3fVertex3fvSUN(memptr c, memptr v) #else void OSMesaDriver::nfglColor3fVertex3fvSUN(const GLfloat *c, const GLfloat *v) #endif { D(bug("nfosmesa: glColor3fVertex3fvSUN(" PRI_PTR ", " PRI_PTR ")", AtariOffset(c), AtariOffset(v))); FN_GLCOLOR3FVERTEX3FVSUN(c, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor3fv(memptr v) #else void OSMesaDriver::nfglColor3fv(const GLfloat *v) #endif { D(bug("nfosmesa: glColor3fv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR3FV(v); } void OSMesaDriver::nfglColor3hNV(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue) { D(bug("nfosmesa: glColor3hNV(%u, %u, %u)", red, green, blue)); fn.glColor3hNV(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor3hvNV(memptr v) #else void OSMesaDriver::nfglColor3hvNV(const GLhalfNV *v) #endif { D(bug("nfosmesa: glColor3hvNV(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR3HVNV(v); } void OSMesaDriver::nfglColor3i(GLint red, GLint green, GLint blue) { D(bug("nfosmesa: glColor3i(%d, %d, %d)", red, green, blue)); fn.glColor3i(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor3iv(memptr v) #else void OSMesaDriver::nfglColor3iv(const GLint *v) #endif { D(bug("nfosmesa: glColor3iv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR3IV(v); } void OSMesaDriver::nfglColor3s(GLshort32 red, GLshort32 green, GLshort32 blue) { D(bug("nfosmesa: glColor3s(%d, %d, %d)", red, green, blue)); fn.glColor3s(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor3sv(memptr v) #else void OSMesaDriver::nfglColor3sv(const GLshort *v) #endif { D(bug("nfosmesa: glColor3sv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR3SV(v); } void OSMesaDriver::nfglColor3ub(GLubyte32 red, GLubyte32 green, GLubyte32 blue) { D(bug("nfosmesa: glColor3ub(%u, %u, %u)", red, green, blue)); fn.glColor3ub(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor3ubv(memptr v) #else void OSMesaDriver::nfglColor3ubv(const GLubyte *v) #endif { D(bug("nfosmesa: glColor3ubv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR3UBV(v); } void OSMesaDriver::nfglColor3ui(GLuint red, GLuint green, GLuint blue) { D(bug("nfosmesa: glColor3ui(%u, %u, %u)", red, green, blue)); fn.glColor3ui(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor3uiv(memptr v) #else void OSMesaDriver::nfglColor3uiv(const GLuint *v) #endif { D(bug("nfosmesa: glColor3uiv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR3UIV(v); } void OSMesaDriver::nfglColor3us(GLushort32 red, GLushort32 green, GLushort32 blue) { D(bug("nfosmesa: glColor3us(%u, %u, %u)", red, green, blue)); fn.glColor3us(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor3usv(memptr v) #else void OSMesaDriver::nfglColor3usv(const GLushort *v) #endif { D(bug("nfosmesa: glColor3usv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR3USV(v); } void OSMesaDriver::nfglColor3xOES(GLfixed red, GLfixed green, GLfixed blue) { D(bug("nfosmesa: glColor3xOES(0x%x, 0x%x, 0x%x)", red, green, blue)); fn.glColor3xOES(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor3xvOES(memptr components) #else void OSMesaDriver::nfglColor3xvOES(const GLfixed *components) #endif { D(bug("nfosmesa: glColor3xvOES(" PRI_PTR ")", AtariOffset(components))); FN_GLCOLOR3XVOES(components); } void OSMesaDriver::nfglColor4b(GLbyte32 red, GLbyte32 green, GLbyte32 blue, GLbyte32 alpha) { D(bug("nfosmesa: glColor4b(%d, %d, %d, %d)", red, green, blue, alpha)); fn.glColor4b(red, green, blue, alpha); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor4bv(memptr v) #else void OSMesaDriver::nfglColor4bv(const GLbyte *v) #endif { D(bug("nfosmesa: glColor4bv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR4BV(v); } void OSMesaDriver::nfglColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) { D(bug("nfosmesa: glColor4d(%f, %f, %f, %f)", red, green, blue, alpha)); fn.glColor4d(red, green, blue, alpha); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor4dv(memptr v) #else void OSMesaDriver::nfglColor4dv(const GLdouble *v) #endif { D(bug("nfosmesa: glColor4dv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR4DV(v); } void OSMesaDriver::nfglColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { D(bug("nfosmesa: glColor4f(%f, %f, %f, %f)", red, green, blue, alpha)); fn.glColor4f(red, green, blue, alpha); } void OSMesaDriver::nfglColor4fNormal3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glColor4fNormal3fVertex3fSUN(%f, %f, %f, %f, %f, %f, %f, %f, %f, %f)", r, g, b, a, nx, ny, nz, x, y, z)); fn.glColor4fNormal3fVertex3fSUN(r, g, b, a, nx, ny, nz, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor4fNormal3fVertex3fvSUN(memptr c, memptr n, memptr v) #else void OSMesaDriver::nfglColor4fNormal3fVertex3fvSUN(const GLfloat *c, const GLfloat *n, const GLfloat *v) #endif { D(bug("nfosmesa: glColor4fNormal3fVertex3fvSUN(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", AtariOffset(c), AtariOffset(n), AtariOffset(v))); FN_GLCOLOR4FNORMAL3FVERTEX3FVSUN(c, n, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor4fv(memptr v) #else void OSMesaDriver::nfglColor4fv(const GLfloat *v) #endif { D(bug("nfosmesa: glColor4fv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR4FV(v); } void OSMesaDriver::nfglColor4hNV(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue, GLhalfNV32 alpha) { D(bug("nfosmesa: glColor4hNV(%u, %u, %u, %u)", red, green, blue, alpha)); fn.glColor4hNV(red, green, blue, alpha); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor4hvNV(memptr v) #else void OSMesaDriver::nfglColor4hvNV(const GLhalfNV *v) #endif { D(bug("nfosmesa: glColor4hvNV(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR4HVNV(v); } void OSMesaDriver::nfglColor4i(GLint red, GLint green, GLint blue, GLint alpha) { D(bug("nfosmesa: glColor4i(%d, %d, %d, %d)", red, green, blue, alpha)); fn.glColor4i(red, green, blue, alpha); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor4iv(memptr v) #else void OSMesaDriver::nfglColor4iv(const GLint *v) #endif { D(bug("nfosmesa: glColor4iv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR4IV(v); } void OSMesaDriver::nfglColor4s(GLshort32 red, GLshort32 green, GLshort32 blue, GLshort32 alpha) { D(bug("nfosmesa: glColor4s(%d, %d, %d, %d)", red, green, blue, alpha)); fn.glColor4s(red, green, blue, alpha); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor4sv(memptr v) #else void OSMesaDriver::nfglColor4sv(const GLshort *v) #endif { D(bug("nfosmesa: glColor4sv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR4SV(v); } void OSMesaDriver::nfglColor4ub(GLubyte32 red, GLubyte32 green, GLubyte32 blue, GLubyte32 alpha) { D(bug("nfosmesa: glColor4ub(%u, %u, %u, %u)", red, green, blue, alpha)); fn.glColor4ub(red, green, blue, alpha); } void OSMesaDriver::nfglColor4ubVertex2fSUN(GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y) { D(bug("nfosmesa: glColor4ubVertex2fSUN(%u, %u, %u, %u, %f, %f)", r, g, b, a, x, y)); fn.glColor4ubVertex2fSUN(r, g, b, a, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor4ubVertex2fvSUN(memptr c, memptr v) #else void OSMesaDriver::nfglColor4ubVertex2fvSUN(const GLubyte *c, const GLfloat *v) #endif { D(bug("nfosmesa: glColor4ubVertex2fvSUN(" PRI_PTR ", " PRI_PTR ")", AtariOffset(c), AtariOffset(v))); FN_GLCOLOR4UBVERTEX2FVSUN(c, v); } void OSMesaDriver::nfglColor4ubVertex3fSUN(GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glColor4ubVertex3fSUN(%u, %u, %u, %u, %f, %f, %f)", r, g, b, a, x, y, z)); fn.glColor4ubVertex3fSUN(r, g, b, a, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor4ubVertex3fvSUN(memptr c, memptr v) #else void OSMesaDriver::nfglColor4ubVertex3fvSUN(const GLubyte *c, const GLfloat *v) #endif { D(bug("nfosmesa: glColor4ubVertex3fvSUN(" PRI_PTR ", " PRI_PTR ")", AtariOffset(c), AtariOffset(v))); FN_GLCOLOR4UBVERTEX3FVSUN(c, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor4ubv(memptr v) #else void OSMesaDriver::nfglColor4ubv(const GLubyte *v) #endif { D(bug("nfosmesa: glColor4ubv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR4UBV(v); } void OSMesaDriver::nfglColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) { D(bug("nfosmesa: glColor4ui(%u, %u, %u, %u)", red, green, blue, alpha)); fn.glColor4ui(red, green, blue, alpha); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor4uiv(memptr v) #else void OSMesaDriver::nfglColor4uiv(const GLuint *v) #endif { D(bug("nfosmesa: glColor4uiv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR4UIV(v); } void OSMesaDriver::nfglColor4us(GLushort32 red, GLushort32 green, GLushort32 blue, GLushort32 alpha) { D(bug("nfosmesa: glColor4us(%u, %u, %u, %u)", red, green, blue, alpha)); fn.glColor4us(red, green, blue, alpha); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor4usv(memptr v) #else void OSMesaDriver::nfglColor4usv(const GLushort *v) #endif { D(bug("nfosmesa: glColor4usv(" PRI_PTR ")", AtariOffset(v))); FN_GLCOLOR4USV(v); } void OSMesaDriver::nfglColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) { D(bug("nfosmesa: glColor4xOES(0x%x, 0x%x, 0x%x, 0x%x)", red, green, blue, alpha)); fn.glColor4xOES(red, green, blue, alpha); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColor4xvOES(memptr components) #else void OSMesaDriver::nfglColor4xvOES(const GLfixed *components) #endif { D(bug("nfosmesa: glColor4xvOES(" PRI_PTR ")", AtariOffset(components))); FN_GLCOLOR4XVOES(components); } void OSMesaDriver::nfglColorFormatNV(GLint size, GLenum type, GLsizei stride) { D(bug("nfosmesa: glColorFormatNV(%d, %s, %d)", size, gl_enum_name(type), stride)); fn.glColorFormatNV(size, type, stride); } void OSMesaDriver::nfglColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod) { D(bug("nfosmesa: glColorFragmentOp1ATI(%s, %u, %u, %u, %u, %u, %u)", gl_enum_name(op), dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod)); fn.glColorFragmentOp1ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod); } void OSMesaDriver::nfglColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod) { D(bug("nfosmesa: glColorFragmentOp2ATI(%s, %u, %u, %u, %u, %u, %u, %u, %u, %u)", gl_enum_name(op), dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod)); fn.glColorFragmentOp2ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod); } void OSMesaDriver::nfglColorFragmentOp3ATI(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) { D(bug("nfosmesa: glColorFragmentOp3ATI(%s, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u)", gl_enum_name(op), dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod)); fn.glColorFragmentOp3ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod); } void OSMesaDriver::nfglColorMask(GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha) { D(bug("nfosmesa: glColorMask(%d, %d, %d, %d)", red, green, blue, alpha)); fn.glColorMask(red, green, blue, alpha); } void OSMesaDriver::nfglColorMaskIndexedEXT(GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a) { D(bug("nfosmesa: glColorMaskIndexedEXT(%u, %d, %d, %d, %d)", index, r, g, b, a)); fn.glColorMaskIndexedEXT(index, r, g, b, a); } void OSMesaDriver::nfglColorMaski(GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a) { D(bug("nfosmesa: glColorMaski(%u, %d, %d, %d, %d)", index, r, g, b, a)); fn.glColorMaski(index, r, g, b, a); } void OSMesaDriver::nfglColorMaterial(GLenum face, GLenum mode) { D(bug("nfosmesa: glColorMaterial(%s, %s)", gl_enum_name(face), gl_enum_name(mode))); fn.glColorMaterial(face, mode); } void OSMesaDriver::nfglColorP3ui(GLenum type, GLuint color) { D(bug("nfosmesa: glColorP3ui(%s, %u)", gl_enum_name(type), color)); fn.glColorP3ui(type, color); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorP3uiv(GLenum type, memptr color) #else void OSMesaDriver::nfglColorP3uiv(GLenum type, const GLuint *color) #endif { D(bug("nfosmesa: glColorP3uiv(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(color))); FN_GLCOLORP3UIV(type, color); } void OSMesaDriver::nfglColorP4ui(GLenum type, GLuint color) { D(bug("nfosmesa: glColorP4ui(%s, %u)", gl_enum_name(type), color)); fn.glColorP4ui(type, color); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorP4uiv(GLenum type, memptr color) #else void OSMesaDriver::nfglColorP4uiv(GLenum type, const GLuint *color) #endif { D(bug("nfosmesa: glColorP4uiv(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(color))); FN_GLCOLORP4UIV(type, color); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorPointer(GLint size, GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) #endif { D(bug("nfosmesa: glColorPointer(%d, %s, %d, " PRI_PTR ")", size, gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLCOLORPOINTER(size, type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, memptr pointer) #else void OSMesaDriver::nfglColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer) #endif { D(bug("nfosmesa: glColorPointerEXT(%d, %s, %d, %d, " PRI_PTR ")", size, gl_enum_name(type), stride, count, AtariOffset(pointer))); FN_GLCOLORPOINTEREXT(size, type, stride, count, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorPointerListIBM(GLint size, GLenum type, GLint stride, memptr pointer, GLint ptrstride) #else void OSMesaDriver::nfglColorPointerListIBM(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride) #endif { D(bug("nfosmesa: glColorPointerListIBM(%d, %s, %d, " PRI_PTR ", %d)", size, gl_enum_name(type), stride, AtariOffset(pointer), ptrstride)); FN_GLCOLORPOINTERLISTIBM(size, type, stride, pointer, ptrstride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorPointervINTEL(GLint size, GLenum type, memptr pointer) #else void OSMesaDriver::nfglColorPointervINTEL(GLint size, GLenum type, const void * *pointer) #endif { D(bug("nfosmesa: glColorPointervINTEL(%d, %s, " PRI_PTR ")", size, gl_enum_name(type), AtariOffset(pointer))); FN_GLCOLORPOINTERVINTEL(size, type, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, memptr data) #else void OSMesaDriver::nfglColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data) #endif { D(bug("nfosmesa: glColorSubTable(%s, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), start, count, gl_enum_name(format), gl_enum_name(type), AtariOffset(data))); FN_GLCOLORSUBTABLE(target, start, count, format, type, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorSubTableEXT(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, memptr data) #else void OSMesaDriver::nfglColorSubTableEXT(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data) #endif { D(bug("nfosmesa: glColorSubTableEXT(%s, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), start, count, gl_enum_name(format), gl_enum_name(type), AtariOffset(data))); FN_GLCOLORSUBTABLEEXT(target, start, count, format, type, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, memptr table) #else void OSMesaDriver::nfglColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table) #endif { D(bug("nfosmesa: glColorTable(%s, %s, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(internalformat), width, gl_enum_name(format), gl_enum_name(type), AtariOffset(table))); FN_GLCOLORTABLE(target, internalformat, width, format, type, table); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorTableEXT(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, memptr table) #else void OSMesaDriver::nfglColorTableEXT(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table) #endif { D(bug("nfosmesa: glColorTableEXT(%s, %s, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(internalFormat), width, gl_enum_name(format), gl_enum_name(type), AtariOffset(table))); FN_GLCOLORTABLEEXT(target, internalFormat, width, format, type, table); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorTableParameterfv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glColorTableParameterfv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLCOLORTABLEPARAMETERFV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorTableParameterfvSGI(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglColorTableParameterfvSGI(GLenum target, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glColorTableParameterfvSGI(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLCOLORTABLEPARAMETERFVSGI(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorTableParameteriv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glColorTableParameteriv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLCOLORTABLEPARAMETERIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorTableParameterivSGI(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglColorTableParameterivSGI(GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glColorTableParameterivSGI(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLCOLORTABLEPARAMETERIVSGI(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglColorTableSGI(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, memptr table) #else void OSMesaDriver::nfglColorTableSGI(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table) #endif { D(bug("nfosmesa: glColorTableSGI(%s, %s, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(internalformat), width, gl_enum_name(format), gl_enum_name(type), AtariOffset(table))); FN_GLCOLORTABLESGI(target, internalformat, width, format, type, table); } void OSMesaDriver::nfglCombinerInputNV(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) { D(bug("nfosmesa: glCombinerInputNV(%s, %s, %s, %s, %s, %s)", gl_enum_name(stage), gl_enum_name(portion), gl_enum_name(variable), gl_enum_name(input), gl_enum_name(mapping), gl_enum_name(componentUsage))); fn.glCombinerInputNV(stage, portion, variable, input, mapping, componentUsage); } void OSMesaDriver::nfglCombinerOutputNV(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean32 abDotProduct, GLboolean32 cdDotProduct, GLboolean32 muxSum) { D(bug("nfosmesa: glCombinerOutputNV(%s, %s, %s, %s, %s, %s, %s, %d, %d, %d)", gl_enum_name(stage), gl_enum_name(portion), gl_enum_name(abOutput), gl_enum_name(cdOutput), gl_enum_name(sumOutput), gl_enum_name(scale), gl_enum_name(bias), abDotProduct, cdDotProduct, muxSum)); fn.glCombinerOutputNV(stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum); } void OSMesaDriver::nfglCombinerParameterfNV(GLenum pname, GLfloat param) { D(bug("nfosmesa: glCombinerParameterfNV(%s, %f)", gl_enum_name(pname), param)); fn.glCombinerParameterfNV(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCombinerParameterfvNV(GLenum pname, memptr params) #else void OSMesaDriver::nfglCombinerParameterfvNV(GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glCombinerParameterfvNV(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __params_size = nfglGetNumParams(pname); GLfloat __params_tmp[__params_size]; GLfloat *__params_ptmp = Atari2HostFloatArray(__params_size, params, __params_tmp); fn.glCombinerParameterfvNV(pname, __params_ptmp); #else fn.glCombinerParameterfvNV(pname, HostAddr(params, const GLfloat *)); #endif } void OSMesaDriver::nfglCombinerParameteriNV(GLenum pname, GLint param) { D(bug("nfosmesa: glCombinerParameteriNV(%s, %d)", gl_enum_name(pname), param)); fn.glCombinerParameteriNV(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCombinerParameterivNV(GLenum pname, memptr params) #else void OSMesaDriver::nfglCombinerParameterivNV(GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glCombinerParameterivNV(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = nfglGetNumParams(pname); GLint __params_tmp[__params_size]; GLint *__params_ptmp = Atari2HostIntArray(__params_size, params, __params_tmp); fn.glCombinerParameterivNV(pname, __params_ptmp); #else fn.glCombinerParameterivNV(pname, HostAddr(params, const GLint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCombinerStageParameterfvNV(GLenum stage, GLenum pname, memptr params) #else void OSMesaDriver::nfglCombinerStageParameterfvNV(GLenum stage, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glCombinerStageParameterfvNV(%s, %s, " PRI_PTR ")", gl_enum_name(stage), gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __params_size = nfglGetNumParams(pname); GLfloat __params_tmp[__params_size]; GLfloat *__params_ptmp = Atari2HostFloatArray(__params_size, params, __params_tmp); fn.glCombinerStageParameterfvNV(stage, pname, __params_ptmp); #else fn.glCombinerStageParameterfvNV(stage, pname, HostAddr(params, const GLfloat *)); #endif } void OSMesaDriver::nfglCommandListSegmentsNV(GLuint list, GLuint segments) { D(bug("nfosmesa: glCommandListSegmentsNV(%u, %u)", list, segments)); fn.glCommandListSegmentsNV(list, segments); } void OSMesaDriver::nfglCompileCommandListNV(GLuint list) { D(bug("nfosmesa: glCompileCommandListNV(%u)", list)); fn.glCompileCommandListNV(list); } void OSMesaDriver::nfglCompileShader(GLuint shader) { D(bug("nfosmesa: glCompileShader(%u)", shader)); fn.glCompileShader(shader); } void OSMesaDriver::nfglCompileShaderARB(GLhandleARB shaderObj) { D(bug("nfosmesa: glCompileShaderARB(%u)", (unsigned int)(uintptr_t)shaderObj)); fn.glCompileShaderARB(shaderObj); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompileShaderIncludeARB(GLuint shader, GLsizei count, memptr path, memptr length) #else void OSMesaDriver::nfglCompileShaderIncludeARB(GLuint shader, GLsizei count, const GLchar *const *path, const GLint *length) #endif { D(bug("nfosmesa: glCompileShaderIncludeARB(%u, %d, " PRI_PTR ", " PRI_PTR ")", shader, count, AtariOffset(path), AtariOffset(length))); FN_GLCOMPILESHADERINCLUDEARB(shader, count, path, length); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, memptr bits) #else void OSMesaDriver::nfglCompressedMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits) #endif { D(bug("nfosmesa: glCompressedMultiTexImage1DEXT(%s, %s, %d, %s, %d, %d, %d, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, gl_enum_name(internalformat), width, border, imageSize, AtariOffset(bits))); FN_GLCOMPRESSEDMULTITEXIMAGE1DEXT(texunit, target, level, internalformat, width, border, imageSize, bits); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, memptr bits) #else void OSMesaDriver::nfglCompressedMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits) #endif { D(bug("nfosmesa: glCompressedMultiTexImage2DEXT(%s, %s, %d, %s, %d, %d, %d, %d, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, gl_enum_name(internalformat), width, height, border, imageSize, AtariOffset(bits))); FN_GLCOMPRESSEDMULTITEXIMAGE2DEXT(texunit, target, level, internalformat, width, height, border, imageSize, bits); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, memptr bits) #else void OSMesaDriver::nfglCompressedMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits) #endif { D(bug("nfosmesa: glCompressedMultiTexImage3DEXT(%s, %s, %d, %s, %d, %d, %d, %d, %d, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, gl_enum_name(internalformat), width, height, depth, border, imageSize, AtariOffset(bits))); FN_GLCOMPRESSEDMULTITEXIMAGE3DEXT(texunit, target, level, internalformat, width, height, depth, border, imageSize, bits); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, memptr bits) #else void OSMesaDriver::nfglCompressedMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits) #endif { D(bug("nfosmesa: glCompressedMultiTexSubImage1DEXT(%s, %s, %d, %d, %d, %s, %d, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, xoffset, width, gl_enum_name(format), imageSize, AtariOffset(bits))); FN_GLCOMPRESSEDMULTITEXSUBIMAGE1DEXT(texunit, target, level, xoffset, width, format, imageSize, bits); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, memptr bits) #else void OSMesaDriver::nfglCompressedMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits) #endif { D(bug("nfosmesa: glCompressedMultiTexSubImage2DEXT(%s, %s, %d, %d, %d, %d, %d, %s, %d, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, xoffset, yoffset, width, height, gl_enum_name(format), imageSize, AtariOffset(bits))); FN_GLCOMPRESSEDMULTITEXSUBIMAGE2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, imageSize, bits); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, memptr bits) #else void OSMesaDriver::nfglCompressedMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits) #endif { D(bug("nfosmesa: glCompressedMultiTexSubImage3DEXT(%s, %s, %d, %d, %d, %d, %d, %d, %d, %s, %d, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, xoffset, yoffset, zoffset, width, height, depth, gl_enum_name(format), imageSize, AtariOffset(bits))); FN_GLCOMPRESSEDMULTITEXSUBIMAGE3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTexImage1D(%s, %d, %s, %d, %d, %d, " PRI_PTR ")", gl_enum_name(target), level, gl_enum_name(internalformat), width, border, imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXIMAGE1D(target, level, internalformat, width, border, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTexImage1DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTexImage1DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTexImage1DARB(%s, %d, %s, %d, %d, %d, " PRI_PTR ")", gl_enum_name(target), level, gl_enum_name(internalformat), width, border, imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXIMAGE1DARB(target, level, internalformat, width, border, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTexImage2D(%s, %d, %s, %d, %d, %d, %d, " PRI_PTR ")", gl_enum_name(target), level, gl_enum_name(internalformat), width, height, border, imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXIMAGE2D(target, level, internalformat, width, height, border, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTexImage2DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTexImage2DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTexImage2DARB(%s, %d, %s, %d, %d, %d, %d, " PRI_PTR ")", gl_enum_name(target), level, gl_enum_name(internalformat), width, height, border, imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXIMAGE2DARB(target, level, internalformat, width, height, border, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTexImage3D(%s, %d, %s, %d, %d, %d, %d, %d, " PRI_PTR ")", gl_enum_name(target), level, gl_enum_name(internalformat), width, height, depth, border, imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXIMAGE3D(target, level, internalformat, width, height, depth, border, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTexImage3DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTexImage3DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTexImage3DARB(%s, %d, %s, %d, %d, %d, %d, %d, " PRI_PTR ")", gl_enum_name(target), level, gl_enum_name(internalformat), width, height, depth, border, imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXIMAGE3DARB(target, level, internalformat, width, height, depth, border, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTexSubImage1D(%s, %d, %d, %d, %s, %d, " PRI_PTR ")", gl_enum_name(target), level, xoffset, width, gl_enum_name(format), imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXSUBIMAGE1D(target, level, xoffset, width, format, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTexSubImage1DARB(%s, %d, %d, %d, %s, %d, " PRI_PTR ")", gl_enum_name(target), level, xoffset, width, gl_enum_name(format), imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXSUBIMAGE1DARB(target, level, xoffset, width, format, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTexSubImage2D(%s, %d, %d, %d, %d, %d, %s, %d, " PRI_PTR ")", gl_enum_name(target), level, xoffset, yoffset, width, height, gl_enum_name(format), imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXSUBIMAGE2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTexSubImage2DARB(%s, %d, %d, %d, %d, %d, %s, %d, " PRI_PTR ")", gl_enum_name(target), level, xoffset, yoffset, width, height, gl_enum_name(format), imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXSUBIMAGE2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTexSubImage3D(%s, %d, %d, %d, %d, %d, %d, %d, %s, %d, " PRI_PTR ")", gl_enum_name(target), level, xoffset, yoffset, zoffset, width, height, depth, gl_enum_name(format), imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXSUBIMAGE3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTexSubImage3DARB(%s, %d, %d, %d, %d, %d, %d, %d, %s, %d, " PRI_PTR ")", gl_enum_name(target), level, xoffset, yoffset, zoffset, width, height, depth, gl_enum_name(format), imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXSUBIMAGE3DARB(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, memptr bits) #else void OSMesaDriver::nfglCompressedTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits) #endif { D(bug("nfosmesa: glCompressedTextureImage1DEXT(%u, %s, %d, %s, %d, %d, %d, " PRI_PTR ")", texture, gl_enum_name(target), level, gl_enum_name(internalformat), width, border, imageSize, AtariOffset(bits))); FN_GLCOMPRESSEDTEXTUREIMAGE1DEXT(texture, target, level, internalformat, width, border, imageSize, bits); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, memptr bits) #else void OSMesaDriver::nfglCompressedTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits) #endif { D(bug("nfosmesa: glCompressedTextureImage2DEXT(%u, %s, %d, %s, %d, %d, %d, %d, " PRI_PTR ")", texture, gl_enum_name(target), level, gl_enum_name(internalformat), width, height, border, imageSize, AtariOffset(bits))); FN_GLCOMPRESSEDTEXTUREIMAGE2DEXT(texture, target, level, internalformat, width, height, border, imageSize, bits); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTextureImage3DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, memptr bits) #else void OSMesaDriver::nfglCompressedTextureImage3DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits) #endif { D(bug("nfosmesa: glCompressedTextureImage3DEXT(%u, %s, %d, %s, %d, %d, %d, %d, %d, " PRI_PTR ")", texture, gl_enum_name(target), level, gl_enum_name(internalformat), width, height, depth, border, imageSize, AtariOffset(bits))); FN_GLCOMPRESSEDTEXTUREIMAGE3DEXT(texture, target, level, internalformat, width, height, depth, border, imageSize, bits); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTextureSubImage1D(%u, %d, %d, %d, %s, %d, " PRI_PTR ")", texture, level, xoffset, width, gl_enum_name(format), imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXTURESUBIMAGE1D(texture, level, xoffset, width, format, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, memptr bits) #else void OSMesaDriver::nfglCompressedTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits) #endif { D(bug("nfosmesa: glCompressedTextureSubImage1DEXT(%u, %s, %d, %d, %d, %s, %d, " PRI_PTR ")", texture, gl_enum_name(target), level, xoffset, width, gl_enum_name(format), imageSize, AtariOffset(bits))); FN_GLCOMPRESSEDTEXTURESUBIMAGE1DEXT(texture, target, level, xoffset, width, format, imageSize, bits); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTextureSubImage2D(%u, %d, %d, %d, %d, %d, %s, %d, " PRI_PTR ")", texture, level, xoffset, yoffset, width, height, gl_enum_name(format), imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXTURESUBIMAGE2D(texture, level, xoffset, yoffset, width, height, format, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, memptr bits) #else void OSMesaDriver::nfglCompressedTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits) #endif { D(bug("nfosmesa: glCompressedTextureSubImage2DEXT(%u, %s, %d, %d, %d, %d, %d, %s, %d, " PRI_PTR ")", texture, gl_enum_name(target), level, xoffset, yoffset, width, height, gl_enum_name(format), imageSize, AtariOffset(bits))); FN_GLCOMPRESSEDTEXTURESUBIMAGE2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, memptr data) #else void OSMesaDriver::nfglCompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) #endif { D(bug("nfosmesa: glCompressedTextureSubImage3D(%u, %d, %d, %d, %d, %d, %d, %d, %s, %d, " PRI_PTR ")", texture, level, xoffset, yoffset, zoffset, width, height, depth, gl_enum_name(format), imageSize, AtariOffset(data))); FN_GLCOMPRESSEDTEXTURESUBIMAGE3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCompressedTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, memptr bits) #else void OSMesaDriver::nfglCompressedTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits) #endif { D(bug("nfosmesa: glCompressedTextureSubImage3DEXT(%u, %s, %d, %d, %d, %d, %d, %d, %d, %s, %d, " PRI_PTR ")", texture, gl_enum_name(target), level, xoffset, yoffset, zoffset, width, height, depth, gl_enum_name(format), imageSize, AtariOffset(bits))); FN_GLCOMPRESSEDTEXTURESUBIMAGE3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits); } void OSMesaDriver::nfglConservativeRasterParameterfNV(GLenum pname, GLfloat value) { D(bug("nfosmesa: glConservativeRasterParameterfNV(%s, %f)", gl_enum_name(pname), value)); fn.glConservativeRasterParameterfNV(pname, value); } void OSMesaDriver::nfglConservativeRasterParameteriNV(GLenum pname, GLint param) { D(bug("nfosmesa: glConservativeRasterParameteriNV(%s, %d)", gl_enum_name(pname), param)); fn.glConservativeRasterParameteriNV(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, memptr image) #else void OSMesaDriver::nfglConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image) #endif { D(bug("nfosmesa: glConvolutionFilter1D(%s, %s, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(internalformat), width, gl_enum_name(format), gl_enum_name(type), AtariOffset(image))); FN_GLCONVOLUTIONFILTER1D(target, internalformat, width, format, type, image); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, memptr image) #else void OSMesaDriver::nfglConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image) #endif { D(bug("nfosmesa: glConvolutionFilter1DEXT(%s, %s, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(internalformat), width, gl_enum_name(format), gl_enum_name(type), AtariOffset(image))); FN_GLCONVOLUTIONFILTER1DEXT(target, internalformat, width, format, type, image); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr image) #else void OSMesaDriver::nfglConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image) #endif { D(bug("nfosmesa: glConvolutionFilter2D(%s, %s, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(internalformat), width, height, gl_enum_name(format), gl_enum_name(type), AtariOffset(image))); FN_GLCONVOLUTIONFILTER2D(target, internalformat, width, height, format, type, image); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr image) #else void OSMesaDriver::nfglConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image) #endif { D(bug("nfosmesa: glConvolutionFilter2DEXT(%s, %s, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(internalformat), width, height, gl_enum_name(format), gl_enum_name(type), AtariOffset(image))); FN_GLCONVOLUTIONFILTER2DEXT(target, internalformat, width, height, format, type, image); } void OSMesaDriver::nfglConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) { D(bug("nfosmesa: glConvolutionParameterf(%s, %s, %f)", gl_enum_name(target), gl_enum_name(pname), params)); fn.glConvolutionParameterf(target, pname, params); } void OSMesaDriver::nfglConvolutionParameterfEXT(GLenum target, GLenum pname, GLfloat params) { D(bug("nfosmesa: glConvolutionParameterfEXT(%s, %s, %f)", gl_enum_name(target), gl_enum_name(pname), params)); fn.glConvolutionParameterfEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglConvolutionParameterfv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glConvolutionParameterfv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLCONVOLUTIONPARAMETERFV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglConvolutionParameterfvEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglConvolutionParameterfvEXT(GLenum target, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glConvolutionParameterfvEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLCONVOLUTIONPARAMETERFVEXT(target, pname, params); } void OSMesaDriver::nfglConvolutionParameteri(GLenum target, GLenum pname, GLint params) { D(bug("nfosmesa: glConvolutionParameteri(%s, %s, %d)", gl_enum_name(target), gl_enum_name(pname), params)); fn.glConvolutionParameteri(target, pname, params); } void OSMesaDriver::nfglConvolutionParameteriEXT(GLenum target, GLenum pname, GLint params) { D(bug("nfosmesa: glConvolutionParameteriEXT(%s, %s, %d)", gl_enum_name(target), gl_enum_name(pname), params)); fn.glConvolutionParameteriEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglConvolutionParameteriv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glConvolutionParameteriv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLCONVOLUTIONPARAMETERIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglConvolutionParameterivEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglConvolutionParameterivEXT(GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glConvolutionParameterivEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLCONVOLUTIONPARAMETERIVEXT(target, pname, params); } void OSMesaDriver::nfglConvolutionParameterxOES(GLenum target, GLenum pname, GLfixed param) { D(bug("nfosmesa: glConvolutionParameterxOES(%s, %s, 0x%x)", gl_enum_name(target), gl_enum_name(pname), param)); fn.glConvolutionParameterxOES(target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglConvolutionParameterxvOES(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglConvolutionParameterxvOES(GLenum target, GLenum pname, const GLfixed *params) #endif { D(bug("nfosmesa: glConvolutionParameterxvOES(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLCONVOLUTIONPARAMETERXVOES(target, pname, params); } void OSMesaDriver::nfglCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) { D(bug("nfosmesa: glCopyBufferSubData(%s, %s, %" PRI_IPTR ", %" PRI_IPTR ", %" PRI_IPTR ")", gl_enum_name(readTarget), gl_enum_name(writeTarget), readOffset, writeOffset, size)); fn.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); } void OSMesaDriver::nfglCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) { D(bug("nfosmesa: glCopyColorSubTable(%s, %d, %d, %d, %d)", gl_enum_name(target), start, x, y, width)); fn.glCopyColorSubTable(target, start, x, y, width); } void OSMesaDriver::nfglCopyColorSubTableEXT(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) { D(bug("nfosmesa: glCopyColorSubTableEXT(%s, %d, %d, %d, %d)", gl_enum_name(target), start, x, y, width)); fn.glCopyColorSubTableEXT(target, start, x, y, width); } void OSMesaDriver::nfglCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) { D(bug("nfosmesa: glCopyColorTable(%s, %s, %d, %d, %d)", gl_enum_name(target), gl_enum_name(internalformat), x, y, width)); fn.glCopyColorTable(target, internalformat, x, y, width); } void OSMesaDriver::nfglCopyColorTableSGI(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) { D(bug("nfosmesa: glCopyColorTableSGI(%s, %s, %d, %d, %d)", gl_enum_name(target), gl_enum_name(internalformat), x, y, width)); fn.glCopyColorTableSGI(target, internalformat, x, y, width); } void OSMesaDriver::nfglCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) { D(bug("nfosmesa: glCopyConvolutionFilter1D(%s, %s, %d, %d, %d)", gl_enum_name(target), gl_enum_name(internalformat), x, y, width)); fn.glCopyConvolutionFilter1D(target, internalformat, x, y, width); } void OSMesaDriver::nfglCopyConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) { D(bug("nfosmesa: glCopyConvolutionFilter1DEXT(%s, %s, %d, %d, %d)", gl_enum_name(target), gl_enum_name(internalformat), x, y, width)); fn.glCopyConvolutionFilter1DEXT(target, internalformat, x, y, width); } void OSMesaDriver::nfglCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glCopyConvolutionFilter2D(%s, %s, %d, %d, %d, %d)", gl_enum_name(target), gl_enum_name(internalformat), x, y, width, height)); fn.glCopyConvolutionFilter2D(target, internalformat, x, y, width, height); } void OSMesaDriver::nfglCopyConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glCopyConvolutionFilter2DEXT(%s, %s, %d, %d, %d, %d)", gl_enum_name(target), gl_enum_name(internalformat), x, y, width, height)); fn.glCopyConvolutionFilter2DEXT(target, internalformat, x, y, width, height); } void OSMesaDriver::nfglCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) { D(bug("nfosmesa: glCopyImageSubData(%u, %s, %d, %d, %d, %d, %u, %s, %d, %d, %d, %d, %d, %d, %d)", srcName, gl_enum_name(srcTarget), srcLevel, srcX, srcY, srcZ, dstName, gl_enum_name(dstTarget), dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth)); fn.glCopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); } void OSMesaDriver::nfglCopyImageSubDataNV(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth) { D(bug("nfosmesa: glCopyImageSubDataNV(%u, %s, %d, %d, %d, %d, %u, %s, %d, %d, %d, %d, %d, %d, %d)", srcName, gl_enum_name(srcTarget), srcLevel, srcX, srcY, srcZ, dstName, gl_enum_name(dstTarget), dstLevel, dstX, dstY, dstZ, width, height, depth)); fn.glCopyImageSubDataNV(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth); } void OSMesaDriver::nfglCopyMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) { D(bug("nfosmesa: glCopyMultiTexImage1DEXT(%s, %s, %d, %s, %d, %d, %d, %d)", gl_enum_name(texunit), gl_enum_name(target), level, gl_enum_name(internalformat), x, y, width, border)); fn.glCopyMultiTexImage1DEXT(texunit, target, level, internalformat, x, y, width, border); } void OSMesaDriver::nfglCopyMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { D(bug("nfosmesa: glCopyMultiTexImage2DEXT(%s, %s, %d, %s, %d, %d, %d, %d, %d)", gl_enum_name(texunit), gl_enum_name(target), level, gl_enum_name(internalformat), x, y, width, height, border)); fn.glCopyMultiTexImage2DEXT(texunit, target, level, internalformat, x, y, width, height, border); } void OSMesaDriver::nfglCopyMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { D(bug("nfosmesa: glCopyMultiTexSubImage1DEXT(%s, %s, %d, %d, %d, %d, %d)", gl_enum_name(texunit), gl_enum_name(target), level, xoffset, x, y, width)); fn.glCopyMultiTexSubImage1DEXT(texunit, target, level, xoffset, x, y, width); } void OSMesaDriver::nfglCopyMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glCopyMultiTexSubImage2DEXT(%s, %s, %d, %d, %d, %d, %d, %d, %d)", gl_enum_name(texunit), gl_enum_name(target), level, xoffset, yoffset, x, y, width, height)); fn.glCopyMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, x, y, width, height); } void OSMesaDriver::nfglCopyMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glCopyMultiTexSubImage3DEXT(%s, %s, %d, %d, %d, %d, %d, %d, %d, %d)", gl_enum_name(texunit), gl_enum_name(target), level, xoffset, yoffset, zoffset, x, y, width, height)); fn.glCopyMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, x, y, width, height); } void OSMesaDriver::nfglCopyNamedBufferSubData(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) { D(bug("nfosmesa: glCopyNamedBufferSubData(%u, %u, %" PRI_IPTR ", %" PRI_IPTR ", %" PRI_IPTR ")", readBuffer, writeBuffer, readOffset, writeOffset, size)); fn.glCopyNamedBufferSubData(readBuffer, writeBuffer, readOffset, writeOffset, size); } void OSMesaDriver::nfglCopyPathNV(GLuint resultPath, GLuint srcPath) { D(bug("nfosmesa: glCopyPathNV(%u, %u)", resultPath, srcPath)); fn.glCopyPathNV(resultPath, srcPath); } void OSMesaDriver::nfglCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) { D(bug("nfosmesa: glCopyPixels(%d, %d, %d, %d, %s)", x, y, width, height, gl_enum_name(type))); fn.glCopyPixels(x, y, width, height, type); } void OSMesaDriver::nfglCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) { D(bug("nfosmesa: glCopyTexImage1D(%s, %d, %s, %d, %d, %d, %d)", gl_enum_name(target), level, gl_enum_name(internalformat), x, y, width, border)); fn.glCopyTexImage1D(target, level, internalformat, x, y, width, border); } void OSMesaDriver::nfglCopyTexImage1DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) { D(bug("nfosmesa: glCopyTexImage1DEXT(%s, %d, %s, %d, %d, %d, %d)", gl_enum_name(target), level, gl_enum_name(internalformat), x, y, width, border)); fn.glCopyTexImage1DEXT(target, level, internalformat, x, y, width, border); } void OSMesaDriver::nfglCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { D(bug("nfosmesa: glCopyTexImage2D(%s, %d, %s, %d, %d, %d, %d, %d)", gl_enum_name(target), level, gl_enum_name(internalformat), x, y, width, height, border)); fn.glCopyTexImage2D(target, level, internalformat, x, y, width, height, border); } void OSMesaDriver::nfglCopyTexImage2DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { D(bug("nfosmesa: glCopyTexImage2DEXT(%s, %d, %s, %d, %d, %d, %d, %d)", gl_enum_name(target), level, gl_enum_name(internalformat), x, y, width, height, border)); fn.glCopyTexImage2DEXT(target, level, internalformat, x, y, width, height, border); } void OSMesaDriver::nfglCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { D(bug("nfosmesa: glCopyTexSubImage1D(%s, %d, %d, %d, %d, %d)", gl_enum_name(target), level, xoffset, x, y, width)); fn.glCopyTexSubImage1D(target, level, xoffset, x, y, width); } void OSMesaDriver::nfglCopyTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { D(bug("nfosmesa: glCopyTexSubImage1DEXT(%s, %d, %d, %d, %d, %d)", gl_enum_name(target), level, xoffset, x, y, width)); fn.glCopyTexSubImage1DEXT(target, level, xoffset, x, y, width); } void OSMesaDriver::nfglCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glCopyTexSubImage2D(%s, %d, %d, %d, %d, %d, %d, %d)", gl_enum_name(target), level, xoffset, yoffset, x, y, width, height)); fn.glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); } void OSMesaDriver::nfglCopyTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glCopyTexSubImage2DEXT(%s, %d, %d, %d, %d, %d, %d, %d)", gl_enum_name(target), level, xoffset, yoffset, x, y, width, height)); fn.glCopyTexSubImage2DEXT(target, level, xoffset, yoffset, x, y, width, height); } void OSMesaDriver::nfglCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glCopyTexSubImage3D(%s, %d, %d, %d, %d, %d, %d, %d, %d)", gl_enum_name(target), level, xoffset, yoffset, zoffset, x, y, width, height)); fn.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); } void OSMesaDriver::nfglCopyTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glCopyTexSubImage3DEXT(%s, %d, %d, %d, %d, %d, %d, %d, %d)", gl_enum_name(target), level, xoffset, yoffset, zoffset, x, y, width, height)); fn.glCopyTexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, x, y, width, height); } void OSMesaDriver::nfglCopyTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) { D(bug("nfosmesa: glCopyTextureImage1DEXT(%u, %s, %d, %s, %d, %d, %d, %d)", texture, gl_enum_name(target), level, gl_enum_name(internalformat), x, y, width, border)); fn.glCopyTextureImage1DEXT(texture, target, level, internalformat, x, y, width, border); } void OSMesaDriver::nfglCopyTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { D(bug("nfosmesa: glCopyTextureImage2DEXT(%u, %s, %d, %s, %d, %d, %d, %d, %d)", texture, gl_enum_name(target), level, gl_enum_name(internalformat), x, y, width, height, border)); fn.glCopyTextureImage2DEXT(texture, target, level, internalformat, x, y, width, height, border); } void OSMesaDriver::nfglCopyTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { D(bug("nfosmesa: glCopyTextureSubImage1D(%u, %d, %d, %d, %d, %d)", texture, level, xoffset, x, y, width)); fn.glCopyTextureSubImage1D(texture, level, xoffset, x, y, width); } void OSMesaDriver::nfglCopyTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { D(bug("nfosmesa: glCopyTextureSubImage1DEXT(%u, %s, %d, %d, %d, %d, %d)", texture, gl_enum_name(target), level, xoffset, x, y, width)); fn.glCopyTextureSubImage1DEXT(texture, target, level, xoffset, x, y, width); } void OSMesaDriver::nfglCopyTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glCopyTextureSubImage2D(%u, %d, %d, %d, %d, %d, %d, %d)", texture, level, xoffset, yoffset, x, y, width, height)); fn.glCopyTextureSubImage2D(texture, level, xoffset, yoffset, x, y, width, height); } void OSMesaDriver::nfglCopyTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glCopyTextureSubImage2DEXT(%u, %s, %d, %d, %d, %d, %d, %d, %d)", texture, gl_enum_name(target), level, xoffset, yoffset, x, y, width, height)); fn.glCopyTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, x, y, width, height); } void OSMesaDriver::nfglCopyTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glCopyTextureSubImage3D(%u, %d, %d, %d, %d, %d, %d, %d, %d)", texture, level, xoffset, yoffset, zoffset, x, y, width, height)); fn.glCopyTextureSubImage3D(texture, level, xoffset, yoffset, zoffset, x, y, width, height); } void OSMesaDriver::nfglCopyTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glCopyTextureSubImage3DEXT(%u, %s, %d, %d, %d, %d, %d, %d, %d, %d)", texture, gl_enum_name(target), level, xoffset, yoffset, zoffset, x, y, width, height)); fn.glCopyTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, x, y, width, height); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLenum coverMode, GLenum transformType, memptr transformValues) #else void OSMesaDriver::nfglCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues) #endif { D(bug("nfosmesa: glCoverFillPathInstancedNV(%d, %s, " PRI_PTR ", %u, %s, %s, " PRI_PTR ")", numPaths, gl_enum_name(pathNameType), AtariOffset(paths), pathBase, gl_enum_name(coverMode), gl_enum_name(transformType), AtariOffset(transformValues))); FN_GLCOVERFILLPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues); } void OSMesaDriver::nfglCoverFillPathNV(GLuint path, GLenum coverMode) { D(bug("nfosmesa: glCoverFillPathNV(%u, %s)", path, gl_enum_name(coverMode))); fn.glCoverFillPathNV(path, coverMode); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLenum coverMode, GLenum transformType, memptr transformValues) #else void OSMesaDriver::nfglCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues) #endif { D(bug("nfosmesa: glCoverStrokePathInstancedNV(%d, %s, " PRI_PTR ", %u, %s, %s, " PRI_PTR ")", numPaths, gl_enum_name(pathNameType), AtariOffset(paths), pathBase, gl_enum_name(coverMode), gl_enum_name(transformType), AtariOffset(transformValues))); FN_GLCOVERSTROKEPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues); } void OSMesaDriver::nfglCoverStrokePathNV(GLuint path, GLenum coverMode) { D(bug("nfosmesa: glCoverStrokePathNV(%u, %s)", path, gl_enum_name(coverMode))); fn.glCoverStrokePathNV(path, coverMode); } void OSMesaDriver::nfglCoverageModulationNV(GLenum components) { D(bug("nfosmesa: glCoverageModulationNV(%s)", gl_enum_name(components))); fn.glCoverageModulationNV(components); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCoverageModulationTableNV(GLsizei n, memptr v) #else void OSMesaDriver::nfglCoverageModulationTableNV(GLsizei n, const GLfloat *v) #endif { D(bug("nfosmesa: glCoverageModulationTableNV(%d, " PRI_PTR ")", n, AtariOffset(v))); FN_GLCOVERAGEMODULATIONTABLENV(n, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCreateBuffers(GLsizei n, memptr buffers) #else void OSMesaDriver::nfglCreateBuffers(GLsizei n, GLuint *buffers) #endif { D(bug("nfosmesa: glCreateBuffers(%d, " PRI_PTR ")", n, AtariOffset(buffers))); FN_GLCREATEBUFFERS(n, buffers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCreateCommandListsNV(GLsizei n, memptr lists) #else void OSMesaDriver::nfglCreateCommandListsNV(GLsizei n, GLuint *lists) #endif { D(bug("nfosmesa: glCreateCommandListsNV(%d, " PRI_PTR ")", n, AtariOffset(lists))); FN_GLCREATECOMMANDLISTSNV(n, lists); } GLhandleARB OSMesaDriver::nfglCreateDebugObjectMESA(void) { D(bug("nfosmesa: glCreateDebugObjectMESA()")); GLhandleARB __ret = fn.glCreateDebugObjectMESA(); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCreateFramebuffers(GLsizei n, memptr framebuffers) #else void OSMesaDriver::nfglCreateFramebuffers(GLsizei n, GLuint *framebuffers) #endif { D(bug("nfosmesa: glCreateFramebuffers(%d, " PRI_PTR ")", n, AtariOffset(framebuffers))); FN_GLCREATEFRAMEBUFFERS(n, framebuffers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCreateMemoryObjectsEXT(GLsizei n, memptr memoryObjects) #else void OSMesaDriver::nfglCreateMemoryObjectsEXT(GLsizei n, GLuint *memoryObjects) #endif { D(bug("nfosmesa: glCreateMemoryObjectsEXT(%d, " PRI_PTR ")", n, AtariOffset(memoryObjects))); #if NFOSMESA_NEED_INT_CONV GLint const __memoryObjects_size = MAX(n, 0); GLuint __memoryObjects_tmp[__memoryObjects_size]; fn.glCreateMemoryObjectsEXT(n, __memoryObjects_tmp); Host2AtariIntArray(__memoryObjects_size, __memoryObjects_tmp, memoryObjects); #else fn.glCreateMemoryObjectsEXT(n, HostAddr(memoryObjects, GLuint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCreatePerfQueryINTEL(GLuint queryId, memptr queryHandle) #else void OSMesaDriver::nfglCreatePerfQueryINTEL(GLuint queryId, GLuint *queryHandle) #endif { D(bug("nfosmesa: glCreatePerfQueryINTEL(%u, " PRI_PTR ")", queryId, AtariOffset(queryHandle))); FN_GLCREATEPERFQUERYINTEL(queryId, queryHandle); } GLuint OSMesaDriver::nfglCreateProgram(void) { D(bug("nfosmesa: glCreateProgram()")); GLuint __ret = fn.glCreateProgram(); return __ret; } GLhandleARB OSMesaDriver::nfglCreateProgramObjectARB(void) { D(bug("nfosmesa: glCreateProgramObjectARB()")); GLhandleARB __ret = fn.glCreateProgramObjectARB(); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCreateProgramPipelines(GLsizei n, memptr pipelines) #else void OSMesaDriver::nfglCreateProgramPipelines(GLsizei n, GLuint *pipelines) #endif { D(bug("nfosmesa: glCreateProgramPipelines(%d, " PRI_PTR ")", n, AtariOffset(pipelines))); FN_GLCREATEPROGRAMPIPELINES(n, pipelines); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCreateQueries(GLenum target, GLsizei n, memptr ids) #else void OSMesaDriver::nfglCreateQueries(GLenum target, GLsizei n, GLuint *ids) #endif { D(bug("nfosmesa: glCreateQueries(%s, %d, " PRI_PTR ")", gl_enum_name(target), n, AtariOffset(ids))); FN_GLCREATEQUERIES(target, n, ids); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCreateRenderbuffers(GLsizei n, memptr renderbuffers) #else void OSMesaDriver::nfglCreateRenderbuffers(GLsizei n, GLuint *renderbuffers) #endif { D(bug("nfosmesa: glCreateRenderbuffers(%d, " PRI_PTR ")", n, AtariOffset(renderbuffers))); FN_GLCREATERENDERBUFFERS(n, renderbuffers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCreateSamplers(GLsizei n, memptr samplers) #else void OSMesaDriver::nfglCreateSamplers(GLsizei n, GLuint *samplers) #endif { D(bug("nfosmesa: glCreateSamplers(%d, " PRI_PTR ")", n, AtariOffset(samplers))); FN_GLCREATESAMPLERS(n, samplers); } GLuint OSMesaDriver::nfglCreateShader(GLenum type) { D(bug("nfosmesa: glCreateShader(%s)", gl_enum_name(type))); GLuint __ret = fn.glCreateShader(type); return __ret; } GLhandleARB OSMesaDriver::nfglCreateShaderObjectARB(GLenum shaderType) { D(bug("nfosmesa: glCreateShaderObjectARB(%s)", gl_enum_name(shaderType))); GLhandleARB __ret = fn.glCreateShaderObjectARB(shaderType); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG GLuint OSMesaDriver::nfglCreateShaderProgramEXT(GLenum type, memptr string) #else GLuint OSMesaDriver::nfglCreateShaderProgramEXT(GLenum type, const GLchar *string) #endif { D(bug("nfosmesa: glCreateShaderProgramEXT(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(string))); FN_GLCREATESHADERPROGRAMEXT(type, string); } #if NFOSMESA_POINTER_AS_MEMARG GLuint OSMesaDriver::nfglCreateShaderProgramv(GLenum type, GLsizei count, memptr strings) #else GLuint OSMesaDriver::nfglCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const *strings) #endif { D(bug("nfosmesa: glCreateShaderProgramv(%s, %d, " PRI_PTR ")", gl_enum_name(type), count, AtariOffset(strings))); FN_GLCREATESHADERPROGRAMV(type, count, strings); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCreateStatesNV(GLsizei n, memptr states) #else void OSMesaDriver::nfglCreateStatesNV(GLsizei n, GLuint *states) #endif { D(bug("nfosmesa: glCreateStatesNV(%d, " PRI_PTR ")", n, AtariOffset(states))); FN_GLCREATESTATESNV(n, states); } #if 0 #if NFOSMESA_POINTER_AS_MEMARG GLsync OSMesaDriver::nfglCreateSyncFromCLeventARB(memptr context, memptr event, GLbitfield flags) #else GLsync OSMesaDriver::nfglCreateSyncFromCLeventARB(struct _cl_context *context, struct _cl_event *event, GLbitfield flags) #endif { D(bug("nfosmesa: glCreateSyncFromCLeventARB(" PRI_PTR ", " PRI_PTR ", 0x%x)", AtariOffset(context), AtariOffset(event), flags)); GLsync __ret = fn.glCreateSyncFromCLeventARB(context, event, flags); return __ret; } #endif #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCreateTextures(GLenum target, GLsizei n, memptr textures) #else void OSMesaDriver::nfglCreateTextures(GLenum target, GLsizei n, GLuint *textures) #endif { D(bug("nfosmesa: glCreateTextures(%s, %d, " PRI_PTR ")", gl_enum_name(target), n, AtariOffset(textures))); FN_GLCREATETEXTURES(target, n, textures); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCreateTransformFeedbacks(GLsizei n, memptr ids) #else void OSMesaDriver::nfglCreateTransformFeedbacks(GLsizei n, GLuint *ids) #endif { D(bug("nfosmesa: glCreateTransformFeedbacks(%d, " PRI_PTR ")", n, AtariOffset(ids))); FN_GLCREATETRANSFORMFEEDBACKS(n, ids); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCreateVertexArrays(GLsizei n, memptr arrays) #else void OSMesaDriver::nfglCreateVertexArrays(GLsizei n, GLuint *arrays) #endif { D(bug("nfosmesa: glCreateVertexArrays(%d, " PRI_PTR ")", n, AtariOffset(arrays))); FN_GLCREATEVERTEXARRAYS(n, arrays); } void OSMesaDriver::nfglCullFace(GLenum mode) { D(bug("nfosmesa: glCullFace(%s)", gl_enum_name(mode))); fn.glCullFace(mode); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCullParameterdvEXT(GLenum pname, memptr params) #else void OSMesaDriver::nfglCullParameterdvEXT(GLenum pname, GLdouble *params) #endif { D(bug("nfosmesa: glCullParameterdvEXT(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_DOUBLE_CONV GLint const __params_size = nfglGetNumParams(pname); GLdouble __params_tmp[__params_size]; GLdouble *__params_ptmp = Atari2HostDoubleArray(__params_size, params, __params_tmp); fn.glCullParameterdvEXT(pname, __params_ptmp); #else fn.glCullParameterdvEXT(pname, HostAddr(params, GLdouble *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglCullParameterfvEXT(GLenum pname, memptr params) #else void OSMesaDriver::nfglCullParameterfvEXT(GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glCullParameterfvEXT(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __params_size = nfglGetNumParams(pname); GLfloat __params_tmp[__params_size]; GLfloat *__params_ptmp = Atari2HostFloatArray(__params_size, params, __params_tmp); fn.glCullParameterfvEXT(pname, __params_ptmp); #else fn.glCullParameterfvEXT(pname, HostAddr(params, GLfloat *)); #endif } void OSMesaDriver::nfglCurrentPaletteMatrixARB(GLint index) { D(bug("nfosmesa: glCurrentPaletteMatrixARB(%d)", index)); fn.glCurrentPaletteMatrixARB(index); } #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDebugMessageCallback(memptr callback, memptr userParam) #else void OSMesaDriver::nfglDebugMessageCallback(GLDEBUGPROC callback, const void *userParam) #endif { D(bug("nfosmesa: glDebugMessageCallback(" PRI_PTR ", " PRI_PTR ")", AtariOffset(callback), AtariOffset(userParam))); FN_GLDEBUGMESSAGECALLBACK(callback, userParam); } #endif #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDebugMessageCallbackAMD(memptr callback, memptr userParam) #else void OSMesaDriver::nfglDebugMessageCallbackAMD(GLDEBUGPROCAMD callback, void *userParam) #endif { D(bug("nfosmesa: glDebugMessageCallbackAMD(" PRI_PTR ", " PRI_PTR ")", AtariOffset(callback), AtariOffset(userParam))); FN_GLDEBUGMESSAGECALLBACKAMD(callback, userParam); } #endif #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDebugMessageCallbackARB(memptr callback, memptr userParam) #else void OSMesaDriver::nfglDebugMessageCallbackARB(GLDEBUGPROCARB callback, const void *userParam) #endif { D(bug("nfosmesa: glDebugMessageCallbackARB(" PRI_PTR ", " PRI_PTR ")", AtariOffset(callback), AtariOffset(userParam))); FN_GLDEBUGMESSAGECALLBACKARB(callback, userParam); } #endif #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, memptr ids, GLboolean32 enabled) #else void OSMesaDriver::nfglDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled) #endif { D(bug("nfosmesa: glDebugMessageControl(%s, %s, %s, %d, " PRI_PTR ", %d)", gl_enum_name(source), gl_enum_name(type), gl_enum_name(severity), count, AtariOffset(ids), enabled)); FN_GLDEBUGMESSAGECONTROL(source, type, severity, count, ids, enabled); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDebugMessageControlARB(GLenum source, GLenum type, GLenum severity, GLsizei count, memptr ids, GLboolean32 enabled) #else void OSMesaDriver::nfglDebugMessageControlARB(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled) #endif { D(bug("nfosmesa: glDebugMessageControlARB(%s, %s, %s, %d, " PRI_PTR ", %d)", gl_enum_name(source), gl_enum_name(type), gl_enum_name(severity), count, AtariOffset(ids), enabled)); #if NFOSMESA_NEED_INT_CONV GLint const __ids_size = MAX(count, 0); GLuint __ids_tmp[__ids_size]; GLuint *__ids_ptmp = Atari2HostIntArray(__ids_size, ids, __ids_tmp); fn.glDebugMessageControlARB(source, type, severity, count, __ids_ptmp, enabled); #else fn.glDebugMessageControlARB(source, type, severity, count, HostAddr(ids, const GLuint *), enabled); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDebugMessageEnableAMD(GLenum category, GLenum severity, GLsizei count, memptr ids, GLboolean32 enabled) #else void OSMesaDriver::nfglDebugMessageEnableAMD(GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled) #endif { D(bug("nfosmesa: glDebugMessageEnableAMD(%s, %s, %d, " PRI_PTR ", %d)", gl_enum_name(category), gl_enum_name(severity), count, AtariOffset(ids), enabled)); #if NFOSMESA_NEED_INT_CONV GLint const __ids_size = MAX(count, 0); GLuint __ids_tmp[__ids_size]; GLuint *__ids_ptmp = Atari2HostIntArray(__ids_size, ids, __ids_tmp); fn.glDebugMessageEnableAMD(category, severity, count, __ids_ptmp, enabled); #else fn.glDebugMessageEnableAMD(category, severity, count, HostAddr(ids, const GLuint *), enabled); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, memptr buf) #else void OSMesaDriver::nfglDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf) #endif { D(bug("nfosmesa: glDebugMessageInsert(%s, %s, %u, %s, %d, " PRI_PTR ")", gl_enum_name(source), gl_enum_name(type), id, gl_enum_name(severity), length, AtariOffset(buf))); FN_GLDEBUGMESSAGEINSERT(source, type, id, severity, length, buf); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDebugMessageInsertAMD(GLenum category, GLenum severity, GLuint id, GLsizei length, memptr buf) #else void OSMesaDriver::nfglDebugMessageInsertAMD(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf) #endif { D(bug("nfosmesa: glDebugMessageInsertAMD(%s, %s, %u, %d, " PRI_PTR ")", gl_enum_name(category), gl_enum_name(severity), id, length, AtariOffset(buf))); #if NFOSMESA_NEED_BYTE_CONV GLint const __buf_size = length >= 0 ? length : safe_strlen(buf) + 1; GLchar __buf_tmp[__buf_size]; GLchar *__buf_ptmp = Atari2HostByteArray(__buf_size, buf, __buf_tmp); fn.glDebugMessageInsertAMD(category, severity, id, length, __buf_ptmp); #else fn.glDebugMessageInsertAMD(category, severity, id, length, HostAddr(buf, const GLchar *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDebugMessageInsertARB(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, memptr buf) #else void OSMesaDriver::nfglDebugMessageInsertARB(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf) #endif { D(bug("nfosmesa: glDebugMessageInsertARB(%s, %s, %u, %s, %d, " PRI_PTR ")", gl_enum_name(source), gl_enum_name(type), id, gl_enum_name(severity), length, AtariOffset(buf))); #if NFOSMESA_NEED_BYTE_CONV GLint const __buf_size = length >= 0 ? length : safe_strlen(buf) + 1; GLchar __buf_tmp[__buf_size]; GLchar *__buf_ptmp = Atari2HostByteArray(__buf_size, buf, __buf_tmp); fn.glDebugMessageInsertARB(source, type, id, severity, length, __buf_ptmp); #else fn.glDebugMessageInsertARB(source, type, id, severity, length, HostAddr(buf, const GLchar *)); #endif } void OSMesaDriver::nfglDeformSGIX(GLbitfield mask) { D(bug("nfosmesa: glDeformSGIX(0x%x)", mask)); fn.glDeformSGIX(mask); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeformationMap3dSGIX(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, memptr points) #else void OSMesaDriver::nfglDeformationMap3dSGIX(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points) #endif { D(bug("nfosmesa: glDeformationMap3dSGIX(%s, %f, %f, %d, %d, %f, %f, %d, %d, %f, %f, %d, %d, " PRI_PTR ")", gl_enum_name(target), u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, AtariOffset(points))); FN_GLDEFORMATIONMAP3DSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeformationMap3fSGIX(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, memptr points) #else void OSMesaDriver::nfglDeformationMap3fSGIX(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points) #endif { D(bug("nfosmesa: glDeformationMap3fSGIX(%s, %f, %f, %d, %d, %f, %f, %d, %d, %f, %f, %d, %d, " PRI_PTR ")", gl_enum_name(target), u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, AtariOffset(points))); FN_GLDEFORMATIONMAP3FSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points); } void OSMesaDriver::nfglDeleteAsyncMarkersSGIX(GLuint marker, GLsizei range) { D(bug("nfosmesa: glDeleteAsyncMarkersSGIX(%u, %d)", marker, range)); fn.glDeleteAsyncMarkersSGIX(marker, range); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteBuffers(GLsizei n, memptr buffers) #else void OSMesaDriver::nfglDeleteBuffers(GLsizei n, const GLuint *buffers) #endif { D(bug("nfosmesa: glDeleteBuffers(%d, " PRI_PTR ")", n, AtariOffset(buffers))); FN_GLDELETEBUFFERS(n, buffers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteBuffersARB(GLsizei n, memptr buffers) #else void OSMesaDriver::nfglDeleteBuffersARB(GLsizei n, const GLuint *buffers) #endif { D(bug("nfosmesa: glDeleteBuffersARB(%d, " PRI_PTR ")", n, AtariOffset(buffers))); FN_GLDELETEBUFFERSARB(n, buffers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteCommandListsNV(GLsizei n, memptr lists) #else void OSMesaDriver::nfglDeleteCommandListsNV(GLsizei n, const GLuint *lists) #endif { D(bug("nfosmesa: glDeleteCommandListsNV(%d, " PRI_PTR ")", n, AtariOffset(lists))); FN_GLDELETECOMMANDLISTSNV(n, lists); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteFencesAPPLE(GLsizei n, memptr fences) #else void OSMesaDriver::nfglDeleteFencesAPPLE(GLsizei n, const GLuint *fences) #endif { D(bug("nfosmesa: glDeleteFencesAPPLE(%d, " PRI_PTR ")", n, AtariOffset(fences))); #if NFOSMESA_NEED_INT_CONV GLint const __fences_size = MAX(n, 0); GLuint __fences_tmp[__fences_size]; GLuint *__fences_ptmp = Atari2HostIntArray(__fences_size, fences, __fences_tmp); fn.glDeleteFencesAPPLE(n, __fences_ptmp); #else fn.glDeleteFencesAPPLE(n, HostAddr(fences, const GLuint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteFencesNV(GLsizei n, memptr fences) #else void OSMesaDriver::nfglDeleteFencesNV(GLsizei n, const GLuint *fences) #endif { D(bug("nfosmesa: glDeleteFencesNV(%d, " PRI_PTR ")", n, AtariOffset(fences))); #if NFOSMESA_NEED_INT_CONV GLint const __fences_size = MAX(n, 0); GLuint __fences_tmp[__fences_size]; GLuint *__fences_ptmp = Atari2HostIntArray(__fences_size, fences, __fences_tmp); fn.glDeleteFencesNV(n, __fences_ptmp); #else fn.glDeleteFencesNV(n, HostAddr(fences, const GLuint *)); #endif } void OSMesaDriver::nfglDeleteFragmentShaderATI(GLuint id) { D(bug("nfosmesa: glDeleteFragmentShaderATI(%u)", id)); fn.glDeleteFragmentShaderATI(id); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteFramebuffers(GLsizei n, memptr framebuffers) #else void OSMesaDriver::nfglDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) #endif { D(bug("nfosmesa: glDeleteFramebuffers(%d, " PRI_PTR ")", n, AtariOffset(framebuffers))); FN_GLDELETEFRAMEBUFFERS(n, framebuffers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteFramebuffersEXT(GLsizei n, memptr framebuffers) #else void OSMesaDriver::nfglDeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers) #endif { D(bug("nfosmesa: glDeleteFramebuffersEXT(%d, " PRI_PTR ")", n, AtariOffset(framebuffers))); FN_GLDELETEFRAMEBUFFERSEXT(n, framebuffers); } void OSMesaDriver::nfglDeleteLists(GLuint list, GLsizei range) { D(bug("nfosmesa: glDeleteLists(%u, %d)", list, range)); fn.glDeleteLists(list, range); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteMemoryObjectsEXT(GLsizei n, memptr memoryObjects) #else void OSMesaDriver::nfglDeleteMemoryObjectsEXT(GLsizei n, const GLuint *memoryObjects) #endif { D(bug("nfosmesa: glDeleteMemoryObjectsEXT(%d, " PRI_PTR ")", n, AtariOffset(memoryObjects))); #if NFOSMESA_NEED_INT_CONV GLint const __memoryObjects_size = MAX(n, 0); GLuint __memoryObjects_tmp[__memoryObjects_size]; GLuint *__memoryObjects_ptmp = Atari2HostIntArray(__memoryObjects_size, memoryObjects, __memoryObjects_tmp); fn.glDeleteMemoryObjectsEXT(n, __memoryObjects_ptmp); #else fn.glDeleteMemoryObjectsEXT(n, HostAddr(memoryObjects, const GLuint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteNamedStringARB(GLint namelen, memptr name) #else void OSMesaDriver::nfglDeleteNamedStringARB(GLint namelen, const GLchar *name) #endif { D(bug("nfosmesa: glDeleteNamedStringARB(%d, " PRI_PTR ")", namelen, AtariOffset(name))); FN_GLDELETENAMEDSTRINGARB(namelen, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteNamesAMD(GLenum identifier, GLuint num, memptr names) #else void OSMesaDriver::nfglDeleteNamesAMD(GLenum identifier, GLuint num, const GLuint *names) #endif { D(bug("nfosmesa: glDeleteNamesAMD(%s, %u, " PRI_PTR ")", gl_enum_name(identifier), num, AtariOffset(names))); FN_GLDELETENAMESAMD(identifier, num, names); } void OSMesaDriver::nfglDeleteObjectARB(GLhandleARB obj) { D(bug("nfosmesa: glDeleteObjectARB(%u)", (unsigned int)(uintptr_t)obj)); fn.glDeleteObjectARB(obj); } void OSMesaDriver::nfglDeleteObjectBufferATI(GLuint buffer) { D(bug("nfosmesa: glDeleteObjectBufferATI(%u)", buffer)); FN_GLDELETEOBJECTBUFFERATI(buffer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteOcclusionQueriesNV(GLsizei n, memptr ids) #else void OSMesaDriver::nfglDeleteOcclusionQueriesNV(GLsizei n, const GLuint *ids) #endif { D(bug("nfosmesa: glDeleteOcclusionQueriesNV(%d, " PRI_PTR ")", n, AtariOffset(ids))); FN_GLDELETEOCCLUSIONQUERIESNV(n, ids); } void OSMesaDriver::nfglDeletePathsNV(GLuint path, GLsizei range) { D(bug("nfosmesa: glDeletePathsNV(%u, %d)", path, range)); fn.glDeletePathsNV(path, range); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeletePerfMonitorsAMD(GLsizei n, memptr monitors) #else void OSMesaDriver::nfglDeletePerfMonitorsAMD(GLsizei n, GLuint *monitors) #endif { D(bug("nfosmesa: glDeletePerfMonitorsAMD(%d, " PRI_PTR ")", n, AtariOffset(monitors))); FN_GLDELETEPERFMONITORSAMD(n, monitors); } void OSMesaDriver::nfglDeletePerfQueryINTEL(GLuint queryHandle) { D(bug("nfosmesa: glDeletePerfQueryINTEL(%u)", queryHandle)); fn.glDeletePerfQueryINTEL(queryHandle); } void OSMesaDriver::nfglDeleteProgram(GLuint program) { D(bug("nfosmesa: glDeleteProgram(%u)", program)); fn.glDeleteProgram(program); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteProgramPipelines(GLsizei n, memptr pipelines) #else void OSMesaDriver::nfglDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) #endif { D(bug("nfosmesa: glDeleteProgramPipelines(%d, " PRI_PTR ")", n, AtariOffset(pipelines))); FN_GLDELETEPROGRAMPIPELINES(n, pipelines); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteProgramsARB(GLsizei n, memptr programs) #else void OSMesaDriver::nfglDeleteProgramsARB(GLsizei n, const GLuint *programs) #endif { D(bug("nfosmesa: glDeleteProgramsARB(%d, " PRI_PTR ")", n, AtariOffset(programs))); FN_GLDELETEPROGRAMSARB(n, programs); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteProgramsNV(GLsizei n, memptr programs) #else void OSMesaDriver::nfglDeleteProgramsNV(GLsizei n, const GLuint *programs) #endif { D(bug("nfosmesa: glDeleteProgramsNV(%d, " PRI_PTR ")", n, AtariOffset(programs))); FN_GLDELETEPROGRAMSNV(n, programs); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteQueries(GLsizei n, memptr ids) #else void OSMesaDriver::nfglDeleteQueries(GLsizei n, const GLuint *ids) #endif { D(bug("nfosmesa: glDeleteQueries(%d, " PRI_PTR ")", n, AtariOffset(ids))); FN_GLDELETEQUERIES(n, ids); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteQueriesARB(GLsizei n, memptr ids) #else void OSMesaDriver::nfglDeleteQueriesARB(GLsizei n, const GLuint *ids) #endif { D(bug("nfosmesa: glDeleteQueriesARB(%d, " PRI_PTR ")", n, AtariOffset(ids))); FN_GLDELETEQUERIESARB(n, ids); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteQueryResourceTagNV(GLsizei n, memptr tagIds) #else void OSMesaDriver::nfglDeleteQueryResourceTagNV(GLsizei n, const GLint *tagIds) #endif { D(bug("nfosmesa: glDeleteQueryResourceTagNV(%d, " PRI_PTR ")", n, AtariOffset(tagIds))); #if NFOSMESA_NEED_INT_CONV GLint const __tagIds_size = MAX(n, 0); GLint __tagIds_tmp[__tagIds_size]; GLint *__tagIds_ptmp = Atari2HostIntArray(__tagIds_size, tagIds, __tagIds_tmp); fn.glDeleteQueryResourceTagNV(n, __tagIds_ptmp); #else fn.glDeleteQueryResourceTagNV(n, HostAddr(tagIds, const GLint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteRenderbuffers(GLsizei n, memptr renderbuffers) #else void OSMesaDriver::nfglDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) #endif { D(bug("nfosmesa: glDeleteRenderbuffers(%d, " PRI_PTR ")", n, AtariOffset(renderbuffers))); FN_GLDELETERENDERBUFFERS(n, renderbuffers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteRenderbuffersEXT(GLsizei n, memptr renderbuffers) #else void OSMesaDriver::nfglDeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers) #endif { D(bug("nfosmesa: glDeleteRenderbuffersEXT(%d, " PRI_PTR ")", n, AtariOffset(renderbuffers))); FN_GLDELETERENDERBUFFERSEXT(n, renderbuffers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteSamplers(GLsizei count, memptr samplers) #else void OSMesaDriver::nfglDeleteSamplers(GLsizei count, const GLuint *samplers) #endif { D(bug("nfosmesa: glDeleteSamplers(%d, " PRI_PTR ")", count, AtariOffset(samplers))); FN_GLDELETESAMPLERS(count, samplers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteSemaphoresEXT(GLsizei n, memptr semaphores) #else void OSMesaDriver::nfglDeleteSemaphoresEXT(GLsizei n, const GLuint *semaphores) #endif { D(bug("nfosmesa: glDeleteSemaphoresEXT(%d, " PRI_PTR ")", n, AtariOffset(semaphores))); #if NFOSMESA_NEED_INT_CONV GLint const __semaphores_size = MAX(n, 0); GLuint __semaphores_tmp[__semaphores_size]; GLuint *__semaphores_ptmp = Atari2HostIntArray(__semaphores_size, semaphores, __semaphores_tmp); fn.glDeleteSemaphoresEXT(n, __semaphores_ptmp); #else fn.glDeleteSemaphoresEXT(n, HostAddr(semaphores, const GLuint *)); #endif } void OSMesaDriver::nfglDeleteShader(GLuint shader) { D(bug("nfosmesa: glDeleteShader(%u)", shader)); fn.glDeleteShader(shader); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteStatesNV(GLsizei n, memptr states) #else void OSMesaDriver::nfglDeleteStatesNV(GLsizei n, const GLuint *states) #endif { D(bug("nfosmesa: glDeleteStatesNV(%d, " PRI_PTR ")", n, AtariOffset(states))); FN_GLDELETESTATESNV(n, states); } void OSMesaDriver::nfglDeleteSync(GLsync sync) { D(bug("nfosmesa: glDeleteSync(" PRI_PTR ")", (unsigned int)(uintptr_t)sync)); fn.glDeleteSync(sync); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteTextures(GLsizei n, memptr textures) #else void OSMesaDriver::nfglDeleteTextures(GLsizei n, const GLuint *textures) #endif { D(bug("nfosmesa: glDeleteTextures(%d, " PRI_PTR ")", n, AtariOffset(textures))); FN_GLDELETETEXTURES(n, textures); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteTexturesEXT(GLsizei n, memptr textures) #else void OSMesaDriver::nfglDeleteTexturesEXT(GLsizei n, const GLuint *textures) #endif { D(bug("nfosmesa: glDeleteTexturesEXT(%d, " PRI_PTR ")", n, AtariOffset(textures))); FN_GLDELETETEXTURESEXT(n, textures); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteTransformFeedbacks(GLsizei n, memptr ids) #else void OSMesaDriver::nfglDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) #endif { D(bug("nfosmesa: glDeleteTransformFeedbacks(%d, " PRI_PTR ")", n, AtariOffset(ids))); FN_GLDELETETRANSFORMFEEDBACKS(n, ids); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteTransformFeedbacksNV(GLsizei n, memptr ids) #else void OSMesaDriver::nfglDeleteTransformFeedbacksNV(GLsizei n, const GLuint *ids) #endif { D(bug("nfosmesa: glDeleteTransformFeedbacksNV(%d, " PRI_PTR ")", n, AtariOffset(ids))); FN_GLDELETETRANSFORMFEEDBACKSNV(n, ids); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteVertexArrays(GLsizei n, memptr arrays) #else void OSMesaDriver::nfglDeleteVertexArrays(GLsizei n, const GLuint *arrays) #endif { D(bug("nfosmesa: glDeleteVertexArrays(%d, " PRI_PTR ")", n, AtariOffset(arrays))); FN_GLDELETEVERTEXARRAYS(n, arrays); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDeleteVertexArraysAPPLE(GLsizei n, memptr arrays) #else void OSMesaDriver::nfglDeleteVertexArraysAPPLE(GLsizei n, const GLuint *arrays) #endif { D(bug("nfosmesa: glDeleteVertexArraysAPPLE(%d, " PRI_PTR ")", n, AtariOffset(arrays))); FN_GLDELETEVERTEXARRAYSAPPLE(n, arrays); } void OSMesaDriver::nfglDeleteVertexShaderEXT(GLuint id) { D(bug("nfosmesa: glDeleteVertexShaderEXT(%u)", id)); fn.glDeleteVertexShaderEXT(id); } void OSMesaDriver::nfglDepthBoundsEXT(GLclampd zmin, GLclampd zmax) { D(bug("nfosmesa: glDepthBoundsEXT(%f, %f)", zmin, zmax)); fn.glDepthBoundsEXT(zmin, zmax); } void OSMesaDriver::nfglDepthBoundsdNV(GLdouble zmin, GLdouble zmax) { D(bug("nfosmesa: glDepthBoundsdNV(%f, %f)", zmin, zmax)); fn.glDepthBoundsdNV(zmin, zmax); } void OSMesaDriver::nfglDepthFunc(GLenum func) { D(bug("nfosmesa: glDepthFunc(%s)", gl_enum_name(func))); fn.glDepthFunc(func); } void OSMesaDriver::nfglDepthMask(GLboolean32 flag) { D(bug("nfosmesa: glDepthMask(%d)", flag)); fn.glDepthMask(flag); } void OSMesaDriver::nfglDepthRange(GLclampd zNear, GLclampd zFar) { D(bug("nfosmesa: glDepthRange(%f, %f)", zNear, zFar)); fn.glDepthRange(zNear, zFar); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDepthRangeArrayv(GLuint first, GLsizei count, memptr v) #else void OSMesaDriver::nfglDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) #endif { D(bug("nfosmesa: glDepthRangeArrayv(%u, %d, " PRI_PTR ")", first, count, AtariOffset(v))); FN_GLDEPTHRANGEARRAYV(first, count, v); } void OSMesaDriver::nfglDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) { D(bug("nfosmesa: glDepthRangeIndexed(%u, %f, %f)", index, n, f)); fn.glDepthRangeIndexed(index, n, f); } void OSMesaDriver::nfglDepthRangedNV(GLdouble zNear, GLdouble zFar) { D(bug("nfosmesa: glDepthRangedNV(%f, %f)", zNear, zFar)); fn.glDepthRangedNV(zNear, zFar); } void OSMesaDriver::nfglDepthRangef(GLfloat n, GLfloat f) { D(bug("nfosmesa: glDepthRangef(%f, %f)", n, f)); fn.glDepthRangef(n, f); } void OSMesaDriver::nfglDepthRangefOES(GLclampf n, GLclampf f) { D(bug("nfosmesa: glDepthRangefOES(%f, %f)", n, f)); fn.glDepthRangefOES(n, f); } void OSMesaDriver::nfglDepthRangexOES(GLfixed n, GLfixed f) { D(bug("nfosmesa: glDepthRangexOES(0x%x, 0x%x)", n, f)); fn.glDepthRangexOES(n, f); } void OSMesaDriver::nfglDetachObjectARB(GLhandleARB containerObj, GLhandleARB attachedObj) { D(bug("nfosmesa: glDetachObjectARB(%u, %u)", (unsigned int)(uintptr_t)containerObj, (unsigned int)(uintptr_t)attachedObj)); fn.glDetachObjectARB(containerObj, attachedObj); } void OSMesaDriver::nfglDetachShader(GLuint program, GLuint shader) { D(bug("nfosmesa: glDetachShader(%u, %u)", program, shader)); fn.glDetachShader(program, shader); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDetailTexFuncSGIS(GLenum target, GLsizei n, memptr points) #else void OSMesaDriver::nfglDetailTexFuncSGIS(GLenum target, GLsizei n, const GLfloat *points) #endif { D(bug("nfosmesa: glDetailTexFuncSGIS(%s, %d, " PRI_PTR ")", gl_enum_name(target), n, AtariOffset(points))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __points_size = MAX(n * 2, 0); GLfloat __points_tmp[__points_size]; GLfloat *__points_ptmp = Atari2HostFloatArray(__points_size, points, __points_tmp); fn.glDetailTexFuncSGIS(target, n, __points_ptmp); #else fn.glDetailTexFuncSGIS(target, n, HostAddr(points, const GLfloat *)); #endif } void OSMesaDriver::nfglDisable(GLenum cap) { D(bug("nfosmesa: glDisable(%s)", gl_enum_name(cap))); FN_GLDISABLE(cap); } void OSMesaDriver::nfglDisableClientState(GLenum array) { D(bug("nfosmesa: glDisableClientState(%s)", gl_enum_name(array))); FN_GLDISABLECLIENTSTATE(array); } void OSMesaDriver::nfglDisableClientStateIndexedEXT(GLenum array, GLuint index) { D(bug("nfosmesa: glDisableClientStateIndexedEXT(%s, %u)", gl_enum_name(array), index)); fn.glDisableClientStateIndexedEXT(array, index); } void OSMesaDriver::nfglDisableClientStateiEXT(GLenum array, GLuint index) { D(bug("nfosmesa: glDisableClientStateiEXT(%s, %u)", gl_enum_name(array), index)); fn.glDisableClientStateiEXT(array, index); } void OSMesaDriver::nfglDisableIndexedEXT(GLenum target, GLuint index) { D(bug("nfosmesa: glDisableIndexedEXT(%s, %u)", gl_enum_name(target), index)); fn.glDisableIndexedEXT(target, index); } void OSMesaDriver::nfglDisableTraceMESA(GLbitfield mask) { D(bug("nfosmesa: glDisableTraceMESA(0x%x)", mask)); fn.glDisableTraceMESA(mask); } void OSMesaDriver::nfglDisableVariantClientStateEXT(GLuint id) { D(bug("nfosmesa: glDisableVariantClientStateEXT(%u)", id)); FN_GLDISABLEVARIANTCLIENTSTATEEXT(id); } void OSMesaDriver::nfglDisableVertexArrayAttrib(GLuint vaobj, GLuint index) { D(bug("nfosmesa: glDisableVertexArrayAttrib(%u, %u)", vaobj, index)); fn.glDisableVertexArrayAttrib(vaobj, index); } void OSMesaDriver::nfglDisableVertexArrayAttribEXT(GLuint vaobj, GLuint index) { D(bug("nfosmesa: glDisableVertexArrayAttribEXT(%u, %u)", vaobj, index)); fn.glDisableVertexArrayAttribEXT(vaobj, index); } void OSMesaDriver::nfglDisableVertexArrayEXT(GLuint vaobj, GLenum array) { D(bug("nfosmesa: glDisableVertexArrayEXT(%u, %s)", vaobj, gl_enum_name(array))); fn.glDisableVertexArrayEXT(vaobj, array); } void OSMesaDriver::nfglDisableVertexAttribAPPLE(GLuint index, GLenum pname) { D(bug("nfosmesa: glDisableVertexAttribAPPLE(%u, %s)", index, gl_enum_name(pname))); fn.glDisableVertexAttribAPPLE(index, pname); } void OSMesaDriver::nfglDisableVertexAttribArray(GLuint index) { D(bug("nfosmesa: glDisableVertexAttribArray(%u)", index)); fn.glDisableVertexAttribArray(index); } void OSMesaDriver::nfglDisableVertexAttribArrayARB(GLuint index) { D(bug("nfosmesa: glDisableVertexAttribArrayARB(%u)", index)); fn.glDisableVertexAttribArrayARB(index); } void OSMesaDriver::nfglDisablei(GLenum target, GLuint index) { D(bug("nfosmesa: glDisablei(%s, %u)", gl_enum_name(target), index)); fn.glDisablei(target, index); } void OSMesaDriver::nfglDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) { D(bug("nfosmesa: glDispatchCompute(%u, %u, %u)", num_groups_x, num_groups_y, num_groups_z)); fn.glDispatchCompute(num_groups_x, num_groups_y, num_groups_z); } void OSMesaDriver::nfglDispatchComputeGroupSizeARB(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z) { D(bug("nfosmesa: glDispatchComputeGroupSizeARB(%u, %u, %u, %u, %u, %u)", num_groups_x, num_groups_y, num_groups_z, group_size_x, group_size_y, group_size_z)); fn.glDispatchComputeGroupSizeARB(num_groups_x, num_groups_y, num_groups_z, group_size_x, group_size_y, group_size_z); } void OSMesaDriver::nfglDispatchComputeIndirect(GLintptr indirect) { D(bug("nfosmesa: glDispatchComputeIndirect(%" PRI_IPTR ")", indirect)); FN_GLDISPATCHCOMPUTEINDIRECT(indirect); } void OSMesaDriver::nfglDrawArrays(GLenum mode, GLint first, GLsizei count) { D(bug("nfosmesa: glDrawArrays(%s, %d, %d)", gl_enum_name(mode), first, count)); FN_GLDRAWARRAYS(mode, first, count); } void OSMesaDriver::nfglDrawArraysEXT(GLenum mode, GLint first, GLsizei count) { D(bug("nfosmesa: glDrawArraysEXT(%s, %d, %d)", gl_enum_name(mode), first, count)); FN_GLDRAWARRAYSEXT(mode, first, count); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawArraysIndirect(GLenum mode, memptr indirect) #else void OSMesaDriver::nfglDrawArraysIndirect(GLenum mode, const void *indirect) #endif { D(bug("nfosmesa: glDrawArraysIndirect(%s, " PRI_PTR ")", gl_enum_name(mode), AtariOffset(indirect))); FN_GLDRAWARRAYSINDIRECT(mode, indirect); } void OSMesaDriver::nfglDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) { D(bug("nfosmesa: glDrawArraysInstanced(%s, %d, %d, %d)", gl_enum_name(mode), first, count, instancecount)); FN_GLDRAWARRAYSINSTANCED(mode, first, count, instancecount); } void OSMesaDriver::nfglDrawArraysInstancedARB(GLenum mode, GLint first, GLsizei count, GLsizei primcount) { D(bug("nfosmesa: glDrawArraysInstancedARB(%s, %d, %d, %d)", gl_enum_name(mode), first, count, primcount)); FN_GLDRAWARRAYSINSTANCEDARB(mode, first, count, primcount); } void OSMesaDriver::nfglDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance) { D(bug("nfosmesa: glDrawArraysInstancedBaseInstance(%s, %d, %d, %d, %u)", gl_enum_name(mode), first, count, instancecount, baseinstance)); fn.glDrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance); } void OSMesaDriver::nfglDrawArraysInstancedEXT(GLenum mode, GLint start, GLsizei count, GLsizei primcount) { D(bug("nfosmesa: glDrawArraysInstancedEXT(%s, %d, %d, %d)", gl_enum_name(mode), start, count, primcount)); FN_GLDRAWARRAYSINSTANCEDEXT(mode, start, count, primcount); } void OSMesaDriver::nfglDrawBuffer(GLenum mode) { D(bug("nfosmesa: glDrawBuffer(%s)", gl_enum_name(mode))); fn.glDrawBuffer(mode); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawBuffers(GLsizei n, memptr bufs) #else void OSMesaDriver::nfglDrawBuffers(GLsizei n, const GLenum *bufs) #endif { D(bug("nfosmesa: glDrawBuffers(%d, " PRI_PTR ")", n, AtariOffset(bufs))); FN_GLDRAWBUFFERS(n, bufs); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawBuffersARB(GLsizei n, memptr bufs) #else void OSMesaDriver::nfglDrawBuffersARB(GLsizei n, const GLenum *bufs) #endif { D(bug("nfosmesa: glDrawBuffersARB(%d, " PRI_PTR ")", n, AtariOffset(bufs))); FN_GLDRAWBUFFERSARB(n, bufs); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawBuffersATI(GLsizei n, memptr bufs) #else void OSMesaDriver::nfglDrawBuffersATI(GLsizei n, const GLenum *bufs) #endif { D(bug("nfosmesa: glDrawBuffersATI(%d, " PRI_PTR ")", n, AtariOffset(bufs))); FN_GLDRAWBUFFERSATI(n, bufs); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawCommandsAddressNV(GLenum primitiveMode, memptr indirects, memptr sizes, GLuint count) #else void OSMesaDriver::nfglDrawCommandsAddressNV(GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count) #endif { D(bug("nfosmesa: glDrawCommandsAddressNV(%s, " PRI_PTR ", " PRI_PTR ", %u)", gl_enum_name(primitiveMode), AtariOffset(indirects), AtariOffset(sizes), count)); FN_GLDRAWCOMMANDSADDRESSNV(primitiveMode, indirects, sizes, count); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawCommandsNV(GLenum primitiveMode, GLuint buffer, memptr indirects, memptr sizes, GLuint count) #else void OSMesaDriver::nfglDrawCommandsNV(GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count) #endif { D(bug("nfosmesa: glDrawCommandsNV(%s, %u, " PRI_PTR ", " PRI_PTR ", %u)", gl_enum_name(primitiveMode), buffer, AtariOffset(indirects), AtariOffset(sizes), count)); FN_GLDRAWCOMMANDSNV(primitiveMode, buffer, indirects, sizes, count); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawCommandsStatesAddressNV(memptr indirects, memptr sizes, memptr states, memptr fbos, GLuint count) #else void OSMesaDriver::nfglDrawCommandsStatesAddressNV(const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count) #endif { D(bug("nfosmesa: glDrawCommandsStatesAddressNV(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", %u)", AtariOffset(indirects), AtariOffset(sizes), AtariOffset(states), AtariOffset(fbos), count)); FN_GLDRAWCOMMANDSSTATESADDRESSNV(indirects, sizes, states, fbos, count); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawCommandsStatesNV(GLuint buffer, memptr indirects, memptr sizes, memptr states, memptr fbos, GLuint count) #else void OSMesaDriver::nfglDrawCommandsStatesNV(GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count) #endif { D(bug("nfosmesa: glDrawCommandsStatesNV(%u, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", %u)", buffer, AtariOffset(indirects), AtariOffset(sizes), AtariOffset(states), AtariOffset(fbos), count)); FN_GLDRAWCOMMANDSSTATESNV(buffer, indirects, sizes, states, fbos, count); } void OSMesaDriver::nfglDrawElementArrayAPPLE(GLenum mode, GLint first, GLsizei count) { D(bug("nfosmesa: glDrawElementArrayAPPLE(%s, %d, %d)", gl_enum_name(mode), first, count)); FN_GLDRAWELEMENTARRAYAPPLE(mode, first, count); } void OSMesaDriver::nfglDrawElementArrayATI(GLenum mode, GLsizei count) { D(bug("nfosmesa: glDrawElementArrayATI(%s, %d)", gl_enum_name(mode), count)); FN_GLDRAWELEMENTARRAYATI(mode, count); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawElements(GLenum mode, GLsizei count, GLenum type, memptr indices) #else void OSMesaDriver::nfglDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) #endif { D(bug("nfosmesa: glDrawElements(%s, %d, %s, " PRI_PTR ")", gl_enum_name(mode), count, gl_enum_name(type), AtariOffset(indices))); FN_GLDRAWELEMENTS(mode, count, type, indices); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, memptr indices, GLint basevertex) #else void OSMesaDriver::nfglDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex) #endif { D(bug("nfosmesa: glDrawElementsBaseVertex(%s, %d, %s, " PRI_PTR ", %d)", gl_enum_name(mode), count, gl_enum_name(type), AtariOffset(indices), basevertex)); FN_GLDRAWELEMENTSBASEVERTEX(mode, count, type, indices, basevertex); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawElementsIndirect(GLenum mode, GLenum type, memptr indirect) #else void OSMesaDriver::nfglDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect) #endif { D(bug("nfosmesa: glDrawElementsIndirect(%s, %s, " PRI_PTR ")", gl_enum_name(mode), gl_enum_name(type), AtariOffset(indirect))); FN_GLDRAWELEMENTSINDIRECT(mode, type, indirect); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, memptr indices, GLsizei instancecount) #else void OSMesaDriver::nfglDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount) #endif { D(bug("nfosmesa: glDrawElementsInstanced(%s, %d, %s, " PRI_PTR ", %d)", gl_enum_name(mode), count, gl_enum_name(type), AtariOffset(indices), instancecount)); FN_GLDRAWELEMENTSINSTANCED(mode, count, type, indices, instancecount); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawElementsInstancedARB(GLenum mode, GLsizei count, GLenum type, memptr indices, GLsizei primcount) #else void OSMesaDriver::nfglDrawElementsInstancedARB(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount) #endif { D(bug("nfosmesa: glDrawElementsInstancedARB(%s, %d, %s, " PRI_PTR ", %d)", gl_enum_name(mode), count, gl_enum_name(type), AtariOffset(indices), primcount)); FN_GLDRAWELEMENTSINSTANCEDARB(mode, count, type, indices, primcount); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, memptr indices, GLsizei instancecount, GLuint baseinstance) #else void OSMesaDriver::nfglDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance) #endif { D(bug("nfosmesa: glDrawElementsInstancedBaseInstance(%s, %d, %s, " PRI_PTR ", %d, %u)", gl_enum_name(mode), count, gl_enum_name(type), AtariOffset(indices), instancecount, baseinstance)); FN_GLDRAWELEMENTSINSTANCEDBASEINSTANCE(mode, count, type, indices, instancecount, baseinstance); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, memptr indices, GLsizei instancecount, GLint basevertex) #else void OSMesaDriver::nfglDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex) #endif { D(bug("nfosmesa: glDrawElementsInstancedBaseVertex(%s, %d, %s, " PRI_PTR ", %d, %d)", gl_enum_name(mode), count, gl_enum_name(type), AtariOffset(indices), instancecount, basevertex)); FN_GLDRAWELEMENTSINSTANCEDBASEVERTEX(mode, count, type, indices, instancecount, basevertex); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, memptr indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance) #else void OSMesaDriver::nfglDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance) #endif { D(bug("nfosmesa: glDrawElementsInstancedBaseVertexBaseInstance(%s, %d, %s, " PRI_PTR ", %d, %d, %u)", gl_enum_name(mode), count, gl_enum_name(type), AtariOffset(indices), instancecount, basevertex, baseinstance)); FN_GLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE(mode, count, type, indices, instancecount, basevertex, baseinstance); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, memptr indices, GLsizei primcount) #else void OSMesaDriver::nfglDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount) #endif { D(bug("nfosmesa: glDrawElementsInstancedEXT(%s, %d, %s, " PRI_PTR ", %d)", gl_enum_name(mode), count, gl_enum_name(type), AtariOffset(indices), primcount)); FN_GLDRAWELEMENTSINSTANCEDEXT(mode, count, type, indices, primcount); } void OSMesaDriver::nfglDrawMeshArraysSUN(GLenum mode, GLint first, GLsizei count, GLsizei width) { D(bug("nfosmesa: glDrawMeshArraysSUN(%s, %d, %d, %d)", gl_enum_name(mode), first, count, width)); fn.glDrawMeshArraysSUN(mode, first, count, width); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) #endif { D(bug("nfosmesa: glDrawPixels(%d, %d, %s, %s, " PRI_PTR ")", width, height, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLDRAWPIXELS(width, height, format, type, pixels); } void OSMesaDriver::nfglDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count) { D(bug("nfosmesa: glDrawRangeElementArrayAPPLE(%s, %u, %u, %d, %d)", gl_enum_name(mode), start, end, first, count)); FN_GLDRAWRANGEELEMENTARRAYAPPLE(mode, start, end, first, count); } void OSMesaDriver::nfglDrawRangeElementArrayATI(GLenum mode, GLuint start, GLuint end, GLsizei count) { D(bug("nfosmesa: glDrawRangeElementArrayATI(%s, %u, %u, %d)", gl_enum_name(mode), start, end, count)); FN_GLDRAWRANGEELEMENTARRAYATI(mode, start, end, count); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, memptr indices) #else void OSMesaDriver::nfglDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices) #endif { D(bug("nfosmesa: glDrawRangeElements(%s, %u, %u, %d, %s, " PRI_PTR ")", gl_enum_name(mode), start, end, count, gl_enum_name(type), AtariOffset(indices))); FN_GLDRAWRANGEELEMENTS(mode, start, end, count, type, indices); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, memptr indices, GLint basevertex) #else void OSMesaDriver::nfglDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex) #endif { D(bug("nfosmesa: glDrawRangeElementsBaseVertex(%s, %u, %u, %d, %s, " PRI_PTR ", %d)", gl_enum_name(mode), start, end, count, gl_enum_name(type), AtariOffset(indices), basevertex)); FN_GLDRAWRANGEELEMENTSBASEVERTEX(mode, start, end, count, type, indices, basevertex); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglDrawRangeElementsEXT(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, memptr indices) #else void OSMesaDriver::nfglDrawRangeElementsEXT(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices) #endif { D(bug("nfosmesa: glDrawRangeElementsEXT(%s, %u, %u, %d, %s, " PRI_PTR ")", gl_enum_name(mode), start, end, count, gl_enum_name(type), AtariOffset(indices))); FN_GLDRAWRANGEELEMENTSEXT(mode, start, end, count, type, indices); } void OSMesaDriver::nfglDrawTextureNV(GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1) { D(bug("nfosmesa: glDrawTextureNV(%u, %u, %f, %f, %f, %f, %f, %f, %f, %f, %f)", texture, sampler, x0, y0, x1, y1, z, s0, t0, s1, t1)); fn.glDrawTextureNV(texture, sampler, x0, y0, x1, y1, z, s0, t0, s1, t1); } void OSMesaDriver::nfglDrawTransformFeedback(GLenum mode, GLuint id) { D(bug("nfosmesa: glDrawTransformFeedback(%s, %u)", gl_enum_name(mode), id)); fn.glDrawTransformFeedback(mode, id); } void OSMesaDriver::nfglDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) { D(bug("nfosmesa: glDrawTransformFeedbackInstanced(%s, %u, %d)", gl_enum_name(mode), id, instancecount)); fn.glDrawTransformFeedbackInstanced(mode, id, instancecount); } void OSMesaDriver::nfglDrawTransformFeedbackNV(GLenum mode, GLuint id) { D(bug("nfosmesa: glDrawTransformFeedbackNV(%s, %u)", gl_enum_name(mode), id)); fn.glDrawTransformFeedbackNV(mode, id); } void OSMesaDriver::nfglDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) { D(bug("nfosmesa: glDrawTransformFeedbackStream(%s, %u, %u)", gl_enum_name(mode), id, stream)); fn.glDrawTransformFeedbackStream(mode, id, stream); } void OSMesaDriver::nfglDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount) { D(bug("nfosmesa: glDrawTransformFeedbackStreamInstanced(%s, %u, %u, %d)", gl_enum_name(mode), id, stream, instancecount)); fn.glDrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); } void OSMesaDriver::nfglDrawVkImageNV(GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1) { D(bug("nfosmesa: glDrawVkImageNV(%" PRIu64 ", %u, %f, %f, %f, %f, %f, %f, %f, %f, %f)", vkImage, sampler, x0, y0, x1, y1, z, s0, t0, s1, t1)); fn.glDrawVkImageNV(vkImage, sampler, x0, y0, x1, y1, z, s0, t0, s1, t1); } void OSMesaDriver::nfglEdgeFlag(GLboolean32 flag) { D(bug("nfosmesa: glEdgeFlag(%d)", flag)); fn.glEdgeFlag(flag); } void OSMesaDriver::nfglEdgeFlagFormatNV(GLsizei stride) { D(bug("nfosmesa: glEdgeFlagFormatNV(%d)", stride)); fn.glEdgeFlagFormatNV(stride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglEdgeFlagPointer(GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) #endif { D(bug("nfosmesa: glEdgeFlagPointer(%d, " PRI_PTR ")", stride, AtariOffset(pointer))); FN_GLEDGEFLAGPOINTER(stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglEdgeFlagPointerEXT(GLsizei stride, GLsizei count, memptr pointer) #else void OSMesaDriver::nfglEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean *pointer) #endif { D(bug("nfosmesa: glEdgeFlagPointerEXT(%d, %d, " PRI_PTR ")", stride, count, AtariOffset(pointer))); FN_GLEDGEFLAGPOINTEREXT(stride, count, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglEdgeFlagPointerListIBM(GLint stride, memptr pointer, GLint ptrstride) #else void OSMesaDriver::nfglEdgeFlagPointerListIBM(GLint stride, const GLboolean * *pointer, GLint ptrstride) #endif { D(bug("nfosmesa: glEdgeFlagPointerListIBM(%d, " PRI_PTR ", %d)", stride, AtariOffset(pointer), ptrstride)); FN_GLEDGEFLAGPOINTERLISTIBM(stride, pointer, ptrstride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglEdgeFlagv(memptr flag) #else void OSMesaDriver::nfglEdgeFlagv(const GLboolean *flag) #endif { D(bug("nfosmesa: glEdgeFlagv(" PRI_PTR ")", AtariOffset(flag))); FN_GLEDGEFLAGV(flag); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglElementPointerAPPLE(GLenum type, memptr pointer) #else void OSMesaDriver::nfglElementPointerAPPLE(GLenum type, const void *pointer) #endif { D(bug("nfosmesa: glElementPointerAPPLE(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(pointer))); FN_GLELEMENTPOINTERAPPLE(type, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglElementPointerATI(GLenum type, memptr pointer) #else void OSMesaDriver::nfglElementPointerATI(GLenum type, const void *pointer) #endif { D(bug("nfosmesa: glElementPointerATI(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(pointer))); FN_GLELEMENTPOINTERATI(type, pointer); } void OSMesaDriver::nfglEnable(GLenum cap) { D(bug("nfosmesa: glEnable(%s)", gl_enum_name(cap))); FN_GLENABLE(cap); } void OSMesaDriver::nfglEnableClientState(GLenum array) { D(bug("nfosmesa: glEnableClientState(%s)", gl_enum_name(array))); FN_GLENABLECLIENTSTATE(array); } void OSMesaDriver::nfglEnableClientStateIndexedEXT(GLenum array, GLuint index) { D(bug("nfosmesa: glEnableClientStateIndexedEXT(%s, %u)", gl_enum_name(array), index)); fn.glEnableClientStateIndexedEXT(array, index); } void OSMesaDriver::nfglEnableClientStateiEXT(GLenum array, GLuint index) { D(bug("nfosmesa: glEnableClientStateiEXT(%s, %u)", gl_enum_name(array), index)); fn.glEnableClientStateiEXT(array, index); } void OSMesaDriver::nfglEnableIndexedEXT(GLenum target, GLuint index) { D(bug("nfosmesa: glEnableIndexedEXT(%s, %u)", gl_enum_name(target), index)); fn.glEnableIndexedEXT(target, index); } void OSMesaDriver::nfglEnableTraceMESA(GLbitfield mask) { D(bug("nfosmesa: glEnableTraceMESA(0x%x)", mask)); fn.glEnableTraceMESA(mask); } void OSMesaDriver::nfglEnableVariantClientStateEXT(GLuint id) { D(bug("nfosmesa: glEnableVariantClientStateEXT(%u)", id)); FN_GLENABLEVARIANTCLIENTSTATEEXT(id); } void OSMesaDriver::nfglEnableVertexArrayAttrib(GLuint vaobj, GLuint index) { D(bug("nfosmesa: glEnableVertexArrayAttrib(%u, %u)", vaobj, index)); fn.glEnableVertexArrayAttrib(vaobj, index); } void OSMesaDriver::nfglEnableVertexArrayAttribEXT(GLuint vaobj, GLuint index) { D(bug("nfosmesa: glEnableVertexArrayAttribEXT(%u, %u)", vaobj, index)); fn.glEnableVertexArrayAttribEXT(vaobj, index); } void OSMesaDriver::nfglEnableVertexArrayEXT(GLuint vaobj, GLenum array) { D(bug("nfosmesa: glEnableVertexArrayEXT(%u, %s)", vaobj, gl_enum_name(array))); fn.glEnableVertexArrayEXT(vaobj, array); } void OSMesaDriver::nfglEnableVertexAttribAPPLE(GLuint index, GLenum pname) { D(bug("nfosmesa: glEnableVertexAttribAPPLE(%u, %s)", index, gl_enum_name(pname))); fn.glEnableVertexAttribAPPLE(index, pname); } void OSMesaDriver::nfglEnableVertexAttribArray(GLuint index) { D(bug("nfosmesa: glEnableVertexAttribArray(%u)", index)); fn.glEnableVertexAttribArray(index); } void OSMesaDriver::nfglEnableVertexAttribArrayARB(GLuint index) { D(bug("nfosmesa: glEnableVertexAttribArrayARB(%u)", index)); fn.glEnableVertexAttribArrayARB(index); } void OSMesaDriver::nfglEnablei(GLenum target, GLuint index) { D(bug("nfosmesa: glEnablei(%s, %u)", gl_enum_name(target), index)); fn.glEnablei(target, index); } void OSMesaDriver::nfglEnd(void) { D(bug("nfosmesa: glEnd()")); fn.glEnd(); } void OSMesaDriver::nfglEndConditionalRender(void) { D(bug("nfosmesa: glEndConditionalRender()")); fn.glEndConditionalRender(); } void OSMesaDriver::nfglEndConditionalRenderNV(void) { D(bug("nfosmesa: glEndConditionalRenderNV()")); fn.glEndConditionalRenderNV(); } void OSMesaDriver::nfglEndConditionalRenderNVX(void) { D(bug("nfosmesa: glEndConditionalRenderNVX()")); fn.glEndConditionalRenderNVX(); } void OSMesaDriver::nfglEndFragmentShaderATI(void) { D(bug("nfosmesa: glEndFragmentShaderATI()")); fn.glEndFragmentShaderATI(); } void OSMesaDriver::nfglEndList(void) { D(bug("nfosmesa: glEndList()")); fn.glEndList(); } void OSMesaDriver::nfglEndOcclusionQueryNV(void) { D(bug("nfosmesa: glEndOcclusionQueryNV()")); fn.glEndOcclusionQueryNV(); } void OSMesaDriver::nfglEndPerfMonitorAMD(GLuint monitor) { D(bug("nfosmesa: glEndPerfMonitorAMD(%u)", monitor)); fn.glEndPerfMonitorAMD(monitor); } void OSMesaDriver::nfglEndPerfQueryINTEL(GLuint queryHandle) { D(bug("nfosmesa: glEndPerfQueryINTEL(%u)", queryHandle)); fn.glEndPerfQueryINTEL(queryHandle); } void OSMesaDriver::nfglEndQuery(GLenum target) { D(bug("nfosmesa: glEndQuery(%s)", gl_enum_name(target))); fn.glEndQuery(target); } void OSMesaDriver::nfglEndQueryARB(GLenum target) { D(bug("nfosmesa: glEndQueryARB(%s)", gl_enum_name(target))); fn.glEndQueryARB(target); } void OSMesaDriver::nfglEndQueryIndexed(GLenum target, GLuint index) { D(bug("nfosmesa: glEndQueryIndexed(%s, %u)", gl_enum_name(target), index)); fn.glEndQueryIndexed(target, index); } void OSMesaDriver::nfglEndTraceMESA(void) { D(bug("nfosmesa: glEndTraceMESA()")); fn.glEndTraceMESA(); } void OSMesaDriver::nfglEndTransformFeedback(void) { D(bug("nfosmesa: glEndTransformFeedback()")); fn.glEndTransformFeedback(); } void OSMesaDriver::nfglEndTransformFeedbackEXT(void) { D(bug("nfosmesa: glEndTransformFeedbackEXT()")); fn.glEndTransformFeedbackEXT(); } void OSMesaDriver::nfglEndTransformFeedbackNV(void) { D(bug("nfosmesa: glEndTransformFeedbackNV()")); fn.glEndTransformFeedbackNV(); } void OSMesaDriver::nfglEndVertexShaderEXT(void) { D(bug("nfosmesa: glEndVertexShaderEXT()")); fn.glEndVertexShaderEXT(); } void OSMesaDriver::nfglEndVideoCaptureNV(GLuint video_capture_slot) { D(bug("nfosmesa: glEndVideoCaptureNV(%u)", video_capture_slot)); fn.glEndVideoCaptureNV(video_capture_slot); } void OSMesaDriver::nfglEvalCoord1d(GLdouble u) { D(bug("nfosmesa: glEvalCoord1d(%f)", u)); fn.glEvalCoord1d(u); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglEvalCoord1dv(memptr u) #else void OSMesaDriver::nfglEvalCoord1dv(const GLdouble *u) #endif { D(bug("nfosmesa: glEvalCoord1dv(" PRI_PTR ")", AtariOffset(u))); FN_GLEVALCOORD1DV(u); } void OSMesaDriver::nfglEvalCoord1f(GLfloat u) { D(bug("nfosmesa: glEvalCoord1f(%f)", u)); fn.glEvalCoord1f(u); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglEvalCoord1fv(memptr u) #else void OSMesaDriver::nfglEvalCoord1fv(const GLfloat *u) #endif { D(bug("nfosmesa: glEvalCoord1fv(" PRI_PTR ")", AtariOffset(u))); FN_GLEVALCOORD1FV(u); } void OSMesaDriver::nfglEvalCoord1xOES(GLfixed u) { D(bug("nfosmesa: glEvalCoord1xOES(0x%x)", u)); fn.glEvalCoord1xOES(u); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglEvalCoord1xvOES(memptr coords) #else void OSMesaDriver::nfglEvalCoord1xvOES(const GLfixed *coords) #endif { D(bug("nfosmesa: glEvalCoord1xvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLEVALCOORD1XVOES(coords); } void OSMesaDriver::nfglEvalCoord2d(GLdouble u, GLdouble v) { D(bug("nfosmesa: glEvalCoord2d(%f, %f)", u, v)); fn.glEvalCoord2d(u, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglEvalCoord2dv(memptr u) #else void OSMesaDriver::nfglEvalCoord2dv(const GLdouble *u) #endif { D(bug("nfosmesa: glEvalCoord2dv(" PRI_PTR ")", AtariOffset(u))); FN_GLEVALCOORD2DV(u); } void OSMesaDriver::nfglEvalCoord2f(GLfloat u, GLfloat v) { D(bug("nfosmesa: glEvalCoord2f(%f, %f)", u, v)); fn.glEvalCoord2f(u, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglEvalCoord2fv(memptr u) #else void OSMesaDriver::nfglEvalCoord2fv(const GLfloat *u) #endif { D(bug("nfosmesa: glEvalCoord2fv(" PRI_PTR ")", AtariOffset(u))); FN_GLEVALCOORD2FV(u); } void OSMesaDriver::nfglEvalCoord2xOES(GLfixed u, GLfixed v) { D(bug("nfosmesa: glEvalCoord2xOES(0x%x, 0x%x)", u, v)); fn.glEvalCoord2xOES(u, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglEvalCoord2xvOES(memptr coords) #else void OSMesaDriver::nfglEvalCoord2xvOES(const GLfixed *coords) #endif { D(bug("nfosmesa: glEvalCoord2xvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLEVALCOORD2XVOES(coords); } void OSMesaDriver::nfglEvalMapsNV(GLenum target, GLenum mode) { D(bug("nfosmesa: glEvalMapsNV(%s, %s)", gl_enum_name(target), gl_enum_name(mode))); fn.glEvalMapsNV(target, mode); } void OSMesaDriver::nfglEvalMesh1(GLenum mode, GLint i1, GLint i2) { D(bug("nfosmesa: glEvalMesh1(%s, %d, %d)", gl_enum_name(mode), i1, i2)); fn.glEvalMesh1(mode, i1, i2); } void OSMesaDriver::nfglEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) { D(bug("nfosmesa: glEvalMesh2(%s, %d, %d, %d, %d)", gl_enum_name(mode), i1, i2, j1, j2)); fn.glEvalMesh2(mode, i1, i2, j1, j2); } void OSMesaDriver::nfglEvalPoint1(GLint i) { D(bug("nfosmesa: glEvalPoint1(%d)", i)); fn.glEvalPoint1(i); } void OSMesaDriver::nfglEvalPoint2(GLint i, GLint j) { D(bug("nfosmesa: glEvalPoint2(%d, %d)", i, j)); fn.glEvalPoint2(i, j); } void OSMesaDriver::nfglEvaluateDepthValuesARB(void) { D(bug("nfosmesa: glEvaluateDepthValuesARB()")); fn.glEvaluateDepthValuesARB(); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglExecuteProgramNV(GLenum target, GLuint id, memptr params) #else void OSMesaDriver::nfglExecuteProgramNV(GLenum target, GLuint id, const GLfloat *params) #endif { D(bug("nfosmesa: glExecuteProgramNV(%s, %u, " PRI_PTR ")", gl_enum_name(target), id, AtariOffset(params))); FN_GLEXECUTEPROGRAMNV(target, id, params); } void OSMesaDriver::nfglExtractComponentEXT(GLuint res, GLuint src, GLuint num) { D(bug("nfosmesa: glExtractComponentEXT(%u, %u, %u)", res, src, num)); fn.glExtractComponentEXT(res, src, num); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFeedbackBuffer(GLsizei size, GLenum type, memptr buffer) #else void OSMesaDriver::nfglFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) #endif { D(bug("nfosmesa: glFeedbackBuffer(%d, %s, " PRI_PTR ")", size, gl_enum_name(type), AtariOffset(buffer))); FN_GLFEEDBACKBUFFER(size, type, buffer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFeedbackBufferxOES(GLsizei n, GLenum type, memptr buffer) #else void OSMesaDriver::nfglFeedbackBufferxOES(GLsizei n, GLenum type, const GLfixed *buffer) #endif { D(bug("nfosmesa: glFeedbackBufferxOES(%d, %s, " PRI_PTR ")", n, gl_enum_name(type), AtariOffset(buffer))); FN_GLFEEDBACKBUFFERXOES(n, type, buffer); } GLsync OSMesaDriver::nfglFenceSync(GLenum condition, GLbitfield flags) { D(bug("nfosmesa: glFenceSync(%s, 0x%x)", gl_enum_name(condition), flags)); GLsync __ret = fn.glFenceSync(condition, flags); return __ret; } void OSMesaDriver::nfglFinalCombinerInputNV(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) { D(bug("nfosmesa: glFinalCombinerInputNV(%s, %s, %s, %s)", gl_enum_name(variable), gl_enum_name(input), gl_enum_name(mapping), gl_enum_name(componentUsage))); fn.glFinalCombinerInputNV(variable, input, mapping, componentUsage); } void OSMesaDriver::nfglFinish(void) { D(bug("nfosmesa: glFinish()")); FN_GLFINISH(); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglFinishAsyncSGIX(memptr markerp) #else GLint OSMesaDriver::nfglFinishAsyncSGIX(GLuint *markerp) #endif { D(bug("nfosmesa: glFinishAsyncSGIX(" PRI_PTR ")", AtariOffset(markerp))); FN_GLFINISHASYNCSGIX(markerp); } void OSMesaDriver::nfglFinishFenceAPPLE(GLuint fence) { D(bug("nfosmesa: glFinishFenceAPPLE(%u)", fence)); fn.glFinishFenceAPPLE(fence); } void OSMesaDriver::nfglFinishFenceNV(GLuint fence) { D(bug("nfosmesa: glFinishFenceNV(%u)", fence)); fn.glFinishFenceNV(fence); } void OSMesaDriver::nfglFinishObjectAPPLE(GLenum object, GLuint name) { D(bug("nfosmesa: glFinishObjectAPPLE(%s, %u)", gl_enum_name(object), name)); fn.glFinishObjectAPPLE(object, name); } void OSMesaDriver::nfglFinishRenderAPPLE(void) { D(bug("nfosmesa: glFinishRenderAPPLE()")); fn.glFinishRenderAPPLE(); } void OSMesaDriver::nfglFinishTextureSUNX(void) { D(bug("nfosmesa: glFinishTextureSUNX()")); fn.glFinishTextureSUNX(); } void OSMesaDriver::nfglFlush(void) { D(bug("nfosmesa: glFlush()")); FN_GLFLUSH(); } void OSMesaDriver::nfglFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) { D(bug("nfosmesa: glFlushMappedBufferRange(%s, %" PRI_IPTR ", %" PRI_IPTR ")", gl_enum_name(target), offset, length)); fn.glFlushMappedBufferRange(target, offset, length); } void OSMesaDriver::nfglFlushMappedBufferRangeAPPLE(GLenum target, GLintptr offset, GLsizeiptr size) { D(bug("nfosmesa: glFlushMappedBufferRangeAPPLE(%s, %" PRI_IPTR ", %" PRI_IPTR ")", gl_enum_name(target), offset, size)); fn.glFlushMappedBufferRangeAPPLE(target, offset, size); } void OSMesaDriver::nfglFlushMappedNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length) { D(bug("nfosmesa: glFlushMappedNamedBufferRange(%u, %" PRI_IPTR ", %" PRI_IPTR ")", buffer, offset, length)); fn.glFlushMappedNamedBufferRange(buffer, offset, length); } void OSMesaDriver::nfglFlushMappedNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length) { D(bug("nfosmesa: glFlushMappedNamedBufferRangeEXT(%u, %" PRI_IPTR ", %" PRI_IPTR ")", buffer, offset, length)); fn.glFlushMappedNamedBufferRangeEXT(buffer, offset, length); } void OSMesaDriver::nfglFlushPixelDataRangeNV(GLenum target) { D(bug("nfosmesa: glFlushPixelDataRangeNV(%s)", gl_enum_name(target))); fn.glFlushPixelDataRangeNV(target); } void OSMesaDriver::nfglFlushRasterSGIX(void) { D(bug("nfosmesa: glFlushRasterSGIX()")); fn.glFlushRasterSGIX(); } void OSMesaDriver::nfglFlushRenderAPPLE(void) { D(bug("nfosmesa: glFlushRenderAPPLE()")); fn.glFlushRenderAPPLE(); } void OSMesaDriver::nfglFlushStaticDataIBM(GLenum target) { D(bug("nfosmesa: glFlushStaticDataIBM(%s)", gl_enum_name(target))); fn.glFlushStaticDataIBM(target); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFlushVertexArrayRangeAPPLE(GLsizei length, memptr pointer) #else void OSMesaDriver::nfglFlushVertexArrayRangeAPPLE(GLsizei length, void *pointer) #endif { D(bug("nfosmesa: glFlushVertexArrayRangeAPPLE(%d, " PRI_PTR ")", length, AtariOffset(pointer))); FN_GLFLUSHVERTEXARRAYRANGEAPPLE(length, pointer); } void OSMesaDriver::nfglFlushVertexArrayRangeNV(void) { D(bug("nfosmesa: glFlushVertexArrayRangeNV()")); fn.glFlushVertexArrayRangeNV(); } void OSMesaDriver::nfglFogCoordFormatNV(GLenum type, GLsizei stride) { D(bug("nfosmesa: glFogCoordFormatNV(%s, %d)", gl_enum_name(type), stride)); fn.glFogCoordFormatNV(type, stride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFogCoordPointer(GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglFogCoordPointer(GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glFogCoordPointer(%s, %d, " PRI_PTR ")", gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLFOGCOORDPOINTER(type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFogCoordPointerEXT(GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglFogCoordPointerEXT(GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glFogCoordPointerEXT(%s, %d, " PRI_PTR ")", gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLFOGCOORDPOINTEREXT(type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFogCoordPointerListIBM(GLenum type, GLint stride, memptr pointer, GLint ptrstride) #else void OSMesaDriver::nfglFogCoordPointerListIBM(GLenum type, GLint stride, const void * *pointer, GLint ptrstride) #endif { D(bug("nfosmesa: glFogCoordPointerListIBM(%s, %d, " PRI_PTR ", %d)", gl_enum_name(type), stride, AtariOffset(pointer), ptrstride)); FN_GLFOGCOORDPOINTERLISTIBM(type, stride, pointer, ptrstride); } void OSMesaDriver::nfglFogCoordd(GLdouble coord) { D(bug("nfosmesa: glFogCoordd(%f)", coord)); fn.glFogCoordd(coord); } void OSMesaDriver::nfglFogCoorddEXT(GLdouble coord) { D(bug("nfosmesa: glFogCoorddEXT(%f)", coord)); fn.glFogCoorddEXT(coord); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFogCoorddv(memptr coord) #else void OSMesaDriver::nfglFogCoorddv(const GLdouble *coord) #endif { D(bug("nfosmesa: glFogCoorddv(" PRI_PTR ")", AtariOffset(coord))); FN_GLFOGCOORDDV(coord); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFogCoorddvEXT(memptr coord) #else void OSMesaDriver::nfglFogCoorddvEXT(const GLdouble *coord) #endif { D(bug("nfosmesa: glFogCoorddvEXT(" PRI_PTR ")", AtariOffset(coord))); FN_GLFOGCOORDDVEXT(coord); } void OSMesaDriver::nfglFogCoordf(GLfloat coord) { D(bug("nfosmesa: glFogCoordf(%f)", coord)); fn.glFogCoordf(coord); } void OSMesaDriver::nfglFogCoordfEXT(GLfloat coord) { D(bug("nfosmesa: glFogCoordfEXT(%f)", coord)); fn.glFogCoordfEXT(coord); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFogCoordfv(memptr coord) #else void OSMesaDriver::nfglFogCoordfv(const GLfloat *coord) #endif { D(bug("nfosmesa: glFogCoordfv(" PRI_PTR ")", AtariOffset(coord))); FN_GLFOGCOORDFV(coord); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFogCoordfvEXT(memptr coord) #else void OSMesaDriver::nfglFogCoordfvEXT(const GLfloat *coord) #endif { D(bug("nfosmesa: glFogCoordfvEXT(" PRI_PTR ")", AtariOffset(coord))); FN_GLFOGCOORDFVEXT(coord); } void OSMesaDriver::nfglFogCoordhNV(GLhalfNV32 fog) { D(bug("nfosmesa: glFogCoordhNV(%u)", fog)); fn.glFogCoordhNV(fog); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFogCoordhvNV(memptr fog) #else void OSMesaDriver::nfglFogCoordhvNV(const GLhalfNV *fog) #endif { D(bug("nfosmesa: glFogCoordhvNV(" PRI_PTR ")", AtariOffset(fog))); FN_GLFOGCOORDHVNV(fog); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFogFuncSGIS(GLsizei n, memptr points) #else void OSMesaDriver::nfglFogFuncSGIS(GLsizei n, const GLfloat *points) #endif { D(bug("nfosmesa: glFogFuncSGIS(%d, " PRI_PTR ")", n, AtariOffset(points))); FN_GLFOGFUNCSGIS(n, points); } void OSMesaDriver::nfglFogf(GLenum pname, GLfloat param) { D(bug("nfosmesa: glFogf(%s, %f)", gl_enum_name(pname), param)); fn.glFogf(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFogfv(GLenum pname, memptr params) #else void OSMesaDriver::nfglFogfv(GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glFogfv(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLFOGFV(pname, params); } void OSMesaDriver::nfglFogi(GLenum pname, GLint param) { D(bug("nfosmesa: glFogi(%s, %d)", gl_enum_name(pname), param)); fn.glFogi(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFogiv(GLenum pname, memptr params) #else void OSMesaDriver::nfglFogiv(GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glFogiv(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLFOGIV(pname, params); } void OSMesaDriver::nfglFogxOES(GLenum pname, GLfixed param) { D(bug("nfosmesa: glFogxOES(%s, 0x%x)", gl_enum_name(pname), param)); fn.glFogxOES(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFogxvOES(GLenum pname, memptr param) #else void OSMesaDriver::nfglFogxvOES(GLenum pname, const GLfixed *param) #endif { D(bug("nfosmesa: glFogxvOES(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(param))); FN_GLFOGXVOES(pname, param); } void OSMesaDriver::nfglFragmentColorMaterialSGIX(GLenum face, GLenum mode) { D(bug("nfosmesa: glFragmentColorMaterialSGIX(%s, %s)", gl_enum_name(face), gl_enum_name(mode))); fn.glFragmentColorMaterialSGIX(face, mode); } void OSMesaDriver::nfglFragmentCoverageColorNV(GLuint color) { D(bug("nfosmesa: glFragmentCoverageColorNV(%u)", color)); fn.glFragmentCoverageColorNV(color); } void OSMesaDriver::nfglFragmentLightModelfSGIX(GLenum pname, GLfloat param) { D(bug("nfosmesa: glFragmentLightModelfSGIX(%s, %f)", gl_enum_name(pname), param)); fn.glFragmentLightModelfSGIX(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFragmentLightModelfvSGIX(GLenum pname, memptr params) #else void OSMesaDriver::nfglFragmentLightModelfvSGIX(GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glFragmentLightModelfvSGIX(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLFRAGMENTLIGHTMODELFVSGIX(pname, params); } void OSMesaDriver::nfglFragmentLightModeliSGIX(GLenum pname, GLint param) { D(bug("nfosmesa: glFragmentLightModeliSGIX(%s, %d)", gl_enum_name(pname), param)); fn.glFragmentLightModeliSGIX(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFragmentLightModelivSGIX(GLenum pname, memptr params) #else void OSMesaDriver::nfglFragmentLightModelivSGIX(GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glFragmentLightModelivSGIX(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLFRAGMENTLIGHTMODELIVSGIX(pname, params); } void OSMesaDriver::nfglFragmentLightfSGIX(GLenum light, GLenum pname, GLfloat param) { D(bug("nfosmesa: glFragmentLightfSGIX(%s, %s, %f)", gl_enum_name(light), gl_enum_name(pname), param)); fn.glFragmentLightfSGIX(light, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFragmentLightfvSGIX(GLenum light, GLenum pname, memptr params) #else void OSMesaDriver::nfglFragmentLightfvSGIX(GLenum light, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glFragmentLightfvSGIX(%s, %s, " PRI_PTR ")", gl_enum_name(light), gl_enum_name(pname), AtariOffset(params))); FN_GLFRAGMENTLIGHTFVSGIX(light, pname, params); } void OSMesaDriver::nfglFragmentLightiSGIX(GLenum light, GLenum pname, GLint param) { D(bug("nfosmesa: glFragmentLightiSGIX(%s, %s, %d)", gl_enum_name(light), gl_enum_name(pname), param)); fn.glFragmentLightiSGIX(light, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFragmentLightivSGIX(GLenum light, GLenum pname, memptr params) #else void OSMesaDriver::nfglFragmentLightivSGIX(GLenum light, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glFragmentLightivSGIX(%s, %s, " PRI_PTR ")", gl_enum_name(light), gl_enum_name(pname), AtariOffset(params))); FN_GLFRAGMENTLIGHTIVSGIX(light, pname, params); } void OSMesaDriver::nfglFragmentMaterialfSGIX(GLenum face, GLenum pname, GLfloat param) { D(bug("nfosmesa: glFragmentMaterialfSGIX(%s, %s, %f)", gl_enum_name(face), gl_enum_name(pname), param)); fn.glFragmentMaterialfSGIX(face, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFragmentMaterialfvSGIX(GLenum face, GLenum pname, memptr params) #else void OSMesaDriver::nfglFragmentMaterialfvSGIX(GLenum face, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glFragmentMaterialfvSGIX(%s, %s, " PRI_PTR ")", gl_enum_name(face), gl_enum_name(pname), AtariOffset(params))); FN_GLFRAGMENTMATERIALFVSGIX(face, pname, params); } void OSMesaDriver::nfglFragmentMaterialiSGIX(GLenum face, GLenum pname, GLint param) { D(bug("nfosmesa: glFragmentMaterialiSGIX(%s, %s, %d)", gl_enum_name(face), gl_enum_name(pname), param)); fn.glFragmentMaterialiSGIX(face, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFragmentMaterialivSGIX(GLenum face, GLenum pname, memptr params) #else void OSMesaDriver::nfglFragmentMaterialivSGIX(GLenum face, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glFragmentMaterialivSGIX(%s, %s, " PRI_PTR ")", gl_enum_name(face), gl_enum_name(pname), AtariOffset(params))); FN_GLFRAGMENTMATERIALIVSGIX(face, pname, params); } void OSMesaDriver::nfglFrameTerminatorGREMEDY(void) { D(bug("nfosmesa: glFrameTerminatorGREMEDY()")); fn.glFrameTerminatorGREMEDY(); } void OSMesaDriver::nfglFrameZoomSGIX(GLint factor) { D(bug("nfosmesa: glFrameZoomSGIX(%d)", factor)); fn.glFrameZoomSGIX(factor); } void OSMesaDriver::nfglFramebufferDrawBufferEXT(GLuint framebuffer, GLenum mode) { D(bug("nfosmesa: glFramebufferDrawBufferEXT(%u, %s)", framebuffer, gl_enum_name(mode))); fn.glFramebufferDrawBufferEXT(framebuffer, mode); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFramebufferDrawBuffersEXT(GLuint framebuffer, GLsizei n, memptr bufs) #else void OSMesaDriver::nfglFramebufferDrawBuffersEXT(GLuint framebuffer, GLsizei n, const GLenum *bufs) #endif { D(bug("nfosmesa: glFramebufferDrawBuffersEXT(%u, %d, " PRI_PTR ")", framebuffer, n, AtariOffset(bufs))); FN_GLFRAMEBUFFERDRAWBUFFERSEXT(framebuffer, n, bufs); } void OSMesaDriver::nfglFramebufferParameteri(GLenum target, GLenum pname, GLint param) { D(bug("nfosmesa: glFramebufferParameteri(%s, %s, %d)", gl_enum_name(target), gl_enum_name(pname), param)); fn.glFramebufferParameteri(target, pname, param); } void OSMesaDriver::nfglFramebufferReadBufferEXT(GLuint framebuffer, GLenum mode) { D(bug("nfosmesa: glFramebufferReadBufferEXT(%u, %s)", framebuffer, gl_enum_name(mode))); fn.glFramebufferReadBufferEXT(framebuffer, mode); } void OSMesaDriver::nfglFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) { D(bug("nfosmesa: glFramebufferRenderbuffer(%s, %s, %s, %u)", gl_enum_name(target), gl_enum_name(attachment), gl_enum_name(renderbuffertarget), renderbuffer)); fn.glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); } void OSMesaDriver::nfglFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) { D(bug("nfosmesa: glFramebufferRenderbufferEXT(%s, %s, %s, %u)", gl_enum_name(target), gl_enum_name(attachment), gl_enum_name(renderbuffertarget), renderbuffer)); fn.glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFramebufferSampleLocationsfvARB(GLenum target, GLuint start, GLsizei count, memptr v) #else void OSMesaDriver::nfglFramebufferSampleLocationsfvARB(GLenum target, GLuint start, GLsizei count, const GLfloat *v) #endif { D(bug("nfosmesa: glFramebufferSampleLocationsfvARB(%s, %u, %d, " PRI_PTR ")", gl_enum_name(target), start, count, AtariOffset(v))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __v_size = MAX(count, 0); GLfloat __v_tmp[__v_size]; GLfloat *__v_ptmp = Atari2HostFloatArray(__v_size, v, __v_tmp); fn.glFramebufferSampleLocationsfvARB(target, start, count, __v_ptmp); #else fn.glFramebufferSampleLocationsfvARB(target, start, count, HostAddr(v, const GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFramebufferSampleLocationsfvNV(GLenum target, GLuint start, GLsizei count, memptr v) #else void OSMesaDriver::nfglFramebufferSampleLocationsfvNV(GLenum target, GLuint start, GLsizei count, const GLfloat *v) #endif { D(bug("nfosmesa: glFramebufferSampleLocationsfvNV(%s, %u, %d, " PRI_PTR ")", gl_enum_name(target), start, count, AtariOffset(v))); FN_GLFRAMEBUFFERSAMPLELOCATIONSFVNV(target, start, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglFramebufferSamplePositionsfvAMD(GLenum target, GLuint numsamples, GLuint pixelindex, memptr values) #else void OSMesaDriver::nfglFramebufferSamplePositionsfvAMD(GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values) #endif { D(bug("nfosmesa: glFramebufferSamplePositionsfvAMD(%s, %u, %u, " PRI_PTR ")", gl_enum_name(target), numsamples, pixelindex, AtariOffset(values))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __values_size = MAX(numsamples, 0); GLfloat __values_tmp[__values_size]; GLfloat *__values_ptmp = Atari2HostFloatArray(__values_size, values, __values_tmp); fn.glFramebufferSamplePositionsfvAMD(target, numsamples, pixelindex, __values_ptmp); #else fn.glFramebufferSamplePositionsfvAMD(target, numsamples, pixelindex, HostAddr(values, const GLfloat *)); #endif } void OSMesaDriver::nfglFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) { D(bug("nfosmesa: glFramebufferTexture(%s, %s, %u, %d)", gl_enum_name(target), gl_enum_name(attachment), texture, level)); fn.glFramebufferTexture(target, attachment, texture, level); } void OSMesaDriver::nfglFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { D(bug("nfosmesa: glFramebufferTexture1D(%s, %s, %s, %u, %d)", gl_enum_name(target), gl_enum_name(attachment), gl_enum_name(textarget), texture, level)); fn.glFramebufferTexture1D(target, attachment, textarget, texture, level); } void OSMesaDriver::nfglFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { D(bug("nfosmesa: glFramebufferTexture1DEXT(%s, %s, %s, %u, %d)", gl_enum_name(target), gl_enum_name(attachment), gl_enum_name(textarget), texture, level)); fn.glFramebufferTexture1DEXT(target, attachment, textarget, texture, level); } void OSMesaDriver::nfglFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { D(bug("nfosmesa: glFramebufferTexture2D(%s, %s, %s, %u, %d)", gl_enum_name(target), gl_enum_name(attachment), gl_enum_name(textarget), texture, level)); fn.glFramebufferTexture2D(target, attachment, textarget, texture, level); } void OSMesaDriver::nfglFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { D(bug("nfosmesa: glFramebufferTexture2DEXT(%s, %s, %s, %u, %d)", gl_enum_name(target), gl_enum_name(attachment), gl_enum_name(textarget), texture, level)); fn.glFramebufferTexture2DEXT(target, attachment, textarget, texture, level); } void OSMesaDriver::nfglFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) { D(bug("nfosmesa: glFramebufferTexture3D(%s, %s, %s, %u, %d, %d)", gl_enum_name(target), gl_enum_name(attachment), gl_enum_name(textarget), texture, level, zoffset)); fn.glFramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); } void OSMesaDriver::nfglFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) { D(bug("nfosmesa: glFramebufferTexture3DEXT(%s, %s, %s, %u, %d, %d)", gl_enum_name(target), gl_enum_name(attachment), gl_enum_name(textarget), texture, level, zoffset)); fn.glFramebufferTexture3DEXT(target, attachment, textarget, texture, level, zoffset); } void OSMesaDriver::nfglFramebufferTextureARB(GLenum target, GLenum attachment, GLuint texture, GLint level) { D(bug("nfosmesa: glFramebufferTextureARB(%s, %s, %u, %d)", gl_enum_name(target), gl_enum_name(attachment), texture, level)); fn.glFramebufferTextureARB(target, attachment, texture, level); } void OSMesaDriver::nfglFramebufferTextureEXT(GLenum target, GLenum attachment, GLuint texture, GLint level) { D(bug("nfosmesa: glFramebufferTextureEXT(%s, %s, %u, %d)", gl_enum_name(target), gl_enum_name(attachment), texture, level)); fn.glFramebufferTextureEXT(target, attachment, texture, level); } void OSMesaDriver::nfglFramebufferTextureFaceARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face) { D(bug("nfosmesa: glFramebufferTextureFaceARB(%s, %s, %u, %d, %s)", gl_enum_name(target), gl_enum_name(attachment), texture, level, gl_enum_name(face))); fn.glFramebufferTextureFaceARB(target, attachment, texture, level, face); } void OSMesaDriver::nfglFramebufferTextureFaceEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face) { D(bug("nfosmesa: glFramebufferTextureFaceEXT(%s, %s, %u, %d, %s)", gl_enum_name(target), gl_enum_name(attachment), texture, level, gl_enum_name(face))); fn.glFramebufferTextureFaceEXT(target, attachment, texture, level, face); } void OSMesaDriver::nfglFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) { D(bug("nfosmesa: glFramebufferTextureLayer(%s, %s, %u, %d, %d)", gl_enum_name(target), gl_enum_name(attachment), texture, level, layer)); fn.glFramebufferTextureLayer(target, attachment, texture, level, layer); } void OSMesaDriver::nfglFramebufferTextureLayerARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) { D(bug("nfosmesa: glFramebufferTextureLayerARB(%s, %s, %u, %d, %d)", gl_enum_name(target), gl_enum_name(attachment), texture, level, layer)); fn.glFramebufferTextureLayerARB(target, attachment, texture, level, layer); } void OSMesaDriver::nfglFramebufferTextureLayerEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) { D(bug("nfosmesa: glFramebufferTextureLayerEXT(%s, %s, %u, %d, %d)", gl_enum_name(target), gl_enum_name(attachment), texture, level, layer)); fn.glFramebufferTextureLayerEXT(target, attachment, texture, level, layer); } void OSMesaDriver::nfglFramebufferTextureMultiviewOVR(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews) { D(bug("nfosmesa: glFramebufferTextureMultiviewOVR(%s, %s, %u, %d, %d, %d)", gl_enum_name(target), gl_enum_name(attachment), texture, level, baseViewIndex, numViews)); fn.glFramebufferTextureMultiviewOVR(target, attachment, texture, level, baseViewIndex, numViews); } void OSMesaDriver::nfglFreeObjectBufferATI(GLuint buffer) { D(bug("nfosmesa: glFreeObjectBufferATI(%u)", buffer)); FN_GLFREEOBJECTBUFFERATI(buffer); } void OSMesaDriver::nfglFrontFace(GLenum mode) { D(bug("nfosmesa: glFrontFace(%s)", gl_enum_name(mode))); fn.glFrontFace(mode); } void OSMesaDriver::nfglFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { D(bug("nfosmesa: glFrustum(%f, %f, %f, %f, %f, %f)", left, right, bottom, top, zNear, zFar)); fn.glFrustum(left, right, bottom, top, zNear, zFar); } void OSMesaDriver::nfglFrustumfOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) { D(bug("nfosmesa: glFrustumfOES(%f, %f, %f, %f, %f, %f)", l, r, b, t, n, f)); fn.glFrustumfOES(l, r, b, t, n, f); } void OSMesaDriver::nfglFrustumxOES(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f) { D(bug("nfosmesa: glFrustumxOES(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x)", l, r, b, t, n, f)); fn.glFrustumxOES(l, r, b, t, n, f); } GLuint OSMesaDriver::nfglGenAsyncMarkersSGIX(GLsizei range) { D(bug("nfosmesa: glGenAsyncMarkersSGIX(%d)", range)); GLuint __ret = fn.glGenAsyncMarkersSGIX(range); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenBuffers(GLsizei n, memptr buffers) #else void OSMesaDriver::nfglGenBuffers(GLsizei n, GLuint *buffers) #endif { D(bug("nfosmesa: glGenBuffers(%d, " PRI_PTR ")", n, AtariOffset(buffers))); FN_GLGENBUFFERS(n, buffers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenBuffersARB(GLsizei n, memptr buffers) #else void OSMesaDriver::nfglGenBuffersARB(GLsizei n, GLuint *buffers) #endif { D(bug("nfosmesa: glGenBuffersARB(%d, " PRI_PTR ")", n, AtariOffset(buffers))); FN_GLGENBUFFERSARB(n, buffers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenFencesAPPLE(GLsizei n, memptr fences) #else void OSMesaDriver::nfglGenFencesAPPLE(GLsizei n, GLuint *fences) #endif { D(bug("nfosmesa: glGenFencesAPPLE(%d, " PRI_PTR ")", n, AtariOffset(fences))); #if NFOSMESA_NEED_INT_CONV GLint const __fences_size = MAX(n, 0); GLuint __fences_tmp[__fences_size]; fn.glGenFencesAPPLE(n, __fences_tmp); Host2AtariIntArray(__fences_size, __fences_tmp, fences); #else fn.glGenFencesAPPLE(n, HostAddr(fences, GLuint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenFencesNV(GLsizei n, memptr fences) #else void OSMesaDriver::nfglGenFencesNV(GLsizei n, GLuint *fences) #endif { D(bug("nfosmesa: glGenFencesNV(%d, " PRI_PTR ")", n, AtariOffset(fences))); #if NFOSMESA_NEED_INT_CONV GLint const __fences_size = MAX(n, 0); GLuint __fences_tmp[__fences_size]; fn.glGenFencesNV(n, __fences_tmp); Host2AtariIntArray(__fences_size, __fences_tmp, fences); #else fn.glGenFencesNV(n, HostAddr(fences, GLuint *)); #endif } GLuint OSMesaDriver::nfglGenFragmentShadersATI(GLuint range) { D(bug("nfosmesa: glGenFragmentShadersATI(%u)", range)); GLuint __ret = fn.glGenFragmentShadersATI(range); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenFramebuffers(GLsizei n, memptr framebuffers) #else void OSMesaDriver::nfglGenFramebuffers(GLsizei n, GLuint *framebuffers) #endif { D(bug("nfosmesa: glGenFramebuffers(%d, " PRI_PTR ")", n, AtariOffset(framebuffers))); FN_GLGENFRAMEBUFFERS(n, framebuffers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenFramebuffersEXT(GLsizei n, memptr framebuffers) #else void OSMesaDriver::nfglGenFramebuffersEXT(GLsizei n, GLuint *framebuffers) #endif { D(bug("nfosmesa: glGenFramebuffersEXT(%d, " PRI_PTR ")", n, AtariOffset(framebuffers))); FN_GLGENFRAMEBUFFERSEXT(n, framebuffers); } GLuint OSMesaDriver::nfglGenLists(GLsizei range) { D(bug("nfosmesa: glGenLists(%d)", range)); GLuint __ret = fn.glGenLists(range); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenNamesAMD(GLenum identifier, GLuint num, memptr names) #else void OSMesaDriver::nfglGenNamesAMD(GLenum identifier, GLuint num, GLuint *names) #endif { D(bug("nfosmesa: glGenNamesAMD(%s, %u, " PRI_PTR ")", gl_enum_name(identifier), num, AtariOffset(names))); FN_GLGENNAMESAMD(identifier, num, names); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenOcclusionQueriesNV(GLsizei n, memptr ids) #else void OSMesaDriver::nfglGenOcclusionQueriesNV(GLsizei n, GLuint *ids) #endif { D(bug("nfosmesa: glGenOcclusionQueriesNV(%d, " PRI_PTR ")", n, AtariOffset(ids))); FN_GLGENOCCLUSIONQUERIESNV(n, ids); } GLuint OSMesaDriver::nfglGenPathsNV(GLsizei range) { D(bug("nfosmesa: glGenPathsNV(%d)", range)); GLuint __ret = fn.glGenPathsNV(range); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenPerfMonitorsAMD(GLsizei n, memptr monitors) #else void OSMesaDriver::nfglGenPerfMonitorsAMD(GLsizei n, GLuint *monitors) #endif { D(bug("nfosmesa: glGenPerfMonitorsAMD(%d, " PRI_PTR ")", n, AtariOffset(monitors))); FN_GLGENPERFMONITORSAMD(n, monitors); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenProgramPipelines(GLsizei n, memptr pipelines) #else void OSMesaDriver::nfglGenProgramPipelines(GLsizei n, GLuint *pipelines) #endif { D(bug("nfosmesa: glGenProgramPipelines(%d, " PRI_PTR ")", n, AtariOffset(pipelines))); FN_GLGENPROGRAMPIPELINES(n, pipelines); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenProgramsARB(GLsizei n, memptr programs) #else void OSMesaDriver::nfglGenProgramsARB(GLsizei n, GLuint *programs) #endif { D(bug("nfosmesa: glGenProgramsARB(%d, " PRI_PTR ")", n, AtariOffset(programs))); FN_GLGENPROGRAMSARB(n, programs); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenProgramsNV(GLsizei n, memptr programs) #else void OSMesaDriver::nfglGenProgramsNV(GLsizei n, GLuint *programs) #endif { D(bug("nfosmesa: glGenProgramsNV(%d, " PRI_PTR ")", n, AtariOffset(programs))); FN_GLGENPROGRAMSNV(n, programs); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenQueries(GLsizei n, memptr ids) #else void OSMesaDriver::nfglGenQueries(GLsizei n, GLuint *ids) #endif { D(bug("nfosmesa: glGenQueries(%d, " PRI_PTR ")", n, AtariOffset(ids))); FN_GLGENQUERIES(n, ids); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenQueriesARB(GLsizei n, memptr ids) #else void OSMesaDriver::nfglGenQueriesARB(GLsizei n, GLuint *ids) #endif { D(bug("nfosmesa: glGenQueriesARB(%d, " PRI_PTR ")", n, AtariOffset(ids))); FN_GLGENQUERIESARB(n, ids); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenQueryResourceTagNV(GLsizei n, memptr tagIds) #else void OSMesaDriver::nfglGenQueryResourceTagNV(GLsizei n, GLint *tagIds) #endif { D(bug("nfosmesa: glGenQueryResourceTagNV(%d, " PRI_PTR ")", n, AtariOffset(tagIds))); #if NFOSMESA_NEED_INT_CONV GLint const __tagIds_size = MAX(n, 0); GLint __tagIds_tmp[__tagIds_size]; fn.glGenQueryResourceTagNV(n, __tagIds_tmp); Host2AtariIntArray(__tagIds_size, __tagIds_tmp, tagIds); #else fn.glGenQueryResourceTagNV(n, HostAddr(tagIds, GLint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenRenderbuffers(GLsizei n, memptr renderbuffers) #else void OSMesaDriver::nfglGenRenderbuffers(GLsizei n, GLuint *renderbuffers) #endif { D(bug("nfosmesa: glGenRenderbuffers(%d, " PRI_PTR ")", n, AtariOffset(renderbuffers))); FN_GLGENRENDERBUFFERS(n, renderbuffers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenRenderbuffersEXT(GLsizei n, memptr renderbuffers) #else void OSMesaDriver::nfglGenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers) #endif { D(bug("nfosmesa: glGenRenderbuffersEXT(%d, " PRI_PTR ")", n, AtariOffset(renderbuffers))); FN_GLGENRENDERBUFFERSEXT(n, renderbuffers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenSamplers(GLsizei count, memptr samplers) #else void OSMesaDriver::nfglGenSamplers(GLsizei count, GLuint *samplers) #endif { D(bug("nfosmesa: glGenSamplers(%d, " PRI_PTR ")", count, AtariOffset(samplers))); FN_GLGENSAMPLERS(count, samplers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenSemaphoresEXT(GLsizei n, memptr semaphores) #else void OSMesaDriver::nfglGenSemaphoresEXT(GLsizei n, GLuint *semaphores) #endif { D(bug("nfosmesa: glGenSemaphoresEXT(%d, " PRI_PTR ")", n, AtariOffset(semaphores))); #if NFOSMESA_NEED_INT_CONV GLint const __semaphores_size = MAX(n, 0); GLuint __semaphores_tmp[__semaphores_size]; fn.glGenSemaphoresEXT(n, __semaphores_tmp); Host2AtariIntArray(__semaphores_size, __semaphores_tmp, semaphores); #else fn.glGenSemaphoresEXT(n, HostAddr(semaphores, GLuint *)); #endif } GLuint OSMesaDriver::nfglGenSymbolsEXT(GLenum datatype, GLenum storagetype, GLenum range, GLuint components) { D(bug("nfosmesa: glGenSymbolsEXT(%s, %s, %s, %u)", gl_enum_name(datatype), gl_enum_name(storagetype), gl_enum_name(range), components)); GLuint __ret = fn.glGenSymbolsEXT(datatype, storagetype, range, components); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenTextures(GLsizei n, memptr textures) #else void OSMesaDriver::nfglGenTextures(GLsizei n, GLuint *textures) #endif { D(bug("nfosmesa: glGenTextures(%d, " PRI_PTR ")", n, AtariOffset(textures))); FN_GLGENTEXTURES(n, textures); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenTexturesEXT(GLsizei n, memptr textures) #else void OSMesaDriver::nfglGenTexturesEXT(GLsizei n, GLuint *textures) #endif { D(bug("nfosmesa: glGenTexturesEXT(%d, " PRI_PTR ")", n, AtariOffset(textures))); FN_GLGENTEXTURESEXT(n, textures); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenTransformFeedbacks(GLsizei n, memptr ids) #else void OSMesaDriver::nfglGenTransformFeedbacks(GLsizei n, GLuint *ids) #endif { D(bug("nfosmesa: glGenTransformFeedbacks(%d, " PRI_PTR ")", n, AtariOffset(ids))); FN_GLGENTRANSFORMFEEDBACKS(n, ids); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenTransformFeedbacksNV(GLsizei n, memptr ids) #else void OSMesaDriver::nfglGenTransformFeedbacksNV(GLsizei n, GLuint *ids) #endif { D(bug("nfosmesa: glGenTransformFeedbacksNV(%d, " PRI_PTR ")", n, AtariOffset(ids))); FN_GLGENTRANSFORMFEEDBACKSNV(n, ids); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenVertexArrays(GLsizei n, memptr arrays) #else void OSMesaDriver::nfglGenVertexArrays(GLsizei n, GLuint *arrays) #endif { D(bug("nfosmesa: glGenVertexArrays(%d, " PRI_PTR ")", n, AtariOffset(arrays))); FN_GLGENVERTEXARRAYS(n, arrays); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGenVertexArraysAPPLE(GLsizei n, memptr arrays) #else void OSMesaDriver::nfglGenVertexArraysAPPLE(GLsizei n, GLuint *arrays) #endif { D(bug("nfosmesa: glGenVertexArraysAPPLE(%d, " PRI_PTR ")", n, AtariOffset(arrays))); FN_GLGENVERTEXARRAYSAPPLE(n, arrays); } GLuint OSMesaDriver::nfglGenVertexShadersEXT(GLuint range) { D(bug("nfosmesa: glGenVertexShadersEXT(%u)", range)); GLuint __ret = fn.glGenVertexShadersEXT(range); return __ret; } void OSMesaDriver::nfglGenerateMipmap(GLenum target) { D(bug("nfosmesa: glGenerateMipmap(%s)", gl_enum_name(target))); fn.glGenerateMipmap(target); } void OSMesaDriver::nfglGenerateMipmapEXT(GLenum target) { D(bug("nfosmesa: glGenerateMipmapEXT(%s)", gl_enum_name(target))); fn.glGenerateMipmapEXT(target); } void OSMesaDriver::nfglGenerateMultiTexMipmapEXT(GLenum texunit, GLenum target) { D(bug("nfosmesa: glGenerateMultiTexMipmapEXT(%s, %s)", gl_enum_name(texunit), gl_enum_name(target))); fn.glGenerateMultiTexMipmapEXT(texunit, target); } void OSMesaDriver::nfglGenerateTextureMipmap(GLuint texture) { D(bug("nfosmesa: glGenerateTextureMipmap(%u)", texture)); fn.glGenerateTextureMipmap(texture); } void OSMesaDriver::nfglGenerateTextureMipmapEXT(GLuint texture, GLenum target) { D(bug("nfosmesa: glGenerateTextureMipmapEXT(%u, %s)", texture, gl_enum_name(target))); fn.glGenerateTextureMipmapEXT(texture, target); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetActiveAtomicCounterBufferiv(%u, %u, %s, " PRI_PTR ")", program, bufferIndex, gl_enum_name(pname), AtariOffset(params))); FN_GLGETACTIVEATOMICCOUNTERBUFFERIV(program, bufferIndex, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, memptr length, memptr size, memptr type, memptr name) #else void OSMesaDriver::nfglGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) #endif { D(bug("nfosmesa: glGetActiveAttrib(%u, %u, %d, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", program, index, bufSize, AtariOffset(length), AtariOffset(size), AtariOffset(type), AtariOffset(name))); FN_GLGETACTIVEATTRIB(program, index, bufSize, length, size, type, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetActiveAttribARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, memptr length, memptr size, memptr type, memptr name) #else void OSMesaDriver::nfglGetActiveAttribARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name) #endif { D(bug("nfosmesa: glGetActiveAttribARB(%u, %u, %d, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", (unsigned int)(uintptr_t)programObj, index, maxLength, AtariOffset(length), AtariOffset(size), AtariOffset(type), AtariOffset(name))); FN_GLGETACTIVEATTRIBARB(programObj, index, maxLength, length, size, type, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, memptr length, memptr name) #else void OSMesaDriver::nfglGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) #endif { D(bug("nfosmesa: glGetActiveSubroutineName(%u, %s, %u, %d, " PRI_PTR ", " PRI_PTR ")", program, gl_enum_name(shadertype), index, bufsize, AtariOffset(length), AtariOffset(name))); FN_GLGETACTIVESUBROUTINENAME(program, shadertype, index, bufsize, length, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, memptr length, memptr name) #else void OSMesaDriver::nfglGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) #endif { D(bug("nfosmesa: glGetActiveSubroutineUniformName(%u, %s, %u, %d, " PRI_PTR ", " PRI_PTR ")", program, gl_enum_name(shadertype), index, bufsize, AtariOffset(length), AtariOffset(name))); FN_GLGETACTIVESUBROUTINEUNIFORMNAME(program, shadertype, index, bufsize, length, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, memptr values) #else void OSMesaDriver::nfglGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) #endif { D(bug("nfosmesa: glGetActiveSubroutineUniformiv(%u, %s, %u, %s, " PRI_PTR ")", program, gl_enum_name(shadertype), index, gl_enum_name(pname), AtariOffset(values))); FN_GLGETACTIVESUBROUTINEUNIFORMIV(program, shadertype, index, pname, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, memptr length, memptr size, memptr type, memptr name) #else void OSMesaDriver::nfglGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) #endif { D(bug("nfosmesa: glGetActiveUniform(%u, %u, %d, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", program, index, bufSize, AtariOffset(length), AtariOffset(size), AtariOffset(type), AtariOffset(name))); FN_GLGETACTIVEUNIFORM(program, index, bufSize, length, size, type, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetActiveUniformARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, memptr length, memptr size, memptr type, memptr name) #else void OSMesaDriver::nfglGetActiveUniformARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name) #endif { D(bug("nfosmesa: glGetActiveUniformARB(%u, %u, %d, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", (unsigned int)(uintptr_t)programObj, index, maxLength, AtariOffset(length), AtariOffset(size), AtariOffset(type), AtariOffset(name))); #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV GLint const __length_size = 1; GLsizei __length_tmp[__length_size] = { 0 }; GLint const __size_size = 1; GLint __size_tmp[__size_size] = { 0 }; GLint const __type_size = 1; GLenum __type_tmp[__type_size] = { 0 }; GLint const __name_size = MAX(maxLength, 0); GLcharARB __name_tmp[__name_size]; fn.glGetActiveUniformARB(programObj, index, maxLength, __length_tmp, __size_tmp, __type_tmp, __name_tmp); Host2AtariIntArray(__length_size, __length_tmp, length); Host2AtariIntArray(__size_size, __size_tmp, size); Host2AtariIntArray(__type_size, __type_tmp, type); Host2AtariByteArray(MIN(__length_tmp[0] + 1, maxLength), __name_tmp, name); #else fn.glGetActiveUniformARB(programObj, index, maxLength, HostAddr(length, GLsizei *), HostAddr(size, GLint *), HostAddr(type, GLenum *), HostAddr(name, GLcharARB *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG GLuint OSMesaDriver::nfglGetActiveUniformBlockIndex(GLuint program, memptr uniformBlockName) #else GLuint OSMesaDriver::nfglGetActiveUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) #endif { D(bug("nfosmesa: glGetActiveUniformBlockIndex(%u, " PRI_PTR ")", program, AtariOffset(uniformBlockName))); FN_GLGETACTIVEUNIFORMBLOCKINDEX(program, uniformBlockName); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, memptr length, memptr uniformBlockName) #else void OSMesaDriver::nfglGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) #endif { D(bug("nfosmesa: glGetActiveUniformBlockName(%u, %u, %d, " PRI_PTR ", " PRI_PTR ")", program, uniformBlockIndex, bufSize, AtariOffset(length), AtariOffset(uniformBlockName))); FN_GLGETACTIVEUNIFORMBLOCKNAME(program, uniformBlockIndex, bufSize, length, uniformBlockName); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetActiveUniformBlockiv(%u, %u, %s, " PRI_PTR ")", program, uniformBlockIndex, gl_enum_name(pname), AtariOffset(params))); FN_GLGETACTIVEUNIFORMBLOCKIV(program, uniformBlockIndex, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, memptr length, memptr uniformName) #else void OSMesaDriver::nfglGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) #endif { D(bug("nfosmesa: glGetActiveUniformName(%u, %u, %d, " PRI_PTR ", " PRI_PTR ")", program, uniformIndex, bufSize, AtariOffset(length), AtariOffset(uniformName))); FN_GLGETACTIVEUNIFORMNAME(program, uniformIndex, bufSize, length, uniformName); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetActiveUniformsiv(GLuint program, GLsizei uniformCount, memptr uniformIndices, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetActiveUniformsiv(%u, %d, " PRI_PTR ", %s, " PRI_PTR ")", program, uniformCount, AtariOffset(uniformIndices), gl_enum_name(pname), AtariOffset(params))); FN_GLGETACTIVEUNIFORMSIV(program, uniformCount, uniformIndices, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetActiveVaryingNV(GLuint program, GLuint index, GLsizei bufSize, memptr length, memptr size, memptr type, memptr name) #else void OSMesaDriver::nfglGetActiveVaryingNV(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) #endif { D(bug("nfosmesa: glGetActiveVaryingNV(%u, %u, %d, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", program, index, bufSize, AtariOffset(length), AtariOffset(size), AtariOffset(type), AtariOffset(name))); FN_GLGETACTIVEVARYINGNV(program, index, bufSize, length, size, type, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetArrayObjectfvATI(GLenum array, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetArrayObjectfvATI(GLenum array, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetArrayObjectfvATI(%s, %s, " PRI_PTR ")", gl_enum_name(array), gl_enum_name(pname), AtariOffset(params))); FN_GLGETARRAYOBJECTFVATI(array, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetArrayObjectivATI(GLenum array, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetArrayObjectivATI(GLenum array, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetArrayObjectivATI(%s, %s, " PRI_PTR ")", gl_enum_name(array), gl_enum_name(pname), AtariOffset(params))); FN_GLGETARRAYOBJECTIVATI(array, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetAttachedObjectsARB(GLhandleARB containerObj, GLsizei maxCount, memptr count, memptr obj) #else void OSMesaDriver::nfglGetAttachedObjectsARB(GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj) #endif { D(bug("nfosmesa: glGetAttachedObjectsARB(%u, %d, " PRI_PTR ", " PRI_PTR ")", (unsigned int)(uintptr_t)containerObj, maxCount, AtariOffset(count), AtariOffset(obj))); #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_INT_CONV || defined(__APPLE__) GLint const __count_size = 1; GLsizei __count_tmp[__count_size] = { 0 }; GLint const __obj_size = MAX(maxCount, 0); GLhandleARB __obj_tmp[__obj_size]; fn.glGetAttachedObjectsARB(containerObj, maxCount, __count_tmp, __obj_tmp); Host2AtariIntArray(__count_size, __count_tmp, count); Host2AtariHandleARB(MIN(__count_tmp[0], maxCount), __obj_tmp, obj); #else fn.glGetAttachedObjectsARB(containerObj, maxCount, HostAddr(count, GLsizei *), HostAddr(obj, GLhandleARB *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetAttachedShaders(GLuint program, GLsizei maxCount, memptr count, memptr shaders) #else void OSMesaDriver::nfglGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders) #endif { D(bug("nfosmesa: glGetAttachedShaders(%u, %d, " PRI_PTR ", " PRI_PTR ")", program, maxCount, AtariOffset(count), AtariOffset(shaders))); FN_GLGETATTACHEDSHADERS(program, maxCount, count, shaders); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglGetAttribLocation(GLuint program, memptr name) #else GLint OSMesaDriver::nfglGetAttribLocation(GLuint program, const GLchar *name) #endif { D(bug("nfosmesa: glGetAttribLocation(%u, " PRI_PTR ")", program, AtariOffset(name))); FN_GLGETATTRIBLOCATION(program, name); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglGetAttribLocationARB(GLhandleARB programObj, memptr name) #else GLint OSMesaDriver::nfglGetAttribLocationARB(GLhandleARB programObj, const GLcharARB *name) #endif { D(bug("nfosmesa: glGetAttribLocationARB(%u, " PRI_PTR ")", (unsigned int)(uintptr_t)programObj, AtariOffset(name))); FN_GLGETATTRIBLOCATIONARB(programObj, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetBooleanIndexedvEXT(GLenum target, GLuint index, memptr data) #else void OSMesaDriver::nfglGetBooleanIndexedvEXT(GLenum target, GLuint index, GLboolean *data) #endif { D(bug("nfosmesa: glGetBooleanIndexedvEXT(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(data))); FN_GLGETBOOLEANINDEXEDVEXT(target, index, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetBooleani_v(GLenum target, GLuint index, memptr data) #else void OSMesaDriver::nfglGetBooleani_v(GLenum target, GLuint index, GLboolean *data) #endif { D(bug("nfosmesa: glGetBooleani_v(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(data))); FN_GLGETBOOLEANI_V(target, index, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetBooleanv(GLenum pname, memptr params) #else void OSMesaDriver::nfglGetBooleanv(GLenum pname, GLboolean *params) #endif { D(bug("nfosmesa: glGetBooleanv(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLGETBOOLEANV(pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetBufferParameteri64v(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) #endif { D(bug("nfosmesa: glGetBufferParameteri64v(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETBUFFERPARAMETERI64V(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetBufferParameteriv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetBufferParameteriv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETBUFFERPARAMETERIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetBufferParameterivARB(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetBufferParameterivARB(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetBufferParameterivARB(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETBUFFERPARAMETERIVARB(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetBufferParameterui64vNV(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetBufferParameterui64vNV(GLenum target, GLenum pname, GLuint64EXT *params) #endif { D(bug("nfosmesa: glGetBufferParameterui64vNV(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETBUFFERPARAMETERUI64VNV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetBufferPointerv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetBufferPointerv(GLenum target, GLenum pname, void * *params) #endif { D(bug("nfosmesa: glGetBufferPointerv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETBUFFERPOINTERV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetBufferPointervARB(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetBufferPointervARB(GLenum target, GLenum pname, void * *params) #endif { D(bug("nfosmesa: glGetBufferPointervARB(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETBUFFERPOINTERVARB(target, pname, params); } #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, memptr data) #else void OSMesaDriver::nfglGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void *data) #endif { D(bug("nfosmesa: glGetBufferSubData(%s, %" PRI_IPTR ", %" PRI_IPTR ", " PRI_PTR ")", gl_enum_name(target), offset, size, AtariOffset(data))); FN_GLGETBUFFERSUBDATA(target, offset, size, data); } #endif #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, memptr data) #else void OSMesaDriver::nfglGetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data) #endif { D(bug("nfosmesa: glGetBufferSubDataARB(%s, %" PRI_IPTR ", %" PRI_IPTR ", " PRI_PTR ")", gl_enum_name(target), offset, size, AtariOffset(data))); FN_GLGETBUFFERSUBDATAARB(target, offset, size, data); } #endif #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetClipPlane(GLenum plane, memptr equation) #else void OSMesaDriver::nfglGetClipPlane(GLenum plane, GLdouble *equation) #endif { D(bug("nfosmesa: glGetClipPlane(%s, " PRI_PTR ")", gl_enum_name(plane), AtariOffset(equation))); FN_GLGETCLIPPLANE(plane, equation); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetClipPlanefOES(GLenum plane, memptr equation) #else void OSMesaDriver::nfglGetClipPlanefOES(GLenum plane, GLfloat *equation) #endif { D(bug("nfosmesa: glGetClipPlanefOES(%s, " PRI_PTR ")", gl_enum_name(plane), AtariOffset(equation))); FN_GLGETCLIPPLANEFOES(plane, equation); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetClipPlanexOES(GLenum plane, memptr equation) #else void OSMesaDriver::nfglGetClipPlanexOES(GLenum plane, GLfixed *equation) #endif { D(bug("nfosmesa: glGetClipPlanexOES(%s, " PRI_PTR ")", gl_enum_name(plane), AtariOffset(equation))); FN_GLGETCLIPPLANEXOES(plane, equation); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetColorTable(GLenum target, GLenum format, GLenum type, memptr table) #else void OSMesaDriver::nfglGetColorTable(GLenum target, GLenum format, GLenum type, void *table) #endif { D(bug("nfosmesa: glGetColorTable(%s, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(format), gl_enum_name(type), AtariOffset(table))); FN_GLGETCOLORTABLE(target, format, type, table); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetColorTableEXT(GLenum target, GLenum format, GLenum type, memptr data) #else void OSMesaDriver::nfglGetColorTableEXT(GLenum target, GLenum format, GLenum type, void *data) #endif { D(bug("nfosmesa: glGetColorTableEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(format), gl_enum_name(type), AtariOffset(data))); FN_GLGETCOLORTABLEEXT(target, format, type, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetColorTableParameterfv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetColorTableParameterfv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETCOLORTABLEPARAMETERFV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetColorTableParameterfvEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetColorTableParameterfvEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETCOLORTABLEPARAMETERFVEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetColorTableParameterfvSGI(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetColorTableParameterfvSGI(GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetColorTableParameterfvSGI(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETCOLORTABLEPARAMETERFVSGI(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetColorTableParameteriv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetColorTableParameteriv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETCOLORTABLEPARAMETERIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetColorTableParameterivEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetColorTableParameterivEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETCOLORTABLEPARAMETERIVEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetColorTableParameterivSGI(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetColorTableParameterivSGI(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetColorTableParameterivSGI(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETCOLORTABLEPARAMETERIVSGI(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetColorTableSGI(GLenum target, GLenum format, GLenum type, memptr table) #else void OSMesaDriver::nfglGetColorTableSGI(GLenum target, GLenum format, GLenum type, void *table) #endif { D(bug("nfosmesa: glGetColorTableSGI(%s, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(format), gl_enum_name(type), AtariOffset(table))); FN_GLGETCOLORTABLESGI(target, format, type, table); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetCombinerInputParameterfvNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetCombinerInputParameterfvNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetCombinerInputParameterfvNV(%s, %s, %s, %s, " PRI_PTR ")", gl_enum_name(stage), gl_enum_name(portion), gl_enum_name(variable), gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __params_size = nfglGetNumParams(pname); GLfloat __params_tmp[__params_size]; fn.glGetCombinerInputParameterfvNV(stage, portion, variable, pname, __params_tmp); Host2AtariFloatArray(__params_size, __params_tmp, params); #else fn.glGetCombinerInputParameterfvNV(stage, portion, variable, pname, HostAddr(params, GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetCombinerInputParameterivNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetCombinerInputParameterivNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetCombinerInputParameterivNV(%s, %s, %s, %s, " PRI_PTR ")", gl_enum_name(stage), gl_enum_name(portion), gl_enum_name(variable), gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = nfglGetNumParams(pname); GLint __params_tmp[__params_size]; fn.glGetCombinerInputParameterivNV(stage, portion, variable, pname, __params_tmp); Host2AtariIntArray(__params_size, __params_tmp, params); #else fn.glGetCombinerInputParameterivNV(stage, portion, variable, pname, HostAddr(params, GLint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetCombinerOutputParameterfvNV(GLenum stage, GLenum portion, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetCombinerOutputParameterfvNV(GLenum stage, GLenum portion, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetCombinerOutputParameterfvNV(%s, %s, %s, " PRI_PTR ")", gl_enum_name(stage), gl_enum_name(portion), gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __params_size = nfglGetNumParams(pname); GLfloat __params_tmp[__params_size]; fn.glGetCombinerOutputParameterfvNV(stage, portion, pname, __params_tmp); Host2AtariFloatArray(__params_size, __params_tmp, params); #else fn.glGetCombinerOutputParameterfvNV(stage, portion, pname, HostAddr(params, GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetCombinerOutputParameterivNV(GLenum stage, GLenum portion, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetCombinerOutputParameterivNV(GLenum stage, GLenum portion, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetCombinerOutputParameterivNV(%s, %s, %s, " PRI_PTR ")", gl_enum_name(stage), gl_enum_name(portion), gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = nfglGetNumParams(pname); GLint __params_tmp[__params_size]; fn.glGetCombinerOutputParameterivNV(stage, portion, pname, __params_tmp); Host2AtariIntArray(__params_size, __params_tmp, params); #else fn.glGetCombinerOutputParameterivNV(stage, portion, pname, HostAddr(params, GLint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetCombinerStageParameterfvNV(GLenum stage, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetCombinerStageParameterfvNV(GLenum stage, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetCombinerStageParameterfvNV(%s, %s, " PRI_PTR ")", gl_enum_name(stage), gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __params_size = nfglGetNumParams(pname); GLfloat __params_tmp[__params_size]; fn.glGetCombinerStageParameterfvNV(stage, pname, __params_tmp); Host2AtariFloatArray(__params_size, __params_tmp, params); #else fn.glGetCombinerStageParameterfvNV(stage, pname, HostAddr(params, GLfloat *)); #endif } GLuint OSMesaDriver::nfglGetCommandHeaderNV(GLenum tokenID, GLuint size) { D(bug("nfosmesa: glGetCommandHeaderNV(%s, %u)", gl_enum_name(tokenID), size)); GLuint __ret = fn.glGetCommandHeaderNV(tokenID, size); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetCompressedMultiTexImageEXT(GLenum texunit, GLenum target, GLint lod, memptr img) #else void OSMesaDriver::nfglGetCompressedMultiTexImageEXT(GLenum texunit, GLenum target, GLint lod, void *img) #endif { D(bug("nfosmesa: glGetCompressedMultiTexImageEXT(%s, %s, %d, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), lod, AtariOffset(img))); FN_GLGETCOMPRESSEDMULTITEXIMAGEEXT(texunit, target, lod, img); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetCompressedTexImage(GLenum target, GLint level, memptr img) #else void OSMesaDriver::nfglGetCompressedTexImage(GLenum target, GLint level, void *img) #endif { D(bug("nfosmesa: glGetCompressedTexImage(%s, %d, " PRI_PTR ")", gl_enum_name(target), level, AtariOffset(img))); FN_GLGETCOMPRESSEDTEXIMAGE(target, level, img); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetCompressedTexImageARB(GLenum target, GLint level, memptr img) #else void OSMesaDriver::nfglGetCompressedTexImageARB(GLenum target, GLint level, void *img) #endif { D(bug("nfosmesa: glGetCompressedTexImageARB(%s, %d, " PRI_PTR ")", gl_enum_name(target), level, AtariOffset(img))); FN_GLGETCOMPRESSEDTEXIMAGEARB(target, level, img); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetCompressedTextureImage(GLuint texture, GLint level, GLsizei bufSize, memptr pixels) #else void OSMesaDriver::nfglGetCompressedTextureImage(GLuint texture, GLint level, GLsizei bufSize, void *pixels) #endif { D(bug("nfosmesa: glGetCompressedTextureImage(%u, %d, %d, " PRI_PTR ")", texture, level, bufSize, AtariOffset(pixels))); FN_GLGETCOMPRESSEDTEXTUREIMAGE(texture, level, bufSize, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetCompressedTextureImageEXT(GLuint texture, GLenum target, GLint lod, memptr img) #else void OSMesaDriver::nfglGetCompressedTextureImageEXT(GLuint texture, GLenum target, GLint lod, void *img) #endif { D(bug("nfosmesa: glGetCompressedTextureImageEXT(%u, %s, %d, " PRI_PTR ")", texture, gl_enum_name(target), lod, AtariOffset(img))); FN_GLGETCOMPRESSEDTEXTUREIMAGEEXT(texture, target, lod, img); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetCompressedTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, memptr pixels) #else void OSMesaDriver::nfglGetCompressedTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels) #endif { D(bug("nfosmesa: glGetCompressedTextureSubImage(%u, %d, %d, %d, %d, %d, %d, %d, %d, " PRI_PTR ")", texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, AtariOffset(pixels))); FN_GLGETCOMPRESSEDTEXTURESUBIMAGE(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetConvolutionFilter(GLenum target, GLenum format, GLenum type, memptr image) #else void OSMesaDriver::nfglGetConvolutionFilter(GLenum target, GLenum format, GLenum type, void *image) #endif { D(bug("nfosmesa: glGetConvolutionFilter(%s, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(format), gl_enum_name(type), AtariOffset(image))); FN_GLGETCONVOLUTIONFILTER(target, format, type, image); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetConvolutionFilterEXT(GLenum target, GLenum format, GLenum type, memptr image) #else void OSMesaDriver::nfglGetConvolutionFilterEXT(GLenum target, GLenum format, GLenum type, void *image) #endif { D(bug("nfosmesa: glGetConvolutionFilterEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(format), gl_enum_name(type), AtariOffset(image))); FN_GLGETCONVOLUTIONFILTEREXT(target, format, type, image); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetConvolutionParameterfv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetConvolutionParameterfv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETCONVOLUTIONPARAMETERFV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetConvolutionParameterfvEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetConvolutionParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetConvolutionParameterfvEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETCONVOLUTIONPARAMETERFVEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetConvolutionParameteriv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetConvolutionParameteriv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETCONVOLUTIONPARAMETERIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetConvolutionParameterivEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetConvolutionParameterivEXT(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetConvolutionParameterivEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETCONVOLUTIONPARAMETERIVEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetConvolutionParameterxvOES(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetConvolutionParameterxvOES(GLenum target, GLenum pname, GLfixed *params) #endif { D(bug("nfosmesa: glGetConvolutionParameterxvOES(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETCONVOLUTIONPARAMETERXVOES(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetCoverageModulationTableNV(GLsizei bufsize, memptr v) #else void OSMesaDriver::nfglGetCoverageModulationTableNV(GLsizei bufsize, GLfloat *v) #endif { D(bug("nfosmesa: glGetCoverageModulationTableNV(%d, " PRI_PTR ")", bufsize, AtariOffset(v))); FN_GLGETCOVERAGEMODULATIONTABLENV(bufsize, v); } GLsizei OSMesaDriver::nfglGetDebugLogLengthMESA(GLhandleARB obj, GLenum logType, GLenum shaderType) { D(bug("nfosmesa: glGetDebugLogLengthMESA(%u, %s, %s)", (unsigned int)(uintptr_t)obj, gl_enum_name(logType), gl_enum_name(shaderType))); GLsizei __ret = fn.glGetDebugLogLengthMESA(obj, logType, shaderType); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetDebugLogMESA(GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength, memptr length, memptr debugLog) #else void OSMesaDriver::nfglGetDebugLogMESA(GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength, GLsizei *length, GLcharARB *debugLog) #endif { D(bug("nfosmesa: glGetDebugLogMESA(%u, %s, %s, %d, " PRI_PTR ", " PRI_PTR ")", (unsigned int)(uintptr_t)obj, gl_enum_name(logType), gl_enum_name(shaderType), maxLength, AtariOffset(length), AtariOffset(debugLog))); FN_GLGETDEBUGLOGMESA(obj, logType, shaderType, maxLength, length, debugLog); } #if NFOSMESA_POINTER_AS_MEMARG GLuint OSMesaDriver::nfglGetDebugMessageLog(GLuint count, GLsizei bufSize, memptr sources, memptr types, memptr ids, memptr severities, memptr lengths, memptr messageLog) #else GLuint OSMesaDriver::nfglGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog) #endif { D(bug("nfosmesa: glGetDebugMessageLog(%u, %d, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", count, bufSize, AtariOffset(sources), AtariOffset(types), AtariOffset(ids), AtariOffset(severities), AtariOffset(lengths), AtariOffset(messageLog))); FN_GLGETDEBUGMESSAGELOG(count, bufSize, sources, types, ids, severities, lengths, messageLog); } #if NFOSMESA_POINTER_AS_MEMARG GLuint OSMesaDriver::nfglGetDebugMessageLogAMD(GLuint count, GLsizei bufsize, memptr categories, memptr severities, memptr ids, memptr lengths, memptr message) #else GLuint OSMesaDriver::nfglGetDebugMessageLogAMD(GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message) #endif { D(bug("nfosmesa: glGetDebugMessageLogAMD(%u, %d, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", count, bufsize, AtariOffset(categories), AtariOffset(severities), AtariOffset(ids), AtariOffset(lengths), AtariOffset(message))); #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV GLint const __categories_size = MAX(count, 0); GLenum __categories_tmp[__categories_size]; GLint const __severities_size = MAX(count, 0); GLuint __severities_tmp[__severities_size]; GLint const __ids_size = MAX(count, 0); GLuint __ids_tmp[__ids_size]; GLint const __lengths_size = MAX(count, 0); GLsizei __lengths_tmp[__lengths_size]; GLint const __message_size = MAX(bufsize, 0); GLchar __message_tmp[__message_size]; GLuint __ret = fn.glGetDebugMessageLogAMD(count, bufsize, __categories_tmp, __severities_tmp, __ids_tmp, __lengths_tmp, __message_tmp); Host2AtariIntArray(MIN(__ret, count), __categories_tmp, categories); Host2AtariIntArray(MIN(__ret, count), __severities_tmp, severities); Host2AtariIntArray(MIN(__ret, count), __ids_tmp, ids); Host2AtariIntArray(MIN(__ret, count), __lengths_tmp, lengths); Host2AtariByteArray(__message_size, __message_tmp, message); #else GLuint __ret = fn.glGetDebugMessageLogAMD(count, bufsize, HostAddr(categories, GLenum *), HostAddr(severities, GLuint *), HostAddr(ids, GLuint *), HostAddr(lengths, GLsizei *), HostAddr(message, GLchar *)); #endif return __ret; } #if NFOSMESA_POINTER_AS_MEMARG GLuint OSMesaDriver::nfglGetDebugMessageLogARB(GLuint count, GLsizei bufSize, memptr sources, memptr types, memptr ids, memptr severities, memptr lengths, memptr messageLog) #else GLuint OSMesaDriver::nfglGetDebugMessageLogARB(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog) #endif { D(bug("nfosmesa: glGetDebugMessageLogARB(%u, %d, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", count, bufSize, AtariOffset(sources), AtariOffset(types), AtariOffset(ids), AtariOffset(severities), AtariOffset(lengths), AtariOffset(messageLog))); #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV GLint const __sources_size = MAX(count, 0); GLenum __sources_tmp[__sources_size]; GLint const __types_size = MAX(count, 0); GLenum __types_tmp[__types_size]; GLint const __ids_size = MAX(count, 0); GLuint __ids_tmp[__ids_size]; GLint const __severities_size = MAX(count, 0); GLenum __severities_tmp[__severities_size]; GLint const __lengths_size = MAX(count, 0); GLsizei __lengths_tmp[__lengths_size]; GLint const __messageLog_size = MAX(bufSize, 0); GLchar __messageLog_tmp[__messageLog_size]; GLuint __ret = fn.glGetDebugMessageLogARB(count, bufSize, __sources_tmp, __types_tmp, __ids_tmp, __severities_tmp, __lengths_tmp, __messageLog_tmp); Host2AtariIntArray(MIN(__ret, count), __sources_tmp, sources); Host2AtariIntArray(MIN(__ret, count), __types_tmp, types); Host2AtariIntArray(MIN(__ret, count), __ids_tmp, ids); Host2AtariIntArray(MIN(__ret, count), __severities_tmp, severities); Host2AtariIntArray(MIN(__ret, count), __lengths_tmp, lengths); Host2AtariByteArray(__messageLog_size, __messageLog_tmp, messageLog); #else GLuint __ret = fn.glGetDebugMessageLogARB(count, bufSize, HostAddr(sources, GLenum *), HostAddr(types, GLenum *), HostAddr(ids, GLuint *), HostAddr(severities, GLenum *), HostAddr(lengths, GLsizei *), HostAddr(messageLog, GLchar *)); #endif return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetDetailTexFuncSGIS(GLenum target, memptr points) #else void OSMesaDriver::nfglGetDetailTexFuncSGIS(GLenum target, GLfloat *points) #endif { D(bug("nfosmesa: glGetDetailTexFuncSGIS(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(points))); FN_GLGETDETAILTEXFUNCSGIS(target, points); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetDoubleIndexedvEXT(GLenum target, GLuint index, memptr data) #else void OSMesaDriver::nfglGetDoubleIndexedvEXT(GLenum target, GLuint index, GLdouble *data) #endif { D(bug("nfosmesa: glGetDoubleIndexedvEXT(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(data))); FN_GLGETDOUBLEINDEXEDVEXT(target, index, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetDoublei_v(GLenum target, GLuint index, memptr data) #else void OSMesaDriver::nfglGetDoublei_v(GLenum target, GLuint index, GLdouble *data) #endif { D(bug("nfosmesa: glGetDoublei_v(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(data))); FN_GLGETDOUBLEI_V(target, index, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetDoublei_vEXT(GLenum pname, GLuint index, memptr params) #else void OSMesaDriver::nfglGetDoublei_vEXT(GLenum pname, GLuint index, GLdouble *params) #endif { D(bug("nfosmesa: glGetDoublei_vEXT(%s, %u, " PRI_PTR ")", gl_enum_name(pname), index, AtariOffset(params))); FN_GLGETDOUBLEI_VEXT(pname, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetDoublev(GLenum pname, memptr params) #else void OSMesaDriver::nfglGetDoublev(GLenum pname, GLdouble *params) #endif { D(bug("nfosmesa: glGetDoublev(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLGETDOUBLEV(pname, params); } GLenum OSMesaDriver::nfglGetError(void) { D(bug("nfosmesa: glGetError()")); FN_GLGETERROR(); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFenceivNV(GLuint fence, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetFenceivNV(GLuint fence, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetFenceivNV(%u, %s, " PRI_PTR ")", fence, gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = nfglGetNumParams(pname); GLint __params_tmp[__params_size]; fn.glGetFenceivNV(fence, pname, __params_tmp); Host2AtariIntArray(__params_size, __params_tmp, params); #else fn.glGetFenceivNV(fence, pname, HostAddr(params, GLint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFinalCombinerInputParameterfvNV(GLenum variable, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetFinalCombinerInputParameterfvNV(GLenum variable, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetFinalCombinerInputParameterfvNV(%s, %s, " PRI_PTR ")", gl_enum_name(variable), gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __params_size = nfglGetNumParams(pname); GLfloat __params_tmp[__params_size]; fn.glGetFinalCombinerInputParameterfvNV(variable, pname, __params_tmp); Host2AtariFloatArray(__params_size, __params_tmp, params); #else fn.glGetFinalCombinerInputParameterfvNV(variable, pname, HostAddr(params, GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFinalCombinerInputParameterivNV(GLenum variable, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetFinalCombinerInputParameterivNV(GLenum variable, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetFinalCombinerInputParameterivNV(%s, %s, " PRI_PTR ")", gl_enum_name(variable), gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = nfglGetNumParams(pname); GLint __params_tmp[__params_size]; fn.glGetFinalCombinerInputParameterivNV(variable, pname, __params_tmp); Host2AtariIntArray(__params_size, __params_tmp, params); #else fn.glGetFinalCombinerInputParameterivNV(variable, pname, HostAddr(params, GLint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFirstPerfQueryIdINTEL(memptr queryId) #else void OSMesaDriver::nfglGetFirstPerfQueryIdINTEL(GLuint *queryId) #endif { D(bug("nfosmesa: glGetFirstPerfQueryIdINTEL(" PRI_PTR ")", AtariOffset(queryId))); FN_GLGETFIRSTPERFQUERYIDINTEL(queryId); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFixedvOES(GLenum pname, memptr params) #else void OSMesaDriver::nfglGetFixedvOES(GLenum pname, GLfixed *params) #endif { D(bug("nfosmesa: glGetFixedvOES(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLGETFIXEDVOES(pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFloatIndexedvEXT(GLenum target, GLuint index, memptr data) #else void OSMesaDriver::nfglGetFloatIndexedvEXT(GLenum target, GLuint index, GLfloat *data) #endif { D(bug("nfosmesa: glGetFloatIndexedvEXT(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(data))); FN_GLGETFLOATINDEXEDVEXT(target, index, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFloati_v(GLenum target, GLuint index, memptr data) #else void OSMesaDriver::nfglGetFloati_v(GLenum target, GLuint index, GLfloat *data) #endif { D(bug("nfosmesa: glGetFloati_v(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(data))); FN_GLGETFLOATI_V(target, index, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFloati_vEXT(GLenum pname, GLuint index, memptr params) #else void OSMesaDriver::nfglGetFloati_vEXT(GLenum pname, GLuint index, GLfloat *params) #endif { D(bug("nfosmesa: glGetFloati_vEXT(%s, %u, " PRI_PTR ")", gl_enum_name(pname), index, AtariOffset(params))); FN_GLGETFLOATI_VEXT(pname, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFloatv(GLenum pname, memptr params) #else void OSMesaDriver::nfglGetFloatv(GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetFloatv(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLGETFLOATV(pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFogFuncSGIS(memptr points) #else void OSMesaDriver::nfglGetFogFuncSGIS(GLfloat *points) #endif { D(bug("nfosmesa: glGetFogFuncSGIS(" PRI_PTR ")", AtariOffset(points))); FN_GLGETFOGFUNCSGIS(points); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglGetFragDataIndex(GLuint program, memptr name) #else GLint OSMesaDriver::nfglGetFragDataIndex(GLuint program, const GLchar *name) #endif { D(bug("nfosmesa: glGetFragDataIndex(%u, " PRI_PTR ")", program, AtariOffset(name))); FN_GLGETFRAGDATAINDEX(program, name); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglGetFragDataLocation(GLuint program, memptr name) #else GLint OSMesaDriver::nfglGetFragDataLocation(GLuint program, const GLchar *name) #endif { D(bug("nfosmesa: glGetFragDataLocation(%u, " PRI_PTR ")", program, AtariOffset(name))); FN_GLGETFRAGDATALOCATION(program, name); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglGetFragDataLocationEXT(GLuint program, memptr name) #else GLint OSMesaDriver::nfglGetFragDataLocationEXT(GLuint program, const GLchar *name) #endif { D(bug("nfosmesa: glGetFragDataLocationEXT(%u, " PRI_PTR ")", program, AtariOffset(name))); FN_GLGETFRAGDATALOCATIONEXT(program, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFragmentLightfvSGIX(GLenum light, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetFragmentLightfvSGIX(GLenum light, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetFragmentLightfvSGIX(%s, %s, " PRI_PTR ")", gl_enum_name(light), gl_enum_name(pname), AtariOffset(params))); FN_GLGETFRAGMENTLIGHTFVSGIX(light, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFragmentLightivSGIX(GLenum light, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetFragmentLightivSGIX(GLenum light, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetFragmentLightivSGIX(%s, %s, " PRI_PTR ")", gl_enum_name(light), gl_enum_name(pname), AtariOffset(params))); FN_GLGETFRAGMENTLIGHTIVSGIX(light, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFragmentMaterialfvSGIX(GLenum face, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetFragmentMaterialfvSGIX(GLenum face, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetFragmentMaterialfvSGIX(%s, %s, " PRI_PTR ")", gl_enum_name(face), gl_enum_name(pname), AtariOffset(params))); FN_GLGETFRAGMENTMATERIALFVSGIX(face, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFragmentMaterialivSGIX(GLenum face, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetFragmentMaterialivSGIX(GLenum face, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetFragmentMaterialivSGIX(%s, %s, " PRI_PTR ")", gl_enum_name(face), gl_enum_name(pname), AtariOffset(params))); FN_GLGETFRAGMENTMATERIALIVSGIX(face, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetFramebufferAttachmentParameteriv(%s, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(attachment), gl_enum_name(pname), AtariOffset(params))); FN_GLGETFRAMEBUFFERATTACHMENTPARAMETERIV(target, attachment, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetFramebufferAttachmentParameterivEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(attachment), gl_enum_name(pname), AtariOffset(params))); FN_GLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXT(target, attachment, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFramebufferParameterfvAMD(GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, memptr values) #else void OSMesaDriver::nfglGetFramebufferParameterfvAMD(GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values) #endif { D(bug("nfosmesa: glGetFramebufferParameterfvAMD(%s, %s, %u, %u, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), numsamples, pixelindex, size, AtariOffset(values))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __values_size = MAX(numsamples, 0); GLfloat __values_tmp[__values_size]; fn.glGetFramebufferParameterfvAMD(target, pname, numsamples, pixelindex, size, __values_tmp); Host2AtariFloatArray(__values_size, __values_tmp, values); #else fn.glGetFramebufferParameterfvAMD(target, pname, numsamples, pixelindex, size, HostAddr(values, GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFramebufferParameteriv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetFramebufferParameteriv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETFRAMEBUFFERPARAMETERIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetFramebufferParameterivEXT(%u, %s, " PRI_PTR ")", framebuffer, gl_enum_name(pname), AtariOffset(params))); FN_GLGETFRAMEBUFFERPARAMETERIVEXT(framebuffer, pname, params); } GLenum OSMesaDriver::nfglGetGraphicsResetStatus(void) { D(bug("nfosmesa: glGetGraphicsResetStatus()")); GLenum __ret = fn.glGetGraphicsResetStatus(); return __ret; } GLenum OSMesaDriver::nfglGetGraphicsResetStatusARB(void) { D(bug("nfosmesa: glGetGraphicsResetStatusARB()")); GLenum __ret = fn.glGetGraphicsResetStatusARB(); return __ret; } GLhandleARB OSMesaDriver::nfglGetHandleARB(GLenum pname) { D(bug("nfosmesa: glGetHandleARB(%s)", gl_enum_name(pname))); GLhandleARB __ret = fn.glGetHandleARB(pname); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetHistogram(GLenum target, GLboolean32 reset, GLenum format, GLenum type, memptr values) #else void OSMesaDriver::nfglGetHistogram(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values) #endif { D(bug("nfosmesa: glGetHistogram(%s, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), reset, gl_enum_name(format), gl_enum_name(type), AtariOffset(values))); FN_GLGETHISTOGRAM(target, reset, format, type, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetHistogramEXT(GLenum target, GLboolean32 reset, GLenum format, GLenum type, memptr values) #else void OSMesaDriver::nfglGetHistogramEXT(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values) #endif { D(bug("nfosmesa: glGetHistogramEXT(%s, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), reset, gl_enum_name(format), gl_enum_name(type), AtariOffset(values))); FN_GLGETHISTOGRAMEXT(target, reset, format, type, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetHistogramParameterfv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetHistogramParameterfv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETHISTOGRAMPARAMETERFV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetHistogramParameterfvEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetHistogramParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetHistogramParameterfvEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETHISTOGRAMPARAMETERFVEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetHistogramParameteriv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetHistogramParameteriv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETHISTOGRAMPARAMETERIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetHistogramParameterivEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetHistogramParameterivEXT(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetHistogramParameterivEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETHISTOGRAMPARAMETERIVEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetHistogramParameterxvOES(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetHistogramParameterxvOES(GLenum target, GLenum pname, GLfixed *params) #endif { D(bug("nfosmesa: glGetHistogramParameterxvOES(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETHISTOGRAMPARAMETERXVOES(target, pname, params); } GLuint64 OSMesaDriver::nfglGetImageHandleARB(GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format) { D(bug("nfosmesa: glGetImageHandleARB(%u, %d, %d, %d, %s)", texture, level, layered, layer, gl_enum_name(format))); FN_GLGETIMAGEHANDLEARB(texture, level, layered, layer, format); } GLuint64 OSMesaDriver::nfglGetImageHandleNV(GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format) { D(bug("nfosmesa: glGetImageHandleNV(%u, %d, %d, %d, %s)", texture, level, layered, layer, gl_enum_name(format))); FN_GLGETIMAGEHANDLENV(texture, level, layered, layer, format); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetImageTransformParameterfvHP(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetImageTransformParameterfvHP(GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetImageTransformParameterfvHP(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETIMAGETRANSFORMPARAMETERFVHP(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetImageTransformParameterivHP(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetImageTransformParameterivHP(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetImageTransformParameterivHP(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETIMAGETRANSFORMPARAMETERIVHP(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetInfoLogARB(GLhandleARB obj, GLsizei maxLength, memptr length, memptr infoLog) #else void OSMesaDriver::nfglGetInfoLogARB(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog) #endif { D(bug("nfosmesa: glGetInfoLogARB(%u, %d, " PRI_PTR ", " PRI_PTR ")", (unsigned int)(uintptr_t)obj, maxLength, AtariOffset(length), AtariOffset(infoLog))); #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV GLint const __length_size = 1; GLsizei __length_tmp[__length_size] = { 0 }; GLint const __infoLog_size = MAX(maxLength, 0); GLcharARB __infoLog_tmp[__infoLog_size]; fn.glGetInfoLogARB(obj, maxLength, __length_tmp, __infoLog_tmp); Host2AtariIntArray(__length_size, __length_tmp, length); Host2AtariByteArray(MIN(__length_tmp[0] + 1, maxLength), __infoLog_tmp, infoLog); #else fn.glGetInfoLogARB(obj, maxLength, HostAddr(length, GLsizei *), HostAddr(infoLog, GLcharARB *)); #endif } GLint OSMesaDriver::nfglGetInstrumentsSGIX(void) { D(bug("nfosmesa: glGetInstrumentsSGIX()")); GLint __ret = fn.glGetInstrumentsSGIX(); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetInteger64i_v(GLenum target, GLuint index, memptr data) #else void OSMesaDriver::nfglGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) #endif { D(bug("nfosmesa: glGetInteger64i_v(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(data))); FN_GLGETINTEGER64I_V(target, index, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetInteger64v(GLenum pname, memptr data) #else void OSMesaDriver::nfglGetInteger64v(GLenum pname, GLint64 *data) #endif { D(bug("nfosmesa: glGetInteger64v(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(data))); FN_GLGETINTEGER64V(pname, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetIntegerIndexedvEXT(GLenum target, GLuint index, memptr data) #else void OSMesaDriver::nfglGetIntegerIndexedvEXT(GLenum target, GLuint index, GLint *data) #endif { D(bug("nfosmesa: glGetIntegerIndexedvEXT(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(data))); FN_GLGETINTEGERINDEXEDVEXT(target, index, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetIntegeri_v(GLenum target, GLuint index, memptr data) #else void OSMesaDriver::nfglGetIntegeri_v(GLenum target, GLuint index, GLint *data) #endif { D(bug("nfosmesa: glGetIntegeri_v(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(data))); FN_GLGETINTEGERI_V(target, index, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetIntegerui64i_vNV(GLenum value, GLuint index, memptr result) #else void OSMesaDriver::nfglGetIntegerui64i_vNV(GLenum value, GLuint index, GLuint64EXT *result) #endif { D(bug("nfosmesa: glGetIntegerui64i_vNV(%s, %u, " PRI_PTR ")", gl_enum_name(value), index, AtariOffset(result))); FN_GLGETINTEGERUI64I_VNV(value, index, result); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetIntegerui64vNV(GLenum value, memptr result) #else void OSMesaDriver::nfglGetIntegerui64vNV(GLenum value, GLuint64EXT *result) #endif { D(bug("nfosmesa: glGetIntegerui64vNV(%s, " PRI_PTR ")", gl_enum_name(value), AtariOffset(result))); FN_GLGETINTEGERUI64VNV(value, result); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetIntegerv(GLenum pname, memptr params) #else void OSMesaDriver::nfglGetIntegerv(GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetIntegerv(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLGETINTEGERV(pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetInternalformatSampleivNV(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, memptr params) #else void OSMesaDriver::nfglGetInternalformatSampleivNV(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params) #endif { D(bug("nfosmesa: glGetInternalformatSampleivNV(%s, %s, %d, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(internalformat), samples, gl_enum_name(pname), bufSize, AtariOffset(params))); FN_GLGETINTERNALFORMATSAMPLEIVNV(target, internalformat, samples, pname, bufSize, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, memptr params) #else void OSMesaDriver::nfglGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params) #endif { D(bug("nfosmesa: glGetInternalformati64v(%s, %s, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(internalformat), gl_enum_name(pname), bufSize, AtariOffset(params))); FN_GLGETINTERNALFORMATI64V(target, internalformat, pname, bufSize, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, memptr params) #else void OSMesaDriver::nfglGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params) #endif { D(bug("nfosmesa: glGetInternalformativ(%s, %s, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(internalformat), gl_enum_name(pname), bufSize, AtariOffset(params))); FN_GLGETINTERNALFORMATIV(target, internalformat, pname, bufSize, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetInvariantBooleanvEXT(GLuint id, GLenum value, memptr data) #else void OSMesaDriver::nfglGetInvariantBooleanvEXT(GLuint id, GLenum value, GLboolean *data) #endif { D(bug("nfosmesa: glGetInvariantBooleanvEXT(%u, %s, " PRI_PTR ")", id, gl_enum_name(value), AtariOffset(data))); FN_GLGETINVARIANTBOOLEANVEXT(id, value, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetInvariantFloatvEXT(GLuint id, GLenum value, memptr data) #else void OSMesaDriver::nfglGetInvariantFloatvEXT(GLuint id, GLenum value, GLfloat *data) #endif { D(bug("nfosmesa: glGetInvariantFloatvEXT(%u, %s, " PRI_PTR ")", id, gl_enum_name(value), AtariOffset(data))); FN_GLGETINVARIANTFLOATVEXT(id, value, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetInvariantIntegervEXT(GLuint id, GLenum value, memptr data) #else void OSMesaDriver::nfglGetInvariantIntegervEXT(GLuint id, GLenum value, GLint *data) #endif { D(bug("nfosmesa: glGetInvariantIntegervEXT(%u, %s, " PRI_PTR ")", id, gl_enum_name(value), AtariOffset(data))); FN_GLGETINVARIANTINTEGERVEXT(id, value, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetLightfv(GLenum light, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetLightfv(GLenum light, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetLightfv(%s, %s, " PRI_PTR ")", gl_enum_name(light), gl_enum_name(pname), AtariOffset(params))); FN_GLGETLIGHTFV(light, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetLightiv(GLenum light, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetLightiv(GLenum light, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetLightiv(%s, %s, " PRI_PTR ")", gl_enum_name(light), gl_enum_name(pname), AtariOffset(params))); FN_GLGETLIGHTIV(light, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetLightxOES(GLenum light, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetLightxOES(GLenum light, GLenum pname, GLfixed *params) #endif { D(bug("nfosmesa: glGetLightxOES(%s, %s, " PRI_PTR ")", gl_enum_name(light), gl_enum_name(pname), AtariOffset(params))); FN_GLGETLIGHTXOES(light, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetListParameterfvSGIX(GLuint list, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetListParameterfvSGIX(GLuint list, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetListParameterfvSGIX(%u, %s, " PRI_PTR ")", list, gl_enum_name(pname), AtariOffset(params))); FN_GLGETLISTPARAMETERFVSGIX(list, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetListParameterivSGIX(GLuint list, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetListParameterivSGIX(GLuint list, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetListParameterivSGIX(%u, %s, " PRI_PTR ")", list, gl_enum_name(pname), AtariOffset(params))); FN_GLGETLISTPARAMETERIVSGIX(list, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetLocalConstantBooleanvEXT(GLuint id, GLenum value, memptr data) #else void OSMesaDriver::nfglGetLocalConstantBooleanvEXT(GLuint id, GLenum value, GLboolean *data) #endif { D(bug("nfosmesa: glGetLocalConstantBooleanvEXT(%u, %s, " PRI_PTR ")", id, gl_enum_name(value), AtariOffset(data))); FN_GLGETLOCALCONSTANTBOOLEANVEXT(id, value, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetLocalConstantFloatvEXT(GLuint id, GLenum value, memptr data) #else void OSMesaDriver::nfglGetLocalConstantFloatvEXT(GLuint id, GLenum value, GLfloat *data) #endif { D(bug("nfosmesa: glGetLocalConstantFloatvEXT(%u, %s, " PRI_PTR ")", id, gl_enum_name(value), AtariOffset(data))); FN_GLGETLOCALCONSTANTFLOATVEXT(id, value, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetLocalConstantIntegervEXT(GLuint id, GLenum value, memptr data) #else void OSMesaDriver::nfglGetLocalConstantIntegervEXT(GLuint id, GLenum value, GLint *data) #endif { D(bug("nfosmesa: glGetLocalConstantIntegervEXT(%u, %s, " PRI_PTR ")", id, gl_enum_name(value), AtariOffset(data))); FN_GLGETLOCALCONSTANTINTEGERVEXT(id, value, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMapAttribParameterfvNV(GLenum target, GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMapAttribParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetMapAttribParameterfvNV(%s, %u, %s, " PRI_PTR ")", gl_enum_name(target), index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETMAPATTRIBPARAMETERFVNV(target, index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMapAttribParameterivNV(GLenum target, GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMapAttribParameterivNV(GLenum target, GLuint index, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetMapAttribParameterivNV(%s, %u, %s, " PRI_PTR ")", gl_enum_name(target), index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETMAPATTRIBPARAMETERIVNV(target, index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean32 packed, memptr points) #else void OSMesaDriver::nfglGetMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean32 packed, void *points) #endif { D(bug("nfosmesa: glGetMapControlPointsNV(%s, %u, %s, %d, %d, %d, " PRI_PTR ")", gl_enum_name(target), index, gl_enum_name(type), ustride, vstride, packed, AtariOffset(points))); FN_GLGETMAPCONTROLPOINTSNV(target, index, type, ustride, vstride, packed, points); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMapParameterfvNV(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMapParameterfvNV(GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetMapParameterfvNV(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMAPPARAMETERFVNV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMapParameterivNV(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMapParameterivNV(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetMapParameterivNV(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMAPPARAMETERIVNV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMapdv(GLenum target, GLenum query, memptr v) #else void OSMesaDriver::nfglGetMapdv(GLenum target, GLenum query, GLdouble *v) #endif { D(bug("nfosmesa: glGetMapdv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(query), AtariOffset(v))); FN_GLGETMAPDV(target, query, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMapfv(GLenum target, GLenum query, memptr v) #else void OSMesaDriver::nfglGetMapfv(GLenum target, GLenum query, GLfloat *v) #endif { D(bug("nfosmesa: glGetMapfv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(query), AtariOffset(v))); FN_GLGETMAPFV(target, query, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMapiv(GLenum target, GLenum query, memptr v) #else void OSMesaDriver::nfglGetMapiv(GLenum target, GLenum query, GLint *v) #endif { D(bug("nfosmesa: glGetMapiv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(query), AtariOffset(v))); FN_GLGETMAPIV(target, query, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMapxvOES(GLenum target, GLenum query, memptr v) #else void OSMesaDriver::nfglGetMapxvOES(GLenum target, GLenum query, GLfixed *v) #endif { D(bug("nfosmesa: glGetMapxvOES(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(query), AtariOffset(v))); FN_GLGETMAPXVOES(target, query, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMaterialfv(GLenum face, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetMaterialfv(%s, %s, " PRI_PTR ")", gl_enum_name(face), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMATERIALFV(face, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMaterialiv(GLenum face, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMaterialiv(GLenum face, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetMaterialiv(%s, %s, " PRI_PTR ")", gl_enum_name(face), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMATERIALIV(face, pname, params); } void OSMesaDriver::nfglGetMaterialxOES(GLenum face, GLenum pname, GLfixed param) { D(bug("nfosmesa: glGetMaterialxOES(%s, %s, 0x%x)", gl_enum_name(face), gl_enum_name(pname), param)); fn.glGetMaterialxOES(face, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMemoryObjectParameterivEXT(GLuint memoryObject, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMemoryObjectParameterivEXT(GLuint memoryObject, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetMemoryObjectParameterivEXT(%u, %s, " PRI_PTR ")", memoryObject, gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = nfglGetNumParams(pname); GLint __params_tmp[__params_size]; fn.glGetMemoryObjectParameterivEXT(memoryObject, pname, __params_tmp); Host2AtariIntArray(__params_size, __params_tmp, params); #else fn.glGetMemoryObjectParameterivEXT(memoryObject, pname, HostAddr(params, GLint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMinmax(GLenum target, GLboolean32 reset, GLenum format, GLenum type, memptr values) #else void OSMesaDriver::nfglGetMinmax(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values) #endif { D(bug("nfosmesa: glGetMinmax(%s, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), reset, gl_enum_name(format), gl_enum_name(type), AtariOffset(values))); FN_GLGETMINMAX(target, reset, format, type, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMinmaxEXT(GLenum target, GLboolean32 reset, GLenum format, GLenum type, memptr values) #else void OSMesaDriver::nfglGetMinmaxEXT(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values) #endif { D(bug("nfosmesa: glGetMinmaxEXT(%s, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), reset, gl_enum_name(format), gl_enum_name(type), AtariOffset(values))); FN_GLGETMINMAXEXT(target, reset, format, type, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMinmaxParameterfv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetMinmaxParameterfv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMINMAXPARAMETERFV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMinmaxParameterfvEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMinmaxParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetMinmaxParameterfvEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMINMAXPARAMETERFVEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMinmaxParameteriv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetMinmaxParameteriv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMINMAXPARAMETERIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMinmaxParameterivEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMinmaxParameterivEXT(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetMinmaxParameterivEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMINMAXPARAMETERIVEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetMultiTexEnvfvEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMULTITEXENVFVEXT(texunit, target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetMultiTexEnvivEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMULTITEXENVIVEXT(texunit, target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble *params) #endif { D(bug("nfosmesa: glGetMultiTexGendvEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(coord), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMULTITEXGENDVEXT(texunit, coord, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetMultiTexGenfvEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(coord), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMULTITEXGENFVEXT(texunit, coord, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetMultiTexGenivEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(coord), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMULTITEXGENIVEXT(texunit, coord, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMultiTexImageEXT(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglGetMultiTexImageEXT(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels) #endif { D(bug("nfosmesa: glGetMultiTexImageEXT(%s, %s, %d, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLGETMULTITEXIMAGEEXT(texunit, target, level, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMultiTexLevelParameterfvEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMultiTexLevelParameterfvEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetMultiTexLevelParameterfvEXT(%s, %s, %d, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, gl_enum_name(pname), AtariOffset(params))); FN_GLGETMULTITEXLEVELPARAMETERFVEXT(texunit, target, level, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMultiTexLevelParameterivEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMultiTexLevelParameterivEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetMultiTexLevelParameterivEXT(%s, %s, %d, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, gl_enum_name(pname), AtariOffset(params))); FN_GLGETMULTITEXLEVELPARAMETERIVEXT(texunit, target, level, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetMultiTexParameterIivEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMULTITEXPARAMETERIIVEXT(texunit, target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, GLuint *params) #endif { D(bug("nfosmesa: glGetMultiTexParameterIuivEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMULTITEXPARAMETERIUIVEXT(texunit, target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetMultiTexParameterfvEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMULTITEXPARAMETERFVEXT(texunit, target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetMultiTexParameterivEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETMULTITEXPARAMETERIVEXT(texunit, target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMultisamplefv(GLenum pname, GLuint index, memptr val) #else void OSMesaDriver::nfglGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) #endif { D(bug("nfosmesa: glGetMultisamplefv(%s, %u, " PRI_PTR ")", gl_enum_name(pname), index, AtariOffset(val))); FN_GLGETMULTISAMPLEFV(pname, index, val); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetMultisamplefvNV(GLenum pname, GLuint index, memptr val) #else void OSMesaDriver::nfglGetMultisamplefvNV(GLenum pname, GLuint index, GLfloat *val) #endif { D(bug("nfosmesa: glGetMultisamplefvNV(%s, %u, " PRI_PTR ")", gl_enum_name(pname), index, AtariOffset(val))); FN_GLGETMULTISAMPLEFVNV(pname, index, val); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedBufferParameteri64v(GLuint buffer, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetNamedBufferParameteri64v(GLuint buffer, GLenum pname, GLint64 *params) #endif { D(bug("nfosmesa: glGetNamedBufferParameteri64v(%u, %s, " PRI_PTR ")", buffer, gl_enum_name(pname), AtariOffset(params))); FN_GLGETNAMEDBUFFERPARAMETERI64V(buffer, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedBufferParameteriv(GLuint buffer, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetNamedBufferParameteriv(GLuint buffer, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetNamedBufferParameteriv(%u, %s, " PRI_PTR ")", buffer, gl_enum_name(pname), AtariOffset(params))); FN_GLGETNAMEDBUFFERPARAMETERIV(buffer, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetNamedBufferParameterivEXT(%u, %s, " PRI_PTR ")", buffer, gl_enum_name(pname), AtariOffset(params))); FN_GLGETNAMEDBUFFERPARAMETERIVEXT(buffer, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedBufferParameterui64vNV(GLuint buffer, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetNamedBufferParameterui64vNV(GLuint buffer, GLenum pname, GLuint64EXT *params) #endif { D(bug("nfosmesa: glGetNamedBufferParameterui64vNV(%u, %s, " PRI_PTR ")", buffer, gl_enum_name(pname), AtariOffset(params))); FN_GLGETNAMEDBUFFERPARAMETERUI64VNV(buffer, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedBufferPointerv(GLuint buffer, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetNamedBufferPointerv(GLuint buffer, GLenum pname, void * *params) #endif { D(bug("nfosmesa: glGetNamedBufferPointerv(%u, %s, " PRI_PTR ")", buffer, gl_enum_name(pname), AtariOffset(params))); FN_GLGETNAMEDBUFFERPOINTERV(buffer, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedBufferPointervEXT(GLuint buffer, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetNamedBufferPointervEXT(GLuint buffer, GLenum pname, void * *params) #endif { D(bug("nfosmesa: glGetNamedBufferPointervEXT(%u, %s, " PRI_PTR ")", buffer, gl_enum_name(pname), AtariOffset(params))); FN_GLGETNAMEDBUFFERPOINTERVEXT(buffer, pname, params); } #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, memptr data) #else void OSMesaDriver::nfglGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data) #endif { D(bug("nfosmesa: glGetNamedBufferSubData(%u, %" PRI_IPTR ", %" PRI_IPTR ", " PRI_PTR ")", buffer, offset, size, AtariOffset(data))); FN_GLGETNAMEDBUFFERSUBDATA(buffer, offset, size, data); } #endif #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, memptr data) #else void OSMesaDriver::nfglGetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data) #endif { D(bug("nfosmesa: glGetNamedBufferSubDataEXT(%u, %" PRI_IPTR ", %" PRI_IPTR ", " PRI_PTR ")", buffer, offset, size, AtariOffset(data))); FN_GLGETNAMEDBUFFERSUBDATAEXT(buffer, offset, size, data); } #endif #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetNamedFramebufferAttachmentParameteriv(%u, %s, %s, " PRI_PTR ")", framebuffer, gl_enum_name(attachment), gl_enum_name(pname), AtariOffset(params))); FN_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV(framebuffer, attachment, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedFramebufferAttachmentParameterivEXT(GLuint framebuffer, GLenum attachment, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetNamedFramebufferAttachmentParameterivEXT(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetNamedFramebufferAttachmentParameterivEXT(%u, %s, %s, " PRI_PTR ")", framebuffer, gl_enum_name(attachment), gl_enum_name(pname), AtariOffset(params))); FN_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT(framebuffer, attachment, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedFramebufferParameterfvAMD(GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, memptr values) #else void OSMesaDriver::nfglGetNamedFramebufferParameterfvAMD(GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values) #endif { D(bug("nfosmesa: glGetNamedFramebufferParameterfvAMD(%u, %s, %u, %u, %d, " PRI_PTR ")", framebuffer, gl_enum_name(pname), numsamples, pixelindex, size, AtariOffset(values))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __values_size = MAX(numsamples, 0); GLfloat __values_tmp[__values_size]; fn.glGetNamedFramebufferParameterfvAMD(framebuffer, pname, numsamples, pixelindex, size, __values_tmp); Host2AtariFloatArray(__values_size, __values_tmp, values); #else fn.glGetNamedFramebufferParameterfvAMD(framebuffer, pname, numsamples, pixelindex, size, HostAddr(values, GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, memptr param) #else void OSMesaDriver::nfglGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint *param) #endif { D(bug("nfosmesa: glGetNamedFramebufferParameteriv(%u, %s, " PRI_PTR ")", framebuffer, gl_enum_name(pname), AtariOffset(param))); FN_GLGETNAMEDFRAMEBUFFERPARAMETERIV(framebuffer, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetNamedFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetNamedFramebufferParameterivEXT(%u, %s, " PRI_PTR ")", framebuffer, gl_enum_name(pname), AtariOffset(params))); FN_GLGETNAMEDFRAMEBUFFERPARAMETERIVEXT(framebuffer, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedProgramLocalParameterIivEXT(GLuint program, GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglGetNamedProgramLocalParameterIivEXT(GLuint program, GLenum target, GLuint index, GLint *params) #endif { D(bug("nfosmesa: glGetNamedProgramLocalParameterIivEXT(%u, %s, %u, " PRI_PTR ")", program, gl_enum_name(target), index, AtariOffset(params))); FN_GLGETNAMEDPROGRAMLOCALPARAMETERIIVEXT(program, target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedProgramLocalParameterIuivEXT(GLuint program, GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglGetNamedProgramLocalParameterIuivEXT(GLuint program, GLenum target, GLuint index, GLuint *params) #endif { D(bug("nfosmesa: glGetNamedProgramLocalParameterIuivEXT(%u, %s, %u, " PRI_PTR ")", program, gl_enum_name(target), index, AtariOffset(params))); FN_GLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXT(program, target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedProgramLocalParameterdvEXT(GLuint program, GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglGetNamedProgramLocalParameterdvEXT(GLuint program, GLenum target, GLuint index, GLdouble *params) #endif { D(bug("nfosmesa: glGetNamedProgramLocalParameterdvEXT(%u, %s, %u, " PRI_PTR ")", program, gl_enum_name(target), index, AtariOffset(params))); FN_GLGETNAMEDPROGRAMLOCALPARAMETERDVEXT(program, target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedProgramLocalParameterfvEXT(GLuint program, GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglGetNamedProgramLocalParameterfvEXT(GLuint program, GLenum target, GLuint index, GLfloat *params) #endif { D(bug("nfosmesa: glGetNamedProgramLocalParameterfvEXT(%u, %s, %u, " PRI_PTR ")", program, gl_enum_name(target), index, AtariOffset(params))); FN_GLGETNAMEDPROGRAMLOCALPARAMETERFVEXT(program, target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedProgramStringEXT(GLuint program, GLenum target, GLenum pname, memptr string) #else void OSMesaDriver::nfglGetNamedProgramStringEXT(GLuint program, GLenum target, GLenum pname, void *string) #endif { D(bug("nfosmesa: glGetNamedProgramStringEXT(%u, %s, %s, " PRI_PTR ")", program, gl_enum_name(target), gl_enum_name(pname), AtariOffset(string))); FN_GLGETNAMEDPROGRAMSTRINGEXT(program, target, pname, string); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedProgramivEXT(GLuint program, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetNamedProgramivEXT(GLuint program, GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetNamedProgramivEXT(%u, %s, %s, " PRI_PTR ")", program, gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETNAMEDPROGRAMIVEXT(program, target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetNamedRenderbufferParameteriv(%u, %s, " PRI_PTR ")", renderbuffer, gl_enum_name(pname), AtariOffset(params))); FN_GLGETNAMEDRENDERBUFFERPARAMETERIV(renderbuffer, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedRenderbufferParameterivEXT(GLuint renderbuffer, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetNamedRenderbufferParameterivEXT(GLuint renderbuffer, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetNamedRenderbufferParameterivEXT(%u, %s, " PRI_PTR ")", renderbuffer, gl_enum_name(pname), AtariOffset(params))); FN_GLGETNAMEDRENDERBUFFERPARAMETERIVEXT(renderbuffer, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedStringARB(GLint namelen, memptr name, GLsizei bufSize, memptr stringlen, memptr string) #else void OSMesaDriver::nfglGetNamedStringARB(GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string) #endif { D(bug("nfosmesa: glGetNamedStringARB(%d, " PRI_PTR ", %d, " PRI_PTR ", " PRI_PTR ")", namelen, AtariOffset(name), bufSize, AtariOffset(stringlen), AtariOffset(string))); FN_GLGETNAMEDSTRINGARB(namelen, name, bufSize, stringlen, string); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNamedStringivARB(GLint namelen, memptr name, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetNamedStringivARB(GLint namelen, const GLchar *name, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetNamedStringivARB(%d, " PRI_PTR ", %s, " PRI_PTR ")", namelen, AtariOffset(name), gl_enum_name(pname), AtariOffset(params))); FN_GLGETNAMEDSTRINGIVARB(namelen, name, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetNextPerfQueryIdINTEL(GLuint queryId, memptr nextQueryId) #else void OSMesaDriver::nfglGetNextPerfQueryIdINTEL(GLuint queryId, GLuint *nextQueryId) #endif { D(bug("nfosmesa: glGetNextPerfQueryIdINTEL(%u, " PRI_PTR ")", queryId, AtariOffset(nextQueryId))); FN_GLGETNEXTPERFQUERYIDINTEL(queryId, nextQueryId); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetObjectBufferfvATI(GLuint buffer, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetObjectBufferfvATI(GLuint buffer, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetObjectBufferfvATI(%u, %s, " PRI_PTR ")", buffer, gl_enum_name(pname), AtariOffset(params))); FN_GLGETOBJECTBUFFERFVATI(buffer, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetObjectBufferivATI(GLuint buffer, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetObjectBufferivATI(GLuint buffer, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetObjectBufferivATI(%u, %s, " PRI_PTR ")", buffer, gl_enum_name(pname), AtariOffset(params))); FN_GLGETOBJECTBUFFERIVATI(buffer, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, memptr length, memptr label) #else void OSMesaDriver::nfglGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label) #endif { D(bug("nfosmesa: glGetObjectLabel(%s, %u, %d, " PRI_PTR ", " PRI_PTR ")", gl_enum_name(identifier), name, bufSize, AtariOffset(length), AtariOffset(label))); FN_GLGETOBJECTLABEL(identifier, name, bufSize, length, label); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, memptr length, memptr label) #else void OSMesaDriver::nfglGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label) #endif { D(bug("nfosmesa: glGetObjectLabelEXT(%s, %u, %d, " PRI_PTR ", " PRI_PTR ")", gl_enum_name(type), object, bufSize, AtariOffset(length), AtariOffset(label))); FN_GLGETOBJECTLABELEXT(type, object, bufSize, length, label); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetObjectParameterfvARB(GLhandleARB obj, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetObjectParameterfvARB(GLhandleARB obj, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetObjectParameterfvARB(%u, %s, " PRI_PTR ")", (unsigned int)(uintptr_t)obj, gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __params_size = 1; GLfloat __params_tmp[__params_size] = { 0 }; fn.glGetObjectParameterfvARB(obj, pname, __params_tmp); Host2AtariFloatArray(__params_size, __params_tmp, params); #else fn.glGetObjectParameterfvARB(obj, pname, HostAddr(params, GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetObjectParameterivAPPLE(%s, %u, %s, " PRI_PTR ")", gl_enum_name(objectType), name, gl_enum_name(pname), AtariOffset(params))); FN_GLGETOBJECTPARAMETERIVAPPLE(objectType, name, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetObjectParameterivARB(GLhandleARB obj, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetObjectParameterivARB(GLhandleARB obj, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetObjectParameterivARB(%u, %s, " PRI_PTR ")", (unsigned int)(uintptr_t)obj, gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = 1; GLint __params_tmp[__params_size] = { 0 }; fn.glGetObjectParameterivARB(obj, pname, __params_tmp); Host2AtariIntArray(__params_size, __params_tmp, params); #else fn.glGetObjectParameterivARB(obj, pname, HostAddr(params, GLint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetObjectPtrLabel(memptr ptr, GLsizei bufSize, memptr length, memptr label) #else void OSMesaDriver::nfglGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label) #endif { D(bug("nfosmesa: glGetObjectPtrLabel(" PRI_PTR ", %d, " PRI_PTR ", " PRI_PTR ")", AtariOffset(ptr), bufSize, AtariOffset(length), AtariOffset(label))); FN_GLGETOBJECTPTRLABEL(ptr, bufSize, length, label); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetOcclusionQueryivNV(GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetOcclusionQueryivNV(GLuint id, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetOcclusionQueryivNV(%u, %s, " PRI_PTR ")", id, gl_enum_name(pname), AtariOffset(params))); FN_GLGETOCCLUSIONQUERYIVNV(id, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetOcclusionQueryuivNV(GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetOcclusionQueryuivNV(GLuint id, GLenum pname, GLuint *params) #endif { D(bug("nfosmesa: glGetOcclusionQueryuivNV(%u, %s, " PRI_PTR ")", id, gl_enum_name(pname), AtariOffset(params))); FN_GLGETOCCLUSIONQUERYUIVNV(id, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPathColorGenfvNV(GLenum color, GLenum pname, memptr value) #else void OSMesaDriver::nfglGetPathColorGenfvNV(GLenum color, GLenum pname, GLfloat *value) #endif { D(bug("nfosmesa: glGetPathColorGenfvNV(%s, %s, " PRI_PTR ")", gl_enum_name(color), gl_enum_name(pname), AtariOffset(value))); FN_GLGETPATHCOLORGENFVNV(color, pname, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPathColorGenivNV(GLenum color, GLenum pname, memptr value) #else void OSMesaDriver::nfglGetPathColorGenivNV(GLenum color, GLenum pname, GLint *value) #endif { D(bug("nfosmesa: glGetPathColorGenivNV(%s, %s, " PRI_PTR ")", gl_enum_name(color), gl_enum_name(pname), AtariOffset(value))); FN_GLGETPATHCOLORGENIVNV(color, pname, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPathCommandsNV(GLuint path, memptr commands) #else void OSMesaDriver::nfglGetPathCommandsNV(GLuint path, GLubyte *commands) #endif { D(bug("nfosmesa: glGetPathCommandsNV(%u, " PRI_PTR ")", path, AtariOffset(commands))); FN_GLGETPATHCOMMANDSNV(path, commands); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPathCoordsNV(GLuint path, memptr coords) #else void OSMesaDriver::nfglGetPathCoordsNV(GLuint path, GLfloat *coords) #endif { D(bug("nfosmesa: glGetPathCoordsNV(%u, " PRI_PTR ")", path, AtariOffset(coords))); FN_GLGETPATHCOORDSNV(path, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPathDashArrayNV(GLuint path, memptr dashArray) #else void OSMesaDriver::nfglGetPathDashArrayNV(GLuint path, GLfloat *dashArray) #endif { D(bug("nfosmesa: glGetPathDashArrayNV(%u, " PRI_PTR ")", path, AtariOffset(dashArray))); FN_GLGETPATHDASHARRAYNV(path, dashArray); } GLfloat OSMesaDriver::nfglGetPathLengthNV(GLuint path, GLsizei startSegment, GLsizei numSegments) { D(bug("nfosmesa: glGetPathLengthNV(%u, %d, %d)", path, startSegment, numSegments)); GLfloat __ret = fn.glGetPathLengthNV(path, startSegment, numSegments); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPathMetricRangeNV(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, memptr metrics) #else void OSMesaDriver::nfglGetPathMetricRangeNV(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics) #endif { D(bug("nfosmesa: glGetPathMetricRangeNV(0x%x, %u, %d, %d, " PRI_PTR ")", metricQueryMask, firstPathName, numPaths, stride, AtariOffset(metrics))); FN_GLGETPATHMETRICRANGENV(metricQueryMask, firstPathName, numPaths, stride, metrics); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPathMetricsNV(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLsizei stride, memptr metrics) #else void OSMesaDriver::nfglGetPathMetricsNV(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics) #endif { D(bug("nfosmesa: glGetPathMetricsNV(0x%x, %d, %s, " PRI_PTR ", %u, %d, " PRI_PTR ")", metricQueryMask, numPaths, gl_enum_name(pathNameType), AtariOffset(paths), pathBase, stride, AtariOffset(metrics))); FN_GLGETPATHMETRICSNV(metricQueryMask, numPaths, pathNameType, paths, pathBase, stride, metrics); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPathParameterfvNV(GLuint path, GLenum pname, memptr value) #else void OSMesaDriver::nfglGetPathParameterfvNV(GLuint path, GLenum pname, GLfloat *value) #endif { D(bug("nfosmesa: glGetPathParameterfvNV(%u, %s, " PRI_PTR ")", path, gl_enum_name(pname), AtariOffset(value))); FN_GLGETPATHPARAMETERFVNV(path, pname, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPathParameterivNV(GLuint path, GLenum pname, memptr value) #else void OSMesaDriver::nfglGetPathParameterivNV(GLuint path, GLenum pname, GLint *value) #endif { D(bug("nfosmesa: glGetPathParameterivNV(%u, %s, " PRI_PTR ")", path, gl_enum_name(pname), AtariOffset(value))); FN_GLGETPATHPARAMETERIVNV(path, pname, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPathSpacingNV(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, memptr returnedSpacing) #else void OSMesaDriver::nfglGetPathSpacingNV(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing) #endif { D(bug("nfosmesa: glGetPathSpacingNV(%s, %d, %s, " PRI_PTR ", %u, %f, %f, %s, " PRI_PTR ")", gl_enum_name(pathListMode), numPaths, gl_enum_name(pathNameType), AtariOffset(paths), pathBase, advanceScale, kerningScale, gl_enum_name(transformType), AtariOffset(returnedSpacing))); FN_GLGETPATHSPACINGNV(pathListMode, numPaths, pathNameType, paths, pathBase, advanceScale, kerningScale, transformType, returnedSpacing); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPathTexGenfvNV(GLenum texCoordSet, GLenum pname, memptr value) #else void OSMesaDriver::nfglGetPathTexGenfvNV(GLenum texCoordSet, GLenum pname, GLfloat *value) #endif { D(bug("nfosmesa: glGetPathTexGenfvNV(%s, %s, " PRI_PTR ")", gl_enum_name(texCoordSet), gl_enum_name(pname), AtariOffset(value))); FN_GLGETPATHTEXGENFVNV(texCoordSet, pname, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPathTexGenivNV(GLenum texCoordSet, GLenum pname, memptr value) #else void OSMesaDriver::nfglGetPathTexGenivNV(GLenum texCoordSet, GLenum pname, GLint *value) #endif { D(bug("nfosmesa: glGetPathTexGenivNV(%s, %s, " PRI_PTR ")", gl_enum_name(texCoordSet), gl_enum_name(pname), AtariOffset(value))); FN_GLGETPATHTEXGENIVNV(texCoordSet, pname, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPerfCounterInfoINTEL(GLuint queryId, GLuint counterId, GLuint counterNameLength, memptr counterName, GLuint counterDescLength, memptr counterDesc, memptr counterOffset, memptr counterDataSize, memptr counterTypeEnum, memptr counterDataTypeEnum, memptr rawCounterMaxValue) #else void OSMesaDriver::nfglGetPerfCounterInfoINTEL(GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue) #endif { D(bug("nfosmesa: glGetPerfCounterInfoINTEL(%u, %u, %u, " PRI_PTR ", %u, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", queryId, counterId, counterNameLength, AtariOffset(counterName), counterDescLength, AtariOffset(counterDesc), AtariOffset(counterOffset), AtariOffset(counterDataSize), AtariOffset(counterTypeEnum), AtariOffset(counterDataTypeEnum), AtariOffset(rawCounterMaxValue))); FN_GLGETPERFCOUNTERINFOINTEL(queryId, counterId, counterNameLength, counterName, counterDescLength, counterDesc, counterOffset, counterDataSize, counterTypeEnum, counterDataTypeEnum, rawCounterMaxValue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, memptr data, memptr bytesWritten) #else void OSMesaDriver::nfglGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten) #endif { D(bug("nfosmesa: glGetPerfMonitorCounterDataAMD(%u, %s, %d, " PRI_PTR ", " PRI_PTR ")", monitor, gl_enum_name(pname), dataSize, AtariOffset(data), AtariOffset(bytesWritten))); FN_GLGETPERFMONITORCOUNTERDATAAMD(monitor, pname, dataSize, data, bytesWritten); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, memptr data) #else void OSMesaDriver::nfglGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, void *data) #endif { D(bug("nfosmesa: glGetPerfMonitorCounterInfoAMD(%u, %u, %s, " PRI_PTR ")", group, counter, gl_enum_name(pname), AtariOffset(data))); FN_GLGETPERFMONITORCOUNTERINFOAMD(group, counter, pname, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, memptr length, memptr counterString) #else void OSMesaDriver::nfglGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString) #endif { D(bug("nfosmesa: glGetPerfMonitorCounterStringAMD(%u, %u, %d, " PRI_PTR ", " PRI_PTR ")", group, counter, bufSize, AtariOffset(length), AtariOffset(counterString))); FN_GLGETPERFMONITORCOUNTERSTRINGAMD(group, counter, bufSize, length, counterString); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPerfMonitorCountersAMD(GLuint group, memptr numCounters, memptr maxActiveCounters, GLsizei counterSize, memptr counters) #else void OSMesaDriver::nfglGetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters) #endif { D(bug("nfosmesa: glGetPerfMonitorCountersAMD(%u, " PRI_PTR ", " PRI_PTR ", %d, " PRI_PTR ")", group, AtariOffset(numCounters), AtariOffset(maxActiveCounters), counterSize, AtariOffset(counters))); FN_GLGETPERFMONITORCOUNTERSAMD(group, numCounters, maxActiveCounters, counterSize, counters); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, memptr length, memptr groupString) #else void OSMesaDriver::nfglGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString) #endif { D(bug("nfosmesa: glGetPerfMonitorGroupStringAMD(%u, %d, " PRI_PTR ", " PRI_PTR ")", group, bufSize, AtariOffset(length), AtariOffset(groupString))); FN_GLGETPERFMONITORGROUPSTRINGAMD(group, bufSize, length, groupString); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPerfMonitorGroupsAMD(memptr numGroups, GLsizei groupsSize, memptr groups) #else void OSMesaDriver::nfglGetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLuint *groups) #endif { D(bug("nfosmesa: glGetPerfMonitorGroupsAMD(" PRI_PTR ", %d, " PRI_PTR ")", AtariOffset(numGroups), groupsSize, AtariOffset(groups))); FN_GLGETPERFMONITORGROUPSAMD(numGroups, groupsSize, groups); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPerfQueryDataINTEL(GLuint queryHandle, GLuint flags, GLsizei dataSize, memptr data, memptr bytesWritten) #else void OSMesaDriver::nfglGetPerfQueryDataINTEL(GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten) #endif { D(bug("nfosmesa: glGetPerfQueryDataINTEL(%u, %u, %d, " PRI_PTR ", " PRI_PTR ")", queryHandle, flags, dataSize, AtariOffset(data), AtariOffset(bytesWritten))); FN_GLGETPERFQUERYDATAINTEL(queryHandle, flags, dataSize, data, bytesWritten); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPerfQueryIdByNameINTEL(memptr queryName, memptr queryId) #else void OSMesaDriver::nfglGetPerfQueryIdByNameINTEL(GLchar *queryName, GLuint *queryId) #endif { D(bug("nfosmesa: glGetPerfQueryIdByNameINTEL(" PRI_PTR ", " PRI_PTR ")", AtariOffset(queryName), AtariOffset(queryId))); FN_GLGETPERFQUERYIDBYNAMEINTEL(queryName, queryId); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPerfQueryInfoINTEL(GLuint queryId, GLuint queryNameLength, memptr queryName, memptr dataSize, memptr noCounters, memptr noInstances, memptr capsMask) #else void OSMesaDriver::nfglGetPerfQueryInfoINTEL(GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask) #endif { D(bug("nfosmesa: glGetPerfQueryInfoINTEL(%u, %u, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", queryId, queryNameLength, AtariOffset(queryName), AtariOffset(dataSize), AtariOffset(noCounters), AtariOffset(noInstances), AtariOffset(capsMask))); FN_GLGETPERFQUERYINFOINTEL(queryId, queryNameLength, queryName, dataSize, noCounters, noInstances, capsMask); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPixelMapfv(GLenum map, memptr values) #else void OSMesaDriver::nfglGetPixelMapfv(GLenum map, GLfloat *values) #endif { D(bug("nfosmesa: glGetPixelMapfv(%s, " PRI_PTR ")", gl_enum_name(map), AtariOffset(values))); FN_GLGETPIXELMAPFV(map, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPixelMapuiv(GLenum map, memptr values) #else void OSMesaDriver::nfglGetPixelMapuiv(GLenum map, GLuint *values) #endif { D(bug("nfosmesa: glGetPixelMapuiv(%s, " PRI_PTR ")", gl_enum_name(map), AtariOffset(values))); FN_GLGETPIXELMAPUIV(map, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPixelMapusv(GLenum map, memptr values) #else void OSMesaDriver::nfglGetPixelMapusv(GLenum map, GLushort *values) #endif { D(bug("nfosmesa: glGetPixelMapusv(%s, " PRI_PTR ")", gl_enum_name(map), AtariOffset(values))); FN_GLGETPIXELMAPUSV(map, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPixelMapxv(GLenum map, GLint size, memptr values) #else void OSMesaDriver::nfglGetPixelMapxv(GLenum map, GLint size, GLfixed *values) #endif { D(bug("nfosmesa: glGetPixelMapxv(%s, %d, " PRI_PTR ")", gl_enum_name(map), size, AtariOffset(values))); FN_GLGETPIXELMAPXV(map, size, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPixelTexGenParameterfvSGIS(GLenum pname, memptr params) #else void OSMesaDriver::nfglGetPixelTexGenParameterfvSGIS(GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetPixelTexGenParameterfvSGIS(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLGETPIXELTEXGENPARAMETERFVSGIS(pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPixelTexGenParameterivSGIS(GLenum pname, memptr params) #else void OSMesaDriver::nfglGetPixelTexGenParameterivSGIS(GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetPixelTexGenParameterivSGIS(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLGETPIXELTEXGENPARAMETERIVSGIS(pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPixelTransformParameterfvEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetPixelTransformParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetPixelTransformParameterfvEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETPIXELTRANSFORMPARAMETERFVEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPixelTransformParameterivEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetPixelTransformParameterivEXT(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetPixelTransformParameterivEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETPIXELTRANSFORMPARAMETERIVEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPointerIndexedvEXT(GLenum target, GLuint index, memptr data) #else void OSMesaDriver::nfglGetPointerIndexedvEXT(GLenum target, GLuint index, void * *data) #endif { D(bug("nfosmesa: glGetPointerIndexedvEXT(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(data))); FN_GLGETPOINTERINDEXEDVEXT(target, index, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPointeri_vEXT(GLenum pname, GLuint index, memptr params) #else void OSMesaDriver::nfglGetPointeri_vEXT(GLenum pname, GLuint index, void * *params) #endif { D(bug("nfosmesa: glGetPointeri_vEXT(%s, %u, " PRI_PTR ")", gl_enum_name(pname), index, AtariOffset(params))); FN_GLGETPOINTERI_VEXT(pname, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPointerv(GLenum pname, memptr params) #else void OSMesaDriver::nfglGetPointerv(GLenum pname, GLvoid* *params) #endif { D(bug("nfosmesa: glGetPointerv(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLGETPOINTERV(pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPointervEXT(GLenum pname, memptr params) #else void OSMesaDriver::nfglGetPointervEXT(GLenum pname, void * *params) #endif { D(bug("nfosmesa: glGetPointervEXT(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLGETPOINTERVEXT(pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetPolygonStipple(memptr mask) #else void OSMesaDriver::nfglGetPolygonStipple(GLubyte *mask) #endif { D(bug("nfosmesa: glGetPolygonStipple(" PRI_PTR ")", AtariOffset(mask))); FN_GLGETPOLYGONSTIPPLE(mask); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramBinary(GLuint program, GLsizei bufSize, memptr length, memptr binaryFormat, memptr binary) #else void OSMesaDriver::nfglGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary) #endif { D(bug("nfosmesa: glGetProgramBinary(%u, %d, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", program, bufSize, AtariOffset(length), AtariOffset(binaryFormat), AtariOffset(binary))); FN_GLGETPROGRAMBINARY(program, bufSize, length, binaryFormat, binary); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramEnvParameterIivNV(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglGetProgramEnvParameterIivNV(GLenum target, GLuint index, GLint *params) #endif { D(bug("nfosmesa: glGetProgramEnvParameterIivNV(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLGETPROGRAMENVPARAMETERIIVNV(target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramEnvParameterIuivNV(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglGetProgramEnvParameterIuivNV(GLenum target, GLuint index, GLuint *params) #endif { D(bug("nfosmesa: glGetProgramEnvParameterIuivNV(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLGETPROGRAMENVPARAMETERIUIVNV(target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramEnvParameterdvARB(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglGetProgramEnvParameterdvARB(GLenum target, GLuint index, GLdouble *params) #endif { D(bug("nfosmesa: glGetProgramEnvParameterdvARB(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLGETPROGRAMENVPARAMETERDVARB(target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramEnvParameterfvARB(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglGetProgramEnvParameterfvARB(GLenum target, GLuint index, GLfloat *params) #endif { D(bug("nfosmesa: glGetProgramEnvParameterfvARB(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLGETPROGRAMENVPARAMETERFVARB(target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramInfoLog(GLuint program, GLsizei bufSize, memptr length, memptr infoLog) #else void OSMesaDriver::nfglGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) #endif { D(bug("nfosmesa: glGetProgramInfoLog(%u, %d, " PRI_PTR ", " PRI_PTR ")", program, bufSize, AtariOffset(length), AtariOffset(infoLog))); FN_GLGETPROGRAMINFOLOG(program, bufSize, length, infoLog); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetProgramInterfaceiv(%u, %s, %s, " PRI_PTR ")", program, gl_enum_name(programInterface), gl_enum_name(pname), AtariOffset(params))); FN_GLGETPROGRAMINTERFACEIV(program, programInterface, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramLocalParameterIivNV(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglGetProgramLocalParameterIivNV(GLenum target, GLuint index, GLint *params) #endif { D(bug("nfosmesa: glGetProgramLocalParameterIivNV(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLGETPROGRAMLOCALPARAMETERIIVNV(target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramLocalParameterIuivNV(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglGetProgramLocalParameterIuivNV(GLenum target, GLuint index, GLuint *params) #endif { D(bug("nfosmesa: glGetProgramLocalParameterIuivNV(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLGETPROGRAMLOCALPARAMETERIUIVNV(target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramLocalParameterdvARB(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglGetProgramLocalParameterdvARB(GLenum target, GLuint index, GLdouble *params) #endif { D(bug("nfosmesa: glGetProgramLocalParameterdvARB(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLGETPROGRAMLOCALPARAMETERDVARB(target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramLocalParameterfvARB(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglGetProgramLocalParameterfvARB(GLenum target, GLuint index, GLfloat *params) #endif { D(bug("nfosmesa: glGetProgramLocalParameterfvARB(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLGETPROGRAMLOCALPARAMETERFVARB(target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramNamedParameterdvNV(GLuint id, GLsizei len, memptr name, memptr params) #else void OSMesaDriver::nfglGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params) #endif { D(bug("nfosmesa: glGetProgramNamedParameterdvNV(%u, %d, " PRI_PTR ", " PRI_PTR ")", id, len, AtariOffset(name), AtariOffset(params))); FN_GLGETPROGRAMNAMEDPARAMETERDVNV(id, len, name, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramNamedParameterfvNV(GLuint id, GLsizei len, memptr name, memptr params) #else void OSMesaDriver::nfglGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params) #endif { D(bug("nfosmesa: glGetProgramNamedParameterfvNV(%u, %d, " PRI_PTR ", " PRI_PTR ")", id, len, AtariOffset(name), AtariOffset(params))); FN_GLGETPROGRAMNAMEDPARAMETERFVNV(id, len, name, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, GLdouble *params) #endif { D(bug("nfosmesa: glGetProgramParameterdvNV(%s, %u, %s, " PRI_PTR ")", gl_enum_name(target), index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETPROGRAMPARAMETERDVNV(target, index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetProgramParameterfvNV(%s, %u, %s, " PRI_PTR ")", gl_enum_name(target), index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETPROGRAMPARAMETERFVNV(target, index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, memptr length, memptr infoLog) #else void OSMesaDriver::nfglGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) #endif { D(bug("nfosmesa: glGetProgramPipelineInfoLog(%u, %d, " PRI_PTR ", " PRI_PTR ")", pipeline, bufSize, AtariOffset(length), AtariOffset(infoLog))); FN_GLGETPROGRAMPIPELINEINFOLOG(pipeline, bufSize, length, infoLog); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramPipelineiv(GLuint pipeline, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetProgramPipelineiv(%u, %s, " PRI_PTR ")", pipeline, gl_enum_name(pname), AtariOffset(params))); FN_GLGETPROGRAMPIPELINEIV(pipeline, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramRegisterfvMESA(GLenum target, GLsizei len, memptr name, memptr v) #else void OSMesaDriver::nfglGetProgramRegisterfvMESA(GLenum target, GLsizei len, const GLubyte *name, GLfloat *v) #endif { D(bug("nfosmesa: glGetProgramRegisterfvMESA(%s, %d, " PRI_PTR ", " PRI_PTR ")", gl_enum_name(target), len, AtariOffset(name), AtariOffset(v))); FN_GLGETPROGRAMREGISTERFVMESA(target, len, name, v); } #if NFOSMESA_POINTER_AS_MEMARG GLuint OSMesaDriver::nfglGetProgramResourceIndex(GLuint program, GLenum programInterface, memptr name) #else GLuint OSMesaDriver::nfglGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name) #endif { D(bug("nfosmesa: glGetProgramResourceIndex(%u, %s, " PRI_PTR ")", program, gl_enum_name(programInterface), AtariOffset(name))); FN_GLGETPROGRAMRESOURCEINDEX(program, programInterface, name); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglGetProgramResourceLocation(GLuint program, GLenum programInterface, memptr name) #else GLint OSMesaDriver::nfglGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name) #endif { D(bug("nfosmesa: glGetProgramResourceLocation(%u, %s, " PRI_PTR ")", program, gl_enum_name(programInterface), AtariOffset(name))); FN_GLGETPROGRAMRESOURCELOCATION(program, programInterface, name); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, memptr name) #else GLint OSMesaDriver::nfglGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name) #endif { D(bug("nfosmesa: glGetProgramResourceLocationIndex(%u, %s, " PRI_PTR ")", program, gl_enum_name(programInterface), AtariOffset(name))); FN_GLGETPROGRAMRESOURCELOCATIONINDEX(program, programInterface, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, memptr length, memptr name) #else void OSMesaDriver::nfglGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name) #endif { D(bug("nfosmesa: glGetProgramResourceName(%u, %s, %u, %d, " PRI_PTR ", " PRI_PTR ")", program, gl_enum_name(programInterface), index, bufSize, AtariOffset(length), AtariOffset(name))); FN_GLGETPROGRAMRESOURCENAME(program, programInterface, index, bufSize, length, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramResourcefvNV(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, memptr props, GLsizei bufSize, memptr length, memptr params) #else void OSMesaDriver::nfglGetProgramResourcefvNV(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params) #endif { D(bug("nfosmesa: glGetProgramResourcefvNV(%u, %s, %u, %d, " PRI_PTR ", %d, " PRI_PTR ", " PRI_PTR ")", program, gl_enum_name(programInterface), index, propCount, AtariOffset(props), bufSize, AtariOffset(length), AtariOffset(params))); FN_GLGETPROGRAMRESOURCEFVNV(program, programInterface, index, propCount, props, bufSize, length, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, memptr props, GLsizei bufSize, memptr length, memptr params) #else void OSMesaDriver::nfglGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params) #endif { D(bug("nfosmesa: glGetProgramResourceiv(%u, %s, %u, %d, " PRI_PTR ", %d, " PRI_PTR ", " PRI_PTR ")", program, gl_enum_name(programInterface), index, propCount, AtariOffset(props), bufSize, AtariOffset(length), AtariOffset(params))); FN_GLGETPROGRAMRESOURCEIV(program, programInterface, index, propCount, props, bufSize, length, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, memptr values) #else void OSMesaDriver::nfglGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) #endif { D(bug("nfosmesa: glGetProgramStageiv(%u, %s, %s, " PRI_PTR ")", program, gl_enum_name(shadertype), gl_enum_name(pname), AtariOffset(values))); FN_GLGETPROGRAMSTAGEIV(program, shadertype, pname, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramStringARB(GLenum target, GLenum pname, memptr string) #else void OSMesaDriver::nfglGetProgramStringARB(GLenum target, GLenum pname, void *string) #endif { D(bug("nfosmesa: glGetProgramStringARB(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(string))); FN_GLGETPROGRAMSTRINGARB(target, pname, string); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramStringNV(GLuint id, GLenum pname, memptr program) #else void OSMesaDriver::nfglGetProgramStringNV(GLuint id, GLenum pname, GLubyte *program) #endif { D(bug("nfosmesa: glGetProgramStringNV(%u, %s, " PRI_PTR ")", id, gl_enum_name(pname), AtariOffset(program))); FN_GLGETPROGRAMSTRINGNV(id, pname, program); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramSubroutineParameteruivNV(GLenum target, GLuint index, memptr param) #else void OSMesaDriver::nfglGetProgramSubroutineParameteruivNV(GLenum target, GLuint index, GLuint *param) #endif { D(bug("nfosmesa: glGetProgramSubroutineParameteruivNV(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(param))); FN_GLGETPROGRAMSUBROUTINEPARAMETERUIVNV(target, index, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramiv(GLuint program, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetProgramiv(GLuint program, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetProgramiv(%u, %s, " PRI_PTR ")", program, gl_enum_name(pname), AtariOffset(params))); FN_GLGETPROGRAMIV(program, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramivARB(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetProgramivARB(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetProgramivARB(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETPROGRAMIVARB(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetProgramivNV(GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetProgramivNV(GLuint id, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetProgramivNV(%u, %s, " PRI_PTR ")", id, gl_enum_name(pname), AtariOffset(params))); FN_GLGETPROGRAMIVNV(id, pname, params); } void OSMesaDriver::nfglGetQueryBufferObjecti64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) { D(bug("nfosmesa: glGetQueryBufferObjecti64v(%u, %u, %s, %" PRI_IPTR ")", id, buffer, gl_enum_name(pname), offset)); fn.glGetQueryBufferObjecti64v(id, buffer, pname, offset); } void OSMesaDriver::nfglGetQueryBufferObjectiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) { D(bug("nfosmesa: glGetQueryBufferObjectiv(%u, %u, %s, %" PRI_IPTR ")", id, buffer, gl_enum_name(pname), offset)); fn.glGetQueryBufferObjectiv(id, buffer, pname, offset); } void OSMesaDriver::nfglGetQueryBufferObjectui64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) { D(bug("nfosmesa: glGetQueryBufferObjectui64v(%u, %u, %s, %" PRI_IPTR ")", id, buffer, gl_enum_name(pname), offset)); fn.glGetQueryBufferObjectui64v(id, buffer, pname, offset); } void OSMesaDriver::nfglGetQueryBufferObjectuiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) { D(bug("nfosmesa: glGetQueryBufferObjectuiv(%u, %u, %s, %" PRI_IPTR ")", id, buffer, gl_enum_name(pname), offset)); fn.glGetQueryBufferObjectuiv(id, buffer, pname, offset); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetQueryIndexediv(%s, %u, %s, " PRI_PTR ")", gl_enum_name(target), index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETQUERYINDEXEDIV(target, index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetQueryObjecti64v(GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) #endif { D(bug("nfosmesa: glGetQueryObjecti64v(%u, %s, " PRI_PTR ")", id, gl_enum_name(pname), AtariOffset(params))); FN_GLGETQUERYOBJECTI64V(id, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetQueryObjecti64vEXT(GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64 *params) #endif { D(bug("nfosmesa: glGetQueryObjecti64vEXT(%u, %s, " PRI_PTR ")", id, gl_enum_name(pname), AtariOffset(params))); FN_GLGETQUERYOBJECTI64VEXT(id, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetQueryObjectiv(GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetQueryObjectiv(%u, %s, " PRI_PTR ")", id, gl_enum_name(pname), AtariOffset(params))); FN_GLGETQUERYOBJECTIV(id, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetQueryObjectivARB(GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetQueryObjectivARB(GLuint id, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetQueryObjectivARB(%u, %s, " PRI_PTR ")", id, gl_enum_name(pname), AtariOffset(params))); FN_GLGETQUERYOBJECTIVARB(id, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetQueryObjectui64v(GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) #endif { D(bug("nfosmesa: glGetQueryObjectui64v(%u, %s, " PRI_PTR ")", id, gl_enum_name(pname), AtariOffset(params))); FN_GLGETQUERYOBJECTUI64V(id, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetQueryObjectui64vEXT(GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64 *params) #endif { D(bug("nfosmesa: glGetQueryObjectui64vEXT(%u, %s, " PRI_PTR ")", id, gl_enum_name(pname), AtariOffset(params))); FN_GLGETQUERYOBJECTUI64VEXT(id, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetQueryObjectuiv(GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) #endif { D(bug("nfosmesa: glGetQueryObjectuiv(%u, %s, " PRI_PTR ")", id, gl_enum_name(pname), AtariOffset(params))); FN_GLGETQUERYOBJECTUIV(id, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetQueryObjectuivARB(GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint *params) #endif { D(bug("nfosmesa: glGetQueryObjectuivARB(%u, %s, " PRI_PTR ")", id, gl_enum_name(pname), AtariOffset(params))); FN_GLGETQUERYOBJECTUIVARB(id, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetQueryiv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetQueryiv(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetQueryiv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETQUERYIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetQueryivARB(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetQueryivARB(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetQueryivARB(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETQUERYIVARB(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetRenderbufferParameteriv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetRenderbufferParameteriv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETRENDERBUFFERPARAMETERIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetRenderbufferParameterivEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetRenderbufferParameterivEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETRENDERBUFFERPARAMETERIVEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetSamplerParameterIiv(GLuint sampler, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetSamplerParameterIiv(%u, %s, " PRI_PTR ")", sampler, gl_enum_name(pname), AtariOffset(params))); FN_GLGETSAMPLERPARAMETERIIV(sampler, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetSamplerParameterIuiv(GLuint sampler, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) #endif { D(bug("nfosmesa: glGetSamplerParameterIuiv(%u, %s, " PRI_PTR ")", sampler, gl_enum_name(pname), AtariOffset(params))); FN_GLGETSAMPLERPARAMETERIUIV(sampler, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetSamplerParameterfv(GLuint sampler, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetSamplerParameterfv(%u, %s, " PRI_PTR ")", sampler, gl_enum_name(pname), AtariOffset(params))); FN_GLGETSAMPLERPARAMETERFV(sampler, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetSamplerParameteriv(GLuint sampler, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetSamplerParameteriv(%u, %s, " PRI_PTR ")", sampler, gl_enum_name(pname), AtariOffset(params))); FN_GLGETSAMPLERPARAMETERIV(sampler, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetSemaphoreParameterui64vEXT(GLuint semaphore, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetSemaphoreParameterui64vEXT(GLuint semaphore, GLenum pname, GLuint64 *params) #endif { D(bug("nfosmesa: glGetSemaphoreParameterui64vEXT(%u, %s, " PRI_PTR ")", semaphore, gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = nfglGetNumParams(pname); GLuint64 __params_tmp[__params_size]; fn.glGetSemaphoreParameterui64vEXT(semaphore, pname, __params_tmp); Host2AtariInt64Array(__params_size, __params_tmp, params); #else fn.glGetSemaphoreParameterui64vEXT(semaphore, pname, HostAddr(params, GLuint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetSeparableFilter(GLenum target, GLenum format, GLenum type, memptr row, memptr column, memptr span) #else void OSMesaDriver::nfglGetSeparableFilter(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span) #endif { D(bug("nfosmesa: glGetSeparableFilter(%s, %s, %s, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", gl_enum_name(target), gl_enum_name(format), gl_enum_name(type), AtariOffset(row), AtariOffset(column), AtariOffset(span))); FN_GLGETSEPARABLEFILTER(target, format, type, row, column, span); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetSeparableFilterEXT(GLenum target, GLenum format, GLenum type, memptr row, memptr column, memptr span) #else void OSMesaDriver::nfglGetSeparableFilterEXT(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span) #endif { D(bug("nfosmesa: glGetSeparableFilterEXT(%s, %s, %s, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", gl_enum_name(target), gl_enum_name(format), gl_enum_name(type), AtariOffset(row), AtariOffset(column), AtariOffset(span))); FN_GLGETSEPARABLEFILTEREXT(target, format, type, row, column, span); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetShaderInfoLog(GLuint shader, GLsizei bufSize, memptr length, memptr infoLog) #else void OSMesaDriver::nfglGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) #endif { D(bug("nfosmesa: glGetShaderInfoLog(%u, %d, " PRI_PTR ", " PRI_PTR ")", shader, bufSize, AtariOffset(length), AtariOffset(infoLog))); FN_GLGETSHADERINFOLOG(shader, bufSize, length, infoLog); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, memptr range, memptr precision) #else void OSMesaDriver::nfglGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) #endif { D(bug("nfosmesa: glGetShaderPrecisionFormat(%s, %s, " PRI_PTR ", " PRI_PTR ")", gl_enum_name(shadertype), gl_enum_name(precisiontype), AtariOffset(range), AtariOffset(precision))); FN_GLGETSHADERPRECISIONFORMAT(shadertype, precisiontype, range, precision); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetShaderSource(GLuint shader, GLsizei bufSize, memptr length, memptr source) #else void OSMesaDriver::nfglGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) #endif { D(bug("nfosmesa: glGetShaderSource(%u, %d, " PRI_PTR ", " PRI_PTR ")", shader, bufSize, AtariOffset(length), AtariOffset(source))); FN_GLGETSHADERSOURCE(shader, bufSize, length, source); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetShaderSourceARB(GLhandleARB obj, GLsizei maxLength, memptr length, memptr source) #else void OSMesaDriver::nfglGetShaderSourceARB(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source) #endif { D(bug("nfosmesa: glGetShaderSourceARB(%u, %d, " PRI_PTR ", " PRI_PTR ")", (unsigned int)(uintptr_t)obj, maxLength, AtariOffset(length), AtariOffset(source))); #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV GLint const __length_size = 1; GLsizei __length_tmp[__length_size] = { 0 }; GLint const __source_size = MAX(maxLength, 0); GLcharARB __source_tmp[__source_size]; fn.glGetShaderSourceARB(obj, maxLength, __length_tmp, __source_tmp); Host2AtariIntArray(__length_size, __length_tmp, length); Host2AtariByteArray(MIN(__length_tmp[0] + 1, maxLength), __source_tmp, source); #else fn.glGetShaderSourceARB(obj, maxLength, HostAddr(length, GLsizei *), HostAddr(source, GLcharARB *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetShaderiv(GLuint shader, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetShaderiv(GLuint shader, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetShaderiv(%u, %s, " PRI_PTR ")", shader, gl_enum_name(pname), AtariOffset(params))); FN_GLGETSHADERIV(shader, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetSharpenTexFuncSGIS(GLenum target, memptr points) #else void OSMesaDriver::nfglGetSharpenTexFuncSGIS(GLenum target, GLfloat *points) #endif { D(bug("nfosmesa: glGetSharpenTexFuncSGIS(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(points))); FN_GLGETSHARPENTEXFUNCSGIS(target, points); } GLushort OSMesaDriver::nfglGetStageIndexNV(GLenum shadertype) { D(bug("nfosmesa: glGetStageIndexNV(%s)", gl_enum_name(shadertype))); GLushort __ret = fn.glGetStageIndexNV(shadertype); return __ret; } #if 0 const GLubyte * OSMesaDriver::nfglGetString(GLenum name) { D(bug("nfosmesa: glGetString(%s)", gl_enum_name(name))); FN_GLGETSTRING(name); } #endif #if 0 const GLubyte * OSMesaDriver::nfglGetStringi(GLenum name, GLuint index) { D(bug("nfosmesa: glGetStringi(%s, %u)", gl_enum_name(name), index)); const GLubyte * __ret = fn.glGetStringi(name, index); return __ret; } #endif #if NFOSMESA_POINTER_AS_MEMARG GLuint OSMesaDriver::nfglGetSubroutineIndex(GLuint program, GLenum shadertype, memptr name) #else GLuint OSMesaDriver::nfglGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) #endif { D(bug("nfosmesa: glGetSubroutineIndex(%u, %s, " PRI_PTR ")", program, gl_enum_name(shadertype), AtariOffset(name))); FN_GLGETSUBROUTINEINDEX(program, shadertype, name); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglGetSubroutineUniformLocation(GLuint program, GLenum shadertype, memptr name) #else GLint OSMesaDriver::nfglGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) #endif { D(bug("nfosmesa: glGetSubroutineUniformLocation(%u, %s, " PRI_PTR ")", program, gl_enum_name(shadertype), AtariOffset(name))); FN_GLGETSUBROUTINEUNIFORMLOCATION(program, shadertype, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, memptr length, memptr values) #else void OSMesaDriver::nfglGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) #endif { D(bug("nfosmesa: glGetSynciv(" PRI_PTR ", %s, %d, " PRI_PTR ", " PRI_PTR ")", (unsigned int)(uintptr_t)sync, gl_enum_name(pname), bufSize, AtariOffset(length), AtariOffset(values))); FN_GLGETSYNCIV(sync, pname, bufSize, length, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexBumpParameterfvATI(GLenum pname, memptr param) #else void OSMesaDriver::nfglGetTexBumpParameterfvATI(GLenum pname, GLfloat *param) #endif { D(bug("nfosmesa: glGetTexBumpParameterfvATI(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(param))); FN_GLGETTEXBUMPPARAMETERFVATI(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexBumpParameterivATI(GLenum pname, memptr param) #else void OSMesaDriver::nfglGetTexBumpParameterivATI(GLenum pname, GLint *param) #endif { D(bug("nfosmesa: glGetTexBumpParameterivATI(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(param))); FN_GLGETTEXBUMPPARAMETERIVATI(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexEnvfv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetTexEnvfv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXENVFV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexEnviv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexEnviv(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetTexEnviv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXENVIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexEnvxvOES(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexEnvxvOES(GLenum target, GLenum pname, GLfixed *params) #endif { D(bug("nfosmesa: glGetTexEnvxvOES(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXENVXVOES(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexFilterFuncSGIS(GLenum target, GLenum filter, memptr weights) #else void OSMesaDriver::nfglGetTexFilterFuncSGIS(GLenum target, GLenum filter, GLfloat *weights) #endif { D(bug("nfosmesa: glGetTexFilterFuncSGIS(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(filter), AtariOffset(weights))); FN_GLGETTEXFILTERFUNCSGIS(target, filter, weights); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexGendv(GLenum coord, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) #endif { D(bug("nfosmesa: glGetTexGendv(%s, %s, " PRI_PTR ")", gl_enum_name(coord), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXGENDV(coord, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexGenfv(GLenum coord, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetTexGenfv(%s, %s, " PRI_PTR ")", gl_enum_name(coord), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXGENFV(coord, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexGeniv(GLenum coord, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexGeniv(GLenum coord, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetTexGeniv(%s, %s, " PRI_PTR ")", gl_enum_name(coord), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXGENIV(coord, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexGenxvOES(GLenum coord, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params) #endif { D(bug("nfosmesa: glGetTexGenxvOES(%s, %s, " PRI_PTR ")", gl_enum_name(coord), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXGENXVOES(coord, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) #endif { D(bug("nfosmesa: glGetTexImage(%s, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), level, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLGETTEXIMAGE(target, level, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetTexLevelParameterfv(%s, %d, %s, " PRI_PTR ")", gl_enum_name(target), level, gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXLEVELPARAMETERFV(target, level, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetTexLevelParameteriv(%s, %d, %s, " PRI_PTR ")", gl_enum_name(target), level, gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXLEVELPARAMETERIV(target, level, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexLevelParameterxvOES(GLenum target, GLint level, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexLevelParameterxvOES(GLenum target, GLint level, GLenum pname, GLfixed *params) #endif { D(bug("nfosmesa: glGetTexLevelParameterxvOES(%s, %d, %s, " PRI_PTR ")", gl_enum_name(target), level, gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXLEVELPARAMETERXVOES(target, level, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexParameterIiv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetTexParameterIiv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXPARAMETERIIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexParameterIivEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexParameterIivEXT(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetTexParameterIivEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXPARAMETERIIVEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexParameterIuiv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) #endif { D(bug("nfosmesa: glGetTexParameterIuiv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXPARAMETERIUIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexParameterIuivEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint *params) #endif { D(bug("nfosmesa: glGetTexParameterIuivEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXPARAMETERIUIVEXT(target, pname, params); } #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexParameterPointervAPPLE(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexParameterPointervAPPLE(GLenum target, GLenum pname, void * *params) #endif { D(bug("nfosmesa: glGetTexParameterPointervAPPLE(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXPARAMETERPOINTERVAPPLE(target, pname, params); } #endif #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexParameterfv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetTexParameterfv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXPARAMETERFV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexParameteriv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexParameteriv(GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetTexParameteriv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXPARAMETERIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTexParameterxvOES(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed *params) #endif { D(bug("nfosmesa: glGetTexParameterxvOES(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXPARAMETERXVOES(target, pname, params); } GLuint64 OSMesaDriver::nfglGetTextureHandleARB(GLuint texture) { D(bug("nfosmesa: glGetTextureHandleARB(%u)", texture)); FN_GLGETTEXTUREHANDLEARB(texture); } GLuint64 OSMesaDriver::nfglGetTextureHandleNV(GLuint texture) { D(bug("nfosmesa: glGetTextureHandleNV(%u)", texture)); FN_GLGETTEXTUREHANDLENV(texture); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureImage(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, memptr pixels) #else void OSMesaDriver::nfglGetTextureImage(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels) #endif { D(bug("nfosmesa: glGetTextureImage(%u, %d, %s, %s, %d, " PRI_PTR ")", texture, level, gl_enum_name(format), gl_enum_name(type), bufSize, AtariOffset(pixels))); FN_GLGETTEXTUREIMAGE(texture, level, format, type, bufSize, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureImageEXT(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglGetTextureImageEXT(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels) #endif { D(bug("nfosmesa: glGetTextureImageEXT(%u, %s, %d, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), level, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLGETTEXTUREIMAGEEXT(texture, target, level, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureLevelParameterfv(GLuint texture, GLint level, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTextureLevelParameterfv(GLuint texture, GLint level, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetTextureLevelParameterfv(%u, %d, %s, " PRI_PTR ")", texture, level, gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXTURELEVELPARAMETERFV(texture, level, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureLevelParameterfvEXT(GLuint texture, GLenum target, GLint level, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTextureLevelParameterfvEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetTextureLevelParameterfvEXT(%u, %s, %d, %s, " PRI_PTR ")", texture, gl_enum_name(target), level, gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXTURELEVELPARAMETERFVEXT(texture, target, level, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureLevelParameteriv(GLuint texture, GLint level, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTextureLevelParameteriv(GLuint texture, GLint level, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetTextureLevelParameteriv(%u, %d, %s, " PRI_PTR ")", texture, level, gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXTURELEVELPARAMETERIV(texture, level, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureLevelParameterivEXT(GLuint texture, GLenum target, GLint level, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTextureLevelParameterivEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetTextureLevelParameterivEXT(%u, %s, %d, %s, " PRI_PTR ")", texture, gl_enum_name(target), level, gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXTURELEVELPARAMETERIVEXT(texture, target, level, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureParameterIiv(GLuint texture, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTextureParameterIiv(GLuint texture, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetTextureParameterIiv(%u, %s, " PRI_PTR ")", texture, gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXTUREPARAMETERIIV(texture, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetTextureParameterIivEXT(%u, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXTUREPARAMETERIIVEXT(texture, target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureParameterIuiv(GLuint texture, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTextureParameterIuiv(GLuint texture, GLenum pname, GLuint *params) #endif { D(bug("nfosmesa: glGetTextureParameterIuiv(%u, %s, " PRI_PTR ")", texture, gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXTUREPARAMETERIUIV(texture, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, GLuint *params) #endif { D(bug("nfosmesa: glGetTextureParameterIuivEXT(%u, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXTUREPARAMETERIUIVEXT(texture, target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureParameterfv(GLuint texture, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTextureParameterfv(GLuint texture, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetTextureParameterfv(%u, %s, " PRI_PTR ")", texture, gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXTUREPARAMETERFV(texture, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetTextureParameterfvEXT(%u, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXTUREPARAMETERFVEXT(texture, target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureParameteriv(GLuint texture, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTextureParameteriv(GLuint texture, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetTextureParameteriv(%u, %s, " PRI_PTR ")", texture, gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXTUREPARAMETERIV(texture, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetTextureParameterivEXT(%u, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLGETTEXTUREPARAMETERIVEXT(texture, target, pname, params); } GLuint64 OSMesaDriver::nfglGetTextureSamplerHandleARB(GLuint texture, GLuint sampler) { D(bug("nfosmesa: glGetTextureSamplerHandleARB(%u, %u)", texture, sampler)); FN_GLGETTEXTURESAMPLERHANDLEARB(texture, sampler); } GLuint64 OSMesaDriver::nfglGetTextureSamplerHandleNV(GLuint texture, GLuint sampler) { D(bug("nfosmesa: glGetTextureSamplerHandleNV(%u, %u)", texture, sampler)); FN_GLGETTEXTURESAMPLERHANDLENV(texture, sampler); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, memptr pixels) #else void OSMesaDriver::nfglGetTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels) #endif { D(bug("nfosmesa: glGetTextureSubImage(%u, %d, %d, %d, %d, %d, %d, %d, %s, %s, %d, " PRI_PTR ")", texture, level, xoffset, yoffset, zoffset, width, height, depth, gl_enum_name(format), gl_enum_name(type), bufSize, AtariOffset(pixels))); FN_GLGETTEXTURESUBIMAGE(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetTrackMatrixivNV(%s, %u, %s, " PRI_PTR ")", gl_enum_name(target), address, gl_enum_name(pname), AtariOffset(params))); FN_GLGETTRACKMATRIXIVNV(target, address, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, memptr length, memptr size, memptr type, memptr name) #else void OSMesaDriver::nfglGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) #endif { D(bug("nfosmesa: glGetTransformFeedbackVarying(%u, %u, %d, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", program, index, bufSize, AtariOffset(length), AtariOffset(size), AtariOffset(type), AtariOffset(name))); FN_GLGETTRANSFORMFEEDBACKVARYING(program, index, bufSize, length, size, type, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTransformFeedbackVaryingEXT(GLuint program, GLuint index, GLsizei bufSize, memptr length, memptr size, memptr type, memptr name) #else void OSMesaDriver::nfglGetTransformFeedbackVaryingEXT(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) #endif { D(bug("nfosmesa: glGetTransformFeedbackVaryingEXT(%u, %u, %d, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", program, index, bufSize, AtariOffset(length), AtariOffset(size), AtariOffset(type), AtariOffset(name))); FN_GLGETTRANSFORMFEEDBACKVARYINGEXT(program, index, bufSize, length, size, type, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTransformFeedbackVaryingNV(GLuint program, GLuint index, memptr location) #else void OSMesaDriver::nfglGetTransformFeedbackVaryingNV(GLuint program, GLuint index, GLint *location) #endif { D(bug("nfosmesa: glGetTransformFeedbackVaryingNV(%u, %u, " PRI_PTR ")", program, index, AtariOffset(location))); FN_GLGETTRANSFORMFEEDBACKVARYINGNV(program, index, location); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTransformFeedbacki64_v(GLuint xfb, GLenum pname, GLuint index, memptr param) #else void OSMesaDriver::nfglGetTransformFeedbacki64_v(GLuint xfb, GLenum pname, GLuint index, GLint64 *param) #endif { D(bug("nfosmesa: glGetTransformFeedbacki64_v(%u, %s, %u, " PRI_PTR ")", xfb, gl_enum_name(pname), index, AtariOffset(param))); FN_GLGETTRANSFORMFEEDBACKI64_V(xfb, pname, index, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTransformFeedbacki_v(GLuint xfb, GLenum pname, GLuint index, memptr param) #else void OSMesaDriver::nfglGetTransformFeedbacki_v(GLuint xfb, GLenum pname, GLuint index, GLint *param) #endif { D(bug("nfosmesa: glGetTransformFeedbacki_v(%u, %s, %u, " PRI_PTR ")", xfb, gl_enum_name(pname), index, AtariOffset(param))); FN_GLGETTRANSFORMFEEDBACKI_V(xfb, pname, index, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetTransformFeedbackiv(GLuint xfb, GLenum pname, memptr param) #else void OSMesaDriver::nfglGetTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param) #endif { D(bug("nfosmesa: glGetTransformFeedbackiv(%u, %s, " PRI_PTR ")", xfb, gl_enum_name(pname), AtariOffset(param))); FN_GLGETTRANSFORMFEEDBACKIV(xfb, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG GLuint OSMesaDriver::nfglGetUniformBlockIndex(GLuint program, memptr uniformBlockName) #else GLuint OSMesaDriver::nfglGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) #endif { D(bug("nfosmesa: glGetUniformBlockIndex(%u, " PRI_PTR ")", program, AtariOffset(uniformBlockName))); FN_GLGETUNIFORMBLOCKINDEX(program, uniformBlockName); } GLint OSMesaDriver::nfglGetUniformBufferSizeEXT(GLuint program, GLint location) { D(bug("nfosmesa: glGetUniformBufferSizeEXT(%u, %d)", program, location)); GLint __ret = fn.glGetUniformBufferSizeEXT(program, location); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUniformIndices(GLuint program, GLsizei uniformCount, memptr uniformNames, memptr uniformIndices) #else void OSMesaDriver::nfglGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices) #endif { D(bug("nfosmesa: glGetUniformIndices(%u, %d, " PRI_PTR ", " PRI_PTR ")", program, uniformCount, AtariOffset(uniformNames), AtariOffset(uniformIndices))); FN_GLGETUNIFORMINDICES(program, uniformCount, uniformNames, uniformIndices); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglGetUniformLocation(GLuint program, memptr name) #else GLint OSMesaDriver::nfglGetUniformLocation(GLuint program, const GLchar *name) #endif { D(bug("nfosmesa: glGetUniformLocation(%u, " PRI_PTR ")", program, AtariOffset(name))); FN_GLGETUNIFORMLOCATION(program, name); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglGetUniformLocationARB(GLhandleARB programObj, memptr name) #else GLint OSMesaDriver::nfglGetUniformLocationARB(GLhandleARB programObj, const GLcharARB *name) #endif { D(bug("nfosmesa: glGetUniformLocationARB(%u, " PRI_PTR ")", (unsigned int)(uintptr_t)programObj, AtariOffset(name))); #if NFOSMESA_NEED_BYTE_CONV GLint const __name_size = safe_strlen(name); GLcharARB __name_tmp[__name_size]; GLcharARB *__name_ptmp = Atari2HostByteArray(__name_size, name, __name_tmp); GLint __ret = fn.glGetUniformLocationARB(programObj, __name_ptmp); #else GLint __ret = fn.glGetUniformLocationARB(programObj, HostAddr(name, const GLcharARB *)); #endif return __ret; } GLintptr OSMesaDriver::nfglGetUniformOffsetEXT(GLuint program, GLint location) { D(bug("nfosmesa: glGetUniformOffsetEXT(%u, %d)", program, location)); GLintptr __ret = fn.glGetUniformOffsetEXT(program, location); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUniformSubroutineuiv(GLenum shadertype, GLint location, memptr params) #else void OSMesaDriver::nfglGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) #endif { D(bug("nfosmesa: glGetUniformSubroutineuiv(%s, %d, " PRI_PTR ")", gl_enum_name(shadertype), location, AtariOffset(params))); FN_GLGETUNIFORMSUBROUTINEUIV(shadertype, location, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUniformdv(GLuint program, GLint location, memptr params) #else void OSMesaDriver::nfglGetUniformdv(GLuint program, GLint location, GLdouble *params) #endif { D(bug("nfosmesa: glGetUniformdv(%u, %d, " PRI_PTR ")", program, location, AtariOffset(params))); FN_GLGETUNIFORMDV(program, location, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUniformfv(GLuint program, GLint location, memptr params) #else void OSMesaDriver::nfglGetUniformfv(GLuint program, GLint location, GLfloat *params) #endif { D(bug("nfosmesa: glGetUniformfv(%u, %d, " PRI_PTR ")", program, location, AtariOffset(params))); FN_GLGETUNIFORMFV(program, location, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUniformfvARB(GLhandleARB programObj, GLint location, memptr params) #else void OSMesaDriver::nfglGetUniformfvARB(GLhandleARB programObj, GLint location, GLfloat *params) #endif { D(bug("nfosmesa: glGetUniformfvARB(%u, %d, " PRI_PTR ")", (unsigned int)(uintptr_t)programObj, location, AtariOffset(params))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __params_size = 1; GLfloat __params_tmp[__params_size] = { 0 }; fn.glGetUniformfvARB(programObj, location, __params_tmp); Host2AtariFloatArray(__params_size, __params_tmp, params); #else fn.glGetUniformfvARB(programObj, location, HostAddr(params, GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUniformi64vARB(GLuint program, GLint location, memptr params) #else void OSMesaDriver::nfglGetUniformi64vARB(GLuint program, GLint location, GLint64 *params) #endif { D(bug("nfosmesa: glGetUniformi64vARB(%u, %d, " PRI_PTR ")", program, location, AtariOffset(params))); FN_GLGETUNIFORMI64VARB(program, location, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUniformi64vNV(GLuint program, GLint location, memptr params) #else void OSMesaDriver::nfglGetUniformi64vNV(GLuint program, GLint location, GLint64EXT *params) #endif { D(bug("nfosmesa: glGetUniformi64vNV(%u, %d, " PRI_PTR ")", program, location, AtariOffset(params))); FN_GLGETUNIFORMI64VNV(program, location, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUniformiv(GLuint program, GLint location, memptr params) #else void OSMesaDriver::nfglGetUniformiv(GLuint program, GLint location, GLint *params) #endif { D(bug("nfosmesa: glGetUniformiv(%u, %d, " PRI_PTR ")", program, location, AtariOffset(params))); FN_GLGETUNIFORMIV(program, location, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUniformivARB(GLhandleARB programObj, GLint location, memptr params) #else void OSMesaDriver::nfglGetUniformivARB(GLhandleARB programObj, GLint location, GLint *params) #endif { D(bug("nfosmesa: glGetUniformivARB(%u, %d, " PRI_PTR ")", (unsigned int)(uintptr_t)programObj, location, AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = 1; GLint __params_tmp[__params_size] = { 0 }; fn.glGetUniformivARB(programObj, location, __params_tmp); Host2AtariIntArray(__params_size, __params_tmp, params); #else fn.glGetUniformivARB(programObj, location, HostAddr(params, GLint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUniformui64vARB(GLuint program, GLint location, memptr params) #else void OSMesaDriver::nfglGetUniformui64vARB(GLuint program, GLint location, GLuint64 *params) #endif { D(bug("nfosmesa: glGetUniformui64vARB(%u, %d, " PRI_PTR ")", program, location, AtariOffset(params))); FN_GLGETUNIFORMUI64VARB(program, location, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUniformui64vNV(GLuint program, GLint location, memptr params) #else void OSMesaDriver::nfglGetUniformui64vNV(GLuint program, GLint location, GLuint64EXT *params) #endif { D(bug("nfosmesa: glGetUniformui64vNV(%u, %d, " PRI_PTR ")", program, location, AtariOffset(params))); FN_GLGETUNIFORMUI64VNV(program, location, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUniformuiv(GLuint program, GLint location, memptr params) #else void OSMesaDriver::nfglGetUniformuiv(GLuint program, GLint location, GLuint *params) #endif { D(bug("nfosmesa: glGetUniformuiv(%u, %d, " PRI_PTR ")", program, location, AtariOffset(params))); FN_GLGETUNIFORMUIV(program, location, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUniformuivEXT(GLuint program, GLint location, memptr params) #else void OSMesaDriver::nfglGetUniformuivEXT(GLuint program, GLint location, GLuint *params) #endif { D(bug("nfosmesa: glGetUniformuivEXT(%u, %d, " PRI_PTR ")", program, location, AtariOffset(params))); FN_GLGETUNIFORMUIVEXT(program, location, params); } #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUnsignedBytei_vEXT(GLenum target, GLuint index, memptr data) #else void OSMesaDriver::nfglGetUnsignedBytei_vEXT(GLenum target, GLuint index, GLubyte *data) #endif { D(bug("nfosmesa: glGetUnsignedBytei_vEXT(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(data))); fn.glGetUnsignedBytei_vEXT(target, index, data); } #endif #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetUnsignedBytevEXT(GLenum pname, memptr data) #else void OSMesaDriver::nfglGetUnsignedBytevEXT(GLenum pname, GLubyte *data) #endif { D(bug("nfosmesa: glGetUnsignedBytevEXT(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(data))); fn.glGetUnsignedBytevEXT(pname, data); } #endif #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVariantArrayObjectfvATI(GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVariantArrayObjectfvATI(GLuint id, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetVariantArrayObjectfvATI(%u, %s, " PRI_PTR ")", id, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVARIANTARRAYOBJECTFVATI(id, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVariantArrayObjectivATI(GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVariantArrayObjectivATI(GLuint id, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetVariantArrayObjectivATI(%u, %s, " PRI_PTR ")", id, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVARIANTARRAYOBJECTIVATI(id, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVariantBooleanvEXT(GLuint id, GLenum value, memptr data) #else void OSMesaDriver::nfglGetVariantBooleanvEXT(GLuint id, GLenum value, GLboolean *data) #endif { D(bug("nfosmesa: glGetVariantBooleanvEXT(%u, %s, " PRI_PTR ")", id, gl_enum_name(value), AtariOffset(data))); FN_GLGETVARIANTBOOLEANVEXT(id, value, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVariantFloatvEXT(GLuint id, GLenum value, memptr data) #else void OSMesaDriver::nfglGetVariantFloatvEXT(GLuint id, GLenum value, GLfloat *data) #endif { D(bug("nfosmesa: glGetVariantFloatvEXT(%u, %s, " PRI_PTR ")", id, gl_enum_name(value), AtariOffset(data))); FN_GLGETVARIANTFLOATVEXT(id, value, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVariantIntegervEXT(GLuint id, GLenum value, memptr data) #else void OSMesaDriver::nfglGetVariantIntegervEXT(GLuint id, GLenum value, GLint *data) #endif { D(bug("nfosmesa: glGetVariantIntegervEXT(%u, %s, " PRI_PTR ")", id, gl_enum_name(value), AtariOffset(data))); FN_GLGETVARIANTINTEGERVEXT(id, value, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVariantPointervEXT(GLuint id, GLenum value, memptr data) #else void OSMesaDriver::nfglGetVariantPointervEXT(GLuint id, GLenum value, void * *data) #endif { D(bug("nfosmesa: glGetVariantPointervEXT(%u, %s, " PRI_PTR ")", id, gl_enum_name(value), AtariOffset(data))); FN_GLGETVARIANTPOINTERVEXT(id, value, data); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglGetVaryingLocationNV(GLuint program, memptr name) #else GLint OSMesaDriver::nfglGetVaryingLocationNV(GLuint program, const GLchar *name) #endif { D(bug("nfosmesa: glGetVaryingLocationNV(%u, " PRI_PTR ")", program, AtariOffset(name))); FN_GLGETVARYINGLOCATIONNV(program, name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexArrayIndexed64iv(GLuint vaobj, GLuint index, GLenum pname, memptr param) #else void OSMesaDriver::nfglGetVertexArrayIndexed64iv(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param) #endif { D(bug("nfosmesa: glGetVertexArrayIndexed64iv(%u, %u, %s, " PRI_PTR ")", vaobj, index, gl_enum_name(pname), AtariOffset(param))); FN_GLGETVERTEXARRAYINDEXED64IV(vaobj, index, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexArrayIndexediv(GLuint vaobj, GLuint index, GLenum pname, memptr param) #else void OSMesaDriver::nfglGetVertexArrayIndexediv(GLuint vaobj, GLuint index, GLenum pname, GLint *param) #endif { D(bug("nfosmesa: glGetVertexArrayIndexediv(%u, %u, %s, " PRI_PTR ")", vaobj, index, gl_enum_name(pname), AtariOffset(param))); FN_GLGETVERTEXARRAYINDEXEDIV(vaobj, index, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexArrayIntegeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, memptr param) #else void OSMesaDriver::nfglGetVertexArrayIntegeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, GLint *param) #endif { D(bug("nfosmesa: glGetVertexArrayIntegeri_vEXT(%u, %u, %s, " PRI_PTR ")", vaobj, index, gl_enum_name(pname), AtariOffset(param))); FN_GLGETVERTEXARRAYINTEGERI_VEXT(vaobj, index, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexArrayIntegervEXT(GLuint vaobj, GLenum pname, memptr param) #else void OSMesaDriver::nfglGetVertexArrayIntegervEXT(GLuint vaobj, GLenum pname, GLint *param) #endif { D(bug("nfosmesa: glGetVertexArrayIntegervEXT(%u, %s, " PRI_PTR ")", vaobj, gl_enum_name(pname), AtariOffset(param))); FN_GLGETVERTEXARRAYINTEGERVEXT(vaobj, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexArrayPointeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, memptr param) #else void OSMesaDriver::nfglGetVertexArrayPointeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, void * *param) #endif { D(bug("nfosmesa: glGetVertexArrayPointeri_vEXT(%u, %u, %s, " PRI_PTR ")", vaobj, index, gl_enum_name(pname), AtariOffset(param))); FN_GLGETVERTEXARRAYPOINTERI_VEXT(vaobj, index, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexArrayPointervEXT(GLuint vaobj, GLenum pname, memptr param) #else void OSMesaDriver::nfglGetVertexArrayPointervEXT(GLuint vaobj, GLenum pname, void * *param) #endif { D(bug("nfosmesa: glGetVertexArrayPointervEXT(%u, %s, " PRI_PTR ")", vaobj, gl_enum_name(pname), AtariOffset(param))); FN_GLGETVERTEXARRAYPOINTERVEXT(vaobj, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexArrayiv(GLuint vaobj, GLenum pname, memptr param) #else void OSMesaDriver::nfglGetVertexArrayiv(GLuint vaobj, GLenum pname, GLint *param) #endif { D(bug("nfosmesa: glGetVertexArrayiv(%u, %s, " PRI_PTR ")", vaobj, gl_enum_name(pname), AtariOffset(param))); FN_GLGETVERTEXARRAYIV(vaobj, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribArrayObjectfvATI(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribArrayObjectfvATI(GLuint index, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetVertexAttribArrayObjectfvATI(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBARRAYOBJECTFVATI(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribArrayObjectivATI(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribArrayObjectivATI(GLuint index, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetVertexAttribArrayObjectivATI(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBARRAYOBJECTIVATI(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribIiv(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetVertexAttribIiv(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBIIV(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribIivEXT(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribIivEXT(GLuint index, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetVertexAttribIivEXT(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBIIVEXT(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribIuiv(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) #endif { D(bug("nfosmesa: glGetVertexAttribIuiv(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBIUIV(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribIuivEXT(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribIuivEXT(GLuint index, GLenum pname, GLuint *params) #endif { D(bug("nfosmesa: glGetVertexAttribIuivEXT(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBIUIVEXT(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribLdv(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) #endif { D(bug("nfosmesa: glGetVertexAttribLdv(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBLDV(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribLdvEXT(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribLdvEXT(GLuint index, GLenum pname, GLdouble *params) #endif { D(bug("nfosmesa: glGetVertexAttribLdvEXT(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBLDVEXT(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribLi64vNV(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribLi64vNV(GLuint index, GLenum pname, GLint64EXT *params) #endif { D(bug("nfosmesa: glGetVertexAttribLi64vNV(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBLI64VNV(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribLui64vARB(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribLui64vARB(GLuint index, GLenum pname, GLuint64EXT *params) #endif { D(bug("nfosmesa: glGetVertexAttribLui64vARB(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBLUI64VARB(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribLui64vNV(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribLui64vNV(GLuint index, GLenum pname, GLuint64EXT *params) #endif { D(bug("nfosmesa: glGetVertexAttribLui64vNV(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBLUI64VNV(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribPointerv(GLuint index, GLenum pname, memptr pointer) #else void OSMesaDriver::nfglGetVertexAttribPointerv(GLuint index, GLenum pname, void * *pointer) #endif { D(bug("nfosmesa: glGetVertexAttribPointerv(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(pointer))); FN_GLGETVERTEXATTRIBPOINTERV(index, pname, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribPointervARB(GLuint index, GLenum pname, memptr pointer) #else void OSMesaDriver::nfglGetVertexAttribPointervARB(GLuint index, GLenum pname, void * *pointer) #endif { D(bug("nfosmesa: glGetVertexAttribPointervARB(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(pointer))); FN_GLGETVERTEXATTRIBPOINTERVARB(index, pname, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribPointervNV(GLuint index, GLenum pname, memptr pointer) #else void OSMesaDriver::nfglGetVertexAttribPointervNV(GLuint index, GLenum pname, void * *pointer) #endif { D(bug("nfosmesa: glGetVertexAttribPointervNV(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(pointer))); FN_GLGETVERTEXATTRIBPOINTERVNV(index, pname, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribdv(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) #endif { D(bug("nfosmesa: glGetVertexAttribdv(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBDV(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribdvARB(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble *params) #endif { D(bug("nfosmesa: glGetVertexAttribdvARB(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBDVARB(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribdvNV(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribdvNV(GLuint index, GLenum pname, GLdouble *params) #endif { D(bug("nfosmesa: glGetVertexAttribdvNV(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBDVNV(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribfv(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetVertexAttribfv(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBFV(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribfvARB(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetVertexAttribfvARB(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBFVARB(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribfvNV(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribfvNV(GLuint index, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetVertexAttribfvNV(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBFVNV(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribiv(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetVertexAttribiv(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBIV(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribivARB(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribivARB(GLuint index, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetVertexAttribivARB(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBIVARB(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVertexAttribivNV(GLuint index, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVertexAttribivNV(GLuint index, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetVertexAttribivNV(%u, %s, " PRI_PTR ")", index, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVERTEXATTRIBIVNV(index, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVideoCaptureStreamdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVideoCaptureStreamdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params) #endif { D(bug("nfosmesa: glGetVideoCaptureStreamdvNV(%u, %u, %s, " PRI_PTR ")", video_capture_slot, stream, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVIDEOCAPTURESTREAMDVNV(video_capture_slot, stream, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVideoCaptureStreamfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVideoCaptureStreamfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params) #endif { D(bug("nfosmesa: glGetVideoCaptureStreamfvNV(%u, %u, %s, " PRI_PTR ")", video_capture_slot, stream, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVIDEOCAPTURESTREAMFVNV(video_capture_slot, stream, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVideoCaptureStreamivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVideoCaptureStreamivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetVideoCaptureStreamivNV(%u, %u, %s, " PRI_PTR ")", video_capture_slot, stream, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVIDEOCAPTURESTREAMIVNV(video_capture_slot, stream, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVideoCaptureivNV(GLuint video_capture_slot, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVideoCaptureivNV(GLuint video_capture_slot, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetVideoCaptureivNV(%u, %s, " PRI_PTR ")", video_capture_slot, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVIDEOCAPTUREIVNV(video_capture_slot, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVideoi64vNV(GLuint video_slot, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVideoi64vNV(GLuint video_slot, GLenum pname, GLint64EXT *params) #endif { D(bug("nfosmesa: glGetVideoi64vNV(%u, %s, " PRI_PTR ")", video_slot, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVIDEOI64VNV(video_slot, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVideoivNV(GLuint video_slot, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVideoivNV(GLuint video_slot, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glGetVideoivNV(%u, %s, " PRI_PTR ")", video_slot, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVIDEOIVNV(video_slot, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVideoui64vNV(GLuint video_slot, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVideoui64vNV(GLuint video_slot, GLenum pname, GLuint64EXT *params) #endif { D(bug("nfosmesa: glGetVideoui64vNV(%u, %s, " PRI_PTR ")", video_slot, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVIDEOUI64VNV(video_slot, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetVideouivNV(GLuint video_slot, GLenum pname, memptr params) #else void OSMesaDriver::nfglGetVideouivNV(GLuint video_slot, GLenum pname, GLuint *params) #endif { D(bug("nfosmesa: glGetVideouivNV(%u, %s, " PRI_PTR ")", video_slot, gl_enum_name(pname), AtariOffset(params))); FN_GLGETVIDEOUIVNV(video_slot, pname, params); } #if 0 #if NFOSMESA_POINTER_AS_MEMARG GLVULKANPROCNV OSMesaDriver::nfglGetVkProcAddrNV(memptr name) #else GLVULKANPROCNV OSMesaDriver::nfglGetVkProcAddrNV(const GLchar *name) #endif { D(bug("nfosmesa: glGetVkProcAddrNV(" PRI_PTR ")", AtariOffset(name))); GLVULKANPROCNV __ret = fn.glGetVkProcAddrNV(name); return __ret; } #endif #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnColorTable(GLenum target, GLenum format, GLenum type, GLsizei bufSize, memptr table) #else void OSMesaDriver::nfglGetnColorTable(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table) #endif { D(bug("nfosmesa: glGetnColorTable(%s, %s, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(format), gl_enum_name(type), bufSize, AtariOffset(table))); FN_GLGETNCOLORTABLE(target, format, type, bufSize, table); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnColorTableARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, memptr table) #else void OSMesaDriver::nfglGetnColorTableARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table) #endif { D(bug("nfosmesa: glGetnColorTableARB(%s, %s, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(format), gl_enum_name(type), bufSize, AtariOffset(table))); FN_GLGETNCOLORTABLEARB(target, format, type, bufSize, table); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnCompressedTexImage(GLenum target, GLint lod, GLsizei bufSize, memptr pixels) #else void OSMesaDriver::nfglGetnCompressedTexImage(GLenum target, GLint lod, GLsizei bufSize, void *pixels) #endif { D(bug("nfosmesa: glGetnCompressedTexImage(%s, %d, %d, " PRI_PTR ")", gl_enum_name(target), lod, bufSize, AtariOffset(pixels))); FN_GLGETNCOMPRESSEDTEXIMAGE(target, lod, bufSize, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnCompressedTexImageARB(GLenum target, GLint lod, GLsizei bufSize, memptr img) #else void OSMesaDriver::nfglGetnCompressedTexImageARB(GLenum target, GLint lod, GLsizei bufSize, void *img) #endif { D(bug("nfosmesa: glGetnCompressedTexImageARB(%s, %d, %d, " PRI_PTR ")", gl_enum_name(target), lod, bufSize, AtariOffset(img))); FN_GLGETNCOMPRESSEDTEXIMAGEARB(target, lod, bufSize, img); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnConvolutionFilter(GLenum target, GLenum format, GLenum type, GLsizei bufSize, memptr image) #else void OSMesaDriver::nfglGetnConvolutionFilter(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image) #endif { D(bug("nfosmesa: glGetnConvolutionFilter(%s, %s, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(format), gl_enum_name(type), bufSize, AtariOffset(image))); FN_GLGETNCONVOLUTIONFILTER(target, format, type, bufSize, image); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnConvolutionFilterARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, memptr image) #else void OSMesaDriver::nfglGetnConvolutionFilterARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image) #endif { D(bug("nfosmesa: glGetnConvolutionFilterARB(%s, %s, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(format), gl_enum_name(type), bufSize, AtariOffset(image))); FN_GLGETNCONVOLUTIONFILTERARB(target, format, type, bufSize, image); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnHistogram(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, memptr values) #else void OSMesaDriver::nfglGetnHistogram(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values) #endif { D(bug("nfosmesa: glGetnHistogram(%s, %d, %s, %s, %d, " PRI_PTR ")", gl_enum_name(target), reset, gl_enum_name(format), gl_enum_name(type), bufSize, AtariOffset(values))); FN_GLGETNHISTOGRAM(target, reset, format, type, bufSize, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnHistogramARB(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, memptr values) #else void OSMesaDriver::nfglGetnHistogramARB(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values) #endif { D(bug("nfosmesa: glGetnHistogramARB(%s, %d, %s, %s, %d, " PRI_PTR ")", gl_enum_name(target), reset, gl_enum_name(format), gl_enum_name(type), bufSize, AtariOffset(values))); FN_GLGETNHISTOGRAMARB(target, reset, format, type, bufSize, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnMapdv(GLenum target, GLenum query, GLsizei bufSize, memptr v) #else void OSMesaDriver::nfglGetnMapdv(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v) #endif { D(bug("nfosmesa: glGetnMapdv(%s, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(query), bufSize, AtariOffset(v))); FN_GLGETNMAPDV(target, query, bufSize, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnMapdvARB(GLenum target, GLenum query, GLsizei bufSize, memptr v) #else void OSMesaDriver::nfglGetnMapdvARB(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v) #endif { D(bug("nfosmesa: glGetnMapdvARB(%s, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(query), bufSize, AtariOffset(v))); FN_GLGETNMAPDVARB(target, query, bufSize, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnMapfv(GLenum target, GLenum query, GLsizei bufSize, memptr v) #else void OSMesaDriver::nfglGetnMapfv(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v) #endif { D(bug("nfosmesa: glGetnMapfv(%s, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(query), bufSize, AtariOffset(v))); FN_GLGETNMAPFV(target, query, bufSize, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnMapfvARB(GLenum target, GLenum query, GLsizei bufSize, memptr v) #else void OSMesaDriver::nfglGetnMapfvARB(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v) #endif { D(bug("nfosmesa: glGetnMapfvARB(%s, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(query), bufSize, AtariOffset(v))); FN_GLGETNMAPFVARB(target, query, bufSize, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnMapiv(GLenum target, GLenum query, GLsizei bufSize, memptr v) #else void OSMesaDriver::nfglGetnMapiv(GLenum target, GLenum query, GLsizei bufSize, GLint *v) #endif { D(bug("nfosmesa: glGetnMapiv(%s, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(query), bufSize, AtariOffset(v))); FN_GLGETNMAPIV(target, query, bufSize, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnMapivARB(GLenum target, GLenum query, GLsizei bufSize, memptr v) #else void OSMesaDriver::nfglGetnMapivARB(GLenum target, GLenum query, GLsizei bufSize, GLint *v) #endif { D(bug("nfosmesa: glGetnMapivARB(%s, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(query), bufSize, AtariOffset(v))); FN_GLGETNMAPIVARB(target, query, bufSize, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnMinmax(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, memptr values) #else void OSMesaDriver::nfglGetnMinmax(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values) #endif { D(bug("nfosmesa: glGetnMinmax(%s, %d, %s, %s, %d, " PRI_PTR ")", gl_enum_name(target), reset, gl_enum_name(format), gl_enum_name(type), bufSize, AtariOffset(values))); FN_GLGETNMINMAX(target, reset, format, type, bufSize, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnMinmaxARB(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, memptr values) #else void OSMesaDriver::nfglGetnMinmaxARB(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values) #endif { D(bug("nfosmesa: glGetnMinmaxARB(%s, %d, %s, %s, %d, " PRI_PTR ")", gl_enum_name(target), reset, gl_enum_name(format), gl_enum_name(type), bufSize, AtariOffset(values))); FN_GLGETNMINMAXARB(target, reset, format, type, bufSize, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnPixelMapfv(GLenum map, GLsizei bufSize, memptr values) #else void OSMesaDriver::nfglGetnPixelMapfv(GLenum map, GLsizei bufSize, GLfloat *values) #endif { D(bug("nfosmesa: glGetnPixelMapfv(%s, %d, " PRI_PTR ")", gl_enum_name(map), bufSize, AtariOffset(values))); FN_GLGETNPIXELMAPFV(map, bufSize, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnPixelMapfvARB(GLenum map, GLsizei bufSize, memptr values) #else void OSMesaDriver::nfglGetnPixelMapfvARB(GLenum map, GLsizei bufSize, GLfloat *values) #endif { D(bug("nfosmesa: glGetnPixelMapfvARB(%s, %d, " PRI_PTR ")", gl_enum_name(map), bufSize, AtariOffset(values))); FN_GLGETNPIXELMAPFVARB(map, bufSize, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnPixelMapuiv(GLenum map, GLsizei bufSize, memptr values) #else void OSMesaDriver::nfglGetnPixelMapuiv(GLenum map, GLsizei bufSize, GLuint *values) #endif { D(bug("nfosmesa: glGetnPixelMapuiv(%s, %d, " PRI_PTR ")", gl_enum_name(map), bufSize, AtariOffset(values))); FN_GLGETNPIXELMAPUIV(map, bufSize, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnPixelMapuivARB(GLenum map, GLsizei bufSize, memptr values) #else void OSMesaDriver::nfglGetnPixelMapuivARB(GLenum map, GLsizei bufSize, GLuint *values) #endif { D(bug("nfosmesa: glGetnPixelMapuivARB(%s, %d, " PRI_PTR ")", gl_enum_name(map), bufSize, AtariOffset(values))); FN_GLGETNPIXELMAPUIVARB(map, bufSize, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnPixelMapusv(GLenum map, GLsizei bufSize, memptr values) #else void OSMesaDriver::nfglGetnPixelMapusv(GLenum map, GLsizei bufSize, GLushort *values) #endif { D(bug("nfosmesa: glGetnPixelMapusv(%s, %d, " PRI_PTR ")", gl_enum_name(map), bufSize, AtariOffset(values))); FN_GLGETNPIXELMAPUSV(map, bufSize, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnPixelMapusvARB(GLenum map, GLsizei bufSize, memptr values) #else void OSMesaDriver::nfglGetnPixelMapusvARB(GLenum map, GLsizei bufSize, GLushort *values) #endif { D(bug("nfosmesa: glGetnPixelMapusvARB(%s, %d, " PRI_PTR ")", gl_enum_name(map), bufSize, AtariOffset(values))); FN_GLGETNPIXELMAPUSVARB(map, bufSize, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnPolygonStipple(GLsizei bufSize, memptr pattern) #else void OSMesaDriver::nfglGetnPolygonStipple(GLsizei bufSize, GLubyte *pattern) #endif { D(bug("nfosmesa: glGetnPolygonStipple(%d, " PRI_PTR ")", bufSize, AtariOffset(pattern))); FN_GLGETNPOLYGONSTIPPLE(bufSize, pattern); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnPolygonStippleARB(GLsizei bufSize, memptr pattern) #else void OSMesaDriver::nfglGetnPolygonStippleARB(GLsizei bufSize, GLubyte *pattern) #endif { D(bug("nfosmesa: glGetnPolygonStippleARB(%d, " PRI_PTR ")", bufSize, AtariOffset(pattern))); FN_GLGETNPOLYGONSTIPPLEARB(bufSize, pattern); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnSeparableFilter(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, memptr row, GLsizei columnBufSize, memptr column, memptr span) #else void OSMesaDriver::nfglGetnSeparableFilter(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span) #endif { D(bug("nfosmesa: glGetnSeparableFilter(%s, %s, %s, %d, " PRI_PTR ", %d, " PRI_PTR ", " PRI_PTR ")", gl_enum_name(target), gl_enum_name(format), gl_enum_name(type), rowBufSize, AtariOffset(row), columnBufSize, AtariOffset(column), AtariOffset(span))); FN_GLGETNSEPARABLEFILTER(target, format, type, rowBufSize, row, columnBufSize, column, span); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnSeparableFilterARB(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, memptr row, GLsizei columnBufSize, memptr column, memptr span) #else void OSMesaDriver::nfglGetnSeparableFilterARB(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span) #endif { D(bug("nfosmesa: glGetnSeparableFilterARB(%s, %s, %s, %d, " PRI_PTR ", %d, " PRI_PTR ", " PRI_PTR ")", gl_enum_name(target), gl_enum_name(format), gl_enum_name(type), rowBufSize, AtariOffset(row), columnBufSize, AtariOffset(column), AtariOffset(span))); FN_GLGETNSEPARABLEFILTERARB(target, format, type, rowBufSize, row, columnBufSize, column, span); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, memptr pixels) #else void OSMesaDriver::nfglGetnTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels) #endif { D(bug("nfosmesa: glGetnTexImage(%s, %d, %s, %s, %d, " PRI_PTR ")", gl_enum_name(target), level, gl_enum_name(format), gl_enum_name(type), bufSize, AtariOffset(pixels))); FN_GLGETNTEXIMAGE(target, level, format, type, bufSize, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnTexImageARB(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, memptr img) #else void OSMesaDriver::nfglGetnTexImageARB(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img) #endif { D(bug("nfosmesa: glGetnTexImageARB(%s, %d, %s, %s, %d, " PRI_PTR ")", gl_enum_name(target), level, gl_enum_name(format), gl_enum_name(type), bufSize, AtariOffset(img))); FN_GLGETNTEXIMAGEARB(target, level, format, type, bufSize, img); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnUniformdv(GLuint program, GLint location, GLsizei bufSize, memptr params) #else void OSMesaDriver::nfglGetnUniformdv(GLuint program, GLint location, GLsizei bufSize, GLdouble *params) #endif { D(bug("nfosmesa: glGetnUniformdv(%u, %d, %d, " PRI_PTR ")", program, location, bufSize, AtariOffset(params))); FN_GLGETNUNIFORMDV(program, location, bufSize, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnUniformdvARB(GLuint program, GLint location, GLsizei bufSize, memptr params) #else void OSMesaDriver::nfglGetnUniformdvARB(GLuint program, GLint location, GLsizei bufSize, GLdouble *params) #endif { D(bug("nfosmesa: glGetnUniformdvARB(%u, %d, %d, " PRI_PTR ")", program, location, bufSize, AtariOffset(params))); FN_GLGETNUNIFORMDVARB(program, location, bufSize, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, memptr params) #else void OSMesaDriver::nfglGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params) #endif { D(bug("nfosmesa: glGetnUniformfv(%u, %d, %d, " PRI_PTR ")", program, location, bufSize, AtariOffset(params))); FN_GLGETNUNIFORMFV(program, location, bufSize, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnUniformfvARB(GLuint program, GLint location, GLsizei bufSize, memptr params) #else void OSMesaDriver::nfglGetnUniformfvARB(GLuint program, GLint location, GLsizei bufSize, GLfloat *params) #endif { D(bug("nfosmesa: glGetnUniformfvARB(%u, %d, %d, " PRI_PTR ")", program, location, bufSize, AtariOffset(params))); FN_GLGETNUNIFORMFVARB(program, location, bufSize, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnUniformi64vARB(GLuint program, GLint location, GLsizei bufSize, memptr params) #else void OSMesaDriver::nfglGetnUniformi64vARB(GLuint program, GLint location, GLsizei bufSize, GLint64 *params) #endif { D(bug("nfosmesa: glGetnUniformi64vARB(%u, %d, %d, " PRI_PTR ")", program, location, bufSize, AtariOffset(params))); FN_GLGETNUNIFORMI64VARB(program, location, bufSize, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, memptr params) #else void OSMesaDriver::nfglGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params) #endif { D(bug("nfosmesa: glGetnUniformiv(%u, %d, %d, " PRI_PTR ")", program, location, bufSize, AtariOffset(params))); FN_GLGETNUNIFORMIV(program, location, bufSize, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnUniformivARB(GLuint program, GLint location, GLsizei bufSize, memptr params) #else void OSMesaDriver::nfglGetnUniformivARB(GLuint program, GLint location, GLsizei bufSize, GLint *params) #endif { D(bug("nfosmesa: glGetnUniformivARB(%u, %d, %d, " PRI_PTR ")", program, location, bufSize, AtariOffset(params))); FN_GLGETNUNIFORMIVARB(program, location, bufSize, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnUniformui64vARB(GLuint program, GLint location, GLsizei bufSize, memptr params) #else void OSMesaDriver::nfglGetnUniformui64vARB(GLuint program, GLint location, GLsizei bufSize, GLuint64 *params) #endif { D(bug("nfosmesa: glGetnUniformui64vARB(%u, %d, %d, " PRI_PTR ")", program, location, bufSize, AtariOffset(params))); FN_GLGETNUNIFORMUI64VARB(program, location, bufSize, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, memptr params) #else void OSMesaDriver::nfglGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params) #endif { D(bug("nfosmesa: glGetnUniformuiv(%u, %d, %d, " PRI_PTR ")", program, location, bufSize, AtariOffset(params))); FN_GLGETNUNIFORMUIV(program, location, bufSize, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglGetnUniformuivARB(GLuint program, GLint location, GLsizei bufSize, memptr params) #else void OSMesaDriver::nfglGetnUniformuivARB(GLuint program, GLint location, GLsizei bufSize, GLuint *params) #endif { D(bug("nfosmesa: glGetnUniformuivARB(%u, %d, %d, " PRI_PTR ")", program, location, bufSize, AtariOffset(params))); FN_GLGETNUNIFORMUIVARB(program, location, bufSize, params); } void OSMesaDriver::nfglGlobalAlphaFactorbSUN(GLbyte32 factor) { D(bug("nfosmesa: glGlobalAlphaFactorbSUN(%d)", factor)); fn.glGlobalAlphaFactorbSUN(factor); } void OSMesaDriver::nfglGlobalAlphaFactordSUN(GLdouble factor) { D(bug("nfosmesa: glGlobalAlphaFactordSUN(%f)", factor)); fn.glGlobalAlphaFactordSUN(factor); } void OSMesaDriver::nfglGlobalAlphaFactorfSUN(GLfloat factor) { D(bug("nfosmesa: glGlobalAlphaFactorfSUN(%f)", factor)); fn.glGlobalAlphaFactorfSUN(factor); } void OSMesaDriver::nfglGlobalAlphaFactoriSUN(GLint factor) { D(bug("nfosmesa: glGlobalAlphaFactoriSUN(%d)", factor)); fn.glGlobalAlphaFactoriSUN(factor); } void OSMesaDriver::nfglGlobalAlphaFactorsSUN(GLshort32 factor) { D(bug("nfosmesa: glGlobalAlphaFactorsSUN(%d)", factor)); fn.glGlobalAlphaFactorsSUN(factor); } void OSMesaDriver::nfglGlobalAlphaFactorubSUN(GLubyte32 factor) { D(bug("nfosmesa: glGlobalAlphaFactorubSUN(%u)", factor)); fn.glGlobalAlphaFactorubSUN(factor); } void OSMesaDriver::nfglGlobalAlphaFactoruiSUN(GLuint factor) { D(bug("nfosmesa: glGlobalAlphaFactoruiSUN(%u)", factor)); fn.glGlobalAlphaFactoruiSUN(factor); } void OSMesaDriver::nfglGlobalAlphaFactorusSUN(GLushort32 factor) { D(bug("nfosmesa: glGlobalAlphaFactorusSUN(%u)", factor)); fn.glGlobalAlphaFactorusSUN(factor); } void OSMesaDriver::nfglHint(GLenum target, GLenum mode) { D(bug("nfosmesa: glHint(%s, %s)", gl_enum_name(target), gl_enum_name(mode))); fn.glHint(target, mode); } void OSMesaDriver::nfglHintPGI(GLenum target, GLint mode) { D(bug("nfosmesa: glHintPGI(%s, %d)", gl_enum_name(target), mode)); fn.glHintPGI(target, mode); } void OSMesaDriver::nfglHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink) { D(bug("nfosmesa: glHistogram(%s, %d, %s, %d)", gl_enum_name(target), width, gl_enum_name(internalformat), sink)); fn.glHistogram(target, width, internalformat, sink); } void OSMesaDriver::nfglHistogramEXT(GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink) { D(bug("nfosmesa: glHistogramEXT(%s, %d, %s, %d)", gl_enum_name(target), width, gl_enum_name(internalformat), sink)); fn.glHistogramEXT(target, width, internalformat, sink); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglIglooInterfaceSGIX(GLenum pname, memptr params) #else void OSMesaDriver::nfglIglooInterfaceSGIX(GLenum pname, const void *params) #endif { D(bug("nfosmesa: glIglooInterfaceSGIX(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLIGLOOINTERFACESGIX(pname, params); } void OSMesaDriver::nfglImageTransformParameterfHP(GLenum target, GLenum pname, GLfloat param) { D(bug("nfosmesa: glImageTransformParameterfHP(%s, %s, %f)", gl_enum_name(target), gl_enum_name(pname), param)); fn.glImageTransformParameterfHP(target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglImageTransformParameterfvHP(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglImageTransformParameterfvHP(GLenum target, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glImageTransformParameterfvHP(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLIMAGETRANSFORMPARAMETERFVHP(target, pname, params); } void OSMesaDriver::nfglImageTransformParameteriHP(GLenum target, GLenum pname, GLint param) { D(bug("nfosmesa: glImageTransformParameteriHP(%s, %s, %d)", gl_enum_name(target), gl_enum_name(pname), param)); fn.glImageTransformParameteriHP(target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglImageTransformParameterivHP(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglImageTransformParameterivHP(GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glImageTransformParameterivHP(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLIMAGETRANSFORMPARAMETERIVHP(target, pname, params); } void OSMesaDriver::nfglImportMemoryFdEXT(GLuint memory, GLuint64 size, GLenum handleType, GLint fd) { D(bug("nfosmesa: glImportMemoryFdEXT(%u, %" PRIu64 ", %s, %d)", memory, size, gl_enum_name(handleType), fd)); fn.glImportMemoryFdEXT(memory, size, handleType, fd); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglImportMemoryWin32HandleEXT(GLuint memory, GLuint64 size, GLenum handleType, memptr handle) #else void OSMesaDriver::nfglImportMemoryWin32HandleEXT(GLuint memory, GLuint64 size, GLenum handleType, void *handle) #endif { D(bug("nfosmesa: glImportMemoryWin32HandleEXT(%u, %" PRIu64 ", %s, " PRI_PTR ")", memory, size, gl_enum_name(handleType), AtariOffset(handle))); FN_GLIMPORTMEMORYWIN32HANDLEEXT(memory, size, handleType, handle); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglImportMemoryWin32NameEXT(GLuint memory, GLuint64 size, GLenum handleType, memptr name) #else void OSMesaDriver::nfglImportMemoryWin32NameEXT(GLuint memory, GLuint64 size, GLenum handleType, const void *name) #endif { D(bug("nfosmesa: glImportMemoryWin32NameEXT(%u, %" PRIu64 ", %s, " PRI_PTR ")", memory, size, gl_enum_name(handleType), AtariOffset(name))); #if NFOSMESA_NEED_BYTE_CONV GLint const __name_size = safe_strlen(name) + 1; GLchar __name_tmp[__name_size]; GLchar *__name_ptmp = Atari2HostByteArray(__name_size, name, __name_tmp); fn.glImportMemoryWin32NameEXT(memory, size, handleType, __name_ptmp); #else fn.glImportMemoryWin32NameEXT(memory, size, handleType, HostAddr(name, const void *)); #endif } void OSMesaDriver::nfglImportSemaphoreFdEXT(GLuint semaphore, GLenum handleType, GLint fd) { D(bug("nfosmesa: glImportSemaphoreFdEXT(%u, %s, %d)", semaphore, gl_enum_name(handleType), fd)); fn.glImportSemaphoreFdEXT(semaphore, handleType, fd); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglImportSemaphoreWin32HandleEXT(GLuint semaphore, GLenum handleType, memptr handle) #else void OSMesaDriver::nfglImportSemaphoreWin32HandleEXT(GLuint semaphore, GLenum handleType, void *handle) #endif { D(bug("nfosmesa: glImportSemaphoreWin32HandleEXT(%u, %s, " PRI_PTR ")", semaphore, gl_enum_name(handleType), AtariOffset(handle))); FN_GLIMPORTSEMAPHOREWIN32HANDLEEXT(semaphore, handleType, handle); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglImportSemaphoreWin32NameEXT(GLuint semaphore, GLenum handleType, memptr name) #else void OSMesaDriver::nfglImportSemaphoreWin32NameEXT(GLuint semaphore, GLenum handleType, const void *name) #endif { D(bug("nfosmesa: glImportSemaphoreWin32NameEXT(%u, %s, " PRI_PTR ")", semaphore, gl_enum_name(handleType), AtariOffset(name))); #if NFOSMESA_NEED_BYTE_CONV GLint const __name_size = safe_strlen(name) + 1; GLchar __name_tmp[__name_size]; GLchar *__name_ptmp = Atari2HostByteArray(__name_size, name, __name_tmp); fn.glImportSemaphoreWin32NameEXT(semaphore, handleType, __name_ptmp); #else fn.glImportSemaphoreWin32NameEXT(semaphore, handleType, HostAddr(name, const void *)); #endif } #if 0 GLsync OSMesaDriver::nfglImportSyncEXT(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags) { D(bug("nfosmesa: glImportSyncEXT(%s, %" PRI_IPTR ", 0x%x)", gl_enum_name(external_sync_type), external_sync, flags)); GLsync __ret = fn.glImportSyncEXT(external_sync_type, external_sync, flags); return __ret; } #endif void OSMesaDriver::nfglIndexFormatNV(GLenum type, GLsizei stride) { D(bug("nfosmesa: glIndexFormatNV(%s, %d)", gl_enum_name(type), stride)); fn.glIndexFormatNV(type, stride); } void OSMesaDriver::nfglIndexFuncEXT(GLenum func, GLclampf ref) { D(bug("nfosmesa: glIndexFuncEXT(%s, %f)", gl_enum_name(func), ref)); fn.glIndexFuncEXT(func, ref); } void OSMesaDriver::nfglIndexMask(GLuint mask) { D(bug("nfosmesa: glIndexMask(%u)", mask)); fn.glIndexMask(mask); } void OSMesaDriver::nfglIndexMaterialEXT(GLenum face, GLenum mode) { D(bug("nfosmesa: glIndexMaterialEXT(%s, %s)", gl_enum_name(face), gl_enum_name(mode))); fn.glIndexMaterialEXT(face, mode); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglIndexPointer(GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) #endif { D(bug("nfosmesa: glIndexPointer(%s, %d, " PRI_PTR ")", gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLINDEXPOINTER(type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, memptr pointer) #else void OSMesaDriver::nfglIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const void *pointer) #endif { D(bug("nfosmesa: glIndexPointerEXT(%s, %d, %d, " PRI_PTR ")", gl_enum_name(type), stride, count, AtariOffset(pointer))); FN_GLINDEXPOINTEREXT(type, stride, count, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglIndexPointerListIBM(GLenum type, GLint stride, memptr pointer, GLint ptrstride) #else void OSMesaDriver::nfglIndexPointerListIBM(GLenum type, GLint stride, const void * *pointer, GLint ptrstride) #endif { D(bug("nfosmesa: glIndexPointerListIBM(%s, %d, " PRI_PTR ", %d)", gl_enum_name(type), stride, AtariOffset(pointer), ptrstride)); FN_GLINDEXPOINTERLISTIBM(type, stride, pointer, ptrstride); } void OSMesaDriver::nfglIndexd(GLdouble c) { D(bug("nfosmesa: glIndexd(%f)", c)); fn.glIndexd(c); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglIndexdv(memptr c) #else void OSMesaDriver::nfglIndexdv(const GLdouble *c) #endif { D(bug("nfosmesa: glIndexdv(" PRI_PTR ")", AtariOffset(c))); FN_GLINDEXDV(c); } void OSMesaDriver::nfglIndexf(GLfloat c) { D(bug("nfosmesa: glIndexf(%f)", c)); fn.glIndexf(c); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglIndexfv(memptr c) #else void OSMesaDriver::nfglIndexfv(const GLfloat *c) #endif { D(bug("nfosmesa: glIndexfv(" PRI_PTR ")", AtariOffset(c))); FN_GLINDEXFV(c); } void OSMesaDriver::nfglIndexi(GLint c) { D(bug("nfosmesa: glIndexi(%d)", c)); fn.glIndexi(c); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglIndexiv(memptr c) #else void OSMesaDriver::nfglIndexiv(const GLint *c) #endif { D(bug("nfosmesa: glIndexiv(" PRI_PTR ")", AtariOffset(c))); FN_GLINDEXIV(c); } void OSMesaDriver::nfglIndexs(GLshort32 c) { D(bug("nfosmesa: glIndexs(%d)", c)); fn.glIndexs(c); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglIndexsv(memptr c) #else void OSMesaDriver::nfglIndexsv(const GLshort *c) #endif { D(bug("nfosmesa: glIndexsv(" PRI_PTR ")", AtariOffset(c))); FN_GLINDEXSV(c); } void OSMesaDriver::nfglIndexub(GLubyte32 c) { D(bug("nfosmesa: glIndexub(%u)", c)); fn.glIndexub(c); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglIndexubv(memptr c) #else void OSMesaDriver::nfglIndexubv(const GLubyte *c) #endif { D(bug("nfosmesa: glIndexubv(" PRI_PTR ")", AtariOffset(c))); FN_GLINDEXUBV(c); } void OSMesaDriver::nfglIndexxOES(GLfixed component) { D(bug("nfosmesa: glIndexxOES(0x%x)", component)); fn.glIndexxOES(component); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglIndexxvOES(memptr component) #else void OSMesaDriver::nfglIndexxvOES(const GLfixed *component) #endif { D(bug("nfosmesa: glIndexxvOES(" PRI_PTR ")", AtariOffset(component))); FN_GLINDEXXVOES(component); } void OSMesaDriver::nfglInitNames(void) { D(bug("nfosmesa: glInitNames()")); fn.glInitNames(); } void OSMesaDriver::nfglInsertComponentEXT(GLuint res, GLuint src, GLuint num) { D(bug("nfosmesa: glInsertComponentEXT(%u, %u, %u)", res, src, num)); fn.glInsertComponentEXT(res, src, num); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglInsertEventMarkerEXT(GLsizei length, memptr marker) #else void OSMesaDriver::nfglInsertEventMarkerEXT(GLsizei length, const GLchar *marker) #endif { D(bug("nfosmesa: glInsertEventMarkerEXT(%d, " PRI_PTR ")", length, AtariOffset(marker))); #if NFOSMESA_NEED_BYTE_CONV GLint const __marker_size = length > 0 ? length : safe_strlen(marker) + 1; GLchar __marker_tmp[__marker_size]; GLchar *__marker_ptmp = Atari2HostByteArray(__marker_size, marker, __marker_tmp); fn.glInsertEventMarkerEXT(length, __marker_ptmp); #else fn.glInsertEventMarkerEXT(length, HostAddr(marker, const GLchar *)); #endif } #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglInstrumentsBufferSGIX(GLsizei size, memptr buffer) #else void OSMesaDriver::nfglInstrumentsBufferSGIX(GLsizei size, GLint *buffer) #endif { D(bug("nfosmesa: glInstrumentsBufferSGIX(%d, " PRI_PTR ")", size, AtariOffset(buffer))); FN_GLINSTRUMENTSBUFFERSGIX(size, buffer); } #endif #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglInterleavedArrays(GLenum format, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) #endif { D(bug("nfosmesa: glInterleavedArrays(%s, %d, " PRI_PTR ")", gl_enum_name(format), stride, AtariOffset(pointer))); FN_GLINTERLEAVEDARRAYS(format, stride, pointer); } void OSMesaDriver::nfglInterpolatePathsNV(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight) { D(bug("nfosmesa: glInterpolatePathsNV(%u, %u, %u, %f)", resultPath, pathA, pathB, weight)); fn.glInterpolatePathsNV(resultPath, pathA, pathB, weight); } void OSMesaDriver::nfglInvalidateBufferData(GLuint buffer) { D(bug("nfosmesa: glInvalidateBufferData(%u)", buffer)); FN_GLINVALIDATEBUFFERDATA(buffer); } void OSMesaDriver::nfglInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length) { D(bug("nfosmesa: glInvalidateBufferSubData(%u, %" PRI_IPTR ", %" PRI_IPTR ")", buffer, offset, length)); fn.glInvalidateBufferSubData(buffer, offset, length); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglInvalidateFramebuffer(GLenum target, GLsizei numAttachments, memptr attachments) #else void OSMesaDriver::nfglInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments) #endif { D(bug("nfosmesa: glInvalidateFramebuffer(%s, %d, " PRI_PTR ")", gl_enum_name(target), numAttachments, AtariOffset(attachments))); FN_GLINVALIDATEFRAMEBUFFER(target, numAttachments, attachments); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglInvalidateNamedFramebufferData(GLuint framebuffer, GLsizei numAttachments, memptr attachments) #else void OSMesaDriver::nfglInvalidateNamedFramebufferData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments) #endif { D(bug("nfosmesa: glInvalidateNamedFramebufferData(%u, %d, " PRI_PTR ")", framebuffer, numAttachments, AtariOffset(attachments))); FN_GLINVALIDATENAMEDFRAMEBUFFERDATA(framebuffer, numAttachments, attachments); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglInvalidateNamedFramebufferSubData(GLuint framebuffer, GLsizei numAttachments, memptr attachments, GLint x, GLint y, GLsizei width, GLsizei height) #else void OSMesaDriver::nfglInvalidateNamedFramebufferSubData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) #endif { D(bug("nfosmesa: glInvalidateNamedFramebufferSubData(%u, %d, " PRI_PTR ", %d, %d, %d, %d)", framebuffer, numAttachments, AtariOffset(attachments), x, y, width, height)); FN_GLINVALIDATENAMEDFRAMEBUFFERSUBDATA(framebuffer, numAttachments, attachments, x, y, width, height); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, memptr attachments, GLint x, GLint y, GLsizei width, GLsizei height) #else void OSMesaDriver::nfglInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) #endif { D(bug("nfosmesa: glInvalidateSubFramebuffer(%s, %d, " PRI_PTR ", %d, %d, %d, %d)", gl_enum_name(target), numAttachments, AtariOffset(attachments), x, y, width, height)); FN_GLINVALIDATESUBFRAMEBUFFER(target, numAttachments, attachments, x, y, width, height); } void OSMesaDriver::nfglInvalidateTexImage(GLuint texture, GLint level) { D(bug("nfosmesa: glInvalidateTexImage(%u, %d)", texture, level)); fn.glInvalidateTexImage(texture, level); } void OSMesaDriver::nfglInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth) { D(bug("nfosmesa: glInvalidateTexSubImage(%u, %d, %d, %d, %d, %d, %d, %d)", texture, level, xoffset, yoffset, zoffset, width, height, depth)); fn.glInvalidateTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth); } GLboolean OSMesaDriver::nfglIsAsyncMarkerSGIX(GLuint marker) { D(bug("nfosmesa: glIsAsyncMarkerSGIX(%u)", marker)); GLboolean __ret = fn.glIsAsyncMarkerSGIX(marker); return __ret; } GLboolean OSMesaDriver::nfglIsBuffer(GLuint buffer) { D(bug("nfosmesa: glIsBuffer(%u)", buffer)); GLboolean __ret = fn.glIsBuffer(buffer); return __ret; } GLboolean OSMesaDriver::nfglIsBufferARB(GLuint buffer) { D(bug("nfosmesa: glIsBufferARB(%u)", buffer)); GLboolean __ret = fn.glIsBufferARB(buffer); return __ret; } GLboolean OSMesaDriver::nfglIsBufferResidentNV(GLenum target) { D(bug("nfosmesa: glIsBufferResidentNV(%s)", gl_enum_name(target))); GLboolean __ret = fn.glIsBufferResidentNV(target); return __ret; } GLboolean OSMesaDriver::nfglIsCommandListNV(GLuint list) { D(bug("nfosmesa: glIsCommandListNV(%u)", list)); GLboolean __ret = fn.glIsCommandListNV(list); return __ret; } GLboolean OSMesaDriver::nfglIsEnabled(GLenum cap) { D(bug("nfosmesa: glIsEnabled(%s)", gl_enum_name(cap))); FN_GLISENABLED(cap); } GLboolean OSMesaDriver::nfglIsEnabledIndexedEXT(GLenum target, GLuint index) { D(bug("nfosmesa: glIsEnabledIndexedEXT(%s, %u)", gl_enum_name(target), index)); GLboolean __ret = fn.glIsEnabledIndexedEXT(target, index); return __ret; } GLboolean OSMesaDriver::nfglIsEnabledi(GLenum target, GLuint index) { D(bug("nfosmesa: glIsEnabledi(%s, %u)", gl_enum_name(target), index)); GLboolean __ret = fn.glIsEnabledi(target, index); return __ret; } GLboolean OSMesaDriver::nfglIsFenceAPPLE(GLuint fence) { D(bug("nfosmesa: glIsFenceAPPLE(%u)", fence)); GLboolean __ret = fn.glIsFenceAPPLE(fence); return __ret; } GLboolean OSMesaDriver::nfglIsFenceNV(GLuint fence) { D(bug("nfosmesa: glIsFenceNV(%u)", fence)); GLboolean __ret = fn.glIsFenceNV(fence); return __ret; } GLboolean OSMesaDriver::nfglIsFramebuffer(GLuint framebuffer) { D(bug("nfosmesa: glIsFramebuffer(%u)", framebuffer)); GLboolean __ret = fn.glIsFramebuffer(framebuffer); return __ret; } GLboolean OSMesaDriver::nfglIsFramebufferEXT(GLuint framebuffer) { D(bug("nfosmesa: glIsFramebufferEXT(%u)", framebuffer)); GLboolean __ret = fn.glIsFramebufferEXT(framebuffer); return __ret; } GLboolean OSMesaDriver::nfglIsImageHandleResidentARB(GLuint64 handle) { D(bug("nfosmesa: glIsImageHandleResidentARB(%" PRIu64 ")", handle)); GLboolean __ret = fn.glIsImageHandleResidentARB(handle); return __ret; } GLboolean OSMesaDriver::nfglIsImageHandleResidentNV(GLuint64 handle) { D(bug("nfosmesa: glIsImageHandleResidentNV(%" PRIu64 ")", handle)); GLboolean __ret = fn.glIsImageHandleResidentNV(handle); return __ret; } GLboolean OSMesaDriver::nfglIsList(GLuint list) { D(bug("nfosmesa: glIsList(%u)", list)); GLboolean __ret = fn.glIsList(list); return __ret; } GLboolean OSMesaDriver::nfglIsMemoryObjectEXT(GLuint memoryObject) { D(bug("nfosmesa: glIsMemoryObjectEXT(%u)", memoryObject)); GLboolean __ret = fn.glIsMemoryObjectEXT(memoryObject); return __ret; } GLboolean OSMesaDriver::nfglIsNameAMD(GLenum identifier, GLuint name) { D(bug("nfosmesa: glIsNameAMD(%s, %u)", gl_enum_name(identifier), name)); GLboolean __ret = fn.glIsNameAMD(identifier, name); return __ret; } GLboolean OSMesaDriver::nfglIsNamedBufferResidentNV(GLuint buffer) { D(bug("nfosmesa: glIsNamedBufferResidentNV(%u)", buffer)); GLboolean __ret = fn.glIsNamedBufferResidentNV(buffer); return __ret; } #if NFOSMESA_POINTER_AS_MEMARG GLboolean OSMesaDriver::nfglIsNamedStringARB(GLint namelen, memptr name) #else GLboolean OSMesaDriver::nfglIsNamedStringARB(GLint namelen, const GLchar *name) #endif { D(bug("nfosmesa: glIsNamedStringARB(%d, " PRI_PTR ")", namelen, AtariOffset(name))); FN_GLISNAMEDSTRINGARB(namelen, name); } GLboolean OSMesaDriver::nfglIsObjectBufferATI(GLuint buffer) { D(bug("nfosmesa: glIsObjectBufferATI(%u)", buffer)); GLboolean __ret = fn.glIsObjectBufferATI(buffer); return __ret; } GLboolean OSMesaDriver::nfglIsOcclusionQueryNV(GLuint id) { D(bug("nfosmesa: glIsOcclusionQueryNV(%u)", id)); GLboolean __ret = fn.glIsOcclusionQueryNV(id); return __ret; } GLboolean OSMesaDriver::nfglIsPathNV(GLuint path) { D(bug("nfosmesa: glIsPathNV(%u)", path)); GLboolean __ret = fn.glIsPathNV(path); return __ret; } GLboolean OSMesaDriver::nfglIsPointInFillPathNV(GLuint path, GLuint mask, GLfloat x, GLfloat y) { D(bug("nfosmesa: glIsPointInFillPathNV(%u, %u, %f, %f)", path, mask, x, y)); GLboolean __ret = fn.glIsPointInFillPathNV(path, mask, x, y); return __ret; } GLboolean OSMesaDriver::nfglIsPointInStrokePathNV(GLuint path, GLfloat x, GLfloat y) { D(bug("nfosmesa: glIsPointInStrokePathNV(%u, %f, %f)", path, x, y)); GLboolean __ret = fn.glIsPointInStrokePathNV(path, x, y); return __ret; } GLboolean OSMesaDriver::nfglIsProgram(GLuint program) { D(bug("nfosmesa: glIsProgram(%u)", program)); GLboolean __ret = fn.glIsProgram(program); return __ret; } GLboolean OSMesaDriver::nfglIsProgramARB(GLuint program) { D(bug("nfosmesa: glIsProgramARB(%u)", program)); GLboolean __ret = fn.glIsProgramARB(program); return __ret; } GLboolean OSMesaDriver::nfglIsProgramNV(GLuint id) { D(bug("nfosmesa: glIsProgramNV(%u)", id)); GLboolean __ret = fn.glIsProgramNV(id); return __ret; } GLboolean OSMesaDriver::nfglIsProgramPipeline(GLuint pipeline) { D(bug("nfosmesa: glIsProgramPipeline(%u)", pipeline)); GLboolean __ret = fn.glIsProgramPipeline(pipeline); return __ret; } GLboolean OSMesaDriver::nfglIsQuery(GLuint id) { D(bug("nfosmesa: glIsQuery(%u)", id)); GLboolean __ret = fn.glIsQuery(id); return __ret; } GLboolean OSMesaDriver::nfglIsQueryARB(GLuint id) { D(bug("nfosmesa: glIsQueryARB(%u)", id)); GLboolean __ret = fn.glIsQueryARB(id); return __ret; } GLboolean OSMesaDriver::nfglIsRenderbuffer(GLuint renderbuffer) { D(bug("nfosmesa: glIsRenderbuffer(%u)", renderbuffer)); GLboolean __ret = fn.glIsRenderbuffer(renderbuffer); return __ret; } GLboolean OSMesaDriver::nfglIsRenderbufferEXT(GLuint renderbuffer) { D(bug("nfosmesa: glIsRenderbufferEXT(%u)", renderbuffer)); GLboolean __ret = fn.glIsRenderbufferEXT(renderbuffer); return __ret; } GLboolean OSMesaDriver::nfglIsSampler(GLuint sampler) { D(bug("nfosmesa: glIsSampler(%u)", sampler)); GLboolean __ret = fn.glIsSampler(sampler); return __ret; } GLboolean OSMesaDriver::nfglIsSemaphoreEXT(GLuint semaphore) { D(bug("nfosmesa: glIsSemaphoreEXT(%u)", semaphore)); GLboolean __ret = fn.glIsSemaphoreEXT(semaphore); return __ret; } GLboolean OSMesaDriver::nfglIsShader(GLuint shader) { D(bug("nfosmesa: glIsShader(%u)", shader)); GLboolean __ret = fn.glIsShader(shader); return __ret; } GLboolean OSMesaDriver::nfglIsStateNV(GLuint state) { D(bug("nfosmesa: glIsStateNV(%u)", state)); GLboolean __ret = fn.glIsStateNV(state); return __ret; } GLboolean OSMesaDriver::nfglIsSync(GLsync sync) { D(bug("nfosmesa: glIsSync(" PRI_PTR ")", (unsigned int)(uintptr_t)sync)); GLboolean __ret = fn.glIsSync(sync); return __ret; } GLboolean OSMesaDriver::nfglIsTexture(GLuint texture) { D(bug("nfosmesa: glIsTexture(%u)", texture)); GLboolean __ret = fn.glIsTexture(texture); return __ret; } GLboolean OSMesaDriver::nfglIsTextureEXT(GLuint texture) { D(bug("nfosmesa: glIsTextureEXT(%u)", texture)); GLboolean __ret = fn.glIsTextureEXT(texture); return __ret; } GLboolean OSMesaDriver::nfglIsTextureHandleResidentARB(GLuint64 handle) { D(bug("nfosmesa: glIsTextureHandleResidentARB(%" PRIu64 ")", handle)); GLboolean __ret = fn.glIsTextureHandleResidentARB(handle); return __ret; } GLboolean OSMesaDriver::nfglIsTextureHandleResidentNV(GLuint64 handle) { D(bug("nfosmesa: glIsTextureHandleResidentNV(%" PRIu64 ")", handle)); GLboolean __ret = fn.glIsTextureHandleResidentNV(handle); return __ret; } GLboolean OSMesaDriver::nfglIsTransformFeedback(GLuint id) { D(bug("nfosmesa: glIsTransformFeedback(%u)", id)); GLboolean __ret = fn.glIsTransformFeedback(id); return __ret; } GLboolean OSMesaDriver::nfglIsTransformFeedbackNV(GLuint id) { D(bug("nfosmesa: glIsTransformFeedbackNV(%u)", id)); GLboolean __ret = fn.glIsTransformFeedbackNV(id); return __ret; } GLboolean OSMesaDriver::nfglIsVariantEnabledEXT(GLuint id, GLenum cap) { D(bug("nfosmesa: glIsVariantEnabledEXT(%u, %s)", id, gl_enum_name(cap))); GLboolean __ret = fn.glIsVariantEnabledEXT(id, cap); return __ret; } GLboolean OSMesaDriver::nfglIsVertexArray(GLuint array) { D(bug("nfosmesa: glIsVertexArray(%u)", array)); GLboolean __ret = fn.glIsVertexArray(array); return __ret; } GLboolean OSMesaDriver::nfglIsVertexArrayAPPLE(GLuint array) { D(bug("nfosmesa: glIsVertexArrayAPPLE(%u)", array)); GLboolean __ret = fn.glIsVertexArrayAPPLE(array); return __ret; } GLboolean OSMesaDriver::nfglIsVertexAttribEnabledAPPLE(GLuint index, GLenum pname) { D(bug("nfosmesa: glIsVertexAttribEnabledAPPLE(%u, %s)", index, gl_enum_name(pname))); GLboolean __ret = fn.glIsVertexAttribEnabledAPPLE(index, pname); return __ret; } void OSMesaDriver::nfglLGPUCopyImageSubDataNVX(GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth) { D(bug("nfosmesa: glLGPUCopyImageSubDataNVX(%u, 0x%x, %u, %s, %d, %d, %d, %d, %u, %s, %d, %d, %d, %d, %d, %d, %d)", sourceGpu, destinationGpuMask, srcName, gl_enum_name(srcTarget), srcLevel, srcX, srxY, srcZ, dstName, gl_enum_name(dstTarget), dstLevel, dstX, dstY, dstZ, width, height, depth)); fn.glLGPUCopyImageSubDataNVX(sourceGpu, destinationGpuMask, srcName, srcTarget, srcLevel, srcX, srxY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth); } void OSMesaDriver::nfglLGPUInterlockNVX(void) { D(bug("nfosmesa: glLGPUInterlockNVX()")); fn.glLGPUInterlockNVX(); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLGPUNamedBufferSubDataNVX(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, memptr data) #else void OSMesaDriver::nfglLGPUNamedBufferSubDataNVX(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data) #endif { D(bug("nfosmesa: glLGPUNamedBufferSubDataNVX(0x%x, %u, %" PRI_IPTR ", %" PRI_IPTR ", " PRI_PTR ")", gpuMask, buffer, offset, size, AtariOffset(data))); #if NFOSMESA_NEED_BYTE_CONV GLint const __data_size = MAX(size, 0); GLbyte __data_tmp[__data_size]; GLbyte *__data_ptmp = Atari2HostByteArray(__data_size, data, __data_tmp); fn.glLGPUNamedBufferSubDataNVX(gpuMask, buffer, offset, size, __data_ptmp); #else fn.glLGPUNamedBufferSubDataNVX(gpuMask, buffer, offset, size, HostAddr(data, const void *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLabelObjectEXT(GLenum type, GLuint object, GLsizei length, memptr label) #else void OSMesaDriver::nfglLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar *label) #endif { D(bug("nfosmesa: glLabelObjectEXT(%s, %u, %d, " PRI_PTR ")", gl_enum_name(type), object, length, AtariOffset(label))); FN_GLLABELOBJECTEXT(type, object, length, label); } void OSMesaDriver::nfglLightEnviSGIX(GLenum pname, GLint param) { D(bug("nfosmesa: glLightEnviSGIX(%s, %d)", gl_enum_name(pname), param)); fn.glLightEnviSGIX(pname, param); } void OSMesaDriver::nfglLightModelf(GLenum pname, GLfloat param) { D(bug("nfosmesa: glLightModelf(%s, %f)", gl_enum_name(pname), param)); fn.glLightModelf(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLightModelfv(GLenum pname, memptr params) #else void OSMesaDriver::nfglLightModelfv(GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glLightModelfv(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLLIGHTMODELFV(pname, params); } void OSMesaDriver::nfglLightModeli(GLenum pname, GLint param) { D(bug("nfosmesa: glLightModeli(%s, %d)", gl_enum_name(pname), param)); fn.glLightModeli(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLightModeliv(GLenum pname, memptr params) #else void OSMesaDriver::nfglLightModeliv(GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glLightModeliv(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLLIGHTMODELIV(pname, params); } void OSMesaDriver::nfglLightModelxOES(GLenum pname, GLfixed param) { D(bug("nfosmesa: glLightModelxOES(%s, 0x%x)", gl_enum_name(pname), param)); fn.glLightModelxOES(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLightModelxvOES(GLenum pname, memptr param) #else void OSMesaDriver::nfglLightModelxvOES(GLenum pname, const GLfixed *param) #endif { D(bug("nfosmesa: glLightModelxvOES(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(param))); FN_GLLIGHTMODELXVOES(pname, param); } void OSMesaDriver::nfglLightf(GLenum light, GLenum pname, GLfloat param) { D(bug("nfosmesa: glLightf(%s, %s, %f)", gl_enum_name(light), gl_enum_name(pname), param)); fn.glLightf(light, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLightfv(GLenum light, GLenum pname, memptr params) #else void OSMesaDriver::nfglLightfv(GLenum light, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glLightfv(%s, %s, " PRI_PTR ")", gl_enum_name(light), gl_enum_name(pname), AtariOffset(params))); FN_GLLIGHTFV(light, pname, params); } void OSMesaDriver::nfglLighti(GLenum light, GLenum pname, GLint param) { D(bug("nfosmesa: glLighti(%s, %s, %d)", gl_enum_name(light), gl_enum_name(pname), param)); fn.glLighti(light, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLightiv(GLenum light, GLenum pname, memptr params) #else void OSMesaDriver::nfglLightiv(GLenum light, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glLightiv(%s, %s, " PRI_PTR ")", gl_enum_name(light), gl_enum_name(pname), AtariOffset(params))); FN_GLLIGHTIV(light, pname, params); } void OSMesaDriver::nfglLightxOES(GLenum light, GLenum pname, GLfixed param) { D(bug("nfosmesa: glLightxOES(%s, %s, 0x%x)", gl_enum_name(light), gl_enum_name(pname), param)); fn.glLightxOES(light, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLightxvOES(GLenum light, GLenum pname, memptr params) #else void OSMesaDriver::nfglLightxvOES(GLenum light, GLenum pname, const GLfixed *params) #endif { D(bug("nfosmesa: glLightxvOES(%s, %s, " PRI_PTR ")", gl_enum_name(light), gl_enum_name(pname), AtariOffset(params))); FN_GLLIGHTXVOES(light, pname, params); } void OSMesaDriver::nfglLineStipple(GLint factor, GLushort32 pattern) { D(bug("nfosmesa: glLineStipple(%d, %u)", factor, pattern)); fn.glLineStipple(factor, pattern); } void OSMesaDriver::nfglLineWidth(GLfloat width) { D(bug("nfosmesa: glLineWidth(%f)", width)); fn.glLineWidth(width); } void OSMesaDriver::nfglLineWidthxOES(GLfixed width) { D(bug("nfosmesa: glLineWidthxOES(0x%x)", width)); fn.glLineWidthxOES(width); } void OSMesaDriver::nfglLinkProgram(GLuint program) { D(bug("nfosmesa: glLinkProgram(%u)", program)); fn.glLinkProgram(program); } void OSMesaDriver::nfglLinkProgramARB(GLhandleARB programObj) { D(bug("nfosmesa: glLinkProgramARB(%u)", (unsigned int)(uintptr_t)programObj)); fn.glLinkProgramARB(programObj); } void OSMesaDriver::nfglListBase(GLuint base) { D(bug("nfosmesa: glListBase(%u)", base)); fn.glListBase(base); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglListDrawCommandsStatesClientNV(GLuint list, GLuint segment, memptr indirects, memptr sizes, memptr states, memptr fbos, GLuint count) #else void OSMesaDriver::nfglListDrawCommandsStatesClientNV(GLuint list, GLuint segment, const void * *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count) #endif { D(bug("nfosmesa: glListDrawCommandsStatesClientNV(%u, %u, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", %u)", list, segment, AtariOffset(indirects), AtariOffset(sizes), AtariOffset(states), AtariOffset(fbos), count)); FN_GLLISTDRAWCOMMANDSSTATESCLIENTNV(list, segment, indirects, sizes, states, fbos, count); } void OSMesaDriver::nfglListParameterfSGIX(GLuint list, GLenum pname, GLfloat param) { D(bug("nfosmesa: glListParameterfSGIX(%u, %s, %f)", list, gl_enum_name(pname), param)); fn.glListParameterfSGIX(list, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglListParameterfvSGIX(GLuint list, GLenum pname, memptr params) #else void OSMesaDriver::nfglListParameterfvSGIX(GLuint list, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glListParameterfvSGIX(%u, %s, " PRI_PTR ")", list, gl_enum_name(pname), AtariOffset(params))); FN_GLLISTPARAMETERFVSGIX(list, pname, params); } void OSMesaDriver::nfglListParameteriSGIX(GLuint list, GLenum pname, GLint param) { D(bug("nfosmesa: glListParameteriSGIX(%u, %s, %d)", list, gl_enum_name(pname), param)); fn.glListParameteriSGIX(list, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglListParameterivSGIX(GLuint list, GLenum pname, memptr params) #else void OSMesaDriver::nfglListParameterivSGIX(GLuint list, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glListParameterivSGIX(%u, %s, " PRI_PTR ")", list, gl_enum_name(pname), AtariOffset(params))); FN_GLLISTPARAMETERIVSGIX(list, pname, params); } void OSMesaDriver::nfglLoadIdentity(void) { D(bug("nfosmesa: glLoadIdentity()")); fn.glLoadIdentity(); } void OSMesaDriver::nfglLoadIdentityDeformationMapSGIX(GLbitfield mask) { D(bug("nfosmesa: glLoadIdentityDeformationMapSGIX(0x%x)", mask)); fn.glLoadIdentityDeformationMapSGIX(mask); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLoadMatrixd(memptr m) #else void OSMesaDriver::nfglLoadMatrixd(const GLdouble *m) #endif { D(bug("nfosmesa: glLoadMatrixd(" PRI_PTR ")", AtariOffset(m))); FN_GLLOADMATRIXD(m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLoadMatrixf(memptr m) #else void OSMesaDriver::nfglLoadMatrixf(const GLfloat *m) #endif { D(bug("nfosmesa: glLoadMatrixf(" PRI_PTR ")", AtariOffset(m))); FN_GLLOADMATRIXF(m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLoadMatrixxOES(memptr m) #else void OSMesaDriver::nfglLoadMatrixxOES(const GLfixed *m) #endif { D(bug("nfosmesa: glLoadMatrixxOES(" PRI_PTR ")", AtariOffset(m))); FN_GLLOADMATRIXXOES(m); } void OSMesaDriver::nfglLoadName(GLuint name) { D(bug("nfosmesa: glLoadName(%u)", name)); fn.glLoadName(name); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLoadProgramNV(GLenum target, GLuint id, GLsizei len, memptr program) #else void OSMesaDriver::nfglLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte *program) #endif { D(bug("nfosmesa: glLoadProgramNV(%s, %u, %d, " PRI_PTR ")", gl_enum_name(target), id, len, AtariOffset(program))); FN_GLLOADPROGRAMNV(target, id, len, program); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLoadTransposeMatrixd(memptr m) #else void OSMesaDriver::nfglLoadTransposeMatrixd(const GLdouble *m) #endif { D(bug("nfosmesa: glLoadTransposeMatrixd(" PRI_PTR ")", AtariOffset(m))); FN_GLLOADTRANSPOSEMATRIXD(m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLoadTransposeMatrixdARB(memptr m) #else void OSMesaDriver::nfglLoadTransposeMatrixdARB(const GLdouble *m) #endif { D(bug("nfosmesa: glLoadTransposeMatrixdARB(" PRI_PTR ")", AtariOffset(m))); #if NFOSMESA_NEED_DOUBLE_CONV GLint const __m_size = MAX(16, 0); GLdouble __m_tmp[__m_size]; GLdouble *__m_ptmp = Atari2HostDoubleArray(__m_size, m, __m_tmp); fn.glLoadTransposeMatrixdARB(__m_ptmp); #else fn.glLoadTransposeMatrixdARB(HostAddr(m, const GLdouble *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLoadTransposeMatrixf(memptr m) #else void OSMesaDriver::nfglLoadTransposeMatrixf(const GLfloat *m) #endif { D(bug("nfosmesa: glLoadTransposeMatrixf(" PRI_PTR ")", AtariOffset(m))); FN_GLLOADTRANSPOSEMATRIXF(m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLoadTransposeMatrixfARB(memptr m) #else void OSMesaDriver::nfglLoadTransposeMatrixfARB(const GLfloat *m) #endif { D(bug("nfosmesa: glLoadTransposeMatrixfARB(" PRI_PTR ")", AtariOffset(m))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __m_size = MAX(16, 0); GLfloat __m_tmp[__m_size]; GLfloat *__m_ptmp = Atari2HostFloatArray(__m_size, m, __m_tmp); fn.glLoadTransposeMatrixfARB(__m_ptmp); #else fn.glLoadTransposeMatrixfARB(HostAddr(m, const GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglLoadTransposeMatrixxOES(memptr m) #else void OSMesaDriver::nfglLoadTransposeMatrixxOES(const GLfixed *m) #endif { D(bug("nfosmesa: glLoadTransposeMatrixxOES(" PRI_PTR ")", AtariOffset(m))); FN_GLLOADTRANSPOSEMATRIXXOES(m); } void OSMesaDriver::nfglLockArraysEXT(GLint first, GLsizei count) { D(bug("nfosmesa: glLockArraysEXT(%d, %d)", first, count)); FN_GLLOCKARRAYSEXT(first, count); } void OSMesaDriver::nfglLogicOp(GLenum opcode) { D(bug("nfosmesa: glLogicOp(%s)", gl_enum_name(opcode))); fn.glLogicOp(opcode); } void OSMesaDriver::nfglMakeBufferNonResidentNV(GLenum target) { D(bug("nfosmesa: glMakeBufferNonResidentNV(%s)", gl_enum_name(target))); fn.glMakeBufferNonResidentNV(target); } void OSMesaDriver::nfglMakeBufferResidentNV(GLenum target, GLenum access) { D(bug("nfosmesa: glMakeBufferResidentNV(%s, %s)", gl_enum_name(target), gl_enum_name(access))); fn.glMakeBufferResidentNV(target, access); } void OSMesaDriver::nfglMakeImageHandleNonResidentARB(GLuint64 handle) { D(bug("nfosmesa: glMakeImageHandleNonResidentARB(%" PRIu64 ")", handle)); fn.glMakeImageHandleNonResidentARB(handle); } void OSMesaDriver::nfglMakeImageHandleNonResidentNV(GLuint64 handle) { D(bug("nfosmesa: glMakeImageHandleNonResidentNV(%" PRIu64 ")", handle)); fn.glMakeImageHandleNonResidentNV(handle); } void OSMesaDriver::nfglMakeImageHandleResidentARB(GLuint64 handle, GLenum access) { D(bug("nfosmesa: glMakeImageHandleResidentARB(%" PRIu64 ", %s)", handle, gl_enum_name(access))); fn.glMakeImageHandleResidentARB(handle, access); } void OSMesaDriver::nfglMakeImageHandleResidentNV(GLuint64 handle, GLenum access) { D(bug("nfosmesa: glMakeImageHandleResidentNV(%" PRIu64 ", %s)", handle, gl_enum_name(access))); fn.glMakeImageHandleResidentNV(handle, access); } void OSMesaDriver::nfglMakeNamedBufferNonResidentNV(GLuint buffer) { D(bug("nfosmesa: glMakeNamedBufferNonResidentNV(%u)", buffer)); fn.glMakeNamedBufferNonResidentNV(buffer); } void OSMesaDriver::nfglMakeNamedBufferResidentNV(GLuint buffer, GLenum access) { D(bug("nfosmesa: glMakeNamedBufferResidentNV(%u, %s)", buffer, gl_enum_name(access))); fn.glMakeNamedBufferResidentNV(buffer, access); } void OSMesaDriver::nfglMakeTextureHandleNonResidentARB(GLuint64 handle) { D(bug("nfosmesa: glMakeTextureHandleNonResidentARB(%" PRIu64 ")", handle)); fn.glMakeTextureHandleNonResidentARB(handle); } void OSMesaDriver::nfglMakeTextureHandleNonResidentNV(GLuint64 handle) { D(bug("nfosmesa: glMakeTextureHandleNonResidentNV(%" PRIu64 ")", handle)); fn.glMakeTextureHandleNonResidentNV(handle); } void OSMesaDriver::nfglMakeTextureHandleResidentARB(GLuint64 handle) { D(bug("nfosmesa: glMakeTextureHandleResidentARB(%" PRIu64 ")", handle)); fn.glMakeTextureHandleResidentARB(handle); } void OSMesaDriver::nfglMakeTextureHandleResidentNV(GLuint64 handle) { D(bug("nfosmesa: glMakeTextureHandleResidentNV(%" PRIu64 ")", handle)); fn.glMakeTextureHandleResidentNV(handle); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, memptr points) #else void OSMesaDriver::nfglMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) #endif { D(bug("nfosmesa: glMap1d(%s, %f, %f, %d, %d, " PRI_PTR ")", gl_enum_name(target), u1, u2, stride, order, AtariOffset(points))); FN_GLMAP1D(target, u1, u2, stride, order, points); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, memptr points) #else void OSMesaDriver::nfglMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) #endif { D(bug("nfosmesa: glMap1f(%s, %f, %f, %d, %d, " PRI_PTR ")", gl_enum_name(target), u1, u2, stride, order, AtariOffset(points))); FN_GLMAP1F(target, u1, u2, stride, order, points); } void OSMesaDriver::nfglMap1xOES(GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points) { D(bug("nfosmesa: glMap1xOES(%s, 0x%x, 0x%x, %d, %d, 0x%x)", gl_enum_name(target), u1, u2, stride, order, points)); fn.glMap1xOES(target, u1, u2, stride, order, points); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, memptr points) #else void OSMesaDriver::nfglMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) #endif { D(bug("nfosmesa: glMap2d(%s, %f, %f, %d, %d, %f, %f, %d, %d, " PRI_PTR ")", gl_enum_name(target), u1, u2, ustride, uorder, v1, v2, vstride, vorder, AtariOffset(points))); FN_GLMAP2D(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, memptr points) #else void OSMesaDriver::nfglMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) #endif { D(bug("nfosmesa: glMap2f(%s, %f, %f, %d, %d, %f, %f, %d, %d, " PRI_PTR ")", gl_enum_name(target), u1, u2, ustride, uorder, v1, v2, vstride, vorder, AtariOffset(points))); FN_GLMAP2F(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); } void OSMesaDriver::nfglMap2xOES(GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points) { D(bug("nfosmesa: glMap2xOES(%s, 0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %d, %d, 0x%x)", gl_enum_name(target), u1, u2, ustride, uorder, v1, v2, vstride, vorder, points)); fn.glMap2xOES(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); } #if 0 void * OSMesaDriver::nfglMapBuffer(GLenum target, GLenum access) { D(bug("nfosmesa: glMapBuffer(%s, %s)", gl_enum_name(target), gl_enum_name(access))); FN_GLMAPBUFFER(target, access); } #endif #if 0 void * OSMesaDriver::nfglMapBufferARB(GLenum target, GLenum access) { D(bug("nfosmesa: glMapBufferARB(%s, %s)", gl_enum_name(target), gl_enum_name(access))); FN_GLMAPBUFFERARB(target, access); } #endif #if 0 void * OSMesaDriver::nfglMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) { D(bug("nfosmesa: glMapBufferRange(%s, %" PRI_IPTR ", %" PRI_IPTR ", 0x%x)", gl_enum_name(target), offset, length, access)); FN_GLMAPBUFFERRANGE(target, offset, length, access); } #endif #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean32 packed, memptr points) #else void OSMesaDriver::nfglMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean32 packed, const void *points) #endif { D(bug("nfosmesa: glMapControlPointsNV(%s, %u, %s, %d, %d, %d, %d, %d, " PRI_PTR ")", gl_enum_name(target), index, gl_enum_name(type), ustride, vstride, uorder, vorder, packed, AtariOffset(points))); FN_GLMAPCONTROLPOINTSNV(target, index, type, ustride, vstride, uorder, vorder, packed, points); } void OSMesaDriver::nfglMapGrid1d(GLint un, GLdouble u1, GLdouble u2) { D(bug("nfosmesa: glMapGrid1d(%d, %f, %f)", un, u1, u2)); fn.glMapGrid1d(un, u1, u2); } void OSMesaDriver::nfglMapGrid1f(GLint un, GLfloat u1, GLfloat u2) { D(bug("nfosmesa: glMapGrid1f(%d, %f, %f)", un, u1, u2)); fn.glMapGrid1f(un, u1, u2); } void OSMesaDriver::nfglMapGrid1xOES(GLint n, GLfixed u1, GLfixed u2) { D(bug("nfosmesa: glMapGrid1xOES(%d, 0x%x, 0x%x)", n, u1, u2)); fn.glMapGrid1xOES(n, u1, u2); } void OSMesaDriver::nfglMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) { D(bug("nfosmesa: glMapGrid2d(%d, %f, %f, %d, %f, %f)", un, u1, u2, vn, v1, v2)); fn.glMapGrid2d(un, u1, u2, vn, v1, v2); } void OSMesaDriver::nfglMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) { D(bug("nfosmesa: glMapGrid2f(%d, %f, %f, %d, %f, %f)", un, u1, u2, vn, v1, v2)); fn.glMapGrid2f(un, u1, u2, vn, v1, v2); } void OSMesaDriver::nfglMapGrid2xOES(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2) { D(bug("nfosmesa: glMapGrid2xOES(%d, 0x%x, 0x%x, 0x%x, 0x%x)", n, u1, u2, v1, v2)); fn.glMapGrid2xOES(n, u1, u2, v1, v2); } #if 0 void * OSMesaDriver::nfglMapNamedBuffer(GLuint buffer, GLenum access) { D(bug("nfosmesa: glMapNamedBuffer(%u, %s)", buffer, gl_enum_name(access))); FN_GLMAPNAMEDBUFFER(buffer, access); } #endif #if 0 void * OSMesaDriver::nfglMapNamedBufferEXT(GLuint buffer, GLenum access) { D(bug("nfosmesa: glMapNamedBufferEXT(%u, %s)", buffer, gl_enum_name(access))); void * __ret = fn.glMapNamedBufferEXT(buffer, access); return __ret; } #endif #if 0 void * OSMesaDriver::nfglMapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access) { D(bug("nfosmesa: glMapNamedBufferRange(%u, %" PRI_IPTR ", %" PRI_IPTR ", 0x%x)", buffer, offset, length, access)); FN_GLMAPNAMEDBUFFERRANGE(buffer, offset, length, access); } #endif #if 0 void * OSMesaDriver::nfglMapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access) { D(bug("nfosmesa: glMapNamedBufferRangeEXT(%u, %" PRI_IPTR ", %" PRI_IPTR ", 0x%x)", buffer, offset, length, access)); void * __ret = fn.glMapNamedBufferRangeEXT(buffer, offset, length, access); return __ret; } #endif #if 0 void * OSMesaDriver::nfglMapObjectBufferATI(GLuint buffer) { D(bug("nfosmesa: glMapObjectBufferATI(%u)", buffer)); void * __ret = fn.glMapObjectBufferATI(buffer); return __ret; } #endif #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMapParameterfvNV(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglMapParameterfvNV(GLenum target, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glMapParameterfvNV(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLMAPPARAMETERFVNV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMapParameterivNV(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglMapParameterivNV(GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glMapParameterivNV(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLMAPPARAMETERIVNV(target, pname, params); } #if 0 #if NFOSMESA_POINTER_AS_MEMARG void * OSMesaDriver::nfglMapTexture2DINTEL(GLuint texture, GLint level, GLbitfield access, memptr stride, memptr layout) #else void * OSMesaDriver::nfglMapTexture2DINTEL(GLuint texture, GLint level, GLbitfield access, const GLint *stride, const GLenum *layout) #endif { D(bug("nfosmesa: glMapTexture2DINTEL(%u, %d, 0x%x, " PRI_PTR ", " PRI_PTR ")", texture, level, access, AtariOffset(stride), AtariOffset(layout))); void * __ret = fn.glMapTexture2DINTEL(texture, level, access, stride, layout); return __ret; } #endif #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMapVertexAttrib1dAPPLE(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, memptr points) #else void OSMesaDriver::nfglMapVertexAttrib1dAPPLE(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) #endif { D(bug("nfosmesa: glMapVertexAttrib1dAPPLE(%u, %u, %f, %f, %d, %d, " PRI_PTR ")", index, size, u1, u2, stride, order, AtariOffset(points))); FN_GLMAPVERTEXATTRIB1DAPPLE(index, size, u1, u2, stride, order, points); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMapVertexAttrib1fAPPLE(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, memptr points) #else void OSMesaDriver::nfglMapVertexAttrib1fAPPLE(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) #endif { D(bug("nfosmesa: glMapVertexAttrib1fAPPLE(%u, %u, %f, %f, %d, %d, " PRI_PTR ")", index, size, u1, u2, stride, order, AtariOffset(points))); FN_GLMAPVERTEXATTRIB1FAPPLE(index, size, u1, u2, stride, order, points); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMapVertexAttrib2dAPPLE(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, memptr points) #else void OSMesaDriver::nfglMapVertexAttrib2dAPPLE(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) #endif { D(bug("nfosmesa: glMapVertexAttrib2dAPPLE(%u, %u, %f, %f, %d, %d, %f, %f, %d, %d, " PRI_PTR ")", index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, AtariOffset(points))); FN_GLMAPVERTEXATTRIB2DAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMapVertexAttrib2fAPPLE(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, memptr points) #else void OSMesaDriver::nfglMapVertexAttrib2fAPPLE(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) #endif { D(bug("nfosmesa: glMapVertexAttrib2fAPPLE(%u, %u, %f, %f, %d, %d, %f, %f, %d, %d, " PRI_PTR ")", index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, AtariOffset(points))); FN_GLMAPVERTEXATTRIB2FAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); } void OSMesaDriver::nfglMaterialf(GLenum face, GLenum pname, GLfloat param) { D(bug("nfosmesa: glMaterialf(%s, %s, %f)", gl_enum_name(face), gl_enum_name(pname), param)); fn.glMaterialf(face, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMaterialfv(GLenum face, GLenum pname, memptr params) #else void OSMesaDriver::nfglMaterialfv(GLenum face, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glMaterialfv(%s, %s, " PRI_PTR ")", gl_enum_name(face), gl_enum_name(pname), AtariOffset(params))); FN_GLMATERIALFV(face, pname, params); } void OSMesaDriver::nfglMateriali(GLenum face, GLenum pname, GLint param) { D(bug("nfosmesa: glMateriali(%s, %s, %d)", gl_enum_name(face), gl_enum_name(pname), param)); fn.glMateriali(face, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMaterialiv(GLenum face, GLenum pname, memptr params) #else void OSMesaDriver::nfglMaterialiv(GLenum face, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glMaterialiv(%s, %s, " PRI_PTR ")", gl_enum_name(face), gl_enum_name(pname), AtariOffset(params))); FN_GLMATERIALIV(face, pname, params); } void OSMesaDriver::nfglMaterialxOES(GLenum face, GLenum pname, GLfixed param) { D(bug("nfosmesa: glMaterialxOES(%s, %s, 0x%x)", gl_enum_name(face), gl_enum_name(pname), param)); fn.glMaterialxOES(face, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMaterialxvOES(GLenum face, GLenum pname, memptr param) #else void OSMesaDriver::nfglMaterialxvOES(GLenum face, GLenum pname, const GLfixed *param) #endif { D(bug("nfosmesa: glMaterialxvOES(%s, %s, " PRI_PTR ")", gl_enum_name(face), gl_enum_name(pname), AtariOffset(param))); FN_GLMATERIALXVOES(face, pname, param); } void OSMesaDriver::nfglMatrixFrustumEXT(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { D(bug("nfosmesa: glMatrixFrustumEXT(%s, %f, %f, %f, %f, %f, %f)", gl_enum_name(mode), left, right, bottom, top, zNear, zFar)); fn.glMatrixFrustumEXT(mode, left, right, bottom, top, zNear, zFar); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixIndexPointerARB(GLint size, GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglMatrixIndexPointerARB(GLint size, GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glMatrixIndexPointerARB(%d, %s, %d, " PRI_PTR ")", size, gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLMATRIXINDEXPOINTERARB(size, type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixIndexubvARB(GLint size, memptr indices) #else void OSMesaDriver::nfglMatrixIndexubvARB(GLint size, const GLubyte *indices) #endif { D(bug("nfosmesa: glMatrixIndexubvARB(%d, " PRI_PTR ")", size, AtariOffset(indices))); FN_GLMATRIXINDEXUBVARB(size, indices); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixIndexuivARB(GLint size, memptr indices) #else void OSMesaDriver::nfglMatrixIndexuivARB(GLint size, const GLuint *indices) #endif { D(bug("nfosmesa: glMatrixIndexuivARB(%d, " PRI_PTR ")", size, AtariOffset(indices))); FN_GLMATRIXINDEXUIVARB(size, indices); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixIndexusvARB(GLint size, memptr indices) #else void OSMesaDriver::nfglMatrixIndexusvARB(GLint size, const GLushort *indices) #endif { D(bug("nfosmesa: glMatrixIndexusvARB(%d, " PRI_PTR ")", size, AtariOffset(indices))); FN_GLMATRIXINDEXUSVARB(size, indices); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixLoad3x2fNV(GLenum matrixMode, memptr m) #else void OSMesaDriver::nfglMatrixLoad3x2fNV(GLenum matrixMode, const GLfloat *m) #endif { D(bug("nfosmesa: glMatrixLoad3x2fNV(%s, " PRI_PTR ")", gl_enum_name(matrixMode), AtariOffset(m))); FN_GLMATRIXLOAD3X2FNV(matrixMode, m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixLoad3x3fNV(GLenum matrixMode, memptr m) #else void OSMesaDriver::nfglMatrixLoad3x3fNV(GLenum matrixMode, const GLfloat *m) #endif { D(bug("nfosmesa: glMatrixLoad3x3fNV(%s, " PRI_PTR ")", gl_enum_name(matrixMode), AtariOffset(m))); FN_GLMATRIXLOAD3X3FNV(matrixMode, m); } void OSMesaDriver::nfglMatrixLoadIdentityEXT(GLenum mode) { D(bug("nfosmesa: glMatrixLoadIdentityEXT(%s)", gl_enum_name(mode))); fn.glMatrixLoadIdentityEXT(mode); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixLoadTranspose3x3fNV(GLenum matrixMode, memptr m) #else void OSMesaDriver::nfglMatrixLoadTranspose3x3fNV(GLenum matrixMode, const GLfloat *m) #endif { D(bug("nfosmesa: glMatrixLoadTranspose3x3fNV(%s, " PRI_PTR ")", gl_enum_name(matrixMode), AtariOffset(m))); FN_GLMATRIXLOADTRANSPOSE3X3FNV(matrixMode, m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixLoadTransposedEXT(GLenum mode, memptr m) #else void OSMesaDriver::nfglMatrixLoadTransposedEXT(GLenum mode, const GLdouble *m) #endif { D(bug("nfosmesa: glMatrixLoadTransposedEXT(%s, " PRI_PTR ")", gl_enum_name(mode), AtariOffset(m))); FN_GLMATRIXLOADTRANSPOSEDEXT(mode, m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixLoadTransposefEXT(GLenum mode, memptr m) #else void OSMesaDriver::nfglMatrixLoadTransposefEXT(GLenum mode, const GLfloat *m) #endif { D(bug("nfosmesa: glMatrixLoadTransposefEXT(%s, " PRI_PTR ")", gl_enum_name(mode), AtariOffset(m))); FN_GLMATRIXLOADTRANSPOSEFEXT(mode, m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixLoaddEXT(GLenum mode, memptr m) #else void OSMesaDriver::nfglMatrixLoaddEXT(GLenum mode, const GLdouble *m) #endif { D(bug("nfosmesa: glMatrixLoaddEXT(%s, " PRI_PTR ")", gl_enum_name(mode), AtariOffset(m))); FN_GLMATRIXLOADDEXT(mode, m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixLoadfEXT(GLenum mode, memptr m) #else void OSMesaDriver::nfglMatrixLoadfEXT(GLenum mode, const GLfloat *m) #endif { D(bug("nfosmesa: glMatrixLoadfEXT(%s, " PRI_PTR ")", gl_enum_name(mode), AtariOffset(m))); FN_GLMATRIXLOADFEXT(mode, m); } void OSMesaDriver::nfglMatrixMode(GLenum mode) { D(bug("nfosmesa: glMatrixMode(%s)", gl_enum_name(mode))); fn.glMatrixMode(mode); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixMult3x2fNV(GLenum matrixMode, memptr m) #else void OSMesaDriver::nfglMatrixMult3x2fNV(GLenum matrixMode, const GLfloat *m) #endif { D(bug("nfosmesa: glMatrixMult3x2fNV(%s, " PRI_PTR ")", gl_enum_name(matrixMode), AtariOffset(m))); FN_GLMATRIXMULT3X2FNV(matrixMode, m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixMult3x3fNV(GLenum matrixMode, memptr m) #else void OSMesaDriver::nfglMatrixMult3x3fNV(GLenum matrixMode, const GLfloat *m) #endif { D(bug("nfosmesa: glMatrixMult3x3fNV(%s, " PRI_PTR ")", gl_enum_name(matrixMode), AtariOffset(m))); FN_GLMATRIXMULT3X3FNV(matrixMode, m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixMultTranspose3x3fNV(GLenum matrixMode, memptr m) #else void OSMesaDriver::nfglMatrixMultTranspose3x3fNV(GLenum matrixMode, const GLfloat *m) #endif { D(bug("nfosmesa: glMatrixMultTranspose3x3fNV(%s, " PRI_PTR ")", gl_enum_name(matrixMode), AtariOffset(m))); FN_GLMATRIXMULTTRANSPOSE3X3FNV(matrixMode, m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixMultTransposedEXT(GLenum mode, memptr m) #else void OSMesaDriver::nfglMatrixMultTransposedEXT(GLenum mode, const GLdouble *m) #endif { D(bug("nfosmesa: glMatrixMultTransposedEXT(%s, " PRI_PTR ")", gl_enum_name(mode), AtariOffset(m))); FN_GLMATRIXMULTTRANSPOSEDEXT(mode, m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixMultTransposefEXT(GLenum mode, memptr m) #else void OSMesaDriver::nfglMatrixMultTransposefEXT(GLenum mode, const GLfloat *m) #endif { D(bug("nfosmesa: glMatrixMultTransposefEXT(%s, " PRI_PTR ")", gl_enum_name(mode), AtariOffset(m))); FN_GLMATRIXMULTTRANSPOSEFEXT(mode, m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixMultdEXT(GLenum mode, memptr m) #else void OSMesaDriver::nfglMatrixMultdEXT(GLenum mode, const GLdouble *m) #endif { D(bug("nfosmesa: glMatrixMultdEXT(%s, " PRI_PTR ")", gl_enum_name(mode), AtariOffset(m))); FN_GLMATRIXMULTDEXT(mode, m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMatrixMultfEXT(GLenum mode, memptr m) #else void OSMesaDriver::nfglMatrixMultfEXT(GLenum mode, const GLfloat *m) #endif { D(bug("nfosmesa: glMatrixMultfEXT(%s, " PRI_PTR ")", gl_enum_name(mode), AtariOffset(m))); FN_GLMATRIXMULTFEXT(mode, m); } void OSMesaDriver::nfglMatrixOrthoEXT(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { D(bug("nfosmesa: glMatrixOrthoEXT(%s, %f, %f, %f, %f, %f, %f)", gl_enum_name(mode), left, right, bottom, top, zNear, zFar)); fn.glMatrixOrthoEXT(mode, left, right, bottom, top, zNear, zFar); } void OSMesaDriver::nfglMatrixPopEXT(GLenum mode) { D(bug("nfosmesa: glMatrixPopEXT(%s)", gl_enum_name(mode))); fn.glMatrixPopEXT(mode); } void OSMesaDriver::nfglMatrixPushEXT(GLenum mode) { D(bug("nfosmesa: glMatrixPushEXT(%s)", gl_enum_name(mode))); fn.glMatrixPushEXT(mode); } void OSMesaDriver::nfglMatrixRotatedEXT(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glMatrixRotatedEXT(%s, %f, %f, %f, %f)", gl_enum_name(mode), angle, x, y, z)); fn.glMatrixRotatedEXT(mode, angle, x, y, z); } void OSMesaDriver::nfglMatrixRotatefEXT(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glMatrixRotatefEXT(%s, %f, %f, %f, %f)", gl_enum_name(mode), angle, x, y, z)); fn.glMatrixRotatefEXT(mode, angle, x, y, z); } void OSMesaDriver::nfglMatrixScaledEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glMatrixScaledEXT(%s, %f, %f, %f)", gl_enum_name(mode), x, y, z)); fn.glMatrixScaledEXT(mode, x, y, z); } void OSMesaDriver::nfglMatrixScalefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glMatrixScalefEXT(%s, %f, %f, %f)", gl_enum_name(mode), x, y, z)); fn.glMatrixScalefEXT(mode, x, y, z); } void OSMesaDriver::nfglMatrixTranslatedEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glMatrixTranslatedEXT(%s, %f, %f, %f)", gl_enum_name(mode), x, y, z)); fn.glMatrixTranslatedEXT(mode, x, y, z); } void OSMesaDriver::nfglMatrixTranslatefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glMatrixTranslatefEXT(%s, %f, %f, %f)", gl_enum_name(mode), x, y, z)); fn.glMatrixTranslatefEXT(mode, x, y, z); } void OSMesaDriver::nfglMaxShaderCompilerThreadsARB(GLuint count) { D(bug("nfosmesa: glMaxShaderCompilerThreadsARB(%u)", count)); fn.glMaxShaderCompilerThreadsARB(count); } void OSMesaDriver::nfglMaxShaderCompilerThreadsKHR(GLuint count) { D(bug("nfosmesa: glMaxShaderCompilerThreadsKHR(%u)", count)); fn.glMaxShaderCompilerThreadsKHR(count); } void OSMesaDriver::nfglMemoryBarrier(GLbitfield barriers) { D(bug("nfosmesa: glMemoryBarrier(0x%x)", barriers)); fn.glMemoryBarrier(barriers); } void OSMesaDriver::nfglMemoryBarrierByRegion(GLbitfield barriers) { D(bug("nfosmesa: glMemoryBarrierByRegion(0x%x)", barriers)); fn.glMemoryBarrierByRegion(barriers); } void OSMesaDriver::nfglMemoryBarrierEXT(GLbitfield barriers) { D(bug("nfosmesa: glMemoryBarrierEXT(0x%x)", barriers)); fn.glMemoryBarrierEXT(barriers); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMemoryObjectParameterivEXT(GLuint memoryObject, GLenum pname, memptr params) #else void OSMesaDriver::nfglMemoryObjectParameterivEXT(GLuint memoryObject, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glMemoryObjectParameterivEXT(%u, %s, " PRI_PTR ")", memoryObject, gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = nfglGetNumParams(pname); GLint __params_tmp[__params_size]; GLint *__params_ptmp = Atari2HostIntArray(__params_size, params, __params_tmp); fn.glMemoryObjectParameterivEXT(memoryObject, pname, __params_ptmp); #else fn.glMemoryObjectParameterivEXT(memoryObject, pname, HostAddr(params, const GLint *)); #endif } void OSMesaDriver::nfglMinSampleShading(GLfloat value) { D(bug("nfosmesa: glMinSampleShading(%f)", value)); fn.glMinSampleShading(value); } void OSMesaDriver::nfglMinSampleShadingARB(GLfloat value) { D(bug("nfosmesa: glMinSampleShadingARB(%f)", value)); fn.glMinSampleShadingARB(value); } void OSMesaDriver::nfglMinmax(GLenum target, GLenum internalformat, GLboolean32 sink) { D(bug("nfosmesa: glMinmax(%s, %s, %d)", gl_enum_name(target), gl_enum_name(internalformat), sink)); fn.glMinmax(target, internalformat, sink); } void OSMesaDriver::nfglMinmaxEXT(GLenum target, GLenum internalformat, GLboolean32 sink) { D(bug("nfosmesa: glMinmaxEXT(%s, %s, %d)", gl_enum_name(target), gl_enum_name(internalformat), sink)); fn.glMinmaxEXT(target, internalformat, sink); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultMatrixd(memptr m) #else void OSMesaDriver::nfglMultMatrixd(const GLdouble *m) #endif { D(bug("nfosmesa: glMultMatrixd(" PRI_PTR ")", AtariOffset(m))); FN_GLMULTMATRIXD(m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultMatrixf(memptr m) #else void OSMesaDriver::nfglMultMatrixf(const GLfloat *m) #endif { D(bug("nfosmesa: glMultMatrixf(" PRI_PTR ")", AtariOffset(m))); FN_GLMULTMATRIXF(m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultMatrixxOES(memptr m) #else void OSMesaDriver::nfglMultMatrixxOES(const GLfixed *m) #endif { D(bug("nfosmesa: glMultMatrixxOES(" PRI_PTR ")", AtariOffset(m))); FN_GLMULTMATRIXXOES(m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultTransposeMatrixd(memptr m) #else void OSMesaDriver::nfglMultTransposeMatrixd(const GLdouble *m) #endif { D(bug("nfosmesa: glMultTransposeMatrixd(" PRI_PTR ")", AtariOffset(m))); FN_GLMULTTRANSPOSEMATRIXD(m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultTransposeMatrixdARB(memptr m) #else void OSMesaDriver::nfglMultTransposeMatrixdARB(const GLdouble *m) #endif { D(bug("nfosmesa: glMultTransposeMatrixdARB(" PRI_PTR ")", AtariOffset(m))); #if NFOSMESA_NEED_DOUBLE_CONV GLint const __m_size = MAX(16, 0); GLdouble __m_tmp[__m_size]; GLdouble *__m_ptmp = Atari2HostDoubleArray(__m_size, m, __m_tmp); fn.glMultTransposeMatrixdARB(__m_ptmp); #else fn.glMultTransposeMatrixdARB(HostAddr(m, const GLdouble *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultTransposeMatrixf(memptr m) #else void OSMesaDriver::nfglMultTransposeMatrixf(const GLfloat *m) #endif { D(bug("nfosmesa: glMultTransposeMatrixf(" PRI_PTR ")", AtariOffset(m))); FN_GLMULTTRANSPOSEMATRIXF(m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultTransposeMatrixfARB(memptr m) #else void OSMesaDriver::nfglMultTransposeMatrixfARB(const GLfloat *m) #endif { D(bug("nfosmesa: glMultTransposeMatrixfARB(" PRI_PTR ")", AtariOffset(m))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __m_size = MAX(16, 0); GLfloat __m_tmp[__m_size]; GLfloat *__m_ptmp = Atari2HostFloatArray(__m_size, m, __m_tmp); fn.glMultTransposeMatrixfARB(__m_ptmp); #else fn.glMultTransposeMatrixfARB(HostAddr(m, const GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultTransposeMatrixxOES(memptr m) #else void OSMesaDriver::nfglMultTransposeMatrixxOES(const GLfixed *m) #endif { D(bug("nfosmesa: glMultTransposeMatrixxOES(" PRI_PTR ")", AtariOffset(m))); FN_GLMULTTRANSPOSEMATRIXXOES(m); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawArrays(GLenum mode, memptr first, memptr count, GLsizei drawcount) #else void OSMesaDriver::nfglMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) #endif { D(bug("nfosmesa: glMultiDrawArrays(%s, " PRI_PTR ", " PRI_PTR ", %d)", gl_enum_name(mode), AtariOffset(first), AtariOffset(count), drawcount)); FN_GLMULTIDRAWARRAYS(mode, first, count, drawcount); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawArraysEXT(GLenum mode, memptr first, memptr count, GLsizei primcount) #else void OSMesaDriver::nfglMultiDrawArraysEXT(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount) #endif { D(bug("nfosmesa: glMultiDrawArraysEXT(%s, " PRI_PTR ", " PRI_PTR ", %d)", gl_enum_name(mode), AtariOffset(first), AtariOffset(count), primcount)); FN_GLMULTIDRAWARRAYSEXT(mode, first, count, primcount); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawArraysIndirect(GLenum mode, memptr indirect, GLsizei drawcount, GLsizei stride) #else void OSMesaDriver::nfglMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride) #endif { D(bug("nfosmesa: glMultiDrawArraysIndirect(%s, " PRI_PTR ", %d, %d)", gl_enum_name(mode), AtariOffset(indirect), drawcount, stride)); FN_GLMULTIDRAWARRAYSINDIRECT(mode, indirect, drawcount, stride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawArraysIndirectAMD(GLenum mode, memptr indirect, GLsizei primcount, GLsizei stride) #else void OSMesaDriver::nfglMultiDrawArraysIndirectAMD(GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride) #endif { D(bug("nfosmesa: glMultiDrawArraysIndirectAMD(%s, " PRI_PTR ", %d, %d)", gl_enum_name(mode), AtariOffset(indirect), primcount, stride)); FN_GLMULTIDRAWARRAYSINDIRECTAMD(mode, indirect, primcount, stride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawArraysIndirectBindlessCountNV(GLenum mode, memptr indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount) #else void OSMesaDriver::nfglMultiDrawArraysIndirectBindlessCountNV(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount) #endif { D(bug("nfosmesa: glMultiDrawArraysIndirectBindlessCountNV(%s, " PRI_PTR ", %d, %d, %d, %d)", gl_enum_name(mode), AtariOffset(indirect), drawCount, maxDrawCount, stride, vertexBufferCount)); FN_GLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV(mode, indirect, drawCount, maxDrawCount, stride, vertexBufferCount); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawArraysIndirectBindlessNV(GLenum mode, memptr indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount) #else void OSMesaDriver::nfglMultiDrawArraysIndirectBindlessNV(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount) #endif { D(bug("nfosmesa: glMultiDrawArraysIndirectBindlessNV(%s, " PRI_PTR ", %d, %d, %d)", gl_enum_name(mode), AtariOffset(indirect), drawCount, stride, vertexBufferCount)); FN_GLMULTIDRAWARRAYSINDIRECTBINDLESSNV(mode, indirect, drawCount, stride, vertexBufferCount); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawArraysIndirectCount(GLenum mode, memptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride) #else void OSMesaDriver::nfglMultiDrawArraysIndirectCount(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride) #endif { D(bug("nfosmesa: glMultiDrawArraysIndirectCount(%s, " PRI_PTR ", %" PRI_IPTR ", %d, %d)", gl_enum_name(mode), AtariOffset(indirect), drawcount, maxdrawcount, stride)); FN_GLMULTIDRAWARRAYSINDIRECTCOUNT(mode, indirect, drawcount, maxdrawcount, stride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawArraysIndirectCountARB(GLenum mode, memptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride) #else void OSMesaDriver::nfglMultiDrawArraysIndirectCountARB(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride) #endif { D(bug("nfosmesa: glMultiDrawArraysIndirectCountARB(%s, " PRI_PTR ", %" PRI_IPTR ", %d, %d)", gl_enum_name(mode), AtariOffset(indirect), drawcount, maxdrawcount, stride)); FN_GLMULTIDRAWARRAYSINDIRECTCOUNTARB(mode, indirect, drawcount, maxdrawcount, stride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawElementArrayAPPLE(GLenum mode, memptr first, memptr count, GLsizei primcount) #else void OSMesaDriver::nfglMultiDrawElementArrayAPPLE(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount) #endif { D(bug("nfosmesa: glMultiDrawElementArrayAPPLE(%s, " PRI_PTR ", " PRI_PTR ", %d)", gl_enum_name(mode), AtariOffset(first), AtariOffset(count), primcount)); FN_GLMULTIDRAWELEMENTARRAYAPPLE(mode, first, count, primcount); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawElements(GLenum mode, memptr count, GLenum type, memptr indices, GLsizei drawcount) #else void OSMesaDriver::nfglMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount) #endif { D(bug("nfosmesa: glMultiDrawElements(%s, " PRI_PTR ", %s, " PRI_PTR ", %d)", gl_enum_name(mode), AtariOffset(count), gl_enum_name(type), AtariOffset(indices), drawcount)); FN_GLMULTIDRAWELEMENTS(mode, count, type, indices, drawcount); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawElementsBaseVertex(GLenum mode, memptr count, GLenum type, memptr indices, GLsizei drawcount, memptr basevertex) #else void OSMesaDriver::nfglMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex) #endif { D(bug("nfosmesa: glMultiDrawElementsBaseVertex(%s, " PRI_PTR ", %s, " PRI_PTR ", %d, " PRI_PTR ")", gl_enum_name(mode), AtariOffset(count), gl_enum_name(type), AtariOffset(indices), drawcount, AtariOffset(basevertex))); FN_GLMULTIDRAWELEMENTSBASEVERTEX(mode, count, type, indices, drawcount, basevertex); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawElementsEXT(GLenum mode, memptr count, GLenum type, memptr indices, GLsizei primcount) #else void OSMesaDriver::nfglMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount) #endif { D(bug("nfosmesa: glMultiDrawElementsEXT(%s, " PRI_PTR ", %s, " PRI_PTR ", %d)", gl_enum_name(mode), AtariOffset(count), gl_enum_name(type), AtariOffset(indices), primcount)); FN_GLMULTIDRAWELEMENTSEXT(mode, count, type, indices, primcount); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawElementsIndirect(GLenum mode, GLenum type, memptr indirect, GLsizei drawcount, GLsizei stride) #else void OSMesaDriver::nfglMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride) #endif { D(bug("nfosmesa: glMultiDrawElementsIndirect(%s, %s, " PRI_PTR ", %d, %d)", gl_enum_name(mode), gl_enum_name(type), AtariOffset(indirect), drawcount, stride)); FN_GLMULTIDRAWELEMENTSINDIRECT(mode, type, indirect, drawcount, stride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawElementsIndirectAMD(GLenum mode, GLenum type, memptr indirect, GLsizei primcount, GLsizei stride) #else void OSMesaDriver::nfglMultiDrawElementsIndirectAMD(GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride) #endif { D(bug("nfosmesa: glMultiDrawElementsIndirectAMD(%s, %s, " PRI_PTR ", %d, %d)", gl_enum_name(mode), gl_enum_name(type), AtariOffset(indirect), primcount, stride)); FN_GLMULTIDRAWELEMENTSINDIRECTAMD(mode, type, indirect, primcount, stride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawElementsIndirectBindlessCountNV(GLenum mode, GLenum type, memptr indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount) #else void OSMesaDriver::nfglMultiDrawElementsIndirectBindlessCountNV(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount) #endif { D(bug("nfosmesa: glMultiDrawElementsIndirectBindlessCountNV(%s, %s, " PRI_PTR ", %d, %d, %d, %d)", gl_enum_name(mode), gl_enum_name(type), AtariOffset(indirect), drawCount, maxDrawCount, stride, vertexBufferCount)); FN_GLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV(mode, type, indirect, drawCount, maxDrawCount, stride, vertexBufferCount); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawElementsIndirectBindlessNV(GLenum mode, GLenum type, memptr indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount) #else void OSMesaDriver::nfglMultiDrawElementsIndirectBindlessNV(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount) #endif { D(bug("nfosmesa: glMultiDrawElementsIndirectBindlessNV(%s, %s, " PRI_PTR ", %d, %d, %d)", gl_enum_name(mode), gl_enum_name(type), AtariOffset(indirect), drawCount, stride, vertexBufferCount)); FN_GLMULTIDRAWELEMENTSINDIRECTBINDLESSNV(mode, type, indirect, drawCount, stride, vertexBufferCount); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawElementsIndirectCount(GLenum mode, GLenum type, memptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride) #else void OSMesaDriver::nfglMultiDrawElementsIndirectCount(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride) #endif { D(bug("nfosmesa: glMultiDrawElementsIndirectCount(%s, %s, " PRI_PTR ", %" PRI_IPTR ", %d, %d)", gl_enum_name(mode), gl_enum_name(type), AtariOffset(indirect), drawcount, maxdrawcount, stride)); FN_GLMULTIDRAWELEMENTSINDIRECTCOUNT(mode, type, indirect, drawcount, maxdrawcount, stride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawElementsIndirectCountARB(GLenum mode, GLenum type, memptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride) #else void OSMesaDriver::nfglMultiDrawElementsIndirectCountARB(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride) #endif { D(bug("nfosmesa: glMultiDrawElementsIndirectCountARB(%s, %s, " PRI_PTR ", %" PRI_IPTR ", %d, %d)", gl_enum_name(mode), gl_enum_name(type), AtariOffset(indirect), drawcount, maxdrawcount, stride)); FN_GLMULTIDRAWELEMENTSINDIRECTCOUNTARB(mode, type, indirect, drawcount, maxdrawcount, stride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, memptr first, memptr count, GLsizei primcount) #else void OSMesaDriver::nfglMultiDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount) #endif { D(bug("nfosmesa: glMultiDrawRangeElementArrayAPPLE(%s, %u, %u, " PRI_PTR ", " PRI_PTR ", %d)", gl_enum_name(mode), start, end, AtariOffset(first), AtariOffset(count), primcount)); FN_GLMULTIDRAWRANGEELEMENTARRAYAPPLE(mode, start, end, first, count, primcount); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiModeDrawArraysIBM(memptr mode, memptr first, memptr count, GLsizei primcount, GLint modestride) #else void OSMesaDriver::nfglMultiModeDrawArraysIBM(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride) #endif { D(bug("nfosmesa: glMultiModeDrawArraysIBM(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ", %d, %d)", AtariOffset(mode), AtariOffset(first), AtariOffset(count), primcount, modestride)); FN_GLMULTIMODEDRAWARRAYSIBM(mode, first, count, primcount, modestride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiModeDrawElementsIBM(memptr mode, memptr count, GLenum type, memptr indices, GLsizei primcount, GLint modestride) #else void OSMesaDriver::nfglMultiModeDrawElementsIBM(const GLenum *mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount, GLint modestride) #endif { D(bug("nfosmesa: glMultiModeDrawElementsIBM(" PRI_PTR ", " PRI_PTR ", %s, " PRI_PTR ", %d, %d)", AtariOffset(mode), AtariOffset(count), gl_enum_name(type), AtariOffset(indices), primcount, modestride)); FN_GLMULTIMODEDRAWELEMENTSIBM(mode, count, type, indices, primcount, modestride); } void OSMesaDriver::nfglMultiTexBufferEXT(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer) { D(bug("nfosmesa: glMultiTexBufferEXT(%s, %s, %s, %u)", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(internalformat), buffer)); fn.glMultiTexBufferEXT(texunit, target, internalformat, buffer); } void OSMesaDriver::nfglMultiTexCoord1bOES(GLenum texture, GLbyte32 s) { D(bug("nfosmesa: glMultiTexCoord1bOES(%s, %d)", gl_enum_name(texture), s)); fn.glMultiTexCoord1bOES(texture, s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord1bvOES(GLenum texture, memptr coords) #else void OSMesaDriver::nfglMultiTexCoord1bvOES(GLenum texture, const GLbyte *coords) #endif { D(bug("nfosmesa: glMultiTexCoord1bvOES(%s, " PRI_PTR ")", gl_enum_name(texture), AtariOffset(coords))); FN_GLMULTITEXCOORD1BVOES(texture, coords); } void OSMesaDriver::nfglMultiTexCoord1d(GLenum target, GLdouble s) { D(bug("nfosmesa: glMultiTexCoord1d(%s, %f)", gl_enum_name(target), s)); fn.glMultiTexCoord1d(target, s); } void OSMesaDriver::nfglMultiTexCoord1dARB(GLenum target, GLdouble s) { D(bug("nfosmesa: glMultiTexCoord1dARB(%s, %f)", gl_enum_name(target), s)); fn.glMultiTexCoord1dARB(target, s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord1dv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord1dv(GLenum target, const GLdouble *v) #endif { D(bug("nfosmesa: glMultiTexCoord1dv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD1DV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord1dvARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord1dvARB(GLenum target, const GLdouble *v) #endif { D(bug("nfosmesa: glMultiTexCoord1dvARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_DOUBLE_CONV GLint const __v_size = 1; GLdouble __v_tmp[__v_size]; GLdouble *__v_ptmp = Atari2HostDoubleArray(__v_size, v, __v_tmp); fn.glMultiTexCoord1dvARB(target, __v_ptmp); #else fn.glMultiTexCoord1dvARB(target, HostAddr(v, const GLdouble *)); #endif } void OSMesaDriver::nfglMultiTexCoord1f(GLenum target, GLfloat s) { D(bug("nfosmesa: glMultiTexCoord1f(%s, %f)", gl_enum_name(target), s)); fn.glMultiTexCoord1f(target, s); } void OSMesaDriver::nfglMultiTexCoord1fARB(GLenum target, GLfloat s) { D(bug("nfosmesa: glMultiTexCoord1fARB(%s, %f)", gl_enum_name(target), s)); fn.glMultiTexCoord1fARB(target, s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord1fv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord1fv(GLenum target, const GLfloat *v) #endif { D(bug("nfosmesa: glMultiTexCoord1fv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD1FV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord1fvARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord1fvARB(GLenum target, const GLfloat *v) #endif { D(bug("nfosmesa: glMultiTexCoord1fvARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __v_size = 1; GLfloat __v_tmp[__v_size]; GLfloat *__v_ptmp = Atari2HostFloatArray(__v_size, v, __v_tmp); fn.glMultiTexCoord1fvARB(target, __v_ptmp); #else fn.glMultiTexCoord1fvARB(target, HostAddr(v, const GLfloat *)); #endif } void OSMesaDriver::nfglMultiTexCoord1hNV(GLenum target, GLhalfNV32 s) { D(bug("nfosmesa: glMultiTexCoord1hNV(%s, %u)", gl_enum_name(target), s)); fn.glMultiTexCoord1hNV(target, s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord1hvNV(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord1hvNV(GLenum target, const GLhalfNV *v) #endif { D(bug("nfosmesa: glMultiTexCoord1hvNV(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD1HVNV(target, v); } void OSMesaDriver::nfglMultiTexCoord1i(GLenum target, GLint s) { D(bug("nfosmesa: glMultiTexCoord1i(%s, %d)", gl_enum_name(target), s)); fn.glMultiTexCoord1i(target, s); } void OSMesaDriver::nfglMultiTexCoord1iARB(GLenum target, GLint s) { D(bug("nfosmesa: glMultiTexCoord1iARB(%s, %d)", gl_enum_name(target), s)); fn.glMultiTexCoord1iARB(target, s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord1iv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord1iv(GLenum target, const GLint *v) #endif { D(bug("nfosmesa: glMultiTexCoord1iv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD1IV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord1ivARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord1ivARB(GLenum target, const GLint *v) #endif { D(bug("nfosmesa: glMultiTexCoord1ivARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_INT_CONV GLint const __v_size = 1; GLint __v_tmp[__v_size]; GLint *__v_ptmp = Atari2HostIntArray(__v_size, v, __v_tmp); fn.glMultiTexCoord1ivARB(target, __v_ptmp); #else fn.glMultiTexCoord1ivARB(target, HostAddr(v, const GLint *)); #endif } void OSMesaDriver::nfglMultiTexCoord1s(GLenum target, GLshort32 s) { D(bug("nfosmesa: glMultiTexCoord1s(%s, %d)", gl_enum_name(target), s)); fn.glMultiTexCoord1s(target, s); } void OSMesaDriver::nfglMultiTexCoord1sARB(GLenum target, GLshort32 s) { D(bug("nfosmesa: glMultiTexCoord1sARB(%s, %d)", gl_enum_name(target), s)); fn.glMultiTexCoord1sARB(target, s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord1sv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord1sv(GLenum target, const GLshort *v) #endif { D(bug("nfosmesa: glMultiTexCoord1sv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD1SV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord1svARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord1svARB(GLenum target, const GLshort *v) #endif { D(bug("nfosmesa: glMultiTexCoord1svARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_INT_CONV GLint const __v_size = 1; GLshort __v_tmp[__v_size]; GLshort *__v_ptmp = Atari2HostShortArray(__v_size, v, __v_tmp); fn.glMultiTexCoord1svARB(target, __v_ptmp); #else fn.glMultiTexCoord1svARB(target, HostAddr(v, const GLshort *)); #endif } void OSMesaDriver::nfglMultiTexCoord1xOES(GLenum texture, GLfixed s) { D(bug("nfosmesa: glMultiTexCoord1xOES(%s, 0x%x)", gl_enum_name(texture), s)); fn.glMultiTexCoord1xOES(texture, s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord1xvOES(GLenum texture, memptr coords) #else void OSMesaDriver::nfglMultiTexCoord1xvOES(GLenum texture, const GLfixed *coords) #endif { D(bug("nfosmesa: glMultiTexCoord1xvOES(%s, " PRI_PTR ")", gl_enum_name(texture), AtariOffset(coords))); FN_GLMULTITEXCOORD1XVOES(texture, coords); } void OSMesaDriver::nfglMultiTexCoord2bOES(GLenum texture, GLbyte32 s, GLbyte32 t) { D(bug("nfosmesa: glMultiTexCoord2bOES(%s, %d, %d)", gl_enum_name(texture), s, t)); fn.glMultiTexCoord2bOES(texture, s, t); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord2bvOES(GLenum texture, memptr coords) #else void OSMesaDriver::nfglMultiTexCoord2bvOES(GLenum texture, const GLbyte *coords) #endif { D(bug("nfosmesa: glMultiTexCoord2bvOES(%s, " PRI_PTR ")", gl_enum_name(texture), AtariOffset(coords))); FN_GLMULTITEXCOORD2BVOES(texture, coords); } void OSMesaDriver::nfglMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) { D(bug("nfosmesa: glMultiTexCoord2d(%s, %f, %f)", gl_enum_name(target), s, t)); fn.glMultiTexCoord2d(target, s, t); } void OSMesaDriver::nfglMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t) { D(bug("nfosmesa: glMultiTexCoord2dARB(%s, %f, %f)", gl_enum_name(target), s, t)); fn.glMultiTexCoord2dARB(target, s, t); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord2dv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord2dv(GLenum target, const GLdouble *v) #endif { D(bug("nfosmesa: glMultiTexCoord2dv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD2DV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord2dvARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord2dvARB(GLenum target, const GLdouble *v) #endif { D(bug("nfosmesa: glMultiTexCoord2dvARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_DOUBLE_CONV GLint const __v_size = MAX(2, 0); GLdouble __v_tmp[__v_size]; GLdouble *__v_ptmp = Atari2HostDoubleArray(__v_size, v, __v_tmp); fn.glMultiTexCoord2dvARB(target, __v_ptmp); #else fn.glMultiTexCoord2dvARB(target, HostAddr(v, const GLdouble *)); #endif } void OSMesaDriver::nfglMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) { D(bug("nfosmesa: glMultiTexCoord2f(%s, %f, %f)", gl_enum_name(target), s, t)); fn.glMultiTexCoord2f(target, s, t); } void OSMesaDriver::nfglMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t) { D(bug("nfosmesa: glMultiTexCoord2fARB(%s, %f, %f)", gl_enum_name(target), s, t)); fn.glMultiTexCoord2fARB(target, s, t); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord2fv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord2fv(GLenum target, const GLfloat *v) #endif { D(bug("nfosmesa: glMultiTexCoord2fv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD2FV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord2fvARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord2fvARB(GLenum target, const GLfloat *v) #endif { D(bug("nfosmesa: glMultiTexCoord2fvARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __v_size = MAX(2, 0); GLfloat __v_tmp[__v_size]; GLfloat *__v_ptmp = Atari2HostFloatArray(__v_size, v, __v_tmp); fn.glMultiTexCoord2fvARB(target, __v_ptmp); #else fn.glMultiTexCoord2fvARB(target, HostAddr(v, const GLfloat *)); #endif } void OSMesaDriver::nfglMultiTexCoord2hNV(GLenum target, GLhalfNV32 s, GLhalfNV32 t) { D(bug("nfosmesa: glMultiTexCoord2hNV(%s, %u, %u)", gl_enum_name(target), s, t)); fn.glMultiTexCoord2hNV(target, s, t); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord2hvNV(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord2hvNV(GLenum target, const GLhalfNV *v) #endif { D(bug("nfosmesa: glMultiTexCoord2hvNV(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD2HVNV(target, v); } void OSMesaDriver::nfglMultiTexCoord2i(GLenum target, GLint s, GLint t) { D(bug("nfosmesa: glMultiTexCoord2i(%s, %d, %d)", gl_enum_name(target), s, t)); fn.glMultiTexCoord2i(target, s, t); } void OSMesaDriver::nfglMultiTexCoord2iARB(GLenum target, GLint s, GLint t) { D(bug("nfosmesa: glMultiTexCoord2iARB(%s, %d, %d)", gl_enum_name(target), s, t)); fn.glMultiTexCoord2iARB(target, s, t); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord2iv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord2iv(GLenum target, const GLint *v) #endif { D(bug("nfosmesa: glMultiTexCoord2iv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD2IV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord2ivARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord2ivARB(GLenum target, const GLint *v) #endif { D(bug("nfosmesa: glMultiTexCoord2ivARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_INT_CONV GLint const __v_size = MAX(2, 0); GLint __v_tmp[__v_size]; GLint *__v_ptmp = Atari2HostIntArray(__v_size, v, __v_tmp); fn.glMultiTexCoord2ivARB(target, __v_ptmp); #else fn.glMultiTexCoord2ivARB(target, HostAddr(v, const GLint *)); #endif } void OSMesaDriver::nfglMultiTexCoord2s(GLenum target, GLshort32 s, GLshort32 t) { D(bug("nfosmesa: glMultiTexCoord2s(%s, %d, %d)", gl_enum_name(target), s, t)); fn.glMultiTexCoord2s(target, s, t); } void OSMesaDriver::nfglMultiTexCoord2sARB(GLenum target, GLshort32 s, GLshort32 t) { D(bug("nfosmesa: glMultiTexCoord2sARB(%s, %d, %d)", gl_enum_name(target), s, t)); fn.glMultiTexCoord2sARB(target, s, t); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord2sv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord2sv(GLenum target, const GLshort *v) #endif { D(bug("nfosmesa: glMultiTexCoord2sv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD2SV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord2svARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord2svARB(GLenum target, const GLshort *v) #endif { D(bug("nfosmesa: glMultiTexCoord2svARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_INT_CONV GLint const __v_size = MAX(2, 0); GLshort __v_tmp[__v_size]; GLshort *__v_ptmp = Atari2HostShortArray(__v_size, v, __v_tmp); fn.glMultiTexCoord2svARB(target, __v_ptmp); #else fn.glMultiTexCoord2svARB(target, HostAddr(v, const GLshort *)); #endif } void OSMesaDriver::nfglMultiTexCoord2xOES(GLenum texture, GLfixed s, GLfixed t) { D(bug("nfosmesa: glMultiTexCoord2xOES(%s, 0x%x, 0x%x)", gl_enum_name(texture), s, t)); fn.glMultiTexCoord2xOES(texture, s, t); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord2xvOES(GLenum texture, memptr coords) #else void OSMesaDriver::nfglMultiTexCoord2xvOES(GLenum texture, const GLfixed *coords) #endif { D(bug("nfosmesa: glMultiTexCoord2xvOES(%s, " PRI_PTR ")", gl_enum_name(texture), AtariOffset(coords))); FN_GLMULTITEXCOORD2XVOES(texture, coords); } void OSMesaDriver::nfglMultiTexCoord3bOES(GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r) { D(bug("nfosmesa: glMultiTexCoord3bOES(%s, %d, %d, %d)", gl_enum_name(texture), s, t, r)); fn.glMultiTexCoord3bOES(texture, s, t, r); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord3bvOES(GLenum texture, memptr coords) #else void OSMesaDriver::nfglMultiTexCoord3bvOES(GLenum texture, const GLbyte *coords) #endif { D(bug("nfosmesa: glMultiTexCoord3bvOES(%s, " PRI_PTR ")", gl_enum_name(texture), AtariOffset(coords))); FN_GLMULTITEXCOORD3BVOES(texture, coords); } void OSMesaDriver::nfglMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) { D(bug("nfosmesa: glMultiTexCoord3d(%s, %f, %f, %f)", gl_enum_name(target), s, t, r)); fn.glMultiTexCoord3d(target, s, t, r); } void OSMesaDriver::nfglMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r) { D(bug("nfosmesa: glMultiTexCoord3dARB(%s, %f, %f, %f)", gl_enum_name(target), s, t, r)); fn.glMultiTexCoord3dARB(target, s, t, r); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord3dv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord3dv(GLenum target, const GLdouble *v) #endif { D(bug("nfosmesa: glMultiTexCoord3dv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD3DV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord3dvARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord3dvARB(GLenum target, const GLdouble *v) #endif { D(bug("nfosmesa: glMultiTexCoord3dvARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_DOUBLE_CONV GLint const __v_size = MAX(3, 0); GLdouble __v_tmp[__v_size]; GLdouble *__v_ptmp = Atari2HostDoubleArray(__v_size, v, __v_tmp); fn.glMultiTexCoord3dvARB(target, __v_ptmp); #else fn.glMultiTexCoord3dvARB(target, HostAddr(v, const GLdouble *)); #endif } void OSMesaDriver::nfglMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) { D(bug("nfosmesa: glMultiTexCoord3f(%s, %f, %f, %f)", gl_enum_name(target), s, t, r)); fn.glMultiTexCoord3f(target, s, t, r); } void OSMesaDriver::nfglMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r) { D(bug("nfosmesa: glMultiTexCoord3fARB(%s, %f, %f, %f)", gl_enum_name(target), s, t, r)); fn.glMultiTexCoord3fARB(target, s, t, r); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord3fv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord3fv(GLenum target, const GLfloat *v) #endif { D(bug("nfosmesa: glMultiTexCoord3fv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD3FV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord3fvARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord3fvARB(GLenum target, const GLfloat *v) #endif { D(bug("nfosmesa: glMultiTexCoord3fvARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __v_size = MAX(3, 0); GLfloat __v_tmp[__v_size]; GLfloat *__v_ptmp = Atari2HostFloatArray(__v_size, v, __v_tmp); fn.glMultiTexCoord3fvARB(target, __v_ptmp); #else fn.glMultiTexCoord3fvARB(target, HostAddr(v, const GLfloat *)); #endif } void OSMesaDriver::nfglMultiTexCoord3hNV(GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r) { D(bug("nfosmesa: glMultiTexCoord3hNV(%s, %u, %u, %u)", gl_enum_name(target), s, t, r)); fn.glMultiTexCoord3hNV(target, s, t, r); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord3hvNV(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord3hvNV(GLenum target, const GLhalfNV *v) #endif { D(bug("nfosmesa: glMultiTexCoord3hvNV(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD3HVNV(target, v); } void OSMesaDriver::nfglMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) { D(bug("nfosmesa: glMultiTexCoord3i(%s, %d, %d, %d)", gl_enum_name(target), s, t, r)); fn.glMultiTexCoord3i(target, s, t, r); } void OSMesaDriver::nfglMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r) { D(bug("nfosmesa: glMultiTexCoord3iARB(%s, %d, %d, %d)", gl_enum_name(target), s, t, r)); fn.glMultiTexCoord3iARB(target, s, t, r); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord3iv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord3iv(GLenum target, const GLint *v) #endif { D(bug("nfosmesa: glMultiTexCoord3iv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD3IV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord3ivARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord3ivARB(GLenum target, const GLint *v) #endif { D(bug("nfosmesa: glMultiTexCoord3ivARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_INT_CONV GLint const __v_size = MAX(3, 0); GLint __v_tmp[__v_size]; GLint *__v_ptmp = Atari2HostIntArray(__v_size, v, __v_tmp); fn.glMultiTexCoord3ivARB(target, __v_ptmp); #else fn.glMultiTexCoord3ivARB(target, HostAddr(v, const GLint *)); #endif } void OSMesaDriver::nfglMultiTexCoord3s(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r) { D(bug("nfosmesa: glMultiTexCoord3s(%s, %d, %d, %d)", gl_enum_name(target), s, t, r)); fn.glMultiTexCoord3s(target, s, t, r); } void OSMesaDriver::nfglMultiTexCoord3sARB(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r) { D(bug("nfosmesa: glMultiTexCoord3sARB(%s, %d, %d, %d)", gl_enum_name(target), s, t, r)); fn.glMultiTexCoord3sARB(target, s, t, r); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord3sv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord3sv(GLenum target, const GLshort *v) #endif { D(bug("nfosmesa: glMultiTexCoord3sv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD3SV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord3svARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord3svARB(GLenum target, const GLshort *v) #endif { D(bug("nfosmesa: glMultiTexCoord3svARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_INT_CONV GLint const __v_size = MAX(3, 0); GLshort __v_tmp[__v_size]; GLshort *__v_ptmp = Atari2HostShortArray(__v_size, v, __v_tmp); fn.glMultiTexCoord3svARB(target, __v_ptmp); #else fn.glMultiTexCoord3svARB(target, HostAddr(v, const GLshort *)); #endif } void OSMesaDriver::nfglMultiTexCoord3xOES(GLenum texture, GLfixed s, GLfixed t, GLfixed r) { D(bug("nfosmesa: glMultiTexCoord3xOES(%s, 0x%x, 0x%x, 0x%x)", gl_enum_name(texture), s, t, r)); fn.glMultiTexCoord3xOES(texture, s, t, r); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord3xvOES(GLenum texture, memptr coords) #else void OSMesaDriver::nfglMultiTexCoord3xvOES(GLenum texture, const GLfixed *coords) #endif { D(bug("nfosmesa: glMultiTexCoord3xvOES(%s, " PRI_PTR ")", gl_enum_name(texture), AtariOffset(coords))); FN_GLMULTITEXCOORD3XVOES(texture, coords); } void OSMesaDriver::nfglMultiTexCoord4bOES(GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q) { D(bug("nfosmesa: glMultiTexCoord4bOES(%s, %d, %d, %d, %d)", gl_enum_name(texture), s, t, r, q)); fn.glMultiTexCoord4bOES(texture, s, t, r, q); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord4bvOES(GLenum texture, memptr coords) #else void OSMesaDriver::nfglMultiTexCoord4bvOES(GLenum texture, const GLbyte *coords) #endif { D(bug("nfosmesa: glMultiTexCoord4bvOES(%s, " PRI_PTR ")", gl_enum_name(texture), AtariOffset(coords))); FN_GLMULTITEXCOORD4BVOES(texture, coords); } void OSMesaDriver::nfglMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) { D(bug("nfosmesa: glMultiTexCoord4d(%s, %f, %f, %f, %f)", gl_enum_name(target), s, t, r, q)); fn.glMultiTexCoord4d(target, s, t, r, q); } void OSMesaDriver::nfglMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) { D(bug("nfosmesa: glMultiTexCoord4dARB(%s, %f, %f, %f, %f)", gl_enum_name(target), s, t, r, q)); fn.glMultiTexCoord4dARB(target, s, t, r, q); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord4dv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord4dv(GLenum target, const GLdouble *v) #endif { D(bug("nfosmesa: glMultiTexCoord4dv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD4DV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord4dvARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord4dvARB(GLenum target, const GLdouble *v) #endif { D(bug("nfosmesa: glMultiTexCoord4dvARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_DOUBLE_CONV GLint const __v_size = MAX(4, 0); GLdouble __v_tmp[__v_size]; GLdouble *__v_ptmp = Atari2HostDoubleArray(__v_size, v, __v_tmp); fn.glMultiTexCoord4dvARB(target, __v_ptmp); #else fn.glMultiTexCoord4dvARB(target, HostAddr(v, const GLdouble *)); #endif } void OSMesaDriver::nfglMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) { D(bug("nfosmesa: glMultiTexCoord4f(%s, %f, %f, %f, %f)", gl_enum_name(target), s, t, r, q)); fn.glMultiTexCoord4f(target, s, t, r, q); } void OSMesaDriver::nfglMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) { D(bug("nfosmesa: glMultiTexCoord4fARB(%s, %f, %f, %f, %f)", gl_enum_name(target), s, t, r, q)); fn.glMultiTexCoord4fARB(target, s, t, r, q); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord4fv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord4fv(GLenum target, const GLfloat *v) #endif { D(bug("nfosmesa: glMultiTexCoord4fv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD4FV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord4fvARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord4fvARB(GLenum target, const GLfloat *v) #endif { D(bug("nfosmesa: glMultiTexCoord4fvARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __v_size = MAX(4, 0); GLfloat __v_tmp[__v_size]; GLfloat *__v_ptmp = Atari2HostFloatArray(__v_size, v, __v_tmp); fn.glMultiTexCoord4fvARB(target, __v_ptmp); #else fn.glMultiTexCoord4fvARB(target, HostAddr(v, const GLfloat *)); #endif } void OSMesaDriver::nfglMultiTexCoord4hNV(GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q) { D(bug("nfosmesa: glMultiTexCoord4hNV(%s, %u, %u, %u, %u)", gl_enum_name(target), s, t, r, q)); fn.glMultiTexCoord4hNV(target, s, t, r, q); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord4hvNV(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord4hvNV(GLenum target, const GLhalfNV *v) #endif { D(bug("nfosmesa: glMultiTexCoord4hvNV(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD4HVNV(target, v); } void OSMesaDriver::nfglMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) { D(bug("nfosmesa: glMultiTexCoord4i(%s, %d, %d, %d, %d)", gl_enum_name(target), s, t, r, q)); fn.glMultiTexCoord4i(target, s, t, r, q); } void OSMesaDriver::nfglMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q) { D(bug("nfosmesa: glMultiTexCoord4iARB(%s, %d, %d, %d, %d)", gl_enum_name(target), s, t, r, q)); fn.glMultiTexCoord4iARB(target, s, t, r, q); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord4iv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord4iv(GLenum target, const GLint *v) #endif { D(bug("nfosmesa: glMultiTexCoord4iv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD4IV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord4ivARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord4ivARB(GLenum target, const GLint *v) #endif { D(bug("nfosmesa: glMultiTexCoord4ivARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_INT_CONV GLint const __v_size = MAX(4, 0); GLint __v_tmp[__v_size]; GLint *__v_ptmp = Atari2HostIntArray(__v_size, v, __v_tmp); fn.glMultiTexCoord4ivARB(target, __v_ptmp); #else fn.glMultiTexCoord4ivARB(target, HostAddr(v, const GLint *)); #endif } void OSMesaDriver::nfglMultiTexCoord4s(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q) { D(bug("nfosmesa: glMultiTexCoord4s(%s, %d, %d, %d, %d)", gl_enum_name(target), s, t, r, q)); fn.glMultiTexCoord4s(target, s, t, r, q); } void OSMesaDriver::nfglMultiTexCoord4sARB(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q) { D(bug("nfosmesa: glMultiTexCoord4sARB(%s, %d, %d, %d, %d)", gl_enum_name(target), s, t, r, q)); fn.glMultiTexCoord4sARB(target, s, t, r, q); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord4sv(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord4sv(GLenum target, const GLshort *v) #endif { D(bug("nfosmesa: glMultiTexCoord4sv(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); FN_GLMULTITEXCOORD4SV(target, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord4svARB(GLenum target, memptr v) #else void OSMesaDriver::nfglMultiTexCoord4svARB(GLenum target, const GLshort *v) #endif { D(bug("nfosmesa: glMultiTexCoord4svARB(%s, " PRI_PTR ")", gl_enum_name(target), AtariOffset(v))); #if NFOSMESA_NEED_INT_CONV GLint const __v_size = MAX(4, 0); GLshort __v_tmp[__v_size]; GLshort *__v_ptmp = Atari2HostShortArray(__v_size, v, __v_tmp); fn.glMultiTexCoord4svARB(target, __v_ptmp); #else fn.glMultiTexCoord4svARB(target, HostAddr(v, const GLshort *)); #endif } void OSMesaDriver::nfglMultiTexCoord4xOES(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q) { D(bug("nfosmesa: glMultiTexCoord4xOES(%s, 0x%x, 0x%x, 0x%x, 0x%x)", gl_enum_name(texture), s, t, r, q)); fn.glMultiTexCoord4xOES(texture, s, t, r, q); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoord4xvOES(GLenum texture, memptr coords) #else void OSMesaDriver::nfglMultiTexCoord4xvOES(GLenum texture, const GLfixed *coords) #endif { D(bug("nfosmesa: glMultiTexCoord4xvOES(%s, " PRI_PTR ")", gl_enum_name(texture), AtariOffset(coords))); FN_GLMULTITEXCOORD4XVOES(texture, coords); } void OSMesaDriver::nfglMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) { D(bug("nfosmesa: glMultiTexCoordP1ui(%s, %s, %u)", gl_enum_name(texture), gl_enum_name(type), coords)); fn.glMultiTexCoordP1ui(texture, type, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoordP1uiv(GLenum texture, GLenum type, memptr coords) #else void OSMesaDriver::nfglMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) #endif { D(bug("nfosmesa: glMultiTexCoordP1uiv(%s, %s, " PRI_PTR ")", gl_enum_name(texture), gl_enum_name(type), AtariOffset(coords))); FN_GLMULTITEXCOORDP1UIV(texture, type, coords); } void OSMesaDriver::nfglMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) { D(bug("nfosmesa: glMultiTexCoordP2ui(%s, %s, %u)", gl_enum_name(texture), gl_enum_name(type), coords)); fn.glMultiTexCoordP2ui(texture, type, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoordP2uiv(GLenum texture, GLenum type, memptr coords) #else void OSMesaDriver::nfglMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) #endif { D(bug("nfosmesa: glMultiTexCoordP2uiv(%s, %s, " PRI_PTR ")", gl_enum_name(texture), gl_enum_name(type), AtariOffset(coords))); FN_GLMULTITEXCOORDP2UIV(texture, type, coords); } void OSMesaDriver::nfglMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) { D(bug("nfosmesa: glMultiTexCoordP3ui(%s, %s, %u)", gl_enum_name(texture), gl_enum_name(type), coords)); fn.glMultiTexCoordP3ui(texture, type, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoordP3uiv(GLenum texture, GLenum type, memptr coords) #else void OSMesaDriver::nfglMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) #endif { D(bug("nfosmesa: glMultiTexCoordP3uiv(%s, %s, " PRI_PTR ")", gl_enum_name(texture), gl_enum_name(type), AtariOffset(coords))); FN_GLMULTITEXCOORDP3UIV(texture, type, coords); } void OSMesaDriver::nfglMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) { D(bug("nfosmesa: glMultiTexCoordP4ui(%s, %s, %u)", gl_enum_name(texture), gl_enum_name(type), coords)); fn.glMultiTexCoordP4ui(texture, type, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoordP4uiv(GLenum texture, GLenum type, memptr coords) #else void OSMesaDriver::nfglMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) #endif { D(bug("nfosmesa: glMultiTexCoordP4uiv(%s, %s, " PRI_PTR ")", gl_enum_name(texture), gl_enum_name(type), AtariOffset(coords))); FN_GLMULTITEXCOORDP4UIV(texture, type, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglMultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glMultiTexCoordPointerEXT(%s, %d, %s, %d, " PRI_PTR ")", gl_enum_name(texunit), size, gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLMULTITEXCOORDPOINTEREXT(texunit, size, type, stride, pointer); } void OSMesaDriver::nfglMultiTexEnvfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param) { D(bug("nfosmesa: glMultiTexEnvfEXT(%s, %s, %s, %f)", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), param)); fn.glMultiTexEnvfEXT(texunit, target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glMultiTexEnvfvEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLMULTITEXENVFVEXT(texunit, target, pname, params); } void OSMesaDriver::nfglMultiTexEnviEXT(GLenum texunit, GLenum target, GLenum pname, GLint param) { D(bug("nfosmesa: glMultiTexEnviEXT(%s, %s, %s, %d)", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), param)); fn.glMultiTexEnviEXT(texunit, target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glMultiTexEnvivEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLMULTITEXENVIVEXT(texunit, target, pname, params); } void OSMesaDriver::nfglMultiTexGendEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble param) { D(bug("nfosmesa: glMultiTexGendEXT(%s, %s, %s, %f)", gl_enum_name(texunit), gl_enum_name(coord), gl_enum_name(pname), param)); fn.glMultiTexGendEXT(texunit, coord, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, memptr params) #else void OSMesaDriver::nfglMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params) #endif { D(bug("nfosmesa: glMultiTexGendvEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(coord), gl_enum_name(pname), AtariOffset(params))); FN_GLMULTITEXGENDVEXT(texunit, coord, pname, params); } void OSMesaDriver::nfglMultiTexGenfEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat param) { D(bug("nfosmesa: glMultiTexGenfEXT(%s, %s, %s, %f)", gl_enum_name(texunit), gl_enum_name(coord), gl_enum_name(pname), param)); fn.glMultiTexGenfEXT(texunit, coord, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, memptr params) #else void OSMesaDriver::nfglMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glMultiTexGenfvEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(coord), gl_enum_name(pname), AtariOffset(params))); FN_GLMULTITEXGENFVEXT(texunit, coord, pname, params); } void OSMesaDriver::nfglMultiTexGeniEXT(GLenum texunit, GLenum coord, GLenum pname, GLint param) { D(bug("nfosmesa: glMultiTexGeniEXT(%s, %s, %s, %d)", gl_enum_name(texunit), gl_enum_name(coord), gl_enum_name(pname), param)); fn.glMultiTexGeniEXT(texunit, coord, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, memptr params) #else void OSMesaDriver::nfglMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glMultiTexGenivEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(coord), gl_enum_name(pname), AtariOffset(params))); FN_GLMULTITEXGENIVEXT(texunit, coord, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glMultiTexImage1DEXT(%s, %s, %d, %s, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, gl_enum_name(internalformat), width, border, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLMULTITEXIMAGE1DEXT(texunit, target, level, internalformat, width, border, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glMultiTexImage2DEXT(%s, %s, %d, %s, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, gl_enum_name(internalformat), width, height, border, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLMULTITEXIMAGE2DEXT(texunit, target, level, internalformat, width, height, border, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glMultiTexImage3DEXT(%s, %s, %d, %s, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, gl_enum_name(internalformat), width, height, depth, border, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLMULTITEXIMAGE3DEXT(texunit, target, level, internalformat, width, height, depth, border, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glMultiTexParameterIivEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLMULTITEXPARAMETERIIVEXT(texunit, target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, const GLuint *params) #endif { D(bug("nfosmesa: glMultiTexParameterIuivEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLMULTITEXPARAMETERIUIVEXT(texunit, target, pname, params); } void OSMesaDriver::nfglMultiTexParameterfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param) { D(bug("nfosmesa: glMultiTexParameterfEXT(%s, %s, %s, %f)", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), param)); fn.glMultiTexParameterfEXT(texunit, target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glMultiTexParameterfvEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLMULTITEXPARAMETERFVEXT(texunit, target, pname, params); } void OSMesaDriver::nfglMultiTexParameteriEXT(GLenum texunit, GLenum target, GLenum pname, GLint param) { D(bug("nfosmesa: glMultiTexParameteriEXT(%s, %s, %s, %d)", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), param)); fn.glMultiTexParameteriEXT(texunit, target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glMultiTexParameterivEXT(%s, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLMULTITEXPARAMETERIVEXT(texunit, target, pname, params); } void OSMesaDriver::nfglMultiTexRenderbufferEXT(GLenum texunit, GLenum target, GLuint renderbuffer) { D(bug("nfosmesa: glMultiTexRenderbufferEXT(%s, %s, %u)", gl_enum_name(texunit), gl_enum_name(target), renderbuffer)); fn.glMultiTexRenderbufferEXT(texunit, target, renderbuffer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glMultiTexSubImage1DEXT(%s, %s, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, xoffset, width, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLMULTITEXSUBIMAGE1DEXT(texunit, target, level, xoffset, width, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glMultiTexSubImage2DEXT(%s, %s, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, xoffset, yoffset, width, height, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLMULTITEXSUBIMAGE2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glMultiTexSubImage3DEXT(%s, %s, %d, %d, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(texunit), gl_enum_name(target), level, xoffset, yoffset, zoffset, width, height, depth, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLMULTITEXSUBIMAGE3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); } void OSMesaDriver::nfglMulticastBarrierNV(void) { D(bug("nfosmesa: glMulticastBarrierNV()")); fn.glMulticastBarrierNV(); } void OSMesaDriver::nfglMulticastBlitFramebufferNV(GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { D(bug("nfosmesa: glMulticastBlitFramebufferNV(%u, %u, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x, %s)", srcGpu, dstGpu, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, gl_enum_name(filter))); fn.glMulticastBlitFramebufferNV(srcGpu, dstGpu, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMulticastBufferSubDataNV(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, memptr data) #else void OSMesaDriver::nfglMulticastBufferSubDataNV(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data) #endif { D(bug("nfosmesa: glMulticastBufferSubDataNV(0x%x, %u, %" PRI_IPTR ", %" PRI_IPTR ", " PRI_PTR ")", gpuMask, buffer, offset, size, AtariOffset(data))); #if NFOSMESA_NEED_BYTE_CONV GLint const __data_size = MAX(size, 0); GLbyte __data_tmp[__data_size]; GLbyte *__data_ptmp = Atari2HostByteArray(__data_size, data, __data_tmp); fn.glMulticastBufferSubDataNV(gpuMask, buffer, offset, size, __data_ptmp); #else fn.glMulticastBufferSubDataNV(gpuMask, buffer, offset, size, HostAddr(data, const void *)); #endif } void OSMesaDriver::nfglMulticastCopyBufferSubDataNV(GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) { D(bug("nfosmesa: glMulticastCopyBufferSubDataNV(%u, 0x%x, %u, %u, %" PRI_IPTR ", %" PRI_IPTR ", %" PRI_IPTR ")", readGpu, writeGpuMask, readBuffer, writeBuffer, readOffset, writeOffset, size)); fn.glMulticastCopyBufferSubDataNV(readGpu, writeGpuMask, readBuffer, writeBuffer, readOffset, writeOffset, size); } void OSMesaDriver::nfglMulticastCopyImageSubDataNV(GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) { D(bug("nfosmesa: glMulticastCopyImageSubDataNV(%u, 0x%x, %u, %s, %d, %d, %d, %d, %u, %s, %d, %d, %d, %d, %d, %d, %d)", srcGpu, dstGpuMask, srcName, gl_enum_name(srcTarget), srcLevel, srcX, srcY, srcZ, dstName, gl_enum_name(dstTarget), dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth)); fn.glMulticastCopyImageSubDataNV(srcGpu, dstGpuMask, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMulticastFramebufferSampleLocationsfvNV(GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, memptr v) #else void OSMesaDriver::nfglMulticastFramebufferSampleLocationsfvNV(GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v) #endif { D(bug("nfosmesa: glMulticastFramebufferSampleLocationsfvNV(%u, %u, %u, %d, " PRI_PTR ")", gpu, framebuffer, start, count, AtariOffset(v))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __v_size = MAX(count, 0); GLfloat __v_tmp[__v_size]; GLfloat *__v_ptmp = Atari2HostFloatArray(__v_size, v, __v_tmp); fn.glMulticastFramebufferSampleLocationsfvNV(gpu, framebuffer, start, count, __v_ptmp); #else fn.glMulticastFramebufferSampleLocationsfvNV(gpu, framebuffer, start, count, HostAddr(v, const GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMulticastGetQueryObjecti64vNV(GLuint gpu, GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglMulticastGetQueryObjecti64vNV(GLuint gpu, GLuint id, GLenum pname, GLint64 *params) #endif { D(bug("nfosmesa: glMulticastGetQueryObjecti64vNV(%u, %u, %s, " PRI_PTR ")", gpu, id, gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = nfglGetNumParams(pname); GLint64 __params_tmp[__params_size]; fn.glMulticastGetQueryObjecti64vNV(gpu, id, pname, __params_tmp); Host2AtariInt64Array(__params_size, __params_tmp, params); #else fn.glMulticastGetQueryObjecti64vNV(gpu, id, pname, HostAddr(params, GLint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMulticastGetQueryObjectivNV(GLuint gpu, GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglMulticastGetQueryObjectivNV(GLuint gpu, GLuint id, GLenum pname, GLint *params) #endif { D(bug("nfosmesa: glMulticastGetQueryObjectivNV(%u, %u, %s, " PRI_PTR ")", gpu, id, gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = nfglGetNumParams(pname); GLint __params_tmp[__params_size]; fn.glMulticastGetQueryObjectivNV(gpu, id, pname, __params_tmp); Host2AtariIntArray(__params_size, __params_tmp, params); #else fn.glMulticastGetQueryObjectivNV(gpu, id, pname, HostAddr(params, GLint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMulticastGetQueryObjectui64vNV(GLuint gpu, GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglMulticastGetQueryObjectui64vNV(GLuint gpu, GLuint id, GLenum pname, GLuint64 *params) #endif { D(bug("nfosmesa: glMulticastGetQueryObjectui64vNV(%u, %u, %s, " PRI_PTR ")", gpu, id, gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = nfglGetNumParams(pname); GLuint64 __params_tmp[__params_size]; fn.glMulticastGetQueryObjectui64vNV(gpu, id, pname, __params_tmp); Host2AtariInt64Array(__params_size, __params_tmp, params); #else fn.glMulticastGetQueryObjectui64vNV(gpu, id, pname, HostAddr(params, GLuint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglMulticastGetQueryObjectuivNV(GLuint gpu, GLuint id, GLenum pname, memptr params) #else void OSMesaDriver::nfglMulticastGetQueryObjectuivNV(GLuint gpu, GLuint id, GLenum pname, GLuint *params) #endif { D(bug("nfosmesa: glMulticastGetQueryObjectuivNV(%u, %u, %s, " PRI_PTR ")", gpu, id, gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = nfglGetNumParams(pname); GLuint __params_tmp[__params_size]; fn.glMulticastGetQueryObjectuivNV(gpu, id, pname, __params_tmp); Host2AtariIntArray(__params_size, __params_tmp, params); #else fn.glMulticastGetQueryObjectuivNV(gpu, id, pname, HostAddr(params, GLuint *)); #endif } void OSMesaDriver::nfglMulticastWaitSyncNV(GLuint signalGpu, GLbitfield waitGpuMask) { D(bug("nfosmesa: glMulticastWaitSyncNV(%u, 0x%x)", signalGpu, waitGpuMask)); fn.glMulticastWaitSyncNV(signalGpu, waitGpuMask); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedBufferData(GLuint buffer, GLsizeiptr size, memptr data, GLenum usage) #else void OSMesaDriver::nfglNamedBufferData(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage) #endif { D(bug("nfosmesa: glNamedBufferData(%u, %" PRI_IPTR ", " PRI_PTR ", %s)", buffer, size, AtariOffset(data), gl_enum_name(usage))); FN_GLNAMEDBUFFERDATA(buffer, size, data, usage); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, memptr data, GLenum usage) #else void OSMesaDriver::nfglNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage) #endif { D(bug("nfosmesa: glNamedBufferDataEXT(%u, %" PRI_IPTR ", " PRI_PTR ", %s)", buffer, size, AtariOffset(data), gl_enum_name(usage))); FN_GLNAMEDBUFFERDATAEXT(buffer, size, data, usage); } void OSMesaDriver::nfglNamedBufferPageCommitmentARB(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit) { D(bug("nfosmesa: glNamedBufferPageCommitmentARB(%u, %" PRI_IPTR ", %" PRI_IPTR ", %d)", buffer, offset, size, commit)); fn.glNamedBufferPageCommitmentARB(buffer, offset, size, commit); } void OSMesaDriver::nfglNamedBufferPageCommitmentEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit) { D(bug("nfosmesa: glNamedBufferPageCommitmentEXT(%u, %" PRI_IPTR ", %" PRI_IPTR ", %d)", buffer, offset, size, commit)); fn.glNamedBufferPageCommitmentEXT(buffer, offset, size, commit); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedBufferStorage(GLuint buffer, GLsizeiptr size, memptr data, GLbitfield flags) #else void OSMesaDriver::nfglNamedBufferStorage(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags) #endif { D(bug("nfosmesa: glNamedBufferStorage(%u, %" PRI_IPTR ", " PRI_PTR ", 0x%x)", buffer, size, AtariOffset(data), flags)); FN_GLNAMEDBUFFERSTORAGE(buffer, size, data, flags); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedBufferStorageEXT(GLuint buffer, GLsizeiptr size, memptr data, GLbitfield flags) #else void OSMesaDriver::nfglNamedBufferStorageEXT(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags) #endif { D(bug("nfosmesa: glNamedBufferStorageEXT(%u, %" PRI_IPTR ", " PRI_PTR ", 0x%x)", buffer, size, AtariOffset(data), flags)); FN_GLNAMEDBUFFERSTORAGEEXT(buffer, size, data, flags); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedBufferStorageExternalEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, memptr clientBuffer, GLbitfield flags) #else void OSMesaDriver::nfglNamedBufferStorageExternalEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags) #endif { D(bug("nfosmesa: glNamedBufferStorageExternalEXT(%u, %" PRI_IPTR ", %" PRI_IPTR ", " PRI_PTR ", 0x%x)", buffer, offset, size, AtariOffset(clientBuffer), flags)); FN_GLNAMEDBUFFERSTORAGEEXTERNALEXT(buffer, offset, size, clientBuffer, flags); } void OSMesaDriver::nfglNamedBufferStorageMemEXT(GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset) { D(bug("nfosmesa: glNamedBufferStorageMemEXT(%u, %" PRI_IPTR ", %u, %" PRIu64 ")", buffer, size, memory, offset)); fn.glNamedBufferStorageMemEXT(buffer, size, memory, offset); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, memptr data) #else void OSMesaDriver::nfglNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data) #endif { D(bug("nfosmesa: glNamedBufferSubData(%u, %" PRI_IPTR ", %" PRI_IPTR ", " PRI_PTR ")", buffer, offset, size, AtariOffset(data))); FN_GLNAMEDBUFFERSUBDATA(buffer, offset, size, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, memptr data) #else void OSMesaDriver::nfglNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data) #endif { D(bug("nfosmesa: glNamedBufferSubDataEXT(%u, %" PRI_IPTR ", %" PRI_IPTR ", " PRI_PTR ")", buffer, offset, size, AtariOffset(data))); FN_GLNAMEDBUFFERSUBDATAEXT(buffer, offset, size, data); } void OSMesaDriver::nfglNamedCopyBufferSubDataEXT(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) { D(bug("nfosmesa: glNamedCopyBufferSubDataEXT(%u, %u, %" PRI_IPTR ", %" PRI_IPTR ", %" PRI_IPTR ")", readBuffer, writeBuffer, readOffset, writeOffset, size)); fn.glNamedCopyBufferSubDataEXT(readBuffer, writeBuffer, readOffset, writeOffset, size); } void OSMesaDriver::nfglNamedFramebufferDrawBuffer(GLuint framebuffer, GLenum buf) { D(bug("nfosmesa: glNamedFramebufferDrawBuffer(%u, %s)", framebuffer, gl_enum_name(buf))); fn.glNamedFramebufferDrawBuffer(framebuffer, buf); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedFramebufferDrawBuffers(GLuint framebuffer, GLsizei n, memptr bufs) #else void OSMesaDriver::nfglNamedFramebufferDrawBuffers(GLuint framebuffer, GLsizei n, const GLenum *bufs) #endif { D(bug("nfosmesa: glNamedFramebufferDrawBuffers(%u, %d, " PRI_PTR ")", framebuffer, n, AtariOffset(bufs))); FN_GLNAMEDFRAMEBUFFERDRAWBUFFERS(framebuffer, n, bufs); } void OSMesaDriver::nfglNamedFramebufferParameteri(GLuint framebuffer, GLenum pname, GLint param) { D(bug("nfosmesa: glNamedFramebufferParameteri(%u, %s, %d)", framebuffer, gl_enum_name(pname), param)); fn.glNamedFramebufferParameteri(framebuffer, pname, param); } void OSMesaDriver::nfglNamedFramebufferParameteriEXT(GLuint framebuffer, GLenum pname, GLint param) { D(bug("nfosmesa: glNamedFramebufferParameteriEXT(%u, %s, %d)", framebuffer, gl_enum_name(pname), param)); fn.glNamedFramebufferParameteriEXT(framebuffer, pname, param); } void OSMesaDriver::nfglNamedFramebufferReadBuffer(GLuint framebuffer, GLenum src) { D(bug("nfosmesa: glNamedFramebufferReadBuffer(%u, %s)", framebuffer, gl_enum_name(src))); fn.glNamedFramebufferReadBuffer(framebuffer, src); } void OSMesaDriver::nfglNamedFramebufferRenderbuffer(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) { D(bug("nfosmesa: glNamedFramebufferRenderbuffer(%u, %s, %s, %u)", framebuffer, gl_enum_name(attachment), gl_enum_name(renderbuffertarget), renderbuffer)); fn.glNamedFramebufferRenderbuffer(framebuffer, attachment, renderbuffertarget, renderbuffer); } void OSMesaDriver::nfglNamedFramebufferRenderbufferEXT(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) { D(bug("nfosmesa: glNamedFramebufferRenderbufferEXT(%u, %s, %s, %u)", framebuffer, gl_enum_name(attachment), gl_enum_name(renderbuffertarget), renderbuffer)); fn.glNamedFramebufferRenderbufferEXT(framebuffer, attachment, renderbuffertarget, renderbuffer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedFramebufferSampleLocationsfvARB(GLuint framebuffer, GLuint start, GLsizei count, memptr v) #else void OSMesaDriver::nfglNamedFramebufferSampleLocationsfvARB(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v) #endif { D(bug("nfosmesa: glNamedFramebufferSampleLocationsfvARB(%u, %u, %d, " PRI_PTR ")", framebuffer, start, count, AtariOffset(v))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __v_size = MAX(count, 0); GLfloat __v_tmp[__v_size]; GLfloat *__v_ptmp = Atari2HostFloatArray(__v_size, v, __v_tmp); fn.glNamedFramebufferSampleLocationsfvARB(framebuffer, start, count, __v_ptmp); #else fn.glNamedFramebufferSampleLocationsfvARB(framebuffer, start, count, HostAddr(v, const GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedFramebufferSampleLocationsfvNV(GLuint framebuffer, GLuint start, GLsizei count, memptr v) #else void OSMesaDriver::nfglNamedFramebufferSampleLocationsfvNV(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v) #endif { D(bug("nfosmesa: glNamedFramebufferSampleLocationsfvNV(%u, %u, %d, " PRI_PTR ")", framebuffer, start, count, AtariOffset(v))); FN_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV(framebuffer, start, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedFramebufferSamplePositionsfvAMD(GLuint framebuffer, GLuint numsamples, GLuint pixelindex, memptr values) #else void OSMesaDriver::nfglNamedFramebufferSamplePositionsfvAMD(GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values) #endif { D(bug("nfosmesa: glNamedFramebufferSamplePositionsfvAMD(%u, %u, %u, " PRI_PTR ")", framebuffer, numsamples, pixelindex, AtariOffset(values))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __values_size = MAX(numsamples, 0); GLfloat __values_tmp[__values_size]; GLfloat *__values_ptmp = Atari2HostFloatArray(__values_size, values, __values_tmp); fn.glNamedFramebufferSamplePositionsfvAMD(framebuffer, numsamples, pixelindex, __values_ptmp); #else fn.glNamedFramebufferSamplePositionsfvAMD(framebuffer, numsamples, pixelindex, HostAddr(values, const GLfloat *)); #endif } void OSMesaDriver::nfglNamedFramebufferTexture(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level) { D(bug("nfosmesa: glNamedFramebufferTexture(%u, %s, %u, %d)", framebuffer, gl_enum_name(attachment), texture, level)); fn.glNamedFramebufferTexture(framebuffer, attachment, texture, level); } void OSMesaDriver::nfglNamedFramebufferTexture1DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { D(bug("nfosmesa: glNamedFramebufferTexture1DEXT(%u, %s, %s, %u, %d)", framebuffer, gl_enum_name(attachment), gl_enum_name(textarget), texture, level)); fn.glNamedFramebufferTexture1DEXT(framebuffer, attachment, textarget, texture, level); } void OSMesaDriver::nfglNamedFramebufferTexture2DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { D(bug("nfosmesa: glNamedFramebufferTexture2DEXT(%u, %s, %s, %u, %d)", framebuffer, gl_enum_name(attachment), gl_enum_name(textarget), texture, level)); fn.glNamedFramebufferTexture2DEXT(framebuffer, attachment, textarget, texture, level); } void OSMesaDriver::nfglNamedFramebufferTexture3DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) { D(bug("nfosmesa: glNamedFramebufferTexture3DEXT(%u, %s, %s, %u, %d, %d)", framebuffer, gl_enum_name(attachment), gl_enum_name(textarget), texture, level, zoffset)); fn.glNamedFramebufferTexture3DEXT(framebuffer, attachment, textarget, texture, level, zoffset); } void OSMesaDriver::nfglNamedFramebufferTextureEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level) { D(bug("nfosmesa: glNamedFramebufferTextureEXT(%u, %s, %u, %d)", framebuffer, gl_enum_name(attachment), texture, level)); fn.glNamedFramebufferTextureEXT(framebuffer, attachment, texture, level); } void OSMesaDriver::nfglNamedFramebufferTextureFaceEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face) { D(bug("nfosmesa: glNamedFramebufferTextureFaceEXT(%u, %s, %u, %d, %s)", framebuffer, gl_enum_name(attachment), texture, level, gl_enum_name(face))); fn.glNamedFramebufferTextureFaceEXT(framebuffer, attachment, texture, level, face); } void OSMesaDriver::nfglNamedFramebufferTextureLayer(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer) { D(bug("nfosmesa: glNamedFramebufferTextureLayer(%u, %s, %u, %d, %d)", framebuffer, gl_enum_name(attachment), texture, level, layer)); fn.glNamedFramebufferTextureLayer(framebuffer, attachment, texture, level, layer); } void OSMesaDriver::nfglNamedFramebufferTextureLayerEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer) { D(bug("nfosmesa: glNamedFramebufferTextureLayerEXT(%u, %s, %u, %d, %d)", framebuffer, gl_enum_name(attachment), texture, level, layer)); fn.glNamedFramebufferTextureLayerEXT(framebuffer, attachment, texture, level, layer); } void OSMesaDriver::nfglNamedProgramLocalParameter4dEXT(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glNamedProgramLocalParameter4dEXT(%u, %s, %u, %f, %f, %f, %f)", program, gl_enum_name(target), index, x, y, z, w)); fn.glNamedProgramLocalParameter4dEXT(program, target, index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedProgramLocalParameter4dvEXT(GLuint program, GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglNamedProgramLocalParameter4dvEXT(GLuint program, GLenum target, GLuint index, const GLdouble *params) #endif { D(bug("nfosmesa: glNamedProgramLocalParameter4dvEXT(%u, %s, %u, " PRI_PTR ")", program, gl_enum_name(target), index, AtariOffset(params))); FN_GLNAMEDPROGRAMLOCALPARAMETER4DVEXT(program, target, index, params); } void OSMesaDriver::nfglNamedProgramLocalParameter4fEXT(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { D(bug("nfosmesa: glNamedProgramLocalParameter4fEXT(%u, %s, %u, %f, %f, %f, %f)", program, gl_enum_name(target), index, x, y, z, w)); fn.glNamedProgramLocalParameter4fEXT(program, target, index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedProgramLocalParameter4fvEXT(GLuint program, GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglNamedProgramLocalParameter4fvEXT(GLuint program, GLenum target, GLuint index, const GLfloat *params) #endif { D(bug("nfosmesa: glNamedProgramLocalParameter4fvEXT(%u, %s, %u, " PRI_PTR ")", program, gl_enum_name(target), index, AtariOffset(params))); FN_GLNAMEDPROGRAMLOCALPARAMETER4FVEXT(program, target, index, params); } void OSMesaDriver::nfglNamedProgramLocalParameterI4iEXT(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w) { D(bug("nfosmesa: glNamedProgramLocalParameterI4iEXT(%u, %s, %u, %d, %d, %d, %d)", program, gl_enum_name(target), index, x, y, z, w)); fn.glNamedProgramLocalParameterI4iEXT(program, target, index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedProgramLocalParameterI4ivEXT(GLuint program, GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglNamedProgramLocalParameterI4ivEXT(GLuint program, GLenum target, GLuint index, const GLint *params) #endif { D(bug("nfosmesa: glNamedProgramLocalParameterI4ivEXT(%u, %s, %u, " PRI_PTR ")", program, gl_enum_name(target), index, AtariOffset(params))); FN_GLNAMEDPROGRAMLOCALPARAMETERI4IVEXT(program, target, index, params); } void OSMesaDriver::nfglNamedProgramLocalParameterI4uiEXT(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) { D(bug("nfosmesa: glNamedProgramLocalParameterI4uiEXT(%u, %s, %u, %u, %u, %u, %u)", program, gl_enum_name(target), index, x, y, z, w)); fn.glNamedProgramLocalParameterI4uiEXT(program, target, index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedProgramLocalParameterI4uivEXT(GLuint program, GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglNamedProgramLocalParameterI4uivEXT(GLuint program, GLenum target, GLuint index, const GLuint *params) #endif { D(bug("nfosmesa: glNamedProgramLocalParameterI4uivEXT(%u, %s, %u, " PRI_PTR ")", program, gl_enum_name(target), index, AtariOffset(params))); FN_GLNAMEDPROGRAMLOCALPARAMETERI4UIVEXT(program, target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedProgramLocalParameters4fvEXT(GLuint program, GLenum target, GLuint index, GLsizei count, memptr params) #else void OSMesaDriver::nfglNamedProgramLocalParameters4fvEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params) #endif { D(bug("nfosmesa: glNamedProgramLocalParameters4fvEXT(%u, %s, %u, %d, " PRI_PTR ")", program, gl_enum_name(target), index, count, AtariOffset(params))); FN_GLNAMEDPROGRAMLOCALPARAMETERS4FVEXT(program, target, index, count, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedProgramLocalParametersI4ivEXT(GLuint program, GLenum target, GLuint index, GLsizei count, memptr params) #else void OSMesaDriver::nfglNamedProgramLocalParametersI4ivEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params) #endif { D(bug("nfosmesa: glNamedProgramLocalParametersI4ivEXT(%u, %s, %u, %d, " PRI_PTR ")", program, gl_enum_name(target), index, count, AtariOffset(params))); FN_GLNAMEDPROGRAMLOCALPARAMETERSI4IVEXT(program, target, index, count, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedProgramLocalParametersI4uivEXT(GLuint program, GLenum target, GLuint index, GLsizei count, memptr params) #else void OSMesaDriver::nfglNamedProgramLocalParametersI4uivEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params) #endif { D(bug("nfosmesa: glNamedProgramLocalParametersI4uivEXT(%u, %s, %u, %d, " PRI_PTR ")", program, gl_enum_name(target), index, count, AtariOffset(params))); FN_GLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXT(program, target, index, count, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedProgramStringEXT(GLuint program, GLenum target, GLenum format, GLsizei len, memptr string) #else void OSMesaDriver::nfglNamedProgramStringEXT(GLuint program, GLenum target, GLenum format, GLsizei len, const void *string) #endif { D(bug("nfosmesa: glNamedProgramStringEXT(%u, %s, %s, %d, " PRI_PTR ")", program, gl_enum_name(target), gl_enum_name(format), len, AtariOffset(string))); FN_GLNAMEDPROGRAMSTRINGEXT(program, target, format, len, string); } void OSMesaDriver::nfglNamedRenderbufferStorage(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height) { D(bug("nfosmesa: glNamedRenderbufferStorage(%u, %s, %d, %d)", renderbuffer, gl_enum_name(internalformat), width, height)); fn.glNamedRenderbufferStorage(renderbuffer, internalformat, width, height); } void OSMesaDriver::nfglNamedRenderbufferStorageEXT(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height) { D(bug("nfosmesa: glNamedRenderbufferStorageEXT(%u, %s, %d, %d)", renderbuffer, gl_enum_name(internalformat), width, height)); fn.glNamedRenderbufferStorageEXT(renderbuffer, internalformat, width, height); } void OSMesaDriver::nfglNamedRenderbufferStorageMultisample(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { D(bug("nfosmesa: glNamedRenderbufferStorageMultisample(%u, %d, %s, %d, %d)", renderbuffer, samples, gl_enum_name(internalformat), width, height)); fn.glNamedRenderbufferStorageMultisample(renderbuffer, samples, internalformat, width, height); } void OSMesaDriver::nfglNamedRenderbufferStorageMultisampleCoverageEXT(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height) { D(bug("nfosmesa: glNamedRenderbufferStorageMultisampleCoverageEXT(%u, %d, %d, %s, %d, %d)", renderbuffer, coverageSamples, colorSamples, gl_enum_name(internalformat), width, height)); fn.glNamedRenderbufferStorageMultisampleCoverageEXT(renderbuffer, coverageSamples, colorSamples, internalformat, width, height); } void OSMesaDriver::nfglNamedRenderbufferStorageMultisampleEXT(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { D(bug("nfosmesa: glNamedRenderbufferStorageMultisampleEXT(%u, %d, %s, %d, %d)", renderbuffer, samples, gl_enum_name(internalformat), width, height)); fn.glNamedRenderbufferStorageMultisampleEXT(renderbuffer, samples, internalformat, width, height); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNamedStringARB(GLenum type, GLint namelen, memptr name, GLint stringlen, memptr string) #else void OSMesaDriver::nfglNamedStringARB(GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string) #endif { D(bug("nfosmesa: glNamedStringARB(%s, %d, " PRI_PTR ", %d, " PRI_PTR ")", gl_enum_name(type), namelen, AtariOffset(name), stringlen, AtariOffset(string))); FN_GLNAMEDSTRINGARB(type, namelen, name, stringlen, string); } void OSMesaDriver::nfglNewList(GLuint list, GLenum mode) { D(bug("nfosmesa: glNewList(%u, %s)", list, gl_enum_name(mode))); fn.glNewList(list, mode); } #if NFOSMESA_POINTER_AS_MEMARG GLuint OSMesaDriver::nfglNewObjectBufferATI(GLsizei size, memptr pointer, GLenum usage) #else GLuint OSMesaDriver::nfglNewObjectBufferATI(GLsizei size, const void *pointer, GLenum usage) #endif { D(bug("nfosmesa: glNewObjectBufferATI(%d, " PRI_PTR ", %s)", size, AtariOffset(pointer), gl_enum_name(usage))); FN_GLNEWOBJECTBUFFERATI(size, pointer, usage); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNewTraceMESA(GLbitfield mask, memptr traceName) #else void OSMesaDriver::nfglNewTraceMESA(GLbitfield mask, const GLubyte *traceName) #endif { D(bug("nfosmesa: glNewTraceMESA(0x%x, " PRI_PTR ")", mask, AtariOffset(traceName))); FN_GLNEWTRACEMESA(mask, traceName); } void OSMesaDriver::nfglNormal3b(GLbyte32 nx, GLbyte32 ny, GLbyte32 nz) { D(bug("nfosmesa: glNormal3b(%d, %d, %d)", nx, ny, nz)); fn.glNormal3b(nx, ny, nz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormal3bv(memptr v) #else void OSMesaDriver::nfglNormal3bv(const GLbyte *v) #endif { D(bug("nfosmesa: glNormal3bv(" PRI_PTR ")", AtariOffset(v))); FN_GLNORMAL3BV(v); } void OSMesaDriver::nfglNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) { D(bug("nfosmesa: glNormal3d(%f, %f, %f)", nx, ny, nz)); fn.glNormal3d(nx, ny, nz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormal3dv(memptr v) #else void OSMesaDriver::nfglNormal3dv(const GLdouble *v) #endif { D(bug("nfosmesa: glNormal3dv(" PRI_PTR ")", AtariOffset(v))); FN_GLNORMAL3DV(v); } void OSMesaDriver::nfglNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) { D(bug("nfosmesa: glNormal3f(%f, %f, %f)", nx, ny, nz)); fn.glNormal3f(nx, ny, nz); } void OSMesaDriver::nfglNormal3fVertex3fSUN(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glNormal3fVertex3fSUN(%f, %f, %f, %f, %f, %f)", nx, ny, nz, x, y, z)); fn.glNormal3fVertex3fSUN(nx, ny, nz, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormal3fVertex3fvSUN(memptr n, memptr v) #else void OSMesaDriver::nfglNormal3fVertex3fvSUN(const GLfloat *n, const GLfloat *v) #endif { D(bug("nfosmesa: glNormal3fVertex3fvSUN(" PRI_PTR ", " PRI_PTR ")", AtariOffset(n), AtariOffset(v))); FN_GLNORMAL3FVERTEX3FVSUN(n, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormal3fv(memptr v) #else void OSMesaDriver::nfglNormal3fv(const GLfloat *v) #endif { D(bug("nfosmesa: glNormal3fv(" PRI_PTR ")", AtariOffset(v))); FN_GLNORMAL3FV(v); } void OSMesaDriver::nfglNormal3hNV(GLhalfNV32 nx, GLhalfNV32 ny, GLhalfNV32 nz) { D(bug("nfosmesa: glNormal3hNV(%u, %u, %u)", nx, ny, nz)); fn.glNormal3hNV(nx, ny, nz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormal3hvNV(memptr v) #else void OSMesaDriver::nfglNormal3hvNV(const GLhalfNV *v) #endif { D(bug("nfosmesa: glNormal3hvNV(" PRI_PTR ")", AtariOffset(v))); FN_GLNORMAL3HVNV(v); } void OSMesaDriver::nfglNormal3i(GLint nx, GLint ny, GLint nz) { D(bug("nfosmesa: glNormal3i(%d, %d, %d)", nx, ny, nz)); fn.glNormal3i(nx, ny, nz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormal3iv(memptr v) #else void OSMesaDriver::nfglNormal3iv(const GLint *v) #endif { D(bug("nfosmesa: glNormal3iv(" PRI_PTR ")", AtariOffset(v))); FN_GLNORMAL3IV(v); } void OSMesaDriver::nfglNormal3s(GLshort32 nx, GLshort32 ny, GLshort32 nz) { D(bug("nfosmesa: glNormal3s(%d, %d, %d)", nx, ny, nz)); fn.glNormal3s(nx, ny, nz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormal3sv(memptr v) #else void OSMesaDriver::nfglNormal3sv(const GLshort *v) #endif { D(bug("nfosmesa: glNormal3sv(" PRI_PTR ")", AtariOffset(v))); FN_GLNORMAL3SV(v); } void OSMesaDriver::nfglNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz) { D(bug("nfosmesa: glNormal3xOES(0x%x, 0x%x, 0x%x)", nx, ny, nz)); fn.glNormal3xOES(nx, ny, nz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormal3xvOES(memptr coords) #else void OSMesaDriver::nfglNormal3xvOES(const GLfixed *coords) #endif { D(bug("nfosmesa: glNormal3xvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLNORMAL3XVOES(coords); } void OSMesaDriver::nfglNormalFormatNV(GLenum type, GLsizei stride) { D(bug("nfosmesa: glNormalFormatNV(%s, %d)", gl_enum_name(type), stride)); fn.glNormalFormatNV(type, stride); } void OSMesaDriver::nfglNormalP3ui(GLenum type, GLuint coords) { D(bug("nfosmesa: glNormalP3ui(%s, %u)", gl_enum_name(type), coords)); fn.glNormalP3ui(type, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormalP3uiv(GLenum type, memptr coords) #else void OSMesaDriver::nfglNormalP3uiv(GLenum type, const GLuint *coords) #endif { D(bug("nfosmesa: glNormalP3uiv(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(coords))); FN_GLNORMALP3UIV(type, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormalPointer(GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) #endif { D(bug("nfosmesa: glNormalPointer(%s, %d, " PRI_PTR ")", gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLNORMALPOINTER(type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, memptr pointer) #else void OSMesaDriver::nfglNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const void *pointer) #endif { D(bug("nfosmesa: glNormalPointerEXT(%s, %d, %d, " PRI_PTR ")", gl_enum_name(type), stride, count, AtariOffset(pointer))); FN_GLNORMALPOINTEREXT(type, stride, count, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormalPointerListIBM(GLenum type, GLint stride, memptr pointer, GLint ptrstride) #else void OSMesaDriver::nfglNormalPointerListIBM(GLenum type, GLint stride, const void * *pointer, GLint ptrstride) #endif { D(bug("nfosmesa: glNormalPointerListIBM(%s, %d, " PRI_PTR ", %d)", gl_enum_name(type), stride, AtariOffset(pointer), ptrstride)); FN_GLNORMALPOINTERLISTIBM(type, stride, pointer, ptrstride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormalPointervINTEL(GLenum type, memptr pointer) #else void OSMesaDriver::nfglNormalPointervINTEL(GLenum type, const void * *pointer) #endif { D(bug("nfosmesa: glNormalPointervINTEL(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(pointer))); FN_GLNORMALPOINTERVINTEL(type, pointer); } void OSMesaDriver::nfglNormalStream3bATI(GLenum stream, GLbyte32 nx, GLbyte32 ny, GLbyte32 nz) { D(bug("nfosmesa: glNormalStream3bATI(%s, %d, %d, %d)", gl_enum_name(stream), nx, ny, nz)); fn.glNormalStream3bATI(stream, nx, ny, nz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormalStream3bvATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglNormalStream3bvATI(GLenum stream, const GLbyte *coords) #endif { D(bug("nfosmesa: glNormalStream3bvATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLNORMALSTREAM3BVATI(stream, coords); } void OSMesaDriver::nfglNormalStream3dATI(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz) { D(bug("nfosmesa: glNormalStream3dATI(%s, %f, %f, %f)", gl_enum_name(stream), nx, ny, nz)); fn.glNormalStream3dATI(stream, nx, ny, nz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormalStream3dvATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglNormalStream3dvATI(GLenum stream, const GLdouble *coords) #endif { D(bug("nfosmesa: glNormalStream3dvATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLNORMALSTREAM3DVATI(stream, coords); } void OSMesaDriver::nfglNormalStream3fATI(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz) { D(bug("nfosmesa: glNormalStream3fATI(%s, %f, %f, %f)", gl_enum_name(stream), nx, ny, nz)); fn.glNormalStream3fATI(stream, nx, ny, nz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormalStream3fvATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglNormalStream3fvATI(GLenum stream, const GLfloat *coords) #endif { D(bug("nfosmesa: glNormalStream3fvATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLNORMALSTREAM3FVATI(stream, coords); } void OSMesaDriver::nfglNormalStream3iATI(GLenum stream, GLint nx, GLint ny, GLint nz) { D(bug("nfosmesa: glNormalStream3iATI(%s, %d, %d, %d)", gl_enum_name(stream), nx, ny, nz)); fn.glNormalStream3iATI(stream, nx, ny, nz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormalStream3ivATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglNormalStream3ivATI(GLenum stream, const GLint *coords) #endif { D(bug("nfosmesa: glNormalStream3ivATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLNORMALSTREAM3IVATI(stream, coords); } void OSMesaDriver::nfglNormalStream3sATI(GLenum stream, GLshort32 nx, GLshort32 ny, GLshort32 nz) { D(bug("nfosmesa: glNormalStream3sATI(%s, %d, %d, %d)", gl_enum_name(stream), nx, ny, nz)); fn.glNormalStream3sATI(stream, nx, ny, nz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglNormalStream3svATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglNormalStream3svATI(GLenum stream, const GLshort *coords) #endif { D(bug("nfosmesa: glNormalStream3svATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLNORMALSTREAM3SVATI(stream, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglObjectLabel(GLenum identifier, GLuint name, GLsizei length, memptr label) #else void OSMesaDriver::nfglObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label) #endif { D(bug("nfosmesa: glObjectLabel(%s, %u, %d, " PRI_PTR ")", gl_enum_name(identifier), name, length, AtariOffset(label))); FN_GLOBJECTLABEL(identifier, name, length, label); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglObjectPtrLabel(memptr ptr, GLsizei length, memptr label) #else void OSMesaDriver::nfglObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label) #endif { D(bug("nfosmesa: glObjectPtrLabel(" PRI_PTR ", %d, " PRI_PTR ")", AtariOffset(ptr), length, AtariOffset(label))); FN_GLOBJECTPTRLABEL(ptr, length, label); } GLenum OSMesaDriver::nfglObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) { D(bug("nfosmesa: glObjectPurgeableAPPLE(%s, %u, %s)", gl_enum_name(objectType), name, gl_enum_name(option))); GLenum __ret = fn.glObjectPurgeableAPPLE(objectType, name, option); return __ret; } GLenum OSMesaDriver::nfglObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) { D(bug("nfosmesa: glObjectUnpurgeableAPPLE(%s, %u, %s)", gl_enum_name(objectType), name, gl_enum_name(option))); GLenum __ret = fn.glObjectUnpurgeableAPPLE(objectType, name, option); return __ret; } void OSMesaDriver::nfglOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { D(bug("nfosmesa: glOrtho(%f, %f, %f, %f, %f, %f)", left, right, bottom, top, zNear, zFar)); fn.glOrtho(left, right, bottom, top, zNear, zFar); } void OSMesaDriver::nfglOrthofOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) { D(bug("nfosmesa: glOrthofOES(%f, %f, %f, %f, %f, %f)", l, r, b, t, n, f)); fn.glOrthofOES(l, r, b, t, n, f); } void OSMesaDriver::nfglOrthoxOES(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f) { D(bug("nfosmesa: glOrthoxOES(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x)", l, r, b, t, n, f)); fn.glOrthoxOES(l, r, b, t, n, f); } void OSMesaDriver::nfglPNTrianglesfATI(GLenum pname, GLfloat param) { D(bug("nfosmesa: glPNTrianglesfATI(%s, %f)", gl_enum_name(pname), param)); fn.glPNTrianglesfATI(pname, param); } void OSMesaDriver::nfglPNTrianglesiATI(GLenum pname, GLint param) { D(bug("nfosmesa: glPNTrianglesiATI(%s, %d)", gl_enum_name(pname), param)); fn.glPNTrianglesiATI(pname, param); } void OSMesaDriver::nfglPassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle) { D(bug("nfosmesa: glPassTexCoordATI(%u, %u, %s)", dst, coord, gl_enum_name(swizzle))); fn.glPassTexCoordATI(dst, coord, swizzle); } void OSMesaDriver::nfglPassThrough(GLfloat token) { D(bug("nfosmesa: glPassThrough(%f)", token)); fn.glPassThrough(token); } void OSMesaDriver::nfglPassThroughxOES(GLfixed token) { D(bug("nfosmesa: glPassThroughxOES(0x%x)", token)); fn.glPassThroughxOES(token); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPatchParameterfv(GLenum pname, memptr values) #else void OSMesaDriver::nfglPatchParameterfv(GLenum pname, const GLfloat *values) #endif { D(bug("nfosmesa: glPatchParameterfv(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(values))); FN_GLPATCHPARAMETERFV(pname, values); } void OSMesaDriver::nfglPatchParameteri(GLenum pname, GLint value) { D(bug("nfosmesa: glPatchParameteri(%s, %d)", gl_enum_name(pname), value)); fn.glPatchParameteri(pname, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPathColorGenNV(GLenum color, GLenum genMode, GLenum colorFormat, memptr coeffs) #else void OSMesaDriver::nfglPathColorGenNV(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs) #endif { D(bug("nfosmesa: glPathColorGenNV(%s, %s, %s, " PRI_PTR ")", gl_enum_name(color), gl_enum_name(genMode), gl_enum_name(colorFormat), AtariOffset(coeffs))); FN_GLPATHCOLORGENNV(color, genMode, colorFormat, coeffs); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPathCommandsNV(GLuint path, GLsizei numCommands, memptr commands, GLsizei numCoords, GLenum coordType, memptr coords) #else void OSMesaDriver::nfglPathCommandsNV(GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords) #endif { D(bug("nfosmesa: glPathCommandsNV(%u, %d, " PRI_PTR ", %d, %s, " PRI_PTR ")", path, numCommands, AtariOffset(commands), numCoords, gl_enum_name(coordType), AtariOffset(coords))); FN_GLPATHCOMMANDSNV(path, numCommands, commands, numCoords, coordType, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, memptr coords) #else void OSMesaDriver::nfglPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const void *coords) #endif { D(bug("nfosmesa: glPathCoordsNV(%u, %d, %s, " PRI_PTR ")", path, numCoords, gl_enum_name(coordType), AtariOffset(coords))); FN_GLPATHCOORDSNV(path, numCoords, coordType, coords); } void OSMesaDriver::nfglPathCoverDepthFuncNV(GLenum func) { D(bug("nfosmesa: glPathCoverDepthFuncNV(%s)", gl_enum_name(func))); fn.glPathCoverDepthFuncNV(func); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPathDashArrayNV(GLuint path, GLsizei dashCount, memptr dashArray) #else void OSMesaDriver::nfglPathDashArrayNV(GLuint path, GLsizei dashCount, const GLfloat *dashArray) #endif { D(bug("nfosmesa: glPathDashArrayNV(%u, %d, " PRI_PTR ")", path, dashCount, AtariOffset(dashArray))); FN_GLPATHDASHARRAYNV(path, dashCount, dashArray); } void OSMesaDriver::nfglPathFogGenNV(GLenum genMode) { D(bug("nfosmesa: glPathFogGenNV(%s)", gl_enum_name(genMode))); fn.glPathFogGenNV(genMode); } #if NFOSMESA_POINTER_AS_MEMARG GLenum OSMesaDriver::nfglPathGlyphIndexArrayNV(GLuint firstPathName, GLenum fontTarget, memptr fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale) #else GLenum OSMesaDriver::nfglPathGlyphIndexArrayNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale) #endif { D(bug("nfosmesa: glPathGlyphIndexArrayNV(%u, %s, " PRI_PTR ", 0x%x, %u, %d, %u, %f)", firstPathName, gl_enum_name(fontTarget), AtariOffset(fontName), fontStyle, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale)); FN_GLPATHGLYPHINDEXARRAYNV(firstPathName, fontTarget, fontName, fontStyle, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale); } #if NFOSMESA_POINTER_AS_MEMARG GLenum OSMesaDriver::nfglPathGlyphIndexRangeNV(GLenum fontTarget, memptr fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, memptr baseAndCount) #else GLenum OSMesaDriver::nfglPathGlyphIndexRangeNV(GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount) #endif { D(bug("nfosmesa: glPathGlyphIndexRangeNV(%s, " PRI_PTR ", 0x%x, %u, %f, " PRI_PTR ")", gl_enum_name(fontTarget), AtariOffset(fontName), fontStyle, pathParameterTemplate, emScale, AtariOffset(baseAndCount))); FN_GLPATHGLYPHINDEXRANGENV(fontTarget, fontName, fontStyle, pathParameterTemplate, emScale, baseAndCount); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPathGlyphRangeNV(GLuint firstPathName, GLenum fontTarget, memptr fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale) #else void OSMesaDriver::nfglPathGlyphRangeNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale) #endif { D(bug("nfosmesa: glPathGlyphRangeNV(%u, %s, " PRI_PTR ", 0x%x, %u, %d, %s, %u, %f)", firstPathName, gl_enum_name(fontTarget), AtariOffset(fontName), fontStyle, firstGlyph, numGlyphs, gl_enum_name(handleMissingGlyphs), pathParameterTemplate, emScale)); FN_GLPATHGLYPHRANGENV(firstPathName, fontTarget, fontName, fontStyle, firstGlyph, numGlyphs, handleMissingGlyphs, pathParameterTemplate, emScale); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPathGlyphsNV(GLuint firstPathName, GLenum fontTarget, memptr fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, memptr charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale) #else void OSMesaDriver::nfglPathGlyphsNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale) #endif { D(bug("nfosmesa: glPathGlyphsNV(%u, %s, " PRI_PTR ", 0x%x, %d, %s, " PRI_PTR ", %s, %u, %f)", firstPathName, gl_enum_name(fontTarget), AtariOffset(fontName), fontStyle, numGlyphs, gl_enum_name(type), AtariOffset(charcodes), gl_enum_name(handleMissingGlyphs), pathParameterTemplate, emScale)); FN_GLPATHGLYPHSNV(firstPathName, fontTarget, fontName, fontStyle, numGlyphs, type, charcodes, handleMissingGlyphs, pathParameterTemplate, emScale); } #if NFOSMESA_POINTER_AS_MEMARG GLenum OSMesaDriver::nfglPathMemoryGlyphIndexArrayNV(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, memptr fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale) #else GLenum OSMesaDriver::nfglPathMemoryGlyphIndexArrayNV(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale) #endif { D(bug("nfosmesa: glPathMemoryGlyphIndexArrayNV(%u, %s, %" PRI_IPTR ", " PRI_PTR ", %d, %u, %d, %u, %f)", firstPathName, gl_enum_name(fontTarget), fontSize, AtariOffset(fontData), faceIndex, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale)); FN_GLPATHMEMORYGLYPHINDEXARRAYNV(firstPathName, fontTarget, fontSize, fontData, faceIndex, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale); } void OSMesaDriver::nfglPathParameterfNV(GLuint path, GLenum pname, GLfloat value) { D(bug("nfosmesa: glPathParameterfNV(%u, %s, %f)", path, gl_enum_name(pname), value)); fn.glPathParameterfNV(path, pname, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPathParameterfvNV(GLuint path, GLenum pname, memptr value) #else void OSMesaDriver::nfglPathParameterfvNV(GLuint path, GLenum pname, const GLfloat *value) #endif { D(bug("nfosmesa: glPathParameterfvNV(%u, %s, " PRI_PTR ")", path, gl_enum_name(pname), AtariOffset(value))); FN_GLPATHPARAMETERFVNV(path, pname, value); } void OSMesaDriver::nfglPathParameteriNV(GLuint path, GLenum pname, GLint value) { D(bug("nfosmesa: glPathParameteriNV(%u, %s, %d)", path, gl_enum_name(pname), value)); fn.glPathParameteriNV(path, pname, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPathParameterivNV(GLuint path, GLenum pname, memptr value) #else void OSMesaDriver::nfglPathParameterivNV(GLuint path, GLenum pname, const GLint *value) #endif { D(bug("nfosmesa: glPathParameterivNV(%u, %s, " PRI_PTR ")", path, gl_enum_name(pname), AtariOffset(value))); FN_GLPATHPARAMETERIVNV(path, pname, value); } void OSMesaDriver::nfglPathStencilDepthOffsetNV(GLfloat factor, GLfloat units) { D(bug("nfosmesa: glPathStencilDepthOffsetNV(%f, %f)", factor, units)); fn.glPathStencilDepthOffsetNV(factor, units); } void OSMesaDriver::nfglPathStencilFuncNV(GLenum func, GLint ref, GLuint mask) { D(bug("nfosmesa: glPathStencilFuncNV(%s, %d, %u)", gl_enum_name(func), ref, mask)); fn.glPathStencilFuncNV(func, ref, mask); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPathStringNV(GLuint path, GLenum format, GLsizei length, memptr pathString) #else void OSMesaDriver::nfglPathStringNV(GLuint path, GLenum format, GLsizei length, const void *pathString) #endif { D(bug("nfosmesa: glPathStringNV(%u, %s, %d, " PRI_PTR ")", path, gl_enum_name(format), length, AtariOffset(pathString))); FN_GLPATHSTRINGNV(path, format, length, pathString); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPathSubCommandsNV(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, memptr commands, GLsizei numCoords, GLenum coordType, memptr coords) #else void OSMesaDriver::nfglPathSubCommandsNV(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords) #endif { D(bug("nfosmesa: glPathSubCommandsNV(%u, %d, %d, %d, " PRI_PTR ", %d, %s, " PRI_PTR ")", path, commandStart, commandsToDelete, numCommands, AtariOffset(commands), numCoords, gl_enum_name(coordType), AtariOffset(coords))); FN_GLPATHSUBCOMMANDSNV(path, commandStart, commandsToDelete, numCommands, commands, numCoords, coordType, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, memptr coords) #else void OSMesaDriver::nfglPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords) #endif { D(bug("nfosmesa: glPathSubCoordsNV(%u, %d, %d, %s, " PRI_PTR ")", path, coordStart, numCoords, gl_enum_name(coordType), AtariOffset(coords))); FN_GLPATHSUBCOORDSNV(path, coordStart, numCoords, coordType, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPathTexGenNV(GLenum texCoordSet, GLenum genMode, GLint components, memptr coeffs) #else void OSMesaDriver::nfglPathTexGenNV(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs) #endif { D(bug("nfosmesa: glPathTexGenNV(%s, %s, %d, " PRI_PTR ")", gl_enum_name(texCoordSet), gl_enum_name(genMode), components, AtariOffset(coeffs))); FN_GLPATHTEXGENNV(texCoordSet, genMode, components, coeffs); } void OSMesaDriver::nfglPauseTransformFeedback(void) { D(bug("nfosmesa: glPauseTransformFeedback()")); fn.glPauseTransformFeedback(); } void OSMesaDriver::nfglPauseTransformFeedbackNV(void) { D(bug("nfosmesa: glPauseTransformFeedbackNV()")); fn.glPauseTransformFeedbackNV(); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPixelDataRangeNV(GLenum target, GLsizei length, memptr pointer) #else void OSMesaDriver::nfglPixelDataRangeNV(GLenum target, GLsizei length, const void *pointer) #endif { D(bug("nfosmesa: glPixelDataRangeNV(%s, %d, " PRI_PTR ")", gl_enum_name(target), length, AtariOffset(pointer))); FN_GLPIXELDATARANGENV(target, length, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPixelMapfv(GLenum map, GLsizei mapsize, memptr values) #else void OSMesaDriver::nfglPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values) #endif { D(bug("nfosmesa: glPixelMapfv(%s, %d, " PRI_PTR ")", gl_enum_name(map), mapsize, AtariOffset(values))); FN_GLPIXELMAPFV(map, mapsize, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPixelMapuiv(GLenum map, GLsizei mapsize, memptr values) #else void OSMesaDriver::nfglPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values) #endif { D(bug("nfosmesa: glPixelMapuiv(%s, %d, " PRI_PTR ")", gl_enum_name(map), mapsize, AtariOffset(values))); FN_GLPIXELMAPUIV(map, mapsize, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPixelMapusv(GLenum map, GLsizei mapsize, memptr values) #else void OSMesaDriver::nfglPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values) #endif { D(bug("nfosmesa: glPixelMapusv(%s, %d, " PRI_PTR ")", gl_enum_name(map), mapsize, AtariOffset(values))); FN_GLPIXELMAPUSV(map, mapsize, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPixelMapx(GLenum map, GLint size, memptr values) #else void OSMesaDriver::nfglPixelMapx(GLenum map, GLint size, const GLfixed *values) #endif { D(bug("nfosmesa: glPixelMapx(%s, %d, " PRI_PTR ")", gl_enum_name(map), size, AtariOffset(values))); FN_GLPIXELMAPX(map, size, values); } void OSMesaDriver::nfglPixelStoref(GLenum pname, GLfloat param) { D(bug("nfosmesa: glPixelStoref(%s, %f)", gl_enum_name(pname), param)); fn.glPixelStoref(pname, param); } void OSMesaDriver::nfglPixelStorei(GLenum pname, GLint param) { D(bug("nfosmesa: glPixelStorei(%s, %d)", gl_enum_name(pname), param)); fn.glPixelStorei(pname, param); } void OSMesaDriver::nfglPixelStorex(GLenum pname, GLfixed param) { D(bug("nfosmesa: glPixelStorex(%s, 0x%x)", gl_enum_name(pname), param)); fn.glPixelStorex(pname, param); } void OSMesaDriver::nfglPixelTexGenParameterfSGIS(GLenum pname, GLfloat param) { D(bug("nfosmesa: glPixelTexGenParameterfSGIS(%s, %f)", gl_enum_name(pname), param)); fn.glPixelTexGenParameterfSGIS(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPixelTexGenParameterfvSGIS(GLenum pname, memptr params) #else void OSMesaDriver::nfglPixelTexGenParameterfvSGIS(GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glPixelTexGenParameterfvSGIS(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLPIXELTEXGENPARAMETERFVSGIS(pname, params); } void OSMesaDriver::nfglPixelTexGenParameteriSGIS(GLenum pname, GLint param) { D(bug("nfosmesa: glPixelTexGenParameteriSGIS(%s, %d)", gl_enum_name(pname), param)); fn.glPixelTexGenParameteriSGIS(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPixelTexGenParameterivSGIS(GLenum pname, memptr params) #else void OSMesaDriver::nfglPixelTexGenParameterivSGIS(GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glPixelTexGenParameterivSGIS(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLPIXELTEXGENPARAMETERIVSGIS(pname, params); } void OSMesaDriver::nfglPixelTexGenSGIX(GLenum mode) { D(bug("nfosmesa: glPixelTexGenSGIX(%s)", gl_enum_name(mode))); fn.glPixelTexGenSGIX(mode); } void OSMesaDriver::nfglPixelTransferf(GLenum pname, GLfloat param) { D(bug("nfosmesa: glPixelTransferf(%s, %f)", gl_enum_name(pname), param)); fn.glPixelTransferf(pname, param); } void OSMesaDriver::nfglPixelTransferi(GLenum pname, GLint param) { D(bug("nfosmesa: glPixelTransferi(%s, %d)", gl_enum_name(pname), param)); fn.glPixelTransferi(pname, param); } void OSMesaDriver::nfglPixelTransferxOES(GLenum pname, GLfixed param) { D(bug("nfosmesa: glPixelTransferxOES(%s, 0x%x)", gl_enum_name(pname), param)); fn.glPixelTransferxOES(pname, param); } void OSMesaDriver::nfglPixelTransformParameterfEXT(GLenum target, GLenum pname, GLfloat param) { D(bug("nfosmesa: glPixelTransformParameterfEXT(%s, %s, %f)", gl_enum_name(target), gl_enum_name(pname), param)); fn.glPixelTransformParameterfEXT(target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPixelTransformParameterfvEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglPixelTransformParameterfvEXT(GLenum target, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glPixelTransformParameterfvEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLPIXELTRANSFORMPARAMETERFVEXT(target, pname, params); } void OSMesaDriver::nfglPixelTransformParameteriEXT(GLenum target, GLenum pname, GLint param) { D(bug("nfosmesa: glPixelTransformParameteriEXT(%s, %s, %d)", gl_enum_name(target), gl_enum_name(pname), param)); fn.glPixelTransformParameteriEXT(target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPixelTransformParameterivEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglPixelTransformParameterivEXT(GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glPixelTransformParameterivEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLPIXELTRANSFORMPARAMETERIVEXT(target, pname, params); } void OSMesaDriver::nfglPixelZoom(GLfloat xfactor, GLfloat yfactor) { D(bug("nfosmesa: glPixelZoom(%f, %f)", xfactor, yfactor)); fn.glPixelZoom(xfactor, yfactor); } void OSMesaDriver::nfglPixelZoomxOES(GLfixed xfactor, GLfixed yfactor) { D(bug("nfosmesa: glPixelZoomxOES(0x%x, 0x%x)", xfactor, yfactor)); fn.glPixelZoomxOES(xfactor, yfactor); } #if NFOSMESA_POINTER_AS_MEMARG GLboolean OSMesaDriver::nfglPointAlongPathNV(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, memptr x, memptr y, memptr tangentX, memptr tangentY) #else GLboolean OSMesaDriver::nfglPointAlongPathNV(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY) #endif { D(bug("nfosmesa: glPointAlongPathNV(%u, %d, %d, %f, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", path, startSegment, numSegments, distance, AtariOffset(x), AtariOffset(y), AtariOffset(tangentX), AtariOffset(tangentY))); FN_GLPOINTALONGPATHNV(path, startSegment, numSegments, distance, x, y, tangentX, tangentY); } void OSMesaDriver::nfglPointParameterf(GLenum pname, GLfloat param) { D(bug("nfosmesa: glPointParameterf(%s, %f)", gl_enum_name(pname), param)); fn.glPointParameterf(pname, param); } void OSMesaDriver::nfglPointParameterfARB(GLenum pname, GLfloat param) { D(bug("nfosmesa: glPointParameterfARB(%s, %f)", gl_enum_name(pname), param)); fn.glPointParameterfARB(pname, param); } void OSMesaDriver::nfglPointParameterfEXT(GLenum pname, GLfloat param) { D(bug("nfosmesa: glPointParameterfEXT(%s, %f)", gl_enum_name(pname), param)); fn.glPointParameterfEXT(pname, param); } void OSMesaDriver::nfglPointParameterfSGIS(GLenum pname, GLfloat param) { D(bug("nfosmesa: glPointParameterfSGIS(%s, %f)", gl_enum_name(pname), param)); fn.glPointParameterfSGIS(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPointParameterfv(GLenum pname, memptr params) #else void OSMesaDriver::nfglPointParameterfv(GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glPointParameterfv(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLPOINTPARAMETERFV(pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPointParameterfvARB(GLenum pname, memptr params) #else void OSMesaDriver::nfglPointParameterfvARB(GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glPointParameterfvARB(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLPOINTPARAMETERFVARB(pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPointParameterfvEXT(GLenum pname, memptr params) #else void OSMesaDriver::nfglPointParameterfvEXT(GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glPointParameterfvEXT(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLPOINTPARAMETERFVEXT(pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPointParameterfvSGIS(GLenum pname, memptr params) #else void OSMesaDriver::nfglPointParameterfvSGIS(GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glPointParameterfvSGIS(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLPOINTPARAMETERFVSGIS(pname, params); } void OSMesaDriver::nfglPointParameteri(GLenum pname, GLint param) { D(bug("nfosmesa: glPointParameteri(%s, %d)", gl_enum_name(pname), param)); fn.glPointParameteri(pname, param); } void OSMesaDriver::nfglPointParameteriNV(GLenum pname, GLint param) { D(bug("nfosmesa: glPointParameteriNV(%s, %d)", gl_enum_name(pname), param)); fn.glPointParameteriNV(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPointParameteriv(GLenum pname, memptr params) #else void OSMesaDriver::nfglPointParameteriv(GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glPointParameteriv(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLPOINTPARAMETERIV(pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPointParameterivNV(GLenum pname, memptr params) #else void OSMesaDriver::nfglPointParameterivNV(GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glPointParameterivNV(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLPOINTPARAMETERIVNV(pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPointParameterxvOES(GLenum pname, memptr params) #else void OSMesaDriver::nfglPointParameterxvOES(GLenum pname, const GLfixed *params) #endif { D(bug("nfosmesa: glPointParameterxvOES(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLPOINTPARAMETERXVOES(pname, params); } void OSMesaDriver::nfglPointSize(GLfloat size) { D(bug("nfosmesa: glPointSize(%f)", size)); fn.glPointSize(size); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPointSizePointerAPPLE(GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglPointSizePointerAPPLE(GLenum type, GLsizei stride, const GLvoid *pointer) #endif { D(bug("nfosmesa: glPointSizePointerAPPLE(%s, %d, " PRI_PTR ")", gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLPOINTSIZEPOINTERAPPLE(type, stride, pointer); } void OSMesaDriver::nfglPointSizexOES(GLfixed size) { D(bug("nfosmesa: glPointSizexOES(0x%x)", size)); fn.glPointSizexOES(size); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglPollAsyncSGIX(memptr markerp) #else GLint OSMesaDriver::nfglPollAsyncSGIX(GLuint *markerp) #endif { D(bug("nfosmesa: glPollAsyncSGIX(" PRI_PTR ")", AtariOffset(markerp))); FN_GLPOLLASYNCSGIX(markerp); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglPollInstrumentsSGIX(memptr marker_p) #else GLint OSMesaDriver::nfglPollInstrumentsSGIX(GLint *marker_p) #endif { D(bug("nfosmesa: glPollInstrumentsSGIX(" PRI_PTR ")", AtariOffset(marker_p))); FN_GLPOLLINSTRUMENTSSGIX(marker_p); } void OSMesaDriver::nfglPolygonMode(GLenum face, GLenum mode) { D(bug("nfosmesa: glPolygonMode(%s, %s)", gl_enum_name(face), gl_enum_name(mode))); fn.glPolygonMode(face, mode); } void OSMesaDriver::nfglPolygonOffset(GLfloat factor, GLfloat units) { D(bug("nfosmesa: glPolygonOffset(%f, %f)", factor, units)); fn.glPolygonOffset(factor, units); } void OSMesaDriver::nfglPolygonOffsetClamp(GLfloat factor, GLfloat units, GLfloat clamp) { D(bug("nfosmesa: glPolygonOffsetClamp(%f, %f, %f)", factor, units, clamp)); fn.glPolygonOffsetClamp(factor, units, clamp); } void OSMesaDriver::nfglPolygonOffsetClampEXT(GLfloat factor, GLfloat units, GLfloat clamp) { D(bug("nfosmesa: glPolygonOffsetClampEXT(%f, %f, %f)", factor, units, clamp)); fn.glPolygonOffsetClampEXT(factor, units, clamp); } void OSMesaDriver::nfglPolygonOffsetEXT(GLfloat factor, GLfloat bias) { D(bug("nfosmesa: glPolygonOffsetEXT(%f, %f)", factor, bias)); fn.glPolygonOffsetEXT(factor, bias); } void OSMesaDriver::nfglPolygonOffsetxOES(GLfixed factor, GLfixed units) { D(bug("nfosmesa: glPolygonOffsetxOES(0x%x, 0x%x)", factor, units)); fn.glPolygonOffsetxOES(factor, units); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPolygonStipple(memptr mask) #else void OSMesaDriver::nfglPolygonStipple(const GLubyte *mask) #endif { D(bug("nfosmesa: glPolygonStipple(" PRI_PTR ")", AtariOffset(mask))); FN_GLPOLYGONSTIPPLE(mask); } void OSMesaDriver::nfglPopAttrib(void) { D(bug("nfosmesa: glPopAttrib()")); fn.glPopAttrib(); } void OSMesaDriver::nfglPopClientAttrib(void) { D(bug("nfosmesa: glPopClientAttrib()")); fn.glPopClientAttrib(); } void OSMesaDriver::nfglPopDebugGroup(void) { D(bug("nfosmesa: glPopDebugGroup()")); fn.glPopDebugGroup(); } void OSMesaDriver::nfglPopGroupMarkerEXT(void) { D(bug("nfosmesa: glPopGroupMarkerEXT()")); fn.glPopGroupMarkerEXT(); } void OSMesaDriver::nfglPopMatrix(void) { D(bug("nfosmesa: glPopMatrix()")); fn.glPopMatrix(); } void OSMesaDriver::nfglPopName(void) { D(bug("nfosmesa: glPopName()")); fn.glPopName(); } void OSMesaDriver::nfglPresentFrameDualFillNV(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3) { D(bug("nfosmesa: glPresentFrameDualFillNV(%u, %" PRIu64 ", %u, %u, %s, %s, %u, %s, %u, %s, %u, %s, %u)", video_slot, minPresentTime, beginPresentTimeId, presentDurationId, gl_enum_name(type), gl_enum_name(target0), fill0, gl_enum_name(target1), fill1, gl_enum_name(target2), fill2, gl_enum_name(target3), fill3)); fn.glPresentFrameDualFillNV(video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, target1, fill1, target2, fill2, target3, fill3); } void OSMesaDriver::nfglPresentFrameKeyedNV(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1) { D(bug("nfosmesa: glPresentFrameKeyedNV(%u, %" PRIu64 ", %u, %u, %s, %s, %u, %u, %s, %u, %u)", video_slot, minPresentTime, beginPresentTimeId, presentDurationId, gl_enum_name(type), gl_enum_name(target0), fill0, key0, gl_enum_name(target1), fill1, key1)); fn.glPresentFrameKeyedNV(video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, key0, target1, fill1, key1); } void OSMesaDriver::nfglPrimitiveBoundingBoxARB(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW) { D(bug("nfosmesa: glPrimitiveBoundingBoxARB(%f, %f, %f, %f, %f, %f, %f, %f)", minX, minY, minZ, minW, maxX, maxY, maxZ, maxW)); fn.glPrimitiveBoundingBoxARB(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW); } void OSMesaDriver::nfglPrimitiveRestartIndex(GLuint index) { D(bug("nfosmesa: glPrimitiveRestartIndex(%u)", index)); fn.glPrimitiveRestartIndex(index); } void OSMesaDriver::nfglPrimitiveRestartIndexNV(GLuint index) { D(bug("nfosmesa: glPrimitiveRestartIndexNV(%u)", index)); fn.glPrimitiveRestartIndexNV(index); } void OSMesaDriver::nfglPrimitiveRestartNV(void) { D(bug("nfosmesa: glPrimitiveRestartNV()")); fn.glPrimitiveRestartNV(); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPrioritizeTextures(GLsizei n, memptr textures, memptr priorities) #else void OSMesaDriver::nfglPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities) #endif { D(bug("nfosmesa: glPrioritizeTextures(%d, " PRI_PTR ", " PRI_PTR ")", n, AtariOffset(textures), AtariOffset(priorities))); FN_GLPRIORITIZETEXTURES(n, textures, priorities); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPrioritizeTexturesEXT(GLsizei n, memptr textures, memptr priorities) #else void OSMesaDriver::nfglPrioritizeTexturesEXT(GLsizei n, const GLuint *textures, const GLclampf *priorities) #endif { D(bug("nfosmesa: glPrioritizeTexturesEXT(%d, " PRI_PTR ", " PRI_PTR ")", n, AtariOffset(textures), AtariOffset(priorities))); FN_GLPRIORITIZETEXTURESEXT(n, textures, priorities); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPrioritizeTexturesxOES(GLsizei n, memptr textures, memptr priorities) #else void OSMesaDriver::nfglPrioritizeTexturesxOES(GLsizei n, const GLuint *textures, const GLfixed *priorities) #endif { D(bug("nfosmesa: glPrioritizeTexturesxOES(%d, " PRI_PTR ", " PRI_PTR ")", n, AtariOffset(textures), AtariOffset(priorities))); FN_GLPRIORITIZETEXTURESXOES(n, textures, priorities); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramBinary(GLuint program, GLenum binaryFormat, memptr binary, GLsizei length) #else void OSMesaDriver::nfglProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length) #endif { D(bug("nfosmesa: glProgramBinary(%u, %s, " PRI_PTR ", %d)", program, gl_enum_name(binaryFormat), AtariOffset(binary), length)); FN_GLPROGRAMBINARY(program, binaryFormat, binary, length); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramBufferParametersIivNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, memptr params) #else void OSMesaDriver::nfglProgramBufferParametersIivNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params) #endif { D(bug("nfosmesa: glProgramBufferParametersIivNV(%s, %u, %u, %d, " PRI_PTR ")", gl_enum_name(target), bindingIndex, wordIndex, count, AtariOffset(params))); FN_GLPROGRAMBUFFERPARAMETERSIIVNV(target, bindingIndex, wordIndex, count, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramBufferParametersIuivNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, memptr params) #else void OSMesaDriver::nfglProgramBufferParametersIuivNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params) #endif { D(bug("nfosmesa: glProgramBufferParametersIuivNV(%s, %u, %u, %d, " PRI_PTR ")", gl_enum_name(target), bindingIndex, wordIndex, count, AtariOffset(params))); FN_GLPROGRAMBUFFERPARAMETERSIUIVNV(target, bindingIndex, wordIndex, count, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramBufferParametersfvNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, memptr params) #else void OSMesaDriver::nfglProgramBufferParametersfvNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params) #endif { D(bug("nfosmesa: glProgramBufferParametersfvNV(%s, %u, %u, %d, " PRI_PTR ")", gl_enum_name(target), bindingIndex, wordIndex, count, AtariOffset(params))); FN_GLPROGRAMBUFFERPARAMETERSFVNV(target, bindingIndex, wordIndex, count, params); } #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramCallbackMESA(GLenum target, memptr callback, memptr data) #else void OSMesaDriver::nfglProgramCallbackMESA(GLenum target, GLprogramcallbackMESA callback, GLvoid *data) #endif { D(bug("nfosmesa: glProgramCallbackMESA(%s, " PRI_PTR ", " PRI_PTR ")", gl_enum_name(target), AtariOffset(callback), AtariOffset(data))); FN_GLPROGRAMCALLBACKMESA(target, callback, data); } #endif void OSMesaDriver::nfglProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glProgramEnvParameter4dARB(%s, %u, %f, %f, %f, %f)", gl_enum_name(target), index, x, y, z, w)); fn.glProgramEnvParameter4dARB(target, index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramEnvParameter4dvARB(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglProgramEnvParameter4dvARB(GLenum target, GLuint index, const GLdouble *params) #endif { D(bug("nfosmesa: glProgramEnvParameter4dvARB(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLPROGRAMENVPARAMETER4DVARB(target, index, params); } void OSMesaDriver::nfglProgramEnvParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { D(bug("nfosmesa: glProgramEnvParameter4fARB(%s, %u, %f, %f, %f, %f)", gl_enum_name(target), index, x, y, z, w)); fn.glProgramEnvParameter4fARB(target, index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramEnvParameter4fvARB(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglProgramEnvParameter4fvARB(GLenum target, GLuint index, const GLfloat *params) #endif { D(bug("nfosmesa: glProgramEnvParameter4fvARB(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLPROGRAMENVPARAMETER4FVARB(target, index, params); } void OSMesaDriver::nfglProgramEnvParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w) { D(bug("nfosmesa: glProgramEnvParameterI4iNV(%s, %u, %d, %d, %d, %d)", gl_enum_name(target), index, x, y, z, w)); fn.glProgramEnvParameterI4iNV(target, index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramEnvParameterI4ivNV(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglProgramEnvParameterI4ivNV(GLenum target, GLuint index, const GLint *params) #endif { D(bug("nfosmesa: glProgramEnvParameterI4ivNV(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLPROGRAMENVPARAMETERI4IVNV(target, index, params); } void OSMesaDriver::nfglProgramEnvParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) { D(bug("nfosmesa: glProgramEnvParameterI4uiNV(%s, %u, %u, %u, %u, %u)", gl_enum_name(target), index, x, y, z, w)); fn.glProgramEnvParameterI4uiNV(target, index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramEnvParameterI4uivNV(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglProgramEnvParameterI4uivNV(GLenum target, GLuint index, const GLuint *params) #endif { D(bug("nfosmesa: glProgramEnvParameterI4uivNV(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLPROGRAMENVPARAMETERI4UIVNV(target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramEnvParameters4fvEXT(GLenum target, GLuint index, GLsizei count, memptr params) #else void OSMesaDriver::nfglProgramEnvParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat *params) #endif { D(bug("nfosmesa: glProgramEnvParameters4fvEXT(%s, %u, %d, " PRI_PTR ")", gl_enum_name(target), index, count, AtariOffset(params))); FN_GLPROGRAMENVPARAMETERS4FVEXT(target, index, count, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramEnvParametersI4ivNV(GLenum target, GLuint index, GLsizei count, memptr params) #else void OSMesaDriver::nfglProgramEnvParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint *params) #endif { D(bug("nfosmesa: glProgramEnvParametersI4ivNV(%s, %u, %d, " PRI_PTR ")", gl_enum_name(target), index, count, AtariOffset(params))); FN_GLPROGRAMENVPARAMETERSI4IVNV(target, index, count, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramEnvParametersI4uivNV(GLenum target, GLuint index, GLsizei count, memptr params) #else void OSMesaDriver::nfglProgramEnvParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint *params) #endif { D(bug("nfosmesa: glProgramEnvParametersI4uivNV(%s, %u, %d, " PRI_PTR ")", gl_enum_name(target), index, count, AtariOffset(params))); FN_GLPROGRAMENVPARAMETERSI4UIVNV(target, index, count, params); } void OSMesaDriver::nfglProgramLocalParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glProgramLocalParameter4dARB(%s, %u, %f, %f, %f, %f)", gl_enum_name(target), index, x, y, z, w)); fn.glProgramLocalParameter4dARB(target, index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramLocalParameter4dvARB(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglProgramLocalParameter4dvARB(GLenum target, GLuint index, const GLdouble *params) #endif { D(bug("nfosmesa: glProgramLocalParameter4dvARB(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLPROGRAMLOCALPARAMETER4DVARB(target, index, params); } void OSMesaDriver::nfglProgramLocalParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { D(bug("nfosmesa: glProgramLocalParameter4fARB(%s, %u, %f, %f, %f, %f)", gl_enum_name(target), index, x, y, z, w)); fn.glProgramLocalParameter4fARB(target, index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramLocalParameter4fvARB(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglProgramLocalParameter4fvARB(GLenum target, GLuint index, const GLfloat *params) #endif { D(bug("nfosmesa: glProgramLocalParameter4fvARB(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLPROGRAMLOCALPARAMETER4FVARB(target, index, params); } void OSMesaDriver::nfglProgramLocalParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w) { D(bug("nfosmesa: glProgramLocalParameterI4iNV(%s, %u, %d, %d, %d, %d)", gl_enum_name(target), index, x, y, z, w)); fn.glProgramLocalParameterI4iNV(target, index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramLocalParameterI4ivNV(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglProgramLocalParameterI4ivNV(GLenum target, GLuint index, const GLint *params) #endif { D(bug("nfosmesa: glProgramLocalParameterI4ivNV(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLPROGRAMLOCALPARAMETERI4IVNV(target, index, params); } void OSMesaDriver::nfglProgramLocalParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) { D(bug("nfosmesa: glProgramLocalParameterI4uiNV(%s, %u, %u, %u, %u, %u)", gl_enum_name(target), index, x, y, z, w)); fn.glProgramLocalParameterI4uiNV(target, index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramLocalParameterI4uivNV(GLenum target, GLuint index, memptr params) #else void OSMesaDriver::nfglProgramLocalParameterI4uivNV(GLenum target, GLuint index, const GLuint *params) #endif { D(bug("nfosmesa: glProgramLocalParameterI4uivNV(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(params))); FN_GLPROGRAMLOCALPARAMETERI4UIVNV(target, index, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count, memptr params) #else void OSMesaDriver::nfglProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat *params) #endif { D(bug("nfosmesa: glProgramLocalParameters4fvEXT(%s, %u, %d, " PRI_PTR ")", gl_enum_name(target), index, count, AtariOffset(params))); FN_GLPROGRAMLOCALPARAMETERS4FVEXT(target, index, count, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramLocalParametersI4ivNV(GLenum target, GLuint index, GLsizei count, memptr params) #else void OSMesaDriver::nfglProgramLocalParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint *params) #endif { D(bug("nfosmesa: glProgramLocalParametersI4ivNV(%s, %u, %d, " PRI_PTR ")", gl_enum_name(target), index, count, AtariOffset(params))); FN_GLPROGRAMLOCALPARAMETERSI4IVNV(target, index, count, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramLocalParametersI4uivNV(GLenum target, GLuint index, GLsizei count, memptr params) #else void OSMesaDriver::nfglProgramLocalParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint *params) #endif { D(bug("nfosmesa: glProgramLocalParametersI4uivNV(%s, %u, %d, " PRI_PTR ")", gl_enum_name(target), index, count, AtariOffset(params))); FN_GLPROGRAMLOCALPARAMETERSI4UIVNV(target, index, count, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramNamedParameter4dNV(GLuint id, GLsizei len, memptr name, GLdouble x, GLdouble y, GLdouble z, GLdouble w) #else void OSMesaDriver::nfglProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w) #endif { D(bug("nfosmesa: glProgramNamedParameter4dNV(%u, %d, " PRI_PTR ", %f, %f, %f, %f)", id, len, AtariOffset(name), x, y, z, w)); FN_GLPROGRAMNAMEDPARAMETER4DNV(id, len, name, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramNamedParameter4dvNV(GLuint id, GLsizei len, memptr name, memptr v) #else void OSMesaDriver::nfglProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v) #endif { D(bug("nfosmesa: glProgramNamedParameter4dvNV(%u, %d, " PRI_PTR ", " PRI_PTR ")", id, len, AtariOffset(name), AtariOffset(v))); FN_GLPROGRAMNAMEDPARAMETER4DVNV(id, len, name, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramNamedParameter4fNV(GLuint id, GLsizei len, memptr name, GLfloat x, GLfloat y, GLfloat z, GLfloat w) #else void OSMesaDriver::nfglProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w) #endif { D(bug("nfosmesa: glProgramNamedParameter4fNV(%u, %d, " PRI_PTR ", %f, %f, %f, %f)", id, len, AtariOffset(name), x, y, z, w)); FN_GLPROGRAMNAMEDPARAMETER4FNV(id, len, name, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramNamedParameter4fvNV(GLuint id, GLsizei len, memptr name, memptr v) #else void OSMesaDriver::nfglProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v) #endif { D(bug("nfosmesa: glProgramNamedParameter4fvNV(%u, %d, " PRI_PTR ", " PRI_PTR ")", id, len, AtariOffset(name), AtariOffset(v))); FN_GLPROGRAMNAMEDPARAMETER4FVNV(id, len, name, v); } void OSMesaDriver::nfglProgramParameter4dNV(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glProgramParameter4dNV(%s, %u, %f, %f, %f, %f)", gl_enum_name(target), index, x, y, z, w)); fn.glProgramParameter4dNV(target, index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramParameter4dvNV(GLenum target, GLuint index, memptr v) #else void OSMesaDriver::nfglProgramParameter4dvNV(GLenum target, GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glProgramParameter4dvNV(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(v))); FN_GLPROGRAMPARAMETER4DVNV(target, index, v); } void OSMesaDriver::nfglProgramParameter4fNV(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { D(bug("nfosmesa: glProgramParameter4fNV(%s, %u, %f, %f, %f, %f)", gl_enum_name(target), index, x, y, z, w)); fn.glProgramParameter4fNV(target, index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramParameter4fvNV(GLenum target, GLuint index, memptr v) #else void OSMesaDriver::nfglProgramParameter4fvNV(GLenum target, GLuint index, const GLfloat *v) #endif { D(bug("nfosmesa: glProgramParameter4fvNV(%s, %u, " PRI_PTR ")", gl_enum_name(target), index, AtariOffset(v))); FN_GLPROGRAMPARAMETER4FVNV(target, index, v); } void OSMesaDriver::nfglProgramParameteri(GLuint program, GLenum pname, GLint value) { D(bug("nfosmesa: glProgramParameteri(%u, %s, %d)", program, gl_enum_name(pname), value)); fn.glProgramParameteri(program, pname, value); } void OSMesaDriver::nfglProgramParameteriARB(GLuint program, GLenum pname, GLint value) { D(bug("nfosmesa: glProgramParameteriARB(%u, %s, %d)", program, gl_enum_name(pname), value)); fn.glProgramParameteriARB(program, pname, value); } void OSMesaDriver::nfglProgramParameteriEXT(GLuint program, GLenum pname, GLint value) { D(bug("nfosmesa: glProgramParameteriEXT(%u, %s, %d)", program, gl_enum_name(pname), value)); fn.glProgramParameteriEXT(program, pname, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramParameters4dvNV(GLenum target, GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglProgramParameters4dvNV(GLenum target, GLuint index, GLsizei count, const GLdouble *v) #endif { D(bug("nfosmesa: glProgramParameters4dvNV(%s, %u, %d, " PRI_PTR ")", gl_enum_name(target), index, count, AtariOffset(v))); FN_GLPROGRAMPARAMETERS4DVNV(target, index, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramParameters4fvNV(GLenum target, GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglProgramParameters4fvNV(GLenum target, GLuint index, GLsizei count, const GLfloat *v) #endif { D(bug("nfosmesa: glProgramParameters4fvNV(%s, %u, %d, " PRI_PTR ")", gl_enum_name(target), index, count, AtariOffset(v))); FN_GLPROGRAMPARAMETERS4FVNV(target, index, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramPathFragmentInputGenNV(GLuint program, GLint location, GLenum genMode, GLint components, memptr coeffs) #else void OSMesaDriver::nfglProgramPathFragmentInputGenNV(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs) #endif { D(bug("nfosmesa: glProgramPathFragmentInputGenNV(%u, %d, %s, %d, " PRI_PTR ")", program, location, gl_enum_name(genMode), components, AtariOffset(coeffs))); FN_GLPROGRAMPATHFRAGMENTINPUTGENNV(program, location, genMode, components, coeffs); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramStringARB(GLenum target, GLenum format, GLsizei len, memptr string) #else void OSMesaDriver::nfglProgramStringARB(GLenum target, GLenum format, GLsizei len, const void *string) #endif { D(bug("nfosmesa: glProgramStringARB(%s, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(format), len, AtariOffset(string))); FN_GLPROGRAMSTRINGARB(target, format, len, string); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramSubroutineParametersuivNV(GLenum target, GLsizei count, memptr params) #else void OSMesaDriver::nfglProgramSubroutineParametersuivNV(GLenum target, GLsizei count, const GLuint *params) #endif { D(bug("nfosmesa: glProgramSubroutineParametersuivNV(%s, %d, " PRI_PTR ")", gl_enum_name(target), count, AtariOffset(params))); FN_GLPROGRAMSUBROUTINEPARAMETERSUIVNV(target, count, params); } void OSMesaDriver::nfglProgramUniform1d(GLuint program, GLint location, GLdouble v0) { D(bug("nfosmesa: glProgramUniform1d(%u, %d, %f)", program, location, v0)); fn.glProgramUniform1d(program, location, v0); } void OSMesaDriver::nfglProgramUniform1dEXT(GLuint program, GLint location, GLdouble x) { D(bug("nfosmesa: glProgramUniform1dEXT(%u, %d, %f)", program, location, x)); fn.glProgramUniform1dEXT(program, location, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform1dv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniform1dv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM1DV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform1dvEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform1dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniform1dvEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM1DVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform1f(GLuint program, GLint location, GLfloat v0) { D(bug("nfosmesa: glProgramUniform1f(%u, %d, %f)", program, location, v0)); fn.glProgramUniform1f(program, location, v0); } void OSMesaDriver::nfglProgramUniform1fEXT(GLuint program, GLint location, GLfloat v0) { D(bug("nfosmesa: glProgramUniform1fEXT(%u, %d, %f)", program, location, v0)); fn.glProgramUniform1fEXT(program, location, v0); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform1fv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniform1fv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM1FV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniform1fvEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM1FVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform1i(GLuint program, GLint location, GLint v0) { D(bug("nfosmesa: glProgramUniform1i(%u, %d, %d)", program, location, v0)); fn.glProgramUniform1i(program, location, v0); } void OSMesaDriver::nfglProgramUniform1i64ARB(GLuint program, GLint location, GLint64 x) { D(bug("nfosmesa: glProgramUniform1i64ARB(%u, %d, %" PRId64 ")", program, location, x)); fn.glProgramUniform1i64ARB(program, location, x); } void OSMesaDriver::nfglProgramUniform1i64NV(GLuint program, GLint location, GLint64EXT x) { D(bug("nfosmesa: glProgramUniform1i64NV(%u, %d, %" PRId64 ")", program, location, x)); fn.glProgramUniform1i64NV(program, location, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform1i64vARB(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform1i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value) #endif { D(bug("nfosmesa: glProgramUniform1i64vARB(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(1 * count, 0); GLint64 __value_tmp[__value_size]; GLint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform1i64vARB(program, location, count, __value_ptmp); #else fn.glProgramUniform1i64vARB(program, location, count, HostAddr(value, const GLint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform1i64vNV(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform1i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) #endif { D(bug("nfosmesa: glProgramUniform1i64vNV(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(1 * count, 0); GLint64EXT __value_tmp[__value_size]; GLint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform1i64vNV(program, location, count, __value_ptmp); #else fn.glProgramUniform1i64vNV(program, location, count, HostAddr(value, const GLint64EXT *)); #endif } void OSMesaDriver::nfglProgramUniform1iEXT(GLuint program, GLint location, GLint v0) { D(bug("nfosmesa: glProgramUniform1iEXT(%u, %d, %d)", program, location, v0)); fn.glProgramUniform1iEXT(program, location, v0); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform1iv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glProgramUniform1iv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM1IV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glProgramUniform1ivEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM1IVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform1ui(GLuint program, GLint location, GLuint v0) { D(bug("nfosmesa: glProgramUniform1ui(%u, %d, %u)", program, location, v0)); fn.glProgramUniform1ui(program, location, v0); } void OSMesaDriver::nfglProgramUniform1ui64ARB(GLuint program, GLint location, GLuint64 x) { D(bug("nfosmesa: glProgramUniform1ui64ARB(%u, %d, %" PRIu64 ")", program, location, x)); fn.glProgramUniform1ui64ARB(program, location, x); } void OSMesaDriver::nfglProgramUniform1ui64NV(GLuint program, GLint location, GLuint64EXT x) { D(bug("nfosmesa: glProgramUniform1ui64NV(%u, %d, %" PRIu64 ")", program, location, x)); fn.glProgramUniform1ui64NV(program, location, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform1ui64vARB(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform1ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value) #endif { D(bug("nfosmesa: glProgramUniform1ui64vARB(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(1 * count, 0); GLuint64 __value_tmp[__value_size]; GLuint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform1ui64vARB(program, location, count, __value_ptmp); #else fn.glProgramUniform1ui64vARB(program, location, count, HostAddr(value, const GLuint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform1ui64vNV(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform1ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) #endif { D(bug("nfosmesa: glProgramUniform1ui64vNV(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(1 * count, 0); GLuint64EXT __value_tmp[__value_size]; GLuint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform1ui64vNV(program, location, count, __value_ptmp); #else fn.glProgramUniform1ui64vNV(program, location, count, HostAddr(value, const GLuint64EXT *)); #endif } void OSMesaDriver::nfglProgramUniform1uiEXT(GLuint program, GLint location, GLuint v0) { D(bug("nfosmesa: glProgramUniform1uiEXT(%u, %d, %u)", program, location, v0)); fn.glProgramUniform1uiEXT(program, location, v0); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform1uiv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glProgramUniform1uiv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM1UIV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform1uivEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform1uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glProgramUniform1uivEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM1UIVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) { D(bug("nfosmesa: glProgramUniform2d(%u, %d, %f, %f)", program, location, v0, v1)); fn.glProgramUniform2d(program, location, v0, v1); } void OSMesaDriver::nfglProgramUniform2dEXT(GLuint program, GLint location, GLdouble x, GLdouble y) { D(bug("nfosmesa: glProgramUniform2dEXT(%u, %d, %f, %f)", program, location, x, y)); fn.glProgramUniform2dEXT(program, location, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform2dv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniform2dv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM2DV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform2dvEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform2dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniform2dvEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM2DVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) { D(bug("nfosmesa: glProgramUniform2f(%u, %d, %f, %f)", program, location, v0, v1)); fn.glProgramUniform2f(program, location, v0, v1); } void OSMesaDriver::nfglProgramUniform2fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1) { D(bug("nfosmesa: glProgramUniform2fEXT(%u, %d, %f, %f)", program, location, v0, v1)); fn.glProgramUniform2fEXT(program, location, v0, v1); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform2fv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniform2fv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM2FV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniform2fvEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM2FVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) { D(bug("nfosmesa: glProgramUniform2i(%u, %d, %d, %d)", program, location, v0, v1)); fn.glProgramUniform2i(program, location, v0, v1); } void OSMesaDriver::nfglProgramUniform2i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y) { D(bug("nfosmesa: glProgramUniform2i64ARB(%u, %d, %" PRId64 ", %" PRId64 ")", program, location, x, y)); fn.glProgramUniform2i64ARB(program, location, x, y); } void OSMesaDriver::nfglProgramUniform2i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y) { D(bug("nfosmesa: glProgramUniform2i64NV(%u, %d, %" PRId64 ", %" PRId64 ")", program, location, x, y)); fn.glProgramUniform2i64NV(program, location, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform2i64vARB(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform2i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value) #endif { D(bug("nfosmesa: glProgramUniform2i64vARB(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(2 * count, 0); GLint64 __value_tmp[__value_size]; GLint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform2i64vARB(program, location, count, __value_ptmp); #else fn.glProgramUniform2i64vARB(program, location, count, HostAddr(value, const GLint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform2i64vNV(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform2i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) #endif { D(bug("nfosmesa: glProgramUniform2i64vNV(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(2 * count, 0); GLint64EXT __value_tmp[__value_size]; GLint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform2i64vNV(program, location, count, __value_ptmp); #else fn.glProgramUniform2i64vNV(program, location, count, HostAddr(value, const GLint64EXT *)); #endif } void OSMesaDriver::nfglProgramUniform2iEXT(GLuint program, GLint location, GLint v0, GLint v1) { D(bug("nfosmesa: glProgramUniform2iEXT(%u, %d, %d, %d)", program, location, v0, v1)); fn.glProgramUniform2iEXT(program, location, v0, v1); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform2iv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glProgramUniform2iv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM2IV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glProgramUniform2ivEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM2IVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) { D(bug("nfosmesa: glProgramUniform2ui(%u, %d, %u, %u)", program, location, v0, v1)); fn.glProgramUniform2ui(program, location, v0, v1); } void OSMesaDriver::nfglProgramUniform2ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y) { D(bug("nfosmesa: glProgramUniform2ui64ARB(%u, %d, %" PRIu64 ", %" PRIu64 ")", program, location, x, y)); fn.glProgramUniform2ui64ARB(program, location, x, y); } void OSMesaDriver::nfglProgramUniform2ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y) { D(bug("nfosmesa: glProgramUniform2ui64NV(%u, %d, %" PRIu64 ", %" PRIu64 ")", program, location, x, y)); fn.glProgramUniform2ui64NV(program, location, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform2ui64vARB(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform2ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value) #endif { D(bug("nfosmesa: glProgramUniform2ui64vARB(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(2 * count, 0); GLuint64 __value_tmp[__value_size]; GLuint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform2ui64vARB(program, location, count, __value_ptmp); #else fn.glProgramUniform2ui64vARB(program, location, count, HostAddr(value, const GLuint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform2ui64vNV(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform2ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) #endif { D(bug("nfosmesa: glProgramUniform2ui64vNV(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(2 * count, 0); GLuint64EXT __value_tmp[__value_size]; GLuint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform2ui64vNV(program, location, count, __value_ptmp); #else fn.glProgramUniform2ui64vNV(program, location, count, HostAddr(value, const GLuint64EXT *)); #endif } void OSMesaDriver::nfglProgramUniform2uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1) { D(bug("nfosmesa: glProgramUniform2uiEXT(%u, %d, %u, %u)", program, location, v0, v1)); fn.glProgramUniform2uiEXT(program, location, v0, v1); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform2uiv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glProgramUniform2uiv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM2UIV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform2uivEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform2uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glProgramUniform2uivEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM2UIVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) { D(bug("nfosmesa: glProgramUniform3d(%u, %d, %f, %f, %f)", program, location, v0, v1, v2)); fn.glProgramUniform3d(program, location, v0, v1, v2); } void OSMesaDriver::nfglProgramUniform3dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glProgramUniform3dEXT(%u, %d, %f, %f, %f)", program, location, x, y, z)); fn.glProgramUniform3dEXT(program, location, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform3dv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniform3dv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM3DV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform3dvEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform3dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniform3dvEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM3DVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) { D(bug("nfosmesa: glProgramUniform3f(%u, %d, %f, %f, %f)", program, location, v0, v1, v2)); fn.glProgramUniform3f(program, location, v0, v1, v2); } void OSMesaDriver::nfglProgramUniform3fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) { D(bug("nfosmesa: glProgramUniform3fEXT(%u, %d, %f, %f, %f)", program, location, v0, v1, v2)); fn.glProgramUniform3fEXT(program, location, v0, v1, v2); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform3fv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniform3fv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM3FV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniform3fvEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM3FVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) { D(bug("nfosmesa: glProgramUniform3i(%u, %d, %d, %d, %d)", program, location, v0, v1, v2)); fn.glProgramUniform3i(program, location, v0, v1, v2); } void OSMesaDriver::nfglProgramUniform3i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z) { D(bug("nfosmesa: glProgramUniform3i64ARB(%u, %d, %" PRId64 ", %" PRId64 ", %" PRId64 ")", program, location, x, y, z)); fn.glProgramUniform3i64ARB(program, location, x, y, z); } void OSMesaDriver::nfglProgramUniform3i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) { D(bug("nfosmesa: glProgramUniform3i64NV(%u, %d, %" PRId64 ", %" PRId64 ", %" PRId64 ")", program, location, x, y, z)); fn.glProgramUniform3i64NV(program, location, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform3i64vARB(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform3i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value) #endif { D(bug("nfosmesa: glProgramUniform3i64vARB(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(3 * count, 0); GLint64 __value_tmp[__value_size]; GLint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform3i64vARB(program, location, count, __value_ptmp); #else fn.glProgramUniform3i64vARB(program, location, count, HostAddr(value, const GLint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform3i64vNV(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform3i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) #endif { D(bug("nfosmesa: glProgramUniform3i64vNV(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(3 * count, 0); GLint64EXT __value_tmp[__value_size]; GLint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform3i64vNV(program, location, count, __value_ptmp); #else fn.glProgramUniform3i64vNV(program, location, count, HostAddr(value, const GLint64EXT *)); #endif } void OSMesaDriver::nfglProgramUniform3iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) { D(bug("nfosmesa: glProgramUniform3iEXT(%u, %d, %d, %d, %d)", program, location, v0, v1, v2)); fn.glProgramUniform3iEXT(program, location, v0, v1, v2); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform3iv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glProgramUniform3iv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM3IV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glProgramUniform3ivEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM3IVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) { D(bug("nfosmesa: glProgramUniform3ui(%u, %d, %u, %u, %u)", program, location, v0, v1, v2)); fn.glProgramUniform3ui(program, location, v0, v1, v2); } void OSMesaDriver::nfglProgramUniform3ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z) { D(bug("nfosmesa: glProgramUniform3ui64ARB(%u, %d, %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", program, location, x, y, z)); fn.glProgramUniform3ui64ARB(program, location, x, y, z); } void OSMesaDriver::nfglProgramUniform3ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) { D(bug("nfosmesa: glProgramUniform3ui64NV(%u, %d, %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", program, location, x, y, z)); fn.glProgramUniform3ui64NV(program, location, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform3ui64vARB(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform3ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value) #endif { D(bug("nfosmesa: glProgramUniform3ui64vARB(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(3 * count, 0); GLuint64 __value_tmp[__value_size]; GLuint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform3ui64vARB(program, location, count, __value_ptmp); #else fn.glProgramUniform3ui64vARB(program, location, count, HostAddr(value, const GLuint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform3ui64vNV(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform3ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) #endif { D(bug("nfosmesa: glProgramUniform3ui64vNV(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(3 * count, 0); GLuint64EXT __value_tmp[__value_size]; GLuint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform3ui64vNV(program, location, count, __value_ptmp); #else fn.glProgramUniform3ui64vNV(program, location, count, HostAddr(value, const GLuint64EXT *)); #endif } void OSMesaDriver::nfglProgramUniform3uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) { D(bug("nfosmesa: glProgramUniform3uiEXT(%u, %d, %u, %u, %u)", program, location, v0, v1, v2)); fn.glProgramUniform3uiEXT(program, location, v0, v1, v2); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform3uiv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glProgramUniform3uiv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM3UIV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform3uivEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform3uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glProgramUniform3uivEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM3UIVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) { D(bug("nfosmesa: glProgramUniform4d(%u, %d, %f, %f, %f, %f)", program, location, v0, v1, v2, v3)); fn.glProgramUniform4d(program, location, v0, v1, v2, v3); } void OSMesaDriver::nfglProgramUniform4dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glProgramUniform4dEXT(%u, %d, %f, %f, %f, %f)", program, location, x, y, z, w)); fn.glProgramUniform4dEXT(program, location, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform4dv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniform4dv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM4DV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform4dvEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform4dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniform4dvEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM4DVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) { D(bug("nfosmesa: glProgramUniform4f(%u, %d, %f, %f, %f, %f)", program, location, v0, v1, v2, v3)); fn.glProgramUniform4f(program, location, v0, v1, v2, v3); } void OSMesaDriver::nfglProgramUniform4fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) { D(bug("nfosmesa: glProgramUniform4fEXT(%u, %d, %f, %f, %f, %f)", program, location, v0, v1, v2, v3)); fn.glProgramUniform4fEXT(program, location, v0, v1, v2, v3); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform4fv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniform4fv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM4FV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniform4fvEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM4FVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) { D(bug("nfosmesa: glProgramUniform4i(%u, %d, %d, %d, %d, %d)", program, location, v0, v1, v2, v3)); fn.glProgramUniform4i(program, location, v0, v1, v2, v3); } void OSMesaDriver::nfglProgramUniform4i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w) { D(bug("nfosmesa: glProgramUniform4i64ARB(%u, %d, %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", program, location, x, y, z, w)); fn.glProgramUniform4i64ARB(program, location, x, y, z, w); } void OSMesaDriver::nfglProgramUniform4i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) { D(bug("nfosmesa: glProgramUniform4i64NV(%u, %d, %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", program, location, x, y, z, w)); fn.glProgramUniform4i64NV(program, location, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform4i64vARB(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform4i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value) #endif { D(bug("nfosmesa: glProgramUniform4i64vARB(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(4 * count, 0); GLint64 __value_tmp[__value_size]; GLint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform4i64vARB(program, location, count, __value_ptmp); #else fn.glProgramUniform4i64vARB(program, location, count, HostAddr(value, const GLint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform4i64vNV(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform4i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) #endif { D(bug("nfosmesa: glProgramUniform4i64vNV(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(4 * count, 0); GLint64EXT __value_tmp[__value_size]; GLint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform4i64vNV(program, location, count, __value_ptmp); #else fn.glProgramUniform4i64vNV(program, location, count, HostAddr(value, const GLint64EXT *)); #endif } void OSMesaDriver::nfglProgramUniform4iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) { D(bug("nfosmesa: glProgramUniform4iEXT(%u, %d, %d, %d, %d, %d)", program, location, v0, v1, v2, v3)); fn.glProgramUniform4iEXT(program, location, v0, v1, v2, v3); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform4iv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glProgramUniform4iv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM4IV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glProgramUniform4ivEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM4IVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { D(bug("nfosmesa: glProgramUniform4ui(%u, %d, %u, %u, %u, %u)", program, location, v0, v1, v2, v3)); fn.glProgramUniform4ui(program, location, v0, v1, v2, v3); } void OSMesaDriver::nfglProgramUniform4ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w) { D(bug("nfosmesa: glProgramUniform4ui64ARB(%u, %d, %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", program, location, x, y, z, w)); fn.glProgramUniform4ui64ARB(program, location, x, y, z, w); } void OSMesaDriver::nfglProgramUniform4ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) { D(bug("nfosmesa: glProgramUniform4ui64NV(%u, %d, %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", program, location, x, y, z, w)); fn.glProgramUniform4ui64NV(program, location, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform4ui64vARB(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform4ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value) #endif { D(bug("nfosmesa: glProgramUniform4ui64vARB(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(4 * count, 0); GLuint64 __value_tmp[__value_size]; GLuint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform4ui64vARB(program, location, count, __value_ptmp); #else fn.glProgramUniform4ui64vARB(program, location, count, HostAddr(value, const GLuint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform4ui64vNV(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform4ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) #endif { D(bug("nfosmesa: glProgramUniform4ui64vNV(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(4 * count, 0); GLuint64EXT __value_tmp[__value_size]; GLuint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glProgramUniform4ui64vNV(program, location, count, __value_ptmp); #else fn.glProgramUniform4ui64vNV(program, location, count, HostAddr(value, const GLuint64EXT *)); #endif } void OSMesaDriver::nfglProgramUniform4uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { D(bug("nfosmesa: glProgramUniform4uiEXT(%u, %d, %u, %u, %u, %u)", program, location, v0, v1, v2, v3)); fn.glProgramUniform4uiEXT(program, location, v0, v1, v2, v3); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform4uiv(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glProgramUniform4uiv(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM4UIV(program, location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniform4uivEXT(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniform4uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glProgramUniform4uivEXT(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORM4UIVEXT(program, location, count, value); } void OSMesaDriver::nfglProgramUniformHandleui64ARB(GLuint program, GLint location, GLuint64 value) { D(bug("nfosmesa: glProgramUniformHandleui64ARB(%u, %d, %" PRIu64 ")", program, location, value)); fn.glProgramUniformHandleui64ARB(program, location, value); } void OSMesaDriver::nfglProgramUniformHandleui64NV(GLuint program, GLint location, GLuint64 value) { D(bug("nfosmesa: glProgramUniformHandleui64NV(%u, %d, %" PRIu64 ")", program, location, value)); fn.glProgramUniformHandleui64NV(program, location, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformHandleui64vARB(GLuint program, GLint location, GLsizei count, memptr values) #else void OSMesaDriver::nfglProgramUniformHandleui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *values) #endif { D(bug("nfosmesa: glProgramUniformHandleui64vARB(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(values))); FN_GLPROGRAMUNIFORMHANDLEUI64VARB(program, location, count, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformHandleui64vNV(GLuint program, GLint location, GLsizei count, memptr values) #else void OSMesaDriver::nfglProgramUniformHandleui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64 *values) #endif { D(bug("nfosmesa: glProgramUniformHandleui64vNV(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(values))); FN_GLPROGRAMUNIFORMHANDLEUI64VNV(program, location, count, values); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix2dv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX2DV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix2dvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX2DVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix2fv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX2FV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix2fvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX2FVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix2x3dv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX2X3DV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix2x3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix2x3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix2x3dvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX2X3DVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix2x3fv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX2X3FV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix2x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix2x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix2x3fvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX2X3FVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix2x4dv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX2X4DV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix2x4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix2x4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix2x4dvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX2X4DVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix2x4fv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX2X4FV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix2x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix2x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix2x4fvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX2X4FVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix3dv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX3DV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix3dvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX3DVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix3fv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX3FV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix3fvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX3FVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix3x2dv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX3X2DV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix3x2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix3x2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix3x2dvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX3X2DVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix3x2fv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX3X2FV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix3x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix3x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix3x2fvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX3X2FVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix3x4dv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX3X4DV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix3x4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix3x4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix3x4dvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX3X4DVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix3x4fv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX3X4FV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix3x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix3x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix3x4fvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX3X4FVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix4dv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX4DV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix4dvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX4DVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix4fv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX4FV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix4fvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX4FVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix4x2dv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX4X2DV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix4x2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix4x2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix4x2dvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX4X2DVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix4x2fv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX4X2FV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix4x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix4x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix4x2fvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX4X2FVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix4x3dv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX4X3DV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix4x3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix4x3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix4x3dvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX4X3DVEXT(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix4x3fv(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX4X3FV(program, location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformMatrix4x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglProgramUniformMatrix4x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glProgramUniformMatrix4x3fvEXT(%u, %d, %d, %d, " PRI_PTR ")", program, location, count, transpose, AtariOffset(value))); FN_GLPROGRAMUNIFORMMATRIX4X3FVEXT(program, location, count, transpose, value); } void OSMesaDriver::nfglProgramUniformui64NV(GLuint program, GLint location, GLuint64EXT value) { D(bug("nfosmesa: glProgramUniformui64NV(%u, %d, %" PRIu64 ")", program, location, value)); fn.glProgramUniformui64NV(program, location, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglProgramUniformui64vNV(GLuint program, GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglProgramUniformui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) #endif { D(bug("nfosmesa: glProgramUniformui64vNV(%u, %d, %d, " PRI_PTR ")", program, location, count, AtariOffset(value))); FN_GLPROGRAMUNIFORMUI64VNV(program, location, count, value); } void OSMesaDriver::nfglProgramVertexLimitNV(GLenum target, GLint limit) { D(bug("nfosmesa: glProgramVertexLimitNV(%s, %d)", gl_enum_name(target), limit)); fn.glProgramVertexLimitNV(target, limit); } void OSMesaDriver::nfglProvokingVertex(GLenum mode) { D(bug("nfosmesa: glProvokingVertex(%s)", gl_enum_name(mode))); fn.glProvokingVertex(mode); } void OSMesaDriver::nfglProvokingVertexEXT(GLenum mode) { D(bug("nfosmesa: glProvokingVertexEXT(%s)", gl_enum_name(mode))); fn.glProvokingVertexEXT(mode); } void OSMesaDriver::nfglPushAttrib(GLbitfield mask) { D(bug("nfosmesa: glPushAttrib(0x%x)", mask)); fn.glPushAttrib(mask); } void OSMesaDriver::nfglPushClientAttrib(GLbitfield mask) { D(bug("nfosmesa: glPushClientAttrib(0x%x)", mask)); fn.glPushClientAttrib(mask); } void OSMesaDriver::nfglPushClientAttribDefaultEXT(GLbitfield mask) { D(bug("nfosmesa: glPushClientAttribDefaultEXT(0x%x)", mask)); fn.glPushClientAttribDefaultEXT(mask); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPushDebugGroup(GLenum source, GLuint id, GLsizei length, memptr message) #else void OSMesaDriver::nfglPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message) #endif { D(bug("nfosmesa: glPushDebugGroup(%s, %u, %d, " PRI_PTR ")", gl_enum_name(source), id, length, AtariOffset(message))); FN_GLPUSHDEBUGGROUP(source, id, length, message); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglPushGroupMarkerEXT(GLsizei length, memptr marker) #else void OSMesaDriver::nfglPushGroupMarkerEXT(GLsizei length, const GLchar *marker) #endif { D(bug("nfosmesa: glPushGroupMarkerEXT(%d, " PRI_PTR ")", length, AtariOffset(marker))); #if NFOSMESA_NEED_BYTE_CONV GLint const __marker_size = length > 0 ? length : safe_strlen(marker) + 1; GLchar __marker_tmp[__marker_size]; GLchar *__marker_ptmp = Atari2HostByteArray(__marker_size, marker, __marker_tmp); fn.glPushGroupMarkerEXT(length, __marker_ptmp); #else fn.glPushGroupMarkerEXT(length, HostAddr(marker, const GLchar *)); #endif } void OSMesaDriver::nfglPushMatrix(void) { D(bug("nfosmesa: glPushMatrix()")); fn.glPushMatrix(); } void OSMesaDriver::nfglPushName(GLuint name) { D(bug("nfosmesa: glPushName(%u)", name)); fn.glPushName(name); } void OSMesaDriver::nfglQueryCounter(GLuint id, GLenum target) { D(bug("nfosmesa: glQueryCounter(%u, %s)", id, gl_enum_name(target))); fn.glQueryCounter(id, target); } #if NFOSMESA_POINTER_AS_MEMARG GLbitfield OSMesaDriver::nfglQueryMatrixxOES(memptr mantissa, memptr exponent) #else GLbitfield OSMesaDriver::nfglQueryMatrixxOES(GLfixed *mantissa, GLint *exponent) #endif { D(bug("nfosmesa: glQueryMatrixxOES(" PRI_PTR ", " PRI_PTR ")", AtariOffset(mantissa), AtariOffset(exponent))); FN_GLQUERYMATRIXXOES(mantissa, exponent); } void OSMesaDriver::nfglQueryObjectParameteruiAMD(GLenum target, GLuint id, GLenum pname, GLuint param) { D(bug("nfosmesa: glQueryObjectParameteruiAMD(%s, %u, %s, %u)", gl_enum_name(target), id, gl_enum_name(pname), param)); fn.glQueryObjectParameteruiAMD(target, id, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG GLint OSMesaDriver::nfglQueryResourceNV(GLenum queryType, GLint tagId, GLuint bufSize, memptr buffer) #else GLint OSMesaDriver::nfglQueryResourceNV(GLenum queryType, GLint tagId, GLuint bufSize, GLint *buffer) #endif { D(bug("nfosmesa: glQueryResourceNV(%s, %d, %u, " PRI_PTR ")", gl_enum_name(queryType), tagId, bufSize, AtariOffset(buffer))); #if NFOSMESA_NEED_INT_CONV GLint const __buffer_size = MAX(bufSize, 0); GLint __buffer_tmp[__buffer_size]; GLint __ret = fn.glQueryResourceNV(queryType, tagId, bufSize, __buffer_tmp); Host2AtariIntArray(__buffer_size, __buffer_tmp, buffer); #else GLint __ret = fn.glQueryResourceNV(queryType, tagId, bufSize, HostAddr(buffer, GLint *)); #endif return __ret; } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglQueryResourceTagNV(GLint tagId, memptr tagString) #else void OSMesaDriver::nfglQueryResourceTagNV(GLint tagId, const GLchar *tagString) #endif { D(bug("nfosmesa: glQueryResourceTagNV(%d, " PRI_PTR ")", tagId, AtariOffset(tagString))); #if NFOSMESA_NEED_BYTE_CONV GLint const __tagString_size = safe_strlen(tagString) + 1; GLchar __tagString_tmp[__tagString_size]; GLchar *__tagString_ptmp = Atari2HostByteArray(__tagString_size, tagString, __tagString_tmp); fn.glQueryResourceTagNV(tagId, __tagString_ptmp); #else fn.glQueryResourceTagNV(tagId, HostAddr(tagString, const GLchar *)); #endif } void OSMesaDriver::nfglRasterPos2d(GLdouble x, GLdouble y) { D(bug("nfosmesa: glRasterPos2d(%f, %f)", x, y)); fn.glRasterPos2d(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos2dv(memptr v) #else void OSMesaDriver::nfglRasterPos2dv(const GLdouble *v) #endif { D(bug("nfosmesa: glRasterPos2dv(" PRI_PTR ")", AtariOffset(v))); FN_GLRASTERPOS2DV(v); } void OSMesaDriver::nfglRasterPos2f(GLfloat x, GLfloat y) { D(bug("nfosmesa: glRasterPos2f(%f, %f)", x, y)); fn.glRasterPos2f(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos2fv(memptr v) #else void OSMesaDriver::nfglRasterPos2fv(const GLfloat *v) #endif { D(bug("nfosmesa: glRasterPos2fv(" PRI_PTR ")", AtariOffset(v))); FN_GLRASTERPOS2FV(v); } void OSMesaDriver::nfglRasterPos2i(GLint x, GLint y) { D(bug("nfosmesa: glRasterPos2i(%d, %d)", x, y)); fn.glRasterPos2i(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos2iv(memptr v) #else void OSMesaDriver::nfglRasterPos2iv(const GLint *v) #endif { D(bug("nfosmesa: glRasterPos2iv(" PRI_PTR ")", AtariOffset(v))); FN_GLRASTERPOS2IV(v); } void OSMesaDriver::nfglRasterPos2s(GLshort32 x, GLshort32 y) { D(bug("nfosmesa: glRasterPos2s(%d, %d)", x, y)); fn.glRasterPos2s(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos2sv(memptr v) #else void OSMesaDriver::nfglRasterPos2sv(const GLshort *v) #endif { D(bug("nfosmesa: glRasterPos2sv(" PRI_PTR ")", AtariOffset(v))); FN_GLRASTERPOS2SV(v); } void OSMesaDriver::nfglRasterPos2xOES(GLfixed x, GLfixed y) { D(bug("nfosmesa: glRasterPos2xOES(0x%x, 0x%x)", x, y)); fn.glRasterPos2xOES(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos2xvOES(memptr coords) #else void OSMesaDriver::nfglRasterPos2xvOES(const GLfixed *coords) #endif { D(bug("nfosmesa: glRasterPos2xvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLRASTERPOS2XVOES(coords); } void OSMesaDriver::nfglRasterPos3d(GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glRasterPos3d(%f, %f, %f)", x, y, z)); fn.glRasterPos3d(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos3dv(memptr v) #else void OSMesaDriver::nfglRasterPos3dv(const GLdouble *v) #endif { D(bug("nfosmesa: glRasterPos3dv(" PRI_PTR ")", AtariOffset(v))); FN_GLRASTERPOS3DV(v); } void OSMesaDriver::nfglRasterPos3f(GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glRasterPos3f(%f, %f, %f)", x, y, z)); fn.glRasterPos3f(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos3fv(memptr v) #else void OSMesaDriver::nfglRasterPos3fv(const GLfloat *v) #endif { D(bug("nfosmesa: glRasterPos3fv(" PRI_PTR ")", AtariOffset(v))); FN_GLRASTERPOS3FV(v); } void OSMesaDriver::nfglRasterPos3i(GLint x, GLint y, GLint z) { D(bug("nfosmesa: glRasterPos3i(%d, %d, %d)", x, y, z)); fn.glRasterPos3i(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos3iv(memptr v) #else void OSMesaDriver::nfglRasterPos3iv(const GLint *v) #endif { D(bug("nfosmesa: glRasterPos3iv(" PRI_PTR ")", AtariOffset(v))); FN_GLRASTERPOS3IV(v); } void OSMesaDriver::nfglRasterPos3s(GLshort32 x, GLshort32 y, GLshort32 z) { D(bug("nfosmesa: glRasterPos3s(%d, %d, %d)", x, y, z)); fn.glRasterPos3s(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos3sv(memptr v) #else void OSMesaDriver::nfglRasterPos3sv(const GLshort *v) #endif { D(bug("nfosmesa: glRasterPos3sv(" PRI_PTR ")", AtariOffset(v))); FN_GLRASTERPOS3SV(v); } void OSMesaDriver::nfglRasterPos3xOES(GLfixed x, GLfixed y, GLfixed z) { D(bug("nfosmesa: glRasterPos3xOES(0x%x, 0x%x, 0x%x)", x, y, z)); fn.glRasterPos3xOES(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos3xvOES(memptr coords) #else void OSMesaDriver::nfglRasterPos3xvOES(const GLfixed *coords) #endif { D(bug("nfosmesa: glRasterPos3xvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLRASTERPOS3XVOES(coords); } void OSMesaDriver::nfglRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glRasterPos4d(%f, %f, %f, %f)", x, y, z, w)); fn.glRasterPos4d(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos4dv(memptr v) #else void OSMesaDriver::nfglRasterPos4dv(const GLdouble *v) #endif { D(bug("nfosmesa: glRasterPos4dv(" PRI_PTR ")", AtariOffset(v))); FN_GLRASTERPOS4DV(v); } void OSMesaDriver::nfglRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { D(bug("nfosmesa: glRasterPos4f(%f, %f, %f, %f)", x, y, z, w)); fn.glRasterPos4f(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos4fv(memptr v) #else void OSMesaDriver::nfglRasterPos4fv(const GLfloat *v) #endif { D(bug("nfosmesa: glRasterPos4fv(" PRI_PTR ")", AtariOffset(v))); FN_GLRASTERPOS4FV(v); } void OSMesaDriver::nfglRasterPos4i(GLint x, GLint y, GLint z, GLint w) { D(bug("nfosmesa: glRasterPos4i(%d, %d, %d, %d)", x, y, z, w)); fn.glRasterPos4i(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos4iv(memptr v) #else void OSMesaDriver::nfglRasterPos4iv(const GLint *v) #endif { D(bug("nfosmesa: glRasterPos4iv(" PRI_PTR ")", AtariOffset(v))); FN_GLRASTERPOS4IV(v); } void OSMesaDriver::nfglRasterPos4s(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w) { D(bug("nfosmesa: glRasterPos4s(%d, %d, %d, %d)", x, y, z, w)); fn.glRasterPos4s(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos4sv(memptr v) #else void OSMesaDriver::nfglRasterPos4sv(const GLshort *v) #endif { D(bug("nfosmesa: glRasterPos4sv(" PRI_PTR ")", AtariOffset(v))); FN_GLRASTERPOS4SV(v); } void OSMesaDriver::nfglRasterPos4xOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w) { D(bug("nfosmesa: glRasterPos4xOES(0x%x, 0x%x, 0x%x, 0x%x)", x, y, z, w)); fn.glRasterPos4xOES(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRasterPos4xvOES(memptr coords) #else void OSMesaDriver::nfglRasterPos4xvOES(const GLfixed *coords) #endif { D(bug("nfosmesa: glRasterPos4xvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLRASTERPOS4XVOES(coords); } void OSMesaDriver::nfglRasterSamplesEXT(GLuint samples, GLboolean32 fixedsamplelocations) { D(bug("nfosmesa: glRasterSamplesEXT(%u, %d)", samples, fixedsamplelocations)); fn.glRasterSamplesEXT(samples, fixedsamplelocations); } void OSMesaDriver::nfglReadBuffer(GLenum mode) { D(bug("nfosmesa: glReadBuffer(%s)", gl_enum_name(mode))); fn.glReadBuffer(mode); } void OSMesaDriver::nfglReadInstrumentsSGIX(GLint marker) { D(bug("nfosmesa: glReadInstrumentsSGIX(%d)", marker)); fn.glReadInstrumentsSGIX(marker); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) #endif { D(bug("nfosmesa: glReadPixels(%d, %d, %d, %d, %s, %s, " PRI_PTR ")", x, y, width, height, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLREADPIXELS(x, y, width, height, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, memptr data) #else void OSMesaDriver::nfglReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data) #endif { D(bug("nfosmesa: glReadnPixels(%d, %d, %d, %d, %s, %s, %d, " PRI_PTR ")", x, y, width, height, gl_enum_name(format), gl_enum_name(type), bufSize, AtariOffset(data))); FN_GLREADNPIXELS(x, y, width, height, format, type, bufSize, data); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReadnPixelsARB(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, memptr data) #else void OSMesaDriver::nfglReadnPixelsARB(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data) #endif { D(bug("nfosmesa: glReadnPixelsARB(%d, %d, %d, %d, %s, %s, %d, " PRI_PTR ")", x, y, width, height, gl_enum_name(format), gl_enum_name(type), bufSize, AtariOffset(data))); FN_GLREADNPIXELSARB(x, y, width, height, format, type, bufSize, data); } void OSMesaDriver::nfglRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) { D(bug("nfosmesa: glRectd(%f, %f, %f, %f)", x1, y1, x2, y2)); fn.glRectd(x1, y1, x2, y2); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRectdv(memptr v1, memptr v2) #else void OSMesaDriver::nfglRectdv(const GLdouble *v1, const GLdouble *v2) #endif { D(bug("nfosmesa: glRectdv(" PRI_PTR ", " PRI_PTR ")", AtariOffset(v1), AtariOffset(v2))); FN_GLRECTDV(v1, v2); } void OSMesaDriver::nfglRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) { D(bug("nfosmesa: glRectf(%f, %f, %f, %f)", x1, y1, x2, y2)); fn.glRectf(x1, y1, x2, y2); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRectfv(memptr v1, memptr v2) #else void OSMesaDriver::nfglRectfv(const GLfloat *v1, const GLfloat *v2) #endif { D(bug("nfosmesa: glRectfv(" PRI_PTR ", " PRI_PTR ")", AtariOffset(v1), AtariOffset(v2))); FN_GLRECTFV(v1, v2); } void OSMesaDriver::nfglRecti(GLint x1, GLint y1, GLint x2, GLint y2) { D(bug("nfosmesa: glRecti(%d, %d, %d, %d)", x1, y1, x2, y2)); fn.glRecti(x1, y1, x2, y2); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRectiv(memptr v1, memptr v2) #else void OSMesaDriver::nfglRectiv(const GLint *v1, const GLint *v2) #endif { D(bug("nfosmesa: glRectiv(" PRI_PTR ", " PRI_PTR ")", AtariOffset(v1), AtariOffset(v2))); FN_GLRECTIV(v1, v2); } void OSMesaDriver::nfglRects(GLshort32 x1, GLshort32 y1, GLshort32 x2, GLshort32 y2) { D(bug("nfosmesa: glRects(%d, %d, %d, %d)", x1, y1, x2, y2)); fn.glRects(x1, y1, x2, y2); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRectsv(memptr v1, memptr v2) #else void OSMesaDriver::nfglRectsv(const GLshort *v1, const GLshort *v2) #endif { D(bug("nfosmesa: glRectsv(" PRI_PTR ", " PRI_PTR ")", AtariOffset(v1), AtariOffset(v2))); FN_GLRECTSV(v1, v2); } void OSMesaDriver::nfglRectxOES(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2) { D(bug("nfosmesa: glRectxOES(0x%x, 0x%x, 0x%x, 0x%x)", x1, y1, x2, y2)); fn.glRectxOES(x1, y1, x2, y2); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRectxvOES(memptr v1, memptr v2) #else void OSMesaDriver::nfglRectxvOES(const GLfixed *v1, const GLfixed *v2) #endif { D(bug("nfosmesa: glRectxvOES(" PRI_PTR ", " PRI_PTR ")", AtariOffset(v1), AtariOffset(v2))); FN_GLRECTXVOES(v1, v2); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReferencePlaneSGIX(memptr equation) #else void OSMesaDriver::nfglReferencePlaneSGIX(const GLdouble *equation) #endif { D(bug("nfosmesa: glReferencePlaneSGIX(" PRI_PTR ")", AtariOffset(equation))); FN_GLREFERENCEPLANESGIX(equation); } GLboolean OSMesaDriver::nfglReleaseKeyedMutexWin32EXT(GLuint memory, GLuint64 key) { D(bug("nfosmesa: glReleaseKeyedMutexWin32EXT(%u, %" PRIu64 ")", memory, key)); GLboolean __ret = fn.glReleaseKeyedMutexWin32EXT(memory, key); return __ret; } void OSMesaDriver::nfglReleaseShaderCompiler(void) { D(bug("nfosmesa: glReleaseShaderCompiler()")); fn.glReleaseShaderCompiler(); } void OSMesaDriver::nfglRenderGpuMaskNV(GLbitfield mask) { D(bug("nfosmesa: glRenderGpuMaskNV(0x%x)", mask)); fn.glRenderGpuMaskNV(mask); } GLint OSMesaDriver::nfglRenderMode(GLenum mode) { D(bug("nfosmesa: glRenderMode(%s)", gl_enum_name(mode))); FN_GLRENDERMODE(mode); } void OSMesaDriver::nfglRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { D(bug("nfosmesa: glRenderbufferStorage(%s, %s, %d, %d)", gl_enum_name(target), gl_enum_name(internalformat), width, height)); fn.glRenderbufferStorage(target, internalformat, width, height); } void OSMesaDriver::nfglRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { D(bug("nfosmesa: glRenderbufferStorageEXT(%s, %s, %d, %d)", gl_enum_name(target), gl_enum_name(internalformat), width, height)); fn.glRenderbufferStorageEXT(target, internalformat, width, height); } void OSMesaDriver::nfglRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { D(bug("nfosmesa: glRenderbufferStorageMultisample(%s, %d, %s, %d, %d)", gl_enum_name(target), samples, gl_enum_name(internalformat), width, height)); fn.glRenderbufferStorageMultisample(target, samples, internalformat, width, height); } void OSMesaDriver::nfglRenderbufferStorageMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height) { D(bug("nfosmesa: glRenderbufferStorageMultisampleCoverageNV(%s, %d, %d, %s, %d, %d)", gl_enum_name(target), coverageSamples, colorSamples, gl_enum_name(internalformat), width, height)); fn.glRenderbufferStorageMultisampleCoverageNV(target, coverageSamples, colorSamples, internalformat, width, height); } void OSMesaDriver::nfglRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { D(bug("nfosmesa: glRenderbufferStorageMultisampleEXT(%s, %d, %s, %d, %d)", gl_enum_name(target), samples, gl_enum_name(internalformat), width, height)); fn.glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReplacementCodePointerSUN(GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglReplacementCodePointerSUN(GLenum type, GLsizei stride, const void * *pointer) #endif { D(bug("nfosmesa: glReplacementCodePointerSUN(%s, %d, " PRI_PTR ")", gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLREPLACEMENTCODEPOINTERSUN(type, stride, pointer); } void OSMesaDriver::nfglReplacementCodeubSUN(GLubyte32 code) { D(bug("nfosmesa: glReplacementCodeubSUN(%u)", code)); fn.glReplacementCodeubSUN(code); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReplacementCodeubvSUN(memptr code) #else void OSMesaDriver::nfglReplacementCodeubvSUN(const GLubyte *code) #endif { D(bug("nfosmesa: glReplacementCodeubvSUN(" PRI_PTR ")", AtariOffset(code))); FN_GLREPLACEMENTCODEUBVSUN(code); } void OSMesaDriver::nfglReplacementCodeuiColor3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glReplacementCodeuiColor3fVertex3fSUN(%u, %f, %f, %f, %f, %f, %f)", rc, r, g, b, x, y, z)); fn.glReplacementCodeuiColor3fVertex3fSUN(rc, r, g, b, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReplacementCodeuiColor3fVertex3fvSUN(memptr rc, memptr c, memptr v) #else void OSMesaDriver::nfglReplacementCodeuiColor3fVertex3fvSUN(const GLuint *rc, const GLfloat *c, const GLfloat *v) #endif { D(bug("nfosmesa: glReplacementCodeuiColor3fVertex3fvSUN(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", AtariOffset(rc), AtariOffset(c), AtariOffset(v))); FN_GLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUN(rc, c, v); } void OSMesaDriver::nfglReplacementCodeuiColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glReplacementCodeuiColor4fNormal3fVertex3fSUN(%u, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f)", rc, r, g, b, a, nx, ny, nz, x, y, z)); fn.glReplacementCodeuiColor4fNormal3fVertex3fSUN(rc, r, g, b, a, nx, ny, nz, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReplacementCodeuiColor4fNormal3fVertex3fvSUN(memptr rc, memptr c, memptr n, memptr v) #else void OSMesaDriver::nfglReplacementCodeuiColor4fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v) #endif { D(bug("nfosmesa: glReplacementCodeuiColor4fNormal3fVertex3fvSUN(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", AtariOffset(rc), AtariOffset(c), AtariOffset(n), AtariOffset(v))); FN_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUN(rc, c, n, v); } void OSMesaDriver::nfglReplacementCodeuiColor4ubVertex3fSUN(GLuint rc, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glReplacementCodeuiColor4ubVertex3fSUN(%u, %u, %u, %u, %u, %f, %f, %f)", rc, r, g, b, a, x, y, z)); fn.glReplacementCodeuiColor4ubVertex3fSUN(rc, r, g, b, a, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReplacementCodeuiColor4ubVertex3fvSUN(memptr rc, memptr c, memptr v) #else void OSMesaDriver::nfglReplacementCodeuiColor4ubVertex3fvSUN(const GLuint *rc, const GLubyte *c, const GLfloat *v) #endif { D(bug("nfosmesa: glReplacementCodeuiColor4ubVertex3fvSUN(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", AtariOffset(rc), AtariOffset(c), AtariOffset(v))); FN_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUN(rc, c, v); } void OSMesaDriver::nfglReplacementCodeuiNormal3fVertex3fSUN(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glReplacementCodeuiNormal3fVertex3fSUN(%u, %f, %f, %f, %f, %f, %f)", rc, nx, ny, nz, x, y, z)); fn.glReplacementCodeuiNormal3fVertex3fSUN(rc, nx, ny, nz, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReplacementCodeuiNormal3fVertex3fvSUN(memptr rc, memptr n, memptr v) #else void OSMesaDriver::nfglReplacementCodeuiNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *n, const GLfloat *v) #endif { D(bug("nfosmesa: glReplacementCodeuiNormal3fVertex3fvSUN(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", AtariOffset(rc), AtariOffset(n), AtariOffset(v))); FN_GLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUN(rc, n, v); } void OSMesaDriver::nfglReplacementCodeuiSUN(GLuint code) { D(bug("nfosmesa: glReplacementCodeuiSUN(%u)", code)); fn.glReplacementCodeuiSUN(code); } void OSMesaDriver::nfglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(%u, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f)", rc, s, t, r, g, b, a, nx, ny, nz, x, y, z)); fn.glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(rc, s, t, r, g, b, a, nx, ny, nz, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(memptr rc, memptr tc, memptr c, memptr n, memptr v) #else void OSMesaDriver::nfglReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v) #endif { D(bug("nfosmesa: glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", AtariOffset(rc), AtariOffset(tc), AtariOffset(c), AtariOffset(n), AtariOffset(v))); FN_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN(rc, tc, c, n, v); } void OSMesaDriver::nfglReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(%u, %f, %f, %f, %f, %f, %f, %f, %f)", rc, s, t, nx, ny, nz, x, y, z)); fn.glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(rc, s, t, nx, ny, nz, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(memptr rc, memptr tc, memptr n, memptr v) #else void OSMesaDriver::nfglReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v) #endif { D(bug("nfosmesa: glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", AtariOffset(rc), AtariOffset(tc), AtariOffset(n), AtariOffset(v))); FN_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUN(rc, tc, n, v); } void OSMesaDriver::nfglReplacementCodeuiTexCoord2fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glReplacementCodeuiTexCoord2fVertex3fSUN(%u, %f, %f, %f, %f, %f)", rc, s, t, x, y, z)); fn.glReplacementCodeuiTexCoord2fVertex3fSUN(rc, s, t, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReplacementCodeuiTexCoord2fVertex3fvSUN(memptr rc, memptr tc, memptr v) #else void OSMesaDriver::nfglReplacementCodeuiTexCoord2fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *v) #endif { D(bug("nfosmesa: glReplacementCodeuiTexCoord2fVertex3fvSUN(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", AtariOffset(rc), AtariOffset(tc), AtariOffset(v))); FN_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUN(rc, tc, v); } void OSMesaDriver::nfglReplacementCodeuiVertex3fSUN(GLuint rc, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glReplacementCodeuiVertex3fSUN(%u, %f, %f, %f)", rc, x, y, z)); fn.glReplacementCodeuiVertex3fSUN(rc, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReplacementCodeuiVertex3fvSUN(memptr rc, memptr v) #else void OSMesaDriver::nfglReplacementCodeuiVertex3fvSUN(const GLuint *rc, const GLfloat *v) #endif { D(bug("nfosmesa: glReplacementCodeuiVertex3fvSUN(" PRI_PTR ", " PRI_PTR ")", AtariOffset(rc), AtariOffset(v))); FN_GLREPLACEMENTCODEUIVERTEX3FVSUN(rc, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReplacementCodeuivSUN(memptr code) #else void OSMesaDriver::nfglReplacementCodeuivSUN(const GLuint *code) #endif { D(bug("nfosmesa: glReplacementCodeuivSUN(" PRI_PTR ")", AtariOffset(code))); FN_GLREPLACEMENTCODEUIVSUN(code); } void OSMesaDriver::nfglReplacementCodeusSUN(GLushort32 code) { D(bug("nfosmesa: glReplacementCodeusSUN(%u)", code)); fn.glReplacementCodeusSUN(code); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglReplacementCodeusvSUN(memptr code) #else void OSMesaDriver::nfglReplacementCodeusvSUN(const GLushort *code) #endif { D(bug("nfosmesa: glReplacementCodeusvSUN(" PRI_PTR ")", AtariOffset(code))); FN_GLREPLACEMENTCODEUSVSUN(code); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglRequestResidentProgramsNV(GLsizei n, memptr programs) #else void OSMesaDriver::nfglRequestResidentProgramsNV(GLsizei n, const GLuint *programs) #endif { D(bug("nfosmesa: glRequestResidentProgramsNV(%d, " PRI_PTR ")", n, AtariOffset(programs))); FN_GLREQUESTRESIDENTPROGRAMSNV(n, programs); } void OSMesaDriver::nfglResetHistogram(GLenum target) { D(bug("nfosmesa: glResetHistogram(%s)", gl_enum_name(target))); fn.glResetHistogram(target); } void OSMesaDriver::nfglResetHistogramEXT(GLenum target) { D(bug("nfosmesa: glResetHistogramEXT(%s)", gl_enum_name(target))); fn.glResetHistogramEXT(target); } void OSMesaDriver::nfglResetMinmax(GLenum target) { D(bug("nfosmesa: glResetMinmax(%s)", gl_enum_name(target))); fn.glResetMinmax(target); } void OSMesaDriver::nfglResetMinmaxEXT(GLenum target) { D(bug("nfosmesa: glResetMinmaxEXT(%s)", gl_enum_name(target))); fn.glResetMinmaxEXT(target); } void OSMesaDriver::nfglResizeBuffersMESA(void) { D(bug("nfosmesa: glResizeBuffersMESA()")); fn.glResizeBuffersMESA(); } void OSMesaDriver::nfglResolveDepthValuesNV(void) { D(bug("nfosmesa: glResolveDepthValuesNV()")); fn.glResolveDepthValuesNV(); } void OSMesaDriver::nfglResumeTransformFeedback(void) { D(bug("nfosmesa: glResumeTransformFeedback()")); fn.glResumeTransformFeedback(); } void OSMesaDriver::nfglResumeTransformFeedbackNV(void) { D(bug("nfosmesa: glResumeTransformFeedbackNV()")); fn.glResumeTransformFeedbackNV(); } void OSMesaDriver::nfglRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glRotated(%f, %f, %f, %f)", angle, x, y, z)); fn.glRotated(angle, x, y, z); } void OSMesaDriver::nfglRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glRotatef(%f, %f, %f, %f)", angle, x, y, z)); fn.glRotatef(angle, x, y, z); } void OSMesaDriver::nfglRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) { D(bug("nfosmesa: glRotatexOES(0x%x, 0x%x, 0x%x, 0x%x)", angle, x, y, z)); fn.glRotatexOES(angle, x, y, z); } void OSMesaDriver::nfglSampleCoverage(GLfloat value, GLboolean32 invert) { D(bug("nfosmesa: glSampleCoverage(%f, %d)", value, invert)); fn.glSampleCoverage(value, invert); } void OSMesaDriver::nfglSampleCoverageARB(GLfloat value, GLboolean32 invert) { D(bug("nfosmesa: glSampleCoverageARB(%f, %d)", value, invert)); fn.glSampleCoverageARB(value, invert); } void OSMesaDriver::nfglSampleCoverageOES(GLfixed value, GLboolean32 invert) { D(bug("nfosmesa: glSampleCoverageOES(0x%x, %d)", value, invert)); fn.glSampleCoverageOES(value, invert); } void OSMesaDriver::nfglSampleMapATI(GLuint dst, GLuint interp, GLenum swizzle) { D(bug("nfosmesa: glSampleMapATI(%u, %u, %s)", dst, interp, gl_enum_name(swizzle))); fn.glSampleMapATI(dst, interp, swizzle); } void OSMesaDriver::nfglSampleMaskEXT(GLclampf value, GLboolean32 invert) { D(bug("nfosmesa: glSampleMaskEXT(%f, %d)", value, invert)); fn.glSampleMaskEXT(value, invert); } void OSMesaDriver::nfglSampleMaskIndexedNV(GLuint index, GLbitfield mask) { D(bug("nfosmesa: glSampleMaskIndexedNV(%u, 0x%x)", index, mask)); fn.glSampleMaskIndexedNV(index, mask); } void OSMesaDriver::nfglSampleMaskSGIS(GLclampf value, GLboolean32 invert) { D(bug("nfosmesa: glSampleMaskSGIS(%f, %d)", value, invert)); fn.glSampleMaskSGIS(value, invert); } void OSMesaDriver::nfglSampleMaski(GLuint maskNumber, GLbitfield mask) { D(bug("nfosmesa: glSampleMaski(%u, 0x%x)", maskNumber, mask)); fn.glSampleMaski(maskNumber, mask); } void OSMesaDriver::nfglSamplePass(GLenum mode) { D(bug("nfosmesa: glSamplePass(%s)", gl_enum_name(mode))); fn.glSamplePass(mode); } void OSMesaDriver::nfglSamplePassARB(GLenum mode) { D(bug("nfosmesa: glSamplePassARB(%s)", gl_enum_name(mode))); fn.glSamplePassARB(mode); } void OSMesaDriver::nfglSamplePatternEXT(GLenum pattern) { D(bug("nfosmesa: glSamplePatternEXT(%s)", gl_enum_name(pattern))); fn.glSamplePatternEXT(pattern); } void OSMesaDriver::nfglSamplePatternSGIS(GLenum pattern) { D(bug("nfosmesa: glSamplePatternSGIS(%s)", gl_enum_name(pattern))); fn.glSamplePatternSGIS(pattern); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSamplerParameterIiv(GLuint sampler, GLenum pname, memptr param) #else void OSMesaDriver::nfglSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) #endif { D(bug("nfosmesa: glSamplerParameterIiv(%u, %s, " PRI_PTR ")", sampler, gl_enum_name(pname), AtariOffset(param))); FN_GLSAMPLERPARAMETERIIV(sampler, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSamplerParameterIuiv(GLuint sampler, GLenum pname, memptr param) #else void OSMesaDriver::nfglSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) #endif { D(bug("nfosmesa: glSamplerParameterIuiv(%u, %s, " PRI_PTR ")", sampler, gl_enum_name(pname), AtariOffset(param))); FN_GLSAMPLERPARAMETERIUIV(sampler, pname, param); } void OSMesaDriver::nfglSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) { D(bug("nfosmesa: glSamplerParameterf(%u, %s, %f)", sampler, gl_enum_name(pname), param)); fn.glSamplerParameterf(sampler, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSamplerParameterfv(GLuint sampler, GLenum pname, memptr param) #else void OSMesaDriver::nfglSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) #endif { D(bug("nfosmesa: glSamplerParameterfv(%u, %s, " PRI_PTR ")", sampler, gl_enum_name(pname), AtariOffset(param))); FN_GLSAMPLERPARAMETERFV(sampler, pname, param); } void OSMesaDriver::nfglSamplerParameteri(GLuint sampler, GLenum pname, GLint param) { D(bug("nfosmesa: glSamplerParameteri(%u, %s, %d)", sampler, gl_enum_name(pname), param)); fn.glSamplerParameteri(sampler, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSamplerParameteriv(GLuint sampler, GLenum pname, memptr param) #else void OSMesaDriver::nfglSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) #endif { D(bug("nfosmesa: glSamplerParameteriv(%u, %s, " PRI_PTR ")", sampler, gl_enum_name(pname), AtariOffset(param))); FN_GLSAMPLERPARAMETERIV(sampler, pname, param); } void OSMesaDriver::nfglScaled(GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glScaled(%f, %f, %f)", x, y, z)); fn.glScaled(x, y, z); } void OSMesaDriver::nfglScalef(GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glScalef(%f, %f, %f)", x, y, z)); fn.glScalef(x, y, z); } void OSMesaDriver::nfglScalexOES(GLfixed x, GLfixed y, GLfixed z) { D(bug("nfosmesa: glScalexOES(0x%x, 0x%x, 0x%x)", x, y, z)); fn.glScalexOES(x, y, z); } void OSMesaDriver::nfglScissor(GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glScissor(%d, %d, %d, %d)", x, y, width, height)); fn.glScissor(x, y, width, height); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglScissorArrayv(GLuint first, GLsizei count, memptr v) #else void OSMesaDriver::nfglScissorArrayv(GLuint first, GLsizei count, const GLint *v) #endif { D(bug("nfosmesa: glScissorArrayv(%u, %d, " PRI_PTR ")", first, count, AtariOffset(v))); FN_GLSCISSORARRAYV(first, count, v); } void OSMesaDriver::nfglScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) { D(bug("nfosmesa: glScissorIndexed(%u, %d, %d, %d, %d)", index, left, bottom, width, height)); fn.glScissorIndexed(index, left, bottom, width, height); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglScissorIndexedv(GLuint index, memptr v) #else void OSMesaDriver::nfglScissorIndexedv(GLuint index, const GLint *v) #endif { D(bug("nfosmesa: glScissorIndexedv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLSCISSORINDEXEDV(index, v); } void OSMesaDriver::nfglSecondaryColor3b(GLbyte32 red, GLbyte32 green, GLbyte32 blue) { D(bug("nfosmesa: glSecondaryColor3b(%d, %d, %d)", red, green, blue)); fn.glSecondaryColor3b(red, green, blue); } void OSMesaDriver::nfglSecondaryColor3bEXT(GLbyte32 red, GLbyte32 green, GLbyte32 blue) { D(bug("nfosmesa: glSecondaryColor3bEXT(%d, %d, %d)", red, green, blue)); fn.glSecondaryColor3bEXT(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3bv(memptr v) #else void OSMesaDriver::nfglSecondaryColor3bv(const GLbyte *v) #endif { D(bug("nfosmesa: glSecondaryColor3bv(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3BV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3bvEXT(memptr v) #else void OSMesaDriver::nfglSecondaryColor3bvEXT(const GLbyte *v) #endif { D(bug("nfosmesa: glSecondaryColor3bvEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3BVEXT(v); } void OSMesaDriver::nfglSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) { D(bug("nfosmesa: glSecondaryColor3d(%f, %f, %f)", red, green, blue)); fn.glSecondaryColor3d(red, green, blue); } void OSMesaDriver::nfglSecondaryColor3dEXT(GLdouble red, GLdouble green, GLdouble blue) { D(bug("nfosmesa: glSecondaryColor3dEXT(%f, %f, %f)", red, green, blue)); fn.glSecondaryColor3dEXT(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3dv(memptr v) #else void OSMesaDriver::nfglSecondaryColor3dv(const GLdouble *v) #endif { D(bug("nfosmesa: glSecondaryColor3dv(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3DV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3dvEXT(memptr v) #else void OSMesaDriver::nfglSecondaryColor3dvEXT(const GLdouble *v) #endif { D(bug("nfosmesa: glSecondaryColor3dvEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3DVEXT(v); } void OSMesaDriver::nfglSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) { D(bug("nfosmesa: glSecondaryColor3f(%f, %f, %f)", red, green, blue)); fn.glSecondaryColor3f(red, green, blue); } void OSMesaDriver::nfglSecondaryColor3fEXT(GLfloat red, GLfloat green, GLfloat blue) { D(bug("nfosmesa: glSecondaryColor3fEXT(%f, %f, %f)", red, green, blue)); fn.glSecondaryColor3fEXT(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3fv(memptr v) #else void OSMesaDriver::nfglSecondaryColor3fv(const GLfloat *v) #endif { D(bug("nfosmesa: glSecondaryColor3fv(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3FV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3fvEXT(memptr v) #else void OSMesaDriver::nfglSecondaryColor3fvEXT(const GLfloat *v) #endif { D(bug("nfosmesa: glSecondaryColor3fvEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3FVEXT(v); } void OSMesaDriver::nfglSecondaryColor3hNV(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue) { D(bug("nfosmesa: glSecondaryColor3hNV(%u, %u, %u)", red, green, blue)); fn.glSecondaryColor3hNV(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3hvNV(memptr v) #else void OSMesaDriver::nfglSecondaryColor3hvNV(const GLhalfNV *v) #endif { D(bug("nfosmesa: glSecondaryColor3hvNV(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3HVNV(v); } void OSMesaDriver::nfglSecondaryColor3i(GLint red, GLint green, GLint blue) { D(bug("nfosmesa: glSecondaryColor3i(%d, %d, %d)", red, green, blue)); fn.glSecondaryColor3i(red, green, blue); } void OSMesaDriver::nfglSecondaryColor3iEXT(GLint red, GLint green, GLint blue) { D(bug("nfosmesa: glSecondaryColor3iEXT(%d, %d, %d)", red, green, blue)); fn.glSecondaryColor3iEXT(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3iv(memptr v) #else void OSMesaDriver::nfglSecondaryColor3iv(const GLint *v) #endif { D(bug("nfosmesa: glSecondaryColor3iv(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3IV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3ivEXT(memptr v) #else void OSMesaDriver::nfglSecondaryColor3ivEXT(const GLint *v) #endif { D(bug("nfosmesa: glSecondaryColor3ivEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3IVEXT(v); } void OSMesaDriver::nfglSecondaryColor3s(GLshort32 red, GLshort32 green, GLshort32 blue) { D(bug("nfosmesa: glSecondaryColor3s(%d, %d, %d)", red, green, blue)); fn.glSecondaryColor3s(red, green, blue); } void OSMesaDriver::nfglSecondaryColor3sEXT(GLshort32 red, GLshort32 green, GLshort32 blue) { D(bug("nfosmesa: glSecondaryColor3sEXT(%d, %d, %d)", red, green, blue)); fn.glSecondaryColor3sEXT(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3sv(memptr v) #else void OSMesaDriver::nfglSecondaryColor3sv(const GLshort *v) #endif { D(bug("nfosmesa: glSecondaryColor3sv(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3SV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3svEXT(memptr v) #else void OSMesaDriver::nfglSecondaryColor3svEXT(const GLshort *v) #endif { D(bug("nfosmesa: glSecondaryColor3svEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3SVEXT(v); } void OSMesaDriver::nfglSecondaryColor3ub(GLubyte32 red, GLubyte32 green, GLubyte32 blue) { D(bug("nfosmesa: glSecondaryColor3ub(%u, %u, %u)", red, green, blue)); fn.glSecondaryColor3ub(red, green, blue); } void OSMesaDriver::nfglSecondaryColor3ubEXT(GLubyte32 red, GLubyte32 green, GLubyte32 blue) { D(bug("nfosmesa: glSecondaryColor3ubEXT(%u, %u, %u)", red, green, blue)); fn.glSecondaryColor3ubEXT(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3ubv(memptr v) #else void OSMesaDriver::nfglSecondaryColor3ubv(const GLubyte *v) #endif { D(bug("nfosmesa: glSecondaryColor3ubv(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3UBV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3ubvEXT(memptr v) #else void OSMesaDriver::nfglSecondaryColor3ubvEXT(const GLubyte *v) #endif { D(bug("nfosmesa: glSecondaryColor3ubvEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3UBVEXT(v); } void OSMesaDriver::nfglSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) { D(bug("nfosmesa: glSecondaryColor3ui(%u, %u, %u)", red, green, blue)); fn.glSecondaryColor3ui(red, green, blue); } void OSMesaDriver::nfglSecondaryColor3uiEXT(GLuint red, GLuint green, GLuint blue) { D(bug("nfosmesa: glSecondaryColor3uiEXT(%u, %u, %u)", red, green, blue)); fn.glSecondaryColor3uiEXT(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3uiv(memptr v) #else void OSMesaDriver::nfglSecondaryColor3uiv(const GLuint *v) #endif { D(bug("nfosmesa: glSecondaryColor3uiv(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3UIV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3uivEXT(memptr v) #else void OSMesaDriver::nfglSecondaryColor3uivEXT(const GLuint *v) #endif { D(bug("nfosmesa: glSecondaryColor3uivEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3UIVEXT(v); } void OSMesaDriver::nfglSecondaryColor3us(GLushort32 red, GLushort32 green, GLushort32 blue) { D(bug("nfosmesa: glSecondaryColor3us(%u, %u, %u)", red, green, blue)); fn.glSecondaryColor3us(red, green, blue); } void OSMesaDriver::nfglSecondaryColor3usEXT(GLushort32 red, GLushort32 green, GLushort32 blue) { D(bug("nfosmesa: glSecondaryColor3usEXT(%u, %u, %u)", red, green, blue)); fn.glSecondaryColor3usEXT(red, green, blue); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3usv(memptr v) #else void OSMesaDriver::nfglSecondaryColor3usv(const GLushort *v) #endif { D(bug("nfosmesa: glSecondaryColor3usv(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3USV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColor3usvEXT(memptr v) #else void OSMesaDriver::nfglSecondaryColor3usvEXT(const GLushort *v) #endif { D(bug("nfosmesa: glSecondaryColor3usvEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLSECONDARYCOLOR3USVEXT(v); } void OSMesaDriver::nfglSecondaryColorFormatNV(GLint size, GLenum type, GLsizei stride) { D(bug("nfosmesa: glSecondaryColorFormatNV(%d, %s, %d)", size, gl_enum_name(type), stride)); fn.glSecondaryColorFormatNV(size, type, stride); } void OSMesaDriver::nfglSecondaryColorP3ui(GLenum type, GLuint color) { D(bug("nfosmesa: glSecondaryColorP3ui(%s, %u)", gl_enum_name(type), color)); fn.glSecondaryColorP3ui(type, color); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColorP3uiv(GLenum type, memptr color) #else void OSMesaDriver::nfglSecondaryColorP3uiv(GLenum type, const GLuint *color) #endif { D(bug("nfosmesa: glSecondaryColorP3uiv(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(color))); FN_GLSECONDARYCOLORP3UIV(type, color); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glSecondaryColorPointer(%d, %s, %d, " PRI_PTR ")", size, gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLSECONDARYCOLORPOINTER(size, type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glSecondaryColorPointerEXT(%d, %s, %d, " PRI_PTR ")", size, gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLSECONDARYCOLORPOINTEREXT(size, type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSecondaryColorPointerListIBM(GLint size, GLenum type, GLint stride, memptr pointer, GLint ptrstride) #else void OSMesaDriver::nfglSecondaryColorPointerListIBM(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride) #endif { D(bug("nfosmesa: glSecondaryColorPointerListIBM(%d, %s, %d, " PRI_PTR ", %d)", size, gl_enum_name(type), stride, AtariOffset(pointer), ptrstride)); FN_GLSECONDARYCOLORPOINTERLISTIBM(size, type, stride, pointer, ptrstride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSelectBuffer(GLsizei size, memptr buffer) #else void OSMesaDriver::nfglSelectBuffer(GLsizei size, GLuint *buffer) #endif { D(bug("nfosmesa: glSelectBuffer(%d, " PRI_PTR ")", size, AtariOffset(buffer))); FN_GLSELECTBUFFER(size, buffer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean32 enable, GLuint group, GLint numCounters, memptr counterList) #else void OSMesaDriver::nfglSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean32 enable, GLuint group, GLint numCounters, GLuint *counterList) #endif { D(bug("nfosmesa: glSelectPerfMonitorCountersAMD(%u, %d, %u, %d, " PRI_PTR ")", monitor, enable, group, numCounters, AtariOffset(counterList))); FN_GLSELECTPERFMONITORCOUNTERSAMD(monitor, enable, group, numCounters, counterList); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSemaphoreParameterui64vEXT(GLuint semaphore, GLenum pname, memptr params) #else void OSMesaDriver::nfglSemaphoreParameterui64vEXT(GLuint semaphore, GLenum pname, const GLuint64 *params) #endif { D(bug("nfosmesa: glSemaphoreParameterui64vEXT(%u, %s, " PRI_PTR ")", semaphore, gl_enum_name(pname), AtariOffset(params))); #if NFOSMESA_NEED_INT_CONV GLint const __params_size = nfglGetNumParams(pname); GLuint64 __params_tmp[__params_size]; GLuint64 *__params_ptmp = Atari2HostInt64Array(__params_size, params, __params_tmp); fn.glSemaphoreParameterui64vEXT(semaphore, pname, __params_ptmp); #else fn.glSemaphoreParameterui64vEXT(semaphore, pname, HostAddr(params, const GLuint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr row, memptr column) #else void OSMesaDriver::nfglSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column) #endif { D(bug("nfosmesa: glSeparableFilter2D(%s, %s, %d, %d, %s, %s, " PRI_PTR ", " PRI_PTR ")", gl_enum_name(target), gl_enum_name(internalformat), width, height, gl_enum_name(format), gl_enum_name(type), AtariOffset(row), AtariOffset(column))); FN_GLSEPARABLEFILTER2D(target, internalformat, width, height, format, type, row, column); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSeparableFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr row, memptr column) #else void OSMesaDriver::nfglSeparableFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column) #endif { D(bug("nfosmesa: glSeparableFilter2DEXT(%s, %s, %d, %d, %s, %s, " PRI_PTR ", " PRI_PTR ")", gl_enum_name(target), gl_enum_name(internalformat), width, height, gl_enum_name(format), gl_enum_name(type), AtariOffset(row), AtariOffset(column))); FN_GLSEPARABLEFILTER2DEXT(target, internalformat, width, height, format, type, row, column); } void OSMesaDriver::nfglSetFenceAPPLE(GLuint fence) { D(bug("nfosmesa: glSetFenceAPPLE(%u)", fence)); fn.glSetFenceAPPLE(fence); } void OSMesaDriver::nfglSetFenceNV(GLuint fence, GLenum condition) { D(bug("nfosmesa: glSetFenceNV(%u, %s)", fence, gl_enum_name(condition))); fn.glSetFenceNV(fence, condition); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSetFragmentShaderConstantATI(GLuint dst, memptr value) #else void OSMesaDriver::nfglSetFragmentShaderConstantATI(GLuint dst, const GLfloat *value) #endif { D(bug("nfosmesa: glSetFragmentShaderConstantATI(%u, " PRI_PTR ")", dst, AtariOffset(value))); FN_GLSETFRAGMENTSHADERCONSTANTATI(dst, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSetInvariantEXT(GLuint id, GLenum type, memptr addr) #else void OSMesaDriver::nfglSetInvariantEXT(GLuint id, GLenum type, const void *addr) #endif { D(bug("nfosmesa: glSetInvariantEXT(%u, %s, " PRI_PTR ")", id, gl_enum_name(type), AtariOffset(addr))); FN_GLSETINVARIANTEXT(id, type, addr); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSetLocalConstantEXT(GLuint id, GLenum type, memptr addr) #else void OSMesaDriver::nfglSetLocalConstantEXT(GLuint id, GLenum type, const void *addr) #endif { D(bug("nfosmesa: glSetLocalConstantEXT(%u, %s, " PRI_PTR ")", id, gl_enum_name(type), AtariOffset(addr))); FN_GLSETLOCALCONSTANTEXT(id, type, addr); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSetMultisamplefvAMD(GLenum pname, GLuint index, memptr val) #else void OSMesaDriver::nfglSetMultisamplefvAMD(GLenum pname, GLuint index, const GLfloat *val) #endif { D(bug("nfosmesa: glSetMultisamplefvAMD(%s, %u, " PRI_PTR ")", gl_enum_name(pname), index, AtariOffset(val))); FN_GLSETMULTISAMPLEFVAMD(pname, index, val); } void OSMesaDriver::nfglShadeModel(GLenum mode) { D(bug("nfosmesa: glShadeModel(%s)", gl_enum_name(mode))); fn.glShadeModel(mode); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglShaderBinary(GLsizei count, memptr shaders, GLenum binaryformat, memptr binary, GLsizei length) #else void OSMesaDriver::nfglShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length) #endif { D(bug("nfosmesa: glShaderBinary(%d, " PRI_PTR ", %s, " PRI_PTR ", %d)", count, AtariOffset(shaders), gl_enum_name(binaryformat), AtariOffset(binary), length)); FN_GLSHADERBINARY(count, shaders, binaryformat, binary, length); } void OSMesaDriver::nfglShaderOp1EXT(GLenum op, GLuint res, GLuint arg1) { D(bug("nfosmesa: glShaderOp1EXT(%s, %u, %u)", gl_enum_name(op), res, arg1)); fn.glShaderOp1EXT(op, res, arg1); } void OSMesaDriver::nfglShaderOp2EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2) { D(bug("nfosmesa: glShaderOp2EXT(%s, %u, %u, %u)", gl_enum_name(op), res, arg1, arg2)); fn.glShaderOp2EXT(op, res, arg1, arg2); } void OSMesaDriver::nfglShaderOp3EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3) { D(bug("nfosmesa: glShaderOp3EXT(%s, %u, %u, %u, %u)", gl_enum_name(op), res, arg1, arg2, arg3)); fn.glShaderOp3EXT(op, res, arg1, arg2, arg3); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglShaderSource(GLuint shader, GLsizei count, memptr string, memptr length) #else void OSMesaDriver::nfglShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length) #endif { D(bug("nfosmesa: glShaderSource(%u, %d, " PRI_PTR ", " PRI_PTR ")", shader, count, AtariOffset(string), AtariOffset(length))); FN_GLSHADERSOURCE(shader, count, string, length); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglShaderSourceARB(GLhandleARB shaderObj, GLsizei count, memptr string, memptr length) #else void OSMesaDriver::nfglShaderSourceARB(GLhandleARB shaderObj, GLsizei count, const GLcharARB * *string, const GLint *length) #endif { D(bug("nfosmesa: glShaderSourceARB(%u, %d, " PRI_PTR ", " PRI_PTR ")", (unsigned int)(uintptr_t)shaderObj, count, AtariOffset(string), AtariOffset(length))); FN_GLSHADERSOURCEARB(shaderObj, count, string, length); } void OSMesaDriver::nfglShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding) { D(bug("nfosmesa: glShaderStorageBlockBinding(%u, %u, %u)", program, storageBlockIndex, storageBlockBinding)); fn.glShaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSharpenTexFuncSGIS(GLenum target, GLsizei n, memptr points) #else void OSMesaDriver::nfglSharpenTexFuncSGIS(GLenum target, GLsizei n, const GLfloat *points) #endif { D(bug("nfosmesa: glSharpenTexFuncSGIS(%s, %d, " PRI_PTR ")", gl_enum_name(target), n, AtariOffset(points))); FN_GLSHARPENTEXFUNCSGIS(target, n, points); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSignalSemaphoreEXT(GLuint semaphore, GLuint numBufferBarriers, memptr buffers, GLuint numTextureBarriers, memptr textures, memptr dstLayouts) #else void OSMesaDriver::nfglSignalSemaphoreEXT(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts) #endif { D(bug("nfosmesa: glSignalSemaphoreEXT(%u, %u, " PRI_PTR ", %u, " PRI_PTR ", " PRI_PTR ")", semaphore, numBufferBarriers, AtariOffset(buffers), numTextureBarriers, AtariOffset(textures), AtariOffset(dstLayouts))); #if NFOSMESA_NEED_INT_CONV GLint const __buffers_size = MAX(numBufferBarriers, 0); GLuint __buffers_tmp[__buffers_size]; GLuint *__buffers_ptmp = Atari2HostIntArray(__buffers_size, buffers, __buffers_tmp); GLint const __textures_size = MAX(numTextureBarriers, 0); GLuint __textures_tmp[__textures_size]; GLuint *__textures_ptmp = Atari2HostIntArray(__textures_size, textures, __textures_tmp); GLint const __dstLayouts_size = MAX(numTextureBarriers, 0); GLenum __dstLayouts_tmp[__dstLayouts_size]; GLenum *__dstLayouts_ptmp = Atari2HostIntArray(__dstLayouts_size, dstLayouts, __dstLayouts_tmp); fn.glSignalSemaphoreEXT(semaphore, numBufferBarriers, __buffers_ptmp, numTextureBarriers, __textures_ptmp, __dstLayouts_ptmp); #else fn.glSignalSemaphoreEXT(semaphore, numBufferBarriers, HostAddr(buffers, const GLuint *), numTextureBarriers, HostAddr(textures, const GLuint *), HostAddr(dstLayouts, const GLenum *)); #endif } void OSMesaDriver::nfglSignalVkFenceNV(GLuint64 vkFence) { D(bug("nfosmesa: glSignalVkFenceNV(%" PRIu64 ")", vkFence)); fn.glSignalVkFenceNV(vkFence); } void OSMesaDriver::nfglSignalVkSemaphoreNV(GLuint64 vkSemaphore) { D(bug("nfosmesa: glSignalVkSemaphoreNV(%" PRIu64 ")", vkSemaphore)); fn.glSignalVkSemaphoreNV(vkSemaphore); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSpecializeShader(GLuint shader, memptr pEntryPoint, GLuint numSpecializationConstants, memptr pConstantIndex, memptr pConstantValue) #else void OSMesaDriver::nfglSpecializeShader(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue) #endif { D(bug("nfosmesa: glSpecializeShader(%u, " PRI_PTR ", %u, " PRI_PTR ", " PRI_PTR ")", shader, AtariOffset(pEntryPoint), numSpecializationConstants, AtariOffset(pConstantIndex), AtariOffset(pConstantValue))); #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV GLint const __pEntryPoint_size = safe_strlen(pEntryPoint) + 1; GLchar __pEntryPoint_tmp[__pEntryPoint_size]; GLchar *__pEntryPoint_ptmp = Atari2HostByteArray(__pEntryPoint_size, pEntryPoint, __pEntryPoint_tmp); GLint const __pConstantIndex_size = MAX(numSpecializationConstants, 0); GLuint __pConstantIndex_tmp[__pConstantIndex_size]; GLuint *__pConstantIndex_ptmp = Atari2HostIntArray(__pConstantIndex_size, pConstantIndex, __pConstantIndex_tmp); GLint const __pConstantValue_size = MAX(numSpecializationConstants, 0); GLuint __pConstantValue_tmp[__pConstantValue_size]; GLuint *__pConstantValue_ptmp = Atari2HostIntArray(__pConstantValue_size, pConstantValue, __pConstantValue_tmp); fn.glSpecializeShader(shader, __pEntryPoint_ptmp, numSpecializationConstants, __pConstantIndex_ptmp, __pConstantValue_ptmp); #else fn.glSpecializeShader(shader, HostAddr(pEntryPoint, const GLchar *), numSpecializationConstants, HostAddr(pConstantIndex, const GLuint *), HostAddr(pConstantValue, const GLuint *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSpecializeShaderARB(GLuint shader, memptr pEntryPoint, GLuint numSpecializationConstants, memptr pConstantIndex, memptr pConstantValue) #else void OSMesaDriver::nfglSpecializeShaderARB(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue) #endif { D(bug("nfosmesa: glSpecializeShaderARB(%u, " PRI_PTR ", %u, " PRI_PTR ", " PRI_PTR ")", shader, AtariOffset(pEntryPoint), numSpecializationConstants, AtariOffset(pConstantIndex), AtariOffset(pConstantValue))); #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV GLint const __pEntryPoint_size = safe_strlen(pEntryPoint) + 1; GLchar __pEntryPoint_tmp[__pEntryPoint_size]; GLchar *__pEntryPoint_ptmp = Atari2HostByteArray(__pEntryPoint_size, pEntryPoint, __pEntryPoint_tmp); GLint const __pConstantIndex_size = MAX(numSpecializationConstants, 0); GLuint __pConstantIndex_tmp[__pConstantIndex_size]; GLuint *__pConstantIndex_ptmp = Atari2HostIntArray(__pConstantIndex_size, pConstantIndex, __pConstantIndex_tmp); GLint const __pConstantValue_size = MAX(numSpecializationConstants, 0); GLuint __pConstantValue_tmp[__pConstantValue_size]; GLuint *__pConstantValue_ptmp = Atari2HostIntArray(__pConstantValue_size, pConstantValue, __pConstantValue_tmp); fn.glSpecializeShaderARB(shader, __pEntryPoint_ptmp, numSpecializationConstants, __pConstantIndex_ptmp, __pConstantValue_ptmp); #else fn.glSpecializeShaderARB(shader, HostAddr(pEntryPoint, const GLchar *), numSpecializationConstants, HostAddr(pConstantIndex, const GLuint *), HostAddr(pConstantValue, const GLuint *)); #endif } void OSMesaDriver::nfglSpriteParameterfSGIX(GLenum pname, GLfloat param) { D(bug("nfosmesa: glSpriteParameterfSGIX(%s, %f)", gl_enum_name(pname), param)); fn.glSpriteParameterfSGIX(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSpriteParameterfvSGIX(GLenum pname, memptr params) #else void OSMesaDriver::nfglSpriteParameterfvSGIX(GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glSpriteParameterfvSGIX(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLSPRITEPARAMETERFVSGIX(pname, params); } void OSMesaDriver::nfglSpriteParameteriSGIX(GLenum pname, GLint param) { D(bug("nfosmesa: glSpriteParameteriSGIX(%s, %d)", gl_enum_name(pname), param)); fn.glSpriteParameteriSGIX(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglSpriteParameterivSGIX(GLenum pname, memptr params) #else void OSMesaDriver::nfglSpriteParameterivSGIX(GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glSpriteParameterivSGIX(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(params))); FN_GLSPRITEPARAMETERIVSGIX(pname, params); } void OSMesaDriver::nfglStartInstrumentsSGIX(void) { D(bug("nfosmesa: glStartInstrumentsSGIX()")); fn.glStartInstrumentsSGIX(); } void OSMesaDriver::nfglStateCaptureNV(GLuint state, GLenum mode) { D(bug("nfosmesa: glStateCaptureNV(%u, %s)", state, gl_enum_name(mode))); fn.glStateCaptureNV(state, mode); } void OSMesaDriver::nfglStencilClearTagEXT(GLsizei stencilTagBits, GLuint stencilClearTag) { D(bug("nfosmesa: glStencilClearTagEXT(%d, %u)", stencilTagBits, stencilClearTag)); fn.glStencilClearTagEXT(stencilTagBits, stencilClearTag); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglStencilFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, memptr transformValues) #else void OSMesaDriver::nfglStencilFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues) #endif { D(bug("nfosmesa: glStencilFillPathInstancedNV(%d, %s, " PRI_PTR ", %u, %s, %u, %s, " PRI_PTR ")", numPaths, gl_enum_name(pathNameType), AtariOffset(paths), pathBase, gl_enum_name(fillMode), mask, gl_enum_name(transformType), AtariOffset(transformValues))); FN_GLSTENCILFILLPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, fillMode, mask, transformType, transformValues); } void OSMesaDriver::nfglStencilFillPathNV(GLuint path, GLenum fillMode, GLuint mask) { D(bug("nfosmesa: glStencilFillPathNV(%u, %s, %u)", path, gl_enum_name(fillMode), mask)); fn.glStencilFillPathNV(path, fillMode, mask); } void OSMesaDriver::nfglStencilFunc(GLenum func, GLint ref, GLuint mask) { D(bug("nfosmesa: glStencilFunc(%s, %d, %u)", gl_enum_name(func), ref, mask)); fn.glStencilFunc(func, ref, mask); } void OSMesaDriver::nfglStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) { D(bug("nfosmesa: glStencilFuncSeparate(%s, %s, %d, %u)", gl_enum_name(face), gl_enum_name(func), ref, mask)); fn.glStencilFuncSeparate(face, func, ref, mask); } void OSMesaDriver::nfglStencilFuncSeparateATI(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask) { D(bug("nfosmesa: glStencilFuncSeparateATI(%s, %s, %d, %u)", gl_enum_name(frontfunc), gl_enum_name(backfunc), ref, mask)); fn.glStencilFuncSeparateATI(frontfunc, backfunc, ref, mask); } void OSMesaDriver::nfglStencilMask(GLuint mask) { D(bug("nfosmesa: glStencilMask(%u)", mask)); fn.glStencilMask(mask); } void OSMesaDriver::nfglStencilMaskSeparate(GLenum face, GLuint mask) { D(bug("nfosmesa: glStencilMaskSeparate(%s, %u)", gl_enum_name(face), mask)); fn.glStencilMaskSeparate(face, mask); } void OSMesaDriver::nfglStencilOp(GLenum fail, GLenum zfail, GLenum zpass) { D(bug("nfosmesa: glStencilOp(%s, %s, %s)", gl_enum_name(fail), gl_enum_name(zfail), gl_enum_name(zpass))); fn.glStencilOp(fail, zfail, zpass); } void OSMesaDriver::nfglStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) { D(bug("nfosmesa: glStencilOpSeparate(%s, %s, %s, %s)", gl_enum_name(face), gl_enum_name(sfail), gl_enum_name(dpfail), gl_enum_name(dppass))); fn.glStencilOpSeparate(face, sfail, dpfail, dppass); } void OSMesaDriver::nfglStencilOpSeparateATI(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) { D(bug("nfosmesa: glStencilOpSeparateATI(%s, %s, %s, %s)", gl_enum_name(face), gl_enum_name(sfail), gl_enum_name(dpfail), gl_enum_name(dppass))); fn.glStencilOpSeparateATI(face, sfail, dpfail, dppass); } void OSMesaDriver::nfglStencilOpValueAMD(GLenum face, GLuint value) { D(bug("nfosmesa: glStencilOpValueAMD(%s, %u)", gl_enum_name(face), value)); fn.glStencilOpValueAMD(face, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglStencilStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, memptr transformValues) #else void OSMesaDriver::nfglStencilStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues) #endif { D(bug("nfosmesa: glStencilStrokePathInstancedNV(%d, %s, " PRI_PTR ", %u, %d, %u, %s, " PRI_PTR ")", numPaths, gl_enum_name(pathNameType), AtariOffset(paths), pathBase, reference, mask, gl_enum_name(transformType), AtariOffset(transformValues))); FN_GLSTENCILSTROKEPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, reference, mask, transformType, transformValues); } void OSMesaDriver::nfglStencilStrokePathNV(GLuint path, GLint reference, GLuint mask) { D(bug("nfosmesa: glStencilStrokePathNV(%u, %d, %u)", path, reference, mask)); fn.glStencilStrokePathNV(path, reference, mask); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglStencilThenCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, memptr transformValues) #else void OSMesaDriver::nfglStencilThenCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues) #endif { D(bug("nfosmesa: glStencilThenCoverFillPathInstancedNV(%d, %s, " PRI_PTR ", %u, %s, %u, %s, %s, " PRI_PTR ")", numPaths, gl_enum_name(pathNameType), AtariOffset(paths), pathBase, gl_enum_name(fillMode), mask, gl_enum_name(coverMode), gl_enum_name(transformType), AtariOffset(transformValues))); FN_GLSTENCILTHENCOVERFILLPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, fillMode, mask, coverMode, transformType, transformValues); } void OSMesaDriver::nfglStencilThenCoverFillPathNV(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode) { D(bug("nfosmesa: glStencilThenCoverFillPathNV(%u, %s, %u, %s)", path, gl_enum_name(fillMode), mask, gl_enum_name(coverMode))); fn.glStencilThenCoverFillPathNV(path, fillMode, mask, coverMode); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglStencilThenCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, memptr transformValues) #else void OSMesaDriver::nfglStencilThenCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues) #endif { D(bug("nfosmesa: glStencilThenCoverStrokePathInstancedNV(%d, %s, " PRI_PTR ", %u, %d, %u, %s, %s, " PRI_PTR ")", numPaths, gl_enum_name(pathNameType), AtariOffset(paths), pathBase, reference, mask, gl_enum_name(coverMode), gl_enum_name(transformType), AtariOffset(transformValues))); FN_GLSTENCILTHENCOVERSTROKEPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, reference, mask, coverMode, transformType, transformValues); } void OSMesaDriver::nfglStencilThenCoverStrokePathNV(GLuint path, GLint reference, GLuint mask, GLenum coverMode) { D(bug("nfosmesa: glStencilThenCoverStrokePathNV(%u, %d, %u, %s)", path, reference, mask, gl_enum_name(coverMode))); fn.glStencilThenCoverStrokePathNV(path, reference, mask, coverMode); } void OSMesaDriver::nfglStopInstrumentsSGIX(GLint marker) { D(bug("nfosmesa: glStopInstrumentsSGIX(%d)", marker)); fn.glStopInstrumentsSGIX(marker); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglStringMarkerGREMEDY(GLsizei len, memptr string) #else void OSMesaDriver::nfglStringMarkerGREMEDY(GLsizei len, const void *string) #endif { D(bug("nfosmesa: glStringMarkerGREMEDY(%d, " PRI_PTR ")", len, AtariOffset(string))); FN_GLSTRINGMARKERGREMEDY(len, string); } void OSMesaDriver::nfglSubpixelPrecisionBiasNV(GLuint xbits, GLuint ybits) { D(bug("nfosmesa: glSubpixelPrecisionBiasNV(%u, %u)", xbits, ybits)); fn.glSubpixelPrecisionBiasNV(xbits, ybits); } void OSMesaDriver::nfglSwapAPPLE(void) { D(bug("nfosmesa: glSwapAPPLE()")); fn.glSwapAPPLE(); } void OSMesaDriver::nfglSwizzleEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW) { D(bug("nfosmesa: glSwizzleEXT(%u, %u, %s, %s, %s, %s)", res, in, gl_enum_name(outX), gl_enum_name(outY), gl_enum_name(outZ), gl_enum_name(outW))); fn.glSwizzleEXT(res, in, outX, outY, outZ, outW); } void OSMesaDriver::nfglSyncTextureINTEL(GLuint texture) { D(bug("nfosmesa: glSyncTextureINTEL(%u)", texture)); fn.glSyncTextureINTEL(texture); } void OSMesaDriver::nfglTagSampleBufferSGIX(void) { D(bug("nfosmesa: glTagSampleBufferSGIX()")); fn.glTagSampleBufferSGIX(); } void OSMesaDriver::nfglTangent3bEXT(GLbyte32 tx, GLbyte32 ty, GLbyte32 tz) { D(bug("nfosmesa: glTangent3bEXT(%d, %d, %d)", tx, ty, tz)); fn.glTangent3bEXT(tx, ty, tz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTangent3bvEXT(memptr v) #else void OSMesaDriver::nfglTangent3bvEXT(const GLbyte *v) #endif { D(bug("nfosmesa: glTangent3bvEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLTANGENT3BVEXT(v); } void OSMesaDriver::nfglTangent3dEXT(GLdouble tx, GLdouble ty, GLdouble tz) { D(bug("nfosmesa: glTangent3dEXT(%f, %f, %f)", tx, ty, tz)); fn.glTangent3dEXT(tx, ty, tz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTangent3dvEXT(memptr v) #else void OSMesaDriver::nfglTangent3dvEXT(const GLdouble *v) #endif { D(bug("nfosmesa: glTangent3dvEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLTANGENT3DVEXT(v); } void OSMesaDriver::nfglTangent3fEXT(GLfloat tx, GLfloat ty, GLfloat tz) { D(bug("nfosmesa: glTangent3fEXT(%f, %f, %f)", tx, ty, tz)); fn.glTangent3fEXT(tx, ty, tz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTangent3fvEXT(memptr v) #else void OSMesaDriver::nfglTangent3fvEXT(const GLfloat *v) #endif { D(bug("nfosmesa: glTangent3fvEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLTANGENT3FVEXT(v); } void OSMesaDriver::nfglTangent3iEXT(GLint tx, GLint ty, GLint tz) { D(bug("nfosmesa: glTangent3iEXT(%d, %d, %d)", tx, ty, tz)); fn.glTangent3iEXT(tx, ty, tz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTangent3ivEXT(memptr v) #else void OSMesaDriver::nfglTangent3ivEXT(const GLint *v) #endif { D(bug("nfosmesa: glTangent3ivEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLTANGENT3IVEXT(v); } void OSMesaDriver::nfglTangent3sEXT(GLshort32 tx, GLshort32 ty, GLshort32 tz) { D(bug("nfosmesa: glTangent3sEXT(%d, %d, %d)", tx, ty, tz)); fn.glTangent3sEXT(tx, ty, tz); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTangent3svEXT(memptr v) #else void OSMesaDriver::nfglTangent3svEXT(const GLshort *v) #endif { D(bug("nfosmesa: glTangent3svEXT(" PRI_PTR ")", AtariOffset(v))); FN_GLTANGENT3SVEXT(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTangentPointerEXT(GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglTangentPointerEXT(GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glTangentPointerEXT(%s, %d, " PRI_PTR ")", gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLTANGENTPOINTEREXT(type, stride, pointer); } void OSMesaDriver::nfglTbufferMask3DFX(GLuint mask) { D(bug("nfosmesa: glTbufferMask3DFX(%u)", mask)); fn.glTbufferMask3DFX(mask); } void OSMesaDriver::nfglTessellationFactorAMD(GLfloat factor) { D(bug("nfosmesa: glTessellationFactorAMD(%f)", factor)); fn.glTessellationFactorAMD(factor); } void OSMesaDriver::nfglTessellationModeAMD(GLenum mode) { D(bug("nfosmesa: glTessellationModeAMD(%s)", gl_enum_name(mode))); fn.glTessellationModeAMD(mode); } GLboolean OSMesaDriver::nfglTestFenceAPPLE(GLuint fence) { D(bug("nfosmesa: glTestFenceAPPLE(%u)", fence)); GLboolean __ret = fn.glTestFenceAPPLE(fence); return __ret; } GLboolean OSMesaDriver::nfglTestFenceNV(GLuint fence) { D(bug("nfosmesa: glTestFenceNV(%u)", fence)); GLboolean __ret = fn.glTestFenceNV(fence); return __ret; } GLboolean OSMesaDriver::nfglTestObjectAPPLE(GLenum object, GLuint name) { D(bug("nfosmesa: glTestObjectAPPLE(%s, %u)", gl_enum_name(object), name)); GLboolean __ret = fn.glTestObjectAPPLE(object, name); return __ret; } void OSMesaDriver::nfglTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) { D(bug("nfosmesa: glTexBuffer(%s, %s, %u)", gl_enum_name(target), gl_enum_name(internalformat), buffer)); fn.glTexBuffer(target, internalformat, buffer); } void OSMesaDriver::nfglTexBufferARB(GLenum target, GLenum internalformat, GLuint buffer) { D(bug("nfosmesa: glTexBufferARB(%s, %s, %u)", gl_enum_name(target), gl_enum_name(internalformat), buffer)); fn.glTexBufferARB(target, internalformat, buffer); } void OSMesaDriver::nfglTexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer) { D(bug("nfosmesa: glTexBufferEXT(%s, %s, %u)", gl_enum_name(target), gl_enum_name(internalformat), buffer)); fn.glTexBufferEXT(target, internalformat, buffer); } void OSMesaDriver::nfglTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) { D(bug("nfosmesa: glTexBufferRange(%s, %s, %u, %" PRI_IPTR ", %" PRI_IPTR ")", gl_enum_name(target), gl_enum_name(internalformat), buffer, offset, size)); fn.glTexBufferRange(target, internalformat, buffer, offset, size); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexBumpParameterfvATI(GLenum pname, memptr param) #else void OSMesaDriver::nfglTexBumpParameterfvATI(GLenum pname, const GLfloat *param) #endif { D(bug("nfosmesa: glTexBumpParameterfvATI(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(param))); FN_GLTEXBUMPPARAMETERFVATI(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexBumpParameterivATI(GLenum pname, memptr param) #else void OSMesaDriver::nfglTexBumpParameterivATI(GLenum pname, const GLint *param) #endif { D(bug("nfosmesa: glTexBumpParameterivATI(%s, " PRI_PTR ")", gl_enum_name(pname), AtariOffset(param))); FN_GLTEXBUMPPARAMETERIVATI(pname, param); } void OSMesaDriver::nfglTexCoord1bOES(GLbyte32 s) { D(bug("nfosmesa: glTexCoord1bOES(%d)", s)); fn.glTexCoord1bOES(s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord1bvOES(memptr coords) #else void OSMesaDriver::nfglTexCoord1bvOES(const GLbyte *coords) #endif { D(bug("nfosmesa: glTexCoord1bvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLTEXCOORD1BVOES(coords); } void OSMesaDriver::nfglTexCoord1d(GLdouble s) { D(bug("nfosmesa: glTexCoord1d(%f)", s)); fn.glTexCoord1d(s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord1dv(memptr v) #else void OSMesaDriver::nfglTexCoord1dv(const GLdouble *v) #endif { D(bug("nfosmesa: glTexCoord1dv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD1DV(v); } void OSMesaDriver::nfglTexCoord1f(GLfloat s) { D(bug("nfosmesa: glTexCoord1f(%f)", s)); fn.glTexCoord1f(s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord1fv(memptr v) #else void OSMesaDriver::nfglTexCoord1fv(const GLfloat *v) #endif { D(bug("nfosmesa: glTexCoord1fv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD1FV(v); } void OSMesaDriver::nfglTexCoord1hNV(GLhalfNV32 s) { D(bug("nfosmesa: glTexCoord1hNV(%u)", s)); fn.glTexCoord1hNV(s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord1hvNV(memptr v) #else void OSMesaDriver::nfglTexCoord1hvNV(const GLhalfNV *v) #endif { D(bug("nfosmesa: glTexCoord1hvNV(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD1HVNV(v); } void OSMesaDriver::nfglTexCoord1i(GLint s) { D(bug("nfosmesa: glTexCoord1i(%d)", s)); fn.glTexCoord1i(s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord1iv(memptr v) #else void OSMesaDriver::nfglTexCoord1iv(const GLint *v) #endif { D(bug("nfosmesa: glTexCoord1iv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD1IV(v); } void OSMesaDriver::nfglTexCoord1s(GLshort32 s) { D(bug("nfosmesa: glTexCoord1s(%d)", s)); fn.glTexCoord1s(s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord1sv(memptr v) #else void OSMesaDriver::nfglTexCoord1sv(const GLshort *v) #endif { D(bug("nfosmesa: glTexCoord1sv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD1SV(v); } void OSMesaDriver::nfglTexCoord1xOES(GLfixed s) { D(bug("nfosmesa: glTexCoord1xOES(0x%x)", s)); fn.glTexCoord1xOES(s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord1xvOES(memptr coords) #else void OSMesaDriver::nfglTexCoord1xvOES(const GLfixed *coords) #endif { D(bug("nfosmesa: glTexCoord1xvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLTEXCOORD1XVOES(coords); } void OSMesaDriver::nfglTexCoord2bOES(GLbyte32 s, GLbyte32 t) { D(bug("nfosmesa: glTexCoord2bOES(%d, %d)", s, t)); fn.glTexCoord2bOES(s, t); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord2bvOES(memptr coords) #else void OSMesaDriver::nfglTexCoord2bvOES(const GLbyte *coords) #endif { D(bug("nfosmesa: glTexCoord2bvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLTEXCOORD2BVOES(coords); } void OSMesaDriver::nfglTexCoord2d(GLdouble s, GLdouble t) { D(bug("nfosmesa: glTexCoord2d(%f, %f)", s, t)); fn.glTexCoord2d(s, t); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord2dv(memptr v) #else void OSMesaDriver::nfglTexCoord2dv(const GLdouble *v) #endif { D(bug("nfosmesa: glTexCoord2dv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD2DV(v); } void OSMesaDriver::nfglTexCoord2f(GLfloat s, GLfloat t) { D(bug("nfosmesa: glTexCoord2f(%f, %f)", s, t)); fn.glTexCoord2f(s, t); } void OSMesaDriver::nfglTexCoord2fColor3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glTexCoord2fColor3fVertex3fSUN(%f, %f, %f, %f, %f, %f, %f, %f)", s, t, r, g, b, x, y, z)); fn.glTexCoord2fColor3fVertex3fSUN(s, t, r, g, b, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord2fColor3fVertex3fvSUN(memptr tc, memptr c, memptr v) #else void OSMesaDriver::nfglTexCoord2fColor3fVertex3fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *v) #endif { D(bug("nfosmesa: glTexCoord2fColor3fVertex3fvSUN(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", AtariOffset(tc), AtariOffset(c), AtariOffset(v))); FN_GLTEXCOORD2FCOLOR3FVERTEX3FVSUN(tc, c, v); } void OSMesaDriver::nfglTexCoord2fColor4fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glTexCoord2fColor4fNormal3fVertex3fSUN(%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f)", s, t, r, g, b, a, nx, ny, nz, x, y, z)); fn.glTexCoord2fColor4fNormal3fVertex3fSUN(s, t, r, g, b, a, nx, ny, nz, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord2fColor4fNormal3fVertex3fvSUN(memptr tc, memptr c, memptr n, memptr v) #else void OSMesaDriver::nfglTexCoord2fColor4fNormal3fVertex3fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v) #endif { D(bug("nfosmesa: glTexCoord2fColor4fNormal3fVertex3fvSUN(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", AtariOffset(tc), AtariOffset(c), AtariOffset(n), AtariOffset(v))); FN_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN(tc, c, n, v); } void OSMesaDriver::nfglTexCoord2fColor4ubVertex3fSUN(GLfloat s, GLfloat t, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glTexCoord2fColor4ubVertex3fSUN(%f, %f, %u, %u, %u, %u, %f, %f, %f)", s, t, r, g, b, a, x, y, z)); fn.glTexCoord2fColor4ubVertex3fSUN(s, t, r, g, b, a, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord2fColor4ubVertex3fvSUN(memptr tc, memptr c, memptr v) #else void OSMesaDriver::nfglTexCoord2fColor4ubVertex3fvSUN(const GLfloat *tc, const GLubyte *c, const GLfloat *v) #endif { D(bug("nfosmesa: glTexCoord2fColor4ubVertex3fvSUN(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", AtariOffset(tc), AtariOffset(c), AtariOffset(v))); FN_GLTEXCOORD2FCOLOR4UBVERTEX3FVSUN(tc, c, v); } void OSMesaDriver::nfglTexCoord2fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glTexCoord2fNormal3fVertex3fSUN(%f, %f, %f, %f, %f, %f, %f, %f)", s, t, nx, ny, nz, x, y, z)); fn.glTexCoord2fNormal3fVertex3fSUN(s, t, nx, ny, nz, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord2fNormal3fVertex3fvSUN(memptr tc, memptr n, memptr v) #else void OSMesaDriver::nfglTexCoord2fNormal3fVertex3fvSUN(const GLfloat *tc, const GLfloat *n, const GLfloat *v) #endif { D(bug("nfosmesa: glTexCoord2fNormal3fVertex3fvSUN(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", AtariOffset(tc), AtariOffset(n), AtariOffset(v))); FN_GLTEXCOORD2FNORMAL3FVERTEX3FVSUN(tc, n, v); } void OSMesaDriver::nfglTexCoord2fVertex3fSUN(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glTexCoord2fVertex3fSUN(%f, %f, %f, %f, %f)", s, t, x, y, z)); fn.glTexCoord2fVertex3fSUN(s, t, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord2fVertex3fvSUN(memptr tc, memptr v) #else void OSMesaDriver::nfglTexCoord2fVertex3fvSUN(const GLfloat *tc, const GLfloat *v) #endif { D(bug("nfosmesa: glTexCoord2fVertex3fvSUN(" PRI_PTR ", " PRI_PTR ")", AtariOffset(tc), AtariOffset(v))); FN_GLTEXCOORD2FVERTEX3FVSUN(tc, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord2fv(memptr v) #else void OSMesaDriver::nfglTexCoord2fv(const GLfloat *v) #endif { D(bug("nfosmesa: glTexCoord2fv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD2FV(v); } void OSMesaDriver::nfglTexCoord2hNV(GLhalfNV32 s, GLhalfNV32 t) { D(bug("nfosmesa: glTexCoord2hNV(%u, %u)", s, t)); fn.glTexCoord2hNV(s, t); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord2hvNV(memptr v) #else void OSMesaDriver::nfglTexCoord2hvNV(const GLhalfNV *v) #endif { D(bug("nfosmesa: glTexCoord2hvNV(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD2HVNV(v); } void OSMesaDriver::nfglTexCoord2i(GLint s, GLint t) { D(bug("nfosmesa: glTexCoord2i(%d, %d)", s, t)); fn.glTexCoord2i(s, t); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord2iv(memptr v) #else void OSMesaDriver::nfglTexCoord2iv(const GLint *v) #endif { D(bug("nfosmesa: glTexCoord2iv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD2IV(v); } void OSMesaDriver::nfglTexCoord2s(GLshort32 s, GLshort32 t) { D(bug("nfosmesa: glTexCoord2s(%d, %d)", s, t)); fn.glTexCoord2s(s, t); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord2sv(memptr v) #else void OSMesaDriver::nfglTexCoord2sv(const GLshort *v) #endif { D(bug("nfosmesa: glTexCoord2sv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD2SV(v); } void OSMesaDriver::nfglTexCoord2xOES(GLfixed s, GLfixed t) { D(bug("nfosmesa: glTexCoord2xOES(0x%x, 0x%x)", s, t)); fn.glTexCoord2xOES(s, t); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord2xvOES(memptr coords) #else void OSMesaDriver::nfglTexCoord2xvOES(const GLfixed *coords) #endif { D(bug("nfosmesa: glTexCoord2xvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLTEXCOORD2XVOES(coords); } void OSMesaDriver::nfglTexCoord3bOES(GLbyte32 s, GLbyte32 t, GLbyte32 r) { D(bug("nfosmesa: glTexCoord3bOES(%d, %d, %d)", s, t, r)); fn.glTexCoord3bOES(s, t, r); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord3bvOES(memptr coords) #else void OSMesaDriver::nfglTexCoord3bvOES(const GLbyte *coords) #endif { D(bug("nfosmesa: glTexCoord3bvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLTEXCOORD3BVOES(coords); } void OSMesaDriver::nfglTexCoord3d(GLdouble s, GLdouble t, GLdouble r) { D(bug("nfosmesa: glTexCoord3d(%f, %f, %f)", s, t, r)); fn.glTexCoord3d(s, t, r); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord3dv(memptr v) #else void OSMesaDriver::nfglTexCoord3dv(const GLdouble *v) #endif { D(bug("nfosmesa: glTexCoord3dv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD3DV(v); } void OSMesaDriver::nfglTexCoord3f(GLfloat s, GLfloat t, GLfloat r) { D(bug("nfosmesa: glTexCoord3f(%f, %f, %f)", s, t, r)); fn.glTexCoord3f(s, t, r); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord3fv(memptr v) #else void OSMesaDriver::nfglTexCoord3fv(const GLfloat *v) #endif { D(bug("nfosmesa: glTexCoord3fv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD3FV(v); } void OSMesaDriver::nfglTexCoord3hNV(GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r) { D(bug("nfosmesa: glTexCoord3hNV(%u, %u, %u)", s, t, r)); fn.glTexCoord3hNV(s, t, r); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord3hvNV(memptr v) #else void OSMesaDriver::nfglTexCoord3hvNV(const GLhalfNV *v) #endif { D(bug("nfosmesa: glTexCoord3hvNV(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD3HVNV(v); } void OSMesaDriver::nfglTexCoord3i(GLint s, GLint t, GLint r) { D(bug("nfosmesa: glTexCoord3i(%d, %d, %d)", s, t, r)); fn.glTexCoord3i(s, t, r); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord3iv(memptr v) #else void OSMesaDriver::nfglTexCoord3iv(const GLint *v) #endif { D(bug("nfosmesa: glTexCoord3iv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD3IV(v); } void OSMesaDriver::nfglTexCoord3s(GLshort32 s, GLshort32 t, GLshort32 r) { D(bug("nfosmesa: glTexCoord3s(%d, %d, %d)", s, t, r)); fn.glTexCoord3s(s, t, r); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord3sv(memptr v) #else void OSMesaDriver::nfglTexCoord3sv(const GLshort *v) #endif { D(bug("nfosmesa: glTexCoord3sv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD3SV(v); } void OSMesaDriver::nfglTexCoord3xOES(GLfixed s, GLfixed t, GLfixed r) { D(bug("nfosmesa: glTexCoord3xOES(0x%x, 0x%x, 0x%x)", s, t, r)); fn.glTexCoord3xOES(s, t, r); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord3xvOES(memptr coords) #else void OSMesaDriver::nfglTexCoord3xvOES(const GLfixed *coords) #endif { D(bug("nfosmesa: glTexCoord3xvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLTEXCOORD3XVOES(coords); } void OSMesaDriver::nfglTexCoord4bOES(GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q) { D(bug("nfosmesa: glTexCoord4bOES(%d, %d, %d, %d)", s, t, r, q)); fn.glTexCoord4bOES(s, t, r, q); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord4bvOES(memptr coords) #else void OSMesaDriver::nfglTexCoord4bvOES(const GLbyte *coords) #endif { D(bug("nfosmesa: glTexCoord4bvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLTEXCOORD4BVOES(coords); } void OSMesaDriver::nfglTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) { D(bug("nfosmesa: glTexCoord4d(%f, %f, %f, %f)", s, t, r, q)); fn.glTexCoord4d(s, t, r, q); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord4dv(memptr v) #else void OSMesaDriver::nfglTexCoord4dv(const GLdouble *v) #endif { D(bug("nfosmesa: glTexCoord4dv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD4DV(v); } void OSMesaDriver::nfglTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) { D(bug("nfosmesa: glTexCoord4f(%f, %f, %f, %f)", s, t, r, q)); fn.glTexCoord4f(s, t, r, q); } void OSMesaDriver::nfglTexCoord4fColor4fNormal3fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { D(bug("nfosmesa: glTexCoord4fColor4fNormal3fVertex4fSUN(%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f)", s, t, p, q, r, g, b, a, nx, ny, nz, x, y, z, w)); fn.glTexCoord4fColor4fNormal3fVertex4fSUN(s, t, p, q, r, g, b, a, nx, ny, nz, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord4fColor4fNormal3fVertex4fvSUN(memptr tc, memptr c, memptr n, memptr v) #else void OSMesaDriver::nfglTexCoord4fColor4fNormal3fVertex4fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v) #endif { D(bug("nfosmesa: glTexCoord4fColor4fNormal3fVertex4fvSUN(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", AtariOffset(tc), AtariOffset(c), AtariOffset(n), AtariOffset(v))); FN_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUN(tc, c, n, v); } void OSMesaDriver::nfglTexCoord4fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { D(bug("nfosmesa: glTexCoord4fVertex4fSUN(%f, %f, %f, %f, %f, %f, %f, %f)", s, t, p, q, x, y, z, w)); fn.glTexCoord4fVertex4fSUN(s, t, p, q, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord4fVertex4fvSUN(memptr tc, memptr v) #else void OSMesaDriver::nfglTexCoord4fVertex4fvSUN(const GLfloat *tc, const GLfloat *v) #endif { D(bug("nfosmesa: glTexCoord4fVertex4fvSUN(" PRI_PTR ", " PRI_PTR ")", AtariOffset(tc), AtariOffset(v))); FN_GLTEXCOORD4FVERTEX4FVSUN(tc, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord4fv(memptr v) #else void OSMesaDriver::nfglTexCoord4fv(const GLfloat *v) #endif { D(bug("nfosmesa: glTexCoord4fv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD4FV(v); } void OSMesaDriver::nfglTexCoord4hNV(GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q) { D(bug("nfosmesa: glTexCoord4hNV(%u, %u, %u, %u)", s, t, r, q)); fn.glTexCoord4hNV(s, t, r, q); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord4hvNV(memptr v) #else void OSMesaDriver::nfglTexCoord4hvNV(const GLhalfNV *v) #endif { D(bug("nfosmesa: glTexCoord4hvNV(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD4HVNV(v); } void OSMesaDriver::nfglTexCoord4i(GLint s, GLint t, GLint r, GLint q) { D(bug("nfosmesa: glTexCoord4i(%d, %d, %d, %d)", s, t, r, q)); fn.glTexCoord4i(s, t, r, q); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord4iv(memptr v) #else void OSMesaDriver::nfglTexCoord4iv(const GLint *v) #endif { D(bug("nfosmesa: glTexCoord4iv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD4IV(v); } void OSMesaDriver::nfglTexCoord4s(GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q) { D(bug("nfosmesa: glTexCoord4s(%d, %d, %d, %d)", s, t, r, q)); fn.glTexCoord4s(s, t, r, q); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord4sv(memptr v) #else void OSMesaDriver::nfglTexCoord4sv(const GLshort *v) #endif { D(bug("nfosmesa: glTexCoord4sv(" PRI_PTR ")", AtariOffset(v))); FN_GLTEXCOORD4SV(v); } void OSMesaDriver::nfglTexCoord4xOES(GLfixed s, GLfixed t, GLfixed r, GLfixed q) { D(bug("nfosmesa: glTexCoord4xOES(0x%x, 0x%x, 0x%x, 0x%x)", s, t, r, q)); fn.glTexCoord4xOES(s, t, r, q); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoord4xvOES(memptr coords) #else void OSMesaDriver::nfglTexCoord4xvOES(const GLfixed *coords) #endif { D(bug("nfosmesa: glTexCoord4xvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLTEXCOORD4XVOES(coords); } void OSMesaDriver::nfglTexCoordFormatNV(GLint size, GLenum type, GLsizei stride) { D(bug("nfosmesa: glTexCoordFormatNV(%d, %s, %d)", size, gl_enum_name(type), stride)); fn.glTexCoordFormatNV(size, type, stride); } void OSMesaDriver::nfglTexCoordP1ui(GLenum type, GLuint coords) { D(bug("nfosmesa: glTexCoordP1ui(%s, %u)", gl_enum_name(type), coords)); fn.glTexCoordP1ui(type, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoordP1uiv(GLenum type, memptr coords) #else void OSMesaDriver::nfglTexCoordP1uiv(GLenum type, const GLuint *coords) #endif { D(bug("nfosmesa: glTexCoordP1uiv(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(coords))); FN_GLTEXCOORDP1UIV(type, coords); } void OSMesaDriver::nfglTexCoordP2ui(GLenum type, GLuint coords) { D(bug("nfosmesa: glTexCoordP2ui(%s, %u)", gl_enum_name(type), coords)); fn.glTexCoordP2ui(type, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoordP2uiv(GLenum type, memptr coords) #else void OSMesaDriver::nfglTexCoordP2uiv(GLenum type, const GLuint *coords) #endif { D(bug("nfosmesa: glTexCoordP2uiv(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(coords))); FN_GLTEXCOORDP2UIV(type, coords); } void OSMesaDriver::nfglTexCoordP3ui(GLenum type, GLuint coords) { D(bug("nfosmesa: glTexCoordP3ui(%s, %u)", gl_enum_name(type), coords)); fn.glTexCoordP3ui(type, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoordP3uiv(GLenum type, memptr coords) #else void OSMesaDriver::nfglTexCoordP3uiv(GLenum type, const GLuint *coords) #endif { D(bug("nfosmesa: glTexCoordP3uiv(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(coords))); FN_GLTEXCOORDP3UIV(type, coords); } void OSMesaDriver::nfglTexCoordP4ui(GLenum type, GLuint coords) { D(bug("nfosmesa: glTexCoordP4ui(%s, %u)", gl_enum_name(type), coords)); fn.glTexCoordP4ui(type, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoordP4uiv(GLenum type, memptr coords) #else void OSMesaDriver::nfglTexCoordP4uiv(GLenum type, const GLuint *coords) #endif { D(bug("nfosmesa: glTexCoordP4uiv(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(coords))); FN_GLTEXCOORDP4UIV(type, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoordPointer(GLint size, GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) #endif { D(bug("nfosmesa: glTexCoordPointer(%d, %s, %d, " PRI_PTR ")", size, gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLTEXCOORDPOINTER(size, type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, memptr pointer) #else void OSMesaDriver::nfglTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer) #endif { D(bug("nfosmesa: glTexCoordPointerEXT(%d, %s, %d, %d, " PRI_PTR ")", size, gl_enum_name(type), stride, count, AtariOffset(pointer))); FN_GLTEXCOORDPOINTEREXT(size, type, stride, count, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoordPointerListIBM(GLint size, GLenum type, GLint stride, memptr pointer, GLint ptrstride) #else void OSMesaDriver::nfglTexCoordPointerListIBM(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride) #endif { D(bug("nfosmesa: glTexCoordPointerListIBM(%d, %s, %d, " PRI_PTR ", %d)", size, gl_enum_name(type), stride, AtariOffset(pointer), ptrstride)); FN_GLTEXCOORDPOINTERLISTIBM(size, type, stride, pointer, ptrstride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexCoordPointervINTEL(GLint size, GLenum type, memptr pointer) #else void OSMesaDriver::nfglTexCoordPointervINTEL(GLint size, GLenum type, const void * *pointer) #endif { D(bug("nfosmesa: glTexCoordPointervINTEL(%d, %s, " PRI_PTR ")", size, gl_enum_name(type), AtariOffset(pointer))); FN_GLTEXCOORDPOINTERVINTEL(size, type, pointer); } void OSMesaDriver::nfglTexEnvf(GLenum target, GLenum pname, GLfloat param) { D(bug("nfosmesa: glTexEnvf(%s, %s, %f)", gl_enum_name(target), gl_enum_name(pname), param)); fn.glTexEnvf(target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexEnvfv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glTexEnvfv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXENVFV(target, pname, params); } void OSMesaDriver::nfglTexEnvi(GLenum target, GLenum pname, GLint param) { D(bug("nfosmesa: glTexEnvi(%s, %s, %d)", gl_enum_name(target), gl_enum_name(pname), param)); fn.glTexEnvi(target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexEnviv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglTexEnviv(GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glTexEnviv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXENVIV(target, pname, params); } void OSMesaDriver::nfglTexEnvxOES(GLenum target, GLenum pname, GLfixed param) { D(bug("nfosmesa: glTexEnvxOES(%s, %s, 0x%x)", gl_enum_name(target), gl_enum_name(pname), param)); fn.glTexEnvxOES(target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexEnvxvOES(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglTexEnvxvOES(GLenum target, GLenum pname, const GLfixed *params) #endif { D(bug("nfosmesa: glTexEnvxvOES(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXENVXVOES(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexFilterFuncSGIS(GLenum target, GLenum filter, GLsizei n, memptr weights) #else void OSMesaDriver::nfglTexFilterFuncSGIS(GLenum target, GLenum filter, GLsizei n, const GLfloat *weights) #endif { D(bug("nfosmesa: glTexFilterFuncSGIS(%s, %s, %d, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(filter), n, AtariOffset(weights))); FN_GLTEXFILTERFUNCSGIS(target, filter, n, weights); } void OSMesaDriver::nfglTexGend(GLenum coord, GLenum pname, GLdouble param) { D(bug("nfosmesa: glTexGend(%s, %s, %f)", gl_enum_name(coord), gl_enum_name(pname), param)); fn.glTexGend(coord, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexGendv(GLenum coord, GLenum pname, memptr params) #else void OSMesaDriver::nfglTexGendv(GLenum coord, GLenum pname, const GLdouble *params) #endif { D(bug("nfosmesa: glTexGendv(%s, %s, " PRI_PTR ")", gl_enum_name(coord), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXGENDV(coord, pname, params); } void OSMesaDriver::nfglTexGenf(GLenum coord, GLenum pname, GLfloat param) { D(bug("nfosmesa: glTexGenf(%s, %s, %f)", gl_enum_name(coord), gl_enum_name(pname), param)); fn.glTexGenf(coord, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexGenfv(GLenum coord, GLenum pname, memptr params) #else void OSMesaDriver::nfglTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glTexGenfv(%s, %s, " PRI_PTR ")", gl_enum_name(coord), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXGENFV(coord, pname, params); } void OSMesaDriver::nfglTexGeni(GLenum coord, GLenum pname, GLint param) { D(bug("nfosmesa: glTexGeni(%s, %s, %d)", gl_enum_name(coord), gl_enum_name(pname), param)); fn.glTexGeni(coord, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexGeniv(GLenum coord, GLenum pname, memptr params) #else void OSMesaDriver::nfglTexGeniv(GLenum coord, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glTexGeniv(%s, %s, " PRI_PTR ")", gl_enum_name(coord), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXGENIV(coord, pname, params); } void OSMesaDriver::nfglTexGenxOES(GLenum coord, GLenum pname, GLfixed param) { D(bug("nfosmesa: glTexGenxOES(%s, %s, 0x%x)", gl_enum_name(coord), gl_enum_name(pname), param)); fn.glTexGenxOES(coord, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexGenxvOES(GLenum coord, GLenum pname, memptr params) #else void OSMesaDriver::nfglTexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params) #endif { D(bug("nfosmesa: glTexGenxvOES(%s, %s, " PRI_PTR ")", gl_enum_name(coord), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXGENXVOES(coord, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) #endif { D(bug("nfosmesa: glTexImage1D(%s, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), level, internalformat, width, border, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXIMAGE1D(target, level, internalformat, width, border, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) #endif { D(bug("nfosmesa: glTexImage2D(%s, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), level, internalformat, width, height, border, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXIMAGE2D(target, level, internalformat, width, height, border, format, type, pixels); } void OSMesaDriver::nfglTexImage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations) { D(bug("nfosmesa: glTexImage2DMultisample(%s, %d, %s, %d, %d, %d)", gl_enum_name(target), samples, gl_enum_name(internalformat), width, height, fixedsamplelocations)); fn.glTexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); } void OSMesaDriver::nfglTexImage2DMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations) { D(bug("nfosmesa: glTexImage2DMultisampleCoverageNV(%s, %d, %d, %d, %d, %d, %d)", gl_enum_name(target), coverageSamples, colorSamples, internalFormat, width, height, fixedSampleLocations)); fn.glTexImage2DMultisampleCoverageNV(target, coverageSamples, colorSamples, internalFormat, width, height, fixedSampleLocations); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTexImage3D(%s, %d, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), level, internalformat, width, height, depth, border, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXIMAGE3D(target, level, internalformat, width, height, depth, border, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexImage3DEXT(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTexImage3DEXT(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTexImage3DEXT(%s, %d, %s, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), level, gl_enum_name(internalformat), width, height, depth, border, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXIMAGE3DEXT(target, level, internalformat, width, height, depth, border, format, type, pixels); } void OSMesaDriver::nfglTexImage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations) { D(bug("nfosmesa: glTexImage3DMultisample(%s, %d, %s, %d, %d, %d, %d)", gl_enum_name(target), samples, gl_enum_name(internalformat), width, height, depth, fixedsamplelocations)); fn.glTexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); } void OSMesaDriver::nfglTexImage3DMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations) { D(bug("nfosmesa: glTexImage3DMultisampleCoverageNV(%s, %d, %d, %d, %d, %d, %d, %d)", gl_enum_name(target), coverageSamples, colorSamples, internalFormat, width, height, depth, fixedSampleLocations)); fn.glTexImage3DMultisampleCoverageNV(target, coverageSamples, colorSamples, internalFormat, width, height, depth, fixedSampleLocations); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexImage4DSGIS(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTexImage4DSGIS(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTexImage4DSGIS(%s, %d, %s, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), level, gl_enum_name(internalformat), width, height, depth, size4d, border, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXIMAGE4DSGIS(target, level, internalformat, width, height, depth, size4d, border, format, type, pixels); } void OSMesaDriver::nfglTexPageCommitmentARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit) { D(bug("nfosmesa: glTexPageCommitmentARB(%s, %d, %d, %d, %d, %d, %d, %d, %d)", gl_enum_name(target), level, xoffset, yoffset, zoffset, width, height, depth, commit)); fn.glTexPageCommitmentARB(target, level, xoffset, yoffset, zoffset, width, height, depth, commit); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexParameterIiv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglTexParameterIiv(GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glTexParameterIiv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXPARAMETERIIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexParameterIivEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglTexParameterIivEXT(GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glTexParameterIivEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXPARAMETERIIVEXT(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexParameterIuiv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) #endif { D(bug("nfosmesa: glTexParameterIuiv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXPARAMETERIUIV(target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexParameterIuivEXT(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglTexParameterIuivEXT(GLenum target, GLenum pname, const GLuint *params) #endif { D(bug("nfosmesa: glTexParameterIuivEXT(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXPARAMETERIUIVEXT(target, pname, params); } void OSMesaDriver::nfglTexParameterf(GLenum target, GLenum pname, GLfloat param) { D(bug("nfosmesa: glTexParameterf(%s, %s, %f)", gl_enum_name(target), gl_enum_name(pname), param)); fn.glTexParameterf(target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexParameterfv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glTexParameterfv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXPARAMETERFV(target, pname, params); } void OSMesaDriver::nfglTexParameteri(GLenum target, GLenum pname, GLint param) { D(bug("nfosmesa: glTexParameteri(%s, %s, %d)", gl_enum_name(target), gl_enum_name(pname), param)); fn.glTexParameteri(target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexParameteriv(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglTexParameteriv(GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glTexParameteriv(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXPARAMETERIV(target, pname, params); } void OSMesaDriver::nfglTexParameterxOES(GLenum target, GLenum pname, GLfixed param) { D(bug("nfosmesa: glTexParameterxOES(%s, %s, 0x%x)", gl_enum_name(target), gl_enum_name(pname), param)); fn.glTexParameterxOES(target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexParameterxvOES(GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglTexParameterxvOES(GLenum target, GLenum pname, const GLfixed *params) #endif { D(bug("nfosmesa: glTexParameterxvOES(%s, %s, " PRI_PTR ")", gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXPARAMETERXVOES(target, pname, params); } void OSMesaDriver::nfglTexRenderbufferNV(GLenum target, GLuint renderbuffer) { D(bug("nfosmesa: glTexRenderbufferNV(%s, %u)", gl_enum_name(target), renderbuffer)); fn.glTexRenderbufferNV(target, renderbuffer); } void OSMesaDriver::nfglTexScissorFuncINTEL(GLenum target, GLenum lfunc, GLenum hfunc) { D(bug("nfosmesa: glTexScissorFuncINTEL(%s, %s, %s)", gl_enum_name(target), gl_enum_name(lfunc), gl_enum_name(hfunc))); fn.glTexScissorFuncINTEL(target, lfunc, hfunc); } void OSMesaDriver::nfglTexScissorINTEL(GLenum target, GLclampf tlow, GLclampf thigh) { D(bug("nfosmesa: glTexScissorINTEL(%s, %f, %f)", gl_enum_name(target), tlow, thigh)); fn.glTexScissorINTEL(target, tlow, thigh); } void OSMesaDriver::nfglTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) { D(bug("nfosmesa: glTexStorage1D(%s, %d, %s, %d)", gl_enum_name(target), levels, gl_enum_name(internalformat), width)); fn.glTexStorage1D(target, levels, internalformat, width); } void OSMesaDriver::nfglTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) { D(bug("nfosmesa: glTexStorage2D(%s, %d, %s, %d, %d)", gl_enum_name(target), levels, gl_enum_name(internalformat), width, height)); fn.glTexStorage2D(target, levels, internalformat, width, height); } void OSMesaDriver::nfglTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations) { D(bug("nfosmesa: glTexStorage2DMultisample(%s, %d, %s, %d, %d, %d)", gl_enum_name(target), samples, gl_enum_name(internalformat), width, height, fixedsamplelocations)); fn.glTexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); } void OSMesaDriver::nfglTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) { D(bug("nfosmesa: glTexStorage3D(%s, %d, %s, %d, %d, %d)", gl_enum_name(target), levels, gl_enum_name(internalformat), width, height, depth)); fn.glTexStorage3D(target, levels, internalformat, width, height, depth); } void OSMesaDriver::nfglTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations) { D(bug("nfosmesa: glTexStorage3DMultisample(%s, %d, %s, %d, %d, %d, %d)", gl_enum_name(target), samples, gl_enum_name(internalformat), width, height, depth, fixedsamplelocations)); fn.glTexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); } void OSMesaDriver::nfglTexStorageMem1DEXT(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset) { D(bug("nfosmesa: glTexStorageMem1DEXT(%s, %d, %s, %d, %u, %" PRIu64 ")", gl_enum_name(target), levels, gl_enum_name(internalFormat), width, memory, offset)); fn.glTexStorageMem1DEXT(target, levels, internalFormat, width, memory, offset); } void OSMesaDriver::nfglTexStorageMem2DEXT(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset) { D(bug("nfosmesa: glTexStorageMem2DEXT(%s, %d, %s, %d, %d, %u, %" PRIu64 ")", gl_enum_name(target), levels, gl_enum_name(internalFormat), width, height, memory, offset)); fn.glTexStorageMem2DEXT(target, levels, internalFormat, width, height, memory, offset); } void OSMesaDriver::nfglTexStorageMem2DMultisampleEXT(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset) { D(bug("nfosmesa: glTexStorageMem2DMultisampleEXT(%s, %d, %s, %d, %d, %d, %u, %" PRIu64 ")", gl_enum_name(target), samples, gl_enum_name(internalFormat), width, height, fixedSampleLocations, memory, offset)); fn.glTexStorageMem2DMultisampleEXT(target, samples, internalFormat, width, height, fixedSampleLocations, memory, offset); } void OSMesaDriver::nfglTexStorageMem3DEXT(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset) { D(bug("nfosmesa: glTexStorageMem3DEXT(%s, %d, %s, %d, %d, %d, %u, %" PRIu64 ")", gl_enum_name(target), levels, gl_enum_name(internalFormat), width, height, depth, memory, offset)); fn.glTexStorageMem3DEXT(target, levels, internalFormat, width, height, depth, memory, offset); } void OSMesaDriver::nfglTexStorageMem3DMultisampleEXT(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset) { D(bug("nfosmesa: glTexStorageMem3DMultisampleEXT(%s, %d, %s, %d, %d, %d, %d, %u, %" PRIu64 ")", gl_enum_name(target), samples, gl_enum_name(internalFormat), width, height, depth, fixedSampleLocations, memory, offset)); fn.glTexStorageMem3DMultisampleEXT(target, samples, internalFormat, width, height, depth, fixedSampleLocations, memory, offset); } void OSMesaDriver::nfglTexStorageSparseAMD(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags) { D(bug("nfosmesa: glTexStorageSparseAMD(%s, %s, %d, %d, %d, %d, 0x%x)", gl_enum_name(target), gl_enum_name(internalFormat), width, height, depth, layers, flags)); fn.glTexStorageSparseAMD(target, internalFormat, width, height, depth, layers, flags); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) #endif { D(bug("nfosmesa: glTexSubImage1D(%s, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), level, xoffset, width, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXSUBIMAGE1D(target, level, xoffset, width, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTexSubImage1DEXT(%s, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), level, xoffset, width, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXSUBIMAGE1DEXT(target, level, xoffset, width, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) #endif { D(bug("nfosmesa: glTexSubImage2D(%s, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), level, xoffset, yoffset, width, height, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXSUBIMAGE2D(target, level, xoffset, yoffset, width, height, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTexSubImage2DEXT(%s, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), level, xoffset, yoffset, width, height, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXSUBIMAGE2DEXT(target, level, xoffset, yoffset, width, height, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTexSubImage3D(%s, %d, %d, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), level, xoffset, yoffset, zoffset, width, height, depth, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXSUBIMAGE3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTexSubImage3DEXT(%s, %d, %d, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), level, xoffset, yoffset, zoffset, width, height, depth, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXSUBIMAGE3DEXT(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTexSubImage4DSGIS(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTexSubImage4DSGIS(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTexSubImage4DSGIS(%s, %d, %d, %d, %d, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", gl_enum_name(target), level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXSUBIMAGE4DSGIS(target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels); } void OSMesaDriver::nfglTextureBarrier(void) { D(bug("nfosmesa: glTextureBarrier()")); fn.glTextureBarrier(); } void OSMesaDriver::nfglTextureBarrierNV(void) { D(bug("nfosmesa: glTextureBarrierNV()")); fn.glTextureBarrierNV(); } void OSMesaDriver::nfglTextureBuffer(GLuint texture, GLenum internalformat, GLuint buffer) { D(bug("nfosmesa: glTextureBuffer(%u, %s, %u)", texture, gl_enum_name(internalformat), buffer)); fn.glTextureBuffer(texture, internalformat, buffer); } void OSMesaDriver::nfglTextureBufferEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer) { D(bug("nfosmesa: glTextureBufferEXT(%u, %s, %s, %u)", texture, gl_enum_name(target), gl_enum_name(internalformat), buffer)); fn.glTextureBufferEXT(texture, target, internalformat, buffer); } void OSMesaDriver::nfglTextureBufferRange(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) { D(bug("nfosmesa: glTextureBufferRange(%u, %s, %u, %" PRI_IPTR ", %" PRI_IPTR ")", texture, gl_enum_name(internalformat), buffer, offset, size)); fn.glTextureBufferRange(texture, internalformat, buffer, offset, size); } void OSMesaDriver::nfglTextureBufferRangeEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) { D(bug("nfosmesa: glTextureBufferRangeEXT(%u, %s, %s, %u, %" PRI_IPTR ", %" PRI_IPTR ")", texture, gl_enum_name(target), gl_enum_name(internalformat), buffer, offset, size)); fn.glTextureBufferRangeEXT(texture, target, internalformat, buffer, offset, size); } void OSMesaDriver::nfglTextureColorMaskSGIS(GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha) { D(bug("nfosmesa: glTextureColorMaskSGIS(%d, %d, %d, %d)", red, green, blue, alpha)); fn.glTextureColorMaskSGIS(red, green, blue, alpha); } void OSMesaDriver::nfglTextureFogSGIX(GLenum pname) { D(bug("nfosmesa: glTextureFogSGIX(%s)", gl_enum_name(pname))); fn.glTextureFogSGIX(pname); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTextureImage1DEXT(%u, %s, %d, %s, %d, %d, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), level, gl_enum_name(internalformat), width, border, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXTUREIMAGE1DEXT(texture, target, level, internalformat, width, border, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTextureImage2DEXT(%u, %s, %d, %s, %d, %d, %d, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), level, gl_enum_name(internalformat), width, height, border, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXTUREIMAGE2DEXT(texture, target, level, internalformat, width, height, border, format, type, pixels); } void OSMesaDriver::nfglTextureImage2DMultisampleCoverageNV(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations) { D(bug("nfosmesa: glTextureImage2DMultisampleCoverageNV(%u, %s, %d, %d, %d, %d, %d, %d)", texture, gl_enum_name(target), coverageSamples, colorSamples, internalFormat, width, height, fixedSampleLocations)); fn.glTextureImage2DMultisampleCoverageNV(texture, target, coverageSamples, colorSamples, internalFormat, width, height, fixedSampleLocations); } void OSMesaDriver::nfglTextureImage2DMultisampleNV(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations) { D(bug("nfosmesa: glTextureImage2DMultisampleNV(%u, %s, %d, %d, %d, %d, %d)", texture, gl_enum_name(target), samples, internalFormat, width, height, fixedSampleLocations)); fn.glTextureImage2DMultisampleNV(texture, target, samples, internalFormat, width, height, fixedSampleLocations); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureImage3DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTextureImage3DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTextureImage3DEXT(%u, %s, %d, %s, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), level, gl_enum_name(internalformat), width, height, depth, border, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXTUREIMAGE3DEXT(texture, target, level, internalformat, width, height, depth, border, format, type, pixels); } void OSMesaDriver::nfglTextureImage3DMultisampleCoverageNV(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations) { D(bug("nfosmesa: glTextureImage3DMultisampleCoverageNV(%u, %s, %d, %d, %d, %d, %d, %d, %d)", texture, gl_enum_name(target), coverageSamples, colorSamples, internalFormat, width, height, depth, fixedSampleLocations)); fn.glTextureImage3DMultisampleCoverageNV(texture, target, coverageSamples, colorSamples, internalFormat, width, height, depth, fixedSampleLocations); } void OSMesaDriver::nfglTextureImage3DMultisampleNV(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations) { D(bug("nfosmesa: glTextureImage3DMultisampleNV(%u, %s, %d, %d, %d, %d, %d, %d)", texture, gl_enum_name(target), samples, internalFormat, width, height, depth, fixedSampleLocations)); fn.glTextureImage3DMultisampleNV(texture, target, samples, internalFormat, width, height, depth, fixedSampleLocations); } void OSMesaDriver::nfglTextureLightEXT(GLenum pname) { D(bug("nfosmesa: glTextureLightEXT(%s)", gl_enum_name(pname))); fn.glTextureLightEXT(pname); } void OSMesaDriver::nfglTextureMaterialEXT(GLenum face, GLenum mode) { D(bug("nfosmesa: glTextureMaterialEXT(%s, %s)", gl_enum_name(face), gl_enum_name(mode))); fn.glTextureMaterialEXT(face, mode); } void OSMesaDriver::nfglTextureNormalEXT(GLenum mode) { D(bug("nfosmesa: glTextureNormalEXT(%s)", gl_enum_name(mode))); fn.glTextureNormalEXT(mode); } void OSMesaDriver::nfglTexturePageCommitmentEXT(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit) { D(bug("nfosmesa: glTexturePageCommitmentEXT(%u, %d, %d, %d, %d, %d, %d, %d, %d)", texture, level, xoffset, yoffset, zoffset, width, height, depth, commit)); fn.glTexturePageCommitmentEXT(texture, level, xoffset, yoffset, zoffset, width, height, depth, commit); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureParameterIiv(GLuint texture, GLenum pname, memptr params) #else void OSMesaDriver::nfglTextureParameterIiv(GLuint texture, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glTextureParameterIiv(%u, %s, " PRI_PTR ")", texture, gl_enum_name(pname), AtariOffset(params))); FN_GLTEXTUREPARAMETERIIV(texture, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glTextureParameterIivEXT(%u, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXTUREPARAMETERIIVEXT(texture, target, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureParameterIuiv(GLuint texture, GLenum pname, memptr params) #else void OSMesaDriver::nfglTextureParameterIuiv(GLuint texture, GLenum pname, const GLuint *params) #endif { D(bug("nfosmesa: glTextureParameterIuiv(%u, %s, " PRI_PTR ")", texture, gl_enum_name(pname), AtariOffset(params))); FN_GLTEXTUREPARAMETERIUIV(texture, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, const GLuint *params) #endif { D(bug("nfosmesa: glTextureParameterIuivEXT(%u, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXTUREPARAMETERIUIVEXT(texture, target, pname, params); } void OSMesaDriver::nfglTextureParameterf(GLuint texture, GLenum pname, GLfloat param) { D(bug("nfosmesa: glTextureParameterf(%u, %s, %f)", texture, gl_enum_name(pname), param)); fn.glTextureParameterf(texture, pname, param); } void OSMesaDriver::nfglTextureParameterfEXT(GLuint texture, GLenum target, GLenum pname, GLfloat param) { D(bug("nfosmesa: glTextureParameterfEXT(%u, %s, %s, %f)", texture, gl_enum_name(target), gl_enum_name(pname), param)); fn.glTextureParameterfEXT(texture, target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureParameterfv(GLuint texture, GLenum pname, memptr param) #else void OSMesaDriver::nfglTextureParameterfv(GLuint texture, GLenum pname, const GLfloat *param) #endif { D(bug("nfosmesa: glTextureParameterfv(%u, %s, " PRI_PTR ")", texture, gl_enum_name(pname), AtariOffset(param))); FN_GLTEXTUREPARAMETERFV(texture, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glTextureParameterfvEXT(%u, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXTUREPARAMETERFVEXT(texture, target, pname, params); } void OSMesaDriver::nfglTextureParameteri(GLuint texture, GLenum pname, GLint param) { D(bug("nfosmesa: glTextureParameteri(%u, %s, %d)", texture, gl_enum_name(pname), param)); fn.glTextureParameteri(texture, pname, param); } void OSMesaDriver::nfglTextureParameteriEXT(GLuint texture, GLenum target, GLenum pname, GLint param) { D(bug("nfosmesa: glTextureParameteriEXT(%u, %s, %s, %d)", texture, gl_enum_name(target), gl_enum_name(pname), param)); fn.glTextureParameteriEXT(texture, target, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureParameteriv(GLuint texture, GLenum pname, memptr param) #else void OSMesaDriver::nfglTextureParameteriv(GLuint texture, GLenum pname, const GLint *param) #endif { D(bug("nfosmesa: glTextureParameteriv(%u, %s, " PRI_PTR ")", texture, gl_enum_name(pname), AtariOffset(param))); FN_GLTEXTUREPARAMETERIV(texture, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, memptr params) #else void OSMesaDriver::nfglTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glTextureParameterivEXT(%u, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), gl_enum_name(pname), AtariOffset(params))); FN_GLTEXTUREPARAMETERIVEXT(texture, target, pname, params); } #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureRangeAPPLE(GLenum target, GLsizei length, memptr pointer) #else void OSMesaDriver::nfglTextureRangeAPPLE(GLenum target, GLsizei length, const void *pointer) #endif { D(bug("nfosmesa: glTextureRangeAPPLE(%s, %d, " PRI_PTR ")", gl_enum_name(target), length, AtariOffset(pointer))); FN_GLTEXTURERANGEAPPLE(target, length, pointer); } #endif void OSMesaDriver::nfglTextureRenderbufferEXT(GLuint texture, GLenum target, GLuint renderbuffer) { D(bug("nfosmesa: glTextureRenderbufferEXT(%u, %s, %u)", texture, gl_enum_name(target), renderbuffer)); fn.glTextureRenderbufferEXT(texture, target, renderbuffer); } void OSMesaDriver::nfglTextureStorage1D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width) { D(bug("nfosmesa: glTextureStorage1D(%u, %d, %s, %d)", texture, levels, gl_enum_name(internalformat), width)); fn.glTextureStorage1D(texture, levels, internalformat, width); } void OSMesaDriver::nfglTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) { D(bug("nfosmesa: glTextureStorage1DEXT(%u, %s, %d, %s, %d)", texture, gl_enum_name(target), levels, gl_enum_name(internalformat), width)); fn.glTextureStorage1DEXT(texture, target, levels, internalformat, width); } void OSMesaDriver::nfglTextureStorage2D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) { D(bug("nfosmesa: glTextureStorage2D(%u, %d, %s, %d, %d)", texture, levels, gl_enum_name(internalformat), width, height)); fn.glTextureStorage2D(texture, levels, internalformat, width, height); } void OSMesaDriver::nfglTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) { D(bug("nfosmesa: glTextureStorage2DEXT(%u, %s, %d, %s, %d, %d)", texture, gl_enum_name(target), levels, gl_enum_name(internalformat), width, height)); fn.glTextureStorage2DEXT(texture, target, levels, internalformat, width, height); } void OSMesaDriver::nfglTextureStorage2DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations) { D(bug("nfosmesa: glTextureStorage2DMultisample(%u, %d, %s, %d, %d, %d)", texture, samples, gl_enum_name(internalformat), width, height, fixedsamplelocations)); fn.glTextureStorage2DMultisample(texture, samples, internalformat, width, height, fixedsamplelocations); } void OSMesaDriver::nfglTextureStorage2DMultisampleEXT(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations) { D(bug("nfosmesa: glTextureStorage2DMultisampleEXT(%u, %s, %d, %s, %d, %d, %d)", texture, gl_enum_name(target), samples, gl_enum_name(internalformat), width, height, fixedsamplelocations)); fn.glTextureStorage2DMultisampleEXT(texture, target, samples, internalformat, width, height, fixedsamplelocations); } void OSMesaDriver::nfglTextureStorage3D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) { D(bug("nfosmesa: glTextureStorage3D(%u, %d, %s, %d, %d, %d)", texture, levels, gl_enum_name(internalformat), width, height, depth)); fn.glTextureStorage3D(texture, levels, internalformat, width, height, depth); } void OSMesaDriver::nfglTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) { D(bug("nfosmesa: glTextureStorage3DEXT(%u, %s, %d, %s, %d, %d, %d)", texture, gl_enum_name(target), levels, gl_enum_name(internalformat), width, height, depth)); fn.glTextureStorage3DEXT(texture, target, levels, internalformat, width, height, depth); } void OSMesaDriver::nfglTextureStorage3DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations) { D(bug("nfosmesa: glTextureStorage3DMultisample(%u, %d, %s, %d, %d, %d, %d)", texture, samples, gl_enum_name(internalformat), width, height, depth, fixedsamplelocations)); fn.glTextureStorage3DMultisample(texture, samples, internalformat, width, height, depth, fixedsamplelocations); } void OSMesaDriver::nfglTextureStorage3DMultisampleEXT(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations) { D(bug("nfosmesa: glTextureStorage3DMultisampleEXT(%u, %s, %d, %s, %d, %d, %d, %d)", texture, gl_enum_name(target), samples, gl_enum_name(internalformat), width, height, depth, fixedsamplelocations)); fn.glTextureStorage3DMultisampleEXT(texture, target, samples, internalformat, width, height, depth, fixedsamplelocations); } void OSMesaDriver::nfglTextureStorageMem1DEXT(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset) { D(bug("nfosmesa: glTextureStorageMem1DEXT(%u, %d, %s, %d, %u, %" PRIu64 ")", texture, levels, gl_enum_name(internalFormat), width, memory, offset)); fn.glTextureStorageMem1DEXT(texture, levels, internalFormat, width, memory, offset); } void OSMesaDriver::nfglTextureStorageMem2DEXT(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset) { D(bug("nfosmesa: glTextureStorageMem2DEXT(%u, %d, %s, %d, %d, %u, %" PRIu64 ")", texture, levels, gl_enum_name(internalFormat), width, height, memory, offset)); fn.glTextureStorageMem2DEXT(texture, levels, internalFormat, width, height, memory, offset); } void OSMesaDriver::nfglTextureStorageMem2DMultisampleEXT(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset) { D(bug("nfosmesa: glTextureStorageMem2DMultisampleEXT(%u, %d, %s, %d, %d, %d, %u, %" PRIu64 ")", texture, samples, gl_enum_name(internalFormat), width, height, fixedSampleLocations, memory, offset)); fn.glTextureStorageMem2DMultisampleEXT(texture, samples, internalFormat, width, height, fixedSampleLocations, memory, offset); } void OSMesaDriver::nfglTextureStorageMem3DEXT(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset) { D(bug("nfosmesa: glTextureStorageMem3DEXT(%u, %d, %s, %d, %d, %d, %u, %" PRIu64 ")", texture, levels, gl_enum_name(internalFormat), width, height, depth, memory, offset)); fn.glTextureStorageMem3DEXT(texture, levels, internalFormat, width, height, depth, memory, offset); } void OSMesaDriver::nfglTextureStorageMem3DMultisampleEXT(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset) { D(bug("nfosmesa: glTextureStorageMem3DMultisampleEXT(%u, %d, %s, %d, %d, %d, %d, %u, %" PRIu64 ")", texture, samples, gl_enum_name(internalFormat), width, height, depth, fixedSampleLocations, memory, offset)); fn.glTextureStorageMem3DMultisampleEXT(texture, samples, internalFormat, width, height, depth, fixedSampleLocations, memory, offset); } void OSMesaDriver::nfglTextureStorageSparseAMD(GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags) { D(bug("nfosmesa: glTextureStorageSparseAMD(%u, %s, %s, %d, %d, %d, %d, 0x%x)", texture, gl_enum_name(target), gl_enum_name(internalFormat), width, height, depth, layers, flags)); fn.glTextureStorageSparseAMD(texture, target, internalFormat, width, height, depth, layers, flags); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTextureSubImage1D(%u, %d, %d, %d, %s, %s, " PRI_PTR ")", texture, level, xoffset, width, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXTURESUBIMAGE1D(texture, level, xoffset, width, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTextureSubImage1DEXT(%u, %s, %d, %d, %d, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), level, xoffset, width, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXTURESUBIMAGE1DEXT(texture, target, level, xoffset, width, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTextureSubImage2D(%u, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", texture, level, xoffset, yoffset, width, height, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXTURESUBIMAGE2D(texture, level, xoffset, yoffset, width, height, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTextureSubImage2DEXT(%u, %s, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), level, xoffset, yoffset, width, height, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXTURESUBIMAGE2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTextureSubImage3D(%u, %d, %d, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", texture, level, xoffset, yoffset, zoffset, width, height, depth, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXTURESUBIMAGE3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, memptr pixels) #else void OSMesaDriver::nfglTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) #endif { D(bug("nfosmesa: glTextureSubImage3DEXT(%u, %s, %d, %d, %d, %d, %d, %d, %d, %s, %s, " PRI_PTR ")", texture, gl_enum_name(target), level, xoffset, yoffset, zoffset, width, height, depth, gl_enum_name(format), gl_enum_name(type), AtariOffset(pixels))); FN_GLTEXTURESUBIMAGE3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); } void OSMesaDriver::nfglTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) { D(bug("nfosmesa: glTextureView(%u, %s, %u, %s, %u, %u, %u, %u)", texture, gl_enum_name(target), origtexture, gl_enum_name(internalformat), minlevel, numlevels, minlayer, numlayers)); fn.glTextureView(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers); } void OSMesaDriver::nfglTraceAssertAttribMESA(GLbitfield attribMask) { D(bug("nfosmesa: glTraceAssertAttribMESA(0x%x)", attribMask)); fn.glTraceAssertAttribMESA(attribMask); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTraceCommentMESA(memptr comment) #else void OSMesaDriver::nfglTraceCommentMESA(const GLubyte *comment) #endif { D(bug("nfosmesa: glTraceCommentMESA(" PRI_PTR ")", AtariOffset(comment))); FN_GLTRACECOMMENTMESA(comment); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTraceListMESA(GLuint name, memptr comment) #else void OSMesaDriver::nfglTraceListMESA(GLuint name, const GLubyte *comment) #endif { D(bug("nfosmesa: glTraceListMESA(%u, " PRI_PTR ")", name, AtariOffset(comment))); FN_GLTRACELISTMESA(name, comment); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTracePointerMESA(memptr pointer, memptr comment) #else void OSMesaDriver::nfglTracePointerMESA(GLvoid *pointer, const GLubyte *comment) #endif { D(bug("nfosmesa: glTracePointerMESA(" PRI_PTR ", " PRI_PTR ")", AtariOffset(pointer), AtariOffset(comment))); FN_GLTRACEPOINTERMESA(pointer, comment); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTracePointerRangeMESA(memptr first, memptr last, memptr comment) #else void OSMesaDriver::nfglTracePointerRangeMESA(const GLvoid *first, const GLvoid *last, const GLubyte *comment) #endif { D(bug("nfosmesa: glTracePointerRangeMESA(" PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", AtariOffset(first), AtariOffset(last), AtariOffset(comment))); FN_GLTRACEPOINTERRANGEMESA(first, last, comment); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTraceTextureMESA(GLuint name, memptr comment) #else void OSMesaDriver::nfglTraceTextureMESA(GLuint name, const GLubyte *comment) #endif { D(bug("nfosmesa: glTraceTextureMESA(%u, " PRI_PTR ")", name, AtariOffset(comment))); FN_GLTRACETEXTUREMESA(name, comment); } void OSMesaDriver::nfglTrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform) { D(bug("nfosmesa: glTrackMatrixNV(%s, %u, %s, %s)", gl_enum_name(target), address, gl_enum_name(matrix), gl_enum_name(transform))); fn.glTrackMatrixNV(target, address, matrix, transform); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTransformFeedbackAttribsNV(GLsizei count, memptr attribs, GLenum bufferMode) #else void OSMesaDriver::nfglTransformFeedbackAttribsNV(GLsizei count, const GLint *attribs, GLenum bufferMode) #endif { D(bug("nfosmesa: glTransformFeedbackAttribsNV(%d, " PRI_PTR ", %s)", count, AtariOffset(attribs), gl_enum_name(bufferMode))); FN_GLTRANSFORMFEEDBACKATTRIBSNV(count, attribs, bufferMode); } void OSMesaDriver::nfglTransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer) { D(bug("nfosmesa: glTransformFeedbackBufferBase(%u, %u, %u)", xfb, index, buffer)); fn.glTransformFeedbackBufferBase(xfb, index, buffer); } void OSMesaDriver::nfglTransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) { D(bug("nfosmesa: glTransformFeedbackBufferRange(%u, %u, %u, %" PRI_IPTR ", %" PRI_IPTR ")", xfb, index, buffer, offset, size)); fn.glTransformFeedbackBufferRange(xfb, index, buffer, offset, size); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTransformFeedbackStreamAttribsNV(GLsizei count, memptr attribs, GLsizei nbuffers, memptr bufstreams, GLenum bufferMode) #else void OSMesaDriver::nfglTransformFeedbackStreamAttribsNV(GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode) #endif { D(bug("nfosmesa: glTransformFeedbackStreamAttribsNV(%d, " PRI_PTR ", %d, " PRI_PTR ", %s)", count, AtariOffset(attribs), nbuffers, AtariOffset(bufstreams), gl_enum_name(bufferMode))); FN_GLTRANSFORMFEEDBACKSTREAMATTRIBSNV(count, attribs, nbuffers, bufstreams, bufferMode); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTransformFeedbackVaryings(GLuint program, GLsizei count, memptr varyings, GLenum bufferMode) #else void OSMesaDriver::nfglTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode) #endif { D(bug("nfosmesa: glTransformFeedbackVaryings(%u, %d, " PRI_PTR ", %s)", program, count, AtariOffset(varyings), gl_enum_name(bufferMode))); FN_GLTRANSFORMFEEDBACKVARYINGS(program, count, varyings, bufferMode); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTransformFeedbackVaryingsEXT(GLuint program, GLsizei count, memptr varyings, GLenum bufferMode) #else void OSMesaDriver::nfglTransformFeedbackVaryingsEXT(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode) #endif { D(bug("nfosmesa: glTransformFeedbackVaryingsEXT(%u, %d, " PRI_PTR ", %s)", program, count, AtariOffset(varyings), gl_enum_name(bufferMode))); FN_GLTRANSFORMFEEDBACKVARYINGSEXT(program, count, varyings, bufferMode); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTransformFeedbackVaryingsNV(GLuint program, GLsizei count, memptr locations, GLenum bufferMode) #else void OSMesaDriver::nfglTransformFeedbackVaryingsNV(GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode) #endif { D(bug("nfosmesa: glTransformFeedbackVaryingsNV(%u, %d, " PRI_PTR ", %s)", program, count, AtariOffset(locations), gl_enum_name(bufferMode))); FN_GLTRANSFORMFEEDBACKVARYINGSNV(program, count, locations, bufferMode); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglTransformPathNV(GLuint resultPath, GLuint srcPath, GLenum transformType, memptr transformValues) #else void OSMesaDriver::nfglTransformPathNV(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues) #endif { D(bug("nfosmesa: glTransformPathNV(%u, %u, %s, " PRI_PTR ")", resultPath, srcPath, gl_enum_name(transformType), AtariOffset(transformValues))); FN_GLTRANSFORMPATHNV(resultPath, srcPath, transformType, transformValues); } void OSMesaDriver::nfglTranslated(GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glTranslated(%f, %f, %f)", x, y, z)); fn.glTranslated(x, y, z); } void OSMesaDriver::nfglTranslatef(GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glTranslatef(%f, %f, %f)", x, y, z)); fn.glTranslatef(x, y, z); } void OSMesaDriver::nfglTranslatexOES(GLfixed x, GLfixed y, GLfixed z) { D(bug("nfosmesa: glTranslatexOES(0x%x, 0x%x, 0x%x)", x, y, z)); fn.glTranslatexOES(x, y, z); } void OSMesaDriver::nfglUniform1d(GLint location, GLdouble x) { D(bug("nfosmesa: glUniform1d(%d, %f)", location, x)); fn.glUniform1d(location, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform1dv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform1dv(GLint location, GLsizei count, const GLdouble *value) #endif { D(bug("nfosmesa: glUniform1dv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM1DV(location, count, value); } void OSMesaDriver::nfglUniform1f(GLint location, GLfloat v0) { D(bug("nfosmesa: glUniform1f(%d, %f)", location, v0)); fn.glUniform1f(location, v0); } void OSMesaDriver::nfglUniform1fARB(GLint location, GLfloat v0) { D(bug("nfosmesa: glUniform1fARB(%d, %f)", location, v0)); fn.glUniform1fARB(location, v0); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform1fv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform1fv(GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glUniform1fv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM1FV(location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform1fvARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform1fvARB(GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glUniform1fvARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __value_size = MAX(1 * count, 0); GLfloat __value_tmp[__value_size]; GLfloat *__value_ptmp = Atari2HostFloatArray(__value_size, value, __value_tmp); fn.glUniform1fvARB(location, count, __value_ptmp); #else fn.glUniform1fvARB(location, count, HostAddr(value, const GLfloat *)); #endif } void OSMesaDriver::nfglUniform1i(GLint location, GLint v0) { D(bug("nfosmesa: glUniform1i(%d, %d)", location, v0)); fn.glUniform1i(location, v0); } void OSMesaDriver::nfglUniform1i64ARB(GLint location, GLint64 x) { D(bug("nfosmesa: glUniform1i64ARB(%d, %" PRId64 ")", location, x)); fn.glUniform1i64ARB(location, x); } void OSMesaDriver::nfglUniform1i64NV(GLint location, GLint64EXT x) { D(bug("nfosmesa: glUniform1i64NV(%d, %" PRId64 ")", location, x)); fn.glUniform1i64NV(location, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform1i64vARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform1i64vARB(GLint location, GLsizei count, const GLint64 *value) #endif { D(bug("nfosmesa: glUniform1i64vARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(1 * count, 0); GLint64 __value_tmp[__value_size]; GLint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform1i64vARB(location, count, __value_ptmp); #else fn.glUniform1i64vARB(location, count, HostAddr(value, const GLint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform1i64vNV(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform1i64vNV(GLint location, GLsizei count, const GLint64EXT *value) #endif { D(bug("nfosmesa: glUniform1i64vNV(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(1 * count, 0); GLint64EXT __value_tmp[__value_size]; GLint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform1i64vNV(location, count, __value_ptmp); #else fn.glUniform1i64vNV(location, count, HostAddr(value, const GLint64EXT *)); #endif } void OSMesaDriver::nfglUniform1iARB(GLint location, GLint v0) { D(bug("nfosmesa: glUniform1iARB(%d, %d)", location, v0)); fn.glUniform1iARB(location, v0); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform1iv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform1iv(GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glUniform1iv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM1IV(location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform1ivARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform1ivARB(GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glUniform1ivARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(1 * count, 0); GLint __value_tmp[__value_size]; GLint *__value_ptmp = Atari2HostIntArray(__value_size, value, __value_tmp); fn.glUniform1ivARB(location, count, __value_ptmp); #else fn.glUniform1ivARB(location, count, HostAddr(value, const GLint *)); #endif } void OSMesaDriver::nfglUniform1ui(GLint location, GLuint v0) { D(bug("nfosmesa: glUniform1ui(%d, %u)", location, v0)); fn.glUniform1ui(location, v0); } void OSMesaDriver::nfglUniform1ui64ARB(GLint location, GLuint64 x) { D(bug("nfosmesa: glUniform1ui64ARB(%d, %" PRIu64 ")", location, x)); fn.glUniform1ui64ARB(location, x); } void OSMesaDriver::nfglUniform1ui64NV(GLint location, GLuint64EXT x) { D(bug("nfosmesa: glUniform1ui64NV(%d, %" PRIu64 ")", location, x)); fn.glUniform1ui64NV(location, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform1ui64vARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform1ui64vARB(GLint location, GLsizei count, const GLuint64 *value) #endif { D(bug("nfosmesa: glUniform1ui64vARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(1 * count, 0); GLuint64 __value_tmp[__value_size]; GLuint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform1ui64vARB(location, count, __value_ptmp); #else fn.glUniform1ui64vARB(location, count, HostAddr(value, const GLuint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform1ui64vNV(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform1ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) #endif { D(bug("nfosmesa: glUniform1ui64vNV(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(1 * count, 0); GLuint64EXT __value_tmp[__value_size]; GLuint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform1ui64vNV(location, count, __value_ptmp); #else fn.glUniform1ui64vNV(location, count, HostAddr(value, const GLuint64EXT *)); #endif } void OSMesaDriver::nfglUniform1uiEXT(GLint location, GLuint v0) { D(bug("nfosmesa: glUniform1uiEXT(%d, %u)", location, v0)); fn.glUniform1uiEXT(location, v0); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform1uiv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform1uiv(GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glUniform1uiv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM1UIV(location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform1uivEXT(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform1uivEXT(GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glUniform1uivEXT(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM1UIVEXT(location, count, value); } void OSMesaDriver::nfglUniform2d(GLint location, GLdouble x, GLdouble y) { D(bug("nfosmesa: glUniform2d(%d, %f, %f)", location, x, y)); fn.glUniform2d(location, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform2dv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform2dv(GLint location, GLsizei count, const GLdouble *value) #endif { D(bug("nfosmesa: glUniform2dv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM2DV(location, count, value); } void OSMesaDriver::nfglUniform2f(GLint location, GLfloat v0, GLfloat v1) { D(bug("nfosmesa: glUniform2f(%d, %f, %f)", location, v0, v1)); fn.glUniform2f(location, v0, v1); } void OSMesaDriver::nfglUniform2fARB(GLint location, GLfloat v0, GLfloat v1) { D(bug("nfosmesa: glUniform2fARB(%d, %f, %f)", location, v0, v1)); fn.glUniform2fARB(location, v0, v1); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform2fv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform2fv(GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glUniform2fv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM2FV(location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform2fvARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform2fvARB(GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glUniform2fvARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __value_size = MAX(2 * count, 0); GLfloat __value_tmp[__value_size]; GLfloat *__value_ptmp = Atari2HostFloatArray(__value_size, value, __value_tmp); fn.glUniform2fvARB(location, count, __value_ptmp); #else fn.glUniform2fvARB(location, count, HostAddr(value, const GLfloat *)); #endif } void OSMesaDriver::nfglUniform2i(GLint location, GLint v0, GLint v1) { D(bug("nfosmesa: glUniform2i(%d, %d, %d)", location, v0, v1)); fn.glUniform2i(location, v0, v1); } void OSMesaDriver::nfglUniform2i64ARB(GLint location, GLint64 x, GLint64 y) { D(bug("nfosmesa: glUniform2i64ARB(%d, %" PRId64 ", %" PRId64 ")", location, x, y)); fn.glUniform2i64ARB(location, x, y); } void OSMesaDriver::nfglUniform2i64NV(GLint location, GLint64EXT x, GLint64EXT y) { D(bug("nfosmesa: glUniform2i64NV(%d, %" PRId64 ", %" PRId64 ")", location, x, y)); fn.glUniform2i64NV(location, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform2i64vARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform2i64vARB(GLint location, GLsizei count, const GLint64 *value) #endif { D(bug("nfosmesa: glUniform2i64vARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(2 * count, 0); GLint64 __value_tmp[__value_size]; GLint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform2i64vARB(location, count, __value_ptmp); #else fn.glUniform2i64vARB(location, count, HostAddr(value, const GLint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform2i64vNV(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform2i64vNV(GLint location, GLsizei count, const GLint64EXT *value) #endif { D(bug("nfosmesa: glUniform2i64vNV(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(2 * count, 0); GLint64EXT __value_tmp[__value_size]; GLint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform2i64vNV(location, count, __value_ptmp); #else fn.glUniform2i64vNV(location, count, HostAddr(value, const GLint64EXT *)); #endif } void OSMesaDriver::nfglUniform2iARB(GLint location, GLint v0, GLint v1) { D(bug("nfosmesa: glUniform2iARB(%d, %d, %d)", location, v0, v1)); fn.glUniform2iARB(location, v0, v1); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform2iv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform2iv(GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glUniform2iv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM2IV(location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform2ivARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform2ivARB(GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glUniform2ivARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(2 * count, 0); GLint __value_tmp[__value_size]; GLint *__value_ptmp = Atari2HostIntArray(__value_size, value, __value_tmp); fn.glUniform2ivARB(location, count, __value_ptmp); #else fn.glUniform2ivARB(location, count, HostAddr(value, const GLint *)); #endif } void OSMesaDriver::nfglUniform2ui(GLint location, GLuint v0, GLuint v1) { D(bug("nfosmesa: glUniform2ui(%d, %u, %u)", location, v0, v1)); fn.glUniform2ui(location, v0, v1); } void OSMesaDriver::nfglUniform2ui64ARB(GLint location, GLuint64 x, GLuint64 y) { D(bug("nfosmesa: glUniform2ui64ARB(%d, %" PRIu64 ", %" PRIu64 ")", location, x, y)); fn.glUniform2ui64ARB(location, x, y); } void OSMesaDriver::nfglUniform2ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y) { D(bug("nfosmesa: glUniform2ui64NV(%d, %" PRIu64 ", %" PRIu64 ")", location, x, y)); fn.glUniform2ui64NV(location, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform2ui64vARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform2ui64vARB(GLint location, GLsizei count, const GLuint64 *value) #endif { D(bug("nfosmesa: glUniform2ui64vARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(2 * count, 0); GLuint64 __value_tmp[__value_size]; GLuint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform2ui64vARB(location, count, __value_ptmp); #else fn.glUniform2ui64vARB(location, count, HostAddr(value, const GLuint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform2ui64vNV(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform2ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) #endif { D(bug("nfosmesa: glUniform2ui64vNV(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(2 * count, 0); GLuint64EXT __value_tmp[__value_size]; GLuint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform2ui64vNV(location, count, __value_ptmp); #else fn.glUniform2ui64vNV(location, count, HostAddr(value, const GLuint64EXT *)); #endif } void OSMesaDriver::nfglUniform2uiEXT(GLint location, GLuint v0, GLuint v1) { D(bug("nfosmesa: glUniform2uiEXT(%d, %u, %u)", location, v0, v1)); fn.glUniform2uiEXT(location, v0, v1); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform2uiv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform2uiv(GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glUniform2uiv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM2UIV(location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform2uivEXT(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform2uivEXT(GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glUniform2uivEXT(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM2UIVEXT(location, count, value); } void OSMesaDriver::nfglUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glUniform3d(%d, %f, %f, %f)", location, x, y, z)); fn.glUniform3d(location, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform3dv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform3dv(GLint location, GLsizei count, const GLdouble *value) #endif { D(bug("nfosmesa: glUniform3dv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM3DV(location, count, value); } void OSMesaDriver::nfglUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) { D(bug("nfosmesa: glUniform3f(%d, %f, %f, %f)", location, v0, v1, v2)); fn.glUniform3f(location, v0, v1, v2); } void OSMesaDriver::nfglUniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) { D(bug("nfosmesa: glUniform3fARB(%d, %f, %f, %f)", location, v0, v1, v2)); fn.glUniform3fARB(location, v0, v1, v2); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform3fv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform3fv(GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glUniform3fv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM3FV(location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform3fvARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform3fvARB(GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glUniform3fvARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __value_size = MAX(3 * count, 0); GLfloat __value_tmp[__value_size]; GLfloat *__value_ptmp = Atari2HostFloatArray(__value_size, value, __value_tmp); fn.glUniform3fvARB(location, count, __value_ptmp); #else fn.glUniform3fvARB(location, count, HostAddr(value, const GLfloat *)); #endif } void OSMesaDriver::nfglUniform3i(GLint location, GLint v0, GLint v1, GLint v2) { D(bug("nfosmesa: glUniform3i(%d, %d, %d, %d)", location, v0, v1, v2)); fn.glUniform3i(location, v0, v1, v2); } void OSMesaDriver::nfglUniform3i64ARB(GLint location, GLint64 x, GLint64 y, GLint64 z) { D(bug("nfosmesa: glUniform3i64ARB(%d, %" PRId64 ", %" PRId64 ", %" PRId64 ")", location, x, y, z)); fn.glUniform3i64ARB(location, x, y, z); } void OSMesaDriver::nfglUniform3i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) { D(bug("nfosmesa: glUniform3i64NV(%d, %" PRId64 ", %" PRId64 ", %" PRId64 ")", location, x, y, z)); fn.glUniform3i64NV(location, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform3i64vARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform3i64vARB(GLint location, GLsizei count, const GLint64 *value) #endif { D(bug("nfosmesa: glUniform3i64vARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(3 * count, 0); GLint64 __value_tmp[__value_size]; GLint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform3i64vARB(location, count, __value_ptmp); #else fn.glUniform3i64vARB(location, count, HostAddr(value, const GLint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform3i64vNV(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform3i64vNV(GLint location, GLsizei count, const GLint64EXT *value) #endif { D(bug("nfosmesa: glUniform3i64vNV(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(3 * count, 0); GLint64EXT __value_tmp[__value_size]; GLint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform3i64vNV(location, count, __value_ptmp); #else fn.glUniform3i64vNV(location, count, HostAddr(value, const GLint64EXT *)); #endif } void OSMesaDriver::nfglUniform3iARB(GLint location, GLint v0, GLint v1, GLint v2) { D(bug("nfosmesa: glUniform3iARB(%d, %d, %d, %d)", location, v0, v1, v2)); fn.glUniform3iARB(location, v0, v1, v2); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform3iv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform3iv(GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glUniform3iv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM3IV(location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform3ivARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform3ivARB(GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glUniform3ivARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(3 * count, 0); GLint __value_tmp[__value_size]; GLint *__value_ptmp = Atari2HostIntArray(__value_size, value, __value_tmp); fn.glUniform3ivARB(location, count, __value_ptmp); #else fn.glUniform3ivARB(location, count, HostAddr(value, const GLint *)); #endif } void OSMesaDriver::nfglUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) { D(bug("nfosmesa: glUniform3ui(%d, %u, %u, %u)", location, v0, v1, v2)); fn.glUniform3ui(location, v0, v1, v2); } void OSMesaDriver::nfglUniform3ui64ARB(GLint location, GLuint64 x, GLuint64 y, GLuint64 z) { D(bug("nfosmesa: glUniform3ui64ARB(%d, %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", location, x, y, z)); fn.glUniform3ui64ARB(location, x, y, z); } void OSMesaDriver::nfglUniform3ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) { D(bug("nfosmesa: glUniform3ui64NV(%d, %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", location, x, y, z)); fn.glUniform3ui64NV(location, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform3ui64vARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform3ui64vARB(GLint location, GLsizei count, const GLuint64 *value) #endif { D(bug("nfosmesa: glUniform3ui64vARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(3 * count, 0); GLuint64 __value_tmp[__value_size]; GLuint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform3ui64vARB(location, count, __value_ptmp); #else fn.glUniform3ui64vARB(location, count, HostAddr(value, const GLuint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform3ui64vNV(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform3ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) #endif { D(bug("nfosmesa: glUniform3ui64vNV(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(3 * count, 0); GLuint64EXT __value_tmp[__value_size]; GLuint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform3ui64vNV(location, count, __value_ptmp); #else fn.glUniform3ui64vNV(location, count, HostAddr(value, const GLuint64EXT *)); #endif } void OSMesaDriver::nfglUniform3uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2) { D(bug("nfosmesa: glUniform3uiEXT(%d, %u, %u, %u)", location, v0, v1, v2)); fn.glUniform3uiEXT(location, v0, v1, v2); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform3uiv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform3uiv(GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glUniform3uiv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM3UIV(location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform3uivEXT(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform3uivEXT(GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glUniform3uivEXT(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM3UIVEXT(location, count, value); } void OSMesaDriver::nfglUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glUniform4d(%d, %f, %f, %f, %f)", location, x, y, z, w)); fn.glUniform4d(location, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform4dv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform4dv(GLint location, GLsizei count, const GLdouble *value) #endif { D(bug("nfosmesa: glUniform4dv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM4DV(location, count, value); } void OSMesaDriver::nfglUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) { D(bug("nfosmesa: glUniform4f(%d, %f, %f, %f, %f)", location, v0, v1, v2, v3)); fn.glUniform4f(location, v0, v1, v2, v3); } void OSMesaDriver::nfglUniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) { D(bug("nfosmesa: glUniform4fARB(%d, %f, %f, %f, %f)", location, v0, v1, v2, v3)); fn.glUniform4fARB(location, v0, v1, v2, v3); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform4fv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform4fv(GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glUniform4fv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM4FV(location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform4fvARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform4fvARB(GLint location, GLsizei count, const GLfloat *value) #endif { D(bug("nfosmesa: glUniform4fvARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __value_size = MAX(4 * count, 0); GLfloat __value_tmp[__value_size]; GLfloat *__value_ptmp = Atari2HostFloatArray(__value_size, value, __value_tmp); fn.glUniform4fvARB(location, count, __value_ptmp); #else fn.glUniform4fvARB(location, count, HostAddr(value, const GLfloat *)); #endif } void OSMesaDriver::nfglUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) { D(bug("nfosmesa: glUniform4i(%d, %d, %d, %d, %d)", location, v0, v1, v2, v3)); fn.glUniform4i(location, v0, v1, v2, v3); } void OSMesaDriver::nfglUniform4i64ARB(GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w) { D(bug("nfosmesa: glUniform4i64ARB(%d, %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", location, x, y, z, w)); fn.glUniform4i64ARB(location, x, y, z, w); } void OSMesaDriver::nfglUniform4i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) { D(bug("nfosmesa: glUniform4i64NV(%d, %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", location, x, y, z, w)); fn.glUniform4i64NV(location, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform4i64vARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform4i64vARB(GLint location, GLsizei count, const GLint64 *value) #endif { D(bug("nfosmesa: glUniform4i64vARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(4 * count, 0); GLint64 __value_tmp[__value_size]; GLint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform4i64vARB(location, count, __value_ptmp); #else fn.glUniform4i64vARB(location, count, HostAddr(value, const GLint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform4i64vNV(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform4i64vNV(GLint location, GLsizei count, const GLint64EXT *value) #endif { D(bug("nfosmesa: glUniform4i64vNV(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(4 * count, 0); GLint64EXT __value_tmp[__value_size]; GLint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform4i64vNV(location, count, __value_ptmp); #else fn.glUniform4i64vNV(location, count, HostAddr(value, const GLint64EXT *)); #endif } void OSMesaDriver::nfglUniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) { D(bug("nfosmesa: glUniform4iARB(%d, %d, %d, %d, %d)", location, v0, v1, v2, v3)); fn.glUniform4iARB(location, v0, v1, v2, v3); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform4iv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform4iv(GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glUniform4iv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM4IV(location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform4ivARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform4ivARB(GLint location, GLsizei count, const GLint *value) #endif { D(bug("nfosmesa: glUniform4ivARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(4 * count, 0); GLint __value_tmp[__value_size]; GLint *__value_ptmp = Atari2HostIntArray(__value_size, value, __value_tmp); fn.glUniform4ivARB(location, count, __value_ptmp); #else fn.glUniform4ivARB(location, count, HostAddr(value, const GLint *)); #endif } void OSMesaDriver::nfglUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { D(bug("nfosmesa: glUniform4ui(%d, %u, %u, %u, %u)", location, v0, v1, v2, v3)); fn.glUniform4ui(location, v0, v1, v2, v3); } void OSMesaDriver::nfglUniform4ui64ARB(GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w) { D(bug("nfosmesa: glUniform4ui64ARB(%d, %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", location, x, y, z, w)); fn.glUniform4ui64ARB(location, x, y, z, w); } void OSMesaDriver::nfglUniform4ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) { D(bug("nfosmesa: glUniform4ui64NV(%d, %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", location, x, y, z, w)); fn.glUniform4ui64NV(location, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform4ui64vARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform4ui64vARB(GLint location, GLsizei count, const GLuint64 *value) #endif { D(bug("nfosmesa: glUniform4ui64vARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(4 * count, 0); GLuint64 __value_tmp[__value_size]; GLuint64 *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform4ui64vARB(location, count, __value_ptmp); #else fn.glUniform4ui64vARB(location, count, HostAddr(value, const GLuint64 *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform4ui64vNV(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform4ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) #endif { D(bug("nfosmesa: glUniform4ui64vNV(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); #if NFOSMESA_NEED_INT_CONV GLint const __value_size = MAX(4 * count, 0); GLuint64EXT __value_tmp[__value_size]; GLuint64EXT *__value_ptmp = Atari2HostInt64Array(__value_size, value, __value_tmp); fn.glUniform4ui64vNV(location, count, __value_ptmp); #else fn.glUniform4ui64vNV(location, count, HostAddr(value, const GLuint64EXT *)); #endif } void OSMesaDriver::nfglUniform4uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { D(bug("nfosmesa: glUniform4uiEXT(%d, %u, %u, %u, %u)", location, v0, v1, v2, v3)); fn.glUniform4uiEXT(location, v0, v1, v2, v3); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform4uiv(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform4uiv(GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glUniform4uiv(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM4UIV(location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniform4uivEXT(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniform4uivEXT(GLint location, GLsizei count, const GLuint *value) #endif { D(bug("nfosmesa: glUniform4uivEXT(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORM4UIVEXT(location, count, value); } void OSMesaDriver::nfglUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) { D(bug("nfosmesa: glUniformBlockBinding(%u, %u, %u)", program, uniformBlockIndex, uniformBlockBinding)); fn.glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); } void OSMesaDriver::nfglUniformBufferEXT(GLuint program, GLint location, GLuint buffer) { D(bug("nfosmesa: glUniformBufferEXT(%u, %d, %u)", program, location, buffer)); fn.glUniformBufferEXT(program, location, buffer); } void OSMesaDriver::nfglUniformHandleui64ARB(GLint location, GLuint64 value) { D(bug("nfosmesa: glUniformHandleui64ARB(%d, %" PRIu64 ")", location, value)); fn.glUniformHandleui64ARB(location, value); } void OSMesaDriver::nfglUniformHandleui64NV(GLint location, GLuint64 value) { D(bug("nfosmesa: glUniformHandleui64NV(%d, %" PRIu64 ")", location, value)); fn.glUniformHandleui64NV(location, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformHandleui64vARB(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniformHandleui64vARB(GLint location, GLsizei count, const GLuint64 *value) #endif { D(bug("nfosmesa: glUniformHandleui64vARB(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORMHANDLEUI64VARB(location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformHandleui64vNV(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniformHandleui64vNV(GLint location, GLsizei count, const GLuint64 *value) #endif { D(bug("nfosmesa: glUniformHandleui64vNV(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORMHANDLEUI64VNV(location, count, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix2dv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix2dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glUniformMatrix2dv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX2DV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix2fv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix2fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glUniformMatrix2fv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX2FV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix2fvARB(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix2fvARB(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glUniformMatrix2fvARB(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __value_size = MAX(4 * count, 0); GLfloat __value_tmp[__value_size]; GLfloat *__value_ptmp = Atari2HostFloatArray(__value_size, value, __value_tmp); fn.glUniformMatrix2fvARB(location, count, transpose, __value_ptmp); #else fn.glUniformMatrix2fvARB(location, count, transpose, HostAddr(value, const GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glUniformMatrix2x3dv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX2X3DV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glUniformMatrix2x3fv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX2X3FV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glUniformMatrix2x4dv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX2X4DV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glUniformMatrix2x4fv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX2X4FV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix3dv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix3dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glUniformMatrix3dv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX3DV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix3fv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix3fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glUniformMatrix3fv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX3FV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix3fvARB(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix3fvARB(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glUniformMatrix3fvARB(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __value_size = MAX(9 * count, 0); GLfloat __value_tmp[__value_size]; GLfloat *__value_ptmp = Atari2HostFloatArray(__value_size, value, __value_tmp); fn.glUniformMatrix3fvARB(location, count, transpose, __value_ptmp); #else fn.glUniformMatrix3fvARB(location, count, transpose, HostAddr(value, const GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glUniformMatrix3x2dv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX3X2DV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glUniformMatrix3x2fv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX3X2FV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glUniformMatrix3x4dv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX3X4DV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glUniformMatrix3x4fv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX3X4FV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix4dv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix4dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glUniformMatrix4dv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX4DV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix4fv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix4fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glUniformMatrix4fv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX4FV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix4fvARB(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix4fvARB(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glUniformMatrix4fvARB(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); #if NFOSMESA_NEED_FLOAT_CONV GLint const __value_size = MAX(16 * count, 0); GLfloat __value_tmp[__value_size]; GLfloat *__value_ptmp = Atari2HostFloatArray(__value_size, value, __value_tmp); fn.glUniformMatrix4fvARB(location, count, transpose, __value_ptmp); #else fn.glUniformMatrix4fvARB(location, count, transpose, HostAddr(value, const GLfloat *)); #endif } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glUniformMatrix4x2dv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX4X2DV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glUniformMatrix4x2fv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX4X2FV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) #endif { D(bug("nfosmesa: glUniformMatrix4x3dv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX4X3DV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean32 transpose, memptr value) #else void OSMesaDriver::nfglUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) #endif { D(bug("nfosmesa: glUniformMatrix4x3fv(%d, %d, %d, " PRI_PTR ")", location, count, transpose, AtariOffset(value))); FN_GLUNIFORMMATRIX4X3FV(location, count, transpose, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformSubroutinesuiv(GLenum shadertype, GLsizei count, memptr indices) #else void OSMesaDriver::nfglUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) #endif { D(bug("nfosmesa: glUniformSubroutinesuiv(%s, %d, " PRI_PTR ")", gl_enum_name(shadertype), count, AtariOffset(indices))); FN_GLUNIFORMSUBROUTINESUIV(shadertype, count, indices); } void OSMesaDriver::nfglUniformui64NV(GLint location, GLuint64EXT value) { D(bug("nfosmesa: glUniformui64NV(%d, %" PRIu64 ")", location, value)); fn.glUniformui64NV(location, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUniformui64vNV(GLint location, GLsizei count, memptr value) #else void OSMesaDriver::nfglUniformui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) #endif { D(bug("nfosmesa: glUniformui64vNV(%d, %d, " PRI_PTR ")", location, count, AtariOffset(value))); FN_GLUNIFORMUI64VNV(location, count, value); } void OSMesaDriver::nfglUnlockArraysEXT(void) { D(bug("nfosmesa: glUnlockArraysEXT()")); fn.glUnlockArraysEXT(); } GLboolean OSMesaDriver::nfglUnmapBuffer(GLenum target) { D(bug("nfosmesa: glUnmapBuffer(%s)", gl_enum_name(target))); GLboolean __ret = fn.glUnmapBuffer(target); return __ret; } GLboolean OSMesaDriver::nfglUnmapBufferARB(GLenum target) { D(bug("nfosmesa: glUnmapBufferARB(%s)", gl_enum_name(target))); GLboolean __ret = fn.glUnmapBufferARB(target); return __ret; } GLboolean OSMesaDriver::nfglUnmapNamedBuffer(GLuint buffer) { D(bug("nfosmesa: glUnmapNamedBuffer(%u)", buffer)); GLboolean __ret = fn.glUnmapNamedBuffer(buffer); return __ret; } GLboolean OSMesaDriver::nfglUnmapNamedBufferEXT(GLuint buffer) { D(bug("nfosmesa: glUnmapNamedBufferEXT(%u)", buffer)); GLboolean __ret = fn.glUnmapNamedBufferEXT(buffer); return __ret; } void OSMesaDriver::nfglUnmapObjectBufferATI(GLuint buffer) { D(bug("nfosmesa: glUnmapObjectBufferATI(%u)", buffer)); fn.glUnmapObjectBufferATI(buffer); } void OSMesaDriver::nfglUnmapTexture2DINTEL(GLuint texture, GLint level) { D(bug("nfosmesa: glUnmapTexture2DINTEL(%u, %d)", texture, level)); fn.glUnmapTexture2DINTEL(texture, level); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglUpdateObjectBufferATI(GLuint buffer, GLuint offset, GLsizei size, memptr pointer, GLenum preserve) #else void OSMesaDriver::nfglUpdateObjectBufferATI(GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve) #endif { D(bug("nfosmesa: glUpdateObjectBufferATI(%u, %u, %d, " PRI_PTR ", %s)", buffer, offset, size, AtariOffset(pointer), gl_enum_name(preserve))); FN_GLUPDATEOBJECTBUFFERATI(buffer, offset, size, pointer, preserve); } void OSMesaDriver::nfglUseProgram(GLuint program) { D(bug("nfosmesa: glUseProgram(%u)", program)); fn.glUseProgram(program); } void OSMesaDriver::nfglUseProgramObjectARB(GLhandleARB programObj) { D(bug("nfosmesa: glUseProgramObjectARB(%u)", (unsigned int)(uintptr_t)programObj)); fn.glUseProgramObjectARB(programObj); } void OSMesaDriver::nfglUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) { D(bug("nfosmesa: glUseProgramStages(%u, 0x%x, %u)", pipeline, stages, program)); fn.glUseProgramStages(pipeline, stages, program); } void OSMesaDriver::nfglUseShaderProgramEXT(GLenum type, GLuint program) { D(bug("nfosmesa: glUseShaderProgramEXT(%s, %u)", gl_enum_name(type), program)); fn.glUseShaderProgramEXT(type, program); } #if 0 void OSMesaDriver::nfglVDPAUFiniNV(void) { D(bug("nfosmesa: glVDPAUFiniNV()")); FN_GLVDPAUFININV(); } #endif #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVDPAUGetSurfaceivNV(GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, memptr length, memptr values) #else void OSMesaDriver::nfglVDPAUGetSurfaceivNV(GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) #endif { D(bug("nfosmesa: glVDPAUGetSurfaceivNV(" PRI_IPTR ", %s, %d, " PRI_PTR ", " PRI_PTR ")", surface, gl_enum_name(pname), bufSize, AtariOffset(length), AtariOffset(values))); FN_GLVDPAUGETSURFACEIVNV(surface, pname, bufSize, length, values); } #endif #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVDPAUInitNV(memptr vdpDevice, memptr getProcAddress) #else void OSMesaDriver::nfglVDPAUInitNV(const void *vdpDevice, const void *getProcAddress) #endif { D(bug("nfosmesa: glVDPAUInitNV(" PRI_PTR ", " PRI_PTR ")", AtariOffset(vdpDevice), AtariOffset(getProcAddress))); FN_GLVDPAUINITNV(vdpDevice, getProcAddress); } #endif #if 0 GLboolean OSMesaDriver::nfglVDPAUIsSurfaceNV(GLvdpauSurfaceNV surface) { D(bug("nfosmesa: glVDPAUIsSurfaceNV(" PRI_IPTR ")", surface)); FN_GLVDPAUISSURFACENV(surface); } #endif #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVDPAUMapSurfacesNV(GLsizei numSurfaces, memptr surfaces) #else void OSMesaDriver::nfglVDPAUMapSurfacesNV(GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces) #endif { D(bug("nfosmesa: glVDPAUMapSurfacesNV(%d, " PRI_PTR ")", numSurfaces, AtariOffset(surfaces))); FN_GLVDPAUMAPSURFACESNV(numSurfaces, surfaces); } #endif #if 0 #if NFOSMESA_POINTER_AS_MEMARG GLvdpauSurfaceNV OSMesaDriver::nfglVDPAURegisterOutputSurfaceNV(memptr vdpSurface, GLenum target, GLsizei numTextureNames, memptr textureNames) #else GLvdpauSurfaceNV OSMesaDriver::nfglVDPAURegisterOutputSurfaceNV(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames) #endif { D(bug("nfosmesa: glVDPAURegisterOutputSurfaceNV(" PRI_PTR ", %s, %d, " PRI_PTR ")", AtariOffset(vdpSurface), gl_enum_name(target), numTextureNames, AtariOffset(textureNames))); FN_GLVDPAUREGISTEROUTPUTSURFACENV(vdpSurface, target, numTextureNames, textureNames); } #endif #if 0 #if NFOSMESA_POINTER_AS_MEMARG GLvdpauSurfaceNV OSMesaDriver::nfglVDPAURegisterVideoSurfaceNV(memptr vdpSurface, GLenum target, GLsizei numTextureNames, memptr textureNames) #else GLvdpauSurfaceNV OSMesaDriver::nfglVDPAURegisterVideoSurfaceNV(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames) #endif { D(bug("nfosmesa: glVDPAURegisterVideoSurfaceNV(" PRI_PTR ", %s, %d, " PRI_PTR ")", AtariOffset(vdpSurface), gl_enum_name(target), numTextureNames, AtariOffset(textureNames))); FN_GLVDPAUREGISTERVIDEOSURFACENV(vdpSurface, target, numTextureNames, textureNames); } #endif #if 0 void OSMesaDriver::nfglVDPAUSurfaceAccessNV(GLvdpauSurfaceNV surface, GLenum access) { D(bug("nfosmesa: glVDPAUSurfaceAccessNV(" PRI_IPTR ", %s)", surface, gl_enum_name(access))); FN_GLVDPAUSURFACEACCESSNV(surface, access); } #endif #if 0 #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVDPAUUnmapSurfacesNV(GLsizei numSurface, memptr surfaces) #else void OSMesaDriver::nfglVDPAUUnmapSurfacesNV(GLsizei numSurface, const GLvdpauSurfaceNV *surfaces) #endif { D(bug("nfosmesa: glVDPAUUnmapSurfacesNV(%d, " PRI_PTR ")", numSurface, AtariOffset(surfaces))); FN_GLVDPAUUNMAPSURFACESNV(numSurface, surfaces); } #endif #if 0 void OSMesaDriver::nfglVDPAUUnregisterSurfaceNV(GLvdpauSurfaceNV surface) { D(bug("nfosmesa: glVDPAUUnregisterSurfaceNV(" PRI_IPTR ")", surface)); FN_GLVDPAUUNREGISTERSURFACENV(surface); } #endif void OSMesaDriver::nfglValidateProgram(GLuint program) { D(bug("nfosmesa: glValidateProgram(%u)", program)); fn.glValidateProgram(program); } void OSMesaDriver::nfglValidateProgramARB(GLhandleARB programObj) { D(bug("nfosmesa: glValidateProgramARB(%u)", (unsigned int)(uintptr_t)programObj)); fn.glValidateProgramARB(programObj); } void OSMesaDriver::nfglValidateProgramPipeline(GLuint pipeline) { D(bug("nfosmesa: glValidateProgramPipeline(%u)", pipeline)); fn.glValidateProgramPipeline(pipeline); } void OSMesaDriver::nfglVariantArrayObjectATI(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset) { D(bug("nfosmesa: glVariantArrayObjectATI(%u, %s, %d, %u, %u)", id, gl_enum_name(type), stride, buffer, offset)); fn.glVariantArrayObjectATI(id, type, stride, buffer, offset); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVariantPointerEXT(GLuint id, GLenum type, GLuint stride, memptr addr) #else void OSMesaDriver::nfglVariantPointerEXT(GLuint id, GLenum type, GLuint stride, const void *addr) #endif { D(bug("nfosmesa: glVariantPointerEXT(%u, %s, %u, " PRI_PTR ")", id, gl_enum_name(type), stride, AtariOffset(addr))); FN_GLVARIANTPOINTEREXT(id, type, stride, addr); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVariantbvEXT(GLuint id, memptr addr) #else void OSMesaDriver::nfglVariantbvEXT(GLuint id, const GLbyte *addr) #endif { D(bug("nfosmesa: glVariantbvEXT(%u, " PRI_PTR ")", id, AtariOffset(addr))); FN_GLVARIANTBVEXT(id, addr); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVariantdvEXT(GLuint id, memptr addr) #else void OSMesaDriver::nfglVariantdvEXT(GLuint id, const GLdouble *addr) #endif { D(bug("nfosmesa: glVariantdvEXT(%u, " PRI_PTR ")", id, AtariOffset(addr))); FN_GLVARIANTDVEXT(id, addr); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVariantfvEXT(GLuint id, memptr addr) #else void OSMesaDriver::nfglVariantfvEXT(GLuint id, const GLfloat *addr) #endif { D(bug("nfosmesa: glVariantfvEXT(%u, " PRI_PTR ")", id, AtariOffset(addr))); FN_GLVARIANTFVEXT(id, addr); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVariantivEXT(GLuint id, memptr addr) #else void OSMesaDriver::nfglVariantivEXT(GLuint id, const GLint *addr) #endif { D(bug("nfosmesa: glVariantivEXT(%u, " PRI_PTR ")", id, AtariOffset(addr))); FN_GLVARIANTIVEXT(id, addr); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVariantsvEXT(GLuint id, memptr addr) #else void OSMesaDriver::nfglVariantsvEXT(GLuint id, const GLshort *addr) #endif { D(bug("nfosmesa: glVariantsvEXT(%u, " PRI_PTR ")", id, AtariOffset(addr))); FN_GLVARIANTSVEXT(id, addr); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVariantubvEXT(GLuint id, memptr addr) #else void OSMesaDriver::nfglVariantubvEXT(GLuint id, const GLubyte *addr) #endif { D(bug("nfosmesa: glVariantubvEXT(%u, " PRI_PTR ")", id, AtariOffset(addr))); FN_GLVARIANTUBVEXT(id, addr); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVariantuivEXT(GLuint id, memptr addr) #else void OSMesaDriver::nfglVariantuivEXT(GLuint id, const GLuint *addr) #endif { D(bug("nfosmesa: glVariantuivEXT(%u, " PRI_PTR ")", id, AtariOffset(addr))); FN_GLVARIANTUIVEXT(id, addr); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVariantusvEXT(GLuint id, memptr addr) #else void OSMesaDriver::nfglVariantusvEXT(GLuint id, const GLushort *addr) #endif { D(bug("nfosmesa: glVariantusvEXT(%u, " PRI_PTR ")", id, AtariOffset(addr))); FN_GLVARIANTUSVEXT(id, addr); } void OSMesaDriver::nfglVertex2bOES(GLbyte32 x, GLbyte32 y) { D(bug("nfosmesa: glVertex2bOES(%d, %d)", x, y)); fn.glVertex2bOES(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex2bvOES(memptr coords) #else void OSMesaDriver::nfglVertex2bvOES(const GLbyte *coords) #endif { D(bug("nfosmesa: glVertex2bvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLVERTEX2BVOES(coords); } void OSMesaDriver::nfglVertex2d(GLdouble x, GLdouble y) { D(bug("nfosmesa: glVertex2d(%f, %f)", x, y)); fn.glVertex2d(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex2dv(memptr v) #else void OSMesaDriver::nfglVertex2dv(const GLdouble *v) #endif { D(bug("nfosmesa: glVertex2dv(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX2DV(v); } void OSMesaDriver::nfglVertex2f(GLfloat x, GLfloat y) { D(bug("nfosmesa: glVertex2f(%f, %f)", x, y)); fn.glVertex2f(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex2fv(memptr v) #else void OSMesaDriver::nfglVertex2fv(const GLfloat *v) #endif { D(bug("nfosmesa: glVertex2fv(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX2FV(v); } void OSMesaDriver::nfglVertex2hNV(GLhalfNV32 x, GLhalfNV32 y) { D(bug("nfosmesa: glVertex2hNV(%u, %u)", x, y)); fn.glVertex2hNV(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex2hvNV(memptr v) #else void OSMesaDriver::nfglVertex2hvNV(const GLhalfNV *v) #endif { D(bug("nfosmesa: glVertex2hvNV(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX2HVNV(v); } void OSMesaDriver::nfglVertex2i(GLint x, GLint y) { D(bug("nfosmesa: glVertex2i(%d, %d)", x, y)); fn.glVertex2i(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex2iv(memptr v) #else void OSMesaDriver::nfglVertex2iv(const GLint *v) #endif { D(bug("nfosmesa: glVertex2iv(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX2IV(v); } void OSMesaDriver::nfglVertex2s(GLshort32 x, GLshort32 y) { D(bug("nfosmesa: glVertex2s(%d, %d)", x, y)); fn.glVertex2s(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex2sv(memptr v) #else void OSMesaDriver::nfglVertex2sv(const GLshort *v) #endif { D(bug("nfosmesa: glVertex2sv(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX2SV(v); } void OSMesaDriver::nfglVertex2xOES(GLfixed x) { D(bug("nfosmesa: glVertex2xOES(0x%x)", x)); fn.glVertex2xOES(x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex2xvOES(memptr coords) #else void OSMesaDriver::nfglVertex2xvOES(const GLfixed *coords) #endif { D(bug("nfosmesa: glVertex2xvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLVERTEX2XVOES(coords); } void OSMesaDriver::nfglVertex3bOES(GLbyte32 x, GLbyte32 y, GLbyte32 z) { D(bug("nfosmesa: glVertex3bOES(%d, %d, %d)", x, y, z)); fn.glVertex3bOES(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex3bvOES(memptr coords) #else void OSMesaDriver::nfglVertex3bvOES(const GLbyte *coords) #endif { D(bug("nfosmesa: glVertex3bvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLVERTEX3BVOES(coords); } void OSMesaDriver::nfglVertex3d(GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glVertex3d(%f, %f, %f)", x, y, z)); fn.glVertex3d(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex3dv(memptr v) #else void OSMesaDriver::nfglVertex3dv(const GLdouble *v) #endif { D(bug("nfosmesa: glVertex3dv(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX3DV(v); } void OSMesaDriver::nfglVertex3f(GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glVertex3f(%f, %f, %f)", x, y, z)); fn.glVertex3f(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex3fv(memptr v) #else void OSMesaDriver::nfglVertex3fv(const GLfloat *v) #endif { D(bug("nfosmesa: glVertex3fv(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX3FV(v); } void OSMesaDriver::nfglVertex3hNV(GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z) { D(bug("nfosmesa: glVertex3hNV(%u, %u, %u)", x, y, z)); fn.glVertex3hNV(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex3hvNV(memptr v) #else void OSMesaDriver::nfglVertex3hvNV(const GLhalfNV *v) #endif { D(bug("nfosmesa: glVertex3hvNV(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX3HVNV(v); } void OSMesaDriver::nfglVertex3i(GLint x, GLint y, GLint z) { D(bug("nfosmesa: glVertex3i(%d, %d, %d)", x, y, z)); fn.glVertex3i(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex3iv(memptr v) #else void OSMesaDriver::nfglVertex3iv(const GLint *v) #endif { D(bug("nfosmesa: glVertex3iv(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX3IV(v); } void OSMesaDriver::nfglVertex3s(GLshort32 x, GLshort32 y, GLshort32 z) { D(bug("nfosmesa: glVertex3s(%d, %d, %d)", x, y, z)); fn.glVertex3s(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex3sv(memptr v) #else void OSMesaDriver::nfglVertex3sv(const GLshort *v) #endif { D(bug("nfosmesa: glVertex3sv(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX3SV(v); } void OSMesaDriver::nfglVertex3xOES(GLfixed x, GLfixed y) { D(bug("nfosmesa: glVertex3xOES(0x%x, 0x%x)", x, y)); fn.glVertex3xOES(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex3xvOES(memptr coords) #else void OSMesaDriver::nfglVertex3xvOES(const GLfixed *coords) #endif { D(bug("nfosmesa: glVertex3xvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLVERTEX3XVOES(coords); } void OSMesaDriver::nfglVertex4bOES(GLbyte32 x, GLbyte32 y, GLbyte32 z, GLbyte32 w) { D(bug("nfosmesa: glVertex4bOES(%d, %d, %d, %d)", x, y, z, w)); fn.glVertex4bOES(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex4bvOES(memptr coords) #else void OSMesaDriver::nfglVertex4bvOES(const GLbyte *coords) #endif { D(bug("nfosmesa: glVertex4bvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLVERTEX4BVOES(coords); } void OSMesaDriver::nfglVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glVertex4d(%f, %f, %f, %f)", x, y, z, w)); fn.glVertex4d(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex4dv(memptr v) #else void OSMesaDriver::nfglVertex4dv(const GLdouble *v) #endif { D(bug("nfosmesa: glVertex4dv(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX4DV(v); } void OSMesaDriver::nfglVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { D(bug("nfosmesa: glVertex4f(%f, %f, %f, %f)", x, y, z, w)); fn.glVertex4f(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex4fv(memptr v) #else void OSMesaDriver::nfglVertex4fv(const GLfloat *v) #endif { D(bug("nfosmesa: glVertex4fv(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX4FV(v); } void OSMesaDriver::nfglVertex4hNV(GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w) { D(bug("nfosmesa: glVertex4hNV(%u, %u, %u, %u)", x, y, z, w)); fn.glVertex4hNV(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex4hvNV(memptr v) #else void OSMesaDriver::nfglVertex4hvNV(const GLhalfNV *v) #endif { D(bug("nfosmesa: glVertex4hvNV(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX4HVNV(v); } void OSMesaDriver::nfglVertex4i(GLint x, GLint y, GLint z, GLint w) { D(bug("nfosmesa: glVertex4i(%d, %d, %d, %d)", x, y, z, w)); fn.glVertex4i(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex4iv(memptr v) #else void OSMesaDriver::nfglVertex4iv(const GLint *v) #endif { D(bug("nfosmesa: glVertex4iv(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX4IV(v); } void OSMesaDriver::nfglVertex4s(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w) { D(bug("nfosmesa: glVertex4s(%d, %d, %d, %d)", x, y, z, w)); fn.glVertex4s(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex4sv(memptr v) #else void OSMesaDriver::nfglVertex4sv(const GLshort *v) #endif { D(bug("nfosmesa: glVertex4sv(" PRI_PTR ")", AtariOffset(v))); FN_GLVERTEX4SV(v); } void OSMesaDriver::nfglVertex4xOES(GLfixed x, GLfixed y, GLfixed z) { D(bug("nfosmesa: glVertex4xOES(0x%x, 0x%x, 0x%x)", x, y, z)); fn.glVertex4xOES(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertex4xvOES(memptr coords) #else void OSMesaDriver::nfglVertex4xvOES(const GLfixed *coords) #endif { D(bug("nfosmesa: glVertex4xvOES(" PRI_PTR ")", AtariOffset(coords))); FN_GLVERTEX4XVOES(coords); } void OSMesaDriver::nfglVertexArrayAttribBinding(GLuint vaobj, GLuint attribindex, GLuint bindingindex) { D(bug("nfosmesa: glVertexArrayAttribBinding(%u, %u, %u)", vaobj, attribindex, bindingindex)); fn.glVertexArrayAttribBinding(vaobj, attribindex, bindingindex); } void OSMesaDriver::nfglVertexArrayAttribFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset) { D(bug("nfosmesa: glVertexArrayAttribFormat(%u, %u, %d, %s, %d, %u)", vaobj, attribindex, size, gl_enum_name(type), normalized, relativeoffset)); fn.glVertexArrayAttribFormat(vaobj, attribindex, size, type, normalized, relativeoffset); } void OSMesaDriver::nfglVertexArrayAttribIFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) { D(bug("nfosmesa: glVertexArrayAttribIFormat(%u, %u, %d, %s, %u)", vaobj, attribindex, size, gl_enum_name(type), relativeoffset)); fn.glVertexArrayAttribIFormat(vaobj, attribindex, size, type, relativeoffset); } void OSMesaDriver::nfglVertexArrayAttribLFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) { D(bug("nfosmesa: glVertexArrayAttribLFormat(%u, %u, %d, %s, %u)", vaobj, attribindex, size, gl_enum_name(type), relativeoffset)); fn.glVertexArrayAttribLFormat(vaobj, attribindex, size, type, relativeoffset); } void OSMesaDriver::nfglVertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) { D(bug("nfosmesa: glVertexArrayBindVertexBufferEXT(%u, %u, %u, %" PRI_IPTR ", %d)", vaobj, bindingindex, buffer, offset, stride)); fn.glVertexArrayBindVertexBufferEXT(vaobj, bindingindex, buffer, offset, stride); } void OSMesaDriver::nfglVertexArrayBindingDivisor(GLuint vaobj, GLuint bindingindex, GLuint divisor) { D(bug("nfosmesa: glVertexArrayBindingDivisor(%u, %u, %u)", vaobj, bindingindex, divisor)); fn.glVertexArrayBindingDivisor(vaobj, bindingindex, divisor); } void OSMesaDriver::nfglVertexArrayColorOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset) { D(bug("nfosmesa: glVertexArrayColorOffsetEXT(%u, %u, %d, %s, %d, %" PRI_IPTR ")", vaobj, buffer, size, gl_enum_name(type), stride, offset)); fn.glVertexArrayColorOffsetEXT(vaobj, buffer, size, type, stride, offset); } void OSMesaDriver::nfglVertexArrayEdgeFlagOffsetEXT(GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset) { D(bug("nfosmesa: glVertexArrayEdgeFlagOffsetEXT(%u, %u, %d, %" PRI_IPTR ")", vaobj, buffer, stride, offset)); fn.glVertexArrayEdgeFlagOffsetEXT(vaobj, buffer, stride, offset); } void OSMesaDriver::nfglVertexArrayElementBuffer(GLuint vaobj, GLuint buffer) { D(bug("nfosmesa: glVertexArrayElementBuffer(%u, %u)", vaobj, buffer)); fn.glVertexArrayElementBuffer(vaobj, buffer); } void OSMesaDriver::nfglVertexArrayFogCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset) { D(bug("nfosmesa: glVertexArrayFogCoordOffsetEXT(%u, %u, %s, %d, %" PRI_IPTR ")", vaobj, buffer, gl_enum_name(type), stride, offset)); fn.glVertexArrayFogCoordOffsetEXT(vaobj, buffer, type, stride, offset); } void OSMesaDriver::nfglVertexArrayIndexOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset) { D(bug("nfosmesa: glVertexArrayIndexOffsetEXT(%u, %u, %s, %d, %" PRI_IPTR ")", vaobj, buffer, gl_enum_name(type), stride, offset)); fn.glVertexArrayIndexOffsetEXT(vaobj, buffer, type, stride, offset); } void OSMesaDriver::nfglVertexArrayMultiTexCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset) { D(bug("nfosmesa: glVertexArrayMultiTexCoordOffsetEXT(%u, %u, %s, %d, %s, %d, %" PRI_IPTR ")", vaobj, buffer, gl_enum_name(texunit), size, gl_enum_name(type), stride, offset)); fn.glVertexArrayMultiTexCoordOffsetEXT(vaobj, buffer, texunit, size, type, stride, offset); } void OSMesaDriver::nfglVertexArrayNormalOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset) { D(bug("nfosmesa: glVertexArrayNormalOffsetEXT(%u, %u, %s, %d, %" PRI_IPTR ")", vaobj, buffer, gl_enum_name(type), stride, offset)); fn.glVertexArrayNormalOffsetEXT(vaobj, buffer, type, stride, offset); } void OSMesaDriver::nfglVertexArrayParameteriAPPLE(GLenum pname, GLint param) { D(bug("nfosmesa: glVertexArrayParameteriAPPLE(%s, %d)", gl_enum_name(pname), param)); fn.glVertexArrayParameteriAPPLE(pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexArrayRangeAPPLE(GLsizei length, memptr pointer) #else void OSMesaDriver::nfglVertexArrayRangeAPPLE(GLsizei length, void *pointer) #endif { D(bug("nfosmesa: glVertexArrayRangeAPPLE(%d, " PRI_PTR ")", length, AtariOffset(pointer))); FN_GLVERTEXARRAYRANGEAPPLE(length, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexArrayRangeNV(GLsizei length, memptr pointer) #else void OSMesaDriver::nfglVertexArrayRangeNV(GLsizei length, const void *pointer) #endif { D(bug("nfosmesa: glVertexArrayRangeNV(%d, " PRI_PTR ")", length, AtariOffset(pointer))); FN_GLVERTEXARRAYRANGENV(length, pointer); } void OSMesaDriver::nfglVertexArraySecondaryColorOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset) { D(bug("nfosmesa: glVertexArraySecondaryColorOffsetEXT(%u, %u, %d, %s, %d, %" PRI_IPTR ")", vaobj, buffer, size, gl_enum_name(type), stride, offset)); fn.glVertexArraySecondaryColorOffsetEXT(vaobj, buffer, size, type, stride, offset); } void OSMesaDriver::nfglVertexArrayTexCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset) { D(bug("nfosmesa: glVertexArrayTexCoordOffsetEXT(%u, %u, %d, %s, %d, %" PRI_IPTR ")", vaobj, buffer, size, gl_enum_name(type), stride, offset)); fn.glVertexArrayTexCoordOffsetEXT(vaobj, buffer, size, type, stride, offset); } void OSMesaDriver::nfglVertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribindex, GLuint bindingindex) { D(bug("nfosmesa: glVertexArrayVertexAttribBindingEXT(%u, %u, %u)", vaobj, attribindex, bindingindex)); fn.glVertexArrayVertexAttribBindingEXT(vaobj, attribindex, bindingindex); } void OSMesaDriver::nfglVertexArrayVertexAttribDivisorEXT(GLuint vaobj, GLuint index, GLuint divisor) { D(bug("nfosmesa: glVertexArrayVertexAttribDivisorEXT(%u, %u, %u)", vaobj, index, divisor)); fn.glVertexArrayVertexAttribDivisorEXT(vaobj, index, divisor); } void OSMesaDriver::nfglVertexArrayVertexAttribFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset) { D(bug("nfosmesa: glVertexArrayVertexAttribFormatEXT(%u, %u, %d, %s, %d, %u)", vaobj, attribindex, size, gl_enum_name(type), normalized, relativeoffset)); fn.glVertexArrayVertexAttribFormatEXT(vaobj, attribindex, size, type, normalized, relativeoffset); } void OSMesaDriver::nfglVertexArrayVertexAttribIFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) { D(bug("nfosmesa: glVertexArrayVertexAttribIFormatEXT(%u, %u, %d, %s, %u)", vaobj, attribindex, size, gl_enum_name(type), relativeoffset)); fn.glVertexArrayVertexAttribIFormatEXT(vaobj, attribindex, size, type, relativeoffset); } void OSMesaDriver::nfglVertexArrayVertexAttribIOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset) { D(bug("nfosmesa: glVertexArrayVertexAttribIOffsetEXT(%u, %u, %u, %d, %s, %d, %" PRI_IPTR ")", vaobj, buffer, index, size, gl_enum_name(type), stride, offset)); fn.glVertexArrayVertexAttribIOffsetEXT(vaobj, buffer, index, size, type, stride, offset); } void OSMesaDriver::nfglVertexArrayVertexAttribLFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) { D(bug("nfosmesa: glVertexArrayVertexAttribLFormatEXT(%u, %u, %d, %s, %u)", vaobj, attribindex, size, gl_enum_name(type), relativeoffset)); fn.glVertexArrayVertexAttribLFormatEXT(vaobj, attribindex, size, type, relativeoffset); } void OSMesaDriver::nfglVertexArrayVertexAttribLOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset) { D(bug("nfosmesa: glVertexArrayVertexAttribLOffsetEXT(%u, %u, %u, %d, %s, %d, %" PRI_IPTR ")", vaobj, buffer, index, size, gl_enum_name(type), stride, offset)); fn.glVertexArrayVertexAttribLOffsetEXT(vaobj, buffer, index, size, type, stride, offset); } void OSMesaDriver::nfglVertexArrayVertexAttribOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLintptr offset) { D(bug("nfosmesa: glVertexArrayVertexAttribOffsetEXT(%u, %u, %u, %d, %s, %d, %d, %" PRI_IPTR ")", vaobj, buffer, index, size, gl_enum_name(type), normalized, stride, offset)); fn.glVertexArrayVertexAttribOffsetEXT(vaobj, buffer, index, size, type, normalized, stride, offset); } void OSMesaDriver::nfglVertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingindex, GLuint divisor) { D(bug("nfosmesa: glVertexArrayVertexBindingDivisorEXT(%u, %u, %u)", vaobj, bindingindex, divisor)); fn.glVertexArrayVertexBindingDivisorEXT(vaobj, bindingindex, divisor); } void OSMesaDriver::nfglVertexArrayVertexBuffer(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) { D(bug("nfosmesa: glVertexArrayVertexBuffer(%u, %u, %u, %" PRI_IPTR ", %d)", vaobj, bindingindex, buffer, offset, stride)); fn.glVertexArrayVertexBuffer(vaobj, bindingindex, buffer, offset, stride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count, memptr buffers, memptr offsets, memptr strides) #else void OSMesaDriver::nfglVertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides) #endif { D(bug("nfosmesa: glVertexArrayVertexBuffers(%u, %u, %d, " PRI_PTR ", " PRI_PTR ", " PRI_PTR ")", vaobj, first, count, AtariOffset(buffers), AtariOffset(offsets), AtariOffset(strides))); FN_GLVERTEXARRAYVERTEXBUFFERS(vaobj, first, count, buffers, offsets, strides); } void OSMesaDriver::nfglVertexArrayVertexOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset) { D(bug("nfosmesa: glVertexArrayVertexOffsetEXT(%u, %u, %d, %s, %d, %" PRI_IPTR ")", vaobj, buffer, size, gl_enum_name(type), stride, offset)); fn.glVertexArrayVertexOffsetEXT(vaobj, buffer, size, type, stride, offset); } void OSMesaDriver::nfglVertexAttrib1d(GLuint index, GLdouble x) { D(bug("nfosmesa: glVertexAttrib1d(%u, %f)", index, x)); fn.glVertexAttrib1d(index, x); } void OSMesaDriver::nfglVertexAttrib1dARB(GLuint index, GLdouble x) { D(bug("nfosmesa: glVertexAttrib1dARB(%u, %f)", index, x)); fn.glVertexAttrib1dARB(index, x); } void OSMesaDriver::nfglVertexAttrib1dNV(GLuint index, GLdouble x) { D(bug("nfosmesa: glVertexAttrib1dNV(%u, %f)", index, x)); fn.glVertexAttrib1dNV(index, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib1dv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib1dv(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttrib1dv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB1DV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib1dvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib1dvARB(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttrib1dvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB1DVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib1dvNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib1dvNV(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttrib1dvNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB1DVNV(index, v); } void OSMesaDriver::nfglVertexAttrib1f(GLuint index, GLfloat x) { D(bug("nfosmesa: glVertexAttrib1f(%u, %f)", index, x)); fn.glVertexAttrib1f(index, x); } void OSMesaDriver::nfglVertexAttrib1fARB(GLuint index, GLfloat x) { D(bug("nfosmesa: glVertexAttrib1fARB(%u, %f)", index, x)); fn.glVertexAttrib1fARB(index, x); } void OSMesaDriver::nfglVertexAttrib1fNV(GLuint index, GLfloat x) { D(bug("nfosmesa: glVertexAttrib1fNV(%u, %f)", index, x)); fn.glVertexAttrib1fNV(index, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib1fv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib1fv(GLuint index, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttrib1fv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB1FV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib1fvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib1fvARB(GLuint index, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttrib1fvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB1FVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib1fvNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib1fvNV(GLuint index, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttrib1fvNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB1FVNV(index, v); } void OSMesaDriver::nfglVertexAttrib1hNV(GLuint index, GLhalfNV32 x) { D(bug("nfosmesa: glVertexAttrib1hNV(%u, %u)", index, x)); fn.glVertexAttrib1hNV(index, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib1hvNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib1hvNV(GLuint index, const GLhalfNV *v) #endif { D(bug("nfosmesa: glVertexAttrib1hvNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB1HVNV(index, v); } void OSMesaDriver::nfglVertexAttrib1s(GLuint index, GLshort32 x) { D(bug("nfosmesa: glVertexAttrib1s(%u, %d)", index, x)); fn.glVertexAttrib1s(index, x); } void OSMesaDriver::nfglVertexAttrib1sARB(GLuint index, GLshort32 x) { D(bug("nfosmesa: glVertexAttrib1sARB(%u, %d)", index, x)); fn.glVertexAttrib1sARB(index, x); } void OSMesaDriver::nfglVertexAttrib1sNV(GLuint index, GLshort32 x) { D(bug("nfosmesa: glVertexAttrib1sNV(%u, %d)", index, x)); fn.glVertexAttrib1sNV(index, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib1sv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib1sv(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttrib1sv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB1SV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib1svARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib1svARB(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttrib1svARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB1SVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib1svNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib1svNV(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttrib1svNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB1SVNV(index, v); } void OSMesaDriver::nfglVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) { D(bug("nfosmesa: glVertexAttrib2d(%u, %f, %f)", index, x, y)); fn.glVertexAttrib2d(index, x, y); } void OSMesaDriver::nfglVertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y) { D(bug("nfosmesa: glVertexAttrib2dARB(%u, %f, %f)", index, x, y)); fn.glVertexAttrib2dARB(index, x, y); } void OSMesaDriver::nfglVertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y) { D(bug("nfosmesa: glVertexAttrib2dNV(%u, %f, %f)", index, x, y)); fn.glVertexAttrib2dNV(index, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib2dv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib2dv(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttrib2dv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB2DV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib2dvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib2dvARB(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttrib2dvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB2DVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib2dvNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib2dvNV(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttrib2dvNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB2DVNV(index, v); } void OSMesaDriver::nfglVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) { D(bug("nfosmesa: glVertexAttrib2f(%u, %f, %f)", index, x, y)); fn.glVertexAttrib2f(index, x, y); } void OSMesaDriver::nfglVertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y) { D(bug("nfosmesa: glVertexAttrib2fARB(%u, %f, %f)", index, x, y)); fn.glVertexAttrib2fARB(index, x, y); } void OSMesaDriver::nfglVertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y) { D(bug("nfosmesa: glVertexAttrib2fNV(%u, %f, %f)", index, x, y)); fn.glVertexAttrib2fNV(index, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib2fv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib2fv(GLuint index, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttrib2fv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB2FV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib2fvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib2fvARB(GLuint index, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttrib2fvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB2FVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib2fvNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib2fvNV(GLuint index, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttrib2fvNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB2FVNV(index, v); } void OSMesaDriver::nfglVertexAttrib2hNV(GLuint index, GLhalfNV32 x, GLhalfNV32 y) { D(bug("nfosmesa: glVertexAttrib2hNV(%u, %u, %u)", index, x, y)); fn.glVertexAttrib2hNV(index, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib2hvNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib2hvNV(GLuint index, const GLhalfNV *v) #endif { D(bug("nfosmesa: glVertexAttrib2hvNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB2HVNV(index, v); } void OSMesaDriver::nfglVertexAttrib2s(GLuint index, GLshort32 x, GLshort32 y) { D(bug("nfosmesa: glVertexAttrib2s(%u, %d, %d)", index, x, y)); fn.glVertexAttrib2s(index, x, y); } void OSMesaDriver::nfglVertexAttrib2sARB(GLuint index, GLshort32 x, GLshort32 y) { D(bug("nfosmesa: glVertexAttrib2sARB(%u, %d, %d)", index, x, y)); fn.glVertexAttrib2sARB(index, x, y); } void OSMesaDriver::nfglVertexAttrib2sNV(GLuint index, GLshort32 x, GLshort32 y) { D(bug("nfosmesa: glVertexAttrib2sNV(%u, %d, %d)", index, x, y)); fn.glVertexAttrib2sNV(index, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib2sv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib2sv(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttrib2sv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB2SV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib2svARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib2svARB(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttrib2svARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB2SVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib2svNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib2svNV(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttrib2svNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB2SVNV(index, v); } void OSMesaDriver::nfglVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glVertexAttrib3d(%u, %f, %f, %f)", index, x, y, z)); fn.glVertexAttrib3d(index, x, y, z); } void OSMesaDriver::nfglVertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glVertexAttrib3dARB(%u, %f, %f, %f)", index, x, y, z)); fn.glVertexAttrib3dARB(index, x, y, z); } void OSMesaDriver::nfglVertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glVertexAttrib3dNV(%u, %f, %f, %f)", index, x, y, z)); fn.glVertexAttrib3dNV(index, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib3dv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib3dv(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttrib3dv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB3DV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib3dvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib3dvARB(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttrib3dvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB3DVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib3dvNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib3dvNV(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttrib3dvNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB3DVNV(index, v); } void OSMesaDriver::nfglVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glVertexAttrib3f(%u, %f, %f, %f)", index, x, y, z)); fn.glVertexAttrib3f(index, x, y, z); } void OSMesaDriver::nfglVertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glVertexAttrib3fARB(%u, %f, %f, %f)", index, x, y, z)); fn.glVertexAttrib3fARB(index, x, y, z); } void OSMesaDriver::nfglVertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glVertexAttrib3fNV(%u, %f, %f, %f)", index, x, y, z)); fn.glVertexAttrib3fNV(index, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib3fv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib3fv(GLuint index, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttrib3fv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB3FV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib3fvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib3fvARB(GLuint index, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttrib3fvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB3FVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib3fvNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib3fvNV(GLuint index, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttrib3fvNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB3FVNV(index, v); } void OSMesaDriver::nfglVertexAttrib3hNV(GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z) { D(bug("nfosmesa: glVertexAttrib3hNV(%u, %u, %u, %u)", index, x, y, z)); fn.glVertexAttrib3hNV(index, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib3hvNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib3hvNV(GLuint index, const GLhalfNV *v) #endif { D(bug("nfosmesa: glVertexAttrib3hvNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB3HVNV(index, v); } void OSMesaDriver::nfglVertexAttrib3s(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z) { D(bug("nfosmesa: glVertexAttrib3s(%u, %d, %d, %d)", index, x, y, z)); fn.glVertexAttrib3s(index, x, y, z); } void OSMesaDriver::nfglVertexAttrib3sARB(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z) { D(bug("nfosmesa: glVertexAttrib3sARB(%u, %d, %d, %d)", index, x, y, z)); fn.glVertexAttrib3sARB(index, x, y, z); } void OSMesaDriver::nfglVertexAttrib3sNV(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z) { D(bug("nfosmesa: glVertexAttrib3sNV(%u, %d, %d, %d)", index, x, y, z)); fn.glVertexAttrib3sNV(index, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib3sv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib3sv(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttrib3sv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB3SV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib3svARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib3svARB(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttrib3svARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB3SVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib3svNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib3svNV(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttrib3svNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB3SVNV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4Nbv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4Nbv(GLuint index, const GLbyte *v) #endif { D(bug("nfosmesa: glVertexAttrib4Nbv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4NBV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4NbvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4NbvARB(GLuint index, const GLbyte *v) #endif { D(bug("nfosmesa: glVertexAttrib4NbvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4NBVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4Niv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4Niv(GLuint index, const GLint *v) #endif { D(bug("nfosmesa: glVertexAttrib4Niv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4NIV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4NivARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4NivARB(GLuint index, const GLint *v) #endif { D(bug("nfosmesa: glVertexAttrib4NivARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4NIVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4Nsv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4Nsv(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttrib4Nsv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4NSV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4NsvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4NsvARB(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttrib4NsvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4NSVARB(index, v); } void OSMesaDriver::nfglVertexAttrib4Nub(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w) { D(bug("nfosmesa: glVertexAttrib4Nub(%u, %u, %u, %u, %u)", index, x, y, z, w)); fn.glVertexAttrib4Nub(index, x, y, z, w); } void OSMesaDriver::nfglVertexAttrib4NubARB(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w) { D(bug("nfosmesa: glVertexAttrib4NubARB(%u, %u, %u, %u, %u)", index, x, y, z, w)); fn.glVertexAttrib4NubARB(index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4Nubv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4Nubv(GLuint index, const GLubyte *v) #endif { D(bug("nfosmesa: glVertexAttrib4Nubv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4NUBV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4NubvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4NubvARB(GLuint index, const GLubyte *v) #endif { D(bug("nfosmesa: glVertexAttrib4NubvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4NUBVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4Nuiv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4Nuiv(GLuint index, const GLuint *v) #endif { D(bug("nfosmesa: glVertexAttrib4Nuiv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4NUIV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4NuivARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4NuivARB(GLuint index, const GLuint *v) #endif { D(bug("nfosmesa: glVertexAttrib4NuivARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4NUIVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4Nusv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4Nusv(GLuint index, const GLushort *v) #endif { D(bug("nfosmesa: glVertexAttrib4Nusv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4NUSV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4NusvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4NusvARB(GLuint index, const GLushort *v) #endif { D(bug("nfosmesa: glVertexAttrib4NusvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4NUSVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4bv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4bv(GLuint index, const GLbyte *v) #endif { D(bug("nfosmesa: glVertexAttrib4bv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4BV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4bvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4bvARB(GLuint index, const GLbyte *v) #endif { D(bug("nfosmesa: glVertexAttrib4bvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4BVARB(index, v); } void OSMesaDriver::nfglVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glVertexAttrib4d(%u, %f, %f, %f, %f)", index, x, y, z, w)); fn.glVertexAttrib4d(index, x, y, z, w); } void OSMesaDriver::nfglVertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glVertexAttrib4dARB(%u, %f, %f, %f, %f)", index, x, y, z, w)); fn.glVertexAttrib4dARB(index, x, y, z, w); } void OSMesaDriver::nfglVertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glVertexAttrib4dNV(%u, %f, %f, %f, %f)", index, x, y, z, w)); fn.glVertexAttrib4dNV(index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4dv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4dv(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttrib4dv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4DV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4dvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4dvARB(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttrib4dvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4DVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4dvNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4dvNV(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttrib4dvNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4DVNV(index, v); } void OSMesaDriver::nfglVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { D(bug("nfosmesa: glVertexAttrib4f(%u, %f, %f, %f, %f)", index, x, y, z, w)); fn.glVertexAttrib4f(index, x, y, z, w); } void OSMesaDriver::nfglVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { D(bug("nfosmesa: glVertexAttrib4fARB(%u, %f, %f, %f, %f)", index, x, y, z, w)); fn.glVertexAttrib4fARB(index, x, y, z, w); } void OSMesaDriver::nfglVertexAttrib4fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { D(bug("nfosmesa: glVertexAttrib4fNV(%u, %f, %f, %f, %f)", index, x, y, z, w)); fn.glVertexAttrib4fNV(index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4fv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4fv(GLuint index, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttrib4fv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4FV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4fvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4fvARB(GLuint index, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttrib4fvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4FVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4fvNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4fvNV(GLuint index, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttrib4fvNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4FVNV(index, v); } void OSMesaDriver::nfglVertexAttrib4hNV(GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w) { D(bug("nfosmesa: glVertexAttrib4hNV(%u, %u, %u, %u, %u)", index, x, y, z, w)); fn.glVertexAttrib4hNV(index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4hvNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4hvNV(GLuint index, const GLhalfNV *v) #endif { D(bug("nfosmesa: glVertexAttrib4hvNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4HVNV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4iv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4iv(GLuint index, const GLint *v) #endif { D(bug("nfosmesa: glVertexAttrib4iv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4IV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4ivARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4ivARB(GLuint index, const GLint *v) #endif { D(bug("nfosmesa: glVertexAttrib4ivARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4IVARB(index, v); } void OSMesaDriver::nfglVertexAttrib4s(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w) { D(bug("nfosmesa: glVertexAttrib4s(%u, %d, %d, %d, %d)", index, x, y, z, w)); fn.glVertexAttrib4s(index, x, y, z, w); } void OSMesaDriver::nfglVertexAttrib4sARB(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w) { D(bug("nfosmesa: glVertexAttrib4sARB(%u, %d, %d, %d, %d)", index, x, y, z, w)); fn.glVertexAttrib4sARB(index, x, y, z, w); } void OSMesaDriver::nfglVertexAttrib4sNV(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w) { D(bug("nfosmesa: glVertexAttrib4sNV(%u, %d, %d, %d, %d)", index, x, y, z, w)); fn.glVertexAttrib4sNV(index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4sv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4sv(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttrib4sv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4SV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4svARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4svARB(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttrib4svARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4SVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4svNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4svNV(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttrib4svNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4SVNV(index, v); } void OSMesaDriver::nfglVertexAttrib4ubNV(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w) { D(bug("nfosmesa: glVertexAttrib4ubNV(%u, %u, %u, %u, %u)", index, x, y, z, w)); fn.glVertexAttrib4ubNV(index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4ubv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4ubv(GLuint index, const GLubyte *v) #endif { D(bug("nfosmesa: glVertexAttrib4ubv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4UBV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4ubvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4ubvARB(GLuint index, const GLubyte *v) #endif { D(bug("nfosmesa: glVertexAttrib4ubvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4UBVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4ubvNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4ubvNV(GLuint index, const GLubyte *v) #endif { D(bug("nfosmesa: glVertexAttrib4ubvNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4UBVNV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4uiv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4uiv(GLuint index, const GLuint *v) #endif { D(bug("nfosmesa: glVertexAttrib4uiv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4UIV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4uivARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4uivARB(GLuint index, const GLuint *v) #endif { D(bug("nfosmesa: glVertexAttrib4uivARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4UIVARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4usv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4usv(GLuint index, const GLushort *v) #endif { D(bug("nfosmesa: glVertexAttrib4usv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4USV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttrib4usvARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttrib4usvARB(GLuint index, const GLushort *v) #endif { D(bug("nfosmesa: glVertexAttrib4usvARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIB4USVARB(index, v); } void OSMesaDriver::nfglVertexAttribArrayObjectATI(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLuint buffer, GLuint offset) { D(bug("nfosmesa: glVertexAttribArrayObjectATI(%u, %d, %s, %d, %d, %u, %u)", index, size, gl_enum_name(type), normalized, stride, buffer, offset)); FN_GLVERTEXATTRIBARRAYOBJECTATI(index, size, type, normalized, stride, buffer, offset); } void OSMesaDriver::nfglVertexAttribBinding(GLuint attribindex, GLuint bindingindex) { D(bug("nfosmesa: glVertexAttribBinding(%u, %u)", attribindex, bindingindex)); fn.glVertexAttribBinding(attribindex, bindingindex); } void OSMesaDriver::nfglVertexAttribDivisor(GLuint index, GLuint divisor) { D(bug("nfosmesa: glVertexAttribDivisor(%u, %u)", index, divisor)); fn.glVertexAttribDivisor(index, divisor); } void OSMesaDriver::nfglVertexAttribDivisorARB(GLuint index, GLuint divisor) { D(bug("nfosmesa: glVertexAttribDivisorARB(%u, %u)", index, divisor)); fn.glVertexAttribDivisorARB(index, divisor); } void OSMesaDriver::nfglVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset) { D(bug("nfosmesa: glVertexAttribFormat(%u, %d, %s, %d, %u)", attribindex, size, gl_enum_name(type), normalized, relativeoffset)); fn.glVertexAttribFormat(attribindex, size, type, normalized, relativeoffset); } void OSMesaDriver::nfglVertexAttribFormatNV(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride) { D(bug("nfosmesa: glVertexAttribFormatNV(%u, %d, %s, %d, %d)", index, size, gl_enum_name(type), normalized, stride)); fn.glVertexAttribFormatNV(index, size, type, normalized, stride); } void OSMesaDriver::nfglVertexAttribI1i(GLuint index, GLint x) { D(bug("nfosmesa: glVertexAttribI1i(%u, %d)", index, x)); fn.glVertexAttribI1i(index, x); } void OSMesaDriver::nfglVertexAttribI1iEXT(GLuint index, GLint x) { D(bug("nfosmesa: glVertexAttribI1iEXT(%u, %d)", index, x)); fn.glVertexAttribI1iEXT(index, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI1iv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI1iv(GLuint index, const GLint *v) #endif { D(bug("nfosmesa: glVertexAttribI1iv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI1IV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI1ivEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI1ivEXT(GLuint index, const GLint *v) #endif { D(bug("nfosmesa: glVertexAttribI1ivEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI1IVEXT(index, v); } void OSMesaDriver::nfglVertexAttribI1ui(GLuint index, GLuint x) { D(bug("nfosmesa: glVertexAttribI1ui(%u, %u)", index, x)); fn.glVertexAttribI1ui(index, x); } void OSMesaDriver::nfglVertexAttribI1uiEXT(GLuint index, GLuint x) { D(bug("nfosmesa: glVertexAttribI1uiEXT(%u, %u)", index, x)); fn.glVertexAttribI1uiEXT(index, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI1uiv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI1uiv(GLuint index, const GLuint *v) #endif { D(bug("nfosmesa: glVertexAttribI1uiv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI1UIV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI1uivEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI1uivEXT(GLuint index, const GLuint *v) #endif { D(bug("nfosmesa: glVertexAttribI1uivEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI1UIVEXT(index, v); } void OSMesaDriver::nfglVertexAttribI2i(GLuint index, GLint x, GLint y) { D(bug("nfosmesa: glVertexAttribI2i(%u, %d, %d)", index, x, y)); fn.glVertexAttribI2i(index, x, y); } void OSMesaDriver::nfglVertexAttribI2iEXT(GLuint index, GLint x, GLint y) { D(bug("nfosmesa: glVertexAttribI2iEXT(%u, %d, %d)", index, x, y)); fn.glVertexAttribI2iEXT(index, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI2iv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI2iv(GLuint index, const GLint *v) #endif { D(bug("nfosmesa: glVertexAttribI2iv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI2IV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI2ivEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI2ivEXT(GLuint index, const GLint *v) #endif { D(bug("nfosmesa: glVertexAttribI2ivEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI2IVEXT(index, v); } void OSMesaDriver::nfglVertexAttribI2ui(GLuint index, GLuint x, GLuint y) { D(bug("nfosmesa: glVertexAttribI2ui(%u, %u, %u)", index, x, y)); fn.glVertexAttribI2ui(index, x, y); } void OSMesaDriver::nfglVertexAttribI2uiEXT(GLuint index, GLuint x, GLuint y) { D(bug("nfosmesa: glVertexAttribI2uiEXT(%u, %u, %u)", index, x, y)); fn.glVertexAttribI2uiEXT(index, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI2uiv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI2uiv(GLuint index, const GLuint *v) #endif { D(bug("nfosmesa: glVertexAttribI2uiv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI2UIV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI2uivEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI2uivEXT(GLuint index, const GLuint *v) #endif { D(bug("nfosmesa: glVertexAttribI2uivEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI2UIVEXT(index, v); } void OSMesaDriver::nfglVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) { D(bug("nfosmesa: glVertexAttribI3i(%u, %d, %d, %d)", index, x, y, z)); fn.glVertexAttribI3i(index, x, y, z); } void OSMesaDriver::nfglVertexAttribI3iEXT(GLuint index, GLint x, GLint y, GLint z) { D(bug("nfosmesa: glVertexAttribI3iEXT(%u, %d, %d, %d)", index, x, y, z)); fn.glVertexAttribI3iEXT(index, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI3iv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI3iv(GLuint index, const GLint *v) #endif { D(bug("nfosmesa: glVertexAttribI3iv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI3IV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI3ivEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI3ivEXT(GLuint index, const GLint *v) #endif { D(bug("nfosmesa: glVertexAttribI3ivEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI3IVEXT(index, v); } void OSMesaDriver::nfglVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) { D(bug("nfosmesa: glVertexAttribI3ui(%u, %u, %u, %u)", index, x, y, z)); fn.glVertexAttribI3ui(index, x, y, z); } void OSMesaDriver::nfglVertexAttribI3uiEXT(GLuint index, GLuint x, GLuint y, GLuint z) { D(bug("nfosmesa: glVertexAttribI3uiEXT(%u, %u, %u, %u)", index, x, y, z)); fn.glVertexAttribI3uiEXT(index, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI3uiv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI3uiv(GLuint index, const GLuint *v) #endif { D(bug("nfosmesa: glVertexAttribI3uiv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI3UIV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI3uivEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI3uivEXT(GLuint index, const GLuint *v) #endif { D(bug("nfosmesa: glVertexAttribI3uivEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI3UIVEXT(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI4bv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI4bv(GLuint index, const GLbyte *v) #endif { D(bug("nfosmesa: glVertexAttribI4bv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI4BV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI4bvEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI4bvEXT(GLuint index, const GLbyte *v) #endif { D(bug("nfosmesa: glVertexAttribI4bvEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI4BVEXT(index, v); } void OSMesaDriver::nfglVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) { D(bug("nfosmesa: glVertexAttribI4i(%u, %d, %d, %d, %d)", index, x, y, z, w)); fn.glVertexAttribI4i(index, x, y, z, w); } void OSMesaDriver::nfglVertexAttribI4iEXT(GLuint index, GLint x, GLint y, GLint z, GLint w) { D(bug("nfosmesa: glVertexAttribI4iEXT(%u, %d, %d, %d, %d)", index, x, y, z, w)); fn.glVertexAttribI4iEXT(index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI4iv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI4iv(GLuint index, const GLint *v) #endif { D(bug("nfosmesa: glVertexAttribI4iv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI4IV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI4ivEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI4ivEXT(GLuint index, const GLint *v) #endif { D(bug("nfosmesa: glVertexAttribI4ivEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI4IVEXT(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI4sv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI4sv(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttribI4sv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI4SV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI4svEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI4svEXT(GLuint index, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttribI4svEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI4SVEXT(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI4ubv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI4ubv(GLuint index, const GLubyte *v) #endif { D(bug("nfosmesa: glVertexAttribI4ubv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI4UBV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI4ubvEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI4ubvEXT(GLuint index, const GLubyte *v) #endif { D(bug("nfosmesa: glVertexAttribI4ubvEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI4UBVEXT(index, v); } void OSMesaDriver::nfglVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) { D(bug("nfosmesa: glVertexAttribI4ui(%u, %u, %u, %u, %u)", index, x, y, z, w)); fn.glVertexAttribI4ui(index, x, y, z, w); } void OSMesaDriver::nfglVertexAttribI4uiEXT(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) { D(bug("nfosmesa: glVertexAttribI4uiEXT(%u, %u, %u, %u, %u)", index, x, y, z, w)); fn.glVertexAttribI4uiEXT(index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI4uiv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI4uiv(GLuint index, const GLuint *v) #endif { D(bug("nfosmesa: glVertexAttribI4uiv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI4UIV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI4uivEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI4uivEXT(GLuint index, const GLuint *v) #endif { D(bug("nfosmesa: glVertexAttribI4uivEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI4UIVEXT(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI4usv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI4usv(GLuint index, const GLushort *v) #endif { D(bug("nfosmesa: glVertexAttribI4usv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI4USV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribI4usvEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribI4usvEXT(GLuint index, const GLushort *v) #endif { D(bug("nfosmesa: glVertexAttribI4usvEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBI4USVEXT(index, v); } void OSMesaDriver::nfglVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) { D(bug("nfosmesa: glVertexAttribIFormat(%u, %d, %s, %u)", attribindex, size, gl_enum_name(type), relativeoffset)); fn.glVertexAttribIFormat(attribindex, size, type, relativeoffset); } void OSMesaDriver::nfglVertexAttribIFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride) { D(bug("nfosmesa: glVertexAttribIFormatNV(%u, %d, %s, %d)", index, size, gl_enum_name(type), stride)); fn.glVertexAttribIFormatNV(index, size, type, stride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glVertexAttribIPointer(%u, %d, %s, %d, " PRI_PTR ")", index, size, gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLVERTEXATTRIBIPOINTER(index, size, type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribIPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglVertexAttribIPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glVertexAttribIPointerEXT(%u, %d, %s, %d, " PRI_PTR ")", index, size, gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLVERTEXATTRIBIPOINTEREXT(index, size, type, stride, pointer); } void OSMesaDriver::nfglVertexAttribL1d(GLuint index, GLdouble x) { D(bug("nfosmesa: glVertexAttribL1d(%u, %f)", index, x)); fn.glVertexAttribL1d(index, x); } void OSMesaDriver::nfglVertexAttribL1dEXT(GLuint index, GLdouble x) { D(bug("nfosmesa: glVertexAttribL1dEXT(%u, %f)", index, x)); fn.glVertexAttribL1dEXT(index, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL1dv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL1dv(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttribL1dv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL1DV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL1dvEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL1dvEXT(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttribL1dvEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL1DVEXT(index, v); } void OSMesaDriver::nfglVertexAttribL1i64NV(GLuint index, GLint64EXT x) { D(bug("nfosmesa: glVertexAttribL1i64NV(%u, %" PRId64 ")", index, x)); fn.glVertexAttribL1i64NV(index, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL1i64vNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL1i64vNV(GLuint index, const GLint64EXT *v) #endif { D(bug("nfosmesa: glVertexAttribL1i64vNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL1I64VNV(index, v); } void OSMesaDriver::nfglVertexAttribL1ui64ARB(GLuint index, GLuint64EXT x) { D(bug("nfosmesa: glVertexAttribL1ui64ARB(%u, %" PRIu64 ")", index, x)); fn.glVertexAttribL1ui64ARB(index, x); } void OSMesaDriver::nfglVertexAttribL1ui64NV(GLuint index, GLuint64EXT x) { D(bug("nfosmesa: glVertexAttribL1ui64NV(%u, %" PRIu64 ")", index, x)); fn.glVertexAttribL1ui64NV(index, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL1ui64vARB(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL1ui64vARB(GLuint index, const GLuint64EXT *v) #endif { D(bug("nfosmesa: glVertexAttribL1ui64vARB(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL1UI64VARB(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL1ui64vNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL1ui64vNV(GLuint index, const GLuint64EXT *v) #endif { D(bug("nfosmesa: glVertexAttribL1ui64vNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL1UI64VNV(index, v); } void OSMesaDriver::nfglVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) { D(bug("nfosmesa: glVertexAttribL2d(%u, %f, %f)", index, x, y)); fn.glVertexAttribL2d(index, x, y); } void OSMesaDriver::nfglVertexAttribL2dEXT(GLuint index, GLdouble x, GLdouble y) { D(bug("nfosmesa: glVertexAttribL2dEXT(%u, %f, %f)", index, x, y)); fn.glVertexAttribL2dEXT(index, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL2dv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL2dv(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttribL2dv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL2DV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL2dvEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL2dvEXT(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttribL2dvEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL2DVEXT(index, v); } void OSMesaDriver::nfglVertexAttribL2i64NV(GLuint index, GLint64EXT x, GLint64EXT y) { D(bug("nfosmesa: glVertexAttribL2i64NV(%u, %" PRId64 ", %" PRId64 ")", index, x, y)); fn.glVertexAttribL2i64NV(index, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL2i64vNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL2i64vNV(GLuint index, const GLint64EXT *v) #endif { D(bug("nfosmesa: glVertexAttribL2i64vNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL2I64VNV(index, v); } void OSMesaDriver::nfglVertexAttribL2ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y) { D(bug("nfosmesa: glVertexAttribL2ui64NV(%u, %" PRIu64 ", %" PRIu64 ")", index, x, y)); fn.glVertexAttribL2ui64NV(index, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL2ui64vNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL2ui64vNV(GLuint index, const GLuint64EXT *v) #endif { D(bug("nfosmesa: glVertexAttribL2ui64vNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL2UI64VNV(index, v); } void OSMesaDriver::nfglVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glVertexAttribL3d(%u, %f, %f, %f)", index, x, y, z)); fn.glVertexAttribL3d(index, x, y, z); } void OSMesaDriver::nfglVertexAttribL3dEXT(GLuint index, GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glVertexAttribL3dEXT(%u, %f, %f, %f)", index, x, y, z)); fn.glVertexAttribL3dEXT(index, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL3dv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL3dv(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttribL3dv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL3DV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL3dvEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL3dvEXT(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttribL3dvEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL3DVEXT(index, v); } void OSMesaDriver::nfglVertexAttribL3i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z) { D(bug("nfosmesa: glVertexAttribL3i64NV(%u, %" PRId64 ", %" PRId64 ", %" PRId64 ")", index, x, y, z)); fn.glVertexAttribL3i64NV(index, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL3i64vNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL3i64vNV(GLuint index, const GLint64EXT *v) #endif { D(bug("nfosmesa: glVertexAttribL3i64vNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL3I64VNV(index, v); } void OSMesaDriver::nfglVertexAttribL3ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) { D(bug("nfosmesa: glVertexAttribL3ui64NV(%u, %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", index, x, y, z)); fn.glVertexAttribL3ui64NV(index, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL3ui64vNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL3ui64vNV(GLuint index, const GLuint64EXT *v) #endif { D(bug("nfosmesa: glVertexAttribL3ui64vNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL3UI64VNV(index, v); } void OSMesaDriver::nfglVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glVertexAttribL4d(%u, %f, %f, %f, %f)", index, x, y, z, w)); fn.glVertexAttribL4d(index, x, y, z, w); } void OSMesaDriver::nfglVertexAttribL4dEXT(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glVertexAttribL4dEXT(%u, %f, %f, %f, %f)", index, x, y, z, w)); fn.glVertexAttribL4dEXT(index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL4dv(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL4dv(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttribL4dv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL4DV(index, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL4dvEXT(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL4dvEXT(GLuint index, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttribL4dvEXT(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL4DVEXT(index, v); } void OSMesaDriver::nfglVertexAttribL4i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) { D(bug("nfosmesa: glVertexAttribL4i64NV(%u, %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 ")", index, x, y, z, w)); fn.glVertexAttribL4i64NV(index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL4i64vNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL4i64vNV(GLuint index, const GLint64EXT *v) #endif { D(bug("nfosmesa: glVertexAttribL4i64vNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL4I64VNV(index, v); } void OSMesaDriver::nfglVertexAttribL4ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) { D(bug("nfosmesa: glVertexAttribL4ui64NV(%u, %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", %" PRIu64 ")", index, x, y, z, w)); fn.glVertexAttribL4ui64NV(index, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribL4ui64vNV(GLuint index, memptr v) #else void OSMesaDriver::nfglVertexAttribL4ui64vNV(GLuint index, const GLuint64EXT *v) #endif { D(bug("nfosmesa: glVertexAttribL4ui64vNV(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVERTEXATTRIBL4UI64VNV(index, v); } void OSMesaDriver::nfglVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) { D(bug("nfosmesa: glVertexAttribLFormat(%u, %d, %s, %u)", attribindex, size, gl_enum_name(type), relativeoffset)); fn.glVertexAttribLFormat(attribindex, size, type, relativeoffset); } void OSMesaDriver::nfglVertexAttribLFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride) { D(bug("nfosmesa: glVertexAttribLFormatNV(%u, %d, %s, %d)", index, size, gl_enum_name(type), stride)); fn.glVertexAttribLFormatNV(index, size, type, stride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glVertexAttribLPointer(%u, %d, %s, %d, " PRI_PTR ")", index, size, gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLVERTEXATTRIBLPOINTER(index, size, type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribLPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglVertexAttribLPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glVertexAttribLPointerEXT(%u, %d, %s, %d, " PRI_PTR ")", index, size, gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLVERTEXATTRIBLPOINTEREXT(index, size, type, stride, pointer); } void OSMesaDriver::nfglVertexAttribP1ui(GLuint index, GLenum type, GLboolean32 normalized, GLuint value) { D(bug("nfosmesa: glVertexAttribP1ui(%u, %s, %d, %u)", index, gl_enum_name(type), normalized, value)); fn.glVertexAttribP1ui(index, type, normalized, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribP1uiv(GLuint index, GLenum type, GLboolean32 normalized, memptr value) #else void OSMesaDriver::nfglVertexAttribP1uiv(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value) #endif { D(bug("nfosmesa: glVertexAttribP1uiv(%u, %s, %d, " PRI_PTR ")", index, gl_enum_name(type), normalized, AtariOffset(value))); FN_GLVERTEXATTRIBP1UIV(index, type, normalized, value); } void OSMesaDriver::nfglVertexAttribP2ui(GLuint index, GLenum type, GLboolean32 normalized, GLuint value) { D(bug("nfosmesa: glVertexAttribP2ui(%u, %s, %d, %u)", index, gl_enum_name(type), normalized, value)); fn.glVertexAttribP2ui(index, type, normalized, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribP2uiv(GLuint index, GLenum type, GLboolean32 normalized, memptr value) #else void OSMesaDriver::nfglVertexAttribP2uiv(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value) #endif { D(bug("nfosmesa: glVertexAttribP2uiv(%u, %s, %d, " PRI_PTR ")", index, gl_enum_name(type), normalized, AtariOffset(value))); FN_GLVERTEXATTRIBP2UIV(index, type, normalized, value); } void OSMesaDriver::nfglVertexAttribP3ui(GLuint index, GLenum type, GLboolean32 normalized, GLuint value) { D(bug("nfosmesa: glVertexAttribP3ui(%u, %s, %d, %u)", index, gl_enum_name(type), normalized, value)); fn.glVertexAttribP3ui(index, type, normalized, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribP3uiv(GLuint index, GLenum type, GLboolean32 normalized, memptr value) #else void OSMesaDriver::nfglVertexAttribP3uiv(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value) #endif { D(bug("nfosmesa: glVertexAttribP3uiv(%u, %s, %d, " PRI_PTR ")", index, gl_enum_name(type), normalized, AtariOffset(value))); FN_GLVERTEXATTRIBP3UIV(index, type, normalized, value); } void OSMesaDriver::nfglVertexAttribP4ui(GLuint index, GLenum type, GLboolean32 normalized, GLuint value) { D(bug("nfosmesa: glVertexAttribP4ui(%u, %s, %d, %u)", index, gl_enum_name(type), normalized, value)); fn.glVertexAttribP4ui(index, type, normalized, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribP4uiv(GLuint index, GLenum type, GLboolean32 normalized, memptr value) #else void OSMesaDriver::nfglVertexAttribP4uiv(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value) #endif { D(bug("nfosmesa: glVertexAttribP4uiv(%u, %s, %d, " PRI_PTR ")", index, gl_enum_name(type), normalized, AtariOffset(value))); FN_GLVERTEXATTRIBP4UIV(index, type, normalized, value); } void OSMesaDriver::nfglVertexAttribParameteriAMD(GLuint index, GLenum pname, GLint param) { D(bug("nfosmesa: glVertexAttribParameteriAMD(%u, %s, %d)", index, gl_enum_name(pname), param)); fn.glVertexAttribParameteriAMD(index, pname, param); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glVertexAttribPointer(%u, %d, %s, %d, %d, " PRI_PTR ")", index, size, gl_enum_name(type), normalized, stride, AtariOffset(pointer))); FN_GLVERTEXATTRIBPOINTER(index, size, type, normalized, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglVertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glVertexAttribPointerARB(%u, %d, %s, %d, %d, " PRI_PTR ")", index, size, gl_enum_name(type), normalized, stride, AtariOffset(pointer))); FN_GLVERTEXATTRIBPOINTERARB(index, size, type, normalized, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribPointerNV(GLuint index, GLint fsize, GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglVertexAttribPointerNV(GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glVertexAttribPointerNV(%u, %d, %s, %d, " PRI_PTR ")", index, fsize, gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLVERTEXATTRIBPOINTERNV(index, fsize, type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs1dvNV(GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglVertexAttribs1dvNV(GLuint index, GLsizei count, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttribs1dvNV(%u, %d, " PRI_PTR ")", index, count, AtariOffset(v))); FN_GLVERTEXATTRIBS1DVNV(index, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs1fvNV(GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglVertexAttribs1fvNV(GLuint index, GLsizei count, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttribs1fvNV(%u, %d, " PRI_PTR ")", index, count, AtariOffset(v))); FN_GLVERTEXATTRIBS1FVNV(index, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs1hvNV(GLuint index, GLsizei n, memptr v) #else void OSMesaDriver::nfglVertexAttribs1hvNV(GLuint index, GLsizei n, const GLhalfNV *v) #endif { D(bug("nfosmesa: glVertexAttribs1hvNV(%u, %d, " PRI_PTR ")", index, n, AtariOffset(v))); FN_GLVERTEXATTRIBS1HVNV(index, n, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs1svNV(GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglVertexAttribs1svNV(GLuint index, GLsizei count, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttribs1svNV(%u, %d, " PRI_PTR ")", index, count, AtariOffset(v))); FN_GLVERTEXATTRIBS1SVNV(index, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs2dvNV(GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglVertexAttribs2dvNV(GLuint index, GLsizei count, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttribs2dvNV(%u, %d, " PRI_PTR ")", index, count, AtariOffset(v))); FN_GLVERTEXATTRIBS2DVNV(index, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs2fvNV(GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglVertexAttribs2fvNV(GLuint index, GLsizei count, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttribs2fvNV(%u, %d, " PRI_PTR ")", index, count, AtariOffset(v))); FN_GLVERTEXATTRIBS2FVNV(index, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs2hvNV(GLuint index, GLsizei n, memptr v) #else void OSMesaDriver::nfglVertexAttribs2hvNV(GLuint index, GLsizei n, const GLhalfNV *v) #endif { D(bug("nfosmesa: glVertexAttribs2hvNV(%u, %d, " PRI_PTR ")", index, n, AtariOffset(v))); FN_GLVERTEXATTRIBS2HVNV(index, n, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs2svNV(GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglVertexAttribs2svNV(GLuint index, GLsizei count, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttribs2svNV(%u, %d, " PRI_PTR ")", index, count, AtariOffset(v))); FN_GLVERTEXATTRIBS2SVNV(index, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs3dvNV(GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglVertexAttribs3dvNV(GLuint index, GLsizei count, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttribs3dvNV(%u, %d, " PRI_PTR ")", index, count, AtariOffset(v))); FN_GLVERTEXATTRIBS3DVNV(index, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs3fvNV(GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglVertexAttribs3fvNV(GLuint index, GLsizei count, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttribs3fvNV(%u, %d, " PRI_PTR ")", index, count, AtariOffset(v))); FN_GLVERTEXATTRIBS3FVNV(index, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs3hvNV(GLuint index, GLsizei n, memptr v) #else void OSMesaDriver::nfglVertexAttribs3hvNV(GLuint index, GLsizei n, const GLhalfNV *v) #endif { D(bug("nfosmesa: glVertexAttribs3hvNV(%u, %d, " PRI_PTR ")", index, n, AtariOffset(v))); FN_GLVERTEXATTRIBS3HVNV(index, n, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs3svNV(GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglVertexAttribs3svNV(GLuint index, GLsizei count, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttribs3svNV(%u, %d, " PRI_PTR ")", index, count, AtariOffset(v))); FN_GLVERTEXATTRIBS3SVNV(index, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs4dvNV(GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglVertexAttribs4dvNV(GLuint index, GLsizei count, const GLdouble *v) #endif { D(bug("nfosmesa: glVertexAttribs4dvNV(%u, %d, " PRI_PTR ")", index, count, AtariOffset(v))); FN_GLVERTEXATTRIBS4DVNV(index, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs4fvNV(GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglVertexAttribs4fvNV(GLuint index, GLsizei count, const GLfloat *v) #endif { D(bug("nfosmesa: glVertexAttribs4fvNV(%u, %d, " PRI_PTR ")", index, count, AtariOffset(v))); FN_GLVERTEXATTRIBS4FVNV(index, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs4hvNV(GLuint index, GLsizei n, memptr v) #else void OSMesaDriver::nfglVertexAttribs4hvNV(GLuint index, GLsizei n, const GLhalfNV *v) #endif { D(bug("nfosmesa: glVertexAttribs4hvNV(%u, %d, " PRI_PTR ")", index, n, AtariOffset(v))); FN_GLVERTEXATTRIBS4HVNV(index, n, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs4svNV(GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglVertexAttribs4svNV(GLuint index, GLsizei count, const GLshort *v) #endif { D(bug("nfosmesa: glVertexAttribs4svNV(%u, %d, " PRI_PTR ")", index, count, AtariOffset(v))); FN_GLVERTEXATTRIBS4SVNV(index, count, v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexAttribs4ubvNV(GLuint index, GLsizei count, memptr v) #else void OSMesaDriver::nfglVertexAttribs4ubvNV(GLuint index, GLsizei count, const GLubyte *v) #endif { D(bug("nfosmesa: glVertexAttribs4ubvNV(%u, %d, " PRI_PTR ")", index, count, AtariOffset(v))); FN_GLVERTEXATTRIBS4UBVNV(index, count, v); } void OSMesaDriver::nfglVertexBindingDivisor(GLuint bindingindex, GLuint divisor) { D(bug("nfosmesa: glVertexBindingDivisor(%u, %u)", bindingindex, divisor)); fn.glVertexBindingDivisor(bindingindex, divisor); } void OSMesaDriver::nfglVertexBlendARB(GLint count) { D(bug("nfosmesa: glVertexBlendARB(%d)", count)); fn.glVertexBlendARB(count); } void OSMesaDriver::nfglVertexBlendEnvfATI(GLenum pname, GLfloat param) { D(bug("nfosmesa: glVertexBlendEnvfATI(%s, %f)", gl_enum_name(pname), param)); fn.glVertexBlendEnvfATI(pname, param); } void OSMesaDriver::nfglVertexBlendEnviATI(GLenum pname, GLint param) { D(bug("nfosmesa: glVertexBlendEnviATI(%s, %d)", gl_enum_name(pname), param)); fn.glVertexBlendEnviATI(pname, param); } void OSMesaDriver::nfglVertexFormatNV(GLint size, GLenum type, GLsizei stride) { D(bug("nfosmesa: glVertexFormatNV(%d, %s, %d)", size, gl_enum_name(type), stride)); fn.glVertexFormatNV(size, type, stride); } void OSMesaDriver::nfglVertexP2ui(GLenum type, GLuint value) { D(bug("nfosmesa: glVertexP2ui(%s, %u)", gl_enum_name(type), value)); fn.glVertexP2ui(type, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexP2uiv(GLenum type, memptr value) #else void OSMesaDriver::nfglVertexP2uiv(GLenum type, const GLuint *value) #endif { D(bug("nfosmesa: glVertexP2uiv(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(value))); FN_GLVERTEXP2UIV(type, value); } void OSMesaDriver::nfglVertexP3ui(GLenum type, GLuint value) { D(bug("nfosmesa: glVertexP3ui(%s, %u)", gl_enum_name(type), value)); fn.glVertexP3ui(type, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexP3uiv(GLenum type, memptr value) #else void OSMesaDriver::nfglVertexP3uiv(GLenum type, const GLuint *value) #endif { D(bug("nfosmesa: glVertexP3uiv(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(value))); FN_GLVERTEXP3UIV(type, value); } void OSMesaDriver::nfglVertexP4ui(GLenum type, GLuint value) { D(bug("nfosmesa: glVertexP4ui(%s, %u)", gl_enum_name(type), value)); fn.glVertexP4ui(type, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexP4uiv(GLenum type, memptr value) #else void OSMesaDriver::nfglVertexP4uiv(GLenum type, const GLuint *value) #endif { D(bug("nfosmesa: glVertexP4uiv(%s, " PRI_PTR ")", gl_enum_name(type), AtariOffset(value))); FN_GLVERTEXP4UIV(type, value); } void OSMesaDriver::nfglVertexPointSizefAPPLE(GLfloat size) { D(bug("nfosmesa: glVertexPointSizefAPPLE(%f)", size)); fn.glVertexPointSizefAPPLE(size); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexPointer(GLint size, GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) #endif { D(bug("nfosmesa: glVertexPointer(%d, %s, %d, " PRI_PTR ")", size, gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLVERTEXPOINTER(size, type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, memptr pointer) #else void OSMesaDriver::nfglVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer) #endif { D(bug("nfosmesa: glVertexPointerEXT(%d, %s, %d, %d, " PRI_PTR ")", size, gl_enum_name(type), stride, count, AtariOffset(pointer))); FN_GLVERTEXPOINTEREXT(size, type, stride, count, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexPointerListIBM(GLint size, GLenum type, GLint stride, memptr pointer, GLint ptrstride) #else void OSMesaDriver::nfglVertexPointerListIBM(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride) #endif { D(bug("nfosmesa: glVertexPointerListIBM(%d, %s, %d, " PRI_PTR ", %d)", size, gl_enum_name(type), stride, AtariOffset(pointer), ptrstride)); FN_GLVERTEXPOINTERLISTIBM(size, type, stride, pointer, ptrstride); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexPointervINTEL(GLint size, GLenum type, memptr pointer) #else void OSMesaDriver::nfglVertexPointervINTEL(GLint size, GLenum type, const void * *pointer) #endif { D(bug("nfosmesa: glVertexPointervINTEL(%d, %s, " PRI_PTR ")", size, gl_enum_name(type), AtariOffset(pointer))); FN_GLVERTEXPOINTERVINTEL(size, type, pointer); } void OSMesaDriver::nfglVertexStream1dATI(GLenum stream, GLdouble x) { D(bug("nfosmesa: glVertexStream1dATI(%s, %f)", gl_enum_name(stream), x)); fn.glVertexStream1dATI(stream, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream1dvATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream1dvATI(GLenum stream, const GLdouble *coords) #endif { D(bug("nfosmesa: glVertexStream1dvATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM1DVATI(stream, coords); } void OSMesaDriver::nfglVertexStream1fATI(GLenum stream, GLfloat x) { D(bug("nfosmesa: glVertexStream1fATI(%s, %f)", gl_enum_name(stream), x)); fn.glVertexStream1fATI(stream, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream1fvATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream1fvATI(GLenum stream, const GLfloat *coords) #endif { D(bug("nfosmesa: glVertexStream1fvATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM1FVATI(stream, coords); } void OSMesaDriver::nfglVertexStream1iATI(GLenum stream, GLint x) { D(bug("nfosmesa: glVertexStream1iATI(%s, %d)", gl_enum_name(stream), x)); fn.glVertexStream1iATI(stream, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream1ivATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream1ivATI(GLenum stream, const GLint *coords) #endif { D(bug("nfosmesa: glVertexStream1ivATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM1IVATI(stream, coords); } void OSMesaDriver::nfglVertexStream1sATI(GLenum stream, GLshort32 x) { D(bug("nfosmesa: glVertexStream1sATI(%s, %d)", gl_enum_name(stream), x)); fn.glVertexStream1sATI(stream, x); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream1svATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream1svATI(GLenum stream, const GLshort *coords) #endif { D(bug("nfosmesa: glVertexStream1svATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM1SVATI(stream, coords); } void OSMesaDriver::nfglVertexStream2dATI(GLenum stream, GLdouble x, GLdouble y) { D(bug("nfosmesa: glVertexStream2dATI(%s, %f, %f)", gl_enum_name(stream), x, y)); fn.glVertexStream2dATI(stream, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream2dvATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream2dvATI(GLenum stream, const GLdouble *coords) #endif { D(bug("nfosmesa: glVertexStream2dvATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM2DVATI(stream, coords); } void OSMesaDriver::nfglVertexStream2fATI(GLenum stream, GLfloat x, GLfloat y) { D(bug("nfosmesa: glVertexStream2fATI(%s, %f, %f)", gl_enum_name(stream), x, y)); fn.glVertexStream2fATI(stream, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream2fvATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream2fvATI(GLenum stream, const GLfloat *coords) #endif { D(bug("nfosmesa: glVertexStream2fvATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM2FVATI(stream, coords); } void OSMesaDriver::nfglVertexStream2iATI(GLenum stream, GLint x, GLint y) { D(bug("nfosmesa: glVertexStream2iATI(%s, %d, %d)", gl_enum_name(stream), x, y)); fn.glVertexStream2iATI(stream, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream2ivATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream2ivATI(GLenum stream, const GLint *coords) #endif { D(bug("nfosmesa: glVertexStream2ivATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM2IVATI(stream, coords); } void OSMesaDriver::nfglVertexStream2sATI(GLenum stream, GLshort32 x, GLshort32 y) { D(bug("nfosmesa: glVertexStream2sATI(%s, %d, %d)", gl_enum_name(stream), x, y)); fn.glVertexStream2sATI(stream, x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream2svATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream2svATI(GLenum stream, const GLshort *coords) #endif { D(bug("nfosmesa: glVertexStream2svATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM2SVATI(stream, coords); } void OSMesaDriver::nfglVertexStream3dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glVertexStream3dATI(%s, %f, %f, %f)", gl_enum_name(stream), x, y, z)); fn.glVertexStream3dATI(stream, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream3dvATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream3dvATI(GLenum stream, const GLdouble *coords) #endif { D(bug("nfosmesa: glVertexStream3dvATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM3DVATI(stream, coords); } void OSMesaDriver::nfglVertexStream3fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glVertexStream3fATI(%s, %f, %f, %f)", gl_enum_name(stream), x, y, z)); fn.glVertexStream3fATI(stream, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream3fvATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream3fvATI(GLenum stream, const GLfloat *coords) #endif { D(bug("nfosmesa: glVertexStream3fvATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM3FVATI(stream, coords); } void OSMesaDriver::nfglVertexStream3iATI(GLenum stream, GLint x, GLint y, GLint z) { D(bug("nfosmesa: glVertexStream3iATI(%s, %d, %d, %d)", gl_enum_name(stream), x, y, z)); fn.glVertexStream3iATI(stream, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream3ivATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream3ivATI(GLenum stream, const GLint *coords) #endif { D(bug("nfosmesa: glVertexStream3ivATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM3IVATI(stream, coords); } void OSMesaDriver::nfglVertexStream3sATI(GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z) { D(bug("nfosmesa: glVertexStream3sATI(%s, %d, %d, %d)", gl_enum_name(stream), x, y, z)); fn.glVertexStream3sATI(stream, x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream3svATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream3svATI(GLenum stream, const GLshort *coords) #endif { D(bug("nfosmesa: glVertexStream3svATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM3SVATI(stream, coords); } void OSMesaDriver::nfglVertexStream4dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glVertexStream4dATI(%s, %f, %f, %f, %f)", gl_enum_name(stream), x, y, z, w)); fn.glVertexStream4dATI(stream, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream4dvATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream4dvATI(GLenum stream, const GLdouble *coords) #endif { D(bug("nfosmesa: glVertexStream4dvATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM4DVATI(stream, coords); } void OSMesaDriver::nfglVertexStream4fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { D(bug("nfosmesa: glVertexStream4fATI(%s, %f, %f, %f, %f)", gl_enum_name(stream), x, y, z, w)); fn.glVertexStream4fATI(stream, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream4fvATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream4fvATI(GLenum stream, const GLfloat *coords) #endif { D(bug("nfosmesa: glVertexStream4fvATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM4FVATI(stream, coords); } void OSMesaDriver::nfglVertexStream4iATI(GLenum stream, GLint x, GLint y, GLint z, GLint w) { D(bug("nfosmesa: glVertexStream4iATI(%s, %d, %d, %d, %d)", gl_enum_name(stream), x, y, z, w)); fn.glVertexStream4iATI(stream, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream4ivATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream4ivATI(GLenum stream, const GLint *coords) #endif { D(bug("nfosmesa: glVertexStream4ivATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM4IVATI(stream, coords); } void OSMesaDriver::nfglVertexStream4sATI(GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w) { D(bug("nfosmesa: glVertexStream4sATI(%s, %d, %d, %d, %d)", gl_enum_name(stream), x, y, z, w)); fn.glVertexStream4sATI(stream, x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexStream4svATI(GLenum stream, memptr coords) #else void OSMesaDriver::nfglVertexStream4svATI(GLenum stream, const GLshort *coords) #endif { D(bug("nfosmesa: glVertexStream4svATI(%s, " PRI_PTR ")", gl_enum_name(stream), AtariOffset(coords))); FN_GLVERTEXSTREAM4SVATI(stream, coords); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexWeightPointerEXT(GLint size, GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglVertexWeightPointerEXT(GLint size, GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glVertexWeightPointerEXT(%d, %s, %d, " PRI_PTR ")", size, gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLVERTEXWEIGHTPOINTEREXT(size, type, stride, pointer); } void OSMesaDriver::nfglVertexWeightfEXT(GLfloat weight) { D(bug("nfosmesa: glVertexWeightfEXT(%f)", weight)); fn.glVertexWeightfEXT(weight); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexWeightfvEXT(memptr weight) #else void OSMesaDriver::nfglVertexWeightfvEXT(const GLfloat *weight) #endif { D(bug("nfosmesa: glVertexWeightfvEXT(" PRI_PTR ")", AtariOffset(weight))); FN_GLVERTEXWEIGHTFVEXT(weight); } void OSMesaDriver::nfglVertexWeighthNV(GLhalfNV32 weight) { D(bug("nfosmesa: glVertexWeighthNV(%u)", weight)); fn.glVertexWeighthNV(weight); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVertexWeighthvNV(memptr weight) #else void OSMesaDriver::nfglVertexWeighthvNV(const GLhalfNV *weight) #endif { D(bug("nfosmesa: glVertexWeighthvNV(" PRI_PTR ")", AtariOffset(weight))); FN_GLVERTEXWEIGHTHVNV(weight); } #if NFOSMESA_POINTER_AS_MEMARG GLenum OSMesaDriver::nfglVideoCaptureNV(GLuint video_capture_slot, memptr sequence_num, memptr capture_time) #else GLenum OSMesaDriver::nfglVideoCaptureNV(GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time) #endif { D(bug("nfosmesa: glVideoCaptureNV(%u, " PRI_PTR ", " PRI_PTR ")", video_capture_slot, AtariOffset(sequence_num), AtariOffset(capture_time))); FN_GLVIDEOCAPTURENV(video_capture_slot, sequence_num, capture_time); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVideoCaptureStreamParameterdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, memptr params) #else void OSMesaDriver::nfglVideoCaptureStreamParameterdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params) #endif { D(bug("nfosmesa: glVideoCaptureStreamParameterdvNV(%u, %u, %s, " PRI_PTR ")", video_capture_slot, stream, gl_enum_name(pname), AtariOffset(params))); FN_GLVIDEOCAPTURESTREAMPARAMETERDVNV(video_capture_slot, stream, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVideoCaptureStreamParameterfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, memptr params) #else void OSMesaDriver::nfglVideoCaptureStreamParameterfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params) #endif { D(bug("nfosmesa: glVideoCaptureStreamParameterfvNV(%u, %u, %s, " PRI_PTR ")", video_capture_slot, stream, gl_enum_name(pname), AtariOffset(params))); FN_GLVIDEOCAPTURESTREAMPARAMETERFVNV(video_capture_slot, stream, pname, params); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglVideoCaptureStreamParameterivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, memptr params) #else void OSMesaDriver::nfglVideoCaptureStreamParameterivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params) #endif { D(bug("nfosmesa: glVideoCaptureStreamParameterivNV(%u, %u, %s, " PRI_PTR ")", video_capture_slot, stream, gl_enum_name(pname), AtariOffset(params))); FN_GLVIDEOCAPTURESTREAMPARAMETERIVNV(video_capture_slot, stream, pname, params); } void OSMesaDriver::nfglViewport(GLint x, GLint y, GLsizei width, GLsizei height) { D(bug("nfosmesa: glViewport(%d, %d, %d, %d)", x, y, width, height)); fn.glViewport(x, y, width, height); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglViewportArrayv(GLuint first, GLsizei count, memptr v) #else void OSMesaDriver::nfglViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) #endif { D(bug("nfosmesa: glViewportArrayv(%u, %d, " PRI_PTR ")", first, count, AtariOffset(v))); FN_GLVIEWPORTARRAYV(first, count, v); } void OSMesaDriver::nfglViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) { D(bug("nfosmesa: glViewportIndexedf(%u, %f, %f, %f, %f)", index, x, y, w, h)); fn.glViewportIndexedf(index, x, y, w, h); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglViewportIndexedfv(GLuint index, memptr v) #else void OSMesaDriver::nfglViewportIndexedfv(GLuint index, const GLfloat *v) #endif { D(bug("nfosmesa: glViewportIndexedfv(%u, " PRI_PTR ")", index, AtariOffset(v))); FN_GLVIEWPORTINDEXEDFV(index, v); } void OSMesaDriver::nfglViewportPositionWScaleNV(GLuint index, GLfloat xcoeff, GLfloat ycoeff) { D(bug("nfosmesa: glViewportPositionWScaleNV(%u, %f, %f)", index, xcoeff, ycoeff)); fn.glViewportPositionWScaleNV(index, xcoeff, ycoeff); } void OSMesaDriver::nfglViewportSwizzleNV(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew) { D(bug("nfosmesa: glViewportSwizzleNV(%u, %s, %s, %s, %s)", index, gl_enum_name(swizzlex), gl_enum_name(swizzley), gl_enum_name(swizzlez), gl_enum_name(swizzlew))); fn.glViewportSwizzleNV(index, swizzlex, swizzley, swizzlez, swizzlew); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWaitSemaphoreEXT(GLuint semaphore, GLuint numBufferBarriers, memptr buffers, GLuint numTextureBarriers, memptr textures, memptr srcLayouts) #else void OSMesaDriver::nfglWaitSemaphoreEXT(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts) #endif { D(bug("nfosmesa: glWaitSemaphoreEXT(%u, %u, " PRI_PTR ", %u, " PRI_PTR ", " PRI_PTR ")", semaphore, numBufferBarriers, AtariOffset(buffers), numTextureBarriers, AtariOffset(textures), AtariOffset(srcLayouts))); #if NFOSMESA_NEED_INT_CONV GLint const __buffers_size = MAX(numBufferBarriers, 0); GLuint __buffers_tmp[__buffers_size]; GLuint *__buffers_ptmp = Atari2HostIntArray(__buffers_size, buffers, __buffers_tmp); GLint const __textures_size = MAX(numTextureBarriers, 0); GLuint __textures_tmp[__textures_size]; GLuint *__textures_ptmp = Atari2HostIntArray(__textures_size, textures, __textures_tmp); GLint const __srcLayouts_size = MAX(numTextureBarriers, 0); GLenum __srcLayouts_tmp[__srcLayouts_size]; GLenum *__srcLayouts_ptmp = Atari2HostIntArray(__srcLayouts_size, srcLayouts, __srcLayouts_tmp); fn.glWaitSemaphoreEXT(semaphore, numBufferBarriers, __buffers_ptmp, numTextureBarriers, __textures_ptmp, __srcLayouts_ptmp); #else fn.glWaitSemaphoreEXT(semaphore, numBufferBarriers, HostAddr(buffers, const GLuint *), numTextureBarriers, HostAddr(textures, const GLuint *), HostAddr(srcLayouts, const GLenum *)); #endif } void OSMesaDriver::nfglWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) { D(bug("nfosmesa: glWaitSync(" PRI_PTR ", 0x%x, %" PRIu64 ")", (unsigned int)(uintptr_t)sync, flags, timeout)); fn.glWaitSync(sync, flags, timeout); } void OSMesaDriver::nfglWaitVkSemaphoreNV(GLuint64 vkSemaphore) { D(bug("nfosmesa: glWaitVkSemaphoreNV(%" PRIu64 ")", vkSemaphore)); fn.glWaitVkSemaphoreNV(vkSemaphore); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWeightPathsNV(GLuint resultPath, GLsizei numPaths, memptr paths, memptr weights) #else void OSMesaDriver::nfglWeightPathsNV(GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights) #endif { D(bug("nfosmesa: glWeightPathsNV(%u, %d, " PRI_PTR ", " PRI_PTR ")", resultPath, numPaths, AtariOffset(paths), AtariOffset(weights))); FN_GLWEIGHTPATHSNV(resultPath, numPaths, paths, weights); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWeightPointerARB(GLint size, GLenum type, GLsizei stride, memptr pointer) #else void OSMesaDriver::nfglWeightPointerARB(GLint size, GLenum type, GLsizei stride, const void *pointer) #endif { D(bug("nfosmesa: glWeightPointerARB(%d, %s, %d, " PRI_PTR ")", size, gl_enum_name(type), stride, AtariOffset(pointer))); FN_GLWEIGHTPOINTERARB(size, type, stride, pointer); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWeightbvARB(GLint size, memptr weights) #else void OSMesaDriver::nfglWeightbvARB(GLint size, const GLbyte *weights) #endif { D(bug("nfosmesa: glWeightbvARB(%d, " PRI_PTR ")", size, AtariOffset(weights))); FN_GLWEIGHTBVARB(size, weights); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWeightdvARB(GLint size, memptr weights) #else void OSMesaDriver::nfglWeightdvARB(GLint size, const GLdouble *weights) #endif { D(bug("nfosmesa: glWeightdvARB(%d, " PRI_PTR ")", size, AtariOffset(weights))); FN_GLWEIGHTDVARB(size, weights); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWeightfvARB(GLint size, memptr weights) #else void OSMesaDriver::nfglWeightfvARB(GLint size, const GLfloat *weights) #endif { D(bug("nfosmesa: glWeightfvARB(%d, " PRI_PTR ")", size, AtariOffset(weights))); FN_GLWEIGHTFVARB(size, weights); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWeightivARB(GLint size, memptr weights) #else void OSMesaDriver::nfglWeightivARB(GLint size, const GLint *weights) #endif { D(bug("nfosmesa: glWeightivARB(%d, " PRI_PTR ")", size, AtariOffset(weights))); FN_GLWEIGHTIVARB(size, weights); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWeightsvARB(GLint size, memptr weights) #else void OSMesaDriver::nfglWeightsvARB(GLint size, const GLshort *weights) #endif { D(bug("nfosmesa: glWeightsvARB(%d, " PRI_PTR ")", size, AtariOffset(weights))); FN_GLWEIGHTSVARB(size, weights); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWeightubvARB(GLint size, memptr weights) #else void OSMesaDriver::nfglWeightubvARB(GLint size, const GLubyte *weights) #endif { D(bug("nfosmesa: glWeightubvARB(%d, " PRI_PTR ")", size, AtariOffset(weights))); FN_GLWEIGHTUBVARB(size, weights); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWeightuivARB(GLint size, memptr weights) #else void OSMesaDriver::nfglWeightuivARB(GLint size, const GLuint *weights) #endif { D(bug("nfosmesa: glWeightuivARB(%d, " PRI_PTR ")", size, AtariOffset(weights))); FN_GLWEIGHTUIVARB(size, weights); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWeightusvARB(GLint size, memptr weights) #else void OSMesaDriver::nfglWeightusvARB(GLint size, const GLushort *weights) #endif { D(bug("nfosmesa: glWeightusvARB(%d, " PRI_PTR ")", size, AtariOffset(weights))); FN_GLWEIGHTUSVARB(size, weights); } void OSMesaDriver::nfglWindowPos2d(GLdouble x, GLdouble y) { D(bug("nfosmesa: glWindowPos2d(%f, %f)", x, y)); fn.glWindowPos2d(x, y); } void OSMesaDriver::nfglWindowPos2dARB(GLdouble x, GLdouble y) { D(bug("nfosmesa: glWindowPos2dARB(%f, %f)", x, y)); fn.glWindowPos2dARB(x, y); } void OSMesaDriver::nfglWindowPos2dMESA(GLdouble x, GLdouble y) { D(bug("nfosmesa: glWindowPos2dMESA(%f, %f)", x, y)); fn.glWindowPos2dMESA(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos2dv(memptr v) #else void OSMesaDriver::nfglWindowPos2dv(const GLdouble *v) #endif { D(bug("nfosmesa: glWindowPos2dv(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS2DV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos2dvARB(memptr v) #else void OSMesaDriver::nfglWindowPos2dvARB(const GLdouble *v) #endif { D(bug("nfosmesa: glWindowPos2dvARB(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS2DVARB(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos2dvMESA(memptr v) #else void OSMesaDriver::nfglWindowPos2dvMESA(const GLdouble *v) #endif { D(bug("nfosmesa: glWindowPos2dvMESA(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS2DVMESA(v); } void OSMesaDriver::nfglWindowPos2f(GLfloat x, GLfloat y) { D(bug("nfosmesa: glWindowPos2f(%f, %f)", x, y)); fn.glWindowPos2f(x, y); } void OSMesaDriver::nfglWindowPos2fARB(GLfloat x, GLfloat y) { D(bug("nfosmesa: glWindowPos2fARB(%f, %f)", x, y)); fn.glWindowPos2fARB(x, y); } void OSMesaDriver::nfglWindowPos2fMESA(GLfloat x, GLfloat y) { D(bug("nfosmesa: glWindowPos2fMESA(%f, %f)", x, y)); fn.glWindowPos2fMESA(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos2fv(memptr v) #else void OSMesaDriver::nfglWindowPos2fv(const GLfloat *v) #endif { D(bug("nfosmesa: glWindowPos2fv(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS2FV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos2fvARB(memptr v) #else void OSMesaDriver::nfglWindowPos2fvARB(const GLfloat *v) #endif { D(bug("nfosmesa: glWindowPos2fvARB(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS2FVARB(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos2fvMESA(memptr v) #else void OSMesaDriver::nfglWindowPos2fvMESA(const GLfloat *v) #endif { D(bug("nfosmesa: glWindowPos2fvMESA(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS2FVMESA(v); } void OSMesaDriver::nfglWindowPos2i(GLint x, GLint y) { D(bug("nfosmesa: glWindowPos2i(%d, %d)", x, y)); fn.glWindowPos2i(x, y); } void OSMesaDriver::nfglWindowPos2iARB(GLint x, GLint y) { D(bug("nfosmesa: glWindowPos2iARB(%d, %d)", x, y)); fn.glWindowPos2iARB(x, y); } void OSMesaDriver::nfglWindowPos2iMESA(GLint x, GLint y) { D(bug("nfosmesa: glWindowPos2iMESA(%d, %d)", x, y)); fn.glWindowPos2iMESA(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos2iv(memptr v) #else void OSMesaDriver::nfglWindowPos2iv(const GLint *v) #endif { D(bug("nfosmesa: glWindowPos2iv(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS2IV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos2ivARB(memptr v) #else void OSMesaDriver::nfglWindowPos2ivARB(const GLint *v) #endif { D(bug("nfosmesa: glWindowPos2ivARB(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS2IVARB(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos2ivMESA(memptr v) #else void OSMesaDriver::nfglWindowPos2ivMESA(const GLint *v) #endif { D(bug("nfosmesa: glWindowPos2ivMESA(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS2IVMESA(v); } void OSMesaDriver::nfglWindowPos2s(GLshort32 x, GLshort32 y) { D(bug("nfosmesa: glWindowPos2s(%d, %d)", x, y)); fn.glWindowPos2s(x, y); } void OSMesaDriver::nfglWindowPos2sARB(GLshort32 x, GLshort32 y) { D(bug("nfosmesa: glWindowPos2sARB(%d, %d)", x, y)); fn.glWindowPos2sARB(x, y); } void OSMesaDriver::nfglWindowPos2sMESA(GLshort32 x, GLshort32 y) { D(bug("nfosmesa: glWindowPos2sMESA(%d, %d)", x, y)); fn.glWindowPos2sMESA(x, y); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos2sv(memptr v) #else void OSMesaDriver::nfglWindowPos2sv(const GLshort *v) #endif { D(bug("nfosmesa: glWindowPos2sv(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS2SV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos2svARB(memptr v) #else void OSMesaDriver::nfglWindowPos2svARB(const GLshort *v) #endif { D(bug("nfosmesa: glWindowPos2svARB(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS2SVARB(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos2svMESA(memptr v) #else void OSMesaDriver::nfglWindowPos2svMESA(const GLshort *v) #endif { D(bug("nfosmesa: glWindowPos2svMESA(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS2SVMESA(v); } void OSMesaDriver::nfglWindowPos3d(GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glWindowPos3d(%f, %f, %f)", x, y, z)); fn.glWindowPos3d(x, y, z); } void OSMesaDriver::nfglWindowPos3dARB(GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glWindowPos3dARB(%f, %f, %f)", x, y, z)); fn.glWindowPos3dARB(x, y, z); } void OSMesaDriver::nfglWindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z) { D(bug("nfosmesa: glWindowPos3dMESA(%f, %f, %f)", x, y, z)); fn.glWindowPos3dMESA(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos3dv(memptr v) #else void OSMesaDriver::nfglWindowPos3dv(const GLdouble *v) #endif { D(bug("nfosmesa: glWindowPos3dv(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS3DV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos3dvARB(memptr v) #else void OSMesaDriver::nfglWindowPos3dvARB(const GLdouble *v) #endif { D(bug("nfosmesa: glWindowPos3dvARB(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS3DVARB(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos3dvMESA(memptr v) #else void OSMesaDriver::nfglWindowPos3dvMESA(const GLdouble *v) #endif { D(bug("nfosmesa: glWindowPos3dvMESA(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS3DVMESA(v); } void OSMesaDriver::nfglWindowPos3f(GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glWindowPos3f(%f, %f, %f)", x, y, z)); fn.glWindowPos3f(x, y, z); } void OSMesaDriver::nfglWindowPos3fARB(GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glWindowPos3fARB(%f, %f, %f)", x, y, z)); fn.glWindowPos3fARB(x, y, z); } void OSMesaDriver::nfglWindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z) { D(bug("nfosmesa: glWindowPos3fMESA(%f, %f, %f)", x, y, z)); fn.glWindowPos3fMESA(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos3fv(memptr v) #else void OSMesaDriver::nfglWindowPos3fv(const GLfloat *v) #endif { D(bug("nfosmesa: glWindowPos3fv(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS3FV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos3fvARB(memptr v) #else void OSMesaDriver::nfglWindowPos3fvARB(const GLfloat *v) #endif { D(bug("nfosmesa: glWindowPos3fvARB(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS3FVARB(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos3fvMESA(memptr v) #else void OSMesaDriver::nfglWindowPos3fvMESA(const GLfloat *v) #endif { D(bug("nfosmesa: glWindowPos3fvMESA(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS3FVMESA(v); } void OSMesaDriver::nfglWindowPos3i(GLint x, GLint y, GLint z) { D(bug("nfosmesa: glWindowPos3i(%d, %d, %d)", x, y, z)); fn.glWindowPos3i(x, y, z); } void OSMesaDriver::nfglWindowPos3iARB(GLint x, GLint y, GLint z) { D(bug("nfosmesa: glWindowPos3iARB(%d, %d, %d)", x, y, z)); fn.glWindowPos3iARB(x, y, z); } void OSMesaDriver::nfglWindowPos3iMESA(GLint x, GLint y, GLint z) { D(bug("nfosmesa: glWindowPos3iMESA(%d, %d, %d)", x, y, z)); fn.glWindowPos3iMESA(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos3iv(memptr v) #else void OSMesaDriver::nfglWindowPos3iv(const GLint *v) #endif { D(bug("nfosmesa: glWindowPos3iv(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS3IV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos3ivARB(memptr v) #else void OSMesaDriver::nfglWindowPos3ivARB(const GLint *v) #endif { D(bug("nfosmesa: glWindowPos3ivARB(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS3IVARB(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos3ivMESA(memptr v) #else void OSMesaDriver::nfglWindowPos3ivMESA(const GLint *v) #endif { D(bug("nfosmesa: glWindowPos3ivMESA(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS3IVMESA(v); } void OSMesaDriver::nfglWindowPos3s(GLshort32 x, GLshort32 y, GLshort32 z) { D(bug("nfosmesa: glWindowPos3s(%d, %d, %d)", x, y, z)); fn.glWindowPos3s(x, y, z); } void OSMesaDriver::nfglWindowPos3sARB(GLshort32 x, GLshort32 y, GLshort32 z) { D(bug("nfosmesa: glWindowPos3sARB(%d, %d, %d)", x, y, z)); fn.glWindowPos3sARB(x, y, z); } void OSMesaDriver::nfglWindowPos3sMESA(GLshort32 x, GLshort32 y, GLshort32 z) { D(bug("nfosmesa: glWindowPos3sMESA(%d, %d, %d)", x, y, z)); fn.glWindowPos3sMESA(x, y, z); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos3sv(memptr v) #else void OSMesaDriver::nfglWindowPos3sv(const GLshort *v) #endif { D(bug("nfosmesa: glWindowPos3sv(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS3SV(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos3svARB(memptr v) #else void OSMesaDriver::nfglWindowPos3svARB(const GLshort *v) #endif { D(bug("nfosmesa: glWindowPos3svARB(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS3SVARB(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos3svMESA(memptr v) #else void OSMesaDriver::nfglWindowPos3svMESA(const GLshort *v) #endif { D(bug("nfosmesa: glWindowPos3svMESA(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS3SVMESA(v); } void OSMesaDriver::nfglWindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w) { D(bug("nfosmesa: glWindowPos4dMESA(%f, %f, %f, %f)", x, y, z, w)); fn.glWindowPos4dMESA(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos4dvMESA(memptr v) #else void OSMesaDriver::nfglWindowPos4dvMESA(const GLdouble *v) #endif { D(bug("nfosmesa: glWindowPos4dvMESA(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS4DVMESA(v); } void OSMesaDriver::nfglWindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { D(bug("nfosmesa: glWindowPos4fMESA(%f, %f, %f, %f)", x, y, z, w)); fn.glWindowPos4fMESA(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos4fvMESA(memptr v) #else void OSMesaDriver::nfglWindowPos4fvMESA(const GLfloat *v) #endif { D(bug("nfosmesa: glWindowPos4fvMESA(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS4FVMESA(v); } void OSMesaDriver::nfglWindowPos4iMESA(GLint x, GLint y, GLint z, GLint w) { D(bug("nfosmesa: glWindowPos4iMESA(%d, %d, %d, %d)", x, y, z, w)); fn.glWindowPos4iMESA(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos4ivMESA(memptr v) #else void OSMesaDriver::nfglWindowPos4ivMESA(const GLint *v) #endif { D(bug("nfosmesa: glWindowPos4ivMESA(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS4IVMESA(v); } void OSMesaDriver::nfglWindowPos4sMESA(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w) { D(bug("nfosmesa: glWindowPos4sMESA(%d, %d, %d, %d)", x, y, z, w)); fn.glWindowPos4sMESA(x, y, z, w); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowPos4svMESA(memptr v) #else void OSMesaDriver::nfglWindowPos4svMESA(const GLshort *v) #endif { D(bug("nfosmesa: glWindowPos4svMESA(" PRI_PTR ")", AtariOffset(v))); FN_GLWINDOWPOS4SVMESA(v); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::nfglWindowRectanglesEXT(GLenum mode, GLsizei count, memptr box) #else void OSMesaDriver::nfglWindowRectanglesEXT(GLenum mode, GLsizei count, const GLint *box) #endif { D(bug("nfosmesa: glWindowRectanglesEXT(%s, %d, " PRI_PTR ")", gl_enum_name(mode), count, AtariOffset(box))); #if NFOSMESA_NEED_INT_CONV GLint const __box_size = MAX(4 * count, 0); GLint __box_tmp[__box_size]; GLint *__box_ptmp = Atari2HostIntArray(__box_size, box, __box_tmp); fn.glWindowRectanglesEXT(mode, count, __box_ptmp); #else fn.glWindowRectanglesEXT(mode, count, HostAddr(box, const GLint *)); #endif } void OSMesaDriver::nfglWriteMaskEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW) { D(bug("nfosmesa: glWriteMaskEXT(%u, %u, %s, %s, %s, %s)", res, in, gl_enum_name(outX), gl_enum_name(outY), gl_enum_name(outZ), gl_enum_name(outW))); fn.glWriteMaskEXT(res, in, outX, outY, outZ, outW); } #if 0 void OSMesaDriver::nfgluLookAt(GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ) { D(bug("nfosmesa: gluLookAt(%f, %f, %f, %f, %f, %f, %f, %f, %f)", eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ)); fn.gluLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ); } #endif /* Functions generated: 2954 GL + 1 GLU */ /* Automatically generated: 130 */ aranym-1.1.0/src/natfeat/nfosmesa.h0000664000175000017500000006434613454637621015413 0ustar joyjoy/* NatFeat host OSMesa rendering ARAnyM (C) 2003 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFOSMESA_H #define NFOSMESA_H /*--- Includes ---*/ #include "SDL_compat.h" #include #include "SDL_opengl_wrapper.h" #ifdef HAVE_GL_OSMESA_H #include #endif #include "../../atari/nfosmesa/gltypes.h" #include "nf_base.h" #include "parameters.h" /*--- Defines ---*/ #define MAX_OSMESA_CONTEXTS 16 #define NFOSMESA_VERTEX_ARRAY (1<<0) #define NFOSMESA_NORMAL_ARRAY (1<<1) #define NFOSMESA_COLOR_ARRAY (1<<2) #define NFOSMESA_INDEX_ARRAY (1<<3) #define NFOSMESA_EDGEFLAG_ARRAY (1<<4) #define NFOSMESA_TEXCOORD_ARRAY (1<<5) #define NFOSMESA_FOGCOORD_ARRAY (1<<6) #define NFOSMESA_2NDCOLOR_ARRAY (1<<7) #define NFOSMESA_ELEMENT_ARRAY (1<<8) #define NFOSMESA_VARIANT_ARRAY (1<<9) #define NFOSMESA_WEIGHT_ARRAY (1<<10) #define NFOSMESA_MATRIX_INDEX_ARRAY (1<<11) #define NFOSMESA_REPLACEMENT_CODE_ARRAY (1<<12) #define ATARI_SIZEOF_DOUBLE ((size_t)8) #define ATARI_SIZEOF_FLOAT ((size_t)4) /* * wether atari addresses are passed as memptr * or are already converted to Host Addresses * when passed to the member functions; * FULLMMU needs memptr to allow for MMU emulation, * otherwise direct addresses might be a bit faster, * but may generate a SEGFAULT in the host rather * than a BUSERROR in the emulator */ #ifdef FULLMMU #define NFOSMESA_POINTER_AS_MEMARG 1 #else #define NFOSMESA_POINTER_AS_MEMARG 0 #endif #if defined(FULLMMU) || NFOSMESA_POINTER_AS_MEMARG #define NFOSMESA_NEED_BYTE_CONV 1 #else #define NFOSMESA_NEED_BYTE_CONV 0 #endif #if SDL_BYTEORDER == SDL_LIL_ENDIAN || defined(FULLMMU) || NFOSMESA_POINTER_AS_MEMARG #define NFOSMESA_NEED_INT_CONV 1 #else #define NFOSMESA_NEED_INT_CONV 0 #endif #if SDL_BYTEORDER == SDL_LIL_ENDIAN || SIZEOF_FLOAT != 4 || defined(FULLMMU) || NFOSMESA_POINTER_AS_MEMARG /* FIXME: need also conversion if host float not ieee */ #define NFOSMESA_NEED_FLOAT_CONV 1 #else #define NFOSMESA_NEED_FLOAT_CONV 0 #endif #if SDL_BYTEORDER == SDL_LIL_ENDIAN || SIZEOF_DOUBLE != 8 || defined(FULLMMU) || NFOSMESA_POINTER_AS_MEMARG /* FIXME: need also conversion if host double not ieee */ #define NFOSMESA_NEED_DOUBLE_CONV 1 #else #define NFOSMESA_NEED_DOUBLE_CONV 0 #endif #if 0 /* for testing compilation of the non-conversion case */ #undef NFOSMESA_NEED_BYTE_CONV #define NFOSMESA_NEED_BYTE_CONV 0 #undef NFOSMESA_NEED_INT_CONV #define NFOSMESA_NEED_INT_CONV 0 #undef NFOSMESA_NEED_FLOAT_CONV #define NFOSMESA_NEED_FLOAT_CONV 0 #undef NFOSMESA_NEED_DOUBLE_CONV #define NFOSMESA_NEED_DOUBLE_CONV 0 #endif /*--- Types ---*/ #if NFOSMESA_POINTER_AS_MEMARG typedef memptr nfmemptr; typedef memptr nfcmemptr; #else typedef char *nfmemptr; typedef const char *nfcmemptr; #endif typedef struct gl_buffer { GLenum name; GLsizei size; nfmemptr atari_buffer; char *host_buffer; GLenum usage; GLboolean normalized; struct gl_buffer *next; } gl_buffer_t; typedef enum { NFOSMESA_VENDOR_NONE, NFOSMESA_VENDOR_ARB, NFOSMESA_VENDOR_EXT, NFOSMESA_VENDOR_IBM, NFOSMESA_VENDOR_SGI, NFOSMESA_VENDOR_INTEL, NFOSMESA_VENDOR_APPLE, NFOSMESA_VENDOR_NV, NFOSMESA_VENDOR_ATI, NFOSMESA_VENDOR_SUN } vendor_t; typedef struct { GLint size; GLenum type; GLsizei atari_stride, host_stride, defstride; GLsizei basesize; GLsizei count; GLsizei converted; nfmemptr atari_pointer; char *host_pointer; GLint ptrstride; vendor_t vendor; GLsizei buffer_offset; GLuint id; bool alloced; } vertexarray_t; typedef struct { GLuint id; GLenum type; GLuint first; GLuint count; char *host_pointer; nfmemptr atari_pointer; } fbo_buffer; class OffscreenContext; typedef struct { OffscreenContext *ctx; GLenum render_mode; GLenum error_code; void *feedback_buffer_host; nfmemptr feedback_buffer_atari; GLenum feedback_buffer_type; GLuint *select_buffer_host; nfmemptr select_buffer_atari; GLuint select_buffer_size; GLboolean error_check_enabled; struct { fbo_buffer array; fbo_buffer atomic_counter; fbo_buffer copy_read; fbo_buffer copy_write; fbo_buffer dispatch_indirect; fbo_buffer draw_indirect; fbo_buffer element_array; fbo_buffer pixel_pack; fbo_buffer pixel_unpack; fbo_buffer query; fbo_buffer shader_storage; fbo_buffer texture; fbo_buffer transform_feedback; fbo_buffer uniform; } buffer_bindings; gl_buffer_t *buffers; GLuint share_ctx; /* Vertex arrays */ int enabled_arrays; vertexarray_t vertex; vertexarray_t normal; vertexarray_t color; vertexarray_t texcoord; vertexarray_t index; vertexarray_t edgeflag; vertexarray_t fogcoord; vertexarray_t secondary_color; vertexarray_t element; vertexarray_t variant; vertexarray_t weight; vertexarray_t matrixindex; vertexarray_t replacement_code; } context_t; typedef void (APIENTRY *NFGL_PROC)(void); typedef NFGL_PROC (APIENTRY *NFGL_GETPROCADDRESS)(const char *funcname); /*--- Types ---*/ typedef struct { #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) type (APIENTRY *gl ## name) proto ; #define GLU_PROC(type, gl, name, export, upper, proto, args, first, ret) #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) type (APIENTRY *OSMesa ## name) proto ; #include "../../atari/nfosmesa/glfuncs.h" } osmesa_funcs; #define GL_ISAVAILABLE(f) (OSMesaDriver::fn.f) /*--- Class ---*/ class OSMesaDriver : public NF_Base { protected: /* contexts[0] unused */ context_t contexts[MAX_OSMESA_CONTEXTS+1]; int num_contexts; Uint32 cur_context; void *libosmesa_handle, *libgl_handle; static OSMesaDriver *thisdriver; bool lib_opened; bool open_succeeded; /* if true, we are using the software Mesa library; if false, we are using OpenGL via Render buffers */ bool using_mesa; static NFGL_GETPROCADDRESS get_procaddress; OffscreenContext *TryCreateContext(void); SDL_GLContext SDL_glctx; bool OpenLibrary(void); void CloseLibrary(void); void CloseMesaLibrary(void); void CloseGLLibrary(void); static void InitPointersOSMesa(void *handle); bool SelectContext(Uint32 ctx); void ConvertContext(Uint32 ctx); void glSetError(GLenum e); /* Some special functions, which need a bit more work */ Uint32 LenglGetString(Uint32 ctx, GLenum name); #if NFOSMESA_POINTER_AS_MEMARG void PutglGetString(Uint32 ctx, GLenum name, memptr buffer); #else void PutglGetString(Uint32 ctx, GLenum name, GLubyte *buffer); #endif Uint32 LenglGetStringi(Uint32 ctx, GLenum name, GLuint index); #if NFOSMESA_POINTER_AS_MEMARG void PutglGetStringi(Uint32 ctx, GLenum name, GLuint index, memptr buffer); #else void PutglGetStringi(Uint32 ctx, GLenum name, GLuint index, GLubyte *buffer); #endif static GLsizei nfglPixelmapSize(GLenum pname); static int nfglGetNumParams(GLenum pname); static GLint __glGetMap_Evalk(GLenum target); /* utility functions */ static inline GLfloat Atari2HostFloat(Uint32 value) { union { GLfloat f; Uint32 i; } u; // no SDL_SwapBE32() here; already done by getStackedParameter u.i = value; return u.f; } static inline Uint32 Host2AtariFloat(GLfloat value) { union { GLfloat f; Uint32 i; } u; u.f = value; return u.i; } static inline GLdouble Atari2HostDouble(Uint32 high, Uint32 low) { union { GLdouble d; Uint32 i[2]; } u; // no SDL_SwapBE32() here; already done by getStackedParameter // but need to change order of the words #if SDL_BYTEORDER == SDL_LIL_ENDIAN u.i[0] = low; u.i[1] = high; #else u.i[0] = high; u.i[1] = low; #endif return u.d; } #if NFOSMESA_POINTER_AS_MEMARG static inline void Host2AtariFloatArray(GLsizei size, const GLfloat *src, memptr dest) { if (!dest) return; for (GLsizei i = 0; i < size; i++) { WriteInt32(dest, Host2AtariFloat(src[i])); dest += ATARI_SIZEOF_FLOAT; } } static inline GLfloat *Atari2HostFloatArray(GLsizei size, memptr src, GLfloat *dest) { if (!src) return NULL; for (GLsizei i = 0; i < size; i++) { dest[i] = Atari2HostFloat(ReadInt32(src)); src += ATARI_SIZEOF_FLOAT; } return dest; } static inline void Host2AtariDoubleArray(GLsizei size, const GLdouble *src, memptr dst) { union { GLdouble d; Uint64 i; } u; if (!dst) return; for (GLsizei i = 0; i < size; i++) { u.d = *src++; WriteInt64(dst, u.i); dst += ATARI_SIZEOF_DOUBLE; } } static inline GLdouble *Atari2HostDoubleArray(GLsizei size, memptr src, GLdouble *dst) { GLsizei i; union { GLdouble d; Uint64 i; } u; if (!src) return NULL; for (i = 0; i < size; i++) { u.i = ReadInt64(src); dst[i] = u.d; src += ATARI_SIZEOF_DOUBLE; } return dst; } static inline GLushort *Atari2HostShortArray(GLsizei size, memptr src, GLushort *dest) { GLsizei i; if (!src) return NULL; for (i = 0; i < size; i++) { dest[i] = ReadInt16(src); src += 2; } return dest; } static inline GLshort *Atari2HostShortArray(GLsizei size, memptr src, GLshort *dest) { return (GLshort *)Atari2HostShortArray(size, src, (GLushort *)dest); } static inline void Host2AtariShortArray(GLsizei size, const Uint16 *src, memptr dest) { GLsizei i; if (!dest) return; for (i = 0; i < size; i++) { WriteInt16(dest, src[i]); dest += 2; } } static inline void Host2AtariShortArray(GLsizei size, const Sint16 *src, memptr dest) { Host2AtariShortArray(size, (const Uint16 *)src, dest); } static inline GLuint *Atari2HostIntArray(GLsizei size, memptr src, GLuint *dest) { GLsizei i; if (!src) return NULL; for (i = 0; i < size; i++) { dest[i] = ReadInt32(src); src += 4; } return dest; } static inline GLint *Atari2HostIntArray(GLsizei size, memptr src, GLint *dest) { return (GLint *)Atari2HostIntArray(size, src, (GLuint *)dest); } /* has to be handled separate because hosts GLintptr is different than Ataris */ \ static inline GLintptr *Atari2HostIntptrArray(GLsizei size, memptr src, GLintptr *dest) { GLsizei i; if (!src) return NULL; for (i = 0; i < size; i++) { dest[i] = ReadInt32(src); src += 4; } return dest; } static inline void Host2AtariIntArray(GLsizei size, const GLuint *src, memptr dest) { GLsizei i; if (!dest) return; for (i = 0; i < size; i++) { WriteInt32(dest, src[i]); dest += 4; } } static inline void Host2AtariIntArray(GLsizei size, const GLint *src, memptr dest) { Host2AtariIntArray(size, (const GLuint *)src, dest); } #ifdef __APPLE__ static inline void Host2AtariHandleARB(int size, const GLhandleARB *src, memptr dest) { int i; if (!dest) return; for (i = 0; i < size; i++) { Uint32 h = (Uint32)(uintptr_t)src[i]; WriteInt32(dest, h); dest += 4; } } #else static inline void Host2AtariHandleARB(int size, const GLhandleARB *src, memptr dest) { Host2AtariIntArray(size, src, dest); } #endif static inline GLuint64 *Atari2HostInt64Array(GLsizei size, memptr src, GLuint64 *dest) { GLsizei i; if (!src) return NULL; for (i = 0; i < size; i++) { dest[i] = ReadInt64(src); src += 8; } return dest; } static inline GLint64 *Atari2HostInt64Array(GLsizei size, memptr src, GLint64 *dest) { return (GLint64 *)Atari2HostInt64Array(size, src, (GLuint64 *)dest); } static inline void Host2AtariInt64Array(GLsizei size, const Uint64 *src, memptr dest) { GLsizei i; if (!dest) return; for (i = 0; i < size; i++) { WriteInt64(dest, src[i]); dest += 8; } } static inline void Host2AtariInt64Array(GLsizei size, const Sint64 *src, memptr dest) { Host2AtariInt64Array(size, (const Uint64 *)src, dest); } static inline void **Atari2HostPtrArray(GLsizei size, memptr src, void **dest) { if (!src) return NULL; for (GLsizei i = 0; i < size; i++) { memptr p = ReadInt32(src); dest[i] = p ? Atari2HostAddr(p) : NULL; src += 4; } return dest; } static inline memptr *Atari2HostMemPtrArray(GLsizei size, memptr src, memptr *dest) { if (!src) return NULL; for (GLsizei i = 0; i < size; i++) { memptr p = ReadInt32(src); dest[i] = p; src += 4; } return dest; } static inline memptr *Atari2HostPtrArray(GLsizei size, memptr src, memptr *dest) { if (!src) return NULL; for (GLsizei i = 0; i < size; i++) { memptr p = ReadInt32(src); dest[i] = p; src += 4; } return dest; } static inline GLubyte *Atari2HostByteArray(GLsizei size, memptr src, GLubyte *dest) { GLsizei i; if (!src) return NULL; for (i = 0; i < size; i++) { dest[i] = ReadInt8(src); src += 1; } return dest; } static inline GLbyte *Atari2HostByteArray(GLsizei size, memptr src, GLbyte *dest) { return (GLbyte *)Atari2HostByteArray(size, src, (GLubyte *)dest); } static inline char *Atari2HostByteArray(GLsizei size, memptr src, char *dest) { return (char *)Atari2HostByteArray(size, src, (GLubyte *)dest); } static inline void Host2AtariByteArray(GLsizei size, const GLubyte *src, memptr dest) { GLsizei i; if (!dest) return; for (i = 0; i < size; i++) { WriteInt8(dest, src[i]); dest += 1; } } static inline void Host2AtariByteArray(GLsizei size, const GLbyte *src, memptr dest) { Host2AtariByteArray(size, (const GLubyte *)src, dest); } static inline void Host2AtariByteArray(GLsizei size, const GLchar *src, memptr dest) { Host2AtariByteArray(size, (const GLubyte *)src, dest); } static inline size_t safe_strlen(memptr src) { size_t i; char c; if (!src) return 0; i = 1; for (;;) { c = ReadInt8(src); if (!c) break; src += 1; } return i; } #else static inline void Host2AtariFloatArray(GLsizei size, const GLfloat *src, GLfloat *dest) { Uint32 *p = (Uint32 *)dest; if (!dest) return; for (GLsizei i = 0; i < size; i++) { p[i] = SDL_SwapBE32(Host2AtariFloat(src[i])); } } static inline GLfloat *Atari2HostFloatArray(GLsizei size, const GLfloat *src, GLfloat *dest) { const Uint32 *p = (const Uint32 *)src; if (!src) return NULL; for (GLsizei i = 0; i < size; i++) { dest[i] = Atari2HostFloat(SDL_SwapBE32(p[i])); } return dest; } static inline GLfloat *Atari2HostFloatArray(GLsizei size, const void *src, GLfloat *dest) { return Atari2HostFloatArray(size, (const GLfloat *)src, dest); } static inline void Host2AtariDoubleArray(GLsizei size, const GLdouble *src, GLdouble *dst) { union { GLdouble d; Uint64 i; } u; Uint64 *p = (Uint64 *)dst; if (!dst) return; for (GLsizei i = 0; i < size; i++) { u.d = *src++; *p = SDL_SwapBE64(u.i); p++; } } static inline GLdouble *Atari2HostDoubleArray(GLsizei size, const GLdouble *src, GLdouble *dest) { GLsizei i; const Uint32 *p = (const Uint32 *)src; if (!src) return NULL; for (i = 0; i < size; i++) { dest[i] = Atari2HostDouble(SDL_SwapBE32(p[i<<1]),SDL_SwapBE32(p[(i<<1)+1])); } return dest; } static inline GLdouble *Atari2HostDoubleArray(GLsizei size, const void *src, GLdouble *dest) { return Atari2HostDoubleArray(size, (const GLdouble *)src, dest); } static inline GLushort *Atari2HostShortArray(GLsizei size, const Uint16 *src, GLushort *dest) { GLsizei i; if (!src) return NULL; for (i = 0; i < size; i++) { dest[i] = SDL_SwapBE16(src[i]); } return dest; } static inline GLshort *Atari2HostShortArray(GLsizei size, const Sint16 *src, GLshort *dest) { return (GLshort *)Atari2HostShortArray(size, (const Uint16 *)src, (GLushort *)dest); } static inline GLushort *Atari2HostShortArray(GLsizei size, const void *src, GLushort *dest) { return Atari2HostShortArray(size, (const Uint16 *)src, dest); } static inline void Host2AtariShortArray(GLsizei size, const Uint16 *src, GLushort *dest) { GLsizei i; if (!dest) return; for (i = 0; i < size; i++) { dest[i] = SDL_SwapBE16(src[i]); } } static inline void Host2AtariShortArray(GLsizei size, const Sint16 *src, GLshort *dest) { Host2AtariShortArray(size, (const Uint16 *)src, (GLushort *)dest); } static inline GLuint *Atari2HostIntArray(GLsizei size, const Uint32 *src, GLuint *dest) { GLsizei i; if (!src) return NULL; for (i = 0; i < size; i++) { dest[i] = SDL_SwapBE32(src[i]); } return dest; } static inline GLint *Atari2HostIntArray(GLsizei size, const Sint32 *src, GLint *dest) { return (GLint *)Atari2HostIntArray(size, (const Uint32 *)src, (GLuint *)dest); } static inline GLuint *Atari2HostIntArray(GLsizei size, const void *src, GLuint *dest) { return Atari2HostIntArray(size, (const Uint32 *)src, dest); } /* has to be handled separate because hosts GLintptr is different than Ataris */ \ static inline GLintptr *Atari2HostIntptrArray(GLsizei size, const GLintptr *src, GLintptr *dest) { GLsizei i; if (!src) return NULL; const Uint32 *p = (const Uint32 *)src; \ for (i = 0; i < size; i++) { dest[i] = SDL_SwapBE32(p[i]); } return dest; } static inline void Host2AtariIntArray(GLsizei size, const Uint32 *src, GLuint *dest) { GLsizei i; if (!dest) return; for (i = 0; i < size; i++) { dest[i] = SDL_SwapBE32(src[i]); } } static inline void Host2AtariIntArray(GLsizei size, const Sint32 *src, GLint *dest) { Host2AtariIntArray(size, (const Uint32 *)src, (GLuint *)dest); } #ifdef __APPLE__ static inline void Host2AtariHandleARB(int size, const GLhandleARB *src, GLhandleARB *dest) { int i; if (!dest) return; GLuint *p = (GLuint *)dest; for (i = 0; i < size; i++) { Uint32 h = (Uint32)(uintptr_t)src[i]; p[i] = SDL_SwapBE32(h); } } #else static inline void Host2AtariHandleARB(int size, const GLhandleARB *src, GLhandleARB *dest) { Host2AtariIntArray(size, src, dest); } #endif static inline GLuint64 *Atari2HostInt64Array(GLsizei size, const Uint64 *src, GLuint64 *dest) { GLsizei i; if (!src) return NULL; for (i = 0; i < size; i++) { dest[i] = SDL_SwapBE64(src[i]); } return dest; } static inline GLint64 *Atari2HostInt64Array(GLsizei size, const Sint64 *src, GLint64 *dest) { return (GLint64 *)Atari2HostInt64Array(size, (const Uint64 *)src, (GLuint64 *)dest); } static inline void Host2AtariInt64Array(GLsizei size, const Uint64 *src, GLuint64 *dest) { GLsizei i; if (!dest) return; for (i = 0; i < size; i++) { dest[i] = SDL_SwapBE64(src[i]); } } static inline void Host2AtariInt64Array(GLsizei size, const Sint64 *src, GLint64 *dest) { Host2AtariInt64Array(size, (const Uint64 *)src, (GLuint64 *)dest); } static inline void **Atari2HostPtrArray(GLsizei size, const void **src, void **dest) { if (!src) return NULL; const memptr *tmp = (const memptr *)src; for (GLsizei i = 0; i < size; i++) { memptr p = SDL_SwapBE32(tmp[i]); dest[i] = p ? Atari2HostAddr(p) : NULL; } return dest; } static inline nfmemptr *Atari2HostPtrArray(GLsizei size, const void **src, char **dest) { return (nfmemptr *)Atari2HostPtrArray(size, src, (void **)dest); } static inline void **Atari2HostPtrArray(GLsizei size, const char *const *src, void **dest) { return Atari2HostPtrArray(size, (const void **)src, dest); } static inline void **Atari2HostPtrArray(GLsizei size, const void *const *src, void **dest) { return Atari2HostPtrArray(size, (const void **)src, dest); } static inline void **Atari2HostPtrArray(GLsizei size, char **src, void **dest) { return Atari2HostPtrArray(size, (const void **)src, dest); } static inline void **Atari2HostMemPtrArray(GLsizei size, const void *const *src, nfmemptr *dest) { return Atari2HostPtrArray(size, (const void **)src, (void **)dest); } static inline GLubyte *Atari2HostByteArray(GLsizei size, const GLubyte *src, GLubyte *dest) { GLsizei i; if (!src) return NULL; for (i = 0; i < size; i++) { dest[i] = src[i]; } return dest; } static inline GLbyte *Atari2HostByteArray(GLsizei size, const GLbyte *src, GLbyte *dest) { return (GLbyte *)Atari2HostByteArray(size, (const GLubyte *)src, (GLubyte *)dest); } static inline GLchar *Atari2HostByteArray(GLsizei size, const GLchar *src, GLchar *dest) { return (GLchar *)Atari2HostByteArray(size, (const GLubyte *)src, (GLubyte *)dest); } static inline GLubyte *Atari2HostByteArray(GLsizei size, const void *src, GLubyte *dest) { return Atari2HostByteArray(size, (const GLubyte *)src, dest); } static inline void Host2AtariByteArray(GLsizei size, const GLubyte *src, GLubyte *dest) { GLsizei i; if (!dest) return; for (i = 0; i < size; i++) { dest[i] = src[i]; } } static inline void Host2AtariByteArray(GLsizei size, const GLbyte *src, GLbyte *dest) { Host2AtariByteArray(size, (const GLubyte *)src, (GLubyte *)dest); } static inline void Host2AtariByteArray(GLsizei size, const GLchar *src, GLchar *dest) { Host2AtariByteArray(size, (const GLubyte *)src, (GLubyte *)dest); } static inline void Host2AtariByteArray(GLsizei size, const GLubyte *src, void *dest) { Host2AtariByteArray(size, src, (GLubyte *)dest); } static inline size_t safe_strlen(const char *src) { if (!src) return 0; return strlen(src); } static inline size_t safe_strlen(const unsigned char *src) { return safe_strlen((const char *)src); } static inline size_t safe_strlen(const void *src) { return safe_strlen((const char *)src); } #endif class pixelBuffer { private: OSMesaDriver &driver; GLsizei width; GLsizei height; GLsizei depth; GLenum format; GLenum type; GLsizei basesize; GLsizei componentcount; GLsizei count; size_t bufsize; char *buffer; bool alloced; bool valid; public: pixelBuffer(OSMesaDriver &_driver, GLsizei _width, GLsizei _height, GLsizei _depth, GLenum _format, GLenum _type) : driver(_driver), width(_width), height(_height), depth(_depth), format(_format), type(_type), basesize(0), componentcount(0), buffer(NULL), alloced(false), valid(false) { } pixelBuffer(OSMesaDriver &_driver) : driver(_driver), width(0), height(0), depth(0), format(0), type(0), basesize(0), componentcount(0), count(0), bufsize(0), buffer(NULL), alloced(false), valid(false) { } pixelBuffer() : driver(*thisdriver), width(0), height(0), depth(0), format(0), type(0), basesize(0), componentcount(0), count(0), bufsize(0), buffer(NULL), alloced(false), valid(false) { } virtual ~pixelBuffer() { if (alloced) free(buffer); } bool validate(); GLsizei ComponentCount() { return componentcount; } GLsizei Count() { return count; } char *hostBuffer(GLsizei _width, GLsizei _height, GLsizei _depth, GLenum _format, GLenum _type, nfmemptr dest); char *hostBuffer(GLsizei _bufSize, GLenum _format, GLenum _type, nfmemptr dest); bool params(GLsizei _width, GLsizei _height, GLsizei _depth, GLenum _format, GLenum _type); bool params(GLsizei _bufSize, GLenum _format, GLenum _type); void convertToAtari(const char *src, nfmemptr dst); void *convertArray(GLsizei _count, GLenum _type, nfmemptr src); void *convertPixels(GLsizei _width, GLsizei _height, GLsizei _depth, GLenum _format, GLenum _type, nfmemptr src); }; void *load_gl_library(const char *pathlist); void nfglArrayElementHelper(GLint i); void convertClientArrays(GLsizei count); void convertClientArray(GLsizei count, vertexarray_t &array); void setupClientArray(GLenum texunit, vertexarray_t &array, GLint size, GLenum type, GLsizei stride, GLsizei count, GLint ptrstride, nfmemptr pointer); void nfglInterleavedArraysHelper(GLenum format, GLsizei stride, nfmemptr pointer); void gl_bind_buffer(GLenum target, GLuint buffer, GLuint first, GLuint count); void gl_get_pointer(GLenum target, GLuint index, void **data); gl_buffer_t *gl_get_buffer(GLuint name); gl_buffer_t *gl_make_buffer(GLsizei size, nfcmemptr pointer); vertexarray_t *gl_get_array(GLenum pname); /* OSMesa functions */ Uint32 OSMesaCreateContext( GLenum format, Uint32 sharelist ); Uint32 OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, Uint32 sharelist); void OSMesaDestroyContext( Uint32 ctx ); GLboolean OSMesaMakeCurrent( Uint32 ctx, memptr buffer, GLenum type, GLsizei width, GLsizei height ); Uint32 OSMesaGetCurrentContext( void ); void OSMesaPixelStore(GLint pname, GLint value ); #if NFOSMESA_POINTER_AS_MEMARG void OSMesaGetIntegerv(GLint pname, memptr value ); GLboolean OSMesaGetDepthBuffer( Uint32 c, memptr width, memptr height, memptr bytesPerValue, memptr buffer ); GLboolean OSMesaGetColorBuffer( Uint32 c, memptr width, memptr height, memptr format, memptr buffer ); #else void OSMesaGetIntegerv(GLint pname, GLint *value ); GLboolean OSMesaGetDepthBuffer( Uint32 c, GLint *width, GLint *height, GLint *bytesPerValue, void **buffer ); GLboolean OSMesaGetColorBuffer( Uint32 c, GLint *width, GLint *height, GLint *format, void **buffer ); #endif void OSMesaPostprocess(Uint32 ctx, const char *filter, GLuint enable_value); unsigned int OSMesaGetProcAddress( nfcmemptr funcName ); void OSMesaColorClamp(GLboolean enable); /* tinyGL functions */ void nfglFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); void nfglOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); void nfgluLookAtf(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ); void nftinyglswapbuffer(memptr buf); /* GL functions */ #if NFOSMESA_POINTER_AS_MEMARG #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #define GL_PROCM(type, gl, name, export, upper, proto, args, first, ret) type nf ## gl ## name proto ; #else #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) type nf ## gl ## name proto ; #endif #include "../../atari/nfosmesa/glfuncs.h" public: const char *name() { return "OSMESA"; } bool isSuperOnly() { return false; } int32 dispatch(uint32 fncode); static osmesa_funcs fn; static void InitPointersGL(void *handle); static GLenum PrintErrors(const char *funcname); OSMesaDriver(); virtual ~OSMesaDriver(); void reset(); }; #endif /* OSMESA_H */ aranym-1.1.0/src/natfeat/nfosmesa.cpp0000664000175000017500000261061713454637621015746 0ustar joyjoy/* NatFeat host OSMesa rendering ARAnyM (C) 2004,2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #define __STDC_FORMAT_MACROS #include "sysdeps.h" #include "SDL_compat.h" #include #include #include #include "cpu_emulation.h" #include "parameters.h" #include "nfosmesa.h" #include "../../atari/nfosmesa/nfosmesa_nfapi.h" #ifdef HAVE_INTTYPES_H #include #endif #ifndef PRId64 # define PRId64 "lld" #endif #ifndef PRIu64 # define PRIu64 "llu" #endif #if defined(__APPLE__) /* MacOSX declares GLintptr and GLsizeiptr as "long" */ # define PRI_IPTR "lu" #elif SIZEOF_VOID_P >= 8 # define PRI_IPTR PRIu64 #else # define PRI_IPTR "u" #endif #define PRI_PTR "0x%08x" #include "osmesa_context.h" #define DEBUG 0 #include "debug.h" #include "verify.h" #ifdef NFOSMESA_SUPPORT /*--- Assumptions ---*/ /* these native types must match the Atari types */ verify(sizeof(GLshort) == 2); verify(sizeof(GLushort) == 2); verify(sizeof(GLint) == 4); verify(sizeof(GLuint) == 4); verify(sizeof(GLenum) == 4); verify(sizeof(GLsizei) == 4); verify(sizeof(GLfixed) == 4); verify(sizeof(GLfloat) == ATARI_SIZEOF_FLOAT); verify(sizeof(GLint64) == 8); verify(sizeof(GLuint64) == 8); /*--- Defines ---*/ #define TOS_ENOSYS -32 #define M(m,row,col) m[col*4+row] #ifndef GL_DEVICE_LUID_EXT #define GL_DEVICE_LUID_EXT 0x9599 #endif #ifndef GL_LUID_SIZE_EXT #define GL_LUID_SIZE_EXT 8 #endif #ifndef GL_DEVICE_UUID_EXT #define GL_DEVICE_UUID_EXT 0x9597 #endif #ifndef GL_DRIVER_UUID_EXT #define GL_DRIVER_UUID_EXT 0x9598 #endif #ifndef GL_UUID_SIZE_EXT #define GL_UUID_SIZE_EXT 16 #endif /*--- Variables ---*/ osmesa_funcs OSMesaDriver::fn; NFGL_GETPROCADDRESS OSMesaDriver::get_procaddress; /* * needed by the array constructors in glMultiDrawxx() * FIXME: any better way to do this? */ OSMesaDriver *OSMesaDriver::thisdriver; /*--- Constructor/Destructor ---*/ OSMesaDriver::OSMesaDriver() { thisdriver = this; D(bug("nfosmesa: OSMesaDriver()")); memset(contexts, 0, sizeof(contexts)); libgl_handle = libosmesa_handle = NULL; reset(); } OSMesaDriver::~OSMesaDriver() { D(bug("nfosmesa: ~OSMesaDriver()")); reset(); CloseLibrary(); thisdriver = NULL; } void OSMesaDriver::reset() { int i; for (i = 1; i <= MAX_OSMESA_CONTEXTS; i++) { if (contexts[i].ctx) { OSMesaDestroyContext(i); contexts[i].ctx = NULL; } } num_contexts = 0; cur_context = 0; using_mesa = false; get_procaddress = 0; lib_opened = false; open_succeeded = false; SDL_glctx = 0; } /* undo the effects of Atari2HostAddr for pointer arguments when they specify a buffer offset */ #define Host2AtariAddr(a) ((memptr)((uintptr_t)(a) - MEMBaseDiff)) /* Read parameter on m68k stack */ #if NFOSMESA_POINTER_AS_MEMARG #define getStackedParameter(n) params[n] #define getStackedParameter64(n) (((GLuint64)getStackedParameter(n) << 32) | (GLuint64)getStackedParameter((n) + 1)) #define getStackedFloat(n) Atari2HostFloat(getStackedParameter(n)) #define getStackedDouble(n) Atari2HostDouble(getStackedParameter(n), getStackedParameter((n) + 1)) #define getStackedPointer(n, t) getStackedParameter(n) #define HostAddr(addr, t) (t)((addr) ? Atari2HostAddr(addr) : NULL) #define AtariAddr(addr, t) addr #define AtariOffset(addr) addr #define NFHost2AtariAddr(addr) (void *)(uintptr_t)(addr) #else #define getStackedParameter(n) SDL_SwapBE32(ctx_ptr[n]) #define getStackedParameter64(n) SDL_SwapBE64(*((Uint64 *)&ctx_ptr[n])) #define getStackedFloat(n) Atari2HostFloat(getStackedParameter(n)) #define getStackedDouble(n) Atari2HostDouble(getStackedParameter(n), getStackedParameter((n) + 1)) #define getStackedPointer(n, t) (t)(ctx_ptr[n] ? Atari2HostAddr(getStackedParameter(n)) : NULL) #define HostAddr(addr, t) (t)(addr) #define AtariAddr(addr, t) (t)(addr) /* undo the effects of Atari2HostAddr for pointer arguments when they specify a buffer offset */ #define NFHost2AtariAddr(addr) ((void *)((uintptr_t)(addr) - MEMBaseDiff)) #define AtariOffset(addr) ((unsigned int)((uintptr_t)(addr) - MEMBaseDiff)) #endif #include "nfosmesa/paramcount-gl.c" /*--- Public functions ---*/ int32 OSMesaDriver::dispatch(uint32 fncode) { int32 ret = 0; #if DEBUG const char *funcname = "???"; #endif if (fncode >= NFOSMESA_LAST) { D(bug("nfosmesa: unimplemented function #%d", fncode)); return TOS_ENOSYS; } #if NFOSMESA_POINTER_AS_MEMARG /* * doing several thousand inlined calls of ReadInt32() * results in * - an assembler process using ~23GB memory * - an ~3.5GB object file * - the compiler running for about 10min on this file, * including lots of swapping (on a 16GB machine) * .... * so we need to fetch the parameters before entering the big switch */ memptr ctx_ptr; /* Current parameter list */ Uint32 params[NFOSMESA_MAXPARAMS]; ctx_ptr = getParameter(1); for (unsigned int i = 0; i < paramcount[fncode]; i++) params[i] = ReadInt32(ctx_ptr + 4 * (i)); #else Uint32 *ctx_ptr; /* Current parameter list */ ctx_ptr = (Uint32 *)Atari2HostAddr(getParameter(1)); #endif if (fncode != NFOSMESA_OSMESAPOSTPROCESS && fncode != GET_VERSION) { /* * since we create the OpenGL contexts on the same thread as SDL, * we must save/restore the SDL GL context if it is in use by * the screen driver. */ if (SDL_glctx) cur_context = 0; /* * OSMesaPostprocess() cannot be called after OSMesaMakeCurrent(). * FIXME: this will fail if ARAnyM already has a current context * that was created by a different MiNT process */ if (!SelectContext(getParameter(0))) return ret; } switch(fncode) { case GET_VERSION: ret = ARANFOSMESA_NFAPI_VERSION; break; case NFOSMESA_LENGLGETSTRING: D(funcname = "glGetString"); ret = LenglGetString( getStackedParameter(0) /* Uint32 ctx */, getStackedParameter(1) /* GLenum name */); break; case NFOSMESA_PUTGLGETSTRING: D(funcname = "glGetString"); PutglGetString( getStackedParameter(0) /* Uint32 ctx */, getStackedParameter(1) /* GLenum name */, getStackedPointer(2, GLubyte *) /* GLubyte *buffer */); break; case NFOSMESA_LENGLGETSTRINGI: D(funcname = "glGetStringi"); ret = LenglGetStringi( getStackedParameter(0) /* Uint32 ctx */, getStackedParameter(1) /* GLenum name */, getStackedParameter(2) /* GLuint index */); break; case NFOSMESA_PUTGLGETSTRINGI: D(funcname = "glGetStringi"); PutglGetStringi( getStackedParameter(0) /* Uint32 ctx */, getStackedParameter(1) /* GLenum name */, getStackedParameter(2) /* GLuint index */, getStackedPointer(3, GLubyte *) /* GLubyte *buffer */); break; case NFOSMESA_OSMESACREATECONTEXT: D(funcname = "OSMesaCreateContext"); ret = OSMesaCreateContext( getStackedParameter(0) /* GLenum format */, getStackedParameter(1) /* Uint32 sharelist */); break; case NFOSMESA_OSMESACREATECONTEXTEXT: D(funcname = "OSMesaCreateContextExt"); ret = OSMesaCreateContextExt( getStackedParameter(0) /* GLenum format */, getStackedParameter(1) /* GLint depthBits */, getStackedParameter(2) /* GLint stencilBits */, getStackedParameter(3) /* GLint accumBits */, getStackedParameter(4) /* Uint32 sharelist */); break; case NFOSMESA_OSMESADESTROYCONTEXT: D(funcname = "OSMesaDestroyContext"); OSMesaDestroyContext( getStackedParameter(0) /* Uint32 ctx */); break; case NFOSMESA_OSMESAMAKECURRENT: D(funcname = "OSMesaMakeCurrent"); ret = OSMesaMakeCurrent( getStackedParameter(0) /* Uint32 ctx */, getStackedParameter(1) /* memptr buffer */, getStackedParameter(2) /* GLenum type */, getStackedParameter(3) /* GLsizei width */, getStackedParameter(4) /* GLsizei height */); break; case NFOSMESA_OSMESAGETCURRENTCONTEXT: D(funcname = "OSMesaGetCurrentContext"); ret = OSMesaGetCurrentContext(); break; case NFOSMESA_OSMESAPIXELSTORE: D(funcname = "OSMesaPixelStore"); OSMesaPixelStore( getStackedParameter(0) /* GLint pname */, getStackedParameter(1) /* GLint value */); break; case NFOSMESA_OSMESAGETINTEGERV: D(funcname = "OSMesaGetIntegerv"); OSMesaGetIntegerv( getStackedParameter(0) /* GLint pname */, getStackedPointer(1, GLint *) /* GLint *values */); break; case NFOSMESA_OSMESAGETDEPTHBUFFER: D(funcname = "OSMesaGetDepthBuffer"); ret = OSMesaGetDepthBuffer( getStackedParameter(0) /* Uint32 ctx */, getStackedPointer(1, GLint *) /* GLint *width */, getStackedPointer(2, GLint *) /* GLint *height */, getStackedPointer(3, GLint *) /* GLint *bytesPerValue */, getStackedPointer(4, void **) /* void **buffer */); break; case NFOSMESA_OSMESAGETCOLORBUFFER: D(funcname = "OSMesaGetColorBuffer"); ret = OSMesaGetColorBuffer( getStackedParameter(0) /* Uint32 ctx */, getStackedPointer(1, GLint *) /* GLint *width */, getStackedPointer(2, GLint *) /* GLint *height */, getStackedPointer(3, GLint *) /* GLint *format */, getStackedPointer(4, void **) /* void **buffer */); break; case NFOSMESA_OSMESAGETPROCADDRESS: D(funcname = "OSMesaGetProcAddress"); ret = OSMesaGetProcAddress( getStackedPointer(0, const char *) /* const char *funcName */); break; case NFOSMESA_OSMESACOLORCLAMP: D(funcname = "OSMesaColorClamp"); OSMesaColorClamp(getStackedParameter(0) /* GLboolean enable */); break; case NFOSMESA_OSMESAPOSTPROCESS: D(funcname = "OSMesaPostprocess"); { GLubyte tmp[safe_strlen(getStackedPointer(1, const char *)) + 1], *filter; filter = Atari2HostByteArray(sizeof(tmp), getStackedPointer(1, const GLubyte *), tmp); OSMesaPostprocess( getStackedParameter(0) /* Uint32 ctx */, (const char *)filter, getStackedParameter(2) /* GLuint enable_value */); } break; /* * maybe FIXME: functions below usually need a current context, * which is not checked here. */ case NFOSMESA_GLULOOKATF: D(funcname = "gluLookAtf"); nfgluLookAtf( getStackedFloat(0) /* GLfloat eyeX */, getStackedFloat(1) /* GLfloat eyeY */, getStackedFloat(2) /* GLfloat eyeZ */, getStackedFloat(3) /* GLfloat centerX */, getStackedFloat(4) /* GLfloat centerY */, getStackedFloat(5) /* GLfloat centerZ */, getStackedFloat(6) /* GLfloat upX */, getStackedFloat(7) /* GLfloat upY */, getStackedFloat(8) /* GLfloat upZ */); break; case NFOSMESA_GLFRUSTUMF: D(funcname = "glFrustumf"); nfglFrustumf( getStackedFloat(0) /* GLfloat left */, getStackedFloat(1) /* GLfloat right */, getStackedFloat(2) /* GLfloat bottom */, getStackedFloat(3) /* GLfloat top */, getStackedFloat(4) /* GLfloat near_val */, getStackedFloat(5) /* GLfloat far_val */); break; case NFOSMESA_GLORTHOF: D(funcname = "glOrthof"); nfglOrthof( getStackedFloat(0) /* GLfloat left */, getStackedFloat(1) /* GLfloat right */, getStackedFloat(2) /* GLfloat bottom */, getStackedFloat(3) /* GLfloat top */, getStackedFloat(4) /* GLfloat near_val */, getStackedFloat(5) /* GLfloat far_val */); break; case NFOSMESA_TINYGLSWAPBUFFER: D(funcname = "swapbuffer"); nftinyglswapbuffer(getStackedParameter(0)); break; #include "nfosmesa/dispatch-gl.c" case NFOSMESA_ENOSYS: default: D(bug("nfosmesa: unimplemented function #%d", fncode)); ret = TOS_ENOSYS; break; } /* D(bug("nfosmesa: function returning with 0x%08x", ret));*/ #if DEBUG if (contexts[cur_context].error_check_enabled) { GLenum last; last = contexts[cur_context].error_code; if (last != GL_NO_ERROR) { PrintErrors(funcname); } else { last = PrintErrors(funcname); } /* * stash back the last error code, so * the application can still fetch it */ contexts[cur_context].error_code = last; } #endif if (SDL_glctx) SDL_GL_SetCurrentContext(SDL_glctx); return ret; } GLenum OSMesaDriver::PrintErrors(const char *funcname) { GLenum err, last; err = last = fn.glGetError(); while (err != GL_NO_ERROR) { bug("nfosmesa: error: %s: %s", funcname, gl_enum_name(err)); err = fn.glGetError(); } return last; } /*--- Protected functions ---*/ void OSMesaDriver::glSetError(GLenum e) { contexts[cur_context].error_code = e; D(bug("glSetError(%s)", gl_enum_name(e))); } void *OSMesaDriver::load_gl_library(const char *pathlist) { void *handle; char **path; handle = NULL; path = split_pathlist(pathlist); if (path != NULL) { for (int i = 0; handle == NULL && path[i] != NULL; i++) { handle = SDL_LoadObject(path[i]); } #ifdef OS_darwin /* If loading failed, try to load from executable directory */ if (handle == NULL) { char exedir[MAXPATHLEN]; char curdir[MAXPATHLEN]; getcwd(curdir, MAXPATHLEN); CFURLRef url = CFBundleCopyExecutableURL(CFBundleGetMainBundle()); CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url); CFURLGetFileSystemRepresentation(url2, false, (UInt8 *)exedir, MAXPATHLEN); CFRelease(url2); CFRelease(url); chdir(exedir); for (int i = 0; handle == NULL && path[i] != NULL; i++) { handle = SDL_LoadObject(path[i]); } chdir(curdir); } #endif free(path); } return handle; } bool OSMesaDriver::OpenLibrary(void) { SDL_GLContext sdl_context = 0; if (lib_opened) return open_succeeded; lib_opened = true; bool libgl_needed = false; using_mesa = false; get_procaddress = (NFGL_GETPROCADDRESS)0; /* Check if channel size is correct */ switch (bx_options.osmesa.channel_size) { case 16: case 32: case 8: case 0: break; default: D(bug("nfosmesa: bogus Channel size: %d", bx_options.osmesa.channel_size)); bx_options.osmesa.channel_size = 0; break; } /* Load libOSMesa */ if (libosmesa_handle == NULL) libosmesa_handle = load_gl_library(bx_options.osmesa.libosmesa); if (libosmesa_handle == NULL) { libgl_needed = true; } else { InitPointersOSMesa(libosmesa_handle); if (GL_ISAVAILABLE(OSMesaGetProcAddress) && GL_ISAVAILABLE(OSMesaMakeCurrent) && (GL_ISAVAILABLE(OSMesaCreateContext) || GL_ISAVAILABLE(OSMesaCreateContextExt)) && GL_ISAVAILABLE(OSMesaDestroyContext)) { using_mesa = true; get_procaddress = fn.OSMesaGetProcAddress; InitPointersGL(libosmesa_handle); D(bug("nfosmesa: OpenLibrary(): libOSMesa loaded")); if (!GL_ISAVAILABLE(glBegin)) { libgl_needed = true; D(bug("nfosmesa: Channel size: %d -> libGL separated from libOSMesa", bx_options.osmesa.channel_size)); } else { D(bug("nfosmesa: Channel size: %d -> libGL included in libOSMesa", bx_options.osmesa.channel_size)); } } else { bug("nfosmesa: ignoring OSMesa - missing functions"); libgl_needed = true; CloseMesaLibrary(); } } open_succeeded = true; /* Load LibGL if needed */ if (libgl_needed) { /* * FIXME: should probably reuse bx_options.opengl.library, * otherwise we might end up loading 2 different OpenGL libraries */ if (libgl_handle == NULL) libgl_handle = load_gl_library(bx_options.osmesa.libgl); if (libgl_handle == NULL) { D(bug("nfosmesa: Can not load '%s' library", bx_options.osmesa.libgl)); panicbug("nfosmesa: %s: %s", bx_options.osmesa.libgl, SDL_GetError()); open_succeeded = false; } else { #if defined(SDL_VIDEO_DRIVER_WINDOWS) sdl_context = SDL_GL_GetCurrentContext(); if (get_procaddress == 0) get_procaddress = (NFGL_GETPROCADDRESS)SDL_LoadFunction(libgl_handle, "wglGetProcAddress"); if (get_procaddress == 0) get_procaddress = (NFGL_GETPROCADDRESS)SDL_LoadFunction(libgl_handle, "wglGetProcAddressARB"); if (get_procaddress == 0) get_procaddress = (NFGL_GETPROCADDRESS)SDL_LoadFunction(libgl_handle, "wglGetProcAddressEXT"); /* * on windows, if we don't have a GL context already, * we have to create one BEFORE retrieving the function pointers */ HGLRC tmp_ctx = 0; int iPixelFormat = 0; if (sdl_context == 0) { Win32OpenglContext::InitPointers(libgl_handle); tmp_ctx = Win32OpenglContext::CreateTmpContext(iPixelFormat); } #elif defined(SDL_VIDEO_DRIVER_QUARTZ) || defined(SDL_VIDEO_DRIVER_COCOA) sdl_context = SDL_GL_GetCurrentContext(); #elif defined(SDL_VIDEO_DRIVER_X11) X11OpenglContext::InitPointers(libgl_handle); sdl_context = SDL_GL_GetCurrentContext(); if (get_procaddress == 0) get_procaddress = (NFGL_GETPROCADDRESS)SDL_LoadFunction(libgl_handle, "glXGetProcAddress"); if (get_procaddress == 0) get_procaddress = (NFGL_GETPROCADDRESS)SDL_LoadFunction(libgl_handle, "glXGetProcAddressARB"); #endif InitPointersGL(libgl_handle); D(bug("nfosmesa: OpenLibrary(): libGL loaded")); #if defined(SDL_VIDEO_DRIVER_WINDOWS) Win32OpenglContext::DeleteTmpContext(tmp_ctx); #endif if (!GL_ISAVAILABLE(glGetString)) { bug("nfosmesa: ignoring libGL - missing functions"); CloseGLLibrary(); open_succeeded = false; } } } if (open_succeeded) { OffscreenContext *ctx; ctx = TryCreateContext(); if (ctx) { if (!ctx->TestContext()) { delete ctx; ctx = NULL; panicbug("nfosmesa: missing extensions"); } } else { panicbug("nfosmesa: unsupported video driver"); } if (ctx == NULL) { open_succeeded = false; } else { if (ctx->IsOpengl()) { SDL_glctx = sdl_context; } delete ctx; } } if (sdl_context) SDL_GL_SetCurrentContext(sdl_context); return true; } void OSMesaDriver::CloseLibrary(void) { D(bug("nfosmesa: CloseLibrary()")); CloseMesaLibrary(); CloseGLLibrary(); } void OSMesaDriver::CloseMesaLibrary(void) { if (libosmesa_handle) { SDL_UnloadObject(libosmesa_handle); libosmesa_handle = NULL; D(bug("nfosmesa: CloseLibrary(): libOSMesa unloaded")); } /* nullify OSMesa functions */ #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) fn.OSMesa ## name = (type (APIENTRY *) proto) 0; #include "../../atari/nfosmesa/glfuncs.h" } void OSMesaDriver::CloseGLLibrary(void) { if (libgl_handle) { SDL_UnloadObject(libgl_handle); libgl_handle = NULL; D(bug("nfosmesa: CloseLibrary(): libGL unloaded")); } /* nullify GL functions */ #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) fn.gl ## name = (type (APIENTRY *) proto) 0; #define GLU_PROC(type, gl, name, export, upper, proto, args, first, ret) #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) #include "../../atari/nfosmesa/glfuncs.h" } void OSMesaDriver::InitPointersGL(void *handle) { D(bug("nfosmesa: InitPointersGL()")); #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) \ fn.gl ## name = (type (APIENTRY *) proto) SDL_LoadFunction(handle, "gl" #name); \ if (fn.gl ## name == 0 && get_procaddress) \ fn.gl ## name = (type (APIENTRY *) proto) get_procaddress("gl" #name); #define GLU_PROC(type, gl, name, export, upper, proto, args, first, ret) #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) #include "../../atari/nfosmesa/glfuncs.h" } void OSMesaDriver::InitPointersOSMesa(void *handle) { D(bug("nfosmesa: InitPointersOSMesa()")); #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) \ fn.OSMesa ## name = (type (APIENTRY *) proto) SDL_LoadFunction(handle, "OSMesa" #name); #include "../../atari/nfosmesa/glfuncs.h" } bool OSMesaDriver::SelectContext(Uint32 ctx) { bool ret = true; if (ctx > MAX_OSMESA_CONTEXTS) { D(bug("nfosmesa: SelectContext: %d out of bounds", ctx)); return false; } /* can happen if we did not load the library yet, e.g because no context was created yet */ if (OpenLibrary() == false) return false; if (cur_context != ctx) { context_t *context = &contexts[ctx]; if (ctx == 0 && contexts[cur_context].ctx) ret = contexts[cur_context].ctx->ClearCurrent(); else if (context->ctx) ret = context->ctx->MakeCurrent(); if (ret) { D(bug("nfosmesa: SelectContext: %d is current",ctx)); } else { D(bug("nfosmesa: SelectContext: %d failed",ctx)); } cur_context = ctx; } return ret; } Uint32 OSMesaDriver::OSMesaCreateContext( GLenum format, Uint32 sharelist ) { D(bug("nfosmesa: OSMesaCreateContext(0x%x, 0x%x)", format, sharelist)); return OSMesaCreateContextExt(format, 16, 8, (format == OSMESA_COLOR_INDEX) ? 0 : 16, sharelist); } OffscreenContext *OSMesaDriver::TryCreateContext(void) { OffscreenContext *ctx = NULL; if (using_mesa) { ctx = new MesaContext(libosmesa_handle); } else { #if defined(SDL_VIDEO_DRIVER_COCOA) if (ctx == NULL && SDL_IsVideoDriver("cocoa"))) ctx = new QuartzOpenglContext(libgl_handle); #endif #if defined(SDL_VIDEO_DRIVER_QUARTZ) if (ctx == NULL && SDL_IsVideoDriver("Quartz")) ctx = new QuartzOpenglContext(libgl_handle); #endif #if defined(SDL_VIDEO_DRIVER_WINDIB) if (ctx == NULL && SDL_IsVideoDriver("windib")) ctx = new Win32OpenglContext(libgl_handle); #endif #if defined(SDL_VIDEO_DRIVER_DDRAW) if (ctx == NULL && SDL_IsVideoDriver("directx")) ctx = new Win32OpenglContext(libgl_handle); #endif #if defined(SDL_VIDEO_DRIVER_WINDOWS) if (ctx == NULL && SDL_IsVideoDriver("windows")) ctx = new Win32OpenglContext(libgl_handle); #endif #if defined(SDL_VIDEO_DRIVER_X11) if (ctx == NULL && SDL_IsVideoDriver("x11")) ctx = new X11OpenglContext(libgl_handle); #endif } return ctx; } Uint32 OSMesaDriver::OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, Uint32 sharelist ) { int i,j; OffscreenContext *share_ctx; D(bug("nfosmesa: OSMesaCreateContextExt(0x%x,%d,%d,%d,0x%08x)",format,depthBits,stencilBits,accumBits,sharelist)); /* TODO: shared contexts */ if (sharelist) return 0; /* Find a free context */ j = 0; for (i = 1; i <= MAX_OSMESA_CONTEXTS; i++) { if (contexts[i].ctx == NULL) { j = i; break; } } /* Create our host OSMesa context */ if (j == 0) { D(bug("nfosmesa: No free context found")); return 0; } context_t *context = &contexts[j]; memset((void *)(context), 0, sizeof(context_t)); share_ctx = NULL; if (sharelist > 0 && sharelist <= MAX_OSMESA_CONTEXTS) share_ctx = contexts[sharelist].ctx; context->enabled_arrays = 0; context->render_mode = GL_RENDER; context->error_code = GL_NO_ERROR; context->ctx = TryCreateContext(); if (!context->ctx || !context->ctx->CreateContext(format, depthBits, stencilBits, accumBits, share_ctx)) { D(bug("nfosmesa: Can not create context")); if (context->ctx) delete context->ctx; return 0; } context->share_ctx = sharelist; num_contexts++; return j; } void OSMesaDriver::OSMesaDestroyContext( Uint32 ctx ) { D(bug("nfosmesa: OSMesaDestroyContext(%u)", ctx)); if (ctx > MAX_OSMESA_CONTEXTS || !contexts[ctx].ctx) { bug("nfosmesa: OSMesaDestroyContext(%u): invalid context", ctx); return; } context_t *context = &contexts[ctx]; delete context->ctx; context->ctx = NULL; num_contexts--; if (context->feedback_buffer_host) { free(context->feedback_buffer_host); context->feedback_buffer_host = NULL; } context->feedback_buffer_type = 0; if (context->select_buffer_host) { free(context->select_buffer_host); context->select_buffer_host = NULL; } context->select_buffer_size = 0; for (int i = 0; i <= MAX_OSMESA_CONTEXTS; i++) if (contexts[i].share_ctx == ctx) contexts[i].share_ctx = 0; if (ctx == cur_context) cur_context = 0; /* if (num_contexts == 0) { CloseLibrary(); } */ } GLboolean OSMesaDriver::OSMesaMakeCurrent( Uint32 ctx, memptr buffer, GLenum type, GLsizei width, GLsizei height ) { GLboolean ret = GL_TRUE; D(bug("nfosmesa: OSMesaMakeCurrent(%u,$%08x,%s,%d,%d)", ctx, buffer, gl_enum_name(type), width, height)); if (ctx > MAX_OSMESA_CONTEXTS) return GL_FALSE; if (ctx != 0 && !contexts[ctx].ctx) return GL_FALSE; if (ctx != 0) { OffscreenContext *context = contexts[ctx].ctx; ret = context->MakeCurrent(buffer, type, width, height); } else { OffscreenContext *context = contexts[cur_context].ctx; if (context) ret = context->ClearCurrent(); } if (ret) { cur_context = ctx; D(bug("nfosmesa: MakeCurrent: %d is current", ctx)); } else { D(bug("nfosmesa: MakeCurrent: %d failed", ctx)); } return ret; } Uint32 OSMesaDriver::OSMesaGetCurrentContext( void ) { Uint32 ctx; #if 0 /* * wrong; the host manages his current context for all processes using NFOSMesa; * return interface parameter instead */ ctx = cur_context; D(bug("nfosmesa: OSMesaGetCurrentContext() -> %u", ctx)); #else ctx = getParameter(0); #endif return ctx; } void OSMesaDriver::OSMesaPixelStore(GLint pname, GLint value) { D(bug("nfosmesa: OSMesaPixelStore(0x%x, %d)", pname, value)); Uint32 ctx = cur_context; if (ctx && contexts[ctx].ctx) contexts[ctx].ctx->PixelStore(pname, value); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::OSMesaGetIntegerv(GLint pname, memptr value ) #else void OSMesaDriver::OSMesaGetIntegerv(GLint pname, GLint *value ) #endif { GLint tmp = 0; Uint32 ctx = cur_context; D(bug("nfosmesa: OSMesaGetIntegerv(0x%x)", pname)); if (ctx && contexts[ctx].ctx) if (!contexts[ctx].ctx->GetIntegerv(pname, &tmp)) glSetError(GL_INVALID_ENUM); Host2AtariIntArray(1, &tmp, value); } #if NFOSMESA_POINTER_AS_MEMARG GLboolean OSMesaDriver::OSMesaGetDepthBuffer(Uint32 ctx, memptr width, memptr height, memptr bytesPerValue, memptr buffer ) #else GLboolean OSMesaDriver::OSMesaGetDepthBuffer(Uint32 ctx, GLint *width, GLint *height, GLint *bytesPerValue, void **buffer ) #endif { GLint w, h, bpp; memptr b; D(bug("nfosmesa: OSMesaGetDepthBuffer(%u)", ctx)); if (!SelectContext(ctx) || ctx == 0) return GL_FALSE; contexts[ctx].ctx->GetDepthBuffer(&w, &h, &bpp, &b); Host2AtariIntArray(1, &w, width); Host2AtariIntArray(1, &h, height); Host2AtariIntArray(1, &bpp, bytesPerValue); Host2AtariIntArray(1, &b, AtariAddr(buffer, memptr *)); return GL_TRUE; } #if NFOSMESA_POINTER_AS_MEMARG GLboolean OSMesaDriver::OSMesaGetColorBuffer(Uint32 ctx, memptr width, memptr height, memptr format, memptr buffer ) #else GLboolean OSMesaDriver::OSMesaGetColorBuffer(Uint32 ctx, GLint *width, GLint *height, GLint *format, void **buffer ) #endif { GLint w, h, f; memptr b; D(bug("nfosmesa: OSMesaGetColorBuffer(%u)", ctx)); if (!SelectContext(ctx) || ctx == 0) return GL_FALSE; contexts[ctx].ctx->GetColorBuffer(&w, &h, &f, &b); Host2AtariIntArray(1, &w, width); Host2AtariIntArray(1, &h, height); Host2AtariIntArray(1, &f, format); Host2AtariIntArray(1, &b, AtariAddr(buffer, memptr *)); return GL_TRUE; } unsigned int OSMesaDriver::OSMesaGetProcAddress( nfcmemptr funcname ) { unsigned int ret = 0; if (!funcname) return 0; char tmp[safe_strlen(funcname) + 1], *funcName; funcName = Atari2HostByteArray(sizeof(tmp), funcname, tmp); NFGL_PROC p = 0; if (get_procaddress) { p = get_procaddress(funcName); /* WTF, the entry in the lookup table in OSMesa names it "OSMesaPixelsStore" */ if (p == 0 && strcmp(funcName, "OSMesaPixelStore") == 0) p = get_procaddress("OSMesaPixelsStore"); } if (p == 0 && libgl_handle) p = (NFGL_PROC)SDL_LoadFunction(libgl_handle, funcName); if (p == 0 && libosmesa_handle) p = (NFGL_PROC)SDL_LoadFunction(libosmesa_handle, funcName); if (p) { /* * return the corresponding function number of the NF API, * allowing the atari side to look it up in a table and * return a usable function pointer. * Do a binary search here. */ int a, b, c; int dir; a = 0; b = (int)(sizeof(gl_functionnames) / sizeof(gl_functionnames[0])); while (a < b) { c = (a + b) >> 1; /* == ((a + b) / 2) */ dir = strcmp(funcName, gl_functionnames[c].name); if (dir == 0) { ret = gl_functionnames[c].funcno; break; } if (dir < 0) b = c; else a = c + 1; } } D(bug("nfosmesa: OSMesaGetProcAddress(\"%s\"): %p", funcName, p)); return ret; } void OSMesaDriver::OSMesaColorClamp(GLboolean enable) { D(bug("nfosmesa: OSMesaColorClamp(%d)", enable)); Uint32 ctx = cur_context; if (ctx == 0 || !contexts[ctx].ctx) return; contexts[ctx].ctx->ColorClamp(enable); } void OSMesaDriver::OSMesaPostprocess(Uint32 ctx, const char *filter, GLuint enable_value) { D(bug("nfosmesa: OSMesaPostprocess(%u, %s, %d)", ctx, filter, enable_value)); if (ctx > MAX_OSMESA_CONTEXTS || ctx == 0 || !contexts[ctx].ctx) return; /* no SelectContext() here; OSMesaPostprocess must be called without having a current context */ contexts[ctx].ctx->Postprocess(filter, enable_value); } Uint32 OSMesaDriver::LenglGetString(Uint32 ctx, GLenum name) { UNUSED(ctx); D(bug("nfosmesa: LenglGetString(%u, 0x%x)", ctx, name)); if (!GL_ISAVAILABLE(glGetString)) return 0; const char *s = (const char *)fn.glGetString(name); if (s == NULL) return 0; return strlen(s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::PutglGetString(Uint32 ctx, GLenum name, memptr buffer) #else void OSMesaDriver::PutglGetString(Uint32 ctx, GLenum name, GLubyte *buffer) #endif { UNUSED(ctx); const char *s = (const char *)(GL_ISAVAILABLE(glGetString) ? fn.glGetString(name) : 0); D(bug("nfosmesa: PutglGetString(%u, 0x%x, " PRI_PTR "): %s", ctx, name, AtariOffset(buffer), s)); if (buffer) { if (!s) s = ""; #if NFOSMESA_POINTER_AS_MEMARG Host2AtariSafeStrncpy(buffer, s, strlen(s) + 1); #else strcpy((char *)buffer, s); #endif } } Uint32 OSMesaDriver::LenglGetStringi(Uint32 ctx, GLenum name, GLuint index) { UNUSED(ctx); D(bug("nfosmesa: LenglGetStringi(%u, 0x%x, %u)", ctx, name, index)); if (!GL_ISAVAILABLE(glGetStringi)) return (Uint32)-1; const char *s = (const char *)fn.glGetStringi(name, index); if (s == NULL) return (Uint32)-1; return strlen(s); } #if NFOSMESA_POINTER_AS_MEMARG void OSMesaDriver::PutglGetStringi(Uint32 ctx, GLenum name, GLuint index, memptr buffer) #else void OSMesaDriver::PutglGetStringi(Uint32 ctx, GLenum name, GLuint index, GLubyte *buffer) #endif { UNUSED(ctx); D(bug("nfosmesa: PutglGetStringi(%u, 0x%x, %d, " PRI_PTR ")", ctx, name, index, AtariOffset(buffer))); const char *s = (const char *)(GL_ISAVAILABLE(glGetStringi) ? fn.glGetStringi(name, index) : 0); if (buffer) { if (!s) s = ""; #if NFOSMESA_POINTER_AS_MEMARG Host2AtariSafeStrncpy(buffer, s, strlen(s) + 1); #else strcpy((char *)buffer, s); #endif } } void OSMesaDriver::ConvertContext(Uint32 ctx) { if (ctx == 0 || !contexts[ctx].ctx) return; D(bug("nfosmesa: ConvertContext")); contexts[ctx].ctx->ConvertContext(); } bool OSMesaDriver::pixelBuffer::params(GLsizei _width, GLsizei _height, GLsizei _depth, GLenum _format, GLenum _type) { width = _width; height = _height; depth = _depth; format = _format; type = _type; if (!validate()) return false; if (count <= 0) return false; return true; } bool OSMesaDriver::pixelBuffer::params(GLsizei _bufSize, GLenum _format, GLenum _type) { format = _format; type = _type; if (!validate()) return false; bufsize = _bufSize; count = bufsize / basesize; if (count <= 0) return false; return true; } bool OSMesaDriver::pixelBuffer::validate() { switch (type) { case GL_UNSIGNED_BYTE: case GL_BYTE: case GL_UNSIGNED_BYTE_3_3_2: case GL_UNSIGNED_BYTE_2_3_3_REV: case GL_BITMAP: case GL_UTF8_NV: case GL_2_BYTES: case GL_3_BYTES: case GL_4_BYTES: case 1: basesize = sizeof(GLubyte); break; case GL_UNSIGNED_SHORT: case GL_SHORT: case GL_UNSIGNED_SHORT_5_6_5: case GL_UNSIGNED_SHORT_5_6_5_REV: case GL_UNSIGNED_SHORT_4_4_4_4: case GL_UNSIGNED_SHORT_4_4_4_4_REV: case GL_UNSIGNED_SHORT_5_5_5_1: case GL_UNSIGNED_SHORT_1_5_5_5_REV: case GL_HALF_FLOAT: case GL_UTF16_NV: case 2: basesize = sizeof(GLushort); break; case GL_UNSIGNED_INT: case GL_INT: case GL_UNSIGNED_INT_8_8_8_8: case GL_UNSIGNED_INT_8_8_8_8_REV: case GL_UNSIGNED_INT_10_10_10_2: case GL_UNSIGNED_INT_2_10_10_10_REV: case GL_FIXED: case 4: basesize = sizeof(GLuint); break; case GL_FLOAT: basesize = sizeof(GLfloat); break; default: driver.glSetError(GL_INVALID_ENUM); return false; } switch (format) { case GL_RED: case GL_RED_INTEGER_EXT: case GL_GREEN: case GL_GREEN_INTEGER_EXT: case GL_BLUE: case GL_BLUE_INTEGER_EXT: case GL_ALPHA: case GL_ALPHA_INTEGER_EXT: case GL_LUMINANCE: case GL_LUMINANCE_INTEGER_EXT: case GL_STENCIL_INDEX: case GL_DEPTH_COMPONENT: case GL_COLOR_INDEX: case 1: componentcount = 1; break; case GL_LUMINANCE_ALPHA: case GL_LUMINANCE_ALPHA_INTEGER_EXT: case GL_DEPTH_STENCIL: case GL_RG: case 2: componentcount = 2; break; case GL_RGB: case GL_RGB_INTEGER_EXT: case GL_BGR: case GL_BGR_INTEGER_EXT: case 3: componentcount = 3; break; case GL_RGBA: case GL_RGBA_INTEGER_EXT: case GL_BGRA_EXT: case GL_BGRA_INTEGER_EXT: case 4: componentcount = 4; break; default: driver.glSetError(GL_INVALID_ENUM); return false; } valid = true; /* FIXME: glPixelStore parameters are not taken into account */ count = componentcount * width * height * depth; switch (type) { case GL_2_BYTES: count *= 2; break; case GL_3_BYTES: count *= 3; break; case GL_4_BYTES: count *= 4; break; } bufsize = basesize * count; return true; } char *OSMesaDriver::pixelBuffer::hostBuffer(GLsizei _width, GLsizei _height, GLsizei _depth, GLenum _format, GLenum _type, nfmemptr dest) { if (!params(_width, _height, _depth, _format, _type) || !dest) return NULL; if (basesize == 1 && !NFOSMESA_NEED_BYTE_CONV) { buffer = HostAddr(dest, char *); } else { buffer = (char *)malloc(bufsize); alloced = true; } return buffer; } char *OSMesaDriver::pixelBuffer::hostBuffer(GLsizei _bufSize, GLenum _format, GLenum _type, nfmemptr dest) { if (!params(_bufSize, _format, _type) || !dest) return NULL; if (basesize == 1 && !NFOSMESA_NEED_BYTE_CONV) { buffer = HostAddr(dest, char *); } else { buffer = (char *)malloc(bufsize); alloced = true; } return buffer; } void OSMesaDriver::pixelBuffer::convertToAtari(const char *src, nfmemptr dst) { if (!valid || !dst || HostAddr(dst, const char *) == src) return; if (type == GL_FLOAT) OSMesaDriver::Host2AtariFloatArray(count, (const GLfloat *)src, AtariAddr(dst, GLfloat *)); else if (basesize == 1) OSMesaDriver::Host2AtariByteArray(count, (const GLubyte *)src, AtariAddr(dst, GLubyte *)); else if (basesize == 2) OSMesaDriver::Host2AtariShortArray(count, (const GLushort *)src, AtariAddr(dst, Uint16 *)); else /* if (basesize == 4) */ OSMesaDriver::Host2AtariIntArray(count, (const GLuint *)src, AtariAddr(dst, Uint32 *)); } void *OSMesaDriver::pixelBuffer::convertPixels(GLsizei _width, GLsizei _height, GLsizei _depth, GLenum _format, GLenum _type, nfmemptr pixels) { void *result; result = (void *)hostBuffer(_width, _height, _depth, _format, _type, pixels); if (!result || HostAddr(pixels, void *) == result) return result; /* FIXME: glPixelStore parameters are not taken into account */ if (type == GL_FLOAT) OSMesaDriver::Atari2HostFloatArray(count, AtariAddr(pixels, const GLfloat *), (GLfloat *)result); else if (basesize == 1) OSMesaDriver::Atari2HostByteArray(count, AtariAddr(pixels, const GLubyte *), (GLubyte *)result); else if (basesize == 2) OSMesaDriver::Atari2HostShortArray(count, AtariAddr(pixels, const Uint16 *), (GLushort *)result); else /* if (basesize == 4) */ OSMesaDriver::Atari2HostIntArray(count, AtariAddr(pixels, const Uint32 *), (GLuint *)result); return result; } void *OSMesaDriver::pixelBuffer::convertArray(GLsizei _count, GLenum _type, nfmemptr pixels) { return convertPixels(_count, 1, 1, 1, _type, pixels); } void OSMesaDriver::setupClientArray(GLenum texunit, vertexarray_t &array, GLint size, GLenum type, GLsizei stride, GLsizei count, GLint ptrstride, nfmemptr pointer) { UNUSED(texunit); // FIXME array.size = size; array.type = type; array.count = count; array.ptrstride = ptrstride; GLsizei atari_defstride; GLsizei basesize; switch (type) { case GL_UNSIGNED_BYTE: case GL_BYTE: case GL_UNSIGNED_BYTE_3_3_2: case GL_UNSIGNED_BYTE_2_3_3_REV: case GL_2_BYTES: case GL_3_BYTES: case GL_4_BYTES: case GL_BITMAP: case 1: array.basesize = sizeof(Uint8); basesize = sizeof(GLubyte); break; case GL_SHORT: case GL_UNSIGNED_SHORT_5_6_5: case GL_UNSIGNED_SHORT_5_6_5_REV: case GL_UNSIGNED_SHORT_4_4_4_4: case GL_UNSIGNED_SHORT_4_4_4_4_REV: case GL_UNSIGNED_SHORT_5_5_5_1: case GL_UNSIGNED_SHORT_1_5_5_5_REV: case GL_HALF_FLOAT: case 2: array.basesize = sizeof(Uint16); basesize = sizeof(GLshort); break; case GL_UNSIGNED_INT: case GL_INT: case GL_UNSIGNED_INT_8_8_8_8: case GL_UNSIGNED_INT_8_8_8_8_REV: case GL_UNSIGNED_INT_10_10_10_2: case GL_UNSIGNED_INT_2_10_10_10_REV: case GL_FIXED: case 4: array.basesize = sizeof(Uint32); basesize = sizeof(GLint); break; case GL_FLOAT: array.basesize = ATARI_SIZEOF_FLOAT; basesize = sizeof(GLfloat); break; case GL_DOUBLE: array.basesize = ATARI_SIZEOF_DOUBLE; basesize = sizeof(GLdouble); break; default: glSetError(GL_INVALID_ENUM); return; } atari_defstride = size * array.basesize; if (stride == 0) { stride = atari_defstride; } array.atari_stride = stride; array.host_stride = size * basesize; array.defstride = atari_defstride; if (array.alloced) { free(array.host_pointer); array.host_pointer = NULL; array.alloced = false; } array.atari_pointer = pointer; array.converted = 0; array.vendor = NFOSMESA_VENDOR_NONE; } void OSMesaDriver::convertClientArrays(GLsizei count) { if (contexts[cur_context].enabled_arrays & NFOSMESA_VERTEX_ARRAY) { vertexarray_t &array = contexts[cur_context].vertex; convertClientArray(count, array); if (array.vendor == NFOSMESA_VENDOR_IBM) fn.glVertexPointerListIBM(array.size, array.type, array.host_stride, (const void **)array.host_pointer, array.ptrstride); else if (array.vendor == NFOSMESA_VENDOR_INTEL) fn.glVertexPointervINTEL(array.size, array.type, (const void **)array.host_pointer); else if (array.vendor == NFOSMESA_VENDOR_EXT) fn.glVertexPointerEXT(array.size, array.type, array.host_stride, array.count, array.host_pointer); else fn.glVertexPointer(array.size, array.type, array.host_stride, array.host_pointer); } if (contexts[cur_context].enabled_arrays & NFOSMESA_NORMAL_ARRAY) { vertexarray_t &array = contexts[cur_context].normal; convertClientArray(count, array); if (array.vendor == NFOSMESA_VENDOR_IBM) fn.glNormalPointerListIBM(array.type, array.host_stride, (const void **)array.host_pointer, array.ptrstride); else if (array.vendor == NFOSMESA_VENDOR_INTEL) fn.glNormalPointervINTEL(array.type, (const void **)array.host_pointer); else if (array.vendor == NFOSMESA_VENDOR_EXT) fn.glNormalPointerEXT(array.type, array.host_stride, array.count, array.host_pointer); else fn.glNormalPointer(array.type, array.host_stride, array.host_pointer); } if (contexts[cur_context].enabled_arrays & NFOSMESA_COLOR_ARRAY) { vertexarray_t &array = contexts[cur_context].color; convertClientArray(count, array); if (array.vendor == NFOSMESA_VENDOR_IBM) fn.glColorPointerListIBM(array.size, array.type, array.host_stride, (const void **)array.host_pointer, array.ptrstride); else if (array.vendor == NFOSMESA_VENDOR_INTEL) fn.glColorPointervINTEL(array.size, array.type, (const void **)array.host_pointer); if (array.vendor == NFOSMESA_VENDOR_EXT) fn.glColorPointerEXT(array.size, array.type, array.host_stride, array.count, array.host_pointer); else fn.glColorPointer(array.size, array.type, array.host_stride, array.host_pointer); } if (contexts[cur_context].enabled_arrays & NFOSMESA_INDEX_ARRAY) { vertexarray_t &array = contexts[cur_context].index; convertClientArray(count, array); if (array.vendor == NFOSMESA_VENDOR_IBM) fn.glIndexPointerListIBM(array.type, array.host_stride, (const void **)array.host_pointer, array.ptrstride); else if (array.vendor == NFOSMESA_VENDOR_EXT) fn.glIndexPointerEXT(array.type, array.host_stride, array.count, array.host_pointer); else fn.glIndexPointer(array.type, array.host_stride, array.host_pointer); } if (contexts[cur_context].enabled_arrays & NFOSMESA_EDGEFLAG_ARRAY) { vertexarray_t &array = contexts[cur_context].edgeflag; convertClientArray(count, array); if (array.vendor == NFOSMESA_VENDOR_IBM) fn.glEdgeFlagPointerListIBM(array.host_stride, (const GLboolean **)array.host_pointer, array.ptrstride); else if (array.vendor == NFOSMESA_VENDOR_EXT) fn.glEdgeFlagPointerEXT(array.host_stride, array.count, (const GLboolean *)array.host_pointer); else fn.glEdgeFlagPointer(array.host_stride, array.host_pointer); } if (contexts[cur_context].enabled_arrays & NFOSMESA_TEXCOORD_ARRAY) { vertexarray_t &array = contexts[cur_context].texcoord; convertClientArray(count, array); if (array.vendor == NFOSMESA_VENDOR_IBM) fn.glTexCoordPointerListIBM(array.size, array.type, array.host_stride, (const void **)array.host_pointer, array.ptrstride); else if (array.vendor == NFOSMESA_VENDOR_INTEL) fn.glTexCoordPointervINTEL(array.size, array.type, (const void **)array.host_pointer); else if (array.vendor == NFOSMESA_VENDOR_EXT) fn.glTexCoordPointerEXT(array.size, array.type, array.host_stride, array.count, array.host_pointer); else fn.glTexCoordPointer(array.size, array.type, array.host_stride, array.host_pointer); } if (contexts[cur_context].enabled_arrays & NFOSMESA_FOGCOORD_ARRAY) { vertexarray_t &array = contexts[cur_context].fogcoord; convertClientArray(count, array); if (array.vendor == NFOSMESA_VENDOR_IBM) fn.glFogCoordPointerListIBM(array.type, array.host_stride, (const void **)array.host_pointer, array.ptrstride); else if (array.vendor == NFOSMESA_VENDOR_EXT) fn.glFogCoordPointerEXT(array.type, array.host_stride, array.host_pointer); else fn.glFogCoordPointer(array.type, array.host_stride, array.host_pointer); } if (contexts[cur_context].enabled_arrays & NFOSMESA_2NDCOLOR_ARRAY) { vertexarray_t &array = contexts[cur_context].secondary_color; convertClientArray(count, array); if (array.vendor == NFOSMESA_VENDOR_IBM) fn.glSecondaryColorPointerListIBM(array.size, array.type, array.host_stride, (const void **)array.host_pointer, array.ptrstride); else if (array.vendor == NFOSMESA_VENDOR_EXT) fn.glSecondaryColorPointerEXT(array.size, array.type, array.host_stride, array.host_pointer); else fn.glSecondaryColorPointer(array.size, array.type, array.host_stride, array.host_pointer); } if (contexts[cur_context].enabled_arrays & NFOSMESA_ELEMENT_ARRAY) { vertexarray_t &array = contexts[cur_context].element; convertClientArray(count, array); if (array.vendor == NFOSMESA_VENDOR_APPLE) fn.glElementPointerAPPLE(array.type, array.host_pointer); else if (array.vendor == NFOSMESA_VENDOR_ATI) fn.glElementPointerATI(array.type, array.host_pointer); } if (contexts[cur_context].enabled_arrays & NFOSMESA_VARIANT_ARRAY) { vertexarray_t &array = contexts[cur_context].variant; convertClientArray(count, array); if (array.vendor == NFOSMESA_VENDOR_EXT) fn.glVariantPointerEXT(array.id, array.type, array.host_stride, array.host_pointer); } if (contexts[cur_context].enabled_arrays & NFOSMESA_WEIGHT_ARRAY) { vertexarray_t &array = contexts[cur_context].weight; convertClientArray(count, array); if (array.vendor == NFOSMESA_VENDOR_ARB) fn.glWeightPointerARB(array.size, array.type, array.host_stride, array.host_pointer); else if (array.vendor == NFOSMESA_VENDOR_EXT) fn.glVertexWeightPointerEXT(array.size, array.type, array.host_stride, array.host_pointer); } if (contexts[cur_context].enabled_arrays & NFOSMESA_MATRIX_INDEX_ARRAY) { vertexarray_t &array = contexts[cur_context].matrixindex; convertClientArray(count, array); if (array.vendor == NFOSMESA_VENDOR_ARB) fn.glMatrixIndexPointerARB(array.size, array.type, array.host_stride, array.host_pointer); } if (contexts[cur_context].enabled_arrays & NFOSMESA_REPLACEMENT_CODE_ARRAY) { vertexarray_t &array = contexts[cur_context].replacement_code; convertClientArray(count, array); if (array.vendor == NFOSMESA_VENDOR_SUN) fn.glReplacementCodePointerSUN(array.type, array.host_stride, (const void **)array.host_pointer); } } void OSMesaDriver::convertClientArray(GLsizei count, vertexarray_t &array) { if (array.count > 0 && count > array.count) { D(bug("nfosmesa: convertClientArray: count %d might exceed array size %d", count, array.count)); } if (array.host_pointer == NULL || count > array.converted) { if (array.basesize != 1 || array.atari_stride != array.defstride) { array.host_pointer = (char *)realloc((void *)array.host_pointer, count * array.host_stride); GLsizei n = count - array.converted; for (GLsizei i = 0; i < n; i++) { nfmemptr src = array.atari_pointer + array.converted * array.atari_stride; char *dst = array.host_pointer + array.converted * array.host_stride; if (array.type == GL_FLOAT) Atari2HostFloatArray(array.size, AtariAddr(src, const GLfloat *), (GLfloat *)dst); else if (array.type == GL_DOUBLE) Atari2HostDoubleArray(array.size, AtariAddr(src, const GLdouble *), (GLdouble *)dst); else if (array.basesize == 1) #if NFOSMESA_POINTER_AS_MEMARG memcpy(dst, Atari2HostAddr(src), array.size); #else memcpy(dst, src, array.size); #endif else if (array.basesize == 2) Atari2HostShortArray(array.size, AtariAddr(src, const Uint16 *), (GLushort *)dst); else /* if (array.basesize == 4) */ Atari2HostIntArray(array.size, AtariAddr(src, const Uint32 *), (GLuint *)dst); array.converted++; } array.alloced = true; } else { array.host_pointer = HostAddr(array.atari_pointer, char *); array.converted = count; } } } void OSMesaDriver::nfglArrayElementHelper(GLint i) { convertClientArrays(i + 1); fn.glArrayElement(i); } void OSMesaDriver::nfglInterleavedArraysHelper(GLenum format, GLsizei stride, nfmemptr pointer) { SDL_bool enable_texcoord, enable_normal, enable_color; int texcoord_size, color_size, vertex_size; nfmemptr texcoord_ptr, normal_ptr, color_ptr, vertex_ptr; GLenum color_type; int c, f; int defstride; f = ATARI_SIZEOF_FLOAT; c = f * ((4 * sizeof(GLubyte) + (f - 1)) / f); enable_texcoord=SDL_FALSE; enable_normal=SDL_FALSE; enable_color=SDL_FALSE; texcoord_size= color_size = vertex_size = 0; texcoord_ptr = normal_ptr = color_ptr = vertex_ptr = pointer; color_type = GL_FLOAT; switch(format) { case GL_V2F: vertex_size = 2; defstride = 2 * f; break; case GL_V3F: vertex_size = 3; defstride = 3 * f; break; case GL_C4UB_V2F: vertex_size = 2; color_size = 4; enable_color = SDL_TRUE; vertex_ptr += c; color_type = GL_UNSIGNED_BYTE; defstride = c + 2 * f; break; case GL_C4UB_V3F: vertex_size = 3; color_size = 4; enable_color = SDL_TRUE; vertex_ptr += c; color_type = GL_UNSIGNED_BYTE; defstride = c + 3 * f; break; case GL_C3F_V3F: vertex_size = 3; color_size = 3; enable_color = SDL_TRUE; vertex_ptr += 3 * f; defstride = 6 * f; break; case GL_N3F_V3F: vertex_size = 3; enable_normal = SDL_TRUE; vertex_ptr += 3 * f; defstride = 6 * f; break; case GL_C4F_N3F_V3F: vertex_size = 3; color_size = 4; enable_color = SDL_TRUE; enable_normal = SDL_TRUE; vertex_ptr += 7 * f; normal_ptr += 4 * f; defstride = 10 * f; break; case GL_T2F_V3F: vertex_size = 3; texcoord_size = 2; enable_texcoord = SDL_TRUE; vertex_ptr += 2 * f; defstride = 5 * f; break; case GL_T4F_V4F: vertex_size = 4; texcoord_size = 4; enable_texcoord = SDL_TRUE; vertex_ptr += 4 * f; defstride = 8 * f; break; case GL_T2F_C4UB_V3F: vertex_size = 3; texcoord_size = 2; color_size = 4; enable_texcoord = SDL_TRUE; enable_color = SDL_TRUE; vertex_ptr += c + 2 * f; color_ptr += 2 * f; color_type = GL_UNSIGNED_BYTE; defstride = c + 5 * f; break; case GL_T2F_C3F_V3F: vertex_size = 3; texcoord_size = 2; color_size = 3; enable_texcoord = SDL_TRUE; enable_color = SDL_TRUE; vertex_ptr += 5 * f; color_ptr += 2 * f; defstride = 8 * f; break; case GL_T2F_N3F_V3F: vertex_size = 3; texcoord_size = 2; enable_normal = SDL_TRUE; enable_texcoord = SDL_TRUE; vertex_ptr += 5 * f; normal_ptr += 2 * f; defstride = 8 * f; break; case GL_T2F_C4F_N3F_V3F: vertex_size = 3; texcoord_size = 2; color_size = 4; enable_normal = SDL_TRUE; enable_texcoord = SDL_TRUE; enable_color = SDL_TRUE; vertex_ptr += 9 * f; normal_ptr += 6 * f; color_ptr += 2 * f; defstride = 12 * f; break; case GL_T4F_C4F_N3F_V4F: vertex_size = 4; texcoord_size = 4; color_size = 4; enable_normal = SDL_TRUE; enable_texcoord = SDL_TRUE; enable_color = SDL_TRUE; vertex_ptr += 11 * f; normal_ptr += 8 * f; color_ptr += 4 * f; defstride = 15 * f; break; default: /* FIXME: GL_R1UI_* from GL_SUN_triangle_list not handled */ glSetError(GL_INVALID_ENUM); return; } if (stride == 0) { stride = defstride; } /* * FIXME: * calling the dispatch functions here would trace * calls to functions the client did not call directly */ nfglDisableClientState(GL_EDGE_FLAG_ARRAY); nfglDisableClientState(GL_INDEX_ARRAY); if(enable_normal) { nfglEnableClientState(GL_NORMAL_ARRAY); nfglNormalPointer(GL_FLOAT, stride, normal_ptr); } else { nfglDisableClientState(GL_NORMAL_ARRAY); } if(enable_color) { nfglEnableClientState(GL_COLOR_ARRAY); nfglColorPointer(color_size, color_type, stride, color_ptr); } else { nfglDisableClientState(GL_COLOR_ARRAY); } if(enable_texcoord) { nfglEnableClientState(GL_TEXTURE_COORD_ARRAY); nfglTexCoordPointer(texcoord_size, GL_FLOAT, stride, texcoord_ptr); } else { nfglDisableClientState(GL_TEXTURE_COORD_ARRAY); } nfglEnableClientState(GL_VERTEX_ARRAY); nfglVertexPointer(vertex_size, GL_FLOAT, stride, vertex_ptr); } /*--- * wrappers for functions that take float arguments, and sometimes only exist as * functions with double as arguments in GL ---*/ void OSMesaDriver::nfglFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val) { D(bug("nfosmesa: glFrustumf(%f, %f, %f, %f, %f, %f)", left, right, bottom, top, near_val, far_val)); #if 0 if (GL_ISAVAILABLE(glFrustumfOES)) fn.glFrustumfOES(left, right, bottom, top, near_val, far_val); else fn.glFrustum(left, right, bottom, top, near_val, far_val); #else GLfloat m[16]; GLfloat x, y, A, B, C, D; if (near_val <= 0.0 || far_val <= 0.0 || near_val == far_val || left == right || top == bottom) { glSetError(GL_INVALID_VALUE); return; } x = (2.0F * near_val) / (right - left); y = (2.0F * near_val) / (top - bottom); A = (right + left) / (right - left); B = (top + bottom) / (top - bottom); C = -(far_val + near_val) / (far_val - near_val); D = -(2.0F * far_val * near_val) / (far_val - near_val); M(m, 0, 0) = x; M(m, 0, 1) = 0.0F; M(m, 0, 2) = A; M(m, 0, 3) = 0.0F; M(m, 1, 0) = 0.0F; M(m, 1, 1) = y; M(m, 1, 2) = B; M(m, 1, 3) = 0.0F; M(m, 2, 0) = 0.0F; M(m, 2, 1) = 0.0F; M(m, 2, 2) = C; M(m, 2, 3) = D; M(m, 3, 0) = 0.0F; M(m, 3, 1) = 0.0F; M(m, 3, 2) = -1.0F; M(m, 3, 3) = 0.0F; fn.glMultMatrixf(m); #endif } void OSMesaDriver::nfglOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val) { D(bug("nfosmesa: glOrthof(%f, %f, %f, %f, %f, %f)", left, right, bottom, top, near_val, far_val)); #if 0 if (GL_ISAVAILABLE(glOrthofOES)) fn.glOrthofOES(left, right, bottom, top, near_val, far_val); else fn.glOrtho(left, right, bottom, top, near_val, far_val); #else GLfloat m[16]; if (left == right || bottom == top || near_val == far_val) { glSetError(GL_INVALID_VALUE); return; } M(m, 0, 0) = 2.0F / (right - left); M(m, 0, 1) = 0.0F; M(m, 0, 2) = 0.0F; M(m, 0, 3) = -(right + left) / (right - left); M(m, 1, 0) = 0.0F; M(m, 1, 1) = 2.0F / (top - bottom); M(m, 1, 2) = 0.0F; M(m, 1, 3) = -(top + bottom) / (top - bottom); M(m, 2, 0) = 0.0F; M(m, 2, 1) = 0.0F; M(m, 2, 2) = -2.0F / (far_val - near_val); M(m, 2, 3) = -(far_val + near_val) / (far_val - near_val); M(m, 3, 0) = 0.0F; M(m, 3, 1) = 0.0F; M(m, 3, 2) = 0.0F; M(m, 3, 3) = 1.0F; fn.glMultMatrixf(m); #endif } /* glClearDepthf already exists in GL */ /*--- * GLU functions ---*/ void OSMesaDriver::nfgluLookAtf(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ ) { GLfloat m[16]; GLfloat x[3], y[3], z[3]; GLfloat mag; D(bug("nfosmesa: gluLookAtf(%f, %f, %f, %f, %f, %f, %f, %f, %f)", eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ)); /* Make rotation matrix */ /* Z vector */ z[0] = eyeX - centerX; z[1] = eyeY - centerY; z[2] = eyeZ - centerZ; mag = sqrtf(z[0] * z[0] + z[1] * z[1] + z[2] * z[2]); if (mag) { z[0] /= mag; z[1] /= mag; z[2] /= mag; } /* Y vector */ y[0] = upX; y[1] = upY; y[2] = upZ; /* X vector = Y cross Z */ x[0] = y[1] * z[2] - y[2] * z[1]; x[1] = -y[0] * z[2] + y[2] * z[0]; x[2] = y[0] * z[1] - y[1] * z[0]; /* Recompute Y = Z cross X */ y[0] = z[1] * x[2] - z[2] * x[1]; y[1] = -z[0] * x[2] + z[2] * x[0]; y[2] = z[0] * x[1] - z[1] * x[0]; /* cross product gives area of parallelogram, which is < 1.0 for * non-perpendicular unit-length vectors; so normalize x, y here */ mag = sqrtf(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]); if (mag) { x[0] /= mag; x[1] /= mag; x[2] /= mag; } mag = sqrtf(y[0] * y[0] + y[1] * y[1] + y[2] * y[2]); if (mag) { y[0] /= mag; y[1] /= mag; y[2] /= mag; } M(m, 0, 0) = x[0]; M(m, 0, 1) = x[1]; M(m, 0, 2) = x[2]; M(m, 0, 3) = 0.0; M(m, 1, 0) = y[0]; M(m, 1, 1) = y[1]; M(m, 1, 2) = y[2]; M(m, 1, 3) = 0.0; M(m, 2, 0) = z[0]; M(m, 2, 1) = z[1]; M(m, 2, 2) = z[2]; M(m, 2, 3) = 0.0; M(m, 3, 0) = 0.0; M(m, 3, 1) = 0.0; M(m, 3, 2) = 0.0; M(m, 3, 3) = 1.0; fn.glMultMatrixf(m); /* Translate Eye to Origin */ fn.glTranslatef(-eyeX, -eyeY, -eyeZ); } void OSMesaDriver::nfgluLookAt( GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ ) { D(bug("nfosmesa: gluLookAt(%f, %f, %f, %f, %f, %f, %f, %f, %f)", eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ)); nfgluLookAtf(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ); } /*--- * other functions needed by tiny_gl.ldg ---*/ void OSMesaDriver::nftinyglswapbuffer(memptr buffer) { Uint32 ctx = cur_context; D(bug("nfosmesa: swapbuffer($%08x)", buffer)); if (ctx > MAX_OSMESA_CONTEXTS) return; if (ctx != 0 && !contexts[ctx].ctx) return; if (ctx != 0) { OffscreenContext *context = contexts[ctx].ctx; context->MakeCurrent(buffer, context->type, context->width, context->height); } } /*--- helper methods for object buffers ---*/ vertexarray_t *OSMesaDriver::gl_get_array(GLenum pname) { switch (pname) { case GL_VERTEX_ARRAY: return &contexts[cur_context].vertex; case GL_NORMAL_ARRAY: return &contexts[cur_context].normal; case GL_COLOR_ARRAY: return &contexts[cur_context].color; case GL_INDEX_ARRAY: return &contexts[cur_context].index; case GL_EDGE_FLAG_ARRAY: return &contexts[cur_context].edgeflag; case GL_TEXTURE_COORD_ARRAY: return &contexts[cur_context].texcoord; case GL_FOG_COORD_ARRAY: return &contexts[cur_context].fogcoord; case GL_SECONDARY_COLOR_ARRAY: return &contexts[cur_context].secondary_color; case GL_ELEMENT_ARRAY_BUFFER: return &contexts[cur_context].element; case GL_VARIANT_ARRAY_EXT: return &contexts[cur_context].element; } return NULL; } gl_buffer_t *OSMesaDriver::gl_get_buffer(GLuint name) { /* TODO */ UNUSED(name); return NULL; } gl_buffer_t *OSMesaDriver::gl_make_buffer(GLsizei size, nfcmemptr pointer) { /* TODO */ UNUSED(size); UNUSED(pointer); return NULL; } /*--- Functions that return a 64-bit value ---*/ /* * The NF interface currently only returns a single value in D0, * so the call has to pass an extra parameter, the location where to * store the result value */ #define FN_GLGETIMAGEHANDLEARB(texture, level, layered, layer, format) \ memptr retaddr = getParameter(2); \ GLuint64 ret = fn.glGetImageHandleARB(texture, level, layered, layer, format); \ WriteInt64(retaddr, ret); \ return 0 #define FN_GLGETIMAGEHANDLENV(texture, level, layered, layer, format) \ memptr retaddr = getParameter(2); \ GLuint64 ret = fn.glGetImageHandleNV(texture, level, layered, layer, format); \ WriteInt64(retaddr, ret); \ return 0 #define FN_GLGETTEXTUREHANDLEARB(texture) \ memptr retaddr = getParameter(2); \ GLuint64 ret = fn.glGetTextureHandleARB(texture); \ WriteInt64(retaddr, ret); \ return 0 #define FN_GLGETTEXTUREHANDLENV(texture) \ memptr retaddr = getParameter(2); \ GLuint64 ret = fn.glGetTextureHandleNV(texture); \ WriteInt64(retaddr, ret); \ return 0 #define FN_GLGETTEXTURESAMPLERHANDLEARB(texturem, sampler) \ memptr retaddr = getParameter(2); \ GLuint64 ret = fn.glGetTextureSamplerHandleARB(texture, sampler); \ WriteInt64(retaddr, ret); \ return 0 #define FN_GLGETTEXTURESAMPLERHANDLENV(texturem, sampler) \ memptr retaddr = getParameter(2); \ GLuint64 ret = fn.glGetTextureSamplerHandleNV(texture, sampler); \ WriteInt64(retaddr, ret); \ return 0 /*--- various helper functions ---*/ GLsizei OSMesaDriver::nfglPixelmapSize(GLenum pname) { GLint size = 0; switch (pname) { case GL_PIXEL_MAP_I_TO_I: pname = GL_PIXEL_MAP_I_TO_I_SIZE; break; case GL_PIXEL_MAP_S_TO_S: pname = GL_PIXEL_MAP_S_TO_S_SIZE; break; case GL_PIXEL_MAP_I_TO_R: pname = GL_PIXEL_MAP_I_TO_R_SIZE; break; case GL_PIXEL_MAP_I_TO_G: pname = GL_PIXEL_MAP_I_TO_G_SIZE; break; case GL_PIXEL_MAP_I_TO_B: pname = GL_PIXEL_MAP_I_TO_B_SIZE; break; case GL_PIXEL_MAP_I_TO_A: pname = GL_PIXEL_MAP_I_TO_A_SIZE; break; case GL_PIXEL_MAP_R_TO_R: pname = GL_PIXEL_MAP_R_TO_R_SIZE; break; case GL_PIXEL_MAP_G_TO_G: pname = GL_PIXEL_MAP_G_TO_G_SIZE; break; case GL_PIXEL_MAP_B_TO_B: pname = GL_PIXEL_MAP_B_TO_B_SIZE; break; case GL_PIXEL_MAP_A_TO_A: pname = GL_PIXEL_MAP_A_TO_A_SIZE; break; default: return size; } fn.glGetIntegerv(pname, &size); return size; } int OSMesaDriver::nfglGetNumParams(GLenum pname) { GLint count = 1; switch (pname) { case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: case GL_DEPTH_BOUNDS_EXT: case GL_LINE_WIDTH_RANGE: case GL_MAP1_GRID_DOMAIN: case GL_MAP2_GRID_SEGMENTS: case GL_MAX_VIEWPORT_DIMS: case GL_POINT_SIZE_RANGE: case GL_POLYGON_MODE: case GL_VIEWPORT_BOUNDS_RANGE: /* case GL_SMOOTH_LINE_WIDTH_RANGE: same as GL_LINE_WIDTH_RANGE */ /* case GL_SMOOTH_POINT_SIZE_RANGE: same as GL_POINT_SIZE_RANGE */ case GL_TEXTURE_CLIPMAP_CENTER_SGIX: case GL_TEXTURE_CLIPMAP_OFFSET_SGIX: case GL_MAP1_TEXTURE_COORD_2: case GL_MAP2_TEXTURE_COORD_2: case GL_CURRENT_RASTER_NORMAL_SGIX: count = 2; break; case GL_CURRENT_NORMAL: case GL_POINT_DISTANCE_ATTENUATION: case GL_SPOT_DIRECTION: case GL_COLOR_INDEXES: case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX: case GL_MAP1_NORMAL: case GL_MAP1_TEXTURE_COORD_3: case GL_MAP1_VERTEX_3: case GL_MAP2_NORMAL: case GL_MAP2_TEXTURE_COORD_3: case GL_MAP2_VERTEX_3: case GL_EVAL_VERTEX_ATTRIB2_NV: /* vertex normal */ count = 3; break; case GL_ACCUM_CLEAR_VALUE: case GL_BLEND_COLOR: /* case GL_BLEND_COLOR_EXT: same as GL_BLEND_COLOR */ case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_CURRENT_COLOR: case GL_CURRENT_RASTER_COLOR: case GL_CURRENT_RASTER_POSITION: case GL_CURRENT_RASTER_SECONDARY_COLOR: case GL_CURRENT_RASTER_TEXTURE_COORDS: case GL_CURRENT_SECONDARY_COLOR: case GL_CURRENT_TEXTURE_COORDS: case GL_FOG_COLOR: case GL_LIGHT_MODEL_AMBIENT: case GL_MAP2_GRID_DOMAIN: case GL_RGBA_SIGNED_COMPONENTS_EXT: case GL_SCISSOR_BOX: case GL_VIEWPORT: case GL_CONSTANT_COLOR0_NV: case GL_CONSTANT_COLOR1_NV: case GL_CULL_VERTEX_OBJECT_POSITION_EXT: case GL_CULL_VERTEX_EYE_POSITION_EXT: case GL_AMBIENT: case GL_DIFFUSE: case GL_SPECULAR: case GL_POSITION: case GL_EMISSION: case GL_AMBIENT_AND_DIFFUSE: case GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX: case GL_CONVOLUTION_FILTER_SCALE: case GL_CONVOLUTION_FILTER_BIAS: case GL_CONVOLUTION_BORDER_COLOR: case GL_TEXTURE_BORDER_COLOR: case GL_POST_TEXTURE_FILTER_BIAS_SGIX: case GL_POST_TEXTURE_FILTER_SCALE_SGIX: case GL_TEXTURE_ENV_COLOR: case GL_OBJECT_PLANE: case GL_EYE_PLANE: case GL_MAP1_COLOR_4: case GL_MAP1_TEXTURE_COORD_4: case GL_MAP1_VERTEX_4: case GL_MAP2_COLOR_4: case GL_MAP2_TEXTURE_COORD_4: case GL_MAP2_VERTEX_4: case GL_COLOR_TABLE_SCALE: case GL_COLOR_TABLE_BIAS: case GL_EVAL_VERTEX_ATTRIB0_NV: /* vertex position */ case GL_EVAL_VERTEX_ATTRIB3_NV: /* primary color */ case GL_EVAL_VERTEX_ATTRIB4_NV: /* secondary color */ case GL_EVAL_VERTEX_ATTRIB8_NV: /* texture coord 0 */ case GL_EVAL_VERTEX_ATTRIB9_NV: /* texture coord 1 */ case GL_EVAL_VERTEX_ATTRIB10_NV: /* texture coord 2 */ case GL_EVAL_VERTEX_ATTRIB11_NV: /* texture coord 3 */ case GL_EVAL_VERTEX_ATTRIB12_NV: /* texture coord 4 */ case GL_EVAL_VERTEX_ATTRIB13_NV: /* texture coord 5 */ case GL_EVAL_VERTEX_ATTRIB14_NV: /* texture coord 6 */ case GL_EVAL_VERTEX_ATTRIB15_NV: /* texture coord 7 */ case GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV: case GL_PATH_OBJECT_BOUNDING_BOX_NV: case GL_PATH_FILL_BOUNDING_BOX_NV: case GL_PATH_STROKE_BOUNDING_BOX_NV: case GL_CURRENT_VERTEX_ATTRIB: case GL_REFERENCE_PLANE_EQUATION_SGIX: count = 4; break; case GL_COLOR_MATRIX: case GL_MODELVIEW_MATRIX: case GL_PROJECTION_MATRIX: case GL_TEXTURE_MATRIX: case GL_TRANSPOSE_MODELVIEW_MATRIX: case GL_TRANSPOSE_PROJECTION_MATRIX: case GL_TRANSPOSE_TEXTURE_MATRIX: case GL_TRANSPOSE_COLOR_MATRIX: case GL_PATH_GEN_COEFF_NV: count = 16; break; case GL_COMPRESSED_TEXTURE_FORMATS: fn.glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &count); break; case GL_SHADER_BINARY_FORMATS: fn.glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &count); break; case GL_PROGRAM_BINARY_FORMATS: fn.glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &count); break; case GL_EVAL_VERTEX_ATTRIB1_NV: /* vertex weight */ case GL_EVAL_VERTEX_ATTRIB5_NV: /* fog coord */ break; case GL_DEVICE_LUID_EXT: count = GL_LUID_SIZE_EXT; break; case GL_DEVICE_UUID_EXT: case GL_DRIVER_UUID_EXT: count = GL_UUID_SIZE_EXT; break; /* TODO: */ case GL_COMBINER_INPUT_NV: case GL_COMBINER_COMPONENT_USAGE_NV: case GL_COMBINER_MAPPING_NV: break; } return count; } GLint OSMesaDriver::__glGetMap_Evalk(GLenum target) { switch (target) { case GL_MAP1_INDEX: case GL_MAP1_TEXTURE_COORD_1: case GL_MAP2_INDEX: case GL_MAP2_TEXTURE_COORD_1: return 1; case GL_MAP1_TEXTURE_COORD_2: case GL_MAP2_TEXTURE_COORD_2: return 2; case GL_MAP1_VERTEX_3: case GL_MAP1_NORMAL: case GL_MAP1_TEXTURE_COORD_3: case GL_MAP2_VERTEX_3: case GL_MAP2_NORMAL: case GL_MAP2_TEXTURE_COORD_3: return 3; case GL_MAP1_VERTEX_4: case GL_MAP1_COLOR_4: case GL_MAP1_TEXTURE_COORD_4: case GL_MAP2_VERTEX_4: case GL_MAP2_COLOR_4: case GL_MAP2_TEXTURE_COORD_4: default: return 4; } } /*--- conversion macros used in generated code ---*/ void OSMesaDriver::gl_bind_buffer(GLenum target, GLuint buffer, GLuint first, GLuint count) { fbo_buffer *fbo; switch (target) { case GL_ARRAY_BUFFER: fbo = &contexts[cur_context].buffer_bindings.array; break; case GL_ATOMIC_COUNTER_BUFFER: fbo = &contexts[cur_context].buffer_bindings.atomic_counter; break; case GL_COPY_READ_BUFFER: fbo = &contexts[cur_context].buffer_bindings.copy_read; contexts[cur_context].buffer_bindings.copy_read.first = first; contexts[cur_context].buffer_bindings.copy_read.first = count; break; case GL_COPY_WRITE_BUFFER: fbo = &contexts[cur_context].buffer_bindings.copy_write; break; case GL_DISPATCH_INDIRECT_BUFFER: fbo = &contexts[cur_context].buffer_bindings.dispatch_indirect; break; case GL_DRAW_INDIRECT_BUFFER: fbo = &contexts[cur_context].buffer_bindings.draw_indirect; break; case GL_ELEMENT_ARRAY_BUFFER: fbo = &contexts[cur_context].buffer_bindings.element_array; break; case GL_PIXEL_PACK_BUFFER: fbo = &contexts[cur_context].buffer_bindings.pixel_pack; break; case GL_PIXEL_UNPACK_BUFFER: fbo = &contexts[cur_context].buffer_bindings.pixel_unpack; break; case GL_QUERY_BUFFER: fbo = &contexts[cur_context].buffer_bindings.query; break; case GL_SHADER_STORAGE_BUFFER: fbo = &contexts[cur_context].buffer_bindings.shader_storage; break; case GL_TEXTURE_BUFFER: fbo = &contexts[cur_context].buffer_bindings.texture; break; case GL_TRANSFORM_FEEDBACK_BUFFER: fbo = &contexts[cur_context].buffer_bindings.transform_feedback; break; case GL_UNIFORM_BUFFER: fbo = &contexts[cur_context].buffer_bindings.uniform; break; default: return; } fbo->id = buffer; fbo->first = first; fbo->count = count; } /* XXX todo */ void OSMesaDriver::gl_get_pointer(GLenum target, GLuint index, void **data) { fbo_buffer *fbo; memptr *pdata = (memptr *)data; UNUSED(index); // FIXME switch (target) { case GL_ARRAY_BUFFER: fbo = &contexts[cur_context].buffer_bindings.array; break; case GL_ATOMIC_COUNTER_BUFFER: fbo = &contexts[cur_context].buffer_bindings.atomic_counter; break; case GL_COPY_READ_BUFFER: fbo = &contexts[cur_context].buffer_bindings.copy_read; break; case GL_COPY_WRITE_BUFFER: fbo = &contexts[cur_context].buffer_bindings.copy_write; break; case GL_DISPATCH_INDIRECT_BUFFER: fbo = &contexts[cur_context].buffer_bindings.dispatch_indirect; break; case GL_DRAW_INDIRECT_BUFFER: fbo = &contexts[cur_context].buffer_bindings.draw_indirect; break; case GL_ELEMENT_ARRAY_BUFFER: fbo = &contexts[cur_context].buffer_bindings.element_array; break; case GL_PIXEL_PACK_BUFFER: fbo = &contexts[cur_context].buffer_bindings.pixel_pack; break; case GL_PIXEL_UNPACK_BUFFER: fbo = &contexts[cur_context].buffer_bindings.pixel_unpack; break; case GL_QUERY_BUFFER: fbo = &contexts[cur_context].buffer_bindings.query; break; case GL_SHADER_STORAGE_BUFFER: fbo = &contexts[cur_context].buffer_bindings.shader_storage; break; case GL_TEXTURE_BUFFER: fbo = &contexts[cur_context].buffer_bindings.texture; break; case GL_TRANSFORM_FEEDBACK_BUFFER: fbo = &contexts[cur_context].buffer_bindings.transform_feedback; break; case GL_UNIFORM_BUFFER: fbo = &contexts[cur_context].buffer_bindings.uniform; break; case GL_SELECTION_BUFFER_POINTER: *pdata = (memptr)(uintptr_t)NFHost2AtariAddr(contexts[cur_context].select_buffer_atari); return; case GL_FEEDBACK_BUFFER_POINTER: *pdata = (memptr)(uintptr_t)NFHost2AtariAddr(contexts[cur_context].feedback_buffer_atari); return; default: glSetError(GL_INVALID_ENUM); return; } // not sure about this *pdata = (memptr)(uintptr_t)NFHost2AtariAddr(fbo->atari_pointer); } /* #define FN_GLULOOKAT(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ) */ /* FIXME for glTexImage*, glTexSubImage* etc: If a non-zero named buffer object is bound to the GL_PIXEL_UNPACK_BUFFER target (see glBindBuffer) while a texture image is specified, data is treated as a byte offset into the buffer object's data store. */ #define FN_GLRENDERMODE(mode) \ GLenum render_mode = contexts[cur_context].render_mode; \ GLint ret = fn.glRenderMode(mode); \ switch (mode) { \ case GL_RENDER: \ case GL_SELECT: \ case GL_FEEDBACK: \ contexts[cur_context].render_mode = mode; \ break; \ } \ switch (render_mode) { \ case GL_FEEDBACK: \ if (ret > 0 && contexts[cur_context].feedback_buffer_host) { \ switch (contexts[cur_context].feedback_buffer_type) { \ case GL_FLOAT: \ Host2AtariFloatArray(ret, (const GLfloat *)contexts[cur_context].feedback_buffer_host, AtariAddr(contexts[cur_context].feedback_buffer_atari, GLfloat *)); \ break; \ case GL_FIXED: \ Host2AtariIntArray(ret, (const GLfixed *)contexts[cur_context].feedback_buffer_host, AtariAddr(contexts[cur_context].feedback_buffer_atari, GLfixed *)); \ break; \ } \ } \ break; \ case GL_SELECT: \ if (ret > 0 && contexts[cur_context].select_buffer_host) { \ /* FIXME: scan select_buffer to get exact number of items to copy */ \ Host2AtariIntArray(contexts[cur_context].select_buffer_size, contexts[cur_context].select_buffer_host, AtariAddr(contexts[cur_context].select_buffer_atari, GLuint *)); \ } \ break; \ } \ return ret /* -------------------------------------------------------------------------- */ /* * GL_EXT_color_subtable */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLCOLORSUBTABLEEXT(target, start, count, format, type, table) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(count, 1, 1, format, type, (nfmemptr)table); \ fn.glColorSubTableEXT(target, start, count, format, type, tmp) #else #define FN_GLCOLORSUBTABLEEXT(target, start, count, format, type, table) \ fn.glColorSubTableEXT(target, start, count, format, type, HostAddr(table, const void *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_register_combiners */ /* -------------------------------------------------------------------------- */ /* * GL_NV_register_combiners2 */ /* -------------------------------------------------------------------------- */ /* * GL_ARB_transpose_matrix */ /* -------------------------------------------------------------------------- */ /* * GL_ARB_multitexture */ /* -------------------------------------------------------------------------- */ /* * GL_EXT_cull_vertex */ /* -------------------------------------------------------------------------- */ /* * GL_EXT_debug_marker */ /* -------------------------------------------------------------------------- */ /* * GL_ARB_debug_output */ /* -------------------------------------------------------------------------- */ /* * GL_AMD_debug_output */ /* -------------------------------------------------------------------------- */ /* * GL_SGIX_polynomial_ffd */ #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLDEFORMATIONMAP3DSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points) \ GLdouble *tmp; \ nfcmemptr ptr; \ GLint i, j, k; \ GLint const size = __glGetMap_Evalk(target); \ \ tmp = (GLdouble *)malloc(size * uorder * vorder * worder * sizeof(GLdouble)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ ptr = (nfcmemptr)points; \ for (i = 0; i < uorder; i++) { \ for (j = 0; j < vorder; j++) { \ for (k = 0; k < worder; k++) { \ Atari2HostDoubleArray(size, AtariAddr(ptr + (i * ustride + j * vstride + k * wstride) * ATARI_SIZEOF_DOUBLE, const GLdouble *), &tmp[((i * vorder + j) * worder + k) * size]); \ } \ } \ } \ fn.glDeformationMap3dSGIX(target, \ u1, u2, size * vorder * worder, uorder, \ v1, v2, size * vorder, vorder, \ w1, w2, size, worder, tmp \ ); \ free(tmp) #else #define FN_GLDEFORMATIONMAP3DSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points) \ fn.glDeformationMap3dSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, HostAddr(points, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLDEFORMATIONMAP3FSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points) \ GLfloat *tmp; \ nfcmemptr ptr; \ GLint i, j, k; \ GLint const size = __glGetMap_Evalk(target); \ \ tmp = (GLfloat *)malloc(size * uorder * vorder * worder * sizeof(GLfloat)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ ptr = (nfcmemptr)points; \ for (i = 0; i < uorder; i++) { \ for (j = 0; j < vorder; j++) { \ for (k = 0; k < worder; k++) { \ Atari2HostFloatArray(size, AtariAddr(ptr + (i * ustride + j * vstride + k * wstride) * ATARI_SIZEOF_FLOAT, const GLfloat *), &tmp[((i * vorder + j) * worder + k) * size]); \ } \ } \ } \ fn.glDeformationMap3fSGIX(target, \ u1, u2, size * vorder * worder, uorder, \ v1, v2, size * vorder, vorder, \ w1, w2, size, worder, tmp \ ); \ free(tmp) #else #define FN_GLDEFORMATIONMAP3FSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points) \ fn.glDeformationMap3fSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, HostAddr(points, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_APPLE_fence */ /* -------------------------------------------------------------------------- */ /* * GL_NV_fence */ /* -------------------------------------------------------------------------- */ /* * GL_EXT_framebuffer_object */ #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETERENDERBUFFERSEXT(n, renderbuffers) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, renderbuffers, tmp); \ fn.glDeleteRenderbuffersEXT(n, ptmp) #else #define FN_GLDELETERENDERBUFFERSEXT(n, renderbuffers) \ fn.glDeleteRenderbuffersEXT(n, HostAddr(renderbuffers, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENRENDERBUFFERSEXT(n, renderbuffers) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenRenderbuffersEXT(n, tmp); \ Host2AtariIntArray(n, tmp, renderbuffers) #else #define FN_GLGENRENDERBUFFERSEXT(n, renderbuffers) \ fn.glGenRenderbuffersEXT(n, HostAddr(renderbuffers, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETRENDERBUFFERPARAMETERIVEXT(target, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetRenderbufferParameterivEXT(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETRENDERBUFFERPARAMETERIVEXT(target, pname, params) \ fn.glGetRenderbufferParameterivEXT(target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETEFRAMEBUFFERSEXT(n, framebuffers) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, framebuffers, tmp); \ fn.glDeleteFramebuffersEXT(n, ptmp) #else #define FN_GLDELETEFRAMEBUFFERSEXT(n, framebuffers) \ fn.glDeleteFramebuffersEXT(n, HostAddr(framebuffers, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENFRAMEBUFFERSEXT(n, framebuffers) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenFramebuffersEXT(n, tmp); \ Host2AtariIntArray(n, tmp, framebuffers) #else #define FN_GLGENFRAMEBUFFERSEXT(n, framebuffers) \ fn.glGenFramebuffersEXT(n, HostAddr(framebuffers, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXT(target, attachment, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetFramebufferAttachmentParameterivEXT(target, attachment, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXT(target, attachment, pname, params) \ fn.glGetFramebufferAttachmentParameterivEXT(target, attachment, pname, HostAddr(params, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_AMD_name_gen_delete */ #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETENAMESAMD(identifier, num, names) \ GLuint tmp[MAX(num, 0)], *ptmp; \ ptmp = Atari2HostIntArray(num, names, tmp); \ fn.glDeleteNamesAMD(identifier, num, ptmp) #else #define FN_GLDELETENAMESAMD(identifier, num, names) \ fn.glDeleteNamesAMD(identifier, num, HostAddr(names, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENNAMESAMD(identifer, num, names) \ GLsizei const size = MAX(num, 0); \ GLuint tmp[size]; \ fn.glGenNamesAMD(identifier, num, tmp); \ Host2AtariIntArray(num, tmp, names) #else #define FN_GLGENNAMESAMD(identifer, num, names) \ fn.glGenNamesAMD(identifer, num, HostAddr(names, GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_APPLE_vertex_array_object */ #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETEVERTEXARRAYSAPPLE(n, arrays) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, arrays, tmp); \ fn.glDeleteVertexArraysAPPLE(n, ptmp) #else #define FN_GLDELETEVERTEXARRAYSAPPLE(n, arrays) \ fn.glDeleteVertexArraysAPPLE(n, HostAddr(arrays, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENVERTEXARRAYSAPPLE(n, arrays) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenVertexArraysAPPLE(n, tmp); \ Host2AtariIntArray(n, tmp, arrays) #else #define FN_GLGENVERTEXARRAYSAPPLE(n, arrays) \ fn.glGenVertexArraysAPPLE(n, HostAddr(arrays, GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_SGIS_detail_texture */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETDETAILTEXFUNCSGIS(target, points) \ GLint n = 0; \ fn.glGetTexParameteriv(target, GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS, &n); \ GLfloat tmp[MAX(n, 0) * 2]; \ fn.glGetDetailTexFuncSGIS(target, tmp); \ Host2AtariFloatArray(n * 2, tmp, points) #else #define FN_GLGETDETAILTEXFUNCSGIS(target, points) \ fn.glGetDetailTexFuncSGIS(target, HostAddr(points, GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ARB_draw_buffers */ #if NFOSMESA_NEED_INT_CONV #define FN_GLDRAWBUFFERSARB(n, bufs) \ GLenum tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, bufs, tmp); \ fn.glDrawBuffersARB(n, ptmp) #else #define FN_GLDRAWBUFFERSARB(n, bufs) \ fn.glDrawBuffersARB(n, HostAddr(bufs, const GLenum *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ATI_draw_buffers */ #if NFOSMESA_NEED_INT_CONV #define FN_GLDRAWBUFFERSATI(n, bufs) \ GLenum tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, bufs, tmp); \ fn.glDrawBuffersATI(n, ptmp) #else #define FN_GLDRAWBUFFERSATI(n, bufs) \ fn.glDrawBuffersATI(n, HostAddr(bufs, const GLenum *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ARB_draw_instanced */ #define FN_GLDRAWELEMENTSINSTANCEDARB(mode, count, type, indices, instancecount) \ pixelBuffer buf(*this); \ void *tmp; \ convertClientArrays(count); \ switch(type) { \ case GL_UNSIGNED_BYTE: \ case GL_UNSIGNED_SHORT: \ case GL_UNSIGNED_INT: \ tmp = buf.convertArray(count, type, (nfmemptr)indices); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ fn.glDrawElementsInstancedARB(mode, count, type, tmp, instancecount) #define FN_GLDRAWARRAYSINSTANCEDARB(mode, first, count, instancecount) \ convertClientArrays(first + count); \ fn.glDrawArraysInstancedARB(mode, first, count, instancecount) /* -------------------------------------------------------------------------- */ /* * GL_EXT_draw_instanced */ #define FN_GLDRAWELEMENTSINSTANCEDEXT(mode, count, type, indices, instancecount) \ void *tmp; \ pixelBuffer buf(*this); \ convertClientArrays(count); \ switch(type) { \ case GL_UNSIGNED_BYTE: \ case GL_UNSIGNED_SHORT: \ case GL_UNSIGNED_INT: \ tmp = buf.convertArray(count, type, (nfmemptr)indices); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ fn.glDrawElementsInstancedEXT(mode, count, type, tmp, instancecount) #define FN_GLDRAWARRAYSINSTANCEDEXT(mode, first, count, instancecount) \ convertClientArrays(first + count); \ fn.glDrawArraysInstancedEXT(mode, first, count, instancecount) /* -------------------------------------------------------------------------- */ /* * GL_EXT_draw_range_elements */ #define FN_GLDRAWRANGEELEMENTSEXT(mode, start, end, count, type, indices) \ void *tmp; \ pixelBuffer buf(*this); \ convertClientArrays(count); \ switch(type) { \ case GL_UNSIGNED_BYTE: \ case GL_UNSIGNED_SHORT: \ case GL_UNSIGNED_INT: \ tmp = buf.convertArray(count, type, (nfmemptr)indices); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ fn.glDrawRangeElementsEXT(mode, start, end, count, type, tmp) /* -------------------------------------------------------------------------- */ /* * GL_EXT_fog_coord */ #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLFOGCOORDDVEXT(coord) \ GLdouble tmp[1]; \ Atari2HostDoubleArray(1, coord, tmp); \ fn.glFogCoorddvEXT(tmp) #else #define FN_GLFOGCOORDDVEXT(coord) \ fn.glFogCoorddvEXT(HostAddr(coord, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLFOGCOORDFVEXT(coord) \ GLfloat tmp[1]; \ Atari2HostFloatArray(1, coord, tmp); \ fn.glFogCoordfvEXT(tmp) #else #define FN_GLFOGCOORDFVEXT(coord) \ fn.glFogCoordfvEXT(HostAddr(coord, const GLfloat *)) #endif #define FN_GLFOGCOORDPOINTEREXT(type, stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].fogcoord, 1, type, stride, 0, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].fogcoord.vendor = NFOSMESA_VENDOR_EXT /* -------------------------------------------------------------------------- */ /* * GL_SGIS_fog_function */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLFOGFUNCSGIS(n, points) \ GLfloat tmp[MAX(n, 0) * 2], *ptmp; \ ptmp = Atari2HostFloatArray(n * 2, points, tmp); \ fn.glFogFuncSGIS(n, ptmp) #else #define FN_GLFOGFUNCSGIS(n, points) \ fn.glFogFuncSGIS(n, HostAddr(points, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETFOGFUNCSGIS(points) \ GLint size = 0; \ fn.glGetIntegerv(GL_FOG_FUNC_POINTS_SGIS, &size); \ GLfloat tmp[MAX(size * 2, 0)]; \ fn.glGetFogFuncSGIS(tmp); \ Host2AtariFloatArray(size * 2, tmp, points) #else #define FN_GLGETFOGFUNCSGIS(points) \ fn.glGetFogFuncSGIS(HostAddr(points, GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_SGIX_fragment_lighting */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLFRAGMENTLIGHTFVSGIX(light, pname, params) \ GLfloat tmp[4]; \ int size = nfglGetNumParams(pname); \ Atari2HostFloatArray(size, params, tmp); \ fn.glFragmentLightfvSGIX(light, pname, tmp) #else #define FN_GLFRAGMENTLIGHTFVSGIX(light, pname, params) \ fn.glFragmentLightfvSGIX(light, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLFRAGMENTLIGHTIVSGIX(light, pname, params) \ GLint tmp[4]; \ int const size = nfglGetNumParams(pname); \ Atari2HostIntArray(size, params, tmp); \ fn.glFragmentLightivSGIX(light, pname, tmp) #else #define FN_GLFRAGMENTLIGHTIVSGIX(light, pname, params) \ fn.glFragmentLightivSGIX(light, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLFRAGMENTLIGHTMODELFVSGIX(pname, params) \ GLfloat tmp[4]; \ int const size = nfglGetNumParams(pname); \ Atari2HostFloatArray(size, params, tmp); \ fn.glFragmentLightModelfvSGIX(pname, tmp) #else #define FN_GLFRAGMENTLIGHTMODELFVSGIX(pname, params) \ fn.glFragmentLightModelfvSGIX(pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLFRAGMENTLIGHTMODELIVSGIX(pname, params) \ GLint tmp[4]; \ int const size = nfglGetNumParams(pname); \ Atari2HostIntArray(size, params, tmp); \ fn.glFragmentLightModelivSGIX(pname, tmp) #else #define FN_GLFRAGMENTLIGHTMODELIVSGIX(pname, params) \ fn.glFragmentLightModelivSGIX(pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLFRAGMENTMATERIALFVSGIX(face, pname, params) \ GLfloat tmp[4]; \ int const size = nfglGetNumParams(pname); \ Atari2HostFloatArray(size, params, tmp); \ fn.glFragmentMaterialfvSGIX(face, pname, tmp) #else #define FN_GLFRAGMENTMATERIALFVSGIX(face, pname, params) \ fn.glFragmentMaterialfvSGIX(face, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLFRAGMENTMATERIALIVSGIX(face, pname, params) \ GLint tmp[4]; \ int const size = nfglGetNumParams(pname); \ Atari2HostIntArray(size, params, tmp); \ fn.glFragmentMaterialivSGIX(face, pname, tmp) #else #define FN_GLFRAGMENTMATERIALIVSGIX(face, pname, params) \ fn.glFragmentMaterialivSGIX(face, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETFRAGMENTLIGHTFVSGIX(light, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[size]; \ fn.glGetFragmentLightfvSGIX(light, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETFRAGMENTLIGHTFVSGIX(size, tmp, params) \ fn.glGetFragmentLightfvSGIX(size, tmp, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETFRAGMENTLIGHTIVSGIX(light, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[size]; \ fn.glGetFragmentLightivSGIX(light, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETFRAGMENTLIGHTIVSGIX(size, tmp, params) \ fn.glGetFragmentLightivSGIX(size, tmp, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETFRAGMENTMATERIALFVSGIX(face, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[size]; \ fn.glGetFragmentMaterialfvSGIX(face, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETFRAGMENTMATERIALFVSGIX(face, tmp, params) \ fn.glGetFragmentMaterialfvSGIX(face, tmp, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETFRAGMENTMATERIALIVSGIX(face, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[size]; \ fn.glGetFragmentMaterialivSGIX(face, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETFRAGMENTMATERIALIVSGIX(face, tmp, params) \ fn.glGetFragmentMaterialivSGIX(face, tmp, HostAddr(params, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_coordinate_frame */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLTANGENT3BVEXT(v) \ GLbyte tmp[3]; \ Atari2HostByteArray(3, v, tmp); \ fn.glTangent3bvEXT(tmp) #else #define FN_GLTANGENT3BVEXT(v) \ fn.glTangent3bvEXT(HostAddr(v, const GLbyte *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLTANGENT3DVEXT(v) \ GLdouble tmp[3]; \ Atari2HostDoubleArray(3, v, tmp); \ fn.glTangent3dvEXT(tmp) #else #define FN_GLTANGENT3DVEXT(v) \ fn.glTangent3dvEXT(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTANGENT3FVEXT(v) \ GLfloat tmp[3]; \ Atari2HostFloatArray(3, v, tmp); \ fn.glTangent3fvEXT(tmp) #else #define FN_GLTANGENT3FVEXT(v) \ fn.glTangent3fvEXT(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTANGENT3IVEXT(v) \ GLint tmp[3]; \ Atari2HostIntArray(3, v, tmp); \ fn.glTangent3ivEXT(tmp) #else #define FN_GLTANGENT3IVEXT(v) \ fn.glTangent3ivEXT(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTANGENT3SVEXT(v) \ GLshort tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glTangent3svEXT(tmp) #else #define FN_GLTANGENT3SVEXT(v) \ fn.glTangent3svEXT(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLBINORMAL3BVEXT(v) \ GLbyte tmp[3]; \ Atari2HostByteArray(3, v, tmp); \ fn.glBinormal3bvEXT(tmp) #else #define FN_GLBINORMAL3BVEXT(v) \ fn.glBinormal3bvEXT(HostAddr(v, const GLbyte *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLBINORMAL3DVEXT(v) \ GLdouble tmp[3]; \ Atari2HostDoubleArray(3, v, tmp); \ fn.glBinormal3dvEXT(tmp) #else #define FN_GLBINORMAL3DVEXT(v) \ fn.glBinormal3dvEXT(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLBINORMAL3FVEXT(v) \ GLfloat tmp[3]; \ Atari2HostFloatArray(3, v, tmp); \ fn.glBinormal3fvEXT(tmp) #else #define FN_GLBINORMAL3FVEXT(v) \ fn.glBinormal3fvEXT(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLBINORMAL3IVEXT(v) \ GLint tmp[3]; \ Atari2HostIntArray(3, v, tmp); \ fn.glBinormal3ivEXT(tmp) #else #define FN_GLBINORMAL3IVEXT(v) \ fn.glBinormal3ivEXT(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLBINORMAL3SVEXT(v) \ GLshort tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glBinormal3svEXT(tmp) #else #define FN_GLBINORMAL3SVEXT(v) \ fn.glBinormal3svEXT(HostAddr(v, const GLshort *)) #endif /* glBinormalPointerEXT belongs to never completed EXT_coordinate_frame */ #define FN_GLBINORMALPOINTEREXT(type, stride, pointer) \ fn.glBinormalPointerEXT(type, stride, HostAddr(pointer, const void *)) /* glTangentPointerEXT belongs to never completed EXT_coordinate_frame */ #define FN_GLTANGENTPOINTEREXT(type, stride, pointer) \ fn.glTangentPointerEXT(type, stride, HostAddr(pointer, const void *)) /* -------------------------------------------------------------------------- */ /* * GL_NV_evaluators * * Status: Discontinued. * * NVIDIA no longer supports this extension in driver updates after * November 2002. Instead, use conventional OpenGL evaluators or * tessellate surfaces within your application. */ /* * note that, unlike glMap2(), ustride and vstride here are in terms * of bytes, not floats */ #if NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMAPCONTROLPOINTSNV(target, index, type, ustride, vstride, uorder, vorder, packed, points) \ GLsizei size = 4; \ GLsizei count; \ GLsizei i, j; \ nfcmemptr src; \ char *tmp; \ char *dst; \ nfcmemptr start; \ GLsizei ustride_host, vstride_host; \ switch (target) { \ case GL_EVAL_2D_NV: \ count = uorder * vorder; \ break; \ case GL_EVAL_TRIANGULAR_2D_NV: \ if (uorder != vorder) { glSetError(GL_INVALID_OPERATION); return; } \ count = uorder * (uorder + 1) / 2; \ break; \ default: glSetError(GL_INVALID_ENUM); return; \ } \ switch (type) { \ case GL_FLOAT: \ vstride_host = size * sizeof(GLfloat); \ ustride_host = vorder * vstride_host; \ break; \ case GL_DOUBLE: \ vstride_host = size * sizeof(GLdouble); \ ustride_host = vorder * vstride_host; \ break; \ default: glSetError(GL_INVALID_ENUM); return; \ } \ if (index > 15) { glSetError(GL_INVALID_VALUE); return; } \ if (ustride < 0 || vstride < 0) { glSetError(GL_INVALID_VALUE); return; } \ tmp = (char *)malloc(count * ustride_host); \ if (tmp == NULL) glSetError(GL_OUT_OF_MEMORY); return; \ start = (nfcmemptr) points; \ for (i = 0; i < uorder; i++) { \ for (j = 0; j < vorder; j++) { \ if (!packed) { \ src = start + ustride * i + vstride * j; \ } else if (target == GL_EVAL_2D_NV) { \ src = start + ustride * (j * uorder + i); \ } else { \ src = start + ustride * (j * uorder + i - j * (j - 1) / 2); \ } \ dst = tmp + ustride_host * i + vstride_host * j; \ if (type == GL_FLOAT) \ Atari2HostFloatArray(size, AtariAddr(src, const GLfloat *), (GLfloat *)dst); \ else \ Atari2HostDoubleArray(size, AtariAddr(src, const GLdouble *), (GLdouble *)dst); \ } \ } \ fn.glMapControlPointsNV(target, index, type, ustride_host, vstride_host, uorder, vorder, GL_TRUE, tmp); \ free(tmp) #define FN_GLGETMAPCONTROLPOINTSNV(target, index, type, ustride, vstride, packed, points) \ GLsizei size = 4; \ GLsizei count; \ GLint uorder = 0, vorder = 0; \ GLsizei i, j; \ GLsizei ustride_host, vstride_host; \ const char *src; \ char *tmp; \ nfmemptr dst; \ nfmemptr start; \ fn.glGetMapAttribParameterivNV(target, index, GL_MAP_ATTRIB_U_ORDER_NV, &uorder); \ fn.glGetMapAttribParameterivNV(target, index, GL_MAP_ATTRIB_V_ORDER_NV, &vorder); \ if (uorder <= 0 || vorder <= 0) return; \ switch (target) { \ case GL_EVAL_2D_NV: \ count = uorder * vorder; \ break; \ case GL_EVAL_TRIANGULAR_2D_NV: \ if (uorder != vorder) { glSetError(GL_INVALID_OPERATION); return; } \ count = uorder * (uorder + 1) / 2; \ break; \ default: glSetError(GL_INVALID_ENUM); return; \ } \ switch (type) { \ case GL_FLOAT: \ vstride_host = size * sizeof(GLfloat); \ ustride_host = vorder * vstride_host; \ break; \ case GL_DOUBLE: \ vstride_host = size * sizeof(GLdouble); \ ustride_host = vorder * vstride_host; \ break; \ default: glSetError(GL_INVALID_ENUM); return; \ } \ if (index > 15) { glSetError(GL_INVALID_VALUE); return; } \ if (ustride < 0 || vstride < 0) { glSetError(GL_INVALID_VALUE); return; } \ tmp = (char *)malloc(count * ustride_host); \ if (tmp == NULL) glSetError(GL_OUT_OF_MEMORY); return; \ fn.glGetMapControlPointsNV(target, index, type, ustride_host, vstride_host, GL_TRUE, tmp); \ start = (nfmemptr)points; \ for (i = 0; i < uorder; i++) { \ for (j = 0; j < vorder; j++) { \ if (!packed) { \ dst = start + ustride * i + vstride * j; \ } else if (target == GL_EVAL_2D_NV) { \ dst = start + ustride * (j * uorder + i); \ } else { \ dst = start + ustride * (j * uorder + i - j * (j - 1) / 2); \ } \ src = tmp + ustride_host * i + vstride_host * j; \ if (type == GL_FLOAT) \ Host2AtariFloatArray(size, (const GLfloat *)src, AtariAddr(dst, GLfloat *)); \ else \ Host2AtariDoubleArray(size, (const GLdouble *)src, AtariAddr(dst, GLdouble *)); \ } \ } \ free(tmp) #else #define FN_GLMAPCONTROLPOINTSNV(target, index, type, ustride, vstride, uorder, vorder, packed, points) \ fn.glMapControlPointsNV(target, index, type, ustride, vstride, uorder, vorder, packed, HostAddr(points, const void *)) #define FN_GLGETMAPCONTROLPOINTSNV(target, index, type, ustride, vstride, packed, points) \ fn.glGetMapControlPointsNV(target, index, type, ustride, vstride, packed, HostAddr(points, void *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMAPPARAMETERFVNV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glMapParameterfvNV(target, pname, ptmp) #define FN_GLGETMAPPARAMETERFVNV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetMapParameterfvNV(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #define FN_GLMAPATTRIBPARAMETERFVNV(target, index, pname, params) \ GLint const size = 1; \ GLfloat tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glMapAttribParameterfvNV(target, index, pname, ptmp) #define FN_GLGETMAPATTRIBPARAMETERFVNV(target, index, pname, params) \ GLint const size = 1; \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetMapAttribParameterfvNV(target, index, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLMAPPARAMETERFVNV(target, pname, params) \ fn.glMapParameterfvNV(target, pname, HostAddr(params, const GLfloat *)) #define FN_GLGETMAPPARAMETERFVNV(target, pname, params) \ fn.glGetMapParameterfvNV(target, pname, HostAddr(params, GLfloat *)) #define FN_GLMAPATTRIBPARAMETERFVNV(target, index, pname, params) \ fn.glMapAttribParameterfvNV(target, index, pname, HostAddr(params, const GLfloat *)) #define FN_GLGETMAPATTRIBPARAMETERFVNV(target, index, pname, params) \ fn.glGetMapAttribParameterfvNV(target, index, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMAPPARAMETERIVNV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glMapParameterivNV(target, pname, ptmp) #define FN_GLGETMAPPARAMETERIVNV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetMapParameterivNV(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #define FN_GLMAPATTRIBPARAMETERIVNV(target, index, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glMapAttribParameterivNV(target, index, pname, ptmp) #define FN_GLGETMAPATTRIBPARAMETERIVNV(target, index, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetMapAttribParameterivNV(target, index, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLMAPPARAMETERIVNV(target, pname, params) \ fn.glMapParameterivNV(target, pname, HostAddr(params, const GLint *)) #define FN_GLGETMAPPARAMETERIVNV(target, pname, params) \ fn.glGetMapParameterivNV(target, pname, HostAddr(params, GLint *)) #define FN_GLMAPATTRIBPARAMETERIVNV(target, index, pname, params) \ fn.glMapAttribParameterivNV(target, index, pname, HostAddr(params, const GLint *)) #define FN_GLGETMAPATTRIBPARAMETERIVNV(target, index, pname, params) \ fn.glGetMapAttribParameterivNV(target, index, pname, HostAddr(params, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_explicit_multisample */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETMULTISAMPLEFVNV(pname, index, val) \ GLint const size = 2; \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetMultisamplefvNV(pname, index, tmp); \ Host2AtariFloatArray(size, tmp, val) #else #define FN_GLGETMULTISAMPLEFVNV(pname, index, val) \ fn.glGetMultisamplefvNV(pname, index, HostAddr(val, GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_INTEL_performance_query */ #if NFOSMESA_NEED_INT_CONV #define FN_GLCREATEPERFQUERYINTEL(queryId, queryHandle) \ GLuint tmp[1]; \ fn.glCreatePerfQueryINTEL(queryId, tmp); \ Host2AtariIntArray(1, tmp, queryHandle) #else #define FN_GLCREATEPERFQUERYINTEL(queryId, queryHandle) \ fn.glCreatePerfQueryINTEL(queryId, HostAddr(queryHandle, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETFIRSTPERFQUERYIDINTEL(queryId) \ int const size = 1; \ GLuint tmp[size]; \ fn.glGetFirstPerfQueryIdINTEL(tmp); \ Host2AtariIntArray(size, tmp, queryId) #else #define FN_GLGETFIRSTPERFQUERYIDINTEL(queryId) \ fn.glGetFirstPerfQueryIdINTEL(HostAddr(queryId, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNEXTPERFQUERYIDINTEL(queryId, nextQueryId) \ GLuint tmp[1]; \ fn.glGetNextPerfQueryIdINTEL(queryId, tmp); \ Host2AtariIntArray(1, tmp, nextQueryId) #else #define FN_GLGETNEXTPERFQUERYIDINTEL(queryId, nextQueryId) \ fn.glGetNextPerfQueryIdINTEL(queryId, HostAddr(nextQueryId, GLuint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETPERFCOUNTERINFOINTEL(queryId, counterId, counterNameLength, counterName, counterDescLength, counterDesc, counterOffset, counterDataSize, counterTypeEnum, counterDataTypeEnum, rawCounterMaxValue) \ GLint const size = 1;\ GLuint offset[size]; \ GLuint datasize[size]; \ GLuint countertype[size]; \ GLuint datatype[size]; \ GLuint64 countermax[size]; \ GLchar namebuf[MAX(counterNameLength, 0)]; \ GLchar descbuf[MAX(counterDescLength, 0)]; \ fn.glGetPerfCounterInfoINTEL(queryId, counterId, counterNameLength, namebuf, counterDescLength, descbuf, offset, datasize, countertype, datatype, countermax); \ Host2AtariByteArray(sizeof(namebuf), namebuf, counterName); \ Host2AtariByteArray(sizeof(descbuf), descbuf, counterDesc); \ Host2AtariIntArray(size, offset, counterOffset); \ Host2AtariIntArray(size, datasize, counterDataSize); \ Host2AtariIntArray(size, countertype, counterTypeEnum); \ Host2AtariIntArray(size, datatype, counterDataTypeEnum); \ Host2AtariInt64Array(size, countermax, rawCounterMaxValue) #else #define FN_GLGETPERFCOUNTERINFOINTEL(queryId, counterId, counterNameLength, counterName, counterDescLength, counterDesc, counterOffset, counterDataSize, counterTypeEnum, counterDataTypeEnum, rawCounterMaxValue) \ fn.glGetPerfCounterInfoINTEL(queryId, counterId, counterNameLength, HostAddr(counterName, GLchar *), counterDescLength, HostAddr(counterDesc, GLchar *), HostAddr(counterOffset, GLuint *), HostAddr(counterDataSize, GLuint *), HostAddr(counterTypeEnum, GLuint *), HostAddr(counterDataTypeEnum, GLuint *), HostAddr(rawCounterMaxValue, GLuint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPERFQUERYDATAINTEL(queryHandle, flags, dataSize, data, bytesWritten) \ GLuint bytes = 0;\ GLuint tmp[MAX(dataSize / sizeof(Uint32), 0)]; \ fn.glGetPerfQueryDataINTEL(queryHandle, flags, dataSize, tmp, &bytes); \ Host2AtariIntArray(1, &bytes, bytesWritten); \ Host2AtariIntArray(bytes / sizeof(GLuint), tmp, AtariAddr(data, Uint32 *)) #else #define FN_GLGETPERFQUERYDATAINTEL(queryHandle, flags, dataSize, data, bytesWritten) \ fn.glGetPerfQueryDataINTEL(queryHandle, flags, dataSize, HostAddr(data, void *), HostAddr(bytesWritten, GLuint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETPERFQUERYIDBYNAMEINTEL(queryName, queryId) \ GLint const size = 1;\ GLuint tmp[size]; \ GLchar namebuf[safe_strlen(queryName) + 1], *pname; \ pname = Atari2HostByteArray(sizeof(namebuf), queryName, namebuf); \ fn.glGetPerfQueryIdByNameINTEL(pname, tmp); \ Host2AtariIntArray(size, tmp, queryId) #else #define FN_GLGETPERFQUERYIDBYNAMEINTEL(queryName, queryId) \ fn.glGetPerfQueryIdByNameINTEL(HostAddr(queryName, GLchar *), HostAddr(queryId, GLuint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETPERFQUERYINFOINTEL(queryId, queryNameLength, queryName, dataSize, noCounters, noInstances, capsMask) \ GLint const size = 1;\ GLuint datasize[size]; \ GLuint counters[size]; \ GLuint instances[size]; \ GLuint mask[size]; \ GLchar namebuf[MAX(queryNameLength, 0)]; \ fn.glGetPerfQueryInfoINTEL(queryId, queryNameLength, namebuf, datasize, counters, instances, mask); \ Host2AtariByteArray(sizeof(namebuf), namebuf, queryName); \ Host2AtariIntArray(size, datasize, dataSize); \ Host2AtariIntArray(size, counters, noCounters); \ Host2AtariIntArray(size, instances, noInstances); \ Host2AtariIntArray(size, mask, capsMask) #else #define FN_GLGETPERFQUERYINFOINTEL(queryId, queryNameLength, queryName, dataSize, noCounters, noInstances, capsMask) \ fn.glGetPerfQueryInfoINTEL(queryId, queryNameLength, HostAddr(queryName, GLchar *), HostAddr(dataSize, GLuint *), HostAddr(noCounters, GLuint *), HostAddr(noInstances, GLuint *), HostAddr(capsMask, GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_direct_state_access */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETFLOATINDEXEDVEXT(pname, index, params) \ int n = nfglGetNumParams(pname); \ GLfloat tmp[MAX(n, 16)]; \ fn.glGetFloatIndexedvEXT(pname, index, tmp); \ Host2AtariFloatArray(n, tmp, params) #else #define FN_GLGETFLOATINDEXEDVEXT(pname, index, params) \ fn.glGetFloatIndexedvEXT(pname, index, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETDOUBLEINDEXEDVEXT(pname, index, params) \ int n; \ n = nfglGetNumParams(pname); \ if (n > 16) { \ GLdouble *tmp; \ tmp = (GLdouble *)malloc(n * sizeof(*tmp)); \ fn.glGetDoubleIndexedvEXT(pname, index, tmp); \ Host2AtariDoubleArray(n, tmp, params); \ free(tmp); \ } else { \ GLdouble tmp[16]; \ fn.glGetDoubleIndexedvEXT(pname, index, tmp); \ Host2AtariDoubleArray(n, tmp, params); \ } #else #define FN_GLGETDOUBLEINDEXEDVEXT(pname, index, params) \ fn.glGetDoubleIndexedvEXT(pname, index, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETBOOLEANINDEXEDVEXT(target, index, data) \ GLint const size = nfglGetNumParams(target); \ GLboolean tmp[MAX(size, 16)]; \ fn.glGetBooleanIndexedvEXT(target, index, tmp); \ Host2AtariByteArray(size, tmp, data) #else #define FN_GLGETBOOLEANINDEXEDVEXT(target, index, data) \ fn.glGetBooleanIndexedvEXT(target, index, HostAddr(data, GLboolean *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETINTEGERINDEXEDVEXT(target, index, data) \ GLint const size = nfglGetNumParams(target); \ GLint tmp[MAX(size, 16)]; \ fn.glGetIntegerIndexedvEXT(target, index, tmp); \ Host2AtariIntArray(size, tmp, data) #else #define FN_GLGETINTEGERINDEXEDVEXT(target, index, data) \ fn.glGetIntegerIndexedvEXT(target, index, HostAddr(data, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETCOMPRESSEDMULTITEXIMAGEEXT(texunit, target, lod, img) \ GLint bufSize = 0; \ fn.glGetMultiTexLevelParameterivEXT(texunit, target, lod, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &bufSize); \ GLubyte tmp[bufSize]; \ fn.glGetCompressedMultiTexImageEXT(texunit, target, lod, tmp); \ Host2AtariByteArray(bufSize, tmp, img) #else #define FN_GLGETCOMPRESSEDMULTITEXIMAGEEXT(texunit, target, lod, img) \ fn.glGetCompressedMultiTexImageEXT(texunit, target, lod, HostAddr(img, void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETCOMPRESSEDTEXTUREIMAGEEXT(texture, target, lod, img) \ GLint bufSize = 0; \ fn.glGetTextureLevelParameterivEXT(texture, target, lod, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &bufSize); \ GLubyte tmp[bufSize]; \ fn.glGetCompressedTextureImageEXT(texture, target, lod, tmp); \ Host2AtariByteArray(bufSize, tmp, img) #else #define FN_GLGETCOMPRESSEDTEXTUREIMAGEEXT(texture, target, lod, img) \ fn.glGetCompressedTextureImageEXT(texture, target, lod, HostAddr(img, void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDMULTITEXIMAGE1DEXT(texunit, target, level, internalformat, width, border, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedMultiTexImage1DEXT(texunit, target, level, internalformat, width, border, imageSize, ptmp) #else #define FN_GLCOMPRESSEDMULTITEXIMAGE1DEXT(texunit, target, level, internalformat, width, border, imageSize, bits) \ fn.glCompressedMultiTexImage1DEXT(texunit, target, level, internalformat, width, border, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDMULTITEXIMAGE2DEXT(texunit, target, level, internalformat, width, height, border, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedMultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, imageSize, ptmp) #else #define FN_GLCOMPRESSEDMULTITEXIMAGE2DEXT(texunit, target, level, internalformat, width, height, border, imageSize, bits) \ fn.glCompressedMultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDMULTITEXIMAGE3DEXT(texunit, target, level, internalformat, width, height, depth, border, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedMultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, imageSize, ptmp) #else #define FN_GLCOMPRESSEDMULTITEXIMAGE3DEXT(texunit, target, level, internalformat, width, height, depth, border, imageSize, bits) \ fn.glCompressedMultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDMULTITEXSUBIMAGE1DEXT(texunit, target, level, xoffset, width, format, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedMultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDMULTITEXSUBIMAGE1DEXT(texunit, target, level, xoffset, width, format, imageSize, bits) \ fn.glCompressedMultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDMULTITEXSUBIMAGE2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDMULTITEXSUBIMAGE2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, imageSize, bits) \ fn.glCompressedMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDMULTITEXSUBIMAGE3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDMULTITEXSUBIMAGE3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits) \ fn.glCompressedMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXTUREIMAGE1DEXT(texture, target, level, internalformat, width, border, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedTextureImage1DEXT(texture, target, level, internalformat, width, border, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXTUREIMAGE1DEXT(texture, target, level, internalformat, width, border, imageSize, bits) \ fn.glCompressedTextureImage1DEXT(texture, target, level, internalformat, width, border, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXTUREIMAGE2DEXT(texture, target, level, internalformat, width, height, border, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedTextureImage2DEXT(texture, target, level, internalformat, width, height, border, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXTUREIMAGE2DEXT(texture, target, level, internalformat, width, height, border, imageSize, bits) \ fn.glCompressedTextureImage2DEXT(texture, target, level, internalformat, width, height, border, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXTUREIMAGE3DEXT(texture, target, level, internalformat, width, height, depth, border, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedTextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXTUREIMAGE3DEXT(texture, target, level, internalformat, width, height, depth, border, imageSize, bits) \ fn.glCompressedTextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXTURESUBIMAGE1DEXT(texture, target, level, xoffset, width, format, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedTextureSubImage1DEXT(texture, target, level, xoffset, width, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXTURESUBIMAGE1DEXT(texture, target, level, xoffset, width, format, imageSize, bits) \ fn.glCompressedTextureSubImage1DEXT(texture, target, level, xoffset, width, format, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXTURESUBIMAGE2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXTURESUBIMAGE2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits) \ fn.glCompressedTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXTURESUBIMAGE3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXTURESUBIMAGE3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits) \ fn.glCompressedTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLNAMEDBUFFERDATAEXT(buffer, size, data, usage) \ GLubyte tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glNamedBufferDataEXT(buffer, size, ptmp, usage) #else #define FN_GLNAMEDBUFFERDATAEXT(buffer, size, data, usage) \ fn.glNamedBufferDataEXT(buffer, size, HostAddr(data, const void *), usage) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLNAMEDBUFFERSUBDATAEXT(buffer, offset, size, data) \ GLubyte tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glNamedBufferSubDataEXT(buffer, offset, size, ptmp) #else #define FN_GLNAMEDBUFFERSUBDATAEXT(buffer, offset, size, data) \ fn.glNamedBufferSubDataEXT(buffer, offset, size, HostAddr(data, const void *)) #endif #define FN_GLGETNAMEDBUFFERPOINTERVEXT(buffer, pname, params) \ void *tmp = NULL; \ fn.glGetNamedBufferPointervEXT(buffer, pname, &tmp); \ /* TODO */ \ memptr zero = 0; \ Host2AtariIntArray(1, &zero, AtariAddr(params, memptr *)) #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDBUFFERPARAMETERIVEXT(buffer, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetNamedBufferParameterivEXT(buffer, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNAMEDBUFFERPARAMETERIVEXT(buffer, pname, params) \ fn.glGetNamedBufferParameterivEXT(buffer, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDBUFFERPARAMETERUI64VNV(buffer, pname, params) \ GLint const size = 1; \ GLuint64EXT tmp[MAX(size, 16)]; \ fn.glGetNamedBufferParameterui64vNV(buffer, pname, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETNAMEDBUFFERPARAMETERUI64VNV(buffer, pname, params) \ fn.glGetNamedBufferParameterui64vNV(buffer, pname, HostAddr(params, GLuint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT(framebuffer, attachment, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetNamedFramebufferAttachmentParameterivEXT(framebuffer, attachment, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT(framebuffer, attachment, pname, params) \ fn.glGetNamedFramebufferAttachmentParameterivEXT(framebuffer, attachment, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDFRAMEBUFFERPARAMETERIVEXT(framebuffer, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetNamedFramebufferParameterivEXT(framebuffer, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNAMEDFRAMEBUFFERPARAMETERIVEXT(framebuffer, pname, params) \ fn.glGetNamedFramebufferParameterivEXT(framebuffer, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDRENDERBUFFERPARAMETERIVEXT(renderbuffer, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetNamedRenderbufferParameterivEXT(renderbuffer, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNAMEDRENDERBUFFERPARAMETERIVEXT(renderbuffer, pname, params) \ fn.glGetNamedRenderbufferParameterivEXT(renderbuffer, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETFLOATI_VEXT(pname, index, params) \ int n = nfglGetNumParams(pname); \ GLfloat tmp[n]; \ fn.glGetFloati_vEXT(pname, index, tmp); \ Host2AtariFloatArray(n, tmp, params) #else #define FN_GLGETFLOATI_VEXT(pname, index, params) \ fn.glGetFloati_vEXT(pname, index, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETDOUBLEI_VEXT(pname, index, params) \ int n = nfglGetNumParams(pname); \ GLdouble tmp[MAX(n, 16)]; \ fn.glGetDoublei_vEXT(pname, index, tmp); \ Host2AtariDoubleArray(n, tmp, params) #else #define FN_GLGETDOUBLEI_VEXT(pname, index, params) \ fn.glGetDoublei_vEXT(pname, index, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETMULTITEXENVFVEXT(texunit, target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetMultiTexEnvfvEXT(texunit, target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETMULTITEXENVFVEXT(texunit, target, pname, params) \ fn.glGetMultiTexEnvfvEXT(texunit, target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETMULTITEXENVIVEXT(texunit, target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetMultiTexEnvivEXT(texunit, target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETMULTITEXENVIVEXT(texunit, target, pname, params) \ fn.glGetMultiTexEnvivEXT(texunit, target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETMULTITEXGENDVEXT(texunit, coord, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLdouble tmp[MAX(size, 16)]; \ fn.glGetMultiTexGendvEXT(texunit, coord, pname, tmp); \ Host2AtariDoubleArray(size, tmp, params) #else #define FN_GLGETMULTITEXGENDVEXT(texunit, coord, pname, params) \ fn.glGetMultiTexGendvEXT(texunit, coord, pname, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETMULTITEXGENFVEXT(texunit, coord, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetMultiTexGenfvEXT(texunit, coord, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETMULTITEXGENFVEXT(texunit, coord, pname, params) \ fn.glGetMultiTexGenfvEXT(texunit, coord, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETMULTITEXGENIVEXT(texunit, coord, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetMultiTexGenivEXT(texunit, coord, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETMULTITEXGENIVEXT(texunit, coord, pname, params) \ fn.glGetMultiTexGenivEXT(texunit, coord, pname, HostAddr(params, GLint *)) #endif #define FN_GLGETMULTITEXIMAGEEXT(texunit, target, level, format, type, pixels) \ GLint width = 0, height = 1, depth = 1; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ switch (target) { \ case GL_TEXTURE_1D: \ case GL_PROXY_TEXTURE_1D: \ fn.glGetMultiTexLevelParameterivEXT(texunit, target, level, GL_TEXTURE_WIDTH, &width); \ break; \ case GL_TEXTURE_2D: \ case GL_PROXY_TEXTURE_2D: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_X: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: \ case GL_PROXY_TEXTURE_CUBE_MAP: \ fn.glGetMultiTexLevelParameterivEXT(texunit, target, level, GL_TEXTURE_WIDTH, &width); \ fn.glGetMultiTexLevelParameterivEXT(texunit, target, level, GL_TEXTURE_HEIGHT, &height); \ break; \ case GL_TEXTURE_3D: \ case GL_PROXY_TEXTURE_3D: \ fn.glGetMultiTexLevelParameterivEXT(texunit, target, level, GL_TEXTURE_WIDTH, &width); \ fn.glGetMultiTexLevelParameterivEXT(texunit, target, level, GL_TEXTURE_HEIGHT, &height); \ fn.glGetMultiTexLevelParameterivEXT(texunit, target, level, GL_TEXTURE_DEPTH, &depth); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(pixels); \ fn.glGetMultiTexImageEXT(texunit, target, level, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(width, height, depth, format, type)) return; \ } else { \ src = buf.hostBuffer(width, height, depth, format, type, (nfmemptr)pixels); \ if (src == NULL) return; \ fn.glGetMultiTexImageEXT(texunit, target, level, format, type, src); \ dst = (nfmemptr)pixels; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETMULTITEXLEVELPARAMETERFVEXT(texunit, target, level, pname, params) \ GLint const size = 1; \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetMultiTexLevelParameterfvEXT(texunit, target, level, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETMULTITEXLEVELPARAMETERFVEXT(texunit, target, level, pname, params) \ fn.glGetMultiTexLevelParameterfvEXT(texunit, target, level, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETMULTITEXLEVELPARAMETERIVEXT(texunit, target, level, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetMultiTexLevelParameterivEXT(texunit, target, level, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETMULTITEXLEVELPARAMETERIVEXT(texunit, target, level, pname, params) \ fn.glGetMultiTexLevelParameterivEXT(texunit, target, level, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETMULTITEXPARAMETERIIVEXT(texunit, target, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetMultiTexParameterIivEXT(texunit, target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETMULTITEXPARAMETERIIVEXT(texunit, target, pname, params) \ fn.glGetMultiTexParameterIivEXT(texunit, target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETMULTITEXPARAMETERIUIVEXT(texunit, target, pname, params) \ GLint const size = 1; \ GLuint tmp[MAX(size, 16)]; \ fn.glGetMultiTexParameterIuivEXT(texunit, target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETMULTITEXPARAMETERIUIVEXT(texunit, target, pname, params) \ fn.glGetMultiTexParameterIuivEXT(texunit, target, pname, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETMULTITEXPARAMETERFVEXT(texunit, target, pname, params) \ GLint const size = 1; \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetMultiTexParameterfvEXT(texunit, target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETMULTITEXPARAMETERFVEXT(texunit, target, pname, params) \ fn.glGetMultiTexParameterfvEXT(texunit, target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETMULTITEXPARAMETERIVEXT(texunit, target, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetMultiTexParameterivEXT(texunit, target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETMULTITEXPARAMETERIVEXT(texunit, target, pname, params) \ fn.glGetMultiTexParameterivEXT(texunit, target, pname, HostAddr(params, GLint *)) #endif #define FN_GLMULTITEXCOORDPOINTEREXT(texunit, size, type, stride, pointer) \ setupClientArray(texunit, contexts[cur_context].texcoord, size, type, stride, -1, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].texcoord.vendor = NFOSMESA_VENDOR_EXT #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTITEXENVFVEXT(texunit, target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ Atari2HostFloatArray(size, params, tmp); \ fn.glMultiTexEnvfvEXT(texunit, target, pname, tmp) #else #define FN_GLMULTITEXENVFVEXT(texunit, target, pname, params) \ fn.glMultiTexEnvfvEXT(texunit, target, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXENVIVEXT(texunit, target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glMultiTexEnvivEXT(texunit, target, pname, tmp) #else #define FN_GLMULTITEXENVIVEXT(texunit, target, pname, params) \ fn.glMultiTexEnvivEXT(texunit, target, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMULTITEXGENDVEXT(texunit, coord, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLdouble tmp[MAX(size, 16)]; \ Atari2HostDoubleArray(size, params, tmp); \ fn.glMultiTexGendvEXT(texunit, coord, pname, tmp) #else #define FN_GLMULTITEXGENDVEXT(texunit, coord, pname, params) \ fn.glMultiTexGendvEXT(texunit, coord, pname, HostAddr(params, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTITEXGENFVEXT(texunit, coord, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ Atari2HostFloatArray(size, params, tmp); \ fn.glMultiTexGenfvEXT(texunit, coord, pname, tmp) #else #define FN_GLMULTITEXGENFVEXT(texunit, coord, pname, params) \ fn.glMultiTexGenfvEXT(texunit, coord, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXGENIVEXT(texunit, coord, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glMultiTexGenivEXT(texunit, coord, pname, tmp) #else #define FN_GLMULTITEXGENIVEXT(texunit, coord, pname, params) \ fn.glMultiTexGenivEXT(texunit, coord, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTITEXPARAMETERFVEXT(texunit, target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ Atari2HostFloatArray(size, params, tmp); \ fn.glMultiTexParameterfvEXT(texunit, target, pname, tmp) #else #define FN_GLMULTITEXPARAMETERFVEXT(texunit, target, pname, params) \ fn.glMultiTexParameterfvEXT(texunit, target, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXPARAMETERIVEXT(texunit, target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glMultiTexParameterivEXT(texunit, target, pname, tmp) #else #define FN_GLMULTITEXPARAMETERIVEXT(texunit, target, pname, params) \ fn.glMultiTexParameterivEXT(texunit, target, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXPARAMETERIIVEXT(texunit, target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glMultiTexParameterIivEXT(texunit, target, pname, tmp) #else #define FN_GLMULTITEXPARAMETERIIVEXT(texunit, target, pname, params) \ fn.glMultiTexParameterIivEXT(texunit, target, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXPARAMETERIUIVEXT(texunit, target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLuint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glMultiTexParameterIuivEXT(texunit, target, pname, tmp) #else #define FN_GLMULTITEXPARAMETERIUIVEXT(texunit, target, pname, params) \ fn.glMultiTexParameterIuivEXT(texunit, target, pname, HostAddr(params, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXTUREPARAMETERIIVEXT(texunit, target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glTextureParameterIivEXT(texunit, target, pname, tmp) #else #define FN_GLTEXTUREPARAMETERIIVEXT(texunit, target, pname, params) \ fn.glTextureParameterIivEXT(texunit, target, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXTUREPARAMETERIUIVEXT(texunit, target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLuint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glTextureParameterIuivEXT(texunit, target, pname, tmp) #else #define FN_GLTEXTUREPARAMETERIUIVEXT(texunit, target, pname, params) \ fn.glTextureParameterIuivEXT(texunit, target, pname, HostAddr(params, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXTUREPARAMETERIIVEXT(texunit, target, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetTextureParameterIivEXT(texunit, target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXTUREPARAMETERIIVEXT(texunit, target, pname, params) \ fn.glGetTextureParameterIivEXT(texunit, target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXTUREPARAMETERIVEXT(texture, target, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetTextureParameterivEXT(texture, target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXTUREPARAMETERIVEXT(texture, target, pname, params) \ fn.glGetTextureParameterivEXT(texture, target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXTUREIMAGE1DEXT(texture, target, level, internalformat, width, border, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, 1, 1, format, type, (nfmemptr)pixels); \ fn.glTextureImage1DEXT(texture, target, level, internalformat, width, border, format, type, tmp) #else #define FN_GLTEXTUREIMAGE1DEXT(texture, target, level, internalformat, width, border, format, type, pixels) \ fn.glTextureImage1DEXT(texture, target, level, internalformat, width, border, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXTUREIMAGE2DEXT(texture, target, level, internalformat, width, height, border, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, 1, format, type, (nfmemptr)pixels); \ fn.glTextureImage2DEXT(texture, target, level, internalformat, width, height, border, format, type, tmp) #else #define FN_GLTEXTUREIMAGE2DEXT(texture, target, level, internalformat, width, height, border, format, type, pixels) \ fn.glTextureImage2DEXT(texture, target, level, internalformat, width, height, border, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXTUREIMAGE3DEXT(texture, target, level, internalformat, width, height, depth, border, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, depth, format, type, (nfmemptr)pixels); \ fn.glTextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, format, type, tmp) #else #define FN_GLTEXTUREIMAGE3DEXT(texture, target, level, internalformat, width, height, depth, border, format, type, pixels) \ fn.glTextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXTURESUBIMAGE1DEXT(texture, target, level, xoffset, width, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, 1, 1, format, type, (nfmemptr)pixels); \ fn.glTextureSubImage1DEXT(texture, target, level, xoffset, width, format, type, tmp) #else #define FN_GLTEXTURESUBIMAGE1DEXT(texture, target, level, xoffset, width, format, type, pixels) \ fn.glTextureSubImage1DEXT(texture, target, level, xoffset, width, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXTURESUBIMAGE2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, 1, format, type, (nfmemptr)pixels); \ fn.glTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, tmp) #else #define FN_GLTEXTURESUBIMAGE2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, pixels) \ fn.glTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXTURESUBIMAGE3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, depth, format, type, (nfmemptr)pixels); \ fn.glTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, tmp) #else #define FN_GLTEXTURESUBIMAGE3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) \ fn.glTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETTEXTUREPARAMETERFVEXT(texture, target, pname, params) \ GLint const size = 1; \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetTextureParameterfvEXT(texture, target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETTEXTUREPARAMETERFVEXT(texture, target, pname, params) \ fn.glGetTextureParameterfvEXT(texture, target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXTUREPARAMETERFVEXT(texture, target, pname, params) \ GLint const size = 1; \ GLfloat tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glTextureParameterfvEXT(texture, target, pname, ptmp) #else #define FN_GLTEXTUREPARAMETERFVEXT(texture, target, pname, params) \ fn.glTextureParameterfvEXT(texture, target, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXTURELEVELPARAMETERIVEXT(texture, target, level, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetTextureLevelParameterivEXT(texture, target, level, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXTURELEVELPARAMETERIVEXT(texture, target, level, pname, params) \ fn.glGetTextureLevelParameterivEXT(texture, target, level, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETTEXTURELEVELPARAMETERFVEXT(texture, target, level, pname, params) \ GLint const size = 1; \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetTextureLevelParameterfvEXT(texture, target, level, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETTEXTURELEVELPARAMETERFVEXT(texture, target, level, pname, params) \ fn.glGetTextureLevelParameterfvEXT(texture, target, level, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXTUREPARAMETERIUIVEXT(texunit, target, pname, params) \ GLint const size = 1; \ GLuint tmp[MAX(size, 16)]; \ fn.glGetTextureParameterIuivEXT(texunit, target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXTUREPARAMETERIUIVEXT(texunit, target, pname, params) \ fn.glGetTextureParameterIuivEXT(texunit, target, pname, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXTUREPARAMETERIVEXT(texture, target, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glTextureParameterivEXT(texture, target, pname, ptmp) #else #define FN_GLTEXTUREPARAMETERIVEXT(texture, target, pname, params) \ fn.glTextureParameterivEXT(texture, target, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTITEXIMAGE1DEXT(texunit, target, level, internalformat, width, border, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, 1, 1, format, type, (nfmemptr)pixels); \ fn.glMultiTexImage1DEXT(texunit, target, level, internalformat, width, border, format, type, tmp) #else #define FN_GLMULTITEXIMAGE1DEXT(texunit, target, level, internalformat, width, border, format, type, pixels) \ fn.glMultiTexImage1DEXT(texunit, target, level, internalformat, width, border, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTITEXIMAGE2DEXT(texunit, target, level, internalformat, width, height, border, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, 1, format, type, (nfmemptr)pixels); \ fn.glMultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, format, type, tmp) #else #define FN_GLMULTITEXIMAGE2DEXT(texunit, target, level, internalformat, width, height, border, format, type, pixels) \ fn.glMultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTITEXIMAGE3DEXT(texunit, target, level, internalformat, width, height, depth, border, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, 1, format, type, (nfmemptr)pixels); \ fn.glMultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, format, type, tmp) #else #define FN_GLMULTITEXIMAGE3DEXT(texunit, target, level, internalformat, width, height, depth, border, format, type, pixels) \ fn.glMultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, format, type, HostAddr(pixels, const void *)) #endif #define FN_GLGETPOINTERINDEXEDVEXT(target, index, data) \ gl_get_pointer(target, index, HostAddr(data, void **)) #define FN_GLGETPOINTERI_VEXT(target, index, data) \ gl_get_pointer(target, index, HostAddr(data, void **)) #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMATRIXLOADTRANSPOSEDEXT(mode, m) \ GLint const size = 16; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, m, tmp); \ fn.glMatrixLoadTransposedEXT(mode, tmp) #else #define FN_GLMATRIXLOADTRANSPOSEDEXT(mode, m) \ fn.glMatrixLoadTransposedEXT(mode, HostAddr(m, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMATRIXLOADTRANSPOSEFEXT(mode, m) \ GLint const size = 16; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, m, tmp); \ fn.glMatrixLoadTransposefEXT(mode, tmp) #else #define FN_GLMATRIXLOADTRANSPOSEFEXT(mode, m) \ fn.glMatrixLoadTransposefEXT(mode, HostAddr(m, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMATRIXMULTTRANSPOSEDEXT(mode, m) \ GLint const size = 16; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, m, tmp); \ fn.glMatrixMultTransposedEXT(mode, tmp) #else #define FN_GLMATRIXMULTTRANSPOSEDEXT(mode, m) \ fn.glMatrixMultTransposedEXT(mode, HostAddr(m, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMATRIXMULTTRANSPOSEFEXT(mode, m) \ GLint const size = 16; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, m, tmp); \ fn.glMatrixMultTransposefEXT(mode, tmp) #else #define FN_GLMATRIXMULTTRANSPOSEFEXT(mode, m) \ fn.glMatrixMultTransposefEXT(mode, HostAddr(m, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMATRIXLOADDEXT(mode, m) \ GLint const size = 16; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, m, tmp); \ fn.glMatrixLoaddEXT(mode, tmp) #else #define FN_GLMATRIXLOADDEXT(mode, m) \ fn.glMatrixLoaddEXT(mode, HostAddr(m, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMATRIXLOADFEXT(mode, m) \ GLint const size = 16; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, m, tmp); \ fn.glMatrixLoadfEXT(mode, tmp) #else #define FN_GLMATRIXLOADFEXT(mode, m) \ fn.glMatrixLoadfEXT(mode, HostAddr(m, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMATRIXMULTDEXT(mode, m) \ GLint const size = 16; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, m, tmp); \ fn.glMatrixMultdEXT(mode, tmp) #else #define FN_GLMATRIXMULTDEXT(mode, m) \ fn.glMatrixMultdEXT(mode, HostAddr(m, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMATRIXMULTFEXT(mode, m) \ GLint const size = 16; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, m, tmp); \ fn.glMatrixMultfEXT(mode, tmp) #else #define FN_GLMATRIXMULTFEXT(mode, m) \ fn.glMatrixMultfEXT(mode, HostAddr(m, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORM1FVEXT(program, location, count, value) \ GLint const size = 1 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniform1fvEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM1FVEXT(program, location, count, value) \ fn.glProgramUniform1fvEXT(program, location, count, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORM2FVEXT(program, location, count, value) \ GLint const size = 2 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniform2fvEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM2FVEXT(program, location, count, value) \ fn.glProgramUniform2fvEXT(program, location, count, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORM3FVEXT(program, location, count, value) \ GLint const size = 3 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniform3fvEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM3FVEXT(program, location, count, value) \ fn.glProgramUniform3fvEXT(program, location, count, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORM4FVEXT(program, location, count, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniform4fvEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM4FVEXT(program, location, count, value) \ fn.glProgramUniform4fvEXT(program, location, count, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM1IVEXT(program, location, count, value) \ GLint const size = 1 * count; \ if (size <= 0) return; \ GLint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform1ivEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM1IVEXT(program, location, count, value) \ fn.glProgramUniform1ivEXT(program, location, count, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM2IVEXT(program, location, count, value) \ GLint const size = 2 * count; \ if (size <= 0) return; \ GLint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform2ivEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM2IVEXT(program, location, count, value) \ fn.glProgramUniform2ivEXT(program, location, count, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM3IVEXT(program, location, count, value) \ GLint const size = 3 * count; \ if (size <= 0) return; \ GLint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform3ivEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM3IVEXT(program, location, count, value) \ fn.glProgramUniform3ivEXT(program, location, count, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM4IVEXT(program, location, count, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform4ivEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM4IVEXT(program, location, count, value) \ fn.glProgramUniform4ivEXT(program, location, count, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM1UIVEXT(program, location, count, value) \ GLint const size = 1 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform1uivEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM1UIVEXT(program, location, count, value) \ fn.glProgramUniform1uivEXT(program, location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM2UIVEXT(program, location, count, value) \ GLint const size = 2 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform2uivEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM2UIVEXT(program, location, count, value) \ fn.glProgramUniform2uivEXT(program, location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM3UIVEXT(program, location, count, value) \ GLint const size = 3 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform3uivEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM3UIVEXT(program, location, count, value) \ fn.glProgramUniform3uivEXT(program, location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM4UIVEXT(program, location, count, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform4uivEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM4UIVEXT(program, location, count, value) \ fn.glProgramUniform4uivEXT(program, location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORM1DVEXT(program, location, count, value) \ GLint const size = 1 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniform1dvEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM1DVEXT(program, location, count, value) \ fn.glProgramUniform1dvEXT(program, location, count, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORM2DVEXT(program, location, count, value) \ GLint const size = 2 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniform2dvEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM2DVEXT(program, location, count, value) \ fn.glProgramUniform2dvEXT(program, location, count, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORM3DVEXT(program, location, count, value) \ GLint const size = 3 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniform3dvEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM3DVEXT(program, location, count, value) \ fn.glProgramUniform3dvEXT(program, location, count, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORM4DVEXT(program, location, count, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniform4dvEXT(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM4DVEXT(program, location, count, value) \ fn.glProgramUniform4dvEXT(program, location, count, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX2FVEXT(program, location, count, transpose, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix2fvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX2FVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix2fvEXT(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX3FVEXT(program, location, count, transpose, value) \ GLint const size = 9 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix3fvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX3FVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix3fvEXT(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX4FVEXT(program, location, count, transpose, value) \ GLint const size = 16 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix4fvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX4FVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix4fvEXT(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX2X3FVEXT(program, location, count, transpose, value) \ GLint const size = 6 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix2x3fvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX2X3FVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix2x3fvEXT(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX3X2FVEXT(program, location, count, transpose, value) \ GLint const size = 6 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix3x2fvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX3X2FVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix3x2fvEXT(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX2X4FVEXT(program, location, count, transpose, value) \ GLint const size = 8 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix2x4fvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX2X4FVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix2x4fvEXT(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX4X2FVEXT(program, location, count, transpose, value) \ GLint const size = 8 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix4x2fvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX4X2FVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix4x2fvEXT(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX3X4FVEXT(program, location, count, transpose, value) \ GLint const size = 12 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix3x4fvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX3X4FVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix3x4fvEXT(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX4X3FVEXT(program, location, count, transpose, value) \ GLint const size = 12 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix4x3fvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX4X3FVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix4x3fvEXT(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX2DVEXT(program, location, count, transpose, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix2dvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX2DVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix2dvEXT(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX3DVEXT(program, location, count, transpose, value) \ GLint const size = 9 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix3dvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX3DVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix3dvEXT(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX4DVEXT(program, location, count, transpose, value) \ GLint const size = 16 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix4dvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX4DVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix4dvEXT(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX2X3DVEXT(program, location, count, transpose, value) \ GLint const size = 6 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix2x3dvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX2X3DVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix2x3dvEXT(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX3X2DVEXT(program, location, count, transpose, value) \ GLint const size = 6 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix3x2dvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX3X2DVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix3x2dvEXT(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX2X4DVEXT(program, location, count, transpose, value) \ GLint const size = 8 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix2x4dvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX2X4DVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix2x4dvEXT(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX4X2DVEXT(program, location, count, transpose, value) \ GLint const size = 8 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix4x2dvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX4X2DVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix4x2dvEXT(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX3X4DVEXT(program, location, count, transpose, value) \ GLint const size = 12 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix3x4dvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX3X4DVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix3x4dvEXT(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX4X3DVEXT(program, location, count, transpose, value) \ GLint const size = 12 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix4x3dvEXT(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX4X3DVEXT(program, location, count, transpose, value) \ fn.glProgramUniformMatrix4x3dvEXT(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLNAMEDPROGRAMLOCALPARAMETERS4FVEXT(program, target, index, count, params) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, params, tmp); \ fn.glNamedProgramLocalParameters4fvEXT(program, target, index, count, tmp) #else #define FN_GLNAMEDPROGRAMLOCALPARAMETERS4FVEXT(program, target, index, count, params) \ fn.glNamedProgramLocalParameters4fvEXT(program, target, index, count, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLNAMEDPROGRAMLOCALPARAMETERSI4IVEXT(program, target, index, count, params) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLint tmp[size]; \ Atari2HostIntArray(size, params, tmp); \ fn.glNamedProgramLocalParametersI4ivEXT(program, target, index, count, tmp) #else #define FN_GLNAMEDPROGRAMLOCALPARAMETERSI4IVEXT(program, target, index, count, params) \ fn.glNamedProgramLocalParametersI4ivEXT(program, target, index, count, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXT(program, target, index, count, params) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, params, tmp); \ fn.glNamedProgramLocalParametersI4uivEXT(program, target, index, count, tmp) #else #define FN_GLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXT(program, target, index, count, params) \ fn.glNamedProgramLocalParametersI4uivEXT(program, target, index, count, HostAddr(params, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLNAMEDPROGRAMLOCALPARAMETERI4IVEXT(program, target, index, params) \ GLint const size = 4; \ GLint tmp[size]; \ Atari2HostIntArray(size, params, tmp); \ fn.glNamedProgramLocalParameterI4ivEXT(program, target, index, tmp) #else #define FN_GLNAMEDPROGRAMLOCALPARAMETERI4IVEXT(program, target, index, params) \ fn.glNamedProgramLocalParameterI4ivEXT(program, target, index, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLNAMEDPROGRAMLOCALPARAMETERI4UIVEXT(program, target, index, params) \ GLint const size = 4; \ GLuint tmp[size]; \ Atari2HostIntArray(size, params, tmp); \ fn.glNamedProgramLocalParameterI4uivEXT(program, target, index, tmp) #else #define FN_GLNAMEDPROGRAMLOCALPARAMETERI4UIVEXT(program, target, index, params) \ fn.glNamedProgramLocalParameterI4uivEXT(program, target, index, HostAddr(params, const GLuint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLNAMEDPROGRAMLOCALPARAMETER4DVEXT(program, target, index, params) \ GLint const size = 4; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, params, tmp); \ fn.glNamedProgramLocalParameter4dvEXT(program, target, index, tmp) #else #define FN_GLNAMEDPROGRAMLOCALPARAMETER4DVEXT(program, target, index, params) \ fn.glNamedProgramLocalParameter4dvEXT(program, target, index, HostAddr(params, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLNAMEDPROGRAMLOCALPARAMETER4FVEXT(program, target, index, params) \ GLint const size = 4; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, params, tmp); \ fn.glNamedProgramLocalParameter4fvEXT(program, target, index, tmp) #else #define FN_GLNAMEDPROGRAMLOCALPARAMETER4FVEXT(program, target, index, params) \ fn.glNamedProgramLocalParameter4fvEXT(program, target, index, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDPROGRAMLOCALPARAMETERIIVEXT(program, target, index, params) \ GLint const size = 4; \ GLint tmp[size]; \ fn.glGetNamedProgramLocalParameterIivEXT(program, target, index, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNAMEDPROGRAMLOCALPARAMETERIIVEXT(program, target, index, params) \ fn.glGetNamedProgramLocalParameterIivEXT(program, target, index, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXT(program, target, index, params) \ GLint const size = 4; \ GLuint tmp[size]; \ fn.glGetNamedProgramLocalParameterIuivEXT(program, target, index, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXT(program, target, index, params) \ fn.glGetNamedProgramLocalParameterIuivEXT(program, target, index, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETNAMEDPROGRAMLOCALPARAMETERDVEXT(program, target, index, params) \ GLint const size = 4; \ GLdouble tmp[size]; \ fn.glGetNamedProgramLocalParameterdvEXT(program, target, index, tmp); \ Host2AtariDoubleArray(size, tmp, params) #else #define FN_GLGETNAMEDPROGRAMLOCALPARAMETERDVEXT(program, target, index, params) \ fn.glGetNamedProgramLocalParameterdvEXT(program, target, index, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETNAMEDPROGRAMLOCALPARAMETERFVEXT(program, target, index, params) \ GLint const size = 4; \ GLfloat tmp[size]; \ fn.glGetNamedProgramLocalParameterfvEXT(program, target, index, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETNAMEDPROGRAMLOCALPARAMETERFVEXT(program, target, index, params) \ fn.glGetNamedProgramLocalParameterfvEXT(program, target, index, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDPROGRAMIVEXT(program, target, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetNamedProgramivEXT(program, target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNAMEDPROGRAMIVEXT(program, target, pname, params) \ fn.glGetNamedProgramivEXT(program, target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXARRAYINTEGERVEXT(vaobj, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetVertexArrayIntegervEXT(vaobj, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETVERTEXARRAYINTEGERVEXT(vaobj, pname, params) \ fn.glGetVertexArrayIntegervEXT(vaobj, pname, HostAddr(params, GLint *)) #endif // FIXME: need to track vertex arrays #define FN_GLGETVERTEXARRAYPOINTERVEXT(vaobj, pname, params) \ UNUSED(vaobj); \ UNUSED(pname); \ UNUSED(params); \ glSetError(GL_INVALID_OPERATION) #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXARRAYINTEGERI_VEXT(vaobj, index, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetVertexArrayIntegeri_vEXT(vaobj, index, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETVERTEXARRAYINTEGERI_VEXT(vaobj, index, pname, params) \ fn.glGetVertexArrayIntegeri_vEXT(vaobj, index, pname, HostAddr(params, GLint *)) #endif // FIXME: need to track vertex arrays #define FN_GLGETVERTEXARRAYPOINTERI_VEXT(vaobj, index, pname, params) \ UNUSED(vaobj); \ UNUSED(index); \ UNUSED(pname); \ UNUSED(params); \ glSetError(GL_INVALID_OPERATION) #if NFOSMESA_NEED_BYTE_CONV /* pname can only be PROGRAM_NAME_ASCII_ARB */ #define FN_GLGETNAMEDPROGRAMSTRINGEXT(program, target, pname, string) \ GLint len = 0; \ fn.glGetNamedProgramivEXT(program, target, GL_PROGRAM_LENGTH_ARB, &len); \ if (len <= 0) return; \ GLubyte tmp[len]; \ fn.glGetNamedProgramStringEXT(program, target, pname, tmp); \ Host2AtariByteArray(len, tmp, string) #else #define FN_GLGETNAMEDPROGRAMSTRINGEXT(program, target, pname, string) \ fn.glGetNamedProgramStringEXT(program, target, pname, HostAddr(string, void *)) #endif /* format can only be PROGRAM_STRING_ARB */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLNAMEDPROGRAMSTRINGEXT(program, target, format, len, string) \ GLubyte tmp[MAX(len, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), string, tmp); \ fn.glNamedProgramStringEXT(program, target, format, len, ptmp) #else #define FN_GLNAMEDPROGRAMSTRINGEXT(program, target, format, len, string) \ fn.glNamedProgramStringEXT(program, target, format, len, HostAddr(string, const void *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLFRAMEBUFFERDRAWBUFFERSEXT(framebuffer, n, bufs) \ GLenum tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, bufs, tmp); \ fn.glFramebufferDrawBuffersEXT(framebuffer, n, ptmp) #else #define FN_GLFRAMEBUFFERDRAWBUFFERSEXT(framebuffer, n, bufs) \ fn.glFramebufferDrawBuffersEXT(framebuffer, n, HostAddr(bufs, const GLenum *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETFRAMEBUFFERPARAMETERIVEXT(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetFramebufferParameterivEXT(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETFRAMEBUFFERPARAMETERIVEXT(target, pname, params) \ fn.glGetFramebufferParameterivEXT(target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTITEXSUBIMAGE1DEXT(texunit, target, level, xoffset, width, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, 1, 1, format, type, (nfmemptr)pixels); \ fn.glMultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, type, tmp) #else #define FN_GLMULTITEXSUBIMAGE1DEXT(texunit, target, level, xoffset, width, format, type, pixels) \ fn.glMultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTITEXSUBIMAGE2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, 1, format, type, (nfmemptr)pixels); \ fn.glMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, type, tmp) #else #define FN_GLMULTITEXSUBIMAGE2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, type, pixels) \ fn.glMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTITEXSUBIMAGE3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, depth, format, type, (nfmemptr)pixels); \ fn.glMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, tmp) #else #define FN_GLMULTITEXSUBIMAGE3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) \ fn.glMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, HostAddr(pixels, const void *)) #endif #define FN_GLGETTEXTUREIMAGEEXT(texture, target, level, format, type, img) \ GLint width = 0, height = 1, depth = 1; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ switch (target) { \ case GL_TEXTURE_1D: \ case GL_PROXY_TEXTURE_1D: \ fn.glGetTextureLevelParameterivEXT(texture, target, level, GL_TEXTURE_WIDTH, &width); \ break; \ case GL_TEXTURE_2D: \ case GL_PROXY_TEXTURE_2D: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_X: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: \ case GL_PROXY_TEXTURE_CUBE_MAP: \ fn.glGetTextureLevelParameterivEXT(texture, target, level, GL_TEXTURE_WIDTH, &width); \ fn.glGetTextureLevelParameterivEXT(texture, target, level, GL_TEXTURE_HEIGHT, &height); \ break; \ case GL_TEXTURE_3D: \ case GL_PROXY_TEXTURE_3D: \ fn.glGetTextureLevelParameterivEXT(texture, target, level, GL_TEXTURE_WIDTH, &width); \ fn.glGetTextureLevelParameterivEXT(texture, target, level, GL_TEXTURE_HEIGHT, &height); \ fn.glGetTextureLevelParameterivEXT(texture, target, level, GL_TEXTURE_DEPTH, &depth); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(img); \ fn.glGetTextureImageEXT(texture, target, level, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(width, height, depth, format, type)) return; \ } else { \ src = buf.hostBuffer(width, height, depth, format, type, (nfmemptr)img); \ if (src == NULL) return; \ fn.glGetTextureImageEXT(texture, target, level, format, type, src); \ dst = (nfmemptr)img; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_BYTE_CONV #define FN_GLNAMEDBUFFERSTORAGEEXT(buffer, size, data, flags) \ GLubyte tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glNamedBufferStorageEXT(buffer, size, ptmp, flags) #else #define FN_GLNAMEDBUFFERSTORAGEEXT(buffer, size, data, flags) \ fn.glNamedBufferStorageEXT(buffer, size, HostAddr(data, const void *), flags) #endif /* -------------------------------------------------------------------------- */ /* * GL_ARB_clear_buffer_object */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLCLEARBUFFERDATA(target, internalformat, format, type, data) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(1, 1, 1, format, type, (nfmemptr)data); \ fn.glClearBufferData(target, internalformat, format, type, tmp) #else #define FN_GLCLEARBUFFERDATA(target, internalformat, format, type, data) \ fn.glClearBufferData(target, internalformat, format, type, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLCLEARNAMEDBUFFERDATAEXT(buffer, internalformat, format, type, data) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(1, 1, 1, format, type, (nfmemptr)data); \ fn.glClearNamedBufferDataEXT(buffer, internalformat, format, type, tmp) #else #define FN_GLCLEARNAMEDBUFFERDATAEXT(buffer, internalformat, format, type, data) \ fn.glClearNamedBufferDataEXT(buffer, internalformat, format, type, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLCLEARBUFFERSUBDATA(target, internalformat, offset, size, format, type, data) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(1, 1, 1, format, type, (nfmemptr)data); \ fn.glClearBufferSubData(target, internalformat, offset, size, format, type, tmp) #else #define FN_GLCLEARBUFFERSUBDATA(target, internalformat, offset, size, format, type, data) \ fn.glClearBufferSubData(target, internalformat, offset, size, format, type, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLCLEARNAMEDBUFFERSUBDATAEXT(buffer, internalformat, offset, size, format, type, data) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(1, 1, 1, format, type, (nfmemptr)data); \ fn.glClearNamedBufferSubDataEXT(buffer, internalformat, offset, size, format, type, tmp) #else #define FN_GLCLEARNAMEDBUFFERSUBDATAEXT(buffer, internalformat, offset, size, format, type, data) \ fn.glClearNamedBufferSubDataEXT(buffer, internalformat, offset, size, format, type, HostAddr(data, const void *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_gpu_shader4 */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLBINDFRAGDATALOCATIONEXT(program, color, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ fn.glBindFragDataLocationEXT(program, color, ptmp) #else #define FN_GLBINDFRAGDATALOCATIONEXT(program, color, name) \ fn.glBindFragDataLocationEXT(program, color, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETFRAGDATALOCATIONEXT(program, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ return fn.glGetFragDataLocationEXT(program, ptmp) #else #define FN_GLGETFRAGDATALOCATIONEXT(program, name) \ return fn.glGetFragDataLocationEXT(program, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETUNIFORMUIVEXT(program, location, params) \ GLint const size = 1; \ GLuint tmp[size]; \ fn.glGetUniformuivEXT(program, location, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETUNIFORMUIVEXT(program, location, params) \ fn.glGetUniformuivEXT(program, location, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORM1UIVEXT(location, count, value) \ GLint const size = 1 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glUniform1uivEXT(location, count, tmp) #else #define FN_GLUNIFORM1UIVEXT(location, count, value) \ fn.glUniform1uivEXT(location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORM2UIVEXT(location, count, value) \ GLint const size = 2 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glUniform2uivEXT(location, count, tmp) #else #define FN_GLUNIFORM2UIVEXT(location, count, value) \ fn.glUniform2uivEXT(location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORM3UIVEXT(location, count, value) \ GLint const size = 3 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glUniform3uivEXT(location, count, tmp) #else #define FN_GLUNIFORM3UIVEXT(location, count, value) \ fn.glUniform3uivEXT(location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORM4UIVEXT(location, count, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glUniform4uivEXT(location, count, tmp) #else #define FN_GLUNIFORM4UIVEXT(location, count, value) \ fn.glUniform4uivEXT(location, count, HostAddr(value, const GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_AMD_gpu_shader_int64 */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGETUNIFORMI64VNV(program, location, params) \ GLint const size = 1; \ GLint64 tmp[size]; \ fn.glGetUniformi64vNV(program, location, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETUNIFORMI64VNV(program, location, params) \ fn.glGetUniformi64vNV(program, location, HostAddr(params, GLint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETUNIFORMUI64VNV(program, location, params) \ GLint const size = 1; \ GLuint64 tmp[size]; \ fn.glGetUniformui64vNV(program, location, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETUNIFORMUI64VNV(program, location, params) \ fn.glGetUniformui64vNV(program, location, HostAddr(params, GLuint64 *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ARB_gpu_shader_int64 */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGETUNIFORMI64VARB(program, location, params) \ GLint const size = 1; \ GLint64 tmp[size]; \ fn.glGetUniformi64vARB(program, location, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETUNIFORMI64VARB(program, location, params) \ fn.glGetUniformi64vARB(program, location, HostAddr(params, GLint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETUNIFORMUI64VARB(program, location, params) \ GLint const size = 1; \ GLuint64 tmp[size]; \ fn.glGetUniformui64vARB(program, location, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETUNIFORMUI64VARB(program, location, params) \ fn.glGetUniformui64vARB(program, location, HostAddr(params, GLuint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNUNIFORMI64VARB(program, location, bufsize, params) \ GLint64 tmp[bufsize]; \ fn.glGetUniformi64vARB(program, location, tmp); \ Host2AtariInt64Array(bufsize, tmp, params) #else #define FN_GLGETNUNIFORMI64VARB(program, location, bufsize, params) \ fn.glGetnUniformi64vARB(program, location, bufsize, HostAddr(params, GLint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNUNIFORMUI64VARB(program, location, bufsize, params) \ GLuint64 tmp[bufsize]; \ fn.glGetUniformui64vARB(program, location, tmp); \ Host2AtariInt64Array(bufsize, tmp, params) #else #define FN_GLGETNUNIFORMUI64VARB(program, location, bufsize, params) \ fn.glGetnUniformui64vARB(program, location, bufsize, HostAddr(params, GLuint64 *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_vertex_shader */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGETINVARIANTINTEGERVEXT(id, value, data) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetInvariantIntegervEXT(id, value, tmp); \ Host2AtariIntArray(size, tmp, data) #else #define FN_GLGETINVARIANTINTEGERVEXT(id, value, data) \ fn.glGetInvariantIntegervEXT(id, value, HostAddr(data, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETINVARIANTBOOLEANVEXT(id, value, data) \ GLint const size = 1; \ GLboolean tmp[size]; \ fn.glGetInvariantBooleanvEXT(id, value, tmp); \ Host2AtariByteArray(size, tmp, data) #else #define FN_GLGETINVARIANTBOOLEANVEXT(id, value, data) \ fn.glGetInvariantBooleanvEXT(id, value, HostAddr(data, GLboolean *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETINVARIANTFLOATVEXT(id, value, data) \ GLint const size = 1; \ GLfloat tmp[size]; \ fn.glGetInvariantFloatvEXT(id, value, tmp); \ Host2AtariFloatArray(size, tmp, data) #else #define FN_GLGETINVARIANTFLOATVEXT(id, value, data) \ fn.glGetInvariantFloatvEXT(id, value, HostAddr(data, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETLOCALCONSTANTBOOLEANVEXT(id, value, data) \ GLint const size = 1; \ GLboolean tmp[size]; \ fn.glGetLocalConstantBooleanvEXT(id, value, tmp); \ Host2AtariByteArray(size, tmp, data) #else #define FN_GLGETLOCALCONSTANTBOOLEANVEXT(id, value, data) \ fn.glGetLocalConstantBooleanvEXT(id, value, HostAddr(data, GLboolean *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETLOCALCONSTANTINTEGERVEXT(id, value, data) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetLocalConstantIntegervEXT(id, value, tmp); \ Host2AtariIntArray(size, tmp, data) #else #define FN_GLGETLOCALCONSTANTINTEGERVEXT(id, value, data) \ fn.glGetLocalConstantIntegervEXT(id, value, HostAddr(data, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETLOCALCONSTANTFLOATVEXT(id, value, data) \ GLint const size = 1; \ GLfloat tmp[size]; \ fn.glGetLocalConstantFloatvEXT(id, value, tmp); \ Host2AtariFloatArray(size, tmp, data) #else #define FN_GLGETLOCALCONSTANTFLOATVEXT(id, value, data) \ fn.glGetLocalConstantFloatvEXT(id, value, HostAddr(data, GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLSETINVARIANTEXT(id, type, data) \ GLint size = 0; \ GLint datatype = 0; \ fn.glGetVariantIntegervEXT(id, GL_VARIANT_DATATYPE_EXT, &datatype); \ switch (datatype) { \ case GL_SCALAR_EXT: size = 1; break; \ case GL_VECTOR_EXT: size = 4; break; \ case GL_MATRIX_EXT: size = 16; break; \ } \ switch (type) { \ case GL_BYTE: \ case GL_UNSIGNED_BYTE: { \ GLubyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, data, tmp); \ fn.glSetInvariantEXT(id, type, ptmp); \ } \ break; \ case GL_SHORT: \ case GL_UNSIGNED_SHORT: { \ GLushort tmp[size], *ptmp; \ ptmp = Atari2HostShortArray(size, data, tmp); \ fn.glSetInvariantEXT(id, type, ptmp); \ } \ break; \ case GL_INT: \ case GL_UNSIGNED_INT: { \ GLuint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, data, tmp); \ fn.glSetInvariantEXT(id, type, ptmp); \ } \ break; \ case GL_FLOAT: { \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, data, tmp); \ fn.glSetInvariantEXT(id, type, ptmp); \ } \ break; \ case GL_DOUBLE: { \ GLdouble tmp[size], *ptmp; \ ptmp = Atari2HostDoubleArray(size, data, tmp); \ fn.glSetInvariantEXT(id, type, ptmp); \ } \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } #else #define FN_GLSETINVARIANTEXT(id, type, data) \ fn.glSetInvariantEXT(id, type, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLSETLOCALCONSTANTEXT(id, type, data) \ GLint size = 0; \ GLint datatype = 0; \ fn.glGetLocalConstantIntegervEXT(id, GL_LOCAL_CONSTANT_DATATYPE_EXT, &datatype); \ switch (datatype) { \ case GL_SCALAR_EXT: size = 1; break; \ case GL_VECTOR_EXT: size = 4; break; \ case GL_MATRIX_EXT: size = 16; break; \ } \ switch (type) { \ case GL_BYTE: \ case GL_UNSIGNED_BYTE: { \ GLubyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, data, tmp); \ fn.glSetLocalConstantEXT(id, type, ptmp); \ } \ break; \ case GL_SHORT: \ case GL_UNSIGNED_SHORT: { \ GLushort tmp[size], *ptmp; \ ptmp = Atari2HostShortArray(size, data, tmp); \ fn.glSetLocalConstantEXT(id, type, ptmp); \ } \ break; \ case GL_INT: \ case GL_UNSIGNED_INT: { \ GLuint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, data, tmp); \ fn.glSetLocalConstantEXT(id, type, ptmp); \ } \ break; \ case GL_FLOAT: { \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, data, tmp); \ fn.glSetLocalConstantEXT(id, type, ptmp); \ } \ break; \ case GL_DOUBLE: { \ GLdouble tmp[size], *ptmp; \ ptmp = Atari2HostDoubleArray(size, data, tmp); \ fn.glSetLocalConstantEXT(id, type, ptmp); \ } \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } #else #define FN_GLSETLOCALCONSTANTEXT(id, type, data) \ fn.glSetLocalConstantEXT(id, type, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVARIANTSVEXT(id, data) \ GLint size = 0; \ GLint datatype = 0; \ fn.glGetVariantIntegervEXT(id, GL_VARIANT_DATATYPE_EXT, &datatype); \ switch (datatype) { \ case GL_SCALAR_EXT: size = 1; break; \ case GL_VECTOR_EXT: size = 4; break; \ case GL_MATRIX_EXT: size = 16; break; \ } \ GLshort tmp[size], *ptmp; \ ptmp = Atari2HostShortArray(size, data, tmp); \ fn.glVariantsvEXT(id, ptmp) #else #define FN_GLVARIANTSVEXT(id, data) \ fn.glVariantsvEXT(id, HostAddr(data, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVARIANTIVEXT(id, data) \ GLint size = 0; \ GLint datatype = 0; \ fn.glGetVariantIntegervEXT(id, GL_VARIANT_DATATYPE_EXT, &datatype); \ switch (datatype) { \ case GL_SCALAR_EXT: size = 1; break; \ case GL_VECTOR_EXT: size = 4; break; \ case GL_MATRIX_EXT: size = 16; break; \ } \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, data, tmp); \ fn.glVariantivEXT(id, ptmp) #else #define FN_GLVARIANTIVEXT(id, data) \ fn.glVariantivEXT(id, HostAddr(data, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVARIANTFVEXT(id, data) \ GLint size = 0; \ GLint datatype = 0; \ fn.glGetVariantIntegervEXT(id, GL_VARIANT_DATATYPE_EXT, &datatype); \ switch (datatype) { \ case GL_SCALAR_EXT: size = 1; break; \ case GL_VECTOR_EXT: size = 4; break; \ case GL_MATRIX_EXT: size = 16; break; \ } \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, data, tmp); \ fn.glVariantfvEXT(id, ptmp) #else #define FN_GLVARIANTFVEXT(id, data) \ fn.glVariantfvEXT(id, HostAddr(data, const GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVARIANTBVEXT(id, data) \ GLint size = 0; \ GLint datatype = 0; \ fn.glGetVariantIntegervEXT(id, GL_VARIANT_DATATYPE_EXT, &datatype); \ switch (datatype) { \ case GL_SCALAR_EXT: size = 1; break; \ case GL_VECTOR_EXT: size = 4; break; \ case GL_MATRIX_EXT: size = 16; break; \ } \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, data, tmp); \ fn.glVariantbvEXT(id, ptmp) #else #define FN_GLVARIANTBVEXT(id, data) \ fn.glVariantbvEXT(id, HostAddr(data, const GLbyte *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVARIANTDVEXT(id, data) \ GLint size = 0; \ GLint datatype = 0; \ fn.glGetVariantIntegervEXT(id, GL_VARIANT_DATATYPE_EXT, &datatype); \ switch (datatype) { \ case GL_SCALAR_EXT: size = 1; break; \ case GL_VECTOR_EXT: size = 4; break; \ case GL_MATRIX_EXT: size = 16; break; \ } \ GLdouble tmp[size], *ptmp; \ ptmp = Atari2HostDoubleArray(size, data, tmp); \ fn.glVariantdvEXT(id, ptmp) #else #define FN_GLVARIANTDVEXT(id, data) \ fn.glVariantdvEXT(id, HostAddr(data, const GLdouble *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVARIANTUBVEXT(id, data) \ GLint size = 0; \ GLint datatype = 0; \ fn.glGetVariantIntegervEXT(id, GL_VARIANT_DATATYPE_EXT, &datatype); \ switch (datatype) { \ case GL_SCALAR_EXT: size = 1; break; \ case GL_VECTOR_EXT: size = 4; break; \ case GL_MATRIX_EXT: size = 16; break; \ } \ GLubyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, data, tmp); \ fn.glVariantubvEXT(id, ptmp) #else #define FN_GLVARIANTUBVEXT(id, data) \ fn.glVariantubvEXT(id, HostAddr(data, const GLubyte *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVARIANTUSVEXT(id, data) \ GLint size = 0; \ GLint datatype = 0; \ fn.glGetVariantIntegervEXT(id, GL_VARIANT_DATATYPE_EXT, &datatype); \ switch (datatype) { \ case GL_SCALAR_EXT: size = 1; break; \ case GL_VECTOR_EXT: size = 4; break; \ case GL_MATRIX_EXT: size = 16; break; \ } \ GLushort tmp[size], *ptmp; \ ptmp = Atari2HostShortArray(size, data, tmp); \ fn.glVariantusvEXT(id, ptmp) #else #define FN_GLVARIANTUSVEXT(id, data) \ fn.glVariantusvEXT(id, HostAddr(data, const GLushort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVARIANTUIVEXT(id, data) \ GLint size = 0; \ GLint datatype = 0; \ fn.glGetVariantIntegervEXT(id, GL_VARIANT_DATATYPE_EXT, &datatype); \ switch (datatype) { \ case GL_SCALAR_EXT: size = 1; break; \ case GL_VECTOR_EXT: size = 4; break; \ case GL_MATRIX_EXT: size = 16; break; \ } \ GLuint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, data, tmp); \ fn.glVariantuivEXT(id, ptmp) #else #define FN_GLVARIANTUIVEXT(id, data) \ fn.glVariantuivEXT(id, HostAddr(data, const GLuint *)) #endif #define FN_GLVARIANTPOINTEREXT(id, type, stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].variant, 4, type, stride, -1, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].variant.vendor = NFOSMESA_VENDOR_EXT; \ contexts[cur_context].variant.id = id #define FN_GLENABLEVARIANTCLIENTSTATEEXT(array) \ switch(array) { \ case GL_VARIANT_ARRAY_EXT: \ contexts[cur_context].enabled_arrays |= NFOSMESA_VARIANT_ARRAY; \ break; \ } \ fn.glEnableVariantClientStateEXT(array) #define FN_GLDISABLEVARIANTCLIENTSTATEEXT(array) \ switch(array) { \ case GL_VARIANT_ARRAY_EXT: \ contexts[cur_context].enabled_arrays &= ~NFOSMESA_VARIANT_ARRAY; \ break; \ } \ fn.glDisableVariantClientStateEXT(array) #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETVARIANTBOOLEANVEXT(id, value, data) \ GLint size = 0; \ GLint datatype = 0; \ fn.glGetVariantIntegervEXT(id, GL_VARIANT_DATATYPE_EXT, &datatype); \ switch (datatype) { \ case GL_SCALAR_EXT: size = 1; break; \ case GL_VECTOR_EXT: size = 4; break; \ case GL_MATRIX_EXT: size = 16; break; \ } \ GLboolean tmp[size]; \ fn.glGetVariantBooleanvEXT(id, value, tmp); \ Host2AtariByteArray(size, tmp, data) #else #define FN_GLGETVARIANTBOOLEANVEXT(id, value, data) \ fn.glGetVariantBooleanvEXT(id, value, HostAddr(data, GLboolean *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVARIANTINTEGERVEXT(id, value, data) \ GLint size = 0; \ GLint datatype = 0; \ fn.glGetVariantIntegervEXT(id, GL_VARIANT_DATATYPE_EXT, &datatype); \ switch (datatype) { \ case GL_SCALAR_EXT: size = 1; break; \ case GL_VECTOR_EXT: size = 4; break; \ case GL_MATRIX_EXT: size = 16; break; \ } \ GLint tmp[size]; \ fn.glGetVariantIntegervEXT(id, value, tmp); \ Host2AtariIntArray(size, tmp, data) #else #define FN_GLGETVARIANTINTEGERVEXT(id, value, data) \ fn.glGetVariantIntegervEXT(id, value, HostAddr(data, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVARIANTFLOATVEXT(id, value, data) \ GLint size = 0; \ GLint datatype = 0; \ fn.glGetVariantIntegervEXT(id, GL_VARIANT_DATATYPE_EXT, &datatype); \ switch (datatype) { \ case GL_SCALAR_EXT: size = 1; break; \ case GL_VECTOR_EXT: size = 4; break; \ case GL_MATRIX_EXT: size = 16; break; \ } \ GLfloat tmp[size]; \ fn.glGetVariantFloatvEXT(id, value, tmp); \ Host2AtariFloatArray(size, tmp, data) #else #define FN_GLGETVARIANTFLOATVEXT(id, value, data) \ fn.glGetVariantFloatvEXT(id, value, HostAddr(data, GLfloat *)) #endif #define FN_GLGETVARIANTPOINTERVEXT(id, value, data) \ void *ptr = 0; \ memptr addr = 0; \ fn.glGetVariantPointervEXT(id, value, &ptr); \ if (ptr == contexts[cur_context].variant.host_pointer) \ addr = (memptr)(uintptr_t)NFHost2AtariAddr(contexts[cur_context].variant.atari_pointer); \ else \ addr = 0; \ Host2AtariIntArray(1, &addr, AtariAddr(data, memptr *)) /* -------------------------------------------------------------------------- */ /* * GL_ATI_vertex_streams */ #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXSTREAM1SVATI(stream, coords) \ GLshort tmp[1]; \ Atari2HostShortArray(1, coords, tmp); \ fn.glVertexStream1svATI(stream, tmp) #else #define FN_GLVERTEXSTREAM1SVATI(stream, coords) \ fn.glVertexStream1svATI(stream, HostAddr(coords, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXSTREAM1IVATI(stream, coords) \ GLint tmp[1]; \ Atari2HostIntArray(1, coords, tmp); \ fn.glVertexStream1ivATI(stream, tmp) #else #define FN_GLVERTEXSTREAM1IVATI(stream, coords) \ fn.glVertexStream1ivATI(stream, HostAddr(coords, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXSTREAM1FVATI(stream, coords) \ GLfloat tmp[1]; \ Atari2HostFloatArray(1, coords, tmp); \ fn.glVertexStream1fvATI(stream, tmp) #else #define FN_GLVERTEXSTREAM1FVATI(stream, coords) \ fn.glVertexStream1fvATI(stream, HostAddr(coords, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXSTREAM1DVATI(stream, coords) \ GLdouble tmp[1]; \ Atari2HostDoubleArray(1, coords, tmp); \ fn.glVertexStream1dvATI(stream, tmp) #else #define FN_GLVERTEXSTREAM1DVATI(stream, coords) \ fn.glVertexStream1dvATI(stream, HostAddr(coords, const GLdouble *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXSTREAM2SVATI(stream, coords) \ GLshort tmp[2]; \ Atari2HostShortArray(2, coords, tmp); \ fn.glVertexStream2svATI(stream, tmp) #else #define FN_GLVERTEXSTREAM2SVATI(stream, coords) \ fn.glVertexStream2svATI(stream, HostAddr(coords, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXSTREAM2IVATI(stream, coords) \ GLint tmp[2]; \ Atari2HostIntArray(2, coords, tmp); \ fn.glVertexStream2ivATI(stream, tmp) #else #define FN_GLVERTEXSTREAM2IVATI(stream, coords) \ fn.glVertexStream2ivATI(stream, HostAddr(coords, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXSTREAM2FVATI(stream, coords) \ GLfloat tmp[2]; \ Atari2HostFloatArray(2, coords, tmp); \ fn.glVertexStream2fvATI(stream, tmp) #else #define FN_GLVERTEXSTREAM2FVATI(stream, coords) \ fn.glVertexStream2fvATI(stream, HostAddr(coords, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXSTREAM2DVATI(stream, coords) \ GLdouble tmp[2]; \ Atari2HostDoubleArray(2, coords, tmp); \ fn.glVertexStream2dvATI(stream, tmp) #else #define FN_GLVERTEXSTREAM2DVATI(stream, coords) \ fn.glVertexStream2dvATI(stream, HostAddr(coords, const GLdouble *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXSTREAM3SVATI(stream, coords) \ GLshort tmp[3]; \ Atari2HostShortArray(3, coords, tmp); \ fn.glVertexStream3svATI(stream, tmp) #else #define FN_GLVERTEXSTREAM3SVATI(stream, coords) \ fn.glVertexStream3svATI(stream, HostAddr(coords, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXSTREAM3IVATI(stream, coords) \ GLint tmp[3]; \ Atari2HostIntArray(3, coords, tmp); \ fn.glVertexStream3ivATI(stream, tmp) #else #define FN_GLVERTEXSTREAM3IVATI(stream, coords) \ fn.glVertexStream3ivATI(stream, HostAddr(coords, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXSTREAM3FVATI(stream, coords) \ GLfloat tmp[3]; \ Atari2HostFloatArray(3, coords, tmp); \ fn.glVertexStream3fvATI(stream, tmp) #else #define FN_GLVERTEXSTREAM3FVATI(stream, coords) \ fn.glVertexStream3fvATI(stream, HostAddr(coords, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXSTREAM3DVATI(stream, coords) \ GLdouble tmp[3]; \ Atari2HostDoubleArray(3, coords, tmp); \ fn.glVertexStream3dvATI(stream, tmp) #else #define FN_GLVERTEXSTREAM3DVATI(stream, coords) \ fn.glVertexStream3dvATI(stream, HostAddr(coords, const GLdouble *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLNORMALSTREAM3BVATI(stream, coords) \ GLbyte tmp[3]; \ Atari2HostByteArray(3, coords, tmp); \ fn.glNormalStream3bvATI(stream, tmp) #else #define FN_GLNORMALSTREAM3BVATI(stream, coords) \ fn.glNormalStream3bvATI(stream, HostAddr(coords, const GLbyte *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLNORMALSTREAM3SVATI(stream, coords) \ GLshort tmp[3]; \ Atari2HostShortArray(3, coords, tmp); \ fn.glNormalStream3svATI(stream, tmp) #else #define FN_GLNORMALSTREAM3SVATI(stream, coords) \ fn.glNormalStream3svATI(stream, HostAddr(coords, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLNORMALSTREAM3IVATI(stream, coords) \ GLint tmp[3]; \ Atari2HostIntArray(3, coords, tmp); \ fn.glNormalStream3ivATI(stream, tmp) #else #define FN_GLNORMALSTREAM3IVATI(stream, coords) \ fn.glNormalStream3ivATI(stream, HostAddr(coords, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLNORMALSTREAM3FVATI(stream, coords) \ GLfloat tmp[3]; \ Atari2HostFloatArray(3, coords, tmp); \ fn.glNormalStream3fvATI(stream, tmp) #else #define FN_GLNORMALSTREAM3FVATI(stream, coords) \ fn.glNormalStream3fvATI(stream, HostAddr(coords, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLNORMALSTREAM3DVATI(stream, coords) \ GLdouble tmp[3]; \ Atari2HostDoubleArray(3, coords, tmp); \ fn.glNormalStream3dvATI(stream, tmp) #else #define FN_GLNORMALSTREAM3DVATI(stream, coords) \ fn.glNormalStream3dvATI(stream, HostAddr(coords, const GLdouble *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXSTREAM4SVATI(stream, coords) \ GLshort tmp[4]; \ Atari2HostShortArray(4, coords, tmp); \ fn.glVertexStream4svATI(stream, tmp) #else #define FN_GLVERTEXSTREAM4SVATI(stream, coords) \ fn.glVertexStream4svATI(stream, HostAddr(coords, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXSTREAM4IVATI(stream, coords) \ GLint tmp[4]; \ Atari2HostIntArray(4, coords, tmp); \ fn.glVertexStream4ivATI(stream, tmp) #else #define FN_GLVERTEXSTREAM4IVATI(stream, coords) \ fn.glVertexStream4ivATI(stream, HostAddr(coords, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXSTREAM4FVATI(stream, coords) \ GLfloat tmp[4]; \ Atari2HostFloatArray(4, coords, tmp); \ fn.glVertexStream4fvATI(stream, tmp) #else #define FN_GLVERTEXSTREAM4FVATI(stream, coords) \ fn.glVertexStream4fvATI(stream, HostAddr(coords, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXSTREAM4DVATI(stream, coords) \ GLdouble tmp[4]; \ Atari2HostDoubleArray(4, coords, tmp); \ fn.glVertexStream4dvATI(stream, tmp) #else #define FN_GLVERTEXSTREAM4DVATI(stream, coords) \ fn.glVertexStream4dvATI(stream, HostAddr(coords, const GLdouble *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_secondary_color */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLSECONDARYCOLOR3BVEXT(v) \ GLbyte tmp[3]; \ Atari2HostByteArray(3, v, tmp); \ fn.glSecondaryColor3bvEXT(tmp) #else #define FN_GLSECONDARYCOLOR3BVEXT(v) \ fn.glSecondaryColor3bvEXT(HostAddr(v, const GLbyte *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLSECONDARYCOLOR3DVEXT(v) \ GLdouble tmp[3]; \ Atari2HostDoubleArray(3, v, tmp); \ fn.glSecondaryColor3dvEXT(tmp) #else #define FN_GLSECONDARYCOLOR3DVEXT(v) \ fn.glSecondaryColor3dvEXT(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLSECONDARYCOLOR3FVEXT(v) \ GLfloat tmp[3]; \ Atari2HostFloatArray(3, v, tmp); \ fn.glSecondaryColor3fvEXT(tmp) #else #define FN_GLSECONDARYCOLOR3FVEXT(v) \ fn.glSecondaryColor3fvEXT(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSECONDARYCOLOR3IVEXT(v) \ GLint tmp[3]; \ Atari2HostIntArray(3, v, tmp); \ fn.glSecondaryColor3ivEXT(tmp) #else #define FN_GLSECONDARYCOLOR3IVEXT(v) \ fn.glSecondaryColor3ivEXT(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSECONDARYCOLOR3SVEXT(v) \ GLshort tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glSecondaryColor3svEXT(tmp) #else #define FN_GLSECONDARYCOLOR3SVEXT(v) \ fn.glSecondaryColor3svEXT(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLSECONDARYCOLOR3UBVEXT(v) \ GLubyte tmp[3]; \ Atari2HostByteArray(3, v, tmp); \ fn.glSecondaryColor3ubvEXT(tmp) #else #define FN_GLSECONDARYCOLOR3UBVEXT(v) \ fn.glSecondaryColor3ubvEXT(HostAddr(v, const GLubyte *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSECONDARYCOLOR3UIVEXT(v) \ GLuint tmp[3]; \ Atari2HostIntArray(3, v, tmp); \ fn.glSecondaryColor3uivEXT(tmp) #else #define FN_GLSECONDARYCOLOR3UIVEXT(v) \ fn.glSecondaryColor3uivEXT(HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSECONDARYCOLOR3USVEXT(v) \ GLushort tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glSecondaryColor3usvEXT(tmp) #else #define FN_GLSECONDARYCOLOR3USVEXT(v) \ fn.glSecondaryColor3usvEXT(HostAddr(v, const GLushort *)) #endif #define FN_GLSECONDARYCOLORPOINTEREXT(size, type, stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].secondary_color, size, type, stride, 0, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].secondary_color.vendor = NFOSMESA_VENDOR_EXT /* -------------------------------------------------------------------------- */ /* * GL_EXT_separate_shader_objects */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCREATESHADERPROGRAMEXT(type, string) \ GLchar stringbuf[safe_strlen(string) + 1], *pstring ; \ pstring = Atari2HostByteArray(sizeof(stringbuf), string, stringbuf); \ return fn.glCreateShaderProgramEXT(type, pstring) #else #define FN_GLCREATESHADERPROGRAMEXT(type, string) \ return fn.glCreateShaderProgramEXT(type, HostAddr(string, const GLchar *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ATI_vertex_array_object */ #define FN_GLDELETEOBJECTBUFFERATI(buffer) nfglFreeObjectBufferATI(buffer) #define FN_GLNEWOBJECTBUFFERATI(size, pointer, usage) \ gl_buffer_t *buf = gl_make_buffer(size, AtariAddr(pointer, nfcmemptr)); \ if (!buf) return 0; \ GLuint name = fn.glNewObjectBufferATI(size, buf->host_buffer, usage); \ if (!name) return name; \ buf->name = name; \ buf->usage = usage; \ return name #define FN_GLFREEOBJECTBUFFERATI(buffer) \ gl_buffer_t *buf = gl_get_buffer(buffer); \ if (buf) { \ buf->atari_buffer = 0; \ free(buf->host_buffer); \ buf->host_buffer = NULL; \ buf->size = 0; \ } #define FN_GLUPDATEOBJECTBUFFERATI(buffer, offset, size, pointer, preserve) \ gl_buffer_t *buf = gl_get_buffer(buffer); \ if (!buf) buf = gl_make_buffer(offset + size, AtariAddr(pointer, nfcmemptr)); \ if (!buf) return; \ buf->name = buffer; \ Atari2HostByteArray(size, AtariAddr(pointer, const char *), buf->host_buffer + offset); \ convertClientArrays(0); \ fn.glUpdateObjectBufferATI(buffer, offset, size, buf->host_buffer, preserve) #define FN_GLGETARRAYOBJECTFVATI(array, pname, params) \ GLint const size = 1; \ GLfloat tmp[size]; \ fn.glGetArrayObjectfvATI(array, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #define FN_GLGETARRAYOBJECTIVATI(array, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetArrayObjectivATI(array, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #define FN_GLGETOBJECTBUFFERFVATI(buffer, pname, params) \ GLint const size = 1; \ GLfloat tmp[size]; \ fn.glGetObjectBufferfvATI(buffer, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #define FN_GLGETOBJECTBUFFERIVATI(buffer, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetObjectBufferivATI(buffer, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #define FN_GLGETVARIANTARRAYOBJECTFVATI(id, pname, params) \ GLint const size = 1; \ GLfloat tmp[size]; \ fn.glGetVariantArrayObjectfvATI(id, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #define FN_GLGETVARIANTARRAYOBJECTIVATI(id, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetVariantArrayObjectivATI(id, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #define FN_GLARRAYOBJECTATI(array, size, type, stride, buffer, offset) \ vertexarray_t *arr = gl_get_array(array); \ if (!arr) return; \ gl_buffer_t *buf = gl_get_buffer(buffer); \ if (!buf) return; \ arr->buffer_offset = offset; \ setupClientArray(0, *arr, size, type, stride, -1, 0, buf->atari_buffer + offset) /* -------------------------------------------------------------------------- */ /* * GL_ATI_vertex_attrib_array_object */ #define FN_GLVERTEXATTRIBARRAYOBJECTATI(array, size, type, nomralized, stride, buffer, offset) \ vertexarray_t *arr = gl_get_array(array); \ if (!arr) return; \ gl_buffer_t *buf = gl_get_buffer(buffer); \ if (!buf) return; \ arr->buffer_offset = offset; \ buf->normalized = normalized; \ setupClientArray(0, *arr, size, type, stride, -1, 0, buf->atari_buffer + offset) #define FN_GLGETVERTEXATTRIBARRAYOBJECTFVATI(index, pname, params) \ GLint const size = 1; \ GLfloat tmp[size]; \ fn.glGetVertexAttribArrayObjectfvATI(index, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #define FN_GLGETVERTEXATTRIBARRAYOBJECTIVATI(index, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetVertexAttribArrayObjectivATI(index, pname, tmp); \ Host2AtariIntArray(size, tmp, params) /* -------------------------------------------------------------------------- */ /* * GL_ARB_shader_objects */ #define FN_GLSHADERSOURCEARB(shaderObj, count, strings, length) \ void *pstrings[MAX(count, 0)], **ppstrings; \ GLint lengthbuf[MAX(count, 0)], *plength; \ ppstrings = Atari2HostPtrArray(count, strings, pstrings); \ plength = Atari2HostIntArray(count, length, lengthbuf); \ fn.glShaderSourceARB(shaderObj, count, (const GLcharARB **)ppstrings, plength) /* -------------------------------------------------------------------------- */ /* * GL_ARB_shading_language_include */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLNAMEDSTRINGARB(type, namelen, name, stringlen, string) \ if (namelen < 0) namelen = safe_strlen(name); \ if (stringlen < 0) stringlen = safe_strlen(string); \ GLchar namebuf[namelen], *pname; \ GLchar stringbuf[stringlen], *pstring; \ pname = Atari2HostByteArray(sizeof(namebuf), name, namebuf); \ pstring = Atari2HostByteArray(sizeof(stringbuf), string, stringbuf); \ fn.glNamedStringARB(type, namelen, pname, stringlen, pstring) #else #define FN_GLNAMEDSTRINGARB(type, namelen, name, stringlen, string) \ fn.glNamedStringARB(type, namelen, HostAddr(name, const GLchar *), stringlen, HostAddr(string, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLDELETENAMEDSTRINGARB(namelen, name) \ if (namelen < 0) namelen = safe_strlen(name); \ GLchar namebuf[namelen], *pname; \ pname = Atari2HostByteArray(sizeof(namebuf), name, namebuf); \ return fn.glDeleteNamedStringARB(namelen, pname) #else #define FN_GLDELETENAMEDSTRINGARB(namelen, name) \ return fn.glDeleteNamedStringARB(namelen, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLISNAMEDSTRINGARB(namelen, name) \ if (namelen < 0) namelen = safe_strlen(name); \ GLchar namebuf[namelen], *pname; \ pname = Atari2HostByteArray(sizeof(namebuf), name, namebuf); \ return fn.glIsNamedStringARB(namelen, pname) #else #define FN_GLISNAMEDSTRINGARB(namelen, name) \ return fn.glIsNamedStringARB(namelen, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDSTRINGIVARB(namelen, name, pname, params) \ if (namelen < 0) namelen = safe_strlen(name); \ GLchar namebuf[namelen], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(namebuf), name, namebuf); \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetNamedStringivARB(namelen, ptmp, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNAMEDSTRINGIVARB(namelen, name, pname, params) \ fn.glGetNamedStringivARB(namelen, HostAddr(name, const GLchar *), pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDSTRINGARB(namelen, name, bufSize, stringlen, string) \ GLint l = 0; \ GLchar namebuf[MAX(namelen, 0)], *ptmp; \ GLchar stringbuf[MAX(bufSize, 0)]; \ ptmp = Atari2HostByteArray(sizeof(namebuf), name, namebuf); \ fn.glGetNamedStringARB(namelen, ptmp, bufSize, &l, stringbuf); \ Host2AtariByteArray(MIN(l + 1, bufSize), stringbuf, string); \ Host2AtariIntArray(1, &l, stringlen) #else #define FN_GLGETNAMEDSTRINGARB(namelen, name, bufSize, stringlen, string) \ fn.glGetNamedStringARB(namelen, HostAddr(name, const GLchar *), bufSize, HostAddr(stringlen, GLint *), HostAddr(string, char *)) #endif #define FN_GLCOMPILESHADERINCLUDEARB(shader, count, path, length) \ void *pathbuf[MAX(count, 0)], **ppath; \ GLint lengthbuf[MAX(count, 0)], *plength; \ /* FIXME: the pathnames here are meaningless to the host */ \ ppath = Atari2HostPtrArray(count, path, pathbuf); \ plength = Atari2HostIntArray(count, length, lengthbuf); \ fn.glCompileShaderIncludeARB(shader, count, (const char *const *)ppath, plength) /* -------------------------------------------------------------------------- */ /* * GL_APPLE_element_array */ #define FN_GLELEMENTPOINTERAPPLE(type, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].element, 1, type, 0, -1, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].element.vendor = NFOSMESA_VENDOR_APPLE #define FN_GLDRAWELEMENTARRAYAPPLE(mode, first, count) \ convertClientArrays(first + count); \ fn.glDrawElementArrayAPPLE(mode, first, count) #define FN_GLDRAWRANGEELEMENTARRAYAPPLE(mode, start, end, first, count) \ convertClientArrays(first + count); \ fn.glDrawRangeElementArrayAPPLE(mode, start, end, first, count) #define FN_GLMULTIDRAWELEMENTARRAYAPPLE(mode, first, count, primcount) \ GLsizei const size = primcount; \ GLint firstbuf[size]; \ GLsizei countbuf[size]; \ if (size <= 0) { glSetError(GL_INVALID_VALUE); return; } \ Atari2HostIntArray(size, first, firstbuf); \ Atari2HostIntArray(size, count, countbuf); \ for (GLsizei i = 0; i < size; i++) \ convertClientArrays(firstbuf[i] + countbuf[i]); \ fn.glMultiDrawElementArrayAPPLE(mode, firstbuf, countbuf, primcount) #define FN_GLMULTIDRAWRANGEELEMENTARRAYAPPLE(mode, start, end, first, count, primcount) \ GLsizei const size = primcount; \ GLint firstbuf[size]; \ GLsizei countbuf[size]; \ if (size <= 0) { glSetError(GL_INVALID_VALUE); return; } \ Atari2HostIntArray(size, first, firstbuf); \ Atari2HostIntArray(size, count, countbuf); \ for (GLsizei i = 0; i < size; i++) \ convertClientArrays(firstbuf[i] + countbuf[i]); \ fn.glMultiDrawRangeElementArrayAPPLE(mode, start, end, firstbuf, countbuf, primcount) /* -------------------------------------------------------------------------- */ /* * GL_ATI_element_array */ #define FN_GLELEMENTPOINTERATI(type, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].element, 1, type, 0, -1, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].element.vendor = NFOSMESA_VENDOR_ATI #define FN_GLDRAWELEMENTARRAYATI(mode, count) \ convertClientArrays(count); \ fn.glDrawElementArrayATI(mode, count) #define FN_GLDRAWRANGEELEMENTARRAYATI(mode, start, end, count) \ convertClientArrays(count); \ fn.glDrawRangeElementArrayATI(mode, start, end, count) /* -------------------------------------------------------------------------- */ /* * GL_APPLE_object_purgeable */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGETOBJECTPARAMETERIVAPPLE(objectType, name, pname, params) \ GLint const size = 1; \ GLint tmp[1]; \ fn.glGetObjectParameterivAPPLE(objectType, name, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETOBJECTPARAMETERIVAPPLE(objectType, name, pname, params) \ fn.glGetObjectParameterivAPPLE(objectType, name, pname, HostAddr(params, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_occlusion_query */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGENOCCLUSIONQUERIESNV(n, ids) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenOcclusionQueriesNV(n, tmp); \ Host2AtariIntArray(n, tmp, ids) #else #define FN_GLGENOCCLUSIONQUERIESNV(n, ids) \ fn.glGenOcclusionQueriesNV(n, HostAddr(ids, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETEOCCLUSIONQUERIESNV(n, ids) \ GLsizei const size = n; \ GLuint tmp[size]; \ if (size <= 0) { glSetError(GL_INVALID_VALUE); return; } \ Atari2HostIntArray(size, ids, tmp); \ fn.glDeleteOcclusionQueriesNV(n, tmp) #else #define FN_GLDELETEOCCLUSIONQUERIESNV(n, ids) \ fn.glDeleteOcclusionQueriesNV(n, HostAddr(ids, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETOCCLUSIONQUERYIVNV(id, pname, params) \ GLsizei const size = 1; \ GLint tmp[size]; \ fn.glGetOcclusionQueryivNV(id, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETOCCLUSIONQUERYIVNV(id, pname, params) \ fn.glGetOcclusionQueryivNV(id, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETOCCLUSIONQUERYUIVNV(id, pname, params) \ GLsizei const size = 1; \ GLuint tmp[size]; \ fn.glGetOcclusionQueryuivNV(id, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETOCCLUSIONQUERYUIVNV(id, pname, params) \ fn.glGetOcclusionQueryuivNV(id, pname, HostAddr(params, GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_path_rendering */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLCOVERFILLPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues) \ pixelBuffer buf(*this); \ void *tmp = buf.convertArray(numPaths, pathNameType, (nfmemptr)paths); \ GLfloat transformbuf[MAX(numPaths, 0)], *vals; \ vals = Atari2HostFloatArray(numPaths, transformValues, transformbuf); \ fn.glCoverFillPathInstancedNV(numPaths, pathNameType, tmp, pathBase, coverMode, transformType, vals) #else #define FN_GLCOVERFILLPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues) \ fn.glCoverFillPathInstancedNV(numPaths, pathNameType, HostAddr(paths, const void *), pathBase, coverMode, transformType, HostAddr(transformValues, const GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLCOVERSTROKEPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues) \ pixelBuffer buf(*this); \ void *tmp = buf.convertArray(numPaths, pathNameType, (nfmemptr)paths); \ GLfloat vals[MAX(numPaths, 0)], *pvals; \ pvals = Atari2HostFloatArray(numPaths, transformValues, vals); \ fn.glCoverStrokePathInstancedNV(numPaths, pathNameType, tmp, pathBase, coverMode, transformType, pvals) #else #define FN_GLCOVERSTROKEPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues) \ fn.glCoverStrokePathInstancedNV(numPaths, pathNameType, HostAddr(paths, const void *), pathBase, coverMode, transformType, HostAddr(transformValues, const GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLPATHCOMMANDSNV(path, numCommands, commands, numCoords, coordType, coords) \ pixelBuffer buf(*this); \ GLubyte tmpcommands[MAX(numCommands, 0)], *pcommands; \ void *tmp = buf.convertArray(numCoords, coordType, (nfmemptr)coords); \ pcommands = Atari2HostByteArray(numCommands, commands, tmpcommands); \ fn.glPathCommandsNV(path, numCommands, pcommands, numCoords, coordType, tmp) #else #define FN_GLPATHCOMMANDSNV(path, numCommands, commands, numCoords, coordType, coords) \ fn.glPathCommandsNV(path, numCommands, HostAddr(commands, const GLubyte *), numCoords, coordType, HostAddr(coords, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLPATHCOORDSNV(path, numCoords, coordType, coords) \ pixelBuffer buf(*this); \ void *tmp = buf.convertArray(numCoords, coordType, (nfmemptr)coords); \ fn.glPathCoordsNV(path, numCoords, coordType, tmp) #else #define FN_GLPATHCOORDSNV(path, numCoords, coordType, coords) \ fn.glPathCoordsNV(path, numCoords, coordType, HostAddr(coords, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLPATHSUBCOMMANDSNV(path, commandStart, commandsToDelete, numCommands, commands, numCoords, coordType, coords) \ pixelBuffer buf(*this); \ GLubyte tmpcommands[MAX(numCommands, 0)], *pcommands; \ void *tmp = buf.convertArray(numCoords, coordType, (nfmemptr)coords); \ pcommands = Atari2HostByteArray(numCommands, commands, tmpcommands); \ fn.glPathSubCommandsNV(path, commandStart, commandsToDelete, numCommands, pcommands, numCoords, coordType, tmp) #else #define FN_GLPATHSUBCOMMANDSNV(path, commandStart, commandsToDelete, numCommands, commands, numCoords, coordType, coords) \ fn.glPathSubCommandsNV(path, commandStart, commandsToDelete, numCommands, HostAddr(commands, const GLubyte *), numCoords, coordType, HostAddr(coords, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLPATHSUBCOORDSNV(path, coordStart, numCoords, coordType, coords) \ pixelBuffer buf(*this); \ void *tmp = buf.convertArray(numCoords, coordType, (nfmemptr)coords); \ fn.glPathSubCoordsNV(path, coordStart, numCoords, coordType, tmp); #else #define FN_GLPATHSUBCOORDSNV(path, coordStart, numCoords, coordType, coords) \ fn.glPathSubCoordsNV(path, coordStart, numCoords, coordType, HostAddr(coords, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLPATHSTRINGNV(path, format, length, pathString) \ char stringbuf[MAX(length, 0)], *pstring; \ pstring = Atari2HostByteArray(length, AtariAddr(pathString, const char *), stringbuf); \ fn.glPathStringNV(path, format, length, pstring) #else #define FN_GLPATHSTRINGNV(path, format, length, pathString) \ fn.glPathStringNV(path, format, length, HostAddr(pathString, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLPATHGLYPHSNV(firstPathName, fontTarget, fontName, fontStyle, numGlyphs, type, charcodes, handleMissingGlyphs, pathParameterTemplate, emScale) \ pixelBuffer buf(*this); \ void *tmp = buf.convertArray(numGlyphs, type, (nfmemptr)charcodes); \ /* fontName is ascii string */ \ GLubyte namebuf[safe_strlen(fontName) + 1], *pfontName; \ pfontName = Atari2HostByteArray(sizeof(namebuf), fontName, namebuf); \ fn.glPathGlyphsNV(firstPathName, fontTarget, pfontName, fontStyle, numGlyphs, type, tmp, handleMissingGlyphs, pathParameterTemplate, emScale) #else #define FN_GLPATHGLYPHSNV(firstPathName, fontTarget, fontName, fontStyle, numGlyphs, type, charcodes, handleMissingGlyphs, pathParameterTemplate, emScale) \ fn.glPathGlyphsNV(firstPathName, fontTarget, HostAddr(fontName, const GLubyte *), fontStyle, numGlyphs, type, HostAddr(charcodes, const void *), handleMissingGlyphs, pathParameterTemplate, emScale) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLPATHGLYPHRANGENV(firstPathName, fontTarget, fontName, fontStyle, firstGlyph, numGlyphs, handleMissingGlyphs, pathParameterTemplate, emScale) \ char namebuf[safe_strlen(fontName) + 1], *pname; \ pname = Atari2HostByteArray(sizeof(namebuf), AtariAddr(fontName, const char *), namebuf); \ fn.glPathGlyphRangeNV(firstPathName, fontTarget, pname, fontStyle, firstGlyph, numGlyphs, handleMissingGlyphs, pathParameterTemplate, emScale) #else #define FN_GLPATHGLYPHRANGENV(firstPathName, fontTarget, fontName, fontStyle, firstGlyph, numGlyphs, handleMissingGlyphs, pathParameterTemplate, emScale) \ fn.glPathGlyphRangeNV(firstPathName, fontTarget, HostAddr(fontName, const void *), fontStyle, firstGlyph, numGlyphs, handleMissingGlyphs, pathParameterTemplate, emScale) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLWEIGHTPATHSNV(resultPath, numPaths, paths, weights) \ GLsizei const size = numPaths; \ GLuint pathbuf[size]; \ GLfloat weightbuf[size]; \ if (size <= 0) { glSetError(GL_INVALID_VALUE); return; } \ Atari2HostIntArray(size, paths, pathbuf); \ Atari2HostFloatArray(size, weights, weightbuf); \ fn.glWeightPathsNV(resultPath, numPaths, pathbuf, weightbuf) #else #define FN_GLWEIGHTPATHSNV(resultPath, numPaths, paths, weights) \ fn.glWeightPathsNV(resultPath, numPaths, HostAddr(paths, const GLuint *), HostAddr(weights, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTRANSFORMPATHNV(resultPath, srcPath, transformType, transformValues) \ GLsizei size; \ GLfloat tmp[16]; \ switch (transformType) { \ case GL_NONE: size = 0; break; \ case GL_TRANSLATE_X_NV: size = 1; break; \ case GL_TRANSLATE_Y_NV: size = 1; break; \ case GL_TRANSLATE_2D_NV: size = 2; break; \ case GL_TRANSLATE_3D_NV: size = 3; break; \ case GL_AFFINE_2D_NV: size = 6; break; \ case GL_PROJECTIVE_2D_NV: size = 6; break; \ case GL_TRANSPOSE_AFFINE_2D_NV: size = 6; break; \ case GL_TRANSPOSE_PROJECTIVE_2D_NV: size = 6; break; \ case GL_AFFINE_3D_NV: size = 12; break; \ case GL_PROJECTIVE_3D_NV: size = 12; break; \ case GL_TRANSPOSE_AFFINE_3D_NV: size = 12; break; \ case GL_TRANSPOSE_PROJECTIVE_3D_NV: size = 12; break; \ default: glSetError(GL_INVALID_ENUM); return; \ } \ Atari2HostFloatArray(size, transformValues, tmp); \ fn.glTransformPathNV(resultPath, srcPath, transformType, tmp) #else #define FN_GLTRANSFORMPATHNV(resultPath, srcPath, transformType, transformValues) \ fn.glTransformPathNV(resultPath, srcPath, transformType, HostAddr(transformValues, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPATHPARAMETERFVNV(path, pname, value) \ GLsizei const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glPathParameterfvNV(path, pname, tmp) #else #define FN_GLPATHPARAMETERFVNV(path, pname, value) \ fn.glPathParameterfvNV(path, pname, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPATHPARAMETERIVNV(path, pname, value) \ GLsizei const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, value, tmp); \ fn.glPathParameterivNV(path, pname, tmp) #else #define FN_GLPATHPARAMETERIVNV(path, pname, value) \ fn.glPathParameterivNV(path, pname, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPATHPARAMETERFVNV(path, pname, value) \ GLsizei const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetPathParameterfvNV(path, pname, tmp); \ Host2AtariFloatArray(size, tmp, value) #else #define FN_GLGETPATHPARAMETERFVNV(path, pname, value) \ fn.glGetPathParameterfvNV(path, pname, HostAddr(value, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPATHPARAMETERIVNV(path, pname, value) \ GLsizei const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetPathParameterivNV(path, pname, tmp); \ Host2AtariIntArray(size, tmp, value) #else #define FN_GLGETPATHPARAMETERIVNV(path, pname, value) \ fn.glGetPathParameterivNV(path, pname, HostAddr(value, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPATHDASHARRAYNV(path, dashCount, dashArray) \ GLsizei const size = dashCount; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, dashArray, tmp); \ fn.glPathDashArrayNV(path, dashCount, tmp) #else #define FN_GLPATHDASHARRAYNV(path, dashCount, dashArray) \ fn.glPathDashArrayNV(path, dashCount, HostAddr(dashArray, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPATHDASHARRAYNV(path, dashArray) \ GLint size = 0; \ fn.glGetPathParameterivNV(path, GL_PATH_DASH_ARRAY_COUNT_NV, &size); \ if (size <= 0) return; \ GLfloat tmp[size]; \ fn.glGetPathDashArrayNV(path, tmp); \ Host2AtariFloatArray(size, tmp, dashArray) #else #define FN_GLGETPATHDASHARRAYNV(path, dashArray) \ fn.glGetPathDashArrayNV(path, HostAddr(dashArray, GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETPATHCOMMANDSNV(path, commands) \ GLint size = 0; \ fn.glGetPathParameterivNV(path, GL_PATH_COMMAND_COUNT_NV, &size); \ if (size <= 0) return; \ GLubyte tmp[size]; \ fn.glGetPathCommandsNV(path, tmp); \ Host2AtariByteArray(size, tmp, commands) #else #define FN_GLGETPATHCOMMANDSNV(path, commands) \ fn.glGetPathCommandsNV(path, HostAddr(commands, GLubyte *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPATHCOORDSNV(path, coords) \ GLint size = 0; \ fn.glGetPathParameterivNV(path, GL_PATH_COORD_COUNT_NV, &size); \ if (size <= 0) return; \ GLfloat tmp[size]; \ fn.glGetPathCoordsNV(path, tmp); \ Host2AtariFloatArray(size, tmp, coords) #else #define FN_GLGETPATHCOORDSNV(path, coords) \ fn.glGetPathCoordsNV(path, HostAddr(coords, GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLSTENCILFILLPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, fillMode, mask, transformType, transformValues) \ GLsizei size; \ pixelBuffer buf(*this); \ GLfloat tmp[16]; \ switch (transformType) { \ case GL_NONE: size = 0; break; \ case GL_TRANSLATE_X_NV: size = 1; break; \ case GL_TRANSLATE_Y_NV: size = 1; break; \ case GL_TRANSLATE_2D_NV: size = 2; break; \ case GL_TRANSLATE_3D_NV: size = 3; break; \ case GL_AFFINE_2D_NV: size = 6; break; \ case GL_PROJECTIVE_2D_NV: size = 6; break; \ case GL_TRANSPOSE_AFFINE_2D_NV: size = 6; break; \ case GL_TRANSPOSE_PROJECTIVE_2D_NV: size = 6; break; \ case GL_AFFINE_3D_NV: size = 12; break; \ case GL_PROJECTIVE_3D_NV: size = 12; break; \ case GL_TRANSPOSE_AFFINE_3D_NV: size = 12; break; \ case GL_TRANSPOSE_PROJECTIVE_3D_NV: size = 12; break; \ default: glSetError(GL_INVALID_ENUM); return; \ } \ void *ppaths = buf.convertArray(numPaths, pathNameType, (nfmemptr)paths); \ Atari2HostFloatArray(size, transformValues, tmp); \ fn.glStencilFillPathInstancedNV(numPaths, pathNameType, ppaths, pathBase, fillMode, mask, transformType, tmp) #else #define FN_GLSTENCILFILLPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, fillMode, mask, transformType, transformValues) \ fn.glStencilFillPathInstancedNV(numPaths, pathNameType, HostAddr(paths, const void *), pathBase, fillMode, mask, transformType, HostAddr(transformValues, const GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLSTENCILSTROKEPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, reference, mask, transformType, transformValues) \ GLsizei size; \ GLfloat tmp[16]; \ switch (transformType) { \ case GL_NONE: size = 0; break; \ case GL_TRANSLATE_X_NV: size = 1; break; \ case GL_TRANSLATE_Y_NV: size = 1; break; \ case GL_TRANSLATE_2D_NV: size = 2; break; \ case GL_TRANSLATE_3D_NV: size = 3; break; \ case GL_AFFINE_2D_NV: size = 6; break; \ case GL_PROJECTIVE_2D_NV: size = 6; break; \ case GL_TRANSPOSE_AFFINE_2D_NV: size = 6; break; \ case GL_TRANSPOSE_PROJECTIVE_2D_NV: size = 6; break; \ case GL_AFFINE_3D_NV: size = 12; break; \ case GL_PROJECTIVE_3D_NV: size = 12; break; \ case GL_TRANSPOSE_AFFINE_3D_NV: size = 12; break; \ case GL_TRANSPOSE_PROJECTIVE_3D_NV: size = 12; break; \ default: glSetError(GL_INVALID_ENUM); return; \ } \ pixelBuffer buf(*this); \ void *ppaths = buf.convertArray(numPaths, pathNameType, (nfmemptr)paths); \ Atari2HostFloatArray(size, transformValues, tmp); \ fn.glStencilStrokePathInstancedNV(numPaths, pathNameType, ppaths, pathBase, reference, mask, transformType, tmp) #else #define FN_GLSTENCILSTROKEPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, reference, mask, transformType, transformValues) \ fn.glStencilStrokePathInstancedNV(numPaths, pathNameType, HostAddr(paths, const void *), pathBase, reference, mask, transformType, HostAddr(transformValues, const GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPATHMETRICSNV(metricQueryMask, numPaths, pathNameType, paths, pathBase, stride, metrics) \ GLsizei size = stride; \ if (size < 0) { glSetError(GL_INVALID_VALUE); return; } \ pixelBuffer buf(*this); \ void *ppaths = buf.convertArray(numPaths, pathNameType, (nfmemptr)paths); \ if (size == 0) { \ GLbitfield mask = metricQueryMask; \ while (mask) \ { \ if (mask & 1) size += sizeof(GLfloat); \ mask >>= 1; \ } \ } else { \ size = (stride / ATARI_SIZEOF_FLOAT) * sizeof(GLfloat); \ } \ GLfloat *tmp = (GLfloat *)calloc(numPaths, size); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ fn.glGetPathMetricsNV(metricQueryMask, numPaths, pathNameType, ppaths, pathBase, size, tmp); \ Host2AtariFloatArray((size / sizeof(GLfloat)) * numPaths, tmp, metrics); \ free(tmp) #else #define FN_GLGETPATHMETRICSNV(metricQueryMask, numPaths, pathNameType, paths, pathBase, stride, metrics) \ fn.glGetPathMetricsNV(metricQueryMask, numPaths, pathNameType, HostAddr(paths, const void *), pathBase, stride, HostAddr(metrics, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPATHMETRICRANGENV(metricQueryMask, firstPathName, numPaths, stride, metrics) \ GLsizei size = stride; \ if (size < 0) { glSetError(GL_INVALID_VALUE); return; } \ if (size == 0) { \ GLbitfield mask = metricQueryMask; \ while (mask) \ { \ if (mask & 1) size += sizeof(GLfloat); \ mask >>= 1; \ } \ } else { \ size = (stride / ATARI_SIZEOF_FLOAT) * sizeof(GLfloat); \ } \ GLfloat *tmp = (GLfloat *)calloc(numPaths, size); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ fn.glGetPathMetricRangeNV(metricQueryMask, firstPathName, numPaths, size, tmp); \ Host2AtariFloatArray((size / sizeof(GLfloat)) * numPaths, tmp, metrics); \ free(tmp) #else #define FN_GLGETPATHMETRICRANGENV(metricQueryMask, firstPathName, numPaths, stride, metrics) \ fn.glGetPathMetricRangeNV(metricQueryMask, firstPathName, numPaths, stride, HostAddr(metrics, GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPATHSPACINGNV(pathListMode, numPaths, pathNameType, paths, pathBase, advanceScale, kerningScale, transformType, returnedSpacing) \ GLsizei size; \ if (numPaths <= 1) { glSetError(GL_INVALID_VALUE); return; } \ switch (transformType) { \ case GL_TRANSLATE_X_NV: size = 1; break; \ case GL_TRANSLATE_2D_NV: size = 2; break; \ default: glSetError(GL_INVALID_ENUM); return; \ } \ size *= numPaths - 1; \ pixelBuffer buf(*this); \ void *ppaths = buf.convertArray(numPaths, pathNameType, (nfmemptr)paths); \ GLfloat *tmp = (GLfloat *)calloc(size, sizeof(GLfloat)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ fn.glGetPathSpacingNV(pathListMode, numPaths, pathNameType, ppaths, pathBase, advanceScale, kerningScale, transformType, tmp); \ Host2AtariFloatArray(size, tmp, returnedSpacing) #else #define FN_GLGETPATHSPACINGNV(pathListMode, numPaths, pathNameType, paths, pathBase, advanceScale, kerningScale, transformType, returnedSpacing) \ fn.glGetPathSpacingNV(pathListMode, numPaths, pathNameType, HostAddr(paths, const void *), pathBase, advanceScale, kerningScale, transformType, HostAddr(returnedSpacing, GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPOINTALONGPATHNV(path, startSegment, numSegments, distance, x, y, tangentX, tangentY) \ GLsizei const size = 1; \ GLfloat xret, yret, tangentXret, tangentYret; \ GLboolean ret = fn.glPointAlongPathNV(path, startSegment, numSegments, distance, &xret, &yret, &tangentXret, &tangentYret); \ Host2AtariFloatArray(size, &xret, x); \ Host2AtariFloatArray(size, &yret, y); \ Host2AtariFloatArray(size, &tangentXret, tangentX); \ Host2AtariFloatArray(size, &tangentYret, tangentY); \ return ret #else #define FN_GLPOINTALONGPATHNV(path, startSegment, numSegments, distance, x, y, tangentX, tangentY) \ return fn.glPointAlongPathNV(path, startSegment, numSegments, distance, HostAddr(x, GLfloat *), HostAddr(y, GLfloat *), HostAddr(tangentX, GLfloat *), HostAddr(tangentY, GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLSTENCILTHENCOVERFILLPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, fillMode, mask, coverMode, transformType, transformValues) \ GLsizei size; \ GLfloat tmp[16]; \ switch (transformType) { \ case GL_NONE: size = 0; break; \ case GL_TRANSLATE_X_NV: size = 1; break; \ case GL_TRANSLATE_Y_NV: size = 1; break; \ case GL_TRANSLATE_2D_NV: size = 2; break; \ case GL_TRANSLATE_3D_NV: size = 3; break; \ case GL_AFFINE_2D_NV: size = 6; break; \ case GL_PROJECTIVE_2D_NV: size = 6; break; \ case GL_TRANSPOSE_AFFINE_2D_NV: size = 6; break; \ case GL_TRANSPOSE_PROJECTIVE_2D_NV: size = 6; break; \ case GL_AFFINE_3D_NV: size = 12; break; \ case GL_PROJECTIVE_3D_NV: size = 12; break; \ case GL_TRANSPOSE_AFFINE_3D_NV: size = 12; break; \ case GL_TRANSPOSE_PROJECTIVE_3D_NV: size = 12; break; \ default: glSetError(GL_INVALID_ENUM); return; \ } \ pixelBuffer buf(*this); \ void *ppaths = buf.convertArray(numPaths, pathNameType, (nfmemptr)paths); \ Atari2HostFloatArray(size, transformValues, tmp); \ fn.glStencilThenCoverFillPathInstancedNV(numPaths, pathNameType, ppaths, pathBase, fillMode, mask, coverMode, transformType, tmp) #else #define FN_GLSTENCILTHENCOVERFILLPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, fillMode, mask, coverMode, transformType, transformValues) \ fn.glStencilThenCoverFillPathInstancedNV(numPaths, pathNameType, HostAddr(paths, const void *), pathBase, fillMode, mask, coverMode, transformType, HostAddr(transformValues, const GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLSTENCILTHENCOVERSTROKEPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, reference, mask, coverMode, transformType, transformValues) \ GLsizei size; \ GLfloat tmp[16]; \ switch (transformType) { \ case GL_NONE: size = 0; break; \ case GL_TRANSLATE_X_NV: size = 1; break; \ case GL_TRANSLATE_Y_NV: size = 1; break; \ case GL_TRANSLATE_2D_NV: size = 2; break; \ case GL_TRANSLATE_3D_NV: size = 3; break; \ case GL_AFFINE_2D_NV: size = 6; break; \ case GL_PROJECTIVE_2D_NV: size = 6; break; \ case GL_TRANSPOSE_AFFINE_2D_NV: size = 6; break; \ case GL_TRANSPOSE_PROJECTIVE_2D_NV: size = 6; break; \ case GL_AFFINE_3D_NV: size = 12; break; \ case GL_PROJECTIVE_3D_NV: size = 12; break; \ case GL_TRANSPOSE_AFFINE_3D_NV: size = 12; break; \ case GL_TRANSPOSE_PROJECTIVE_3D_NV: size = 12; break; \ default: glSetError(GL_INVALID_ENUM); return; \ } \ pixelBuffer buf(*this); \ void *ppaths = buf.convertArray(numPaths, pathNameType, (nfmemptr)paths); \ Atari2HostFloatArray(size, transformValues, tmp); \ fn.glStencilThenCoverStrokePathInstancedNV(numPaths, pathNameType, ppaths, pathBase, reference, mask, coverMode, transformType, tmp) #else #define FN_GLSTENCILTHENCOVERSTROKEPATHINSTANCEDNV(numPaths, pathNameType, paths, pathBase, reference, mask, coverMode, transformType, transformValues) \ fn.glStencilThenCoverStrokePathInstancedNV(numPaths, pathNameType, HostAddr(paths, const void *), pathBase, reference, mask, coverMode, transformType, HostAddr(transformValues, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPATHGLYPHINDEXRANGENV(fontTarget, fontName, fontStyle, pathParameterTemplate, emScale, baseAndCount) \ GLsizei const size = 2; \ GLuint tmp[size]; \ /* fontName is ascii string */ \ char namebuf[safe_strlen(fontName) + 1], *pname; \ pname = Atari2HostByteArray(sizeof(namebuf), AtariAddr(fontName, const char *), namebuf); \ GLenum ret = fn.glPathGlyphIndexRangeNV(fontTarget, pname, fontStyle, pathParameterTemplate, emScale, tmp); \ Host2AtariIntArray(size, tmp, baseAndCount); \ return ret #else #define FN_GLPATHGLYPHINDEXRANGENV(fontTarget, fontName, fontStyle, pathParameterTemplate, emScale, baseAndCount) \ return fn.glPathGlyphIndexRangeNV(fontTarget, HostAddr(fontName, const void *), fontStyle, pathParameterTemplate, emScale, HostAddr(baseAndCount, GLuint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLPATHGLYPHINDEXARRAYNV(firstPathName, fontTarget, fontName, fontStyle, firstGlyph, numGlyphs, pathParameterTemplate, emScale) \ char namebuf[safe_strlen(fontName) + 1], *pname; \ pname = Atari2HostByteArray(sizeof(namebuf), AtariAddr(fontName, const char *), namebuf); \ return fn.glPathGlyphIndexArrayNV(firstPathName, fontTarget, pname, fontStyle, firstGlyph, numGlyphs, pathParameterTemplate, emScale) #else #define FN_GLPATHGLYPHINDEXARRAYNV(firstPathName, fontTarget, fontName, fontStyle, firstGlyph, numGlyphs, pathParameterTemplate, emScale) \ return fn.glPathGlyphIndexArrayNV(firstPathName, fontTarget, HostAddr(fontName, const void *), fontStyle, firstGlyph, numGlyphs, pathParameterTemplate, emScale) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLPATHMEMORYGLYPHINDEXARRAYNV(firstPathName, fontTarget, fontSize, fontData, faceIndex, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale) \ char tmp[MAX(fontSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(fontSize, AtariAddr(fontData, const char *), tmp); \ return fn.glPathMemoryGlyphIndexArrayNV(firstPathName, fontTarget, fontSize, ptmp, faceIndex, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale) #else #define FN_GLPATHMEMORYGLYPHINDEXARRAYNV(firstPathName, fontTarget, fontSize, fontData, faceIndex, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale) \ return fn.glPathMemoryGlyphIndexArrayNV(firstPathName, fontTarget, fontSize, HostAddr(fontData, const void *), faceIndex, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMPATHFRAGMENTINPUTGENNV(program, location, genMode, components, coeffs) \ GLsizei const size = components; \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, coeffs, tmp); \ fn.glProgramPathFragmentInputGenNV(program, location, genMode, components, ptmp) #else #define FN_GLPROGRAMPATHFRAGMENTINPUTGENNV(program, location, genMode, components, coeffs) \ fn.glProgramPathFragmentInputGenNV(program, location, genMode, components, HostAddr(coeffs, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPATHCOLORGENNV(color, genMode, colorFormat, coeffs) \ pixelBuffer buf(*this); \ if (!buf.params(1, 1, 1, GL_FLOAT, colorFormat)) return; \ GLint const size = nfglGetNumParams(genMode) * buf.ComponentCount(); \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, coeffs, tmp); \ fn.glPathColorGenNV(color, genMode, colorFormat, ptmp) #else #define FN_GLPATHCOLORGENNV(color, genMode, colorFormat, coeffs) \ fn.glPathColorGenNV(color, genMode, colorFormat, HostAddr(coeffs, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPATHCOLORGENFVNV(color, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[size]; \ fn.glGetPathColorGenfvNV(color, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETPATHCOLORGENFVNV(color, pname, params) \ fn.glGetPathColorGenfvNV(color, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPATHCOLORGENIVNV(color, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[size]; \ fn.glGetPathColorGenivNV(color, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETPATHCOLORGENIVNV(color, pname, params) \ fn.glGetPathColorGenivNV(color, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPATHTEXGENNV(texCoordSet, genMode, components, coeffs) \ GLint const size = components; \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, coeffs, tmp); \ fn.glPathTexGenNV(texCoordSet, genMode, components, ptmp) #else #define FN_GLPATHTEXGENNV(texCoordSet, genMode, components, coeffs) \ fn.glPathTexGenNV(texCoordSet, genMode, components, HostAddr(coeffs, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPATHTEXGENFVNV(texCoordSet, pname, value) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[size]; \ fn.glGetPathTexGenfvNV(texCoordSet, pname, tmp); \ Host2AtariFloatArray(size, tmp, value) #else #define FN_GLGETPATHTEXGENFVNV(texCoordSet, pname, value) \ fn.glGetPathTexGenfvNV(texCoordSet, pname, HostAddr(value, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPATHTEXGENIVNV(texCoordSet, pname, value) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[size]; \ fn.glGetPathTexGenivNV(texCoordSet, pname, tmp); \ Host2AtariIntArray(size, tmp, value) #else #define FN_GLGETPATHTEXGENIVNV(texCoordSet, pname, value) \ fn.glGetPathTexGenivNV(texCoordSet, pname, HostAddr(value, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMATRIXLOAD3X2FNV(matrixMode, m) \ GLint const size = 6; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, m, tmp); \ fn.glMatrixLoad3x2fNV(matrixMode, tmp) #else #define FN_GLMATRIXLOAD3X2FNV(matrixMode, m) \ fn.glMatrixLoad3x2fNV(matrixMode, HostAddr(m, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMATRIXLOAD3X3FNV(matrixMode, m) \ GLint const size = 9; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, m, tmp); \ fn.glMatrixLoad3x3fNV(matrixMode, tmp) #else #define FN_GLMATRIXLOAD3X3FNV(matrixMode, m) \ fn.glMatrixLoad3x3fNV(matrixMode, HostAddr(m, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMATRIXLOADTRANSPOSE3X3FNV(matrixMode, m) \ GLint const size = 9; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, m, tmp); \ fn.glMatrixLoadTranspose3x3fNV(matrixMode, tmp) #else #define FN_GLMATRIXLOADTRANSPOSE3X3FNV(matrixMode, m) \ fn.glMatrixLoadTranspose3x3fNV(matrixMode, HostAddr(m, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMATRIXMULT3X2FNV(matrixMode, m) \ GLint const size = 6; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, m, tmp); \ fn.glMatrixMult3x2fNV(matrixMode, tmp) #else #define FN_GLMATRIXMULT3X2FNV(matrixMode, m) \ fn.glMatrixMult3x2fNV(matrixMode, HostAddr(m, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMATRIXMULT3X3FNV(matrixMode, m) \ GLint const size = 9; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, m, tmp); \ fn.glMatrixMult3x3fNV(matrixMode, tmp) #else #define FN_GLMATRIXMULT3X3FNV(matrixMode, m) \ fn.glMatrixMult3x3fNV(matrixMode, HostAddr(m, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMATRIXMULTTRANSPOSE3X3FNV(matrixMode, m) \ GLint const size = 9; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, m, tmp); \ fn.glMatrixMultTranspose3x3fNV(matrixMode, tmp) #else #define FN_GLMATRIXMULTTRANSPOSE3X3FNV(matrixMode, m) \ fn.glMatrixLoadTranspose3x3fNV(matrixMode, HostAddr(m, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPROGRAMRESOURCEFVNV(program, programInterface, index, propCount, props, bufSize, length, params) \ GLenum propbuf[MAX(propCount, 0)], *ptmp; \ GLsizei l = 0; \ GLfloat parambuf[MAX(bufSize, 0)]; \ ptmp = Atari2HostIntArray(propCount, props, propbuf); \ fn.glGetProgramResourcefvNV(program, programInterface, index, propCount, ptmp, bufSize, &l, parambuf); \ Host2AtariFloatArray(l, parambuf, params); \ Host2AtariIntArray(1, &l, length) #else #define FN_GLGETPROGRAMRESOURCEFVNV(program, programInterface, index, propCount, props, bufSize, length, params) \ fn.glGetProgramResourcefvNV(program, programInterface, index, propCount, HostAddr(props, const GLenum *), bufSize, HostAddr(length, GLsizei *), HostAddr(params, GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_internalformat_sample_query */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGETINTERNALFORMATSAMPLEIVNV(target, internalformat, samples, pname, bufSize, params) \ GLint parambuf[MAX(bufSize, 0)]; \ fn.glGetInternalformatSampleivNV(target, internalformat, samples, pname, bufSize, parambuf); \ Host2AtariIntArray(bufSize, parambuf, params) #else #define FN_GLGETINTERNALFORMATSAMPLEIVNV(target, internalformat, samples, pname, bufSize, params) \ fn.glGetInternalformatSampleivNV(target, internalformat, samples, pname, bufSize, HostAddr(params, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_AMD_performance_monitor */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGENPERFMONITORSAMD(n, monitors) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenPerfMonitorsAMD(n, tmp); \ Host2AtariIntArray(n, tmp, monitors) #else #define FN_GLGENPERFMONITORSAMD(n, monitors) \ fn.glGenPerfMonitorsAMD(n, HostAddr(monitors, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETEPERFMONITORSAMD(n, monitors) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, monitors, tmp); \ fn.glDeletePerfMonitorsAMD(n, ptmp) #else #define FN_GLDELETEPERFMONITORSAMD(n, monitors) \ fn.glDeletePerfMonitorsAMD(n, HostAddr(monitors, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPERFMONITORGROUPSAMD(numGroups, groupsSize, groups) \ GLsizei const size = MAX(groupsSize, 0); \ GLuint tmp[size]; \ GLuint *pgroups; \ GLint num = 0; \ if (groups) { \ pgroups = tmp; \ } else { \ pgroups = NULL; \ } \ fn.glGetPerfMonitorGroupsAMD(&num, groupsSize, pgroups); \ Host2AtariIntArray(1, &num, numGroups); \ Host2AtariIntArray(num, pgroups, groups) #else #define FN_GLGETPERFMONITORGROUPSAMD(numGroups, groupsSize, groups) \ fn.glGetPerfMonitorGroupsAMD(HostAddr(numGroups, GLint *), groupsSize, HostAddr(groups, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPERFMONITORCOUNTERSAMD(group, numCounters, maxActiveCounters, counterSize, counters) \ GLsizei const size = MAX(counterSize, 0); \ GLuint tmp[size]; \ GLuint *pcounters; \ GLint num = 0; \ GLint max = 0; \ if (counters) { \ pcounters = tmp; \ } else { \ pcounters = NULL; \ } \ fn.glGetPerfMonitorCountersAMD(group, &num, &max, counterSize, pcounters); \ Host2AtariIntArray(1, &num, numCounters); \ Host2AtariIntArray(1, &max, maxActiveCounters); \ Host2AtariIntArray(num, pcounters, counters) #else #define FN_GLGETPERFMONITORCOUNTERSAMD(group, numCounters, maxActiveCounters, counterSize, counters) \ fn.glGetPerfMonitorCountersAMD(group, HostAddr(numCounters, GLint *), HostAddr(maxActiveCounters, GLint *), counterSize, HostAddr(counters, GLuint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETPERFMONITORGROUPSTRINGAMD(group, bufSize, length, groupString) \ GLsizei l = 0; \ GLchar stringbuf[MAX(bufSize, 0)]; \ fn.glGetPerfMonitorGroupStringAMD(group, bufSize, &l, stringbuf); \ Host2AtariByteArray(MIN(l + 1, bufSize), stringbuf, groupString); \ Host2AtariIntArray(1, &l, length) #else #define FN_GLGETPERFMONITORGROUPSTRINGAMD(group, bufSize, length, groupString) \ fn.glGetPerfMonitorGroupStringAMD(group, bufSize, HostAddr(length, GLsizei *), HostAddr(groupString, GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETPERFMONITORCOUNTERSTRINGAMD(group, counter, bufSize, length, counterString) \ GLsizei l = 0; \ GLchar stringbuf[MAX(bufSize, 0)]; \ fn.glGetPerfMonitorCounterStringAMD(group, counter, bufSize, &l, stringbuf); \ Host2AtariByteArray(MIN(l + 1, bufSize), stringbuf, counterString); \ Host2AtariIntArray(1, &l, length) #else #define FN_GLGETPERFMONITORCOUNTERSTRINGAMD(group, counter, bufSize, length, counterString) \ fn.glGetPerfMonitorCounterStringAMD(group, counter, bufSize, HostAddr(length, GLsizei *), HostAddr(counterString, GLchar *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPERFMONITORCOUNTERINFOAMD(group, counter, pname, data) \ switch (pname) { \ case GL_COUNTER_TYPE_AMD: \ { \ GLint const size = 1; \ GLenum tmp[size]; \ fn.glGetPerfMonitorCounterInfoAMD(group, counter, pname, tmp); \ Host2AtariIntArray(size, tmp, AtariAddr(data, Uint32 *)); \ } \ break; \ case GL_COUNTER_RANGE_AMD: \ { \ GLenum type = 0; \ GLint const size = 2; \ fn.glGetPerfMonitorCounterInfoAMD(group, counter, GL_COUNTER_TYPE_AMD, &type); \ switch (type) { \ case GL_UNSIGNED_INT: \ { \ GLuint tmp[size]; \ fn.glGetPerfMonitorCounterInfoAMD(group, counter, pname, tmp); \ Host2AtariIntArray(size, tmp, AtariAddr(data, Uint32 *)); \ } \ break; \ case GL_UNSIGNED_INT64_AMD: \ { \ GLuint64 tmp[size]; \ fn.glGetPerfMonitorCounterInfoAMD(group, counter, pname, tmp); \ Host2AtariInt64Array(size, tmp, AtariAddr(data, Uint64 *)); \ } \ break; \ case GL_FLOAT: \ case GL_PERCENTAGE_AMD: \ { \ GLfloat tmp[size]; \ fn.glGetPerfMonitorCounterInfoAMD(group, counter, pname, tmp); \ Host2AtariFloatArray(size, tmp, AtariAddr(data, GLfloat *)); \ } \ break; \ default: \ glSetError(GL_INVALID_OPERATION); \ break; \ } \ } \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ break; \ } #else #define FN_GLGETPERFMONITORCOUNTERINFOAMD(group, counter, pname, data) \ fn.glGetPerfMonitorCounterInfoAMD(group, counter, pname, HostAddr(data, void *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSELECTPERFMONITORCOUNTERSAMD(monitor, enable, group, numCounters, counterList) \ GLuint tmp[MAX(numCounters, 0)], *ptmp; \ ptmp = Atari2HostIntArray(numCounters, counterList, tmp); \ fn.glSelectPerfMonitorCountersAMD(monitor, enable, group, numCounters, ptmp) #else #define FN_GLSELECTPERFMONITORCOUNTERSAMD(monitor, enable, group, numCounters, counterList) \ fn.glSelectPerfMonitorCountersAMD(monitor, enable, group, numCounters, HostAddr(counterList, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPERFMONITORCOUNTERDATAAMD(monitor, pname, dataSize, data, bytesWritten) \ GLint written = 0; \ switch (pname) { \ case GL_PERFMON_RESULT_AVAILABLE_AMD: \ case GL_PERFMON_RESULT_SIZE_AMD: \ { \ GLint const size = 1; \ GLuint tmp[size]; \ fn.glGetPerfMonitorCounterDataAMD(monitor, pname, dataSize, tmp, &written); \ Host2AtariIntArray(size, tmp, data); \ } \ break; \ case GL_PERFMON_RESULT_AMD: \ { \ GLint const size = dataSize / sizeof(GLuint); \ if (size <= 0) return; \ GLuint tmp[size]; \ fn.glGetPerfMonitorCounterDataAMD(monitor, pname, dataSize, tmp, &written); \ if (written > 0 && data) Host2AtariIntArray(written / sizeof(GLuint), tmp, data); \ } \ break; \ } \ Host2AtariIntArray(1, &written, bytesWritten) #else #define FN_GLGETPERFMONITORCOUNTERDATAAMD(monitor, pname, dataSize, data, bytesWritten) \ fn.glGetPerfMonitorCounterDataAMD(monitor, pname, dataSize, HostAddr(data, GLuint *), HostAddr(bytesWritten, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_half_float */ #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEX2HVNV(v) \ GLint const size = 2; \ GLhalfNV tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertex2hvNV(tmp) #else #define FN_GLVERTEX2HVNV(v) \ fn.glVertex2hvNV(HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEX3HVNV(v) \ GLint const size = 4; \ GLhalfNV tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertex3hvNV(tmp) #else #define FN_GLVERTEX3HVNV(v) \ fn.glVertex3hvNV(HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEX4HVNV(v) \ GLint const size = 4; \ GLhalfNV tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertex4hvNV(tmp) #else #define FN_GLVERTEX4HVNV(v) \ fn.glVertex4hvNV(HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLNORMAL3HVNV(v) \ int const size = 3; \ GLhalfNV tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glNormal3hvNV(tmp) #else #define FN_GLNORMAL3HVNV(v) \ fn.glNormal3hvNV(HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLOR3HVNV(v) \ GLhalfNV tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glColor3hvNV(tmp) #else #define FN_GLCOLOR3HVNV(v) \ fn.glColor3hvNV(HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLOR4HVNV(v) \ GLhalfNV tmp[4]; \ Atari2HostShortArray(4, v, tmp); \ fn.glColor4hvNV(tmp) #else #define FN_GLCOLOR4HVNV(v) \ fn.glColor4hvNV(HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD1HVNV(v) \ GLhalfNV tmp[1]; \ Atari2HostShortArray(1, v, tmp); \ fn.glTexCoord1hvNV(tmp) #else #define FN_GLTEXCOORD1HVNV(v) \ fn.glTexCoord1hvNV(HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD2HVNV(v) \ GLhalfNV tmp[2]; \ Atari2HostShortArray(2, v, tmp); \ fn.glTexCoord2hvNV(tmp) #else #define FN_GLTEXCOORD2HVNV(v) \ fn.glTexCoord2hvNV(HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD3HVNV(v) \ GLhalfNV tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glTexCoord3hvNV(tmp) #else #define FN_GLTEXCOORD3HVNV(v) \ fn.glTexCoord3hvNV(HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD4HVNV(v) \ GLhalfNV tmp[4]; \ Atari2HostShortArray(4, v, tmp); \ fn.glTexCoord4hvNV(tmp) #else #define FN_GLTEXCOORD4HVNV(v) \ fn.glTexCoord4hvNV(HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD1HVNV(target, v) \ int const size = 1; \ GLhalfNV tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glMultiTexCoord1hvNV(target, tmp) #else #define FN_GLMULTITEXCOORD1HVNV(target, v) \ fn.glMultiTexCoord1hvNV(target, HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD2HVNV(target, v) \ int const size = 2; \ GLhalfNV tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glMultiTexCoord2hvNV(target, tmp) #else #define FN_GLMULTITEXCOORD2HVNV(target, v) \ fn.glMultiTexCoord2hvNV(target, HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD3HVNV(target, v) \ int const size = 3; \ GLhalfNV tmp[size]; \ Atari2HostShortArray(3, v, tmp); \ fn.glMultiTexCoord3hvNV(target, tmp) #else #define FN_GLMULTITEXCOORD3HVNV(target, v) \ fn.glMultiTexCoord3hvNV(target, HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD4HVNV(target, v) \ int const size = 4; \ GLhalfNV tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glMultiTexCoord4hvNV(target, tmp) #else #define FN_GLMULTITEXCOORD4HVNV(target, v) \ fn.glMultiTexCoord4hvNV(target, HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLFOGCOORDHVNV(fog) \ GLhalfNV tmp[1]; \ Atari2HostShortArray(1, fog, tmp); \ fn.glFogCoordhvNV(tmp) #else #define FN_GLFOGCOORDHVNV(fog) \ fn.glFogCoordhvNV(HostAddr(fog, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSECONDARYCOLOR3HVNV(v) \ GLhalfNV tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glSecondaryColor3hvNV(tmp) #else #define FN_GLSECONDARYCOLOR3HVNV(v) \ fn.glSecondaryColor3hvNV(HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXWEIGHTHVNV(weight) \ GLhalfNV tmp[1]; \ Atari2HostShortArray(1, weight, tmp); \ fn.glVertexWeighthvNV(tmp) #else #define FN_GLVERTEXWEIGHTHVNV(weight) \ fn.glVertexWeighthvNV(HostAddr(weight, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB1HVNV(index, v) \ GLint const size = 1; \ GLhalfNV tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib1hvNV(index, tmp) #else #define FN_GLVERTEXATTRIB1HVNV(index, v) \ fn.glVertexAttrib1hvNV(index, HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB2HVNV(index, v) \ GLint const size = 2; \ GLhalfNV tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib2hvNV(index, tmp) #else #define FN_GLVERTEXATTRIB2HVNV(index, v) \ fn.glVertexAttrib2hvNV(index, HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB3HVNV(index, v) \ GLint const size = 3; \ GLhalfNV tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib3hvNV(index, tmp) #else #define FN_GLVERTEXATTRIB3HVNV(index, v) \ fn.glVertexAttrib3hvNV(index, HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4HVNV(index, v) \ GLint const size = 4; \ GLhalfNV tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib4hvNV(index, tmp) #else #define FN_GLVERTEXATTRIB4HVNV(index, v) \ fn.glVertexAttrib4hvNV(index, HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBS1HVNV(index, n, v) \ GLhalfNV tmp[1]; \ Atari2HostShortArray(1, v, tmp); \ fn.glVertexAttribs1hvNV(index, n, tmp) #else #define FN_GLVERTEXATTRIBS1HVNV(index, n, v) \ fn.glVertexAttribs1hvNV(index, n, HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBS2HVNV(index, n, v) \ GLhalfNV tmp[2]; \ Atari2HostShortArray(2, v, tmp); \ fn.glVertexAttribs2hvNV(index, n, tmp) #else #define FN_GLVERTEXATTRIBS2HVNV(index, n, v) \ fn.glVertexAttribs2hvNV(index, n, HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBS3HVNV(index, n, v) \ GLhalfNV tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glVertexAttribs3hvNV(index, n, tmp) #else #define FN_GLVERTEXATTRIBS3HVNV(index, n, v) \ fn.glVertexAttribs3hvNV(index, n, HostAddr(v, const GLhalfNV *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBS4HVNV(index, n, v) \ GLhalfNV tmp[4]; \ Atari2HostShortArray(4, v, tmp); \ fn.glVertexAttribs4hvNV(index, n, tmp) #else #define FN_GLVERTEXATTRIBS4HVNV(index, n, v) \ fn.glVertexAttribs4hvNV(index, n, HostAddr(v, const GLhalfNV *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_OES_single_precision */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLCLIPPLANEFOES(plane, equation) \ GLfloat tmp[4]; \ Atari2HostFloatArray(4, equation, tmp); \ fn.glClipPlanefOES(plane, tmp) #else #define FN_GLCLIPPLANEFOES(plane, equation) \ fn.glClipPlanefOES(plane, HostAddr(equation, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETCLIPPLANEFOES(plane, equation) \ GLfloat tmp[4]; \ fn.glGetClipPlanefOES(plane, tmp); \ Host2AtariFloatArray(4, tmp, equation) #else #define FN_GLGETCLIPPLANEFOES(plane, equation) \ fn.glGetClipPlanefOES(plane, HostAddr(equation, GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_OES_fixed_point */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGETFIXEDVOES(pname, params) \ int const n = nfglGetNumParams(pname); \ GLfixed tmp[MAX(n, 16)]; \ fn.glGetFixedvOES(pname, tmp); \ Host2AtariIntArray(n, tmp, params) #else #define FN_GLGETFIXEDVOES(pname, params) \ fn.glGetFixedvOES(pname, HostAddr(params, GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPIXELMAPXV(map, size, values) \ if (size <= 0) return; \ GLfixed tmp[size]; \ fn.glGetPixelMapxv(map, size, tmp); \ Host2AtariIntArray(size, tmp, values) #else #define FN_GLGETPIXELMAPXV(map, size, values) \ fn.glGetPixelMapxv(map, size, HostAddr(values, GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXENVXVOES(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfixed tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glTexEnvxvOES(target, pname, ptmp) #else #define FN_GLTEXENVXVOES(target, pname, params) \ fn.glTexEnvxvOES(target, pname, HostAddr(params, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXENVXVOES(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfixed tmp[MAX(size, 16)]; \ fn.glGetTexEnvxvOES(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXENVXVOES(target, pname, params) \ fn.glGetTexEnvxvOES(target, pname, HostAddr(params, GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLFEEDBACKBUFFERXOES(size, type, buffer) \ contexts[cur_context].feedback_buffer_atari = (nfmemptr)buffer; \ free(contexts[cur_context].feedback_buffer_host); \ contexts[cur_context].feedback_buffer_host = malloc(size * sizeof(GLfixed)); \ if (!contexts[cur_context].feedback_buffer_host) { glSetError(GL_OUT_OF_MEMORY); return; } \ contexts[cur_context].feedback_buffer_type = GL_FIXED; \ fn.glFeedbackBufferxOES(size, type, (GLfixed *)contexts[cur_context].feedback_buffer_host) #else #define FN_GLFEEDBACKBUFFERXOES(size, type, buffer) \ fn.glFeedbackBufferxOES(size, type, HostAddr(buffer, GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETCLIPPLANEXOES(plane, equation) \ GLfixed tmp[4]; \ fn.glGetClipPlanexOES(plane, tmp); \ Host2AtariIntArray(4, tmp, equation) #else #define FN_GLGETCLIPPLANEXOES(plane, equation) \ fn.glGetClipPlanexOES(plane, HostAddr(equation, GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETLIGHTXOES(light, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfixed tmp[MAX(size, 16)]; \ fn.glGetLightxOES(light, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETLIGHTXOES(light, pname, params) \ fn.glGetLightxOES(light, pname, HostAddr(params, GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCLIPPLANEXOES(plane, equation) \ GLfixed tmp[4]; \ Atari2HostIntArray(4, equation, tmp); \ fn.glClipPlanexOES(plane, tmp) #else #define FN_GLCLIPPLANEXOES(plane, equation) \ fn.glClipPlanexOES(plane, HostAddr(equation, const GLfixed *)) #endif /* glGetMaterialxOES??? should be *params */ #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLOR3XVOES(components) \ GLint tmp[3]; \ Atari2HostIntArray(3, components, tmp); \ fn.glColor3xvOES(tmp) #else #define FN_GLCOLOR3XVOES(components) \ fn.glColor3xvOES(HostAddr(components, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLOR4XVOES(components) \ GLfixed tmp[4]; \ Atari2HostIntArray(4, components, tmp); \ fn.glColor4xvOES(tmp) #else #define FN_GLCOLOR4XVOES(components) \ fn.glColor4xvOES(HostAddr(components, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETMAPXVOES(target, query, v) \ GLint order[2] = { 0, 0 }; \ GLint size; \ GLfixed *tmp; \ GLfixed tmpbuf[4]; \ switch (target) { \ case GL_MAP1_INDEX: \ case GL_MAP1_TEXTURE_COORD_1: \ case GL_MAP1_TEXTURE_COORD_2: \ case GL_MAP1_VERTEX_3: \ case GL_MAP1_NORMAL: \ case GL_MAP1_TEXTURE_COORD_3: \ case GL_MAP1_VERTEX_4: \ case GL_MAP1_COLOR_4: \ case GL_MAP1_TEXTURE_COORD_4: \ switch (query) { \ case GL_COEFF: \ size = __glGetMap_Evalk(target); \ fn.glGetMapiv(target, GL_ORDER, order); \ if (order[0] <= 0) return; \ size *= order[0]; \ tmp = (GLfixed *)malloc(size * sizeof(*tmp)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ fn.glGetMapxvOES(target, query, tmp); \ Host2AtariIntArray(size, tmp, v); \ free(tmp); \ break; \ case GL_DOMAIN: \ fn.glGetMapxvOES(target, query, tmpbuf); \ size = 2; \ Host2AtariIntArray(size, tmpbuf, v); \ break; \ case GL_ORDER: \ fn.glGetMapxvOES(target, query, tmpbuf); \ size = 1; \ Host2AtariIntArray(size, tmpbuf, v); \ break; \ } \ break; \ case GL_MAP2_INDEX: \ case GL_MAP2_TEXTURE_COORD_1: \ case GL_MAP2_TEXTURE_COORD_2: \ case GL_MAP2_VERTEX_3: \ case GL_MAP2_NORMAL: \ case GL_MAP2_TEXTURE_COORD_3: \ case GL_MAP2_VERTEX_4: \ case GL_MAP2_COLOR_4: \ case GL_MAP2_TEXTURE_COORD_4: \ switch (query) { \ case GL_COEFF: \ size = __glGetMap_Evalk(target); \ fn.glGetMapiv(target, GL_ORDER, order); \ if (order[0] <= 0 || order[1] <= 0) return; \ size *= order[0] * order[1]; \ tmp = (GLfixed *)malloc(size * sizeof(*tmp)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ fn.glGetMapxvOES(target, query, tmp); \ Host2AtariIntArray(size, tmp, v); \ free(tmp); \ break; \ case GL_DOMAIN: \ fn.glGetMapxvOES(target, query, tmpbuf); \ size = 4; \ Host2AtariIntArray(size, tmpbuf, v); \ break; \ case GL_ORDER: \ fn.glGetMapxvOES(target, query, tmpbuf); \ size = 2; \ Host2AtariIntArray(size, tmpbuf, v); \ break; \ } \ break; \ } #else #define FN_GLGETMAPXVOES(target, query, v) \ fn.glGetMapxvOES(target, query, HostAddr(v, GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCONVOLUTIONPARAMETERXVOES(target, pname, params) \ int const size = nfglGetNumParams(pname); \ GLfixed tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glConvolutionParameterxvOES(target, pname, ptmp) #else #define FN_GLCONVOLUTIONPARAMETERXVOES(target, pname, params) \ fn.glConvolutionParameterxvOES(target, pname, HostAddr(params, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLEVALCOORD1XVOES(coords) \ GLfixed tmp[1]; \ Atari2HostIntArray(1, coords, tmp); \ fn.glEvalCoord1xvOES(tmp) #else #define FN_GLEVALCOORD1XVOES(coords) \ fn.glEvalCoord1xvOES(HostAddr(coords, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLEVALCOORD2XVOES(coords) \ GLfixed tmp[2]; \ Atari2HostIntArray(2, coords, tmp); \ fn.glEvalCoord2xvOES(tmp) #else #define FN_GLEVALCOORD2XVOES(coords) \ fn.glEvalCoord2xvOES(HostAddr(coords, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLFOGXVOES(pname, param) \ GLfixed tmp[1]; \ Atari2HostIntArray(1, param, tmp); \ fn.glFogxvOES(pname, tmp) #else #define FN_GLFOGXVOES(pname, param) \ fn.glFogxvOES(pname, HostAddr(param, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETCONVOLUTIONPARAMETERXVOES(target, pname, params) \ int const size = nfglGetNumParams(pname); \ GLfixed tmp[MAX(size, 16)]; \ fn.glGetConvolutionParameterxvOES(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETCONVOLUTIONPARAMETERXVOES(target, pname, params) \ fn.glGetConvolutionParameterxvOES(target, pname, HostAddr(params, GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETHISTOGRAMPARAMETERXVOES(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfixed tmp[MAX(size, 16)]; \ fn.glGetHistogramParameterxvOES(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETHISTOGRAMPARAMETERXVOES(target, pname, params) \ fn.glGetHistogramParameterxvOES(target, pname, HostAddr(params, GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXGENXVOES(coord, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfixed tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glTexGenxvOES(coord, pname, tmp) #else #define FN_GLTEXGENXVOES(coord, pname, params) \ fn.glTexGenxvOES(coord, pname, HostAddr(params, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXGENXVOES(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfixed tmp[MAX(size, 16)]; \ fn.glGetTexGenxvOES(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXGENXVOES(target, pname, params) \ fn.glGetTexGenxvOES(target, pname, HostAddr(params, GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXLEVELPARAMETERXVOES(target, level, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfixed tmp[MAX(size, 16)]; \ fn.glGetTexLevelParameterxvOES(target, level, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXLEVELPARAMETERXVOES(target, level, pname, params) \ fn.glGetTexLevelParameterxvOES(target, level, pname, HostAddr(params, GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXPARAMETERXVOES(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfixed tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glTexParameterxvOES(target, pname, ptmp) #else #define FN_GLTEXPARAMETERXVOES(target, pname, params) \ fn.glTexParameterxvOES(target, pname, HostAddr(params, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXPARAMETERXVOES(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfixed tmp[MAX(size, 16)]; \ fn.glGetTexParameterxvOES(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXPARAMETERXVOES(target, pname, params) \ fn.glGetTexParameterxvOES(target, pname, HostAddr(params, GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLINDEXXVOES(c) \ GLfixed tmp[1]; \ Atari2HostIntArray(1, c, tmp); \ fn.glIndexxvOES(tmp) #else #define FN_GLINDEXXVOES(c) \ fn.glIndexxvOES(HostAddr(c, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLLIGHTMODELXVOES(pname, params) \ int const size = nfglGetNumParams(pname); \ GLfixed tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glLightModeliv(pname, ptmp) #else #define FN_GLLIGHTMODELXVOES(pname, params) \ fn.glLightModelxvOES(pname, HostAddr(params, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLLIGHTXVOES(light, pname, params) \ int const size = nfglGetNumParams(pname); \ GLfixed tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glLightxvOES(light, pname, ptmp) #else #define FN_GLLIGHTXVOES(light, pname, params) \ fn.glLightxvOES(light, pname, HostAddr(params, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLLOADMATRIXXOES(m) \ int const size = 16; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, m, tmp); \ fn.glLoadMatrixxOES(tmp) #else #define FN_GLLOADMATRIXXOES(m) \ fn.glLoadMatrixxOES(HostAddr(m, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLLOADTRANSPOSEMATRIXXOES(m) \ int const size = 16; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, m, tmp); \ fn.glLoadTransposeMatrixxOES(tmp) #else #define FN_GLLOADTRANSPOSEMATRIXXOES(m) \ fn.glLoadTransposeMatrixxOES(HostAddr(m, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMATERIALXVOES(face, pname, params) \ int const size = nfglGetNumParams(pname); \ GLfixed tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glMaterialxvOES(face, pname, ptmp) #else #define FN_GLMATERIALXVOES(face, pname, params) \ fn.glMaterialxvOES(face, pname, HostAddr(params, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTMATRIXXOES(m) \ int const size = 16; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, m, tmp); \ fn.glMultMatrixxOES(tmp) #else #define FN_GLMULTMATRIXXOES(m) \ fn.glMultMatrixxOES(HostAddr(m, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTTRANSPOSEMATRIXXOES(m) \ int const size = 16; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, m, tmp); \ fn.glMultTransposeMatrixxOES(tmp) #else #define FN_GLMULTTRANSPOSEMATRIXXOES(m) \ fn.glMultTransposeMatrixxOES(HostAddr(m, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD1XVOES(target, v) \ int const size = 1; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glMultiTexCoord1xvOES(target, tmp) #else #define FN_GLMULTITEXCOORD1XVOES(target, v) \ fn.glMultiTexCoord1xvOES(target, HostAddr(v, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD2XVOES(target, v) \ int const size = 2; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glMultiTexCoord2xvOES(target, tmp) #else #define FN_GLMULTITEXCOORD2XVOES(target, v) \ fn.glMultiTexCoord2xvOES(target, HostAddr(v, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD3XVOES(target, v) \ int const size = 3; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glMultiTexCoord3xvOES(target, tmp) #else #define FN_GLMULTITEXCOORD3XVOES(target, v) \ fn.glMultiTexCoord3xvOES(target, HostAddr(v, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD4XVOES(target, v) \ int const size = 4; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glMultiTexCoord4xvOES(target, tmp) #else #define FN_GLMULTITEXCOORD4XVOES(target, v) \ fn.glMultiTexCoord4xvOES(target, HostAddr(v, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLNORMAL3XVOES(v) \ int const size = 3; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glNormal3xvOES(tmp) #else #define FN_GLNORMAL3XVOES(v) \ fn.glNormal3xvOES(HostAddr(v, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPIXELMAPX(map, mapsize, values) \ GLfixed tmp[MAX(mapsize, 0)], *ptmp; \ ptmp = Atari2HostIntArray(mapsize, values, tmp); \ fn.glPixelMapx(map, mapsize, ptmp) #else #define FN_GLPIXELMAPX(map, mapsize, values) \ fn.glPixelMapx(map, mapsize, HostAddr(values, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPOINTPARAMETERXVOES(pname, params) \ GLfixed tmp[1]; \ Atari2HostIntArray(1, params, tmp); \ fn.glPointParameterxvOES(pname, tmp) #else #define FN_GLPOINTPARAMETERXVOES(pname, params) \ fn.glPointParameterxvOES(pname, HostAddr(params, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPRIORITIZETEXTURESXOES(n, textures, priorities) \ GLuint tmp[MAX(n, 0)], *ptmp; \ GLfixed tmp2[MAX(n, 0)], *ptmp2; \ ptmp = Atari2HostIntArray(n, textures, tmp); \ ptmp2 = Atari2HostIntArray(n, priorities, tmp2); \ fn.glPrioritizeTexturesxOES(n, ptmp, ptmp2) #else #define FN_GLPRIORITIZETEXTURESXOES(n, textures, priorities) \ fn.glPrioritizeTexturesxOES(n, HostAddr(textures, const GLuint *), HostAddr(priorities, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLRASTERPOS2XVOES(v) \ GLint const size = 2; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glRasterPos2xvOES(tmp) #else #define FN_GLRASTERPOS2XVOES(v) \ fn.glRasterPos2xvOES(HostAddr(v, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLRASTERPOS3XVOES(v) \ GLint const size = 3; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glRasterPos3xvOES(tmp) #else #define FN_GLRASTERPOS3XVOES(v) \ fn.glRasterPos3xvOES(HostAddr(v, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLRASTERPOS4XVOES(v) \ GLint const size = 3; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glRasterPos4xvOES(tmp) #else #define FN_GLRASTERPOS4XVOES(v) \ fn.glRasterPos4xvOES(HostAddr(v, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLRECTXVOES(v1, v2) \ GLfixed tmp1[4]; \ GLfixed tmp2[4]; \ Atari2HostIntArray(4, v1, tmp1); \ Atari2HostIntArray(4, v2, tmp2); \ fn.glRectxvOES(tmp1, tmp2) #else #define FN_GLRECTXVOES(v1, v2) \ fn.glRectxvOES(HostAddr(v1, const GLfixed *), HostAddr(v2, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD1XVOES(coords) \ GLint const size = 1; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, coords, tmp); \ fn.glTexCoord1xvOES(tmp) #else #define FN_GLTEXCOORD1XVOES(coords) \ fn.glTexCoord1xvOES(HostAddr(coords, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD2XVOES(coords) \ GLint const size = 2; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, coords, tmp); \ fn.glTexCoord2xvOES(tmp) #else #define FN_GLTEXCOORD2XVOES(coords) \ fn.glTexCoord2xvOES(HostAddr(coords, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD3XVOES(coords) \ GLint const size = 3; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, coords, tmp); \ fn.glTexCoord3xvOES(tmp) #else #define FN_GLTEXCOORD3XVOES(coords) \ fn.glTexCoord3xvOES(HostAddr(coords, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD4XVOES(coords) \ GLint const size = 4; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, coords, tmp); \ fn.glTexCoord4xvOES(tmp) #else #define FN_GLTEXCOORD4XVOES(coords) \ fn.glTexCoord4xvOES(HostAddr(coords, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEX2XVOES(v) \ GLint const size = 2; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glVertex2xvOES(tmp) #else #define FN_GLVERTEX2XVOES(v) \ fn.glVertex2xvOES(HostAddr(v, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEX3XVOES(v) \ GLint const size = 3; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glVertex3xvOES(tmp) #else #define FN_GLVERTEX3XVOES(v) \ fn.glVertex3xvOES(HostAddr(v, const GLfixed *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEX4XVOES(v) \ GLint const size = 4; \ GLfixed tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glVertex4xvOES(tmp) #else #define FN_GLVERTEX4XVOES(v) \ fn.glVertex4xvOES(HostAddr(v, const GLfixed *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLBITMAPXOES(width, height, xorig, yorig, xmove, ymove, bitmap) \ if (width <= 0 || height <= 0) return; \ GLsizei bytes_per_row = (width + 7) / 8; \ GLsizei size = bytes_per_row * height; \ GLubyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, bitmap, tmp); \ fn.glBitmapxOES(width, height, xorig, yorig, xmove, ymove, ptmp) #else #define FN_GLBITMAPXOES(width, height, xorig, yorig, xmove, ymove, bitmap) \ fn.glBitmapxOES(width, height, xorig, yorig, xmove, ymove, HostAddr(bitmap, const GLubyte *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_OES_byte_coordinates */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLMULTITEXCOORD1BVOES(texture, coords) \ int const size = 1; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, coords, tmp); \ fn.glMultiTexCoord1bvOES(texture, ptmp) #else #define FN_GLMULTITEXCOORD1BVOES(texture, coords) \ fn.glMultiTexCoord1bvOES(texture, HostAddr(coords, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLMULTITEXCOORD2BVOES(texture, coords) \ int const size = 2; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, coords, tmp); \ fn.glMultiTexCoord2bvOES(texture, ptmp) #else #define FN_GLMULTITEXCOORD2BVOES(texture, coords) \ fn.glMultiTexCoord2bvOES(texture, HostAddr(coords, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLMULTITEXCOORD3BVOES(texture, coords) \ int const size = 3; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, coords, tmp); \ fn.glMultiTexCoord3bvOES(texture, ptmp) #else #define FN_GLMULTITEXCOORD3BVOES(texture, coords) \ fn.glMultiTexCoord3bvOES(texture, HostAddr(coords, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLMULTITEXCOORD4BVOES(texture, coords) \ int const size = 4; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, coords, tmp); \ fn.glMultiTexCoord4bvOES(texture, ptmp) #else #define FN_GLMULTITEXCOORD4BVOES(texture, coords) \ fn.glMultiTexCoord4bvOES(texture, HostAddr(coords, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLTEXCOORD1BVOES(coords) \ int const size = 1; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, coords, tmp); \ fn.glTexCoord1bvOES(ptmp) #else #define FN_GLTEXCOORD1BVOES(coords) \ fn.glTexCoord1bvOES(HostAddr(coords, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLTEXCOORD2BVOES(coords) \ int const size = 2; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, coords, tmp); \ fn.glTexCoord2bvOES(ptmp) #else #define FN_GLTEXCOORD2BVOES(coords) \ fn.glTexCoord2bvOES(HostAddr(coords, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLTEXCOORD3BVOES(coords) \ int const size = 3; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, coords, tmp); \ fn.glTexCoord3bvOES(ptmp) #else #define FN_GLTEXCOORD3BVOES(coords) \ fn.glTexCoord3bvOES(HostAddr(coords, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLTEXCOORD4BVOES(coords) \ int const size = 4; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, coords, tmp); \ fn.glTexCoord4bvOES(ptmp) #else #define FN_GLTEXCOORD4BVOES(coords) \ fn.glTexCoord4bvOES(HostAddr(coords, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEX2BVOES(coords) \ int const size = 2; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, coords, tmp); \ fn.glVertex2bvOES(ptmp) #else #define FN_GLVERTEX2BVOES(coords) \ fn.glVertex2bvOES(HostAddr(coords, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEX3BVOES(coords) \ int const size = 3; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, coords, tmp); \ fn.glVertex3bvOES(ptmp) #else #define FN_GLVERTEX3BVOES(coords) \ fn.glVertex3bvOES(HostAddr(coords, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEX4BVOES(coords) \ int const size = 4; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, coords, tmp); \ fn.glVertex4bvOES(ptmp) #else #define FN_GLVERTEX4BVOES(coords) \ fn.glVertex4bvOES(HostAddr(coords, const GLbyte *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_OES_query_matrix */ #if NFOSMESA_NEED_INT_CONV #define FN_GLQUERYMATRIXXOES(mantissa, exponent) \ GLint const size = 16; \ GLfixed m[size]; \ GLint e[size]; \ GLbitfield ret = fn.glQueryMatrixxOES(m, e); \ Host2AtariIntArray(size, m, mantissa); \ Host2AtariIntArray(size, e, exponent); \ return ret #else #define FN_GLQUERYMATRIXXOES(mantissa, exponent) \ return fn.glQueryMatrixxOES(HostAddr(mantissa, GLfixed *), HostAddr(exponent, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_SGIX_reference_plane */ #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLREFERENCEPLANESGIX(equation) \ GLint const size = 4; \ GLdouble tmp[size], *ptmp; \ ptmp = Atari2HostDoubleArray(size, equation, tmp); \ fn.glReferencePlaneSGIX(ptmp) #else #define FN_GLREFERENCEPLANESGIX(equation) \ fn.glReferencePlaneSGIX(HostAddr(equation, const GLdouble *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_SGIX_instruments */ /* NYI; buffer will be accessed asynchronously by glStartInstrumentsSGIX() */ #define FN_GLINSTRUMENTSBUFFERSGIX(size, buffer) \ fn.glInstrumentsBufferSGIX(size, HostAddr(buffer, GLint *)) #if NFOSMESA_NEED_INT_CONV #define FN_GLPOLLINSTRUMENTSSGIX(marker_p) \ GLint const size = 1; \ GLint tmp[size]; \ GLint ret = fn.glPollInstrumentsSGIX(tmp); \ Host2AtariIntArray(1, tmp, marker_p); \ return ret #else #define FN_GLPOLLINSTRUMENTSSGIX(marker_p) \ return fn.glPollInstrumentsSGIX(HostAddr(marker_p, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_SGIS_pixel_texture */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPIXELTEXGENPARAMETERFVSGIS(pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetPixelTexGenParameterfvSGIS(pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETPIXELTEXGENPARAMETERFVSGIS(pname, params) \ fn.glGetPixelTexGenParameterfvSGIS(pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPIXELTEXGENPARAMETERFVSGIS(pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glPixelTexGenParameterfvSGIS(pname, ptmp) #else #define FN_GLPIXELTEXGENPARAMETERFVSGIS(pname, params) \ fn.glPixelTexGenParameterfvSGIS(pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPIXELTEXGENPARAMETERIVSGIS(pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetPixelTexGenParameterivSGIS(pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETPIXELTEXGENPARAMETERIVSGIS(pname, params) \ fn.glGetPixelTexGenParameterivSGIS(pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPIXELTEXGENPARAMETERIVSGIS(pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glPixelTexGenParameterivSGIS(pname, ptmp) #else #define FN_GLPIXELTEXGENPARAMETERIVSGIS(pname, params) \ fn.glPixelTexGenParameterivSGIS(pname, HostAddr(params, const GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_paletted_texture */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLCOLORTABLEEXT(target, internalformat, width, format, type, table) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, 1, 1, format, type, (nfmemptr)table); \ fn.glColorTableEXT(target, internalformat, width, format, type, tmp) #else #define FN_GLCOLORTABLEEXT(target, internalformat, width, format, type, table) \ fn.glColorTableEXT(target, internalformat, width, format, type, HostAddr(table, const void *)) #endif #define FN_GLGETCOLORTABLEEXT(target, format, type, table) \ GLint width = 0; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ fn.glGetColorTableParameteriv(target, GL_COLOR_TABLE_WIDTH, &width); \ if (width == 0) return; \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(table); \ fn.glGetColorTableEXT(target, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(width, 1, 1, format, type)) return; \ } else { \ src = buf.hostBuffer(width, 1, 1, format, type, (nfmemptr)table); \ if (src == NULL) return; \ fn.glGetColorTableEXT(target, format, type, src); \ dst = (nfmemptr)table; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_INT_CONV #define FN_GLGETCOLORTABLEPARAMETERIVEXT(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[size]; \ fn.glGetColorTableParameterivEXT(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETCOLORTABLEPARAMETERIVEXT(target, pname, params) \ fn.glGetColorTableParameterivEXT(target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETCOLORTABLEPARAMETERFVEXT(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[size]; \ fn.glGetColorTableParameterfvEXT(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETCOLORTABLEPARAMETERFVEXT(target, pname, params) \ fn.glGetColorTableParameterfvEXT(target, pname, HostAddr(params, GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_SGI_color_table */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLCOLORTABLESGI(target, internalformat, width, format, type, table) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, 1, 1, format, type, (nfmemptr)table); \ fn.glColorTableSGI(target, internalformat, width, format, type, tmp) #else #define FN_GLCOLORTABLESGI(target, internalformat, width, format, type, table) \ fn.glColorTableSGI(target, internalformat, width, format, type, HostAddr(table, const void *)) #endif #define FN_GLGETCOLORTABLESGI(target, format, type, table) \ GLint width = 0; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ fn.glGetColorTableParameteriv(target, GL_COLOR_TABLE_WIDTH, &width); \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(table); \ fn.glGetColorTableSGI(target, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(width, 1, 1, format, type)) return; \ } else { \ src = buf.hostBuffer(width, 1, 1, format, type, (nfmemptr)table); \ if (src == NULL) return; \ fn.glGetColorTableSGI(target, format, type, src); \ dst = (nfmemptr)table; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETCOLORTABLEPARAMETERFVSGI(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[size]; \ fn.glGetColorTableParameterfvSGI(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETCOLORTABLEPARAMETERFVSGI(target, pname, params) \ fn.glGetColorTableParameterfvSGI(target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETCOLORTABLEPARAMETERIVSGI(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[size]; \ fn.glGetColorTableParameterivSGI(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETCOLORTABLEPARAMETERIVSGI(target, pname, params) \ fn.glGetColorTableParameterivSGI(target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLCOLORTABLEPARAMETERFVSGI(target, pname, params) \ GLint const size = 4; \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glColorTableParameterfvSGI(target, pname, ptmp) #else #define FN_GLCOLORTABLEPARAMETERFVSGI(target, pname, params) \ fn.glColorTableParameterfvSGI(target, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLORTABLEPARAMETERIVSGI(target, pname, params) \ GLint const size = 4; \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glColorTableParameterivSGI(target, pname, ptmp) #else #define FN_GLCOLORTABLEPARAMETERIVSGI(target, pname, params) \ fn.glColorTableParameterivSGI(target, pname, HostAddr(params, const GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_pixel_transform */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPIXELTRANSFORMPARAMETERFVEXT(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetPixelTransformParameterfvEXT(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETPIXELTRANSFORMPARAMETERFVEXT(target, pname, params) \ fn.glGetPixelTransformParameterfvEXT(target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPIXELTRANSFORMPARAMETERIVEXT(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetPixelTransformParameterivEXT(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETPIXELTRANSFORMPARAMETERIVEXT(target, pname, params) \ fn.glGetPixelTransformParameterivEXT(target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPIXELTRANSFORMPARAMETERFVEXT(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glPixelTransformParameterfvEXT(target, pname, ptmp) #else #define FN_GLPIXELTRANSFORMPARAMETERFVEXT(target, pname, params) \ fn.glPixelTransformParameterfvEXT(target, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPIXELTRANSFORMPARAMETERIVEXT(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glPixelTransformParameterivEXT(target, pname, ptmp) #else #define FN_GLPIXELTRANSFORMPARAMETERIVEXT(target, pname, params) \ fn.glPixelTransformParameterivEXT(target, pname, HostAddr(params, const GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ARB_matrix_palette */ #if NFOSMESA_NEED_INT_CONV #define FN_GLMATRIXINDEXUSVARB(size, indices) \ if (size <= 0) return; \ GLushort tmp[size], *ptmp; \ ptmp = Atari2HostShortArray(size, indices, tmp); \ fn.glMatrixIndexusvARB(size, ptmp) #else #define FN_GLMATRIXINDEXUSVARB(size, indices) \ fn.glMatrixIndexusvARB(size, HostAddr(indices, GLushort *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLMATRIXINDEXUBVARB(size, indices) \ GLubyte tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostByteArray(size, indices, tmp); \ fn.glMatrixIndexubvARB(size, ptmp) #else #define FN_GLMATRIXINDEXUBVARB(size, indices) \ fn.glMatrixIndexubvARB(size, HostAddr(indices, GLubyte *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMATRIXINDEXUIVARB(size, indices) \ if (size <= 0) return; \ GLuint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, indices, tmp); \ fn.glMatrixIndexuivARB(size, ptmp) #else #define FN_GLMATRIXINDEXUIVARB(size, indices) \ fn.glMatrixIndexuivARB(size, HostAddr(indices, const GLuint *)) #endif #define FN_GLMATRIXINDEXPOINTERARB(size, type, stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].matrixindex, size, type, stride, -1, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].matrixindex.vendor = NFOSMESA_VENDOR_ARB /* -------------------------------------------------------------------------- */ /* * GL_IBM_vertex_array_lists */ #define FN_GLCOLORPOINTERLISTIBM(size, type, stride, pointer, ptrstride) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].color, size, type, stride, -1, ptrstride, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].color.vendor = NFOSMESA_VENDOR_IBM #define FN_GLEDGEFLAGPOINTERLISTIBM(stride, pointer, ptrstride) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].edgeflag, 1, GL_UNSIGNED_BYTE, stride, -1, ptrstride, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].edgeflag.vendor = NFOSMESA_VENDOR_IBM #define FN_GLINDEXPOINTERLISTIBM(type, stride, pointer, ptrstride) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].index, 1, type, stride, -1, ptrstride, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].index.vendor = NFOSMESA_VENDOR_IBM #define FN_GLNORMALPOINTERLISTIBM(type, stride, pointer, ptrstride) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].normal, 3, type, stride, -1, ptrstride, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].normal.vendor = NFOSMESA_VENDOR_IBM #define FN_GLFOGCOORDPOINTERLISTIBM(type, stride, pointer, ptrstride) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].fogcoord, 1, type, stride, -1, ptrstride, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].fogcoord.vendor = NFOSMESA_VENDOR_IBM #define FN_GLSECONDARYCOLORPOINTERLISTIBM(size, type, stride, pointer, ptrstride) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].secondary_color, size, type, stride, -1, ptrstride, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].secondary_color.vendor = NFOSMESA_VENDOR_IBM #define FN_GLTEXCOORDPOINTERLISTIBM(size, type, stride, pointer, ptrstride) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].texcoord, size, type, stride, -1, ptrstride, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].texcoord.vendor = NFOSMESA_VENDOR_IBM #define FN_GLVERTEXPOINTERLISTIBM(size, type, stride, pointer, ptrstride) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].vertex, size, type, stride, -1, ptrstride, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].vertex.vendor = NFOSMESA_VENDOR_IBM /* -------------------------------------------------------------------------- */ /* * GL_INTEL_parallel_arrays */ // FIXME: pointer is array of 2-4 pointers #define FN_GLCOLORPOINTERVINTEL(size, type, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].color, size, type, 0, -1, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].color.vendor = NFOSMESA_VENDOR_INTEL #define FN_GLNORMALPOINTERVINTEL(type, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].normal, 3, type, 0, -1, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].normal.vendor = NFOSMESA_VENDOR_INTEL #define FN_GLTEXCOORDPOINTERVINTEL(size, type, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].texcoord, size, type, 0, -1, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].texcoord.vendor = NFOSMESA_VENDOR_INTEL #define FN_GLVERTEXPOINTERVINTEL(size, type, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].vertex, size, type, 0, -1, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].vertex.vendor = NFOSMESA_VENDOR_INTEL /* -------------------------------------------------------------------------- */ /* * GL_EXT_vertex_array */ #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLARRAYELEMENTEXT(i) nfglArrayElementHelper(i) #else #define FN_GLARRAYELEMENTEXT(i) \ fn.glArrayElement(i) #endif #define FN_GLCOLORPOINTEREXT(size, type, stride, count, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].color, size, type, stride, count, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].color.vendor = NFOSMESA_VENDOR_EXT #define FN_GLDRAWARRAYSEXT(mode, first, count) \ convertClientArrays(first + count); \ fn.glDrawArraysEXT(mode, first, count) #define FN_GLEDGEFLAGPOINTEREXT(stride, count, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].edgeflag, 1, GL_UNSIGNED_BYTE, stride, count, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].edgeflag.vendor = NFOSMESA_VENDOR_EXT #define FN_GLGETPOINTERVEXT(pname, data) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ gl_get_pointer(pname, texunit, HostAddr(data, void **)) #define FN_GLINDEXPOINTEREXT(type, stride, count, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].index, 1, type, stride, count, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].index.vendor = NFOSMESA_VENDOR_EXT #define FN_GLNORMALPOINTEREXT(type, stride, count, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].normal, 3, type, stride, count, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].normal.vendor = NFOSMESA_VENDOR_EXT #define FN_GLTEXCOORDPOINTEREXT(size, type, stride, count, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].texcoord, size, type, stride, count, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].texcoord.vendor = NFOSMESA_VENDOR_EXT #define FN_GLVERTEXPOINTEREXT(size, type, stride, count, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].vertex, size, type, stride, count, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].vertex.vendor = NFOSMESA_VENDOR_EXT /* -------------------------------------------------------------------------- */ /* * GL_EXT_compiled_vertex_array */ #define FN_GLLOCKARRAYSEXT(first, count) \ convertClientArrays(first + count); \ fn.glLockArraysEXT(first, count) /* -------------------------------------------------------------------------- */ /* * GL_NV_gpu_program4 */ #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMLOCALPARAMETERI4IVNV(target, index, params) \ GLint const size = 4; \ GLint tmp[size]; \ Atari2HostIntArray(size, params, tmp); \ fn.glProgramLocalParameterI4ivNV(target, index, tmp) #else #define FN_GLPROGRAMLOCALPARAMETERI4IVNV(target, index, params) \ fn.glProgramLocalParameterI4ivNV(target, index, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMLOCALPARAMETERSI4IVNV(target, index, count, params) \ GLint const size = 4 * count; \ GLint tmp[size]; \ Atari2HostIntArray(size, params, tmp); \ fn.glProgramLocalParametersI4ivNV(target, index, count, tmp) #else #define FN_GLPROGRAMLOCALPARAMETERSI4IVNV(target, index, count, params) \ fn.glProgramLocalParametersI4ivNV(target, index, count, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMLOCALPARAMETERI4UIVNV(target, index, params) \ GLint const size = 4; \ GLuint tmp[size]; \ Atari2HostIntArray(size, params, tmp); \ fn.glProgramLocalParameterI4uivNV(target, index, tmp) #else #define FN_GLPROGRAMLOCALPARAMETERI4UIVNV(target, index, params) \ fn.glProgramLocalParameterI4uivNV(target, index, HostAddr(params, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMLOCALPARAMETERSI4UIVNV(target, index, count, params) \ GLint const size = 4 * count; \ GLuint tmp[size]; \ Atari2HostIntArray(size, params, tmp); \ fn.glProgramLocalParametersI4uivNV(target, index, count, tmp) #else #define FN_GLPROGRAMLOCALPARAMETERSI4UIVNV(target, index, count, params) \ fn.glProgramLocalParametersI4uivNV(target, index, count, HostAddr(params, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMENVPARAMETERI4IVNV(target, index, params) \ GLint const size = 4; \ GLint tmp[size]; \ Atari2HostIntArray(size, params, tmp); \ fn.glProgramEnvParameterI4ivNV(target, index, tmp) #else #define FN_GLPROGRAMENVPARAMETERI4IVNV(target, index, params) \ fn.glProgramEnvParameterI4ivNV(target, index, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMENVPARAMETERSI4IVNV(target, index, count, params) \ GLint const size = 4 * count; \ GLint tmp[size]; \ Atari2HostIntArray(size, params, tmp); \ fn.glProgramEnvParametersI4ivNV(target, index, count, tmp) #else #define FN_GLPROGRAMENVPARAMETERSI4IVNV(target, index, count, params) \ fn.glProgramEnvParametersI4ivNV(target, index, count, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMENVPARAMETERI4UIVNV(target, index, params) \ GLint const size = 4; \ GLuint tmp[size]; \ Atari2HostIntArray(size, params, tmp); \ fn.glProgramEnvParameterI4uivNV(target, index, tmp) #else #define FN_GLPROGRAMENVPARAMETERI4UIVNV(target, index, params) \ fn.glProgramEnvParameterI4uivNV(target, index, HostAddr(params, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMENVPARAMETERSI4UIVNV(target, index, count, params) \ GLint const size = 4 * count; \ GLuint tmp[size]; \ Atari2HostIntArray(size, params, tmp); \ fn.glProgramEnvParametersI4uivNV(target, index, count, tmp) #else #define FN_GLPROGRAMENVPARAMETERSI4UIVNV(target, index, count, params) \ fn.glProgramEnvParametersI4uivNV(target, index, count, HostAddr(params, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMLOCALPARAMETERIIVNV(target, index, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetProgramLocalParameterIivNV(target, index, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETPROGRAMLOCALPARAMETERIIVNV(target, index, params) \ fn.glGetProgramLocalParameterIivNV(target, index, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMLOCALPARAMETERIUIVNV(target, index, params) \ GLint const size = 1; \ GLuint tmp[size]; \ fn.glGetProgramLocalParameterIuivNV(target, index, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETPROGRAMLOCALPARAMETERIUIVNV(target, index, params) \ fn.glGetProgramLocalParameterIuivNV(target, index, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMENVPARAMETERIIVNV(target, index, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetProgramEnvParameterIivNV(target, index, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETPROGRAMENVPARAMETERIIVNV(target, index, params) \ fn.glGetProgramEnvParameterIivNV(target, index, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMENVPARAMETERIUIVNV(target, index, params) \ GLint const size = 1; \ GLuint tmp[size]; \ fn.glGetProgramEnvParameterIuivNV(target, index, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETPROGRAMENVPARAMETERIUIVNV(target, index, params) \ fn.glGetProgramEnvParameterIuivNV(target, index, HostAddr(params, GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_gpu_program5 */ #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMSUBROUTINEPARAMETERSUIVNV(target, count, params) \ GLint const size = 4 * count; \ GLuint tmp[size]; \ Atari2HostIntArray(size, params, tmp); \ fn.glProgramSubroutineParametersuivNV(target, count, tmp) #else #define FN_GLPROGRAMSUBROUTINEPARAMETERSUIVNV(target, count, params) \ fn.glProgramSubroutineParametersuivNV(target, count, HostAddr(params, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMSUBROUTINEPARAMETERUIVNV(target, index, params) \ GLint const size = 1; \ GLuint tmp[size]; \ fn.glGetProgramSubroutineParameteruivNV(target, index, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETPROGRAMSUBROUTINEPARAMETERUIVNV(target, index, params) \ fn.glGetProgramSubroutineParameteruivNV(target, index, HostAddr(params, GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ARB_fragment_program */ #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETEPROGRAMSARB(n, programs) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, programs, tmp); \ fn.glDeleteProgramsARB(n, ptmp) #else #define FN_GLDELETEPROGRAMSARB(n, programs) \ fn.glDeleteProgramsARB(n, HostAddr(programs, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENPROGRAMSARB(n, programs) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenProgramsARB(n, tmp); \ Host2AtariIntArray(n, tmp, programs) #else #define FN_GLGENPROGRAMSARB(n, programs) \ fn.glGenProgramsARB(n, HostAddr(programs, GLuint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMENVPARAMETER4FVARB(target, index, params) \ GLfloat tmp[4]; \ Atari2HostFloatArray(4, params, tmp); \ fn.glProgramEnvParameter4fvARB(target, index, tmp) #else #define FN_GLPROGRAMENVPARAMETER4FVARB(target, index, params) \ fn.glProgramEnvParameter4fvARB(target, index, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMENVPARAMETER4DVARB(target, index, params) \ GLdouble tmp[4]; \ Atari2HostDoubleArray(4, params, tmp); \ fn.glProgramEnvParameter4dvARB(target, index, tmp) #else #define FN_GLPROGRAMENVPARAMETER4DVARB(target, index, params) \ fn.glProgramEnvParameter4dvARB(target, index, HostAddr(params, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMLOCALPARAMETER4FVARB(target, index, params) \ GLfloat tmp[4]; \ Atari2HostFloatArray(4, params, tmp); \ fn.glProgramLocalParameter4fvARB(target, index, tmp) #else #define FN_GLPROGRAMLOCALPARAMETER4FVARB(target, index, params) \ fn.glProgramLocalParameter4fvARB(target, index, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMLOCALPARAMETER4DVARB(target, index, params) \ GLdouble tmp[4]; \ Atari2HostDoubleArray(4, params, tmp); \ fn.glProgramLocalParameter4dvARB(target, index, tmp) #else #define FN_GLPROGRAMLOCALPARAMETER4DVARB(target, index, params) \ fn.glProgramLocalParameter4dvARB(target, index, HostAddr(params, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPROGRAMENVPARAMETERFVARB(target, index, params) \ GLfloat tmp[4]; \ fn.glGetProgramEnvParameterfvARB(target, index, tmp); \ Host2AtariFloatArray(4, tmp, params) #else #define FN_GLGETPROGRAMENVPARAMETERFVARB(target, index, params) \ fn.glGetProgramEnvParameterfvARB(target, index, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETPROGRAMENVPARAMETERDVARB(target, index, params) \ GLdouble tmp[4]; \ fn.glGetProgramEnvParameterdvARB(target, index, tmp); \ Host2AtariDoubleArray(4, tmp, params) #else #define FN_GLGETPROGRAMENVPARAMETERDVARB(target, index, params) \ fn.glGetProgramEnvParameterdvARB(target, index, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPROGRAMLOCALPARAMETERFVARB(target, index, params) \ GLfloat tmp[4]; \ fn.glGetProgramLocalParameterfvARB(target, index, tmp); \ Host2AtariFloatArray(4, tmp, params) #else #define FN_GLGETPROGRAMLOCALPARAMETERFVARB(target, index, params) \ fn.glGetProgramLocalParameterfvARB(target, index, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETPROGRAMLOCALPARAMETERDVARB(target, index, params) \ GLdouble tmp[4]; \ fn.glGetProgramLocalParameterdvARB(target, index, tmp); \ Host2AtariDoubleArray(4, tmp, params) #else #define FN_GLGETPROGRAMLOCALPARAMETERDVARB(target, index, params) \ fn.glGetProgramLocalParameterdvARB(target, index, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMIVARB(target, index, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetProgramivARB(target, index, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETPROGRAMIVARB(target, index, params) \ fn.glGetProgramivARB(target, index, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETPROGRAMSTRINGARB(target, pname, string) \ GLint size = 0; \ fn.glGetProgramivARB(target, GL_PROGRAM_LENGTH_ARB, &size); \ if (size <= 0) return; \ GLubyte tmp[size + 1]; \ fn.glGetProgramStringARB(target, pname, tmp); \ Host2AtariByteArray(size, tmp, string) #else #define FN_GLGETPROGRAMSTRINGARB(target, pname, string) \ fn.glGetProgramStringARB(target, pname, HostAddr(string, void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLPROGRAMSTRINGARB(target, format, len, string) \ if (len < 0) len = safe_strlen(string); \ GLubyte tmp[len], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), string, tmp); \ fn.glProgramStringARB(target, format, len, ptmp) #else #define FN_GLPROGRAMSTRINGARB(target, format, len, string) \ fn.glProgramStringARB(target, format, len, HostAddr(string, const void *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_fragment_program */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLPROGRAMNAMEDPARAMETER4DNV(id, len, name, x, y, z, w) \ GLubyte namebuf[MAX(len, 0)], *pname; \ pname = Atari2HostByteArray(len, name, namebuf); \ fn.glProgramNamedParameter4dNV(id, len, pname, x, y, z, w) #else #define FN_GLPROGRAMNAMEDPARAMETER4DNV(id, len, name, x, y, z, w) \ fn.glProgramNamedParameter4dNV(id, len, HostAddr(name, const GLubyte *), x, y, z, w) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMNAMEDPARAMETER4DVNV(id, len, name, v) \ GLint const size = 4; \ GLdouble tmp[size], *ptmp; \ GLubyte namebuf[MAX(len, 0)], *pname; \ ptmp = Atari2HostDoubleArray(size, v, tmp); \ pname = Atari2HostByteArray(len, name, namebuf); \ fn.glProgramNamedParameter4dvNV(id, len, pname, ptmp) #else #define FN_GLPROGRAMNAMEDPARAMETER4DVNV(id, len, name, v) \ fn.glProgramNamedParameter4dvNV(id, len, HostAddr(name, const GLubyte *), HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLPROGRAMNAMEDPARAMETER4FNV(id, len, name, x, y, z, w) \ GLubyte namebuf[MAX(len, 0)], *pname; \ pname = Atari2HostByteArray(len, name, namebuf); \ fn.glProgramNamedParameter4fNV(id, len, pname, x, y, z, w) #else #define FN_GLPROGRAMNAMEDPARAMETER4FNV(id, len, name, x, y, z, w) \ fn.glProgramNamedParameter4fNV(id, len, HostAddr(name, const GLubyte *), x, y, z, w) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMNAMEDPARAMETER4FVNV(id, len, name, v) \ GLint const size = 4; \ GLfloat tmp[size]; \ GLubyte namebuf[MAX(len, 0)], *pname; \ Atari2HostFloatArray(size, v, tmp); \ pname = Atari2HostByteArray(len, name, namebuf); \ fn.glProgramNamedParameter4fvNV(id, len, pname, tmp) #else #define FN_GLPROGRAMNAMEDPARAMETER4FVNV(id, len, name, v) \ fn.glProgramNamedParameter4fvNV(id, len, HostAddr(name, const GLubyte *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETPROGRAMNAMEDPARAMETERDVNV(id, len, name, v) \ GLint const size = 4; \ GLdouble tmp[size]; \ GLubyte namebuf[safe_strlen(name) + 1], *pname;\ pname = Atari2HostByteArray(sizeof(namebuf), name, namebuf); \ fn.glGetProgramNamedParameterdvNV(id, len, pname, tmp); \ Host2AtariDoubleArray(size, tmp, v) #else #define FN_GLGETPROGRAMNAMEDPARAMETERDVNV(id, len, name, v) \ fn.glGetProgramNamedParameterdvNV(id, len, HostAddr(name, const GLubyte *), HostAddr(v, GLdouble *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPROGRAMNAMEDPARAMETERFVNV(id, len, name, v) \ GLint const size = 4; \ GLfloat tmp[size]; \ GLubyte namebuf[safe_strlen(name) + 1], *pname;\ pname = Atari2HostByteArray(sizeof(namebuf), name, namebuf); \ fn.glGetProgramNamedParameterfvNV(id, len, pname, tmp); \ Host2AtariFloatArray(size, tmp, v) #else #define FN_GLGETPROGRAMNAMEDPARAMETERFVNV(id, len, name, v) \ fn.glGetProgramNamedParameterfvNV(id, len, HostAddr(name, const GLubyte *), HostAddr(v, GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_vertex_program */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLAREPROGRAMSRESIDENTNV(n, programs, residences) \ GLboolean res; \ GLuint tmp[MAX(n, 0)], *ptmp; \ GLboolean resbuf[MAX(n, 0)]; \ ptmp = Atari2HostIntArray(n, programs, tmp); \ res = fn.glAreProgramsResidentNV(n, ptmp, resbuf); \ Host2AtariByteArray(n, resbuf, residences); \ return res #else #define FN_GLAREPROGRAMSRESIDENTNV(n, programs, residences) \ return fn.glAreProgramsResidentNV(n, HostAddr(programs, const GLuint *), HostAddr(residences, GLboolean *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETEPROGRAMSNV(n, programs) \ GLint const size = n; \ if (size <= 0 || !programs) return; \ GLuint tmp[size]; \ Atari2HostIntArray(n, programs, tmp); \ fn.glDeleteProgramsNV(n, tmp) #else #define FN_GLDELETEPROGRAMSNV(n, programs) \ fn.glDeleteProgramsNV(n, HostAddr(programs, const GLuint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLEXECUTEPROGRAMNV(target, id, params) \ GLfloat tmp[4]; \ Atari2HostFloatArray(4, params, tmp); \ fn.glExecuteProgramNV(target, id, tmp) #else #define FN_GLEXECUTEPROGRAMNV(size, type, buffer) \ fn.glExecuteProgramNV(target, id, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENPROGRAMSNV(n, programs) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenProgramsNV(n, tmp); \ Host2AtariIntArray(n, tmp, programs) #else #define FN_GLGENPROGRAMSNV(n, programs) \ fn.glGenProgramsNV(n, HostAddr(programs, GLuint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMPARAMETER4DVNV(target, index, v) \ GLint const size = 4; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glProgramParameter4dvNV(target, index, tmp) #else #define FN_GLPROGRAMPARAMETER4DVNV(target, index, v) \ fn.glProgramParameter4dvNV(target, index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMPARAMETER4FVNV(target, index, v) \ GLint const size = 4; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glProgramParameter4fvNV(target, index, tmp) #else #define FN_GLPROGRAMPARAMETER4FVNV(target, index, v) \ fn.glProgramParameter4fvNV(target, index, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMPARAMETERS4DVNV(target, index, count, v) \ GLint const size = 4; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glProgramParameters4dvNV(target, index, count, tmp) #else #define FN_GLPROGRAMPARAMETERS4DVNV(target, index, count, v) \ fn.glProgramParameters4dvNV(target, index, count, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMPARAMETERS4FVNV(target, index, count, v) \ GLint const size = 4; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glProgramParameters4fvNV(target, index, count, tmp) #else #define FN_GLPROGRAMPARAMETERS4FVNV(target, index, count, v) \ fn.glProgramParameters4fvNV(target, index, count, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETPROGRAMPARAMETERDVNV(target, index, pname, params) \ GLint const size = 4; \ GLdouble tmp[size]; \ fn.glGetProgramParameterdvNV(target, index, pname, tmp); \ Host2AtariDoubleArray(size, tmp, params) #else #define FN_GLGETPROGRAMPARAMETERDVNV(target, index, pname, params) \ fn.glGetProgramParameterdvNV(target, index, pname, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPROGRAMPARAMETERFVNV(target, index, pname, params) \ GLint const size = 4; \ GLfloat tmp[size]; \ fn.glGetProgramParameterfvNV(target, index, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETPROGRAMPARAMETERFVNV(target, index, pname, params) \ fn.glGetProgramParameterfvNV(target, index, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMIVNV(id, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetProgramivNV(id, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETPROGRAMIVNV(id, pname, params) \ fn.glGetProgramivNV(id, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETPROGRAMSTRINGNV(id, pname, program) \ GLint size = 0; \ fn.glGetProgramivNV(id, GL_PROGRAM_LENGTH_NV, &size); \ if (size <= 0) return; \ GLubyte tmp[size + 1]; \ fn.glGetProgramStringNV(id, pname, tmp); \ Host2AtariByteArray(size, tmp, program) #else #define FN_GLGETPROGRAMSTRINGNV(id, pname, program) \ fn.glGetProgramStringNV(id, pname, HostAddr(program, GLubyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLLOADPROGRAMNV(target, id, len, program) \ GLubyte tmp[MAX(len, 0)], *ptmp; \ ptmp = Atari2HostByteArray(len, program, tmp); \ fn.glLoadProgramNV(target, id, len, ptmp) #else #define FN_GLLOADPROGRAMNV(target, id, len, program) \ fn.glLoadProgramNV(target, id, len, HostAddr(program, GLubyte *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTRACKMATRIXIVNV(target, address, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetTrackMatrixivNV(target, address, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTRACKMATRIXIVNV(target, address, pname, params) \ fn.glGetTrackMatrixivNV(target, address, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETVERTEXATTRIBDVNV(index, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLdouble tmp[size]; \ fn.glGetVertexAttribdvNV(index, pname, tmp); \ Host2AtariDoubleArray(size, tmp, params) #else #define FN_GLGETVERTEXATTRIBDVNV(index, pname, params) \ fn.glGetVertexAttribdvNV(index, pname, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETVERTEXATTRIBFVNV(index, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[size]; \ fn.glGetVertexAttribfvNV(index, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETVERTEXATTRIBFVNV(index, pname, params) \ fn.glGetVertexAttribfvNV(index, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXATTRIBIVNV(index, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[size]; \ fn.glGetVertexAttribivNV(index, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETVERTEXATTRIBIVNV(index, pname, params) \ fn.glGetVertexAttribivNV(index, pname, HostAddr(params, GLint *)) #endif /* TODO */ #define FN_GLGETVERTEXATTRIBPOINTERVNV(index, pname, pointer) \ UNUSED(pointer); \ void *p = 0; \ fn.glGetVertexAttribPointervNV(index, pname, &p) /* TODO */ #define FN_GLVERTEXATTRIBPOINTERNV(index, size, type, stride, pointer) \ fn.glVertexAttribPointerNV(index, size, type, stride, HostAddr(pointer, const void *)) #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIB1DVNV(index, v) \ GLint const size = 1; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttrib1dvNV(index, tmp) #else #define FN_GLVERTEXATTRIB1DVNV(index, v) \ fn.glVertexAttrib1dvNV(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIB1FVNV(index, v) \ GLint const size = 1; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttrib1fvNV(index, tmp) #else #define FN_GLVERTEXATTRIB1FVNV(index, v) \ fn.glVertexAttrib1fvNV(index, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB1SVNV(index, v) \ GLint const size = 1; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib1svNV(index, tmp) #else #define FN_GLVERTEXATTRIB1SVNV(index, v) \ fn.glVertexAttrib1svNV(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIB2DVNV(index, v) \ GLint const size = 2; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttrib2dvNV(index, tmp) #else #define FN_GLVERTEXATTRIB2DVNV(index, v) \ fn.glVertexAttrib2dvNV(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIB2FVNV(index, v) \ GLint const size = 2; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttrib2fvNV(index, tmp) #else #define FN_GLVERTEXATTRIB2FVNV(index, v) \ fn.glVertexAttrib2fvNV(index, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB2SVNV(index, v) \ GLint const size = 2; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib2svNV(index, tmp) #else #define FN_GLVERTEXATTRIB2SVNV(index, v) \ fn.glVertexAttrib2svNV(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIB3DVNV(index, v) \ GLint const size = 3; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttrib3dvNV(index, tmp) #else #define FN_GLVERTEXATTRIB3DVNV(index, v) \ fn.glVertexAttrib3dvNV(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIB3FVNV(index, v) \ GLint const size = 3; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttrib3fvNV(index, tmp) #else #define FN_GLVERTEXATTRIB3FVNV(index, v) \ fn.glVertexAttrib3fvNV(index, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB3SVNV(index, v) \ GLint const size = 3; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib3svNV(index, tmp) #else #define FN_GLVERTEXATTRIB3SVNV(index, v) \ fn.glVertexAttrib3svNV(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIB4DVNV(index, v) \ GLint const size = 4; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttrib4dvNV(index, tmp) #else #define FN_GLVERTEXATTRIB4DVNV(index, v) \ fn.glVertexAttrib4dvNV(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEXATTRIB4NUBV(index, v) \ GLint const size = 4; \ GLubyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, v, tmp); \ fn.glVertexAttrib4Nubv(index, ptmp) #else #define FN_GLVERTEXATTRIB4NUBV(index, v) \ fn.glVertexAttrib4Nubv(index, HostAddr(v, const GLubyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEXATTRIB4UBVNV(index, v) \ GLint const size = 4; \ GLubyte tmp[size]; \ Atari2HostByteArray(size, v, tmp); \ fn.glVertexAttrib4ubvNV(index, tmp) #else #define FN_GLVERTEXATTRIB4UBVNV(index, v) \ fn.glVertexAttrib4ubvNV(index, HostAddr(v, const GLubyte *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIB4FVNV(index, v) \ GLint const size = 4; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttrib4fvNV(index, tmp) #else #define FN_GLVERTEXATTRIB4FVNV(index, v) \ fn.glVertexAttrib4fvNV(index, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4SVNV(index, v) \ GLint const size = 4; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib4svNV(index, tmp) #else #define FN_GLVERTEXATTRIB4SVNV(index, v) \ fn.glVertexAttrib4svNV(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIBS1DVNV(index, count, v) \ GLint const size = 1; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttribs1dvNV(index, count, tmp) #else #define FN_GLVERTEXATTRIBS1DVNV(index, count, v) \ fn.glVertexAttribs1dvNV(index, count, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIBS1FVNV(index, count, v) \ GLint const size = 1; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttribs1fvNV(index, count, tmp) #else #define FN_GLVERTEXATTRIBS1FVNV(index, count, v) \ fn.glVertexAttribs1fvNV(index, count, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBS1SVNV(index, count, v) \ GLint const size = 1; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttribs1svNV(index, count, tmp) #else #define FN_GLVERTEXATTRIBS1SVNV(index, count, v) \ fn.glVertexAttribs1svNV(index, count, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIBS2DVNV(index, count, v) \ GLint const size = 2; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttribs2dvNV(index, count, tmp) #else #define FN_GLVERTEXATTRIBS2DVNV(index, count, v) \ fn.glVertexAttribs2dvNV(index, count, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIBS2FVNV(index, count, v) \ GLint const size = 2; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttribs2fvNV(index, count, tmp) #else #define FN_GLVERTEXATTRIBS2FVNV(index, count, v) \ fn.glVertexAttribs2fvNV(index, count, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBS2SVNV(index, count, v) \ GLint const size = 2; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttribs2svNV(index, count, tmp) #else #define FN_GLVERTEXATTRIBS2SVNV(index, count, v) \ fn.glVertexAttribs2svNV(index, count, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIBS3DVNV(index, count, v) \ GLint const size = 3; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttribs3dvNV(index, count, tmp) #else #define FN_GLVERTEXATTRIBS3DVNV(index, count, v) \ fn.glVertexAttribs3dvNV(index, count, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIBS3FVNV(index, count, v) \ GLint const size = 3; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttribs3fvNV(index, count, tmp) #else #define FN_GLVERTEXATTRIBS3FVNV(index, count, v) \ fn.glVertexAttribs3fvNV(index, count, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBS3SVNV(index, count, v) \ GLint const size = 3; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttribs3svNV(index, count, tmp) #else #define FN_GLVERTEXATTRIBS3SVNV(index, count, v) \ fn.glVertexAttribs3svNV(index, count, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIBS4DVNV(index, count, v) \ GLint const size = 4; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttribs4dvNV(index, count, tmp) #else #define FN_GLVERTEXATTRIBS4DVNV(index, count, v) \ fn.glVertexAttribs4dvNV(index, count, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIBS4FVNV(index, count, v) \ GLint const size = 4; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttribs4fvNV(index, count, tmp) #else #define FN_GLVERTEXATTRIBS4FVNV(index, count, v) \ fn.glVertexAttribs4fvNV(index, count, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBS4SVNV(index, count, v) \ GLint const size = 4; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttribs4svNV(index, count, tmp) #else #define FN_GLVERTEXATTRIBS4SVNV(index, count, v) \ fn.glVertexAttribs4svNV(index, count, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEXATTRIBS4UBVNV(index, count, v) \ GLint const size = 4; \ GLubyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, v, tmp); \ fn.glVertexAttribs4ubvNV(index, count, ptmp) #else #define FN_GLVERTEXATTRIBS4UBVNV(index, count, v) \ fn.glVertexAttribs4ubvNV(index, count, HostAddr(v, const GLubyte *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_vertex_program4 */ #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI1IVEXT(index, v) \ int const size = 1; \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI1ivEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBI1IVEXT(index, v) \ fn.glVertexAttribI1ivEXT(index, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI2IVEXT(index, v) \ int const size = 2; \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI2ivEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBI2IVEXT(index, v) \ fn.glVertexAttribI2ivEXT(index, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI3IVEXT(index, v) \ int const size = 3; \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI3ivEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBI3IVEXT(index, v) \ fn.glVertexAttribI3ivEXT(index, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI4IVEXT(index, v) \ int const size = 4; \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI4ivEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBI4IVEXT(index, v) \ fn.glVertexAttribI4ivEXT(index, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI1UIVEXT(index, v) \ int const size = 1; \ GLuint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI1uivEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBI1UIVEXT(index, v) \ fn.glVertexAttribI1uivEXT(index, HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI2UIVEXT(index, v) \ int const size = 2; \ GLuint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI2uivEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBI2UIVEXT(index, v) \ fn.glVertexAttribI2uivEXT(index, HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI3UIVEXT(index, v) \ int const size = 3; \ GLuint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI3uivEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBI3UIVEXT(index, v) \ fn.glVertexAttribI3uivEXT(index, HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI4UIVEXT(index, v) \ int const size = 4; \ GLuint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI4uivEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBI4UIVEXT(index, v) \ fn.glVertexAttribI4uivEXT(index, HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEXATTRIBI4BVEXT(index, v) \ int const size = 4; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, v, tmp); \ fn.glVertexAttribI4bvEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBI4BVEXT(index, v) \ fn.glVertexAttribI4bvEXT(index, HostAddr(v, const GLbyte *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI4SVEXT(index, v) \ int const size = 4; \ GLshort tmp[size], *ptmp; \ ptmp = Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttribI4svEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBI4SVEXT(index, v) \ fn.glVertexAttribI4svEXT(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEXATTRIBI4UBVEXT(index, v) \ int const size = 4; \ GLubyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, v, tmp); \ fn.glVertexAttribI4ubvEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBI4UBVEXT(index, v) \ fn.glVertexAttribI4ubvEXT(index, HostAddr(v, const GLubyte *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI4USVEXT(index, v) \ int const size = 4; \ GLushort tmp[size], *ptmp; \ ptmp = Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttribI4usvEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBI4USVEXT(index, v) \ fn.glVertexAttribI4usvEXT(index, HostAddr(v, const GLushort *)) #endif /* TODO */ #define FN_GLVERTEXATTRIBIPOINTEREXT(index, size, type, stride, pointer) \ fn.glVertexAttribIPointerEXT(index, size, type, stride, HostAddr(pointer, const void *)) #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXATTRIBIIVEXT(index, pname, params) \ int const n = nfglGetNumParams(pname); \ GLint tmp[MAX(n, 16)]; \ fn.glGetVertexAttribIivEXT(index, pname, tmp); \ Host2AtariIntArray(n, tmp, params) #else #define FN_GLGETVERTEXATTRIBIIVEXT(index, pname, params) \ fn.glGetVertexAttribIivEXT(index, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXATTRIBIUIVEXT(index, pname, params) \ int const n = nfglGetNumParams(pname); \ GLuint tmp[MAX(n, 16)]; \ fn.glGetVertexAttribIuivEXT(index, pname, tmp); \ Host2AtariIntArray(n, tmp, params) #else #define FN_GLGETVERTEXATTRIBIUIVEXT(index, pname, params) \ fn.glGetVertexAttribIuivEXT(index, pname, HostAddr(params, GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_vertex_attrib_64bit */ #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIBL1DVEXT(index, v) \ int const size = 1; \ GLdouble tmp[size], *ptmp; \ ptmp = Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttribL1dvEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBL1DVEXT(index, v) \ fn.glVertexAttribL1dvEXT(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIBL2DVEXT(index, v) \ int const size = 2; \ GLdouble tmp[size], *ptmp; \ ptmp = Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttribL2dvEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBL2DVEXT(index, v) \ fn.glVertexAttribL2dvEXT(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIBL3DVEXT(index, v) \ int const size = 3; \ GLdouble tmp[size], *ptmp; \ ptmp = Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttribL3dvEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBL3DVEXT(index, v) \ fn.glVertexAttribL3dvEXT(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIBL4DVEXT(index, v) \ int const size = 4; \ GLdouble tmp[size], *ptmp; \ ptmp = Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttribL4dvEXT(index, ptmp) #else #define FN_GLVERTEXATTRIBL4DVEXT(index, v) \ fn.glVertexAttribL4dvEXT(index, HostAddr(v, const GLdouble *)) #endif /* TODO */ #define FN_GLVERTEXATTRIBLPOINTEREXT(index, size, type, stride, pointer) \ fn.glVertexAttribLPointerEXT(index, size, type, stride, HostAddr(pointer, const void *)) #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETVERTEXATTRIBLDVEXT(index, pname, params) \ int const n = nfglGetNumParams(pname); \ GLdouble tmp[MAX(n, 16)]; \ fn.glGetVertexAttribLdvEXT(index, pname, tmp); \ Host2AtariDoubleArray(n, tmp, params) #else #define FN_GLGETVERTEXATTRIBLDVEXT(index, pname, params) \ fn.glGetVertexAttribLdvEXT(index, pname, HostAddr(params, GLdouble *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_vertex_attrib_integer_64bit */ #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBL1I64VNV(index, v) \ int const size = 1; \ GLint64EXT tmp[size], *ptmp; \ ptmp = Atari2HostInt64Array(size, v, tmp); \ fn.glVertexAttribL1i64vNV(index, ptmp) #else #define FN_GLVERTEXATTRIBL1I64VNV(index, v) \ fn.glVertexAttribL1i64vNV(index, HostAddr(v, const GLint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBL2I64VNV(index, v) \ int const size = 2; \ GLint64EXT tmp[size], *ptmp; \ ptmp = Atari2HostInt64Array(size, v, tmp); \ fn.glVertexAttribL2i64vNV(index, ptmp) #else #define FN_GLVERTEXATTRIBL2I64VNV(index, v) \ fn.glVertexAttribL2i64vNV(index, HostAddr(v, const GLint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBL3I64VNV(index, v) \ int const size = 3; \ GLint64EXT tmp[size], *ptmp; \ ptmp = Atari2HostInt64Array(size, v, tmp); \ fn.glVertexAttribL3i64vNV(index, ptmp) #else #define FN_GLVERTEXATTRIBL3I64VNV(index, v) \ fn.glVertexAttribL3i64vNV(index, HostAddr(v, const GLint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBL4I64VNV(index, v) \ int const size = 4; \ GLint64EXT tmp[size], *ptmp; \ ptmp = Atari2HostInt64Array(size, v, tmp); \ fn.glVertexAttribL4i64vNV(index, ptmp) #else #define FN_GLVERTEXATTRIBL4I64VNV(index, v) \ fn.glVertexAttribL4i64vNV(index, HostAddr(v, const GLint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBL1UI64VNV(index, v) \ int const size = 1; \ GLuint64EXT tmp[size], *ptmp; \ ptmp = Atari2HostInt64Array(size, v, tmp); \ fn.glVertexAttribL1ui64vNV(index, ptmp) #else #define FN_GLVERTEXATTRIBL1UI64VNV(index, v) \ fn.glVertexAttribL1ui64vNV(index, HostAddr(v, const GLuint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBL2UI64VNV(index, v) \ int const size = 2; \ GLuint64EXT tmp[size], *ptmp; \ ptmp = Atari2HostInt64Array(size, v, tmp); \ fn.glVertexAttribL2ui64vNV(index, ptmp) #else #define FN_GLVERTEXATTRIBL2UI64VNV(index, v) \ fn.glVertexAttribL2ui64vNV(index, HostAddr(v, const GLuint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBL3UI64VNV(index, v) \ int const size = 3; \ GLuint64EXT tmp[size], *ptmp; \ ptmp = Atari2HostInt64Array(size, v, tmp); \ fn.glVertexAttribL3ui64vNV(index, ptmp) #else #define FN_GLVERTEXATTRIBL3UI64VNV(index, v) \ fn.glVertexAttribL3ui64vNV(index, HostAddr(v, const GLuint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBL4UI64VNV(index, v) \ int const size = 4; \ GLuint64EXT tmp[size], *ptmp; \ ptmp = Atari2HostInt64Array(size, v, tmp); \ fn.glVertexAttribL4ui64vNV(index, ptmp) #else #define FN_GLVERTEXATTRIBL4UI64VNV(index, v) \ fn.glVertexAttribL4ui64vNV(index, HostAddr(v, const GLuint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXATTRIBLI64VNV(index, pname, params) \ int const n = nfglGetNumParams(pname); \ GLint64EXT tmp[MAX(n, 16)]; \ fn.glGetVertexAttribLi64vNV(index, pname, tmp); \ Host2AtariInt64Array(n, tmp, params) #else #define FN_GLGETVERTEXATTRIBLI64VNV(index, pname, params) \ fn.glGetVertexAttribLi64vNV(index, pname, HostAddr(params, GLint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXATTRIBLUI64VNV(index, pname, params) \ int const n = nfglGetNumParams(pname); \ GLuint64EXT tmp[MAX(n, 16)]; \ fn.glGetVertexAttribLui64vNV(index, pname, tmp); \ Host2AtariInt64Array(n, tmp, params) #else #define FN_GLGETVERTEXATTRIBLUI64VNV(index, pname, params) \ fn.glGetVertexAttribLui64vNV(index, pname, HostAddr(params, GLuint64EXT *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_vertex_buffer_unified_memory */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGETINTEGERUI64I_VNV(value, index, data) \ GLint const size = nfglGetNumParams(value); \ GLuint64EXT tmp[MAX(size, 16)]; \ fn.glGetIntegerui64i_vNV(value, index, tmp); \ Host2AtariInt64Array(size, tmp, data) #else #define FN_GLGETINTEGERUI64I_VNV(value, index, data) \ fn.glGetIntegerui64i_vNV(value, index, HostAddr(data, GLuint64EXT *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ARB_bindless_texture */ #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORMHANDLEUI64VARB(location, count, value) \ int const size = count; \ if (size <= 0) return; \ GLuint64 tmp[size], *ptmp; \ ptmp = Atari2HostInt64Array(size, value, tmp); \ fn.glUniformHandleui64vARB(location, count, ptmp) #else #define FN_GLUNIFORMHANDLEUI64VARB(location, count, value) \ fn.glUniformHandleui64vARB(location, count, HostAddr(value, const GLuint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORMHANDLEUI64VARB(program, location, count, value) \ int const size = count; \ if (size <= 0) return; \ GLuint64 tmp[size], *ptmp; \ ptmp = Atari2HostInt64Array(size, value, tmp); \ fn.glProgramUniformHandleui64vARB(program, location, count, ptmp) #else #define FN_GLPROGRAMUNIFORMHANDLEUI64VARB(program, location, count, value) \ fn.glProgramUniformHandleui64vARB(program, location, count, HostAddr(value, const GLuint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBL1UI64VARB(index, v) \ int const size = 1; \ GLuint64EXT tmp[size], *ptmp; \ ptmp = Atari2HostInt64Array(size, v, tmp); \ fn.glVertexAttribL1ui64vARB(index, ptmp) #else #define FN_GLVERTEXATTRIBL1UI64VARB(index, v) \ fn.glVertexAttribL1ui64vARB(index, HostAddr(v, const GLuint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXATTRIBLUI64VARB(index, pname, params) \ int const n = nfglGetNumParams(pname); \ GLuint64EXT tmp[MAX(n, 16)]; \ fn.glGetVertexAttribLui64vARB(index, pname, tmp); \ Host2AtariInt64Array(n, tmp, params) #else #define FN_GLGETVERTEXATTRIBLUI64VARB(index, pname, params) \ fn.glGetVertexAttribLui64vARB(index, pname, HostAddr(params, GLuint64EXT *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_bindless_texture */ #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORMHANDLEUI64VNV(location, count, value) \ int const size = count; \ if (size <= 0) return; \ GLuint64 tmp[size], *ptmp; \ ptmp = Atari2HostInt64Array(size, value, tmp); \ fn.glUniformHandleui64vNV(location, count, ptmp) #else #define FN_GLUNIFORMHANDLEUI64VNV(location, count, value) \ fn.glUniformHandleui64vNV(location, count, HostAddr(value, const GLuint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORMHANDLEUI64VNV(program, location, count, value) \ int const size = count; \ if (size <= 0) return; \ GLuint64 tmp[size], *ptmp; \ ptmp = Atari2HostInt64Array(size, value, tmp); \ fn.glProgramUniformHandleui64vNV(program, location, count, ptmp) #else #define FN_GLPROGRAMUNIFORMHANDLEUI64VNV(program, location, count, value) \ fn.glProgramUniformHandleui64vNV(program, location, count, HostAddr(value, const GLuint64 *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_shader_buffer_load */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGETBUFFERPARAMETERUI64VNV(target, pname, params) \ GLuint64EXT tmp[4]; \ int const size = nfglGetNumParams(pname); \ fn.glGetBufferParameterui64vNV(target, pname, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETBUFFERPARAMETERUI64VNV(target, pname, params) \ fn.glGetBufferParameterui64vNV(target, pname, HostAddr(params, GLuint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETINTEGERUI64VNV(value, data) \ GLint const size = nfglGetNumParams(value); \ GLuint64EXT tmp[MAX(size, 16)]; \ fn.glGetIntegerui64vNV(value, tmp); \ Host2AtariInt64Array(size, tmp, data) #else #define FN_GLGETINTEGERUI64VNV(value, data) \ fn.glGetIntegerui64vNV(value, HostAddr(data, GLuint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORMUI64VNV(location, count, value) \ GLint const size = count; \ GLuint64EXT tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostInt64Array(size, value, tmp); \ fn.glUniformui64vNV(location, count, ptmp) #else #define FN_GLUNIFORMUI64VNV(location, count, value) \ fn.glUniformui64vNV(location, count, HostAddr(value, const GLuint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORMUI64VNV(program, location, count, value) \ GLint const size = count; \ GLuint64EXT tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostInt64Array(size, value, tmp); \ fn.glProgramUniformui64vNV(program, location, count, ptmp) #else #define FN_GLPROGRAMUNIFORMUI64VNV(program, location, count, value) \ fn.glProgramUniformui64vNV(program, location, count, HostAddr(value, const GLuint64EXT *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_video_capture */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVIDEOCAPTUREIVNV(video_capture_slot, pname, params) \ int const n = 1; \ GLint tmp[MAX(n, 16)]; \ fn.glGetVideoCaptureivNV(video_capture_slot, pname, tmp); \ Host2AtariIntArray(n, tmp, params) #else #define FN_GLGETVIDEOCAPTUREIVNV(video_capture_slot, pname, params) \ fn.glGetVideoCaptureivNV(video_capture_slot, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVIDEOCAPTURESTREAMIVNV(video_capture_slot, stream, pname, params) \ int const n = 1; \ GLint tmp[MAX(n, 16)]; \ fn.glGetVideoCaptureStreamivNV(video_capture_slot, stream, pname, tmp); \ Host2AtariIntArray(n, tmp, params) #else #define FN_GLGETVIDEOCAPTURESTREAMIVNV(video_capture_slot, stream, pname, params) \ fn.glGetVideoCaptureStreamivNV(video_capture_slot, stream, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETVIDEOCAPTURESTREAMFVNV(video_capture_slot, stream, pname, params) \ int const n = 1; \ GLfloat tmp[MAX(n, 16)]; \ fn.glGetVideoCaptureStreamfvNV(video_capture_slot, stream, pname, tmp); \ Host2AtariFloatArray(n, tmp, params) #else #define FN_GLGETVIDEOCAPTURESTREAMFVNV(video_capture_slot, stream, pname, params) \ fn.glGetVideoCaptureStreamfvNV(video_capture_slot, stream, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETVIDEOCAPTURESTREAMDVNV(video_capture_slot, stream, pname, params) \ int const n = 1; \ GLdouble tmp[MAX(n, 16)]; \ fn.glGetVideoCaptureStreamdvNV(video_capture_slot, stream, pname, tmp); \ Host2AtariDoubleArray(n, tmp, params) #else #define FN_GLGETVIDEOCAPTURESTREAMDVNV(video_capture_slot, stream, pname, params) \ fn.glGetVideoCaptureStreamdvNV(video_capture_slot, stream, pname, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVIDEOCAPTURENV(video_capture_slot, sequence_num, capture_time) \ GLuint seq = 0; \ GLuint64EXT time = 0; \ GLenum ret = fn.glVideoCaptureNV(video_capture_slot, &seq, &time); \ Host2AtariIntArray(1, &seq, sequence_num); \ Host2AtariInt64Array(1, &time, capture_time); \ return ret #else #define FN_GLVIDEOCAPTURENV(video_capture_slot, sequence_num, capture_time) \ return fn.glVideoCaptureNV(video_capture_slot, HostAddr(sequence_num, GLuint *), HostAddr(capture_time, GLuint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVIDEOCAPTURESTREAMPARAMETERIVNV(video_capture_slot, stream, pname, params) \ int const n = 1; \ GLint tmp[MAX(n, 16)], *ptmp; \ ptmp = Atari2HostIntArray(n, params, tmp); \ fn.glVideoCaptureStreamParameterivNV(video_capture_slot, stream, pname, ptmp) #else #define FN_GLVIDEOCAPTURESTREAMPARAMETERIVNV(video_capture_slot, stream, pname, params) \ fn.glVideoCaptureStreamParameterivNV(video_capture_slot, stream, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVIDEOCAPTURESTREAMPARAMETERFVNV(video_capture_slot, stream, pname, params) \ int const n = 1; \ GLfloat tmp[MAX(n, 16)], *ptmp; \ ptmp = Atari2HostFloatArray(n, params, tmp); \ fn.glVideoCaptureStreamParameterfvNV(video_capture_slot, stream, pname, ptmp) #else #define FN_GLVIDEOCAPTURESTREAMPARAMETERFVNV(video_capture_slot, stream, pname, params) \ fn.glVideoCaptureStreamParameterfvNV(video_capture_slot, stream, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVIDEOCAPTURESTREAMPARAMETERDVNV(video_capture_slot, stream, pname, params) \ int const n = 1; \ GLdouble tmp[MAX(n, 16)], *ptmp; \ ptmp = Atari2HostDoubleArray(n, params, tmp); \ fn.glVideoCaptureStreamParameterdvNV(video_capture_slot, stream, pname, ptmp) #else #define FN_GLVIDEOCAPTURESTREAMPARAMETERDVNV(video_capture_slot, stream, pname, params) \ fn.glVideoCaptureStreamParameterdvNV(video_capture_slot, stream, pname, HostAddr(params, const GLdouble *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_present_video */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVIDEOIVNV(video_slot, pname, params) \ int const n = 1; \ GLint tmp[MAX(n, 16)]; \ fn.glGetVideoivNV(video_slot, pname, tmp); \ Host2AtariIntArray(n, tmp, params) #else #define FN_GLGETVIDEOIVNV(video_slot, pname, params) \ fn.glGetVideoivNV(video_slot, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVIDEOUIVNV(video_slot, pname, params) \ int const n = 1; \ GLuint tmp[MAX(n, 16)]; \ fn.glGetVideouivNV(video_slot, pname, tmp); \ Host2AtariIntArray(n, tmp, params) #else #define FN_GLGETVIDEOUIVNV(video_slot, pname, params) \ fn.glGetVideouivNV(video_slot, pname, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVIDEOI64VNV(video_slot, pname, params) \ int const n = 1; \ GLint64EXT tmp[MAX(n, 16)]; \ fn.glGetVideoi64vNV(video_slot, pname, tmp); \ Host2AtariInt64Array(n, tmp, params) #else #define FN_GLGETVIDEOI64VNV(video_slot, pname, params) \ fn.glGetVideoi64vNV(video_slot, pname, HostAddr(params, GLint64EXT *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVIDEOUI64VNV(video_slot, pname, params) \ int const n = 1; \ GLuint64EXT tmp[MAX(n, 16)]; \ fn.glGetVideoui64vNV(video_slot, pname, tmp); \ Host2AtariInt64Array(n, tmp, params) #else #define FN_GLGETVIDEOUI64VNV(video_slot, pname, params) \ fn.glGetVideoui64vNV(video_slot, pname, HostAddr(params, GLuint64EXT *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_vdpau_interop */ /* not implementable */ /* -------------------------------------------------------------------------- */ /* * GL_ARB_vertex_shader */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLBINDATTRIBLOCATIONARB(program, index, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ fn.glBindAttribLocationARB(program, index, ptmp) #else #define FN_GLBINDATTRIBLOCATIONARB(program, index, name) \ fn.glBindAttribLocationARB(program, index, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETACTIVEATTRIBARB(program, index, maxLength, length, size, type, name) \ GLsizei l; \ GLint s; \ GLenum t; \ GLcharARB tmp[MAX(maxLength, 0)]; \ fn.glGetActiveAttribARB(program, index, maxLength, &l, &s, &t, tmp); \ Host2AtariByteArray(MIN(l + 1, maxLength), tmp, name); \ Host2AtariIntArray(1, &l, length); \ Host2AtariIntArray(1, &s, size); \ Host2AtariIntArray(1, &t, type) #else #define FN_GLGETACTIVEATTRIBARB(program, index, bufSize, length, size, type, name) \ fn.glGetActiveAttribARB(program, index, bufSize, HostAddr(length, GLsizei *), HostAddr(size, GLint *), HostAddr(type, GLenum *), HostAddr(name, GLcharARB *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETATTRIBLOCATIONARB(program, name) \ GLchar namebuf[safe_strlen(name) + 1], *pname; \ pname = Atari2HostByteArray(sizeof(namebuf), name, namebuf); \ return fn.glGetAttribLocationARB(program, pname) #else #define FN_GLGETATTRIBLOCATIONARB(program, name) \ return fn.glGetAttribLocationARB(program, HostAddr(name, const GLchar *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ARB_vertex_program */ #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIB1DVARB(index, v) \ GLint const size = 1; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttrib1dvARB(index, tmp) #else #define FN_GLVERTEXATTRIB1DVARB(index, v) \ fn.glVertexAttrib1dvARB(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIB1FVARB(index, v) \ GLint const size = 1; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttrib1fvARB(index, tmp) #else #define FN_GLVERTEXATTRIB1FVARB(index, v) \ fn.glVertexAttrib1fvARB(index, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB1SVARB(index, v) \ GLint const size = 1; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib1svARB(index, tmp) #else #define FN_GLVERTEXATTRIB1SVARB(index, v) \ fn.glVertexAttrib1svARB(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIB2DVARB(index, v) \ GLint const size = 2; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttrib2dvARB(index, tmp) #else #define FN_GLVERTEXATTRIB2DVARB(index, v) \ fn.glVertexAttrib2dvARB(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIB2FVARB(index, v) \ GLint const size = 2; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttrib2fvARB(index, tmp) #else #define FN_GLVERTEXATTRIB2FVARB(index, v) \ fn.glVertexAttrib2fvARB(index, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB2SVARB(index, v) \ GLint const size = 2; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib2svARB(index, tmp) #else #define FN_GLVERTEXATTRIB2SVARB(index, v) \ fn.glVertexAttrib2svARB(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIB3DVARB(index, v) \ GLint const size = 3; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttrib3dvARB(index, tmp) #else #define FN_GLVERTEXATTRIB3DVARB(index, v) \ fn.glVertexAttrib3dvARB(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIB3FVARB(index, v) \ GLint const size = 3; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttrib3fvARB(index, tmp) #else #define FN_GLVERTEXATTRIB3FVARB(index, v) \ fn.glVertexAttrib3fvARB(index, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB3SVARB(index, v) \ GLint const size = 3; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib3svARB(index, tmp) #else #define FN_GLVERTEXATTRIB3SVARB(index, v) \ fn.glVertexAttrib3svARB(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEXATTRIB4NBVARB(index, v) \ GLint const size = 4; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, v, tmp); \ fn.glVertexAttrib4NbvARB(index, ptmp) #else #define FN_GLVERTEXATTRIB4NBVARB(index, v) \ fn.glVertexAttrib4NbvARB(index, HostAddr(v, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEXATTRIB4NUBVARB(index, v) \ GLint const size = 4; \ GLubyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, v, tmp); \ fn.glVertexAttrib4NubvARB(index, ptmp) #else #define FN_GLVERTEXATTRIB4NUBVARB(index, v) \ fn.glVertexAttrib4NubvARB(index, HostAddr(v, const GLubyte *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4NIVARB(index, v) \ GLint const size = 4; \ GLint tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttrib4NivARB(index, tmp) #else #define FN_GLVERTEXATTRIB4NIVARB(index, v) \ fn.glVertexAttrib4NivARB(index, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4NSVARB(index, v) \ GLint const size = 4; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib4NsvARB(index, tmp) #else #define FN_GLVERTEXATTRIB4NSVARB(index, v) \ fn.glVertexAttrib4NsvARB(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4NUIVARB(index, v) \ GLint const size = 4; \ GLuint tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttrib4NuivARB(index, tmp) #else #define FN_GLVERTEXATTRIB4NUIVARB(index, v) \ fn.glVertexAttrib4NuivARB(index, HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4NUSVARB(index, v) \ GLint const size = 4; \ GLushort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib4NusvARB(index, tmp) #else #define FN_GLVERTEXATTRIB4NUSVARB(index, v) \ fn.glVertexAttrib4NusvARB(index, HostAddr(v, const GLushort *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEXATTRIB4BVARB(index, v) \ GLint const size = 4; \ GLbyte tmp[size]; \ Atari2HostByteArray(size, v, tmp); \ fn.glVertexAttrib4bvARB(index, tmp) #else #define FN_GLVERTEXATTRIB4BVARB(index, v) \ fn.glVertexAttrib4bvARB(index, HostAddr(v, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEXATTRIB4UBVARB(index, v) \ GLint const size = 4; \ GLubyte tmp[size]; \ Atari2HostByteArray(size, v, tmp); \ fn.glVertexAttrib4ubvARB(index, tmp) #else #define FN_GLVERTEXATTRIB4UBVARB(index, v) \ fn.glVertexAttrib4ubvARB(index, HostAddr(v, const GLubyte *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIB4DVARB(index, v) \ GLint const size = 4; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttrib4dvARB(index, tmp) #else #define FN_GLVERTEXATTRIB4DVARB(index, v) \ fn.glVertexAttrib4dvARB(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIB4FVARB(index, v) \ GLint const size = 4; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttrib4fvARB(index, tmp) #else #define FN_GLVERTEXATTRIB4FVARB(index, v) \ fn.glVertexAttrib4fvARB(index, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4IVARB(index, v) \ GLint const size = 4; \ GLint tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttrib4ivARB(index, tmp) #else #define FN_GLVERTEXATTRIB4IVARB(index, v) \ fn.glVertexAttrib4ivARB(index, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4SVARB(index, v) \ GLint const size = 4; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib4svARB(index, tmp) #else #define FN_GLVERTEXATTRIB4SVARB(index, v) \ fn.glVertexAttrib4svARB(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4UIVARB(index, v) \ GLint const size = 4; \ GLuint tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttrib4uivARB(index, tmp) #else #define FN_GLVERTEXATTRIB4UIVARB(index, v) \ fn.glVertexAttrib4uivARB(index, HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4USVARB(index, v) \ GLint const size = 4; \ GLushort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib4usvARB(index, tmp) #else #define FN_GLVERTEXATTRIB4USVARB(index, v) \ fn.glVertexAttrib4usvARB(index, HostAddr(v, const GLushort *)) #endif /* TODO */ #define FN_GLGETVERTEXATTRIBPOINTERVARB(index, pname, pointer) \ UNUSED(pointer); \ void *p = 0; \ fn.glGetVertexAttribPointervARB(index, pname, &p) /* TODO */ #define FN_GLVERTEXATTRIBPOINTERARB(index, size, type, normalized, stride, pointer) \ fn.glVertexAttribPointerARB(index, size, type, normalized, stride, HostAddr(pointer, const void *)) #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETVERTEXATTRIBDVARB(index, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLdouble tmp[size]; \ fn.glGetVertexAttribdvARB(index, pname, tmp); \ Host2AtariDoubleArray(size, tmp, params) #else #define FN_GLGETVERTEXATTRIBDVARB(index, pname, params) \ fn.glGetVertexAttribdvARB(index, pname, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETVERTEXATTRIBFVARB(index, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[size]; \ fn.glGetVertexAttribfvARB(index, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETVERTEXATTRIBFVARB(index, pname, params) \ fn.glGetVertexAttribfvARB(index, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXATTRIBIVARB(index, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[size]; \ fn.glGetVertexAttribivARB(index, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETVERTEXATTRIBIVARB(index, pname, params) \ fn.glGetVertexAttribivARB(index, pname, HostAddr(params, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_MESA_program_debug */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPROGRAMREGISTERFVMESA(target, len, name, v) \ GLint const size = 4; \ GLfloat tmp[size]; \ GLubyte namebuf[safe_strlen(name) + 1], *pname; \ pname = Atari2HostByteArray(sizeof(namebuf), name, namebuf); \ fn.glGetProgramRegisterfvMESA(target, len, pname, tmp); \ Host2AtariFloatArray(size, tmp, v) #else #define FN_GLGETPROGRAMREGISTERFVMESA(target, len, name, v) \ fn.glGetProgramRegisterfvMESA(target, len, HostAddr(name, const GLubyte *), HostAddr(v, GLfloat *)) #endif /* seems to be no longer supported */ #define FN_GLPROGRAMCALLBACKMESA(target, callback, data) \ UNUSED(target); \ UNUSED(callback);\ UNUSED(data); \ glSetError(GL_INVALID_OPERATION) /* -------------------------------------------------------------------------- */ /* * GL_MESA_shader_debug */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETDEBUGLOGMESA(obj, logType, shaderType, maxLength, length, debugLog) \ GLsizei l; \ GLcharARB tmp[MAX(maxLength, 0)]; \ fn.glGetDebugLogMESA(obj, logType, shaderType, maxLength, &l, tmp); \ Host2AtariByteArray(MIN(l + 1, maxLength), tmp, debugLog); \ Host2AtariIntArray(1, &l, length) #else #define FN_GLGETDEBUGLOGMESA(obj, logType, shaderType, maxLength, length, debugLog) \ fn.glGetDebugLogMESA(obj, logType, shaderType, maxLength, HostAddr(length, GLsizei *), HostAddr(debugLog, GLcharARB *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_debug_label */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETOBJECTLABELEXT(identifier, name, bufSize, length, label) \ GLsizei l = 0; \ GLchar labelbuf[MAX(bufSize, 0)]; \ fn.glGetObjectLabelEXT(identifier, name, bufSize, &l, labelbuf); \ Host2AtariIntArray(1, &l, length); \ Host2AtariByteArray(MIN(l + 1, bufSize), labelbuf, label) #else #define FN_GLGETOBJECTLABELEXT(identifier, name, bufSize, length, label) \ fn.glGetObjectLabelEXT(identifier, name, bufSize, HostAddr(length, GLsizei *), HostAddr(label, GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLLABELOBJECTEXT(type, object, length, label) \ if (length <= 0) length = safe_strlen(label); \ GLchar labelbuf[length], *plabel; \ plabel = Atari2HostByteArray(length, label, labelbuf); \ fn.glLabelObjectEXT(type, object, length, plabel) #else #define FN_GLLABELOBJECTEXT(type, object, length, label) \ fn.glLabelObjectEXT(type, object, length, HostAddr(label, const GLchar *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_timer_query */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGETQUERYOBJECTI64VEXT(id, pname, params) \ GLint const size = 1; \ GLint64 tmp[size]; \ fn.glGetQueryObjecti64vEXT(id, pname, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETQUERYOBJECTI64VEXT(id, pname, params) \ fn.glGetQueryObjecti64vEXT(id, pname, HostAddr(params, GLint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETQUERYOBJECTUI64VEXT(id, pname, params) \ GLint const size = 1; \ GLuint64 tmp[size]; \ fn.glGetQueryObjectui64vEXT(id, pname, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETQUERYOBJECTUI64VEXT(id, pname, params) \ fn.glGetQueryObjectui64vEXT(id, pname, HostAddr(params, GLuint64 *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ARB_occlusion_query */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGENQUERIESARB(n, ids) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenQueriesARB(n, tmp); \ Host2AtariIntArray(n, tmp, ids) #else #define FN_GLGENQUERIESARB(n, ids) \ fn.glGenQueriesARB(n, HostAddr(ids, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETEQUERIESARB(n, ids) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, ids, tmp); \ fn.glDeleteQueriesARB(n, ptmp) #else #define FN_GLDELETEQUERIESARB(n, ids) \ fn.glDeleteQueriesARB(n, HostAddr(ids, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETQUERYIVARB(target, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetQueryivARB(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETQUERYIVARB(target, pname, params) \ fn.glGetQueryivARB(target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETQUERYOBJECTIVARB(id, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetQueryObjectivARB(id, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETQUERYOBJECTIVARB(id, pname, params) \ fn.glGetQueryObjectivARB(id, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETQUERYOBJECTUIVARB(id, pname, params) \ GLint const size = 1; \ GLuint tmp[size]; \ fn.glGetQueryObjectuivARB(id, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETQUERYOBJECTUIVARB(id, pname, params) \ fn.glGetQueryObjectuivARB(id, pname, HostAddr(params, GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_convolution */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLCONVOLUTIONFILTER1DEXT(target, internalformat, width, format, type, image) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, 1, 1, format, type, (nfmemptr)image); \ fn.glConvolutionFilter1DEXT(target, internalformat, width, format, type, tmp) #else #define FN_GLCONVOLUTIONFILTER1DEXT(target, internalformat, width, format, type, image) \ fn.glConvolutionFilter1DEXT(target, internalformat, width, format, type, HostAddr(image, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLCONVOLUTIONFILTER2DEXT(target, internalformat, width, height, format, type, image) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, 1, format, type, (nfmemptr)image); \ fn.glConvolutionFilter2DEXT(target, internalformat, width, height, format, type, tmp) #else #define FN_GLCONVOLUTIONFILTER2DEXT(target, internalformat, width, height, format, type, image) \ fn.glConvolutionFilter2DEXT(target, internalformat, width, height, format, type, HostAddr(image, const void *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLCONVOLUTIONPARAMETERFVEXT(target, pname, params) \ int const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glConvolutionParameterfvEXT(target, pname, ptmp) #else #define FN_GLCONVOLUTIONPARAMETERFVEXT(target, pname, params) \ fn.glConvolutionParameterfvEXT(target, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCONVOLUTIONPARAMETERIVEXT(target, pname, params) \ int const size = nfglGetNumParams(pname); \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glConvolutionParameterivEXT(target, pname, ptmp) #else #define FN_GLCONVOLUTIONPARAMETERIVEXT(target, pname, params) \ fn.glConvolutionParameterivEXT(target, pname, HostAddr(params, const GLint *)) #endif #define FN_GLGETCONVOLUTIONFILTEREXT(target, format, type, image) \ GLint width = 0; \ GLint height = 0; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ fn.glGetConvolutionParameteriv(target, GL_CONVOLUTION_WIDTH, &width); \ fn.glGetConvolutionParameteriv(target, GL_CONVOLUTION_HEIGHT, &height); \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(image); \ fn.glGetConvolutionFilterEXT(target, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(width, height, 1, format, type)) return; \ } else { \ src = buf.hostBuffer(width, height, 1, format, type, (nfmemptr)image); \ if (src == NULL) return; \ fn.glGetConvolutionFilterEXT(target, format, type, src); \ dst = (nfmemptr)image; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETCONVOLUTIONPARAMETERFVEXT(target, pname, params) \ int const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetConvolutionParameterfvEXT(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETCONVOLUTIONPARAMETERFVEXT(target, pname, params) \ fn.glGetConvolutionParameterfvEXT(target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETCONVOLUTIONPARAMETERIVEXT(target, pname, params) \ int const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetConvolutionParameterivEXT(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETCONVOLUTIONPARAMETERIVEXT(target, pname, params) \ fn.glGetConvolutionParameterivEXT(target, pname, HostAddr(params, GLint *)) #endif #define FN_GLGETSEPARABLEFILTEREXT(target, format, type, row, column, span) \ GLint width = 0; \ GLint height = 0; \ pixelBuffer rowbuf(*this); \ pixelBuffer colbuf(*this); \ char *srcrow; \ nfmemptr dstrow; \ char *srccol; \ nfmemptr dstcol; \ \ fn.glGetConvolutionParameteriv(target, GL_CONVOLUTION_WIDTH, &width); \ fn.glGetConvolutionParameteriv(target, GL_CONVOLUTION_HEIGHT, &height); \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *rowoffset = NFHost2AtariAddr(row); \ void *coloffset = NFHost2AtariAddr(column); \ fn.glGetSeparableFilterEXT(target, format, type, rowoffset, coloffset, HostAddr(span, void *)); \ srcrow = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)rowoffset; \ srccol = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)coloffset; \ dstrow = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)rowoffset; \ dstcol = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)coloffset; \ if (!rowbuf.params(width, 1, 1, format, type)) return; \ if (!colbuf.params(1, height, 1, format, type)) return; \ } else { \ srcrow = rowbuf.hostBuffer(width, 1, 1, format, type, (nfmemptr)row); \ srccol = colbuf.hostBuffer(1, height, 1, format, type, (nfmemptr)column); \ if (srcrow == NULL || srccol == NULL) return; \ fn.glGetSeparableFilterEXT(target, format, type, srcrow, srccol, HostAddr(span, void *)); \ dstrow = (nfmemptr)row; \ dstcol = (nfmemptr)column; \ } \ rowbuf.convertToAtari(srcrow, dstrow); \ colbuf.convertToAtari(srccol, dstcol) #define FN_GLSEPARABLEFILTER2DEXT(target, internalformat, width, height, format, type, row, column) \ pixelBuffer rowbuf(*this); \ pixelBuffer colbuf(*this); \ void *tmprowbuf, *tmpcolbuf; \ \ if (contexts[cur_context].buffer_bindings.pixel_unpack.id) { \ void *rowoffset = NFHost2AtariAddr(row); \ void *coloffset = NFHost2AtariAddr(column); \ tmprowbuf = rowbuf.convertPixels(width, 1, 1, format, type, contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)rowoffset); \ tmpcolbuf = colbuf.convertPixels(1, height, 1, format, type, contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)coloffset); \ } else { \ tmprowbuf = rowbuf.convertPixels(width, 1, 1, format, type, (nfmemptr)row); \ tmpcolbuf = colbuf.convertPixels(1, height, 1, format, type, (nfmemptr)column); \ } \ fn.glSeparableFilter2DEXT(target, internalformat, width, height, format, type, tmprowbuf, tmpcolbuf) /* -------------------------------------------------------------------------- */ /* * GL_EXT_histogram */ #define FN_GLGETHISTOGRAMEXT(target, reset, format, type, values) \ GLint width = 0; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ fn.glGetHistogramParameteriv(target, GL_HISTOGRAM_WIDTH, &width); \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(values); \ fn.glGetHistogramEXT(target, reset, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(width, 1, 1, format, type)) return; \ } else { \ src = buf.hostBuffer(width, 1, 1, format, type, (nfmemptr)values); \ if (src == NULL) return; \ fn.glGetHistogramEXT(target, reset, format, type, src); \ dst = (nfmemptr)values; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETHISTOGRAMPARAMETERFVEXT(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetHistogramParameterfvEXT(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETHISTOGRAMPARAMETERFVEXT(target, pname, params) \ fn.glGetHistogramParameterfvEXT(target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETHISTOGRAMPARAMETERIVEXT(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetHistogramParameterivEXT(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETHISTOGRAMPARAMETERIVEXT(target, pname, params) \ fn.glGetHistogramParameterivEXT(target, pname, HostAddr(params, GLint *)) #endif /* * If a non-zero named buffer object is bound to the GL_PIXEL_PACK_BUFFER * target (see glBindBuffer) while minimum and maximum pixel values are * requested, values is treated as a byte offset into the buffer object's * data store. */ #define FN_GLGETMINMAXEXT(target, reset, format, type, values) \ GLint const width = 2; \ GLint const height = 4; \ char result[width * height * sizeof(GLdouble)]; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ if (!buf.params(width, height, 1, format, type)) \ return; \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(values); \ fn.glGetMinmaxEXT(target, reset, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ } else { \ src = result; \ fn.glGetMinmaxEXT(target, reset, format, type, src); \ dst = (nfmemptr)values; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETMINMAXPARAMETERFVEXT(target, pname, params) \ GLint const size = 1; \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetMinmaxParameterfvEXT(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETMINMAXPARAMETERFVEXT(target, pname, params) \ fn.glGetMinmaxParameterfvEXT(target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETMINMAXPARAMETERIVEXT(target, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetMinmaxParameterivEXT(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETMINMAXPARAMETERIVEXT(target, pname, params) \ fn.glGetMinmaxParameterivEXT(target, pname, HostAddr(params, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ARB_texture_compression */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXIMAGE1DARB(target, level, internalformat, width, border, imageSize, data) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glCompressedTexImage1DARB(target, level, internalformat, width, border, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXIMAGE1DARB(target, level, internalformat, width, border, imageSize, data) \ fn.glCompressedTexImage1DARB(target, level, internalformat, width, border, imageSize, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXIMAGE2DARB(target, level, internalformat, width, height, border, imageSize, data) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glCompressedTexImage2DARB(target, level, internalformat, width, height, border, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXIMAGE2DARB(target, level, internalformat, width, height, border, imageSize, data) \ fn.glCompressedTexImage2DARB(target, level, internalformat, width, height, border, imageSize, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXIMAGE3DARB(target, level, internalformat, width, height, depth, border, imageSize, data) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glCompressedTexImage3DARB(target, level, internalformat, width, height, depth, border, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXIMAGE3DARB(target, level, internalformat, width, height, depth, border, imageSize, data) \ fn.glCompressedTexImage3DARB(target, level, internalformat, width, height, depth, border, imageSize, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXSUBIMAGE1DARB(target, level, xoffset, width, format, imageSize, data) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glCompressedTexSubImage1DARB(target, level, xoffset, width, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXSUBIMAGE1DARB(target, level, xoffset, width, format, imageSize, data) \ fn.glCompressedTexSubImage1DARB(target, level, xoffset, width, format, imageSize, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXSUBIMAGE2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, data) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glCompressedTexSubImage2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXSUBIMAGE2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, data) \ fn.glCompressedTexSubImage2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXSUBIMAGE3DARB(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glCompressedTexSubImage3DARB(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXSUBIMAGE3DARB(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data) \ fn.glCompressedTexSubImage3DARB(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETCOMPRESSEDTEXIMAGEARB(target, level, img) \ GLint bufSize = 0; \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &bufSize); \ GLubyte tmp[bufSize]; \ fn.glGetCompressedTexImageARB(target, level, tmp); \ Host2AtariByteArray(bufSize, tmp, img) #else #define FN_GLGETCOMPRESSEDTEXIMAGEARB(target, level, img) \ fn.glGetCompressedTexImageARB(target, level, HostAddr(img, void *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_SGIS_sharpen_texture */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETSHARPENTEXFUNCSGIS(target, points) \ GLint size = 0; \ fn.glGetTexParameteriv(target, GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS, &size); \ if (size <= 0) return; \ GLfloat tmp[size]; \ fn.glGetSharpenTexFuncSGIS(target, tmp); \ Host2AtariFloatArray(size, tmp, points) #else #define FN_GLGETSHARPENTEXFUNCSGIS(target, points) \ fn.glGetSharpenTexFuncSGIS(target, HostAddr(points, GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLSHARPENTEXFUNCSGIS(target, n, points) \ GLint const size = n; \ if (size <= 0) return; \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, points, tmp); \ fn.glSharpenTexFuncSGIS(target, size, ptmp) #else #define FN_GLSHARPENTEXFUNCSGIS(target, n, points) \ fn.glSharpenTexFuncSGIS(target, n, HostAddr(points, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ATI_envmap_bumpmap */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETTEXBUMPPARAMETERFVATI(pname, param) \ GLint size = 0; \ switch (pname) { \ case GL_BUMP_ROT_MATRIX_SIZE_ATI: size = 1; break; \ case GL_BUMP_ROT_MATRIX_ATI: fn.glGetTexBumpParameterivATI(GL_BUMP_ROT_MATRIX_SIZE_ATI, &size); break; \ case GL_BUMP_NUM_TEX_UNITS_ATI: size = 1; break; \ case GL_BUMP_TEX_UNITS_ATI: fn.glGetTexBumpParameterivATI(GL_BUMP_NUM_TEX_UNITS_ATI, &size); break; \ default: glSetError(GL_INVALID_ENUM); return; \ } \ if (size <= 0) return; \ GLfloat tmp[size]; \ fn.glGetTexBumpParameterfvATI(pname, tmp); \ Host2AtariFloatArray(size, tmp, param) #else #define FN_GLGETTEXBUMPPARAMETERFVATI(pname, param) \ fn.glGetTexBumpParameterfvATI(pname, HostAddr(param, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXBUMPPARAMETERIVATI(pname, param) \ GLint size = 0; \ switch (pname) { \ case GL_BUMP_ROT_MATRIX_SIZE_ATI: size = 1; break; \ case GL_BUMP_ROT_MATRIX_ATI: fn.glGetTexBumpParameterivATI(GL_BUMP_ROT_MATRIX_SIZE_ATI, &size); break; \ case GL_BUMP_NUM_TEX_UNITS_ATI: size = 1; break; \ case GL_BUMP_TEX_UNITS_ATI: fn.glGetTexBumpParameterivATI(GL_BUMP_NUM_TEX_UNITS_ATI, &size); break; \ default: glSetError(GL_INVALID_ENUM); return; \ } \ if (size <= 0) return; \ GLint tmp[size]; \ fn.glGetTexBumpParameterivATI(pname, tmp); \ Host2AtariIntArray(size, tmp, param) #else #define FN_GLGETTEXBUMPPARAMETERIVATI(pname, param) \ fn.glGetTexBumpParameterivATI(pname, HostAddr(param, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXBUMPPARAMETERIVATI(pname, param) \ GLint size = 0; \ switch (pname) { \ case GL_BUMP_ROT_MATRIX_SIZE_ATI: size = 1; break; \ case GL_BUMP_ROT_MATRIX_ATI: fn.glGetTexBumpParameterivATI(GL_BUMP_ROT_MATRIX_SIZE_ATI, &size); break; \ case GL_BUMP_NUM_TEX_UNITS_ATI: size = 1; break; \ case GL_BUMP_TEX_UNITS_ATI: fn.glGetTexBumpParameterivATI(GL_BUMP_NUM_TEX_UNITS_ATI, &size); break; \ default: glSetError(GL_INVALID_ENUM); return; \ } \ if (size <= 0) return; \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, param, tmp); \ fn.glTexBumpParameterivATI(pname, ptmp) #else #define FN_GLTEXBUMPPARAMETERIVATI(pname, param) \ fn.glTexBumpParameterivATI(pname, HostAddr(param, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXBUMPPARAMETERFVATI(pname, param) \ GLint size = 0; \ switch (pname) { \ case GL_BUMP_ROT_MATRIX_SIZE_ATI: size = 1; break; \ case GL_BUMP_ROT_MATRIX_ATI: fn.glGetTexBumpParameterivATI(GL_BUMP_ROT_MATRIX_SIZE_ATI, &size); break; \ case GL_BUMP_NUM_TEX_UNITS_ATI: size = 1; break; \ case GL_BUMP_TEX_UNITS_ATI: fn.glGetTexBumpParameterivATI(GL_BUMP_NUM_TEX_UNITS_ATI, &size); break; \ default: glSetError(GL_INVALID_ENUM); return; \ } \ if (size <= 0) return; \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, param, tmp); \ fn.glTexBumpParameterfvATI(pname, ptmp) #else #define FN_GLTEXBUMPPARAMETERFVATI(pname, param) \ fn.glTexBumpParameterfvATI(pname, HostAddr(param, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_SGIS_texture_filter4 */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETTEXFILTERFUNCSGIS(target, filter, weights) \ GLint size = 0; \ fn.glGetTexParameteriv(target, GL_TEXTURE_FILTER4_SIZE_SGIS, &size); \ if (size <= 0) return; \ GLfloat tmp[size]; \ fn.glGetTexFilterFuncSGIS(target, filter, tmp); \ Host2AtariFloatArray(size, tmp, weights) #else #define FN_GLGETTEXFILTERFUNCSGIS(target, filter, weights) \ fn.glGetTexFilterFuncSGIS(target, filter, HostAddr(weights, GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXFILTERFUNCSGIS(target, filter, n, weights) \ GLint const size = n; \ if (size <= 0) return; \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, weights, tmp); \ fn.glTexFilterFuncSGIS(target, filter, n, ptmp) #else #define FN_GLTEXFILTERFUNCSGIS(target, filter, n, weights) \ fn.glTexFilterFuncSGIS(target, filter, n, HostAddr(weights, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_subtexture */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXSUBIMAGE1DEXT(target, level, xoffset, width, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, 1, 1, format, type, (nfmemptr)pixels); \ fn.glTexSubImage1DEXT(target, level, xoffset, width, format, type, tmp) #else #define FN_GLTEXSUBIMAGE1DEXT(target, level, xoffset, width, format, type, pixels) \ fn.glTexSubImage1DEXT(target, level, xoffset, width, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXSUBIMAGE2DEXT(target, level, xoffset, yoffset, width, height, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, 1, format, type, (nfmemptr)pixels); \ fn.glTexSubImage2DEXT(target, level, xoffset, yoffset, width, height, format, type, tmp) #else #define FN_GLTEXSUBIMAGE2DEXT(target, level, xoffset, yoffset, width, height, format, type, pixels) \ fn.glTexSubImage2DEXT(target, level, xoffset, yoffset, width, height, format, type, HostAddr(pixels, const void *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_texture_object */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLARETEXTURESRESIDENTEXT(n, textures, residences) \ GLuint tmp[MAX(n, 0)], *ptmp; \ GLboolean resbuf[MAX(n, 0)]; \ GLboolean result; \ ptmp = Atari2HostIntArray(n, textures, tmp); \ result = fn.glAreTexturesResidentEXT(n, ptmp, resbuf); \ Host2AtariByteArray(n, resbuf, residences); \ return result #else #define FN_GLARETEXTURESRESIDENTEXT(n, textures, residences) \ return fn.glAreTexturesResidentEXT(n, HostAddr(textures, const GLuint *), HostAddr(residences, GLboolean *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETETEXTURESEXT(n, textures) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, textures, tmp); \ fn.glDeleteTexturesEXT(n, ptmp) #else #define FN_GLDELETETEXTURESEXT(n, textures) \ fn.glDeleteTexturesEXT(n, HostAddr(textures, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENTEXTURESEXT(n, textures) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenTexturesEXT(n, tmp); \ Host2AtariIntArray(n, tmp, textures) #else #define FN_GLGENTEXTURESEXT(n, textures) \ fn.glGenTexturesEXT(n, HostAddr(textures, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLPRIORITIZETEXTURESEXT(n, textures, priorities) \ GLuint tmp[MAX(n, 0)], *ptmp; \ GLclampf tmp2[MAX(n, 0)], *ptmp2; \ ptmp = Atari2HostIntArray(n, textures, tmp); \ ptmp2 = Atari2HostFloatArray(n, priorities, tmp2); \ fn.glPrioritizeTexturesEXT(n, ptmp, ptmp2) #else #define FN_GLPRIORITIZETEXTURESEXT(n, textures, priorities) \ fn.glPrioritizeTexturesEXT(n, HostAddr(textures, const GLuint *), HostAddr(priorities, const GLclampf *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_texture3D */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXIMAGE3DEXT(target, level, internalformat, width, height, depth, border, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, depth, format, type, (nfmemptr)pixels); \ fn.glTexImage3DEXT(target, level, internalformat, width, height, depth, border, format, type, tmp) #else #define FN_GLTEXIMAGE3DEXT(target, level, internalformat, width, height, depth, border, format, type, pixels) \ fn.glTexImage3DEXT(target, level, internalformat, width, height, depth, border, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXSUBIMAGE3DEXT(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, depth, format, type, (nfmemptr)pixels); \ fn.glTexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, tmp) #else #define FN_GLTEXSUBIMAGE3DEXT(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) \ fn.glTexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, HostAddr(pixels, const void *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_SGIS_texture4D */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXIMAGE4DSGIS(target, level, internalformat, width, height, depth, size4d, border, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, depth * size4d, format, type, (nfmemptr)pixels); \ fn.glTexImage4DSGIS(target, level, internalformat, width, height, depth, size4d, border, format, type, tmp) #else #define FN_GLTEXIMAGE4DSGIS(target, level, internalformat, width, height, depth, size4d, border, format, type, pixels) \ fn.glTexImage4DSGIS(target, level, internalformat, width, height, depth, size4d, border, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXSUBIMAGE4DSGIS(target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, depth * size4d, format, type, (nfmemptr)pixels); \ fn.glTexSubImage4DSGIS(target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, tmp) #else #define FN_GLTEXSUBIMAGE4DSGIS(target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels) \ fn.glTexSubImage4DSGIS(target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, HostAddr(pixels, const void *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_texture_integer */ #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXPARAMETERIIVEXT(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glTexParameterIivEXT(target, pname, tmp) #else #define FN_GLTEXPARAMETERIIVEXT(target, pname, params) \ fn.glTexParameterIivEXT(target, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXPARAMETERIUIVEXT(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLuint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glTexParameterIuivEXT(target, pname, tmp) #else #define FN_GLTEXPARAMETERIUIVEXT(target, pname, params) \ fn.glTexParameterIuivEXT(target, pname, HostAddr(params, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXPARAMETERIIVEXT(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetTexParameterIivEXT(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXPARAMETERIIVEXT(target, pname, params) \ fn.glGetTexParameterIivEXT(target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXPARAMETERIUIVEXT(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLuint tmp[MAX(size, 16)]; \ fn.glGetTexParameterIuivEXT(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXPARAMETERIUIVEXT(target, pname, params) \ fn.glGetTexParameterIuivEXT(target, pname, HostAddr(params, GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_APPLE_texture_range */ /* NYI */ #define FN_GLTEXTURERANGEAPPLE(target, length, pointer) \ fn.glTextureRangeAPPLE(target, length, pointer) #define FN_GLGETTEXPARAMETERPOINTERVAPPLE(target, pname, params) \ fn.glGetTexParameterPointervAPPLE(target, pname, params) /* -------------------------------------------------------------------------- */ /* * GL_EXT_transform_feedback */ #define FN_GLBINDBUFFERRANGEEXT(target, index, buffer, offset, size) \ gl_bind_buffer(target, buffer, 0, 0); \ fn.glBindBufferRangeEXT(target, index, buffer, offset, size) #define FN_GLBINDBUFFERBASEEXT(target, index, buffer) \ gl_bind_buffer(target, buffer, 0, 0); \ fn.glBindBufferBaseEXT(target, index, buffer) #define FN_GLTRANSFORMFEEDBACKVARYINGSEXT(program, count, strings, bufferMode) \ void *pstrings[MAX(count, 0)], **ppstrings; \ ppstrings = Atari2HostPtrArray(count, strings, pstrings); \ fn.glTransformFeedbackVaryingsEXT(program, count, (const char **)ppstrings, bufferMode) #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETTRANSFORMFEEDBACKVARYINGEXT(program, index, bufSize, length, size, type, name) \ GLsizei l = 0; \ GLsizei s = 0; \ GLenum t = 0; \ GLchar namebuf[MAX(bufSize, 0)]; \ fn.glGetTransformFeedbackVaryingEXT(program, index, bufSize, &l, &s, &t, namebuf); \ Host2AtariByteArray(MIN(l + 1, bufSize), namebuf, name); \ Host2AtariIntArray(1, &l, length); \ Host2AtariIntArray(1, &s, size); \ Host2AtariIntArray(1, &t, type) #else #define FN_GLGETTRANSFORMFEEDBACKVARYINGEXT(program, index, bufSize, length, size, type, name) \ fn.glGetTransformFeedbackVaryingEXT(program, index, bufSize, HostAddr(length, GLsizei *), HostAddr(size, GLsizei *), HostAddr(type, GLenum *), HostAddr(name, GLchar *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_transform_feedback */ #define FN_GLBINDBUFFERRANGENV(target, index, buffer, offset, size) \ gl_bind_buffer(target, buffer, 0, 0); \ fn.glBindBufferRangeNV(target, index, buffer, offset, size) #define FN_GLBINDBUFFERBASENV(target, index, buffer) \ gl_bind_buffer(target, buffer, 0, 0); \ fn.glBindBufferBaseNV(target, index, buffer) #if NFOSMESA_NEED_BYTE_CONV #define FN_GLACTIVEVARYINGNV(program, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ fn.glActiveVaryingNV(program, ptmp) #else #define FN_GLACTIVEVARYINGNV(program, name) \ fn.glActiveVaryingNV(program, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETVARYINGLOCATIONNV(program, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ return fn.glGetVaryingLocationNV(program, ptmp) #else #define FN_GLGETVARYINGLOCATIONNV(program, name) \ return fn.glGetVaryingLocationNV(program, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETACTIVEVARYINGNV(program, index, bufSize, length, size, type, name) \ GLsizei l; \ GLsizei s; \ GLenum t; \ GLchar namebuf[MAX(bufSize, 0)]; \ fn.glGetActiveVaryingNV(program, index, bufSize, &l, &s, &t, namebuf); \ Host2AtariByteArray(MIN(l + 1, bufSize), namebuf, name); \ Host2AtariIntArray(1, &l, length); \ Host2AtariIntArray(1, &s, size); \ Host2AtariIntArray(1, &t, type) #else #define FN_GLGETACTIVEVARYINGNV(program, index, bufSize, length, size, type, name) \ fn.glGetActiveVaryingNV(program, index, bufSize, HostAddr(length, GLsizei *), HostAddr(size, GLsizei *), HostAddr(type, GLenum *), HostAddr(name, GLchar *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTRANSFORMFEEDBACKATTRIBSNV(count, attribs, bufferMode) \ GLsizei const size = count; \ GLint tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostIntArray(size, attribs, tmp); \ fn.glTransformFeedbackAttribsNV(count, ptmp, bufferMode) #else #define FN_GLTRANSFORMFEEDBACKATTRIBSNV(count, attribs, bufferMode) \ fn.glTransformFeedbackAttribsNV(count, HostAddr(attribs, const GLint *), bufferMode) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTRANSFORMFEEDBACKVARYINGSNV(program, count, locations, bufferMode) \ GLsizei const size = count; \ GLint tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostIntArray(size, locations, tmp); \ fn.glTransformFeedbackVaryingsNV(program, count, ptmp, bufferMode) #else #define FN_GLTRANSFORMFEEDBACKVARYINGSNV(program, count, locations, bufferMode) \ fn.glTransformFeedbackVaryingsNV(program, count, HostAddr(locations, const GLint *), bufferMode) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTRANSFORMFEEDBACKVARYINGNV(program, index, location) \ GLsizei l = 0; \ fn.glGetTransformFeedbackVaryingNV(program, index, &l); \ Host2AtariIntArray(1, &l, location) #else #define FN_GLGETTRANSFORMFEEDBACKVARYINGNV(program, index, location) \ fn.glGetTransformFeedbackVaryingNV(program, index, HostAddr(location, GLsizei *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTRANSFORMFEEDBACKSTREAMATTRIBSNV(count, attribs, nbuffers, bufstreams, bufferMode) \ GLint a[MAX(count, 0)], *pattribs; \ GLint b[MAX(nbuffers, 0)], *pbufstreams; \ pattribs = Atari2HostIntArray(count, attribs, a); \ pbufstreams = Atari2HostIntArray(nbuffers, bufstreams, b); \ fn.glTransformFeedbackStreamAttribsNV(count, pattribs, nbuffers, pbufstreams, bufferMode) #else #define FN_GLTRANSFORMFEEDBACKSTREAMATTRIBSNV(count, attribs, nbuffers, bufstreams, bufferMode) \ fn.glTransformFeedbackStreamAttribsNV(count, HostAddr(attribs, const GLint *), nbuffers, HostAddr(bufstreams, const GLint *), bufferMode) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_transform_feedback2 */ #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETETRANSFORMFEEDBACKSNV(n, ids) \ GLsizei const size = n; \ if (size <= 0 || !ids) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, ids, tmp); \ fn.glDeleteTransformFeedbacksNV(size, tmp) #else #define FN_GLDELETETRANSFORMFEEDBACKSNV(n, ids) \ fn.glDeleteTransformFeedbacksNV(n, HostAddr(ids, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENTRANSFORMFEEDBACKSNV(n, ids) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenTransformFeedbacksNV(n, tmp); \ Host2AtariIntArray(n, tmp, ids) #else #define FN_GLGENTRANSFORMFEEDBACKSNV(n, ids) \ fn.glGenTransformFeedbacksNV(n, HostAddr(ids, GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ARB_robustness */ #define FN_GLGETNTEXIMAGEARB(target, level, format, type, bufSize, img) \ GLint width = 0, height = 1, depth = 1; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ switch (target) { \ case GL_TEXTURE_1D: \ case GL_PROXY_TEXTURE_1D: \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_WIDTH, &width); \ break; \ case GL_TEXTURE_2D: \ case GL_PROXY_TEXTURE_2D: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_X: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: \ case GL_PROXY_TEXTURE_CUBE_MAP: \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_WIDTH, &width); \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_HEIGHT, &height); \ break; \ case GL_TEXTURE_3D: \ case GL_PROXY_TEXTURE_3D: \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_WIDTH, &width); \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_HEIGHT, &height); \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_DEPTH, &depth); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(img); \ fn.glGetnTexImageARB(target, level, format, type, bufSize, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(width, height, depth, format, type)) return; \ } else { \ src = buf.hostBuffer(width, height, depth, format, type, (nfmemptr)img); \ if (src == NULL) return; \ fn.glGetnTexImageARB(target, level, format, type, bufSize, src); \ dst = (nfmemptr)img; \ } \ buf.convertToAtari(src, dst) #define FN_GLREADNPIXELSARB(x, y, width, height, format, type, bufSize, img) \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(img); \ fn.glReadnPixelsARB(x, y, width, height, format, type, bufSize, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(bufSize, format, type)) return; \ } else { \ src = buf.hostBuffer(bufSize, format, type, (nfmemptr)img); \ if (src == NULL) return; \ fn.glReadnPixelsARB(x, y, width, height, format, type, bufSize, src); \ dst = (nfmemptr)img; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETNCOMPRESSEDTEXIMAGEARB(target, lod, bufSize, img) \ GLubyte tmp[MAX(bufSize, 0)]; \ fn.glGetnCompressedTexImageARB(target, lod, bufSize, tmp); \ Host2AtariByteArray(bufSize, tmp, img) #else #define FN_GLGETNCOMPRESSEDTEXIMAGEARB(target, lod, bufSize, img) \ fn.glGetnCompressedTexImageARB(target, lod, bufSize, HostAddr(img, void *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETNUNIFORMFVARB(program, location, bufSize, params) \ GLint const size = bufSize / ATARI_SIZEOF_FLOAT; \ if (size <= 0) return; \ GLfloat tmp[size]; \ fn.glGetnUniformfvARB(program, location, size, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETNUNIFORMFVARB(program, location, bufSize, params) \ fn.glGetnUniformfvARB(program, location, bufSize, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNUNIFORMIVARB(program, location, bufSize, params) \ GLint const size = bufSize / sizeof(GLint); \ if (size <= 0) return; \ GLint tmp[size]; \ fn.glGetnUniformivARB(program, location, size, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNUNIFORMIVARB(program, location, bufSize, params) \ fn.glGetnUniformivARB(program, location, bufSize, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNUNIFORMUIVARB(program, location, bufSize, params) \ GLint const size = bufSize / sizeof(GLuint); \ if (size <= 0) return; \ GLuint tmp[size]; \ fn.glGetnUniformuivARB(program, location, size, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNUNIFORMUIVARB(program, location, bufSize, params) \ fn.glGetnUniformuivARB(program, location, bufSize, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETNUNIFORMDVARB(program, location, bufSize, params) \ GLint const size = bufSize / ATARI_SIZEOF_DOUBLE; \ if (size <= 0) return; \ GLdouble tmp[size]; \ fn.glGetnUniformdvARB(program, location, size, tmp); \ Host2AtariDoubleArray(size, tmp, params) #else #define FN_GLGETNUNIFORMDVARB(program, location, bufSize, params) \ fn.glGetnUniformdvARB(program, location, bufSize, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETNMAPDVARB(target, query, bufSize, v) \ GLint const size = bufSize / ATARI_SIZEOF_DOUBLE; \ if (size <= 0) return; \ GLdouble tmp[size]; \ fn.glGetnMapdvARB(target, query, size * sizeof(*tmp), tmp); \ Host2AtariDoubleArray(size, tmp, v) #else #define FN_GLGETNMAPDVARB(target, query, bufSize, v) \ fn.glGetnMapdvARB(target, query, bufSize, HostAddr(v, GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETNMAPFVARB(target, query, bufSize, v) \ GLint const size = bufSize / ATARI_SIZEOF_FLOAT; \ if (size <= 0) return; \ GLfloat tmp[size]; \ fn.glGetnMapfvARB(target, query, size * sizeof(*tmp), tmp); \ Host2AtariFloatArray(size, tmp, v) #else #define FN_GLGETNMAPFVARB(target, query, bufSize, v) \ fn.glGetnMapfvARB(target, query, bufSize, HostAddr(v, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNMAPIVARB(target, query, bufSize, v) \ GLint const size = bufSize / sizeof(Uint32); \ if (size <= 0) return; \ GLint tmp[size]; \ fn.glGetnMapivARB(target, query, size * sizeof(*tmp), tmp); \ Host2AtariIntArray(size, tmp, v) #else #define FN_GLGETNMAPIVARB(target, query, bufSize, v) \ fn.glGetnMapivARB(target, query, bufSize, HostAddr(v, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETNPIXELMAPFVARB(map, bufSize, v) \ GLint const size = bufSize / ATARI_SIZEOF_FLOAT; \ if (size <= 0) return; \ GLfloat tmp[size]; \ fn.glGetnPixelMapfvARB(map, size * sizeof(*tmp), tmp); \ Host2AtariFloatArray(size, tmp, v) #else #define FN_GLGETNPIXELMAPFVARB(map, bufSize, v) \ fn.glGetnPixelMapfvARB(map, bufSize, HostAddr(v, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNPIXELMAPUIVARB(map, bufSize, v) \ GLint const size = bufSize / sizeof(Uint32); \ if (size <= 0) return; \ GLuint tmp[size]; \ fn.glGetnPixelMapuivARB(map, size * sizeof(*tmp), tmp); \ Host2AtariIntArray(size, tmp, v) #else #define FN_GLGETNPIXELMAPUIVARB(map, bufSize, v) \ fn.glGetnPixelMapuivARB(map, bufSize, HostAddr(v, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNPIXELMAPUSVARB(map, bufSize, v) \ GLint const size = bufSize / sizeof(Uint16); \ if (size <= 0) return; \ GLushort tmp[size]; \ fn.glGetnPixelMapusvARB(map, size * sizeof(*tmp), tmp); \ Host2AtariShortArray(size, tmp, v) #else #define FN_GLGETNPIXELMAPUSVARB(map, bufSize, v) \ fn.glGetnPixelMapusvARB(map, bufSize, HostAddr(v, GLushort *)) #endif /* * FIXME: If a non-zero named buffer object is bound to the GL_PIXEL_PACK_BUFFER target (see glBindBuffer) while a polygon stipple pattern is requested, pattern is treated as a byte offset into the buffer object's data store. */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETNPOLYGONSTIPPLEARB(bufSize, mask) \ GLubyte tmp[bufSize]; \ fn.glGetnPolygonStippleARB(bufSize, tmp); \ Host2AtariByteArray(bufSize, tmp, mask) #else #define FN_GLGETNPOLYGONSTIPPLEARB(bufSize, mask) \ fn.glGetnPolygonStippleARB(bufSize, HostAddr(mask, GLubyte *)) #endif #define FN_GLGETNCOLORTABLEARB(target, format, type, bufSize, table) \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(table); \ fn.glGetColorTableEXT(target, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(bufSize, format, type)) return; \ } else { \ src = buf.hostBuffer(bufSize, format, type, (nfmemptr)table); \ if (src == NULL) return; \ fn.glGetnColorTableARB(target, format, type, bufSize, src); \ dst = (nfmemptr)table; \ } \ buf.convertToAtari(src, dst) #define FN_GLGETNCONVOLUTIONFILTERARB(target, format, type, bufSize, image) \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(image); \ fn.glGetnConvolutionFilterARB(target, format, type, bufSize, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(bufSize, format, type)) return; \ } else { \ src = buf.hostBuffer(bufSize, format, type, (nfmemptr)image); \ if (src == NULL) return; \ fn.glGetnConvolutionFilterARB(target, format, type, bufSize, src); \ dst = (nfmemptr)image; \ } \ buf.convertToAtari(src, dst) #define FN_GLGETNSEPARABLEFILTERARB(target, format, type, rowBufSize, row, columnBufSize, column, span) \ pixelBuffer rowbuf(*this); \ pixelBuffer colbuf(*this); \ char *srcrow; \ nfmemptr dstrow; \ char *srccol; \ nfmemptr dstcol; \ \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *rowoffset = NFHost2AtariAddr(row); \ void *coloffset = NFHost2AtariAddr(column); \ fn.glGetnSeparableFilterARB(target, format, type, rowBufSize, rowoffset, columnBufSize, coloffset, HostAddr(span, void *)); \ srcrow = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)rowoffset; \ srccol = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)coloffset; \ dstrow = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)rowoffset; \ dstcol = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)coloffset; \ if (!rowbuf.params(rowBufSize, format, type)) return; \ if (!colbuf.params(columnBufSize, format, type)) return; \ } else { \ srcrow = rowbuf.hostBuffer(rowBufSize, format, type, (nfmemptr)row); \ srccol = colbuf.hostBuffer(columnBufSize, format, type, (nfmemptr)column); \ if (srcrow == NULL || srccol == NULL) return; \ fn.glGetnSeparableFilterARB(target, format, type, rowBufSize, srcrow, columnBufSize, srccol, HostAddr(span, void *)); \ dstrow = (nfmemptr)row; \ dstcol = (nfmemptr)column; \ } \ rowbuf.convertToAtari(srcrow, dstrow); \ colbuf.convertToAtari(srccol, dstcol) #define FN_GLGETNHISTOGRAMARB(target, reset, format, type, bufSize, values) \ GLint width = 0; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ fn.glGetHistogramParameteriv(target, GL_HISTOGRAM_WIDTH, &width); \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(values); \ fn.glGetnHistogramARB(target, reset, format, type, bufSize, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(bufSize, format, type)) return; \ } else { \ src = buf.hostBuffer(bufSize, format, type, (nfmemptr)values); \ if (src == NULL) return; \ fn.glGetnHistogramARB(target, reset, format, type, bufSize, src); \ dst = (nfmemptr)values; \ } \ buf.convertToAtari(src, dst) #define FN_GLGETNMINMAXARB(target, reset, format, type, bufSize, values) \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ if (!buf.params(bufSize, format, type)) \ return; \ char result[bufSize]; \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(values); \ fn.glGetnMinmaxARB(target, reset, format, type, bufSize, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ } else { \ src = result; \ fn.glGetnMinmaxARB(target, reset, format, type, bufSize, src); \ dst = (nfmemptr)values; \ } \ buf.convertToAtari(src, dst) /* -------------------------------------------------------------------------- */ /* * GL_SGIX_igloo_interface */ /* TODO: no infos */ #define FN_GLIGLOOINTERFACESGIX(pname, params) \ fn.glIglooInterfaceSGIX(pname, HostAddr(params, const void *)) /* -------------------------------------------------------------------------- */ /* * GL_SGIX_list_priority */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETLISTPARAMETERFVSGIX(list, pname, params) \ GLint const size = 1; \ GLfloat tmp[size]; \ fn.glGetListParameterfvSGIX(list, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETLISTPARAMETERFVSGIX(list, pname, params) \ fn.glGetListParameterfvSGIX(list, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETLISTPARAMETERIVSGIX(list, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetListParameterivSGIX(list, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETLISTPARAMETERIVSGIX(list, pname, params) \ fn.glGetListParameterivSGIX(list, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLLISTPARAMETERFVSGIX(list, pname, params) \ GLint const size = 1; \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glListParameterfvSGIX(list, pname, ptmp) #else #define FN_GLLISTPARAMETERFVSGIX(list, pname, params) \ fn.glListParameterfvSGIX(list, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLLISTPARAMETERIVSGIX(list, pname, params) \ GLint const size = 1; \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glListParameterivSGIX(list, pname, ptmp) #else #define FN_GLLISTPARAMETERIVSGIX(list, pname, params) \ fn.glListParameterivSGIX(list, pname, HostAddr(params, const GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_HP_image_transform */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETIMAGETRANSFORMPARAMETERFVHP(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetImageTransformParameterfvHP(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETIMAGETRANSFORMPARAMETERFVHP(target, pname, params) \ fn.glGetImageTransformParameterfvHP(target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETIMAGETRANSFORMPARAMETERIVHP(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetImageTransformParameterivHP(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETIMAGETRANSFORMPARAMETERIVHP(target, pname, params) \ fn.glGetImageTransformParameterivHP(target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLIMAGETRANSFORMPARAMETERFVHP(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glImageTransformParameterfvHP(target, pname, ptmp) #else #define FN_GLIMAGETRANSFORMPARAMETERFVHP(target, pname, params) \ fn.glImageTransformParameterfvHP(target, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLIMAGETRANSFORMPARAMETERIVHP(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glImageTransformParameterivHP(target, pname, ptmp) #else #define FN_GLIMAGETRANSFORMPARAMETERIVHP(target, pname, params) \ fn.glImageTransformParameterivHP(target, pname, HostAddr(params, const GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_APPLE_vertex_program_evaluators */ #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMAPVERTEXATTRIB1DAPPLE(index, size, u1, u2, stride, order, points) \ GLdouble *tmp; \ nfcmemptr ptr; \ GLint i; \ \ tmp = (GLdouble *)malloc(size * order * sizeof(*tmp)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ ptr = (nfcmemptr)points; \ for (i = 0; i < order; i++) { \ Atari2HostDoubleArray(size, AtariAddr(ptr, const GLdouble *), &tmp[i*size]); \ ptr += stride; \ } \ fn.glMapVertexAttrib1dAPPLE(index, size, u1, u2, size * sizeof(GLdouble), order, tmp); \ free(tmp) #else #define FN_GLMAPVERTEXATTRIB1DAPPLE(index, size, u1, u2, stride, order, points) \ fn.glMapVertexAttrib1dAPPLE(index, size, u1, u2, stride, order, HostAddr(points, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMAPVERTEXATTRIB1FAPPLE(index, size, u1, u2, stride, order, points) \ GLfloat *tmp; \ nfcmemptr ptr; \ GLint i; \ \ tmp = (GLfloat *)malloc(size * order * sizeof(*tmp)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ ptr = (nfcmemptr)points; \ for (i = 0; i < order; i++) { \ Atari2HostFloatArray(size, AtariAddr(ptr, const GLfloat *), &tmp[i*size]); \ ptr += stride; \ } \ fn.glMapVertexAttrib1fAPPLE(index, size, u1, u2, size * sizeof(GLfloat), order, tmp); \ free(tmp) #else #define FN_GLMAPVERTEXATTRIB1FAPPLE(index, size, u1, u2, stride, order, points) \ fn.glMapVertexAttrib1fAPPLE(index, size, u1, u2, stride, order, HostAddr(points, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMAPVERTEXATTRIB2DAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points) \ GLdouble *tmp; \ nfcmemptr ptr; \ GLint i, j; \ \ tmp = (GLdouble *)malloc(size * uorder * vorder * sizeof(*tmp)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ ptr = (nfcmemptr)points; \ for (i = 0; i < uorder; i++) { \ for (j = 0;j < vorder ;j++) { \ Atari2HostDoubleArray(size, AtariAddr(ptr + (i * ustride + j * vstride) * ATARI_SIZEOF_DOUBLE, const GLdouble *), &tmp[(i * vorder + j) * size]); \ } \ } \ fn.glMapVertexAttrib2dAPPLE(index, size, u1, u2, size * vorder * sizeof(GLdouble), uorder, v1, v2, size * sizeof(GLdouble), vorder, tmp); \ free(tmp) #else #define FN_GLMAPVERTEXATTRIB2DAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points) \ fn.glMapVertexAttrib2dAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, HostAddr(points, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMAPVERTEXATTRIB2FAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points) \ GLfloat *tmp; \ nfcmemptr ptr; \ GLint i, j; \ \ tmp = (GLfloat *)malloc(size * uorder * vorder * sizeof(*tmp)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ ptr = (nfcmemptr)points; \ for (i = 0; i < uorder; i++) { \ for (j = 0;j < vorder ;j++) { \ Atari2HostFloatArray(size, AtariAddr(ptr + (i * ustride + j * vstride) * ATARI_SIZEOF_FLOAT, const GLfloat *), &tmp[(i * vorder + j) * size]); \ } \ } \ fn.glMapVertexAttrib2fAPPLE(index, size, u1, u2, size * vorder * sizeof(GLfloat), uorder, v1, v2, size * sizeof(GLfloat), vorder, tmp); \ free(tmp) #else #define FN_GLMAPVERTEXATTRIB2FAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points) \ fn.glMapVertexAttrib2fAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, HostAddr(points, const GLfloat *)) #endif #define FN_GLMULTIDRAWARRAYSEXT(mode, first, count, drawcount) \ GLsizei const size = drawcount; \ if (size <= 0) return; \ GLsizei firstbuf[size]; \ GLsizei countbuf[size]; \ Atari2HostIntArray(size, first, firstbuf); \ Atari2HostIntArray(size, count, countbuf); \ for (GLsizei i = 0; i < size; i++) \ convertClientArrays(firstbuf[i] + countbuf[i]); \ fn.glMultiDrawArraysEXT(mode, firstbuf, countbuf, drawcount) #define FN_GLMULTIDRAWELEMENTSEXT(mode, count, type, indices, drawcount) \ GLsizei const size = drawcount; \ if (size <= 0) return; \ GLsizei countbuf[size]; \ nfmemptr indbuf[size]; \ void *indptr[size]; \ pixelBuffer **pbuf; \ Atari2HostIntArray(size, count, countbuf); \ pbuf = new pixelBuffer *[size]; \ Atari2HostPtrArray(size, AtariAddr(indices, const void **), indbuf); \ for (GLsizei i = 0; i < size; i++) { \ convertClientArrays(countbuf[i]); \ switch(type) { \ case GL_UNSIGNED_BYTE: \ case GL_UNSIGNED_SHORT: \ case GL_UNSIGNED_INT: \ pbuf[i] = new pixelBuffer(); \ indptr[i] = pbuf[i]->convertArray(countbuf[i], type, indbuf[i]); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ } \ fn.glMultiDrawElementsEXT(mode, countbuf, type, indptr, drawcount); \ for (GLsizei i = 0; i < size; i++) { \ delete pbuf[i]; \ } \ delete [] pbuf /* -------------------------------------------------------------------------- */ /* * GL_AMD_multi_draw_indirect */ #define FN_GLMULTIDRAWARRAYSINDIRECTAMD(mode, indirect, drawcount, stride) \ /* \ * The parameters addressed by indirect are packed into a structure that takes the form (in C): \ * \ * typedef struct { \ * uint count; \ * uint primCount; \ * uint first; \ * uint baseInstance; \ * } DrawArraysIndirectCommand; \ */ \ if (contexts[cur_context].buffer_bindings.draw_indirect.id) { \ void *offset = NFHost2AtariAddr(indirect); \ fn.glMultiDrawArraysIndirectAMD(mode, offset, drawcount, stride); \ } else if (indirect) { \ if (stride == 0) stride = 4 * sizeof(Uint32); \ nfcmemptr indptr = (nfcmemptr)indirect; \ for (GLsizei n = 0; n < drawcount; n++) { \ GLuint tmp[4] = { 0, 0, 0, 0 }; \ Atari2HostIntArray(4, indptr, tmp); \ GLuint count = tmp[0]; \ convertClientArrays(count); \ fn.glDrawArraysInstancedBaseInstance(mode, tmp[2], count, tmp[1], tmp[3]); \ indptr += stride; \ } \ } /* * The parameters addressed by indirect are packed into a structure that takes the form (in C): * * typedef struct { * uint count; * uint primCount; * uint firstIndex; * uint baseVertex; * uint baseInstance; * } DrawElemntsIndirectCommand; */ #define FN_GLMULTIDRAWELEMENTSINDIRECTAMD(mode, type, indirect, drawcount, stride) \ if (contexts[cur_context].buffer_bindings.draw_indirect.id) { \ void *offset = NFHost2AtariAddr(indirect); \ fn.glMultiDrawElementsIndirectAMD(mode, type, offset, drawcount, stride); \ } else if (indirect) { \ if (stride == 0) stride = 5 * sizeof(Uint32); \ nfmemptr indptr = (nfmemptr)indirect; \ for (GLsizei n = 0; n < drawcount; n++) { \ GLuint tmp[5] = { 0, 0, 0, 0, 0 }; \ Atari2HostIntArray(5, indptr, tmp); \ GLuint count = tmp[0]; \ convertClientArrays(count); \ fn.glDrawElementsInstancedBaseVertexBaseInstance(mode, count, type, (const void *)(uintptr_t)tmp[2], tmp[1], tmp[3], tmp[4]); \ indptr += stride; \ } \ } /* -------------------------------------------------------------------------- */ /* * GL_NV_bindless_multi_draw_indirect */ #define FN_GLMULTIDRAWARRAYSINDIRECTBINDLESSNV(mode, indirect, drawcount, stride, vertexBufferCount) \ if (contexts[cur_context].buffer_bindings.draw_indirect.id) { \ void *offset = NFHost2AtariAddr(indirect); \ fn.glMultiDrawArraysIndirectBindlessNV(mode, offset, drawcount, stride, vertexBufferCount); \ } #define FN_GLMULTIDRAWELEMENTSINDIRECTBINDLESSNV(mode, type, indirect, drawcount, stride, vertexBufferCount) \ if (contexts[cur_context].buffer_bindings.draw_indirect.id) { \ void *offset = NFHost2AtariAddr(indirect); \ fn.glMultiDrawElementsIndirectBindlessNV(mode, type, offset, drawcount, stride, vertexBufferCount); \ } /* -------------------------------------------------------------------------- */ /* * GL_IBM_multimode_draw_arrays */ #define FN_GLMULTIMODEDRAWARRAYSIBM(mode, first, count, primcount, modestride) \ GLsizei const size = primcount; \ if (size <= 0) return; \ GLsizei firstbuf[size]; \ GLsizei countbuf[size]; \ GLsizei const modecount = modestride == 0 ? 1 : primcount; \ GLenum modes[modecount]; \ Atari2HostIntArray(size, first, firstbuf); \ Atari2HostIntArray(size, count, countbuf); \ nfmemptr modeptr = (nfmemptr)mode; \ for (GLsizei i = 0; i < modecount; i++) \ Atari2HostIntArray(1, AtariAddr(modeptr + i * modestride, const GLenum *), &modes[i]); \ if (modestride != 0) modestride = sizeof(GLenum); \ for (GLsizei i = 0; i < size; i++) \ convertClientArrays(firstbuf[i] + countbuf[i]); \ fn.glMultiModeDrawArraysIBM(modes, firstbuf, countbuf, primcount, modestride) #define FN_GLMULTIMODEDRAWELEMENTSIBM(mode, count, type, indices, primcount, modestride) \ GLsizei const size = primcount; \ if (size <= 0) return; \ GLsizei countbuf[size]; \ nfmemptr indbuf[size]; \ void *indptr[size]; \ pixelBuffer **pbuf; \ Atari2HostIntArray(size, count, countbuf); \ pbuf = new pixelBuffer *[size]; \ Atari2HostPtrArray(size, AtariAddr(indices, const void **), indbuf); \ for (GLsizei i = 0; i < size; i++) { \ convertClientArrays(countbuf[i]); \ switch(type) { \ case GL_UNSIGNED_BYTE: \ case GL_UNSIGNED_SHORT: \ case GL_UNSIGNED_INT: \ pbuf[i] = new pixelBuffer(); \ indptr[i] = pbuf[i]->convertArray(countbuf[i], type, indbuf[i]); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ } \ GLsizei const modecount = modestride == 0 ? 1 : primcount; \ GLenum modes[modecount]; \ nfmemptr modeptr = (nfmemptr)mode; \ for (GLsizei i = 0; i < modecount; i++) \ Atari2HostIntArray(1, AtariAddr(modeptr + i * modestride, const GLenum *), &modes[i]); \ if (modestride != 0) modestride = sizeof(GLenum); \ fn.glMultiModeDrawElementsIBM(modes, countbuf, type, indptr, primcount, modestride); \ for (GLsizei i = 0; i < size; i++) { \ delete pbuf[i]; \ } \ delete [] pbuf /* -------------------------------------------------------------------------- */ /* * GL_NV_pixel_data_range */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLPIXELDATARANGENV(target, length, pointer) \ GLubyte tmp[MAX(length, 0)], *ptmp; \ ptmp = Atari2HostByteArray(length, AtariAddr(pointer, const GLubyte *), tmp); \ fn.glPixelDataRangeNV(target, length, ptmp) #else #define FN_GLPIXELDATARANGENV(target, length, pointer) \ fn.glPixelDataRangeNV(target, length, HostAddr(pointer, const void *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ARB_point_parameters */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPOINTPARAMETERFVARB(pname, params) \ GLfloat tmp[1]; \ Atari2HostFloatArray(1, params, tmp); \ fn.glPointParameterfvARB(pname, tmp) #else #define FN_GLPOINTPARAMETERFVARB(pname, params) \ fn.glPointParameterfvARB(pname, HostAddr(params, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_point_parameters */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPOINTPARAMETERFVEXT(pname, params) \ GLfloat tmp[1]; \ Atari2HostFloatArray(1, params, tmp); \ fn.glPointParameterfvEXT(pname, tmp) #else #define FN_GLPOINTPARAMETERFVEXT(pname, params) \ fn.glPointParameterfvEXT(pname, HostAddr(params, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_SGIS_point_parameters */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPOINTPARAMETERFVSGIS(pname, params) \ GLfloat tmp[1]; \ Atari2HostFloatArray(1, params, tmp); \ fn.glPointParameterfvSGIS(pname, tmp) #else #define FN_GLPOINTPARAMETERFVSGIS(pname, params) \ fn.glPointParameterfvSGIS(pname, HostAddr(params, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_point_sprite */ #if NFOSMESA_NEED_INT_CONV #define FN_GLPOINTPARAMETERIVNV(pname, params) \ GLint tmp[1]; \ Atari2HostIntArray(1, params, tmp); \ fn.glPointParameterivNV(pname, tmp) #else #define FN_GLPOINTPARAMETERIVNV(pname, params) \ fn.glPointParameterivNV(pname, HostAddr(params, const GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_APPLE_vertex_point_size */ /* TODO: no infos */ #define FN_GLPOINTSIZEPOINTERAPPLE(type, stride, pointer) \ fn.glPointSizePointerAPPLE(type, stride, HostAddr(pointer, const void *)) /* -------------------------------------------------------------------------- */ /* * GL_SGIX_async */ #if NFOSMESA_NEED_INT_CONV #define FN_GLFINISHASYNCSGIX(markerp) \ GLuint tmp[1]; \ GLint ret = fn.glFinishAsyncSGIX(tmp); \ if (ret) \ Host2AtariIntArray(1, tmp, markerp); \ return ret #else #define FN_GLFINISHASYNCSGIX(markerp) \ return fn.glFinishAsyncSGIX(HostAddr(markerp, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPOLLASYNCSGIX(markerp) \ GLuint tmp[1]; \ GLint ret = fn.glPollAsyncSGIX(tmp); \ if (ret) \ Host2AtariIntArray(1, tmp, markerp); \ return ret #else #define FN_GLPOLLASYNCSGIX(markerp) \ return fn.glPollAsyncSGIX(HostAddr(markerp, GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_parameter_buffer_object */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMBUFFERPARAMETERSFVNV(target, bindingIndex, wordIndex, count, params) \ GLsizei const size = count; \ if (count <= 0) return; \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glProgramBufferParametersfvNV(target, bindingIndex, wordIndex, count, ptmp) #else #define FN_GLPROGRAMBUFFERPARAMETERSFVNV(target, bindingIndex, wordIndex, count, params) \ fn.glProgramBufferParametersfvNV(target, bindingIndex, wordIndex, count, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMBUFFERPARAMETERSIIVNV(target, bindingIndex, wordIndex, count, params) \ GLsizei const size = count; \ if (count <= 0) return; \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glProgramBufferParametersIivNV(target, bindingIndex, wordIndex, count, ptmp) #else #define FN_GLPROGRAMBUFFERPARAMETERSIIVNV(target, bindingIndex, wordIndex, count, params) \ fn.glProgramBufferParametersIivNV(target, bindingIndex, wordIndex, count, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMBUFFERPARAMETERSIUIVNV(target, bindingIndex, wordIndex, count, params) \ GLsizei const size = count; \ if (count <= 0) return; \ GLuint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glProgramBufferParametersIuivNV(target, bindingIndex, wordIndex, count, ptmp) #else #define FN_GLPROGRAMBUFFERPARAMETERSIUIVNV(target, bindingIndex, wordIndex, count, params) \ fn.glProgramBufferParametersIuivNV(target, bindingIndex, wordIndex, count, HostAddr(params, const GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_gpu_program_parameters */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMENVPARAMETERS4FVEXT(target, index, count, params) \ GLint const size = 4 * count; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, params, tmp); \ fn.glProgramEnvParameters4fvEXT(target, index, count, tmp) #else #define FN_GLPROGRAMENVPARAMETERS4FVEXT(target, index, count, params) \ fn.glProgramEnvParameters4fvEXT(target, index, count, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMLOCALPARAMETERS4FVEXT(target, index, count, params) \ GLint const size = 4 * count; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, params, tmp); \ fn.glProgramLocalParameters4fvEXT(target, index, count, tmp) #else #define FN_GLPROGRAMLOCALPARAMETERS4FVEXT(target, index, count, params) \ fn.glProgramLocalParameters4fvEXT(target, index, count, HostAddr(params, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_SUN_triangle_list */ #if NFOSMESA_NEED_INT_CONV #define FN_GLREPLACEMENTCODEUIVSUN(code) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, code, tmp); \ fn.glReplacementCodeuivSUN(tmp) #else #define FN_GLREPLACEMENTCODEUIVSUN(code) \ fn.glReplacementCodeuivSUN(HostAddr(code, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLREPLACEMENTCODEUSVSUN(code) \ GLint const size = 1; \ GLushort tmp[size]; \ Atari2HostShortArray(size, code, tmp); \ fn.glReplacementCodeusvSUN(tmp) #else #define FN_GLREPLACEMENTCODEUSVSUN(code) \ fn.glReplacementCodeusvSUN(HostAddr(code, const GLushort *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLREPLACEMENTCODEUBVSUN(code) \ GLint const size = 1; \ GLubyte tmp[size]; \ Atari2HostByteArray(size, code, tmp); \ fn.glReplacementCodeubvSUN(tmp) #else #define FN_GLREPLACEMENTCODEUBVSUN(code) \ fn.glReplacementCodeubvSUN(HostAddr(code, const GLubyte *)) #endif #define FN_GLREPLACEMENTCODEPOINTERSUN(type, stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].replacement_code, 1, type, stride, -1, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].replacement_code.vendor = NFOSMESA_VENDOR_SUN /* -------------------------------------------------------------------------- */ /* * GL_SUN_vertex */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLCOLOR4UBVERTEX2FVSUN(c, v) \ GLubyte color[4]; \ GLfloat tmp[2]; \ Atari2HostByteArray(4, c, color); \ Atari2HostFloatArray(2, v, tmp); \ fn.glColor4ubVertex2fvSUN(color, tmp) #else #define FN_GLCOLOR4UBVERTEX2FVSUN(c, v) \ fn.glColor4ubVertex2fvSUN(HostAddr(c, const GLubyte *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLCOLOR4UBVERTEX3FVSUN(c, v) \ GLubyte color[4]; \ GLfloat tmp[3]; \ Atari2HostByteArray(4, c, color); \ Atari2HostFloatArray(3, v, tmp); \ fn.glColor4ubVertex3fvSUN(color, tmp) #else #define FN_GLCOLOR4UBVERTEX3FVSUN(c, v) \ fn.glColor4ubVertex3fvSUN(HostAddr(c, const GLubyte *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLCOLOR3FVERTEX3FVSUN(c, v) \ GLfloat tmp1[3]; \ GLfloat tmp2[3]; \ Atari2HostFloatArray(3, c, tmp1); \ Atari2HostFloatArray(3, v, tmp2); \ fn.glColor3fVertex3fvSUN(tmp1, tmp2) #else #define FN_GLCOLOR3FVERTEX3FVSUN(c, v) \ fn.glColor3fVertex3fvSUN(HostAddr(c, const GLfloat *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLNORMAL3FVERTEX3FVSUN(n, v) \ GLfloat tmp1[3]; \ GLfloat tmp2[3]; \ Atari2HostFloatArray(3, n, tmp1); \ Atari2HostFloatArray(3, v, tmp2); \ fn.glNormal3fVertex3fvSUN(tmp1, tmp2) #else #define FN_GLNORMAL3FVERTEX3FVSUN(n, v) \ fn.glNormal3fVertex3fvSUN(HostAddr(n, const GLfloat *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLCOLOR4FNORMAL3FVERTEX3FVSUN(c, n, v) \ GLfloat tmp1[4]; \ GLfloat tmp2[3]; \ GLfloat tmp3[3]; \ Atari2HostFloatArray(4, c, tmp1); \ Atari2HostFloatArray(3, n, tmp2); \ Atari2HostFloatArray(3, v, tmp3); \ fn.glColor4fNormal3fVertex3fvSUN(tmp1, tmp2, tmp3) #else #define FN_GLCOLOR4FNORMAL3FVERTEX3FVSUN(c, n, v) \ fn.glColor4fNormal3fVertex3fvSUN(HostAddr(c, const GLfloat *), HostAddr(n, const GLfloat *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXCOORD2FVERTEX3FVSUN(tc, v) \ GLfloat tmp1[2]; \ GLfloat tmp2[3]; \ Atari2HostFloatArray(2, tc, tmp1); \ Atari2HostFloatArray(3, v, tmp2); \ fn.glTexCoord2fVertex3fvSUN(tmp1, tmp2) #else #define FN_GLTEXCOORD2FVERTEX3FVSUN(tc, v) \ fn.glTexCoord2fVertex3fvSUN(HostAddr(tc, const GLfloat *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXCOORD4FVERTEX4FVSUN(tc, v) \ GLfloat tmp1[4]; \ GLfloat tmp2[4]; \ Atari2HostFloatArray(4, tc, tmp1); \ Atari2HostFloatArray(4, v, tmp2); \ fn.glTexCoord4fVertex4fvSUN(tmp1, tmp2) #else #define FN_GLTEXCOORD4FVERTEX4FVSUN(tc, v) \ fn.glTexCoord4fVertex4fvSUN(HostAddr(tc, const GLfloat *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXCOORD2FCOLOR4UBVERTEX3FVSUN(tc, c, v) \ GLubyte color[4]; \ GLfloat tmp1[2]; \ GLfloat tmp2[3]; \ Atari2HostByteArray(4, c, color); \ Atari2HostFloatArray(2, tc, tmp1); \ Atari2HostFloatArray(3, v, tmp2); \ fn.glTexCoord2fColor4ubVertex3fvSUN(tmp1, color, tmp2) #else #define FN_GLTEXCOORD2FCOLOR4UBVERTEX3FVSUN(tc, c, v) \ fn.glTexCoord2fColor4ubVertex3fvSUN(HostAddr(tc, const GLfloat *), HostAddr(c, const GLubyte *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXCOORD2FCOLOR3FVERTEX3FVSUN(tc, c, v) \ GLfloat tmp1[2]; \ GLfloat tmp2[3]; \ GLfloat tmp3[3]; \ Atari2HostFloatArray(2, tc, tmp1); \ Atari2HostFloatArray(3, c, tmp2); \ Atari2HostFloatArray(3, v, tmp3); \ fn.glTexCoord2fColor3fVertex3fvSUN(tmp1, tmp2, tmp3) #else #define FN_GLTEXCOORD2FCOLOR3FVERTEX3FVSUN(tc, c, v) \ fn.glTexCoord2fColor3fVertex3fvSUN(HostAddr(tc, const GLfloat *), HostAddr(c, const GLfloat *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXCOORD2FNORMAL3FVERTEX3FVSUN(tc, n, v) \ GLfloat tmp1[2]; \ GLfloat tmp2[3]; \ GLfloat tmp3[3]; \ Atari2HostFloatArray(2, tc, tmp1); \ Atari2HostFloatArray(3, n, tmp2); \ Atari2HostFloatArray(3, v, tmp3); \ fn.glTexCoord2fNormal3fVertex3fvSUN(tmp1, tmp2, tmp3) #else #define FN_GLTEXCOORD2FNORMAL3FVERTEX3FVSUN(tc, n, v) \ fn.glTexCoord2fNormal3fVertex3fvSUN(HostAddr(tc, const GLfloat *), HostAddr(n, const GLfloat *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN(tc, c, n, v) \ GLfloat tmp1[2]; \ GLfloat tmp2[4]; \ GLfloat tmp3[3]; \ GLfloat tmp4[3]; \ Atari2HostFloatArray(2, tc, tmp1); \ Atari2HostFloatArray(4, c, tmp2); \ Atari2HostFloatArray(3, n, tmp3); \ Atari2HostFloatArray(3, v, tmp4); \ fn.glTexCoord2fColor4fNormal3fVertex3fvSUN(tmp1, tmp2, tmp3, tmp4) #else #define FN_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN(tc, c, n, v) \ fn.glTexCoord2fColor4fNormal3fVertex3fvSUN(HostAddr(tc, const GLfloat *), HostAddr(c, const GLfloat *), HostAddr(n, const GLfloat *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUN(tc, c, n, v) \ GLfloat tmp1[4]; \ GLfloat tmp2[4]; \ GLfloat tmp3[3]; \ GLfloat tmp4[4]; \ Atari2HostFloatArray(4, tc, tmp1); \ Atari2HostFloatArray(4, c, tmp2); \ Atari2HostFloatArray(3, n, tmp3); \ Atari2HostFloatArray(4, v, tmp4); \ fn.glTexCoord4fColor4fNormal3fVertex4fvSUN(tmp1, tmp2, tmp3, tmp4) #else #define FN_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUN(tc, c, n, v) \ fn.glTexCoord4fColor4fNormal3fVertex4fvSUN(HostAddr(tc, const GLfloat *), HostAddr(c, const GLfloat *), HostAddr(n, const GLfloat *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLREPLACEMENTCODEUIVERTEX3FVSUN(rc, v) \ GLuint tmp1[1]; \ GLfloat tmp2[3]; \ Atari2HostIntArray(1, rc, tmp1); \ Atari2HostFloatArray(3, v, tmp2); \ fn.glReplacementCodeuiVertex3fvSUN(tmp1, tmp2) #else #define FN_GLREPLACEMENTCODEUIVERTEX3FVSUN(rc, v) \ fn.glReplacementCodeuiVertex3fvSUN(HostAddr(rc, const GLuint *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUN(rc, c, v) \ GLuint tmp1[1]; \ GLubyte color[4]; \ GLfloat tmp2[3]; \ Atari2HostIntArray(1, rc, tmp1); \ Atari2HostByteArray(4, c, color); \ Atari2HostFloatArray(3, v, tmp2); \ fn.glReplacementCodeuiColor4ubVertex3fvSUN(tmp1, color, tmp2) #else #define FN_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUN(rc, c, v) \ fn.glReplacementCodeuiColor4ubVertex3fvSUN(HostAddr(rc, const GLuint *), HostAddr(c, const GLubyte *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUN(rc, c, v) \ GLuint tmp1[1]; \ GLfloat tmp2[3]; \ GLfloat tmp3[3]; \ Atari2HostIntArray(1, rc, tmp1); \ Atari2HostFloatArray(3, c, tmp2); \ Atari2HostFloatArray(3, v, tmp3); \ fn.glReplacementCodeuiColor3fVertex3fvSUN(tmp1, tmp2, tmp3) #else #define FN_GLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUN(rc, c, v) \ fn.glReplacementCodeuiColor3fVertex3fvSUN(HostAddr(rc, const GLuint *), HostAddr(c, const GLfloat *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUN(rc, n, v) \ GLuint tmp1[1]; \ GLfloat tmp2[3]; \ GLfloat tmp3[3]; \ Atari2HostIntArray(1, rc, tmp1); \ Atari2HostFloatArray(3, n, tmp2); \ Atari2HostFloatArray(3, v, tmp3); \ fn.glReplacementCodeuiNormal3fVertex3fvSUN(tmp1, tmp2, tmp3) #else #define FN_GLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUN(rc, n, v) \ fn.glReplacementCodeuiNormal3fVertex3fvSUN(HostAddr(rc, const GLuint *), HostAddr(n, const GLfloat *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUN(rc, c, n, v) \ GLuint tmp1[1]; \ GLfloat tmp2[4]; \ GLfloat tmp3[3]; \ GLfloat tmp4[3]; \ Atari2HostIntArray(1, rc, tmp1); \ Atari2HostFloatArray(4, c, tmp2); \ Atari2HostFloatArray(3, n, tmp3); \ Atari2HostFloatArray(3, v, tmp4); \ fn.glReplacementCodeuiColor4fNormal3fVertex3fvSUN(tmp1, tmp2, tmp3, tmp4) #else #define FN_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUN(rc, c, n, v) \ fn.glReplacementCodeuiColor4fNormal3fVertex3fvSUN(HostAddr(rc, const GLuint *), HostAddr(c, const GLfloat *), HostAddr(n, const GLfloat *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUN(rc, tc, v) \ GLuint tmp1[1]; \ GLfloat tmp2[2]; \ GLfloat tmp3[3]; \ Atari2HostIntArray(1, rc, tmp1); \ Atari2HostFloatArray(2, tc, tmp2); \ Atari2HostFloatArray(3, v, tmp3); \ fn.glReplacementCodeuiTexCoord2fVertex3fvSUN(tmp1, tmp2, tmp3) #else #define FN_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUN(rc, tc, v) \ fn.glReplacementCodeuiTexCoord2fVertex3fvSUN(HostAddr(rc, const GLuint *), HostAddr(tc, const GLfloat *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUN(rc, tc, n, v) \ GLuint tmp1[1]; \ GLfloat tmp2[2]; \ GLfloat tmp3[3]; \ GLfloat tmp4[3]; \ Atari2HostIntArray(1, rc, tmp1); \ Atari2HostFloatArray(2, tc, tmp2); \ Atari2HostFloatArray(3, n, tmp3); \ Atari2HostFloatArray(3, v, tmp4); \ fn.glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(tmp1, tmp2, tmp3, tmp4) #else #define FN_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUN(rc, tc, n, v) \ fn.glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(HostAddr(rc, const GLuint *), HostAddr(tc, const GLfloat *), HostAddr(n, const GLfloat *), HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN(rc, tc, c, n, v) \ GLuint tmp1[1]; \ GLfloat tmp2[2]; \ GLfloat tmp3[4]; \ GLfloat tmp4[3]; \ GLfloat tmp5[3]; \ Atari2HostIntArray(1, rc, tmp1); \ Atari2HostFloatArray(2, tc, tmp2); \ Atari2HostFloatArray(4, c, tmp3); \ Atari2HostFloatArray(3, n, tmp4); \ Atari2HostFloatArray(3, v, tmp5); \ fn.glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(tmp1, tmp2, tmp3, tmp4, tmp5) #else #define FN_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN(rc, tc, c, n, v) \ fn.glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(HostAddr(rc, const GLuint *), HostAddr(tc, const GLfloat *), HostAddr(c, const GLfloat *), HostAddr(n, const GLfloat *), HostAddr(v, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_ATI_fragment_shader */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLSETFRAGMENTSHADERCONSTANTATI(dst, value) \ GLint const size = 4; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glSetFragmentShaderConstantATI(dst, tmp) #else #define FN_GLSETFRAGMENTSHADERCONSTANTATI(dst, value) \ fn.glSetFragmentShaderConstantATI(dst, HostAddr(value, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_AMD_sample_positions */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLSETMULTISAMPLEFVAMD(pname, index, val) \ GLint const size = 2; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, val, tmp); \ fn.glSetMultisamplefvAMD(pname, index, tmp) #else #define FN_GLSETMULTISAMPLEFVAMD(pname, index, val) \ fn.glSetMultisamplefvAMD(pname, index, HostAddr(val, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_SGIX_sprite */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLSPRITEPARAMETERFVSGIX(pname, params) \ GLint const size = 1; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, params, tmp); \ fn.glSpriteParameterfvSGIX(pname, tmp) #else #define FN_GLSPRITEPARAMETERFVSGIX(pname, params) \ fn.glSpriteParameterfvSGIX(pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSPRITEPARAMETERIVSGIX(pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ Atari2HostIntArray(size, params, tmp); \ fn.glSpriteParameterivSGIX(pname, tmp) #else #define FN_GLSPRITEPARAMETERIVSGIX(pname, params) \ fn.glSpriteParameterivSGIX(pname, HostAddr(params, const GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_GREMEDY_string_marker */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLSTRINGMARKERGREMEDY(len, string) \ char tmp[MAX(len, 0)], *ptmp; \ ptmp = Atari2HostByteArray(len, AtariAddr(string, const char *), tmp); \ fn.glStringMarkerGREMEDY(len, ptmp) #else #define FN_GLSTRINGMARKERGREMEDY(len, string) \ fn.glStringMarkerGREMEDY(len, HostAddr(string, const char *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_MESA_trace */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLNEWTRACEMESA(mask, traceName) \ GLubyte tmp[safe_strlen(traceName)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), traceName, tmp); \ fn.glNewTraceMESA(mask, ptmp) #else #define FN_GLNEWTRACEMESA(mask, traceName) \ fn.glNewTraceMESA(mask, HostAddr(traceName, const GLubyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLTRACECOMMENTMESA(comment) \ GLubyte tmp[safe_strlen(comment)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), comment, tmp); \ fn.glTraceCommentMESA(ptmp) #else #define FN_GLTRACECOMMENTMESA(comment) \ fn.glTraceCommentMESA(HostAddr(comment, const GLubyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLTRACELISTMESA(name, comment) \ GLubyte tmp[safe_strlen(comment)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), comment, tmp); \ fn.glTraceListMESA(name, ptmp) #else #define FN_GLTRACELISTMESA(name, comment) \ fn.glTraceListMESA(name, HostAddr(comment, const GLubyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLTRACETEXTUREMESA(name, comment) \ GLubyte tmp[safe_strlen(comment)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), comment, tmp); \ fn.glTraceTextureMESA(name, ptmp) #else #define FN_GLTRACETEXTUREMESA(name, comment) \ fn.glTraceTextureMESA(name, HostAddr(comment, const GLubyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLTRACEPOINTERMESA(pointer, comment) \ GLubyte tmp[safe_strlen(comment) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), comment, tmp); \ fn.glTracePointerMESA(HostAddr(pointer, void *), ptmp) #else #define FN_GLTRACEPOINTERMESA(pointer, comment) \ fn.glTracePointerMESA(HostAddr(pointer, void *), HostAddr(comment, const GLubyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLTRACEPOINTERRANGEMESA(first, last, comment) \ GLubyte tmp[safe_strlen(comment) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), comment, tmp); \ fn.glTracePointerRangeMESA(HostAddr(first, const void *), HostAddr(last, const void *), ptmp) #else #define FN_GLTRACEPOINTERRANGEMESA(first, last, comment) \ fn.glTracePointerRangeMESA(HostAddr(first, const void *), HostAddr(last, const void *), HostAddr(comment, const GLubyte *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_APPLE_vertex_array_range */ #define FN_GLFLUSHVERTEXARRAYRANGEAPPLE(length, pointer) \ UNUSED(pointer); \ fn.glFlushVertexArrayRangeAPPLE(length, contexts[cur_context].vertex.host_pointer) #define FN_GLVERTEXARRAYRANGEAPPLE(length, pointer) \ fn.glVertexArrayRangeAPPLE(length, HostAddr(pointer, void *)) /* -------------------------------------------------------------------------- */ /* * GL_NV_vertex_array_range */ #define FN_GLVERTEXARRAYRANGENV(length, pointer) \ fn.glVertexArrayRangeNV(length, HostAddr(pointer, void *)) /* -------------------------------------------------------------------------- */ /* * GL_EXT_vertex_weighting */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXWEIGHTFVEXT(weight) \ GLfloat tmp[1]; \ Atari2HostFloatArray(1, weight, tmp); \ fn.glVertexWeightfvEXT(tmp) #else #define FN_GLVERTEXWEIGHTFVEXT(weight) \ fn.glVertexWeightfvEXT(HostAddr(weight, const GLfloat *)) #endif #define FN_GLVERTEXWEIGHTPOINTEREXT(size, type, stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].weight, size, type, stride, -1, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].weight.vendor = NFOSMESA_VENDOR_EXT /* -------------------------------------------------------------------------- */ /* * GL_ARB_vertex_buffer_object */ #define FN_GLBINDBUFFERARB(target, buffer) \ gl_bind_buffer(target, buffer, 0, 0); \ fn.glBindBufferARB(target, buffer) #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETEBUFFERSARB(n, buffers) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, buffers, tmp); \ fn.glDeleteBuffersARB(n, ptmp) #else #define FN_GLDELETEBUFFERSARB(n, buffers) \ fn.glDeleteBuffersARB(n, HostAddr(buffers, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENBUFFERSARB(n, buffers) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenBuffersARB(n, tmp); \ Host2AtariIntArray(n, tmp, buffers) #else #define FN_GLGENBUFFERSARB(n, buffers) \ fn.glGenBuffersARB(n, HostAddr(buffers, GLuint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLBUFFERDATAARB(target, size, data, usage) \ GLubyte tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glBufferDataARB(target, size, ptmp, usage) #else #define FN_GLBUFFERDATAARB(target, size, data, usage) \ fn.glBufferDataARB(target, size, HostAddr(data, const void *), usage) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLBUFFERSUBDATAARB(target, offset, size, data) \ GLubyte tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glBufferSubDataARB(target, offset, size, ptmp) #else #define FN_GLBUFFERSUBDATAARB(target, offset, size, data) \ fn.glBufferSubDataARB(target, offset, size, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETBUFFERPARAMETERIVARB(target, pname, params) \ GLint tmp[4]; \ int const size = nfglGetNumParams(pname); \ fn.glGetBufferParameterivARB(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETBUFFERPARAMETERIVARB(target, pname, params) \ fn.glGetBufferParameterivARB(target, pname, HostAddr(params, GLint *)) #endif #define FN_GLGETBUFFERPOINTERVARB(target, pname, params) \ void *tmp = NULL; \ fn.glGetBufferPointervARB(target, pname, &tmp); \ /* TODO */ \ memptr zero = 0; \ Host2AtariIntArray(1, &zero, AtariAddr(params, memptr *)) /* -------------------------------------------------------------------------- */ /* * GL_ARB_vertex_blend */ #if NFOSMESA_NEED_INT_CONV #define FN_GLWEIGHTSVARB(size, weights) \ GLint const count = size; \ GLshort tmp[MAX(count, 0)], *ptmp; \ ptmp = Atari2HostShortArray(count, weights, tmp); \ fn.glWeightsvARB(size, ptmp) #else #define FN_GLWEIGHTSVARB(size, weights) \ fn.glWeightsvARB(size, HostAddr(weights, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWEIGHTIVARB(size, weights) \ GLint const count = size; \ GLint tmp[MAX(count, 0)], *ptmp; \ ptmp = Atari2HostIntArray(count, weights, tmp); \ fn.glWeightivARB(size, ptmp) #else #define FN_GLWEIGHTIVARB(size, weights) \ fn.glWeightivARB(size, HostAddr(weights, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLWEIGHTFVARB(size, weights) \ GLint const count = size; \ GLfloat tmp[MAX(count, 0)], *ptmp; \ ptmp = Atari2HostFloatArray(count, weights, tmp); \ fn.glWeightfvARB(size, ptmp) #else #define FN_GLWEIGHTFVARB(size, weights) \ fn.glWeightfvARB(size, HostAddr(weights, const GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLWEIGHTBVARB(size, weights) \ GLint const count = size; \ GLbyte tmp[MAX(count, 0)], *ptmp; \ ptmp = Atari2HostByteArray(count, weights, tmp); \ fn.glWeightbvARB(size, ptmp) #else #define FN_GLWEIGHTBVARB(size, weights) \ fn.glWeightbvARB(size, HostAddr(weights, const GLbyte *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLWEIGHTDVARB(size, weights) \ GLint const count = size; \ GLdouble tmp[MAX(count, 0)], *ptmp; \ ptmp = Atari2HostDoubleArray(count, weights, tmp); \ fn.glWeightdvARB(size, ptmp) #else #define FN_GLWEIGHTDVARB(size, weights) \ fn.glWeightdvARB(size, HostAddr(weights, const GLdouble *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLWEIGHTUBVARB(size, weights) \ GLint const count = size; \ GLubyte tmp[MAX(count, 0)], *ptmp; \ ptmp = Atari2HostByteArray(count, weights, tmp); \ fn.glWeightubvARB(size, ptmp) #else #define FN_GLWEIGHTUBVARB(size, weights) \ fn.glWeightubvARB(size, HostAddr(weights, const GLubyte *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWEIGHTUSVARB(size, weights) \ GLint const count = size; \ GLushort tmp[MAX(count, 0)], *ptmp; \ ptmp = Atari2HostShortArray(count, weights, tmp); \ fn.glWeightusvARB(size, ptmp) #else #define FN_GLWEIGHTUSVARB(size, weights) \ fn.glWeightusvARB(size, HostAddr(weights, const GLushort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWEIGHTUIVARB(size, weights) \ GLint const count = size; \ GLuint tmp[MAX(count, 0)], *ptmp; \ ptmp = Atari2HostIntArray(count, weights, tmp); \ fn.glWeightuivARB(size, ptmp) #else #define FN_GLWEIGHTUIVARB(size, weights) \ fn.glWeightuivARB(size, HostAddr(weights, const GLuint *)) #endif #define FN_GLWEIGHTPOINTERARB(size, type, stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].weight, size, type, stride, -1, 0, AtariAddr(pointer, nfmemptr)); \ contexts[cur_context].weight.vendor = NFOSMESA_VENDOR_ARB /* -------------------------------------------------------------------------- */ /* * GL_ARB_window_pos */ #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLWINDOWPOS2DVARB(v) \ GLdouble tmp[2]; \ Atari2HostDoubleArray(2, v, tmp); \ fn.glWindowPos2dvARB(tmp) #else #define FN_GLWINDOWPOS2DVARB(v) \ fn.glWindowPos2dvARB(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLWINDOWPOS2FVARB(v) \ GLfloat tmp[2]; \ Atari2HostFloatArray(2, v, tmp); \ fn.glWindowPos2fvARB(tmp) #else #define FN_GLWINDOWPOS2FVARB(v) \ fn.glWindowPos2fvARB(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWINDOWPOS2IVARB(v) \ GLint tmp[2]; \ Atari2HostIntArray(2, v, tmp); \ fn.glWindowPos2ivARB(tmp) #else #define FN_GLWINDOWPOS2IVARB(v) \ fn.glWindowPos2ivARB(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWINDOWPOS2SVARB(v) \ GLshort tmp[2]; \ Atari2HostShortArray(2, v, tmp); \ fn.glWindowPos2svARB(tmp) #else #define FN_GLWINDOWPOS2SVARB(v) \ fn.glWindowPos2svARB(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLWINDOWPOS3DVARB(v) \ GLdouble tmp[3]; \ Atari2HostDoubleArray(3, v, tmp); \ fn.glWindowPos3dvARB(tmp) #else #define FN_GLWINDOWPOS3DVARB(v) \ fn.glWindowPos3dvARB(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLWINDOWPOS3FVARB(v) \ GLfloat tmp[3]; \ Atari2HostFloatArray(3, v, tmp); \ fn.glWindowPos3fvARB(tmp) #else #define FN_GLWINDOWPOS3FVARB(v) \ fn.glWindowPos3fvARB(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWINDOWPOS3IVARB(v) \ GLint tmp[3]; \ Atari2HostIntArray(3, v, tmp); \ fn.glWindowPos3ivARB(tmp) #else #define FN_GLWINDOWPOS3IVARB(v) \ fn.glWindowPos3ivARB(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWINDOWPOS3SVARB(v) \ GLshort tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glWindowPos3svARB(tmp) #else #define FN_GLWINDOWPOS3SVARB(v) \ fn.glWindowPos3svARB(HostAddr(v, const GLshort *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_MESA_window_pos */ #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLWINDOWPOS2DVMESA(v) \ GLdouble tmp[2]; \ Atari2HostDoubleArray(2, v, tmp); \ fn.glWindowPos2dvMESA(tmp) #else #define FN_GLWINDOWPOS2DVMESA(v) \ fn.glWindowPos2dvMESA(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLWINDOWPOS2FVMESA(v) \ GLfloat tmp[2]; \ Atari2HostFloatArray(2, v, tmp); \ fn.glWindowPos2fvMESA(tmp) #else #define FN_GLWINDOWPOS2FVMESA(v) \ fn.glWindowPos2fvMESA(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWINDOWPOS2IVMESA(v) \ GLint tmp[2]; \ Atari2HostIntArray(2, v, tmp); \ fn.glWindowPos2ivMESA(tmp) #else #define FN_GLWINDOWPOS2IVMESA(v) \ fn.glWindowPos2ivMESA(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWINDOWPOS2SVMESA(v) \ GLshort tmp[2]; \ Atari2HostShortArray(2, v, tmp); \ fn.glWindowPos2svMESA(tmp) #else #define FN_GLWINDOWPOS2SVMESA(v) \ fn.glWindowPos2svMESA(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLWINDOWPOS3DVMESA(v) \ GLdouble tmp[3]; \ Atari2HostDoubleArray(3, v, tmp); \ fn.glWindowPos3dvMESA(tmp) #else #define FN_GLWINDOWPOS3DVMESA(v) \ fn.glWindowPos3dvMESA(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLWINDOWPOS3FVMESA(v) \ GLfloat tmp[3]; \ Atari2HostFloatArray(3, v, tmp); \ fn.glWindowPos3fvMESA(tmp) #else #define FN_GLWINDOWPOS3FVMESA(v) \ fn.glWindowPos3fvMESA(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWINDOWPOS3IVMESA(v) \ GLint tmp[3]; \ Atari2HostIntArray(3, v, tmp); \ fn.glWindowPos3ivMESA(tmp) #else #define FN_GLWINDOWPOS3IVMESA(v) \ fn.glWindowPos3ivMESA(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWINDOWPOS3SVMESA(v) \ GLshort tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glWindowPos3svMESA(tmp) #else #define FN_GLWINDOWPOS3SVMESA(v) \ fn.glWindowPos3svMESA(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLWINDOWPOS4DVMESA(v) \ GLdouble tmp[4]; \ Atari2HostDoubleArray(4, v, tmp); \ fn.glWindowPos4dvMESA(tmp) #else #define FN_GLWINDOWPOS4DVMESA(v) \ fn.glWindowPos4dvMESA(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLWINDOWPOS4FVMESA(v) \ GLfloat tmp[4]; \ Atari2HostFloatArray(4, v, tmp); \ fn.glWindowPos4fvMESA(tmp) #else #define FN_GLWINDOWPOS4FVMESA(v) \ fn.glWindowPos4fvMESA(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWINDOWPOS4IVMESA(v) \ GLint tmp[4]; \ Atari2HostIntArray(4, v, tmp); \ fn.glWindowPos4ivMESA(tmp) #else #define FN_GLWINDOWPOS4IVMESA(v) \ fn.glWindowPos4ivMESA(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWINDOWPOS4SVMESA(v) \ GLshort tmp[4]; \ Atari2HostShortArray(4, v, tmp); \ fn.glWindowPos4svMESA(tmp) #else #define FN_GLWINDOWPOS4SVMESA(v) \ fn.glWindowPos4svMESA(HostAddr(v, const GLshort *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_bindless_multi_draw_indirect_count */ #define FN_GLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV(mode, indirect, drawcount, maxDrawCount, stride, vertexBufferCount) \ if (contexts[cur_context].buffer_bindings.draw_indirect.id) { \ void *offset = NFHost2AtariAddr(indirect); \ fn.glMultiDrawArraysIndirectBindlessCountNV(mode, offset, drawcount, maxDrawCount, stride, vertexBufferCount); \ } #define FN_GLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV(mode, type, indirect, drawcount, maxDrawCount, stride, vertexBufferCount) \ if (contexts[cur_context].buffer_bindings.draw_indirect.id) { \ void *offset = NFHost2AtariAddr(indirect); \ fn.glMultiDrawElementsIndirectBindlessCountNV(mode, type, offset, drawcount, maxDrawCount, stride, vertexBufferCount); \ } /* -------------------------------------------------------------------------- */ /* * GL_NV_command_list */ #if NFOSMESA_NEED_INT_CONV #define FN_GLCREATESTATESNV(n, states) \ GLuint tmp[MAX(n, 0)]; \ fn.glCreateStatesNV(n, tmp); \ Host2AtariIntArray(n, tmp, states) #else #define FN_GLCREATESTATESNV(n, states) \ fn.glCreateStatesNV(n, HostAddr(states, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETESTATESNV(n, states) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, states, tmp); \ fn.glDeleteStatesNV(n, ptmp) #else #define FN_GLDELETESTATESNV(n, states) \ fn.glDeleteStatesNV(n, HostAddr(states, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCREATECOMMANDLISTSNV(n, lists) \ GLuint tmp[MAX(n, 0)]; \ fn.glCreateCommandListsNV(n, tmp); \ Host2AtariIntArray(n, tmp, lists) #else #define FN_GLCREATECOMMANDLISTSNV(n, lists) \ fn.glCreateCommandListsNV(n, HostAddr(lists, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETECOMMANDLISTSNV(n, lists) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, lists, tmp); \ fn.glDeleteCommandListsNV(n, ptmp) #else #define FN_GLDELETECOMMANDLISTSNV(n, lists) \ fn.glDeleteCommandListsNV(n, HostAddr(lists, const GLuint *)) #endif #define FN_GLDRAWCOMMANDSNV(primitiveMode, buffer, indirects, sizes, count) \ GLsizei const size = MAX(count, 0); \ GLintptr tmpind[size], *pindirects; \ GLsizei tmpsiz[size], *psizes; \ pindirects = Atari2HostIntptrArray(count, indirects, tmpind); \ psizes = Atari2HostIntArray(count, sizes, tmpsiz); \ fn.glDrawCommandsNV(primitiveMode, buffer, pindirects, psizes, count) #if NFOSMESA_NEED_INT_CONV #define FN_GLDRAWCOMMANDSADDRESSNV(primitiveMode, indirects, sizes, count) \ GLuint64 tmpind[MAX(count, 0)], *pind; \ GLsizei tmpsiz[MAX(count, 0)], *psiz; \ pind = Atari2HostInt64Array(count, indirects, tmpind); \ psiz = Atari2HostIntArray(count, sizes, tmpsiz); \ fn.glDrawCommandsAddressNV(primitiveMode, pind, psiz, count) #else #define FN_GLDRAWCOMMANDSADDRESSNV(primitiveMode, indirects, sizes, count) \ fn.glDrawCommandsAddressNV(primitiveMode, HostAddr(indirects, const GLuint64 *), HostAddr(sizes, const GLsizei *), count) #endif #define FN_GLDRAWCOMMANDSSTATESNV(buffer, indirects, sizes, states, fbos, count) \ GLsizei const size = MAX(count, 0); \ GLintptr tmpind[size], *pindirects; \ GLsizei tmpsiz[size], *psizes; \ GLuint tmpstates[size], *pstates; \ GLuint tmpfbos[size], *pfbos; \ pindirects = Atari2HostIntptrArray(count, indirects, tmpind); \ psizes = Atari2HostIntArray(count, sizes, tmpsiz); \ pstates = Atari2HostIntArray(count, states, tmpstates); \ pfbos = Atari2HostIntArray(count, fbos, tmpfbos); \ fn.glDrawCommandsStatesNV(buffer, pindirects, psizes, pstates, pfbos, count) #if NFOSMESA_NEED_INT_CONV #define FN_GLDRAWCOMMANDSSTATESADDRESSNV(indirects, sizes, states, fbos, count) \ GLuint64 tmpind[MAX(count, 0)], *pind; \ GLsizei tmpsiz[MAX(count, 0)], *psiz; \ GLuint tmpstates[MAX(count, 0)], *pstates; \ GLuint tmpfbos[MAX(count, 0)], *pfbos; \ pind = Atari2HostInt64Array(count, indirects, tmpind); \ psiz = Atari2HostIntArray(count, sizes, tmpsiz); \ pstates = Atari2HostIntArray(count, states, tmpstates); \ pfbos = Atari2HostIntArray(count, fbos, tmpfbos); \ fn.glDrawCommandsStatesAddressNV(pind, psiz, pstates, pfbos, count) #else #define FN_GLDRAWCOMMANDSSTATESADDRESSNV(indirects, sizes, states, fbos, count) \ fn.glDrawCommandsStatesAddressNV(HostAddr(indirects, const GLuint64 *), HostAddr(sizes, const GLsizei *), HostAddr(states, const GLuint *), HostAddr(fbos, const GLuint *), count) #endif #define FN_GLLISTDRAWCOMMANDSSTATESCLIENTNV(list, segment, indirects, sizes, states, fbos, count) \ void *tmpind[MAX(count, 0)], **pindirects; \ GLsizei tmpsiz[MAX(count, 0)], *psizes; \ GLuint tmpstates[MAX(count, 0)], *pstates; \ GLuint tmpfbos[MAX(count, 0)], *pfbos; \ pindirects = Atari2HostPtrArray(count, indirects, tmpind); \ psizes = Atari2HostIntArray(count, sizes, tmpsiz); \ pstates = Atari2HostIntArray(count, states, tmpstates); \ pfbos = Atari2HostIntArray(count, fbos, tmpfbos); \ fn.glListDrawCommandsStatesClientNV(list, segment, (const void **)pindirects, psizes, pstates, pfbos, count) /* -------------------------------------------------------------------------- */ /* * GL_NV_framebuffer_mixed_samples */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLCOVERAGEMODULATIONTABLENV(n, v) \ GLint s = 0; \ fn.glGetIntegerv(GL_COVERAGE_MODULATION_TABLE_SIZE_NV, &s); \ GLfloat tmp[MAX(s, 0)], *ptmp; \ ptmp = Atari2HostFloatArray(s, v, tmp); \ fn.glCoverageModulationTableNV(n, ptmp) #else #define FN_GLCOVERAGEMODULATIONTABLENV(n, v) \ fn.glCoverageModulationTableNV(n, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETCOVERAGEMODULATIONTABLENV(n, v) \ GLint s = 0; \ fn.glGetIntegerv(GL_COVERAGE_MODULATION_TABLE_SIZE_NV, &s); \ GLfloat tmp[MAX(s, 0)]; \ fn.glGetCoverageModulationTableNV(n, tmp); \ Host2AtariFloatArray(s, tmp, v) #else #define FN_GLGETCOVERAGEMODULATIONTABLENV(n, v) \ fn.glGetCoverageModulationTableNV(n, HostAddr(v, GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_NV_sample_locations */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLFRAMEBUFFERSAMPLELOCATIONSFVNV(target, start, count, v) \ GLfloat tmp[MAX(count * 2, 0)], *ptmp; \ ptmp = Atari2HostFloatArray(count * 2, v, tmp); \ fn.glFramebufferSampleLocationsfvNV(target, start, count, ptmp) #else #define FN_GLFRAMEBUFFERSAMPLELOCATIONSFVNV(target, start, count, v) \ fn.glFramebufferSampleLocationsfvNV(target, start, count, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV(framebuffer, start, count, v) \ GLfloat tmp[MAX(count * 2, 0)], *ptmp; \ ptmp = Atari2HostFloatArray(count * 2, v, tmp); \ fn.glNamedFramebufferSampleLocationsfvNV(framebuffer, start, count, ptmp) #else #define FN_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV(framebuffer, start, count, v) \ fn.glNamedFramebufferSampleLocationsfvNV(framebuffer, start, count, HostAddr(v, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * ARB_indirect_parameters */ #define FN_GLMULTIDRAWARRAYSINDIRECTCOUNTARB(mode, indirect, drawcount, maxdrawcount, stride) \ /* \ * The parameters addressed by indirect are packed into a structure that takes the form (in C): \ * \ * typedef struct { \ * uint count; \ * uint primCount; \ * uint first; \ * uint baseInstance; \ * } DrawArraysIndirectCommand; \ */ \ if (contexts[cur_context].buffer_bindings.draw_indirect.id) { \ void *offset = NFHost2AtariAddr(indirect); \ fn.glMultiDrawArraysIndirectCountARB(mode, offset, drawcount, maxdrawcount, stride); \ } else if (indirect) { \ if (stride == 0) stride = 4 * sizeof(Uint32); \ nfcmemptr indptr = (nfcmemptr)indirect; \ for (GLsizei n = 0; n < maxdrawcount; n++) { \ GLuint tmp[4] = { 0, 0, 0, 0 }; \ Atari2HostIntArray(4, indptr, tmp); \ GLuint count = tmp[0]; \ convertClientArrays(count); \ fn.glDrawArraysInstancedBaseInstance(mode, tmp[2], count, tmp[1], tmp[3]); \ indptr += stride; \ } \ } /* * The parameters addressed by indirect are packed into a structure that takes the form (in C): * * typedef struct { * uint count; * uint primCount; * uint firstIndex; * uint baseVertex; * uint baseInstance; * } DrawElemntsIndirectCommand; */ #define FN_GLMULTIDRAWELEMENTSINDIRECTCOUNTARB(mode, type, indirect, drawcount, maxdrawcount, stride) \ if (contexts[cur_context].buffer_bindings.draw_indirect.id) { \ void *offset = NFHost2AtariAddr(indirect); \ fn.glMultiDrawElementsIndirectCountARB(mode, type, offset, drawcount, maxdrawcount, stride); \ } else if (indirect) { \ if (stride == 0) stride = 5 * sizeof(Uint32); \ nfcmemptr pind = (nfcmemptr)indirect; \ for (GLsizei n = 0; n < maxdrawcount; n++) { \ GLuint tmp[5] = { 0, 0, 0, 0, 0 }; \ Atari2HostIntArray(5, pind, tmp); \ GLuint count = tmp[0]; \ convertClientArrays(count); \ fn.glDrawElementsInstancedBaseVertexBaseInstance(mode, count, type, (const void *)(uintptr_t)tmp[2], tmp[1], tmp[3], tmp[4]); \ pind += stride; \ } \ } /* -------------------------------------------------------------------------- */ /* * GL_EXT_memory_object_win32 */ /* FIXME: does not make much sense to return Win32 handle to Atari? */ #if NFOSMESA_NEED_INT_CONV #define FN_GLIMPORTMEMORYWIN32HANDLEEXT(memory, size, handleType, handle) \ GLintptr tmp[1]; \ fn.glImportMemoryWin32HandleEXT(memory, size, handleType, tmp); \ Host2AtariIntArray(1, (const Uint32 *)tmp, AtariAddr(handle, GLuint *)) #else #define FN_GLIMPORTMEMORYWIN32HANDLEEXT(memory, size, handleType, handle) \ fn.glImportMemoryWin32HandleEXT(memory, size, handleType, HostAddr(handle, void *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_semaphore_win32 */ /* FIXME: does not make much sense to return Win32 handle to Atari? */ #if NFOSMESA_NEED_INT_CONV #define FN_GLIMPORTSEMAPHOREWIN32HANDLEEXT(semaphore, handleType, handle) \ GLintptr tmp[1]; \ fn.glImportSemaphoreWin32HandleEXT(semaphore, handleType, tmp); \ Host2AtariIntArray(1, (const Uint32 *)tmp, AtariAddr(handle, GLuint *)) #else #define FN_GLIMPORTSEMAPHOREWIN32HANDLEEXT(semaphore, handleType, handle) \ fn.glImportSemaphoreWin32HandleEXT(semaphore, handleType, HostAddr(handle, void *)) #endif /* -------------------------------------------------------------------------- */ /* * GL_EXT_external_buffer */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLBUFFERSTORAGEEXTERNALEXT(target, offset, size, clientBuffer, flags) \ GLubyte tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), AtariAddr(clientBuffer, void *), tmp); \ fn.glBufferStorageExternalEXT(target, offset, size, ptmp, flags) #else #define FN_GLBUFFERSTORAGEEXTERNALEXT(target, offset, size, clientBuffer, flags) \ fn.glBufferStorageExternalEXT(target, offset, size, AtariAddr(clientBuffer, void *), flags) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLNAMEDBUFFERSTORAGEEXTERNALEXT(buffer, offset, size, clientBuffer, flags) \ GLubyte tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), AtariAddr(clientBuffer, void *), tmp); \ fn.glNamedBufferStorageExternalEXT(buffer, offset, size, ptmp, flags) #else #define FN_GLNAMEDBUFFERSTORAGEEXTERNALEXT(buffer, offset, size, clientBuffer, flags) \ fn.glNamedBufferStorageExternalEXT(buffer, offset, size, AtariAddr(clientBuffer, void *), flags) #endif /* -------------------------------------------------------------------------- */ /* * Version 1.1 */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLARETEXTURESRESIDENT(n, textures, residences) \ GLuint tmp[MAX(n, 0)], *ptmp; \ GLboolean resbuf[MAX(n, 0)]; \ GLboolean result; \ ptmp = Atari2HostIntArray(n, textures, tmp); \ result = fn.glAreTexturesResident(n, ptmp, resbuf); \ Host2AtariByteArray(n, resbuf, residences); \ return result #else #define FN_GLARETEXTURESRESIDENT(n, textures, residences) \ return fn.glAreTexturesResident(n, HostAddr(textures, const GLuint *), HostAddr(residences, GLboolean *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLARRAYELEMENT(i) nfglArrayElementHelper(i) #else #define FN_GLARRAYELEMENT(i) fn.glArrayElement(i) #endif #define FN_GLCALLLISTS(n, type, lists) \ pixelBuffer buf(*this); \ void *tmp = buf.convertArray(n, type, (nfmemptr)lists); \ fn.glCallLists(n, type, tmp) #if NFOSMESA_NEED_BYTE_CONV #define FN_GLBITMAP(width, height, xorig, yorig, xmove, ymove, bitmap) \ if (width <= 0 || height <= 0) return; \ GLsizei bytes_per_row = (width + 7) / 8; \ GLsizei size = bytes_per_row * height; \ GLubyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, bitmap, tmp); \ fn.glBitmap(width, height, xorig, yorig, xmove, ymove, ptmp) #else #define FN_GLBITMAP(width, height, xorig, yorig, xmove, ymove, bitmap) \ fn.glBitmap(width, height, xorig, yorig, xmove, ymove, HostAddr(bitmap, const GLubyte *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLCLIPPLANE(plane, equation) \ GLdouble tmp[4]; \ Atari2HostDoubleArray(4, equation, tmp); \ fn.glClipPlane(plane, tmp) #else #define FN_GLCLIPPLANE(plane, equation) \ fn.glClipPlane(plane, HostAddr(equation, const GLdouble *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOLOR3BV(v) \ GLbyte tmp[3]; \ Atari2HostByteArray(3, v, tmp); \ fn.glColor3bv(tmp) #else #define FN_GLCOLOR3BV(v) \ fn.glColor3bv(HostAddr(v, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOLOR3UBV(v) \ GLubyte tmp[3]; \ Atari2HostByteArray(3, v, tmp); \ fn.glColor3ubv(tmp) #else #define FN_GLCOLOR3UBV(v) \ fn.glColor3ubv(HostAddr(v, const GLubyte *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLCOLOR3DV(v) \ GLdouble tmp[3]; \ Atari2HostDoubleArray(3, v, tmp); \ fn.glColor3dv(tmp) #else #define FN_GLCOLOR3DV(v) \ fn.glColor3dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLCOLOR3FV(v) \ GLfloat tmp[3]; \ Atari2HostFloatArray(3, v, tmp); \ fn.glColor3fv(tmp) #else #define FN_GLCOLOR3FV(v) \ fn.glColor3fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLOR3IV(v) \ GLint tmp[3]; \ Atari2HostIntArray(3, v, tmp); \ fn.glColor3iv(tmp) #else #define FN_GLCOLOR3IV(v) \ fn.glColor3iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLOR3SV(v) \ GLshort tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glColor3sv(tmp) #else #define FN_GLCOLOR3SV(v) \ fn.glColor3sv(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLOR3UIV(v) \ GLuint tmp[3]; \ Atari2HostIntArray(3, v, tmp); \ fn.glColor3uiv(tmp) #else #define FN_GLCOLOR3UIV(v) \ fn.glColor3uiv(HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLOR3USV(v) \ GLushort tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glColor3usv(tmp) #else #define FN_GLCOLOR3USV(v) \ fn.glColor3usv(HostAddr(v, const GLushort *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOLOR4BV(v) \ GLbyte tmp[4]; \ Atari2HostByteArray(4, v, tmp); \ fn.glColor4bv(tmp) #else #define FN_GLCOLOR4BV(v) \ fn.glColor4bv(HostAddr(v, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOLOR4UBV(v) \ GLubyte tmp[4]; \ Atari2HostByteArray(4, v, tmp); \ fn.glColor4ubv(tmp) #else #define FN_GLCOLOR4UBV(v) \ fn.glColor4ubv(HostAddr(v, const GLubyte *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLCOLOR4DV(v) \ GLdouble tmp[4]; \ Atari2HostDoubleArray(4, v, tmp); \ fn.glColor4dv(tmp) #else #define FN_GLCOLOR4DV(v) \ fn.glColor4dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLCOLOR4FV(v) \ GLfloat tmp[4]; \ Atari2HostFloatArray(4, v, tmp); \ fn.glColor4fv(tmp) #else #define FN_GLCOLOR4FV(v) \ fn.glColor4fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLOR4IV(v) \ GLint tmp[4]; \ Atari2HostIntArray(4, v, tmp); \ fn.glColor4iv(tmp) #else #define FN_GLCOLOR4IV(v) \ fn.glColor4iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLOR4SV(v) \ GLshort tmp[4]; \ Atari2HostShortArray(4, v, tmp); \ fn.glColor4sv(tmp) #else #define FN_GLCOLOR4SV(v) \ fn.glColor4sv(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLOR4UIV(v) \ GLuint tmp[4]; \ Atari2HostIntArray(4, v, tmp); \ fn.glColor4uiv(tmp) #else #define FN_GLCOLOR4UIV(v) \ fn.glColor4uiv(HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLOR4USV(v) \ GLushort tmp[4]; \ Atari2HostShortArray(4, v, tmp); \ fn.glColor4usv(tmp) #else #define FN_GLCOLOR4USV(v) \ fn.glColor4usv(HostAddr(v, const GLushort *)) #endif #define FN_GLCOLORPOINTER(size, type, stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].color, size, type, stride, -1, 0, AtariAddr(pointer, nfmemptr)) #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETETEXTURES(n, textures) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, textures, tmp); \ fn.glDeleteTextures(n, ptmp) #else #define FN_GLDELETETEXTURES(n, textures) \ fn.glDeleteTextures(n, HostAddr(textures, const GLuint *)) #endif #define FN_GLDISABLECLIENTSTATE(array) \ switch(array) { \ case GL_VERTEX_ARRAY: \ contexts[cur_context].enabled_arrays &= ~NFOSMESA_VERTEX_ARRAY; \ break; \ case GL_NORMAL_ARRAY: \ contexts[cur_context].enabled_arrays &= ~NFOSMESA_NORMAL_ARRAY; \ break; \ case GL_COLOR_ARRAY: \ contexts[cur_context].enabled_arrays &= ~NFOSMESA_COLOR_ARRAY; \ break; \ case GL_INDEX_ARRAY: \ contexts[cur_context].enabled_arrays &= ~NFOSMESA_INDEX_ARRAY; \ break; \ case GL_EDGE_FLAG_ARRAY: \ contexts[cur_context].enabled_arrays &= ~NFOSMESA_EDGEFLAG_ARRAY; \ break; \ case GL_TEXTURE_COORD_ARRAY: \ contexts[cur_context].enabled_arrays &= ~NFOSMESA_TEXCOORD_ARRAY; \ break; \ case GL_FOG_COORDINATE_ARRAY: \ contexts[cur_context].enabled_arrays &= ~NFOSMESA_FOGCOORD_ARRAY; \ break; \ case GL_SECONDARY_COLOR_ARRAY: \ contexts[cur_context].enabled_arrays &= ~NFOSMESA_2NDCOLOR_ARRAY; \ break; \ case GL_ELEMENT_ARRAY_APPLE: \ contexts[cur_context].enabled_arrays &= ~NFOSMESA_ELEMENT_ARRAY; \ break; \ case GL_WEIGHT_ARRAY_ARB: \ contexts[cur_context].enabled_arrays &= ~NFOSMESA_WEIGHT_ARRAY; \ break; \ case GL_MATRIX_INDEX_ARRAY_ARB: \ contexts[cur_context].enabled_arrays &= ~NFOSMESA_MATRIX_INDEX_ARRAY; \ break; \ case GL_REPLACEMENT_CODE_ARRAY_SUN: \ contexts[cur_context].enabled_arrays &= ~NFOSMESA_REPLACEMENT_CODE_ARRAY; \ break; \ } \ fn.glDisableClientState(array) #define FN_GLDRAWARRAYS(mode, first, count) \ convertClientArrays(first + count); \ fn.glDrawArrays(mode, first, count) #define FN_GLDRAWELEMENTS(mode, count, type, indices) \ void *tmp; \ convertClientArrays(count); \ pixelBuffer buf(*this); \ switch(type) { \ case GL_UNSIGNED_BYTE: \ case GL_UNSIGNED_SHORT: \ case GL_UNSIGNED_INT: \ tmp = buf.convertArray(count, type, (nfmemptr)indices); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ fn.glDrawElements(mode, count, type, tmp) #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLDRAWPIXELS(width, height, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, 1, format, type, (nfmemptr)pixels); \ fn.glDrawPixels(width, height, format, type, tmp) #else #define FN_GLDRAWPIXELS(width, height, format, type, pixels) \ fn.glDrawPixels(width, height, format, type, HostAddr(pixels, const void *)) #endif #define FN_GLEDGEFLAGPOINTER(stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].edgeflag, 1, GL_UNSIGNED_BYTE, stride, -1, 0, AtariAddr(pointer, nfmemptr)) #if NFOSMESA_NEED_BYTE_CONV #define FN_GLEDGEFLAGV(flag) \ GLboolean tmp[1]; \ Atari2HostByteArray(1, flag, tmp); \ fn.glEdgeFlagv(tmp) #else #define FN_GLEDGEFLAGV(flag) \ fn.glEdgeFlagv(HostAddr(flag, const GLboolean *)) #endif #define FN_GLENABLECLIENTSTATE(array) \ switch(array) { \ case GL_VERTEX_ARRAY: \ contexts[cur_context].enabled_arrays |= NFOSMESA_VERTEX_ARRAY; \ break; \ case GL_NORMAL_ARRAY: \ contexts[cur_context].enabled_arrays |= NFOSMESA_NORMAL_ARRAY; \ break; \ case GL_COLOR_ARRAY: \ contexts[cur_context].enabled_arrays |= NFOSMESA_COLOR_ARRAY; \ break; \ case GL_INDEX_ARRAY: \ contexts[cur_context].enabled_arrays |= NFOSMESA_INDEX_ARRAY; \ break; \ case GL_EDGE_FLAG_ARRAY: \ contexts[cur_context].enabled_arrays |= NFOSMESA_EDGEFLAG_ARRAY; \ break; \ case GL_TEXTURE_COORD_ARRAY: \ contexts[cur_context].enabled_arrays |= NFOSMESA_TEXCOORD_ARRAY; \ break; \ case GL_FOG_COORDINATE_ARRAY: \ contexts[cur_context].enabled_arrays |= NFOSMESA_FOGCOORD_ARRAY; \ break; \ case GL_SECONDARY_COLOR_ARRAY: \ contexts[cur_context].enabled_arrays |= NFOSMESA_2NDCOLOR_ARRAY; \ break; \ case GL_ELEMENT_ARRAY_APPLE: \ contexts[cur_context].enabled_arrays |= NFOSMESA_ELEMENT_ARRAY; \ break; \ case GL_WEIGHT_ARRAY_ARB: \ contexts[cur_context].enabled_arrays |= NFOSMESA_WEIGHT_ARRAY; \ break; \ case GL_MATRIX_INDEX_ARRAY_ARB: \ contexts[cur_context].enabled_arrays |= NFOSMESA_MATRIX_INDEX_ARRAY; \ break; \ case GL_REPLACEMENT_CODE_ARRAY_SUN: \ contexts[cur_context].enabled_arrays |= NFOSMESA_REPLACEMENT_CODE_ARRAY; \ break; \ } \ fn.glEnableClientState(array) #define FN_GLENABLE(cap) \ switch (cap) { \ case GL_NFOSMESA_ERROR_CHECK: \ contexts[cur_context].error_check_enabled = GL_TRUE; \ return; \ } \ fn.glEnable(cap) #define FN_GLDISABLE(cap) \ switch (cap) { \ case GL_NFOSMESA_ERROR_CHECK: \ contexts[cur_context].error_check_enabled = GL_FALSE; \ return; \ } \ fn.glDisable(cap) #define FN_GLISENABLED(cap) \ switch (cap) { \ case GL_NFOSMESA_ERROR_CHECK: \ return contexts[cur_context].error_check_enabled; \ } \ return fn.glIsEnabled(cap) #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLEVALCOORD1DV(u) \ GLdouble tmp[1]; \ Atari2HostDoubleArray(1, u, tmp); \ fn.glEvalCoord1dv(tmp) #else #define FN_GLEVALCOORD1DV(u) \ fn.glEvalCoord1dv(HostAddr(u, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLEVALCOORD1FV(u) \ GLfloat tmp[1]; \ Atari2HostFloatArray(1, u, tmp); \ fn.glEvalCoord1fv(tmp) #else #define FN_GLEVALCOORD1FV(u) \ fn.glEvalCoord1fv(HostAddr(u, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLEVALCOORD2DV(u) \ GLdouble tmp[2]; \ Atari2HostDoubleArray(2, u, tmp); \ fn.glEvalCoord2dv(tmp) #else #define FN_GLEVALCOORD2DV(u) \ fn.glEvalCoord2dv(HostAddr(u, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLEVALCOORD2FV(u) \ GLfloat tmp[2]; \ Atari2HostFloatArray(2, u, tmp); \ fn.glEvalCoord2fv(tmp) #else #define FN_GLEVALCOORD2FV(u) \ fn.glEvalCoord2fv(HostAddr(u, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLFEEDBACKBUFFER(size, type, buffer) \ contexts[cur_context].feedback_buffer_atari = (nfmemptr)buffer; \ free(contexts[cur_context].feedback_buffer_host); \ contexts[cur_context].feedback_buffer_host = malloc(size * sizeof(GLfloat)); \ if (!contexts[cur_context].feedback_buffer_host) { glSetError(GL_OUT_OF_MEMORY); return; } \ contexts[cur_context].feedback_buffer_type = GL_FLOAT; \ fn.glFeedbackBuffer(size, type, (GLfloat *)contexts[cur_context].feedback_buffer_host) #else #define FN_GLFEEDBACKBUFFER(size, type, buffer) \ fn.glFeedbackBuffer(size, type, HostAddr(buffer, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLFINISH() \ fn.glFinish(); \ ConvertContext(cur_context) #else #define FN_GLFINISH() fn.glFinish() #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLFLUSH() \ fn.glFlush(); \ ConvertContext(cur_context) #else #define FN_GLFLUSH() fn.glFlush() #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLFOGFV(pname, params) \ int const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ Atari2HostFloatArray(size, params, tmp); \ fn.glFogfv(pname, tmp) #else #define FN_GLFOGFV(pname, params) \ fn.glFogfv(pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLFOGIV(pname, params) \ int const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glFogiv(pname, tmp) #else #define FN_GLFOGIV(pname, params) \ fn.glFogiv(pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENTEXTURES(n, textures) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenTextures(n, tmp); \ Host2AtariIntArray(n, tmp, textures) #else #define FN_GLGENTEXTURES(n, textures) \ fn.glGenTextures(n, HostAddr(textures, GLuint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETCLIPPLANE(plane, equation) \ GLdouble tmp[4]; \ fn.glGetClipPlane(plane, tmp); \ Host2AtariDoubleArray(4, tmp, equation) #else #define FN_GLGETCLIPPLANE(plane, equation) \ fn.glGetClipPlane(plane, HostAddr(equation, GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETDOUBLEV(pname, params) \ int n; \ n = nfglGetNumParams(pname); \ if (n > 16) { \ GLdouble *tmp; \ tmp = (GLdouble *)malloc(n * sizeof(*tmp)); \ fn.glGetDoublev(pname, tmp); \ Host2AtariDoubleArray(n, tmp, params); \ free(tmp); \ } else { \ GLdouble tmp[16]; \ fn.glGetDoublev(pname, tmp); \ Host2AtariDoubleArray(n, tmp, params); \ } #else #define FN_GLGETDOUBLEV(pname, params) \ fn.glGetDoublev(pname, HostAddr(params, GLdouble *)) #endif #define FN_GLGETERROR() \ GLenum e = contexts[cur_context].error_code; \ contexts[cur_context].error_code = GL_NO_ERROR; \ if (e != GL_NO_ERROR) return e; \ return fn.glGetError() #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETFLOATV(pname, params) \ int n; \ n = nfglGetNumParams(pname); \ if (n > 16) { \ GLfloat *tmp; \ tmp = (GLfloat *)malloc(n * sizeof(*tmp)); \ fn.glGetFloatv(pname, tmp); \ Host2AtariFloatArray(n, tmp, params); \ free(tmp); \ } else { \ GLfloat tmp[16]; \ fn.glGetFloatv(pname, tmp); \ Host2AtariFloatArray(n, tmp, params); \ } #else #define FN_GLGETFLOATV(pname, params) \ fn.glGetFloatv(pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETINTEGERV(pname, params) \ int n; \ n = nfglGetNumParams(pname); \ if (n > 16) { \ GLint *tmp; \ tmp = (GLint *)malloc(n * sizeof(*tmp)); \ fn.glGetIntegerv(pname, tmp); \ Host2AtariIntArray(n, tmp, params); \ free(tmp); \ } else { \ GLint tmp[16]; \ fn.glGetIntegerv(pname, tmp); \ Host2AtariIntArray(n, tmp, params); \ } #else #define FN_GLGETINTEGERV(pname, params) \ fn.glGetIntegerv(pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETBOOLEANV(pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLboolean tmp[MAX(size, 16)]; \ fn.glGetBooleanv(pname, tmp); \ Host2AtariByteArray(size, tmp, params) #else #define FN_GLGETBOOLEANV(pname, params) \ fn.glGetBooleanv(pname, HostAddr(params, GLboolean *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETLIGHTFV(light, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetLightfv(light, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETLIGHTFV(light, pname, params) \ fn.glGetLightfv(light, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETLIGHTIV(light, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetLightiv(light, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETLIGHTIV(light, pname, params) \ fn.glGetLightiv(light, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETMAPDV(target, query, v) \ GLint order[2] = { 0, 0 }; \ GLint size; \ GLdouble *tmp; \ GLdouble tmpbuf[4]; \ switch (target) { \ case GL_MAP1_INDEX: \ case GL_MAP1_TEXTURE_COORD_1: \ case GL_MAP1_TEXTURE_COORD_2: \ case GL_MAP1_VERTEX_3: \ case GL_MAP1_NORMAL: \ case GL_MAP1_TEXTURE_COORD_3: \ case GL_MAP1_VERTEX_4: \ case GL_MAP1_COLOR_4: \ case GL_MAP1_TEXTURE_COORD_4: \ switch (query) { \ case GL_COEFF: \ size = __glGetMap_Evalk(target); \ fn.glGetMapiv(target, GL_ORDER, order); \ if (order[0] <= 0) return; \ size *= order[0]; \ tmp = (GLdouble *)malloc(size * sizeof(*tmp)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ fn.glGetMapdv(target, query, tmp); \ Host2AtariDoubleArray(size, tmp, v); \ free(tmp); \ break; \ case GL_DOMAIN: \ fn.glGetMapdv(target, query, tmpbuf); \ size = 2; \ Host2AtariDoubleArray(size, tmpbuf, v); \ break; \ case GL_ORDER: \ fn.glGetMapdv(target, query, tmpbuf); \ size = 1; \ Host2AtariDoubleArray(size, tmpbuf, v); \ break; \ } \ break; \ case GL_MAP2_INDEX: \ case GL_MAP2_TEXTURE_COORD_1: \ case GL_MAP2_TEXTURE_COORD_2: \ case GL_MAP2_VERTEX_3: \ case GL_MAP2_NORMAL: \ case GL_MAP2_TEXTURE_COORD_3: \ case GL_MAP2_VERTEX_4: \ case GL_MAP2_COLOR_4: \ case GL_MAP2_TEXTURE_COORD_4: \ switch (query) { \ case GL_COEFF: \ size = __glGetMap_Evalk(target); \ fn.glGetMapiv(target, GL_ORDER, order); \ if (order[0] <= 0 || order[1] <= 0) return; \ size *= order[0] * order[1]; \ tmp = (GLdouble *)malloc(size * sizeof(*tmp)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ fn.glGetMapdv(target, query, tmp); \ Host2AtariDoubleArray(size, tmp, v); \ free(tmp); \ break; \ case GL_DOMAIN: \ fn.glGetMapdv(target, query, tmpbuf); \ size = 4; \ Host2AtariDoubleArray(size, tmpbuf, v); \ break; \ case GL_ORDER: \ fn.glGetMapdv(target, query, tmpbuf); \ size = 2; \ Host2AtariDoubleArray(size, tmpbuf, v); \ break; \ } \ break; \ } #else #define FN_GLGETMAPDV(target, query, v) \ fn.glGetMapdv(target, query, HostAddr(v, GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETMAPFV(target, query, v) \ GLint order[2] = { 0, 0 }; \ GLint size; \ GLfloat *tmp; \ GLfloat tmpbuf[4]; \ switch (target) { \ case GL_MAP1_INDEX: \ case GL_MAP1_TEXTURE_COORD_1: \ case GL_MAP1_TEXTURE_COORD_2: \ case GL_MAP1_VERTEX_3: \ case GL_MAP1_NORMAL: \ case GL_MAP1_TEXTURE_COORD_3: \ case GL_MAP1_VERTEX_4: \ case GL_MAP1_COLOR_4: \ case GL_MAP1_TEXTURE_COORD_4: \ switch (query) { \ case GL_COEFF: \ size = __glGetMap_Evalk(target); \ fn.glGetMapiv(target, GL_ORDER, order); \ if (order[0] <= 0) return; \ size *= order[0]; \ tmp = (GLfloat *)malloc(size * sizeof(*tmp)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ fn.glGetMapfv(target, query, tmp); \ Host2AtariFloatArray(size, tmp, v); \ free(tmp); \ break; \ case GL_DOMAIN: \ fn.glGetMapfv(target, query, tmpbuf); \ size = 2; \ Host2AtariFloatArray(size, tmpbuf, v); \ break; \ case GL_ORDER: \ fn.glGetMapfv(target, query, tmpbuf); \ size = 1; \ Host2AtariFloatArray(size, tmpbuf, v); \ break; \ } \ break; \ case GL_MAP2_INDEX: \ case GL_MAP2_TEXTURE_COORD_1: \ case GL_MAP2_TEXTURE_COORD_2: \ case GL_MAP2_VERTEX_3: \ case GL_MAP2_NORMAL: \ case GL_MAP2_TEXTURE_COORD_3: \ case GL_MAP2_VERTEX_4: \ case GL_MAP2_COLOR_4: \ case GL_MAP2_TEXTURE_COORD_4: \ switch (query) { \ case GL_COEFF: \ size = __glGetMap_Evalk(target); \ fn.glGetMapiv(target, GL_ORDER, order); \ if (order[0] <= 0 || order[1] <= 0) return; \ size *= order[0] * order[1]; \ tmp = (GLfloat *)malloc(size * sizeof(*tmp)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ fn.glGetMapfv(target, query, tmp); \ Host2AtariFloatArray(size, tmp, v); \ free(tmp); \ break; \ case GL_DOMAIN: \ fn.glGetMapfv(target, query, tmpbuf); \ size = 4; \ Host2AtariFloatArray(size, tmpbuf, v); \ break; \ case GL_ORDER: \ fn.glGetMapfv(target, query, tmpbuf); \ size = 2; \ Host2AtariFloatArray(size, tmpbuf, v); \ break; \ } \ break; \ } #else #define FN_GLGETMAPFV(target, query, v) \ fn.glGetMapfv(target, query, HostAddr(v, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETMAPIV(target, query, v) \ GLint order[2] = { 0, 0 }; \ GLint size; \ GLint *tmp; \ GLint tmpbuf[4]; \ switch (target) { \ case GL_MAP1_INDEX: \ case GL_MAP1_TEXTURE_COORD_1: \ case GL_MAP1_TEXTURE_COORD_2: \ case GL_MAP1_VERTEX_3: \ case GL_MAP1_NORMAL: \ case GL_MAP1_TEXTURE_COORD_3: \ case GL_MAP1_VERTEX_4: \ case GL_MAP1_COLOR_4: \ case GL_MAP1_TEXTURE_COORD_4: \ switch (query) { \ case GL_COEFF: \ size = __glGetMap_Evalk(target); \ fn.glGetMapiv(target, GL_ORDER, order); \ if (order[0] <= 0) return; \ size *= order[0]; \ tmp = (GLint *)malloc(size * sizeof(*tmp)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ fn.glGetMapiv(target, query, tmp); \ Host2AtariIntArray(size, tmp, v); \ free(tmp); \ break; \ case GL_DOMAIN: \ fn.glGetMapiv(target, query, tmpbuf); \ size = 2; \ Host2AtariIntArray(size, tmpbuf, v); \ break; \ case GL_ORDER: \ fn.glGetMapiv(target, query, tmpbuf); \ size = 1; \ Host2AtariIntArray(size, tmpbuf, v); \ break; \ } \ break; \ case GL_MAP2_INDEX: \ case GL_MAP2_TEXTURE_COORD_1: \ case GL_MAP2_TEXTURE_COORD_2: \ case GL_MAP2_VERTEX_3: \ case GL_MAP2_NORMAL: \ case GL_MAP2_TEXTURE_COORD_3: \ case GL_MAP2_VERTEX_4: \ case GL_MAP2_COLOR_4: \ case GL_MAP2_TEXTURE_COORD_4: \ switch (query) { \ case GL_COEFF: \ size = __glGetMap_Evalk(target); \ fn.glGetMapiv(target, GL_ORDER, order); \ if (order[0] <= 0 || order[1] <= 0) return; \ size *= order[0] * order[1]; \ tmp = (GLint *)malloc(size * sizeof(*tmp)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ fn.glGetMapiv(target, query, tmp); \ Host2AtariIntArray(size, tmp, v); \ free(tmp); \ break; \ case GL_DOMAIN: \ fn.glGetMapiv(target, query, tmpbuf); \ size = 4; \ Host2AtariIntArray(size, tmpbuf, v); \ break; \ case GL_ORDER: \ fn.glGetMapiv(target, query, tmpbuf); \ size = 2; \ Host2AtariIntArray(size, tmpbuf, v); \ break; \ } \ break; \ } #else #define FN_GLGETMAPIV(target, query, v) \ fn.glGetMapiv(target, query, HostAddr(v, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETMATERIALFV(face, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetMaterialfv(face, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETMATERIALFV(face, pname, params) \ fn.glGetMaterialfv(face, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETMATERIALIV(face, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetMaterialiv(face, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETMATERIALIV(face, pname, params) \ fn.glGetMaterialiv(face, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETPIXELMAPFV(map, values) \ GLint const size = nfglPixelmapSize(map);\ if (size <= 0) return; \ GLfloat tmp[size]; \ fn.glGetPixelMapfv(map, tmp); \ Host2AtariFloatArray(size, tmp, values) #else #define FN_GLGETPIXELMAPFV(map, values) \ fn.glGetPixelMapfv(map, HostAddr(values, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPIXELMAPUIV(map, values) \ GLint const size = nfglPixelmapSize(map);\ if (size <= 0) return; \ GLuint tmp[size]; \ fn.glGetPixelMapuiv(map, tmp); \ Host2AtariIntArray(size, tmp, values) #else #define FN_GLGETPIXELMAPUIV(map, values) \ fn.glGetPixelMapuiv(map, HostAddr(values, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPIXELMAPUSV(map, values) \ GLint const size = nfglPixelmapSize(map);\ if (size <= 0) return; \ GLushort tmp[size]; \ fn.glGetPixelMapusv(map, tmp); \ Host2AtariShortArray(size, tmp, values) #else #define FN_GLGETPIXELMAPUSV(map, values) \ fn.glGetPixelMapusv(map, HostAddr(values, GLushort *)) #endif #define FN_GLGETPOINTERV(pname, data) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ gl_get_pointer(pname, texunit, HostAddr(data, void **)) /* * FIXME: If a non-zero named buffer object is bound to the GL_PIXEL_PACK_BUFFER target (see glBindBuffer) while a polygon stipple pattern is requested, pattern is treated as a byte offset into the buffer object's data store. */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETPOLYGONSTIPPLE(mask) \ GLint const size = 32 * 32 / 8; \ GLubyte tmp[size]; \ fn.glGetPolygonStipple(tmp); \ Host2AtariByteArray(size, tmp, mask) #else #define FN_GLGETPOLYGONSTIPPLE(mask) \ fn.glGetPolygonStipple(HostAddr(mask, GLubyte *)) #endif /* * FIXME: If a non-zero named buffer object is bound to the GL_PIXEL_UNPACK_BUFFER target (see glBindBuffer) while a stipple pattern is specified, pattern is treated as a byte offset into the buffer object's data store. */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLPOLYGONSTIPPLE(pattern) \ GLint const size = 32 * 32 / 8; \ GLubyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, pattern, tmp); \ fn.glPolygonStipple(ptmp) #else #define FN_GLPOLYGONSTIPPLE(pattern) \ fn.glPolygonStipple(HostAddr(pattern, GLubyte *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETTEXENVFV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetTexEnvfv(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETTEXENVFV(target, pname, params) \ fn.glGetTexEnvfv(target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXENVIV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetTexEnviv(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXENVIV(target, pname, params) \ fn.glGetTexEnviv(target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETTEXGENDV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLdouble tmp[MAX(size, 16)]; \ fn.glGetTexGendv(target, pname, tmp); \ Host2AtariDoubleArray(size, tmp, params) #else #define FN_GLGETTEXGENDV(target, pname, params) \ fn.glGetTexGendv(target, pname, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETTEXGENFV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetTexGenfv(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETTEXGENFV(target, pname, params) \ fn.glGetTexGenfv(target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXGENIV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetTexGeniv(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXGENIV(target, pname, params) \ fn.glGetTexGeniv(target, pname, HostAddr(params, GLint *)) #endif #define FN_GLGETTEXIMAGE(target, level, format, type, img) \ GLint width = 0, height = 1, depth = 1; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ switch (target) { \ case GL_TEXTURE_1D: \ case GL_PROXY_TEXTURE_1D: \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_WIDTH, &width); \ break; \ case GL_TEXTURE_2D: \ case GL_PROXY_TEXTURE_2D: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_X: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: \ case GL_PROXY_TEXTURE_CUBE_MAP: \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_WIDTH, &width); \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_HEIGHT, &height); \ break; \ case GL_TEXTURE_3D: \ case GL_PROXY_TEXTURE_3D: \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_WIDTH, &width); \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_HEIGHT, &height); \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_DEPTH, &depth); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(img); \ fn.glGetTexImage(target, level, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(width, height, depth, format, type)) return; \ } else { \ src = buf.hostBuffer(width, height, depth, format, type, (nfmemptr)img); \ if (src == NULL) return; \ fn.glGetTexImage(target, level, format, type, src); \ dst = (nfmemptr)img; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETTEXLEVELPARAMETERFV(target, level, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetTexLevelParameterfv(target, level, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETTEXLEVELPARAMETERFV(target, level, pname, params) \ fn.glGetTexLevelParameterfv(target, level, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXLEVELPARAMETERIV(target, level, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetTexLevelParameteriv(target, level, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXLEVELPARAMETERIV(target, level, pname, params) \ fn.glGetTexLevelParameteriv(target, level, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETTEXPARAMETERFV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetTexParameterfv(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETTEXPARAMETERFV(target, pname, params) \ fn.glGetTexParameterfv(target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXPARAMETERIV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetTexParameteriv(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXPARAMETERIV(target, pname, params) \ fn.glGetTexParameteriv(target, pname, HostAddr(params, GLint *)) #endif #define FN_GLINDEXPOINTER(type, stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].index, 1, type, stride, -1, 0, AtariAddr(pointer, nfmemptr)) #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLINDEXDV(c) \ GLdouble tmp[1]; \ Atari2HostDoubleArray(1, c, tmp); \ fn.glIndexdv(tmp) #else #define FN_GLINDEXDV(c) \ fn.glIndexdv(HostAddr(c, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLINDEXFV(c) \ GLfloat tmp[1]; \ Atari2HostFloatArray(1, c, tmp); \ fn.glIndexfv(tmp) #else #define FN_GLINDEXFV(c) \ fn.glIndexfv(HostAddr(c, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLINDEXIV(c) \ GLint tmp[1]; \ Atari2HostIntArray(1, c, tmp); \ fn.glIndexiv(tmp) #else #define FN_GLINDEXIV(c) \ fn.glIndexiv(HostAddr(c, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLINDEXSV(c) \ GLshort tmp[1]; \ Atari2HostShortArray(1, c, tmp); \ fn.glIndexsv(tmp) #else #define FN_GLINDEXSV(c) \ fn.glIndexsv(HostAddr(c, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLINDEXUBV(c) \ GLubyte tmp[1]; \ Atari2HostByteArray(1, c, tmp); \ fn.glIndexubv(tmp) #else #define FN_GLINDEXUBV(c) \ fn.glIndexubv(HostAddr(c, const GLubyte *)) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLINTERLEAVEDARRAYS(format, stride, pointer) \ nfglInterleavedArraysHelper(format, stride, AtariAddr(pointer, nfmemptr)) #else #define FN_GLINTERLEAVEDARRAYS(format, stride, pointer) \ fn.glInterleavedArrays(format, stride, HostAddr(pointer, const void *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLLIGHTMODELFV(pname, params) \ GLfloat tmp[4]; \ int const size = nfglGetNumParams(pname); \ Atari2HostFloatArray(size, params,tmp); \ fn.glLightModelfv(pname, tmp) #else #define FN_GLLIGHTMODELFV(pname, params) \ fn.glLightModelfv(pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLLIGHTMODELIV(pname, params) \ int const size = nfglGetNumParams(pname); \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glLightModeliv(pname, ptmp) #else #define FN_GLLIGHTMODELIV(pname, params) \ fn.glLightModeliv(pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLLIGHTFV(light, pname, params) \ GLfloat tmp[4]; \ int const size = nfglGetNumParams(pname); \ Atari2HostFloatArray(size, params, tmp); \ fn.glLightfv(light, pname, tmp) #else #define FN_GLLIGHTFV(light, pname, params) \ fn.glLightfv(light, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLLIGHTIV(light, pname, params) \ int const size = nfglGetNumParams(pname); \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glLightiv(light, pname, ptmp) #else #define FN_GLLIGHTIV(light, pname, params) \ fn.glLightiv(light, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLLOADMATRIXD(m) \ int const size = 16; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, m, tmp); \ fn.glLoadMatrixd(tmp) #else #define FN_GLLOADMATRIXD(m) \ fn.glLoadMatrixd(HostAddr(m, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLLOADMATRIXF(m) \ int const size = 16; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, m, tmp); \ fn.glLoadMatrixf(tmp) #else #define FN_GLLOADMATRIXF(m) \ fn.glLoadMatrixf(HostAddr(m, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMAP1D(target, u1, u2, stride, order, points) \ GLdouble *tmp; \ nfcmemptr ptr; \ GLint i; \ GLint const size = __glGetMap_Evalk(target); \ \ tmp = (GLdouble *)malloc(size * order * sizeof(GLdouble)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ ptr = (nfcmemptr)points; \ for (i = 0; i < order; i++) { \ Atari2HostDoubleArray(size, AtariAddr(ptr, const GLdouble *), &tmp[i*size]); \ ptr += stride * ATARI_SIZEOF_DOUBLE; \ } \ fn.glMap1d(target, u1, u2, size, order, tmp); \ free(tmp) #else #define FN_GLMAP1D(target, u1, u2, stride, order, points) \ fn.glMap1d(target, u1, u2, stride, order, HostAddr(points, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMAP1F(target, u1, u2, stride, order, points) \ GLfloat *tmp; \ nfcmemptr ptr; \ GLint i; \ GLint const size = __glGetMap_Evalk(target); \ \ tmp = (GLfloat *)malloc(size * order * sizeof(GLfloat)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ ptr = (nfcmemptr)points; \ for (i = 0; i < order; i++) { \ Atari2HostFloatArray(size, AtariAddr(ptr, const GLfloat *), &tmp[i * size]); \ ptr += stride * ATARI_SIZEOF_FLOAT; \ } \ fn.glMap1f(target, u1, u2, size, order, tmp); \ free(tmp) #else #define FN_GLMAP1F(target, u1, u2, stride, order, points) \ fn.glMap1f(target, u1, u2, stride, order, HostAddr(points, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMAP2D(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points) \ GLdouble *tmp; \ nfcmemptr ptr; \ GLint i, j; \ GLint const size = __glGetMap_Evalk(target); \ \ tmp = (GLdouble *)malloc(size * uorder * vorder * sizeof(GLdouble)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ ptr = (nfcmemptr)points; \ for (i = 0; i < uorder; i++) { \ for (j = 0;j < vorder; j++) { \ Atari2HostDoubleArray(size, AtariAddr(ptr + (i * ustride + j * vstride) * ATARI_SIZEOF_DOUBLE, const GLdouble *), &tmp[(i * vorder + j) * size]); \ } \ } \ fn.glMap2d(target, \ u1, u2, size * vorder, uorder, \ v1, v2, size, vorder, tmp \ ); \ free(tmp) #else #define FN_GLMAP2D(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points) \ fn.glMap2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, HostAddr(points, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMAP2F(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points) \ GLfloat *tmp; \ nfcmemptr ptr; \ GLint i, j; \ GLint const size = __glGetMap_Evalk(target); \ \ tmp = (GLfloat *)malloc(size * uorder * vorder *sizeof(GLfloat)); \ if (!tmp) { glSetError(GL_OUT_OF_MEMORY); return; } \ ptr = (nfcmemptr)points; \ for (i = 0; i < uorder; i++) { \ for (j = 0; j < vorder; j++) { \ Atari2HostFloatArray(size, AtariAddr(ptr + (i * ustride + j * vstride) * ATARI_SIZEOF_FLOAT, const GLfloat *), &tmp[(i * vorder + j) * size]); \ } \ } \ fn.glMap2f(target, \ u1, u2, size * vorder, uorder, \ v1, v2, size, vorder, tmp \ ); \ free(tmp) #else #define FN_GLMAP2F(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points) \ fn.glMap2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, HostAddr(points, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMATERIALFV(face, pname, params) \ int const size = nfglGetNumParams(pname); \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, params,tmp); \ fn.glMaterialfv(face, pname, ptmp) #else #define FN_GLMATERIALFV(face, pname, params) \ fn.glMaterialfv(face, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMATERIALIV(face, pname, params) \ int const size = nfglGetNumParams(pname); \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glMaterialiv(face, pname, ptmp) #else #define FN_GLMATERIALIV(face, pname, params) \ fn.glMaterialiv(face, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMULTMATRIXD(m) \ int const size = 16; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, m, tmp); \ fn.glMultMatrixd(tmp) #else #define FN_GLMULTMATRIXD(m) \ fn.glMultMatrixd(HostAddr(m, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTMATRIXF(m) \ int const size = 16; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, m, tmp); \ fn.glMultMatrixf(tmp) #else #define FN_GLMULTMATRIXF(m) \ fn.glMultMatrixf(HostAddr(m, const GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLNORMAL3BV(v) \ int const size = 3; \ GLbyte tmp[size]; \ Atari2HostByteArray(size, v, tmp); \ fn.glNormal3bv(tmp) #else #define FN_GLNORMAL3BV(v) \ fn.glNormal3bv(HostAddr(v, const GLbyte *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLNORMAL3DV(v) \ int const size = 3; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glNormal3dv(tmp) #else #define FN_GLNORMAL3DV(v) \ fn.glNormal3dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLNORMAL3FV(v) \ int const size = 3; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glNormal3fv(tmp) #else #define FN_GLNORMAL3FV(v) \ fn.glNormal3fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLNORMAL3IV(v) \ int const size = 3; \ GLint tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glNormal3iv(tmp) #else #define FN_GLNORMAL3IV(v) \ fn.glNormal3iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLNORMAL3SV(v) \ int const size = 3; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glNormal3sv(tmp) #else #define FN_GLNORMAL3SV(v) \ fn.glNormal3sv(HostAddr(v, const GLshort *)) #endif #define FN_GLNORMALPOINTER(type, stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].normal, 3, type, stride, -1, 0, AtariAddr(pointer, nfmemptr)) #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPIXELMAPFV(map, mapsize, values) \ GLfloat tmp[MAX(mapsize, 0)], *ptmp; \ ptmp = Atari2HostFloatArray(mapsize, values, tmp); \ fn.glPixelMapfv(map, mapsize, ptmp) #else #define FN_GLPIXELMAPFV(map, mapsize, values) \ fn.glPixelMapfv(map, mapsize, HostAddr(values, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPIXELMAPUIV(map, mapsize, values) \ GLuint tmp[MAX(mapsize, 0)], *ptmp; \ ptmp = Atari2HostIntArray(mapsize, values, tmp); \ fn.glPixelMapuiv(map, mapsize, ptmp) #else #define FN_GLPIXELMAPUIV(map, mapsize, values) \ fn.glPixelMapuiv(map, mapsize, HostAddr(values, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPIXELMAPUSV(map, mapsize, values) \ GLushort tmp[MAX(mapsize, 0)], *ptmp; \ ptmp = Atari2HostShortArray(mapsize, values, tmp); \ fn.glPixelMapusv(map, mapsize, ptmp) #else #define FN_GLPIXELMAPUSV(map, mapsize, values) \ fn.glPixelMapusv(map, mapsize, HostAddr(values, const GLushort *)) #endif #if NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLPRIORITIZETEXTURES(n, textures, priorities) \ GLuint tmp[MAX(n, 0)], *ptmp; \ GLclampf tmp2[MAX(n, 0)], *ptmp2; \ ptmp = Atari2HostIntArray(n, textures, tmp); \ ptmp2 = Atari2HostFloatArray(n, priorities, tmp2); \ fn.glPrioritizeTextures(n, ptmp, ptmp2) #else #define FN_GLPRIORITIZETEXTURES(n, textures, priorities) \ fn.glPrioritizeTextures(n, HostAddr(textures, const GLuint *), HostAddr(priorities, const GLclampf *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLRASTERPOS2DV(v) \ GLdouble tmp[2]; \ Atari2HostDoubleArray(2, v, tmp); \ fn.glRasterPos2dv(tmp) #else #define FN_GLRASTERPOS2DV(v) \ fn.glRasterPos2dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLRASTERPOS2FV(v) \ GLfloat tmp[2]; \ Atari2HostFloatArray(2, v, tmp); \ fn.glRasterPos2fv(tmp) #else #define FN_GLRASTERPOS2FV(v) \ fn.glRasterPos2fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLRASTERPOS2IV(v) \ GLint const size = 2; \ GLint tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glRasterPos2iv(tmp) #else #define FN_GLRASTERPOS2IV(v) \ fn.glRasterPos2iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLRASTERPOS2SV(v) \ GLshort tmp[2]; \ Atari2HostShortArray(2, v, tmp); \ fn.glRasterPos2sv(tmp) #else #define FN_GLRASTERPOS2SV(v) \ fn.glRasterPos2sv(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLRASTERPOS3DV(v) \ GLdouble tmp[3]; \ Atari2HostDoubleArray(3, v, tmp); \ fn.glRasterPos3dv(tmp) #else #define FN_GLRASTERPOS3DV(v) \ fn.glRasterPos3dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLRASTERPOS3FV(v) \ GLfloat tmp[3]; \ Atari2HostFloatArray(3, v, tmp); \ fn.glRasterPos3fv(tmp) #else #define FN_GLRASTERPOS3FV(v) \ fn.glRasterPos3fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLRASTERPOS3IV(v) \ GLint tmp[3]; \ Atari2HostIntArray(3, v, tmp); \ fn.glRasterPos3iv(tmp) #else #define FN_GLRASTERPOS3IV(v) \ fn.glRasterPos3iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLRASTERPOS3SV(v) \ GLshort tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glRasterPos3sv(tmp) #else #define FN_GLRASTERPOS3SV(v) \ fn.glRasterPos3sv(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLRASTERPOS4DV(v) \ GLdouble tmp[4]; \ Atari2HostDoubleArray(4, v, tmp); \ fn.glRasterPos4dv(tmp) #else #define FN_GLRASTERPOS4DV(v) \ fn.glRasterPos4dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLRASTERPOS4FV(v) \ GLfloat tmp[4]; \ Atari2HostFloatArray(4, v, tmp); \ fn.glRasterPos4fv(tmp) #else #define FN_GLRASTERPOS4FV(v) \ fn.glRasterPos4fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLRASTERPOS4IV(v) \ GLint tmp[4]; \ Atari2HostIntArray(4, v, tmp); \ fn.glRasterPos4iv(tmp) #else #define FN_GLRASTERPOS4IV(v) \ fn.glRasterPos4iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLRASTERPOS4SV(v) \ GLshort tmp[4]; \ Atari2HostShortArray(4, v, tmp); \ fn.glRasterPos4sv(tmp) #else #define FN_GLRASTERPOS4SV(v) \ fn.glRasterPos4sv(HostAddr(v, const GLshort *)) #endif #define FN_GLREADPIXELS(x, y, width, height, format, type, img) \ GLint const depth = 1; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(img); \ fn.glReadPixels(x, y, width, height, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(width, height, depth, format, type)) return; \ } else { \ src = buf.hostBuffer(width, height, depth, format, type, (nfmemptr)img); \ if (src == NULL) return; \ fn.glReadPixels(x, y, width, height, format, type, src); \ dst = (nfmemptr)img; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLRECTDV(v1, v2) \ GLdouble tmp1[4]; \ GLdouble tmp2[4]; \ Atari2HostDoubleArray(4, v1, tmp1); \ Atari2HostDoubleArray(4, v2, tmp2); \ fn.glRectdv(tmp1, tmp2) #else #define FN_GLRECTDV(v1, v2) \ fn.glRectdv(HostAddr(v1, const GLdouble *), HostAddr(v2, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLRECTFV(v1, v2) \ GLfloat tmp1[4]; \ GLfloat tmp2[4]; \ Atari2HostFloatArray(4, v1, tmp1); \ Atari2HostFloatArray(4, v2, tmp2); \ fn.glRectfv(tmp1, tmp2) #else #define FN_GLRECTFV(v1, v2) \ fn.glRectfv(HostAddr(v1, const GLfloat *), HostAddr(v2, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLRECTIV(v1, v2) \ GLint tmp1[4]; \ GLint tmp2[4]; \ Atari2HostIntArray(4, v1, tmp1); \ Atari2HostIntArray(4, v2, tmp2); \ fn.glRectiv(tmp1, tmp2) #else #define FN_GLRECTIV(v1, v2) \ fn.glRectiv(HostAddr(v1, const GLint *), HostAddr(v2, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLRECTSV(v1, v2) \ GLshort tmp1[4]; \ GLshort tmp2[4]; \ Atari2HostShortArray(4, v1, tmp1); \ Atari2HostShortArray(4, v2, tmp2); \ fn.glRectsv(tmp1, tmp2) #else #define FN_GLRECTSV(v1, v2) \ fn.glRectsv(HostAddr(v1, const GLshort *), HostAddr(v2, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSELECTBUFFER(size, buffer) \ contexts[cur_context].select_buffer_atari = (nfmemptr)buffer; \ free(contexts[cur_context].select_buffer_host); \ contexts[cur_context].select_buffer_host = (GLuint *)calloc(size, sizeof(GLuint)); \ if (!contexts[cur_context].select_buffer_host) { glSetError(GL_OUT_OF_MEMORY); return; } \ contexts[cur_context].select_buffer_size = size; \ fn.glSelectBuffer(size, contexts[cur_context].select_buffer_host) #else #define FN_GLSELECTBUFFER(size, buffer) \ fn.glSelectBuffer(size, HostAddr(buffer, GLuint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLTEXCOORD1DV(v) \ GLdouble tmp[1]; \ Atari2HostDoubleArray(1, v, tmp); \ fn.glTexCoord1dv(tmp) #else #define FN_GLTEXCOORD1DV(v) \ fn.glTexCoord1dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXCOORD1FV(v) \ GLfloat tmp[1]; \ Atari2HostFloatArray(1, v, tmp); \ fn.glTexCoord1fv(tmp) #else #define FN_GLTEXCOORD1FV(v) \ fn.glTexCoord1fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD1IV(v) \ GLint tmp[1]; \ Atari2HostIntArray(1, v, tmp); \ fn.glTexCoord1iv(tmp) #else #define FN_GLTEXCOORD1IV(v) \ fn.glTexCoord1iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD1SV(v) \ GLshort tmp[1]; \ Atari2HostShortArray(1, v, tmp); \ fn.glTexCoord1sv(tmp) #else #define FN_GLTEXCOORD1SV(v) \ fn.glTexCoord1sv(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLTEXCOORD2DV(v) \ GLdouble tmp[2]; \ Atari2HostDoubleArray(2, v, tmp); \ fn.glTexCoord2dv(tmp) #else #define FN_GLTEXCOORD2DV(v) \ fn.glTexCoord2dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXCOORD2FV(v) \ GLfloat tmp[2]; \ Atari2HostFloatArray(2, v, tmp); \ fn.glTexCoord2fv(tmp) #else #define FN_GLTEXCOORD2FV(v) \ fn.glTexCoord2fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD2IV(v) \ GLint tmp[2]; \ Atari2HostIntArray(2, v, tmp); \ fn.glTexCoord2iv(tmp) #else #define FN_GLTEXCOORD2IV(v) \ fn.glTexCoord2iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD2SV(v) \ GLshort tmp[2]; \ Atari2HostShortArray(2, v, tmp); \ fn.glTexCoord2sv(tmp) #else #define FN_GLTEXCOORD2SV(v) \ fn.glTexCoord2sv(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLTEXCOORD3DV(v) \ GLdouble tmp[3]; \ Atari2HostDoubleArray(3, v, tmp); \ fn.glTexCoord3dv(tmp) #else #define FN_GLTEXCOORD3DV(v) \ fn.glTexCoord3dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXCOORD3FV(v) \ GLfloat tmp[3]; \ Atari2HostFloatArray(3, v, tmp); \ fn.glTexCoord3fv(tmp) #else #define FN_GLTEXCOORD3FV(v) \ fn.glTexCoord3fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD3IV(v) \ GLint tmp[3]; \ Atari2HostIntArray(3, v, tmp); \ fn.glTexCoord3iv(tmp) #else #define FN_GLTEXCOORD3IV(v) \ fn.glTexCoord3iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD3SV(v) \ GLshort tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glTexCoord3sv(tmp) #else #define FN_GLTEXCOORD3SV(v) \ fn.glTexCoord3sv(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLTEXCOORD4DV(v) \ GLdouble tmp[4]; \ Atari2HostDoubleArray(4, v, tmp); \ fn.glTexCoord4dv(tmp) #else #define FN_GLTEXCOORD4DV(v) \ fn.glTexCoord4dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXCOORD4FV(v) \ GLfloat tmp[4]; \ Atari2HostFloatArray(4, v, tmp); \ fn.glTexCoord4fv(tmp) #else #define FN_GLTEXCOORD4FV(v) \ fn.glTexCoord4fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD4IV(v) \ GLint tmp[4]; \ Atari2HostIntArray(4, v, tmp); \ fn.glTexCoord4iv(tmp) #else #define FN_GLTEXCOORD4IV(v) \ fn.glTexCoord4iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORD4SV(v) \ GLshort tmp[4]; \ Atari2HostShortArray(4, v, tmp); \ fn.glTexCoord4sv(tmp) #else #define FN_GLTEXCOORD4SV(v) \ fn.glTexCoord4sv(HostAddr(v, const GLshort *)) #endif #define FN_GLTEXCOORDPOINTER(size, type, stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].texcoord, size, type, stride, -1, 0, AtariAddr(pointer, nfmemptr)) #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXENVFV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glTexEnvfv(target, pname, ptmp) #else #define FN_GLTEXENVFV(target, pname, params) \ fn.glTexEnvfv(target, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXENVIV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glTexEnviv(target, pname, ptmp) #else #define FN_GLTEXENVIV(target, pname, params) \ fn.glTexEnviv(target, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLTEXGENDV(coord, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLdouble tmp[MAX(size, 16)]; \ Atari2HostDoubleArray(size, params, tmp); \ fn.glTexGendv(coord, pname, tmp) #else #define FN_GLTEXGENDV(coord, pname, params) \ fn.glTexGendv(coord, pname, HostAddr(params, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXGENFV(coord, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ Atari2HostFloatArray(size, params, tmp); \ fn.glTexGenfv(coord, pname, tmp) #else #define FN_GLTEXGENFV(coord, pname, params) \ fn.glTexGenfv(coord, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXGENIV(coord, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glTexGeniv(coord, pname, tmp) #else #define FN_GLTEXGENIV(coord, pname, params) \ fn.glTexGeniv(coord, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXIMAGE1D(target, level, internalformat, width, border, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, 1, 1, format, type, (nfmemptr)pixels); \ fn.glTexImage1D(target, level, internalformat, width, border, format, type, tmp) #else #define FN_GLTEXIMAGE1D(target, level, internalformat, width, border, format, type, pixels) \ fn.glTexImage1D(target, level, internalformat, width, border, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXIMAGE2D(target, level, internalformat, width, height, border, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, 1, format, type, (nfmemptr)pixels); \ fn.glTexImage2D(target, level, internalformat, width, height, border, format, type, tmp) #else #define FN_GLTEXIMAGE2D(target, level, internalformat, width, height, border, format, type, pixels) \ fn.glTexImage2D(target, level, internalformat, width, height, border, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXSUBIMAGE1D(target, level, xoffset, width, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, 1, 1, format, type, (nfmemptr)pixels); \ fn.glTexSubImage1D(target, level, xoffset, width, format, type, tmp) #else #define FN_GLTEXSUBIMAGE1D(target, level, xoffset, width, format, type, pixels) \ fn.glTexSubImage1D(target, level, xoffset, width, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXSUBIMAGE2D(target, level, xoffset, yoffset, width, height, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, 1, format, type, (nfmemptr)pixels); \ fn.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, tmp) #else #define FN_GLTEXSUBIMAGE2D(target, level, xoffset, yoffset, width, height, format, type, pixels) \ fn.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXPARAMETERFV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glTexParameterfv(target, pname, ptmp) #else #define FN_GLTEXPARAMETERFV(target, pname, params) \ fn.glTexParameterfv(target, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXPARAMETERIV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glTexParameteriv(target, pname, ptmp) #else #define FN_GLTEXPARAMETERIV(target, pname, params) \ fn.glTexParameteriv(target, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEX2DV(v) \ GLint const size = 2; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertex2dv(tmp) #else #define FN_GLVERTEX2DV(v) \ fn.glVertex2dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEX2FV(v) \ GLint const size = 2; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertex2fv(tmp) #else #define FN_GLVERTEX2FV(v) \ fn.glVertex2fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEX2IV(v) \ GLint const size = 2; \ GLint tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glVertex2iv(tmp) #else #define FN_GLVERTEX2IV(v) \ fn.glVertex2iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEX2SV(v) \ GLint const size = 2; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertex2sv(tmp) #else #define FN_GLVERTEX2SV(v) \ fn.glVertex2sv(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEX3DV(v) \ GLint const size = 3; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertex3dv(tmp) #else #define FN_GLVERTEX3DV(v) \ fn.glVertex3dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEX3FV(v) \ GLint const size = 3; \ GLfloat tmp[size]; \ Atari2HostFloatArray(3, v, tmp); \ fn.glVertex3fv(tmp) #else #define FN_GLVERTEX3FV(v) \ fn.glVertex3fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEX3IV(v) \ GLint const size = 3; \ GLint tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glVertex3iv(tmp) #else #define FN_GLVERTEX3IV(v) \ fn.glVertex3iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEX3SV(v) \ GLint const size = 3; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertex3sv(tmp) #else #define FN_GLVERTEX3SV(v) \ fn.glVertex3sv(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEX4DV(v) \ GLint const size = 4; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertex4dv(tmp) #else #define FN_GLVERTEX4DV(v) \ fn.glVertex4dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEX4FV(v) \ GLint const size = 4; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertex4fv(tmp) #else #define FN_GLVERTEX4FV(v) \ fn.glVertex4fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEX4IV(v) \ GLint const size = 4; \ GLint tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glVertex4iv(tmp) #else #define FN_GLVERTEX4IV(v) \ fn.glVertex4iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEX4SV(v) \ GLint const size = 4; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertex4sv(tmp) #else #define FN_GLVERTEX4SV(v) \ fn.glVertex4sv(HostAddr(v, const GLshort *)) #endif #define FN_GLVERTEXPOINTER(size, type, stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].vertex, size, type, stride, -1, 0, AtariAddr(pointer, nfmemptr)) /* -------------------------------------------------------------------------- */ /* * Version 1.2 */ #define FN_GLDRAWRANGEELEMENTS(mode, start, end, count, type, indices) \ void *tmp; \ convertClientArrays(count); \ pixelBuffer buf(*this); \ switch(type) { \ case GL_UNSIGNED_BYTE: \ case GL_UNSIGNED_SHORT: \ case GL_UNSIGNED_INT: \ tmp = buf.convertArray(count, type, (nfmemptr)indices); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ fn.glDrawRangeElements(mode, start, end, count, type, tmp) #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXIMAGE3D(target, level, internalformat, width, height, depth, border, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, depth, format, type, (nfmemptr)pixels); \ fn.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, tmp) #else #define FN_GLTEXIMAGE3D(target, level, internalformat, width, height, depth, border, format, type, pixels) \ fn.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXSUBIMAGE3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, depth, format, type, (nfmemptr)pixels); \ fn.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, tmp) #else #define FN_GLTEXSUBIMAGE3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) \ fn.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLCOLORTABLE(target, internalformat, width, format, type, table) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, 1, 1, format, type, (nfmemptr)table); \ fn.glColorTable(target, internalformat, width, format, type, tmp) #else #define FN_GLCOLORTABLE(target, internalformat, width, format, type, table) \ fn.glColorTable(target, internalformat, width, format, type, HostAddr(table, const void *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLCOLORTABLEPARAMETERFV(target, pname, params) \ GLint const size = 4; \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glColorTableParameterfv(target, pname, ptmp) #else #define FN_GLCOLORTABLEPARAMETERFV(target, pname, params) \ fn.glColorTableParameterfv(target, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLORTABLEPARAMETERIV(target, pname, params) \ GLint const size = 4; \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glColorTableParameteriv(target, pname, ptmp) #else #define FN_GLCOLORTABLEPARAMETERIV(target, pname, params) \ fn.glColorTableParameteriv(target, pname, HostAddr(params, const GLint *)) #endif /* * If a non-zero named buffer object is bound to the GL_PIXEL_PACK_BUFFER * target (see glBindBuffer) while a histogram table is requested, table * is treated as a byte offset into the buffer object's data store. */ #define FN_GLGETCOLORTABLE(target, format, type, table) \ GLint width = 0; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ fn.glGetColorTableParameteriv(target, GL_COLOR_TABLE_WIDTH, &width); \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(table); \ fn.glGetColorTable(target, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(width, 1, 1, format, type)) return; \ } else { \ src = buf.hostBuffer(width, 1, 1, format, type, (nfmemptr)table); \ if (src == NULL) return; \ fn.glGetColorTable(target, format, type, src); \ dst = (nfmemptr)table; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETCOLORTABLEPARAMETERFV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[size]; \ fn.glGetColorTableParameterfv(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETCOLORTABLEPARAMETERFV(target, pname, params) \ fn.glGetColorTableParameterfv(target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETCOLORTABLEPARAMETERIV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[size]; \ fn.glGetColorTableParameteriv(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETCOLORTABLEPARAMETERIV(target, pname, params) \ fn.glGetColorTableParameteriv(target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLCOLORSUBTABLE(target, start, count, format, type, data) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(count, 1, 1, format, type, (nfmemptr)data); \ fn.glColorSubTable(target, start, count, format, type, tmp) #else #define FN_GLCOLORSUBTABLE(target, start, count, format, type, data) \ fn.glColorSubTable(target, start, count, format, type, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLCONVOLUTIONFILTER1D(target, internalformat, width, format, type, image) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, 1, 1, format, type, (nfmemptr)image); \ fn.glConvolutionFilter1D(target, internalformat, width, format, type, tmp) #else #define FN_GLCONVOLUTIONFILTER1D(target, internalformat, width, format, type, image) \ fn.glConvolutionFilter1D(target, internalformat, width, format, type, HostAddr(image, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLCONVOLUTIONFILTER2D(target, internalformat, width, height, format, type, image) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, 1, format, type, (nfmemptr)image); \ fn.glConvolutionFilter2D(target, internalformat, width, height, format, type, tmp) #else #define FN_GLCONVOLUTIONFILTER2D(target, internalformat, width, height, format, type, image) \ fn.glConvolutionFilter2D(target, internalformat, width, height, format, type, HostAddr(image, const void *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLCONVOLUTIONPARAMETERFV(target, pname, params) \ int const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glConvolutionParameterfv(target, pname, ptmp) #else #define FN_GLCONVOLUTIONPARAMETERFV(target, pname, params) \ fn.glConvolutionParameterfv(target, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCONVOLUTIONPARAMETERIV(target, pname, params) \ int const size = nfglGetNumParams(pname); \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glConvolutionParameteriv(target, pname, ptmp) #else #define FN_GLCONVOLUTIONPARAMETERIV(target, pname, params) \ fn.glConvolutionParameteriv(target, pname, HostAddr(params, GLint *)) #endif /* * If a non-zero named buffer object is bound to the GL_PIXEL_PACK_BUFFER * target (see glBindBuffer) while a convolution filter is requested, * image is treated as a byte offset into the buffer object's data store. */ #define FN_GLGETCONVOLUTIONFILTER(target, format, type, image) \ GLint width = 0; \ GLint height = 0; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ fn.glGetConvolutionParameteriv(target, GL_CONVOLUTION_WIDTH, &width); \ fn.glGetConvolutionParameteriv(target, GL_CONVOLUTION_HEIGHT, &height); \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(image); \ fn.glGetConvolutionFilter(target, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(width, height, 1, format, type)) return; \ } else { \ src = buf.hostBuffer(width, height, 1, format, type, (nfmemptr)image); \ if (src == NULL) return; \ fn.glGetConvolutionFilter(target, format, type, src); \ dst = (nfmemptr)image; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETCONVOLUTIONPARAMETERFV(target, pname, params) \ int const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetConvolutionParameterfv(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETCONVOLUTIONPARAMETERFV(target, pname, params) \ fn.glGetConvolutionParameterfv(target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETCONVOLUTIONPARAMETERIV(target, pname, params) \ int const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetConvolutionParameteriv(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETCONVOLUTIONPARAMETERIV(target, pname, params) \ fn.glGetConvolutionParameteriv(target, pname, HostAddr(params, GLint *)) #endif #define FN_GLGETSEPARABLEFILTER(target, format, type, row, column, span) \ GLint width = 0; \ GLint height = 0; \ pixelBuffer rowbuf(*this); \ pixelBuffer colbuf(*this); \ char *srcrow; \ nfmemptr dstrow; \ char *srccol; \ nfmemptr dstcol; \ \ fn.glGetConvolutionParameteriv(target, GL_CONVOLUTION_WIDTH, &width); \ fn.glGetConvolutionParameteriv(target, GL_CONVOLUTION_HEIGHT, &height); \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *rowoffset = NFHost2AtariAddr(row); \ void *coloffset = NFHost2AtariAddr(column); \ fn.glGetSeparableFilter(target, format, type, rowoffset, coloffset, HostAddr(span, void *)); \ srcrow = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)rowoffset; \ srccol = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)coloffset; \ dstrow = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)rowoffset; \ dstcol = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)coloffset; \ if (!rowbuf.params(width, 1, 1, format, type)) return; \ if (!colbuf.params(1, height, 1, format, type)) return; \ } else { \ srcrow = rowbuf.hostBuffer(width, 1, 1, format, type, (nfmemptr)row); \ srccol = colbuf.hostBuffer(1, height, 1, format, type, (nfmemptr)column); \ if (srcrow == NULL || srccol == NULL) return; \ fn.glGetSeparableFilter(target, format, type, srcrow, srccol, HostAddr(span, void *)); \ dstrow = (nfmemptr)row; \ dstcol = (nfmemptr)column; \ } \ rowbuf.convertToAtari(srcrow, dstrow); \ colbuf.convertToAtari(srccol, dstcol) #define FN_GLSEPARABLEFILTER2D(target, internalformat, width, height, format, type, row, column) \ pixelBuffer rowbuf(*this); \ pixelBuffer colbuf(*this); \ void *tmprowbuf; \ void *tmpcolbuf; \ \ if (contexts[cur_context].buffer_bindings.pixel_unpack.id) { \ void *rowoffset = NFHost2AtariAddr(row); \ void *coloffset = NFHost2AtariAddr(column); \ tmprowbuf = rowbuf.convertPixels(width, 1, 1, format, type, contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)rowoffset); \ tmpcolbuf = colbuf.convertPixels(1, height, 1, format, type, contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)coloffset); \ } else { \ tmprowbuf = rowbuf.convertPixels(width, 1, 1, format, type, (nfmemptr)row); \ tmpcolbuf = colbuf.convertPixels(1, height, 1, format, type, (nfmemptr)column); \ } \ fn.glSeparableFilter2D(target, internalformat, width, height, format, type, tmprowbuf, tmpcolbuf) /* * If a non-zero named buffer object is bound to the GL_PIXEL_PACK_BUFFER * target (see glBindBuffer) while a histogram table is requested, table * is treated as a byte offset into the buffer object's data store. */ #define FN_GLGETHISTOGRAM(target, reset, format, type, values) \ GLint width = 0; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ fn.glGetHistogramParameteriv(target, GL_HISTOGRAM_WIDTH, &width); \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(values); \ fn.glGetHistogram(target, reset, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(width, 1, 1, format, type)) return; \ } else { \ src = buf.hostBuffer(width, 1, 1, format, type, (nfmemptr)values); \ if (src == NULL) return; \ fn.glGetHistogram(target, reset, format, type, src); \ dst = (nfmemptr)values; \ } \ buf.convertToAtari(src, dst) /* * If a non-zero named buffer object is bound to the GL_PIXEL_PACK_BUFFER * target (see glBindBuffer) while minimum and maximum pixel values are * requested, values is treated as a byte offset into the buffer object's * data store. */ #define FN_GLGETMINMAX(target, reset, format, type, values) \ GLint const width = 2; \ GLint const height = 4; \ char result[width * height * sizeof(GLdouble)]; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ if (!buf.params(width, height, 1, format, type)) \ return; \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(values); \ fn.glGetMinmax(target, reset, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ } else { \ src = result; \ fn.glGetMinmax(target, reset, format, type, src); \ dst = (nfmemptr)values; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETMINMAXPARAMETERFV(target, pname, params) \ GLint const size = 1; \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetMinmaxParameterfv(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETMINMAXPARAMETERFV(target, pname, params) \ fn.glGetMinmaxParameterfv(target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETMINMAXPARAMETERIV(target, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetMinmaxParameteriv(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETMINMAXPARAMETERIV(target, pname, params) \ fn.glGetMinmaxParameteriv(target, pname, HostAddr(params, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * Version 1.3 */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXIMAGE1D(target, level, internalformat, width, border, imageSize, data) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glCompressedTexImage1D(target, level, internalformat, width, border, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXIMAGE1D(target, level, internalformat, width, border, imageSize, data) \ fn.glCompressedTexImage1D(target, level, internalformat, width, border, imageSize, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXIMAGE2D(target, level, internalformat, width, height, border, imageSize, data) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXIMAGE2D(target, level, internalformat, width, height, border, imageSize, data) \ fn.glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXIMAGE3D(target, level, internalformat, width, height, depth, border, imageSize, data) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXIMAGE3D(target, level, internalformat, width, height, depth, border, imageSize, data) \ fn.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXSUBIMAGE1D(target, level, xoffset, width, format, imageSize, data) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glCompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXSUBIMAGE1D(target, level, xoffset, width, format, imageSize, data) \ fn.glCompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXSUBIMAGE2D(target, level, xoffset, yoffset, width, height, format, imageSize, data) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXSUBIMAGE2D(target, level, xoffset, yoffset, width, height, format, imageSize, data) \ fn.glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXSUBIMAGE3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXSUBIMAGE3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data) \ fn.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETCOMPRESSEDTEXIMAGE(target, level, img) \ GLint bufSize = 0; \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &bufSize); \ GLubyte tmp[bufSize]; \ fn.glGetCompressedTexImage(target, level, tmp); \ Host2AtariByteArray(bufSize, tmp, img) #else #define FN_GLGETCOMPRESSEDTEXIMAGE(target, level, img) \ fn.glGetCompressedTexImage(target, level, HostAddr(img, void *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMULTITEXCOORD1DV(target, v) \ GLdouble tmp[1]; \ Atari2HostDoubleArray(1, v, tmp); \ fn.glMultiTexCoord1dv(target, tmp) #else #define FN_GLMULTITEXCOORD1DV(target, v) \ fn.glMultiTexCoord1dv(target, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTITEXCOORD1FV(target, v) \ GLfloat tmp[1]; \ Atari2HostFloatArray(1, v, tmp); \ fn.glMultiTexCoord1fv(target, tmp) #else #define FN_GLMULTITEXCOORD1FV(target, v) \ fn.glMultiTexCoord1fv(target, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD1IV(target, v) \ GLint tmp[1]; \ Atari2HostIntArray(1, v, tmp); \ fn.glMultiTexCoord1iv(target, tmp) #else #define FN_GLMULTITEXCOORD1IV(target, v) \ fn.glMultiTexCoord1iv(target, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD1SV(target, v) \ GLshort tmp[1]; \ Atari2HostShortArray(1, v, tmp); \ fn.glMultiTexCoord1sv(target, tmp) #else #define FN_GLMULTITEXCOORD1SV(target, v) \ fn.glMultiTexCoord1sv(target, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMULTITEXCOORD2DV(target, v) \ GLdouble tmp[2]; \ Atari2HostDoubleArray(2, v, tmp); \ fn.glMultiTexCoord2dv(target, tmp) #else #define FN_GLMULTITEXCOORD2DV(target, v) \ fn.glMultiTexCoord2dv(target, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTITEXCOORD2FV(target, v) \ GLfloat tmp[2]; \ Atari2HostFloatArray(2, v, tmp); \ fn.glMultiTexCoord2fv(target, tmp) #else #define FN_GLMULTITEXCOORD2FV(target, v) \ fn.glMultiTexCoord2fv(target, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD2IV(target, v) \ GLint tmp[2]; \ Atari2HostIntArray(2, v, tmp); \ fn.glMultiTexCoord2iv(target, tmp) #else #define FN_GLMULTITEXCOORD2IV(target, v) \ fn.glMultiTexCoord2iv(target, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD2SV(target, v) \ GLshort tmp[2]; \ Atari2HostShortArray(2, v, tmp); \ fn.glMultiTexCoord2sv(target, tmp) #else #define FN_GLMULTITEXCOORD2SV(target, v) \ fn.glMultiTexCoord2sv(target, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMULTITEXCOORD3DV(target, v) \ GLdouble tmp[3]; \ Atari2HostDoubleArray(3, v, tmp); \ fn.glMultiTexCoord3dv(target, tmp) #else #define FN_GLMULTITEXCOORD3DV(target, v) \ fn.glMultiTexCoord3dv(target, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTITEXCOORD3FV(target, v) \ GLfloat tmp[3]; \ Atari2HostFloatArray(3, v, tmp); \ fn.glMultiTexCoord3fv(target, tmp) #else #define FN_GLMULTITEXCOORD3FV(target, v) \ fn.glMultiTexCoord3fv(target, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD3IV(target, v) \ GLint tmp[3]; \ Atari2HostIntArray(3, v, tmp); \ fn.glMultiTexCoord3iv(target, tmp) #else #define FN_GLMULTITEXCOORD3IV(target, v) \ fn.glMultiTexCoord3iv(target, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD3SV(target, v) \ GLshort tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glMultiTexCoord3sv(target, tmp) #else #define FN_GLMULTITEXCOORD3SV(target, v) \ fn.glMultiTexCoord3sv(target, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMULTITEXCOORD4DV(target, v) \ GLdouble tmp[4]; \ Atari2HostDoubleArray(4, v, tmp); \ fn.glMultiTexCoord4dv(target, tmp) #else #define FN_GLMULTITEXCOORD4DV(target, v) \ fn.glMultiTexCoord4dv(target, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTITEXCOORD4FV(target, v) \ GLfloat tmp[4]; \ Atari2HostFloatArray(4, v, tmp); \ fn.glMultiTexCoord4fv(target, tmp) #else #define FN_GLMULTITEXCOORD4FV(target, v) \ fn.glMultiTexCoord4fv(target, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD4IV(target, v) \ GLint tmp[4]; \ Atari2HostIntArray(4, v, tmp); \ fn.glMultiTexCoord4iv(target, tmp) #else #define FN_GLMULTITEXCOORD4IV(target, v) \ fn.glMultiTexCoord4iv(target, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORD4SV(target, v) \ int const size = 4; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glMultiTexCoord4sv(target, tmp) #else #define FN_GLMULTITEXCOORD4SV(target, v) \ fn.glMultiTexCoord4sv(target, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLLOADTRANSPOSEMATRIXF(m) \ GLfloat tmp[16]; \ Atari2HostFloatArray(16, m, tmp); \ fn.glLoadTransposeMatrixf(tmp) #else #define FN_GLLOADTRANSPOSEMATRIXF(m) \ fn.glLoadTransposeMatrixf(HostAddr(m, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLLOADTRANSPOSEMATRIXD(m) \ GLdouble tmp[16]; \ Atari2HostDoubleArray(16, m, tmp); \ fn.glLoadTransposeMatrixd(tmp) #else #define FN_GLLOADTRANSPOSEMATRIXD(m) \ fn.glLoadTransposeMatrixd(HostAddr(m, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLMULTTRANSPOSEMATRIXD(m) \ GLdouble tmp[16]; \ Atari2HostDoubleArray(16, m, tmp); \ fn.glMultTransposeMatrixd(tmp) #else #define FN_GLMULTTRANSPOSEMATRIXD(m) \ fn.glMultTransposeMatrixd(HostAddr(m, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLMULTTRANSPOSEMATRIXF(m) \ GLfloat tmp[16]; \ Atari2HostFloatArray(16, m, tmp); \ fn.glMultTransposeMatrixf(tmp) #else #define FN_GLMULTTRANSPOSEMATRIXF(m) \ fn.glMultTransposeMatrixf(HostAddr(m, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * Version 1.4 */ #define FN_GLMULTIDRAWARRAYS(mode, first, count, drawcount) \ GLsizei const size = drawcount; \ if (size <= 0) return; \ GLsizei firstbuf[size]; \ GLsizei countbuf[size]; \ Atari2HostIntArray(size, first, firstbuf); \ Atari2HostIntArray(size, count, countbuf); \ for (GLsizei i = 0; i < size; i++) \ convertClientArrays(firstbuf[i] + countbuf[i]); \ fn.glMultiDrawArrays(mode, firstbuf, countbuf, drawcount) #define FN_GLMULTIDRAWELEMENTS(mode, count, type, indices, drawcount) \ GLsizei const size = drawcount; \ if (size <= 0) return; \ GLsizei countbuf[size]; \ nfmemptr indbuf[size]; \ void *indptr[size]; \ pixelBuffer **pbuf; \ Atari2HostIntArray(size, count, countbuf); \ pbuf = new pixelBuffer *[size]; \ Atari2HostPtrArray(size, AtariAddr(indices, const void **), indbuf); \ for (GLsizei i = 0; i < size; i++) { \ convertClientArrays(countbuf[i]); \ switch(type) { \ case GL_UNSIGNED_BYTE: \ case GL_UNSIGNED_SHORT: \ case GL_UNSIGNED_INT: \ pbuf[i] = new pixelBuffer(); \ indptr[i] = pbuf[i]->convertArray(countbuf[i], type, indbuf[i]); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ } \ fn.glMultiDrawElements(mode, countbuf, type, indptr, drawcount); \ for (GLsizei i = 0; i < size; i++) { \ delete pbuf[i]; \ } \ delete [] pbuf #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPOINTPARAMETERFV(pname, params) \ GLfloat tmp[1]; \ Atari2HostFloatArray(1, params, tmp); \ fn.glPointParameterfv(pname, tmp) #else #define FN_GLPOINTPARAMETERFV(pname, params) \ fn.glPointParameterfv(pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPOINTPARAMETERIV(pname, params) \ GLint tmp[1]; \ Atari2HostIntArray(1, params, tmp); \ fn.glPointParameteriv(pname, tmp) #else #define FN_GLPOINTPARAMETERIV(pname, params) \ fn.glPointParameteriv(pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLFOGCOORDFV(coord) \ GLfloat tmp[1]; \ Atari2HostFloatArray(1, coord, tmp); \ fn.glFogCoordfv(tmp) #else #define FN_GLFOGCOORDFV(coord) \ fn.glFogCoordfv(HostAddr(coord, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLFOGCOORDDV(coord) \ GLdouble tmp[1]; \ Atari2HostDoubleArray(1, coord, tmp); \ fn.glFogCoorddv(tmp) #else #define FN_GLFOGCOORDDV(coord) \ fn.glFogCoorddv(HostAddr(coord, const GLdouble *)) #endif #define FN_GLFOGCOORDPOINTER(type, stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].fogcoord, 1, type, stride, -1, 0, AtariAddr(pointer, nfmemptr)) #if NFOSMESA_NEED_BYTE_CONV #define FN_GLSECONDARYCOLOR3BV(v) \ GLbyte tmp[3]; \ Atari2HostByteArray(3, v, tmp); \ fn.glSecondaryColor3bv(tmp) #else #define FN_GLSECONDARYCOLOR3BV(v) \ fn.glSecondaryColor3bv(HostAddr(v, const GLbyte *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLSECONDARYCOLOR3DV(v) \ GLdouble tmp[3]; \ Atari2HostDoubleArray(3, v, tmp); \ fn.glSecondaryColor3dv(tmp) #else #define FN_GLSECONDARYCOLOR3DV(v) \ fn.glSecondaryColor3dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLSECONDARYCOLOR3FV(v) \ GLfloat tmp[3]; \ Atari2HostFloatArray(3, v, tmp); \ fn.glSecondaryColor3fv(tmp) #else #define FN_GLSECONDARYCOLOR3FV(v) \ fn.glSecondaryColor3fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSECONDARYCOLOR3IV(v) \ GLint tmp[3]; \ Atari2HostIntArray(3, v, tmp); \ fn.glSecondaryColor3iv(tmp) #else #define FN_GLSECONDARYCOLOR3IV(v) \ fn.glSecondaryColor3iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSECONDARYCOLOR3SV(v) \ GLshort tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glSecondaryColor3sv(tmp) #else #define FN_GLSECONDARYCOLOR3SV(v) \ fn.glSecondaryColor3sv(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLSECONDARYCOLOR3UBV(v) \ GLubyte tmp[3]; \ Atari2HostByteArray(3, v, tmp); \ fn.glSecondaryColor3ubv(tmp) #else #define FN_GLSECONDARYCOLOR3UBV(v) \ fn.glSecondaryColor3ubv(HostAddr(v, const GLubyte *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSECONDARYCOLOR3UIV(v) \ GLuint tmp[3]; \ Atari2HostIntArray(3, v, tmp); \ fn.glSecondaryColor3uiv(tmp) #else #define FN_GLSECONDARYCOLOR3UIV(v) \ fn.glSecondaryColor3uiv(HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSECONDARYCOLOR3USV(v) \ GLushort tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glSecondaryColor3usv(tmp) #else #define FN_GLSECONDARYCOLOR3USV(v) \ fn.glSecondaryColor3usv(HostAddr(v, const GLushort *)) #endif #define FN_GLSECONDARYCOLORPOINTER(size, type, stride, pointer) \ GLint texunit = 0; \ fn.glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &texunit); \ setupClientArray(texunit, contexts[cur_context].secondary_color, size, type, stride, -1, 0, AtariAddr(pointer, nfmemptr)) #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLWINDOWPOS2DV(v) \ GLdouble tmp[2]; \ Atari2HostDoubleArray(2, v, tmp); \ fn.glWindowPos2dv(tmp) #else #define FN_GLWINDOWPOS2DV(v) \ fn.glWindowPos2dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLWINDOWPOS2FV(v) \ GLfloat tmp[2]; \ Atari2HostFloatArray(2, v, tmp); \ fn.glWindowPos2fv(tmp) #else #define FN_GLWINDOWPOS2FV(v) \ fn.glWindowPos2fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWINDOWPOS2IV(v) \ GLint tmp[2]; \ Atari2HostIntArray(2, v, tmp); \ fn.glWindowPos2iv(tmp) #else #define FN_GLWINDOWPOS2IV(v) \ fn.glWindowPos2iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWINDOWPOS2SV(v) \ GLshort tmp[2]; \ Atari2HostShortArray(2, v, tmp); \ fn.glWindowPos2sv(tmp) #else #define FN_GLWINDOWPOS2SV(v) \ fn.glWindowPos2sv(HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLWINDOWPOS3DV(v) \ GLdouble tmp[3]; \ Atari2HostDoubleArray(3, v, tmp); \ fn.glWindowPos3dv(tmp) #else #define FN_GLWINDOWPOS3DV(v) \ fn.glWindowPos3dv(HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLWINDOWPOS3FV(v) \ GLfloat tmp[3]; \ Atari2HostFloatArray(3, v, tmp); \ fn.glWindowPos3fv(tmp) #else #define FN_GLWINDOWPOS3FV(v) \ fn.glWindowPos3fv(HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWINDOWPOS3IV(v) \ GLint tmp[3]; \ Atari2HostIntArray(3, v, tmp); \ fn.glWindowPos3iv(tmp) #else #define FN_GLWINDOWPOS3IV(v) \ fn.glWindowPos3iv(HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLWINDOWPOS3SV(v) \ GLshort tmp[3]; \ Atari2HostShortArray(3, v, tmp); \ fn.glWindowPos3sv(tmp) #else #define FN_GLWINDOWPOS3SV(v) \ fn.glWindowPos3sv(HostAddr(v, const GLshort *)) #endif /* -------------------------------------------------------------------------- */ /* * Version 1.5 */ #define FN_GLBINDBUFFER(target, buffer) \ gl_bind_buffer(target, buffer, 0, 0); \ fn.glBindBuffer(target, buffer) #if NFOSMESA_NEED_INT_CONV #define FN_GLGENQUERIES(n, ids) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenQueries(n, tmp); \ Host2AtariIntArray(n, tmp, ids) #else #define FN_GLGENQUERIES(n, ids) \ fn.glGenQueries(n, HostAddr(ids, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETEQUERIES(n, ids) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, ids, tmp); \ fn.glDeleteQueries(n, ptmp) #else #define FN_GLDELETEQUERIES(n, ids) \ fn.glDeleteQueries(n, HostAddr(ids, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETEBUFFERS(n, buffers) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, buffers, tmp); \ fn.glDeleteBuffers(n, ptmp) #else #define FN_GLDELETEBUFFERS(n, buffers) \ fn.glDeleteBuffers(n, HostAddr(buffers, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENBUFFERS(n, buffers) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenBuffers(n, tmp); \ Host2AtariIntArray(n, tmp, buffers) #else #define FN_GLGENBUFFERS(n, buffers) \ fn.glGenBuffers(n, HostAddr(buffers, GLuint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLBUFFERDATA(target, size, data, usage) \ GLubyte tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glBufferData(target, size, ptmp, usage) #else #define FN_GLBUFFERDATA(target, size, data, usage) \ fn.glBufferData(target, size, HostAddr(data, const void *), usage) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLBUFFERSUBDATA(target, offset, size, data) \ GLubyte tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glBufferSubData(target, offset, size, ptmp) #else #define FN_GLBUFFERSUBDATA(target, offset, size, data) \ fn.glBufferSubData(target, offset, size, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETBUFFERPARAMETERIV(target, pname, params) \ GLint tmp[4]; \ int const size = nfglGetNumParams(pname); \ fn.glGetBufferParameteriv(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETBUFFERPARAMETERIV(target, pname, params) \ fn.glGetBufferParameteriv(target, pname, HostAddr(params, GLint *)) #endif #define FN_GLGETBUFFERPOINTERV(target, pname, params) \ void *tmp = NULL; \ fn.glGetBufferPointerv(target, pname, &tmp); \ /* TODO */ \ memptr zero = 0; \ Host2AtariIntArray(1, &zero, AtariAddr(params, memptr *)) #if NFOSMESA_NEED_INT_CONV #define FN_GLGETQUERYIV(target, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetQueryiv(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETQUERYIV(target, pname, params) \ fn.glGetQueryiv(target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETQUERYOBJECTIV(id, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetQueryObjectiv(id, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETQUERYOBJECTIV(id, pname, params) \ fn.glGetQueryObjectiv(id, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETQUERYOBJECTUIV(id, pname, params) \ GLint const size = 1; \ GLuint tmp[size]; \ fn.glGetQueryObjectuiv(id, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETQUERYOBJECTUIV(id, pname, params) \ fn.glGetQueryObjectuiv(id, pname, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETHISTOGRAMPARAMETERFV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetHistogramParameterfv(target, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETHISTOGRAMPARAMETERFV(target, pname, params) \ fn.glGetHistogramParameterfv(target, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETHISTOGRAMPARAMETERIV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetHistogramParameteriv(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETHISTOGRAMPARAMETERIV(target, pname, params) \ fn.glGetHistogramParameteriv(target, pname, HostAddr(params, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * Version 2.0 */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLBINDATTRIBLOCATION(program, index, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ fn.glBindAttribLocation(program, index, ptmp) #else #define FN_GLBINDATTRIBLOCATION(program, index, name) \ fn.glBindAttribLocation(program, index, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDRAWBUFFERS(n, bufs) \ GLenum tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, bufs, tmp); \ fn.glDrawBuffers(n, ptmp) #else #define FN_GLDRAWBUFFERS(n, bufs) \ fn.glDrawBuffers(n, HostAddr(bufs, const GLuint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETACTIVEATTRIB(program, index, bufSize, length, size, type, name) \ GLsizei l; \ GLint s; \ GLenum t; \ GLchar tmp[MAX(bufSize, 0)]; \ fn.glGetActiveAttrib(program, index, bufSize, &l, &s, &t, tmp); \ Host2AtariByteArray(MIN(l + 1, bufSize), tmp, name); \ Host2AtariIntArray(1, &l, length); \ Host2AtariIntArray(1, &s, size); \ Host2AtariIntArray(1, &t, type) #else #define FN_GLGETACTIVEATTRIB(program, index, bufSize, length, size, type, name) \ fn.glGetActiveAttrib(program, index, bufSize, HostAddr(length, GLsizei *), HostAddr(size, GLint *), HostAddr(type, GLenum *), HostAddr(name, GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETACTIVEUNIFORM(program, index, bufSize, length, size, type, name) \ GLsizei l; \ GLint s; \ GLenum t; \ GLchar namebuf[MAX(bufSize, 0)]; \ fn.glGetActiveUniform(program, index, bufSize, &l, &s, &t, namebuf); \ Host2AtariByteArray(MIN(l + 1, bufSize), namebuf, name); \ Host2AtariIntArray(1, &l, length); \ Host2AtariIntArray(1, &s, size); \ Host2AtariIntArray(1, &t, type) #else #define FN_GLGETACTIVEUNIFORM(program, index, bufSize, length, size, type, name) \ fn.glGetActiveUniform(program, index, bufSize, HostAddr(length, GLsizei *), HostAddr(size, GLint *), HostAddr(type, GLenum *), HostAddr(name, GLchar *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETATTACHEDSHADERS(program, maxCount, count, obj) \ GLsizei size = 0; \ GLuint tmp[MAX(maxCount, 0)]; \ fn.glGetAttachedShaders(program, maxCount, &size, tmp); \ Host2AtariIntArray(1, &size, count); \ Host2AtariIntArray(size, tmp, obj) #else #define FN_GLGETATTACHEDSHADERS(program, maxCount, count, obj) \ fn.glGetAttachedShaders(program, maxCount, HostAddr(count, GLsizei *), HostAddr(obj, GLuint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETATTRIBLOCATION(program, name) \ GLchar namebuf[safe_strlen(name) + 1], *pname ; \ pname = Atari2HostByteArray(sizeof(namebuf), name, namebuf); \ return fn.glGetAttribLocation(program, pname) #else #define FN_GLGETATTRIBLOCATION(program, name) \ return fn.glGetAttribLocation(program, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLUNIFORM1FV(location, count, value) \ GLint const size = 1 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glUniform1fv(location, count, tmp) #else #define FN_GLUNIFORM1FV(location, count, value) \ fn.glUniform1fv(location, count, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLUNIFORM2FV(location, count, value) \ GLint const size = 2 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glUniform2fv(location, count, tmp) #else #define FN_GLUNIFORM2FV(location, count, value) \ fn.glUniform2fv(location, count, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLUNIFORM3FV(location, count, value) \ GLint const size = 3 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glUniform3fv(location, count, tmp) #else #define FN_GLUNIFORM3FV(location, count, value) \ fn.glUniform3fv(location, count, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLUNIFORM4FV(location, count, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glUniform4fv(location, count, tmp) #else #define FN_GLUNIFORM4FV(location, count, value) \ fn.glUniform4fv(location, count, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORM1IV(location, count, value) \ GLint const size = 1 * count; \ if (size <= 0) return; \ GLint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glUniform1iv(location, count, tmp) #else #define FN_GLUNIFORM1IV(location, count, value) \ fn.glUniform1iv(location, count, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORM2IV(location, count, value) \ GLint const size = 2 * count; \ if (size <= 0) return; \ GLint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glUniform2iv(location, count, tmp) #else #define FN_GLUNIFORM2IV(location, count, value) \ fn.glUniform2iv(location, count, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORM3IV(location, count, value) \ GLint const size = 3 * count; \ if (size <= 0) return; \ GLint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glUniform3iv(location, count, tmp) #else #define FN_GLUNIFORM3IV(location, count, value) \ fn.glUniform3iv(location, count, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORM4IV(location, count, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glUniform4iv(location, count, tmp) #else #define FN_GLUNIFORM4IV(location, count, value) \ fn.glUniform4iv(location, count, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIB1DV(index, v) \ GLint const size = 1; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttrib1dv(index, tmp) #else #define FN_GLVERTEXATTRIB1DV(index, v) \ fn.glVertexAttrib1dv(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIB1FV(index, v) \ GLint const size = 1; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttrib1fv(index, tmp) #else #define FN_GLVERTEXATTRIB1FV(index, v) \ fn.glVertexAttrib1fv(index, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB1SV(index, v) \ GLint const size = 1; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib1sv(index, tmp) #else #define FN_GLVERTEXATTRIB1SV(index, v) \ fn.glVertexAttrib1sv(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIB2DV(index, v) \ GLint const size = 2; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttrib2dv(index, tmp) #else #define FN_GLVERTEXATTRIB2DV(index, v) \ fn.glVertexAttrib2dv(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIB2FV(index, v) \ GLint const size = 2; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttrib2fv(index, tmp) #else #define FN_GLVERTEXATTRIB2FV(index, v) \ fn.glVertexAttrib2fv(index, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB2SV(index, v) \ GLint const size = 2; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib2sv(index, tmp) #else #define FN_GLVERTEXATTRIB2SV(index, v) \ fn.glVertexAttrib2sv(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIB3DV(index, v) \ GLint const size = 3; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttrib3dv(index, tmp) #else #define FN_GLVERTEXATTRIB3DV(index, v) \ fn.glVertexAttrib3dv(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIB3FV(index, v) \ GLint const size = 3; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttrib3fv(index, tmp) #else #define FN_GLVERTEXATTRIB3FV(index, v) \ fn.glVertexAttrib3fv(index, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB3SV(index, v) \ GLint const size = 3; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib3sv(index, tmp) #else #define FN_GLVERTEXATTRIB3SV(index, v) \ fn.glVertexAttrib3sv(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEXATTRIB4NBV(index, v) \ GLint const size = 4; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, v, tmp); \ fn.glVertexAttrib4Nbv(index, ptmp) #else #define FN_GLVERTEXATTRIB4NBV(index, v) \ fn.glVertexAttrib4Nbv(index, HostAddr(v, const GLbyte *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4NIV(index, v) \ GLint const size = 4; \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttrib4Niv(index, ptmp) #else #define FN_GLVERTEXATTRIB4NIV(index, v) \ fn.glVertexAttrib4Niv(index, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4NSV(index, v) \ GLint const size = 4; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib4Nsv(index, tmp) #else #define FN_GLVERTEXATTRIB4NSV(index, v) \ fn.glVertexAttrib4Nsv(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4NUIV(index, v) \ GLint const size = 4; \ GLuint tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttrib4Nuiv(index, tmp) #else #define FN_GLVERTEXATTRIB4NUIV(index, v) \ fn.glVertexAttrib4Nuiv(index, HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4NUSV(index, v) \ GLint const size = 4; \ GLushort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib4Nusv(index, tmp) #else #define FN_GLVERTEXATTRIB4NUSV(index, v) \ fn.glVertexAttrib4Nusv(index, HostAddr(v, const GLushort *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEXATTRIB4BV(index, v) \ GLint const size = 4; \ GLbyte tmp[size]; \ Atari2HostByteArray(size, v, tmp); \ fn.glVertexAttrib4bv(index, tmp) #else #define FN_GLVERTEXATTRIB4BV(index, v) \ fn.glVertexAttrib4bv(index, HostAddr(v, const GLbyte *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEXATTRIB4UBV(index, v) \ GLint const size = 4; \ GLubyte tmp[size]; \ Atari2HostByteArray(size, v, tmp); \ fn.glVertexAttrib4ubv(index, tmp) #else #define FN_GLVERTEXATTRIB4UBV(index, v) \ fn.glVertexAttrib4ubv(index, HostAddr(v, const GLubyte *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIB4DV(index, v) \ GLint const size = 4; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttrib4dv(index, tmp) #else #define FN_GLVERTEXATTRIB4DV(index, v) \ fn.glVertexAttrib4dv(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVERTEXATTRIB4FV(index, v) \ GLint const size = 4; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, v, tmp); \ fn.glVertexAttrib4fv(index, tmp) #else #define FN_GLVERTEXATTRIB4FV(index, v) \ fn.glVertexAttrib4fv(index, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4IV(index, v) \ GLint const size = 4; \ GLint tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttrib4iv(index, tmp) #else #define FN_GLVERTEXATTRIB4IV(index, v) \ fn.glVertexAttrib4iv(index, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4SV(index, v) \ GLint const size = 4; \ GLshort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib4sv(index, tmp) #else #define FN_GLVERTEXATTRIB4SV(index, v) \ fn.glVertexAttrib4sv(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4UIV(index, v) \ GLint const size = 4; \ GLuint tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttrib4uiv(index, tmp) #else #define FN_GLVERTEXATTRIB4UIV(index, v) \ fn.glVertexAttrib4uiv(index, HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIB4USV(index, v) \ GLint const size = 4; \ GLushort tmp[size]; \ Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttrib4usv(index, tmp) #else #define FN_GLVERTEXATTRIB4USV(index, v) \ fn.glVertexAttrib4usv(index, HostAddr(v, const GLushort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMIV(target, index, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetProgramiv(target, index, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETPROGRAMIV(target, index, params) \ fn.glGetProgramiv(target, index, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMINFOLOG(program, bufSize, length, infoLog) \ GLint l = 0; \ GLchar logbuf[MAX(bufSize, 0)]; \ fn.glGetProgramInfoLog(program, bufSize, &l, logbuf); \ Host2AtariByteArray(MIN(l + 1, bufSize), logbuf, infoLog); \ Host2AtariIntArray(1, &l, length) #else #define FN_GLGETPROGRAMINFOLOG(program, bufSize, length, infoLog) \ fn.glGetProgramInfoLog(program, bufSize, HostAddr(length, GLsizei *), HostAddr(infoLog, GLchar *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETSHADERIV(shader, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetShaderiv(shader, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETSHADERIV(shader, pname, params) \ fn.glGetShaderiv(shader, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETSHADERINFOLOG(program, bufSize, length, infoLog) \ GLint l = 0; \ GLchar infobuf[MAX(bufSize, 0)]; \ fn.glGetShaderInfoLog(program, bufSize, &l, infobuf); \ Host2AtariByteArray(MIN(l + 1, bufSize), infobuf, infoLog); \ Host2AtariIntArray(1, &l, length) #else #define FN_GLGETSHADERINFOLOG(program, bufSize, length, infoLog) \ fn.glGetShaderInfoLog(program, bufSize, HostAddr(length, GLint *), HostAddr(infoLog, GLchar *)) #endif #define FN_GLSHADERSOURCE(shader, count, strings, length) \ void *pstrings[MAX(count, 0)], **ppstrings; \ GLint lengthbuf[MAX(count, 0)], *plength; \ ppstrings = Atari2HostPtrArray(count, strings, pstrings); \ plength = Atari2HostIntArray(count, length, lengthbuf); \ fn.glShaderSource(shader, count, (const GLchar **)ppstrings, plength) #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETSHADERSOURCE(program, maxLength, length, source) \ GLsizei l = 0; \ GLchar srcbuf[MAX(maxLength, 0)]; \ fn.glGetShaderSource(program, maxLength, &l, srcbuf); \ Host2AtariByteArray(MIN(l + 1, maxLength), srcbuf, source); \ Host2AtariIntArray(1, &l, length) #else #define FN_GLGETSHADERSOURCE(program, maxLength, length, source) \ fn.glGetShaderSource(program, maxLength, HostAddr(length, GLsizei *), HostAddr(source, GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETUNIFORMLOCATION(program, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ return fn.glGetUniformLocation(program, ptmp) #else #define FN_GLGETUNIFORMLOCATION(program, nama) \ return fn.glGetUniformLocation(program, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETUNIFORMFV(program, location, params) \ GLint const size = 1; \ GLfloat tmp[size]; \ fn.glGetUniformfv(program, location, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETUNIFORMFV(program, location, params) \ fn.glGetUniformfv(program, location, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETUNIFORMIV(program, location, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetUniformiv(program, location, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETUNIFORMIV(program, location, params) \ fn.glGetUniformiv(program, location, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETVERTEXATTRIBDV(index, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLdouble tmp[size]; \ fn.glGetVertexAttribdv(index, pname, tmp); \ Host2AtariDoubleArray(size, tmp, params) #else #define FN_GLGETVERTEXATTRIBDV(index, pname, params) \ fn.glGetVertexAttribdv(index, pname, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETVERTEXATTRIBFV(index, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLfloat tmp[size]; \ fn.glGetVertexAttribfv(index, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETVERTEXATTRIBFV(index, pname, params) \ fn.glGetVertexAttribfv(index, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXATTRIBIV(index, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[size]; \ fn.glGetVertexAttribiv(index, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETVERTEXATTRIBIV(index, pname, params) \ fn.glGetVertexAttribiv(index, pname, HostAddr(params, GLint *)) #endif /* TODO */ #define FN_GLGETVERTEXATTRIBPOINTERV(index, pname, pointer) \ UNUSED(pointer); \ void *p = 0; \ fn.glGetVertexAttribPointerv(index, pname, &p) /* TODO */ #define FN_GLVERTEXATTRIBPOINTER(index, size, type, normalized, stride, pointer) \ UNUSED(pointer); \ void *p = 0; \ fn.glVertexAttribPointer(index, size, type, normalized, stride, &p) #if NFOSMESA_NEED_INT_CONV #define FN_GLREQUESTRESIDENTPROGRAMSNV(n, programs) \ GLint const size = n; \ if (size <= 0 || !programs) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, programs, tmp); \ fn.glRequestResidentProgramsNV(n, tmp) #else #define FN_GLREQUESTRESIDENTPROGRAMSNV(n, programs) \ fn.glRequestResidentProgramsNV(n, HostAddr(programs, const GLuint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLUNIFORMMATRIX2FV(location, count, transpose, value) \ GLint const size = 4 * count; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glUniformMatrix2fv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX2FV(location, count, transpose, value) \ fn.glUniformMatrix2fv(location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLUNIFORMMATRIX3FV(location, count, transpose, value) \ GLint const size = 9 * count; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glUniformMatrix3fv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX3FV(location, count, transpose, value) \ fn.glUniformMatrix3fv(location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLUNIFORMMATRIX4FV(location, count, transpose, value) \ GLint const size = 16 * count; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glUniformMatrix4fv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX4FV(location, count, transpose, value) \ fn.glUniformMatrix4fv(location, count, transpose, HostAddr(value, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * Version 2.1 */ #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLUNIFORMMATRIX2X3FV(location, count, transpose, value) \ GLint const size = 6 * count; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glUniformMatrix2x3fv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX2X3FV(location, count, transpose, value) \ fn.glUniformMatrix2x3fv(location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLUNIFORMMATRIX3X2FV(location, count, transpose, value) \ GLint const size = 6 * count; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glUniformMatrix3x2fv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX3X2FV(location, count, transpose, value) \ fn.glUniformMatrix3x2fv(location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLUNIFORMMATRIX2X4FV(location, count, transpose, value) \ GLint const size = 8 * count; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glUniformMatrix2x4fv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX2X4FV(location, count, transpose, value) \ fn.glUniformMatrix2x4fv(location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLUNIFORMMATRIX4X2FV(location, count, transpose, value) \ GLint const size = 8 * count; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glUniformMatrix4x2fv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX4X2FV(location, count, transpose, value) \ fn.glUniformMatrix4x2fv(location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLUNIFORMMATRIX3X4FV(location, count, transpose, value) \ GLint const size = 12 * count; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glUniformMatrix3x4fv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX3X4FV(location, count, transpose, value) \ fn.glUniformMatrix3x4fv(location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLUNIFORMMATRIX4X3FV(location, count, transpose, value) \ GLint const size = 12 * count; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glUniformMatrix4x3fv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX4X3FV(location, count, transpose, value) \ fn.glUniformMatrix4x3fv(location, count, transpose, HostAddr(value, const GLfloat *)) #endif /* -------------------------------------------------------------------------- */ /* * Version 3.0 */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLBINDFRAGDATALOCATION(program, color, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ fn.glBindFragDataLocation(program, color, ptmp) #else #define FN_GLBINDFRAGDATALOCATION(program, color, name) \ fn.glBindFragDataLocation(program, color, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETFRAGDATAINDEX(program, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ return fn.glGetFragDataIndex(program, ptmp) #else #define FN_GLGETFRAGDATAINDEX(program, name) \ return fn.glGetFragDataIndex(program, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETFRAGDATALOCATION(program, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ return fn.glGetFragDataLocation(program, ptmp) #else #define FN_GLGETFRAGDATALOCATION(program, name) \ return fn.glGetFragDataLocation(program, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETBOOLEANI_V(target, index, data) \ GLint const size = nfglGetNumParams(target); \ GLboolean tmp[MAX(size, 16)]; \ fn.glGetBooleani_v(target, index, tmp); \ Host2AtariByteArray(size, tmp, data) #else #define FN_GLGETBOOLEANI_V(target, index, data) \ fn.glGetBooleani_v(target, index, HostAddr(data, GLboolean *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETINTEGERI_V(target, index, data) \ int const n = nfglGetNumParams(target); \ GLint tmp[MAX(n, 16)]; \ fn.glGetIntegeri_v(target, index, tmp); \ Host2AtariIntArray(n, tmp, data) #else #define FN_GLGETINTEGERI_V(target, index, data) \ fn.glGetIntegeri_v(target, index, HostAddr(data, GLint *)) #endif #define FN_GLBINDBUFFERRANGE(target, index, buffer, offset, size) \ gl_bind_buffer(target, buffer, 0, 0); \ fn.glBindBufferRange(target, index, buffer, offset, size) #define FN_GLBINDBUFFERBASE(target, index, buffer) \ gl_bind_buffer(target, buffer, 0, 0); \ fn.glBindBufferBase(target, index, buffer) #define FN_GLTRANSFORMFEEDBACKVARYINGS(program, count, strings, bufferMode) \ void *pstrings[MAX(count, 0)], **ppstrings; \ ppstrings = Atari2HostPtrArray(count, strings, pstrings); \ fn.glTransformFeedbackVaryings(program, count, (const GLchar *const *)ppstrings, bufferMode) #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETTRANSFORMFEEDBACKVARYING(program, index, bufSize, length, size, type, name) \ GLsizei l = 0; \ GLsizei s = 0; \ GLenum t = 0; \ GLchar namebuf[MAX(bufSize, 0)]; \ fn.glGetTransformFeedbackVarying(program, index, bufSize, &l, &s, &t, namebuf); \ Host2AtariByteArray(MIN(l + 1, bufSize), namebuf, name); \ Host2AtariIntArray(1, &l, length); \ Host2AtariIntArray(1, &s, size); \ Host2AtariIntArray(1, &t, type) #else #define FN_GLGETTRANSFORMFEEDBACKVARYING(program, index, bufSize, length, size, type, name) \ fn.glGetTransformFeedbackVarying(program, index, bufSize, HostAddr(length, GLsizei *), HostAddr(size, GLsizei *), HostAddr(type, GLenum *), HostAddr(name, GLchar *)) #endif /* TODO */ #define FN_GLVERTEXATTRIBIPOINTER(index, size, type, stride, pointer) \ fn.glVertexAttribIPointer(index, size, type, stride, HostAddr(pointer, const void *)) #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXATTRIBIIV(index, pname, params) \ int const n = nfglGetNumParams(pname); \ GLint tmp[MAX(n, 16)]; \ fn.glGetVertexAttribIiv(index, pname, tmp); \ Host2AtariIntArray(n, tmp, params) #else #define FN_GLGETVERTEXATTRIBIIV(index, pname, params) \ fn.glGetVertexAttribIiv(index, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXATTRIBIUIV(index, pname, params) \ int const n = nfglGetNumParams(pname); \ GLuint tmp[MAX(n, 16)]; \ fn.glGetVertexAttribIuiv(index, pname, tmp); \ Host2AtariIntArray(n, tmp, params) #else #define FN_GLGETVERTEXATTRIBIUIV(index, pname, params) \ fn.glGetVertexAttribIuiv(index, pname, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI1IV(index, v) \ int const size = 1; \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI1iv(index, ptmp) #else #define FN_GLVERTEXATTRIBI1IV(index, v) \ fn.glVertexAttribI1iv(index, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI2IV(index, v) \ int const size = 2; \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI2iv(index, ptmp) #else #define FN_GLVERTEXATTRIBI2IV(index, v) \ fn.glVertexAttribI2iv(index, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI3IV(index, v) \ int const size = 3; \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI3iv(index, ptmp) #else #define FN_GLVERTEXATTRIBI3IV(index, v) \ fn.glVertexAttribI3iv(index, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI4IV(index, v) \ int const size = 4; \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI4iv(index, ptmp) #else #define FN_GLVERTEXATTRIBI4IV(index, v) \ fn.glVertexAttribI4iv(index, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI1UIV(index, v) \ int const size = 1; \ GLuint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI1uiv(index, ptmp) #else #define FN_GLVERTEXATTRIBI1UIV(index, v) \ fn.glVertexAttribI1uiv(index, HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI2UIV(index, v) \ int const size = 2; \ GLuint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI2uiv(index, ptmp) #else #define FN_GLVERTEXATTRIBI2UIV(index, v) \ fn.glVertexAttribI2uiv(index, HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI3UIV(index, v) \ int const size = 3; \ GLuint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI3uiv(index, ptmp) #else #define FN_GLVERTEXATTRIBI3UIV(index, v) \ fn.glVertexAttribI3uiv(index, HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI4UIV(index, v) \ int const size = 4; \ GLuint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, v, tmp); \ fn.glVertexAttribI4uiv(index, ptmp) #else #define FN_GLVERTEXATTRIBI4UIV(index, v) \ fn.glVertexAttribI4uiv(index, HostAddr(v, const GLuint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEXATTRIBI4BV(index, v) \ int const size = 4; \ GLbyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, v, tmp); \ fn.glVertexAttribI4bv(index, ptmp) #else #define FN_GLVERTEXATTRIBI4BV(index, v) \ fn.glVertexAttribI4bv(index, HostAddr(v, const GLbyte *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI4SV(index, v) \ int const size = 4; \ GLshort tmp[size], *ptmp; \ ptmp = Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttribI4sv(index, ptmp) #else #define FN_GLVERTEXATTRIBI4SV(index, v) \ fn.glVertexAttribI4sv(index, HostAddr(v, const GLshort *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLVERTEXATTRIBI4UBV(index, v) \ int const size = 4; \ GLubyte tmp[size], *ptmp; \ ptmp = Atari2HostByteArray(size, v, tmp); \ fn.glVertexAttribI4ubv(index, ptmp) #else #define FN_GLVERTEXATTRIBI4UBV(index, v) \ fn.glVertexAttribI4ubv(index, HostAddr(v, const GLubyte *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBI4USV(index, v) \ int const size = 4; \ GLushort tmp[size], *ptmp; \ ptmp = Atari2HostShortArray(size, v, tmp); \ fn.glVertexAttribI4usv(index, ptmp) #else #define FN_GLVERTEXATTRIBI4USV(index, v) \ fn.glVertexAttribI4usv(index, HostAddr(v, const GLushort *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETUNIFORMUIV(program, location, params) \ GLint const size = 1; \ GLuint tmp[size]; \ fn.glGetUniformuiv(program, location, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETUNIFORMUIV(program, location, params) \ fn.glGetUniformuiv(program, location, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORM1UIV(location, count, value) \ GLint const size = 1 * count; \ GLuint tmp[MAX(size, 0)]; \ Atari2HostIntArray(size, value, tmp); \ fn.glUniform1uiv(location, count, tmp) #else #define FN_GLUNIFORM1UIV(location, count, value) \ fn.glUniform1uiv(location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORM2UIV(location, count, value) \ GLint const size = 2 * count; \ GLuint tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostIntArray(size, value, tmp); \ fn.glUniform2uiv(location, count, ptmp) #else #define FN_GLUNIFORM2UIV(location, count, value) \ fn.glUniform2uiv(location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORM3UIV(location, count, value) \ GLint const size = 3 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glUniform3uiv(location, count, tmp) #else #define FN_GLUNIFORM3UIV(location, count, value) \ fn.glUniform3uiv(location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORM4UIV(location, count, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glUniform4uiv(location, count, tmp) #else #define FN_GLUNIFORM4UIV(location, count, value) \ fn.glUniform4uiv(location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXPARAMETERIIV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glTexParameterIiv(target, pname, tmp) #else #define FN_GLTEXPARAMETERIIV(target, pname, params) \ fn.glTexParameterIiv(target, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXPARAMETERIUIV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLuint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glTexParameterIuiv(target, pname, tmp) #else #define FN_GLTEXPARAMETERIUIV(target, pname, params) \ fn.glTexParameterIuiv(target, pname, HostAddr(params, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXPARAMETERIIV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetTexParameterIiv(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXPARAMETERIIV(target, pname, params) \ fn.glGetTexParameterIiv(target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXPARAMETERIUIV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLuint tmp[MAX(size, 16)]; \ fn.glGetTexParameterIuiv(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXPARAMETERIUIV(target, pname, params) \ fn.glGetTexParameterIuiv(target, pname, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCLEARBUFFERIV(buffer, drawbuffer, value) \ GLuint size = 0; \ GLint tmp[4], *ptmp; \ switch (buffer) { \ case GL_COLOR: size = 4; break; \ case GL_STENCIL: \ case GL_DEPTH: size = 1; break; \ case GL_DEPTH_STENCIL: size = 2; break; \ } \ ptmp = Atari2HostIntArray(size, value, tmp); \ fn.glClearBufferiv(buffer, drawbuffer, ptmp) #else #define FN_GLCLEARBUFFERIV(buffer, drawbuffer, value) \ fn.glClearBufferiv(buffer, drawbuffer, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCLEARBUFFERUIV(buffer, drawbuffer, value) \ GLuint size = 0; \ GLuint tmp[4], *ptmp; \ switch (buffer) { \ case GL_COLOR: size = 4; break; \ case GL_STENCIL: \ case GL_DEPTH: size = 1; break; \ case GL_DEPTH_STENCIL: size = 2; break; \ } \ ptmp = Atari2HostIntArray(size, value, tmp); \ fn.glClearBufferuiv(buffer, drawbuffer, ptmp) #else #define FN_GLCLEARBUFFERUIV(buffer, drawbuffer, value) \ fn.glClearBufferuiv(buffer, drawbuffer, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLCLEARBUFFERFV(buffer, drawbuffer, value) \ GLfloat tmp[4], *ptmp; \ GLuint size = 0; \ switch (buffer) { \ case GL_COLOR: size = 4; break; \ case GL_STENCIL: \ case GL_DEPTH: size = 1; break; \ case GL_DEPTH_STENCIL: size = 2; break; \ } \ ptmp = Atari2HostFloatArray(size, value, tmp); \ fn.glClearBufferfv(buffer, drawbuffer, ptmp) #else #define FN_GLCLEARBUFFERFV(buffer, drawbuffer, value) \ fn.glClearBufferfv(buffer, drawbuffer, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETERENDERBUFFERS(n, renderbuffers) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, renderbuffers, tmp); \ fn.glDeleteRenderbuffers(n, ptmp) #else #define FN_GLDELETERENDERBUFFERS(n, renderbuffers) \ fn.glDeleteRenderbuffers(n, HostAddr(renderbuffers, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENRENDERBUFFERS(n, renderbuffers) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenRenderbuffers(n, tmp); \ Host2AtariIntArray(n, tmp, renderbuffers) #else #define FN_GLGENRENDERBUFFERS(n, renderbuffers) \ fn.glGenRenderbuffers(n, HostAddr(renderbuffers, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETRENDERBUFFERPARAMETERIV(target, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetRenderbufferParameteriv(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETRENDERBUFFERPARAMETERIV(target, pname, params) \ fn.glGetRenderbufferParameteriv(target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETEFRAMEBUFFERS(n, framebuffers) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, framebuffers, tmp); \ fn.glDeleteFramebuffers(n, ptmp) #else #define FN_GLDELETEFRAMEBUFFERS(n, framebuffers) \ fn.glDeleteFramebuffers(n, HostAddr(framebuffers, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENFRAMEBUFFERS(n, framebuffers) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenFramebuffers(n, tmp); \ Host2AtariIntArray(n, tmp, framebuffers) #else #define FN_GLGENFRAMEBUFFERS(n, framebuffers) \ fn.glGenFramebuffers(n, HostAddr(framebuffers, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETFRAMEBUFFERATTACHMENTPARAMETERIV(target, attachment, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetFramebufferAttachmentParameteriv(target, attachment, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETFRAMEBUFFERATTACHMENTPARAMETERIV(target, attachment, pname, params) \ fn.glGetFramebufferAttachmentParameteriv(target, attachment, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETEVERTEXARRAYS(n, arrays) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, arrays, tmp); \ fn.glDeleteVertexArrays(n, ptmp) #else #define FN_GLDELETEVERTEXARRAYS(n, arrays) \ fn.glDeleteVertexArrays(n, HostAddr(arrays, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENVERTEXARRAYS(n, arrays) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenVertexArrays(n, tmp); \ Host2AtariIntArray(n, tmp, arrays) #else #define FN_GLGENVERTEXARRAYS(n, arrays) \ fn.glGenVertexArrays(n, HostAddr(arrays, GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * Version 3.1 */ #define FN_GLDRAWARRAYSINSTANCED(mode, first, count, instancecount) \ convertClientArrays(first + count); \ fn.glDrawArraysInstanced(mode, first, count, instancecount) #define FN_GLDRAWELEMENTSINSTANCED(mode, count, type, indices, instancecount) \ void *tmp; \ convertClientArrays(count); \ pixelBuffer buf(*this); \ switch(type) { \ case GL_UNSIGNED_BYTE: \ case GL_UNSIGNED_SHORT: \ case GL_UNSIGNED_INT: \ tmp = buf.convertArray(count, type, (nfmemptr)indices); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ fn.glDrawElementsInstanced(mode, count, type, tmp, instancecount) #define FN_GLGETUNIFORMINDICES(program, uniformCount, uniformNames, uniformIndices) \ GLsizei const size = uniformCount; \ if (size <= 0 || !uniformNames || !uniformIndices) return; \ void *pstrings[size]; \ GLuint indices[size]; \ Atari2HostPtrArray(size, uniformNames, pstrings); \ fn.glGetUniformIndices(program, size, (const GLchar *const *)pstrings, indices); \ Host2AtariIntArray(size, indices, uniformIndices) #if NFOSMESA_NEED_INT_CONV #define FN_GLGETACTIVEUNIFORMSIV(program, uniformCount, uniformIndices, pname, params) \ GLsizei const size = uniformCount; \ if (size <= 0 || !uniformIndices) return; \ GLuint tmp[size]; \ GLint p[size]; \ Atari2HostIntArray(uniformCount, uniformIndices, tmp); \ fn.glGetActiveUniformsiv(program, uniformCount, tmp, pname, p); \ Host2AtariIntArray(uniformCount, p, params) #else #define FN_GLGETACTIVEUNIFORMSIV(program, uniformCount, uniformIndices, pname, params) \ fn.glGetActiveUniformsiv(program, uniformCount, HostAddr(uniformIndices, const GLuint *), pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETACTIVEUNIFORMNAME(program, index, bufSize, length, name) \ GLsizei l = 0; \ GLchar namebuf[MAX(bufSize, 0)]; \ fn.glGetActiveUniformName(program, index, bufSize, &l, namebuf); \ Host2AtariByteArray(MIN(l + 1, bufSize), namebuf, name); \ Host2AtariIntArray(1, &l, length) #else #define FN_GLGETACTIVEUNIFORMNAME(program, index, bufSize, length, name) \ fn.glGetActiveUniformName(program, index, bufSize, HostAddr(length, GLsizei *), HostAddr(name, GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETUNIFORMBLOCKINDEX(program, uniformBlockName) \ GLchar tmp[safe_strlen(uniformBlockName) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), uniformBlockName, tmp); \ return fn.glGetUniformBlockIndex(program, ptmp) #else #define FN_GLGETUNIFORMBLOCKINDEX(program, uniformBlockName) \ return fn.glGetUniformBlockIndex(program, HostAddr(uniformBlockName, const GLchar *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETACTIVEUNIFORMBLOCKIV(program, uniformBlockIndex, pname, params) \ GLint size = 1; \ switch (pname) { \ case GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: fn.glGetActiveUniformBlockiv(program, uniformBlockIndex, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, &size); break; \ } \ GLint tmp[size]; \ fn.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETACTIVEUNIFORMBLOCKIV(program, uniformBlockIndex, pname, params) \ fn.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETACTIVEUNIFORMBLOCKINDEX(program, uniformBlockName) \ GLchar namebuf[safe_strlen(uniformBlockName) + 1], *pname; \ pname = Atari2HostByteArray(sizeof(namebuf), uniformBlockName, namebuf); \ return fn.glGetActiveUniformBlockIndex(program, pname) #else #define FN_GLGETACTIVEUNIFORMBLOCKINDEX(program, uniformBlockName) \ return fn.glGetActiveUniformBlockIndex(program, HostAddr(uniformBlockName, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETACTIVEUNIFORMBLOCKNAME(program, index, bufSize, length, uniformBlockName) \ GLsizei l = 0; \ GLchar namebuf[MAX(bufSize, 0)]; \ fn.glGetActiveUniformBlockName(program, index, bufSize, &l, namebuf); \ Host2AtariIntArray(1, &l, length); \ Host2AtariByteArray(MIN(l + 1, bufSize), namebuf, uniformBlockName) #else #define FN_GLGETACTIVEUNIFORMBLOCKNAME(program, index, bufSize, length, uniformBlockName) \ fn.glGetActiveUniformBlockName(program, index, bufSize, HostAddr(length, GLsizei *), HostAddr(uniformBlockName, GLchar *)) #endif /* -------------------------------------------------------------------------- */ /* * Version 3.2 */ #define FN_GLDRAWELEMENTSBASEVERTEX(mode, count, type, indices, basevertex) \ void *tmp; \ convertClientArrays(count); \ pixelBuffer buf(*this); \ switch(type) { \ case GL_UNSIGNED_BYTE: \ case GL_UNSIGNED_SHORT: \ case GL_UNSIGNED_INT: \ tmp = buf.convertArray(count, type, (nfmemptr)indices); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ fn.glDrawElementsBaseVertex(mode, count, type, tmp, basevertex) #define FN_GLDRAWRANGEELEMENTSBASEVERTEX(mode, start, end, count, type, indices, basevertex) \ void *tmp; \ convertClientArrays(count); \ pixelBuffer buf(*this); \ switch(type) { \ case GL_UNSIGNED_BYTE: \ case GL_UNSIGNED_SHORT: \ case GL_UNSIGNED_INT: \ tmp = buf.convertArray(count, type, (nfmemptr)indices); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ fn.glDrawRangeElementsBaseVertex(mode, start, end, count, type, tmp, basevertex) #define FN_GLMULTIDRAWELEMENTSBASEVERTEX(mode, count, type, indices, drawcount, basevertex) \ if (drawcount <= 0 || !indices || !basevertex) return; \ nfmemptr tmpind[drawcount]; \ GLsizei tmpcount[drawcount]; \ GLint tmpbase[drawcount]; \ Atari2HostIntArray(drawcount, count, tmpcount); \ Atari2HostMemPtrArray(drawcount, indices, tmpind); \ Atari2HostIntArray(drawcount, basevertex, tmpbase); \ for (GLsizei i = 0; i < drawcount; i++) { \ nfglDrawElementsBaseVertex(mode, tmpcount[i], type, tmpind[i], tmpbase[i]); \ } #define FN_GLDRAWELEMENTSINSTANCEDBASEVERTEX(mode, count, type, indices, instancecount, basevertex) \ void *tmp; \ convertClientArrays(count); \ pixelBuffer buf(*this); \ switch(type) { \ case GL_UNSIGNED_BYTE: \ case GL_UNSIGNED_SHORT: \ case GL_UNSIGNED_INT: \ tmp = buf.convertArray(count, type, (nfmemptr)indices); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ fn.glDrawElementsInstancedBaseVertex(mode, count, type, tmp, instancecount, basevertex) #if NFOSMESA_NEED_INT_CONV #define FN_GLGETINTEGER64V(pname, data) \ GLint const size = nfglGetNumParams(pname); \ GLint64 tmp[MAX(size, 16)]; \ fn.glGetInteger64v(pname, tmp); \ Host2AtariInt64Array(size, tmp, data) #else #define FN_GLGETINTEGER64V(pname, data) \ fn.glGetInteger64v(pname, HostAddr(data, GLint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETINTEGER64I_V(target, index, data) \ GLint const size = nfglGetNumParams(target); \ GLint64 tmp[MAX(size, 16)]; \ fn.glGetInteger64i_v(target, index, tmp); \ Host2AtariInt64Array(size, tmp, data) #else #define FN_GLGETINTEGER64I_V(target, index, data) \ fn.glGetInteger64i_v(target, index, HostAddr(data, GLint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETBUFFERPARAMETERI64V(target, pname, params) \ int const size = nfglGetNumParams(pname); \ GLint64 tmp[MAX(size, 16)]; \ fn.glGetBufferParameteri64v(target, pname, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETBUFFERPARAMETERI64V(target, pname, params) \ fn.glGetBufferParameteri64v(target, pname, HostAddr(params, GLint64 *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETMULTISAMPLEFV(pname, index, val) \ GLint const size = 2; \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetMultisamplefv(pname, index, tmp); \ Host2AtariFloatArray(size, tmp, val) #else #define FN_GLGETMULTISAMPLEFV(pname, index, val) \ fn.glGetMultisamplefv(pname, index, HostAddr(val, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETSYNCIV(sync, pname, bufSize, length, values) \ int const size = bufSize; \ if (size <= 0) return; \ GLint tmp[size]; \ GLint l = 0; \ fn.glGetSynciv(sync, pname, bufSize, &l, tmp); \ Host2AtariIntArray(1, &l, length); \ Host2AtariIntArray(l, tmp, values) #else #define FN_GLGETSYNCIV(sync, pname, bufSize, length, values) \ fn.glGetSynciv(sync, pname, bufSize, HostAddr(length, GLint *), HostAddr(values, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * Version 3.3 */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLBINDFRAGDATALOCATIONINDEXED(program, color, index, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ fn.glBindFragDataLocationIndexed(program, color, index, ptmp) #else #define FN_GLBINDFRAGDATALOCATIONINDEXED(program, color, index, name) \ fn.glBindFragDataLocationIndexed(program, color, index, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENSAMPLERS(count, samplers) \ GLsizei const size = MAX(count, 0); \ GLuint tmp[size]; \ fn.glGenSamplers(count, tmp); \ Host2AtariIntArray(count, tmp, samplers) #else #define FN_GLGENSAMPLERS(count, samplers) \ fn.glGenSamplers(count, HostAddr(samplers, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETESAMPLERS(n, samplers) \ GLsizei const size = n; \ GLuint tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostIntArray(size, samplers, tmp); \ fn.glDeleteSamplers(n, ptmp) #else #define FN_GLDELETESAMPLERS(n, samplers) \ fn.glDeleteSamplers(n, HostAddr(samplers, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSAMPLERPARAMETERIV(sampler, pname, params) \ GLsizei const size = nfglGetNumParams(pname); \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glSamplerParameteriv(sampler, pname, ptmp) #else #define FN_GLSAMPLERPARAMETERIV(sampler, pname, params) \ fn.glSamplerParameteriv(sampler, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLSAMPLERPARAMETERFV(sampler, pname, params) \ GLsizei const size = nfglGetNumParams(pname); \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glSamplerParameterfv(sampler, pname, ptmp) #else #define FN_GLSAMPLERPARAMETERFV(sampler, pname, params) \ fn.glSamplerParameterfv(sampler, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSAMPLERPARAMETERIIV(sampler, pname, params) \ GLsizei const size = nfglGetNumParams(pname); \ GLint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glSamplerParameterIiv(sampler, pname, ptmp) #else #define FN_GLSAMPLERPARAMETERIIV(sampler, pname, params) \ fn.glSamplerParameterIiv(sampler, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSAMPLERPARAMETERIUIV(sampler, pname, params) \ GLsizei const size = nfglGetNumParams(pname); \ GLuint tmp[size], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glSamplerParameterIuiv(sampler, pname, ptmp) #else #define FN_GLSAMPLERPARAMETERIUIV(sampler, pname, params) \ fn.glSamplerParameterIuiv(sampler, pname, HostAddr(params, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETSAMPLERPARAMETERIV(sampler, pname, params) \ GLsizei const size = nfglGetNumParams(pname); \ GLint tmp[size]; \ fn.glGetSamplerParameteriv(sampler, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETSAMPLERPARAMETERIV(sampler, pname, params) \ fn.glGetSamplerParameteriv(sampler, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETSAMPLERPARAMETERIIV(sampler, pname, params) \ GLsizei const size = nfglGetNumParams(pname); \ GLint tmp[size]; \ fn.glGetSamplerParameterIiv(sampler, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETSAMPLERPARAMETERIIV(sampler, pname, params) \ fn.glGetSamplerParameterIiv(sampler, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETSAMPLERPARAMETERIUIV(sampler, pname, params) \ GLsizei const size = nfglGetNumParams(pname); \ GLuint tmp[size]; \ fn.glGetSamplerParameterIuiv(sampler, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETSAMPLERPARAMETERIUIV(sampler, pname, params) \ fn.glGetSamplerParameterIuiv(sampler, pname, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETSAMPLERPARAMETERFV(sampler, pname, params) \ GLsizei const size = nfglGetNumParams(pname); \ GLfloat tmp[size]; \ fn.glGetSamplerParameterfv(sampler, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETSAMPLERPARAMETERFV(sampler, pname, params) \ fn.glGetSamplerParameterfv(sampler, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETQUERYOBJECTI64V(id, pname, params) \ GLint const size = 1; \ GLint64 tmp[size]; \ fn.glGetQueryObjecti64v(id, pname, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETQUERYOBJECTI64V(id, pname, params) \ fn.glGetQueryObjecti64v(id, pname, HostAddr(params, GLint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETQUERYOBJECTUI64V(id, pname, params) \ GLint const size = 1; \ GLuint64 tmp[size]; \ fn.glGetQueryObjectui64v(id, pname, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETQUERYOBJECTUI64V(id, pname, params) \ fn.glGetQueryObjectui64v(id, pname, HostAddr(params, GLuint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBP1UIV(index, type, normalized, value) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glVertexAttribP1uiv(index, type, normalized, tmp) #else #define FN_GLVERTEXATTRIBP1UIV(index, type, normalized, value) \ fn.glVertexAttribP1uiv(index, type, normalized, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBP2UIV(index, type, normalized, value) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glVertexAttribP2uiv(index, type, normalized, tmp) #else #define FN_GLVERTEXATTRIBP2UIV(index, type, normalized, value) \ fn.glVertexAttribP2uiv(index, type, normalized, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBP3UIV(index, type, normalized, value) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glVertexAttribP3uiv(index, type, normalized, tmp) #else #define FN_GLVERTEXATTRIBP3UIV(index, type, normalized, value) \ fn.glVertexAttribP3uiv(index, type, normalized, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXATTRIBP4UIV(index, type, normalized, value) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glVertexAttribP4uiv(index, type, normalized, tmp) #else #define FN_GLVERTEXATTRIBP4UIV(index, type, normalized, value) \ fn.glVertexAttribP4uiv(index, type, normalized, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXP2UIV(type, value) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glVertexP2uiv(type, tmp) #else #define FN_GLVERTEXP2UIV(type, value) \ fn.glVertexP2uiv(type, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXP3UIV(type, value) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glVertexP3uiv(type, tmp) #else #define FN_GLVERTEXP3UIV(type, value) \ fn.glVertexP3uiv(type, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLVERTEXP4UIV(type, value) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glVertexP4uiv(type, tmp) #else #define FN_GLVERTEXP4UIV(type, value) \ fn.glVertexP4uiv(type, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORDP1UIV(type, coords) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, coords, tmp); \ fn.glTexCoordP1uiv(type, tmp) #else #define FN_GLTEXCOORDP1UIV(type, coords) \ fn.glTexCoordP1uiv(type, HostAddr(coords, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORDP2UIV(type, coords) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, coords, tmp); \ fn.glTexCoordP2uiv(type, tmp) #else #define FN_GLTEXCOORDP2UIV(type, coords) \ fn.glTexCoordP2uiv(type, HostAddr(coords, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORDP3UIV(type, coords) \ GLint const size = 3; \ GLuint tmp[size]; \ Atari2HostIntArray(size, coords, tmp); \ fn.glTexCoordP3uiv(type, tmp) #else #define FN_GLTEXCOORDP3UIV(type, coords) \ fn.glTexCoordP3uiv(type, HostAddr(coords, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXCOORDP4UIV(type, coords) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, coords, tmp); \ fn.glTexCoordP4uiv(type, tmp) #else #define FN_GLTEXCOORDP4UIV(type, coords) \ fn.glTexCoordP4uiv(type, HostAddr(coords, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORDP1UIV(texture, type, coords) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, coords, tmp); \ fn.glMultiTexCoordP1uiv(texture, type, tmp) #else #define FN_GLMULTITEXCOORDP1UIV(texture, type, coords) \ fn.glMultiTexCoordP1uiv(texture, type, HostAddr(coords, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORDP2UIV(texture, type, coords) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, coords, tmp); \ fn.glMultiTexCoordP2uiv(texture, type, tmp) #else #define FN_GLMULTITEXCOORDP2UIV(texture, type, coords) \ fn.glMultiTexCoordP2uiv(texture, type, HostAddr(coords, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORDP3UIV(texture, type, coords) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, coords, tmp); \ fn.glMultiTexCoordP3uiv(texture, type, tmp) #else #define FN_GLMULTITEXCOORDP3UIV(texture, type, coords) \ fn.glMultiTexCoordP3uiv(texture, type, HostAddr(coords, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLMULTITEXCOORDP4UIV(texture, type, coords) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, coords, tmp); \ fn.glMultiTexCoordP4uiv(texture, type, tmp) #else #define FN_GLMULTITEXCOORDP4UIV(texture, type, coords) \ fn.glMultiTexCoordP4uiv(texture, type, HostAddr(coords, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLNORMALP3UIV(type, coords) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, coords, tmp); \ fn.glNormalP3uiv(type, tmp) #else #define FN_GLNORMALP3UIV(type, coords) \ fn.glNormalP3uiv(type, HostAddr(coords, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLORP3UIV(type, color) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, color, tmp); \ fn.glColorP3uiv(type, tmp) #else #define FN_GLCOLORP3UIV(type, color) \ fn.glColorP3uiv(type, HostAddr(color, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCOLORP4UIV(type, color) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, color, tmp); \ fn.glColorP4uiv(type, tmp) #else #define FN_GLCOLORP4UIV(type, color) \ fn.glColorP4uiv(type, HostAddr(color, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSECONDARYCOLORP3UIV(type, color) \ GLint const size = 1; \ GLuint tmp[size]; \ Atari2HostIntArray(size, color, tmp); \ fn.glSecondaryColorP3uiv(type, tmp) #else #define FN_GLSECONDARYCOLORP3UIV(type, color) \ fn.glSecondaryColorP3uiv(type, HostAddr(color, const GLuint *)) #endif /* -------------------------------------------------------------------------- */ /* * Version 4.0 */ /* If a buffer is bound to the GL_DRAW_INDIRECT_BUFFER binding at the time of a call to glDrawArraysIndirect, indirect is interpreted as an offset, in basic machine units, into that buffer and the parameter data is read from the buffer rather than from client memory. */ #define FN_GLDRAWARRAYSINDIRECT(mode, indirect) \ /* \ * The parameters addressed by indirect are packed into a structure that takes the form (in C): \ * \ * typedef struct { \ * uint count; \ * uint primCount; \ * uint first; \ * uint baseInstance; \ * } DrawArraysIndirectCommand; \ */ \ if (contexts[cur_context].buffer_bindings.draw_indirect.id) { \ void *offset = NFHost2AtariAddr(indirect); \ fn.glDrawArraysIndirect(mode, offset); \ } else if (indirect) { \ GLuint tmp[4]; \ Atari2HostIntArray(4, AtariAddr(indirect, const GLuint *), tmp); \ GLuint count = tmp[0]; \ convertClientArrays(count); \ fn.glDrawArraysInstancedBaseInstance(mode, tmp[2], count, tmp[1], tmp[3]); \ } /* * The parameters addressed by indirect are packed into a structure that takes the form (in C): * * typedef struct { * uint count; * uint primCount; * uint firstIndex; * uint baseVertex; * uint baseInstance; * } DrawElementsIndirectCommand; */ #define FN_GLDRAWELEMENTSINDIRECT(mode, type, indirect) \ if (contexts[cur_context].buffer_bindings.draw_indirect.id) { \ void *offset = NFHost2AtariAddr(indirect); \ fn.glDrawElementsIndirect(mode, type, offset); \ } else if (indirect) { \ GLuint tmp[5]; \ Atari2HostIntArray(5, AtariAddr(indirect, const GLuint *), tmp); \ GLuint count = tmp[0]; \ convertClientArrays(count); \ fn.glDrawElementsInstancedBaseVertexBaseInstance(mode, count, type, (const void *)(uintptr_t)tmp[2], tmp[1], tmp[3], tmp[4]); \ } #if NFOSMESA_NEED_INT_CONV #define FN_GLGETACTIVESUBROUTINEUNIFORMIV(program, shadertype, index, pname, values) \ GLint size = 1; \ switch (pname) { \ case GL_COMPATIBLE_SUBROUTINES: fn.glGetActiveSubroutineUniformiv(program, shadertype, index, GL_NUM_COMPATIBLE_SUBROUTINES, &size); break; \ } \ GLint tmp[size]; \ fn.glGetActiveSubroutineUniformiv(program, shadertype, index, pname, tmp); \ Host2AtariIntArray(size, tmp, values) #else #define FN_GLGETACTIVESUBROUTINEUNIFORMIV(program, shadertype, index, pname, values) \ fn.glGetActiveSubroutineUniformiv(program, shadertype, index, pname, HostAddr(values, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETACTIVESUBROUTINEUNIFORMNAME(program, shadertype, index, bufSize, length, name) \ GLsizei l = 0; \ GLchar tmp[MAX(bufSize, 0)]; \ fn.glGetActiveSubroutineUniformName(program, shadertype, index, bufSize, &l, tmp); \ Host2AtariByteArray(MIN(l + 1, bufSize), tmp, name); \ Host2AtariIntArray(1, &l, length) #else #define FN_GLGETACTIVESUBROUTINEUNIFORMNAME(program, shadertype, index, bufSize, length, name) \ fn.glGetActiveSubroutineUniformName(program, shadertype, index, bufSize, HostAddr(length, GLsizei *), HostAddr(name, GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETACTIVESUBROUTINENAME(program, shadertype, index, bufSize, length, name) \ GLsizei l = 0; \ GLchar tmp[MAX(bufSize, 0)]; \ fn.glGetActiveSubroutineName(program, shadertype, index, bufSize, &l, tmp); \ Host2AtariByteArray(MIN(l + 1, bufSize), tmp, name); \ Host2AtariIntArray(1, &l, length) #else #define FN_GLGETACTIVESUBROUTINENAME(program, shadertype, index, bufSize, length, name) \ fn.glGetActiveSubroutineName(program, shadertype, index, bufSize, HostAddr(length, GLsizei *), HostAddr(name, GLchar *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETETRANSFORMFEEDBACKS(n, ids) \ GLsizei const size = n; \ if (size <= 0 || !ids) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, ids, tmp); \ fn.glDeleteTransformFeedbacks(size, tmp) #else #define FN_GLDELETETRANSFORMFEEDBACKS(n, ids) \ fn.glDeleteTransformFeedbacks(n, HostAddr(ids, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENTRANSFORMFEEDBACKS(n, ids) \ GLsizei const size = MAX(n, 0); \ GLuint tmp[size]; \ fn.glGenTransformFeedbacks(n, tmp); \ Host2AtariIntArray(n, tmp, ids) #else #define FN_GLGENTRANSFORMFEEDBACKS(n, ids) \ fn.glGenTransformFeedbacks(n, HostAddr(ids, GLuint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLUNIFORM1DV(location, count, value) \ GLint const size = 1 * count; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glUniform1dv(location, count, tmp) #else #define FN_GLUNIFORM1DV(location, count, value) \ fn.glUniform1dv(location, count, HostAddr(value, GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLUNIFORM2DV(location, count, value) \ GLint const size = 2 * count; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glUniform2dv(location, count, tmp) #else #define FN_GLUNIFORM2DV(location, count, value) \ fn.glUniform2dv(location, count, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLUNIFORM3DV(location, count, value) \ GLint const size = 3 * count; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glUniform3dv(location, count, tmp) #else #define FN_GLUNIFORM3DV(location, count, value) \ fn.glUniform3dv(location, count, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLUNIFORM4DV(location, count, value) \ GLint const size = 4 * count; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glUniform4dv(location, count, tmp) #else #define FN_GLUNIFORM4DV(location, count, value) \ fn.glUniform4dv(location, count, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLUNIFORMMATRIX2DV(location, count, transpose, value) \ GLint const size = 4 * count; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glUniformMatrix2dv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX2DV(location, count, transpose, value) \ fn.glUniformMatrix2dv(location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLUNIFORMMATRIX3DV(location, count, transpose, value) \ GLint const size = 9 * count; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glUniformMatrix3dv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX3DV(location, count, transpose, value) \ fn.glUniformMatrix3dv(location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLUNIFORMMATRIX4DV(location, count, transpose, value) \ GLint const size = 16 * count; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glUniformMatrix4dv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX4DV(location, count, transpose, value) \ fn.glUniformMatrix4dv(location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLUNIFORMMATRIX2X3DV(location, count, transpose, value) \ GLint const size = 6 * count; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glUniformMatrix2x3dv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX2X3DV(location, count, transpose, value) \ fn.glUniformMatrix2x3dv(location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLUNIFORMMATRIX2X4DV(location, count, transpose, value) \ GLint const size = 8 * count; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glUniformMatrix2x4dv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX2X4DV(location, count, transpose, value) \ fn.glUniformMatrix2x4dv(location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLUNIFORMMATRIX3X2DV(location, count, transpose, value) \ GLint const size = 6 * count; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glUniformMatrix3x2dv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX3X2DV(location, count, transpose, value) \ fn.glUniformMatrix3x2dv(location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLUNIFORMMATRIX3X4DV(location, count, transpose, value) \ GLint const size = 12 * count; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glUniformMatrix3x4dv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX3X4DV(location, count, transpose, value) \ fn.glUniformMatrix3x4dv(location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLUNIFORMMATRIX4X2DV(location, count, transpose, value) \ GLint const size = 8 * count; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glUniformMatrix4x2dv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX4X2DV(location, count, transpose, value) \ fn.glUniformMatrix4x2dv(location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLUNIFORMMATRIX4X3DV(location, count, transpose, value) \ GLint const size = 12 * count; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glUniformMatrix4x3dv(location, count, transpose, tmp) #else #define FN_GLUNIFORMMATRIX4X3DV(location, count, transpose, value) \ fn.glUniformMatrix4x3dv(location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETSUBROUTINEUNIFORMLOCATION(program, shadertype, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ return fn.glGetSubroutineUniformLocation(program, shadertype, ptmp) #else #define FN_GLGETSUBROUTINEUNIFORMLOCATION(program, shadertype, name) \ return fn.glGetSubroutineUniformLocation(program, shadertype, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETSUBROUTINEINDEX(program, shadertype, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ return fn.glGetSubroutineIndex(program, shadertype, ptmp) #else #define FN_GLGETSUBROUTINEINDEX(program, shadertype, name) \ return fn.glGetSubroutineIndex(program, shadertype, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETUNIFORMDV(program, location, params) \ GLint const size = 1; \ GLdouble tmp[size]; \ fn.glGetUniformdv(program, location, tmp); \ Host2AtariDoubleArray(size, tmp, params) #else #define FN_GLGETUNIFORMDV(program, location, params) \ fn.glGetUniformdv(program, location, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLUNIFORMSUBROUTINESUIV(shadertype, count, indices) \ GLint const size = count; \ if (size <= 0 || !indices) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, indices, tmp); \ fn.glUniformSubroutinesuiv(shadertype, count, tmp) #else #define FN_GLUNIFORMSUBROUTINESUIV(shadertype, count, indices) \ fn.glUniformSubroutinesuiv(shadertype, count, HostAddr(indices, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETUNIFORMSUBROUTINEUIV(shadertype, location, params) \ GLint program = 0; \ fn.glGetIntegerv(GL_ACTIVE_PROGRAM, &program); \ GLint size = 0; \ fn.glGetProgramStageiv(program, shadertype, GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS, &size); \ if (size <= 0 || !params) return; \ GLuint tmp[size]; \ fn.glGetUniformSubroutineuiv(shadertype, location, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETUNIFORMSUBROUTINEUIV(shadertype, location, params) \ fn.glGetUniformSubroutineuiv(shadertype, location, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMSTAGEIV(program, shadertype, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetProgramStageiv(program, shadertype, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETPROGRAMSTAGEIV(program, shadertype, pname, params) \ fn.glGetProgramStageiv(program, shadertype, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPATCHPARAMETERFV(pname, values) \ GLint size = 0; \ fn.glGetIntegerv(GL_PATCH_VERTICES, &size); \ if (size <= 0 || !values) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, values, tmp); \ fn.glPatchParameterfv(pname, tmp) #else #define FN_GLPATCHPARAMETERFV(pname, values) \ fn.glPatchParameterfv(pname, HostAddr(values, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETQUERYINDEXEDIV(target, index, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetQueryIndexediv(target, index, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETQUERYINDEXEDIV(target, index, pname, params) \ fn.glGetQueryIndexediv(target, index, pname, HostAddr(params, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * Version 4.1 */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLSHADERBINARY(count, shaders, binaryformat, binary, length) \ GLuint tmp[MAX(count, 0)], *ptmp; \ GLubyte binbuf[MAX(length, 0)], *pbin; \ ptmp = Atari2HostIntArray(count, shaders, tmp); \ pbin = Atari2HostByteArray(length, binary, binbuf); \ fn.glShaderBinary(count, ptmp, binaryformat, pbin, length) #else #define FN_GLSHADERBINARY(count, shaders, binaryformat, binary, length) \ fn.glShaderBinary(count, HostAddr(shaders, const GLuint *), binaryformat, HostAddr(binary, const void *), length) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETSHADERPRECISIONFORMAT(shadertype, precisiontype, range, precision) \ GLint const size = 1; \ GLint r = 0, p = 0; \ fn.glGetShaderPrecisionFormat(shadertype, precisiontype, &r, &p); \ Host2AtariIntArray(size, &r, range); \ Host2AtariIntArray(size, &p, precision) #else #define FN_GLGETSHADERPRECISIONFORMAT(shadertype, precisiontype, range, precision) \ fn.glGetShaderPrecisionFormat(shadertype, precisiontype, HostAddr(range, GLint *), HostAddr(precision, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMBINARY(program, bufSize, length, binaryFormat, binary) \ GLint const size = 1; \ GLsizei l = 0; \ GLenum format = 0; \ GLubyte binbuf[MAX(bufSize, 0)]; \ fn.glGetProgramBinary(program, bufSize, &l, &format, binbuf); \ Host2AtariByteArray(l, binbuf, binary); \ Host2AtariIntArray(size, &l, length); \ Host2AtariIntArray(size, &format, binaryFormat) #else #define FN_GLGETPROGRAMBINARY(program, bufSize, length, binaryFormat, binary) \ fn.glGetProgramBinary(program, bufSize, HostAddr(length, GLsizei *), HostAddr(binaryFormat, GLenum *), HostAddr(binary, void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMBINARY(program, binaryformat, binary, length) \ GLubyte binbuf[MAX(length, 0)], *pbin; \ pbin = Atari2HostByteArray(length, binary, binbuf); \ fn.glProgramBinary(program, binaryformat, pbin, length) #else #define FN_GLPROGRAMBINARY(program, binaryformat, binary, length) \ fn.glProgramBinary(program, binaryformat, HostAddr(binary, const void *), length) #endif #define FN_GLCREATESHADERPROGRAMV(type, count, strings) \ void *pstrings[MAX(count, 0)], **ppstrings; \ ppstrings = Atari2HostPtrArray(count, strings, pstrings); \ return fn.glCreateShaderProgramv(type, count, (const GLchar *const *)ppstrings) #if NFOSMESA_NEED_INT_CONV #define FN_GLDELETEPROGRAMPIPELINES(n, pipelines) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, pipelines, tmp); \ fn.glDeleteProgramPipelines(n, ptmp) #else #define FN_GLDELETEPROGRAMPIPELINES(n, pipelines) \ fn.glDeleteProgramPipelines(n, HostAddr(pipelines, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGENPROGRAMPIPELINES(n, pipelines) \ GLuint tmp[MAX(n, 0)]; \ fn.glGenProgramPipelines(n, tmp); \ Host2AtariIntArray(n, tmp, pipelines) #else #define FN_GLGENPROGRAMPIPELINES(n, pipelines) \ fn.glGenProgramPipelines(n, HostAddr(pipelines, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMPIPELINEIV(pipeline, pname, params) \ GLsizei const size = nfglGetNumParams(pname); \ GLint tmp[size]; \ fn.glGetProgramPipelineiv(pipeline, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETPROGRAMPIPELINEIV(pipeline, pname, params) \ fn.glGetProgramPipelineiv(pipeline, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM1IV(program, location, count, value) \ GLint const size = 1 * count; \ if (size <= 0) return; \ GLint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform1iv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM1IV(program, location, count, value) \ fn.glProgramUniform1iv(program, location, count, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORM1FV(program, location, count, value) \ GLint const size = 1 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniform1fv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM1FV(program, location, count, value) \ fn.glProgramUniform1fv(program, location, count, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORM1DV(program, location, count, value) \ GLint const size = 1 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniform1dv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM1DV(program, location, count, value) \ fn.glProgramUniform1dv(program, location, count, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM1UIV(program, location, count, value) \ GLint const size = 1 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform1uiv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM1UIV(program, location, count, value) \ fn.glProgramUniform1uiv(program, location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM2IV(program, location, count, value) \ GLint const size = 2 * count; \ if (size <= 0) return; \ GLint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform2iv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM2IV(program, location, count, value) \ fn.glProgramUniform2iv(program, location, count, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORM2FV(program, location, count, value) \ GLint const size = 2 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniform2fv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM2FV(program, location, count, value) \ fn.glProgramUniform2fv(program, location, count, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORM2DV(program, location, count, value) \ GLint const size = 2 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniform2dv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM2DV(program, location, count, value) \ fn.glProgramUniform2dv(program, location, count, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM2UIV(program, location, count, value) \ GLint const size = 2 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform2uiv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM2UIV(program, location, count, value) \ fn.glProgramUniform2uiv(program, location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM3IV(program, location, count, value) \ GLint const size = 3 * count; \ if (size <= 0) return; \ GLint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform3iv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM3IV(program, location, count, value) \ fn.glProgramUniform3iv(program, location, count, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORM3FV(program, location, count, value) \ GLint const size = 3 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniform3fv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM3FV(program, location, count, value) \ fn.glProgramUniform3fv(program, location, count, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORM3DV(program, location, count, value) \ GLint const size = 3 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniform3dv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM3DV(program, location, count, value) \ fn.glProgramUniform3dv(program, location, count, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM3UIV(program, location, count, value) \ GLint const size = 3 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform3uiv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM3UIV(program, location, count, value) \ fn.glProgramUniform3uiv(program, location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM4IV(program, location, count, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform4iv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM4IV(program, location, count, value) \ fn.glProgramUniform4iv(program, location, count, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORM4FV(program, location, count, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniform4fv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM4FV(program, location, count, value) \ fn.glProgramUniform4fv(program, location, count, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORM4DV(program, location, count, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniform4dv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM4DV(program, location, count, value) \ fn.glProgramUniform4dv(program, location, count, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLPROGRAMUNIFORM4UIV(program, location, count, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLuint tmp[size]; \ Atari2HostIntArray(size, value, tmp); \ fn.glProgramUniform4uiv(program, location, count, tmp) #else #define FN_GLPROGRAMUNIFORM4UIV(program, location, count, value) \ fn.glProgramUniform4uiv(program, location, count, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX2FV(program, location, count, transpose, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix2fv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX2FV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix2fv(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX3FV(program, location, count, transpose, value) \ GLint const size = 9 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix3fv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX3FV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix3fv(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX4FV(program, location, count, transpose, value) \ GLint const size = 16 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix4fv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX4FV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix4fv(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX2DV(program, location, count, transpose, value) \ GLint const size = 4 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix2dv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX2DV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix2dv(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX3DV(program, location, count, transpose, value) \ GLint const size = 9 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix3dv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX3DV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix3dv(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX4DV(program, location, count, transpose, value) \ GLint const size = 16 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix4dv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX4DV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix4dv(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX2X3FV(program, location, count, transpose, value) \ GLint const size = 6 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix2x3fv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX2X3FV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix2x3fv(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX3X2FV(program, location, count, transpose, value) \ GLint const size = 6 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix3x2fv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX3X2FV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix3x2fv(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX2X4FV(program, location, count, transpose, value) \ GLint const size = 8 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix2x4fv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX2X4FV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix2x4fv(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX4X2FV(program, location, count, transpose, value) \ GLint const size = 8 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix4x2fv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX4X2FV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix4x2fv(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX3X4FV(program, location, count, transpose, value) \ GLint const size = 12 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix3x4fv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX3X4FV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix3x4fv(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLPROGRAMUNIFORMMATRIX4X3FV(program, location, count, transpose, value) \ GLint const size = 12 * count; \ if (size <= 0) return; \ GLfloat tmp[size]; \ Atari2HostFloatArray(size, value, tmp); \ fn.glProgramUniformMatrix4x3fv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX4X3FV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix4x3fv(program, location, count, transpose, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX2X3DV(program, location, count, transpose, value) \ GLint const size = 6 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix2x3dv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX2X3DV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix2x3dv(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX3X2DV(program, location, count, transpose, value) \ GLint const size = 6 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix3x2dv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX3X2DV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix3x2dv(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX2X4DV(program, location, count, transpose, value) \ GLint const size = 8 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix2x4dv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX2X4DV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix2x4dv(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX4X2DV(program, location, count, transpose, value) \ GLint const size = 8 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix4x2dv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX4X2DV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix4x2dv(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX3X4DV(program, location, count, transpose, value) \ GLint const size = 12 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix3x4dv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX3X4DV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix3x4dv(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLPROGRAMUNIFORMMATRIX4X3DV(program, location, count, transpose, value) \ GLint const size = 12 * count; \ if (size <= 0) return; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, value, tmp); \ fn.glProgramUniformMatrix4x3dv(program, location, count, transpose, tmp) #else #define FN_GLPROGRAMUNIFORMMATRIX4X3DV(program, location, count, transpose, value) \ fn.glProgramUniformMatrix4x3dv(program, location, count, transpose, HostAddr(value, const GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETFLOATI_V(pname, index, params) \ int n = nfglGetNumParams(pname); \ GLfloat tmp[MAX(n, 16)]; \ fn.glGetFloati_v(pname, index, tmp); \ Host2AtariFloatArray(n, tmp, params) #else #define FN_GLGETFLOATI_V(pname, index, params) \ fn.glGetFloati_v(pname, index, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETDOUBLEI_V(pname, index, params) \ int n = nfglGetNumParams(pname); \ GLdouble tmp[MAX(n, 16)]; \ fn.glGetDoublei_v(pname, index, tmp); \ Host2AtariDoubleArray(n, tmp, params) #else #define FN_GLGETDOUBLEI_V(pname, index, params) \ fn.glGetDoublei_v(pname, index, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIBL1DV(index, v) \ GLint const size = 1; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttribL1dv(index, tmp) #else #define FN_GLVERTEXATTRIBL1DV(index, v) \ fn.glVertexAttribL1dv(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIBL2DV(index, v) \ GLint const size = 2; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttribL2dv(index, tmp) #else #define FN_GLVERTEXATTRIBL2DV(index, v) \ fn.glVertexAttribL2dv(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIBL3DV(index, v) \ GLint const size = 3; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttribL3dv(index, tmp) #else #define FN_GLVERTEXATTRIBL3DV(index, v) \ fn.glVertexAttribL3dv(index, HostAddr(v, const GLdouble *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLVERTEXATTRIBL4DV(index, v) \ GLint const size = 4; \ GLdouble tmp[size]; \ Atari2HostDoubleArray(size, v, tmp); \ fn.glVertexAttribL4dv(index, tmp) #else #define FN_GLVERTEXATTRIBL4DV(index, v) \ fn.glVertexAttribL4dv(index, HostAddr(v, const GLdouble *)) #endif /* TODO */ #define FN_GLVERTEXATTRIBLPOINTER(index, size, type, stride, pointer) \ fn.glVertexAttribLPointer(index, size, type, stride, HostAddr(pointer, const void *)) #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETVERTEXATTRIBLDV(index, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLdouble tmp[size]; \ fn.glGetVertexAttribLdv(index, pname, tmp); \ Host2AtariDoubleArray(size, tmp, params) #else #define FN_GLGETVERTEXATTRIBLDV(index, pname, params) \ fn.glGetVertexAttribLdv(index, pname, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMPIPELINEINFOLOG(pipeline, bufSize, length, infoLog) \ GLsizei l = 0; \ GLchar tmp[MAX(bufSize, 0)]; \ fn.glGetProgramPipelineInfoLog(pipeline, bufSize, &l, tmp); \ Host2AtariByteArray(MIN(l + 1, bufSize), tmp, infoLog); \ Host2AtariIntArray(1, &l, length) #else #define FN_GLGETPROGRAMPIPELINEINFOLOG(pipeline, bufSize, length, infoLog) \ fn.glGetProgramPipelineInfoLog(pipeline, bufSize, HostAddr(length, GLsizei *), HostAddr(infoLog, GLchar *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVIEWPORTARRAYV(first, count, v) \ GLsizei const size = 4 * count; \ if (size <= 0) return; \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, v, tmp); \ fn.glViewportArrayv(first, count, ptmp) #else #define FN_GLVIEWPORTARRAYV(first, count, v) \ fn.glViewportArrayv(first, count, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLVIEWPORTINDEXEDFV(index, v) \ GLsizei const size = 4; \ GLfloat tmp[size], *ptmp; \ ptmp = Atari2HostFloatArray(size, v, tmp); \ fn.glViewportIndexedfv(index, ptmp) #else #define FN_GLVIEWPORTINDEXEDFV(index, v) \ fn.glViewportIndexedfv(index, HostAddr(v, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSCISSORARRAYV(first, count, v) \ GLsizei const size = 4 * count; \ if (size <= 0) return; \ GLint tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glScissorArrayv(first, count, tmp) #else #define FN_GLSCISSORARRAYV(first, count, v) \ fn.glScissorArrayv(first, count, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLSCISSORINDEXEDV(index, v) \ GLsizei const size = 4; \ GLint tmp[size]; \ Atari2HostIntArray(size, v, tmp); \ fn.glScissorIndexedv(index, tmp) #else #define FN_GLSCISSORINDEXEDV(index, v) \ fn.glScissorIndexedv(index, HostAddr(v, const GLint *)) #endif #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLDEPTHRANGEARRAYV(first, count, v) \ GLsizei const size = 2 * count; \ if (size <= 0) return; \ GLdouble tmp[size], *ptmp; \ ptmp = Atari2HostDoubleArray(size, v, tmp); \ fn.glDepthRangeArrayv(first, count, ptmp) #else #define FN_GLDEPTHRANGEARRAYV(first, count, v) \ fn.glDepthRangeArrayv(first, count, HostAddr(v, const GLdouble *)) #endif /* -------------------------------------------------------------------------- */ /* * Version 4.2 */ #define FN_GLDRAWELEMENTSINSTANCEDBASEINSTANCE(mode, count, type, indices, instancecount, baseinstance) \ void *tmp; \ convertClientArrays(count); \ pixelBuffer buf(*this); \ switch(type) { \ case GL_UNSIGNED_BYTE: \ case GL_UNSIGNED_SHORT: \ case GL_UNSIGNED_INT: \ tmp = buf.convertArray(count, type, (nfmemptr)indices); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ fn.glDrawElementsInstancedBaseInstance(mode, count, type, tmp, instancecount, baseinstance) #define FN_GLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE(mode, count, type, indices, instancecount, basevertex, baseinstance) \ void *tmp; \ convertClientArrays(count); \ pixelBuffer buf(*this); \ switch(type) { \ case GL_UNSIGNED_BYTE: \ case GL_UNSIGNED_SHORT: \ case GL_UNSIGNED_INT: \ tmp = buf.convertArray(count, type, (nfmemptr)indices); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ fn.glDrawElementsInstancedBaseVertexBaseInstance(mode, count, type, tmp, instancecount, basevertex, baseinstance) #if NFOSMESA_NEED_INT_CONV #define FN_GLGETINTERNALFORMATIV(target, internalformat, pname, bufSize, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetInternalformativ(target, internalformat, pname, bufSize, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETINTERNALFORMATIV(target, internalformat, pname, bufSize, params) \ fn.glGetInternalformativ(target, internalformat, pname, bufSize, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETACTIVEATOMICCOUNTERBUFFERIV(program, bufferIndex, pname, params) \ GLint n; \ if (pname == GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES) { \ n = 0; \ fn.glGetActiveAtomicCounterBufferiv(program, bufferIndex, GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS, &n); \ } else { \ n = 1; \ } \ if (n > 0 && params) { \ GLint tmp[n]; \ fn.glGetActiveAtomicCounterBufferiv(program, bufferIndex, pname, tmp); \ Host2AtariIntArray(n, tmp, params); \ } #else #define FN_GLGETACTIVEATOMICCOUNTERBUFFERIV(program, bufferIndex, pname, params) \ fn.glGetActiveAtomicCounterBufferiv(program, bufferIndex, pname, HostAddr(params, GLint *)) #endif /* -------------------------------------------------------------------------- */ /* * Version 4.3 */ #if NFOSMESA_NEED_INT_CONV #define FN_GLGETFRAMEBUFFERPARAMETERIV(target, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ fn.glGetFramebufferParameteriv(target, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETFRAMEBUFFERPARAMETERIV(target, pname, params) \ fn.glGetFramebufferParameteriv(target, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLDEBUGMESSAGEINSERT(source, type, id, severity, length, buf) \ if (length < 0) length = safe_strlen(buf); \ GLchar stringbuf[length], *pstring; \ pstring = Atari2HostByteArray(length, buf, stringbuf); \ return fn.glDebugMessageInsert(source, type, id, severity, length, pstring) #else #define FN_GLDEBUGMESSAGEINSERT(source, type, id, severity, length, buf) \ return fn.glDebugMessageInsert(source, type, id, severity, length, HostAddr(buf, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETDEBUGMESSAGELOG(count, bufSize, sources, types, ids, severities, lengths, messageLog) \ GLenum *psources; \ GLenum *ptypes; \ GLuint *pids; \ GLenum *pseverities; \ GLsizei *plengths; \ GLchar *pmessageLog; \ if (sources ) { \ psources = (GLenum *)malloc(count * sizeof(*psources)); \ if (psources == NULL) { glSetError(GL_OUT_OF_MEMORY); return 0; } \ } else { \ psources = NULL; \ } \ if (types) { \ ptypes = (GLenum *)malloc(count * sizeof(*ptypes)); \ if (ptypes == NULL) { glSetError(GL_OUT_OF_MEMORY); return 0; } \ } else { \ ptypes = NULL; \ } \ if (ids) { \ pids = (GLuint *)malloc(count * sizeof(*pids)); \ if (pids == NULL) { glSetError(GL_OUT_OF_MEMORY); return 0; } \ } else { \ pids = NULL; \ } \ if (severities) { \ pseverities = (GLenum *)malloc(count * sizeof(*pseverities)); \ if (pseverities == NULL) { glSetError(GL_OUT_OF_MEMORY); return 0; } \ } else { \ pseverities = NULL; \ } \ if (lengths) { \ plengths = (GLsizei *)malloc(count * sizeof(*plengths)); \ if (plengths == NULL) { glSetError(GL_OUT_OF_MEMORY); return 0; } \ } else { \ plengths = NULL; \ } \ if (messageLog) { \ pmessageLog = (GLchar *)malloc(bufSize); \ if (pmessageLog == NULL) { glSetError(GL_OUT_OF_MEMORY); return 0; } \ } else { \ pmessageLog = NULL; \ } \ count = fn.glGetDebugMessageLog(count, bufSize, psources, ptypes, pids, pseverities, plengths, pmessageLog); \ Host2AtariIntArray(count, psources, sources); free(psources); \ Host2AtariIntArray(count, ptypes, types); free(ptypes); \ Host2AtariIntArray(count, pids, ids); free(pids); \ Host2AtariIntArray(count, pseverities, severities); free(pseverities); \ Host2AtariIntArray(count, plengths, lengths); free(plengths); \ Host2AtariByteArray(bufSize, pmessageLog, messageLog); free(pmessageLog); \ return count #else #define FN_GLGETDEBUGMESSAGELOG(count, bufSize, sources, types, ids, severities, lengths, messageLog) \ return fn.glGetDebugMessageLog(count, bufSize, HostAddr(sources, GLenum *), HostAddr(types, GLenum *), HostAddr(ids, GLuint *), HostAddr(severities, GLenum *), HostAddr(lengths, GLsizei *), HostAddr(messageLog, GLchar *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLDEBUGMESSAGECONTROL(source, type, severity, count, ids, enabled) \ GLuint tmp[MAX(count, 0)], *ptmp; \ ptmp = Atari2HostIntArray(count, ids, tmp); \ fn.glDebugMessageControl(source, type, severity, count, ptmp, enabled) #else #define FN_GLDEBUGMESSAGECONTROL(source, type, severity, count, ids, enabled) \ fn.glDebugMessageControl(source, type, severity, count, HostAddr(ids, const GLuint *), enabled) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLPUSHDEBUGGROUP(source, name, length, label) \ if (length < 0) length = safe_strlen(label); \ GLchar labelbuf[length], *plabel; \ plabel = Atari2HostByteArray(length, label, labelbuf); \ fn.glPushDebugGroup(source, name, length, plabel) #else #define FN_GLPUSHDEBUGGROUP(source, name, length, label) \ fn.glPushDebugGroup(source, name, length, HostAddr(label, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLOBJECTLABEL(identifier, name, length, label) \ if (length < 0) length = safe_strlen(label); \ GLchar labelbuf[length], *plabel; \ plabel = Atari2HostByteArray(length, label, labelbuf); \ fn.glObjectLabel(identifier, name, length, plabel) #else #define FN_GLOBJECTLABEL(identifier, name, length, label) \ fn.glObjectLabel(identifier, name, length, HostAddr(label, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETOBJECTLABEL(identifier, name, bufSize, length, label) \ GLsizei l = 0; \ GLchar labelbuf[MAX(bufSize, 0)]; \ fn.glGetObjectLabel(identifier, name, bufSize, &l, labelbuf); \ Host2AtariIntArray(1, &l, length); \ Host2AtariByteArray(MIN(l + 1, bufSize), labelbuf, label) #else #define FN_GLGETOBJECTLABEL(identifier, name, bufSize, length, label) \ fn.glGetObjectLabel(identifier, name, bufSize, HostAddr(length, GLsizei *), HostAddr(label, GLchar *)) #endif #define FN_GLOBJECTPTRLABEL(identifier, length, label) \ if (length < 0) length = safe_strlen(label) + 1; \ GLchar tmp[length], *plabel; \ plabel = Atari2HostByteArray(length, label, tmp); \ void *pid = NFHost2AtariAddr(identifier); \ fn.glObjectPtrLabel(pid, length, plabel) #define FN_GLGETOBJECTPTRLABEL(identifier, bufSize, length, label) \ GLsizei l; \ GLchar namebuf[MAX(bufSize, 0)]; \ void *pid = NFHost2AtariAddr(identifier); \ fn.glGetObjectPtrLabel(pid, bufSize, &l, namebuf); \ Host2AtariByteArray(MIN(l + 1, bufSize), namebuf, label); \ Host2AtariIntArray(1, &l, length) #if NFOSMESA_NEED_INT_CONV #define FN_GLGETINTERNALFORMATI64V(target, internalformat, pname, bufSize, params) \ GLint const size = 1; \ GLint64 tmp[size]; \ fn.glGetInternalformati64v(target, internalformat, pname, bufSize, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETINTERNALFORMATI64V(target, internalformat, pname, bufSize, params) \ fn.glGetInternalformati64v(target, internalformat, pname, bufSize, HostAddr(params, GLint64 *)) #endif /* * The parameters addressed by indirect are packed into a structure that takes the form (in C): * * typedef struct { * uint num_groups_x; * uint num_groups_y; * uint num_groups_z; * } DispatchIndirectCommand; */ #define FN_GLDISPATCHCOMPUTEINDIRECT(indirect) \ if (contexts[cur_context].buffer_bindings.dispatch_indirect.id) { \ fn.glDispatchComputeIndirect(indirect); \ } else { \ glSetError(GL_INVALID_OPERATION); \ } #define FN_GLINVALIDATEBUFFERDATA(buffer) \ gl_buffer_t *buf = gl_get_buffer(buffer); \ if (buf) { \ buf->atari_buffer = 0; \ free(buf->host_buffer); \ buf->host_buffer = NULL; \ buf->size = 0; \ } #if NFOSMESA_NEED_INT_CONV #define FN_GLINVALIDATEFRAMEBUFFER(target, numAttachments, attachments) \ GLenum tmp[MAX(numAttachments, 0)], *ptmp; \ ptmp = Atari2HostIntArray(numAttachments, attachments, tmp); \ fn.glInvalidateFramebuffer(target, numAttachments, ptmp) #else #define FN_GLINVALIDATEFRAMEBUFFER(target, numAttachments, attachments) \ fn.glInvalidateFramebuffer(target, numAttachments, HostAddr(attachments, const GLenum *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLINVALIDATESUBFRAMEBUFFER(target, numAttachments, attachments, x, y, width, height) \ GLenum tmp[MAX(numAttachments, 0)], *ptmp; \ ptmp = Atari2HostIntArray(numAttachments, attachments, tmp); \ fn.glInvalidateSubFramebuffer(target, numAttachments, ptmp, x, y, width, height) #else #define FN_GLINVALIDATESUBFRAMEBUFFER(target, numAttachments, attachments, x, y, width, height) \ fn.glInvalidateSubFramebuffer(target, numAttachments, HostAddr(attachments, const GLenum *), x, y, width, height) #endif #define FN_GLMULTIDRAWARRAYSINDIRECT(mode, indirect, drawcount, stride) \ /* \ * The parameters addressed by indirect are packed into a structure that takes the form (in C): \ * \ * typedef struct { \ * uint count; \ * uint primCount; \ * uint first; \ * uint baseInstance; \ * } DrawArraysIndirectCommand; \ */ \ if (contexts[cur_context].buffer_bindings.draw_indirect.id) { \ void *offset = NFHost2AtariAddr(indirect); \ fn.glMultiDrawArraysIndirect(mode, offset, drawcount, stride); \ } else if (indirect) { \ if (stride == 0) stride = 4 * sizeof(Uint32); \ nfcmemptr indptr = (nfcmemptr)indirect; \ for (GLsizei n = 0; n < drawcount; n++) { \ GLuint tmp[4] = { 0, 0, 0, 0 }; \ Atari2HostIntArray(4, indptr, tmp); \ GLuint count = tmp[0]; \ convertClientArrays(count); \ fn.glDrawArraysInstancedBaseInstance(mode, tmp[2], count, tmp[1], tmp[3]); \ indptr += stride; \ } \ } /* * The parameters addressed by indirect are packed into a structure that takes the form (in C): * * typedef struct { * uint count; * uint primCount; * uint firstIndex; * uint baseVertex; * uint baseInstance; * } DrawElemntsIndirectCommand; */ #define FN_GLMULTIDRAWELEMENTSINDIRECT(mode, type, indirect, drawcount, stride) \ if (contexts[cur_context].buffer_bindings.draw_indirect.id) { \ void *offset = NFHost2AtariAddr(indirect); \ fn.glMultiDrawElementsIndirect(mode, type, offset, drawcount, stride); \ } else if (indirect) { \ if (stride == 0) stride = 5 * sizeof(Uint32); \ nfcmemptr pind = (nfcmemptr)indirect; \ for (GLsizei n = 0; n < drawcount; n++) { \ GLuint tmp[5] = { 0, 0, 0, 0, 0 }; \ Atari2HostIntArray(5, pind, tmp); \ GLuint count = tmp[0]; \ convertClientArrays(count); \ fn.glDrawElementsInstancedBaseVertexBaseInstance(mode, count, type, (const void *)(uintptr_t)tmp[2], tmp[1], tmp[3], tmp[4]); \ pind += stride; \ } \ } #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMINTERFACEIV(program, programInterface, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetProgramInterfaceiv(program, programInterface, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETPROGRAMINTERFACEIV(program, programInterface, pname, params) \ fn.glGetProgramInterfaceiv(program, programInterface, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETPROGRAMRESOURCEINDEX(program, programInterface, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ return fn.glGetProgramResourceIndex(program, programInterface, ptmp) #else #define FN_GLGETPROGRAMRESOURCEINDEX(program, programInterface, name) \ return fn.glGetProgramResourceIndex(program, programInterface, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMRESOURCENAME(program, programInterface, index, bufSize, length, name) \ GLsizei l = 0; \ GLchar namebuf[MAX(bufSize, 0)]; \ fn.glGetProgramResourceName(program, programInterface, index, bufSize, &l, namebuf); \ Host2AtariByteArray(MIN(l + 1, bufSize), namebuf, name); \ Host2AtariIntArray(1, &l, length) #else #define FN_GLGETPROGRAMRESOURCENAME(program, programInterface, index, bufSize, length, name) \ fn.glGetProgramResourceName(program, programInterface, index, bufSize, HostAddr(length, GLsizei *), HostAddr(name, GLchar *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETPROGRAMRESOURCEIV(program, programInterface, index, propCount, props, bufSize, length, params) \ GLint const size = MAX(propCount, 0); \ GLenum tmp[size], *ptmp; \ GLint tmpparam[MAX(bufSize, 0)]; \ GLsizei l = 0; \ ptmp = Atari2HostIntArray(size, props, tmp); \ fn.glGetProgramResourceiv(program, programInterface, index, propCount, ptmp, bufSize, &l, tmpparam); \ Host2AtariIntArray(1, &l, length); \ Host2AtariIntArray(l, tmpparam, params) #else #define FN_GLGETPROGRAMRESOURCEIV(program, programInterface, index, propCount, props, bufSize, length, params) \ fn.glGetProgramResourceiv(program, programInterface, index, propCount, HostAddr(props, const GLenum *), bufSize, HostAddr(length, GLsizei *), HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETPROGRAMRESOURCELOCATION(program, programInterface, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ return fn.glGetProgramResourceLocation(program, programInterface, ptmp) #else #define FN_GLGETPROGRAMRESOURCELOCATION(program, programInterface, name) \ return fn.glGetProgramResourceLocation(program, programInterface, HostAddr(name, const GLchar *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETPROGRAMRESOURCELOCATIONINDEX(program, programInterface, name) \ GLchar tmp[safe_strlen(name) + 1], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), name, tmp); \ return fn.glGetProgramResourceLocationIndex(program, programInterface, ptmp) #else #define FN_GLGETPROGRAMRESOURCELOCATIONINDEX(program, programInterface, name) \ return fn.glGetProgramResourceLocationIndex(program, programInterface, HostAddr(name, const GLchar *)) #endif /* TODO */ #define FN_GLBINDVERTEXBUFFER(bindingindex, buffer, offset, stride) \ fn.glBindVertexBuffer(bindingindex, buffer, offset, stride) /* -------------------------------------------------------------------------- */ /* * Version 4.4 */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLBUFFERSTORAGE(target, size, data, flags) \ GLubyte tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glBufferStorage(target, size, ptmp, flags) #else #define FN_GLBUFFERSTORAGE(target, size, data, flags) \ fn.glBufferStorage(target, size, HostAddr(data, const void *), flags) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLCLEARTEXIMAGE(texture, level, format, type, data) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(1, 1, 1, format, type, (nfmemptr)data); \ fn.glClearTexImage(texture, level, format, type, tmp) #else #define FN_GLCLEARTEXIMAGE(texture, level, format, type, data) \ fn.glClearTexImage(texture, level, format, type, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLCLEARTEXSUBIMAGE(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, depth, format, type, (nfmemptr)data); \ fn.glClearTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, tmp) #else #define FN_GLCLEARTEXSUBIMAGE(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data) \ fn.glClearTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, HostAddr(data, const void *)) #endif #define FN_GLBINDBUFFERSBASE(target, first, count, buffers) \ if (buffers) { \ GLuint tmp[MAX(count, 0)]; \ Atari2HostIntArray(count, buffers, tmp); \ for (GLsizei i = 0; i < count; i++) \ gl_bind_buffer(target, tmp[i], first + i, 0); \ fn.glBindBuffersBase(target, first, count, tmp); \ } else { \ for (GLsizei i = 0; i < count; i++) \ gl_bind_buffer(target, 0, first + i, 0); \ fn.glBindBuffersBase(target, first, count, NULL); \ } #define FN_GLBINDBUFFERSRANGE(target, first, count, buffers, offsets, sizes) \ GLsizei const size = MAX(count, 0); \ GLuint tmpbuffers[size], *pbuffers; \ GLintptr tmpoffsets[size], *poffsets; \ GLsizeiptr tmpsizes[size], *psizes; \ pbuffers = Atari2HostIntArray(count, buffers, tmpbuffers); \ if (pbuffers) { \ for (GLsizei i = 0; i < count; i++) \ gl_bind_buffer(target, pbuffers[i], first + i, 0); \ } else { \ for (GLsizei i = 0; i < count; i++) \ gl_bind_buffer(target, 0, first + i, 0); \ } \ poffsets = Atari2HostIntptrArray(count, offsets, tmpoffsets); \ psizes = Atari2HostIntptrArray(count, sizes, tmpsizes); \ fn.glBindBuffersRange(target, first, count, pbuffers, poffsets, psizes) #if NFOSMESA_NEED_INT_CONV #define FN_GLBINDTEXTURES(first, count, textures) \ GLuint tmp[MAX(count, 0)], *ptmp; \ ptmp = Atari2HostIntArray(count, textures, tmp); \ fn.glBindTextures(first, count, ptmp) #else #define FN_GLBINDTEXTURES(first, count, samples) \ fn.glBindTextures(first, count, HostAddr(textures, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLBINDSAMPLERS(first, count, samplers) \ GLuint tmp[MAX(count, 0)], *ptmp; \ ptmp = Atari2HostIntArray(count, samplers, tmp); \ fn.glBindSamplers(first, count, ptmp) #else #define FN_GLBINDSAMPLERS(first, count, samples) \ fn.glBindSamplers(first, count, HostAddr(samplers, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLBINDIMAGETEXTURES(first, count, textures) \ GLuint tmp[MAX(count, 0)], *ptmp; \ ptmp = Atari2HostIntArray(count, textures, tmp); \ fn.glBindImageTextures(first, count, ptmp) #else #define FN_GLBINDIMAGETEXTURES(first, count, textures) \ fn.glBindImageTextures(first, count, HostAddr(textures, const GLuint *)) #endif #define FN_GLBINDVERTEXBUFFERS(first, count, buffers, offsets, sizes) \ GLsizei const size = MAX(count, 0); \ GLuint tmpbuffers[size], *pbuffers; \ GLintptr tmpoffsets[size], *poffsets; \ GLsizei tmpsiz[size], *psizes; \ pbuffers = Atari2HostIntArray(count, buffers, tmpbuffers); \ poffsets = Atari2HostIntptrArray(count, offsets, tmpoffsets); \ psizes = Atari2HostIntArray(count, sizes, tmpsiz); \ fn.glBindVertexBuffers(first, count, pbuffers, poffsets, psizes) /* -------------------------------------------------------------------------- */ /* * Version 4.5 */ #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLCLEARNAMEDBUFFERDATA(buffer, internalformat, format, type, data) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(1, 1, 1, format, type, (nfmemptr)data); \ fn.glClearNamedBufferData(buffer, internalformat, format, type, tmp) #else #define FN_GLCLEARNAMEDBUFFERDATA(buffer, internalformat, format, type, data) \ fn.glClearNamedBufferData(buffer, internalformat, format, type, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV || NFOSMESA_NEED_DOUBLE_CONV #define FN_GLCLEARNAMEDBUFFERSUBDATA(buffer, internalformat, offset, size, format, type, data) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(1, 1, 1, format, type, (nfmemptr)data); \ fn.glClearNamedBufferSubData(buffer, internalformat, offset, size, format, type, tmp) #else #define FN_GLCLEARNAMEDBUFFERSUBDATA(buffer, internalformat, offset, size, format, type, data) \ fn.glClearNamedBufferSubData(buffer, internalformat, offset, size, format, type, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCLEARNAMEDFRAMEBUFFERIV(framebuffer, buffer, drawbuffer, value) \ GLint tmp[4], *ptmp; \ GLuint size = 0; \ switch (buffer) { \ case GL_COLOR: size = 4; break; \ case GL_STENCIL: \ case GL_DEPTH: size = 1; break; \ case GL_DEPTH_STENCIL: size = 2; break; \ } \ ptmp = Atari2HostIntArray(size, value, tmp); \ fn.glClearNamedFramebufferiv(framebuffer, buffer, drawbuffer, ptmp) #else #define FN_GLCLEARNAMEDFRAMEBUFFERIV(framebuffer, buffer, drawbuffer, value) \ fn.glClearNamedFramebufferiv(framebuffer, buffer, drawbuffer, HostAddr(value, const GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCLEARNAMEDFRAMEBUFFERUIV(framebuffer, buffer, drawbuffer, value) \ GLuint tmp[4], *ptmp; \ GLuint size = 0; \ switch (buffer) { \ case GL_COLOR: size = 4; break; \ case GL_STENCIL: \ case GL_DEPTH: size = 1; break; \ case GL_DEPTH_STENCIL: size = 2; break; \ } \ ptmp = Atari2HostIntArray(size, value, tmp); \ fn.glClearNamedFramebufferuiv(framebuffer, buffer, drawbuffer, ptmp) #else #define FN_GLCLEARNAMEDFRAMEBUFFERUIV(framebuffer, buffer, drawbuffer, value) \ fn.glClearNamedFramebufferuiv(framebuffer, buffer, drawbuffer, HostAddr(value, const GLuint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLCLEARNAMEDFRAMEBUFFERFV(framebuffer, buffer, drawbuffer, value) \ GLfloat tmp[4], *ptmp; \ GLuint size = 0; \ switch (buffer) { \ case GL_COLOR: size = 4; break; \ case GL_STENCIL: \ case GL_DEPTH: size = 1; break; \ case GL_DEPTH_STENCIL: size = 2; break; \ } \ ptmp = Atari2HostFloatArray(size, value, tmp); \ fn.glClearNamedFramebufferfv(framebuffer, buffer, drawbuffer, ptmp) #else #define FN_GLCLEARNAMEDFRAMEBUFFERFV(framebuffer, buffer, drawbuffer, value) \ fn.glClearNamedFramebufferfv(framebuffer, buffer, drawbuffer, HostAddr(value, const GLfloat *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXTURESUBIMAGE1D(texture, level, xoffset, width, format, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedTextureSubImage1D(texture, level, xoffset, width, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXTURESUBIMAGE1D(texture, level, xoffset, width, format, imageSize, bits) \ fn.glCompressedTextureSubImage1D(texture, level, xoffset, width, format, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXTURESUBIMAGE2D(texture, level, xoffset, yoffset, width, height, format, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedTextureSubImage2D(texture, level, xoffset, yoffset, width, height, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXTURESUBIMAGE2D(texture, level, xoffset, yoffset, width, height, format, imageSize, bits) \ fn.glCompressedTextureSubImage2D(texture, level, xoffset, yoffset, width, height, format, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLCOMPRESSEDTEXTURESUBIMAGE3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits) \ GLubyte tmp[MAX(imageSize, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), bits, tmp); \ fn.glCompressedTextureSubImage3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, ptmp) #else #define FN_GLCOMPRESSEDTEXTURESUBIMAGE3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits) \ fn.glCompressedTextureSubImage3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, HostAddr(bits, const void *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCREATEBUFFERS(n, buffers) \ GLuint tmp[MAX(n, 0)]; \ fn.glCreateBuffers(n, tmp); \ Host2AtariIntArray(n, tmp, buffers) #else #define FN_GLCREATEBUFFERS(n, buffers) \ fn.glCreateBuffers(n, HostAddr(buffers, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCREATEFRAMEBUFFERS(n, framebuffers) \ GLuint tmp[MAX(n, 0)]; \ fn.glCreateFramebuffers(n, tmp); \ Host2AtariIntArray(n, tmp, framebuffers) #else #define FN_GLCREATEFRAMEBUFFERS(n, framebuffers) \ fn.glCreateFramebuffers(n, HostAddr(framebuffers, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCREATEPROGRAMPIPELINES(n, pipelines) \ GLuint tmp[MAX(n, 0)]; \ fn.glCreateProgramPipelines(n, tmp); \ Host2AtariIntArray(n, tmp, pipelines) #else #define FN_GLCREATEPROGRAMPIPELINES(n, pipelines) \ fn.glCreateProgramPipelines(n, HostAddr(pipelines, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCREATEQUERIES(target, n, pipelines) \ GLuint tmp[MAX(n, 0)]; \ fn.glCreateQueries(target, n, tmp); \ Host2AtariIntArray(n, tmp, pipelines) #else #define FN_GLCREATEQUERIES(target, n, pipelines) \ fn.glCreateQueries(target, n, HostAddr(pipelines, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCREATERENDERBUFFERS(n, renderbuffers) \ GLuint tmp[MAX(n, 0)]; \ fn.glCreateRenderbuffers(n, tmp); \ Host2AtariIntArray(n, tmp, renderbuffers) #else #define FN_GLCREATERENDERBUFFERS(n, renderbuffers) \ fn.glCreateRenderbuffers(n, HostAddr(renderbuffers, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCREATESAMPLERS(n, samplers) \ GLuint tmp[MAX(n, 0)]; \ fn.glCreateSamplers(n, tmp); \ Host2AtariIntArray(n, tmp, samplers) #else #define FN_GLCREATESAMPLERS(n, samplers) \ fn.glCreateSamplers(n, HostAddr(samplers, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCREATETEXTURES(target, n, textures) \ GLuint tmp[MAX(n, 0)]; \ fn.glCreateTextures(target, n, tmp); \ Host2AtariIntArray(n, tmp, textures) #else #define FN_GLCREATETEXTURES(target, n, textures) \ fn.glCreateTextures(target, n, HostAddr(textures, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCREATETRANSFORMFEEDBACKS(n, ids) \ GLuint tmp[MAX(n, 0)]; \ fn.glCreateTransformFeedbacks(n, tmp); \ Host2AtariIntArray(n, tmp, ids) #else #define FN_GLCREATETRANSFORMFEEDBACKS(n, ids) \ fn.glCreateTransformFeedbacks(n, HostAddr(ids, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLCREATEVERTEXARRAYS(n, arrays) \ GLuint tmp[MAX(n, 0)]; \ fn.glCreateVertexArrays(n, tmp); \ Host2AtariIntArray(n, tmp, arrays) #else #define FN_GLCREATEVERTEXARRAYS(n, arrays) \ fn.glCreateVertexArrays(n, HostAddr(arrays, GLuint *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETCOMPRESSEDTEXTUREIMAGE(texture, level, bufSize, pixels) \ GLubyte tmp[MAX(bufSize, 0)]; \ fn.glGetCompressedTextureImage(texture, level, bufSize, tmp); \ Host2AtariByteArray(sizeof(tmp), tmp, pixels) #else #define FN_GLGETCOMPRESSEDTEXTUREIMAGE(texture, level, bufSize, pixels) \ fn.glGetCompressedTextureImage(texture, level, bufSize, HostAddr(pixels, void *)) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETCOMPRESSEDTEXTURESUBIMAGE(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels) \ GLubyte tmp[MAX(bufSize, 0)]; \ fn.glGetCompressedTextureSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, tmp); \ Host2AtariByteArray(sizeof(tmp), tmp, pixels) #else #define FN_GLGETCOMPRESSEDTEXTURESUBIMAGE(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels) \ fn.glGetCompressedTextureSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, HostAddr(pixels, void *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDBUFFERPARAMETERI64V(buffer, pname, params) \ GLint const size = 1; \ GLint64 tmp[MAX(size, 16)]; \ fn.glGetNamedBufferParameteri64v(buffer, pname, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETNAMEDBUFFERPARAMETERI64V(buffer, pname, params) \ fn.glGetNamedBufferParameteri64v(buffer, pname, HostAddr(params, GLint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDBUFFERPARAMETERIV(buffer, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetNamedBufferParameteriv(buffer, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNAMEDBUFFERPARAMETERIV(buffer, pname, params) \ fn.glGetNamedBufferParameteriv(buffer, pname, HostAddr(params, GLint *)) #endif #define FN_GLGETNAMEDBUFFERPOINTERV(buffer, pname, params) \ void *tmp = NULL; \ fn.glGetNamedBufferPointerv(buffer, pname, &tmp); \ /* TODO */ \ memptr zero = 0; \ Host2AtariIntArray(1, &zero, AtariAddr(params, memptr *)) #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV(framebuffer, attachment, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetNamedFramebufferAttachmentParameteriv(framebuffer, attachment, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV(framebuffer, attachment, pname, params) \ fn.glGetNamedFramebufferAttachmentParameteriv(framebuffer, attachment, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDFRAMEBUFFERPARAMETERIV(framebuffer, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetNamedFramebufferParameteriv(framebuffer, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNAMEDFRAMEBUFFERPARAMETERIV(framebuffer, pname, params) \ fn.glGetNamedFramebufferParameteriv(framebuffer, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNAMEDRENDERBUFFERPARAMETERIV(renderbuffer, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetNamedRenderbufferParameteriv(renderbuffer, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNAMEDRENDERBUFFERPARAMETERIV(renderbuffer, pname, params) \ fn.glGetNamedRenderbufferParameteriv(renderbuffer, pname, HostAddr(params, GLint *)) #endif #define FN_GLGETTEXTUREIMAGE(texture, level, format, type, bufSize, img) \ GLint width = 0, height = 1, depth = 1; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ GLint target = 0; \ \ fn.glGetTextureParameteriv(texture, GL_TEXTURE_TARGET, &target); \ switch (target) { \ case GL_TEXTURE_1D: \ case GL_PROXY_TEXTURE_1D: \ fn.glGetTextureLevelParameteriv(texture, level, GL_TEXTURE_WIDTH, &width); \ break; \ case GL_TEXTURE_2D: \ case GL_PROXY_TEXTURE_2D: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_X: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: \ case GL_PROXY_TEXTURE_CUBE_MAP: \ fn.glGetTextureLevelParameteriv(texture, level, GL_TEXTURE_WIDTH, &width); \ fn.glGetTextureLevelParameteriv(texture, level, GL_TEXTURE_HEIGHT, &height); \ break; \ case GL_TEXTURE_3D: \ case GL_PROXY_TEXTURE_3D: \ fn.glGetTextureLevelParameteriv(texture, level, GL_TEXTURE_WIDTH, &width); \ fn.glGetTextureLevelParameteriv(texture, level, GL_TEXTURE_HEIGHT, &height); \ fn.glGetTextureLevelParameteriv(texture, level, GL_TEXTURE_DEPTH, &depth); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(img); \ fn.glGetTextureImage(texture, level, format, type, bufSize, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(bufSize, format, type)) return; \ } else { \ src = buf.hostBuffer(bufSize, format, type, (nfmemptr)img); \ if (src == NULL) return; \ fn.glGetTextureImage(texture, level, format, type, bufSize, src); \ dst = (nfmemptr)img; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXTURELEVELPARAMETERIV(texture, level, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetTextureLevelParameteriv(texture, level, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXTURELEVELPARAMETERIV(texture, level, pname, params) \ fn.glGetTextureLevelParameteriv(texture, level, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETTEXTURELEVELPARAMETERFV(texture, level, pname, params) \ GLint const size = 1; \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetTextureLevelParameterfv(texture, level, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETTEXTURELEVELPARAMETERFV(texture, level, pname, params) \ fn.glGetTextureLevelParameterfv(texture, level, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXTUREPARAMETERIIV(texunit, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetTextureParameterIiv(texunit, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXTUREPARAMETERIIV(texunit, pname, params) \ fn.glGetTextureParameterIiv(texunit, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXTUREPARAMETERIUIV(texunit, pname, params) \ GLint const size = 1; \ GLuint tmp[MAX(size, 16)]; \ fn.glGetTextureParameterIuiv(texunit, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXTUREPARAMETERIUIV(texunit, pname, params) \ fn.glGetTextureParameterIuiv(texunit, pname, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETTEXTUREPARAMETERFV(texture, pname, params) \ GLint const size = 1; \ GLfloat tmp[MAX(size, 16)]; \ fn.glGetTextureParameterfv(texture, pname, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETTEXTUREPARAMETERFV(texture, pname, params) \ fn.glGetTextureParameterfv(texture, pname, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTEXTUREPARAMETERIV(texture, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)]; \ fn.glGetTextureParameteriv(texture, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTEXTUREPARAMETERIV(texture, pname, params) \ fn.glGetTextureParameteriv(texture, pname, HostAddr(params, GLint *)) #endif #define FN_GLGETTEXTURESUBIMAGE(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, img) \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(img); \ fn.glGetTextureSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(bufSize, format, type)) return; \ } else { \ src = buf.hostBuffer(bufSize, format, type, (nfmemptr)img); \ if (src == NULL) return; \ fn.glGetTextureSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, src); \ dst = (nfmemptr)img; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTRANSFORMFEEDBACKI64_V(xfb, pname, index, params) \ GLint const size = 1; \ GLint64 tmp[size]; \ fn.glGetTransformFeedbacki64_v(xfb, pname, index, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETTRANSFORMFEEDBACKI64_V(xfb, pname, index, params) \ fn.glGetTransformFeedbacki64_v(xfb, pname, index, HostAddr(params, GLint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTRANSFORMFEEDBACKI_V(xfb, pname, index, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetTransformFeedbacki_v(xfb, pname, index, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTRANSFORMFEEDBACKI_V(xfb, pname, index, params) \ fn.glGetTransformFeedbacki_v(xfb, pname, index, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETTRANSFORMFEEDBACKIV(xfb, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetTransformFeedbackiv(xfb, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETTRANSFORMFEEDBACKIV(xfb, pname, params) \ fn.glGetTransformFeedbackiv(xfb, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXARRAYINDEXED64IV(vaobj, index, pname, params) \ GLint const size = 1; \ GLint64 tmp[size]; \ fn.glGetVertexArrayIndexed64iv(vaobj, index, pname, tmp); \ Host2AtariInt64Array(size, tmp, params) #else #define FN_GLGETVERTEXARRAYINDEXED64IV(vaobj, index, pname, params) \ fn.glGetVertexArrayIndexed64iv(vaobj, index, pname, HostAddr(params, GLint64 *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXARRAYINDEXEDIV(vaobj, index, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetVertexArrayIndexediv(vaobj, index, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETVERTEXARRAYINDEXEDIV(vaobj, index, pname, params) \ fn.glGetVertexArrayIndexediv(vaobj, index, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETVERTEXARRAYIV(vaobj, pname, params) \ GLint const size = 1; \ GLint tmp[size]; \ fn.glGetVertexArrayiv(vaobj, pname, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETVERTEXARRAYIV(vaobj, pname, params) \ fn.glGetVertexArrayiv(vaobj, pname, HostAddr(params, GLint *)) #endif #define FN_GLGETNCOLORTABLE(target, format, type, bufSize, table) \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(table); \ fn.glGetColorTableEXT(target, format, type, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(bufSize, format, type)) return;\ } else { \ src = buf.hostBuffer(bufSize, format, type, (nfmemptr)table); \ if (src == NULL) return; \ fn.glGetnColorTable(target, format, type, bufSize, src); \ dst = (nfmemptr)table; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETNCOMPRESSEDTEXIMAGE(target, lod, bufSize, img) \ GLubyte tmp[MAX(bufSize, 0)]; \ fn.glGetnCompressedTexImage(target, lod, bufSize, tmp); \ Host2AtariByteArray(bufSize, tmp, img) #else #define FN_GLGETNCOMPRESSEDTEXIMAGE(target, lod, bufSize, img) \ fn.glGetnCompressedTexImage(target, lod, bufSize, HostAddr(img, void *)) #endif #define FN_GLGETNCONVOLUTIONFILTER(target, format, type, bufSize, image) \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(image); \ fn.glGetnConvolutionFilter(target, format, type, bufSize, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(bufSize, format, type)) return; \ } else { \ src = buf.hostBuffer(bufSize, format, type, (nfmemptr)image); \ if (src == NULL) return; \ fn.glGetnConvolutionFilter(target, format, type, bufSize, src); \ dst = (nfmemptr)image; \ } \ buf.convertToAtari(src, dst) #define FN_GLGETNHISTOGRAM(target, reset, format, type, bufSize, values) \ GLint width = 0; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ fn.glGetHistogramParameteriv(target, GL_HISTOGRAM_WIDTH, &width); \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(values); \ fn.glGetnHistogram(target, reset, format, type, bufSize, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(bufSize, format, type)) return; \ } else { \ src = buf.hostBuffer(bufSize, format, type, (nfmemptr)values); \ if (src == NULL) return; \ fn.glGetnHistogram(target, reset, format, type, bufSize, src); \ dst = (nfmemptr)values; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETNMAPDV(target, query, bufSize, v) \ GLint const size = bufSize / ATARI_SIZEOF_DOUBLE; \ if (size <= 0) return; \ GLdouble tmp[size]; \ fn.glGetnMapdv(target, query, sizeof(tmp), tmp); \ Host2AtariDoubleArray(size, tmp, v) #else #define FN_GLGETNMAPDV(target, query, bufSize, v) \ fn.glGetnMapdv(target, query, bufSize, HostAddr(v, GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETNMAPFV(target, query, bufSize, v) \ GLint const size = bufSize / ATARI_SIZEOF_DOUBLE; \ if (size <= 0) return; \ GLfloat tmp[size]; \ fn.glGetnMapfv(target, query, sizeof(tmp), tmp); \ Host2AtariFloatArray(size, tmp, v) #else #define FN_GLGETNMAPFV(target, query, bufSize, v) \ fn.glGetnMapfv(target, query, bufSize, HostAddr(v, GLfloat *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETNMAPIV(target, query, bufSize, v) \ GLint const size = bufSize / ATARI_SIZEOF_DOUBLE; \ if (size <= 0) return; \ GLint tmp[size]; \ fn.glGetnMapiv(target, query, sizeof(tmp), tmp); \ Host2AtariIntArray(size, tmp, v) #else #define FN_GLGETNMAPIV(target, query, bufSize, v) \ fn.glGetnMapiv(target, query, bufSize, HostAddr(v, GLint *)) #endif #define FN_GLGETNMINMAX(target, reset, format, type, bufSize, values) \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ if (!buf.params(bufSize, format, type)) return; \ char result[bufSize]; \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(values); \ fn.glGetnMinmax(target, reset, format, type, bufSize, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ } else { \ src = result; \ fn.glGetnMinmax(target, reset, format, type, bufSize, src); \ dst = (nfmemptr)values; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETNPIXELMAPFV(map, bufSize, v) \ GLint const size = bufSize / ATARI_SIZEOF_FLOAT; \ if (size <= 0) return; \ GLfloat tmp[size]; \ fn.glGetnPixelMapfv(map, sizeof(tmp), tmp); \ Host2AtariFloatArray(size, tmp, v) #else #define FN_GLGETNPIXELMAPFV(map, bufSize, v) \ fn.glGetnPixelMapfv(map, bufSize, HostAddr(v, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNPIXELMAPUIV(map, bufSize, v) \ GLint const size = bufSize / sizeof(Uint32); \ if (size <= 0) return; \ GLuint tmp[size]; \ fn.glGetnPixelMapuiv(map, sizeof(tmp), tmp); \ Host2AtariIntArray(size, tmp, v) #else #define FN_GLGETNPIXELMAPUIV(map, bufSize, v) \ fn.glGetnPixelMapuiv(map, bufSize, HostAddr(v, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNPIXELMAPUSV(map, bufSize, v) \ GLint const size = bufSize / sizeof(Uint16); \ if (size <= 0) return; \ GLushort tmp[size]; \ fn.glGetnPixelMapusv(map, sizeof(tmp), tmp); \ Host2AtariShortArray(size, tmp, v) #else #define FN_GLGETNPIXELMAPUSV(map, bufSize, v) \ fn.glGetnPixelMapusv(map, bufSize, HostAddr(v, GLushort *)) #endif /* * FIXME: If a non-zero named buffer object is bound to the GL_PIXEL_PACK_BUFFER target (see glBindBuffer) while a polygon stipple pattern is requested, pattern is treated as a byte offset into the buffer object's data store. */ #if NFOSMESA_NEED_BYTE_CONV #define FN_GLGETNPOLYGONSTIPPLE(bufSize, mask) \ GLubyte tmp[bufSize]; \ fn.glGetnPolygonStipple(bufSize, tmp); \ Host2AtariByteArray(bufSize, tmp, mask) #else #define FN_GLGETNPOLYGONSTIPPLE(bufSize, mask) \ fn.glGetnPolygonStipple(bufSize, HostAddr(mask, GLubyte *)) #endif #define FN_GLGETNSEPARABLEFILTER(target, format, type, rowBufSize, row, columnBufSize, column, span) \ pixelBuffer rowbuf(*this); \ pixelBuffer colbuf(*this); \ char *srcrow; \ nfmemptr dstrow; \ char *srccol; \ nfmemptr dstcol; \ \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *rowoffset = NFHost2AtariAddr(row); \ void *coloffset = NFHost2AtariAddr(column); \ fn.glGetnSeparableFilter(target, format, type, rowBufSize, rowoffset, columnBufSize, coloffset, HostAddr(span, void *)); \ srcrow = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)rowoffset; \ srccol = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)coloffset; \ dstrow = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)rowoffset; \ dstcol = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)coloffset; \ if (!rowbuf.params(rowBufSize, format, type)) return; \ if (!colbuf.params(columnBufSize, format, type)) return; \ } else { \ srcrow = rowbuf.hostBuffer(rowBufSize, format, type, (nfmemptr)row); \ srccol = colbuf.hostBuffer(columnBufSize, format, type, (nfmemptr)column); \ if (srcrow == NULL || srccol == NULL) return; \ fn.glGetnSeparableFilter(target, format, type, rowBufSize, srcrow, columnBufSize, srccol, HostAddr(span, void *)); \ dstrow = (nfmemptr)row; \ dstcol = (nfmemptr)column; \ } \ rowbuf.convertToAtari(srcrow, dstrow); \ colbuf.convertToAtari(srccol, dstcol) #define FN_GLGETNTEXIMAGE(target, level, format, type, bufSize, img) \ GLint width = 0, height = 1, depth = 1; \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ switch (target) { \ case GL_TEXTURE_1D: \ case GL_PROXY_TEXTURE_1D: \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_WIDTH, &width); \ break; \ case GL_TEXTURE_2D: \ case GL_PROXY_TEXTURE_2D: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_X: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: \ case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: \ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: \ case GL_PROXY_TEXTURE_CUBE_MAP: \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_WIDTH, &width); \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_HEIGHT, &height); \ break; \ case GL_TEXTURE_3D: \ case GL_PROXY_TEXTURE_3D: \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_WIDTH, &width); \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_HEIGHT, &height); \ fn.glGetTexLevelParameteriv(target, level, GL_TEXTURE_DEPTH, &depth); \ break; \ default: \ glSetError(GL_INVALID_ENUM); \ return; \ } \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(img); \ fn.glGetnTexImage(target, level, format, type, bufSize, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(width, height, depth, format, type)) return; \ } else { \ src = buf.hostBuffer(width, height, depth, format, type, (nfmemptr)img); \ if (src == NULL) return; \ fn.glGetnTexImage(target, level, format, type, bufSize, src); \ dst = (nfmemptr)img; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_DOUBLE_CONV #define FN_GLGETNUNIFORMDV(program, location, bufSize, params) \ GLint const size = bufSize / ATARI_SIZEOF_DOUBLE; \ if (size <= 0) return; \ GLdouble tmp[size]; \ fn.glGetnUniformdv(program, location, size, tmp); \ Host2AtariDoubleArray(size, tmp, params) #else #define FN_GLGETNUNIFORMDV(program, location, bufSize, params) \ fn.glGetnUniformdv(program, location, bufSize, HostAddr(params, GLdouble *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLGETNUNIFORMFV(program, location, bufSize, params) \ GLint const size = bufSize / ATARI_SIZEOF_FLOAT; \ if (size <= 0) return; \ GLfloat tmp[size]; \ fn.glGetnUniformfv(program, location, size, tmp); \ Host2AtariFloatArray(size, tmp, params) #else #define FN_GLGETNUNIFORMFV(program, location, bufSize, params) \ fn.glGetnUniformfv(program, location, bufSize, HostAddr(params, GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNUNIFORMIV(program, location, bufSize, params) \ GLint const size = bufSize / sizeof(GLint); \ if (size <= 0) return; \ GLint tmp[size]; \ fn.glGetnUniformiv(program, location, size, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNUNIFORMIV(program, location, bufSize, params) \ fn.glGetnUniformiv(program, location, bufSize, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLGETNUNIFORMUIV(program, location, bufSize, params) \ GLint const size = bufSize / sizeof(GLuint); \ if (size <= 0) return; \ GLuint tmp[size]; \ fn.glGetnUniformuiv(program, location, size, tmp); \ Host2AtariIntArray(size, tmp, params) #else #define FN_GLGETNUNIFORMUIV(program, location, bufSize, params) \ fn.glGetnUniformuiv(program, location, bufSize, HostAddr(params, GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLINVALIDATENAMEDFRAMEBUFFERDATA(framebuffer, numAttachments, attachments) \ GLuint tmp[MAX(numAttachments, 0)], *ptmp; \ ptmp = Atari2HostIntArray(numAttachments, attachments, tmp); \ fn.glInvalidateNamedFramebufferData(framebuffer, numAttachments, ptmp) #else #define FN_GLINVALIDATENAMEDFRAMEBUFFERDATA(framebuffer, numAttachments, attachments) \ fn.glInvalidateNamedFramebufferData(framebuffer, numAttachments, HostAddr(attachments, const GLuint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLINVALIDATENAMEDFRAMEBUFFERSUBDATA(framebuffer, numAttachments, attachments, x, y, width, height) \ GLuint tmp[MAX(numAttachments, 0)], *ptmp; \ ptmp = Atari2HostIntArray(numAttachments, attachments, tmp); \ fn.glInvalidateNamedFramebufferSubData(framebuffer, numAttachments, ptmp, x, y, width, height) #else #define FN_GLINVALIDATENAMEDFRAMEBUFFERSUBDATA(framebuffer, numAttachments, attachments, x, y, width, height) \ fn.glInvalidateNamedFramebufferSubData(framebuffer, numAttachments, HostAddr(attachments, const GLuint *), x, y, width, height) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLNAMEDBUFFERDATA(buffer, size, data, usage) \ GLubyte tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glNamedBufferData(buffer, size, ptmp, usage) #else #define FN_GLNAMEDBUFFERDATA(buffer, size, data, usage) \ fn.glNamedBufferData(buffer, size, HostAddr(data, const void *), usage) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLNAMEDBUFFERSTORAGE(buffer, size, data, flags) \ GLubyte tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glNamedBufferStorage(buffer, size, ptmp, flags) #else #define FN_GLNAMEDBUFFERSTORAGE(buffer, size, data, flags) \ fn.glNamedBufferStorage(buffer, size, HostAddr(data, const void *), flags) #endif #if NFOSMESA_NEED_BYTE_CONV #define FN_GLNAMEDBUFFERSUBDATA(buffer, offset, size, data) \ GLubyte tmp[MAX(size, 0)], *ptmp; \ ptmp = Atari2HostByteArray(sizeof(tmp), data, tmp); \ fn.glNamedBufferSubData(buffer, offset, size, ptmp) #else #define FN_GLNAMEDBUFFERSUBDATA(buffer, offset, size, data) \ fn.glNamedBufferSubData(buffer, offset, size, HostAddr(data, const void *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLNAMEDFRAMEBUFFERDRAWBUFFERS(framebuffer, n, bufs) \ GLuint tmp[MAX(n, 0)], *ptmp; \ ptmp = Atari2HostIntArray(n, bufs, tmp); \ fn.glNamedFramebufferDrawBuffers(framebuffer, n, ptmp) #else #define FN_GLNAMEDFRAMEBUFFERDRAWBUFFERS(framebuffer, n, bufs) \ fn.glNamedFramebufferDrawBuffers(framebuffer, n, HostAddr(bufs, const GLuint *)) #endif #define FN_GLREADNPIXELS(x, y, width, height, format, type, bufSize, img) \ char *src; \ nfmemptr dst; \ pixelBuffer buf(*this); \ \ if (contexts[cur_context].buffer_bindings.pixel_pack.id) { \ void *offset = NFHost2AtariAddr(img); \ fn.glReadnPixels(x, y, width, height, format, type, bufSize, offset); \ src = contexts[cur_context].buffer_bindings.pixel_pack.host_pointer + (uintptr_t)offset; \ dst = contexts[cur_context].buffer_bindings.pixel_pack.atari_pointer + (uintptr_t)offset; \ if (!buf.params(bufSize, format, type)) return; \ } else { \ src = buf.hostBuffer(bufSize, format, type, (nfmemptr)img); \ if (src == NULL) return; \ fn.glReadnPixels(x, y, width, height, format, type, bufSize, src); \ dst = (nfmemptr)img; \ } \ buf.convertToAtari(src, dst) #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXTUREPARAMETERIIV(texunit, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glTextureParameterIiv(texunit, pname, tmp) #else #define FN_GLTEXTUREPARAMETERIIV(texunit, pname, params) \ fn.glTextureParameterIiv(texunit, pname, HostAddr(params, GLint *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXTUREPARAMETERIUIV(texunit, pname, params) \ GLint const size = nfglGetNumParams(pname); \ GLuint tmp[MAX(size, 16)]; \ Atari2HostIntArray(size, params, tmp); \ fn.glTextureParameterIuiv(texunit, pname, tmp) #else #define FN_GLTEXTUREPARAMETERIUIV(texunit, pname, params) \ fn.glTextureParameterIuiv(texunit, pname, HostAddr(params, const GLuint *)) #endif #if NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXTUREPARAMETERFV(texture, pname, params) \ GLint const size = 1; \ GLfloat tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostFloatArray(size, params, tmp); \ fn.glTextureParameterfv(texture, pname, ptmp) #else #define FN_GLTEXTUREPARAMETERFV(texture, pname, params) \ fn.glTextureParameterfv(texture, pname, HostAddr(params, const GLfloat *)) #endif #if NFOSMESA_NEED_INT_CONV #define FN_GLTEXTUREPARAMETERIV(texture, pname, params) \ GLint const size = 1; \ GLint tmp[MAX(size, 16)], *ptmp; \ ptmp = Atari2HostIntArray(size, params, tmp); \ fn.glTextureParameteriv(texture, pname, ptmp) #else #define FN_GLTEXTUREPARAMETERIV(texture, pname, params) \ fn.glTextureParameteriv(texture, pname, HostAddr(params, const GLint *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXTURESUBIMAGE1D(texture, level, xoffset, width, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, 1, 1, format, type, (nfmemptr)pixels); \ fn.glTextureSubImage1D(texture, level, xoffset, width, format, type, tmp) #else #define FN_GLTEXTURESUBIMAGE1D(texture, level, xoffset, width, format, type, pixels) \ fn.glTextureSubImage1D(texture, level, xoffset, width, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXTURESUBIMAGE2D(texture, level, xoffset, yoffset, width, height, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, 1, format, type, (nfmemptr)pixels); \ fn.glTextureSubImage2D(texture, level, xoffset, yoffset, width, height, format, type, tmp) #else #define FN_GLTEXTURESUBIMAGE2D(texture, level, xoffset, yoffset, width, height, format, type, pixels) \ fn.glTextureSubImage2D(texture, level, xoffset, yoffset, width, height, format, type, HostAddr(pixels, const void *)) #endif #if NFOSMESA_NEED_BYTE_CONV || NFOSMESA_NEED_INT_CONV || NFOSMESA_NEED_FLOAT_CONV #define FN_GLTEXTURESUBIMAGE3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) \ pixelBuffer buf(*this); \ void *tmp = buf.convertPixels(width, height, depth, format, type, (nfmemptr)pixels); \ fn.glTextureSubImage3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, tmp) #else #define FN_GLTEXTURESUBIMAGE3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) \ fn.glTextureSubImage3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, HostAddr(pixels, const void *)) #endif #define FN_GLVERTEXARRAYVERTEXBUFFERS(vaobj, first, count, buffers, offsets, strides) \ GLsizei const size = MAX(count, 0); \ GLuint tmpbufs[size], *pbufs; \ GLsizei tmpstrides[size], *pstrides; \ GLintptr tmpoffs[size], *poffsets; \ pbufs = Atari2HostIntArray(count, buffers, tmpbufs); \ poffsets = Atari2HostIntptrArray(count, offsets, tmpoffs); \ pstrides = Atari2HostIntArray(count, strides, tmpstrides); \ fn.glVertexArrayVertexBuffers(vaobj, first, count, pbufs, poffsets, pstrides) /* -------------------------------------------------------------------------- */ /* * Version 4.6 */ #define FN_GLMULTIDRAWARRAYSINDIRECTCOUNT(mode, indirect, drawcount, maxdrawcount, stride) \ /* \ * The parameters addressed by indirect are packed into a structure that takes the form (in C): \ * \ * typedef struct { \ * uint count; \ * uint primCount; \ * uint first; \ * uint baseInstance; \ * } DrawArraysIndirectCommand; \ */ \ if (contexts[cur_context].buffer_bindings.draw_indirect.id) { \ void *offset = NFHost2AtariAddr(indirect); \ fn.glMultiDrawArraysIndirectCount(mode, offset, drawcount, maxdrawcount, stride); \ } else if (indirect) { \ if (stride == 0) stride = 4 * sizeof(Uint32); \ nfcmemptr indptr = (nfcmemptr)indirect; \ for (GLsizei n = 0; n < maxdrawcount; n++) { \ GLuint tmp[4] = { 0, 0, 0, 0 }; \ Atari2HostIntArray(4, indptr, tmp); \ GLuint count = tmp[0]; \ convertClientArrays(count); \ fn.glDrawArraysInstancedBaseInstance(mode, tmp[2], count, tmp[1], tmp[3]); \ indptr += stride; \ } \ } /* * The parameters addressed by indirect are packed into a structure that takes the form (in C): * * typedef struct { * uint count; * uint primCount; * uint firstIndex; * uint baseVertex; * uint baseInstance; * } DrawElemntsIndirectCommand; */ #define FN_GLMULTIDRAWELEMENTSINDIRECTCOUNT(mode, type, indirect, drawcount, maxdrawcount, stride) \ if (contexts[cur_context].buffer_bindings.draw_indirect.id) { \ void *offset = NFHost2AtariAddr(indirect); \ fn.glMultiDrawElementsIndirectCount(mode, type, offset, drawcount, maxdrawcount, stride); \ } else if (indirect) { \ if (stride == 0) stride = 5 * sizeof(Uint32); \ nfcmemptr pind = (nfcmemptr)indirect; \ for (GLsizei n = 0; n < maxdrawcount; n++) { \ GLuint tmp[5] = { 0, 0, 0, 0, 0 }; \ Atari2HostIntArray(5, pind, tmp); \ GLuint count = tmp[0]; \ convertClientArrays(count); \ fn.glDrawElementsInstancedBaseVertexBaseInstance(mode, count, type, (const void *)(uintptr_t)tmp[2], tmp[1], tmp[3], tmp[4]); \ pind += stride; \ } \ } /* -------------------------------------------------------------------------- */ #include "nfosmesa/call-gl.c" #endif aranym-1.1.0/src/natfeat/nfjpeg.h0000664000175000017500000000424213454637621015036 0ustar joyjoy/* NatFeat JPEG decoder ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFJPEG_H #define NFJPEG_H /*--- Includes ---*/ #include "SDL_compat.h" #include "nf_base.h" #include "parameters.h" #define ARANYM_NFJPEG #include "../../atari/nfjpeg/jpgdh.h" #undef ARANYM_NFJPEG #ifdef HAVE_JPEGLIB #ifdef __cplusplus extern "C" { #endif #include #ifdef __cplusplus } #endif #endif /*--- Defines ---*/ #define MAX_NFJPEG_IMAGES 32 /*--- Types ---*/ typedef struct { bool used; SDL_Surface *src; /* Image loaded by SDL_image */ } nfjpeg_image_t; /*--- Class ---*/ class JpegDriver : public NF_Base { private: nfjpeg_image_t images[MAX_NFJPEG_IMAGES+1]; #ifdef HAVE_JPEGLIB struct my_error_mgr { struct jpeg_error_mgr errmgr; jmp_buf escape; }; struct my_error_mgr jerr; struct jpeg_decompress_struct jpeg; static void my_error_exit(j_common_ptr cinfo); SDL_Surface *load_jpeg(SDL_RWops *src); #endif static const int xMCUs = 16; static const int yRows = 16; int32 open_driver(memptr jpeg_ptr); int32 close_driver(memptr jpeg_ptr); int32 get_image_info(memptr jpeg_ptr); int32 get_image_size(memptr jpeg_ptr); int32 decode_image(memptr jpeg_ptr, uint32 row); bool load_image(JPGD_STRUCT *jpgd_ptr, memptr addr, uint32 size); void read_rgb(SDL_PixelFormat *format, void *src, int *r, int *g, int *b); public: JpegDriver(); virtual ~JpegDriver(); const char *name() { return "JPEG"; } bool isSuperOnly() { return false; } int32 dispatch(uint32 fncode); }; #endif /* NFJPEG_H */ aranym-1.1.0/src/natfeat/nfjpeg.cpp0000664000175000017500000004354413454637621015401 0ustar joyjoy/* NatFeat JPEG decoder ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #ifdef NFJPEG_SUPPORT #include "cpu_emulation.h" #include "parameters.h" #include "nfjpeg.h" #include "../../atari/nfjpeg/nfjpeg_nfapi.h" #define ARANYM_NFJPEG #include "../../atari/nfjpeg/jpgdh.h" #undef ARANYM_NFJPEG #include "SDL_compat.h" #include #if defined(HAVE_JPEGLIB) #elif defined(HAVE_SDL_IMAGE) #include #else #error "no jpeg library found" #endif #include "toserror.h" #define DEBUG 0 #include "debug.h" /*--- Defines ---*/ /*--- Types ---*/ /*--- jpeglib functions ---*/ #if defined(HAVE_JPEGLIB) #define INPUT_BUFFER_SIZE 4096 typedef struct { struct jpeg_source_mgr pub; SDL_RWops *ctx; Uint8 buffer[INPUT_BUFFER_SIZE]; } my_source_mgr; /* * Initialize source --- called by jpeg_read_header * before any data is actually read. */ static void init_source(j_decompress_ptr cinfo) { /* We don't actually need to do anything */ (void) cinfo; } /* * Fill the input buffer --- called whenever buffer is emptied. */ static boolean fill_input_buffer(j_decompress_ptr cinfo) { my_source_mgr *src = (my_source_mgr *) cinfo->src; int nbytes; nbytes = SDL_RWread(src->ctx, src->buffer, 1, INPUT_BUFFER_SIZE); if (nbytes <= 0) { /* Insert a fake EOI marker */ src->buffer[0] = 0xFF; src->buffer[1] = JPEG_EOI; nbytes = 2; } src->pub.next_input_byte = src->buffer; src->pub.bytes_in_buffer = nbytes; return TRUE; } /* * Skip data --- used to skip over a potentially large amount of * uninteresting data (such as an APPn marker). * * Writers of suspendable-input applications must note that skip_input_data * is not granted the right to give a suspension return. If the skip extends * beyond the data currently in the buffer, the buffer can be marked empty so * that the next read will cause a fill_input_buffer call that can suspend. * Arranging for additional bytes to be discarded before reloading the input * buffer is the application writer's problem. */ static void skip_input_data(j_decompress_ptr cinfo, long num_bytes) { my_source_mgr *src = (my_source_mgr *) cinfo->src; /* Just a dumb implementation for now. Could use fseek() except * it doesn't work on pipes. Not clear that being smart is worth * any trouble anyway --- large skips are infrequent. */ if (num_bytes > 0) { while (num_bytes > (long) src->pub.bytes_in_buffer) { num_bytes -= (long) src->pub.bytes_in_buffer; (void) src->pub.fill_input_buffer(cinfo); /* note we assume that fill_input_buffer will never * return FALSE, so suspension need not be handled. */ } src->pub.next_input_byte += (size_t) num_bytes; src->pub.bytes_in_buffer -= (size_t) num_bytes; } } /* * Terminate source --- called by jpeg_finish_decompress * after all data has been read. */ static void term_source(j_decompress_ptr cinfo) { /* We don't actually need to do anything */ (void) cinfo; } void JpegDriver::my_error_exit(j_common_ptr cinfo) { struct my_error_mgr *err = (struct my_error_mgr *)cinfo->err; longjmp(err->escape, 1); } static void output_no_message(j_common_ptr cinfo) { (void) cinfo; } static void jpeg_rw_src(j_decompress_ptr cinfo, SDL_RWops *ctx) { my_source_mgr *src; if (cinfo->src == NULL) /* first time for this JPEG object? */ { cinfo->src = (struct jpeg_source_mgr *) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(my_source_mgr)); } src = (my_source_mgr *) cinfo->src; src->pub.init_source = init_source; src->pub.fill_input_buffer = fill_input_buffer; src->pub.skip_input_data = skip_input_data; src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */ src->pub.term_source = term_source; src->ctx = ctx; src->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */ src->pub.next_input_byte = NULL; /* until buffer loaded */ } SDL_Surface *JpegDriver::load_jpeg(SDL_RWops *src) { Sint64 start; JSAMPROW rowptr[1]; SDL_Surface *volatile surface = NULL; j_decompress_ptr cinfo; memset(&jpeg, 0, sizeof(jpeg)); cinfo = &jpeg; cinfo->err = jpeg_std_error(&jerr.errmgr); cinfo->err->error_exit = my_error_exit; cinfo->err->output_message = output_no_message; if (src == NULL) { /* The error message has been set in SDL_RWFromFile */ return NULL; } start = SDL_RWtell(src); if (setjmp(jerr.escape)) { /* If we get here, libjpeg found an error */ jpeg_destroy_decompress(&jpeg); if (surface != NULL) { SDL_FreeSurface(surface); } SDL_RWseek(src, start, RW_SEEK_SET); return NULL; } jpeg_create_decompress(cinfo); jpeg_rw_src(cinfo, src); jpeg_read_header(cinfo, TRUE); if (cinfo->num_components == 4) { /* Set 32-bit Raw output */ cinfo->out_color_space = JCS_CMYK; cinfo->quantize_colors = FALSE; jpeg_calc_output_dimensions(cinfo); /* Allocate an output surface to hold the image */ surface = SDL_CreateRGBSurface(SDL_SWSURFACE, cinfo->output_width, cinfo->output_height, 32, #if SDL_BYTEORDER == SDL_LIL_ENDIAN 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000 #else 0x0000FF00, 0x00FF0000, 0xFF000000, 0x000000FF #endif ); } else { /* Set 24-bit RGB output */ cinfo->out_color_space = JCS_RGB; cinfo->quantize_colors = FALSE; #ifdef FAST_JPEG cinfo->scale_num = 1; cinfo->scale_denom = 1; cinfo->dct_method = JDCT_FASTEST; cinfo->do_fancy_upsampling = FALSE; #endif jpeg_calc_output_dimensions(cinfo); /* Allocate an output surface to hold the image */ surface = SDL_CreateRGBSurface(SDL_SWSURFACE, cinfo->output_width, cinfo->output_height, 24, #if SDL_BYTEORDER == SDL_LIL_ENDIAN 0x0000FF, 0x00FF00, 0xFF0000, #else 0xFF0000, 0x00FF00, 0x0000FF, #endif 0); } if (surface == NULL) { jpeg_destroy_decompress(cinfo); SDL_RWseek(src, start, RW_SEEK_SET); return NULL; } /* Decompress the image */ jpeg_start_decompress(cinfo); while (cinfo->output_scanline < cinfo->output_height) { rowptr[0] = (JSAMPROW)(Uint8 *)surface->pixels + cinfo->output_scanline * surface->pitch; jpeg_read_scanlines(cinfo, rowptr, (JDIMENSION) 1); } jpeg_finish_decompress(cinfo); jpeg_destroy_decompress(cinfo); return surface; } #endif /*--- Constructor/destructor functions ---*/ JpegDriver::JpegDriver() { memset(images, 0, sizeof(images)); D(bug("nfjpeg: created")); } JpegDriver::~JpegDriver() { int i; for (i = 1; i <= MAX_NFJPEG_IMAGES; i++) { if (images[i].src) { SDL_FreeSurface(images[i].src); images[i].src = NULL; } images[i].used = false; } D(bug("nfjpeg: destroyed")); } /*--- Public functions ---*/ int32 JpegDriver::dispatch(uint32 fncode) { int32 ret; D(bug("nfjpeg: dispatch(%u)", fncode)); ret = TOS_EINVFN; switch(fncode) { case GET_VERSION: ret = ARANFJPEG_NFAPI_VERSION; break; case NFJPEG_OPENDRIVER: ret = open_driver(getParameter(0)); break; case NFJPEG_GETSTRUCTSIZE: ret = sizeof(JPGD_STRUCT); break; case NFJPEG_CLOSEDRIVER: ret = close_driver(getParameter(0)); break; case NFJPEG_GETIMAGEINFO: ret = get_image_info(getParameter(0)); break; case NFJPEG_GETIMAGESIZE: ret = get_image_size(getParameter(0)); break; case NFJPEG_DECODEIMAGE: ret = decode_image(getParameter(0),getParameter(1)); break; default: D(bug("nfjpeg: unimplemented function #%d", fncode)); break; } D(bug("nfjpeg: function returning with 0x%08x", ret)); return ret; } int32 JpegDriver::open_driver(memptr jpeg_ptr) { JPGD_STRUCT *jpgd; int i, j; D(bug("nfjpeg: open_driver(0x%08x)",jpeg_ptr)); jpgd = (JPGD_STRUCT *)Atari2HostAddr(jpeg_ptr); /* Find a free handle */ j = 0; for (i = 1; i <= MAX_NFJPEG_IMAGES; i++) { if (!images[i].used) { j = i; break; } } if (j == 0) { return DECODERBUSY; } jpgd->handle = j; images[j].used = true; return NOERROR; } int32 JpegDriver::close_driver(memptr jpeg_ptr) { JPGD_STRUCT *jpgd; D(bug("nfjpeg: close_driver(0x%08x)",jpeg_ptr)); jpgd = (JPGD_STRUCT *)Atari2HostAddr(jpeg_ptr); if (jpgd->handle <= 0 || jpgd->handle > MAX_NFJPEG_IMAGES || !images[jpgd->handle].used) return DRIVERCLOSED; if (images[jpgd->handle].src) { SDL_FreeSurface(images[jpgd->handle].src); images[jpgd->handle].src=NULL; } images[jpgd->handle].used = false; return NOERROR; } int32 JpegDriver::get_image_info(memptr jpeg_ptr) { JPGD_STRUCT *jpgd; D(bug("nfjpeg: get_image_info(0x%08x)",jpeg_ptr)); jpgd = (JPGD_STRUCT *)Atari2HostAddr(jpeg_ptr); if (jpgd->handle <= 0 || jpgd->handle > MAX_NFJPEG_IMAGES || !images[jpgd->handle].used) return DRIVERCLOSED; if (images[jpgd->handle].src == NULL) { /* Damn, we need to decode it with SDL_image */ if (!load_image(jpgd, SDL_SwapBE32(jpgd->InPointer), SDL_SwapBE32(jpgd->InSize))) { return NOTENOUGHMEMORY; } } return NOERROR; } int32 JpegDriver::get_image_size(memptr jpeg_ptr) { JPGD_STRUCT *jpgd; int image_size; SDL_Surface *surface; D(bug("nfjpeg: get_image_size(0x%08x)",jpeg_ptr)); jpgd = (JPGD_STRUCT *)Atari2HostAddr(jpeg_ptr); if (jpgd->handle <= 0 || jpgd->handle > MAX_NFJPEG_IMAGES || !images[jpgd->handle].used) return DRIVERCLOSED; if (images[jpgd->handle].src == NULL) { /* Damn, we need to decode it with SDL_image */ if (!load_image(jpgd, SDL_SwapBE32(jpgd->InPointer), SDL_SwapBE32(jpgd->InSize))) { return NOTENOUGHMEMORY; } } /* Recalculate OutSize and MFDBWordSize */ surface = images[jpgd->handle].src; image_size = ((surface->w + xMCUs - 1) / xMCUs) * xMCUs; image_size *= SDL_SwapBE16(jpgd->OutPixelSize); jpgd->MFDBWordSize = SDL_SwapBE16(image_size>>1); image_size *= surface->h; jpgd->OutSize = SDL_SwapBE32(image_size); D(bug("nfjpeg: get_image_size() = %dx%dx%d -> %d", surface->w, surface->h, SDL_SwapBE16(jpgd->OutPixelSize), image_size)); return NOERROR; } int32 JpegDriver::decode_image(memptr jpeg_ptr, uint32 row) { JPGD_STRUCT *jpgd; unsigned char *dest,*src, *src_line; int width, height, r,g,b,x,y, line_length; SDL_Surface *surface; SDL_PixelFormat *format; memptr addr; D(bug("nfjpeg: decode_image(0x%08x,%d)",jpeg_ptr,row)); jpgd = (JPGD_STRUCT *)Atari2HostAddr(jpeg_ptr); if (jpgd->handle <= 0 || jpgd->handle > MAX_NFJPEG_IMAGES || !images[jpgd->handle].used) return DRIVERCLOSED; if (images[jpgd->handle].src == NULL) { /* Damn, we need to decode it with SDL_image */ if (!load_image(jpgd, SDL_SwapBE32(jpgd->InPointer), SDL_SwapBE32(jpgd->InSize))) { return NOTENOUGHMEMORY; } } addr = SDL_SwapBE32(jpgd->OutTmpPointer); surface = images[jpgd->handle].src; src = (unsigned char *)surface->pixels; src += surface->pitch * row * yRows; width = SDL_SwapBE16(jpgd->MFDBPixelWidth); line_length = SDL_SwapBE16(jpgd->MFDBWordSize)*2; height = surface->h - row * yRows; if (height > yRows) /* not last row ? */ { height = yRows; } format = surface->format; if (!valid_address(addr, true, height * line_length)) return NOTENOUGHMEMORY; dest = (unsigned char *)Atari2HostAddr(addr); D(bug("nfjpeg: decode_image(), rows %d to %d", row * yRows, row * yRows + height - 1)); D(bug("nfjpeg: decode_image(), OutPixelSize=%d,WordSize=%d,Width=%d", SDL_SwapBE16(jpgd->OutPixelSize), SDL_SwapBE16(jpgd->MFDBWordSize), SDL_SwapBE16(jpgd->MFDBPixelWidth) )); if (jpgd->OutFlag == 0) { switch(SDL_SwapBE16(jpgd->OutPixelSize)) { case 1: /* Luminance */ for (y = 0; y < height; y++) { unsigned char *dst_line; src_line = src; dst_line = dest; for (x = 0; x < width; x++) { read_rgb(format, src_line, &r, &g, &b); *dst_line++ = (r*30+g*59+b*11)/100; src_line+=format->BytesPerPixel; } src += surface->pitch; dest += line_length; } break; case 2: /* R5G6B5 (big endian) */ for (y = 0; y < height; y++) { uint16 *dst_line; uint16 pixel; src_line = src; dst_line = (uint16 *)dest; for (x = 0; x < width; x++) { read_rgb(format, src_line, &r, &g, &b); pixel = ((r>>3)<<11) | ((g>>2)<<5) | (b>>3); *dst_line++ = SDL_SwapBE16(pixel); src_line+=format->BytesPerPixel; } src += surface->pitch; dest += line_length; } break; case 3: /* R8G8B8 (big endian) */ for (y = 0; y < height; y++) { unsigned char *dst_line; src_line = src; dst_line = dest; for (x = 0; x < width; x++) { read_rgb(format, src_line, &r, &g, &b); *dst_line++ = r; *dst_line++ = g; *dst_line++ = b; src_line+=format->BytesPerPixel; } src += surface->pitch; dest += line_length; } break; case 4: /* FIXME A8R8G8B8 or R8G8B8A8 or something else ? */ for (y = 0; y < height; y++) { uint32 *dst_line; uint32 pixel; src_line = src; dst_line = (uint32 *)dest; for (x = 0; x < width; x++) { read_rgb(format, src_line, &r, &g, &b); pixel = (r<<16) | (g<<8) | b; *dst_line++ = SDL_SwapBE32(pixel); src_line+=format->BytesPerPixel; } src += surface->pitch; dest += line_length; } break; } } else { /* disk output means TGA format and we must write BGR */ switch(SDL_SwapBE16(jpgd->OutPixelSize)) { case 1: /* Luminance */ for (y = 0; y < height; y++) { unsigned char *dst_line; src_line = src; dst_line = dest; for (x = 0; x < width; x++) { read_rgb(format, src_line, &r, &g, &b); *dst_line++ = (r*30+g*59+b*11)/100; src_line+=format->BytesPerPixel; } src += surface->pitch; dest += line_length; } break; case 2: /* A1R5G5B5 (little endian) */ for (y = 0; y < height; y++) { uint16 *dst_line; uint16 pixel; src_line = src; dst_line = (uint16 *)dest; for (x = 0; x < width; x++) { read_rgb(format, src_line, &r, &g, &b); pixel = ((r>>3)<<10) | ((g>>3)<<5) | (b>>3); *dst_line++ = SDL_SwapLE16(pixel); src_line+=format->BytesPerPixel; } src += surface->pitch; dest += line_length; } break; case 3: /* R8G8B8 (little endian) */ for (y = 0; y < height; y++) { unsigned char *dst_line; src_line = src; dst_line = dest; for (x = 0; x < width; x++) { read_rgb(format, src_line, &r, &g, &b); *dst_line++ = b; *dst_line++ = g; *dst_line++ = r; src_line+=format->BytesPerPixel; } src += surface->pitch; dest += line_length; } break; case 4: for (y = 0; y < height; y++) { unsigned char *dst_line; src_line = src; dst_line = dest; for (x = 0; x < width; x++) { read_rgb(format, src_line, &r, &g, &b); *dst_line++ = b; *dst_line++ = g; *dst_line++ = r; *dst_line++ = 0xff; src_line+=format->BytesPerPixel; } src += surface->pitch; dest += line_length; } break; } } return NOERROR; } bool JpegDriver::load_image(JPGD_STRUCT *jpgd, memptr addr, uint32 size) { SDL_RWops *src; SDL_Surface *surface; int width, height, image_size; uint8 *buffer; D(bug("nfjpeg: load_image()")); if (!valid_address(addr, false, size)) return false; buffer = Atari2HostAddr(addr); /* Load image from memory */ src = SDL_RWFromMem(buffer, size); if (src == NULL) { D(bug("nfjpeg: load_image() failed in SDL_RWFromMem()")); return false; } #if defined(HAVE_JPEGLIB) surface = load_jpeg(src); #elif defined(HAVE_SDL_IMAGE) surface = IMG_Load_RW(src, 0); #endif SDL_FreeRW(src); if (surface == NULL) { panicbug("nfjpeg: load_image() failed"); return false; } D(bug("nfjpeg: %dx%dx%d,%d image", surface->w, surface->h, surface->format->BitsPerPixel,surface->format->BytesPerPixel)); D(bug("nfjpeg: A=0x%08x, R=0x%08x, G=0x%08x, B=0x%08x", surface->format->Amask, surface->format->Rmask, surface->format->Gmask, surface->format->Bmask )); images[jpgd->handle].src = surface; /* Fill values */ jpgd->InComponents = SDL_SwapBE16(3); /* RGB */ width = ((surface->w + xMCUs - 1) / xMCUs) * xMCUs; jpgd->XLoopCounter = SDL_SwapBE16(width / xMCUs); height = ((surface->h + yRows - 1) / yRows) * yRows; jpgd->YLoopCounter = SDL_SwapBE16(height / yRows); jpgd->MFDBAddress = 0; jpgd->MFDBPixelWidth = SDL_SwapBE16(surface->w); jpgd->MFDBPixelHeight = SDL_SwapBE16(surface->h); jpgd->MFDBWordSize = SDL_SwapBE16((width * SDL_SwapBE16(jpgd->OutPixelSize))>>1); jpgd->MFDBFormatFlag = 0; jpgd->MFDBBitPlanes = SDL_SwapBE16(jpgd->OutPixelSize) * 8; jpgd->MFDBReserved1 = jpgd->MFDBReserved2 = jpgd->MFDBReserved3 = 0; image_size = width * surface->h * SDL_SwapBE16(jpgd->OutPixelSize); jpgd->OutSize = SDL_SwapBE32(image_size); return true; } void JpegDriver::read_rgb(SDL_PixelFormat *format, void *src, int *r, int *g, int *b) { uint32 color; color = 0; switch(format->BytesPerPixel) { case 1: { unsigned char *tmp; tmp = (unsigned char *)src; color = *tmp; } break; case 2: { uint16 *tmp; tmp = (uint16 *)src; color = *tmp; } break; case 3: { unsigned char *tmp; tmp = (unsigned char *)src; #if SDL_BYTEORDER == SDL_LIL_ENDIAN color = (tmp[2]<<16)|(tmp[1]<<8)|tmp[0]; #else color = (tmp[0]<<16)|(tmp[1]<<8)|tmp[2]; #endif } break; case 4: { uint32 *tmp; tmp = (uint32 *)src; color = *tmp; } break; } *r = color & (format->Rmask); *r >>= format->Rshift; *r <<= format->Rloss; *g = color & (format->Gmask); *g >>= format->Gshift; *g <<= format->Gloss; *b = color & (format->Bmask); *b >>= format->Bshift; *b <<= format->Bloss; } #endif /* NFJPEG_SUPPORT */ aranym-1.1.0/src/natfeat/nfclipbrd_nfapi.h0000664000175000017500000000306113454637621016703 0ustar joyjoy/* * hostfs.h - The CLIPBRD access driver - NF API definitions. * * Copyright (c) 2006 Standa Opichal, ARAnyM team * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _CLIPBRD_NFAPI_H #define _CLIPBRD_NFAPI_H /* * general CLIPBRD driver version */ #define CLIPBRD_DRIVER_VERSION 0 #define BETA /* if you change anything in the enum {} below you have to increase this CLIPBRD_NFAPI_VERSION! */ #define CLIPBRD_NFAPI_VERSION 1 enum { GET_VERSION = 0, /* subID = 0 */ CLIP_OPEN, /* open clipboard */ CLIP_CLOSE, /* close clipboard */ CLIP_READ, /* read clipboard data */ CLIP_WRITE /* write data to clipboard */ }; extern unsigned long nf_clipbrd_id; #define NFCLIP(a) (nf_clipbrd_id + a) #endif /* _CLIPBRD_NFAPI_H */ aranym-1.1.0/src/natfeat/nfclipbrd.h0000664000175000017500000000304613454637621015531 0ustar joyjoy/* * nfclipbrd.cpp - NatFeat Clipboard * * Copyright (c) 2006 Standa Opichal of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _NF_CLIPBRD_H #define _NF_CLIPBRD_H #include "nf_base.h" class ClipbrdNatFeat : public NF_Base { private: bool is_read; char *clip_buf; size_t clip_len; public: ClipbrdNatFeat() { is_read = false; clip_buf = NULL; clip_len = 0; } const char *name() { return "CLIPBRD"; } bool isSuperOnly() { return false; } int32 dispatch(uint32 fncode); void reset(); int32 open(uint32 id, uint32 mode); int32 close(uint32 id); int32 read(uint32 id, memptr buff, uint32 size, uint32 pos); int32 write(uint32 id, memptr buff, uint32 len, uint32 pos); }; #endif /* vim:ts=4:sw=4: */ aranym-1.1.0/src/natfeat/nfclipbrd.cpp0000664000175000017500000000646413454637621016073 0ustar joyjoy/* * nfclipbrd.cpp - NatFeat Clipboard * * Copyright (c) 2006-2009 Standa Opichal of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "cpu_emulation.h" #include "nfclipbrd.h" #include "nfclipbrd_nfapi.h" #include "clipbrd.h" #define DEBUG 0 #include "debug.h" int32 ClipbrdNatFeat::dispatch(uint32 fncode) { switch(fncode) { case GET_VERSION: D(bug("CLIPBRD: version %d", CLIPBRD_NFAPI_VERSION)); return CLIPBRD_NFAPI_VERSION; case CLIP_OPEN: return open( getParameter(0), getParameter(1) ); case CLIP_CLOSE: return close( getParameter(0) ); case CLIP_READ: return read( getParameter(0), getParameter(1), getParameter(2), getParameter(3) ); case CLIP_WRITE: return write( getParameter(0), getParameter(1), getParameter(2), getParameter(3) ); default: return -1; } } void ClipbrdNatFeat::reset() { D(bug("clipbrd: reset")); if (init_aclip() < 0) { ; // TODO disable clipboard } } int32 ClipbrdNatFeat::open(uint32 id, uint32 mode) { DUNUSED(id); D(bug("clipbrd: open id=%d mode=%d", id, mode)); is_read = (mode == 1); clip_len = 0; if (clip_buf) { delete [] clip_buf; clip_buf = NULL; } if (is_read) { clip_buf = read_aclip(&clip_len); if (!clip_buf) { clip_len = 0; } } return 0; } int32 ClipbrdNatFeat::close(uint32 id) { DUNUSED(id); D(bug("clipbrd: close id=%d", id)); if (clip_buf) { if (!is_read && clip_len > 0) { write_aclip(clip_buf, clip_len); } delete [] clip_buf; clip_buf = NULL; } return 0; } int32 ClipbrdNatFeat::read(uint32 id, memptr buff, uint32 size, uint32 pos) { UNUSED(id); int len = (clip_len - pos > size) ? size : clip_len - pos; D(bug("clipbrd: read pos=%d, len=%d", pos, len)); if (clip_buf) { if (len < 0) len = 0; else if (len) Host2Atari_memcpy(buff, clip_buf + pos, len); } return len; } int32 ClipbrdNatFeat::write(uint32 id, memptr buff, uint32 len, uint32 pos) { UNUSED(id); D(bug("clipbrd: write pos=%d, len=%d", pos, len)); size_t newlen = pos + len; char *newbuf = new char[newlen]; if (clip_buf) { memcpy(newbuf, clip_buf, (clip_len > newlen) ? pos : clip_len); delete [] clip_buf; } clip_buf = newbuf; clip_len = newlen; Atari2Host_memcpy(clip_buf + pos, buff, len); /* send to host os * * shortens the clip to pos+len (expects the writes to come sequentially * and therefore the last write sets the complete clipboard contents) */ write_aclip(clip_buf, clip_len); return len; } // don't remove this modeline with intended formatting for vim:ts=4:sw=4: aranym-1.1.0/src/natfeat/nfcdrom_win32.h0000664000175000017500000000423513454637621016241 0ustar joyjoy/* * NatFeat host CD-ROM access, Win32 CD-ROM driver * * ARAnyM (C) 2014 ARAnyM developer team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFCDROM_WIN32_H #define NFCDROM_WIN32_H /*--- Includes ---*/ #include "nfcdrom.h" #include "win32_supp.h" #undef NOERROR /* conflicts with jpgdh.h */ #include "parameters.h" class CdromDriverWin32 : public CdromDriver { private: /* for each possible opened drive */ struct { char *device; HANDLE handle; int usecount; } cddrives[CD_MAX_DRIVES]; bool drives_scanned; int numcds; protected: int OpenDrive(memptr device); void CloseDrive(int drive); int32 cd_read(memptr device, memptr buffer, uint32 first, uint32 length); int32 cd_status(memptr device, memptr ext_status); int32 cd_ioctl(memptr device, uint16 opcode, memptr buffer); int32 cd_startaudio(memptr device, uint32 dummy, memptr buffer); int32 cd_stopaudio(memptr device); int32 cd_setsongtime(memptr device, uint32 dummy, uint32 start_msf, uint32 end_msf); int32 cd_gettoc(memptr device, uint32 dummy, memptr buffer); int32 cd_discinfo(memptr device, memptr buffer); int cd_winioctl(int drive, DWORD code, LPVOID in = NULL, DWORD insize = 0, LPVOID out = NULL, DWORD outsize = 0, LPDWORD returned = NULL); int cd_win_playtracks(int drive, unsigned char first, unsigned char last); public: CdromDriverWin32(); virtual ~CdromDriverWin32(); virtual int Count(); virtual const char *DeviceName(int drive); }; #endif /* NFCDROM_WIN32_H */ aranym-1.1.0/src/natfeat/nfcdrom_win32.cpp0000664000175000017500000010301113454637621016564 0ustar joyjoy/* NatFeat host CD-ROM access, Win32 CD-ROM driver ARAnyM (C) 2014 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "win32_supp.h" #include "toserror.h" #include #include "cpu_emulation.h" #include "parameters.h" #include "nfcdrom.h" #include "nfcdrom_atari.h" #include "nfcdrom_win32.h" #define DEBUG 0 #include "debug.h" /*--- Defines ---*/ #define NFCD_NAME "nf:cdrom:win32: " #ifndef MSF_TO_FRAMES #define CD_FPS 75 #define MSF_TO_FRAMES(M, S, F) ((M)*60*CD_FPS+(S)*CD_FPS+(F)) #endif #ifndef FRAMES_TO_MSF #define FRAMES_TO_MSF(f, M,S,F) { \ int value = f; \ *(F) = value%CD_FPS; \ value /= CD_FPS; \ *(S) = value%60; \ value /= 60; \ *(M) = value; \ } #endif /*--- CDROM definitions ---*/ #define _MS_STRUCT __attribute__ ((ms_struct)) #ifndef FILE_DEVICE_CD_ROM #define FILE_DEVICE_CD_ROM 0x00000002 #endif #define IOCTL_CDROM_BASE FILE_DEVICE_CD_ROM #ifndef CTL_CODE #define CTL_CODE(DeviceType, Function, Method, Access)( ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) #endif #ifndef ERROR_MEDIA_CHECK # define ERROR_MEDIA_CHECK 679 #endif #define IOCTL_CDROM_READ_TOC CTL_CODE(IOCTL_CDROM_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_SEEK_AUDIO_MSF CTL_CODE(IOCTL_CDROM_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_STOP_AUDIO CTL_CODE(IOCTL_CDROM_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_PAUSE_AUDIO CTL_CODE(IOCTL_CDROM_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_RESUME_AUDIO CTL_CODE(IOCTL_CDROM_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_GET_VOLUME CTL_CODE(IOCTL_CDROM_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_PLAY_AUDIO_MSF CTL_CODE(IOCTL_CDROM_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_SET_VOLUME CTL_CODE(IOCTL_CDROM_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_READ_Q_CHANNEL CTL_CODE(IOCTL_CDROM_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_GET_CONTROL CTL_CODE(IOCTL_CDROM_BASE, 0x000D, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_GET_LAST_SESSION CTL_CODE(IOCTL_CDROM_BASE, 0x000E, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_RAW_READ CTL_CODE(IOCTL_CDROM_BASE, 0x000F, METHOD_OUT_DIRECT, FILE_READ_ACCESS) #define IOCTL_CDROM_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_CDROM_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_DISK_TYPE CTL_CODE(IOCTL_CDROM_BASE, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_CDROM_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_CDROM_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_GET_DRIVE_GEOMETRY_EX CTL_CODE(IOCTL_CDROM_BASE, 0x0014, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_READ_TOC_EX CTL_CODE(IOCTL_CDROM_BASE, 0x0015, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_GET_CONFIGURATION CTL_CODE(IOCTL_CDROM_BASE, 0x0016, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_EXCLUSIVE_ACCESS CTL_CODE(IOCTL_CDROM_BASE, 0x0017, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) #define IOCTL_CDROM_SET_SPEED CTL_CODE(IOCTL_CDROM_BASE, 0x0018, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_GET_INQUIRY_DATA CTL_CODE(IOCTL_CDROM_BASE, 0x0019, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_ENABLE_STREAMING CTL_CODE(IOCTL_CDROM_BASE, 0x001A, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_SEND_OPC_INFORMATION CTL_CODE(IOCTL_CDROM_BASE, 0x001B, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) #define IOCTL_CDROM_GET_PERFORMANCE CTL_CODE(IOCTL_CDROM_BASE, 0x001C, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_CHECK_VERIFY CTL_CODE(IOCTL_CDROM_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_MEDIA_REMOVAL CTL_CODE(IOCTL_CDROM_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_EJECT_MEDIA CTL_CODE(IOCTL_CDROM_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_LOAD_MEDIA CTL_CODE(IOCTL_CDROM_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_RESERVE CTL_CODE(IOCTL_CDROM_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_RELEASE CTL_CODE(IOCTL_CDROM_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_FIND_NEW_DEVICES CTL_CODE(IOCTL_CDROM_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_CDROM_SIMBAD CTL_CODE(IOCTL_CDROM_BASE, 0x1003, METHOD_BUFFERED, FILE_READ_ACCESS) /* CDROM_READ_TOC_EX.Format constants */ #define CDROM_READ_TOC_EX_FORMAT_TOC 0x00 #define CDROM_READ_TOC_EX_FORMAT_SESSION 0x01 #define CDROM_READ_TOC_EX_FORMAT_FULL_TOC 0x02 #define CDROM_READ_TOC_EX_FORMAT_PMA 0x03 #define CDROM_READ_TOC_EX_FORMAT_ATIP 0x04 #define CDROM_READ_TOC_EX_FORMAT_CDTEXT 0x05 #define MAXIMUM_NUMBER_TRACKS 100 #define MAXIMUM_CDROM_SIZE 804 #define MINIMUM_CDROM_READ_TOC_EX_SIZE 2 typedef struct _CDROM_SEEK_AUDIO_MSF { UCHAR M; UCHAR S; UCHAR F; } _MS_STRUCT CDROM_SEEK_AUDIO_MSF, *PCDROM_SEEK_AUDIO_MSF; typedef struct _CDROM_PLAY_AUDIO_MSF { UCHAR StartingM; UCHAR StartingS; UCHAR StartingF; UCHAR EndingM; UCHAR EndingS; UCHAR EndingF; } _MS_STRUCT CDROM_PLAY_AUDIO_MSF, *PCDROM_PLAY_AUDIO_MSF; typedef struct _CDROM_READ_TOC_EX { UCHAR Format : 4; UCHAR Reserved1 : 3; UCHAR Msf : 1; UCHAR SessionTrack; UCHAR Reserved2; UCHAR Reserved3; } _MS_STRUCT CDROM_READ_TOC_EX, *PCDROM_READ_TOC_EX; typedef struct _TRACK_DATA { UCHAR Reserved; UCHAR Control : 4; UCHAR Adr : 4; UCHAR TrackNumber; UCHAR Reserved1; UCHAR Address[4]; } _MS_STRUCT TRACK_DATA, *PTRACK_DATA; typedef struct _CDROM_TOC { UCHAR Length[2]; UCHAR FirstTrack; UCHAR LastTrack; TRACK_DATA TrackData[MAXIMUM_NUMBER_TRACKS]; } _MS_STRUCT CDROM_TOC, *PCDROM_TOC; #define CDROM_TOC_SIZE sizeof(CDROM_TOC) /* SUB_Q_HEADER.AudioStatus constants */ #define AUDIO_STATUS_NOT_SUPPORTED 0x00 #define AUDIO_STATUS_IN_PROGRESS 0x11 #define AUDIO_STATUS_PAUSED 0x12 #define AUDIO_STATUS_PLAY_COMPLETE 0x13 #define AUDIO_STATUS_PLAY_ERROR 0x14 #define AUDIO_STATUS_NO_STATUS 0x15 /* CDROM_SUB_Q_DATA_FORMAT.Format constants */ #define IOCTL_CDROM_SUB_Q_CHANNEL 0x00 #define IOCTL_CDROM_CURRENT_POSITION 0x01 #define IOCTL_CDROM_MEDIA_CATALOG 0x02 #define IOCTL_CDROM_TRACK_ISRC 0x03 typedef struct _CDROM_SUB_Q_DATA_FORMAT { UCHAR Format; UCHAR Track; } _MS_STRUCT CDROM_SUB_Q_DATA_FORMAT, *PCDROM_SUB_Q_DATA_FORMAT; typedef struct _SUB_Q_HEADER { UCHAR Reserved; UCHAR AudioStatus; UCHAR DataLength[2]; } _MS_STRUCT SUB_Q_HEADER, *PSUB_Q_HEADER; typedef struct _SUB_Q_MEDIA_CATALOG_NUMBER { SUB_Q_HEADER Header; UCHAR FormatCode; UCHAR Reserved[3]; UCHAR Reserved1 : 7; UCHAR Mcval :1; UCHAR MediaCatalog[15]; } _MS_STRUCT SUB_Q_MEDIA_CATALOG_NUMBER, *PSUB_Q_MEDIA_CATALOG_NUMBER; typedef struct _SUB_Q_TRACK_ISRC { SUB_Q_HEADER Header; UCHAR FormatCode; UCHAR Reserved0; UCHAR Track; UCHAR Reserved1; UCHAR Reserved2 : 7; UCHAR Tcval : 1; UCHAR TrackIsrc[15]; } _MS_STRUCT SUB_Q_TRACK_ISRC, *PSUB_Q_TRACK_ISRC; typedef struct _SUB_Q_CURRENT_POSITION { SUB_Q_HEADER Header; UCHAR FormatCode; UCHAR Control : 4; UCHAR ADR : 4; UCHAR TrackNumber; UCHAR IndexNumber; UCHAR AbsoluteAddress[4]; UCHAR TrackRelativeAddress[4]; } _MS_STRUCT SUB_Q_CURRENT_POSITION, *PSUB_Q_CURRENT_POSITION; typedef union _SUB_Q_CHANNEL_DATA { SUB_Q_CURRENT_POSITION CurrentPosition; SUB_Q_MEDIA_CATALOG_NUMBER MediaCatalog; SUB_Q_TRACK_ISRC TrackIsrc; } _MS_STRUCT SUB_Q_CHANNEL_DATA, *PSUB_Q_CHANNEL_DATA; #define CDROM_EXCLUSIVE_CALLER_LENGTH 64 typedef enum _EXCLUSIVE_ACCESS_REQUEST_TYPE { ExclusiveAccessQueryState, ExclusiveAccessLockDevice, ExclusiveAccessUnlockDevice } EXCLUSIVE_ACCESS_REQUEST_TYPE, *PEXCLUSIVE_ACCESS_REQUEST_TYPE; typedef struct _CDROM_EXCLUSIVE_ACCESS { EXCLUSIVE_ACCESS_REQUEST_TYPE RequestType; ULONG Flags; } _MS_STRUCT CDROM_EXCLUSIVE_ACCESS, *PCDROM_EXCLUSIVE_ACCESS; typedef struct _CDROM_EXCLUSIVE_LOCK { CDROM_EXCLUSIVE_ACCESS Access; UCHAR CallerName[CDROM_EXCLUSIVE_CALLER_LENGTH]; } _MS_STRUCT CDROM_EXCLUSIVE_LOCK, *PCDROM_EXCLUSIVE_LOCK; typedef struct _VOLUME_CONTROL { UCHAR PortVolume[4]; } _MS_STRUCT VOLUME_CONTROL, *PVOLUME_CONTROL; /* CDROM_AUDIO_CONTROL.LbaFormat constants */ #define AUDIO_WITH_PREEMPHASIS 0x1 #define DIGITAL_COPY_PERMITTED 0x2 #define AUDIO_DATA_TRACK 0x4 #define TWO_FOUR_CHANNEL_AUDIO 0x8 typedef struct _CDROM_AUDIO_CONTROL { UCHAR LbaFormat; USHORT LogicalBlocksPerSecond; } _MS_STRUCT CDROM_AUDIO_CONTROL, *PCDROM_AUDIO_CONTROL; typedef struct _CDROM_TOC_SESSION_DATA { UCHAR Length[2]; UCHAR FirstCompleteSession; UCHAR LastCompleteSession; TRACK_DATA TrackData[1]; } _MS_STRUCT CDROM_TOC_SESSION_DATA, *PCDROM_TOC_SESSION_DATA; typedef enum _TRACK_MODE_TYPE { YellowMode2 = 0, XAForm2 = 1, CDDA = 2, RawWithC2AndSubCode = 3, RawWithC2 = 4, RawWithSubCode = 5 } TRACK_MODE_TYPE, *PTRACK_MODE_TYPE; typedef struct __RAW_READ_INFO { LARGE_INTEGER DiskOffset; ULONG SectorCount; TRACK_MODE_TYPE TrackMode; } _MS_STRUCT RAW_READ_INFO, *PRAW_READ_INFO; /* RedBook CD-DA 2352 */ #define CD_FRAMESIZE_RAW 2352 /* (Yellow Book) Mode1 Form1 */ #define M1RAW_SECTOR_SIZE 2048 /* (Yellow Book) Mode1 Form2 */ #define M2RAW_SECTOR_SIZE 2336 /* The maximum possible returned */ #define CD_FRAMESIZE_RAWER 2646 /*--- Public functions ---*/ CdromDriverWin32::CdromDriverWin32() { int i; D(bug(NFCD_NAME "CdromDriverWin32()")); for (i = 0; i < CD_MAX_DRIVES; i++) { cddrives[i].handle = NULL; cddrives[i].device = NULL; cddrives[i].usecount = 0; } drives_scanned = false; } CdromDriverWin32::~CdromDriverWin32() { int i; D(bug(NFCD_NAME "~CdromDriverWin32()")); for (i = 0; i < CD_MAX_DRIVES; i++) { while (cddrives[i].usecount > 0) CloseDrive(i); free(cddrives[i].device); cddrives[i].device = NULL; } drives_scanned = false; numcds = 0; } int CdromDriverWin32::Count() { if (!drives_scanned) { (void) DeviceName(0); } return numcds; } const char *CdromDriverWin32::DeviceName(int drive) { if (!drives_scanned) { char device[10]; numcds = 0; for ( int i = 0 ; i < CD_MAX_DRIVES; i++ ) { sprintf(device, "%c:\\", DriveToLetter(i)); if ( GetDriveType(device) == DRIVE_CDROM ) { sprintf(device, "\\\\.\\%c:", DriveToLetter(i)); cddrives[numcds].device = strdup(device); numcds++; } } drives_scanned = true; } return cddrives[drive].device; } /*--- Private functions ---*/ int CdromDriverWin32::OpenDrive(memptr device) { int drive; drive = GetDrive(device); drive = DriveFromLetter(drive); /* Drive exist ? */ if (drive < 0 || drive >= CD_MAX_DRIVES || (drives_mask & (1<> 32) & 0xffffffffl; if (::SetFilePointer(cddrives[drive].handle, lo, &hi, FILE_BEGIN) == INVALID_SET_FILE_POINTER) { win32_set_errno(); int errorcode = errnoHost2Mint(errno, TOS_ENOSYS); D(bug(NFCD_NAME "Read(): can not seek to block %d", first)); CloseDrive(drive); return errorcode; } if (::ReadFile(cddrives[drive].handle, Atari2HostAddr(buffer), length * CD_FRAMESIZE, NULL, NULL) == FALSE) { int errorcode = errnoHost2Mint(errno, TOS_ENOSYS); D(bug(NFCD_NAME "Read(): can not read %d blocks", length)); CloseDrive(drive); return errorcode; } CloseDrive(drive); return TOS_E_OK; } int CdromDriverWin32::cd_winioctl(int drive, DWORD code, LPVOID in, DWORD insize, LPVOID out, DWORD outsize, LPDWORD returned) { int errorcode = TOS_E_OK; DWORD lpBytesReturned; if (returned == NULL) returned = &lpBytesReturned; if (!::DeviceIoControl(cddrives[drive].handle, code, in, insize, out, outsize, returned, NULL)) { win32_set_errno(); errorcode = errnoHost2Mint(errno, TOS_EDRVNR); } return errorcode; } int32 CdromDriverWin32::cd_status(memptr device, memptr ext_status) { int drive, errorcode; UNUSED(ext_status); drive = OpenDrive(device); if (drive < 0) return drive; errorcode = cd_winioctl(drive, IOCTL_CDROM_CHECK_VERIFY); if (errorcode < 0) { DWORD err = GetLastError(); if (err == ERROR_MEDIA_CHECK || err == ERROR_MEDIA_CHANGED) { errorcode = 1<<3; } D(bug(NFCD_NAME "Status(CDROM_MEDIA_CHANGED): %s", win32_errstring(GetLastError()))); } CloseDrive(drive); return errorcode; } int32 CdromDriverWin32::cd_ioctl(memptr device, uint16 opcode, memptr buffer) { int drive, errorcode; drive = OpenDrive(device); if (drive < 0) return drive; errorcode = TOS_ENOSYS; switch(opcode) { case ATARI_CDROMREADOFFSET: { CDROM_TOC_SESSION_DATA data; Uint32 *atari_addr; atari_addr = (Uint32 *) Atari2HostAddr(buffer); errorcode = cd_winioctl(drive, IOCTL_CDROM_GET_LAST_SESSION, NULL, 0, &data, sizeof(data)); if (errorcode >= 0) { Uint32 *p = (Uint32 *)data.TrackData[0].Address; *atari_addr = *p; D(bug(NFCD_NAME "CDROMREADOFFSET: lba 0x%08x", SDL_SwapBE32(*atari_addr))); } } break; case ATARI_CDROMPAUSE: D(bug(NFCD_NAME " Ioctl(CDROMPAUSE)")); errorcode = cd_winioctl(drive, IOCTL_CDROM_PAUSE_AUDIO); break; case ATARI_CDROMRESUME: D(bug(NFCD_NAME " Ioctl(CDROMRESUME)")); errorcode = cd_winioctl(drive, IOCTL_CDROM_RESUME_AUDIO); break; case ATARI_CDROMPLAYMSF: { CDROM_PLAY_AUDIO_MSF cd_msf; atari_cdrom_msf_t *atari_msf; atari_msf = (atari_cdrom_msf_t *) Atari2HostAddr(buffer); cd_msf.StartingM = atari_msf->cdmsf_min0; cd_msf.StartingS = atari_msf->cdmsf_sec0; cd_msf.StartingF = atari_msf->cdmsf_frame0; cd_msf.EndingM = atari_msf->cdmsf_min1; cd_msf.EndingS = atari_msf->cdmsf_sec1; cd_msf.EndingF = atari_msf->cdmsf_frame1; D(bug(NFCD_NAME " Ioctl(CDROMPLAYMSF,%02d:%02d:%02d,%02d:%02d:%02d)", cd_msf.StartingM, cd_msf.StartingS, cd_msf.StartingF, cd_msf.EndingM, cd_msf.EndingS, cd_msf.EndingF )); errorcode = cd_winioctl(drive, IOCTL_CDROM_PLAY_AUDIO_MSF, &cd_msf, sizeof(cd_msf)); } break; case ATARI_CDROMPLAYTRKIND: { atari_cdrom_ti *ti = (atari_cdrom_ti *)Atari2HostAddr(buffer); D(bug(NFCD_NAME " Ioctl(CDROMPLAYTRKIND,%d.%d,%d.%d)", ti->cdti_trk0, ti->cdti_ind0, ti->cdti_trk1, ti->cdti_trk1 )); errorcode = cd_win_playtracks(drive, ti->cdti_trk0, ti->cdti_trk1); } break; case ATARI_CDROMREADTOCHDR: { CDROM_READ_TOC_EX hdr; CDROM_TOC toc; atari_cdromtochdr_t *atari_hdr; atari_hdr = (atari_cdromtochdr_t *)Atari2HostAddr(buffer); hdr.Format = CDROM_READ_TOC_EX_FORMAT_TOC; hdr.Reserved1 = 0; hdr.Msf = 1; hdr.SessionTrack = 0; hdr.Reserved2 = 0; hdr.Reserved3 = 0; errorcode = cd_winioctl(drive, IOCTL_CDROM_READ_TOC_EX, &hdr, sizeof(hdr), &toc, sizeof(toc)); if (errorcode >= 0) { atari_hdr->cdth_trk0 = toc.FirstTrack; atari_hdr->cdth_trk1 = toc.LastTrack; D(bug(NFCD_NAME " Ioctl(CDROMREADTOCHDR) = {%d, %d}", atari_hdr->cdth_trk0, atari_hdr->cdth_trk1)); } } break; case ATARI_CDROMREADTOCENTRY: { atari_cdromtocentry_t *atari_tocentry; CDROM_READ_TOC_EX hdr; CDROM_TOC toc; int i, numtracks; atari_tocentry = (atari_cdromtocentry_t *) Atari2HostAddr(buffer); D(bug(NFCD_NAME " Ioctl(READTOCENTRY,0x%02x,0x%02x)", atari_tocentry->cdte_track, atari_tocentry->cdte_format)); hdr.Format = CDROM_READ_TOC_EX_FORMAT_TOC; hdr.Reserved1 = 0; hdr.Msf = atari_tocentry->cdte_format == CDROM_LBA ? 0 : 1; hdr.SessionTrack = 0; hdr.Reserved2 = 0; hdr.Reserved3 = 0; errorcode = cd_winioctl(drive, IOCTL_CDROM_READ_TOC_EX, &hdr, sizeof(hdr), &toc, sizeof(toc)); if (errorcode >= 0) { numtracks = toc.LastTrack - toc.FirstTrack + 1; for (i = 0; i < numtracks; i++) { if (toc.TrackData[i].TrackNumber == atari_tocentry->cdte_track) { Uint32 *p = (Uint32 *)toc.TrackData[i].Address; atari_tocentry->cdte_info = (toc.TrackData[i].Adr << 4) | toc.TrackData[i].Control; atari_tocentry->cdte_datamode = 0; atari_tocentry->dummy = 0; atari_tocentry->cdte_addr = *p; break; } } if (i >= numtracks) errorcode = TOS_EFILNF; } } break; case ATARI_CDROMSTOP: D(bug(NFCD_NAME " Ioctl(CDROMSTOP)")); errorcode = cd_winioctl(drive, IOCTL_CDROM_STOP_AUDIO); break; case ATARI_CDROMSTART: D(bug(NFCD_NAME " Ioctl(CDROMSTART)")); errorcode = cd_winioctl(drive, IOCTL_STORAGE_LOAD_MEDIA); break; case ATARI_CDROMEJECT: errorcode = cd_winioctl(drive, buffer != 0 ? IOCTL_STORAGE_LOAD_MEDIA : IOCTL_STORAGE_EJECT_MEDIA); break; case ATARI_CDROMVOLCTRL: { VOLUME_CONTROL volctrl; /* CDROMVOLCTRL function emulation */ struct atari_cdrom_volctrl *v = (struct atari_cdrom_volctrl *) Atari2HostAddr(buffer); D(bug(NFCD_NAME " Ioctl(CDROMVOLCTRL)")); /* Write volume settings */ volctrl.PortVolume[0] = v->channel0; volctrl.PortVolume[1] = v->channel1; volctrl.PortVolume[2] = v->channel2; volctrl.PortVolume[3] = v->channel3; errorcode = cd_winioctl(drive, IOCTL_CDROM_SET_VOLUME, &volctrl, sizeof(volctrl)); } break; case ATARI_CDROMAUDIOCTRL: { VOLUME_CONTROL volctrl; atari_cdrom_audioctrl_t *atari_audioctrl; /* CDROMAUDIOCTRL function emulation */ atari_audioctrl = (atari_cdrom_audioctrl_t *) Atari2HostAddr(buffer); D(bug(NFCD_NAME " Ioctl(CDROMAUDIOCTRL,0x%04x)", atari_audioctrl->set)); if (atari_audioctrl->set == 0) { /* Read volume settings */ errorcode = cd_winioctl(drive, IOCTL_CDROM_GET_VOLUME, NULL, 0, &volctrl, sizeof(volctrl)); if (errorcode >= 0) { atari_audioctrl->channel[0].selection = atari_audioctrl->channel[1].selection = atari_audioctrl->channel[2].selection = atari_audioctrl->channel[3].selection = 0; atari_audioctrl->channel[0].volume = volctrl.PortVolume[0]; atari_audioctrl->channel[1].volume = volctrl.PortVolume[1]; atari_audioctrl->channel[2].volume = volctrl.PortVolume[2]; atari_audioctrl->channel[3].volume = volctrl.PortVolume[3]; } } else { /* Write volume settings */ volctrl.PortVolume[0] = atari_audioctrl->channel[0].volume; volctrl.PortVolume[1] = atari_audioctrl->channel[1].volume; volctrl.PortVolume[2] = atari_audioctrl->channel[2].volume; volctrl.PortVolume[3] = atari_audioctrl->channel[3].volume; errorcode = cd_winioctl(drive, IOCTL_CDROM_SET_VOLUME, &volctrl, sizeof(volctrl)); } } break; case ATARI_CDROMSUBCHNL: { CDROM_SUB_Q_DATA_FORMAT subchnl; SUB_Q_CHANNEL_DATA data; atari_cdromsubchnl_t *atari_subchnl; atari_subchnl = (atari_cdromsubchnl_t *) Atari2HostAddr(buffer); subchnl.Format = IOCTL_CDROM_CURRENT_POSITION; subchnl.Track = 0; D(bug(NFCD_NAME " Ioctl(READSUBCHNL,0x%02x)", atari_subchnl->cdsc_format)); errorcode = cd_winioctl(drive, IOCTL_CDROM_READ_Q_CHANNEL, &subchnl, sizeof(subchnl), &data, sizeof(data)); if (errorcode >= 0) { Uint32 *p; atari_subchnl->cdsc_audiostatus = data.CurrentPosition.Header.AudioStatus; atari_subchnl->cdsc_resvd = 0; atari_subchnl->cdsc_info = (data.CurrentPosition.ADR & 0x0f)<<4; atari_subchnl->cdsc_info |= data.CurrentPosition.Control & 0x0f; atari_subchnl->cdsc_trk = data.CurrentPosition.TrackNumber; atari_subchnl->cdsc_ind = data.CurrentPosition.IndexNumber; p = (Uint32 *)data.CurrentPosition.AbsoluteAddress; atari_subchnl->cdsc_absaddr = *p; p = (Uint32 *)data.CurrentPosition.TrackRelativeAddress; atari_subchnl->cdsc_reladdr = *p; if (atari_subchnl->cdsc_format != CDROM_LBA) { int minute, second, frame; FRAMES_TO_MSF(SDL_SwapBE32(atari_subchnl->cdsc_absaddr), &minute, &second, &frame); atari_subchnl->cdsc_absaddr = SDL_SwapBE32((minute<<16)|(second<<8)|frame); FRAMES_TO_MSF(SDL_SwapBE32(atari_subchnl->cdsc_reladdr), &minute, &second, &frame); atari_subchnl->cdsc_reladdr = SDL_SwapBE32((minute<<16)|(second<<8)|frame); } D(bug(NFCD_NAME "Ioctl(CDROMSUBCHNL): Format=%d, Status=0x%02x, Info=0x%02x, Trk=%d, Ind=%d, Abs=0x%08px, Rel=0x%08x", atari_subchnl->cdsc_format, atari_subchnl->cdsc_audiostatus, atari_subchnl->cdsc_info, atari_subchnl->cdsc_trk, atari_subchnl->cdsc_ind, SDL_SwapBE32(atari_subchnl->cdsc_absaddr), SDL_SwapBE32(atari_subchnl->cdsc_reladdr))); } } break; case ATARI_CDROMREADMODE2: case ATARI_CDROMREADMODE1: { atari_cdrom_read_t *atari_cdread; RAW_READ_INFO info; char *buf; /* * TODO: verify this. linux/cdrom.h and mint/cdromio.h state that this ioctl() * takes struct cdrom_read as input, but the drivers actually expect a struct cdrom_msf */ atari_cdread = (atari_cdrom_read_t *) Atari2HostAddr(buffer); info.DiskOffset.QuadPart = (uint64_t)SDL_SwapBE32(atari_cdread->cdread_lba) * CD_FRAMESIZE; info.SectorCount = SDL_SwapBE32(atari_cdread->cdread_buflen); buf = (char *)Atari2HostAddr(SDL_SwapBE32(atari_cdread->cdread_bufaddr)); D(bug(NFCD_NAME " Ioctl(%s)", opcode == ATARI_CDROMREADMODE1 ? "CDROMREADMODE1" : "CDROMREADMODE2")); if (opcode == ATARI_CDROMREADMODE1) { info.TrackMode = YellowMode2; errorcode = cd_winioctl(drive, IOCTL_CDROM_RAW_READ, &info, sizeof(info), buf, info.SectorCount * CD_FRAMESIZE_RAWER); } else { info.TrackMode = XAForm2; errorcode = cd_winioctl(drive, IOCTL_CDROM_RAW_READ, &info, sizeof(info), buf, info.SectorCount * CD_FRAMESIZE_RAWER); } } break; case ATARI_CDROMPREVENTREMOVAL: case ATARI_CDROMALLOWREMOVAL: { PREVENT_MEDIA_REMOVAL allow; allow.PreventMediaRemoval = ATARI_CDROMPREVENTREMOVAL ? TRUE : FALSE; errorcode = cd_winioctl(drive, IOCTL_STORAGE_EJECTION_CONTROL, &allow, sizeof(allow)); } break; case ATARI_CDROMREADDA: { atari_cdrom_msf_t *atari_msf; RAW_READ_INFO info; char *buf; ULONG lba; atari_msf = (atari_cdrom_msf_t *)Atari2HostAddr(buffer); lba = MSF_TO_FRAMES(atari_msf->cdmsf_min0, atari_msf->cdmsf_sec0, atari_msf->cdmsf_frame0); info.DiskOffset.QuadPart = (uint64_t)lba * CD_FRAMESIZE; info.TrackMode = CDDA; /* not sure about this, but on linux this command reads 1 sector into the same buffer that was passed as input */ info.SectorCount = 1; buf = (char *)atari_msf; D(bug(NFCD_NAME " Ioctl(CDROMREADDA)")); errorcode = cd_winioctl(drive, IOCTL_CDROM_RAW_READ, &info, sizeof(info), buf, info.SectorCount * CD_FRAMESIZE_RAW); } break; case ATARI_CDROMRESET: D(bug(NFCD_NAME " Ioctl(CDROMRESET)")); break; case ATARI_CDROMGETMCN: { CDROM_SUB_Q_DATA_FORMAT sub; SUB_Q_CHANNEL_DATA data; atari_mcn_t *atari_mcn; atari_mcn = (atari_mcn_t *) Atari2HostAddr(buffer); memset(atari_mcn, 0, sizeof(atari_mcn_t)); sub.Format = IOCTL_CDROM_MEDIA_CATALOG; sub.Track = 0; D(bug(NFCD_NAME " Ioctl(CDROMGETMCN)")); errorcode = cd_winioctl(drive, IOCTL_CDROM_READ_Q_CHANNEL, &sub, sizeof(sub), &data, sizeof(data)); if (errorcode >= 0) { atari_mcn->audiostatus = data.MediaCatalog.Header.AudioStatus; Host2AtariSafeStrncpy(buffer + offsetof(atari_mcn_t, mcn), (const char *)data.MediaCatalog.MediaCatalog, MIN(sizeof(atari_mcn->mcn), sizeof(data.MediaCatalog.MediaCatalog))); } } break; case ATARI_CDROMGETTISRC: { atari_tisrc_t *tisrc = (atari_tisrc_t *)Atari2HostAddr(buffer); CDROM_SUB_Q_DATA_FORMAT sub; SUB_Q_CHANNEL_DATA data; sub.Format = IOCTL_CDROM_TRACK_ISRC; sub.Track = tisrc->tisrc_track; errorcode = cd_winioctl(drive, IOCTL_CDROM_READ_Q_CHANNEL, &sub, sizeof(sub), &data, sizeof(data)); if (errorcode >= 0) { tisrc->tisrc_audiostatus = data.TrackIsrc.Header.AudioStatus; Host2AtariSafeStrncpy(buffer + offsetof(atari_tisrc_t, tisrc_tisrc), (const char *)data.TrackIsrc.TrackIsrc, MIN(sizeof(tisrc->tisrc_tisrc), sizeof(data.TrackIsrc.TrackIsrc))); } } break; default: D(bug(NFCD_NAME "Ioctl(): ioctl 0x%04x unsupported", opcode)); break; } CloseDrive(drive); return errorcode; } int CdromDriverWin32::cd_win_playtracks(int drive, unsigned char first, unsigned char last) { CDROM_PLAY_AUDIO_MSF cd_msf; CDROM_READ_TOC_EX hdr; CDROM_TOC toc; int i, errorcode, numtracks; /* Read TOC header */ hdr.Format = CDROM_READ_TOC_EX_FORMAT_TOC; hdr.Reserved1 = 0; hdr.Msf = 1; hdr.SessionTrack = 0; hdr.Reserved2 = 0; hdr.Reserved3 = 0; errorcode = cd_winioctl(drive, IOCTL_CDROM_READ_TOC_EX, &hdr, sizeof(hdr), &toc, sizeof(toc)); if (errorcode < 0) return errorcode; numtracks = toc.LastTrack - toc.FirstTrack + 1; for (i = 0; i < numtracks; i++) if (toc.TrackData[i].TrackNumber == first) { cd_msf.StartingM = toc.TrackData[i].Address[1]; cd_msf.StartingS = toc.TrackData[i].Address[2]; cd_msf.StartingF = toc.TrackData[i].Address[3]; break; } if (i >= numtracks) return TOS_EFILNF; for (i = 0; i < numtracks; i++) if (toc.TrackData[i].TrackNumber == last) { cd_msf.EndingM = toc.TrackData[i + 1].Address[1]; cd_msf.EndingS = toc.TrackData[i + 1].Address[2]; cd_msf.EndingF = toc.TrackData[i + 1].Address[3]; break; } if (i >= numtracks) return TOS_EFILNF; errorcode = cd_winioctl(drive, IOCTL_CDROM_PLAY_AUDIO_MSF, &cd_msf, sizeof(cd_msf)); return errorcode; } int32 CdromDriverWin32::cd_startaudio(memptr device, uint32 dummy, memptr buffer) { UNUSED(dummy); int drive, errorcode; metados_bos_tracks_t *atari_track_index; drive = OpenDrive(device); if (drive < 0) return drive; atari_track_index = (metados_bos_tracks_t *) Atari2HostAddr(buffer); errorcode = cd_win_playtracks(drive, atari_track_index->first, atari_track_index->first + atari_track_index->count - 1); CloseDrive(drive); return errorcode; } int32 CdromDriverWin32::cd_stopaudio(memptr device) { int drive, errorcode; drive = OpenDrive(device); if (drive < 0) return drive; errorcode = cd_winioctl(drive, IOCTL_CDROM_STOP_AUDIO); CloseDrive(drive); return errorcode; } int32 CdromDriverWin32::cd_setsongtime(memptr device, uint32 dummy, uint32 start_msf, uint32 end_msf) { UNUSED(dummy); int drive, errorcode; CDROM_PLAY_AUDIO_MSF cd_msf; drive = OpenDrive(device); if (drive < 0) return drive; cd_msf.StartingM = (start_msf>>16) & 0xff; cd_msf.StartingS = (start_msf>>8) & 0xff; cd_msf.StartingF = (start_msf>>0) & 0xff; D(bug(NFCD_NAME " start: %02d:%02d:%02d", (start_msf>>16) & 0xff, (start_msf>>8) & 0xff, start_msf & 0xff)); cd_msf.EndingM = (end_msf>>16) & 0xff; cd_msf.EndingS = (end_msf>>8) & 0xff; cd_msf.EndingF = (end_msf>>0) & 0xff; D(bug(NFCD_NAME " end: %02d:%02d:%02d", (end_msf>>16) & 0xff, (end_msf>>8) & 0xff, end_msf & 0xff)); errorcode = cd_winioctl(drive, IOCTL_CDROM_PLAY_AUDIO_MSF, &cd_msf, sizeof(cd_msf)); CloseDrive(drive); return errorcode; } int32 CdromDriverWin32::cd_gettoc(memptr device, uint32 dummy, memptr buffer) { int drive, i, numtracks, errorcode; CDROM_READ_TOC_EX hdr; CDROM_TOC toc; atari_tocentry_t *atari_tocentry; UNUSED(dummy); drive = OpenDrive(device); if (drive < 0) return drive; /* Read TOC header */ hdr.Format = CDROM_READ_TOC_EX_FORMAT_TOC; hdr.Reserved1 = 0; hdr.Msf = 1; hdr.SessionTrack = 0; hdr.Reserved2 = 0; hdr.Reserved3 = 0; errorcode = cd_winioctl(drive, IOCTL_CDROM_READ_TOC_EX, &hdr, sizeof(hdr), &toc, sizeof(toc)); if (errorcode < 0) { CloseDrive(drive); return errorcode; } D(bug(NFCD_NAME "GetToc(): TOC header read")); numtracks = toc.LastTrack - toc.FirstTrack + 1; /* Read TOC entries */ atari_tocentry = (atari_tocentry_t *) Atari2HostAddr(buffer); for (i = 0; i <= numtracks; i++) { atari_tocentry[i].track = toc.TrackData[i].TrackNumber; atari_tocentry[i].minute = BinaryToBcd(toc.TrackData[i].Address[1]); atari_tocentry[i].second = BinaryToBcd(toc.TrackData[i].Address[2]); atari_tocentry[i].frame = BinaryToBcd(toc.TrackData[i].Address[3]); if (i == numtracks) atari_tocentry[i].track = CDROM_LEADOUT_CDAR; if (hdr.Msf) { D(bug(NFCD_NAME "GetToc(): %02x: msf %02d:%02d:%02d, bcd: %02x:%02x:%02x", atari_tocentry[i].track, toc.TrackData[i].Address[1], toc.TrackData[i].Address[2], toc.TrackData[i].Address[3], atari_tocentry[i].minute, atari_tocentry[i].second, atari_tocentry[i].frame )); } else { D(bug(NFCD_NAME "GetToc(): lba 0x%08x", *(Uint32 *)toc.TrackData[i].Address)); } } atari_tocentry[numtracks+1].track = atari_tocentry[numtracks+1].minute = atari_tocentry[numtracks+1].second = atari_tocentry[numtracks+1].frame = 0; CloseDrive(drive); return TOS_E_OK; } int32 CdromDriverWin32::cd_discinfo(memptr device, memptr buffer) { int drive, errorcode; CDROM_READ_TOC_EX hdr; CDROM_TOC toc; CDROM_SUB_Q_DATA_FORMAT subchnl; SUB_Q_CHANNEL_DATA data; atari_discinfo_t *discinfo; int minute, second, frame, numtracks; drive = OpenDrive(device); if (drive < 0) return drive; /* Read TOC header */ hdr.Format = CDROM_READ_TOC_EX_FORMAT_TOC; hdr.Reserved1 = 0; hdr.Msf = 1; hdr.SessionTrack = 0; hdr.Reserved2 = 0; hdr.Reserved3 = 0; errorcode = cd_winioctl(drive, IOCTL_CDROM_READ_TOC_EX, &hdr, sizeof(hdr), &toc, sizeof(toc)); if (errorcode < 0) { CloseDrive(drive); return errorcode; } D(bug(NFCD_NAME "DiscInfo(): TOC header read")); discinfo = (atari_discinfo_t *) Atari2HostAddr(buffer); memset(discinfo, 0, sizeof(atari_discinfo_t)); discinfo->first = discinfo->current = toc.FirstTrack; discinfo->last = toc.LastTrack; numtracks = toc.LastTrack - toc.FirstTrack + 1; discinfo->index = 1; /* Read subchannel */ subchnl.Format = IOCTL_CDROM_CURRENT_POSITION; subchnl.Track = 0; errorcode = cd_winioctl(drive, IOCTL_CDROM_READ_Q_CHANNEL, &subchnl, sizeof(subchnl), &data, sizeof(data)); if (errorcode < 0) { CloseDrive(drive); return errorcode; } D(bug(NFCD_NAME "DiscInfo(): Subchannel read")); discinfo->current = data.CurrentPosition.TrackNumber; /* current track */ discinfo->index = data.CurrentPosition.IndexNumber; /* current index */ Uint32 *p = (Uint32 *)data.CurrentPosition.TrackRelativeAddress; FRAMES_TO_MSF(SDL_SwapBE32(*p), &minute, &second, &frame); discinfo->relative.track = 0; discinfo->relative.minute = BinaryToBcd(minute); discinfo->relative.second = BinaryToBcd(second); discinfo->relative.frame = BinaryToBcd(frame); p = (Uint32 *)data.CurrentPosition.AbsoluteAddress; FRAMES_TO_MSF(SDL_SwapBE32(*p), &minute, &second, &frame); discinfo->absolute.track = 0; discinfo->absolute.minute = BinaryToBcd(minute); discinfo->absolute.second = BinaryToBcd(second); discinfo->absolute.frame = BinaryToBcd(frame); /* Read toc entry for start of disc, to select disc type */ discinfo->disctype = ((toc.TrackData[0].Control & AUDIO_DATA_TRACK) == AUDIO_DATA_TRACK); /* Read toc entry for end of disc */ discinfo->end.track = 0; discinfo->end.minute = BinaryToBcd(toc.TrackData[numtracks].Address[1]); discinfo->end.second = BinaryToBcd(toc.TrackData[numtracks].Address[2]); discinfo->end.frame = BinaryToBcd(toc.TrackData[numtracks].Address[3]); D(bug(NFCD_NAME "DiscInfo(): first=%d, last=%d, current=%d, ind=%d, rel=%02x:%02x:%02x, abs=%02x:%02x:%02x, end=%02x:%02x:%02x", discinfo->first, discinfo->last, discinfo->current, discinfo->index, discinfo->relative.minute, discinfo->relative.second, discinfo->relative.frame, discinfo->absolute.minute, discinfo->absolute.second, discinfo->absolute.frame, discinfo->end.minute, discinfo->end.second, discinfo->end.frame)); CloseDrive(drive); return TOS_E_OK; } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/natfeat/nfcdrom_sdl.h0000664000175000017500000000343213454637621016057 0ustar joyjoy/* NatFeat host CD-ROM access ARAnyM (C) 2003-2011 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFCDROM_SDL_H #define NFCDROM_SDL_H /*--- Includes ---*/ #include "nfcdrom.h" #include "SDL_compat.h" #if !SDL_VERSION_ATLEAST(2, 0, 0) #include /*--- Class ---*/ class CdromDriverSdl : public CdromDriver { private: SDL_CD *drive_handles[CD_MAX_DRIVES]; /* Handle for each possible opened drive */ protected: virtual int OpenDrive(memptr device); virtual void CloseDrive(int drive); virtual int32 cd_status(memptr device, memptr ext_status); virtual int32 cd_ioctl(memptr device, uint16 opcode, memptr buffer); virtual int32 cd_startaudio(memptr device, uint32 dummy, memptr buffer); virtual int32 cd_stopaudio(memptr device); virtual int32 cd_setsongtime(memptr device, uint32 dummy, uint32 start_msf, uint32 end_msf); virtual int32 cd_gettoc(memptr device, uint32 dummy, memptr buffer); virtual int32 cd_discinfo(memptr device, memptr buffer); public: CdromDriverSdl(void); virtual ~CdromDriverSdl(void); virtual int Count(); virtual const char *DeviceName(int drive); }; #endif #endif /* NFCDROM_SDL_H */ aranym-1.1.0/src/natfeat/nfcdrom_sdl.cpp0000664000175000017500000003514713454637621016422 0ustar joyjoy/* NatFeat host CD-ROM access ARAnyM (C) 2003 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "parameters.h" #include "nfcdrom_sdl.h" #if !SDL_VERSION_ATLEAST(2, 0, 0) #include "nfcdrom_atari.h" #include "../../atari/nfcdrom/nfcdrom_nfapi.h" #include "toserror.h" #define DEBUG 0 #include "debug.h" #include #include /*--- Defines ---*/ #define NFCD_NAME "nf:cdrom:sdl: " /*--- Constructor/desctructor ---*/ CdromDriverSdl::CdromDriverSdl(void) { D(bug(NFCD_NAME "CdromDriverSdl()")); for (int i=0; i= CD_MAX_DRIVES || (drives_mask & (1<track[atari_ti[0]].offset; length = 0; for (i=atari_ti[0]; itrack[i].length; } errorcode=SDL_CDPlay(cur_cd, start, length); } break; case ATARI_CDROMREADTOCHDR: /* CDROMREADTOCHDR */ { atari_cdromtochdr_t *atari_tochdr; atari_tochdr = (atari_cdromtochdr_t *) Atari2HostAddr(buffer); D(bug(NFCD_NAME " Ioctl(READTOCHDR)")); if CD_INDRIVE(status) { atari_tochdr->cdth_trk0 = cur_cd->track[0].id; atari_tochdr->cdth_trk1 = cur_cd->track[cur_cd->numtracks-1].id; errorcode=0; } else { errorcode=TOS_EDRVNR; } } break; case ATARI_CDROMREADTOCENTRY: /* CDROMREADTOCENTRY */ { unsigned char *atari_tocentry; int i, minute, second, frame; atari_tocentry = (unsigned char *) Atari2HostAddr(buffer); D(bug(NFCD_NAME " Ioctl(READTOCENTRY)")); atari_tocentry[2] = 0; atari_tocentry[3] = 0; atari_tocentry[4] = atari_tocentry[5] = 0; atari_tocentry[6] = atari_tocentry[7] = atari_tocentry[8] = atari_tocentry[9] =0; errorcode=TOS_EDRVNR; if CD_INDRIVE(status) { /* Search the track */ for (i=0; i<=cur_cd->numtracks; i++) { if (cur_cd->track[i].id == atari_tocentry[0]) { atari_tocentry[2] = cur_cd->track[i].type & 0x0f; if (atari_tocentry[1] == CDROM_LBA) { *((unsigned long *) &atari_tocentry[6]) = SDL_SwapBE32(cur_cd->track[i].offset); } else { FRAMES_TO_MSF(cur_cd->track[i].offset, &minute, &second, &frame); atari_tocentry[7] = minute; atari_tocentry[8] = second; atari_tocentry[9] = frame; } errorcode=0; break; } } } } break; case ATARI_CDROMSTOP: /* CDROMSTOP */ { errorcode=SDL_CDStop(cur_cd); } break; case ATARI_CDROMSTART: /* CDROMSTART */ break; case ATARI_CDROMEJECT: /* CDROMEJECT */ { errorcode=SDL_CDEject(cur_cd); } break; case ATARI_CDROMVOLCTRL: /* CDROMVOLCTRL */ break; case ATARI_CDROMSUBCHNL: /* CDROMSUBCHNL */ { unsigned char *atari_subchnl; int minute, second, frame, abs_addr, rel_addr; atari_subchnl = (unsigned char *) Atari2HostAddr(buffer); D(bug(NFCD_NAME " Ioctl(READSUBCHNL,0x%02x)", atari_subchnl[0])); atari_subchnl[1] = CDROM_AUDIO_INVALID; /* audiostatus */ atari_subchnl[5] = 1; /* index */ atari_subchnl[2] = /* reserved */ atari_subchnl[3] = /* adr+ctrl */ atari_subchnl[4] = /* track */ atari_subchnl[6] = /* abs_addr */ atari_subchnl[7] = atari_subchnl[8] = atari_subchnl[9] = atari_subchnl[10] = /* rel_addr */ atari_subchnl[11] = atari_subchnl[12] = atari_subchnl[13] = 0; switch(status) { case CD_TRAYEMPTY: atari_subchnl[1] = CDROM_AUDIO_NO_STATUS; break; case CD_STOPPED: atari_subchnl[1] = CDROM_AUDIO_COMPLETED; break; case CD_PLAYING: atari_subchnl[1] = CDROM_AUDIO_PLAY; break; case CD_PAUSED: atari_subchnl[1] = CDROM_AUDIO_PAUSED; break; case CD_ERROR: atari_subchnl[1] = CDROM_AUDIO_ERROR; break; } if CD_INDRIVE(status) { rel_addr = cur_cd->cur_frame; abs_addr = cur_cd->track[cur_cd->cur_track].offset + rel_addr; atari_subchnl[4] = cur_cd->track[cur_cd->cur_track].id; atari_subchnl[3] = cur_cd->track[cur_cd->cur_track].type == SDL_DATA_TRACK ? CDROM_DATA_TRACK : 0; if (atari_subchnl[0] == CDROM_LBA) { *((unsigned long *) &atari_subchnl[6]) = SDL_SwapBE32(abs_addr); *((unsigned long *) &atari_subchnl[10]) = SDL_SwapBE32(rel_addr); } else { FRAMES_TO_MSF(abs_addr, &minute, &second, &frame); *((Uint32 *) &atari_subchnl[6]) = SDL_SwapBE32((minute<<16)|(second<<8)|frame); FRAMES_TO_MSF(rel_addr, &minute, &second, &frame); *((Uint32 *) &atari_subchnl[10]) = SDL_SwapBE32((minute<<16)|(second<<8)|frame); } D(bug(NFCD_NAME "Ioctl(CDROMSUBCHNL): Format=%d, Status=0x%02x, Info=0x%02x, Trk=%d, Ind=%d, Abs=0x%08x, Rel=0x%08x", atari_subchnl[0], atari_subchnl[1], atari_subchnl[3], atari_subchnl[4], atari_subchnl[5], SDL_SwapBE32(*(Uint32 *)&atari_subchnl[6]), SDL_SwapBE32(*(Uint32 *)&atari_subchnl[10]))); errorcode=0; } else { errorcode=TOS_EDRVNR; } } break; case ATARI_CDROMREADMODE2: /* CDROMREADMODE2 */ case ATARI_CDROMREADMODE1: /* CDROMREADMODE1 */ break; case ATARI_CDROMPREVENTREMOVAL: /* CDROMPREVENTREMOVAL */ break; case ATARI_CDROMALLOWREMOVAL: /* CDROMALLOWREMOVAL */ break; case ATARI_CDROMAUDIOCTRL: /* CDROMAUDIOCTRL */ break; case ATARI_CDROMREADDA: /* CDROMREADDA */ break; case ATARI_CDROMRESET: /* unused */ break; case ATARI_CDROMGETMCN: /* CDROMGETMCN */ break; case ATARI_CDROMGETTISRC: /* CDROMGETTISRC */ break; } if (errorcode == CD_ERROR) { if (errno != 0) errorcode = errnoHost2Mint(errno, TOS_EDRVNR); else errorcode = TOS_EDRVNR; } CloseDrive(drive); return errorcode; } int32 CdromDriverSdl::cd_startaudio(memptr device, uint32 dummy, memptr buffer) { UNUSED(dummy); int drive, errorcode; metados_bos_tracks_t *atari_track_index; D(bug(NFCD_NAME "StartAudio()")); drive = OpenDrive(device); if (drive<0) { return drive; } if (CD_INDRIVE(SDL_CDStatus(drive_handles[drive]))<=0) { return TOS_ENOSYS; } atari_track_index = (metados_bos_tracks_t *) Atari2HostAddr(buffer); errno = 0; errorcode = SDL_CDPlayTracks(drive_handles[drive], atari_track_index->first, 0, atari_track_index->count, 0); if (errorcode == CD_ERROR) { if (errno != 0) errorcode = errnoHost2Mint(errno, TOS_EDRVNR); else errorcode = TOS_EDRVNR; } CloseDrive(drive); return errorcode; } int32 CdromDriverSdl::cd_stopaudio(memptr device) { int drive, errorcode; D(bug(NFCD_NAME "StopAudio()")); drive = OpenDrive(device); if (drive<0) { return drive; } errno = 0; errorcode = SDL_CDStop(drive_handles[drive]); if (errorcode == CD_ERROR) { if (errno != 0) errorcode = errnoHost2Mint(errno, TOS_EDRVNR); else errorcode = TOS_EDRVNR; } CloseDrive(drive); return errorcode; } int32 CdromDriverSdl::cd_setsongtime(memptr device, uint32 dummy, uint32 start_msf, uint32 end_msf) { UNUSED(dummy); int drive, errorcode, start, length; D(bug(NFCD_NAME "SetSongTime()")); drive = OpenDrive(device); if (drive<0) { return drive; } errno = 0; if (CD_INDRIVE(SDL_CDStatus(drive_handles[drive]))<=0) { return TOS_ENOSYS; } start = MSF_TO_FRAMES((start_msf>>16) & 0xff, (start_msf>>8) & 0xff, (start_msf>>0) & 0xff); length = start; length += MSF_TO_FRAMES((end_msf>>16) & 0xff, (end_msf>>8) & 0xff, (end_msf>>0) & 0xff); errorcode=SDL_CDPlay(drive_handles[drive], start, length); if (errorcode == CD_ERROR) { if (errno != 0) errorcode = errnoHost2Mint(errno, TOS_EDRVNR); else errorcode = TOS_EDRVNR; } CloseDrive(drive); return errorcode; } int32 CdromDriverSdl::cd_gettoc(memptr device, uint32 dummy, memptr buffer) { UNUSED(dummy); int drive, i; SDL_CD *cur_cd; atari_tocentry_t *atari_tocentry; D(bug(NFCD_NAME "GetToc()")); drive = OpenDrive(device); if (drive<0) { return drive; } if (CD_INDRIVE(SDL_CDStatus(drive_handles[drive]))<=0) { return TOS_ENOSYS; } cur_cd = drive_handles[drive]; atari_tocentry = (atari_tocentry_t *) Atari2HostAddr(buffer); for (i=0; i<=cur_cd->numtracks; i++) { int minute, second, frame; FRAMES_TO_MSF(cur_cd->track[i].offset, &minute, &second, &frame); atari_tocentry[i].track = cur_cd->track[i].id; if (i == cur_cd->numtracks) { atari_tocentry[i].track = CDROM_LEADOUT_CDAR; } atari_tocentry[i].minute = BinaryToBcd(minute); atari_tocentry[i].second = BinaryToBcd(second); atari_tocentry[i].frame = BinaryToBcd(frame); D(bug(NFCD_NAME "GetToc(): %02x: msf %02d:%02d:%02d, bcd: %02x:%02x:%02x", atari_tocentry[i].track, minute, second, frame, atari_tocentry[i].minute, atari_tocentry[i].second, atari_tocentry[i].frame )); } atari_tocentry[cur_cd->numtracks+1].track = atari_tocentry[cur_cd->numtracks+1].minute = atari_tocentry[cur_cd->numtracks+1].second = atari_tocentry[cur_cd->numtracks+1].frame = 0; CloseDrive(drive); return TOS_E_OK; } int32 CdromDriverSdl::cd_discinfo(memptr device, memptr buffer) { int drive, minute, second, frame; SDL_CD *cur_cd; atari_discinfo_t *discinfo; D(bug(NFCD_NAME "DiscInfo()")); drive = OpenDrive(device); if (drive<0) { return drive; } if (CD_INDRIVE(SDL_CDStatus(drive_handles[drive]))<=0) { return TOS_ENOSYS; } cur_cd = drive_handles[drive]; discinfo = (atari_discinfo_t *) Atari2HostAddr(buffer); memset(discinfo, 0, sizeof(atari_discinfo_t)); discinfo->first = cur_cd->track[0].id; discinfo->last = cur_cd->track[cur_cd->numtracks-1].id; discinfo->current = cur_cd->track[cur_cd->cur_track].id; discinfo->index = 1; discinfo->disctype = (cur_cd->track[0].type == SDL_AUDIO_TRACK) ? 0 : 1; FRAMES_TO_MSF(cur_cd->cur_frame, &minute, &second, &frame); discinfo->relative.track = 0; discinfo->relative.minute = BinaryToBcd(minute); discinfo->relative.second = BinaryToBcd(second); discinfo->relative.frame = BinaryToBcd(frame); FRAMES_TO_MSF(cur_cd->track[cur_cd->cur_track].offset + cur_cd->cur_frame, &minute, &second, &frame); discinfo->absolute.track = 0; discinfo->absolute.minute = BinaryToBcd(minute); discinfo->absolute.second = BinaryToBcd(second); discinfo->absolute.frame = BinaryToBcd(frame); FRAMES_TO_MSF(cur_cd->track[cur_cd->numtracks].offset, &minute, &second, &frame); discinfo->end.track = 0; discinfo->end.minute = BinaryToBcd(minute); discinfo->end.second = BinaryToBcd(second); discinfo->end.frame = BinaryToBcd(frame); D(bug(NFCD_NAME "DiscInfo(): first=%d, last=%d, current=%d, ind=%d, rel=%02x:%02x:%02x, abs=%02x:%02x:%02x, end=%02x:%02x:%02x", discinfo->first, discinfo->last, discinfo->current, discinfo->index, discinfo->relative.minute, discinfo->relative.second, discinfo->relative.frame, discinfo->absolute.minute, discinfo->absolute.second, discinfo->absolute.frame, discinfo->end.minute, discinfo->end.second, discinfo->end.frame)); CloseDrive(drive); return TOS_E_OK; } #endif aranym-1.1.0/src/natfeat/nfcdrom_linux.h0000664000175000017500000000417013454637621016434 0ustar joyjoy/* * NatFeat host CD-ROM access, Linux CD-ROM driver * * ARAnyM (C) 2003 Patrice Mandin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFCDROM_LINUX_H #define NFCDROM_LINUX_H #include "nfcdrom.h" class CdromDriverLinux : public CdromDriver { private: /* for each possible opened drive */ struct { char *device; int handle; dev_t cdmode; } cddrives[CD_MAX_DRIVES]; bool drives_scanned; int numcds; uint16 AtariToLinuxIoctl(uint16 opcode); /* Translate ioctl numbers */ int CheckDrive(const char *drive, const char *mnttype, struct stat *stbuf); void AddDrive(const char *drive, struct stat *stbuf); void CheckMounts(const char *mtab); protected: int OpenDrive(memptr device); void CloseDrive(int drive); int32 cd_read(memptr device, memptr buffer, uint32 first, uint32 length); int32 cd_status(memptr device, memptr ext_status); int32 cd_ioctl(memptr device, uint16 opcode, memptr buffer); int32 cd_startaudio(memptr device, uint32 dummy, memptr buffer); int32 cd_stopaudio(memptr device); int32 cd_setsongtime(memptr device, uint32 dummy, uint32 start_msf, uint32 end_msf); int32 cd_gettoc(memptr device, uint32 dummy, memptr buffer); int32 cd_discinfo(memptr device, memptr buffer); int cd_unixioctl(int drive, int request, void *buffer); public: CdromDriverLinux(); virtual ~CdromDriverLinux(); virtual int Count(); virtual const char *DeviceName(int drive); }; #endif /* NFCDROM_LINUX_H */ aranym-1.1.0/src/natfeat/nfcdrom_linux.cpp0000664000175000017500000006470313454637621016777 0ustar joyjoy/* NatFeat host CD-ROM access, Linux CD-ROM driver ARAnyM (C) 2003-2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "parameters.h" #ifdef NFCDROM_LINUX_SUPPORT #include "nfcdrom.h" #include "nfcdrom_atari.h" #include "nfcdrom_linux.h" #include #include #include "toserror.h" #define DEBUG 0 #include "debug.h" /*--- Defines ---*/ #define NFCD_NAME "nf:cdrom:linux: " #ifndef MSF_TO_FRAMES #define CD_FPS 75 #define MSF_TO_FRAMES(M, S, F) ((M)*60*CD_FPS+(S)*CD_FPS+(F)) #endif /* Define this to use the alternative getmntent() code */ #ifndef __SVR4 #define USE_MNTENT #endif #ifdef USE_MNTENT #if defined(__USLC__) #include #else #include #endif #ifndef _PATH_MNTTAB #ifdef MNTTAB #define _PATH_MNTTAB MNTTAB #else #define _PATH_MNTTAB "/etc/fstab" #endif #endif /* !_PATH_MNTTAB */ #ifndef _PATH_MOUNTED #define _PATH_MOUNTED "/etc/mtab" #endif /* !_PATH_MOUNTED */ #ifndef MNTTYPE_CDROM #define MNTTYPE_CDROM "iso9660" #endif #ifndef MNTTYPE_SUPER #define MNTTYPE_SUPER "supermount" #endif #endif /* USE_MNTENT */ #ifndef ENOMEDIUM #define ENOMEDIUM ENOENT #endif #define ERRNO_TRAYEMPTY(errno) \ ((errno == EIO) || (errno == ENOENT) || \ (errno == EINVAL) || (errno == ENOMEDIUM)) /*--- Private functions ---*/ /* Check a drive to see if it is a CD-ROM */ int CdromDriverLinux::CheckDrive(const char *drive, const char *mnttype, struct stat *stbuf) { int is_cd, cdfd; struct cdrom_subchnl info; /* If it doesn't exist, return -1 */ if ( stat(drive, stbuf) < 0 ) { return(-1); } /* If it does exist, verify that it's an available CD-ROM */ is_cd = 0; if ( S_ISCHR(stbuf->st_mode) || S_ISBLK(stbuf->st_mode) ) { cdfd = open(drive, (O_RDONLY|O_NONBLOCK), 0); if ( cdfd >= 0 ) { info.cdsc_format = CDROM_MSF; /* Under Linux, EIO occurs when a disk is not present. */ if ( (ioctl(cdfd, CDROMSUBCHNL, &info) == 0) || ERRNO_TRAYEMPTY(errno) ) { is_cd = 1; } close(cdfd); } #ifdef USE_MNTENT /* Even if we can't read it, it might be mounted */ else if ( mnttype && (strcmp(mnttype, MNTTYPE_CDROM) == 0) ) { is_cd = 1; } #endif } return(is_cd); } /* Add a CD-ROM drive to our list of valid drives */ void CdromDriverLinux::AddDrive(const char *drive, struct stat *stbuf) { int i; if ( numcds < CD_MAX_DRIVES ) { /* Check to make sure it's not already in our list. This can happen when we see a drive via symbolic link. */ for ( i=0; ist_rdev == cddrives[i].cdmode ) { D(bug("Duplicate drive detected: %s == %s", drive, cddrives[i].device)); return; } } /* Add this drive to our list */ i = numcds; cddrives[i].device = strdup(drive); if ( cddrives[i].device == NULL ) { return; } cddrives[i].cdmode = stbuf->st_rdev; ++numcds; D(bug("Added CD-ROM drive: %s", drive)); } } #ifdef USE_MNTENT void CdromDriverLinux::CheckMounts(const char *mtab) { FILE *mntfp; struct mntent *mntent; struct stat stbuf; mntfp = setmntent(mtab, "r"); if ( mntfp != NULL ) { char *tmp; char *mnt_type; size_t mnt_type_len; char *mnt_dev; size_t mnt_dev_len; while ( (mntent=getmntent(mntfp)) != NULL ) { mnt_type_len = strlen(mntent->mnt_type) + 1; mnt_type = (char *)malloc(mnt_type_len); if (mnt_type == NULL) continue; /* maybe you'll get lucky next time. */ mnt_dev_len = strlen(mntent->mnt_fsname) + 1; mnt_dev = (char *)malloc(mnt_dev_len); if (mnt_dev == NULL) { free(mnt_type); continue; } strcpy(mnt_type, mntent->mnt_type); strcpy(mnt_dev, mntent->mnt_fsname); /* Handle "supermount" filesystem mounts */ if ( strcmp(mnt_type, MNTTYPE_SUPER) == 0 ) { tmp = strstr(mntent->mnt_opts, "fs="); if ( tmp ) { free(mnt_type); mnt_type = strdup(tmp + strlen("fs=")); if ( mnt_type ) { tmp = strchr(mnt_type, ','); if ( tmp ) { *tmp = '\0'; } } } tmp = strstr(mntent->mnt_opts, "dev="); if ( tmp ) { free(mnt_dev); mnt_dev = strdup(tmp + strlen("dev=")); if ( mnt_dev ) { tmp = strchr(mnt_dev, ','); if ( tmp ) { *tmp = '\0'; } } } } if ( strcmp(mnt_type, MNTTYPE_CDROM) == 0 ) { if (CheckDrive(mnt_dev, mnt_type, &stbuf) > 0) { AddDrive(mnt_dev, &stbuf); } } free(mnt_dev); free(mnt_type); } endmntent(mntfp); } } #endif /* USE_MNTENT */ /*--- Public functions ---*/ CdromDriverLinux::CdromDriverLinux() { int i; D(bug(NFCD_NAME "CdromDriverLinux()")); for (i=0; i 0) { AddDrive("/dev/cdrom", &stbuf); } /* Now check the currently mounted CD drives */ CheckMounts(_PATH_MOUNTED); /* Finally check possible mountable drives in /etc/fstab */ CheckMounts(_PATH_MNTTAB); /* If we found our drives, there's nothing left to do */ #endif /* USE_MNTENT */ if ( numcds == 0 ) { char drive[32]; int i, j, exists; /* Scan the system for CD-ROM drives. Not always 100% reliable, so use the USE_MNTENT code above first. */ for ( i=0; checklist[i]; ++i ) { if ( checklist[i][0] == '?' ) { char *insert; exists = 1; for ( j=checklist[i][1]; exists; ++j ) { sprintf(drive, "/dev/%s", &checklist[i][3]); insert = strchr(drive, '?'); if ( insert != NULL ) { *insert = j; } switch (CheckDrive(drive, NULL, &stbuf)) { /* Drive exists and is a CD-ROM */ case 1: AddDrive(drive, &stbuf); break; /* Drive exists, but isn't a CD-ROM */ case 0: break; /* Drive doesn't exist */ case -1: exists = 0; break; } } } else { sprintf(drive, "/dev/%s", checklist[i]); if ( CheckDrive(drive, NULL, &stbuf) > 0 ) { AddDrive(drive, &stbuf); } } } } drives_scanned = true; } return cddrives[drive].device; } /*--- Private functions ---*/ int CdromDriverLinux::OpenDrive(memptr device) { int drive; drive = GetDrive(device); drive = DriveFromLetter(drive); /* Drive exist ? */ if (drive < 0 || drive >= CD_MAX_DRIVES || (drives_mask & (1<=0) { return drive; } /* Open drive */ cddrives[drive].handle=open(DeviceName(drive), O_RDONLY|O_EXCL|O_NONBLOCK, 0); if (cddrives[drive].handle<0) { cddrives[drive].handle=-1; int errorcode = errnoHost2Mint(errno, TOS_EFILNF); D(bug(NFCD_NAME " error opening drive %s: %s", DeviceName(drive), strerror(errno))); return errorcode; } return drive; } void CdromDriverLinux::CloseDrive(int drive) { /* Drive already closed ? */ if (cddrives[drive].handle<0) { return; } close(cddrives[drive].handle); cddrives[drive].handle=-1; } int CdromDriverLinux::cd_unixioctl(int drive, int request, void *buffer) { int errorcode = ioctl(cddrives[drive].handle, request, buffer); if (errorcode >= 0) return errorcode; return errnoHost2Mint(errno, TOS_EDRVNR); } int32 CdromDriverLinux::cd_read(memptr device, memptr buffer, uint32 first, uint32 length) { int drive; drive = OpenDrive(device); if (drive<0) { return drive; } D(bug(NFCD_NAME "Read(%d,%d)", first, length)); if (lseek(cddrives[drive].handle, (off_t)first * CD_FRAMESIZE, SEEK_SET)<0) { D(bug(NFCD_NAME "Read(): can not seek to block %d", first)); int errorcode = errnoHost2Mint(errno, TOS_ENOSYS); CloseDrive(drive); return errorcode; } if (read(cddrives[drive].handle, Atari2HostAddr(buffer), length * CD_FRAMESIZE)<0) { int errorcode = errnoHost2Mint(errno, TOS_ENOSYS); D(bug(NFCD_NAME "Read(): can not read %d blocks", length)); CloseDrive(drive); return errorcode; } CloseDrive(drive); return TOS_E_OK; } int32 CdromDriverLinux::cd_status(memptr device, memptr ext_status) { UNUSED(ext_status); int drive, errorcode, mediachanged; unsigned long status; drive = OpenDrive(device); if (drive<0) { return drive; } status = 0; errorcode=cd_unixioctl(drive, CDROM_MEDIA_CHANGED, &status); D(bug(NFCD_NAME "Status(CDROM_MEDIA_CHANGED): errorcode=0x%08x", errorcode)); if (errorcode<0) { CloseDrive(drive); return errorcode; } mediachanged = (errorcode==1); status = 0; errorcode=cd_unixioctl(drive, CDROM_DRIVE_STATUS, &status); D(bug(NFCD_NAME "Status(CDROM_DRIVE_STATUS): errorcode=0x%08x", errorcode)); if (errorcode<0) { CloseDrive(drive); return errorcode; } if (errorcode == CDS_DRIVE_NOT_READY) { CloseDrive(drive); return TOS_EDRVNR; } CloseDrive(drive); return (mediachanged<<3); } int32 CdromDriverLinux::cd_ioctl(memptr device, uint16 opcode, memptr buffer) { int drive, errorcode = TOS_ENOSYS; drive = OpenDrive(device); if (drive<0) { return drive; } switch(opcode) { case ATARI_CDROMREADOFFSET: { struct cdrom_multisession cd_ms; Uint32 *lba = (Uint32 *)Atari2HostAddr(buffer); D(bug(NFCD_NAME " Ioctl(CDROMREADOFFSET)")); cd_ms.xa_flag = 1; cd_ms.addr_format = CDROM_LBA; errorcode = cd_unixioctl(drive, CDROMMULTISESSION, &cd_ms); if (errorcode >= 0) { if (cd_ms.addr_format == CDROM_LBA) *lba = SDL_SwapBE32(cd_ms.addr.lba); else *lba = SDL_SwapBE32(MSF_TO_FRAMES(cd_ms.addr.msf.minute, cd_ms.addr.msf.second, cd_ms.addr.msf.frame)); } } break; case ATARI_CDROMPAUSE: D(bug(NFCD_NAME " Ioctl(CDROMPAUSE)")); errorcode = cd_unixioctl(drive, CDROMPAUSE, 0l); break; case ATARI_CDROMRESUME: D(bug(NFCD_NAME " Ioctl(CDROMRESUME)")); errorcode = cd_unixioctl(drive, CDROMRESUME, 0l); break; case ATARI_CDROMPLAYMSF: { struct cdrom_msf cd_msf; atari_cdrom_msf_t *atari_msf; atari_msf = (atari_cdrom_msf_t *) Atari2HostAddr(buffer); cd_msf.cdmsf_min0 = atari_msf->cdmsf_min0; cd_msf.cdmsf_sec0 = atari_msf->cdmsf_sec0; cd_msf.cdmsf_frame0 = atari_msf->cdmsf_frame0; cd_msf.cdmsf_min1 = atari_msf->cdmsf_min1; cd_msf.cdmsf_sec1 = atari_msf->cdmsf_sec1; cd_msf.cdmsf_frame1 = atari_msf->cdmsf_frame1; D(bug(NFCD_NAME " Ioctl(CDROMPLAYMSF,%02d:%02d:%02d,%02d:%02d:%02d)", cd_msf.cdmsf_min0, cd_msf.cdmsf_sec0, cd_msf.cdmsf_frame0, cd_msf.cdmsf_min1, cd_msf.cdmsf_sec1, cd_msf.cdmsf_frame1 )); errorcode=cd_unixioctl(drive, CDROMPLAYMSF, &cd_msf); } break; case ATARI_CDROMPLAYTRKIND: { struct cdrom_ti cd_ti; atari_cdrom_ti *atari_ti; atari_ti = (atari_cdrom_ti *) Atari2HostAddr(buffer); cd_ti.cdti_trk0 = atari_ti->cdti_trk0; cd_ti.cdti_ind0 = atari_ti->cdti_ind0; cd_ti.cdti_trk1 = atari_ti->cdti_trk1; cd_ti.cdti_ind1 = atari_ti->cdti_ind1; D(bug(NFCD_NAME " Ioctl(CDROMPLAYTRKIND,%d.%d,%d.%d)", cd_ti.cdti_trk0, cd_ti.cdti_ind0, cd_ti.cdti_trk1, cd_ti.cdti_trk1 )); errorcode=cd_unixioctl(drive, CDROMPLAYTRKIND, &cd_ti); } break; case ATARI_CDROMREADTOCHDR: { struct cdrom_tochdr tochdr; atari_cdromtochdr_t *atari_tochdr; atari_tochdr = (atari_cdromtochdr_t *) Atari2HostAddr(buffer); D(bug(NFCD_NAME " Ioctl(CDROMREADTOCHDR)")); errorcode = cd_unixioctl(drive, CDROMREADTOCHDR, &tochdr); if (errorcode >= 0) { atari_tochdr->cdth_trk0 = tochdr.cdth_trk0; atari_tochdr->cdth_trk1 = tochdr.cdth_trk1; } } break; case ATARI_CDROMREADTOCENTRY: { struct cdrom_tocentry tocentry; atari_cdromtocentry_t *atari_tocentry; atari_tocentry = (atari_cdromtocentry_t *) Atari2HostAddr(buffer); tocentry.cdte_track = atari_tocentry->cdte_track; tocentry.cdte_format = atari_tocentry->cdte_format; D(bug(NFCD_NAME " Ioctl(CDROMREADTOCENTRY,0x%02x,0x%02x)", tocentry.cdte_track, tocentry.cdte_format)); errorcode=cd_unixioctl(drive, CDROMREADTOCENTRY, &tocentry); if (errorcode>=0) { atari_tocentry->cdte_track = tocentry.cdte_track; atari_tocentry->cdte_format = tocentry.cdte_format; atari_tocentry->cdte_info = (tocentry.cdte_adr & 0x0f)<<4; atari_tocentry->cdte_info |= tocentry.cdte_ctrl & 0x0f; atari_tocentry->cdte_datamode = tocentry.cdte_datamode; atari_tocentry->dummy = 0; if (tocentry.cdte_format == CDROM_LBA) { atari_tocentry->cdte_addr = SDL_SwapBE32(tocentry.cdte_addr.lba); } else { atari_tocentry->cdte_addr = SDL_SwapBE32(((Uint32)tocentry.cdte_addr.msf.minute<<16) | ((Uint32)tocentry.cdte_addr.msf.second<<8) | (Uint32)tocentry.cdte_addr.msf.frame); } } } break; case ATARI_CDROMSTOP: D(bug(NFCD_NAME " Ioctl(CDROMSTOP)")); errorcode = cd_unixioctl(drive, CDROMSTOP, 0l); break; case ATARI_CDROMSTART: D(bug(NFCD_NAME " Ioctl(CDROMSTART)")); errorcode = cd_unixioctl(drive, CDROMSTART, 0l); break; case ATARI_CDROMEJECT: D(bug(NFCD_NAME " Ioctl(CDROMEJECT)")); errorcode=cd_unixioctl(drive, buffer != 0 ? CDROMCLOSETRAY : CDROMEJECT, (void *)0); break; case ATARI_CDROMVOLCTRL: { struct cdrom_volctrl volctrl; struct atari_cdrom_volctrl *v = (struct atari_cdrom_volctrl *) Atari2HostAddr(buffer); D(bug(NFCD_NAME " Ioctl(CDROMVOLCTRL)")); /* Write volume settings */ volctrl.channel0 = v->channel0; volctrl.channel1 = v->channel1; volctrl.channel2 = v->channel2; volctrl.channel3 = v->channel3; errorcode=cd_unixioctl(drive, CDROMVOLCTRL, &volctrl); } break; case ATARI_CDROMAUDIOCTRL: { struct cdrom_volctrl volctrl; atari_cdrom_audioctrl_t *atari_audioctrl; atari_audioctrl = (atari_cdrom_audioctrl_t *) Atari2HostAddr(buffer); D(bug(NFCD_NAME " Ioctl(CDROMAUDIOCTRL,0x%04x)", atari_audioctrl->set)); if (atari_audioctrl->set == 0) { /* Read volume settings */ errorcode=cd_unixioctl(drive, CDROMVOLREAD, &volctrl); if (errorcode>=0) { atari_audioctrl->channel[0].selection = atari_audioctrl->channel[1].selection = atari_audioctrl->channel[2].selection = atari_audioctrl->channel[3].selection = 0; atari_audioctrl->channel[0].volume = volctrl.channel0; atari_audioctrl->channel[1].volume = volctrl.channel1; atari_audioctrl->channel[2].volume = volctrl.channel2; atari_audioctrl->channel[3].volume = volctrl.channel3; } } else { /* Write volume settings */ volctrl.channel0 = atari_audioctrl->channel[0].volume; volctrl.channel1 = atari_audioctrl->channel[1].volume; volctrl.channel2 = atari_audioctrl->channel[2].volume; volctrl.channel3 = atari_audioctrl->channel[3].volume; errorcode=cd_unixioctl(drive, CDROMVOLCTRL, &volctrl); } } break; case ATARI_CDROMSUBCHNL: { /* Structure is different between Atari and Linux */ struct cdrom_subchnl subchnl; atari_cdromsubchnl_t *atari_subchnl; atari_subchnl = (atari_cdromsubchnl_t *) Atari2HostAddr(buffer); subchnl.cdsc_format = atari_subchnl->cdsc_format; D(bug(NFCD_NAME " Ioctl(READSUBCHNL,0x%02x)", atari_subchnl->cdsc_format)); errorcode=cd_unixioctl(drive, CDROMSUBCHNL, &subchnl); if (errorcode>=0) { atari_subchnl->cdsc_format = subchnl.cdsc_format; atari_subchnl->cdsc_audiostatus = subchnl.cdsc_audiostatus; atari_subchnl->cdsc_resvd = 0; atari_subchnl->cdsc_info = (subchnl.cdsc_adr & 0x0f)<<4; atari_subchnl->cdsc_info |= subchnl.cdsc_ctrl & 0x0f; atari_subchnl->cdsc_trk = subchnl.cdsc_trk; atari_subchnl->cdsc_ind = subchnl.cdsc_ind; if (subchnl.cdsc_format == CDROM_LBA) { atari_subchnl->cdsc_absaddr = SDL_SwapBE32(subchnl.cdsc_absaddr.lba); atari_subchnl->cdsc_reladdr = SDL_SwapBE32(subchnl.cdsc_reladdr.lba); } else { atari_subchnl->cdsc_absaddr = SDL_SwapBE32(subchnl.cdsc_absaddr.msf.minute<<16); atari_subchnl->cdsc_absaddr |= SDL_SwapBE32(subchnl.cdsc_absaddr.msf.second<<8); atari_subchnl->cdsc_absaddr |= SDL_SwapBE32(subchnl.cdsc_absaddr.msf.frame); atari_subchnl->cdsc_reladdr = SDL_SwapBE32(subchnl.cdsc_reladdr.msf.minute<<16); atari_subchnl->cdsc_reladdr |= SDL_SwapBE32(subchnl.cdsc_reladdr.msf.second<<8); atari_subchnl->cdsc_reladdr |= SDL_SwapBE32(subchnl.cdsc_reladdr.msf.frame); } } } break; case ATARI_CDROMREADMODE2: case ATARI_CDROMREADMODE1: { struct cdrom_read cd_read; atari_cdrom_read_t *atari_cdread; atari_cdread = (atari_cdrom_read_t *) Atari2HostAddr(buffer); cd_read.cdread_lba = SDL_SwapBE32(atari_cdread->cdread_lba); cd_read.cdread_bufaddr = (char *)Atari2HostAddr(SDL_SwapBE32(atari_cdread->cdread_bufaddr)); cd_read.cdread_buflen = SDL_SwapBE32(atari_cdread->cdread_buflen); D(bug(NFCD_NAME " Ioctl(%s)", opcode == ATARI_CDROMREADMODE1 ? "CDROMREADMODE1" : "CDROMREADMODE2")); errorcode=cd_unixioctl(drive, opcode == ATARI_CDROMREADMODE1 ? CDROMREADMODE1 : CDROMREADMODE2, &cd_read); } break; case ATARI_CDROMPREVENTREMOVAL: D(bug(NFCD_NAME " Ioctl(CDROMPREVENTREMOVAL)")); errorcode=cd_unixioctl(drive, CDROM_LOCKDOOR, (void *)1); break; case ATARI_CDROMALLOWREMOVAL: D(bug(NFCD_NAME " Ioctl(CDROMALLOWREMOVAL)")); errorcode=cd_unixioctl(drive, CDROM_LOCKDOOR, (void *)0); break; case ATARI_CDROMREADDA: { struct cdrom_msf cd_msf; atari_cdrom_msf_t *atari_msf; atari_msf = (atari_cdrom_msf_t *) Atari2HostAddr(buffer); cd_msf.cdmsf_min0 = atari_msf->cdmsf_min0; cd_msf.cdmsf_sec0 = atari_msf->cdmsf_sec0; cd_msf.cdmsf_frame0 = atari_msf->cdmsf_frame0; cd_msf.cdmsf_min1 = atari_msf->cdmsf_min1; cd_msf.cdmsf_sec1 = atari_msf->cdmsf_sec1; cd_msf.cdmsf_frame1 = atari_msf->cdmsf_frame1; D(bug(NFCD_NAME " Ioctl(CDROMREADDA)")); errorcode=cd_unixioctl(drive, CDROMREADRAW, &cd_msf); } break; case ATARI_CDROMRESET: D(bug(NFCD_NAME " Ioctl(CDROMRESET)")); break; case ATARI_CDROMGETMCN: { atari_mcn_t *atari_mcn; cdrom_mcn mcn; atari_mcn = (atari_mcn_t *) Atari2HostAddr(buffer); memset(atari_mcn, 0, sizeof(atari_mcn_t)); D(bug(NFCD_NAME " Ioctl(CDROMGETMCN)")); errorcode=cd_unixioctl(drive, CDROM_GET_MCN, &mcn); if (errorcode >= 0) Host2AtariSafeStrncpy(buffer + offsetof(atari_mcn_t, mcn), (const char *)mcn.medium_catalog_number, MIN(sizeof(atari_mcn->mcn), sizeof(mcn.medium_catalog_number))); } break; case ATARI_CDROMGETTISRC: D(bug(NFCD_NAME " Ioctl(CDROMGETTISRC) (NI)")); break; default: D(bug(NFCD_NAME " Ioctl(0x%04x) (NI)", opcode)); break; } CloseDrive(drive); return errorcode; } int32 CdromDriverLinux::cd_startaudio(memptr device, uint32 dummy, memptr buffer) { UNUSED(dummy); int drive, errorcode; struct cdrom_ti track_index; metados_bos_tracks_t *atari_track_index; drive = OpenDrive(device); if (drive<0) { return drive; } atari_track_index = (metados_bos_tracks_t *) Atari2HostAddr(buffer); track_index.cdti_trk0 = atari_track_index->first; track_index.cdti_ind0 = 1; track_index.cdti_trk1 = atari_track_index->first + atari_track_index->count -1; track_index.cdti_ind0 = 99; errorcode=cd_unixioctl(drive, CDROMPLAYTRKIND, &track_index); CloseDrive(drive); return errorcode; } int32 CdromDriverLinux::cd_stopaudio(memptr device) { int drive, errorcode; drive = OpenDrive(device); if (drive<0) { return drive; } errorcode=cd_unixioctl(drive, CDROMSTOP, NULL); CloseDrive(drive); return errorcode; } int32 CdromDriverLinux::cd_setsongtime(memptr device, uint32 dummy, uint32 start_msf, uint32 end_msf) { UNUSED(dummy); int drive, errorcode; struct cdrom_msf audio_bloc; drive = OpenDrive(device); if (drive<0) { return drive; } audio_bloc.cdmsf_min0 = (start_msf>>16) & 0xff; audio_bloc.cdmsf_sec0 = (start_msf>>8) & 0xff; audio_bloc.cdmsf_frame0 = (start_msf>>0) & 0xff; D(bug(NFCD_NAME " start: %02d:%02d:%02d", (start_msf>>16) & 0xff, (start_msf>>8) & 0xff, start_msf & 0xff)); audio_bloc.cdmsf_min1 = (end_msf>>16) & 0xff; audio_bloc.cdmsf_sec1 = (end_msf>>8) & 0xff; audio_bloc.cdmsf_frame1 = (end_msf>>0) & 0xff; D(bug(NFCD_NAME " end: %02d:%02d:%02d", (end_msf>>16) & 0xff, (end_msf>>8) & 0xff, end_msf & 0xff)); errorcode=cd_unixioctl(drive, CDROMPLAYMSF, &audio_bloc); CloseDrive(drive); return errorcode; } int32 CdromDriverLinux::cd_gettoc(memptr device, uint32 dummy, memptr buffer) { UNUSED(dummy); int drive, i, numtracks, errorcode; struct cdrom_tochdr tochdr; struct cdrom_tocentry tocentry; atari_tocentry_t *atari_tocentry; drive = OpenDrive(device); if (drive<0) { return drive; } /* Read TOC header */ errorcode=cd_unixioctl(drive, CDROMREADTOCHDR, &tochdr); if (errorcode<0) { CloseDrive(drive); return errorcode; } D(bug(NFCD_NAME "GetToc(): TOC header read")); numtracks = tochdr.cdth_trk1-tochdr.cdth_trk0+1; /* Read TOC entries */ atari_tocentry = (atari_tocentry_t *) Atari2HostAddr(buffer); for (i=0; i<=numtracks; i++) { D(bug(NFCD_NAME "GetToc(): reading TOC entry for track %d", i)); tocentry.cdte_track = tochdr.cdth_trk0+i; if (i == numtracks) { tocentry.cdte_track = CDROM_LEADOUT; } tocentry.cdte_format = CDROM_MSF; errorcode = cd_unixioctl(drive, CDROMREADTOCENTRY, &tocentry); if (errorcode<0) { CloseDrive(drive); return errorcode; } atari_tocentry[i].track = tocentry.cdte_track; atari_tocentry[i].minute = BinaryToBcd(tocentry.cdte_addr.msf.minute); atari_tocentry[i].second = BinaryToBcd(tocentry.cdte_addr.msf.second); atari_tocentry[i].frame = BinaryToBcd(tocentry.cdte_addr.msf.frame); if (tocentry.cdte_track == CDROM_LEADOUT) { atari_tocentry[i].track = CDROM_LEADOUT_CDAR; } D(bug(NFCD_NAME "GetToc(): track %d, id 0x%02x, %s", i, tocentry.cdte_track, tocentry.cdte_ctrl & CDROM_DATA_TRACK ? "data" : "audio" )); if (tocentry.cdte_format == CDROM_MSF) { D(bug(NFCD_NAME "GetToc(): msf %02d:%02d:%02d, bcd: %02x:%02x:%02x", tocentry.cdte_addr.msf.minute, tocentry.cdte_addr.msf.second, tocentry.cdte_addr.msf.frame, atari_tocentry[i].minute, atari_tocentry[i].second, atari_tocentry[i].frame )); } else { D(bug(NFCD_NAME "GetToc(): lba 0x%08x", tocentry.cdte_addr.lba)); } } atari_tocentry[numtracks+1].track = atari_tocentry[numtracks+1].minute = atari_tocentry[numtracks+1].second = atari_tocentry[numtracks+1].frame = 0; CloseDrive(drive); return TOS_E_OK; } int32 CdromDriverLinux::cd_discinfo(memptr device, memptr buffer) { int drive, errorcode; struct cdrom_tochdr tochdr; struct cdrom_subchnl subchnl; struct cdrom_tocentry tocentry; atari_discinfo_t *discinfo; drive = OpenDrive(device); if (drive<0) { return drive; } /* Read TOC header */ errorcode=cd_unixioctl(drive, CDROMREADTOCHDR, &tochdr); if (errorcode<0) { CloseDrive(drive); return errorcode; } D(bug(NFCD_NAME "DiscInfo(): TOC header read")); discinfo = (atari_discinfo_t *) Atari2HostAddr(buffer); memset(discinfo, 0, sizeof(atari_discinfo_t)); discinfo->first = discinfo->current = tochdr.cdth_trk0; discinfo->last = tochdr.cdth_trk1; discinfo->index = 1; /* Read subchannel */ subchnl.cdsc_format = CDROM_MSF; errorcode=cd_unixioctl(drive, CDROMSUBCHNL, &subchnl); if (errorcode<0) { CloseDrive(drive); return errorcode; } D(bug(NFCD_NAME "DiscInfo(): Subchannel read")); discinfo->current = subchnl.cdsc_trk; /* current track */ discinfo->index = subchnl.cdsc_ind; /* current index */ discinfo->relative.track = 0; discinfo->relative.minute = BinaryToBcd(subchnl.cdsc_reladdr.msf.minute); discinfo->relative.second = BinaryToBcd(subchnl.cdsc_reladdr.msf.second); discinfo->relative.frame = BinaryToBcd(subchnl.cdsc_reladdr.msf.frame); discinfo->absolute.track = 0; discinfo->absolute.minute = BinaryToBcd(subchnl.cdsc_absaddr.msf.minute); discinfo->absolute.second = BinaryToBcd(subchnl.cdsc_absaddr.msf.second); discinfo->absolute.frame = BinaryToBcd(subchnl.cdsc_absaddr.msf.frame); /* Read toc entry for start of disc, to select disc type */ tocentry.cdte_track = tochdr.cdth_trk0; tocentry.cdte_format = CDROM_MSF; errorcode = cd_unixioctl(drive, CDROMREADTOCENTRY, &tocentry); if (errorcode<0) { CloseDrive(drive); return errorcode; } discinfo->disctype = ((tocentry.cdte_ctrl & CDROM_DATA_TRACK) == CDROM_DATA_TRACK); /* Read toc entry for end of disc */ tocentry.cdte_track = CDROM_LEADOUT; tocentry.cdte_format = CDROM_MSF; errorcode = cd_unixioctl(drive, CDROMREADTOCENTRY, &tocentry); if (errorcode<0) { CloseDrive(drive); return errorcode; } D(bug(NFCD_NAME "DiscInfo(): Toc entry read")); discinfo->end.track = 0; discinfo->end.minute = BinaryToBcd(tocentry.cdte_addr.msf.minute); discinfo->end.second = BinaryToBcd(tocentry.cdte_addr.msf.second); discinfo->end.frame = BinaryToBcd(tocentry.cdte_addr.msf.frame); D(bug(NFCD_NAME "DiscInfo(): first=%d, last=%d, current=%d, ind=%d, rel=%02x:%02x:%02x, abs=%02x:%02x:%02x, end=%02x:%02x:%02x", discinfo->first, discinfo->last, discinfo->current, discinfo->index, discinfo->relative.minute, discinfo->relative.second, discinfo->relative.frame, discinfo->absolute.minute, discinfo->absolute.second, discinfo->absolute.frame, discinfo->end.minute, discinfo->end.second, discinfo->end.frame)); CloseDrive(drive); return TOS_E_OK; } /* vim:ts=4:sw=4: */ #endif /* NFCDROM_LINUX_SUPPORT */ aranym-1.1.0/src/natfeat/nfcdrom_atari.h0000664000175000017500000001402413454637621016374 0ustar joyjoy/* NatFeat host CD-ROM access Atari CD-ROM ioctls, structures and defines ARAnyM (C) 2011 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFCDROM_ATARI_H #define NFCDROM_ATARI_H /*--- Defines ---*/ #define ENOTREADY -2 #define EINVFN -32 #define CDROM_LEADOUT_CDAR 0xa2 /* CD-ROM address types (cdrom_tocentry.cdte_format) */ #define CDROM_LBA 0x01 /* "logical block": first frame is #0 */ #define CDROM_MSF 0x02 /* "minute-second-frame": binary, not bcd here! */ /* SUB Q control bits */ #define CDROM_AUDIO_EMPHASIS 0x01 #define CDROM_COPY_PERMITTED 0x02 #define CDROM_DATA_TRACK 0x04 #define CDROM_FOUR_CHANNEL 0x08 /* audio states (from SCSI-2, but seen with other drives, too) */ #define CDROM_AUDIO_INVALID 0x00 /* audio status not supported */ #define CDROM_AUDIO_PLAY 0x11 /* audio play operation in progress */ #define CDROM_AUDIO_PAUSED 0x12 /* audio play operation paused */ #define CDROM_AUDIO_COMPLETED 0x13 /* audio play successfully completed */ #define CDROM_AUDIO_ERROR 0x14 /* audio play stopped due to error */ #define CDROM_AUDIO_NO_STATUS 0x15 /* no current audio status to return */ /*--- Types ---*/ typedef struct { unsigned char count; unsigned char first; } metados_bos_tracks_t; typedef struct { Uint32 next; /* (void *) for Atari */ Uint32 attrib; Uint16 phys_letter; Uint16 dma_channel; Uint16 sub_device; Uint32 functions; /* (void *) for Atari */ Uint16 status; Uint32 reserved[2]; Uint8 name[32]; } metados_bos_header_t; typedef struct { unsigned char cdth_trk0; /* start track */ unsigned char cdth_trk1; /* end track */ } atari_cdromtochdr_t; typedef struct { unsigned char cdmsf_min0; /* start minute */ unsigned char cdmsf_sec0; /* start second */ unsigned char cdmsf_frame0; /* start frame */ unsigned char cdmsf_min1; /* end minute */ unsigned char cdmsf_sec1; /* end second */ unsigned char cdmsf_frame1; /* end frame */ } atari_cdrom_msf_t; typedef struct { unsigned char cdti_trk0; /* start track */ unsigned char cdti_ind0; /* start index */ unsigned char cdti_trk1; /* end track */ unsigned char cdti_ind1; /* end index */ } atari_cdrom_ti; typedef struct { /* input parameters */ unsigned char cdte_track; /* track number or CDROM_LEADOUT */ unsigned char cdte_format; /* CDROM_LBA or CDROM_MSF */ /* output parameters */ unsigned char cdte_info; #if 0 unsigned cdte_adr:4; /* the SUBQ channel encodes 0: nothing, 1: position data, 2: MCN, 3: ISRC, else: reserved */ unsigned cdte_ctrl:4; /* bit 0: audio with pre-emphasis, bit 1: digital copy permitted, bit 2: data track, bit 3: four channel */ #endif unsigned char cdte_datamode; /* currently not set */ Uint16 dummy; /* PM: what is this for ? */ Uint32 cdte_addr; /* track start */ } atari_cdromtocentry_t; typedef struct { /* TOC entry for MetaGetToc() function */ unsigned char track; unsigned char minute; unsigned char second; unsigned char frame; } atari_tocentry_t; typedef struct { /* Discinfo for MetaDiscInfo() function */ unsigned char disctype, first, last, current; atari_tocentry_t relative, absolute, end; unsigned char index, reserved1[3]; Uint32 reserved2[123]; } atari_discinfo_t; typedef struct { /* input parameters */ unsigned char cdsc_format; /* CDROM_MSF or CDROM_LBA */ /* output parameters */ unsigned char cdsc_audiostatus; /* see below */ unsigned char cdsc_resvd; /* reserved */ unsigned char cdsc_info; #if 0 unsigned cdsc_adr: 4; /* in info field */ unsigned cdsc_ctrl: 4; /* in info field */ #endif unsigned char cdsc_trk; /* current track */ unsigned char cdsc_ind; /* current index */ Uint32 cdsc_absaddr; /* absolute address */ Uint32 cdsc_reladdr; /* track relative address */ } atari_cdromsubchnl_t; typedef struct { /* input parameters */ Uint16 set; /* 0 == inquire only */ /* input/output parameters */ struct { unsigned char selection; unsigned char volume; } channel[4]; } atari_cdrom_audioctrl_t; struct atari_cdrom_volctrl { unsigned char channel0; /* volume level 0..255 */ unsigned char channel1; unsigned char channel2; unsigned char channel3; }; typedef struct { unsigned char audiostatus; unsigned char mcn[23]; } atari_mcn_t; typedef struct { Uint32 cdread_lba; /* logical block address */ Uint32 cdread_bufaddr; /* (char *) buffer pointer */ Uint32 cdread_buflen; /* byte count */ } atari_cdrom_read_t; typedef struct { /* input parameters */ Uint8 tisrc_track; /* track number */ /* output parameters */ Uint8 tisrc_audiostatus; /* see above */ Uint8 tisrc_tisrc[23]; /* Track International Standard Recording Code (ASCII) */ } atari_tisrc_t; /*--- Enums ---*/ /* Atari ioctl */ enum { ATARI_CDROMREADOFFSET = (('C'<<8)|0x00), ATARI_CDROMPAUSE, ATARI_CDROMRESUME, ATARI_CDROMPLAYMSF, ATARI_CDROMPLAYTRKIND, ATARI_CDROMREADTOCHDR, ATARI_CDROMREADTOCENTRY, ATARI_CDROMSTOP, ATARI_CDROMSTART, ATARI_CDROMEJECT, ATARI_CDROMVOLCTRL, ATARI_CDROMSUBCHNL, ATARI_CDROMREADMODE2, ATARI_CDROMREADMODE1, ATARI_CDROMPREVENTREMOVAL, ATARI_CDROMALLOWREMOVAL, ATARI_CDROMAUDIOCTRL, ATARI_CDROMREADDA, ATARI_CDROMRESET, ATARI_CDROMGETMCN, ATARI_CDROMGETTISRC }; #endif /* NFCDROM_ATARI_H */ aranym-1.1.0/src/natfeat/nfcdrom.h0000664000175000017500000000546113454637621015221 0ustar joyjoy/* NatFeat host CD-ROM access ARAnyM (C) 2003-2011 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFCDROM_H #define NFCDROM_H /*--- Includes ---*/ #include "nf_base.h" #include "parameters.h" /*--- Class ---*/ #define CD_FRAMESIZE 2048 #ifndef CDROM_LEADOUT #define CDROM_LEADOUT 0xaa #endif class CdromDriver : public NF_Base { protected: uint32 drives_mask; int GetDrive(memptr device); /* Return drive letter of a metados device */ unsigned char BinaryToBcd(unsigned char value); /* Convert a value to BCD */ virtual void ScanDrives(); virtual int OpenDrive(memptr device) = 0; virtual void CloseDrive(int drive); virtual int32 cd_open(memptr /* metados_bos_header_t * */ device, memptr /* meta_drvinfo * */ buffer); virtual int32 cd_close(memptr /* metados_bos_header_t * */ device); virtual int32 cd_read(memptr /* metados_bos_header_t * */ device, memptr buffer, uint32 /* LBA */ first, uint32 length); virtual int32 cd_write(memptr /* metados_bos_header_t * */ device, memptr buffer, uint32 /* LBA */ first, uint32 length); virtual int32 cd_seek(memptr /* metados_bos_header_t * */ device, uint32 /* LBA */ offset); virtual int32 cd_status(memptr /* metados_bos_header_t * */ device, memptr ext_status) = 0; virtual int32 cd_ioctl(memptr /* metados_bos_header_t * */ device, uint16 opcode, memptr buffer) = 0; virtual int32 cd_startaudio(memptr /* metados_bos_header_t * */ device, uint32 dummy, memptr /* metados_bos_tracks_t * */ buffer) = 0; virtual int32 cd_stopaudio(memptr /* metados_bos_header_t * */ device) = 0; virtual int32 cd_setsongtime(memptr /* metados_bos_header_t * */ device, uint32 dummy, uint32 start_msf, uint32 end_msf) = 0; virtual int32 cd_gettoc(memptr /* metados_bos_header_t * */ device, uint32 dummy, memptr /* atari_tocentry_t * */ buffer) = 0; virtual int32 cd_discinfo(memptr /* metados_bos_header_t * */ device, memptr /* atari_discinfo_t * */ buffer) = 0; public: CdromDriver(void); virtual ~CdromDriver(void); virtual int Count() = 0; virtual const char *DeviceName(int drive) = 0; const char *name() { return "CDROM"; } bool isSuperOnly() { return true; } int32 dispatch(uint32 fncode); }; #endif /* NFCDROM_H */ aranym-1.1.0/src/natfeat/nfcdrom.cpp0000664000175000017500000001142213454637621015546 0ustar joyjoy/* NatFeat host CD-ROM access ARAnyM (C) 2003 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "parameters.h" #include "nfcdrom.h" #include "nfcdrom_atari.h" #include "../../atari/nfcdrom/nfcdrom_nfapi.h" #include "toserror.h" #define DEBUG 0 #include "debug.h" #include #include #include "SDL_compat.h" /*--- Defines ---*/ #define NFCD_NAME "nf:cdrom: " /*--- Constructor/desctructor ---*/ CdromDriver::CdromDriver(void) { D(bug(NFCD_NAME "CdromDriver()")); drives_mask = 0xffffffffUL; } CdromDriver::~CdromDriver(void) { D(bug(NFCD_NAME "~CdromDriver()")); for (int i=0; i $%08x, %ld)", bx_options.bootstrap_path, addr, size); long length = 0; FILE *fh = fopen( bx_options.bootstrap_path, "rb" ); if ( fh ) { char buffer[2048]; while ( size ) { long read = fread(buffer, 1, sizeof(buffer), fh); if ( read == 0 ) break; /* the file size is bigger than the space we have? */ if ( read > size ) return 0; Host2Atari_memcpy(addr + length, buffer, read); length += read; size -= read; } fclose(fh); } bug("NF BOOTSTRAP($%08x, %ld) -> %ld", addr, size, length); return length; } case 1: /* get_bootdrive() */ return tolower(bx_options.bootdrive)-'a'; case 2: /* get_bootargs() */ { memptr addr = getParameter(0); long size = getParameter(1); bug("NF BOOTSTRAP_ARGS(%s)", bx_options.bootstrap_args); Host2AtariSafeStrncpy(addr, bx_options.bootstrap_args, size); } return 0; default:; return -1; } } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/natfeat/nfaudio.h0000664000175000017500000000067613454637621015221 0ustar joyjoy#ifndef _AUDIO_H #define _AUDIO_H #include "nf_base.h" typedef struct nf_audio_parameters { memptr buffer; uint32 freq; uint32 len; uint32 volume; } AUDIOPAR; class AUDIODriver : public NF_Base { private: AUDIOPAR AudioParameters; bool locked; public: AUDIODriver(); ~AUDIODriver(); const char *name() { return "AUDIO"; } bool isSuperOnly() { return true; } void reset(); int32 dispatch(uint32 fncode); }; #endif /* _AUDIO_H */ aranym-1.1.0/src/natfeat/nfaudio.cpp0000664000175000017500000001142113454637621015542 0ustar joyjoy/* * nfaudio.cpp - NatFeat Audio driver * * Copyright (c) 2002-2006 ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "nfaudio.h" #include "host.h" #define DEBUG 0 #include "debug.h" #include #include #include "SDL_compat.h" #define ZMAGXSND_BUFSIZE 4096 extern "C" { static SDL_AudioStatus playing; static SDL_AudioCVT cvt; static uint32 cvt_buf_len; static void audio_callback(void *userdata, uint8 * stream, int len) { if ((playing!=SDL_AUDIO_PLAYING) || (!userdata)) return; AUDIOPAR *par = (AUDIOPAR *)userdata; if (!par->buffer) return; uint8 *buffer = Atari2HostAddr(par->buffer); if (cvt.needed) { /* Convert Atari audio to host audio */ par->len = (uint32 ) (len / cvt.len_ratio); if (par->len > ZMAGXSND_BUFSIZE) { par->len = ZMAGXSND_BUFSIZE; } uint32 bufSize = par->len * cvt.len_mult; /* Current buffer too small ? */ if (cvt_buf_lenlen); cvt.len = par->len; SDL_ConvertAudio(&cvt); SDL_MixAudio(stream, cvt.buf, cvt.len_cvt, par->volume); } else { par->len = len; if (par->len > ZMAGXSND_BUFSIZE) { par->len = ZMAGXSND_BUFSIZE; } SDL_MixAudio(stream, buffer, par->len, par->volume); } TriggerInt5(); // Audio is at interrupt level 5 } }; AUDIODriver::AUDIODriver() { cvt.buf = NULL; cvt_buf_len = 0; reset(); host->audio.AddCallback(audio_callback, &AudioParameters); } AUDIODriver::~AUDIODriver() { host->audio.RemoveCallback(audio_callback); reset(); } void AUDIODriver::reset() { playing = SDL_AUDIO_STOPPED; AudioParameters.buffer = 0; AudioParameters.len = 0; AudioParameters.volume = SDL_MIX_MAXVOLUME; if (cvt.buf) { free(cvt.buf); cvt.buf = NULL; } locked = false; } int32 AUDIODriver::dispatch(uint32 fncode) { int32 ret = 1; switch (fncode) { // NEEDED functions case 0: // version D(bug("Audio: Version")); ret = 0x0061; break; case 1: // OpenAudio: D(bug("Audio: OpenAudio: 0x%08x", getParameter(4))); SDL_BuildAudioCVT(&cvt, (uint16)getParameter(1), (uint8)getParameter(2), getParameter(0), host->audio.obtained.format, host->audio.obtained.channels, host->audio.obtained.freq ); AudioParameters.buffer = getParameter(4); AudioParameters.freq = getParameter(0); AudioParameters.len = 0; playing = SDL_AUDIO_PAUSED; ret = (uint16)getParameter(1); break; case 2: // CloseAudio D(bug("Audio: CloseAudio")); playing = SDL_AUDIO_STOPPED; break; case 3: // PauseAudio D(bug("Audio: PauseAudio: %d", getParameter(0))); if (getParameter(0)==0) { playing = SDL_AUDIO_PLAYING; } else { playing = SDL_AUDIO_PAUSED; } break; case 4: // AudioStatus D(bug("Audio: AudioStatus: %d", playing)); ret = playing; break; case 5: // AudioVolume AudioParameters.volume = (uint16)getParameter(0); D(bug("Audio: AudioVolume: %d", AudioParameters.volume)); break; case 6: // LockAudio D(bug("Audio: LockAudio")); if (! locked) { locked = true; ret = 1; // lock acquired OK } else ret = -129; // was already locked break; case 7: // UnlockAudio D(bug("Audio: UnlockAudio")); if (locked) { locked = false; ret = 0; // unlocked OK } else ret = -128; // wasn't locked at all break; case 8: // GetAudioFreq D(bug("Audio: GetAudioFreq: %d", AudioParameters.freq)); ret = AudioParameters.freq; break; case 9: // GetAudioLen D(bug("Audio: GetAudioLen: %d", AudioParameters.len)); ret = AudioParameters.len; break; // not implemented functions default: D(bug("Audio: Unknown %d", fncode)); } return ret; } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/natfeat/nf_scsidrv.h0000664000175000017500000000222713454637621015726 0ustar joyjoy#ifndef _ARANYM_SCSIDRV_H #define _ARANYM_SCSIDRV_H #include "nf_base.h" // The maximum number of SCSI Driver handles, must be the same as in stub #define SCSI_MAX_HANDLES 32 class SCSIDriver : public NF_Base { private: struct { int fd; int id_lo; int error; } handle_meta_data[SCSI_MAX_HANDLES]; #ifdef HAVE_LIBUDEV struct udev *udev; struct udev_monitor *mon; int udev_mon_fd; struct timeval tv; #endif bool check_mchg_udev(void); int32 check_device_file(Uint32 id); void set_error(Uint32 rwflag, Uint32 errbit); int32 interface_features(memptr busName, memptr features, memptr transferLen); int32 inquire_bus(Uint32 id); int32 Open(Uint32 handle, Uint32 id); int32 Close(Uint32 handle); int32 inout(Uint32 handle, Uint32 dir, unsigned char *cmd, Uint32 cmd_len, unsigned char *buffer, Uint32 transfer_len, unsigned char *sense_buffer, Uint32 timeout); int32 Error(Uint32 handle, Uint32 rwflag, Uint32 errnum); int32 check_dev(Uint32 id); public: SCSIDriver(); ~SCSIDriver(); const char *name() { return "NF_SCSIDRV"; } bool isSuperOnly() { return true; } void reset(); int32 dispatch(uint32 fncode); }; #endif /* _ARANYM_SCSIDRV_H */ aranym-1.1.0/src/natfeat/nf_scsidrv.cpp0000664000175000017500000002435313454637621016265 0ustar joyjoy/* * nf_scsidrv.c * * Copyright (C) 2016 by Uwe Seimet * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * nf_scsidrv.c - Implementation of the host system part of a SCSI Driver * (Linux only), based on the Linux SG driver version 3. The corresponding * TOS binary and its source code can be downloaded from * http://hddriver.seimet.de/en/downloads.html, where you can also find * information on the open SCSI Driver standard. */ #include "sysdeps.h" #ifdef NFSCSI_SUPPORT #include "cpu_emulation.h" #include "nf_scsidrv.h" #include "host.h" #define DEBUG 0 #include "debug.h" #include #include #include #ifdef HAVE_LIBUDEV #include #endif #include #include #include "toserror.h" // The driver interface version, 1.02 #define INTERFACE_VERSION 0x0102 // Maximum is 20 characters #define BUS_NAME "Linux Generic SCSI" // The SG driver supports cAllCmds #define BUS_FEATURES 0x02 // The transfer length may depend on the device, 65536 should always be safe #define BUS_TRANSFER_LEN 65536 enum SCSIDRV_OPERATIONS { SCSI_INTERFACE_VERSION = 0, SCSI_INTERFACE_FEATURES, SCSI_INQUIRE_BUS, SCSI_OPEN, SCSI_CLOSE, SCSI_INOUT, SCSI_ERROR, SCSI_CHECK_DEV }; void SCSIDriver::set_error(Uint32 handle, Uint32 errbit) { for(Uint32 i = 0; i < SCSI_MAX_HANDLES; i++) { if(handle != i && handle_meta_data[i].fd != 0 && handle_meta_data[i].id_lo == handle_meta_data[handle].id_lo) { handle_meta_data[i].error |= errbit; } } } // udev-based check for media change bool SCSIDriver::check_mchg_udev() { bool changed = false; #ifdef HAVE_LIBUDEV if (udev_mon_fd <= 0) return false; fd_set udevFds; FD_ZERO(&udevFds); FD_SET(udev_mon_fd, &udevFds); int ret = select(udev_mon_fd + 1, &udevFds, 0, 0, &tv); if (ret > 0 && FD_ISSET(udev_mon_fd, &udevFds)) { struct udev_device *dev = udev_monitor_receive_device(mon); while (dev) { if (!changed) { const char *dev_type = udev_device_get_devtype(dev); const char *action = udev_device_get_action(dev); if (!strcmp("disk", dev_type) && !strcmp("change", action)) { D(bug(": %s has been changed", udev_device_get_devnode(dev))); // TODO Determine sg device name from block device name // and only report media change for the actually affected device changed = true; } } // Process all pending events dev = udev_monitor_receive_device(mon); } } #endif return changed; } int32 SCSIDriver::check_device_file(Uint32 id) { char device_file[16]; sprintf(device_file, "/dev/sg%d", id); if(!access(device_file, R_OK | W_OK)) { D(bug("device file %s is accessible", device_file)); return 0; } else { D(bug("device file %s is inaccessible", device_file)); return -1; } } int32 SCSIDriver::interface_features(memptr busName, memptr features, memptr transferLen) { Host2AtariSafeStrncpy(busName, BUS_NAME, 20); WriteNFInt16(features, BUS_FEATURES); WriteNFInt32(transferLen, BUS_TRANSFER_LEN); return 0; } int32 SCSIDriver::inquire_bus(Uint32 id) { D(bug("scsidrv_inquire_bus: id=%d", id)); char device_file[16]; sprintf(device_file, "/dev/sg%d", id); while(!access(device_file, F_OK)) { if(!check_device_file(id)) { return id; } sprintf(device_file, "/dev/sg%d", ++id); } return -1; } int32 SCSIDriver::Open(Uint32 handle, Uint32 id) { D(bug("scsidrv_open: handle=%d, id=%d", handle, id)); if (handle >= SCSI_MAX_HANDLES || handle_meta_data[handle].fd != 0 || check_device_file(id)) { return -1; } #ifdef HAVE_LIBUDEV if (!udev) { udev = udev_new(); if (!udev) return -1; mon = udev_monitor_new_from_netlink(udev, "udev"); udev_monitor_filter_add_match_subsystem_devtype(mon, "block", NULL); udev_monitor_enable_receiving(mon); udev_mon_fd = udev_monitor_get_fd(mon); tv.tv_sec = 0; tv.tv_usec = 0; } #endif char device_file[16]; sprintf(device_file, "/dev/sg%d", id); int fd = ::open(device_file, O_RDWR | O_NONBLOCK); if (fd < 0) { D(bug(" Cannot open device file %s", device_file)); return fd; } handle_meta_data[handle].fd = fd; handle_meta_data[handle].id_lo = id; handle_meta_data[handle].error = 0; return 0; } int32 SCSIDriver::Close(Uint32 handle) { D(bug("scsidrv_close: handle=%d", handle)); if (handle >= SCSI_MAX_HANDLES || handle_meta_data[handle].fd == 0) { return TOS_EIHNDL; } ::close(handle_meta_data[handle].fd); handle_meta_data[handle].fd = 0; return 0; } int32 SCSIDriver::inout(Uint32 handle, Uint32 dir, unsigned char *cmd, Uint32 cmd_len, unsigned char *buffer, Uint32 transfer_len, unsigned char *sense_buffer, Uint32 timeout) { if (sense_buffer) memset(sense_buffer, 0, 18); if (handle >= SCSI_MAX_HANDLES || handle_meta_data[handle].fd == 0) return TOS_EIHNDL; #if DEBUG { Uint32 i; char str[80]; *str = '\0'; if (cmd) for(i = 0; i < cmd_len && i < 10; i++) { sprintf(str + strlen(str), i ? ":$%02X" : "$%02X", cmd[i]); } D(bug("scsidrv_inout: handle=%d, dir=%d, cmd_len=%d, transfer_len=%d, timeout=%d, cmd=%s", handle, dir, cmd_len, transfer_len, timeout, str)); } #endif // No explicit LUN support, the SG driver maps LUNs to device files if (cmd && (cmd[1] & 0xe0)) { if (sense_buffer) { // Sense Key and ASC sense_buffer[2] = 0x05; sense_buffer[12] = 0x25; D(bug(" Sense Key=$%02X, ASC=$%02X, ASCQ=$00", sense_buffer[2], sense_buffer[12])); } return 2; } int status; if(check_mchg_udev()) { // cErrMediach for all open handles Uint32 i; for(i = 0; i < SCSI_MAX_HANDLES; i++) { if(handle_meta_data[i].fd) { handle_meta_data[i].error |= 1; } } if(sense_buffer) { // Sense Key and ASC sense_buffer[2] = 0x06; sense_buffer[12] = 0x28; } status = 2; } else { struct sg_io_hdr io_hdr; memset(&io_hdr, 0, sizeof(struct sg_io_hdr)); io_hdr.interface_id = 'S'; io_hdr.dxfer_direction = dir ? SG_DXFER_TO_DEV : SG_DXFER_FROM_DEV; if(!transfer_len) { io_hdr.dxfer_direction = SG_DXFER_NONE; } io_hdr.dxferp = buffer; io_hdr.dxfer_len = transfer_len; io_hdr.sbp = sense_buffer; io_hdr.mx_sb_len = sense_buffer ? 18 : 0; io_hdr.cmdp = cmd; io_hdr.cmd_len = cmd_len; io_hdr.timeout = timeout; status = ioctl(handle_meta_data[handle].fd, SG_IO, &io_hdr) < 0 ? -1 : io_hdr.status; } if (status > 0 && sense_buffer) { D(bug(" Sense Key=$%02X, ASC=$%02X, ASCQ=$%02X", sense_buffer[2], sense_buffer[12], sense_buffer[13])); if(status == 2) { // Automatic media change and reset handling for // SCSI Driver version 1.0.2 if((sense_buffer[2] & 0x0f) && !sense_buffer[13]) { if(sense_buffer[12] == 0x28) { // cErrMediach set_error(handle, 1); } else if(sense_buffer[12] == 0x29) { // cErrReset set_error(handle, 2); } } } } return status; } int32 SCSIDriver::Error(Uint32 handle, Uint32 rwflag, Uint32 errnum) { D(bug("scsidrv_error: handle=%d, rwflag=%d, errno=%d", handle, rwflag, errnum)); if (handle >= SCSI_MAX_HANDLES || handle_meta_data[handle].fd == 0) return TOS_EIHNDL; int errbit = 1 << errnum; if (rwflag != 0) { set_error(handle, errbit); return 0; } else { int status = handle_meta_data[handle].error & errbit; handle_meta_data[handle].error &= ~errbit; return status; } } int32 SCSIDriver::check_dev(Uint32 id) { D(bug("scsidrv_check_dev: id=%d", id)); return check_device_file(id); } SCSIDriver::SCSIDriver() { for (Uint32 handle = 0; handle < SCSI_MAX_HANDLES; handle++) { handle_meta_data[handle].fd = 0; handle_meta_data[handle].id_lo = 0; handle_meta_data[handle].error = 0; } #ifdef HAVE_LIBUDEV udev_mon_fd = -1; udev = 0; #endif reset(); } SCSIDriver::~SCSIDriver() { reset(); } void SCSIDriver::reset() { for (Uint32 handle = 0; handle < SCSI_MAX_HANDLES; handle++) Close(handle); } int32 SCSIDriver::dispatch(uint32 fncode) { int32 ret; SAVE_EXCEPTION; { TRY(prb) { switch (fncode) { case SCSI_INTERFACE_VERSION: D(bug("SCSI: Version")); ret = INTERFACE_VERSION; break; case SCSI_INTERFACE_FEATURES: ret = interface_features(getParameter(0), getParameter(1), getParameter(2)); break; case SCSI_INQUIRE_BUS: ret = inquire_bus(getParameter(0)); break; case SCSI_OPEN: ret = Open(getParameter(0), getParameter(1)); break; case SCSI_CLOSE: ret = Close(getParameter(0)); break; case SCSI_INOUT: { Uint32 handle = getParameter(0); Uint32 dir = getParameter(1); memptr cmd = getParameter(2); Uint32 cmd_len = getParameter(3); memptr buffer = getParameter(4); Uint32 transfer_len = getParameter(5); memptr sense_buffer = getParameter(6); Uint32 timeout = getParameter(7); ret = inout( handle, dir, (unsigned char *)(cmd ? Atari2HostAddr(cmd) : 0), cmd_len, (unsigned char *)(buffer ? Atari2HostAddr(buffer) : 0), transfer_len, (unsigned char *)(sense_buffer ? Atari2HostAddr(sense_buffer) : 0), timeout); } break; case SCSI_CHECK_DEV: ret = check_dev(getParameter(0)); break; case SCSI_ERROR: ret = Error(getParameter(0), getParameter(1), getParameter(2)); break; default: D(bug("SCSI: Invalid SCSI Driver operation %d requested", fncode)); ret = -1; break; } } CATCH(prb) { ret = TOS_EIMBA; /* EFAULT */ } } RESTORE_EXCEPTION; D(bug(" -> %d", ret)); return ret; } #endif /* NFSCSI_SUPPORT */ aranym-1.1.0/src/natfeat/nf_objs.h0000664000175000017500000000211613454637621015203 0ustar joyjoy/* Native features ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _NFOBJS_H #define _NFOBJS_H /*--- Includes ---*/ #include "nf_base.h" /*--- Variables ---*/ extern NF_Base *nf_objects[]; extern unsigned int nf_objs_cnt; /*--- Functions prototypes ---*/ extern void NFCreate(void); extern void NFDestroy(void); extern void NFReset(void); extern NF_Base *NFGetDriver(const char *name); #endif /* _NFOBJS_H */ aranym-1.1.0/src/natfeat/nf_objs.cpp0000664000175000017500000001035113454637621015536 0ustar joyjoy/* Native features ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Includes ---*/ #include "nf_objs.h" #include "nf_basicset.h" #include "xhdi.h" #include "nfaudio.h" #include "nfbootstrap.h" #include "hostfs.h" #include "ethernet.h" #include "debugprintf.h" #ifdef NFVDI_SUPPORT # include "nfvdi.h" # include "nfvdi_soft.h" # ifdef ENABLE_OPENGL # include "nfvdi_opengl.h" # endif #endif #ifdef NFCDROM_SUPPORT # if !SDL_VERSION_ATLEAST(2, 0, 0) # include "nfcdrom_sdl.h" # endif # ifdef NFCDROM_LINUX_SUPPORT # include "nfcdrom_linux.h" # endif # ifdef NFCDROM_WIN32_SUPPORT # include "nfcdrom_win32.h" # endif #endif #ifdef NFPCI_SUPPORT # include "nfpci.h" # ifdef NFPCI_LINUX_SUPPORT # include "nfpci_linux.h" # endif #endif #ifdef NFOSMESA_SUPPORT # include "nfosmesa.h" #endif #ifdef NFJPEG_SUPPORT # include "nfjpeg.h" #endif #ifdef NFCLIPBRD_SUPPORT # include "nfclipbrd.h" #endif #ifdef NFSCSI_SUPPORT # include "nf_scsidrv.h" #endif #ifdef USBHOST_SUPPORT # include "usbhost.h" #endif #ifdef NFEXEC_SUPPORT # include "nf_hostexec.h" #endif /* add your NatFeat class definition here */ /*--- Defines ---*/ #define MAX_NATFEATS 32 /*--- Variables ---*/ NF_Base *nf_objects[MAX_NATFEATS]; /* The natfeats we can use */ unsigned int nf_objs_cnt; /* Number of natfeats we can use */ /*--- Functions prototypes ---*/ static void NFAdd(NF_Base *new_nf); /*--- Functions ---*/ void NFCreate(void) { nf_objs_cnt=0; memset(nf_objects, 0, sizeof(nf_objects)); /* NF basic set */ NFAdd(new NF_Name); NFAdd(new NF_Version); NFAdd(new NF_Shutdown); NFAdd(new NF_StdErr); /* additional NF */ NFAdd(new NF_Exit); NFAdd(new BootstrapNatFeat); NFAdd(new DebugPrintf); NFAdd(new XHDIDriver); NFAdd(new AUDIODriver); #ifdef NFVDI_SUPPORT # if 0 /*def ENABLE_OPENGL*/ if ((strcmp("opengl", bx_options.natfeats.vdi_driver)==0) && bx_options.opengl.enabled) NFAdd(new OpenGLVdiDriver); else # endif NFAdd(new SoftVdiDriver); #endif #ifdef HOSTFS_SUPPORT NFAdd(new HostFs); #endif #ifdef ETHERNET_SUPPORT NFAdd(new ETHERNETDriver); #endif #ifdef NFCDROM_SUPPORT # if defined NFCDROM_LINUX_SUPPORT if (strcmp("linux", bx_options.natfeats.cdrom_driver)==0) NFAdd(new CdromDriverLinux); else # elif defined NFCDROM_WIN32_SUPPORT if (strcmp("win32", bx_options.natfeats.cdrom_driver)==0) NFAdd(new CdromDriverWin32); else # endif # if !SDL_VERSION_ATLEAST(2, 0, 0) NFAdd(new CdromDriverSdl); # endif {;} #endif #ifdef NFPCI_SUPPORT # ifdef NFPCI_LINUX_SUPPORT NFAdd(new PciDriverLinux); # else NFAdd(new PciDriver); # endif #endif #ifdef NFOSMESA_SUPPORT NFAdd(new OSMesaDriver); #endif #ifdef NFJPEG_SUPPORT NFAdd(new JpegDriver); #endif #ifdef NFCLIPBRD_SUPPORT NFAdd(new ClipbrdNatFeat); #endif #ifdef USBHOST_SUPPORT NFAdd(new USBHost); #endif #ifdef NFSCSI_SUPPORT NFAdd(new SCSIDriver); #endif #ifdef NFEXEC_SUPPORT NFAdd(new HostExec); #endif /* add your NatFeat object declaration here */ } static void NFAdd(NF_Base *new_nf) { /* Add a natfeat to our array */ if (nf_objs_cnt == MAX_NATFEATS) { fprintf(stderr, "No more available slots to add a Natfeat\n"); return; } nf_objects[nf_objs_cnt++] = new_nf; } void NFDestroy(void) { for(unsigned int i=0; ireset(); } } } NF_Base *NFGetDriver(const char *name) { for (unsigned int i=0; iname())==0) { return nf_objects[i]; } } return NULL; } aranym-1.1.0/src/natfeat/nf_hostexec.h0000664000175000017500000000112513454637621016067 0ustar joyjoy#ifndef _ARANYM_HOSTEXEC_H #define _ARANYM_HOSTEXEC_H #include "nf_base.h" #include class HostExec : public NF_Base { public: const char *name() { return "HOSTEXEC"; } bool isSuperOnly() { return false; } int32 dispatch(uint32 fncode); void reset(); private: std::string str; std::string getc(uint8 c) const; void exec(const std::string& path) const; int execv(int argc, memptr argv) const; int doexecv(char *const argv[]) const; std::string trim(const std::string& str) const; std::string translatePath(const std::string& path) const; }; #endif /* _ARANYM_HOSTEXEC_H */ aranym-1.1.0/src/natfeat/nf_hostexec.cpp0000664000175000017500000002063313454637621016427 0ustar joyjoy#include "sysdeps.h" #ifdef NFEXEC_SUPPORT #include "nf_hostexec.h" #include "toserror.h" #include #include #include #include #include #if !defined(_WIN32) || defined(__CYGWIN___) #include #ifndef WNOHANG #define WNOHANG 0 #endif #endif #include #include "maptab.h" #include "nf_objs.h" #define DEBUG 0 #include "debug.h" // The driver interface version, 1.00 #define INTERFACE_VERSION 0x0100 enum HOSTEXEC_OPERATIONS { HOSTEXEC_INTERFACE_VERSION = 0, HOSTEXEC_EXEC, HOSTEXEC_EXECV, }; int32 HostExec::dispatch(uint32 fncode) { int32 ret = TOS_EINVFN; if (fncode != HOSTEXEC_INTERFACE_VERSION && !bx_options.natfeats.hostexec_enabled) return TOS_EPERM; switch (fncode) { case HOSTEXEC_INTERFACE_VERSION: ret = INTERFACE_VERSION; break; case HOSTEXEC_EXEC: { memptr pPathStr = getParameter(0); uint32 length = getParameter(1); D(bug("HostExec($%08x, %d)", pPathStr, length)); // that function should only be issued by the device driver if (!regs.s) return TOS_EPERM; for (uint32 i = 0; i < length; ++i) { uint8 ch = ReadNFInt8(pPathStr++); if (ch == 0 || ch == 0x0a) { exec(str); str.clear(); } else { str += getc(ch); } } ret = length; } break; case HOSTEXEC_EXECV: ret = execv(getParameter(0), getParameter(1)); break; } return ret; } void HostExec::reset() { str.clear(); } std::string HostExec::getc(uint8 c) const { std::string ret; if (c == 0x0d) { /* ignore CRs */ return ret; } unsigned short ch = atari_to_utf16[c]; if (ch < 0x80) { ret.push_back(c); } else if (ch < 0x800) { ret.push_back(((ch >> 6) & 0x3f) | 0xc0); ret.push_back((ch & 0x3f) | 0x80); } else { ret.push_back(((ch >> 12) & 0x0f) | 0xe0); ret.push_back(((ch >> 6) & 0x3f) | 0x80); ret.push_back((ch & 0x3f) | 0x80); } return ret; } std::string HostExec::translatePath(const std::string& path) const { // loosely inspired by HostFs::xfs_native_init() std::string mountedPath = path; std::replace(mountedPath.begin(), mountedPath.end(), '/', DIRSEPARATOR[0]); std::replace(mountedPath.begin(), mountedPath.end(), '\\', DIRSEPARATOR[0]); char drv = 0; if (mountedPath.length() > 3 && mountedPath[0] == DIRSEPARATOR[0]) { // //path drv = mountedPath[1]; mountedPath = mountedPath.substr(3); } else if (mountedPath.length() > 5 && mountedPath.compare(0, 3, "u:" DIRSEPARATOR) == 0) { // u://path drv = mountedPath[3]; mountedPath = mountedPath.substr(5); } else if (mountedPath.length() > 3 && mountedPath[1] == ':') { // :/path drv = mountedPath[0]; mountedPath = mountedPath.substr(3); } else { mountedPath.clear(); } if (!mountedPath.empty() && drv != 0) { int dnum = DriveFromLetter(drv); if (dnum >= 0 && dnum < HOSTFS_MAX_DRIVES) { std::string mountRoot = bx_options.aranymfs.drive[dnum].rootPath; if (!mountRoot.empty()) { D(bug("HostExec: %s -> %s", mountedPath.c_str(), mountRoot.c_str())); // rootPath is always terminated with '/' mountedPath = mountRoot + mountedPath; // security check char* resolvedPath = my_canonicalize_file_name(mountedPath.c_str(), false); if (resolvedPath != NULL) { mountedPath = resolvedPath; if (mountedPath.compare(0, mountRoot.length(), mountRoot) != 0) { mountedPath.clear(); } free(resolvedPath); } else { mountedPath.clear(); } } else { mountedPath.clear(); } } else { mountedPath.clear(); } if (mountedPath.empty()) { D(bug("HostExec: illegal drive number (%c) or path (%s)", drv, path.c_str())); } } else { D(bug("HostExec: only absolute paths to an executable are supported")); } return mountedPath; } std::string HostExec::trim(const std::string& str) const { std::string ret = str; // trim trailing spaces size_t endpos = ret.find_last_not_of(" \t"); if (std::string::npos != endpos) { ret = ret.substr(0, endpos+1); } // trim leading spaces size_t startpos = ret.find_first_not_of(" \t"); if (std::string::npos != startpos) { ret = ret.substr(startpos); } return ret; } static void child_signal(int sig) { int status; pid_t pid; if (sig == SIGCHLD) { for (;;) { pid = waitpid((pid_t)-1, &status, WNOHANG); if (pid <= 0) return; if (WIFEXITED(status)) { D(bug("child %d exited with status %d", pid, WEXITSTATUS(status))); #ifdef WIFSTOPPED } else if (WIFSTOPPED(status)) { D(bug("child %d was stopped by signal %d", pid, WSTOPSIG(status))); #endif #ifdef WIFCONTINUED } else if (WIFCONTINUED(status)) { D(bug("child %d was continued by signal %d", pid, WSTOPSIG(status))); #endif } else if (WIFSIGNALED(status)) { D(bug("child %d was killed by signal %d", pid, WTERMSIG(status))); } } } } void HostExec::exec(const std::string& path) const { D(bug("HostExec::exec: %s", path.c_str())); // we assume that executable path doesn't contain spaces // (but its arguments are free to use '\ ' if needed) std::string extractedPath = trim(path); std::string extractedArgs; size_t i = path.find_first_of(" \t"); if (i != std::string::npos) { extractedPath = path.substr(0, i); extractedArgs = path.substr(i + 1); } std::string translatedPath = translatePath(extractedPath); if (!translatedPath.empty()) { std::vector args; args.push_back("/bin/sh"); args.push_back("-c"); args.push_back(translatedPath + ' ' + extractedArgs); std::vector argv; for (std::vector::const_iterator it = args.begin(); it != args.end(); ++it) { D(bug("HostExec::exec: %s", it->c_str())); argv.push_back(const_cast(it->c_str())); } argv.push_back(NULL); doexecv(&argv[0]); } } int HostExec::doexecv(char *const argv[]) const { #if defined(_WIN32) && !defined(__CYGWIN___) int ret = win32_execv(argv[0], &argv[0]); if (ret < 0) ret = errnoHost2Mint(-ret, TOS_ENSMEM); return ret; #else int pipefds[2]; pid_t pid; int ret; int count, err; if (pipe(pipefds)) { return errnoHost2Mint(errno, TOS_EINVAL); } if (fcntl(pipefds[1], F_SETFD, fcntl(pipefds[1], F_GETFD) | FD_CLOEXEC)) { err = errno; ::close(pipefds[0]); ::close(pipefds[1]); return errnoHost2Mint(err, TOS_EINVAL); } pid = fork(); ret = pid; if (pid == -1) { D(bug("HostExec::exec: fork() failed")); ret = errnoHost2Mint(errno, TOS_ENSMEM); } else if (pid == 0) { ::close(pipefds[0]); ::execv(argv[0], &argv[0]); err = errno; while ((count = ::write(pipefds[1], &err, sizeof(err))) == -1) if (errno != EAGAIN && errno != EINTR) break; _exit(127); } else { ::close(pipefds[1]); while ((count = ::read(pipefds[0], &err, sizeof(err))) == -1) if (errno != EAGAIN && errno != EINTR) break; ::close(pipefds[0]); if (count) { if (count != sizeof(err)) err = errno; bug("NF_HOSTEXEC: exec failed: %s", strerror(err)); ret = errnoHost2Mint(err, TOS_ENSMEM); } /* * we get here if we could not read the errno from the pipe, * because the pipe was closed by a successful execv() in the child */ } { static int signal_handler_installed; if (!signal_handler_installed) { struct sigaction sa; sigset_t set; memset(&sa, 0, sizeof(sa)); sigemptyset(&set); #ifdef SA_NOCLDSTOP sa.sa_flags |= SA_NOCLDSTOP; #endif sa.sa_handler = child_signal; sigaction(SIGCHLD, &sa, NULL); signal_handler_installed = 1; } } printf("execv: %d\n", ret); return ret; #endif } int HostExec::execv(int argc, memptr argv) const { static const int MAXPATHNAMELEN = 2048; int i; int ret; if (argc <= 0) return TOS_EINVAL; memptr argv0 = ReadNFInt32(argv); char fname[MAXPATHNAMELEN]; Atari2HostUtf8Copy(fname, argv0, sizeof(fname)); std::string translatedPath(translatePath(std::string(fname))); if (translatedPath.empty()) return TOS_EINVAL; std::vector execargv; execargv.push_back(const_cast(translatedPath.c_str())); for (i = 1; i < argc; i++) { argv += 4; /* ATARI_SIZEOF_PTR */ memptr arg = ReadNFInt32(argv); size_t len = Atari2HostSafeStrlen(arg); if (len == 0) { ret = TOS_EINVAL; goto fail; } char *parg = (char *)malloc(len); if (parg == NULL) { ret = TOS_ENSMEM; goto fail; } Atari2Host_memcpy(parg, arg, len); execargv.push_back(parg); } execargv.push_back(NULL); ret = doexecv(&execargv[0]); fail: while (i > 1) { --i; free(execargv[i]); } return ret; } #endif /* NFEXEC_SUPPORT */ aranym-1.1.0/src/natfeat/nf_basicset.h0000664000175000017500000000370713454637621016052 0ustar joyjoy/* * nf_basicset.h - NatFeat Basic Set - declaration * * Copyright (c) 2002-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _NF_BASICSET_H #define _NF_BASICSET_H #include "nf_base.h" class NF_Name : public NF_Base { public: const char *name() { return "NF_NAME"; } bool isSuperOnly() { return false; } int32 dispatch(uint32 fncode); }; class NF_Version : public NF_Base { public: const char *name() { return "NF_VERSION"; } bool isSuperOnly() { return false; } int32 dispatch(uint32 fncode); }; class NF_Shutdown : public NF_Base { public: const char *name() { return "NF_SHUTDOWN"; } bool isSuperOnly() { return true; } int32 dispatch(uint32 fncode); }; class NF_Exit : public NF_Base { public: const char *name() { return "NF_EXIT"; } bool isSuperOnly() { return false; } int32 dispatch(uint32 fncode); }; class NF_StdErr : public NF_Base { public: const char *name() { return "NF_STDERR"; } bool isSuperOnly() { return false; } int32 dispatch(uint32 fncode); static uint32 host_puts(FILE *f, memptr s, int width); static uint32 host_putc(FILE *f, unsigned char c); }; #endif // _NF_BASICSET_H aranym-1.1.0/src/natfeat/nf_basicset.cpp0000664000175000017500000000722613454637621016405 0ustar joyjoy/* * nf_basicset.cpp - NatFeat Basic Set * * Copyright (c) 2002-2005 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "cpu_emulation.h" #include "nf_basicset.h" #include "maptab.h" #include "version.h" #include "main.h" #define DEBUG 0 #include "debug.h" int32 NF_Name::dispatch(uint32 fncode) { char buf[strlen(version_string) + 80]; memptr name_ptr = getParameter(0); uint32 name_maxlen = getParameter(1); D(bug("NF_Name($%08x, %d)", name_ptr, name_maxlen)); const char *text; switch(fncode) { case 0:/* get_pure_name(char *name, uint32 max_len) */ text = name_string; break; case 1: /* get_complete_name(char *name, uint32 max_len) */ strcpy(buf, version_string); strcat(buf, " (Host: " OS_TYPE "/" CPU_TYPE ")"); text = buf; break; default: text = "Unimplemented NF_NAME sub-id"; break; } Host2AtariSafeStrncpy(name_ptr, text, name_maxlen-1); return strlen(text); } // return version of the NF interface in the form HI.LO (currently 1.0) int32 NF_Version::dispatch(uint32 /*fncode*/) { return 0x00010000UL; } // shut down the application int32 NF_Shutdown::dispatch(uint32 fncode) { switch (fncode) { case 0: /* shutdown(HALT) */ exit_val = 0; Quit680x0(); break; case 1: /* shutdown(BOOT) */ RestartAll(false); break; case 2: /* shutdown(COLDBOOT) */ RestartAll(true); break; case 3: /* shutdown(POWEROFF) */ exit_val = 0; Quit680x0(); break; } return 0; } // shut down the application int32 NF_Exit::dispatch(uint32 fncode) { switch (fncode) { case 0: exit_val = getParameter(0); Quit680x0(); break; } return 0; } // print text on standard error stream // internally limited to 2048 characters for now int32 NF_StdErr::dispatch(uint32 fncode) { FILE *output = stderr; int32 put; DUNUSED(fncode); memptr str_ptr = getParameter(0); D(bug("NF_StdErr(%d, $%08x)", fncode, str_ptr)); put = host_puts(output, str_ptr, 0); fflush(output); // ensure immediate data output return put; } uint32 NF_StdErr::host_puts(FILE *f, memptr s, int width) { uint32 put = 0; if (!s) { fputs("(null)", f); put += 6; width -= 6; } else { unsigned char c; while ((c = ReadNFInt8(s++)) != 0) { put += host_putc(f, c); width--; } } while (width-- > 0) { put += host_putc(f, ' '); } return put; } uint32 NF_StdErr::host_putc(FILE *f, unsigned char c) { uint32 put; unsigned short ch; if (c == 0x0d) { /* ignore CRs */ return 0; } if (c == 0x0a) { fputc('\n', f); return 1; } ch = atari_to_utf16[c]; if (ch < 0x80) { fputc(ch, f); put = 1; } else if (ch < 0x800) { fputc(((ch >> 6) & 0x3f) | 0xc0, f); fputc((ch & 0x3f) | 0x80, f); put = 2; } else { fputc(((ch >> 12) & 0x0f) | 0xe0, f); fputc(((ch >> 6) & 0x3f) | 0x80, f); fputc((ch & 0x3f) | 0x80, f); put = 3; } return put; } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/natfeat/nf_base.h0000664000175000017500000000320213454637621015155 0ustar joyjoy/* * nf_base.h - NatFeat common base * * Copyright (c) 2002-2005 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _NF_BASE_H #define _NF_BASE_H #include "natfeats.h" /* nf_getparameter is defined there */ #define DriveFromLetter(d) \ (((d) >= 'A' && (d) <= 'Z') ? (d - 'A') : \ ((d) >= 'a' && (d) <= 'z') ? (d - 'a') : \ ((d) >= '1' && (d) <= '6') ? (d - '1' + 26) : \ -1) #define DriveToLetter(d) ((d) < 26 ? 'A' + (d) : (d) - 26 + '1') class NF_Base { public: NF_Base() {}; virtual ~NF_Base() {}; virtual void reset() {}; virtual const char *name() = 0; virtual bool isSuperOnly() = 0; virtual int32 dispatch(uint32 fncode) = 0; uint32 getParameter(int i) { return nf_getparameter(i); } uint32 errnoHost2Mint( int unixerrno,int defaulttoserrno ) const; }; #endif /* _NF_BASE_H */ aranym-1.1.0/src/natfeat/nf_base.cpp0000664000175000017500000000440313454637621015514 0ustar joyjoy/* * nf_base.cpp - NatFeat base * * Copyright (c) 2002-2005 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "nf_base.h" #include #include "toserror.h" #include "debug.h" uint32 NF_Base::errnoHost2Mint(int unixerrno,int defaulttoserrno) const { int retval = defaulttoserrno; switch(unixerrno) { case EACCES: case EPERM: case ENFILE: retval = TOS_EACCDN;break; case EBADF: retval = TOS_EIHNDL;break; case ENOTDIR: retval = TOS_EPTHNF;break; case EROFS: retval = TOS_EROFS;break; case ENOENT: /* GEMDOS most time means it should be a file */ case ECHILD: retval = TOS_EFILNF;break; case ESRCH: retval = TOS_ESRCH;break; case ENXIO: retval = TOS_EDRIVE;break; case EIO: retval = TOS_EIO;break; /* -90 I/O error */ case ENOEXEC: retval = TOS_EPLFMT;break; case ENOMEM: retval = TOS_ENSMEM;break; case EFAULT: retval = TOS_EIMBA;break; case EEXIST: retval = TOS_EEXIST;break; /* -85 file exist, try again later */ case EXDEV: retval = TOS_ENSAME;break; case ENODEV: retval = TOS_EUNDEV;break; case EINVAL: retval = TOS_EINVFN;break; case EMFILE: retval = TOS_ENHNDL;break; case ENOSPC: retval = TOS_ENOSPC;break; /* -91 disk full */ case EBUSY: retval = TOS_EDRVNR;break; case EISDIR: retval = TOS_EISDIR;break; case ENAMETOOLONG: retval = TOS_ERANGE; break; } D(bug("NF: errnoHost2Mint (%d,%d->%d)", unixerrno, defaulttoserrno, retval)); return retval; } aranym-1.1.0/src/natfeat/maptab.h0000664000175000017500000000030713454637621015027 0ustar joyjoyextern unsigned short const atari_to_utf16[256]; extern unsigned short const atarifont_to_utf16[256]; extern unsigned short const utf16_to_atari[0x10000]; void charset_conv_error(unsigned short ch); aranym-1.1.0/src/natfeat/maptab.cpp0000664000175000017500000476516213454637621015407 0ustar joyjoy#include "maptab.h" unsigned short const atari_to_utf16[256] = { /* 00 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, /* 08 */ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, /* 10 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, /* 18 */ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, /* 20 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 28 */ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, /* 30 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 38 */ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, /* 40 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 48 */ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, /* 50 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 58 */ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, /* 60 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 68 */ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, /* 70 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 78 */ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, /* 80 */ 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, /* 88 */ 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, /* 90 */ 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, /* 98 */ 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x00df, 0x0192, /* a0 */ 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, /* a8 */ 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, /* b0 */ 0x00e3, 0x00f5, 0x00d8, 0x00f8, 0x0153, 0x0152, 0x00c0, 0x00c3, /* b8 */ 0x00d5, 0x00a8, 0x00b4, 0x2020, 0x00b6, 0x00a9, 0x00ae, 0x2122, /* c0 */ 0x0133, 0x0132, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, /* c8 */ 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05db, 0x05dc, 0x05de, 0x05e0, /* d0 */ 0x05e1, 0x05e2, 0x05e4, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, /* d8 */ 0x05df, 0x05da, 0x05dd, 0x05e3, 0x05e5, 0x00a7, 0x2227, 0x221e, /* e0 */ 0x03b1, 0x03b2, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, /* e8 */ 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x222e, 0x03c6, 0x2208, 0x2229, /* f0 */ 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, /* f8 */ 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x00b3, 0x00af }; /* same, except for the controls char which map to themselves in the table above */ unsigned short const atarifont_to_utf16[256] = { /* 00 */ 0x0000, 0x21e7, 0x21e9, 0x21e8, 0x21e6, 0x2610, 0x2611, 0x2612, /* 08 */ 0x2713, 0x231a, 0x237e, 0x266a, 0x240c, 0x240d, 0x26f0, 0x26f1, /* 10 */ 0x24ea, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, /* 18 */ 0x2467, 0x2468, 0x018f, 0x241b, 0x26f2, 0x26f3, 0x26f4, 0x26f5, /* 20 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 28 */ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, /* 30 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 38 */ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, /* 40 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 48 */ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, /* 50 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 58 */ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, /* 60 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 68 */ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, /* 70 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 78 */ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2206, /* 80 */ 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, /* 88 */ 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, /* 90 */ 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, /* 98 */ 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x00df, 0x0192, /* a0 */ 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, /* a8 */ 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, /* b0 */ 0x00e3, 0x00f5, 0x00d8, 0x00f8, 0x0153, 0x0152, 0x00c0, 0x00c3, /* b8 */ 0x00d5, 0x00a8, 0x00b4, 0x2020, 0x00b6, 0x00a9, 0x00ae, 0x2122, /* c0 */ 0x0133, 0x0132, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, /* c8 */ 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05db, 0x05dc, 0x05de, 0x05e0, /* d0 */ 0x05e1, 0x05e2, 0x05e4, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, /* d8 */ 0x05df, 0x05da, 0x05dd, 0x05e3, 0x05e5, 0x00a7, 0x2227, 0x221e, /* e0 */ 0x03b1, 0x03b2, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, /* e8 */ 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x222e, 0x03c6, 0x2208, 0x2229, /* f0 */ 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, /* f8 */ 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x00b3, 0x00af }; unsigned short const utf16_to_atari[] = { /* 0000 */ 0x0000, /* (NULL) */ /* 0001 */ 0x0001, /* (START OF HEADING) */ /* 0002 */ 0x0002, /* (START OF TEXT) */ /* 0003 */ 0x0003, /* (END OF TEXT) */ /* 0004 */ 0x0004, /* (END OF TRANSMISSION) */ /* 0005 */ 0x0005, /* (ENQUIRY) */ /* 0006 */ 0x0006, /* (ACKNOWLEDGE) */ /* 0007 */ 0x0007, /* (BELL) */ /* 0008 */ 0x0008, /* (BACKSPACE) */ /* 0009 */ 0x0009, /* (CHARACTER TABULATION) */ /* 000a */ 0x000a, /* (LINE FEED) */ /* 000b */ 0x000b, /* (LINE TABULATION) */ /* 000c */ 0x000c, /* (FORM FEED) */ /* 000d */ 0x000d, /* (CARRIAGE RETURN) */ /* 000e */ 0x000e, /* (SHIFT OUT) */ /* 000f */ 0x000f, /* (SHIFT IN) */ /* 0010 */ 0x0010, /* (DATA LINK ESCAPE) */ /* 0011 */ 0x0011, /* (DEVICE CONTROL ONE) */ /* 0012 */ 0x0012, /* (DEVICE CONTROL TWO) */ /* 0013 */ 0x0013, /* (DEVICE CONTROL THREE) */ /* 0014 */ 0x0014, /* (DEVICE CONTROL FOUR) */ /* 0015 */ 0x0015, /* (NEGATIVE ACKNOWLEDGE) */ /* 0016 */ 0x0016, /* (SYNCHRONOUS IDLE) */ /* 0017 */ 0x0017, /* (END OF TRANSMISSION BLOCK) */ /* 0018 */ 0x0018, /* (CANCEL) */ /* 0019 */ 0x0019, /* (END OF MEDIUM) */ /* 001a */ 0x001a, /* (SUBSTITUTE) */ /* 001b */ 0x001b, /* (ESCAPE) */ /* 001c */ 0x001c, /* (INFORMATION SEPARATOR FOUR) */ /* 001d */ 0x001d, /* (INFORMATION SEPARATOR THREE) */ /* 001e */ 0x001e, /* (INFORMATION SEPARATOR TWO) */ /* 001f */ 0x001f, /* (INFORMATION SEPARATOR ONE) */ /* 0020 */ 0x0020, /* SPACE */ /* 0021 */ 0x0021, /* EXCLAMATION MARK */ /* 0022 */ 0x0022, /* QUOTATION MARK */ /* 0023 */ 0x0023, /* NUMBER SIGN */ /* 0024 */ 0x0024, /* DOLLAR SIGN */ /* 0025 */ 0x0025, /* PERCENT SIGN */ /* 0026 */ 0x0026, /* AMPERSAND */ /* 0027 */ 0x0027, /* APOSTROPHE */ /* 0028 */ 0x0028, /* LEFT PARENTHESIS */ /* 0029 */ 0x0029, /* RIGHT PARENTHESIS */ /* 002a */ 0x002a, /* ASTERISK */ /* 002b */ 0x002b, /* PLUS SIGN */ /* 002c */ 0x002c, /* COMMA */ /* 002d */ 0x002d, /* HYPHEN-MINUS */ /* 002e */ 0x002e, /* FULL STOP */ /* 002f */ 0x002f, /* SOLIDUS */ /* 0030 */ 0x0030, /* DIGIT ZERO */ /* 0031 */ 0x0031, /* DIGIT ONE */ /* 0032 */ 0x0032, /* DIGIT TWO */ /* 0033 */ 0x0033, /* DIGIT THREE */ /* 0034 */ 0x0034, /* DIGIT FOUR */ /* 0035 */ 0x0035, /* DIGIT FIVE */ /* 0036 */ 0x0036, /* DIGIT SIX */ /* 0037 */ 0x0037, /* DIGIT SEVEN */ /* 0038 */ 0x0038, /* DIGIT EIGHT */ /* 0039 */ 0x0039, /* DIGIT NINE */ /* 003a */ 0x003a, /* COLON */ /* 003b */ 0x003b, /* SEMICOLON */ /* 003c */ 0x003c, /* LESS-THAN SIGN */ /* 003d */ 0x003d, /* EQUALS SIGN */ /* 003e */ 0x003e, /* GREATER-THAN SIGN */ /* 003f */ 0x003f, /* QUESTION MARK */ /* 0040 */ 0x0040, /* COMMERCIAL AT */ /* 0041 */ 0x0041, /* LATIN CAPITAL LETTER A */ /* 0042 */ 0x0042, /* LATIN CAPITAL LETTER B */ /* 0043 */ 0x0043, /* LATIN CAPITAL LETTER C */ /* 0044 */ 0x0044, /* LATIN CAPITAL LETTER D */ /* 0045 */ 0x0045, /* LATIN CAPITAL LETTER E */ /* 0046 */ 0x0046, /* LATIN CAPITAL LETTER F */ /* 0047 */ 0x0047, /* LATIN CAPITAL LETTER G */ /* 0048 */ 0x0048, /* LATIN CAPITAL LETTER H */ /* 0049 */ 0x0049, /* LATIN CAPITAL LETTER I */ /* 004a */ 0x004a, /* LATIN CAPITAL LETTER J */ /* 004b */ 0x004b, /* LATIN CAPITAL LETTER K */ /* 004c */ 0x004c, /* LATIN CAPITAL LETTER L */ /* 004d */ 0x004d, /* LATIN CAPITAL LETTER M */ /* 004e */ 0x004e, /* LATIN CAPITAL LETTER N */ /* 004f */ 0x004f, /* LATIN CAPITAL LETTER O */ /* 0050 */ 0x0050, /* LATIN CAPITAL LETTER P */ /* 0051 */ 0x0051, /* LATIN CAPITAL LETTER Q */ /* 0052 */ 0x0052, /* LATIN CAPITAL LETTER R */ /* 0053 */ 0x0053, /* LATIN CAPITAL LETTER S */ /* 0054 */ 0x0054, /* LATIN CAPITAL LETTER T */ /* 0055 */ 0x0055, /* LATIN CAPITAL LETTER U */ /* 0056 */ 0x0056, /* LATIN CAPITAL LETTER V */ /* 0057 */ 0x0057, /* LATIN CAPITAL LETTER W */ /* 0058 */ 0x0058, /* LATIN CAPITAL LETTER X */ /* 0059 */ 0x0059, /* LATIN CAPITAL LETTER Y */ /* 005a */ 0x005a, /* LATIN CAPITAL LETTER Z */ /* 005b */ 0x005b, /* LEFT SQUARE BRACKET */ /* 005c */ 0x005c, /* REVERSE SOLIDUS */ /* 005d */ 0x005d, /* RIGHT SQUARE BRACKET */ /* 005e */ 0x005e, /* CIRCUMFLEX ACCENT */ /* 005f */ 0x005f, /* LOW LINE */ /* 0060 */ 0x0060, /* GRAVE ACCENT */ /* 0061 */ 0x0061, /* LATIN SMALL LETTER A */ /* 0062 */ 0x0062, /* LATIN SMALL LETTER B */ /* 0063 */ 0x0063, /* LATIN SMALL LETTER C */ /* 0064 */ 0x0064, /* LATIN SMALL LETTER D */ /* 0065 */ 0x0065, /* LATIN SMALL LETTER E */ /* 0066 */ 0x0066, /* LATIN SMALL LETTER F */ /* 0067 */ 0x0067, /* LATIN SMALL LETTER G */ /* 0068 */ 0x0068, /* LATIN SMALL LETTER H */ /* 0069 */ 0x0069, /* LATIN SMALL LETTER I */ /* 006a */ 0x006a, /* LATIN SMALL LETTER J */ /* 006b */ 0x006b, /* LATIN SMALL LETTER K */ /* 006c */ 0x006c, /* LATIN SMALL LETTER L */ /* 006d */ 0x006d, /* LATIN SMALL LETTER M */ /* 006e */ 0x006e, /* LATIN SMALL LETTER N */ /* 006f */ 0x006f, /* LATIN SMALL LETTER O */ /* 0070 */ 0x0070, /* LATIN SMALL LETTER P */ /* 0071 */ 0x0071, /* LATIN SMALL LETTER Q */ /* 0072 */ 0x0072, /* LATIN SMALL LETTER R */ /* 0073 */ 0x0073, /* LATIN SMALL LETTER S */ /* 0074 */ 0x0074, /* LATIN SMALL LETTER T */ /* 0075 */ 0x0075, /* LATIN SMALL LETTER U */ /* 0076 */ 0x0076, /* LATIN SMALL LETTER V */ /* 0077 */ 0x0077, /* LATIN SMALL LETTER W */ /* 0078 */ 0x0078, /* LATIN SMALL LETTER X */ /* 0079 */ 0x0079, /* LATIN SMALL LETTER Y */ /* 007a */ 0x007a, /* LATIN SMALL LETTER Z */ /* 007b */ 0x007b, /* LEFT CURLY BRACKET */ /* 007c */ 0x007c, /* VERTICAL LINE */ /* 007d */ 0x007d, /* RIGHT CURLY BRACKET */ /* 007e */ 0x007e, /* TILDE */ /* 007f */ 0x007f, /* (DELETE) */ /* 0080 */ 0xffff, /* */ /* 0081 */ 0xffff, /* */ /* 0082 */ 0xffff, /* (BREAK PERMITTED HERE) */ /* 0083 */ 0xffff, /* (NO BREAK HERE) */ /* 0084 */ 0xffff, /* */ /* 0085 */ 0xffff, /* (NEXT LINE (NEL)) */ /* 0086 */ 0xffff, /* (START OF SELECTED AREA) */ /* 0087 */ 0xffff, /* (END OF SELECTED AREA) */ /* 0088 */ 0xffff, /* (CHARACTER TABULATION SET) */ /* 0089 */ 0xffff, /* (CHARACTER TABULATION WITH JUSTIFICATION) */ /* 008a */ 0xffff, /* (LINE TABULATION SET) */ /* 008b */ 0xffff, /* (PARTIAL LINE FORWARD) */ /* 008c */ 0xffff, /* (PARTIAL LINE BACKWARD) */ /* 008d */ 0xffff, /* (REVERSE LINE FEED) */ /* 008e */ 0xffff, /* (SINGLE SHIFT TWO) */ /* 008f */ 0xffff, /* (SINGLE SHIFT THREE) */ /* 0090 */ 0xffff, /* (DEVICE CONTROL STRING) */ /* 0091 */ 0xffff, /* (PRIVATE USE ONE) */ /* 0092 */ 0xffff, /* (PRIVATE USE TWO) */ /* 0093 */ 0xffff, /* (SET TRANSMIT STATE) */ /* 0094 */ 0xffff, /* (CANCEL CHARACTER) */ /* 0095 */ 0xffff, /* (MESSAGE WAITING) */ /* 0096 */ 0xffff, /* (START OF GUARDED AREA) */ /* 0097 */ 0xffff, /* (END OF GUARDED AREA) */ /* 0098 */ 0xffff, /* (START OF STRING) */ /* 0099 */ 0xffff, /* */ /* 009a */ 0xffff, /* (SINGLE CHARACTER INTRODUCER) */ /* 009b */ 0xffff, /* (CONTROL SEQUENCE INTRODUCER) */ /* 009c */ 0xffff, /* (STRING TERMINATOR) */ /* 009d */ 0xffff, /* (OPERATING SYSTEM COMMAND) */ /* 009e */ 0xffff, /* (PRIVACY MESSAGE) */ /* 009f */ 0xffff, /* (APPLICATION PROGRAM COMMAND) */ /* 00a0 */ 0x0020, /* NO-BREAK SPACE */ /* 00a1 */ 0x00ad, /* INVERTED EXCLAMATION MARK */ /* 00a2 */ 0x009b, /* CENT SIGN */ /* 00a3 */ 0x009c, /* POUND SIGN */ /* 00a4 */ 0x00de, /* CURRENCY SIGN */ /* 00a5 */ 0x009d, /* YEN SIGN */ /* 00a6 */ 0x00a6, /* BROKEN BAR */ /* 00a7 */ 0x00dd, /* SECTION SIGN */ /* 00a8 */ 0x00b9, /* DIAERESIS */ /* 00a9 */ 0x00bd, /* COPYRIGHT SIGN */ /* 00aa */ 0x00a6, /* FEMININE ORDINAL INDICATOR */ /* 00ab */ 0x00ae, /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ /* 00ac */ 0x00aa, /* NOT SIGN */ /* 00ad */ 0x002d, /* SOFT HYPHEN */ /* 00ae */ 0x00be, /* REGISTERED SIGN */ /* 00af */ 0x00ff, /* MACRON */ /* 00b0 */ 0x00f8, /* DEGREE SIGN */ /* 00b1 */ 0x00f1, /* PLUS-MINUS SIGN */ /* 00b2 */ 0x00fd, /* SUPERSCRIPT TWO */ /* 00b3 */ 0x00fe, /* SUPERSCRIPT THREE */ /* 00b4 */ 0x00ba, /* ACUTE ACCENT */ /* 00b5 */ 0x00e6, /* MICRO SIGN */ /* 00b6 */ 0x00bc, /* PILCROW SIGN */ /* 00b7 */ 0x00fa, /* MIDDLE DOT */ /* 00b8 */ 0x00b8, /* CEDILLA */ /* 00b9 */ 0xffff, /* SUPERSCRIPT ONE */ /* 00ba */ 0x00a7, /* MASCULINE ORDINAL INDICATOR */ /* 00bb */ 0x00af, /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ /* 00bc */ 0x00ac, /* VULGAR FRACTION ONE QUARTER */ /* 00bd */ 0x00ab, /* VULGAR FRACTION ONE HALF */ /* 00be */ 0x00be, /* VULGAR FRACTION THREE QUARTERS */ /* 00bf */ 0x00a8, /* INVERTED QUESTION MARK */ /* 00c0 */ 0x00b6, /* LATIN CAPITAL LETTER A WITH GRAVE */ /* 00c1 */ 0x00c1, /* LATIN CAPITAL LETTER A WITH ACUTE */ /* 00c2 */ 0x00c2, /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ /* 00c3 */ 0x00b7, /* LATIN CAPITAL LETTER A WITH TILDE */ /* 00c4 */ 0x008e, /* LATIN CAPITAL LETTER A WITH DIAERESIS */ /* 00c5 */ 0x008f, /* LATIN CAPITAL LETTER A WITH RING ABOVE */ /* 00c6 */ 0x0092, /* LATIN CAPITAL LETTER AE */ /* 00c7 */ 0x0080, /* LATIN CAPITAL LETTER C WITH CEDILLA */ /* 00c8 */ 0x00c8, /* LATIN CAPITAL LETTER E WITH GRAVE */ /* 00c9 */ 0x0090, /* LATIN CAPITAL LETTER E WITH ACUTE */ /* 00ca */ 0x00ca, /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ /* 00cb */ 0x00cb, /* LATIN CAPITAL LETTER E WITH DIAERESIS */ /* 00cc */ 0x00cc, /* LATIN CAPITAL LETTER I WITH GRAVE */ /* 00cd */ 0x00cd, /* LATIN CAPITAL LETTER I WITH ACUTE */ /* 00ce */ 0x00ce, /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ /* 00cf */ 0x00cf, /* LATIN CAPITAL LETTER I WITH DIAERESIS */ /* 00d0 */ 0x00d0, /* LATIN CAPITAL LETTER ETH */ /* 00d1 */ 0x00a5, /* LATIN CAPITAL LETTER N WITH TILDE */ /* 00d2 */ 0x00d2, /* LATIN CAPITAL LETTER O WITH GRAVE */ /* 00d3 */ 0x00d3, /* LATIN CAPITAL LETTER O WITH ACUTE */ /* 00d4 */ 0x00d4, /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ /* 00d5 */ 0x00b8, /* LATIN CAPITAL LETTER O WITH TILDE */ /* 00d6 */ 0x0099, /* LATIN CAPITAL LETTER O WITH DIAERESIS */ /* 00d7 */ 0x00d7, /* MULTIPLICATION SIGN */ /* 00d8 */ 0x00b2, /* LATIN CAPITAL LETTER O WITH STROKE */ /* 00d9 */ 0x00d9, /* LATIN CAPITAL LETTER U WITH GRAVE */ /* 00da */ 0x00da, /* LATIN CAPITAL LETTER U WITH ACUTE */ /* 00db */ 0x00db, /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ /* 00dc */ 0x009a, /* LATIN CAPITAL LETTER U WITH DIAERESIS */ /* 00dd */ 0x00dd, /* LATIN CAPITAL LETTER Y WITH ACUTE */ /* 00de */ 0x00de, /* LATIN CAPITAL LETTER THORN */ /* 00df */ 0x009e, /* LATIN SMALL LETTER SHARP S */ /* 00e0 */ 0x0085, /* LATIN SMALL LETTER A WITH GRAVE */ /* 00e1 */ 0x00a0, /* LATIN SMALL LETTER A WITH ACUTE */ /* 00e2 */ 0x0083, /* LATIN SMALL LETTER A WITH CIRCUMFLEX */ /* 00e3 */ 0x00b0, /* LATIN SMALL LETTER A WITH TILDE */ /* 00e4 */ 0x0084, /* LATIN SMALL LETTER A WITH DIAERESIS */ /* 00e5 */ 0x0086, /* LATIN SMALL LETTER A WITH RING ABOVE */ /* 00e6 */ 0x0091, /* LATIN SMALL LETTER AE */ /* 00e7 */ 0x0087, /* LATIN SMALL LETTER C WITH CEDILLA */ /* 00e8 */ 0x008a, /* LATIN SMALL LETTER E WITH GRAVE */ /* 00e9 */ 0x0082, /* LATIN SMALL LETTER E WITH ACUTE */ /* 00ea */ 0x0088, /* LATIN SMALL LETTER E WITH CIRCUMFLEX */ /* 00eb */ 0x0089, /* LATIN SMALL LETTER E WITH DIAERESIS */ /* 00ec */ 0x008d, /* LATIN SMALL LETTER I WITH GRAVE */ /* 00ed */ 0x00a1, /* LATIN SMALL LETTER I WITH ACUTE */ /* 00ee */ 0x008c, /* LATIN SMALL LETTER I WITH CIRCUMFLEX */ /* 00ef */ 0x008b, /* LATIN SMALL LETTER I WITH DIAERESIS */ /* 00f0 */ 0x00f0, /* LATIN SMALL LETTER ETH */ /* 00f1 */ 0x00a4, /* LATIN SMALL LETTER N WITH TILDE */ /* 00f2 */ 0x0095, /* LATIN SMALL LETTER O WITH GRAVE */ /* 00f3 */ 0x00a2, /* LATIN SMALL LETTER O WITH ACUTE */ /* 00f4 */ 0x0093, /* LATIN SMALL LETTER O WITH CIRCUMFLEX */ /* 00f5 */ 0x00b1, /* LATIN SMALL LETTER O WITH TILDE */ /* 00f6 */ 0x0094, /* LATIN SMALL LETTER O WITH DIAERESIS */ /* 00f7 */ 0x00f6, /* DIVISION SIGN */ /* 00f8 */ 0x00b3, /* LATIN SMALL LETTER O WITH STROKE */ /* 00f9 */ 0x0097, /* LATIN SMALL LETTER U WITH GRAVE */ /* 00fa */ 0x00a3, /* LATIN SMALL LETTER U WITH ACUTE */ /* 00fb */ 0x0096, /* LATIN SMALL LETTER U WITH CIRCUMFLEX */ /* 00fc */ 0x0081, /* LATIN SMALL LETTER U WITH DIAERESIS */ /* 00fd */ 0x00fd, /* LATIN SMALL LETTER Y WITH ACUTE */ /* 00fe */ 0x00fe, /* LATIN SMALL LETTER THORN */ /* 00ff */ 0x0098, /* LATIN SMALL LETTER Y WITH DIAERESIS */ /* 0100 */ 0x0100, /* LATIN CAPITAL LETTER A WITH MACRON */ /* 0101 */ 0x0101, /* LATIN SMALL LETTER A WITH MACRON */ /* 0102 */ 0x0102, /* LATIN CAPITAL LETTER A WITH BREVE */ /* 0103 */ 0x0103, /* LATIN SMALL LETTER A WITH BREVE */ /* 0104 */ 0x0104, /* LATIN CAPITAL LETTER A WITH OGONEK */ /* 0105 */ 0x0105, /* LATIN SMALL LETTER A WITH OGONEK */ /* 0106 */ 0x0106, /* LATIN CAPITAL LETTER C WITH ACUTE */ /* 0107 */ 0x0107, /* LATIN SMALL LETTER C WITH ACUTE */ /* 0108 */ 0x0108, /* LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ /* 0109 */ 0x0109, /* LATIN SMALL LETTER C WITH CIRCUMFLEX */ /* 010a */ 0x010a, /* LATIN CAPITAL LETTER C WITH DOT ABOVE */ /* 010b */ 0x010b, /* LATIN SMALL LETTER C WITH DOT ABOVE */ /* 010c */ 0x010c, /* LATIN CAPITAL LETTER C WITH CARON */ /* 010d */ 0x010d, /* LATIN SMALL LETTER C WITH CARON */ /* 010e */ 0x010e, /* LATIN CAPITAL LETTER D WITH CARON */ /* 010f */ 0x010f, /* LATIN SMALL LETTER D WITH CARON */ /* 0110 */ 0x0110, /* LATIN CAPITAL LETTER D WITH STROKE */ /* 0111 */ 0x0111, /* LATIN SMALL LETTER D WITH STROKE */ /* 0112 */ 0x0112, /* LATIN CAPITAL LETTER E WITH MACRON */ /* 0113 */ 0x0113, /* LATIN SMALL LETTER E WITH MACRON */ /* 0114 */ 0x0114, /* LATIN CAPITAL LETTER E WITH BREVE */ /* 0115 */ 0x0115, /* LATIN SMALL LETTER E WITH BREVE */ /* 0116 */ 0x0116, /* LATIN CAPITAL LETTER E WITH DOT ABOVE */ /* 0117 */ 0x0117, /* LATIN SMALL LETTER E WITH DOT ABOVE */ /* 0118 */ 0x0118, /* LATIN CAPITAL LETTER E WITH OGONEK */ /* 0119 */ 0x0119, /* LATIN SMALL LETTER E WITH OGONEK */ /* 011a */ 0x011a, /* LATIN CAPITAL LETTER E WITH CARON */ /* 011b */ 0x011b, /* LATIN SMALL LETTER E WITH CARON */ /* 011c */ 0x011c, /* LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ /* 011d */ 0x011d, /* LATIN SMALL LETTER G WITH CIRCUMFLEX */ /* 011e */ 0x011e, /* LATIN CAPITAL LETTER G WITH BREVE */ /* 011f */ 0x011f, /* LATIN SMALL LETTER G WITH BREVE */ /* 0120 */ 0x0120, /* LATIN CAPITAL LETTER G WITH DOT ABOVE */ /* 0121 */ 0x0121, /* LATIN SMALL LETTER G WITH DOT ABOVE */ /* 0122 */ 0x0122, /* LATIN CAPITAL LETTER G WITH CEDILLA */ /* 0123 */ 0x0123, /* LATIN SMALL LETTER G WITH CEDILLA */ /* 0124 */ 0x0124, /* LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ /* 0125 */ 0x0125, /* LATIN SMALL LETTER H WITH CIRCUMFLEX */ /* 0126 */ 0x0126, /* LATIN CAPITAL LETTER H WITH STROKE */ /* 0127 */ 0x0127, /* LATIN SMALL LETTER H WITH STROKE */ /* 0128 */ 0x0128, /* LATIN CAPITAL LETTER I WITH TILDE */ /* 0129 */ 0x0129, /* LATIN SMALL LETTER I WITH TILDE */ /* 012a */ 0x012a, /* LATIN CAPITAL LETTER I WITH MACRON */ /* 012b */ 0x012b, /* LATIN SMALL LETTER I WITH MACRON */ /* 012c */ 0x012c, /* LATIN CAPITAL LETTER I WITH BREVE */ /* 012d */ 0x012d, /* LATIN SMALL LETTER I WITH BREVE */ /* 012e */ 0x012e, /* LATIN CAPITAL LETTER I WITH OGONEK */ /* 012f */ 0x012f, /* LATIN SMALL LETTER I WITH OGONEK */ /* 0130 */ 0x0130, /* LATIN CAPITAL LETTER I WITH DOT ABOVE */ /* 0131 */ 0x0131, /* LATIN SMALL LETTER DOTLESS I */ /* 0132 */ 0x00c1, /* LATIN CAPITAL LIGATURE IJ */ /* 0133 */ 0x00c0, /* LATIN SMALL LIGATURE IJ */ /* 0134 */ 0x0134, /* LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ /* 0135 */ 0x0135, /* LATIN SMALL LETTER J WITH CIRCUMFLEX */ /* 0136 */ 0x0136, /* LATIN CAPITAL LETTER K WITH CEDILLA */ /* 0137 */ 0x0137, /* LATIN SMALL LETTER K WITH CEDILLA */ /* 0138 */ 0x0138, /* LATIN SMALL LETTER KRA */ /* 0139 */ 0x0139, /* LATIN CAPITAL LETTER L WITH ACUTE */ /* 013a */ 0x013a, /* LATIN SMALL LETTER L WITH ACUTE */ /* 013b */ 0x013b, /* LATIN CAPITAL LETTER L WITH CEDILLA */ /* 013c */ 0x013c, /* LATIN SMALL LETTER L WITH CEDILLA */ /* 013d */ 0x013d, /* LATIN CAPITAL LETTER L WITH CARON */ /* 013e */ 0x013e, /* LATIN SMALL LETTER L WITH CARON */ /* 013f */ 0x013f, /* LATIN CAPITAL LETTER L WITH MIDDLE DOT */ /* 0140 */ 0x0140, /* LATIN SMALL LETTER L WITH MIDDLE DOT */ /* 0141 */ 0x0141, /* LATIN CAPITAL LETTER L WITH STROKE */ /* 0142 */ 0x0142, /* LATIN SMALL LETTER L WITH STROKE */ /* 0143 */ 0x0143, /* LATIN CAPITAL LETTER N WITH ACUTE */ /* 0144 */ 0x0144, /* LATIN SMALL LETTER N WITH ACUTE */ /* 0145 */ 0x0145, /* LATIN CAPITAL LETTER N WITH CEDILLA */ /* 0146 */ 0x0146, /* LATIN SMALL LETTER N WITH CEDILLA */ /* 0147 */ 0x0147, /* LATIN CAPITAL LETTER N WITH CARON */ /* 0148 */ 0x0148, /* LATIN SMALL LETTER N WITH CARON */ /* 0149 */ 0x0149, /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */ /* 014a */ 0x014a, /* LATIN CAPITAL LETTER ENG */ /* 014b */ 0x014b, /* LATIN SMALL LETTER ENG */ /* 014c */ 0x014c, /* LATIN CAPITAL LETTER O WITH MACRON */ /* 014d */ 0x014d, /* LATIN SMALL LETTER O WITH MACRON */ /* 014e */ 0x014e, /* LATIN CAPITAL LETTER O WITH BREVE */ /* 014f */ 0x014f, /* LATIN SMALL LETTER O WITH BREVE */ /* 0150 */ 0x0150, /* LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ /* 0151 */ 0x0151, /* LATIN SMALL LETTER O WITH DOUBLE ACUTE */ /* 0152 */ 0x00b5, /* LATIN CAPITAL LIGATURE OE */ /* 0153 */ 0x00b4, /* LATIN SMALL LIGATURE OE */ /* 0154 */ 0x0154, /* LATIN CAPITAL LETTER R WITH ACUTE */ /* 0155 */ 0x0155, /* LATIN SMALL LETTER R WITH ACUTE */ /* 0156 */ 0x0156, /* LATIN CAPITAL LETTER R WITH CEDILLA */ /* 0157 */ 0x0157, /* LATIN SMALL LETTER R WITH CEDILLA */ /* 0158 */ 0x0158, /* LATIN CAPITAL LETTER R WITH CARON */ /* 0159 */ 0x0159, /* LATIN SMALL LETTER R WITH CARON */ /* 015a */ 0x015a, /* LATIN CAPITAL LETTER S WITH ACUTE */ /* 015b */ 0x015b, /* LATIN SMALL LETTER S WITH ACUTE */ /* 015c */ 0x015c, /* LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ /* 015d */ 0x015d, /* LATIN SMALL LETTER S WITH CIRCUMFLEX */ /* 015e */ 0x015e, /* LATIN CAPITAL LETTER S WITH CEDILLA */ /* 015f */ 0x015f, /* LATIN SMALL LETTER S WITH CEDILLA */ /* 0160 */ 0x0160, /* LATIN CAPITAL LETTER S WITH CARON */ /* 0161 */ 0x0161, /* LATIN SMALL LETTER S WITH CARON */ /* 0162 */ 0x0162, /* LATIN CAPITAL LETTER T WITH CEDILLA */ /* 0163 */ 0x0163, /* LATIN SMALL LETTER T WITH CEDILLA */ /* 0164 */ 0x0164, /* LATIN CAPITAL LETTER T WITH CARON */ /* 0165 */ 0x0165, /* LATIN SMALL LETTER T WITH CARON */ /* 0166 */ 0x0166, /* LATIN CAPITAL LETTER T WITH STROKE */ /* 0167 */ 0x0167, /* LATIN SMALL LETTER T WITH STROKE */ /* 0168 */ 0x0168, /* LATIN CAPITAL LETTER U WITH TILDE */ /* 0169 */ 0x0169, /* LATIN SMALL LETTER U WITH TILDE */ /* 016a */ 0x016a, /* LATIN CAPITAL LETTER U WITH MACRON */ /* 016b */ 0x016b, /* LATIN SMALL LETTER U WITH MACRON */ /* 016c */ 0x016c, /* LATIN CAPITAL LETTER U WITH BREVE */ /* 016d */ 0x016d, /* LATIN SMALL LETTER U WITH BREVE */ /* 016e */ 0x016e, /* LATIN CAPITAL LETTER U WITH RING ABOVE */ /* 016f */ 0x016f, /* LATIN SMALL LETTER U WITH RING ABOVE */ /* 0170 */ 0x0170, /* LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ /* 0171 */ 0x0171, /* LATIN SMALL LETTER U WITH DOUBLE ACUTE */ /* 0172 */ 0x0172, /* LATIN CAPITAL LETTER U WITH OGONEK */ /* 0173 */ 0x0173, /* LATIN SMALL LETTER U WITH OGONEK */ /* 0174 */ 0x0174, /* LATIN CAPITAL LETTER W WITH CIRCUMFLEX */ /* 0175 */ 0x0175, /* LATIN SMALL LETTER W WITH CIRCUMFLEX */ /* 0176 */ 0x0176, /* LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */ /* 0177 */ 0x0177, /* LATIN SMALL LETTER Y WITH CIRCUMFLEX */ /* 0178 */ 0x0178, /* LATIN CAPITAL LETTER Y WITH DIAERESIS */ /* 0179 */ 0x0179, /* LATIN CAPITAL LETTER Z WITH ACUTE */ /* 017a */ 0x017a, /* LATIN SMALL LETTER Z WITH ACUTE */ /* 017b */ 0x017b, /* LATIN CAPITAL LETTER Z WITH DOT ABOVE */ /* 017c */ 0x017c, /* LATIN SMALL LETTER Z WITH DOT ABOVE */ /* 017d */ 0x017d, /* LATIN CAPITAL LETTER Z WITH CARON */ /* 017e */ 0x017e, /* LATIN SMALL LETTER Z WITH CARON */ /* 017f */ 0x017f, /* LATIN SMALL LETTER LONG S */ /* 0180 */ 0xffff, /* LATIN SMALL LETTER B WITH STROKE */ /* 0181 */ 0xffff, /* LATIN CAPITAL LETTER B WITH HOOK */ /* 0182 */ 0xffff, /* LATIN CAPITAL LETTER B WITH TOPBAR */ /* 0183 */ 0xffff, /* LATIN SMALL LETTER B WITH TOPBAR */ /* 0184 */ 0xffff, /* LATIN CAPITAL LETTER TONE SIX */ /* 0185 */ 0xffff, /* LATIN SMALL LETTER TONE SIX */ /* 0186 */ 0xffff, /* LATIN CAPITAL LETTER OPEN O */ /* 0187 */ 0xffff, /* LATIN CAPITAL LETTER C WITH HOOK */ /* 0188 */ 0xffff, /* LATIN SMALL LETTER C WITH HOOK */ /* 0189 */ 0xffff, /* LATIN CAPITAL LETTER AFRICAN D */ /* 018a */ 0xffff, /* LATIN CAPITAL LETTER D WITH HOOK */ /* 018b */ 0xffff, /* LATIN CAPITAL LETTER D WITH TOPBAR */ /* 018c */ 0xffff, /* LATIN SMALL LETTER D WITH TOPBAR */ /* 018d */ 0xffff, /* LATIN SMALL LETTER TURNED DELTA */ /* 018e */ 0xffff, /* LATIN CAPITAL LETTER REVERSED E */ /* 018f */ 0x001a, /* LATIN CAPITAL LETTER SCHWA */ /* 0190 */ 0xffff, /* LATIN CAPITAL LETTER OPEN E */ /* 0191 */ 0xffff, /* LATIN CAPITAL LETTER F WITH HOOK */ /* 0192 */ 0x009f, /* LATIN SMALL LETTER F WITH HOOK */ /* 0193 */ 0xffff, /* LATIN CAPITAL LETTER G WITH HOOK */ /* 0194 */ 0xffff, /* LATIN CAPITAL LETTER GAMMA */ /* 0195 */ 0xffff, /* LATIN SMALL LETTER HV */ /* 0196 */ 0xffff, /* LATIN CAPITAL LETTER IOTA */ /* 0197 */ 0xffff, /* LATIN CAPITAL LETTER I WITH STROKE */ /* 0198 */ 0xffff, /* LATIN CAPITAL LETTER K WITH HOOK */ /* 0199 */ 0xffff, /* LATIN SMALL LETTER K WITH HOOK */ /* 019a */ 0xffff, /* LATIN SMALL LETTER L WITH BAR */ /* 019b */ 0xffff, /* LATIN SMALL LETTER LAMBDA WITH STROKE */ /* 019c */ 0xffff, /* LATIN CAPITAL LETTER TURNED M */ /* 019d */ 0xffff, /* LATIN CAPITAL LETTER N WITH LEFT HOOK */ /* 019e */ 0xffff, /* LATIN SMALL LETTER N WITH LONG RIGHT LEG */ /* 019f */ 0xffff, /* LATIN CAPITAL LETTER O WITH MIDDLE TILDE */ /* 01a0 */ 0xffff, /* LATIN CAPITAL LETTER O WITH HORN */ /* 01a1 */ 0xffff, /* LATIN SMALL LETTER O WITH HORN */ /* 01a2 */ 0xffff, /* LATIN CAPITAL LETTER OI */ /* 01a3 */ 0xffff, /* LATIN SMALL LETTER OI */ /* 01a4 */ 0xffff, /* LATIN CAPITAL LETTER P WITH HOOK */ /* 01a5 */ 0xffff, /* LATIN SMALL LETTER P WITH HOOK */ /* 01a6 */ 0xffff, /* LATIN LETTER YR */ /* 01a7 */ 0xffff, /* LATIN CAPITAL LETTER TONE TWO */ /* 01a8 */ 0xffff, /* LATIN SMALL LETTER TONE TWO */ /* 01a9 */ 0xffff, /* LATIN CAPITAL LETTER ESH */ /* 01aa */ 0xffff, /* LATIN LETTER REVERSED ESH LOOP */ /* 01ab */ 0xffff, /* LATIN SMALL LETTER T WITH PALATAL HOOK */ /* 01ac */ 0xffff, /* LATIN CAPITAL LETTER T WITH HOOK */ /* 01ad */ 0xffff, /* LATIN SMALL LETTER T WITH HOOK */ /* 01ae */ 0xffff, /* LATIN CAPITAL LETTER T WITH RETROFLEX HOOK */ /* 01af */ 0xffff, /* LATIN CAPITAL LETTER U WITH HORN */ /* 01b0 */ 0xffff, /* LATIN SMALL LETTER U WITH HORN */ /* 01b1 */ 0xffff, /* LATIN CAPITAL LETTER UPSILON */ /* 01b2 */ 0xffff, /* LATIN CAPITAL LETTER V WITH HOOK */ /* 01b3 */ 0xffff, /* LATIN CAPITAL LETTER Y WITH HOOK */ /* 01b4 */ 0xffff, /* LATIN SMALL LETTER Y WITH HOOK */ /* 01b5 */ 0xffff, /* LATIN CAPITAL LETTER Z WITH STROKE */ /* 01b6 */ 0xffff, /* LATIN SMALL LETTER Z WITH STROKE */ /* 01b7 */ 0xffff, /* LATIN CAPITAL LETTER EZH */ /* 01b8 */ 0xffff, /* LATIN CAPITAL LETTER EZH REVERSED */ /* 01b9 */ 0xffff, /* LATIN SMALL LETTER EZH REVERSED */ /* 01ba */ 0xffff, /* LATIN SMALL LETTER EZH WITH TAIL */ /* 01bb */ 0xffff, /* LATIN LETTER TWO WITH STROKE */ /* 01bc */ 0xffff, /* LATIN CAPITAL LETTER TONE FIVE */ /* 01bd */ 0xffff, /* LATIN SMALL LETTER TONE FIVE */ /* 01be */ 0xffff, /* LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE */ /* 01bf */ 0xffff, /* LATIN LETTER WYNN */ /* 01c0 */ 0xffff, /* LATIN LETTER DENTAL CLICK */ /* 01c1 */ 0xffff, /* LATIN LETTER LATERAL CLICK */ /* 01c2 */ 0xffff, /* LATIN LETTER ALVEOLAR CLICK */ /* 01c3 */ 0xffff, /* LATIN LETTER RETROFLEX CLICK */ /* 01c4 */ 0xffff, /* LATIN CAPITAL LETTER DZ WITH CARON */ /* 01c5 */ 0xffff, /* LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON */ /* 01c6 */ 0xffff, /* LATIN SMALL LETTER DZ WITH CARON */ /* 01c7 */ 0xffff, /* LATIN CAPITAL LETTER LJ */ /* 01c8 */ 0xffff, /* LATIN CAPITAL LETTER L WITH SMALL LETTER J */ /* 01c9 */ 0xffff, /* LATIN SMALL LETTER LJ */ /* 01ca */ 0xffff, /* LATIN CAPITAL LETTER NJ */ /* 01cb */ 0xffff, /* LATIN CAPITAL LETTER N WITH SMALL LETTER J */ /* 01cc */ 0xffff, /* LATIN SMALL LETTER NJ */ /* 01cd */ 0xffff, /* LATIN CAPITAL LETTER A WITH CARON */ /* 01ce */ 0xffff, /* LATIN SMALL LETTER A WITH CARON */ /* 01cf */ 0xffff, /* LATIN CAPITAL LETTER I WITH CARON */ /* 01d0 */ 0xffff, /* LATIN SMALL LETTER I WITH CARON */ /* 01d1 */ 0xffff, /* LATIN CAPITAL LETTER O WITH CARON */ /* 01d2 */ 0xffff, /* LATIN SMALL LETTER O WITH CARON */ /* 01d3 */ 0xffff, /* LATIN CAPITAL LETTER U WITH CARON */ /* 01d4 */ 0xffff, /* LATIN SMALL LETTER U WITH CARON */ /* 01d5 */ 0xffff, /* LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON */ /* 01d6 */ 0xffff, /* LATIN SMALL LETTER U WITH DIAERESIS AND MACRON */ /* 01d7 */ 0xffff, /* LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE */ /* 01d8 */ 0xffff, /* LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE */ /* 01d9 */ 0xffff, /* LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON */ /* 01da */ 0xffff, /* LATIN SMALL LETTER U WITH DIAERESIS AND CARON */ /* 01db */ 0xffff, /* LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE */ /* 01dc */ 0xffff, /* LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE */ /* 01dd */ 0xffff, /* LATIN SMALL LETTER TURNED E */ /* 01de */ 0xffff, /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */ /* 01df */ 0xffff, /* LATIN SMALL LETTER A WITH DIAERESIS AND MACRON */ /* 01e0 */ 0xffff, /* LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON */ /* 01e1 */ 0xffff, /* LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON */ /* 01e2 */ 0xffff, /* LATIN CAPITAL LETTER AE WITH MACRON */ /* 01e3 */ 0xffff, /* LATIN SMALL LETTER AE WITH MACRON */ /* 01e4 */ 0xffff, /* LATIN CAPITAL LETTER G WITH STROKE */ /* 01e5 */ 0xffff, /* LATIN SMALL LETTER G WITH STROKE */ /* 01e6 */ 0xffff, /* LATIN CAPITAL LETTER G WITH CARON */ /* 01e7 */ 0xffff, /* LATIN SMALL LETTER G WITH CARON */ /* 01e8 */ 0xffff, /* LATIN CAPITAL LETTER K WITH CARON */ /* 01e9 */ 0xffff, /* LATIN SMALL LETTER K WITH CARON */ /* 01ea */ 0xffff, /* LATIN CAPITAL LETTER O WITH OGONEK */ /* 01eb */ 0xffff, /* LATIN SMALL LETTER O WITH OGONEK */ /* 01ec */ 0xffff, /* LATIN CAPITAL LETTER O WITH OGONEK AND MACRON */ /* 01ed */ 0xffff, /* LATIN SMALL LETTER O WITH OGONEK AND MACRON */ /* 01ee */ 0xffff, /* LATIN CAPITAL LETTER EZH WITH CARON */ /* 01ef */ 0xffff, /* LATIN SMALL LETTER EZH WITH CARON */ /* 01f0 */ 0xffff, /* LATIN SMALL LETTER J WITH CARON */ /* 01f1 */ 0xffff, /* LATIN CAPITAL LETTER DZ */ /* 01f2 */ 0xffff, /* LATIN CAPITAL LETTER D WITH SMALL LETTER Z */ /* 01f3 */ 0xffff, /* LATIN SMALL LETTER DZ */ /* 01f4 */ 0xffff, /* LATIN CAPITAL LETTER G WITH ACUTE */ /* 01f5 */ 0xffff, /* LATIN SMALL LETTER G WITH ACUTE */ /* 01f6 */ 0xffff, /* LATIN CAPITAL LETTER HWAIR */ /* 01f7 */ 0xffff, /* LATIN CAPITAL LETTER WYNN */ /* 01f8 */ 0xffff, /* LATIN CAPITAL LETTER N WITH GRAVE */ /* 01f9 */ 0xffff, /* LATIN SMALL LETTER N WITH GRAVE */ /* 01fa */ 0xffff, /* LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE */ /* 01fb */ 0xffff, /* LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE */ /* 01fc */ 0xffff, /* LATIN CAPITAL LETTER AE WITH ACUTE */ /* 01fd */ 0xffff, /* LATIN SMALL LETTER AE WITH ACUTE */ /* 01fe */ 0xffff, /* LATIN CAPITAL LETTER O WITH STROKE AND ACUTE */ /* 01ff */ 0xffff, /* LATIN SMALL LETTER O WITH STROKE AND ACUTE */ /* 0200 */ 0xffff, /* LATIN CAPITAL LETTER A WITH DOUBLE GRAVE */ /* 0201 */ 0xffff, /* LATIN SMALL LETTER A WITH DOUBLE GRAVE */ /* 0202 */ 0xffff, /* LATIN CAPITAL LETTER A WITH INVERTED BREVE */ /* 0203 */ 0xffff, /* LATIN SMALL LETTER A WITH INVERTED BREVE */ /* 0204 */ 0xffff, /* LATIN CAPITAL LETTER E WITH DOUBLE GRAVE */ /* 0205 */ 0xffff, /* LATIN SMALL LETTER E WITH DOUBLE GRAVE */ /* 0206 */ 0xffff, /* LATIN CAPITAL LETTER E WITH INVERTED BREVE */ /* 0207 */ 0xffff, /* LATIN SMALL LETTER E WITH INVERTED BREVE */ /* 0208 */ 0xffff, /* LATIN CAPITAL LETTER I WITH DOUBLE GRAVE */ /* 0209 */ 0xffff, /* LATIN SMALL LETTER I WITH DOUBLE GRAVE */ /* 020a */ 0xffff, /* LATIN CAPITAL LETTER I WITH INVERTED BREVE */ /* 020b */ 0xffff, /* LATIN SMALL LETTER I WITH INVERTED BREVE */ /* 020c */ 0xffff, /* LATIN CAPITAL LETTER O WITH DOUBLE GRAVE */ /* 020d */ 0xffff, /* LATIN SMALL LETTER O WITH DOUBLE GRAVE */ /* 020e */ 0xffff, /* LATIN CAPITAL LETTER O WITH INVERTED BREVE */ /* 020f */ 0xffff, /* LATIN SMALL LETTER O WITH INVERTED BREVE */ /* 0210 */ 0xffff, /* LATIN CAPITAL LETTER R WITH DOUBLE GRAVE */ /* 0211 */ 0xffff, /* LATIN SMALL LETTER R WITH DOUBLE GRAVE */ /* 0212 */ 0xffff, /* LATIN CAPITAL LETTER R WITH INVERTED BREVE */ /* 0213 */ 0xffff, /* LATIN SMALL LETTER R WITH INVERTED BREVE */ /* 0214 */ 0xffff, /* LATIN CAPITAL LETTER U WITH DOUBLE GRAVE */ /* 0215 */ 0xffff, /* LATIN SMALL LETTER U WITH DOUBLE GRAVE */ /* 0216 */ 0xffff, /* LATIN CAPITAL LETTER U WITH INVERTED BREVE */ /* 0217 */ 0xffff, /* LATIN SMALL LETTER U WITH INVERTED BREVE */ /* 0218 */ 0xffff, /* LATIN CAPITAL LETTER S WITH COMMA BELOW */ /* 0219 */ 0xffff, /* LATIN SMALL LETTER S WITH COMMA BELOW */ /* 021a */ 0xffff, /* LATIN CAPITAL LETTER T WITH COMMA BELOW */ /* 021b */ 0xffff, /* LATIN SMALL LETTER T WITH COMMA BELOW */ /* 021c */ 0xffff, /* LATIN CAPITAL LETTER YOGH */ /* 021d */ 0xffff, /* LATIN SMALL LETTER YOGH */ /* 021e */ 0xffff, /* LATIN CAPITAL LETTER H WITH CARON */ /* 021f */ 0xffff, /* LATIN SMALL LETTER H WITH CARON */ /* 0220 */ 0xffff, /* LATIN CAPITAL LETTER N WITH LONG RIGHT LEG */ /* 0221 */ 0xffff, /* LATIN SMALL LETTER D WITH CURL */ /* 0222 */ 0xffff, /* LATIN CAPITAL LETTER OU */ /* 0223 */ 0xffff, /* LATIN SMALL LETTER OU */ /* 0224 */ 0xffff, /* LATIN CAPITAL LETTER Z WITH HOOK */ /* 0225 */ 0xffff, /* LATIN SMALL LETTER Z WITH HOOK */ /* 0226 */ 0xffff, /* LATIN CAPITAL LETTER A WITH DOT ABOVE */ /* 0227 */ 0xffff, /* LATIN SMALL LETTER A WITH DOT ABOVE */ /* 0228 */ 0xffff, /* LATIN CAPITAL LETTER E WITH CEDILLA */ /* 0229 */ 0xffff, /* LATIN SMALL LETTER E WITH CEDILLA */ /* 022a */ 0xffff, /* LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON */ /* 022b */ 0xffff, /* LATIN SMALL LETTER O WITH DIAERESIS AND MACRON */ /* 022c */ 0xffff, /* LATIN CAPITAL LETTER O WITH TILDE AND MACRON */ /* 022d */ 0xffff, /* LATIN SMALL LETTER O WITH TILDE AND MACRON */ /* 022e */ 0xffff, /* LATIN CAPITAL LETTER O WITH DOT ABOVE */ /* 022f */ 0xffff, /* LATIN SMALL LETTER O WITH DOT ABOVE */ /* 0230 */ 0xffff, /* LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON */ /* 0231 */ 0xffff, /* LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON */ /* 0232 */ 0xffff, /* LATIN CAPITAL LETTER Y WITH MACRON */ /* 0233 */ 0xffff, /* LATIN SMALL LETTER Y WITH MACRON */ /* 0234 */ 0xffff, /* LATIN SMALL LETTER L WITH CURL */ /* 0235 */ 0xffff, /* LATIN SMALL LETTER N WITH CURL */ /* 0236 */ 0xffff, /* LATIN SMALL LETTER T WITH CURL */ /* 0237 */ 0xffff, /* LATIN SMALL LETTER DOTLESS J */ /* 0238 */ 0xffff, /* LATIN SMALL LETTER DB DIGRAPH */ /* 0239 */ 0xffff, /* LATIN SMALL LETTER QP DIGRAPH */ /* 023a */ 0xffff, /* LATIN CAPITAL LETTER A WITH STROKE */ /* 023b */ 0xffff, /* LATIN CAPITAL LETTER C WITH STROKE */ /* 023c */ 0xffff, /* LATIN SMALL LETTER C WITH STROKE */ /* 023d */ 0xffff, /* LATIN CAPITAL LETTER L WITH BAR */ /* 023e */ 0xffff, /* LATIN CAPITAL LETTER T WITH DIAGONAL STROKE */ /* 023f */ 0xffff, /* LATIN SMALL LETTER S WITH SWASH TAIL */ /* 0240 */ 0xffff, /* LATIN SMALL LETTER Z WITH SWASH TAIL */ /* 0241 */ 0xffff, /* LATIN CAPITAL LETTER GLOTTAL STOP */ /* 0242 */ 0xffff, /* LATIN SMALL LETTER GLOTTAL STOP */ /* 0243 */ 0xffff, /* LATIN CAPITAL LETTER B WITH STROKE */ /* 0244 */ 0xffff, /* LATIN CAPITAL LETTER U BAR */ /* 0245 */ 0xffff, /* LATIN CAPITAL LETTER TURNED V */ /* 0246 */ 0xffff, /* LATIN CAPITAL LETTER E WITH STROKE */ /* 0247 */ 0xffff, /* LATIN SMALL LETTER E WITH STROKE */ /* 0248 */ 0xffff, /* LATIN CAPITAL LETTER J WITH STROKE */ /* 0249 */ 0xffff, /* LATIN SMALL LETTER J WITH STROKE */ /* 024a */ 0xffff, /* LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL */ /* 024b */ 0xffff, /* LATIN SMALL LETTER Q WITH HOOK TAIL */ /* 024c */ 0xffff, /* LATIN CAPITAL LETTER R WITH STROKE */ /* 024d */ 0xffff, /* LATIN SMALL LETTER R WITH STROKE */ /* 024e */ 0xffff, /* LATIN CAPITAL LETTER Y WITH STROKE */ /* 024f */ 0xffff, /* LATIN SMALL LETTER Y WITH STROKE */ /* 0250 */ 0xffff, /* LATIN SMALL LETTER TURNED A */ /* 0251 */ 0xffff, /* LATIN SMALL LETTER ALPHA */ /* 0252 */ 0xffff, /* LATIN SMALL LETTER TURNED ALPHA */ /* 0253 */ 0xffff, /* LATIN SMALL LETTER B WITH HOOK */ /* 0254 */ 0xffff, /* LATIN SMALL LETTER OPEN O */ /* 0255 */ 0xffff, /* LATIN SMALL LETTER C WITH CURL */ /* 0256 */ 0xffff, /* LATIN SMALL LETTER D WITH TAIL */ /* 0257 */ 0xffff, /* LATIN SMALL LETTER D WITH HOOK */ /* 0258 */ 0xffff, /* LATIN SMALL LETTER REVERSED E */ /* 0259 */ 0xffff, /* LATIN SMALL LETTER SCHWA */ /* 025a */ 0xffff, /* LATIN SMALL LETTER SCHWA WITH HOOK */ /* 025b */ 0xffff, /* LATIN SMALL LETTER OPEN E */ /* 025c */ 0xffff, /* LATIN SMALL LETTER REVERSED OPEN E */ /* 025d */ 0xffff, /* LATIN SMALL LETTER REVERSED OPEN E WITH HOOK */ /* 025e */ 0xffff, /* LATIN SMALL LETTER CLOSED REVERSED OPEN E */ /* 025f */ 0xffff, /* LATIN SMALL LETTER DOTLESS J WITH STROKE */ /* 0260 */ 0xffff, /* LATIN SMALL LETTER G WITH HOOK */ /* 0261 */ 0xffff, /* LATIN SMALL LETTER SCRIPT G */ /* 0262 */ 0xffff, /* LATIN LETTER SMALL CAPITAL G */ /* 0263 */ 0xffff, /* LATIN SMALL LETTER GAMMA */ /* 0264 */ 0xffff, /* LATIN SMALL LETTER RAMS HORN */ /* 0265 */ 0xffff, /* LATIN SMALL LETTER TURNED H */ /* 0266 */ 0xffff, /* LATIN SMALL LETTER H WITH HOOK */ /* 0267 */ 0xffff, /* LATIN SMALL LETTER HENG WITH HOOK */ /* 0268 */ 0xffff, /* LATIN SMALL LETTER I WITH STROKE */ /* 0269 */ 0xffff, /* LATIN SMALL LETTER IOTA */ /* 026a */ 0xffff, /* LATIN LETTER SMALL CAPITAL I */ /* 026b */ 0xffff, /* LATIN SMALL LETTER L WITH MIDDLE TILDE */ /* 026c */ 0xffff, /* LATIN SMALL LETTER L WITH BELT */ /* 026d */ 0xffff, /* LATIN SMALL LETTER L WITH RETROFLEX HOOK */ /* 026e */ 0xffff, /* LATIN SMALL LETTER LEZH */ /* 026f */ 0xffff, /* LATIN SMALL LETTER TURNED M */ /* 0270 */ 0xffff, /* LATIN SMALL LETTER TURNED M WITH LONG LEG */ /* 0271 */ 0xffff, /* LATIN SMALL LETTER M WITH HOOK */ /* 0272 */ 0xffff, /* LATIN SMALL LETTER N WITH LEFT HOOK */ /* 0273 */ 0xffff, /* LATIN SMALL LETTER N WITH RETROFLEX HOOK */ /* 0274 */ 0xffff, /* LATIN LETTER SMALL CAPITAL N */ /* 0275 */ 0xffff, /* LATIN SMALL LETTER BARRED O */ /* 0276 */ 0xffff, /* LATIN LETTER SMALL CAPITAL OE */ /* 0277 */ 0xffff, /* LATIN SMALL LETTER CLOSED OMEGA */ /* 0278 */ 0xffff, /* LATIN SMALL LETTER PHI */ /* 0279 */ 0xffff, /* LATIN SMALL LETTER TURNED R */ /* 027a */ 0xffff, /* LATIN SMALL LETTER TURNED R WITH LONG LEG */ /* 027b */ 0xffff, /* LATIN SMALL LETTER TURNED R WITH HOOK */ /* 027c */ 0xffff, /* LATIN SMALL LETTER R WITH LONG LEG */ /* 027d */ 0xffff, /* LATIN SMALL LETTER R WITH TAIL */ /* 027e */ 0xffff, /* LATIN SMALL LETTER R WITH FISHHOOK */ /* 027f */ 0xffff, /* LATIN SMALL LETTER REVERSED R WITH FISHHOOK */ /* 0280 */ 0xffff, /* LATIN LETTER SMALL CAPITAL R */ /* 0281 */ 0xffff, /* LATIN LETTER SMALL CAPITAL INVERTED R */ /* 0282 */ 0xffff, /* LATIN SMALL LETTER S WITH HOOK */ /* 0283 */ 0xffff, /* LATIN SMALL LETTER ESH */ /* 0284 */ 0xffff, /* LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK */ /* 0285 */ 0xffff, /* LATIN SMALL LETTER SQUAT REVERSED ESH */ /* 0286 */ 0xffff, /* LATIN SMALL LETTER ESH WITH CURL */ /* 0287 */ 0xffff, /* LATIN SMALL LETTER TURNED T */ /* 0288 */ 0xffff, /* LATIN SMALL LETTER T WITH RETROFLEX HOOK */ /* 0289 */ 0xffff, /* LATIN SMALL LETTER U BAR */ /* 028a */ 0xffff, /* LATIN SMALL LETTER UPSILON */ /* 028b */ 0xffff, /* LATIN SMALL LETTER V WITH HOOK */ /* 028c */ 0xffff, /* LATIN SMALL LETTER TURNED V */ /* 028d */ 0xffff, /* LATIN SMALL LETTER TURNED W */ /* 028e */ 0xffff, /* LATIN SMALL LETTER TURNED Y */ /* 028f */ 0xffff, /* LATIN LETTER SMALL CAPITAL Y */ /* 0290 */ 0xffff, /* LATIN SMALL LETTER Z WITH RETROFLEX HOOK */ /* 0291 */ 0xffff, /* LATIN SMALL LETTER Z WITH CURL */ /* 0292 */ 0xffff, /* LATIN SMALL LETTER EZH */ /* 0293 */ 0xffff, /* LATIN SMALL LETTER EZH WITH CURL */ /* 0294 */ 0xffff, /* LATIN LETTER GLOTTAL STOP */ /* 0295 */ 0xffff, /* LATIN LETTER PHARYNGEAL VOICED FRICATIVE */ /* 0296 */ 0xffff, /* LATIN LETTER INVERTED GLOTTAL STOP */ /* 0297 */ 0xffff, /* LATIN LETTER STRETCHED C */ /* 0298 */ 0xffff, /* LATIN LETTER BILABIAL CLICK */ /* 0299 */ 0xffff, /* LATIN LETTER SMALL CAPITAL B */ /* 029a */ 0xffff, /* LATIN SMALL LETTER CLOSED OPEN E */ /* 029b */ 0xffff, /* LATIN LETTER SMALL CAPITAL G WITH HOOK */ /* 029c */ 0xffff, /* LATIN LETTER SMALL CAPITAL H */ /* 029d */ 0xffff, /* LATIN SMALL LETTER J WITH CROSSED-TAIL */ /* 029e */ 0xffff, /* LATIN SMALL LETTER TURNED K */ /* 029f */ 0xffff, /* LATIN LETTER SMALL CAPITAL L */ /* 02a0 */ 0xffff, /* LATIN SMALL LETTER Q WITH HOOK */ /* 02a1 */ 0xffff, /* LATIN LETTER GLOTTAL STOP WITH STROKE */ /* 02a2 */ 0xffff, /* LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE */ /* 02a3 */ 0xffff, /* LATIN SMALL LETTER DZ DIGRAPH */ /* 02a4 */ 0xffff, /* LATIN SMALL LETTER DEZH DIGRAPH */ /* 02a5 */ 0xffff, /* LATIN SMALL LETTER DZ DIGRAPH WITH CURL */ /* 02a6 */ 0xffff, /* LATIN SMALL LETTER TS DIGRAPH */ /* 02a7 */ 0xffff, /* LATIN SMALL LETTER TESH DIGRAPH */ /* 02a8 */ 0xffff, /* LATIN SMALL LETTER TC DIGRAPH WITH CURL */ /* 02a9 */ 0xffff, /* LATIN SMALL LETTER FENG DIGRAPH */ /* 02aa */ 0xffff, /* LATIN SMALL LETTER LS DIGRAPH */ /* 02ab */ 0xffff, /* LATIN SMALL LETTER LZ DIGRAPH */ /* 02ac */ 0xffff, /* LATIN LETTER BILABIAL PERCUSSIVE */ /* 02ad */ 0xffff, /* LATIN LETTER BIDENTAL PERCUSSIVE */ /* 02ae */ 0xffff, /* LATIN SMALL LETTER TURNED H WITH FISHHOOK */ /* 02af */ 0xffff, /* LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL */ /* 02b0 */ 0xffff, /* MODIFIER LETTER SMALL H */ /* 02b1 */ 0xffff, /* MODIFIER LETTER SMALL H WITH HOOK */ /* 02b2 */ 0xffff, /* MODIFIER LETTER SMALL J */ /* 02b3 */ 0xffff, /* MODIFIER LETTER SMALL R */ /* 02b4 */ 0xffff, /* MODIFIER LETTER SMALL TURNED R */ /* 02b5 */ 0xffff, /* MODIFIER LETTER SMALL TURNED R WITH HOOK */ /* 02b6 */ 0xffff, /* MODIFIER LETTER SMALL CAPITAL INVERTED R */ /* 02b7 */ 0xffff, /* MODIFIER LETTER SMALL W */ /* 02b8 */ 0xffff, /* MODIFIER LETTER SMALL Y */ /* 02b9 */ 0xffff, /* MODIFIER LETTER PRIME */ /* 02ba */ 0xffff, /* MODIFIER LETTER DOUBLE PRIME */ /* 02bb */ 0xffff, /* MODIFIER LETTER TURNED COMMA */ /* 02bc */ 0xffff, /* MODIFIER LETTER APOSTROPHE */ /* 02bd */ 0xffff, /* MODIFIER LETTER REVERSED COMMA */ /* 02be */ 0xffff, /* MODIFIER LETTER RIGHT HALF RING */ /* 02bf */ 0xffff, /* MODIFIER LETTER LEFT HALF RING */ /* 02c0 */ 0xffff, /* MODIFIER LETTER GLOTTAL STOP */ /* 02c1 */ 0xffff, /* MODIFIER LETTER REVERSED GLOTTAL STOP */ /* 02c2 */ 0xffff, /* MODIFIER LETTER LEFT ARROWHEAD */ /* 02c3 */ 0xffff, /* MODIFIER LETTER RIGHT ARROWHEAD */ /* 02c4 */ 0xffff, /* MODIFIER LETTER UP ARROWHEAD */ /* 02c5 */ 0xffff, /* MODIFIER LETTER DOWN ARROWHEAD */ /* 02c6 */ 0xffff, /* MODIFIER LETTER CIRCUMFLEX ACCENT */ /* 02c7 */ 0x02c7, /* CARON */ /* 02c8 */ 0xffff, /* MODIFIER LETTER VERTICAL LINE */ /* 02c9 */ 0xffff, /* MODIFIER LETTER MACRON */ /* 02ca */ 0xffff, /* MODIFIER LETTER ACUTE ACCENT */ /* 02cb */ 0xffff, /* MODIFIER LETTER GRAVE ACCENT */ /* 02cc */ 0xffff, /* MODIFIER LETTER LOW VERTICAL LINE */ /* 02cd */ 0xffff, /* MODIFIER LETTER LOW MACRON */ /* 02ce */ 0xffff, /* MODIFIER LETTER LOW GRAVE ACCENT */ /* 02cf */ 0xffff, /* MODIFIER LETTER LOW ACUTE ACCENT */ /* 02d0 */ 0xffff, /* MODIFIER LETTER TRIANGULAR COLON */ /* 02d1 */ 0xffff, /* MODIFIER LETTER HALF TRIANGULAR COLON */ /* 02d2 */ 0xffff, /* MODIFIER LETTER CENTRED RIGHT HALF RING */ /* 02d3 */ 0xffff, /* MODIFIER LETTER CENTRED LEFT HALF RING */ /* 02d4 */ 0xffff, /* MODIFIER LETTER UP TACK */ /* 02d5 */ 0xffff, /* MODIFIER LETTER DOWN TACK */ /* 02d6 */ 0xffff, /* MODIFIER LETTER PLUS SIGN */ /* 02d7 */ 0xffff, /* MODIFIER LETTER MINUS SIGN */ /* 02d8 */ 0x02d8, /* BREVE */ /* 02d9 */ 0x02d9, /* DOT ABOVE */ /* 02da */ 0xffff, /* RING ABOVE */ /* 02db */ 0x02db, /* OGONEK */ /* 02dc */ 0xffff, /* SMALL TILDE */ /* 02dd */ 0x02dd, /* DOUBLE ACUTE ACCENT */ /* 02de */ 0xffff, /* MODIFIER LETTER RHOTIC HOOK */ /* 02df */ 0xffff, /* MODIFIER LETTER CROSS ACCENT */ /* 02e0 */ 0xffff, /* MODIFIER LETTER SMALL GAMMA */ /* 02e1 */ 0xffff, /* MODIFIER LETTER SMALL L */ /* 02e2 */ 0xffff, /* MODIFIER LETTER SMALL S */ /* 02e3 */ 0xffff, /* MODIFIER LETTER SMALL X */ /* 02e4 */ 0xffff, /* MODIFIER LETTER SMALL REVERSED GLOTTAL STOP */ /* 02e5 */ 0xffff, /* MODIFIER LETTER EXTRA-HIGH TONE BAR */ /* 02e6 */ 0xffff, /* MODIFIER LETTER HIGH TONE BAR */ /* 02e7 */ 0xffff, /* MODIFIER LETTER MID TONE BAR */ /* 02e8 */ 0xffff, /* MODIFIER LETTER LOW TONE BAR */ /* 02e9 */ 0xffff, /* MODIFIER LETTER EXTRA-LOW TONE BAR */ /* 02ea */ 0xffff, /* MODIFIER LETTER YIN DEPARTING TONE MARK */ /* 02eb */ 0xffff, /* MODIFIER LETTER YANG DEPARTING TONE MARK */ /* 02ec */ 0xffff, /* MODIFIER LETTER VOICING */ /* 02ed */ 0xffff, /* MODIFIER LETTER UNASPIRATED */ /* 02ee */ 0xffff, /* MODIFIER LETTER DOUBLE APOSTROPHE */ /* 02ef */ 0xffff, /* MODIFIER LETTER LOW DOWN ARROWHEAD */ /* 02f0 */ 0xffff, /* MODIFIER LETTER LOW UP ARROWHEAD */ /* 02f1 */ 0xffff, /* MODIFIER LETTER LOW LEFT ARROWHEAD */ /* 02f2 */ 0xffff, /* MODIFIER LETTER LOW RIGHT ARROWHEAD */ /* 02f3 */ 0xffff, /* MODIFIER LETTER LOW RING */ /* 02f4 */ 0xffff, /* MODIFIER LETTER MIDDLE GRAVE ACCENT */ /* 02f5 */ 0xffff, /* MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT */ /* 02f6 */ 0xffff, /* MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT */ /* 02f7 */ 0xffff, /* MODIFIER LETTER LOW TILDE */ /* 02f8 */ 0xffff, /* MODIFIER LETTER RAISED COLON */ /* 02f9 */ 0xffff, /* MODIFIER LETTER BEGIN HIGH TONE */ /* 02fa */ 0xffff, /* MODIFIER LETTER END HIGH TONE */ /* 02fb */ 0xffff, /* MODIFIER LETTER BEGIN LOW TONE */ /* 02fc */ 0xffff, /* MODIFIER LETTER END LOW TONE */ /* 02fd */ 0xffff, /* MODIFIER LETTER SHELF */ /* 02fe */ 0xffff, /* MODIFIER LETTER OPEN SHELF */ /* 02ff */ 0xffff, /* MODIFIER LETTER LOW LEFT ARROW */ /* 0300 */ 0xffff, /* COMBINING GRAVE ACCENT */ /* 0301 */ 0xffff, /* COMBINING ACUTE ACCENT */ /* 0302 */ 0xffff, /* COMBINING CIRCUMFLEX ACCENT */ /* 0303 */ 0xffff, /* COMBINING TILDE */ /* 0304 */ 0xffff, /* COMBINING MACRON */ /* 0305 */ 0xffff, /* COMBINING OVERLINE */ /* 0306 */ 0xffff, /* COMBINING BREVE */ /* 0307 */ 0xffff, /* COMBINING DOT ABOVE */ /* 0308 */ 0xffff, /* COMBINING DIAERESIS */ /* 0309 */ 0xffff, /* COMBINING HOOK ABOVE */ /* 030a */ 0xffff, /* COMBINING RING ABOVE */ /* 030b */ 0xffff, /* COMBINING DOUBLE ACUTE ACCENT */ /* 030c */ 0xffff, /* COMBINING CARON */ /* 030d */ 0xffff, /* COMBINING VERTICAL LINE ABOVE */ /* 030e */ 0xffff, /* COMBINING DOUBLE VERTICAL LINE ABOVE */ /* 030f */ 0xffff, /* COMBINING DOUBLE GRAVE ACCENT */ /* 0310 */ 0xffff, /* COMBINING CANDRABINDU */ /* 0311 */ 0xffff, /* COMBINING INVERTED BREVE */ /* 0312 */ 0xffff, /* COMBINING TURNED COMMA ABOVE */ /* 0313 */ 0xffff, /* COMBINING COMMA ABOVE */ /* 0314 */ 0xffff, /* COMBINING REVERSED COMMA ABOVE */ /* 0315 */ 0xffff, /* COMBINING COMMA ABOVE RIGHT */ /* 0316 */ 0xffff, /* COMBINING GRAVE ACCENT BELOW */ /* 0317 */ 0xffff, /* COMBINING ACUTE ACCENT BELOW */ /* 0318 */ 0xffff, /* COMBINING LEFT TACK BELOW */ /* 0319 */ 0xffff, /* COMBINING RIGHT TACK BELOW */ /* 031a */ 0xffff, /* COMBINING LEFT ANGLE ABOVE */ /* 031b */ 0xffff, /* COMBINING HORN */ /* 031c */ 0xffff, /* COMBINING LEFT HALF RING BELOW */ /* 031d */ 0xffff, /* COMBINING UP TACK BELOW */ /* 031e */ 0xffff, /* COMBINING DOWN TACK BELOW */ /* 031f */ 0xffff, /* COMBINING PLUS SIGN BELOW */ /* 0320 */ 0xffff, /* COMBINING MINUS SIGN BELOW */ /* 0321 */ 0xffff, /* COMBINING PALATALIZED HOOK BELOW */ /* 0322 */ 0xffff, /* COMBINING RETROFLEX HOOK BELOW */ /* 0323 */ 0xffff, /* COMBINING DOT BELOW */ /* 0324 */ 0xffff, /* COMBINING DIAERESIS BELOW */ /* 0325 */ 0xffff, /* COMBINING RING BELOW */ /* 0326 */ 0xffff, /* COMBINING COMMA BELOW */ /* 0327 */ 0xffff, /* COMBINING CEDILLA */ /* 0328 */ 0xffff, /* COMBINING OGONEK */ /* 0329 */ 0xffff, /* COMBINING VERTICAL LINE BELOW */ /* 032a */ 0xffff, /* COMBINING BRIDGE BELOW */ /* 032b */ 0xffff, /* COMBINING INVERTED DOUBLE ARCH BELOW */ /* 032c */ 0xffff, /* COMBINING CARON BELOW */ /* 032d */ 0xffff, /* COMBINING CIRCUMFLEX ACCENT BELOW */ /* 032e */ 0xffff, /* COMBINING BREVE BELOW */ /* 032f */ 0xffff, /* COMBINING INVERTED BREVE BELOW */ /* 0330 */ 0xffff, /* COMBINING TILDE BELOW */ /* 0331 */ 0xffff, /* COMBINING MACRON BELOW */ /* 0332 */ 0xffff, /* COMBINING LOW LINE */ /* 0333 */ 0xffff, /* COMBINING DOUBLE LOW LINE */ /* 0334 */ 0xffff, /* COMBINING TILDE OVERLAY */ /* 0335 */ 0xffff, /* COMBINING SHORT STROKE OVERLAY */ /* 0336 */ 0xffff, /* COMBINING LONG STROKE OVERLAY */ /* 0337 */ 0xffff, /* COMBINING SHORT SOLIDUS OVERLAY */ /* 0338 */ 0xffff, /* COMBINING LONG SOLIDUS OVERLAY */ /* 0339 */ 0xffff, /* COMBINING RIGHT HALF RING BELOW */ /* 033a */ 0xffff, /* COMBINING INVERTED BRIDGE BELOW */ /* 033b */ 0xffff, /* COMBINING SQUARE BELOW */ /* 033c */ 0xffff, /* COMBINING SEAGULL BELOW */ /* 033d */ 0xffff, /* COMBINING X ABOVE */ /* 033e */ 0xffff, /* COMBINING VERTICAL TILDE */ /* 033f */ 0xffff, /* COMBINING DOUBLE OVERLINE */ /* 0340 */ 0xffff, /* COMBINING GRAVE TONE MARK */ /* 0341 */ 0xffff, /* COMBINING ACUTE TONE MARK */ /* 0342 */ 0xffff, /* COMBINING GREEK PERISPOMENI */ /* 0343 */ 0xffff, /* COMBINING GREEK KORONIS */ /* 0344 */ 0xffff, /* COMBINING GREEK DIALYTIKA TONOS */ /* 0345 */ 0xffff, /* COMBINING GREEK YPOGEGRAMMENI */ /* 0346 */ 0xffff, /* COMBINING BRIDGE ABOVE */ /* 0347 */ 0xffff, /* COMBINING EQUALS SIGN BELOW */ /* 0348 */ 0xffff, /* COMBINING DOUBLE VERTICAL LINE BELOW */ /* 0349 */ 0xffff, /* COMBINING LEFT ANGLE BELOW */ /* 034a */ 0xffff, /* COMBINING NOT TILDE ABOVE */ /* 034b */ 0xffff, /* COMBINING HOMOTHETIC ABOVE */ /* 034c */ 0xffff, /* COMBINING ALMOST EQUAL TO ABOVE */ /* 034d */ 0xffff, /* COMBINING LEFT RIGHT ARROW BELOW */ /* 034e */ 0xffff, /* COMBINING UPWARDS ARROW BELOW */ /* 034f */ 0xffff, /* COMBINING GRAPHEME JOINER */ /* 0350 */ 0xffff, /* COMBINING RIGHT ARROWHEAD ABOVE */ /* 0351 */ 0xffff, /* COMBINING LEFT HALF RING ABOVE */ /* 0352 */ 0xffff, /* COMBINING FERMATA */ /* 0353 */ 0xffff, /* COMBINING X BELOW */ /* 0354 */ 0xffff, /* COMBINING LEFT ARROWHEAD BELOW */ /* 0355 */ 0xffff, /* COMBINING RIGHT ARROWHEAD BELOW */ /* 0356 */ 0xffff, /* COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW */ /* 0357 */ 0xffff, /* COMBINING RIGHT HALF RING ABOVE */ /* 0358 */ 0xffff, /* COMBINING DOT ABOVE RIGHT */ /* 0359 */ 0xffff, /* COMBINING ASTERISK BELOW */ /* 035a */ 0xffff, /* COMBINING DOUBLE RING BELOW */ /* 035b */ 0xffff, /* COMBINING ZIGZAG ABOVE */ /* 035c */ 0xffff, /* COMBINING DOUBLE BREVE BELOW */ /* 035d */ 0xffff, /* COMBINING DOUBLE BREVE */ /* 035e */ 0xffff, /* COMBINING DOUBLE MACRON */ /* 035f */ 0xffff, /* COMBINING DOUBLE MACRON BELOW */ /* 0360 */ 0xffff, /* COMBINING DOUBLE TILDE */ /* 0361 */ 0xffff, /* COMBINING DOUBLE INVERTED BREVE */ /* 0362 */ 0xffff, /* COMBINING DOUBLE RIGHTWARDS ARROW BELOW */ /* 0363 */ 0xffff, /* COMBINING LATIN SMALL LETTER A */ /* 0364 */ 0xffff, /* COMBINING LATIN SMALL LETTER E */ /* 0365 */ 0xffff, /* COMBINING LATIN SMALL LETTER I */ /* 0366 */ 0xffff, /* COMBINING LATIN SMALL LETTER O */ /* 0367 */ 0xffff, /* COMBINING LATIN SMALL LETTER U */ /* 0368 */ 0xffff, /* COMBINING LATIN SMALL LETTER C */ /* 0369 */ 0xffff, /* COMBINING LATIN SMALL LETTER D */ /* 036a */ 0xffff, /* COMBINING LATIN SMALL LETTER H */ /* 036b */ 0xffff, /* COMBINING LATIN SMALL LETTER M */ /* 036c */ 0xffff, /* COMBINING LATIN SMALL LETTER R */ /* 036d */ 0xffff, /* COMBINING LATIN SMALL LETTER T */ /* 036e */ 0xffff, /* COMBINING LATIN SMALL LETTER V */ /* 036f */ 0xffff, /* COMBINING LATIN SMALL LETTER X */ /* 0370 */ 0xffff, /* GREEK CAPITAL LETTER HETA */ /* 0371 */ 0xffff, /* GREEK SMALL LETTER HETA */ /* 0372 */ 0xffff, /* GREEK CAPITAL LETTER ARCHAIC SAMPI */ /* 0373 */ 0xffff, /* GREEK SMALL LETTER ARCHAIC SAMPI */ /* 0374 */ 0xffff, /* GREEK NUMERAL SIGN */ /* 0375 */ 0xffff, /* GREEK LOWER NUMERAL SIGN */ /* 0376 */ 0xffff, /* GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA */ /* 0377 */ 0xffff, /* GREEK SMALL LETTER PAMPHYLIAN DIGAMMA */ /* 0378 */ 0xffff, /* 0379 */ 0xffff, /* 037a */ 0xffff, /* GREEK YPOGEGRAMMENI */ /* 037b */ 0xffff, /* GREEK SMALL REVERSED LUNATE SIGMA SYMBOL */ /* 037c */ 0xffff, /* GREEK SMALL DOTTED LUNATE SIGMA SYMBOL */ /* 037d */ 0xffff, /* GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL */ /* 037e */ 0xffff, /* GREEK QUESTION MARK */ /* 037f */ 0xffff, /* GREEK CAPITAL LETTER YOT */ /* 0380 */ 0xffff, /* 0381 */ 0xffff, /* 0382 */ 0xffff, /* 0383 */ 0xffff, /* 0384 */ 0x0384, /* GREEK TONOS */ /* 0385 */ 0x0385, /* GREEK DIALYTIKA TONOS */ /* 0386 */ 0x0386, /* GREEK CAPITAL LETTER ALPHA WITH TONOS */ /* 0387 */ 0x0387, /* GREEK ANO TELEIA */ /* 0388 */ 0x0388, /* GREEK CAPITAL LETTER EPSILON WITH TONOS */ /* 0389 */ 0x0389, /* GREEK CAPITAL LETTER ETA WITH TONOS */ /* 038a */ 0x038a, /* GREEK CAPITAL LETTER IOTA WITH TONOS */ /* 038b */ 0xffff, /* 038c */ 0x038c, /* GREEK CAPITAL LETTER OMICRON WITH TONOS */ /* 038d */ 0xffff, /* 038e */ 0x038e, /* GREEK CAPITAL LETTER UPSILON WITH TONOS */ /* 038f */ 0x038f, /* GREEK CAPITAL LETTER OMEGA WITH TONOS */ /* 0390 */ 0x0390, /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ /* 0391 */ 0x0391, /* GREEK CAPITAL LETTER ALPHA */ /* 0392 */ 0x0392, /* GREEK CAPITAL LETTER BETA */ /* 0393 */ 0x00e2, /* GREEK CAPITAL LETTER GAMMA */ /* 0394 */ 0x0394, /* GREEK CAPITAL LETTER DELTA */ /* 0395 */ 0x0395, /* GREEK CAPITAL LETTER EPSILON */ /* 0396 */ 0x0396, /* GREEK CAPITAL LETTER ZETA */ /* 0397 */ 0x0397, /* GREEK CAPITAL LETTER ETA */ /* 0398 */ 0x00e9, /* GREEK CAPITAL LETTER THETA */ /* 0399 */ 0x0399, /* GREEK CAPITAL LETTER IOTA */ /* 039a */ 0x039a, /* GREEK CAPITAL LETTER KAPPA */ /* 039b */ 0x039b, /* GREEK CAPITAL LETTER LAMDA */ /* 039c */ 0x039c, /* GREEK CAPITAL LETTER MU */ /* 039d */ 0x039d, /* GREEK CAPITAL LETTER NU */ /* 039e */ 0x039e, /* GREEK CAPITAL LETTER XI */ /* 039f */ 0x039f, /* GREEK CAPITAL LETTER OMICRON */ /* 03a0 */ 0x03a0, /* GREEK CAPITAL LETTER PI */ /* 03a1 */ 0x03a1, /* GREEK CAPITAL LETTER RHO */ /* 03a2 */ 0xffff, /* 03a3 */ 0x00e4, /* GREEK CAPITAL LETTER SIGMA */ /* 03a4 */ 0x03a4, /* GREEK CAPITAL LETTER TAU */ /* 03a5 */ 0x03a5, /* GREEK CAPITAL LETTER UPSILON */ /* 03a6 */ 0x00e8, /* GREEK CAPITAL LETTER PHI */ /* 03a7 */ 0x03a7, /* GREEK CAPITAL LETTER CHI */ /* 03a8 */ 0x03a8, /* GREEK CAPITAL LETTER PSI */ /* 03a9 */ 0x00ea, /* GREEK CAPITAL LETTER OMEGA */ /* 03aa */ 0x03aa, /* GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */ /* 03ab */ 0x03ab, /* GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */ /* 03ac */ 0x03ac, /* GREEK SMALL LETTER ALPHA WITH TONOS */ /* 03ad */ 0x03ad, /* GREEK SMALL LETTER EPSILON WITH TONOS */ /* 03ae */ 0x03ae, /* GREEK SMALL LETTER ETA WITH TONOS */ /* 03af */ 0x03af, /* GREEK SMALL LETTER IOTA WITH TONOS */ /* 03b0 */ 0x03b0, /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ /* 03b1 */ 0x00e0, /* GREEK SMALL LETTER ALPHA */ /* 03b2 */ 0x00e1, /* GREEK SMALL LETTER BETA */ /* 03b3 */ 0x03b3, /* GREEK SMALL LETTER GAMMA */ /* 03b4 */ 0x00eb, /* GREEK SMALL LETTER DELTA */ /* 03b5 */ 0x03b5, /* GREEK SMALL LETTER EPSILON */ /* 03b6 */ 0x03b6, /* GREEK SMALL LETTER ZETA */ /* 03b7 */ 0x03b7, /* GREEK SMALL LETTER ETA */ /* 03b8 */ 0x03b8, /* GREEK SMALL LETTER THETA */ /* 03b9 */ 0x03b9, /* GREEK SMALL LETTER IOTA */ /* 03ba */ 0x03ba, /* GREEK SMALL LETTER KAPPA */ /* 03bb */ 0x03bb, /* GREEK SMALL LETTER LAMDA */ /* 03bc */ 0x00e6, /* GREEK SMALL LETTER MU */ /* 03bd */ 0x03bd, /* GREEK SMALL LETTER NU */ /* 03be */ 0x03be, /* GREEK SMALL LETTER XI */ /* 03bf */ 0x03bf, /* GREEK SMALL LETTER OMICRON */ /* 03c0 */ 0x00e3, /* GREEK SMALL LETTER PI */ /* 03c1 */ 0x03c1, /* GREEK SMALL LETTER RHO */ /* 03c2 */ 0x03c2, /* GREEK SMALL LETTER FINAL SIGMA */ /* 03c3 */ 0x00e5, /* GREEK SMALL LETTER SIGMA */ /* 03c4 */ 0x00e7, /* GREEK SMALL LETTER TAU */ /* 03c5 */ 0x03c5, /* GREEK SMALL LETTER UPSILON */ /* 03c6 */ 0x00ed, /* GREEK SMALL LETTER PHI */ /* 03c7 */ 0x03c7, /* GREEK SMALL LETTER CHI */ /* 03c8 */ 0x03c8, /* GREEK SMALL LETTER PSI */ /* 03c9 */ 0x03c9, /* GREEK SMALL LETTER OMEGA */ /* 03ca */ 0x03ca, /* GREEK SMALL LETTER IOTA WITH DIALYTIKA */ /* 03cb */ 0x03cb, /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ /* 03cc */ 0x03cc, /* GREEK SMALL LETTER OMICRON WITH TONOS */ /* 03cd */ 0x03cd, /* GREEK SMALL LETTER UPSILON WITH TONOS */ /* 03ce */ 0x03ce, /* GREEK SMALL LETTER OMEGA WITH TONOS */ /* 03cf */ 0xffff, /* GREEK CAPITAL KAI SYMBOL */ /* 03d0 */ 0x03d0, /* GREEK BETA SYMBOL */ /* 03d1 */ 0x03d1, /* GREEK THETA SYMBOL */ /* 03d2 */ 0xffff, /* GREEK UPSILON WITH HOOK SYMBOL */ /* 03d3 */ 0xffff, /* GREEK UPSILON WITH ACUTE AND HOOK SYMBOL */ /* 03d4 */ 0xffff, /* GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL */ /* 03d5 */ 0xffff, /* GREEK PHI SYMBOL */ /* 03d6 */ 0xffff, /* GREEK PI SYMBOL */ /* 03d7 */ 0xffff, /* GREEK KAI SYMBOL */ /* 03d8 */ 0xffff, /* GREEK LETTER ARCHAIC KOPPA */ /* 03d9 */ 0xffff, /* GREEK SMALL LETTER ARCHAIC KOPPA */ /* 03da */ 0xffff, /* GREEK LETTER STIGMA */ /* 03db */ 0xffff, /* GREEK SMALL LETTER STIGMA */ /* 03dc */ 0xffff, /* GREEK LETTER DIGAMMA */ /* 03dd */ 0xffff, /* GREEK SMALL LETTER DIGAMMA */ /* 03de */ 0xffff, /* GREEK LETTER KOPPA */ /* 03df */ 0xffff, /* GREEK SMALL LETTER KOPPA */ /* 03e0 */ 0xffff, /* GREEK LETTER SAMPI */ /* 03e1 */ 0xffff, /* GREEK SMALL LETTER SAMPI */ /* 03e2 */ 0xffff, /* COPTIC CAPITAL LETTER SHEI */ /* 03e3 */ 0xffff, /* COPTIC SMALL LETTER SHEI */ /* 03e4 */ 0xffff, /* COPTIC CAPITAL LETTER FEI */ /* 03e5 */ 0xffff, /* COPTIC SMALL LETTER FEI */ /* 03e6 */ 0xffff, /* COPTIC CAPITAL LETTER KHEI */ /* 03e7 */ 0xffff, /* COPTIC SMALL LETTER KHEI */ /* 03e8 */ 0xffff, /* COPTIC CAPITAL LETTER HORI */ /* 03e9 */ 0xffff, /* COPTIC SMALL LETTER HORI */ /* 03ea */ 0xffff, /* COPTIC CAPITAL LETTER GANGIA */ /* 03eb */ 0xffff, /* COPTIC SMALL LETTER GANGIA */ /* 03ec */ 0xffff, /* COPTIC CAPITAL LETTER SHIMA */ /* 03ed */ 0xffff, /* COPTIC SMALL LETTER SHIMA */ /* 03ee */ 0xffff, /* COPTIC CAPITAL LETTER DEI */ /* 03ef */ 0xffff, /* COPTIC SMALL LETTER DEI */ /* 03f0 */ 0xffff, /* GREEK KAPPA SYMBOL */ /* 03f1 */ 0xffff, /* GREEK RHO SYMBOL */ /* 03f2 */ 0xffff, /* GREEK LUNATE SIGMA SYMBOL */ /* 03f3 */ 0xffff, /* GREEK LETTER YOT */ /* 03f4 */ 0xffff, /* GREEK CAPITAL THETA SYMBOL */ /* 03f5 */ 0xffff, /* GREEK LUNATE EPSILON SYMBOL */ /* 03f6 */ 0xffff, /* GREEK REVERSED LUNATE EPSILON SYMBOL */ /* 03f7 */ 0xffff, /* GREEK CAPITAL LETTER SHO */ /* 03f8 */ 0xffff, /* GREEK SMALL LETTER SHO */ /* 03f9 */ 0xffff, /* GREEK CAPITAL LUNATE SIGMA SYMBOL */ /* 03fa */ 0xffff, /* GREEK CAPITAL LETTER SAN */ /* 03fb */ 0xffff, /* GREEK SMALL LETTER SAN */ /* 03fc */ 0xffff, /* GREEK RHO WITH STROKE SYMBOL */ /* 03fd */ 0xffff, /* GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL */ /* 03fe */ 0xffff, /* GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL */ /* 03ff */ 0xffff, /* GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL */ /* 0400 */ 0x0400, /* CYRILLIC CAPITAL LETTER IE WITH GRAVE */ /* 0401 */ 0x0401, /* CYRILLIC CAPITAL LETTER IO */ /* 0402 */ 0x0402, /* CYRILLIC CAPITAL LETTER DJE */ /* 0403 */ 0x0403, /* CYRILLIC CAPITAL LETTER GJE */ /* 0404 */ 0x0404, /* CYRILLIC CAPITAL LETTER UKRAINIAN IE */ /* 0405 */ 0x0405, /* CYRILLIC CAPITAL LETTER DZE */ /* 0406 */ 0x0406, /* CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ /* 0407 */ 0x0407, /* CYRILLIC CAPITAL LETTER YI */ /* 0408 */ 0x0408, /* CYRILLIC CAPITAL LETTER JE */ /* 0409 */ 0x0409, /* CYRILLIC CAPITAL LETTER LJE */ /* 040a */ 0x040a, /* CYRILLIC CAPITAL LETTER NJE */ /* 040b */ 0x040b, /* CYRILLIC CAPITAL LETTER TSHE */ /* 040c */ 0x040c, /* CYRILLIC CAPITAL LETTER KJE */ /* 040d */ 0x040d, /* CYRILLIC CAPITAL LETTER I WITH GRAVE */ /* 040e */ 0x040e, /* CYRILLIC CAPITAL LETTER SHORT U */ /* 040f */ 0x040f, /* CYRILLIC CAPITAL LETTER DZHE */ /* 0410 */ 0x0410, /* CYRILLIC CAPITAL LETTER A */ /* 0411 */ 0x0411, /* CYRILLIC CAPITAL LETTER BE */ /* 0412 */ 0x0412, /* CYRILLIC CAPITAL LETTER VE */ /* 0413 */ 0x0413, /* CYRILLIC CAPITAL LETTER GHE */ /* 0414 */ 0x0414, /* CYRILLIC CAPITAL LETTER DE */ /* 0415 */ 0x0415, /* CYRILLIC CAPITAL LETTER IE */ /* 0416 */ 0x0416, /* CYRILLIC CAPITAL LETTER ZHE */ /* 0417 */ 0x0417, /* CYRILLIC CAPITAL LETTER ZE */ /* 0418 */ 0x0418, /* CYRILLIC CAPITAL LETTER I */ /* 0419 */ 0x0419, /* CYRILLIC CAPITAL LETTER SHORT I */ /* 041a */ 0x041a, /* CYRILLIC CAPITAL LETTER KA */ /* 041b */ 0x041b, /* CYRILLIC CAPITAL LETTER EL */ /* 041c */ 0x041c, /* CYRILLIC CAPITAL LETTER EM */ /* 041d */ 0x041d, /* CYRILLIC CAPITAL LETTER EN */ /* 041e */ 0x041e, /* CYRILLIC CAPITAL LETTER O */ /* 041f */ 0x041f, /* CYRILLIC CAPITAL LETTER PE */ /* 0420 */ 0x0420, /* CYRILLIC CAPITAL LETTER ER */ /* 0421 */ 0x0421, /* CYRILLIC CAPITAL LETTER ES */ /* 0422 */ 0x0422, /* CYRILLIC CAPITAL LETTER TE */ /* 0423 */ 0x0423, /* CYRILLIC CAPITAL LETTER U */ /* 0424 */ 0x0424, /* CYRILLIC CAPITAL LETTER EF */ /* 0425 */ 0x0425, /* CYRILLIC CAPITAL LETTER HA */ /* 0426 */ 0x0426, /* CYRILLIC CAPITAL LETTER TSE */ /* 0427 */ 0x0427, /* CYRILLIC CAPITAL LETTER CHE */ /* 0428 */ 0x0428, /* CYRILLIC CAPITAL LETTER SHA */ /* 0429 */ 0x0429, /* CYRILLIC CAPITAL LETTER SHCHA */ /* 042a */ 0x042a, /* CYRILLIC CAPITAL LETTER HARD SIGN */ /* 042b */ 0x042b, /* CYRILLIC CAPITAL LETTER YERU */ /* 042c */ 0x042c, /* CYRILLIC CAPITAL LETTER SOFT SIGN */ /* 042d */ 0x042d, /* CYRILLIC CAPITAL LETTER E */ /* 042e */ 0x042e, /* CYRILLIC CAPITAL LETTER YU */ /* 042f */ 0x042f, /* CYRILLIC CAPITAL LETTER YA */ /* 0430 */ 0x0430, /* CYRILLIC SMALL LETTER A */ /* 0431 */ 0x0431, /* CYRILLIC SMALL LETTER BE */ /* 0432 */ 0x0432, /* CYRILLIC SMALL LETTER VE */ /* 0433 */ 0x0433, /* CYRILLIC SMALL LETTER GHE */ /* 0434 */ 0x0434, /* CYRILLIC SMALL LETTER DE */ /* 0435 */ 0x0435, /* CYRILLIC SMALL LETTER IE */ /* 0436 */ 0x0436, /* CYRILLIC SMALL LETTER ZHE */ /* 0437 */ 0x0437, /* CYRILLIC SMALL LETTER ZE */ /* 0438 */ 0x0438, /* CYRILLIC SMALL LETTER I */ /* 0439 */ 0x0439, /* CYRILLIC SMALL LETTER SHORT I */ /* 043a */ 0x043a, /* CYRILLIC SMALL LETTER KA */ /* 043b */ 0x043b, /* CYRILLIC SMALL LETTER EL */ /* 043c */ 0x043c, /* CYRILLIC SMALL LETTER EM */ /* 043d */ 0x043d, /* CYRILLIC SMALL LETTER EN */ /* 043e */ 0x043e, /* CYRILLIC SMALL LETTER O */ /* 043f */ 0x043f, /* CYRILLIC SMALL LETTER PE */ /* 0440 */ 0x0440, /* CYRILLIC SMALL LETTER ER */ /* 0441 */ 0x0441, /* CYRILLIC SMALL LETTER ES */ /* 0442 */ 0x0442, /* CYRILLIC SMALL LETTER TE */ /* 0443 */ 0x0443, /* CYRILLIC SMALL LETTER U */ /* 0444 */ 0x0444, /* CYRILLIC SMALL LETTER EF */ /* 0445 */ 0x0445, /* CYRILLIC SMALL LETTER HA */ /* 0446 */ 0x0446, /* CYRILLIC SMALL LETTER TSE */ /* 0447 */ 0x0447, /* CYRILLIC SMALL LETTER CHE */ /* 0448 */ 0x0448, /* CYRILLIC SMALL LETTER SHA */ /* 0449 */ 0x0449, /* CYRILLIC SMALL LETTER SHCHA */ /* 044a */ 0x044a, /* CYRILLIC SMALL LETTER HARD SIGN */ /* 044b */ 0x044b, /* CYRILLIC SMALL LETTER YERU */ /* 044c */ 0x044c, /* CYRILLIC SMALL LETTER SOFT SIGN */ /* 044d */ 0x044d, /* CYRILLIC SMALL LETTER E */ /* 044e */ 0x044e, /* CYRILLIC SMALL LETTER YU */ /* 044f */ 0x044f, /* CYRILLIC SMALL LETTER YA */ /* 0450 */ 0xffff, /* CYRILLIC SMALL LETTER IE WITH GRAVE */ /* 0451 */ 0xffff, /* CYRILLIC SMALL LETTER IO */ /* 0452 */ 0xffff, /* CYRILLIC SMALL LETTER DJE */ /* 0453 */ 0xffff, /* CYRILLIC SMALL LETTER GJE */ /* 0454 */ 0xffff, /* CYRILLIC SMALL LETTER UKRAINIAN IE */ /* 0455 */ 0xffff, /* CYRILLIC SMALL LETTER DZE */ /* 0456 */ 0xffff, /* CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ /* 0457 */ 0xffff, /* CYRILLIC SMALL LETTER YI */ /* 0458 */ 0xffff, /* CYRILLIC SMALL LETTER JE */ /* 0459 */ 0xffff, /* CYRILLIC SMALL LETTER LJE */ /* 045a */ 0xffff, /* CYRILLIC SMALL LETTER NJE */ /* 045b */ 0xffff, /* CYRILLIC SMALL LETTER TSHE */ /* 045c */ 0xffff, /* CYRILLIC SMALL LETTER KJE */ /* 045d */ 0xffff, /* CYRILLIC SMALL LETTER I WITH GRAVE */ /* 045e */ 0xffff, /* CYRILLIC SMALL LETTER SHORT U */ /* 045f */ 0xffff, /* CYRILLIC SMALL LETTER DZHE */ /* 0460 */ 0xffff, /* CYRILLIC CAPITAL LETTER OMEGA */ /* 0461 */ 0xffff, /* CYRILLIC SMALL LETTER OMEGA */ /* 0462 */ 0xffff, /* CYRILLIC CAPITAL LETTER YAT */ /* 0463 */ 0xffff, /* CYRILLIC SMALL LETTER YAT */ /* 0464 */ 0xffff, /* CYRILLIC CAPITAL LETTER IOTIFIED E */ /* 0465 */ 0xffff, /* CYRILLIC SMALL LETTER IOTIFIED E */ /* 0466 */ 0xffff, /* CYRILLIC CAPITAL LETTER LITTLE YUS */ /* 0467 */ 0xffff, /* CYRILLIC SMALL LETTER LITTLE YUS */ /* 0468 */ 0xffff, /* CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS */ /* 0469 */ 0xffff, /* CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS */ /* 046a */ 0xffff, /* CYRILLIC CAPITAL LETTER BIG YUS */ /* 046b */ 0xffff, /* CYRILLIC SMALL LETTER BIG YUS */ /* 046c */ 0xffff, /* CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS */ /* 046d */ 0xffff, /* CYRILLIC SMALL LETTER IOTIFIED BIG YUS */ /* 046e */ 0xffff, /* CYRILLIC CAPITAL LETTER KSI */ /* 046f */ 0xffff, /* CYRILLIC SMALL LETTER KSI */ /* 0470 */ 0xffff, /* CYRILLIC CAPITAL LETTER PSI */ /* 0471 */ 0xffff, /* CYRILLIC SMALL LETTER PSI */ /* 0472 */ 0xffff, /* CYRILLIC CAPITAL LETTER FITA */ /* 0473 */ 0xffff, /* CYRILLIC SMALL LETTER FITA */ /* 0474 */ 0xffff, /* CYRILLIC CAPITAL LETTER IZHITSA */ /* 0475 */ 0xffff, /* CYRILLIC SMALL LETTER IZHITSA */ /* 0476 */ 0xffff, /* CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT */ /* 0477 */ 0xffff, /* CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT */ /* 0478 */ 0xffff, /* CYRILLIC CAPITAL LETTER UK */ /* 0479 */ 0xffff, /* CYRILLIC SMALL LETTER UK */ /* 047a */ 0xffff, /* CYRILLIC CAPITAL LETTER ROUND OMEGA */ /* 047b */ 0xffff, /* CYRILLIC SMALL LETTER ROUND OMEGA */ /* 047c */ 0xffff, /* CYRILLIC CAPITAL LETTER OMEGA WITH TITLO */ /* 047d */ 0xffff, /* CYRILLIC SMALL LETTER OMEGA WITH TITLO */ /* 047e */ 0xffff, /* CYRILLIC CAPITAL LETTER OT */ /* 047f */ 0xffff, /* CYRILLIC SMALL LETTER OT */ /* 0480 */ 0xffff, /* CYRILLIC CAPITAL LETTER KOPPA */ /* 0481 */ 0xffff, /* CYRILLIC SMALL LETTER KOPPA */ /* 0482 */ 0xffff, /* CYRILLIC THOUSANDS SIGN */ /* 0483 */ 0xffff, /* COMBINING CYRILLIC TITLO */ /* 0484 */ 0xffff, /* COMBINING CYRILLIC PALATALIZATION */ /* 0485 */ 0xffff, /* COMBINING CYRILLIC DASIA PNEUMATA */ /* 0486 */ 0xffff, /* COMBINING CYRILLIC PSILI PNEUMATA */ /* 0487 */ 0xffff, /* COMBINING CYRILLIC POKRYTIE */ /* 0488 */ 0xffff, /* COMBINING CYRILLIC HUNDRED THOUSANDS SIGN */ /* 0489 */ 0xffff, /* COMBINING CYRILLIC MILLIONS SIGN */ /* 048a */ 0xffff, /* CYRILLIC CAPITAL LETTER SHORT I WITH TAIL */ /* 048b */ 0xffff, /* CYRILLIC SMALL LETTER SHORT I WITH TAIL */ /* 048c */ 0xffff, /* CYRILLIC CAPITAL LETTER SEMISOFT SIGN */ /* 048d */ 0xffff, /* CYRILLIC SMALL LETTER SEMISOFT SIGN */ /* 048e */ 0xffff, /* CYRILLIC CAPITAL LETTER ER WITH TICK */ /* 048f */ 0xffff, /* CYRILLIC SMALL LETTER ER WITH TICK */ /* 0490 */ 0xffff, /* CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ /* 0491 */ 0xffff, /* CYRILLIC SMALL LETTER GHE WITH UPTURN */ /* 0492 */ 0xffff, /* CYRILLIC CAPITAL LETTER GHE WITH STROKE */ /* 0493 */ 0xffff, /* CYRILLIC SMALL LETTER GHE WITH STROKE */ /* 0494 */ 0xffff, /* CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK */ /* 0495 */ 0xffff, /* CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK */ /* 0496 */ 0xffff, /* CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER */ /* 0497 */ 0xffff, /* CYRILLIC SMALL LETTER ZHE WITH DESCENDER */ /* 0498 */ 0xffff, /* CYRILLIC CAPITAL LETTER ZE WITH DESCENDER */ /* 0499 */ 0xffff, /* CYRILLIC SMALL LETTER ZE WITH DESCENDER */ /* 049a */ 0xffff, /* CYRILLIC CAPITAL LETTER KA WITH DESCENDER */ /* 049b */ 0xffff, /* CYRILLIC SMALL LETTER KA WITH DESCENDER */ /* 049c */ 0xffff, /* CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE */ /* 049d */ 0xffff, /* CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE */ /* 049e */ 0xffff, /* CYRILLIC CAPITAL LETTER KA WITH STROKE */ /* 049f */ 0xffff, /* CYRILLIC SMALL LETTER KA WITH STROKE */ /* 04a0 */ 0xffff, /* CYRILLIC CAPITAL LETTER BASHKIR KA */ /* 04a1 */ 0xffff, /* CYRILLIC SMALL LETTER BASHKIR KA */ /* 04a2 */ 0xffff, /* CYRILLIC CAPITAL LETTER EN WITH DESCENDER */ /* 04a3 */ 0xffff, /* CYRILLIC SMALL LETTER EN WITH DESCENDER */ /* 04a4 */ 0xffff, /* CYRILLIC CAPITAL LIGATURE EN GHE */ /* 04a5 */ 0xffff, /* CYRILLIC SMALL LIGATURE EN GHE */ /* 04a6 */ 0xffff, /* CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK */ /* 04a7 */ 0xffff, /* CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK */ /* 04a8 */ 0xffff, /* CYRILLIC CAPITAL LETTER ABKHASIAN HA */ /* 04a9 */ 0xffff, /* CYRILLIC SMALL LETTER ABKHASIAN HA */ /* 04aa */ 0xffff, /* CYRILLIC CAPITAL LETTER ES WITH DESCENDER */ /* 04ab */ 0xffff, /* CYRILLIC SMALL LETTER ES WITH DESCENDER */ /* 04ac */ 0xffff, /* CYRILLIC CAPITAL LETTER TE WITH DESCENDER */ /* 04ad */ 0xffff, /* CYRILLIC SMALL LETTER TE WITH DESCENDER */ /* 04ae */ 0xffff, /* CYRILLIC CAPITAL LETTER STRAIGHT U */ /* 04af */ 0xffff, /* CYRILLIC SMALL LETTER STRAIGHT U */ /* 04b0 */ 0xffff, /* CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE */ /* 04b1 */ 0xffff, /* CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE */ /* 04b2 */ 0xffff, /* CYRILLIC CAPITAL LETTER HA WITH DESCENDER */ /* 04b3 */ 0xffff, /* CYRILLIC SMALL LETTER HA WITH DESCENDER */ /* 04b4 */ 0xffff, /* CYRILLIC CAPITAL LIGATURE TE TSE */ /* 04b5 */ 0xffff, /* CYRILLIC SMALL LIGATURE TE TSE */ /* 04b6 */ 0xffff, /* CYRILLIC CAPITAL LETTER CHE WITH DESCENDER */ /* 04b7 */ 0xffff, /* CYRILLIC SMALL LETTER CHE WITH DESCENDER */ /* 04b8 */ 0xffff, /* CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE */ /* 04b9 */ 0xffff, /* CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE */ /* 04ba */ 0xffff, /* CYRILLIC CAPITAL LETTER SHHA */ /* 04bb */ 0xffff, /* CYRILLIC SMALL LETTER SHHA */ /* 04bc */ 0xffff, /* CYRILLIC CAPITAL LETTER ABKHASIAN CHE */ /* 04bd */ 0xffff, /* CYRILLIC SMALL LETTER ABKHASIAN CHE */ /* 04be */ 0xffff, /* CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER */ /* 04bf */ 0xffff, /* CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER */ /* 04c0 */ 0xffff, /* CYRILLIC LETTER PALOCHKA */ /* 04c1 */ 0xffff, /* CYRILLIC CAPITAL LETTER ZHE WITH BREVE */ /* 04c2 */ 0xffff, /* CYRILLIC SMALL LETTER ZHE WITH BREVE */ /* 04c3 */ 0xffff, /* CYRILLIC CAPITAL LETTER KA WITH HOOK */ /* 04c4 */ 0xffff, /* CYRILLIC SMALL LETTER KA WITH HOOK */ /* 04c5 */ 0xffff, /* CYRILLIC CAPITAL LETTER EL WITH TAIL */ /* 04c6 */ 0xffff, /* CYRILLIC SMALL LETTER EL WITH TAIL */ /* 04c7 */ 0xffff, /* CYRILLIC CAPITAL LETTER EN WITH HOOK */ /* 04c8 */ 0xffff, /* CYRILLIC SMALL LETTER EN WITH HOOK */ /* 04c9 */ 0xffff, /* CYRILLIC CAPITAL LETTER EN WITH TAIL */ /* 04ca */ 0xffff, /* CYRILLIC SMALL LETTER EN WITH TAIL */ /* 04cb */ 0xffff, /* CYRILLIC CAPITAL LETTER KHAKASSIAN CHE */ /* 04cc */ 0xffff, /* CYRILLIC SMALL LETTER KHAKASSIAN CHE */ /* 04cd */ 0xffff, /* CYRILLIC CAPITAL LETTER EM WITH TAIL */ /* 04ce */ 0xffff, /* CYRILLIC SMALL LETTER EM WITH TAIL */ /* 04cf */ 0xffff, /* CYRILLIC SMALL LETTER PALOCHKA */ /* 04d0 */ 0xffff, /* CYRILLIC CAPITAL LETTER A WITH BREVE */ /* 04d1 */ 0xffff, /* CYRILLIC SMALL LETTER A WITH BREVE */ /* 04d2 */ 0xffff, /* CYRILLIC CAPITAL LETTER A WITH DIAERESIS */ /* 04d3 */ 0xffff, /* CYRILLIC SMALL LETTER A WITH DIAERESIS */ /* 04d4 */ 0xffff, /* CYRILLIC CAPITAL LIGATURE A IE */ /* 04d5 */ 0xffff, /* CYRILLIC SMALL LIGATURE A IE */ /* 04d6 */ 0xffff, /* CYRILLIC CAPITAL LETTER IE WITH BREVE */ /* 04d7 */ 0xffff, /* CYRILLIC SMALL LETTER IE WITH BREVE */ /* 04d8 */ 0xffff, /* CYRILLIC CAPITAL LETTER SCHWA */ /* 04d9 */ 0xffff, /* CYRILLIC SMALL LETTER SCHWA */ /* 04da */ 0xffff, /* CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS */ /* 04db */ 0xffff, /* CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS */ /* 04dc */ 0xffff, /* CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS */ /* 04dd */ 0xffff, /* CYRILLIC SMALL LETTER ZHE WITH DIAERESIS */ /* 04de */ 0xffff, /* CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS */ /* 04df */ 0xffff, /* CYRILLIC SMALL LETTER ZE WITH DIAERESIS */ /* 04e0 */ 0xffff, /* CYRILLIC CAPITAL LETTER ABKHASIAN DZE */ /* 04e1 */ 0xffff, /* CYRILLIC SMALL LETTER ABKHASIAN DZE */ /* 04e2 */ 0xffff, /* CYRILLIC CAPITAL LETTER I WITH MACRON */ /* 04e3 */ 0xffff, /* CYRILLIC SMALL LETTER I WITH MACRON */ /* 04e4 */ 0xffff, /* CYRILLIC CAPITAL LETTER I WITH DIAERESIS */ /* 04e5 */ 0xffff, /* CYRILLIC SMALL LETTER I WITH DIAERESIS */ /* 04e6 */ 0xffff, /* CYRILLIC CAPITAL LETTER O WITH DIAERESIS */ /* 04e7 */ 0xffff, /* CYRILLIC SMALL LETTER O WITH DIAERESIS */ /* 04e8 */ 0xffff, /* CYRILLIC CAPITAL LETTER BARRED O */ /* 04e9 */ 0xffff, /* CYRILLIC SMALL LETTER BARRED O */ /* 04ea */ 0xffff, /* CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS */ /* 04eb */ 0xffff, /* CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS */ /* 04ec */ 0xffff, /* CYRILLIC CAPITAL LETTER E WITH DIAERESIS */ /* 04ed */ 0xffff, /* CYRILLIC SMALL LETTER E WITH DIAERESIS */ /* 04ee */ 0xffff, /* CYRILLIC CAPITAL LETTER U WITH MACRON */ /* 04ef */ 0xffff, /* CYRILLIC SMALL LETTER U WITH MACRON */ /* 04f0 */ 0xffff, /* CYRILLIC CAPITAL LETTER U WITH DIAERESIS */ /* 04f1 */ 0xffff, /* CYRILLIC SMALL LETTER U WITH DIAERESIS */ /* 04f2 */ 0xffff, /* CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE */ /* 04f3 */ 0xffff, /* CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE */ /* 04f4 */ 0xffff, /* CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS */ /* 04f5 */ 0xffff, /* CYRILLIC SMALL LETTER CHE WITH DIAERESIS */ /* 04f6 */ 0xffff, /* CYRILLIC CAPITAL LETTER GHE WITH DESCENDER */ /* 04f7 */ 0xffff, /* CYRILLIC SMALL LETTER GHE WITH DESCENDER */ /* 04f8 */ 0xffff, /* CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS */ /* 04f9 */ 0xffff, /* CYRILLIC SMALL LETTER YERU WITH DIAERESIS */ /* 04fa */ 0xffff, /* CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK */ /* 04fb */ 0xffff, /* CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK */ /* 04fc */ 0xffff, /* CYRILLIC CAPITAL LETTER HA WITH HOOK */ /* 04fd */ 0xffff, /* CYRILLIC SMALL LETTER HA WITH HOOK */ /* 04fe */ 0xffff, /* CYRILLIC CAPITAL LETTER HA WITH STROKE */ /* 04ff */ 0xffff, /* CYRILLIC SMALL LETTER HA WITH STROKE */ /* 0500 */ 0xffff, /* CYRILLIC CAPITAL LETTER KOMI DE */ /* 0501 */ 0xffff, /* CYRILLIC SMALL LETTER KOMI DE */ /* 0502 */ 0xffff, /* CYRILLIC CAPITAL LETTER KOMI DJE */ /* 0503 */ 0xffff, /* CYRILLIC SMALL LETTER KOMI DJE */ /* 0504 */ 0xffff, /* CYRILLIC CAPITAL LETTER KOMI ZJE */ /* 0505 */ 0xffff, /* CYRILLIC SMALL LETTER KOMI ZJE */ /* 0506 */ 0xffff, /* CYRILLIC CAPITAL LETTER KOMI DZJE */ /* 0507 */ 0xffff, /* CYRILLIC SMALL LETTER KOMI DZJE */ /* 0508 */ 0xffff, /* CYRILLIC CAPITAL LETTER KOMI LJE */ /* 0509 */ 0xffff, /* CYRILLIC SMALL LETTER KOMI LJE */ /* 050a */ 0xffff, /* CYRILLIC CAPITAL LETTER KOMI NJE */ /* 050b */ 0xffff, /* CYRILLIC SMALL LETTER KOMI NJE */ /* 050c */ 0xffff, /* CYRILLIC CAPITAL LETTER KOMI SJE */ /* 050d */ 0xffff, /* CYRILLIC SMALL LETTER KOMI SJE */ /* 050e */ 0xffff, /* CYRILLIC CAPITAL LETTER KOMI TJE */ /* 050f */ 0xffff, /* CYRILLIC SMALL LETTER KOMI TJE */ /* 0510 */ 0xffff, /* CYRILLIC CAPITAL LETTER REVERSED ZE */ /* 0511 */ 0xffff, /* CYRILLIC SMALL LETTER REVERSED ZE */ /* 0512 */ 0xffff, /* CYRILLIC CAPITAL LETTER EL WITH HOOK */ /* 0513 */ 0xffff, /* CYRILLIC SMALL LETTER EL WITH HOOK */ /* 0514 */ 0xffff, /* CYRILLIC CAPITAL LETTER LHA */ /* 0515 */ 0xffff, /* CYRILLIC SMALL LETTER LHA */ /* 0516 */ 0xffff, /* CYRILLIC CAPITAL LETTER RHA */ /* 0517 */ 0xffff, /* CYRILLIC SMALL LETTER RHA */ /* 0518 */ 0xffff, /* CYRILLIC CAPITAL LETTER YAE */ /* 0519 */ 0xffff, /* CYRILLIC SMALL LETTER YAE */ /* 051a */ 0xffff, /* CYRILLIC CAPITAL LETTER QA */ /* 051b */ 0xffff, /* CYRILLIC SMALL LETTER QA */ /* 051c */ 0xffff, /* CYRILLIC CAPITAL LETTER WE */ /* 051d */ 0xffff, /* CYRILLIC SMALL LETTER WE */ /* 051e */ 0xffff, /* CYRILLIC CAPITAL LETTER ALEUT KA */ /* 051f */ 0xffff, /* CYRILLIC SMALL LETTER ALEUT KA */ /* 0520 */ 0xffff, /* CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK */ /* 0521 */ 0xffff, /* CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK */ /* 0522 */ 0xffff, /* CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK */ /* 0523 */ 0xffff, /* CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK */ /* 0524 */ 0xffff, /* CYRILLIC CAPITAL LETTER PE WITH DESCENDER */ /* 0525 */ 0xffff, /* CYRILLIC SMALL LETTER PE WITH DESCENDER */ /* 0526 */ 0xffff, /* CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER */ /* 0527 */ 0xffff, /* CYRILLIC SMALL LETTER SHHA WITH DESCENDER */ /* 0528 */ 0xffff, /* CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK */ /* 0529 */ 0xffff, /* CYRILLIC SMALL LETTER EN WITH LEFT HOOK */ /* 052a */ 0xffff, /* CYRILLIC CAPITAL LETTER DZZHE */ /* 052b */ 0xffff, /* CYRILLIC SMALL LETTER DZZHE */ /* 052c */ 0xffff, /* CYRILLIC CAPITAL LETTER DCHE */ /* 052d */ 0xffff, /* CYRILLIC SMALL LETTER DCHE */ /* 052e */ 0xffff, /* CYRILLIC CAPITAL LETTER EL WITH DESCENDER */ /* 052f */ 0xffff, /* CYRILLIC SMALL LETTER EL WITH DESCENDER */ /* 0530 */ 0xffff, /* 0531 */ 0xffff, /* ARMENIAN CAPITAL LETTER AYB */ /* 0532 */ 0xffff, /* ARMENIAN CAPITAL LETTER BEN */ /* 0533 */ 0xffff, /* ARMENIAN CAPITAL LETTER GIM */ /* 0534 */ 0xffff, /* ARMENIAN CAPITAL LETTER DA */ /* 0535 */ 0xffff, /* ARMENIAN CAPITAL LETTER ECH */ /* 0536 */ 0xffff, /* ARMENIAN CAPITAL LETTER ZA */ /* 0537 */ 0xffff, /* ARMENIAN CAPITAL LETTER EH */ /* 0538 */ 0xffff, /* ARMENIAN CAPITAL LETTER ET */ /* 0539 */ 0xffff, /* ARMENIAN CAPITAL LETTER TO */ /* 053a */ 0xffff, /* ARMENIAN CAPITAL LETTER ZHE */ /* 053b */ 0xffff, /* ARMENIAN CAPITAL LETTER INI */ /* 053c */ 0xffff, /* ARMENIAN CAPITAL LETTER LIWN */ /* 053d */ 0xffff, /* ARMENIAN CAPITAL LETTER XEH */ /* 053e */ 0xffff, /* ARMENIAN CAPITAL LETTER CA */ /* 053f */ 0xffff, /* ARMENIAN CAPITAL LETTER KEN */ /* 0540 */ 0xffff, /* ARMENIAN CAPITAL LETTER HO */ /* 0541 */ 0xffff, /* ARMENIAN CAPITAL LETTER JA */ /* 0542 */ 0xffff, /* ARMENIAN CAPITAL LETTER GHAD */ /* 0543 */ 0xffff, /* ARMENIAN CAPITAL LETTER CHEH */ /* 0544 */ 0xffff, /* ARMENIAN CAPITAL LETTER MEN */ /* 0545 */ 0xffff, /* ARMENIAN CAPITAL LETTER YI */ /* 0546 */ 0xffff, /* ARMENIAN CAPITAL LETTER NOW */ /* 0547 */ 0xffff, /* ARMENIAN CAPITAL LETTER SHA */ /* 0548 */ 0xffff, /* ARMENIAN CAPITAL LETTER VO */ /* 0549 */ 0xffff, /* ARMENIAN CAPITAL LETTER CHA */ /* 054a */ 0xffff, /* ARMENIAN CAPITAL LETTER PEH */ /* 054b */ 0xffff, /* ARMENIAN CAPITAL LETTER JHEH */ /* 054c */ 0xffff, /* ARMENIAN CAPITAL LETTER RA */ /* 054d */ 0xffff, /* ARMENIAN CAPITAL LETTER SEH */ /* 054e */ 0xffff, /* ARMENIAN CAPITAL LETTER VEW */ /* 054f */ 0xffff, /* ARMENIAN CAPITAL LETTER TIWN */ /* 0550 */ 0xffff, /* ARMENIAN CAPITAL LETTER REH */ /* 0551 */ 0xffff, /* ARMENIAN CAPITAL LETTER CO */ /* 0552 */ 0xffff, /* ARMENIAN CAPITAL LETTER YIWN */ /* 0553 */ 0xffff, /* ARMENIAN CAPITAL LETTER PIWR */ /* 0554 */ 0xffff, /* ARMENIAN CAPITAL LETTER KEH */ /* 0555 */ 0xffff, /* ARMENIAN CAPITAL LETTER OH */ /* 0556 */ 0xffff, /* ARMENIAN CAPITAL LETTER FEH */ /* 0557 */ 0xffff, /* 0558 */ 0xffff, /* 0559 */ 0xffff, /* ARMENIAN MODIFIER LETTER LEFT HALF RING */ /* 055a */ 0xffff, /* ARMENIAN APOSTROPHE */ /* 055b */ 0xffff, /* ARMENIAN EMPHASIS MARK */ /* 055c */ 0xffff, /* ARMENIAN EXCLAMATION MARK */ /* 055d */ 0xffff, /* ARMENIAN COMMA */ /* 055e */ 0xffff, /* ARMENIAN QUESTION MARK */ /* 055f */ 0xffff, /* ARMENIAN ABBREVIATION MARK */ /* 0560 */ 0xffff, /* 0561 */ 0xffff, /* ARMENIAN SMALL LETTER AYB */ /* 0562 */ 0xffff, /* ARMENIAN SMALL LETTER BEN */ /* 0563 */ 0xffff, /* ARMENIAN SMALL LETTER GIM */ /* 0564 */ 0xffff, /* ARMENIAN SMALL LETTER DA */ /* 0565 */ 0xffff, /* ARMENIAN SMALL LETTER ECH */ /* 0566 */ 0xffff, /* ARMENIAN SMALL LETTER ZA */ /* 0567 */ 0xffff, /* ARMENIAN SMALL LETTER EH */ /* 0568 */ 0xffff, /* ARMENIAN SMALL LETTER ET */ /* 0569 */ 0xffff, /* ARMENIAN SMALL LETTER TO */ /* 056a */ 0xffff, /* ARMENIAN SMALL LETTER ZHE */ /* 056b */ 0xffff, /* ARMENIAN SMALL LETTER INI */ /* 056c */ 0xffff, /* ARMENIAN SMALL LETTER LIWN */ /* 056d */ 0xffff, /* ARMENIAN SMALL LETTER XEH */ /* 056e */ 0xffff, /* ARMENIAN SMALL LETTER CA */ /* 056f */ 0xffff, /* ARMENIAN SMALL LETTER KEN */ /* 0570 */ 0xffff, /* ARMENIAN SMALL LETTER HO */ /* 0571 */ 0xffff, /* ARMENIAN SMALL LETTER JA */ /* 0572 */ 0xffff, /* ARMENIAN SMALL LETTER GHAD */ /* 0573 */ 0xffff, /* ARMENIAN SMALL LETTER CHEH */ /* 0574 */ 0xffff, /* ARMENIAN SMALL LETTER MEN */ /* 0575 */ 0xffff, /* ARMENIAN SMALL LETTER YI */ /* 0576 */ 0xffff, /* ARMENIAN SMALL LETTER NOW */ /* 0577 */ 0xffff, /* ARMENIAN SMALL LETTER SHA */ /* 0578 */ 0xffff, /* ARMENIAN SMALL LETTER VO */ /* 0579 */ 0xffff, /* ARMENIAN SMALL LETTER CHA */ /* 057a */ 0xffff, /* ARMENIAN SMALL LETTER PEH */ /* 057b */ 0xffff, /* ARMENIAN SMALL LETTER JHEH */ /* 057c */ 0xffff, /* ARMENIAN SMALL LETTER RA */ /* 057d */ 0xffff, /* ARMENIAN SMALL LETTER SEH */ /* 057e */ 0xffff, /* ARMENIAN SMALL LETTER VEW */ /* 057f */ 0xffff, /* ARMENIAN SMALL LETTER TIWN */ /* 0580 */ 0xffff, /* ARMENIAN SMALL LETTER REH */ /* 0581 */ 0xffff, /* ARMENIAN SMALL LETTER CO */ /* 0582 */ 0xffff, /* ARMENIAN SMALL LETTER YIWN */ /* 0583 */ 0xffff, /* ARMENIAN SMALL LETTER PIWR */ /* 0584 */ 0xffff, /* ARMENIAN SMALL LETTER KEH */ /* 0585 */ 0xffff, /* ARMENIAN SMALL LETTER OH */ /* 0586 */ 0xffff, /* ARMENIAN SMALL LETTER FEH */ /* 0587 */ 0xffff, /* ARMENIAN SMALL LIGATURE ECH YIWN */ /* 0588 */ 0xffff, /* 0589 */ 0xffff, /* ARMENIAN FULL STOP */ /* 058a */ 0xffff, /* ARMENIAN HYPHEN */ /* 058b */ 0xffff, /* 058c */ 0xffff, /* 058d */ 0xffff, /* RIGHT-FACING ARMENIAN ETERNITY SIGN */ /* 058e */ 0xffff, /* LEFT-FACING ARMENIAN ETERNITY SIGN */ /* 058f */ 0xffff, /* ARMENIAN DRAM SIGN */ /* 0590 */ 0xffff, /* 0591 */ 0xffff, /* HEBREW ACCENT ETNAHTA */ /* 0592 */ 0xffff, /* HEBREW ACCENT SEGOL */ /* 0593 */ 0xffff, /* HEBREW ACCENT SHALSHELET */ /* 0594 */ 0xffff, /* HEBREW ACCENT ZAQEF QATAN */ /* 0595 */ 0xffff, /* HEBREW ACCENT ZAQEF GADOL */ /* 0596 */ 0xffff, /* HEBREW ACCENT TIPEHA */ /* 0597 */ 0xffff, /* HEBREW ACCENT REVIA */ /* 0598 */ 0xffff, /* HEBREW ACCENT ZARQA */ /* 0599 */ 0xffff, /* HEBREW ACCENT PASHTA */ /* 059a */ 0xffff, /* HEBREW ACCENT YETIV */ /* 059b */ 0xffff, /* HEBREW ACCENT TEVIR */ /* 059c */ 0xffff, /* HEBREW ACCENT GERESH */ /* 059d */ 0xffff, /* HEBREW ACCENT GERESH MUQDAM */ /* 059e */ 0xffff, /* HEBREW ACCENT GERSHAYIM */ /* 059f */ 0xffff, /* HEBREW ACCENT QARNEY PARA */ /* 05a0 */ 0xffff, /* HEBREW ACCENT TELISHA GEDOLA */ /* 05a1 */ 0xffff, /* HEBREW ACCENT PAZER */ /* 05a2 */ 0xffff, /* HEBREW ACCENT ATNAH HAFUKH */ /* 05a3 */ 0xffff, /* HEBREW ACCENT MUNAH */ /* 05a4 */ 0xffff, /* HEBREW ACCENT MAHAPAKH */ /* 05a5 */ 0xffff, /* HEBREW ACCENT MERKHA */ /* 05a6 */ 0xffff, /* HEBREW ACCENT MERKHA KEFULA */ /* 05a7 */ 0xffff, /* HEBREW ACCENT DARGA */ /* 05a8 */ 0xffff, /* HEBREW ACCENT QADMA */ /* 05a9 */ 0xffff, /* HEBREW ACCENT TELISHA QETANA */ /* 05aa */ 0xffff, /* HEBREW ACCENT YERAH BEN YOMO */ /* 05ab */ 0xffff, /* HEBREW ACCENT OLE */ /* 05ac */ 0xffff, /* HEBREW ACCENT ILUY */ /* 05ad */ 0xffff, /* HEBREW ACCENT DEHI */ /* 05ae */ 0xffff, /* HEBREW ACCENT ZINOR */ /* 05af */ 0xffff, /* HEBREW MARK MASORA CIRCLE */ /* 05b0 */ 0xffff, /* HEBREW POINT SHEVA */ /* 05b1 */ 0xffff, /* HEBREW POINT HATAF SEGOL */ /* 05b2 */ 0xffff, /* HEBREW POINT HATAF PATAH */ /* 05b3 */ 0xffff, /* HEBREW POINT HATAF QAMATS */ /* 05b4 */ 0xffff, /* HEBREW POINT HIRIQ */ /* 05b5 */ 0xffff, /* HEBREW POINT TSERE */ /* 05b6 */ 0xffff, /* HEBREW POINT SEGOL */ /* 05b7 */ 0xffff, /* HEBREW POINT PATAH */ /* 05b8 */ 0xffff, /* HEBREW POINT QAMATS */ /* 05b9 */ 0xffff, /* HEBREW POINT HOLAM */ /* 05ba */ 0xffff, /* HEBREW POINT HOLAM HASER FOR VAV */ /* 05bb */ 0xffff, /* HEBREW POINT QUBUTS */ /* 05bc */ 0xffff, /* HEBREW POINT DAGESH OR MAPIQ */ /* 05bd */ 0xffff, /* HEBREW POINT METEG */ /* 05be */ 0xffff, /* HEBREW PUNCTUATION MAQAF */ /* 05bf */ 0xffff, /* HEBREW POINT RAFE */ /* 05c0 */ 0xffff, /* HEBREW PUNCTUATION PASEQ */ /* 05c1 */ 0xffff, /* HEBREW POINT SHIN DOT */ /* 05c2 */ 0xffff, /* HEBREW POINT SIN DOT */ /* 05c3 */ 0xffff, /* HEBREW PUNCTUATION SOF PASUQ */ /* 05c4 */ 0xffff, /* HEBREW MARK UPPER DOT */ /* 05c5 */ 0xffff, /* HEBREW MARK LOWER DOT */ /* 05c6 */ 0xffff, /* HEBREW PUNCTUATION NUN HAFUKHA */ /* 05c7 */ 0xffff, /* HEBREW POINT QAMATS QATAN */ /* 05c8 */ 0xffff, /* 05c9 */ 0xffff, /* 05ca */ 0xffff, /* 05cb */ 0xffff, /* 05cc */ 0xffff, /* 05cd */ 0xffff, /* 05ce */ 0xffff, /* 05cf */ 0xffff, /* 05d0 */ 0x00c2, /* HEBREW LETTER ALEF */ /* 05d1 */ 0x00c3, /* HEBREW LETTER BET */ /* 05d2 */ 0x00c4, /* HEBREW LETTER GIMEL */ /* 05d3 */ 0x00c5, /* HEBREW LETTER DALET */ /* 05d4 */ 0x00c6, /* HEBREW LETTER HE */ /* 05d5 */ 0x00c7, /* HEBREW LETTER VAV */ /* 05d6 */ 0x00c8, /* HEBREW LETTER ZAYIN */ /* 05d7 */ 0x00c9, /* HEBREW LETTER HET */ /* 05d8 */ 0x00ca, /* HEBREW LETTER TET */ /* 05d9 */ 0x00cb, /* HEBREW LETTER YOD */ /* 05da */ 0x00d9, /* HEBREW LETTER FINAL KAF */ /* 05db */ 0x00cc, /* HEBREW LETTER KAF */ /* 05dc */ 0x00cd, /* HEBREW LETTER LAMED */ /* 05dd */ 0x00da, /* HEBREW LETTER FINAL MEM */ /* 05de */ 0x00ce, /* HEBREW LETTER MEM */ /* 05df */ 0x00d8, /* HEBREW LETTER FINAL NUN */ /* 05e0 */ 0x00cf, /* HEBREW LETTER NUN */ /* 05e1 */ 0x00d0, /* HEBREW LETTER SAMEKH */ /* 05e2 */ 0x00d1, /* HEBREW LETTER AYIN */ /* 05e3 */ 0x00db, /* HEBREW LETTER FINAL PE */ /* 05e4 */ 0x00d2, /* HEBREW LETTER PE */ /* 05e5 */ 0x00dc, /* HEBREW LETTER FINAL TSADI */ /* 05e6 */ 0x00d3, /* HEBREW LETTER TSADI */ /* 05e7 */ 0x00d4, /* HEBREW LETTER QOF */ /* 05e8 */ 0x00d5, /* HEBREW LETTER RESH */ /* 05e9 */ 0x00d6, /* HEBREW LETTER SHIN */ /* 05ea */ 0x00d7, /* HEBREW LETTER TAV */ /* 05eb */ 0xffff, /* 05ec */ 0xffff, /* 05ed */ 0xffff, /* 05ee */ 0xffff, /* 05ef */ 0xffff, /* 05f0 */ 0xffff, /* 05f1 */ 0xffff, /* 05f2 */ 0xffff, /* 05f3 */ 0xffff, /* 05f4 */ 0xffff, /* 05f5 */ 0xffff, /* 05f6 */ 0xffff, /* 05f7 */ 0xffff, /* 05f8 */ 0xffff, /* 05f9 */ 0xffff, /* 05fa */ 0xffff, /* 05fb */ 0xffff, /* 05fc */ 0xffff, /* 05fd */ 0xffff, /* 05fe */ 0xffff, /* 05ff */ 0xffff, /* 0600 */ 0x0600, /* left half of normal radio button */ /* 0601 */ 0x0601, /* right half of normal radio button */ /* 0602 */ 0x0602, /* left half of selected radio button */ /* 0603 */ 0x0603, /* right half of selected radio button */ /* 0604 */ 0x0604, /* left half of normal checkbox */ /* 0605 */ 0x0605, /* right half of normal checkbox */ /* 0606 */ 0x0606, /* left half of selected checkbox */ /* 0607 */ 0x0607, /* right half of selected checkbox */ /* 0608 */ 0xffff, /* 0609 */ 0xffff, /* 060a */ 0xffff, /* 060b */ 0xffff, /* 060c */ 0xffff, /* 060d */ 0xffff, /* 060e */ 0xffff, /* 060f */ 0xffff, /* 0610 */ 0xffff, /* 0611 */ 0xffff, /* 0612 */ 0xffff, /* 0613 */ 0xffff, /* 0614 */ 0xffff, /* 0615 */ 0xffff, /* 0616 */ 0xffff, /* 0617 */ 0xffff, /* 0618 */ 0xffff, /* 0619 */ 0xffff, /* 061a */ 0xffff, /* 061b */ 0xffff, /* 061c */ 0xffff, /* 061d */ 0xffff, /* 061e */ 0xffff, /* 061f */ 0xffff, /* 0620 */ 0xffff, /* 0621 */ 0xffff, /* 0622 */ 0xffff, /* 0623 */ 0xffff, /* 0624 */ 0xffff, /* 0625 */ 0xffff, /* 0626 */ 0xffff, /* 0627 */ 0xffff, /* 0628 */ 0xffff, /* 0629 */ 0xffff, /* 062a */ 0xffff, /* 062b */ 0xffff, /* 062c */ 0xffff, /* 062d */ 0xffff, /* 062e */ 0xffff, /* 062f */ 0xffff, /* 0630 */ 0xffff, /* 0631 */ 0xffff, /* 0632 */ 0xffff, /* 0633 */ 0xffff, /* 0634 */ 0xffff, /* 0635 */ 0xffff, /* 0636 */ 0xffff, /* 0637 */ 0xffff, /* 0638 */ 0xffff, /* 0639 */ 0xffff, /* 063a */ 0xffff, /* 063b */ 0xffff, /* 063c */ 0xffff, /* 063d */ 0xffff, /* 063e */ 0xffff, /* 063f */ 0xffff, /* 0640 */ 0xffff, /* 0641 */ 0xffff, /* 0642 */ 0xffff, /* 0643 */ 0xffff, /* 0644 */ 0xffff, /* 0645 */ 0xffff, /* 0646 */ 0xffff, /* 0647 */ 0xffff, /* 0648 */ 0xffff, /* 0649 */ 0xffff, /* 064a */ 0xffff, /* 064b */ 0xffff, /* 064c */ 0xffff, /* 064d */ 0xffff, /* 064e */ 0xffff, /* 064f */ 0xffff, /* 0650 */ 0xffff, /* 0651 */ 0xffff, /* 0652 */ 0xffff, /* 0653 */ 0xffff, /* 0654 */ 0xffff, /* 0655 */ 0xffff, /* 0656 */ 0xffff, /* 0657 */ 0xffff, /* 0658 */ 0xffff, /* 0659 */ 0xffff, /* 065a */ 0xffff, /* 065b */ 0xffff, /* 065c */ 0xffff, /* 065d */ 0xffff, /* 065e */ 0xffff, /* 065f */ 0xffff, /* 0660 */ 0xffff, /* 0661 */ 0xffff, /* 0662 */ 0xffff, /* 0663 */ 0xffff, /* 0664 */ 0xffff, /* 0665 */ 0xffff, /* 0666 */ 0xffff, /* 0667 */ 0xffff, /* 0668 */ 0xffff, /* 0669 */ 0xffff, /* 066a */ 0xffff, /* 066b */ 0xffff, /* 066c */ 0xffff, /* 066d */ 0xffff, /* 066e */ 0xffff, /* 066f */ 0xffff, /* 0670 */ 0xffff, /* 0671 */ 0xffff, /* 0672 */ 0xffff, /* 0673 */ 0xffff, /* 0674 */ 0xffff, /* 0675 */ 0xffff, /* 0676 */ 0xffff, /* 0677 */ 0xffff, /* 0678 */ 0xffff, /* 0679 */ 0xffff, /* 067a */ 0xffff, /* 067b */ 0xffff, /* 067c */ 0xffff, /* 067d */ 0xffff, /* 067e */ 0xffff, /* 067f */ 0xffff, /* 0680 */ 0xffff, /* 0681 */ 0xffff, /* 0682 */ 0xffff, /* 0683 */ 0xffff, /* 0684 */ 0xffff, /* 0685 */ 0xffff, /* 0686 */ 0xffff, /* 0687 */ 0xffff, /* 0688 */ 0xffff, /* 0689 */ 0xffff, /* 068a */ 0xffff, /* 068b */ 0xffff, /* 068c */ 0xffff, /* 068d */ 0xffff, /* 068e */ 0xffff, /* 068f */ 0xffff, /* 0690 */ 0xffff, /* 0691 */ 0xffff, /* 0692 */ 0xffff, /* 0693 */ 0xffff, /* 0694 */ 0xffff, /* 0695 */ 0xffff, /* 0696 */ 0xffff, /* 0697 */ 0xffff, /* 0698 */ 0xffff, /* 0699 */ 0xffff, /* 069a */ 0xffff, /* 069b */ 0xffff, /* 069c */ 0xffff, /* 069d */ 0xffff, /* 069e */ 0xffff, /* 069f */ 0xffff, /* 06a0 */ 0xffff, /* 06a1 */ 0xffff, /* 06a2 */ 0xffff, /* 06a3 */ 0xffff, /* 06a4 */ 0xffff, /* 06a5 */ 0xffff, /* 06a6 */ 0xffff, /* 06a7 */ 0xffff, /* 06a8 */ 0xffff, /* 06a9 */ 0xffff, /* 06aa */ 0xffff, /* 06ab */ 0xffff, /* 06ac */ 0xffff, /* 06ad */ 0xffff, /* 06ae */ 0xffff, /* 06af */ 0xffff, /* 06b0 */ 0xffff, /* 06b1 */ 0xffff, /* 06b2 */ 0xffff, /* 06b3 */ 0xffff, /* 06b4 */ 0xffff, /* 06b5 */ 0xffff, /* 06b6 */ 0xffff, /* 06b7 */ 0xffff, /* 06b8 */ 0xffff, /* 06b9 */ 0xffff, /* 06ba */ 0xffff, /* 06bb */ 0xffff, /* 06bc */ 0xffff, /* 06bd */ 0xffff, /* 06be */ 0xffff, /* 06bf */ 0xffff, /* 06c0 */ 0xffff, /* 06c1 */ 0xffff, /* 06c2 */ 0xffff, /* 06c3 */ 0xffff, /* 06c4 */ 0xffff, /* 06c5 */ 0xffff, /* 06c6 */ 0xffff, /* 06c7 */ 0xffff, /* 06c8 */ 0xffff, /* 06c9 */ 0xffff, /* 06ca */ 0xffff, /* 06cb */ 0xffff, /* 06cc */ 0xffff, /* 06cd */ 0xffff, /* 06ce */ 0xffff, /* 06cf */ 0xffff, /* 06d0 */ 0xffff, /* 06d1 */ 0xffff, /* 06d2 */ 0xffff, /* 06d3 */ 0xffff, /* 06d4 */ 0xffff, /* 06d5 */ 0xffff, /* 06d6 */ 0xffff, /* 06d7 */ 0xffff, /* 06d8 */ 0xffff, /* 06d9 */ 0xffff, /* 06da */ 0xffff, /* 06db */ 0xffff, /* 06dc */ 0xffff, /* 06dd */ 0xffff, /* 06de */ 0xffff, /* 06df */ 0xffff, /* 06e0 */ 0xffff, /* 06e1 */ 0xffff, /* 06e2 */ 0xffff, /* 06e3 */ 0xffff, /* 06e4 */ 0xffff, /* 06e5 */ 0xffff, /* 06e6 */ 0xffff, /* 06e7 */ 0xffff, /* 06e8 */ 0xffff, /* 06e9 */ 0xffff, /* 06ea */ 0xffff, /* 06eb */ 0xffff, /* 06ec */ 0xffff, /* 06ed */ 0xffff, /* 06ee */ 0xffff, /* 06ef */ 0xffff, /* 06f0 */ 0xffff, /* 06f1 */ 0xffff, /* 06f2 */ 0xffff, /* 06f3 */ 0xffff, /* 06f4 */ 0xffff, /* 06f5 */ 0xffff, /* 06f6 */ 0xffff, /* 06f7 */ 0xffff, /* 06f8 */ 0xffff, /* 06f9 */ 0xffff, /* 06fa */ 0xffff, /* 06fb */ 0xffff, /* 06fc */ 0xffff, /* 06fd */ 0xffff, /* 06fe */ 0xffff, /* 06ff */ 0xffff, /* 0700 */ 0xffff, /* 0701 */ 0xffff, /* 0702 */ 0xffff, /* 0703 */ 0xffff, /* 0704 */ 0xffff, /* 0705 */ 0xffff, /* 0706 */ 0xffff, /* 0707 */ 0xffff, /* 0708 */ 0xffff, /* 0709 */ 0xffff, /* 070a */ 0xffff, /* 070b */ 0xffff, /* 070c */ 0xffff, /* 070d */ 0xffff, /* 070e */ 0xffff, /* 070f */ 0xffff, /* 0710 */ 0xffff, /* 0711 */ 0xffff, /* 0712 */ 0xffff, /* 0713 */ 0xffff, /* 0714 */ 0xffff, /* 0715 */ 0xffff, /* 0716 */ 0xffff, /* 0717 */ 0xffff, /* 0718 */ 0xffff, /* 0719 */ 0xffff, /* 071a */ 0xffff, /* 071b */ 0xffff, /* 071c */ 0xffff, /* 071d */ 0xffff, /* 071e */ 0xffff, /* 071f */ 0xffff, /* 0720 */ 0xffff, /* 0721 */ 0xffff, /* 0722 */ 0xffff, /* 0723 */ 0xffff, /* 0724 */ 0xffff, /* 0725 */ 0xffff, /* 0726 */ 0xffff, /* 0727 */ 0xffff, /* 0728 */ 0xffff, /* 0729 */ 0xffff, /* 072a */ 0xffff, /* 072b */ 0xffff, /* 072c */ 0xffff, /* 072d */ 0xffff, /* 072e */ 0xffff, /* 072f */ 0xffff, /* 0730 */ 0xffff, /* 0731 */ 0xffff, /* 0732 */ 0xffff, /* 0733 */ 0xffff, /* 0734 */ 0xffff, /* 0735 */ 0xffff, /* 0736 */ 0xffff, /* 0737 */ 0xffff, /* 0738 */ 0xffff, /* 0739 */ 0xffff, /* 073a */ 0xffff, /* 073b */ 0xffff, /* 073c */ 0xffff, /* 073d */ 0xffff, /* 073e */ 0xffff, /* 073f */ 0xffff, /* 0740 */ 0xffff, /* 0741 */ 0xffff, /* 0742 */ 0xffff, /* 0743 */ 0xffff, /* 0744 */ 0xffff, /* 0745 */ 0xffff, /* 0746 */ 0xffff, /* 0747 */ 0xffff, /* 0748 */ 0xffff, /* 0749 */ 0xffff, /* 074a */ 0xffff, /* 074b */ 0xffff, /* 074c */ 0xffff, /* 074d */ 0xffff, /* 074e */ 0xffff, /* 074f */ 0xffff, /* 0750 */ 0xffff, /* 0751 */ 0xffff, /* 0752 */ 0xffff, /* 0753 */ 0xffff, /* 0754 */ 0xffff, /* 0755 */ 0xffff, /* 0756 */ 0xffff, /* 0757 */ 0xffff, /* 0758 */ 0xffff, /* 0759 */ 0xffff, /* 075a */ 0xffff, /* 075b */ 0xffff, /* 075c */ 0xffff, /* 075d */ 0xffff, /* 075e */ 0xffff, /* 075f */ 0xffff, /* 0760 */ 0xffff, /* 0761 */ 0xffff, /* 0762 */ 0xffff, /* 0763 */ 0xffff, /* 0764 */ 0xffff, /* 0765 */ 0xffff, /* 0766 */ 0xffff, /* 0767 */ 0xffff, /* 0768 */ 0xffff, /* 0769 */ 0xffff, /* 076a */ 0xffff, /* 076b */ 0xffff, /* 076c */ 0xffff, /* 076d */ 0xffff, /* 076e */ 0xffff, /* 076f */ 0xffff, /* 0770 */ 0xffff, /* 0771 */ 0xffff, /* 0772 */ 0xffff, /* 0773 */ 0xffff, /* 0774 */ 0xffff, /* 0775 */ 0xffff, /* 0776 */ 0xffff, /* 0777 */ 0xffff, /* 0778 */ 0xffff, /* 0779 */ 0xffff, /* 077a */ 0xffff, /* 077b */ 0xffff, /* 077c */ 0xffff, /* 077d */ 0xffff, /* 077e */ 0xffff, /* 077f */ 0xffff, /* 0780 */ 0xffff, /* 0781 */ 0xffff, /* 0782 */ 0xffff, /* 0783 */ 0xffff, /* 0784 */ 0xffff, /* 0785 */ 0xffff, /* 0786 */ 0xffff, /* 0787 */ 0xffff, /* 0788 */ 0xffff, /* 0789 */ 0xffff, /* 078a */ 0xffff, /* 078b */ 0xffff, /* 078c */ 0xffff, /* 078d */ 0xffff, /* 078e */ 0xffff, /* 078f */ 0xffff, /* 0790 */ 0xffff, /* 0791 */ 0xffff, /* 0792 */ 0xffff, /* 0793 */ 0xffff, /* 0794 */ 0xffff, /* 0795 */ 0xffff, /* 0796 */ 0xffff, /* 0797 */ 0xffff, /* 0798 */ 0xffff, /* 0799 */ 0xffff, /* 079a */ 0xffff, /* 079b */ 0xffff, /* 079c */ 0xffff, /* 079d */ 0xffff, /* 079e */ 0xffff, /* 079f */ 0xffff, /* 07a0 */ 0xffff, /* 07a1 */ 0xffff, /* 07a2 */ 0xffff, /* 07a3 */ 0xffff, /* 07a4 */ 0xffff, /* 07a5 */ 0xffff, /* 07a6 */ 0xffff, /* 07a7 */ 0xffff, /* 07a8 */ 0xffff, /* 07a9 */ 0xffff, /* 07aa */ 0xffff, /* 07ab */ 0xffff, /* 07ac */ 0xffff, /* 07ad */ 0xffff, /* 07ae */ 0xffff, /* 07af */ 0xffff, /* 07b0 */ 0xffff, /* 07b1 */ 0xffff, /* 07b2 */ 0xffff, /* 07b3 */ 0xffff, /* 07b4 */ 0xffff, /* 07b5 */ 0xffff, /* 07b6 */ 0xffff, /* 07b7 */ 0xffff, /* 07b8 */ 0xffff, /* 07b9 */ 0xffff, /* 07ba */ 0xffff, /* 07bb */ 0xffff, /* 07bc */ 0xffff, /* 07bd */ 0xffff, /* 07be */ 0xffff, /* 07bf */ 0xffff, /* 07c0 */ 0xffff, /* 07c1 */ 0xffff, /* 07c2 */ 0xffff, /* 07c3 */ 0xffff, /* 07c4 */ 0xffff, /* 07c5 */ 0xffff, /* 07c6 */ 0xffff, /* 07c7 */ 0xffff, /* 07c8 */ 0xffff, /* 07c9 */ 0xffff, /* 07ca */ 0xffff, /* 07cb */ 0xffff, /* 07cc */ 0xffff, /* 07cd */ 0xffff, /* 07ce */ 0xffff, /* 07cf */ 0xffff, /* 07d0 */ 0xffff, /* 07d1 */ 0xffff, /* 07d2 */ 0xffff, /* 07d3 */ 0xffff, /* 07d4 */ 0xffff, /* 07d5 */ 0xffff, /* 07d6 */ 0xffff, /* 07d7 */ 0xffff, /* 07d8 */ 0xffff, /* 07d9 */ 0xffff, /* 07da */ 0xffff, /* 07db */ 0xffff, /* 07dc */ 0xffff, /* 07dd */ 0xffff, /* 07de */ 0xffff, /* 07df */ 0xffff, /* 07e0 */ 0xffff, /* 07e1 */ 0xffff, /* 07e2 */ 0xffff, /* 07e3 */ 0xffff, /* 07e4 */ 0xffff, /* 07e5 */ 0xffff, /* 07e6 */ 0xffff, /* 07e7 */ 0xffff, /* 07e8 */ 0xffff, /* 07e9 */ 0xffff, /* 07ea */ 0xffff, /* 07eb */ 0xffff, /* 07ec */ 0xffff, /* 07ed */ 0xffff, /* 07ee */ 0xffff, /* 07ef */ 0xffff, /* 07f0 */ 0xffff, /* 07f1 */ 0xffff, /* 07f2 */ 0xffff, /* 07f3 */ 0xffff, /* 07f4 */ 0xffff, /* 07f5 */ 0xffff, /* 07f6 */ 0xffff, /* 07f7 */ 0xffff, /* 07f8 */ 0xffff, /* 07f9 */ 0xffff, /* 07fa */ 0xffff, /* 07fb */ 0xffff, /* 07fc */ 0xffff, /* 07fd */ 0xffff, /* 07fe */ 0xffff, /* 07ff */ 0xffff, /* 0800 */ 0xffff, /* 0801 */ 0xffff, /* 0802 */ 0xffff, /* 0803 */ 0xffff, /* 0804 */ 0xffff, /* 0805 */ 0xffff, /* 0806 */ 0xffff, /* 0807 */ 0xffff, /* 0808 */ 0xffff, /* 0809 */ 0xffff, /* 080a */ 0xffff, /* 080b */ 0xffff, /* 080c */ 0xffff, /* 080d */ 0xffff, /* 080e */ 0xffff, /* 080f */ 0xffff, /* 0810 */ 0xffff, /* 0811 */ 0xffff, /* 0812 */ 0xffff, /* 0813 */ 0xffff, /* 0814 */ 0xffff, /* 0815 */ 0xffff, /* 0816 */ 0xffff, /* 0817 */ 0xffff, /* 0818 */ 0xffff, /* 0819 */ 0xffff, /* 081a */ 0xffff, /* 081b */ 0xffff, /* 081c */ 0xffff, /* 081d */ 0xffff, /* 081e */ 0xffff, /* 081f */ 0xffff, /* 0820 */ 0xffff, /* 0821 */ 0xffff, /* 0822 */ 0xffff, /* 0823 */ 0xffff, /* 0824 */ 0xffff, /* 0825 */ 0xffff, /* 0826 */ 0xffff, /* 0827 */ 0xffff, /* 0828 */ 0xffff, /* 0829 */ 0xffff, /* 082a */ 0xffff, /* 082b */ 0xffff, /* 082c */ 0xffff, /* 082d */ 0xffff, /* 082e */ 0xffff, /* 082f */ 0xffff, /* 0830 */ 0xffff, /* 0831 */ 0xffff, /* 0832 */ 0xffff, /* 0833 */ 0xffff, /* 0834 */ 0xffff, /* 0835 */ 0xffff, /* 0836 */ 0xffff, /* 0837 */ 0xffff, /* 0838 */ 0xffff, /* 0839 */ 0xffff, /* 083a */ 0xffff, /* 083b */ 0xffff, /* 083c */ 0xffff, /* 083d */ 0xffff, /* 083e */ 0xffff, /* 083f */ 0xffff, /* 0840 */ 0xffff, /* 0841 */ 0xffff, /* 0842 */ 0xffff, /* 0843 */ 0xffff, /* 0844 */ 0xffff, /* 0845 */ 0xffff, /* 0846 */ 0xffff, /* 0847 */ 0xffff, /* 0848 */ 0xffff, /* 0849 */ 0xffff, /* 084a */ 0xffff, /* 084b */ 0xffff, /* 084c */ 0xffff, /* 084d */ 0xffff, /* 084e */ 0xffff, /* 084f */ 0xffff, /* 0850 */ 0xffff, /* 0851 */ 0xffff, /* 0852 */ 0xffff, /* 0853 */ 0xffff, /* 0854 */ 0xffff, /* 0855 */ 0xffff, /* 0856 */ 0xffff, /* 0857 */ 0xffff, /* 0858 */ 0xffff, /* 0859 */ 0xffff, /* 085a */ 0xffff, /* 085b */ 0xffff, /* 085c */ 0xffff, /* 085d */ 0xffff, /* 085e */ 0xffff, /* 085f */ 0xffff, /* 0860 */ 0xffff, /* 0861 */ 0xffff, /* 0862 */ 0xffff, /* 0863 */ 0xffff, /* 0864 */ 0xffff, /* 0865 */ 0xffff, /* 0866 */ 0xffff, /* 0867 */ 0xffff, /* 0868 */ 0xffff, /* 0869 */ 0xffff, /* 086a */ 0xffff, /* 086b */ 0xffff, /* 086c */ 0xffff, /* 086d */ 0xffff, /* 086e */ 0xffff, /* 086f */ 0xffff, /* 0870 */ 0xffff, /* 0871 */ 0xffff, /* 0872 */ 0xffff, /* 0873 */ 0xffff, /* 0874 */ 0xffff, /* 0875 */ 0xffff, /* 0876 */ 0xffff, /* 0877 */ 0xffff, /* 0878 */ 0xffff, /* 0879 */ 0xffff, /* 087a */ 0xffff, /* 087b */ 0xffff, /* 087c */ 0xffff, /* 087d */ 0xffff, /* 087e */ 0xffff, /* 087f */ 0xffff, /* 0880 */ 0xffff, /* 0881 */ 0xffff, /* 0882 */ 0xffff, /* 0883 */ 0xffff, /* 0884 */ 0xffff, /* 0885 */ 0xffff, /* 0886 */ 0xffff, /* 0887 */ 0xffff, /* 0888 */ 0xffff, /* 0889 */ 0xffff, /* 088a */ 0xffff, /* 088b */ 0xffff, /* 088c */ 0xffff, /* 088d */ 0xffff, /* 088e */ 0xffff, /* 088f */ 0xffff, /* 0890 */ 0xffff, /* 0891 */ 0xffff, /* 0892 */ 0xffff, /* 0893 */ 0xffff, /* 0894 */ 0xffff, /* 0895 */ 0xffff, /* 0896 */ 0xffff, /* 0897 */ 0xffff, /* 0898 */ 0xffff, /* 0899 */ 0xffff, /* 089a */ 0xffff, /* 089b */ 0xffff, /* 089c */ 0xffff, /* 089d */ 0xffff, /* 089e */ 0xffff, /* 089f */ 0xffff, /* 08a0 */ 0xffff, /* 08a1 */ 0xffff, /* 08a2 */ 0xffff, /* 08a3 */ 0xffff, /* 08a4 */ 0xffff, /* 08a5 */ 0xffff, /* 08a6 */ 0xffff, /* 08a7 */ 0xffff, /* 08a8 */ 0xffff, /* 08a9 */ 0xffff, /* 08aa */ 0xffff, /* 08ab */ 0xffff, /* 08ac */ 0xffff, /* 08ad */ 0xffff, /* 08ae */ 0xffff, /* 08af */ 0xffff, /* 08b0 */ 0xffff, /* 08b1 */ 0xffff, /* 08b2 */ 0xffff, /* 08b3 */ 0xffff, /* 08b4 */ 0xffff, /* 08b5 */ 0xffff, /* 08b6 */ 0xffff, /* 08b7 */ 0xffff, /* 08b8 */ 0xffff, /* 08b9 */ 0xffff, /* 08ba */ 0xffff, /* 08bb */ 0xffff, /* 08bc */ 0xffff, /* 08bd */ 0xffff, /* 08be */ 0xffff, /* 08bf */ 0xffff, /* 08c0 */ 0xffff, /* 08c1 */ 0xffff, /* 08c2 */ 0xffff, /* 08c3 */ 0xffff, /* 08c4 */ 0xffff, /* 08c5 */ 0xffff, /* 08c6 */ 0xffff, /* 08c7 */ 0xffff, /* 08c8 */ 0xffff, /* 08c9 */ 0xffff, /* 08ca */ 0xffff, /* 08cb */ 0xffff, /* 08cc */ 0xffff, /* 08cd */ 0xffff, /* 08ce */ 0xffff, /* 08cf */ 0xffff, /* 08d0 */ 0xffff, /* 08d1 */ 0xffff, /* 08d2 */ 0xffff, /* 08d3 */ 0xffff, /* 08d4 */ 0xffff, /* 08d5 */ 0xffff, /* 08d6 */ 0xffff, /* 08d7 */ 0xffff, /* 08d8 */ 0xffff, /* 08d9 */ 0xffff, /* 08da */ 0xffff, /* 08db */ 0xffff, /* 08dc */ 0xffff, /* 08dd */ 0xffff, /* 08de */ 0xffff, /* 08df */ 0xffff, /* 08e0 */ 0xffff, /* 08e1 */ 0xffff, /* 08e2 */ 0xffff, /* 08e3 */ 0xffff, /* 08e4 */ 0xffff, /* 08e5 */ 0xffff, /* 08e6 */ 0xffff, /* 08e7 */ 0xffff, /* 08e8 */ 0xffff, /* 08e9 */ 0xffff, /* 08ea */ 0xffff, /* 08eb */ 0xffff, /* 08ec */ 0xffff, /* 08ed */ 0xffff, /* 08ee */ 0xffff, /* 08ef */ 0xffff, /* 08f0 */ 0xffff, /* 08f1 */ 0xffff, /* 08f2 */ 0xffff, /* 08f3 */ 0xffff, /* 08f4 */ 0xffff, /* 08f5 */ 0xffff, /* 08f6 */ 0xffff, /* 08f7 */ 0xffff, /* 08f8 */ 0xffff, /* 08f9 */ 0xffff, /* 08fa */ 0xffff, /* 08fb */ 0xffff, /* 08fc */ 0xffff, /* 08fd */ 0xffff, /* 08fe */ 0xffff, /* 08ff */ 0xffff, /* 0900 */ 0xffff, /* 0901 */ 0xffff, /* 0902 */ 0xffff, /* 0903 */ 0xffff, /* 0904 */ 0xffff, /* 0905 */ 0xffff, /* 0906 */ 0xffff, /* 0907 */ 0xffff, /* 0908 */ 0xffff, /* 0909 */ 0xffff, /* 090a */ 0xffff, /* 090b */ 0xffff, /* 090c */ 0xffff, /* 090d */ 0xffff, /* 090e */ 0xffff, /* 090f */ 0xffff, /* 0910 */ 0xffff, /* 0911 */ 0xffff, /* 0912 */ 0xffff, /* 0913 */ 0xffff, /* 0914 */ 0xffff, /* 0915 */ 0xffff, /* 0916 */ 0xffff, /* 0917 */ 0xffff, /* 0918 */ 0xffff, /* 0919 */ 0xffff, /* 091a */ 0xffff, /* 091b */ 0xffff, /* 091c */ 0xffff, /* 091d */ 0xffff, /* 091e */ 0xffff, /* 091f */ 0xffff, /* 0920 */ 0xffff, /* 0921 */ 0xffff, /* 0922 */ 0xffff, /* 0923 */ 0xffff, /* 0924 */ 0xffff, /* 0925 */ 0xffff, /* 0926 */ 0xffff, /* 0927 */ 0xffff, /* 0928 */ 0xffff, /* 0929 */ 0xffff, /* 092a */ 0xffff, /* 092b */ 0xffff, /* 092c */ 0xffff, /* 092d */ 0xffff, /* 092e */ 0xffff, /* 092f */ 0xffff, /* 0930 */ 0xffff, /* 0931 */ 0xffff, /* 0932 */ 0xffff, /* 0933 */ 0xffff, /* 0934 */ 0xffff, /* 0935 */ 0xffff, /* 0936 */ 0xffff, /* 0937 */ 0xffff, /* 0938 */ 0xffff, /* 0939 */ 0xffff, /* 093a */ 0xffff, /* 093b */ 0xffff, /* 093c */ 0xffff, /* 093d */ 0xffff, /* 093e */ 0xffff, /* 093f */ 0xffff, /* 0940 */ 0xffff, /* 0941 */ 0xffff, /* 0942 */ 0xffff, /* 0943 */ 0xffff, /* 0944 */ 0xffff, /* 0945 */ 0xffff, /* 0946 */ 0xffff, /* 0947 */ 0xffff, /* 0948 */ 0xffff, /* 0949 */ 0xffff, /* 094a */ 0xffff, /* 094b */ 0xffff, /* 094c */ 0xffff, /* 094d */ 0xffff, /* 094e */ 0xffff, /* 094f */ 0xffff, /* 0950 */ 0xffff, /* 0951 */ 0xffff, /* 0952 */ 0xffff, /* 0953 */ 0xffff, /* 0954 */ 0xffff, /* 0955 */ 0xffff, /* 0956 */ 0xffff, /* 0957 */ 0xffff, /* 0958 */ 0xffff, /* 0959 */ 0xffff, /* 095a */ 0xffff, /* 095b */ 0xffff, /* 095c */ 0xffff, /* 095d */ 0xffff, /* 095e */ 0xffff, /* 095f */ 0xffff, /* 0960 */ 0xffff, /* 0961 */ 0xffff, /* 0962 */ 0xffff, /* 0963 */ 0xffff, /* 0964 */ 0xffff, /* 0965 */ 0xffff, /* 0966 */ 0xffff, /* 0967 */ 0xffff, /* 0968 */ 0xffff, /* 0969 */ 0xffff, /* 096a */ 0xffff, /* 096b */ 0xffff, /* 096c */ 0xffff, /* 096d */ 0xffff, /* 096e */ 0xffff, /* 096f */ 0xffff, /* 0970 */ 0xffff, /* 0971 */ 0xffff, /* 0972 */ 0xffff, /* 0973 */ 0xffff, /* 0974 */ 0xffff, /* 0975 */ 0xffff, /* 0976 */ 0xffff, /* 0977 */ 0xffff, /* 0978 */ 0xffff, /* 0979 */ 0xffff, /* 097a */ 0xffff, /* 097b */ 0xffff, /* 097c */ 0xffff, /* 097d */ 0xffff, /* 097e */ 0xffff, /* 097f */ 0xffff, /* 0980 */ 0xffff, /* 0981 */ 0xffff, /* 0982 */ 0xffff, /* 0983 */ 0xffff, /* 0984 */ 0xffff, /* 0985 */ 0xffff, /* 0986 */ 0xffff, /* 0987 */ 0xffff, /* 0988 */ 0xffff, /* 0989 */ 0xffff, /* 098a */ 0xffff, /* 098b */ 0xffff, /* 098c */ 0xffff, /* 098d */ 0xffff, /* 098e */ 0xffff, /* 098f */ 0xffff, /* 0990 */ 0xffff, /* 0991 */ 0xffff, /* 0992 */ 0xffff, /* 0993 */ 0xffff, /* 0994 */ 0xffff, /* 0995 */ 0xffff, /* 0996 */ 0xffff, /* 0997 */ 0xffff, /* 0998 */ 0xffff, /* 0999 */ 0xffff, /* 099a */ 0xffff, /* 099b */ 0xffff, /* 099c */ 0xffff, /* 099d */ 0xffff, /* 099e */ 0xffff, /* 099f */ 0xffff, /* 09a0 */ 0xffff, /* 09a1 */ 0xffff, /* 09a2 */ 0xffff, /* 09a3 */ 0xffff, /* 09a4 */ 0xffff, /* 09a5 */ 0xffff, /* 09a6 */ 0xffff, /* 09a7 */ 0xffff, /* 09a8 */ 0xffff, /* 09a9 */ 0xffff, /* 09aa */ 0xffff, /* 09ab */ 0xffff, /* 09ac */ 0xffff, /* 09ad */ 0xffff, /* 09ae */ 0xffff, /* 09af */ 0xffff, /* 09b0 */ 0xffff, /* 09b1 */ 0xffff, /* 09b2 */ 0xffff, /* 09b3 */ 0xffff, /* 09b4 */ 0xffff, /* 09b5 */ 0xffff, /* 09b6 */ 0xffff, /* 09b7 */ 0xffff, /* 09b8 */ 0xffff, /* 09b9 */ 0xffff, /* 09ba */ 0xffff, /* 09bb */ 0xffff, /* 09bc */ 0xffff, /* 09bd */ 0xffff, /* 09be */ 0xffff, /* 09bf */ 0xffff, /* 09c0 */ 0xffff, /* 09c1 */ 0xffff, /* 09c2 */ 0xffff, /* 09c3 */ 0xffff, /* 09c4 */ 0xffff, /* 09c5 */ 0xffff, /* 09c6 */ 0xffff, /* 09c7 */ 0xffff, /* 09c8 */ 0xffff, /* 09c9 */ 0xffff, /* 09ca */ 0xffff, /* 09cb */ 0xffff, /* 09cc */ 0xffff, /* 09cd */ 0xffff, /* 09ce */ 0xffff, /* 09cf */ 0xffff, /* 09d0 */ 0xffff, /* 09d1 */ 0xffff, /* 09d2 */ 0xffff, /* 09d3 */ 0xffff, /* 09d4 */ 0xffff, /* 09d5 */ 0xffff, /* 09d6 */ 0xffff, /* 09d7 */ 0xffff, /* 09d8 */ 0xffff, /* 09d9 */ 0xffff, /* 09da */ 0xffff, /* 09db */ 0xffff, /* 09dc */ 0xffff, /* 09dd */ 0xffff, /* 09de */ 0xffff, /* 09df */ 0xffff, /* 09e0 */ 0xffff, /* 09e1 */ 0xffff, /* 09e2 */ 0xffff, /* 09e3 */ 0xffff, /* 09e4 */ 0xffff, /* 09e5 */ 0xffff, /* 09e6 */ 0xffff, /* 09e7 */ 0xffff, /* 09e8 */ 0xffff, /* 09e9 */ 0xffff, /* 09ea */ 0xffff, /* 09eb */ 0xffff, /* 09ec */ 0xffff, /* 09ed */ 0xffff, /* 09ee */ 0xffff, /* 09ef */ 0xffff, /* 09f0 */ 0xffff, /* 09f1 */ 0xffff, /* 09f2 */ 0xffff, /* 09f3 */ 0xffff, /* 09f4 */ 0xffff, /* 09f5 */ 0xffff, /* 09f6 */ 0xffff, /* 09f7 */ 0xffff, /* 09f8 */ 0xffff, /* 09f9 */ 0xffff, /* 09fa */ 0xffff, /* 09fb */ 0xffff, /* 09fc */ 0xffff, /* 09fd */ 0xffff, /* 09fe */ 0xffff, /* 09ff */ 0xffff, /* 0a00 */ 0xffff, /* 0a01 */ 0xffff, /* 0a02 */ 0xffff, /* 0a03 */ 0xffff, /* 0a04 */ 0xffff, /* 0a05 */ 0xffff, /* 0a06 */ 0xffff, /* 0a07 */ 0xffff, /* 0a08 */ 0xffff, /* 0a09 */ 0xffff, /* 0a0a */ 0xffff, /* 0a0b */ 0xffff, /* 0a0c */ 0xffff, /* 0a0d */ 0xffff, /* 0a0e */ 0xffff, /* 0a0f */ 0xffff, /* 0a10 */ 0xffff, /* 0a11 */ 0xffff, /* 0a12 */ 0xffff, /* 0a13 */ 0xffff, /* 0a14 */ 0xffff, /* 0a15 */ 0xffff, /* 0a16 */ 0xffff, /* 0a17 */ 0xffff, /* 0a18 */ 0xffff, /* 0a19 */ 0xffff, /* 0a1a */ 0xffff, /* 0a1b */ 0xffff, /* 0a1c */ 0xffff, /* 0a1d */ 0xffff, /* 0a1e */ 0xffff, /* 0a1f */ 0xffff, /* 0a20 */ 0xffff, /* 0a21 */ 0xffff, /* 0a22 */ 0xffff, /* 0a23 */ 0xffff, /* 0a24 */ 0xffff, /* 0a25 */ 0xffff, /* 0a26 */ 0xffff, /* 0a27 */ 0xffff, /* 0a28 */ 0xffff, /* 0a29 */ 0xffff, /* 0a2a */ 0xffff, /* 0a2b */ 0xffff, /* 0a2c */ 0xffff, /* 0a2d */ 0xffff, /* 0a2e */ 0xffff, /* 0a2f */ 0xffff, /* 0a30 */ 0xffff, /* 0a31 */ 0xffff, /* 0a32 */ 0xffff, /* 0a33 */ 0xffff, /* 0a34 */ 0xffff, /* 0a35 */ 0xffff, /* 0a36 */ 0xffff, /* 0a37 */ 0xffff, /* 0a38 */ 0xffff, /* 0a39 */ 0xffff, /* 0a3a */ 0xffff, /* 0a3b */ 0xffff, /* 0a3c */ 0xffff, /* 0a3d */ 0xffff, /* 0a3e */ 0xffff, /* 0a3f */ 0xffff, /* 0a40 */ 0xffff, /* 0a41 */ 0xffff, /* 0a42 */ 0xffff, /* 0a43 */ 0xffff, /* 0a44 */ 0xffff, /* 0a45 */ 0xffff, /* 0a46 */ 0xffff, /* 0a47 */ 0xffff, /* 0a48 */ 0xffff, /* 0a49 */ 0xffff, /* 0a4a */ 0xffff, /* 0a4b */ 0xffff, /* 0a4c */ 0xffff, /* 0a4d */ 0xffff, /* 0a4e */ 0xffff, /* 0a4f */ 0xffff, /* 0a50 */ 0xffff, /* 0a51 */ 0xffff, /* 0a52 */ 0xffff, /* 0a53 */ 0xffff, /* 0a54 */ 0xffff, /* 0a55 */ 0xffff, /* 0a56 */ 0xffff, /* 0a57 */ 0xffff, /* 0a58 */ 0xffff, /* 0a59 */ 0xffff, /* 0a5a */ 0xffff, /* 0a5b */ 0xffff, /* 0a5c */ 0xffff, /* 0a5d */ 0xffff, /* 0a5e */ 0xffff, /* 0a5f */ 0xffff, /* 0a60 */ 0xffff, /* 0a61 */ 0xffff, /* 0a62 */ 0xffff, /* 0a63 */ 0xffff, /* 0a64 */ 0xffff, /* 0a65 */ 0xffff, /* 0a66 */ 0xffff, /* 0a67 */ 0xffff, /* 0a68 */ 0xffff, /* 0a69 */ 0xffff, /* 0a6a */ 0xffff, /* 0a6b */ 0xffff, /* 0a6c */ 0xffff, /* 0a6d */ 0xffff, /* 0a6e */ 0xffff, /* 0a6f */ 0xffff, /* 0a70 */ 0xffff, /* 0a71 */ 0xffff, /* 0a72 */ 0xffff, /* 0a73 */ 0xffff, /* 0a74 */ 0xffff, /* 0a75 */ 0xffff, /* 0a76 */ 0xffff, /* 0a77 */ 0xffff, /* 0a78 */ 0xffff, /* 0a79 */ 0xffff, /* 0a7a */ 0xffff, /* 0a7b */ 0xffff, /* 0a7c */ 0xffff, /* 0a7d */ 0xffff, /* 0a7e */ 0xffff, /* 0a7f */ 0xffff, /* 0a80 */ 0xffff, /* 0a81 */ 0xffff, /* 0a82 */ 0xffff, /* 0a83 */ 0xffff, /* 0a84 */ 0xffff, /* 0a85 */ 0xffff, /* 0a86 */ 0xffff, /* 0a87 */ 0xffff, /* 0a88 */ 0xffff, /* 0a89 */ 0xffff, /* 0a8a */ 0xffff, /* 0a8b */ 0xffff, /* 0a8c */ 0xffff, /* 0a8d */ 0xffff, /* 0a8e */ 0xffff, /* 0a8f */ 0xffff, /* 0a90 */ 0xffff, /* 0a91 */ 0xffff, /* 0a92 */ 0xffff, /* 0a93 */ 0xffff, /* 0a94 */ 0xffff, /* 0a95 */ 0xffff, /* 0a96 */ 0xffff, /* 0a97 */ 0xffff, /* 0a98 */ 0xffff, /* 0a99 */ 0xffff, /* 0a9a */ 0xffff, /* 0a9b */ 0xffff, /* 0a9c */ 0xffff, /* 0a9d */ 0xffff, /* 0a9e */ 0xffff, /* 0a9f */ 0xffff, /* 0aa0 */ 0xffff, /* 0aa1 */ 0xffff, /* 0aa2 */ 0xffff, /* 0aa3 */ 0xffff, /* 0aa4 */ 0xffff, /* 0aa5 */ 0xffff, /* 0aa6 */ 0xffff, /* 0aa7 */ 0xffff, /* 0aa8 */ 0xffff, /* 0aa9 */ 0xffff, /* 0aaa */ 0xffff, /* 0aab */ 0xffff, /* 0aac */ 0xffff, /* 0aad */ 0xffff, /* 0aae */ 0xffff, /* 0aaf */ 0xffff, /* 0ab0 */ 0xffff, /* 0ab1 */ 0xffff, /* 0ab2 */ 0xffff, /* 0ab3 */ 0xffff, /* 0ab4 */ 0xffff, /* 0ab5 */ 0xffff, /* 0ab6 */ 0xffff, /* 0ab7 */ 0xffff, /* 0ab8 */ 0xffff, /* 0ab9 */ 0xffff, /* 0aba */ 0xffff, /* 0abb */ 0xffff, /* 0abc */ 0xffff, /* 0abd */ 0xffff, /* 0abe */ 0xffff, /* 0abf */ 0xffff, /* 0ac0 */ 0xffff, /* 0ac1 */ 0xffff, /* 0ac2 */ 0xffff, /* 0ac3 */ 0xffff, /* 0ac4 */ 0xffff, /* 0ac5 */ 0xffff, /* 0ac6 */ 0xffff, /* 0ac7 */ 0xffff, /* 0ac8 */ 0xffff, /* 0ac9 */ 0xffff, /* 0aca */ 0xffff, /* 0acb */ 0xffff, /* 0acc */ 0xffff, /* 0acd */ 0xffff, /* 0ace */ 0xffff, /* 0acf */ 0xffff, /* 0ad0 */ 0xffff, /* 0ad1 */ 0xffff, /* 0ad2 */ 0xffff, /* 0ad3 */ 0xffff, /* 0ad4 */ 0xffff, /* 0ad5 */ 0xffff, /* 0ad6 */ 0xffff, /* 0ad7 */ 0xffff, /* 0ad8 */ 0xffff, /* 0ad9 */ 0xffff, /* 0ada */ 0xffff, /* 0adb */ 0xffff, /* 0adc */ 0xffff, /* 0add */ 0xffff, /* 0ade */ 0xffff, /* 0adf */ 0xffff, /* 0ae0 */ 0xffff, /* 0ae1 */ 0xffff, /* 0ae2 */ 0xffff, /* 0ae3 */ 0xffff, /* 0ae4 */ 0xffff, /* 0ae5 */ 0xffff, /* 0ae6 */ 0xffff, /* 0ae7 */ 0xffff, /* 0ae8 */ 0xffff, /* 0ae9 */ 0xffff, /* 0aea */ 0xffff, /* 0aeb */ 0xffff, /* 0aec */ 0xffff, /* 0aed */ 0xffff, /* 0aee */ 0xffff, /* 0aef */ 0xffff, /* 0af0 */ 0xffff, /* 0af1 */ 0xffff, /* 0af2 */ 0xffff, /* 0af3 */ 0xffff, /* 0af4 */ 0xffff, /* 0af5 */ 0xffff, /* 0af6 */ 0xffff, /* 0af7 */ 0xffff, /* 0af8 */ 0xffff, /* 0af9 */ 0xffff, /* 0afa */ 0xffff, /* 0afb */ 0xffff, /* 0afc */ 0xffff, /* 0afd */ 0xffff, /* 0afe */ 0xffff, /* 0aff */ 0xffff, /* 0b00 */ 0xffff, /* 0b01 */ 0xffff, /* 0b02 */ 0xffff, /* 0b03 */ 0xffff, /* 0b04 */ 0xffff, /* 0b05 */ 0xffff, /* 0b06 */ 0xffff, /* 0b07 */ 0xffff, /* 0b08 */ 0xffff, /* 0b09 */ 0xffff, /* 0b0a */ 0xffff, /* 0b0b */ 0xffff, /* 0b0c */ 0xffff, /* 0b0d */ 0xffff, /* 0b0e */ 0xffff, /* 0b0f */ 0xffff, /* 0b10 */ 0xffff, /* 0b11 */ 0xffff, /* 0b12 */ 0xffff, /* 0b13 */ 0xffff, /* 0b14 */ 0xffff, /* 0b15 */ 0xffff, /* 0b16 */ 0xffff, /* 0b17 */ 0xffff, /* 0b18 */ 0xffff, /* 0b19 */ 0xffff, /* 0b1a */ 0xffff, /* 0b1b */ 0xffff, /* 0b1c */ 0xffff, /* 0b1d */ 0xffff, /* 0b1e */ 0xffff, /* 0b1f */ 0xffff, /* 0b20 */ 0xffff, /* 0b21 */ 0xffff, /* 0b22 */ 0xffff, /* 0b23 */ 0xffff, /* 0b24 */ 0xffff, /* 0b25 */ 0xffff, /* 0b26 */ 0xffff, /* 0b27 */ 0xffff, /* 0b28 */ 0xffff, /* 0b29 */ 0xffff, /* 0b2a */ 0xffff, /* 0b2b */ 0xffff, /* 0b2c */ 0xffff, /* 0b2d */ 0xffff, /* 0b2e */ 0xffff, /* 0b2f */ 0xffff, /* 0b30 */ 0xffff, /* 0b31 */ 0xffff, /* 0b32 */ 0xffff, /* 0b33 */ 0xffff, /* 0b34 */ 0xffff, /* 0b35 */ 0xffff, /* 0b36 */ 0xffff, /* 0b37 */ 0xffff, /* 0b38 */ 0xffff, /* 0b39 */ 0xffff, /* 0b3a */ 0xffff, /* 0b3b */ 0xffff, /* 0b3c */ 0xffff, /* 0b3d */ 0xffff, /* 0b3e */ 0xffff, /* 0b3f */ 0xffff, /* 0b40 */ 0xffff, /* 0b41 */ 0xffff, /* 0b42 */ 0xffff, /* 0b43 */ 0xffff, /* 0b44 */ 0xffff, /* 0b45 */ 0xffff, /* 0b46 */ 0xffff, /* 0b47 */ 0xffff, /* 0b48 */ 0xffff, /* 0b49 */ 0xffff, /* 0b4a */ 0xffff, /* 0b4b */ 0xffff, /* 0b4c */ 0xffff, /* 0b4d */ 0xffff, /* 0b4e */ 0xffff, /* 0b4f */ 0xffff, /* 0b50 */ 0xffff, /* 0b51 */ 0xffff, /* 0b52 */ 0xffff, /* 0b53 */ 0xffff, /* 0b54 */ 0xffff, /* 0b55 */ 0xffff, /* 0b56 */ 0xffff, /* 0b57 */ 0xffff, /* 0b58 */ 0xffff, /* 0b59 */ 0xffff, /* 0b5a */ 0xffff, /* 0b5b */ 0xffff, /* 0b5c */ 0xffff, /* 0b5d */ 0xffff, /* 0b5e */ 0xffff, /* 0b5f */ 0xffff, /* 0b60 */ 0xffff, /* 0b61 */ 0xffff, /* 0b62 */ 0xffff, /* 0b63 */ 0xffff, /* 0b64 */ 0xffff, /* 0b65 */ 0xffff, /* 0b66 */ 0xffff, /* 0b67 */ 0xffff, /* 0b68 */ 0xffff, /* 0b69 */ 0xffff, /* 0b6a */ 0xffff, /* 0b6b */ 0xffff, /* 0b6c */ 0xffff, /* 0b6d */ 0xffff, /* 0b6e */ 0xffff, /* 0b6f */ 0xffff, /* 0b70 */ 0xffff, /* 0b71 */ 0xffff, /* 0b72 */ 0xffff, /* 0b73 */ 0xffff, /* 0b74 */ 0xffff, /* 0b75 */ 0xffff, /* 0b76 */ 0xffff, /* 0b77 */ 0xffff, /* 0b78 */ 0xffff, /* 0b79 */ 0xffff, /* 0b7a */ 0xffff, /* 0b7b */ 0xffff, /* 0b7c */ 0xffff, /* 0b7d */ 0xffff, /* 0b7e */ 0xffff, /* 0b7f */ 0xffff, /* 0b80 */ 0xffff, /* 0b81 */ 0xffff, /* 0b82 */ 0xffff, /* 0b83 */ 0xffff, /* 0b84 */ 0xffff, /* 0b85 */ 0xffff, /* 0b86 */ 0xffff, /* 0b87 */ 0xffff, /* 0b88 */ 0xffff, /* 0b89 */ 0xffff, /* 0b8a */ 0xffff, /* 0b8b */ 0xffff, /* 0b8c */ 0xffff, /* 0b8d */ 0xffff, /* 0b8e */ 0xffff, /* 0b8f */ 0xffff, /* 0b90 */ 0xffff, /* 0b91 */ 0xffff, /* 0b92 */ 0xffff, /* 0b93 */ 0xffff, /* 0b94 */ 0xffff, /* 0b95 */ 0xffff, /* 0b96 */ 0xffff, /* 0b97 */ 0xffff, /* 0b98 */ 0xffff, /* 0b99 */ 0xffff, /* 0b9a */ 0xffff, /* 0b9b */ 0xffff, /* 0b9c */ 0xffff, /* 0b9d */ 0xffff, /* 0b9e */ 0xffff, /* 0b9f */ 0xffff, /* 0ba0 */ 0xffff, /* 0ba1 */ 0xffff, /* 0ba2 */ 0xffff, /* 0ba3 */ 0xffff, /* 0ba4 */ 0xffff, /* 0ba5 */ 0xffff, /* 0ba6 */ 0xffff, /* 0ba7 */ 0xffff, /* 0ba8 */ 0xffff, /* 0ba9 */ 0xffff, /* 0baa */ 0xffff, /* 0bab */ 0xffff, /* 0bac */ 0xffff, /* 0bad */ 0xffff, /* 0bae */ 0xffff, /* 0baf */ 0xffff, /* 0bb0 */ 0xffff, /* 0bb1 */ 0xffff, /* 0bb2 */ 0xffff, /* 0bb3 */ 0xffff, /* 0bb4 */ 0xffff, /* 0bb5 */ 0xffff, /* 0bb6 */ 0xffff, /* 0bb7 */ 0xffff, /* 0bb8 */ 0xffff, /* 0bb9 */ 0xffff, /* 0bba */ 0xffff, /* 0bbb */ 0xffff, /* 0bbc */ 0xffff, /* 0bbd */ 0xffff, /* 0bbe */ 0xffff, /* 0bbf */ 0xffff, /* 0bc0 */ 0xffff, /* 0bc1 */ 0xffff, /* 0bc2 */ 0xffff, /* 0bc3 */ 0xffff, /* 0bc4 */ 0xffff, /* 0bc5 */ 0xffff, /* 0bc6 */ 0xffff, /* 0bc7 */ 0xffff, /* 0bc8 */ 0xffff, /* 0bc9 */ 0xffff, /* 0bca */ 0xffff, /* 0bcb */ 0xffff, /* 0bcc */ 0xffff, /* 0bcd */ 0xffff, /* 0bce */ 0xffff, /* 0bcf */ 0xffff, /* 0bd0 */ 0xffff, /* 0bd1 */ 0xffff, /* 0bd2 */ 0xffff, /* 0bd3 */ 0xffff, /* 0bd4 */ 0xffff, /* 0bd5 */ 0xffff, /* 0bd6 */ 0xffff, /* 0bd7 */ 0xffff, /* 0bd8 */ 0xffff, /* 0bd9 */ 0xffff, /* 0bda */ 0xffff, /* 0bdb */ 0xffff, /* 0bdc */ 0xffff, /* 0bdd */ 0xffff, /* 0bde */ 0xffff, /* 0bdf */ 0xffff, /* 0be0 */ 0xffff, /* 0be1 */ 0xffff, /* 0be2 */ 0xffff, /* 0be3 */ 0xffff, /* 0be4 */ 0xffff, /* 0be5 */ 0xffff, /* 0be6 */ 0xffff, /* 0be7 */ 0xffff, /* 0be8 */ 0xffff, /* 0be9 */ 0xffff, /* 0bea */ 0xffff, /* 0beb */ 0xffff, /* 0bec */ 0xffff, /* 0bed */ 0xffff, /* 0bee */ 0xffff, /* 0bef */ 0xffff, /* 0bf0 */ 0xffff, /* 0bf1 */ 0xffff, /* 0bf2 */ 0xffff, /* 0bf3 */ 0xffff, /* 0bf4 */ 0xffff, /* 0bf5 */ 0xffff, /* 0bf6 */ 0xffff, /* 0bf7 */ 0xffff, /* 0bf8 */ 0xffff, /* 0bf9 */ 0xffff, /* 0bfa */ 0xffff, /* 0bfb */ 0xffff, /* 0bfc */ 0xffff, /* 0bfd */ 0xffff, /* 0bfe */ 0xffff, /* 0bff */ 0xffff, /* 0c00 */ 0xffff, /* 0c01 */ 0xffff, /* 0c02 */ 0xffff, /* 0c03 */ 0xffff, /* 0c04 */ 0xffff, /* 0c05 */ 0xffff, /* 0c06 */ 0xffff, /* 0c07 */ 0xffff, /* 0c08 */ 0xffff, /* 0c09 */ 0xffff, /* 0c0a */ 0xffff, /* 0c0b */ 0xffff, /* 0c0c */ 0xffff, /* 0c0d */ 0xffff, /* 0c0e */ 0xffff, /* 0c0f */ 0xffff, /* 0c10 */ 0xffff, /* 0c11 */ 0xffff, /* 0c12 */ 0xffff, /* 0c13 */ 0xffff, /* 0c14 */ 0xffff, /* 0c15 */ 0xffff, /* 0c16 */ 0xffff, /* 0c17 */ 0xffff, /* 0c18 */ 0xffff, /* 0c19 */ 0xffff, /* 0c1a */ 0xffff, /* 0c1b */ 0xffff, /* 0c1c */ 0xffff, /* 0c1d */ 0xffff, /* 0c1e */ 0xffff, /* 0c1f */ 0xffff, /* 0c20 */ 0xffff, /* 0c21 */ 0xffff, /* 0c22 */ 0xffff, /* 0c23 */ 0xffff, /* 0c24 */ 0xffff, /* 0c25 */ 0xffff, /* 0c26 */ 0xffff, /* 0c27 */ 0xffff, /* 0c28 */ 0xffff, /* 0c29 */ 0xffff, /* 0c2a */ 0xffff, /* 0c2b */ 0xffff, /* 0c2c */ 0xffff, /* 0c2d */ 0xffff, /* 0c2e */ 0xffff, /* 0c2f */ 0xffff, /* 0c30 */ 0xffff, /* 0c31 */ 0xffff, /* 0c32 */ 0xffff, /* 0c33 */ 0xffff, /* 0c34 */ 0xffff, /* 0c35 */ 0xffff, /* 0c36 */ 0xffff, /* 0c37 */ 0xffff, /* 0c38 */ 0xffff, /* 0c39 */ 0xffff, /* 0c3a */ 0xffff, /* 0c3b */ 0xffff, /* 0c3c */ 0xffff, /* 0c3d */ 0xffff, /* 0c3e */ 0xffff, /* 0c3f */ 0xffff, /* 0c40 */ 0xffff, /* 0c41 */ 0xffff, /* 0c42 */ 0xffff, /* 0c43 */ 0xffff, /* 0c44 */ 0xffff, /* 0c45 */ 0xffff, /* 0c46 */ 0xffff, /* 0c47 */ 0xffff, /* 0c48 */ 0xffff, /* 0c49 */ 0xffff, /* 0c4a */ 0xffff, /* 0c4b */ 0xffff, /* 0c4c */ 0xffff, /* 0c4d */ 0xffff, /* 0c4e */ 0xffff, /* 0c4f */ 0xffff, /* 0c50 */ 0xffff, /* 0c51 */ 0xffff, /* 0c52 */ 0xffff, /* 0c53 */ 0xffff, /* 0c54 */ 0xffff, /* 0c55 */ 0xffff, /* 0c56 */ 0xffff, /* 0c57 */ 0xffff, /* 0c58 */ 0xffff, /* 0c59 */ 0xffff, /* 0c5a */ 0xffff, /* 0c5b */ 0xffff, /* 0c5c */ 0xffff, /* 0c5d */ 0xffff, /* 0c5e */ 0xffff, /* 0c5f */ 0xffff, /* 0c60 */ 0xffff, /* 0c61 */ 0xffff, /* 0c62 */ 0xffff, /* 0c63 */ 0xffff, /* 0c64 */ 0xffff, /* 0c65 */ 0xffff, /* 0c66 */ 0xffff, /* 0c67 */ 0xffff, /* 0c68 */ 0xffff, /* 0c69 */ 0xffff, /* 0c6a */ 0xffff, /* 0c6b */ 0xffff, /* 0c6c */ 0xffff, /* 0c6d */ 0xffff, /* 0c6e */ 0xffff, /* 0c6f */ 0xffff, /* 0c70 */ 0xffff, /* 0c71 */ 0xffff, /* 0c72 */ 0xffff, /* 0c73 */ 0xffff, /* 0c74 */ 0xffff, /* 0c75 */ 0xffff, /* 0c76 */ 0xffff, /* 0c77 */ 0xffff, /* 0c78 */ 0xffff, /* 0c79 */ 0xffff, /* 0c7a */ 0xffff, /* 0c7b */ 0xffff, /* 0c7c */ 0xffff, /* 0c7d */ 0xffff, /* 0c7e */ 0xffff, /* 0c7f */ 0xffff, /* 0c80 */ 0xffff, /* 0c81 */ 0xffff, /* 0c82 */ 0xffff, /* 0c83 */ 0xffff, /* 0c84 */ 0xffff, /* 0c85 */ 0xffff, /* 0c86 */ 0xffff, /* 0c87 */ 0xffff, /* 0c88 */ 0xffff, /* 0c89 */ 0xffff, /* 0c8a */ 0xffff, /* 0c8b */ 0xffff, /* 0c8c */ 0xffff, /* 0c8d */ 0xffff, /* 0c8e */ 0xffff, /* 0c8f */ 0xffff, /* 0c90 */ 0xffff, /* 0c91 */ 0xffff, /* 0c92 */ 0xffff, /* 0c93 */ 0xffff, /* 0c94 */ 0xffff, /* 0c95 */ 0xffff, /* 0c96 */ 0xffff, /* 0c97 */ 0xffff, /* 0c98 */ 0xffff, /* 0c99 */ 0xffff, /* 0c9a */ 0xffff, /* 0c9b */ 0xffff, /* 0c9c */ 0xffff, /* 0c9d */ 0xffff, /* 0c9e */ 0xffff, /* 0c9f */ 0xffff, /* 0ca0 */ 0xffff, /* 0ca1 */ 0xffff, /* 0ca2 */ 0xffff, /* 0ca3 */ 0xffff, /* 0ca4 */ 0xffff, /* 0ca5 */ 0xffff, /* 0ca6 */ 0xffff, /* 0ca7 */ 0xffff, /* 0ca8 */ 0xffff, /* 0ca9 */ 0xffff, /* 0caa */ 0xffff, /* 0cab */ 0xffff, /* 0cac */ 0xffff, /* 0cad */ 0xffff, /* 0cae */ 0xffff, /* 0caf */ 0xffff, /* 0cb0 */ 0xffff, /* 0cb1 */ 0xffff, /* 0cb2 */ 0xffff, /* 0cb3 */ 0xffff, /* 0cb4 */ 0xffff, /* 0cb5 */ 0xffff, /* 0cb6 */ 0xffff, /* 0cb7 */ 0xffff, /* 0cb8 */ 0xffff, /* 0cb9 */ 0xffff, /* 0cba */ 0xffff, /* 0cbb */ 0xffff, /* 0cbc */ 0xffff, /* 0cbd */ 0xffff, /* 0cbe */ 0xffff, /* 0cbf */ 0xffff, /* 0cc0 */ 0xffff, /* 0cc1 */ 0xffff, /* 0cc2 */ 0xffff, /* 0cc3 */ 0xffff, /* 0cc4 */ 0xffff, /* 0cc5 */ 0xffff, /* 0cc6 */ 0xffff, /* 0cc7 */ 0xffff, /* 0cc8 */ 0xffff, /* 0cc9 */ 0xffff, /* 0cca */ 0xffff, /* 0ccb */ 0xffff, /* 0ccc */ 0xffff, /* 0ccd */ 0xffff, /* 0cce */ 0xffff, /* 0ccf */ 0xffff, /* 0cd0 */ 0xffff, /* 0cd1 */ 0xffff, /* 0cd2 */ 0xffff, /* 0cd3 */ 0xffff, /* 0cd4 */ 0xffff, /* 0cd5 */ 0xffff, /* 0cd6 */ 0xffff, /* 0cd7 */ 0xffff, /* 0cd8 */ 0xffff, /* 0cd9 */ 0xffff, /* 0cda */ 0xffff, /* 0cdb */ 0xffff, /* 0cdc */ 0xffff, /* 0cdd */ 0xffff, /* 0cde */ 0xffff, /* 0cdf */ 0xffff, /* 0ce0 */ 0xffff, /* 0ce1 */ 0xffff, /* 0ce2 */ 0xffff, /* 0ce3 */ 0xffff, /* 0ce4 */ 0xffff, /* 0ce5 */ 0xffff, /* 0ce6 */ 0xffff, /* 0ce7 */ 0xffff, /* 0ce8 */ 0xffff, /* 0ce9 */ 0xffff, /* 0cea */ 0xffff, /* 0ceb */ 0xffff, /* 0cec */ 0xffff, /* 0ced */ 0xffff, /* 0cee */ 0xffff, /* 0cef */ 0xffff, /* 0cf0 */ 0xffff, /* 0cf1 */ 0xffff, /* 0cf2 */ 0xffff, /* 0cf3 */ 0xffff, /* 0cf4 */ 0xffff, /* 0cf5 */ 0xffff, /* 0cf6 */ 0xffff, /* 0cf7 */ 0xffff, /* 0cf8 */ 0xffff, /* 0cf9 */ 0xffff, /* 0cfa */ 0xffff, /* 0cfb */ 0xffff, /* 0cfc */ 0xffff, /* 0cfd */ 0xffff, /* 0cfe */ 0xffff, /* 0cff */ 0xffff, /* 0d00 */ 0xffff, /* 0d01 */ 0xffff, /* 0d02 */ 0xffff, /* 0d03 */ 0xffff, /* 0d04 */ 0xffff, /* 0d05 */ 0xffff, /* 0d06 */ 0xffff, /* 0d07 */ 0xffff, /* 0d08 */ 0xffff, /* 0d09 */ 0xffff, /* 0d0a */ 0xffff, /* 0d0b */ 0xffff, /* 0d0c */ 0xffff, /* 0d0d */ 0xffff, /* 0d0e */ 0xffff, /* 0d0f */ 0xffff, /* 0d10 */ 0xffff, /* 0d11 */ 0xffff, /* 0d12 */ 0xffff, /* 0d13 */ 0xffff, /* 0d14 */ 0xffff, /* 0d15 */ 0xffff, /* 0d16 */ 0xffff, /* 0d17 */ 0xffff, /* 0d18 */ 0xffff, /* 0d19 */ 0xffff, /* 0d1a */ 0xffff, /* 0d1b */ 0xffff, /* 0d1c */ 0xffff, /* 0d1d */ 0xffff, /* 0d1e */ 0xffff, /* 0d1f */ 0xffff, /* 0d20 */ 0xffff, /* 0d21 */ 0xffff, /* 0d22 */ 0xffff, /* 0d23 */ 0xffff, /* 0d24 */ 0xffff, /* 0d25 */ 0xffff, /* 0d26 */ 0xffff, /* 0d27 */ 0xffff, /* 0d28 */ 0xffff, /* 0d29 */ 0xffff, /* 0d2a */ 0xffff, /* 0d2b */ 0xffff, /* 0d2c */ 0xffff, /* 0d2d */ 0xffff, /* 0d2e */ 0xffff, /* 0d2f */ 0xffff, /* 0d30 */ 0xffff, /* 0d31 */ 0xffff, /* 0d32 */ 0xffff, /* 0d33 */ 0xffff, /* 0d34 */ 0xffff, /* 0d35 */ 0xffff, /* 0d36 */ 0xffff, /* 0d37 */ 0xffff, /* 0d38 */ 0xffff, /* 0d39 */ 0xffff, /* 0d3a */ 0xffff, /* 0d3b */ 0xffff, /* 0d3c */ 0xffff, /* 0d3d */ 0xffff, /* 0d3e */ 0xffff, /* 0d3f */ 0xffff, /* 0d40 */ 0xffff, /* 0d41 */ 0xffff, /* 0d42 */ 0xffff, /* 0d43 */ 0xffff, /* 0d44 */ 0xffff, /* 0d45 */ 0xffff, /* 0d46 */ 0xffff, /* 0d47 */ 0xffff, /* 0d48 */ 0xffff, /* 0d49 */ 0xffff, /* 0d4a */ 0xffff, /* 0d4b */ 0xffff, /* 0d4c */ 0xffff, /* 0d4d */ 0xffff, /* 0d4e */ 0xffff, /* 0d4f */ 0xffff, /* 0d50 */ 0xffff, /* 0d51 */ 0xffff, /* 0d52 */ 0xffff, /* 0d53 */ 0xffff, /* 0d54 */ 0xffff, /* 0d55 */ 0xffff, /* 0d56 */ 0xffff, /* 0d57 */ 0xffff, /* 0d58 */ 0xffff, /* 0d59 */ 0xffff, /* 0d5a */ 0xffff, /* 0d5b */ 0xffff, /* 0d5c */ 0xffff, /* 0d5d */ 0xffff, /* 0d5e */ 0xffff, /* 0d5f */ 0xffff, /* 0d60 */ 0xffff, /* 0d61 */ 0xffff, /* 0d62 */ 0xffff, /* 0d63 */ 0xffff, /* 0d64 */ 0xffff, /* 0d65 */ 0xffff, /* 0d66 */ 0xffff, /* 0d67 */ 0xffff, /* 0d68 */ 0xffff, /* 0d69 */ 0xffff, /* 0d6a */ 0xffff, /* 0d6b */ 0xffff, /* 0d6c */ 0xffff, /* 0d6d */ 0xffff, /* 0d6e */ 0xffff, /* 0d6f */ 0xffff, /* 0d70 */ 0xffff, /* 0d71 */ 0xffff, /* 0d72 */ 0xffff, /* 0d73 */ 0xffff, /* 0d74 */ 0xffff, /* 0d75 */ 0xffff, /* 0d76 */ 0xffff, /* 0d77 */ 0xffff, /* 0d78 */ 0xffff, /* 0d79 */ 0xffff, /* 0d7a */ 0xffff, /* 0d7b */ 0xffff, /* 0d7c */ 0xffff, /* 0d7d */ 0xffff, /* 0d7e */ 0xffff, /* 0d7f */ 0xffff, /* 0d80 */ 0xffff, /* 0d81 */ 0xffff, /* 0d82 */ 0xffff, /* 0d83 */ 0xffff, /* 0d84 */ 0xffff, /* 0d85 */ 0xffff, /* 0d86 */ 0xffff, /* 0d87 */ 0xffff, /* 0d88 */ 0xffff, /* 0d89 */ 0xffff, /* 0d8a */ 0xffff, /* 0d8b */ 0xffff, /* 0d8c */ 0xffff, /* 0d8d */ 0xffff, /* 0d8e */ 0xffff, /* 0d8f */ 0xffff, /* 0d90 */ 0xffff, /* 0d91 */ 0xffff, /* 0d92 */ 0xffff, /* 0d93 */ 0xffff, /* 0d94 */ 0xffff, /* 0d95 */ 0xffff, /* 0d96 */ 0xffff, /* 0d97 */ 0xffff, /* 0d98 */ 0xffff, /* 0d99 */ 0xffff, /* 0d9a */ 0xffff, /* 0d9b */ 0xffff, /* 0d9c */ 0xffff, /* 0d9d */ 0xffff, /* 0d9e */ 0xffff, /* 0d9f */ 0xffff, /* 0da0 */ 0xffff, /* 0da1 */ 0xffff, /* 0da2 */ 0xffff, /* 0da3 */ 0xffff, /* 0da4 */ 0xffff, /* 0da5 */ 0xffff, /* 0da6 */ 0xffff, /* 0da7 */ 0xffff, /* 0da8 */ 0xffff, /* 0da9 */ 0xffff, /* 0daa */ 0xffff, /* 0dab */ 0xffff, /* 0dac */ 0xffff, /* 0dad */ 0xffff, /* 0dae */ 0xffff, /* 0daf */ 0xffff, /* 0db0 */ 0xffff, /* 0db1 */ 0xffff, /* 0db2 */ 0xffff, /* 0db3 */ 0xffff, /* 0db4 */ 0xffff, /* 0db5 */ 0xffff, /* 0db6 */ 0xffff, /* 0db7 */ 0xffff, /* 0db8 */ 0xffff, /* 0db9 */ 0xffff, /* 0dba */ 0xffff, /* 0dbb */ 0xffff, /* 0dbc */ 0xffff, /* 0dbd */ 0xffff, /* 0dbe */ 0xffff, /* 0dbf */ 0xffff, /* 0dc0 */ 0xffff, /* 0dc1 */ 0xffff, /* 0dc2 */ 0xffff, /* 0dc3 */ 0xffff, /* 0dc4 */ 0xffff, /* 0dc5 */ 0xffff, /* 0dc6 */ 0xffff, /* 0dc7 */ 0xffff, /* 0dc8 */ 0xffff, /* 0dc9 */ 0xffff, /* 0dca */ 0xffff, /* 0dcb */ 0xffff, /* 0dcc */ 0xffff, /* 0dcd */ 0xffff, /* 0dce */ 0xffff, /* 0dcf */ 0xffff, /* 0dd0 */ 0xffff, /* 0dd1 */ 0xffff, /* 0dd2 */ 0xffff, /* 0dd3 */ 0xffff, /* 0dd4 */ 0xffff, /* 0dd5 */ 0xffff, /* 0dd6 */ 0xffff, /* 0dd7 */ 0xffff, /* 0dd8 */ 0xffff, /* 0dd9 */ 0xffff, /* 0dda */ 0xffff, /* 0ddb */ 0xffff, /* 0ddc */ 0xffff, /* 0ddd */ 0xffff, /* 0dde */ 0xffff, /* 0ddf */ 0xffff, /* 0de0 */ 0xffff, /* 0de1 */ 0xffff, /* 0de2 */ 0xffff, /* 0de3 */ 0xffff, /* 0de4 */ 0xffff, /* 0de5 */ 0xffff, /* 0de6 */ 0xffff, /* 0de7 */ 0xffff, /* 0de8 */ 0xffff, /* 0de9 */ 0xffff, /* 0dea */ 0xffff, /* 0deb */ 0xffff, /* 0dec */ 0xffff, /* 0ded */ 0xffff, /* 0dee */ 0xffff, /* 0def */ 0xffff, /* 0df0 */ 0xffff, /* 0df1 */ 0xffff, /* 0df2 */ 0xffff, /* 0df3 */ 0xffff, /* 0df4 */ 0xffff, /* 0df5 */ 0xffff, /* 0df6 */ 0xffff, /* 0df7 */ 0xffff, /* 0df8 */ 0xffff, /* 0df9 */ 0xffff, /* 0dfa */ 0xffff, /* 0dfb */ 0xffff, /* 0dfc */ 0xffff, /* 0dfd */ 0xffff, /* 0dfe */ 0xffff, /* 0dff */ 0xffff, /* 0e00 */ 0xffff, /* 0e01 */ 0xffff, /* 0e02 */ 0xffff, /* 0e03 */ 0xffff, /* 0e04 */ 0xffff, /* 0e05 */ 0xffff, /* 0e06 */ 0xffff, /* 0e07 */ 0xffff, /* 0e08 */ 0xffff, /* 0e09 */ 0xffff, /* 0e0a */ 0xffff, /* 0e0b */ 0xffff, /* 0e0c */ 0xffff, /* 0e0d */ 0xffff, /* 0e0e */ 0xffff, /* 0e0f */ 0xffff, /* 0e10 */ 0xffff, /* 0e11 */ 0xffff, /* 0e12 */ 0xffff, /* 0e13 */ 0xffff, /* 0e14 */ 0xffff, /* 0e15 */ 0xffff, /* 0e16 */ 0xffff, /* 0e17 */ 0xffff, /* 0e18 */ 0xffff, /* 0e19 */ 0xffff, /* 0e1a */ 0xffff, /* 0e1b */ 0xffff, /* 0e1c */ 0xffff, /* 0e1d */ 0xffff, /* 0e1e */ 0xffff, /* 0e1f */ 0xffff, /* 0e20 */ 0xffff, /* 0e21 */ 0xffff, /* 0e22 */ 0xffff, /* 0e23 */ 0xffff, /* 0e24 */ 0xffff, /* 0e25 */ 0xffff, /* 0e26 */ 0xffff, /* 0e27 */ 0xffff, /* 0e28 */ 0xffff, /* 0e29 */ 0xffff, /* 0e2a */ 0xffff, /* 0e2b */ 0xffff, /* 0e2c */ 0xffff, /* 0e2d */ 0xffff, /* 0e2e */ 0xffff, /* 0e2f */ 0xffff, /* 0e30 */ 0xffff, /* 0e31 */ 0xffff, /* 0e32 */ 0xffff, /* 0e33 */ 0xffff, /* 0e34 */ 0xffff, /* 0e35 */ 0xffff, /* 0e36 */ 0xffff, /* 0e37 */ 0xffff, /* 0e38 */ 0xffff, /* 0e39 */ 0xffff, /* 0e3a */ 0xffff, /* 0e3b */ 0xffff, /* 0e3c */ 0xffff, /* 0e3d */ 0xffff, /* 0e3e */ 0xffff, /* 0e3f */ 0xffff, /* 0e40 */ 0xffff, /* 0e41 */ 0xffff, /* 0e42 */ 0xffff, /* 0e43 */ 0xffff, /* 0e44 */ 0xffff, /* 0e45 */ 0xffff, /* 0e46 */ 0xffff, /* 0e47 */ 0xffff, /* 0e48 */ 0xffff, /* 0e49 */ 0xffff, /* 0e4a */ 0xffff, /* 0e4b */ 0xffff, /* 0e4c */ 0xffff, /* 0e4d */ 0xffff, /* 0e4e */ 0xffff, /* 0e4f */ 0xffff, /* 0e50 */ 0xffff, /* 0e51 */ 0xffff, /* 0e52 */ 0xffff, /* 0e53 */ 0xffff, /* 0e54 */ 0xffff, /* 0e55 */ 0xffff, /* 0e56 */ 0xffff, /* 0e57 */ 0xffff, /* 0e58 */ 0xffff, /* 0e59 */ 0xffff, /* 0e5a */ 0xffff, /* 0e5b */ 0xffff, /* 0e5c */ 0xffff, /* 0e5d */ 0xffff, /* 0e5e */ 0xffff, /* 0e5f */ 0xffff, /* 0e60 */ 0xffff, /* 0e61 */ 0xffff, /* 0e62 */ 0xffff, /* 0e63 */ 0xffff, /* 0e64 */ 0xffff, /* 0e65 */ 0xffff, /* 0e66 */ 0xffff, /* 0e67 */ 0xffff, /* 0e68 */ 0xffff, /* 0e69 */ 0xffff, /* 0e6a */ 0xffff, /* 0e6b */ 0xffff, /* 0e6c */ 0xffff, /* 0e6d */ 0xffff, /* 0e6e */ 0xffff, /* 0e6f */ 0xffff, /* 0e70 */ 0xffff, /* 0e71 */ 0xffff, /* 0e72 */ 0xffff, /* 0e73 */ 0xffff, /* 0e74 */ 0xffff, /* 0e75 */ 0xffff, /* 0e76 */ 0xffff, /* 0e77 */ 0xffff, /* 0e78 */ 0xffff, /* 0e79 */ 0xffff, /* 0e7a */ 0xffff, /* 0e7b */ 0xffff, /* 0e7c */ 0xffff, /* 0e7d */ 0xffff, /* 0e7e */ 0xffff, /* 0e7f */ 0xffff, /* 0e80 */ 0xffff, /* 0e81 */ 0xffff, /* 0e82 */ 0xffff, /* 0e83 */ 0xffff, /* 0e84 */ 0xffff, /* 0e85 */ 0xffff, /* 0e86 */ 0xffff, /* 0e87 */ 0xffff, /* 0e88 */ 0xffff, /* 0e89 */ 0xffff, /* 0e8a */ 0xffff, /* 0e8b */ 0xffff, /* 0e8c */ 0xffff, /* 0e8d */ 0xffff, /* 0e8e */ 0xffff, /* 0e8f */ 0xffff, /* 0e90 */ 0xffff, /* 0e91 */ 0xffff, /* 0e92 */ 0xffff, /* 0e93 */ 0xffff, /* 0e94 */ 0xffff, /* 0e95 */ 0xffff, /* 0e96 */ 0xffff, /* 0e97 */ 0xffff, /* 0e98 */ 0xffff, /* 0e99 */ 0xffff, /* 0e9a */ 0xffff, /* 0e9b */ 0xffff, /* 0e9c */ 0xffff, /* 0e9d */ 0xffff, /* 0e9e */ 0xffff, /* 0e9f */ 0xffff, /* 0ea0 */ 0xffff, /* 0ea1 */ 0xffff, /* 0ea2 */ 0xffff, /* 0ea3 */ 0xffff, /* 0ea4 */ 0xffff, /* 0ea5 */ 0xffff, /* 0ea6 */ 0xffff, /* 0ea7 */ 0xffff, /* 0ea8 */ 0xffff, /* 0ea9 */ 0xffff, /* 0eaa */ 0xffff, /* 0eab */ 0xffff, /* 0eac */ 0xffff, /* 0ead */ 0xffff, /* 0eae */ 0xffff, /* 0eaf */ 0xffff, /* 0eb0 */ 0xffff, /* 0eb1 */ 0xffff, /* 0eb2 */ 0xffff, /* 0eb3 */ 0xffff, /* 0eb4 */ 0xffff, /* 0eb5 */ 0xffff, /* 0eb6 */ 0xffff, /* 0eb7 */ 0xffff, /* 0eb8 */ 0xffff, /* 0eb9 */ 0xffff, /* 0eba */ 0xffff, /* 0ebb */ 0xffff, /* 0ebc */ 0xffff, /* 0ebd */ 0xffff, /* 0ebe */ 0xffff, /* 0ebf */ 0xffff, /* 0ec0 */ 0xffff, /* 0ec1 */ 0xffff, /* 0ec2 */ 0xffff, /* 0ec3 */ 0xffff, /* 0ec4 */ 0xffff, /* 0ec5 */ 0xffff, /* 0ec6 */ 0xffff, /* 0ec7 */ 0xffff, /* 0ec8 */ 0xffff, /* 0ec9 */ 0xffff, /* 0eca */ 0xffff, /* 0ecb */ 0xffff, /* 0ecc */ 0xffff, /* 0ecd */ 0xffff, /* 0ece */ 0xffff, /* 0ecf */ 0xffff, /* 0ed0 */ 0xffff, /* 0ed1 */ 0xffff, /* 0ed2 */ 0xffff, /* 0ed3 */ 0xffff, /* 0ed4 */ 0xffff, /* 0ed5 */ 0xffff, /* 0ed6 */ 0xffff, /* 0ed7 */ 0xffff, /* 0ed8 */ 0xffff, /* 0ed9 */ 0xffff, /* 0eda */ 0xffff, /* 0edb */ 0xffff, /* 0edc */ 0xffff, /* 0edd */ 0xffff, /* 0ede */ 0xffff, /* 0edf */ 0xffff, /* 0ee0 */ 0xffff, /* 0ee1 */ 0xffff, /* 0ee2 */ 0xffff, /* 0ee3 */ 0xffff, /* 0ee4 */ 0xffff, /* 0ee5 */ 0xffff, /* 0ee6 */ 0xffff, /* 0ee7 */ 0xffff, /* 0ee8 */ 0xffff, /* 0ee9 */ 0xffff, /* 0eea */ 0xffff, /* 0eeb */ 0xffff, /* 0eec */ 0xffff, /* 0eed */ 0xffff, /* 0eee */ 0xffff, /* 0eef */ 0xffff, /* 0ef0 */ 0xffff, /* 0ef1 */ 0xffff, /* 0ef2 */ 0xffff, /* 0ef3 */ 0xffff, /* 0ef4 */ 0xffff, /* 0ef5 */ 0xffff, /* 0ef6 */ 0xffff, /* 0ef7 */ 0xffff, /* 0ef8 */ 0xffff, /* 0ef9 */ 0xffff, /* 0efa */ 0xffff, /* 0efb */ 0xffff, /* 0efc */ 0xffff, /* 0efd */ 0xffff, /* 0efe */ 0xffff, /* 0eff */ 0xffff, /* 0f00 */ 0xffff, /* 0f01 */ 0xffff, /* 0f02 */ 0xffff, /* 0f03 */ 0xffff, /* 0f04 */ 0xffff, /* 0f05 */ 0xffff, /* 0f06 */ 0xffff, /* 0f07 */ 0xffff, /* 0f08 */ 0xffff, /* 0f09 */ 0xffff, /* 0f0a */ 0xffff, /* 0f0b */ 0xffff, /* 0f0c */ 0xffff, /* 0f0d */ 0xffff, /* 0f0e */ 0xffff, /* 0f0f */ 0xffff, /* 0f10 */ 0xffff, /* 0f11 */ 0xffff, /* 0f12 */ 0xffff, /* 0f13 */ 0xffff, /* 0f14 */ 0xffff, /* 0f15 */ 0xffff, /* 0f16 */ 0xffff, /* 0f17 */ 0xffff, /* 0f18 */ 0xffff, /* 0f19 */ 0xffff, /* 0f1a */ 0xffff, /* 0f1b */ 0xffff, /* 0f1c */ 0xffff, /* 0f1d */ 0xffff, /* 0f1e */ 0xffff, /* 0f1f */ 0xffff, /* 0f20 */ 0xffff, /* 0f21 */ 0xffff, /* 0f22 */ 0xffff, /* 0f23 */ 0xffff, /* 0f24 */ 0xffff, /* 0f25 */ 0xffff, /* 0f26 */ 0xffff, /* 0f27 */ 0xffff, /* 0f28 */ 0xffff, /* 0f29 */ 0xffff, /* 0f2a */ 0xffff, /* 0f2b */ 0xffff, /* 0f2c */ 0xffff, /* 0f2d */ 0xffff, /* 0f2e */ 0xffff, /* 0f2f */ 0xffff, /* 0f30 */ 0xffff, /* 0f31 */ 0xffff, /* 0f32 */ 0xffff, /* 0f33 */ 0xffff, /* 0f34 */ 0xffff, /* 0f35 */ 0xffff, /* 0f36 */ 0xffff, /* 0f37 */ 0xffff, /* 0f38 */ 0xffff, /* 0f39 */ 0xffff, /* 0f3a */ 0xffff, /* 0f3b */ 0xffff, /* 0f3c */ 0xffff, /* 0f3d */ 0xffff, /* 0f3e */ 0xffff, /* 0f3f */ 0xffff, /* 0f40 */ 0xffff, /* 0f41 */ 0xffff, /* 0f42 */ 0xffff, /* 0f43 */ 0xffff, /* 0f44 */ 0xffff, /* 0f45 */ 0xffff, /* 0f46 */ 0xffff, /* 0f47 */ 0xffff, /* 0f48 */ 0xffff, /* 0f49 */ 0xffff, /* 0f4a */ 0xffff, /* 0f4b */ 0xffff, /* 0f4c */ 0xffff, /* 0f4d */ 0xffff, /* 0f4e */ 0xffff, /* 0f4f */ 0xffff, /* 0f50 */ 0xffff, /* 0f51 */ 0xffff, /* 0f52 */ 0xffff, /* 0f53 */ 0xffff, /* 0f54 */ 0xffff, /* 0f55 */ 0xffff, /* 0f56 */ 0xffff, /* 0f57 */ 0xffff, /* 0f58 */ 0xffff, /* 0f59 */ 0xffff, /* 0f5a */ 0xffff, /* 0f5b */ 0xffff, /* 0f5c */ 0xffff, /* 0f5d */ 0xffff, /* 0f5e */ 0xffff, /* 0f5f */ 0xffff, /* 0f60 */ 0xffff, /* 0f61 */ 0xffff, /* 0f62 */ 0xffff, /* 0f63 */ 0xffff, /* 0f64 */ 0xffff, /* 0f65 */ 0xffff, /* 0f66 */ 0xffff, /* 0f67 */ 0xffff, /* 0f68 */ 0xffff, /* 0f69 */ 0xffff, /* 0f6a */ 0xffff, /* 0f6b */ 0xffff, /* 0f6c */ 0xffff, /* 0f6d */ 0xffff, /* 0f6e */ 0xffff, /* 0f6f */ 0xffff, /* 0f70 */ 0xffff, /* 0f71 */ 0xffff, /* 0f72 */ 0xffff, /* 0f73 */ 0xffff, /* 0f74 */ 0xffff, /* 0f75 */ 0xffff, /* 0f76 */ 0xffff, /* 0f77 */ 0xffff, /* 0f78 */ 0xffff, /* 0f79 */ 0xffff, /* 0f7a */ 0xffff, /* 0f7b */ 0xffff, /* 0f7c */ 0xffff, /* 0f7d */ 0xffff, /* 0f7e */ 0xffff, /* 0f7f */ 0xffff, /* 0f80 */ 0xffff, /* 0f81 */ 0xffff, /* 0f82 */ 0xffff, /* 0f83 */ 0xffff, /* 0f84 */ 0xffff, /* 0f85 */ 0xffff, /* 0f86 */ 0xffff, /* 0f87 */ 0xffff, /* 0f88 */ 0xffff, /* 0f89 */ 0xffff, /* 0f8a */ 0xffff, /* 0f8b */ 0xffff, /* 0f8c */ 0xffff, /* 0f8d */ 0xffff, /* 0f8e */ 0xffff, /* 0f8f */ 0xffff, /* 0f90 */ 0xffff, /* 0f91 */ 0xffff, /* 0f92 */ 0xffff, /* 0f93 */ 0xffff, /* 0f94 */ 0xffff, /* 0f95 */ 0xffff, /* 0f96 */ 0xffff, /* 0f97 */ 0xffff, /* 0f98 */ 0xffff, /* 0f99 */ 0xffff, /* 0f9a */ 0xffff, /* 0f9b */ 0xffff, /* 0f9c */ 0xffff, /* 0f9d */ 0xffff, /* 0f9e */ 0xffff, /* 0f9f */ 0xffff, /* 0fa0 */ 0xffff, /* 0fa1 */ 0xffff, /* 0fa2 */ 0xffff, /* 0fa3 */ 0xffff, /* 0fa4 */ 0xffff, /* 0fa5 */ 0xffff, /* 0fa6 */ 0xffff, /* 0fa7 */ 0xffff, /* 0fa8 */ 0xffff, /* 0fa9 */ 0xffff, /* 0faa */ 0xffff, /* 0fab */ 0xffff, /* 0fac */ 0xffff, /* 0fad */ 0xffff, /* 0fae */ 0xffff, /* 0faf */ 0xffff, /* 0fb0 */ 0xffff, /* 0fb1 */ 0xffff, /* 0fb2 */ 0xffff, /* 0fb3 */ 0xffff, /* 0fb4 */ 0xffff, /* 0fb5 */ 0xffff, /* 0fb6 */ 0xffff, /* 0fb7 */ 0xffff, /* 0fb8 */ 0xffff, /* 0fb9 */ 0xffff, /* 0fba */ 0xffff, /* 0fbb */ 0xffff, /* 0fbc */ 0xffff, /* 0fbd */ 0xffff, /* 0fbe */ 0xffff, /* 0fbf */ 0xffff, /* 0fc0 */ 0xffff, /* 0fc1 */ 0xffff, /* 0fc2 */ 0xffff, /* 0fc3 */ 0xffff, /* 0fc4 */ 0xffff, /* 0fc5 */ 0xffff, /* 0fc6 */ 0xffff, /* 0fc7 */ 0xffff, /* 0fc8 */ 0xffff, /* 0fc9 */ 0xffff, /* 0fca */ 0xffff, /* 0fcb */ 0xffff, /* 0fcc */ 0xffff, /* 0fcd */ 0xffff, /* 0fce */ 0xffff, /* 0fcf */ 0xffff, /* 0fd0 */ 0xffff, /* 0fd1 */ 0xffff, /* 0fd2 */ 0xffff, /* 0fd3 */ 0xffff, /* 0fd4 */ 0xffff, /* 0fd5 */ 0xffff, /* 0fd6 */ 0xffff, /* 0fd7 */ 0xffff, /* 0fd8 */ 0xffff, /* 0fd9 */ 0xffff, /* 0fda */ 0xffff, /* 0fdb */ 0xffff, /* 0fdc */ 0xffff, /* 0fdd */ 0xffff, /* 0fde */ 0xffff, /* 0fdf */ 0xffff, /* 0fe0 */ 0xffff, /* 0fe1 */ 0xffff, /* 0fe2 */ 0xffff, /* 0fe3 */ 0xffff, /* 0fe4 */ 0xffff, /* 0fe5 */ 0xffff, /* 0fe6 */ 0xffff, /* 0fe7 */ 0xffff, /* 0fe8 */ 0xffff, /* 0fe9 */ 0xffff, /* 0fea */ 0xffff, /* 0feb */ 0xffff, /* 0fec */ 0xffff, /* 0fed */ 0xffff, /* 0fee */ 0xffff, /* 0fef */ 0xffff, /* 0ff0 */ 0xffff, /* 0ff1 */ 0xffff, /* 0ff2 */ 0xffff, /* 0ff3 */ 0xffff, /* 0ff4 */ 0xffff, /* 0ff5 */ 0xffff, /* 0ff6 */ 0xffff, /* 0ff7 */ 0xffff, /* 0ff8 */ 0xffff, /* 0ff9 */ 0xffff, /* 0ffa */ 0xffff, /* 0ffb */ 0xffff, /* 0ffc */ 0xffff, /* 0ffd */ 0xffff, /* 0ffe */ 0xffff, /* 0fff */ 0xffff, /* 1000 */ 0xffff, /* 1001 */ 0xffff, /* 1002 */ 0xffff, /* 1003 */ 0xffff, /* 1004 */ 0xffff, /* 1005 */ 0xffff, /* 1006 */ 0xffff, /* 1007 */ 0xffff, /* 1008 */ 0xffff, /* 1009 */ 0xffff, /* 100a */ 0xffff, /* 100b */ 0xffff, /* 100c */ 0xffff, /* 100d */ 0xffff, /* 100e */ 0xffff, /* 100f */ 0xffff, /* 1010 */ 0xffff, /* 1011 */ 0xffff, /* 1012 */ 0xffff, /* 1013 */ 0xffff, /* 1014 */ 0xffff, /* 1015 */ 0xffff, /* 1016 */ 0xffff, /* 1017 */ 0xffff, /* 1018 */ 0xffff, /* 1019 */ 0xffff, /* 101a */ 0xffff, /* 101b */ 0xffff, /* 101c */ 0xffff, /* 101d */ 0xffff, /* 101e */ 0xffff, /* 101f */ 0xffff, /* 1020 */ 0xffff, /* 1021 */ 0xffff, /* 1022 */ 0xffff, /* 1023 */ 0xffff, /* 1024 */ 0xffff, /* 1025 */ 0xffff, /* 1026 */ 0xffff, /* 1027 */ 0xffff, /* 1028 */ 0xffff, /* 1029 */ 0xffff, /* 102a */ 0xffff, /* 102b */ 0xffff, /* 102c */ 0xffff, /* 102d */ 0xffff, /* 102e */ 0xffff, /* 102f */ 0xffff, /* 1030 */ 0xffff, /* 1031 */ 0xffff, /* 1032 */ 0xffff, /* 1033 */ 0xffff, /* 1034 */ 0xffff, /* 1035 */ 0xffff, /* 1036 */ 0xffff, /* 1037 */ 0xffff, /* 1038 */ 0xffff, /* 1039 */ 0xffff, /* 103a */ 0xffff, /* 103b */ 0xffff, /* 103c */ 0xffff, /* 103d */ 0xffff, /* 103e */ 0xffff, /* 103f */ 0xffff, /* 1040 */ 0xffff, /* 1041 */ 0xffff, /* 1042 */ 0xffff, /* 1043 */ 0xffff, /* 1044 */ 0xffff, /* 1045 */ 0xffff, /* 1046 */ 0xffff, /* 1047 */ 0xffff, /* 1048 */ 0xffff, /* 1049 */ 0xffff, /* 104a */ 0xffff, /* 104b */ 0xffff, /* 104c */ 0xffff, /* 104d */ 0xffff, /* 104e */ 0xffff, /* 104f */ 0xffff, /* 1050 */ 0xffff, /* 1051 */ 0xffff, /* 1052 */ 0xffff, /* 1053 */ 0xffff, /* 1054 */ 0xffff, /* 1055 */ 0xffff, /* 1056 */ 0xffff, /* 1057 */ 0xffff, /* 1058 */ 0xffff, /* 1059 */ 0xffff, /* 105a */ 0xffff, /* 105b */ 0xffff, /* 105c */ 0xffff, /* 105d */ 0xffff, /* 105e */ 0xffff, /* 105f */ 0xffff, /* 1060 */ 0xffff, /* 1061 */ 0xffff, /* 1062 */ 0xffff, /* 1063 */ 0xffff, /* 1064 */ 0xffff, /* 1065 */ 0xffff, /* 1066 */ 0xffff, /* 1067 */ 0xffff, /* 1068 */ 0xffff, /* 1069 */ 0xffff, /* 106a */ 0xffff, /* 106b */ 0xffff, /* 106c */ 0xffff, /* 106d */ 0xffff, /* 106e */ 0xffff, /* 106f */ 0xffff, /* 1070 */ 0xffff, /* 1071 */ 0xffff, /* 1072 */ 0xffff, /* 1073 */ 0xffff, /* 1074 */ 0xffff, /* 1075 */ 0xffff, /* 1076 */ 0xffff, /* 1077 */ 0xffff, /* 1078 */ 0xffff, /* 1079 */ 0xffff, /* 107a */ 0xffff, /* 107b */ 0xffff, /* 107c */ 0xffff, /* 107d */ 0xffff, /* 107e */ 0xffff, /* 107f */ 0xffff, /* 1080 */ 0xffff, /* 1081 */ 0xffff, /* 1082 */ 0xffff, /* 1083 */ 0xffff, /* 1084 */ 0xffff, /* 1085 */ 0xffff, /* 1086 */ 0xffff, /* 1087 */ 0xffff, /* 1088 */ 0xffff, /* 1089 */ 0xffff, /* 108a */ 0xffff, /* 108b */ 0xffff, /* 108c */ 0xffff, /* 108d */ 0xffff, /* 108e */ 0xffff, /* 108f */ 0xffff, /* 1090 */ 0xffff, /* 1091 */ 0xffff, /* 1092 */ 0xffff, /* 1093 */ 0xffff, /* 1094 */ 0xffff, /* 1095 */ 0xffff, /* 1096 */ 0xffff, /* 1097 */ 0xffff, /* 1098 */ 0xffff, /* 1099 */ 0xffff, /* 109a */ 0xffff, /* 109b */ 0xffff, /* 109c */ 0xffff, /* 109d */ 0xffff, /* 109e */ 0xffff, /* 109f */ 0xffff, /* 10a0 */ 0xffff, /* 10a1 */ 0xffff, /* 10a2 */ 0xffff, /* 10a3 */ 0xffff, /* 10a4 */ 0xffff, /* 10a5 */ 0xffff, /* 10a6 */ 0xffff, /* 10a7 */ 0xffff, /* 10a8 */ 0xffff, /* 10a9 */ 0xffff, /* 10aa */ 0xffff, /* 10ab */ 0xffff, /* 10ac */ 0xffff, /* 10ad */ 0xffff, /* 10ae */ 0xffff, /* 10af */ 0xffff, /* 10b0 */ 0xffff, /* 10b1 */ 0xffff, /* 10b2 */ 0xffff, /* 10b3 */ 0xffff, /* 10b4 */ 0xffff, /* 10b5 */ 0xffff, /* 10b6 */ 0xffff, /* 10b7 */ 0xffff, /* 10b8 */ 0xffff, /* 10b9 */ 0xffff, /* 10ba */ 0xffff, /* 10bb */ 0xffff, /* 10bc */ 0xffff, /* 10bd */ 0xffff, /* 10be */ 0xffff, /* 10bf */ 0xffff, /* 10c0 */ 0xffff, /* 10c1 */ 0xffff, /* 10c2 */ 0xffff, /* 10c3 */ 0xffff, /* 10c4 */ 0xffff, /* 10c5 */ 0xffff, /* 10c6 */ 0xffff, /* 10c7 */ 0xffff, /* 10c8 */ 0xffff, /* 10c9 */ 0xffff, /* 10ca */ 0xffff, /* 10cb */ 0xffff, /* 10cc */ 0xffff, /* 10cd */ 0xffff, /* 10ce */ 0xffff, /* 10cf */ 0xffff, /* 10d0 */ 0xffff, /* 10d1 */ 0xffff, /* 10d2 */ 0xffff, /* 10d3 */ 0xffff, /* 10d4 */ 0xffff, /* 10d5 */ 0xffff, /* 10d6 */ 0xffff, /* 10d7 */ 0xffff, /* 10d8 */ 0xffff, /* 10d9 */ 0xffff, /* 10da */ 0xffff, /* 10db */ 0xffff, /* 10dc */ 0xffff, /* 10dd */ 0xffff, /* 10de */ 0xffff, /* 10df */ 0xffff, /* 10e0 */ 0xffff, /* 10e1 */ 0xffff, /* 10e2 */ 0xffff, /* 10e3 */ 0xffff, /* 10e4 */ 0xffff, /* 10e5 */ 0xffff, /* 10e6 */ 0xffff, /* 10e7 */ 0xffff, /* 10e8 */ 0xffff, /* 10e9 */ 0xffff, /* 10ea */ 0xffff, /* 10eb */ 0xffff, /* 10ec */ 0xffff, /* 10ed */ 0xffff, /* 10ee */ 0xffff, /* 10ef */ 0xffff, /* 10f0 */ 0xffff, /* 10f1 */ 0xffff, /* 10f2 */ 0xffff, /* 10f3 */ 0xffff, /* 10f4 */ 0xffff, /* 10f5 */ 0xffff, /* 10f6 */ 0xffff, /* 10f7 */ 0xffff, /* 10f8 */ 0xffff, /* 10f9 */ 0xffff, /* 10fa */ 0xffff, /* 10fb */ 0xffff, /* 10fc */ 0xffff, /* 10fd */ 0xffff, /* 10fe */ 0xffff, /* 10ff */ 0xffff, /* 1100 */ 0xffff, /* 1101 */ 0xffff, /* 1102 */ 0xffff, /* 1103 */ 0xffff, /* 1104 */ 0xffff, /* 1105 */ 0xffff, /* 1106 */ 0xffff, /* 1107 */ 0xffff, /* 1108 */ 0xffff, /* 1109 */ 0xffff, /* 110a */ 0xffff, /* 110b */ 0xffff, /* 110c */ 0xffff, /* 110d */ 0xffff, /* 110e */ 0xffff, /* 110f */ 0xffff, /* 1110 */ 0xffff, /* 1111 */ 0xffff, /* 1112 */ 0xffff, /* 1113 */ 0xffff, /* 1114 */ 0xffff, /* 1115 */ 0xffff, /* 1116 */ 0xffff, /* 1117 */ 0xffff, /* 1118 */ 0xffff, /* 1119 */ 0xffff, /* 111a */ 0xffff, /* 111b */ 0xffff, /* 111c */ 0xffff, /* 111d */ 0xffff, /* 111e */ 0xffff, /* 111f */ 0xffff, /* 1120 */ 0xffff, /* 1121 */ 0xffff, /* 1122 */ 0xffff, /* 1123 */ 0xffff, /* 1124 */ 0xffff, /* 1125 */ 0xffff, /* 1126 */ 0xffff, /* 1127 */ 0xffff, /* 1128 */ 0xffff, /* 1129 */ 0xffff, /* 112a */ 0xffff, /* 112b */ 0xffff, /* 112c */ 0xffff, /* 112d */ 0xffff, /* 112e */ 0xffff, /* 112f */ 0xffff, /* 1130 */ 0xffff, /* 1131 */ 0xffff, /* 1132 */ 0xffff, /* 1133 */ 0xffff, /* 1134 */ 0xffff, /* 1135 */ 0xffff, /* 1136 */ 0xffff, /* 1137 */ 0xffff, /* 1138 */ 0xffff, /* 1139 */ 0xffff, /* 113a */ 0xffff, /* 113b */ 0xffff, /* 113c */ 0xffff, /* 113d */ 0xffff, /* 113e */ 0xffff, /* 113f */ 0xffff, /* 1140 */ 0xffff, /* 1141 */ 0xffff, /* 1142 */ 0xffff, /* 1143 */ 0xffff, /* 1144 */ 0xffff, /* 1145 */ 0xffff, /* 1146 */ 0xffff, /* 1147 */ 0xffff, /* 1148 */ 0xffff, /* 1149 */ 0xffff, /* 114a */ 0xffff, /* 114b */ 0xffff, /* 114c */ 0xffff, /* 114d */ 0xffff, /* 114e */ 0xffff, /* 114f */ 0xffff, /* 1150 */ 0xffff, /* 1151 */ 0xffff, /* 1152 */ 0xffff, /* 1153 */ 0xffff, /* 1154 */ 0xffff, /* 1155 */ 0xffff, /* 1156 */ 0xffff, /* 1157 */ 0xffff, /* 1158 */ 0xffff, /* 1159 */ 0xffff, /* 115a */ 0xffff, /* 115b */ 0xffff, /* 115c */ 0xffff, /* 115d */ 0xffff, /* 115e */ 0xffff, /* 115f */ 0xffff, /* 1160 */ 0xffff, /* 1161 */ 0xffff, /* 1162 */ 0xffff, /* 1163 */ 0xffff, /* 1164 */ 0xffff, /* 1165 */ 0xffff, /* 1166 */ 0xffff, /* 1167 */ 0xffff, /* 1168 */ 0xffff, /* 1169 */ 0xffff, /* 116a */ 0xffff, /* 116b */ 0xffff, /* 116c */ 0xffff, /* 116d */ 0xffff, /* 116e */ 0xffff, /* 116f */ 0xffff, /* 1170 */ 0xffff, /* 1171 */ 0xffff, /* 1172 */ 0xffff, /* 1173 */ 0xffff, /* 1174 */ 0xffff, /* 1175 */ 0xffff, /* 1176 */ 0xffff, /* 1177 */ 0xffff, /* 1178 */ 0xffff, /* 1179 */ 0xffff, /* 117a */ 0xffff, /* 117b */ 0xffff, /* 117c */ 0xffff, /* 117d */ 0xffff, /* 117e */ 0xffff, /* 117f */ 0xffff, /* 1180 */ 0xffff, /* 1181 */ 0xffff, /* 1182 */ 0xffff, /* 1183 */ 0xffff, /* 1184 */ 0xffff, /* 1185 */ 0xffff, /* 1186 */ 0xffff, /* 1187 */ 0xffff, /* 1188 */ 0xffff, /* 1189 */ 0xffff, /* 118a */ 0xffff, /* 118b */ 0xffff, /* 118c */ 0xffff, /* 118d */ 0xffff, /* 118e */ 0xffff, /* 118f */ 0xffff, /* 1190 */ 0xffff, /* 1191 */ 0xffff, /* 1192 */ 0xffff, /* 1193 */ 0xffff, /* 1194 */ 0xffff, /* 1195 */ 0xffff, /* 1196 */ 0xffff, /* 1197 */ 0xffff, /* 1198 */ 0xffff, /* 1199 */ 0xffff, /* 119a */ 0xffff, /* 119b */ 0xffff, /* 119c */ 0xffff, /* 119d */ 0xffff, /* 119e */ 0xffff, /* 119f */ 0xffff, /* 11a0 */ 0xffff, /* 11a1 */ 0xffff, /* 11a2 */ 0xffff, /* 11a3 */ 0xffff, /* 11a4 */ 0xffff, /* 11a5 */ 0xffff, /* 11a6 */ 0xffff, /* 11a7 */ 0xffff, /* 11a8 */ 0xffff, /* 11a9 */ 0xffff, /* 11aa */ 0xffff, /* 11ab */ 0xffff, /* 11ac */ 0xffff, /* 11ad */ 0xffff, /* 11ae */ 0xffff, /* 11af */ 0xffff, /* 11b0 */ 0xffff, /* 11b1 */ 0xffff, /* 11b2 */ 0xffff, /* 11b3 */ 0xffff, /* 11b4 */ 0xffff, /* 11b5 */ 0xffff, /* 11b6 */ 0xffff, /* 11b7 */ 0xffff, /* 11b8 */ 0xffff, /* 11b9 */ 0xffff, /* 11ba */ 0xffff, /* 11bb */ 0xffff, /* 11bc */ 0xffff, /* 11bd */ 0xffff, /* 11be */ 0xffff, /* 11bf */ 0xffff, /* 11c0 */ 0xffff, /* 11c1 */ 0xffff, /* 11c2 */ 0xffff, /* 11c3 */ 0xffff, /* 11c4 */ 0xffff, /* 11c5 */ 0xffff, /* 11c6 */ 0xffff, /* 11c7 */ 0xffff, /* 11c8 */ 0xffff, /* 11c9 */ 0xffff, /* 11ca */ 0xffff, /* 11cb */ 0xffff, /* 11cc */ 0xffff, /* 11cd */ 0xffff, /* 11ce */ 0xffff, /* 11cf */ 0xffff, /* 11d0 */ 0xffff, /* 11d1 */ 0xffff, /* 11d2 */ 0xffff, /* 11d3 */ 0xffff, /* 11d4 */ 0xffff, /* 11d5 */ 0xffff, /* 11d6 */ 0xffff, /* 11d7 */ 0xffff, /* 11d8 */ 0xffff, /* 11d9 */ 0xffff, /* 11da */ 0xffff, /* 11db */ 0xffff, /* 11dc */ 0xffff, /* 11dd */ 0xffff, /* 11de */ 0xffff, /* 11df */ 0xffff, /* 11e0 */ 0xffff, /* 11e1 */ 0xffff, /* 11e2 */ 0xffff, /* 11e3 */ 0xffff, /* 11e4 */ 0xffff, /* 11e5 */ 0xffff, /* 11e6 */ 0xffff, /* 11e7 */ 0xffff, /* 11e8 */ 0xffff, /* 11e9 */ 0xffff, /* 11ea */ 0xffff, /* 11eb */ 0xffff, /* 11ec */ 0xffff, /* 11ed */ 0xffff, /* 11ee */ 0xffff, /* 11ef */ 0xffff, /* 11f0 */ 0xffff, /* 11f1 */ 0xffff, /* 11f2 */ 0xffff, /* 11f3 */ 0xffff, /* 11f4 */ 0xffff, /* 11f5 */ 0xffff, /* 11f6 */ 0xffff, /* 11f7 */ 0xffff, /* 11f8 */ 0xffff, /* 11f9 */ 0xffff, /* 11fa */ 0xffff, /* 11fb */ 0xffff, /* 11fc */ 0xffff, /* 11fd */ 0xffff, /* 11fe */ 0xffff, /* 11ff */ 0xffff, /* 1200 */ 0xffff, /* 1201 */ 0xffff, /* 1202 */ 0xffff, /* 1203 */ 0xffff, /* 1204 */ 0xffff, /* 1205 */ 0xffff, /* 1206 */ 0xffff, /* 1207 */ 0xffff, /* 1208 */ 0xffff, /* 1209 */ 0xffff, /* 120a */ 0xffff, /* 120b */ 0xffff, /* 120c */ 0xffff, /* 120d */ 0xffff, /* 120e */ 0xffff, /* 120f */ 0xffff, /* 1210 */ 0xffff, /* 1211 */ 0xffff, /* 1212 */ 0xffff, /* 1213 */ 0xffff, /* 1214 */ 0xffff, /* 1215 */ 0xffff, /* 1216 */ 0xffff, /* 1217 */ 0xffff, /* 1218 */ 0xffff, /* 1219 */ 0xffff, /* 121a */ 0xffff, /* 121b */ 0xffff, /* 121c */ 0xffff, /* 121d */ 0xffff, /* 121e */ 0xffff, /* 121f */ 0xffff, /* 1220 */ 0xffff, /* 1221 */ 0xffff, /* 1222 */ 0xffff, /* 1223 */ 0xffff, /* 1224 */ 0xffff, /* 1225 */ 0xffff, /* 1226 */ 0xffff, /* 1227 */ 0xffff, /* 1228 */ 0xffff, /* 1229 */ 0xffff, /* 122a */ 0xffff, /* 122b */ 0xffff, /* 122c */ 0xffff, /* 122d */ 0xffff, /* 122e */ 0xffff, /* 122f */ 0xffff, /* 1230 */ 0xffff, /* 1231 */ 0xffff, /* 1232 */ 0xffff, /* 1233 */ 0xffff, /* 1234 */ 0xffff, /* 1235 */ 0xffff, /* 1236 */ 0xffff, /* 1237 */ 0xffff, /* 1238 */ 0xffff, /* 1239 */ 0xffff, /* 123a */ 0xffff, /* 123b */ 0xffff, /* 123c */ 0xffff, /* 123d */ 0xffff, /* 123e */ 0xffff, /* 123f */ 0xffff, /* 1240 */ 0xffff, /* 1241 */ 0xffff, /* 1242 */ 0xffff, /* 1243 */ 0xffff, /* 1244 */ 0xffff, /* 1245 */ 0xffff, /* 1246 */ 0xffff, /* 1247 */ 0xffff, /* 1248 */ 0xffff, /* 1249 */ 0xffff, /* 124a */ 0xffff, /* 124b */ 0xffff, /* 124c */ 0xffff, /* 124d */ 0xffff, /* 124e */ 0xffff, /* 124f */ 0xffff, /* 1250 */ 0xffff, /* 1251 */ 0xffff, /* 1252 */ 0xffff, /* 1253 */ 0xffff, /* 1254 */ 0xffff, /* 1255 */ 0xffff, /* 1256 */ 0xffff, /* 1257 */ 0xffff, /* 1258 */ 0xffff, /* 1259 */ 0xffff, /* 125a */ 0xffff, /* 125b */ 0xffff, /* 125c */ 0xffff, /* 125d */ 0xffff, /* 125e */ 0xffff, /* 125f */ 0xffff, /* 1260 */ 0xffff, /* 1261 */ 0xffff, /* 1262 */ 0xffff, /* 1263 */ 0xffff, /* 1264 */ 0xffff, /* 1265 */ 0xffff, /* 1266 */ 0xffff, /* 1267 */ 0xffff, /* 1268 */ 0xffff, /* 1269 */ 0xffff, /* 126a */ 0xffff, /* 126b */ 0xffff, /* 126c */ 0xffff, /* 126d */ 0xffff, /* 126e */ 0xffff, /* 126f */ 0xffff, /* 1270 */ 0xffff, /* 1271 */ 0xffff, /* 1272 */ 0xffff, /* 1273 */ 0xffff, /* 1274 */ 0xffff, /* 1275 */ 0xffff, /* 1276 */ 0xffff, /* 1277 */ 0xffff, /* 1278 */ 0xffff, /* 1279 */ 0xffff, /* 127a */ 0xffff, /* 127b */ 0xffff, /* 127c */ 0xffff, /* 127d */ 0xffff, /* 127e */ 0xffff, /* 127f */ 0xffff, /* 1280 */ 0xffff, /* 1281 */ 0xffff, /* 1282 */ 0xffff, /* 1283 */ 0xffff, /* 1284 */ 0xffff, /* 1285 */ 0xffff, /* 1286 */ 0xffff, /* 1287 */ 0xffff, /* 1288 */ 0xffff, /* 1289 */ 0xffff, /* 128a */ 0xffff, /* 128b */ 0xffff, /* 128c */ 0xffff, /* 128d */ 0xffff, /* 128e */ 0xffff, /* 128f */ 0xffff, /* 1290 */ 0xffff, /* 1291 */ 0xffff, /* 1292 */ 0xffff, /* 1293 */ 0xffff, /* 1294 */ 0xffff, /* 1295 */ 0xffff, /* 1296 */ 0xffff, /* 1297 */ 0xffff, /* 1298 */ 0xffff, /* 1299 */ 0xffff, /* 129a */ 0xffff, /* 129b */ 0xffff, /* 129c */ 0xffff, /* 129d */ 0xffff, /* 129e */ 0xffff, /* 129f */ 0xffff, /* 12a0 */ 0xffff, /* 12a1 */ 0xffff, /* 12a2 */ 0xffff, /* 12a3 */ 0xffff, /* 12a4 */ 0xffff, /* 12a5 */ 0xffff, /* 12a6 */ 0xffff, /* 12a7 */ 0xffff, /* 12a8 */ 0xffff, /* 12a9 */ 0xffff, /* 12aa */ 0xffff, /* 12ab */ 0xffff, /* 12ac */ 0xffff, /* 12ad */ 0xffff, /* 12ae */ 0xffff, /* 12af */ 0xffff, /* 12b0 */ 0xffff, /* 12b1 */ 0xffff, /* 12b2 */ 0xffff, /* 12b3 */ 0xffff, /* 12b4 */ 0xffff, /* 12b5 */ 0xffff, /* 12b6 */ 0xffff, /* 12b7 */ 0xffff, /* 12b8 */ 0xffff, /* 12b9 */ 0xffff, /* 12ba */ 0xffff, /* 12bb */ 0xffff, /* 12bc */ 0xffff, /* 12bd */ 0xffff, /* 12be */ 0xffff, /* 12bf */ 0xffff, /* 12c0 */ 0xffff, /* 12c1 */ 0xffff, /* 12c2 */ 0xffff, /* 12c3 */ 0xffff, /* 12c4 */ 0xffff, /* 12c5 */ 0xffff, /* 12c6 */ 0xffff, /* 12c7 */ 0xffff, /* 12c8 */ 0xffff, /* 12c9 */ 0xffff, /* 12ca */ 0xffff, /* 12cb */ 0xffff, /* 12cc */ 0xffff, /* 12cd */ 0xffff, /* 12ce */ 0xffff, /* 12cf */ 0xffff, /* 12d0 */ 0xffff, /* 12d1 */ 0xffff, /* 12d2 */ 0xffff, /* 12d3 */ 0xffff, /* 12d4 */ 0xffff, /* 12d5 */ 0xffff, /* 12d6 */ 0xffff, /* 12d7 */ 0xffff, /* 12d8 */ 0xffff, /* 12d9 */ 0xffff, /* 12da */ 0xffff, /* 12db */ 0xffff, /* 12dc */ 0xffff, /* 12dd */ 0xffff, /* 12de */ 0xffff, /* 12df */ 0xffff, /* 12e0 */ 0xffff, /* 12e1 */ 0xffff, /* 12e2 */ 0xffff, /* 12e3 */ 0xffff, /* 12e4 */ 0xffff, /* 12e5 */ 0xffff, /* 12e6 */ 0xffff, /* 12e7 */ 0xffff, /* 12e8 */ 0xffff, /* 12e9 */ 0xffff, /* 12ea */ 0xffff, /* 12eb */ 0xffff, /* 12ec */ 0xffff, /* 12ed */ 0xffff, /* 12ee */ 0xffff, /* 12ef */ 0xffff, /* 12f0 */ 0xffff, /* 12f1 */ 0xffff, /* 12f2 */ 0xffff, /* 12f3 */ 0xffff, /* 12f4 */ 0xffff, /* 12f5 */ 0xffff, /* 12f6 */ 0xffff, /* 12f7 */ 0xffff, /* 12f8 */ 0xffff, /* 12f9 */ 0xffff, /* 12fa */ 0xffff, /* 12fb */ 0xffff, /* 12fc */ 0xffff, /* 12fd */ 0xffff, /* 12fe */ 0xffff, /* 12ff */ 0xffff, /* 1300 */ 0xffff, /* 1301 */ 0xffff, /* 1302 */ 0xffff, /* 1303 */ 0xffff, /* 1304 */ 0xffff, /* 1305 */ 0xffff, /* 1306 */ 0xffff, /* 1307 */ 0xffff, /* 1308 */ 0xffff, /* 1309 */ 0xffff, /* 130a */ 0xffff, /* 130b */ 0xffff, /* 130c */ 0xffff, /* 130d */ 0xffff, /* 130e */ 0xffff, /* 130f */ 0xffff, /* 1310 */ 0xffff, /* 1311 */ 0xffff, /* 1312 */ 0xffff, /* 1313 */ 0xffff, /* 1314 */ 0xffff, /* 1315 */ 0xffff, /* 1316 */ 0xffff, /* 1317 */ 0xffff, /* 1318 */ 0xffff, /* 1319 */ 0xffff, /* 131a */ 0xffff, /* 131b */ 0xffff, /* 131c */ 0xffff, /* 131d */ 0xffff, /* 131e */ 0xffff, /* 131f */ 0xffff, /* 1320 */ 0xffff, /* 1321 */ 0xffff, /* 1322 */ 0xffff, /* 1323 */ 0xffff, /* 1324 */ 0xffff, /* 1325 */ 0xffff, /* 1326 */ 0xffff, /* 1327 */ 0xffff, /* 1328 */ 0xffff, /* 1329 */ 0xffff, /* 132a */ 0xffff, /* 132b */ 0xffff, /* 132c */ 0xffff, /* 132d */ 0xffff, /* 132e */ 0xffff, /* 132f */ 0xffff, /* 1330 */ 0xffff, /* 1331 */ 0xffff, /* 1332 */ 0xffff, /* 1333 */ 0xffff, /* 1334 */ 0xffff, /* 1335 */ 0xffff, /* 1336 */ 0xffff, /* 1337 */ 0xffff, /* 1338 */ 0xffff, /* 1339 */ 0xffff, /* 133a */ 0xffff, /* 133b */ 0xffff, /* 133c */ 0xffff, /* 133d */ 0xffff, /* 133e */ 0xffff, /* 133f */ 0xffff, /* 1340 */ 0xffff, /* 1341 */ 0xffff, /* 1342 */ 0xffff, /* 1343 */ 0xffff, /* 1344 */ 0xffff, /* 1345 */ 0xffff, /* 1346 */ 0xffff, /* 1347 */ 0xffff, /* 1348 */ 0xffff, /* 1349 */ 0xffff, /* 134a */ 0xffff, /* 134b */ 0xffff, /* 134c */ 0xffff, /* 134d */ 0xffff, /* 134e */ 0xffff, /* 134f */ 0xffff, /* 1350 */ 0xffff, /* 1351 */ 0xffff, /* 1352 */ 0xffff, /* 1353 */ 0xffff, /* 1354 */ 0xffff, /* 1355 */ 0xffff, /* 1356 */ 0xffff, /* 1357 */ 0xffff, /* 1358 */ 0xffff, /* 1359 */ 0xffff, /* 135a */ 0xffff, /* 135b */ 0xffff, /* 135c */ 0xffff, /* 135d */ 0xffff, /* 135e */ 0xffff, /* 135f */ 0xffff, /* 1360 */ 0xffff, /* 1361 */ 0xffff, /* 1362 */ 0xffff, /* 1363 */ 0xffff, /* 1364 */ 0xffff, /* 1365 */ 0xffff, /* 1366 */ 0xffff, /* 1367 */ 0xffff, /* 1368 */ 0xffff, /* 1369 */ 0xffff, /* 136a */ 0xffff, /* 136b */ 0xffff, /* 136c */ 0xffff, /* 136d */ 0xffff, /* 136e */ 0xffff, /* 136f */ 0xffff, /* 1370 */ 0xffff, /* 1371 */ 0xffff, /* 1372 */ 0xffff, /* 1373 */ 0xffff, /* 1374 */ 0xffff, /* 1375 */ 0xffff, /* 1376 */ 0xffff, /* 1377 */ 0xffff, /* 1378 */ 0xffff, /* 1379 */ 0xffff, /* 137a */ 0xffff, /* 137b */ 0xffff, /* 137c */ 0xffff, /* 137d */ 0xffff, /* 137e */ 0xffff, /* 137f */ 0xffff, /* 1380 */ 0xffff, /* 1381 */ 0xffff, /* 1382 */ 0xffff, /* 1383 */ 0xffff, /* 1384 */ 0xffff, /* 1385 */ 0xffff, /* 1386 */ 0xffff, /* 1387 */ 0xffff, /* 1388 */ 0xffff, /* 1389 */ 0xffff, /* 138a */ 0xffff, /* 138b */ 0xffff, /* 138c */ 0xffff, /* 138d */ 0xffff, /* 138e */ 0xffff, /* 138f */ 0xffff, /* 1390 */ 0xffff, /* 1391 */ 0xffff, /* 1392 */ 0xffff, /* 1393 */ 0xffff, /* 1394 */ 0xffff, /* 1395 */ 0xffff, /* 1396 */ 0xffff, /* 1397 */ 0xffff, /* 1398 */ 0xffff, /* 1399 */ 0xffff, /* 139a */ 0xffff, /* 139b */ 0xffff, /* 139c */ 0xffff, /* 139d */ 0xffff, /* 139e */ 0xffff, /* 139f */ 0xffff, /* 13a0 */ 0xffff, /* 13a1 */ 0xffff, /* 13a2 */ 0xffff, /* 13a3 */ 0xffff, /* 13a4 */ 0xffff, /* 13a5 */ 0xffff, /* 13a6 */ 0xffff, /* 13a7 */ 0xffff, /* 13a8 */ 0xffff, /* 13a9 */ 0xffff, /* 13aa */ 0xffff, /* 13ab */ 0xffff, /* 13ac */ 0xffff, /* 13ad */ 0xffff, /* 13ae */ 0xffff, /* 13af */ 0xffff, /* 13b0 */ 0xffff, /* 13b1 */ 0xffff, /* 13b2 */ 0xffff, /* 13b3 */ 0xffff, /* 13b4 */ 0xffff, /* 13b5 */ 0xffff, /* 13b6 */ 0xffff, /* 13b7 */ 0xffff, /* 13b8 */ 0xffff, /* 13b9 */ 0xffff, /* 13ba */ 0xffff, /* 13bb */ 0xffff, /* 13bc */ 0xffff, /* 13bd */ 0xffff, /* 13be */ 0xffff, /* 13bf */ 0xffff, /* 13c0 */ 0xffff, /* 13c1 */ 0xffff, /* 13c2 */ 0xffff, /* 13c3 */ 0xffff, /* 13c4 */ 0xffff, /* 13c5 */ 0xffff, /* 13c6 */ 0xffff, /* 13c7 */ 0xffff, /* 13c8 */ 0xffff, /* 13c9 */ 0xffff, /* 13ca */ 0xffff, /* 13cb */ 0xffff, /* 13cc */ 0xffff, /* 13cd */ 0xffff, /* 13ce */ 0xffff, /* 13cf */ 0xffff, /* 13d0 */ 0xffff, /* 13d1 */ 0xffff, /* 13d2 */ 0xffff, /* 13d3 */ 0xffff, /* 13d4 */ 0xffff, /* 13d5 */ 0xffff, /* 13d6 */ 0xffff, /* 13d7 */ 0xffff, /* 13d8 */ 0xffff, /* 13d9 */ 0xffff, /* 13da */ 0xffff, /* 13db */ 0xffff, /* 13dc */ 0xffff, /* 13dd */ 0xffff, /* 13de */ 0xffff, /* 13df */ 0xffff, /* 13e0 */ 0xffff, /* 13e1 */ 0xffff, /* 13e2 */ 0xffff, /* 13e3 */ 0xffff, /* 13e4 */ 0xffff, /* 13e5 */ 0xffff, /* 13e6 */ 0xffff, /* 13e7 */ 0xffff, /* 13e8 */ 0xffff, /* 13e9 */ 0xffff, /* 13ea */ 0xffff, /* 13eb */ 0xffff, /* 13ec */ 0xffff, /* 13ed */ 0xffff, /* 13ee */ 0xffff, /* 13ef */ 0xffff, /* 13f0 */ 0xffff, /* 13f1 */ 0xffff, /* 13f2 */ 0xffff, /* 13f3 */ 0xffff, /* 13f4 */ 0xffff, /* 13f5 */ 0xffff, /* 13f6 */ 0xffff, /* 13f7 */ 0xffff, /* 13f8 */ 0xffff, /* 13f9 */ 0xffff, /* 13fa */ 0xffff, /* 13fb */ 0xffff, /* 13fc */ 0xffff, /* 13fd */ 0xffff, /* 13fe */ 0xffff, /* 13ff */ 0xffff, /* 1400 */ 0xffff, /* 1401 */ 0xffff, /* 1402 */ 0xffff, /* 1403 */ 0xffff, /* 1404 */ 0xffff, /* 1405 */ 0xffff, /* 1406 */ 0xffff, /* 1407 */ 0xffff, /* 1408 */ 0xffff, /* 1409 */ 0xffff, /* 140a */ 0xffff, /* 140b */ 0xffff, /* 140c */ 0xffff, /* 140d */ 0xffff, /* 140e */ 0xffff, /* 140f */ 0xffff, /* 1410 */ 0xffff, /* 1411 */ 0xffff, /* 1412 */ 0xffff, /* 1413 */ 0xffff, /* 1414 */ 0xffff, /* 1415 */ 0xffff, /* 1416 */ 0xffff, /* 1417 */ 0xffff, /* 1418 */ 0xffff, /* 1419 */ 0xffff, /* 141a */ 0xffff, /* 141b */ 0xffff, /* 141c */ 0xffff, /* 141d */ 0xffff, /* 141e */ 0xffff, /* 141f */ 0xffff, /* 1420 */ 0xffff, /* 1421 */ 0xffff, /* 1422 */ 0xffff, /* 1423 */ 0xffff, /* 1424 */ 0xffff, /* 1425 */ 0xffff, /* 1426 */ 0xffff, /* 1427 */ 0xffff, /* 1428 */ 0xffff, /* 1429 */ 0xffff, /* 142a */ 0xffff, /* 142b */ 0xffff, /* 142c */ 0xffff, /* 142d */ 0xffff, /* 142e */ 0xffff, /* 142f */ 0xffff, /* 1430 */ 0xffff, /* 1431 */ 0xffff, /* 1432 */ 0xffff, /* 1433 */ 0xffff, /* 1434 */ 0xffff, /* 1435 */ 0xffff, /* 1436 */ 0xffff, /* 1437 */ 0xffff, /* 1438 */ 0xffff, /* 1439 */ 0xffff, /* 143a */ 0xffff, /* 143b */ 0xffff, /* 143c */ 0xffff, /* 143d */ 0xffff, /* 143e */ 0xffff, /* 143f */ 0xffff, /* 1440 */ 0xffff, /* 1441 */ 0xffff, /* 1442 */ 0xffff, /* 1443 */ 0xffff, /* 1444 */ 0xffff, /* 1445 */ 0xffff, /* 1446 */ 0xffff, /* 1447 */ 0xffff, /* 1448 */ 0xffff, /* 1449 */ 0xffff, /* 144a */ 0xffff, /* 144b */ 0xffff, /* 144c */ 0xffff, /* 144d */ 0xffff, /* 144e */ 0xffff, /* 144f */ 0xffff, /* 1450 */ 0xffff, /* 1451 */ 0xffff, /* 1452 */ 0xffff, /* 1453 */ 0xffff, /* 1454 */ 0xffff, /* 1455 */ 0xffff, /* 1456 */ 0xffff, /* 1457 */ 0xffff, /* 1458 */ 0xffff, /* 1459 */ 0xffff, /* 145a */ 0xffff, /* 145b */ 0xffff, /* 145c */ 0xffff, /* 145d */ 0xffff, /* 145e */ 0xffff, /* 145f */ 0xffff, /* 1460 */ 0xffff, /* 1461 */ 0xffff, /* 1462 */ 0xffff, /* 1463 */ 0xffff, /* 1464 */ 0xffff, /* 1465 */ 0xffff, /* 1466 */ 0xffff, /* 1467 */ 0xffff, /* 1468 */ 0xffff, /* 1469 */ 0xffff, /* 146a */ 0xffff, /* 146b */ 0xffff, /* 146c */ 0xffff, /* 146d */ 0xffff, /* 146e */ 0xffff, /* 146f */ 0xffff, /* 1470 */ 0xffff, /* 1471 */ 0xffff, /* 1472 */ 0xffff, /* 1473 */ 0xffff, /* 1474 */ 0xffff, /* 1475 */ 0xffff, /* 1476 */ 0xffff, /* 1477 */ 0xffff, /* 1478 */ 0xffff, /* 1479 */ 0xffff, /* 147a */ 0xffff, /* 147b */ 0xffff, /* 147c */ 0xffff, /* 147d */ 0xffff, /* 147e */ 0xffff, /* 147f */ 0xffff, /* 1480 */ 0xffff, /* 1481 */ 0xffff, /* 1482 */ 0xffff, /* 1483 */ 0xffff, /* 1484 */ 0xffff, /* 1485 */ 0xffff, /* 1486 */ 0xffff, /* 1487 */ 0xffff, /* 1488 */ 0xffff, /* 1489 */ 0xffff, /* 148a */ 0xffff, /* 148b */ 0xffff, /* 148c */ 0xffff, /* 148d */ 0xffff, /* 148e */ 0xffff, /* 148f */ 0xffff, /* 1490 */ 0xffff, /* 1491 */ 0xffff, /* 1492 */ 0xffff, /* 1493 */ 0xffff, /* 1494 */ 0xffff, /* 1495 */ 0xffff, /* 1496 */ 0xffff, /* 1497 */ 0xffff, /* 1498 */ 0xffff, /* 1499 */ 0xffff, /* 149a */ 0xffff, /* 149b */ 0xffff, /* 149c */ 0xffff, /* 149d */ 0xffff, /* 149e */ 0xffff, /* 149f */ 0xffff, /* 14a0 */ 0xffff, /* 14a1 */ 0xffff, /* 14a2 */ 0xffff, /* 14a3 */ 0xffff, /* 14a4 */ 0xffff, /* 14a5 */ 0xffff, /* 14a6 */ 0xffff, /* 14a7 */ 0xffff, /* 14a8 */ 0xffff, /* 14a9 */ 0xffff, /* 14aa */ 0xffff, /* 14ab */ 0xffff, /* 14ac */ 0xffff, /* 14ad */ 0xffff, /* 14ae */ 0xffff, /* 14af */ 0xffff, /* 14b0 */ 0xffff, /* 14b1 */ 0xffff, /* 14b2 */ 0xffff, /* 14b3 */ 0xffff, /* 14b4 */ 0xffff, /* 14b5 */ 0xffff, /* 14b6 */ 0xffff, /* 14b7 */ 0xffff, /* 14b8 */ 0xffff, /* 14b9 */ 0xffff, /* 14ba */ 0xffff, /* 14bb */ 0xffff, /* 14bc */ 0xffff, /* 14bd */ 0xffff, /* 14be */ 0xffff, /* 14bf */ 0xffff, /* 14c0 */ 0xffff, /* 14c1 */ 0xffff, /* 14c2 */ 0xffff, /* 14c3 */ 0xffff, /* 14c4 */ 0xffff, /* 14c5 */ 0xffff, /* 14c6 */ 0xffff, /* 14c7 */ 0xffff, /* 14c8 */ 0xffff, /* 14c9 */ 0xffff, /* 14ca */ 0xffff, /* 14cb */ 0xffff, /* 14cc */ 0xffff, /* 14cd */ 0xffff, /* 14ce */ 0xffff, /* 14cf */ 0xffff, /* 14d0 */ 0xffff, /* 14d1 */ 0xffff, /* 14d2 */ 0xffff, /* 14d3 */ 0xffff, /* 14d4 */ 0xffff, /* 14d5 */ 0xffff, /* 14d6 */ 0xffff, /* 14d7 */ 0xffff, /* 14d8 */ 0xffff, /* 14d9 */ 0xffff, /* 14da */ 0xffff, /* 14db */ 0xffff, /* 14dc */ 0xffff, /* 14dd */ 0xffff, /* 14de */ 0xffff, /* 14df */ 0xffff, /* 14e0 */ 0xffff, /* 14e1 */ 0xffff, /* 14e2 */ 0xffff, /* 14e3 */ 0xffff, /* 14e4 */ 0xffff, /* 14e5 */ 0xffff, /* 14e6 */ 0xffff, /* 14e7 */ 0xffff, /* 14e8 */ 0xffff, /* 14e9 */ 0xffff, /* 14ea */ 0xffff, /* 14eb */ 0xffff, /* 14ec */ 0xffff, /* 14ed */ 0xffff, /* 14ee */ 0xffff, /* 14ef */ 0xffff, /* 14f0 */ 0xffff, /* 14f1 */ 0xffff, /* 14f2 */ 0xffff, /* 14f3 */ 0xffff, /* 14f4 */ 0xffff, /* 14f5 */ 0xffff, /* 14f6 */ 0xffff, /* 14f7 */ 0xffff, /* 14f8 */ 0xffff, /* 14f9 */ 0xffff, /* 14fa */ 0xffff, /* 14fb */ 0xffff, /* 14fc */ 0xffff, /* 14fd */ 0xffff, /* 14fe */ 0xffff, /* 14ff */ 0xffff, /* 1500 */ 0xffff, /* 1501 */ 0xffff, /* 1502 */ 0xffff, /* 1503 */ 0xffff, /* 1504 */ 0xffff, /* 1505 */ 0xffff, /* 1506 */ 0xffff, /* 1507 */ 0xffff, /* 1508 */ 0xffff, /* 1509 */ 0xffff, /* 150a */ 0xffff, /* 150b */ 0xffff, /* 150c */ 0xffff, /* 150d */ 0xffff, /* 150e */ 0xffff, /* 150f */ 0xffff, /* 1510 */ 0xffff, /* 1511 */ 0xffff, /* 1512 */ 0xffff, /* 1513 */ 0xffff, /* 1514 */ 0xffff, /* 1515 */ 0xffff, /* 1516 */ 0xffff, /* 1517 */ 0xffff, /* 1518 */ 0xffff, /* 1519 */ 0xffff, /* 151a */ 0xffff, /* 151b */ 0xffff, /* 151c */ 0xffff, /* 151d */ 0xffff, /* 151e */ 0xffff, /* 151f */ 0xffff, /* 1520 */ 0xffff, /* 1521 */ 0xffff, /* 1522 */ 0xffff, /* 1523 */ 0xffff, /* 1524 */ 0xffff, /* 1525 */ 0xffff, /* 1526 */ 0xffff, /* 1527 */ 0xffff, /* 1528 */ 0xffff, /* 1529 */ 0xffff, /* 152a */ 0xffff, /* 152b */ 0xffff, /* 152c */ 0xffff, /* 152d */ 0xffff, /* 152e */ 0xffff, /* 152f */ 0xffff, /* 1530 */ 0xffff, /* 1531 */ 0xffff, /* 1532 */ 0xffff, /* 1533 */ 0xffff, /* 1534 */ 0xffff, /* 1535 */ 0xffff, /* 1536 */ 0xffff, /* 1537 */ 0xffff, /* 1538 */ 0xffff, /* 1539 */ 0xffff, /* 153a */ 0xffff, /* 153b */ 0xffff, /* 153c */ 0xffff, /* 153d */ 0xffff, /* 153e */ 0xffff, /* 153f */ 0xffff, /* 1540 */ 0xffff, /* 1541 */ 0xffff, /* 1542 */ 0xffff, /* 1543 */ 0xffff, /* 1544 */ 0xffff, /* 1545 */ 0xffff, /* 1546 */ 0xffff, /* 1547 */ 0xffff, /* 1548 */ 0xffff, /* 1549 */ 0xffff, /* 154a */ 0xffff, /* 154b */ 0xffff, /* 154c */ 0xffff, /* 154d */ 0xffff, /* 154e */ 0xffff, /* 154f */ 0xffff, /* 1550 */ 0xffff, /* 1551 */ 0xffff, /* 1552 */ 0xffff, /* 1553 */ 0xffff, /* 1554 */ 0xffff, /* 1555 */ 0xffff, /* 1556 */ 0xffff, /* 1557 */ 0xffff, /* 1558 */ 0xffff, /* 1559 */ 0xffff, /* 155a */ 0xffff, /* 155b */ 0xffff, /* 155c */ 0xffff, /* 155d */ 0xffff, /* 155e */ 0xffff, /* 155f */ 0xffff, /* 1560 */ 0xffff, /* 1561 */ 0xffff, /* 1562 */ 0xffff, /* 1563 */ 0xffff, /* 1564 */ 0xffff, /* 1565 */ 0xffff, /* 1566 */ 0xffff, /* 1567 */ 0xffff, /* 1568 */ 0xffff, /* 1569 */ 0xffff, /* 156a */ 0xffff, /* 156b */ 0xffff, /* 156c */ 0xffff, /* 156d */ 0xffff, /* 156e */ 0xffff, /* 156f */ 0xffff, /* 1570 */ 0xffff, /* 1571 */ 0xffff, /* 1572 */ 0xffff, /* 1573 */ 0xffff, /* 1574 */ 0xffff, /* 1575 */ 0xffff, /* 1576 */ 0xffff, /* 1577 */ 0xffff, /* 1578 */ 0xffff, /* 1579 */ 0xffff, /* 157a */ 0xffff, /* 157b */ 0xffff, /* 157c */ 0xffff, /* 157d */ 0xffff, /* 157e */ 0xffff, /* 157f */ 0xffff, /* 1580 */ 0xffff, /* 1581 */ 0xffff, /* 1582 */ 0xffff, /* 1583 */ 0xffff, /* 1584 */ 0xffff, /* 1585 */ 0xffff, /* 1586 */ 0xffff, /* 1587 */ 0xffff, /* 1588 */ 0xffff, /* 1589 */ 0xffff, /* 158a */ 0xffff, /* 158b */ 0xffff, /* 158c */ 0xffff, /* 158d */ 0xffff, /* 158e */ 0xffff, /* 158f */ 0xffff, /* 1590 */ 0xffff, /* 1591 */ 0xffff, /* 1592 */ 0xffff, /* 1593 */ 0xffff, /* 1594 */ 0xffff, /* 1595 */ 0xffff, /* 1596 */ 0xffff, /* 1597 */ 0xffff, /* 1598 */ 0xffff, /* 1599 */ 0xffff, /* 159a */ 0xffff, /* 159b */ 0xffff, /* 159c */ 0xffff, /* 159d */ 0xffff, /* 159e */ 0xffff, /* 159f */ 0xffff, /* 15a0 */ 0xffff, /* 15a1 */ 0xffff, /* 15a2 */ 0xffff, /* 15a3 */ 0xffff, /* 15a4 */ 0xffff, /* 15a5 */ 0xffff, /* 15a6 */ 0xffff, /* 15a7 */ 0xffff, /* 15a8 */ 0xffff, /* 15a9 */ 0xffff, /* 15aa */ 0xffff, /* 15ab */ 0xffff, /* 15ac */ 0xffff, /* 15ad */ 0xffff, /* 15ae */ 0xffff, /* 15af */ 0xffff, /* 15b0 */ 0xffff, /* 15b1 */ 0xffff, /* 15b2 */ 0xffff, /* 15b3 */ 0xffff, /* 15b4 */ 0xffff, /* 15b5 */ 0xffff, /* 15b6 */ 0xffff, /* 15b7 */ 0xffff, /* 15b8 */ 0xffff, /* 15b9 */ 0xffff, /* 15ba */ 0xffff, /* 15bb */ 0xffff, /* 15bc */ 0xffff, /* 15bd */ 0xffff, /* 15be */ 0xffff, /* 15bf */ 0xffff, /* 15c0 */ 0xffff, /* 15c1 */ 0xffff, /* 15c2 */ 0xffff, /* 15c3 */ 0xffff, /* 15c4 */ 0xffff, /* 15c5 */ 0xffff, /* 15c6 */ 0xffff, /* 15c7 */ 0xffff, /* 15c8 */ 0xffff, /* 15c9 */ 0xffff, /* 15ca */ 0xffff, /* 15cb */ 0xffff, /* 15cc */ 0xffff, /* 15cd */ 0xffff, /* 15ce */ 0xffff, /* 15cf */ 0xffff, /* 15d0 */ 0xffff, /* 15d1 */ 0xffff, /* 15d2 */ 0xffff, /* 15d3 */ 0xffff, /* 15d4 */ 0xffff, /* 15d5 */ 0xffff, /* 15d6 */ 0xffff, /* 15d7 */ 0xffff, /* 15d8 */ 0xffff, /* 15d9 */ 0xffff, /* 15da */ 0xffff, /* 15db */ 0xffff, /* 15dc */ 0xffff, /* 15dd */ 0xffff, /* 15de */ 0xffff, /* 15df */ 0xffff, /* 15e0 */ 0xffff, /* 15e1 */ 0xffff, /* 15e2 */ 0xffff, /* 15e3 */ 0xffff, /* 15e4 */ 0xffff, /* 15e5 */ 0xffff, /* 15e6 */ 0xffff, /* 15e7 */ 0xffff, /* 15e8 */ 0xffff, /* 15e9 */ 0xffff, /* 15ea */ 0xffff, /* 15eb */ 0xffff, /* 15ec */ 0xffff, /* 15ed */ 0xffff, /* 15ee */ 0xffff, /* 15ef */ 0xffff, /* 15f0 */ 0xffff, /* 15f1 */ 0xffff, /* 15f2 */ 0xffff, /* 15f3 */ 0xffff, /* 15f4 */ 0xffff, /* 15f5 */ 0xffff, /* 15f6 */ 0xffff, /* 15f7 */ 0xffff, /* 15f8 */ 0xffff, /* 15f9 */ 0xffff, /* 15fa */ 0xffff, /* 15fb */ 0xffff, /* 15fc */ 0xffff, /* 15fd */ 0xffff, /* 15fe */ 0xffff, /* 15ff */ 0xffff, /* 1600 */ 0xffff, /* 1601 */ 0xffff, /* 1602 */ 0xffff, /* 1603 */ 0xffff, /* 1604 */ 0xffff, /* 1605 */ 0xffff, /* 1606 */ 0xffff, /* 1607 */ 0xffff, /* 1608 */ 0xffff, /* 1609 */ 0xffff, /* 160a */ 0xffff, /* 160b */ 0xffff, /* 160c */ 0xffff, /* 160d */ 0xffff, /* 160e */ 0xffff, /* 160f */ 0xffff, /* 1610 */ 0xffff, /* 1611 */ 0xffff, /* 1612 */ 0xffff, /* 1613 */ 0xffff, /* 1614 */ 0xffff, /* 1615 */ 0xffff, /* 1616 */ 0xffff, /* 1617 */ 0xffff, /* 1618 */ 0xffff, /* 1619 */ 0xffff, /* 161a */ 0xffff, /* 161b */ 0xffff, /* 161c */ 0xffff, /* 161d */ 0xffff, /* 161e */ 0xffff, /* 161f */ 0xffff, /* 1620 */ 0xffff, /* 1621 */ 0xffff, /* 1622 */ 0xffff, /* 1623 */ 0xffff, /* 1624 */ 0xffff, /* 1625 */ 0xffff, /* 1626 */ 0xffff, /* 1627 */ 0xffff, /* 1628 */ 0xffff, /* 1629 */ 0xffff, /* 162a */ 0xffff, /* 162b */ 0xffff, /* 162c */ 0xffff, /* 162d */ 0xffff, /* 162e */ 0xffff, /* 162f */ 0xffff, /* 1630 */ 0xffff, /* 1631 */ 0xffff, /* 1632 */ 0xffff, /* 1633 */ 0xffff, /* 1634 */ 0xffff, /* 1635 */ 0xffff, /* 1636 */ 0xffff, /* 1637 */ 0xffff, /* 1638 */ 0xffff, /* 1639 */ 0xffff, /* 163a */ 0xffff, /* 163b */ 0xffff, /* 163c */ 0xffff, /* 163d */ 0xffff, /* 163e */ 0xffff, /* 163f */ 0xffff, /* 1640 */ 0xffff, /* 1641 */ 0xffff, /* 1642 */ 0xffff, /* 1643 */ 0xffff, /* 1644 */ 0xffff, /* 1645 */ 0xffff, /* 1646 */ 0xffff, /* 1647 */ 0xffff, /* 1648 */ 0xffff, /* 1649 */ 0xffff, /* 164a */ 0xffff, /* 164b */ 0xffff, /* 164c */ 0xffff, /* 164d */ 0xffff, /* 164e */ 0xffff, /* 164f */ 0xffff, /* 1650 */ 0xffff, /* 1651 */ 0xffff, /* 1652 */ 0xffff, /* 1653 */ 0xffff, /* 1654 */ 0xffff, /* 1655 */ 0xffff, /* 1656 */ 0xffff, /* 1657 */ 0xffff, /* 1658 */ 0xffff, /* 1659 */ 0xffff, /* 165a */ 0xffff, /* 165b */ 0xffff, /* 165c */ 0xffff, /* 165d */ 0xffff, /* 165e */ 0xffff, /* 165f */ 0xffff, /* 1660 */ 0xffff, /* 1661 */ 0xffff, /* 1662 */ 0xffff, /* 1663 */ 0xffff, /* 1664 */ 0xffff, /* 1665 */ 0xffff, /* 1666 */ 0xffff, /* 1667 */ 0xffff, /* 1668 */ 0xffff, /* 1669 */ 0xffff, /* 166a */ 0xffff, /* 166b */ 0xffff, /* 166c */ 0xffff, /* 166d */ 0xffff, /* 166e */ 0xffff, /* 166f */ 0xffff, /* 1670 */ 0xffff, /* 1671 */ 0xffff, /* 1672 */ 0xffff, /* 1673 */ 0xffff, /* 1674 */ 0xffff, /* 1675 */ 0xffff, /* 1676 */ 0xffff, /* 1677 */ 0xffff, /* 1678 */ 0xffff, /* 1679 */ 0xffff, /* 167a */ 0xffff, /* 167b */ 0xffff, /* 167c */ 0xffff, /* 167d */ 0xffff, /* 167e */ 0xffff, /* 167f */ 0xffff, /* 1680 */ 0xffff, /* 1681 */ 0xffff, /* 1682 */ 0xffff, /* 1683 */ 0xffff, /* 1684 */ 0xffff, /* 1685 */ 0xffff, /* 1686 */ 0xffff, /* 1687 */ 0xffff, /* 1688 */ 0xffff, /* 1689 */ 0xffff, /* 168a */ 0xffff, /* 168b */ 0xffff, /* 168c */ 0xffff, /* 168d */ 0xffff, /* 168e */ 0xffff, /* 168f */ 0xffff, /* 1690 */ 0xffff, /* 1691 */ 0xffff, /* 1692 */ 0xffff, /* 1693 */ 0xffff, /* 1694 */ 0xffff, /* 1695 */ 0xffff, /* 1696 */ 0xffff, /* 1697 */ 0xffff, /* 1698 */ 0xffff, /* 1699 */ 0xffff, /* 169a */ 0xffff, /* 169b */ 0xffff, /* 169c */ 0xffff, /* 169d */ 0xffff, /* 169e */ 0xffff, /* 169f */ 0xffff, /* 16a0 */ 0xffff, /* 16a1 */ 0xffff, /* 16a2 */ 0xffff, /* 16a3 */ 0xffff, /* 16a4 */ 0xffff, /* 16a5 */ 0xffff, /* 16a6 */ 0xffff, /* 16a7 */ 0xffff, /* 16a8 */ 0xffff, /* 16a9 */ 0xffff, /* 16aa */ 0xffff, /* 16ab */ 0xffff, /* 16ac */ 0xffff, /* 16ad */ 0xffff, /* 16ae */ 0xffff, /* 16af */ 0xffff, /* 16b0 */ 0xffff, /* 16b1 */ 0xffff, /* 16b2 */ 0xffff, /* 16b3 */ 0xffff, /* 16b4 */ 0xffff, /* 16b5 */ 0xffff, /* 16b6 */ 0xffff, /* 16b7 */ 0xffff, /* 16b8 */ 0xffff, /* 16b9 */ 0xffff, /* 16ba */ 0xffff, /* 16bb */ 0xffff, /* 16bc */ 0xffff, /* 16bd */ 0xffff, /* 16be */ 0xffff, /* 16bf */ 0xffff, /* 16c0 */ 0xffff, /* 16c1 */ 0xffff, /* 16c2 */ 0xffff, /* 16c3 */ 0xffff, /* 16c4 */ 0xffff, /* 16c5 */ 0xffff, /* 16c6 */ 0xffff, /* 16c7 */ 0xffff, /* 16c8 */ 0xffff, /* 16c9 */ 0xffff, /* 16ca */ 0xffff, /* 16cb */ 0xffff, /* 16cc */ 0xffff, /* 16cd */ 0xffff, /* 16ce */ 0xffff, /* 16cf */ 0xffff, /* 16d0 */ 0xffff, /* 16d1 */ 0xffff, /* 16d2 */ 0xffff, /* 16d3 */ 0xffff, /* 16d4 */ 0xffff, /* 16d5 */ 0xffff, /* 16d6 */ 0xffff, /* 16d7 */ 0xffff, /* 16d8 */ 0xffff, /* 16d9 */ 0xffff, /* 16da */ 0xffff, /* 16db */ 0xffff, /* 16dc */ 0xffff, /* 16dd */ 0xffff, /* 16de */ 0xffff, /* 16df */ 0xffff, /* 16e0 */ 0xffff, /* 16e1 */ 0xffff, /* 16e2 */ 0xffff, /* 16e3 */ 0xffff, /* 16e4 */ 0xffff, /* 16e5 */ 0xffff, /* 16e6 */ 0xffff, /* 16e7 */ 0xffff, /* 16e8 */ 0xffff, /* 16e9 */ 0xffff, /* 16ea */ 0xffff, /* 16eb */ 0xffff, /* 16ec */ 0xffff, /* 16ed */ 0xffff, /* 16ee */ 0xffff, /* 16ef */ 0xffff, /* 16f0 */ 0xffff, /* 16f1 */ 0xffff, /* 16f2 */ 0xffff, /* 16f3 */ 0xffff, /* 16f4 */ 0xffff, /* 16f5 */ 0xffff, /* 16f6 */ 0xffff, /* 16f7 */ 0xffff, /* 16f8 */ 0xffff, /* 16f9 */ 0xffff, /* 16fa */ 0xffff, /* 16fb */ 0xffff, /* 16fc */ 0xffff, /* 16fd */ 0xffff, /* 16fe */ 0xffff, /* 16ff */ 0xffff, /* 1700 */ 0xffff, /* 1701 */ 0xffff, /* 1702 */ 0xffff, /* 1703 */ 0xffff, /* 1704 */ 0xffff, /* 1705 */ 0xffff, /* 1706 */ 0xffff, /* 1707 */ 0xffff, /* 1708 */ 0xffff, /* 1709 */ 0xffff, /* 170a */ 0xffff, /* 170b */ 0xffff, /* 170c */ 0xffff, /* 170d */ 0xffff, /* 170e */ 0xffff, /* 170f */ 0xffff, /* 1710 */ 0xffff, /* 1711 */ 0xffff, /* 1712 */ 0xffff, /* 1713 */ 0xffff, /* 1714 */ 0xffff, /* 1715 */ 0xffff, /* 1716 */ 0xffff, /* 1717 */ 0xffff, /* 1718 */ 0xffff, /* 1719 */ 0xffff, /* 171a */ 0xffff, /* 171b */ 0xffff, /* 171c */ 0xffff, /* 171d */ 0xffff, /* 171e */ 0xffff, /* 171f */ 0xffff, /* 1720 */ 0xffff, /* 1721 */ 0xffff, /* 1722 */ 0xffff, /* 1723 */ 0xffff, /* 1724 */ 0xffff, /* 1725 */ 0xffff, /* 1726 */ 0xffff, /* 1727 */ 0xffff, /* 1728 */ 0xffff, /* 1729 */ 0xffff, /* 172a */ 0xffff, /* 172b */ 0xffff, /* 172c */ 0xffff, /* 172d */ 0xffff, /* 172e */ 0xffff, /* 172f */ 0xffff, /* 1730 */ 0xffff, /* 1731 */ 0xffff, /* 1732 */ 0xffff, /* 1733 */ 0xffff, /* 1734 */ 0xffff, /* 1735 */ 0xffff, /* 1736 */ 0xffff, /* 1737 */ 0xffff, /* 1738 */ 0xffff, /* 1739 */ 0xffff, /* 173a */ 0xffff, /* 173b */ 0xffff, /* 173c */ 0xffff, /* 173d */ 0xffff, /* 173e */ 0xffff, /* 173f */ 0xffff, /* 1740 */ 0xffff, /* 1741 */ 0xffff, /* 1742 */ 0xffff, /* 1743 */ 0xffff, /* 1744 */ 0xffff, /* 1745 */ 0xffff, /* 1746 */ 0xffff, /* 1747 */ 0xffff, /* 1748 */ 0xffff, /* 1749 */ 0xffff, /* 174a */ 0xffff, /* 174b */ 0xffff, /* 174c */ 0xffff, /* 174d */ 0xffff, /* 174e */ 0xffff, /* 174f */ 0xffff, /* 1750 */ 0xffff, /* 1751 */ 0xffff, /* 1752 */ 0xffff, /* 1753 */ 0xffff, /* 1754 */ 0xffff, /* 1755 */ 0xffff, /* 1756 */ 0xffff, /* 1757 */ 0xffff, /* 1758 */ 0xffff, /* 1759 */ 0xffff, /* 175a */ 0xffff, /* 175b */ 0xffff, /* 175c */ 0xffff, /* 175d */ 0xffff, /* 175e */ 0xffff, /* 175f */ 0xffff, /* 1760 */ 0xffff, /* 1761 */ 0xffff, /* 1762 */ 0xffff, /* 1763 */ 0xffff, /* 1764 */ 0xffff, /* 1765 */ 0xffff, /* 1766 */ 0xffff, /* 1767 */ 0xffff, /* 1768 */ 0xffff, /* 1769 */ 0xffff, /* 176a */ 0xffff, /* 176b */ 0xffff, /* 176c */ 0xffff, /* 176d */ 0xffff, /* 176e */ 0xffff, /* 176f */ 0xffff, /* 1770 */ 0xffff, /* 1771 */ 0xffff, /* 1772 */ 0xffff, /* 1773 */ 0xffff, /* 1774 */ 0xffff, /* 1775 */ 0xffff, /* 1776 */ 0xffff, /* 1777 */ 0xffff, /* 1778 */ 0xffff, /* 1779 */ 0xffff, /* 177a */ 0xffff, /* 177b */ 0xffff, /* 177c */ 0xffff, /* 177d */ 0xffff, /* 177e */ 0xffff, /* 177f */ 0xffff, /* 1780 */ 0xffff, /* 1781 */ 0xffff, /* 1782 */ 0xffff, /* 1783 */ 0xffff, /* 1784 */ 0xffff, /* 1785 */ 0xffff, /* 1786 */ 0xffff, /* 1787 */ 0xffff, /* 1788 */ 0xffff, /* 1789 */ 0xffff, /* 178a */ 0xffff, /* 178b */ 0xffff, /* 178c */ 0xffff, /* 178d */ 0xffff, /* 178e */ 0xffff, /* 178f */ 0xffff, /* 1790 */ 0xffff, /* 1791 */ 0xffff, /* 1792 */ 0xffff, /* 1793 */ 0xffff, /* 1794 */ 0xffff, /* 1795 */ 0xffff, /* 1796 */ 0xffff, /* 1797 */ 0xffff, /* 1798 */ 0xffff, /* 1799 */ 0xffff, /* 179a */ 0xffff, /* 179b */ 0xffff, /* 179c */ 0xffff, /* 179d */ 0xffff, /* 179e */ 0xffff, /* 179f */ 0xffff, /* 17a0 */ 0xffff, /* 17a1 */ 0xffff, /* 17a2 */ 0xffff, /* 17a3 */ 0xffff, /* 17a4 */ 0xffff, /* 17a5 */ 0xffff, /* 17a6 */ 0xffff, /* 17a7 */ 0xffff, /* 17a8 */ 0xffff, /* 17a9 */ 0xffff, /* 17aa */ 0xffff, /* 17ab */ 0xffff, /* 17ac */ 0xffff, /* 17ad */ 0xffff, /* 17ae */ 0xffff, /* 17af */ 0xffff, /* 17b0 */ 0xffff, /* 17b1 */ 0xffff, /* 17b2 */ 0xffff, /* 17b3 */ 0xffff, /* 17b4 */ 0xffff, /* 17b5 */ 0xffff, /* 17b6 */ 0xffff, /* 17b7 */ 0xffff, /* 17b8 */ 0xffff, /* 17b9 */ 0xffff, /* 17ba */ 0xffff, /* 17bb */ 0xffff, /* 17bc */ 0xffff, /* 17bd */ 0xffff, /* 17be */ 0xffff, /* 17bf */ 0xffff, /* 17c0 */ 0xffff, /* 17c1 */ 0xffff, /* 17c2 */ 0xffff, /* 17c3 */ 0xffff, /* 17c4 */ 0xffff, /* 17c5 */ 0xffff, /* 17c6 */ 0xffff, /* 17c7 */ 0xffff, /* 17c8 */ 0xffff, /* 17c9 */ 0xffff, /* 17ca */ 0xffff, /* 17cb */ 0xffff, /* 17cc */ 0xffff, /* 17cd */ 0xffff, /* 17ce */ 0xffff, /* 17cf */ 0xffff, /* 17d0 */ 0xffff, /* 17d1 */ 0xffff, /* 17d2 */ 0xffff, /* 17d3 */ 0xffff, /* 17d4 */ 0xffff, /* 17d5 */ 0xffff, /* 17d6 */ 0xffff, /* 17d7 */ 0xffff, /* 17d8 */ 0xffff, /* 17d9 */ 0xffff, /* 17da */ 0xffff, /* 17db */ 0xffff, /* 17dc */ 0xffff, /* 17dd */ 0xffff, /* 17de */ 0xffff, /* 17df */ 0xffff, /* 17e0 */ 0xffff, /* 17e1 */ 0xffff, /* 17e2 */ 0xffff, /* 17e3 */ 0xffff, /* 17e4 */ 0xffff, /* 17e5 */ 0xffff, /* 17e6 */ 0xffff, /* 17e7 */ 0xffff, /* 17e8 */ 0xffff, /* 17e9 */ 0xffff, /* 17ea */ 0xffff, /* 17eb */ 0xffff, /* 17ec */ 0xffff, /* 17ed */ 0xffff, /* 17ee */ 0xffff, /* 17ef */ 0xffff, /* 17f0 */ 0xffff, /* 17f1 */ 0xffff, /* 17f2 */ 0xffff, /* 17f3 */ 0xffff, /* 17f4 */ 0xffff, /* 17f5 */ 0xffff, /* 17f6 */ 0xffff, /* 17f7 */ 0xffff, /* 17f8 */ 0xffff, /* 17f9 */ 0xffff, /* 17fa */ 0xffff, /* 17fb */ 0xffff, /* 17fc */ 0xffff, /* 17fd */ 0xffff, /* 17fe */ 0xffff, /* 17ff */ 0xffff, /* 1800 */ 0xffff, /* 1801 */ 0xffff, /* 1802 */ 0xffff, /* 1803 */ 0xffff, /* 1804 */ 0xffff, /* 1805 */ 0xffff, /* 1806 */ 0xffff, /* 1807 */ 0xffff, /* 1808 */ 0xffff, /* 1809 */ 0xffff, /* 180a */ 0xffff, /* 180b */ 0xffff, /* 180c */ 0xffff, /* 180d */ 0xffff, /* 180e */ 0xffff, /* 180f */ 0xffff, /* 1810 */ 0xffff, /* 1811 */ 0xffff, /* 1812 */ 0xffff, /* 1813 */ 0xffff, /* 1814 */ 0xffff, /* 1815 */ 0xffff, /* 1816 */ 0xffff, /* 1817 */ 0xffff, /* 1818 */ 0xffff, /* 1819 */ 0xffff, /* 181a */ 0xffff, /* 181b */ 0xffff, /* 181c */ 0xffff, /* 181d */ 0xffff, /* 181e */ 0xffff, /* 181f */ 0xffff, /* 1820 */ 0xffff, /* 1821 */ 0xffff, /* 1822 */ 0xffff, /* 1823 */ 0xffff, /* 1824 */ 0xffff, /* 1825 */ 0xffff, /* 1826 */ 0xffff, /* 1827 */ 0xffff, /* 1828 */ 0xffff, /* 1829 */ 0xffff, /* 182a */ 0xffff, /* 182b */ 0xffff, /* 182c */ 0xffff, /* 182d */ 0xffff, /* 182e */ 0xffff, /* 182f */ 0xffff, /* 1830 */ 0xffff, /* 1831 */ 0xffff, /* 1832 */ 0xffff, /* 1833 */ 0xffff, /* 1834 */ 0xffff, /* 1835 */ 0xffff, /* 1836 */ 0xffff, /* 1837 */ 0xffff, /* 1838 */ 0xffff, /* 1839 */ 0xffff, /* 183a */ 0xffff, /* 183b */ 0xffff, /* 183c */ 0xffff, /* 183d */ 0xffff, /* 183e */ 0xffff, /* 183f */ 0xffff, /* 1840 */ 0xffff, /* 1841 */ 0xffff, /* 1842 */ 0xffff, /* 1843 */ 0xffff, /* 1844 */ 0xffff, /* 1845 */ 0xffff, /* 1846 */ 0xffff, /* 1847 */ 0xffff, /* 1848 */ 0xffff, /* 1849 */ 0xffff, /* 184a */ 0xffff, /* 184b */ 0xffff, /* 184c */ 0xffff, /* 184d */ 0xffff, /* 184e */ 0xffff, /* 184f */ 0xffff, /* 1850 */ 0xffff, /* 1851 */ 0xffff, /* 1852 */ 0xffff, /* 1853 */ 0xffff, /* 1854 */ 0xffff, /* 1855 */ 0xffff, /* 1856 */ 0xffff, /* 1857 */ 0xffff, /* 1858 */ 0xffff, /* 1859 */ 0xffff, /* 185a */ 0xffff, /* 185b */ 0xffff, /* 185c */ 0xffff, /* 185d */ 0xffff, /* 185e */ 0xffff, /* 185f */ 0xffff, /* 1860 */ 0xffff, /* 1861 */ 0xffff, /* 1862 */ 0xffff, /* 1863 */ 0xffff, /* 1864 */ 0xffff, /* 1865 */ 0xffff, /* 1866 */ 0xffff, /* 1867 */ 0xffff, /* 1868 */ 0xffff, /* 1869 */ 0xffff, /* 186a */ 0xffff, /* 186b */ 0xffff, /* 186c */ 0xffff, /* 186d */ 0xffff, /* 186e */ 0xffff, /* 186f */ 0xffff, /* 1870 */ 0xffff, /* 1871 */ 0xffff, /* 1872 */ 0xffff, /* 1873 */ 0xffff, /* 1874 */ 0xffff, /* 1875 */ 0xffff, /* 1876 */ 0xffff, /* 1877 */ 0xffff, /* 1878 */ 0xffff, /* 1879 */ 0xffff, /* 187a */ 0xffff, /* 187b */ 0xffff, /* 187c */ 0xffff, /* 187d */ 0xffff, /* 187e */ 0xffff, /* 187f */ 0xffff, /* 1880 */ 0xffff, /* 1881 */ 0xffff, /* 1882 */ 0xffff, /* 1883 */ 0xffff, /* 1884 */ 0xffff, /* 1885 */ 0xffff, /* 1886 */ 0xffff, /* 1887 */ 0xffff, /* 1888 */ 0xffff, /* 1889 */ 0xffff, /* 188a */ 0xffff, /* 188b */ 0xffff, /* 188c */ 0xffff, /* 188d */ 0xffff, /* 188e */ 0xffff, /* 188f */ 0xffff, /* 1890 */ 0xffff, /* 1891 */ 0xffff, /* 1892 */ 0xffff, /* 1893 */ 0xffff, /* 1894 */ 0xffff, /* 1895 */ 0xffff, /* 1896 */ 0xffff, /* 1897 */ 0xffff, /* 1898 */ 0xffff, /* 1899 */ 0xffff, /* 189a */ 0xffff, /* 189b */ 0xffff, /* 189c */ 0xffff, /* 189d */ 0xffff, /* 189e */ 0xffff, /* 189f */ 0xffff, /* 18a0 */ 0xffff, /* 18a1 */ 0xffff, /* 18a2 */ 0xffff, /* 18a3 */ 0xffff, /* 18a4 */ 0xffff, /* 18a5 */ 0xffff, /* 18a6 */ 0xffff, /* 18a7 */ 0xffff, /* 18a8 */ 0xffff, /* 18a9 */ 0xffff, /* 18aa */ 0xffff, /* 18ab */ 0xffff, /* 18ac */ 0xffff, /* 18ad */ 0xffff, /* 18ae */ 0xffff, /* 18af */ 0xffff, /* 18b0 */ 0xffff, /* 18b1 */ 0xffff, /* 18b2 */ 0xffff, /* 18b3 */ 0xffff, /* 18b4 */ 0xffff, /* 18b5 */ 0xffff, /* 18b6 */ 0xffff, /* 18b7 */ 0xffff, /* 18b8 */ 0xffff, /* 18b9 */ 0xffff, /* 18ba */ 0xffff, /* 18bb */ 0xffff, /* 18bc */ 0xffff, /* 18bd */ 0xffff, /* 18be */ 0xffff, /* 18bf */ 0xffff, /* 18c0 */ 0xffff, /* 18c1 */ 0xffff, /* 18c2 */ 0xffff, /* 18c3 */ 0xffff, /* 18c4 */ 0xffff, /* 18c5 */ 0xffff, /* 18c6 */ 0xffff, /* 18c7 */ 0xffff, /* 18c8 */ 0xffff, /* 18c9 */ 0xffff, /* 18ca */ 0xffff, /* 18cb */ 0xffff, /* 18cc */ 0xffff, /* 18cd */ 0xffff, /* 18ce */ 0xffff, /* 18cf */ 0xffff, /* 18d0 */ 0xffff, /* 18d1 */ 0xffff, /* 18d2 */ 0xffff, /* 18d3 */ 0xffff, /* 18d4 */ 0xffff, /* 18d5 */ 0xffff, /* 18d6 */ 0xffff, /* 18d7 */ 0xffff, /* 18d8 */ 0xffff, /* 18d9 */ 0xffff, /* 18da */ 0xffff, /* 18db */ 0xffff, /* 18dc */ 0xffff, /* 18dd */ 0xffff, /* 18de */ 0xffff, /* 18df */ 0xffff, /* 18e0 */ 0xffff, /* 18e1 */ 0xffff, /* 18e2 */ 0xffff, /* 18e3 */ 0xffff, /* 18e4 */ 0xffff, /* 18e5 */ 0xffff, /* 18e6 */ 0xffff, /* 18e7 */ 0xffff, /* 18e8 */ 0xffff, /* 18e9 */ 0xffff, /* 18ea */ 0xffff, /* 18eb */ 0xffff, /* 18ec */ 0xffff, /* 18ed */ 0xffff, /* 18ee */ 0xffff, /* 18ef */ 0xffff, /* 18f0 */ 0xffff, /* 18f1 */ 0xffff, /* 18f2 */ 0xffff, /* 18f3 */ 0xffff, /* 18f4 */ 0xffff, /* 18f5 */ 0xffff, /* 18f6 */ 0xffff, /* 18f7 */ 0xffff, /* 18f8 */ 0xffff, /* 18f9 */ 0xffff, /* 18fa */ 0xffff, /* 18fb */ 0xffff, /* 18fc */ 0xffff, /* 18fd */ 0xffff, /* 18fe */ 0xffff, /* 18ff */ 0xffff, /* 1900 */ 0xffff, /* 1901 */ 0xffff, /* 1902 */ 0xffff, /* 1903 */ 0xffff, /* 1904 */ 0xffff, /* 1905 */ 0xffff, /* 1906 */ 0xffff, /* 1907 */ 0xffff, /* 1908 */ 0xffff, /* 1909 */ 0xffff, /* 190a */ 0xffff, /* 190b */ 0xffff, /* 190c */ 0xffff, /* 190d */ 0xffff, /* 190e */ 0xffff, /* 190f */ 0xffff, /* 1910 */ 0xffff, /* 1911 */ 0xffff, /* 1912 */ 0xffff, /* 1913 */ 0xffff, /* 1914 */ 0xffff, /* 1915 */ 0xffff, /* 1916 */ 0xffff, /* 1917 */ 0xffff, /* 1918 */ 0xffff, /* 1919 */ 0xffff, /* 191a */ 0xffff, /* 191b */ 0xffff, /* 191c */ 0xffff, /* 191d */ 0xffff, /* 191e */ 0xffff, /* 191f */ 0xffff, /* 1920 */ 0xffff, /* 1921 */ 0xffff, /* 1922 */ 0xffff, /* 1923 */ 0xffff, /* 1924 */ 0xffff, /* 1925 */ 0xffff, /* 1926 */ 0xffff, /* 1927 */ 0xffff, /* 1928 */ 0xffff, /* 1929 */ 0xffff, /* 192a */ 0xffff, /* 192b */ 0xffff, /* 192c */ 0xffff, /* 192d */ 0xffff, /* 192e */ 0xffff, /* 192f */ 0xffff, /* 1930 */ 0xffff, /* 1931 */ 0xffff, /* 1932 */ 0xffff, /* 1933 */ 0xffff, /* 1934 */ 0xffff, /* 1935 */ 0xffff, /* 1936 */ 0xffff, /* 1937 */ 0xffff, /* 1938 */ 0xffff, /* 1939 */ 0xffff, /* 193a */ 0xffff, /* 193b */ 0xffff, /* 193c */ 0xffff, /* 193d */ 0xffff, /* 193e */ 0xffff, /* 193f */ 0xffff, /* 1940 */ 0xffff, /* 1941 */ 0xffff, /* 1942 */ 0xffff, /* 1943 */ 0xffff, /* 1944 */ 0xffff, /* 1945 */ 0xffff, /* 1946 */ 0xffff, /* 1947 */ 0xffff, /* 1948 */ 0xffff, /* 1949 */ 0xffff, /* 194a */ 0xffff, /* 194b */ 0xffff, /* 194c */ 0xffff, /* 194d */ 0xffff, /* 194e */ 0xffff, /* 194f */ 0xffff, /* 1950 */ 0xffff, /* 1951 */ 0xffff, /* 1952 */ 0xffff, /* 1953 */ 0xffff, /* 1954 */ 0xffff, /* 1955 */ 0xffff, /* 1956 */ 0xffff, /* 1957 */ 0xffff, /* 1958 */ 0xffff, /* 1959 */ 0xffff, /* 195a */ 0xffff, /* 195b */ 0xffff, /* 195c */ 0xffff, /* 195d */ 0xffff, /* 195e */ 0xffff, /* 195f */ 0xffff, /* 1960 */ 0xffff, /* 1961 */ 0xffff, /* 1962 */ 0xffff, /* 1963 */ 0xffff, /* 1964 */ 0xffff, /* 1965 */ 0xffff, /* 1966 */ 0xffff, /* 1967 */ 0xffff, /* 1968 */ 0xffff, /* 1969 */ 0xffff, /* 196a */ 0xffff, /* 196b */ 0xffff, /* 196c */ 0xffff, /* 196d */ 0xffff, /* 196e */ 0xffff, /* 196f */ 0xffff, /* 1970 */ 0xffff, /* 1971 */ 0xffff, /* 1972 */ 0xffff, /* 1973 */ 0xffff, /* 1974 */ 0xffff, /* 1975 */ 0xffff, /* 1976 */ 0xffff, /* 1977 */ 0xffff, /* 1978 */ 0xffff, /* 1979 */ 0xffff, /* 197a */ 0xffff, /* 197b */ 0xffff, /* 197c */ 0xffff, /* 197d */ 0xffff, /* 197e */ 0xffff, /* 197f */ 0xffff, /* 1980 */ 0xffff, /* 1981 */ 0xffff, /* 1982 */ 0xffff, /* 1983 */ 0xffff, /* 1984 */ 0xffff, /* 1985 */ 0xffff, /* 1986 */ 0xffff, /* 1987 */ 0xffff, /* 1988 */ 0xffff, /* 1989 */ 0xffff, /* 198a */ 0xffff, /* 198b */ 0xffff, /* 198c */ 0xffff, /* 198d */ 0xffff, /* 198e */ 0xffff, /* 198f */ 0xffff, /* 1990 */ 0xffff, /* 1991 */ 0xffff, /* 1992 */ 0xffff, /* 1993 */ 0xffff, /* 1994 */ 0xffff, /* 1995 */ 0xffff, /* 1996 */ 0xffff, /* 1997 */ 0xffff, /* 1998 */ 0xffff, /* 1999 */ 0xffff, /* 199a */ 0xffff, /* 199b */ 0xffff, /* 199c */ 0xffff, /* 199d */ 0xffff, /* 199e */ 0xffff, /* 199f */ 0xffff, /* 19a0 */ 0xffff, /* 19a1 */ 0xffff, /* 19a2 */ 0xffff, /* 19a3 */ 0xffff, /* 19a4 */ 0xffff, /* 19a5 */ 0xffff, /* 19a6 */ 0xffff, /* 19a7 */ 0xffff, /* 19a8 */ 0xffff, /* 19a9 */ 0xffff, /* 19aa */ 0xffff, /* 19ab */ 0xffff, /* 19ac */ 0xffff, /* 19ad */ 0xffff, /* 19ae */ 0xffff, /* 19af */ 0xffff, /* 19b0 */ 0xffff, /* 19b1 */ 0xffff, /* 19b2 */ 0xffff, /* 19b3 */ 0xffff, /* 19b4 */ 0xffff, /* 19b5 */ 0xffff, /* 19b6 */ 0xffff, /* 19b7 */ 0xffff, /* 19b8 */ 0xffff, /* 19b9 */ 0xffff, /* 19ba */ 0xffff, /* 19bb */ 0xffff, /* 19bc */ 0xffff, /* 19bd */ 0xffff, /* 19be */ 0xffff, /* 19bf */ 0xffff, /* 19c0 */ 0xffff, /* 19c1 */ 0xffff, /* 19c2 */ 0xffff, /* 19c3 */ 0xffff, /* 19c4 */ 0xffff, /* 19c5 */ 0xffff, /* 19c6 */ 0xffff, /* 19c7 */ 0xffff, /* 19c8 */ 0xffff, /* 19c9 */ 0xffff, /* 19ca */ 0xffff, /* 19cb */ 0xffff, /* 19cc */ 0xffff, /* 19cd */ 0xffff, /* 19ce */ 0xffff, /* 19cf */ 0xffff, /* 19d0 */ 0xffff, /* 19d1 */ 0xffff, /* 19d2 */ 0xffff, /* 19d3 */ 0xffff, /* 19d4 */ 0xffff, /* 19d5 */ 0xffff, /* 19d6 */ 0xffff, /* 19d7 */ 0xffff, /* 19d8 */ 0xffff, /* 19d9 */ 0xffff, /* 19da */ 0xffff, /* 19db */ 0xffff, /* 19dc */ 0xffff, /* 19dd */ 0xffff, /* 19de */ 0xffff, /* 19df */ 0xffff, /* 19e0 */ 0xffff, /* 19e1 */ 0xffff, /* 19e2 */ 0xffff, /* 19e3 */ 0xffff, /* 19e4 */ 0xffff, /* 19e5 */ 0xffff, /* 19e6 */ 0xffff, /* 19e7 */ 0xffff, /* 19e8 */ 0xffff, /* 19e9 */ 0xffff, /* 19ea */ 0xffff, /* 19eb */ 0xffff, /* 19ec */ 0xffff, /* 19ed */ 0xffff, /* 19ee */ 0xffff, /* 19ef */ 0xffff, /* 19f0 */ 0xffff, /* 19f1 */ 0xffff, /* 19f2 */ 0xffff, /* 19f3 */ 0xffff, /* 19f4 */ 0xffff, /* 19f5 */ 0xffff, /* 19f6 */ 0xffff, /* 19f7 */ 0xffff, /* 19f8 */ 0xffff, /* 19f9 */ 0xffff, /* 19fa */ 0xffff, /* 19fb */ 0xffff, /* 19fc */ 0xffff, /* 19fd */ 0xffff, /* 19fe */ 0xffff, /* 19ff */ 0xffff, /* 1a00 */ 0xffff, /* 1a01 */ 0xffff, /* 1a02 */ 0xffff, /* 1a03 */ 0xffff, /* 1a04 */ 0xffff, /* 1a05 */ 0xffff, /* 1a06 */ 0xffff, /* 1a07 */ 0xffff, /* 1a08 */ 0xffff, /* 1a09 */ 0xffff, /* 1a0a */ 0xffff, /* 1a0b */ 0xffff, /* 1a0c */ 0xffff, /* 1a0d */ 0xffff, /* 1a0e */ 0xffff, /* 1a0f */ 0xffff, /* 1a10 */ 0xffff, /* 1a11 */ 0xffff, /* 1a12 */ 0xffff, /* 1a13 */ 0xffff, /* 1a14 */ 0xffff, /* 1a15 */ 0xffff, /* 1a16 */ 0xffff, /* 1a17 */ 0xffff, /* 1a18 */ 0xffff, /* 1a19 */ 0xffff, /* 1a1a */ 0xffff, /* 1a1b */ 0xffff, /* 1a1c */ 0xffff, /* 1a1d */ 0xffff, /* 1a1e */ 0xffff, /* 1a1f */ 0xffff, /* 1a20 */ 0xffff, /* 1a21 */ 0xffff, /* 1a22 */ 0xffff, /* 1a23 */ 0xffff, /* 1a24 */ 0xffff, /* 1a25 */ 0xffff, /* 1a26 */ 0xffff, /* 1a27 */ 0xffff, /* 1a28 */ 0xffff, /* 1a29 */ 0xffff, /* 1a2a */ 0xffff, /* 1a2b */ 0xffff, /* 1a2c */ 0xffff, /* 1a2d */ 0xffff, /* 1a2e */ 0xffff, /* 1a2f */ 0xffff, /* 1a30 */ 0xffff, /* 1a31 */ 0xffff, /* 1a32 */ 0xffff, /* 1a33 */ 0xffff, /* 1a34 */ 0xffff, /* 1a35 */ 0xffff, /* 1a36 */ 0xffff, /* 1a37 */ 0xffff, /* 1a38 */ 0xffff, /* 1a39 */ 0xffff, /* 1a3a */ 0xffff, /* 1a3b */ 0xffff, /* 1a3c */ 0xffff, /* 1a3d */ 0xffff, /* 1a3e */ 0xffff, /* 1a3f */ 0xffff, /* 1a40 */ 0xffff, /* 1a41 */ 0xffff, /* 1a42 */ 0xffff, /* 1a43 */ 0xffff, /* 1a44 */ 0xffff, /* 1a45 */ 0xffff, /* 1a46 */ 0xffff, /* 1a47 */ 0xffff, /* 1a48 */ 0xffff, /* 1a49 */ 0xffff, /* 1a4a */ 0xffff, /* 1a4b */ 0xffff, /* 1a4c */ 0xffff, /* 1a4d */ 0xffff, /* 1a4e */ 0xffff, /* 1a4f */ 0xffff, /* 1a50 */ 0xffff, /* 1a51 */ 0xffff, /* 1a52 */ 0xffff, /* 1a53 */ 0xffff, /* 1a54 */ 0xffff, /* 1a55 */ 0xffff, /* 1a56 */ 0xffff, /* 1a57 */ 0xffff, /* 1a58 */ 0xffff, /* 1a59 */ 0xffff, /* 1a5a */ 0xffff, /* 1a5b */ 0xffff, /* 1a5c */ 0xffff, /* 1a5d */ 0xffff, /* 1a5e */ 0xffff, /* 1a5f */ 0xffff, /* 1a60 */ 0xffff, /* 1a61 */ 0xffff, /* 1a62 */ 0xffff, /* 1a63 */ 0xffff, /* 1a64 */ 0xffff, /* 1a65 */ 0xffff, /* 1a66 */ 0xffff, /* 1a67 */ 0xffff, /* 1a68 */ 0xffff, /* 1a69 */ 0xffff, /* 1a6a */ 0xffff, /* 1a6b */ 0xffff, /* 1a6c */ 0xffff, /* 1a6d */ 0xffff, /* 1a6e */ 0xffff, /* 1a6f */ 0xffff, /* 1a70 */ 0xffff, /* 1a71 */ 0xffff, /* 1a72 */ 0xffff, /* 1a73 */ 0xffff, /* 1a74 */ 0xffff, /* 1a75 */ 0xffff, /* 1a76 */ 0xffff, /* 1a77 */ 0xffff, /* 1a78 */ 0xffff, /* 1a79 */ 0xffff, /* 1a7a */ 0xffff, /* 1a7b */ 0xffff, /* 1a7c */ 0xffff, /* 1a7d */ 0xffff, /* 1a7e */ 0xffff, /* 1a7f */ 0xffff, /* 1a80 */ 0xffff, /* 1a81 */ 0xffff, /* 1a82 */ 0xffff, /* 1a83 */ 0xffff, /* 1a84 */ 0xffff, /* 1a85 */ 0xffff, /* 1a86 */ 0xffff, /* 1a87 */ 0xffff, /* 1a88 */ 0xffff, /* 1a89 */ 0xffff, /* 1a8a */ 0xffff, /* 1a8b */ 0xffff, /* 1a8c */ 0xffff, /* 1a8d */ 0xffff, /* 1a8e */ 0xffff, /* 1a8f */ 0xffff, /* 1a90 */ 0xffff, /* 1a91 */ 0xffff, /* 1a92 */ 0xffff, /* 1a93 */ 0xffff, /* 1a94 */ 0xffff, /* 1a95 */ 0xffff, /* 1a96 */ 0xffff, /* 1a97 */ 0xffff, /* 1a98 */ 0xffff, /* 1a99 */ 0xffff, /* 1a9a */ 0xffff, /* 1a9b */ 0xffff, /* 1a9c */ 0xffff, /* 1a9d */ 0xffff, /* 1a9e */ 0xffff, /* 1a9f */ 0xffff, /* 1aa0 */ 0xffff, /* 1aa1 */ 0xffff, /* 1aa2 */ 0xffff, /* 1aa3 */ 0xffff, /* 1aa4 */ 0xffff, /* 1aa5 */ 0xffff, /* 1aa6 */ 0xffff, /* 1aa7 */ 0xffff, /* 1aa8 */ 0xffff, /* 1aa9 */ 0xffff, /* 1aaa */ 0xffff, /* 1aab */ 0xffff, /* 1aac */ 0xffff, /* 1aad */ 0xffff, /* 1aae */ 0xffff, /* 1aaf */ 0xffff, /* 1ab0 */ 0xffff, /* 1ab1 */ 0xffff, /* 1ab2 */ 0xffff, /* 1ab3 */ 0xffff, /* 1ab4 */ 0xffff, /* 1ab5 */ 0xffff, /* 1ab6 */ 0xffff, /* 1ab7 */ 0xffff, /* 1ab8 */ 0xffff, /* 1ab9 */ 0xffff, /* 1aba */ 0xffff, /* 1abb */ 0xffff, /* 1abc */ 0xffff, /* 1abd */ 0xffff, /* 1abe */ 0xffff, /* 1abf */ 0xffff, /* 1ac0 */ 0xffff, /* 1ac1 */ 0xffff, /* 1ac2 */ 0xffff, /* 1ac3 */ 0xffff, /* 1ac4 */ 0xffff, /* 1ac5 */ 0xffff, /* 1ac6 */ 0xffff, /* 1ac7 */ 0xffff, /* 1ac8 */ 0xffff, /* 1ac9 */ 0xffff, /* 1aca */ 0xffff, /* 1acb */ 0xffff, /* 1acc */ 0xffff, /* 1acd */ 0xffff, /* 1ace */ 0xffff, /* 1acf */ 0xffff, /* 1ad0 */ 0xffff, /* 1ad1 */ 0xffff, /* 1ad2 */ 0xffff, /* 1ad3 */ 0xffff, /* 1ad4 */ 0xffff, /* 1ad5 */ 0xffff, /* 1ad6 */ 0xffff, /* 1ad7 */ 0xffff, /* 1ad8 */ 0xffff, /* 1ad9 */ 0xffff, /* 1ada */ 0xffff, /* 1adb */ 0xffff, /* 1adc */ 0xffff, /* 1add */ 0xffff, /* 1ade */ 0xffff, /* 1adf */ 0xffff, /* 1ae0 */ 0xffff, /* 1ae1 */ 0xffff, /* 1ae2 */ 0xffff, /* 1ae3 */ 0xffff, /* 1ae4 */ 0xffff, /* 1ae5 */ 0xffff, /* 1ae6 */ 0xffff, /* 1ae7 */ 0xffff, /* 1ae8 */ 0xffff, /* 1ae9 */ 0xffff, /* 1aea */ 0xffff, /* 1aeb */ 0xffff, /* 1aec */ 0xffff, /* 1aed */ 0xffff, /* 1aee */ 0xffff, /* 1aef */ 0xffff, /* 1af0 */ 0xffff, /* 1af1 */ 0xffff, /* 1af2 */ 0xffff, /* 1af3 */ 0xffff, /* 1af4 */ 0xffff, /* 1af5 */ 0xffff, /* 1af6 */ 0xffff, /* 1af7 */ 0xffff, /* 1af8 */ 0xffff, /* 1af9 */ 0xffff, /* 1afa */ 0xffff, /* 1afb */ 0xffff, /* 1afc */ 0xffff, /* 1afd */ 0xffff, /* 1afe */ 0xffff, /* 1aff */ 0xffff, /* 1b00 */ 0xffff, /* 1b01 */ 0xffff, /* 1b02 */ 0xffff, /* 1b03 */ 0xffff, /* 1b04 */ 0xffff, /* 1b05 */ 0xffff, /* 1b06 */ 0xffff, /* 1b07 */ 0xffff, /* 1b08 */ 0xffff, /* 1b09 */ 0xffff, /* 1b0a */ 0xffff, /* 1b0b */ 0xffff, /* 1b0c */ 0xffff, /* 1b0d */ 0xffff, /* 1b0e */ 0xffff, /* 1b0f */ 0xffff, /* 1b10 */ 0xffff, /* 1b11 */ 0xffff, /* 1b12 */ 0xffff, /* 1b13 */ 0xffff, /* 1b14 */ 0xffff, /* 1b15 */ 0xffff, /* 1b16 */ 0xffff, /* 1b17 */ 0xffff, /* 1b18 */ 0xffff, /* 1b19 */ 0xffff, /* 1b1a */ 0xffff, /* 1b1b */ 0xffff, /* 1b1c */ 0xffff, /* 1b1d */ 0xffff, /* 1b1e */ 0xffff, /* 1b1f */ 0xffff, /* 1b20 */ 0xffff, /* 1b21 */ 0xffff, /* 1b22 */ 0xffff, /* 1b23 */ 0xffff, /* 1b24 */ 0xffff, /* 1b25 */ 0xffff, /* 1b26 */ 0xffff, /* 1b27 */ 0xffff, /* 1b28 */ 0xffff, /* 1b29 */ 0xffff, /* 1b2a */ 0xffff, /* 1b2b */ 0xffff, /* 1b2c */ 0xffff, /* 1b2d */ 0xffff, /* 1b2e */ 0xffff, /* 1b2f */ 0xffff, /* 1b30 */ 0xffff, /* 1b31 */ 0xffff, /* 1b32 */ 0xffff, /* 1b33 */ 0xffff, /* 1b34 */ 0xffff, /* 1b35 */ 0xffff, /* 1b36 */ 0xffff, /* 1b37 */ 0xffff, /* 1b38 */ 0xffff, /* 1b39 */ 0xffff, /* 1b3a */ 0xffff, /* 1b3b */ 0xffff, /* 1b3c */ 0xffff, /* 1b3d */ 0xffff, /* 1b3e */ 0xffff, /* 1b3f */ 0xffff, /* 1b40 */ 0xffff, /* 1b41 */ 0xffff, /* 1b42 */ 0xffff, /* 1b43 */ 0xffff, /* 1b44 */ 0xffff, /* 1b45 */ 0xffff, /* 1b46 */ 0xffff, /* 1b47 */ 0xffff, /* 1b48 */ 0xffff, /* 1b49 */ 0xffff, /* 1b4a */ 0xffff, /* 1b4b */ 0xffff, /* 1b4c */ 0xffff, /* 1b4d */ 0xffff, /* 1b4e */ 0xffff, /* 1b4f */ 0xffff, /* 1b50 */ 0xffff, /* 1b51 */ 0xffff, /* 1b52 */ 0xffff, /* 1b53 */ 0xffff, /* 1b54 */ 0xffff, /* 1b55 */ 0xffff, /* 1b56 */ 0xffff, /* 1b57 */ 0xffff, /* 1b58 */ 0xffff, /* 1b59 */ 0xffff, /* 1b5a */ 0xffff, /* 1b5b */ 0xffff, /* 1b5c */ 0xffff, /* 1b5d */ 0xffff, /* 1b5e */ 0xffff, /* 1b5f */ 0xffff, /* 1b60 */ 0xffff, /* 1b61 */ 0xffff, /* 1b62 */ 0xffff, /* 1b63 */ 0xffff, /* 1b64 */ 0xffff, /* 1b65 */ 0xffff, /* 1b66 */ 0xffff, /* 1b67 */ 0xffff, /* 1b68 */ 0xffff, /* 1b69 */ 0xffff, /* 1b6a */ 0xffff, /* 1b6b */ 0xffff, /* 1b6c */ 0xffff, /* 1b6d */ 0xffff, /* 1b6e */ 0xffff, /* 1b6f */ 0xffff, /* 1b70 */ 0xffff, /* 1b71 */ 0xffff, /* 1b72 */ 0xffff, /* 1b73 */ 0xffff, /* 1b74 */ 0xffff, /* 1b75 */ 0xffff, /* 1b76 */ 0xffff, /* 1b77 */ 0xffff, /* 1b78 */ 0xffff, /* 1b79 */ 0xffff, /* 1b7a */ 0xffff, /* 1b7b */ 0xffff, /* 1b7c */ 0xffff, /* 1b7d */ 0xffff, /* 1b7e */ 0xffff, /* 1b7f */ 0xffff, /* 1b80 */ 0xffff, /* 1b81 */ 0xffff, /* 1b82 */ 0xffff, /* 1b83 */ 0xffff, /* 1b84 */ 0xffff, /* 1b85 */ 0xffff, /* 1b86 */ 0xffff, /* 1b87 */ 0xffff, /* 1b88 */ 0xffff, /* 1b89 */ 0xffff, /* 1b8a */ 0xffff, /* 1b8b */ 0xffff, /* 1b8c */ 0xffff, /* 1b8d */ 0xffff, /* 1b8e */ 0xffff, /* 1b8f */ 0xffff, /* 1b90 */ 0xffff, /* 1b91 */ 0xffff, /* 1b92 */ 0xffff, /* 1b93 */ 0xffff, /* 1b94 */ 0xffff, /* 1b95 */ 0xffff, /* 1b96 */ 0xffff, /* 1b97 */ 0xffff, /* 1b98 */ 0xffff, /* 1b99 */ 0xffff, /* 1b9a */ 0xffff, /* 1b9b */ 0xffff, /* 1b9c */ 0xffff, /* 1b9d */ 0xffff, /* 1b9e */ 0xffff, /* 1b9f */ 0xffff, /* 1ba0 */ 0xffff, /* 1ba1 */ 0xffff, /* 1ba2 */ 0xffff, /* 1ba3 */ 0xffff, /* 1ba4 */ 0xffff, /* 1ba5 */ 0xffff, /* 1ba6 */ 0xffff, /* 1ba7 */ 0xffff, /* 1ba8 */ 0xffff, /* 1ba9 */ 0xffff, /* 1baa */ 0xffff, /* 1bab */ 0xffff, /* 1bac */ 0xffff, /* 1bad */ 0xffff, /* 1bae */ 0xffff, /* 1baf */ 0xffff, /* 1bb0 */ 0xffff, /* 1bb1 */ 0xffff, /* 1bb2 */ 0xffff, /* 1bb3 */ 0xffff, /* 1bb4 */ 0xffff, /* 1bb5 */ 0xffff, /* 1bb6 */ 0xffff, /* 1bb7 */ 0xffff, /* 1bb8 */ 0xffff, /* 1bb9 */ 0xffff, /* 1bba */ 0xffff, /* 1bbb */ 0xffff, /* 1bbc */ 0xffff, /* 1bbd */ 0xffff, /* 1bbe */ 0xffff, /* 1bbf */ 0xffff, /* 1bc0 */ 0xffff, /* 1bc1 */ 0xffff, /* 1bc2 */ 0xffff, /* 1bc3 */ 0xffff, /* 1bc4 */ 0xffff, /* 1bc5 */ 0xffff, /* 1bc6 */ 0xffff, /* 1bc7 */ 0xffff, /* 1bc8 */ 0xffff, /* 1bc9 */ 0xffff, /* 1bca */ 0xffff, /* 1bcb */ 0xffff, /* 1bcc */ 0xffff, /* 1bcd */ 0xffff, /* 1bce */ 0xffff, /* 1bcf */ 0xffff, /* 1bd0 */ 0xffff, /* 1bd1 */ 0xffff, /* 1bd2 */ 0xffff, /* 1bd3 */ 0xffff, /* 1bd4 */ 0xffff, /* 1bd5 */ 0xffff, /* 1bd6 */ 0xffff, /* 1bd7 */ 0xffff, /* 1bd8 */ 0xffff, /* 1bd9 */ 0xffff, /* 1bda */ 0xffff, /* 1bdb */ 0xffff, /* 1bdc */ 0xffff, /* 1bdd */ 0xffff, /* 1bde */ 0xffff, /* 1bdf */ 0xffff, /* 1be0 */ 0xffff, /* 1be1 */ 0xffff, /* 1be2 */ 0xffff, /* 1be3 */ 0xffff, /* 1be4 */ 0xffff, /* 1be5 */ 0xffff, /* 1be6 */ 0xffff, /* 1be7 */ 0xffff, /* 1be8 */ 0xffff, /* 1be9 */ 0xffff, /* 1bea */ 0xffff, /* 1beb */ 0xffff, /* 1bec */ 0xffff, /* 1bed */ 0xffff, /* 1bee */ 0xffff, /* 1bef */ 0xffff, /* 1bf0 */ 0xffff, /* 1bf1 */ 0xffff, /* 1bf2 */ 0xffff, /* 1bf3 */ 0xffff, /* 1bf4 */ 0xffff, /* 1bf5 */ 0xffff, /* 1bf6 */ 0xffff, /* 1bf7 */ 0xffff, /* 1bf8 */ 0xffff, /* 1bf9 */ 0xffff, /* 1bfa */ 0xffff, /* 1bfb */ 0xffff, /* 1bfc */ 0xffff, /* 1bfd */ 0xffff, /* 1bfe */ 0xffff, /* 1bff */ 0xffff, /* 1c00 */ 0xffff, /* 1c01 */ 0xffff, /* 1c02 */ 0xffff, /* 1c03 */ 0xffff, /* 1c04 */ 0xffff, /* 1c05 */ 0xffff, /* 1c06 */ 0xffff, /* 1c07 */ 0xffff, /* 1c08 */ 0xffff, /* 1c09 */ 0xffff, /* 1c0a */ 0xffff, /* 1c0b */ 0xffff, /* 1c0c */ 0xffff, /* 1c0d */ 0xffff, /* 1c0e */ 0xffff, /* 1c0f */ 0xffff, /* 1c10 */ 0xffff, /* 1c11 */ 0xffff, /* 1c12 */ 0xffff, /* 1c13 */ 0xffff, /* 1c14 */ 0xffff, /* 1c15 */ 0xffff, /* 1c16 */ 0xffff, /* 1c17 */ 0xffff, /* 1c18 */ 0xffff, /* 1c19 */ 0xffff, /* 1c1a */ 0xffff, /* 1c1b */ 0xffff, /* 1c1c */ 0xffff, /* 1c1d */ 0xffff, /* 1c1e */ 0xffff, /* 1c1f */ 0xffff, /* 1c20 */ 0xffff, /* 1c21 */ 0xffff, /* 1c22 */ 0xffff, /* 1c23 */ 0xffff, /* 1c24 */ 0xffff, /* 1c25 */ 0xffff, /* 1c26 */ 0xffff, /* 1c27 */ 0xffff, /* 1c28 */ 0xffff, /* 1c29 */ 0xffff, /* 1c2a */ 0xffff, /* 1c2b */ 0xffff, /* 1c2c */ 0xffff, /* 1c2d */ 0xffff, /* 1c2e */ 0xffff, /* 1c2f */ 0xffff, /* 1c30 */ 0xffff, /* 1c31 */ 0xffff, /* 1c32 */ 0xffff, /* 1c33 */ 0xffff, /* 1c34 */ 0xffff, /* 1c35 */ 0xffff, /* 1c36 */ 0xffff, /* 1c37 */ 0xffff, /* 1c38 */ 0xffff, /* 1c39 */ 0xffff, /* 1c3a */ 0xffff, /* 1c3b */ 0xffff, /* 1c3c */ 0xffff, /* 1c3d */ 0xffff, /* 1c3e */ 0xffff, /* 1c3f */ 0xffff, /* 1c40 */ 0xffff, /* 1c41 */ 0xffff, /* 1c42 */ 0xffff, /* 1c43 */ 0xffff, /* 1c44 */ 0xffff, /* 1c45 */ 0xffff, /* 1c46 */ 0xffff, /* 1c47 */ 0xffff, /* 1c48 */ 0xffff, /* 1c49 */ 0xffff, /* 1c4a */ 0xffff, /* 1c4b */ 0xffff, /* 1c4c */ 0xffff, /* 1c4d */ 0xffff, /* 1c4e */ 0xffff, /* 1c4f */ 0xffff, /* 1c50 */ 0xffff, /* 1c51 */ 0xffff, /* 1c52 */ 0xffff, /* 1c53 */ 0xffff, /* 1c54 */ 0xffff, /* 1c55 */ 0xffff, /* 1c56 */ 0xffff, /* 1c57 */ 0xffff, /* 1c58 */ 0xffff, /* 1c59 */ 0xffff, /* 1c5a */ 0xffff, /* 1c5b */ 0xffff, /* 1c5c */ 0xffff, /* 1c5d */ 0xffff, /* 1c5e */ 0xffff, /* 1c5f */ 0xffff, /* 1c60 */ 0xffff, /* 1c61 */ 0xffff, /* 1c62 */ 0xffff, /* 1c63 */ 0xffff, /* 1c64 */ 0xffff, /* 1c65 */ 0xffff, /* 1c66 */ 0xffff, /* 1c67 */ 0xffff, /* 1c68 */ 0xffff, /* 1c69 */ 0xffff, /* 1c6a */ 0xffff, /* 1c6b */ 0xffff, /* 1c6c */ 0xffff, /* 1c6d */ 0xffff, /* 1c6e */ 0xffff, /* 1c6f */ 0xffff, /* 1c70 */ 0xffff, /* 1c71 */ 0xffff, /* 1c72 */ 0xffff, /* 1c73 */ 0xffff, /* 1c74 */ 0xffff, /* 1c75 */ 0xffff, /* 1c76 */ 0xffff, /* 1c77 */ 0xffff, /* 1c78 */ 0xffff, /* 1c79 */ 0xffff, /* 1c7a */ 0xffff, /* 1c7b */ 0xffff, /* 1c7c */ 0xffff, /* 1c7d */ 0xffff, /* 1c7e */ 0xffff, /* 1c7f */ 0xffff, /* 1c80 */ 0xffff, /* 1c81 */ 0xffff, /* 1c82 */ 0xffff, /* 1c83 */ 0xffff, /* 1c84 */ 0xffff, /* 1c85 */ 0xffff, /* 1c86 */ 0xffff, /* 1c87 */ 0xffff, /* 1c88 */ 0xffff, /* 1c89 */ 0xffff, /* 1c8a */ 0xffff, /* 1c8b */ 0xffff, /* 1c8c */ 0xffff, /* 1c8d */ 0xffff, /* 1c8e */ 0xffff, /* 1c8f */ 0xffff, /* 1c90 */ 0xffff, /* 1c91 */ 0xffff, /* 1c92 */ 0xffff, /* 1c93 */ 0xffff, /* 1c94 */ 0xffff, /* 1c95 */ 0xffff, /* 1c96 */ 0xffff, /* 1c97 */ 0xffff, /* 1c98 */ 0xffff, /* 1c99 */ 0xffff, /* 1c9a */ 0xffff, /* 1c9b */ 0xffff, /* 1c9c */ 0xffff, /* 1c9d */ 0xffff, /* 1c9e */ 0xffff, /* 1c9f */ 0xffff, /* 1ca0 */ 0xffff, /* 1ca1 */ 0xffff, /* 1ca2 */ 0xffff, /* 1ca3 */ 0xffff, /* 1ca4 */ 0xffff, /* 1ca5 */ 0xffff, /* 1ca6 */ 0xffff, /* 1ca7 */ 0xffff, /* 1ca8 */ 0xffff, /* 1ca9 */ 0xffff, /* 1caa */ 0xffff, /* 1cab */ 0xffff, /* 1cac */ 0xffff, /* 1cad */ 0xffff, /* 1cae */ 0xffff, /* 1caf */ 0xffff, /* 1cb0 */ 0xffff, /* 1cb1 */ 0xffff, /* 1cb2 */ 0xffff, /* 1cb3 */ 0xffff, /* 1cb4 */ 0xffff, /* 1cb5 */ 0xffff, /* 1cb6 */ 0xffff, /* 1cb7 */ 0xffff, /* 1cb8 */ 0xffff, /* 1cb9 */ 0xffff, /* 1cba */ 0xffff, /* 1cbb */ 0xffff, /* 1cbc */ 0xffff, /* 1cbd */ 0xffff, /* 1cbe */ 0xffff, /* 1cbf */ 0xffff, /* 1cc0 */ 0xffff, /* 1cc1 */ 0xffff, /* 1cc2 */ 0xffff, /* 1cc3 */ 0xffff, /* 1cc4 */ 0xffff, /* 1cc5 */ 0xffff, /* 1cc6 */ 0xffff, /* 1cc7 */ 0xffff, /* 1cc8 */ 0xffff, /* 1cc9 */ 0xffff, /* 1cca */ 0xffff, /* 1ccb */ 0xffff, /* 1ccc */ 0xffff, /* 1ccd */ 0xffff, /* 1cce */ 0xffff, /* 1ccf */ 0xffff, /* 1cd0 */ 0xffff, /* 1cd1 */ 0xffff, /* 1cd2 */ 0xffff, /* 1cd3 */ 0xffff, /* 1cd4 */ 0xffff, /* 1cd5 */ 0xffff, /* 1cd6 */ 0xffff, /* 1cd7 */ 0xffff, /* 1cd8 */ 0xffff, /* 1cd9 */ 0xffff, /* 1cda */ 0xffff, /* 1cdb */ 0xffff, /* 1cdc */ 0xffff, /* 1cdd */ 0xffff, /* 1cde */ 0xffff, /* 1cdf */ 0xffff, /* 1ce0 */ 0xffff, /* 1ce1 */ 0xffff, /* 1ce2 */ 0xffff, /* 1ce3 */ 0xffff, /* 1ce4 */ 0xffff, /* 1ce5 */ 0xffff, /* 1ce6 */ 0xffff, /* 1ce7 */ 0xffff, /* 1ce8 */ 0xffff, /* 1ce9 */ 0xffff, /* 1cea */ 0xffff, /* 1ceb */ 0xffff, /* 1cec */ 0xffff, /* 1ced */ 0xffff, /* 1cee */ 0xffff, /* 1cef */ 0xffff, /* 1cf0 */ 0xffff, /* 1cf1 */ 0xffff, /* 1cf2 */ 0xffff, /* 1cf3 */ 0xffff, /* 1cf4 */ 0xffff, /* 1cf5 */ 0xffff, /* 1cf6 */ 0xffff, /* 1cf7 */ 0xffff, /* 1cf8 */ 0xffff, /* 1cf9 */ 0xffff, /* 1cfa */ 0xffff, /* 1cfb */ 0xffff, /* 1cfc */ 0xffff, /* 1cfd */ 0xffff, /* 1cfe */ 0xffff, /* 1cff */ 0xffff, /* 1d00 */ 0xffff, /* 1d01 */ 0xffff, /* 1d02 */ 0xffff, /* 1d03 */ 0xffff, /* 1d04 */ 0xffff, /* 1d05 */ 0xffff, /* 1d06 */ 0xffff, /* 1d07 */ 0xffff, /* 1d08 */ 0xffff, /* 1d09 */ 0xffff, /* 1d0a */ 0xffff, /* 1d0b */ 0xffff, /* 1d0c */ 0xffff, /* 1d0d */ 0xffff, /* 1d0e */ 0xffff, /* 1d0f */ 0xffff, /* 1d10 */ 0xffff, /* 1d11 */ 0xffff, /* 1d12 */ 0xffff, /* 1d13 */ 0xffff, /* 1d14 */ 0xffff, /* 1d15 */ 0xffff, /* 1d16 */ 0xffff, /* 1d17 */ 0xffff, /* 1d18 */ 0xffff, /* 1d19 */ 0xffff, /* 1d1a */ 0xffff, /* 1d1b */ 0xffff, /* 1d1c */ 0xffff, /* 1d1d */ 0xffff, /* 1d1e */ 0xffff, /* 1d1f */ 0xffff, /* 1d20 */ 0xffff, /* 1d21 */ 0xffff, /* 1d22 */ 0xffff, /* 1d23 */ 0xffff, /* 1d24 */ 0xffff, /* 1d25 */ 0xffff, /* 1d26 */ 0xffff, /* 1d27 */ 0xffff, /* 1d28 */ 0xffff, /* 1d29 */ 0xffff, /* 1d2a */ 0xffff, /* 1d2b */ 0xffff, /* 1d2c */ 0xffff, /* 1d2d */ 0xffff, /* 1d2e */ 0xffff, /* 1d2f */ 0xffff, /* 1d30 */ 0xffff, /* 1d31 */ 0xffff, /* 1d32 */ 0xffff, /* 1d33 */ 0xffff, /* 1d34 */ 0xffff, /* 1d35 */ 0xffff, /* 1d36 */ 0xffff, /* 1d37 */ 0xffff, /* 1d38 */ 0xffff, /* 1d39 */ 0xffff, /* 1d3a */ 0xffff, /* 1d3b */ 0xffff, /* 1d3c */ 0xffff, /* 1d3d */ 0xffff, /* 1d3e */ 0xffff, /* 1d3f */ 0xffff, /* 1d40 */ 0xffff, /* 1d41 */ 0xffff, /* 1d42 */ 0xffff, /* 1d43 */ 0xffff, /* 1d44 */ 0xffff, /* 1d45 */ 0xffff, /* 1d46 */ 0xffff, /* 1d47 */ 0xffff, /* 1d48 */ 0xffff, /* 1d49 */ 0xffff, /* 1d4a */ 0xffff, /* 1d4b */ 0xffff, /* 1d4c */ 0xffff, /* 1d4d */ 0xffff, /* 1d4e */ 0xffff, /* 1d4f */ 0xffff, /* 1d50 */ 0xffff, /* 1d51 */ 0xffff, /* 1d52 */ 0xffff, /* 1d53 */ 0xffff, /* 1d54 */ 0xffff, /* 1d55 */ 0xffff, /* 1d56 */ 0xffff, /* 1d57 */ 0xffff, /* 1d58 */ 0xffff, /* 1d59 */ 0xffff, /* 1d5a */ 0xffff, /* 1d5b */ 0xffff, /* 1d5c */ 0xffff, /* 1d5d */ 0xffff, /* 1d5e */ 0xffff, /* 1d5f */ 0xffff, /* 1d60 */ 0xffff, /* 1d61 */ 0xffff, /* 1d62 */ 0xffff, /* 1d63 */ 0xffff, /* 1d64 */ 0xffff, /* 1d65 */ 0xffff, /* 1d66 */ 0xffff, /* 1d67 */ 0xffff, /* 1d68 */ 0xffff, /* 1d69 */ 0xffff, /* 1d6a */ 0xffff, /* 1d6b */ 0xffff, /* 1d6c */ 0xffff, /* 1d6d */ 0xffff, /* 1d6e */ 0xffff, /* 1d6f */ 0xffff, /* 1d70 */ 0xffff, /* 1d71 */ 0xffff, /* 1d72 */ 0xffff, /* 1d73 */ 0xffff, /* 1d74 */ 0xffff, /* 1d75 */ 0xffff, /* 1d76 */ 0xffff, /* 1d77 */ 0xffff, /* 1d78 */ 0xffff, /* 1d79 */ 0xffff, /* 1d7a */ 0xffff, /* 1d7b */ 0xffff, /* 1d7c */ 0xffff, /* 1d7d */ 0xffff, /* 1d7e */ 0xffff, /* 1d7f */ 0xffff, /* 1d80 */ 0xffff, /* 1d81 */ 0xffff, /* 1d82 */ 0xffff, /* 1d83 */ 0xffff, /* 1d84 */ 0xffff, /* 1d85 */ 0xffff, /* 1d86 */ 0xffff, /* 1d87 */ 0xffff, /* 1d88 */ 0xffff, /* 1d89 */ 0xffff, /* 1d8a */ 0xffff, /* 1d8b */ 0xffff, /* 1d8c */ 0xffff, /* 1d8d */ 0xffff, /* 1d8e */ 0xffff, /* 1d8f */ 0xffff, /* 1d90 */ 0xffff, /* 1d91 */ 0xffff, /* 1d92 */ 0xffff, /* 1d93 */ 0xffff, /* 1d94 */ 0xffff, /* 1d95 */ 0xffff, /* 1d96 */ 0xffff, /* 1d97 */ 0xffff, /* 1d98 */ 0xffff, /* 1d99 */ 0xffff, /* 1d9a */ 0xffff, /* 1d9b */ 0xffff, /* 1d9c */ 0xffff, /* 1d9d */ 0xffff, /* 1d9e */ 0xffff, /* 1d9f */ 0xffff, /* 1da0 */ 0xffff, /* 1da1 */ 0xffff, /* 1da2 */ 0xffff, /* 1da3 */ 0xffff, /* 1da4 */ 0xffff, /* 1da5 */ 0xffff, /* 1da6 */ 0xffff, /* 1da7 */ 0xffff, /* 1da8 */ 0xffff, /* 1da9 */ 0xffff, /* 1daa */ 0xffff, /* 1dab */ 0xffff, /* 1dac */ 0xffff, /* 1dad */ 0xffff, /* 1dae */ 0xffff, /* 1daf */ 0xffff, /* 1db0 */ 0xffff, /* 1db1 */ 0xffff, /* 1db2 */ 0xffff, /* 1db3 */ 0xffff, /* 1db4 */ 0xffff, /* 1db5 */ 0xffff, /* 1db6 */ 0xffff, /* 1db7 */ 0xffff, /* 1db8 */ 0xffff, /* 1db9 */ 0xffff, /* 1dba */ 0xffff, /* 1dbb */ 0xffff, /* 1dbc */ 0xffff, /* 1dbd */ 0xffff, /* 1dbe */ 0xffff, /* 1dbf */ 0xffff, /* 1dc0 */ 0xffff, /* 1dc1 */ 0xffff, /* 1dc2 */ 0xffff, /* 1dc3 */ 0xffff, /* 1dc4 */ 0xffff, /* 1dc5 */ 0xffff, /* 1dc6 */ 0xffff, /* 1dc7 */ 0xffff, /* 1dc8 */ 0xffff, /* 1dc9 */ 0xffff, /* 1dca */ 0xffff, /* 1dcb */ 0xffff, /* 1dcc */ 0xffff, /* 1dcd */ 0xffff, /* 1dce */ 0xffff, /* 1dcf */ 0xffff, /* 1dd0 */ 0xffff, /* 1dd1 */ 0xffff, /* 1dd2 */ 0xffff, /* 1dd3 */ 0xffff, /* 1dd4 */ 0xffff, /* 1dd5 */ 0xffff, /* 1dd6 */ 0xffff, /* 1dd7 */ 0xffff, /* 1dd8 */ 0xffff, /* 1dd9 */ 0xffff, /* 1dda */ 0xffff, /* 1ddb */ 0xffff, /* 1ddc */ 0xffff, /* 1ddd */ 0xffff, /* 1dde */ 0xffff, /* 1ddf */ 0xffff, /* 1de0 */ 0xffff, /* 1de1 */ 0xffff, /* 1de2 */ 0xffff, /* 1de3 */ 0xffff, /* 1de4 */ 0xffff, /* 1de5 */ 0xffff, /* 1de6 */ 0xffff, /* 1de7 */ 0xffff, /* 1de8 */ 0xffff, /* 1de9 */ 0xffff, /* 1dea */ 0xffff, /* 1deb */ 0xffff, /* 1dec */ 0xffff, /* 1ded */ 0xffff, /* 1dee */ 0xffff, /* 1def */ 0xffff, /* 1df0 */ 0xffff, /* 1df1 */ 0xffff, /* 1df2 */ 0xffff, /* 1df3 */ 0xffff, /* 1df4 */ 0xffff, /* 1df5 */ 0xffff, /* 1df6 */ 0xffff, /* 1df7 */ 0xffff, /* 1df8 */ 0xffff, /* 1df9 */ 0xffff, /* 1dfa */ 0xffff, /* 1dfb */ 0xffff, /* 1dfc */ 0xffff, /* 1dfd */ 0xffff, /* 1dfe */ 0xffff, /* 1dff */ 0xffff, /* 1e00 */ 0xffff, /* 1e01 */ 0xffff, /* 1e02 */ 0xffff, /* 1e03 */ 0xffff, /* 1e04 */ 0xffff, /* 1e05 */ 0xffff, /* 1e06 */ 0xffff, /* 1e07 */ 0xffff, /* 1e08 */ 0xffff, /* 1e09 */ 0xffff, /* 1e0a */ 0xffff, /* 1e0b */ 0xffff, /* 1e0c */ 0xffff, /* 1e0d */ 0xffff, /* 1e0e */ 0xffff, /* 1e0f */ 0xffff, /* 1e10 */ 0xffff, /* 1e11 */ 0xffff, /* 1e12 */ 0xffff, /* 1e13 */ 0xffff, /* 1e14 */ 0xffff, /* 1e15 */ 0xffff, /* 1e16 */ 0xffff, /* 1e17 */ 0xffff, /* 1e18 */ 0xffff, /* 1e19 */ 0xffff, /* 1e1a */ 0xffff, /* 1e1b */ 0xffff, /* 1e1c */ 0xffff, /* 1e1d */ 0xffff, /* 1e1e */ 0xffff, /* 1e1f */ 0xffff, /* 1e20 */ 0xffff, /* 1e21 */ 0xffff, /* 1e22 */ 0xffff, /* 1e23 */ 0xffff, /* 1e24 */ 0xffff, /* 1e25 */ 0xffff, /* 1e26 */ 0xffff, /* 1e27 */ 0xffff, /* 1e28 */ 0xffff, /* 1e29 */ 0xffff, /* 1e2a */ 0xffff, /* 1e2b */ 0xffff, /* 1e2c */ 0xffff, /* 1e2d */ 0xffff, /* 1e2e */ 0xffff, /* 1e2f */ 0xffff, /* 1e30 */ 0xffff, /* 1e31 */ 0xffff, /* 1e32 */ 0xffff, /* 1e33 */ 0xffff, /* 1e34 */ 0xffff, /* 1e35 */ 0xffff, /* 1e36 */ 0xffff, /* 1e37 */ 0xffff, /* 1e38 */ 0xffff, /* 1e39 */ 0xffff, /* 1e3a */ 0xffff, /* 1e3b */ 0xffff, /* 1e3c */ 0xffff, /* 1e3d */ 0xffff, /* 1e3e */ 0xffff, /* 1e3f */ 0xffff, /* 1e40 */ 0xffff, /* 1e41 */ 0xffff, /* 1e42 */ 0xffff, /* 1e43 */ 0xffff, /* 1e44 */ 0xffff, /* 1e45 */ 0xffff, /* 1e46 */ 0xffff, /* 1e47 */ 0xffff, /* 1e48 */ 0xffff, /* 1e49 */ 0xffff, /* 1e4a */ 0xffff, /* 1e4b */ 0xffff, /* 1e4c */ 0xffff, /* 1e4d */ 0xffff, /* 1e4e */ 0xffff, /* 1e4f */ 0xffff, /* 1e50 */ 0xffff, /* 1e51 */ 0xffff, /* 1e52 */ 0xffff, /* 1e53 */ 0xffff, /* 1e54 */ 0xffff, /* 1e55 */ 0xffff, /* 1e56 */ 0xffff, /* 1e57 */ 0xffff, /* 1e58 */ 0xffff, /* 1e59 */ 0xffff, /* 1e5a */ 0xffff, /* 1e5b */ 0xffff, /* 1e5c */ 0xffff, /* 1e5d */ 0xffff, /* 1e5e */ 0xffff, /* 1e5f */ 0xffff, /* 1e60 */ 0xffff, /* 1e61 */ 0xffff, /* 1e62 */ 0xffff, /* 1e63 */ 0xffff, /* 1e64 */ 0xffff, /* 1e65 */ 0xffff, /* 1e66 */ 0xffff, /* 1e67 */ 0xffff, /* 1e68 */ 0xffff, /* 1e69 */ 0xffff, /* 1e6a */ 0xffff, /* 1e6b */ 0xffff, /* 1e6c */ 0xffff, /* 1e6d */ 0xffff, /* 1e6e */ 0xffff, /* 1e6f */ 0xffff, /* 1e70 */ 0xffff, /* 1e71 */ 0xffff, /* 1e72 */ 0xffff, /* 1e73 */ 0xffff, /* 1e74 */ 0xffff, /* 1e75 */ 0xffff, /* 1e76 */ 0xffff, /* 1e77 */ 0xffff, /* 1e78 */ 0xffff, /* 1e79 */ 0xffff, /* 1e7a */ 0xffff, /* 1e7b */ 0xffff, /* 1e7c */ 0xffff, /* 1e7d */ 0xffff, /* 1e7e */ 0xffff, /* 1e7f */ 0xffff, /* 1e80 */ 0xffff, /* 1e81 */ 0xffff, /* 1e82 */ 0xffff, /* 1e83 */ 0xffff, /* 1e84 */ 0xffff, /* 1e85 */ 0xffff, /* 1e86 */ 0xffff, /* 1e87 */ 0xffff, /* 1e88 */ 0xffff, /* 1e89 */ 0xffff, /* 1e8a */ 0xffff, /* 1e8b */ 0xffff, /* 1e8c */ 0xffff, /* 1e8d */ 0xffff, /* 1e8e */ 0xffff, /* 1e8f */ 0xffff, /* 1e90 */ 0xffff, /* 1e91 */ 0xffff, /* 1e92 */ 0xffff, /* 1e93 */ 0xffff, /* 1e94 */ 0xffff, /* 1e95 */ 0xffff, /* 1e96 */ 0xffff, /* 1e97 */ 0xffff, /* 1e98 */ 0xffff, /* 1e99 */ 0xffff, /* 1e9a */ 0xffff, /* 1e9b */ 0xffff, /* 1e9c */ 0xffff, /* 1e9d */ 0xffff, /* 1e9e */ 0xffff, /* 1e9f */ 0xffff, /* 1ea0 */ 0xffff, /* 1ea1 */ 0xffff, /* 1ea2 */ 0xffff, /* 1ea3 */ 0xffff, /* 1ea4 */ 0xffff, /* 1ea5 */ 0xffff, /* 1ea6 */ 0xffff, /* 1ea7 */ 0xffff, /* 1ea8 */ 0xffff, /* 1ea9 */ 0xffff, /* 1eaa */ 0xffff, /* 1eab */ 0xffff, /* 1eac */ 0xffff, /* 1ead */ 0xffff, /* 1eae */ 0xffff, /* 1eaf */ 0xffff, /* 1eb0 */ 0xffff, /* 1eb1 */ 0xffff, /* 1eb2 */ 0xffff, /* 1eb3 */ 0xffff, /* 1eb4 */ 0xffff, /* 1eb5 */ 0xffff, /* 1eb6 */ 0xffff, /* 1eb7 */ 0xffff, /* 1eb8 */ 0xffff, /* 1eb9 */ 0xffff, /* 1eba */ 0xffff, /* 1ebb */ 0xffff, /* 1ebc */ 0xffff, /* 1ebd */ 0xffff, /* 1ebe */ 0xffff, /* 1ebf */ 0xffff, /* 1ec0 */ 0xffff, /* 1ec1 */ 0xffff, /* 1ec2 */ 0xffff, /* 1ec3 */ 0xffff, /* 1ec4 */ 0xffff, /* 1ec5 */ 0xffff, /* 1ec6 */ 0xffff, /* 1ec7 */ 0xffff, /* 1ec8 */ 0xffff, /* 1ec9 */ 0xffff, /* 1eca */ 0xffff, /* 1ecb */ 0xffff, /* 1ecc */ 0xffff, /* 1ecd */ 0xffff, /* 1ece */ 0xffff, /* 1ecf */ 0xffff, /* 1ed0 */ 0xffff, /* 1ed1 */ 0xffff, /* 1ed2 */ 0xffff, /* 1ed3 */ 0xffff, /* 1ed4 */ 0xffff, /* 1ed5 */ 0xffff, /* 1ed6 */ 0xffff, /* 1ed7 */ 0xffff, /* 1ed8 */ 0xffff, /* 1ed9 */ 0xffff, /* 1eda */ 0xffff, /* 1edb */ 0xffff, /* 1edc */ 0xffff, /* 1edd */ 0xffff, /* 1ede */ 0xffff, /* 1edf */ 0xffff, /* 1ee0 */ 0xffff, /* 1ee1 */ 0xffff, /* 1ee2 */ 0xffff, /* 1ee3 */ 0xffff, /* 1ee4 */ 0xffff, /* 1ee5 */ 0xffff, /* 1ee6 */ 0xffff, /* 1ee7 */ 0xffff, /* 1ee8 */ 0xffff, /* 1ee9 */ 0xffff, /* 1eea */ 0xffff, /* 1eeb */ 0xffff, /* 1eec */ 0xffff, /* 1eed */ 0xffff, /* 1eee */ 0xffff, /* 1eef */ 0xffff, /* 1ef0 */ 0xffff, /* 1ef1 */ 0xffff, /* 1ef2 */ 0xffff, /* 1ef3 */ 0xffff, /* 1ef4 */ 0xffff, /* 1ef5 */ 0xffff, /* 1ef6 */ 0xffff, /* 1ef7 */ 0xffff, /* 1ef8 */ 0xffff, /* 1ef9 */ 0xffff, /* 1efa */ 0xffff, /* 1efb */ 0xffff, /* 1efc */ 0xffff, /* 1efd */ 0xffff, /* 1efe */ 0xffff, /* 1eff */ 0xffff, /* 1f00 */ 0xffff, /* 1f01 */ 0xffff, /* 1f02 */ 0xffff, /* 1f03 */ 0xffff, /* 1f04 */ 0xffff, /* 1f05 */ 0xffff, /* 1f06 */ 0xffff, /* 1f07 */ 0xffff, /* 1f08 */ 0xffff, /* 1f09 */ 0xffff, /* 1f0a */ 0xffff, /* 1f0b */ 0xffff, /* 1f0c */ 0xffff, /* 1f0d */ 0xffff, /* 1f0e */ 0xffff, /* 1f0f */ 0xffff, /* 1f10 */ 0xffff, /* 1f11 */ 0xffff, /* 1f12 */ 0xffff, /* 1f13 */ 0xffff, /* 1f14 */ 0xffff, /* 1f15 */ 0xffff, /* 1f16 */ 0xffff, /* 1f17 */ 0xffff, /* 1f18 */ 0xffff, /* 1f19 */ 0xffff, /* 1f1a */ 0xffff, /* 1f1b */ 0xffff, /* 1f1c */ 0xffff, /* 1f1d */ 0xffff, /* 1f1e */ 0xffff, /* 1f1f */ 0xffff, /* 1f20 */ 0xffff, /* 1f21 */ 0xffff, /* 1f22 */ 0xffff, /* 1f23 */ 0xffff, /* 1f24 */ 0xffff, /* 1f25 */ 0xffff, /* 1f26 */ 0xffff, /* 1f27 */ 0xffff, /* 1f28 */ 0xffff, /* 1f29 */ 0xffff, /* 1f2a */ 0xffff, /* 1f2b */ 0xffff, /* 1f2c */ 0xffff, /* 1f2d */ 0xffff, /* 1f2e */ 0xffff, /* 1f2f */ 0xffff, /* 1f30 */ 0xffff, /* 1f31 */ 0xffff, /* 1f32 */ 0xffff, /* 1f33 */ 0xffff, /* 1f34 */ 0xffff, /* 1f35 */ 0xffff, /* 1f36 */ 0xffff, /* 1f37 */ 0xffff, /* 1f38 */ 0xffff, /* 1f39 */ 0xffff, /* 1f3a */ 0xffff, /* 1f3b */ 0xffff, /* 1f3c */ 0xffff, /* 1f3d */ 0xffff, /* 1f3e */ 0xffff, /* 1f3f */ 0xffff, /* 1f40 */ 0xffff, /* 1f41 */ 0xffff, /* 1f42 */ 0xffff, /* 1f43 */ 0xffff, /* 1f44 */ 0xffff, /* 1f45 */ 0xffff, /* 1f46 */ 0xffff, /* 1f47 */ 0xffff, /* 1f48 */ 0xffff, /* 1f49 */ 0xffff, /* 1f4a */ 0xffff, /* 1f4b */ 0xffff, /* 1f4c */ 0xffff, /* 1f4d */ 0xffff, /* 1f4e */ 0xffff, /* 1f4f */ 0xffff, /* 1f50 */ 0xffff, /* 1f51 */ 0xffff, /* 1f52 */ 0xffff, /* 1f53 */ 0xffff, /* 1f54 */ 0xffff, /* 1f55 */ 0xffff, /* 1f56 */ 0xffff, /* 1f57 */ 0xffff, /* 1f58 */ 0xffff, /* 1f59 */ 0xffff, /* 1f5a */ 0xffff, /* 1f5b */ 0xffff, /* 1f5c */ 0xffff, /* 1f5d */ 0xffff, /* 1f5e */ 0xffff, /* 1f5f */ 0xffff, /* 1f60 */ 0xffff, /* 1f61 */ 0xffff, /* 1f62 */ 0xffff, /* 1f63 */ 0xffff, /* 1f64 */ 0xffff, /* 1f65 */ 0xffff, /* 1f66 */ 0xffff, /* 1f67 */ 0xffff, /* 1f68 */ 0xffff, /* 1f69 */ 0xffff, /* 1f6a */ 0xffff, /* 1f6b */ 0xffff, /* 1f6c */ 0xffff, /* 1f6d */ 0xffff, /* 1f6e */ 0xffff, /* 1f6f */ 0xffff, /* 1f70 */ 0xffff, /* 1f71 */ 0xffff, /* 1f72 */ 0xffff, /* 1f73 */ 0xffff, /* 1f74 */ 0xffff, /* 1f75 */ 0xffff, /* 1f76 */ 0xffff, /* 1f77 */ 0xffff, /* 1f78 */ 0xffff, /* 1f79 */ 0xffff, /* 1f7a */ 0xffff, /* 1f7b */ 0xffff, /* 1f7c */ 0xffff, /* 1f7d */ 0xffff, /* 1f7e */ 0xffff, /* 1f7f */ 0xffff, /* 1f80 */ 0xffff, /* 1f81 */ 0xffff, /* 1f82 */ 0xffff, /* 1f83 */ 0xffff, /* 1f84 */ 0xffff, /* 1f85 */ 0xffff, /* 1f86 */ 0xffff, /* 1f87 */ 0xffff, /* 1f88 */ 0xffff, /* 1f89 */ 0xffff, /* 1f8a */ 0xffff, /* 1f8b */ 0xffff, /* 1f8c */ 0xffff, /* 1f8d */ 0xffff, /* 1f8e */ 0xffff, /* 1f8f */ 0xffff, /* 1f90 */ 0xffff, /* 1f91 */ 0xffff, /* 1f92 */ 0xffff, /* 1f93 */ 0xffff, /* 1f94 */ 0xffff, /* 1f95 */ 0xffff, /* 1f96 */ 0xffff, /* 1f97 */ 0xffff, /* 1f98 */ 0xffff, /* 1f99 */ 0xffff, /* 1f9a */ 0xffff, /* 1f9b */ 0xffff, /* 1f9c */ 0xffff, /* 1f9d */ 0xffff, /* 1f9e */ 0xffff, /* 1f9f */ 0xffff, /* 1fa0 */ 0xffff, /* 1fa1 */ 0xffff, /* 1fa2 */ 0xffff, /* 1fa3 */ 0xffff, /* 1fa4 */ 0xffff, /* 1fa5 */ 0xffff, /* 1fa6 */ 0xffff, /* 1fa7 */ 0xffff, /* 1fa8 */ 0xffff, /* 1fa9 */ 0xffff, /* 1faa */ 0xffff, /* 1fab */ 0xffff, /* 1fac */ 0xffff, /* 1fad */ 0xffff, /* 1fae */ 0xffff, /* 1faf */ 0xffff, /* 1fb0 */ 0xffff, /* 1fb1 */ 0xffff, /* 1fb2 */ 0xffff, /* 1fb3 */ 0xffff, /* 1fb4 */ 0xffff, /* 1fb5 */ 0xffff, /* 1fb6 */ 0xffff, /* 1fb7 */ 0xffff, /* 1fb8 */ 0xffff, /* 1fb9 */ 0xffff, /* 1fba */ 0xffff, /* 1fbb */ 0xffff, /* 1fbc */ 0xffff, /* 1fbd */ 0xffff, /* 1fbe */ 0xffff, /* 1fbf */ 0xffff, /* 1fc0 */ 0xffff, /* 1fc1 */ 0xffff, /* 1fc2 */ 0xffff, /* 1fc3 */ 0xffff, /* 1fc4 */ 0xffff, /* 1fc5 */ 0xffff, /* 1fc6 */ 0xffff, /* 1fc7 */ 0xffff, /* 1fc8 */ 0xffff, /* 1fc9 */ 0xffff, /* 1fca */ 0xffff, /* 1fcb */ 0xffff, /* 1fcc */ 0xffff, /* 1fcd */ 0xffff, /* 1fce */ 0xffff, /* 1fcf */ 0xffff, /* 1fd0 */ 0xffff, /* 1fd1 */ 0xffff, /* 1fd2 */ 0xffff, /* 1fd3 */ 0xffff, /* 1fd4 */ 0xffff, /* 1fd5 */ 0xffff, /* 1fd6 */ 0xffff, /* 1fd7 */ 0xffff, /* 1fd8 */ 0xffff, /* 1fd9 */ 0xffff, /* 1fda */ 0xffff, /* 1fdb */ 0xffff, /* 1fdc */ 0xffff, /* 1fdd */ 0xffff, /* 1fde */ 0xffff, /* 1fdf */ 0xffff, /* 1fe0 */ 0xffff, /* 1fe1 */ 0xffff, /* 1fe2 */ 0xffff, /* 1fe3 */ 0xffff, /* 1fe4 */ 0xffff, /* 1fe5 */ 0xffff, /* 1fe6 */ 0xffff, /* 1fe7 */ 0xffff, /* 1fe8 */ 0xffff, /* 1fe9 */ 0xffff, /* 1fea */ 0xffff, /* 1feb */ 0xffff, /* 1fec */ 0xffff, /* 1fed */ 0xffff, /* 1fee */ 0xffff, /* 1fef */ 0xffff, /* 1ff0 */ 0xffff, /* 1ff1 */ 0xffff, /* 1ff2 */ 0xffff, /* 1ff3 */ 0xffff, /* 1ff4 */ 0xffff, /* 1ff5 */ 0xffff, /* 1ff6 */ 0xffff, /* 1ff7 */ 0xffff, /* 1ff8 */ 0xffff, /* 1ff9 */ 0xffff, /* 1ffa */ 0xffff, /* 1ffb */ 0xffff, /* 1ffc */ 0xffff, /* 1ffd */ 0xffff, /* 1ffe */ 0xffff, /* 1fff */ 0xffff, /* 2000 */ 0xffff, /* 2001 */ 0xffff, /* 2002 */ 0xffff, /* 2003 */ 0xffff, /* 2004 */ 0xffff, /* 2005 */ 0xffff, /* 2006 */ 0xffff, /* 2007 */ 0xffff, /* 2008 */ 0xffff, /* 2009 */ 0xffff, /* 200a */ 0xffff, /* 200b */ 0xffff, /* 200c */ 0xffff, /* 200d */ 0xffff, /* 200e */ 0xffff, /* 200f */ 0xffff, /* 2010 */ 0xffff, /* 2011 */ 0xffff, /* 2012 */ 0xffff, /* 2013 */ 0xffff, /* 2014 */ 0xffff, /* 2015 */ 0xffff, /* 2016 */ 0xffff, /* 2017 */ 0xffff, /* 2018 */ 0xffff, /* 2019 */ 0xffff, /* 201a */ 0xffff, /* 201b */ 0xffff, /* 201c */ 0xffff, /* 201d */ 0xffff, /* 201e */ 0xffff, /* 201f */ 0xffff, /* 2020 */ 0x00bb, /* DAGGER */ /* 2021 */ 0xffff, /* 2022 */ 0x00f9, /* BULLET */ /* 2023 */ 0xffff, /* 2024 */ 0xffff, /* 2025 */ 0x2025, /* TWO DOT LEADER */ /* 2026 */ 0xffff, /* 2027 */ 0xffff, /* 2028 */ 0xffff, /* 2029 */ 0xffff, /* 202a */ 0xffff, /* 202b */ 0xffff, /* 202c */ 0xffff, /* 202d */ 0xffff, /* 202e */ 0xffff, /* 202f */ 0xffff, /* 2030 */ 0xffff, /* 2031 */ 0xffff, /* 2032 */ 0xffff, /* 2033 */ 0xffff, /* 2034 */ 0xffff, /* 2035 */ 0xffff, /* 2036 */ 0xffff, /* 2037 */ 0xffff, /* 2038 */ 0x00de, /* CARET */ /* 2039 */ 0xffff, /* 203a */ 0xffff, /* 203b */ 0xffff, /* 203c */ 0xffff, /* 203d */ 0xffff, /* 203e */ 0xffff, /* 203f */ 0xffff, /* 2040 */ 0xffff, /* 2041 */ 0xffff, /* 2042 */ 0xffff, /* 2043 */ 0xffff, /* 2044 */ 0xffff, /* 2045 */ 0xffff, /* 2046 */ 0xffff, /* 2047 */ 0xffff, /* 2048 */ 0xffff, /* 2049 */ 0xffff, /* 204a */ 0xffff, /* 204b */ 0xffff, /* 204c */ 0xffff, /* 204d */ 0xffff, /* 204e */ 0xffff, /* 204f */ 0xffff, /* 2050 */ 0xffff, /* 2051 */ 0xffff, /* 2052 */ 0xffff, /* 2053 */ 0xffff, /* 2054 */ 0xffff, /* 2055 */ 0xffff, /* 2056 */ 0xffff, /* 2057 */ 0xffff, /* 2058 */ 0xffff, /* 2059 */ 0xffff, /* 205a */ 0xffff, /* 205b */ 0xffff, /* 205c */ 0xffff, /* 205d */ 0xffff, /* 205e */ 0xffff, /* 205f */ 0xffff, /* 2060 */ 0xffff, /* 2061 */ 0xffff, /* 2062 */ 0xffff, /* 2063 */ 0xffff, /* 2064 */ 0xffff, /* 2065 */ 0xffff, /* 2066 */ 0xffff, /* 2067 */ 0xffff, /* 2068 */ 0xffff, /* 2069 */ 0xffff, /* 206a */ 0xffff, /* 206b */ 0xffff, /* 206c */ 0xffff, /* 206d */ 0xffff, /* 206e */ 0xffff, /* 206f */ 0xffff, /* 2070 */ 0x2070, /* SUPERSCRIPT ZERO */ /* 2071 */ 0xffff, /* 2072 */ 0xffff, /* 2073 */ 0xffff, /* 2074 */ 0xffff, /* 2075 */ 0xffff, /* 2076 */ 0xffff, /* 2077 */ 0xffff, /* 2078 */ 0xffff, /* 2079 */ 0xffff, /* 207a */ 0xffff, /* 207b */ 0xffff, /* 207c */ 0xffff, /* 207d */ 0xffff, /* 207e */ 0xffff, /* 207f */ 0x00fc, /* SUPERSCRIPT LATIN SMALL LETTER N */ /* 2080 */ 0xffff, /* 2081 */ 0xffff, /* 2082 */ 0xffff, /* 2083 */ 0xffff, /* 2084 */ 0xffff, /* 2085 */ 0xffff, /* 2086 */ 0xffff, /* 2087 */ 0xffff, /* 2088 */ 0xffff, /* 2089 */ 0xffff, /* 208a */ 0xffff, /* 208b */ 0xffff, /* 208c */ 0xffff, /* 208d */ 0xffff, /* 208e */ 0xffff, /* 208f */ 0xffff, /* 2090 */ 0xffff, /* 2091 */ 0xffff, /* 2092 */ 0xffff, /* 2093 */ 0xffff, /* 2094 */ 0xffff, /* 2095 */ 0xffff, /* 2096 */ 0xffff, /* 2097 */ 0xffff, /* 2098 */ 0xffff, /* 2099 */ 0xffff, /* 209a */ 0xffff, /* 209b */ 0xffff, /* 209c */ 0xffff, /* 209d */ 0xffff, /* 209e */ 0xffff, /* 209f */ 0xffff, /* 20a0 */ 0xffff, /* 20a1 */ 0xffff, /* 20a2 */ 0xffff, /* 20a3 */ 0xffff, /* 20a4 */ 0xffff, /* 20a5 */ 0xffff, /* 20a6 */ 0xffff, /* 20a7 */ 0xffff, /* 20a8 */ 0xffff, /* 20a9 */ 0xffff, /* 20aa */ 0xffff, /* 20ab */ 0xffff, /* 20ac */ 0x00de, /* EURO SIGN */ /* 20ad */ 0xffff, /* 20ae */ 0xffff, /* 20af */ 0xffff, /* 20b0 */ 0xffff, /* 20b1 */ 0xffff, /* 20b2 */ 0xffff, /* 20b3 */ 0xffff, /* 20b4 */ 0xffff, /* 20b5 */ 0xffff, /* 20b6 */ 0xffff, /* 20b7 */ 0xffff, /* 20b8 */ 0xffff, /* 20b9 */ 0xffff, /* 20ba */ 0xffff, /* 20bb */ 0xffff, /* 20bc */ 0xffff, /* 20bd */ 0xffff, /* 20be */ 0xffff, /* 20bf */ 0xffff, /* 20c0 */ 0xffff, /* 20c1 */ 0xffff, /* 20c2 */ 0xffff, /* 20c3 */ 0xffff, /* 20c4 */ 0xffff, /* 20c5 */ 0xffff, /* 20c6 */ 0xffff, /* 20c7 */ 0xffff, /* 20c8 */ 0xffff, /* 20c9 */ 0xffff, /* 20ca */ 0xffff, /* 20cb */ 0xffff, /* 20cc */ 0xffff, /* 20cd */ 0xffff, /* 20ce */ 0xffff, /* 20cf */ 0xffff, /* 20d0 */ 0xffff, /* 20d1 */ 0xffff, /* 20d2 */ 0xffff, /* 20d3 */ 0xffff, /* 20d4 */ 0xffff, /* 20d5 */ 0xffff, /* 20d6 */ 0xffff, /* 20d7 */ 0xffff, /* 20d8 */ 0xffff, /* 20d9 */ 0xffff, /* 20da */ 0xffff, /* 20db */ 0xffff, /* 20dc */ 0xffff, /* 20dd */ 0xffff, /* 20de */ 0xffff, /* 20df */ 0xffff, /* 20e0 */ 0xffff, /* 20e1 */ 0xffff, /* 20e2 */ 0xffff, /* 20e3 */ 0xffff, /* 20e4 */ 0xffff, /* 20e5 */ 0xffff, /* 20e6 */ 0xffff, /* 20e7 */ 0xffff, /* 20e8 */ 0xffff, /* 20e9 */ 0xffff, /* 20ea */ 0xffff, /* 20eb */ 0xffff, /* 20ec */ 0xffff, /* 20ed */ 0xffff, /* 20ee */ 0xffff, /* 20ef */ 0xffff, /* 20f0 */ 0xffff, /* 20f1 */ 0xffff, /* 20f2 */ 0xffff, /* 20f3 */ 0xffff, /* 20f4 */ 0xffff, /* 20f5 */ 0xffff, /* 20f6 */ 0xffff, /* 20f7 */ 0xffff, /* 20f8 */ 0xffff, /* 20f9 */ 0xffff, /* 20fa */ 0xffff, /* 20fb */ 0xffff, /* 20fc */ 0xffff, /* 20fd */ 0xffff, /* 20fe */ 0xffff, /* 20ff */ 0xffff, /* 2100 */ 0xffff, /* 2101 */ 0xffff, /* 2102 */ 0xffff, /* 2103 */ 0xffff, /* 2104 */ 0xffff, /* 2105 */ 0xffff, /* 2106 */ 0xffff, /* 2107 */ 0xffff, /* 2108 */ 0xffff, /* 2109 */ 0xffff, /* 210a */ 0xffff, /* 210b */ 0xffff, /* 210c */ 0xffff, /* 210d */ 0xffff, /* 210e */ 0xffff, /* 210f */ 0xffff, /* 2110 */ 0xffff, /* 2111 */ 0xffff, /* 2112 */ 0xffff, /* 2113 */ 0xffff, /* 2114 */ 0xffff, /* 2115 */ 0xffff, /* 2116 */ 0x2116, /* NUMERO SIGN */ /* 2117 */ 0xffff, /* 2118 */ 0xffff, /* 2119 */ 0xffff, /* 211a */ 0xffff, /* 211b */ 0xffff, /* 211c */ 0xffff, /* 211d */ 0xffff, /* 211e */ 0xffff, /* 211f */ 0xffff, /* 2120 */ 0xffff, /* 2121 */ 0xffff, /* 2122 */ 0x00bf, /* TRADE MARK SIGN */ /* 2123 */ 0xffff, /* 2124 */ 0xffff, /* 2125 */ 0xffff, /* 2126 */ 0xffff, /* 2127 */ 0xffff, /* 2128 */ 0xffff, /* 2129 */ 0xffff, /* 212a */ 0xffff, /* 212b */ 0xffff, /* 212c */ 0xffff, /* 212d */ 0xffff, /* 212e */ 0xffff, /* 212f */ 0xffff, /* 2130 */ 0xffff, /* 2131 */ 0xffff, /* 2132 */ 0xffff, /* 2133 */ 0xffff, /* 2134 */ 0xffff, /* 2135 */ 0xffff, /* 2136 */ 0xffff, /* 2137 */ 0xffff, /* 2138 */ 0xffff, /* 2139 */ 0xffff, /* 213a */ 0xffff, /* 213b */ 0xffff, /* 213c */ 0xffff, /* 213d */ 0xffff, /* 213e */ 0xffff, /* 213f */ 0xffff, /* 2140 */ 0xffff, /* 2141 */ 0xffff, /* 2142 */ 0xffff, /* 2143 */ 0xffff, /* 2144 */ 0xffff, /* 2145 */ 0xffff, /* 2146 */ 0xffff, /* 2147 */ 0xffff, /* 2148 */ 0xffff, /* 2149 */ 0xffff, /* 214a */ 0xffff, /* 214b */ 0xffff, /* 214c */ 0xffff, /* 214d */ 0xffff, /* 214e */ 0xffff, /* 214f */ 0xffff, /* 2150 */ 0xffff, /* 2151 */ 0xffff, /* 2152 */ 0xffff, /* 2153 */ 0x2153, /* VULGAR FRACTION ONE THIRD */ /* 2154 */ 0xffff, /* 2155 */ 0xffff, /* 2156 */ 0xffff, /* 2157 */ 0xffff, /* 2158 */ 0xffff, /* 2159 */ 0xffff, /* 215a */ 0xffff, /* 215b */ 0xffff, /* 215c */ 0xffff, /* 215d */ 0xffff, /* 215e */ 0xffff, /* 215f */ 0xffff, /* 2160 */ 0xffff, /* 2161 */ 0xffff, /* 2162 */ 0xffff, /* 2163 */ 0xffff, /* 2164 */ 0xffff, /* 2165 */ 0xffff, /* 2166 */ 0xffff, /* 2167 */ 0xffff, /* 2168 */ 0xffff, /* 2169 */ 0xffff, /* 216a */ 0xffff, /* 216b */ 0xffff, /* 216c */ 0xffff, /* 216d */ 0xffff, /* 216e */ 0xffff, /* 216f */ 0xffff, /* 2170 */ 0xffff, /* 2171 */ 0xffff, /* 2172 */ 0xffff, /* 2173 */ 0xffff, /* 2174 */ 0xffff, /* 2175 */ 0xffff, /* 2176 */ 0xffff, /* 2177 */ 0xffff, /* 2178 */ 0xffff, /* 2179 */ 0xffff, /* 217a */ 0xffff, /* 217b */ 0xffff, /* 217c */ 0xffff, /* 217d */ 0xffff, /* 217e */ 0xffff, /* 217f */ 0xffff, /* 2180 */ 0xffff, /* 2181 */ 0xffff, /* 2182 */ 0xffff, /* 2183 */ 0xffff, /* 2184 */ 0xffff, /* 2185 */ 0xffff, /* 2186 */ 0xffff, /* 2187 */ 0xffff, /* 2188 */ 0xffff, /* 2189 */ 0xffff, /* 218a */ 0xffff, /* 218b */ 0xffff, /* 218c */ 0xffff, /* 218d */ 0xffff, /* 218e */ 0xffff, /* 218f */ 0xffff, /* 2190 */ 0xffff, /* 2191 */ 0xffff, /* 2192 */ 0xffff, /* 2193 */ 0xffff, /* 2194 */ 0xffff, /* 2195 */ 0xffff, /* 2196 */ 0xffff, /* 2197 */ 0xffff, /* 2198 */ 0xffff, /* 2199 */ 0xffff, /* 219a */ 0xffff, /* 219b */ 0xffff, /* 219c */ 0xffff, /* 219d */ 0xffff, /* 219e */ 0xffff, /* 219f */ 0xffff, /* 21a0 */ 0xffff, /* 21a1 */ 0xffff, /* 21a2 */ 0xffff, /* 21a3 */ 0xffff, /* 21a4 */ 0xffff, /* 21a5 */ 0xffff, /* 21a6 */ 0xffff, /* 21a7 */ 0xffff, /* 21a8 */ 0xffff, /* 21a9 */ 0xffff, /* 21aa */ 0xffff, /* 21ab */ 0xffff, /* 21ac */ 0xffff, /* 21ad */ 0xffff, /* 21ae */ 0xffff, /* 21af */ 0xffff, /* 21b0 */ 0xffff, /* 21b1 */ 0xffff, /* 21b2 */ 0xffff, /* 21b3 */ 0xffff, /* 21b4 */ 0xffff, /* 21b5 */ 0xffff, /* 21b6 */ 0xffff, /* 21b7 */ 0xffff, /* 21b8 */ 0xffff, /* 21b9 */ 0xffff, /* 21ba */ 0xffff, /* 21bb */ 0xffff, /* 21bc */ 0xffff, /* 21bd */ 0xffff, /* 21be */ 0xffff, /* 21bf */ 0xffff, /* 21c0 */ 0xffff, /* 21c1 */ 0xffff, /* 21c2 */ 0xffff, /* 21c3 */ 0xffff, /* 21c4 */ 0xffff, /* 21c5 */ 0xffff, /* 21c6 */ 0xffff, /* 21c7 */ 0xffff, /* 21c8 */ 0xffff, /* 21c9 */ 0xffff, /* 21ca */ 0xffff, /* 21cb */ 0xffff, /* 21cc */ 0xffff, /* 21cd */ 0xffff, /* 21ce */ 0xffff, /* 21cf */ 0xffff, /* 21d0 */ 0xffff, /* 21d1 */ 0xffff, /* 21d2 */ 0xffff, /* 21d3 */ 0xffff, /* 21d4 */ 0xffff, /* 21d5 */ 0xffff, /* 21d6 */ 0xffff, /* 21d7 */ 0xffff, /* 21d8 */ 0xffff, /* 21d9 */ 0xffff, /* 21da */ 0xffff, /* 21db */ 0xffff, /* 21dc */ 0xffff, /* 21dd */ 0xffff, /* 21de */ 0xffff, /* 21df */ 0xffff, /* 21e0 */ 0xffff, /* 21e1 */ 0xffff, /* 21e2 */ 0xffff, /* 21e3 */ 0xffff, /* 21e4 */ 0xffff, /* 21e5 */ 0xffff, /* 21e6 */ 0x0004, /* LEFTWARDS WHITE ARROW */ /* 21e7 */ 0x0001, /* UPWARDS WHITE ARROW */ /* 21e8 */ 0x0003, /* RIGHTWARDS WHITE ARROW */ /* 21e9 */ 0x0002, /* DOWNWARDS WHITE ARROW */ /* 21ea */ 0xffff, /* 21eb */ 0xffff, /* 21ec */ 0xffff, /* 21ed */ 0xffff, /* 21ee */ 0xffff, /* 21ef */ 0xffff, /* 21f0 */ 0xffff, /* 21f1 */ 0xffff, /* 21f2 */ 0xffff, /* 21f3 */ 0xffff, /* 21f4 */ 0xffff, /* 21f5 */ 0xffff, /* 21f6 */ 0xffff, /* 21f7 */ 0xffff, /* 21f8 */ 0xffff, /* 21f9 */ 0xffff, /* 21fa */ 0xffff, /* 21fb */ 0xffff, /* 21fc */ 0xffff, /* 21fd */ 0xffff, /* 21fe */ 0xffff, /* 21ff */ 0xffff, /* 2200 */ 0xffff, /* 2201 */ 0xffff, /* 2202 */ 0xffff, /* 2203 */ 0xffff, /* 2204 */ 0xffff, /* 2205 */ 0xffff, /* 2206 */ 0x007f, /* INCREMENT */ /* 2207 */ 0xffff, /* 2208 */ 0x00ee, /* ELEMENT OF */ /* 2209 */ 0xffff, /* 220a */ 0xffff, /* 220b */ 0xffff, /* 220c */ 0xffff, /* 220d */ 0xffff, /* 220e */ 0xffff, /* 220f */ 0xffff, /* 2210 */ 0xffff, /* 2211 */ 0xffff, /* 2212 */ 0xffff, /* 2213 */ 0xffff, /* 2214 */ 0xffff, /* 2215 */ 0xffff, /* 2216 */ 0xffff, /* 2217 */ 0xffff, /* 2218 */ 0xffff, /* 2219 */ 0x00f9, /* BULLET OPERATOR */ /* 221a */ 0x00fb, /* SQUARE ROOT */ /* 221b */ 0xffff, /* 221c */ 0xffff, /* 221d */ 0xffff, /* 221e */ 0x00df, /* INFINITY */ /* 221f */ 0xffff, /* 2220 */ 0xffff, /* 2221 */ 0xffff, /* 2222 */ 0xffff, /* 2223 */ 0xffff, /* 2224 */ 0xffff, /* 2225 */ 0xffff, /* 2226 */ 0xffff, /* 2227 */ 0x00de, /* LOGICAL AND */ /* 2228 */ 0xffff, /* 2229 */ 0x00ef, /* INTERSECTION */ /* 222a */ 0xffff, /* 222b */ 0xffff, /* 222c */ 0xffff, /* 222d */ 0xffff, /* 222e */ 0x00ec, /* CONTOUR INTEGRAL */ /* 222f */ 0xffff, /* 2230 */ 0xffff, /* 2231 */ 0xffff, /* 2232 */ 0xffff, /* 2233 */ 0xffff, /* 2234 */ 0xffff, /* 2235 */ 0xffff, /* 2236 */ 0xffff, /* 2237 */ 0xffff, /* 2238 */ 0xffff, /* 2239 */ 0xffff, /* 223a */ 0xffff, /* 223b */ 0xffff, /* 223c */ 0xffff, /* 223d */ 0xffff, /* 223e */ 0xffff, /* 223f */ 0xffff, /* 2240 */ 0xffff, /* 2241 */ 0xffff, /* 2242 */ 0xffff, /* 2243 */ 0xffff, /* 2244 */ 0xffff, /* 2245 */ 0xffff, /* 2246 */ 0xffff, /* 2247 */ 0xffff, /* 2248 */ 0x00f7, /* ALMOST EQUAL TO */ /* 2249 */ 0xffff, /* 224a */ 0xffff, /* 224b */ 0xffff, /* 224c */ 0xffff, /* 224d */ 0xffff, /* 224e */ 0xffff, /* 224f */ 0xffff, /* 2250 */ 0xffff, /* 2251 */ 0xffff, /* 2252 */ 0xffff, /* 2253 */ 0xffff, /* 2254 */ 0xffff, /* 2255 */ 0xffff, /* 2256 */ 0xffff, /* 2257 */ 0xffff, /* 2258 */ 0xffff, /* 2259 */ 0xffff, /* 225a */ 0xffff, /* 225b */ 0xffff, /* 225c */ 0xffff, /* 225d */ 0xffff, /* 225e */ 0xffff, /* 225f */ 0xffff, /* 2260 */ 0xffff, /* 2261 */ 0x00f0, /* IDENTICAL TO */ /* 2262 */ 0xffff, /* 2263 */ 0xffff, /* 2264 */ 0x00f3, /* LESS-THAN OR EQUAL TO */ /* 2265 */ 0x00f2, /* GREATER-THAN OR EQUAL TO */ /* 2266 */ 0xffff, /* 2267 */ 0xffff, /* 2268 */ 0xffff, /* 2269 */ 0xffff, /* 226a */ 0xffff, /* 226b */ 0xffff, /* 226c */ 0xffff, /* 226d */ 0xffff, /* 226e */ 0xffff, /* 226f */ 0xffff, /* 2270 */ 0xffff, /* 2271 */ 0xffff, /* 2272 */ 0xffff, /* 2273 */ 0xffff, /* 2274 */ 0xffff, /* 2275 */ 0xffff, /* 2276 */ 0xffff, /* 2277 */ 0xffff, /* 2278 */ 0xffff, /* 2279 */ 0xffff, /* 227a */ 0xffff, /* 227b */ 0xffff, /* 227c */ 0xffff, /* 227d */ 0xffff, /* 227e */ 0xffff, /* 227f */ 0xffff, /* 2280 */ 0xffff, /* 2281 */ 0xffff, /* 2282 */ 0xffff, /* 2283 */ 0xffff, /* 2284 */ 0xffff, /* 2285 */ 0xffff, /* 2286 */ 0xffff, /* 2287 */ 0xffff, /* 2288 */ 0xffff, /* 2289 */ 0xffff, /* 228a */ 0xffff, /* 228b */ 0xffff, /* 228c */ 0xffff, /* 228d */ 0xffff, /* 228e */ 0xffff, /* 228f */ 0xffff, /* 2290 */ 0xffff, /* 2291 */ 0xffff, /* 2292 */ 0xffff, /* 2293 */ 0xffff, /* 2294 */ 0xffff, /* 2295 */ 0xffff, /* 2296 */ 0xffff, /* 2297 */ 0xffff, /* 2298 */ 0xffff, /* 2299 */ 0xffff, /* 229a */ 0xffff, /* 229b */ 0xffff, /* 229c */ 0xffff, /* 229d */ 0xffff, /* 229e */ 0xffff, /* 229f */ 0xffff, /* 22a0 */ 0xffff, /* 22a1 */ 0xffff, /* 22a2 */ 0xffff, /* 22a3 */ 0xffff, /* 22a4 */ 0xffff, /* 22a5 */ 0xffff, /* 22a6 */ 0xffff, /* 22a7 */ 0xffff, /* 22a8 */ 0xffff, /* 22a9 */ 0xffff, /* 22aa */ 0xffff, /* 22ab */ 0xffff, /* 22ac */ 0xffff, /* 22ad */ 0xffff, /* 22ae */ 0xffff, /* 22af */ 0xffff, /* 22b0 */ 0xffff, /* 22b1 */ 0xffff, /* 22b2 */ 0xffff, /* 22b3 */ 0xffff, /* 22b4 */ 0xffff, /* 22b5 */ 0xffff, /* 22b6 */ 0xffff, /* 22b7 */ 0xffff, /* 22b8 */ 0xffff, /* 22b9 */ 0xffff, /* 22ba */ 0xffff, /* 22bb */ 0xffff, /* 22bc */ 0xffff, /* 22bd */ 0xffff, /* 22be */ 0xffff, /* 22bf */ 0xffff, /* 22c0 */ 0xffff, /* 22c1 */ 0xffff, /* 22c2 */ 0xffff, /* 22c3 */ 0xffff, /* 22c4 */ 0xffff, /* 22c5 */ 0xffff, /* 22c6 */ 0xffff, /* 22c7 */ 0xffff, /* 22c8 */ 0xffff, /* 22c9 */ 0xffff, /* 22ca */ 0xffff, /* 22cb */ 0xffff, /* 22cc */ 0xffff, /* 22cd */ 0xffff, /* 22ce */ 0xffff, /* 22cf */ 0xffff, /* 22d0 */ 0xffff, /* 22d1 */ 0xffff, /* 22d2 */ 0xffff, /* 22d3 */ 0xffff, /* 22d4 */ 0xffff, /* 22d5 */ 0xffff, /* 22d6 */ 0xffff, /* 22d7 */ 0xffff, /* 22d8 */ 0xffff, /* 22d9 */ 0xffff, /* 22da */ 0xffff, /* 22db */ 0xffff, /* 22dc */ 0xffff, /* 22dd */ 0xffff, /* 22de */ 0xffff, /* 22df */ 0xffff, /* 22e0 */ 0xffff, /* 22e1 */ 0xffff, /* 22e2 */ 0xffff, /* 22e3 */ 0xffff, /* 22e4 */ 0xffff, /* 22e5 */ 0xffff, /* 22e6 */ 0xffff, /* 22e7 */ 0xffff, /* 22e8 */ 0xffff, /* 22e9 */ 0xffff, /* 22ea */ 0xffff, /* 22eb */ 0xffff, /* 22ec */ 0xffff, /* 22ed */ 0xffff, /* 22ee */ 0xffff, /* 22ef */ 0xffff, /* 22f0 */ 0xffff, /* 22f1 */ 0xffff, /* 22f2 */ 0xffff, /* 22f3 */ 0xffff, /* 22f4 */ 0xffff, /* 22f5 */ 0xffff, /* 22f6 */ 0xffff, /* 22f7 */ 0xffff, /* 22f8 */ 0xffff, /* 22f9 */ 0xffff, /* 22fa */ 0xffff, /* 22fb */ 0xffff, /* 22fc */ 0xffff, /* 22fd */ 0xffff, /* 22fe */ 0xffff, /* 22ff */ 0xffff, /* 2300 */ 0xffff, /* 2301 */ 0xffff, /* 2302 */ 0xffff, /* 2303 */ 0xffff, /* 2304 */ 0xffff, /* 2305 */ 0xffff, /* 2306 */ 0xffff, /* 2307 */ 0xffff, /* 2308 */ 0xffff, /* 2309 */ 0xffff, /* 230a */ 0xffff, /* 230b */ 0xffff, /* 230c */ 0xffff, /* 230d */ 0xffff, /* 230e */ 0xffff, /* 230f */ 0xffff, /* 2310 */ 0x00a9, /* REVERSED NOT SIGN */ /* 2311 */ 0xffff, /* 2312 */ 0xffff, /* 2313 */ 0xffff, /* 2314 */ 0xffff, /* 2315 */ 0xffff, /* 2316 */ 0xffff, /* 2317 */ 0xffff, /* 2318 */ 0xffff, /* 2319 */ 0xffff, /* 231a */ 0x0009, /* WATCH */ /* 231b */ 0xffff, /* 231c */ 0xffff, /* 231d */ 0xffff, /* 231e */ 0xffff, /* 231f */ 0xffff, /* 2320 */ 0x00f4, /* TOP HALF INTEGRAL */ /* 2321 */ 0x00f5, /* BOTTOM HALF INTEGRAL */ /* 2322 */ 0xffff, /* 2323 */ 0xffff, /* 2324 */ 0xffff, /* 2325 */ 0xffff, /* 2326 */ 0xffff, /* 2327 */ 0xffff, /* 2328 */ 0xffff, /* 2329 */ 0xffff, /* 232a */ 0xffff, /* 232b */ 0xffff, /* 232c */ 0xffff, /* 232d */ 0xffff, /* 232e */ 0xffff, /* 232f */ 0xffff, /* 2330 */ 0xffff, /* 2331 */ 0xffff, /* 2332 */ 0xffff, /* 2333 */ 0xffff, /* 2334 */ 0xffff, /* 2335 */ 0xffff, /* 2336 */ 0xffff, /* 2337 */ 0xffff, /* 2338 */ 0xffff, /* 2339 */ 0xffff, /* 233a */ 0xffff, /* 233b */ 0xffff, /* 233c */ 0xffff, /* 233d */ 0xffff, /* 233e */ 0xffff, /* 233f */ 0xffff, /* 2340 */ 0xffff, /* 2341 */ 0xffff, /* 2342 */ 0xffff, /* 2343 */ 0xffff, /* 2344 */ 0xffff, /* 2345 */ 0xffff, /* 2346 */ 0xffff, /* 2347 */ 0xffff, /* 2348 */ 0xffff, /* 2349 */ 0xffff, /* 234a */ 0xffff, /* 234b */ 0xffff, /* 234c */ 0xffff, /* 234d */ 0xffff, /* 234e */ 0xffff, /* 234f */ 0xffff, /* 2350 */ 0xffff, /* 2351 */ 0xffff, /* 2352 */ 0xffff, /* 2353 */ 0xffff, /* 2354 */ 0xffff, /* 2355 */ 0xffff, /* 2356 */ 0xffff, /* 2357 */ 0xffff, /* 2358 */ 0xffff, /* 2359 */ 0xffff, /* 235a */ 0xffff, /* 235b */ 0xffff, /* 235c */ 0xffff, /* 235d */ 0xffff, /* 235e */ 0xffff, /* 235f */ 0xffff, /* 2360 */ 0xffff, /* 2361 */ 0xffff, /* 2362 */ 0xffff, /* 2363 */ 0xffff, /* 2364 */ 0xffff, /* 2365 */ 0xffff, /* 2366 */ 0xffff, /* 2367 */ 0xffff, /* 2368 */ 0xffff, /* 2369 */ 0xffff, /* 236a */ 0xffff, /* 236b */ 0xffff, /* 236c */ 0xffff, /* 236d */ 0xffff, /* 236e */ 0xffff, /* 236f */ 0xffff, /* 2370 */ 0xffff, /* 2371 */ 0xffff, /* 2372 */ 0xffff, /* 2373 */ 0xffff, /* 2374 */ 0xffff, /* 2375 */ 0xffff, /* 2376 */ 0xffff, /* 2377 */ 0xffff, /* 2378 */ 0xffff, /* 2379 */ 0xffff, /* 237a */ 0xffff, /* 237b */ 0xffff, /* 237c */ 0xffff, /* 237d */ 0xffff, /* 237e */ 0x000a, /* BELL SYMBOL */ /* 237f */ 0xffff, /* 2380 */ 0xffff, /* 2381 */ 0xffff, /* 2382 */ 0xffff, /* 2383 */ 0xffff, /* 2384 */ 0xffff, /* 2385 */ 0xffff, /* 2386 */ 0xffff, /* 2387 */ 0xffff, /* 2388 */ 0xffff, /* 2389 */ 0xffff, /* 238a */ 0xffff, /* 238b */ 0xffff, /* 238c */ 0xffff, /* 238d */ 0xffff, /* 238e */ 0xffff, /* 238f */ 0xffff, /* 2390 */ 0xffff, /* 2391 */ 0xffff, /* 2392 */ 0xffff, /* 2393 */ 0xffff, /* 2394 */ 0xffff, /* 2395 */ 0xffff, /* 2396 */ 0xffff, /* 2397 */ 0xffff, /* 2398 */ 0xffff, /* 2399 */ 0xffff, /* 239a */ 0xffff, /* 239b */ 0xffff, /* 239c */ 0xffff, /* 239d */ 0xffff, /* 239e */ 0xffff, /* 239f */ 0xffff, /* 23a0 */ 0xffff, /* 23a1 */ 0xffff, /* 23a2 */ 0xffff, /* 23a3 */ 0xffff, /* 23a4 */ 0xffff, /* 23a5 */ 0xffff, /* 23a6 */ 0xffff, /* 23a7 */ 0xffff, /* 23a8 */ 0xffff, /* 23a9 */ 0xffff, /* 23aa */ 0xffff, /* 23ab */ 0xffff, /* 23ac */ 0xffff, /* 23ad */ 0xffff, /* 23ae */ 0xffff, /* 23af */ 0xffff, /* 23b0 */ 0xffff, /* 23b1 */ 0xffff, /* 23b2 */ 0xffff, /* 23b3 */ 0xffff, /* 23b4 */ 0xffff, /* 23b5 */ 0xffff, /* 23b6 */ 0xffff, /* 23b7 */ 0xffff, /* 23b8 */ 0xffff, /* 23b9 */ 0xffff, /* 23ba */ 0xffff, /* 23bb */ 0xffff, /* 23bc */ 0xffff, /* 23bd */ 0xffff, /* 23be */ 0xffff, /* 23bf */ 0xffff, /* 23c0 */ 0xffff, /* 23c1 */ 0xffff, /* 23c2 */ 0xffff, /* 23c3 */ 0xffff, /* 23c4 */ 0xffff, /* 23c5 */ 0xffff, /* 23c6 */ 0xffff, /* 23c7 */ 0xffff, /* 23c8 */ 0xffff, /* 23c9 */ 0xffff, /* 23ca */ 0xffff, /* 23cb */ 0xffff, /* 23cc */ 0xffff, /* 23cd */ 0xffff, /* 23ce */ 0xffff, /* 23cf */ 0xffff, /* 23d0 */ 0xffff, /* 23d1 */ 0xffff, /* 23d2 */ 0xffff, /* 23d3 */ 0xffff, /* 23d4 */ 0xffff, /* 23d5 */ 0xffff, /* 23d6 */ 0xffff, /* 23d7 */ 0xffff, /* 23d8 */ 0xffff, /* 23d9 */ 0xffff, /* 23da */ 0xffff, /* 23db */ 0xffff, /* 23dc */ 0xffff, /* 23dd */ 0xffff, /* 23de */ 0xffff, /* 23df */ 0xffff, /* 23e0 */ 0xffff, /* 23e1 */ 0xffff, /* 23e2 */ 0xffff, /* 23e3 */ 0xffff, /* 23e4 */ 0xffff, /* 23e5 */ 0xffff, /* 23e6 */ 0xffff, /* 23e7 */ 0xffff, /* 23e8 */ 0xffff, /* 23e9 */ 0xffff, /* 23ea */ 0xffff, /* 23eb */ 0xffff, /* 23ec */ 0xffff, /* 23ed */ 0xffff, /* 23ee */ 0xffff, /* 23ef */ 0xffff, /* 23f0 */ 0xffff, /* 23f1 */ 0xffff, /* 23f2 */ 0xffff, /* 23f3 */ 0xffff, /* 23f4 */ 0xffff, /* 23f5 */ 0xffff, /* 23f6 */ 0xffff, /* 23f7 */ 0xffff, /* 23f8 */ 0xffff, /* 23f9 */ 0xffff, /* 23fa */ 0xffff, /* 23fb */ 0xffff, /* 23fc */ 0xffff, /* 23fd */ 0xffff, /* 23fe */ 0xffff, /* 23ff */ 0xffff, /* 2400 */ 0xffff, /* 2401 */ 0xffff, /* 2402 */ 0xffff, /* 2403 */ 0xffff, /* 2404 */ 0xffff, /* 2405 */ 0xffff, /* 2406 */ 0xffff, /* 2407 */ 0xffff, /* 2408 */ 0xffff, /* 2409 */ 0xffff, /* 240a */ 0xffff, /* 240b */ 0xffff, /* 240c */ 0x000c, /* SYMBOL FOR FORM FEED */ /* 240d */ 0x000d, /* SYMBOL FOR CARRIAGE RETURN */ /* 240e */ 0xffff, /* 240f */ 0xffff, /* 2410 */ 0xffff, /* 2411 */ 0xffff, /* 2412 */ 0xffff, /* 2413 */ 0xffff, /* 2414 */ 0xffff, /* 2415 */ 0xffff, /* 2416 */ 0xffff, /* 2417 */ 0xffff, /* 2418 */ 0xffff, /* 2419 */ 0xffff, /* 241a */ 0xffff, /* 241b */ 0x001b, /* SYMBOL FOR ESCAPE */ /* 241c */ 0xffff, /* 241d */ 0xffff, /* 241e */ 0xffff, /* 241f */ 0xffff, /* 2420 */ 0xffff, /* 2421 */ 0xffff, /* 2422 */ 0xffff, /* 2423 */ 0xffff, /* 2424 */ 0xffff, /* 2425 */ 0xffff, /* 2426 */ 0xffff, /* 2427 */ 0xffff, /* 2428 */ 0xffff, /* 2429 */ 0xffff, /* 242a */ 0xffff, /* 242b */ 0xffff, /* 242c */ 0xffff, /* 242d */ 0xffff, /* 242e */ 0xffff, /* 242f */ 0xffff, /* 2430 */ 0xffff, /* 2431 */ 0xffff, /* 2432 */ 0xffff, /* 2433 */ 0xffff, /* 2434 */ 0xffff, /* 2435 */ 0xffff, /* 2436 */ 0xffff, /* 2437 */ 0xffff, /* 2438 */ 0xffff, /* 2439 */ 0xffff, /* 243a */ 0xffff, /* 243b */ 0xffff, /* 243c */ 0xffff, /* 243d */ 0xffff, /* 243e */ 0xffff, /* 243f */ 0xffff, /* 2440 */ 0xffff, /* 2441 */ 0xffff, /* 2442 */ 0xffff, /* 2443 */ 0xffff, /* 2444 */ 0xffff, /* 2445 */ 0xffff, /* 2446 */ 0xffff, /* 2447 */ 0xffff, /* 2448 */ 0xffff, /* 2449 */ 0xffff, /* 244a */ 0xffff, /* 244b */ 0xffff, /* 244c */ 0xffff, /* 244d */ 0xffff, /* 244e */ 0xffff, /* 244f */ 0xffff, /* 2450 */ 0xffff, /* 2451 */ 0xffff, /* 2452 */ 0xffff, /* 2453 */ 0xffff, /* 2454 */ 0xffff, /* 2455 */ 0xffff, /* 2456 */ 0xffff, /* 2457 */ 0xffff, /* 2458 */ 0xffff, /* 2459 */ 0xffff, /* 245a */ 0xffff, /* 245b */ 0xffff, /* 245c */ 0xffff, /* 245d */ 0xffff, /* 245e */ 0xffff, /* 245f */ 0xffff, /* 2460 */ 0x0011, /* CIRCLED DIGIT ONE */ /* 2461 */ 0x0012, /* CIRCLED DIGIT TWO */ /* 2462 */ 0x0013, /* CIRCLED DIGIT THREE */ /* 2463 */ 0x0014, /* CIRCLED DIGIT FOUR */ /* 2464 */ 0x0015, /* CIRCLED DIGIT FIVE */ /* 2465 */ 0x0016, /* CIRCLED DIGIT SIX */ /* 2466 */ 0x0017, /* CIRCLED DIGIT SEVEN */ /* 2467 */ 0x0018, /* CIRCLED DIGIT EIGHT */ /* 2468 */ 0x0019, /* CIRCLED DIGIT NINE */ /* 2469 */ 0xffff, /* 246a */ 0xffff, /* 246b */ 0xffff, /* 246c */ 0xffff, /* 246d */ 0xffff, /* 246e */ 0xffff, /* 246f */ 0xffff, /* 2470 */ 0xffff, /* 2471 */ 0xffff, /* 2472 */ 0xffff, /* 2473 */ 0xffff, /* 2474 */ 0xffff, /* 2475 */ 0xffff, /* 2476 */ 0xffff, /* 2477 */ 0xffff, /* 2478 */ 0xffff, /* 2479 */ 0xffff, /* 247a */ 0xffff, /* 247b */ 0xffff, /* 247c */ 0xffff, /* 247d */ 0xffff, /* 247e */ 0xffff, /* 247f */ 0xffff, /* 2480 */ 0xffff, /* 2481 */ 0xffff, /* 2482 */ 0xffff, /* 2483 */ 0xffff, /* 2484 */ 0xffff, /* 2485 */ 0xffff, /* 2486 */ 0xffff, /* 2487 */ 0xffff, /* 2488 */ 0xffff, /* 2489 */ 0xffff, /* 248a */ 0xffff, /* 248b */ 0xffff, /* 248c */ 0xffff, /* 248d */ 0xffff, /* 248e */ 0xffff, /* 248f */ 0xffff, /* 2490 */ 0xffff, /* 2491 */ 0xffff, /* 2492 */ 0xffff, /* 2493 */ 0xffff, /* 2494 */ 0xffff, /* 2495 */ 0xffff, /* 2496 */ 0xffff, /* 2497 */ 0xffff, /* 2498 */ 0xffff, /* 2499 */ 0xffff, /* 249a */ 0xffff, /* 249b */ 0xffff, /* 249c */ 0xffff, /* 249d */ 0xffff, /* 249e */ 0xffff, /* 249f */ 0xffff, /* 24a0 */ 0xffff, /* 24a1 */ 0xffff, /* 24a2 */ 0xffff, /* 24a3 */ 0xffff, /* 24a4 */ 0xffff, /* 24a5 */ 0xffff, /* 24a6 */ 0xffff, /* 24a7 */ 0xffff, /* 24a8 */ 0xffff, /* 24a9 */ 0xffff, /* 24aa */ 0xffff, /* 24ab */ 0xffff, /* 24ac */ 0xffff, /* 24ad */ 0xffff, /* 24ae */ 0xffff, /* 24af */ 0xffff, /* 24b0 */ 0xffff, /* 24b1 */ 0xffff, /* 24b2 */ 0xffff, /* 24b3 */ 0xffff, /* 24b4 */ 0xffff, /* 24b5 */ 0xffff, /* 24b6 */ 0xffff, /* 24b7 */ 0xffff, /* 24b8 */ 0xffff, /* 24b9 */ 0xffff, /* 24ba */ 0xffff, /* 24bb */ 0xffff, /* 24bc */ 0xffff, /* 24bd */ 0xffff, /* 24be */ 0xffff, /* 24bf */ 0xffff, /* 24c0 */ 0xffff, /* 24c1 */ 0xffff, /* 24c2 */ 0xffff, /* 24c3 */ 0xffff, /* 24c4 */ 0xffff, /* 24c5 */ 0xffff, /* 24c6 */ 0xffff, /* 24c7 */ 0xffff, /* 24c8 */ 0xffff, /* 24c9 */ 0xffff, /* 24ca */ 0xffff, /* 24cb */ 0xffff, /* 24cc */ 0xffff, /* 24cd */ 0xffff, /* 24ce */ 0xffff, /* 24cf */ 0xffff, /* 24d0 */ 0xffff, /* 24d1 */ 0xffff, /* 24d2 */ 0xffff, /* 24d3 */ 0xffff, /* 24d4 */ 0xffff, /* 24d5 */ 0xffff, /* 24d6 */ 0xffff, /* 24d7 */ 0xffff, /* 24d8 */ 0xffff, /* 24d9 */ 0xffff, /* 24da */ 0xffff, /* 24db */ 0xffff, /* 24dc */ 0xffff, /* 24dd */ 0xffff, /* 24de */ 0xffff, /* 24df */ 0xffff, /* 24e0 */ 0xffff, /* 24e1 */ 0xffff, /* 24e2 */ 0xffff, /* 24e3 */ 0xffff, /* 24e4 */ 0xffff, /* 24e5 */ 0xffff, /* 24e6 */ 0xffff, /* 24e7 */ 0xffff, /* 24e8 */ 0xffff, /* 24e9 */ 0xffff, /* 24ea */ 0x0010, /* CIRCLED DIGIT ZERO */ /* 24eb */ 0xffff, /* 24ec */ 0xffff, /* 24ed */ 0xffff, /* 24ee */ 0xffff, /* 24ef */ 0xffff, /* 24f0 */ 0xffff, /* 24f1 */ 0xffff, /* 24f2 */ 0xffff, /* 24f3 */ 0xffff, /* 24f4 */ 0xffff, /* 24f5 */ 0xffff, /* 24f6 */ 0xffff, /* 24f7 */ 0xffff, /* 24f8 */ 0xffff, /* 24f9 */ 0xffff, /* 24fa */ 0xffff, /* 24fb */ 0xffff, /* 24fc */ 0xffff, /* 24fd */ 0xffff, /* 24fe */ 0xffff, /* 24ff */ 0xffff, /* 2500 */ 0xffff, /* 2501 */ 0xffff, /* 2502 */ 0xffff, /* 2503 */ 0xffff, /* 2504 */ 0xffff, /* 2505 */ 0xffff, /* 2506 */ 0xffff, /* 2507 */ 0xffff, /* 2508 */ 0xffff, /* 2509 */ 0xffff, /* 250a */ 0xffff, /* 250b */ 0xffff, /* 250c */ 0xffff, /* 250d */ 0xffff, /* 250e */ 0xffff, /* 250f */ 0xffff, /* 2510 */ 0xffff, /* 2511 */ 0xffff, /* 2512 */ 0xffff, /* 2513 */ 0xffff, /* 2514 */ 0xffff, /* 2515 */ 0xffff, /* 2516 */ 0xffff, /* 2517 */ 0xffff, /* 2518 */ 0xffff, /* 2519 */ 0xffff, /* 251a */ 0xffff, /* 251b */ 0xffff, /* 251c */ 0xffff, /* 251d */ 0xffff, /* 251e */ 0xffff, /* 251f */ 0xffff, /* 2520 */ 0xffff, /* 2521 */ 0xffff, /* 2522 */ 0xffff, /* 2523 */ 0xffff, /* 2524 */ 0xffff, /* 2525 */ 0xffff, /* 2526 */ 0xffff, /* 2527 */ 0xffff, /* 2528 */ 0xffff, /* 2529 */ 0xffff, /* 252a */ 0xffff, /* 252b */ 0xffff, /* 252c */ 0xffff, /* 252d */ 0xffff, /* 252e */ 0xffff, /* 252f */ 0xffff, /* 2530 */ 0xffff, /* 2531 */ 0xffff, /* 2532 */ 0xffff, /* 2533 */ 0xffff, /* 2534 */ 0xffff, /* 2535 */ 0xffff, /* 2536 */ 0xffff, /* 2537 */ 0xffff, /* 2538 */ 0xffff, /* 2539 */ 0xffff, /* 253a */ 0xffff, /* 253b */ 0xffff, /* 253c */ 0xffff, /* 253d */ 0xffff, /* 253e */ 0xffff, /* 253f */ 0xffff, /* 2540 */ 0xffff, /* 2541 */ 0xffff, /* 2542 */ 0xffff, /* 2543 */ 0xffff, /* 2544 */ 0xffff, /* 2545 */ 0xffff, /* 2546 */ 0xffff, /* 2547 */ 0xffff, /* 2548 */ 0xffff, /* 2549 */ 0xffff, /* 254a */ 0xffff, /* 254b */ 0xffff, /* 254c */ 0xffff, /* 254d */ 0xffff, /* 254e */ 0xffff, /* 254f */ 0xffff, /* 2550 */ 0xffff, /* 2551 */ 0xffff, /* 2552 */ 0xffff, /* 2553 */ 0xffff, /* 2554 */ 0xffff, /* 2555 */ 0xffff, /* 2556 */ 0xffff, /* 2557 */ 0xffff, /* 2558 */ 0xffff, /* 2559 */ 0xffff, /* 255a */ 0xffff, /* 255b */ 0xffff, /* 255c */ 0xffff, /* 255d */ 0xffff, /* 255e */ 0xffff, /* 255f */ 0xffff, /* 2560 */ 0xffff, /* 2561 */ 0xffff, /* 2562 */ 0xffff, /* 2563 */ 0xffff, /* 2564 */ 0xffff, /* 2565 */ 0xffff, /* 2566 */ 0xffff, /* 2567 */ 0xffff, /* 2568 */ 0xffff, /* 2569 */ 0xffff, /* 256a */ 0xffff, /* 256b */ 0xffff, /* 256c */ 0xffff, /* 256d */ 0xffff, /* 256e */ 0xffff, /* 256f */ 0xffff, /* 2570 */ 0xffff, /* 2571 */ 0xffff, /* 2572 */ 0xffff, /* 2573 */ 0xffff, /* 2574 */ 0xffff, /* 2575 */ 0xffff, /* 2576 */ 0xffff, /* 2577 */ 0xffff, /* 2578 */ 0xffff, /* 2579 */ 0xffff, /* 257a */ 0xffff, /* 257b */ 0xffff, /* 257c */ 0xffff, /* 257d */ 0xffff, /* 257e */ 0xffff, /* 257f */ 0xffff, /* 2580 */ 0xffff, /* 2581 */ 0xffff, /* 2582 */ 0xffff, /* 2583 */ 0xffff, /* 2584 */ 0xffff, /* 2585 */ 0xffff, /* 2586 */ 0xffff, /* 2587 */ 0xffff, /* 2588 */ 0xffff, /* 2589 */ 0xffff, /* 258a */ 0xffff, /* 258b */ 0xffff, /* 258c */ 0xffff, /* 258d */ 0xffff, /* 258e */ 0xffff, /* 258f */ 0xffff, /* 2590 */ 0xffff, /* 2591 */ 0xffff, /* 2592 */ 0xffff, /* 2593 */ 0xffff, /* 2594 */ 0xffff, /* 2595 */ 0xffff, /* 2596 */ 0xffff, /* 2597 */ 0xffff, /* 2598 */ 0xffff, /* 2599 */ 0xffff, /* 259a */ 0xffff, /* 259b */ 0xffff, /* 259c */ 0xffff, /* 259d */ 0xffff, /* 259e */ 0xffff, /* 259f */ 0xffff, /* 25a0 */ 0x25a0, /* BLACK SQUARE */ /* 25a1 */ 0xffff, /* 25a2 */ 0xffff, /* 25a3 */ 0xffff, /* 25a4 */ 0xffff, /* 25a5 */ 0xffff, /* 25a6 */ 0xffff, /* 25a7 */ 0xffff, /* 25a8 */ 0xffff, /* 25a9 */ 0xffff, /* 25aa */ 0xffff, /* 25ab */ 0xffff, /* 25ac */ 0xffff, /* 25ad */ 0xffff, /* 25ae */ 0xffff, /* 25af */ 0xffff, /* 25b0 */ 0xffff, /* 25b1 */ 0xffff, /* 25b2 */ 0xffff, /* 25b3 */ 0xffff, /* 25b4 */ 0xffff, /* 25b5 */ 0xffff, /* 25b6 */ 0xffff, /* 25b7 */ 0xffff, /* 25b8 */ 0xffff, /* 25b9 */ 0xffff, /* 25ba */ 0xffff, /* 25bb */ 0xffff, /* 25bc */ 0xffff, /* 25bd */ 0xffff, /* 25be */ 0xffff, /* 25bf */ 0xffff, /* 25c0 */ 0xffff, /* 25c1 */ 0xffff, /* 25c2 */ 0xffff, /* 25c3 */ 0xffff, /* 25c4 */ 0xffff, /* 25c5 */ 0xffff, /* 25c6 */ 0xffff, /* 25c7 */ 0xffff, /* 25c8 */ 0xffff, /* 25c9 */ 0xffff, /* 25ca */ 0xffff, /* 25cb */ 0xffff, /* 25cc */ 0xffff, /* 25cd */ 0xffff, /* 25ce */ 0xffff, /* 25cf */ 0xffff, /* 25d0 */ 0xffff, /* 25d1 */ 0xffff, /* 25d2 */ 0xffff, /* 25d3 */ 0xffff, /* 25d4 */ 0xffff, /* 25d5 */ 0xffff, /* 25d6 */ 0xffff, /* 25d7 */ 0xffff, /* 25d8 */ 0xffff, /* 25d9 */ 0xffff, /* 25da */ 0xffff, /* 25db */ 0xffff, /* 25dc */ 0xffff, /* 25dd */ 0xffff, /* 25de */ 0xffff, /* 25df */ 0xffff, /* 25e0 */ 0xffff, /* 25e1 */ 0xffff, /* 25e2 */ 0xffff, /* 25e3 */ 0xffff, /* 25e4 */ 0xffff, /* 25e5 */ 0xffff, /* 25e6 */ 0xffff, /* 25e7 */ 0xffff, /* 25e8 */ 0xffff, /* 25e9 */ 0xffff, /* 25ea */ 0xffff, /* 25eb */ 0xffff, /* 25ec */ 0xffff, /* 25ed */ 0xffff, /* 25ee */ 0xffff, /* 25ef */ 0xffff, /* 25f0 */ 0xffff, /* 25f1 */ 0xffff, /* 25f2 */ 0xffff, /* 25f3 */ 0xffff, /* 25f4 */ 0xffff, /* 25f5 */ 0xffff, /* 25f6 */ 0xffff, /* 25f7 */ 0xffff, /* 25f8 */ 0xffff, /* 25f9 */ 0xffff, /* 25fa */ 0xffff, /* 25fb */ 0xffff, /* 25fc */ 0xffff, /* 25fd */ 0xffff, /* 25fe */ 0xffff, /* 25ff */ 0xffff, /* 2600 */ 0xffff, /* 2601 */ 0xffff, /* 2602 */ 0xffff, /* 2603 */ 0xffff, /* 2604 */ 0xffff, /* 2605 */ 0xffff, /* 2606 */ 0xffff, /* 2607 */ 0xffff, /* 2608 */ 0xffff, /* 2609 */ 0xffff, /* 260a */ 0xffff, /* 260b */ 0xffff, /* 260c */ 0xffff, /* 260d */ 0xffff, /* 260e */ 0xffff, /* 260f */ 0xffff, /* 2610 */ 0x0005, /* BALLOT BOX */ /* 2611 */ 0x0006, /* BALLOT BOX WITH CHECK */ /* 2612 */ 0x0007, /* BALLOT BOX WITH X */ /* 2613 */ 0xffff, /* 2614 */ 0xffff, /* 2615 */ 0xffff, /* 2616 */ 0xffff, /* 2617 */ 0xffff, /* 2618 */ 0xffff, /* 2619 */ 0xffff, /* 261a */ 0xffff, /* 261b */ 0xffff, /* 261c */ 0xffff, /* 261d */ 0xffff, /* 261e */ 0xffff, /* 261f */ 0xffff, /* 2620 */ 0xffff, /* 2621 */ 0xffff, /* 2622 */ 0xffff, /* 2623 */ 0xffff, /* 2624 */ 0xffff, /* 2625 */ 0xffff, /* 2626 */ 0xffff, /* 2627 */ 0xffff, /* 2628 */ 0xffff, /* 2629 */ 0xffff, /* 262a */ 0xffff, /* 262b */ 0xffff, /* 262c */ 0xffff, /* 262d */ 0xffff, /* 262e */ 0xffff, /* 262f */ 0xffff, /* 2630 */ 0xffff, /* 2631 */ 0xffff, /* 2632 */ 0xffff, /* 2633 */ 0xffff, /* 2634 */ 0xffff, /* 2635 */ 0xffff, /* 2636 */ 0xffff, /* 2637 */ 0xffff, /* 2638 */ 0xffff, /* 2639 */ 0xffff, /* 263a */ 0xffff, /* 263b */ 0xffff, /* 263c */ 0xffff, /* 263d */ 0xffff, /* 263e */ 0xffff, /* 263f */ 0xffff, /* 2640 */ 0xffff, /* 2641 */ 0xffff, /* 2642 */ 0xffff, /* 2643 */ 0xffff, /* 2644 */ 0xffff, /* 2645 */ 0xffff, /* 2646 */ 0xffff, /* 2647 */ 0xffff, /* 2648 */ 0xffff, /* 2649 */ 0xffff, /* 264a */ 0xffff, /* 264b */ 0xffff, /* 264c */ 0xffff, /* 264d */ 0xffff, /* 264e */ 0xffff, /* 264f */ 0xffff, /* 2650 */ 0xffff, /* 2651 */ 0xffff, /* 2652 */ 0xffff, /* 2653 */ 0xffff, /* 2654 */ 0xffff, /* 2655 */ 0xffff, /* 2656 */ 0xffff, /* 2657 */ 0xffff, /* 2658 */ 0xffff, /* 2659 */ 0xffff, /* 265a */ 0xffff, /* 265b */ 0xffff, /* 265c */ 0xffff, /* 265d */ 0xffff, /* 265e */ 0xffff, /* 265f */ 0xffff, /* 2660 */ 0xffff, /* 2661 */ 0xffff, /* 2662 */ 0xffff, /* 2663 */ 0xffff, /* 2664 */ 0xffff, /* 2665 */ 0xffff, /* 2666 */ 0xffff, /* 2667 */ 0xffff, /* 2668 */ 0xffff, /* 2669 */ 0xffff, /* 266a */ 0x000b, /* EIGHTH NOTE */ /* 266b */ 0xffff, /* 266c */ 0xffff, /* 266d */ 0xffff, /* 266e */ 0xffff, /* 266f */ 0xffff, /* 2670 */ 0xffff, /* 2671 */ 0xffff, /* 2672 */ 0xffff, /* 2673 */ 0xffff, /* 2674 */ 0xffff, /* 2675 */ 0xffff, /* 2676 */ 0xffff, /* 2677 */ 0xffff, /* 2678 */ 0xffff, /* 2679 */ 0xffff, /* 267a */ 0xffff, /* 267b */ 0xffff, /* 267c */ 0xffff, /* 267d */ 0xffff, /* 267e */ 0xffff, /* 267f */ 0xffff, /* 2680 */ 0xffff, /* 2681 */ 0xffff, /* 2682 */ 0xffff, /* 2683 */ 0xffff, /* 2684 */ 0xffff, /* 2685 */ 0xffff, /* 2686 */ 0xffff, /* 2687 */ 0xffff, /* 2688 */ 0xffff, /* 2689 */ 0xffff, /* 268a */ 0xffff, /* 268b */ 0xffff, /* 268c */ 0xffff, /* 268d */ 0xffff, /* 268e */ 0xffff, /* 268f */ 0xffff, /* 2690 */ 0xffff, /* 2691 */ 0xffff, /* 2692 */ 0xffff, /* 2693 */ 0xffff, /* 2694 */ 0xffff, /* 2695 */ 0xffff, /* 2696 */ 0xffff, /* 2697 */ 0xffff, /* 2698 */ 0xffff, /* 2699 */ 0xffff, /* 269a */ 0xffff, /* 269b */ 0xffff, /* 269c */ 0xffff, /* 269d */ 0xffff, /* 269e */ 0xffff, /* 269f */ 0xffff, /* 26a0 */ 0xffff, /* 26a1 */ 0xffff, /* 26a2 */ 0xffff, /* 26a3 */ 0xffff, /* 26a4 */ 0xffff, /* 26a5 */ 0xffff, /* 26a6 */ 0xffff, /* 26a7 */ 0xffff, /* 26a8 */ 0xffff, /* 26a9 */ 0xffff, /* 26aa */ 0xffff, /* 26ab */ 0xffff, /* 26ac */ 0xffff, /* 26ad */ 0xffff, /* 26ae */ 0xffff, /* 26af */ 0xffff, /* 26b0 */ 0xffff, /* 26b1 */ 0xffff, /* 26b2 */ 0xffff, /* 26b3 */ 0xffff, /* 26b4 */ 0xffff, /* 26b5 */ 0xffff, /* 26b6 */ 0xffff, /* 26b7 */ 0xffff, /* 26b8 */ 0xffff, /* 26b9 */ 0xffff, /* 26ba */ 0xffff, /* 26bb */ 0xffff, /* 26bc */ 0xffff, /* 26bd */ 0xffff, /* 26be */ 0xffff, /* 26bf */ 0xffff, /* 26c0 */ 0xffff, /* 26c1 */ 0xffff, /* 26c2 */ 0xffff, /* 26c3 */ 0xffff, /* 26c4 */ 0xffff, /* 26c5 */ 0xffff, /* 26c6 */ 0xffff, /* 26c7 */ 0xffff, /* 26c8 */ 0xffff, /* 26c9 */ 0xffff, /* 26ca */ 0xffff, /* 26cb */ 0xffff, /* 26cc */ 0xffff, /* 26cd */ 0xffff, /* 26ce */ 0xffff, /* 26cf */ 0xffff, /* 26d0 */ 0xffff, /* 26d1 */ 0xffff, /* 26d2 */ 0xffff, /* 26d3 */ 0xffff, /* 26d4 */ 0xffff, /* 26d5 */ 0xffff, /* 26d6 */ 0xffff, /* 26d7 */ 0xffff, /* 26d8 */ 0xffff, /* 26d9 */ 0xffff, /* 26da */ 0xffff, /* 26db */ 0xffff, /* 26dc */ 0xffff, /* 26dd */ 0xffff, /* 26de */ 0xffff, /* 26df */ 0xffff, /* 26e0 */ 0xffff, /* 26e1 */ 0xffff, /* 26e2 */ 0xffff, /* 26e3 */ 0xffff, /* 26e4 */ 0xffff, /* 26e5 */ 0xffff, /* 26e6 */ 0xffff, /* 26e7 */ 0xffff, /* 26e8 */ 0xffff, /* 26e9 */ 0xffff, /* 26ea */ 0xffff, /* 26eb */ 0xffff, /* 26ec */ 0xffff, /* 26ed */ 0xffff, /* 26ee */ 0xffff, /* 26ef */ 0xffff, /* 26f0 */ 0x000e, /* MOUNTAIN */ /* 26f1 */ 0x000f, /* UMBRELLA ON GROUND */ /* 26f2 */ 0x001c, /* FOUNTAIN */ /* 26f3 */ 0x001d, /* FLAG IN HOLE */ /* 26f4 */ 0x001e, /* FERRY */ /* 26f5 */ 0x001f, /* SAILBOAT */ /* 26f6 */ 0xffff, /* 26f7 */ 0xffff, /* 26f8 */ 0xffff, /* 26f9 */ 0xffff, /* 26fa */ 0xffff, /* 26fb */ 0xffff, /* 26fc */ 0xffff, /* 26fd */ 0xffff, /* 26fe */ 0xffff, /* 26ff */ 0xffff, /* 2700 */ 0xffff, /* 2701 */ 0xffff, /* 2702 */ 0xffff, /* 2703 */ 0xffff, /* 2704 */ 0xffff, /* 2705 */ 0xffff, /* 2706 */ 0xffff, /* 2707 */ 0xffff, /* 2708 */ 0xffff, /* 2709 */ 0xffff, /* 270a */ 0xffff, /* 270b */ 0xffff, /* 270c */ 0xffff, /* 270d */ 0xffff, /* 270e */ 0xffff, /* 270f */ 0xffff, /* 2710 */ 0xffff, /* 2711 */ 0xffff, /* 2712 */ 0xffff, /* 2713 */ 0x0008, /* CHECK MARK */ /* 2714 */ 0xffff, /* 2715 */ 0xffff, /* 2716 */ 0xffff, /* 2717 */ 0xffff, /* 2718 */ 0xffff, /* 2719 */ 0xffff, /* 271a */ 0xffff, /* 271b */ 0xffff, /* 271c */ 0xffff, /* 271d */ 0xffff, /* 271e */ 0xffff, /* 271f */ 0xffff, /* 2720 */ 0xffff, /* 2721 */ 0xffff, /* 2722 */ 0xffff, /* 2723 */ 0xffff, /* 2724 */ 0xffff, /* 2725 */ 0xffff, /* 2726 */ 0xffff, /* 2727 */ 0xffff, /* 2728 */ 0xffff, /* 2729 */ 0xffff, /* 272a */ 0xffff, /* 272b */ 0xffff, /* 272c */ 0xffff, /* 272d */ 0xffff, /* 272e */ 0xffff, /* 272f */ 0xffff, /* 2730 */ 0xffff, /* 2731 */ 0xffff, /* 2732 */ 0xffff, /* 2733 */ 0xffff, /* 2734 */ 0xffff, /* 2735 */ 0xffff, /* 2736 */ 0xffff, /* 2737 */ 0xffff, /* 2738 */ 0xffff, /* 2739 */ 0xffff, /* 273a */ 0xffff, /* 273b */ 0xffff, /* 273c */ 0xffff, /* 273d */ 0xffff, /* 273e */ 0xffff, /* 273f */ 0xffff, /* 2740 */ 0xffff, /* 2741 */ 0xffff, /* 2742 */ 0xffff, /* 2743 */ 0xffff, /* 2744 */ 0xffff, /* 2745 */ 0xffff, /* 2746 */ 0xffff, /* 2747 */ 0xffff, /* 2748 */ 0xffff, /* 2749 */ 0xffff, /* 274a */ 0xffff, /* 274b */ 0xffff, /* 274c */ 0xffff, /* 274d */ 0xffff, /* 274e */ 0xffff, /* 274f */ 0xffff, /* 2750 */ 0xffff, /* 2751 */ 0xffff, /* 2752 */ 0xffff, /* 2753 */ 0xffff, /* 2754 */ 0xffff, /* 2755 */ 0xffff, /* 2756 */ 0xffff, /* 2757 */ 0xffff, /* 2758 */ 0xffff, /* 2759 */ 0xffff, /* 275a */ 0xffff, /* 275b */ 0xffff, /* 275c */ 0xffff, /* 275d */ 0xffff, /* 275e */ 0xffff, /* 275f */ 0xffff, /* 2760 */ 0xffff, /* 2761 */ 0xffff, /* 2762 */ 0xffff, /* 2763 */ 0xffff, /* 2764 */ 0xffff, /* 2765 */ 0xffff, /* 2766 */ 0xffff, /* 2767 */ 0xffff, /* 2768 */ 0xffff, /* 2769 */ 0xffff, /* 276a */ 0xffff, /* 276b */ 0xffff, /* 276c */ 0xffff, /* 276d */ 0xffff, /* 276e */ 0xffff, /* 276f */ 0xffff, /* 2770 */ 0xffff, /* 2771 */ 0xffff, /* 2772 */ 0xffff, /* 2773 */ 0xffff, /* 2774 */ 0xffff, /* 2775 */ 0xffff, /* 2776 */ 0xffff, /* 2777 */ 0xffff, /* 2778 */ 0xffff, /* 2779 */ 0xffff, /* 277a */ 0xffff, /* 277b */ 0xffff, /* 277c */ 0xffff, /* 277d */ 0xffff, /* 277e */ 0xffff, /* 277f */ 0xffff, /* 2780 */ 0xffff, /* 2781 */ 0xffff, /* 2782 */ 0xffff, /* 2783 */ 0xffff, /* 2784 */ 0xffff, /* 2785 */ 0xffff, /* 2786 */ 0xffff, /* 2787 */ 0xffff, /* 2788 */ 0xffff, /* 2789 */ 0xffff, /* 278a */ 0xffff, /* 278b */ 0xffff, /* 278c */ 0xffff, /* 278d */ 0xffff, /* 278e */ 0xffff, /* 278f */ 0xffff, /* 2790 */ 0xffff, /* 2791 */ 0xffff, /* 2792 */ 0xffff, /* 2793 */ 0xffff, /* 2794 */ 0xffff, /* 2795 */ 0xffff, /* 2796 */ 0xffff, /* 2797 */ 0xffff, /* 2798 */ 0xffff, /* 2799 */ 0xffff, /* 279a */ 0xffff, /* 279b */ 0xffff, /* 279c */ 0xffff, /* 279d */ 0xffff, /* 279e */ 0xffff, /* 279f */ 0xffff, /* 27a0 */ 0xffff, /* 27a1 */ 0xffff, /* 27a2 */ 0xffff, /* 27a3 */ 0xffff, /* 27a4 */ 0xffff, /* 27a5 */ 0xffff, /* 27a6 */ 0xffff, /* 27a7 */ 0xffff, /* 27a8 */ 0xffff, /* 27a9 */ 0xffff, /* 27aa */ 0xffff, /* 27ab */ 0xffff, /* 27ac */ 0xffff, /* 27ad */ 0xffff, /* 27ae */ 0xffff, /* 27af */ 0xffff, /* 27b0 */ 0xffff, /* 27b1 */ 0xffff, /* 27b2 */ 0xffff, /* 27b3 */ 0xffff, /* 27b4 */ 0xffff, /* 27b5 */ 0xffff, /* 27b6 */ 0xffff, /* 27b7 */ 0xffff, /* 27b8 */ 0xffff, /* 27b9 */ 0xffff, /* 27ba */ 0xffff, /* 27bb */ 0xffff, /* 27bc */ 0xffff, /* 27bd */ 0xffff, /* 27be */ 0xffff, /* 27bf */ 0xffff, /* 27c0 */ 0xffff, /* 27c1 */ 0xffff, /* 27c2 */ 0xffff, /* 27c3 */ 0xffff, /* 27c4 */ 0xffff, /* 27c5 */ 0xffff, /* 27c6 */ 0xffff, /* 27c7 */ 0xffff, /* 27c8 */ 0xffff, /* 27c9 */ 0xffff, /* 27ca */ 0xffff, /* 27cb */ 0xffff, /* 27cc */ 0xffff, /* 27cd */ 0xffff, /* 27ce */ 0xffff, /* 27cf */ 0xffff, /* 27d0 */ 0xffff, /* 27d1 */ 0xffff, /* 27d2 */ 0xffff, /* 27d3 */ 0xffff, /* 27d4 */ 0xffff, /* 27d5 */ 0xffff, /* 27d6 */ 0xffff, /* 27d7 */ 0xffff, /* 27d8 */ 0xffff, /* 27d9 */ 0xffff, /* 27da */ 0xffff, /* 27db */ 0xffff, /* 27dc */ 0xffff, /* 27dd */ 0xffff, /* 27de */ 0xffff, /* 27df */ 0xffff, /* 27e0 */ 0xffff, /* 27e1 */ 0xffff, /* 27e2 */ 0xffff, /* 27e3 */ 0xffff, /* 27e4 */ 0xffff, /* 27e5 */ 0xffff, /* 27e6 */ 0xffff, /* 27e7 */ 0xffff, /* 27e8 */ 0xffff, /* 27e9 */ 0xffff, /* 27ea */ 0xffff, /* 27eb */ 0xffff, /* 27ec */ 0xffff, /* 27ed */ 0xffff, /* 27ee */ 0xffff, /* 27ef */ 0xffff, /* 27f0 */ 0xffff, /* 27f1 */ 0xffff, /* 27f2 */ 0xffff, /* 27f3 */ 0xffff, /* 27f4 */ 0xffff, /* 27f5 */ 0xffff, /* 27f6 */ 0xffff, /* 27f7 */ 0xffff, /* 27f8 */ 0xffff, /* 27f9 */ 0xffff, /* 27fa */ 0xffff, /* 27fb */ 0xffff, /* 27fc */ 0xffff, /* 27fd */ 0xffff, /* 27fe */ 0xffff, /* 27ff */ 0xffff, /* 2800 */ 0xffff, /* 2801 */ 0xffff, /* 2802 */ 0xffff, /* 2803 */ 0xffff, /* 2804 */ 0xffff, /* 2805 */ 0xffff, /* 2806 */ 0xffff, /* 2807 */ 0xffff, /* 2808 */ 0xffff, /* 2809 */ 0xffff, /* 280a */ 0xffff, /* 280b */ 0xffff, /* 280c */ 0xffff, /* 280d */ 0xffff, /* 280e */ 0xffff, /* 280f */ 0xffff, /* 2810 */ 0xffff, /* 2811 */ 0xffff, /* 2812 */ 0xffff, /* 2813 */ 0xffff, /* 2814 */ 0xffff, /* 2815 */ 0xffff, /* 2816 */ 0xffff, /* 2817 */ 0xffff, /* 2818 */ 0xffff, /* 2819 */ 0xffff, /* 281a */ 0xffff, /* 281b */ 0xffff, /* 281c */ 0xffff, /* 281d */ 0xffff, /* 281e */ 0xffff, /* 281f */ 0xffff, /* 2820 */ 0xffff, /* 2821 */ 0xffff, /* 2822 */ 0xffff, /* 2823 */ 0xffff, /* 2824 */ 0xffff, /* 2825 */ 0xffff, /* 2826 */ 0xffff, /* 2827 */ 0xffff, /* 2828 */ 0xffff, /* 2829 */ 0xffff, /* 282a */ 0xffff, /* 282b */ 0xffff, /* 282c */ 0xffff, /* 282d */ 0xffff, /* 282e */ 0xffff, /* 282f */ 0xffff, /* 2830 */ 0xffff, /* 2831 */ 0xffff, /* 2832 */ 0xffff, /* 2833 */ 0xffff, /* 2834 */ 0xffff, /* 2835 */ 0xffff, /* 2836 */ 0xffff, /* 2837 */ 0xffff, /* 2838 */ 0xffff, /* 2839 */ 0xffff, /* 283a */ 0xffff, /* 283b */ 0xffff, /* 283c */ 0xffff, /* 283d */ 0xffff, /* 283e */ 0xffff, /* 283f */ 0xffff, /* 2840 */ 0xffff, /* 2841 */ 0xffff, /* 2842 */ 0xffff, /* 2843 */ 0xffff, /* 2844 */ 0xffff, /* 2845 */ 0xffff, /* 2846 */ 0xffff, /* 2847 */ 0xffff, /* 2848 */ 0xffff, /* 2849 */ 0xffff, /* 284a */ 0xffff, /* 284b */ 0xffff, /* 284c */ 0xffff, /* 284d */ 0xffff, /* 284e */ 0xffff, /* 284f */ 0xffff, /* 2850 */ 0xffff, /* 2851 */ 0xffff, /* 2852 */ 0xffff, /* 2853 */ 0xffff, /* 2854 */ 0xffff, /* 2855 */ 0xffff, /* 2856 */ 0xffff, /* 2857 */ 0xffff, /* 2858 */ 0xffff, /* 2859 */ 0xffff, /* 285a */ 0xffff, /* 285b */ 0xffff, /* 285c */ 0xffff, /* 285d */ 0xffff, /* 285e */ 0xffff, /* 285f */ 0xffff, /* 2860 */ 0xffff, /* 2861 */ 0xffff, /* 2862 */ 0xffff, /* 2863 */ 0xffff, /* 2864 */ 0xffff, /* 2865 */ 0xffff, /* 2866 */ 0xffff, /* 2867 */ 0xffff, /* 2868 */ 0xffff, /* 2869 */ 0xffff, /* 286a */ 0xffff, /* 286b */ 0xffff, /* 286c */ 0xffff, /* 286d */ 0xffff, /* 286e */ 0xffff, /* 286f */ 0xffff, /* 2870 */ 0xffff, /* 2871 */ 0xffff, /* 2872 */ 0xffff, /* 2873 */ 0xffff, /* 2874 */ 0xffff, /* 2875 */ 0xffff, /* 2876 */ 0xffff, /* 2877 */ 0xffff, /* 2878 */ 0xffff, /* 2879 */ 0xffff, /* 287a */ 0xffff, /* 287b */ 0xffff, /* 287c */ 0xffff, /* 287d */ 0xffff, /* 287e */ 0xffff, /* 287f */ 0xffff, /* 2880 */ 0xffff, /* 2881 */ 0xffff, /* 2882 */ 0xffff, /* 2883 */ 0xffff, /* 2884 */ 0xffff, /* 2885 */ 0xffff, /* 2886 */ 0xffff, /* 2887 */ 0xffff, /* 2888 */ 0xffff, /* 2889 */ 0xffff, /* 288a */ 0xffff, /* 288b */ 0xffff, /* 288c */ 0xffff, /* 288d */ 0xffff, /* 288e */ 0xffff, /* 288f */ 0xffff, /* 2890 */ 0xffff, /* 2891 */ 0xffff, /* 2892 */ 0xffff, /* 2893 */ 0xffff, /* 2894 */ 0xffff, /* 2895 */ 0xffff, /* 2896 */ 0xffff, /* 2897 */ 0xffff, /* 2898 */ 0xffff, /* 2899 */ 0xffff, /* 289a */ 0xffff, /* 289b */ 0xffff, /* 289c */ 0xffff, /* 289d */ 0xffff, /* 289e */ 0xffff, /* 289f */ 0xffff, /* 28a0 */ 0xffff, /* 28a1 */ 0xffff, /* 28a2 */ 0xffff, /* 28a3 */ 0xffff, /* 28a4 */ 0xffff, /* 28a5 */ 0xffff, /* 28a6 */ 0xffff, /* 28a7 */ 0xffff, /* 28a8 */ 0xffff, /* 28a9 */ 0xffff, /* 28aa */ 0xffff, /* 28ab */ 0xffff, /* 28ac */ 0xffff, /* 28ad */ 0xffff, /* 28ae */ 0xffff, /* 28af */ 0xffff, /* 28b0 */ 0xffff, /* 28b1 */ 0xffff, /* 28b2 */ 0xffff, /* 28b3 */ 0xffff, /* 28b4 */ 0xffff, /* 28b5 */ 0xffff, /* 28b6 */ 0xffff, /* 28b7 */ 0xffff, /* 28b8 */ 0xffff, /* 28b9 */ 0xffff, /* 28ba */ 0xffff, /* 28bb */ 0xffff, /* 28bc */ 0xffff, /* 28bd */ 0xffff, /* 28be */ 0xffff, /* 28bf */ 0xffff, /* 28c0 */ 0xffff, /* 28c1 */ 0xffff, /* 28c2 */ 0xffff, /* 28c3 */ 0xffff, /* 28c4 */ 0xffff, /* 28c5 */ 0xffff, /* 28c6 */ 0xffff, /* 28c7 */ 0xffff, /* 28c8 */ 0xffff, /* 28c9 */ 0xffff, /* 28ca */ 0xffff, /* 28cb */ 0xffff, /* 28cc */ 0xffff, /* 28cd */ 0xffff, /* 28ce */ 0xffff, /* 28cf */ 0xffff, /* 28d0 */ 0xffff, /* 28d1 */ 0xffff, /* 28d2 */ 0xffff, /* 28d3 */ 0xffff, /* 28d4 */ 0xffff, /* 28d5 */ 0xffff, /* 28d6 */ 0xffff, /* 28d7 */ 0xffff, /* 28d8 */ 0xffff, /* 28d9 */ 0xffff, /* 28da */ 0xffff, /* 28db */ 0xffff, /* 28dc */ 0xffff, /* 28dd */ 0xffff, /* 28de */ 0xffff, /* 28df */ 0xffff, /* 28e0 */ 0xffff, /* 28e1 */ 0xffff, /* 28e2 */ 0xffff, /* 28e3 */ 0xffff, /* 28e4 */ 0xffff, /* 28e5 */ 0xffff, /* 28e6 */ 0xffff, /* 28e7 */ 0xffff, /* 28e8 */ 0xffff, /* 28e9 */ 0xffff, /* 28ea */ 0xffff, /* 28eb */ 0xffff, /* 28ec */ 0xffff, /* 28ed */ 0xffff, /* 28ee */ 0xffff, /* 28ef */ 0xffff, /* 28f0 */ 0xffff, /* 28f1 */ 0xffff, /* 28f2 */ 0xffff, /* 28f3 */ 0xffff, /* 28f4 */ 0xffff, /* 28f5 */ 0xffff, /* 28f6 */ 0xffff, /* 28f7 */ 0xffff, /* 28f8 */ 0xffff, /* 28f9 */ 0xffff, /* 28fa */ 0xffff, /* 28fb */ 0xffff, /* 28fc */ 0xffff, /* 28fd */ 0xffff, /* 28fe */ 0xffff, /* 28ff */ 0xffff, /* 2900 */ 0xffff, /* 2901 */ 0xffff, /* 2902 */ 0xffff, /* 2903 */ 0xffff, /* 2904 */ 0xffff, /* 2905 */ 0xffff, /* 2906 */ 0xffff, /* 2907 */ 0xffff, /* 2908 */ 0xffff, /* 2909 */ 0xffff, /* 290a */ 0xffff, /* 290b */ 0xffff, /* 290c */ 0xffff, /* 290d */ 0xffff, /* 290e */ 0xffff, /* 290f */ 0xffff, /* 2910 */ 0xffff, /* 2911 */ 0xffff, /* 2912 */ 0xffff, /* 2913 */ 0xffff, /* 2914 */ 0xffff, /* 2915 */ 0xffff, /* 2916 */ 0xffff, /* 2917 */ 0xffff, /* 2918 */ 0xffff, /* 2919 */ 0xffff, /* 291a */ 0xffff, /* 291b */ 0xffff, /* 291c */ 0xffff, /* 291d */ 0xffff, /* 291e */ 0xffff, /* 291f */ 0xffff, /* 2920 */ 0xffff, /* 2921 */ 0xffff, /* 2922 */ 0xffff, /* 2923 */ 0xffff, /* 2924 */ 0xffff, /* 2925 */ 0xffff, /* 2926 */ 0xffff, /* 2927 */ 0xffff, /* 2928 */ 0xffff, /* 2929 */ 0xffff, /* 292a */ 0xffff, /* 292b */ 0xffff, /* 292c */ 0xffff, /* 292d */ 0xffff, /* 292e */ 0xffff, /* 292f */ 0xffff, /* 2930 */ 0xffff, /* 2931 */ 0xffff, /* 2932 */ 0xffff, /* 2933 */ 0xffff, /* 2934 */ 0xffff, /* 2935 */ 0xffff, /* 2936 */ 0xffff, /* 2937 */ 0xffff, /* 2938 */ 0xffff, /* 2939 */ 0xffff, /* 293a */ 0xffff, /* 293b */ 0xffff, /* 293c */ 0xffff, /* 293d */ 0xffff, /* 293e */ 0xffff, /* 293f */ 0xffff, /* 2940 */ 0xffff, /* 2941 */ 0xffff, /* 2942 */ 0xffff, /* 2943 */ 0xffff, /* 2944 */ 0xffff, /* 2945 */ 0xffff, /* 2946 */ 0xffff, /* 2947 */ 0xffff, /* 2948 */ 0xffff, /* 2949 */ 0xffff, /* 294a */ 0xffff, /* 294b */ 0xffff, /* 294c */ 0xffff, /* 294d */ 0xffff, /* 294e */ 0xffff, /* 294f */ 0xffff, /* 2950 */ 0xffff, /* 2951 */ 0xffff, /* 2952 */ 0xffff, /* 2953 */ 0xffff, /* 2954 */ 0xffff, /* 2955 */ 0xffff, /* 2956 */ 0xffff, /* 2957 */ 0xffff, /* 2958 */ 0xffff, /* 2959 */ 0xffff, /* 295a */ 0xffff, /* 295b */ 0xffff, /* 295c */ 0xffff, /* 295d */ 0xffff, /* 295e */ 0xffff, /* 295f */ 0xffff, /* 2960 */ 0xffff, /* 2961 */ 0xffff, /* 2962 */ 0xffff, /* 2963 */ 0xffff, /* 2964 */ 0xffff, /* 2965 */ 0xffff, /* 2966 */ 0xffff, /* 2967 */ 0xffff, /* 2968 */ 0xffff, /* 2969 */ 0xffff, /* 296a */ 0xffff, /* 296b */ 0xffff, /* 296c */ 0xffff, /* 296d */ 0xffff, /* 296e */ 0xffff, /* 296f */ 0xffff, /* 2970 */ 0xffff, /* 2971 */ 0xffff, /* 2972 */ 0xffff, /* 2973 */ 0xffff, /* 2974 */ 0xffff, /* 2975 */ 0xffff, /* 2976 */ 0xffff, /* 2977 */ 0xffff, /* 2978 */ 0xffff, /* 2979 */ 0xffff, /* 297a */ 0xffff, /* 297b */ 0xffff, /* 297c */ 0xffff, /* 297d */ 0xffff, /* 297e */ 0xffff, /* 297f */ 0xffff, /* 2980 */ 0xffff, /* 2981 */ 0xffff, /* 2982 */ 0xffff, /* 2983 */ 0xffff, /* 2984 */ 0xffff, /* 2985 */ 0xffff, /* 2986 */ 0xffff, /* 2987 */ 0xffff, /* 2988 */ 0xffff, /* 2989 */ 0xffff, /* 298a */ 0xffff, /* 298b */ 0xffff, /* 298c */ 0xffff, /* 298d */ 0xffff, /* 298e */ 0xffff, /* 298f */ 0xffff, /* 2990 */ 0xffff, /* 2991 */ 0xffff, /* 2992 */ 0xffff, /* 2993 */ 0xffff, /* 2994 */ 0xffff, /* 2995 */ 0xffff, /* 2996 */ 0xffff, /* 2997 */ 0xffff, /* 2998 */ 0xffff, /* 2999 */ 0xffff, /* 299a */ 0xffff, /* 299b */ 0xffff, /* 299c */ 0xffff, /* 299d */ 0xffff, /* 299e */ 0xffff, /* 299f */ 0xffff, /* 29a0 */ 0xffff, /* 29a1 */ 0xffff, /* 29a2 */ 0xffff, /* 29a3 */ 0xffff, /* 29a4 */ 0xffff, /* 29a5 */ 0xffff, /* 29a6 */ 0xffff, /* 29a7 */ 0xffff, /* 29a8 */ 0xffff, /* 29a9 */ 0xffff, /* 29aa */ 0xffff, /* 29ab */ 0xffff, /* 29ac */ 0xffff, /* 29ad */ 0xffff, /* 29ae */ 0xffff, /* 29af */ 0xffff, /* 29b0 */ 0xffff, /* 29b1 */ 0xffff, /* 29b2 */ 0xffff, /* 29b3 */ 0xffff, /* 29b4 */ 0xffff, /* 29b5 */ 0xffff, /* 29b6 */ 0xffff, /* 29b7 */ 0xffff, /* 29b8 */ 0xffff, /* 29b9 */ 0xffff, /* 29ba */ 0xffff, /* 29bb */ 0xffff, /* 29bc */ 0xffff, /* 29bd */ 0xffff, /* 29be */ 0xffff, /* 29bf */ 0xffff, /* 29c0 */ 0xffff, /* 29c1 */ 0xffff, /* 29c2 */ 0xffff, /* 29c3 */ 0xffff, /* 29c4 */ 0xffff, /* 29c5 */ 0xffff, /* 29c6 */ 0xffff, /* 29c7 */ 0xffff, /* 29c8 */ 0xffff, /* 29c9 */ 0xffff, /* 29ca */ 0xffff, /* 29cb */ 0xffff, /* 29cc */ 0xffff, /* 29cd */ 0xffff, /* 29ce */ 0xffff, /* 29cf */ 0xffff, /* 29d0 */ 0xffff, /* 29d1 */ 0xffff, /* 29d2 */ 0xffff, /* 29d3 */ 0xffff, /* 29d4 */ 0xffff, /* 29d5 */ 0xffff, /* 29d6 */ 0xffff, /* 29d7 */ 0xffff, /* 29d8 */ 0xffff, /* 29d9 */ 0xffff, /* 29da */ 0xffff, /* 29db */ 0xffff, /* 29dc */ 0xffff, /* 29dd */ 0xffff, /* 29de */ 0xffff, /* 29df */ 0xffff, /* 29e0 */ 0xffff, /* 29e1 */ 0xffff, /* 29e2 */ 0xffff, /* 29e3 */ 0xffff, /* 29e4 */ 0xffff, /* 29e5 */ 0xffff, /* 29e6 */ 0xffff, /* 29e7 */ 0xffff, /* 29e8 */ 0xffff, /* 29e9 */ 0xffff, /* 29ea */ 0xffff, /* 29eb */ 0xffff, /* 29ec */ 0xffff, /* 29ed */ 0xffff, /* 29ee */ 0xffff, /* 29ef */ 0xffff, /* 29f0 */ 0xffff, /* 29f1 */ 0xffff, /* 29f2 */ 0xffff, /* 29f3 */ 0xffff, /* 29f4 */ 0xffff, /* 29f5 */ 0xffff, /* 29f6 */ 0xffff, /* 29f7 */ 0xffff, /* 29f8 */ 0xffff, /* 29f9 */ 0xffff, /* 29fa */ 0xffff, /* 29fb */ 0xffff, /* 29fc */ 0xffff, /* 29fd */ 0xffff, /* 29fe */ 0xffff, /* 29ff */ 0xffff, /* 2a00 */ 0xffff, /* 2a01 */ 0xffff, /* 2a02 */ 0xffff, /* 2a03 */ 0xffff, /* 2a04 */ 0xffff, /* 2a05 */ 0xffff, /* 2a06 */ 0xffff, /* 2a07 */ 0xffff, /* 2a08 */ 0xffff, /* 2a09 */ 0xffff, /* 2a0a */ 0xffff, /* 2a0b */ 0xffff, /* 2a0c */ 0xffff, /* 2a0d */ 0xffff, /* 2a0e */ 0xffff, /* 2a0f */ 0xffff, /* 2a10 */ 0xffff, /* 2a11 */ 0xffff, /* 2a12 */ 0xffff, /* 2a13 */ 0xffff, /* 2a14 */ 0xffff, /* 2a15 */ 0xffff, /* 2a16 */ 0xffff, /* 2a17 */ 0xffff, /* 2a18 */ 0xffff, /* 2a19 */ 0xffff, /* 2a1a */ 0xffff, /* 2a1b */ 0xffff, /* 2a1c */ 0xffff, /* 2a1d */ 0xffff, /* 2a1e */ 0xffff, /* 2a1f */ 0xffff, /* 2a20 */ 0xffff, /* 2a21 */ 0xffff, /* 2a22 */ 0xffff, /* 2a23 */ 0xffff, /* 2a24 */ 0xffff, /* 2a25 */ 0xffff, /* 2a26 */ 0xffff, /* 2a27 */ 0xffff, /* 2a28 */ 0xffff, /* 2a29 */ 0xffff, /* 2a2a */ 0xffff, /* 2a2b */ 0xffff, /* 2a2c */ 0xffff, /* 2a2d */ 0xffff, /* 2a2e */ 0xffff, /* 2a2f */ 0xffff, /* 2a30 */ 0xffff, /* 2a31 */ 0xffff, /* 2a32 */ 0xffff, /* 2a33 */ 0xffff, /* 2a34 */ 0xffff, /* 2a35 */ 0xffff, /* 2a36 */ 0xffff, /* 2a37 */ 0xffff, /* 2a38 */ 0xffff, /* 2a39 */ 0xffff, /* 2a3a */ 0xffff, /* 2a3b */ 0xffff, /* 2a3c */ 0xffff, /* 2a3d */ 0xffff, /* 2a3e */ 0xffff, /* 2a3f */ 0xffff, /* 2a40 */ 0xffff, /* 2a41 */ 0xffff, /* 2a42 */ 0xffff, /* 2a43 */ 0xffff, /* 2a44 */ 0xffff, /* 2a45 */ 0xffff, /* 2a46 */ 0xffff, /* 2a47 */ 0xffff, /* 2a48 */ 0xffff, /* 2a49 */ 0xffff, /* 2a4a */ 0xffff, /* 2a4b */ 0xffff, /* 2a4c */ 0xffff, /* 2a4d */ 0xffff, /* 2a4e */ 0xffff, /* 2a4f */ 0xffff, /* 2a50 */ 0xffff, /* 2a51 */ 0xffff, /* 2a52 */ 0xffff, /* 2a53 */ 0xffff, /* 2a54 */ 0xffff, /* 2a55 */ 0xffff, /* 2a56 */ 0xffff, /* 2a57 */ 0xffff, /* 2a58 */ 0xffff, /* 2a59 */ 0xffff, /* 2a5a */ 0xffff, /* 2a5b */ 0xffff, /* 2a5c */ 0xffff, /* 2a5d */ 0xffff, /* 2a5e */ 0xffff, /* 2a5f */ 0xffff, /* 2a60 */ 0xffff, /* 2a61 */ 0xffff, /* 2a62 */ 0xffff, /* 2a63 */ 0xffff, /* 2a64 */ 0xffff, /* 2a65 */ 0xffff, /* 2a66 */ 0xffff, /* 2a67 */ 0xffff, /* 2a68 */ 0xffff, /* 2a69 */ 0xffff, /* 2a6a */ 0xffff, /* 2a6b */ 0xffff, /* 2a6c */ 0xffff, /* 2a6d */ 0xffff, /* 2a6e */ 0xffff, /* 2a6f */ 0xffff, /* 2a70 */ 0xffff, /* 2a71 */ 0xffff, /* 2a72 */ 0xffff, /* 2a73 */ 0xffff, /* 2a74 */ 0xffff, /* 2a75 */ 0xffff, /* 2a76 */ 0xffff, /* 2a77 */ 0xffff, /* 2a78 */ 0xffff, /* 2a79 */ 0xffff, /* 2a7a */ 0xffff, /* 2a7b */ 0xffff, /* 2a7c */ 0xffff, /* 2a7d */ 0xffff, /* 2a7e */ 0xffff, /* 2a7f */ 0xffff, /* 2a80 */ 0xffff, /* 2a81 */ 0xffff, /* 2a82 */ 0xffff, /* 2a83 */ 0xffff, /* 2a84 */ 0xffff, /* 2a85 */ 0xffff, /* 2a86 */ 0xffff, /* 2a87 */ 0xffff, /* 2a88 */ 0xffff, /* 2a89 */ 0xffff, /* 2a8a */ 0xffff, /* 2a8b */ 0xffff, /* 2a8c */ 0xffff, /* 2a8d */ 0xffff, /* 2a8e */ 0xffff, /* 2a8f */ 0xffff, /* 2a90 */ 0xffff, /* 2a91 */ 0xffff, /* 2a92 */ 0xffff, /* 2a93 */ 0xffff, /* 2a94 */ 0xffff, /* 2a95 */ 0xffff, /* 2a96 */ 0xffff, /* 2a97 */ 0xffff, /* 2a98 */ 0xffff, /* 2a99 */ 0xffff, /* 2a9a */ 0xffff, /* 2a9b */ 0xffff, /* 2a9c */ 0xffff, /* 2a9d */ 0xffff, /* 2a9e */ 0xffff, /* 2a9f */ 0xffff, /* 2aa0 */ 0xffff, /* 2aa1 */ 0xffff, /* 2aa2 */ 0xffff, /* 2aa3 */ 0xffff, /* 2aa4 */ 0xffff, /* 2aa5 */ 0xffff, /* 2aa6 */ 0xffff, /* 2aa7 */ 0xffff, /* 2aa8 */ 0xffff, /* 2aa9 */ 0xffff, /* 2aaa */ 0xffff, /* 2aab */ 0xffff, /* 2aac */ 0xffff, /* 2aad */ 0xffff, /* 2aae */ 0xffff, /* 2aaf */ 0xffff, /* 2ab0 */ 0xffff, /* 2ab1 */ 0xffff, /* 2ab2 */ 0xffff, /* 2ab3 */ 0xffff, /* 2ab4 */ 0xffff, /* 2ab5 */ 0xffff, /* 2ab6 */ 0xffff, /* 2ab7 */ 0xffff, /* 2ab8 */ 0xffff, /* 2ab9 */ 0xffff, /* 2aba */ 0xffff, /* 2abb */ 0xffff, /* 2abc */ 0xffff, /* 2abd */ 0xffff, /* 2abe */ 0xffff, /* 2abf */ 0xffff, /* 2ac0 */ 0xffff, /* 2ac1 */ 0xffff, /* 2ac2 */ 0xffff, /* 2ac3 */ 0xffff, /* 2ac4 */ 0xffff, /* 2ac5 */ 0xffff, /* 2ac6 */ 0xffff, /* 2ac7 */ 0xffff, /* 2ac8 */ 0xffff, /* 2ac9 */ 0xffff, /* 2aca */ 0xffff, /* 2acb */ 0xffff, /* 2acc */ 0xffff, /* 2acd */ 0xffff, /* 2ace */ 0xffff, /* 2acf */ 0xffff, /* 2ad0 */ 0xffff, /* 2ad1 */ 0xffff, /* 2ad2 */ 0xffff, /* 2ad3 */ 0xffff, /* 2ad4 */ 0xffff, /* 2ad5 */ 0xffff, /* 2ad6 */ 0xffff, /* 2ad7 */ 0xffff, /* 2ad8 */ 0xffff, /* 2ad9 */ 0xffff, /* 2ada */ 0xffff, /* 2adb */ 0xffff, /* 2adc */ 0xffff, /* 2add */ 0xffff, /* 2ade */ 0xffff, /* 2adf */ 0xffff, /* 2ae0 */ 0xffff, /* 2ae1 */ 0xffff, /* 2ae2 */ 0xffff, /* 2ae3 */ 0xffff, /* 2ae4 */ 0xffff, /* 2ae5 */ 0xffff, /* 2ae6 */ 0xffff, /* 2ae7 */ 0xffff, /* 2ae8 */ 0xffff, /* 2ae9 */ 0xffff, /* 2aea */ 0xffff, /* 2aeb */ 0xffff, /* 2aec */ 0xffff, /* 2aed */ 0xffff, /* 2aee */ 0xffff, /* 2aef */ 0xffff, /* 2af0 */ 0xffff, /* 2af1 */ 0xffff, /* 2af2 */ 0xffff, /* 2af3 */ 0xffff, /* 2af4 */ 0xffff, /* 2af5 */ 0xffff, /* 2af6 */ 0xffff, /* 2af7 */ 0xffff, /* 2af8 */ 0xffff, /* 2af9 */ 0xffff, /* 2afa */ 0xffff, /* 2afb */ 0xffff, /* 2afc */ 0xffff, /* 2afd */ 0xffff, /* 2afe */ 0xffff, /* 2aff */ 0xffff, /* 2b00 */ 0xffff, /* 2b01 */ 0xffff, /* 2b02 */ 0xffff, /* 2b03 */ 0xffff, /* 2b04 */ 0xffff, /* 2b05 */ 0xffff, /* 2b06 */ 0xffff, /* 2b07 */ 0xffff, /* 2b08 */ 0xffff, /* 2b09 */ 0xffff, /* 2b0a */ 0xffff, /* 2b0b */ 0xffff, /* 2b0c */ 0xffff, /* 2b0d */ 0xffff, /* 2b0e */ 0xffff, /* 2b0f */ 0xffff, /* 2b10 */ 0xffff, /* 2b11 */ 0xffff, /* 2b12 */ 0xffff, /* 2b13 */ 0xffff, /* 2b14 */ 0xffff, /* 2b15 */ 0xffff, /* 2b16 */ 0xffff, /* 2b17 */ 0xffff, /* 2b18 */ 0xffff, /* 2b19 */ 0xffff, /* 2b1a */ 0xffff, /* 2b1b */ 0xffff, /* 2b1c */ 0xffff, /* 2b1d */ 0xffff, /* 2b1e */ 0xffff, /* 2b1f */ 0xffff, /* 2b20 */ 0xffff, /* 2b21 */ 0xffff, /* 2b22 */ 0xffff, /* 2b23 */ 0xffff, /* 2b24 */ 0xffff, /* 2b25 */ 0xffff, /* 2b26 */ 0xffff, /* 2b27 */ 0xffff, /* 2b28 */ 0xffff, /* 2b29 */ 0xffff, /* 2b2a */ 0xffff, /* 2b2b */ 0xffff, /* 2b2c */ 0xffff, /* 2b2d */ 0xffff, /* 2b2e */ 0xffff, /* 2b2f */ 0xffff, /* 2b30 */ 0xffff, /* 2b31 */ 0xffff, /* 2b32 */ 0xffff, /* 2b33 */ 0xffff, /* 2b34 */ 0xffff, /* 2b35 */ 0xffff, /* 2b36 */ 0xffff, /* 2b37 */ 0xffff, /* 2b38 */ 0xffff, /* 2b39 */ 0xffff, /* 2b3a */ 0xffff, /* 2b3b */ 0xffff, /* 2b3c */ 0xffff, /* 2b3d */ 0xffff, /* 2b3e */ 0xffff, /* 2b3f */ 0xffff, /* 2b40 */ 0xffff, /* 2b41 */ 0xffff, /* 2b42 */ 0xffff, /* 2b43 */ 0xffff, /* 2b44 */ 0xffff, /* 2b45 */ 0xffff, /* 2b46 */ 0xffff, /* 2b47 */ 0xffff, /* 2b48 */ 0xffff, /* 2b49 */ 0xffff, /* 2b4a */ 0xffff, /* 2b4b */ 0xffff, /* 2b4c */ 0xffff, /* 2b4d */ 0xffff, /* 2b4e */ 0xffff, /* 2b4f */ 0xffff, /* 2b50 */ 0xffff, /* 2b51 */ 0xffff, /* 2b52 */ 0xffff, /* 2b53 */ 0xffff, /* 2b54 */ 0xffff, /* 2b55 */ 0xffff, /* 2b56 */ 0xffff, /* 2b57 */ 0xffff, /* 2b58 */ 0xffff, /* 2b59 */ 0xffff, /* 2b5a */ 0xffff, /* 2b5b */ 0xffff, /* 2b5c */ 0xffff, /* 2b5d */ 0xffff, /* 2b5e */ 0xffff, /* 2b5f */ 0xffff, /* 2b60 */ 0xffff, /* 2b61 */ 0xffff, /* 2b62 */ 0xffff, /* 2b63 */ 0xffff, /* 2b64 */ 0xffff, /* 2b65 */ 0xffff, /* 2b66 */ 0xffff, /* 2b67 */ 0xffff, /* 2b68 */ 0xffff, /* 2b69 */ 0xffff, /* 2b6a */ 0xffff, /* 2b6b */ 0xffff, /* 2b6c */ 0xffff, /* 2b6d */ 0xffff, /* 2b6e */ 0xffff, /* 2b6f */ 0xffff, /* 2b70 */ 0xffff, /* 2b71 */ 0xffff, /* 2b72 */ 0xffff, /* 2b73 */ 0xffff, /* 2b74 */ 0xffff, /* 2b75 */ 0xffff, /* 2b76 */ 0xffff, /* 2b77 */ 0xffff, /* 2b78 */ 0xffff, /* 2b79 */ 0xffff, /* 2b7a */ 0xffff, /* 2b7b */ 0xffff, /* 2b7c */ 0xffff, /* 2b7d */ 0xffff, /* 2b7e */ 0xffff, /* 2b7f */ 0xffff, /* 2b80 */ 0xffff, /* 2b81 */ 0xffff, /* 2b82 */ 0xffff, /* 2b83 */ 0xffff, /* 2b84 */ 0xffff, /* 2b85 */ 0xffff, /* 2b86 */ 0xffff, /* 2b87 */ 0xffff, /* 2b88 */ 0xffff, /* 2b89 */ 0xffff, /* 2b8a */ 0xffff, /* 2b8b */ 0xffff, /* 2b8c */ 0xffff, /* 2b8d */ 0xffff, /* 2b8e */ 0xffff, /* 2b8f */ 0xffff, /* 2b90 */ 0xffff, /* 2b91 */ 0xffff, /* 2b92 */ 0xffff, /* 2b93 */ 0xffff, /* 2b94 */ 0xffff, /* 2b95 */ 0xffff, /* 2b96 */ 0xffff, /* 2b97 */ 0xffff, /* 2b98 */ 0xffff, /* 2b99 */ 0xffff, /* 2b9a */ 0xffff, /* 2b9b */ 0xffff, /* 2b9c */ 0xffff, /* 2b9d */ 0xffff, /* 2b9e */ 0xffff, /* 2b9f */ 0xffff, /* 2ba0 */ 0xffff, /* 2ba1 */ 0xffff, /* 2ba2 */ 0xffff, /* 2ba3 */ 0xffff, /* 2ba4 */ 0xffff, /* 2ba5 */ 0xffff, /* 2ba6 */ 0xffff, /* 2ba7 */ 0xffff, /* 2ba8 */ 0xffff, /* 2ba9 */ 0xffff, /* 2baa */ 0xffff, /* 2bab */ 0xffff, /* 2bac */ 0xffff, /* 2bad */ 0xffff, /* 2bae */ 0xffff, /* 2baf */ 0xffff, /* 2bb0 */ 0xffff, /* 2bb1 */ 0xffff, /* 2bb2 */ 0xffff, /* 2bb3 */ 0xffff, /* 2bb4 */ 0xffff, /* 2bb5 */ 0xffff, /* 2bb6 */ 0xffff, /* 2bb7 */ 0xffff, /* 2bb8 */ 0xffff, /* 2bb9 */ 0xffff, /* 2bba */ 0xffff, /* 2bbb */ 0xffff, /* 2bbc */ 0xffff, /* 2bbd */ 0xffff, /* 2bbe */ 0xffff, /* 2bbf */ 0xffff, /* 2bc0 */ 0xffff, /* 2bc1 */ 0xffff, /* 2bc2 */ 0xffff, /* 2bc3 */ 0xffff, /* 2bc4 */ 0xffff, /* 2bc5 */ 0xffff, /* 2bc6 */ 0xffff, /* 2bc7 */ 0xffff, /* 2bc8 */ 0xffff, /* 2bc9 */ 0xffff, /* 2bca */ 0xffff, /* 2bcb */ 0xffff, /* 2bcc */ 0xffff, /* 2bcd */ 0xffff, /* 2bce */ 0xffff, /* 2bcf */ 0xffff, /* 2bd0 */ 0xffff, /* 2bd1 */ 0xffff, /* 2bd2 */ 0xffff, /* 2bd3 */ 0xffff, /* 2bd4 */ 0xffff, /* 2bd5 */ 0xffff, /* 2bd6 */ 0xffff, /* 2bd7 */ 0xffff, /* 2bd8 */ 0xffff, /* 2bd9 */ 0xffff, /* 2bda */ 0xffff, /* 2bdb */ 0xffff, /* 2bdc */ 0xffff, /* 2bdd */ 0xffff, /* 2bde */ 0xffff, /* 2bdf */ 0xffff, /* 2be0 */ 0xffff, /* 2be1 */ 0xffff, /* 2be2 */ 0xffff, /* 2be3 */ 0xffff, /* 2be4 */ 0xffff, /* 2be5 */ 0xffff, /* 2be6 */ 0xffff, /* 2be7 */ 0xffff, /* 2be8 */ 0xffff, /* 2be9 */ 0xffff, /* 2bea */ 0xffff, /* 2beb */ 0xffff, /* 2bec */ 0xffff, /* 2bed */ 0xffff, /* 2bee */ 0xffff, /* 2bef */ 0xffff, /* 2bf0 */ 0xffff, /* 2bf1 */ 0xffff, /* 2bf2 */ 0xffff, /* 2bf3 */ 0xffff, /* 2bf4 */ 0xffff, /* 2bf5 */ 0xffff, /* 2bf6 */ 0xffff, /* 2bf7 */ 0xffff, /* 2bf8 */ 0xffff, /* 2bf9 */ 0xffff, /* 2bfa */ 0xffff, /* 2bfb */ 0xffff, /* 2bfc */ 0xffff, /* 2bfd */ 0xffff, /* 2bfe */ 0xffff, /* 2bff */ 0xffff, /* 2c00 */ 0xffff, /* 2c01 */ 0xffff, /* 2c02 */ 0xffff, /* 2c03 */ 0xffff, /* 2c04 */ 0xffff, /* 2c05 */ 0xffff, /* 2c06 */ 0xffff, /* 2c07 */ 0xffff, /* 2c08 */ 0xffff, /* 2c09 */ 0xffff, /* 2c0a */ 0xffff, /* 2c0b */ 0xffff, /* 2c0c */ 0xffff, /* 2c0d */ 0xffff, /* 2c0e */ 0xffff, /* 2c0f */ 0xffff, /* 2c10 */ 0xffff, /* 2c11 */ 0xffff, /* 2c12 */ 0xffff, /* 2c13 */ 0xffff, /* 2c14 */ 0xffff, /* 2c15 */ 0xffff, /* 2c16 */ 0xffff, /* 2c17 */ 0xffff, /* 2c18 */ 0xffff, /* 2c19 */ 0xffff, /* 2c1a */ 0xffff, /* 2c1b */ 0xffff, /* 2c1c */ 0xffff, /* 2c1d */ 0xffff, /* 2c1e */ 0xffff, /* 2c1f */ 0xffff, /* 2c20 */ 0xffff, /* 2c21 */ 0xffff, /* 2c22 */ 0xffff, /* 2c23 */ 0xffff, /* 2c24 */ 0xffff, /* 2c25 */ 0xffff, /* 2c26 */ 0xffff, /* 2c27 */ 0xffff, /* 2c28 */ 0xffff, /* 2c29 */ 0xffff, /* 2c2a */ 0xffff, /* 2c2b */ 0xffff, /* 2c2c */ 0xffff, /* 2c2d */ 0xffff, /* 2c2e */ 0xffff, /* 2c2f */ 0xffff, /* 2c30 */ 0xffff, /* 2c31 */ 0xffff, /* 2c32 */ 0xffff, /* 2c33 */ 0xffff, /* 2c34 */ 0xffff, /* 2c35 */ 0xffff, /* 2c36 */ 0xffff, /* 2c37 */ 0xffff, /* 2c38 */ 0xffff, /* 2c39 */ 0xffff, /* 2c3a */ 0xffff, /* 2c3b */ 0xffff, /* 2c3c */ 0xffff, /* 2c3d */ 0xffff, /* 2c3e */ 0xffff, /* 2c3f */ 0xffff, /* 2c40 */ 0xffff, /* 2c41 */ 0xffff, /* 2c42 */ 0xffff, /* 2c43 */ 0xffff, /* 2c44 */ 0xffff, /* 2c45 */ 0xffff, /* 2c46 */ 0xffff, /* 2c47 */ 0xffff, /* 2c48 */ 0xffff, /* 2c49 */ 0xffff, /* 2c4a */ 0xffff, /* 2c4b */ 0xffff, /* 2c4c */ 0xffff, /* 2c4d */ 0xffff, /* 2c4e */ 0xffff, /* 2c4f */ 0xffff, /* 2c50 */ 0xffff, /* 2c51 */ 0xffff, /* 2c52 */ 0xffff, /* 2c53 */ 0xffff, /* 2c54 */ 0xffff, /* 2c55 */ 0xffff, /* 2c56 */ 0xffff, /* 2c57 */ 0xffff, /* 2c58 */ 0xffff, /* 2c59 */ 0xffff, /* 2c5a */ 0xffff, /* 2c5b */ 0xffff, /* 2c5c */ 0xffff, /* 2c5d */ 0xffff, /* 2c5e */ 0xffff, /* 2c5f */ 0xffff, /* 2c60 */ 0xffff, /* 2c61 */ 0xffff, /* 2c62 */ 0xffff, /* 2c63 */ 0xffff, /* 2c64 */ 0xffff, /* 2c65 */ 0xffff, /* 2c66 */ 0xffff, /* 2c67 */ 0xffff, /* 2c68 */ 0xffff, /* 2c69 */ 0xffff, /* 2c6a */ 0xffff, /* 2c6b */ 0xffff, /* 2c6c */ 0xffff, /* 2c6d */ 0xffff, /* 2c6e */ 0xffff, /* 2c6f */ 0xffff, /* 2c70 */ 0xffff, /* 2c71 */ 0xffff, /* 2c72 */ 0xffff, /* 2c73 */ 0xffff, /* 2c74 */ 0xffff, /* 2c75 */ 0xffff, /* 2c76 */ 0xffff, /* 2c77 */ 0xffff, /* 2c78 */ 0xffff, /* 2c79 */ 0xffff, /* 2c7a */ 0xffff, /* 2c7b */ 0xffff, /* 2c7c */ 0xffff, /* 2c7d */ 0xffff, /* 2c7e */ 0xffff, /* 2c7f */ 0xffff, /* 2c80 */ 0xffff, /* 2c81 */ 0xffff, /* 2c82 */ 0xffff, /* 2c83 */ 0xffff, /* 2c84 */ 0xffff, /* 2c85 */ 0xffff, /* 2c86 */ 0xffff, /* 2c87 */ 0xffff, /* 2c88 */ 0xffff, /* 2c89 */ 0xffff, /* 2c8a */ 0xffff, /* 2c8b */ 0xffff, /* 2c8c */ 0xffff, /* 2c8d */ 0xffff, /* 2c8e */ 0xffff, /* 2c8f */ 0xffff, /* 2c90 */ 0xffff, /* 2c91 */ 0xffff, /* 2c92 */ 0xffff, /* 2c93 */ 0xffff, /* 2c94 */ 0xffff, /* 2c95 */ 0xffff, /* 2c96 */ 0xffff, /* 2c97 */ 0xffff, /* 2c98 */ 0xffff, /* 2c99 */ 0xffff, /* 2c9a */ 0xffff, /* 2c9b */ 0xffff, /* 2c9c */ 0xffff, /* 2c9d */ 0xffff, /* 2c9e */ 0xffff, /* 2c9f */ 0xffff, /* 2ca0 */ 0xffff, /* 2ca1 */ 0xffff, /* 2ca2 */ 0xffff, /* 2ca3 */ 0xffff, /* 2ca4 */ 0xffff, /* 2ca5 */ 0xffff, /* 2ca6 */ 0xffff, /* 2ca7 */ 0xffff, /* 2ca8 */ 0xffff, /* 2ca9 */ 0xffff, /* 2caa */ 0xffff, /* 2cab */ 0xffff, /* 2cac */ 0xffff, /* 2cad */ 0xffff, /* 2cae */ 0xffff, /* 2caf */ 0xffff, /* 2cb0 */ 0xffff, /* 2cb1 */ 0xffff, /* 2cb2 */ 0xffff, /* 2cb3 */ 0xffff, /* 2cb4 */ 0xffff, /* 2cb5 */ 0xffff, /* 2cb6 */ 0xffff, /* 2cb7 */ 0xffff, /* 2cb8 */ 0xffff, /* 2cb9 */ 0xffff, /* 2cba */ 0xffff, /* 2cbb */ 0xffff, /* 2cbc */ 0xffff, /* 2cbd */ 0xffff, /* 2cbe */ 0xffff, /* 2cbf */ 0xffff, /* 2cc0 */ 0xffff, /* 2cc1 */ 0xffff, /* 2cc2 */ 0xffff, /* 2cc3 */ 0xffff, /* 2cc4 */ 0xffff, /* 2cc5 */ 0xffff, /* 2cc6 */ 0xffff, /* 2cc7 */ 0xffff, /* 2cc8 */ 0xffff, /* 2cc9 */ 0xffff, /* 2cca */ 0xffff, /* 2ccb */ 0xffff, /* 2ccc */ 0xffff, /* 2ccd */ 0xffff, /* 2cce */ 0xffff, /* 2ccf */ 0xffff, /* 2cd0 */ 0xffff, /* 2cd1 */ 0xffff, /* 2cd2 */ 0xffff, /* 2cd3 */ 0xffff, /* 2cd4 */ 0xffff, /* 2cd5 */ 0xffff, /* 2cd6 */ 0xffff, /* 2cd7 */ 0xffff, /* 2cd8 */ 0xffff, /* 2cd9 */ 0xffff, /* 2cda */ 0xffff, /* 2cdb */ 0xffff, /* 2cdc */ 0xffff, /* 2cdd */ 0xffff, /* 2cde */ 0xffff, /* 2cdf */ 0xffff, /* 2ce0 */ 0xffff, /* 2ce1 */ 0xffff, /* 2ce2 */ 0xffff, /* 2ce3 */ 0xffff, /* 2ce4 */ 0xffff, /* 2ce5 */ 0xffff, /* 2ce6 */ 0xffff, /* 2ce7 */ 0xffff, /* 2ce8 */ 0xffff, /* 2ce9 */ 0xffff, /* 2cea */ 0xffff, /* 2ceb */ 0xffff, /* 2cec */ 0xffff, /* 2ced */ 0xffff, /* 2cee */ 0xffff, /* 2cef */ 0xffff, /* 2cf0 */ 0xffff, /* 2cf1 */ 0xffff, /* 2cf2 */ 0xffff, /* 2cf3 */ 0xffff, /* 2cf4 */ 0xffff, /* 2cf5 */ 0xffff, /* 2cf6 */ 0xffff, /* 2cf7 */ 0xffff, /* 2cf8 */ 0xffff, /* 2cf9 */ 0xffff, /* 2cfa */ 0xffff, /* 2cfb */ 0xffff, /* 2cfc */ 0xffff, /* 2cfd */ 0xffff, /* 2cfe */ 0xffff, /* 2cff */ 0xffff, /* 2d00 */ 0xffff, /* 2d01 */ 0xffff, /* 2d02 */ 0xffff, /* 2d03 */ 0xffff, /* 2d04 */ 0xffff, /* 2d05 */ 0xffff, /* 2d06 */ 0xffff, /* 2d07 */ 0xffff, /* 2d08 */ 0xffff, /* 2d09 */ 0xffff, /* 2d0a */ 0xffff, /* 2d0b */ 0xffff, /* 2d0c */ 0xffff, /* 2d0d */ 0xffff, /* 2d0e */ 0xffff, /* 2d0f */ 0xffff, /* 2d10 */ 0xffff, /* 2d11 */ 0xffff, /* 2d12 */ 0xffff, /* 2d13 */ 0xffff, /* 2d14 */ 0xffff, /* 2d15 */ 0xffff, /* 2d16 */ 0xffff, /* 2d17 */ 0xffff, /* 2d18 */ 0xffff, /* 2d19 */ 0xffff, /* 2d1a */ 0xffff, /* 2d1b */ 0xffff, /* 2d1c */ 0xffff, /* 2d1d */ 0xffff, /* 2d1e */ 0xffff, /* 2d1f */ 0xffff, /* 2d20 */ 0xffff, /* 2d21 */ 0xffff, /* 2d22 */ 0xffff, /* 2d23 */ 0xffff, /* 2d24 */ 0xffff, /* 2d25 */ 0xffff, /* 2d26 */ 0xffff, /* 2d27 */ 0xffff, /* 2d28 */ 0xffff, /* 2d29 */ 0xffff, /* 2d2a */ 0xffff, /* 2d2b */ 0xffff, /* 2d2c */ 0xffff, /* 2d2d */ 0xffff, /* 2d2e */ 0xffff, /* 2d2f */ 0xffff, /* 2d30 */ 0xffff, /* 2d31 */ 0xffff, /* 2d32 */ 0xffff, /* 2d33 */ 0xffff, /* 2d34 */ 0xffff, /* 2d35 */ 0xffff, /* 2d36 */ 0xffff, /* 2d37 */ 0xffff, /* 2d38 */ 0xffff, /* 2d39 */ 0xffff, /* 2d3a */ 0xffff, /* 2d3b */ 0xffff, /* 2d3c */ 0xffff, /* 2d3d */ 0xffff, /* 2d3e */ 0xffff, /* 2d3f */ 0xffff, /* 2d40 */ 0xffff, /* 2d41 */ 0xffff, /* 2d42 */ 0xffff, /* 2d43 */ 0xffff, /* 2d44 */ 0xffff, /* 2d45 */ 0xffff, /* 2d46 */ 0xffff, /* 2d47 */ 0xffff, /* 2d48 */ 0xffff, /* 2d49 */ 0xffff, /* 2d4a */ 0xffff, /* 2d4b */ 0xffff, /* 2d4c */ 0xffff, /* 2d4d */ 0xffff, /* 2d4e */ 0xffff, /* 2d4f */ 0xffff, /* 2d50 */ 0xffff, /* 2d51 */ 0xffff, /* 2d52 */ 0xffff, /* 2d53 */ 0xffff, /* 2d54 */ 0xffff, /* 2d55 */ 0xffff, /* 2d56 */ 0xffff, /* 2d57 */ 0xffff, /* 2d58 */ 0xffff, /* 2d59 */ 0xffff, /* 2d5a */ 0xffff, /* 2d5b */ 0xffff, /* 2d5c */ 0xffff, /* 2d5d */ 0xffff, /* 2d5e */ 0xffff, /* 2d5f */ 0xffff, /* 2d60 */ 0xffff, /* 2d61 */ 0xffff, /* 2d62 */ 0xffff, /* 2d63 */ 0xffff, /* 2d64 */ 0xffff, /* 2d65 */ 0xffff, /* 2d66 */ 0xffff, /* 2d67 */ 0xffff, /* 2d68 */ 0xffff, /* 2d69 */ 0xffff, /* 2d6a */ 0xffff, /* 2d6b */ 0xffff, /* 2d6c */ 0xffff, /* 2d6d */ 0xffff, /* 2d6e */ 0xffff, /* 2d6f */ 0xffff, /* 2d70 */ 0xffff, /* 2d71 */ 0xffff, /* 2d72 */ 0xffff, /* 2d73 */ 0xffff, /* 2d74 */ 0xffff, /* 2d75 */ 0xffff, /* 2d76 */ 0xffff, /* 2d77 */ 0xffff, /* 2d78 */ 0xffff, /* 2d79 */ 0xffff, /* 2d7a */ 0xffff, /* 2d7b */ 0xffff, /* 2d7c */ 0xffff, /* 2d7d */ 0xffff, /* 2d7e */ 0xffff, /* 2d7f */ 0xffff, /* 2d80 */ 0xffff, /* 2d81 */ 0xffff, /* 2d82 */ 0xffff, /* 2d83 */ 0xffff, /* 2d84 */ 0xffff, /* 2d85 */ 0xffff, /* 2d86 */ 0xffff, /* 2d87 */ 0xffff, /* 2d88 */ 0xffff, /* 2d89 */ 0xffff, /* 2d8a */ 0xffff, /* 2d8b */ 0xffff, /* 2d8c */ 0xffff, /* 2d8d */ 0xffff, /* 2d8e */ 0xffff, /* 2d8f */ 0xffff, /* 2d90 */ 0xffff, /* 2d91 */ 0xffff, /* 2d92 */ 0xffff, /* 2d93 */ 0xffff, /* 2d94 */ 0xffff, /* 2d95 */ 0xffff, /* 2d96 */ 0xffff, /* 2d97 */ 0xffff, /* 2d98 */ 0xffff, /* 2d99 */ 0xffff, /* 2d9a */ 0xffff, /* 2d9b */ 0xffff, /* 2d9c */ 0xffff, /* 2d9d */ 0xffff, /* 2d9e */ 0xffff, /* 2d9f */ 0xffff, /* 2da0 */ 0xffff, /* 2da1 */ 0xffff, /* 2da2 */ 0xffff, /* 2da3 */ 0xffff, /* 2da4 */ 0xffff, /* 2da5 */ 0xffff, /* 2da6 */ 0xffff, /* 2da7 */ 0xffff, /* 2da8 */ 0xffff, /* 2da9 */ 0xffff, /* 2daa */ 0xffff, /* 2dab */ 0xffff, /* 2dac */ 0xffff, /* 2dad */ 0xffff, /* 2dae */ 0xffff, /* 2daf */ 0xffff, /* 2db0 */ 0xffff, /* 2db1 */ 0xffff, /* 2db2 */ 0xffff, /* 2db3 */ 0xffff, /* 2db4 */ 0xffff, /* 2db5 */ 0xffff, /* 2db6 */ 0xffff, /* 2db7 */ 0xffff, /* 2db8 */ 0xffff, /* 2db9 */ 0xffff, /* 2dba */ 0xffff, /* 2dbb */ 0xffff, /* 2dbc */ 0xffff, /* 2dbd */ 0xffff, /* 2dbe */ 0xffff, /* 2dbf */ 0xffff, /* 2dc0 */ 0xffff, /* 2dc1 */ 0xffff, /* 2dc2 */ 0xffff, /* 2dc3 */ 0xffff, /* 2dc4 */ 0xffff, /* 2dc5 */ 0xffff, /* 2dc6 */ 0xffff, /* 2dc7 */ 0xffff, /* 2dc8 */ 0xffff, /* 2dc9 */ 0xffff, /* 2dca */ 0xffff, /* 2dcb */ 0xffff, /* 2dcc */ 0xffff, /* 2dcd */ 0xffff, /* 2dce */ 0xffff, /* 2dcf */ 0xffff, /* 2dd0 */ 0xffff, /* 2dd1 */ 0xffff, /* 2dd2 */ 0xffff, /* 2dd3 */ 0xffff, /* 2dd4 */ 0xffff, /* 2dd5 */ 0xffff, /* 2dd6 */ 0xffff, /* 2dd7 */ 0xffff, /* 2dd8 */ 0xffff, /* 2dd9 */ 0xffff, /* 2dda */ 0xffff, /* 2ddb */ 0xffff, /* 2ddc */ 0xffff, /* 2ddd */ 0xffff, /* 2dde */ 0xffff, /* 2ddf */ 0xffff, /* 2de0 */ 0xffff, /* 2de1 */ 0xffff, /* 2de2 */ 0xffff, /* 2de3 */ 0xffff, /* 2de4 */ 0xffff, /* 2de5 */ 0xffff, /* 2de6 */ 0xffff, /* 2de7 */ 0xffff, /* 2de8 */ 0xffff, /* 2de9 */ 0xffff, /* 2dea */ 0xffff, /* 2deb */ 0xffff, /* 2dec */ 0xffff, /* 2ded */ 0xffff, /* 2dee */ 0xffff, /* 2def */ 0xffff, /* 2df0 */ 0xffff, /* 2df1 */ 0xffff, /* 2df2 */ 0xffff, /* 2df3 */ 0xffff, /* 2df4 */ 0xffff, /* 2df5 */ 0xffff, /* 2df6 */ 0xffff, /* 2df7 */ 0xffff, /* 2df8 */ 0xffff, /* 2df9 */ 0xffff, /* 2dfa */ 0xffff, /* 2dfb */ 0xffff, /* 2dfc */ 0xffff, /* 2dfd */ 0xffff, /* 2dfe */ 0xffff, /* 2dff */ 0xffff, /* 2e00 */ 0xffff, /* 2e01 */ 0xffff, /* 2e02 */ 0xffff, /* 2e03 */ 0xffff, /* 2e04 */ 0xffff, /* 2e05 */ 0xffff, /* 2e06 */ 0xffff, /* 2e07 */ 0xffff, /* 2e08 */ 0xffff, /* 2e09 */ 0xffff, /* 2e0a */ 0xffff, /* 2e0b */ 0xffff, /* 2e0c */ 0xffff, /* 2e0d */ 0xffff, /* 2e0e */ 0xffff, /* 2e0f */ 0xffff, /* 2e10 */ 0xffff, /* 2e11 */ 0xffff, /* 2e12 */ 0xffff, /* 2e13 */ 0xffff, /* 2e14 */ 0xffff, /* 2e15 */ 0xffff, /* 2e16 */ 0xffff, /* 2e17 */ 0xffff, /* 2e18 */ 0xffff, /* 2e19 */ 0xffff, /* 2e1a */ 0xffff, /* 2e1b */ 0xffff, /* 2e1c */ 0xffff, /* 2e1d */ 0xffff, /* 2e1e */ 0xffff, /* 2e1f */ 0xffff, /* 2e20 */ 0xffff, /* 2e21 */ 0xffff, /* 2e22 */ 0xffff, /* 2e23 */ 0xffff, /* 2e24 */ 0xffff, /* 2e25 */ 0xffff, /* 2e26 */ 0xffff, /* 2e27 */ 0xffff, /* 2e28 */ 0xffff, /* 2e29 */ 0xffff, /* 2e2a */ 0xffff, /* 2e2b */ 0xffff, /* 2e2c */ 0xffff, /* 2e2d */ 0xffff, /* 2e2e */ 0xffff, /* 2e2f */ 0xffff, /* 2e30 */ 0xffff, /* 2e31 */ 0xffff, /* 2e32 */ 0xffff, /* 2e33 */ 0xffff, /* 2e34 */ 0xffff, /* 2e35 */ 0xffff, /* 2e36 */ 0xffff, /* 2e37 */ 0xffff, /* 2e38 */ 0xffff, /* 2e39 */ 0xffff, /* 2e3a */ 0xffff, /* 2e3b */ 0xffff, /* 2e3c */ 0xffff, /* 2e3d */ 0xffff, /* 2e3e */ 0xffff, /* 2e3f */ 0xffff, /* 2e40 */ 0xffff, /* 2e41 */ 0xffff, /* 2e42 */ 0xffff, /* 2e43 */ 0xffff, /* 2e44 */ 0xffff, /* 2e45 */ 0xffff, /* 2e46 */ 0xffff, /* 2e47 */ 0xffff, /* 2e48 */ 0xffff, /* 2e49 */ 0xffff, /* 2e4a */ 0xffff, /* 2e4b */ 0xffff, /* 2e4c */ 0xffff, /* 2e4d */ 0xffff, /* 2e4e */ 0xffff, /* 2e4f */ 0xffff, /* 2e50 */ 0xffff, /* 2e51 */ 0xffff, /* 2e52 */ 0xffff, /* 2e53 */ 0xffff, /* 2e54 */ 0xffff, /* 2e55 */ 0xffff, /* 2e56 */ 0xffff, /* 2e57 */ 0xffff, /* 2e58 */ 0xffff, /* 2e59 */ 0xffff, /* 2e5a */ 0xffff, /* 2e5b */ 0xffff, /* 2e5c */ 0xffff, /* 2e5d */ 0xffff, /* 2e5e */ 0xffff, /* 2e5f */ 0xffff, /* 2e60 */ 0xffff, /* 2e61 */ 0xffff, /* 2e62 */ 0xffff, /* 2e63 */ 0xffff, /* 2e64 */ 0xffff, /* 2e65 */ 0xffff, /* 2e66 */ 0xffff, /* 2e67 */ 0xffff, /* 2e68 */ 0xffff, /* 2e69 */ 0xffff, /* 2e6a */ 0xffff, /* 2e6b */ 0xffff, /* 2e6c */ 0xffff, /* 2e6d */ 0xffff, /* 2e6e */ 0xffff, /* 2e6f */ 0xffff, /* 2e70 */ 0xffff, /* 2e71 */ 0xffff, /* 2e72 */ 0xffff, /* 2e73 */ 0xffff, /* 2e74 */ 0xffff, /* 2e75 */ 0xffff, /* 2e76 */ 0xffff, /* 2e77 */ 0xffff, /* 2e78 */ 0xffff, /* 2e79 */ 0xffff, /* 2e7a */ 0xffff, /* 2e7b */ 0xffff, /* 2e7c */ 0xffff, /* 2e7d */ 0xffff, /* 2e7e */ 0xffff, /* 2e7f */ 0xffff, /* 2e80 */ 0xffff, /* 2e81 */ 0xffff, /* 2e82 */ 0xffff, /* 2e83 */ 0xffff, /* 2e84 */ 0xffff, /* 2e85 */ 0xffff, /* 2e86 */ 0xffff, /* 2e87 */ 0xffff, /* 2e88 */ 0xffff, /* 2e89 */ 0xffff, /* 2e8a */ 0xffff, /* 2e8b */ 0xffff, /* 2e8c */ 0xffff, /* 2e8d */ 0xffff, /* 2e8e */ 0xffff, /* 2e8f */ 0xffff, /* 2e90 */ 0xffff, /* 2e91 */ 0xffff, /* 2e92 */ 0xffff, /* 2e93 */ 0xffff, /* 2e94 */ 0xffff, /* 2e95 */ 0xffff, /* 2e96 */ 0xffff, /* 2e97 */ 0xffff, /* 2e98 */ 0xffff, /* 2e99 */ 0xffff, /* 2e9a */ 0xffff, /* 2e9b */ 0xffff, /* 2e9c */ 0xffff, /* 2e9d */ 0xffff, /* 2e9e */ 0xffff, /* 2e9f */ 0xffff, /* 2ea0 */ 0xffff, /* 2ea1 */ 0xffff, /* 2ea2 */ 0xffff, /* 2ea3 */ 0xffff, /* 2ea4 */ 0xffff, /* 2ea5 */ 0xffff, /* 2ea6 */ 0xffff, /* 2ea7 */ 0xffff, /* 2ea8 */ 0xffff, /* 2ea9 */ 0xffff, /* 2eaa */ 0xffff, /* 2eab */ 0xffff, /* 2eac */ 0xffff, /* 2ead */ 0xffff, /* 2eae */ 0xffff, /* 2eaf */ 0xffff, /* 2eb0 */ 0xffff, /* 2eb1 */ 0xffff, /* 2eb2 */ 0xffff, /* 2eb3 */ 0xffff, /* 2eb4 */ 0xffff, /* 2eb5 */ 0xffff, /* 2eb6 */ 0xffff, /* 2eb7 */ 0xffff, /* 2eb8 */ 0xffff, /* 2eb9 */ 0xffff, /* 2eba */ 0xffff, /* 2ebb */ 0xffff, /* 2ebc */ 0xffff, /* 2ebd */ 0xffff, /* 2ebe */ 0xffff, /* 2ebf */ 0xffff, /* 2ec0 */ 0xffff, /* 2ec1 */ 0xffff, /* 2ec2 */ 0xffff, /* 2ec3 */ 0xffff, /* 2ec4 */ 0xffff, /* 2ec5 */ 0xffff, /* 2ec6 */ 0xffff, /* 2ec7 */ 0xffff, /* 2ec8 */ 0xffff, /* 2ec9 */ 0xffff, /* 2eca */ 0xffff, /* 2ecb */ 0xffff, /* 2ecc */ 0xffff, /* 2ecd */ 0xffff, /* 2ece */ 0xffff, /* 2ecf */ 0xffff, /* 2ed0 */ 0xffff, /* 2ed1 */ 0xffff, /* 2ed2 */ 0xffff, /* 2ed3 */ 0xffff, /* 2ed4 */ 0xffff, /* 2ed5 */ 0xffff, /* 2ed6 */ 0xffff, /* 2ed7 */ 0xffff, /* 2ed8 */ 0xffff, /* 2ed9 */ 0xffff, /* 2eda */ 0xffff, /* 2edb */ 0xffff, /* 2edc */ 0xffff, /* 2edd */ 0xffff, /* 2ede */ 0xffff, /* 2edf */ 0xffff, /* 2ee0 */ 0xffff, /* 2ee1 */ 0xffff, /* 2ee2 */ 0xffff, /* 2ee3 */ 0xffff, /* 2ee4 */ 0xffff, /* 2ee5 */ 0xffff, /* 2ee6 */ 0xffff, /* 2ee7 */ 0xffff, /* 2ee8 */ 0xffff, /* 2ee9 */ 0xffff, /* 2eea */ 0xffff, /* 2eeb */ 0xffff, /* 2eec */ 0xffff, /* 2eed */ 0xffff, /* 2eee */ 0xffff, /* 2eef */ 0xffff, /* 2ef0 */ 0xffff, /* 2ef1 */ 0xffff, /* 2ef2 */ 0xffff, /* 2ef3 */ 0xffff, /* 2ef4 */ 0xffff, /* 2ef5 */ 0xffff, /* 2ef6 */ 0xffff, /* 2ef7 */ 0xffff, /* 2ef8 */ 0xffff, /* 2ef9 */ 0xffff, /* 2efa */ 0xffff, /* 2efb */ 0xffff, /* 2efc */ 0xffff, /* 2efd */ 0xffff, /* 2efe */ 0xffff, /* 2eff */ 0xffff, /* 2f00 */ 0xffff, /* 2f01 */ 0xffff, /* 2f02 */ 0xffff, /* 2f03 */ 0xffff, /* 2f04 */ 0xffff, /* 2f05 */ 0xffff, /* 2f06 */ 0xffff, /* 2f07 */ 0xffff, /* 2f08 */ 0xffff, /* 2f09 */ 0xffff, /* 2f0a */ 0xffff, /* 2f0b */ 0xffff, /* 2f0c */ 0xffff, /* 2f0d */ 0xffff, /* 2f0e */ 0xffff, /* 2f0f */ 0xffff, /* 2f10 */ 0xffff, /* 2f11 */ 0xffff, /* 2f12 */ 0xffff, /* 2f13 */ 0xffff, /* 2f14 */ 0xffff, /* 2f15 */ 0xffff, /* 2f16 */ 0xffff, /* 2f17 */ 0xffff, /* 2f18 */ 0xffff, /* 2f19 */ 0xffff, /* 2f1a */ 0xffff, /* 2f1b */ 0xffff, /* 2f1c */ 0xffff, /* 2f1d */ 0xffff, /* 2f1e */ 0xffff, /* 2f1f */ 0xffff, /* 2f20 */ 0xffff, /* 2f21 */ 0xffff, /* 2f22 */ 0xffff, /* 2f23 */ 0xffff, /* 2f24 */ 0xffff, /* 2f25 */ 0xffff, /* 2f26 */ 0xffff, /* 2f27 */ 0xffff, /* 2f28 */ 0xffff, /* 2f29 */ 0xffff, /* 2f2a */ 0xffff, /* 2f2b */ 0xffff, /* 2f2c */ 0xffff, /* 2f2d */ 0xffff, /* 2f2e */ 0xffff, /* 2f2f */ 0xffff, /* 2f30 */ 0xffff, /* 2f31 */ 0xffff, /* 2f32 */ 0xffff, /* 2f33 */ 0xffff, /* 2f34 */ 0xffff, /* 2f35 */ 0xffff, /* 2f36 */ 0xffff, /* 2f37 */ 0xffff, /* 2f38 */ 0xffff, /* 2f39 */ 0xffff, /* 2f3a */ 0xffff, /* 2f3b */ 0xffff, /* 2f3c */ 0xffff, /* 2f3d */ 0xffff, /* 2f3e */ 0xffff, /* 2f3f */ 0xffff, /* 2f40 */ 0xffff, /* 2f41 */ 0xffff, /* 2f42 */ 0xffff, /* 2f43 */ 0xffff, /* 2f44 */ 0xffff, /* 2f45 */ 0xffff, /* 2f46 */ 0xffff, /* 2f47 */ 0xffff, /* 2f48 */ 0xffff, /* 2f49 */ 0xffff, /* 2f4a */ 0xffff, /* 2f4b */ 0xffff, /* 2f4c */ 0xffff, /* 2f4d */ 0xffff, /* 2f4e */ 0xffff, /* 2f4f */ 0xffff, /* 2f50 */ 0xffff, /* 2f51 */ 0xffff, /* 2f52 */ 0xffff, /* 2f53 */ 0xffff, /* 2f54 */ 0xffff, /* 2f55 */ 0xffff, /* 2f56 */ 0xffff, /* 2f57 */ 0xffff, /* 2f58 */ 0xffff, /* 2f59 */ 0xffff, /* 2f5a */ 0xffff, /* 2f5b */ 0xffff, /* 2f5c */ 0xffff, /* 2f5d */ 0xffff, /* 2f5e */ 0xffff, /* 2f5f */ 0xffff, /* 2f60 */ 0xffff, /* 2f61 */ 0xffff, /* 2f62 */ 0xffff, /* 2f63 */ 0xffff, /* 2f64 */ 0xffff, /* 2f65 */ 0xffff, /* 2f66 */ 0xffff, /* 2f67 */ 0xffff, /* 2f68 */ 0xffff, /* 2f69 */ 0xffff, /* 2f6a */ 0xffff, /* 2f6b */ 0xffff, /* 2f6c */ 0xffff, /* 2f6d */ 0xffff, /* 2f6e */ 0xffff, /* 2f6f */ 0xffff, /* 2f70 */ 0xffff, /* 2f71 */ 0xffff, /* 2f72 */ 0xffff, /* 2f73 */ 0xffff, /* 2f74 */ 0xffff, /* 2f75 */ 0xffff, /* 2f76 */ 0xffff, /* 2f77 */ 0xffff, /* 2f78 */ 0xffff, /* 2f79 */ 0xffff, /* 2f7a */ 0xffff, /* 2f7b */ 0xffff, /* 2f7c */ 0xffff, /* 2f7d */ 0xffff, /* 2f7e */ 0xffff, /* 2f7f */ 0xffff, /* 2f80 */ 0xffff, /* 2f81 */ 0xffff, /* 2f82 */ 0xffff, /* 2f83 */ 0xffff, /* 2f84 */ 0xffff, /* 2f85 */ 0xffff, /* 2f86 */ 0xffff, /* 2f87 */ 0xffff, /* 2f88 */ 0xffff, /* 2f89 */ 0xffff, /* 2f8a */ 0xffff, /* 2f8b */ 0xffff, /* 2f8c */ 0xffff, /* 2f8d */ 0xffff, /* 2f8e */ 0xffff, /* 2f8f */ 0xffff, /* 2f90 */ 0xffff, /* 2f91 */ 0xffff, /* 2f92 */ 0xffff, /* 2f93 */ 0xffff, /* 2f94 */ 0xffff, /* 2f95 */ 0xffff, /* 2f96 */ 0xffff, /* 2f97 */ 0xffff, /* 2f98 */ 0xffff, /* 2f99 */ 0xffff, /* 2f9a */ 0xffff, /* 2f9b */ 0xffff, /* 2f9c */ 0xffff, /* 2f9d */ 0xffff, /* 2f9e */ 0xffff, /* 2f9f */ 0xffff, /* 2fa0 */ 0xffff, /* 2fa1 */ 0xffff, /* 2fa2 */ 0xffff, /* 2fa3 */ 0xffff, /* 2fa4 */ 0xffff, /* 2fa5 */ 0xffff, /* 2fa6 */ 0xffff, /* 2fa7 */ 0xffff, /* 2fa8 */ 0xffff, /* 2fa9 */ 0xffff, /* 2faa */ 0xffff, /* 2fab */ 0xffff, /* 2fac */ 0xffff, /* 2fad */ 0xffff, /* 2fae */ 0xffff, /* 2faf */ 0xffff, /* 2fb0 */ 0xffff, /* 2fb1 */ 0xffff, /* 2fb2 */ 0xffff, /* 2fb3 */ 0xffff, /* 2fb4 */ 0xffff, /* 2fb5 */ 0xffff, /* 2fb6 */ 0xffff, /* 2fb7 */ 0xffff, /* 2fb8 */ 0xffff, /* 2fb9 */ 0xffff, /* 2fba */ 0xffff, /* 2fbb */ 0xffff, /* 2fbc */ 0xffff, /* 2fbd */ 0xffff, /* 2fbe */ 0xffff, /* 2fbf */ 0xffff, /* 2fc0 */ 0xffff, /* 2fc1 */ 0xffff, /* 2fc2 */ 0xffff, /* 2fc3 */ 0xffff, /* 2fc4 */ 0xffff, /* 2fc5 */ 0xffff, /* 2fc6 */ 0xffff, /* 2fc7 */ 0xffff, /* 2fc8 */ 0xffff, /* 2fc9 */ 0xffff, /* 2fca */ 0xffff, /* 2fcb */ 0xffff, /* 2fcc */ 0xffff, /* 2fcd */ 0xffff, /* 2fce */ 0xffff, /* 2fcf */ 0xffff, /* 2fd0 */ 0xffff, /* 2fd1 */ 0xffff, /* 2fd2 */ 0xffff, /* 2fd3 */ 0xffff, /* 2fd4 */ 0xffff, /* 2fd5 */ 0xffff, /* 2fd6 */ 0xffff, /* 2fd7 */ 0xffff, /* 2fd8 */ 0xffff, /* 2fd9 */ 0xffff, /* 2fda */ 0xffff, /* 2fdb */ 0xffff, /* 2fdc */ 0xffff, /* 2fdd */ 0xffff, /* 2fde */ 0xffff, /* 2fdf */ 0xffff, /* 2fe0 */ 0xffff, /* 2fe1 */ 0xffff, /* 2fe2 */ 0xffff, /* 2fe3 */ 0xffff, /* 2fe4 */ 0xffff, /* 2fe5 */ 0xffff, /* 2fe6 */ 0xffff, /* 2fe7 */ 0xffff, /* 2fe8 */ 0xffff, /* 2fe9 */ 0xffff, /* 2fea */ 0xffff, /* 2feb */ 0xffff, /* 2fec */ 0xffff, /* 2fed */ 0xffff, /* 2fee */ 0xffff, /* 2fef */ 0xffff, /* 2ff0 */ 0xffff, /* 2ff1 */ 0xffff, /* 2ff2 */ 0xffff, /* 2ff3 */ 0xffff, /* 2ff4 */ 0xffff, /* 2ff5 */ 0xffff, /* 2ff6 */ 0xffff, /* 2ff7 */ 0xffff, /* 2ff8 */ 0xffff, /* 2ff9 */ 0xffff, /* 2ffa */ 0xffff, /* 2ffb */ 0xffff, /* 2ffc */ 0xffff, /* 2ffd */ 0xffff, /* 2ffe */ 0xffff, /* 2fff */ 0xffff, /* 3000 */ 0xffff, /* 3001 */ 0xffff, /* 3002 */ 0xffff, /* 3003 */ 0xffff, /* 3004 */ 0xffff, /* 3005 */ 0xffff, /* 3006 */ 0xffff, /* 3007 */ 0xffff, /* 3008 */ 0xffff, /* 3009 */ 0xffff, /* 300a */ 0xffff, /* 300b */ 0xffff, /* 300c */ 0xffff, /* 300d */ 0xffff, /* 300e */ 0xffff, /* 300f */ 0xffff, /* 3010 */ 0xffff, /* 3011 */ 0xffff, /* 3012 */ 0xffff, /* 3013 */ 0xffff, /* 3014 */ 0xffff, /* 3015 */ 0xffff, /* 3016 */ 0xffff, /* 3017 */ 0xffff, /* 3018 */ 0xffff, /* 3019 */ 0xffff, /* 301a */ 0xffff, /* 301b */ 0xffff, /* 301c */ 0xffff, /* 301d */ 0xffff, /* 301e */ 0xffff, /* 301f */ 0xffff, /* 3020 */ 0xffff, /* 3021 */ 0xffff, /* 3022 */ 0xffff, /* 3023 */ 0xffff, /* 3024 */ 0xffff, /* 3025 */ 0xffff, /* 3026 */ 0xffff, /* 3027 */ 0xffff, /* 3028 */ 0xffff, /* 3029 */ 0xffff, /* 302a */ 0xffff, /* 302b */ 0xffff, /* 302c */ 0xffff, /* 302d */ 0xffff, /* 302e */ 0xffff, /* 302f */ 0xffff, /* 3030 */ 0xffff, /* 3031 */ 0xffff, /* 3032 */ 0xffff, /* 3033 */ 0xffff, /* 3034 */ 0xffff, /* 3035 */ 0xffff, /* 3036 */ 0xffff, /* 3037 */ 0xffff, /* 3038 */ 0xffff, /* 3039 */ 0xffff, /* 303a */ 0xffff, /* 303b */ 0xffff, /* 303c */ 0xffff, /* 303d */ 0xffff, /* 303e */ 0xffff, /* 303f */ 0xffff, /* 3040 */ 0xffff, /* 3041 */ 0xffff, /* 3042 */ 0xffff, /* 3043 */ 0xffff, /* 3044 */ 0xffff, /* 3045 */ 0xffff, /* 3046 */ 0xffff, /* 3047 */ 0xffff, /* 3048 */ 0xffff, /* 3049 */ 0xffff, /* 304a */ 0xffff, /* 304b */ 0xffff, /* 304c */ 0xffff, /* 304d */ 0xffff, /* 304e */ 0xffff, /* 304f */ 0xffff, /* 3050 */ 0xffff, /* 3051 */ 0xffff, /* 3052 */ 0xffff, /* 3053 */ 0xffff, /* 3054 */ 0xffff, /* 3055 */ 0xffff, /* 3056 */ 0xffff, /* 3057 */ 0xffff, /* 3058 */ 0xffff, /* 3059 */ 0xffff, /* 305a */ 0xffff, /* 305b */ 0xffff, /* 305c */ 0xffff, /* 305d */ 0xffff, /* 305e */ 0xffff, /* 305f */ 0xffff, /* 3060 */ 0xffff, /* 3061 */ 0xffff, /* 3062 */ 0xffff, /* 3063 */ 0xffff, /* 3064 */ 0xffff, /* 3065 */ 0xffff, /* 3066 */ 0xffff, /* 3067 */ 0xffff, /* 3068 */ 0xffff, /* 3069 */ 0xffff, /* 306a */ 0xffff, /* 306b */ 0xffff, /* 306c */ 0xffff, /* 306d */ 0xffff, /* 306e */ 0xffff, /* 306f */ 0xffff, /* 3070 */ 0xffff, /* 3071 */ 0xffff, /* 3072 */ 0xffff, /* 3073 */ 0xffff, /* 3074 */ 0xffff, /* 3075 */ 0xffff, /* 3076 */ 0xffff, /* 3077 */ 0xffff, /* 3078 */ 0xffff, /* 3079 */ 0xffff, /* 307a */ 0xffff, /* 307b */ 0xffff, /* 307c */ 0xffff, /* 307d */ 0xffff, /* 307e */ 0xffff, /* 307f */ 0xffff, /* 3080 */ 0xffff, /* 3081 */ 0xffff, /* 3082 */ 0xffff, /* 3083 */ 0xffff, /* 3084 */ 0xffff, /* 3085 */ 0xffff, /* 3086 */ 0xffff, /* 3087 */ 0xffff, /* 3088 */ 0xffff, /* 3089 */ 0xffff, /* 308a */ 0xffff, /* 308b */ 0xffff, /* 308c */ 0xffff, /* 308d */ 0xffff, /* 308e */ 0xffff, /* 308f */ 0xffff, /* 3090 */ 0xffff, /* 3091 */ 0xffff, /* 3092 */ 0xffff, /* 3093 */ 0xffff, /* 3094 */ 0xffff, /* 3095 */ 0xffff, /* 3096 */ 0xffff, /* 3097 */ 0xffff, /* 3098 */ 0xffff, /* 3099 */ 0xffff, /* 309a */ 0xffff, /* 309b */ 0xffff, /* 309c */ 0xffff, /* 309d */ 0xffff, /* 309e */ 0xffff, /* 309f */ 0xffff, /* 30a0 */ 0xffff, /* 30a1 */ 0xffff, /* 30a2 */ 0xffff, /* 30a3 */ 0xffff, /* 30a4 */ 0xffff, /* 30a5 */ 0xffff, /* 30a6 */ 0xffff, /* 30a7 */ 0xffff, /* 30a8 */ 0xffff, /* 30a9 */ 0xffff, /* 30aa */ 0xffff, /* 30ab */ 0xffff, /* 30ac */ 0xffff, /* 30ad */ 0xffff, /* 30ae */ 0xffff, /* 30af */ 0xffff, /* 30b0 */ 0xffff, /* 30b1 */ 0xffff, /* 30b2 */ 0xffff, /* 30b3 */ 0xffff, /* 30b4 */ 0xffff, /* 30b5 */ 0xffff, /* 30b6 */ 0xffff, /* 30b7 */ 0xffff, /* 30b8 */ 0xffff, /* 30b9 */ 0xffff, /* 30ba */ 0xffff, /* 30bb */ 0xffff, /* 30bc */ 0xffff, /* 30bd */ 0xffff, /* 30be */ 0xffff, /* 30bf */ 0xffff, /* 30c0 */ 0xffff, /* 30c1 */ 0xffff, /* 30c2 */ 0xffff, /* 30c3 */ 0xffff, /* 30c4 */ 0xffff, /* 30c5 */ 0xffff, /* 30c6 */ 0xffff, /* 30c7 */ 0xffff, /* 30c8 */ 0xffff, /* 30c9 */ 0xffff, /* 30ca */ 0xffff, /* 30cb */ 0xffff, /* 30cc */ 0xffff, /* 30cd */ 0xffff, /* 30ce */ 0xffff, /* 30cf */ 0xffff, /* 30d0 */ 0xffff, /* 30d1 */ 0xffff, /* 30d2 */ 0xffff, /* 30d3 */ 0xffff, /* 30d4 */ 0xffff, /* 30d5 */ 0xffff, /* 30d6 */ 0xffff, /* 30d7 */ 0xffff, /* 30d8 */ 0xffff, /* 30d9 */ 0xffff, /* 30da */ 0xffff, /* 30db */ 0xffff, /* 30dc */ 0xffff, /* 30dd */ 0xffff, /* 30de */ 0xffff, /* 30df */ 0xffff, /* 30e0 */ 0xffff, /* 30e1 */ 0xffff, /* 30e2 */ 0xffff, /* 30e3 */ 0xffff, /* 30e4 */ 0xffff, /* 30e5 */ 0xffff, /* 30e6 */ 0xffff, /* 30e7 */ 0xffff, /* 30e8 */ 0xffff, /* 30e9 */ 0xffff, /* 30ea */ 0xffff, /* 30eb */ 0xffff, /* 30ec */ 0xffff, /* 30ed */ 0xffff, /* 30ee */ 0xffff, /* 30ef */ 0xffff, /* 30f0 */ 0xffff, /* 30f1 */ 0xffff, /* 30f2 */ 0xffff, /* 30f3 */ 0xffff, /* 30f4 */ 0xffff, /* 30f5 */ 0xffff, /* 30f6 */ 0xffff, /* 30f7 */ 0xffff, /* 30f8 */ 0xffff, /* 30f9 */ 0xffff, /* 30fa */ 0xffff, /* 30fb */ 0xffff, /* 30fc */ 0xffff, /* 30fd */ 0xffff, /* 30fe */ 0xffff, /* 30ff */ 0xffff, /* 3100 */ 0xffff, /* 3101 */ 0xffff, /* 3102 */ 0xffff, /* 3103 */ 0xffff, /* 3104 */ 0xffff, /* 3105 */ 0xffff, /* 3106 */ 0xffff, /* 3107 */ 0xffff, /* 3108 */ 0xffff, /* 3109 */ 0xffff, /* 310a */ 0xffff, /* 310b */ 0xffff, /* 310c */ 0xffff, /* 310d */ 0xffff, /* 310e */ 0xffff, /* 310f */ 0xffff, /* 3110 */ 0xffff, /* 3111 */ 0xffff, /* 3112 */ 0xffff, /* 3113 */ 0xffff, /* 3114 */ 0xffff, /* 3115 */ 0xffff, /* 3116 */ 0xffff, /* 3117 */ 0xffff, /* 3118 */ 0xffff, /* 3119 */ 0xffff, /* 311a */ 0xffff, /* 311b */ 0xffff, /* 311c */ 0xffff, /* 311d */ 0xffff, /* 311e */ 0xffff, /* 311f */ 0xffff, /* 3120 */ 0xffff, /* 3121 */ 0xffff, /* 3122 */ 0xffff, /* 3123 */ 0xffff, /* 3124 */ 0xffff, /* 3125 */ 0xffff, /* 3126 */ 0xffff, /* 3127 */ 0xffff, /* 3128 */ 0xffff, /* 3129 */ 0xffff, /* 312a */ 0xffff, /* 312b */ 0xffff, /* 312c */ 0xffff, /* 312d */ 0xffff, /* 312e */ 0xffff, /* 312f */ 0xffff, /* 3130 */ 0xffff, /* 3131 */ 0xffff, /* 3132 */ 0xffff, /* 3133 */ 0xffff, /* 3134 */ 0xffff, /* 3135 */ 0xffff, /* 3136 */ 0xffff, /* 3137 */ 0xffff, /* 3138 */ 0xffff, /* 3139 */ 0xffff, /* 313a */ 0xffff, /* 313b */ 0xffff, /* 313c */ 0xffff, /* 313d */ 0xffff, /* 313e */ 0xffff, /* 313f */ 0xffff, /* 3140 */ 0xffff, /* 3141 */ 0xffff, /* 3142 */ 0xffff, /* 3143 */ 0xffff, /* 3144 */ 0xffff, /* 3145 */ 0xffff, /* 3146 */ 0xffff, /* 3147 */ 0xffff, /* 3148 */ 0xffff, /* 3149 */ 0xffff, /* 314a */ 0xffff, /* 314b */ 0xffff, /* 314c */ 0xffff, /* 314d */ 0xffff, /* 314e */ 0xffff, /* 314f */ 0xffff, /* 3150 */ 0xffff, /* 3151 */ 0xffff, /* 3152 */ 0xffff, /* 3153 */ 0xffff, /* 3154 */ 0xffff, /* 3155 */ 0xffff, /* 3156 */ 0xffff, /* 3157 */ 0xffff, /* 3158 */ 0xffff, /* 3159 */ 0xffff, /* 315a */ 0xffff, /* 315b */ 0xffff, /* 315c */ 0xffff, /* 315d */ 0xffff, /* 315e */ 0xffff, /* 315f */ 0xffff, /* 3160 */ 0xffff, /* 3161 */ 0xffff, /* 3162 */ 0xffff, /* 3163 */ 0xffff, /* 3164 */ 0xffff, /* 3165 */ 0xffff, /* 3166 */ 0xffff, /* 3167 */ 0xffff, /* 3168 */ 0xffff, /* 3169 */ 0xffff, /* 316a */ 0xffff, /* 316b */ 0xffff, /* 316c */ 0xffff, /* 316d */ 0xffff, /* 316e */ 0xffff, /* 316f */ 0xffff, /* 3170 */ 0xffff, /* 3171 */ 0xffff, /* 3172 */ 0xffff, /* 3173 */ 0xffff, /* 3174 */ 0xffff, /* 3175 */ 0xffff, /* 3176 */ 0xffff, /* 3177 */ 0xffff, /* 3178 */ 0xffff, /* 3179 */ 0xffff, /* 317a */ 0xffff, /* 317b */ 0xffff, /* 317c */ 0xffff, /* 317d */ 0xffff, /* 317e */ 0xffff, /* 317f */ 0xffff, /* 3180 */ 0xffff, /* 3181 */ 0xffff, /* 3182 */ 0xffff, /* 3183 */ 0xffff, /* 3184 */ 0xffff, /* 3185 */ 0xffff, /* 3186 */ 0xffff, /* 3187 */ 0xffff, /* 3188 */ 0xffff, /* 3189 */ 0xffff, /* 318a */ 0xffff, /* 318b */ 0xffff, /* 318c */ 0xffff, /* 318d */ 0xffff, /* 318e */ 0xffff, /* 318f */ 0xffff, /* 3190 */ 0xffff, /* 3191 */ 0xffff, /* 3192 */ 0xffff, /* 3193 */ 0xffff, /* 3194 */ 0xffff, /* 3195 */ 0xffff, /* 3196 */ 0xffff, /* 3197 */ 0xffff, /* 3198 */ 0xffff, /* 3199 */ 0xffff, /* 319a */ 0xffff, /* 319b */ 0xffff, /* 319c */ 0xffff, /* 319d */ 0xffff, /* 319e */ 0xffff, /* 319f */ 0xffff, /* 31a0 */ 0xffff, /* 31a1 */ 0xffff, /* 31a2 */ 0xffff, /* 31a3 */ 0xffff, /* 31a4 */ 0xffff, /* 31a5 */ 0xffff, /* 31a6 */ 0xffff, /* 31a7 */ 0xffff, /* 31a8 */ 0xffff, /* 31a9 */ 0xffff, /* 31aa */ 0xffff, /* 31ab */ 0xffff, /* 31ac */ 0xffff, /* 31ad */ 0xffff, /* 31ae */ 0xffff, /* 31af */ 0xffff, /* 31b0 */ 0xffff, /* 31b1 */ 0xffff, /* 31b2 */ 0xffff, /* 31b3 */ 0xffff, /* 31b4 */ 0xffff, /* 31b5 */ 0xffff, /* 31b6 */ 0xffff, /* 31b7 */ 0xffff, /* 31b8 */ 0xffff, /* 31b9 */ 0xffff, /* 31ba */ 0xffff, /* 31bb */ 0xffff, /* 31bc */ 0xffff, /* 31bd */ 0xffff, /* 31be */ 0xffff, /* 31bf */ 0xffff, /* 31c0 */ 0xffff, /* 31c1 */ 0xffff, /* 31c2 */ 0xffff, /* 31c3 */ 0xffff, /* 31c4 */ 0xffff, /* 31c5 */ 0xffff, /* 31c6 */ 0xffff, /* 31c7 */ 0xffff, /* 31c8 */ 0xffff, /* 31c9 */ 0xffff, /* 31ca */ 0xffff, /* 31cb */ 0xffff, /* 31cc */ 0xffff, /* 31cd */ 0xffff, /* 31ce */ 0xffff, /* 31cf */ 0xffff, /* 31d0 */ 0xffff, /* 31d1 */ 0xffff, /* 31d2 */ 0xffff, /* 31d3 */ 0xffff, /* 31d4 */ 0xffff, /* 31d5 */ 0xffff, /* 31d6 */ 0xffff, /* 31d7 */ 0xffff, /* 31d8 */ 0xffff, /* 31d9 */ 0xffff, /* 31da */ 0xffff, /* 31db */ 0xffff, /* 31dc */ 0xffff, /* 31dd */ 0xffff, /* 31de */ 0xffff, /* 31df */ 0xffff, /* 31e0 */ 0xffff, /* 31e1 */ 0xffff, /* 31e2 */ 0xffff, /* 31e3 */ 0xffff, /* 31e4 */ 0xffff, /* 31e5 */ 0xffff, /* 31e6 */ 0xffff, /* 31e7 */ 0xffff, /* 31e8 */ 0xffff, /* 31e9 */ 0xffff, /* 31ea */ 0xffff, /* 31eb */ 0xffff, /* 31ec */ 0xffff, /* 31ed */ 0xffff, /* 31ee */ 0xffff, /* 31ef */ 0xffff, /* 31f0 */ 0xffff, /* 31f1 */ 0xffff, /* 31f2 */ 0xffff, /* 31f3 */ 0xffff, /* 31f4 */ 0xffff, /* 31f5 */ 0xffff, /* 31f6 */ 0xffff, /* 31f7 */ 0xffff, /* 31f8 */ 0xffff, /* 31f9 */ 0xffff, /* 31fa */ 0xffff, /* 31fb */ 0xffff, /* 31fc */ 0xffff, /* 31fd */ 0xffff, /* 31fe */ 0xffff, /* 31ff */ 0xffff, /* 3200 */ 0xffff, /* 3201 */ 0xffff, /* 3202 */ 0xffff, /* 3203 */ 0xffff, /* 3204 */ 0xffff, /* 3205 */ 0xffff, /* 3206 */ 0xffff, /* 3207 */ 0xffff, /* 3208 */ 0xffff, /* 3209 */ 0xffff, /* 320a */ 0xffff, /* 320b */ 0xffff, /* 320c */ 0xffff, /* 320d */ 0xffff, /* 320e */ 0xffff, /* 320f */ 0xffff, /* 3210 */ 0xffff, /* 3211 */ 0xffff, /* 3212 */ 0xffff, /* 3213 */ 0xffff, /* 3214 */ 0xffff, /* 3215 */ 0xffff, /* 3216 */ 0xffff, /* 3217 */ 0xffff, /* 3218 */ 0xffff, /* 3219 */ 0xffff, /* 321a */ 0xffff, /* 321b */ 0xffff, /* 321c */ 0xffff, /* 321d */ 0xffff, /* 321e */ 0xffff, /* 321f */ 0xffff, /* 3220 */ 0xffff, /* 3221 */ 0xffff, /* 3222 */ 0xffff, /* 3223 */ 0xffff, /* 3224 */ 0xffff, /* 3225 */ 0xffff, /* 3226 */ 0xffff, /* 3227 */ 0xffff, /* 3228 */ 0xffff, /* 3229 */ 0xffff, /* 322a */ 0xffff, /* 322b */ 0xffff, /* 322c */ 0xffff, /* 322d */ 0xffff, /* 322e */ 0xffff, /* 322f */ 0xffff, /* 3230 */ 0xffff, /* 3231 */ 0xffff, /* 3232 */ 0xffff, /* 3233 */ 0xffff, /* 3234 */ 0xffff, /* 3235 */ 0xffff, /* 3236 */ 0xffff, /* 3237 */ 0xffff, /* 3238 */ 0xffff, /* 3239 */ 0xffff, /* 323a */ 0xffff, /* 323b */ 0xffff, /* 323c */ 0xffff, /* 323d */ 0xffff, /* 323e */ 0xffff, /* 323f */ 0xffff, /* 3240 */ 0xffff, /* 3241 */ 0xffff, /* 3242 */ 0xffff, /* 3243 */ 0xffff, /* 3244 */ 0xffff, /* 3245 */ 0xffff, /* 3246 */ 0xffff, /* 3247 */ 0xffff, /* 3248 */ 0xffff, /* 3249 */ 0xffff, /* 324a */ 0xffff, /* 324b */ 0xffff, /* 324c */ 0xffff, /* 324d */ 0xffff, /* 324e */ 0xffff, /* 324f */ 0xffff, /* 3250 */ 0xffff, /* 3251 */ 0xffff, /* 3252 */ 0xffff, /* 3253 */ 0xffff, /* 3254 */ 0xffff, /* 3255 */ 0xffff, /* 3256 */ 0xffff, /* 3257 */ 0xffff, /* 3258 */ 0xffff, /* 3259 */ 0xffff, /* 325a */ 0xffff, /* 325b */ 0xffff, /* 325c */ 0xffff, /* 325d */ 0xffff, /* 325e */ 0xffff, /* 325f */ 0xffff, /* 3260 */ 0xffff, /* 3261 */ 0xffff, /* 3262 */ 0xffff, /* 3263 */ 0xffff, /* 3264 */ 0xffff, /* 3265 */ 0xffff, /* 3266 */ 0xffff, /* 3267 */ 0xffff, /* 3268 */ 0xffff, /* 3269 */ 0xffff, /* 326a */ 0xffff, /* 326b */ 0xffff, /* 326c */ 0xffff, /* 326d */ 0xffff, /* 326e */ 0xffff, /* 326f */ 0xffff, /* 3270 */ 0xffff, /* 3271 */ 0xffff, /* 3272 */ 0xffff, /* 3273 */ 0xffff, /* 3274 */ 0xffff, /* 3275 */ 0xffff, /* 3276 */ 0xffff, /* 3277 */ 0xffff, /* 3278 */ 0xffff, /* 3279 */ 0xffff, /* 327a */ 0xffff, /* 327b */ 0xffff, /* 327c */ 0xffff, /* 327d */ 0xffff, /* 327e */ 0xffff, /* 327f */ 0xffff, /* 3280 */ 0xffff, /* 3281 */ 0xffff, /* 3282 */ 0xffff, /* 3283 */ 0xffff, /* 3284 */ 0xffff, /* 3285 */ 0xffff, /* 3286 */ 0xffff, /* 3287 */ 0xffff, /* 3288 */ 0xffff, /* 3289 */ 0xffff, /* 328a */ 0xffff, /* 328b */ 0xffff, /* 328c */ 0xffff, /* 328d */ 0xffff, /* 328e */ 0xffff, /* 328f */ 0xffff, /* 3290 */ 0xffff, /* 3291 */ 0xffff, /* 3292 */ 0xffff, /* 3293 */ 0xffff, /* 3294 */ 0xffff, /* 3295 */ 0xffff, /* 3296 */ 0xffff, /* 3297 */ 0xffff, /* 3298 */ 0xffff, /* 3299 */ 0xffff, /* 329a */ 0xffff, /* 329b */ 0xffff, /* 329c */ 0xffff, /* 329d */ 0xffff, /* 329e */ 0xffff, /* 329f */ 0xffff, /* 32a0 */ 0xffff, /* 32a1 */ 0xffff, /* 32a2 */ 0xffff, /* 32a3 */ 0xffff, /* 32a4 */ 0xffff, /* 32a5 */ 0xffff, /* 32a6 */ 0xffff, /* 32a7 */ 0xffff, /* 32a8 */ 0xffff, /* 32a9 */ 0xffff, /* 32aa */ 0xffff, /* 32ab */ 0xffff, /* 32ac */ 0xffff, /* 32ad */ 0xffff, /* 32ae */ 0xffff, /* 32af */ 0xffff, /* 32b0 */ 0xffff, /* 32b1 */ 0xffff, /* 32b2 */ 0xffff, /* 32b3 */ 0xffff, /* 32b4 */ 0xffff, /* 32b5 */ 0xffff, /* 32b6 */ 0xffff, /* 32b7 */ 0xffff, /* 32b8 */ 0xffff, /* 32b9 */ 0xffff, /* 32ba */ 0xffff, /* 32bb */ 0xffff, /* 32bc */ 0xffff, /* 32bd */ 0xffff, /* 32be */ 0xffff, /* 32bf */ 0xffff, /* 32c0 */ 0xffff, /* 32c1 */ 0xffff, /* 32c2 */ 0xffff, /* 32c3 */ 0xffff, /* 32c4 */ 0xffff, /* 32c5 */ 0xffff, /* 32c6 */ 0xffff, /* 32c7 */ 0xffff, /* 32c8 */ 0xffff, /* 32c9 */ 0xffff, /* 32ca */ 0xffff, /* 32cb */ 0xffff, /* 32cc */ 0xffff, /* 32cd */ 0xffff, /* 32ce */ 0xffff, /* 32cf */ 0xffff, /* 32d0 */ 0xffff, /* 32d1 */ 0xffff, /* 32d2 */ 0xffff, /* 32d3 */ 0xffff, /* 32d4 */ 0xffff, /* 32d5 */ 0xffff, /* 32d6 */ 0xffff, /* 32d7 */ 0xffff, /* 32d8 */ 0xffff, /* 32d9 */ 0xffff, /* 32da */ 0xffff, /* 32db */ 0xffff, /* 32dc */ 0xffff, /* 32dd */ 0xffff, /* 32de */ 0xffff, /* 32df */ 0xffff, /* 32e0 */ 0xffff, /* 32e1 */ 0xffff, /* 32e2 */ 0xffff, /* 32e3 */ 0xffff, /* 32e4 */ 0xffff, /* 32e5 */ 0xffff, /* 32e6 */ 0xffff, /* 32e7 */ 0xffff, /* 32e8 */ 0xffff, /* 32e9 */ 0xffff, /* 32ea */ 0xffff, /* 32eb */ 0xffff, /* 32ec */ 0xffff, /* 32ed */ 0xffff, /* 32ee */ 0xffff, /* 32ef */ 0xffff, /* 32f0 */ 0xffff, /* 32f1 */ 0xffff, /* 32f2 */ 0xffff, /* 32f3 */ 0xffff, /* 32f4 */ 0xffff, /* 32f5 */ 0xffff, /* 32f6 */ 0xffff, /* 32f7 */ 0xffff, /* 32f8 */ 0xffff, /* 32f9 */ 0xffff, /* 32fa */ 0xffff, /* 32fb */ 0xffff, /* 32fc */ 0xffff, /* 32fd */ 0xffff, /* 32fe */ 0xffff, /* 32ff */ 0xffff, /* 3300 */ 0xffff, /* 3301 */ 0xffff, /* 3302 */ 0xffff, /* 3303 */ 0xffff, /* 3304 */ 0xffff, /* 3305 */ 0xffff, /* 3306 */ 0xffff, /* 3307 */ 0xffff, /* 3308 */ 0xffff, /* 3309 */ 0xffff, /* 330a */ 0xffff, /* 330b */ 0xffff, /* 330c */ 0xffff, /* 330d */ 0xffff, /* 330e */ 0xffff, /* 330f */ 0xffff, /* 3310 */ 0xffff, /* 3311 */ 0xffff, /* 3312 */ 0xffff, /* 3313 */ 0xffff, /* 3314 */ 0xffff, /* 3315 */ 0xffff, /* 3316 */ 0xffff, /* 3317 */ 0xffff, /* 3318 */ 0xffff, /* 3319 */ 0xffff, /* 331a */ 0xffff, /* 331b */ 0xffff, /* 331c */ 0xffff, /* 331d */ 0xffff, /* 331e */ 0xffff, /* 331f */ 0xffff, /* 3320 */ 0xffff, /* 3321 */ 0xffff, /* 3322 */ 0xffff, /* 3323 */ 0xffff, /* 3324 */ 0xffff, /* 3325 */ 0xffff, /* 3326 */ 0xffff, /* 3327 */ 0xffff, /* 3328 */ 0xffff, /* 3329 */ 0xffff, /* 332a */ 0xffff, /* 332b */ 0xffff, /* 332c */ 0xffff, /* 332d */ 0xffff, /* 332e */ 0xffff, /* 332f */ 0xffff, /* 3330 */ 0xffff, /* 3331 */ 0xffff, /* 3332 */ 0xffff, /* 3333 */ 0xffff, /* 3334 */ 0xffff, /* 3335 */ 0xffff, /* 3336 */ 0xffff, /* 3337 */ 0xffff, /* 3338 */ 0xffff, /* 3339 */ 0xffff, /* 333a */ 0xffff, /* 333b */ 0xffff, /* 333c */ 0xffff, /* 333d */ 0xffff, /* 333e */ 0xffff, /* 333f */ 0xffff, /* 3340 */ 0xffff, /* 3341 */ 0xffff, /* 3342 */ 0xffff, /* 3343 */ 0xffff, /* 3344 */ 0xffff, /* 3345 */ 0xffff, /* 3346 */ 0xffff, /* 3347 */ 0xffff, /* 3348 */ 0xffff, /* 3349 */ 0xffff, /* 334a */ 0xffff, /* 334b */ 0xffff, /* 334c */ 0xffff, /* 334d */ 0xffff, /* 334e */ 0xffff, /* 334f */ 0xffff, /* 3350 */ 0xffff, /* 3351 */ 0xffff, /* 3352 */ 0xffff, /* 3353 */ 0xffff, /* 3354 */ 0xffff, /* 3355 */ 0xffff, /* 3356 */ 0xffff, /* 3357 */ 0xffff, /* 3358 */ 0xffff, /* 3359 */ 0xffff, /* 335a */ 0xffff, /* 335b */ 0xffff, /* 335c */ 0xffff, /* 335d */ 0xffff, /* 335e */ 0xffff, /* 335f */ 0xffff, /* 3360 */ 0xffff, /* 3361 */ 0xffff, /* 3362 */ 0xffff, /* 3363 */ 0xffff, /* 3364 */ 0xffff, /* 3365 */ 0xffff, /* 3366 */ 0xffff, /* 3367 */ 0xffff, /* 3368 */ 0xffff, /* 3369 */ 0xffff, /* 336a */ 0xffff, /* 336b */ 0xffff, /* 336c */ 0xffff, /* 336d */ 0xffff, /* 336e */ 0xffff, /* 336f */ 0xffff, /* 3370 */ 0xffff, /* 3371 */ 0xffff, /* 3372 */ 0xffff, /* 3373 */ 0xffff, /* 3374 */ 0xffff, /* 3375 */ 0xffff, /* 3376 */ 0xffff, /* 3377 */ 0xffff, /* 3378 */ 0xffff, /* 3379 */ 0xffff, /* 337a */ 0xffff, /* 337b */ 0xffff, /* 337c */ 0xffff, /* 337d */ 0xffff, /* 337e */ 0xffff, /* 337f */ 0xffff, /* 3380 */ 0xffff, /* 3381 */ 0xffff, /* 3382 */ 0xffff, /* 3383 */ 0xffff, /* 3384 */ 0xffff, /* 3385 */ 0xffff, /* 3386 */ 0xffff, /* 3387 */ 0xffff, /* 3388 */ 0xffff, /* 3389 */ 0xffff, /* 338a */ 0xffff, /* 338b */ 0xffff, /* 338c */ 0xffff, /* 338d */ 0xffff, /* 338e */ 0xffff, /* 338f */ 0xffff, /* 3390 */ 0xffff, /* 3391 */ 0xffff, /* 3392 */ 0xffff, /* 3393 */ 0xffff, /* 3394 */ 0xffff, /* 3395 */ 0xffff, /* 3396 */ 0xffff, /* 3397 */ 0xffff, /* 3398 */ 0xffff, /* 3399 */ 0xffff, /* 339a */ 0xffff, /* 339b */ 0xffff, /* 339c */ 0xffff, /* 339d */ 0xffff, /* 339e */ 0xffff, /* 339f */ 0xffff, /* 33a0 */ 0xffff, /* 33a1 */ 0xffff, /* 33a2 */ 0xffff, /* 33a3 */ 0xffff, /* 33a4 */ 0xffff, /* 33a5 */ 0xffff, /* 33a6 */ 0xffff, /* 33a7 */ 0xffff, /* 33a8 */ 0xffff, /* 33a9 */ 0xffff, /* 33aa */ 0xffff, /* 33ab */ 0xffff, /* 33ac */ 0xffff, /* 33ad */ 0xffff, /* 33ae */ 0xffff, /* 33af */ 0xffff, /* 33b0 */ 0xffff, /* 33b1 */ 0xffff, /* 33b2 */ 0xffff, /* 33b3 */ 0xffff, /* 33b4 */ 0xffff, /* 33b5 */ 0xffff, /* 33b6 */ 0xffff, /* 33b7 */ 0xffff, /* 33b8 */ 0xffff, /* 33b9 */ 0xffff, /* 33ba */ 0xffff, /* 33bb */ 0xffff, /* 33bc */ 0xffff, /* 33bd */ 0xffff, /* 33be */ 0xffff, /* 33bf */ 0xffff, /* 33c0 */ 0xffff, /* 33c1 */ 0xffff, /* 33c2 */ 0xffff, /* 33c3 */ 0xffff, /* 33c4 */ 0xffff, /* 33c5 */ 0xffff, /* 33c6 */ 0xffff, /* 33c7 */ 0xffff, /* 33c8 */ 0xffff, /* 33c9 */ 0xffff, /* 33ca */ 0xffff, /* 33cb */ 0xffff, /* 33cc */ 0xffff, /* 33cd */ 0xffff, /* 33ce */ 0xffff, /* 33cf */ 0xffff, /* 33d0 */ 0xffff, /* 33d1 */ 0xffff, /* 33d2 */ 0xffff, /* 33d3 */ 0xffff, /* 33d4 */ 0xffff, /* 33d5 */ 0xffff, /* 33d6 */ 0xffff, /* 33d7 */ 0xffff, /* 33d8 */ 0xffff, /* 33d9 */ 0xffff, /* 33da */ 0xffff, /* 33db */ 0xffff, /* 33dc */ 0xffff, /* 33dd */ 0xffff, /* 33de */ 0xffff, /* 33df */ 0xffff, /* 33e0 */ 0xffff, /* 33e1 */ 0xffff, /* 33e2 */ 0xffff, /* 33e3 */ 0xffff, /* 33e4 */ 0xffff, /* 33e5 */ 0xffff, /* 33e6 */ 0xffff, /* 33e7 */ 0xffff, /* 33e8 */ 0xffff, /* 33e9 */ 0xffff, /* 33ea */ 0xffff, /* 33eb */ 0xffff, /* 33ec */ 0xffff, /* 33ed */ 0xffff, /* 33ee */ 0xffff, /* 33ef */ 0xffff, /* 33f0 */ 0xffff, /* 33f1 */ 0xffff, /* 33f2 */ 0xffff, /* 33f3 */ 0xffff, /* 33f4 */ 0xffff, /* 33f5 */ 0xffff, /* 33f6 */ 0xffff, /* 33f7 */ 0xffff, /* 33f8 */ 0xffff, /* 33f9 */ 0xffff, /* 33fa */ 0xffff, /* 33fb */ 0xffff, /* 33fc */ 0xffff, /* 33fd */ 0xffff, /* 33fe */ 0xffff, /* 33ff */ 0xffff, /* 3400 */ 0xffff, /* 3401 */ 0xffff, /* 3402 */ 0xffff, /* 3403 */ 0xffff, /* 3404 */ 0xffff, /* 3405 */ 0xffff, /* 3406 */ 0xffff, /* 3407 */ 0xffff, /* 3408 */ 0xffff, /* 3409 */ 0xffff, /* 340a */ 0xffff, /* 340b */ 0xffff, /* 340c */ 0xffff, /* 340d */ 0xffff, /* 340e */ 0xffff, /* 340f */ 0xffff, /* 3410 */ 0xffff, /* 3411 */ 0xffff, /* 3412 */ 0xffff, /* 3413 */ 0xffff, /* 3414 */ 0xffff, /* 3415 */ 0xffff, /* 3416 */ 0xffff, /* 3417 */ 0xffff, /* 3418 */ 0xffff, /* 3419 */ 0xffff, /* 341a */ 0xffff, /* 341b */ 0xffff, /* 341c */ 0xffff, /* 341d */ 0xffff, /* 341e */ 0xffff, /* 341f */ 0xffff, /* 3420 */ 0xffff, /* 3421 */ 0xffff, /* 3422 */ 0xffff, /* 3423 */ 0xffff, /* 3424 */ 0xffff, /* 3425 */ 0xffff, /* 3426 */ 0xffff, /* 3427 */ 0xffff, /* 3428 */ 0xffff, /* 3429 */ 0xffff, /* 342a */ 0xffff, /* 342b */ 0xffff, /* 342c */ 0xffff, /* 342d */ 0xffff, /* 342e */ 0xffff, /* 342f */ 0xffff, /* 3430 */ 0xffff, /* 3431 */ 0xffff, /* 3432 */ 0xffff, /* 3433 */ 0xffff, /* 3434 */ 0xffff, /* 3435 */ 0xffff, /* 3436 */ 0xffff, /* 3437 */ 0xffff, /* 3438 */ 0xffff, /* 3439 */ 0xffff, /* 343a */ 0xffff, /* 343b */ 0xffff, /* 343c */ 0xffff, /* 343d */ 0xffff, /* 343e */ 0xffff, /* 343f */ 0xffff, /* 3440 */ 0xffff, /* 3441 */ 0xffff, /* 3442 */ 0xffff, /* 3443 */ 0xffff, /* 3444 */ 0xffff, /* 3445 */ 0xffff, /* 3446 */ 0xffff, /* 3447 */ 0xffff, /* 3448 */ 0xffff, /* 3449 */ 0xffff, /* 344a */ 0xffff, /* 344b */ 0xffff, /* 344c */ 0xffff, /* 344d */ 0xffff, /* 344e */ 0xffff, /* 344f */ 0xffff, /* 3450 */ 0xffff, /* 3451 */ 0xffff, /* 3452 */ 0xffff, /* 3453 */ 0xffff, /* 3454 */ 0xffff, /* 3455 */ 0xffff, /* 3456 */ 0xffff, /* 3457 */ 0xffff, /* 3458 */ 0xffff, /* 3459 */ 0xffff, /* 345a */ 0xffff, /* 345b */ 0xffff, /* 345c */ 0xffff, /* 345d */ 0xffff, /* 345e */ 0xffff, /* 345f */ 0xffff, /* 3460 */ 0xffff, /* 3461 */ 0xffff, /* 3462 */ 0xffff, /* 3463 */ 0xffff, /* 3464 */ 0xffff, /* 3465 */ 0xffff, /* 3466 */ 0xffff, /* 3467 */ 0xffff, /* 3468 */ 0xffff, /* 3469 */ 0xffff, /* 346a */ 0xffff, /* 346b */ 0xffff, /* 346c */ 0xffff, /* 346d */ 0xffff, /* 346e */ 0xffff, /* 346f */ 0xffff, /* 3470 */ 0xffff, /* 3471 */ 0xffff, /* 3472 */ 0xffff, /* 3473 */ 0xffff, /* 3474 */ 0xffff, /* 3475 */ 0xffff, /* 3476 */ 0xffff, /* 3477 */ 0xffff, /* 3478 */ 0xffff, /* 3479 */ 0xffff, /* 347a */ 0xffff, /* 347b */ 0xffff, /* 347c */ 0xffff, /* 347d */ 0xffff, /* 347e */ 0xffff, /* 347f */ 0xffff, /* 3480 */ 0xffff, /* 3481 */ 0xffff, /* 3482 */ 0xffff, /* 3483 */ 0xffff, /* 3484 */ 0xffff, /* 3485 */ 0xffff, /* 3486 */ 0xffff, /* 3487 */ 0xffff, /* 3488 */ 0xffff, /* 3489 */ 0xffff, /* 348a */ 0xffff, /* 348b */ 0xffff, /* 348c */ 0xffff, /* 348d */ 0xffff, /* 348e */ 0xffff, /* 348f */ 0xffff, /* 3490 */ 0xffff, /* 3491 */ 0xffff, /* 3492 */ 0xffff, /* 3493 */ 0xffff, /* 3494 */ 0xffff, /* 3495 */ 0xffff, /* 3496 */ 0xffff, /* 3497 */ 0xffff, /* 3498 */ 0xffff, /* 3499 */ 0xffff, /* 349a */ 0xffff, /* 349b */ 0xffff, /* 349c */ 0xffff, /* 349d */ 0xffff, /* 349e */ 0xffff, /* 349f */ 0xffff, /* 34a0 */ 0xffff, /* 34a1 */ 0xffff, /* 34a2 */ 0xffff, /* 34a3 */ 0xffff, /* 34a4 */ 0xffff, /* 34a5 */ 0xffff, /* 34a6 */ 0xffff, /* 34a7 */ 0xffff, /* 34a8 */ 0xffff, /* 34a9 */ 0xffff, /* 34aa */ 0xffff, /* 34ab */ 0xffff, /* 34ac */ 0xffff, /* 34ad */ 0xffff, /* 34ae */ 0xffff, /* 34af */ 0xffff, /* 34b0 */ 0xffff, /* 34b1 */ 0xffff, /* 34b2 */ 0xffff, /* 34b3 */ 0xffff, /* 34b4 */ 0xffff, /* 34b5 */ 0xffff, /* 34b6 */ 0xffff, /* 34b7 */ 0xffff, /* 34b8 */ 0xffff, /* 34b9 */ 0xffff, /* 34ba */ 0xffff, /* 34bb */ 0xffff, /* 34bc */ 0xffff, /* 34bd */ 0xffff, /* 34be */ 0xffff, /* 34bf */ 0xffff, /* 34c0 */ 0xffff, /* 34c1 */ 0xffff, /* 34c2 */ 0xffff, /* 34c3 */ 0xffff, /* 34c4 */ 0xffff, /* 34c5 */ 0xffff, /* 34c6 */ 0xffff, /* 34c7 */ 0xffff, /* 34c8 */ 0xffff, /* 34c9 */ 0xffff, /* 34ca */ 0xffff, /* 34cb */ 0xffff, /* 34cc */ 0xffff, /* 34cd */ 0xffff, /* 34ce */ 0xffff, /* 34cf */ 0xffff, /* 34d0 */ 0xffff, /* 34d1 */ 0xffff, /* 34d2 */ 0xffff, /* 34d3 */ 0xffff, /* 34d4 */ 0xffff, /* 34d5 */ 0xffff, /* 34d6 */ 0xffff, /* 34d7 */ 0xffff, /* 34d8 */ 0xffff, /* 34d9 */ 0xffff, /* 34da */ 0xffff, /* 34db */ 0xffff, /* 34dc */ 0xffff, /* 34dd */ 0xffff, /* 34de */ 0xffff, /* 34df */ 0xffff, /* 34e0 */ 0xffff, /* 34e1 */ 0xffff, /* 34e2 */ 0xffff, /* 34e3 */ 0xffff, /* 34e4 */ 0xffff, /* 34e5 */ 0xffff, /* 34e6 */ 0xffff, /* 34e7 */ 0xffff, /* 34e8 */ 0xffff, /* 34e9 */ 0xffff, /* 34ea */ 0xffff, /* 34eb */ 0xffff, /* 34ec */ 0xffff, /* 34ed */ 0xffff, /* 34ee */ 0xffff, /* 34ef */ 0xffff, /* 34f0 */ 0xffff, /* 34f1 */ 0xffff, /* 34f2 */ 0xffff, /* 34f3 */ 0xffff, /* 34f4 */ 0xffff, /* 34f5 */ 0xffff, /* 34f6 */ 0xffff, /* 34f7 */ 0xffff, /* 34f8 */ 0xffff, /* 34f9 */ 0xffff, /* 34fa */ 0xffff, /* 34fb */ 0xffff, /* 34fc */ 0xffff, /* 34fd */ 0xffff, /* 34fe */ 0xffff, /* 34ff */ 0xffff, /* 3500 */ 0xffff, /* 3501 */ 0xffff, /* 3502 */ 0xffff, /* 3503 */ 0xffff, /* 3504 */ 0xffff, /* 3505 */ 0xffff, /* 3506 */ 0xffff, /* 3507 */ 0xffff, /* 3508 */ 0xffff, /* 3509 */ 0xffff, /* 350a */ 0xffff, /* 350b */ 0xffff, /* 350c */ 0xffff, /* 350d */ 0xffff, /* 350e */ 0xffff, /* 350f */ 0xffff, /* 3510 */ 0xffff, /* 3511 */ 0xffff, /* 3512 */ 0xffff, /* 3513 */ 0xffff, /* 3514 */ 0xffff, /* 3515 */ 0xffff, /* 3516 */ 0xffff, /* 3517 */ 0xffff, /* 3518 */ 0xffff, /* 3519 */ 0xffff, /* 351a */ 0xffff, /* 351b */ 0xffff, /* 351c */ 0xffff, /* 351d */ 0xffff, /* 351e */ 0xffff, /* 351f */ 0xffff, /* 3520 */ 0xffff, /* 3521 */ 0xffff, /* 3522 */ 0xffff, /* 3523 */ 0xffff, /* 3524 */ 0xffff, /* 3525 */ 0xffff, /* 3526 */ 0xffff, /* 3527 */ 0xffff, /* 3528 */ 0xffff, /* 3529 */ 0xffff, /* 352a */ 0xffff, /* 352b */ 0xffff, /* 352c */ 0xffff, /* 352d */ 0xffff, /* 352e */ 0xffff, /* 352f */ 0xffff, /* 3530 */ 0xffff, /* 3531 */ 0xffff, /* 3532 */ 0xffff, /* 3533 */ 0xffff, /* 3534 */ 0xffff, /* 3535 */ 0xffff, /* 3536 */ 0xffff, /* 3537 */ 0xffff, /* 3538 */ 0xffff, /* 3539 */ 0xffff, /* 353a */ 0xffff, /* 353b */ 0xffff, /* 353c */ 0xffff, /* 353d */ 0xffff, /* 353e */ 0xffff, /* 353f */ 0xffff, /* 3540 */ 0xffff, /* 3541 */ 0xffff, /* 3542 */ 0xffff, /* 3543 */ 0xffff, /* 3544 */ 0xffff, /* 3545 */ 0xffff, /* 3546 */ 0xffff, /* 3547 */ 0xffff, /* 3548 */ 0xffff, /* 3549 */ 0xffff, /* 354a */ 0xffff, /* 354b */ 0xffff, /* 354c */ 0xffff, /* 354d */ 0xffff, /* 354e */ 0xffff, /* 354f */ 0xffff, /* 3550 */ 0xffff, /* 3551 */ 0xffff, /* 3552 */ 0xffff, /* 3553 */ 0xffff, /* 3554 */ 0xffff, /* 3555 */ 0xffff, /* 3556 */ 0xffff, /* 3557 */ 0xffff, /* 3558 */ 0xffff, /* 3559 */ 0xffff, /* 355a */ 0xffff, /* 355b */ 0xffff, /* 355c */ 0xffff, /* 355d */ 0xffff, /* 355e */ 0xffff, /* 355f */ 0xffff, /* 3560 */ 0xffff, /* 3561 */ 0xffff, /* 3562 */ 0xffff, /* 3563 */ 0xffff, /* 3564 */ 0xffff, /* 3565 */ 0xffff, /* 3566 */ 0xffff, /* 3567 */ 0xffff, /* 3568 */ 0xffff, /* 3569 */ 0xffff, /* 356a */ 0xffff, /* 356b */ 0xffff, /* 356c */ 0xffff, /* 356d */ 0xffff, /* 356e */ 0xffff, /* 356f */ 0xffff, /* 3570 */ 0xffff, /* 3571 */ 0xffff, /* 3572 */ 0xffff, /* 3573 */ 0xffff, /* 3574 */ 0xffff, /* 3575 */ 0xffff, /* 3576 */ 0xffff, /* 3577 */ 0xffff, /* 3578 */ 0xffff, /* 3579 */ 0xffff, /* 357a */ 0xffff, /* 357b */ 0xffff, /* 357c */ 0xffff, /* 357d */ 0xffff, /* 357e */ 0xffff, /* 357f */ 0xffff, /* 3580 */ 0xffff, /* 3581 */ 0xffff, /* 3582 */ 0xffff, /* 3583 */ 0xffff, /* 3584 */ 0xffff, /* 3585 */ 0xffff, /* 3586 */ 0xffff, /* 3587 */ 0xffff, /* 3588 */ 0xffff, /* 3589 */ 0xffff, /* 358a */ 0xffff, /* 358b */ 0xffff, /* 358c */ 0xffff, /* 358d */ 0xffff, /* 358e */ 0xffff, /* 358f */ 0xffff, /* 3590 */ 0xffff, /* 3591 */ 0xffff, /* 3592 */ 0xffff, /* 3593 */ 0xffff, /* 3594 */ 0xffff, /* 3595 */ 0xffff, /* 3596 */ 0xffff, /* 3597 */ 0xffff, /* 3598 */ 0xffff, /* 3599 */ 0xffff, /* 359a */ 0xffff, /* 359b */ 0xffff, /* 359c */ 0xffff, /* 359d */ 0xffff, /* 359e */ 0xffff, /* 359f */ 0xffff, /* 35a0 */ 0xffff, /* 35a1 */ 0xffff, /* 35a2 */ 0xffff, /* 35a3 */ 0xffff, /* 35a4 */ 0xffff, /* 35a5 */ 0xffff, /* 35a6 */ 0xffff, /* 35a7 */ 0xffff, /* 35a8 */ 0xffff, /* 35a9 */ 0xffff, /* 35aa */ 0xffff, /* 35ab */ 0xffff, /* 35ac */ 0xffff, /* 35ad */ 0xffff, /* 35ae */ 0xffff, /* 35af */ 0xffff, /* 35b0 */ 0xffff, /* 35b1 */ 0xffff, /* 35b2 */ 0xffff, /* 35b3 */ 0xffff, /* 35b4 */ 0xffff, /* 35b5 */ 0xffff, /* 35b6 */ 0xffff, /* 35b7 */ 0xffff, /* 35b8 */ 0xffff, /* 35b9 */ 0xffff, /* 35ba */ 0xffff, /* 35bb */ 0xffff, /* 35bc */ 0xffff, /* 35bd */ 0xffff, /* 35be */ 0xffff, /* 35bf */ 0xffff, /* 35c0 */ 0xffff, /* 35c1 */ 0xffff, /* 35c2 */ 0xffff, /* 35c3 */ 0xffff, /* 35c4 */ 0xffff, /* 35c5 */ 0xffff, /* 35c6 */ 0xffff, /* 35c7 */ 0xffff, /* 35c8 */ 0xffff, /* 35c9 */ 0xffff, /* 35ca */ 0xffff, /* 35cb */ 0xffff, /* 35cc */ 0xffff, /* 35cd */ 0xffff, /* 35ce */ 0xffff, /* 35cf */ 0xffff, /* 35d0 */ 0xffff, /* 35d1 */ 0xffff, /* 35d2 */ 0xffff, /* 35d3 */ 0xffff, /* 35d4 */ 0xffff, /* 35d5 */ 0xffff, /* 35d6 */ 0xffff, /* 35d7 */ 0xffff, /* 35d8 */ 0xffff, /* 35d9 */ 0xffff, /* 35da */ 0xffff, /* 35db */ 0xffff, /* 35dc */ 0xffff, /* 35dd */ 0xffff, /* 35de */ 0xffff, /* 35df */ 0xffff, /* 35e0 */ 0xffff, /* 35e1 */ 0xffff, /* 35e2 */ 0xffff, /* 35e3 */ 0xffff, /* 35e4 */ 0xffff, /* 35e5 */ 0xffff, /* 35e6 */ 0xffff, /* 35e7 */ 0xffff, /* 35e8 */ 0xffff, /* 35e9 */ 0xffff, /* 35ea */ 0xffff, /* 35eb */ 0xffff, /* 35ec */ 0xffff, /* 35ed */ 0xffff, /* 35ee */ 0xffff, /* 35ef */ 0xffff, /* 35f0 */ 0xffff, /* 35f1 */ 0xffff, /* 35f2 */ 0xffff, /* 35f3 */ 0xffff, /* 35f4 */ 0xffff, /* 35f5 */ 0xffff, /* 35f6 */ 0xffff, /* 35f7 */ 0xffff, /* 35f8 */ 0xffff, /* 35f9 */ 0xffff, /* 35fa */ 0xffff, /* 35fb */ 0xffff, /* 35fc */ 0xffff, /* 35fd */ 0xffff, /* 35fe */ 0xffff, /* 35ff */ 0xffff, /* 3600 */ 0xffff, /* 3601 */ 0xffff, /* 3602 */ 0xffff, /* 3603 */ 0xffff, /* 3604 */ 0xffff, /* 3605 */ 0xffff, /* 3606 */ 0xffff, /* 3607 */ 0xffff, /* 3608 */ 0xffff, /* 3609 */ 0xffff, /* 360a */ 0xffff, /* 360b */ 0xffff, /* 360c */ 0xffff, /* 360d */ 0xffff, /* 360e */ 0xffff, /* 360f */ 0xffff, /* 3610 */ 0xffff, /* 3611 */ 0xffff, /* 3612 */ 0xffff, /* 3613 */ 0xffff, /* 3614 */ 0xffff, /* 3615 */ 0xffff, /* 3616 */ 0xffff, /* 3617 */ 0xffff, /* 3618 */ 0xffff, /* 3619 */ 0xffff, /* 361a */ 0xffff, /* 361b */ 0xffff, /* 361c */ 0xffff, /* 361d */ 0xffff, /* 361e */ 0xffff, /* 361f */ 0xffff, /* 3620 */ 0xffff, /* 3621 */ 0xffff, /* 3622 */ 0xffff, /* 3623 */ 0xffff, /* 3624 */ 0xffff, /* 3625 */ 0xffff, /* 3626 */ 0xffff, /* 3627 */ 0xffff, /* 3628 */ 0xffff, /* 3629 */ 0xffff, /* 362a */ 0xffff, /* 362b */ 0xffff, /* 362c */ 0xffff, /* 362d */ 0xffff, /* 362e */ 0xffff, /* 362f */ 0xffff, /* 3630 */ 0xffff, /* 3631 */ 0xffff, /* 3632 */ 0xffff, /* 3633 */ 0xffff, /* 3634 */ 0xffff, /* 3635 */ 0xffff, /* 3636 */ 0xffff, /* 3637 */ 0xffff, /* 3638 */ 0xffff, /* 3639 */ 0xffff, /* 363a */ 0xffff, /* 363b */ 0xffff, /* 363c */ 0xffff, /* 363d */ 0xffff, /* 363e */ 0xffff, /* 363f */ 0xffff, /* 3640 */ 0xffff, /* 3641 */ 0xffff, /* 3642 */ 0xffff, /* 3643 */ 0xffff, /* 3644 */ 0xffff, /* 3645 */ 0xffff, /* 3646 */ 0xffff, /* 3647 */ 0xffff, /* 3648 */ 0xffff, /* 3649 */ 0xffff, /* 364a */ 0xffff, /* 364b */ 0xffff, /* 364c */ 0xffff, /* 364d */ 0xffff, /* 364e */ 0xffff, /* 364f */ 0xffff, /* 3650 */ 0xffff, /* 3651 */ 0xffff, /* 3652 */ 0xffff, /* 3653 */ 0xffff, /* 3654 */ 0xffff, /* 3655 */ 0xffff, /* 3656 */ 0xffff, /* 3657 */ 0xffff, /* 3658 */ 0xffff, /* 3659 */ 0xffff, /* 365a */ 0xffff, /* 365b */ 0xffff, /* 365c */ 0xffff, /* 365d */ 0xffff, /* 365e */ 0xffff, /* 365f */ 0xffff, /* 3660 */ 0xffff, /* 3661 */ 0xffff, /* 3662 */ 0xffff, /* 3663 */ 0xffff, /* 3664 */ 0xffff, /* 3665 */ 0xffff, /* 3666 */ 0xffff, /* 3667 */ 0xffff, /* 3668 */ 0xffff, /* 3669 */ 0xffff, /* 366a */ 0xffff, /* 366b */ 0xffff, /* 366c */ 0xffff, /* 366d */ 0xffff, /* 366e */ 0xffff, /* 366f */ 0xffff, /* 3670 */ 0xffff, /* 3671 */ 0xffff, /* 3672 */ 0xffff, /* 3673 */ 0xffff, /* 3674 */ 0xffff, /* 3675 */ 0xffff, /* 3676 */ 0xffff, /* 3677 */ 0xffff, /* 3678 */ 0xffff, /* 3679 */ 0xffff, /* 367a */ 0xffff, /* 367b */ 0xffff, /* 367c */ 0xffff, /* 367d */ 0xffff, /* 367e */ 0xffff, /* 367f */ 0xffff, /* 3680 */ 0xffff, /* 3681 */ 0xffff, /* 3682 */ 0xffff, /* 3683 */ 0xffff, /* 3684 */ 0xffff, /* 3685 */ 0xffff, /* 3686 */ 0xffff, /* 3687 */ 0xffff, /* 3688 */ 0xffff, /* 3689 */ 0xffff, /* 368a */ 0xffff, /* 368b */ 0xffff, /* 368c */ 0xffff, /* 368d */ 0xffff, /* 368e */ 0xffff, /* 368f */ 0xffff, /* 3690 */ 0xffff, /* 3691 */ 0xffff, /* 3692 */ 0xffff, /* 3693 */ 0xffff, /* 3694 */ 0xffff, /* 3695 */ 0xffff, /* 3696 */ 0xffff, /* 3697 */ 0xffff, /* 3698 */ 0xffff, /* 3699 */ 0xffff, /* 369a */ 0xffff, /* 369b */ 0xffff, /* 369c */ 0xffff, /* 369d */ 0xffff, /* 369e */ 0xffff, /* 369f */ 0xffff, /* 36a0 */ 0xffff, /* 36a1 */ 0xffff, /* 36a2 */ 0xffff, /* 36a3 */ 0xffff, /* 36a4 */ 0xffff, /* 36a5 */ 0xffff, /* 36a6 */ 0xffff, /* 36a7 */ 0xffff, /* 36a8 */ 0xffff, /* 36a9 */ 0xffff, /* 36aa */ 0xffff, /* 36ab */ 0xffff, /* 36ac */ 0xffff, /* 36ad */ 0xffff, /* 36ae */ 0xffff, /* 36af */ 0xffff, /* 36b0 */ 0xffff, /* 36b1 */ 0xffff, /* 36b2 */ 0xffff, /* 36b3 */ 0xffff, /* 36b4 */ 0xffff, /* 36b5 */ 0xffff, /* 36b6 */ 0xffff, /* 36b7 */ 0xffff, /* 36b8 */ 0xffff, /* 36b9 */ 0xffff, /* 36ba */ 0xffff, /* 36bb */ 0xffff, /* 36bc */ 0xffff, /* 36bd */ 0xffff, /* 36be */ 0xffff, /* 36bf */ 0xffff, /* 36c0 */ 0xffff, /* 36c1 */ 0xffff, /* 36c2 */ 0xffff, /* 36c3 */ 0xffff, /* 36c4 */ 0xffff, /* 36c5 */ 0xffff, /* 36c6 */ 0xffff, /* 36c7 */ 0xffff, /* 36c8 */ 0xffff, /* 36c9 */ 0xffff, /* 36ca */ 0xffff, /* 36cb */ 0xffff, /* 36cc */ 0xffff, /* 36cd */ 0xffff, /* 36ce */ 0xffff, /* 36cf */ 0xffff, /* 36d0 */ 0xffff, /* 36d1 */ 0xffff, /* 36d2 */ 0xffff, /* 36d3 */ 0xffff, /* 36d4 */ 0xffff, /* 36d5 */ 0xffff, /* 36d6 */ 0xffff, /* 36d7 */ 0xffff, /* 36d8 */ 0xffff, /* 36d9 */ 0xffff, /* 36da */ 0xffff, /* 36db */ 0xffff, /* 36dc */ 0xffff, /* 36dd */ 0xffff, /* 36de */ 0xffff, /* 36df */ 0xffff, /* 36e0 */ 0xffff, /* 36e1 */ 0xffff, /* 36e2 */ 0xffff, /* 36e3 */ 0xffff, /* 36e4 */ 0xffff, /* 36e5 */ 0xffff, /* 36e6 */ 0xffff, /* 36e7 */ 0xffff, /* 36e8 */ 0xffff, /* 36e9 */ 0xffff, /* 36ea */ 0xffff, /* 36eb */ 0xffff, /* 36ec */ 0xffff, /* 36ed */ 0xffff, /* 36ee */ 0xffff, /* 36ef */ 0xffff, /* 36f0 */ 0xffff, /* 36f1 */ 0xffff, /* 36f2 */ 0xffff, /* 36f3 */ 0xffff, /* 36f4 */ 0xffff, /* 36f5 */ 0xffff, /* 36f6 */ 0xffff, /* 36f7 */ 0xffff, /* 36f8 */ 0xffff, /* 36f9 */ 0xffff, /* 36fa */ 0xffff, /* 36fb */ 0xffff, /* 36fc */ 0xffff, /* 36fd */ 0xffff, /* 36fe */ 0xffff, /* 36ff */ 0xffff, /* 3700 */ 0xffff, /* 3701 */ 0xffff, /* 3702 */ 0xffff, /* 3703 */ 0xffff, /* 3704 */ 0xffff, /* 3705 */ 0xffff, /* 3706 */ 0xffff, /* 3707 */ 0xffff, /* 3708 */ 0xffff, /* 3709 */ 0xffff, /* 370a */ 0xffff, /* 370b */ 0xffff, /* 370c */ 0xffff, /* 370d */ 0xffff, /* 370e */ 0xffff, /* 370f */ 0xffff, /* 3710 */ 0xffff, /* 3711 */ 0xffff, /* 3712 */ 0xffff, /* 3713 */ 0xffff, /* 3714 */ 0xffff, /* 3715 */ 0xffff, /* 3716 */ 0xffff, /* 3717 */ 0xffff, /* 3718 */ 0xffff, /* 3719 */ 0xffff, /* 371a */ 0xffff, /* 371b */ 0xffff, /* 371c */ 0xffff, /* 371d */ 0xffff, /* 371e */ 0xffff, /* 371f */ 0xffff, /* 3720 */ 0xffff, /* 3721 */ 0xffff, /* 3722 */ 0xffff, /* 3723 */ 0xffff, /* 3724 */ 0xffff, /* 3725 */ 0xffff, /* 3726 */ 0xffff, /* 3727 */ 0xffff, /* 3728 */ 0xffff, /* 3729 */ 0xffff, /* 372a */ 0xffff, /* 372b */ 0xffff, /* 372c */ 0xffff, /* 372d */ 0xffff, /* 372e */ 0xffff, /* 372f */ 0xffff, /* 3730 */ 0xffff, /* 3731 */ 0xffff, /* 3732 */ 0xffff, /* 3733 */ 0xffff, /* 3734 */ 0xffff, /* 3735 */ 0xffff, /* 3736 */ 0xffff, /* 3737 */ 0xffff, /* 3738 */ 0xffff, /* 3739 */ 0xffff, /* 373a */ 0xffff, /* 373b */ 0xffff, /* 373c */ 0xffff, /* 373d */ 0xffff, /* 373e */ 0xffff, /* 373f */ 0xffff, /* 3740 */ 0xffff, /* 3741 */ 0xffff, /* 3742 */ 0xffff, /* 3743 */ 0xffff, /* 3744 */ 0xffff, /* 3745 */ 0xffff, /* 3746 */ 0xffff, /* 3747 */ 0xffff, /* 3748 */ 0xffff, /* 3749 */ 0xffff, /* 374a */ 0xffff, /* 374b */ 0xffff, /* 374c */ 0xffff, /* 374d */ 0xffff, /* 374e */ 0xffff, /* 374f */ 0xffff, /* 3750 */ 0xffff, /* 3751 */ 0xffff, /* 3752 */ 0xffff, /* 3753 */ 0xffff, /* 3754 */ 0xffff, /* 3755 */ 0xffff, /* 3756 */ 0xffff, /* 3757 */ 0xffff, /* 3758 */ 0xffff, /* 3759 */ 0xffff, /* 375a */ 0xffff, /* 375b */ 0xffff, /* 375c */ 0xffff, /* 375d */ 0xffff, /* 375e */ 0xffff, /* 375f */ 0xffff, /* 3760 */ 0xffff, /* 3761 */ 0xffff, /* 3762 */ 0xffff, /* 3763 */ 0xffff, /* 3764 */ 0xffff, /* 3765 */ 0xffff, /* 3766 */ 0xffff, /* 3767 */ 0xffff, /* 3768 */ 0xffff, /* 3769 */ 0xffff, /* 376a */ 0xffff, /* 376b */ 0xffff, /* 376c */ 0xffff, /* 376d */ 0xffff, /* 376e */ 0xffff, /* 376f */ 0xffff, /* 3770 */ 0xffff, /* 3771 */ 0xffff, /* 3772 */ 0xffff, /* 3773 */ 0xffff, /* 3774 */ 0xffff, /* 3775 */ 0xffff, /* 3776 */ 0xffff, /* 3777 */ 0xffff, /* 3778 */ 0xffff, /* 3779 */ 0xffff, /* 377a */ 0xffff, /* 377b */ 0xffff, /* 377c */ 0xffff, /* 377d */ 0xffff, /* 377e */ 0xffff, /* 377f */ 0xffff, /* 3780 */ 0xffff, /* 3781 */ 0xffff, /* 3782 */ 0xffff, /* 3783 */ 0xffff, /* 3784 */ 0xffff, /* 3785 */ 0xffff, /* 3786 */ 0xffff, /* 3787 */ 0xffff, /* 3788 */ 0xffff, /* 3789 */ 0xffff, /* 378a */ 0xffff, /* 378b */ 0xffff, /* 378c */ 0xffff, /* 378d */ 0xffff, /* 378e */ 0xffff, /* 378f */ 0xffff, /* 3790 */ 0xffff, /* 3791 */ 0xffff, /* 3792 */ 0xffff, /* 3793 */ 0xffff, /* 3794 */ 0xffff, /* 3795 */ 0xffff, /* 3796 */ 0xffff, /* 3797 */ 0xffff, /* 3798 */ 0xffff, /* 3799 */ 0xffff, /* 379a */ 0xffff, /* 379b */ 0xffff, /* 379c */ 0xffff, /* 379d */ 0xffff, /* 379e */ 0xffff, /* 379f */ 0xffff, /* 37a0 */ 0xffff, /* 37a1 */ 0xffff, /* 37a2 */ 0xffff, /* 37a3 */ 0xffff, /* 37a4 */ 0xffff, /* 37a5 */ 0xffff, /* 37a6 */ 0xffff, /* 37a7 */ 0xffff, /* 37a8 */ 0xffff, /* 37a9 */ 0xffff, /* 37aa */ 0xffff, /* 37ab */ 0xffff, /* 37ac */ 0xffff, /* 37ad */ 0xffff, /* 37ae */ 0xffff, /* 37af */ 0xffff, /* 37b0 */ 0xffff, /* 37b1 */ 0xffff, /* 37b2 */ 0xffff, /* 37b3 */ 0xffff, /* 37b4 */ 0xffff, /* 37b5 */ 0xffff, /* 37b6 */ 0xffff, /* 37b7 */ 0xffff, /* 37b8 */ 0xffff, /* 37b9 */ 0xffff, /* 37ba */ 0xffff, /* 37bb */ 0xffff, /* 37bc */ 0xffff, /* 37bd */ 0xffff, /* 37be */ 0xffff, /* 37bf */ 0xffff, /* 37c0 */ 0xffff, /* 37c1 */ 0xffff, /* 37c2 */ 0xffff, /* 37c3 */ 0xffff, /* 37c4 */ 0xffff, /* 37c5 */ 0xffff, /* 37c6 */ 0xffff, /* 37c7 */ 0xffff, /* 37c8 */ 0xffff, /* 37c9 */ 0xffff, /* 37ca */ 0xffff, /* 37cb */ 0xffff, /* 37cc */ 0xffff, /* 37cd */ 0xffff, /* 37ce */ 0xffff, /* 37cf */ 0xffff, /* 37d0 */ 0xffff, /* 37d1 */ 0xffff, /* 37d2 */ 0xffff, /* 37d3 */ 0xffff, /* 37d4 */ 0xffff, /* 37d5 */ 0xffff, /* 37d6 */ 0xffff, /* 37d7 */ 0xffff, /* 37d8 */ 0xffff, /* 37d9 */ 0xffff, /* 37da */ 0xffff, /* 37db */ 0xffff, /* 37dc */ 0xffff, /* 37dd */ 0xffff, /* 37de */ 0xffff, /* 37df */ 0xffff, /* 37e0 */ 0xffff, /* 37e1 */ 0xffff, /* 37e2 */ 0xffff, /* 37e3 */ 0xffff, /* 37e4 */ 0xffff, /* 37e5 */ 0xffff, /* 37e6 */ 0xffff, /* 37e7 */ 0xffff, /* 37e8 */ 0xffff, /* 37e9 */ 0xffff, /* 37ea */ 0xffff, /* 37eb */ 0xffff, /* 37ec */ 0xffff, /* 37ed */ 0xffff, /* 37ee */ 0xffff, /* 37ef */ 0xffff, /* 37f0 */ 0xffff, /* 37f1 */ 0xffff, /* 37f2 */ 0xffff, /* 37f3 */ 0xffff, /* 37f4 */ 0xffff, /* 37f5 */ 0xffff, /* 37f6 */ 0xffff, /* 37f7 */ 0xffff, /* 37f8 */ 0xffff, /* 37f9 */ 0xffff, /* 37fa */ 0xffff, /* 37fb */ 0xffff, /* 37fc */ 0xffff, /* 37fd */ 0xffff, /* 37fe */ 0xffff, /* 37ff */ 0xffff, /* 3800 */ 0xffff, /* 3801 */ 0xffff, /* 3802 */ 0xffff, /* 3803 */ 0xffff, /* 3804 */ 0xffff, /* 3805 */ 0xffff, /* 3806 */ 0xffff, /* 3807 */ 0xffff, /* 3808 */ 0xffff, /* 3809 */ 0xffff, /* 380a */ 0xffff, /* 380b */ 0xffff, /* 380c */ 0xffff, /* 380d */ 0xffff, /* 380e */ 0xffff, /* 380f */ 0xffff, /* 3810 */ 0xffff, /* 3811 */ 0xffff, /* 3812 */ 0xffff, /* 3813 */ 0xffff, /* 3814 */ 0xffff, /* 3815 */ 0xffff, /* 3816 */ 0xffff, /* 3817 */ 0xffff, /* 3818 */ 0xffff, /* 3819 */ 0xffff, /* 381a */ 0xffff, /* 381b */ 0xffff, /* 381c */ 0xffff, /* 381d */ 0xffff, /* 381e */ 0xffff, /* 381f */ 0xffff, /* 3820 */ 0xffff, /* 3821 */ 0xffff, /* 3822 */ 0xffff, /* 3823 */ 0xffff, /* 3824 */ 0xffff, /* 3825 */ 0xffff, /* 3826 */ 0xffff, /* 3827 */ 0xffff, /* 3828 */ 0xffff, /* 3829 */ 0xffff, /* 382a */ 0xffff, /* 382b */ 0xffff, /* 382c */ 0xffff, /* 382d */ 0xffff, /* 382e */ 0xffff, /* 382f */ 0xffff, /* 3830 */ 0xffff, /* 3831 */ 0xffff, /* 3832 */ 0xffff, /* 3833 */ 0xffff, /* 3834 */ 0xffff, /* 3835 */ 0xffff, /* 3836 */ 0xffff, /* 3837 */ 0xffff, /* 3838 */ 0xffff, /* 3839 */ 0xffff, /* 383a */ 0xffff, /* 383b */ 0xffff, /* 383c */ 0xffff, /* 383d */ 0xffff, /* 383e */ 0xffff, /* 383f */ 0xffff, /* 3840 */ 0xffff, /* 3841 */ 0xffff, /* 3842 */ 0xffff, /* 3843 */ 0xffff, /* 3844 */ 0xffff, /* 3845 */ 0xffff, /* 3846 */ 0xffff, /* 3847 */ 0xffff, /* 3848 */ 0xffff, /* 3849 */ 0xffff, /* 384a */ 0xffff, /* 384b */ 0xffff, /* 384c */ 0xffff, /* 384d */ 0xffff, /* 384e */ 0xffff, /* 384f */ 0xffff, /* 3850 */ 0xffff, /* 3851 */ 0xffff, /* 3852 */ 0xffff, /* 3853 */ 0xffff, /* 3854 */ 0xffff, /* 3855 */ 0xffff, /* 3856 */ 0xffff, /* 3857 */ 0xffff, /* 3858 */ 0xffff, /* 3859 */ 0xffff, /* 385a */ 0xffff, /* 385b */ 0xffff, /* 385c */ 0xffff, /* 385d */ 0xffff, /* 385e */ 0xffff, /* 385f */ 0xffff, /* 3860 */ 0xffff, /* 3861 */ 0xffff, /* 3862 */ 0xffff, /* 3863 */ 0xffff, /* 3864 */ 0xffff, /* 3865 */ 0xffff, /* 3866 */ 0xffff, /* 3867 */ 0xffff, /* 3868 */ 0xffff, /* 3869 */ 0xffff, /* 386a */ 0xffff, /* 386b */ 0xffff, /* 386c */ 0xffff, /* 386d */ 0xffff, /* 386e */ 0xffff, /* 386f */ 0xffff, /* 3870 */ 0xffff, /* 3871 */ 0xffff, /* 3872 */ 0xffff, /* 3873 */ 0xffff, /* 3874 */ 0xffff, /* 3875 */ 0xffff, /* 3876 */ 0xffff, /* 3877 */ 0xffff, /* 3878 */ 0xffff, /* 3879 */ 0xffff, /* 387a */ 0xffff, /* 387b */ 0xffff, /* 387c */ 0xffff, /* 387d */ 0xffff, /* 387e */ 0xffff, /* 387f */ 0xffff, /* 3880 */ 0xffff, /* 3881 */ 0xffff, /* 3882 */ 0xffff, /* 3883 */ 0xffff, /* 3884 */ 0xffff, /* 3885 */ 0xffff, /* 3886 */ 0xffff, /* 3887 */ 0xffff, /* 3888 */ 0xffff, /* 3889 */ 0xffff, /* 388a */ 0xffff, /* 388b */ 0xffff, /* 388c */ 0xffff, /* 388d */ 0xffff, /* 388e */ 0xffff, /* 388f */ 0xffff, /* 3890 */ 0xffff, /* 3891 */ 0xffff, /* 3892 */ 0xffff, /* 3893 */ 0xffff, /* 3894 */ 0xffff, /* 3895 */ 0xffff, /* 3896 */ 0xffff, /* 3897 */ 0xffff, /* 3898 */ 0xffff, /* 3899 */ 0xffff, /* 389a */ 0xffff, /* 389b */ 0xffff, /* 389c */ 0xffff, /* 389d */ 0xffff, /* 389e */ 0xffff, /* 389f */ 0xffff, /* 38a0 */ 0xffff, /* 38a1 */ 0xffff, /* 38a2 */ 0xffff, /* 38a3 */ 0xffff, /* 38a4 */ 0xffff, /* 38a5 */ 0xffff, /* 38a6 */ 0xffff, /* 38a7 */ 0xffff, /* 38a8 */ 0xffff, /* 38a9 */ 0xffff, /* 38aa */ 0xffff, /* 38ab */ 0xffff, /* 38ac */ 0xffff, /* 38ad */ 0xffff, /* 38ae */ 0xffff, /* 38af */ 0xffff, /* 38b0 */ 0xffff, /* 38b1 */ 0xffff, /* 38b2 */ 0xffff, /* 38b3 */ 0xffff, /* 38b4 */ 0xffff, /* 38b5 */ 0xffff, /* 38b6 */ 0xffff, /* 38b7 */ 0xffff, /* 38b8 */ 0xffff, /* 38b9 */ 0xffff, /* 38ba */ 0xffff, /* 38bb */ 0xffff, /* 38bc */ 0xffff, /* 38bd */ 0xffff, /* 38be */ 0xffff, /* 38bf */ 0xffff, /* 38c0 */ 0xffff, /* 38c1 */ 0xffff, /* 38c2 */ 0xffff, /* 38c3 */ 0xffff, /* 38c4 */ 0xffff, /* 38c5 */ 0xffff, /* 38c6 */ 0xffff, /* 38c7 */ 0xffff, /* 38c8 */ 0xffff, /* 38c9 */ 0xffff, /* 38ca */ 0xffff, /* 38cb */ 0xffff, /* 38cc */ 0xffff, /* 38cd */ 0xffff, /* 38ce */ 0xffff, /* 38cf */ 0xffff, /* 38d0 */ 0xffff, /* 38d1 */ 0xffff, /* 38d2 */ 0xffff, /* 38d3 */ 0xffff, /* 38d4 */ 0xffff, /* 38d5 */ 0xffff, /* 38d6 */ 0xffff, /* 38d7 */ 0xffff, /* 38d8 */ 0xffff, /* 38d9 */ 0xffff, /* 38da */ 0xffff, /* 38db */ 0xffff, /* 38dc */ 0xffff, /* 38dd */ 0xffff, /* 38de */ 0xffff, /* 38df */ 0xffff, /* 38e0 */ 0xffff, /* 38e1 */ 0xffff, /* 38e2 */ 0xffff, /* 38e3 */ 0xffff, /* 38e4 */ 0xffff, /* 38e5 */ 0xffff, /* 38e6 */ 0xffff, /* 38e7 */ 0xffff, /* 38e8 */ 0xffff, /* 38e9 */ 0xffff, /* 38ea */ 0xffff, /* 38eb */ 0xffff, /* 38ec */ 0xffff, /* 38ed */ 0xffff, /* 38ee */ 0xffff, /* 38ef */ 0xffff, /* 38f0 */ 0xffff, /* 38f1 */ 0xffff, /* 38f2 */ 0xffff, /* 38f3 */ 0xffff, /* 38f4 */ 0xffff, /* 38f5 */ 0xffff, /* 38f6 */ 0xffff, /* 38f7 */ 0xffff, /* 38f8 */ 0xffff, /* 38f9 */ 0xffff, /* 38fa */ 0xffff, /* 38fb */ 0xffff, /* 38fc */ 0xffff, /* 38fd */ 0xffff, /* 38fe */ 0xffff, /* 38ff */ 0xffff, /* 3900 */ 0xffff, /* 3901 */ 0xffff, /* 3902 */ 0xffff, /* 3903 */ 0xffff, /* 3904 */ 0xffff, /* 3905 */ 0xffff, /* 3906 */ 0xffff, /* 3907 */ 0xffff, /* 3908 */ 0xffff, /* 3909 */ 0xffff, /* 390a */ 0xffff, /* 390b */ 0xffff, /* 390c */ 0xffff, /* 390d */ 0xffff, /* 390e */ 0xffff, /* 390f */ 0xffff, /* 3910 */ 0xffff, /* 3911 */ 0xffff, /* 3912 */ 0xffff, /* 3913 */ 0xffff, /* 3914 */ 0xffff, /* 3915 */ 0xffff, /* 3916 */ 0xffff, /* 3917 */ 0xffff, /* 3918 */ 0xffff, /* 3919 */ 0xffff, /* 391a */ 0xffff, /* 391b */ 0xffff, /* 391c */ 0xffff, /* 391d */ 0xffff, /* 391e */ 0xffff, /* 391f */ 0xffff, /* 3920 */ 0xffff, /* 3921 */ 0xffff, /* 3922 */ 0xffff, /* 3923 */ 0xffff, /* 3924 */ 0xffff, /* 3925 */ 0xffff, /* 3926 */ 0xffff, /* 3927 */ 0xffff, /* 3928 */ 0xffff, /* 3929 */ 0xffff, /* 392a */ 0xffff, /* 392b */ 0xffff, /* 392c */ 0xffff, /* 392d */ 0xffff, /* 392e */ 0xffff, /* 392f */ 0xffff, /* 3930 */ 0xffff, /* 3931 */ 0xffff, /* 3932 */ 0xffff, /* 3933 */ 0xffff, /* 3934 */ 0xffff, /* 3935 */ 0xffff, /* 3936 */ 0xffff, /* 3937 */ 0xffff, /* 3938 */ 0xffff, /* 3939 */ 0xffff, /* 393a */ 0xffff, /* 393b */ 0xffff, /* 393c */ 0xffff, /* 393d */ 0xffff, /* 393e */ 0xffff, /* 393f */ 0xffff, /* 3940 */ 0xffff, /* 3941 */ 0xffff, /* 3942 */ 0xffff, /* 3943 */ 0xffff, /* 3944 */ 0xffff, /* 3945 */ 0xffff, /* 3946 */ 0xffff, /* 3947 */ 0xffff, /* 3948 */ 0xffff, /* 3949 */ 0xffff, /* 394a */ 0xffff, /* 394b */ 0xffff, /* 394c */ 0xffff, /* 394d */ 0xffff, /* 394e */ 0xffff, /* 394f */ 0xffff, /* 3950 */ 0xffff, /* 3951 */ 0xffff, /* 3952 */ 0xffff, /* 3953 */ 0xffff, /* 3954 */ 0xffff, /* 3955 */ 0xffff, /* 3956 */ 0xffff, /* 3957 */ 0xffff, /* 3958 */ 0xffff, /* 3959 */ 0xffff, /* 395a */ 0xffff, /* 395b */ 0xffff, /* 395c */ 0xffff, /* 395d */ 0xffff, /* 395e */ 0xffff, /* 395f */ 0xffff, /* 3960 */ 0xffff, /* 3961 */ 0xffff, /* 3962 */ 0xffff, /* 3963 */ 0xffff, /* 3964 */ 0xffff, /* 3965 */ 0xffff, /* 3966 */ 0xffff, /* 3967 */ 0xffff, /* 3968 */ 0xffff, /* 3969 */ 0xffff, /* 396a */ 0xffff, /* 396b */ 0xffff, /* 396c */ 0xffff, /* 396d */ 0xffff, /* 396e */ 0xffff, /* 396f */ 0xffff, /* 3970 */ 0xffff, /* 3971 */ 0xffff, /* 3972 */ 0xffff, /* 3973 */ 0xffff, /* 3974 */ 0xffff, /* 3975 */ 0xffff, /* 3976 */ 0xffff, /* 3977 */ 0xffff, /* 3978 */ 0xffff, /* 3979 */ 0xffff, /* 397a */ 0xffff, /* 397b */ 0xffff, /* 397c */ 0xffff, /* 397d */ 0xffff, /* 397e */ 0xffff, /* 397f */ 0xffff, /* 3980 */ 0xffff, /* 3981 */ 0xffff, /* 3982 */ 0xffff, /* 3983 */ 0xffff, /* 3984 */ 0xffff, /* 3985 */ 0xffff, /* 3986 */ 0xffff, /* 3987 */ 0xffff, /* 3988 */ 0xffff, /* 3989 */ 0xffff, /* 398a */ 0xffff, /* 398b */ 0xffff, /* 398c */ 0xffff, /* 398d */ 0xffff, /* 398e */ 0xffff, /* 398f */ 0xffff, /* 3990 */ 0xffff, /* 3991 */ 0xffff, /* 3992 */ 0xffff, /* 3993 */ 0xffff, /* 3994 */ 0xffff, /* 3995 */ 0xffff, /* 3996 */ 0xffff, /* 3997 */ 0xffff, /* 3998 */ 0xffff, /* 3999 */ 0xffff, /* 399a */ 0xffff, /* 399b */ 0xffff, /* 399c */ 0xffff, /* 399d */ 0xffff, /* 399e */ 0xffff, /* 399f */ 0xffff, /* 39a0 */ 0xffff, /* 39a1 */ 0xffff, /* 39a2 */ 0xffff, /* 39a3 */ 0xffff, /* 39a4 */ 0xffff, /* 39a5 */ 0xffff, /* 39a6 */ 0xffff, /* 39a7 */ 0xffff, /* 39a8 */ 0xffff, /* 39a9 */ 0xffff, /* 39aa */ 0xffff, /* 39ab */ 0xffff, /* 39ac */ 0xffff, /* 39ad */ 0xffff, /* 39ae */ 0xffff, /* 39af */ 0xffff, /* 39b0 */ 0xffff, /* 39b1 */ 0xffff, /* 39b2 */ 0xffff, /* 39b3 */ 0xffff, /* 39b4 */ 0xffff, /* 39b5 */ 0xffff, /* 39b6 */ 0xffff, /* 39b7 */ 0xffff, /* 39b8 */ 0xffff, /* 39b9 */ 0xffff, /* 39ba */ 0xffff, /* 39bb */ 0xffff, /* 39bc */ 0xffff, /* 39bd */ 0xffff, /* 39be */ 0xffff, /* 39bf */ 0xffff, /* 39c0 */ 0xffff, /* 39c1 */ 0xffff, /* 39c2 */ 0xffff, /* 39c3 */ 0xffff, /* 39c4 */ 0xffff, /* 39c5 */ 0xffff, /* 39c6 */ 0xffff, /* 39c7 */ 0xffff, /* 39c8 */ 0xffff, /* 39c9 */ 0xffff, /* 39ca */ 0xffff, /* 39cb */ 0xffff, /* 39cc */ 0xffff, /* 39cd */ 0xffff, /* 39ce */ 0xffff, /* 39cf */ 0xffff, /* 39d0 */ 0xffff, /* 39d1 */ 0xffff, /* 39d2 */ 0xffff, /* 39d3 */ 0xffff, /* 39d4 */ 0xffff, /* 39d5 */ 0xffff, /* 39d6 */ 0xffff, /* 39d7 */ 0xffff, /* 39d8 */ 0xffff, /* 39d9 */ 0xffff, /* 39da */ 0xffff, /* 39db */ 0xffff, /* 39dc */ 0xffff, /* 39dd */ 0xffff, /* 39de */ 0xffff, /* 39df */ 0xffff, /* 39e0 */ 0xffff, /* 39e1 */ 0xffff, /* 39e2 */ 0xffff, /* 39e3 */ 0xffff, /* 39e4 */ 0xffff, /* 39e5 */ 0xffff, /* 39e6 */ 0xffff, /* 39e7 */ 0xffff, /* 39e8 */ 0xffff, /* 39e9 */ 0xffff, /* 39ea */ 0xffff, /* 39eb */ 0xffff, /* 39ec */ 0xffff, /* 39ed */ 0xffff, /* 39ee */ 0xffff, /* 39ef */ 0xffff, /* 39f0 */ 0xffff, /* 39f1 */ 0xffff, /* 39f2 */ 0xffff, /* 39f3 */ 0xffff, /* 39f4 */ 0xffff, /* 39f5 */ 0xffff, /* 39f6 */ 0xffff, /* 39f7 */ 0xffff, /* 39f8 */ 0xffff, /* 39f9 */ 0xffff, /* 39fa */ 0xffff, /* 39fb */ 0xffff, /* 39fc */ 0xffff, /* 39fd */ 0xffff, /* 39fe */ 0xffff, /* 39ff */ 0xffff, /* 3a00 */ 0xffff, /* 3a01 */ 0xffff, /* 3a02 */ 0xffff, /* 3a03 */ 0xffff, /* 3a04 */ 0xffff, /* 3a05 */ 0xffff, /* 3a06 */ 0xffff, /* 3a07 */ 0xffff, /* 3a08 */ 0xffff, /* 3a09 */ 0xffff, /* 3a0a */ 0xffff, /* 3a0b */ 0xffff, /* 3a0c */ 0xffff, /* 3a0d */ 0xffff, /* 3a0e */ 0xffff, /* 3a0f */ 0xffff, /* 3a10 */ 0xffff, /* 3a11 */ 0xffff, /* 3a12 */ 0xffff, /* 3a13 */ 0xffff, /* 3a14 */ 0xffff, /* 3a15 */ 0xffff, /* 3a16 */ 0xffff, /* 3a17 */ 0xffff, /* 3a18 */ 0xffff, /* 3a19 */ 0xffff, /* 3a1a */ 0xffff, /* 3a1b */ 0xffff, /* 3a1c */ 0xffff, /* 3a1d */ 0xffff, /* 3a1e */ 0xffff, /* 3a1f */ 0xffff, /* 3a20 */ 0xffff, /* 3a21 */ 0xffff, /* 3a22 */ 0xffff, /* 3a23 */ 0xffff, /* 3a24 */ 0xffff, /* 3a25 */ 0xffff, /* 3a26 */ 0xffff, /* 3a27 */ 0xffff, /* 3a28 */ 0xffff, /* 3a29 */ 0xffff, /* 3a2a */ 0xffff, /* 3a2b */ 0xffff, /* 3a2c */ 0xffff, /* 3a2d */ 0xffff, /* 3a2e */ 0xffff, /* 3a2f */ 0xffff, /* 3a30 */ 0xffff, /* 3a31 */ 0xffff, /* 3a32 */ 0xffff, /* 3a33 */ 0xffff, /* 3a34 */ 0xffff, /* 3a35 */ 0xffff, /* 3a36 */ 0xffff, /* 3a37 */ 0xffff, /* 3a38 */ 0xffff, /* 3a39 */ 0xffff, /* 3a3a */ 0xffff, /* 3a3b */ 0xffff, /* 3a3c */ 0xffff, /* 3a3d */ 0xffff, /* 3a3e */ 0xffff, /* 3a3f */ 0xffff, /* 3a40 */ 0xffff, /* 3a41 */ 0xffff, /* 3a42 */ 0xffff, /* 3a43 */ 0xffff, /* 3a44 */ 0xffff, /* 3a45 */ 0xffff, /* 3a46 */ 0xffff, /* 3a47 */ 0xffff, /* 3a48 */ 0xffff, /* 3a49 */ 0xffff, /* 3a4a */ 0xffff, /* 3a4b */ 0xffff, /* 3a4c */ 0xffff, /* 3a4d */ 0xffff, /* 3a4e */ 0xffff, /* 3a4f */ 0xffff, /* 3a50 */ 0xffff, /* 3a51 */ 0xffff, /* 3a52 */ 0xffff, /* 3a53 */ 0xffff, /* 3a54 */ 0xffff, /* 3a55 */ 0xffff, /* 3a56 */ 0xffff, /* 3a57 */ 0xffff, /* 3a58 */ 0xffff, /* 3a59 */ 0xffff, /* 3a5a */ 0xffff, /* 3a5b */ 0xffff, /* 3a5c */ 0xffff, /* 3a5d */ 0xffff, /* 3a5e */ 0xffff, /* 3a5f */ 0xffff, /* 3a60 */ 0xffff, /* 3a61 */ 0xffff, /* 3a62 */ 0xffff, /* 3a63 */ 0xffff, /* 3a64 */ 0xffff, /* 3a65 */ 0xffff, /* 3a66 */ 0xffff, /* 3a67 */ 0xffff, /* 3a68 */ 0xffff, /* 3a69 */ 0xffff, /* 3a6a */ 0xffff, /* 3a6b */ 0xffff, /* 3a6c */ 0xffff, /* 3a6d */ 0xffff, /* 3a6e */ 0xffff, /* 3a6f */ 0xffff, /* 3a70 */ 0xffff, /* 3a71 */ 0xffff, /* 3a72 */ 0xffff, /* 3a73 */ 0xffff, /* 3a74 */ 0xffff, /* 3a75 */ 0xffff, /* 3a76 */ 0xffff, /* 3a77 */ 0xffff, /* 3a78 */ 0xffff, /* 3a79 */ 0xffff, /* 3a7a */ 0xffff, /* 3a7b */ 0xffff, /* 3a7c */ 0xffff, /* 3a7d */ 0xffff, /* 3a7e */ 0xffff, /* 3a7f */ 0xffff, /* 3a80 */ 0xffff, /* 3a81 */ 0xffff, /* 3a82 */ 0xffff, /* 3a83 */ 0xffff, /* 3a84 */ 0xffff, /* 3a85 */ 0xffff, /* 3a86 */ 0xffff, /* 3a87 */ 0xffff, /* 3a88 */ 0xffff, /* 3a89 */ 0xffff, /* 3a8a */ 0xffff, /* 3a8b */ 0xffff, /* 3a8c */ 0xffff, /* 3a8d */ 0xffff, /* 3a8e */ 0xffff, /* 3a8f */ 0xffff, /* 3a90 */ 0xffff, /* 3a91 */ 0xffff, /* 3a92 */ 0xffff, /* 3a93 */ 0xffff, /* 3a94 */ 0xffff, /* 3a95 */ 0xffff, /* 3a96 */ 0xffff, /* 3a97 */ 0xffff, /* 3a98 */ 0xffff, /* 3a99 */ 0xffff, /* 3a9a */ 0xffff, /* 3a9b */ 0xffff, /* 3a9c */ 0xffff, /* 3a9d */ 0xffff, /* 3a9e */ 0xffff, /* 3a9f */ 0xffff, /* 3aa0 */ 0xffff, /* 3aa1 */ 0xffff, /* 3aa2 */ 0xffff, /* 3aa3 */ 0xffff, /* 3aa4 */ 0xffff, /* 3aa5 */ 0xffff, /* 3aa6 */ 0xffff, /* 3aa7 */ 0xffff, /* 3aa8 */ 0xffff, /* 3aa9 */ 0xffff, /* 3aaa */ 0xffff, /* 3aab */ 0xffff, /* 3aac */ 0xffff, /* 3aad */ 0xffff, /* 3aae */ 0xffff, /* 3aaf */ 0xffff, /* 3ab0 */ 0xffff, /* 3ab1 */ 0xffff, /* 3ab2 */ 0xffff, /* 3ab3 */ 0xffff, /* 3ab4 */ 0xffff, /* 3ab5 */ 0xffff, /* 3ab6 */ 0xffff, /* 3ab7 */ 0xffff, /* 3ab8 */ 0xffff, /* 3ab9 */ 0xffff, /* 3aba */ 0xffff, /* 3abb */ 0xffff, /* 3abc */ 0xffff, /* 3abd */ 0xffff, /* 3abe */ 0xffff, /* 3abf */ 0xffff, /* 3ac0 */ 0xffff, /* 3ac1 */ 0xffff, /* 3ac2 */ 0xffff, /* 3ac3 */ 0xffff, /* 3ac4 */ 0xffff, /* 3ac5 */ 0xffff, /* 3ac6 */ 0xffff, /* 3ac7 */ 0xffff, /* 3ac8 */ 0xffff, /* 3ac9 */ 0xffff, /* 3aca */ 0xffff, /* 3acb */ 0xffff, /* 3acc */ 0xffff, /* 3acd */ 0xffff, /* 3ace */ 0xffff, /* 3acf */ 0xffff, /* 3ad0 */ 0xffff, /* 3ad1 */ 0xffff, /* 3ad2 */ 0xffff, /* 3ad3 */ 0xffff, /* 3ad4 */ 0xffff, /* 3ad5 */ 0xffff, /* 3ad6 */ 0xffff, /* 3ad7 */ 0xffff, /* 3ad8 */ 0xffff, /* 3ad9 */ 0xffff, /* 3ada */ 0xffff, /* 3adb */ 0xffff, /* 3adc */ 0xffff, /* 3add */ 0xffff, /* 3ade */ 0xffff, /* 3adf */ 0xffff, /* 3ae0 */ 0xffff, /* 3ae1 */ 0xffff, /* 3ae2 */ 0xffff, /* 3ae3 */ 0xffff, /* 3ae4 */ 0xffff, /* 3ae5 */ 0xffff, /* 3ae6 */ 0xffff, /* 3ae7 */ 0xffff, /* 3ae8 */ 0xffff, /* 3ae9 */ 0xffff, /* 3aea */ 0xffff, /* 3aeb */ 0xffff, /* 3aec */ 0xffff, /* 3aed */ 0xffff, /* 3aee */ 0xffff, /* 3aef */ 0xffff, /* 3af0 */ 0xffff, /* 3af1 */ 0xffff, /* 3af2 */ 0xffff, /* 3af3 */ 0xffff, /* 3af4 */ 0xffff, /* 3af5 */ 0xffff, /* 3af6 */ 0xffff, /* 3af7 */ 0xffff, /* 3af8 */ 0xffff, /* 3af9 */ 0xffff, /* 3afa */ 0xffff, /* 3afb */ 0xffff, /* 3afc */ 0xffff, /* 3afd */ 0xffff, /* 3afe */ 0xffff, /* 3aff */ 0xffff, /* 3b00 */ 0xffff, /* 3b01 */ 0xffff, /* 3b02 */ 0xffff, /* 3b03 */ 0xffff, /* 3b04 */ 0xffff, /* 3b05 */ 0xffff, /* 3b06 */ 0xffff, /* 3b07 */ 0xffff, /* 3b08 */ 0xffff, /* 3b09 */ 0xffff, /* 3b0a */ 0xffff, /* 3b0b */ 0xffff, /* 3b0c */ 0xffff, /* 3b0d */ 0xffff, /* 3b0e */ 0xffff, /* 3b0f */ 0xffff, /* 3b10 */ 0xffff, /* 3b11 */ 0xffff, /* 3b12 */ 0xffff, /* 3b13 */ 0xffff, /* 3b14 */ 0xffff, /* 3b15 */ 0xffff, /* 3b16 */ 0xffff, /* 3b17 */ 0xffff, /* 3b18 */ 0xffff, /* 3b19 */ 0xffff, /* 3b1a */ 0xffff, /* 3b1b */ 0xffff, /* 3b1c */ 0xffff, /* 3b1d */ 0xffff, /* 3b1e */ 0xffff, /* 3b1f */ 0xffff, /* 3b20 */ 0xffff, /* 3b21 */ 0xffff, /* 3b22 */ 0xffff, /* 3b23 */ 0xffff, /* 3b24 */ 0xffff, /* 3b25 */ 0xffff, /* 3b26 */ 0xffff, /* 3b27 */ 0xffff, /* 3b28 */ 0xffff, /* 3b29 */ 0xffff, /* 3b2a */ 0xffff, /* 3b2b */ 0xffff, /* 3b2c */ 0xffff, /* 3b2d */ 0xffff, /* 3b2e */ 0xffff, /* 3b2f */ 0xffff, /* 3b30 */ 0xffff, /* 3b31 */ 0xffff, /* 3b32 */ 0xffff, /* 3b33 */ 0xffff, /* 3b34 */ 0xffff, /* 3b35 */ 0xffff, /* 3b36 */ 0xffff, /* 3b37 */ 0xffff, /* 3b38 */ 0xffff, /* 3b39 */ 0xffff, /* 3b3a */ 0xffff, /* 3b3b */ 0xffff, /* 3b3c */ 0xffff, /* 3b3d */ 0xffff, /* 3b3e */ 0xffff, /* 3b3f */ 0xffff, /* 3b40 */ 0xffff, /* 3b41 */ 0xffff, /* 3b42 */ 0xffff, /* 3b43 */ 0xffff, /* 3b44 */ 0xffff, /* 3b45 */ 0xffff, /* 3b46 */ 0xffff, /* 3b47 */ 0xffff, /* 3b48 */ 0xffff, /* 3b49 */ 0xffff, /* 3b4a */ 0xffff, /* 3b4b */ 0xffff, /* 3b4c */ 0xffff, /* 3b4d */ 0xffff, /* 3b4e */ 0xffff, /* 3b4f */ 0xffff, /* 3b50 */ 0xffff, /* 3b51 */ 0xffff, /* 3b52 */ 0xffff, /* 3b53 */ 0xffff, /* 3b54 */ 0xffff, /* 3b55 */ 0xffff, /* 3b56 */ 0xffff, /* 3b57 */ 0xffff, /* 3b58 */ 0xffff, /* 3b59 */ 0xffff, /* 3b5a */ 0xffff, /* 3b5b */ 0xffff, /* 3b5c */ 0xffff, /* 3b5d */ 0xffff, /* 3b5e */ 0xffff, /* 3b5f */ 0xffff, /* 3b60 */ 0xffff, /* 3b61 */ 0xffff, /* 3b62 */ 0xffff, /* 3b63 */ 0xffff, /* 3b64 */ 0xffff, /* 3b65 */ 0xffff, /* 3b66 */ 0xffff, /* 3b67 */ 0xffff, /* 3b68 */ 0xffff, /* 3b69 */ 0xffff, /* 3b6a */ 0xffff, /* 3b6b */ 0xffff, /* 3b6c */ 0xffff, /* 3b6d */ 0xffff, /* 3b6e */ 0xffff, /* 3b6f */ 0xffff, /* 3b70 */ 0xffff, /* 3b71 */ 0xffff, /* 3b72 */ 0xffff, /* 3b73 */ 0xffff, /* 3b74 */ 0xffff, /* 3b75 */ 0xffff, /* 3b76 */ 0xffff, /* 3b77 */ 0xffff, /* 3b78 */ 0xffff, /* 3b79 */ 0xffff, /* 3b7a */ 0xffff, /* 3b7b */ 0xffff, /* 3b7c */ 0xffff, /* 3b7d */ 0xffff, /* 3b7e */ 0xffff, /* 3b7f */ 0xffff, /* 3b80 */ 0xffff, /* 3b81 */ 0xffff, /* 3b82 */ 0xffff, /* 3b83 */ 0xffff, /* 3b84 */ 0xffff, /* 3b85 */ 0xffff, /* 3b86 */ 0xffff, /* 3b87 */ 0xffff, /* 3b88 */ 0xffff, /* 3b89 */ 0xffff, /* 3b8a */ 0xffff, /* 3b8b */ 0xffff, /* 3b8c */ 0xffff, /* 3b8d */ 0xffff, /* 3b8e */ 0xffff, /* 3b8f */ 0xffff, /* 3b90 */ 0xffff, /* 3b91 */ 0xffff, /* 3b92 */ 0xffff, /* 3b93 */ 0xffff, /* 3b94 */ 0xffff, /* 3b95 */ 0xffff, /* 3b96 */ 0xffff, /* 3b97 */ 0xffff, /* 3b98 */ 0xffff, /* 3b99 */ 0xffff, /* 3b9a */ 0xffff, /* 3b9b */ 0xffff, /* 3b9c */ 0xffff, /* 3b9d */ 0xffff, /* 3b9e */ 0xffff, /* 3b9f */ 0xffff, /* 3ba0 */ 0xffff, /* 3ba1 */ 0xffff, /* 3ba2 */ 0xffff, /* 3ba3 */ 0xffff, /* 3ba4 */ 0xffff, /* 3ba5 */ 0xffff, /* 3ba6 */ 0xffff, /* 3ba7 */ 0xffff, /* 3ba8 */ 0xffff, /* 3ba9 */ 0xffff, /* 3baa */ 0xffff, /* 3bab */ 0xffff, /* 3bac */ 0xffff, /* 3bad */ 0xffff, /* 3bae */ 0xffff, /* 3baf */ 0xffff, /* 3bb0 */ 0xffff, /* 3bb1 */ 0xffff, /* 3bb2 */ 0xffff, /* 3bb3 */ 0xffff, /* 3bb4 */ 0xffff, /* 3bb5 */ 0xffff, /* 3bb6 */ 0xffff, /* 3bb7 */ 0xffff, /* 3bb8 */ 0xffff, /* 3bb9 */ 0xffff, /* 3bba */ 0xffff, /* 3bbb */ 0xffff, /* 3bbc */ 0xffff, /* 3bbd */ 0xffff, /* 3bbe */ 0xffff, /* 3bbf */ 0xffff, /* 3bc0 */ 0xffff, /* 3bc1 */ 0xffff, /* 3bc2 */ 0xffff, /* 3bc3 */ 0xffff, /* 3bc4 */ 0xffff, /* 3bc5 */ 0xffff, /* 3bc6 */ 0xffff, /* 3bc7 */ 0xffff, /* 3bc8 */ 0xffff, /* 3bc9 */ 0xffff, /* 3bca */ 0xffff, /* 3bcb */ 0xffff, /* 3bcc */ 0xffff, /* 3bcd */ 0xffff, /* 3bce */ 0xffff, /* 3bcf */ 0xffff, /* 3bd0 */ 0xffff, /* 3bd1 */ 0xffff, /* 3bd2 */ 0xffff, /* 3bd3 */ 0xffff, /* 3bd4 */ 0xffff, /* 3bd5 */ 0xffff, /* 3bd6 */ 0xffff, /* 3bd7 */ 0xffff, /* 3bd8 */ 0xffff, /* 3bd9 */ 0xffff, /* 3bda */ 0xffff, /* 3bdb */ 0xffff, /* 3bdc */ 0xffff, /* 3bdd */ 0xffff, /* 3bde */ 0xffff, /* 3bdf */ 0xffff, /* 3be0 */ 0xffff, /* 3be1 */ 0xffff, /* 3be2 */ 0xffff, /* 3be3 */ 0xffff, /* 3be4 */ 0xffff, /* 3be5 */ 0xffff, /* 3be6 */ 0xffff, /* 3be7 */ 0xffff, /* 3be8 */ 0xffff, /* 3be9 */ 0xffff, /* 3bea */ 0xffff, /* 3beb */ 0xffff, /* 3bec */ 0xffff, /* 3bed */ 0xffff, /* 3bee */ 0xffff, /* 3bef */ 0xffff, /* 3bf0 */ 0xffff, /* 3bf1 */ 0xffff, /* 3bf2 */ 0xffff, /* 3bf3 */ 0xffff, /* 3bf4 */ 0xffff, /* 3bf5 */ 0xffff, /* 3bf6 */ 0xffff, /* 3bf7 */ 0xffff, /* 3bf8 */ 0xffff, /* 3bf9 */ 0xffff, /* 3bfa */ 0xffff, /* 3bfb */ 0xffff, /* 3bfc */ 0xffff, /* 3bfd */ 0xffff, /* 3bfe */ 0xffff, /* 3bff */ 0xffff, /* 3c00 */ 0xffff, /* 3c01 */ 0xffff, /* 3c02 */ 0xffff, /* 3c03 */ 0xffff, /* 3c04 */ 0xffff, /* 3c05 */ 0xffff, /* 3c06 */ 0xffff, /* 3c07 */ 0xffff, /* 3c08 */ 0xffff, /* 3c09 */ 0xffff, /* 3c0a */ 0xffff, /* 3c0b */ 0xffff, /* 3c0c */ 0xffff, /* 3c0d */ 0xffff, /* 3c0e */ 0xffff, /* 3c0f */ 0xffff, /* 3c10 */ 0xffff, /* 3c11 */ 0xffff, /* 3c12 */ 0xffff, /* 3c13 */ 0xffff, /* 3c14 */ 0xffff, /* 3c15 */ 0xffff, /* 3c16 */ 0xffff, /* 3c17 */ 0xffff, /* 3c18 */ 0xffff, /* 3c19 */ 0xffff, /* 3c1a */ 0xffff, /* 3c1b */ 0xffff, /* 3c1c */ 0xffff, /* 3c1d */ 0xffff, /* 3c1e */ 0xffff, /* 3c1f */ 0xffff, /* 3c20 */ 0xffff, /* 3c21 */ 0xffff, /* 3c22 */ 0xffff, /* 3c23 */ 0xffff, /* 3c24 */ 0xffff, /* 3c25 */ 0xffff, /* 3c26 */ 0xffff, /* 3c27 */ 0xffff, /* 3c28 */ 0xffff, /* 3c29 */ 0xffff, /* 3c2a */ 0xffff, /* 3c2b */ 0xffff, /* 3c2c */ 0xffff, /* 3c2d */ 0xffff, /* 3c2e */ 0xffff, /* 3c2f */ 0xffff, /* 3c30 */ 0xffff, /* 3c31 */ 0xffff, /* 3c32 */ 0xffff, /* 3c33 */ 0xffff, /* 3c34 */ 0xffff, /* 3c35 */ 0xffff, /* 3c36 */ 0xffff, /* 3c37 */ 0xffff, /* 3c38 */ 0xffff, /* 3c39 */ 0xffff, /* 3c3a */ 0xffff, /* 3c3b */ 0xffff, /* 3c3c */ 0xffff, /* 3c3d */ 0xffff, /* 3c3e */ 0xffff, /* 3c3f */ 0xffff, /* 3c40 */ 0xffff, /* 3c41 */ 0xffff, /* 3c42 */ 0xffff, /* 3c43 */ 0xffff, /* 3c44 */ 0xffff, /* 3c45 */ 0xffff, /* 3c46 */ 0xffff, /* 3c47 */ 0xffff, /* 3c48 */ 0xffff, /* 3c49 */ 0xffff, /* 3c4a */ 0xffff, /* 3c4b */ 0xffff, /* 3c4c */ 0xffff, /* 3c4d */ 0xffff, /* 3c4e */ 0xffff, /* 3c4f */ 0xffff, /* 3c50 */ 0xffff, /* 3c51 */ 0xffff, /* 3c52 */ 0xffff, /* 3c53 */ 0xffff, /* 3c54 */ 0xffff, /* 3c55 */ 0xffff, /* 3c56 */ 0xffff, /* 3c57 */ 0xffff, /* 3c58 */ 0xffff, /* 3c59 */ 0xffff, /* 3c5a */ 0xffff, /* 3c5b */ 0xffff, /* 3c5c */ 0xffff, /* 3c5d */ 0xffff, /* 3c5e */ 0xffff, /* 3c5f */ 0xffff, /* 3c60 */ 0xffff, /* 3c61 */ 0xffff, /* 3c62 */ 0xffff, /* 3c63 */ 0xffff, /* 3c64 */ 0xffff, /* 3c65 */ 0xffff, /* 3c66 */ 0xffff, /* 3c67 */ 0xffff, /* 3c68 */ 0xffff, /* 3c69 */ 0xffff, /* 3c6a */ 0xffff, /* 3c6b */ 0xffff, /* 3c6c */ 0xffff, /* 3c6d */ 0xffff, /* 3c6e */ 0xffff, /* 3c6f */ 0xffff, /* 3c70 */ 0xffff, /* 3c71 */ 0xffff, /* 3c72 */ 0xffff, /* 3c73 */ 0xffff, /* 3c74 */ 0xffff, /* 3c75 */ 0xffff, /* 3c76 */ 0xffff, /* 3c77 */ 0xffff, /* 3c78 */ 0xffff, /* 3c79 */ 0xffff, /* 3c7a */ 0xffff, /* 3c7b */ 0xffff, /* 3c7c */ 0xffff, /* 3c7d */ 0xffff, /* 3c7e */ 0xffff, /* 3c7f */ 0xffff, /* 3c80 */ 0xffff, /* 3c81 */ 0xffff, /* 3c82 */ 0xffff, /* 3c83 */ 0xffff, /* 3c84 */ 0xffff, /* 3c85 */ 0xffff, /* 3c86 */ 0xffff, /* 3c87 */ 0xffff, /* 3c88 */ 0xffff, /* 3c89 */ 0xffff, /* 3c8a */ 0xffff, /* 3c8b */ 0xffff, /* 3c8c */ 0xffff, /* 3c8d */ 0xffff, /* 3c8e */ 0xffff, /* 3c8f */ 0xffff, /* 3c90 */ 0xffff, /* 3c91 */ 0xffff, /* 3c92 */ 0xffff, /* 3c93 */ 0xffff, /* 3c94 */ 0xffff, /* 3c95 */ 0xffff, /* 3c96 */ 0xffff, /* 3c97 */ 0xffff, /* 3c98 */ 0xffff, /* 3c99 */ 0xffff, /* 3c9a */ 0xffff, /* 3c9b */ 0xffff, /* 3c9c */ 0xffff, /* 3c9d */ 0xffff, /* 3c9e */ 0xffff, /* 3c9f */ 0xffff, /* 3ca0 */ 0xffff, /* 3ca1 */ 0xffff, /* 3ca2 */ 0xffff, /* 3ca3 */ 0xffff, /* 3ca4 */ 0xffff, /* 3ca5 */ 0xffff, /* 3ca6 */ 0xffff, /* 3ca7 */ 0xffff, /* 3ca8 */ 0xffff, /* 3ca9 */ 0xffff, /* 3caa */ 0xffff, /* 3cab */ 0xffff, /* 3cac */ 0xffff, /* 3cad */ 0xffff, /* 3cae */ 0xffff, /* 3caf */ 0xffff, /* 3cb0 */ 0xffff, /* 3cb1 */ 0xffff, /* 3cb2 */ 0xffff, /* 3cb3 */ 0xffff, /* 3cb4 */ 0xffff, /* 3cb5 */ 0xffff, /* 3cb6 */ 0xffff, /* 3cb7 */ 0xffff, /* 3cb8 */ 0xffff, /* 3cb9 */ 0xffff, /* 3cba */ 0xffff, /* 3cbb */ 0xffff, /* 3cbc */ 0xffff, /* 3cbd */ 0xffff, /* 3cbe */ 0xffff, /* 3cbf */ 0xffff, /* 3cc0 */ 0xffff, /* 3cc1 */ 0xffff, /* 3cc2 */ 0xffff, /* 3cc3 */ 0xffff, /* 3cc4 */ 0xffff, /* 3cc5 */ 0xffff, /* 3cc6 */ 0xffff, /* 3cc7 */ 0xffff, /* 3cc8 */ 0xffff, /* 3cc9 */ 0xffff, /* 3cca */ 0xffff, /* 3ccb */ 0xffff, /* 3ccc */ 0xffff, /* 3ccd */ 0xffff, /* 3cce */ 0xffff, /* 3ccf */ 0xffff, /* 3cd0 */ 0xffff, /* 3cd1 */ 0xffff, /* 3cd2 */ 0xffff, /* 3cd3 */ 0xffff, /* 3cd4 */ 0xffff, /* 3cd5 */ 0xffff, /* 3cd6 */ 0xffff, /* 3cd7 */ 0xffff, /* 3cd8 */ 0xffff, /* 3cd9 */ 0xffff, /* 3cda */ 0xffff, /* 3cdb */ 0xffff, /* 3cdc */ 0xffff, /* 3cdd */ 0xffff, /* 3cde */ 0xffff, /* 3cdf */ 0xffff, /* 3ce0 */ 0xffff, /* 3ce1 */ 0xffff, /* 3ce2 */ 0xffff, /* 3ce3 */ 0xffff, /* 3ce4 */ 0xffff, /* 3ce5 */ 0xffff, /* 3ce6 */ 0xffff, /* 3ce7 */ 0xffff, /* 3ce8 */ 0xffff, /* 3ce9 */ 0xffff, /* 3cea */ 0xffff, /* 3ceb */ 0xffff, /* 3cec */ 0xffff, /* 3ced */ 0xffff, /* 3cee */ 0xffff, /* 3cef */ 0xffff, /* 3cf0 */ 0xffff, /* 3cf1 */ 0xffff, /* 3cf2 */ 0xffff, /* 3cf3 */ 0xffff, /* 3cf4 */ 0xffff, /* 3cf5 */ 0xffff, /* 3cf6 */ 0xffff, /* 3cf7 */ 0xffff, /* 3cf8 */ 0xffff, /* 3cf9 */ 0xffff, /* 3cfa */ 0xffff, /* 3cfb */ 0xffff, /* 3cfc */ 0xffff, /* 3cfd */ 0xffff, /* 3cfe */ 0xffff, /* 3cff */ 0xffff, /* 3d00 */ 0xffff, /* 3d01 */ 0xffff, /* 3d02 */ 0xffff, /* 3d03 */ 0xffff, /* 3d04 */ 0xffff, /* 3d05 */ 0xffff, /* 3d06 */ 0xffff, /* 3d07 */ 0xffff, /* 3d08 */ 0xffff, /* 3d09 */ 0xffff, /* 3d0a */ 0xffff, /* 3d0b */ 0xffff, /* 3d0c */ 0xffff, /* 3d0d */ 0xffff, /* 3d0e */ 0xffff, /* 3d0f */ 0xffff, /* 3d10 */ 0xffff, /* 3d11 */ 0xffff, /* 3d12 */ 0xffff, /* 3d13 */ 0xffff, /* 3d14 */ 0xffff, /* 3d15 */ 0xffff, /* 3d16 */ 0xffff, /* 3d17 */ 0xffff, /* 3d18 */ 0xffff, /* 3d19 */ 0xffff, /* 3d1a */ 0xffff, /* 3d1b */ 0xffff, /* 3d1c */ 0xffff, /* 3d1d */ 0xffff, /* 3d1e */ 0xffff, /* 3d1f */ 0xffff, /* 3d20 */ 0xffff, /* 3d21 */ 0xffff, /* 3d22 */ 0xffff, /* 3d23 */ 0xffff, /* 3d24 */ 0xffff, /* 3d25 */ 0xffff, /* 3d26 */ 0xffff, /* 3d27 */ 0xffff, /* 3d28 */ 0xffff, /* 3d29 */ 0xffff, /* 3d2a */ 0xffff, /* 3d2b */ 0xffff, /* 3d2c */ 0xffff, /* 3d2d */ 0xffff, /* 3d2e */ 0xffff, /* 3d2f */ 0xffff, /* 3d30 */ 0xffff, /* 3d31 */ 0xffff, /* 3d32 */ 0xffff, /* 3d33 */ 0xffff, /* 3d34 */ 0xffff, /* 3d35 */ 0xffff, /* 3d36 */ 0xffff, /* 3d37 */ 0xffff, /* 3d38 */ 0xffff, /* 3d39 */ 0xffff, /* 3d3a */ 0xffff, /* 3d3b */ 0xffff, /* 3d3c */ 0xffff, /* 3d3d */ 0xffff, /* 3d3e */ 0xffff, /* 3d3f */ 0xffff, /* 3d40 */ 0xffff, /* 3d41 */ 0xffff, /* 3d42 */ 0xffff, /* 3d43 */ 0xffff, /* 3d44 */ 0xffff, /* 3d45 */ 0xffff, /* 3d46 */ 0xffff, /* 3d47 */ 0xffff, /* 3d48 */ 0xffff, /* 3d49 */ 0xffff, /* 3d4a */ 0xffff, /* 3d4b */ 0xffff, /* 3d4c */ 0xffff, /* 3d4d */ 0xffff, /* 3d4e */ 0xffff, /* 3d4f */ 0xffff, /* 3d50 */ 0xffff, /* 3d51 */ 0xffff, /* 3d52 */ 0xffff, /* 3d53 */ 0xffff, /* 3d54 */ 0xffff, /* 3d55 */ 0xffff, /* 3d56 */ 0xffff, /* 3d57 */ 0xffff, /* 3d58 */ 0xffff, /* 3d59 */ 0xffff, /* 3d5a */ 0xffff, /* 3d5b */ 0xffff, /* 3d5c */ 0xffff, /* 3d5d */ 0xffff, /* 3d5e */ 0xffff, /* 3d5f */ 0xffff, /* 3d60 */ 0xffff, /* 3d61 */ 0xffff, /* 3d62 */ 0xffff, /* 3d63 */ 0xffff, /* 3d64 */ 0xffff, /* 3d65 */ 0xffff, /* 3d66 */ 0xffff, /* 3d67 */ 0xffff, /* 3d68 */ 0xffff, /* 3d69 */ 0xffff, /* 3d6a */ 0xffff, /* 3d6b */ 0xffff, /* 3d6c */ 0xffff, /* 3d6d */ 0xffff, /* 3d6e */ 0xffff, /* 3d6f */ 0xffff, /* 3d70 */ 0xffff, /* 3d71 */ 0xffff, /* 3d72 */ 0xffff, /* 3d73 */ 0xffff, /* 3d74 */ 0xffff, /* 3d75 */ 0xffff, /* 3d76 */ 0xffff, /* 3d77 */ 0xffff, /* 3d78 */ 0xffff, /* 3d79 */ 0xffff, /* 3d7a */ 0xffff, /* 3d7b */ 0xffff, /* 3d7c */ 0xffff, /* 3d7d */ 0xffff, /* 3d7e */ 0xffff, /* 3d7f */ 0xffff, /* 3d80 */ 0xffff, /* 3d81 */ 0xffff, /* 3d82 */ 0xffff, /* 3d83 */ 0xffff, /* 3d84 */ 0xffff, /* 3d85 */ 0xffff, /* 3d86 */ 0xffff, /* 3d87 */ 0xffff, /* 3d88 */ 0xffff, /* 3d89 */ 0xffff, /* 3d8a */ 0xffff, /* 3d8b */ 0xffff, /* 3d8c */ 0xffff, /* 3d8d */ 0xffff, /* 3d8e */ 0xffff, /* 3d8f */ 0xffff, /* 3d90 */ 0xffff, /* 3d91 */ 0xffff, /* 3d92 */ 0xffff, /* 3d93 */ 0xffff, /* 3d94 */ 0xffff, /* 3d95 */ 0xffff, /* 3d96 */ 0xffff, /* 3d97 */ 0xffff, /* 3d98 */ 0xffff, /* 3d99 */ 0xffff, /* 3d9a */ 0xffff, /* 3d9b */ 0xffff, /* 3d9c */ 0xffff, /* 3d9d */ 0xffff, /* 3d9e */ 0xffff, /* 3d9f */ 0xffff, /* 3da0 */ 0xffff, /* 3da1 */ 0xffff, /* 3da2 */ 0xffff, /* 3da3 */ 0xffff, /* 3da4 */ 0xffff, /* 3da5 */ 0xffff, /* 3da6 */ 0xffff, /* 3da7 */ 0xffff, /* 3da8 */ 0xffff, /* 3da9 */ 0xffff, /* 3daa */ 0xffff, /* 3dab */ 0xffff, /* 3dac */ 0xffff, /* 3dad */ 0xffff, /* 3dae */ 0xffff, /* 3daf */ 0xffff, /* 3db0 */ 0xffff, /* 3db1 */ 0xffff, /* 3db2 */ 0xffff, /* 3db3 */ 0xffff, /* 3db4 */ 0xffff, /* 3db5 */ 0xffff, /* 3db6 */ 0xffff, /* 3db7 */ 0xffff, /* 3db8 */ 0xffff, /* 3db9 */ 0xffff, /* 3dba */ 0xffff, /* 3dbb */ 0xffff, /* 3dbc */ 0xffff, /* 3dbd */ 0xffff, /* 3dbe */ 0xffff, /* 3dbf */ 0xffff, /* 3dc0 */ 0xffff, /* 3dc1 */ 0xffff, /* 3dc2 */ 0xffff, /* 3dc3 */ 0xffff, /* 3dc4 */ 0xffff, /* 3dc5 */ 0xffff, /* 3dc6 */ 0xffff, /* 3dc7 */ 0xffff, /* 3dc8 */ 0xffff, /* 3dc9 */ 0xffff, /* 3dca */ 0xffff, /* 3dcb */ 0xffff, /* 3dcc */ 0xffff, /* 3dcd */ 0xffff, /* 3dce */ 0xffff, /* 3dcf */ 0xffff, /* 3dd0 */ 0xffff, /* 3dd1 */ 0xffff, /* 3dd2 */ 0xffff, /* 3dd3 */ 0xffff, /* 3dd4 */ 0xffff, /* 3dd5 */ 0xffff, /* 3dd6 */ 0xffff, /* 3dd7 */ 0xffff, /* 3dd8 */ 0xffff, /* 3dd9 */ 0xffff, /* 3dda */ 0xffff, /* 3ddb */ 0xffff, /* 3ddc */ 0xffff, /* 3ddd */ 0xffff, /* 3dde */ 0xffff, /* 3ddf */ 0xffff, /* 3de0 */ 0xffff, /* 3de1 */ 0xffff, /* 3de2 */ 0xffff, /* 3de3 */ 0xffff, /* 3de4 */ 0xffff, /* 3de5 */ 0xffff, /* 3de6 */ 0xffff, /* 3de7 */ 0xffff, /* 3de8 */ 0xffff, /* 3de9 */ 0xffff, /* 3dea */ 0xffff, /* 3deb */ 0xffff, /* 3dec */ 0xffff, /* 3ded */ 0xffff, /* 3dee */ 0xffff, /* 3def */ 0xffff, /* 3df0 */ 0xffff, /* 3df1 */ 0xffff, /* 3df2 */ 0xffff, /* 3df3 */ 0xffff, /* 3df4 */ 0xffff, /* 3df5 */ 0xffff, /* 3df6 */ 0xffff, /* 3df7 */ 0xffff, /* 3df8 */ 0xffff, /* 3df9 */ 0xffff, /* 3dfa */ 0xffff, /* 3dfb */ 0xffff, /* 3dfc */ 0xffff, /* 3dfd */ 0xffff, /* 3dfe */ 0xffff, /* 3dff */ 0xffff, /* 3e00 */ 0xffff, /* 3e01 */ 0xffff, /* 3e02 */ 0xffff, /* 3e03 */ 0xffff, /* 3e04 */ 0xffff, /* 3e05 */ 0xffff, /* 3e06 */ 0xffff, /* 3e07 */ 0xffff, /* 3e08 */ 0xffff, /* 3e09 */ 0xffff, /* 3e0a */ 0xffff, /* 3e0b */ 0xffff, /* 3e0c */ 0xffff, /* 3e0d */ 0xffff, /* 3e0e */ 0xffff, /* 3e0f */ 0xffff, /* 3e10 */ 0xffff, /* 3e11 */ 0xffff, /* 3e12 */ 0xffff, /* 3e13 */ 0xffff, /* 3e14 */ 0xffff, /* 3e15 */ 0xffff, /* 3e16 */ 0xffff, /* 3e17 */ 0xffff, /* 3e18 */ 0xffff, /* 3e19 */ 0xffff, /* 3e1a */ 0xffff, /* 3e1b */ 0xffff, /* 3e1c */ 0xffff, /* 3e1d */ 0xffff, /* 3e1e */ 0xffff, /* 3e1f */ 0xffff, /* 3e20 */ 0xffff, /* 3e21 */ 0xffff, /* 3e22 */ 0xffff, /* 3e23 */ 0xffff, /* 3e24 */ 0xffff, /* 3e25 */ 0xffff, /* 3e26 */ 0xffff, /* 3e27 */ 0xffff, /* 3e28 */ 0xffff, /* 3e29 */ 0xffff, /* 3e2a */ 0xffff, /* 3e2b */ 0xffff, /* 3e2c */ 0xffff, /* 3e2d */ 0xffff, /* 3e2e */ 0xffff, /* 3e2f */ 0xffff, /* 3e30 */ 0xffff, /* 3e31 */ 0xffff, /* 3e32 */ 0xffff, /* 3e33 */ 0xffff, /* 3e34 */ 0xffff, /* 3e35 */ 0xffff, /* 3e36 */ 0xffff, /* 3e37 */ 0xffff, /* 3e38 */ 0xffff, /* 3e39 */ 0xffff, /* 3e3a */ 0xffff, /* 3e3b */ 0xffff, /* 3e3c */ 0xffff, /* 3e3d */ 0xffff, /* 3e3e */ 0xffff, /* 3e3f */ 0xffff, /* 3e40 */ 0xffff, /* 3e41 */ 0xffff, /* 3e42 */ 0xffff, /* 3e43 */ 0xffff, /* 3e44 */ 0xffff, /* 3e45 */ 0xffff, /* 3e46 */ 0xffff, /* 3e47 */ 0xffff, /* 3e48 */ 0xffff, /* 3e49 */ 0xffff, /* 3e4a */ 0xffff, /* 3e4b */ 0xffff, /* 3e4c */ 0xffff, /* 3e4d */ 0xffff, /* 3e4e */ 0xffff, /* 3e4f */ 0xffff, /* 3e50 */ 0xffff, /* 3e51 */ 0xffff, /* 3e52 */ 0xffff, /* 3e53 */ 0xffff, /* 3e54 */ 0xffff, /* 3e55 */ 0xffff, /* 3e56 */ 0xffff, /* 3e57 */ 0xffff, /* 3e58 */ 0xffff, /* 3e59 */ 0xffff, /* 3e5a */ 0xffff, /* 3e5b */ 0xffff, /* 3e5c */ 0xffff, /* 3e5d */ 0xffff, /* 3e5e */ 0xffff, /* 3e5f */ 0xffff, /* 3e60 */ 0xffff, /* 3e61 */ 0xffff, /* 3e62 */ 0xffff, /* 3e63 */ 0xffff, /* 3e64 */ 0xffff, /* 3e65 */ 0xffff, /* 3e66 */ 0xffff, /* 3e67 */ 0xffff, /* 3e68 */ 0xffff, /* 3e69 */ 0xffff, /* 3e6a */ 0xffff, /* 3e6b */ 0xffff, /* 3e6c */ 0xffff, /* 3e6d */ 0xffff, /* 3e6e */ 0xffff, /* 3e6f */ 0xffff, /* 3e70 */ 0xffff, /* 3e71 */ 0xffff, /* 3e72 */ 0xffff, /* 3e73 */ 0xffff, /* 3e74 */ 0xffff, /* 3e75 */ 0xffff, /* 3e76 */ 0xffff, /* 3e77 */ 0xffff, /* 3e78 */ 0xffff, /* 3e79 */ 0xffff, /* 3e7a */ 0xffff, /* 3e7b */ 0xffff, /* 3e7c */ 0xffff, /* 3e7d */ 0xffff, /* 3e7e */ 0xffff, /* 3e7f */ 0xffff, /* 3e80 */ 0xffff, /* 3e81 */ 0xffff, /* 3e82 */ 0xffff, /* 3e83 */ 0xffff, /* 3e84 */ 0xffff, /* 3e85 */ 0xffff, /* 3e86 */ 0xffff, /* 3e87 */ 0xffff, /* 3e88 */ 0xffff, /* 3e89 */ 0xffff, /* 3e8a */ 0xffff, /* 3e8b */ 0xffff, /* 3e8c */ 0xffff, /* 3e8d */ 0xffff, /* 3e8e */ 0xffff, /* 3e8f */ 0xffff, /* 3e90 */ 0xffff, /* 3e91 */ 0xffff, /* 3e92 */ 0xffff, /* 3e93 */ 0xffff, /* 3e94 */ 0xffff, /* 3e95 */ 0xffff, /* 3e96 */ 0xffff, /* 3e97 */ 0xffff, /* 3e98 */ 0xffff, /* 3e99 */ 0xffff, /* 3e9a */ 0xffff, /* 3e9b */ 0xffff, /* 3e9c */ 0xffff, /* 3e9d */ 0xffff, /* 3e9e */ 0xffff, /* 3e9f */ 0xffff, /* 3ea0 */ 0xffff, /* 3ea1 */ 0xffff, /* 3ea2 */ 0xffff, /* 3ea3 */ 0xffff, /* 3ea4 */ 0xffff, /* 3ea5 */ 0xffff, /* 3ea6 */ 0xffff, /* 3ea7 */ 0xffff, /* 3ea8 */ 0xffff, /* 3ea9 */ 0xffff, /* 3eaa */ 0xffff, /* 3eab */ 0xffff, /* 3eac */ 0xffff, /* 3ead */ 0xffff, /* 3eae */ 0xffff, /* 3eaf */ 0xffff, /* 3eb0 */ 0xffff, /* 3eb1 */ 0xffff, /* 3eb2 */ 0xffff, /* 3eb3 */ 0xffff, /* 3eb4 */ 0xffff, /* 3eb5 */ 0xffff, /* 3eb6 */ 0xffff, /* 3eb7 */ 0xffff, /* 3eb8 */ 0xffff, /* 3eb9 */ 0xffff, /* 3eba */ 0xffff, /* 3ebb */ 0xffff, /* 3ebc */ 0xffff, /* 3ebd */ 0xffff, /* 3ebe */ 0xffff, /* 3ebf */ 0xffff, /* 3ec0 */ 0xffff, /* 3ec1 */ 0xffff, /* 3ec2 */ 0xffff, /* 3ec3 */ 0xffff, /* 3ec4 */ 0xffff, /* 3ec5 */ 0xffff, /* 3ec6 */ 0xffff, /* 3ec7 */ 0xffff, /* 3ec8 */ 0xffff, /* 3ec9 */ 0xffff, /* 3eca */ 0xffff, /* 3ecb */ 0xffff, /* 3ecc */ 0xffff, /* 3ecd */ 0xffff, /* 3ece */ 0xffff, /* 3ecf */ 0xffff, /* 3ed0 */ 0xffff, /* 3ed1 */ 0xffff, /* 3ed2 */ 0xffff, /* 3ed3 */ 0xffff, /* 3ed4 */ 0xffff, /* 3ed5 */ 0xffff, /* 3ed6 */ 0xffff, /* 3ed7 */ 0xffff, /* 3ed8 */ 0xffff, /* 3ed9 */ 0xffff, /* 3eda */ 0xffff, /* 3edb */ 0xffff, /* 3edc */ 0xffff, /* 3edd */ 0xffff, /* 3ede */ 0xffff, /* 3edf */ 0xffff, /* 3ee0 */ 0xffff, /* 3ee1 */ 0xffff, /* 3ee2 */ 0xffff, /* 3ee3 */ 0xffff, /* 3ee4 */ 0xffff, /* 3ee5 */ 0xffff, /* 3ee6 */ 0xffff, /* 3ee7 */ 0xffff, /* 3ee8 */ 0xffff, /* 3ee9 */ 0xffff, /* 3eea */ 0xffff, /* 3eeb */ 0xffff, /* 3eec */ 0xffff, /* 3eed */ 0xffff, /* 3eee */ 0xffff, /* 3eef */ 0xffff, /* 3ef0 */ 0xffff, /* 3ef1 */ 0xffff, /* 3ef2 */ 0xffff, /* 3ef3 */ 0xffff, /* 3ef4 */ 0xffff, /* 3ef5 */ 0xffff, /* 3ef6 */ 0xffff, /* 3ef7 */ 0xffff, /* 3ef8 */ 0xffff, /* 3ef9 */ 0xffff, /* 3efa */ 0xffff, /* 3efb */ 0xffff, /* 3efc */ 0xffff, /* 3efd */ 0xffff, /* 3efe */ 0xffff, /* 3eff */ 0xffff, /* 3f00 */ 0xffff, /* 3f01 */ 0xffff, /* 3f02 */ 0xffff, /* 3f03 */ 0xffff, /* 3f04 */ 0xffff, /* 3f05 */ 0xffff, /* 3f06 */ 0xffff, /* 3f07 */ 0xffff, /* 3f08 */ 0xffff, /* 3f09 */ 0xffff, /* 3f0a */ 0xffff, /* 3f0b */ 0xffff, /* 3f0c */ 0xffff, /* 3f0d */ 0xffff, /* 3f0e */ 0xffff, /* 3f0f */ 0xffff, /* 3f10 */ 0xffff, /* 3f11 */ 0xffff, /* 3f12 */ 0xffff, /* 3f13 */ 0xffff, /* 3f14 */ 0xffff, /* 3f15 */ 0xffff, /* 3f16 */ 0xffff, /* 3f17 */ 0xffff, /* 3f18 */ 0xffff, /* 3f19 */ 0xffff, /* 3f1a */ 0xffff, /* 3f1b */ 0xffff, /* 3f1c */ 0xffff, /* 3f1d */ 0xffff, /* 3f1e */ 0xffff, /* 3f1f */ 0xffff, /* 3f20 */ 0xffff, /* 3f21 */ 0xffff, /* 3f22 */ 0xffff, /* 3f23 */ 0xffff, /* 3f24 */ 0xffff, /* 3f25 */ 0xffff, /* 3f26 */ 0xffff, /* 3f27 */ 0xffff, /* 3f28 */ 0xffff, /* 3f29 */ 0xffff, /* 3f2a */ 0xffff, /* 3f2b */ 0xffff, /* 3f2c */ 0xffff, /* 3f2d */ 0xffff, /* 3f2e */ 0xffff, /* 3f2f */ 0xffff, /* 3f30 */ 0xffff, /* 3f31 */ 0xffff, /* 3f32 */ 0xffff, /* 3f33 */ 0xffff, /* 3f34 */ 0xffff, /* 3f35 */ 0xffff, /* 3f36 */ 0xffff, /* 3f37 */ 0xffff, /* 3f38 */ 0xffff, /* 3f39 */ 0xffff, /* 3f3a */ 0xffff, /* 3f3b */ 0xffff, /* 3f3c */ 0xffff, /* 3f3d */ 0xffff, /* 3f3e */ 0xffff, /* 3f3f */ 0xffff, /* 3f40 */ 0xffff, /* 3f41 */ 0xffff, /* 3f42 */ 0xffff, /* 3f43 */ 0xffff, /* 3f44 */ 0xffff, /* 3f45 */ 0xffff, /* 3f46 */ 0xffff, /* 3f47 */ 0xffff, /* 3f48 */ 0xffff, /* 3f49 */ 0xffff, /* 3f4a */ 0xffff, /* 3f4b */ 0xffff, /* 3f4c */ 0xffff, /* 3f4d */ 0xffff, /* 3f4e */ 0xffff, /* 3f4f */ 0xffff, /* 3f50 */ 0xffff, /* 3f51 */ 0xffff, /* 3f52 */ 0xffff, /* 3f53 */ 0xffff, /* 3f54 */ 0xffff, /* 3f55 */ 0xffff, /* 3f56 */ 0xffff, /* 3f57 */ 0xffff, /* 3f58 */ 0xffff, /* 3f59 */ 0xffff, /* 3f5a */ 0xffff, /* 3f5b */ 0xffff, /* 3f5c */ 0xffff, /* 3f5d */ 0xffff, /* 3f5e */ 0xffff, /* 3f5f */ 0xffff, /* 3f60 */ 0xffff, /* 3f61 */ 0xffff, /* 3f62 */ 0xffff, /* 3f63 */ 0xffff, /* 3f64 */ 0xffff, /* 3f65 */ 0xffff, /* 3f66 */ 0xffff, /* 3f67 */ 0xffff, /* 3f68 */ 0xffff, /* 3f69 */ 0xffff, /* 3f6a */ 0xffff, /* 3f6b */ 0xffff, /* 3f6c */ 0xffff, /* 3f6d */ 0xffff, /* 3f6e */ 0xffff, /* 3f6f */ 0xffff, /* 3f70 */ 0xffff, /* 3f71 */ 0xffff, /* 3f72 */ 0xffff, /* 3f73 */ 0xffff, /* 3f74 */ 0xffff, /* 3f75 */ 0xffff, /* 3f76 */ 0xffff, /* 3f77 */ 0xffff, /* 3f78 */ 0xffff, /* 3f79 */ 0xffff, /* 3f7a */ 0xffff, /* 3f7b */ 0xffff, /* 3f7c */ 0xffff, /* 3f7d */ 0xffff, /* 3f7e */ 0xffff, /* 3f7f */ 0xffff, /* 3f80 */ 0xffff, /* 3f81 */ 0xffff, /* 3f82 */ 0xffff, /* 3f83 */ 0xffff, /* 3f84 */ 0xffff, /* 3f85 */ 0xffff, /* 3f86 */ 0xffff, /* 3f87 */ 0xffff, /* 3f88 */ 0xffff, /* 3f89 */ 0xffff, /* 3f8a */ 0xffff, /* 3f8b */ 0xffff, /* 3f8c */ 0xffff, /* 3f8d */ 0xffff, /* 3f8e */ 0xffff, /* 3f8f */ 0xffff, /* 3f90 */ 0xffff, /* 3f91 */ 0xffff, /* 3f92 */ 0xffff, /* 3f93 */ 0xffff, /* 3f94 */ 0xffff, /* 3f95 */ 0xffff, /* 3f96 */ 0xffff, /* 3f97 */ 0xffff, /* 3f98 */ 0xffff, /* 3f99 */ 0xffff, /* 3f9a */ 0xffff, /* 3f9b */ 0xffff, /* 3f9c */ 0xffff, /* 3f9d */ 0xffff, /* 3f9e */ 0xffff, /* 3f9f */ 0xffff, /* 3fa0 */ 0xffff, /* 3fa1 */ 0xffff, /* 3fa2 */ 0xffff, /* 3fa3 */ 0xffff, /* 3fa4 */ 0xffff, /* 3fa5 */ 0xffff, /* 3fa6 */ 0xffff, /* 3fa7 */ 0xffff, /* 3fa8 */ 0xffff, /* 3fa9 */ 0xffff, /* 3faa */ 0xffff, /* 3fab */ 0xffff, /* 3fac */ 0xffff, /* 3fad */ 0xffff, /* 3fae */ 0xffff, /* 3faf */ 0xffff, /* 3fb0 */ 0xffff, /* 3fb1 */ 0xffff, /* 3fb2 */ 0xffff, /* 3fb3 */ 0xffff, /* 3fb4 */ 0xffff, /* 3fb5 */ 0xffff, /* 3fb6 */ 0xffff, /* 3fb7 */ 0xffff, /* 3fb8 */ 0xffff, /* 3fb9 */ 0xffff, /* 3fba */ 0xffff, /* 3fbb */ 0xffff, /* 3fbc */ 0xffff, /* 3fbd */ 0xffff, /* 3fbe */ 0xffff, /* 3fbf */ 0xffff, /* 3fc0 */ 0xffff, /* 3fc1 */ 0xffff, /* 3fc2 */ 0xffff, /* 3fc3 */ 0xffff, /* 3fc4 */ 0xffff, /* 3fc5 */ 0xffff, /* 3fc6 */ 0xffff, /* 3fc7 */ 0xffff, /* 3fc8 */ 0xffff, /* 3fc9 */ 0xffff, /* 3fca */ 0xffff, /* 3fcb */ 0xffff, /* 3fcc */ 0xffff, /* 3fcd */ 0xffff, /* 3fce */ 0xffff, /* 3fcf */ 0xffff, /* 3fd0 */ 0xffff, /* 3fd1 */ 0xffff, /* 3fd2 */ 0xffff, /* 3fd3 */ 0xffff, /* 3fd4 */ 0xffff, /* 3fd5 */ 0xffff, /* 3fd6 */ 0xffff, /* 3fd7 */ 0xffff, /* 3fd8 */ 0xffff, /* 3fd9 */ 0xffff, /* 3fda */ 0xffff, /* 3fdb */ 0xffff, /* 3fdc */ 0xffff, /* 3fdd */ 0xffff, /* 3fde */ 0xffff, /* 3fdf */ 0xffff, /* 3fe0 */ 0xffff, /* 3fe1 */ 0xffff, /* 3fe2 */ 0xffff, /* 3fe3 */ 0xffff, /* 3fe4 */ 0xffff, /* 3fe5 */ 0xffff, /* 3fe6 */ 0xffff, /* 3fe7 */ 0xffff, /* 3fe8 */ 0xffff, /* 3fe9 */ 0xffff, /* 3fea */ 0xffff, /* 3feb */ 0xffff, /* 3fec */ 0xffff, /* 3fed */ 0xffff, /* 3fee */ 0xffff, /* 3fef */ 0xffff, /* 3ff0 */ 0xffff, /* 3ff1 */ 0xffff, /* 3ff2 */ 0xffff, /* 3ff3 */ 0xffff, /* 3ff4 */ 0xffff, /* 3ff5 */ 0xffff, /* 3ff6 */ 0xffff, /* 3ff7 */ 0xffff, /* 3ff8 */ 0xffff, /* 3ff9 */ 0xffff, /* 3ffa */ 0xffff, /* 3ffb */ 0xffff, /* 3ffc */ 0xffff, /* 3ffd */ 0xffff, /* 3ffe */ 0xffff, /* 3fff */ 0xffff, /* 4000 */ 0xffff, /* 4001 */ 0xffff, /* 4002 */ 0xffff, /* 4003 */ 0xffff, /* 4004 */ 0xffff, /* 4005 */ 0xffff, /* 4006 */ 0xffff, /* 4007 */ 0xffff, /* 4008 */ 0xffff, /* 4009 */ 0xffff, /* 400a */ 0xffff, /* 400b */ 0xffff, /* 400c */ 0xffff, /* 400d */ 0xffff, /* 400e */ 0xffff, /* 400f */ 0xffff, /* 4010 */ 0xffff, /* 4011 */ 0xffff, /* 4012 */ 0xffff, /* 4013 */ 0xffff, /* 4014 */ 0xffff, /* 4015 */ 0xffff, /* 4016 */ 0xffff, /* 4017 */ 0xffff, /* 4018 */ 0xffff, /* 4019 */ 0xffff, /* 401a */ 0xffff, /* 401b */ 0xffff, /* 401c */ 0xffff, /* 401d */ 0xffff, /* 401e */ 0xffff, /* 401f */ 0xffff, /* 4020 */ 0xffff, /* 4021 */ 0xffff, /* 4022 */ 0xffff, /* 4023 */ 0xffff, /* 4024 */ 0xffff, /* 4025 */ 0xffff, /* 4026 */ 0xffff, /* 4027 */ 0xffff, /* 4028 */ 0xffff, /* 4029 */ 0xffff, /* 402a */ 0xffff, /* 402b */ 0xffff, /* 402c */ 0xffff, /* 402d */ 0xffff, /* 402e */ 0xffff, /* 402f */ 0xffff, /* 4030 */ 0xffff, /* 4031 */ 0xffff, /* 4032 */ 0xffff, /* 4033 */ 0xffff, /* 4034 */ 0xffff, /* 4035 */ 0xffff, /* 4036 */ 0xffff, /* 4037 */ 0xffff, /* 4038 */ 0xffff, /* 4039 */ 0xffff, /* 403a */ 0xffff, /* 403b */ 0xffff, /* 403c */ 0xffff, /* 403d */ 0xffff, /* 403e */ 0xffff, /* 403f */ 0xffff, /* 4040 */ 0xffff, /* 4041 */ 0xffff, /* 4042 */ 0xffff, /* 4043 */ 0xffff, /* 4044 */ 0xffff, /* 4045 */ 0xffff, /* 4046 */ 0xffff, /* 4047 */ 0xffff, /* 4048 */ 0xffff, /* 4049 */ 0xffff, /* 404a */ 0xffff, /* 404b */ 0xffff, /* 404c */ 0xffff, /* 404d */ 0xffff, /* 404e */ 0xffff, /* 404f */ 0xffff, /* 4050 */ 0xffff, /* 4051 */ 0xffff, /* 4052 */ 0xffff, /* 4053 */ 0xffff, /* 4054 */ 0xffff, /* 4055 */ 0xffff, /* 4056 */ 0xffff, /* 4057 */ 0xffff, /* 4058 */ 0xffff, /* 4059 */ 0xffff, /* 405a */ 0xffff, /* 405b */ 0xffff, /* 405c */ 0xffff, /* 405d */ 0xffff, /* 405e */ 0xffff, /* 405f */ 0xffff, /* 4060 */ 0xffff, /* 4061 */ 0xffff, /* 4062 */ 0xffff, /* 4063 */ 0xffff, /* 4064 */ 0xffff, /* 4065 */ 0xffff, /* 4066 */ 0xffff, /* 4067 */ 0xffff, /* 4068 */ 0xffff, /* 4069 */ 0xffff, /* 406a */ 0xffff, /* 406b */ 0xffff, /* 406c */ 0xffff, /* 406d */ 0xffff, /* 406e */ 0xffff, /* 406f */ 0xffff, /* 4070 */ 0xffff, /* 4071 */ 0xffff, /* 4072 */ 0xffff, /* 4073 */ 0xffff, /* 4074 */ 0xffff, /* 4075 */ 0xffff, /* 4076 */ 0xffff, /* 4077 */ 0xffff, /* 4078 */ 0xffff, /* 4079 */ 0xffff, /* 407a */ 0xffff, /* 407b */ 0xffff, /* 407c */ 0xffff, /* 407d */ 0xffff, /* 407e */ 0xffff, /* 407f */ 0xffff, /* 4080 */ 0xffff, /* 4081 */ 0xffff, /* 4082 */ 0xffff, /* 4083 */ 0xffff, /* 4084 */ 0xffff, /* 4085 */ 0xffff, /* 4086 */ 0xffff, /* 4087 */ 0xffff, /* 4088 */ 0xffff, /* 4089 */ 0xffff, /* 408a */ 0xffff, /* 408b */ 0xffff, /* 408c */ 0xffff, /* 408d */ 0xffff, /* 408e */ 0xffff, /* 408f */ 0xffff, /* 4090 */ 0xffff, /* 4091 */ 0xffff, /* 4092 */ 0xffff, /* 4093 */ 0xffff, /* 4094 */ 0xffff, /* 4095 */ 0xffff, /* 4096 */ 0xffff, /* 4097 */ 0xffff, /* 4098 */ 0xffff, /* 4099 */ 0xffff, /* 409a */ 0xffff, /* 409b */ 0xffff, /* 409c */ 0xffff, /* 409d */ 0xffff, /* 409e */ 0xffff, /* 409f */ 0xffff, /* 40a0 */ 0xffff, /* 40a1 */ 0xffff, /* 40a2 */ 0xffff, /* 40a3 */ 0xffff, /* 40a4 */ 0xffff, /* 40a5 */ 0xffff, /* 40a6 */ 0xffff, /* 40a7 */ 0xffff, /* 40a8 */ 0xffff, /* 40a9 */ 0xffff, /* 40aa */ 0xffff, /* 40ab */ 0xffff, /* 40ac */ 0xffff, /* 40ad */ 0xffff, /* 40ae */ 0xffff, /* 40af */ 0xffff, /* 40b0 */ 0xffff, /* 40b1 */ 0xffff, /* 40b2 */ 0xffff, /* 40b3 */ 0xffff, /* 40b4 */ 0xffff, /* 40b5 */ 0xffff, /* 40b6 */ 0xffff, /* 40b7 */ 0xffff, /* 40b8 */ 0xffff, /* 40b9 */ 0xffff, /* 40ba */ 0xffff, /* 40bb */ 0xffff, /* 40bc */ 0xffff, /* 40bd */ 0xffff, /* 40be */ 0xffff, /* 40bf */ 0xffff, /* 40c0 */ 0xffff, /* 40c1 */ 0xffff, /* 40c2 */ 0xffff, /* 40c3 */ 0xffff, /* 40c4 */ 0xffff, /* 40c5 */ 0xffff, /* 40c6 */ 0xffff, /* 40c7 */ 0xffff, /* 40c8 */ 0xffff, /* 40c9 */ 0xffff, /* 40ca */ 0xffff, /* 40cb */ 0xffff, /* 40cc */ 0xffff, /* 40cd */ 0xffff, /* 40ce */ 0xffff, /* 40cf */ 0xffff, /* 40d0 */ 0xffff, /* 40d1 */ 0xffff, /* 40d2 */ 0xffff, /* 40d3 */ 0xffff, /* 40d4 */ 0xffff, /* 40d5 */ 0xffff, /* 40d6 */ 0xffff, /* 40d7 */ 0xffff, /* 40d8 */ 0xffff, /* 40d9 */ 0xffff, /* 40da */ 0xffff, /* 40db */ 0xffff, /* 40dc */ 0xffff, /* 40dd */ 0xffff, /* 40de */ 0xffff, /* 40df */ 0xffff, /* 40e0 */ 0xffff, /* 40e1 */ 0xffff, /* 40e2 */ 0xffff, /* 40e3 */ 0xffff, /* 40e4 */ 0xffff, /* 40e5 */ 0xffff, /* 40e6 */ 0xffff, /* 40e7 */ 0xffff, /* 40e8 */ 0xffff, /* 40e9 */ 0xffff, /* 40ea */ 0xffff, /* 40eb */ 0xffff, /* 40ec */ 0xffff, /* 40ed */ 0xffff, /* 40ee */ 0xffff, /* 40ef */ 0xffff, /* 40f0 */ 0xffff, /* 40f1 */ 0xffff, /* 40f2 */ 0xffff, /* 40f3 */ 0xffff, /* 40f4 */ 0xffff, /* 40f5 */ 0xffff, /* 40f6 */ 0xffff, /* 40f7 */ 0xffff, /* 40f8 */ 0xffff, /* 40f9 */ 0xffff, /* 40fa */ 0xffff, /* 40fb */ 0xffff, /* 40fc */ 0xffff, /* 40fd */ 0xffff, /* 40fe */ 0xffff, /* 40ff */ 0xffff, /* 4100 */ 0xffff, /* 4101 */ 0xffff, /* 4102 */ 0xffff, /* 4103 */ 0xffff, /* 4104 */ 0xffff, /* 4105 */ 0xffff, /* 4106 */ 0xffff, /* 4107 */ 0xffff, /* 4108 */ 0xffff, /* 4109 */ 0xffff, /* 410a */ 0xffff, /* 410b */ 0xffff, /* 410c */ 0xffff, /* 410d */ 0xffff, /* 410e */ 0xffff, /* 410f */ 0xffff, /* 4110 */ 0xffff, /* 4111 */ 0xffff, /* 4112 */ 0xffff, /* 4113 */ 0xffff, /* 4114 */ 0xffff, /* 4115 */ 0xffff, /* 4116 */ 0xffff, /* 4117 */ 0xffff, /* 4118 */ 0xffff, /* 4119 */ 0xffff, /* 411a */ 0xffff, /* 411b */ 0xffff, /* 411c */ 0xffff, /* 411d */ 0xffff, /* 411e */ 0xffff, /* 411f */ 0xffff, /* 4120 */ 0xffff, /* 4121 */ 0xffff, /* 4122 */ 0xffff, /* 4123 */ 0xffff, /* 4124 */ 0xffff, /* 4125 */ 0xffff, /* 4126 */ 0xffff, /* 4127 */ 0xffff, /* 4128 */ 0xffff, /* 4129 */ 0xffff, /* 412a */ 0xffff, /* 412b */ 0xffff, /* 412c */ 0xffff, /* 412d */ 0xffff, /* 412e */ 0xffff, /* 412f */ 0xffff, /* 4130 */ 0xffff, /* 4131 */ 0xffff, /* 4132 */ 0xffff, /* 4133 */ 0xffff, /* 4134 */ 0xffff, /* 4135 */ 0xffff, /* 4136 */ 0xffff, /* 4137 */ 0xffff, /* 4138 */ 0xffff, /* 4139 */ 0xffff, /* 413a */ 0xffff, /* 413b */ 0xffff, /* 413c */ 0xffff, /* 413d */ 0xffff, /* 413e */ 0xffff, /* 413f */ 0xffff, /* 4140 */ 0xffff, /* 4141 */ 0xffff, /* 4142 */ 0xffff, /* 4143 */ 0xffff, /* 4144 */ 0xffff, /* 4145 */ 0xffff, /* 4146 */ 0xffff, /* 4147 */ 0xffff, /* 4148 */ 0xffff, /* 4149 */ 0xffff, /* 414a */ 0xffff, /* 414b */ 0xffff, /* 414c */ 0xffff, /* 414d */ 0xffff, /* 414e */ 0xffff, /* 414f */ 0xffff, /* 4150 */ 0xffff, /* 4151 */ 0xffff, /* 4152 */ 0xffff, /* 4153 */ 0xffff, /* 4154 */ 0xffff, /* 4155 */ 0xffff, /* 4156 */ 0xffff, /* 4157 */ 0xffff, /* 4158 */ 0xffff, /* 4159 */ 0xffff, /* 415a */ 0xffff, /* 415b */ 0xffff, /* 415c */ 0xffff, /* 415d */ 0xffff, /* 415e */ 0xffff, /* 415f */ 0xffff, /* 4160 */ 0xffff, /* 4161 */ 0xffff, /* 4162 */ 0xffff, /* 4163 */ 0xffff, /* 4164 */ 0xffff, /* 4165 */ 0xffff, /* 4166 */ 0xffff, /* 4167 */ 0xffff, /* 4168 */ 0xffff, /* 4169 */ 0xffff, /* 416a */ 0xffff, /* 416b */ 0xffff, /* 416c */ 0xffff, /* 416d */ 0xffff, /* 416e */ 0xffff, /* 416f */ 0xffff, /* 4170 */ 0xffff, /* 4171 */ 0xffff, /* 4172 */ 0xffff, /* 4173 */ 0xffff, /* 4174 */ 0xffff, /* 4175 */ 0xffff, /* 4176 */ 0xffff, /* 4177 */ 0xffff, /* 4178 */ 0xffff, /* 4179 */ 0xffff, /* 417a */ 0xffff, /* 417b */ 0xffff, /* 417c */ 0xffff, /* 417d */ 0xffff, /* 417e */ 0xffff, /* 417f */ 0xffff, /* 4180 */ 0xffff, /* 4181 */ 0xffff, /* 4182 */ 0xffff, /* 4183 */ 0xffff, /* 4184 */ 0xffff, /* 4185 */ 0xffff, /* 4186 */ 0xffff, /* 4187 */ 0xffff, /* 4188 */ 0xffff, /* 4189 */ 0xffff, /* 418a */ 0xffff, /* 418b */ 0xffff, /* 418c */ 0xffff, /* 418d */ 0xffff, /* 418e */ 0xffff, /* 418f */ 0xffff, /* 4190 */ 0xffff, /* 4191 */ 0xffff, /* 4192 */ 0xffff, /* 4193 */ 0xffff, /* 4194 */ 0xffff, /* 4195 */ 0xffff, /* 4196 */ 0xffff, /* 4197 */ 0xffff, /* 4198 */ 0xffff, /* 4199 */ 0xffff, /* 419a */ 0xffff, /* 419b */ 0xffff, /* 419c */ 0xffff, /* 419d */ 0xffff, /* 419e */ 0xffff, /* 419f */ 0xffff, /* 41a0 */ 0xffff, /* 41a1 */ 0xffff, /* 41a2 */ 0xffff, /* 41a3 */ 0xffff, /* 41a4 */ 0xffff, /* 41a5 */ 0xffff, /* 41a6 */ 0xffff, /* 41a7 */ 0xffff, /* 41a8 */ 0xffff, /* 41a9 */ 0xffff, /* 41aa */ 0xffff, /* 41ab */ 0xffff, /* 41ac */ 0xffff, /* 41ad */ 0xffff, /* 41ae */ 0xffff, /* 41af */ 0xffff, /* 41b0 */ 0xffff, /* 41b1 */ 0xffff, /* 41b2 */ 0xffff, /* 41b3 */ 0xffff, /* 41b4 */ 0xffff, /* 41b5 */ 0xffff, /* 41b6 */ 0xffff, /* 41b7 */ 0xffff, /* 41b8 */ 0xffff, /* 41b9 */ 0xffff, /* 41ba */ 0xffff, /* 41bb */ 0xffff, /* 41bc */ 0xffff, /* 41bd */ 0xffff, /* 41be */ 0xffff, /* 41bf */ 0xffff, /* 41c0 */ 0xffff, /* 41c1 */ 0xffff, /* 41c2 */ 0xffff, /* 41c3 */ 0xffff, /* 41c4 */ 0xffff, /* 41c5 */ 0xffff, /* 41c6 */ 0xffff, /* 41c7 */ 0xffff, /* 41c8 */ 0xffff, /* 41c9 */ 0xffff, /* 41ca */ 0xffff, /* 41cb */ 0xffff, /* 41cc */ 0xffff, /* 41cd */ 0xffff, /* 41ce */ 0xffff, /* 41cf */ 0xffff, /* 41d0 */ 0xffff, /* 41d1 */ 0xffff, /* 41d2 */ 0xffff, /* 41d3 */ 0xffff, /* 41d4 */ 0xffff, /* 41d5 */ 0xffff, /* 41d6 */ 0xffff, /* 41d7 */ 0xffff, /* 41d8 */ 0xffff, /* 41d9 */ 0xffff, /* 41da */ 0xffff, /* 41db */ 0xffff, /* 41dc */ 0xffff, /* 41dd */ 0xffff, /* 41de */ 0xffff, /* 41df */ 0xffff, /* 41e0 */ 0xffff, /* 41e1 */ 0xffff, /* 41e2 */ 0xffff, /* 41e3 */ 0xffff, /* 41e4 */ 0xffff, /* 41e5 */ 0xffff, /* 41e6 */ 0xffff, /* 41e7 */ 0xffff, /* 41e8 */ 0xffff, /* 41e9 */ 0xffff, /* 41ea */ 0xffff, /* 41eb */ 0xffff, /* 41ec */ 0xffff, /* 41ed */ 0xffff, /* 41ee */ 0xffff, /* 41ef */ 0xffff, /* 41f0 */ 0xffff, /* 41f1 */ 0xffff, /* 41f2 */ 0xffff, /* 41f3 */ 0xffff, /* 41f4 */ 0xffff, /* 41f5 */ 0xffff, /* 41f6 */ 0xffff, /* 41f7 */ 0xffff, /* 41f8 */ 0xffff, /* 41f9 */ 0xffff, /* 41fa */ 0xffff, /* 41fb */ 0xffff, /* 41fc */ 0xffff, /* 41fd */ 0xffff, /* 41fe */ 0xffff, /* 41ff */ 0xffff, /* 4200 */ 0xffff, /* 4201 */ 0xffff, /* 4202 */ 0xffff, /* 4203 */ 0xffff, /* 4204 */ 0xffff, /* 4205 */ 0xffff, /* 4206 */ 0xffff, /* 4207 */ 0xffff, /* 4208 */ 0xffff, /* 4209 */ 0xffff, /* 420a */ 0xffff, /* 420b */ 0xffff, /* 420c */ 0xffff, /* 420d */ 0xffff, /* 420e */ 0xffff, /* 420f */ 0xffff, /* 4210 */ 0xffff, /* 4211 */ 0xffff, /* 4212 */ 0xffff, /* 4213 */ 0xffff, /* 4214 */ 0xffff, /* 4215 */ 0xffff, /* 4216 */ 0xffff, /* 4217 */ 0xffff, /* 4218 */ 0xffff, /* 4219 */ 0xffff, /* 421a */ 0xffff, /* 421b */ 0xffff, /* 421c */ 0xffff, /* 421d */ 0xffff, /* 421e */ 0xffff, /* 421f */ 0xffff, /* 4220 */ 0xffff, /* 4221 */ 0xffff, /* 4222 */ 0xffff, /* 4223 */ 0xffff, /* 4224 */ 0xffff, /* 4225 */ 0xffff, /* 4226 */ 0xffff, /* 4227 */ 0xffff, /* 4228 */ 0xffff, /* 4229 */ 0xffff, /* 422a */ 0xffff, /* 422b */ 0xffff, /* 422c */ 0xffff, /* 422d */ 0xffff, /* 422e */ 0xffff, /* 422f */ 0xffff, /* 4230 */ 0xffff, /* 4231 */ 0xffff, /* 4232 */ 0xffff, /* 4233 */ 0xffff, /* 4234 */ 0xffff, /* 4235 */ 0xffff, /* 4236 */ 0xffff, /* 4237 */ 0xffff, /* 4238 */ 0xffff, /* 4239 */ 0xffff, /* 423a */ 0xffff, /* 423b */ 0xffff, /* 423c */ 0xffff, /* 423d */ 0xffff, /* 423e */ 0xffff, /* 423f */ 0xffff, /* 4240 */ 0xffff, /* 4241 */ 0xffff, /* 4242 */ 0xffff, /* 4243 */ 0xffff, /* 4244 */ 0xffff, /* 4245 */ 0xffff, /* 4246 */ 0xffff, /* 4247 */ 0xffff, /* 4248 */ 0xffff, /* 4249 */ 0xffff, /* 424a */ 0xffff, /* 424b */ 0xffff, /* 424c */ 0xffff, /* 424d */ 0xffff, /* 424e */ 0xffff, /* 424f */ 0xffff, /* 4250 */ 0xffff, /* 4251 */ 0xffff, /* 4252 */ 0xffff, /* 4253 */ 0xffff, /* 4254 */ 0xffff, /* 4255 */ 0xffff, /* 4256 */ 0xffff, /* 4257 */ 0xffff, /* 4258 */ 0xffff, /* 4259 */ 0xffff, /* 425a */ 0xffff, /* 425b */ 0xffff, /* 425c */ 0xffff, /* 425d */ 0xffff, /* 425e */ 0xffff, /* 425f */ 0xffff, /* 4260 */ 0xffff, /* 4261 */ 0xffff, /* 4262 */ 0xffff, /* 4263 */ 0xffff, /* 4264 */ 0xffff, /* 4265 */ 0xffff, /* 4266 */ 0xffff, /* 4267 */ 0xffff, /* 4268 */ 0xffff, /* 4269 */ 0xffff, /* 426a */ 0xffff, /* 426b */ 0xffff, /* 426c */ 0xffff, /* 426d */ 0xffff, /* 426e */ 0xffff, /* 426f */ 0xffff, /* 4270 */ 0xffff, /* 4271 */ 0xffff, /* 4272 */ 0xffff, /* 4273 */ 0xffff, /* 4274 */ 0xffff, /* 4275 */ 0xffff, /* 4276 */ 0xffff, /* 4277 */ 0xffff, /* 4278 */ 0xffff, /* 4279 */ 0xffff, /* 427a */ 0xffff, /* 427b */ 0xffff, /* 427c */ 0xffff, /* 427d */ 0xffff, /* 427e */ 0xffff, /* 427f */ 0xffff, /* 4280 */ 0xffff, /* 4281 */ 0xffff, /* 4282 */ 0xffff, /* 4283 */ 0xffff, /* 4284 */ 0xffff, /* 4285 */ 0xffff, /* 4286 */ 0xffff, /* 4287 */ 0xffff, /* 4288 */ 0xffff, /* 4289 */ 0xffff, /* 428a */ 0xffff, /* 428b */ 0xffff, /* 428c */ 0xffff, /* 428d */ 0xffff, /* 428e */ 0xffff, /* 428f */ 0xffff, /* 4290 */ 0xffff, /* 4291 */ 0xffff, /* 4292 */ 0xffff, /* 4293 */ 0xffff, /* 4294 */ 0xffff, /* 4295 */ 0xffff, /* 4296 */ 0xffff, /* 4297 */ 0xffff, /* 4298 */ 0xffff, /* 4299 */ 0xffff, /* 429a */ 0xffff, /* 429b */ 0xffff, /* 429c */ 0xffff, /* 429d */ 0xffff, /* 429e */ 0xffff, /* 429f */ 0xffff, /* 42a0 */ 0xffff, /* 42a1 */ 0xffff, /* 42a2 */ 0xffff, /* 42a3 */ 0xffff, /* 42a4 */ 0xffff, /* 42a5 */ 0xffff, /* 42a6 */ 0xffff, /* 42a7 */ 0xffff, /* 42a8 */ 0xffff, /* 42a9 */ 0xffff, /* 42aa */ 0xffff, /* 42ab */ 0xffff, /* 42ac */ 0xffff, /* 42ad */ 0xffff, /* 42ae */ 0xffff, /* 42af */ 0xffff, /* 42b0 */ 0xffff, /* 42b1 */ 0xffff, /* 42b2 */ 0xffff, /* 42b3 */ 0xffff, /* 42b4 */ 0xffff, /* 42b5 */ 0xffff, /* 42b6 */ 0xffff, /* 42b7 */ 0xffff, /* 42b8 */ 0xffff, /* 42b9 */ 0xffff, /* 42ba */ 0xffff, /* 42bb */ 0xffff, /* 42bc */ 0xffff, /* 42bd */ 0xffff, /* 42be */ 0xffff, /* 42bf */ 0xffff, /* 42c0 */ 0xffff, /* 42c1 */ 0xffff, /* 42c2 */ 0xffff, /* 42c3 */ 0xffff, /* 42c4 */ 0xffff, /* 42c5 */ 0xffff, /* 42c6 */ 0xffff, /* 42c7 */ 0xffff, /* 42c8 */ 0xffff, /* 42c9 */ 0xffff, /* 42ca */ 0xffff, /* 42cb */ 0xffff, /* 42cc */ 0xffff, /* 42cd */ 0xffff, /* 42ce */ 0xffff, /* 42cf */ 0xffff, /* 42d0 */ 0xffff, /* 42d1 */ 0xffff, /* 42d2 */ 0xffff, /* 42d3 */ 0xffff, /* 42d4 */ 0xffff, /* 42d5 */ 0xffff, /* 42d6 */ 0xffff, /* 42d7 */ 0xffff, /* 42d8 */ 0xffff, /* 42d9 */ 0xffff, /* 42da */ 0xffff, /* 42db */ 0xffff, /* 42dc */ 0xffff, /* 42dd */ 0xffff, /* 42de */ 0xffff, /* 42df */ 0xffff, /* 42e0 */ 0xffff, /* 42e1 */ 0xffff, /* 42e2 */ 0xffff, /* 42e3 */ 0xffff, /* 42e4 */ 0xffff, /* 42e5 */ 0xffff, /* 42e6 */ 0xffff, /* 42e7 */ 0xffff, /* 42e8 */ 0xffff, /* 42e9 */ 0xffff, /* 42ea */ 0xffff, /* 42eb */ 0xffff, /* 42ec */ 0xffff, /* 42ed */ 0xffff, /* 42ee */ 0xffff, /* 42ef */ 0xffff, /* 42f0 */ 0xffff, /* 42f1 */ 0xffff, /* 42f2 */ 0xffff, /* 42f3 */ 0xffff, /* 42f4 */ 0xffff, /* 42f5 */ 0xffff, /* 42f6 */ 0xffff, /* 42f7 */ 0xffff, /* 42f8 */ 0xffff, /* 42f9 */ 0xffff, /* 42fa */ 0xffff, /* 42fb */ 0xffff, /* 42fc */ 0xffff, /* 42fd */ 0xffff, /* 42fe */ 0xffff, /* 42ff */ 0xffff, /* 4300 */ 0xffff, /* 4301 */ 0xffff, /* 4302 */ 0xffff, /* 4303 */ 0xffff, /* 4304 */ 0xffff, /* 4305 */ 0xffff, /* 4306 */ 0xffff, /* 4307 */ 0xffff, /* 4308 */ 0xffff, /* 4309 */ 0xffff, /* 430a */ 0xffff, /* 430b */ 0xffff, /* 430c */ 0xffff, /* 430d */ 0xffff, /* 430e */ 0xffff, /* 430f */ 0xffff, /* 4310 */ 0xffff, /* 4311 */ 0xffff, /* 4312 */ 0xffff, /* 4313 */ 0xffff, /* 4314 */ 0xffff, /* 4315 */ 0xffff, /* 4316 */ 0xffff, /* 4317 */ 0xffff, /* 4318 */ 0xffff, /* 4319 */ 0xffff, /* 431a */ 0xffff, /* 431b */ 0xffff, /* 431c */ 0xffff, /* 431d */ 0xffff, /* 431e */ 0xffff, /* 431f */ 0xffff, /* 4320 */ 0xffff, /* 4321 */ 0xffff, /* 4322 */ 0xffff, /* 4323 */ 0xffff, /* 4324 */ 0xffff, /* 4325 */ 0xffff, /* 4326 */ 0xffff, /* 4327 */ 0xffff, /* 4328 */ 0xffff, /* 4329 */ 0xffff, /* 432a */ 0xffff, /* 432b */ 0xffff, /* 432c */ 0xffff, /* 432d */ 0xffff, /* 432e */ 0xffff, /* 432f */ 0xffff, /* 4330 */ 0xffff, /* 4331 */ 0xffff, /* 4332 */ 0xffff, /* 4333 */ 0xffff, /* 4334 */ 0xffff, /* 4335 */ 0xffff, /* 4336 */ 0xffff, /* 4337 */ 0xffff, /* 4338 */ 0xffff, /* 4339 */ 0xffff, /* 433a */ 0xffff, /* 433b */ 0xffff, /* 433c */ 0xffff, /* 433d */ 0xffff, /* 433e */ 0xffff, /* 433f */ 0xffff, /* 4340 */ 0xffff, /* 4341 */ 0xffff, /* 4342 */ 0xffff, /* 4343 */ 0xffff, /* 4344 */ 0xffff, /* 4345 */ 0xffff, /* 4346 */ 0xffff, /* 4347 */ 0xffff, /* 4348 */ 0xffff, /* 4349 */ 0xffff, /* 434a */ 0xffff, /* 434b */ 0xffff, /* 434c */ 0xffff, /* 434d */ 0xffff, /* 434e */ 0xffff, /* 434f */ 0xffff, /* 4350 */ 0xffff, /* 4351 */ 0xffff, /* 4352 */ 0xffff, /* 4353 */ 0xffff, /* 4354 */ 0xffff, /* 4355 */ 0xffff, /* 4356 */ 0xffff, /* 4357 */ 0xffff, /* 4358 */ 0xffff, /* 4359 */ 0xffff, /* 435a */ 0xffff, /* 435b */ 0xffff, /* 435c */ 0xffff, /* 435d */ 0xffff, /* 435e */ 0xffff, /* 435f */ 0xffff, /* 4360 */ 0xffff, /* 4361 */ 0xffff, /* 4362 */ 0xffff, /* 4363 */ 0xffff, /* 4364 */ 0xffff, /* 4365 */ 0xffff, /* 4366 */ 0xffff, /* 4367 */ 0xffff, /* 4368 */ 0xffff, /* 4369 */ 0xffff, /* 436a */ 0xffff, /* 436b */ 0xffff, /* 436c */ 0xffff, /* 436d */ 0xffff, /* 436e */ 0xffff, /* 436f */ 0xffff, /* 4370 */ 0xffff, /* 4371 */ 0xffff, /* 4372 */ 0xffff, /* 4373 */ 0xffff, /* 4374 */ 0xffff, /* 4375 */ 0xffff, /* 4376 */ 0xffff, /* 4377 */ 0xffff, /* 4378 */ 0xffff, /* 4379 */ 0xffff, /* 437a */ 0xffff, /* 437b */ 0xffff, /* 437c */ 0xffff, /* 437d */ 0xffff, /* 437e */ 0xffff, /* 437f */ 0xffff, /* 4380 */ 0xffff, /* 4381 */ 0xffff, /* 4382 */ 0xffff, /* 4383 */ 0xffff, /* 4384 */ 0xffff, /* 4385 */ 0xffff, /* 4386 */ 0xffff, /* 4387 */ 0xffff, /* 4388 */ 0xffff, /* 4389 */ 0xffff, /* 438a */ 0xffff, /* 438b */ 0xffff, /* 438c */ 0xffff, /* 438d */ 0xffff, /* 438e */ 0xffff, /* 438f */ 0xffff, /* 4390 */ 0xffff, /* 4391 */ 0xffff, /* 4392 */ 0xffff, /* 4393 */ 0xffff, /* 4394 */ 0xffff, /* 4395 */ 0xffff, /* 4396 */ 0xffff, /* 4397 */ 0xffff, /* 4398 */ 0xffff, /* 4399 */ 0xffff, /* 439a */ 0xffff, /* 439b */ 0xffff, /* 439c */ 0xffff, /* 439d */ 0xffff, /* 439e */ 0xffff, /* 439f */ 0xffff, /* 43a0 */ 0xffff, /* 43a1 */ 0xffff, /* 43a2 */ 0xffff, /* 43a3 */ 0xffff, /* 43a4 */ 0xffff, /* 43a5 */ 0xffff, /* 43a6 */ 0xffff, /* 43a7 */ 0xffff, /* 43a8 */ 0xffff, /* 43a9 */ 0xffff, /* 43aa */ 0xffff, /* 43ab */ 0xffff, /* 43ac */ 0xffff, /* 43ad */ 0xffff, /* 43ae */ 0xffff, /* 43af */ 0xffff, /* 43b0 */ 0xffff, /* 43b1 */ 0xffff, /* 43b2 */ 0xffff, /* 43b3 */ 0xffff, /* 43b4 */ 0xffff, /* 43b5 */ 0xffff, /* 43b6 */ 0xffff, /* 43b7 */ 0xffff, /* 43b8 */ 0xffff, /* 43b9 */ 0xffff, /* 43ba */ 0xffff, /* 43bb */ 0xffff, /* 43bc */ 0xffff, /* 43bd */ 0xffff, /* 43be */ 0xffff, /* 43bf */ 0xffff, /* 43c0 */ 0xffff, /* 43c1 */ 0xffff, /* 43c2 */ 0xffff, /* 43c3 */ 0xffff, /* 43c4 */ 0xffff, /* 43c5 */ 0xffff, /* 43c6 */ 0xffff, /* 43c7 */ 0xffff, /* 43c8 */ 0xffff, /* 43c9 */ 0xffff, /* 43ca */ 0xffff, /* 43cb */ 0xffff, /* 43cc */ 0xffff, /* 43cd */ 0xffff, /* 43ce */ 0xffff, /* 43cf */ 0xffff, /* 43d0 */ 0xffff, /* 43d1 */ 0xffff, /* 43d2 */ 0xffff, /* 43d3 */ 0xffff, /* 43d4 */ 0xffff, /* 43d5 */ 0xffff, /* 43d6 */ 0xffff, /* 43d7 */ 0xffff, /* 43d8 */ 0xffff, /* 43d9 */ 0xffff, /* 43da */ 0xffff, /* 43db */ 0xffff, /* 43dc */ 0xffff, /* 43dd */ 0xffff, /* 43de */ 0xffff, /* 43df */ 0xffff, /* 43e0 */ 0xffff, /* 43e1 */ 0xffff, /* 43e2 */ 0xffff, /* 43e3 */ 0xffff, /* 43e4 */ 0xffff, /* 43e5 */ 0xffff, /* 43e6 */ 0xffff, /* 43e7 */ 0xffff, /* 43e8 */ 0xffff, /* 43e9 */ 0xffff, /* 43ea */ 0xffff, /* 43eb */ 0xffff, /* 43ec */ 0xffff, /* 43ed */ 0xffff, /* 43ee */ 0xffff, /* 43ef */ 0xffff, /* 43f0 */ 0xffff, /* 43f1 */ 0xffff, /* 43f2 */ 0xffff, /* 43f3 */ 0xffff, /* 43f4 */ 0xffff, /* 43f5 */ 0xffff, /* 43f6 */ 0xffff, /* 43f7 */ 0xffff, /* 43f8 */ 0xffff, /* 43f9 */ 0xffff, /* 43fa */ 0xffff, /* 43fb */ 0xffff, /* 43fc */ 0xffff, /* 43fd */ 0xffff, /* 43fe */ 0xffff, /* 43ff */ 0xffff, /* 4400 */ 0xffff, /* 4401 */ 0xffff, /* 4402 */ 0xffff, /* 4403 */ 0xffff, /* 4404 */ 0xffff, /* 4405 */ 0xffff, /* 4406 */ 0xffff, /* 4407 */ 0xffff, /* 4408 */ 0xffff, /* 4409 */ 0xffff, /* 440a */ 0xffff, /* 440b */ 0xffff, /* 440c */ 0xffff, /* 440d */ 0xffff, /* 440e */ 0xffff, /* 440f */ 0xffff, /* 4410 */ 0xffff, /* 4411 */ 0xffff, /* 4412 */ 0xffff, /* 4413 */ 0xffff, /* 4414 */ 0xffff, /* 4415 */ 0xffff, /* 4416 */ 0xffff, /* 4417 */ 0xffff, /* 4418 */ 0xffff, /* 4419 */ 0xffff, /* 441a */ 0xffff, /* 441b */ 0xffff, /* 441c */ 0xffff, /* 441d */ 0xffff, /* 441e */ 0xffff, /* 441f */ 0xffff, /* 4420 */ 0xffff, /* 4421 */ 0xffff, /* 4422 */ 0xffff, /* 4423 */ 0xffff, /* 4424 */ 0xffff, /* 4425 */ 0xffff, /* 4426 */ 0xffff, /* 4427 */ 0xffff, /* 4428 */ 0xffff, /* 4429 */ 0xffff, /* 442a */ 0xffff, /* 442b */ 0xffff, /* 442c */ 0xffff, /* 442d */ 0xffff, /* 442e */ 0xffff, /* 442f */ 0xffff, /* 4430 */ 0xffff, /* 4431 */ 0xffff, /* 4432 */ 0xffff, /* 4433 */ 0xffff, /* 4434 */ 0xffff, /* 4435 */ 0xffff, /* 4436 */ 0xffff, /* 4437 */ 0xffff, /* 4438 */ 0xffff, /* 4439 */ 0xffff, /* 443a */ 0xffff, /* 443b */ 0xffff, /* 443c */ 0xffff, /* 443d */ 0xffff, /* 443e */ 0xffff, /* 443f */ 0xffff, /* 4440 */ 0xffff, /* 4441 */ 0xffff, /* 4442 */ 0xffff, /* 4443 */ 0xffff, /* 4444 */ 0xffff, /* 4445 */ 0xffff, /* 4446 */ 0xffff, /* 4447 */ 0xffff, /* 4448 */ 0xffff, /* 4449 */ 0xffff, /* 444a */ 0xffff, /* 444b */ 0xffff, /* 444c */ 0xffff, /* 444d */ 0xffff, /* 444e */ 0xffff, /* 444f */ 0xffff, /* 4450 */ 0xffff, /* 4451 */ 0xffff, /* 4452 */ 0xffff, /* 4453 */ 0xffff, /* 4454 */ 0xffff, /* 4455 */ 0xffff, /* 4456 */ 0xffff, /* 4457 */ 0xffff, /* 4458 */ 0xffff, /* 4459 */ 0xffff, /* 445a */ 0xffff, /* 445b */ 0xffff, /* 445c */ 0xffff, /* 445d */ 0xffff, /* 445e */ 0xffff, /* 445f */ 0xffff, /* 4460 */ 0xffff, /* 4461 */ 0xffff, /* 4462 */ 0xffff, /* 4463 */ 0xffff, /* 4464 */ 0xffff, /* 4465 */ 0xffff, /* 4466 */ 0xffff, /* 4467 */ 0xffff, /* 4468 */ 0xffff, /* 4469 */ 0xffff, /* 446a */ 0xffff, /* 446b */ 0xffff, /* 446c */ 0xffff, /* 446d */ 0xffff, /* 446e */ 0xffff, /* 446f */ 0xffff, /* 4470 */ 0xffff, /* 4471 */ 0xffff, /* 4472 */ 0xffff, /* 4473 */ 0xffff, /* 4474 */ 0xffff, /* 4475 */ 0xffff, /* 4476 */ 0xffff, /* 4477 */ 0xffff, /* 4478 */ 0xffff, /* 4479 */ 0xffff, /* 447a */ 0xffff, /* 447b */ 0xffff, /* 447c */ 0xffff, /* 447d */ 0xffff, /* 447e */ 0xffff, /* 447f */ 0xffff, /* 4480 */ 0xffff, /* 4481 */ 0xffff, /* 4482 */ 0xffff, /* 4483 */ 0xffff, /* 4484 */ 0xffff, /* 4485 */ 0xffff, /* 4486 */ 0xffff, /* 4487 */ 0xffff, /* 4488 */ 0xffff, /* 4489 */ 0xffff, /* 448a */ 0xffff, /* 448b */ 0xffff, /* 448c */ 0xffff, /* 448d */ 0xffff, /* 448e */ 0xffff, /* 448f */ 0xffff, /* 4490 */ 0xffff, /* 4491 */ 0xffff, /* 4492 */ 0xffff, /* 4493 */ 0xffff, /* 4494 */ 0xffff, /* 4495 */ 0xffff, /* 4496 */ 0xffff, /* 4497 */ 0xffff, /* 4498 */ 0xffff, /* 4499 */ 0xffff, /* 449a */ 0xffff, /* 449b */ 0xffff, /* 449c */ 0xffff, /* 449d */ 0xffff, /* 449e */ 0xffff, /* 449f */ 0xffff, /* 44a0 */ 0xffff, /* 44a1 */ 0xffff, /* 44a2 */ 0xffff, /* 44a3 */ 0xffff, /* 44a4 */ 0xffff, /* 44a5 */ 0xffff, /* 44a6 */ 0xffff, /* 44a7 */ 0xffff, /* 44a8 */ 0xffff, /* 44a9 */ 0xffff, /* 44aa */ 0xffff, /* 44ab */ 0xffff, /* 44ac */ 0xffff, /* 44ad */ 0xffff, /* 44ae */ 0xffff, /* 44af */ 0xffff, /* 44b0 */ 0xffff, /* 44b1 */ 0xffff, /* 44b2 */ 0xffff, /* 44b3 */ 0xffff, /* 44b4 */ 0xffff, /* 44b5 */ 0xffff, /* 44b6 */ 0xffff, /* 44b7 */ 0xffff, /* 44b8 */ 0xffff, /* 44b9 */ 0xffff, /* 44ba */ 0xffff, /* 44bb */ 0xffff, /* 44bc */ 0xffff, /* 44bd */ 0xffff, /* 44be */ 0xffff, /* 44bf */ 0xffff, /* 44c0 */ 0xffff, /* 44c1 */ 0xffff, /* 44c2 */ 0xffff, /* 44c3 */ 0xffff, /* 44c4 */ 0xffff, /* 44c5 */ 0xffff, /* 44c6 */ 0xffff, /* 44c7 */ 0xffff, /* 44c8 */ 0xffff, /* 44c9 */ 0xffff, /* 44ca */ 0xffff, /* 44cb */ 0xffff, /* 44cc */ 0xffff, /* 44cd */ 0xffff, /* 44ce */ 0xffff, /* 44cf */ 0xffff, /* 44d0 */ 0xffff, /* 44d1 */ 0xffff, /* 44d2 */ 0xffff, /* 44d3 */ 0xffff, /* 44d4 */ 0xffff, /* 44d5 */ 0xffff, /* 44d6 */ 0xffff, /* 44d7 */ 0xffff, /* 44d8 */ 0xffff, /* 44d9 */ 0xffff, /* 44da */ 0xffff, /* 44db */ 0xffff, /* 44dc */ 0xffff, /* 44dd */ 0xffff, /* 44de */ 0xffff, /* 44df */ 0xffff, /* 44e0 */ 0xffff, /* 44e1 */ 0xffff, /* 44e2 */ 0xffff, /* 44e3 */ 0xffff, /* 44e4 */ 0xffff, /* 44e5 */ 0xffff, /* 44e6 */ 0xffff, /* 44e7 */ 0xffff, /* 44e8 */ 0xffff, /* 44e9 */ 0xffff, /* 44ea */ 0xffff, /* 44eb */ 0xffff, /* 44ec */ 0xffff, /* 44ed */ 0xffff, /* 44ee */ 0xffff, /* 44ef */ 0xffff, /* 44f0 */ 0xffff, /* 44f1 */ 0xffff, /* 44f2 */ 0xffff, /* 44f3 */ 0xffff, /* 44f4 */ 0xffff, /* 44f5 */ 0xffff, /* 44f6 */ 0xffff, /* 44f7 */ 0xffff, /* 44f8 */ 0xffff, /* 44f9 */ 0xffff, /* 44fa */ 0xffff, /* 44fb */ 0xffff, /* 44fc */ 0xffff, /* 44fd */ 0xffff, /* 44fe */ 0xffff, /* 44ff */ 0xffff, /* 4500 */ 0xffff, /* 4501 */ 0xffff, /* 4502 */ 0xffff, /* 4503 */ 0xffff, /* 4504 */ 0xffff, /* 4505 */ 0xffff, /* 4506 */ 0xffff, /* 4507 */ 0xffff, /* 4508 */ 0xffff, /* 4509 */ 0xffff, /* 450a */ 0xffff, /* 450b */ 0xffff, /* 450c */ 0xffff, /* 450d */ 0xffff, /* 450e */ 0xffff, /* 450f */ 0xffff, /* 4510 */ 0xffff, /* 4511 */ 0xffff, /* 4512 */ 0xffff, /* 4513 */ 0xffff, /* 4514 */ 0xffff, /* 4515 */ 0xffff, /* 4516 */ 0xffff, /* 4517 */ 0xffff, /* 4518 */ 0xffff, /* 4519 */ 0xffff, /* 451a */ 0xffff, /* 451b */ 0xffff, /* 451c */ 0xffff, /* 451d */ 0xffff, /* 451e */ 0xffff, /* 451f */ 0xffff, /* 4520 */ 0xffff, /* 4521 */ 0xffff, /* 4522 */ 0xffff, /* 4523 */ 0xffff, /* 4524 */ 0xffff, /* 4525 */ 0xffff, /* 4526 */ 0xffff, /* 4527 */ 0xffff, /* 4528 */ 0xffff, /* 4529 */ 0xffff, /* 452a */ 0xffff, /* 452b */ 0xffff, /* 452c */ 0xffff, /* 452d */ 0xffff, /* 452e */ 0xffff, /* 452f */ 0xffff, /* 4530 */ 0xffff, /* 4531 */ 0xffff, /* 4532 */ 0xffff, /* 4533 */ 0xffff, /* 4534 */ 0xffff, /* 4535 */ 0xffff, /* 4536 */ 0xffff, /* 4537 */ 0xffff, /* 4538 */ 0xffff, /* 4539 */ 0xffff, /* 453a */ 0xffff, /* 453b */ 0xffff, /* 453c */ 0xffff, /* 453d */ 0xffff, /* 453e */ 0xffff, /* 453f */ 0xffff, /* 4540 */ 0xffff, /* 4541 */ 0xffff, /* 4542 */ 0xffff, /* 4543 */ 0xffff, /* 4544 */ 0xffff, /* 4545 */ 0xffff, /* 4546 */ 0xffff, /* 4547 */ 0xffff, /* 4548 */ 0xffff, /* 4549 */ 0xffff, /* 454a */ 0xffff, /* 454b */ 0xffff, /* 454c */ 0xffff, /* 454d */ 0xffff, /* 454e */ 0xffff, /* 454f */ 0xffff, /* 4550 */ 0xffff, /* 4551 */ 0xffff, /* 4552 */ 0xffff, /* 4553 */ 0xffff, /* 4554 */ 0xffff, /* 4555 */ 0xffff, /* 4556 */ 0xffff, /* 4557 */ 0xffff, /* 4558 */ 0xffff, /* 4559 */ 0xffff, /* 455a */ 0xffff, /* 455b */ 0xffff, /* 455c */ 0xffff, /* 455d */ 0xffff, /* 455e */ 0xffff, /* 455f */ 0xffff, /* 4560 */ 0xffff, /* 4561 */ 0xffff, /* 4562 */ 0xffff, /* 4563 */ 0xffff, /* 4564 */ 0xffff, /* 4565 */ 0xffff, /* 4566 */ 0xffff, /* 4567 */ 0xffff, /* 4568 */ 0xffff, /* 4569 */ 0xffff, /* 456a */ 0xffff, /* 456b */ 0xffff, /* 456c */ 0xffff, /* 456d */ 0xffff, /* 456e */ 0xffff, /* 456f */ 0xffff, /* 4570 */ 0xffff, /* 4571 */ 0xffff, /* 4572 */ 0xffff, /* 4573 */ 0xffff, /* 4574 */ 0xffff, /* 4575 */ 0xffff, /* 4576 */ 0xffff, /* 4577 */ 0xffff, /* 4578 */ 0xffff, /* 4579 */ 0xffff, /* 457a */ 0xffff, /* 457b */ 0xffff, /* 457c */ 0xffff, /* 457d */ 0xffff, /* 457e */ 0xffff, /* 457f */ 0xffff, /* 4580 */ 0xffff, /* 4581 */ 0xffff, /* 4582 */ 0xffff, /* 4583 */ 0xffff, /* 4584 */ 0xffff, /* 4585 */ 0xffff, /* 4586 */ 0xffff, /* 4587 */ 0xffff, /* 4588 */ 0xffff, /* 4589 */ 0xffff, /* 458a */ 0xffff, /* 458b */ 0xffff, /* 458c */ 0xffff, /* 458d */ 0xffff, /* 458e */ 0xffff, /* 458f */ 0xffff, /* 4590 */ 0xffff, /* 4591 */ 0xffff, /* 4592 */ 0xffff, /* 4593 */ 0xffff, /* 4594 */ 0xffff, /* 4595 */ 0xffff, /* 4596 */ 0xffff, /* 4597 */ 0xffff, /* 4598 */ 0xffff, /* 4599 */ 0xffff, /* 459a */ 0xffff, /* 459b */ 0xffff, /* 459c */ 0xffff, /* 459d */ 0xffff, /* 459e */ 0xffff, /* 459f */ 0xffff, /* 45a0 */ 0xffff, /* 45a1 */ 0xffff, /* 45a2 */ 0xffff, /* 45a3 */ 0xffff, /* 45a4 */ 0xffff, /* 45a5 */ 0xffff, /* 45a6 */ 0xffff, /* 45a7 */ 0xffff, /* 45a8 */ 0xffff, /* 45a9 */ 0xffff, /* 45aa */ 0xffff, /* 45ab */ 0xffff, /* 45ac */ 0xffff, /* 45ad */ 0xffff, /* 45ae */ 0xffff, /* 45af */ 0xffff, /* 45b0 */ 0xffff, /* 45b1 */ 0xffff, /* 45b2 */ 0xffff, /* 45b3 */ 0xffff, /* 45b4 */ 0xffff, /* 45b5 */ 0xffff, /* 45b6 */ 0xffff, /* 45b7 */ 0xffff, /* 45b8 */ 0xffff, /* 45b9 */ 0xffff, /* 45ba */ 0xffff, /* 45bb */ 0xffff, /* 45bc */ 0xffff, /* 45bd */ 0xffff, /* 45be */ 0xffff, /* 45bf */ 0xffff, /* 45c0 */ 0xffff, /* 45c1 */ 0xffff, /* 45c2 */ 0xffff, /* 45c3 */ 0xffff, /* 45c4 */ 0xffff, /* 45c5 */ 0xffff, /* 45c6 */ 0xffff, /* 45c7 */ 0xffff, /* 45c8 */ 0xffff, /* 45c9 */ 0xffff, /* 45ca */ 0xffff, /* 45cb */ 0xffff, /* 45cc */ 0xffff, /* 45cd */ 0xffff, /* 45ce */ 0xffff, /* 45cf */ 0xffff, /* 45d0 */ 0xffff, /* 45d1 */ 0xffff, /* 45d2 */ 0xffff, /* 45d3 */ 0xffff, /* 45d4 */ 0xffff, /* 45d5 */ 0xffff, /* 45d6 */ 0xffff, /* 45d7 */ 0xffff, /* 45d8 */ 0xffff, /* 45d9 */ 0xffff, /* 45da */ 0xffff, /* 45db */ 0xffff, /* 45dc */ 0xffff, /* 45dd */ 0xffff, /* 45de */ 0xffff, /* 45df */ 0xffff, /* 45e0 */ 0xffff, /* 45e1 */ 0xffff, /* 45e2 */ 0xffff, /* 45e3 */ 0xffff, /* 45e4 */ 0xffff, /* 45e5 */ 0xffff, /* 45e6 */ 0xffff, /* 45e7 */ 0xffff, /* 45e8 */ 0xffff, /* 45e9 */ 0xffff, /* 45ea */ 0xffff, /* 45eb */ 0xffff, /* 45ec */ 0xffff, /* 45ed */ 0xffff, /* 45ee */ 0xffff, /* 45ef */ 0xffff, /* 45f0 */ 0xffff, /* 45f1 */ 0xffff, /* 45f2 */ 0xffff, /* 45f3 */ 0xffff, /* 45f4 */ 0xffff, /* 45f5 */ 0xffff, /* 45f6 */ 0xffff, /* 45f7 */ 0xffff, /* 45f8 */ 0xffff, /* 45f9 */ 0xffff, /* 45fa */ 0xffff, /* 45fb */ 0xffff, /* 45fc */ 0xffff, /* 45fd */ 0xffff, /* 45fe */ 0xffff, /* 45ff */ 0xffff, /* 4600 */ 0xffff, /* 4601 */ 0xffff, /* 4602 */ 0xffff, /* 4603 */ 0xffff, /* 4604 */ 0xffff, /* 4605 */ 0xffff, /* 4606 */ 0xffff, /* 4607 */ 0xffff, /* 4608 */ 0xffff, /* 4609 */ 0xffff, /* 460a */ 0xffff, /* 460b */ 0xffff, /* 460c */ 0xffff, /* 460d */ 0xffff, /* 460e */ 0xffff, /* 460f */ 0xffff, /* 4610 */ 0xffff, /* 4611 */ 0xffff, /* 4612 */ 0xffff, /* 4613 */ 0xffff, /* 4614 */ 0xffff, /* 4615 */ 0xffff, /* 4616 */ 0xffff, /* 4617 */ 0xffff, /* 4618 */ 0xffff, /* 4619 */ 0xffff, /* 461a */ 0xffff, /* 461b */ 0xffff, /* 461c */ 0xffff, /* 461d */ 0xffff, /* 461e */ 0xffff, /* 461f */ 0xffff, /* 4620 */ 0xffff, /* 4621 */ 0xffff, /* 4622 */ 0xffff, /* 4623 */ 0xffff, /* 4624 */ 0xffff, /* 4625 */ 0xffff, /* 4626 */ 0xffff, /* 4627 */ 0xffff, /* 4628 */ 0xffff, /* 4629 */ 0xffff, /* 462a */ 0xffff, /* 462b */ 0xffff, /* 462c */ 0xffff, /* 462d */ 0xffff, /* 462e */ 0xffff, /* 462f */ 0xffff, /* 4630 */ 0xffff, /* 4631 */ 0xffff, /* 4632 */ 0xffff, /* 4633 */ 0xffff, /* 4634 */ 0xffff, /* 4635 */ 0xffff, /* 4636 */ 0xffff, /* 4637 */ 0xffff, /* 4638 */ 0xffff, /* 4639 */ 0xffff, /* 463a */ 0xffff, /* 463b */ 0xffff, /* 463c */ 0xffff, /* 463d */ 0xffff, /* 463e */ 0xffff, /* 463f */ 0xffff, /* 4640 */ 0xffff, /* 4641 */ 0xffff, /* 4642 */ 0xffff, /* 4643 */ 0xffff, /* 4644 */ 0xffff, /* 4645 */ 0xffff, /* 4646 */ 0xffff, /* 4647 */ 0xffff, /* 4648 */ 0xffff, /* 4649 */ 0xffff, /* 464a */ 0xffff, /* 464b */ 0xffff, /* 464c */ 0xffff, /* 464d */ 0xffff, /* 464e */ 0xffff, /* 464f */ 0xffff, /* 4650 */ 0xffff, /* 4651 */ 0xffff, /* 4652 */ 0xffff, /* 4653 */ 0xffff, /* 4654 */ 0xffff, /* 4655 */ 0xffff, /* 4656 */ 0xffff, /* 4657 */ 0xffff, /* 4658 */ 0xffff, /* 4659 */ 0xffff, /* 465a */ 0xffff, /* 465b */ 0xffff, /* 465c */ 0xffff, /* 465d */ 0xffff, /* 465e */ 0xffff, /* 465f */ 0xffff, /* 4660 */ 0xffff, /* 4661 */ 0xffff, /* 4662 */ 0xffff, /* 4663 */ 0xffff, /* 4664 */ 0xffff, /* 4665 */ 0xffff, /* 4666 */ 0xffff, /* 4667 */ 0xffff, /* 4668 */ 0xffff, /* 4669 */ 0xffff, /* 466a */ 0xffff, /* 466b */ 0xffff, /* 466c */ 0xffff, /* 466d */ 0xffff, /* 466e */ 0xffff, /* 466f */ 0xffff, /* 4670 */ 0xffff, /* 4671 */ 0xffff, /* 4672 */ 0xffff, /* 4673 */ 0xffff, /* 4674 */ 0xffff, /* 4675 */ 0xffff, /* 4676 */ 0xffff, /* 4677 */ 0xffff, /* 4678 */ 0xffff, /* 4679 */ 0xffff, /* 467a */ 0xffff, /* 467b */ 0xffff, /* 467c */ 0xffff, /* 467d */ 0xffff, /* 467e */ 0xffff, /* 467f */ 0xffff, /* 4680 */ 0xffff, /* 4681 */ 0xffff, /* 4682 */ 0xffff, /* 4683 */ 0xffff, /* 4684 */ 0xffff, /* 4685 */ 0xffff, /* 4686 */ 0xffff, /* 4687 */ 0xffff, /* 4688 */ 0xffff, /* 4689 */ 0xffff, /* 468a */ 0xffff, /* 468b */ 0xffff, /* 468c */ 0xffff, /* 468d */ 0xffff, /* 468e */ 0xffff, /* 468f */ 0xffff, /* 4690 */ 0xffff, /* 4691 */ 0xffff, /* 4692 */ 0xffff, /* 4693 */ 0xffff, /* 4694 */ 0xffff, /* 4695 */ 0xffff, /* 4696 */ 0xffff, /* 4697 */ 0xffff, /* 4698 */ 0xffff, /* 4699 */ 0xffff, /* 469a */ 0xffff, /* 469b */ 0xffff, /* 469c */ 0xffff, /* 469d */ 0xffff, /* 469e */ 0xffff, /* 469f */ 0xffff, /* 46a0 */ 0xffff, /* 46a1 */ 0xffff, /* 46a2 */ 0xffff, /* 46a3 */ 0xffff, /* 46a4 */ 0xffff, /* 46a5 */ 0xffff, /* 46a6 */ 0xffff, /* 46a7 */ 0xffff, /* 46a8 */ 0xffff, /* 46a9 */ 0xffff, /* 46aa */ 0xffff, /* 46ab */ 0xffff, /* 46ac */ 0xffff, /* 46ad */ 0xffff, /* 46ae */ 0xffff, /* 46af */ 0xffff, /* 46b0 */ 0xffff, /* 46b1 */ 0xffff, /* 46b2 */ 0xffff, /* 46b3 */ 0xffff, /* 46b4 */ 0xffff, /* 46b5 */ 0xffff, /* 46b6 */ 0xffff, /* 46b7 */ 0xffff, /* 46b8 */ 0xffff, /* 46b9 */ 0xffff, /* 46ba */ 0xffff, /* 46bb */ 0xffff, /* 46bc */ 0xffff, /* 46bd */ 0xffff, /* 46be */ 0xffff, /* 46bf */ 0xffff, /* 46c0 */ 0xffff, /* 46c1 */ 0xffff, /* 46c2 */ 0xffff, /* 46c3 */ 0xffff, /* 46c4 */ 0xffff, /* 46c5 */ 0xffff, /* 46c6 */ 0xffff, /* 46c7 */ 0xffff, /* 46c8 */ 0xffff, /* 46c9 */ 0xffff, /* 46ca */ 0xffff, /* 46cb */ 0xffff, /* 46cc */ 0xffff, /* 46cd */ 0xffff, /* 46ce */ 0xffff, /* 46cf */ 0xffff, /* 46d0 */ 0xffff, /* 46d1 */ 0xffff, /* 46d2 */ 0xffff, /* 46d3 */ 0xffff, /* 46d4 */ 0xffff, /* 46d5 */ 0xffff, /* 46d6 */ 0xffff, /* 46d7 */ 0xffff, /* 46d8 */ 0xffff, /* 46d9 */ 0xffff, /* 46da */ 0xffff, /* 46db */ 0xffff, /* 46dc */ 0xffff, /* 46dd */ 0xffff, /* 46de */ 0xffff, /* 46df */ 0xffff, /* 46e0 */ 0xffff, /* 46e1 */ 0xffff, /* 46e2 */ 0xffff, /* 46e3 */ 0xffff, /* 46e4 */ 0xffff, /* 46e5 */ 0xffff, /* 46e6 */ 0xffff, /* 46e7 */ 0xffff, /* 46e8 */ 0xffff, /* 46e9 */ 0xffff, /* 46ea */ 0xffff, /* 46eb */ 0xffff, /* 46ec */ 0xffff, /* 46ed */ 0xffff, /* 46ee */ 0xffff, /* 46ef */ 0xffff, /* 46f0 */ 0xffff, /* 46f1 */ 0xffff, /* 46f2 */ 0xffff, /* 46f3 */ 0xffff, /* 46f4 */ 0xffff, /* 46f5 */ 0xffff, /* 46f6 */ 0xffff, /* 46f7 */ 0xffff, /* 46f8 */ 0xffff, /* 46f9 */ 0xffff, /* 46fa */ 0xffff, /* 46fb */ 0xffff, /* 46fc */ 0xffff, /* 46fd */ 0xffff, /* 46fe */ 0xffff, /* 46ff */ 0xffff, /* 4700 */ 0xffff, /* 4701 */ 0xffff, /* 4702 */ 0xffff, /* 4703 */ 0xffff, /* 4704 */ 0xffff, /* 4705 */ 0xffff, /* 4706 */ 0xffff, /* 4707 */ 0xffff, /* 4708 */ 0xffff, /* 4709 */ 0xffff, /* 470a */ 0xffff, /* 470b */ 0xffff, /* 470c */ 0xffff, /* 470d */ 0xffff, /* 470e */ 0xffff, /* 470f */ 0xffff, /* 4710 */ 0xffff, /* 4711 */ 0xffff, /* 4712 */ 0xffff, /* 4713 */ 0xffff, /* 4714 */ 0xffff, /* 4715 */ 0xffff, /* 4716 */ 0xffff, /* 4717 */ 0xffff, /* 4718 */ 0xffff, /* 4719 */ 0xffff, /* 471a */ 0xffff, /* 471b */ 0xffff, /* 471c */ 0xffff, /* 471d */ 0xffff, /* 471e */ 0xffff, /* 471f */ 0xffff, /* 4720 */ 0xffff, /* 4721 */ 0xffff, /* 4722 */ 0xffff, /* 4723 */ 0xffff, /* 4724 */ 0xffff, /* 4725 */ 0xffff, /* 4726 */ 0xffff, /* 4727 */ 0xffff, /* 4728 */ 0xffff, /* 4729 */ 0xffff, /* 472a */ 0xffff, /* 472b */ 0xffff, /* 472c */ 0xffff, /* 472d */ 0xffff, /* 472e */ 0xffff, /* 472f */ 0xffff, /* 4730 */ 0xffff, /* 4731 */ 0xffff, /* 4732 */ 0xffff, /* 4733 */ 0xffff, /* 4734 */ 0xffff, /* 4735 */ 0xffff, /* 4736 */ 0xffff, /* 4737 */ 0xffff, /* 4738 */ 0xffff, /* 4739 */ 0xffff, /* 473a */ 0xffff, /* 473b */ 0xffff, /* 473c */ 0xffff, /* 473d */ 0xffff, /* 473e */ 0xffff, /* 473f */ 0xffff, /* 4740 */ 0xffff, /* 4741 */ 0xffff, /* 4742 */ 0xffff, /* 4743 */ 0xffff, /* 4744 */ 0xffff, /* 4745 */ 0xffff, /* 4746 */ 0xffff, /* 4747 */ 0xffff, /* 4748 */ 0xffff, /* 4749 */ 0xffff, /* 474a */ 0xffff, /* 474b */ 0xffff, /* 474c */ 0xffff, /* 474d */ 0xffff, /* 474e */ 0xffff, /* 474f */ 0xffff, /* 4750 */ 0xffff, /* 4751 */ 0xffff, /* 4752 */ 0xffff, /* 4753 */ 0xffff, /* 4754 */ 0xffff, /* 4755 */ 0xffff, /* 4756 */ 0xffff, /* 4757 */ 0xffff, /* 4758 */ 0xffff, /* 4759 */ 0xffff, /* 475a */ 0xffff, /* 475b */ 0xffff, /* 475c */ 0xffff, /* 475d */ 0xffff, /* 475e */ 0xffff, /* 475f */ 0xffff, /* 4760 */ 0xffff, /* 4761 */ 0xffff, /* 4762 */ 0xffff, /* 4763 */ 0xffff, /* 4764 */ 0xffff, /* 4765 */ 0xffff, /* 4766 */ 0xffff, /* 4767 */ 0xffff, /* 4768 */ 0xffff, /* 4769 */ 0xffff, /* 476a */ 0xffff, /* 476b */ 0xffff, /* 476c */ 0xffff, /* 476d */ 0xffff, /* 476e */ 0xffff, /* 476f */ 0xffff, /* 4770 */ 0xffff, /* 4771 */ 0xffff, /* 4772 */ 0xffff, /* 4773 */ 0xffff, /* 4774 */ 0xffff, /* 4775 */ 0xffff, /* 4776 */ 0xffff, /* 4777 */ 0xffff, /* 4778 */ 0xffff, /* 4779 */ 0xffff, /* 477a */ 0xffff, /* 477b */ 0xffff, /* 477c */ 0xffff, /* 477d */ 0xffff, /* 477e */ 0xffff, /* 477f */ 0xffff, /* 4780 */ 0xffff, /* 4781 */ 0xffff, /* 4782 */ 0xffff, /* 4783 */ 0xffff, /* 4784 */ 0xffff, /* 4785 */ 0xffff, /* 4786 */ 0xffff, /* 4787 */ 0xffff, /* 4788 */ 0xffff, /* 4789 */ 0xffff, /* 478a */ 0xffff, /* 478b */ 0xffff, /* 478c */ 0xffff, /* 478d */ 0xffff, /* 478e */ 0xffff, /* 478f */ 0xffff, /* 4790 */ 0xffff, /* 4791 */ 0xffff, /* 4792 */ 0xffff, /* 4793 */ 0xffff, /* 4794 */ 0xffff, /* 4795 */ 0xffff, /* 4796 */ 0xffff, /* 4797 */ 0xffff, /* 4798 */ 0xffff, /* 4799 */ 0xffff, /* 479a */ 0xffff, /* 479b */ 0xffff, /* 479c */ 0xffff, /* 479d */ 0xffff, /* 479e */ 0xffff, /* 479f */ 0xffff, /* 47a0 */ 0xffff, /* 47a1 */ 0xffff, /* 47a2 */ 0xffff, /* 47a3 */ 0xffff, /* 47a4 */ 0xffff, /* 47a5 */ 0xffff, /* 47a6 */ 0xffff, /* 47a7 */ 0xffff, /* 47a8 */ 0xffff, /* 47a9 */ 0xffff, /* 47aa */ 0xffff, /* 47ab */ 0xffff, /* 47ac */ 0xffff, /* 47ad */ 0xffff, /* 47ae */ 0xffff, /* 47af */ 0xffff, /* 47b0 */ 0xffff, /* 47b1 */ 0xffff, /* 47b2 */ 0xffff, /* 47b3 */ 0xffff, /* 47b4 */ 0xffff, /* 47b5 */ 0xffff, /* 47b6 */ 0xffff, /* 47b7 */ 0xffff, /* 47b8 */ 0xffff, /* 47b9 */ 0xffff, /* 47ba */ 0xffff, /* 47bb */ 0xffff, /* 47bc */ 0xffff, /* 47bd */ 0xffff, /* 47be */ 0xffff, /* 47bf */ 0xffff, /* 47c0 */ 0xffff, /* 47c1 */ 0xffff, /* 47c2 */ 0xffff, /* 47c3 */ 0xffff, /* 47c4 */ 0xffff, /* 47c5 */ 0xffff, /* 47c6 */ 0xffff, /* 47c7 */ 0xffff, /* 47c8 */ 0xffff, /* 47c9 */ 0xffff, /* 47ca */ 0xffff, /* 47cb */ 0xffff, /* 47cc */ 0xffff, /* 47cd */ 0xffff, /* 47ce */ 0xffff, /* 47cf */ 0xffff, /* 47d0 */ 0xffff, /* 47d1 */ 0xffff, /* 47d2 */ 0xffff, /* 47d3 */ 0xffff, /* 47d4 */ 0xffff, /* 47d5 */ 0xffff, /* 47d6 */ 0xffff, /* 47d7 */ 0xffff, /* 47d8 */ 0xffff, /* 47d9 */ 0xffff, /* 47da */ 0xffff, /* 47db */ 0xffff, /* 47dc */ 0xffff, /* 47dd */ 0xffff, /* 47de */ 0xffff, /* 47df */ 0xffff, /* 47e0 */ 0xffff, /* 47e1 */ 0xffff, /* 47e2 */ 0xffff, /* 47e3 */ 0xffff, /* 47e4 */ 0xffff, /* 47e5 */ 0xffff, /* 47e6 */ 0xffff, /* 47e7 */ 0xffff, /* 47e8 */ 0xffff, /* 47e9 */ 0xffff, /* 47ea */ 0xffff, /* 47eb */ 0xffff, /* 47ec */ 0xffff, /* 47ed */ 0xffff, /* 47ee */ 0xffff, /* 47ef */ 0xffff, /* 47f0 */ 0xffff, /* 47f1 */ 0xffff, /* 47f2 */ 0xffff, /* 47f3 */ 0xffff, /* 47f4 */ 0xffff, /* 47f5 */ 0xffff, /* 47f6 */ 0xffff, /* 47f7 */ 0xffff, /* 47f8 */ 0xffff, /* 47f9 */ 0xffff, /* 47fa */ 0xffff, /* 47fb */ 0xffff, /* 47fc */ 0xffff, /* 47fd */ 0xffff, /* 47fe */ 0xffff, /* 47ff */ 0xffff, /* 4800 */ 0xffff, /* 4801 */ 0xffff, /* 4802 */ 0xffff, /* 4803 */ 0xffff, /* 4804 */ 0xffff, /* 4805 */ 0xffff, /* 4806 */ 0xffff, /* 4807 */ 0xffff, /* 4808 */ 0xffff, /* 4809 */ 0xffff, /* 480a */ 0xffff, /* 480b */ 0xffff, /* 480c */ 0xffff, /* 480d */ 0xffff, /* 480e */ 0xffff, /* 480f */ 0xffff, /* 4810 */ 0xffff, /* 4811 */ 0xffff, /* 4812 */ 0xffff, /* 4813 */ 0xffff, /* 4814 */ 0xffff, /* 4815 */ 0xffff, /* 4816 */ 0xffff, /* 4817 */ 0xffff, /* 4818 */ 0xffff, /* 4819 */ 0xffff, /* 481a */ 0xffff, /* 481b */ 0xffff, /* 481c */ 0xffff, /* 481d */ 0xffff, /* 481e */ 0xffff, /* 481f */ 0xffff, /* 4820 */ 0xffff, /* 4821 */ 0xffff, /* 4822 */ 0xffff, /* 4823 */ 0xffff, /* 4824 */ 0xffff, /* 4825 */ 0xffff, /* 4826 */ 0xffff, /* 4827 */ 0xffff, /* 4828 */ 0xffff, /* 4829 */ 0xffff, /* 482a */ 0xffff, /* 482b */ 0xffff, /* 482c */ 0xffff, /* 482d */ 0xffff, /* 482e */ 0xffff, /* 482f */ 0xffff, /* 4830 */ 0xffff, /* 4831 */ 0xffff, /* 4832 */ 0xffff, /* 4833 */ 0xffff, /* 4834 */ 0xffff, /* 4835 */ 0xffff, /* 4836 */ 0xffff, /* 4837 */ 0xffff, /* 4838 */ 0xffff, /* 4839 */ 0xffff, /* 483a */ 0xffff, /* 483b */ 0xffff, /* 483c */ 0xffff, /* 483d */ 0xffff, /* 483e */ 0xffff, /* 483f */ 0xffff, /* 4840 */ 0xffff, /* 4841 */ 0xffff, /* 4842 */ 0xffff, /* 4843 */ 0xffff, /* 4844 */ 0xffff, /* 4845 */ 0xffff, /* 4846 */ 0xffff, /* 4847 */ 0xffff, /* 4848 */ 0xffff, /* 4849 */ 0xffff, /* 484a */ 0xffff, /* 484b */ 0xffff, /* 484c */ 0xffff, /* 484d */ 0xffff, /* 484e */ 0xffff, /* 484f */ 0xffff, /* 4850 */ 0xffff, /* 4851 */ 0xffff, /* 4852 */ 0xffff, /* 4853 */ 0xffff, /* 4854 */ 0xffff, /* 4855 */ 0xffff, /* 4856 */ 0xffff, /* 4857 */ 0xffff, /* 4858 */ 0xffff, /* 4859 */ 0xffff, /* 485a */ 0xffff, /* 485b */ 0xffff, /* 485c */ 0xffff, /* 485d */ 0xffff, /* 485e */ 0xffff, /* 485f */ 0xffff, /* 4860 */ 0xffff, /* 4861 */ 0xffff, /* 4862 */ 0xffff, /* 4863 */ 0xffff, /* 4864 */ 0xffff, /* 4865 */ 0xffff, /* 4866 */ 0xffff, /* 4867 */ 0xffff, /* 4868 */ 0xffff, /* 4869 */ 0xffff, /* 486a */ 0xffff, /* 486b */ 0xffff, /* 486c */ 0xffff, /* 486d */ 0xffff, /* 486e */ 0xffff, /* 486f */ 0xffff, /* 4870 */ 0xffff, /* 4871 */ 0xffff, /* 4872 */ 0xffff, /* 4873 */ 0xffff, /* 4874 */ 0xffff, /* 4875 */ 0xffff, /* 4876 */ 0xffff, /* 4877 */ 0xffff, /* 4878 */ 0xffff, /* 4879 */ 0xffff, /* 487a */ 0xffff, /* 487b */ 0xffff, /* 487c */ 0xffff, /* 487d */ 0xffff, /* 487e */ 0xffff, /* 487f */ 0xffff, /* 4880 */ 0xffff, /* 4881 */ 0xffff, /* 4882 */ 0xffff, /* 4883 */ 0xffff, /* 4884 */ 0xffff, /* 4885 */ 0xffff, /* 4886 */ 0xffff, /* 4887 */ 0xffff, /* 4888 */ 0xffff, /* 4889 */ 0xffff, /* 488a */ 0xffff, /* 488b */ 0xffff, /* 488c */ 0xffff, /* 488d */ 0xffff, /* 488e */ 0xffff, /* 488f */ 0xffff, /* 4890 */ 0xffff, /* 4891 */ 0xffff, /* 4892 */ 0xffff, /* 4893 */ 0xffff, /* 4894 */ 0xffff, /* 4895 */ 0xffff, /* 4896 */ 0xffff, /* 4897 */ 0xffff, /* 4898 */ 0xffff, /* 4899 */ 0xffff, /* 489a */ 0xffff, /* 489b */ 0xffff, /* 489c */ 0xffff, /* 489d */ 0xffff, /* 489e */ 0xffff, /* 489f */ 0xffff, /* 48a0 */ 0xffff, /* 48a1 */ 0xffff, /* 48a2 */ 0xffff, /* 48a3 */ 0xffff, /* 48a4 */ 0xffff, /* 48a5 */ 0xffff, /* 48a6 */ 0xffff, /* 48a7 */ 0xffff, /* 48a8 */ 0xffff, /* 48a9 */ 0xffff, /* 48aa */ 0xffff, /* 48ab */ 0xffff, /* 48ac */ 0xffff, /* 48ad */ 0xffff, /* 48ae */ 0xffff, /* 48af */ 0xffff, /* 48b0 */ 0xffff, /* 48b1 */ 0xffff, /* 48b2 */ 0xffff, /* 48b3 */ 0xffff, /* 48b4 */ 0xffff, /* 48b5 */ 0xffff, /* 48b6 */ 0xffff, /* 48b7 */ 0xffff, /* 48b8 */ 0xffff, /* 48b9 */ 0xffff, /* 48ba */ 0xffff, /* 48bb */ 0xffff, /* 48bc */ 0xffff, /* 48bd */ 0xffff, /* 48be */ 0xffff, /* 48bf */ 0xffff, /* 48c0 */ 0xffff, /* 48c1 */ 0xffff, /* 48c2 */ 0xffff, /* 48c3 */ 0xffff, /* 48c4 */ 0xffff, /* 48c5 */ 0xffff, /* 48c6 */ 0xffff, /* 48c7 */ 0xffff, /* 48c8 */ 0xffff, /* 48c9 */ 0xffff, /* 48ca */ 0xffff, /* 48cb */ 0xffff, /* 48cc */ 0xffff, /* 48cd */ 0xffff, /* 48ce */ 0xffff, /* 48cf */ 0xffff, /* 48d0 */ 0xffff, /* 48d1 */ 0xffff, /* 48d2 */ 0xffff, /* 48d3 */ 0xffff, /* 48d4 */ 0xffff, /* 48d5 */ 0xffff, /* 48d6 */ 0xffff, /* 48d7 */ 0xffff, /* 48d8 */ 0xffff, /* 48d9 */ 0xffff, /* 48da */ 0xffff, /* 48db */ 0xffff, /* 48dc */ 0xffff, /* 48dd */ 0xffff, /* 48de */ 0xffff, /* 48df */ 0xffff, /* 48e0 */ 0xffff, /* 48e1 */ 0xffff, /* 48e2 */ 0xffff, /* 48e3 */ 0xffff, /* 48e4 */ 0xffff, /* 48e5 */ 0xffff, /* 48e6 */ 0xffff, /* 48e7 */ 0xffff, /* 48e8 */ 0xffff, /* 48e9 */ 0xffff, /* 48ea */ 0xffff, /* 48eb */ 0xffff, /* 48ec */ 0xffff, /* 48ed */ 0xffff, /* 48ee */ 0xffff, /* 48ef */ 0xffff, /* 48f0 */ 0xffff, /* 48f1 */ 0xffff, /* 48f2 */ 0xffff, /* 48f3 */ 0xffff, /* 48f4 */ 0xffff, /* 48f5 */ 0xffff, /* 48f6 */ 0xffff, /* 48f7 */ 0xffff, /* 48f8 */ 0xffff, /* 48f9 */ 0xffff, /* 48fa */ 0xffff, /* 48fb */ 0xffff, /* 48fc */ 0xffff, /* 48fd */ 0xffff, /* 48fe */ 0xffff, /* 48ff */ 0xffff, /* 4900 */ 0xffff, /* 4901 */ 0xffff, /* 4902 */ 0xffff, /* 4903 */ 0xffff, /* 4904 */ 0xffff, /* 4905 */ 0xffff, /* 4906 */ 0xffff, /* 4907 */ 0xffff, /* 4908 */ 0xffff, /* 4909 */ 0xffff, /* 490a */ 0xffff, /* 490b */ 0xffff, /* 490c */ 0xffff, /* 490d */ 0xffff, /* 490e */ 0xffff, /* 490f */ 0xffff, /* 4910 */ 0xffff, /* 4911 */ 0xffff, /* 4912 */ 0xffff, /* 4913 */ 0xffff, /* 4914 */ 0xffff, /* 4915 */ 0xffff, /* 4916 */ 0xffff, /* 4917 */ 0xffff, /* 4918 */ 0xffff, /* 4919 */ 0xffff, /* 491a */ 0xffff, /* 491b */ 0xffff, /* 491c */ 0xffff, /* 491d */ 0xffff, /* 491e */ 0xffff, /* 491f */ 0xffff, /* 4920 */ 0xffff, /* 4921 */ 0xffff, /* 4922 */ 0xffff, /* 4923 */ 0xffff, /* 4924 */ 0xffff, /* 4925 */ 0xffff, /* 4926 */ 0xffff, /* 4927 */ 0xffff, /* 4928 */ 0xffff, /* 4929 */ 0xffff, /* 492a */ 0xffff, /* 492b */ 0xffff, /* 492c */ 0xffff, /* 492d */ 0xffff, /* 492e */ 0xffff, /* 492f */ 0xffff, /* 4930 */ 0xffff, /* 4931 */ 0xffff, /* 4932 */ 0xffff, /* 4933 */ 0xffff, /* 4934 */ 0xffff, /* 4935 */ 0xffff, /* 4936 */ 0xffff, /* 4937 */ 0xffff, /* 4938 */ 0xffff, /* 4939 */ 0xffff, /* 493a */ 0xffff, /* 493b */ 0xffff, /* 493c */ 0xffff, /* 493d */ 0xffff, /* 493e */ 0xffff, /* 493f */ 0xffff, /* 4940 */ 0xffff, /* 4941 */ 0xffff, /* 4942 */ 0xffff, /* 4943 */ 0xffff, /* 4944 */ 0xffff, /* 4945 */ 0xffff, /* 4946 */ 0xffff, /* 4947 */ 0xffff, /* 4948 */ 0xffff, /* 4949 */ 0xffff, /* 494a */ 0xffff, /* 494b */ 0xffff, /* 494c */ 0xffff, /* 494d */ 0xffff, /* 494e */ 0xffff, /* 494f */ 0xffff, /* 4950 */ 0xffff, /* 4951 */ 0xffff, /* 4952 */ 0xffff, /* 4953 */ 0xffff, /* 4954 */ 0xffff, /* 4955 */ 0xffff, /* 4956 */ 0xffff, /* 4957 */ 0xffff, /* 4958 */ 0xffff, /* 4959 */ 0xffff, /* 495a */ 0xffff, /* 495b */ 0xffff, /* 495c */ 0xffff, /* 495d */ 0xffff, /* 495e */ 0xffff, /* 495f */ 0xffff, /* 4960 */ 0xffff, /* 4961 */ 0xffff, /* 4962 */ 0xffff, /* 4963 */ 0xffff, /* 4964 */ 0xffff, /* 4965 */ 0xffff, /* 4966 */ 0xffff, /* 4967 */ 0xffff, /* 4968 */ 0xffff, /* 4969 */ 0xffff, /* 496a */ 0xffff, /* 496b */ 0xffff, /* 496c */ 0xffff, /* 496d */ 0xffff, /* 496e */ 0xffff, /* 496f */ 0xffff, /* 4970 */ 0xffff, /* 4971 */ 0xffff, /* 4972 */ 0xffff, /* 4973 */ 0xffff, /* 4974 */ 0xffff, /* 4975 */ 0xffff, /* 4976 */ 0xffff, /* 4977 */ 0xffff, /* 4978 */ 0xffff, /* 4979 */ 0xffff, /* 497a */ 0xffff, /* 497b */ 0xffff, /* 497c */ 0xffff, /* 497d */ 0xffff, /* 497e */ 0xffff, /* 497f */ 0xffff, /* 4980 */ 0xffff, /* 4981 */ 0xffff, /* 4982 */ 0xffff, /* 4983 */ 0xffff, /* 4984 */ 0xffff, /* 4985 */ 0xffff, /* 4986 */ 0xffff, /* 4987 */ 0xffff, /* 4988 */ 0xffff, /* 4989 */ 0xffff, /* 498a */ 0xffff, /* 498b */ 0xffff, /* 498c */ 0xffff, /* 498d */ 0xffff, /* 498e */ 0xffff, /* 498f */ 0xffff, /* 4990 */ 0xffff, /* 4991 */ 0xffff, /* 4992 */ 0xffff, /* 4993 */ 0xffff, /* 4994 */ 0xffff, /* 4995 */ 0xffff, /* 4996 */ 0xffff, /* 4997 */ 0xffff, /* 4998 */ 0xffff, /* 4999 */ 0xffff, /* 499a */ 0xffff, /* 499b */ 0xffff, /* 499c */ 0xffff, /* 499d */ 0xffff, /* 499e */ 0xffff, /* 499f */ 0xffff, /* 49a0 */ 0xffff, /* 49a1 */ 0xffff, /* 49a2 */ 0xffff, /* 49a3 */ 0xffff, /* 49a4 */ 0xffff, /* 49a5 */ 0xffff, /* 49a6 */ 0xffff, /* 49a7 */ 0xffff, /* 49a8 */ 0xffff, /* 49a9 */ 0xffff, /* 49aa */ 0xffff, /* 49ab */ 0xffff, /* 49ac */ 0xffff, /* 49ad */ 0xffff, /* 49ae */ 0xffff, /* 49af */ 0xffff, /* 49b0 */ 0xffff, /* 49b1 */ 0xffff, /* 49b2 */ 0xffff, /* 49b3 */ 0xffff, /* 49b4 */ 0xffff, /* 49b5 */ 0xffff, /* 49b6 */ 0xffff, /* 49b7 */ 0xffff, /* 49b8 */ 0xffff, /* 49b9 */ 0xffff, /* 49ba */ 0xffff, /* 49bb */ 0xffff, /* 49bc */ 0xffff, /* 49bd */ 0xffff, /* 49be */ 0xffff, /* 49bf */ 0xffff, /* 49c0 */ 0xffff, /* 49c1 */ 0xffff, /* 49c2 */ 0xffff, /* 49c3 */ 0xffff, /* 49c4 */ 0xffff, /* 49c5 */ 0xffff, /* 49c6 */ 0xffff, /* 49c7 */ 0xffff, /* 49c8 */ 0xffff, /* 49c9 */ 0xffff, /* 49ca */ 0xffff, /* 49cb */ 0xffff, /* 49cc */ 0xffff, /* 49cd */ 0xffff, /* 49ce */ 0xffff, /* 49cf */ 0xffff, /* 49d0 */ 0xffff, /* 49d1 */ 0xffff, /* 49d2 */ 0xffff, /* 49d3 */ 0xffff, /* 49d4 */ 0xffff, /* 49d5 */ 0xffff, /* 49d6 */ 0xffff, /* 49d7 */ 0xffff, /* 49d8 */ 0xffff, /* 49d9 */ 0xffff, /* 49da */ 0xffff, /* 49db */ 0xffff, /* 49dc */ 0xffff, /* 49dd */ 0xffff, /* 49de */ 0xffff, /* 49df */ 0xffff, /* 49e0 */ 0xffff, /* 49e1 */ 0xffff, /* 49e2 */ 0xffff, /* 49e3 */ 0xffff, /* 49e4 */ 0xffff, /* 49e5 */ 0xffff, /* 49e6 */ 0xffff, /* 49e7 */ 0xffff, /* 49e8 */ 0xffff, /* 49e9 */ 0xffff, /* 49ea */ 0xffff, /* 49eb */ 0xffff, /* 49ec */ 0xffff, /* 49ed */ 0xffff, /* 49ee */ 0xffff, /* 49ef */ 0xffff, /* 49f0 */ 0xffff, /* 49f1 */ 0xffff, /* 49f2 */ 0xffff, /* 49f3 */ 0xffff, /* 49f4 */ 0xffff, /* 49f5 */ 0xffff, /* 49f6 */ 0xffff, /* 49f7 */ 0xffff, /* 49f8 */ 0xffff, /* 49f9 */ 0xffff, /* 49fa */ 0xffff, /* 49fb */ 0xffff, /* 49fc */ 0xffff, /* 49fd */ 0xffff, /* 49fe */ 0xffff, /* 49ff */ 0xffff, /* 4a00 */ 0xffff, /* 4a01 */ 0xffff, /* 4a02 */ 0xffff, /* 4a03 */ 0xffff, /* 4a04 */ 0xffff, /* 4a05 */ 0xffff, /* 4a06 */ 0xffff, /* 4a07 */ 0xffff, /* 4a08 */ 0xffff, /* 4a09 */ 0xffff, /* 4a0a */ 0xffff, /* 4a0b */ 0xffff, /* 4a0c */ 0xffff, /* 4a0d */ 0xffff, /* 4a0e */ 0xffff, /* 4a0f */ 0xffff, /* 4a10 */ 0xffff, /* 4a11 */ 0xffff, /* 4a12 */ 0xffff, /* 4a13 */ 0xffff, /* 4a14 */ 0xffff, /* 4a15 */ 0xffff, /* 4a16 */ 0xffff, /* 4a17 */ 0xffff, /* 4a18 */ 0xffff, /* 4a19 */ 0xffff, /* 4a1a */ 0xffff, /* 4a1b */ 0xffff, /* 4a1c */ 0xffff, /* 4a1d */ 0xffff, /* 4a1e */ 0xffff, /* 4a1f */ 0xffff, /* 4a20 */ 0xffff, /* 4a21 */ 0xffff, /* 4a22 */ 0xffff, /* 4a23 */ 0xffff, /* 4a24 */ 0xffff, /* 4a25 */ 0xffff, /* 4a26 */ 0xffff, /* 4a27 */ 0xffff, /* 4a28 */ 0xffff, /* 4a29 */ 0xffff, /* 4a2a */ 0xffff, /* 4a2b */ 0xffff, /* 4a2c */ 0xffff, /* 4a2d */ 0xffff, /* 4a2e */ 0xffff, /* 4a2f */ 0xffff, /* 4a30 */ 0xffff, /* 4a31 */ 0xffff, /* 4a32 */ 0xffff, /* 4a33 */ 0xffff, /* 4a34 */ 0xffff, /* 4a35 */ 0xffff, /* 4a36 */ 0xffff, /* 4a37 */ 0xffff, /* 4a38 */ 0xffff, /* 4a39 */ 0xffff, /* 4a3a */ 0xffff, /* 4a3b */ 0xffff, /* 4a3c */ 0xffff, /* 4a3d */ 0xffff, /* 4a3e */ 0xffff, /* 4a3f */ 0xffff, /* 4a40 */ 0xffff, /* 4a41 */ 0xffff, /* 4a42 */ 0xffff, /* 4a43 */ 0xffff, /* 4a44 */ 0xffff, /* 4a45 */ 0xffff, /* 4a46 */ 0xffff, /* 4a47 */ 0xffff, /* 4a48 */ 0xffff, /* 4a49 */ 0xffff, /* 4a4a */ 0xffff, /* 4a4b */ 0xffff, /* 4a4c */ 0xffff, /* 4a4d */ 0xffff, /* 4a4e */ 0xffff, /* 4a4f */ 0xffff, /* 4a50 */ 0xffff, /* 4a51 */ 0xffff, /* 4a52 */ 0xffff, /* 4a53 */ 0xffff, /* 4a54 */ 0xffff, /* 4a55 */ 0xffff, /* 4a56 */ 0xffff, /* 4a57 */ 0xffff, /* 4a58 */ 0xffff, /* 4a59 */ 0xffff, /* 4a5a */ 0xffff, /* 4a5b */ 0xffff, /* 4a5c */ 0xffff, /* 4a5d */ 0xffff, /* 4a5e */ 0xffff, /* 4a5f */ 0xffff, /* 4a60 */ 0xffff, /* 4a61 */ 0xffff, /* 4a62 */ 0xffff, /* 4a63 */ 0xffff, /* 4a64 */ 0xffff, /* 4a65 */ 0xffff, /* 4a66 */ 0xffff, /* 4a67 */ 0xffff, /* 4a68 */ 0xffff, /* 4a69 */ 0xffff, /* 4a6a */ 0xffff, /* 4a6b */ 0xffff, /* 4a6c */ 0xffff, /* 4a6d */ 0xffff, /* 4a6e */ 0xffff, /* 4a6f */ 0xffff, /* 4a70 */ 0xffff, /* 4a71 */ 0xffff, /* 4a72 */ 0xffff, /* 4a73 */ 0xffff, /* 4a74 */ 0xffff, /* 4a75 */ 0xffff, /* 4a76 */ 0xffff, /* 4a77 */ 0xffff, /* 4a78 */ 0xffff, /* 4a79 */ 0xffff, /* 4a7a */ 0xffff, /* 4a7b */ 0xffff, /* 4a7c */ 0xffff, /* 4a7d */ 0xffff, /* 4a7e */ 0xffff, /* 4a7f */ 0xffff, /* 4a80 */ 0xffff, /* 4a81 */ 0xffff, /* 4a82 */ 0xffff, /* 4a83 */ 0xffff, /* 4a84 */ 0xffff, /* 4a85 */ 0xffff, /* 4a86 */ 0xffff, /* 4a87 */ 0xffff, /* 4a88 */ 0xffff, /* 4a89 */ 0xffff, /* 4a8a */ 0xffff, /* 4a8b */ 0xffff, /* 4a8c */ 0xffff, /* 4a8d */ 0xffff, /* 4a8e */ 0xffff, /* 4a8f */ 0xffff, /* 4a90 */ 0xffff, /* 4a91 */ 0xffff, /* 4a92 */ 0xffff, /* 4a93 */ 0xffff, /* 4a94 */ 0xffff, /* 4a95 */ 0xffff, /* 4a96 */ 0xffff, /* 4a97 */ 0xffff, /* 4a98 */ 0xffff, /* 4a99 */ 0xffff, /* 4a9a */ 0xffff, /* 4a9b */ 0xffff, /* 4a9c */ 0xffff, /* 4a9d */ 0xffff, /* 4a9e */ 0xffff, /* 4a9f */ 0xffff, /* 4aa0 */ 0xffff, /* 4aa1 */ 0xffff, /* 4aa2 */ 0xffff, /* 4aa3 */ 0xffff, /* 4aa4 */ 0xffff, /* 4aa5 */ 0xffff, /* 4aa6 */ 0xffff, /* 4aa7 */ 0xffff, /* 4aa8 */ 0xffff, /* 4aa9 */ 0xffff, /* 4aaa */ 0xffff, /* 4aab */ 0xffff, /* 4aac */ 0xffff, /* 4aad */ 0xffff, /* 4aae */ 0xffff, /* 4aaf */ 0xffff, /* 4ab0 */ 0xffff, /* 4ab1 */ 0xffff, /* 4ab2 */ 0xffff, /* 4ab3 */ 0xffff, /* 4ab4 */ 0xffff, /* 4ab5 */ 0xffff, /* 4ab6 */ 0xffff, /* 4ab7 */ 0xffff, /* 4ab8 */ 0xffff, /* 4ab9 */ 0xffff, /* 4aba */ 0xffff, /* 4abb */ 0xffff, /* 4abc */ 0xffff, /* 4abd */ 0xffff, /* 4abe */ 0xffff, /* 4abf */ 0xffff, /* 4ac0 */ 0xffff, /* 4ac1 */ 0xffff, /* 4ac2 */ 0xffff, /* 4ac3 */ 0xffff, /* 4ac4 */ 0xffff, /* 4ac5 */ 0xffff, /* 4ac6 */ 0xffff, /* 4ac7 */ 0xffff, /* 4ac8 */ 0xffff, /* 4ac9 */ 0xffff, /* 4aca */ 0xffff, /* 4acb */ 0xffff, /* 4acc */ 0xffff, /* 4acd */ 0xffff, /* 4ace */ 0xffff, /* 4acf */ 0xffff, /* 4ad0 */ 0xffff, /* 4ad1 */ 0xffff, /* 4ad2 */ 0xffff, /* 4ad3 */ 0xffff, /* 4ad4 */ 0xffff, /* 4ad5 */ 0xffff, /* 4ad6 */ 0xffff, /* 4ad7 */ 0xffff, /* 4ad8 */ 0xffff, /* 4ad9 */ 0xffff, /* 4ada */ 0xffff, /* 4adb */ 0xffff, /* 4adc */ 0xffff, /* 4add */ 0xffff, /* 4ade */ 0xffff, /* 4adf */ 0xffff, /* 4ae0 */ 0xffff, /* 4ae1 */ 0xffff, /* 4ae2 */ 0xffff, /* 4ae3 */ 0xffff, /* 4ae4 */ 0xffff, /* 4ae5 */ 0xffff, /* 4ae6 */ 0xffff, /* 4ae7 */ 0xffff, /* 4ae8 */ 0xffff, /* 4ae9 */ 0xffff, /* 4aea */ 0xffff, /* 4aeb */ 0xffff, /* 4aec */ 0xffff, /* 4aed */ 0xffff, /* 4aee */ 0xffff, /* 4aef */ 0xffff, /* 4af0 */ 0xffff, /* 4af1 */ 0xffff, /* 4af2 */ 0xffff, /* 4af3 */ 0xffff, /* 4af4 */ 0xffff, /* 4af5 */ 0xffff, /* 4af6 */ 0xffff, /* 4af7 */ 0xffff, /* 4af8 */ 0xffff, /* 4af9 */ 0xffff, /* 4afa */ 0xffff, /* 4afb */ 0xffff, /* 4afc */ 0xffff, /* 4afd */ 0xffff, /* 4afe */ 0xffff, /* 4aff */ 0xffff, /* 4b00 */ 0xffff, /* 4b01 */ 0xffff, /* 4b02 */ 0xffff, /* 4b03 */ 0xffff, /* 4b04 */ 0xffff, /* 4b05 */ 0xffff, /* 4b06 */ 0xffff, /* 4b07 */ 0xffff, /* 4b08 */ 0xffff, /* 4b09 */ 0xffff, /* 4b0a */ 0xffff, /* 4b0b */ 0xffff, /* 4b0c */ 0xffff, /* 4b0d */ 0xffff, /* 4b0e */ 0xffff, /* 4b0f */ 0xffff, /* 4b10 */ 0xffff, /* 4b11 */ 0xffff, /* 4b12 */ 0xffff, /* 4b13 */ 0xffff, /* 4b14 */ 0xffff, /* 4b15 */ 0xffff, /* 4b16 */ 0xffff, /* 4b17 */ 0xffff, /* 4b18 */ 0xffff, /* 4b19 */ 0xffff, /* 4b1a */ 0xffff, /* 4b1b */ 0xffff, /* 4b1c */ 0xffff, /* 4b1d */ 0xffff, /* 4b1e */ 0xffff, /* 4b1f */ 0xffff, /* 4b20 */ 0xffff, /* 4b21 */ 0xffff, /* 4b22 */ 0xffff, /* 4b23 */ 0xffff, /* 4b24 */ 0xffff, /* 4b25 */ 0xffff, /* 4b26 */ 0xffff, /* 4b27 */ 0xffff, /* 4b28 */ 0xffff, /* 4b29 */ 0xffff, /* 4b2a */ 0xffff, /* 4b2b */ 0xffff, /* 4b2c */ 0xffff, /* 4b2d */ 0xffff, /* 4b2e */ 0xffff, /* 4b2f */ 0xffff, /* 4b30 */ 0xffff, /* 4b31 */ 0xffff, /* 4b32 */ 0xffff, /* 4b33 */ 0xffff, /* 4b34 */ 0xffff, /* 4b35 */ 0xffff, /* 4b36 */ 0xffff, /* 4b37 */ 0xffff, /* 4b38 */ 0xffff, /* 4b39 */ 0xffff, /* 4b3a */ 0xffff, /* 4b3b */ 0xffff, /* 4b3c */ 0xffff, /* 4b3d */ 0xffff, /* 4b3e */ 0xffff, /* 4b3f */ 0xffff, /* 4b40 */ 0xffff, /* 4b41 */ 0xffff, /* 4b42 */ 0xffff, /* 4b43 */ 0xffff, /* 4b44 */ 0xffff, /* 4b45 */ 0xffff, /* 4b46 */ 0xffff, /* 4b47 */ 0xffff, /* 4b48 */ 0xffff, /* 4b49 */ 0xffff, /* 4b4a */ 0xffff, /* 4b4b */ 0xffff, /* 4b4c */ 0xffff, /* 4b4d */ 0xffff, /* 4b4e */ 0xffff, /* 4b4f */ 0xffff, /* 4b50 */ 0xffff, /* 4b51 */ 0xffff, /* 4b52 */ 0xffff, /* 4b53 */ 0xffff, /* 4b54 */ 0xffff, /* 4b55 */ 0xffff, /* 4b56 */ 0xffff, /* 4b57 */ 0xffff, /* 4b58 */ 0xffff, /* 4b59 */ 0xffff, /* 4b5a */ 0xffff, /* 4b5b */ 0xffff, /* 4b5c */ 0xffff, /* 4b5d */ 0xffff, /* 4b5e */ 0xffff, /* 4b5f */ 0xffff, /* 4b60 */ 0xffff, /* 4b61 */ 0xffff, /* 4b62 */ 0xffff, /* 4b63 */ 0xffff, /* 4b64 */ 0xffff, /* 4b65 */ 0xffff, /* 4b66 */ 0xffff, /* 4b67 */ 0xffff, /* 4b68 */ 0xffff, /* 4b69 */ 0xffff, /* 4b6a */ 0xffff, /* 4b6b */ 0xffff, /* 4b6c */ 0xffff, /* 4b6d */ 0xffff, /* 4b6e */ 0xffff, /* 4b6f */ 0xffff, /* 4b70 */ 0xffff, /* 4b71 */ 0xffff, /* 4b72 */ 0xffff, /* 4b73 */ 0xffff, /* 4b74 */ 0xffff, /* 4b75 */ 0xffff, /* 4b76 */ 0xffff, /* 4b77 */ 0xffff, /* 4b78 */ 0xffff, /* 4b79 */ 0xffff, /* 4b7a */ 0xffff, /* 4b7b */ 0xffff, /* 4b7c */ 0xffff, /* 4b7d */ 0xffff, /* 4b7e */ 0xffff, /* 4b7f */ 0xffff, /* 4b80 */ 0xffff, /* 4b81 */ 0xffff, /* 4b82 */ 0xffff, /* 4b83 */ 0xffff, /* 4b84 */ 0xffff, /* 4b85 */ 0xffff, /* 4b86 */ 0xffff, /* 4b87 */ 0xffff, /* 4b88 */ 0xffff, /* 4b89 */ 0xffff, /* 4b8a */ 0xffff, /* 4b8b */ 0xffff, /* 4b8c */ 0xffff, /* 4b8d */ 0xffff, /* 4b8e */ 0xffff, /* 4b8f */ 0xffff, /* 4b90 */ 0xffff, /* 4b91 */ 0xffff, /* 4b92 */ 0xffff, /* 4b93 */ 0xffff, /* 4b94 */ 0xffff, /* 4b95 */ 0xffff, /* 4b96 */ 0xffff, /* 4b97 */ 0xffff, /* 4b98 */ 0xffff, /* 4b99 */ 0xffff, /* 4b9a */ 0xffff, /* 4b9b */ 0xffff, /* 4b9c */ 0xffff, /* 4b9d */ 0xffff, /* 4b9e */ 0xffff, /* 4b9f */ 0xffff, /* 4ba0 */ 0xffff, /* 4ba1 */ 0xffff, /* 4ba2 */ 0xffff, /* 4ba3 */ 0xffff, /* 4ba4 */ 0xffff, /* 4ba5 */ 0xffff, /* 4ba6 */ 0xffff, /* 4ba7 */ 0xffff, /* 4ba8 */ 0xffff, /* 4ba9 */ 0xffff, /* 4baa */ 0xffff, /* 4bab */ 0xffff, /* 4bac */ 0xffff, /* 4bad */ 0xffff, /* 4bae */ 0xffff, /* 4baf */ 0xffff, /* 4bb0 */ 0xffff, /* 4bb1 */ 0xffff, /* 4bb2 */ 0xffff, /* 4bb3 */ 0xffff, /* 4bb4 */ 0xffff, /* 4bb5 */ 0xffff, /* 4bb6 */ 0xffff, /* 4bb7 */ 0xffff, /* 4bb8 */ 0xffff, /* 4bb9 */ 0xffff, /* 4bba */ 0xffff, /* 4bbb */ 0xffff, /* 4bbc */ 0xffff, /* 4bbd */ 0xffff, /* 4bbe */ 0xffff, /* 4bbf */ 0xffff, /* 4bc0 */ 0xffff, /* 4bc1 */ 0xffff, /* 4bc2 */ 0xffff, /* 4bc3 */ 0xffff, /* 4bc4 */ 0xffff, /* 4bc5 */ 0xffff, /* 4bc6 */ 0xffff, /* 4bc7 */ 0xffff, /* 4bc8 */ 0xffff, /* 4bc9 */ 0xffff, /* 4bca */ 0xffff, /* 4bcb */ 0xffff, /* 4bcc */ 0xffff, /* 4bcd */ 0xffff, /* 4bce */ 0xffff, /* 4bcf */ 0xffff, /* 4bd0 */ 0xffff, /* 4bd1 */ 0xffff, /* 4bd2 */ 0xffff, /* 4bd3 */ 0xffff, /* 4bd4 */ 0xffff, /* 4bd5 */ 0xffff, /* 4bd6 */ 0xffff, /* 4bd7 */ 0xffff, /* 4bd8 */ 0xffff, /* 4bd9 */ 0xffff, /* 4bda */ 0xffff, /* 4bdb */ 0xffff, /* 4bdc */ 0xffff, /* 4bdd */ 0xffff, /* 4bde */ 0xffff, /* 4bdf */ 0xffff, /* 4be0 */ 0xffff, /* 4be1 */ 0xffff, /* 4be2 */ 0xffff, /* 4be3 */ 0xffff, /* 4be4 */ 0xffff, /* 4be5 */ 0xffff, /* 4be6 */ 0xffff, /* 4be7 */ 0xffff, /* 4be8 */ 0xffff, /* 4be9 */ 0xffff, /* 4bea */ 0xffff, /* 4beb */ 0xffff, /* 4bec */ 0xffff, /* 4bed */ 0xffff, /* 4bee */ 0xffff, /* 4bef */ 0xffff, /* 4bf0 */ 0xffff, /* 4bf1 */ 0xffff, /* 4bf2 */ 0xffff, /* 4bf3 */ 0xffff, /* 4bf4 */ 0xffff, /* 4bf5 */ 0xffff, /* 4bf6 */ 0xffff, /* 4bf7 */ 0xffff, /* 4bf8 */ 0xffff, /* 4bf9 */ 0xffff, /* 4bfa */ 0xffff, /* 4bfb */ 0xffff, /* 4bfc */ 0xffff, /* 4bfd */ 0xffff, /* 4bfe */ 0xffff, /* 4bff */ 0xffff, /* 4c00 */ 0xffff, /* 4c01 */ 0xffff, /* 4c02 */ 0xffff, /* 4c03 */ 0xffff, /* 4c04 */ 0xffff, /* 4c05 */ 0xffff, /* 4c06 */ 0xffff, /* 4c07 */ 0xffff, /* 4c08 */ 0xffff, /* 4c09 */ 0xffff, /* 4c0a */ 0xffff, /* 4c0b */ 0xffff, /* 4c0c */ 0xffff, /* 4c0d */ 0xffff, /* 4c0e */ 0xffff, /* 4c0f */ 0xffff, /* 4c10 */ 0xffff, /* 4c11 */ 0xffff, /* 4c12 */ 0xffff, /* 4c13 */ 0xffff, /* 4c14 */ 0xffff, /* 4c15 */ 0xffff, /* 4c16 */ 0xffff, /* 4c17 */ 0xffff, /* 4c18 */ 0xffff, /* 4c19 */ 0xffff, /* 4c1a */ 0xffff, /* 4c1b */ 0xffff, /* 4c1c */ 0xffff, /* 4c1d */ 0xffff, /* 4c1e */ 0xffff, /* 4c1f */ 0xffff, /* 4c20 */ 0xffff, /* 4c21 */ 0xffff, /* 4c22 */ 0xffff, /* 4c23 */ 0xffff, /* 4c24 */ 0xffff, /* 4c25 */ 0xffff, /* 4c26 */ 0xffff, /* 4c27 */ 0xffff, /* 4c28 */ 0xffff, /* 4c29 */ 0xffff, /* 4c2a */ 0xffff, /* 4c2b */ 0xffff, /* 4c2c */ 0xffff, /* 4c2d */ 0xffff, /* 4c2e */ 0xffff, /* 4c2f */ 0xffff, /* 4c30 */ 0xffff, /* 4c31 */ 0xffff, /* 4c32 */ 0xffff, /* 4c33 */ 0xffff, /* 4c34 */ 0xffff, /* 4c35 */ 0xffff, /* 4c36 */ 0xffff, /* 4c37 */ 0xffff, /* 4c38 */ 0xffff, /* 4c39 */ 0xffff, /* 4c3a */ 0xffff, /* 4c3b */ 0xffff, /* 4c3c */ 0xffff, /* 4c3d */ 0xffff, /* 4c3e */ 0xffff, /* 4c3f */ 0xffff, /* 4c40 */ 0xffff, /* 4c41 */ 0xffff, /* 4c42 */ 0xffff, /* 4c43 */ 0xffff, /* 4c44 */ 0xffff, /* 4c45 */ 0xffff, /* 4c46 */ 0xffff, /* 4c47 */ 0xffff, /* 4c48 */ 0xffff, /* 4c49 */ 0xffff, /* 4c4a */ 0xffff, /* 4c4b */ 0xffff, /* 4c4c */ 0xffff, /* 4c4d */ 0xffff, /* 4c4e */ 0xffff, /* 4c4f */ 0xffff, /* 4c50 */ 0xffff, /* 4c51 */ 0xffff, /* 4c52 */ 0xffff, /* 4c53 */ 0xffff, /* 4c54 */ 0xffff, /* 4c55 */ 0xffff, /* 4c56 */ 0xffff, /* 4c57 */ 0xffff, /* 4c58 */ 0xffff, /* 4c59 */ 0xffff, /* 4c5a */ 0xffff, /* 4c5b */ 0xffff, /* 4c5c */ 0xffff, /* 4c5d */ 0xffff, /* 4c5e */ 0xffff, /* 4c5f */ 0xffff, /* 4c60 */ 0xffff, /* 4c61 */ 0xffff, /* 4c62 */ 0xffff, /* 4c63 */ 0xffff, /* 4c64 */ 0xffff, /* 4c65 */ 0xffff, /* 4c66 */ 0xffff, /* 4c67 */ 0xffff, /* 4c68 */ 0xffff, /* 4c69 */ 0xffff, /* 4c6a */ 0xffff, /* 4c6b */ 0xffff, /* 4c6c */ 0xffff, /* 4c6d */ 0xffff, /* 4c6e */ 0xffff, /* 4c6f */ 0xffff, /* 4c70 */ 0xffff, /* 4c71 */ 0xffff, /* 4c72 */ 0xffff, /* 4c73 */ 0xffff, /* 4c74 */ 0xffff, /* 4c75 */ 0xffff, /* 4c76 */ 0xffff, /* 4c77 */ 0xffff, /* 4c78 */ 0xffff, /* 4c79 */ 0xffff, /* 4c7a */ 0xffff, /* 4c7b */ 0xffff, /* 4c7c */ 0xffff, /* 4c7d */ 0xffff, /* 4c7e */ 0xffff, /* 4c7f */ 0xffff, /* 4c80 */ 0xffff, /* 4c81 */ 0xffff, /* 4c82 */ 0xffff, /* 4c83 */ 0xffff, /* 4c84 */ 0xffff, /* 4c85 */ 0xffff, /* 4c86 */ 0xffff, /* 4c87 */ 0xffff, /* 4c88 */ 0xffff, /* 4c89 */ 0xffff, /* 4c8a */ 0xffff, /* 4c8b */ 0xffff, /* 4c8c */ 0xffff, /* 4c8d */ 0xffff, /* 4c8e */ 0xffff, /* 4c8f */ 0xffff, /* 4c90 */ 0xffff, /* 4c91 */ 0xffff, /* 4c92 */ 0xffff, /* 4c93 */ 0xffff, /* 4c94 */ 0xffff, /* 4c95 */ 0xffff, /* 4c96 */ 0xffff, /* 4c97 */ 0xffff, /* 4c98 */ 0xffff, /* 4c99 */ 0xffff, /* 4c9a */ 0xffff, /* 4c9b */ 0xffff, /* 4c9c */ 0xffff, /* 4c9d */ 0xffff, /* 4c9e */ 0xffff, /* 4c9f */ 0xffff, /* 4ca0 */ 0xffff, /* 4ca1 */ 0xffff, /* 4ca2 */ 0xffff, /* 4ca3 */ 0xffff, /* 4ca4 */ 0xffff, /* 4ca5 */ 0xffff, /* 4ca6 */ 0xffff, /* 4ca7 */ 0xffff, /* 4ca8 */ 0xffff, /* 4ca9 */ 0xffff, /* 4caa */ 0xffff, /* 4cab */ 0xffff, /* 4cac */ 0xffff, /* 4cad */ 0xffff, /* 4cae */ 0xffff, /* 4caf */ 0xffff, /* 4cb0 */ 0xffff, /* 4cb1 */ 0xffff, /* 4cb2 */ 0xffff, /* 4cb3 */ 0xffff, /* 4cb4 */ 0xffff, /* 4cb5 */ 0xffff, /* 4cb6 */ 0xffff, /* 4cb7 */ 0xffff, /* 4cb8 */ 0xffff, /* 4cb9 */ 0xffff, /* 4cba */ 0xffff, /* 4cbb */ 0xffff, /* 4cbc */ 0xffff, /* 4cbd */ 0xffff, /* 4cbe */ 0xffff, /* 4cbf */ 0xffff, /* 4cc0 */ 0xffff, /* 4cc1 */ 0xffff, /* 4cc2 */ 0xffff, /* 4cc3 */ 0xffff, /* 4cc4 */ 0xffff, /* 4cc5 */ 0xffff, /* 4cc6 */ 0xffff, /* 4cc7 */ 0xffff, /* 4cc8 */ 0xffff, /* 4cc9 */ 0xffff, /* 4cca */ 0xffff, /* 4ccb */ 0xffff, /* 4ccc */ 0xffff, /* 4ccd */ 0xffff, /* 4cce */ 0xffff, /* 4ccf */ 0xffff, /* 4cd0 */ 0xffff, /* 4cd1 */ 0xffff, /* 4cd2 */ 0xffff, /* 4cd3 */ 0xffff, /* 4cd4 */ 0xffff, /* 4cd5 */ 0xffff, /* 4cd6 */ 0xffff, /* 4cd7 */ 0xffff, /* 4cd8 */ 0xffff, /* 4cd9 */ 0xffff, /* 4cda */ 0xffff, /* 4cdb */ 0xffff, /* 4cdc */ 0xffff, /* 4cdd */ 0xffff, /* 4cde */ 0xffff, /* 4cdf */ 0xffff, /* 4ce0 */ 0xffff, /* 4ce1 */ 0xffff, /* 4ce2 */ 0xffff, /* 4ce3 */ 0xffff, /* 4ce4 */ 0xffff, /* 4ce5 */ 0xffff, /* 4ce6 */ 0xffff, /* 4ce7 */ 0xffff, /* 4ce8 */ 0xffff, /* 4ce9 */ 0xffff, /* 4cea */ 0xffff, /* 4ceb */ 0xffff, /* 4cec */ 0xffff, /* 4ced */ 0xffff, /* 4cee */ 0xffff, /* 4cef */ 0xffff, /* 4cf0 */ 0xffff, /* 4cf1 */ 0xffff, /* 4cf2 */ 0xffff, /* 4cf3 */ 0xffff, /* 4cf4 */ 0xffff, /* 4cf5 */ 0xffff, /* 4cf6 */ 0xffff, /* 4cf7 */ 0xffff, /* 4cf8 */ 0xffff, /* 4cf9 */ 0xffff, /* 4cfa */ 0xffff, /* 4cfb */ 0xffff, /* 4cfc */ 0xffff, /* 4cfd */ 0xffff, /* 4cfe */ 0xffff, /* 4cff */ 0xffff, /* 4d00 */ 0xffff, /* 4d01 */ 0xffff, /* 4d02 */ 0xffff, /* 4d03 */ 0xffff, /* 4d04 */ 0xffff, /* 4d05 */ 0xffff, /* 4d06 */ 0xffff, /* 4d07 */ 0xffff, /* 4d08 */ 0xffff, /* 4d09 */ 0xffff, /* 4d0a */ 0xffff, /* 4d0b */ 0xffff, /* 4d0c */ 0xffff, /* 4d0d */ 0xffff, /* 4d0e */ 0xffff, /* 4d0f */ 0xffff, /* 4d10 */ 0xffff, /* 4d11 */ 0xffff, /* 4d12 */ 0xffff, /* 4d13 */ 0xffff, /* 4d14 */ 0xffff, /* 4d15 */ 0xffff, /* 4d16 */ 0xffff, /* 4d17 */ 0xffff, /* 4d18 */ 0xffff, /* 4d19 */ 0xffff, /* 4d1a */ 0xffff, /* 4d1b */ 0xffff, /* 4d1c */ 0xffff, /* 4d1d */ 0xffff, /* 4d1e */ 0xffff, /* 4d1f */ 0xffff, /* 4d20 */ 0xffff, /* 4d21 */ 0xffff, /* 4d22 */ 0xffff, /* 4d23 */ 0xffff, /* 4d24 */ 0xffff, /* 4d25 */ 0xffff, /* 4d26 */ 0xffff, /* 4d27 */ 0xffff, /* 4d28 */ 0xffff, /* 4d29 */ 0xffff, /* 4d2a */ 0xffff, /* 4d2b */ 0xffff, /* 4d2c */ 0xffff, /* 4d2d */ 0xffff, /* 4d2e */ 0xffff, /* 4d2f */ 0xffff, /* 4d30 */ 0xffff, /* 4d31 */ 0xffff, /* 4d32 */ 0xffff, /* 4d33 */ 0xffff, /* 4d34 */ 0xffff, /* 4d35 */ 0xffff, /* 4d36 */ 0xffff, /* 4d37 */ 0xffff, /* 4d38 */ 0xffff, /* 4d39 */ 0xffff, /* 4d3a */ 0xffff, /* 4d3b */ 0xffff, /* 4d3c */ 0xffff, /* 4d3d */ 0xffff, /* 4d3e */ 0xffff, /* 4d3f */ 0xffff, /* 4d40 */ 0xffff, /* 4d41 */ 0xffff, /* 4d42 */ 0xffff, /* 4d43 */ 0xffff, /* 4d44 */ 0xffff, /* 4d45 */ 0xffff, /* 4d46 */ 0xffff, /* 4d47 */ 0xffff, /* 4d48 */ 0xffff, /* 4d49 */ 0xffff, /* 4d4a */ 0xffff, /* 4d4b */ 0xffff, /* 4d4c */ 0xffff, /* 4d4d */ 0xffff, /* 4d4e */ 0xffff, /* 4d4f */ 0xffff, /* 4d50 */ 0xffff, /* 4d51 */ 0xffff, /* 4d52 */ 0xffff, /* 4d53 */ 0xffff, /* 4d54 */ 0xffff, /* 4d55 */ 0xffff, /* 4d56 */ 0xffff, /* 4d57 */ 0xffff, /* 4d58 */ 0xffff, /* 4d59 */ 0xffff, /* 4d5a */ 0xffff, /* 4d5b */ 0xffff, /* 4d5c */ 0xffff, /* 4d5d */ 0xffff, /* 4d5e */ 0xffff, /* 4d5f */ 0xffff, /* 4d60 */ 0xffff, /* 4d61 */ 0xffff, /* 4d62 */ 0xffff, /* 4d63 */ 0xffff, /* 4d64 */ 0xffff, /* 4d65 */ 0xffff, /* 4d66 */ 0xffff, /* 4d67 */ 0xffff, /* 4d68 */ 0xffff, /* 4d69 */ 0xffff, /* 4d6a */ 0xffff, /* 4d6b */ 0xffff, /* 4d6c */ 0xffff, /* 4d6d */ 0xffff, /* 4d6e */ 0xffff, /* 4d6f */ 0xffff, /* 4d70 */ 0xffff, /* 4d71 */ 0xffff, /* 4d72 */ 0xffff, /* 4d73 */ 0xffff, /* 4d74 */ 0xffff, /* 4d75 */ 0xffff, /* 4d76 */ 0xffff, /* 4d77 */ 0xffff, /* 4d78 */ 0xffff, /* 4d79 */ 0xffff, /* 4d7a */ 0xffff, /* 4d7b */ 0xffff, /* 4d7c */ 0xffff, /* 4d7d */ 0xffff, /* 4d7e */ 0xffff, /* 4d7f */ 0xffff, /* 4d80 */ 0xffff, /* 4d81 */ 0xffff, /* 4d82 */ 0xffff, /* 4d83 */ 0xffff, /* 4d84 */ 0xffff, /* 4d85 */ 0xffff, /* 4d86 */ 0xffff, /* 4d87 */ 0xffff, /* 4d88 */ 0xffff, /* 4d89 */ 0xffff, /* 4d8a */ 0xffff, /* 4d8b */ 0xffff, /* 4d8c */ 0xffff, /* 4d8d */ 0xffff, /* 4d8e */ 0xffff, /* 4d8f */ 0xffff, /* 4d90 */ 0xffff, /* 4d91 */ 0xffff, /* 4d92 */ 0xffff, /* 4d93 */ 0xffff, /* 4d94 */ 0xffff, /* 4d95 */ 0xffff, /* 4d96 */ 0xffff, /* 4d97 */ 0xffff, /* 4d98 */ 0xffff, /* 4d99 */ 0xffff, /* 4d9a */ 0xffff, /* 4d9b */ 0xffff, /* 4d9c */ 0xffff, /* 4d9d */ 0xffff, /* 4d9e */ 0xffff, /* 4d9f */ 0xffff, /* 4da0 */ 0xffff, /* 4da1 */ 0xffff, /* 4da2 */ 0xffff, /* 4da3 */ 0xffff, /* 4da4 */ 0xffff, /* 4da5 */ 0xffff, /* 4da6 */ 0xffff, /* 4da7 */ 0xffff, /* 4da8 */ 0xffff, /* 4da9 */ 0xffff, /* 4daa */ 0xffff, /* 4dab */ 0xffff, /* 4dac */ 0xffff, /* 4dad */ 0xffff, /* 4dae */ 0xffff, /* 4daf */ 0xffff, /* 4db0 */ 0xffff, /* 4db1 */ 0xffff, /* 4db2 */ 0xffff, /* 4db3 */ 0xffff, /* 4db4 */ 0xffff, /* 4db5 */ 0xffff, /* 4db6 */ 0xffff, /* 4db7 */ 0xffff, /* 4db8 */ 0xffff, /* 4db9 */ 0xffff, /* 4dba */ 0xffff, /* 4dbb */ 0xffff, /* 4dbc */ 0xffff, /* 4dbd */ 0xffff, /* 4dbe */ 0xffff, /* 4dbf */ 0xffff, /* 4dc0 */ 0xffff, /* 4dc1 */ 0xffff, /* 4dc2 */ 0xffff, /* 4dc3 */ 0xffff, /* 4dc4 */ 0xffff, /* 4dc5 */ 0xffff, /* 4dc6 */ 0xffff, /* 4dc7 */ 0xffff, /* 4dc8 */ 0xffff, /* 4dc9 */ 0xffff, /* 4dca */ 0xffff, /* 4dcb */ 0xffff, /* 4dcc */ 0xffff, /* 4dcd */ 0xffff, /* 4dce */ 0xffff, /* 4dcf */ 0xffff, /* 4dd0 */ 0xffff, /* 4dd1 */ 0xffff, /* 4dd2 */ 0xffff, /* 4dd3 */ 0xffff, /* 4dd4 */ 0xffff, /* 4dd5 */ 0xffff, /* 4dd6 */ 0xffff, /* 4dd7 */ 0xffff, /* 4dd8 */ 0xffff, /* 4dd9 */ 0xffff, /* 4dda */ 0xffff, /* 4ddb */ 0xffff, /* 4ddc */ 0xffff, /* 4ddd */ 0xffff, /* 4dde */ 0xffff, /* 4ddf */ 0xffff, /* 4de0 */ 0xffff, /* 4de1 */ 0xffff, /* 4de2 */ 0xffff, /* 4de3 */ 0xffff, /* 4de4 */ 0xffff, /* 4de5 */ 0xffff, /* 4de6 */ 0xffff, /* 4de7 */ 0xffff, /* 4de8 */ 0xffff, /* 4de9 */ 0xffff, /* 4dea */ 0xffff, /* 4deb */ 0xffff, /* 4dec */ 0xffff, /* 4ded */ 0xffff, /* 4dee */ 0xffff, /* 4def */ 0xffff, /* 4df0 */ 0xffff, /* 4df1 */ 0xffff, /* 4df2 */ 0xffff, /* 4df3 */ 0xffff, /* 4df4 */ 0xffff, /* 4df5 */ 0xffff, /* 4df6 */ 0xffff, /* 4df7 */ 0xffff, /* 4df8 */ 0xffff, /* 4df9 */ 0xffff, /* 4dfa */ 0xffff, /* 4dfb */ 0xffff, /* 4dfc */ 0xffff, /* 4dfd */ 0xffff, /* 4dfe */ 0xffff, /* 4dff */ 0xffff, /* 4e00 */ 0xffff, /* 4e01 */ 0xffff, /* 4e02 */ 0xffff, /* 4e03 */ 0xffff, /* 4e04 */ 0xffff, /* 4e05 */ 0xffff, /* 4e06 */ 0xffff, /* 4e07 */ 0xffff, /* 4e08 */ 0xffff, /* 4e09 */ 0xffff, /* 4e0a */ 0xffff, /* 4e0b */ 0xffff, /* 4e0c */ 0xffff, /* 4e0d */ 0xffff, /* 4e0e */ 0xffff, /* 4e0f */ 0xffff, /* 4e10 */ 0xffff, /* 4e11 */ 0xffff, /* 4e12 */ 0xffff, /* 4e13 */ 0xffff, /* 4e14 */ 0xffff, /* 4e15 */ 0xffff, /* 4e16 */ 0xffff, /* 4e17 */ 0xffff, /* 4e18 */ 0xffff, /* 4e19 */ 0xffff, /* 4e1a */ 0xffff, /* 4e1b */ 0xffff, /* 4e1c */ 0xffff, /* 4e1d */ 0xffff, /* 4e1e */ 0xffff, /* 4e1f */ 0xffff, /* 4e20 */ 0xffff, /* 4e21 */ 0xffff, /* 4e22 */ 0xffff, /* 4e23 */ 0xffff, /* 4e24 */ 0xffff, /* 4e25 */ 0xffff, /* 4e26 */ 0xffff, /* 4e27 */ 0xffff, /* 4e28 */ 0xffff, /* 4e29 */ 0xffff, /* 4e2a */ 0xffff, /* 4e2b */ 0xffff, /* 4e2c */ 0xffff, /* 4e2d */ 0xffff, /* 4e2e */ 0xffff, /* 4e2f */ 0xffff, /* 4e30 */ 0xffff, /* 4e31 */ 0xffff, /* 4e32 */ 0xffff, /* 4e33 */ 0xffff, /* 4e34 */ 0xffff, /* 4e35 */ 0xffff, /* 4e36 */ 0xffff, /* 4e37 */ 0xffff, /* 4e38 */ 0xffff, /* 4e39 */ 0xffff, /* 4e3a */ 0xffff, /* 4e3b */ 0xffff, /* 4e3c */ 0xffff, /* 4e3d */ 0xffff, /* 4e3e */ 0xffff, /* 4e3f */ 0xffff, /* 4e40 */ 0xffff, /* 4e41 */ 0xffff, /* 4e42 */ 0xffff, /* 4e43 */ 0xffff, /* 4e44 */ 0xffff, /* 4e45 */ 0xffff, /* 4e46 */ 0xffff, /* 4e47 */ 0xffff, /* 4e48 */ 0xffff, /* 4e49 */ 0xffff, /* 4e4a */ 0xffff, /* 4e4b */ 0xffff, /* 4e4c */ 0xffff, /* 4e4d */ 0xffff, /* 4e4e */ 0xffff, /* 4e4f */ 0xffff, /* 4e50 */ 0xffff, /* 4e51 */ 0xffff, /* 4e52 */ 0xffff, /* 4e53 */ 0xffff, /* 4e54 */ 0xffff, /* 4e55 */ 0xffff, /* 4e56 */ 0xffff, /* 4e57 */ 0xffff, /* 4e58 */ 0xffff, /* 4e59 */ 0xffff, /* 4e5a */ 0xffff, /* 4e5b */ 0xffff, /* 4e5c */ 0xffff, /* 4e5d */ 0xffff, /* 4e5e */ 0xffff, /* 4e5f */ 0xffff, /* 4e60 */ 0xffff, /* 4e61 */ 0xffff, /* 4e62 */ 0xffff, /* 4e63 */ 0xffff, /* 4e64 */ 0xffff, /* 4e65 */ 0xffff, /* 4e66 */ 0xffff, /* 4e67 */ 0xffff, /* 4e68 */ 0xffff, /* 4e69 */ 0xffff, /* 4e6a */ 0xffff, /* 4e6b */ 0xffff, /* 4e6c */ 0xffff, /* 4e6d */ 0xffff, /* 4e6e */ 0xffff, /* 4e6f */ 0xffff, /* 4e70 */ 0xffff, /* 4e71 */ 0xffff, /* 4e72 */ 0xffff, /* 4e73 */ 0xffff, /* 4e74 */ 0xffff, /* 4e75 */ 0xffff, /* 4e76 */ 0xffff, /* 4e77 */ 0xffff, /* 4e78 */ 0xffff, /* 4e79 */ 0xffff, /* 4e7a */ 0xffff, /* 4e7b */ 0xffff, /* 4e7c */ 0xffff, /* 4e7d */ 0xffff, /* 4e7e */ 0xffff, /* 4e7f */ 0xffff, /* 4e80 */ 0xffff, /* 4e81 */ 0xffff, /* 4e82 */ 0xffff, /* 4e83 */ 0xffff, /* 4e84 */ 0xffff, /* 4e85 */ 0xffff, /* 4e86 */ 0xffff, /* 4e87 */ 0xffff, /* 4e88 */ 0xffff, /* 4e89 */ 0xffff, /* 4e8a */ 0xffff, /* 4e8b */ 0xffff, /* 4e8c */ 0xffff, /* 4e8d */ 0xffff, /* 4e8e */ 0xffff, /* 4e8f */ 0xffff, /* 4e90 */ 0xffff, /* 4e91 */ 0xffff, /* 4e92 */ 0xffff, /* 4e93 */ 0xffff, /* 4e94 */ 0xffff, /* 4e95 */ 0xffff, /* 4e96 */ 0xffff, /* 4e97 */ 0xffff, /* 4e98 */ 0xffff, /* 4e99 */ 0xffff, /* 4e9a */ 0xffff, /* 4e9b */ 0xffff, /* 4e9c */ 0xffff, /* 4e9d */ 0xffff, /* 4e9e */ 0xffff, /* 4e9f */ 0xffff, /* 4ea0 */ 0xffff, /* 4ea1 */ 0xffff, /* 4ea2 */ 0xffff, /* 4ea3 */ 0xffff, /* 4ea4 */ 0xffff, /* 4ea5 */ 0xffff, /* 4ea6 */ 0xffff, /* 4ea7 */ 0xffff, /* 4ea8 */ 0xffff, /* 4ea9 */ 0xffff, /* 4eaa */ 0xffff, /* 4eab */ 0xffff, /* 4eac */ 0xffff, /* 4ead */ 0xffff, /* 4eae */ 0xffff, /* 4eaf */ 0xffff, /* 4eb0 */ 0xffff, /* 4eb1 */ 0xffff, /* 4eb2 */ 0xffff, /* 4eb3 */ 0xffff, /* 4eb4 */ 0xffff, /* 4eb5 */ 0xffff, /* 4eb6 */ 0xffff, /* 4eb7 */ 0xffff, /* 4eb8 */ 0xffff, /* 4eb9 */ 0xffff, /* 4eba */ 0xffff, /* 4ebb */ 0xffff, /* 4ebc */ 0xffff, /* 4ebd */ 0xffff, /* 4ebe */ 0xffff, /* 4ebf */ 0xffff, /* 4ec0 */ 0xffff, /* 4ec1 */ 0xffff, /* 4ec2 */ 0xffff, /* 4ec3 */ 0xffff, /* 4ec4 */ 0xffff, /* 4ec5 */ 0xffff, /* 4ec6 */ 0xffff, /* 4ec7 */ 0xffff, /* 4ec8 */ 0xffff, /* 4ec9 */ 0xffff, /* 4eca */ 0xffff, /* 4ecb */ 0xffff, /* 4ecc */ 0xffff, /* 4ecd */ 0xffff, /* 4ece */ 0xffff, /* 4ecf */ 0xffff, /* 4ed0 */ 0xffff, /* 4ed1 */ 0xffff, /* 4ed2 */ 0xffff, /* 4ed3 */ 0xffff, /* 4ed4 */ 0xffff, /* 4ed5 */ 0xffff, /* 4ed6 */ 0xffff, /* 4ed7 */ 0xffff, /* 4ed8 */ 0xffff, /* 4ed9 */ 0xffff, /* 4eda */ 0xffff, /* 4edb */ 0xffff, /* 4edc */ 0xffff, /* 4edd */ 0xffff, /* 4ede */ 0xffff, /* 4edf */ 0xffff, /* 4ee0 */ 0xffff, /* 4ee1 */ 0xffff, /* 4ee2 */ 0xffff, /* 4ee3 */ 0xffff, /* 4ee4 */ 0xffff, /* 4ee5 */ 0xffff, /* 4ee6 */ 0xffff, /* 4ee7 */ 0xffff, /* 4ee8 */ 0xffff, /* 4ee9 */ 0xffff, /* 4eea */ 0xffff, /* 4eeb */ 0xffff, /* 4eec */ 0xffff, /* 4eed */ 0xffff, /* 4eee */ 0xffff, /* 4eef */ 0xffff, /* 4ef0 */ 0xffff, /* 4ef1 */ 0xffff, /* 4ef2 */ 0xffff, /* 4ef3 */ 0xffff, /* 4ef4 */ 0xffff, /* 4ef5 */ 0xffff, /* 4ef6 */ 0xffff, /* 4ef7 */ 0xffff, /* 4ef8 */ 0xffff, /* 4ef9 */ 0xffff, /* 4efa */ 0xffff, /* 4efb */ 0xffff, /* 4efc */ 0xffff, /* 4efd */ 0xffff, /* 4efe */ 0xffff, /* 4eff */ 0xffff, /* 4f00 */ 0xffff, /* 4f01 */ 0xffff, /* 4f02 */ 0xffff, /* 4f03 */ 0xffff, /* 4f04 */ 0xffff, /* 4f05 */ 0xffff, /* 4f06 */ 0xffff, /* 4f07 */ 0xffff, /* 4f08 */ 0xffff, /* 4f09 */ 0xffff, /* 4f0a */ 0xffff, /* 4f0b */ 0xffff, /* 4f0c */ 0xffff, /* 4f0d */ 0xffff, /* 4f0e */ 0xffff, /* 4f0f */ 0xffff, /* 4f10 */ 0xffff, /* 4f11 */ 0xffff, /* 4f12 */ 0xffff, /* 4f13 */ 0xffff, /* 4f14 */ 0xffff, /* 4f15 */ 0xffff, /* 4f16 */ 0xffff, /* 4f17 */ 0xffff, /* 4f18 */ 0xffff, /* 4f19 */ 0xffff, /* 4f1a */ 0xffff, /* 4f1b */ 0xffff, /* 4f1c */ 0xffff, /* 4f1d */ 0xffff, /* 4f1e */ 0xffff, /* 4f1f */ 0xffff, /* 4f20 */ 0xffff, /* 4f21 */ 0xffff, /* 4f22 */ 0xffff, /* 4f23 */ 0xffff, /* 4f24 */ 0xffff, /* 4f25 */ 0xffff, /* 4f26 */ 0xffff, /* 4f27 */ 0xffff, /* 4f28 */ 0xffff, /* 4f29 */ 0xffff, /* 4f2a */ 0xffff, /* 4f2b */ 0xffff, /* 4f2c */ 0xffff, /* 4f2d */ 0xffff, /* 4f2e */ 0xffff, /* 4f2f */ 0xffff, /* 4f30 */ 0xffff, /* 4f31 */ 0xffff, /* 4f32 */ 0xffff, /* 4f33 */ 0xffff, /* 4f34 */ 0xffff, /* 4f35 */ 0xffff, /* 4f36 */ 0xffff, /* 4f37 */ 0xffff, /* 4f38 */ 0xffff, /* 4f39 */ 0xffff, /* 4f3a */ 0xffff, /* 4f3b */ 0xffff, /* 4f3c */ 0xffff, /* 4f3d */ 0xffff, /* 4f3e */ 0xffff, /* 4f3f */ 0xffff, /* 4f40 */ 0xffff, /* 4f41 */ 0xffff, /* 4f42 */ 0xffff, /* 4f43 */ 0xffff, /* 4f44 */ 0xffff, /* 4f45 */ 0xffff, /* 4f46 */ 0xffff, /* 4f47 */ 0xffff, /* 4f48 */ 0xffff, /* 4f49 */ 0xffff, /* 4f4a */ 0xffff, /* 4f4b */ 0xffff, /* 4f4c */ 0xffff, /* 4f4d */ 0xffff, /* 4f4e */ 0xffff, /* 4f4f */ 0xffff, /* 4f50 */ 0xffff, /* 4f51 */ 0xffff, /* 4f52 */ 0xffff, /* 4f53 */ 0xffff, /* 4f54 */ 0xffff, /* 4f55 */ 0xffff, /* 4f56 */ 0xffff, /* 4f57 */ 0xffff, /* 4f58 */ 0xffff, /* 4f59 */ 0xffff, /* 4f5a */ 0xffff, /* 4f5b */ 0xffff, /* 4f5c */ 0xffff, /* 4f5d */ 0xffff, /* 4f5e */ 0xffff, /* 4f5f */ 0xffff, /* 4f60 */ 0xffff, /* 4f61 */ 0xffff, /* 4f62 */ 0xffff, /* 4f63 */ 0xffff, /* 4f64 */ 0xffff, /* 4f65 */ 0xffff, /* 4f66 */ 0xffff, /* 4f67 */ 0xffff, /* 4f68 */ 0xffff, /* 4f69 */ 0xffff, /* 4f6a */ 0xffff, /* 4f6b */ 0xffff, /* 4f6c */ 0xffff, /* 4f6d */ 0xffff, /* 4f6e */ 0xffff, /* 4f6f */ 0xffff, /* 4f70 */ 0xffff, /* 4f71 */ 0xffff, /* 4f72 */ 0xffff, /* 4f73 */ 0xffff, /* 4f74 */ 0xffff, /* 4f75 */ 0xffff, /* 4f76 */ 0xffff, /* 4f77 */ 0xffff, /* 4f78 */ 0xffff, /* 4f79 */ 0xffff, /* 4f7a */ 0xffff, /* 4f7b */ 0xffff, /* 4f7c */ 0xffff, /* 4f7d */ 0xffff, /* 4f7e */ 0xffff, /* 4f7f */ 0xffff, /* 4f80 */ 0xffff, /* 4f81 */ 0xffff, /* 4f82 */ 0xffff, /* 4f83 */ 0xffff, /* 4f84 */ 0xffff, /* 4f85 */ 0xffff, /* 4f86 */ 0xffff, /* 4f87 */ 0xffff, /* 4f88 */ 0xffff, /* 4f89 */ 0xffff, /* 4f8a */ 0xffff, /* 4f8b */ 0xffff, /* 4f8c */ 0xffff, /* 4f8d */ 0xffff, /* 4f8e */ 0xffff, /* 4f8f */ 0xffff, /* 4f90 */ 0xffff, /* 4f91 */ 0xffff, /* 4f92 */ 0xffff, /* 4f93 */ 0xffff, /* 4f94 */ 0xffff, /* 4f95 */ 0xffff, /* 4f96 */ 0xffff, /* 4f97 */ 0xffff, /* 4f98 */ 0xffff, /* 4f99 */ 0xffff, /* 4f9a */ 0xffff, /* 4f9b */ 0xffff, /* 4f9c */ 0xffff, /* 4f9d */ 0xffff, /* 4f9e */ 0xffff, /* 4f9f */ 0xffff, /* 4fa0 */ 0xffff, /* 4fa1 */ 0xffff, /* 4fa2 */ 0xffff, /* 4fa3 */ 0xffff, /* 4fa4 */ 0xffff, /* 4fa5 */ 0xffff, /* 4fa6 */ 0xffff, /* 4fa7 */ 0xffff, /* 4fa8 */ 0xffff, /* 4fa9 */ 0xffff, /* 4faa */ 0xffff, /* 4fab */ 0xffff, /* 4fac */ 0xffff, /* 4fad */ 0xffff, /* 4fae */ 0xffff, /* 4faf */ 0xffff, /* 4fb0 */ 0xffff, /* 4fb1 */ 0xffff, /* 4fb2 */ 0xffff, /* 4fb3 */ 0xffff, /* 4fb4 */ 0xffff, /* 4fb5 */ 0xffff, /* 4fb6 */ 0xffff, /* 4fb7 */ 0xffff, /* 4fb8 */ 0xffff, /* 4fb9 */ 0xffff, /* 4fba */ 0xffff, /* 4fbb */ 0xffff, /* 4fbc */ 0xffff, /* 4fbd */ 0xffff, /* 4fbe */ 0xffff, /* 4fbf */ 0xffff, /* 4fc0 */ 0xffff, /* 4fc1 */ 0xffff, /* 4fc2 */ 0xffff, /* 4fc3 */ 0xffff, /* 4fc4 */ 0xffff, /* 4fc5 */ 0xffff, /* 4fc6 */ 0xffff, /* 4fc7 */ 0xffff, /* 4fc8 */ 0xffff, /* 4fc9 */ 0xffff, /* 4fca */ 0xffff, /* 4fcb */ 0xffff, /* 4fcc */ 0xffff, /* 4fcd */ 0xffff, /* 4fce */ 0xffff, /* 4fcf */ 0xffff, /* 4fd0 */ 0xffff, /* 4fd1 */ 0xffff, /* 4fd2 */ 0xffff, /* 4fd3 */ 0xffff, /* 4fd4 */ 0xffff, /* 4fd5 */ 0xffff, /* 4fd6 */ 0xffff, /* 4fd7 */ 0xffff, /* 4fd8 */ 0xffff, /* 4fd9 */ 0xffff, /* 4fda */ 0xffff, /* 4fdb */ 0xffff, /* 4fdc */ 0xffff, /* 4fdd */ 0xffff, /* 4fde */ 0xffff, /* 4fdf */ 0xffff, /* 4fe0 */ 0xffff, /* 4fe1 */ 0xffff, /* 4fe2 */ 0xffff, /* 4fe3 */ 0xffff, /* 4fe4 */ 0xffff, /* 4fe5 */ 0xffff, /* 4fe6 */ 0xffff, /* 4fe7 */ 0xffff, /* 4fe8 */ 0xffff, /* 4fe9 */ 0xffff, /* 4fea */ 0xffff, /* 4feb */ 0xffff, /* 4fec */ 0xffff, /* 4fed */ 0xffff, /* 4fee */ 0xffff, /* 4fef */ 0xffff, /* 4ff0 */ 0xffff, /* 4ff1 */ 0xffff, /* 4ff2 */ 0xffff, /* 4ff3 */ 0xffff, /* 4ff4 */ 0xffff, /* 4ff5 */ 0xffff, /* 4ff6 */ 0xffff, /* 4ff7 */ 0xffff, /* 4ff8 */ 0xffff, /* 4ff9 */ 0xffff, /* 4ffa */ 0xffff, /* 4ffb */ 0xffff, /* 4ffc */ 0xffff, /* 4ffd */ 0xffff, /* 4ffe */ 0xffff, /* 4fff */ 0xffff, /* 5000 */ 0xffff, /* 5001 */ 0xffff, /* 5002 */ 0xffff, /* 5003 */ 0xffff, /* 5004 */ 0xffff, /* 5005 */ 0xffff, /* 5006 */ 0xffff, /* 5007 */ 0xffff, /* 5008 */ 0xffff, /* 5009 */ 0xffff, /* 500a */ 0xffff, /* 500b */ 0xffff, /* 500c */ 0xffff, /* 500d */ 0xffff, /* 500e */ 0xffff, /* 500f */ 0xffff, /* 5010 */ 0xffff, /* 5011 */ 0xffff, /* 5012 */ 0xffff, /* 5013 */ 0xffff, /* 5014 */ 0xffff, /* 5015 */ 0xffff, /* 5016 */ 0xffff, /* 5017 */ 0xffff, /* 5018 */ 0xffff, /* 5019 */ 0xffff, /* 501a */ 0xffff, /* 501b */ 0xffff, /* 501c */ 0xffff, /* 501d */ 0xffff, /* 501e */ 0xffff, /* 501f */ 0xffff, /* 5020 */ 0xffff, /* 5021 */ 0xffff, /* 5022 */ 0xffff, /* 5023 */ 0xffff, /* 5024 */ 0xffff, /* 5025 */ 0xffff, /* 5026 */ 0xffff, /* 5027 */ 0xffff, /* 5028 */ 0xffff, /* 5029 */ 0xffff, /* 502a */ 0xffff, /* 502b */ 0xffff, /* 502c */ 0xffff, /* 502d */ 0xffff, /* 502e */ 0xffff, /* 502f */ 0xffff, /* 5030 */ 0xffff, /* 5031 */ 0xffff, /* 5032 */ 0xffff, /* 5033 */ 0xffff, /* 5034 */ 0xffff, /* 5035 */ 0xffff, /* 5036 */ 0xffff, /* 5037 */ 0xffff, /* 5038 */ 0xffff, /* 5039 */ 0xffff, /* 503a */ 0xffff, /* 503b */ 0xffff, /* 503c */ 0xffff, /* 503d */ 0xffff, /* 503e */ 0xffff, /* 503f */ 0xffff, /* 5040 */ 0xffff, /* 5041 */ 0xffff, /* 5042 */ 0xffff, /* 5043 */ 0xffff, /* 5044 */ 0xffff, /* 5045 */ 0xffff, /* 5046 */ 0xffff, /* 5047 */ 0xffff, /* 5048 */ 0xffff, /* 5049 */ 0xffff, /* 504a */ 0xffff, /* 504b */ 0xffff, /* 504c */ 0xffff, /* 504d */ 0xffff, /* 504e */ 0xffff, /* 504f */ 0xffff, /* 5050 */ 0xffff, /* 5051 */ 0xffff, /* 5052 */ 0xffff, /* 5053 */ 0xffff, /* 5054 */ 0xffff, /* 5055 */ 0xffff, /* 5056 */ 0xffff, /* 5057 */ 0xffff, /* 5058 */ 0xffff, /* 5059 */ 0xffff, /* 505a */ 0xffff, /* 505b */ 0xffff, /* 505c */ 0xffff, /* 505d */ 0xffff, /* 505e */ 0xffff, /* 505f */ 0xffff, /* 5060 */ 0xffff, /* 5061 */ 0xffff, /* 5062 */ 0xffff, /* 5063 */ 0xffff, /* 5064 */ 0xffff, /* 5065 */ 0xffff, /* 5066 */ 0xffff, /* 5067 */ 0xffff, /* 5068 */ 0xffff, /* 5069 */ 0xffff, /* 506a */ 0xffff, /* 506b */ 0xffff, /* 506c */ 0xffff, /* 506d */ 0xffff, /* 506e */ 0xffff, /* 506f */ 0xffff, /* 5070 */ 0xffff, /* 5071 */ 0xffff, /* 5072 */ 0xffff, /* 5073 */ 0xffff, /* 5074 */ 0xffff, /* 5075 */ 0xffff, /* 5076 */ 0xffff, /* 5077 */ 0xffff, /* 5078 */ 0xffff, /* 5079 */ 0xffff, /* 507a */ 0xffff, /* 507b */ 0xffff, /* 507c */ 0xffff, /* 507d */ 0xffff, /* 507e */ 0xffff, /* 507f */ 0xffff, /* 5080 */ 0xffff, /* 5081 */ 0xffff, /* 5082 */ 0xffff, /* 5083 */ 0xffff, /* 5084 */ 0xffff, /* 5085 */ 0xffff, /* 5086 */ 0xffff, /* 5087 */ 0xffff, /* 5088 */ 0xffff, /* 5089 */ 0xffff, /* 508a */ 0xffff, /* 508b */ 0xffff, /* 508c */ 0xffff, /* 508d */ 0xffff, /* 508e */ 0xffff, /* 508f */ 0xffff, /* 5090 */ 0xffff, /* 5091 */ 0xffff, /* 5092 */ 0xffff, /* 5093 */ 0xffff, /* 5094 */ 0xffff, /* 5095 */ 0xffff, /* 5096 */ 0xffff, /* 5097 */ 0xffff, /* 5098 */ 0xffff, /* 5099 */ 0xffff, /* 509a */ 0xffff, /* 509b */ 0xffff, /* 509c */ 0xffff, /* 509d */ 0xffff, /* 509e */ 0xffff, /* 509f */ 0xffff, /* 50a0 */ 0xffff, /* 50a1 */ 0xffff, /* 50a2 */ 0xffff, /* 50a3 */ 0xffff, /* 50a4 */ 0xffff, /* 50a5 */ 0xffff, /* 50a6 */ 0xffff, /* 50a7 */ 0xffff, /* 50a8 */ 0xffff, /* 50a9 */ 0xffff, /* 50aa */ 0xffff, /* 50ab */ 0xffff, /* 50ac */ 0xffff, /* 50ad */ 0xffff, /* 50ae */ 0xffff, /* 50af */ 0xffff, /* 50b0 */ 0xffff, /* 50b1 */ 0xffff, /* 50b2 */ 0xffff, /* 50b3 */ 0xffff, /* 50b4 */ 0xffff, /* 50b5 */ 0xffff, /* 50b6 */ 0xffff, /* 50b7 */ 0xffff, /* 50b8 */ 0xffff, /* 50b9 */ 0xffff, /* 50ba */ 0xffff, /* 50bb */ 0xffff, /* 50bc */ 0xffff, /* 50bd */ 0xffff, /* 50be */ 0xffff, /* 50bf */ 0xffff, /* 50c0 */ 0xffff, /* 50c1 */ 0xffff, /* 50c2 */ 0xffff, /* 50c3 */ 0xffff, /* 50c4 */ 0xffff, /* 50c5 */ 0xffff, /* 50c6 */ 0xffff, /* 50c7 */ 0xffff, /* 50c8 */ 0xffff, /* 50c9 */ 0xffff, /* 50ca */ 0xffff, /* 50cb */ 0xffff, /* 50cc */ 0xffff, /* 50cd */ 0xffff, /* 50ce */ 0xffff, /* 50cf */ 0xffff, /* 50d0 */ 0xffff, /* 50d1 */ 0xffff, /* 50d2 */ 0xffff, /* 50d3 */ 0xffff, /* 50d4 */ 0xffff, /* 50d5 */ 0xffff, /* 50d6 */ 0xffff, /* 50d7 */ 0xffff, /* 50d8 */ 0xffff, /* 50d9 */ 0xffff, /* 50da */ 0xffff, /* 50db */ 0xffff, /* 50dc */ 0xffff, /* 50dd */ 0xffff, /* 50de */ 0xffff, /* 50df */ 0xffff, /* 50e0 */ 0xffff, /* 50e1 */ 0xffff, /* 50e2 */ 0xffff, /* 50e3 */ 0xffff, /* 50e4 */ 0xffff, /* 50e5 */ 0xffff, /* 50e6 */ 0xffff, /* 50e7 */ 0xffff, /* 50e8 */ 0xffff, /* 50e9 */ 0xffff, /* 50ea */ 0xffff, /* 50eb */ 0xffff, /* 50ec */ 0xffff, /* 50ed */ 0xffff, /* 50ee */ 0xffff, /* 50ef */ 0xffff, /* 50f0 */ 0xffff, /* 50f1 */ 0xffff, /* 50f2 */ 0xffff, /* 50f3 */ 0xffff, /* 50f4 */ 0xffff, /* 50f5 */ 0xffff, /* 50f6 */ 0xffff, /* 50f7 */ 0xffff, /* 50f8 */ 0xffff, /* 50f9 */ 0xffff, /* 50fa */ 0xffff, /* 50fb */ 0xffff, /* 50fc */ 0xffff, /* 50fd */ 0xffff, /* 50fe */ 0xffff, /* 50ff */ 0xffff, /* 5100 */ 0xffff, /* 5101 */ 0xffff, /* 5102 */ 0xffff, /* 5103 */ 0xffff, /* 5104 */ 0xffff, /* 5105 */ 0xffff, /* 5106 */ 0xffff, /* 5107 */ 0xffff, /* 5108 */ 0xffff, /* 5109 */ 0xffff, /* 510a */ 0xffff, /* 510b */ 0xffff, /* 510c */ 0xffff, /* 510d */ 0xffff, /* 510e */ 0xffff, /* 510f */ 0xffff, /* 5110 */ 0xffff, /* 5111 */ 0xffff, /* 5112 */ 0xffff, /* 5113 */ 0xffff, /* 5114 */ 0xffff, /* 5115 */ 0xffff, /* 5116 */ 0xffff, /* 5117 */ 0xffff, /* 5118 */ 0xffff, /* 5119 */ 0xffff, /* 511a */ 0xffff, /* 511b */ 0xffff, /* 511c */ 0xffff, /* 511d */ 0xffff, /* 511e */ 0xffff, /* 511f */ 0xffff, /* 5120 */ 0xffff, /* 5121 */ 0xffff, /* 5122 */ 0xffff, /* 5123 */ 0xffff, /* 5124 */ 0xffff, /* 5125 */ 0xffff, /* 5126 */ 0xffff, /* 5127 */ 0xffff, /* 5128 */ 0xffff, /* 5129 */ 0xffff, /* 512a */ 0xffff, /* 512b */ 0xffff, /* 512c */ 0xffff, /* 512d */ 0xffff, /* 512e */ 0xffff, /* 512f */ 0xffff, /* 5130 */ 0xffff, /* 5131 */ 0xffff, /* 5132 */ 0xffff, /* 5133 */ 0xffff, /* 5134 */ 0xffff, /* 5135 */ 0xffff, /* 5136 */ 0xffff, /* 5137 */ 0xffff, /* 5138 */ 0xffff, /* 5139 */ 0xffff, /* 513a */ 0xffff, /* 513b */ 0xffff, /* 513c */ 0xffff, /* 513d */ 0xffff, /* 513e */ 0xffff, /* 513f */ 0xffff, /* 5140 */ 0xffff, /* 5141 */ 0xffff, /* 5142 */ 0xffff, /* 5143 */ 0xffff, /* 5144 */ 0xffff, /* 5145 */ 0xffff, /* 5146 */ 0xffff, /* 5147 */ 0xffff, /* 5148 */ 0xffff, /* 5149 */ 0xffff, /* 514a */ 0xffff, /* 514b */ 0xffff, /* 514c */ 0xffff, /* 514d */ 0xffff, /* 514e */ 0xffff, /* 514f */ 0xffff, /* 5150 */ 0xffff, /* 5151 */ 0xffff, /* 5152 */ 0xffff, /* 5153 */ 0xffff, /* 5154 */ 0xffff, /* 5155 */ 0xffff, /* 5156 */ 0xffff, /* 5157 */ 0xffff, /* 5158 */ 0xffff, /* 5159 */ 0xffff, /* 515a */ 0xffff, /* 515b */ 0xffff, /* 515c */ 0xffff, /* 515d */ 0xffff, /* 515e */ 0xffff, /* 515f */ 0xffff, /* 5160 */ 0xffff, /* 5161 */ 0xffff, /* 5162 */ 0xffff, /* 5163 */ 0xffff, /* 5164 */ 0xffff, /* 5165 */ 0xffff, /* 5166 */ 0xffff, /* 5167 */ 0xffff, /* 5168 */ 0xffff, /* 5169 */ 0xffff, /* 516a */ 0xffff, /* 516b */ 0xffff, /* 516c */ 0xffff, /* 516d */ 0xffff, /* 516e */ 0xffff, /* 516f */ 0xffff, /* 5170 */ 0xffff, /* 5171 */ 0xffff, /* 5172 */ 0xffff, /* 5173 */ 0xffff, /* 5174 */ 0xffff, /* 5175 */ 0xffff, /* 5176 */ 0xffff, /* 5177 */ 0xffff, /* 5178 */ 0xffff, /* 5179 */ 0xffff, /* 517a */ 0xffff, /* 517b */ 0xffff, /* 517c */ 0xffff, /* 517d */ 0xffff, /* 517e */ 0xffff, /* 517f */ 0xffff, /* 5180 */ 0xffff, /* 5181 */ 0xffff, /* 5182 */ 0xffff, /* 5183 */ 0xffff, /* 5184 */ 0xffff, /* 5185 */ 0xffff, /* 5186 */ 0xffff, /* 5187 */ 0xffff, /* 5188 */ 0xffff, /* 5189 */ 0xffff, /* 518a */ 0xffff, /* 518b */ 0xffff, /* 518c */ 0xffff, /* 518d */ 0xffff, /* 518e */ 0xffff, /* 518f */ 0xffff, /* 5190 */ 0xffff, /* 5191 */ 0xffff, /* 5192 */ 0xffff, /* 5193 */ 0xffff, /* 5194 */ 0xffff, /* 5195 */ 0xffff, /* 5196 */ 0xffff, /* 5197 */ 0xffff, /* 5198 */ 0xffff, /* 5199 */ 0xffff, /* 519a */ 0xffff, /* 519b */ 0xffff, /* 519c */ 0xffff, /* 519d */ 0xffff, /* 519e */ 0xffff, /* 519f */ 0xffff, /* 51a0 */ 0xffff, /* 51a1 */ 0xffff, /* 51a2 */ 0xffff, /* 51a3 */ 0xffff, /* 51a4 */ 0xffff, /* 51a5 */ 0xffff, /* 51a6 */ 0xffff, /* 51a7 */ 0xffff, /* 51a8 */ 0xffff, /* 51a9 */ 0xffff, /* 51aa */ 0xffff, /* 51ab */ 0xffff, /* 51ac */ 0xffff, /* 51ad */ 0xffff, /* 51ae */ 0xffff, /* 51af */ 0xffff, /* 51b0 */ 0xffff, /* 51b1 */ 0xffff, /* 51b2 */ 0xffff, /* 51b3 */ 0xffff, /* 51b4 */ 0xffff, /* 51b5 */ 0xffff, /* 51b6 */ 0xffff, /* 51b7 */ 0xffff, /* 51b8 */ 0xffff, /* 51b9 */ 0xffff, /* 51ba */ 0xffff, /* 51bb */ 0xffff, /* 51bc */ 0xffff, /* 51bd */ 0xffff, /* 51be */ 0xffff, /* 51bf */ 0xffff, /* 51c0 */ 0xffff, /* 51c1 */ 0xffff, /* 51c2 */ 0xffff, /* 51c3 */ 0xffff, /* 51c4 */ 0xffff, /* 51c5 */ 0xffff, /* 51c6 */ 0xffff, /* 51c7 */ 0xffff, /* 51c8 */ 0xffff, /* 51c9 */ 0xffff, /* 51ca */ 0xffff, /* 51cb */ 0xffff, /* 51cc */ 0xffff, /* 51cd */ 0xffff, /* 51ce */ 0xffff, /* 51cf */ 0xffff, /* 51d0 */ 0xffff, /* 51d1 */ 0xffff, /* 51d2 */ 0xffff, /* 51d3 */ 0xffff, /* 51d4 */ 0xffff, /* 51d5 */ 0xffff, /* 51d6 */ 0xffff, /* 51d7 */ 0xffff, /* 51d8 */ 0xffff, /* 51d9 */ 0xffff, /* 51da */ 0xffff, /* 51db */ 0xffff, /* 51dc */ 0xffff, /* 51dd */ 0xffff, /* 51de */ 0xffff, /* 51df */ 0xffff, /* 51e0 */ 0xffff, /* 51e1 */ 0xffff, /* 51e2 */ 0xffff, /* 51e3 */ 0xffff, /* 51e4 */ 0xffff, /* 51e5 */ 0xffff, /* 51e6 */ 0xffff, /* 51e7 */ 0xffff, /* 51e8 */ 0xffff, /* 51e9 */ 0xffff, /* 51ea */ 0xffff, /* 51eb */ 0xffff, /* 51ec */ 0xffff, /* 51ed */ 0xffff, /* 51ee */ 0xffff, /* 51ef */ 0xffff, /* 51f0 */ 0xffff, /* 51f1 */ 0xffff, /* 51f2 */ 0xffff, /* 51f3 */ 0xffff, /* 51f4 */ 0xffff, /* 51f5 */ 0xffff, /* 51f6 */ 0xffff, /* 51f7 */ 0xffff, /* 51f8 */ 0xffff, /* 51f9 */ 0xffff, /* 51fa */ 0xffff, /* 51fb */ 0xffff, /* 51fc */ 0xffff, /* 51fd */ 0xffff, /* 51fe */ 0xffff, /* 51ff */ 0xffff, /* 5200 */ 0xffff, /* 5201 */ 0xffff, /* 5202 */ 0xffff, /* 5203 */ 0xffff, /* 5204 */ 0xffff, /* 5205 */ 0xffff, /* 5206 */ 0xffff, /* 5207 */ 0xffff, /* 5208 */ 0xffff, /* 5209 */ 0xffff, /* 520a */ 0xffff, /* 520b */ 0xffff, /* 520c */ 0xffff, /* 520d */ 0xffff, /* 520e */ 0xffff, /* 520f */ 0xffff, /* 5210 */ 0xffff, /* 5211 */ 0xffff, /* 5212 */ 0xffff, /* 5213 */ 0xffff, /* 5214 */ 0xffff, /* 5215 */ 0xffff, /* 5216 */ 0xffff, /* 5217 */ 0xffff, /* 5218 */ 0xffff, /* 5219 */ 0xffff, /* 521a */ 0xffff, /* 521b */ 0xffff, /* 521c */ 0xffff, /* 521d */ 0xffff, /* 521e */ 0xffff, /* 521f */ 0xffff, /* 5220 */ 0xffff, /* 5221 */ 0xffff, /* 5222 */ 0xffff, /* 5223 */ 0xffff, /* 5224 */ 0xffff, /* 5225 */ 0xffff, /* 5226 */ 0xffff, /* 5227 */ 0xffff, /* 5228 */ 0xffff, /* 5229 */ 0xffff, /* 522a */ 0xffff, /* 522b */ 0xffff, /* 522c */ 0xffff, /* 522d */ 0xffff, /* 522e */ 0xffff, /* 522f */ 0xffff, /* 5230 */ 0xffff, /* 5231 */ 0xffff, /* 5232 */ 0xffff, /* 5233 */ 0xffff, /* 5234 */ 0xffff, /* 5235 */ 0xffff, /* 5236 */ 0xffff, /* 5237 */ 0xffff, /* 5238 */ 0xffff, /* 5239 */ 0xffff, /* 523a */ 0xffff, /* 523b */ 0xffff, /* 523c */ 0xffff, /* 523d */ 0xffff, /* 523e */ 0xffff, /* 523f */ 0xffff, /* 5240 */ 0xffff, /* 5241 */ 0xffff, /* 5242 */ 0xffff, /* 5243 */ 0xffff, /* 5244 */ 0xffff, /* 5245 */ 0xffff, /* 5246 */ 0xffff, /* 5247 */ 0xffff, /* 5248 */ 0xffff, /* 5249 */ 0xffff, /* 524a */ 0xffff, /* 524b */ 0xffff, /* 524c */ 0xffff, /* 524d */ 0xffff, /* 524e */ 0xffff, /* 524f */ 0xffff, /* 5250 */ 0xffff, /* 5251 */ 0xffff, /* 5252 */ 0xffff, /* 5253 */ 0xffff, /* 5254 */ 0xffff, /* 5255 */ 0xffff, /* 5256 */ 0xffff, /* 5257 */ 0xffff, /* 5258 */ 0xffff, /* 5259 */ 0xffff, /* 525a */ 0xffff, /* 525b */ 0xffff, /* 525c */ 0xffff, /* 525d */ 0xffff, /* 525e */ 0xffff, /* 525f */ 0xffff, /* 5260 */ 0xffff, /* 5261 */ 0xffff, /* 5262 */ 0xffff, /* 5263 */ 0xffff, /* 5264 */ 0xffff, /* 5265 */ 0xffff, /* 5266 */ 0xffff, /* 5267 */ 0xffff, /* 5268 */ 0xffff, /* 5269 */ 0xffff, /* 526a */ 0xffff, /* 526b */ 0xffff, /* 526c */ 0xffff, /* 526d */ 0xffff, /* 526e */ 0xffff, /* 526f */ 0xffff, /* 5270 */ 0xffff, /* 5271 */ 0xffff, /* 5272 */ 0xffff, /* 5273 */ 0xffff, /* 5274 */ 0xffff, /* 5275 */ 0xffff, /* 5276 */ 0xffff, /* 5277 */ 0xffff, /* 5278 */ 0xffff, /* 5279 */ 0xffff, /* 527a */ 0xffff, /* 527b */ 0xffff, /* 527c */ 0xffff, /* 527d */ 0xffff, /* 527e */ 0xffff, /* 527f */ 0xffff, /* 5280 */ 0xffff, /* 5281 */ 0xffff, /* 5282 */ 0xffff, /* 5283 */ 0xffff, /* 5284 */ 0xffff, /* 5285 */ 0xffff, /* 5286 */ 0xffff, /* 5287 */ 0xffff, /* 5288 */ 0xffff, /* 5289 */ 0xffff, /* 528a */ 0xffff, /* 528b */ 0xffff, /* 528c */ 0xffff, /* 528d */ 0xffff, /* 528e */ 0xffff, /* 528f */ 0xffff, /* 5290 */ 0xffff, /* 5291 */ 0xffff, /* 5292 */ 0xffff, /* 5293 */ 0xffff, /* 5294 */ 0xffff, /* 5295 */ 0xffff, /* 5296 */ 0xffff, /* 5297 */ 0xffff, /* 5298 */ 0xffff, /* 5299 */ 0xffff, /* 529a */ 0xffff, /* 529b */ 0xffff, /* 529c */ 0xffff, /* 529d */ 0xffff, /* 529e */ 0xffff, /* 529f */ 0xffff, /* 52a0 */ 0xffff, /* 52a1 */ 0xffff, /* 52a2 */ 0xffff, /* 52a3 */ 0xffff, /* 52a4 */ 0xffff, /* 52a5 */ 0xffff, /* 52a6 */ 0xffff, /* 52a7 */ 0xffff, /* 52a8 */ 0xffff, /* 52a9 */ 0xffff, /* 52aa */ 0xffff, /* 52ab */ 0xffff, /* 52ac */ 0xffff, /* 52ad */ 0xffff, /* 52ae */ 0xffff, /* 52af */ 0xffff, /* 52b0 */ 0xffff, /* 52b1 */ 0xffff, /* 52b2 */ 0xffff, /* 52b3 */ 0xffff, /* 52b4 */ 0xffff, /* 52b5 */ 0xffff, /* 52b6 */ 0xffff, /* 52b7 */ 0xffff, /* 52b8 */ 0xffff, /* 52b9 */ 0xffff, /* 52ba */ 0xffff, /* 52bb */ 0xffff, /* 52bc */ 0xffff, /* 52bd */ 0xffff, /* 52be */ 0xffff, /* 52bf */ 0xffff, /* 52c0 */ 0xffff, /* 52c1 */ 0xffff, /* 52c2 */ 0xffff, /* 52c3 */ 0xffff, /* 52c4 */ 0xffff, /* 52c5 */ 0xffff, /* 52c6 */ 0xffff, /* 52c7 */ 0xffff, /* 52c8 */ 0xffff, /* 52c9 */ 0xffff, /* 52ca */ 0xffff, /* 52cb */ 0xffff, /* 52cc */ 0xffff, /* 52cd */ 0xffff, /* 52ce */ 0xffff, /* 52cf */ 0xffff, /* 52d0 */ 0xffff, /* 52d1 */ 0xffff, /* 52d2 */ 0xffff, /* 52d3 */ 0xffff, /* 52d4 */ 0xffff, /* 52d5 */ 0xffff, /* 52d6 */ 0xffff, /* 52d7 */ 0xffff, /* 52d8 */ 0xffff, /* 52d9 */ 0xffff, /* 52da */ 0xffff, /* 52db */ 0xffff, /* 52dc */ 0xffff, /* 52dd */ 0xffff, /* 52de */ 0xffff, /* 52df */ 0xffff, /* 52e0 */ 0xffff, /* 52e1 */ 0xffff, /* 52e2 */ 0xffff, /* 52e3 */ 0xffff, /* 52e4 */ 0xffff, /* 52e5 */ 0xffff, /* 52e6 */ 0xffff, /* 52e7 */ 0xffff, /* 52e8 */ 0xffff, /* 52e9 */ 0xffff, /* 52ea */ 0xffff, /* 52eb */ 0xffff, /* 52ec */ 0xffff, /* 52ed */ 0xffff, /* 52ee */ 0xffff, /* 52ef */ 0xffff, /* 52f0 */ 0xffff, /* 52f1 */ 0xffff, /* 52f2 */ 0xffff, /* 52f3 */ 0xffff, /* 52f4 */ 0xffff, /* 52f5 */ 0xffff, /* 52f6 */ 0xffff, /* 52f7 */ 0xffff, /* 52f8 */ 0xffff, /* 52f9 */ 0xffff, /* 52fa */ 0xffff, /* 52fb */ 0xffff, /* 52fc */ 0xffff, /* 52fd */ 0xffff, /* 52fe */ 0xffff, /* 52ff */ 0xffff, /* 5300 */ 0xffff, /* 5301 */ 0xffff, /* 5302 */ 0xffff, /* 5303 */ 0xffff, /* 5304 */ 0xffff, /* 5305 */ 0xffff, /* 5306 */ 0xffff, /* 5307 */ 0xffff, /* 5308 */ 0xffff, /* 5309 */ 0xffff, /* 530a */ 0xffff, /* 530b */ 0xffff, /* 530c */ 0xffff, /* 530d */ 0xffff, /* 530e */ 0xffff, /* 530f */ 0xffff, /* 5310 */ 0xffff, /* 5311 */ 0xffff, /* 5312 */ 0xffff, /* 5313 */ 0xffff, /* 5314 */ 0xffff, /* 5315 */ 0xffff, /* 5316 */ 0xffff, /* 5317 */ 0xffff, /* 5318 */ 0xffff, /* 5319 */ 0xffff, /* 531a */ 0xffff, /* 531b */ 0xffff, /* 531c */ 0xffff, /* 531d */ 0xffff, /* 531e */ 0xffff, /* 531f */ 0xffff, /* 5320 */ 0xffff, /* 5321 */ 0xffff, /* 5322 */ 0xffff, /* 5323 */ 0xffff, /* 5324 */ 0xffff, /* 5325 */ 0xffff, /* 5326 */ 0xffff, /* 5327 */ 0xffff, /* 5328 */ 0xffff, /* 5329 */ 0xffff, /* 532a */ 0xffff, /* 532b */ 0xffff, /* 532c */ 0xffff, /* 532d */ 0xffff, /* 532e */ 0xffff, /* 532f */ 0xffff, /* 5330 */ 0xffff, /* 5331 */ 0xffff, /* 5332 */ 0xffff, /* 5333 */ 0xffff, /* 5334 */ 0xffff, /* 5335 */ 0xffff, /* 5336 */ 0xffff, /* 5337 */ 0xffff, /* 5338 */ 0xffff, /* 5339 */ 0xffff, /* 533a */ 0xffff, /* 533b */ 0xffff, /* 533c */ 0xffff, /* 533d */ 0xffff, /* 533e */ 0xffff, /* 533f */ 0xffff, /* 5340 */ 0xffff, /* 5341 */ 0xffff, /* 5342 */ 0xffff, /* 5343 */ 0xffff, /* 5344 */ 0xffff, /* 5345 */ 0xffff, /* 5346 */ 0xffff, /* 5347 */ 0xffff, /* 5348 */ 0xffff, /* 5349 */ 0xffff, /* 534a */ 0xffff, /* 534b */ 0xffff, /* 534c */ 0xffff, /* 534d */ 0xffff, /* 534e */ 0xffff, /* 534f */ 0xffff, /* 5350 */ 0xffff, /* 5351 */ 0xffff, /* 5352 */ 0xffff, /* 5353 */ 0xffff, /* 5354 */ 0xffff, /* 5355 */ 0xffff, /* 5356 */ 0xffff, /* 5357 */ 0xffff, /* 5358 */ 0xffff, /* 5359 */ 0xffff, /* 535a */ 0xffff, /* 535b */ 0xffff, /* 535c */ 0xffff, /* 535d */ 0xffff, /* 535e */ 0xffff, /* 535f */ 0xffff, /* 5360 */ 0xffff, /* 5361 */ 0xffff, /* 5362 */ 0xffff, /* 5363 */ 0xffff, /* 5364 */ 0xffff, /* 5365 */ 0xffff, /* 5366 */ 0xffff, /* 5367 */ 0xffff, /* 5368 */ 0xffff, /* 5369 */ 0xffff, /* 536a */ 0xffff, /* 536b */ 0xffff, /* 536c */ 0xffff, /* 536d */ 0xffff, /* 536e */ 0xffff, /* 536f */ 0xffff, /* 5370 */ 0xffff, /* 5371 */ 0xffff, /* 5372 */ 0xffff, /* 5373 */ 0xffff, /* 5374 */ 0xffff, /* 5375 */ 0xffff, /* 5376 */ 0xffff, /* 5377 */ 0xffff, /* 5378 */ 0xffff, /* 5379 */ 0xffff, /* 537a */ 0xffff, /* 537b */ 0xffff, /* 537c */ 0xffff, /* 537d */ 0xffff, /* 537e */ 0xffff, /* 537f */ 0xffff, /* 5380 */ 0xffff, /* 5381 */ 0xffff, /* 5382 */ 0xffff, /* 5383 */ 0xffff, /* 5384 */ 0xffff, /* 5385 */ 0xffff, /* 5386 */ 0xffff, /* 5387 */ 0xffff, /* 5388 */ 0xffff, /* 5389 */ 0xffff, /* 538a */ 0xffff, /* 538b */ 0xffff, /* 538c */ 0xffff, /* 538d */ 0xffff, /* 538e */ 0xffff, /* 538f */ 0xffff, /* 5390 */ 0xffff, /* 5391 */ 0xffff, /* 5392 */ 0xffff, /* 5393 */ 0xffff, /* 5394 */ 0xffff, /* 5395 */ 0xffff, /* 5396 */ 0xffff, /* 5397 */ 0xffff, /* 5398 */ 0xffff, /* 5399 */ 0xffff, /* 539a */ 0xffff, /* 539b */ 0xffff, /* 539c */ 0xffff, /* 539d */ 0xffff, /* 539e */ 0xffff, /* 539f */ 0xffff, /* 53a0 */ 0xffff, /* 53a1 */ 0xffff, /* 53a2 */ 0xffff, /* 53a3 */ 0xffff, /* 53a4 */ 0xffff, /* 53a5 */ 0xffff, /* 53a6 */ 0xffff, /* 53a7 */ 0xffff, /* 53a8 */ 0xffff, /* 53a9 */ 0xffff, /* 53aa */ 0xffff, /* 53ab */ 0xffff, /* 53ac */ 0xffff, /* 53ad */ 0xffff, /* 53ae */ 0xffff, /* 53af */ 0xffff, /* 53b0 */ 0xffff, /* 53b1 */ 0xffff, /* 53b2 */ 0xffff, /* 53b3 */ 0xffff, /* 53b4 */ 0xffff, /* 53b5 */ 0xffff, /* 53b6 */ 0xffff, /* 53b7 */ 0xffff, /* 53b8 */ 0xffff, /* 53b9 */ 0xffff, /* 53ba */ 0xffff, /* 53bb */ 0xffff, /* 53bc */ 0xffff, /* 53bd */ 0xffff, /* 53be */ 0xffff, /* 53bf */ 0xffff, /* 53c0 */ 0xffff, /* 53c1 */ 0xffff, /* 53c2 */ 0xffff, /* 53c3 */ 0xffff, /* 53c4 */ 0xffff, /* 53c5 */ 0xffff, /* 53c6 */ 0xffff, /* 53c7 */ 0xffff, /* 53c8 */ 0xffff, /* 53c9 */ 0xffff, /* 53ca */ 0xffff, /* 53cb */ 0xffff, /* 53cc */ 0xffff, /* 53cd */ 0xffff, /* 53ce */ 0xffff, /* 53cf */ 0xffff, /* 53d0 */ 0xffff, /* 53d1 */ 0xffff, /* 53d2 */ 0xffff, /* 53d3 */ 0xffff, /* 53d4 */ 0xffff, /* 53d5 */ 0xffff, /* 53d6 */ 0xffff, /* 53d7 */ 0xffff, /* 53d8 */ 0xffff, /* 53d9 */ 0xffff, /* 53da */ 0xffff, /* 53db */ 0xffff, /* 53dc */ 0xffff, /* 53dd */ 0xffff, /* 53de */ 0xffff, /* 53df */ 0xffff, /* 53e0 */ 0xffff, /* 53e1 */ 0xffff, /* 53e2 */ 0xffff, /* 53e3 */ 0xffff, /* 53e4 */ 0xffff, /* 53e5 */ 0xffff, /* 53e6 */ 0xffff, /* 53e7 */ 0xffff, /* 53e8 */ 0xffff, /* 53e9 */ 0xffff, /* 53ea */ 0xffff, /* 53eb */ 0xffff, /* 53ec */ 0xffff, /* 53ed */ 0xffff, /* 53ee */ 0xffff, /* 53ef */ 0xffff, /* 53f0 */ 0xffff, /* 53f1 */ 0xffff, /* 53f2 */ 0xffff, /* 53f3 */ 0xffff, /* 53f4 */ 0xffff, /* 53f5 */ 0xffff, /* 53f6 */ 0xffff, /* 53f7 */ 0xffff, /* 53f8 */ 0xffff, /* 53f9 */ 0xffff, /* 53fa */ 0xffff, /* 53fb */ 0xffff, /* 53fc */ 0xffff, /* 53fd */ 0xffff, /* 53fe */ 0xffff, /* 53ff */ 0xffff, /* 5400 */ 0xffff, /* 5401 */ 0xffff, /* 5402 */ 0xffff, /* 5403 */ 0xffff, /* 5404 */ 0xffff, /* 5405 */ 0xffff, /* 5406 */ 0xffff, /* 5407 */ 0xffff, /* 5408 */ 0xffff, /* 5409 */ 0xffff, /* 540a */ 0xffff, /* 540b */ 0xffff, /* 540c */ 0xffff, /* 540d */ 0xffff, /* 540e */ 0xffff, /* 540f */ 0xffff, /* 5410 */ 0xffff, /* 5411 */ 0xffff, /* 5412 */ 0xffff, /* 5413 */ 0xffff, /* 5414 */ 0xffff, /* 5415 */ 0xffff, /* 5416 */ 0xffff, /* 5417 */ 0xffff, /* 5418 */ 0xffff, /* 5419 */ 0xffff, /* 541a */ 0xffff, /* 541b */ 0xffff, /* 541c */ 0xffff, /* 541d */ 0xffff, /* 541e */ 0xffff, /* 541f */ 0xffff, /* 5420 */ 0xffff, /* 5421 */ 0xffff, /* 5422 */ 0xffff, /* 5423 */ 0xffff, /* 5424 */ 0xffff, /* 5425 */ 0xffff, /* 5426 */ 0xffff, /* 5427 */ 0xffff, /* 5428 */ 0xffff, /* 5429 */ 0xffff, /* 542a */ 0xffff, /* 542b */ 0xffff, /* 542c */ 0xffff, /* 542d */ 0xffff, /* 542e */ 0xffff, /* 542f */ 0xffff, /* 5430 */ 0xffff, /* 5431 */ 0xffff, /* 5432 */ 0xffff, /* 5433 */ 0xffff, /* 5434 */ 0xffff, /* 5435 */ 0xffff, /* 5436 */ 0xffff, /* 5437 */ 0xffff, /* 5438 */ 0xffff, /* 5439 */ 0xffff, /* 543a */ 0xffff, /* 543b */ 0xffff, /* 543c */ 0xffff, /* 543d */ 0xffff, /* 543e */ 0xffff, /* 543f */ 0xffff, /* 5440 */ 0xffff, /* 5441 */ 0xffff, /* 5442 */ 0xffff, /* 5443 */ 0xffff, /* 5444 */ 0xffff, /* 5445 */ 0xffff, /* 5446 */ 0xffff, /* 5447 */ 0xffff, /* 5448 */ 0xffff, /* 5449 */ 0xffff, /* 544a */ 0xffff, /* 544b */ 0xffff, /* 544c */ 0xffff, /* 544d */ 0xffff, /* 544e */ 0xffff, /* 544f */ 0xffff, /* 5450 */ 0xffff, /* 5451 */ 0xffff, /* 5452 */ 0xffff, /* 5453 */ 0xffff, /* 5454 */ 0xffff, /* 5455 */ 0xffff, /* 5456 */ 0xffff, /* 5457 */ 0xffff, /* 5458 */ 0xffff, /* 5459 */ 0xffff, /* 545a */ 0xffff, /* 545b */ 0xffff, /* 545c */ 0xffff, /* 545d */ 0xffff, /* 545e */ 0xffff, /* 545f */ 0xffff, /* 5460 */ 0xffff, /* 5461 */ 0xffff, /* 5462 */ 0xffff, /* 5463 */ 0xffff, /* 5464 */ 0xffff, /* 5465 */ 0xffff, /* 5466 */ 0xffff, /* 5467 */ 0xffff, /* 5468 */ 0xffff, /* 5469 */ 0xffff, /* 546a */ 0xffff, /* 546b */ 0xffff, /* 546c */ 0xffff, /* 546d */ 0xffff, /* 546e */ 0xffff, /* 546f */ 0xffff, /* 5470 */ 0xffff, /* 5471 */ 0xffff, /* 5472 */ 0xffff, /* 5473 */ 0xffff, /* 5474 */ 0xffff, /* 5475 */ 0xffff, /* 5476 */ 0xffff, /* 5477 */ 0xffff, /* 5478 */ 0xffff, /* 5479 */ 0xffff, /* 547a */ 0xffff, /* 547b */ 0xffff, /* 547c */ 0xffff, /* 547d */ 0xffff, /* 547e */ 0xffff, /* 547f */ 0xffff, /* 5480 */ 0xffff, /* 5481 */ 0xffff, /* 5482 */ 0xffff, /* 5483 */ 0xffff, /* 5484 */ 0xffff, /* 5485 */ 0xffff, /* 5486 */ 0xffff, /* 5487 */ 0xffff, /* 5488 */ 0xffff, /* 5489 */ 0xffff, /* 548a */ 0xffff, /* 548b */ 0xffff, /* 548c */ 0xffff, /* 548d */ 0xffff, /* 548e */ 0xffff, /* 548f */ 0xffff, /* 5490 */ 0xffff, /* 5491 */ 0xffff, /* 5492 */ 0xffff, /* 5493 */ 0xffff, /* 5494 */ 0xffff, /* 5495 */ 0xffff, /* 5496 */ 0xffff, /* 5497 */ 0xffff, /* 5498 */ 0xffff, /* 5499 */ 0xffff, /* 549a */ 0xffff, /* 549b */ 0xffff, /* 549c */ 0xffff, /* 549d */ 0xffff, /* 549e */ 0xffff, /* 549f */ 0xffff, /* 54a0 */ 0xffff, /* 54a1 */ 0xffff, /* 54a2 */ 0xffff, /* 54a3 */ 0xffff, /* 54a4 */ 0xffff, /* 54a5 */ 0xffff, /* 54a6 */ 0xffff, /* 54a7 */ 0xffff, /* 54a8 */ 0xffff, /* 54a9 */ 0xffff, /* 54aa */ 0xffff, /* 54ab */ 0xffff, /* 54ac */ 0xffff, /* 54ad */ 0xffff, /* 54ae */ 0xffff, /* 54af */ 0xffff, /* 54b0 */ 0xffff, /* 54b1 */ 0xffff, /* 54b2 */ 0xffff, /* 54b3 */ 0xffff, /* 54b4 */ 0xffff, /* 54b5 */ 0xffff, /* 54b6 */ 0xffff, /* 54b7 */ 0xffff, /* 54b8 */ 0xffff, /* 54b9 */ 0xffff, /* 54ba */ 0xffff, /* 54bb */ 0xffff, /* 54bc */ 0xffff, /* 54bd */ 0xffff, /* 54be */ 0xffff, /* 54bf */ 0xffff, /* 54c0 */ 0xffff, /* 54c1 */ 0xffff, /* 54c2 */ 0xffff, /* 54c3 */ 0xffff, /* 54c4 */ 0xffff, /* 54c5 */ 0xffff, /* 54c6 */ 0xffff, /* 54c7 */ 0xffff, /* 54c8 */ 0xffff, /* 54c9 */ 0xffff, /* 54ca */ 0xffff, /* 54cb */ 0xffff, /* 54cc */ 0xffff, /* 54cd */ 0xffff, /* 54ce */ 0xffff, /* 54cf */ 0xffff, /* 54d0 */ 0xffff, /* 54d1 */ 0xffff, /* 54d2 */ 0xffff, /* 54d3 */ 0xffff, /* 54d4 */ 0xffff, /* 54d5 */ 0xffff, /* 54d6 */ 0xffff, /* 54d7 */ 0xffff, /* 54d8 */ 0xffff, /* 54d9 */ 0xffff, /* 54da */ 0xffff, /* 54db */ 0xffff, /* 54dc */ 0xffff, /* 54dd */ 0xffff, /* 54de */ 0xffff, /* 54df */ 0xffff, /* 54e0 */ 0xffff, /* 54e1 */ 0xffff, /* 54e2 */ 0xffff, /* 54e3 */ 0xffff, /* 54e4 */ 0xffff, /* 54e5 */ 0xffff, /* 54e6 */ 0xffff, /* 54e7 */ 0xffff, /* 54e8 */ 0xffff, /* 54e9 */ 0xffff, /* 54ea */ 0xffff, /* 54eb */ 0xffff, /* 54ec */ 0xffff, /* 54ed */ 0xffff, /* 54ee */ 0xffff, /* 54ef */ 0xffff, /* 54f0 */ 0xffff, /* 54f1 */ 0xffff, /* 54f2 */ 0xffff, /* 54f3 */ 0xffff, /* 54f4 */ 0xffff, /* 54f5 */ 0xffff, /* 54f6 */ 0xffff, /* 54f7 */ 0xffff, /* 54f8 */ 0xffff, /* 54f9 */ 0xffff, /* 54fa */ 0xffff, /* 54fb */ 0xffff, /* 54fc */ 0xffff, /* 54fd */ 0xffff, /* 54fe */ 0xffff, /* 54ff */ 0xffff, /* 5500 */ 0xffff, /* 5501 */ 0xffff, /* 5502 */ 0xffff, /* 5503 */ 0xffff, /* 5504 */ 0xffff, /* 5505 */ 0xffff, /* 5506 */ 0xffff, /* 5507 */ 0xffff, /* 5508 */ 0xffff, /* 5509 */ 0xffff, /* 550a */ 0xffff, /* 550b */ 0xffff, /* 550c */ 0xffff, /* 550d */ 0xffff, /* 550e */ 0xffff, /* 550f */ 0xffff, /* 5510 */ 0xffff, /* 5511 */ 0xffff, /* 5512 */ 0xffff, /* 5513 */ 0xffff, /* 5514 */ 0xffff, /* 5515 */ 0xffff, /* 5516 */ 0xffff, /* 5517 */ 0xffff, /* 5518 */ 0xffff, /* 5519 */ 0xffff, /* 551a */ 0xffff, /* 551b */ 0xffff, /* 551c */ 0xffff, /* 551d */ 0xffff, /* 551e */ 0xffff, /* 551f */ 0xffff, /* 5520 */ 0xffff, /* 5521 */ 0xffff, /* 5522 */ 0xffff, /* 5523 */ 0xffff, /* 5524 */ 0xffff, /* 5525 */ 0xffff, /* 5526 */ 0xffff, /* 5527 */ 0xffff, /* 5528 */ 0xffff, /* 5529 */ 0xffff, /* 552a */ 0xffff, /* 552b */ 0xffff, /* 552c */ 0xffff, /* 552d */ 0xffff, /* 552e */ 0xffff, /* 552f */ 0xffff, /* 5530 */ 0xffff, /* 5531 */ 0xffff, /* 5532 */ 0xffff, /* 5533 */ 0xffff, /* 5534 */ 0xffff, /* 5535 */ 0xffff, /* 5536 */ 0xffff, /* 5537 */ 0xffff, /* 5538 */ 0xffff, /* 5539 */ 0xffff, /* 553a */ 0xffff, /* 553b */ 0xffff, /* 553c */ 0xffff, /* 553d */ 0xffff, /* 553e */ 0xffff, /* 553f */ 0xffff, /* 5540 */ 0xffff, /* 5541 */ 0xffff, /* 5542 */ 0xffff, /* 5543 */ 0xffff, /* 5544 */ 0xffff, /* 5545 */ 0xffff, /* 5546 */ 0xffff, /* 5547 */ 0xffff, /* 5548 */ 0xffff, /* 5549 */ 0xffff, /* 554a */ 0xffff, /* 554b */ 0xffff, /* 554c */ 0xffff, /* 554d */ 0xffff, /* 554e */ 0xffff, /* 554f */ 0xffff, /* 5550 */ 0xffff, /* 5551 */ 0xffff, /* 5552 */ 0xffff, /* 5553 */ 0xffff, /* 5554 */ 0xffff, /* 5555 */ 0xffff, /* 5556 */ 0xffff, /* 5557 */ 0xffff, /* 5558 */ 0xffff, /* 5559 */ 0xffff, /* 555a */ 0xffff, /* 555b */ 0xffff, /* 555c */ 0xffff, /* 555d */ 0xffff, /* 555e */ 0xffff, /* 555f */ 0xffff, /* 5560 */ 0xffff, /* 5561 */ 0xffff, /* 5562 */ 0xffff, /* 5563 */ 0xffff, /* 5564 */ 0xffff, /* 5565 */ 0xffff, /* 5566 */ 0xffff, /* 5567 */ 0xffff, /* 5568 */ 0xffff, /* 5569 */ 0xffff, /* 556a */ 0xffff, /* 556b */ 0xffff, /* 556c */ 0xffff, /* 556d */ 0xffff, /* 556e */ 0xffff, /* 556f */ 0xffff, /* 5570 */ 0xffff, /* 5571 */ 0xffff, /* 5572 */ 0xffff, /* 5573 */ 0xffff, /* 5574 */ 0xffff, /* 5575 */ 0xffff, /* 5576 */ 0xffff, /* 5577 */ 0xffff, /* 5578 */ 0xffff, /* 5579 */ 0xffff, /* 557a */ 0xffff, /* 557b */ 0xffff, /* 557c */ 0xffff, /* 557d */ 0xffff, /* 557e */ 0xffff, /* 557f */ 0xffff, /* 5580 */ 0xffff, /* 5581 */ 0xffff, /* 5582 */ 0xffff, /* 5583 */ 0xffff, /* 5584 */ 0xffff, /* 5585 */ 0xffff, /* 5586 */ 0xffff, /* 5587 */ 0xffff, /* 5588 */ 0xffff, /* 5589 */ 0xffff, /* 558a */ 0xffff, /* 558b */ 0xffff, /* 558c */ 0xffff, /* 558d */ 0xffff, /* 558e */ 0xffff, /* 558f */ 0xffff, /* 5590 */ 0xffff, /* 5591 */ 0xffff, /* 5592 */ 0xffff, /* 5593 */ 0xffff, /* 5594 */ 0xffff, /* 5595 */ 0xffff, /* 5596 */ 0xffff, /* 5597 */ 0xffff, /* 5598 */ 0xffff, /* 5599 */ 0xffff, /* 559a */ 0xffff, /* 559b */ 0xffff, /* 559c */ 0xffff, /* 559d */ 0xffff, /* 559e */ 0xffff, /* 559f */ 0xffff, /* 55a0 */ 0xffff, /* 55a1 */ 0xffff, /* 55a2 */ 0xffff, /* 55a3 */ 0xffff, /* 55a4 */ 0xffff, /* 55a5 */ 0xffff, /* 55a6 */ 0xffff, /* 55a7 */ 0xffff, /* 55a8 */ 0xffff, /* 55a9 */ 0xffff, /* 55aa */ 0xffff, /* 55ab */ 0xffff, /* 55ac */ 0xffff, /* 55ad */ 0xffff, /* 55ae */ 0xffff, /* 55af */ 0xffff, /* 55b0 */ 0xffff, /* 55b1 */ 0xffff, /* 55b2 */ 0xffff, /* 55b3 */ 0xffff, /* 55b4 */ 0xffff, /* 55b5 */ 0xffff, /* 55b6 */ 0xffff, /* 55b7 */ 0xffff, /* 55b8 */ 0xffff, /* 55b9 */ 0xffff, /* 55ba */ 0xffff, /* 55bb */ 0xffff, /* 55bc */ 0xffff, /* 55bd */ 0xffff, /* 55be */ 0xffff, /* 55bf */ 0xffff, /* 55c0 */ 0xffff, /* 55c1 */ 0xffff, /* 55c2 */ 0xffff, /* 55c3 */ 0xffff, /* 55c4 */ 0xffff, /* 55c5 */ 0xffff, /* 55c6 */ 0xffff, /* 55c7 */ 0xffff, /* 55c8 */ 0xffff, /* 55c9 */ 0xffff, /* 55ca */ 0xffff, /* 55cb */ 0xffff, /* 55cc */ 0xffff, /* 55cd */ 0xffff, /* 55ce */ 0xffff, /* 55cf */ 0xffff, /* 55d0 */ 0xffff, /* 55d1 */ 0xffff, /* 55d2 */ 0xffff, /* 55d3 */ 0xffff, /* 55d4 */ 0xffff, /* 55d5 */ 0xffff, /* 55d6 */ 0xffff, /* 55d7 */ 0xffff, /* 55d8 */ 0xffff, /* 55d9 */ 0xffff, /* 55da */ 0xffff, /* 55db */ 0xffff, /* 55dc */ 0xffff, /* 55dd */ 0xffff, /* 55de */ 0xffff, /* 55df */ 0xffff, /* 55e0 */ 0xffff, /* 55e1 */ 0xffff, /* 55e2 */ 0xffff, /* 55e3 */ 0xffff, /* 55e4 */ 0xffff, /* 55e5 */ 0xffff, /* 55e6 */ 0xffff, /* 55e7 */ 0xffff, /* 55e8 */ 0xffff, /* 55e9 */ 0xffff, /* 55ea */ 0xffff, /* 55eb */ 0xffff, /* 55ec */ 0xffff, /* 55ed */ 0xffff, /* 55ee */ 0xffff, /* 55ef */ 0xffff, /* 55f0 */ 0xffff, /* 55f1 */ 0xffff, /* 55f2 */ 0xffff, /* 55f3 */ 0xffff, /* 55f4 */ 0xffff, /* 55f5 */ 0xffff, /* 55f6 */ 0xffff, /* 55f7 */ 0xffff, /* 55f8 */ 0xffff, /* 55f9 */ 0xffff, /* 55fa */ 0xffff, /* 55fb */ 0xffff, /* 55fc */ 0xffff, /* 55fd */ 0xffff, /* 55fe */ 0xffff, /* 55ff */ 0xffff, /* 5600 */ 0xffff, /* 5601 */ 0xffff, /* 5602 */ 0xffff, /* 5603 */ 0xffff, /* 5604 */ 0xffff, /* 5605 */ 0xffff, /* 5606 */ 0xffff, /* 5607 */ 0xffff, /* 5608 */ 0xffff, /* 5609 */ 0xffff, /* 560a */ 0xffff, /* 560b */ 0xffff, /* 560c */ 0xffff, /* 560d */ 0xffff, /* 560e */ 0xffff, /* 560f */ 0xffff, /* 5610 */ 0xffff, /* 5611 */ 0xffff, /* 5612 */ 0xffff, /* 5613 */ 0xffff, /* 5614 */ 0xffff, /* 5615 */ 0xffff, /* 5616 */ 0xffff, /* 5617 */ 0xffff, /* 5618 */ 0xffff, /* 5619 */ 0xffff, /* 561a */ 0xffff, /* 561b */ 0xffff, /* 561c */ 0xffff, /* 561d */ 0xffff, /* 561e */ 0xffff, /* 561f */ 0xffff, /* 5620 */ 0xffff, /* 5621 */ 0xffff, /* 5622 */ 0xffff, /* 5623 */ 0xffff, /* 5624 */ 0xffff, /* 5625 */ 0xffff, /* 5626 */ 0xffff, /* 5627 */ 0xffff, /* 5628 */ 0xffff, /* 5629 */ 0xffff, /* 562a */ 0xffff, /* 562b */ 0xffff, /* 562c */ 0xffff, /* 562d */ 0xffff, /* 562e */ 0xffff, /* 562f */ 0xffff, /* 5630 */ 0xffff, /* 5631 */ 0xffff, /* 5632 */ 0xffff, /* 5633 */ 0xffff, /* 5634 */ 0xffff, /* 5635 */ 0xffff, /* 5636 */ 0xffff, /* 5637 */ 0xffff, /* 5638 */ 0xffff, /* 5639 */ 0xffff, /* 563a */ 0xffff, /* 563b */ 0xffff, /* 563c */ 0xffff, /* 563d */ 0xffff, /* 563e */ 0xffff, /* 563f */ 0xffff, /* 5640 */ 0xffff, /* 5641 */ 0xffff, /* 5642 */ 0xffff, /* 5643 */ 0xffff, /* 5644 */ 0xffff, /* 5645 */ 0xffff, /* 5646 */ 0xffff, /* 5647 */ 0xffff, /* 5648 */ 0xffff, /* 5649 */ 0xffff, /* 564a */ 0xffff, /* 564b */ 0xffff, /* 564c */ 0xffff, /* 564d */ 0xffff, /* 564e */ 0xffff, /* 564f */ 0xffff, /* 5650 */ 0xffff, /* 5651 */ 0xffff, /* 5652 */ 0xffff, /* 5653 */ 0xffff, /* 5654 */ 0xffff, /* 5655 */ 0xffff, /* 5656 */ 0xffff, /* 5657 */ 0xffff, /* 5658 */ 0xffff, /* 5659 */ 0xffff, /* 565a */ 0xffff, /* 565b */ 0xffff, /* 565c */ 0xffff, /* 565d */ 0xffff, /* 565e */ 0xffff, /* 565f */ 0xffff, /* 5660 */ 0xffff, /* 5661 */ 0xffff, /* 5662 */ 0xffff, /* 5663 */ 0xffff, /* 5664 */ 0xffff, /* 5665 */ 0xffff, /* 5666 */ 0xffff, /* 5667 */ 0xffff, /* 5668 */ 0xffff, /* 5669 */ 0xffff, /* 566a */ 0xffff, /* 566b */ 0xffff, /* 566c */ 0xffff, /* 566d */ 0xffff, /* 566e */ 0xffff, /* 566f */ 0xffff, /* 5670 */ 0xffff, /* 5671 */ 0xffff, /* 5672 */ 0xffff, /* 5673 */ 0xffff, /* 5674 */ 0xffff, /* 5675 */ 0xffff, /* 5676 */ 0xffff, /* 5677 */ 0xffff, /* 5678 */ 0xffff, /* 5679 */ 0xffff, /* 567a */ 0xffff, /* 567b */ 0xffff, /* 567c */ 0xffff, /* 567d */ 0xffff, /* 567e */ 0xffff, /* 567f */ 0xffff, /* 5680 */ 0xffff, /* 5681 */ 0xffff, /* 5682 */ 0xffff, /* 5683 */ 0xffff, /* 5684 */ 0xffff, /* 5685 */ 0xffff, /* 5686 */ 0xffff, /* 5687 */ 0xffff, /* 5688 */ 0xffff, /* 5689 */ 0xffff, /* 568a */ 0xffff, /* 568b */ 0xffff, /* 568c */ 0xffff, /* 568d */ 0xffff, /* 568e */ 0xffff, /* 568f */ 0xffff, /* 5690 */ 0xffff, /* 5691 */ 0xffff, /* 5692 */ 0xffff, /* 5693 */ 0xffff, /* 5694 */ 0xffff, /* 5695 */ 0xffff, /* 5696 */ 0xffff, /* 5697 */ 0xffff, /* 5698 */ 0xffff, /* 5699 */ 0xffff, /* 569a */ 0xffff, /* 569b */ 0xffff, /* 569c */ 0xffff, /* 569d */ 0xffff, /* 569e */ 0xffff, /* 569f */ 0xffff, /* 56a0 */ 0xffff, /* 56a1 */ 0xffff, /* 56a2 */ 0xffff, /* 56a3 */ 0xffff, /* 56a4 */ 0xffff, /* 56a5 */ 0xffff, /* 56a6 */ 0xffff, /* 56a7 */ 0xffff, /* 56a8 */ 0xffff, /* 56a9 */ 0xffff, /* 56aa */ 0xffff, /* 56ab */ 0xffff, /* 56ac */ 0xffff, /* 56ad */ 0xffff, /* 56ae */ 0xffff, /* 56af */ 0xffff, /* 56b0 */ 0xffff, /* 56b1 */ 0xffff, /* 56b2 */ 0xffff, /* 56b3 */ 0xffff, /* 56b4 */ 0xffff, /* 56b5 */ 0xffff, /* 56b6 */ 0xffff, /* 56b7 */ 0xffff, /* 56b8 */ 0xffff, /* 56b9 */ 0xffff, /* 56ba */ 0xffff, /* 56bb */ 0xffff, /* 56bc */ 0xffff, /* 56bd */ 0xffff, /* 56be */ 0xffff, /* 56bf */ 0xffff, /* 56c0 */ 0xffff, /* 56c1 */ 0xffff, /* 56c2 */ 0xffff, /* 56c3 */ 0xffff, /* 56c4 */ 0xffff, /* 56c5 */ 0xffff, /* 56c6 */ 0xffff, /* 56c7 */ 0xffff, /* 56c8 */ 0xffff, /* 56c9 */ 0xffff, /* 56ca */ 0xffff, /* 56cb */ 0xffff, /* 56cc */ 0xffff, /* 56cd */ 0xffff, /* 56ce */ 0xffff, /* 56cf */ 0xffff, /* 56d0 */ 0xffff, /* 56d1 */ 0xffff, /* 56d2 */ 0xffff, /* 56d3 */ 0xffff, /* 56d4 */ 0xffff, /* 56d5 */ 0xffff, /* 56d6 */ 0xffff, /* 56d7 */ 0xffff, /* 56d8 */ 0xffff, /* 56d9 */ 0xffff, /* 56da */ 0xffff, /* 56db */ 0xffff, /* 56dc */ 0xffff, /* 56dd */ 0xffff, /* 56de */ 0xffff, /* 56df */ 0xffff, /* 56e0 */ 0xffff, /* 56e1 */ 0xffff, /* 56e2 */ 0xffff, /* 56e3 */ 0xffff, /* 56e4 */ 0xffff, /* 56e5 */ 0xffff, /* 56e6 */ 0xffff, /* 56e7 */ 0xffff, /* 56e8 */ 0xffff, /* 56e9 */ 0xffff, /* 56ea */ 0xffff, /* 56eb */ 0xffff, /* 56ec */ 0xffff, /* 56ed */ 0xffff, /* 56ee */ 0xffff, /* 56ef */ 0xffff, /* 56f0 */ 0xffff, /* 56f1 */ 0xffff, /* 56f2 */ 0xffff, /* 56f3 */ 0xffff, /* 56f4 */ 0xffff, /* 56f5 */ 0xffff, /* 56f6 */ 0xffff, /* 56f7 */ 0xffff, /* 56f8 */ 0xffff, /* 56f9 */ 0xffff, /* 56fa */ 0xffff, /* 56fb */ 0xffff, /* 56fc */ 0xffff, /* 56fd */ 0xffff, /* 56fe */ 0xffff, /* 56ff */ 0xffff, /* 5700 */ 0xffff, /* 5701 */ 0xffff, /* 5702 */ 0xffff, /* 5703 */ 0xffff, /* 5704 */ 0xffff, /* 5705 */ 0xffff, /* 5706 */ 0xffff, /* 5707 */ 0xffff, /* 5708 */ 0xffff, /* 5709 */ 0xffff, /* 570a */ 0xffff, /* 570b */ 0xffff, /* 570c */ 0xffff, /* 570d */ 0xffff, /* 570e */ 0xffff, /* 570f */ 0xffff, /* 5710 */ 0xffff, /* 5711 */ 0xffff, /* 5712 */ 0xffff, /* 5713 */ 0xffff, /* 5714 */ 0xffff, /* 5715 */ 0xffff, /* 5716 */ 0xffff, /* 5717 */ 0xffff, /* 5718 */ 0xffff, /* 5719 */ 0xffff, /* 571a */ 0xffff, /* 571b */ 0xffff, /* 571c */ 0xffff, /* 571d */ 0xffff, /* 571e */ 0xffff, /* 571f */ 0xffff, /* 5720 */ 0xffff, /* 5721 */ 0xffff, /* 5722 */ 0xffff, /* 5723 */ 0xffff, /* 5724 */ 0xffff, /* 5725 */ 0xffff, /* 5726 */ 0xffff, /* 5727 */ 0xffff, /* 5728 */ 0xffff, /* 5729 */ 0xffff, /* 572a */ 0xffff, /* 572b */ 0xffff, /* 572c */ 0xffff, /* 572d */ 0xffff, /* 572e */ 0xffff, /* 572f */ 0xffff, /* 5730 */ 0xffff, /* 5731 */ 0xffff, /* 5732 */ 0xffff, /* 5733 */ 0xffff, /* 5734 */ 0xffff, /* 5735 */ 0xffff, /* 5736 */ 0xffff, /* 5737 */ 0xffff, /* 5738 */ 0xffff, /* 5739 */ 0xffff, /* 573a */ 0xffff, /* 573b */ 0xffff, /* 573c */ 0xffff, /* 573d */ 0xffff, /* 573e */ 0xffff, /* 573f */ 0xffff, /* 5740 */ 0xffff, /* 5741 */ 0xffff, /* 5742 */ 0xffff, /* 5743 */ 0xffff, /* 5744 */ 0xffff, /* 5745 */ 0xffff, /* 5746 */ 0xffff, /* 5747 */ 0xffff, /* 5748 */ 0xffff, /* 5749 */ 0xffff, /* 574a */ 0xffff, /* 574b */ 0xffff, /* 574c */ 0xffff, /* 574d */ 0xffff, /* 574e */ 0xffff, /* 574f */ 0xffff, /* 5750 */ 0xffff, /* 5751 */ 0xffff, /* 5752 */ 0xffff, /* 5753 */ 0xffff, /* 5754 */ 0xffff, /* 5755 */ 0xffff, /* 5756 */ 0xffff, /* 5757 */ 0xffff, /* 5758 */ 0xffff, /* 5759 */ 0xffff, /* 575a */ 0xffff, /* 575b */ 0xffff, /* 575c */ 0xffff, /* 575d */ 0xffff, /* 575e */ 0xffff, /* 575f */ 0xffff, /* 5760 */ 0xffff, /* 5761 */ 0xffff, /* 5762 */ 0xffff, /* 5763 */ 0xffff, /* 5764 */ 0xffff, /* 5765 */ 0xffff, /* 5766 */ 0xffff, /* 5767 */ 0xffff, /* 5768 */ 0xffff, /* 5769 */ 0xffff, /* 576a */ 0xffff, /* 576b */ 0xffff, /* 576c */ 0xffff, /* 576d */ 0xffff, /* 576e */ 0xffff, /* 576f */ 0xffff, /* 5770 */ 0xffff, /* 5771 */ 0xffff, /* 5772 */ 0xffff, /* 5773 */ 0xffff, /* 5774 */ 0xffff, /* 5775 */ 0xffff, /* 5776 */ 0xffff, /* 5777 */ 0xffff, /* 5778 */ 0xffff, /* 5779 */ 0xffff, /* 577a */ 0xffff, /* 577b */ 0xffff, /* 577c */ 0xffff, /* 577d */ 0xffff, /* 577e */ 0xffff, /* 577f */ 0xffff, /* 5780 */ 0xffff, /* 5781 */ 0xffff, /* 5782 */ 0xffff, /* 5783 */ 0xffff, /* 5784 */ 0xffff, /* 5785 */ 0xffff, /* 5786 */ 0xffff, /* 5787 */ 0xffff, /* 5788 */ 0xffff, /* 5789 */ 0xffff, /* 578a */ 0xffff, /* 578b */ 0xffff, /* 578c */ 0xffff, /* 578d */ 0xffff, /* 578e */ 0xffff, /* 578f */ 0xffff, /* 5790 */ 0xffff, /* 5791 */ 0xffff, /* 5792 */ 0xffff, /* 5793 */ 0xffff, /* 5794 */ 0xffff, /* 5795 */ 0xffff, /* 5796 */ 0xffff, /* 5797 */ 0xffff, /* 5798 */ 0xffff, /* 5799 */ 0xffff, /* 579a */ 0xffff, /* 579b */ 0xffff, /* 579c */ 0xffff, /* 579d */ 0xffff, /* 579e */ 0xffff, /* 579f */ 0xffff, /* 57a0 */ 0xffff, /* 57a1 */ 0xffff, /* 57a2 */ 0xffff, /* 57a3 */ 0xffff, /* 57a4 */ 0xffff, /* 57a5 */ 0xffff, /* 57a6 */ 0xffff, /* 57a7 */ 0xffff, /* 57a8 */ 0xffff, /* 57a9 */ 0xffff, /* 57aa */ 0xffff, /* 57ab */ 0xffff, /* 57ac */ 0xffff, /* 57ad */ 0xffff, /* 57ae */ 0xffff, /* 57af */ 0xffff, /* 57b0 */ 0xffff, /* 57b1 */ 0xffff, /* 57b2 */ 0xffff, /* 57b3 */ 0xffff, /* 57b4 */ 0xffff, /* 57b5 */ 0xffff, /* 57b6 */ 0xffff, /* 57b7 */ 0xffff, /* 57b8 */ 0xffff, /* 57b9 */ 0xffff, /* 57ba */ 0xffff, /* 57bb */ 0xffff, /* 57bc */ 0xffff, /* 57bd */ 0xffff, /* 57be */ 0xffff, /* 57bf */ 0xffff, /* 57c0 */ 0xffff, /* 57c1 */ 0xffff, /* 57c2 */ 0xffff, /* 57c3 */ 0xffff, /* 57c4 */ 0xffff, /* 57c5 */ 0xffff, /* 57c6 */ 0xffff, /* 57c7 */ 0xffff, /* 57c8 */ 0xffff, /* 57c9 */ 0xffff, /* 57ca */ 0xffff, /* 57cb */ 0xffff, /* 57cc */ 0xffff, /* 57cd */ 0xffff, /* 57ce */ 0xffff, /* 57cf */ 0xffff, /* 57d0 */ 0xffff, /* 57d1 */ 0xffff, /* 57d2 */ 0xffff, /* 57d3 */ 0xffff, /* 57d4 */ 0xffff, /* 57d5 */ 0xffff, /* 57d6 */ 0xffff, /* 57d7 */ 0xffff, /* 57d8 */ 0xffff, /* 57d9 */ 0xffff, /* 57da */ 0xffff, /* 57db */ 0xffff, /* 57dc */ 0xffff, /* 57dd */ 0xffff, /* 57de */ 0xffff, /* 57df */ 0xffff, /* 57e0 */ 0xffff, /* 57e1 */ 0xffff, /* 57e2 */ 0xffff, /* 57e3 */ 0xffff, /* 57e4 */ 0xffff, /* 57e5 */ 0xffff, /* 57e6 */ 0xffff, /* 57e7 */ 0xffff, /* 57e8 */ 0xffff, /* 57e9 */ 0xffff, /* 57ea */ 0xffff, /* 57eb */ 0xffff, /* 57ec */ 0xffff, /* 57ed */ 0xffff, /* 57ee */ 0xffff, /* 57ef */ 0xffff, /* 57f0 */ 0xffff, /* 57f1 */ 0xffff, /* 57f2 */ 0xffff, /* 57f3 */ 0xffff, /* 57f4 */ 0xffff, /* 57f5 */ 0xffff, /* 57f6 */ 0xffff, /* 57f7 */ 0xffff, /* 57f8 */ 0xffff, /* 57f9 */ 0xffff, /* 57fa */ 0xffff, /* 57fb */ 0xffff, /* 57fc */ 0xffff, /* 57fd */ 0xffff, /* 57fe */ 0xffff, /* 57ff */ 0xffff, /* 5800 */ 0xffff, /* 5801 */ 0xffff, /* 5802 */ 0xffff, /* 5803 */ 0xffff, /* 5804 */ 0xffff, /* 5805 */ 0xffff, /* 5806 */ 0xffff, /* 5807 */ 0xffff, /* 5808 */ 0xffff, /* 5809 */ 0xffff, /* 580a */ 0xffff, /* 580b */ 0xffff, /* 580c */ 0xffff, /* 580d */ 0xffff, /* 580e */ 0xffff, /* 580f */ 0xffff, /* 5810 */ 0xffff, /* 5811 */ 0xffff, /* 5812 */ 0xffff, /* 5813 */ 0xffff, /* 5814 */ 0xffff, /* 5815 */ 0xffff, /* 5816 */ 0xffff, /* 5817 */ 0xffff, /* 5818 */ 0xffff, /* 5819 */ 0xffff, /* 581a */ 0xffff, /* 581b */ 0xffff, /* 581c */ 0xffff, /* 581d */ 0xffff, /* 581e */ 0xffff, /* 581f */ 0xffff, /* 5820 */ 0xffff, /* 5821 */ 0xffff, /* 5822 */ 0xffff, /* 5823 */ 0xffff, /* 5824 */ 0xffff, /* 5825 */ 0xffff, /* 5826 */ 0xffff, /* 5827 */ 0xffff, /* 5828 */ 0xffff, /* 5829 */ 0xffff, /* 582a */ 0xffff, /* 582b */ 0xffff, /* 582c */ 0xffff, /* 582d */ 0xffff, /* 582e */ 0xffff, /* 582f */ 0xffff, /* 5830 */ 0xffff, /* 5831 */ 0xffff, /* 5832 */ 0xffff, /* 5833 */ 0xffff, /* 5834 */ 0xffff, /* 5835 */ 0xffff, /* 5836 */ 0xffff, /* 5837 */ 0xffff, /* 5838 */ 0xffff, /* 5839 */ 0xffff, /* 583a */ 0xffff, /* 583b */ 0xffff, /* 583c */ 0xffff, /* 583d */ 0xffff, /* 583e */ 0xffff, /* 583f */ 0xffff, /* 5840 */ 0xffff, /* 5841 */ 0xffff, /* 5842 */ 0xffff, /* 5843 */ 0xffff, /* 5844 */ 0xffff, /* 5845 */ 0xffff, /* 5846 */ 0xffff, /* 5847 */ 0xffff, /* 5848 */ 0xffff, /* 5849 */ 0xffff, /* 584a */ 0xffff, /* 584b */ 0xffff, /* 584c */ 0xffff, /* 584d */ 0xffff, /* 584e */ 0xffff, /* 584f */ 0xffff, /* 5850 */ 0xffff, /* 5851 */ 0xffff, /* 5852 */ 0xffff, /* 5853 */ 0xffff, /* 5854 */ 0xffff, /* 5855 */ 0xffff, /* 5856 */ 0xffff, /* 5857 */ 0xffff, /* 5858 */ 0xffff, /* 5859 */ 0xffff, /* 585a */ 0xffff, /* 585b */ 0xffff, /* 585c */ 0xffff, /* 585d */ 0xffff, /* 585e */ 0xffff, /* 585f */ 0xffff, /* 5860 */ 0xffff, /* 5861 */ 0xffff, /* 5862 */ 0xffff, /* 5863 */ 0xffff, /* 5864 */ 0xffff, /* 5865 */ 0xffff, /* 5866 */ 0xffff, /* 5867 */ 0xffff, /* 5868 */ 0xffff, /* 5869 */ 0xffff, /* 586a */ 0xffff, /* 586b */ 0xffff, /* 586c */ 0xffff, /* 586d */ 0xffff, /* 586e */ 0xffff, /* 586f */ 0xffff, /* 5870 */ 0xffff, /* 5871 */ 0xffff, /* 5872 */ 0xffff, /* 5873 */ 0xffff, /* 5874 */ 0xffff, /* 5875 */ 0xffff, /* 5876 */ 0xffff, /* 5877 */ 0xffff, /* 5878 */ 0xffff, /* 5879 */ 0xffff, /* 587a */ 0xffff, /* 587b */ 0xffff, /* 587c */ 0xffff, /* 587d */ 0xffff, /* 587e */ 0xffff, /* 587f */ 0xffff, /* 5880 */ 0xffff, /* 5881 */ 0xffff, /* 5882 */ 0xffff, /* 5883 */ 0xffff, /* 5884 */ 0xffff, /* 5885 */ 0xffff, /* 5886 */ 0xffff, /* 5887 */ 0xffff, /* 5888 */ 0xffff, /* 5889 */ 0xffff, /* 588a */ 0xffff, /* 588b */ 0xffff, /* 588c */ 0xffff, /* 588d */ 0xffff, /* 588e */ 0xffff, /* 588f */ 0xffff, /* 5890 */ 0xffff, /* 5891 */ 0xffff, /* 5892 */ 0xffff, /* 5893 */ 0xffff, /* 5894 */ 0xffff, /* 5895 */ 0xffff, /* 5896 */ 0xffff, /* 5897 */ 0xffff, /* 5898 */ 0xffff, /* 5899 */ 0xffff, /* 589a */ 0xffff, /* 589b */ 0xffff, /* 589c */ 0xffff, /* 589d */ 0xffff, /* 589e */ 0xffff, /* 589f */ 0xffff, /* 58a0 */ 0xffff, /* 58a1 */ 0xffff, /* 58a2 */ 0xffff, /* 58a3 */ 0xffff, /* 58a4 */ 0xffff, /* 58a5 */ 0xffff, /* 58a6 */ 0xffff, /* 58a7 */ 0xffff, /* 58a8 */ 0xffff, /* 58a9 */ 0xffff, /* 58aa */ 0xffff, /* 58ab */ 0xffff, /* 58ac */ 0xffff, /* 58ad */ 0xffff, /* 58ae */ 0xffff, /* 58af */ 0xffff, /* 58b0 */ 0xffff, /* 58b1 */ 0xffff, /* 58b2 */ 0xffff, /* 58b3 */ 0xffff, /* 58b4 */ 0xffff, /* 58b5 */ 0xffff, /* 58b6 */ 0xffff, /* 58b7 */ 0xffff, /* 58b8 */ 0xffff, /* 58b9 */ 0xffff, /* 58ba */ 0xffff, /* 58bb */ 0xffff, /* 58bc */ 0xffff, /* 58bd */ 0xffff, /* 58be */ 0xffff, /* 58bf */ 0xffff, /* 58c0 */ 0xffff, /* 58c1 */ 0xffff, /* 58c2 */ 0xffff, /* 58c3 */ 0xffff, /* 58c4 */ 0xffff, /* 58c5 */ 0xffff, /* 58c6 */ 0xffff, /* 58c7 */ 0xffff, /* 58c8 */ 0xffff, /* 58c9 */ 0xffff, /* 58ca */ 0xffff, /* 58cb */ 0xffff, /* 58cc */ 0xffff, /* 58cd */ 0xffff, /* 58ce */ 0xffff, /* 58cf */ 0xffff, /* 58d0 */ 0xffff, /* 58d1 */ 0xffff, /* 58d2 */ 0xffff, /* 58d3 */ 0xffff, /* 58d4 */ 0xffff, /* 58d5 */ 0xffff, /* 58d6 */ 0xffff, /* 58d7 */ 0xffff, /* 58d8 */ 0xffff, /* 58d9 */ 0xffff, /* 58da */ 0xffff, /* 58db */ 0xffff, /* 58dc */ 0xffff, /* 58dd */ 0xffff, /* 58de */ 0xffff, /* 58df */ 0xffff, /* 58e0 */ 0xffff, /* 58e1 */ 0xffff, /* 58e2 */ 0xffff, /* 58e3 */ 0xffff, /* 58e4 */ 0xffff, /* 58e5 */ 0xffff, /* 58e6 */ 0xffff, /* 58e7 */ 0xffff, /* 58e8 */ 0xffff, /* 58e9 */ 0xffff, /* 58ea */ 0xffff, /* 58eb */ 0xffff, /* 58ec */ 0xffff, /* 58ed */ 0xffff, /* 58ee */ 0xffff, /* 58ef */ 0xffff, /* 58f0 */ 0xffff, /* 58f1 */ 0xffff, /* 58f2 */ 0xffff, /* 58f3 */ 0xffff, /* 58f4 */ 0xffff, /* 58f5 */ 0xffff, /* 58f6 */ 0xffff, /* 58f7 */ 0xffff, /* 58f8 */ 0xffff, /* 58f9 */ 0xffff, /* 58fa */ 0xffff, /* 58fb */ 0xffff, /* 58fc */ 0xffff, /* 58fd */ 0xffff, /* 58fe */ 0xffff, /* 58ff */ 0xffff, /* 5900 */ 0xffff, /* 5901 */ 0xffff, /* 5902 */ 0xffff, /* 5903 */ 0xffff, /* 5904 */ 0xffff, /* 5905 */ 0xffff, /* 5906 */ 0xffff, /* 5907 */ 0xffff, /* 5908 */ 0xffff, /* 5909 */ 0xffff, /* 590a */ 0xffff, /* 590b */ 0xffff, /* 590c */ 0xffff, /* 590d */ 0xffff, /* 590e */ 0xffff, /* 590f */ 0xffff, /* 5910 */ 0xffff, /* 5911 */ 0xffff, /* 5912 */ 0xffff, /* 5913 */ 0xffff, /* 5914 */ 0xffff, /* 5915 */ 0xffff, /* 5916 */ 0xffff, /* 5917 */ 0xffff, /* 5918 */ 0xffff, /* 5919 */ 0xffff, /* 591a */ 0xffff, /* 591b */ 0xffff, /* 591c */ 0xffff, /* 591d */ 0xffff, /* 591e */ 0xffff, /* 591f */ 0xffff, /* 5920 */ 0xffff, /* 5921 */ 0xffff, /* 5922 */ 0xffff, /* 5923 */ 0xffff, /* 5924 */ 0xffff, /* 5925 */ 0xffff, /* 5926 */ 0xffff, /* 5927 */ 0xffff, /* 5928 */ 0xffff, /* 5929 */ 0xffff, /* 592a */ 0xffff, /* 592b */ 0xffff, /* 592c */ 0xffff, /* 592d */ 0xffff, /* 592e */ 0xffff, /* 592f */ 0xffff, /* 5930 */ 0xffff, /* 5931 */ 0xffff, /* 5932 */ 0xffff, /* 5933 */ 0xffff, /* 5934 */ 0xffff, /* 5935 */ 0xffff, /* 5936 */ 0xffff, /* 5937 */ 0xffff, /* 5938 */ 0xffff, /* 5939 */ 0xffff, /* 593a */ 0xffff, /* 593b */ 0xffff, /* 593c */ 0xffff, /* 593d */ 0xffff, /* 593e */ 0xffff, /* 593f */ 0xffff, /* 5940 */ 0xffff, /* 5941 */ 0xffff, /* 5942 */ 0xffff, /* 5943 */ 0xffff, /* 5944 */ 0xffff, /* 5945 */ 0xffff, /* 5946 */ 0xffff, /* 5947 */ 0xffff, /* 5948 */ 0xffff, /* 5949 */ 0xffff, /* 594a */ 0xffff, /* 594b */ 0xffff, /* 594c */ 0xffff, /* 594d */ 0xffff, /* 594e */ 0xffff, /* 594f */ 0xffff, /* 5950 */ 0xffff, /* 5951 */ 0xffff, /* 5952 */ 0xffff, /* 5953 */ 0xffff, /* 5954 */ 0xffff, /* 5955 */ 0xffff, /* 5956 */ 0xffff, /* 5957 */ 0xffff, /* 5958 */ 0xffff, /* 5959 */ 0xffff, /* 595a */ 0xffff, /* 595b */ 0xffff, /* 595c */ 0xffff, /* 595d */ 0xffff, /* 595e */ 0xffff, /* 595f */ 0xffff, /* 5960 */ 0xffff, /* 5961 */ 0xffff, /* 5962 */ 0xffff, /* 5963 */ 0xffff, /* 5964 */ 0xffff, /* 5965 */ 0xffff, /* 5966 */ 0xffff, /* 5967 */ 0xffff, /* 5968 */ 0xffff, /* 5969 */ 0xffff, /* 596a */ 0xffff, /* 596b */ 0xffff, /* 596c */ 0xffff, /* 596d */ 0xffff, /* 596e */ 0xffff, /* 596f */ 0xffff, /* 5970 */ 0xffff, /* 5971 */ 0xffff, /* 5972 */ 0xffff, /* 5973 */ 0xffff, /* 5974 */ 0xffff, /* 5975 */ 0xffff, /* 5976 */ 0xffff, /* 5977 */ 0xffff, /* 5978 */ 0xffff, /* 5979 */ 0xffff, /* 597a */ 0xffff, /* 597b */ 0xffff, /* 597c */ 0xffff, /* 597d */ 0xffff, /* 597e */ 0xffff, /* 597f */ 0xffff, /* 5980 */ 0xffff, /* 5981 */ 0xffff, /* 5982 */ 0xffff, /* 5983 */ 0xffff, /* 5984 */ 0xffff, /* 5985 */ 0xffff, /* 5986 */ 0xffff, /* 5987 */ 0xffff, /* 5988 */ 0xffff, /* 5989 */ 0xffff, /* 598a */ 0xffff, /* 598b */ 0xffff, /* 598c */ 0xffff, /* 598d */ 0xffff, /* 598e */ 0xffff, /* 598f */ 0xffff, /* 5990 */ 0xffff, /* 5991 */ 0xffff, /* 5992 */ 0xffff, /* 5993 */ 0xffff, /* 5994 */ 0xffff, /* 5995 */ 0xffff, /* 5996 */ 0xffff, /* 5997 */ 0xffff, /* 5998 */ 0xffff, /* 5999 */ 0xffff, /* 599a */ 0xffff, /* 599b */ 0xffff, /* 599c */ 0xffff, /* 599d */ 0xffff, /* 599e */ 0xffff, /* 599f */ 0xffff, /* 59a0 */ 0xffff, /* 59a1 */ 0xffff, /* 59a2 */ 0xffff, /* 59a3 */ 0xffff, /* 59a4 */ 0xffff, /* 59a5 */ 0xffff, /* 59a6 */ 0xffff, /* 59a7 */ 0xffff, /* 59a8 */ 0xffff, /* 59a9 */ 0xffff, /* 59aa */ 0xffff, /* 59ab */ 0xffff, /* 59ac */ 0xffff, /* 59ad */ 0xffff, /* 59ae */ 0xffff, /* 59af */ 0xffff, /* 59b0 */ 0xffff, /* 59b1 */ 0xffff, /* 59b2 */ 0xffff, /* 59b3 */ 0xffff, /* 59b4 */ 0xffff, /* 59b5 */ 0xffff, /* 59b6 */ 0xffff, /* 59b7 */ 0xffff, /* 59b8 */ 0xffff, /* 59b9 */ 0xffff, /* 59ba */ 0xffff, /* 59bb */ 0xffff, /* 59bc */ 0xffff, /* 59bd */ 0xffff, /* 59be */ 0xffff, /* 59bf */ 0xffff, /* 59c0 */ 0xffff, /* 59c1 */ 0xffff, /* 59c2 */ 0xffff, /* 59c3 */ 0xffff, /* 59c4 */ 0xffff, /* 59c5 */ 0xffff, /* 59c6 */ 0xffff, /* 59c7 */ 0xffff, /* 59c8 */ 0xffff, /* 59c9 */ 0xffff, /* 59ca */ 0xffff, /* 59cb */ 0xffff, /* 59cc */ 0xffff, /* 59cd */ 0xffff, /* 59ce */ 0xffff, /* 59cf */ 0xffff, /* 59d0 */ 0xffff, /* 59d1 */ 0xffff, /* 59d2 */ 0xffff, /* 59d3 */ 0xffff, /* 59d4 */ 0xffff, /* 59d5 */ 0xffff, /* 59d6 */ 0xffff, /* 59d7 */ 0xffff, /* 59d8 */ 0xffff, /* 59d9 */ 0xffff, /* 59da */ 0xffff, /* 59db */ 0xffff, /* 59dc */ 0xffff, /* 59dd */ 0xffff, /* 59de */ 0xffff, /* 59df */ 0xffff, /* 59e0 */ 0xffff, /* 59e1 */ 0xffff, /* 59e2 */ 0xffff, /* 59e3 */ 0xffff, /* 59e4 */ 0xffff, /* 59e5 */ 0xffff, /* 59e6 */ 0xffff, /* 59e7 */ 0xffff, /* 59e8 */ 0xffff, /* 59e9 */ 0xffff, /* 59ea */ 0xffff, /* 59eb */ 0xffff, /* 59ec */ 0xffff, /* 59ed */ 0xffff, /* 59ee */ 0xffff, /* 59ef */ 0xffff, /* 59f0 */ 0xffff, /* 59f1 */ 0xffff, /* 59f2 */ 0xffff, /* 59f3 */ 0xffff, /* 59f4 */ 0xffff, /* 59f5 */ 0xffff, /* 59f6 */ 0xffff, /* 59f7 */ 0xffff, /* 59f8 */ 0xffff, /* 59f9 */ 0xffff, /* 59fa */ 0xffff, /* 59fb */ 0xffff, /* 59fc */ 0xffff, /* 59fd */ 0xffff, /* 59fe */ 0xffff, /* 59ff */ 0xffff, /* 5a00 */ 0xffff, /* 5a01 */ 0xffff, /* 5a02 */ 0xffff, /* 5a03 */ 0xffff, /* 5a04 */ 0xffff, /* 5a05 */ 0xffff, /* 5a06 */ 0xffff, /* 5a07 */ 0xffff, /* 5a08 */ 0xffff, /* 5a09 */ 0xffff, /* 5a0a */ 0xffff, /* 5a0b */ 0xffff, /* 5a0c */ 0xffff, /* 5a0d */ 0xffff, /* 5a0e */ 0xffff, /* 5a0f */ 0xffff, /* 5a10 */ 0xffff, /* 5a11 */ 0xffff, /* 5a12 */ 0xffff, /* 5a13 */ 0xffff, /* 5a14 */ 0xffff, /* 5a15 */ 0xffff, /* 5a16 */ 0xffff, /* 5a17 */ 0xffff, /* 5a18 */ 0xffff, /* 5a19 */ 0xffff, /* 5a1a */ 0xffff, /* 5a1b */ 0xffff, /* 5a1c */ 0xffff, /* 5a1d */ 0xffff, /* 5a1e */ 0xffff, /* 5a1f */ 0xffff, /* 5a20 */ 0xffff, /* 5a21 */ 0xffff, /* 5a22 */ 0xffff, /* 5a23 */ 0xffff, /* 5a24 */ 0xffff, /* 5a25 */ 0xffff, /* 5a26 */ 0xffff, /* 5a27 */ 0xffff, /* 5a28 */ 0xffff, /* 5a29 */ 0xffff, /* 5a2a */ 0xffff, /* 5a2b */ 0xffff, /* 5a2c */ 0xffff, /* 5a2d */ 0xffff, /* 5a2e */ 0xffff, /* 5a2f */ 0xffff, /* 5a30 */ 0xffff, /* 5a31 */ 0xffff, /* 5a32 */ 0xffff, /* 5a33 */ 0xffff, /* 5a34 */ 0xffff, /* 5a35 */ 0xffff, /* 5a36 */ 0xffff, /* 5a37 */ 0xffff, /* 5a38 */ 0xffff, /* 5a39 */ 0xffff, /* 5a3a */ 0xffff, /* 5a3b */ 0xffff, /* 5a3c */ 0xffff, /* 5a3d */ 0xffff, /* 5a3e */ 0xffff, /* 5a3f */ 0xffff, /* 5a40 */ 0xffff, /* 5a41 */ 0xffff, /* 5a42 */ 0xffff, /* 5a43 */ 0xffff, /* 5a44 */ 0xffff, /* 5a45 */ 0xffff, /* 5a46 */ 0xffff, /* 5a47 */ 0xffff, /* 5a48 */ 0xffff, /* 5a49 */ 0xffff, /* 5a4a */ 0xffff, /* 5a4b */ 0xffff, /* 5a4c */ 0xffff, /* 5a4d */ 0xffff, /* 5a4e */ 0xffff, /* 5a4f */ 0xffff, /* 5a50 */ 0xffff, /* 5a51 */ 0xffff, /* 5a52 */ 0xffff, /* 5a53 */ 0xffff, /* 5a54 */ 0xffff, /* 5a55 */ 0xffff, /* 5a56 */ 0xffff, /* 5a57 */ 0xffff, /* 5a58 */ 0xffff, /* 5a59 */ 0xffff, /* 5a5a */ 0xffff, /* 5a5b */ 0xffff, /* 5a5c */ 0xffff, /* 5a5d */ 0xffff, /* 5a5e */ 0xffff, /* 5a5f */ 0xffff, /* 5a60 */ 0xffff, /* 5a61 */ 0xffff, /* 5a62 */ 0xffff, /* 5a63 */ 0xffff, /* 5a64 */ 0xffff, /* 5a65 */ 0xffff, /* 5a66 */ 0xffff, /* 5a67 */ 0xffff, /* 5a68 */ 0xffff, /* 5a69 */ 0xffff, /* 5a6a */ 0xffff, /* 5a6b */ 0xffff, /* 5a6c */ 0xffff, /* 5a6d */ 0xffff, /* 5a6e */ 0xffff, /* 5a6f */ 0xffff, /* 5a70 */ 0xffff, /* 5a71 */ 0xffff, /* 5a72 */ 0xffff, /* 5a73 */ 0xffff, /* 5a74 */ 0xffff, /* 5a75 */ 0xffff, /* 5a76 */ 0xffff, /* 5a77 */ 0xffff, /* 5a78 */ 0xffff, /* 5a79 */ 0xffff, /* 5a7a */ 0xffff, /* 5a7b */ 0xffff, /* 5a7c */ 0xffff, /* 5a7d */ 0xffff, /* 5a7e */ 0xffff, /* 5a7f */ 0xffff, /* 5a80 */ 0xffff, /* 5a81 */ 0xffff, /* 5a82 */ 0xffff, /* 5a83 */ 0xffff, /* 5a84 */ 0xffff, /* 5a85 */ 0xffff, /* 5a86 */ 0xffff, /* 5a87 */ 0xffff, /* 5a88 */ 0xffff, /* 5a89 */ 0xffff, /* 5a8a */ 0xffff, /* 5a8b */ 0xffff, /* 5a8c */ 0xffff, /* 5a8d */ 0xffff, /* 5a8e */ 0xffff, /* 5a8f */ 0xffff, /* 5a90 */ 0xffff, /* 5a91 */ 0xffff, /* 5a92 */ 0xffff, /* 5a93 */ 0xffff, /* 5a94 */ 0xffff, /* 5a95 */ 0xffff, /* 5a96 */ 0xffff, /* 5a97 */ 0xffff, /* 5a98 */ 0xffff, /* 5a99 */ 0xffff, /* 5a9a */ 0xffff, /* 5a9b */ 0xffff, /* 5a9c */ 0xffff, /* 5a9d */ 0xffff, /* 5a9e */ 0xffff, /* 5a9f */ 0xffff, /* 5aa0 */ 0xffff, /* 5aa1 */ 0xffff, /* 5aa2 */ 0xffff, /* 5aa3 */ 0xffff, /* 5aa4 */ 0xffff, /* 5aa5 */ 0xffff, /* 5aa6 */ 0xffff, /* 5aa7 */ 0xffff, /* 5aa8 */ 0xffff, /* 5aa9 */ 0xffff, /* 5aaa */ 0xffff, /* 5aab */ 0xffff, /* 5aac */ 0xffff, /* 5aad */ 0xffff, /* 5aae */ 0xffff, /* 5aaf */ 0xffff, /* 5ab0 */ 0xffff, /* 5ab1 */ 0xffff, /* 5ab2 */ 0xffff, /* 5ab3 */ 0xffff, /* 5ab4 */ 0xffff, /* 5ab5 */ 0xffff, /* 5ab6 */ 0xffff, /* 5ab7 */ 0xffff, /* 5ab8 */ 0xffff, /* 5ab9 */ 0xffff, /* 5aba */ 0xffff, /* 5abb */ 0xffff, /* 5abc */ 0xffff, /* 5abd */ 0xffff, /* 5abe */ 0xffff, /* 5abf */ 0xffff, /* 5ac0 */ 0xffff, /* 5ac1 */ 0xffff, /* 5ac2 */ 0xffff, /* 5ac3 */ 0xffff, /* 5ac4 */ 0xffff, /* 5ac5 */ 0xffff, /* 5ac6 */ 0xffff, /* 5ac7 */ 0xffff, /* 5ac8 */ 0xffff, /* 5ac9 */ 0xffff, /* 5aca */ 0xffff, /* 5acb */ 0xffff, /* 5acc */ 0xffff, /* 5acd */ 0xffff, /* 5ace */ 0xffff, /* 5acf */ 0xffff, /* 5ad0 */ 0xffff, /* 5ad1 */ 0xffff, /* 5ad2 */ 0xffff, /* 5ad3 */ 0xffff, /* 5ad4 */ 0xffff, /* 5ad5 */ 0xffff, /* 5ad6 */ 0xffff, /* 5ad7 */ 0xffff, /* 5ad8 */ 0xffff, /* 5ad9 */ 0xffff, /* 5ada */ 0xffff, /* 5adb */ 0xffff, /* 5adc */ 0xffff, /* 5add */ 0xffff, /* 5ade */ 0xffff, /* 5adf */ 0xffff, /* 5ae0 */ 0xffff, /* 5ae1 */ 0xffff, /* 5ae2 */ 0xffff, /* 5ae3 */ 0xffff, /* 5ae4 */ 0xffff, /* 5ae5 */ 0xffff, /* 5ae6 */ 0xffff, /* 5ae7 */ 0xffff, /* 5ae8 */ 0xffff, /* 5ae9 */ 0xffff, /* 5aea */ 0xffff, /* 5aeb */ 0xffff, /* 5aec */ 0xffff, /* 5aed */ 0xffff, /* 5aee */ 0xffff, /* 5aef */ 0xffff, /* 5af0 */ 0xffff, /* 5af1 */ 0xffff, /* 5af2 */ 0xffff, /* 5af3 */ 0xffff, /* 5af4 */ 0xffff, /* 5af5 */ 0xffff, /* 5af6 */ 0xffff, /* 5af7 */ 0xffff, /* 5af8 */ 0xffff, /* 5af9 */ 0xffff, /* 5afa */ 0xffff, /* 5afb */ 0xffff, /* 5afc */ 0xffff, /* 5afd */ 0xffff, /* 5afe */ 0xffff, /* 5aff */ 0xffff, /* 5b00 */ 0xffff, /* 5b01 */ 0xffff, /* 5b02 */ 0xffff, /* 5b03 */ 0xffff, /* 5b04 */ 0xffff, /* 5b05 */ 0xffff, /* 5b06 */ 0xffff, /* 5b07 */ 0xffff, /* 5b08 */ 0xffff, /* 5b09 */ 0xffff, /* 5b0a */ 0xffff, /* 5b0b */ 0xffff, /* 5b0c */ 0xffff, /* 5b0d */ 0xffff, /* 5b0e */ 0xffff, /* 5b0f */ 0xffff, /* 5b10 */ 0xffff, /* 5b11 */ 0xffff, /* 5b12 */ 0xffff, /* 5b13 */ 0xffff, /* 5b14 */ 0xffff, /* 5b15 */ 0xffff, /* 5b16 */ 0xffff, /* 5b17 */ 0xffff, /* 5b18 */ 0xffff, /* 5b19 */ 0xffff, /* 5b1a */ 0xffff, /* 5b1b */ 0xffff, /* 5b1c */ 0xffff, /* 5b1d */ 0xffff, /* 5b1e */ 0xffff, /* 5b1f */ 0xffff, /* 5b20 */ 0xffff, /* 5b21 */ 0xffff, /* 5b22 */ 0xffff, /* 5b23 */ 0xffff, /* 5b24 */ 0xffff, /* 5b25 */ 0xffff, /* 5b26 */ 0xffff, /* 5b27 */ 0xffff, /* 5b28 */ 0xffff, /* 5b29 */ 0xffff, /* 5b2a */ 0xffff, /* 5b2b */ 0xffff, /* 5b2c */ 0xffff, /* 5b2d */ 0xffff, /* 5b2e */ 0xffff, /* 5b2f */ 0xffff, /* 5b30 */ 0xffff, /* 5b31 */ 0xffff, /* 5b32 */ 0xffff, /* 5b33 */ 0xffff, /* 5b34 */ 0xffff, /* 5b35 */ 0xffff, /* 5b36 */ 0xffff, /* 5b37 */ 0xffff, /* 5b38 */ 0xffff, /* 5b39 */ 0xffff, /* 5b3a */ 0xffff, /* 5b3b */ 0xffff, /* 5b3c */ 0xffff, /* 5b3d */ 0xffff, /* 5b3e */ 0xffff, /* 5b3f */ 0xffff, /* 5b40 */ 0xffff, /* 5b41 */ 0xffff, /* 5b42 */ 0xffff, /* 5b43 */ 0xffff, /* 5b44 */ 0xffff, /* 5b45 */ 0xffff, /* 5b46 */ 0xffff, /* 5b47 */ 0xffff, /* 5b48 */ 0xffff, /* 5b49 */ 0xffff, /* 5b4a */ 0xffff, /* 5b4b */ 0xffff, /* 5b4c */ 0xffff, /* 5b4d */ 0xffff, /* 5b4e */ 0xffff, /* 5b4f */ 0xffff, /* 5b50 */ 0xffff, /* 5b51 */ 0xffff, /* 5b52 */ 0xffff, /* 5b53 */ 0xffff, /* 5b54 */ 0xffff, /* 5b55 */ 0xffff, /* 5b56 */ 0xffff, /* 5b57 */ 0xffff, /* 5b58 */ 0xffff, /* 5b59 */ 0xffff, /* 5b5a */ 0xffff, /* 5b5b */ 0xffff, /* 5b5c */ 0xffff, /* 5b5d */ 0xffff, /* 5b5e */ 0xffff, /* 5b5f */ 0xffff, /* 5b60 */ 0xffff, /* 5b61 */ 0xffff, /* 5b62 */ 0xffff, /* 5b63 */ 0xffff, /* 5b64 */ 0xffff, /* 5b65 */ 0xffff, /* 5b66 */ 0xffff, /* 5b67 */ 0xffff, /* 5b68 */ 0xffff, /* 5b69 */ 0xffff, /* 5b6a */ 0xffff, /* 5b6b */ 0xffff, /* 5b6c */ 0xffff, /* 5b6d */ 0xffff, /* 5b6e */ 0xffff, /* 5b6f */ 0xffff, /* 5b70 */ 0xffff, /* 5b71 */ 0xffff, /* 5b72 */ 0xffff, /* 5b73 */ 0xffff, /* 5b74 */ 0xffff, /* 5b75 */ 0xffff, /* 5b76 */ 0xffff, /* 5b77 */ 0xffff, /* 5b78 */ 0xffff, /* 5b79 */ 0xffff, /* 5b7a */ 0xffff, /* 5b7b */ 0xffff, /* 5b7c */ 0xffff, /* 5b7d */ 0xffff, /* 5b7e */ 0xffff, /* 5b7f */ 0xffff, /* 5b80 */ 0xffff, /* 5b81 */ 0xffff, /* 5b82 */ 0xffff, /* 5b83 */ 0xffff, /* 5b84 */ 0xffff, /* 5b85 */ 0xffff, /* 5b86 */ 0xffff, /* 5b87 */ 0xffff, /* 5b88 */ 0xffff, /* 5b89 */ 0xffff, /* 5b8a */ 0xffff, /* 5b8b */ 0xffff, /* 5b8c */ 0xffff, /* 5b8d */ 0xffff, /* 5b8e */ 0xffff, /* 5b8f */ 0xffff, /* 5b90 */ 0xffff, /* 5b91 */ 0xffff, /* 5b92 */ 0xffff, /* 5b93 */ 0xffff, /* 5b94 */ 0xffff, /* 5b95 */ 0xffff, /* 5b96 */ 0xffff, /* 5b97 */ 0xffff, /* 5b98 */ 0xffff, /* 5b99 */ 0xffff, /* 5b9a */ 0xffff, /* 5b9b */ 0xffff, /* 5b9c */ 0xffff, /* 5b9d */ 0xffff, /* 5b9e */ 0xffff, /* 5b9f */ 0xffff, /* 5ba0 */ 0xffff, /* 5ba1 */ 0xffff, /* 5ba2 */ 0xffff, /* 5ba3 */ 0xffff, /* 5ba4 */ 0xffff, /* 5ba5 */ 0xffff, /* 5ba6 */ 0xffff, /* 5ba7 */ 0xffff, /* 5ba8 */ 0xffff, /* 5ba9 */ 0xffff, /* 5baa */ 0xffff, /* 5bab */ 0xffff, /* 5bac */ 0xffff, /* 5bad */ 0xffff, /* 5bae */ 0xffff, /* 5baf */ 0xffff, /* 5bb0 */ 0xffff, /* 5bb1 */ 0xffff, /* 5bb2 */ 0xffff, /* 5bb3 */ 0xffff, /* 5bb4 */ 0xffff, /* 5bb5 */ 0xffff, /* 5bb6 */ 0xffff, /* 5bb7 */ 0xffff, /* 5bb8 */ 0xffff, /* 5bb9 */ 0xffff, /* 5bba */ 0xffff, /* 5bbb */ 0xffff, /* 5bbc */ 0xffff, /* 5bbd */ 0xffff, /* 5bbe */ 0xffff, /* 5bbf */ 0xffff, /* 5bc0 */ 0xffff, /* 5bc1 */ 0xffff, /* 5bc2 */ 0xffff, /* 5bc3 */ 0xffff, /* 5bc4 */ 0xffff, /* 5bc5 */ 0xffff, /* 5bc6 */ 0xffff, /* 5bc7 */ 0xffff, /* 5bc8 */ 0xffff, /* 5bc9 */ 0xffff, /* 5bca */ 0xffff, /* 5bcb */ 0xffff, /* 5bcc */ 0xffff, /* 5bcd */ 0xffff, /* 5bce */ 0xffff, /* 5bcf */ 0xffff, /* 5bd0 */ 0xffff, /* 5bd1 */ 0xffff, /* 5bd2 */ 0xffff, /* 5bd3 */ 0xffff, /* 5bd4 */ 0xffff, /* 5bd5 */ 0xffff, /* 5bd6 */ 0xffff, /* 5bd7 */ 0xffff, /* 5bd8 */ 0xffff, /* 5bd9 */ 0xffff, /* 5bda */ 0xffff, /* 5bdb */ 0xffff, /* 5bdc */ 0xffff, /* 5bdd */ 0xffff, /* 5bde */ 0xffff, /* 5bdf */ 0xffff, /* 5be0 */ 0xffff, /* 5be1 */ 0xffff, /* 5be2 */ 0xffff, /* 5be3 */ 0xffff, /* 5be4 */ 0xffff, /* 5be5 */ 0xffff, /* 5be6 */ 0xffff, /* 5be7 */ 0xffff, /* 5be8 */ 0xffff, /* 5be9 */ 0xffff, /* 5bea */ 0xffff, /* 5beb */ 0xffff, /* 5bec */ 0xffff, /* 5bed */ 0xffff, /* 5bee */ 0xffff, /* 5bef */ 0xffff, /* 5bf0 */ 0xffff, /* 5bf1 */ 0xffff, /* 5bf2 */ 0xffff, /* 5bf3 */ 0xffff, /* 5bf4 */ 0xffff, /* 5bf5 */ 0xffff, /* 5bf6 */ 0xffff, /* 5bf7 */ 0xffff, /* 5bf8 */ 0xffff, /* 5bf9 */ 0xffff, /* 5bfa */ 0xffff, /* 5bfb */ 0xffff, /* 5bfc */ 0xffff, /* 5bfd */ 0xffff, /* 5bfe */ 0xffff, /* 5bff */ 0xffff, /* 5c00 */ 0xffff, /* 5c01 */ 0xffff, /* 5c02 */ 0xffff, /* 5c03 */ 0xffff, /* 5c04 */ 0xffff, /* 5c05 */ 0xffff, /* 5c06 */ 0xffff, /* 5c07 */ 0xffff, /* 5c08 */ 0xffff, /* 5c09 */ 0xffff, /* 5c0a */ 0xffff, /* 5c0b */ 0xffff, /* 5c0c */ 0xffff, /* 5c0d */ 0xffff, /* 5c0e */ 0xffff, /* 5c0f */ 0xffff, /* 5c10 */ 0xffff, /* 5c11 */ 0xffff, /* 5c12 */ 0xffff, /* 5c13 */ 0xffff, /* 5c14 */ 0xffff, /* 5c15 */ 0xffff, /* 5c16 */ 0xffff, /* 5c17 */ 0xffff, /* 5c18 */ 0xffff, /* 5c19 */ 0xffff, /* 5c1a */ 0xffff, /* 5c1b */ 0xffff, /* 5c1c */ 0xffff, /* 5c1d */ 0xffff, /* 5c1e */ 0xffff, /* 5c1f */ 0xffff, /* 5c20 */ 0xffff, /* 5c21 */ 0xffff, /* 5c22 */ 0xffff, /* 5c23 */ 0xffff, /* 5c24 */ 0xffff, /* 5c25 */ 0xffff, /* 5c26 */ 0xffff, /* 5c27 */ 0xffff, /* 5c28 */ 0xffff, /* 5c29 */ 0xffff, /* 5c2a */ 0xffff, /* 5c2b */ 0xffff, /* 5c2c */ 0xffff, /* 5c2d */ 0xffff, /* 5c2e */ 0xffff, /* 5c2f */ 0xffff, /* 5c30 */ 0xffff, /* 5c31 */ 0xffff, /* 5c32 */ 0xffff, /* 5c33 */ 0xffff, /* 5c34 */ 0xffff, /* 5c35 */ 0xffff, /* 5c36 */ 0xffff, /* 5c37 */ 0xffff, /* 5c38 */ 0xffff, /* 5c39 */ 0xffff, /* 5c3a */ 0xffff, /* 5c3b */ 0xffff, /* 5c3c */ 0xffff, /* 5c3d */ 0xffff, /* 5c3e */ 0xffff, /* 5c3f */ 0xffff, /* 5c40 */ 0xffff, /* 5c41 */ 0xffff, /* 5c42 */ 0xffff, /* 5c43 */ 0xffff, /* 5c44 */ 0xffff, /* 5c45 */ 0xffff, /* 5c46 */ 0xffff, /* 5c47 */ 0xffff, /* 5c48 */ 0xffff, /* 5c49 */ 0xffff, /* 5c4a */ 0xffff, /* 5c4b */ 0xffff, /* 5c4c */ 0xffff, /* 5c4d */ 0xffff, /* 5c4e */ 0xffff, /* 5c4f */ 0xffff, /* 5c50 */ 0xffff, /* 5c51 */ 0xffff, /* 5c52 */ 0xffff, /* 5c53 */ 0xffff, /* 5c54 */ 0xffff, /* 5c55 */ 0xffff, /* 5c56 */ 0xffff, /* 5c57 */ 0xffff, /* 5c58 */ 0xffff, /* 5c59 */ 0xffff, /* 5c5a */ 0xffff, /* 5c5b */ 0xffff, /* 5c5c */ 0xffff, /* 5c5d */ 0xffff, /* 5c5e */ 0xffff, /* 5c5f */ 0xffff, /* 5c60 */ 0xffff, /* 5c61 */ 0xffff, /* 5c62 */ 0xffff, /* 5c63 */ 0xffff, /* 5c64 */ 0xffff, /* 5c65 */ 0xffff, /* 5c66 */ 0xffff, /* 5c67 */ 0xffff, /* 5c68 */ 0xffff, /* 5c69 */ 0xffff, /* 5c6a */ 0xffff, /* 5c6b */ 0xffff, /* 5c6c */ 0xffff, /* 5c6d */ 0xffff, /* 5c6e */ 0xffff, /* 5c6f */ 0xffff, /* 5c70 */ 0xffff, /* 5c71 */ 0xffff, /* 5c72 */ 0xffff, /* 5c73 */ 0xffff, /* 5c74 */ 0xffff, /* 5c75 */ 0xffff, /* 5c76 */ 0xffff, /* 5c77 */ 0xffff, /* 5c78 */ 0xffff, /* 5c79 */ 0xffff, /* 5c7a */ 0xffff, /* 5c7b */ 0xffff, /* 5c7c */ 0xffff, /* 5c7d */ 0xffff, /* 5c7e */ 0xffff, /* 5c7f */ 0xffff, /* 5c80 */ 0xffff, /* 5c81 */ 0xffff, /* 5c82 */ 0xffff, /* 5c83 */ 0xffff, /* 5c84 */ 0xffff, /* 5c85 */ 0xffff, /* 5c86 */ 0xffff, /* 5c87 */ 0xffff, /* 5c88 */ 0xffff, /* 5c89 */ 0xffff, /* 5c8a */ 0xffff, /* 5c8b */ 0xffff, /* 5c8c */ 0xffff, /* 5c8d */ 0xffff, /* 5c8e */ 0xffff, /* 5c8f */ 0xffff, /* 5c90 */ 0xffff, /* 5c91 */ 0xffff, /* 5c92 */ 0xffff, /* 5c93 */ 0xffff, /* 5c94 */ 0xffff, /* 5c95 */ 0xffff, /* 5c96 */ 0xffff, /* 5c97 */ 0xffff, /* 5c98 */ 0xffff, /* 5c99 */ 0xffff, /* 5c9a */ 0xffff, /* 5c9b */ 0xffff, /* 5c9c */ 0xffff, /* 5c9d */ 0xffff, /* 5c9e */ 0xffff, /* 5c9f */ 0xffff, /* 5ca0 */ 0xffff, /* 5ca1 */ 0xffff, /* 5ca2 */ 0xffff, /* 5ca3 */ 0xffff, /* 5ca4 */ 0xffff, /* 5ca5 */ 0xffff, /* 5ca6 */ 0xffff, /* 5ca7 */ 0xffff, /* 5ca8 */ 0xffff, /* 5ca9 */ 0xffff, /* 5caa */ 0xffff, /* 5cab */ 0xffff, /* 5cac */ 0xffff, /* 5cad */ 0xffff, /* 5cae */ 0xffff, /* 5caf */ 0xffff, /* 5cb0 */ 0xffff, /* 5cb1 */ 0xffff, /* 5cb2 */ 0xffff, /* 5cb3 */ 0xffff, /* 5cb4 */ 0xffff, /* 5cb5 */ 0xffff, /* 5cb6 */ 0xffff, /* 5cb7 */ 0xffff, /* 5cb8 */ 0xffff, /* 5cb9 */ 0xffff, /* 5cba */ 0xffff, /* 5cbb */ 0xffff, /* 5cbc */ 0xffff, /* 5cbd */ 0xffff, /* 5cbe */ 0xffff, /* 5cbf */ 0xffff, /* 5cc0 */ 0xffff, /* 5cc1 */ 0xffff, /* 5cc2 */ 0xffff, /* 5cc3 */ 0xffff, /* 5cc4 */ 0xffff, /* 5cc5 */ 0xffff, /* 5cc6 */ 0xffff, /* 5cc7 */ 0xffff, /* 5cc8 */ 0xffff, /* 5cc9 */ 0xffff, /* 5cca */ 0xffff, /* 5ccb */ 0xffff, /* 5ccc */ 0xffff, /* 5ccd */ 0xffff, /* 5cce */ 0xffff, /* 5ccf */ 0xffff, /* 5cd0 */ 0xffff, /* 5cd1 */ 0xffff, /* 5cd2 */ 0xffff, /* 5cd3 */ 0xffff, /* 5cd4 */ 0xffff, /* 5cd5 */ 0xffff, /* 5cd6 */ 0xffff, /* 5cd7 */ 0xffff, /* 5cd8 */ 0xffff, /* 5cd9 */ 0xffff, /* 5cda */ 0xffff, /* 5cdb */ 0xffff, /* 5cdc */ 0xffff, /* 5cdd */ 0xffff, /* 5cde */ 0xffff, /* 5cdf */ 0xffff, /* 5ce0 */ 0xffff, /* 5ce1 */ 0xffff, /* 5ce2 */ 0xffff, /* 5ce3 */ 0xffff, /* 5ce4 */ 0xffff, /* 5ce5 */ 0xffff, /* 5ce6 */ 0xffff, /* 5ce7 */ 0xffff, /* 5ce8 */ 0xffff, /* 5ce9 */ 0xffff, /* 5cea */ 0xffff, /* 5ceb */ 0xffff, /* 5cec */ 0xffff, /* 5ced */ 0xffff, /* 5cee */ 0xffff, /* 5cef */ 0xffff, /* 5cf0 */ 0xffff, /* 5cf1 */ 0xffff, /* 5cf2 */ 0xffff, /* 5cf3 */ 0xffff, /* 5cf4 */ 0xffff, /* 5cf5 */ 0xffff, /* 5cf6 */ 0xffff, /* 5cf7 */ 0xffff, /* 5cf8 */ 0xffff, /* 5cf9 */ 0xffff, /* 5cfa */ 0xffff, /* 5cfb */ 0xffff, /* 5cfc */ 0xffff, /* 5cfd */ 0xffff, /* 5cfe */ 0xffff, /* 5cff */ 0xffff, /* 5d00 */ 0xffff, /* 5d01 */ 0xffff, /* 5d02 */ 0xffff, /* 5d03 */ 0xffff, /* 5d04 */ 0xffff, /* 5d05 */ 0xffff, /* 5d06 */ 0xffff, /* 5d07 */ 0xffff, /* 5d08 */ 0xffff, /* 5d09 */ 0xffff, /* 5d0a */ 0xffff, /* 5d0b */ 0xffff, /* 5d0c */ 0xffff, /* 5d0d */ 0xffff, /* 5d0e */ 0xffff, /* 5d0f */ 0xffff, /* 5d10 */ 0xffff, /* 5d11 */ 0xffff, /* 5d12 */ 0xffff, /* 5d13 */ 0xffff, /* 5d14 */ 0xffff, /* 5d15 */ 0xffff, /* 5d16 */ 0xffff, /* 5d17 */ 0xffff, /* 5d18 */ 0xffff, /* 5d19 */ 0xffff, /* 5d1a */ 0xffff, /* 5d1b */ 0xffff, /* 5d1c */ 0xffff, /* 5d1d */ 0xffff, /* 5d1e */ 0xffff, /* 5d1f */ 0xffff, /* 5d20 */ 0xffff, /* 5d21 */ 0xffff, /* 5d22 */ 0xffff, /* 5d23 */ 0xffff, /* 5d24 */ 0xffff, /* 5d25 */ 0xffff, /* 5d26 */ 0xffff, /* 5d27 */ 0xffff, /* 5d28 */ 0xffff, /* 5d29 */ 0xffff, /* 5d2a */ 0xffff, /* 5d2b */ 0xffff, /* 5d2c */ 0xffff, /* 5d2d */ 0xffff, /* 5d2e */ 0xffff, /* 5d2f */ 0xffff, /* 5d30 */ 0xffff, /* 5d31 */ 0xffff, /* 5d32 */ 0xffff, /* 5d33 */ 0xffff, /* 5d34 */ 0xffff, /* 5d35 */ 0xffff, /* 5d36 */ 0xffff, /* 5d37 */ 0xffff, /* 5d38 */ 0xffff, /* 5d39 */ 0xffff, /* 5d3a */ 0xffff, /* 5d3b */ 0xffff, /* 5d3c */ 0xffff, /* 5d3d */ 0xffff, /* 5d3e */ 0xffff, /* 5d3f */ 0xffff, /* 5d40 */ 0xffff, /* 5d41 */ 0xffff, /* 5d42 */ 0xffff, /* 5d43 */ 0xffff, /* 5d44 */ 0xffff, /* 5d45 */ 0xffff, /* 5d46 */ 0xffff, /* 5d47 */ 0xffff, /* 5d48 */ 0xffff, /* 5d49 */ 0xffff, /* 5d4a */ 0xffff, /* 5d4b */ 0xffff, /* 5d4c */ 0xffff, /* 5d4d */ 0xffff, /* 5d4e */ 0xffff, /* 5d4f */ 0xffff, /* 5d50 */ 0xffff, /* 5d51 */ 0xffff, /* 5d52 */ 0xffff, /* 5d53 */ 0xffff, /* 5d54 */ 0xffff, /* 5d55 */ 0xffff, /* 5d56 */ 0xffff, /* 5d57 */ 0xffff, /* 5d58 */ 0xffff, /* 5d59 */ 0xffff, /* 5d5a */ 0xffff, /* 5d5b */ 0xffff, /* 5d5c */ 0xffff, /* 5d5d */ 0xffff, /* 5d5e */ 0xffff, /* 5d5f */ 0xffff, /* 5d60 */ 0xffff, /* 5d61 */ 0xffff, /* 5d62 */ 0xffff, /* 5d63 */ 0xffff, /* 5d64 */ 0xffff, /* 5d65 */ 0xffff, /* 5d66 */ 0xffff, /* 5d67 */ 0xffff, /* 5d68 */ 0xffff, /* 5d69 */ 0xffff, /* 5d6a */ 0xffff, /* 5d6b */ 0xffff, /* 5d6c */ 0xffff, /* 5d6d */ 0xffff, /* 5d6e */ 0xffff, /* 5d6f */ 0xffff, /* 5d70 */ 0xffff, /* 5d71 */ 0xffff, /* 5d72 */ 0xffff, /* 5d73 */ 0xffff, /* 5d74 */ 0xffff, /* 5d75 */ 0xffff, /* 5d76 */ 0xffff, /* 5d77 */ 0xffff, /* 5d78 */ 0xffff, /* 5d79 */ 0xffff, /* 5d7a */ 0xffff, /* 5d7b */ 0xffff, /* 5d7c */ 0xffff, /* 5d7d */ 0xffff, /* 5d7e */ 0xffff, /* 5d7f */ 0xffff, /* 5d80 */ 0xffff, /* 5d81 */ 0xffff, /* 5d82 */ 0xffff, /* 5d83 */ 0xffff, /* 5d84 */ 0xffff, /* 5d85 */ 0xffff, /* 5d86 */ 0xffff, /* 5d87 */ 0xffff, /* 5d88 */ 0xffff, /* 5d89 */ 0xffff, /* 5d8a */ 0xffff, /* 5d8b */ 0xffff, /* 5d8c */ 0xffff, /* 5d8d */ 0xffff, /* 5d8e */ 0xffff, /* 5d8f */ 0xffff, /* 5d90 */ 0xffff, /* 5d91 */ 0xffff, /* 5d92 */ 0xffff, /* 5d93 */ 0xffff, /* 5d94 */ 0xffff, /* 5d95 */ 0xffff, /* 5d96 */ 0xffff, /* 5d97 */ 0xffff, /* 5d98 */ 0xffff, /* 5d99 */ 0xffff, /* 5d9a */ 0xffff, /* 5d9b */ 0xffff, /* 5d9c */ 0xffff, /* 5d9d */ 0xffff, /* 5d9e */ 0xffff, /* 5d9f */ 0xffff, /* 5da0 */ 0xffff, /* 5da1 */ 0xffff, /* 5da2 */ 0xffff, /* 5da3 */ 0xffff, /* 5da4 */ 0xffff, /* 5da5 */ 0xffff, /* 5da6 */ 0xffff, /* 5da7 */ 0xffff, /* 5da8 */ 0xffff, /* 5da9 */ 0xffff, /* 5daa */ 0xffff, /* 5dab */ 0xffff, /* 5dac */ 0xffff, /* 5dad */ 0xffff, /* 5dae */ 0xffff, /* 5daf */ 0xffff, /* 5db0 */ 0xffff, /* 5db1 */ 0xffff, /* 5db2 */ 0xffff, /* 5db3 */ 0xffff, /* 5db4 */ 0xffff, /* 5db5 */ 0xffff, /* 5db6 */ 0xffff, /* 5db7 */ 0xffff, /* 5db8 */ 0xffff, /* 5db9 */ 0xffff, /* 5dba */ 0xffff, /* 5dbb */ 0xffff, /* 5dbc */ 0xffff, /* 5dbd */ 0xffff, /* 5dbe */ 0xffff, /* 5dbf */ 0xffff, /* 5dc0 */ 0xffff, /* 5dc1 */ 0xffff, /* 5dc2 */ 0xffff, /* 5dc3 */ 0xffff, /* 5dc4 */ 0xffff, /* 5dc5 */ 0xffff, /* 5dc6 */ 0xffff, /* 5dc7 */ 0xffff, /* 5dc8 */ 0xffff, /* 5dc9 */ 0xffff, /* 5dca */ 0xffff, /* 5dcb */ 0xffff, /* 5dcc */ 0xffff, /* 5dcd */ 0xffff, /* 5dce */ 0xffff, /* 5dcf */ 0xffff, /* 5dd0 */ 0xffff, /* 5dd1 */ 0xffff, /* 5dd2 */ 0xffff, /* 5dd3 */ 0xffff, /* 5dd4 */ 0xffff, /* 5dd5 */ 0xffff, /* 5dd6 */ 0xffff, /* 5dd7 */ 0xffff, /* 5dd8 */ 0xffff, /* 5dd9 */ 0xffff, /* 5dda */ 0xffff, /* 5ddb */ 0xffff, /* 5ddc */ 0xffff, /* 5ddd */ 0xffff, /* 5dde */ 0xffff, /* 5ddf */ 0xffff, /* 5de0 */ 0xffff, /* 5de1 */ 0xffff, /* 5de2 */ 0xffff, /* 5de3 */ 0xffff, /* 5de4 */ 0xffff, /* 5de5 */ 0xffff, /* 5de6 */ 0xffff, /* 5de7 */ 0xffff, /* 5de8 */ 0xffff, /* 5de9 */ 0xffff, /* 5dea */ 0xffff, /* 5deb */ 0xffff, /* 5dec */ 0xffff, /* 5ded */ 0xffff, /* 5dee */ 0xffff, /* 5def */ 0xffff, /* 5df0 */ 0xffff, /* 5df1 */ 0xffff, /* 5df2 */ 0xffff, /* 5df3 */ 0xffff, /* 5df4 */ 0xffff, /* 5df5 */ 0xffff, /* 5df6 */ 0xffff, /* 5df7 */ 0xffff, /* 5df8 */ 0xffff, /* 5df9 */ 0xffff, /* 5dfa */ 0xffff, /* 5dfb */ 0xffff, /* 5dfc */ 0xffff, /* 5dfd */ 0xffff, /* 5dfe */ 0xffff, /* 5dff */ 0xffff, /* 5e00 */ 0xffff, /* 5e01 */ 0xffff, /* 5e02 */ 0xffff, /* 5e03 */ 0xffff, /* 5e04 */ 0xffff, /* 5e05 */ 0xffff, /* 5e06 */ 0xffff, /* 5e07 */ 0xffff, /* 5e08 */ 0xffff, /* 5e09 */ 0xffff, /* 5e0a */ 0xffff, /* 5e0b */ 0xffff, /* 5e0c */ 0xffff, /* 5e0d */ 0xffff, /* 5e0e */ 0xffff, /* 5e0f */ 0xffff, /* 5e10 */ 0xffff, /* 5e11 */ 0xffff, /* 5e12 */ 0xffff, /* 5e13 */ 0xffff, /* 5e14 */ 0xffff, /* 5e15 */ 0xffff, /* 5e16 */ 0xffff, /* 5e17 */ 0xffff, /* 5e18 */ 0xffff, /* 5e19 */ 0xffff, /* 5e1a */ 0xffff, /* 5e1b */ 0xffff, /* 5e1c */ 0xffff, /* 5e1d */ 0xffff, /* 5e1e */ 0xffff, /* 5e1f */ 0xffff, /* 5e20 */ 0xffff, /* 5e21 */ 0xffff, /* 5e22 */ 0xffff, /* 5e23 */ 0xffff, /* 5e24 */ 0xffff, /* 5e25 */ 0xffff, /* 5e26 */ 0xffff, /* 5e27 */ 0xffff, /* 5e28 */ 0xffff, /* 5e29 */ 0xffff, /* 5e2a */ 0xffff, /* 5e2b */ 0xffff, /* 5e2c */ 0xffff, /* 5e2d */ 0xffff, /* 5e2e */ 0xffff, /* 5e2f */ 0xffff, /* 5e30 */ 0xffff, /* 5e31 */ 0xffff, /* 5e32 */ 0xffff, /* 5e33 */ 0xffff, /* 5e34 */ 0xffff, /* 5e35 */ 0xffff, /* 5e36 */ 0xffff, /* 5e37 */ 0xffff, /* 5e38 */ 0xffff, /* 5e39 */ 0xffff, /* 5e3a */ 0xffff, /* 5e3b */ 0xffff, /* 5e3c */ 0xffff, /* 5e3d */ 0xffff, /* 5e3e */ 0xffff, /* 5e3f */ 0xffff, /* 5e40 */ 0xffff, /* 5e41 */ 0xffff, /* 5e42 */ 0xffff, /* 5e43 */ 0xffff, /* 5e44 */ 0xffff, /* 5e45 */ 0xffff, /* 5e46 */ 0xffff, /* 5e47 */ 0xffff, /* 5e48 */ 0xffff, /* 5e49 */ 0xffff, /* 5e4a */ 0xffff, /* 5e4b */ 0xffff, /* 5e4c */ 0xffff, /* 5e4d */ 0xffff, /* 5e4e */ 0xffff, /* 5e4f */ 0xffff, /* 5e50 */ 0xffff, /* 5e51 */ 0xffff, /* 5e52 */ 0xffff, /* 5e53 */ 0xffff, /* 5e54 */ 0xffff, /* 5e55 */ 0xffff, /* 5e56 */ 0xffff, /* 5e57 */ 0xffff, /* 5e58 */ 0xffff, /* 5e59 */ 0xffff, /* 5e5a */ 0xffff, /* 5e5b */ 0xffff, /* 5e5c */ 0xffff, /* 5e5d */ 0xffff, /* 5e5e */ 0xffff, /* 5e5f */ 0xffff, /* 5e60 */ 0xffff, /* 5e61 */ 0xffff, /* 5e62 */ 0xffff, /* 5e63 */ 0xffff, /* 5e64 */ 0xffff, /* 5e65 */ 0xffff, /* 5e66 */ 0xffff, /* 5e67 */ 0xffff, /* 5e68 */ 0xffff, /* 5e69 */ 0xffff, /* 5e6a */ 0xffff, /* 5e6b */ 0xffff, /* 5e6c */ 0xffff, /* 5e6d */ 0xffff, /* 5e6e */ 0xffff, /* 5e6f */ 0xffff, /* 5e70 */ 0xffff, /* 5e71 */ 0xffff, /* 5e72 */ 0xffff, /* 5e73 */ 0xffff, /* 5e74 */ 0xffff, /* 5e75 */ 0xffff, /* 5e76 */ 0xffff, /* 5e77 */ 0xffff, /* 5e78 */ 0xffff, /* 5e79 */ 0xffff, /* 5e7a */ 0xffff, /* 5e7b */ 0xffff, /* 5e7c */ 0xffff, /* 5e7d */ 0xffff, /* 5e7e */ 0xffff, /* 5e7f */ 0xffff, /* 5e80 */ 0xffff, /* 5e81 */ 0xffff, /* 5e82 */ 0xffff, /* 5e83 */ 0xffff, /* 5e84 */ 0xffff, /* 5e85 */ 0xffff, /* 5e86 */ 0xffff, /* 5e87 */ 0xffff, /* 5e88 */ 0xffff, /* 5e89 */ 0xffff, /* 5e8a */ 0xffff, /* 5e8b */ 0xffff, /* 5e8c */ 0xffff, /* 5e8d */ 0xffff, /* 5e8e */ 0xffff, /* 5e8f */ 0xffff, /* 5e90 */ 0xffff, /* 5e91 */ 0xffff, /* 5e92 */ 0xffff, /* 5e93 */ 0xffff, /* 5e94 */ 0xffff, /* 5e95 */ 0xffff, /* 5e96 */ 0xffff, /* 5e97 */ 0xffff, /* 5e98 */ 0xffff, /* 5e99 */ 0xffff, /* 5e9a */ 0xffff, /* 5e9b */ 0xffff, /* 5e9c */ 0xffff, /* 5e9d */ 0xffff, /* 5e9e */ 0xffff, /* 5e9f */ 0xffff, /* 5ea0 */ 0xffff, /* 5ea1 */ 0xffff, /* 5ea2 */ 0xffff, /* 5ea3 */ 0xffff, /* 5ea4 */ 0xffff, /* 5ea5 */ 0xffff, /* 5ea6 */ 0xffff, /* 5ea7 */ 0xffff, /* 5ea8 */ 0xffff, /* 5ea9 */ 0xffff, /* 5eaa */ 0xffff, /* 5eab */ 0xffff, /* 5eac */ 0xffff, /* 5ead */ 0xffff, /* 5eae */ 0xffff, /* 5eaf */ 0xffff, /* 5eb0 */ 0xffff, /* 5eb1 */ 0xffff, /* 5eb2 */ 0xffff, /* 5eb3 */ 0xffff, /* 5eb4 */ 0xffff, /* 5eb5 */ 0xffff, /* 5eb6 */ 0xffff, /* 5eb7 */ 0xffff, /* 5eb8 */ 0xffff, /* 5eb9 */ 0xffff, /* 5eba */ 0xffff, /* 5ebb */ 0xffff, /* 5ebc */ 0xffff, /* 5ebd */ 0xffff, /* 5ebe */ 0xffff, /* 5ebf */ 0xffff, /* 5ec0 */ 0xffff, /* 5ec1 */ 0xffff, /* 5ec2 */ 0xffff, /* 5ec3 */ 0xffff, /* 5ec4 */ 0xffff, /* 5ec5 */ 0xffff, /* 5ec6 */ 0xffff, /* 5ec7 */ 0xffff, /* 5ec8 */ 0xffff, /* 5ec9 */ 0xffff, /* 5eca */ 0xffff, /* 5ecb */ 0xffff, /* 5ecc */ 0xffff, /* 5ecd */ 0xffff, /* 5ece */ 0xffff, /* 5ecf */ 0xffff, /* 5ed0 */ 0xffff, /* 5ed1 */ 0xffff, /* 5ed2 */ 0xffff, /* 5ed3 */ 0xffff, /* 5ed4 */ 0xffff, /* 5ed5 */ 0xffff, /* 5ed6 */ 0xffff, /* 5ed7 */ 0xffff, /* 5ed8 */ 0xffff, /* 5ed9 */ 0xffff, /* 5eda */ 0xffff, /* 5edb */ 0xffff, /* 5edc */ 0xffff, /* 5edd */ 0xffff, /* 5ede */ 0xffff, /* 5edf */ 0xffff, /* 5ee0 */ 0xffff, /* 5ee1 */ 0xffff, /* 5ee2 */ 0xffff, /* 5ee3 */ 0xffff, /* 5ee4 */ 0xffff, /* 5ee5 */ 0xffff, /* 5ee6 */ 0xffff, /* 5ee7 */ 0xffff, /* 5ee8 */ 0xffff, /* 5ee9 */ 0xffff, /* 5eea */ 0xffff, /* 5eeb */ 0xffff, /* 5eec */ 0xffff, /* 5eed */ 0xffff, /* 5eee */ 0xffff, /* 5eef */ 0xffff, /* 5ef0 */ 0xffff, /* 5ef1 */ 0xffff, /* 5ef2 */ 0xffff, /* 5ef3 */ 0xffff, /* 5ef4 */ 0xffff, /* 5ef5 */ 0xffff, /* 5ef6 */ 0xffff, /* 5ef7 */ 0xffff, /* 5ef8 */ 0xffff, /* 5ef9 */ 0xffff, /* 5efa */ 0xffff, /* 5efb */ 0xffff, /* 5efc */ 0xffff, /* 5efd */ 0xffff, /* 5efe */ 0xffff, /* 5eff */ 0xffff, /* 5f00 */ 0xffff, /* 5f01 */ 0xffff, /* 5f02 */ 0xffff, /* 5f03 */ 0xffff, /* 5f04 */ 0xffff, /* 5f05 */ 0xffff, /* 5f06 */ 0xffff, /* 5f07 */ 0xffff, /* 5f08 */ 0xffff, /* 5f09 */ 0xffff, /* 5f0a */ 0xffff, /* 5f0b */ 0xffff, /* 5f0c */ 0xffff, /* 5f0d */ 0xffff, /* 5f0e */ 0xffff, /* 5f0f */ 0xffff, /* 5f10 */ 0xffff, /* 5f11 */ 0xffff, /* 5f12 */ 0xffff, /* 5f13 */ 0xffff, /* 5f14 */ 0xffff, /* 5f15 */ 0xffff, /* 5f16 */ 0xffff, /* 5f17 */ 0xffff, /* 5f18 */ 0xffff, /* 5f19 */ 0xffff, /* 5f1a */ 0xffff, /* 5f1b */ 0xffff, /* 5f1c */ 0xffff, /* 5f1d */ 0xffff, /* 5f1e */ 0xffff, /* 5f1f */ 0xffff, /* 5f20 */ 0xffff, /* 5f21 */ 0xffff, /* 5f22 */ 0xffff, /* 5f23 */ 0xffff, /* 5f24 */ 0xffff, /* 5f25 */ 0xffff, /* 5f26 */ 0xffff, /* 5f27 */ 0xffff, /* 5f28 */ 0xffff, /* 5f29 */ 0xffff, /* 5f2a */ 0xffff, /* 5f2b */ 0xffff, /* 5f2c */ 0xffff, /* 5f2d */ 0xffff, /* 5f2e */ 0xffff, /* 5f2f */ 0xffff, /* 5f30 */ 0xffff, /* 5f31 */ 0xffff, /* 5f32 */ 0xffff, /* 5f33 */ 0xffff, /* 5f34 */ 0xffff, /* 5f35 */ 0xffff, /* 5f36 */ 0xffff, /* 5f37 */ 0xffff, /* 5f38 */ 0xffff, /* 5f39 */ 0xffff, /* 5f3a */ 0xffff, /* 5f3b */ 0xffff, /* 5f3c */ 0xffff, /* 5f3d */ 0xffff, /* 5f3e */ 0xffff, /* 5f3f */ 0xffff, /* 5f40 */ 0xffff, /* 5f41 */ 0xffff, /* 5f42 */ 0xffff, /* 5f43 */ 0xffff, /* 5f44 */ 0xffff, /* 5f45 */ 0xffff, /* 5f46 */ 0xffff, /* 5f47 */ 0xffff, /* 5f48 */ 0xffff, /* 5f49 */ 0xffff, /* 5f4a */ 0xffff, /* 5f4b */ 0xffff, /* 5f4c */ 0xffff, /* 5f4d */ 0xffff, /* 5f4e */ 0xffff, /* 5f4f */ 0xffff, /* 5f50 */ 0xffff, /* 5f51 */ 0xffff, /* 5f52 */ 0xffff, /* 5f53 */ 0xffff, /* 5f54 */ 0xffff, /* 5f55 */ 0xffff, /* 5f56 */ 0xffff, /* 5f57 */ 0xffff, /* 5f58 */ 0xffff, /* 5f59 */ 0xffff, /* 5f5a */ 0xffff, /* 5f5b */ 0xffff, /* 5f5c */ 0xffff, /* 5f5d */ 0xffff, /* 5f5e */ 0xffff, /* 5f5f */ 0xffff, /* 5f60 */ 0xffff, /* 5f61 */ 0xffff, /* 5f62 */ 0xffff, /* 5f63 */ 0xffff, /* 5f64 */ 0xffff, /* 5f65 */ 0xffff, /* 5f66 */ 0xffff, /* 5f67 */ 0xffff, /* 5f68 */ 0xffff, /* 5f69 */ 0xffff, /* 5f6a */ 0xffff, /* 5f6b */ 0xffff, /* 5f6c */ 0xffff, /* 5f6d */ 0xffff, /* 5f6e */ 0xffff, /* 5f6f */ 0xffff, /* 5f70 */ 0xffff, /* 5f71 */ 0xffff, /* 5f72 */ 0xffff, /* 5f73 */ 0xffff, /* 5f74 */ 0xffff, /* 5f75 */ 0xffff, /* 5f76 */ 0xffff, /* 5f77 */ 0xffff, /* 5f78 */ 0xffff, /* 5f79 */ 0xffff, /* 5f7a */ 0xffff, /* 5f7b */ 0xffff, /* 5f7c */ 0xffff, /* 5f7d */ 0xffff, /* 5f7e */ 0xffff, /* 5f7f */ 0xffff, /* 5f80 */ 0xffff, /* 5f81 */ 0xffff, /* 5f82 */ 0xffff, /* 5f83 */ 0xffff, /* 5f84 */ 0xffff, /* 5f85 */ 0xffff, /* 5f86 */ 0xffff, /* 5f87 */ 0xffff, /* 5f88 */ 0xffff, /* 5f89 */ 0xffff, /* 5f8a */ 0xffff, /* 5f8b */ 0xffff, /* 5f8c */ 0xffff, /* 5f8d */ 0xffff, /* 5f8e */ 0xffff, /* 5f8f */ 0xffff, /* 5f90 */ 0xffff, /* 5f91 */ 0xffff, /* 5f92 */ 0xffff, /* 5f93 */ 0xffff, /* 5f94 */ 0xffff, /* 5f95 */ 0xffff, /* 5f96 */ 0xffff, /* 5f97 */ 0xffff, /* 5f98 */ 0xffff, /* 5f99 */ 0xffff, /* 5f9a */ 0xffff, /* 5f9b */ 0xffff, /* 5f9c */ 0xffff, /* 5f9d */ 0xffff, /* 5f9e */ 0xffff, /* 5f9f */ 0xffff, /* 5fa0 */ 0xffff, /* 5fa1 */ 0xffff, /* 5fa2 */ 0xffff, /* 5fa3 */ 0xffff, /* 5fa4 */ 0xffff, /* 5fa5 */ 0xffff, /* 5fa6 */ 0xffff, /* 5fa7 */ 0xffff, /* 5fa8 */ 0xffff, /* 5fa9 */ 0xffff, /* 5faa */ 0xffff, /* 5fab */ 0xffff, /* 5fac */ 0xffff, /* 5fad */ 0xffff, /* 5fae */ 0xffff, /* 5faf */ 0xffff, /* 5fb0 */ 0xffff, /* 5fb1 */ 0xffff, /* 5fb2 */ 0xffff, /* 5fb3 */ 0xffff, /* 5fb4 */ 0xffff, /* 5fb5 */ 0xffff, /* 5fb6 */ 0xffff, /* 5fb7 */ 0xffff, /* 5fb8 */ 0xffff, /* 5fb9 */ 0xffff, /* 5fba */ 0xffff, /* 5fbb */ 0xffff, /* 5fbc */ 0xffff, /* 5fbd */ 0xffff, /* 5fbe */ 0xffff, /* 5fbf */ 0xffff, /* 5fc0 */ 0xffff, /* 5fc1 */ 0xffff, /* 5fc2 */ 0xffff, /* 5fc3 */ 0xffff, /* 5fc4 */ 0xffff, /* 5fc5 */ 0xffff, /* 5fc6 */ 0xffff, /* 5fc7 */ 0xffff, /* 5fc8 */ 0xffff, /* 5fc9 */ 0xffff, /* 5fca */ 0xffff, /* 5fcb */ 0xffff, /* 5fcc */ 0xffff, /* 5fcd */ 0xffff, /* 5fce */ 0xffff, /* 5fcf */ 0xffff, /* 5fd0 */ 0xffff, /* 5fd1 */ 0xffff, /* 5fd2 */ 0xffff, /* 5fd3 */ 0xffff, /* 5fd4 */ 0xffff, /* 5fd5 */ 0xffff, /* 5fd6 */ 0xffff, /* 5fd7 */ 0xffff, /* 5fd8 */ 0xffff, /* 5fd9 */ 0xffff, /* 5fda */ 0xffff, /* 5fdb */ 0xffff, /* 5fdc */ 0xffff, /* 5fdd */ 0xffff, /* 5fde */ 0xffff, /* 5fdf */ 0xffff, /* 5fe0 */ 0xffff, /* 5fe1 */ 0xffff, /* 5fe2 */ 0xffff, /* 5fe3 */ 0xffff, /* 5fe4 */ 0xffff, /* 5fe5 */ 0xffff, /* 5fe6 */ 0xffff, /* 5fe7 */ 0xffff, /* 5fe8 */ 0xffff, /* 5fe9 */ 0xffff, /* 5fea */ 0xffff, /* 5feb */ 0xffff, /* 5fec */ 0xffff, /* 5fed */ 0xffff, /* 5fee */ 0xffff, /* 5fef */ 0xffff, /* 5ff0 */ 0xffff, /* 5ff1 */ 0xffff, /* 5ff2 */ 0xffff, /* 5ff3 */ 0xffff, /* 5ff4 */ 0xffff, /* 5ff5 */ 0xffff, /* 5ff6 */ 0xffff, /* 5ff7 */ 0xffff, /* 5ff8 */ 0xffff, /* 5ff9 */ 0xffff, /* 5ffa */ 0xffff, /* 5ffb */ 0xffff, /* 5ffc */ 0xffff, /* 5ffd */ 0xffff, /* 5ffe */ 0xffff, /* 5fff */ 0xffff, /* 6000 */ 0xffff, /* 6001 */ 0xffff, /* 6002 */ 0xffff, /* 6003 */ 0xffff, /* 6004 */ 0xffff, /* 6005 */ 0xffff, /* 6006 */ 0xffff, /* 6007 */ 0xffff, /* 6008 */ 0xffff, /* 6009 */ 0xffff, /* 600a */ 0xffff, /* 600b */ 0xffff, /* 600c */ 0xffff, /* 600d */ 0xffff, /* 600e */ 0xffff, /* 600f */ 0xffff, /* 6010 */ 0xffff, /* 6011 */ 0xffff, /* 6012 */ 0xffff, /* 6013 */ 0xffff, /* 6014 */ 0xffff, /* 6015 */ 0xffff, /* 6016 */ 0xffff, /* 6017 */ 0xffff, /* 6018 */ 0xffff, /* 6019 */ 0xffff, /* 601a */ 0xffff, /* 601b */ 0xffff, /* 601c */ 0xffff, /* 601d */ 0xffff, /* 601e */ 0xffff, /* 601f */ 0xffff, /* 6020 */ 0xffff, /* 6021 */ 0xffff, /* 6022 */ 0xffff, /* 6023 */ 0xffff, /* 6024 */ 0xffff, /* 6025 */ 0xffff, /* 6026 */ 0xffff, /* 6027 */ 0xffff, /* 6028 */ 0xffff, /* 6029 */ 0xffff, /* 602a */ 0xffff, /* 602b */ 0xffff, /* 602c */ 0xffff, /* 602d */ 0xffff, /* 602e */ 0xffff, /* 602f */ 0xffff, /* 6030 */ 0xffff, /* 6031 */ 0xffff, /* 6032 */ 0xffff, /* 6033 */ 0xffff, /* 6034 */ 0xffff, /* 6035 */ 0xffff, /* 6036 */ 0xffff, /* 6037 */ 0xffff, /* 6038 */ 0xffff, /* 6039 */ 0xffff, /* 603a */ 0xffff, /* 603b */ 0xffff, /* 603c */ 0xffff, /* 603d */ 0xffff, /* 603e */ 0xffff, /* 603f */ 0xffff, /* 6040 */ 0xffff, /* 6041 */ 0xffff, /* 6042 */ 0xffff, /* 6043 */ 0xffff, /* 6044 */ 0xffff, /* 6045 */ 0xffff, /* 6046 */ 0xffff, /* 6047 */ 0xffff, /* 6048 */ 0xffff, /* 6049 */ 0xffff, /* 604a */ 0xffff, /* 604b */ 0xffff, /* 604c */ 0xffff, /* 604d */ 0xffff, /* 604e */ 0xffff, /* 604f */ 0xffff, /* 6050 */ 0xffff, /* 6051 */ 0xffff, /* 6052 */ 0xffff, /* 6053 */ 0xffff, /* 6054 */ 0xffff, /* 6055 */ 0xffff, /* 6056 */ 0xffff, /* 6057 */ 0xffff, /* 6058 */ 0xffff, /* 6059 */ 0xffff, /* 605a */ 0xffff, /* 605b */ 0xffff, /* 605c */ 0xffff, /* 605d */ 0xffff, /* 605e */ 0xffff, /* 605f */ 0xffff, /* 6060 */ 0xffff, /* 6061 */ 0xffff, /* 6062 */ 0xffff, /* 6063 */ 0xffff, /* 6064 */ 0xffff, /* 6065 */ 0xffff, /* 6066 */ 0xffff, /* 6067 */ 0xffff, /* 6068 */ 0xffff, /* 6069 */ 0xffff, /* 606a */ 0xffff, /* 606b */ 0xffff, /* 606c */ 0xffff, /* 606d */ 0xffff, /* 606e */ 0xffff, /* 606f */ 0xffff, /* 6070 */ 0xffff, /* 6071 */ 0xffff, /* 6072 */ 0xffff, /* 6073 */ 0xffff, /* 6074 */ 0xffff, /* 6075 */ 0xffff, /* 6076 */ 0xffff, /* 6077 */ 0xffff, /* 6078 */ 0xffff, /* 6079 */ 0xffff, /* 607a */ 0xffff, /* 607b */ 0xffff, /* 607c */ 0xffff, /* 607d */ 0xffff, /* 607e */ 0xffff, /* 607f */ 0xffff, /* 6080 */ 0xffff, /* 6081 */ 0xffff, /* 6082 */ 0xffff, /* 6083 */ 0xffff, /* 6084 */ 0xffff, /* 6085 */ 0xffff, /* 6086 */ 0xffff, /* 6087 */ 0xffff, /* 6088 */ 0xffff, /* 6089 */ 0xffff, /* 608a */ 0xffff, /* 608b */ 0xffff, /* 608c */ 0xffff, /* 608d */ 0xffff, /* 608e */ 0xffff, /* 608f */ 0xffff, /* 6090 */ 0xffff, /* 6091 */ 0xffff, /* 6092 */ 0xffff, /* 6093 */ 0xffff, /* 6094 */ 0xffff, /* 6095 */ 0xffff, /* 6096 */ 0xffff, /* 6097 */ 0xffff, /* 6098 */ 0xffff, /* 6099 */ 0xffff, /* 609a */ 0xffff, /* 609b */ 0xffff, /* 609c */ 0xffff, /* 609d */ 0xffff, /* 609e */ 0xffff, /* 609f */ 0xffff, /* 60a0 */ 0xffff, /* 60a1 */ 0xffff, /* 60a2 */ 0xffff, /* 60a3 */ 0xffff, /* 60a4 */ 0xffff, /* 60a5 */ 0xffff, /* 60a6 */ 0xffff, /* 60a7 */ 0xffff, /* 60a8 */ 0xffff, /* 60a9 */ 0xffff, /* 60aa */ 0xffff, /* 60ab */ 0xffff, /* 60ac */ 0xffff, /* 60ad */ 0xffff, /* 60ae */ 0xffff, /* 60af */ 0xffff, /* 60b0 */ 0xffff, /* 60b1 */ 0xffff, /* 60b2 */ 0xffff, /* 60b3 */ 0xffff, /* 60b4 */ 0xffff, /* 60b5 */ 0xffff, /* 60b6 */ 0xffff, /* 60b7 */ 0xffff, /* 60b8 */ 0xffff, /* 60b9 */ 0xffff, /* 60ba */ 0xffff, /* 60bb */ 0xffff, /* 60bc */ 0xffff, /* 60bd */ 0xffff, /* 60be */ 0xffff, /* 60bf */ 0xffff, /* 60c0 */ 0xffff, /* 60c1 */ 0xffff, /* 60c2 */ 0xffff, /* 60c3 */ 0xffff, /* 60c4 */ 0xffff, /* 60c5 */ 0xffff, /* 60c6 */ 0xffff, /* 60c7 */ 0xffff, /* 60c8 */ 0xffff, /* 60c9 */ 0xffff, /* 60ca */ 0xffff, /* 60cb */ 0xffff, /* 60cc */ 0xffff, /* 60cd */ 0xffff, /* 60ce */ 0xffff, /* 60cf */ 0xffff, /* 60d0 */ 0xffff, /* 60d1 */ 0xffff, /* 60d2 */ 0xffff, /* 60d3 */ 0xffff, /* 60d4 */ 0xffff, /* 60d5 */ 0xffff, /* 60d6 */ 0xffff, /* 60d7 */ 0xffff, /* 60d8 */ 0xffff, /* 60d9 */ 0xffff, /* 60da */ 0xffff, /* 60db */ 0xffff, /* 60dc */ 0xffff, /* 60dd */ 0xffff, /* 60de */ 0xffff, /* 60df */ 0xffff, /* 60e0 */ 0xffff, /* 60e1 */ 0xffff, /* 60e2 */ 0xffff, /* 60e3 */ 0xffff, /* 60e4 */ 0xffff, /* 60e5 */ 0xffff, /* 60e6 */ 0xffff, /* 60e7 */ 0xffff, /* 60e8 */ 0xffff, /* 60e9 */ 0xffff, /* 60ea */ 0xffff, /* 60eb */ 0xffff, /* 60ec */ 0xffff, /* 60ed */ 0xffff, /* 60ee */ 0xffff, /* 60ef */ 0xffff, /* 60f0 */ 0xffff, /* 60f1 */ 0xffff, /* 60f2 */ 0xffff, /* 60f3 */ 0xffff, /* 60f4 */ 0xffff, /* 60f5 */ 0xffff, /* 60f6 */ 0xffff, /* 60f7 */ 0xffff, /* 60f8 */ 0xffff, /* 60f9 */ 0xffff, /* 60fa */ 0xffff, /* 60fb */ 0xffff, /* 60fc */ 0xffff, /* 60fd */ 0xffff, /* 60fe */ 0xffff, /* 60ff */ 0xffff, /* 6100 */ 0xffff, /* 6101 */ 0xffff, /* 6102 */ 0xffff, /* 6103 */ 0xffff, /* 6104 */ 0xffff, /* 6105 */ 0xffff, /* 6106 */ 0xffff, /* 6107 */ 0xffff, /* 6108 */ 0xffff, /* 6109 */ 0xffff, /* 610a */ 0xffff, /* 610b */ 0xffff, /* 610c */ 0xffff, /* 610d */ 0xffff, /* 610e */ 0xffff, /* 610f */ 0xffff, /* 6110 */ 0xffff, /* 6111 */ 0xffff, /* 6112 */ 0xffff, /* 6113 */ 0xffff, /* 6114 */ 0xffff, /* 6115 */ 0xffff, /* 6116 */ 0xffff, /* 6117 */ 0xffff, /* 6118 */ 0xffff, /* 6119 */ 0xffff, /* 611a */ 0xffff, /* 611b */ 0xffff, /* 611c */ 0xffff, /* 611d */ 0xffff, /* 611e */ 0xffff, /* 611f */ 0xffff, /* 6120 */ 0xffff, /* 6121 */ 0xffff, /* 6122 */ 0xffff, /* 6123 */ 0xffff, /* 6124 */ 0xffff, /* 6125 */ 0xffff, /* 6126 */ 0xffff, /* 6127 */ 0xffff, /* 6128 */ 0xffff, /* 6129 */ 0xffff, /* 612a */ 0xffff, /* 612b */ 0xffff, /* 612c */ 0xffff, /* 612d */ 0xffff, /* 612e */ 0xffff, /* 612f */ 0xffff, /* 6130 */ 0xffff, /* 6131 */ 0xffff, /* 6132 */ 0xffff, /* 6133 */ 0xffff, /* 6134 */ 0xffff, /* 6135 */ 0xffff, /* 6136 */ 0xffff, /* 6137 */ 0xffff, /* 6138 */ 0xffff, /* 6139 */ 0xffff, /* 613a */ 0xffff, /* 613b */ 0xffff, /* 613c */ 0xffff, /* 613d */ 0xffff, /* 613e */ 0xffff, /* 613f */ 0xffff, /* 6140 */ 0xffff, /* 6141 */ 0xffff, /* 6142 */ 0xffff, /* 6143 */ 0xffff, /* 6144 */ 0xffff, /* 6145 */ 0xffff, /* 6146 */ 0xffff, /* 6147 */ 0xffff, /* 6148 */ 0xffff, /* 6149 */ 0xffff, /* 614a */ 0xffff, /* 614b */ 0xffff, /* 614c */ 0xffff, /* 614d */ 0xffff, /* 614e */ 0xffff, /* 614f */ 0xffff, /* 6150 */ 0xffff, /* 6151 */ 0xffff, /* 6152 */ 0xffff, /* 6153 */ 0xffff, /* 6154 */ 0xffff, /* 6155 */ 0xffff, /* 6156 */ 0xffff, /* 6157 */ 0xffff, /* 6158 */ 0xffff, /* 6159 */ 0xffff, /* 615a */ 0xffff, /* 615b */ 0xffff, /* 615c */ 0xffff, /* 615d */ 0xffff, /* 615e */ 0xffff, /* 615f */ 0xffff, /* 6160 */ 0xffff, /* 6161 */ 0xffff, /* 6162 */ 0xffff, /* 6163 */ 0xffff, /* 6164 */ 0xffff, /* 6165 */ 0xffff, /* 6166 */ 0xffff, /* 6167 */ 0xffff, /* 6168 */ 0xffff, /* 6169 */ 0xffff, /* 616a */ 0xffff, /* 616b */ 0xffff, /* 616c */ 0xffff, /* 616d */ 0xffff, /* 616e */ 0xffff, /* 616f */ 0xffff, /* 6170 */ 0xffff, /* 6171 */ 0xffff, /* 6172 */ 0xffff, /* 6173 */ 0xffff, /* 6174 */ 0xffff, /* 6175 */ 0xffff, /* 6176 */ 0xffff, /* 6177 */ 0xffff, /* 6178 */ 0xffff, /* 6179 */ 0xffff, /* 617a */ 0xffff, /* 617b */ 0xffff, /* 617c */ 0xffff, /* 617d */ 0xffff, /* 617e */ 0xffff, /* 617f */ 0xffff, /* 6180 */ 0xffff, /* 6181 */ 0xffff, /* 6182 */ 0xffff, /* 6183 */ 0xffff, /* 6184 */ 0xffff, /* 6185 */ 0xffff, /* 6186 */ 0xffff, /* 6187 */ 0xffff, /* 6188 */ 0xffff, /* 6189 */ 0xffff, /* 618a */ 0xffff, /* 618b */ 0xffff, /* 618c */ 0xffff, /* 618d */ 0xffff, /* 618e */ 0xffff, /* 618f */ 0xffff, /* 6190 */ 0xffff, /* 6191 */ 0xffff, /* 6192 */ 0xffff, /* 6193 */ 0xffff, /* 6194 */ 0xffff, /* 6195 */ 0xffff, /* 6196 */ 0xffff, /* 6197 */ 0xffff, /* 6198 */ 0xffff, /* 6199 */ 0xffff, /* 619a */ 0xffff, /* 619b */ 0xffff, /* 619c */ 0xffff, /* 619d */ 0xffff, /* 619e */ 0xffff, /* 619f */ 0xffff, /* 61a0 */ 0xffff, /* 61a1 */ 0xffff, /* 61a2 */ 0xffff, /* 61a3 */ 0xffff, /* 61a4 */ 0xffff, /* 61a5 */ 0xffff, /* 61a6 */ 0xffff, /* 61a7 */ 0xffff, /* 61a8 */ 0xffff, /* 61a9 */ 0xffff, /* 61aa */ 0xffff, /* 61ab */ 0xffff, /* 61ac */ 0xffff, /* 61ad */ 0xffff, /* 61ae */ 0xffff, /* 61af */ 0xffff, /* 61b0 */ 0xffff, /* 61b1 */ 0xffff, /* 61b2 */ 0xffff, /* 61b3 */ 0xffff, /* 61b4 */ 0xffff, /* 61b5 */ 0xffff, /* 61b6 */ 0xffff, /* 61b7 */ 0xffff, /* 61b8 */ 0xffff, /* 61b9 */ 0xffff, /* 61ba */ 0xffff, /* 61bb */ 0xffff, /* 61bc */ 0xffff, /* 61bd */ 0xffff, /* 61be */ 0xffff, /* 61bf */ 0xffff, /* 61c0 */ 0xffff, /* 61c1 */ 0xffff, /* 61c2 */ 0xffff, /* 61c3 */ 0xffff, /* 61c4 */ 0xffff, /* 61c5 */ 0xffff, /* 61c6 */ 0xffff, /* 61c7 */ 0xffff, /* 61c8 */ 0xffff, /* 61c9 */ 0xffff, /* 61ca */ 0xffff, /* 61cb */ 0xffff, /* 61cc */ 0xffff, /* 61cd */ 0xffff, /* 61ce */ 0xffff, /* 61cf */ 0xffff, /* 61d0 */ 0xffff, /* 61d1 */ 0xffff, /* 61d2 */ 0xffff, /* 61d3 */ 0xffff, /* 61d4 */ 0xffff, /* 61d5 */ 0xffff, /* 61d6 */ 0xffff, /* 61d7 */ 0xffff, /* 61d8 */ 0xffff, /* 61d9 */ 0xffff, /* 61da */ 0xffff, /* 61db */ 0xffff, /* 61dc */ 0xffff, /* 61dd */ 0xffff, /* 61de */ 0xffff, /* 61df */ 0xffff, /* 61e0 */ 0xffff, /* 61e1 */ 0xffff, /* 61e2 */ 0xffff, /* 61e3 */ 0xffff, /* 61e4 */ 0xffff, /* 61e5 */ 0xffff, /* 61e6 */ 0xffff, /* 61e7 */ 0xffff, /* 61e8 */ 0xffff, /* 61e9 */ 0xffff, /* 61ea */ 0xffff, /* 61eb */ 0xffff, /* 61ec */ 0xffff, /* 61ed */ 0xffff, /* 61ee */ 0xffff, /* 61ef */ 0xffff, /* 61f0 */ 0xffff, /* 61f1 */ 0xffff, /* 61f2 */ 0xffff, /* 61f3 */ 0xffff, /* 61f4 */ 0xffff, /* 61f5 */ 0xffff, /* 61f6 */ 0xffff, /* 61f7 */ 0xffff, /* 61f8 */ 0xffff, /* 61f9 */ 0xffff, /* 61fa */ 0xffff, /* 61fb */ 0xffff, /* 61fc */ 0xffff, /* 61fd */ 0xffff, /* 61fe */ 0xffff, /* 61ff */ 0xffff, /* 6200 */ 0xffff, /* 6201 */ 0xffff, /* 6202 */ 0xffff, /* 6203 */ 0xffff, /* 6204 */ 0xffff, /* 6205 */ 0xffff, /* 6206 */ 0xffff, /* 6207 */ 0xffff, /* 6208 */ 0xffff, /* 6209 */ 0xffff, /* 620a */ 0xffff, /* 620b */ 0xffff, /* 620c */ 0xffff, /* 620d */ 0xffff, /* 620e */ 0xffff, /* 620f */ 0xffff, /* 6210 */ 0xffff, /* 6211 */ 0xffff, /* 6212 */ 0xffff, /* 6213 */ 0xffff, /* 6214 */ 0xffff, /* 6215 */ 0xffff, /* 6216 */ 0xffff, /* 6217 */ 0xffff, /* 6218 */ 0xffff, /* 6219 */ 0xffff, /* 621a */ 0xffff, /* 621b */ 0xffff, /* 621c */ 0xffff, /* 621d */ 0xffff, /* 621e */ 0xffff, /* 621f */ 0xffff, /* 6220 */ 0xffff, /* 6221 */ 0xffff, /* 6222 */ 0xffff, /* 6223 */ 0xffff, /* 6224 */ 0xffff, /* 6225 */ 0xffff, /* 6226 */ 0xffff, /* 6227 */ 0xffff, /* 6228 */ 0xffff, /* 6229 */ 0xffff, /* 622a */ 0xffff, /* 622b */ 0xffff, /* 622c */ 0xffff, /* 622d */ 0xffff, /* 622e */ 0xffff, /* 622f */ 0xffff, /* 6230 */ 0xffff, /* 6231 */ 0xffff, /* 6232 */ 0xffff, /* 6233 */ 0xffff, /* 6234 */ 0xffff, /* 6235 */ 0xffff, /* 6236 */ 0xffff, /* 6237 */ 0xffff, /* 6238 */ 0xffff, /* 6239 */ 0xffff, /* 623a */ 0xffff, /* 623b */ 0xffff, /* 623c */ 0xffff, /* 623d */ 0xffff, /* 623e */ 0xffff, /* 623f */ 0xffff, /* 6240 */ 0xffff, /* 6241 */ 0xffff, /* 6242 */ 0xffff, /* 6243 */ 0xffff, /* 6244 */ 0xffff, /* 6245 */ 0xffff, /* 6246 */ 0xffff, /* 6247 */ 0xffff, /* 6248 */ 0xffff, /* 6249 */ 0xffff, /* 624a */ 0xffff, /* 624b */ 0xffff, /* 624c */ 0xffff, /* 624d */ 0xffff, /* 624e */ 0xffff, /* 624f */ 0xffff, /* 6250 */ 0xffff, /* 6251 */ 0xffff, /* 6252 */ 0xffff, /* 6253 */ 0xffff, /* 6254 */ 0xffff, /* 6255 */ 0xffff, /* 6256 */ 0xffff, /* 6257 */ 0xffff, /* 6258 */ 0xffff, /* 6259 */ 0xffff, /* 625a */ 0xffff, /* 625b */ 0xffff, /* 625c */ 0xffff, /* 625d */ 0xffff, /* 625e */ 0xffff, /* 625f */ 0xffff, /* 6260 */ 0xffff, /* 6261 */ 0xffff, /* 6262 */ 0xffff, /* 6263 */ 0xffff, /* 6264 */ 0xffff, /* 6265 */ 0xffff, /* 6266 */ 0xffff, /* 6267 */ 0xffff, /* 6268 */ 0xffff, /* 6269 */ 0xffff, /* 626a */ 0xffff, /* 626b */ 0xffff, /* 626c */ 0xffff, /* 626d */ 0xffff, /* 626e */ 0xffff, /* 626f */ 0xffff, /* 6270 */ 0xffff, /* 6271 */ 0xffff, /* 6272 */ 0xffff, /* 6273 */ 0xffff, /* 6274 */ 0xffff, /* 6275 */ 0xffff, /* 6276 */ 0xffff, /* 6277 */ 0xffff, /* 6278 */ 0xffff, /* 6279 */ 0xffff, /* 627a */ 0xffff, /* 627b */ 0xffff, /* 627c */ 0xffff, /* 627d */ 0xffff, /* 627e */ 0xffff, /* 627f */ 0xffff, /* 6280 */ 0xffff, /* 6281 */ 0xffff, /* 6282 */ 0xffff, /* 6283 */ 0xffff, /* 6284 */ 0xffff, /* 6285 */ 0xffff, /* 6286 */ 0xffff, /* 6287 */ 0xffff, /* 6288 */ 0xffff, /* 6289 */ 0xffff, /* 628a */ 0xffff, /* 628b */ 0xffff, /* 628c */ 0xffff, /* 628d */ 0xffff, /* 628e */ 0xffff, /* 628f */ 0xffff, /* 6290 */ 0xffff, /* 6291 */ 0xffff, /* 6292 */ 0xffff, /* 6293 */ 0xffff, /* 6294 */ 0xffff, /* 6295 */ 0xffff, /* 6296 */ 0xffff, /* 6297 */ 0xffff, /* 6298 */ 0xffff, /* 6299 */ 0xffff, /* 629a */ 0xffff, /* 629b */ 0xffff, /* 629c */ 0xffff, /* 629d */ 0xffff, /* 629e */ 0xffff, /* 629f */ 0xffff, /* 62a0 */ 0xffff, /* 62a1 */ 0xffff, /* 62a2 */ 0xffff, /* 62a3 */ 0xffff, /* 62a4 */ 0xffff, /* 62a5 */ 0xffff, /* 62a6 */ 0xffff, /* 62a7 */ 0xffff, /* 62a8 */ 0xffff, /* 62a9 */ 0xffff, /* 62aa */ 0xffff, /* 62ab */ 0xffff, /* 62ac */ 0xffff, /* 62ad */ 0xffff, /* 62ae */ 0xffff, /* 62af */ 0xffff, /* 62b0 */ 0xffff, /* 62b1 */ 0xffff, /* 62b2 */ 0xffff, /* 62b3 */ 0xffff, /* 62b4 */ 0xffff, /* 62b5 */ 0xffff, /* 62b6 */ 0xffff, /* 62b7 */ 0xffff, /* 62b8 */ 0xffff, /* 62b9 */ 0xffff, /* 62ba */ 0xffff, /* 62bb */ 0xffff, /* 62bc */ 0xffff, /* 62bd */ 0xffff, /* 62be */ 0xffff, /* 62bf */ 0xffff, /* 62c0 */ 0xffff, /* 62c1 */ 0xffff, /* 62c2 */ 0xffff, /* 62c3 */ 0xffff, /* 62c4 */ 0xffff, /* 62c5 */ 0xffff, /* 62c6 */ 0xffff, /* 62c7 */ 0xffff, /* 62c8 */ 0xffff, /* 62c9 */ 0xffff, /* 62ca */ 0xffff, /* 62cb */ 0xffff, /* 62cc */ 0xffff, /* 62cd */ 0xffff, /* 62ce */ 0xffff, /* 62cf */ 0xffff, /* 62d0 */ 0xffff, /* 62d1 */ 0xffff, /* 62d2 */ 0xffff, /* 62d3 */ 0xffff, /* 62d4 */ 0xffff, /* 62d5 */ 0xffff, /* 62d6 */ 0xffff, /* 62d7 */ 0xffff, /* 62d8 */ 0xffff, /* 62d9 */ 0xffff, /* 62da */ 0xffff, /* 62db */ 0xffff, /* 62dc */ 0xffff, /* 62dd */ 0xffff, /* 62de */ 0xffff, /* 62df */ 0xffff, /* 62e0 */ 0xffff, /* 62e1 */ 0xffff, /* 62e2 */ 0xffff, /* 62e3 */ 0xffff, /* 62e4 */ 0xffff, /* 62e5 */ 0xffff, /* 62e6 */ 0xffff, /* 62e7 */ 0xffff, /* 62e8 */ 0xffff, /* 62e9 */ 0xffff, /* 62ea */ 0xffff, /* 62eb */ 0xffff, /* 62ec */ 0xffff, /* 62ed */ 0xffff, /* 62ee */ 0xffff, /* 62ef */ 0xffff, /* 62f0 */ 0xffff, /* 62f1 */ 0xffff, /* 62f2 */ 0xffff, /* 62f3 */ 0xffff, /* 62f4 */ 0xffff, /* 62f5 */ 0xffff, /* 62f6 */ 0xffff, /* 62f7 */ 0xffff, /* 62f8 */ 0xffff, /* 62f9 */ 0xffff, /* 62fa */ 0xffff, /* 62fb */ 0xffff, /* 62fc */ 0xffff, /* 62fd */ 0xffff, /* 62fe */ 0xffff, /* 62ff */ 0xffff, /* 6300 */ 0xffff, /* 6301 */ 0xffff, /* 6302 */ 0xffff, /* 6303 */ 0xffff, /* 6304 */ 0xffff, /* 6305 */ 0xffff, /* 6306 */ 0xffff, /* 6307 */ 0xffff, /* 6308 */ 0xffff, /* 6309 */ 0xffff, /* 630a */ 0xffff, /* 630b */ 0xffff, /* 630c */ 0xffff, /* 630d */ 0xffff, /* 630e */ 0xffff, /* 630f */ 0xffff, /* 6310 */ 0xffff, /* 6311 */ 0xffff, /* 6312 */ 0xffff, /* 6313 */ 0xffff, /* 6314 */ 0xffff, /* 6315 */ 0xffff, /* 6316 */ 0xffff, /* 6317 */ 0xffff, /* 6318 */ 0xffff, /* 6319 */ 0xffff, /* 631a */ 0xffff, /* 631b */ 0xffff, /* 631c */ 0xffff, /* 631d */ 0xffff, /* 631e */ 0xffff, /* 631f */ 0xffff, /* 6320 */ 0xffff, /* 6321 */ 0xffff, /* 6322 */ 0xffff, /* 6323 */ 0xffff, /* 6324 */ 0xffff, /* 6325 */ 0xffff, /* 6326 */ 0xffff, /* 6327 */ 0xffff, /* 6328 */ 0xffff, /* 6329 */ 0xffff, /* 632a */ 0xffff, /* 632b */ 0xffff, /* 632c */ 0xffff, /* 632d */ 0xffff, /* 632e */ 0xffff, /* 632f */ 0xffff, /* 6330 */ 0xffff, /* 6331 */ 0xffff, /* 6332 */ 0xffff, /* 6333 */ 0xffff, /* 6334 */ 0xffff, /* 6335 */ 0xffff, /* 6336 */ 0xffff, /* 6337 */ 0xffff, /* 6338 */ 0xffff, /* 6339 */ 0xffff, /* 633a */ 0xffff, /* 633b */ 0xffff, /* 633c */ 0xffff, /* 633d */ 0xffff, /* 633e */ 0xffff, /* 633f */ 0xffff, /* 6340 */ 0xffff, /* 6341 */ 0xffff, /* 6342 */ 0xffff, /* 6343 */ 0xffff, /* 6344 */ 0xffff, /* 6345 */ 0xffff, /* 6346 */ 0xffff, /* 6347 */ 0xffff, /* 6348 */ 0xffff, /* 6349 */ 0xffff, /* 634a */ 0xffff, /* 634b */ 0xffff, /* 634c */ 0xffff, /* 634d */ 0xffff, /* 634e */ 0xffff, /* 634f */ 0xffff, /* 6350 */ 0xffff, /* 6351 */ 0xffff, /* 6352 */ 0xffff, /* 6353 */ 0xffff, /* 6354 */ 0xffff, /* 6355 */ 0xffff, /* 6356 */ 0xffff, /* 6357 */ 0xffff, /* 6358 */ 0xffff, /* 6359 */ 0xffff, /* 635a */ 0xffff, /* 635b */ 0xffff, /* 635c */ 0xffff, /* 635d */ 0xffff, /* 635e */ 0xffff, /* 635f */ 0xffff, /* 6360 */ 0xffff, /* 6361 */ 0xffff, /* 6362 */ 0xffff, /* 6363 */ 0xffff, /* 6364 */ 0xffff, /* 6365 */ 0xffff, /* 6366 */ 0xffff, /* 6367 */ 0xffff, /* 6368 */ 0xffff, /* 6369 */ 0xffff, /* 636a */ 0xffff, /* 636b */ 0xffff, /* 636c */ 0xffff, /* 636d */ 0xffff, /* 636e */ 0xffff, /* 636f */ 0xffff, /* 6370 */ 0xffff, /* 6371 */ 0xffff, /* 6372 */ 0xffff, /* 6373 */ 0xffff, /* 6374 */ 0xffff, /* 6375 */ 0xffff, /* 6376 */ 0xffff, /* 6377 */ 0xffff, /* 6378 */ 0xffff, /* 6379 */ 0xffff, /* 637a */ 0xffff, /* 637b */ 0xffff, /* 637c */ 0xffff, /* 637d */ 0xffff, /* 637e */ 0xffff, /* 637f */ 0xffff, /* 6380 */ 0xffff, /* 6381 */ 0xffff, /* 6382 */ 0xffff, /* 6383 */ 0xffff, /* 6384 */ 0xffff, /* 6385 */ 0xffff, /* 6386 */ 0xffff, /* 6387 */ 0xffff, /* 6388 */ 0xffff, /* 6389 */ 0xffff, /* 638a */ 0xffff, /* 638b */ 0xffff, /* 638c */ 0xffff, /* 638d */ 0xffff, /* 638e */ 0xffff, /* 638f */ 0xffff, /* 6390 */ 0xffff, /* 6391 */ 0xffff, /* 6392 */ 0xffff, /* 6393 */ 0xffff, /* 6394 */ 0xffff, /* 6395 */ 0xffff, /* 6396 */ 0xffff, /* 6397 */ 0xffff, /* 6398 */ 0xffff, /* 6399 */ 0xffff, /* 639a */ 0xffff, /* 639b */ 0xffff, /* 639c */ 0xffff, /* 639d */ 0xffff, /* 639e */ 0xffff, /* 639f */ 0xffff, /* 63a0 */ 0xffff, /* 63a1 */ 0xffff, /* 63a2 */ 0xffff, /* 63a3 */ 0xffff, /* 63a4 */ 0xffff, /* 63a5 */ 0xffff, /* 63a6 */ 0xffff, /* 63a7 */ 0xffff, /* 63a8 */ 0xffff, /* 63a9 */ 0xffff, /* 63aa */ 0xffff, /* 63ab */ 0xffff, /* 63ac */ 0xffff, /* 63ad */ 0xffff, /* 63ae */ 0xffff, /* 63af */ 0xffff, /* 63b0 */ 0xffff, /* 63b1 */ 0xffff, /* 63b2 */ 0xffff, /* 63b3 */ 0xffff, /* 63b4 */ 0xffff, /* 63b5 */ 0xffff, /* 63b6 */ 0xffff, /* 63b7 */ 0xffff, /* 63b8 */ 0xffff, /* 63b9 */ 0xffff, /* 63ba */ 0xffff, /* 63bb */ 0xffff, /* 63bc */ 0xffff, /* 63bd */ 0xffff, /* 63be */ 0xffff, /* 63bf */ 0xffff, /* 63c0 */ 0xffff, /* 63c1 */ 0xffff, /* 63c2 */ 0xffff, /* 63c3 */ 0xffff, /* 63c4 */ 0xffff, /* 63c5 */ 0xffff, /* 63c6 */ 0xffff, /* 63c7 */ 0xffff, /* 63c8 */ 0xffff, /* 63c9 */ 0xffff, /* 63ca */ 0xffff, /* 63cb */ 0xffff, /* 63cc */ 0xffff, /* 63cd */ 0xffff, /* 63ce */ 0xffff, /* 63cf */ 0xffff, /* 63d0 */ 0xffff, /* 63d1 */ 0xffff, /* 63d2 */ 0xffff, /* 63d3 */ 0xffff, /* 63d4 */ 0xffff, /* 63d5 */ 0xffff, /* 63d6 */ 0xffff, /* 63d7 */ 0xffff, /* 63d8 */ 0xffff, /* 63d9 */ 0xffff, /* 63da */ 0xffff, /* 63db */ 0xffff, /* 63dc */ 0xffff, /* 63dd */ 0xffff, /* 63de */ 0xffff, /* 63df */ 0xffff, /* 63e0 */ 0xffff, /* 63e1 */ 0xffff, /* 63e2 */ 0xffff, /* 63e3 */ 0xffff, /* 63e4 */ 0xffff, /* 63e5 */ 0xffff, /* 63e6 */ 0xffff, /* 63e7 */ 0xffff, /* 63e8 */ 0xffff, /* 63e9 */ 0xffff, /* 63ea */ 0xffff, /* 63eb */ 0xffff, /* 63ec */ 0xffff, /* 63ed */ 0xffff, /* 63ee */ 0xffff, /* 63ef */ 0xffff, /* 63f0 */ 0xffff, /* 63f1 */ 0xffff, /* 63f2 */ 0xffff, /* 63f3 */ 0xffff, /* 63f4 */ 0xffff, /* 63f5 */ 0xffff, /* 63f6 */ 0xffff, /* 63f7 */ 0xffff, /* 63f8 */ 0xffff, /* 63f9 */ 0xffff, /* 63fa */ 0xffff, /* 63fb */ 0xffff, /* 63fc */ 0xffff, /* 63fd */ 0xffff, /* 63fe */ 0xffff, /* 63ff */ 0xffff, /* 6400 */ 0xffff, /* 6401 */ 0xffff, /* 6402 */ 0xffff, /* 6403 */ 0xffff, /* 6404 */ 0xffff, /* 6405 */ 0xffff, /* 6406 */ 0xffff, /* 6407 */ 0xffff, /* 6408 */ 0xffff, /* 6409 */ 0xffff, /* 640a */ 0xffff, /* 640b */ 0xffff, /* 640c */ 0xffff, /* 640d */ 0xffff, /* 640e */ 0xffff, /* 640f */ 0xffff, /* 6410 */ 0xffff, /* 6411 */ 0xffff, /* 6412 */ 0xffff, /* 6413 */ 0xffff, /* 6414 */ 0xffff, /* 6415 */ 0xffff, /* 6416 */ 0xffff, /* 6417 */ 0xffff, /* 6418 */ 0xffff, /* 6419 */ 0xffff, /* 641a */ 0xffff, /* 641b */ 0xffff, /* 641c */ 0xffff, /* 641d */ 0xffff, /* 641e */ 0xffff, /* 641f */ 0xffff, /* 6420 */ 0xffff, /* 6421 */ 0xffff, /* 6422 */ 0xffff, /* 6423 */ 0xffff, /* 6424 */ 0xffff, /* 6425 */ 0xffff, /* 6426 */ 0xffff, /* 6427 */ 0xffff, /* 6428 */ 0xffff, /* 6429 */ 0xffff, /* 642a */ 0xffff, /* 642b */ 0xffff, /* 642c */ 0xffff, /* 642d */ 0xffff, /* 642e */ 0xffff, /* 642f */ 0xffff, /* 6430 */ 0xffff, /* 6431 */ 0xffff, /* 6432 */ 0xffff, /* 6433 */ 0xffff, /* 6434 */ 0xffff, /* 6435 */ 0xffff, /* 6436 */ 0xffff, /* 6437 */ 0xffff, /* 6438 */ 0xffff, /* 6439 */ 0xffff, /* 643a */ 0xffff, /* 643b */ 0xffff, /* 643c */ 0xffff, /* 643d */ 0xffff, /* 643e */ 0xffff, /* 643f */ 0xffff, /* 6440 */ 0xffff, /* 6441 */ 0xffff, /* 6442 */ 0xffff, /* 6443 */ 0xffff, /* 6444 */ 0xffff, /* 6445 */ 0xffff, /* 6446 */ 0xffff, /* 6447 */ 0xffff, /* 6448 */ 0xffff, /* 6449 */ 0xffff, /* 644a */ 0xffff, /* 644b */ 0xffff, /* 644c */ 0xffff, /* 644d */ 0xffff, /* 644e */ 0xffff, /* 644f */ 0xffff, /* 6450 */ 0xffff, /* 6451 */ 0xffff, /* 6452 */ 0xffff, /* 6453 */ 0xffff, /* 6454 */ 0xffff, /* 6455 */ 0xffff, /* 6456 */ 0xffff, /* 6457 */ 0xffff, /* 6458 */ 0xffff, /* 6459 */ 0xffff, /* 645a */ 0xffff, /* 645b */ 0xffff, /* 645c */ 0xffff, /* 645d */ 0xffff, /* 645e */ 0xffff, /* 645f */ 0xffff, /* 6460 */ 0xffff, /* 6461 */ 0xffff, /* 6462 */ 0xffff, /* 6463 */ 0xffff, /* 6464 */ 0xffff, /* 6465 */ 0xffff, /* 6466 */ 0xffff, /* 6467 */ 0xffff, /* 6468 */ 0xffff, /* 6469 */ 0xffff, /* 646a */ 0xffff, /* 646b */ 0xffff, /* 646c */ 0xffff, /* 646d */ 0xffff, /* 646e */ 0xffff, /* 646f */ 0xffff, /* 6470 */ 0xffff, /* 6471 */ 0xffff, /* 6472 */ 0xffff, /* 6473 */ 0xffff, /* 6474 */ 0xffff, /* 6475 */ 0xffff, /* 6476 */ 0xffff, /* 6477 */ 0xffff, /* 6478 */ 0xffff, /* 6479 */ 0xffff, /* 647a */ 0xffff, /* 647b */ 0xffff, /* 647c */ 0xffff, /* 647d */ 0xffff, /* 647e */ 0xffff, /* 647f */ 0xffff, /* 6480 */ 0xffff, /* 6481 */ 0xffff, /* 6482 */ 0xffff, /* 6483 */ 0xffff, /* 6484 */ 0xffff, /* 6485 */ 0xffff, /* 6486 */ 0xffff, /* 6487 */ 0xffff, /* 6488 */ 0xffff, /* 6489 */ 0xffff, /* 648a */ 0xffff, /* 648b */ 0xffff, /* 648c */ 0xffff, /* 648d */ 0xffff, /* 648e */ 0xffff, /* 648f */ 0xffff, /* 6490 */ 0xffff, /* 6491 */ 0xffff, /* 6492 */ 0xffff, /* 6493 */ 0xffff, /* 6494 */ 0xffff, /* 6495 */ 0xffff, /* 6496 */ 0xffff, /* 6497 */ 0xffff, /* 6498 */ 0xffff, /* 6499 */ 0xffff, /* 649a */ 0xffff, /* 649b */ 0xffff, /* 649c */ 0xffff, /* 649d */ 0xffff, /* 649e */ 0xffff, /* 649f */ 0xffff, /* 64a0 */ 0xffff, /* 64a1 */ 0xffff, /* 64a2 */ 0xffff, /* 64a3 */ 0xffff, /* 64a4 */ 0xffff, /* 64a5 */ 0xffff, /* 64a6 */ 0xffff, /* 64a7 */ 0xffff, /* 64a8 */ 0xffff, /* 64a9 */ 0xffff, /* 64aa */ 0xffff, /* 64ab */ 0xffff, /* 64ac */ 0xffff, /* 64ad */ 0xffff, /* 64ae */ 0xffff, /* 64af */ 0xffff, /* 64b0 */ 0xffff, /* 64b1 */ 0xffff, /* 64b2 */ 0xffff, /* 64b3 */ 0xffff, /* 64b4 */ 0xffff, /* 64b5 */ 0xffff, /* 64b6 */ 0xffff, /* 64b7 */ 0xffff, /* 64b8 */ 0xffff, /* 64b9 */ 0xffff, /* 64ba */ 0xffff, /* 64bb */ 0xffff, /* 64bc */ 0xffff, /* 64bd */ 0xffff, /* 64be */ 0xffff, /* 64bf */ 0xffff, /* 64c0 */ 0xffff, /* 64c1 */ 0xffff, /* 64c2 */ 0xffff, /* 64c3 */ 0xffff, /* 64c4 */ 0xffff, /* 64c5 */ 0xffff, /* 64c6 */ 0xffff, /* 64c7 */ 0xffff, /* 64c8 */ 0xffff, /* 64c9 */ 0xffff, /* 64ca */ 0xffff, /* 64cb */ 0xffff, /* 64cc */ 0xffff, /* 64cd */ 0xffff, /* 64ce */ 0xffff, /* 64cf */ 0xffff, /* 64d0 */ 0xffff, /* 64d1 */ 0xffff, /* 64d2 */ 0xffff, /* 64d3 */ 0xffff, /* 64d4 */ 0xffff, /* 64d5 */ 0xffff, /* 64d6 */ 0xffff, /* 64d7 */ 0xffff, /* 64d8 */ 0xffff, /* 64d9 */ 0xffff, /* 64da */ 0xffff, /* 64db */ 0xffff, /* 64dc */ 0xffff, /* 64dd */ 0xffff, /* 64de */ 0xffff, /* 64df */ 0xffff, /* 64e0 */ 0xffff, /* 64e1 */ 0xffff, /* 64e2 */ 0xffff, /* 64e3 */ 0xffff, /* 64e4 */ 0xffff, /* 64e5 */ 0xffff, /* 64e6 */ 0xffff, /* 64e7 */ 0xffff, /* 64e8 */ 0xffff, /* 64e9 */ 0xffff, /* 64ea */ 0xffff, /* 64eb */ 0xffff, /* 64ec */ 0xffff, /* 64ed */ 0xffff, /* 64ee */ 0xffff, /* 64ef */ 0xffff, /* 64f0 */ 0xffff, /* 64f1 */ 0xffff, /* 64f2 */ 0xffff, /* 64f3 */ 0xffff, /* 64f4 */ 0xffff, /* 64f5 */ 0xffff, /* 64f6 */ 0xffff, /* 64f7 */ 0xffff, /* 64f8 */ 0xffff, /* 64f9 */ 0xffff, /* 64fa */ 0xffff, /* 64fb */ 0xffff, /* 64fc */ 0xffff, /* 64fd */ 0xffff, /* 64fe */ 0xffff, /* 64ff */ 0xffff, /* 6500 */ 0xffff, /* 6501 */ 0xffff, /* 6502 */ 0xffff, /* 6503 */ 0xffff, /* 6504 */ 0xffff, /* 6505 */ 0xffff, /* 6506 */ 0xffff, /* 6507 */ 0xffff, /* 6508 */ 0xffff, /* 6509 */ 0xffff, /* 650a */ 0xffff, /* 650b */ 0xffff, /* 650c */ 0xffff, /* 650d */ 0xffff, /* 650e */ 0xffff, /* 650f */ 0xffff, /* 6510 */ 0xffff, /* 6511 */ 0xffff, /* 6512 */ 0xffff, /* 6513 */ 0xffff, /* 6514 */ 0xffff, /* 6515 */ 0xffff, /* 6516 */ 0xffff, /* 6517 */ 0xffff, /* 6518 */ 0xffff, /* 6519 */ 0xffff, /* 651a */ 0xffff, /* 651b */ 0xffff, /* 651c */ 0xffff, /* 651d */ 0xffff, /* 651e */ 0xffff, /* 651f */ 0xffff, /* 6520 */ 0xffff, /* 6521 */ 0xffff, /* 6522 */ 0xffff, /* 6523 */ 0xffff, /* 6524 */ 0xffff, /* 6525 */ 0xffff, /* 6526 */ 0xffff, /* 6527 */ 0xffff, /* 6528 */ 0xffff, /* 6529 */ 0xffff, /* 652a */ 0xffff, /* 652b */ 0xffff, /* 652c */ 0xffff, /* 652d */ 0xffff, /* 652e */ 0xffff, /* 652f */ 0xffff, /* 6530 */ 0xffff, /* 6531 */ 0xffff, /* 6532 */ 0xffff, /* 6533 */ 0xffff, /* 6534 */ 0xffff, /* 6535 */ 0xffff, /* 6536 */ 0xffff, /* 6537 */ 0xffff, /* 6538 */ 0xffff, /* 6539 */ 0xffff, /* 653a */ 0xffff, /* 653b */ 0xffff, /* 653c */ 0xffff, /* 653d */ 0xffff, /* 653e */ 0xffff, /* 653f */ 0xffff, /* 6540 */ 0xffff, /* 6541 */ 0xffff, /* 6542 */ 0xffff, /* 6543 */ 0xffff, /* 6544 */ 0xffff, /* 6545 */ 0xffff, /* 6546 */ 0xffff, /* 6547 */ 0xffff, /* 6548 */ 0xffff, /* 6549 */ 0xffff, /* 654a */ 0xffff, /* 654b */ 0xffff, /* 654c */ 0xffff, /* 654d */ 0xffff, /* 654e */ 0xffff, /* 654f */ 0xffff, /* 6550 */ 0xffff, /* 6551 */ 0xffff, /* 6552 */ 0xffff, /* 6553 */ 0xffff, /* 6554 */ 0xffff, /* 6555 */ 0xffff, /* 6556 */ 0xffff, /* 6557 */ 0xffff, /* 6558 */ 0xffff, /* 6559 */ 0xffff, /* 655a */ 0xffff, /* 655b */ 0xffff, /* 655c */ 0xffff, /* 655d */ 0xffff, /* 655e */ 0xffff, /* 655f */ 0xffff, /* 6560 */ 0xffff, /* 6561 */ 0xffff, /* 6562 */ 0xffff, /* 6563 */ 0xffff, /* 6564 */ 0xffff, /* 6565 */ 0xffff, /* 6566 */ 0xffff, /* 6567 */ 0xffff, /* 6568 */ 0xffff, /* 6569 */ 0xffff, /* 656a */ 0xffff, /* 656b */ 0xffff, /* 656c */ 0xffff, /* 656d */ 0xffff, /* 656e */ 0xffff, /* 656f */ 0xffff, /* 6570 */ 0xffff, /* 6571 */ 0xffff, /* 6572 */ 0xffff, /* 6573 */ 0xffff, /* 6574 */ 0xffff, /* 6575 */ 0xffff, /* 6576 */ 0xffff, /* 6577 */ 0xffff, /* 6578 */ 0xffff, /* 6579 */ 0xffff, /* 657a */ 0xffff, /* 657b */ 0xffff, /* 657c */ 0xffff, /* 657d */ 0xffff, /* 657e */ 0xffff, /* 657f */ 0xffff, /* 6580 */ 0xffff, /* 6581 */ 0xffff, /* 6582 */ 0xffff, /* 6583 */ 0xffff, /* 6584 */ 0xffff, /* 6585 */ 0xffff, /* 6586 */ 0xffff, /* 6587 */ 0xffff, /* 6588 */ 0xffff, /* 6589 */ 0xffff, /* 658a */ 0xffff, /* 658b */ 0xffff, /* 658c */ 0xffff, /* 658d */ 0xffff, /* 658e */ 0xffff, /* 658f */ 0xffff, /* 6590 */ 0xffff, /* 6591 */ 0xffff, /* 6592 */ 0xffff, /* 6593 */ 0xffff, /* 6594 */ 0xffff, /* 6595 */ 0xffff, /* 6596 */ 0xffff, /* 6597 */ 0xffff, /* 6598 */ 0xffff, /* 6599 */ 0xffff, /* 659a */ 0xffff, /* 659b */ 0xffff, /* 659c */ 0xffff, /* 659d */ 0xffff, /* 659e */ 0xffff, /* 659f */ 0xffff, /* 65a0 */ 0xffff, /* 65a1 */ 0xffff, /* 65a2 */ 0xffff, /* 65a3 */ 0xffff, /* 65a4 */ 0xffff, /* 65a5 */ 0xffff, /* 65a6 */ 0xffff, /* 65a7 */ 0xffff, /* 65a8 */ 0xffff, /* 65a9 */ 0xffff, /* 65aa */ 0xffff, /* 65ab */ 0xffff, /* 65ac */ 0xffff, /* 65ad */ 0xffff, /* 65ae */ 0xffff, /* 65af */ 0xffff, /* 65b0 */ 0xffff, /* 65b1 */ 0xffff, /* 65b2 */ 0xffff, /* 65b3 */ 0xffff, /* 65b4 */ 0xffff, /* 65b5 */ 0xffff, /* 65b6 */ 0xffff, /* 65b7 */ 0xffff, /* 65b8 */ 0xffff, /* 65b9 */ 0xffff, /* 65ba */ 0xffff, /* 65bb */ 0xffff, /* 65bc */ 0xffff, /* 65bd */ 0xffff, /* 65be */ 0xffff, /* 65bf */ 0xffff, /* 65c0 */ 0xffff, /* 65c1 */ 0xffff, /* 65c2 */ 0xffff, /* 65c3 */ 0xffff, /* 65c4 */ 0xffff, /* 65c5 */ 0xffff, /* 65c6 */ 0xffff, /* 65c7 */ 0xffff, /* 65c8 */ 0xffff, /* 65c9 */ 0xffff, /* 65ca */ 0xffff, /* 65cb */ 0xffff, /* 65cc */ 0xffff, /* 65cd */ 0xffff, /* 65ce */ 0xffff, /* 65cf */ 0xffff, /* 65d0 */ 0xffff, /* 65d1 */ 0xffff, /* 65d2 */ 0xffff, /* 65d3 */ 0xffff, /* 65d4 */ 0xffff, /* 65d5 */ 0xffff, /* 65d6 */ 0xffff, /* 65d7 */ 0xffff, /* 65d8 */ 0xffff, /* 65d9 */ 0xffff, /* 65da */ 0xffff, /* 65db */ 0xffff, /* 65dc */ 0xffff, /* 65dd */ 0xffff, /* 65de */ 0xffff, /* 65df */ 0xffff, /* 65e0 */ 0xffff, /* 65e1 */ 0xffff, /* 65e2 */ 0xffff, /* 65e3 */ 0xffff, /* 65e4 */ 0xffff, /* 65e5 */ 0xffff, /* 65e6 */ 0xffff, /* 65e7 */ 0xffff, /* 65e8 */ 0xffff, /* 65e9 */ 0xffff, /* 65ea */ 0xffff, /* 65eb */ 0xffff, /* 65ec */ 0xffff, /* 65ed */ 0xffff, /* 65ee */ 0xffff, /* 65ef */ 0xffff, /* 65f0 */ 0xffff, /* 65f1 */ 0xffff, /* 65f2 */ 0xffff, /* 65f3 */ 0xffff, /* 65f4 */ 0xffff, /* 65f5 */ 0xffff, /* 65f6 */ 0xffff, /* 65f7 */ 0xffff, /* 65f8 */ 0xffff, /* 65f9 */ 0xffff, /* 65fa */ 0xffff, /* 65fb */ 0xffff, /* 65fc */ 0xffff, /* 65fd */ 0xffff, /* 65fe */ 0xffff, /* 65ff */ 0xffff, /* 6600 */ 0xffff, /* 6601 */ 0xffff, /* 6602 */ 0xffff, /* 6603 */ 0xffff, /* 6604 */ 0xffff, /* 6605 */ 0xffff, /* 6606 */ 0xffff, /* 6607 */ 0xffff, /* 6608 */ 0xffff, /* 6609 */ 0xffff, /* 660a */ 0xffff, /* 660b */ 0xffff, /* 660c */ 0xffff, /* 660d */ 0xffff, /* 660e */ 0xffff, /* 660f */ 0xffff, /* 6610 */ 0xffff, /* 6611 */ 0xffff, /* 6612 */ 0xffff, /* 6613 */ 0xffff, /* 6614 */ 0xffff, /* 6615 */ 0xffff, /* 6616 */ 0xffff, /* 6617 */ 0xffff, /* 6618 */ 0xffff, /* 6619 */ 0xffff, /* 661a */ 0xffff, /* 661b */ 0xffff, /* 661c */ 0xffff, /* 661d */ 0xffff, /* 661e */ 0xffff, /* 661f */ 0xffff, /* 6620 */ 0xffff, /* 6621 */ 0xffff, /* 6622 */ 0xffff, /* 6623 */ 0xffff, /* 6624 */ 0xffff, /* 6625 */ 0xffff, /* 6626 */ 0xffff, /* 6627 */ 0xffff, /* 6628 */ 0xffff, /* 6629 */ 0xffff, /* 662a */ 0xffff, /* 662b */ 0xffff, /* 662c */ 0xffff, /* 662d */ 0xffff, /* 662e */ 0xffff, /* 662f */ 0xffff, /* 6630 */ 0xffff, /* 6631 */ 0xffff, /* 6632 */ 0xffff, /* 6633 */ 0xffff, /* 6634 */ 0xffff, /* 6635 */ 0xffff, /* 6636 */ 0xffff, /* 6637 */ 0xffff, /* 6638 */ 0xffff, /* 6639 */ 0xffff, /* 663a */ 0xffff, /* 663b */ 0xffff, /* 663c */ 0xffff, /* 663d */ 0xffff, /* 663e */ 0xffff, /* 663f */ 0xffff, /* 6640 */ 0xffff, /* 6641 */ 0xffff, /* 6642 */ 0xffff, /* 6643 */ 0xffff, /* 6644 */ 0xffff, /* 6645 */ 0xffff, /* 6646 */ 0xffff, /* 6647 */ 0xffff, /* 6648 */ 0xffff, /* 6649 */ 0xffff, /* 664a */ 0xffff, /* 664b */ 0xffff, /* 664c */ 0xffff, /* 664d */ 0xffff, /* 664e */ 0xffff, /* 664f */ 0xffff, /* 6650 */ 0xffff, /* 6651 */ 0xffff, /* 6652 */ 0xffff, /* 6653 */ 0xffff, /* 6654 */ 0xffff, /* 6655 */ 0xffff, /* 6656 */ 0xffff, /* 6657 */ 0xffff, /* 6658 */ 0xffff, /* 6659 */ 0xffff, /* 665a */ 0xffff, /* 665b */ 0xffff, /* 665c */ 0xffff, /* 665d */ 0xffff, /* 665e */ 0xffff, /* 665f */ 0xffff, /* 6660 */ 0xffff, /* 6661 */ 0xffff, /* 6662 */ 0xffff, /* 6663 */ 0xffff, /* 6664 */ 0xffff, /* 6665 */ 0xffff, /* 6666 */ 0xffff, /* 6667 */ 0xffff, /* 6668 */ 0xffff, /* 6669 */ 0xffff, /* 666a */ 0xffff, /* 666b */ 0xffff, /* 666c */ 0xffff, /* 666d */ 0xffff, /* 666e */ 0xffff, /* 666f */ 0xffff, /* 6670 */ 0xffff, /* 6671 */ 0xffff, /* 6672 */ 0xffff, /* 6673 */ 0xffff, /* 6674 */ 0xffff, /* 6675 */ 0xffff, /* 6676 */ 0xffff, /* 6677 */ 0xffff, /* 6678 */ 0xffff, /* 6679 */ 0xffff, /* 667a */ 0xffff, /* 667b */ 0xffff, /* 667c */ 0xffff, /* 667d */ 0xffff, /* 667e */ 0xffff, /* 667f */ 0xffff, /* 6680 */ 0xffff, /* 6681 */ 0xffff, /* 6682 */ 0xffff, /* 6683 */ 0xffff, /* 6684 */ 0xffff, /* 6685 */ 0xffff, /* 6686 */ 0xffff, /* 6687 */ 0xffff, /* 6688 */ 0xffff, /* 6689 */ 0xffff, /* 668a */ 0xffff, /* 668b */ 0xffff, /* 668c */ 0xffff, /* 668d */ 0xffff, /* 668e */ 0xffff, /* 668f */ 0xffff, /* 6690 */ 0xffff, /* 6691 */ 0xffff, /* 6692 */ 0xffff, /* 6693 */ 0xffff, /* 6694 */ 0xffff, /* 6695 */ 0xffff, /* 6696 */ 0xffff, /* 6697 */ 0xffff, /* 6698 */ 0xffff, /* 6699 */ 0xffff, /* 669a */ 0xffff, /* 669b */ 0xffff, /* 669c */ 0xffff, /* 669d */ 0xffff, /* 669e */ 0xffff, /* 669f */ 0xffff, /* 66a0 */ 0xffff, /* 66a1 */ 0xffff, /* 66a2 */ 0xffff, /* 66a3 */ 0xffff, /* 66a4 */ 0xffff, /* 66a5 */ 0xffff, /* 66a6 */ 0xffff, /* 66a7 */ 0xffff, /* 66a8 */ 0xffff, /* 66a9 */ 0xffff, /* 66aa */ 0xffff, /* 66ab */ 0xffff, /* 66ac */ 0xffff, /* 66ad */ 0xffff, /* 66ae */ 0xffff, /* 66af */ 0xffff, /* 66b0 */ 0xffff, /* 66b1 */ 0xffff, /* 66b2 */ 0xffff, /* 66b3 */ 0xffff, /* 66b4 */ 0xffff, /* 66b5 */ 0xffff, /* 66b6 */ 0xffff, /* 66b7 */ 0xffff, /* 66b8 */ 0xffff, /* 66b9 */ 0xffff, /* 66ba */ 0xffff, /* 66bb */ 0xffff, /* 66bc */ 0xffff, /* 66bd */ 0xffff, /* 66be */ 0xffff, /* 66bf */ 0xffff, /* 66c0 */ 0xffff, /* 66c1 */ 0xffff, /* 66c2 */ 0xffff, /* 66c3 */ 0xffff, /* 66c4 */ 0xffff, /* 66c5 */ 0xffff, /* 66c6 */ 0xffff, /* 66c7 */ 0xffff, /* 66c8 */ 0xffff, /* 66c9 */ 0xffff, /* 66ca */ 0xffff, /* 66cb */ 0xffff, /* 66cc */ 0xffff, /* 66cd */ 0xffff, /* 66ce */ 0xffff, /* 66cf */ 0xffff, /* 66d0 */ 0xffff, /* 66d1 */ 0xffff, /* 66d2 */ 0xffff, /* 66d3 */ 0xffff, /* 66d4 */ 0xffff, /* 66d5 */ 0xffff, /* 66d6 */ 0xffff, /* 66d7 */ 0xffff, /* 66d8 */ 0xffff, /* 66d9 */ 0xffff, /* 66da */ 0xffff, /* 66db */ 0xffff, /* 66dc */ 0xffff, /* 66dd */ 0xffff, /* 66de */ 0xffff, /* 66df */ 0xffff, /* 66e0 */ 0xffff, /* 66e1 */ 0xffff, /* 66e2 */ 0xffff, /* 66e3 */ 0xffff, /* 66e4 */ 0xffff, /* 66e5 */ 0xffff, /* 66e6 */ 0xffff, /* 66e7 */ 0xffff, /* 66e8 */ 0xffff, /* 66e9 */ 0xffff, /* 66ea */ 0xffff, /* 66eb */ 0xffff, /* 66ec */ 0xffff, /* 66ed */ 0xffff, /* 66ee */ 0xffff, /* 66ef */ 0xffff, /* 66f0 */ 0xffff, /* 66f1 */ 0xffff, /* 66f2 */ 0xffff, /* 66f3 */ 0xffff, /* 66f4 */ 0xffff, /* 66f5 */ 0xffff, /* 66f6 */ 0xffff, /* 66f7 */ 0xffff, /* 66f8 */ 0xffff, /* 66f9 */ 0xffff, /* 66fa */ 0xffff, /* 66fb */ 0xffff, /* 66fc */ 0xffff, /* 66fd */ 0xffff, /* 66fe */ 0xffff, /* 66ff */ 0xffff, /* 6700 */ 0xffff, /* 6701 */ 0xffff, /* 6702 */ 0xffff, /* 6703 */ 0xffff, /* 6704 */ 0xffff, /* 6705 */ 0xffff, /* 6706 */ 0xffff, /* 6707 */ 0xffff, /* 6708 */ 0xffff, /* 6709 */ 0xffff, /* 670a */ 0xffff, /* 670b */ 0xffff, /* 670c */ 0xffff, /* 670d */ 0xffff, /* 670e */ 0xffff, /* 670f */ 0xffff, /* 6710 */ 0xffff, /* 6711 */ 0xffff, /* 6712 */ 0xffff, /* 6713 */ 0xffff, /* 6714 */ 0xffff, /* 6715 */ 0xffff, /* 6716 */ 0xffff, /* 6717 */ 0xffff, /* 6718 */ 0xffff, /* 6719 */ 0xffff, /* 671a */ 0xffff, /* 671b */ 0xffff, /* 671c */ 0xffff, /* 671d */ 0xffff, /* 671e */ 0xffff, /* 671f */ 0xffff, /* 6720 */ 0xffff, /* 6721 */ 0xffff, /* 6722 */ 0xffff, /* 6723 */ 0xffff, /* 6724 */ 0xffff, /* 6725 */ 0xffff, /* 6726 */ 0xffff, /* 6727 */ 0xffff, /* 6728 */ 0xffff, /* 6729 */ 0xffff, /* 672a */ 0xffff, /* 672b */ 0xffff, /* 672c */ 0xffff, /* 672d */ 0xffff, /* 672e */ 0xffff, /* 672f */ 0xffff, /* 6730 */ 0xffff, /* 6731 */ 0xffff, /* 6732 */ 0xffff, /* 6733 */ 0xffff, /* 6734 */ 0xffff, /* 6735 */ 0xffff, /* 6736 */ 0xffff, /* 6737 */ 0xffff, /* 6738 */ 0xffff, /* 6739 */ 0xffff, /* 673a */ 0xffff, /* 673b */ 0xffff, /* 673c */ 0xffff, /* 673d */ 0xffff, /* 673e */ 0xffff, /* 673f */ 0xffff, /* 6740 */ 0xffff, /* 6741 */ 0xffff, /* 6742 */ 0xffff, /* 6743 */ 0xffff, /* 6744 */ 0xffff, /* 6745 */ 0xffff, /* 6746 */ 0xffff, /* 6747 */ 0xffff, /* 6748 */ 0xffff, /* 6749 */ 0xffff, /* 674a */ 0xffff, /* 674b */ 0xffff, /* 674c */ 0xffff, /* 674d */ 0xffff, /* 674e */ 0xffff, /* 674f */ 0xffff, /* 6750 */ 0xffff, /* 6751 */ 0xffff, /* 6752 */ 0xffff, /* 6753 */ 0xffff, /* 6754 */ 0xffff, /* 6755 */ 0xffff, /* 6756 */ 0xffff, /* 6757 */ 0xffff, /* 6758 */ 0xffff, /* 6759 */ 0xffff, /* 675a */ 0xffff, /* 675b */ 0xffff, /* 675c */ 0xffff, /* 675d */ 0xffff, /* 675e */ 0xffff, /* 675f */ 0xffff, /* 6760 */ 0xffff, /* 6761 */ 0xffff, /* 6762 */ 0xffff, /* 6763 */ 0xffff, /* 6764 */ 0xffff, /* 6765 */ 0xffff, /* 6766 */ 0xffff, /* 6767 */ 0xffff, /* 6768 */ 0xffff, /* 6769 */ 0xffff, /* 676a */ 0xffff, /* 676b */ 0xffff, /* 676c */ 0xffff, /* 676d */ 0xffff, /* 676e */ 0xffff, /* 676f */ 0xffff, /* 6770 */ 0xffff, /* 6771 */ 0xffff, /* 6772 */ 0xffff, /* 6773 */ 0xffff, /* 6774 */ 0xffff, /* 6775 */ 0xffff, /* 6776 */ 0xffff, /* 6777 */ 0xffff, /* 6778 */ 0xffff, /* 6779 */ 0xffff, /* 677a */ 0xffff, /* 677b */ 0xffff, /* 677c */ 0xffff, /* 677d */ 0xffff, /* 677e */ 0xffff, /* 677f */ 0xffff, /* 6780 */ 0xffff, /* 6781 */ 0xffff, /* 6782 */ 0xffff, /* 6783 */ 0xffff, /* 6784 */ 0xffff, /* 6785 */ 0xffff, /* 6786 */ 0xffff, /* 6787 */ 0xffff, /* 6788 */ 0xffff, /* 6789 */ 0xffff, /* 678a */ 0xffff, /* 678b */ 0xffff, /* 678c */ 0xffff, /* 678d */ 0xffff, /* 678e */ 0xffff, /* 678f */ 0xffff, /* 6790 */ 0xffff, /* 6791 */ 0xffff, /* 6792 */ 0xffff, /* 6793 */ 0xffff, /* 6794 */ 0xffff, /* 6795 */ 0xffff, /* 6796 */ 0xffff, /* 6797 */ 0xffff, /* 6798 */ 0xffff, /* 6799 */ 0xffff, /* 679a */ 0xffff, /* 679b */ 0xffff, /* 679c */ 0xffff, /* 679d */ 0xffff, /* 679e */ 0xffff, /* 679f */ 0xffff, /* 67a0 */ 0xffff, /* 67a1 */ 0xffff, /* 67a2 */ 0xffff, /* 67a3 */ 0xffff, /* 67a4 */ 0xffff, /* 67a5 */ 0xffff, /* 67a6 */ 0xffff, /* 67a7 */ 0xffff, /* 67a8 */ 0xffff, /* 67a9 */ 0xffff, /* 67aa */ 0xffff, /* 67ab */ 0xffff, /* 67ac */ 0xffff, /* 67ad */ 0xffff, /* 67ae */ 0xffff, /* 67af */ 0xffff, /* 67b0 */ 0xffff, /* 67b1 */ 0xffff, /* 67b2 */ 0xffff, /* 67b3 */ 0xffff, /* 67b4 */ 0xffff, /* 67b5 */ 0xffff, /* 67b6 */ 0xffff, /* 67b7 */ 0xffff, /* 67b8 */ 0xffff, /* 67b9 */ 0xffff, /* 67ba */ 0xffff, /* 67bb */ 0xffff, /* 67bc */ 0xffff, /* 67bd */ 0xffff, /* 67be */ 0xffff, /* 67bf */ 0xffff, /* 67c0 */ 0xffff, /* 67c1 */ 0xffff, /* 67c2 */ 0xffff, /* 67c3 */ 0xffff, /* 67c4 */ 0xffff, /* 67c5 */ 0xffff, /* 67c6 */ 0xffff, /* 67c7 */ 0xffff, /* 67c8 */ 0xffff, /* 67c9 */ 0xffff, /* 67ca */ 0xffff, /* 67cb */ 0xffff, /* 67cc */ 0xffff, /* 67cd */ 0xffff, /* 67ce */ 0xffff, /* 67cf */ 0xffff, /* 67d0 */ 0xffff, /* 67d1 */ 0xffff, /* 67d2 */ 0xffff, /* 67d3 */ 0xffff, /* 67d4 */ 0xffff, /* 67d5 */ 0xffff, /* 67d6 */ 0xffff, /* 67d7 */ 0xffff, /* 67d8 */ 0xffff, /* 67d9 */ 0xffff, /* 67da */ 0xffff, /* 67db */ 0xffff, /* 67dc */ 0xffff, /* 67dd */ 0xffff, /* 67de */ 0xffff, /* 67df */ 0xffff, /* 67e0 */ 0xffff, /* 67e1 */ 0xffff, /* 67e2 */ 0xffff, /* 67e3 */ 0xffff, /* 67e4 */ 0xffff, /* 67e5 */ 0xffff, /* 67e6 */ 0xffff, /* 67e7 */ 0xffff, /* 67e8 */ 0xffff, /* 67e9 */ 0xffff, /* 67ea */ 0xffff, /* 67eb */ 0xffff, /* 67ec */ 0xffff, /* 67ed */ 0xffff, /* 67ee */ 0xffff, /* 67ef */ 0xffff, /* 67f0 */ 0xffff, /* 67f1 */ 0xffff, /* 67f2 */ 0xffff, /* 67f3 */ 0xffff, /* 67f4 */ 0xffff, /* 67f5 */ 0xffff, /* 67f6 */ 0xffff, /* 67f7 */ 0xffff, /* 67f8 */ 0xffff, /* 67f9 */ 0xffff, /* 67fa */ 0xffff, /* 67fb */ 0xffff, /* 67fc */ 0xffff, /* 67fd */ 0xffff, /* 67fe */ 0xffff, /* 67ff */ 0xffff, /* 6800 */ 0xffff, /* 6801 */ 0xffff, /* 6802 */ 0xffff, /* 6803 */ 0xffff, /* 6804 */ 0xffff, /* 6805 */ 0xffff, /* 6806 */ 0xffff, /* 6807 */ 0xffff, /* 6808 */ 0xffff, /* 6809 */ 0xffff, /* 680a */ 0xffff, /* 680b */ 0xffff, /* 680c */ 0xffff, /* 680d */ 0xffff, /* 680e */ 0xffff, /* 680f */ 0xffff, /* 6810 */ 0xffff, /* 6811 */ 0xffff, /* 6812 */ 0xffff, /* 6813 */ 0xffff, /* 6814 */ 0xffff, /* 6815 */ 0xffff, /* 6816 */ 0xffff, /* 6817 */ 0xffff, /* 6818 */ 0xffff, /* 6819 */ 0xffff, /* 681a */ 0xffff, /* 681b */ 0xffff, /* 681c */ 0xffff, /* 681d */ 0xffff, /* 681e */ 0xffff, /* 681f */ 0xffff, /* 6820 */ 0xffff, /* 6821 */ 0xffff, /* 6822 */ 0xffff, /* 6823 */ 0xffff, /* 6824 */ 0xffff, /* 6825 */ 0xffff, /* 6826 */ 0xffff, /* 6827 */ 0xffff, /* 6828 */ 0xffff, /* 6829 */ 0xffff, /* 682a */ 0xffff, /* 682b */ 0xffff, /* 682c */ 0xffff, /* 682d */ 0xffff, /* 682e */ 0xffff, /* 682f */ 0xffff, /* 6830 */ 0xffff, /* 6831 */ 0xffff, /* 6832 */ 0xffff, /* 6833 */ 0xffff, /* 6834 */ 0xffff, /* 6835 */ 0xffff, /* 6836 */ 0xffff, /* 6837 */ 0xffff, /* 6838 */ 0xffff, /* 6839 */ 0xffff, /* 683a */ 0xffff, /* 683b */ 0xffff, /* 683c */ 0xffff, /* 683d */ 0xffff, /* 683e */ 0xffff, /* 683f */ 0xffff, /* 6840 */ 0xffff, /* 6841 */ 0xffff, /* 6842 */ 0xffff, /* 6843 */ 0xffff, /* 6844 */ 0xffff, /* 6845 */ 0xffff, /* 6846 */ 0xffff, /* 6847 */ 0xffff, /* 6848 */ 0xffff, /* 6849 */ 0xffff, /* 684a */ 0xffff, /* 684b */ 0xffff, /* 684c */ 0xffff, /* 684d */ 0xffff, /* 684e */ 0xffff, /* 684f */ 0xffff, /* 6850 */ 0xffff, /* 6851 */ 0xffff, /* 6852 */ 0xffff, /* 6853 */ 0xffff, /* 6854 */ 0xffff, /* 6855 */ 0xffff, /* 6856 */ 0xffff, /* 6857 */ 0xffff, /* 6858 */ 0xffff, /* 6859 */ 0xffff, /* 685a */ 0xffff, /* 685b */ 0xffff, /* 685c */ 0xffff, /* 685d */ 0xffff, /* 685e */ 0xffff, /* 685f */ 0xffff, /* 6860 */ 0xffff, /* 6861 */ 0xffff, /* 6862 */ 0xffff, /* 6863 */ 0xffff, /* 6864 */ 0xffff, /* 6865 */ 0xffff, /* 6866 */ 0xffff, /* 6867 */ 0xffff, /* 6868 */ 0xffff, /* 6869 */ 0xffff, /* 686a */ 0xffff, /* 686b */ 0xffff, /* 686c */ 0xffff, /* 686d */ 0xffff, /* 686e */ 0xffff, /* 686f */ 0xffff, /* 6870 */ 0xffff, /* 6871 */ 0xffff, /* 6872 */ 0xffff, /* 6873 */ 0xffff, /* 6874 */ 0xffff, /* 6875 */ 0xffff, /* 6876 */ 0xffff, /* 6877 */ 0xffff, /* 6878 */ 0xffff, /* 6879 */ 0xffff, /* 687a */ 0xffff, /* 687b */ 0xffff, /* 687c */ 0xffff, /* 687d */ 0xffff, /* 687e */ 0xffff, /* 687f */ 0xffff, /* 6880 */ 0xffff, /* 6881 */ 0xffff, /* 6882 */ 0xffff, /* 6883 */ 0xffff, /* 6884 */ 0xffff, /* 6885 */ 0xffff, /* 6886 */ 0xffff, /* 6887 */ 0xffff, /* 6888 */ 0xffff, /* 6889 */ 0xffff, /* 688a */ 0xffff, /* 688b */ 0xffff, /* 688c */ 0xffff, /* 688d */ 0xffff, /* 688e */ 0xffff, /* 688f */ 0xffff, /* 6890 */ 0xffff, /* 6891 */ 0xffff, /* 6892 */ 0xffff, /* 6893 */ 0xffff, /* 6894 */ 0xffff, /* 6895 */ 0xffff, /* 6896 */ 0xffff, /* 6897 */ 0xffff, /* 6898 */ 0xffff, /* 6899 */ 0xffff, /* 689a */ 0xffff, /* 689b */ 0xffff, /* 689c */ 0xffff, /* 689d */ 0xffff, /* 689e */ 0xffff, /* 689f */ 0xffff, /* 68a0 */ 0xffff, /* 68a1 */ 0xffff, /* 68a2 */ 0xffff, /* 68a3 */ 0xffff, /* 68a4 */ 0xffff, /* 68a5 */ 0xffff, /* 68a6 */ 0xffff, /* 68a7 */ 0xffff, /* 68a8 */ 0xffff, /* 68a9 */ 0xffff, /* 68aa */ 0xffff, /* 68ab */ 0xffff, /* 68ac */ 0xffff, /* 68ad */ 0xffff, /* 68ae */ 0xffff, /* 68af */ 0xffff, /* 68b0 */ 0xffff, /* 68b1 */ 0xffff, /* 68b2 */ 0xffff, /* 68b3 */ 0xffff, /* 68b4 */ 0xffff, /* 68b5 */ 0xffff, /* 68b6 */ 0xffff, /* 68b7 */ 0xffff, /* 68b8 */ 0xffff, /* 68b9 */ 0xffff, /* 68ba */ 0xffff, /* 68bb */ 0xffff, /* 68bc */ 0xffff, /* 68bd */ 0xffff, /* 68be */ 0xffff, /* 68bf */ 0xffff, /* 68c0 */ 0xffff, /* 68c1 */ 0xffff, /* 68c2 */ 0xffff, /* 68c3 */ 0xffff, /* 68c4 */ 0xffff, /* 68c5 */ 0xffff, /* 68c6 */ 0xffff, /* 68c7 */ 0xffff, /* 68c8 */ 0xffff, /* 68c9 */ 0xffff, /* 68ca */ 0xffff, /* 68cb */ 0xffff, /* 68cc */ 0xffff, /* 68cd */ 0xffff, /* 68ce */ 0xffff, /* 68cf */ 0xffff, /* 68d0 */ 0xffff, /* 68d1 */ 0xffff, /* 68d2 */ 0xffff, /* 68d3 */ 0xffff, /* 68d4 */ 0xffff, /* 68d5 */ 0xffff, /* 68d6 */ 0xffff, /* 68d7 */ 0xffff, /* 68d8 */ 0xffff, /* 68d9 */ 0xffff, /* 68da */ 0xffff, /* 68db */ 0xffff, /* 68dc */ 0xffff, /* 68dd */ 0xffff, /* 68de */ 0xffff, /* 68df */ 0xffff, /* 68e0 */ 0xffff, /* 68e1 */ 0xffff, /* 68e2 */ 0xffff, /* 68e3 */ 0xffff, /* 68e4 */ 0xffff, /* 68e5 */ 0xffff, /* 68e6 */ 0xffff, /* 68e7 */ 0xffff, /* 68e8 */ 0xffff, /* 68e9 */ 0xffff, /* 68ea */ 0xffff, /* 68eb */ 0xffff, /* 68ec */ 0xffff, /* 68ed */ 0xffff, /* 68ee */ 0xffff, /* 68ef */ 0xffff, /* 68f0 */ 0xffff, /* 68f1 */ 0xffff, /* 68f2 */ 0xffff, /* 68f3 */ 0xffff, /* 68f4 */ 0xffff, /* 68f5 */ 0xffff, /* 68f6 */ 0xffff, /* 68f7 */ 0xffff, /* 68f8 */ 0xffff, /* 68f9 */ 0xffff, /* 68fa */ 0xffff, /* 68fb */ 0xffff, /* 68fc */ 0xffff, /* 68fd */ 0xffff, /* 68fe */ 0xffff, /* 68ff */ 0xffff, /* 6900 */ 0xffff, /* 6901 */ 0xffff, /* 6902 */ 0xffff, /* 6903 */ 0xffff, /* 6904 */ 0xffff, /* 6905 */ 0xffff, /* 6906 */ 0xffff, /* 6907 */ 0xffff, /* 6908 */ 0xffff, /* 6909 */ 0xffff, /* 690a */ 0xffff, /* 690b */ 0xffff, /* 690c */ 0xffff, /* 690d */ 0xffff, /* 690e */ 0xffff, /* 690f */ 0xffff, /* 6910 */ 0xffff, /* 6911 */ 0xffff, /* 6912 */ 0xffff, /* 6913 */ 0xffff, /* 6914 */ 0xffff, /* 6915 */ 0xffff, /* 6916 */ 0xffff, /* 6917 */ 0xffff, /* 6918 */ 0xffff, /* 6919 */ 0xffff, /* 691a */ 0xffff, /* 691b */ 0xffff, /* 691c */ 0xffff, /* 691d */ 0xffff, /* 691e */ 0xffff, /* 691f */ 0xffff, /* 6920 */ 0xffff, /* 6921 */ 0xffff, /* 6922 */ 0xffff, /* 6923 */ 0xffff, /* 6924 */ 0xffff, /* 6925 */ 0xffff, /* 6926 */ 0xffff, /* 6927 */ 0xffff, /* 6928 */ 0xffff, /* 6929 */ 0xffff, /* 692a */ 0xffff, /* 692b */ 0xffff, /* 692c */ 0xffff, /* 692d */ 0xffff, /* 692e */ 0xffff, /* 692f */ 0xffff, /* 6930 */ 0xffff, /* 6931 */ 0xffff, /* 6932 */ 0xffff, /* 6933 */ 0xffff, /* 6934 */ 0xffff, /* 6935 */ 0xffff, /* 6936 */ 0xffff, /* 6937 */ 0xffff, /* 6938 */ 0xffff, /* 6939 */ 0xffff, /* 693a */ 0xffff, /* 693b */ 0xffff, /* 693c */ 0xffff, /* 693d */ 0xffff, /* 693e */ 0xffff, /* 693f */ 0xffff, /* 6940 */ 0xffff, /* 6941 */ 0xffff, /* 6942 */ 0xffff, /* 6943 */ 0xffff, /* 6944 */ 0xffff, /* 6945 */ 0xffff, /* 6946 */ 0xffff, /* 6947 */ 0xffff, /* 6948 */ 0xffff, /* 6949 */ 0xffff, /* 694a */ 0xffff, /* 694b */ 0xffff, /* 694c */ 0xffff, /* 694d */ 0xffff, /* 694e */ 0xffff, /* 694f */ 0xffff, /* 6950 */ 0xffff, /* 6951 */ 0xffff, /* 6952 */ 0xffff, /* 6953 */ 0xffff, /* 6954 */ 0xffff, /* 6955 */ 0xffff, /* 6956 */ 0xffff, /* 6957 */ 0xffff, /* 6958 */ 0xffff, /* 6959 */ 0xffff, /* 695a */ 0xffff, /* 695b */ 0xffff, /* 695c */ 0xffff, /* 695d */ 0xffff, /* 695e */ 0xffff, /* 695f */ 0xffff, /* 6960 */ 0xffff, /* 6961 */ 0xffff, /* 6962 */ 0xffff, /* 6963 */ 0xffff, /* 6964 */ 0xffff, /* 6965 */ 0xffff, /* 6966 */ 0xffff, /* 6967 */ 0xffff, /* 6968 */ 0xffff, /* 6969 */ 0xffff, /* 696a */ 0xffff, /* 696b */ 0xffff, /* 696c */ 0xffff, /* 696d */ 0xffff, /* 696e */ 0xffff, /* 696f */ 0xffff, /* 6970 */ 0xffff, /* 6971 */ 0xffff, /* 6972 */ 0xffff, /* 6973 */ 0xffff, /* 6974 */ 0xffff, /* 6975 */ 0xffff, /* 6976 */ 0xffff, /* 6977 */ 0xffff, /* 6978 */ 0xffff, /* 6979 */ 0xffff, /* 697a */ 0xffff, /* 697b */ 0xffff, /* 697c */ 0xffff, /* 697d */ 0xffff, /* 697e */ 0xffff, /* 697f */ 0xffff, /* 6980 */ 0xffff, /* 6981 */ 0xffff, /* 6982 */ 0xffff, /* 6983 */ 0xffff, /* 6984 */ 0xffff, /* 6985 */ 0xffff, /* 6986 */ 0xffff, /* 6987 */ 0xffff, /* 6988 */ 0xffff, /* 6989 */ 0xffff, /* 698a */ 0xffff, /* 698b */ 0xffff, /* 698c */ 0xffff, /* 698d */ 0xffff, /* 698e */ 0xffff, /* 698f */ 0xffff, /* 6990 */ 0xffff, /* 6991 */ 0xffff, /* 6992 */ 0xffff, /* 6993 */ 0xffff, /* 6994 */ 0xffff, /* 6995 */ 0xffff, /* 6996 */ 0xffff, /* 6997 */ 0xffff, /* 6998 */ 0xffff, /* 6999 */ 0xffff, /* 699a */ 0xffff, /* 699b */ 0xffff, /* 699c */ 0xffff, /* 699d */ 0xffff, /* 699e */ 0xffff, /* 699f */ 0xffff, /* 69a0 */ 0xffff, /* 69a1 */ 0xffff, /* 69a2 */ 0xffff, /* 69a3 */ 0xffff, /* 69a4 */ 0xffff, /* 69a5 */ 0xffff, /* 69a6 */ 0xffff, /* 69a7 */ 0xffff, /* 69a8 */ 0xffff, /* 69a9 */ 0xffff, /* 69aa */ 0xffff, /* 69ab */ 0xffff, /* 69ac */ 0xffff, /* 69ad */ 0xffff, /* 69ae */ 0xffff, /* 69af */ 0xffff, /* 69b0 */ 0xffff, /* 69b1 */ 0xffff, /* 69b2 */ 0xffff, /* 69b3 */ 0xffff, /* 69b4 */ 0xffff, /* 69b5 */ 0xffff, /* 69b6 */ 0xffff, /* 69b7 */ 0xffff, /* 69b8 */ 0xffff, /* 69b9 */ 0xffff, /* 69ba */ 0xffff, /* 69bb */ 0xffff, /* 69bc */ 0xffff, /* 69bd */ 0xffff, /* 69be */ 0xffff, /* 69bf */ 0xffff, /* 69c0 */ 0xffff, /* 69c1 */ 0xffff, /* 69c2 */ 0xffff, /* 69c3 */ 0xffff, /* 69c4 */ 0xffff, /* 69c5 */ 0xffff, /* 69c6 */ 0xffff, /* 69c7 */ 0xffff, /* 69c8 */ 0xffff, /* 69c9 */ 0xffff, /* 69ca */ 0xffff, /* 69cb */ 0xffff, /* 69cc */ 0xffff, /* 69cd */ 0xffff, /* 69ce */ 0xffff, /* 69cf */ 0xffff, /* 69d0 */ 0xffff, /* 69d1 */ 0xffff, /* 69d2 */ 0xffff, /* 69d3 */ 0xffff, /* 69d4 */ 0xffff, /* 69d5 */ 0xffff, /* 69d6 */ 0xffff, /* 69d7 */ 0xffff, /* 69d8 */ 0xffff, /* 69d9 */ 0xffff, /* 69da */ 0xffff, /* 69db */ 0xffff, /* 69dc */ 0xffff, /* 69dd */ 0xffff, /* 69de */ 0xffff, /* 69df */ 0xffff, /* 69e0 */ 0xffff, /* 69e1 */ 0xffff, /* 69e2 */ 0xffff, /* 69e3 */ 0xffff, /* 69e4 */ 0xffff, /* 69e5 */ 0xffff, /* 69e6 */ 0xffff, /* 69e7 */ 0xffff, /* 69e8 */ 0xffff, /* 69e9 */ 0xffff, /* 69ea */ 0xffff, /* 69eb */ 0xffff, /* 69ec */ 0xffff, /* 69ed */ 0xffff, /* 69ee */ 0xffff, /* 69ef */ 0xffff, /* 69f0 */ 0xffff, /* 69f1 */ 0xffff, /* 69f2 */ 0xffff, /* 69f3 */ 0xffff, /* 69f4 */ 0xffff, /* 69f5 */ 0xffff, /* 69f6 */ 0xffff, /* 69f7 */ 0xffff, /* 69f8 */ 0xffff, /* 69f9 */ 0xffff, /* 69fa */ 0xffff, /* 69fb */ 0xffff, /* 69fc */ 0xffff, /* 69fd */ 0xffff, /* 69fe */ 0xffff, /* 69ff */ 0xffff, /* 6a00 */ 0xffff, /* 6a01 */ 0xffff, /* 6a02 */ 0xffff, /* 6a03 */ 0xffff, /* 6a04 */ 0xffff, /* 6a05 */ 0xffff, /* 6a06 */ 0xffff, /* 6a07 */ 0xffff, /* 6a08 */ 0xffff, /* 6a09 */ 0xffff, /* 6a0a */ 0xffff, /* 6a0b */ 0xffff, /* 6a0c */ 0xffff, /* 6a0d */ 0xffff, /* 6a0e */ 0xffff, /* 6a0f */ 0xffff, /* 6a10 */ 0xffff, /* 6a11 */ 0xffff, /* 6a12 */ 0xffff, /* 6a13 */ 0xffff, /* 6a14 */ 0xffff, /* 6a15 */ 0xffff, /* 6a16 */ 0xffff, /* 6a17 */ 0xffff, /* 6a18 */ 0xffff, /* 6a19 */ 0xffff, /* 6a1a */ 0xffff, /* 6a1b */ 0xffff, /* 6a1c */ 0xffff, /* 6a1d */ 0xffff, /* 6a1e */ 0xffff, /* 6a1f */ 0xffff, /* 6a20 */ 0xffff, /* 6a21 */ 0xffff, /* 6a22 */ 0xffff, /* 6a23 */ 0xffff, /* 6a24 */ 0xffff, /* 6a25 */ 0xffff, /* 6a26 */ 0xffff, /* 6a27 */ 0xffff, /* 6a28 */ 0xffff, /* 6a29 */ 0xffff, /* 6a2a */ 0xffff, /* 6a2b */ 0xffff, /* 6a2c */ 0xffff, /* 6a2d */ 0xffff, /* 6a2e */ 0xffff, /* 6a2f */ 0xffff, /* 6a30 */ 0xffff, /* 6a31 */ 0xffff, /* 6a32 */ 0xffff, /* 6a33 */ 0xffff, /* 6a34 */ 0xffff, /* 6a35 */ 0xffff, /* 6a36 */ 0xffff, /* 6a37 */ 0xffff, /* 6a38 */ 0xffff, /* 6a39 */ 0xffff, /* 6a3a */ 0xffff, /* 6a3b */ 0xffff, /* 6a3c */ 0xffff, /* 6a3d */ 0xffff, /* 6a3e */ 0xffff, /* 6a3f */ 0xffff, /* 6a40 */ 0xffff, /* 6a41 */ 0xffff, /* 6a42 */ 0xffff, /* 6a43 */ 0xffff, /* 6a44 */ 0xffff, /* 6a45 */ 0xffff, /* 6a46 */ 0xffff, /* 6a47 */ 0xffff, /* 6a48 */ 0xffff, /* 6a49 */ 0xffff, /* 6a4a */ 0xffff, /* 6a4b */ 0xffff, /* 6a4c */ 0xffff, /* 6a4d */ 0xffff, /* 6a4e */ 0xffff, /* 6a4f */ 0xffff, /* 6a50 */ 0xffff, /* 6a51 */ 0xffff, /* 6a52 */ 0xffff, /* 6a53 */ 0xffff, /* 6a54 */ 0xffff, /* 6a55 */ 0xffff, /* 6a56 */ 0xffff, /* 6a57 */ 0xffff, /* 6a58 */ 0xffff, /* 6a59 */ 0xffff, /* 6a5a */ 0xffff, /* 6a5b */ 0xffff, /* 6a5c */ 0xffff, /* 6a5d */ 0xffff, /* 6a5e */ 0xffff, /* 6a5f */ 0xffff, /* 6a60 */ 0xffff, /* 6a61 */ 0xffff, /* 6a62 */ 0xffff, /* 6a63 */ 0xffff, /* 6a64 */ 0xffff, /* 6a65 */ 0xffff, /* 6a66 */ 0xffff, /* 6a67 */ 0xffff, /* 6a68 */ 0xffff, /* 6a69 */ 0xffff, /* 6a6a */ 0xffff, /* 6a6b */ 0xffff, /* 6a6c */ 0xffff, /* 6a6d */ 0xffff, /* 6a6e */ 0xffff, /* 6a6f */ 0xffff, /* 6a70 */ 0xffff, /* 6a71 */ 0xffff, /* 6a72 */ 0xffff, /* 6a73 */ 0xffff, /* 6a74 */ 0xffff, /* 6a75 */ 0xffff, /* 6a76 */ 0xffff, /* 6a77 */ 0xffff, /* 6a78 */ 0xffff, /* 6a79 */ 0xffff, /* 6a7a */ 0xffff, /* 6a7b */ 0xffff, /* 6a7c */ 0xffff, /* 6a7d */ 0xffff, /* 6a7e */ 0xffff, /* 6a7f */ 0xffff, /* 6a80 */ 0xffff, /* 6a81 */ 0xffff, /* 6a82 */ 0xffff, /* 6a83 */ 0xffff, /* 6a84 */ 0xffff, /* 6a85 */ 0xffff, /* 6a86 */ 0xffff, /* 6a87 */ 0xffff, /* 6a88 */ 0xffff, /* 6a89 */ 0xffff, /* 6a8a */ 0xffff, /* 6a8b */ 0xffff, /* 6a8c */ 0xffff, /* 6a8d */ 0xffff, /* 6a8e */ 0xffff, /* 6a8f */ 0xffff, /* 6a90 */ 0xffff, /* 6a91 */ 0xffff, /* 6a92 */ 0xffff, /* 6a93 */ 0xffff, /* 6a94 */ 0xffff, /* 6a95 */ 0xffff, /* 6a96 */ 0xffff, /* 6a97 */ 0xffff, /* 6a98 */ 0xffff, /* 6a99 */ 0xffff, /* 6a9a */ 0xffff, /* 6a9b */ 0xffff, /* 6a9c */ 0xffff, /* 6a9d */ 0xffff, /* 6a9e */ 0xffff, /* 6a9f */ 0xffff, /* 6aa0 */ 0xffff, /* 6aa1 */ 0xffff, /* 6aa2 */ 0xffff, /* 6aa3 */ 0xffff, /* 6aa4 */ 0xffff, /* 6aa5 */ 0xffff, /* 6aa6 */ 0xffff, /* 6aa7 */ 0xffff, /* 6aa8 */ 0xffff, /* 6aa9 */ 0xffff, /* 6aaa */ 0xffff, /* 6aab */ 0xffff, /* 6aac */ 0xffff, /* 6aad */ 0xffff, /* 6aae */ 0xffff, /* 6aaf */ 0xffff, /* 6ab0 */ 0xffff, /* 6ab1 */ 0xffff, /* 6ab2 */ 0xffff, /* 6ab3 */ 0xffff, /* 6ab4 */ 0xffff, /* 6ab5 */ 0xffff, /* 6ab6 */ 0xffff, /* 6ab7 */ 0xffff, /* 6ab8 */ 0xffff, /* 6ab9 */ 0xffff, /* 6aba */ 0xffff, /* 6abb */ 0xffff, /* 6abc */ 0xffff, /* 6abd */ 0xffff, /* 6abe */ 0xffff, /* 6abf */ 0xffff, /* 6ac0 */ 0xffff, /* 6ac1 */ 0xffff, /* 6ac2 */ 0xffff, /* 6ac3 */ 0xffff, /* 6ac4 */ 0xffff, /* 6ac5 */ 0xffff, /* 6ac6 */ 0xffff, /* 6ac7 */ 0xffff, /* 6ac8 */ 0xffff, /* 6ac9 */ 0xffff, /* 6aca */ 0xffff, /* 6acb */ 0xffff, /* 6acc */ 0xffff, /* 6acd */ 0xffff, /* 6ace */ 0xffff, /* 6acf */ 0xffff, /* 6ad0 */ 0xffff, /* 6ad1 */ 0xffff, /* 6ad2 */ 0xffff, /* 6ad3 */ 0xffff, /* 6ad4 */ 0xffff, /* 6ad5 */ 0xffff, /* 6ad6 */ 0xffff, /* 6ad7 */ 0xffff, /* 6ad8 */ 0xffff, /* 6ad9 */ 0xffff, /* 6ada */ 0xffff, /* 6adb */ 0xffff, /* 6adc */ 0xffff, /* 6add */ 0xffff, /* 6ade */ 0xffff, /* 6adf */ 0xffff, /* 6ae0 */ 0xffff, /* 6ae1 */ 0xffff, /* 6ae2 */ 0xffff, /* 6ae3 */ 0xffff, /* 6ae4 */ 0xffff, /* 6ae5 */ 0xffff, /* 6ae6 */ 0xffff, /* 6ae7 */ 0xffff, /* 6ae8 */ 0xffff, /* 6ae9 */ 0xffff, /* 6aea */ 0xffff, /* 6aeb */ 0xffff, /* 6aec */ 0xffff, /* 6aed */ 0xffff, /* 6aee */ 0xffff, /* 6aef */ 0xffff, /* 6af0 */ 0xffff, /* 6af1 */ 0xffff, /* 6af2 */ 0xffff, /* 6af3 */ 0xffff, /* 6af4 */ 0xffff, /* 6af5 */ 0xffff, /* 6af6 */ 0xffff, /* 6af7 */ 0xffff, /* 6af8 */ 0xffff, /* 6af9 */ 0xffff, /* 6afa */ 0xffff, /* 6afb */ 0xffff, /* 6afc */ 0xffff, /* 6afd */ 0xffff, /* 6afe */ 0xffff, /* 6aff */ 0xffff, /* 6b00 */ 0xffff, /* 6b01 */ 0xffff, /* 6b02 */ 0xffff, /* 6b03 */ 0xffff, /* 6b04 */ 0xffff, /* 6b05 */ 0xffff, /* 6b06 */ 0xffff, /* 6b07 */ 0xffff, /* 6b08 */ 0xffff, /* 6b09 */ 0xffff, /* 6b0a */ 0xffff, /* 6b0b */ 0xffff, /* 6b0c */ 0xffff, /* 6b0d */ 0xffff, /* 6b0e */ 0xffff, /* 6b0f */ 0xffff, /* 6b10 */ 0xffff, /* 6b11 */ 0xffff, /* 6b12 */ 0xffff, /* 6b13 */ 0xffff, /* 6b14 */ 0xffff, /* 6b15 */ 0xffff, /* 6b16 */ 0xffff, /* 6b17 */ 0xffff, /* 6b18 */ 0xffff, /* 6b19 */ 0xffff, /* 6b1a */ 0xffff, /* 6b1b */ 0xffff, /* 6b1c */ 0xffff, /* 6b1d */ 0xffff, /* 6b1e */ 0xffff, /* 6b1f */ 0xffff, /* 6b20 */ 0xffff, /* 6b21 */ 0xffff, /* 6b22 */ 0xffff, /* 6b23 */ 0xffff, /* 6b24 */ 0xffff, /* 6b25 */ 0xffff, /* 6b26 */ 0xffff, /* 6b27 */ 0xffff, /* 6b28 */ 0xffff, /* 6b29 */ 0xffff, /* 6b2a */ 0xffff, /* 6b2b */ 0xffff, /* 6b2c */ 0xffff, /* 6b2d */ 0xffff, /* 6b2e */ 0xffff, /* 6b2f */ 0xffff, /* 6b30 */ 0xffff, /* 6b31 */ 0xffff, /* 6b32 */ 0xffff, /* 6b33 */ 0xffff, /* 6b34 */ 0xffff, /* 6b35 */ 0xffff, /* 6b36 */ 0xffff, /* 6b37 */ 0xffff, /* 6b38 */ 0xffff, /* 6b39 */ 0xffff, /* 6b3a */ 0xffff, /* 6b3b */ 0xffff, /* 6b3c */ 0xffff, /* 6b3d */ 0xffff, /* 6b3e */ 0xffff, /* 6b3f */ 0xffff, /* 6b40 */ 0xffff, /* 6b41 */ 0xffff, /* 6b42 */ 0xffff, /* 6b43 */ 0xffff, /* 6b44 */ 0xffff, /* 6b45 */ 0xffff, /* 6b46 */ 0xffff, /* 6b47 */ 0xffff, /* 6b48 */ 0xffff, /* 6b49 */ 0xffff, /* 6b4a */ 0xffff, /* 6b4b */ 0xffff, /* 6b4c */ 0xffff, /* 6b4d */ 0xffff, /* 6b4e */ 0xffff, /* 6b4f */ 0xffff, /* 6b50 */ 0xffff, /* 6b51 */ 0xffff, /* 6b52 */ 0xffff, /* 6b53 */ 0xffff, /* 6b54 */ 0xffff, /* 6b55 */ 0xffff, /* 6b56 */ 0xffff, /* 6b57 */ 0xffff, /* 6b58 */ 0xffff, /* 6b59 */ 0xffff, /* 6b5a */ 0xffff, /* 6b5b */ 0xffff, /* 6b5c */ 0xffff, /* 6b5d */ 0xffff, /* 6b5e */ 0xffff, /* 6b5f */ 0xffff, /* 6b60 */ 0xffff, /* 6b61 */ 0xffff, /* 6b62 */ 0xffff, /* 6b63 */ 0xffff, /* 6b64 */ 0xffff, /* 6b65 */ 0xffff, /* 6b66 */ 0xffff, /* 6b67 */ 0xffff, /* 6b68 */ 0xffff, /* 6b69 */ 0xffff, /* 6b6a */ 0xffff, /* 6b6b */ 0xffff, /* 6b6c */ 0xffff, /* 6b6d */ 0xffff, /* 6b6e */ 0xffff, /* 6b6f */ 0xffff, /* 6b70 */ 0xffff, /* 6b71 */ 0xffff, /* 6b72 */ 0xffff, /* 6b73 */ 0xffff, /* 6b74 */ 0xffff, /* 6b75 */ 0xffff, /* 6b76 */ 0xffff, /* 6b77 */ 0xffff, /* 6b78 */ 0xffff, /* 6b79 */ 0xffff, /* 6b7a */ 0xffff, /* 6b7b */ 0xffff, /* 6b7c */ 0xffff, /* 6b7d */ 0xffff, /* 6b7e */ 0xffff, /* 6b7f */ 0xffff, /* 6b80 */ 0xffff, /* 6b81 */ 0xffff, /* 6b82 */ 0xffff, /* 6b83 */ 0xffff, /* 6b84 */ 0xffff, /* 6b85 */ 0xffff, /* 6b86 */ 0xffff, /* 6b87 */ 0xffff, /* 6b88 */ 0xffff, /* 6b89 */ 0xffff, /* 6b8a */ 0xffff, /* 6b8b */ 0xffff, /* 6b8c */ 0xffff, /* 6b8d */ 0xffff, /* 6b8e */ 0xffff, /* 6b8f */ 0xffff, /* 6b90 */ 0xffff, /* 6b91 */ 0xffff, /* 6b92 */ 0xffff, /* 6b93 */ 0xffff, /* 6b94 */ 0xffff, /* 6b95 */ 0xffff, /* 6b96 */ 0xffff, /* 6b97 */ 0xffff, /* 6b98 */ 0xffff, /* 6b99 */ 0xffff, /* 6b9a */ 0xffff, /* 6b9b */ 0xffff, /* 6b9c */ 0xffff, /* 6b9d */ 0xffff, /* 6b9e */ 0xffff, /* 6b9f */ 0xffff, /* 6ba0 */ 0xffff, /* 6ba1 */ 0xffff, /* 6ba2 */ 0xffff, /* 6ba3 */ 0xffff, /* 6ba4 */ 0xffff, /* 6ba5 */ 0xffff, /* 6ba6 */ 0xffff, /* 6ba7 */ 0xffff, /* 6ba8 */ 0xffff, /* 6ba9 */ 0xffff, /* 6baa */ 0xffff, /* 6bab */ 0xffff, /* 6bac */ 0xffff, /* 6bad */ 0xffff, /* 6bae */ 0xffff, /* 6baf */ 0xffff, /* 6bb0 */ 0xffff, /* 6bb1 */ 0xffff, /* 6bb2 */ 0xffff, /* 6bb3 */ 0xffff, /* 6bb4 */ 0xffff, /* 6bb5 */ 0xffff, /* 6bb6 */ 0xffff, /* 6bb7 */ 0xffff, /* 6bb8 */ 0xffff, /* 6bb9 */ 0xffff, /* 6bba */ 0xffff, /* 6bbb */ 0xffff, /* 6bbc */ 0xffff, /* 6bbd */ 0xffff, /* 6bbe */ 0xffff, /* 6bbf */ 0xffff, /* 6bc0 */ 0xffff, /* 6bc1 */ 0xffff, /* 6bc2 */ 0xffff, /* 6bc3 */ 0xffff, /* 6bc4 */ 0xffff, /* 6bc5 */ 0xffff, /* 6bc6 */ 0xffff, /* 6bc7 */ 0xffff, /* 6bc8 */ 0xffff, /* 6bc9 */ 0xffff, /* 6bca */ 0xffff, /* 6bcb */ 0xffff, /* 6bcc */ 0xffff, /* 6bcd */ 0xffff, /* 6bce */ 0xffff, /* 6bcf */ 0xffff, /* 6bd0 */ 0xffff, /* 6bd1 */ 0xffff, /* 6bd2 */ 0xffff, /* 6bd3 */ 0xffff, /* 6bd4 */ 0xffff, /* 6bd5 */ 0xffff, /* 6bd6 */ 0xffff, /* 6bd7 */ 0xffff, /* 6bd8 */ 0xffff, /* 6bd9 */ 0xffff, /* 6bda */ 0xffff, /* 6bdb */ 0xffff, /* 6bdc */ 0xffff, /* 6bdd */ 0xffff, /* 6bde */ 0xffff, /* 6bdf */ 0xffff, /* 6be0 */ 0xffff, /* 6be1 */ 0xffff, /* 6be2 */ 0xffff, /* 6be3 */ 0xffff, /* 6be4 */ 0xffff, /* 6be5 */ 0xffff, /* 6be6 */ 0xffff, /* 6be7 */ 0xffff, /* 6be8 */ 0xffff, /* 6be9 */ 0xffff, /* 6bea */ 0xffff, /* 6beb */ 0xffff, /* 6bec */ 0xffff, /* 6bed */ 0xffff, /* 6bee */ 0xffff, /* 6bef */ 0xffff, /* 6bf0 */ 0xffff, /* 6bf1 */ 0xffff, /* 6bf2 */ 0xffff, /* 6bf3 */ 0xffff, /* 6bf4 */ 0xffff, /* 6bf5 */ 0xffff, /* 6bf6 */ 0xffff, /* 6bf7 */ 0xffff, /* 6bf8 */ 0xffff, /* 6bf9 */ 0xffff, /* 6bfa */ 0xffff, /* 6bfb */ 0xffff, /* 6bfc */ 0xffff, /* 6bfd */ 0xffff, /* 6bfe */ 0xffff, /* 6bff */ 0xffff, /* 6c00 */ 0xffff, /* 6c01 */ 0xffff, /* 6c02 */ 0xffff, /* 6c03 */ 0xffff, /* 6c04 */ 0xffff, /* 6c05 */ 0xffff, /* 6c06 */ 0xffff, /* 6c07 */ 0xffff, /* 6c08 */ 0xffff, /* 6c09 */ 0xffff, /* 6c0a */ 0xffff, /* 6c0b */ 0xffff, /* 6c0c */ 0xffff, /* 6c0d */ 0xffff, /* 6c0e */ 0xffff, /* 6c0f */ 0xffff, /* 6c10 */ 0xffff, /* 6c11 */ 0xffff, /* 6c12 */ 0xffff, /* 6c13 */ 0xffff, /* 6c14 */ 0xffff, /* 6c15 */ 0xffff, /* 6c16 */ 0xffff, /* 6c17 */ 0xffff, /* 6c18 */ 0xffff, /* 6c19 */ 0xffff, /* 6c1a */ 0xffff, /* 6c1b */ 0xffff, /* 6c1c */ 0xffff, /* 6c1d */ 0xffff, /* 6c1e */ 0xffff, /* 6c1f */ 0xffff, /* 6c20 */ 0xffff, /* 6c21 */ 0xffff, /* 6c22 */ 0xffff, /* 6c23 */ 0xffff, /* 6c24 */ 0xffff, /* 6c25 */ 0xffff, /* 6c26 */ 0xffff, /* 6c27 */ 0xffff, /* 6c28 */ 0xffff, /* 6c29 */ 0xffff, /* 6c2a */ 0xffff, /* 6c2b */ 0xffff, /* 6c2c */ 0xffff, /* 6c2d */ 0xffff, /* 6c2e */ 0xffff, /* 6c2f */ 0xffff, /* 6c30 */ 0xffff, /* 6c31 */ 0xffff, /* 6c32 */ 0xffff, /* 6c33 */ 0xffff, /* 6c34 */ 0xffff, /* 6c35 */ 0xffff, /* 6c36 */ 0xffff, /* 6c37 */ 0xffff, /* 6c38 */ 0xffff, /* 6c39 */ 0xffff, /* 6c3a */ 0xffff, /* 6c3b */ 0xffff, /* 6c3c */ 0xffff, /* 6c3d */ 0xffff, /* 6c3e */ 0xffff, /* 6c3f */ 0xffff, /* 6c40 */ 0xffff, /* 6c41 */ 0xffff, /* 6c42 */ 0xffff, /* 6c43 */ 0xffff, /* 6c44 */ 0xffff, /* 6c45 */ 0xffff, /* 6c46 */ 0xffff, /* 6c47 */ 0xffff, /* 6c48 */ 0xffff, /* 6c49 */ 0xffff, /* 6c4a */ 0xffff, /* 6c4b */ 0xffff, /* 6c4c */ 0xffff, /* 6c4d */ 0xffff, /* 6c4e */ 0xffff, /* 6c4f */ 0xffff, /* 6c50 */ 0xffff, /* 6c51 */ 0xffff, /* 6c52 */ 0xffff, /* 6c53 */ 0xffff, /* 6c54 */ 0xffff, /* 6c55 */ 0xffff, /* 6c56 */ 0xffff, /* 6c57 */ 0xffff, /* 6c58 */ 0xffff, /* 6c59 */ 0xffff, /* 6c5a */ 0xffff, /* 6c5b */ 0xffff, /* 6c5c */ 0xffff, /* 6c5d */ 0xffff, /* 6c5e */ 0xffff, /* 6c5f */ 0xffff, /* 6c60 */ 0xffff, /* 6c61 */ 0xffff, /* 6c62 */ 0xffff, /* 6c63 */ 0xffff, /* 6c64 */ 0xffff, /* 6c65 */ 0xffff, /* 6c66 */ 0xffff, /* 6c67 */ 0xffff, /* 6c68 */ 0xffff, /* 6c69 */ 0xffff, /* 6c6a */ 0xffff, /* 6c6b */ 0xffff, /* 6c6c */ 0xffff, /* 6c6d */ 0xffff, /* 6c6e */ 0xffff, /* 6c6f */ 0xffff, /* 6c70 */ 0xffff, /* 6c71 */ 0xffff, /* 6c72 */ 0xffff, /* 6c73 */ 0xffff, /* 6c74 */ 0xffff, /* 6c75 */ 0xffff, /* 6c76 */ 0xffff, /* 6c77 */ 0xffff, /* 6c78 */ 0xffff, /* 6c79 */ 0xffff, /* 6c7a */ 0xffff, /* 6c7b */ 0xffff, /* 6c7c */ 0xffff, /* 6c7d */ 0xffff, /* 6c7e */ 0xffff, /* 6c7f */ 0xffff, /* 6c80 */ 0xffff, /* 6c81 */ 0xffff, /* 6c82 */ 0xffff, /* 6c83 */ 0xffff, /* 6c84 */ 0xffff, /* 6c85 */ 0xffff, /* 6c86 */ 0xffff, /* 6c87 */ 0xffff, /* 6c88 */ 0xffff, /* 6c89 */ 0xffff, /* 6c8a */ 0xffff, /* 6c8b */ 0xffff, /* 6c8c */ 0xffff, /* 6c8d */ 0xffff, /* 6c8e */ 0xffff, /* 6c8f */ 0xffff, /* 6c90 */ 0xffff, /* 6c91 */ 0xffff, /* 6c92 */ 0xffff, /* 6c93 */ 0xffff, /* 6c94 */ 0xffff, /* 6c95 */ 0xffff, /* 6c96 */ 0xffff, /* 6c97 */ 0xffff, /* 6c98 */ 0xffff, /* 6c99 */ 0xffff, /* 6c9a */ 0xffff, /* 6c9b */ 0xffff, /* 6c9c */ 0xffff, /* 6c9d */ 0xffff, /* 6c9e */ 0xffff, /* 6c9f */ 0xffff, /* 6ca0 */ 0xffff, /* 6ca1 */ 0xffff, /* 6ca2 */ 0xffff, /* 6ca3 */ 0xffff, /* 6ca4 */ 0xffff, /* 6ca5 */ 0xffff, /* 6ca6 */ 0xffff, /* 6ca7 */ 0xffff, /* 6ca8 */ 0xffff, /* 6ca9 */ 0xffff, /* 6caa */ 0xffff, /* 6cab */ 0xffff, /* 6cac */ 0xffff, /* 6cad */ 0xffff, /* 6cae */ 0xffff, /* 6caf */ 0xffff, /* 6cb0 */ 0xffff, /* 6cb1 */ 0xffff, /* 6cb2 */ 0xffff, /* 6cb3 */ 0xffff, /* 6cb4 */ 0xffff, /* 6cb5 */ 0xffff, /* 6cb6 */ 0xffff, /* 6cb7 */ 0xffff, /* 6cb8 */ 0xffff, /* 6cb9 */ 0xffff, /* 6cba */ 0xffff, /* 6cbb */ 0xffff, /* 6cbc */ 0xffff, /* 6cbd */ 0xffff, /* 6cbe */ 0xffff, /* 6cbf */ 0xffff, /* 6cc0 */ 0xffff, /* 6cc1 */ 0xffff, /* 6cc2 */ 0xffff, /* 6cc3 */ 0xffff, /* 6cc4 */ 0xffff, /* 6cc5 */ 0xffff, /* 6cc6 */ 0xffff, /* 6cc7 */ 0xffff, /* 6cc8 */ 0xffff, /* 6cc9 */ 0xffff, /* 6cca */ 0xffff, /* 6ccb */ 0xffff, /* 6ccc */ 0xffff, /* 6ccd */ 0xffff, /* 6cce */ 0xffff, /* 6ccf */ 0xffff, /* 6cd0 */ 0xffff, /* 6cd1 */ 0xffff, /* 6cd2 */ 0xffff, /* 6cd3 */ 0xffff, /* 6cd4 */ 0xffff, /* 6cd5 */ 0xffff, /* 6cd6 */ 0xffff, /* 6cd7 */ 0xffff, /* 6cd8 */ 0xffff, /* 6cd9 */ 0xffff, /* 6cda */ 0xffff, /* 6cdb */ 0xffff, /* 6cdc */ 0xffff, /* 6cdd */ 0xffff, /* 6cde */ 0xffff, /* 6cdf */ 0xffff, /* 6ce0 */ 0xffff, /* 6ce1 */ 0xffff, /* 6ce2 */ 0xffff, /* 6ce3 */ 0xffff, /* 6ce4 */ 0xffff, /* 6ce5 */ 0xffff, /* 6ce6 */ 0xffff, /* 6ce7 */ 0xffff, /* 6ce8 */ 0xffff, /* 6ce9 */ 0xffff, /* 6cea */ 0xffff, /* 6ceb */ 0xffff, /* 6cec */ 0xffff, /* 6ced */ 0xffff, /* 6cee */ 0xffff, /* 6cef */ 0xffff, /* 6cf0 */ 0xffff, /* 6cf1 */ 0xffff, /* 6cf2 */ 0xffff, /* 6cf3 */ 0xffff, /* 6cf4 */ 0xffff, /* 6cf5 */ 0xffff, /* 6cf6 */ 0xffff, /* 6cf7 */ 0xffff, /* 6cf8 */ 0xffff, /* 6cf9 */ 0xffff, /* 6cfa */ 0xffff, /* 6cfb */ 0xffff, /* 6cfc */ 0xffff, /* 6cfd */ 0xffff, /* 6cfe */ 0xffff, /* 6cff */ 0xffff, /* 6d00 */ 0xffff, /* 6d01 */ 0xffff, /* 6d02 */ 0xffff, /* 6d03 */ 0xffff, /* 6d04 */ 0xffff, /* 6d05 */ 0xffff, /* 6d06 */ 0xffff, /* 6d07 */ 0xffff, /* 6d08 */ 0xffff, /* 6d09 */ 0xffff, /* 6d0a */ 0xffff, /* 6d0b */ 0xffff, /* 6d0c */ 0xffff, /* 6d0d */ 0xffff, /* 6d0e */ 0xffff, /* 6d0f */ 0xffff, /* 6d10 */ 0xffff, /* 6d11 */ 0xffff, /* 6d12 */ 0xffff, /* 6d13 */ 0xffff, /* 6d14 */ 0xffff, /* 6d15 */ 0xffff, /* 6d16 */ 0xffff, /* 6d17 */ 0xffff, /* 6d18 */ 0xffff, /* 6d19 */ 0xffff, /* 6d1a */ 0xffff, /* 6d1b */ 0xffff, /* 6d1c */ 0xffff, /* 6d1d */ 0xffff, /* 6d1e */ 0xffff, /* 6d1f */ 0xffff, /* 6d20 */ 0xffff, /* 6d21 */ 0xffff, /* 6d22 */ 0xffff, /* 6d23 */ 0xffff, /* 6d24 */ 0xffff, /* 6d25 */ 0xffff, /* 6d26 */ 0xffff, /* 6d27 */ 0xffff, /* 6d28 */ 0xffff, /* 6d29 */ 0xffff, /* 6d2a */ 0xffff, /* 6d2b */ 0xffff, /* 6d2c */ 0xffff, /* 6d2d */ 0xffff, /* 6d2e */ 0xffff, /* 6d2f */ 0xffff, /* 6d30 */ 0xffff, /* 6d31 */ 0xffff, /* 6d32 */ 0xffff, /* 6d33 */ 0xffff, /* 6d34 */ 0xffff, /* 6d35 */ 0xffff, /* 6d36 */ 0xffff, /* 6d37 */ 0xffff, /* 6d38 */ 0xffff, /* 6d39 */ 0xffff, /* 6d3a */ 0xffff, /* 6d3b */ 0xffff, /* 6d3c */ 0xffff, /* 6d3d */ 0xffff, /* 6d3e */ 0xffff, /* 6d3f */ 0xffff, /* 6d40 */ 0xffff, /* 6d41 */ 0xffff, /* 6d42 */ 0xffff, /* 6d43 */ 0xffff, /* 6d44 */ 0xffff, /* 6d45 */ 0xffff, /* 6d46 */ 0xffff, /* 6d47 */ 0xffff, /* 6d48 */ 0xffff, /* 6d49 */ 0xffff, /* 6d4a */ 0xffff, /* 6d4b */ 0xffff, /* 6d4c */ 0xffff, /* 6d4d */ 0xffff, /* 6d4e */ 0xffff, /* 6d4f */ 0xffff, /* 6d50 */ 0xffff, /* 6d51 */ 0xffff, /* 6d52 */ 0xffff, /* 6d53 */ 0xffff, /* 6d54 */ 0xffff, /* 6d55 */ 0xffff, /* 6d56 */ 0xffff, /* 6d57 */ 0xffff, /* 6d58 */ 0xffff, /* 6d59 */ 0xffff, /* 6d5a */ 0xffff, /* 6d5b */ 0xffff, /* 6d5c */ 0xffff, /* 6d5d */ 0xffff, /* 6d5e */ 0xffff, /* 6d5f */ 0xffff, /* 6d60 */ 0xffff, /* 6d61 */ 0xffff, /* 6d62 */ 0xffff, /* 6d63 */ 0xffff, /* 6d64 */ 0xffff, /* 6d65 */ 0xffff, /* 6d66 */ 0xffff, /* 6d67 */ 0xffff, /* 6d68 */ 0xffff, /* 6d69 */ 0xffff, /* 6d6a */ 0xffff, /* 6d6b */ 0xffff, /* 6d6c */ 0xffff, /* 6d6d */ 0xffff, /* 6d6e */ 0xffff, /* 6d6f */ 0xffff, /* 6d70 */ 0xffff, /* 6d71 */ 0xffff, /* 6d72 */ 0xffff, /* 6d73 */ 0xffff, /* 6d74 */ 0xffff, /* 6d75 */ 0xffff, /* 6d76 */ 0xffff, /* 6d77 */ 0xffff, /* 6d78 */ 0xffff, /* 6d79 */ 0xffff, /* 6d7a */ 0xffff, /* 6d7b */ 0xffff, /* 6d7c */ 0xffff, /* 6d7d */ 0xffff, /* 6d7e */ 0xffff, /* 6d7f */ 0xffff, /* 6d80 */ 0xffff, /* 6d81 */ 0xffff, /* 6d82 */ 0xffff, /* 6d83 */ 0xffff, /* 6d84 */ 0xffff, /* 6d85 */ 0xffff, /* 6d86 */ 0xffff, /* 6d87 */ 0xffff, /* 6d88 */ 0xffff, /* 6d89 */ 0xffff, /* 6d8a */ 0xffff, /* 6d8b */ 0xffff, /* 6d8c */ 0xffff, /* 6d8d */ 0xffff, /* 6d8e */ 0xffff, /* 6d8f */ 0xffff, /* 6d90 */ 0xffff, /* 6d91 */ 0xffff, /* 6d92 */ 0xffff, /* 6d93 */ 0xffff, /* 6d94 */ 0xffff, /* 6d95 */ 0xffff, /* 6d96 */ 0xffff, /* 6d97 */ 0xffff, /* 6d98 */ 0xffff, /* 6d99 */ 0xffff, /* 6d9a */ 0xffff, /* 6d9b */ 0xffff, /* 6d9c */ 0xffff, /* 6d9d */ 0xffff, /* 6d9e */ 0xffff, /* 6d9f */ 0xffff, /* 6da0 */ 0xffff, /* 6da1 */ 0xffff, /* 6da2 */ 0xffff, /* 6da3 */ 0xffff, /* 6da4 */ 0xffff, /* 6da5 */ 0xffff, /* 6da6 */ 0xffff, /* 6da7 */ 0xffff, /* 6da8 */ 0xffff, /* 6da9 */ 0xffff, /* 6daa */ 0xffff, /* 6dab */ 0xffff, /* 6dac */ 0xffff, /* 6dad */ 0xffff, /* 6dae */ 0xffff, /* 6daf */ 0xffff, /* 6db0 */ 0xffff, /* 6db1 */ 0xffff, /* 6db2 */ 0xffff, /* 6db3 */ 0xffff, /* 6db4 */ 0xffff, /* 6db5 */ 0xffff, /* 6db6 */ 0xffff, /* 6db7 */ 0xffff, /* 6db8 */ 0xffff, /* 6db9 */ 0xffff, /* 6dba */ 0xffff, /* 6dbb */ 0xffff, /* 6dbc */ 0xffff, /* 6dbd */ 0xffff, /* 6dbe */ 0xffff, /* 6dbf */ 0xffff, /* 6dc0 */ 0xffff, /* 6dc1 */ 0xffff, /* 6dc2 */ 0xffff, /* 6dc3 */ 0xffff, /* 6dc4 */ 0xffff, /* 6dc5 */ 0xffff, /* 6dc6 */ 0xffff, /* 6dc7 */ 0xffff, /* 6dc8 */ 0xffff, /* 6dc9 */ 0xffff, /* 6dca */ 0xffff, /* 6dcb */ 0xffff, /* 6dcc */ 0xffff, /* 6dcd */ 0xffff, /* 6dce */ 0xffff, /* 6dcf */ 0xffff, /* 6dd0 */ 0xffff, /* 6dd1 */ 0xffff, /* 6dd2 */ 0xffff, /* 6dd3 */ 0xffff, /* 6dd4 */ 0xffff, /* 6dd5 */ 0xffff, /* 6dd6 */ 0xffff, /* 6dd7 */ 0xffff, /* 6dd8 */ 0xffff, /* 6dd9 */ 0xffff, /* 6dda */ 0xffff, /* 6ddb */ 0xffff, /* 6ddc */ 0xffff, /* 6ddd */ 0xffff, /* 6dde */ 0xffff, /* 6ddf */ 0xffff, /* 6de0 */ 0xffff, /* 6de1 */ 0xffff, /* 6de2 */ 0xffff, /* 6de3 */ 0xffff, /* 6de4 */ 0xffff, /* 6de5 */ 0xffff, /* 6de6 */ 0xffff, /* 6de7 */ 0xffff, /* 6de8 */ 0xffff, /* 6de9 */ 0xffff, /* 6dea */ 0xffff, /* 6deb */ 0xffff, /* 6dec */ 0xffff, /* 6ded */ 0xffff, /* 6dee */ 0xffff, /* 6def */ 0xffff, /* 6df0 */ 0xffff, /* 6df1 */ 0xffff, /* 6df2 */ 0xffff, /* 6df3 */ 0xffff, /* 6df4 */ 0xffff, /* 6df5 */ 0xffff, /* 6df6 */ 0xffff, /* 6df7 */ 0xffff, /* 6df8 */ 0xffff, /* 6df9 */ 0xffff, /* 6dfa */ 0xffff, /* 6dfb */ 0xffff, /* 6dfc */ 0xffff, /* 6dfd */ 0xffff, /* 6dfe */ 0xffff, /* 6dff */ 0xffff, /* 6e00 */ 0xffff, /* 6e01 */ 0xffff, /* 6e02 */ 0xffff, /* 6e03 */ 0xffff, /* 6e04 */ 0xffff, /* 6e05 */ 0xffff, /* 6e06 */ 0xffff, /* 6e07 */ 0xffff, /* 6e08 */ 0xffff, /* 6e09 */ 0xffff, /* 6e0a */ 0xffff, /* 6e0b */ 0xffff, /* 6e0c */ 0xffff, /* 6e0d */ 0xffff, /* 6e0e */ 0xffff, /* 6e0f */ 0xffff, /* 6e10 */ 0xffff, /* 6e11 */ 0xffff, /* 6e12 */ 0xffff, /* 6e13 */ 0xffff, /* 6e14 */ 0xffff, /* 6e15 */ 0xffff, /* 6e16 */ 0xffff, /* 6e17 */ 0xffff, /* 6e18 */ 0xffff, /* 6e19 */ 0xffff, /* 6e1a */ 0xffff, /* 6e1b */ 0xffff, /* 6e1c */ 0xffff, /* 6e1d */ 0xffff, /* 6e1e */ 0xffff, /* 6e1f */ 0xffff, /* 6e20 */ 0xffff, /* 6e21 */ 0xffff, /* 6e22 */ 0xffff, /* 6e23 */ 0xffff, /* 6e24 */ 0xffff, /* 6e25 */ 0xffff, /* 6e26 */ 0xffff, /* 6e27 */ 0xffff, /* 6e28 */ 0xffff, /* 6e29 */ 0xffff, /* 6e2a */ 0xffff, /* 6e2b */ 0xffff, /* 6e2c */ 0xffff, /* 6e2d */ 0xffff, /* 6e2e */ 0xffff, /* 6e2f */ 0xffff, /* 6e30 */ 0xffff, /* 6e31 */ 0xffff, /* 6e32 */ 0xffff, /* 6e33 */ 0xffff, /* 6e34 */ 0xffff, /* 6e35 */ 0xffff, /* 6e36 */ 0xffff, /* 6e37 */ 0xffff, /* 6e38 */ 0xffff, /* 6e39 */ 0xffff, /* 6e3a */ 0xffff, /* 6e3b */ 0xffff, /* 6e3c */ 0xffff, /* 6e3d */ 0xffff, /* 6e3e */ 0xffff, /* 6e3f */ 0xffff, /* 6e40 */ 0xffff, /* 6e41 */ 0xffff, /* 6e42 */ 0xffff, /* 6e43 */ 0xffff, /* 6e44 */ 0xffff, /* 6e45 */ 0xffff, /* 6e46 */ 0xffff, /* 6e47 */ 0xffff, /* 6e48 */ 0xffff, /* 6e49 */ 0xffff, /* 6e4a */ 0xffff, /* 6e4b */ 0xffff, /* 6e4c */ 0xffff, /* 6e4d */ 0xffff, /* 6e4e */ 0xffff, /* 6e4f */ 0xffff, /* 6e50 */ 0xffff, /* 6e51 */ 0xffff, /* 6e52 */ 0xffff, /* 6e53 */ 0xffff, /* 6e54 */ 0xffff, /* 6e55 */ 0xffff, /* 6e56 */ 0xffff, /* 6e57 */ 0xffff, /* 6e58 */ 0xffff, /* 6e59 */ 0xffff, /* 6e5a */ 0xffff, /* 6e5b */ 0xffff, /* 6e5c */ 0xffff, /* 6e5d */ 0xffff, /* 6e5e */ 0xffff, /* 6e5f */ 0xffff, /* 6e60 */ 0xffff, /* 6e61 */ 0xffff, /* 6e62 */ 0xffff, /* 6e63 */ 0xffff, /* 6e64 */ 0xffff, /* 6e65 */ 0xffff, /* 6e66 */ 0xffff, /* 6e67 */ 0xffff, /* 6e68 */ 0xffff, /* 6e69 */ 0xffff, /* 6e6a */ 0xffff, /* 6e6b */ 0xffff, /* 6e6c */ 0xffff, /* 6e6d */ 0xffff, /* 6e6e */ 0xffff, /* 6e6f */ 0xffff, /* 6e70 */ 0xffff, /* 6e71 */ 0xffff, /* 6e72 */ 0xffff, /* 6e73 */ 0xffff, /* 6e74 */ 0xffff, /* 6e75 */ 0xffff, /* 6e76 */ 0xffff, /* 6e77 */ 0xffff, /* 6e78 */ 0xffff, /* 6e79 */ 0xffff, /* 6e7a */ 0xffff, /* 6e7b */ 0xffff, /* 6e7c */ 0xffff, /* 6e7d */ 0xffff, /* 6e7e */ 0xffff, /* 6e7f */ 0xffff, /* 6e80 */ 0xffff, /* 6e81 */ 0xffff, /* 6e82 */ 0xffff, /* 6e83 */ 0xffff, /* 6e84 */ 0xffff, /* 6e85 */ 0xffff, /* 6e86 */ 0xffff, /* 6e87 */ 0xffff, /* 6e88 */ 0xffff, /* 6e89 */ 0xffff, /* 6e8a */ 0xffff, /* 6e8b */ 0xffff, /* 6e8c */ 0xffff, /* 6e8d */ 0xffff, /* 6e8e */ 0xffff, /* 6e8f */ 0xffff, /* 6e90 */ 0xffff, /* 6e91 */ 0xffff, /* 6e92 */ 0xffff, /* 6e93 */ 0xffff, /* 6e94 */ 0xffff, /* 6e95 */ 0xffff, /* 6e96 */ 0xffff, /* 6e97 */ 0xffff, /* 6e98 */ 0xffff, /* 6e99 */ 0xffff, /* 6e9a */ 0xffff, /* 6e9b */ 0xffff, /* 6e9c */ 0xffff, /* 6e9d */ 0xffff, /* 6e9e */ 0xffff, /* 6e9f */ 0xffff, /* 6ea0 */ 0xffff, /* 6ea1 */ 0xffff, /* 6ea2 */ 0xffff, /* 6ea3 */ 0xffff, /* 6ea4 */ 0xffff, /* 6ea5 */ 0xffff, /* 6ea6 */ 0xffff, /* 6ea7 */ 0xffff, /* 6ea8 */ 0xffff, /* 6ea9 */ 0xffff, /* 6eaa */ 0xffff, /* 6eab */ 0xffff, /* 6eac */ 0xffff, /* 6ead */ 0xffff, /* 6eae */ 0xffff, /* 6eaf */ 0xffff, /* 6eb0 */ 0xffff, /* 6eb1 */ 0xffff, /* 6eb2 */ 0xffff, /* 6eb3 */ 0xffff, /* 6eb4 */ 0xffff, /* 6eb5 */ 0xffff, /* 6eb6 */ 0xffff, /* 6eb7 */ 0xffff, /* 6eb8 */ 0xffff, /* 6eb9 */ 0xffff, /* 6eba */ 0xffff, /* 6ebb */ 0xffff, /* 6ebc */ 0xffff, /* 6ebd */ 0xffff, /* 6ebe */ 0xffff, /* 6ebf */ 0xffff, /* 6ec0 */ 0xffff, /* 6ec1 */ 0xffff, /* 6ec2 */ 0xffff, /* 6ec3 */ 0xffff, /* 6ec4 */ 0xffff, /* 6ec5 */ 0xffff, /* 6ec6 */ 0xffff, /* 6ec7 */ 0xffff, /* 6ec8 */ 0xffff, /* 6ec9 */ 0xffff, /* 6eca */ 0xffff, /* 6ecb */ 0xffff, /* 6ecc */ 0xffff, /* 6ecd */ 0xffff, /* 6ece */ 0xffff, /* 6ecf */ 0xffff, /* 6ed0 */ 0xffff, /* 6ed1 */ 0xffff, /* 6ed2 */ 0xffff, /* 6ed3 */ 0xffff, /* 6ed4 */ 0xffff, /* 6ed5 */ 0xffff, /* 6ed6 */ 0xffff, /* 6ed7 */ 0xffff, /* 6ed8 */ 0xffff, /* 6ed9 */ 0xffff, /* 6eda */ 0xffff, /* 6edb */ 0xffff, /* 6edc */ 0xffff, /* 6edd */ 0xffff, /* 6ede */ 0xffff, /* 6edf */ 0xffff, /* 6ee0 */ 0xffff, /* 6ee1 */ 0xffff, /* 6ee2 */ 0xffff, /* 6ee3 */ 0xffff, /* 6ee4 */ 0xffff, /* 6ee5 */ 0xffff, /* 6ee6 */ 0xffff, /* 6ee7 */ 0xffff, /* 6ee8 */ 0xffff, /* 6ee9 */ 0xffff, /* 6eea */ 0xffff, /* 6eeb */ 0xffff, /* 6eec */ 0xffff, /* 6eed */ 0xffff, /* 6eee */ 0xffff, /* 6eef */ 0xffff, /* 6ef0 */ 0xffff, /* 6ef1 */ 0xffff, /* 6ef2 */ 0xffff, /* 6ef3 */ 0xffff, /* 6ef4 */ 0xffff, /* 6ef5 */ 0xffff, /* 6ef6 */ 0xffff, /* 6ef7 */ 0xffff, /* 6ef8 */ 0xffff, /* 6ef9 */ 0xffff, /* 6efa */ 0xffff, /* 6efb */ 0xffff, /* 6efc */ 0xffff, /* 6efd */ 0xffff, /* 6efe */ 0xffff, /* 6eff */ 0xffff, /* 6f00 */ 0xffff, /* 6f01 */ 0xffff, /* 6f02 */ 0xffff, /* 6f03 */ 0xffff, /* 6f04 */ 0xffff, /* 6f05 */ 0xffff, /* 6f06 */ 0xffff, /* 6f07 */ 0xffff, /* 6f08 */ 0xffff, /* 6f09 */ 0xffff, /* 6f0a */ 0xffff, /* 6f0b */ 0xffff, /* 6f0c */ 0xffff, /* 6f0d */ 0xffff, /* 6f0e */ 0xffff, /* 6f0f */ 0xffff, /* 6f10 */ 0xffff, /* 6f11 */ 0xffff, /* 6f12 */ 0xffff, /* 6f13 */ 0xffff, /* 6f14 */ 0xffff, /* 6f15 */ 0xffff, /* 6f16 */ 0xffff, /* 6f17 */ 0xffff, /* 6f18 */ 0xffff, /* 6f19 */ 0xffff, /* 6f1a */ 0xffff, /* 6f1b */ 0xffff, /* 6f1c */ 0xffff, /* 6f1d */ 0xffff, /* 6f1e */ 0xffff, /* 6f1f */ 0xffff, /* 6f20 */ 0xffff, /* 6f21 */ 0xffff, /* 6f22 */ 0xffff, /* 6f23 */ 0xffff, /* 6f24 */ 0xffff, /* 6f25 */ 0xffff, /* 6f26 */ 0xffff, /* 6f27 */ 0xffff, /* 6f28 */ 0xffff, /* 6f29 */ 0xffff, /* 6f2a */ 0xffff, /* 6f2b */ 0xffff, /* 6f2c */ 0xffff, /* 6f2d */ 0xffff, /* 6f2e */ 0xffff, /* 6f2f */ 0xffff, /* 6f30 */ 0xffff, /* 6f31 */ 0xffff, /* 6f32 */ 0xffff, /* 6f33 */ 0xffff, /* 6f34 */ 0xffff, /* 6f35 */ 0xffff, /* 6f36 */ 0xffff, /* 6f37 */ 0xffff, /* 6f38 */ 0xffff, /* 6f39 */ 0xffff, /* 6f3a */ 0xffff, /* 6f3b */ 0xffff, /* 6f3c */ 0xffff, /* 6f3d */ 0xffff, /* 6f3e */ 0xffff, /* 6f3f */ 0xffff, /* 6f40 */ 0xffff, /* 6f41 */ 0xffff, /* 6f42 */ 0xffff, /* 6f43 */ 0xffff, /* 6f44 */ 0xffff, /* 6f45 */ 0xffff, /* 6f46 */ 0xffff, /* 6f47 */ 0xffff, /* 6f48 */ 0xffff, /* 6f49 */ 0xffff, /* 6f4a */ 0xffff, /* 6f4b */ 0xffff, /* 6f4c */ 0xffff, /* 6f4d */ 0xffff, /* 6f4e */ 0xffff, /* 6f4f */ 0xffff, /* 6f50 */ 0xffff, /* 6f51 */ 0xffff, /* 6f52 */ 0xffff, /* 6f53 */ 0xffff, /* 6f54 */ 0xffff, /* 6f55 */ 0xffff, /* 6f56 */ 0xffff, /* 6f57 */ 0xffff, /* 6f58 */ 0xffff, /* 6f59 */ 0xffff, /* 6f5a */ 0xffff, /* 6f5b */ 0xffff, /* 6f5c */ 0xffff, /* 6f5d */ 0xffff, /* 6f5e */ 0xffff, /* 6f5f */ 0xffff, /* 6f60 */ 0xffff, /* 6f61 */ 0xffff, /* 6f62 */ 0xffff, /* 6f63 */ 0xffff, /* 6f64 */ 0xffff, /* 6f65 */ 0xffff, /* 6f66 */ 0xffff, /* 6f67 */ 0xffff, /* 6f68 */ 0xffff, /* 6f69 */ 0xffff, /* 6f6a */ 0xffff, /* 6f6b */ 0xffff, /* 6f6c */ 0xffff, /* 6f6d */ 0xffff, /* 6f6e */ 0xffff, /* 6f6f */ 0xffff, /* 6f70 */ 0xffff, /* 6f71 */ 0xffff, /* 6f72 */ 0xffff, /* 6f73 */ 0xffff, /* 6f74 */ 0xffff, /* 6f75 */ 0xffff, /* 6f76 */ 0xffff, /* 6f77 */ 0xffff, /* 6f78 */ 0xffff, /* 6f79 */ 0xffff, /* 6f7a */ 0xffff, /* 6f7b */ 0xffff, /* 6f7c */ 0xffff, /* 6f7d */ 0xffff, /* 6f7e */ 0xffff, /* 6f7f */ 0xffff, /* 6f80 */ 0xffff, /* 6f81 */ 0xffff, /* 6f82 */ 0xffff, /* 6f83 */ 0xffff, /* 6f84 */ 0xffff, /* 6f85 */ 0xffff, /* 6f86 */ 0xffff, /* 6f87 */ 0xffff, /* 6f88 */ 0xffff, /* 6f89 */ 0xffff, /* 6f8a */ 0xffff, /* 6f8b */ 0xffff, /* 6f8c */ 0xffff, /* 6f8d */ 0xffff, /* 6f8e */ 0xffff, /* 6f8f */ 0xffff, /* 6f90 */ 0xffff, /* 6f91 */ 0xffff, /* 6f92 */ 0xffff, /* 6f93 */ 0xffff, /* 6f94 */ 0xffff, /* 6f95 */ 0xffff, /* 6f96 */ 0xffff, /* 6f97 */ 0xffff, /* 6f98 */ 0xffff, /* 6f99 */ 0xffff, /* 6f9a */ 0xffff, /* 6f9b */ 0xffff, /* 6f9c */ 0xffff, /* 6f9d */ 0xffff, /* 6f9e */ 0xffff, /* 6f9f */ 0xffff, /* 6fa0 */ 0xffff, /* 6fa1 */ 0xffff, /* 6fa2 */ 0xffff, /* 6fa3 */ 0xffff, /* 6fa4 */ 0xffff, /* 6fa5 */ 0xffff, /* 6fa6 */ 0xffff, /* 6fa7 */ 0xffff, /* 6fa8 */ 0xffff, /* 6fa9 */ 0xffff, /* 6faa */ 0xffff, /* 6fab */ 0xffff, /* 6fac */ 0xffff, /* 6fad */ 0xffff, /* 6fae */ 0xffff, /* 6faf */ 0xffff, /* 6fb0 */ 0xffff, /* 6fb1 */ 0xffff, /* 6fb2 */ 0xffff, /* 6fb3 */ 0xffff, /* 6fb4 */ 0xffff, /* 6fb5 */ 0xffff, /* 6fb6 */ 0xffff, /* 6fb7 */ 0xffff, /* 6fb8 */ 0xffff, /* 6fb9 */ 0xffff, /* 6fba */ 0xffff, /* 6fbb */ 0xffff, /* 6fbc */ 0xffff, /* 6fbd */ 0xffff, /* 6fbe */ 0xffff, /* 6fbf */ 0xffff, /* 6fc0 */ 0xffff, /* 6fc1 */ 0xffff, /* 6fc2 */ 0xffff, /* 6fc3 */ 0xffff, /* 6fc4 */ 0xffff, /* 6fc5 */ 0xffff, /* 6fc6 */ 0xffff, /* 6fc7 */ 0xffff, /* 6fc8 */ 0xffff, /* 6fc9 */ 0xffff, /* 6fca */ 0xffff, /* 6fcb */ 0xffff, /* 6fcc */ 0xffff, /* 6fcd */ 0xffff, /* 6fce */ 0xffff, /* 6fcf */ 0xffff, /* 6fd0 */ 0xffff, /* 6fd1 */ 0xffff, /* 6fd2 */ 0xffff, /* 6fd3 */ 0xffff, /* 6fd4 */ 0xffff, /* 6fd5 */ 0xffff, /* 6fd6 */ 0xffff, /* 6fd7 */ 0xffff, /* 6fd8 */ 0xffff, /* 6fd9 */ 0xffff, /* 6fda */ 0xffff, /* 6fdb */ 0xffff, /* 6fdc */ 0xffff, /* 6fdd */ 0xffff, /* 6fde */ 0xffff, /* 6fdf */ 0xffff, /* 6fe0 */ 0xffff, /* 6fe1 */ 0xffff, /* 6fe2 */ 0xffff, /* 6fe3 */ 0xffff, /* 6fe4 */ 0xffff, /* 6fe5 */ 0xffff, /* 6fe6 */ 0xffff, /* 6fe7 */ 0xffff, /* 6fe8 */ 0xffff, /* 6fe9 */ 0xffff, /* 6fea */ 0xffff, /* 6feb */ 0xffff, /* 6fec */ 0xffff, /* 6fed */ 0xffff, /* 6fee */ 0xffff, /* 6fef */ 0xffff, /* 6ff0 */ 0xffff, /* 6ff1 */ 0xffff, /* 6ff2 */ 0xffff, /* 6ff3 */ 0xffff, /* 6ff4 */ 0xffff, /* 6ff5 */ 0xffff, /* 6ff6 */ 0xffff, /* 6ff7 */ 0xffff, /* 6ff8 */ 0xffff, /* 6ff9 */ 0xffff, /* 6ffa */ 0xffff, /* 6ffb */ 0xffff, /* 6ffc */ 0xffff, /* 6ffd */ 0xffff, /* 6ffe */ 0xffff, /* 6fff */ 0xffff, /* 7000 */ 0xffff, /* 7001 */ 0xffff, /* 7002 */ 0xffff, /* 7003 */ 0xffff, /* 7004 */ 0xffff, /* 7005 */ 0xffff, /* 7006 */ 0xffff, /* 7007 */ 0xffff, /* 7008 */ 0xffff, /* 7009 */ 0xffff, /* 700a */ 0xffff, /* 700b */ 0xffff, /* 700c */ 0xffff, /* 700d */ 0xffff, /* 700e */ 0xffff, /* 700f */ 0xffff, /* 7010 */ 0xffff, /* 7011 */ 0xffff, /* 7012 */ 0xffff, /* 7013 */ 0xffff, /* 7014 */ 0xffff, /* 7015 */ 0xffff, /* 7016 */ 0xffff, /* 7017 */ 0xffff, /* 7018 */ 0xffff, /* 7019 */ 0xffff, /* 701a */ 0xffff, /* 701b */ 0xffff, /* 701c */ 0xffff, /* 701d */ 0xffff, /* 701e */ 0xffff, /* 701f */ 0xffff, /* 7020 */ 0xffff, /* 7021 */ 0xffff, /* 7022 */ 0xffff, /* 7023 */ 0xffff, /* 7024 */ 0xffff, /* 7025 */ 0xffff, /* 7026 */ 0xffff, /* 7027 */ 0xffff, /* 7028 */ 0xffff, /* 7029 */ 0xffff, /* 702a */ 0xffff, /* 702b */ 0xffff, /* 702c */ 0xffff, /* 702d */ 0xffff, /* 702e */ 0xffff, /* 702f */ 0xffff, /* 7030 */ 0xffff, /* 7031 */ 0xffff, /* 7032 */ 0xffff, /* 7033 */ 0xffff, /* 7034 */ 0xffff, /* 7035 */ 0xffff, /* 7036 */ 0xffff, /* 7037 */ 0xffff, /* 7038 */ 0xffff, /* 7039 */ 0xffff, /* 703a */ 0xffff, /* 703b */ 0xffff, /* 703c */ 0xffff, /* 703d */ 0xffff, /* 703e */ 0xffff, /* 703f */ 0xffff, /* 7040 */ 0xffff, /* 7041 */ 0xffff, /* 7042 */ 0xffff, /* 7043 */ 0xffff, /* 7044 */ 0xffff, /* 7045 */ 0xffff, /* 7046 */ 0xffff, /* 7047 */ 0xffff, /* 7048 */ 0xffff, /* 7049 */ 0xffff, /* 704a */ 0xffff, /* 704b */ 0xffff, /* 704c */ 0xffff, /* 704d */ 0xffff, /* 704e */ 0xffff, /* 704f */ 0xffff, /* 7050 */ 0xffff, /* 7051 */ 0xffff, /* 7052 */ 0xffff, /* 7053 */ 0xffff, /* 7054 */ 0xffff, /* 7055 */ 0xffff, /* 7056 */ 0xffff, /* 7057 */ 0xffff, /* 7058 */ 0xffff, /* 7059 */ 0xffff, /* 705a */ 0xffff, /* 705b */ 0xffff, /* 705c */ 0xffff, /* 705d */ 0xffff, /* 705e */ 0xffff, /* 705f */ 0xffff, /* 7060 */ 0xffff, /* 7061 */ 0xffff, /* 7062 */ 0xffff, /* 7063 */ 0xffff, /* 7064 */ 0xffff, /* 7065 */ 0xffff, /* 7066 */ 0xffff, /* 7067 */ 0xffff, /* 7068 */ 0xffff, /* 7069 */ 0xffff, /* 706a */ 0xffff, /* 706b */ 0xffff, /* 706c */ 0xffff, /* 706d */ 0xffff, /* 706e */ 0xffff, /* 706f */ 0xffff, /* 7070 */ 0xffff, /* 7071 */ 0xffff, /* 7072 */ 0xffff, /* 7073 */ 0xffff, /* 7074 */ 0xffff, /* 7075 */ 0xffff, /* 7076 */ 0xffff, /* 7077 */ 0xffff, /* 7078 */ 0xffff, /* 7079 */ 0xffff, /* 707a */ 0xffff, /* 707b */ 0xffff, /* 707c */ 0xffff, /* 707d */ 0xffff, /* 707e */ 0xffff, /* 707f */ 0xffff, /* 7080 */ 0xffff, /* 7081 */ 0xffff, /* 7082 */ 0xffff, /* 7083 */ 0xffff, /* 7084 */ 0xffff, /* 7085 */ 0xffff, /* 7086 */ 0xffff, /* 7087 */ 0xffff, /* 7088 */ 0xffff, /* 7089 */ 0xffff, /* 708a */ 0xffff, /* 708b */ 0xffff, /* 708c */ 0xffff, /* 708d */ 0xffff, /* 708e */ 0xffff, /* 708f */ 0xffff, /* 7090 */ 0xffff, /* 7091 */ 0xffff, /* 7092 */ 0xffff, /* 7093 */ 0xffff, /* 7094 */ 0xffff, /* 7095 */ 0xffff, /* 7096 */ 0xffff, /* 7097 */ 0xffff, /* 7098 */ 0xffff, /* 7099 */ 0xffff, /* 709a */ 0xffff, /* 709b */ 0xffff, /* 709c */ 0xffff, /* 709d */ 0xffff, /* 709e */ 0xffff, /* 709f */ 0xffff, /* 70a0 */ 0xffff, /* 70a1 */ 0xffff, /* 70a2 */ 0xffff, /* 70a3 */ 0xffff, /* 70a4 */ 0xffff, /* 70a5 */ 0xffff, /* 70a6 */ 0xffff, /* 70a7 */ 0xffff, /* 70a8 */ 0xffff, /* 70a9 */ 0xffff, /* 70aa */ 0xffff, /* 70ab */ 0xffff, /* 70ac */ 0xffff, /* 70ad */ 0xffff, /* 70ae */ 0xffff, /* 70af */ 0xffff, /* 70b0 */ 0xffff, /* 70b1 */ 0xffff, /* 70b2 */ 0xffff, /* 70b3 */ 0xffff, /* 70b4 */ 0xffff, /* 70b5 */ 0xffff, /* 70b6 */ 0xffff, /* 70b7 */ 0xffff, /* 70b8 */ 0xffff, /* 70b9 */ 0xffff, /* 70ba */ 0xffff, /* 70bb */ 0xffff, /* 70bc */ 0xffff, /* 70bd */ 0xffff, /* 70be */ 0xffff, /* 70bf */ 0xffff, /* 70c0 */ 0xffff, /* 70c1 */ 0xffff, /* 70c2 */ 0xffff, /* 70c3 */ 0xffff, /* 70c4 */ 0xffff, /* 70c5 */ 0xffff, /* 70c6 */ 0xffff, /* 70c7 */ 0xffff, /* 70c8 */ 0xffff, /* 70c9 */ 0xffff, /* 70ca */ 0xffff, /* 70cb */ 0xffff, /* 70cc */ 0xffff, /* 70cd */ 0xffff, /* 70ce */ 0xffff, /* 70cf */ 0xffff, /* 70d0 */ 0xffff, /* 70d1 */ 0xffff, /* 70d2 */ 0xffff, /* 70d3 */ 0xffff, /* 70d4 */ 0xffff, /* 70d5 */ 0xffff, /* 70d6 */ 0xffff, /* 70d7 */ 0xffff, /* 70d8 */ 0xffff, /* 70d9 */ 0xffff, /* 70da */ 0xffff, /* 70db */ 0xffff, /* 70dc */ 0xffff, /* 70dd */ 0xffff, /* 70de */ 0xffff, /* 70df */ 0xffff, /* 70e0 */ 0xffff, /* 70e1 */ 0xffff, /* 70e2 */ 0xffff, /* 70e3 */ 0xffff, /* 70e4 */ 0xffff, /* 70e5 */ 0xffff, /* 70e6 */ 0xffff, /* 70e7 */ 0xffff, /* 70e8 */ 0xffff, /* 70e9 */ 0xffff, /* 70ea */ 0xffff, /* 70eb */ 0xffff, /* 70ec */ 0xffff, /* 70ed */ 0xffff, /* 70ee */ 0xffff, /* 70ef */ 0xffff, /* 70f0 */ 0xffff, /* 70f1 */ 0xffff, /* 70f2 */ 0xffff, /* 70f3 */ 0xffff, /* 70f4 */ 0xffff, /* 70f5 */ 0xffff, /* 70f6 */ 0xffff, /* 70f7 */ 0xffff, /* 70f8 */ 0xffff, /* 70f9 */ 0xffff, /* 70fa */ 0xffff, /* 70fb */ 0xffff, /* 70fc */ 0xffff, /* 70fd */ 0xffff, /* 70fe */ 0xffff, /* 70ff */ 0xffff, /* 7100 */ 0xffff, /* 7101 */ 0xffff, /* 7102 */ 0xffff, /* 7103 */ 0xffff, /* 7104 */ 0xffff, /* 7105 */ 0xffff, /* 7106 */ 0xffff, /* 7107 */ 0xffff, /* 7108 */ 0xffff, /* 7109 */ 0xffff, /* 710a */ 0xffff, /* 710b */ 0xffff, /* 710c */ 0xffff, /* 710d */ 0xffff, /* 710e */ 0xffff, /* 710f */ 0xffff, /* 7110 */ 0xffff, /* 7111 */ 0xffff, /* 7112 */ 0xffff, /* 7113 */ 0xffff, /* 7114 */ 0xffff, /* 7115 */ 0xffff, /* 7116 */ 0xffff, /* 7117 */ 0xffff, /* 7118 */ 0xffff, /* 7119 */ 0xffff, /* 711a */ 0xffff, /* 711b */ 0xffff, /* 711c */ 0xffff, /* 711d */ 0xffff, /* 711e */ 0xffff, /* 711f */ 0xffff, /* 7120 */ 0xffff, /* 7121 */ 0xffff, /* 7122 */ 0xffff, /* 7123 */ 0xffff, /* 7124 */ 0xffff, /* 7125 */ 0xffff, /* 7126 */ 0xffff, /* 7127 */ 0xffff, /* 7128 */ 0xffff, /* 7129 */ 0xffff, /* 712a */ 0xffff, /* 712b */ 0xffff, /* 712c */ 0xffff, /* 712d */ 0xffff, /* 712e */ 0xffff, /* 712f */ 0xffff, /* 7130 */ 0xffff, /* 7131 */ 0xffff, /* 7132 */ 0xffff, /* 7133 */ 0xffff, /* 7134 */ 0xffff, /* 7135 */ 0xffff, /* 7136 */ 0xffff, /* 7137 */ 0xffff, /* 7138 */ 0xffff, /* 7139 */ 0xffff, /* 713a */ 0xffff, /* 713b */ 0xffff, /* 713c */ 0xffff, /* 713d */ 0xffff, /* 713e */ 0xffff, /* 713f */ 0xffff, /* 7140 */ 0xffff, /* 7141 */ 0xffff, /* 7142 */ 0xffff, /* 7143 */ 0xffff, /* 7144 */ 0xffff, /* 7145 */ 0xffff, /* 7146 */ 0xffff, /* 7147 */ 0xffff, /* 7148 */ 0xffff, /* 7149 */ 0xffff, /* 714a */ 0xffff, /* 714b */ 0xffff, /* 714c */ 0xffff, /* 714d */ 0xffff, /* 714e */ 0xffff, /* 714f */ 0xffff, /* 7150 */ 0xffff, /* 7151 */ 0xffff, /* 7152 */ 0xffff, /* 7153 */ 0xffff, /* 7154 */ 0xffff, /* 7155 */ 0xffff, /* 7156 */ 0xffff, /* 7157 */ 0xffff, /* 7158 */ 0xffff, /* 7159 */ 0xffff, /* 715a */ 0xffff, /* 715b */ 0xffff, /* 715c */ 0xffff, /* 715d */ 0xffff, /* 715e */ 0xffff, /* 715f */ 0xffff, /* 7160 */ 0xffff, /* 7161 */ 0xffff, /* 7162 */ 0xffff, /* 7163 */ 0xffff, /* 7164 */ 0xffff, /* 7165 */ 0xffff, /* 7166 */ 0xffff, /* 7167 */ 0xffff, /* 7168 */ 0xffff, /* 7169 */ 0xffff, /* 716a */ 0xffff, /* 716b */ 0xffff, /* 716c */ 0xffff, /* 716d */ 0xffff, /* 716e */ 0xffff, /* 716f */ 0xffff, /* 7170 */ 0xffff, /* 7171 */ 0xffff, /* 7172 */ 0xffff, /* 7173 */ 0xffff, /* 7174 */ 0xffff, /* 7175 */ 0xffff, /* 7176 */ 0xffff, /* 7177 */ 0xffff, /* 7178 */ 0xffff, /* 7179 */ 0xffff, /* 717a */ 0xffff, /* 717b */ 0xffff, /* 717c */ 0xffff, /* 717d */ 0xffff, /* 717e */ 0xffff, /* 717f */ 0xffff, /* 7180 */ 0xffff, /* 7181 */ 0xffff, /* 7182 */ 0xffff, /* 7183 */ 0xffff, /* 7184 */ 0xffff, /* 7185 */ 0xffff, /* 7186 */ 0xffff, /* 7187 */ 0xffff, /* 7188 */ 0xffff, /* 7189 */ 0xffff, /* 718a */ 0xffff, /* 718b */ 0xffff, /* 718c */ 0xffff, /* 718d */ 0xffff, /* 718e */ 0xffff, /* 718f */ 0xffff, /* 7190 */ 0xffff, /* 7191 */ 0xffff, /* 7192 */ 0xffff, /* 7193 */ 0xffff, /* 7194 */ 0xffff, /* 7195 */ 0xffff, /* 7196 */ 0xffff, /* 7197 */ 0xffff, /* 7198 */ 0xffff, /* 7199 */ 0xffff, /* 719a */ 0xffff, /* 719b */ 0xffff, /* 719c */ 0xffff, /* 719d */ 0xffff, /* 719e */ 0xffff, /* 719f */ 0xffff, /* 71a0 */ 0xffff, /* 71a1 */ 0xffff, /* 71a2 */ 0xffff, /* 71a3 */ 0xffff, /* 71a4 */ 0xffff, /* 71a5 */ 0xffff, /* 71a6 */ 0xffff, /* 71a7 */ 0xffff, /* 71a8 */ 0xffff, /* 71a9 */ 0xffff, /* 71aa */ 0xffff, /* 71ab */ 0xffff, /* 71ac */ 0xffff, /* 71ad */ 0xffff, /* 71ae */ 0xffff, /* 71af */ 0xffff, /* 71b0 */ 0xffff, /* 71b1 */ 0xffff, /* 71b2 */ 0xffff, /* 71b3 */ 0xffff, /* 71b4 */ 0xffff, /* 71b5 */ 0xffff, /* 71b6 */ 0xffff, /* 71b7 */ 0xffff, /* 71b8 */ 0xffff, /* 71b9 */ 0xffff, /* 71ba */ 0xffff, /* 71bb */ 0xffff, /* 71bc */ 0xffff, /* 71bd */ 0xffff, /* 71be */ 0xffff, /* 71bf */ 0xffff, /* 71c0 */ 0xffff, /* 71c1 */ 0xffff, /* 71c2 */ 0xffff, /* 71c3 */ 0xffff, /* 71c4 */ 0xffff, /* 71c5 */ 0xffff, /* 71c6 */ 0xffff, /* 71c7 */ 0xffff, /* 71c8 */ 0xffff, /* 71c9 */ 0xffff, /* 71ca */ 0xffff, /* 71cb */ 0xffff, /* 71cc */ 0xffff, /* 71cd */ 0xffff, /* 71ce */ 0xffff, /* 71cf */ 0xffff, /* 71d0 */ 0xffff, /* 71d1 */ 0xffff, /* 71d2 */ 0xffff, /* 71d3 */ 0xffff, /* 71d4 */ 0xffff, /* 71d5 */ 0xffff, /* 71d6 */ 0xffff, /* 71d7 */ 0xffff, /* 71d8 */ 0xffff, /* 71d9 */ 0xffff, /* 71da */ 0xffff, /* 71db */ 0xffff, /* 71dc */ 0xffff, /* 71dd */ 0xffff, /* 71de */ 0xffff, /* 71df */ 0xffff, /* 71e0 */ 0xffff, /* 71e1 */ 0xffff, /* 71e2 */ 0xffff, /* 71e3 */ 0xffff, /* 71e4 */ 0xffff, /* 71e5 */ 0xffff, /* 71e6 */ 0xffff, /* 71e7 */ 0xffff, /* 71e8 */ 0xffff, /* 71e9 */ 0xffff, /* 71ea */ 0xffff, /* 71eb */ 0xffff, /* 71ec */ 0xffff, /* 71ed */ 0xffff, /* 71ee */ 0xffff, /* 71ef */ 0xffff, /* 71f0 */ 0xffff, /* 71f1 */ 0xffff, /* 71f2 */ 0xffff, /* 71f3 */ 0xffff, /* 71f4 */ 0xffff, /* 71f5 */ 0xffff, /* 71f6 */ 0xffff, /* 71f7 */ 0xffff, /* 71f8 */ 0xffff, /* 71f9 */ 0xffff, /* 71fa */ 0xffff, /* 71fb */ 0xffff, /* 71fc */ 0xffff, /* 71fd */ 0xffff, /* 71fe */ 0xffff, /* 71ff */ 0xffff, /* 7200 */ 0xffff, /* 7201 */ 0xffff, /* 7202 */ 0xffff, /* 7203 */ 0xffff, /* 7204 */ 0xffff, /* 7205 */ 0xffff, /* 7206 */ 0xffff, /* 7207 */ 0xffff, /* 7208 */ 0xffff, /* 7209 */ 0xffff, /* 720a */ 0xffff, /* 720b */ 0xffff, /* 720c */ 0xffff, /* 720d */ 0xffff, /* 720e */ 0xffff, /* 720f */ 0xffff, /* 7210 */ 0xffff, /* 7211 */ 0xffff, /* 7212 */ 0xffff, /* 7213 */ 0xffff, /* 7214 */ 0xffff, /* 7215 */ 0xffff, /* 7216 */ 0xffff, /* 7217 */ 0xffff, /* 7218 */ 0xffff, /* 7219 */ 0xffff, /* 721a */ 0xffff, /* 721b */ 0xffff, /* 721c */ 0xffff, /* 721d */ 0xffff, /* 721e */ 0xffff, /* 721f */ 0xffff, /* 7220 */ 0xffff, /* 7221 */ 0xffff, /* 7222 */ 0xffff, /* 7223 */ 0xffff, /* 7224 */ 0xffff, /* 7225 */ 0xffff, /* 7226 */ 0xffff, /* 7227 */ 0xffff, /* 7228 */ 0xffff, /* 7229 */ 0xffff, /* 722a */ 0xffff, /* 722b */ 0xffff, /* 722c */ 0xffff, /* 722d */ 0xffff, /* 722e */ 0xffff, /* 722f */ 0xffff, /* 7230 */ 0xffff, /* 7231 */ 0xffff, /* 7232 */ 0xffff, /* 7233 */ 0xffff, /* 7234 */ 0xffff, /* 7235 */ 0xffff, /* 7236 */ 0xffff, /* 7237 */ 0xffff, /* 7238 */ 0xffff, /* 7239 */ 0xffff, /* 723a */ 0xffff, /* 723b */ 0xffff, /* 723c */ 0xffff, /* 723d */ 0xffff, /* 723e */ 0xffff, /* 723f */ 0xffff, /* 7240 */ 0xffff, /* 7241 */ 0xffff, /* 7242 */ 0xffff, /* 7243 */ 0xffff, /* 7244 */ 0xffff, /* 7245 */ 0xffff, /* 7246 */ 0xffff, /* 7247 */ 0xffff, /* 7248 */ 0xffff, /* 7249 */ 0xffff, /* 724a */ 0xffff, /* 724b */ 0xffff, /* 724c */ 0xffff, /* 724d */ 0xffff, /* 724e */ 0xffff, /* 724f */ 0xffff, /* 7250 */ 0xffff, /* 7251 */ 0xffff, /* 7252 */ 0xffff, /* 7253 */ 0xffff, /* 7254 */ 0xffff, /* 7255 */ 0xffff, /* 7256 */ 0xffff, /* 7257 */ 0xffff, /* 7258 */ 0xffff, /* 7259 */ 0xffff, /* 725a */ 0xffff, /* 725b */ 0xffff, /* 725c */ 0xffff, /* 725d */ 0xffff, /* 725e */ 0xffff, /* 725f */ 0xffff, /* 7260 */ 0xffff, /* 7261 */ 0xffff, /* 7262 */ 0xffff, /* 7263 */ 0xffff, /* 7264 */ 0xffff, /* 7265 */ 0xffff, /* 7266 */ 0xffff, /* 7267 */ 0xffff, /* 7268 */ 0xffff, /* 7269 */ 0xffff, /* 726a */ 0xffff, /* 726b */ 0xffff, /* 726c */ 0xffff, /* 726d */ 0xffff, /* 726e */ 0xffff, /* 726f */ 0xffff, /* 7270 */ 0xffff, /* 7271 */ 0xffff, /* 7272 */ 0xffff, /* 7273 */ 0xffff, /* 7274 */ 0xffff, /* 7275 */ 0xffff, /* 7276 */ 0xffff, /* 7277 */ 0xffff, /* 7278 */ 0xffff, /* 7279 */ 0xffff, /* 727a */ 0xffff, /* 727b */ 0xffff, /* 727c */ 0xffff, /* 727d */ 0xffff, /* 727e */ 0xffff, /* 727f */ 0xffff, /* 7280 */ 0xffff, /* 7281 */ 0xffff, /* 7282 */ 0xffff, /* 7283 */ 0xffff, /* 7284 */ 0xffff, /* 7285 */ 0xffff, /* 7286 */ 0xffff, /* 7287 */ 0xffff, /* 7288 */ 0xffff, /* 7289 */ 0xffff, /* 728a */ 0xffff, /* 728b */ 0xffff, /* 728c */ 0xffff, /* 728d */ 0xffff, /* 728e */ 0xffff, /* 728f */ 0xffff, /* 7290 */ 0xffff, /* 7291 */ 0xffff, /* 7292 */ 0xffff, /* 7293 */ 0xffff, /* 7294 */ 0xffff, /* 7295 */ 0xffff, /* 7296 */ 0xffff, /* 7297 */ 0xffff, /* 7298 */ 0xffff, /* 7299 */ 0xffff, /* 729a */ 0xffff, /* 729b */ 0xffff, /* 729c */ 0xffff, /* 729d */ 0xffff, /* 729e */ 0xffff, /* 729f */ 0xffff, /* 72a0 */ 0xffff, /* 72a1 */ 0xffff, /* 72a2 */ 0xffff, /* 72a3 */ 0xffff, /* 72a4 */ 0xffff, /* 72a5 */ 0xffff, /* 72a6 */ 0xffff, /* 72a7 */ 0xffff, /* 72a8 */ 0xffff, /* 72a9 */ 0xffff, /* 72aa */ 0xffff, /* 72ab */ 0xffff, /* 72ac */ 0xffff, /* 72ad */ 0xffff, /* 72ae */ 0xffff, /* 72af */ 0xffff, /* 72b0 */ 0xffff, /* 72b1 */ 0xffff, /* 72b2 */ 0xffff, /* 72b3 */ 0xffff, /* 72b4 */ 0xffff, /* 72b5 */ 0xffff, /* 72b6 */ 0xffff, /* 72b7 */ 0xffff, /* 72b8 */ 0xffff, /* 72b9 */ 0xffff, /* 72ba */ 0xffff, /* 72bb */ 0xffff, /* 72bc */ 0xffff, /* 72bd */ 0xffff, /* 72be */ 0xffff, /* 72bf */ 0xffff, /* 72c0 */ 0xffff, /* 72c1 */ 0xffff, /* 72c2 */ 0xffff, /* 72c3 */ 0xffff, /* 72c4 */ 0xffff, /* 72c5 */ 0xffff, /* 72c6 */ 0xffff, /* 72c7 */ 0xffff, /* 72c8 */ 0xffff, /* 72c9 */ 0xffff, /* 72ca */ 0xffff, /* 72cb */ 0xffff, /* 72cc */ 0xffff, /* 72cd */ 0xffff, /* 72ce */ 0xffff, /* 72cf */ 0xffff, /* 72d0 */ 0xffff, /* 72d1 */ 0xffff, /* 72d2 */ 0xffff, /* 72d3 */ 0xffff, /* 72d4 */ 0xffff, /* 72d5 */ 0xffff, /* 72d6 */ 0xffff, /* 72d7 */ 0xffff, /* 72d8 */ 0xffff, /* 72d9 */ 0xffff, /* 72da */ 0xffff, /* 72db */ 0xffff, /* 72dc */ 0xffff, /* 72dd */ 0xffff, /* 72de */ 0xffff, /* 72df */ 0xffff, /* 72e0 */ 0xffff, /* 72e1 */ 0xffff, /* 72e2 */ 0xffff, /* 72e3 */ 0xffff, /* 72e4 */ 0xffff, /* 72e5 */ 0xffff, /* 72e6 */ 0xffff, /* 72e7 */ 0xffff, /* 72e8 */ 0xffff, /* 72e9 */ 0xffff, /* 72ea */ 0xffff, /* 72eb */ 0xffff, /* 72ec */ 0xffff, /* 72ed */ 0xffff, /* 72ee */ 0xffff, /* 72ef */ 0xffff, /* 72f0 */ 0xffff, /* 72f1 */ 0xffff, /* 72f2 */ 0xffff, /* 72f3 */ 0xffff, /* 72f4 */ 0xffff, /* 72f5 */ 0xffff, /* 72f6 */ 0xffff, /* 72f7 */ 0xffff, /* 72f8 */ 0xffff, /* 72f9 */ 0xffff, /* 72fa */ 0xffff, /* 72fb */ 0xffff, /* 72fc */ 0xffff, /* 72fd */ 0xffff, /* 72fe */ 0xffff, /* 72ff */ 0xffff, /* 7300 */ 0xffff, /* 7301 */ 0xffff, /* 7302 */ 0xffff, /* 7303 */ 0xffff, /* 7304 */ 0xffff, /* 7305 */ 0xffff, /* 7306 */ 0xffff, /* 7307 */ 0xffff, /* 7308 */ 0xffff, /* 7309 */ 0xffff, /* 730a */ 0xffff, /* 730b */ 0xffff, /* 730c */ 0xffff, /* 730d */ 0xffff, /* 730e */ 0xffff, /* 730f */ 0xffff, /* 7310 */ 0xffff, /* 7311 */ 0xffff, /* 7312 */ 0xffff, /* 7313 */ 0xffff, /* 7314 */ 0xffff, /* 7315 */ 0xffff, /* 7316 */ 0xffff, /* 7317 */ 0xffff, /* 7318 */ 0xffff, /* 7319 */ 0xffff, /* 731a */ 0xffff, /* 731b */ 0xffff, /* 731c */ 0xffff, /* 731d */ 0xffff, /* 731e */ 0xffff, /* 731f */ 0xffff, /* 7320 */ 0xffff, /* 7321 */ 0xffff, /* 7322 */ 0xffff, /* 7323 */ 0xffff, /* 7324 */ 0xffff, /* 7325 */ 0xffff, /* 7326 */ 0xffff, /* 7327 */ 0xffff, /* 7328 */ 0xffff, /* 7329 */ 0xffff, /* 732a */ 0xffff, /* 732b */ 0xffff, /* 732c */ 0xffff, /* 732d */ 0xffff, /* 732e */ 0xffff, /* 732f */ 0xffff, /* 7330 */ 0xffff, /* 7331 */ 0xffff, /* 7332 */ 0xffff, /* 7333 */ 0xffff, /* 7334 */ 0xffff, /* 7335 */ 0xffff, /* 7336 */ 0xffff, /* 7337 */ 0xffff, /* 7338 */ 0xffff, /* 7339 */ 0xffff, /* 733a */ 0xffff, /* 733b */ 0xffff, /* 733c */ 0xffff, /* 733d */ 0xffff, /* 733e */ 0xffff, /* 733f */ 0xffff, /* 7340 */ 0xffff, /* 7341 */ 0xffff, /* 7342 */ 0xffff, /* 7343 */ 0xffff, /* 7344 */ 0xffff, /* 7345 */ 0xffff, /* 7346 */ 0xffff, /* 7347 */ 0xffff, /* 7348 */ 0xffff, /* 7349 */ 0xffff, /* 734a */ 0xffff, /* 734b */ 0xffff, /* 734c */ 0xffff, /* 734d */ 0xffff, /* 734e */ 0xffff, /* 734f */ 0xffff, /* 7350 */ 0xffff, /* 7351 */ 0xffff, /* 7352 */ 0xffff, /* 7353 */ 0xffff, /* 7354 */ 0xffff, /* 7355 */ 0xffff, /* 7356 */ 0xffff, /* 7357 */ 0xffff, /* 7358 */ 0xffff, /* 7359 */ 0xffff, /* 735a */ 0xffff, /* 735b */ 0xffff, /* 735c */ 0xffff, /* 735d */ 0xffff, /* 735e */ 0xffff, /* 735f */ 0xffff, /* 7360 */ 0xffff, /* 7361 */ 0xffff, /* 7362 */ 0xffff, /* 7363 */ 0xffff, /* 7364 */ 0xffff, /* 7365 */ 0xffff, /* 7366 */ 0xffff, /* 7367 */ 0xffff, /* 7368 */ 0xffff, /* 7369 */ 0xffff, /* 736a */ 0xffff, /* 736b */ 0xffff, /* 736c */ 0xffff, /* 736d */ 0xffff, /* 736e */ 0xffff, /* 736f */ 0xffff, /* 7370 */ 0xffff, /* 7371 */ 0xffff, /* 7372 */ 0xffff, /* 7373 */ 0xffff, /* 7374 */ 0xffff, /* 7375 */ 0xffff, /* 7376 */ 0xffff, /* 7377 */ 0xffff, /* 7378 */ 0xffff, /* 7379 */ 0xffff, /* 737a */ 0xffff, /* 737b */ 0xffff, /* 737c */ 0xffff, /* 737d */ 0xffff, /* 737e */ 0xffff, /* 737f */ 0xffff, /* 7380 */ 0xffff, /* 7381 */ 0xffff, /* 7382 */ 0xffff, /* 7383 */ 0xffff, /* 7384 */ 0xffff, /* 7385 */ 0xffff, /* 7386 */ 0xffff, /* 7387 */ 0xffff, /* 7388 */ 0xffff, /* 7389 */ 0xffff, /* 738a */ 0xffff, /* 738b */ 0xffff, /* 738c */ 0xffff, /* 738d */ 0xffff, /* 738e */ 0xffff, /* 738f */ 0xffff, /* 7390 */ 0xffff, /* 7391 */ 0xffff, /* 7392 */ 0xffff, /* 7393 */ 0xffff, /* 7394 */ 0xffff, /* 7395 */ 0xffff, /* 7396 */ 0xffff, /* 7397 */ 0xffff, /* 7398 */ 0xffff, /* 7399 */ 0xffff, /* 739a */ 0xffff, /* 739b */ 0xffff, /* 739c */ 0xffff, /* 739d */ 0xffff, /* 739e */ 0xffff, /* 739f */ 0xffff, /* 73a0 */ 0xffff, /* 73a1 */ 0xffff, /* 73a2 */ 0xffff, /* 73a3 */ 0xffff, /* 73a4 */ 0xffff, /* 73a5 */ 0xffff, /* 73a6 */ 0xffff, /* 73a7 */ 0xffff, /* 73a8 */ 0xffff, /* 73a9 */ 0xffff, /* 73aa */ 0xffff, /* 73ab */ 0xffff, /* 73ac */ 0xffff, /* 73ad */ 0xffff, /* 73ae */ 0xffff, /* 73af */ 0xffff, /* 73b0 */ 0xffff, /* 73b1 */ 0xffff, /* 73b2 */ 0xffff, /* 73b3 */ 0xffff, /* 73b4 */ 0xffff, /* 73b5 */ 0xffff, /* 73b6 */ 0xffff, /* 73b7 */ 0xffff, /* 73b8 */ 0xffff, /* 73b9 */ 0xffff, /* 73ba */ 0xffff, /* 73bb */ 0xffff, /* 73bc */ 0xffff, /* 73bd */ 0xffff, /* 73be */ 0xffff, /* 73bf */ 0xffff, /* 73c0 */ 0xffff, /* 73c1 */ 0xffff, /* 73c2 */ 0xffff, /* 73c3 */ 0xffff, /* 73c4 */ 0xffff, /* 73c5 */ 0xffff, /* 73c6 */ 0xffff, /* 73c7 */ 0xffff, /* 73c8 */ 0xffff, /* 73c9 */ 0xffff, /* 73ca */ 0xffff, /* 73cb */ 0xffff, /* 73cc */ 0xffff, /* 73cd */ 0xffff, /* 73ce */ 0xffff, /* 73cf */ 0xffff, /* 73d0 */ 0xffff, /* 73d1 */ 0xffff, /* 73d2 */ 0xffff, /* 73d3 */ 0xffff, /* 73d4 */ 0xffff, /* 73d5 */ 0xffff, /* 73d6 */ 0xffff, /* 73d7 */ 0xffff, /* 73d8 */ 0xffff, /* 73d9 */ 0xffff, /* 73da */ 0xffff, /* 73db */ 0xffff, /* 73dc */ 0xffff, /* 73dd */ 0xffff, /* 73de */ 0xffff, /* 73df */ 0xffff, /* 73e0 */ 0xffff, /* 73e1 */ 0xffff, /* 73e2 */ 0xffff, /* 73e3 */ 0xffff, /* 73e4 */ 0xffff, /* 73e5 */ 0xffff, /* 73e6 */ 0xffff, /* 73e7 */ 0xffff, /* 73e8 */ 0xffff, /* 73e9 */ 0xffff, /* 73ea */ 0xffff, /* 73eb */ 0xffff, /* 73ec */ 0xffff, /* 73ed */ 0xffff, /* 73ee */ 0xffff, /* 73ef */ 0xffff, /* 73f0 */ 0xffff, /* 73f1 */ 0xffff, /* 73f2 */ 0xffff, /* 73f3 */ 0xffff, /* 73f4 */ 0xffff, /* 73f5 */ 0xffff, /* 73f6 */ 0xffff, /* 73f7 */ 0xffff, /* 73f8 */ 0xffff, /* 73f9 */ 0xffff, /* 73fa */ 0xffff, /* 73fb */ 0xffff, /* 73fc */ 0xffff, /* 73fd */ 0xffff, /* 73fe */ 0xffff, /* 73ff */ 0xffff, /* 7400 */ 0xffff, /* 7401 */ 0xffff, /* 7402 */ 0xffff, /* 7403 */ 0xffff, /* 7404 */ 0xffff, /* 7405 */ 0xffff, /* 7406 */ 0xffff, /* 7407 */ 0xffff, /* 7408 */ 0xffff, /* 7409 */ 0xffff, /* 740a */ 0xffff, /* 740b */ 0xffff, /* 740c */ 0xffff, /* 740d */ 0xffff, /* 740e */ 0xffff, /* 740f */ 0xffff, /* 7410 */ 0xffff, /* 7411 */ 0xffff, /* 7412 */ 0xffff, /* 7413 */ 0xffff, /* 7414 */ 0xffff, /* 7415 */ 0xffff, /* 7416 */ 0xffff, /* 7417 */ 0xffff, /* 7418 */ 0xffff, /* 7419 */ 0xffff, /* 741a */ 0xffff, /* 741b */ 0xffff, /* 741c */ 0xffff, /* 741d */ 0xffff, /* 741e */ 0xffff, /* 741f */ 0xffff, /* 7420 */ 0xffff, /* 7421 */ 0xffff, /* 7422 */ 0xffff, /* 7423 */ 0xffff, /* 7424 */ 0xffff, /* 7425 */ 0xffff, /* 7426 */ 0xffff, /* 7427 */ 0xffff, /* 7428 */ 0xffff, /* 7429 */ 0xffff, /* 742a */ 0xffff, /* 742b */ 0xffff, /* 742c */ 0xffff, /* 742d */ 0xffff, /* 742e */ 0xffff, /* 742f */ 0xffff, /* 7430 */ 0xffff, /* 7431 */ 0xffff, /* 7432 */ 0xffff, /* 7433 */ 0xffff, /* 7434 */ 0xffff, /* 7435 */ 0xffff, /* 7436 */ 0xffff, /* 7437 */ 0xffff, /* 7438 */ 0xffff, /* 7439 */ 0xffff, /* 743a */ 0xffff, /* 743b */ 0xffff, /* 743c */ 0xffff, /* 743d */ 0xffff, /* 743e */ 0xffff, /* 743f */ 0xffff, /* 7440 */ 0xffff, /* 7441 */ 0xffff, /* 7442 */ 0xffff, /* 7443 */ 0xffff, /* 7444 */ 0xffff, /* 7445 */ 0xffff, /* 7446 */ 0xffff, /* 7447 */ 0xffff, /* 7448 */ 0xffff, /* 7449 */ 0xffff, /* 744a */ 0xffff, /* 744b */ 0xffff, /* 744c */ 0xffff, /* 744d */ 0xffff, /* 744e */ 0xffff, /* 744f */ 0xffff, /* 7450 */ 0xffff, /* 7451 */ 0xffff, /* 7452 */ 0xffff, /* 7453 */ 0xffff, /* 7454 */ 0xffff, /* 7455 */ 0xffff, /* 7456 */ 0xffff, /* 7457 */ 0xffff, /* 7458 */ 0xffff, /* 7459 */ 0xffff, /* 745a */ 0xffff, /* 745b */ 0xffff, /* 745c */ 0xffff, /* 745d */ 0xffff, /* 745e */ 0xffff, /* 745f */ 0xffff, /* 7460 */ 0xffff, /* 7461 */ 0xffff, /* 7462 */ 0xffff, /* 7463 */ 0xffff, /* 7464 */ 0xffff, /* 7465 */ 0xffff, /* 7466 */ 0xffff, /* 7467 */ 0xffff, /* 7468 */ 0xffff, /* 7469 */ 0xffff, /* 746a */ 0xffff, /* 746b */ 0xffff, /* 746c */ 0xffff, /* 746d */ 0xffff, /* 746e */ 0xffff, /* 746f */ 0xffff, /* 7470 */ 0xffff, /* 7471 */ 0xffff, /* 7472 */ 0xffff, /* 7473 */ 0xffff, /* 7474 */ 0xffff, /* 7475 */ 0xffff, /* 7476 */ 0xffff, /* 7477 */ 0xffff, /* 7478 */ 0xffff, /* 7479 */ 0xffff, /* 747a */ 0xffff, /* 747b */ 0xffff, /* 747c */ 0xffff, /* 747d */ 0xffff, /* 747e */ 0xffff, /* 747f */ 0xffff, /* 7480 */ 0xffff, /* 7481 */ 0xffff, /* 7482 */ 0xffff, /* 7483 */ 0xffff, /* 7484 */ 0xffff, /* 7485 */ 0xffff, /* 7486 */ 0xffff, /* 7487 */ 0xffff, /* 7488 */ 0xffff, /* 7489 */ 0xffff, /* 748a */ 0xffff, /* 748b */ 0xffff, /* 748c */ 0xffff, /* 748d */ 0xffff, /* 748e */ 0xffff, /* 748f */ 0xffff, /* 7490 */ 0xffff, /* 7491 */ 0xffff, /* 7492 */ 0xffff, /* 7493 */ 0xffff, /* 7494 */ 0xffff, /* 7495 */ 0xffff, /* 7496 */ 0xffff, /* 7497 */ 0xffff, /* 7498 */ 0xffff, /* 7499 */ 0xffff, /* 749a */ 0xffff, /* 749b */ 0xffff, /* 749c */ 0xffff, /* 749d */ 0xffff, /* 749e */ 0xffff, /* 749f */ 0xffff, /* 74a0 */ 0xffff, /* 74a1 */ 0xffff, /* 74a2 */ 0xffff, /* 74a3 */ 0xffff, /* 74a4 */ 0xffff, /* 74a5 */ 0xffff, /* 74a6 */ 0xffff, /* 74a7 */ 0xffff, /* 74a8 */ 0xffff, /* 74a9 */ 0xffff, /* 74aa */ 0xffff, /* 74ab */ 0xffff, /* 74ac */ 0xffff, /* 74ad */ 0xffff, /* 74ae */ 0xffff, /* 74af */ 0xffff, /* 74b0 */ 0xffff, /* 74b1 */ 0xffff, /* 74b2 */ 0xffff, /* 74b3 */ 0xffff, /* 74b4 */ 0xffff, /* 74b5 */ 0xffff, /* 74b6 */ 0xffff, /* 74b7 */ 0xffff, /* 74b8 */ 0xffff, /* 74b9 */ 0xffff, /* 74ba */ 0xffff, /* 74bb */ 0xffff, /* 74bc */ 0xffff, /* 74bd */ 0xffff, /* 74be */ 0xffff, /* 74bf */ 0xffff, /* 74c0 */ 0xffff, /* 74c1 */ 0xffff, /* 74c2 */ 0xffff, /* 74c3 */ 0xffff, /* 74c4 */ 0xffff, /* 74c5 */ 0xffff, /* 74c6 */ 0xffff, /* 74c7 */ 0xffff, /* 74c8 */ 0xffff, /* 74c9 */ 0xffff, /* 74ca */ 0xffff, /* 74cb */ 0xffff, /* 74cc */ 0xffff, /* 74cd */ 0xffff, /* 74ce */ 0xffff, /* 74cf */ 0xffff, /* 74d0 */ 0xffff, /* 74d1 */ 0xffff, /* 74d2 */ 0xffff, /* 74d3 */ 0xffff, /* 74d4 */ 0xffff, /* 74d5 */ 0xffff, /* 74d6 */ 0xffff, /* 74d7 */ 0xffff, /* 74d8 */ 0xffff, /* 74d9 */ 0xffff, /* 74da */ 0xffff, /* 74db */ 0xffff, /* 74dc */ 0xffff, /* 74dd */ 0xffff, /* 74de */ 0xffff, /* 74df */ 0xffff, /* 74e0 */ 0xffff, /* 74e1 */ 0xffff, /* 74e2 */ 0xffff, /* 74e3 */ 0xffff, /* 74e4 */ 0xffff, /* 74e5 */ 0xffff, /* 74e6 */ 0xffff, /* 74e7 */ 0xffff, /* 74e8 */ 0xffff, /* 74e9 */ 0xffff, /* 74ea */ 0xffff, /* 74eb */ 0xffff, /* 74ec */ 0xffff, /* 74ed */ 0xffff, /* 74ee */ 0xffff, /* 74ef */ 0xffff, /* 74f0 */ 0xffff, /* 74f1 */ 0xffff, /* 74f2 */ 0xffff, /* 74f3 */ 0xffff, /* 74f4 */ 0xffff, /* 74f5 */ 0xffff, /* 74f6 */ 0xffff, /* 74f7 */ 0xffff, /* 74f8 */ 0xffff, /* 74f9 */ 0xffff, /* 74fa */ 0xffff, /* 74fb */ 0xffff, /* 74fc */ 0xffff, /* 74fd */ 0xffff, /* 74fe */ 0xffff, /* 74ff */ 0xffff, /* 7500 */ 0xffff, /* 7501 */ 0xffff, /* 7502 */ 0xffff, /* 7503 */ 0xffff, /* 7504 */ 0xffff, /* 7505 */ 0xffff, /* 7506 */ 0xffff, /* 7507 */ 0xffff, /* 7508 */ 0xffff, /* 7509 */ 0xffff, /* 750a */ 0xffff, /* 750b */ 0xffff, /* 750c */ 0xffff, /* 750d */ 0xffff, /* 750e */ 0xffff, /* 750f */ 0xffff, /* 7510 */ 0xffff, /* 7511 */ 0xffff, /* 7512 */ 0xffff, /* 7513 */ 0xffff, /* 7514 */ 0xffff, /* 7515 */ 0xffff, /* 7516 */ 0xffff, /* 7517 */ 0xffff, /* 7518 */ 0xffff, /* 7519 */ 0xffff, /* 751a */ 0xffff, /* 751b */ 0xffff, /* 751c */ 0xffff, /* 751d */ 0xffff, /* 751e */ 0xffff, /* 751f */ 0xffff, /* 7520 */ 0xffff, /* 7521 */ 0xffff, /* 7522 */ 0xffff, /* 7523 */ 0xffff, /* 7524 */ 0xffff, /* 7525 */ 0xffff, /* 7526 */ 0xffff, /* 7527 */ 0xffff, /* 7528 */ 0xffff, /* 7529 */ 0xffff, /* 752a */ 0xffff, /* 752b */ 0xffff, /* 752c */ 0xffff, /* 752d */ 0xffff, /* 752e */ 0xffff, /* 752f */ 0xffff, /* 7530 */ 0xffff, /* 7531 */ 0xffff, /* 7532 */ 0xffff, /* 7533 */ 0xffff, /* 7534 */ 0xffff, /* 7535 */ 0xffff, /* 7536 */ 0xffff, /* 7537 */ 0xffff, /* 7538 */ 0xffff, /* 7539 */ 0xffff, /* 753a */ 0xffff, /* 753b */ 0xffff, /* 753c */ 0xffff, /* 753d */ 0xffff, /* 753e */ 0xffff, /* 753f */ 0xffff, /* 7540 */ 0xffff, /* 7541 */ 0xffff, /* 7542 */ 0xffff, /* 7543 */ 0xffff, /* 7544 */ 0xffff, /* 7545 */ 0xffff, /* 7546 */ 0xffff, /* 7547 */ 0xffff, /* 7548 */ 0xffff, /* 7549 */ 0xffff, /* 754a */ 0xffff, /* 754b */ 0xffff, /* 754c */ 0xffff, /* 754d */ 0xffff, /* 754e */ 0xffff, /* 754f */ 0xffff, /* 7550 */ 0xffff, /* 7551 */ 0xffff, /* 7552 */ 0xffff, /* 7553 */ 0xffff, /* 7554 */ 0xffff, /* 7555 */ 0xffff, /* 7556 */ 0xffff, /* 7557 */ 0xffff, /* 7558 */ 0xffff, /* 7559 */ 0xffff, /* 755a */ 0xffff, /* 755b */ 0xffff, /* 755c */ 0xffff, /* 755d */ 0xffff, /* 755e */ 0xffff, /* 755f */ 0xffff, /* 7560 */ 0xffff, /* 7561 */ 0xffff, /* 7562 */ 0xffff, /* 7563 */ 0xffff, /* 7564 */ 0xffff, /* 7565 */ 0xffff, /* 7566 */ 0xffff, /* 7567 */ 0xffff, /* 7568 */ 0xffff, /* 7569 */ 0xffff, /* 756a */ 0xffff, /* 756b */ 0xffff, /* 756c */ 0xffff, /* 756d */ 0xffff, /* 756e */ 0xffff, /* 756f */ 0xffff, /* 7570 */ 0xffff, /* 7571 */ 0xffff, /* 7572 */ 0xffff, /* 7573 */ 0xffff, /* 7574 */ 0xffff, /* 7575 */ 0xffff, /* 7576 */ 0xffff, /* 7577 */ 0xffff, /* 7578 */ 0xffff, /* 7579 */ 0xffff, /* 757a */ 0xffff, /* 757b */ 0xffff, /* 757c */ 0xffff, /* 757d */ 0xffff, /* 757e */ 0xffff, /* 757f */ 0xffff, /* 7580 */ 0xffff, /* 7581 */ 0xffff, /* 7582 */ 0xffff, /* 7583 */ 0xffff, /* 7584 */ 0xffff, /* 7585 */ 0xffff, /* 7586 */ 0xffff, /* 7587 */ 0xffff, /* 7588 */ 0xffff, /* 7589 */ 0xffff, /* 758a */ 0xffff, /* 758b */ 0xffff, /* 758c */ 0xffff, /* 758d */ 0xffff, /* 758e */ 0xffff, /* 758f */ 0xffff, /* 7590 */ 0xffff, /* 7591 */ 0xffff, /* 7592 */ 0xffff, /* 7593 */ 0xffff, /* 7594 */ 0xffff, /* 7595 */ 0xffff, /* 7596 */ 0xffff, /* 7597 */ 0xffff, /* 7598 */ 0xffff, /* 7599 */ 0xffff, /* 759a */ 0xffff, /* 759b */ 0xffff, /* 759c */ 0xffff, /* 759d */ 0xffff, /* 759e */ 0xffff, /* 759f */ 0xffff, /* 75a0 */ 0xffff, /* 75a1 */ 0xffff, /* 75a2 */ 0xffff, /* 75a3 */ 0xffff, /* 75a4 */ 0xffff, /* 75a5 */ 0xffff, /* 75a6 */ 0xffff, /* 75a7 */ 0xffff, /* 75a8 */ 0xffff, /* 75a9 */ 0xffff, /* 75aa */ 0xffff, /* 75ab */ 0xffff, /* 75ac */ 0xffff, /* 75ad */ 0xffff, /* 75ae */ 0xffff, /* 75af */ 0xffff, /* 75b0 */ 0xffff, /* 75b1 */ 0xffff, /* 75b2 */ 0xffff, /* 75b3 */ 0xffff, /* 75b4 */ 0xffff, /* 75b5 */ 0xffff, /* 75b6 */ 0xffff, /* 75b7 */ 0xffff, /* 75b8 */ 0xffff, /* 75b9 */ 0xffff, /* 75ba */ 0xffff, /* 75bb */ 0xffff, /* 75bc */ 0xffff, /* 75bd */ 0xffff, /* 75be */ 0xffff, /* 75bf */ 0xffff, /* 75c0 */ 0xffff, /* 75c1 */ 0xffff, /* 75c2 */ 0xffff, /* 75c3 */ 0xffff, /* 75c4 */ 0xffff, /* 75c5 */ 0xffff, /* 75c6 */ 0xffff, /* 75c7 */ 0xffff, /* 75c8 */ 0xffff, /* 75c9 */ 0xffff, /* 75ca */ 0xffff, /* 75cb */ 0xffff, /* 75cc */ 0xffff, /* 75cd */ 0xffff, /* 75ce */ 0xffff, /* 75cf */ 0xffff, /* 75d0 */ 0xffff, /* 75d1 */ 0xffff, /* 75d2 */ 0xffff, /* 75d3 */ 0xffff, /* 75d4 */ 0xffff, /* 75d5 */ 0xffff, /* 75d6 */ 0xffff, /* 75d7 */ 0xffff, /* 75d8 */ 0xffff, /* 75d9 */ 0xffff, /* 75da */ 0xffff, /* 75db */ 0xffff, /* 75dc */ 0xffff, /* 75dd */ 0xffff, /* 75de */ 0xffff, /* 75df */ 0xffff, /* 75e0 */ 0xffff, /* 75e1 */ 0xffff, /* 75e2 */ 0xffff, /* 75e3 */ 0xffff, /* 75e4 */ 0xffff, /* 75e5 */ 0xffff, /* 75e6 */ 0xffff, /* 75e7 */ 0xffff, /* 75e8 */ 0xffff, /* 75e9 */ 0xffff, /* 75ea */ 0xffff, /* 75eb */ 0xffff, /* 75ec */ 0xffff, /* 75ed */ 0xffff, /* 75ee */ 0xffff, /* 75ef */ 0xffff, /* 75f0 */ 0xffff, /* 75f1 */ 0xffff, /* 75f2 */ 0xffff, /* 75f3 */ 0xffff, /* 75f4 */ 0xffff, /* 75f5 */ 0xffff, /* 75f6 */ 0xffff, /* 75f7 */ 0xffff, /* 75f8 */ 0xffff, /* 75f9 */ 0xffff, /* 75fa */ 0xffff, /* 75fb */ 0xffff, /* 75fc */ 0xffff, /* 75fd */ 0xffff, /* 75fe */ 0xffff, /* 75ff */ 0xffff, /* 7600 */ 0xffff, /* 7601 */ 0xffff, /* 7602 */ 0xffff, /* 7603 */ 0xffff, /* 7604 */ 0xffff, /* 7605 */ 0xffff, /* 7606 */ 0xffff, /* 7607 */ 0xffff, /* 7608 */ 0xffff, /* 7609 */ 0xffff, /* 760a */ 0xffff, /* 760b */ 0xffff, /* 760c */ 0xffff, /* 760d */ 0xffff, /* 760e */ 0xffff, /* 760f */ 0xffff, /* 7610 */ 0xffff, /* 7611 */ 0xffff, /* 7612 */ 0xffff, /* 7613 */ 0xffff, /* 7614 */ 0xffff, /* 7615 */ 0xffff, /* 7616 */ 0xffff, /* 7617 */ 0xffff, /* 7618 */ 0xffff, /* 7619 */ 0xffff, /* 761a */ 0xffff, /* 761b */ 0xffff, /* 761c */ 0xffff, /* 761d */ 0xffff, /* 761e */ 0xffff, /* 761f */ 0xffff, /* 7620 */ 0xffff, /* 7621 */ 0xffff, /* 7622 */ 0xffff, /* 7623 */ 0xffff, /* 7624 */ 0xffff, /* 7625 */ 0xffff, /* 7626 */ 0xffff, /* 7627 */ 0xffff, /* 7628 */ 0xffff, /* 7629 */ 0xffff, /* 762a */ 0xffff, /* 762b */ 0xffff, /* 762c */ 0xffff, /* 762d */ 0xffff, /* 762e */ 0xffff, /* 762f */ 0xffff, /* 7630 */ 0xffff, /* 7631 */ 0xffff, /* 7632 */ 0xffff, /* 7633 */ 0xffff, /* 7634 */ 0xffff, /* 7635 */ 0xffff, /* 7636 */ 0xffff, /* 7637 */ 0xffff, /* 7638 */ 0xffff, /* 7639 */ 0xffff, /* 763a */ 0xffff, /* 763b */ 0xffff, /* 763c */ 0xffff, /* 763d */ 0xffff, /* 763e */ 0xffff, /* 763f */ 0xffff, /* 7640 */ 0xffff, /* 7641 */ 0xffff, /* 7642 */ 0xffff, /* 7643 */ 0xffff, /* 7644 */ 0xffff, /* 7645 */ 0xffff, /* 7646 */ 0xffff, /* 7647 */ 0xffff, /* 7648 */ 0xffff, /* 7649 */ 0xffff, /* 764a */ 0xffff, /* 764b */ 0xffff, /* 764c */ 0xffff, /* 764d */ 0xffff, /* 764e */ 0xffff, /* 764f */ 0xffff, /* 7650 */ 0xffff, /* 7651 */ 0xffff, /* 7652 */ 0xffff, /* 7653 */ 0xffff, /* 7654 */ 0xffff, /* 7655 */ 0xffff, /* 7656 */ 0xffff, /* 7657 */ 0xffff, /* 7658 */ 0xffff, /* 7659 */ 0xffff, /* 765a */ 0xffff, /* 765b */ 0xffff, /* 765c */ 0xffff, /* 765d */ 0xffff, /* 765e */ 0xffff, /* 765f */ 0xffff, /* 7660 */ 0xffff, /* 7661 */ 0xffff, /* 7662 */ 0xffff, /* 7663 */ 0xffff, /* 7664 */ 0xffff, /* 7665 */ 0xffff, /* 7666 */ 0xffff, /* 7667 */ 0xffff, /* 7668 */ 0xffff, /* 7669 */ 0xffff, /* 766a */ 0xffff, /* 766b */ 0xffff, /* 766c */ 0xffff, /* 766d */ 0xffff, /* 766e */ 0xffff, /* 766f */ 0xffff, /* 7670 */ 0xffff, /* 7671 */ 0xffff, /* 7672 */ 0xffff, /* 7673 */ 0xffff, /* 7674 */ 0xffff, /* 7675 */ 0xffff, /* 7676 */ 0xffff, /* 7677 */ 0xffff, /* 7678 */ 0xffff, /* 7679 */ 0xffff, /* 767a */ 0xffff, /* 767b */ 0xffff, /* 767c */ 0xffff, /* 767d */ 0xffff, /* 767e */ 0xffff, /* 767f */ 0xffff, /* 7680 */ 0xffff, /* 7681 */ 0xffff, /* 7682 */ 0xffff, /* 7683 */ 0xffff, /* 7684 */ 0xffff, /* 7685 */ 0xffff, /* 7686 */ 0xffff, /* 7687 */ 0xffff, /* 7688 */ 0xffff, /* 7689 */ 0xffff, /* 768a */ 0xffff, /* 768b */ 0xffff, /* 768c */ 0xffff, /* 768d */ 0xffff, /* 768e */ 0xffff, /* 768f */ 0xffff, /* 7690 */ 0xffff, /* 7691 */ 0xffff, /* 7692 */ 0xffff, /* 7693 */ 0xffff, /* 7694 */ 0xffff, /* 7695 */ 0xffff, /* 7696 */ 0xffff, /* 7697 */ 0xffff, /* 7698 */ 0xffff, /* 7699 */ 0xffff, /* 769a */ 0xffff, /* 769b */ 0xffff, /* 769c */ 0xffff, /* 769d */ 0xffff, /* 769e */ 0xffff, /* 769f */ 0xffff, /* 76a0 */ 0xffff, /* 76a1 */ 0xffff, /* 76a2 */ 0xffff, /* 76a3 */ 0xffff, /* 76a4 */ 0xffff, /* 76a5 */ 0xffff, /* 76a6 */ 0xffff, /* 76a7 */ 0xffff, /* 76a8 */ 0xffff, /* 76a9 */ 0xffff, /* 76aa */ 0xffff, /* 76ab */ 0xffff, /* 76ac */ 0xffff, /* 76ad */ 0xffff, /* 76ae */ 0xffff, /* 76af */ 0xffff, /* 76b0 */ 0xffff, /* 76b1 */ 0xffff, /* 76b2 */ 0xffff, /* 76b3 */ 0xffff, /* 76b4 */ 0xffff, /* 76b5 */ 0xffff, /* 76b6 */ 0xffff, /* 76b7 */ 0xffff, /* 76b8 */ 0xffff, /* 76b9 */ 0xffff, /* 76ba */ 0xffff, /* 76bb */ 0xffff, /* 76bc */ 0xffff, /* 76bd */ 0xffff, /* 76be */ 0xffff, /* 76bf */ 0xffff, /* 76c0 */ 0xffff, /* 76c1 */ 0xffff, /* 76c2 */ 0xffff, /* 76c3 */ 0xffff, /* 76c4 */ 0xffff, /* 76c5 */ 0xffff, /* 76c6 */ 0xffff, /* 76c7 */ 0xffff, /* 76c8 */ 0xffff, /* 76c9 */ 0xffff, /* 76ca */ 0xffff, /* 76cb */ 0xffff, /* 76cc */ 0xffff, /* 76cd */ 0xffff, /* 76ce */ 0xffff, /* 76cf */ 0xffff, /* 76d0 */ 0xffff, /* 76d1 */ 0xffff, /* 76d2 */ 0xffff, /* 76d3 */ 0xffff, /* 76d4 */ 0xffff, /* 76d5 */ 0xffff, /* 76d6 */ 0xffff, /* 76d7 */ 0xffff, /* 76d8 */ 0xffff, /* 76d9 */ 0xffff, /* 76da */ 0xffff, /* 76db */ 0xffff, /* 76dc */ 0xffff, /* 76dd */ 0xffff, /* 76de */ 0xffff, /* 76df */ 0xffff, /* 76e0 */ 0xffff, /* 76e1 */ 0xffff, /* 76e2 */ 0xffff, /* 76e3 */ 0xffff, /* 76e4 */ 0xffff, /* 76e5 */ 0xffff, /* 76e6 */ 0xffff, /* 76e7 */ 0xffff, /* 76e8 */ 0xffff, /* 76e9 */ 0xffff, /* 76ea */ 0xffff, /* 76eb */ 0xffff, /* 76ec */ 0xffff, /* 76ed */ 0xffff, /* 76ee */ 0xffff, /* 76ef */ 0xffff, /* 76f0 */ 0xffff, /* 76f1 */ 0xffff, /* 76f2 */ 0xffff, /* 76f3 */ 0xffff, /* 76f4 */ 0xffff, /* 76f5 */ 0xffff, /* 76f6 */ 0xffff, /* 76f7 */ 0xffff, /* 76f8 */ 0xffff, /* 76f9 */ 0xffff, /* 76fa */ 0xffff, /* 76fb */ 0xffff, /* 76fc */ 0xffff, /* 76fd */ 0xffff, /* 76fe */ 0xffff, /* 76ff */ 0xffff, /* 7700 */ 0xffff, /* 7701 */ 0xffff, /* 7702 */ 0xffff, /* 7703 */ 0xffff, /* 7704 */ 0xffff, /* 7705 */ 0xffff, /* 7706 */ 0xffff, /* 7707 */ 0xffff, /* 7708 */ 0xffff, /* 7709 */ 0xffff, /* 770a */ 0xffff, /* 770b */ 0xffff, /* 770c */ 0xffff, /* 770d */ 0xffff, /* 770e */ 0xffff, /* 770f */ 0xffff, /* 7710 */ 0xffff, /* 7711 */ 0xffff, /* 7712 */ 0xffff, /* 7713 */ 0xffff, /* 7714 */ 0xffff, /* 7715 */ 0xffff, /* 7716 */ 0xffff, /* 7717 */ 0xffff, /* 7718 */ 0xffff, /* 7719 */ 0xffff, /* 771a */ 0xffff, /* 771b */ 0xffff, /* 771c */ 0xffff, /* 771d */ 0xffff, /* 771e */ 0xffff, /* 771f */ 0xffff, /* 7720 */ 0xffff, /* 7721 */ 0xffff, /* 7722 */ 0xffff, /* 7723 */ 0xffff, /* 7724 */ 0xffff, /* 7725 */ 0xffff, /* 7726 */ 0xffff, /* 7727 */ 0xffff, /* 7728 */ 0xffff, /* 7729 */ 0xffff, /* 772a */ 0xffff, /* 772b */ 0xffff, /* 772c */ 0xffff, /* 772d */ 0xffff, /* 772e */ 0xffff, /* 772f */ 0xffff, /* 7730 */ 0xffff, /* 7731 */ 0xffff, /* 7732 */ 0xffff, /* 7733 */ 0xffff, /* 7734 */ 0xffff, /* 7735 */ 0xffff, /* 7736 */ 0xffff, /* 7737 */ 0xffff, /* 7738 */ 0xffff, /* 7739 */ 0xffff, /* 773a */ 0xffff, /* 773b */ 0xffff, /* 773c */ 0xffff, /* 773d */ 0xffff, /* 773e */ 0xffff, /* 773f */ 0xffff, /* 7740 */ 0xffff, /* 7741 */ 0xffff, /* 7742 */ 0xffff, /* 7743 */ 0xffff, /* 7744 */ 0xffff, /* 7745 */ 0xffff, /* 7746 */ 0xffff, /* 7747 */ 0xffff, /* 7748 */ 0xffff, /* 7749 */ 0xffff, /* 774a */ 0xffff, /* 774b */ 0xffff, /* 774c */ 0xffff, /* 774d */ 0xffff, /* 774e */ 0xffff, /* 774f */ 0xffff, /* 7750 */ 0xffff, /* 7751 */ 0xffff, /* 7752 */ 0xffff, /* 7753 */ 0xffff, /* 7754 */ 0xffff, /* 7755 */ 0xffff, /* 7756 */ 0xffff, /* 7757 */ 0xffff, /* 7758 */ 0xffff, /* 7759 */ 0xffff, /* 775a */ 0xffff, /* 775b */ 0xffff, /* 775c */ 0xffff, /* 775d */ 0xffff, /* 775e */ 0xffff, /* 775f */ 0xffff, /* 7760 */ 0xffff, /* 7761 */ 0xffff, /* 7762 */ 0xffff, /* 7763 */ 0xffff, /* 7764 */ 0xffff, /* 7765 */ 0xffff, /* 7766 */ 0xffff, /* 7767 */ 0xffff, /* 7768 */ 0xffff, /* 7769 */ 0xffff, /* 776a */ 0xffff, /* 776b */ 0xffff, /* 776c */ 0xffff, /* 776d */ 0xffff, /* 776e */ 0xffff, /* 776f */ 0xffff, /* 7770 */ 0xffff, /* 7771 */ 0xffff, /* 7772 */ 0xffff, /* 7773 */ 0xffff, /* 7774 */ 0xffff, /* 7775 */ 0xffff, /* 7776 */ 0xffff, /* 7777 */ 0xffff, /* 7778 */ 0xffff, /* 7779 */ 0xffff, /* 777a */ 0xffff, /* 777b */ 0xffff, /* 777c */ 0xffff, /* 777d */ 0xffff, /* 777e */ 0xffff, /* 777f */ 0xffff, /* 7780 */ 0xffff, /* 7781 */ 0xffff, /* 7782 */ 0xffff, /* 7783 */ 0xffff, /* 7784 */ 0xffff, /* 7785 */ 0xffff, /* 7786 */ 0xffff, /* 7787 */ 0xffff, /* 7788 */ 0xffff, /* 7789 */ 0xffff, /* 778a */ 0xffff, /* 778b */ 0xffff, /* 778c */ 0xffff, /* 778d */ 0xffff, /* 778e */ 0xffff, /* 778f */ 0xffff, /* 7790 */ 0xffff, /* 7791 */ 0xffff, /* 7792 */ 0xffff, /* 7793 */ 0xffff, /* 7794 */ 0xffff, /* 7795 */ 0xffff, /* 7796 */ 0xffff, /* 7797 */ 0xffff, /* 7798 */ 0xffff, /* 7799 */ 0xffff, /* 779a */ 0xffff, /* 779b */ 0xffff, /* 779c */ 0xffff, /* 779d */ 0xffff, /* 779e */ 0xffff, /* 779f */ 0xffff, /* 77a0 */ 0xffff, /* 77a1 */ 0xffff, /* 77a2 */ 0xffff, /* 77a3 */ 0xffff, /* 77a4 */ 0xffff, /* 77a5 */ 0xffff, /* 77a6 */ 0xffff, /* 77a7 */ 0xffff, /* 77a8 */ 0xffff, /* 77a9 */ 0xffff, /* 77aa */ 0xffff, /* 77ab */ 0xffff, /* 77ac */ 0xffff, /* 77ad */ 0xffff, /* 77ae */ 0xffff, /* 77af */ 0xffff, /* 77b0 */ 0xffff, /* 77b1 */ 0xffff, /* 77b2 */ 0xffff, /* 77b3 */ 0xffff, /* 77b4 */ 0xffff, /* 77b5 */ 0xffff, /* 77b6 */ 0xffff, /* 77b7 */ 0xffff, /* 77b8 */ 0xffff, /* 77b9 */ 0xffff, /* 77ba */ 0xffff, /* 77bb */ 0xffff, /* 77bc */ 0xffff, /* 77bd */ 0xffff, /* 77be */ 0xffff, /* 77bf */ 0xffff, /* 77c0 */ 0xffff, /* 77c1 */ 0xffff, /* 77c2 */ 0xffff, /* 77c3 */ 0xffff, /* 77c4 */ 0xffff, /* 77c5 */ 0xffff, /* 77c6 */ 0xffff, /* 77c7 */ 0xffff, /* 77c8 */ 0xffff, /* 77c9 */ 0xffff, /* 77ca */ 0xffff, /* 77cb */ 0xffff, /* 77cc */ 0xffff, /* 77cd */ 0xffff, /* 77ce */ 0xffff, /* 77cf */ 0xffff, /* 77d0 */ 0xffff, /* 77d1 */ 0xffff, /* 77d2 */ 0xffff, /* 77d3 */ 0xffff, /* 77d4 */ 0xffff, /* 77d5 */ 0xffff, /* 77d6 */ 0xffff, /* 77d7 */ 0xffff, /* 77d8 */ 0xffff, /* 77d9 */ 0xffff, /* 77da */ 0xffff, /* 77db */ 0xffff, /* 77dc */ 0xffff, /* 77dd */ 0xffff, /* 77de */ 0xffff, /* 77df */ 0xffff, /* 77e0 */ 0xffff, /* 77e1 */ 0xffff, /* 77e2 */ 0xffff, /* 77e3 */ 0xffff, /* 77e4 */ 0xffff, /* 77e5 */ 0xffff, /* 77e6 */ 0xffff, /* 77e7 */ 0xffff, /* 77e8 */ 0xffff, /* 77e9 */ 0xffff, /* 77ea */ 0xffff, /* 77eb */ 0xffff, /* 77ec */ 0xffff, /* 77ed */ 0xffff, /* 77ee */ 0xffff, /* 77ef */ 0xffff, /* 77f0 */ 0xffff, /* 77f1 */ 0xffff, /* 77f2 */ 0xffff, /* 77f3 */ 0xffff, /* 77f4 */ 0xffff, /* 77f5 */ 0xffff, /* 77f6 */ 0xffff, /* 77f7 */ 0xffff, /* 77f8 */ 0xffff, /* 77f9 */ 0xffff, /* 77fa */ 0xffff, /* 77fb */ 0xffff, /* 77fc */ 0xffff, /* 77fd */ 0xffff, /* 77fe */ 0xffff, /* 77ff */ 0xffff, /* 7800 */ 0xffff, /* 7801 */ 0xffff, /* 7802 */ 0xffff, /* 7803 */ 0xffff, /* 7804 */ 0xffff, /* 7805 */ 0xffff, /* 7806 */ 0xffff, /* 7807 */ 0xffff, /* 7808 */ 0xffff, /* 7809 */ 0xffff, /* 780a */ 0xffff, /* 780b */ 0xffff, /* 780c */ 0xffff, /* 780d */ 0xffff, /* 780e */ 0xffff, /* 780f */ 0xffff, /* 7810 */ 0xffff, /* 7811 */ 0xffff, /* 7812 */ 0xffff, /* 7813 */ 0xffff, /* 7814 */ 0xffff, /* 7815 */ 0xffff, /* 7816 */ 0xffff, /* 7817 */ 0xffff, /* 7818 */ 0xffff, /* 7819 */ 0xffff, /* 781a */ 0xffff, /* 781b */ 0xffff, /* 781c */ 0xffff, /* 781d */ 0xffff, /* 781e */ 0xffff, /* 781f */ 0xffff, /* 7820 */ 0xffff, /* 7821 */ 0xffff, /* 7822 */ 0xffff, /* 7823 */ 0xffff, /* 7824 */ 0xffff, /* 7825 */ 0xffff, /* 7826 */ 0xffff, /* 7827 */ 0xffff, /* 7828 */ 0xffff, /* 7829 */ 0xffff, /* 782a */ 0xffff, /* 782b */ 0xffff, /* 782c */ 0xffff, /* 782d */ 0xffff, /* 782e */ 0xffff, /* 782f */ 0xffff, /* 7830 */ 0xffff, /* 7831 */ 0xffff, /* 7832 */ 0xffff, /* 7833 */ 0xffff, /* 7834 */ 0xffff, /* 7835 */ 0xffff, /* 7836 */ 0xffff, /* 7837 */ 0xffff, /* 7838 */ 0xffff, /* 7839 */ 0xffff, /* 783a */ 0xffff, /* 783b */ 0xffff, /* 783c */ 0xffff, /* 783d */ 0xffff, /* 783e */ 0xffff, /* 783f */ 0xffff, /* 7840 */ 0xffff, /* 7841 */ 0xffff, /* 7842 */ 0xffff, /* 7843 */ 0xffff, /* 7844 */ 0xffff, /* 7845 */ 0xffff, /* 7846 */ 0xffff, /* 7847 */ 0xffff, /* 7848 */ 0xffff, /* 7849 */ 0xffff, /* 784a */ 0xffff, /* 784b */ 0xffff, /* 784c */ 0xffff, /* 784d */ 0xffff, /* 784e */ 0xffff, /* 784f */ 0xffff, /* 7850 */ 0xffff, /* 7851 */ 0xffff, /* 7852 */ 0xffff, /* 7853 */ 0xffff, /* 7854 */ 0xffff, /* 7855 */ 0xffff, /* 7856 */ 0xffff, /* 7857 */ 0xffff, /* 7858 */ 0xffff, /* 7859 */ 0xffff, /* 785a */ 0xffff, /* 785b */ 0xffff, /* 785c */ 0xffff, /* 785d */ 0xffff, /* 785e */ 0xffff, /* 785f */ 0xffff, /* 7860 */ 0xffff, /* 7861 */ 0xffff, /* 7862 */ 0xffff, /* 7863 */ 0xffff, /* 7864 */ 0xffff, /* 7865 */ 0xffff, /* 7866 */ 0xffff, /* 7867 */ 0xffff, /* 7868 */ 0xffff, /* 7869 */ 0xffff, /* 786a */ 0xffff, /* 786b */ 0xffff, /* 786c */ 0xffff, /* 786d */ 0xffff, /* 786e */ 0xffff, /* 786f */ 0xffff, /* 7870 */ 0xffff, /* 7871 */ 0xffff, /* 7872 */ 0xffff, /* 7873 */ 0xffff, /* 7874 */ 0xffff, /* 7875 */ 0xffff, /* 7876 */ 0xffff, /* 7877 */ 0xffff, /* 7878 */ 0xffff, /* 7879 */ 0xffff, /* 787a */ 0xffff, /* 787b */ 0xffff, /* 787c */ 0xffff, /* 787d */ 0xffff, /* 787e */ 0xffff, /* 787f */ 0xffff, /* 7880 */ 0xffff, /* 7881 */ 0xffff, /* 7882 */ 0xffff, /* 7883 */ 0xffff, /* 7884 */ 0xffff, /* 7885 */ 0xffff, /* 7886 */ 0xffff, /* 7887 */ 0xffff, /* 7888 */ 0xffff, /* 7889 */ 0xffff, /* 788a */ 0xffff, /* 788b */ 0xffff, /* 788c */ 0xffff, /* 788d */ 0xffff, /* 788e */ 0xffff, /* 788f */ 0xffff, /* 7890 */ 0xffff, /* 7891 */ 0xffff, /* 7892 */ 0xffff, /* 7893 */ 0xffff, /* 7894 */ 0xffff, /* 7895 */ 0xffff, /* 7896 */ 0xffff, /* 7897 */ 0xffff, /* 7898 */ 0xffff, /* 7899 */ 0xffff, /* 789a */ 0xffff, /* 789b */ 0xffff, /* 789c */ 0xffff, /* 789d */ 0xffff, /* 789e */ 0xffff, /* 789f */ 0xffff, /* 78a0 */ 0xffff, /* 78a1 */ 0xffff, /* 78a2 */ 0xffff, /* 78a3 */ 0xffff, /* 78a4 */ 0xffff, /* 78a5 */ 0xffff, /* 78a6 */ 0xffff, /* 78a7 */ 0xffff, /* 78a8 */ 0xffff, /* 78a9 */ 0xffff, /* 78aa */ 0xffff, /* 78ab */ 0xffff, /* 78ac */ 0xffff, /* 78ad */ 0xffff, /* 78ae */ 0xffff, /* 78af */ 0xffff, /* 78b0 */ 0xffff, /* 78b1 */ 0xffff, /* 78b2 */ 0xffff, /* 78b3 */ 0xffff, /* 78b4 */ 0xffff, /* 78b5 */ 0xffff, /* 78b6 */ 0xffff, /* 78b7 */ 0xffff, /* 78b8 */ 0xffff, /* 78b9 */ 0xffff, /* 78ba */ 0xffff, /* 78bb */ 0xffff, /* 78bc */ 0xffff, /* 78bd */ 0xffff, /* 78be */ 0xffff, /* 78bf */ 0xffff, /* 78c0 */ 0xffff, /* 78c1 */ 0xffff, /* 78c2 */ 0xffff, /* 78c3 */ 0xffff, /* 78c4 */ 0xffff, /* 78c5 */ 0xffff, /* 78c6 */ 0xffff, /* 78c7 */ 0xffff, /* 78c8 */ 0xffff, /* 78c9 */ 0xffff, /* 78ca */ 0xffff, /* 78cb */ 0xffff, /* 78cc */ 0xffff, /* 78cd */ 0xffff, /* 78ce */ 0xffff, /* 78cf */ 0xffff, /* 78d0 */ 0xffff, /* 78d1 */ 0xffff, /* 78d2 */ 0xffff, /* 78d3 */ 0xffff, /* 78d4 */ 0xffff, /* 78d5 */ 0xffff, /* 78d6 */ 0xffff, /* 78d7 */ 0xffff, /* 78d8 */ 0xffff, /* 78d9 */ 0xffff, /* 78da */ 0xffff, /* 78db */ 0xffff, /* 78dc */ 0xffff, /* 78dd */ 0xffff, /* 78de */ 0xffff, /* 78df */ 0xffff, /* 78e0 */ 0xffff, /* 78e1 */ 0xffff, /* 78e2 */ 0xffff, /* 78e3 */ 0xffff, /* 78e4 */ 0xffff, /* 78e5 */ 0xffff, /* 78e6 */ 0xffff, /* 78e7 */ 0xffff, /* 78e8 */ 0xffff, /* 78e9 */ 0xffff, /* 78ea */ 0xffff, /* 78eb */ 0xffff, /* 78ec */ 0xffff, /* 78ed */ 0xffff, /* 78ee */ 0xffff, /* 78ef */ 0xffff, /* 78f0 */ 0xffff, /* 78f1 */ 0xffff, /* 78f2 */ 0xffff, /* 78f3 */ 0xffff, /* 78f4 */ 0xffff, /* 78f5 */ 0xffff, /* 78f6 */ 0xffff, /* 78f7 */ 0xffff, /* 78f8 */ 0xffff, /* 78f9 */ 0xffff, /* 78fa */ 0xffff, /* 78fb */ 0xffff, /* 78fc */ 0xffff, /* 78fd */ 0xffff, /* 78fe */ 0xffff, /* 78ff */ 0xffff, /* 7900 */ 0xffff, /* 7901 */ 0xffff, /* 7902 */ 0xffff, /* 7903 */ 0xffff, /* 7904 */ 0xffff, /* 7905 */ 0xffff, /* 7906 */ 0xffff, /* 7907 */ 0xffff, /* 7908 */ 0xffff, /* 7909 */ 0xffff, /* 790a */ 0xffff, /* 790b */ 0xffff, /* 790c */ 0xffff, /* 790d */ 0xffff, /* 790e */ 0xffff, /* 790f */ 0xffff, /* 7910 */ 0xffff, /* 7911 */ 0xffff, /* 7912 */ 0xffff, /* 7913 */ 0xffff, /* 7914 */ 0xffff, /* 7915 */ 0xffff, /* 7916 */ 0xffff, /* 7917 */ 0xffff, /* 7918 */ 0xffff, /* 7919 */ 0xffff, /* 791a */ 0xffff, /* 791b */ 0xffff, /* 791c */ 0xffff, /* 791d */ 0xffff, /* 791e */ 0xffff, /* 791f */ 0xffff, /* 7920 */ 0xffff, /* 7921 */ 0xffff, /* 7922 */ 0xffff, /* 7923 */ 0xffff, /* 7924 */ 0xffff, /* 7925 */ 0xffff, /* 7926 */ 0xffff, /* 7927 */ 0xffff, /* 7928 */ 0xffff, /* 7929 */ 0xffff, /* 792a */ 0xffff, /* 792b */ 0xffff, /* 792c */ 0xffff, /* 792d */ 0xffff, /* 792e */ 0xffff, /* 792f */ 0xffff, /* 7930 */ 0xffff, /* 7931 */ 0xffff, /* 7932 */ 0xffff, /* 7933 */ 0xffff, /* 7934 */ 0xffff, /* 7935 */ 0xffff, /* 7936 */ 0xffff, /* 7937 */ 0xffff, /* 7938 */ 0xffff, /* 7939 */ 0xffff, /* 793a */ 0xffff, /* 793b */ 0xffff, /* 793c */ 0xffff, /* 793d */ 0xffff, /* 793e */ 0xffff, /* 793f */ 0xffff, /* 7940 */ 0xffff, /* 7941 */ 0xffff, /* 7942 */ 0xffff, /* 7943 */ 0xffff, /* 7944 */ 0xffff, /* 7945 */ 0xffff, /* 7946 */ 0xffff, /* 7947 */ 0xffff, /* 7948 */ 0xffff, /* 7949 */ 0xffff, /* 794a */ 0xffff, /* 794b */ 0xffff, /* 794c */ 0xffff, /* 794d */ 0xffff, /* 794e */ 0xffff, /* 794f */ 0xffff, /* 7950 */ 0xffff, /* 7951 */ 0xffff, /* 7952 */ 0xffff, /* 7953 */ 0xffff, /* 7954 */ 0xffff, /* 7955 */ 0xffff, /* 7956 */ 0xffff, /* 7957 */ 0xffff, /* 7958 */ 0xffff, /* 7959 */ 0xffff, /* 795a */ 0xffff, /* 795b */ 0xffff, /* 795c */ 0xffff, /* 795d */ 0xffff, /* 795e */ 0xffff, /* 795f */ 0xffff, /* 7960 */ 0xffff, /* 7961 */ 0xffff, /* 7962 */ 0xffff, /* 7963 */ 0xffff, /* 7964 */ 0xffff, /* 7965 */ 0xffff, /* 7966 */ 0xffff, /* 7967 */ 0xffff, /* 7968 */ 0xffff, /* 7969 */ 0xffff, /* 796a */ 0xffff, /* 796b */ 0xffff, /* 796c */ 0xffff, /* 796d */ 0xffff, /* 796e */ 0xffff, /* 796f */ 0xffff, /* 7970 */ 0xffff, /* 7971 */ 0xffff, /* 7972 */ 0xffff, /* 7973 */ 0xffff, /* 7974 */ 0xffff, /* 7975 */ 0xffff, /* 7976 */ 0xffff, /* 7977 */ 0xffff, /* 7978 */ 0xffff, /* 7979 */ 0xffff, /* 797a */ 0xffff, /* 797b */ 0xffff, /* 797c */ 0xffff, /* 797d */ 0xffff, /* 797e */ 0xffff, /* 797f */ 0xffff, /* 7980 */ 0xffff, /* 7981 */ 0xffff, /* 7982 */ 0xffff, /* 7983 */ 0xffff, /* 7984 */ 0xffff, /* 7985 */ 0xffff, /* 7986 */ 0xffff, /* 7987 */ 0xffff, /* 7988 */ 0xffff, /* 7989 */ 0xffff, /* 798a */ 0xffff, /* 798b */ 0xffff, /* 798c */ 0xffff, /* 798d */ 0xffff, /* 798e */ 0xffff, /* 798f */ 0xffff, /* 7990 */ 0xffff, /* 7991 */ 0xffff, /* 7992 */ 0xffff, /* 7993 */ 0xffff, /* 7994 */ 0xffff, /* 7995 */ 0xffff, /* 7996 */ 0xffff, /* 7997 */ 0xffff, /* 7998 */ 0xffff, /* 7999 */ 0xffff, /* 799a */ 0xffff, /* 799b */ 0xffff, /* 799c */ 0xffff, /* 799d */ 0xffff, /* 799e */ 0xffff, /* 799f */ 0xffff, /* 79a0 */ 0xffff, /* 79a1 */ 0xffff, /* 79a2 */ 0xffff, /* 79a3 */ 0xffff, /* 79a4 */ 0xffff, /* 79a5 */ 0xffff, /* 79a6 */ 0xffff, /* 79a7 */ 0xffff, /* 79a8 */ 0xffff, /* 79a9 */ 0xffff, /* 79aa */ 0xffff, /* 79ab */ 0xffff, /* 79ac */ 0xffff, /* 79ad */ 0xffff, /* 79ae */ 0xffff, /* 79af */ 0xffff, /* 79b0 */ 0xffff, /* 79b1 */ 0xffff, /* 79b2 */ 0xffff, /* 79b3 */ 0xffff, /* 79b4 */ 0xffff, /* 79b5 */ 0xffff, /* 79b6 */ 0xffff, /* 79b7 */ 0xffff, /* 79b8 */ 0xffff, /* 79b9 */ 0xffff, /* 79ba */ 0xffff, /* 79bb */ 0xffff, /* 79bc */ 0xffff, /* 79bd */ 0xffff, /* 79be */ 0xffff, /* 79bf */ 0xffff, /* 79c0 */ 0xffff, /* 79c1 */ 0xffff, /* 79c2 */ 0xffff, /* 79c3 */ 0xffff, /* 79c4 */ 0xffff, /* 79c5 */ 0xffff, /* 79c6 */ 0xffff, /* 79c7 */ 0xffff, /* 79c8 */ 0xffff, /* 79c9 */ 0xffff, /* 79ca */ 0xffff, /* 79cb */ 0xffff, /* 79cc */ 0xffff, /* 79cd */ 0xffff, /* 79ce */ 0xffff, /* 79cf */ 0xffff, /* 79d0 */ 0xffff, /* 79d1 */ 0xffff, /* 79d2 */ 0xffff, /* 79d3 */ 0xffff, /* 79d4 */ 0xffff, /* 79d5 */ 0xffff, /* 79d6 */ 0xffff, /* 79d7 */ 0xffff, /* 79d8 */ 0xffff, /* 79d9 */ 0xffff, /* 79da */ 0xffff, /* 79db */ 0xffff, /* 79dc */ 0xffff, /* 79dd */ 0xffff, /* 79de */ 0xffff, /* 79df */ 0xffff, /* 79e0 */ 0xffff, /* 79e1 */ 0xffff, /* 79e2 */ 0xffff, /* 79e3 */ 0xffff, /* 79e4 */ 0xffff, /* 79e5 */ 0xffff, /* 79e6 */ 0xffff, /* 79e7 */ 0xffff, /* 79e8 */ 0xffff, /* 79e9 */ 0xffff, /* 79ea */ 0xffff, /* 79eb */ 0xffff, /* 79ec */ 0xffff, /* 79ed */ 0xffff, /* 79ee */ 0xffff, /* 79ef */ 0xffff, /* 79f0 */ 0xffff, /* 79f1 */ 0xffff, /* 79f2 */ 0xffff, /* 79f3 */ 0xffff, /* 79f4 */ 0xffff, /* 79f5 */ 0xffff, /* 79f6 */ 0xffff, /* 79f7 */ 0xffff, /* 79f8 */ 0xffff, /* 79f9 */ 0xffff, /* 79fa */ 0xffff, /* 79fb */ 0xffff, /* 79fc */ 0xffff, /* 79fd */ 0xffff, /* 79fe */ 0xffff, /* 79ff */ 0xffff, /* 7a00 */ 0xffff, /* 7a01 */ 0xffff, /* 7a02 */ 0xffff, /* 7a03 */ 0xffff, /* 7a04 */ 0xffff, /* 7a05 */ 0xffff, /* 7a06 */ 0xffff, /* 7a07 */ 0xffff, /* 7a08 */ 0xffff, /* 7a09 */ 0xffff, /* 7a0a */ 0xffff, /* 7a0b */ 0xffff, /* 7a0c */ 0xffff, /* 7a0d */ 0xffff, /* 7a0e */ 0xffff, /* 7a0f */ 0xffff, /* 7a10 */ 0xffff, /* 7a11 */ 0xffff, /* 7a12 */ 0xffff, /* 7a13 */ 0xffff, /* 7a14 */ 0xffff, /* 7a15 */ 0xffff, /* 7a16 */ 0xffff, /* 7a17 */ 0xffff, /* 7a18 */ 0xffff, /* 7a19 */ 0xffff, /* 7a1a */ 0xffff, /* 7a1b */ 0xffff, /* 7a1c */ 0xffff, /* 7a1d */ 0xffff, /* 7a1e */ 0xffff, /* 7a1f */ 0xffff, /* 7a20 */ 0xffff, /* 7a21 */ 0xffff, /* 7a22 */ 0xffff, /* 7a23 */ 0xffff, /* 7a24 */ 0xffff, /* 7a25 */ 0xffff, /* 7a26 */ 0xffff, /* 7a27 */ 0xffff, /* 7a28 */ 0xffff, /* 7a29 */ 0xffff, /* 7a2a */ 0xffff, /* 7a2b */ 0xffff, /* 7a2c */ 0xffff, /* 7a2d */ 0xffff, /* 7a2e */ 0xffff, /* 7a2f */ 0xffff, /* 7a30 */ 0xffff, /* 7a31 */ 0xffff, /* 7a32 */ 0xffff, /* 7a33 */ 0xffff, /* 7a34 */ 0xffff, /* 7a35 */ 0xffff, /* 7a36 */ 0xffff, /* 7a37 */ 0xffff, /* 7a38 */ 0xffff, /* 7a39 */ 0xffff, /* 7a3a */ 0xffff, /* 7a3b */ 0xffff, /* 7a3c */ 0xffff, /* 7a3d */ 0xffff, /* 7a3e */ 0xffff, /* 7a3f */ 0xffff, /* 7a40 */ 0xffff, /* 7a41 */ 0xffff, /* 7a42 */ 0xffff, /* 7a43 */ 0xffff, /* 7a44 */ 0xffff, /* 7a45 */ 0xffff, /* 7a46 */ 0xffff, /* 7a47 */ 0xffff, /* 7a48 */ 0xffff, /* 7a49 */ 0xffff, /* 7a4a */ 0xffff, /* 7a4b */ 0xffff, /* 7a4c */ 0xffff, /* 7a4d */ 0xffff, /* 7a4e */ 0xffff, /* 7a4f */ 0xffff, /* 7a50 */ 0xffff, /* 7a51 */ 0xffff, /* 7a52 */ 0xffff, /* 7a53 */ 0xffff, /* 7a54 */ 0xffff, /* 7a55 */ 0xffff, /* 7a56 */ 0xffff, /* 7a57 */ 0xffff, /* 7a58 */ 0xffff, /* 7a59 */ 0xffff, /* 7a5a */ 0xffff, /* 7a5b */ 0xffff, /* 7a5c */ 0xffff, /* 7a5d */ 0xffff, /* 7a5e */ 0xffff, /* 7a5f */ 0xffff, /* 7a60 */ 0xffff, /* 7a61 */ 0xffff, /* 7a62 */ 0xffff, /* 7a63 */ 0xffff, /* 7a64 */ 0xffff, /* 7a65 */ 0xffff, /* 7a66 */ 0xffff, /* 7a67 */ 0xffff, /* 7a68 */ 0xffff, /* 7a69 */ 0xffff, /* 7a6a */ 0xffff, /* 7a6b */ 0xffff, /* 7a6c */ 0xffff, /* 7a6d */ 0xffff, /* 7a6e */ 0xffff, /* 7a6f */ 0xffff, /* 7a70 */ 0xffff, /* 7a71 */ 0xffff, /* 7a72 */ 0xffff, /* 7a73 */ 0xffff, /* 7a74 */ 0xffff, /* 7a75 */ 0xffff, /* 7a76 */ 0xffff, /* 7a77 */ 0xffff, /* 7a78 */ 0xffff, /* 7a79 */ 0xffff, /* 7a7a */ 0xffff, /* 7a7b */ 0xffff, /* 7a7c */ 0xffff, /* 7a7d */ 0xffff, /* 7a7e */ 0xffff, /* 7a7f */ 0xffff, /* 7a80 */ 0xffff, /* 7a81 */ 0xffff, /* 7a82 */ 0xffff, /* 7a83 */ 0xffff, /* 7a84 */ 0xffff, /* 7a85 */ 0xffff, /* 7a86 */ 0xffff, /* 7a87 */ 0xffff, /* 7a88 */ 0xffff, /* 7a89 */ 0xffff, /* 7a8a */ 0xffff, /* 7a8b */ 0xffff, /* 7a8c */ 0xffff, /* 7a8d */ 0xffff, /* 7a8e */ 0xffff, /* 7a8f */ 0xffff, /* 7a90 */ 0xffff, /* 7a91 */ 0xffff, /* 7a92 */ 0xffff, /* 7a93 */ 0xffff, /* 7a94 */ 0xffff, /* 7a95 */ 0xffff, /* 7a96 */ 0xffff, /* 7a97 */ 0xffff, /* 7a98 */ 0xffff, /* 7a99 */ 0xffff, /* 7a9a */ 0xffff, /* 7a9b */ 0xffff, /* 7a9c */ 0xffff, /* 7a9d */ 0xffff, /* 7a9e */ 0xffff, /* 7a9f */ 0xffff, /* 7aa0 */ 0xffff, /* 7aa1 */ 0xffff, /* 7aa2 */ 0xffff, /* 7aa3 */ 0xffff, /* 7aa4 */ 0xffff, /* 7aa5 */ 0xffff, /* 7aa6 */ 0xffff, /* 7aa7 */ 0xffff, /* 7aa8 */ 0xffff, /* 7aa9 */ 0xffff, /* 7aaa */ 0xffff, /* 7aab */ 0xffff, /* 7aac */ 0xffff, /* 7aad */ 0xffff, /* 7aae */ 0xffff, /* 7aaf */ 0xffff, /* 7ab0 */ 0xffff, /* 7ab1 */ 0xffff, /* 7ab2 */ 0xffff, /* 7ab3 */ 0xffff, /* 7ab4 */ 0xffff, /* 7ab5 */ 0xffff, /* 7ab6 */ 0xffff, /* 7ab7 */ 0xffff, /* 7ab8 */ 0xffff, /* 7ab9 */ 0xffff, /* 7aba */ 0xffff, /* 7abb */ 0xffff, /* 7abc */ 0xffff, /* 7abd */ 0xffff, /* 7abe */ 0xffff, /* 7abf */ 0xffff, /* 7ac0 */ 0xffff, /* 7ac1 */ 0xffff, /* 7ac2 */ 0xffff, /* 7ac3 */ 0xffff, /* 7ac4 */ 0xffff, /* 7ac5 */ 0xffff, /* 7ac6 */ 0xffff, /* 7ac7 */ 0xffff, /* 7ac8 */ 0xffff, /* 7ac9 */ 0xffff, /* 7aca */ 0xffff, /* 7acb */ 0xffff, /* 7acc */ 0xffff, /* 7acd */ 0xffff, /* 7ace */ 0xffff, /* 7acf */ 0xffff, /* 7ad0 */ 0xffff, /* 7ad1 */ 0xffff, /* 7ad2 */ 0xffff, /* 7ad3 */ 0xffff, /* 7ad4 */ 0xffff, /* 7ad5 */ 0xffff, /* 7ad6 */ 0xffff, /* 7ad7 */ 0xffff, /* 7ad8 */ 0xffff, /* 7ad9 */ 0xffff, /* 7ada */ 0xffff, /* 7adb */ 0xffff, /* 7adc */ 0xffff, /* 7add */ 0xffff, /* 7ade */ 0xffff, /* 7adf */ 0xffff, /* 7ae0 */ 0xffff, /* 7ae1 */ 0xffff, /* 7ae2 */ 0xffff, /* 7ae3 */ 0xffff, /* 7ae4 */ 0xffff, /* 7ae5 */ 0xffff, /* 7ae6 */ 0xffff, /* 7ae7 */ 0xffff, /* 7ae8 */ 0xffff, /* 7ae9 */ 0xffff, /* 7aea */ 0xffff, /* 7aeb */ 0xffff, /* 7aec */ 0xffff, /* 7aed */ 0xffff, /* 7aee */ 0xffff, /* 7aef */ 0xffff, /* 7af0 */ 0xffff, /* 7af1 */ 0xffff, /* 7af2 */ 0xffff, /* 7af3 */ 0xffff, /* 7af4 */ 0xffff, /* 7af5 */ 0xffff, /* 7af6 */ 0xffff, /* 7af7 */ 0xffff, /* 7af8 */ 0xffff, /* 7af9 */ 0xffff, /* 7afa */ 0xffff, /* 7afb */ 0xffff, /* 7afc */ 0xffff, /* 7afd */ 0xffff, /* 7afe */ 0xffff, /* 7aff */ 0xffff, /* 7b00 */ 0xffff, /* 7b01 */ 0xffff, /* 7b02 */ 0xffff, /* 7b03 */ 0xffff, /* 7b04 */ 0xffff, /* 7b05 */ 0xffff, /* 7b06 */ 0xffff, /* 7b07 */ 0xffff, /* 7b08 */ 0xffff, /* 7b09 */ 0xffff, /* 7b0a */ 0xffff, /* 7b0b */ 0xffff, /* 7b0c */ 0xffff, /* 7b0d */ 0xffff, /* 7b0e */ 0xffff, /* 7b0f */ 0xffff, /* 7b10 */ 0xffff, /* 7b11 */ 0xffff, /* 7b12 */ 0xffff, /* 7b13 */ 0xffff, /* 7b14 */ 0xffff, /* 7b15 */ 0xffff, /* 7b16 */ 0xffff, /* 7b17 */ 0xffff, /* 7b18 */ 0xffff, /* 7b19 */ 0xffff, /* 7b1a */ 0xffff, /* 7b1b */ 0xffff, /* 7b1c */ 0xffff, /* 7b1d */ 0xffff, /* 7b1e */ 0xffff, /* 7b1f */ 0xffff, /* 7b20 */ 0xffff, /* 7b21 */ 0xffff, /* 7b22 */ 0xffff, /* 7b23 */ 0xffff, /* 7b24 */ 0xffff, /* 7b25 */ 0xffff, /* 7b26 */ 0xffff, /* 7b27 */ 0xffff, /* 7b28 */ 0xffff, /* 7b29 */ 0xffff, /* 7b2a */ 0xffff, /* 7b2b */ 0xffff, /* 7b2c */ 0xffff, /* 7b2d */ 0xffff, /* 7b2e */ 0xffff, /* 7b2f */ 0xffff, /* 7b30 */ 0xffff, /* 7b31 */ 0xffff, /* 7b32 */ 0xffff, /* 7b33 */ 0xffff, /* 7b34 */ 0xffff, /* 7b35 */ 0xffff, /* 7b36 */ 0xffff, /* 7b37 */ 0xffff, /* 7b38 */ 0xffff, /* 7b39 */ 0xffff, /* 7b3a */ 0xffff, /* 7b3b */ 0xffff, /* 7b3c */ 0xffff, /* 7b3d */ 0xffff, /* 7b3e */ 0xffff, /* 7b3f */ 0xffff, /* 7b40 */ 0xffff, /* 7b41 */ 0xffff, /* 7b42 */ 0xffff, /* 7b43 */ 0xffff, /* 7b44 */ 0xffff, /* 7b45 */ 0xffff, /* 7b46 */ 0xffff, /* 7b47 */ 0xffff, /* 7b48 */ 0xffff, /* 7b49 */ 0xffff, /* 7b4a */ 0xffff, /* 7b4b */ 0xffff, /* 7b4c */ 0xffff, /* 7b4d */ 0xffff, /* 7b4e */ 0xffff, /* 7b4f */ 0xffff, /* 7b50 */ 0xffff, /* 7b51 */ 0xffff, /* 7b52 */ 0xffff, /* 7b53 */ 0xffff, /* 7b54 */ 0xffff, /* 7b55 */ 0xffff, /* 7b56 */ 0xffff, /* 7b57 */ 0xffff, /* 7b58 */ 0xffff, /* 7b59 */ 0xffff, /* 7b5a */ 0xffff, /* 7b5b */ 0xffff, /* 7b5c */ 0xffff, /* 7b5d */ 0xffff, /* 7b5e */ 0xffff, /* 7b5f */ 0xffff, /* 7b60 */ 0xffff, /* 7b61 */ 0xffff, /* 7b62 */ 0xffff, /* 7b63 */ 0xffff, /* 7b64 */ 0xffff, /* 7b65 */ 0xffff, /* 7b66 */ 0xffff, /* 7b67 */ 0xffff, /* 7b68 */ 0xffff, /* 7b69 */ 0xffff, /* 7b6a */ 0xffff, /* 7b6b */ 0xffff, /* 7b6c */ 0xffff, /* 7b6d */ 0xffff, /* 7b6e */ 0xffff, /* 7b6f */ 0xffff, /* 7b70 */ 0xffff, /* 7b71 */ 0xffff, /* 7b72 */ 0xffff, /* 7b73 */ 0xffff, /* 7b74 */ 0xffff, /* 7b75 */ 0xffff, /* 7b76 */ 0xffff, /* 7b77 */ 0xffff, /* 7b78 */ 0xffff, /* 7b79 */ 0xffff, /* 7b7a */ 0xffff, /* 7b7b */ 0xffff, /* 7b7c */ 0xffff, /* 7b7d */ 0xffff, /* 7b7e */ 0xffff, /* 7b7f */ 0xffff, /* 7b80 */ 0xffff, /* 7b81 */ 0xffff, /* 7b82 */ 0xffff, /* 7b83 */ 0xffff, /* 7b84 */ 0xffff, /* 7b85 */ 0xffff, /* 7b86 */ 0xffff, /* 7b87 */ 0xffff, /* 7b88 */ 0xffff, /* 7b89 */ 0xffff, /* 7b8a */ 0xffff, /* 7b8b */ 0xffff, /* 7b8c */ 0xffff, /* 7b8d */ 0xffff, /* 7b8e */ 0xffff, /* 7b8f */ 0xffff, /* 7b90 */ 0xffff, /* 7b91 */ 0xffff, /* 7b92 */ 0xffff, /* 7b93 */ 0xffff, /* 7b94 */ 0xffff, /* 7b95 */ 0xffff, /* 7b96 */ 0xffff, /* 7b97 */ 0xffff, /* 7b98 */ 0xffff, /* 7b99 */ 0xffff, /* 7b9a */ 0xffff, /* 7b9b */ 0xffff, /* 7b9c */ 0xffff, /* 7b9d */ 0xffff, /* 7b9e */ 0xffff, /* 7b9f */ 0xffff, /* 7ba0 */ 0xffff, /* 7ba1 */ 0xffff, /* 7ba2 */ 0xffff, /* 7ba3 */ 0xffff, /* 7ba4 */ 0xffff, /* 7ba5 */ 0xffff, /* 7ba6 */ 0xffff, /* 7ba7 */ 0xffff, /* 7ba8 */ 0xffff, /* 7ba9 */ 0xffff, /* 7baa */ 0xffff, /* 7bab */ 0xffff, /* 7bac */ 0xffff, /* 7bad */ 0xffff, /* 7bae */ 0xffff, /* 7baf */ 0xffff, /* 7bb0 */ 0xffff, /* 7bb1 */ 0xffff, /* 7bb2 */ 0xffff, /* 7bb3 */ 0xffff, /* 7bb4 */ 0xffff, /* 7bb5 */ 0xffff, /* 7bb6 */ 0xffff, /* 7bb7 */ 0xffff, /* 7bb8 */ 0xffff, /* 7bb9 */ 0xffff, /* 7bba */ 0xffff, /* 7bbb */ 0xffff, /* 7bbc */ 0xffff, /* 7bbd */ 0xffff, /* 7bbe */ 0xffff, /* 7bbf */ 0xffff, /* 7bc0 */ 0xffff, /* 7bc1 */ 0xffff, /* 7bc2 */ 0xffff, /* 7bc3 */ 0xffff, /* 7bc4 */ 0xffff, /* 7bc5 */ 0xffff, /* 7bc6 */ 0xffff, /* 7bc7 */ 0xffff, /* 7bc8 */ 0xffff, /* 7bc9 */ 0xffff, /* 7bca */ 0xffff, /* 7bcb */ 0xffff, /* 7bcc */ 0xffff, /* 7bcd */ 0xffff, /* 7bce */ 0xffff, /* 7bcf */ 0xffff, /* 7bd0 */ 0xffff, /* 7bd1 */ 0xffff, /* 7bd2 */ 0xffff, /* 7bd3 */ 0xffff, /* 7bd4 */ 0xffff, /* 7bd5 */ 0xffff, /* 7bd6 */ 0xffff, /* 7bd7 */ 0xffff, /* 7bd8 */ 0xffff, /* 7bd9 */ 0xffff, /* 7bda */ 0xffff, /* 7bdb */ 0xffff, /* 7bdc */ 0xffff, /* 7bdd */ 0xffff, /* 7bde */ 0xffff, /* 7bdf */ 0xffff, /* 7be0 */ 0xffff, /* 7be1 */ 0xffff, /* 7be2 */ 0xffff, /* 7be3 */ 0xffff, /* 7be4 */ 0xffff, /* 7be5 */ 0xffff, /* 7be6 */ 0xffff, /* 7be7 */ 0xffff, /* 7be8 */ 0xffff, /* 7be9 */ 0xffff, /* 7bea */ 0xffff, /* 7beb */ 0xffff, /* 7bec */ 0xffff, /* 7bed */ 0xffff, /* 7bee */ 0xffff, /* 7bef */ 0xffff, /* 7bf0 */ 0xffff, /* 7bf1 */ 0xffff, /* 7bf2 */ 0xffff, /* 7bf3 */ 0xffff, /* 7bf4 */ 0xffff, /* 7bf5 */ 0xffff, /* 7bf6 */ 0xffff, /* 7bf7 */ 0xffff, /* 7bf8 */ 0xffff, /* 7bf9 */ 0xffff, /* 7bfa */ 0xffff, /* 7bfb */ 0xffff, /* 7bfc */ 0xffff, /* 7bfd */ 0xffff, /* 7bfe */ 0xffff, /* 7bff */ 0xffff, /* 7c00 */ 0xffff, /* 7c01 */ 0xffff, /* 7c02 */ 0xffff, /* 7c03 */ 0xffff, /* 7c04 */ 0xffff, /* 7c05 */ 0xffff, /* 7c06 */ 0xffff, /* 7c07 */ 0xffff, /* 7c08 */ 0xffff, /* 7c09 */ 0xffff, /* 7c0a */ 0xffff, /* 7c0b */ 0xffff, /* 7c0c */ 0xffff, /* 7c0d */ 0xffff, /* 7c0e */ 0xffff, /* 7c0f */ 0xffff, /* 7c10 */ 0xffff, /* 7c11 */ 0xffff, /* 7c12 */ 0xffff, /* 7c13 */ 0xffff, /* 7c14 */ 0xffff, /* 7c15 */ 0xffff, /* 7c16 */ 0xffff, /* 7c17 */ 0xffff, /* 7c18 */ 0xffff, /* 7c19 */ 0xffff, /* 7c1a */ 0xffff, /* 7c1b */ 0xffff, /* 7c1c */ 0xffff, /* 7c1d */ 0xffff, /* 7c1e */ 0xffff, /* 7c1f */ 0xffff, /* 7c20 */ 0xffff, /* 7c21 */ 0xffff, /* 7c22 */ 0xffff, /* 7c23 */ 0xffff, /* 7c24 */ 0xffff, /* 7c25 */ 0xffff, /* 7c26 */ 0xffff, /* 7c27 */ 0xffff, /* 7c28 */ 0xffff, /* 7c29 */ 0xffff, /* 7c2a */ 0xffff, /* 7c2b */ 0xffff, /* 7c2c */ 0xffff, /* 7c2d */ 0xffff, /* 7c2e */ 0xffff, /* 7c2f */ 0xffff, /* 7c30 */ 0xffff, /* 7c31 */ 0xffff, /* 7c32 */ 0xffff, /* 7c33 */ 0xffff, /* 7c34 */ 0xffff, /* 7c35 */ 0xffff, /* 7c36 */ 0xffff, /* 7c37 */ 0xffff, /* 7c38 */ 0xffff, /* 7c39 */ 0xffff, /* 7c3a */ 0xffff, /* 7c3b */ 0xffff, /* 7c3c */ 0xffff, /* 7c3d */ 0xffff, /* 7c3e */ 0xffff, /* 7c3f */ 0xffff, /* 7c40 */ 0xffff, /* 7c41 */ 0xffff, /* 7c42 */ 0xffff, /* 7c43 */ 0xffff, /* 7c44 */ 0xffff, /* 7c45 */ 0xffff, /* 7c46 */ 0xffff, /* 7c47 */ 0xffff, /* 7c48 */ 0xffff, /* 7c49 */ 0xffff, /* 7c4a */ 0xffff, /* 7c4b */ 0xffff, /* 7c4c */ 0xffff, /* 7c4d */ 0xffff, /* 7c4e */ 0xffff, /* 7c4f */ 0xffff, /* 7c50 */ 0xffff, /* 7c51 */ 0xffff, /* 7c52 */ 0xffff, /* 7c53 */ 0xffff, /* 7c54 */ 0xffff, /* 7c55 */ 0xffff, /* 7c56 */ 0xffff, /* 7c57 */ 0xffff, /* 7c58 */ 0xffff, /* 7c59 */ 0xffff, /* 7c5a */ 0xffff, /* 7c5b */ 0xffff, /* 7c5c */ 0xffff, /* 7c5d */ 0xffff, /* 7c5e */ 0xffff, /* 7c5f */ 0xffff, /* 7c60 */ 0xffff, /* 7c61 */ 0xffff, /* 7c62 */ 0xffff, /* 7c63 */ 0xffff, /* 7c64 */ 0xffff, /* 7c65 */ 0xffff, /* 7c66 */ 0xffff, /* 7c67 */ 0xffff, /* 7c68 */ 0xffff, /* 7c69 */ 0xffff, /* 7c6a */ 0xffff, /* 7c6b */ 0xffff, /* 7c6c */ 0xffff, /* 7c6d */ 0xffff, /* 7c6e */ 0xffff, /* 7c6f */ 0xffff, /* 7c70 */ 0xffff, /* 7c71 */ 0xffff, /* 7c72 */ 0xffff, /* 7c73 */ 0xffff, /* 7c74 */ 0xffff, /* 7c75 */ 0xffff, /* 7c76 */ 0xffff, /* 7c77 */ 0xffff, /* 7c78 */ 0xffff, /* 7c79 */ 0xffff, /* 7c7a */ 0xffff, /* 7c7b */ 0xffff, /* 7c7c */ 0xffff, /* 7c7d */ 0xffff, /* 7c7e */ 0xffff, /* 7c7f */ 0xffff, /* 7c80 */ 0xffff, /* 7c81 */ 0xffff, /* 7c82 */ 0xffff, /* 7c83 */ 0xffff, /* 7c84 */ 0xffff, /* 7c85 */ 0xffff, /* 7c86 */ 0xffff, /* 7c87 */ 0xffff, /* 7c88 */ 0xffff, /* 7c89 */ 0xffff, /* 7c8a */ 0xffff, /* 7c8b */ 0xffff, /* 7c8c */ 0xffff, /* 7c8d */ 0xffff, /* 7c8e */ 0xffff, /* 7c8f */ 0xffff, /* 7c90 */ 0xffff, /* 7c91 */ 0xffff, /* 7c92 */ 0xffff, /* 7c93 */ 0xffff, /* 7c94 */ 0xffff, /* 7c95 */ 0xffff, /* 7c96 */ 0xffff, /* 7c97 */ 0xffff, /* 7c98 */ 0xffff, /* 7c99 */ 0xffff, /* 7c9a */ 0xffff, /* 7c9b */ 0xffff, /* 7c9c */ 0xffff, /* 7c9d */ 0xffff, /* 7c9e */ 0xffff, /* 7c9f */ 0xffff, /* 7ca0 */ 0xffff, /* 7ca1 */ 0xffff, /* 7ca2 */ 0xffff, /* 7ca3 */ 0xffff, /* 7ca4 */ 0xffff, /* 7ca5 */ 0xffff, /* 7ca6 */ 0xffff, /* 7ca7 */ 0xffff, /* 7ca8 */ 0xffff, /* 7ca9 */ 0xffff, /* 7caa */ 0xffff, /* 7cab */ 0xffff, /* 7cac */ 0xffff, /* 7cad */ 0xffff, /* 7cae */ 0xffff, /* 7caf */ 0xffff, /* 7cb0 */ 0xffff, /* 7cb1 */ 0xffff, /* 7cb2 */ 0xffff, /* 7cb3 */ 0xffff, /* 7cb4 */ 0xffff, /* 7cb5 */ 0xffff, /* 7cb6 */ 0xffff, /* 7cb7 */ 0xffff, /* 7cb8 */ 0xffff, /* 7cb9 */ 0xffff, /* 7cba */ 0xffff, /* 7cbb */ 0xffff, /* 7cbc */ 0xffff, /* 7cbd */ 0xffff, /* 7cbe */ 0xffff, /* 7cbf */ 0xffff, /* 7cc0 */ 0xffff, /* 7cc1 */ 0xffff, /* 7cc2 */ 0xffff, /* 7cc3 */ 0xffff, /* 7cc4 */ 0xffff, /* 7cc5 */ 0xffff, /* 7cc6 */ 0xffff, /* 7cc7 */ 0xffff, /* 7cc8 */ 0xffff, /* 7cc9 */ 0xffff, /* 7cca */ 0xffff, /* 7ccb */ 0xffff, /* 7ccc */ 0xffff, /* 7ccd */ 0xffff, /* 7cce */ 0xffff, /* 7ccf */ 0xffff, /* 7cd0 */ 0xffff, /* 7cd1 */ 0xffff, /* 7cd2 */ 0xffff, /* 7cd3 */ 0xffff, /* 7cd4 */ 0xffff, /* 7cd5 */ 0xffff, /* 7cd6 */ 0xffff, /* 7cd7 */ 0xffff, /* 7cd8 */ 0xffff, /* 7cd9 */ 0xffff, /* 7cda */ 0xffff, /* 7cdb */ 0xffff, /* 7cdc */ 0xffff, /* 7cdd */ 0xffff, /* 7cde */ 0xffff, /* 7cdf */ 0xffff, /* 7ce0 */ 0xffff, /* 7ce1 */ 0xffff, /* 7ce2 */ 0xffff, /* 7ce3 */ 0xffff, /* 7ce4 */ 0xffff, /* 7ce5 */ 0xffff, /* 7ce6 */ 0xffff, /* 7ce7 */ 0xffff, /* 7ce8 */ 0xffff, /* 7ce9 */ 0xffff, /* 7cea */ 0xffff, /* 7ceb */ 0xffff, /* 7cec */ 0xffff, /* 7ced */ 0xffff, /* 7cee */ 0xffff, /* 7cef */ 0xffff, /* 7cf0 */ 0xffff, /* 7cf1 */ 0xffff, /* 7cf2 */ 0xffff, /* 7cf3 */ 0xffff, /* 7cf4 */ 0xffff, /* 7cf5 */ 0xffff, /* 7cf6 */ 0xffff, /* 7cf7 */ 0xffff, /* 7cf8 */ 0xffff, /* 7cf9 */ 0xffff, /* 7cfa */ 0xffff, /* 7cfb */ 0xffff, /* 7cfc */ 0xffff, /* 7cfd */ 0xffff, /* 7cfe */ 0xffff, /* 7cff */ 0xffff, /* 7d00 */ 0xffff, /* 7d01 */ 0xffff, /* 7d02 */ 0xffff, /* 7d03 */ 0xffff, /* 7d04 */ 0xffff, /* 7d05 */ 0xffff, /* 7d06 */ 0xffff, /* 7d07 */ 0xffff, /* 7d08 */ 0xffff, /* 7d09 */ 0xffff, /* 7d0a */ 0xffff, /* 7d0b */ 0xffff, /* 7d0c */ 0xffff, /* 7d0d */ 0xffff, /* 7d0e */ 0xffff, /* 7d0f */ 0xffff, /* 7d10 */ 0xffff, /* 7d11 */ 0xffff, /* 7d12 */ 0xffff, /* 7d13 */ 0xffff, /* 7d14 */ 0xffff, /* 7d15 */ 0xffff, /* 7d16 */ 0xffff, /* 7d17 */ 0xffff, /* 7d18 */ 0xffff, /* 7d19 */ 0xffff, /* 7d1a */ 0xffff, /* 7d1b */ 0xffff, /* 7d1c */ 0xffff, /* 7d1d */ 0xffff, /* 7d1e */ 0xffff, /* 7d1f */ 0xffff, /* 7d20 */ 0xffff, /* 7d21 */ 0xffff, /* 7d22 */ 0xffff, /* 7d23 */ 0xffff, /* 7d24 */ 0xffff, /* 7d25 */ 0xffff, /* 7d26 */ 0xffff, /* 7d27 */ 0xffff, /* 7d28 */ 0xffff, /* 7d29 */ 0xffff, /* 7d2a */ 0xffff, /* 7d2b */ 0xffff, /* 7d2c */ 0xffff, /* 7d2d */ 0xffff, /* 7d2e */ 0xffff, /* 7d2f */ 0xffff, /* 7d30 */ 0xffff, /* 7d31 */ 0xffff, /* 7d32 */ 0xffff, /* 7d33 */ 0xffff, /* 7d34 */ 0xffff, /* 7d35 */ 0xffff, /* 7d36 */ 0xffff, /* 7d37 */ 0xffff, /* 7d38 */ 0xffff, /* 7d39 */ 0xffff, /* 7d3a */ 0xffff, /* 7d3b */ 0xffff, /* 7d3c */ 0xffff, /* 7d3d */ 0xffff, /* 7d3e */ 0xffff, /* 7d3f */ 0xffff, /* 7d40 */ 0xffff, /* 7d41 */ 0xffff, /* 7d42 */ 0xffff, /* 7d43 */ 0xffff, /* 7d44 */ 0xffff, /* 7d45 */ 0xffff, /* 7d46 */ 0xffff, /* 7d47 */ 0xffff, /* 7d48 */ 0xffff, /* 7d49 */ 0xffff, /* 7d4a */ 0xffff, /* 7d4b */ 0xffff, /* 7d4c */ 0xffff, /* 7d4d */ 0xffff, /* 7d4e */ 0xffff, /* 7d4f */ 0xffff, /* 7d50 */ 0xffff, /* 7d51 */ 0xffff, /* 7d52 */ 0xffff, /* 7d53 */ 0xffff, /* 7d54 */ 0xffff, /* 7d55 */ 0xffff, /* 7d56 */ 0xffff, /* 7d57 */ 0xffff, /* 7d58 */ 0xffff, /* 7d59 */ 0xffff, /* 7d5a */ 0xffff, /* 7d5b */ 0xffff, /* 7d5c */ 0xffff, /* 7d5d */ 0xffff, /* 7d5e */ 0xffff, /* 7d5f */ 0xffff, /* 7d60 */ 0xffff, /* 7d61 */ 0xffff, /* 7d62 */ 0xffff, /* 7d63 */ 0xffff, /* 7d64 */ 0xffff, /* 7d65 */ 0xffff, /* 7d66 */ 0xffff, /* 7d67 */ 0xffff, /* 7d68 */ 0xffff, /* 7d69 */ 0xffff, /* 7d6a */ 0xffff, /* 7d6b */ 0xffff, /* 7d6c */ 0xffff, /* 7d6d */ 0xffff, /* 7d6e */ 0xffff, /* 7d6f */ 0xffff, /* 7d70 */ 0xffff, /* 7d71 */ 0xffff, /* 7d72 */ 0xffff, /* 7d73 */ 0xffff, /* 7d74 */ 0xffff, /* 7d75 */ 0xffff, /* 7d76 */ 0xffff, /* 7d77 */ 0xffff, /* 7d78 */ 0xffff, /* 7d79 */ 0xffff, /* 7d7a */ 0xffff, /* 7d7b */ 0xffff, /* 7d7c */ 0xffff, /* 7d7d */ 0xffff, /* 7d7e */ 0xffff, /* 7d7f */ 0xffff, /* 7d80 */ 0xffff, /* 7d81 */ 0xffff, /* 7d82 */ 0xffff, /* 7d83 */ 0xffff, /* 7d84 */ 0xffff, /* 7d85 */ 0xffff, /* 7d86 */ 0xffff, /* 7d87 */ 0xffff, /* 7d88 */ 0xffff, /* 7d89 */ 0xffff, /* 7d8a */ 0xffff, /* 7d8b */ 0xffff, /* 7d8c */ 0xffff, /* 7d8d */ 0xffff, /* 7d8e */ 0xffff, /* 7d8f */ 0xffff, /* 7d90 */ 0xffff, /* 7d91 */ 0xffff, /* 7d92 */ 0xffff, /* 7d93 */ 0xffff, /* 7d94 */ 0xffff, /* 7d95 */ 0xffff, /* 7d96 */ 0xffff, /* 7d97 */ 0xffff, /* 7d98 */ 0xffff, /* 7d99 */ 0xffff, /* 7d9a */ 0xffff, /* 7d9b */ 0xffff, /* 7d9c */ 0xffff, /* 7d9d */ 0xffff, /* 7d9e */ 0xffff, /* 7d9f */ 0xffff, /* 7da0 */ 0xffff, /* 7da1 */ 0xffff, /* 7da2 */ 0xffff, /* 7da3 */ 0xffff, /* 7da4 */ 0xffff, /* 7da5 */ 0xffff, /* 7da6 */ 0xffff, /* 7da7 */ 0xffff, /* 7da8 */ 0xffff, /* 7da9 */ 0xffff, /* 7daa */ 0xffff, /* 7dab */ 0xffff, /* 7dac */ 0xffff, /* 7dad */ 0xffff, /* 7dae */ 0xffff, /* 7daf */ 0xffff, /* 7db0 */ 0xffff, /* 7db1 */ 0xffff, /* 7db2 */ 0xffff, /* 7db3 */ 0xffff, /* 7db4 */ 0xffff, /* 7db5 */ 0xffff, /* 7db6 */ 0xffff, /* 7db7 */ 0xffff, /* 7db8 */ 0xffff, /* 7db9 */ 0xffff, /* 7dba */ 0xffff, /* 7dbb */ 0xffff, /* 7dbc */ 0xffff, /* 7dbd */ 0xffff, /* 7dbe */ 0xffff, /* 7dbf */ 0xffff, /* 7dc0 */ 0xffff, /* 7dc1 */ 0xffff, /* 7dc2 */ 0xffff, /* 7dc3 */ 0xffff, /* 7dc4 */ 0xffff, /* 7dc5 */ 0xffff, /* 7dc6 */ 0xffff, /* 7dc7 */ 0xffff, /* 7dc8 */ 0xffff, /* 7dc9 */ 0xffff, /* 7dca */ 0xffff, /* 7dcb */ 0xffff, /* 7dcc */ 0xffff, /* 7dcd */ 0xffff, /* 7dce */ 0xffff, /* 7dcf */ 0xffff, /* 7dd0 */ 0xffff, /* 7dd1 */ 0xffff, /* 7dd2 */ 0xffff, /* 7dd3 */ 0xffff, /* 7dd4 */ 0xffff, /* 7dd5 */ 0xffff, /* 7dd6 */ 0xffff, /* 7dd7 */ 0xffff, /* 7dd8 */ 0xffff, /* 7dd9 */ 0xffff, /* 7dda */ 0xffff, /* 7ddb */ 0xffff, /* 7ddc */ 0xffff, /* 7ddd */ 0xffff, /* 7dde */ 0xffff, /* 7ddf */ 0xffff, /* 7de0 */ 0xffff, /* 7de1 */ 0xffff, /* 7de2 */ 0xffff, /* 7de3 */ 0xffff, /* 7de4 */ 0xffff, /* 7de5 */ 0xffff, /* 7de6 */ 0xffff, /* 7de7 */ 0xffff, /* 7de8 */ 0xffff, /* 7de9 */ 0xffff, /* 7dea */ 0xffff, /* 7deb */ 0xffff, /* 7dec */ 0xffff, /* 7ded */ 0xffff, /* 7dee */ 0xffff, /* 7def */ 0xffff, /* 7df0 */ 0xffff, /* 7df1 */ 0xffff, /* 7df2 */ 0xffff, /* 7df3 */ 0xffff, /* 7df4 */ 0xffff, /* 7df5 */ 0xffff, /* 7df6 */ 0xffff, /* 7df7 */ 0xffff, /* 7df8 */ 0xffff, /* 7df9 */ 0xffff, /* 7dfa */ 0xffff, /* 7dfb */ 0xffff, /* 7dfc */ 0xffff, /* 7dfd */ 0xffff, /* 7dfe */ 0xffff, /* 7dff */ 0xffff, /* 7e00 */ 0xffff, /* 7e01 */ 0xffff, /* 7e02 */ 0xffff, /* 7e03 */ 0xffff, /* 7e04 */ 0xffff, /* 7e05 */ 0xffff, /* 7e06 */ 0xffff, /* 7e07 */ 0xffff, /* 7e08 */ 0xffff, /* 7e09 */ 0xffff, /* 7e0a */ 0xffff, /* 7e0b */ 0xffff, /* 7e0c */ 0xffff, /* 7e0d */ 0xffff, /* 7e0e */ 0xffff, /* 7e0f */ 0xffff, /* 7e10 */ 0xffff, /* 7e11 */ 0xffff, /* 7e12 */ 0xffff, /* 7e13 */ 0xffff, /* 7e14 */ 0xffff, /* 7e15 */ 0xffff, /* 7e16 */ 0xffff, /* 7e17 */ 0xffff, /* 7e18 */ 0xffff, /* 7e19 */ 0xffff, /* 7e1a */ 0xffff, /* 7e1b */ 0xffff, /* 7e1c */ 0xffff, /* 7e1d */ 0xffff, /* 7e1e */ 0xffff, /* 7e1f */ 0xffff, /* 7e20 */ 0xffff, /* 7e21 */ 0xffff, /* 7e22 */ 0xffff, /* 7e23 */ 0xffff, /* 7e24 */ 0xffff, /* 7e25 */ 0xffff, /* 7e26 */ 0xffff, /* 7e27 */ 0xffff, /* 7e28 */ 0xffff, /* 7e29 */ 0xffff, /* 7e2a */ 0xffff, /* 7e2b */ 0xffff, /* 7e2c */ 0xffff, /* 7e2d */ 0xffff, /* 7e2e */ 0xffff, /* 7e2f */ 0xffff, /* 7e30 */ 0xffff, /* 7e31 */ 0xffff, /* 7e32 */ 0xffff, /* 7e33 */ 0xffff, /* 7e34 */ 0xffff, /* 7e35 */ 0xffff, /* 7e36 */ 0xffff, /* 7e37 */ 0xffff, /* 7e38 */ 0xffff, /* 7e39 */ 0xffff, /* 7e3a */ 0xffff, /* 7e3b */ 0xffff, /* 7e3c */ 0xffff, /* 7e3d */ 0xffff, /* 7e3e */ 0xffff, /* 7e3f */ 0xffff, /* 7e40 */ 0xffff, /* 7e41 */ 0xffff, /* 7e42 */ 0xffff, /* 7e43 */ 0xffff, /* 7e44 */ 0xffff, /* 7e45 */ 0xffff, /* 7e46 */ 0xffff, /* 7e47 */ 0xffff, /* 7e48 */ 0xffff, /* 7e49 */ 0xffff, /* 7e4a */ 0xffff, /* 7e4b */ 0xffff, /* 7e4c */ 0xffff, /* 7e4d */ 0xffff, /* 7e4e */ 0xffff, /* 7e4f */ 0xffff, /* 7e50 */ 0xffff, /* 7e51 */ 0xffff, /* 7e52 */ 0xffff, /* 7e53 */ 0xffff, /* 7e54 */ 0xffff, /* 7e55 */ 0xffff, /* 7e56 */ 0xffff, /* 7e57 */ 0xffff, /* 7e58 */ 0xffff, /* 7e59 */ 0xffff, /* 7e5a */ 0xffff, /* 7e5b */ 0xffff, /* 7e5c */ 0xffff, /* 7e5d */ 0xffff, /* 7e5e */ 0xffff, /* 7e5f */ 0xffff, /* 7e60 */ 0xffff, /* 7e61 */ 0xffff, /* 7e62 */ 0xffff, /* 7e63 */ 0xffff, /* 7e64 */ 0xffff, /* 7e65 */ 0xffff, /* 7e66 */ 0xffff, /* 7e67 */ 0xffff, /* 7e68 */ 0xffff, /* 7e69 */ 0xffff, /* 7e6a */ 0xffff, /* 7e6b */ 0xffff, /* 7e6c */ 0xffff, /* 7e6d */ 0xffff, /* 7e6e */ 0xffff, /* 7e6f */ 0xffff, /* 7e70 */ 0xffff, /* 7e71 */ 0xffff, /* 7e72 */ 0xffff, /* 7e73 */ 0xffff, /* 7e74 */ 0xffff, /* 7e75 */ 0xffff, /* 7e76 */ 0xffff, /* 7e77 */ 0xffff, /* 7e78 */ 0xffff, /* 7e79 */ 0xffff, /* 7e7a */ 0xffff, /* 7e7b */ 0xffff, /* 7e7c */ 0xffff, /* 7e7d */ 0xffff, /* 7e7e */ 0xffff, /* 7e7f */ 0xffff, /* 7e80 */ 0xffff, /* 7e81 */ 0xffff, /* 7e82 */ 0xffff, /* 7e83 */ 0xffff, /* 7e84 */ 0xffff, /* 7e85 */ 0xffff, /* 7e86 */ 0xffff, /* 7e87 */ 0xffff, /* 7e88 */ 0xffff, /* 7e89 */ 0xffff, /* 7e8a */ 0xffff, /* 7e8b */ 0xffff, /* 7e8c */ 0xffff, /* 7e8d */ 0xffff, /* 7e8e */ 0xffff, /* 7e8f */ 0xffff, /* 7e90 */ 0xffff, /* 7e91 */ 0xffff, /* 7e92 */ 0xffff, /* 7e93 */ 0xffff, /* 7e94 */ 0xffff, /* 7e95 */ 0xffff, /* 7e96 */ 0xffff, /* 7e97 */ 0xffff, /* 7e98 */ 0xffff, /* 7e99 */ 0xffff, /* 7e9a */ 0xffff, /* 7e9b */ 0xffff, /* 7e9c */ 0xffff, /* 7e9d */ 0xffff, /* 7e9e */ 0xffff, /* 7e9f */ 0xffff, /* 7ea0 */ 0xffff, /* 7ea1 */ 0xffff, /* 7ea2 */ 0xffff, /* 7ea3 */ 0xffff, /* 7ea4 */ 0xffff, /* 7ea5 */ 0xffff, /* 7ea6 */ 0xffff, /* 7ea7 */ 0xffff, /* 7ea8 */ 0xffff, /* 7ea9 */ 0xffff, /* 7eaa */ 0xffff, /* 7eab */ 0xffff, /* 7eac */ 0xffff, /* 7ead */ 0xffff, /* 7eae */ 0xffff, /* 7eaf */ 0xffff, /* 7eb0 */ 0xffff, /* 7eb1 */ 0xffff, /* 7eb2 */ 0xffff, /* 7eb3 */ 0xffff, /* 7eb4 */ 0xffff, /* 7eb5 */ 0xffff, /* 7eb6 */ 0xffff, /* 7eb7 */ 0xffff, /* 7eb8 */ 0xffff, /* 7eb9 */ 0xffff, /* 7eba */ 0xffff, /* 7ebb */ 0xffff, /* 7ebc */ 0xffff, /* 7ebd */ 0xffff, /* 7ebe */ 0xffff, /* 7ebf */ 0xffff, /* 7ec0 */ 0xffff, /* 7ec1 */ 0xffff, /* 7ec2 */ 0xffff, /* 7ec3 */ 0xffff, /* 7ec4 */ 0xffff, /* 7ec5 */ 0xffff, /* 7ec6 */ 0xffff, /* 7ec7 */ 0xffff, /* 7ec8 */ 0xffff, /* 7ec9 */ 0xffff, /* 7eca */ 0xffff, /* 7ecb */ 0xffff, /* 7ecc */ 0xffff, /* 7ecd */ 0xffff, /* 7ece */ 0xffff, /* 7ecf */ 0xffff, /* 7ed0 */ 0xffff, /* 7ed1 */ 0xffff, /* 7ed2 */ 0xffff, /* 7ed3 */ 0xffff, /* 7ed4 */ 0xffff, /* 7ed5 */ 0xffff, /* 7ed6 */ 0xffff, /* 7ed7 */ 0xffff, /* 7ed8 */ 0xffff, /* 7ed9 */ 0xffff, /* 7eda */ 0xffff, /* 7edb */ 0xffff, /* 7edc */ 0xffff, /* 7edd */ 0xffff, /* 7ede */ 0xffff, /* 7edf */ 0xffff, /* 7ee0 */ 0xffff, /* 7ee1 */ 0xffff, /* 7ee2 */ 0xffff, /* 7ee3 */ 0xffff, /* 7ee4 */ 0xffff, /* 7ee5 */ 0xffff, /* 7ee6 */ 0xffff, /* 7ee7 */ 0xffff, /* 7ee8 */ 0xffff, /* 7ee9 */ 0xffff, /* 7eea */ 0xffff, /* 7eeb */ 0xffff, /* 7eec */ 0xffff, /* 7eed */ 0xffff, /* 7eee */ 0xffff, /* 7eef */ 0xffff, /* 7ef0 */ 0xffff, /* 7ef1 */ 0xffff, /* 7ef2 */ 0xffff, /* 7ef3 */ 0xffff, /* 7ef4 */ 0xffff, /* 7ef5 */ 0xffff, /* 7ef6 */ 0xffff, /* 7ef7 */ 0xffff, /* 7ef8 */ 0xffff, /* 7ef9 */ 0xffff, /* 7efa */ 0xffff, /* 7efb */ 0xffff, /* 7efc */ 0xffff, /* 7efd */ 0xffff, /* 7efe */ 0xffff, /* 7eff */ 0xffff, /* 7f00 */ 0xffff, /* 7f01 */ 0xffff, /* 7f02 */ 0xffff, /* 7f03 */ 0xffff, /* 7f04 */ 0xffff, /* 7f05 */ 0xffff, /* 7f06 */ 0xffff, /* 7f07 */ 0xffff, /* 7f08 */ 0xffff, /* 7f09 */ 0xffff, /* 7f0a */ 0xffff, /* 7f0b */ 0xffff, /* 7f0c */ 0xffff, /* 7f0d */ 0xffff, /* 7f0e */ 0xffff, /* 7f0f */ 0xffff, /* 7f10 */ 0xffff, /* 7f11 */ 0xffff, /* 7f12 */ 0xffff, /* 7f13 */ 0xffff, /* 7f14 */ 0xffff, /* 7f15 */ 0xffff, /* 7f16 */ 0xffff, /* 7f17 */ 0xffff, /* 7f18 */ 0xffff, /* 7f19 */ 0xffff, /* 7f1a */ 0xffff, /* 7f1b */ 0xffff, /* 7f1c */ 0xffff, /* 7f1d */ 0xffff, /* 7f1e */ 0xffff, /* 7f1f */ 0xffff, /* 7f20 */ 0xffff, /* 7f21 */ 0xffff, /* 7f22 */ 0xffff, /* 7f23 */ 0xffff, /* 7f24 */ 0xffff, /* 7f25 */ 0xffff, /* 7f26 */ 0xffff, /* 7f27 */ 0xffff, /* 7f28 */ 0xffff, /* 7f29 */ 0xffff, /* 7f2a */ 0xffff, /* 7f2b */ 0xffff, /* 7f2c */ 0xffff, /* 7f2d */ 0xffff, /* 7f2e */ 0xffff, /* 7f2f */ 0xffff, /* 7f30 */ 0xffff, /* 7f31 */ 0xffff, /* 7f32 */ 0xffff, /* 7f33 */ 0xffff, /* 7f34 */ 0xffff, /* 7f35 */ 0xffff, /* 7f36 */ 0xffff, /* 7f37 */ 0xffff, /* 7f38 */ 0xffff, /* 7f39 */ 0xffff, /* 7f3a */ 0xffff, /* 7f3b */ 0xffff, /* 7f3c */ 0xffff, /* 7f3d */ 0xffff, /* 7f3e */ 0xffff, /* 7f3f */ 0xffff, /* 7f40 */ 0xffff, /* 7f41 */ 0xffff, /* 7f42 */ 0xffff, /* 7f43 */ 0xffff, /* 7f44 */ 0xffff, /* 7f45 */ 0xffff, /* 7f46 */ 0xffff, /* 7f47 */ 0xffff, /* 7f48 */ 0xffff, /* 7f49 */ 0xffff, /* 7f4a */ 0xffff, /* 7f4b */ 0xffff, /* 7f4c */ 0xffff, /* 7f4d */ 0xffff, /* 7f4e */ 0xffff, /* 7f4f */ 0xffff, /* 7f50 */ 0xffff, /* 7f51 */ 0xffff, /* 7f52 */ 0xffff, /* 7f53 */ 0xffff, /* 7f54 */ 0xffff, /* 7f55 */ 0xffff, /* 7f56 */ 0xffff, /* 7f57 */ 0xffff, /* 7f58 */ 0xffff, /* 7f59 */ 0xffff, /* 7f5a */ 0xffff, /* 7f5b */ 0xffff, /* 7f5c */ 0xffff, /* 7f5d */ 0xffff, /* 7f5e */ 0xffff, /* 7f5f */ 0xffff, /* 7f60 */ 0xffff, /* 7f61 */ 0xffff, /* 7f62 */ 0xffff, /* 7f63 */ 0xffff, /* 7f64 */ 0xffff, /* 7f65 */ 0xffff, /* 7f66 */ 0xffff, /* 7f67 */ 0xffff, /* 7f68 */ 0xffff, /* 7f69 */ 0xffff, /* 7f6a */ 0xffff, /* 7f6b */ 0xffff, /* 7f6c */ 0xffff, /* 7f6d */ 0xffff, /* 7f6e */ 0xffff, /* 7f6f */ 0xffff, /* 7f70 */ 0xffff, /* 7f71 */ 0xffff, /* 7f72 */ 0xffff, /* 7f73 */ 0xffff, /* 7f74 */ 0xffff, /* 7f75 */ 0xffff, /* 7f76 */ 0xffff, /* 7f77 */ 0xffff, /* 7f78 */ 0xffff, /* 7f79 */ 0xffff, /* 7f7a */ 0xffff, /* 7f7b */ 0xffff, /* 7f7c */ 0xffff, /* 7f7d */ 0xffff, /* 7f7e */ 0xffff, /* 7f7f */ 0xffff, /* 7f80 */ 0xffff, /* 7f81 */ 0xffff, /* 7f82 */ 0xffff, /* 7f83 */ 0xffff, /* 7f84 */ 0xffff, /* 7f85 */ 0xffff, /* 7f86 */ 0xffff, /* 7f87 */ 0xffff, /* 7f88 */ 0xffff, /* 7f89 */ 0xffff, /* 7f8a */ 0xffff, /* 7f8b */ 0xffff, /* 7f8c */ 0xffff, /* 7f8d */ 0xffff, /* 7f8e */ 0xffff, /* 7f8f */ 0xffff, /* 7f90 */ 0xffff, /* 7f91 */ 0xffff, /* 7f92 */ 0xffff, /* 7f93 */ 0xffff, /* 7f94 */ 0xffff, /* 7f95 */ 0xffff, /* 7f96 */ 0xffff, /* 7f97 */ 0xffff, /* 7f98 */ 0xffff, /* 7f99 */ 0xffff, /* 7f9a */ 0xffff, /* 7f9b */ 0xffff, /* 7f9c */ 0xffff, /* 7f9d */ 0xffff, /* 7f9e */ 0xffff, /* 7f9f */ 0xffff, /* 7fa0 */ 0xffff, /* 7fa1 */ 0xffff, /* 7fa2 */ 0xffff, /* 7fa3 */ 0xffff, /* 7fa4 */ 0xffff, /* 7fa5 */ 0xffff, /* 7fa6 */ 0xffff, /* 7fa7 */ 0xffff, /* 7fa8 */ 0xffff, /* 7fa9 */ 0xffff, /* 7faa */ 0xffff, /* 7fab */ 0xffff, /* 7fac */ 0xffff, /* 7fad */ 0xffff, /* 7fae */ 0xffff, /* 7faf */ 0xffff, /* 7fb0 */ 0xffff, /* 7fb1 */ 0xffff, /* 7fb2 */ 0xffff, /* 7fb3 */ 0xffff, /* 7fb4 */ 0xffff, /* 7fb5 */ 0xffff, /* 7fb6 */ 0xffff, /* 7fb7 */ 0xffff, /* 7fb8 */ 0xffff, /* 7fb9 */ 0xffff, /* 7fba */ 0xffff, /* 7fbb */ 0xffff, /* 7fbc */ 0xffff, /* 7fbd */ 0xffff, /* 7fbe */ 0xffff, /* 7fbf */ 0xffff, /* 7fc0 */ 0xffff, /* 7fc1 */ 0xffff, /* 7fc2 */ 0xffff, /* 7fc3 */ 0xffff, /* 7fc4 */ 0xffff, /* 7fc5 */ 0xffff, /* 7fc6 */ 0xffff, /* 7fc7 */ 0xffff, /* 7fc8 */ 0xffff, /* 7fc9 */ 0xffff, /* 7fca */ 0xffff, /* 7fcb */ 0xffff, /* 7fcc */ 0xffff, /* 7fcd */ 0xffff, /* 7fce */ 0xffff, /* 7fcf */ 0xffff, /* 7fd0 */ 0xffff, /* 7fd1 */ 0xffff, /* 7fd2 */ 0xffff, /* 7fd3 */ 0xffff, /* 7fd4 */ 0xffff, /* 7fd5 */ 0xffff, /* 7fd6 */ 0xffff, /* 7fd7 */ 0xffff, /* 7fd8 */ 0xffff, /* 7fd9 */ 0xffff, /* 7fda */ 0xffff, /* 7fdb */ 0xffff, /* 7fdc */ 0xffff, /* 7fdd */ 0xffff, /* 7fde */ 0xffff, /* 7fdf */ 0xffff, /* 7fe0 */ 0xffff, /* 7fe1 */ 0xffff, /* 7fe2 */ 0xffff, /* 7fe3 */ 0xffff, /* 7fe4 */ 0xffff, /* 7fe5 */ 0xffff, /* 7fe6 */ 0xffff, /* 7fe7 */ 0xffff, /* 7fe8 */ 0xffff, /* 7fe9 */ 0xffff, /* 7fea */ 0xffff, /* 7feb */ 0xffff, /* 7fec */ 0xffff, /* 7fed */ 0xffff, /* 7fee */ 0xffff, /* 7fef */ 0xffff, /* 7ff0 */ 0xffff, /* 7ff1 */ 0xffff, /* 7ff2 */ 0xffff, /* 7ff3 */ 0xffff, /* 7ff4 */ 0xffff, /* 7ff5 */ 0xffff, /* 7ff6 */ 0xffff, /* 7ff7 */ 0xffff, /* 7ff8 */ 0xffff, /* 7ff9 */ 0xffff, /* 7ffa */ 0xffff, /* 7ffb */ 0xffff, /* 7ffc */ 0xffff, /* 7ffd */ 0xffff, /* 7ffe */ 0xffff, /* 7fff */ 0xffff, /* 8000 */ 0xffff, /* 8001 */ 0xffff, /* 8002 */ 0xffff, /* 8003 */ 0xffff, /* 8004 */ 0xffff, /* 8005 */ 0xffff, /* 8006 */ 0xffff, /* 8007 */ 0xffff, /* 8008 */ 0xffff, /* 8009 */ 0xffff, /* 800a */ 0xffff, /* 800b */ 0xffff, /* 800c */ 0xffff, /* 800d */ 0xffff, /* 800e */ 0xffff, /* 800f */ 0xffff, /* 8010 */ 0xffff, /* 8011 */ 0xffff, /* 8012 */ 0xffff, /* 8013 */ 0xffff, /* 8014 */ 0xffff, /* 8015 */ 0xffff, /* 8016 */ 0xffff, /* 8017 */ 0xffff, /* 8018 */ 0xffff, /* 8019 */ 0xffff, /* 801a */ 0xffff, /* 801b */ 0xffff, /* 801c */ 0xffff, /* 801d */ 0xffff, /* 801e */ 0xffff, /* 801f */ 0xffff, /* 8020 */ 0xffff, /* 8021 */ 0xffff, /* 8022 */ 0xffff, /* 8023 */ 0xffff, /* 8024 */ 0xffff, /* 8025 */ 0xffff, /* 8026 */ 0xffff, /* 8027 */ 0xffff, /* 8028 */ 0xffff, /* 8029 */ 0xffff, /* 802a */ 0xffff, /* 802b */ 0xffff, /* 802c */ 0xffff, /* 802d */ 0xffff, /* 802e */ 0xffff, /* 802f */ 0xffff, /* 8030 */ 0xffff, /* 8031 */ 0xffff, /* 8032 */ 0xffff, /* 8033 */ 0xffff, /* 8034 */ 0xffff, /* 8035 */ 0xffff, /* 8036 */ 0xffff, /* 8037 */ 0xffff, /* 8038 */ 0xffff, /* 8039 */ 0xffff, /* 803a */ 0xffff, /* 803b */ 0xffff, /* 803c */ 0xffff, /* 803d */ 0xffff, /* 803e */ 0xffff, /* 803f */ 0xffff, /* 8040 */ 0xffff, /* 8041 */ 0xffff, /* 8042 */ 0xffff, /* 8043 */ 0xffff, /* 8044 */ 0xffff, /* 8045 */ 0xffff, /* 8046 */ 0xffff, /* 8047 */ 0xffff, /* 8048 */ 0xffff, /* 8049 */ 0xffff, /* 804a */ 0xffff, /* 804b */ 0xffff, /* 804c */ 0xffff, /* 804d */ 0xffff, /* 804e */ 0xffff, /* 804f */ 0xffff, /* 8050 */ 0xffff, /* 8051 */ 0xffff, /* 8052 */ 0xffff, /* 8053 */ 0xffff, /* 8054 */ 0xffff, /* 8055 */ 0xffff, /* 8056 */ 0xffff, /* 8057 */ 0xffff, /* 8058 */ 0xffff, /* 8059 */ 0xffff, /* 805a */ 0xffff, /* 805b */ 0xffff, /* 805c */ 0xffff, /* 805d */ 0xffff, /* 805e */ 0xffff, /* 805f */ 0xffff, /* 8060 */ 0xffff, /* 8061 */ 0xffff, /* 8062 */ 0xffff, /* 8063 */ 0xffff, /* 8064 */ 0xffff, /* 8065 */ 0xffff, /* 8066 */ 0xffff, /* 8067 */ 0xffff, /* 8068 */ 0xffff, /* 8069 */ 0xffff, /* 806a */ 0xffff, /* 806b */ 0xffff, /* 806c */ 0xffff, /* 806d */ 0xffff, /* 806e */ 0xffff, /* 806f */ 0xffff, /* 8070 */ 0xffff, /* 8071 */ 0xffff, /* 8072 */ 0xffff, /* 8073 */ 0xffff, /* 8074 */ 0xffff, /* 8075 */ 0xffff, /* 8076 */ 0xffff, /* 8077 */ 0xffff, /* 8078 */ 0xffff, /* 8079 */ 0xffff, /* 807a */ 0xffff, /* 807b */ 0xffff, /* 807c */ 0xffff, /* 807d */ 0xffff, /* 807e */ 0xffff, /* 807f */ 0xffff, /* 8080 */ 0xffff, /* 8081 */ 0xffff, /* 8082 */ 0xffff, /* 8083 */ 0xffff, /* 8084 */ 0xffff, /* 8085 */ 0xffff, /* 8086 */ 0xffff, /* 8087 */ 0xffff, /* 8088 */ 0xffff, /* 8089 */ 0xffff, /* 808a */ 0xffff, /* 808b */ 0xffff, /* 808c */ 0xffff, /* 808d */ 0xffff, /* 808e */ 0xffff, /* 808f */ 0xffff, /* 8090 */ 0xffff, /* 8091 */ 0xffff, /* 8092 */ 0xffff, /* 8093 */ 0xffff, /* 8094 */ 0xffff, /* 8095 */ 0xffff, /* 8096 */ 0xffff, /* 8097 */ 0xffff, /* 8098 */ 0xffff, /* 8099 */ 0xffff, /* 809a */ 0xffff, /* 809b */ 0xffff, /* 809c */ 0xffff, /* 809d */ 0xffff, /* 809e */ 0xffff, /* 809f */ 0xffff, /* 80a0 */ 0xffff, /* 80a1 */ 0xffff, /* 80a2 */ 0xffff, /* 80a3 */ 0xffff, /* 80a4 */ 0xffff, /* 80a5 */ 0xffff, /* 80a6 */ 0xffff, /* 80a7 */ 0xffff, /* 80a8 */ 0xffff, /* 80a9 */ 0xffff, /* 80aa */ 0xffff, /* 80ab */ 0xffff, /* 80ac */ 0xffff, /* 80ad */ 0xffff, /* 80ae */ 0xffff, /* 80af */ 0xffff, /* 80b0 */ 0xffff, /* 80b1 */ 0xffff, /* 80b2 */ 0xffff, /* 80b3 */ 0xffff, /* 80b4 */ 0xffff, /* 80b5 */ 0xffff, /* 80b6 */ 0xffff, /* 80b7 */ 0xffff, /* 80b8 */ 0xffff, /* 80b9 */ 0xffff, /* 80ba */ 0xffff, /* 80bb */ 0xffff, /* 80bc */ 0xffff, /* 80bd */ 0xffff, /* 80be */ 0xffff, /* 80bf */ 0xffff, /* 80c0 */ 0xffff, /* 80c1 */ 0xffff, /* 80c2 */ 0xffff, /* 80c3 */ 0xffff, /* 80c4 */ 0xffff, /* 80c5 */ 0xffff, /* 80c6 */ 0xffff, /* 80c7 */ 0xffff, /* 80c8 */ 0xffff, /* 80c9 */ 0xffff, /* 80ca */ 0xffff, /* 80cb */ 0xffff, /* 80cc */ 0xffff, /* 80cd */ 0xffff, /* 80ce */ 0xffff, /* 80cf */ 0xffff, /* 80d0 */ 0xffff, /* 80d1 */ 0xffff, /* 80d2 */ 0xffff, /* 80d3 */ 0xffff, /* 80d4 */ 0xffff, /* 80d5 */ 0xffff, /* 80d6 */ 0xffff, /* 80d7 */ 0xffff, /* 80d8 */ 0xffff, /* 80d9 */ 0xffff, /* 80da */ 0xffff, /* 80db */ 0xffff, /* 80dc */ 0xffff, /* 80dd */ 0xffff, /* 80de */ 0xffff, /* 80df */ 0xffff, /* 80e0 */ 0xffff, /* 80e1 */ 0xffff, /* 80e2 */ 0xffff, /* 80e3 */ 0xffff, /* 80e4 */ 0xffff, /* 80e5 */ 0xffff, /* 80e6 */ 0xffff, /* 80e7 */ 0xffff, /* 80e8 */ 0xffff, /* 80e9 */ 0xffff, /* 80ea */ 0xffff, /* 80eb */ 0xffff, /* 80ec */ 0xffff, /* 80ed */ 0xffff, /* 80ee */ 0xffff, /* 80ef */ 0xffff, /* 80f0 */ 0xffff, /* 80f1 */ 0xffff, /* 80f2 */ 0xffff, /* 80f3 */ 0xffff, /* 80f4 */ 0xffff, /* 80f5 */ 0xffff, /* 80f6 */ 0xffff, /* 80f7 */ 0xffff, /* 80f8 */ 0xffff, /* 80f9 */ 0xffff, /* 80fa */ 0xffff, /* 80fb */ 0xffff, /* 80fc */ 0xffff, /* 80fd */ 0xffff, /* 80fe */ 0xffff, /* 80ff */ 0xffff, /* 8100 */ 0xffff, /* 8101 */ 0xffff, /* 8102 */ 0xffff, /* 8103 */ 0xffff, /* 8104 */ 0xffff, /* 8105 */ 0xffff, /* 8106 */ 0xffff, /* 8107 */ 0xffff, /* 8108 */ 0xffff, /* 8109 */ 0xffff, /* 810a */ 0xffff, /* 810b */ 0xffff, /* 810c */ 0xffff, /* 810d */ 0xffff, /* 810e */ 0xffff, /* 810f */ 0xffff, /* 8110 */ 0xffff, /* 8111 */ 0xffff, /* 8112 */ 0xffff, /* 8113 */ 0xffff, /* 8114 */ 0xffff, /* 8115 */ 0xffff, /* 8116 */ 0xffff, /* 8117 */ 0xffff, /* 8118 */ 0xffff, /* 8119 */ 0xffff, /* 811a */ 0xffff, /* 811b */ 0xffff, /* 811c */ 0xffff, /* 811d */ 0xffff, /* 811e */ 0xffff, /* 811f */ 0xffff, /* 8120 */ 0xffff, /* 8121 */ 0xffff, /* 8122 */ 0xffff, /* 8123 */ 0xffff, /* 8124 */ 0xffff, /* 8125 */ 0xffff, /* 8126 */ 0xffff, /* 8127 */ 0xffff, /* 8128 */ 0xffff, /* 8129 */ 0xffff, /* 812a */ 0xffff, /* 812b */ 0xffff, /* 812c */ 0xffff, /* 812d */ 0xffff, /* 812e */ 0xffff, /* 812f */ 0xffff, /* 8130 */ 0xffff, /* 8131 */ 0xffff, /* 8132 */ 0xffff, /* 8133 */ 0xffff, /* 8134 */ 0xffff, /* 8135 */ 0xffff, /* 8136 */ 0xffff, /* 8137 */ 0xffff, /* 8138 */ 0xffff, /* 8139 */ 0xffff, /* 813a */ 0xffff, /* 813b */ 0xffff, /* 813c */ 0xffff, /* 813d */ 0xffff, /* 813e */ 0xffff, /* 813f */ 0xffff, /* 8140 */ 0xffff, /* 8141 */ 0xffff, /* 8142 */ 0xffff, /* 8143 */ 0xffff, /* 8144 */ 0xffff, /* 8145 */ 0xffff, /* 8146 */ 0xffff, /* 8147 */ 0xffff, /* 8148 */ 0xffff, /* 8149 */ 0xffff, /* 814a */ 0xffff, /* 814b */ 0xffff, /* 814c */ 0xffff, /* 814d */ 0xffff, /* 814e */ 0xffff, /* 814f */ 0xffff, /* 8150 */ 0xffff, /* 8151 */ 0xffff, /* 8152 */ 0xffff, /* 8153 */ 0xffff, /* 8154 */ 0xffff, /* 8155 */ 0xffff, /* 8156 */ 0xffff, /* 8157 */ 0xffff, /* 8158 */ 0xffff, /* 8159 */ 0xffff, /* 815a */ 0xffff, /* 815b */ 0xffff, /* 815c */ 0xffff, /* 815d */ 0xffff, /* 815e */ 0xffff, /* 815f */ 0xffff, /* 8160 */ 0xffff, /* 8161 */ 0xffff, /* 8162 */ 0xffff, /* 8163 */ 0xffff, /* 8164 */ 0xffff, /* 8165 */ 0xffff, /* 8166 */ 0xffff, /* 8167 */ 0xffff, /* 8168 */ 0xffff, /* 8169 */ 0xffff, /* 816a */ 0xffff, /* 816b */ 0xffff, /* 816c */ 0xffff, /* 816d */ 0xffff, /* 816e */ 0xffff, /* 816f */ 0xffff, /* 8170 */ 0xffff, /* 8171 */ 0xffff, /* 8172 */ 0xffff, /* 8173 */ 0xffff, /* 8174 */ 0xffff, /* 8175 */ 0xffff, /* 8176 */ 0xffff, /* 8177 */ 0xffff, /* 8178 */ 0xffff, /* 8179 */ 0xffff, /* 817a */ 0xffff, /* 817b */ 0xffff, /* 817c */ 0xffff, /* 817d */ 0xffff, /* 817e */ 0xffff, /* 817f */ 0xffff, /* 8180 */ 0xffff, /* 8181 */ 0xffff, /* 8182 */ 0xffff, /* 8183 */ 0xffff, /* 8184 */ 0xffff, /* 8185 */ 0xffff, /* 8186 */ 0xffff, /* 8187 */ 0xffff, /* 8188 */ 0xffff, /* 8189 */ 0xffff, /* 818a */ 0xffff, /* 818b */ 0xffff, /* 818c */ 0xffff, /* 818d */ 0xffff, /* 818e */ 0xffff, /* 818f */ 0xffff, /* 8190 */ 0xffff, /* 8191 */ 0xffff, /* 8192 */ 0xffff, /* 8193 */ 0xffff, /* 8194 */ 0xffff, /* 8195 */ 0xffff, /* 8196 */ 0xffff, /* 8197 */ 0xffff, /* 8198 */ 0xffff, /* 8199 */ 0xffff, /* 819a */ 0xffff, /* 819b */ 0xffff, /* 819c */ 0xffff, /* 819d */ 0xffff, /* 819e */ 0xffff, /* 819f */ 0xffff, /* 81a0 */ 0xffff, /* 81a1 */ 0xffff, /* 81a2 */ 0xffff, /* 81a3 */ 0xffff, /* 81a4 */ 0xffff, /* 81a5 */ 0xffff, /* 81a6 */ 0xffff, /* 81a7 */ 0xffff, /* 81a8 */ 0xffff, /* 81a9 */ 0xffff, /* 81aa */ 0xffff, /* 81ab */ 0xffff, /* 81ac */ 0xffff, /* 81ad */ 0xffff, /* 81ae */ 0xffff, /* 81af */ 0xffff, /* 81b0 */ 0xffff, /* 81b1 */ 0xffff, /* 81b2 */ 0xffff, /* 81b3 */ 0xffff, /* 81b4 */ 0xffff, /* 81b5 */ 0xffff, /* 81b6 */ 0xffff, /* 81b7 */ 0xffff, /* 81b8 */ 0xffff, /* 81b9 */ 0xffff, /* 81ba */ 0xffff, /* 81bb */ 0xffff, /* 81bc */ 0xffff, /* 81bd */ 0xffff, /* 81be */ 0xffff, /* 81bf */ 0xffff, /* 81c0 */ 0xffff, /* 81c1 */ 0xffff, /* 81c2 */ 0xffff, /* 81c3 */ 0xffff, /* 81c4 */ 0xffff, /* 81c5 */ 0xffff, /* 81c6 */ 0xffff, /* 81c7 */ 0xffff, /* 81c8 */ 0xffff, /* 81c9 */ 0xffff, /* 81ca */ 0xffff, /* 81cb */ 0xffff, /* 81cc */ 0xffff, /* 81cd */ 0xffff, /* 81ce */ 0xffff, /* 81cf */ 0xffff, /* 81d0 */ 0xffff, /* 81d1 */ 0xffff, /* 81d2 */ 0xffff, /* 81d3 */ 0xffff, /* 81d4 */ 0xffff, /* 81d5 */ 0xffff, /* 81d6 */ 0xffff, /* 81d7 */ 0xffff, /* 81d8 */ 0xffff, /* 81d9 */ 0xffff, /* 81da */ 0xffff, /* 81db */ 0xffff, /* 81dc */ 0xffff, /* 81dd */ 0xffff, /* 81de */ 0xffff, /* 81df */ 0xffff, /* 81e0 */ 0xffff, /* 81e1 */ 0xffff, /* 81e2 */ 0xffff, /* 81e3 */ 0xffff, /* 81e4 */ 0xffff, /* 81e5 */ 0xffff, /* 81e6 */ 0xffff, /* 81e7 */ 0xffff, /* 81e8 */ 0xffff, /* 81e9 */ 0xffff, /* 81ea */ 0xffff, /* 81eb */ 0xffff, /* 81ec */ 0xffff, /* 81ed */ 0xffff, /* 81ee */ 0xffff, /* 81ef */ 0xffff, /* 81f0 */ 0xffff, /* 81f1 */ 0xffff, /* 81f2 */ 0xffff, /* 81f3 */ 0xffff, /* 81f4 */ 0xffff, /* 81f5 */ 0xffff, /* 81f6 */ 0xffff, /* 81f7 */ 0xffff, /* 81f8 */ 0xffff, /* 81f9 */ 0xffff, /* 81fa */ 0xffff, /* 81fb */ 0xffff, /* 81fc */ 0xffff, /* 81fd */ 0xffff, /* 81fe */ 0xffff, /* 81ff */ 0xffff, /* 8200 */ 0xffff, /* 8201 */ 0xffff, /* 8202 */ 0xffff, /* 8203 */ 0xffff, /* 8204 */ 0xffff, /* 8205 */ 0xffff, /* 8206 */ 0xffff, /* 8207 */ 0xffff, /* 8208 */ 0xffff, /* 8209 */ 0xffff, /* 820a */ 0xffff, /* 820b */ 0xffff, /* 820c */ 0xffff, /* 820d */ 0xffff, /* 820e */ 0xffff, /* 820f */ 0xffff, /* 8210 */ 0xffff, /* 8211 */ 0xffff, /* 8212 */ 0xffff, /* 8213 */ 0xffff, /* 8214 */ 0xffff, /* 8215 */ 0xffff, /* 8216 */ 0xffff, /* 8217 */ 0xffff, /* 8218 */ 0xffff, /* 8219 */ 0xffff, /* 821a */ 0xffff, /* 821b */ 0xffff, /* 821c */ 0xffff, /* 821d */ 0xffff, /* 821e */ 0xffff, /* 821f */ 0xffff, /* 8220 */ 0xffff, /* 8221 */ 0xffff, /* 8222 */ 0xffff, /* 8223 */ 0xffff, /* 8224 */ 0xffff, /* 8225 */ 0xffff, /* 8226 */ 0xffff, /* 8227 */ 0xffff, /* 8228 */ 0xffff, /* 8229 */ 0xffff, /* 822a */ 0xffff, /* 822b */ 0xffff, /* 822c */ 0xffff, /* 822d */ 0xffff, /* 822e */ 0xffff, /* 822f */ 0xffff, /* 8230 */ 0xffff, /* 8231 */ 0xffff, /* 8232 */ 0xffff, /* 8233 */ 0xffff, /* 8234 */ 0xffff, /* 8235 */ 0xffff, /* 8236 */ 0xffff, /* 8237 */ 0xffff, /* 8238 */ 0xffff, /* 8239 */ 0xffff, /* 823a */ 0xffff, /* 823b */ 0xffff, /* 823c */ 0xffff, /* 823d */ 0xffff, /* 823e */ 0xffff, /* 823f */ 0xffff, /* 8240 */ 0xffff, /* 8241 */ 0xffff, /* 8242 */ 0xffff, /* 8243 */ 0xffff, /* 8244 */ 0xffff, /* 8245 */ 0xffff, /* 8246 */ 0xffff, /* 8247 */ 0xffff, /* 8248 */ 0xffff, /* 8249 */ 0xffff, /* 824a */ 0xffff, /* 824b */ 0xffff, /* 824c */ 0xffff, /* 824d */ 0xffff, /* 824e */ 0xffff, /* 824f */ 0xffff, /* 8250 */ 0xffff, /* 8251 */ 0xffff, /* 8252 */ 0xffff, /* 8253 */ 0xffff, /* 8254 */ 0xffff, /* 8255 */ 0xffff, /* 8256 */ 0xffff, /* 8257 */ 0xffff, /* 8258 */ 0xffff, /* 8259 */ 0xffff, /* 825a */ 0xffff, /* 825b */ 0xffff, /* 825c */ 0xffff, /* 825d */ 0xffff, /* 825e */ 0xffff, /* 825f */ 0xffff, /* 8260 */ 0xffff, /* 8261 */ 0xffff, /* 8262 */ 0xffff, /* 8263 */ 0xffff, /* 8264 */ 0xffff, /* 8265 */ 0xffff, /* 8266 */ 0xffff, /* 8267 */ 0xffff, /* 8268 */ 0xffff, /* 8269 */ 0xffff, /* 826a */ 0xffff, /* 826b */ 0xffff, /* 826c */ 0xffff, /* 826d */ 0xffff, /* 826e */ 0xffff, /* 826f */ 0xffff, /* 8270 */ 0xffff, /* 8271 */ 0xffff, /* 8272 */ 0xffff, /* 8273 */ 0xffff, /* 8274 */ 0xffff, /* 8275 */ 0xffff, /* 8276 */ 0xffff, /* 8277 */ 0xffff, /* 8278 */ 0xffff, /* 8279 */ 0xffff, /* 827a */ 0xffff, /* 827b */ 0xffff, /* 827c */ 0xffff, /* 827d */ 0xffff, /* 827e */ 0xffff, /* 827f */ 0xffff, /* 8280 */ 0xffff, /* 8281 */ 0xffff, /* 8282 */ 0xffff, /* 8283 */ 0xffff, /* 8284 */ 0xffff, /* 8285 */ 0xffff, /* 8286 */ 0xffff, /* 8287 */ 0xffff, /* 8288 */ 0xffff, /* 8289 */ 0xffff, /* 828a */ 0xffff, /* 828b */ 0xffff, /* 828c */ 0xffff, /* 828d */ 0xffff, /* 828e */ 0xffff, /* 828f */ 0xffff, /* 8290 */ 0xffff, /* 8291 */ 0xffff, /* 8292 */ 0xffff, /* 8293 */ 0xffff, /* 8294 */ 0xffff, /* 8295 */ 0xffff, /* 8296 */ 0xffff, /* 8297 */ 0xffff, /* 8298 */ 0xffff, /* 8299 */ 0xffff, /* 829a */ 0xffff, /* 829b */ 0xffff, /* 829c */ 0xffff, /* 829d */ 0xffff, /* 829e */ 0xffff, /* 829f */ 0xffff, /* 82a0 */ 0xffff, /* 82a1 */ 0xffff, /* 82a2 */ 0xffff, /* 82a3 */ 0xffff, /* 82a4 */ 0xffff, /* 82a5 */ 0xffff, /* 82a6 */ 0xffff, /* 82a7 */ 0xffff, /* 82a8 */ 0xffff, /* 82a9 */ 0xffff, /* 82aa */ 0xffff, /* 82ab */ 0xffff, /* 82ac */ 0xffff, /* 82ad */ 0xffff, /* 82ae */ 0xffff, /* 82af */ 0xffff, /* 82b0 */ 0xffff, /* 82b1 */ 0xffff, /* 82b2 */ 0xffff, /* 82b3 */ 0xffff, /* 82b4 */ 0xffff, /* 82b5 */ 0xffff, /* 82b6 */ 0xffff, /* 82b7 */ 0xffff, /* 82b8 */ 0xffff, /* 82b9 */ 0xffff, /* 82ba */ 0xffff, /* 82bb */ 0xffff, /* 82bc */ 0xffff, /* 82bd */ 0xffff, /* 82be */ 0xffff, /* 82bf */ 0xffff, /* 82c0 */ 0xffff, /* 82c1 */ 0xffff, /* 82c2 */ 0xffff, /* 82c3 */ 0xffff, /* 82c4 */ 0xffff, /* 82c5 */ 0xffff, /* 82c6 */ 0xffff, /* 82c7 */ 0xffff, /* 82c8 */ 0xffff, /* 82c9 */ 0xffff, /* 82ca */ 0xffff, /* 82cb */ 0xffff, /* 82cc */ 0xffff, /* 82cd */ 0xffff, /* 82ce */ 0xffff, /* 82cf */ 0xffff, /* 82d0 */ 0xffff, /* 82d1 */ 0xffff, /* 82d2 */ 0xffff, /* 82d3 */ 0xffff, /* 82d4 */ 0xffff, /* 82d5 */ 0xffff, /* 82d6 */ 0xffff, /* 82d7 */ 0xffff, /* 82d8 */ 0xffff, /* 82d9 */ 0xffff, /* 82da */ 0xffff, /* 82db */ 0xffff, /* 82dc */ 0xffff, /* 82dd */ 0xffff, /* 82de */ 0xffff, /* 82df */ 0xffff, /* 82e0 */ 0xffff, /* 82e1 */ 0xffff, /* 82e2 */ 0xffff, /* 82e3 */ 0xffff, /* 82e4 */ 0xffff, /* 82e5 */ 0xffff, /* 82e6 */ 0xffff, /* 82e7 */ 0xffff, /* 82e8 */ 0xffff, /* 82e9 */ 0xffff, /* 82ea */ 0xffff, /* 82eb */ 0xffff, /* 82ec */ 0xffff, /* 82ed */ 0xffff, /* 82ee */ 0xffff, /* 82ef */ 0xffff, /* 82f0 */ 0xffff, /* 82f1 */ 0xffff, /* 82f2 */ 0xffff, /* 82f3 */ 0xffff, /* 82f4 */ 0xffff, /* 82f5 */ 0xffff, /* 82f6 */ 0xffff, /* 82f7 */ 0xffff, /* 82f8 */ 0xffff, /* 82f9 */ 0xffff, /* 82fa */ 0xffff, /* 82fb */ 0xffff, /* 82fc */ 0xffff, /* 82fd */ 0xffff, /* 82fe */ 0xffff, /* 82ff */ 0xffff, /* 8300 */ 0xffff, /* 8301 */ 0xffff, /* 8302 */ 0xffff, /* 8303 */ 0xffff, /* 8304 */ 0xffff, /* 8305 */ 0xffff, /* 8306 */ 0xffff, /* 8307 */ 0xffff, /* 8308 */ 0xffff, /* 8309 */ 0xffff, /* 830a */ 0xffff, /* 830b */ 0xffff, /* 830c */ 0xffff, /* 830d */ 0xffff, /* 830e */ 0xffff, /* 830f */ 0xffff, /* 8310 */ 0xffff, /* 8311 */ 0xffff, /* 8312 */ 0xffff, /* 8313 */ 0xffff, /* 8314 */ 0xffff, /* 8315 */ 0xffff, /* 8316 */ 0xffff, /* 8317 */ 0xffff, /* 8318 */ 0xffff, /* 8319 */ 0xffff, /* 831a */ 0xffff, /* 831b */ 0xffff, /* 831c */ 0xffff, /* 831d */ 0xffff, /* 831e */ 0xffff, /* 831f */ 0xffff, /* 8320 */ 0xffff, /* 8321 */ 0xffff, /* 8322 */ 0xffff, /* 8323 */ 0xffff, /* 8324 */ 0xffff, /* 8325 */ 0xffff, /* 8326 */ 0xffff, /* 8327 */ 0xffff, /* 8328 */ 0xffff, /* 8329 */ 0xffff, /* 832a */ 0xffff, /* 832b */ 0xffff, /* 832c */ 0xffff, /* 832d */ 0xffff, /* 832e */ 0xffff, /* 832f */ 0xffff, /* 8330 */ 0xffff, /* 8331 */ 0xffff, /* 8332 */ 0xffff, /* 8333 */ 0xffff, /* 8334 */ 0xffff, /* 8335 */ 0xffff, /* 8336 */ 0xffff, /* 8337 */ 0xffff, /* 8338 */ 0xffff, /* 8339 */ 0xffff, /* 833a */ 0xffff, /* 833b */ 0xffff, /* 833c */ 0xffff, /* 833d */ 0xffff, /* 833e */ 0xffff, /* 833f */ 0xffff, /* 8340 */ 0xffff, /* 8341 */ 0xffff, /* 8342 */ 0xffff, /* 8343 */ 0xffff, /* 8344 */ 0xffff, /* 8345 */ 0xffff, /* 8346 */ 0xffff, /* 8347 */ 0xffff, /* 8348 */ 0xffff, /* 8349 */ 0xffff, /* 834a */ 0xffff, /* 834b */ 0xffff, /* 834c */ 0xffff, /* 834d */ 0xffff, /* 834e */ 0xffff, /* 834f */ 0xffff, /* 8350 */ 0xffff, /* 8351 */ 0xffff, /* 8352 */ 0xffff, /* 8353 */ 0xffff, /* 8354 */ 0xffff, /* 8355 */ 0xffff, /* 8356 */ 0xffff, /* 8357 */ 0xffff, /* 8358 */ 0xffff, /* 8359 */ 0xffff, /* 835a */ 0xffff, /* 835b */ 0xffff, /* 835c */ 0xffff, /* 835d */ 0xffff, /* 835e */ 0xffff, /* 835f */ 0xffff, /* 8360 */ 0xffff, /* 8361 */ 0xffff, /* 8362 */ 0xffff, /* 8363 */ 0xffff, /* 8364 */ 0xffff, /* 8365 */ 0xffff, /* 8366 */ 0xffff, /* 8367 */ 0xffff, /* 8368 */ 0xffff, /* 8369 */ 0xffff, /* 836a */ 0xffff, /* 836b */ 0xffff, /* 836c */ 0xffff, /* 836d */ 0xffff, /* 836e */ 0xffff, /* 836f */ 0xffff, /* 8370 */ 0xffff, /* 8371 */ 0xffff, /* 8372 */ 0xffff, /* 8373 */ 0xffff, /* 8374 */ 0xffff, /* 8375 */ 0xffff, /* 8376 */ 0xffff, /* 8377 */ 0xffff, /* 8378 */ 0xffff, /* 8379 */ 0xffff, /* 837a */ 0xffff, /* 837b */ 0xffff, /* 837c */ 0xffff, /* 837d */ 0xffff, /* 837e */ 0xffff, /* 837f */ 0xffff, /* 8380 */ 0xffff, /* 8381 */ 0xffff, /* 8382 */ 0xffff, /* 8383 */ 0xffff, /* 8384 */ 0xffff, /* 8385 */ 0xffff, /* 8386 */ 0xffff, /* 8387 */ 0xffff, /* 8388 */ 0xffff, /* 8389 */ 0xffff, /* 838a */ 0xffff, /* 838b */ 0xffff, /* 838c */ 0xffff, /* 838d */ 0xffff, /* 838e */ 0xffff, /* 838f */ 0xffff, /* 8390 */ 0xffff, /* 8391 */ 0xffff, /* 8392 */ 0xffff, /* 8393 */ 0xffff, /* 8394 */ 0xffff, /* 8395 */ 0xffff, /* 8396 */ 0xffff, /* 8397 */ 0xffff, /* 8398 */ 0xffff, /* 8399 */ 0xffff, /* 839a */ 0xffff, /* 839b */ 0xffff, /* 839c */ 0xffff, /* 839d */ 0xffff, /* 839e */ 0xffff, /* 839f */ 0xffff, /* 83a0 */ 0xffff, /* 83a1 */ 0xffff, /* 83a2 */ 0xffff, /* 83a3 */ 0xffff, /* 83a4 */ 0xffff, /* 83a5 */ 0xffff, /* 83a6 */ 0xffff, /* 83a7 */ 0xffff, /* 83a8 */ 0xffff, /* 83a9 */ 0xffff, /* 83aa */ 0xffff, /* 83ab */ 0xffff, /* 83ac */ 0xffff, /* 83ad */ 0xffff, /* 83ae */ 0xffff, /* 83af */ 0xffff, /* 83b0 */ 0xffff, /* 83b1 */ 0xffff, /* 83b2 */ 0xffff, /* 83b3 */ 0xffff, /* 83b4 */ 0xffff, /* 83b5 */ 0xffff, /* 83b6 */ 0xffff, /* 83b7 */ 0xffff, /* 83b8 */ 0xffff, /* 83b9 */ 0xffff, /* 83ba */ 0xffff, /* 83bb */ 0xffff, /* 83bc */ 0xffff, /* 83bd */ 0xffff, /* 83be */ 0xffff, /* 83bf */ 0xffff, /* 83c0 */ 0xffff, /* 83c1 */ 0xffff, /* 83c2 */ 0xffff, /* 83c3 */ 0xffff, /* 83c4 */ 0xffff, /* 83c5 */ 0xffff, /* 83c6 */ 0xffff, /* 83c7 */ 0xffff, /* 83c8 */ 0xffff, /* 83c9 */ 0xffff, /* 83ca */ 0xffff, /* 83cb */ 0xffff, /* 83cc */ 0xffff, /* 83cd */ 0xffff, /* 83ce */ 0xffff, /* 83cf */ 0xffff, /* 83d0 */ 0xffff, /* 83d1 */ 0xffff, /* 83d2 */ 0xffff, /* 83d3 */ 0xffff, /* 83d4 */ 0xffff, /* 83d5 */ 0xffff, /* 83d6 */ 0xffff, /* 83d7 */ 0xffff, /* 83d8 */ 0xffff, /* 83d9 */ 0xffff, /* 83da */ 0xffff, /* 83db */ 0xffff, /* 83dc */ 0xffff, /* 83dd */ 0xffff, /* 83de */ 0xffff, /* 83df */ 0xffff, /* 83e0 */ 0xffff, /* 83e1 */ 0xffff, /* 83e2 */ 0xffff, /* 83e3 */ 0xffff, /* 83e4 */ 0xffff, /* 83e5 */ 0xffff, /* 83e6 */ 0xffff, /* 83e7 */ 0xffff, /* 83e8 */ 0xffff, /* 83e9 */ 0xffff, /* 83ea */ 0xffff, /* 83eb */ 0xffff, /* 83ec */ 0xffff, /* 83ed */ 0xffff, /* 83ee */ 0xffff, /* 83ef */ 0xffff, /* 83f0 */ 0xffff, /* 83f1 */ 0xffff, /* 83f2 */ 0xffff, /* 83f3 */ 0xffff, /* 83f4 */ 0xffff, /* 83f5 */ 0xffff, /* 83f6 */ 0xffff, /* 83f7 */ 0xffff, /* 83f8 */ 0xffff, /* 83f9 */ 0xffff, /* 83fa */ 0xffff, /* 83fb */ 0xffff, /* 83fc */ 0xffff, /* 83fd */ 0xffff, /* 83fe */ 0xffff, /* 83ff */ 0xffff, /* 8400 */ 0xffff, /* 8401 */ 0xffff, /* 8402 */ 0xffff, /* 8403 */ 0xffff, /* 8404 */ 0xffff, /* 8405 */ 0xffff, /* 8406 */ 0xffff, /* 8407 */ 0xffff, /* 8408 */ 0xffff, /* 8409 */ 0xffff, /* 840a */ 0xffff, /* 840b */ 0xffff, /* 840c */ 0xffff, /* 840d */ 0xffff, /* 840e */ 0xffff, /* 840f */ 0xffff, /* 8410 */ 0xffff, /* 8411 */ 0xffff, /* 8412 */ 0xffff, /* 8413 */ 0xffff, /* 8414 */ 0xffff, /* 8415 */ 0xffff, /* 8416 */ 0xffff, /* 8417 */ 0xffff, /* 8418 */ 0xffff, /* 8419 */ 0xffff, /* 841a */ 0xffff, /* 841b */ 0xffff, /* 841c */ 0xffff, /* 841d */ 0xffff, /* 841e */ 0xffff, /* 841f */ 0xffff, /* 8420 */ 0xffff, /* 8421 */ 0xffff, /* 8422 */ 0xffff, /* 8423 */ 0xffff, /* 8424 */ 0xffff, /* 8425 */ 0xffff, /* 8426 */ 0xffff, /* 8427 */ 0xffff, /* 8428 */ 0xffff, /* 8429 */ 0xffff, /* 842a */ 0xffff, /* 842b */ 0xffff, /* 842c */ 0xffff, /* 842d */ 0xffff, /* 842e */ 0xffff, /* 842f */ 0xffff, /* 8430 */ 0xffff, /* 8431 */ 0xffff, /* 8432 */ 0xffff, /* 8433 */ 0xffff, /* 8434 */ 0xffff, /* 8435 */ 0xffff, /* 8436 */ 0xffff, /* 8437 */ 0xffff, /* 8438 */ 0xffff, /* 8439 */ 0xffff, /* 843a */ 0xffff, /* 843b */ 0xffff, /* 843c */ 0xffff, /* 843d */ 0xffff, /* 843e */ 0xffff, /* 843f */ 0xffff, /* 8440 */ 0xffff, /* 8441 */ 0xffff, /* 8442 */ 0xffff, /* 8443 */ 0xffff, /* 8444 */ 0xffff, /* 8445 */ 0xffff, /* 8446 */ 0xffff, /* 8447 */ 0xffff, /* 8448 */ 0xffff, /* 8449 */ 0xffff, /* 844a */ 0xffff, /* 844b */ 0xffff, /* 844c */ 0xffff, /* 844d */ 0xffff, /* 844e */ 0xffff, /* 844f */ 0xffff, /* 8450 */ 0xffff, /* 8451 */ 0xffff, /* 8452 */ 0xffff, /* 8453 */ 0xffff, /* 8454 */ 0xffff, /* 8455 */ 0xffff, /* 8456 */ 0xffff, /* 8457 */ 0xffff, /* 8458 */ 0xffff, /* 8459 */ 0xffff, /* 845a */ 0xffff, /* 845b */ 0xffff, /* 845c */ 0xffff, /* 845d */ 0xffff, /* 845e */ 0xffff, /* 845f */ 0xffff, /* 8460 */ 0xffff, /* 8461 */ 0xffff, /* 8462 */ 0xffff, /* 8463 */ 0xffff, /* 8464 */ 0xffff, /* 8465 */ 0xffff, /* 8466 */ 0xffff, /* 8467 */ 0xffff, /* 8468 */ 0xffff, /* 8469 */ 0xffff, /* 846a */ 0xffff, /* 846b */ 0xffff, /* 846c */ 0xffff, /* 846d */ 0xffff, /* 846e */ 0xffff, /* 846f */ 0xffff, /* 8470 */ 0xffff, /* 8471 */ 0xffff, /* 8472 */ 0xffff, /* 8473 */ 0xffff, /* 8474 */ 0xffff, /* 8475 */ 0xffff, /* 8476 */ 0xffff, /* 8477 */ 0xffff, /* 8478 */ 0xffff, /* 8479 */ 0xffff, /* 847a */ 0xffff, /* 847b */ 0xffff, /* 847c */ 0xffff, /* 847d */ 0xffff, /* 847e */ 0xffff, /* 847f */ 0xffff, /* 8480 */ 0xffff, /* 8481 */ 0xffff, /* 8482 */ 0xffff, /* 8483 */ 0xffff, /* 8484 */ 0xffff, /* 8485 */ 0xffff, /* 8486 */ 0xffff, /* 8487 */ 0xffff, /* 8488 */ 0xffff, /* 8489 */ 0xffff, /* 848a */ 0xffff, /* 848b */ 0xffff, /* 848c */ 0xffff, /* 848d */ 0xffff, /* 848e */ 0xffff, /* 848f */ 0xffff, /* 8490 */ 0xffff, /* 8491 */ 0xffff, /* 8492 */ 0xffff, /* 8493 */ 0xffff, /* 8494 */ 0xffff, /* 8495 */ 0xffff, /* 8496 */ 0xffff, /* 8497 */ 0xffff, /* 8498 */ 0xffff, /* 8499 */ 0xffff, /* 849a */ 0xffff, /* 849b */ 0xffff, /* 849c */ 0xffff, /* 849d */ 0xffff, /* 849e */ 0xffff, /* 849f */ 0xffff, /* 84a0 */ 0xffff, /* 84a1 */ 0xffff, /* 84a2 */ 0xffff, /* 84a3 */ 0xffff, /* 84a4 */ 0xffff, /* 84a5 */ 0xffff, /* 84a6 */ 0xffff, /* 84a7 */ 0xffff, /* 84a8 */ 0xffff, /* 84a9 */ 0xffff, /* 84aa */ 0xffff, /* 84ab */ 0xffff, /* 84ac */ 0xffff, /* 84ad */ 0xffff, /* 84ae */ 0xffff, /* 84af */ 0xffff, /* 84b0 */ 0xffff, /* 84b1 */ 0xffff, /* 84b2 */ 0xffff, /* 84b3 */ 0xffff, /* 84b4 */ 0xffff, /* 84b5 */ 0xffff, /* 84b6 */ 0xffff, /* 84b7 */ 0xffff, /* 84b8 */ 0xffff, /* 84b9 */ 0xffff, /* 84ba */ 0xffff, /* 84bb */ 0xffff, /* 84bc */ 0xffff, /* 84bd */ 0xffff, /* 84be */ 0xffff, /* 84bf */ 0xffff, /* 84c0 */ 0xffff, /* 84c1 */ 0xffff, /* 84c2 */ 0xffff, /* 84c3 */ 0xffff, /* 84c4 */ 0xffff, /* 84c5 */ 0xffff, /* 84c6 */ 0xffff, /* 84c7 */ 0xffff, /* 84c8 */ 0xffff, /* 84c9 */ 0xffff, /* 84ca */ 0xffff, /* 84cb */ 0xffff, /* 84cc */ 0xffff, /* 84cd */ 0xffff, /* 84ce */ 0xffff, /* 84cf */ 0xffff, /* 84d0 */ 0xffff, /* 84d1 */ 0xffff, /* 84d2 */ 0xffff, /* 84d3 */ 0xffff, /* 84d4 */ 0xffff, /* 84d5 */ 0xffff, /* 84d6 */ 0xffff, /* 84d7 */ 0xffff, /* 84d8 */ 0xffff, /* 84d9 */ 0xffff, /* 84da */ 0xffff, /* 84db */ 0xffff, /* 84dc */ 0xffff, /* 84dd */ 0xffff, /* 84de */ 0xffff, /* 84df */ 0xffff, /* 84e0 */ 0xffff, /* 84e1 */ 0xffff, /* 84e2 */ 0xffff, /* 84e3 */ 0xffff, /* 84e4 */ 0xffff, /* 84e5 */ 0xffff, /* 84e6 */ 0xffff, /* 84e7 */ 0xffff, /* 84e8 */ 0xffff, /* 84e9 */ 0xffff, /* 84ea */ 0xffff, /* 84eb */ 0xffff, /* 84ec */ 0xffff, /* 84ed */ 0xffff, /* 84ee */ 0xffff, /* 84ef */ 0xffff, /* 84f0 */ 0xffff, /* 84f1 */ 0xffff, /* 84f2 */ 0xffff, /* 84f3 */ 0xffff, /* 84f4 */ 0xffff, /* 84f5 */ 0xffff, /* 84f6 */ 0xffff, /* 84f7 */ 0xffff, /* 84f8 */ 0xffff, /* 84f9 */ 0xffff, /* 84fa */ 0xffff, /* 84fb */ 0xffff, /* 84fc */ 0xffff, /* 84fd */ 0xffff, /* 84fe */ 0xffff, /* 84ff */ 0xffff, /* 8500 */ 0xffff, /* 8501 */ 0xffff, /* 8502 */ 0xffff, /* 8503 */ 0xffff, /* 8504 */ 0xffff, /* 8505 */ 0xffff, /* 8506 */ 0xffff, /* 8507 */ 0xffff, /* 8508 */ 0xffff, /* 8509 */ 0xffff, /* 850a */ 0xffff, /* 850b */ 0xffff, /* 850c */ 0xffff, /* 850d */ 0xffff, /* 850e */ 0xffff, /* 850f */ 0xffff, /* 8510 */ 0xffff, /* 8511 */ 0xffff, /* 8512 */ 0xffff, /* 8513 */ 0xffff, /* 8514 */ 0xffff, /* 8515 */ 0xffff, /* 8516 */ 0xffff, /* 8517 */ 0xffff, /* 8518 */ 0xffff, /* 8519 */ 0xffff, /* 851a */ 0xffff, /* 851b */ 0xffff, /* 851c */ 0xffff, /* 851d */ 0xffff, /* 851e */ 0xffff, /* 851f */ 0xffff, /* 8520 */ 0xffff, /* 8521 */ 0xffff, /* 8522 */ 0xffff, /* 8523 */ 0xffff, /* 8524 */ 0xffff, /* 8525 */ 0xffff, /* 8526 */ 0xffff, /* 8527 */ 0xffff, /* 8528 */ 0xffff, /* 8529 */ 0xffff, /* 852a */ 0xffff, /* 852b */ 0xffff, /* 852c */ 0xffff, /* 852d */ 0xffff, /* 852e */ 0xffff, /* 852f */ 0xffff, /* 8530 */ 0xffff, /* 8531 */ 0xffff, /* 8532 */ 0xffff, /* 8533 */ 0xffff, /* 8534 */ 0xffff, /* 8535 */ 0xffff, /* 8536 */ 0xffff, /* 8537 */ 0xffff, /* 8538 */ 0xffff, /* 8539 */ 0xffff, /* 853a */ 0xffff, /* 853b */ 0xffff, /* 853c */ 0xffff, /* 853d */ 0xffff, /* 853e */ 0xffff, /* 853f */ 0xffff, /* 8540 */ 0xffff, /* 8541 */ 0xffff, /* 8542 */ 0xffff, /* 8543 */ 0xffff, /* 8544 */ 0xffff, /* 8545 */ 0xffff, /* 8546 */ 0xffff, /* 8547 */ 0xffff, /* 8548 */ 0xffff, /* 8549 */ 0xffff, /* 854a */ 0xffff, /* 854b */ 0xffff, /* 854c */ 0xffff, /* 854d */ 0xffff, /* 854e */ 0xffff, /* 854f */ 0xffff, /* 8550 */ 0xffff, /* 8551 */ 0xffff, /* 8552 */ 0xffff, /* 8553 */ 0xffff, /* 8554 */ 0xffff, /* 8555 */ 0xffff, /* 8556 */ 0xffff, /* 8557 */ 0xffff, /* 8558 */ 0xffff, /* 8559 */ 0xffff, /* 855a */ 0xffff, /* 855b */ 0xffff, /* 855c */ 0xffff, /* 855d */ 0xffff, /* 855e */ 0xffff, /* 855f */ 0xffff, /* 8560 */ 0xffff, /* 8561 */ 0xffff, /* 8562 */ 0xffff, /* 8563 */ 0xffff, /* 8564 */ 0xffff, /* 8565 */ 0xffff, /* 8566 */ 0xffff, /* 8567 */ 0xffff, /* 8568 */ 0xffff, /* 8569 */ 0xffff, /* 856a */ 0xffff, /* 856b */ 0xffff, /* 856c */ 0xffff, /* 856d */ 0xffff, /* 856e */ 0xffff, /* 856f */ 0xffff, /* 8570 */ 0xffff, /* 8571 */ 0xffff, /* 8572 */ 0xffff, /* 8573 */ 0xffff, /* 8574 */ 0xffff, /* 8575 */ 0xffff, /* 8576 */ 0xffff, /* 8577 */ 0xffff, /* 8578 */ 0xffff, /* 8579 */ 0xffff, /* 857a */ 0xffff, /* 857b */ 0xffff, /* 857c */ 0xffff, /* 857d */ 0xffff, /* 857e */ 0xffff, /* 857f */ 0xffff, /* 8580 */ 0xffff, /* 8581 */ 0xffff, /* 8582 */ 0xffff, /* 8583 */ 0xffff, /* 8584 */ 0xffff, /* 8585 */ 0xffff, /* 8586 */ 0xffff, /* 8587 */ 0xffff, /* 8588 */ 0xffff, /* 8589 */ 0xffff, /* 858a */ 0xffff, /* 858b */ 0xffff, /* 858c */ 0xffff, /* 858d */ 0xffff, /* 858e */ 0xffff, /* 858f */ 0xffff, /* 8590 */ 0xffff, /* 8591 */ 0xffff, /* 8592 */ 0xffff, /* 8593 */ 0xffff, /* 8594 */ 0xffff, /* 8595 */ 0xffff, /* 8596 */ 0xffff, /* 8597 */ 0xffff, /* 8598 */ 0xffff, /* 8599 */ 0xffff, /* 859a */ 0xffff, /* 859b */ 0xffff, /* 859c */ 0xffff, /* 859d */ 0xffff, /* 859e */ 0xffff, /* 859f */ 0xffff, /* 85a0 */ 0xffff, /* 85a1 */ 0xffff, /* 85a2 */ 0xffff, /* 85a3 */ 0xffff, /* 85a4 */ 0xffff, /* 85a5 */ 0xffff, /* 85a6 */ 0xffff, /* 85a7 */ 0xffff, /* 85a8 */ 0xffff, /* 85a9 */ 0xffff, /* 85aa */ 0xffff, /* 85ab */ 0xffff, /* 85ac */ 0xffff, /* 85ad */ 0xffff, /* 85ae */ 0xffff, /* 85af */ 0xffff, /* 85b0 */ 0xffff, /* 85b1 */ 0xffff, /* 85b2 */ 0xffff, /* 85b3 */ 0xffff, /* 85b4 */ 0xffff, /* 85b5 */ 0xffff, /* 85b6 */ 0xffff, /* 85b7 */ 0xffff, /* 85b8 */ 0xffff, /* 85b9 */ 0xffff, /* 85ba */ 0xffff, /* 85bb */ 0xffff, /* 85bc */ 0xffff, /* 85bd */ 0xffff, /* 85be */ 0xffff, /* 85bf */ 0xffff, /* 85c0 */ 0xffff, /* 85c1 */ 0xffff, /* 85c2 */ 0xffff, /* 85c3 */ 0xffff, /* 85c4 */ 0xffff, /* 85c5 */ 0xffff, /* 85c6 */ 0xffff, /* 85c7 */ 0xffff, /* 85c8 */ 0xffff, /* 85c9 */ 0xffff, /* 85ca */ 0xffff, /* 85cb */ 0xffff, /* 85cc */ 0xffff, /* 85cd */ 0xffff, /* 85ce */ 0xffff, /* 85cf */ 0xffff, /* 85d0 */ 0xffff, /* 85d1 */ 0xffff, /* 85d2 */ 0xffff, /* 85d3 */ 0xffff, /* 85d4 */ 0xffff, /* 85d5 */ 0xffff, /* 85d6 */ 0xffff, /* 85d7 */ 0xffff, /* 85d8 */ 0xffff, /* 85d9 */ 0xffff, /* 85da */ 0xffff, /* 85db */ 0xffff, /* 85dc */ 0xffff, /* 85dd */ 0xffff, /* 85de */ 0xffff, /* 85df */ 0xffff, /* 85e0 */ 0xffff, /* 85e1 */ 0xffff, /* 85e2 */ 0xffff, /* 85e3 */ 0xffff, /* 85e4 */ 0xffff, /* 85e5 */ 0xffff, /* 85e6 */ 0xffff, /* 85e7 */ 0xffff, /* 85e8 */ 0xffff, /* 85e9 */ 0xffff, /* 85ea */ 0xffff, /* 85eb */ 0xffff, /* 85ec */ 0xffff, /* 85ed */ 0xffff, /* 85ee */ 0xffff, /* 85ef */ 0xffff, /* 85f0 */ 0xffff, /* 85f1 */ 0xffff, /* 85f2 */ 0xffff, /* 85f3 */ 0xffff, /* 85f4 */ 0xffff, /* 85f5 */ 0xffff, /* 85f6 */ 0xffff, /* 85f7 */ 0xffff, /* 85f8 */ 0xffff, /* 85f9 */ 0xffff, /* 85fa */ 0xffff, /* 85fb */ 0xffff, /* 85fc */ 0xffff, /* 85fd */ 0xffff, /* 85fe */ 0xffff, /* 85ff */ 0xffff, /* 8600 */ 0xffff, /* 8601 */ 0xffff, /* 8602 */ 0xffff, /* 8603 */ 0xffff, /* 8604 */ 0xffff, /* 8605 */ 0xffff, /* 8606 */ 0xffff, /* 8607 */ 0xffff, /* 8608 */ 0xffff, /* 8609 */ 0xffff, /* 860a */ 0xffff, /* 860b */ 0xffff, /* 860c */ 0xffff, /* 860d */ 0xffff, /* 860e */ 0xffff, /* 860f */ 0xffff, /* 8610 */ 0xffff, /* 8611 */ 0xffff, /* 8612 */ 0xffff, /* 8613 */ 0xffff, /* 8614 */ 0xffff, /* 8615 */ 0xffff, /* 8616 */ 0xffff, /* 8617 */ 0xffff, /* 8618 */ 0xffff, /* 8619 */ 0xffff, /* 861a */ 0xffff, /* 861b */ 0xffff, /* 861c */ 0xffff, /* 861d */ 0xffff, /* 861e */ 0xffff, /* 861f */ 0xffff, /* 8620 */ 0xffff, /* 8621 */ 0xffff, /* 8622 */ 0xffff, /* 8623 */ 0xffff, /* 8624 */ 0xffff, /* 8625 */ 0xffff, /* 8626 */ 0xffff, /* 8627 */ 0xffff, /* 8628 */ 0xffff, /* 8629 */ 0xffff, /* 862a */ 0xffff, /* 862b */ 0xffff, /* 862c */ 0xffff, /* 862d */ 0xffff, /* 862e */ 0xffff, /* 862f */ 0xffff, /* 8630 */ 0xffff, /* 8631 */ 0xffff, /* 8632 */ 0xffff, /* 8633 */ 0xffff, /* 8634 */ 0xffff, /* 8635 */ 0xffff, /* 8636 */ 0xffff, /* 8637 */ 0xffff, /* 8638 */ 0xffff, /* 8639 */ 0xffff, /* 863a */ 0xffff, /* 863b */ 0xffff, /* 863c */ 0xffff, /* 863d */ 0xffff, /* 863e */ 0xffff, /* 863f */ 0xffff, /* 8640 */ 0xffff, /* 8641 */ 0xffff, /* 8642 */ 0xffff, /* 8643 */ 0xffff, /* 8644 */ 0xffff, /* 8645 */ 0xffff, /* 8646 */ 0xffff, /* 8647 */ 0xffff, /* 8648 */ 0xffff, /* 8649 */ 0xffff, /* 864a */ 0xffff, /* 864b */ 0xffff, /* 864c */ 0xffff, /* 864d */ 0xffff, /* 864e */ 0xffff, /* 864f */ 0xffff, /* 8650 */ 0xffff, /* 8651 */ 0xffff, /* 8652 */ 0xffff, /* 8653 */ 0xffff, /* 8654 */ 0xffff, /* 8655 */ 0xffff, /* 8656 */ 0xffff, /* 8657 */ 0xffff, /* 8658 */ 0xffff, /* 8659 */ 0xffff, /* 865a */ 0xffff, /* 865b */ 0xffff, /* 865c */ 0xffff, /* 865d */ 0xffff, /* 865e */ 0xffff, /* 865f */ 0xffff, /* 8660 */ 0xffff, /* 8661 */ 0xffff, /* 8662 */ 0xffff, /* 8663 */ 0xffff, /* 8664 */ 0xffff, /* 8665 */ 0xffff, /* 8666 */ 0xffff, /* 8667 */ 0xffff, /* 8668 */ 0xffff, /* 8669 */ 0xffff, /* 866a */ 0xffff, /* 866b */ 0xffff, /* 866c */ 0xffff, /* 866d */ 0xffff, /* 866e */ 0xffff, /* 866f */ 0xffff, /* 8670 */ 0xffff, /* 8671 */ 0xffff, /* 8672 */ 0xffff, /* 8673 */ 0xffff, /* 8674 */ 0xffff, /* 8675 */ 0xffff, /* 8676 */ 0xffff, /* 8677 */ 0xffff, /* 8678 */ 0xffff, /* 8679 */ 0xffff, /* 867a */ 0xffff, /* 867b */ 0xffff, /* 867c */ 0xffff, /* 867d */ 0xffff, /* 867e */ 0xffff, /* 867f */ 0xffff, /* 8680 */ 0xffff, /* 8681 */ 0xffff, /* 8682 */ 0xffff, /* 8683 */ 0xffff, /* 8684 */ 0xffff, /* 8685 */ 0xffff, /* 8686 */ 0xffff, /* 8687 */ 0xffff, /* 8688 */ 0xffff, /* 8689 */ 0xffff, /* 868a */ 0xffff, /* 868b */ 0xffff, /* 868c */ 0xffff, /* 868d */ 0xffff, /* 868e */ 0xffff, /* 868f */ 0xffff, /* 8690 */ 0xffff, /* 8691 */ 0xffff, /* 8692 */ 0xffff, /* 8693 */ 0xffff, /* 8694 */ 0xffff, /* 8695 */ 0xffff, /* 8696 */ 0xffff, /* 8697 */ 0xffff, /* 8698 */ 0xffff, /* 8699 */ 0xffff, /* 869a */ 0xffff, /* 869b */ 0xffff, /* 869c */ 0xffff, /* 869d */ 0xffff, /* 869e */ 0xffff, /* 869f */ 0xffff, /* 86a0 */ 0xffff, /* 86a1 */ 0xffff, /* 86a2 */ 0xffff, /* 86a3 */ 0xffff, /* 86a4 */ 0xffff, /* 86a5 */ 0xffff, /* 86a6 */ 0xffff, /* 86a7 */ 0xffff, /* 86a8 */ 0xffff, /* 86a9 */ 0xffff, /* 86aa */ 0xffff, /* 86ab */ 0xffff, /* 86ac */ 0xffff, /* 86ad */ 0xffff, /* 86ae */ 0xffff, /* 86af */ 0xffff, /* 86b0 */ 0xffff, /* 86b1 */ 0xffff, /* 86b2 */ 0xffff, /* 86b3 */ 0xffff, /* 86b4 */ 0xffff, /* 86b5 */ 0xffff, /* 86b6 */ 0xffff, /* 86b7 */ 0xffff, /* 86b8 */ 0xffff, /* 86b9 */ 0xffff, /* 86ba */ 0xffff, /* 86bb */ 0xffff, /* 86bc */ 0xffff, /* 86bd */ 0xffff, /* 86be */ 0xffff, /* 86bf */ 0xffff, /* 86c0 */ 0xffff, /* 86c1 */ 0xffff, /* 86c2 */ 0xffff, /* 86c3 */ 0xffff, /* 86c4 */ 0xffff, /* 86c5 */ 0xffff, /* 86c6 */ 0xffff, /* 86c7 */ 0xffff, /* 86c8 */ 0xffff, /* 86c9 */ 0xffff, /* 86ca */ 0xffff, /* 86cb */ 0xffff, /* 86cc */ 0xffff, /* 86cd */ 0xffff, /* 86ce */ 0xffff, /* 86cf */ 0xffff, /* 86d0 */ 0xffff, /* 86d1 */ 0xffff, /* 86d2 */ 0xffff, /* 86d3 */ 0xffff, /* 86d4 */ 0xffff, /* 86d5 */ 0xffff, /* 86d6 */ 0xffff, /* 86d7 */ 0xffff, /* 86d8 */ 0xffff, /* 86d9 */ 0xffff, /* 86da */ 0xffff, /* 86db */ 0xffff, /* 86dc */ 0xffff, /* 86dd */ 0xffff, /* 86de */ 0xffff, /* 86df */ 0xffff, /* 86e0 */ 0xffff, /* 86e1 */ 0xffff, /* 86e2 */ 0xffff, /* 86e3 */ 0xffff, /* 86e4 */ 0xffff, /* 86e5 */ 0xffff, /* 86e6 */ 0xffff, /* 86e7 */ 0xffff, /* 86e8 */ 0xffff, /* 86e9 */ 0xffff, /* 86ea */ 0xffff, /* 86eb */ 0xffff, /* 86ec */ 0xffff, /* 86ed */ 0xffff, /* 86ee */ 0xffff, /* 86ef */ 0xffff, /* 86f0 */ 0xffff, /* 86f1 */ 0xffff, /* 86f2 */ 0xffff, /* 86f3 */ 0xffff, /* 86f4 */ 0xffff, /* 86f5 */ 0xffff, /* 86f6 */ 0xffff, /* 86f7 */ 0xffff, /* 86f8 */ 0xffff, /* 86f9 */ 0xffff, /* 86fa */ 0xffff, /* 86fb */ 0xffff, /* 86fc */ 0xffff, /* 86fd */ 0xffff, /* 86fe */ 0xffff, /* 86ff */ 0xffff, /* 8700 */ 0xffff, /* 8701 */ 0xffff, /* 8702 */ 0xffff, /* 8703 */ 0xffff, /* 8704 */ 0xffff, /* 8705 */ 0xffff, /* 8706 */ 0xffff, /* 8707 */ 0xffff, /* 8708 */ 0xffff, /* 8709 */ 0xffff, /* 870a */ 0xffff, /* 870b */ 0xffff, /* 870c */ 0xffff, /* 870d */ 0xffff, /* 870e */ 0xffff, /* 870f */ 0xffff, /* 8710 */ 0xffff, /* 8711 */ 0xffff, /* 8712 */ 0xffff, /* 8713 */ 0xffff, /* 8714 */ 0xffff, /* 8715 */ 0xffff, /* 8716 */ 0xffff, /* 8717 */ 0xffff, /* 8718 */ 0xffff, /* 8719 */ 0xffff, /* 871a */ 0xffff, /* 871b */ 0xffff, /* 871c */ 0xffff, /* 871d */ 0xffff, /* 871e */ 0xffff, /* 871f */ 0xffff, /* 8720 */ 0xffff, /* 8721 */ 0xffff, /* 8722 */ 0xffff, /* 8723 */ 0xffff, /* 8724 */ 0xffff, /* 8725 */ 0xffff, /* 8726 */ 0xffff, /* 8727 */ 0xffff, /* 8728 */ 0xffff, /* 8729 */ 0xffff, /* 872a */ 0xffff, /* 872b */ 0xffff, /* 872c */ 0xffff, /* 872d */ 0xffff, /* 872e */ 0xffff, /* 872f */ 0xffff, /* 8730 */ 0xffff, /* 8731 */ 0xffff, /* 8732 */ 0xffff, /* 8733 */ 0xffff, /* 8734 */ 0xffff, /* 8735 */ 0xffff, /* 8736 */ 0xffff, /* 8737 */ 0xffff, /* 8738 */ 0xffff, /* 8739 */ 0xffff, /* 873a */ 0xffff, /* 873b */ 0xffff, /* 873c */ 0xffff, /* 873d */ 0xffff, /* 873e */ 0xffff, /* 873f */ 0xffff, /* 8740 */ 0xffff, /* 8741 */ 0xffff, /* 8742 */ 0xffff, /* 8743 */ 0xffff, /* 8744 */ 0xffff, /* 8745 */ 0xffff, /* 8746 */ 0xffff, /* 8747 */ 0xffff, /* 8748 */ 0xffff, /* 8749 */ 0xffff, /* 874a */ 0xffff, /* 874b */ 0xffff, /* 874c */ 0xffff, /* 874d */ 0xffff, /* 874e */ 0xffff, /* 874f */ 0xffff, /* 8750 */ 0xffff, /* 8751 */ 0xffff, /* 8752 */ 0xffff, /* 8753 */ 0xffff, /* 8754 */ 0xffff, /* 8755 */ 0xffff, /* 8756 */ 0xffff, /* 8757 */ 0xffff, /* 8758 */ 0xffff, /* 8759 */ 0xffff, /* 875a */ 0xffff, /* 875b */ 0xffff, /* 875c */ 0xffff, /* 875d */ 0xffff, /* 875e */ 0xffff, /* 875f */ 0xffff, /* 8760 */ 0xffff, /* 8761 */ 0xffff, /* 8762 */ 0xffff, /* 8763 */ 0xffff, /* 8764 */ 0xffff, /* 8765 */ 0xffff, /* 8766 */ 0xffff, /* 8767 */ 0xffff, /* 8768 */ 0xffff, /* 8769 */ 0xffff, /* 876a */ 0xffff, /* 876b */ 0xffff, /* 876c */ 0xffff, /* 876d */ 0xffff, /* 876e */ 0xffff, /* 876f */ 0xffff, /* 8770 */ 0xffff, /* 8771 */ 0xffff, /* 8772 */ 0xffff, /* 8773 */ 0xffff, /* 8774 */ 0xffff, /* 8775 */ 0xffff, /* 8776 */ 0xffff, /* 8777 */ 0xffff, /* 8778 */ 0xffff, /* 8779 */ 0xffff, /* 877a */ 0xffff, /* 877b */ 0xffff, /* 877c */ 0xffff, /* 877d */ 0xffff, /* 877e */ 0xffff, /* 877f */ 0xffff, /* 8780 */ 0xffff, /* 8781 */ 0xffff, /* 8782 */ 0xffff, /* 8783 */ 0xffff, /* 8784 */ 0xffff, /* 8785 */ 0xffff, /* 8786 */ 0xffff, /* 8787 */ 0xffff, /* 8788 */ 0xffff, /* 8789 */ 0xffff, /* 878a */ 0xffff, /* 878b */ 0xffff, /* 878c */ 0xffff, /* 878d */ 0xffff, /* 878e */ 0xffff, /* 878f */ 0xffff, /* 8790 */ 0xffff, /* 8791 */ 0xffff, /* 8792 */ 0xffff, /* 8793 */ 0xffff, /* 8794 */ 0xffff, /* 8795 */ 0xffff, /* 8796 */ 0xffff, /* 8797 */ 0xffff, /* 8798 */ 0xffff, /* 8799 */ 0xffff, /* 879a */ 0xffff, /* 879b */ 0xffff, /* 879c */ 0xffff, /* 879d */ 0xffff, /* 879e */ 0xffff, /* 879f */ 0xffff, /* 87a0 */ 0xffff, /* 87a1 */ 0xffff, /* 87a2 */ 0xffff, /* 87a3 */ 0xffff, /* 87a4 */ 0xffff, /* 87a5 */ 0xffff, /* 87a6 */ 0xffff, /* 87a7 */ 0xffff, /* 87a8 */ 0xffff, /* 87a9 */ 0xffff, /* 87aa */ 0xffff, /* 87ab */ 0xffff, /* 87ac */ 0xffff, /* 87ad */ 0xffff, /* 87ae */ 0xffff, /* 87af */ 0xffff, /* 87b0 */ 0xffff, /* 87b1 */ 0xffff, /* 87b2 */ 0xffff, /* 87b3 */ 0xffff, /* 87b4 */ 0xffff, /* 87b5 */ 0xffff, /* 87b6 */ 0xffff, /* 87b7 */ 0xffff, /* 87b8 */ 0xffff, /* 87b9 */ 0xffff, /* 87ba */ 0xffff, /* 87bb */ 0xffff, /* 87bc */ 0xffff, /* 87bd */ 0xffff, /* 87be */ 0xffff, /* 87bf */ 0xffff, /* 87c0 */ 0xffff, /* 87c1 */ 0xffff, /* 87c2 */ 0xffff, /* 87c3 */ 0xffff, /* 87c4 */ 0xffff, /* 87c5 */ 0xffff, /* 87c6 */ 0xffff, /* 87c7 */ 0xffff, /* 87c8 */ 0xffff, /* 87c9 */ 0xffff, /* 87ca */ 0xffff, /* 87cb */ 0xffff, /* 87cc */ 0xffff, /* 87cd */ 0xffff, /* 87ce */ 0xffff, /* 87cf */ 0xffff, /* 87d0 */ 0xffff, /* 87d1 */ 0xffff, /* 87d2 */ 0xffff, /* 87d3 */ 0xffff, /* 87d4 */ 0xffff, /* 87d5 */ 0xffff, /* 87d6 */ 0xffff, /* 87d7 */ 0xffff, /* 87d8 */ 0xffff, /* 87d9 */ 0xffff, /* 87da */ 0xffff, /* 87db */ 0xffff, /* 87dc */ 0xffff, /* 87dd */ 0xffff, /* 87de */ 0xffff, /* 87df */ 0xffff, /* 87e0 */ 0xffff, /* 87e1 */ 0xffff, /* 87e2 */ 0xffff, /* 87e3 */ 0xffff, /* 87e4 */ 0xffff, /* 87e5 */ 0xffff, /* 87e6 */ 0xffff, /* 87e7 */ 0xffff, /* 87e8 */ 0xffff, /* 87e9 */ 0xffff, /* 87ea */ 0xffff, /* 87eb */ 0xffff, /* 87ec */ 0xffff, /* 87ed */ 0xffff, /* 87ee */ 0xffff, /* 87ef */ 0xffff, /* 87f0 */ 0xffff, /* 87f1 */ 0xffff, /* 87f2 */ 0xffff, /* 87f3 */ 0xffff, /* 87f4 */ 0xffff, /* 87f5 */ 0xffff, /* 87f6 */ 0xffff, /* 87f7 */ 0xffff, /* 87f8 */ 0xffff, /* 87f9 */ 0xffff, /* 87fa */ 0xffff, /* 87fb */ 0xffff, /* 87fc */ 0xffff, /* 87fd */ 0xffff, /* 87fe */ 0xffff, /* 87ff */ 0xffff, /* 8800 */ 0xffff, /* 8801 */ 0xffff, /* 8802 */ 0xffff, /* 8803 */ 0xffff, /* 8804 */ 0xffff, /* 8805 */ 0xffff, /* 8806 */ 0xffff, /* 8807 */ 0xffff, /* 8808 */ 0xffff, /* 8809 */ 0xffff, /* 880a */ 0xffff, /* 880b */ 0xffff, /* 880c */ 0xffff, /* 880d */ 0xffff, /* 880e */ 0xffff, /* 880f */ 0xffff, /* 8810 */ 0xffff, /* 8811 */ 0xffff, /* 8812 */ 0xffff, /* 8813 */ 0xffff, /* 8814 */ 0xffff, /* 8815 */ 0xffff, /* 8816 */ 0xffff, /* 8817 */ 0xffff, /* 8818 */ 0xffff, /* 8819 */ 0xffff, /* 881a */ 0xffff, /* 881b */ 0xffff, /* 881c */ 0xffff, /* 881d */ 0xffff, /* 881e */ 0xffff, /* 881f */ 0xffff, /* 8820 */ 0xffff, /* 8821 */ 0xffff, /* 8822 */ 0xffff, /* 8823 */ 0xffff, /* 8824 */ 0xffff, /* 8825 */ 0xffff, /* 8826 */ 0xffff, /* 8827 */ 0xffff, /* 8828 */ 0xffff, /* 8829 */ 0xffff, /* 882a */ 0xffff, /* 882b */ 0xffff, /* 882c */ 0xffff, /* 882d */ 0xffff, /* 882e */ 0xffff, /* 882f */ 0xffff, /* 8830 */ 0xffff, /* 8831 */ 0xffff, /* 8832 */ 0xffff, /* 8833 */ 0xffff, /* 8834 */ 0xffff, /* 8835 */ 0xffff, /* 8836 */ 0xffff, /* 8837 */ 0xffff, /* 8838 */ 0xffff, /* 8839 */ 0xffff, /* 883a */ 0xffff, /* 883b */ 0xffff, /* 883c */ 0xffff, /* 883d */ 0xffff, /* 883e */ 0xffff, /* 883f */ 0xffff, /* 8840 */ 0xffff, /* 8841 */ 0xffff, /* 8842 */ 0xffff, /* 8843 */ 0xffff, /* 8844 */ 0xffff, /* 8845 */ 0xffff, /* 8846 */ 0xffff, /* 8847 */ 0xffff, /* 8848 */ 0xffff, /* 8849 */ 0xffff, /* 884a */ 0xffff, /* 884b */ 0xffff, /* 884c */ 0xffff, /* 884d */ 0xffff, /* 884e */ 0xffff, /* 884f */ 0xffff, /* 8850 */ 0xffff, /* 8851 */ 0xffff, /* 8852 */ 0xffff, /* 8853 */ 0xffff, /* 8854 */ 0xffff, /* 8855 */ 0xffff, /* 8856 */ 0xffff, /* 8857 */ 0xffff, /* 8858 */ 0xffff, /* 8859 */ 0xffff, /* 885a */ 0xffff, /* 885b */ 0xffff, /* 885c */ 0xffff, /* 885d */ 0xffff, /* 885e */ 0xffff, /* 885f */ 0xffff, /* 8860 */ 0xffff, /* 8861 */ 0xffff, /* 8862 */ 0xffff, /* 8863 */ 0xffff, /* 8864 */ 0xffff, /* 8865 */ 0xffff, /* 8866 */ 0xffff, /* 8867 */ 0xffff, /* 8868 */ 0xffff, /* 8869 */ 0xffff, /* 886a */ 0xffff, /* 886b */ 0xffff, /* 886c */ 0xffff, /* 886d */ 0xffff, /* 886e */ 0xffff, /* 886f */ 0xffff, /* 8870 */ 0xffff, /* 8871 */ 0xffff, /* 8872 */ 0xffff, /* 8873 */ 0xffff, /* 8874 */ 0xffff, /* 8875 */ 0xffff, /* 8876 */ 0xffff, /* 8877 */ 0xffff, /* 8878 */ 0xffff, /* 8879 */ 0xffff, /* 887a */ 0xffff, /* 887b */ 0xffff, /* 887c */ 0xffff, /* 887d */ 0xffff, /* 887e */ 0xffff, /* 887f */ 0xffff, /* 8880 */ 0xffff, /* 8881 */ 0xffff, /* 8882 */ 0xffff, /* 8883 */ 0xffff, /* 8884 */ 0xffff, /* 8885 */ 0xffff, /* 8886 */ 0xffff, /* 8887 */ 0xffff, /* 8888 */ 0xffff, /* 8889 */ 0xffff, /* 888a */ 0xffff, /* 888b */ 0xffff, /* 888c */ 0xffff, /* 888d */ 0xffff, /* 888e */ 0xffff, /* 888f */ 0xffff, /* 8890 */ 0xffff, /* 8891 */ 0xffff, /* 8892 */ 0xffff, /* 8893 */ 0xffff, /* 8894 */ 0xffff, /* 8895 */ 0xffff, /* 8896 */ 0xffff, /* 8897 */ 0xffff, /* 8898 */ 0xffff, /* 8899 */ 0xffff, /* 889a */ 0xffff, /* 889b */ 0xffff, /* 889c */ 0xffff, /* 889d */ 0xffff, /* 889e */ 0xffff, /* 889f */ 0xffff, /* 88a0 */ 0xffff, /* 88a1 */ 0xffff, /* 88a2 */ 0xffff, /* 88a3 */ 0xffff, /* 88a4 */ 0xffff, /* 88a5 */ 0xffff, /* 88a6 */ 0xffff, /* 88a7 */ 0xffff, /* 88a8 */ 0xffff, /* 88a9 */ 0xffff, /* 88aa */ 0xffff, /* 88ab */ 0xffff, /* 88ac */ 0xffff, /* 88ad */ 0xffff, /* 88ae */ 0xffff, /* 88af */ 0xffff, /* 88b0 */ 0xffff, /* 88b1 */ 0xffff, /* 88b2 */ 0xffff, /* 88b3 */ 0xffff, /* 88b4 */ 0xffff, /* 88b5 */ 0xffff, /* 88b6 */ 0xffff, /* 88b7 */ 0xffff, /* 88b8 */ 0xffff, /* 88b9 */ 0xffff, /* 88ba */ 0xffff, /* 88bb */ 0xffff, /* 88bc */ 0xffff, /* 88bd */ 0xffff, /* 88be */ 0xffff, /* 88bf */ 0xffff, /* 88c0 */ 0xffff, /* 88c1 */ 0xffff, /* 88c2 */ 0xffff, /* 88c3 */ 0xffff, /* 88c4 */ 0xffff, /* 88c5 */ 0xffff, /* 88c6 */ 0xffff, /* 88c7 */ 0xffff, /* 88c8 */ 0xffff, /* 88c9 */ 0xffff, /* 88ca */ 0xffff, /* 88cb */ 0xffff, /* 88cc */ 0xffff, /* 88cd */ 0xffff, /* 88ce */ 0xffff, /* 88cf */ 0xffff, /* 88d0 */ 0xffff, /* 88d1 */ 0xffff, /* 88d2 */ 0xffff, /* 88d3 */ 0xffff, /* 88d4 */ 0xffff, /* 88d5 */ 0xffff, /* 88d6 */ 0xffff, /* 88d7 */ 0xffff, /* 88d8 */ 0xffff, /* 88d9 */ 0xffff, /* 88da */ 0xffff, /* 88db */ 0xffff, /* 88dc */ 0xffff, /* 88dd */ 0xffff, /* 88de */ 0xffff, /* 88df */ 0xffff, /* 88e0 */ 0xffff, /* 88e1 */ 0xffff, /* 88e2 */ 0xffff, /* 88e3 */ 0xffff, /* 88e4 */ 0xffff, /* 88e5 */ 0xffff, /* 88e6 */ 0xffff, /* 88e7 */ 0xffff, /* 88e8 */ 0xffff, /* 88e9 */ 0xffff, /* 88ea */ 0xffff, /* 88eb */ 0xffff, /* 88ec */ 0xffff, /* 88ed */ 0xffff, /* 88ee */ 0xffff, /* 88ef */ 0xffff, /* 88f0 */ 0xffff, /* 88f1 */ 0xffff, /* 88f2 */ 0xffff, /* 88f3 */ 0xffff, /* 88f4 */ 0xffff, /* 88f5 */ 0xffff, /* 88f6 */ 0xffff, /* 88f7 */ 0xffff, /* 88f8 */ 0xffff, /* 88f9 */ 0xffff, /* 88fa */ 0xffff, /* 88fb */ 0xffff, /* 88fc */ 0xffff, /* 88fd */ 0xffff, /* 88fe */ 0xffff, /* 88ff */ 0xffff, /* 8900 */ 0xffff, /* 8901 */ 0xffff, /* 8902 */ 0xffff, /* 8903 */ 0xffff, /* 8904 */ 0xffff, /* 8905 */ 0xffff, /* 8906 */ 0xffff, /* 8907 */ 0xffff, /* 8908 */ 0xffff, /* 8909 */ 0xffff, /* 890a */ 0xffff, /* 890b */ 0xffff, /* 890c */ 0xffff, /* 890d */ 0xffff, /* 890e */ 0xffff, /* 890f */ 0xffff, /* 8910 */ 0xffff, /* 8911 */ 0xffff, /* 8912 */ 0xffff, /* 8913 */ 0xffff, /* 8914 */ 0xffff, /* 8915 */ 0xffff, /* 8916 */ 0xffff, /* 8917 */ 0xffff, /* 8918 */ 0xffff, /* 8919 */ 0xffff, /* 891a */ 0xffff, /* 891b */ 0xffff, /* 891c */ 0xffff, /* 891d */ 0xffff, /* 891e */ 0xffff, /* 891f */ 0xffff, /* 8920 */ 0xffff, /* 8921 */ 0xffff, /* 8922 */ 0xffff, /* 8923 */ 0xffff, /* 8924 */ 0xffff, /* 8925 */ 0xffff, /* 8926 */ 0xffff, /* 8927 */ 0xffff, /* 8928 */ 0xffff, /* 8929 */ 0xffff, /* 892a */ 0xffff, /* 892b */ 0xffff, /* 892c */ 0xffff, /* 892d */ 0xffff, /* 892e */ 0xffff, /* 892f */ 0xffff, /* 8930 */ 0xffff, /* 8931 */ 0xffff, /* 8932 */ 0xffff, /* 8933 */ 0xffff, /* 8934 */ 0xffff, /* 8935 */ 0xffff, /* 8936 */ 0xffff, /* 8937 */ 0xffff, /* 8938 */ 0xffff, /* 8939 */ 0xffff, /* 893a */ 0xffff, /* 893b */ 0xffff, /* 893c */ 0xffff, /* 893d */ 0xffff, /* 893e */ 0xffff, /* 893f */ 0xffff, /* 8940 */ 0xffff, /* 8941 */ 0xffff, /* 8942 */ 0xffff, /* 8943 */ 0xffff, /* 8944 */ 0xffff, /* 8945 */ 0xffff, /* 8946 */ 0xffff, /* 8947 */ 0xffff, /* 8948 */ 0xffff, /* 8949 */ 0xffff, /* 894a */ 0xffff, /* 894b */ 0xffff, /* 894c */ 0xffff, /* 894d */ 0xffff, /* 894e */ 0xffff, /* 894f */ 0xffff, /* 8950 */ 0xffff, /* 8951 */ 0xffff, /* 8952 */ 0xffff, /* 8953 */ 0xffff, /* 8954 */ 0xffff, /* 8955 */ 0xffff, /* 8956 */ 0xffff, /* 8957 */ 0xffff, /* 8958 */ 0xffff, /* 8959 */ 0xffff, /* 895a */ 0xffff, /* 895b */ 0xffff, /* 895c */ 0xffff, /* 895d */ 0xffff, /* 895e */ 0xffff, /* 895f */ 0xffff, /* 8960 */ 0xffff, /* 8961 */ 0xffff, /* 8962 */ 0xffff, /* 8963 */ 0xffff, /* 8964 */ 0xffff, /* 8965 */ 0xffff, /* 8966 */ 0xffff, /* 8967 */ 0xffff, /* 8968 */ 0xffff, /* 8969 */ 0xffff, /* 896a */ 0xffff, /* 896b */ 0xffff, /* 896c */ 0xffff, /* 896d */ 0xffff, /* 896e */ 0xffff, /* 896f */ 0xffff, /* 8970 */ 0xffff, /* 8971 */ 0xffff, /* 8972 */ 0xffff, /* 8973 */ 0xffff, /* 8974 */ 0xffff, /* 8975 */ 0xffff, /* 8976 */ 0xffff, /* 8977 */ 0xffff, /* 8978 */ 0xffff, /* 8979 */ 0xffff, /* 897a */ 0xffff, /* 897b */ 0xffff, /* 897c */ 0xffff, /* 897d */ 0xffff, /* 897e */ 0xffff, /* 897f */ 0xffff, /* 8980 */ 0xffff, /* 8981 */ 0xffff, /* 8982 */ 0xffff, /* 8983 */ 0xffff, /* 8984 */ 0xffff, /* 8985 */ 0xffff, /* 8986 */ 0xffff, /* 8987 */ 0xffff, /* 8988 */ 0xffff, /* 8989 */ 0xffff, /* 898a */ 0xffff, /* 898b */ 0xffff, /* 898c */ 0xffff, /* 898d */ 0xffff, /* 898e */ 0xffff, /* 898f */ 0xffff, /* 8990 */ 0xffff, /* 8991 */ 0xffff, /* 8992 */ 0xffff, /* 8993 */ 0xffff, /* 8994 */ 0xffff, /* 8995 */ 0xffff, /* 8996 */ 0xffff, /* 8997 */ 0xffff, /* 8998 */ 0xffff, /* 8999 */ 0xffff, /* 899a */ 0xffff, /* 899b */ 0xffff, /* 899c */ 0xffff, /* 899d */ 0xffff, /* 899e */ 0xffff, /* 899f */ 0xffff, /* 89a0 */ 0xffff, /* 89a1 */ 0xffff, /* 89a2 */ 0xffff, /* 89a3 */ 0xffff, /* 89a4 */ 0xffff, /* 89a5 */ 0xffff, /* 89a6 */ 0xffff, /* 89a7 */ 0xffff, /* 89a8 */ 0xffff, /* 89a9 */ 0xffff, /* 89aa */ 0xffff, /* 89ab */ 0xffff, /* 89ac */ 0xffff, /* 89ad */ 0xffff, /* 89ae */ 0xffff, /* 89af */ 0xffff, /* 89b0 */ 0xffff, /* 89b1 */ 0xffff, /* 89b2 */ 0xffff, /* 89b3 */ 0xffff, /* 89b4 */ 0xffff, /* 89b5 */ 0xffff, /* 89b6 */ 0xffff, /* 89b7 */ 0xffff, /* 89b8 */ 0xffff, /* 89b9 */ 0xffff, /* 89ba */ 0xffff, /* 89bb */ 0xffff, /* 89bc */ 0xffff, /* 89bd */ 0xffff, /* 89be */ 0xffff, /* 89bf */ 0xffff, /* 89c0 */ 0xffff, /* 89c1 */ 0xffff, /* 89c2 */ 0xffff, /* 89c3 */ 0xffff, /* 89c4 */ 0xffff, /* 89c5 */ 0xffff, /* 89c6 */ 0xffff, /* 89c7 */ 0xffff, /* 89c8 */ 0xffff, /* 89c9 */ 0xffff, /* 89ca */ 0xffff, /* 89cb */ 0xffff, /* 89cc */ 0xffff, /* 89cd */ 0xffff, /* 89ce */ 0xffff, /* 89cf */ 0xffff, /* 89d0 */ 0xffff, /* 89d1 */ 0xffff, /* 89d2 */ 0xffff, /* 89d3 */ 0xffff, /* 89d4 */ 0xffff, /* 89d5 */ 0xffff, /* 89d6 */ 0xffff, /* 89d7 */ 0xffff, /* 89d8 */ 0xffff, /* 89d9 */ 0xffff, /* 89da */ 0xffff, /* 89db */ 0xffff, /* 89dc */ 0xffff, /* 89dd */ 0xffff, /* 89de */ 0xffff, /* 89df */ 0xffff, /* 89e0 */ 0xffff, /* 89e1 */ 0xffff, /* 89e2 */ 0xffff, /* 89e3 */ 0xffff, /* 89e4 */ 0xffff, /* 89e5 */ 0xffff, /* 89e6 */ 0xffff, /* 89e7 */ 0xffff, /* 89e8 */ 0xffff, /* 89e9 */ 0xffff, /* 89ea */ 0xffff, /* 89eb */ 0xffff, /* 89ec */ 0xffff, /* 89ed */ 0xffff, /* 89ee */ 0xffff, /* 89ef */ 0xffff, /* 89f0 */ 0xffff, /* 89f1 */ 0xffff, /* 89f2 */ 0xffff, /* 89f3 */ 0xffff, /* 89f4 */ 0xffff, /* 89f5 */ 0xffff, /* 89f6 */ 0xffff, /* 89f7 */ 0xffff, /* 89f8 */ 0xffff, /* 89f9 */ 0xffff, /* 89fa */ 0xffff, /* 89fb */ 0xffff, /* 89fc */ 0xffff, /* 89fd */ 0xffff, /* 89fe */ 0xffff, /* 89ff */ 0xffff, /* 8a00 */ 0xffff, /* 8a01 */ 0xffff, /* 8a02 */ 0xffff, /* 8a03 */ 0xffff, /* 8a04 */ 0xffff, /* 8a05 */ 0xffff, /* 8a06 */ 0xffff, /* 8a07 */ 0xffff, /* 8a08 */ 0xffff, /* 8a09 */ 0xffff, /* 8a0a */ 0xffff, /* 8a0b */ 0xffff, /* 8a0c */ 0xffff, /* 8a0d */ 0xffff, /* 8a0e */ 0xffff, /* 8a0f */ 0xffff, /* 8a10 */ 0xffff, /* 8a11 */ 0xffff, /* 8a12 */ 0xffff, /* 8a13 */ 0xffff, /* 8a14 */ 0xffff, /* 8a15 */ 0xffff, /* 8a16 */ 0xffff, /* 8a17 */ 0xffff, /* 8a18 */ 0xffff, /* 8a19 */ 0xffff, /* 8a1a */ 0xffff, /* 8a1b */ 0xffff, /* 8a1c */ 0xffff, /* 8a1d */ 0xffff, /* 8a1e */ 0xffff, /* 8a1f */ 0xffff, /* 8a20 */ 0xffff, /* 8a21 */ 0xffff, /* 8a22 */ 0xffff, /* 8a23 */ 0xffff, /* 8a24 */ 0xffff, /* 8a25 */ 0xffff, /* 8a26 */ 0xffff, /* 8a27 */ 0xffff, /* 8a28 */ 0xffff, /* 8a29 */ 0xffff, /* 8a2a */ 0xffff, /* 8a2b */ 0xffff, /* 8a2c */ 0xffff, /* 8a2d */ 0xffff, /* 8a2e */ 0xffff, /* 8a2f */ 0xffff, /* 8a30 */ 0xffff, /* 8a31 */ 0xffff, /* 8a32 */ 0xffff, /* 8a33 */ 0xffff, /* 8a34 */ 0xffff, /* 8a35 */ 0xffff, /* 8a36 */ 0xffff, /* 8a37 */ 0xffff, /* 8a38 */ 0xffff, /* 8a39 */ 0xffff, /* 8a3a */ 0xffff, /* 8a3b */ 0xffff, /* 8a3c */ 0xffff, /* 8a3d */ 0xffff, /* 8a3e */ 0xffff, /* 8a3f */ 0xffff, /* 8a40 */ 0xffff, /* 8a41 */ 0xffff, /* 8a42 */ 0xffff, /* 8a43 */ 0xffff, /* 8a44 */ 0xffff, /* 8a45 */ 0xffff, /* 8a46 */ 0xffff, /* 8a47 */ 0xffff, /* 8a48 */ 0xffff, /* 8a49 */ 0xffff, /* 8a4a */ 0xffff, /* 8a4b */ 0xffff, /* 8a4c */ 0xffff, /* 8a4d */ 0xffff, /* 8a4e */ 0xffff, /* 8a4f */ 0xffff, /* 8a50 */ 0xffff, /* 8a51 */ 0xffff, /* 8a52 */ 0xffff, /* 8a53 */ 0xffff, /* 8a54 */ 0xffff, /* 8a55 */ 0xffff, /* 8a56 */ 0xffff, /* 8a57 */ 0xffff, /* 8a58 */ 0xffff, /* 8a59 */ 0xffff, /* 8a5a */ 0xffff, /* 8a5b */ 0xffff, /* 8a5c */ 0xffff, /* 8a5d */ 0xffff, /* 8a5e */ 0xffff, /* 8a5f */ 0xffff, /* 8a60 */ 0xffff, /* 8a61 */ 0xffff, /* 8a62 */ 0xffff, /* 8a63 */ 0xffff, /* 8a64 */ 0xffff, /* 8a65 */ 0xffff, /* 8a66 */ 0xffff, /* 8a67 */ 0xffff, /* 8a68 */ 0xffff, /* 8a69 */ 0xffff, /* 8a6a */ 0xffff, /* 8a6b */ 0xffff, /* 8a6c */ 0xffff, /* 8a6d */ 0xffff, /* 8a6e */ 0xffff, /* 8a6f */ 0xffff, /* 8a70 */ 0xffff, /* 8a71 */ 0xffff, /* 8a72 */ 0xffff, /* 8a73 */ 0xffff, /* 8a74 */ 0xffff, /* 8a75 */ 0xffff, /* 8a76 */ 0xffff, /* 8a77 */ 0xffff, /* 8a78 */ 0xffff, /* 8a79 */ 0xffff, /* 8a7a */ 0xffff, /* 8a7b */ 0xffff, /* 8a7c */ 0xffff, /* 8a7d */ 0xffff, /* 8a7e */ 0xffff, /* 8a7f */ 0xffff, /* 8a80 */ 0xffff, /* 8a81 */ 0xffff, /* 8a82 */ 0xffff, /* 8a83 */ 0xffff, /* 8a84 */ 0xffff, /* 8a85 */ 0xffff, /* 8a86 */ 0xffff, /* 8a87 */ 0xffff, /* 8a88 */ 0xffff, /* 8a89 */ 0xffff, /* 8a8a */ 0xffff, /* 8a8b */ 0xffff, /* 8a8c */ 0xffff, /* 8a8d */ 0xffff, /* 8a8e */ 0xffff, /* 8a8f */ 0xffff, /* 8a90 */ 0xffff, /* 8a91 */ 0xffff, /* 8a92 */ 0xffff, /* 8a93 */ 0xffff, /* 8a94 */ 0xffff, /* 8a95 */ 0xffff, /* 8a96 */ 0xffff, /* 8a97 */ 0xffff, /* 8a98 */ 0xffff, /* 8a99 */ 0xffff, /* 8a9a */ 0xffff, /* 8a9b */ 0xffff, /* 8a9c */ 0xffff, /* 8a9d */ 0xffff, /* 8a9e */ 0xffff, /* 8a9f */ 0xffff, /* 8aa0 */ 0xffff, /* 8aa1 */ 0xffff, /* 8aa2 */ 0xffff, /* 8aa3 */ 0xffff, /* 8aa4 */ 0xffff, /* 8aa5 */ 0xffff, /* 8aa6 */ 0xffff, /* 8aa7 */ 0xffff, /* 8aa8 */ 0xffff, /* 8aa9 */ 0xffff, /* 8aaa */ 0xffff, /* 8aab */ 0xffff, /* 8aac */ 0xffff, /* 8aad */ 0xffff, /* 8aae */ 0xffff, /* 8aaf */ 0xffff, /* 8ab0 */ 0xffff, /* 8ab1 */ 0xffff, /* 8ab2 */ 0xffff, /* 8ab3 */ 0xffff, /* 8ab4 */ 0xffff, /* 8ab5 */ 0xffff, /* 8ab6 */ 0xffff, /* 8ab7 */ 0xffff, /* 8ab8 */ 0xffff, /* 8ab9 */ 0xffff, /* 8aba */ 0xffff, /* 8abb */ 0xffff, /* 8abc */ 0xffff, /* 8abd */ 0xffff, /* 8abe */ 0xffff, /* 8abf */ 0xffff, /* 8ac0 */ 0xffff, /* 8ac1 */ 0xffff, /* 8ac2 */ 0xffff, /* 8ac3 */ 0xffff, /* 8ac4 */ 0xffff, /* 8ac5 */ 0xffff, /* 8ac6 */ 0xffff, /* 8ac7 */ 0xffff, /* 8ac8 */ 0xffff, /* 8ac9 */ 0xffff, /* 8aca */ 0xffff, /* 8acb */ 0xffff, /* 8acc */ 0xffff, /* 8acd */ 0xffff, /* 8ace */ 0xffff, /* 8acf */ 0xffff, /* 8ad0 */ 0xffff, /* 8ad1 */ 0xffff, /* 8ad2 */ 0xffff, /* 8ad3 */ 0xffff, /* 8ad4 */ 0xffff, /* 8ad5 */ 0xffff, /* 8ad6 */ 0xffff, /* 8ad7 */ 0xffff, /* 8ad8 */ 0xffff, /* 8ad9 */ 0xffff, /* 8ada */ 0xffff, /* 8adb */ 0xffff, /* 8adc */ 0xffff, /* 8add */ 0xffff, /* 8ade */ 0xffff, /* 8adf */ 0xffff, /* 8ae0 */ 0xffff, /* 8ae1 */ 0xffff, /* 8ae2 */ 0xffff, /* 8ae3 */ 0xffff, /* 8ae4 */ 0xffff, /* 8ae5 */ 0xffff, /* 8ae6 */ 0xffff, /* 8ae7 */ 0xffff, /* 8ae8 */ 0xffff, /* 8ae9 */ 0xffff, /* 8aea */ 0xffff, /* 8aeb */ 0xffff, /* 8aec */ 0xffff, /* 8aed */ 0xffff, /* 8aee */ 0xffff, /* 8aef */ 0xffff, /* 8af0 */ 0xffff, /* 8af1 */ 0xffff, /* 8af2 */ 0xffff, /* 8af3 */ 0xffff, /* 8af4 */ 0xffff, /* 8af5 */ 0xffff, /* 8af6 */ 0xffff, /* 8af7 */ 0xffff, /* 8af8 */ 0xffff, /* 8af9 */ 0xffff, /* 8afa */ 0xffff, /* 8afb */ 0xffff, /* 8afc */ 0xffff, /* 8afd */ 0xffff, /* 8afe */ 0xffff, /* 8aff */ 0xffff, /* 8b00 */ 0xffff, /* 8b01 */ 0xffff, /* 8b02 */ 0xffff, /* 8b03 */ 0xffff, /* 8b04 */ 0xffff, /* 8b05 */ 0xffff, /* 8b06 */ 0xffff, /* 8b07 */ 0xffff, /* 8b08 */ 0xffff, /* 8b09 */ 0xffff, /* 8b0a */ 0xffff, /* 8b0b */ 0xffff, /* 8b0c */ 0xffff, /* 8b0d */ 0xffff, /* 8b0e */ 0xffff, /* 8b0f */ 0xffff, /* 8b10 */ 0xffff, /* 8b11 */ 0xffff, /* 8b12 */ 0xffff, /* 8b13 */ 0xffff, /* 8b14 */ 0xffff, /* 8b15 */ 0xffff, /* 8b16 */ 0xffff, /* 8b17 */ 0xffff, /* 8b18 */ 0xffff, /* 8b19 */ 0xffff, /* 8b1a */ 0xffff, /* 8b1b */ 0xffff, /* 8b1c */ 0xffff, /* 8b1d */ 0xffff, /* 8b1e */ 0xffff, /* 8b1f */ 0xffff, /* 8b20 */ 0xffff, /* 8b21 */ 0xffff, /* 8b22 */ 0xffff, /* 8b23 */ 0xffff, /* 8b24 */ 0xffff, /* 8b25 */ 0xffff, /* 8b26 */ 0xffff, /* 8b27 */ 0xffff, /* 8b28 */ 0xffff, /* 8b29 */ 0xffff, /* 8b2a */ 0xffff, /* 8b2b */ 0xffff, /* 8b2c */ 0xffff, /* 8b2d */ 0xffff, /* 8b2e */ 0xffff, /* 8b2f */ 0xffff, /* 8b30 */ 0xffff, /* 8b31 */ 0xffff, /* 8b32 */ 0xffff, /* 8b33 */ 0xffff, /* 8b34 */ 0xffff, /* 8b35 */ 0xffff, /* 8b36 */ 0xffff, /* 8b37 */ 0xffff, /* 8b38 */ 0xffff, /* 8b39 */ 0xffff, /* 8b3a */ 0xffff, /* 8b3b */ 0xffff, /* 8b3c */ 0xffff, /* 8b3d */ 0xffff, /* 8b3e */ 0xffff, /* 8b3f */ 0xffff, /* 8b40 */ 0xffff, /* 8b41 */ 0xffff, /* 8b42 */ 0xffff, /* 8b43 */ 0xffff, /* 8b44 */ 0xffff, /* 8b45 */ 0xffff, /* 8b46 */ 0xffff, /* 8b47 */ 0xffff, /* 8b48 */ 0xffff, /* 8b49 */ 0xffff, /* 8b4a */ 0xffff, /* 8b4b */ 0xffff, /* 8b4c */ 0xffff, /* 8b4d */ 0xffff, /* 8b4e */ 0xffff, /* 8b4f */ 0xffff, /* 8b50 */ 0xffff, /* 8b51 */ 0xffff, /* 8b52 */ 0xffff, /* 8b53 */ 0xffff, /* 8b54 */ 0xffff, /* 8b55 */ 0xffff, /* 8b56 */ 0xffff, /* 8b57 */ 0xffff, /* 8b58 */ 0xffff, /* 8b59 */ 0xffff, /* 8b5a */ 0xffff, /* 8b5b */ 0xffff, /* 8b5c */ 0xffff, /* 8b5d */ 0xffff, /* 8b5e */ 0xffff, /* 8b5f */ 0xffff, /* 8b60 */ 0xffff, /* 8b61 */ 0xffff, /* 8b62 */ 0xffff, /* 8b63 */ 0xffff, /* 8b64 */ 0xffff, /* 8b65 */ 0xffff, /* 8b66 */ 0xffff, /* 8b67 */ 0xffff, /* 8b68 */ 0xffff, /* 8b69 */ 0xffff, /* 8b6a */ 0xffff, /* 8b6b */ 0xffff, /* 8b6c */ 0xffff, /* 8b6d */ 0xffff, /* 8b6e */ 0xffff, /* 8b6f */ 0xffff, /* 8b70 */ 0xffff, /* 8b71 */ 0xffff, /* 8b72 */ 0xffff, /* 8b73 */ 0xffff, /* 8b74 */ 0xffff, /* 8b75 */ 0xffff, /* 8b76 */ 0xffff, /* 8b77 */ 0xffff, /* 8b78 */ 0xffff, /* 8b79 */ 0xffff, /* 8b7a */ 0xffff, /* 8b7b */ 0xffff, /* 8b7c */ 0xffff, /* 8b7d */ 0xffff, /* 8b7e */ 0xffff, /* 8b7f */ 0xffff, /* 8b80 */ 0xffff, /* 8b81 */ 0xffff, /* 8b82 */ 0xffff, /* 8b83 */ 0xffff, /* 8b84 */ 0xffff, /* 8b85 */ 0xffff, /* 8b86 */ 0xffff, /* 8b87 */ 0xffff, /* 8b88 */ 0xffff, /* 8b89 */ 0xffff, /* 8b8a */ 0xffff, /* 8b8b */ 0xffff, /* 8b8c */ 0xffff, /* 8b8d */ 0xffff, /* 8b8e */ 0xffff, /* 8b8f */ 0xffff, /* 8b90 */ 0xffff, /* 8b91 */ 0xffff, /* 8b92 */ 0xffff, /* 8b93 */ 0xffff, /* 8b94 */ 0xffff, /* 8b95 */ 0xffff, /* 8b96 */ 0xffff, /* 8b97 */ 0xffff, /* 8b98 */ 0xffff, /* 8b99 */ 0xffff, /* 8b9a */ 0xffff, /* 8b9b */ 0xffff, /* 8b9c */ 0xffff, /* 8b9d */ 0xffff, /* 8b9e */ 0xffff, /* 8b9f */ 0xffff, /* 8ba0 */ 0xffff, /* 8ba1 */ 0xffff, /* 8ba2 */ 0xffff, /* 8ba3 */ 0xffff, /* 8ba4 */ 0xffff, /* 8ba5 */ 0xffff, /* 8ba6 */ 0xffff, /* 8ba7 */ 0xffff, /* 8ba8 */ 0xffff, /* 8ba9 */ 0xffff, /* 8baa */ 0xffff, /* 8bab */ 0xffff, /* 8bac */ 0xffff, /* 8bad */ 0xffff, /* 8bae */ 0xffff, /* 8baf */ 0xffff, /* 8bb0 */ 0xffff, /* 8bb1 */ 0xffff, /* 8bb2 */ 0xffff, /* 8bb3 */ 0xffff, /* 8bb4 */ 0xffff, /* 8bb5 */ 0xffff, /* 8bb6 */ 0xffff, /* 8bb7 */ 0xffff, /* 8bb8 */ 0xffff, /* 8bb9 */ 0xffff, /* 8bba */ 0xffff, /* 8bbb */ 0xffff, /* 8bbc */ 0xffff, /* 8bbd */ 0xffff, /* 8bbe */ 0xffff, /* 8bbf */ 0xffff, /* 8bc0 */ 0xffff, /* 8bc1 */ 0xffff, /* 8bc2 */ 0xffff, /* 8bc3 */ 0xffff, /* 8bc4 */ 0xffff, /* 8bc5 */ 0xffff, /* 8bc6 */ 0xffff, /* 8bc7 */ 0xffff, /* 8bc8 */ 0xffff, /* 8bc9 */ 0xffff, /* 8bca */ 0xffff, /* 8bcb */ 0xffff, /* 8bcc */ 0xffff, /* 8bcd */ 0xffff, /* 8bce */ 0xffff, /* 8bcf */ 0xffff, /* 8bd0 */ 0xffff, /* 8bd1 */ 0xffff, /* 8bd2 */ 0xffff, /* 8bd3 */ 0xffff, /* 8bd4 */ 0xffff, /* 8bd5 */ 0xffff, /* 8bd6 */ 0xffff, /* 8bd7 */ 0xffff, /* 8bd8 */ 0xffff, /* 8bd9 */ 0xffff, /* 8bda */ 0xffff, /* 8bdb */ 0xffff, /* 8bdc */ 0xffff, /* 8bdd */ 0xffff, /* 8bde */ 0xffff, /* 8bdf */ 0xffff, /* 8be0 */ 0xffff, /* 8be1 */ 0xffff, /* 8be2 */ 0xffff, /* 8be3 */ 0xffff, /* 8be4 */ 0xffff, /* 8be5 */ 0xffff, /* 8be6 */ 0xffff, /* 8be7 */ 0xffff, /* 8be8 */ 0xffff, /* 8be9 */ 0xffff, /* 8bea */ 0xffff, /* 8beb */ 0xffff, /* 8bec */ 0xffff, /* 8bed */ 0xffff, /* 8bee */ 0xffff, /* 8bef */ 0xffff, /* 8bf0 */ 0xffff, /* 8bf1 */ 0xffff, /* 8bf2 */ 0xffff, /* 8bf3 */ 0xffff, /* 8bf4 */ 0xffff, /* 8bf5 */ 0xffff, /* 8bf6 */ 0xffff, /* 8bf7 */ 0xffff, /* 8bf8 */ 0xffff, /* 8bf9 */ 0xffff, /* 8bfa */ 0xffff, /* 8bfb */ 0xffff, /* 8bfc */ 0xffff, /* 8bfd */ 0xffff, /* 8bfe */ 0xffff, /* 8bff */ 0xffff, /* 8c00 */ 0xffff, /* 8c01 */ 0xffff, /* 8c02 */ 0xffff, /* 8c03 */ 0xffff, /* 8c04 */ 0xffff, /* 8c05 */ 0xffff, /* 8c06 */ 0xffff, /* 8c07 */ 0xffff, /* 8c08 */ 0xffff, /* 8c09 */ 0xffff, /* 8c0a */ 0xffff, /* 8c0b */ 0xffff, /* 8c0c */ 0xffff, /* 8c0d */ 0xffff, /* 8c0e */ 0xffff, /* 8c0f */ 0xffff, /* 8c10 */ 0xffff, /* 8c11 */ 0xffff, /* 8c12 */ 0xffff, /* 8c13 */ 0xffff, /* 8c14 */ 0xffff, /* 8c15 */ 0xffff, /* 8c16 */ 0xffff, /* 8c17 */ 0xffff, /* 8c18 */ 0xffff, /* 8c19 */ 0xffff, /* 8c1a */ 0xffff, /* 8c1b */ 0xffff, /* 8c1c */ 0xffff, /* 8c1d */ 0xffff, /* 8c1e */ 0xffff, /* 8c1f */ 0xffff, /* 8c20 */ 0xffff, /* 8c21 */ 0xffff, /* 8c22 */ 0xffff, /* 8c23 */ 0xffff, /* 8c24 */ 0xffff, /* 8c25 */ 0xffff, /* 8c26 */ 0xffff, /* 8c27 */ 0xffff, /* 8c28 */ 0xffff, /* 8c29 */ 0xffff, /* 8c2a */ 0xffff, /* 8c2b */ 0xffff, /* 8c2c */ 0xffff, /* 8c2d */ 0xffff, /* 8c2e */ 0xffff, /* 8c2f */ 0xffff, /* 8c30 */ 0xffff, /* 8c31 */ 0xffff, /* 8c32 */ 0xffff, /* 8c33 */ 0xffff, /* 8c34 */ 0xffff, /* 8c35 */ 0xffff, /* 8c36 */ 0xffff, /* 8c37 */ 0xffff, /* 8c38 */ 0xffff, /* 8c39 */ 0xffff, /* 8c3a */ 0xffff, /* 8c3b */ 0xffff, /* 8c3c */ 0xffff, /* 8c3d */ 0xffff, /* 8c3e */ 0xffff, /* 8c3f */ 0xffff, /* 8c40 */ 0xffff, /* 8c41 */ 0xffff, /* 8c42 */ 0xffff, /* 8c43 */ 0xffff, /* 8c44 */ 0xffff, /* 8c45 */ 0xffff, /* 8c46 */ 0xffff, /* 8c47 */ 0xffff, /* 8c48 */ 0xffff, /* 8c49 */ 0xffff, /* 8c4a */ 0xffff, /* 8c4b */ 0xffff, /* 8c4c */ 0xffff, /* 8c4d */ 0xffff, /* 8c4e */ 0xffff, /* 8c4f */ 0xffff, /* 8c50 */ 0xffff, /* 8c51 */ 0xffff, /* 8c52 */ 0xffff, /* 8c53 */ 0xffff, /* 8c54 */ 0xffff, /* 8c55 */ 0xffff, /* 8c56 */ 0xffff, /* 8c57 */ 0xffff, /* 8c58 */ 0xffff, /* 8c59 */ 0xffff, /* 8c5a */ 0xffff, /* 8c5b */ 0xffff, /* 8c5c */ 0xffff, /* 8c5d */ 0xffff, /* 8c5e */ 0xffff, /* 8c5f */ 0xffff, /* 8c60 */ 0xffff, /* 8c61 */ 0xffff, /* 8c62 */ 0xffff, /* 8c63 */ 0xffff, /* 8c64 */ 0xffff, /* 8c65 */ 0xffff, /* 8c66 */ 0xffff, /* 8c67 */ 0xffff, /* 8c68 */ 0xffff, /* 8c69 */ 0xffff, /* 8c6a */ 0xffff, /* 8c6b */ 0xffff, /* 8c6c */ 0xffff, /* 8c6d */ 0xffff, /* 8c6e */ 0xffff, /* 8c6f */ 0xffff, /* 8c70 */ 0xffff, /* 8c71 */ 0xffff, /* 8c72 */ 0xffff, /* 8c73 */ 0xffff, /* 8c74 */ 0xffff, /* 8c75 */ 0xffff, /* 8c76 */ 0xffff, /* 8c77 */ 0xffff, /* 8c78 */ 0xffff, /* 8c79 */ 0xffff, /* 8c7a */ 0xffff, /* 8c7b */ 0xffff, /* 8c7c */ 0xffff, /* 8c7d */ 0xffff, /* 8c7e */ 0xffff, /* 8c7f */ 0xffff, /* 8c80 */ 0xffff, /* 8c81 */ 0xffff, /* 8c82 */ 0xffff, /* 8c83 */ 0xffff, /* 8c84 */ 0xffff, /* 8c85 */ 0xffff, /* 8c86 */ 0xffff, /* 8c87 */ 0xffff, /* 8c88 */ 0xffff, /* 8c89 */ 0xffff, /* 8c8a */ 0xffff, /* 8c8b */ 0xffff, /* 8c8c */ 0xffff, /* 8c8d */ 0xffff, /* 8c8e */ 0xffff, /* 8c8f */ 0xffff, /* 8c90 */ 0xffff, /* 8c91 */ 0xffff, /* 8c92 */ 0xffff, /* 8c93 */ 0xffff, /* 8c94 */ 0xffff, /* 8c95 */ 0xffff, /* 8c96 */ 0xffff, /* 8c97 */ 0xffff, /* 8c98 */ 0xffff, /* 8c99 */ 0xffff, /* 8c9a */ 0xffff, /* 8c9b */ 0xffff, /* 8c9c */ 0xffff, /* 8c9d */ 0xffff, /* 8c9e */ 0xffff, /* 8c9f */ 0xffff, /* 8ca0 */ 0xffff, /* 8ca1 */ 0xffff, /* 8ca2 */ 0xffff, /* 8ca3 */ 0xffff, /* 8ca4 */ 0xffff, /* 8ca5 */ 0xffff, /* 8ca6 */ 0xffff, /* 8ca7 */ 0xffff, /* 8ca8 */ 0xffff, /* 8ca9 */ 0xffff, /* 8caa */ 0xffff, /* 8cab */ 0xffff, /* 8cac */ 0xffff, /* 8cad */ 0xffff, /* 8cae */ 0xffff, /* 8caf */ 0xffff, /* 8cb0 */ 0xffff, /* 8cb1 */ 0xffff, /* 8cb2 */ 0xffff, /* 8cb3 */ 0xffff, /* 8cb4 */ 0xffff, /* 8cb5 */ 0xffff, /* 8cb6 */ 0xffff, /* 8cb7 */ 0xffff, /* 8cb8 */ 0xffff, /* 8cb9 */ 0xffff, /* 8cba */ 0xffff, /* 8cbb */ 0xffff, /* 8cbc */ 0xffff, /* 8cbd */ 0xffff, /* 8cbe */ 0xffff, /* 8cbf */ 0xffff, /* 8cc0 */ 0xffff, /* 8cc1 */ 0xffff, /* 8cc2 */ 0xffff, /* 8cc3 */ 0xffff, /* 8cc4 */ 0xffff, /* 8cc5 */ 0xffff, /* 8cc6 */ 0xffff, /* 8cc7 */ 0xffff, /* 8cc8 */ 0xffff, /* 8cc9 */ 0xffff, /* 8cca */ 0xffff, /* 8ccb */ 0xffff, /* 8ccc */ 0xffff, /* 8ccd */ 0xffff, /* 8cce */ 0xffff, /* 8ccf */ 0xffff, /* 8cd0 */ 0xffff, /* 8cd1 */ 0xffff, /* 8cd2 */ 0xffff, /* 8cd3 */ 0xffff, /* 8cd4 */ 0xffff, /* 8cd5 */ 0xffff, /* 8cd6 */ 0xffff, /* 8cd7 */ 0xffff, /* 8cd8 */ 0xffff, /* 8cd9 */ 0xffff, /* 8cda */ 0xffff, /* 8cdb */ 0xffff, /* 8cdc */ 0xffff, /* 8cdd */ 0xffff, /* 8cde */ 0xffff, /* 8cdf */ 0xffff, /* 8ce0 */ 0xffff, /* 8ce1 */ 0xffff, /* 8ce2 */ 0xffff, /* 8ce3 */ 0xffff, /* 8ce4 */ 0xffff, /* 8ce5 */ 0xffff, /* 8ce6 */ 0xffff, /* 8ce7 */ 0xffff, /* 8ce8 */ 0xffff, /* 8ce9 */ 0xffff, /* 8cea */ 0xffff, /* 8ceb */ 0xffff, /* 8cec */ 0xffff, /* 8ced */ 0xffff, /* 8cee */ 0xffff, /* 8cef */ 0xffff, /* 8cf0 */ 0xffff, /* 8cf1 */ 0xffff, /* 8cf2 */ 0xffff, /* 8cf3 */ 0xffff, /* 8cf4 */ 0xffff, /* 8cf5 */ 0xffff, /* 8cf6 */ 0xffff, /* 8cf7 */ 0xffff, /* 8cf8 */ 0xffff, /* 8cf9 */ 0xffff, /* 8cfa */ 0xffff, /* 8cfb */ 0xffff, /* 8cfc */ 0xffff, /* 8cfd */ 0xffff, /* 8cfe */ 0xffff, /* 8cff */ 0xffff, /* 8d00 */ 0xffff, /* 8d01 */ 0xffff, /* 8d02 */ 0xffff, /* 8d03 */ 0xffff, /* 8d04 */ 0xffff, /* 8d05 */ 0xffff, /* 8d06 */ 0xffff, /* 8d07 */ 0xffff, /* 8d08 */ 0xffff, /* 8d09 */ 0xffff, /* 8d0a */ 0xffff, /* 8d0b */ 0xffff, /* 8d0c */ 0xffff, /* 8d0d */ 0xffff, /* 8d0e */ 0xffff, /* 8d0f */ 0xffff, /* 8d10 */ 0xffff, /* 8d11 */ 0xffff, /* 8d12 */ 0xffff, /* 8d13 */ 0xffff, /* 8d14 */ 0xffff, /* 8d15 */ 0xffff, /* 8d16 */ 0xffff, /* 8d17 */ 0xffff, /* 8d18 */ 0xffff, /* 8d19 */ 0xffff, /* 8d1a */ 0xffff, /* 8d1b */ 0xffff, /* 8d1c */ 0xffff, /* 8d1d */ 0xffff, /* 8d1e */ 0xffff, /* 8d1f */ 0xffff, /* 8d20 */ 0xffff, /* 8d21 */ 0xffff, /* 8d22 */ 0xffff, /* 8d23 */ 0xffff, /* 8d24 */ 0xffff, /* 8d25 */ 0xffff, /* 8d26 */ 0xffff, /* 8d27 */ 0xffff, /* 8d28 */ 0xffff, /* 8d29 */ 0xffff, /* 8d2a */ 0xffff, /* 8d2b */ 0xffff, /* 8d2c */ 0xffff, /* 8d2d */ 0xffff, /* 8d2e */ 0xffff, /* 8d2f */ 0xffff, /* 8d30 */ 0xffff, /* 8d31 */ 0xffff, /* 8d32 */ 0xffff, /* 8d33 */ 0xffff, /* 8d34 */ 0xffff, /* 8d35 */ 0xffff, /* 8d36 */ 0xffff, /* 8d37 */ 0xffff, /* 8d38 */ 0xffff, /* 8d39 */ 0xffff, /* 8d3a */ 0xffff, /* 8d3b */ 0xffff, /* 8d3c */ 0xffff, /* 8d3d */ 0xffff, /* 8d3e */ 0xffff, /* 8d3f */ 0xffff, /* 8d40 */ 0xffff, /* 8d41 */ 0xffff, /* 8d42 */ 0xffff, /* 8d43 */ 0xffff, /* 8d44 */ 0xffff, /* 8d45 */ 0xffff, /* 8d46 */ 0xffff, /* 8d47 */ 0xffff, /* 8d48 */ 0xffff, /* 8d49 */ 0xffff, /* 8d4a */ 0xffff, /* 8d4b */ 0xffff, /* 8d4c */ 0xffff, /* 8d4d */ 0xffff, /* 8d4e */ 0xffff, /* 8d4f */ 0xffff, /* 8d50 */ 0xffff, /* 8d51 */ 0xffff, /* 8d52 */ 0xffff, /* 8d53 */ 0xffff, /* 8d54 */ 0xffff, /* 8d55 */ 0xffff, /* 8d56 */ 0xffff, /* 8d57 */ 0xffff, /* 8d58 */ 0xffff, /* 8d59 */ 0xffff, /* 8d5a */ 0xffff, /* 8d5b */ 0xffff, /* 8d5c */ 0xffff, /* 8d5d */ 0xffff, /* 8d5e */ 0xffff, /* 8d5f */ 0xffff, /* 8d60 */ 0xffff, /* 8d61 */ 0xffff, /* 8d62 */ 0xffff, /* 8d63 */ 0xffff, /* 8d64 */ 0xffff, /* 8d65 */ 0xffff, /* 8d66 */ 0xffff, /* 8d67 */ 0xffff, /* 8d68 */ 0xffff, /* 8d69 */ 0xffff, /* 8d6a */ 0xffff, /* 8d6b */ 0xffff, /* 8d6c */ 0xffff, /* 8d6d */ 0xffff, /* 8d6e */ 0xffff, /* 8d6f */ 0xffff, /* 8d70 */ 0xffff, /* 8d71 */ 0xffff, /* 8d72 */ 0xffff, /* 8d73 */ 0xffff, /* 8d74 */ 0xffff, /* 8d75 */ 0xffff, /* 8d76 */ 0xffff, /* 8d77 */ 0xffff, /* 8d78 */ 0xffff, /* 8d79 */ 0xffff, /* 8d7a */ 0xffff, /* 8d7b */ 0xffff, /* 8d7c */ 0xffff, /* 8d7d */ 0xffff, /* 8d7e */ 0xffff, /* 8d7f */ 0xffff, /* 8d80 */ 0xffff, /* 8d81 */ 0xffff, /* 8d82 */ 0xffff, /* 8d83 */ 0xffff, /* 8d84 */ 0xffff, /* 8d85 */ 0xffff, /* 8d86 */ 0xffff, /* 8d87 */ 0xffff, /* 8d88 */ 0xffff, /* 8d89 */ 0xffff, /* 8d8a */ 0xffff, /* 8d8b */ 0xffff, /* 8d8c */ 0xffff, /* 8d8d */ 0xffff, /* 8d8e */ 0xffff, /* 8d8f */ 0xffff, /* 8d90 */ 0xffff, /* 8d91 */ 0xffff, /* 8d92 */ 0xffff, /* 8d93 */ 0xffff, /* 8d94 */ 0xffff, /* 8d95 */ 0xffff, /* 8d96 */ 0xffff, /* 8d97 */ 0xffff, /* 8d98 */ 0xffff, /* 8d99 */ 0xffff, /* 8d9a */ 0xffff, /* 8d9b */ 0xffff, /* 8d9c */ 0xffff, /* 8d9d */ 0xffff, /* 8d9e */ 0xffff, /* 8d9f */ 0xffff, /* 8da0 */ 0xffff, /* 8da1 */ 0xffff, /* 8da2 */ 0xffff, /* 8da3 */ 0xffff, /* 8da4 */ 0xffff, /* 8da5 */ 0xffff, /* 8da6 */ 0xffff, /* 8da7 */ 0xffff, /* 8da8 */ 0xffff, /* 8da9 */ 0xffff, /* 8daa */ 0xffff, /* 8dab */ 0xffff, /* 8dac */ 0xffff, /* 8dad */ 0xffff, /* 8dae */ 0xffff, /* 8daf */ 0xffff, /* 8db0 */ 0xffff, /* 8db1 */ 0xffff, /* 8db2 */ 0xffff, /* 8db3 */ 0xffff, /* 8db4 */ 0xffff, /* 8db5 */ 0xffff, /* 8db6 */ 0xffff, /* 8db7 */ 0xffff, /* 8db8 */ 0xffff, /* 8db9 */ 0xffff, /* 8dba */ 0xffff, /* 8dbb */ 0xffff, /* 8dbc */ 0xffff, /* 8dbd */ 0xffff, /* 8dbe */ 0xffff, /* 8dbf */ 0xffff, /* 8dc0 */ 0xffff, /* 8dc1 */ 0xffff, /* 8dc2 */ 0xffff, /* 8dc3 */ 0xffff, /* 8dc4 */ 0xffff, /* 8dc5 */ 0xffff, /* 8dc6 */ 0xffff, /* 8dc7 */ 0xffff, /* 8dc8 */ 0xffff, /* 8dc9 */ 0xffff, /* 8dca */ 0xffff, /* 8dcb */ 0xffff, /* 8dcc */ 0xffff, /* 8dcd */ 0xffff, /* 8dce */ 0xffff, /* 8dcf */ 0xffff, /* 8dd0 */ 0xffff, /* 8dd1 */ 0xffff, /* 8dd2 */ 0xffff, /* 8dd3 */ 0xffff, /* 8dd4 */ 0xffff, /* 8dd5 */ 0xffff, /* 8dd6 */ 0xffff, /* 8dd7 */ 0xffff, /* 8dd8 */ 0xffff, /* 8dd9 */ 0xffff, /* 8dda */ 0xffff, /* 8ddb */ 0xffff, /* 8ddc */ 0xffff, /* 8ddd */ 0xffff, /* 8dde */ 0xffff, /* 8ddf */ 0xffff, /* 8de0 */ 0xffff, /* 8de1 */ 0xffff, /* 8de2 */ 0xffff, /* 8de3 */ 0xffff, /* 8de4 */ 0xffff, /* 8de5 */ 0xffff, /* 8de6 */ 0xffff, /* 8de7 */ 0xffff, /* 8de8 */ 0xffff, /* 8de9 */ 0xffff, /* 8dea */ 0xffff, /* 8deb */ 0xffff, /* 8dec */ 0xffff, /* 8ded */ 0xffff, /* 8dee */ 0xffff, /* 8def */ 0xffff, /* 8df0 */ 0xffff, /* 8df1 */ 0xffff, /* 8df2 */ 0xffff, /* 8df3 */ 0xffff, /* 8df4 */ 0xffff, /* 8df5 */ 0xffff, /* 8df6 */ 0xffff, /* 8df7 */ 0xffff, /* 8df8 */ 0xffff, /* 8df9 */ 0xffff, /* 8dfa */ 0xffff, /* 8dfb */ 0xffff, /* 8dfc */ 0xffff, /* 8dfd */ 0xffff, /* 8dfe */ 0xffff, /* 8dff */ 0xffff, /* 8e00 */ 0xffff, /* 8e01 */ 0xffff, /* 8e02 */ 0xffff, /* 8e03 */ 0xffff, /* 8e04 */ 0xffff, /* 8e05 */ 0xffff, /* 8e06 */ 0xffff, /* 8e07 */ 0xffff, /* 8e08 */ 0xffff, /* 8e09 */ 0xffff, /* 8e0a */ 0xffff, /* 8e0b */ 0xffff, /* 8e0c */ 0xffff, /* 8e0d */ 0xffff, /* 8e0e */ 0xffff, /* 8e0f */ 0xffff, /* 8e10 */ 0xffff, /* 8e11 */ 0xffff, /* 8e12 */ 0xffff, /* 8e13 */ 0xffff, /* 8e14 */ 0xffff, /* 8e15 */ 0xffff, /* 8e16 */ 0xffff, /* 8e17 */ 0xffff, /* 8e18 */ 0xffff, /* 8e19 */ 0xffff, /* 8e1a */ 0xffff, /* 8e1b */ 0xffff, /* 8e1c */ 0xffff, /* 8e1d */ 0xffff, /* 8e1e */ 0xffff, /* 8e1f */ 0xffff, /* 8e20 */ 0xffff, /* 8e21 */ 0xffff, /* 8e22 */ 0xffff, /* 8e23 */ 0xffff, /* 8e24 */ 0xffff, /* 8e25 */ 0xffff, /* 8e26 */ 0xffff, /* 8e27 */ 0xffff, /* 8e28 */ 0xffff, /* 8e29 */ 0xffff, /* 8e2a */ 0xffff, /* 8e2b */ 0xffff, /* 8e2c */ 0xffff, /* 8e2d */ 0xffff, /* 8e2e */ 0xffff, /* 8e2f */ 0xffff, /* 8e30 */ 0xffff, /* 8e31 */ 0xffff, /* 8e32 */ 0xffff, /* 8e33 */ 0xffff, /* 8e34 */ 0xffff, /* 8e35 */ 0xffff, /* 8e36 */ 0xffff, /* 8e37 */ 0xffff, /* 8e38 */ 0xffff, /* 8e39 */ 0xffff, /* 8e3a */ 0xffff, /* 8e3b */ 0xffff, /* 8e3c */ 0xffff, /* 8e3d */ 0xffff, /* 8e3e */ 0xffff, /* 8e3f */ 0xffff, /* 8e40 */ 0xffff, /* 8e41 */ 0xffff, /* 8e42 */ 0xffff, /* 8e43 */ 0xffff, /* 8e44 */ 0xffff, /* 8e45 */ 0xffff, /* 8e46 */ 0xffff, /* 8e47 */ 0xffff, /* 8e48 */ 0xffff, /* 8e49 */ 0xffff, /* 8e4a */ 0xffff, /* 8e4b */ 0xffff, /* 8e4c */ 0xffff, /* 8e4d */ 0xffff, /* 8e4e */ 0xffff, /* 8e4f */ 0xffff, /* 8e50 */ 0xffff, /* 8e51 */ 0xffff, /* 8e52 */ 0xffff, /* 8e53 */ 0xffff, /* 8e54 */ 0xffff, /* 8e55 */ 0xffff, /* 8e56 */ 0xffff, /* 8e57 */ 0xffff, /* 8e58 */ 0xffff, /* 8e59 */ 0xffff, /* 8e5a */ 0xffff, /* 8e5b */ 0xffff, /* 8e5c */ 0xffff, /* 8e5d */ 0xffff, /* 8e5e */ 0xffff, /* 8e5f */ 0xffff, /* 8e60 */ 0xffff, /* 8e61 */ 0xffff, /* 8e62 */ 0xffff, /* 8e63 */ 0xffff, /* 8e64 */ 0xffff, /* 8e65 */ 0xffff, /* 8e66 */ 0xffff, /* 8e67 */ 0xffff, /* 8e68 */ 0xffff, /* 8e69 */ 0xffff, /* 8e6a */ 0xffff, /* 8e6b */ 0xffff, /* 8e6c */ 0xffff, /* 8e6d */ 0xffff, /* 8e6e */ 0xffff, /* 8e6f */ 0xffff, /* 8e70 */ 0xffff, /* 8e71 */ 0xffff, /* 8e72 */ 0xffff, /* 8e73 */ 0xffff, /* 8e74 */ 0xffff, /* 8e75 */ 0xffff, /* 8e76 */ 0xffff, /* 8e77 */ 0xffff, /* 8e78 */ 0xffff, /* 8e79 */ 0xffff, /* 8e7a */ 0xffff, /* 8e7b */ 0xffff, /* 8e7c */ 0xffff, /* 8e7d */ 0xffff, /* 8e7e */ 0xffff, /* 8e7f */ 0xffff, /* 8e80 */ 0xffff, /* 8e81 */ 0xffff, /* 8e82 */ 0xffff, /* 8e83 */ 0xffff, /* 8e84 */ 0xffff, /* 8e85 */ 0xffff, /* 8e86 */ 0xffff, /* 8e87 */ 0xffff, /* 8e88 */ 0xffff, /* 8e89 */ 0xffff, /* 8e8a */ 0xffff, /* 8e8b */ 0xffff, /* 8e8c */ 0xffff, /* 8e8d */ 0xffff, /* 8e8e */ 0xffff, /* 8e8f */ 0xffff, /* 8e90 */ 0xffff, /* 8e91 */ 0xffff, /* 8e92 */ 0xffff, /* 8e93 */ 0xffff, /* 8e94 */ 0xffff, /* 8e95 */ 0xffff, /* 8e96 */ 0xffff, /* 8e97 */ 0xffff, /* 8e98 */ 0xffff, /* 8e99 */ 0xffff, /* 8e9a */ 0xffff, /* 8e9b */ 0xffff, /* 8e9c */ 0xffff, /* 8e9d */ 0xffff, /* 8e9e */ 0xffff, /* 8e9f */ 0xffff, /* 8ea0 */ 0xffff, /* 8ea1 */ 0xffff, /* 8ea2 */ 0xffff, /* 8ea3 */ 0xffff, /* 8ea4 */ 0xffff, /* 8ea5 */ 0xffff, /* 8ea6 */ 0xffff, /* 8ea7 */ 0xffff, /* 8ea8 */ 0xffff, /* 8ea9 */ 0xffff, /* 8eaa */ 0xffff, /* 8eab */ 0xffff, /* 8eac */ 0xffff, /* 8ead */ 0xffff, /* 8eae */ 0xffff, /* 8eaf */ 0xffff, /* 8eb0 */ 0xffff, /* 8eb1 */ 0xffff, /* 8eb2 */ 0xffff, /* 8eb3 */ 0xffff, /* 8eb4 */ 0xffff, /* 8eb5 */ 0xffff, /* 8eb6 */ 0xffff, /* 8eb7 */ 0xffff, /* 8eb8 */ 0xffff, /* 8eb9 */ 0xffff, /* 8eba */ 0xffff, /* 8ebb */ 0xffff, /* 8ebc */ 0xffff, /* 8ebd */ 0xffff, /* 8ebe */ 0xffff, /* 8ebf */ 0xffff, /* 8ec0 */ 0xffff, /* 8ec1 */ 0xffff, /* 8ec2 */ 0xffff, /* 8ec3 */ 0xffff, /* 8ec4 */ 0xffff, /* 8ec5 */ 0xffff, /* 8ec6 */ 0xffff, /* 8ec7 */ 0xffff, /* 8ec8 */ 0xffff, /* 8ec9 */ 0xffff, /* 8eca */ 0xffff, /* 8ecb */ 0xffff, /* 8ecc */ 0xffff, /* 8ecd */ 0xffff, /* 8ece */ 0xffff, /* 8ecf */ 0xffff, /* 8ed0 */ 0xffff, /* 8ed1 */ 0xffff, /* 8ed2 */ 0xffff, /* 8ed3 */ 0xffff, /* 8ed4 */ 0xffff, /* 8ed5 */ 0xffff, /* 8ed6 */ 0xffff, /* 8ed7 */ 0xffff, /* 8ed8 */ 0xffff, /* 8ed9 */ 0xffff, /* 8eda */ 0xffff, /* 8edb */ 0xffff, /* 8edc */ 0xffff, /* 8edd */ 0xffff, /* 8ede */ 0xffff, /* 8edf */ 0xffff, /* 8ee0 */ 0xffff, /* 8ee1 */ 0xffff, /* 8ee2 */ 0xffff, /* 8ee3 */ 0xffff, /* 8ee4 */ 0xffff, /* 8ee5 */ 0xffff, /* 8ee6 */ 0xffff, /* 8ee7 */ 0xffff, /* 8ee8 */ 0xffff, /* 8ee9 */ 0xffff, /* 8eea */ 0xffff, /* 8eeb */ 0xffff, /* 8eec */ 0xffff, /* 8eed */ 0xffff, /* 8eee */ 0xffff, /* 8eef */ 0xffff, /* 8ef0 */ 0xffff, /* 8ef1 */ 0xffff, /* 8ef2 */ 0xffff, /* 8ef3 */ 0xffff, /* 8ef4 */ 0xffff, /* 8ef5 */ 0xffff, /* 8ef6 */ 0xffff, /* 8ef7 */ 0xffff, /* 8ef8 */ 0xffff, /* 8ef9 */ 0xffff, /* 8efa */ 0xffff, /* 8efb */ 0xffff, /* 8efc */ 0xffff, /* 8efd */ 0xffff, /* 8efe */ 0xffff, /* 8eff */ 0xffff, /* 8f00 */ 0xffff, /* 8f01 */ 0xffff, /* 8f02 */ 0xffff, /* 8f03 */ 0xffff, /* 8f04 */ 0xffff, /* 8f05 */ 0xffff, /* 8f06 */ 0xffff, /* 8f07 */ 0xffff, /* 8f08 */ 0xffff, /* 8f09 */ 0xffff, /* 8f0a */ 0xffff, /* 8f0b */ 0xffff, /* 8f0c */ 0xffff, /* 8f0d */ 0xffff, /* 8f0e */ 0xffff, /* 8f0f */ 0xffff, /* 8f10 */ 0xffff, /* 8f11 */ 0xffff, /* 8f12 */ 0xffff, /* 8f13 */ 0xffff, /* 8f14 */ 0xffff, /* 8f15 */ 0xffff, /* 8f16 */ 0xffff, /* 8f17 */ 0xffff, /* 8f18 */ 0xffff, /* 8f19 */ 0xffff, /* 8f1a */ 0xffff, /* 8f1b */ 0xffff, /* 8f1c */ 0xffff, /* 8f1d */ 0xffff, /* 8f1e */ 0xffff, /* 8f1f */ 0xffff, /* 8f20 */ 0xffff, /* 8f21 */ 0xffff, /* 8f22 */ 0xffff, /* 8f23 */ 0xffff, /* 8f24 */ 0xffff, /* 8f25 */ 0xffff, /* 8f26 */ 0xffff, /* 8f27 */ 0xffff, /* 8f28 */ 0xffff, /* 8f29 */ 0xffff, /* 8f2a */ 0xffff, /* 8f2b */ 0xffff, /* 8f2c */ 0xffff, /* 8f2d */ 0xffff, /* 8f2e */ 0xffff, /* 8f2f */ 0xffff, /* 8f30 */ 0xffff, /* 8f31 */ 0xffff, /* 8f32 */ 0xffff, /* 8f33 */ 0xffff, /* 8f34 */ 0xffff, /* 8f35 */ 0xffff, /* 8f36 */ 0xffff, /* 8f37 */ 0xffff, /* 8f38 */ 0xffff, /* 8f39 */ 0xffff, /* 8f3a */ 0xffff, /* 8f3b */ 0xffff, /* 8f3c */ 0xffff, /* 8f3d */ 0xffff, /* 8f3e */ 0xffff, /* 8f3f */ 0xffff, /* 8f40 */ 0xffff, /* 8f41 */ 0xffff, /* 8f42 */ 0xffff, /* 8f43 */ 0xffff, /* 8f44 */ 0xffff, /* 8f45 */ 0xffff, /* 8f46 */ 0xffff, /* 8f47 */ 0xffff, /* 8f48 */ 0xffff, /* 8f49 */ 0xffff, /* 8f4a */ 0xffff, /* 8f4b */ 0xffff, /* 8f4c */ 0xffff, /* 8f4d */ 0xffff, /* 8f4e */ 0xffff, /* 8f4f */ 0xffff, /* 8f50 */ 0xffff, /* 8f51 */ 0xffff, /* 8f52 */ 0xffff, /* 8f53 */ 0xffff, /* 8f54 */ 0xffff, /* 8f55 */ 0xffff, /* 8f56 */ 0xffff, /* 8f57 */ 0xffff, /* 8f58 */ 0xffff, /* 8f59 */ 0xffff, /* 8f5a */ 0xffff, /* 8f5b */ 0xffff, /* 8f5c */ 0xffff, /* 8f5d */ 0xffff, /* 8f5e */ 0xffff, /* 8f5f */ 0xffff, /* 8f60 */ 0xffff, /* 8f61 */ 0xffff, /* 8f62 */ 0xffff, /* 8f63 */ 0xffff, /* 8f64 */ 0xffff, /* 8f65 */ 0xffff, /* 8f66 */ 0xffff, /* 8f67 */ 0xffff, /* 8f68 */ 0xffff, /* 8f69 */ 0xffff, /* 8f6a */ 0xffff, /* 8f6b */ 0xffff, /* 8f6c */ 0xffff, /* 8f6d */ 0xffff, /* 8f6e */ 0xffff, /* 8f6f */ 0xffff, /* 8f70 */ 0xffff, /* 8f71 */ 0xffff, /* 8f72 */ 0xffff, /* 8f73 */ 0xffff, /* 8f74 */ 0xffff, /* 8f75 */ 0xffff, /* 8f76 */ 0xffff, /* 8f77 */ 0xffff, /* 8f78 */ 0xffff, /* 8f79 */ 0xffff, /* 8f7a */ 0xffff, /* 8f7b */ 0xffff, /* 8f7c */ 0xffff, /* 8f7d */ 0xffff, /* 8f7e */ 0xffff, /* 8f7f */ 0xffff, /* 8f80 */ 0xffff, /* 8f81 */ 0xffff, /* 8f82 */ 0xffff, /* 8f83 */ 0xffff, /* 8f84 */ 0xffff, /* 8f85 */ 0xffff, /* 8f86 */ 0xffff, /* 8f87 */ 0xffff, /* 8f88 */ 0xffff, /* 8f89 */ 0xffff, /* 8f8a */ 0xffff, /* 8f8b */ 0xffff, /* 8f8c */ 0xffff, /* 8f8d */ 0xffff, /* 8f8e */ 0xffff, /* 8f8f */ 0xffff, /* 8f90 */ 0xffff, /* 8f91 */ 0xffff, /* 8f92 */ 0xffff, /* 8f93 */ 0xffff, /* 8f94 */ 0xffff, /* 8f95 */ 0xffff, /* 8f96 */ 0xffff, /* 8f97 */ 0xffff, /* 8f98 */ 0xffff, /* 8f99 */ 0xffff, /* 8f9a */ 0xffff, /* 8f9b */ 0xffff, /* 8f9c */ 0xffff, /* 8f9d */ 0xffff, /* 8f9e */ 0xffff, /* 8f9f */ 0xffff, /* 8fa0 */ 0xffff, /* 8fa1 */ 0xffff, /* 8fa2 */ 0xffff, /* 8fa3 */ 0xffff, /* 8fa4 */ 0xffff, /* 8fa5 */ 0xffff, /* 8fa6 */ 0xffff, /* 8fa7 */ 0xffff, /* 8fa8 */ 0xffff, /* 8fa9 */ 0xffff, /* 8faa */ 0xffff, /* 8fab */ 0xffff, /* 8fac */ 0xffff, /* 8fad */ 0xffff, /* 8fae */ 0xffff, /* 8faf */ 0xffff, /* 8fb0 */ 0xffff, /* 8fb1 */ 0xffff, /* 8fb2 */ 0xffff, /* 8fb3 */ 0xffff, /* 8fb4 */ 0xffff, /* 8fb5 */ 0xffff, /* 8fb6 */ 0xffff, /* 8fb7 */ 0xffff, /* 8fb8 */ 0xffff, /* 8fb9 */ 0xffff, /* 8fba */ 0xffff, /* 8fbb */ 0xffff, /* 8fbc */ 0xffff, /* 8fbd */ 0xffff, /* 8fbe */ 0xffff, /* 8fbf */ 0xffff, /* 8fc0 */ 0xffff, /* 8fc1 */ 0xffff, /* 8fc2 */ 0xffff, /* 8fc3 */ 0xffff, /* 8fc4 */ 0xffff, /* 8fc5 */ 0xffff, /* 8fc6 */ 0xffff, /* 8fc7 */ 0xffff, /* 8fc8 */ 0xffff, /* 8fc9 */ 0xffff, /* 8fca */ 0xffff, /* 8fcb */ 0xffff, /* 8fcc */ 0xffff, /* 8fcd */ 0xffff, /* 8fce */ 0xffff, /* 8fcf */ 0xffff, /* 8fd0 */ 0xffff, /* 8fd1 */ 0xffff, /* 8fd2 */ 0xffff, /* 8fd3 */ 0xffff, /* 8fd4 */ 0xffff, /* 8fd5 */ 0xffff, /* 8fd6 */ 0xffff, /* 8fd7 */ 0xffff, /* 8fd8 */ 0xffff, /* 8fd9 */ 0xffff, /* 8fda */ 0xffff, /* 8fdb */ 0xffff, /* 8fdc */ 0xffff, /* 8fdd */ 0xffff, /* 8fde */ 0xffff, /* 8fdf */ 0xffff, /* 8fe0 */ 0xffff, /* 8fe1 */ 0xffff, /* 8fe2 */ 0xffff, /* 8fe3 */ 0xffff, /* 8fe4 */ 0xffff, /* 8fe5 */ 0xffff, /* 8fe6 */ 0xffff, /* 8fe7 */ 0xffff, /* 8fe8 */ 0xffff, /* 8fe9 */ 0xffff, /* 8fea */ 0xffff, /* 8feb */ 0xffff, /* 8fec */ 0xffff, /* 8fed */ 0xffff, /* 8fee */ 0xffff, /* 8fef */ 0xffff, /* 8ff0 */ 0xffff, /* 8ff1 */ 0xffff, /* 8ff2 */ 0xffff, /* 8ff3 */ 0xffff, /* 8ff4 */ 0xffff, /* 8ff5 */ 0xffff, /* 8ff6 */ 0xffff, /* 8ff7 */ 0xffff, /* 8ff8 */ 0xffff, /* 8ff9 */ 0xffff, /* 8ffa */ 0xffff, /* 8ffb */ 0xffff, /* 8ffc */ 0xffff, /* 8ffd */ 0xffff, /* 8ffe */ 0xffff, /* 8fff */ 0xffff, /* 9000 */ 0xffff, /* 9001 */ 0xffff, /* 9002 */ 0xffff, /* 9003 */ 0xffff, /* 9004 */ 0xffff, /* 9005 */ 0xffff, /* 9006 */ 0xffff, /* 9007 */ 0xffff, /* 9008 */ 0xffff, /* 9009 */ 0xffff, /* 900a */ 0xffff, /* 900b */ 0xffff, /* 900c */ 0xffff, /* 900d */ 0xffff, /* 900e */ 0xffff, /* 900f */ 0xffff, /* 9010 */ 0xffff, /* 9011 */ 0xffff, /* 9012 */ 0xffff, /* 9013 */ 0xffff, /* 9014 */ 0xffff, /* 9015 */ 0xffff, /* 9016 */ 0xffff, /* 9017 */ 0xffff, /* 9018 */ 0xffff, /* 9019 */ 0xffff, /* 901a */ 0xffff, /* 901b */ 0xffff, /* 901c */ 0xffff, /* 901d */ 0xffff, /* 901e */ 0xffff, /* 901f */ 0xffff, /* 9020 */ 0xffff, /* 9021 */ 0xffff, /* 9022 */ 0xffff, /* 9023 */ 0xffff, /* 9024 */ 0xffff, /* 9025 */ 0xffff, /* 9026 */ 0xffff, /* 9027 */ 0xffff, /* 9028 */ 0xffff, /* 9029 */ 0xffff, /* 902a */ 0xffff, /* 902b */ 0xffff, /* 902c */ 0xffff, /* 902d */ 0xffff, /* 902e */ 0xffff, /* 902f */ 0xffff, /* 9030 */ 0xffff, /* 9031 */ 0xffff, /* 9032 */ 0xffff, /* 9033 */ 0xffff, /* 9034 */ 0xffff, /* 9035 */ 0xffff, /* 9036 */ 0xffff, /* 9037 */ 0xffff, /* 9038 */ 0xffff, /* 9039 */ 0xffff, /* 903a */ 0xffff, /* 903b */ 0xffff, /* 903c */ 0xffff, /* 903d */ 0xffff, /* 903e */ 0xffff, /* 903f */ 0xffff, /* 9040 */ 0xffff, /* 9041 */ 0xffff, /* 9042 */ 0xffff, /* 9043 */ 0xffff, /* 9044 */ 0xffff, /* 9045 */ 0xffff, /* 9046 */ 0xffff, /* 9047 */ 0xffff, /* 9048 */ 0xffff, /* 9049 */ 0xffff, /* 904a */ 0xffff, /* 904b */ 0xffff, /* 904c */ 0xffff, /* 904d */ 0xffff, /* 904e */ 0xffff, /* 904f */ 0xffff, /* 9050 */ 0xffff, /* 9051 */ 0xffff, /* 9052 */ 0xffff, /* 9053 */ 0xffff, /* 9054 */ 0xffff, /* 9055 */ 0xffff, /* 9056 */ 0xffff, /* 9057 */ 0xffff, /* 9058 */ 0xffff, /* 9059 */ 0xffff, /* 905a */ 0xffff, /* 905b */ 0xffff, /* 905c */ 0xffff, /* 905d */ 0xffff, /* 905e */ 0xffff, /* 905f */ 0xffff, /* 9060 */ 0xffff, /* 9061 */ 0xffff, /* 9062 */ 0xffff, /* 9063 */ 0xffff, /* 9064 */ 0xffff, /* 9065 */ 0xffff, /* 9066 */ 0xffff, /* 9067 */ 0xffff, /* 9068 */ 0xffff, /* 9069 */ 0xffff, /* 906a */ 0xffff, /* 906b */ 0xffff, /* 906c */ 0xffff, /* 906d */ 0xffff, /* 906e */ 0xffff, /* 906f */ 0xffff, /* 9070 */ 0xffff, /* 9071 */ 0xffff, /* 9072 */ 0xffff, /* 9073 */ 0xffff, /* 9074 */ 0xffff, /* 9075 */ 0xffff, /* 9076 */ 0xffff, /* 9077 */ 0xffff, /* 9078 */ 0xffff, /* 9079 */ 0xffff, /* 907a */ 0xffff, /* 907b */ 0xffff, /* 907c */ 0xffff, /* 907d */ 0xffff, /* 907e */ 0xffff, /* 907f */ 0xffff, /* 9080 */ 0xffff, /* 9081 */ 0xffff, /* 9082 */ 0xffff, /* 9083 */ 0xffff, /* 9084 */ 0xffff, /* 9085 */ 0xffff, /* 9086 */ 0xffff, /* 9087 */ 0xffff, /* 9088 */ 0xffff, /* 9089 */ 0xffff, /* 908a */ 0xffff, /* 908b */ 0xffff, /* 908c */ 0xffff, /* 908d */ 0xffff, /* 908e */ 0xffff, /* 908f */ 0xffff, /* 9090 */ 0xffff, /* 9091 */ 0xffff, /* 9092 */ 0xffff, /* 9093 */ 0xffff, /* 9094 */ 0xffff, /* 9095 */ 0xffff, /* 9096 */ 0xffff, /* 9097 */ 0xffff, /* 9098 */ 0xffff, /* 9099 */ 0xffff, /* 909a */ 0xffff, /* 909b */ 0xffff, /* 909c */ 0xffff, /* 909d */ 0xffff, /* 909e */ 0xffff, /* 909f */ 0xffff, /* 90a0 */ 0xffff, /* 90a1 */ 0xffff, /* 90a2 */ 0xffff, /* 90a3 */ 0xffff, /* 90a4 */ 0xffff, /* 90a5 */ 0xffff, /* 90a6 */ 0xffff, /* 90a7 */ 0xffff, /* 90a8 */ 0xffff, /* 90a9 */ 0xffff, /* 90aa */ 0xffff, /* 90ab */ 0xffff, /* 90ac */ 0xffff, /* 90ad */ 0xffff, /* 90ae */ 0xffff, /* 90af */ 0xffff, /* 90b0 */ 0xffff, /* 90b1 */ 0xffff, /* 90b2 */ 0xffff, /* 90b3 */ 0xffff, /* 90b4 */ 0xffff, /* 90b5 */ 0xffff, /* 90b6 */ 0xffff, /* 90b7 */ 0xffff, /* 90b8 */ 0xffff, /* 90b9 */ 0xffff, /* 90ba */ 0xffff, /* 90bb */ 0xffff, /* 90bc */ 0xffff, /* 90bd */ 0xffff, /* 90be */ 0xffff, /* 90bf */ 0xffff, /* 90c0 */ 0xffff, /* 90c1 */ 0xffff, /* 90c2 */ 0xffff, /* 90c3 */ 0xffff, /* 90c4 */ 0xffff, /* 90c5 */ 0xffff, /* 90c6 */ 0xffff, /* 90c7 */ 0xffff, /* 90c8 */ 0xffff, /* 90c9 */ 0xffff, /* 90ca */ 0xffff, /* 90cb */ 0xffff, /* 90cc */ 0xffff, /* 90cd */ 0xffff, /* 90ce */ 0xffff, /* 90cf */ 0xffff, /* 90d0 */ 0xffff, /* 90d1 */ 0xffff, /* 90d2 */ 0xffff, /* 90d3 */ 0xffff, /* 90d4 */ 0xffff, /* 90d5 */ 0xffff, /* 90d6 */ 0xffff, /* 90d7 */ 0xffff, /* 90d8 */ 0xffff, /* 90d9 */ 0xffff, /* 90da */ 0xffff, /* 90db */ 0xffff, /* 90dc */ 0xffff, /* 90dd */ 0xffff, /* 90de */ 0xffff, /* 90df */ 0xffff, /* 90e0 */ 0xffff, /* 90e1 */ 0xffff, /* 90e2 */ 0xffff, /* 90e3 */ 0xffff, /* 90e4 */ 0xffff, /* 90e5 */ 0xffff, /* 90e6 */ 0xffff, /* 90e7 */ 0xffff, /* 90e8 */ 0xffff, /* 90e9 */ 0xffff, /* 90ea */ 0xffff, /* 90eb */ 0xffff, /* 90ec */ 0xffff, /* 90ed */ 0xffff, /* 90ee */ 0xffff, /* 90ef */ 0xffff, /* 90f0 */ 0xffff, /* 90f1 */ 0xffff, /* 90f2 */ 0xffff, /* 90f3 */ 0xffff, /* 90f4 */ 0xffff, /* 90f5 */ 0xffff, /* 90f6 */ 0xffff, /* 90f7 */ 0xffff, /* 90f8 */ 0xffff, /* 90f9 */ 0xffff, /* 90fa */ 0xffff, /* 90fb */ 0xffff, /* 90fc */ 0xffff, /* 90fd */ 0xffff, /* 90fe */ 0xffff, /* 90ff */ 0xffff, /* 9100 */ 0xffff, /* 9101 */ 0xffff, /* 9102 */ 0xffff, /* 9103 */ 0xffff, /* 9104 */ 0xffff, /* 9105 */ 0xffff, /* 9106 */ 0xffff, /* 9107 */ 0xffff, /* 9108 */ 0xffff, /* 9109 */ 0xffff, /* 910a */ 0xffff, /* 910b */ 0xffff, /* 910c */ 0xffff, /* 910d */ 0xffff, /* 910e */ 0xffff, /* 910f */ 0xffff, /* 9110 */ 0xffff, /* 9111 */ 0xffff, /* 9112 */ 0xffff, /* 9113 */ 0xffff, /* 9114 */ 0xffff, /* 9115 */ 0xffff, /* 9116 */ 0xffff, /* 9117 */ 0xffff, /* 9118 */ 0xffff, /* 9119 */ 0xffff, /* 911a */ 0xffff, /* 911b */ 0xffff, /* 911c */ 0xffff, /* 911d */ 0xffff, /* 911e */ 0xffff, /* 911f */ 0xffff, /* 9120 */ 0xffff, /* 9121 */ 0xffff, /* 9122 */ 0xffff, /* 9123 */ 0xffff, /* 9124 */ 0xffff, /* 9125 */ 0xffff, /* 9126 */ 0xffff, /* 9127 */ 0xffff, /* 9128 */ 0xffff, /* 9129 */ 0xffff, /* 912a */ 0xffff, /* 912b */ 0xffff, /* 912c */ 0xffff, /* 912d */ 0xffff, /* 912e */ 0xffff, /* 912f */ 0xffff, /* 9130 */ 0xffff, /* 9131 */ 0xffff, /* 9132 */ 0xffff, /* 9133 */ 0xffff, /* 9134 */ 0xffff, /* 9135 */ 0xffff, /* 9136 */ 0xffff, /* 9137 */ 0xffff, /* 9138 */ 0xffff, /* 9139 */ 0xffff, /* 913a */ 0xffff, /* 913b */ 0xffff, /* 913c */ 0xffff, /* 913d */ 0xffff, /* 913e */ 0xffff, /* 913f */ 0xffff, /* 9140 */ 0xffff, /* 9141 */ 0xffff, /* 9142 */ 0xffff, /* 9143 */ 0xffff, /* 9144 */ 0xffff, /* 9145 */ 0xffff, /* 9146 */ 0xffff, /* 9147 */ 0xffff, /* 9148 */ 0xffff, /* 9149 */ 0xffff, /* 914a */ 0xffff, /* 914b */ 0xffff, /* 914c */ 0xffff, /* 914d */ 0xffff, /* 914e */ 0xffff, /* 914f */ 0xffff, /* 9150 */ 0xffff, /* 9151 */ 0xffff, /* 9152 */ 0xffff, /* 9153 */ 0xffff, /* 9154 */ 0xffff, /* 9155 */ 0xffff, /* 9156 */ 0xffff, /* 9157 */ 0xffff, /* 9158 */ 0xffff, /* 9159 */ 0xffff, /* 915a */ 0xffff, /* 915b */ 0xffff, /* 915c */ 0xffff, /* 915d */ 0xffff, /* 915e */ 0xffff, /* 915f */ 0xffff, /* 9160 */ 0xffff, /* 9161 */ 0xffff, /* 9162 */ 0xffff, /* 9163 */ 0xffff, /* 9164 */ 0xffff, /* 9165 */ 0xffff, /* 9166 */ 0xffff, /* 9167 */ 0xffff, /* 9168 */ 0xffff, /* 9169 */ 0xffff, /* 916a */ 0xffff, /* 916b */ 0xffff, /* 916c */ 0xffff, /* 916d */ 0xffff, /* 916e */ 0xffff, /* 916f */ 0xffff, /* 9170 */ 0xffff, /* 9171 */ 0xffff, /* 9172 */ 0xffff, /* 9173 */ 0xffff, /* 9174 */ 0xffff, /* 9175 */ 0xffff, /* 9176 */ 0xffff, /* 9177 */ 0xffff, /* 9178 */ 0xffff, /* 9179 */ 0xffff, /* 917a */ 0xffff, /* 917b */ 0xffff, /* 917c */ 0xffff, /* 917d */ 0xffff, /* 917e */ 0xffff, /* 917f */ 0xffff, /* 9180 */ 0xffff, /* 9181 */ 0xffff, /* 9182 */ 0xffff, /* 9183 */ 0xffff, /* 9184 */ 0xffff, /* 9185 */ 0xffff, /* 9186 */ 0xffff, /* 9187 */ 0xffff, /* 9188 */ 0xffff, /* 9189 */ 0xffff, /* 918a */ 0xffff, /* 918b */ 0xffff, /* 918c */ 0xffff, /* 918d */ 0xffff, /* 918e */ 0xffff, /* 918f */ 0xffff, /* 9190 */ 0xffff, /* 9191 */ 0xffff, /* 9192 */ 0xffff, /* 9193 */ 0xffff, /* 9194 */ 0xffff, /* 9195 */ 0xffff, /* 9196 */ 0xffff, /* 9197 */ 0xffff, /* 9198 */ 0xffff, /* 9199 */ 0xffff, /* 919a */ 0xffff, /* 919b */ 0xffff, /* 919c */ 0xffff, /* 919d */ 0xffff, /* 919e */ 0xffff, /* 919f */ 0xffff, /* 91a0 */ 0xffff, /* 91a1 */ 0xffff, /* 91a2 */ 0xffff, /* 91a3 */ 0xffff, /* 91a4 */ 0xffff, /* 91a5 */ 0xffff, /* 91a6 */ 0xffff, /* 91a7 */ 0xffff, /* 91a8 */ 0xffff, /* 91a9 */ 0xffff, /* 91aa */ 0xffff, /* 91ab */ 0xffff, /* 91ac */ 0xffff, /* 91ad */ 0xffff, /* 91ae */ 0xffff, /* 91af */ 0xffff, /* 91b0 */ 0xffff, /* 91b1 */ 0xffff, /* 91b2 */ 0xffff, /* 91b3 */ 0xffff, /* 91b4 */ 0xffff, /* 91b5 */ 0xffff, /* 91b6 */ 0xffff, /* 91b7 */ 0xffff, /* 91b8 */ 0xffff, /* 91b9 */ 0xffff, /* 91ba */ 0xffff, /* 91bb */ 0xffff, /* 91bc */ 0xffff, /* 91bd */ 0xffff, /* 91be */ 0xffff, /* 91bf */ 0xffff, /* 91c0 */ 0xffff, /* 91c1 */ 0xffff, /* 91c2 */ 0xffff, /* 91c3 */ 0xffff, /* 91c4 */ 0xffff, /* 91c5 */ 0xffff, /* 91c6 */ 0xffff, /* 91c7 */ 0xffff, /* 91c8 */ 0xffff, /* 91c9 */ 0xffff, /* 91ca */ 0xffff, /* 91cb */ 0xffff, /* 91cc */ 0xffff, /* 91cd */ 0xffff, /* 91ce */ 0xffff, /* 91cf */ 0xffff, /* 91d0 */ 0xffff, /* 91d1 */ 0xffff, /* 91d2 */ 0xffff, /* 91d3 */ 0xffff, /* 91d4 */ 0xffff, /* 91d5 */ 0xffff, /* 91d6 */ 0xffff, /* 91d7 */ 0xffff, /* 91d8 */ 0xffff, /* 91d9 */ 0xffff, /* 91da */ 0xffff, /* 91db */ 0xffff, /* 91dc */ 0xffff, /* 91dd */ 0xffff, /* 91de */ 0xffff, /* 91df */ 0xffff, /* 91e0 */ 0xffff, /* 91e1 */ 0xffff, /* 91e2 */ 0xffff, /* 91e3 */ 0xffff, /* 91e4 */ 0xffff, /* 91e5 */ 0xffff, /* 91e6 */ 0xffff, /* 91e7 */ 0xffff, /* 91e8 */ 0xffff, /* 91e9 */ 0xffff, /* 91ea */ 0xffff, /* 91eb */ 0xffff, /* 91ec */ 0xffff, /* 91ed */ 0xffff, /* 91ee */ 0xffff, /* 91ef */ 0xffff, /* 91f0 */ 0xffff, /* 91f1 */ 0xffff, /* 91f2 */ 0xffff, /* 91f3 */ 0xffff, /* 91f4 */ 0xffff, /* 91f5 */ 0xffff, /* 91f6 */ 0xffff, /* 91f7 */ 0xffff, /* 91f8 */ 0xffff, /* 91f9 */ 0xffff, /* 91fa */ 0xffff, /* 91fb */ 0xffff, /* 91fc */ 0xffff, /* 91fd */ 0xffff, /* 91fe */ 0xffff, /* 91ff */ 0xffff, /* 9200 */ 0xffff, /* 9201 */ 0xffff, /* 9202 */ 0xffff, /* 9203 */ 0xffff, /* 9204 */ 0xffff, /* 9205 */ 0xffff, /* 9206 */ 0xffff, /* 9207 */ 0xffff, /* 9208 */ 0xffff, /* 9209 */ 0xffff, /* 920a */ 0xffff, /* 920b */ 0xffff, /* 920c */ 0xffff, /* 920d */ 0xffff, /* 920e */ 0xffff, /* 920f */ 0xffff, /* 9210 */ 0xffff, /* 9211 */ 0xffff, /* 9212 */ 0xffff, /* 9213 */ 0xffff, /* 9214 */ 0xffff, /* 9215 */ 0xffff, /* 9216 */ 0xffff, /* 9217 */ 0xffff, /* 9218 */ 0xffff, /* 9219 */ 0xffff, /* 921a */ 0xffff, /* 921b */ 0xffff, /* 921c */ 0xffff, /* 921d */ 0xffff, /* 921e */ 0xffff, /* 921f */ 0xffff, /* 9220 */ 0xffff, /* 9221 */ 0xffff, /* 9222 */ 0xffff, /* 9223 */ 0xffff, /* 9224 */ 0xffff, /* 9225 */ 0xffff, /* 9226 */ 0xffff, /* 9227 */ 0xffff, /* 9228 */ 0xffff, /* 9229 */ 0xffff, /* 922a */ 0xffff, /* 922b */ 0xffff, /* 922c */ 0xffff, /* 922d */ 0xffff, /* 922e */ 0xffff, /* 922f */ 0xffff, /* 9230 */ 0xffff, /* 9231 */ 0xffff, /* 9232 */ 0xffff, /* 9233 */ 0xffff, /* 9234 */ 0xffff, /* 9235 */ 0xffff, /* 9236 */ 0xffff, /* 9237 */ 0xffff, /* 9238 */ 0xffff, /* 9239 */ 0xffff, /* 923a */ 0xffff, /* 923b */ 0xffff, /* 923c */ 0xffff, /* 923d */ 0xffff, /* 923e */ 0xffff, /* 923f */ 0xffff, /* 9240 */ 0xffff, /* 9241 */ 0xffff, /* 9242 */ 0xffff, /* 9243 */ 0xffff, /* 9244 */ 0xffff, /* 9245 */ 0xffff, /* 9246 */ 0xffff, /* 9247 */ 0xffff, /* 9248 */ 0xffff, /* 9249 */ 0xffff, /* 924a */ 0xffff, /* 924b */ 0xffff, /* 924c */ 0xffff, /* 924d */ 0xffff, /* 924e */ 0xffff, /* 924f */ 0xffff, /* 9250 */ 0xffff, /* 9251 */ 0xffff, /* 9252 */ 0xffff, /* 9253 */ 0xffff, /* 9254 */ 0xffff, /* 9255 */ 0xffff, /* 9256 */ 0xffff, /* 9257 */ 0xffff, /* 9258 */ 0xffff, /* 9259 */ 0xffff, /* 925a */ 0xffff, /* 925b */ 0xffff, /* 925c */ 0xffff, /* 925d */ 0xffff, /* 925e */ 0xffff, /* 925f */ 0xffff, /* 9260 */ 0xffff, /* 9261 */ 0xffff, /* 9262 */ 0xffff, /* 9263 */ 0xffff, /* 9264 */ 0xffff, /* 9265 */ 0xffff, /* 9266 */ 0xffff, /* 9267 */ 0xffff, /* 9268 */ 0xffff, /* 9269 */ 0xffff, /* 926a */ 0xffff, /* 926b */ 0xffff, /* 926c */ 0xffff, /* 926d */ 0xffff, /* 926e */ 0xffff, /* 926f */ 0xffff, /* 9270 */ 0xffff, /* 9271 */ 0xffff, /* 9272 */ 0xffff, /* 9273 */ 0xffff, /* 9274 */ 0xffff, /* 9275 */ 0xffff, /* 9276 */ 0xffff, /* 9277 */ 0xffff, /* 9278 */ 0xffff, /* 9279 */ 0xffff, /* 927a */ 0xffff, /* 927b */ 0xffff, /* 927c */ 0xffff, /* 927d */ 0xffff, /* 927e */ 0xffff, /* 927f */ 0xffff, /* 9280 */ 0xffff, /* 9281 */ 0xffff, /* 9282 */ 0xffff, /* 9283 */ 0xffff, /* 9284 */ 0xffff, /* 9285 */ 0xffff, /* 9286 */ 0xffff, /* 9287 */ 0xffff, /* 9288 */ 0xffff, /* 9289 */ 0xffff, /* 928a */ 0xffff, /* 928b */ 0xffff, /* 928c */ 0xffff, /* 928d */ 0xffff, /* 928e */ 0xffff, /* 928f */ 0xffff, /* 9290 */ 0xffff, /* 9291 */ 0xffff, /* 9292 */ 0xffff, /* 9293 */ 0xffff, /* 9294 */ 0xffff, /* 9295 */ 0xffff, /* 9296 */ 0xffff, /* 9297 */ 0xffff, /* 9298 */ 0xffff, /* 9299 */ 0xffff, /* 929a */ 0xffff, /* 929b */ 0xffff, /* 929c */ 0xffff, /* 929d */ 0xffff, /* 929e */ 0xffff, /* 929f */ 0xffff, /* 92a0 */ 0xffff, /* 92a1 */ 0xffff, /* 92a2 */ 0xffff, /* 92a3 */ 0xffff, /* 92a4 */ 0xffff, /* 92a5 */ 0xffff, /* 92a6 */ 0xffff, /* 92a7 */ 0xffff, /* 92a8 */ 0xffff, /* 92a9 */ 0xffff, /* 92aa */ 0xffff, /* 92ab */ 0xffff, /* 92ac */ 0xffff, /* 92ad */ 0xffff, /* 92ae */ 0xffff, /* 92af */ 0xffff, /* 92b0 */ 0xffff, /* 92b1 */ 0xffff, /* 92b2 */ 0xffff, /* 92b3 */ 0xffff, /* 92b4 */ 0xffff, /* 92b5 */ 0xffff, /* 92b6 */ 0xffff, /* 92b7 */ 0xffff, /* 92b8 */ 0xffff, /* 92b9 */ 0xffff, /* 92ba */ 0xffff, /* 92bb */ 0xffff, /* 92bc */ 0xffff, /* 92bd */ 0xffff, /* 92be */ 0xffff, /* 92bf */ 0xffff, /* 92c0 */ 0xffff, /* 92c1 */ 0xffff, /* 92c2 */ 0xffff, /* 92c3 */ 0xffff, /* 92c4 */ 0xffff, /* 92c5 */ 0xffff, /* 92c6 */ 0xffff, /* 92c7 */ 0xffff, /* 92c8 */ 0xffff, /* 92c9 */ 0xffff, /* 92ca */ 0xffff, /* 92cb */ 0xffff, /* 92cc */ 0xffff, /* 92cd */ 0xffff, /* 92ce */ 0xffff, /* 92cf */ 0xffff, /* 92d0 */ 0xffff, /* 92d1 */ 0xffff, /* 92d2 */ 0xffff, /* 92d3 */ 0xffff, /* 92d4 */ 0xffff, /* 92d5 */ 0xffff, /* 92d6 */ 0xffff, /* 92d7 */ 0xffff, /* 92d8 */ 0xffff, /* 92d9 */ 0xffff, /* 92da */ 0xffff, /* 92db */ 0xffff, /* 92dc */ 0xffff, /* 92dd */ 0xffff, /* 92de */ 0xffff, /* 92df */ 0xffff, /* 92e0 */ 0xffff, /* 92e1 */ 0xffff, /* 92e2 */ 0xffff, /* 92e3 */ 0xffff, /* 92e4 */ 0xffff, /* 92e5 */ 0xffff, /* 92e6 */ 0xffff, /* 92e7 */ 0xffff, /* 92e8 */ 0xffff, /* 92e9 */ 0xffff, /* 92ea */ 0xffff, /* 92eb */ 0xffff, /* 92ec */ 0xffff, /* 92ed */ 0xffff, /* 92ee */ 0xffff, /* 92ef */ 0xffff, /* 92f0 */ 0xffff, /* 92f1 */ 0xffff, /* 92f2 */ 0xffff, /* 92f3 */ 0xffff, /* 92f4 */ 0xffff, /* 92f5 */ 0xffff, /* 92f6 */ 0xffff, /* 92f7 */ 0xffff, /* 92f8 */ 0xffff, /* 92f9 */ 0xffff, /* 92fa */ 0xffff, /* 92fb */ 0xffff, /* 92fc */ 0xffff, /* 92fd */ 0xffff, /* 92fe */ 0xffff, /* 92ff */ 0xffff, /* 9300 */ 0xffff, /* 9301 */ 0xffff, /* 9302 */ 0xffff, /* 9303 */ 0xffff, /* 9304 */ 0xffff, /* 9305 */ 0xffff, /* 9306 */ 0xffff, /* 9307 */ 0xffff, /* 9308 */ 0xffff, /* 9309 */ 0xffff, /* 930a */ 0xffff, /* 930b */ 0xffff, /* 930c */ 0xffff, /* 930d */ 0xffff, /* 930e */ 0xffff, /* 930f */ 0xffff, /* 9310 */ 0xffff, /* 9311 */ 0xffff, /* 9312 */ 0xffff, /* 9313 */ 0xffff, /* 9314 */ 0xffff, /* 9315 */ 0xffff, /* 9316 */ 0xffff, /* 9317 */ 0xffff, /* 9318 */ 0xffff, /* 9319 */ 0xffff, /* 931a */ 0xffff, /* 931b */ 0xffff, /* 931c */ 0xffff, /* 931d */ 0xffff, /* 931e */ 0xffff, /* 931f */ 0xffff, /* 9320 */ 0xffff, /* 9321 */ 0xffff, /* 9322 */ 0xffff, /* 9323 */ 0xffff, /* 9324 */ 0xffff, /* 9325 */ 0xffff, /* 9326 */ 0xffff, /* 9327 */ 0xffff, /* 9328 */ 0xffff, /* 9329 */ 0xffff, /* 932a */ 0xffff, /* 932b */ 0xffff, /* 932c */ 0xffff, /* 932d */ 0xffff, /* 932e */ 0xffff, /* 932f */ 0xffff, /* 9330 */ 0xffff, /* 9331 */ 0xffff, /* 9332 */ 0xffff, /* 9333 */ 0xffff, /* 9334 */ 0xffff, /* 9335 */ 0xffff, /* 9336 */ 0xffff, /* 9337 */ 0xffff, /* 9338 */ 0xffff, /* 9339 */ 0xffff, /* 933a */ 0xffff, /* 933b */ 0xffff, /* 933c */ 0xffff, /* 933d */ 0xffff, /* 933e */ 0xffff, /* 933f */ 0xffff, /* 9340 */ 0xffff, /* 9341 */ 0xffff, /* 9342 */ 0xffff, /* 9343 */ 0xffff, /* 9344 */ 0xffff, /* 9345 */ 0xffff, /* 9346 */ 0xffff, /* 9347 */ 0xffff, /* 9348 */ 0xffff, /* 9349 */ 0xffff, /* 934a */ 0xffff, /* 934b */ 0xffff, /* 934c */ 0xffff, /* 934d */ 0xffff, /* 934e */ 0xffff, /* 934f */ 0xffff, /* 9350 */ 0xffff, /* 9351 */ 0xffff, /* 9352 */ 0xffff, /* 9353 */ 0xffff, /* 9354 */ 0xffff, /* 9355 */ 0xffff, /* 9356 */ 0xffff, /* 9357 */ 0xffff, /* 9358 */ 0xffff, /* 9359 */ 0xffff, /* 935a */ 0xffff, /* 935b */ 0xffff, /* 935c */ 0xffff, /* 935d */ 0xffff, /* 935e */ 0xffff, /* 935f */ 0xffff, /* 9360 */ 0xffff, /* 9361 */ 0xffff, /* 9362 */ 0xffff, /* 9363 */ 0xffff, /* 9364 */ 0xffff, /* 9365 */ 0xffff, /* 9366 */ 0xffff, /* 9367 */ 0xffff, /* 9368 */ 0xffff, /* 9369 */ 0xffff, /* 936a */ 0xffff, /* 936b */ 0xffff, /* 936c */ 0xffff, /* 936d */ 0xffff, /* 936e */ 0xffff, /* 936f */ 0xffff, /* 9370 */ 0xffff, /* 9371 */ 0xffff, /* 9372 */ 0xffff, /* 9373 */ 0xffff, /* 9374 */ 0xffff, /* 9375 */ 0xffff, /* 9376 */ 0xffff, /* 9377 */ 0xffff, /* 9378 */ 0xffff, /* 9379 */ 0xffff, /* 937a */ 0xffff, /* 937b */ 0xffff, /* 937c */ 0xffff, /* 937d */ 0xffff, /* 937e */ 0xffff, /* 937f */ 0xffff, /* 9380 */ 0xffff, /* 9381 */ 0xffff, /* 9382 */ 0xffff, /* 9383 */ 0xffff, /* 9384 */ 0xffff, /* 9385 */ 0xffff, /* 9386 */ 0xffff, /* 9387 */ 0xffff, /* 9388 */ 0xffff, /* 9389 */ 0xffff, /* 938a */ 0xffff, /* 938b */ 0xffff, /* 938c */ 0xffff, /* 938d */ 0xffff, /* 938e */ 0xffff, /* 938f */ 0xffff, /* 9390 */ 0xffff, /* 9391 */ 0xffff, /* 9392 */ 0xffff, /* 9393 */ 0xffff, /* 9394 */ 0xffff, /* 9395 */ 0xffff, /* 9396 */ 0xffff, /* 9397 */ 0xffff, /* 9398 */ 0xffff, /* 9399 */ 0xffff, /* 939a */ 0xffff, /* 939b */ 0xffff, /* 939c */ 0xffff, /* 939d */ 0xffff, /* 939e */ 0xffff, /* 939f */ 0xffff, /* 93a0 */ 0xffff, /* 93a1 */ 0xffff, /* 93a2 */ 0xffff, /* 93a3 */ 0xffff, /* 93a4 */ 0xffff, /* 93a5 */ 0xffff, /* 93a6 */ 0xffff, /* 93a7 */ 0xffff, /* 93a8 */ 0xffff, /* 93a9 */ 0xffff, /* 93aa */ 0xffff, /* 93ab */ 0xffff, /* 93ac */ 0xffff, /* 93ad */ 0xffff, /* 93ae */ 0xffff, /* 93af */ 0xffff, /* 93b0 */ 0xffff, /* 93b1 */ 0xffff, /* 93b2 */ 0xffff, /* 93b3 */ 0xffff, /* 93b4 */ 0xffff, /* 93b5 */ 0xffff, /* 93b6 */ 0xffff, /* 93b7 */ 0xffff, /* 93b8 */ 0xffff, /* 93b9 */ 0xffff, /* 93ba */ 0xffff, /* 93bb */ 0xffff, /* 93bc */ 0xffff, /* 93bd */ 0xffff, /* 93be */ 0xffff, /* 93bf */ 0xffff, /* 93c0 */ 0xffff, /* 93c1 */ 0xffff, /* 93c2 */ 0xffff, /* 93c3 */ 0xffff, /* 93c4 */ 0xffff, /* 93c5 */ 0xffff, /* 93c6 */ 0xffff, /* 93c7 */ 0xffff, /* 93c8 */ 0xffff, /* 93c9 */ 0xffff, /* 93ca */ 0xffff, /* 93cb */ 0xffff, /* 93cc */ 0xffff, /* 93cd */ 0xffff, /* 93ce */ 0xffff, /* 93cf */ 0xffff, /* 93d0 */ 0xffff, /* 93d1 */ 0xffff, /* 93d2 */ 0xffff, /* 93d3 */ 0xffff, /* 93d4 */ 0xffff, /* 93d5 */ 0xffff, /* 93d6 */ 0xffff, /* 93d7 */ 0xffff, /* 93d8 */ 0xffff, /* 93d9 */ 0xffff, /* 93da */ 0xffff, /* 93db */ 0xffff, /* 93dc */ 0xffff, /* 93dd */ 0xffff, /* 93de */ 0xffff, /* 93df */ 0xffff, /* 93e0 */ 0xffff, /* 93e1 */ 0xffff, /* 93e2 */ 0xffff, /* 93e3 */ 0xffff, /* 93e4 */ 0xffff, /* 93e5 */ 0xffff, /* 93e6 */ 0xffff, /* 93e7 */ 0xffff, /* 93e8 */ 0xffff, /* 93e9 */ 0xffff, /* 93ea */ 0xffff, /* 93eb */ 0xffff, /* 93ec */ 0xffff, /* 93ed */ 0xffff, /* 93ee */ 0xffff, /* 93ef */ 0xffff, /* 93f0 */ 0xffff, /* 93f1 */ 0xffff, /* 93f2 */ 0xffff, /* 93f3 */ 0xffff, /* 93f4 */ 0xffff, /* 93f5 */ 0xffff, /* 93f6 */ 0xffff, /* 93f7 */ 0xffff, /* 93f8 */ 0xffff, /* 93f9 */ 0xffff, /* 93fa */ 0xffff, /* 93fb */ 0xffff, /* 93fc */ 0xffff, /* 93fd */ 0xffff, /* 93fe */ 0xffff, /* 93ff */ 0xffff, /* 9400 */ 0xffff, /* 9401 */ 0xffff, /* 9402 */ 0xffff, /* 9403 */ 0xffff, /* 9404 */ 0xffff, /* 9405 */ 0xffff, /* 9406 */ 0xffff, /* 9407 */ 0xffff, /* 9408 */ 0xffff, /* 9409 */ 0xffff, /* 940a */ 0xffff, /* 940b */ 0xffff, /* 940c */ 0xffff, /* 940d */ 0xffff, /* 940e */ 0xffff, /* 940f */ 0xffff, /* 9410 */ 0xffff, /* 9411 */ 0xffff, /* 9412 */ 0xffff, /* 9413 */ 0xffff, /* 9414 */ 0xffff, /* 9415 */ 0xffff, /* 9416 */ 0xffff, /* 9417 */ 0xffff, /* 9418 */ 0xffff, /* 9419 */ 0xffff, /* 941a */ 0xffff, /* 941b */ 0xffff, /* 941c */ 0xffff, /* 941d */ 0xffff, /* 941e */ 0xffff, /* 941f */ 0xffff, /* 9420 */ 0xffff, /* 9421 */ 0xffff, /* 9422 */ 0xffff, /* 9423 */ 0xffff, /* 9424 */ 0xffff, /* 9425 */ 0xffff, /* 9426 */ 0xffff, /* 9427 */ 0xffff, /* 9428 */ 0xffff, /* 9429 */ 0xffff, /* 942a */ 0xffff, /* 942b */ 0xffff, /* 942c */ 0xffff, /* 942d */ 0xffff, /* 942e */ 0xffff, /* 942f */ 0xffff, /* 9430 */ 0xffff, /* 9431 */ 0xffff, /* 9432 */ 0xffff, /* 9433 */ 0xffff, /* 9434 */ 0xffff, /* 9435 */ 0xffff, /* 9436 */ 0xffff, /* 9437 */ 0xffff, /* 9438 */ 0xffff, /* 9439 */ 0xffff, /* 943a */ 0xffff, /* 943b */ 0xffff, /* 943c */ 0xffff, /* 943d */ 0xffff, /* 943e */ 0xffff, /* 943f */ 0xffff, /* 9440 */ 0xffff, /* 9441 */ 0xffff, /* 9442 */ 0xffff, /* 9443 */ 0xffff, /* 9444 */ 0xffff, /* 9445 */ 0xffff, /* 9446 */ 0xffff, /* 9447 */ 0xffff, /* 9448 */ 0xffff, /* 9449 */ 0xffff, /* 944a */ 0xffff, /* 944b */ 0xffff, /* 944c */ 0xffff, /* 944d */ 0xffff, /* 944e */ 0xffff, /* 944f */ 0xffff, /* 9450 */ 0xffff, /* 9451 */ 0xffff, /* 9452 */ 0xffff, /* 9453 */ 0xffff, /* 9454 */ 0xffff, /* 9455 */ 0xffff, /* 9456 */ 0xffff, /* 9457 */ 0xffff, /* 9458 */ 0xffff, /* 9459 */ 0xffff, /* 945a */ 0xffff, /* 945b */ 0xffff, /* 945c */ 0xffff, /* 945d */ 0xffff, /* 945e */ 0xffff, /* 945f */ 0xffff, /* 9460 */ 0xffff, /* 9461 */ 0xffff, /* 9462 */ 0xffff, /* 9463 */ 0xffff, /* 9464 */ 0xffff, /* 9465 */ 0xffff, /* 9466 */ 0xffff, /* 9467 */ 0xffff, /* 9468 */ 0xffff, /* 9469 */ 0xffff, /* 946a */ 0xffff, /* 946b */ 0xffff, /* 946c */ 0xffff, /* 946d */ 0xffff, /* 946e */ 0xffff, /* 946f */ 0xffff, /* 9470 */ 0xffff, /* 9471 */ 0xffff, /* 9472 */ 0xffff, /* 9473 */ 0xffff, /* 9474 */ 0xffff, /* 9475 */ 0xffff, /* 9476 */ 0xffff, /* 9477 */ 0xffff, /* 9478 */ 0xffff, /* 9479 */ 0xffff, /* 947a */ 0xffff, /* 947b */ 0xffff, /* 947c */ 0xffff, /* 947d */ 0xffff, /* 947e */ 0xffff, /* 947f */ 0xffff, /* 9480 */ 0xffff, /* 9481 */ 0xffff, /* 9482 */ 0xffff, /* 9483 */ 0xffff, /* 9484 */ 0xffff, /* 9485 */ 0xffff, /* 9486 */ 0xffff, /* 9487 */ 0xffff, /* 9488 */ 0xffff, /* 9489 */ 0xffff, /* 948a */ 0xffff, /* 948b */ 0xffff, /* 948c */ 0xffff, /* 948d */ 0xffff, /* 948e */ 0xffff, /* 948f */ 0xffff, /* 9490 */ 0xffff, /* 9491 */ 0xffff, /* 9492 */ 0xffff, /* 9493 */ 0xffff, /* 9494 */ 0xffff, /* 9495 */ 0xffff, /* 9496 */ 0xffff, /* 9497 */ 0xffff, /* 9498 */ 0xffff, /* 9499 */ 0xffff, /* 949a */ 0xffff, /* 949b */ 0xffff, /* 949c */ 0xffff, /* 949d */ 0xffff, /* 949e */ 0xffff, /* 949f */ 0xffff, /* 94a0 */ 0xffff, /* 94a1 */ 0xffff, /* 94a2 */ 0xffff, /* 94a3 */ 0xffff, /* 94a4 */ 0xffff, /* 94a5 */ 0xffff, /* 94a6 */ 0xffff, /* 94a7 */ 0xffff, /* 94a8 */ 0xffff, /* 94a9 */ 0xffff, /* 94aa */ 0xffff, /* 94ab */ 0xffff, /* 94ac */ 0xffff, /* 94ad */ 0xffff, /* 94ae */ 0xffff, /* 94af */ 0xffff, /* 94b0 */ 0xffff, /* 94b1 */ 0xffff, /* 94b2 */ 0xffff, /* 94b3 */ 0xffff, /* 94b4 */ 0xffff, /* 94b5 */ 0xffff, /* 94b6 */ 0xffff, /* 94b7 */ 0xffff, /* 94b8 */ 0xffff, /* 94b9 */ 0xffff, /* 94ba */ 0xffff, /* 94bb */ 0xffff, /* 94bc */ 0xffff, /* 94bd */ 0xffff, /* 94be */ 0xffff, /* 94bf */ 0xffff, /* 94c0 */ 0xffff, /* 94c1 */ 0xffff, /* 94c2 */ 0xffff, /* 94c3 */ 0xffff, /* 94c4 */ 0xffff, /* 94c5 */ 0xffff, /* 94c6 */ 0xffff, /* 94c7 */ 0xffff, /* 94c8 */ 0xffff, /* 94c9 */ 0xffff, /* 94ca */ 0xffff, /* 94cb */ 0xffff, /* 94cc */ 0xffff, /* 94cd */ 0xffff, /* 94ce */ 0xffff, /* 94cf */ 0xffff, /* 94d0 */ 0xffff, /* 94d1 */ 0xffff, /* 94d2 */ 0xffff, /* 94d3 */ 0xffff, /* 94d4 */ 0xffff, /* 94d5 */ 0xffff, /* 94d6 */ 0xffff, /* 94d7 */ 0xffff, /* 94d8 */ 0xffff, /* 94d9 */ 0xffff, /* 94da */ 0xffff, /* 94db */ 0xffff, /* 94dc */ 0xffff, /* 94dd */ 0xffff, /* 94de */ 0xffff, /* 94df */ 0xffff, /* 94e0 */ 0xffff, /* 94e1 */ 0xffff, /* 94e2 */ 0xffff, /* 94e3 */ 0xffff, /* 94e4 */ 0xffff, /* 94e5 */ 0xffff, /* 94e6 */ 0xffff, /* 94e7 */ 0xffff, /* 94e8 */ 0xffff, /* 94e9 */ 0xffff, /* 94ea */ 0xffff, /* 94eb */ 0xffff, /* 94ec */ 0xffff, /* 94ed */ 0xffff, /* 94ee */ 0xffff, /* 94ef */ 0xffff, /* 94f0 */ 0xffff, /* 94f1 */ 0xffff, /* 94f2 */ 0xffff, /* 94f3 */ 0xffff, /* 94f4 */ 0xffff, /* 94f5 */ 0xffff, /* 94f6 */ 0xffff, /* 94f7 */ 0xffff, /* 94f8 */ 0xffff, /* 94f9 */ 0xffff, /* 94fa */ 0xffff, /* 94fb */ 0xffff, /* 94fc */ 0xffff, /* 94fd */ 0xffff, /* 94fe */ 0xffff, /* 94ff */ 0xffff, /* 9500 */ 0xffff, /* 9501 */ 0xffff, /* 9502 */ 0xffff, /* 9503 */ 0xffff, /* 9504 */ 0xffff, /* 9505 */ 0xffff, /* 9506 */ 0xffff, /* 9507 */ 0xffff, /* 9508 */ 0xffff, /* 9509 */ 0xffff, /* 950a */ 0xffff, /* 950b */ 0xffff, /* 950c */ 0xffff, /* 950d */ 0xffff, /* 950e */ 0xffff, /* 950f */ 0xffff, /* 9510 */ 0xffff, /* 9511 */ 0xffff, /* 9512 */ 0xffff, /* 9513 */ 0xffff, /* 9514 */ 0xffff, /* 9515 */ 0xffff, /* 9516 */ 0xffff, /* 9517 */ 0xffff, /* 9518 */ 0xffff, /* 9519 */ 0xffff, /* 951a */ 0xffff, /* 951b */ 0xffff, /* 951c */ 0xffff, /* 951d */ 0xffff, /* 951e */ 0xffff, /* 951f */ 0xffff, /* 9520 */ 0xffff, /* 9521 */ 0xffff, /* 9522 */ 0xffff, /* 9523 */ 0xffff, /* 9524 */ 0xffff, /* 9525 */ 0xffff, /* 9526 */ 0xffff, /* 9527 */ 0xffff, /* 9528 */ 0xffff, /* 9529 */ 0xffff, /* 952a */ 0xffff, /* 952b */ 0xffff, /* 952c */ 0xffff, /* 952d */ 0xffff, /* 952e */ 0xffff, /* 952f */ 0xffff, /* 9530 */ 0xffff, /* 9531 */ 0xffff, /* 9532 */ 0xffff, /* 9533 */ 0xffff, /* 9534 */ 0xffff, /* 9535 */ 0xffff, /* 9536 */ 0xffff, /* 9537 */ 0xffff, /* 9538 */ 0xffff, /* 9539 */ 0xffff, /* 953a */ 0xffff, /* 953b */ 0xffff, /* 953c */ 0xffff, /* 953d */ 0xffff, /* 953e */ 0xffff, /* 953f */ 0xffff, /* 9540 */ 0xffff, /* 9541 */ 0xffff, /* 9542 */ 0xffff, /* 9543 */ 0xffff, /* 9544 */ 0xffff, /* 9545 */ 0xffff, /* 9546 */ 0xffff, /* 9547 */ 0xffff, /* 9548 */ 0xffff, /* 9549 */ 0xffff, /* 954a */ 0xffff, /* 954b */ 0xffff, /* 954c */ 0xffff, /* 954d */ 0xffff, /* 954e */ 0xffff, /* 954f */ 0xffff, /* 9550 */ 0xffff, /* 9551 */ 0xffff, /* 9552 */ 0xffff, /* 9553 */ 0xffff, /* 9554 */ 0xffff, /* 9555 */ 0xffff, /* 9556 */ 0xffff, /* 9557 */ 0xffff, /* 9558 */ 0xffff, /* 9559 */ 0xffff, /* 955a */ 0xffff, /* 955b */ 0xffff, /* 955c */ 0xffff, /* 955d */ 0xffff, /* 955e */ 0xffff, /* 955f */ 0xffff, /* 9560 */ 0xffff, /* 9561 */ 0xffff, /* 9562 */ 0xffff, /* 9563 */ 0xffff, /* 9564 */ 0xffff, /* 9565 */ 0xffff, /* 9566 */ 0xffff, /* 9567 */ 0xffff, /* 9568 */ 0xffff, /* 9569 */ 0xffff, /* 956a */ 0xffff, /* 956b */ 0xffff, /* 956c */ 0xffff, /* 956d */ 0xffff, /* 956e */ 0xffff, /* 956f */ 0xffff, /* 9570 */ 0xffff, /* 9571 */ 0xffff, /* 9572 */ 0xffff, /* 9573 */ 0xffff, /* 9574 */ 0xffff, /* 9575 */ 0xffff, /* 9576 */ 0xffff, /* 9577 */ 0xffff, /* 9578 */ 0xffff, /* 9579 */ 0xffff, /* 957a */ 0xffff, /* 957b */ 0xffff, /* 957c */ 0xffff, /* 957d */ 0xffff, /* 957e */ 0xffff, /* 957f */ 0xffff, /* 9580 */ 0xffff, /* 9581 */ 0xffff, /* 9582 */ 0xffff, /* 9583 */ 0xffff, /* 9584 */ 0xffff, /* 9585 */ 0xffff, /* 9586 */ 0xffff, /* 9587 */ 0xffff, /* 9588 */ 0xffff, /* 9589 */ 0xffff, /* 958a */ 0xffff, /* 958b */ 0xffff, /* 958c */ 0xffff, /* 958d */ 0xffff, /* 958e */ 0xffff, /* 958f */ 0xffff, /* 9590 */ 0xffff, /* 9591 */ 0xffff, /* 9592 */ 0xffff, /* 9593 */ 0xffff, /* 9594 */ 0xffff, /* 9595 */ 0xffff, /* 9596 */ 0xffff, /* 9597 */ 0xffff, /* 9598 */ 0xffff, /* 9599 */ 0xffff, /* 959a */ 0xffff, /* 959b */ 0xffff, /* 959c */ 0xffff, /* 959d */ 0xffff, /* 959e */ 0xffff, /* 959f */ 0xffff, /* 95a0 */ 0xffff, /* 95a1 */ 0xffff, /* 95a2 */ 0xffff, /* 95a3 */ 0xffff, /* 95a4 */ 0xffff, /* 95a5 */ 0xffff, /* 95a6 */ 0xffff, /* 95a7 */ 0xffff, /* 95a8 */ 0xffff, /* 95a9 */ 0xffff, /* 95aa */ 0xffff, /* 95ab */ 0xffff, /* 95ac */ 0xffff, /* 95ad */ 0xffff, /* 95ae */ 0xffff, /* 95af */ 0xffff, /* 95b0 */ 0xffff, /* 95b1 */ 0xffff, /* 95b2 */ 0xffff, /* 95b3 */ 0xffff, /* 95b4 */ 0xffff, /* 95b5 */ 0xffff, /* 95b6 */ 0xffff, /* 95b7 */ 0xffff, /* 95b8 */ 0xffff, /* 95b9 */ 0xffff, /* 95ba */ 0xffff, /* 95bb */ 0xffff, /* 95bc */ 0xffff, /* 95bd */ 0xffff, /* 95be */ 0xffff, /* 95bf */ 0xffff, /* 95c0 */ 0xffff, /* 95c1 */ 0xffff, /* 95c2 */ 0xffff, /* 95c3 */ 0xffff, /* 95c4 */ 0xffff, /* 95c5 */ 0xffff, /* 95c6 */ 0xffff, /* 95c7 */ 0xffff, /* 95c8 */ 0xffff, /* 95c9 */ 0xffff, /* 95ca */ 0xffff, /* 95cb */ 0xffff, /* 95cc */ 0xffff, /* 95cd */ 0xffff, /* 95ce */ 0xffff, /* 95cf */ 0xffff, /* 95d0 */ 0xffff, /* 95d1 */ 0xffff, /* 95d2 */ 0xffff, /* 95d3 */ 0xffff, /* 95d4 */ 0xffff, /* 95d5 */ 0xffff, /* 95d6 */ 0xffff, /* 95d7 */ 0xffff, /* 95d8 */ 0xffff, /* 95d9 */ 0xffff, /* 95da */ 0xffff, /* 95db */ 0xffff, /* 95dc */ 0xffff, /* 95dd */ 0xffff, /* 95de */ 0xffff, /* 95df */ 0xffff, /* 95e0 */ 0xffff, /* 95e1 */ 0xffff, /* 95e2 */ 0xffff, /* 95e3 */ 0xffff, /* 95e4 */ 0xffff, /* 95e5 */ 0xffff, /* 95e6 */ 0xffff, /* 95e7 */ 0xffff, /* 95e8 */ 0xffff, /* 95e9 */ 0xffff, /* 95ea */ 0xffff, /* 95eb */ 0xffff, /* 95ec */ 0xffff, /* 95ed */ 0xffff, /* 95ee */ 0xffff, /* 95ef */ 0xffff, /* 95f0 */ 0xffff, /* 95f1 */ 0xffff, /* 95f2 */ 0xffff, /* 95f3 */ 0xffff, /* 95f4 */ 0xffff, /* 95f5 */ 0xffff, /* 95f6 */ 0xffff, /* 95f7 */ 0xffff, /* 95f8 */ 0xffff, /* 95f9 */ 0xffff, /* 95fa */ 0xffff, /* 95fb */ 0xffff, /* 95fc */ 0xffff, /* 95fd */ 0xffff, /* 95fe */ 0xffff, /* 95ff */ 0xffff, /* 9600 */ 0xffff, /* 9601 */ 0xffff, /* 9602 */ 0xffff, /* 9603 */ 0xffff, /* 9604 */ 0xffff, /* 9605 */ 0xffff, /* 9606 */ 0xffff, /* 9607 */ 0xffff, /* 9608 */ 0xffff, /* 9609 */ 0xffff, /* 960a */ 0xffff, /* 960b */ 0xffff, /* 960c */ 0xffff, /* 960d */ 0xffff, /* 960e */ 0xffff, /* 960f */ 0xffff, /* 9610 */ 0xffff, /* 9611 */ 0xffff, /* 9612 */ 0xffff, /* 9613 */ 0xffff, /* 9614 */ 0xffff, /* 9615 */ 0xffff, /* 9616 */ 0xffff, /* 9617 */ 0xffff, /* 9618 */ 0xffff, /* 9619 */ 0xffff, /* 961a */ 0xffff, /* 961b */ 0xffff, /* 961c */ 0xffff, /* 961d */ 0xffff, /* 961e */ 0xffff, /* 961f */ 0xffff, /* 9620 */ 0xffff, /* 9621 */ 0xffff, /* 9622 */ 0xffff, /* 9623 */ 0xffff, /* 9624 */ 0xffff, /* 9625 */ 0xffff, /* 9626 */ 0xffff, /* 9627 */ 0xffff, /* 9628 */ 0xffff, /* 9629 */ 0xffff, /* 962a */ 0xffff, /* 962b */ 0xffff, /* 962c */ 0xffff, /* 962d */ 0xffff, /* 962e */ 0xffff, /* 962f */ 0xffff, /* 9630 */ 0xffff, /* 9631 */ 0xffff, /* 9632 */ 0xffff, /* 9633 */ 0xffff, /* 9634 */ 0xffff, /* 9635 */ 0xffff, /* 9636 */ 0xffff, /* 9637 */ 0xffff, /* 9638 */ 0xffff, /* 9639 */ 0xffff, /* 963a */ 0xffff, /* 963b */ 0xffff, /* 963c */ 0xffff, /* 963d */ 0xffff, /* 963e */ 0xffff, /* 963f */ 0xffff, /* 9640 */ 0xffff, /* 9641 */ 0xffff, /* 9642 */ 0xffff, /* 9643 */ 0xffff, /* 9644 */ 0xffff, /* 9645 */ 0xffff, /* 9646 */ 0xffff, /* 9647 */ 0xffff, /* 9648 */ 0xffff, /* 9649 */ 0xffff, /* 964a */ 0xffff, /* 964b */ 0xffff, /* 964c */ 0xffff, /* 964d */ 0xffff, /* 964e */ 0xffff, /* 964f */ 0xffff, /* 9650 */ 0xffff, /* 9651 */ 0xffff, /* 9652 */ 0xffff, /* 9653 */ 0xffff, /* 9654 */ 0xffff, /* 9655 */ 0xffff, /* 9656 */ 0xffff, /* 9657 */ 0xffff, /* 9658 */ 0xffff, /* 9659 */ 0xffff, /* 965a */ 0xffff, /* 965b */ 0xffff, /* 965c */ 0xffff, /* 965d */ 0xffff, /* 965e */ 0xffff, /* 965f */ 0xffff, /* 9660 */ 0xffff, /* 9661 */ 0xffff, /* 9662 */ 0xffff, /* 9663 */ 0xffff, /* 9664 */ 0xffff, /* 9665 */ 0xffff, /* 9666 */ 0xffff, /* 9667 */ 0xffff, /* 9668 */ 0xffff, /* 9669 */ 0xffff, /* 966a */ 0xffff, /* 966b */ 0xffff, /* 966c */ 0xffff, /* 966d */ 0xffff, /* 966e */ 0xffff, /* 966f */ 0xffff, /* 9670 */ 0xffff, /* 9671 */ 0xffff, /* 9672 */ 0xffff, /* 9673 */ 0xffff, /* 9674 */ 0xffff, /* 9675 */ 0xffff, /* 9676 */ 0xffff, /* 9677 */ 0xffff, /* 9678 */ 0xffff, /* 9679 */ 0xffff, /* 967a */ 0xffff, /* 967b */ 0xffff, /* 967c */ 0xffff, /* 967d */ 0xffff, /* 967e */ 0xffff, /* 967f */ 0xffff, /* 9680 */ 0xffff, /* 9681 */ 0xffff, /* 9682 */ 0xffff, /* 9683 */ 0xffff, /* 9684 */ 0xffff, /* 9685 */ 0xffff, /* 9686 */ 0xffff, /* 9687 */ 0xffff, /* 9688 */ 0xffff, /* 9689 */ 0xffff, /* 968a */ 0xffff, /* 968b */ 0xffff, /* 968c */ 0xffff, /* 968d */ 0xffff, /* 968e */ 0xffff, /* 968f */ 0xffff, /* 9690 */ 0xffff, /* 9691 */ 0xffff, /* 9692 */ 0xffff, /* 9693 */ 0xffff, /* 9694 */ 0xffff, /* 9695 */ 0xffff, /* 9696 */ 0xffff, /* 9697 */ 0xffff, /* 9698 */ 0xffff, /* 9699 */ 0xffff, /* 969a */ 0xffff, /* 969b */ 0xffff, /* 969c */ 0xffff, /* 969d */ 0xffff, /* 969e */ 0xffff, /* 969f */ 0xffff, /* 96a0 */ 0xffff, /* 96a1 */ 0xffff, /* 96a2 */ 0xffff, /* 96a3 */ 0xffff, /* 96a4 */ 0xffff, /* 96a5 */ 0xffff, /* 96a6 */ 0xffff, /* 96a7 */ 0xffff, /* 96a8 */ 0xffff, /* 96a9 */ 0xffff, /* 96aa */ 0xffff, /* 96ab */ 0xffff, /* 96ac */ 0xffff, /* 96ad */ 0xffff, /* 96ae */ 0xffff, /* 96af */ 0xffff, /* 96b0 */ 0xffff, /* 96b1 */ 0xffff, /* 96b2 */ 0xffff, /* 96b3 */ 0xffff, /* 96b4 */ 0xffff, /* 96b5 */ 0xffff, /* 96b6 */ 0xffff, /* 96b7 */ 0xffff, /* 96b8 */ 0xffff, /* 96b9 */ 0xffff, /* 96ba */ 0xffff, /* 96bb */ 0xffff, /* 96bc */ 0xffff, /* 96bd */ 0xffff, /* 96be */ 0xffff, /* 96bf */ 0xffff, /* 96c0 */ 0xffff, /* 96c1 */ 0xffff, /* 96c2 */ 0xffff, /* 96c3 */ 0xffff, /* 96c4 */ 0xffff, /* 96c5 */ 0xffff, /* 96c6 */ 0xffff, /* 96c7 */ 0xffff, /* 96c8 */ 0xffff, /* 96c9 */ 0xffff, /* 96ca */ 0xffff, /* 96cb */ 0xffff, /* 96cc */ 0xffff, /* 96cd */ 0xffff, /* 96ce */ 0xffff, /* 96cf */ 0xffff, /* 96d0 */ 0xffff, /* 96d1 */ 0xffff, /* 96d2 */ 0xffff, /* 96d3 */ 0xffff, /* 96d4 */ 0xffff, /* 96d5 */ 0xffff, /* 96d6 */ 0xffff, /* 96d7 */ 0xffff, /* 96d8 */ 0xffff, /* 96d9 */ 0xffff, /* 96da */ 0xffff, /* 96db */ 0xffff, /* 96dc */ 0xffff, /* 96dd */ 0xffff, /* 96de */ 0xffff, /* 96df */ 0xffff, /* 96e0 */ 0xffff, /* 96e1 */ 0xffff, /* 96e2 */ 0xffff, /* 96e3 */ 0xffff, /* 96e4 */ 0xffff, /* 96e5 */ 0xffff, /* 96e6 */ 0xffff, /* 96e7 */ 0xffff, /* 96e8 */ 0xffff, /* 96e9 */ 0xffff, /* 96ea */ 0xffff, /* 96eb */ 0xffff, /* 96ec */ 0xffff, /* 96ed */ 0xffff, /* 96ee */ 0xffff, /* 96ef */ 0xffff, /* 96f0 */ 0xffff, /* 96f1 */ 0xffff, /* 96f2 */ 0xffff, /* 96f3 */ 0xffff, /* 96f4 */ 0xffff, /* 96f5 */ 0xffff, /* 96f6 */ 0xffff, /* 96f7 */ 0xffff, /* 96f8 */ 0xffff, /* 96f9 */ 0xffff, /* 96fa */ 0xffff, /* 96fb */ 0xffff, /* 96fc */ 0xffff, /* 96fd */ 0xffff, /* 96fe */ 0xffff, /* 96ff */ 0xffff, /* 9700 */ 0xffff, /* 9701 */ 0xffff, /* 9702 */ 0xffff, /* 9703 */ 0xffff, /* 9704 */ 0xffff, /* 9705 */ 0xffff, /* 9706 */ 0xffff, /* 9707 */ 0xffff, /* 9708 */ 0xffff, /* 9709 */ 0xffff, /* 970a */ 0xffff, /* 970b */ 0xffff, /* 970c */ 0xffff, /* 970d */ 0xffff, /* 970e */ 0xffff, /* 970f */ 0xffff, /* 9710 */ 0xffff, /* 9711 */ 0xffff, /* 9712 */ 0xffff, /* 9713 */ 0xffff, /* 9714 */ 0xffff, /* 9715 */ 0xffff, /* 9716 */ 0xffff, /* 9717 */ 0xffff, /* 9718 */ 0xffff, /* 9719 */ 0xffff, /* 971a */ 0xffff, /* 971b */ 0xffff, /* 971c */ 0xffff, /* 971d */ 0xffff, /* 971e */ 0xffff, /* 971f */ 0xffff, /* 9720 */ 0xffff, /* 9721 */ 0xffff, /* 9722 */ 0xffff, /* 9723 */ 0xffff, /* 9724 */ 0xffff, /* 9725 */ 0xffff, /* 9726 */ 0xffff, /* 9727 */ 0xffff, /* 9728 */ 0xffff, /* 9729 */ 0xffff, /* 972a */ 0xffff, /* 972b */ 0xffff, /* 972c */ 0xffff, /* 972d */ 0xffff, /* 972e */ 0xffff, /* 972f */ 0xffff, /* 9730 */ 0xffff, /* 9731 */ 0xffff, /* 9732 */ 0xffff, /* 9733 */ 0xffff, /* 9734 */ 0xffff, /* 9735 */ 0xffff, /* 9736 */ 0xffff, /* 9737 */ 0xffff, /* 9738 */ 0xffff, /* 9739 */ 0xffff, /* 973a */ 0xffff, /* 973b */ 0xffff, /* 973c */ 0xffff, /* 973d */ 0xffff, /* 973e */ 0xffff, /* 973f */ 0xffff, /* 9740 */ 0xffff, /* 9741 */ 0xffff, /* 9742 */ 0xffff, /* 9743 */ 0xffff, /* 9744 */ 0xffff, /* 9745 */ 0xffff, /* 9746 */ 0xffff, /* 9747 */ 0xffff, /* 9748 */ 0xffff, /* 9749 */ 0xffff, /* 974a */ 0xffff, /* 974b */ 0xffff, /* 974c */ 0xffff, /* 974d */ 0xffff, /* 974e */ 0xffff, /* 974f */ 0xffff, /* 9750 */ 0xffff, /* 9751 */ 0xffff, /* 9752 */ 0xffff, /* 9753 */ 0xffff, /* 9754 */ 0xffff, /* 9755 */ 0xffff, /* 9756 */ 0xffff, /* 9757 */ 0xffff, /* 9758 */ 0xffff, /* 9759 */ 0xffff, /* 975a */ 0xffff, /* 975b */ 0xffff, /* 975c */ 0xffff, /* 975d */ 0xffff, /* 975e */ 0xffff, /* 975f */ 0xffff, /* 9760 */ 0xffff, /* 9761 */ 0xffff, /* 9762 */ 0xffff, /* 9763 */ 0xffff, /* 9764 */ 0xffff, /* 9765 */ 0xffff, /* 9766 */ 0xffff, /* 9767 */ 0xffff, /* 9768 */ 0xffff, /* 9769 */ 0xffff, /* 976a */ 0xffff, /* 976b */ 0xffff, /* 976c */ 0xffff, /* 976d */ 0xffff, /* 976e */ 0xffff, /* 976f */ 0xffff, /* 9770 */ 0xffff, /* 9771 */ 0xffff, /* 9772 */ 0xffff, /* 9773 */ 0xffff, /* 9774 */ 0xffff, /* 9775 */ 0xffff, /* 9776 */ 0xffff, /* 9777 */ 0xffff, /* 9778 */ 0xffff, /* 9779 */ 0xffff, /* 977a */ 0xffff, /* 977b */ 0xffff, /* 977c */ 0xffff, /* 977d */ 0xffff, /* 977e */ 0xffff, /* 977f */ 0xffff, /* 9780 */ 0xffff, /* 9781 */ 0xffff, /* 9782 */ 0xffff, /* 9783 */ 0xffff, /* 9784 */ 0xffff, /* 9785 */ 0xffff, /* 9786 */ 0xffff, /* 9787 */ 0xffff, /* 9788 */ 0xffff, /* 9789 */ 0xffff, /* 978a */ 0xffff, /* 978b */ 0xffff, /* 978c */ 0xffff, /* 978d */ 0xffff, /* 978e */ 0xffff, /* 978f */ 0xffff, /* 9790 */ 0xffff, /* 9791 */ 0xffff, /* 9792 */ 0xffff, /* 9793 */ 0xffff, /* 9794 */ 0xffff, /* 9795 */ 0xffff, /* 9796 */ 0xffff, /* 9797 */ 0xffff, /* 9798 */ 0xffff, /* 9799 */ 0xffff, /* 979a */ 0xffff, /* 979b */ 0xffff, /* 979c */ 0xffff, /* 979d */ 0xffff, /* 979e */ 0xffff, /* 979f */ 0xffff, /* 97a0 */ 0xffff, /* 97a1 */ 0xffff, /* 97a2 */ 0xffff, /* 97a3 */ 0xffff, /* 97a4 */ 0xffff, /* 97a5 */ 0xffff, /* 97a6 */ 0xffff, /* 97a7 */ 0xffff, /* 97a8 */ 0xffff, /* 97a9 */ 0xffff, /* 97aa */ 0xffff, /* 97ab */ 0xffff, /* 97ac */ 0xffff, /* 97ad */ 0xffff, /* 97ae */ 0xffff, /* 97af */ 0xffff, /* 97b0 */ 0xffff, /* 97b1 */ 0xffff, /* 97b2 */ 0xffff, /* 97b3 */ 0xffff, /* 97b4 */ 0xffff, /* 97b5 */ 0xffff, /* 97b6 */ 0xffff, /* 97b7 */ 0xffff, /* 97b8 */ 0xffff, /* 97b9 */ 0xffff, /* 97ba */ 0xffff, /* 97bb */ 0xffff, /* 97bc */ 0xffff, /* 97bd */ 0xffff, /* 97be */ 0xffff, /* 97bf */ 0xffff, /* 97c0 */ 0xffff, /* 97c1 */ 0xffff, /* 97c2 */ 0xffff, /* 97c3 */ 0xffff, /* 97c4 */ 0xffff, /* 97c5 */ 0xffff, /* 97c6 */ 0xffff, /* 97c7 */ 0xffff, /* 97c8 */ 0xffff, /* 97c9 */ 0xffff, /* 97ca */ 0xffff, /* 97cb */ 0xffff, /* 97cc */ 0xffff, /* 97cd */ 0xffff, /* 97ce */ 0xffff, /* 97cf */ 0xffff, /* 97d0 */ 0xffff, /* 97d1 */ 0xffff, /* 97d2 */ 0xffff, /* 97d3 */ 0xffff, /* 97d4 */ 0xffff, /* 97d5 */ 0xffff, /* 97d6 */ 0xffff, /* 97d7 */ 0xffff, /* 97d8 */ 0xffff, /* 97d9 */ 0xffff, /* 97da */ 0xffff, /* 97db */ 0xffff, /* 97dc */ 0xffff, /* 97dd */ 0xffff, /* 97de */ 0xffff, /* 97df */ 0xffff, /* 97e0 */ 0xffff, /* 97e1 */ 0xffff, /* 97e2 */ 0xffff, /* 97e3 */ 0xffff, /* 97e4 */ 0xffff, /* 97e5 */ 0xffff, /* 97e6 */ 0xffff, /* 97e7 */ 0xffff, /* 97e8 */ 0xffff, /* 97e9 */ 0xffff, /* 97ea */ 0xffff, /* 97eb */ 0xffff, /* 97ec */ 0xffff, /* 97ed */ 0xffff, /* 97ee */ 0xffff, /* 97ef */ 0xffff, /* 97f0 */ 0xffff, /* 97f1 */ 0xffff, /* 97f2 */ 0xffff, /* 97f3 */ 0xffff, /* 97f4 */ 0xffff, /* 97f5 */ 0xffff, /* 97f6 */ 0xffff, /* 97f7 */ 0xffff, /* 97f8 */ 0xffff, /* 97f9 */ 0xffff, /* 97fa */ 0xffff, /* 97fb */ 0xffff, /* 97fc */ 0xffff, /* 97fd */ 0xffff, /* 97fe */ 0xffff, /* 97ff */ 0xffff, /* 9800 */ 0xffff, /* 9801 */ 0xffff, /* 9802 */ 0xffff, /* 9803 */ 0xffff, /* 9804 */ 0xffff, /* 9805 */ 0xffff, /* 9806 */ 0xffff, /* 9807 */ 0xffff, /* 9808 */ 0xffff, /* 9809 */ 0xffff, /* 980a */ 0xffff, /* 980b */ 0xffff, /* 980c */ 0xffff, /* 980d */ 0xffff, /* 980e */ 0xffff, /* 980f */ 0xffff, /* 9810 */ 0xffff, /* 9811 */ 0xffff, /* 9812 */ 0xffff, /* 9813 */ 0xffff, /* 9814 */ 0xffff, /* 9815 */ 0xffff, /* 9816 */ 0xffff, /* 9817 */ 0xffff, /* 9818 */ 0xffff, /* 9819 */ 0xffff, /* 981a */ 0xffff, /* 981b */ 0xffff, /* 981c */ 0xffff, /* 981d */ 0xffff, /* 981e */ 0xffff, /* 981f */ 0xffff, /* 9820 */ 0xffff, /* 9821 */ 0xffff, /* 9822 */ 0xffff, /* 9823 */ 0xffff, /* 9824 */ 0xffff, /* 9825 */ 0xffff, /* 9826 */ 0xffff, /* 9827 */ 0xffff, /* 9828 */ 0xffff, /* 9829 */ 0xffff, /* 982a */ 0xffff, /* 982b */ 0xffff, /* 982c */ 0xffff, /* 982d */ 0xffff, /* 982e */ 0xffff, /* 982f */ 0xffff, /* 9830 */ 0xffff, /* 9831 */ 0xffff, /* 9832 */ 0xffff, /* 9833 */ 0xffff, /* 9834 */ 0xffff, /* 9835 */ 0xffff, /* 9836 */ 0xffff, /* 9837 */ 0xffff, /* 9838 */ 0xffff, /* 9839 */ 0xffff, /* 983a */ 0xffff, /* 983b */ 0xffff, /* 983c */ 0xffff, /* 983d */ 0xffff, /* 983e */ 0xffff, /* 983f */ 0xffff, /* 9840 */ 0xffff, /* 9841 */ 0xffff, /* 9842 */ 0xffff, /* 9843 */ 0xffff, /* 9844 */ 0xffff, /* 9845 */ 0xffff, /* 9846 */ 0xffff, /* 9847 */ 0xffff, /* 9848 */ 0xffff, /* 9849 */ 0xffff, /* 984a */ 0xffff, /* 984b */ 0xffff, /* 984c */ 0xffff, /* 984d */ 0xffff, /* 984e */ 0xffff, /* 984f */ 0xffff, /* 9850 */ 0xffff, /* 9851 */ 0xffff, /* 9852 */ 0xffff, /* 9853 */ 0xffff, /* 9854 */ 0xffff, /* 9855 */ 0xffff, /* 9856 */ 0xffff, /* 9857 */ 0xffff, /* 9858 */ 0xffff, /* 9859 */ 0xffff, /* 985a */ 0xffff, /* 985b */ 0xffff, /* 985c */ 0xffff, /* 985d */ 0xffff, /* 985e */ 0xffff, /* 985f */ 0xffff, /* 9860 */ 0xffff, /* 9861 */ 0xffff, /* 9862 */ 0xffff, /* 9863 */ 0xffff, /* 9864 */ 0xffff, /* 9865 */ 0xffff, /* 9866 */ 0xffff, /* 9867 */ 0xffff, /* 9868 */ 0xffff, /* 9869 */ 0xffff, /* 986a */ 0xffff, /* 986b */ 0xffff, /* 986c */ 0xffff, /* 986d */ 0xffff, /* 986e */ 0xffff, /* 986f */ 0xffff, /* 9870 */ 0xffff, /* 9871 */ 0xffff, /* 9872 */ 0xffff, /* 9873 */ 0xffff, /* 9874 */ 0xffff, /* 9875 */ 0xffff, /* 9876 */ 0xffff, /* 9877 */ 0xffff, /* 9878 */ 0xffff, /* 9879 */ 0xffff, /* 987a */ 0xffff, /* 987b */ 0xffff, /* 987c */ 0xffff, /* 987d */ 0xffff, /* 987e */ 0xffff, /* 987f */ 0xffff, /* 9880 */ 0xffff, /* 9881 */ 0xffff, /* 9882 */ 0xffff, /* 9883 */ 0xffff, /* 9884 */ 0xffff, /* 9885 */ 0xffff, /* 9886 */ 0xffff, /* 9887 */ 0xffff, /* 9888 */ 0xffff, /* 9889 */ 0xffff, /* 988a */ 0xffff, /* 988b */ 0xffff, /* 988c */ 0xffff, /* 988d */ 0xffff, /* 988e */ 0xffff, /* 988f */ 0xffff, /* 9890 */ 0xffff, /* 9891 */ 0xffff, /* 9892 */ 0xffff, /* 9893 */ 0xffff, /* 9894 */ 0xffff, /* 9895 */ 0xffff, /* 9896 */ 0xffff, /* 9897 */ 0xffff, /* 9898 */ 0xffff, /* 9899 */ 0xffff, /* 989a */ 0xffff, /* 989b */ 0xffff, /* 989c */ 0xffff, /* 989d */ 0xffff, /* 989e */ 0xffff, /* 989f */ 0xffff, /* 98a0 */ 0xffff, /* 98a1 */ 0xffff, /* 98a2 */ 0xffff, /* 98a3 */ 0xffff, /* 98a4 */ 0xffff, /* 98a5 */ 0xffff, /* 98a6 */ 0xffff, /* 98a7 */ 0xffff, /* 98a8 */ 0xffff, /* 98a9 */ 0xffff, /* 98aa */ 0xffff, /* 98ab */ 0xffff, /* 98ac */ 0xffff, /* 98ad */ 0xffff, /* 98ae */ 0xffff, /* 98af */ 0xffff, /* 98b0 */ 0xffff, /* 98b1 */ 0xffff, /* 98b2 */ 0xffff, /* 98b3 */ 0xffff, /* 98b4 */ 0xffff, /* 98b5 */ 0xffff, /* 98b6 */ 0xffff, /* 98b7 */ 0xffff, /* 98b8 */ 0xffff, /* 98b9 */ 0xffff, /* 98ba */ 0xffff, /* 98bb */ 0xffff, /* 98bc */ 0xffff, /* 98bd */ 0xffff, /* 98be */ 0xffff, /* 98bf */ 0xffff, /* 98c0 */ 0xffff, /* 98c1 */ 0xffff, /* 98c2 */ 0xffff, /* 98c3 */ 0xffff, /* 98c4 */ 0xffff, /* 98c5 */ 0xffff, /* 98c6 */ 0xffff, /* 98c7 */ 0xffff, /* 98c8 */ 0xffff, /* 98c9 */ 0xffff, /* 98ca */ 0xffff, /* 98cb */ 0xffff, /* 98cc */ 0xffff, /* 98cd */ 0xffff, /* 98ce */ 0xffff, /* 98cf */ 0xffff, /* 98d0 */ 0xffff, /* 98d1 */ 0xffff, /* 98d2 */ 0xffff, /* 98d3 */ 0xffff, /* 98d4 */ 0xffff, /* 98d5 */ 0xffff, /* 98d6 */ 0xffff, /* 98d7 */ 0xffff, /* 98d8 */ 0xffff, /* 98d9 */ 0xffff, /* 98da */ 0xffff, /* 98db */ 0xffff, /* 98dc */ 0xffff, /* 98dd */ 0xffff, /* 98de */ 0xffff, /* 98df */ 0xffff, /* 98e0 */ 0xffff, /* 98e1 */ 0xffff, /* 98e2 */ 0xffff, /* 98e3 */ 0xffff, /* 98e4 */ 0xffff, /* 98e5 */ 0xffff, /* 98e6 */ 0xffff, /* 98e7 */ 0xffff, /* 98e8 */ 0xffff, /* 98e9 */ 0xffff, /* 98ea */ 0xffff, /* 98eb */ 0xffff, /* 98ec */ 0xffff, /* 98ed */ 0xffff, /* 98ee */ 0xffff, /* 98ef */ 0xffff, /* 98f0 */ 0xffff, /* 98f1 */ 0xffff, /* 98f2 */ 0xffff, /* 98f3 */ 0xffff, /* 98f4 */ 0xffff, /* 98f5 */ 0xffff, /* 98f6 */ 0xffff, /* 98f7 */ 0xffff, /* 98f8 */ 0xffff, /* 98f9 */ 0xffff, /* 98fa */ 0xffff, /* 98fb */ 0xffff, /* 98fc */ 0xffff, /* 98fd */ 0xffff, /* 98fe */ 0xffff, /* 98ff */ 0xffff, /* 9900 */ 0xffff, /* 9901 */ 0xffff, /* 9902 */ 0xffff, /* 9903 */ 0xffff, /* 9904 */ 0xffff, /* 9905 */ 0xffff, /* 9906 */ 0xffff, /* 9907 */ 0xffff, /* 9908 */ 0xffff, /* 9909 */ 0xffff, /* 990a */ 0xffff, /* 990b */ 0xffff, /* 990c */ 0xffff, /* 990d */ 0xffff, /* 990e */ 0xffff, /* 990f */ 0xffff, /* 9910 */ 0xffff, /* 9911 */ 0xffff, /* 9912 */ 0xffff, /* 9913 */ 0xffff, /* 9914 */ 0xffff, /* 9915 */ 0xffff, /* 9916 */ 0xffff, /* 9917 */ 0xffff, /* 9918 */ 0xffff, /* 9919 */ 0xffff, /* 991a */ 0xffff, /* 991b */ 0xffff, /* 991c */ 0xffff, /* 991d */ 0xffff, /* 991e */ 0xffff, /* 991f */ 0xffff, /* 9920 */ 0xffff, /* 9921 */ 0xffff, /* 9922 */ 0xffff, /* 9923 */ 0xffff, /* 9924 */ 0xffff, /* 9925 */ 0xffff, /* 9926 */ 0xffff, /* 9927 */ 0xffff, /* 9928 */ 0xffff, /* 9929 */ 0xffff, /* 992a */ 0xffff, /* 992b */ 0xffff, /* 992c */ 0xffff, /* 992d */ 0xffff, /* 992e */ 0xffff, /* 992f */ 0xffff, /* 9930 */ 0xffff, /* 9931 */ 0xffff, /* 9932 */ 0xffff, /* 9933 */ 0xffff, /* 9934 */ 0xffff, /* 9935 */ 0xffff, /* 9936 */ 0xffff, /* 9937 */ 0xffff, /* 9938 */ 0xffff, /* 9939 */ 0xffff, /* 993a */ 0xffff, /* 993b */ 0xffff, /* 993c */ 0xffff, /* 993d */ 0xffff, /* 993e */ 0xffff, /* 993f */ 0xffff, /* 9940 */ 0xffff, /* 9941 */ 0xffff, /* 9942 */ 0xffff, /* 9943 */ 0xffff, /* 9944 */ 0xffff, /* 9945 */ 0xffff, /* 9946 */ 0xffff, /* 9947 */ 0xffff, /* 9948 */ 0xffff, /* 9949 */ 0xffff, /* 994a */ 0xffff, /* 994b */ 0xffff, /* 994c */ 0xffff, /* 994d */ 0xffff, /* 994e */ 0xffff, /* 994f */ 0xffff, /* 9950 */ 0xffff, /* 9951 */ 0xffff, /* 9952 */ 0xffff, /* 9953 */ 0xffff, /* 9954 */ 0xffff, /* 9955 */ 0xffff, /* 9956 */ 0xffff, /* 9957 */ 0xffff, /* 9958 */ 0xffff, /* 9959 */ 0xffff, /* 995a */ 0xffff, /* 995b */ 0xffff, /* 995c */ 0xffff, /* 995d */ 0xffff, /* 995e */ 0xffff, /* 995f */ 0xffff, /* 9960 */ 0xffff, /* 9961 */ 0xffff, /* 9962 */ 0xffff, /* 9963 */ 0xffff, /* 9964 */ 0xffff, /* 9965 */ 0xffff, /* 9966 */ 0xffff, /* 9967 */ 0xffff, /* 9968 */ 0xffff, /* 9969 */ 0xffff, /* 996a */ 0xffff, /* 996b */ 0xffff, /* 996c */ 0xffff, /* 996d */ 0xffff, /* 996e */ 0xffff, /* 996f */ 0xffff, /* 9970 */ 0xffff, /* 9971 */ 0xffff, /* 9972 */ 0xffff, /* 9973 */ 0xffff, /* 9974 */ 0xffff, /* 9975 */ 0xffff, /* 9976 */ 0xffff, /* 9977 */ 0xffff, /* 9978 */ 0xffff, /* 9979 */ 0xffff, /* 997a */ 0xffff, /* 997b */ 0xffff, /* 997c */ 0xffff, /* 997d */ 0xffff, /* 997e */ 0xffff, /* 997f */ 0xffff, /* 9980 */ 0xffff, /* 9981 */ 0xffff, /* 9982 */ 0xffff, /* 9983 */ 0xffff, /* 9984 */ 0xffff, /* 9985 */ 0xffff, /* 9986 */ 0xffff, /* 9987 */ 0xffff, /* 9988 */ 0xffff, /* 9989 */ 0xffff, /* 998a */ 0xffff, /* 998b */ 0xffff, /* 998c */ 0xffff, /* 998d */ 0xffff, /* 998e */ 0xffff, /* 998f */ 0xffff, /* 9990 */ 0xffff, /* 9991 */ 0xffff, /* 9992 */ 0xffff, /* 9993 */ 0xffff, /* 9994 */ 0xffff, /* 9995 */ 0xffff, /* 9996 */ 0xffff, /* 9997 */ 0xffff, /* 9998 */ 0xffff, /* 9999 */ 0xffff, /* 999a */ 0xffff, /* 999b */ 0xffff, /* 999c */ 0xffff, /* 999d */ 0xffff, /* 999e */ 0xffff, /* 999f */ 0xffff, /* 99a0 */ 0xffff, /* 99a1 */ 0xffff, /* 99a2 */ 0xffff, /* 99a3 */ 0xffff, /* 99a4 */ 0xffff, /* 99a5 */ 0xffff, /* 99a6 */ 0xffff, /* 99a7 */ 0xffff, /* 99a8 */ 0xffff, /* 99a9 */ 0xffff, /* 99aa */ 0xffff, /* 99ab */ 0xffff, /* 99ac */ 0xffff, /* 99ad */ 0xffff, /* 99ae */ 0xffff, /* 99af */ 0xffff, /* 99b0 */ 0xffff, /* 99b1 */ 0xffff, /* 99b2 */ 0xffff, /* 99b3 */ 0xffff, /* 99b4 */ 0xffff, /* 99b5 */ 0xffff, /* 99b6 */ 0xffff, /* 99b7 */ 0xffff, /* 99b8 */ 0xffff, /* 99b9 */ 0xffff, /* 99ba */ 0xffff, /* 99bb */ 0xffff, /* 99bc */ 0xffff, /* 99bd */ 0xffff, /* 99be */ 0xffff, /* 99bf */ 0xffff, /* 99c0 */ 0xffff, /* 99c1 */ 0xffff, /* 99c2 */ 0xffff, /* 99c3 */ 0xffff, /* 99c4 */ 0xffff, /* 99c5 */ 0xffff, /* 99c6 */ 0xffff, /* 99c7 */ 0xffff, /* 99c8 */ 0xffff, /* 99c9 */ 0xffff, /* 99ca */ 0xffff, /* 99cb */ 0xffff, /* 99cc */ 0xffff, /* 99cd */ 0xffff, /* 99ce */ 0xffff, /* 99cf */ 0xffff, /* 99d0 */ 0xffff, /* 99d1 */ 0xffff, /* 99d2 */ 0xffff, /* 99d3 */ 0xffff, /* 99d4 */ 0xffff, /* 99d5 */ 0xffff, /* 99d6 */ 0xffff, /* 99d7 */ 0xffff, /* 99d8 */ 0xffff, /* 99d9 */ 0xffff, /* 99da */ 0xffff, /* 99db */ 0xffff, /* 99dc */ 0xffff, /* 99dd */ 0xffff, /* 99de */ 0xffff, /* 99df */ 0xffff, /* 99e0 */ 0xffff, /* 99e1 */ 0xffff, /* 99e2 */ 0xffff, /* 99e3 */ 0xffff, /* 99e4 */ 0xffff, /* 99e5 */ 0xffff, /* 99e6 */ 0xffff, /* 99e7 */ 0xffff, /* 99e8 */ 0xffff, /* 99e9 */ 0xffff, /* 99ea */ 0xffff, /* 99eb */ 0xffff, /* 99ec */ 0xffff, /* 99ed */ 0xffff, /* 99ee */ 0xffff, /* 99ef */ 0xffff, /* 99f0 */ 0xffff, /* 99f1 */ 0xffff, /* 99f2 */ 0xffff, /* 99f3 */ 0xffff, /* 99f4 */ 0xffff, /* 99f5 */ 0xffff, /* 99f6 */ 0xffff, /* 99f7 */ 0xffff, /* 99f8 */ 0xffff, /* 99f9 */ 0xffff, /* 99fa */ 0xffff, /* 99fb */ 0xffff, /* 99fc */ 0xffff, /* 99fd */ 0xffff, /* 99fe */ 0xffff, /* 99ff */ 0xffff, /* 9a00 */ 0xffff, /* 9a01 */ 0xffff, /* 9a02 */ 0xffff, /* 9a03 */ 0xffff, /* 9a04 */ 0xffff, /* 9a05 */ 0xffff, /* 9a06 */ 0xffff, /* 9a07 */ 0xffff, /* 9a08 */ 0xffff, /* 9a09 */ 0xffff, /* 9a0a */ 0xffff, /* 9a0b */ 0xffff, /* 9a0c */ 0xffff, /* 9a0d */ 0xffff, /* 9a0e */ 0xffff, /* 9a0f */ 0xffff, /* 9a10 */ 0xffff, /* 9a11 */ 0xffff, /* 9a12 */ 0xffff, /* 9a13 */ 0xffff, /* 9a14 */ 0xffff, /* 9a15 */ 0xffff, /* 9a16 */ 0xffff, /* 9a17 */ 0xffff, /* 9a18 */ 0xffff, /* 9a19 */ 0xffff, /* 9a1a */ 0xffff, /* 9a1b */ 0xffff, /* 9a1c */ 0xffff, /* 9a1d */ 0xffff, /* 9a1e */ 0xffff, /* 9a1f */ 0xffff, /* 9a20 */ 0xffff, /* 9a21 */ 0xffff, /* 9a22 */ 0xffff, /* 9a23 */ 0xffff, /* 9a24 */ 0xffff, /* 9a25 */ 0xffff, /* 9a26 */ 0xffff, /* 9a27 */ 0xffff, /* 9a28 */ 0xffff, /* 9a29 */ 0xffff, /* 9a2a */ 0xffff, /* 9a2b */ 0xffff, /* 9a2c */ 0xffff, /* 9a2d */ 0xffff, /* 9a2e */ 0xffff, /* 9a2f */ 0xffff, /* 9a30 */ 0xffff, /* 9a31 */ 0xffff, /* 9a32 */ 0xffff, /* 9a33 */ 0xffff, /* 9a34 */ 0xffff, /* 9a35 */ 0xffff, /* 9a36 */ 0xffff, /* 9a37 */ 0xffff, /* 9a38 */ 0xffff, /* 9a39 */ 0xffff, /* 9a3a */ 0xffff, /* 9a3b */ 0xffff, /* 9a3c */ 0xffff, /* 9a3d */ 0xffff, /* 9a3e */ 0xffff, /* 9a3f */ 0xffff, /* 9a40 */ 0xffff, /* 9a41 */ 0xffff, /* 9a42 */ 0xffff, /* 9a43 */ 0xffff, /* 9a44 */ 0xffff, /* 9a45 */ 0xffff, /* 9a46 */ 0xffff, /* 9a47 */ 0xffff, /* 9a48 */ 0xffff, /* 9a49 */ 0xffff, /* 9a4a */ 0xffff, /* 9a4b */ 0xffff, /* 9a4c */ 0xffff, /* 9a4d */ 0xffff, /* 9a4e */ 0xffff, /* 9a4f */ 0xffff, /* 9a50 */ 0xffff, /* 9a51 */ 0xffff, /* 9a52 */ 0xffff, /* 9a53 */ 0xffff, /* 9a54 */ 0xffff, /* 9a55 */ 0xffff, /* 9a56 */ 0xffff, /* 9a57 */ 0xffff, /* 9a58 */ 0xffff, /* 9a59 */ 0xffff, /* 9a5a */ 0xffff, /* 9a5b */ 0xffff, /* 9a5c */ 0xffff, /* 9a5d */ 0xffff, /* 9a5e */ 0xffff, /* 9a5f */ 0xffff, /* 9a60 */ 0xffff, /* 9a61 */ 0xffff, /* 9a62 */ 0xffff, /* 9a63 */ 0xffff, /* 9a64 */ 0xffff, /* 9a65 */ 0xffff, /* 9a66 */ 0xffff, /* 9a67 */ 0xffff, /* 9a68 */ 0xffff, /* 9a69 */ 0xffff, /* 9a6a */ 0xffff, /* 9a6b */ 0xffff, /* 9a6c */ 0xffff, /* 9a6d */ 0xffff, /* 9a6e */ 0xffff, /* 9a6f */ 0xffff, /* 9a70 */ 0xffff, /* 9a71 */ 0xffff, /* 9a72 */ 0xffff, /* 9a73 */ 0xffff, /* 9a74 */ 0xffff, /* 9a75 */ 0xffff, /* 9a76 */ 0xffff, /* 9a77 */ 0xffff, /* 9a78 */ 0xffff, /* 9a79 */ 0xffff, /* 9a7a */ 0xffff, /* 9a7b */ 0xffff, /* 9a7c */ 0xffff, /* 9a7d */ 0xffff, /* 9a7e */ 0xffff, /* 9a7f */ 0xffff, /* 9a80 */ 0xffff, /* 9a81 */ 0xffff, /* 9a82 */ 0xffff, /* 9a83 */ 0xffff, /* 9a84 */ 0xffff, /* 9a85 */ 0xffff, /* 9a86 */ 0xffff, /* 9a87 */ 0xffff, /* 9a88 */ 0xffff, /* 9a89 */ 0xffff, /* 9a8a */ 0xffff, /* 9a8b */ 0xffff, /* 9a8c */ 0xffff, /* 9a8d */ 0xffff, /* 9a8e */ 0xffff, /* 9a8f */ 0xffff, /* 9a90 */ 0xffff, /* 9a91 */ 0xffff, /* 9a92 */ 0xffff, /* 9a93 */ 0xffff, /* 9a94 */ 0xffff, /* 9a95 */ 0xffff, /* 9a96 */ 0xffff, /* 9a97 */ 0xffff, /* 9a98 */ 0xffff, /* 9a99 */ 0xffff, /* 9a9a */ 0xffff, /* 9a9b */ 0xffff, /* 9a9c */ 0xffff, /* 9a9d */ 0xffff, /* 9a9e */ 0xffff, /* 9a9f */ 0xffff, /* 9aa0 */ 0xffff, /* 9aa1 */ 0xffff, /* 9aa2 */ 0xffff, /* 9aa3 */ 0xffff, /* 9aa4 */ 0xffff, /* 9aa5 */ 0xffff, /* 9aa6 */ 0xffff, /* 9aa7 */ 0xffff, /* 9aa8 */ 0xffff, /* 9aa9 */ 0xffff, /* 9aaa */ 0xffff, /* 9aab */ 0xffff, /* 9aac */ 0xffff, /* 9aad */ 0xffff, /* 9aae */ 0xffff, /* 9aaf */ 0xffff, /* 9ab0 */ 0xffff, /* 9ab1 */ 0xffff, /* 9ab2 */ 0xffff, /* 9ab3 */ 0xffff, /* 9ab4 */ 0xffff, /* 9ab5 */ 0xffff, /* 9ab6 */ 0xffff, /* 9ab7 */ 0xffff, /* 9ab8 */ 0xffff, /* 9ab9 */ 0xffff, /* 9aba */ 0xffff, /* 9abb */ 0xffff, /* 9abc */ 0xffff, /* 9abd */ 0xffff, /* 9abe */ 0xffff, /* 9abf */ 0xffff, /* 9ac0 */ 0xffff, /* 9ac1 */ 0xffff, /* 9ac2 */ 0xffff, /* 9ac3 */ 0xffff, /* 9ac4 */ 0xffff, /* 9ac5 */ 0xffff, /* 9ac6 */ 0xffff, /* 9ac7 */ 0xffff, /* 9ac8 */ 0xffff, /* 9ac9 */ 0xffff, /* 9aca */ 0xffff, /* 9acb */ 0xffff, /* 9acc */ 0xffff, /* 9acd */ 0xffff, /* 9ace */ 0xffff, /* 9acf */ 0xffff, /* 9ad0 */ 0xffff, /* 9ad1 */ 0xffff, /* 9ad2 */ 0xffff, /* 9ad3 */ 0xffff, /* 9ad4 */ 0xffff, /* 9ad5 */ 0xffff, /* 9ad6 */ 0xffff, /* 9ad7 */ 0xffff, /* 9ad8 */ 0xffff, /* 9ad9 */ 0xffff, /* 9ada */ 0xffff, /* 9adb */ 0xffff, /* 9adc */ 0xffff, /* 9add */ 0xffff, /* 9ade */ 0xffff, /* 9adf */ 0xffff, /* 9ae0 */ 0xffff, /* 9ae1 */ 0xffff, /* 9ae2 */ 0xffff, /* 9ae3 */ 0xffff, /* 9ae4 */ 0xffff, /* 9ae5 */ 0xffff, /* 9ae6 */ 0xffff, /* 9ae7 */ 0xffff, /* 9ae8 */ 0xffff, /* 9ae9 */ 0xffff, /* 9aea */ 0xffff, /* 9aeb */ 0xffff, /* 9aec */ 0xffff, /* 9aed */ 0xffff, /* 9aee */ 0xffff, /* 9aef */ 0xffff, /* 9af0 */ 0xffff, /* 9af1 */ 0xffff, /* 9af2 */ 0xffff, /* 9af3 */ 0xffff, /* 9af4 */ 0xffff, /* 9af5 */ 0xffff, /* 9af6 */ 0xffff, /* 9af7 */ 0xffff, /* 9af8 */ 0xffff, /* 9af9 */ 0xffff, /* 9afa */ 0xffff, /* 9afb */ 0xffff, /* 9afc */ 0xffff, /* 9afd */ 0xffff, /* 9afe */ 0xffff, /* 9aff */ 0xffff, /* 9b00 */ 0xffff, /* 9b01 */ 0xffff, /* 9b02 */ 0xffff, /* 9b03 */ 0xffff, /* 9b04 */ 0xffff, /* 9b05 */ 0xffff, /* 9b06 */ 0xffff, /* 9b07 */ 0xffff, /* 9b08 */ 0xffff, /* 9b09 */ 0xffff, /* 9b0a */ 0xffff, /* 9b0b */ 0xffff, /* 9b0c */ 0xffff, /* 9b0d */ 0xffff, /* 9b0e */ 0xffff, /* 9b0f */ 0xffff, /* 9b10 */ 0xffff, /* 9b11 */ 0xffff, /* 9b12 */ 0xffff, /* 9b13 */ 0xffff, /* 9b14 */ 0xffff, /* 9b15 */ 0xffff, /* 9b16 */ 0xffff, /* 9b17 */ 0xffff, /* 9b18 */ 0xffff, /* 9b19 */ 0xffff, /* 9b1a */ 0xffff, /* 9b1b */ 0xffff, /* 9b1c */ 0xffff, /* 9b1d */ 0xffff, /* 9b1e */ 0xffff, /* 9b1f */ 0xffff, /* 9b20 */ 0xffff, /* 9b21 */ 0xffff, /* 9b22 */ 0xffff, /* 9b23 */ 0xffff, /* 9b24 */ 0xffff, /* 9b25 */ 0xffff, /* 9b26 */ 0xffff, /* 9b27 */ 0xffff, /* 9b28 */ 0xffff, /* 9b29 */ 0xffff, /* 9b2a */ 0xffff, /* 9b2b */ 0xffff, /* 9b2c */ 0xffff, /* 9b2d */ 0xffff, /* 9b2e */ 0xffff, /* 9b2f */ 0xffff, /* 9b30 */ 0xffff, /* 9b31 */ 0xffff, /* 9b32 */ 0xffff, /* 9b33 */ 0xffff, /* 9b34 */ 0xffff, /* 9b35 */ 0xffff, /* 9b36 */ 0xffff, /* 9b37 */ 0xffff, /* 9b38 */ 0xffff, /* 9b39 */ 0xffff, /* 9b3a */ 0xffff, /* 9b3b */ 0xffff, /* 9b3c */ 0xffff, /* 9b3d */ 0xffff, /* 9b3e */ 0xffff, /* 9b3f */ 0xffff, /* 9b40 */ 0xffff, /* 9b41 */ 0xffff, /* 9b42 */ 0xffff, /* 9b43 */ 0xffff, /* 9b44 */ 0xffff, /* 9b45 */ 0xffff, /* 9b46 */ 0xffff, /* 9b47 */ 0xffff, /* 9b48 */ 0xffff, /* 9b49 */ 0xffff, /* 9b4a */ 0xffff, /* 9b4b */ 0xffff, /* 9b4c */ 0xffff, /* 9b4d */ 0xffff, /* 9b4e */ 0xffff, /* 9b4f */ 0xffff, /* 9b50 */ 0xffff, /* 9b51 */ 0xffff, /* 9b52 */ 0xffff, /* 9b53 */ 0xffff, /* 9b54 */ 0xffff, /* 9b55 */ 0xffff, /* 9b56 */ 0xffff, /* 9b57 */ 0xffff, /* 9b58 */ 0xffff, /* 9b59 */ 0xffff, /* 9b5a */ 0xffff, /* 9b5b */ 0xffff, /* 9b5c */ 0xffff, /* 9b5d */ 0xffff, /* 9b5e */ 0xffff, /* 9b5f */ 0xffff, /* 9b60 */ 0xffff, /* 9b61 */ 0xffff, /* 9b62 */ 0xffff, /* 9b63 */ 0xffff, /* 9b64 */ 0xffff, /* 9b65 */ 0xffff, /* 9b66 */ 0xffff, /* 9b67 */ 0xffff, /* 9b68 */ 0xffff, /* 9b69 */ 0xffff, /* 9b6a */ 0xffff, /* 9b6b */ 0xffff, /* 9b6c */ 0xffff, /* 9b6d */ 0xffff, /* 9b6e */ 0xffff, /* 9b6f */ 0xffff, /* 9b70 */ 0xffff, /* 9b71 */ 0xffff, /* 9b72 */ 0xffff, /* 9b73 */ 0xffff, /* 9b74 */ 0xffff, /* 9b75 */ 0xffff, /* 9b76 */ 0xffff, /* 9b77 */ 0xffff, /* 9b78 */ 0xffff, /* 9b79 */ 0xffff, /* 9b7a */ 0xffff, /* 9b7b */ 0xffff, /* 9b7c */ 0xffff, /* 9b7d */ 0xffff, /* 9b7e */ 0xffff, /* 9b7f */ 0xffff, /* 9b80 */ 0xffff, /* 9b81 */ 0xffff, /* 9b82 */ 0xffff, /* 9b83 */ 0xffff, /* 9b84 */ 0xffff, /* 9b85 */ 0xffff, /* 9b86 */ 0xffff, /* 9b87 */ 0xffff, /* 9b88 */ 0xffff, /* 9b89 */ 0xffff, /* 9b8a */ 0xffff, /* 9b8b */ 0xffff, /* 9b8c */ 0xffff, /* 9b8d */ 0xffff, /* 9b8e */ 0xffff, /* 9b8f */ 0xffff, /* 9b90 */ 0xffff, /* 9b91 */ 0xffff, /* 9b92 */ 0xffff, /* 9b93 */ 0xffff, /* 9b94 */ 0xffff, /* 9b95 */ 0xffff, /* 9b96 */ 0xffff, /* 9b97 */ 0xffff, /* 9b98 */ 0xffff, /* 9b99 */ 0xffff, /* 9b9a */ 0xffff, /* 9b9b */ 0xffff, /* 9b9c */ 0xffff, /* 9b9d */ 0xffff, /* 9b9e */ 0xffff, /* 9b9f */ 0xffff, /* 9ba0 */ 0xffff, /* 9ba1 */ 0xffff, /* 9ba2 */ 0xffff, /* 9ba3 */ 0xffff, /* 9ba4 */ 0xffff, /* 9ba5 */ 0xffff, /* 9ba6 */ 0xffff, /* 9ba7 */ 0xffff, /* 9ba8 */ 0xffff, /* 9ba9 */ 0xffff, /* 9baa */ 0xffff, /* 9bab */ 0xffff, /* 9bac */ 0xffff, /* 9bad */ 0xffff, /* 9bae */ 0xffff, /* 9baf */ 0xffff, /* 9bb0 */ 0xffff, /* 9bb1 */ 0xffff, /* 9bb2 */ 0xffff, /* 9bb3 */ 0xffff, /* 9bb4 */ 0xffff, /* 9bb5 */ 0xffff, /* 9bb6 */ 0xffff, /* 9bb7 */ 0xffff, /* 9bb8 */ 0xffff, /* 9bb9 */ 0xffff, /* 9bba */ 0xffff, /* 9bbb */ 0xffff, /* 9bbc */ 0xffff, /* 9bbd */ 0xffff, /* 9bbe */ 0xffff, /* 9bbf */ 0xffff, /* 9bc0 */ 0xffff, /* 9bc1 */ 0xffff, /* 9bc2 */ 0xffff, /* 9bc3 */ 0xffff, /* 9bc4 */ 0xffff, /* 9bc5 */ 0xffff, /* 9bc6 */ 0xffff, /* 9bc7 */ 0xffff, /* 9bc8 */ 0xffff, /* 9bc9 */ 0xffff, /* 9bca */ 0xffff, /* 9bcb */ 0xffff, /* 9bcc */ 0xffff, /* 9bcd */ 0xffff, /* 9bce */ 0xffff, /* 9bcf */ 0xffff, /* 9bd0 */ 0xffff, /* 9bd1 */ 0xffff, /* 9bd2 */ 0xffff, /* 9bd3 */ 0xffff, /* 9bd4 */ 0xffff, /* 9bd5 */ 0xffff, /* 9bd6 */ 0xffff, /* 9bd7 */ 0xffff, /* 9bd8 */ 0xffff, /* 9bd9 */ 0xffff, /* 9bda */ 0xffff, /* 9bdb */ 0xffff, /* 9bdc */ 0xffff, /* 9bdd */ 0xffff, /* 9bde */ 0xffff, /* 9bdf */ 0xffff, /* 9be0 */ 0xffff, /* 9be1 */ 0xffff, /* 9be2 */ 0xffff, /* 9be3 */ 0xffff, /* 9be4 */ 0xffff, /* 9be5 */ 0xffff, /* 9be6 */ 0xffff, /* 9be7 */ 0xffff, /* 9be8 */ 0xffff, /* 9be9 */ 0xffff, /* 9bea */ 0xffff, /* 9beb */ 0xffff, /* 9bec */ 0xffff, /* 9bed */ 0xffff, /* 9bee */ 0xffff, /* 9bef */ 0xffff, /* 9bf0 */ 0xffff, /* 9bf1 */ 0xffff, /* 9bf2 */ 0xffff, /* 9bf3 */ 0xffff, /* 9bf4 */ 0xffff, /* 9bf5 */ 0xffff, /* 9bf6 */ 0xffff, /* 9bf7 */ 0xffff, /* 9bf8 */ 0xffff, /* 9bf9 */ 0xffff, /* 9bfa */ 0xffff, /* 9bfb */ 0xffff, /* 9bfc */ 0xffff, /* 9bfd */ 0xffff, /* 9bfe */ 0xffff, /* 9bff */ 0xffff, /* 9c00 */ 0xffff, /* 9c01 */ 0xffff, /* 9c02 */ 0xffff, /* 9c03 */ 0xffff, /* 9c04 */ 0xffff, /* 9c05 */ 0xffff, /* 9c06 */ 0xffff, /* 9c07 */ 0xffff, /* 9c08 */ 0xffff, /* 9c09 */ 0xffff, /* 9c0a */ 0xffff, /* 9c0b */ 0xffff, /* 9c0c */ 0xffff, /* 9c0d */ 0xffff, /* 9c0e */ 0xffff, /* 9c0f */ 0xffff, /* 9c10 */ 0xffff, /* 9c11 */ 0xffff, /* 9c12 */ 0xffff, /* 9c13 */ 0xffff, /* 9c14 */ 0xffff, /* 9c15 */ 0xffff, /* 9c16 */ 0xffff, /* 9c17 */ 0xffff, /* 9c18 */ 0xffff, /* 9c19 */ 0xffff, /* 9c1a */ 0xffff, /* 9c1b */ 0xffff, /* 9c1c */ 0xffff, /* 9c1d */ 0xffff, /* 9c1e */ 0xffff, /* 9c1f */ 0xffff, /* 9c20 */ 0xffff, /* 9c21 */ 0xffff, /* 9c22 */ 0xffff, /* 9c23 */ 0xffff, /* 9c24 */ 0xffff, /* 9c25 */ 0xffff, /* 9c26 */ 0xffff, /* 9c27 */ 0xffff, /* 9c28 */ 0xffff, /* 9c29 */ 0xffff, /* 9c2a */ 0xffff, /* 9c2b */ 0xffff, /* 9c2c */ 0xffff, /* 9c2d */ 0xffff, /* 9c2e */ 0xffff, /* 9c2f */ 0xffff, /* 9c30 */ 0xffff, /* 9c31 */ 0xffff, /* 9c32 */ 0xffff, /* 9c33 */ 0xffff, /* 9c34 */ 0xffff, /* 9c35 */ 0xffff, /* 9c36 */ 0xffff, /* 9c37 */ 0xffff, /* 9c38 */ 0xffff, /* 9c39 */ 0xffff, /* 9c3a */ 0xffff, /* 9c3b */ 0xffff, /* 9c3c */ 0xffff, /* 9c3d */ 0xffff, /* 9c3e */ 0xffff, /* 9c3f */ 0xffff, /* 9c40 */ 0xffff, /* 9c41 */ 0xffff, /* 9c42 */ 0xffff, /* 9c43 */ 0xffff, /* 9c44 */ 0xffff, /* 9c45 */ 0xffff, /* 9c46 */ 0xffff, /* 9c47 */ 0xffff, /* 9c48 */ 0xffff, /* 9c49 */ 0xffff, /* 9c4a */ 0xffff, /* 9c4b */ 0xffff, /* 9c4c */ 0xffff, /* 9c4d */ 0xffff, /* 9c4e */ 0xffff, /* 9c4f */ 0xffff, /* 9c50 */ 0xffff, /* 9c51 */ 0xffff, /* 9c52 */ 0xffff, /* 9c53 */ 0xffff, /* 9c54 */ 0xffff, /* 9c55 */ 0xffff, /* 9c56 */ 0xffff, /* 9c57 */ 0xffff, /* 9c58 */ 0xffff, /* 9c59 */ 0xffff, /* 9c5a */ 0xffff, /* 9c5b */ 0xffff, /* 9c5c */ 0xffff, /* 9c5d */ 0xffff, /* 9c5e */ 0xffff, /* 9c5f */ 0xffff, /* 9c60 */ 0xffff, /* 9c61 */ 0xffff, /* 9c62 */ 0xffff, /* 9c63 */ 0xffff, /* 9c64 */ 0xffff, /* 9c65 */ 0xffff, /* 9c66 */ 0xffff, /* 9c67 */ 0xffff, /* 9c68 */ 0xffff, /* 9c69 */ 0xffff, /* 9c6a */ 0xffff, /* 9c6b */ 0xffff, /* 9c6c */ 0xffff, /* 9c6d */ 0xffff, /* 9c6e */ 0xffff, /* 9c6f */ 0xffff, /* 9c70 */ 0xffff, /* 9c71 */ 0xffff, /* 9c72 */ 0xffff, /* 9c73 */ 0xffff, /* 9c74 */ 0xffff, /* 9c75 */ 0xffff, /* 9c76 */ 0xffff, /* 9c77 */ 0xffff, /* 9c78 */ 0xffff, /* 9c79 */ 0xffff, /* 9c7a */ 0xffff, /* 9c7b */ 0xffff, /* 9c7c */ 0xffff, /* 9c7d */ 0xffff, /* 9c7e */ 0xffff, /* 9c7f */ 0xffff, /* 9c80 */ 0xffff, /* 9c81 */ 0xffff, /* 9c82 */ 0xffff, /* 9c83 */ 0xffff, /* 9c84 */ 0xffff, /* 9c85 */ 0xffff, /* 9c86 */ 0xffff, /* 9c87 */ 0xffff, /* 9c88 */ 0xffff, /* 9c89 */ 0xffff, /* 9c8a */ 0xffff, /* 9c8b */ 0xffff, /* 9c8c */ 0xffff, /* 9c8d */ 0xffff, /* 9c8e */ 0xffff, /* 9c8f */ 0xffff, /* 9c90 */ 0xffff, /* 9c91 */ 0xffff, /* 9c92 */ 0xffff, /* 9c93 */ 0xffff, /* 9c94 */ 0xffff, /* 9c95 */ 0xffff, /* 9c96 */ 0xffff, /* 9c97 */ 0xffff, /* 9c98 */ 0xffff, /* 9c99 */ 0xffff, /* 9c9a */ 0xffff, /* 9c9b */ 0xffff, /* 9c9c */ 0xffff, /* 9c9d */ 0xffff, /* 9c9e */ 0xffff, /* 9c9f */ 0xffff, /* 9ca0 */ 0xffff, /* 9ca1 */ 0xffff, /* 9ca2 */ 0xffff, /* 9ca3 */ 0xffff, /* 9ca4 */ 0xffff, /* 9ca5 */ 0xffff, /* 9ca6 */ 0xffff, /* 9ca7 */ 0xffff, /* 9ca8 */ 0xffff, /* 9ca9 */ 0xffff, /* 9caa */ 0xffff, /* 9cab */ 0xffff, /* 9cac */ 0xffff, /* 9cad */ 0xffff, /* 9cae */ 0xffff, /* 9caf */ 0xffff, /* 9cb0 */ 0xffff, /* 9cb1 */ 0xffff, /* 9cb2 */ 0xffff, /* 9cb3 */ 0xffff, /* 9cb4 */ 0xffff, /* 9cb5 */ 0xffff, /* 9cb6 */ 0xffff, /* 9cb7 */ 0xffff, /* 9cb8 */ 0xffff, /* 9cb9 */ 0xffff, /* 9cba */ 0xffff, /* 9cbb */ 0xffff, /* 9cbc */ 0xffff, /* 9cbd */ 0xffff, /* 9cbe */ 0xffff, /* 9cbf */ 0xffff, /* 9cc0 */ 0xffff, /* 9cc1 */ 0xffff, /* 9cc2 */ 0xffff, /* 9cc3 */ 0xffff, /* 9cc4 */ 0xffff, /* 9cc5 */ 0xffff, /* 9cc6 */ 0xffff, /* 9cc7 */ 0xffff, /* 9cc8 */ 0xffff, /* 9cc9 */ 0xffff, /* 9cca */ 0xffff, /* 9ccb */ 0xffff, /* 9ccc */ 0xffff, /* 9ccd */ 0xffff, /* 9cce */ 0xffff, /* 9ccf */ 0xffff, /* 9cd0 */ 0xffff, /* 9cd1 */ 0xffff, /* 9cd2 */ 0xffff, /* 9cd3 */ 0xffff, /* 9cd4 */ 0xffff, /* 9cd5 */ 0xffff, /* 9cd6 */ 0xffff, /* 9cd7 */ 0xffff, /* 9cd8 */ 0xffff, /* 9cd9 */ 0xffff, /* 9cda */ 0xffff, /* 9cdb */ 0xffff, /* 9cdc */ 0xffff, /* 9cdd */ 0xffff, /* 9cde */ 0xffff, /* 9cdf */ 0xffff, /* 9ce0 */ 0xffff, /* 9ce1 */ 0xffff, /* 9ce2 */ 0xffff, /* 9ce3 */ 0xffff, /* 9ce4 */ 0xffff, /* 9ce5 */ 0xffff, /* 9ce6 */ 0xffff, /* 9ce7 */ 0xffff, /* 9ce8 */ 0xffff, /* 9ce9 */ 0xffff, /* 9cea */ 0xffff, /* 9ceb */ 0xffff, /* 9cec */ 0xffff, /* 9ced */ 0xffff, /* 9cee */ 0xffff, /* 9cef */ 0xffff, /* 9cf0 */ 0xffff, /* 9cf1 */ 0xffff, /* 9cf2 */ 0xffff, /* 9cf3 */ 0xffff, /* 9cf4 */ 0xffff, /* 9cf5 */ 0xffff, /* 9cf6 */ 0xffff, /* 9cf7 */ 0xffff, /* 9cf8 */ 0xffff, /* 9cf9 */ 0xffff, /* 9cfa */ 0xffff, /* 9cfb */ 0xffff, /* 9cfc */ 0xffff, /* 9cfd */ 0xffff, /* 9cfe */ 0xffff, /* 9cff */ 0xffff, /* 9d00 */ 0xffff, /* 9d01 */ 0xffff, /* 9d02 */ 0xffff, /* 9d03 */ 0xffff, /* 9d04 */ 0xffff, /* 9d05 */ 0xffff, /* 9d06 */ 0xffff, /* 9d07 */ 0xffff, /* 9d08 */ 0xffff, /* 9d09 */ 0xffff, /* 9d0a */ 0xffff, /* 9d0b */ 0xffff, /* 9d0c */ 0xffff, /* 9d0d */ 0xffff, /* 9d0e */ 0xffff, /* 9d0f */ 0xffff, /* 9d10 */ 0xffff, /* 9d11 */ 0xffff, /* 9d12 */ 0xffff, /* 9d13 */ 0xffff, /* 9d14 */ 0xffff, /* 9d15 */ 0xffff, /* 9d16 */ 0xffff, /* 9d17 */ 0xffff, /* 9d18 */ 0xffff, /* 9d19 */ 0xffff, /* 9d1a */ 0xffff, /* 9d1b */ 0xffff, /* 9d1c */ 0xffff, /* 9d1d */ 0xffff, /* 9d1e */ 0xffff, /* 9d1f */ 0xffff, /* 9d20 */ 0xffff, /* 9d21 */ 0xffff, /* 9d22 */ 0xffff, /* 9d23 */ 0xffff, /* 9d24 */ 0xffff, /* 9d25 */ 0xffff, /* 9d26 */ 0xffff, /* 9d27 */ 0xffff, /* 9d28 */ 0xffff, /* 9d29 */ 0xffff, /* 9d2a */ 0xffff, /* 9d2b */ 0xffff, /* 9d2c */ 0xffff, /* 9d2d */ 0xffff, /* 9d2e */ 0xffff, /* 9d2f */ 0xffff, /* 9d30 */ 0xffff, /* 9d31 */ 0xffff, /* 9d32 */ 0xffff, /* 9d33 */ 0xffff, /* 9d34 */ 0xffff, /* 9d35 */ 0xffff, /* 9d36 */ 0xffff, /* 9d37 */ 0xffff, /* 9d38 */ 0xffff, /* 9d39 */ 0xffff, /* 9d3a */ 0xffff, /* 9d3b */ 0xffff, /* 9d3c */ 0xffff, /* 9d3d */ 0xffff, /* 9d3e */ 0xffff, /* 9d3f */ 0xffff, /* 9d40 */ 0xffff, /* 9d41 */ 0xffff, /* 9d42 */ 0xffff, /* 9d43 */ 0xffff, /* 9d44 */ 0xffff, /* 9d45 */ 0xffff, /* 9d46 */ 0xffff, /* 9d47 */ 0xffff, /* 9d48 */ 0xffff, /* 9d49 */ 0xffff, /* 9d4a */ 0xffff, /* 9d4b */ 0xffff, /* 9d4c */ 0xffff, /* 9d4d */ 0xffff, /* 9d4e */ 0xffff, /* 9d4f */ 0xffff, /* 9d50 */ 0xffff, /* 9d51 */ 0xffff, /* 9d52 */ 0xffff, /* 9d53 */ 0xffff, /* 9d54 */ 0xffff, /* 9d55 */ 0xffff, /* 9d56 */ 0xffff, /* 9d57 */ 0xffff, /* 9d58 */ 0xffff, /* 9d59 */ 0xffff, /* 9d5a */ 0xffff, /* 9d5b */ 0xffff, /* 9d5c */ 0xffff, /* 9d5d */ 0xffff, /* 9d5e */ 0xffff, /* 9d5f */ 0xffff, /* 9d60 */ 0xffff, /* 9d61 */ 0xffff, /* 9d62 */ 0xffff, /* 9d63 */ 0xffff, /* 9d64 */ 0xffff, /* 9d65 */ 0xffff, /* 9d66 */ 0xffff, /* 9d67 */ 0xffff, /* 9d68 */ 0xffff, /* 9d69 */ 0xffff, /* 9d6a */ 0xffff, /* 9d6b */ 0xffff, /* 9d6c */ 0xffff, /* 9d6d */ 0xffff, /* 9d6e */ 0xffff, /* 9d6f */ 0xffff, /* 9d70 */ 0xffff, /* 9d71 */ 0xffff, /* 9d72 */ 0xffff, /* 9d73 */ 0xffff, /* 9d74 */ 0xffff, /* 9d75 */ 0xffff, /* 9d76 */ 0xffff, /* 9d77 */ 0xffff, /* 9d78 */ 0xffff, /* 9d79 */ 0xffff, /* 9d7a */ 0xffff, /* 9d7b */ 0xffff, /* 9d7c */ 0xffff, /* 9d7d */ 0xffff, /* 9d7e */ 0xffff, /* 9d7f */ 0xffff, /* 9d80 */ 0xffff, /* 9d81 */ 0xffff, /* 9d82 */ 0xffff, /* 9d83 */ 0xffff, /* 9d84 */ 0xffff, /* 9d85 */ 0xffff, /* 9d86 */ 0xffff, /* 9d87 */ 0xffff, /* 9d88 */ 0xffff, /* 9d89 */ 0xffff, /* 9d8a */ 0xffff, /* 9d8b */ 0xffff, /* 9d8c */ 0xffff, /* 9d8d */ 0xffff, /* 9d8e */ 0xffff, /* 9d8f */ 0xffff, /* 9d90 */ 0xffff, /* 9d91 */ 0xffff, /* 9d92 */ 0xffff, /* 9d93 */ 0xffff, /* 9d94 */ 0xffff, /* 9d95 */ 0xffff, /* 9d96 */ 0xffff, /* 9d97 */ 0xffff, /* 9d98 */ 0xffff, /* 9d99 */ 0xffff, /* 9d9a */ 0xffff, /* 9d9b */ 0xffff, /* 9d9c */ 0xffff, /* 9d9d */ 0xffff, /* 9d9e */ 0xffff, /* 9d9f */ 0xffff, /* 9da0 */ 0xffff, /* 9da1 */ 0xffff, /* 9da2 */ 0xffff, /* 9da3 */ 0xffff, /* 9da4 */ 0xffff, /* 9da5 */ 0xffff, /* 9da6 */ 0xffff, /* 9da7 */ 0xffff, /* 9da8 */ 0xffff, /* 9da9 */ 0xffff, /* 9daa */ 0xffff, /* 9dab */ 0xffff, /* 9dac */ 0xffff, /* 9dad */ 0xffff, /* 9dae */ 0xffff, /* 9daf */ 0xffff, /* 9db0 */ 0xffff, /* 9db1 */ 0xffff, /* 9db2 */ 0xffff, /* 9db3 */ 0xffff, /* 9db4 */ 0xffff, /* 9db5 */ 0xffff, /* 9db6 */ 0xffff, /* 9db7 */ 0xffff, /* 9db8 */ 0xffff, /* 9db9 */ 0xffff, /* 9dba */ 0xffff, /* 9dbb */ 0xffff, /* 9dbc */ 0xffff, /* 9dbd */ 0xffff, /* 9dbe */ 0xffff, /* 9dbf */ 0xffff, /* 9dc0 */ 0xffff, /* 9dc1 */ 0xffff, /* 9dc2 */ 0xffff, /* 9dc3 */ 0xffff, /* 9dc4 */ 0xffff, /* 9dc5 */ 0xffff, /* 9dc6 */ 0xffff, /* 9dc7 */ 0xffff, /* 9dc8 */ 0xffff, /* 9dc9 */ 0xffff, /* 9dca */ 0xffff, /* 9dcb */ 0xffff, /* 9dcc */ 0xffff, /* 9dcd */ 0xffff, /* 9dce */ 0xffff, /* 9dcf */ 0xffff, /* 9dd0 */ 0xffff, /* 9dd1 */ 0xffff, /* 9dd2 */ 0xffff, /* 9dd3 */ 0xffff, /* 9dd4 */ 0xffff, /* 9dd5 */ 0xffff, /* 9dd6 */ 0xffff, /* 9dd7 */ 0xffff, /* 9dd8 */ 0xffff, /* 9dd9 */ 0xffff, /* 9dda */ 0xffff, /* 9ddb */ 0xffff, /* 9ddc */ 0xffff, /* 9ddd */ 0xffff, /* 9dde */ 0xffff, /* 9ddf */ 0xffff, /* 9de0 */ 0xffff, /* 9de1 */ 0xffff, /* 9de2 */ 0xffff, /* 9de3 */ 0xffff, /* 9de4 */ 0xffff, /* 9de5 */ 0xffff, /* 9de6 */ 0xffff, /* 9de7 */ 0xffff, /* 9de8 */ 0xffff, /* 9de9 */ 0xffff, /* 9dea */ 0xffff, /* 9deb */ 0xffff, /* 9dec */ 0xffff, /* 9ded */ 0xffff, /* 9dee */ 0xffff, /* 9def */ 0xffff, /* 9df0 */ 0xffff, /* 9df1 */ 0xffff, /* 9df2 */ 0xffff, /* 9df3 */ 0xffff, /* 9df4 */ 0xffff, /* 9df5 */ 0xffff, /* 9df6 */ 0xffff, /* 9df7 */ 0xffff, /* 9df8 */ 0xffff, /* 9df9 */ 0xffff, /* 9dfa */ 0xffff, /* 9dfb */ 0xffff, /* 9dfc */ 0xffff, /* 9dfd */ 0xffff, /* 9dfe */ 0xffff, /* 9dff */ 0xffff, /* 9e00 */ 0xffff, /* 9e01 */ 0xffff, /* 9e02 */ 0xffff, /* 9e03 */ 0xffff, /* 9e04 */ 0xffff, /* 9e05 */ 0xffff, /* 9e06 */ 0xffff, /* 9e07 */ 0xffff, /* 9e08 */ 0xffff, /* 9e09 */ 0xffff, /* 9e0a */ 0xffff, /* 9e0b */ 0xffff, /* 9e0c */ 0xffff, /* 9e0d */ 0xffff, /* 9e0e */ 0xffff, /* 9e0f */ 0xffff, /* 9e10 */ 0xffff, /* 9e11 */ 0xffff, /* 9e12 */ 0xffff, /* 9e13 */ 0xffff, /* 9e14 */ 0xffff, /* 9e15 */ 0xffff, /* 9e16 */ 0xffff, /* 9e17 */ 0xffff, /* 9e18 */ 0xffff, /* 9e19 */ 0xffff, /* 9e1a */ 0xffff, /* 9e1b */ 0xffff, /* 9e1c */ 0xffff, /* 9e1d */ 0xffff, /* 9e1e */ 0xffff, /* 9e1f */ 0xffff, /* 9e20 */ 0xffff, /* 9e21 */ 0xffff, /* 9e22 */ 0xffff, /* 9e23 */ 0xffff, /* 9e24 */ 0xffff, /* 9e25 */ 0xffff, /* 9e26 */ 0xffff, /* 9e27 */ 0xffff, /* 9e28 */ 0xffff, /* 9e29 */ 0xffff, /* 9e2a */ 0xffff, /* 9e2b */ 0xffff, /* 9e2c */ 0xffff, /* 9e2d */ 0xffff, /* 9e2e */ 0xffff, /* 9e2f */ 0xffff, /* 9e30 */ 0xffff, /* 9e31 */ 0xffff, /* 9e32 */ 0xffff, /* 9e33 */ 0xffff, /* 9e34 */ 0xffff, /* 9e35 */ 0xffff, /* 9e36 */ 0xffff, /* 9e37 */ 0xffff, /* 9e38 */ 0xffff, /* 9e39 */ 0xffff, /* 9e3a */ 0xffff, /* 9e3b */ 0xffff, /* 9e3c */ 0xffff, /* 9e3d */ 0xffff, /* 9e3e */ 0xffff, /* 9e3f */ 0xffff, /* 9e40 */ 0xffff, /* 9e41 */ 0xffff, /* 9e42 */ 0xffff, /* 9e43 */ 0xffff, /* 9e44 */ 0xffff, /* 9e45 */ 0xffff, /* 9e46 */ 0xffff, /* 9e47 */ 0xffff, /* 9e48 */ 0xffff, /* 9e49 */ 0xffff, /* 9e4a */ 0xffff, /* 9e4b */ 0xffff, /* 9e4c */ 0xffff, /* 9e4d */ 0xffff, /* 9e4e */ 0xffff, /* 9e4f */ 0xffff, /* 9e50 */ 0xffff, /* 9e51 */ 0xffff, /* 9e52 */ 0xffff, /* 9e53 */ 0xffff, /* 9e54 */ 0xffff, /* 9e55 */ 0xffff, /* 9e56 */ 0xffff, /* 9e57 */ 0xffff, /* 9e58 */ 0xffff, /* 9e59 */ 0xffff, /* 9e5a */ 0xffff, /* 9e5b */ 0xffff, /* 9e5c */ 0xffff, /* 9e5d */ 0xffff, /* 9e5e */ 0xffff, /* 9e5f */ 0xffff, /* 9e60 */ 0xffff, /* 9e61 */ 0xffff, /* 9e62 */ 0xffff, /* 9e63 */ 0xffff, /* 9e64 */ 0xffff, /* 9e65 */ 0xffff, /* 9e66 */ 0xffff, /* 9e67 */ 0xffff, /* 9e68 */ 0xffff, /* 9e69 */ 0xffff, /* 9e6a */ 0xffff, /* 9e6b */ 0xffff, /* 9e6c */ 0xffff, /* 9e6d */ 0xffff, /* 9e6e */ 0xffff, /* 9e6f */ 0xffff, /* 9e70 */ 0xffff, /* 9e71 */ 0xffff, /* 9e72 */ 0xffff, /* 9e73 */ 0xffff, /* 9e74 */ 0xffff, /* 9e75 */ 0xffff, /* 9e76 */ 0xffff, /* 9e77 */ 0xffff, /* 9e78 */ 0xffff, /* 9e79 */ 0xffff, /* 9e7a */ 0xffff, /* 9e7b */ 0xffff, /* 9e7c */ 0xffff, /* 9e7d */ 0xffff, /* 9e7e */ 0xffff, /* 9e7f */ 0xffff, /* 9e80 */ 0xffff, /* 9e81 */ 0xffff, /* 9e82 */ 0xffff, /* 9e83 */ 0xffff, /* 9e84 */ 0xffff, /* 9e85 */ 0xffff, /* 9e86 */ 0xffff, /* 9e87 */ 0xffff, /* 9e88 */ 0xffff, /* 9e89 */ 0xffff, /* 9e8a */ 0xffff, /* 9e8b */ 0xffff, /* 9e8c */ 0xffff, /* 9e8d */ 0xffff, /* 9e8e */ 0xffff, /* 9e8f */ 0xffff, /* 9e90 */ 0xffff, /* 9e91 */ 0xffff, /* 9e92 */ 0xffff, /* 9e93 */ 0xffff, /* 9e94 */ 0xffff, /* 9e95 */ 0xffff, /* 9e96 */ 0xffff, /* 9e97 */ 0xffff, /* 9e98 */ 0xffff, /* 9e99 */ 0xffff, /* 9e9a */ 0xffff, /* 9e9b */ 0xffff, /* 9e9c */ 0xffff, /* 9e9d */ 0xffff, /* 9e9e */ 0xffff, /* 9e9f */ 0xffff, /* 9ea0 */ 0xffff, /* 9ea1 */ 0xffff, /* 9ea2 */ 0xffff, /* 9ea3 */ 0xffff, /* 9ea4 */ 0xffff, /* 9ea5 */ 0xffff, /* 9ea6 */ 0xffff, /* 9ea7 */ 0xffff, /* 9ea8 */ 0xffff, /* 9ea9 */ 0xffff, /* 9eaa */ 0xffff, /* 9eab */ 0xffff, /* 9eac */ 0xffff, /* 9ead */ 0xffff, /* 9eae */ 0xffff, /* 9eaf */ 0xffff, /* 9eb0 */ 0xffff, /* 9eb1 */ 0xffff, /* 9eb2 */ 0xffff, /* 9eb3 */ 0xffff, /* 9eb4 */ 0xffff, /* 9eb5 */ 0xffff, /* 9eb6 */ 0xffff, /* 9eb7 */ 0xffff, /* 9eb8 */ 0xffff, /* 9eb9 */ 0xffff, /* 9eba */ 0xffff, /* 9ebb */ 0xffff, /* 9ebc */ 0xffff, /* 9ebd */ 0xffff, /* 9ebe */ 0xffff, /* 9ebf */ 0xffff, /* 9ec0 */ 0xffff, /* 9ec1 */ 0xffff, /* 9ec2 */ 0xffff, /* 9ec3 */ 0xffff, /* 9ec4 */ 0xffff, /* 9ec5 */ 0xffff, /* 9ec6 */ 0xffff, /* 9ec7 */ 0xffff, /* 9ec8 */ 0xffff, /* 9ec9 */ 0xffff, /* 9eca */ 0xffff, /* 9ecb */ 0xffff, /* 9ecc */ 0xffff, /* 9ecd */ 0xffff, /* 9ece */ 0xffff, /* 9ecf */ 0xffff, /* 9ed0 */ 0xffff, /* 9ed1 */ 0xffff, /* 9ed2 */ 0xffff, /* 9ed3 */ 0xffff, /* 9ed4 */ 0xffff, /* 9ed5 */ 0xffff, /* 9ed6 */ 0xffff, /* 9ed7 */ 0xffff, /* 9ed8 */ 0xffff, /* 9ed9 */ 0xffff, /* 9eda */ 0xffff, /* 9edb */ 0xffff, /* 9edc */ 0xffff, /* 9edd */ 0xffff, /* 9ede */ 0xffff, /* 9edf */ 0xffff, /* 9ee0 */ 0xffff, /* 9ee1 */ 0xffff, /* 9ee2 */ 0xffff, /* 9ee3 */ 0xffff, /* 9ee4 */ 0xffff, /* 9ee5 */ 0xffff, /* 9ee6 */ 0xffff, /* 9ee7 */ 0xffff, /* 9ee8 */ 0xffff, /* 9ee9 */ 0xffff, /* 9eea */ 0xffff, /* 9eeb */ 0xffff, /* 9eec */ 0xffff, /* 9eed */ 0xffff, /* 9eee */ 0xffff, /* 9eef */ 0xffff, /* 9ef0 */ 0xffff, /* 9ef1 */ 0xffff, /* 9ef2 */ 0xffff, /* 9ef3 */ 0xffff, /* 9ef4 */ 0xffff, /* 9ef5 */ 0xffff, /* 9ef6 */ 0xffff, /* 9ef7 */ 0xffff, /* 9ef8 */ 0xffff, /* 9ef9 */ 0xffff, /* 9efa */ 0xffff, /* 9efb */ 0xffff, /* 9efc */ 0xffff, /* 9efd */ 0xffff, /* 9efe */ 0xffff, /* 9eff */ 0xffff, /* 9f00 */ 0xffff, /* 9f01 */ 0xffff, /* 9f02 */ 0xffff, /* 9f03 */ 0xffff, /* 9f04 */ 0xffff, /* 9f05 */ 0xffff, /* 9f06 */ 0xffff, /* 9f07 */ 0xffff, /* 9f08 */ 0xffff, /* 9f09 */ 0xffff, /* 9f0a */ 0xffff, /* 9f0b */ 0xffff, /* 9f0c */ 0xffff, /* 9f0d */ 0xffff, /* 9f0e */ 0xffff, /* 9f0f */ 0xffff, /* 9f10 */ 0xffff, /* 9f11 */ 0xffff, /* 9f12 */ 0xffff, /* 9f13 */ 0xffff, /* 9f14 */ 0xffff, /* 9f15 */ 0xffff, /* 9f16 */ 0xffff, /* 9f17 */ 0xffff, /* 9f18 */ 0xffff, /* 9f19 */ 0xffff, /* 9f1a */ 0xffff, /* 9f1b */ 0xffff, /* 9f1c */ 0xffff, /* 9f1d */ 0xffff, /* 9f1e */ 0xffff, /* 9f1f */ 0xffff, /* 9f20 */ 0xffff, /* 9f21 */ 0xffff, /* 9f22 */ 0xffff, /* 9f23 */ 0xffff, /* 9f24 */ 0xffff, /* 9f25 */ 0xffff, /* 9f26 */ 0xffff, /* 9f27 */ 0xffff, /* 9f28 */ 0xffff, /* 9f29 */ 0xffff, /* 9f2a */ 0xffff, /* 9f2b */ 0xffff, /* 9f2c */ 0xffff, /* 9f2d */ 0xffff, /* 9f2e */ 0xffff, /* 9f2f */ 0xffff, /* 9f30 */ 0xffff, /* 9f31 */ 0xffff, /* 9f32 */ 0xffff, /* 9f33 */ 0xffff, /* 9f34 */ 0xffff, /* 9f35 */ 0xffff, /* 9f36 */ 0xffff, /* 9f37 */ 0xffff, /* 9f38 */ 0xffff, /* 9f39 */ 0xffff, /* 9f3a */ 0xffff, /* 9f3b */ 0xffff, /* 9f3c */ 0xffff, /* 9f3d */ 0xffff, /* 9f3e */ 0xffff, /* 9f3f */ 0xffff, /* 9f40 */ 0xffff, /* 9f41 */ 0xffff, /* 9f42 */ 0xffff, /* 9f43 */ 0xffff, /* 9f44 */ 0xffff, /* 9f45 */ 0xffff, /* 9f46 */ 0xffff, /* 9f47 */ 0xffff, /* 9f48 */ 0xffff, /* 9f49 */ 0xffff, /* 9f4a */ 0xffff, /* 9f4b */ 0xffff, /* 9f4c */ 0xffff, /* 9f4d */ 0xffff, /* 9f4e */ 0xffff, /* 9f4f */ 0xffff, /* 9f50 */ 0xffff, /* 9f51 */ 0xffff, /* 9f52 */ 0xffff, /* 9f53 */ 0xffff, /* 9f54 */ 0xffff, /* 9f55 */ 0xffff, /* 9f56 */ 0xffff, /* 9f57 */ 0xffff, /* 9f58 */ 0xffff, /* 9f59 */ 0xffff, /* 9f5a */ 0xffff, /* 9f5b */ 0xffff, /* 9f5c */ 0xffff, /* 9f5d */ 0xffff, /* 9f5e */ 0xffff, /* 9f5f */ 0xffff, /* 9f60 */ 0xffff, /* 9f61 */ 0xffff, /* 9f62 */ 0xffff, /* 9f63 */ 0xffff, /* 9f64 */ 0xffff, /* 9f65 */ 0xffff, /* 9f66 */ 0xffff, /* 9f67 */ 0xffff, /* 9f68 */ 0xffff, /* 9f69 */ 0xffff, /* 9f6a */ 0xffff, /* 9f6b */ 0xffff, /* 9f6c */ 0xffff, /* 9f6d */ 0xffff, /* 9f6e */ 0xffff, /* 9f6f */ 0xffff, /* 9f70 */ 0xffff, /* 9f71 */ 0xffff, /* 9f72 */ 0xffff, /* 9f73 */ 0xffff, /* 9f74 */ 0xffff, /* 9f75 */ 0xffff, /* 9f76 */ 0xffff, /* 9f77 */ 0xffff, /* 9f78 */ 0xffff, /* 9f79 */ 0xffff, /* 9f7a */ 0xffff, /* 9f7b */ 0xffff, /* 9f7c */ 0xffff, /* 9f7d */ 0xffff, /* 9f7e */ 0xffff, /* 9f7f */ 0xffff, /* 9f80 */ 0xffff, /* 9f81 */ 0xffff, /* 9f82 */ 0xffff, /* 9f83 */ 0xffff, /* 9f84 */ 0xffff, /* 9f85 */ 0xffff, /* 9f86 */ 0xffff, /* 9f87 */ 0xffff, /* 9f88 */ 0xffff, /* 9f89 */ 0xffff, /* 9f8a */ 0xffff, /* 9f8b */ 0xffff, /* 9f8c */ 0xffff, /* 9f8d */ 0xffff, /* 9f8e */ 0xffff, /* 9f8f */ 0xffff, /* 9f90 */ 0xffff, /* 9f91 */ 0xffff, /* 9f92 */ 0xffff, /* 9f93 */ 0xffff, /* 9f94 */ 0xffff, /* 9f95 */ 0xffff, /* 9f96 */ 0xffff, /* 9f97 */ 0xffff, /* 9f98 */ 0xffff, /* 9f99 */ 0xffff, /* 9f9a */ 0xffff, /* 9f9b */ 0xffff, /* 9f9c */ 0xffff, /* 9f9d */ 0xffff, /* 9f9e */ 0xffff, /* 9f9f */ 0xffff, /* 9fa0 */ 0xffff, /* 9fa1 */ 0xffff, /* 9fa2 */ 0xffff, /* 9fa3 */ 0xffff, /* 9fa4 */ 0xffff, /* 9fa5 */ 0xffff, /* 9fa6 */ 0xffff, /* 9fa7 */ 0xffff, /* 9fa8 */ 0xffff, /* 9fa9 */ 0xffff, /* 9faa */ 0xffff, /* 9fab */ 0xffff, /* 9fac */ 0xffff, /* 9fad */ 0xffff, /* 9fae */ 0xffff, /* 9faf */ 0xffff, /* 9fb0 */ 0xffff, /* 9fb1 */ 0xffff, /* 9fb2 */ 0xffff, /* 9fb3 */ 0xffff, /* 9fb4 */ 0xffff, /* 9fb5 */ 0xffff, /* 9fb6 */ 0xffff, /* 9fb7 */ 0xffff, /* 9fb8 */ 0xffff, /* 9fb9 */ 0xffff, /* 9fba */ 0xffff, /* 9fbb */ 0xffff, /* 9fbc */ 0xffff, /* 9fbd */ 0xffff, /* 9fbe */ 0xffff, /* 9fbf */ 0xffff, /* 9fc0 */ 0xffff, /* 9fc1 */ 0xffff, /* 9fc2 */ 0xffff, /* 9fc3 */ 0xffff, /* 9fc4 */ 0xffff, /* 9fc5 */ 0xffff, /* 9fc6 */ 0xffff, /* 9fc7 */ 0xffff, /* 9fc8 */ 0xffff, /* 9fc9 */ 0xffff, /* 9fca */ 0xffff, /* 9fcb */ 0xffff, /* 9fcc */ 0xffff, /* 9fcd */ 0xffff, /* 9fce */ 0xffff, /* 9fcf */ 0xffff, /* 9fd0 */ 0xffff, /* 9fd1 */ 0xffff, /* 9fd2 */ 0xffff, /* 9fd3 */ 0xffff, /* 9fd4 */ 0xffff, /* 9fd5 */ 0xffff, /* 9fd6 */ 0xffff, /* 9fd7 */ 0xffff, /* 9fd8 */ 0xffff, /* 9fd9 */ 0xffff, /* 9fda */ 0xffff, /* 9fdb */ 0xffff, /* 9fdc */ 0xffff, /* 9fdd */ 0xffff, /* 9fde */ 0xffff, /* 9fdf */ 0xffff, /* 9fe0 */ 0xffff, /* 9fe1 */ 0xffff, /* 9fe2 */ 0xffff, /* 9fe3 */ 0xffff, /* 9fe4 */ 0xffff, /* 9fe5 */ 0xffff, /* 9fe6 */ 0xffff, /* 9fe7 */ 0xffff, /* 9fe8 */ 0xffff, /* 9fe9 */ 0xffff, /* 9fea */ 0xffff, /* 9feb */ 0xffff, /* 9fec */ 0xffff, /* 9fed */ 0xffff, /* 9fee */ 0xffff, /* 9fef */ 0xffff, /* 9ff0 */ 0xffff, /* 9ff1 */ 0xffff, /* 9ff2 */ 0xffff, /* 9ff3 */ 0xffff, /* 9ff4 */ 0xffff, /* 9ff5 */ 0xffff, /* 9ff6 */ 0xffff, /* 9ff7 */ 0xffff, /* 9ff8 */ 0xffff, /* 9ff9 */ 0xffff, /* 9ffa */ 0xffff, /* 9ffb */ 0xffff, /* 9ffc */ 0xffff, /* 9ffd */ 0xffff, /* 9ffe */ 0xffff, /* 9fff */ 0xffff, /* a000 */ 0xffff, /* a001 */ 0xffff, /* a002 */ 0xffff, /* a003 */ 0xffff, /* a004 */ 0xffff, /* a005 */ 0xffff, /* a006 */ 0xffff, /* a007 */ 0xffff, /* a008 */ 0xffff, /* a009 */ 0xffff, /* a00a */ 0xffff, /* a00b */ 0xffff, /* a00c */ 0xffff, /* a00d */ 0xffff, /* a00e */ 0xffff, /* a00f */ 0xffff, /* a010 */ 0xffff, /* a011 */ 0xffff, /* a012 */ 0xffff, /* a013 */ 0xffff, /* a014 */ 0xffff, /* a015 */ 0xffff, /* a016 */ 0xffff, /* a017 */ 0xffff, /* a018 */ 0xffff, /* a019 */ 0xffff, /* a01a */ 0xffff, /* a01b */ 0xffff, /* a01c */ 0xffff, /* a01d */ 0xffff, /* a01e */ 0xffff, /* a01f */ 0xffff, /* a020 */ 0xffff, /* a021 */ 0xffff, /* a022 */ 0xffff, /* a023 */ 0xffff, /* a024 */ 0xffff, /* a025 */ 0xffff, /* a026 */ 0xffff, /* a027 */ 0xffff, /* a028 */ 0xffff, /* a029 */ 0xffff, /* a02a */ 0xffff, /* a02b */ 0xffff, /* a02c */ 0xffff, /* a02d */ 0xffff, /* a02e */ 0xffff, /* a02f */ 0xffff, /* a030 */ 0xffff, /* a031 */ 0xffff, /* a032 */ 0xffff, /* a033 */ 0xffff, /* a034 */ 0xffff, /* a035 */ 0xffff, /* a036 */ 0xffff, /* a037 */ 0xffff, /* a038 */ 0xffff, /* a039 */ 0xffff, /* a03a */ 0xffff, /* a03b */ 0xffff, /* a03c */ 0xffff, /* a03d */ 0xffff, /* a03e */ 0xffff, /* a03f */ 0xffff, /* a040 */ 0xffff, /* a041 */ 0xffff, /* a042 */ 0xffff, /* a043 */ 0xffff, /* a044 */ 0xffff, /* a045 */ 0xffff, /* a046 */ 0xffff, /* a047 */ 0xffff, /* a048 */ 0xffff, /* a049 */ 0xffff, /* a04a */ 0xffff, /* a04b */ 0xffff, /* a04c */ 0xffff, /* a04d */ 0xffff, /* a04e */ 0xffff, /* a04f */ 0xffff, /* a050 */ 0xffff, /* a051 */ 0xffff, /* a052 */ 0xffff, /* a053 */ 0xffff, /* a054 */ 0xffff, /* a055 */ 0xffff, /* a056 */ 0xffff, /* a057 */ 0xffff, /* a058 */ 0xffff, /* a059 */ 0xffff, /* a05a */ 0xffff, /* a05b */ 0xffff, /* a05c */ 0xffff, /* a05d */ 0xffff, /* a05e */ 0xffff, /* a05f */ 0xffff, /* a060 */ 0xffff, /* a061 */ 0xffff, /* a062 */ 0xffff, /* a063 */ 0xffff, /* a064 */ 0xffff, /* a065 */ 0xffff, /* a066 */ 0xffff, /* a067 */ 0xffff, /* a068 */ 0xffff, /* a069 */ 0xffff, /* a06a */ 0xffff, /* a06b */ 0xffff, /* a06c */ 0xffff, /* a06d */ 0xffff, /* a06e */ 0xffff, /* a06f */ 0xffff, /* a070 */ 0xffff, /* a071 */ 0xffff, /* a072 */ 0xffff, /* a073 */ 0xffff, /* a074 */ 0xffff, /* a075 */ 0xffff, /* a076 */ 0xffff, /* a077 */ 0xffff, /* a078 */ 0xffff, /* a079 */ 0xffff, /* a07a */ 0xffff, /* a07b */ 0xffff, /* a07c */ 0xffff, /* a07d */ 0xffff, /* a07e */ 0xffff, /* a07f */ 0xffff, /* a080 */ 0xffff, /* a081 */ 0xffff, /* a082 */ 0xffff, /* a083 */ 0xffff, /* a084 */ 0xffff, /* a085 */ 0xffff, /* a086 */ 0xffff, /* a087 */ 0xffff, /* a088 */ 0xffff, /* a089 */ 0xffff, /* a08a */ 0xffff, /* a08b */ 0xffff, /* a08c */ 0xffff, /* a08d */ 0xffff, /* a08e */ 0xffff, /* a08f */ 0xffff, /* a090 */ 0xffff, /* a091 */ 0xffff, /* a092 */ 0xffff, /* a093 */ 0xffff, /* a094 */ 0xffff, /* a095 */ 0xffff, /* a096 */ 0xffff, /* a097 */ 0xffff, /* a098 */ 0xffff, /* a099 */ 0xffff, /* a09a */ 0xffff, /* a09b */ 0xffff, /* a09c */ 0xffff, /* a09d */ 0xffff, /* a09e */ 0xffff, /* a09f */ 0xffff, /* a0a0 */ 0xffff, /* a0a1 */ 0xffff, /* a0a2 */ 0xffff, /* a0a3 */ 0xffff, /* a0a4 */ 0xffff, /* a0a5 */ 0xffff, /* a0a6 */ 0xffff, /* a0a7 */ 0xffff, /* a0a8 */ 0xffff, /* a0a9 */ 0xffff, /* a0aa */ 0xffff, /* a0ab */ 0xffff, /* a0ac */ 0xffff, /* a0ad */ 0xffff, /* a0ae */ 0xffff, /* a0af */ 0xffff, /* a0b0 */ 0xffff, /* a0b1 */ 0xffff, /* a0b2 */ 0xffff, /* a0b3 */ 0xffff, /* a0b4 */ 0xffff, /* a0b5 */ 0xffff, /* a0b6 */ 0xffff, /* a0b7 */ 0xffff, /* a0b8 */ 0xffff, /* a0b9 */ 0xffff, /* a0ba */ 0xffff, /* a0bb */ 0xffff, /* a0bc */ 0xffff, /* a0bd */ 0xffff, /* a0be */ 0xffff, /* a0bf */ 0xffff, /* a0c0 */ 0xffff, /* a0c1 */ 0xffff, /* a0c2 */ 0xffff, /* a0c3 */ 0xffff, /* a0c4 */ 0xffff, /* a0c5 */ 0xffff, /* a0c6 */ 0xffff, /* a0c7 */ 0xffff, /* a0c8 */ 0xffff, /* a0c9 */ 0xffff, /* a0ca */ 0xffff, /* a0cb */ 0xffff, /* a0cc */ 0xffff, /* a0cd */ 0xffff, /* a0ce */ 0xffff, /* a0cf */ 0xffff, /* a0d0 */ 0xffff, /* a0d1 */ 0xffff, /* a0d2 */ 0xffff, /* a0d3 */ 0xffff, /* a0d4 */ 0xffff, /* a0d5 */ 0xffff, /* a0d6 */ 0xffff, /* a0d7 */ 0xffff, /* a0d8 */ 0xffff, /* a0d9 */ 0xffff, /* a0da */ 0xffff, /* a0db */ 0xffff, /* a0dc */ 0xffff, /* a0dd */ 0xffff, /* a0de */ 0xffff, /* a0df */ 0xffff, /* a0e0 */ 0xffff, /* a0e1 */ 0xffff, /* a0e2 */ 0xffff, /* a0e3 */ 0xffff, /* a0e4 */ 0xffff, /* a0e5 */ 0xffff, /* a0e6 */ 0xffff, /* a0e7 */ 0xffff, /* a0e8 */ 0xffff, /* a0e9 */ 0xffff, /* a0ea */ 0xffff, /* a0eb */ 0xffff, /* a0ec */ 0xffff, /* a0ed */ 0xffff, /* a0ee */ 0xffff, /* a0ef */ 0xffff, /* a0f0 */ 0xffff, /* a0f1 */ 0xffff, /* a0f2 */ 0xffff, /* a0f3 */ 0xffff, /* a0f4 */ 0xffff, /* a0f5 */ 0xffff, /* a0f6 */ 0xffff, /* a0f7 */ 0xffff, /* a0f8 */ 0xffff, /* a0f9 */ 0xffff, /* a0fa */ 0xffff, /* a0fb */ 0xffff, /* a0fc */ 0xffff, /* a0fd */ 0xffff, /* a0fe */ 0xffff, /* a0ff */ 0xffff, /* a100 */ 0xffff, /* a101 */ 0xffff, /* a102 */ 0xffff, /* a103 */ 0xffff, /* a104 */ 0xffff, /* a105 */ 0xffff, /* a106 */ 0xffff, /* a107 */ 0xffff, /* a108 */ 0xffff, /* a109 */ 0xffff, /* a10a */ 0xffff, /* a10b */ 0xffff, /* a10c */ 0xffff, /* a10d */ 0xffff, /* a10e */ 0xffff, /* a10f */ 0xffff, /* a110 */ 0xffff, /* a111 */ 0xffff, /* a112 */ 0xffff, /* a113 */ 0xffff, /* a114 */ 0xffff, /* a115 */ 0xffff, /* a116 */ 0xffff, /* a117 */ 0xffff, /* a118 */ 0xffff, /* a119 */ 0xffff, /* a11a */ 0xffff, /* a11b */ 0xffff, /* a11c */ 0xffff, /* a11d */ 0xffff, /* a11e */ 0xffff, /* a11f */ 0xffff, /* a120 */ 0xffff, /* a121 */ 0xffff, /* a122 */ 0xffff, /* a123 */ 0xffff, /* a124 */ 0xffff, /* a125 */ 0xffff, /* a126 */ 0xffff, /* a127 */ 0xffff, /* a128 */ 0xffff, /* a129 */ 0xffff, /* a12a */ 0xffff, /* a12b */ 0xffff, /* a12c */ 0xffff, /* a12d */ 0xffff, /* a12e */ 0xffff, /* a12f */ 0xffff, /* a130 */ 0xffff, /* a131 */ 0xffff, /* a132 */ 0xffff, /* a133 */ 0xffff, /* a134 */ 0xffff, /* a135 */ 0xffff, /* a136 */ 0xffff, /* a137 */ 0xffff, /* a138 */ 0xffff, /* a139 */ 0xffff, /* a13a */ 0xffff, /* a13b */ 0xffff, /* a13c */ 0xffff, /* a13d */ 0xffff, /* a13e */ 0xffff, /* a13f */ 0xffff, /* a140 */ 0xffff, /* a141 */ 0xffff, /* a142 */ 0xffff, /* a143 */ 0xffff, /* a144 */ 0xffff, /* a145 */ 0xffff, /* a146 */ 0xffff, /* a147 */ 0xffff, /* a148 */ 0xffff, /* a149 */ 0xffff, /* a14a */ 0xffff, /* a14b */ 0xffff, /* a14c */ 0xffff, /* a14d */ 0xffff, /* a14e */ 0xffff, /* a14f */ 0xffff, /* a150 */ 0xffff, /* a151 */ 0xffff, /* a152 */ 0xffff, /* a153 */ 0xffff, /* a154 */ 0xffff, /* a155 */ 0xffff, /* a156 */ 0xffff, /* a157 */ 0xffff, /* a158 */ 0xffff, /* a159 */ 0xffff, /* a15a */ 0xffff, /* a15b */ 0xffff, /* a15c */ 0xffff, /* a15d */ 0xffff, /* a15e */ 0xffff, /* a15f */ 0xffff, /* a160 */ 0xffff, /* a161 */ 0xffff, /* a162 */ 0xffff, /* a163 */ 0xffff, /* a164 */ 0xffff, /* a165 */ 0xffff, /* a166 */ 0xffff, /* a167 */ 0xffff, /* a168 */ 0xffff, /* a169 */ 0xffff, /* a16a */ 0xffff, /* a16b */ 0xffff, /* a16c */ 0xffff, /* a16d */ 0xffff, /* a16e */ 0xffff, /* a16f */ 0xffff, /* a170 */ 0xffff, /* a171 */ 0xffff, /* a172 */ 0xffff, /* a173 */ 0xffff, /* a174 */ 0xffff, /* a175 */ 0xffff, /* a176 */ 0xffff, /* a177 */ 0xffff, /* a178 */ 0xffff, /* a179 */ 0xffff, /* a17a */ 0xffff, /* a17b */ 0xffff, /* a17c */ 0xffff, /* a17d */ 0xffff, /* a17e */ 0xffff, /* a17f */ 0xffff, /* a180 */ 0xffff, /* a181 */ 0xffff, /* a182 */ 0xffff, /* a183 */ 0xffff, /* a184 */ 0xffff, /* a185 */ 0xffff, /* a186 */ 0xffff, /* a187 */ 0xffff, /* a188 */ 0xffff, /* a189 */ 0xffff, /* a18a */ 0xffff, /* a18b */ 0xffff, /* a18c */ 0xffff, /* a18d */ 0xffff, /* a18e */ 0xffff, /* a18f */ 0xffff, /* a190 */ 0xffff, /* a191 */ 0xffff, /* a192 */ 0xffff, /* a193 */ 0xffff, /* a194 */ 0xffff, /* a195 */ 0xffff, /* a196 */ 0xffff, /* a197 */ 0xffff, /* a198 */ 0xffff, /* a199 */ 0xffff, /* a19a */ 0xffff, /* a19b */ 0xffff, /* a19c */ 0xffff, /* a19d */ 0xffff, /* a19e */ 0xffff, /* a19f */ 0xffff, /* a1a0 */ 0xffff, /* a1a1 */ 0xffff, /* a1a2 */ 0xffff, /* a1a3 */ 0xffff, /* a1a4 */ 0xffff, /* a1a5 */ 0xffff, /* a1a6 */ 0xffff, /* a1a7 */ 0xffff, /* a1a8 */ 0xffff, /* a1a9 */ 0xffff, /* a1aa */ 0xffff, /* a1ab */ 0xffff, /* a1ac */ 0xffff, /* a1ad */ 0xffff, /* a1ae */ 0xffff, /* a1af */ 0xffff, /* a1b0 */ 0xffff, /* a1b1 */ 0xffff, /* a1b2 */ 0xffff, /* a1b3 */ 0xffff, /* a1b4 */ 0xffff, /* a1b5 */ 0xffff, /* a1b6 */ 0xffff, /* a1b7 */ 0xffff, /* a1b8 */ 0xffff, /* a1b9 */ 0xffff, /* a1ba */ 0xffff, /* a1bb */ 0xffff, /* a1bc */ 0xffff, /* a1bd */ 0xffff, /* a1be */ 0xffff, /* a1bf */ 0xffff, /* a1c0 */ 0xffff, /* a1c1 */ 0xffff, /* a1c2 */ 0xffff, /* a1c3 */ 0xffff, /* a1c4 */ 0xffff, /* a1c5 */ 0xffff, /* a1c6 */ 0xffff, /* a1c7 */ 0xffff, /* a1c8 */ 0xffff, /* a1c9 */ 0xffff, /* a1ca */ 0xffff, /* a1cb */ 0xffff, /* a1cc */ 0xffff, /* a1cd */ 0xffff, /* a1ce */ 0xffff, /* a1cf */ 0xffff, /* a1d0 */ 0xffff, /* a1d1 */ 0xffff, /* a1d2 */ 0xffff, /* a1d3 */ 0xffff, /* a1d4 */ 0xffff, /* a1d5 */ 0xffff, /* a1d6 */ 0xffff, /* a1d7 */ 0xffff, /* a1d8 */ 0xffff, /* a1d9 */ 0xffff, /* a1da */ 0xffff, /* a1db */ 0xffff, /* a1dc */ 0xffff, /* a1dd */ 0xffff, /* a1de */ 0xffff, /* a1df */ 0xffff, /* a1e0 */ 0xffff, /* a1e1 */ 0xffff, /* a1e2 */ 0xffff, /* a1e3 */ 0xffff, /* a1e4 */ 0xffff, /* a1e5 */ 0xffff, /* a1e6 */ 0xffff, /* a1e7 */ 0xffff, /* a1e8 */ 0xffff, /* a1e9 */ 0xffff, /* a1ea */ 0xffff, /* a1eb */ 0xffff, /* a1ec */ 0xffff, /* a1ed */ 0xffff, /* a1ee */ 0xffff, /* a1ef */ 0xffff, /* a1f0 */ 0xffff, /* a1f1 */ 0xffff, /* a1f2 */ 0xffff, /* a1f3 */ 0xffff, /* a1f4 */ 0xffff, /* a1f5 */ 0xffff, /* a1f6 */ 0xffff, /* a1f7 */ 0xffff, /* a1f8 */ 0xffff, /* a1f9 */ 0xffff, /* a1fa */ 0xffff, /* a1fb */ 0xffff, /* a1fc */ 0xffff, /* a1fd */ 0xffff, /* a1fe */ 0xffff, /* a1ff */ 0xffff, /* a200 */ 0xffff, /* a201 */ 0xffff, /* a202 */ 0xffff, /* a203 */ 0xffff, /* a204 */ 0xffff, /* a205 */ 0xffff, /* a206 */ 0xffff, /* a207 */ 0xffff, /* a208 */ 0xffff, /* a209 */ 0xffff, /* a20a */ 0xffff, /* a20b */ 0xffff, /* a20c */ 0xffff, /* a20d */ 0xffff, /* a20e */ 0xffff, /* a20f */ 0xffff, /* a210 */ 0xffff, /* a211 */ 0xffff, /* a212 */ 0xffff, /* a213 */ 0xffff, /* a214 */ 0xffff, /* a215 */ 0xffff, /* a216 */ 0xffff, /* a217 */ 0xffff, /* a218 */ 0xffff, /* a219 */ 0xffff, /* a21a */ 0xffff, /* a21b */ 0xffff, /* a21c */ 0xffff, /* a21d */ 0xffff, /* a21e */ 0xffff, /* a21f */ 0xffff, /* a220 */ 0xffff, /* a221 */ 0xffff, /* a222 */ 0xffff, /* a223 */ 0xffff, /* a224 */ 0xffff, /* a225 */ 0xffff, /* a226 */ 0xffff, /* a227 */ 0xffff, /* a228 */ 0xffff, /* a229 */ 0xffff, /* a22a */ 0xffff, /* a22b */ 0xffff, /* a22c */ 0xffff, /* a22d */ 0xffff, /* a22e */ 0xffff, /* a22f */ 0xffff, /* a230 */ 0xffff, /* a231 */ 0xffff, /* a232 */ 0xffff, /* a233 */ 0xffff, /* a234 */ 0xffff, /* a235 */ 0xffff, /* a236 */ 0xffff, /* a237 */ 0xffff, /* a238 */ 0xffff, /* a239 */ 0xffff, /* a23a */ 0xffff, /* a23b */ 0xffff, /* a23c */ 0xffff, /* a23d */ 0xffff, /* a23e */ 0xffff, /* a23f */ 0xffff, /* a240 */ 0xffff, /* a241 */ 0xffff, /* a242 */ 0xffff, /* a243 */ 0xffff, /* a244 */ 0xffff, /* a245 */ 0xffff, /* a246 */ 0xffff, /* a247 */ 0xffff, /* a248 */ 0xffff, /* a249 */ 0xffff, /* a24a */ 0xffff, /* a24b */ 0xffff, /* a24c */ 0xffff, /* a24d */ 0xffff, /* a24e */ 0xffff, /* a24f */ 0xffff, /* a250 */ 0xffff, /* a251 */ 0xffff, /* a252 */ 0xffff, /* a253 */ 0xffff, /* a254 */ 0xffff, /* a255 */ 0xffff, /* a256 */ 0xffff, /* a257 */ 0xffff, /* a258 */ 0xffff, /* a259 */ 0xffff, /* a25a */ 0xffff, /* a25b */ 0xffff, /* a25c */ 0xffff, /* a25d */ 0xffff, /* a25e */ 0xffff, /* a25f */ 0xffff, /* a260 */ 0xffff, /* a261 */ 0xffff, /* a262 */ 0xffff, /* a263 */ 0xffff, /* a264 */ 0xffff, /* a265 */ 0xffff, /* a266 */ 0xffff, /* a267 */ 0xffff, /* a268 */ 0xffff, /* a269 */ 0xffff, /* a26a */ 0xffff, /* a26b */ 0xffff, /* a26c */ 0xffff, /* a26d */ 0xffff, /* a26e */ 0xffff, /* a26f */ 0xffff, /* a270 */ 0xffff, /* a271 */ 0xffff, /* a272 */ 0xffff, /* a273 */ 0xffff, /* a274 */ 0xffff, /* a275 */ 0xffff, /* a276 */ 0xffff, /* a277 */ 0xffff, /* a278 */ 0xffff, /* a279 */ 0xffff, /* a27a */ 0xffff, /* a27b */ 0xffff, /* a27c */ 0xffff, /* a27d */ 0xffff, /* a27e */ 0xffff, /* a27f */ 0xffff, /* a280 */ 0xffff, /* a281 */ 0xffff, /* a282 */ 0xffff, /* a283 */ 0xffff, /* a284 */ 0xffff, /* a285 */ 0xffff, /* a286 */ 0xffff, /* a287 */ 0xffff, /* a288 */ 0xffff, /* a289 */ 0xffff, /* a28a */ 0xffff, /* a28b */ 0xffff, /* a28c */ 0xffff, /* a28d */ 0xffff, /* a28e */ 0xffff, /* a28f */ 0xffff, /* a290 */ 0xffff, /* a291 */ 0xffff, /* a292 */ 0xffff, /* a293 */ 0xffff, /* a294 */ 0xffff, /* a295 */ 0xffff, /* a296 */ 0xffff, /* a297 */ 0xffff, /* a298 */ 0xffff, /* a299 */ 0xffff, /* a29a */ 0xffff, /* a29b */ 0xffff, /* a29c */ 0xffff, /* a29d */ 0xffff, /* a29e */ 0xffff, /* a29f */ 0xffff, /* a2a0 */ 0xffff, /* a2a1 */ 0xffff, /* a2a2 */ 0xffff, /* a2a3 */ 0xffff, /* a2a4 */ 0xffff, /* a2a5 */ 0xffff, /* a2a6 */ 0xffff, /* a2a7 */ 0xffff, /* a2a8 */ 0xffff, /* a2a9 */ 0xffff, /* a2aa */ 0xffff, /* a2ab */ 0xffff, /* a2ac */ 0xffff, /* a2ad */ 0xffff, /* a2ae */ 0xffff, /* a2af */ 0xffff, /* a2b0 */ 0xffff, /* a2b1 */ 0xffff, /* a2b2 */ 0xffff, /* a2b3 */ 0xffff, /* a2b4 */ 0xffff, /* a2b5 */ 0xffff, /* a2b6 */ 0xffff, /* a2b7 */ 0xffff, /* a2b8 */ 0xffff, /* a2b9 */ 0xffff, /* a2ba */ 0xffff, /* a2bb */ 0xffff, /* a2bc */ 0xffff, /* a2bd */ 0xffff, /* a2be */ 0xffff, /* a2bf */ 0xffff, /* a2c0 */ 0xffff, /* a2c1 */ 0xffff, /* a2c2 */ 0xffff, /* a2c3 */ 0xffff, /* a2c4 */ 0xffff, /* a2c5 */ 0xffff, /* a2c6 */ 0xffff, /* a2c7 */ 0xffff, /* a2c8 */ 0xffff, /* a2c9 */ 0xffff, /* a2ca */ 0xffff, /* a2cb */ 0xffff, /* a2cc */ 0xffff, /* a2cd */ 0xffff, /* a2ce */ 0xffff, /* a2cf */ 0xffff, /* a2d0 */ 0xffff, /* a2d1 */ 0xffff, /* a2d2 */ 0xffff, /* a2d3 */ 0xffff, /* a2d4 */ 0xffff, /* a2d5 */ 0xffff, /* a2d6 */ 0xffff, /* a2d7 */ 0xffff, /* a2d8 */ 0xffff, /* a2d9 */ 0xffff, /* a2da */ 0xffff, /* a2db */ 0xffff, /* a2dc */ 0xffff, /* a2dd */ 0xffff, /* a2de */ 0xffff, /* a2df */ 0xffff, /* a2e0 */ 0xffff, /* a2e1 */ 0xffff, /* a2e2 */ 0xffff, /* a2e3 */ 0xffff, /* a2e4 */ 0xffff, /* a2e5 */ 0xffff, /* a2e6 */ 0xffff, /* a2e7 */ 0xffff, /* a2e8 */ 0xffff, /* a2e9 */ 0xffff, /* a2ea */ 0xffff, /* a2eb */ 0xffff, /* a2ec */ 0xffff, /* a2ed */ 0xffff, /* a2ee */ 0xffff, /* a2ef */ 0xffff, /* a2f0 */ 0xffff, /* a2f1 */ 0xffff, /* a2f2 */ 0xffff, /* a2f3 */ 0xffff, /* a2f4 */ 0xffff, /* a2f5 */ 0xffff, /* a2f6 */ 0xffff, /* a2f7 */ 0xffff, /* a2f8 */ 0xffff, /* a2f9 */ 0xffff, /* a2fa */ 0xffff, /* a2fb */ 0xffff, /* a2fc */ 0xffff, /* a2fd */ 0xffff, /* a2fe */ 0xffff, /* a2ff */ 0xffff, /* a300 */ 0xffff, /* a301 */ 0xffff, /* a302 */ 0xffff, /* a303 */ 0xffff, /* a304 */ 0xffff, /* a305 */ 0xffff, /* a306 */ 0xffff, /* a307 */ 0xffff, /* a308 */ 0xffff, /* a309 */ 0xffff, /* a30a */ 0xffff, /* a30b */ 0xffff, /* a30c */ 0xffff, /* a30d */ 0xffff, /* a30e */ 0xffff, /* a30f */ 0xffff, /* a310 */ 0xffff, /* a311 */ 0xffff, /* a312 */ 0xffff, /* a313 */ 0xffff, /* a314 */ 0xffff, /* a315 */ 0xffff, /* a316 */ 0xffff, /* a317 */ 0xffff, /* a318 */ 0xffff, /* a319 */ 0xffff, /* a31a */ 0xffff, /* a31b */ 0xffff, /* a31c */ 0xffff, /* a31d */ 0xffff, /* a31e */ 0xffff, /* a31f */ 0xffff, /* a320 */ 0xffff, /* a321 */ 0xffff, /* a322 */ 0xffff, /* a323 */ 0xffff, /* a324 */ 0xffff, /* a325 */ 0xffff, /* a326 */ 0xffff, /* a327 */ 0xffff, /* a328 */ 0xffff, /* a329 */ 0xffff, /* a32a */ 0xffff, /* a32b */ 0xffff, /* a32c */ 0xffff, /* a32d */ 0xffff, /* a32e */ 0xffff, /* a32f */ 0xffff, /* a330 */ 0xffff, /* a331 */ 0xffff, /* a332 */ 0xffff, /* a333 */ 0xffff, /* a334 */ 0xffff, /* a335 */ 0xffff, /* a336 */ 0xffff, /* a337 */ 0xffff, /* a338 */ 0xffff, /* a339 */ 0xffff, /* a33a */ 0xffff, /* a33b */ 0xffff, /* a33c */ 0xffff, /* a33d */ 0xffff, /* a33e */ 0xffff, /* a33f */ 0xffff, /* a340 */ 0xffff, /* a341 */ 0xffff, /* a342 */ 0xffff, /* a343 */ 0xffff, /* a344 */ 0xffff, /* a345 */ 0xffff, /* a346 */ 0xffff, /* a347 */ 0xffff, /* a348 */ 0xffff, /* a349 */ 0xffff, /* a34a */ 0xffff, /* a34b */ 0xffff, /* a34c */ 0xffff, /* a34d */ 0xffff, /* a34e */ 0xffff, /* a34f */ 0xffff, /* a350 */ 0xffff, /* a351 */ 0xffff, /* a352 */ 0xffff, /* a353 */ 0xffff, /* a354 */ 0xffff, /* a355 */ 0xffff, /* a356 */ 0xffff, /* a357 */ 0xffff, /* a358 */ 0xffff, /* a359 */ 0xffff, /* a35a */ 0xffff, /* a35b */ 0xffff, /* a35c */ 0xffff, /* a35d */ 0xffff, /* a35e */ 0xffff, /* a35f */ 0xffff, /* a360 */ 0xffff, /* a361 */ 0xffff, /* a362 */ 0xffff, /* a363 */ 0xffff, /* a364 */ 0xffff, /* a365 */ 0xffff, /* a366 */ 0xffff, /* a367 */ 0xffff, /* a368 */ 0xffff, /* a369 */ 0xffff, /* a36a */ 0xffff, /* a36b */ 0xffff, /* a36c */ 0xffff, /* a36d */ 0xffff, /* a36e */ 0xffff, /* a36f */ 0xffff, /* a370 */ 0xffff, /* a371 */ 0xffff, /* a372 */ 0xffff, /* a373 */ 0xffff, /* a374 */ 0xffff, /* a375 */ 0xffff, /* a376 */ 0xffff, /* a377 */ 0xffff, /* a378 */ 0xffff, /* a379 */ 0xffff, /* a37a */ 0xffff, /* a37b */ 0xffff, /* a37c */ 0xffff, /* a37d */ 0xffff, /* a37e */ 0xffff, /* a37f */ 0xffff, /* a380 */ 0xffff, /* a381 */ 0xffff, /* a382 */ 0xffff, /* a383 */ 0xffff, /* a384 */ 0xffff, /* a385 */ 0xffff, /* a386 */ 0xffff, /* a387 */ 0xffff, /* a388 */ 0xffff, /* a389 */ 0xffff, /* a38a */ 0xffff, /* a38b */ 0xffff, /* a38c */ 0xffff, /* a38d */ 0xffff, /* a38e */ 0xffff, /* a38f */ 0xffff, /* a390 */ 0xffff, /* a391 */ 0xffff, /* a392 */ 0xffff, /* a393 */ 0xffff, /* a394 */ 0xffff, /* a395 */ 0xffff, /* a396 */ 0xffff, /* a397 */ 0xffff, /* a398 */ 0xffff, /* a399 */ 0xffff, /* a39a */ 0xffff, /* a39b */ 0xffff, /* a39c */ 0xffff, /* a39d */ 0xffff, /* a39e */ 0xffff, /* a39f */ 0xffff, /* a3a0 */ 0xffff, /* a3a1 */ 0xffff, /* a3a2 */ 0xffff, /* a3a3 */ 0xffff, /* a3a4 */ 0xffff, /* a3a5 */ 0xffff, /* a3a6 */ 0xffff, /* a3a7 */ 0xffff, /* a3a8 */ 0xffff, /* a3a9 */ 0xffff, /* a3aa */ 0xffff, /* a3ab */ 0xffff, /* a3ac */ 0xffff, /* a3ad */ 0xffff, /* a3ae */ 0xffff, /* a3af */ 0xffff, /* a3b0 */ 0xffff, /* a3b1 */ 0xffff, /* a3b2 */ 0xffff, /* a3b3 */ 0xffff, /* a3b4 */ 0xffff, /* a3b5 */ 0xffff, /* a3b6 */ 0xffff, /* a3b7 */ 0xffff, /* a3b8 */ 0xffff, /* a3b9 */ 0xffff, /* a3ba */ 0xffff, /* a3bb */ 0xffff, /* a3bc */ 0xffff, /* a3bd */ 0xffff, /* a3be */ 0xffff, /* a3bf */ 0xffff, /* a3c0 */ 0xffff, /* a3c1 */ 0xffff, /* a3c2 */ 0xffff, /* a3c3 */ 0xffff, /* a3c4 */ 0xffff, /* a3c5 */ 0xffff, /* a3c6 */ 0xffff, /* a3c7 */ 0xffff, /* a3c8 */ 0xffff, /* a3c9 */ 0xffff, /* a3ca */ 0xffff, /* a3cb */ 0xffff, /* a3cc */ 0xffff, /* a3cd */ 0xffff, /* a3ce */ 0xffff, /* a3cf */ 0xffff, /* a3d0 */ 0xffff, /* a3d1 */ 0xffff, /* a3d2 */ 0xffff, /* a3d3 */ 0xffff, /* a3d4 */ 0xffff, /* a3d5 */ 0xffff, /* a3d6 */ 0xffff, /* a3d7 */ 0xffff, /* a3d8 */ 0xffff, /* a3d9 */ 0xffff, /* a3da */ 0xffff, /* a3db */ 0xffff, /* a3dc */ 0xffff, /* a3dd */ 0xffff, /* a3de */ 0xffff, /* a3df */ 0xffff, /* a3e0 */ 0xffff, /* a3e1 */ 0xffff, /* a3e2 */ 0xffff, /* a3e3 */ 0xffff, /* a3e4 */ 0xffff, /* a3e5 */ 0xffff, /* a3e6 */ 0xffff, /* a3e7 */ 0xffff, /* a3e8 */ 0xffff, /* a3e9 */ 0xffff, /* a3ea */ 0xffff, /* a3eb */ 0xffff, /* a3ec */ 0xffff, /* a3ed */ 0xffff, /* a3ee */ 0xffff, /* a3ef */ 0xffff, /* a3f0 */ 0xffff, /* a3f1 */ 0xffff, /* a3f2 */ 0xffff, /* a3f3 */ 0xffff, /* a3f4 */ 0xffff, /* a3f5 */ 0xffff, /* a3f6 */ 0xffff, /* a3f7 */ 0xffff, /* a3f8 */ 0xffff, /* a3f9 */ 0xffff, /* a3fa */ 0xffff, /* a3fb */ 0xffff, /* a3fc */ 0xffff, /* a3fd */ 0xffff, /* a3fe */ 0xffff, /* a3ff */ 0xffff, /* a400 */ 0xffff, /* a401 */ 0xffff, /* a402 */ 0xffff, /* a403 */ 0xffff, /* a404 */ 0xffff, /* a405 */ 0xffff, /* a406 */ 0xffff, /* a407 */ 0xffff, /* a408 */ 0xffff, /* a409 */ 0xffff, /* a40a */ 0xffff, /* a40b */ 0xffff, /* a40c */ 0xffff, /* a40d */ 0xffff, /* a40e */ 0xffff, /* a40f */ 0xffff, /* a410 */ 0xffff, /* a411 */ 0xffff, /* a412 */ 0xffff, /* a413 */ 0xffff, /* a414 */ 0xffff, /* a415 */ 0xffff, /* a416 */ 0xffff, /* a417 */ 0xffff, /* a418 */ 0xffff, /* a419 */ 0xffff, /* a41a */ 0xffff, /* a41b */ 0xffff, /* a41c */ 0xffff, /* a41d */ 0xffff, /* a41e */ 0xffff, /* a41f */ 0xffff, /* a420 */ 0xffff, /* a421 */ 0xffff, /* a422 */ 0xffff, /* a423 */ 0xffff, /* a424 */ 0xffff, /* a425 */ 0xffff, /* a426 */ 0xffff, /* a427 */ 0xffff, /* a428 */ 0xffff, /* a429 */ 0xffff, /* a42a */ 0xffff, /* a42b */ 0xffff, /* a42c */ 0xffff, /* a42d */ 0xffff, /* a42e */ 0xffff, /* a42f */ 0xffff, /* a430 */ 0xffff, /* a431 */ 0xffff, /* a432 */ 0xffff, /* a433 */ 0xffff, /* a434 */ 0xffff, /* a435 */ 0xffff, /* a436 */ 0xffff, /* a437 */ 0xffff, /* a438 */ 0xffff, /* a439 */ 0xffff, /* a43a */ 0xffff, /* a43b */ 0xffff, /* a43c */ 0xffff, /* a43d */ 0xffff, /* a43e */ 0xffff, /* a43f */ 0xffff, /* a440 */ 0xffff, /* a441 */ 0xffff, /* a442 */ 0xffff, /* a443 */ 0xffff, /* a444 */ 0xffff, /* a445 */ 0xffff, /* a446 */ 0xffff, /* a447 */ 0xffff, /* a448 */ 0xffff, /* a449 */ 0xffff, /* a44a */ 0xffff, /* a44b */ 0xffff, /* a44c */ 0xffff, /* a44d */ 0xffff, /* a44e */ 0xffff, /* a44f */ 0xffff, /* a450 */ 0xffff, /* a451 */ 0xffff, /* a452 */ 0xffff, /* a453 */ 0xffff, /* a454 */ 0xffff, /* a455 */ 0xffff, /* a456 */ 0xffff, /* a457 */ 0xffff, /* a458 */ 0xffff, /* a459 */ 0xffff, /* a45a */ 0xffff, /* a45b */ 0xffff, /* a45c */ 0xffff, /* a45d */ 0xffff, /* a45e */ 0xffff, /* a45f */ 0xffff, /* a460 */ 0xffff, /* a461 */ 0xffff, /* a462 */ 0xffff, /* a463 */ 0xffff, /* a464 */ 0xffff, /* a465 */ 0xffff, /* a466 */ 0xffff, /* a467 */ 0xffff, /* a468 */ 0xffff, /* a469 */ 0xffff, /* a46a */ 0xffff, /* a46b */ 0xffff, /* a46c */ 0xffff, /* a46d */ 0xffff, /* a46e */ 0xffff, /* a46f */ 0xffff, /* a470 */ 0xffff, /* a471 */ 0xffff, /* a472 */ 0xffff, /* a473 */ 0xffff, /* a474 */ 0xffff, /* a475 */ 0xffff, /* a476 */ 0xffff, /* a477 */ 0xffff, /* a478 */ 0xffff, /* a479 */ 0xffff, /* a47a */ 0xffff, /* a47b */ 0xffff, /* a47c */ 0xffff, /* a47d */ 0xffff, /* a47e */ 0xffff, /* a47f */ 0xffff, /* a480 */ 0xffff, /* a481 */ 0xffff, /* a482 */ 0xffff, /* a483 */ 0xffff, /* a484 */ 0xffff, /* a485 */ 0xffff, /* a486 */ 0xffff, /* a487 */ 0xffff, /* a488 */ 0xffff, /* a489 */ 0xffff, /* a48a */ 0xffff, /* a48b */ 0xffff, /* a48c */ 0xffff, /* a48d */ 0xffff, /* a48e */ 0xffff, /* a48f */ 0xffff, /* a490 */ 0xffff, /* a491 */ 0xffff, /* a492 */ 0xffff, /* a493 */ 0xffff, /* a494 */ 0xffff, /* a495 */ 0xffff, /* a496 */ 0xffff, /* a497 */ 0xffff, /* a498 */ 0xffff, /* a499 */ 0xffff, /* a49a */ 0xffff, /* a49b */ 0xffff, /* a49c */ 0xffff, /* a49d */ 0xffff, /* a49e */ 0xffff, /* a49f */ 0xffff, /* a4a0 */ 0xffff, /* a4a1 */ 0xffff, /* a4a2 */ 0xffff, /* a4a3 */ 0xffff, /* a4a4 */ 0xffff, /* a4a5 */ 0xffff, /* a4a6 */ 0xffff, /* a4a7 */ 0xffff, /* a4a8 */ 0xffff, /* a4a9 */ 0xffff, /* a4aa */ 0xffff, /* a4ab */ 0xffff, /* a4ac */ 0xffff, /* a4ad */ 0xffff, /* a4ae */ 0xffff, /* a4af */ 0xffff, /* a4b0 */ 0xffff, /* a4b1 */ 0xffff, /* a4b2 */ 0xffff, /* a4b3 */ 0xffff, /* a4b4 */ 0xffff, /* a4b5 */ 0xffff, /* a4b6 */ 0xffff, /* a4b7 */ 0xffff, /* a4b8 */ 0xffff, /* a4b9 */ 0xffff, /* a4ba */ 0xffff, /* a4bb */ 0xffff, /* a4bc */ 0xffff, /* a4bd */ 0xffff, /* a4be */ 0xffff, /* a4bf */ 0xffff, /* a4c0 */ 0xffff, /* a4c1 */ 0xffff, /* a4c2 */ 0xffff, /* a4c3 */ 0xffff, /* a4c4 */ 0xffff, /* a4c5 */ 0xffff, /* a4c6 */ 0xffff, /* a4c7 */ 0xffff, /* a4c8 */ 0xffff, /* a4c9 */ 0xffff, /* a4ca */ 0xffff, /* a4cb */ 0xffff, /* a4cc */ 0xffff, /* a4cd */ 0xffff, /* a4ce */ 0xffff, /* a4cf */ 0xffff, /* a4d0 */ 0xffff, /* a4d1 */ 0xffff, /* a4d2 */ 0xffff, /* a4d3 */ 0xffff, /* a4d4 */ 0xffff, /* a4d5 */ 0xffff, /* a4d6 */ 0xffff, /* a4d7 */ 0xffff, /* a4d8 */ 0xffff, /* a4d9 */ 0xffff, /* a4da */ 0xffff, /* a4db */ 0xffff, /* a4dc */ 0xffff, /* a4dd */ 0xffff, /* a4de */ 0xffff, /* a4df */ 0xffff, /* a4e0 */ 0xffff, /* a4e1 */ 0xffff, /* a4e2 */ 0xffff, /* a4e3 */ 0xffff, /* a4e4 */ 0xffff, /* a4e5 */ 0xffff, /* a4e6 */ 0xffff, /* a4e7 */ 0xffff, /* a4e8 */ 0xffff, /* a4e9 */ 0xffff, /* a4ea */ 0xffff, /* a4eb */ 0xffff, /* a4ec */ 0xffff, /* a4ed */ 0xffff, /* a4ee */ 0xffff, /* a4ef */ 0xffff, /* a4f0 */ 0xffff, /* a4f1 */ 0xffff, /* a4f2 */ 0xffff, /* a4f3 */ 0xffff, /* a4f4 */ 0xffff, /* a4f5 */ 0xffff, /* a4f6 */ 0xffff, /* a4f7 */ 0xffff, /* a4f8 */ 0xffff, /* a4f9 */ 0xffff, /* a4fa */ 0xffff, /* a4fb */ 0xffff, /* a4fc */ 0xffff, /* a4fd */ 0xffff, /* a4fe */ 0xffff, /* a4ff */ 0xffff, /* a500 */ 0xffff, /* a501 */ 0xffff, /* a502 */ 0xffff, /* a503 */ 0xffff, /* a504 */ 0xffff, /* a505 */ 0xffff, /* a506 */ 0xffff, /* a507 */ 0xffff, /* a508 */ 0xffff, /* a509 */ 0xffff, /* a50a */ 0xffff, /* a50b */ 0xffff, /* a50c */ 0xffff, /* a50d */ 0xffff, /* a50e */ 0xffff, /* a50f */ 0xffff, /* a510 */ 0xffff, /* a511 */ 0xffff, /* a512 */ 0xffff, /* a513 */ 0xffff, /* a514 */ 0xffff, /* a515 */ 0xffff, /* a516 */ 0xffff, /* a517 */ 0xffff, /* a518 */ 0xffff, /* a519 */ 0xffff, /* a51a */ 0xffff, /* a51b */ 0xffff, /* a51c */ 0xffff, /* a51d */ 0xffff, /* a51e */ 0xffff, /* a51f */ 0xffff, /* a520 */ 0xffff, /* a521 */ 0xffff, /* a522 */ 0xffff, /* a523 */ 0xffff, /* a524 */ 0xffff, /* a525 */ 0xffff, /* a526 */ 0xffff, /* a527 */ 0xffff, /* a528 */ 0xffff, /* a529 */ 0xffff, /* a52a */ 0xffff, /* a52b */ 0xffff, /* a52c */ 0xffff, /* a52d */ 0xffff, /* a52e */ 0xffff, /* a52f */ 0xffff, /* a530 */ 0xffff, /* a531 */ 0xffff, /* a532 */ 0xffff, /* a533 */ 0xffff, /* a534 */ 0xffff, /* a535 */ 0xffff, /* a536 */ 0xffff, /* a537 */ 0xffff, /* a538 */ 0xffff, /* a539 */ 0xffff, /* a53a */ 0xffff, /* a53b */ 0xffff, /* a53c */ 0xffff, /* a53d */ 0xffff, /* a53e */ 0xffff, /* a53f */ 0xffff, /* a540 */ 0xffff, /* a541 */ 0xffff, /* a542 */ 0xffff, /* a543 */ 0xffff, /* a544 */ 0xffff, /* a545 */ 0xffff, /* a546 */ 0xffff, /* a547 */ 0xffff, /* a548 */ 0xffff, /* a549 */ 0xffff, /* a54a */ 0xffff, /* a54b */ 0xffff, /* a54c */ 0xffff, /* a54d */ 0xffff, /* a54e */ 0xffff, /* a54f */ 0xffff, /* a550 */ 0xffff, /* a551 */ 0xffff, /* a552 */ 0xffff, /* a553 */ 0xffff, /* a554 */ 0xffff, /* a555 */ 0xffff, /* a556 */ 0xffff, /* a557 */ 0xffff, /* a558 */ 0xffff, /* a559 */ 0xffff, /* a55a */ 0xffff, /* a55b */ 0xffff, /* a55c */ 0xffff, /* a55d */ 0xffff, /* a55e */ 0xffff, /* a55f */ 0xffff, /* a560 */ 0xffff, /* a561 */ 0xffff, /* a562 */ 0xffff, /* a563 */ 0xffff, /* a564 */ 0xffff, /* a565 */ 0xffff, /* a566 */ 0xffff, /* a567 */ 0xffff, /* a568 */ 0xffff, /* a569 */ 0xffff, /* a56a */ 0xffff, /* a56b */ 0xffff, /* a56c */ 0xffff, /* a56d */ 0xffff, /* a56e */ 0xffff, /* a56f */ 0xffff, /* a570 */ 0xffff, /* a571 */ 0xffff, /* a572 */ 0xffff, /* a573 */ 0xffff, /* a574 */ 0xffff, /* a575 */ 0xffff, /* a576 */ 0xffff, /* a577 */ 0xffff, /* a578 */ 0xffff, /* a579 */ 0xffff, /* a57a */ 0xffff, /* a57b */ 0xffff, /* a57c */ 0xffff, /* a57d */ 0xffff, /* a57e */ 0xffff, /* a57f */ 0xffff, /* a580 */ 0xffff, /* a581 */ 0xffff, /* a582 */ 0xffff, /* a583 */ 0xffff, /* a584 */ 0xffff, /* a585 */ 0xffff, /* a586 */ 0xffff, /* a587 */ 0xffff, /* a588 */ 0xffff, /* a589 */ 0xffff, /* a58a */ 0xffff, /* a58b */ 0xffff, /* a58c */ 0xffff, /* a58d */ 0xffff, /* a58e */ 0xffff, /* a58f */ 0xffff, /* a590 */ 0xffff, /* a591 */ 0xffff, /* a592 */ 0xffff, /* a593 */ 0xffff, /* a594 */ 0xffff, /* a595 */ 0xffff, /* a596 */ 0xffff, /* a597 */ 0xffff, /* a598 */ 0xffff, /* a599 */ 0xffff, /* a59a */ 0xffff, /* a59b */ 0xffff, /* a59c */ 0xffff, /* a59d */ 0xffff, /* a59e */ 0xffff, /* a59f */ 0xffff, /* a5a0 */ 0xffff, /* a5a1 */ 0xffff, /* a5a2 */ 0xffff, /* a5a3 */ 0xffff, /* a5a4 */ 0xffff, /* a5a5 */ 0xffff, /* a5a6 */ 0xffff, /* a5a7 */ 0xffff, /* a5a8 */ 0xffff, /* a5a9 */ 0xffff, /* a5aa */ 0xffff, /* a5ab */ 0xffff, /* a5ac */ 0xffff, /* a5ad */ 0xffff, /* a5ae */ 0xffff, /* a5af */ 0xffff, /* a5b0 */ 0xffff, /* a5b1 */ 0xffff, /* a5b2 */ 0xffff, /* a5b3 */ 0xffff, /* a5b4 */ 0xffff, /* a5b5 */ 0xffff, /* a5b6 */ 0xffff, /* a5b7 */ 0xffff, /* a5b8 */ 0xffff, /* a5b9 */ 0xffff, /* a5ba */ 0xffff, /* a5bb */ 0xffff, /* a5bc */ 0xffff, /* a5bd */ 0xffff, /* a5be */ 0xffff, /* a5bf */ 0xffff, /* a5c0 */ 0xffff, /* a5c1 */ 0xffff, /* a5c2 */ 0xffff, /* a5c3 */ 0xffff, /* a5c4 */ 0xffff, /* a5c5 */ 0xffff, /* a5c6 */ 0xffff, /* a5c7 */ 0xffff, /* a5c8 */ 0xffff, /* a5c9 */ 0xffff, /* a5ca */ 0xffff, /* a5cb */ 0xffff, /* a5cc */ 0xffff, /* a5cd */ 0xffff, /* a5ce */ 0xffff, /* a5cf */ 0xffff, /* a5d0 */ 0xffff, /* a5d1 */ 0xffff, /* a5d2 */ 0xffff, /* a5d3 */ 0xffff, /* a5d4 */ 0xffff, /* a5d5 */ 0xffff, /* a5d6 */ 0xffff, /* a5d7 */ 0xffff, /* a5d8 */ 0xffff, /* a5d9 */ 0xffff, /* a5da */ 0xffff, /* a5db */ 0xffff, /* a5dc */ 0xffff, /* a5dd */ 0xffff, /* a5de */ 0xffff, /* a5df */ 0xffff, /* a5e0 */ 0xffff, /* a5e1 */ 0xffff, /* a5e2 */ 0xffff, /* a5e3 */ 0xffff, /* a5e4 */ 0xffff, /* a5e5 */ 0xffff, /* a5e6 */ 0xffff, /* a5e7 */ 0xffff, /* a5e8 */ 0xffff, /* a5e9 */ 0xffff, /* a5ea */ 0xffff, /* a5eb */ 0xffff, /* a5ec */ 0xffff, /* a5ed */ 0xffff, /* a5ee */ 0xffff, /* a5ef */ 0xffff, /* a5f0 */ 0xffff, /* a5f1 */ 0xffff, /* a5f2 */ 0xffff, /* a5f3 */ 0xffff, /* a5f4 */ 0xffff, /* a5f5 */ 0xffff, /* a5f6 */ 0xffff, /* a5f7 */ 0xffff, /* a5f8 */ 0xffff, /* a5f9 */ 0xffff, /* a5fa */ 0xffff, /* a5fb */ 0xffff, /* a5fc */ 0xffff, /* a5fd */ 0xffff, /* a5fe */ 0xffff, /* a5ff */ 0xffff, /* a600 */ 0xffff, /* a601 */ 0xffff, /* a602 */ 0xffff, /* a603 */ 0xffff, /* a604 */ 0xffff, /* a605 */ 0xffff, /* a606 */ 0xffff, /* a607 */ 0xffff, /* a608 */ 0xffff, /* a609 */ 0xffff, /* a60a */ 0xffff, /* a60b */ 0xffff, /* a60c */ 0xffff, /* a60d */ 0xffff, /* a60e */ 0xffff, /* a60f */ 0xffff, /* a610 */ 0xffff, /* a611 */ 0xffff, /* a612 */ 0xffff, /* a613 */ 0xffff, /* a614 */ 0xffff, /* a615 */ 0xffff, /* a616 */ 0xffff, /* a617 */ 0xffff, /* a618 */ 0xffff, /* a619 */ 0xffff, /* a61a */ 0xffff, /* a61b */ 0xffff, /* a61c */ 0xffff, /* a61d */ 0xffff, /* a61e */ 0xffff, /* a61f */ 0xffff, /* a620 */ 0xffff, /* a621 */ 0xffff, /* a622 */ 0xffff, /* a623 */ 0xffff, /* a624 */ 0xffff, /* a625 */ 0xffff, /* a626 */ 0xffff, /* a627 */ 0xffff, /* a628 */ 0xffff, /* a629 */ 0xffff, /* a62a */ 0xffff, /* a62b */ 0xffff, /* a62c */ 0xffff, /* a62d */ 0xffff, /* a62e */ 0xffff, /* a62f */ 0xffff, /* a630 */ 0xffff, /* a631 */ 0xffff, /* a632 */ 0xffff, /* a633 */ 0xffff, /* a634 */ 0xffff, /* a635 */ 0xffff, /* a636 */ 0xffff, /* a637 */ 0xffff, /* a638 */ 0xffff, /* a639 */ 0xffff, /* a63a */ 0xffff, /* a63b */ 0xffff, /* a63c */ 0xffff, /* a63d */ 0xffff, /* a63e */ 0xffff, /* a63f */ 0xffff, /* a640 */ 0xffff, /* a641 */ 0xffff, /* a642 */ 0xffff, /* a643 */ 0xffff, /* a644 */ 0xffff, /* a645 */ 0xffff, /* a646 */ 0xffff, /* a647 */ 0xffff, /* a648 */ 0xffff, /* a649 */ 0xffff, /* a64a */ 0xffff, /* a64b */ 0xffff, /* a64c */ 0xffff, /* a64d */ 0xffff, /* a64e */ 0xffff, /* a64f */ 0xffff, /* a650 */ 0xffff, /* a651 */ 0xffff, /* a652 */ 0xffff, /* a653 */ 0xffff, /* a654 */ 0xffff, /* a655 */ 0xffff, /* a656 */ 0xffff, /* a657 */ 0xffff, /* a658 */ 0xffff, /* a659 */ 0xffff, /* a65a */ 0xffff, /* a65b */ 0xffff, /* a65c */ 0xffff, /* a65d */ 0xffff, /* a65e */ 0xffff, /* a65f */ 0xffff, /* a660 */ 0xffff, /* a661 */ 0xffff, /* a662 */ 0xffff, /* a663 */ 0xffff, /* a664 */ 0xffff, /* a665 */ 0xffff, /* a666 */ 0xffff, /* a667 */ 0xffff, /* a668 */ 0xffff, /* a669 */ 0xffff, /* a66a */ 0xffff, /* a66b */ 0xffff, /* a66c */ 0xffff, /* a66d */ 0xffff, /* a66e */ 0xffff, /* a66f */ 0xffff, /* a670 */ 0xffff, /* a671 */ 0xffff, /* a672 */ 0xffff, /* a673 */ 0xffff, /* a674 */ 0xffff, /* a675 */ 0xffff, /* a676 */ 0xffff, /* a677 */ 0xffff, /* a678 */ 0xffff, /* a679 */ 0xffff, /* a67a */ 0xffff, /* a67b */ 0xffff, /* a67c */ 0xffff, /* a67d */ 0xffff, /* a67e */ 0xffff, /* a67f */ 0xffff, /* a680 */ 0xffff, /* a681 */ 0xffff, /* a682 */ 0xffff, /* a683 */ 0xffff, /* a684 */ 0xffff, /* a685 */ 0xffff, /* a686 */ 0xffff, /* a687 */ 0xffff, /* a688 */ 0xffff, /* a689 */ 0xffff, /* a68a */ 0xffff, /* a68b */ 0xffff, /* a68c */ 0xffff, /* a68d */ 0xffff, /* a68e */ 0xffff, /* a68f */ 0xffff, /* a690 */ 0xffff, /* a691 */ 0xffff, /* a692 */ 0xffff, /* a693 */ 0xffff, /* a694 */ 0xffff, /* a695 */ 0xffff, /* a696 */ 0xffff, /* a697 */ 0xffff, /* a698 */ 0xffff, /* a699 */ 0xffff, /* a69a */ 0xffff, /* a69b */ 0xffff, /* a69c */ 0xffff, /* a69d */ 0xffff, /* a69e */ 0xffff, /* a69f */ 0xffff, /* a6a0 */ 0xffff, /* a6a1 */ 0xffff, /* a6a2 */ 0xffff, /* a6a3 */ 0xffff, /* a6a4 */ 0xffff, /* a6a5 */ 0xffff, /* a6a6 */ 0xffff, /* a6a7 */ 0xffff, /* a6a8 */ 0xffff, /* a6a9 */ 0xffff, /* a6aa */ 0xffff, /* a6ab */ 0xffff, /* a6ac */ 0xffff, /* a6ad */ 0xffff, /* a6ae */ 0xffff, /* a6af */ 0xffff, /* a6b0 */ 0xffff, /* a6b1 */ 0xffff, /* a6b2 */ 0xffff, /* a6b3 */ 0xffff, /* a6b4 */ 0xffff, /* a6b5 */ 0xffff, /* a6b6 */ 0xffff, /* a6b7 */ 0xffff, /* a6b8 */ 0xffff, /* a6b9 */ 0xffff, /* a6ba */ 0xffff, /* a6bb */ 0xffff, /* a6bc */ 0xffff, /* a6bd */ 0xffff, /* a6be */ 0xffff, /* a6bf */ 0xffff, /* a6c0 */ 0xffff, /* a6c1 */ 0xffff, /* a6c2 */ 0xffff, /* a6c3 */ 0xffff, /* a6c4 */ 0xffff, /* a6c5 */ 0xffff, /* a6c6 */ 0xffff, /* a6c7 */ 0xffff, /* a6c8 */ 0xffff, /* a6c9 */ 0xffff, /* a6ca */ 0xffff, /* a6cb */ 0xffff, /* a6cc */ 0xffff, /* a6cd */ 0xffff, /* a6ce */ 0xffff, /* a6cf */ 0xffff, /* a6d0 */ 0xffff, /* a6d1 */ 0xffff, /* a6d2 */ 0xffff, /* a6d3 */ 0xffff, /* a6d4 */ 0xffff, /* a6d5 */ 0xffff, /* a6d6 */ 0xffff, /* a6d7 */ 0xffff, /* a6d8 */ 0xffff, /* a6d9 */ 0xffff, /* a6da */ 0xffff, /* a6db */ 0xffff, /* a6dc */ 0xffff, /* a6dd */ 0xffff, /* a6de */ 0xffff, /* a6df */ 0xffff, /* a6e0 */ 0xffff, /* a6e1 */ 0xffff, /* a6e2 */ 0xffff, /* a6e3 */ 0xffff, /* a6e4 */ 0xffff, /* a6e5 */ 0xffff, /* a6e6 */ 0xffff, /* a6e7 */ 0xffff, /* a6e8 */ 0xffff, /* a6e9 */ 0xffff, /* a6ea */ 0xffff, /* a6eb */ 0xffff, /* a6ec */ 0xffff, /* a6ed */ 0xffff, /* a6ee */ 0xffff, /* a6ef */ 0xffff, /* a6f0 */ 0xffff, /* a6f1 */ 0xffff, /* a6f2 */ 0xffff, /* a6f3 */ 0xffff, /* a6f4 */ 0xffff, /* a6f5 */ 0xffff, /* a6f6 */ 0xffff, /* a6f7 */ 0xffff, /* a6f8 */ 0xffff, /* a6f9 */ 0xffff, /* a6fa */ 0xffff, /* a6fb */ 0xffff, /* a6fc */ 0xffff, /* a6fd */ 0xffff, /* a6fe */ 0xffff, /* a6ff */ 0xffff, /* a700 */ 0xffff, /* a701 */ 0xffff, /* a702 */ 0xffff, /* a703 */ 0xffff, /* a704 */ 0xffff, /* a705 */ 0xffff, /* a706 */ 0xffff, /* a707 */ 0xffff, /* a708 */ 0xffff, /* a709 */ 0xffff, /* a70a */ 0xffff, /* a70b */ 0xffff, /* a70c */ 0xffff, /* a70d */ 0xffff, /* a70e */ 0xffff, /* a70f */ 0xffff, /* a710 */ 0xffff, /* a711 */ 0xffff, /* a712 */ 0xffff, /* a713 */ 0xffff, /* a714 */ 0xffff, /* a715 */ 0xffff, /* a716 */ 0xffff, /* a717 */ 0xffff, /* a718 */ 0xffff, /* a719 */ 0xffff, /* a71a */ 0xffff, /* a71b */ 0xffff, /* a71c */ 0xffff, /* a71d */ 0xffff, /* a71e */ 0xffff, /* a71f */ 0xffff, /* a720 */ 0xffff, /* a721 */ 0xffff, /* a722 */ 0xffff, /* a723 */ 0xffff, /* a724 */ 0xffff, /* a725 */ 0xffff, /* a726 */ 0xffff, /* a727 */ 0xffff, /* a728 */ 0xffff, /* a729 */ 0xffff, /* a72a */ 0xffff, /* a72b */ 0xffff, /* a72c */ 0xffff, /* a72d */ 0xffff, /* a72e */ 0xffff, /* a72f */ 0xffff, /* a730 */ 0xffff, /* a731 */ 0xffff, /* a732 */ 0xffff, /* a733 */ 0xffff, /* a734 */ 0xffff, /* a735 */ 0xffff, /* a736 */ 0xffff, /* a737 */ 0xffff, /* a738 */ 0xffff, /* a739 */ 0xffff, /* a73a */ 0xffff, /* a73b */ 0xffff, /* a73c */ 0xffff, /* a73d */ 0xffff, /* a73e */ 0xffff, /* a73f */ 0xffff, /* a740 */ 0xffff, /* a741 */ 0xffff, /* a742 */ 0xffff, /* a743 */ 0xffff, /* a744 */ 0xffff, /* a745 */ 0xffff, /* a746 */ 0xffff, /* a747 */ 0xffff, /* a748 */ 0xffff, /* a749 */ 0xffff, /* a74a */ 0xffff, /* a74b */ 0xffff, /* a74c */ 0xffff, /* a74d */ 0xffff, /* a74e */ 0xffff, /* a74f */ 0xffff, /* a750 */ 0xffff, /* a751 */ 0xffff, /* a752 */ 0xffff, /* a753 */ 0xffff, /* a754 */ 0xffff, /* a755 */ 0xffff, /* a756 */ 0xffff, /* a757 */ 0xffff, /* a758 */ 0xffff, /* a759 */ 0xffff, /* a75a */ 0xffff, /* a75b */ 0xffff, /* a75c */ 0xffff, /* a75d */ 0xffff, /* a75e */ 0xffff, /* a75f */ 0xffff, /* a760 */ 0xffff, /* a761 */ 0xffff, /* a762 */ 0xffff, /* a763 */ 0xffff, /* a764 */ 0xffff, /* a765 */ 0xffff, /* a766 */ 0xffff, /* a767 */ 0xffff, /* a768 */ 0xffff, /* a769 */ 0xffff, /* a76a */ 0xffff, /* a76b */ 0xffff, /* a76c */ 0xffff, /* a76d */ 0xffff, /* a76e */ 0xffff, /* a76f */ 0xffff, /* a770 */ 0xffff, /* a771 */ 0xffff, /* a772 */ 0xffff, /* a773 */ 0xffff, /* a774 */ 0xffff, /* a775 */ 0xffff, /* a776 */ 0xffff, /* a777 */ 0xffff, /* a778 */ 0xffff, /* a779 */ 0xffff, /* a77a */ 0xffff, /* a77b */ 0xffff, /* a77c */ 0xffff, /* a77d */ 0xffff, /* a77e */ 0xffff, /* a77f */ 0xffff, /* a780 */ 0xffff, /* a781 */ 0xffff, /* a782 */ 0xffff, /* a783 */ 0xffff, /* a784 */ 0xffff, /* a785 */ 0xffff, /* a786 */ 0xffff, /* a787 */ 0xffff, /* a788 */ 0xffff, /* a789 */ 0xffff, /* a78a */ 0xffff, /* a78b */ 0xffff, /* a78c */ 0xffff, /* a78d */ 0xffff, /* a78e */ 0xffff, /* a78f */ 0xffff, /* a790 */ 0xffff, /* a791 */ 0xffff, /* a792 */ 0xffff, /* a793 */ 0xffff, /* a794 */ 0xffff, /* a795 */ 0xffff, /* a796 */ 0xffff, /* a797 */ 0xffff, /* a798 */ 0xffff, /* a799 */ 0xffff, /* a79a */ 0xffff, /* a79b */ 0xffff, /* a79c */ 0xffff, /* a79d */ 0xffff, /* a79e */ 0xffff, /* a79f */ 0xffff, /* a7a0 */ 0xffff, /* a7a1 */ 0xffff, /* a7a2 */ 0xffff, /* a7a3 */ 0xffff, /* a7a4 */ 0xffff, /* a7a5 */ 0xffff, /* a7a6 */ 0xffff, /* a7a7 */ 0xffff, /* a7a8 */ 0xffff, /* a7a9 */ 0xffff, /* a7aa */ 0xffff, /* a7ab */ 0xffff, /* a7ac */ 0xffff, /* a7ad */ 0xffff, /* a7ae */ 0xffff, /* a7af */ 0xffff, /* a7b0 */ 0xffff, /* a7b1 */ 0xffff, /* a7b2 */ 0xffff, /* a7b3 */ 0xffff, /* a7b4 */ 0xffff, /* a7b5 */ 0xffff, /* a7b6 */ 0xffff, /* a7b7 */ 0xffff, /* a7b8 */ 0xffff, /* a7b9 */ 0xffff, /* a7ba */ 0xffff, /* a7bb */ 0xffff, /* a7bc */ 0xffff, /* a7bd */ 0xffff, /* a7be */ 0xffff, /* a7bf */ 0xffff, /* a7c0 */ 0xffff, /* a7c1 */ 0xffff, /* a7c2 */ 0xffff, /* a7c3 */ 0xffff, /* a7c4 */ 0xffff, /* a7c5 */ 0xffff, /* a7c6 */ 0xffff, /* a7c7 */ 0xffff, /* a7c8 */ 0xffff, /* a7c9 */ 0xffff, /* a7ca */ 0xffff, /* a7cb */ 0xffff, /* a7cc */ 0xffff, /* a7cd */ 0xffff, /* a7ce */ 0xffff, /* a7cf */ 0xffff, /* a7d0 */ 0xffff, /* a7d1 */ 0xffff, /* a7d2 */ 0xffff, /* a7d3 */ 0xffff, /* a7d4 */ 0xffff, /* a7d5 */ 0xffff, /* a7d6 */ 0xffff, /* a7d7 */ 0xffff, /* a7d8 */ 0xffff, /* a7d9 */ 0xffff, /* a7da */ 0xffff, /* a7db */ 0xffff, /* a7dc */ 0xffff, /* a7dd */ 0xffff, /* a7de */ 0xffff, /* a7df */ 0xffff, /* a7e0 */ 0xffff, /* a7e1 */ 0xffff, /* a7e2 */ 0xffff, /* a7e3 */ 0xffff, /* a7e4 */ 0xffff, /* a7e5 */ 0xffff, /* a7e6 */ 0xffff, /* a7e7 */ 0xffff, /* a7e8 */ 0xffff, /* a7e9 */ 0xffff, /* a7ea */ 0xffff, /* a7eb */ 0xffff, /* a7ec */ 0xffff, /* a7ed */ 0xffff, /* a7ee */ 0xffff, /* a7ef */ 0xffff, /* a7f0 */ 0xffff, /* a7f1 */ 0xffff, /* a7f2 */ 0xffff, /* a7f3 */ 0xffff, /* a7f4 */ 0xffff, /* a7f5 */ 0xffff, /* a7f6 */ 0xffff, /* a7f7 */ 0xffff, /* a7f8 */ 0xffff, /* a7f9 */ 0xffff, /* a7fa */ 0xffff, /* a7fb */ 0xffff, /* a7fc */ 0xffff, /* a7fd */ 0xffff, /* a7fe */ 0xffff, /* a7ff */ 0xffff, /* a800 */ 0xffff, /* a801 */ 0xffff, /* a802 */ 0xffff, /* a803 */ 0xffff, /* a804 */ 0xffff, /* a805 */ 0xffff, /* a806 */ 0xffff, /* a807 */ 0xffff, /* a808 */ 0xffff, /* a809 */ 0xffff, /* a80a */ 0xffff, /* a80b */ 0xffff, /* a80c */ 0xffff, /* a80d */ 0xffff, /* a80e */ 0xffff, /* a80f */ 0xffff, /* a810 */ 0xffff, /* a811 */ 0xffff, /* a812 */ 0xffff, /* a813 */ 0xffff, /* a814 */ 0xffff, /* a815 */ 0xffff, /* a816 */ 0xffff, /* a817 */ 0xffff, /* a818 */ 0xffff, /* a819 */ 0xffff, /* a81a */ 0xffff, /* a81b */ 0xffff, /* a81c */ 0xffff, /* a81d */ 0xffff, /* a81e */ 0xffff, /* a81f */ 0xffff, /* a820 */ 0xffff, /* a821 */ 0xffff, /* a822 */ 0xffff, /* a823 */ 0xffff, /* a824 */ 0xffff, /* a825 */ 0xffff, /* a826 */ 0xffff, /* a827 */ 0xffff, /* a828 */ 0xffff, /* a829 */ 0xffff, /* a82a */ 0xffff, /* a82b */ 0xffff, /* a82c */ 0xffff, /* a82d */ 0xffff, /* a82e */ 0xffff, /* a82f */ 0xffff, /* a830 */ 0xffff, /* a831 */ 0xffff, /* a832 */ 0xffff, /* a833 */ 0xffff, /* a834 */ 0xffff, /* a835 */ 0xffff, /* a836 */ 0xffff, /* a837 */ 0xffff, /* a838 */ 0xffff, /* a839 */ 0xffff, /* a83a */ 0xffff, /* a83b */ 0xffff, /* a83c */ 0xffff, /* a83d */ 0xffff, /* a83e */ 0xffff, /* a83f */ 0xffff, /* a840 */ 0xffff, /* a841 */ 0xffff, /* a842 */ 0xffff, /* a843 */ 0xffff, /* a844 */ 0xffff, /* a845 */ 0xffff, /* a846 */ 0xffff, /* a847 */ 0xffff, /* a848 */ 0xffff, /* a849 */ 0xffff, /* a84a */ 0xffff, /* a84b */ 0xffff, /* a84c */ 0xffff, /* a84d */ 0xffff, /* a84e */ 0xffff, /* a84f */ 0xffff, /* a850 */ 0xffff, /* a851 */ 0xffff, /* a852 */ 0xffff, /* a853 */ 0xffff, /* a854 */ 0xffff, /* a855 */ 0xffff, /* a856 */ 0xffff, /* a857 */ 0xffff, /* a858 */ 0xffff, /* a859 */ 0xffff, /* a85a */ 0xffff, /* a85b */ 0xffff, /* a85c */ 0xffff, /* a85d */ 0xffff, /* a85e */ 0xffff, /* a85f */ 0xffff, /* a860 */ 0xffff, /* a861 */ 0xffff, /* a862 */ 0xffff, /* a863 */ 0xffff, /* a864 */ 0xffff, /* a865 */ 0xffff, /* a866 */ 0xffff, /* a867 */ 0xffff, /* a868 */ 0xffff, /* a869 */ 0xffff, /* a86a */ 0xffff, /* a86b */ 0xffff, /* a86c */ 0xffff, /* a86d */ 0xffff, /* a86e */ 0xffff, /* a86f */ 0xffff, /* a870 */ 0xffff, /* a871 */ 0xffff, /* a872 */ 0xffff, /* a873 */ 0xffff, /* a874 */ 0xffff, /* a875 */ 0xffff, /* a876 */ 0xffff, /* a877 */ 0xffff, /* a878 */ 0xffff, /* a879 */ 0xffff, /* a87a */ 0xffff, /* a87b */ 0xffff, /* a87c */ 0xffff, /* a87d */ 0xffff, /* a87e */ 0xffff, /* a87f */ 0xffff, /* a880 */ 0xffff, /* a881 */ 0xffff, /* a882 */ 0xffff, /* a883 */ 0xffff, /* a884 */ 0xffff, /* a885 */ 0xffff, /* a886 */ 0xffff, /* a887 */ 0xffff, /* a888 */ 0xffff, /* a889 */ 0xffff, /* a88a */ 0xffff, /* a88b */ 0xffff, /* a88c */ 0xffff, /* a88d */ 0xffff, /* a88e */ 0xffff, /* a88f */ 0xffff, /* a890 */ 0xffff, /* a891 */ 0xffff, /* a892 */ 0xffff, /* a893 */ 0xffff, /* a894 */ 0xffff, /* a895 */ 0xffff, /* a896 */ 0xffff, /* a897 */ 0xffff, /* a898 */ 0xffff, /* a899 */ 0xffff, /* a89a */ 0xffff, /* a89b */ 0xffff, /* a89c */ 0xffff, /* a89d */ 0xffff, /* a89e */ 0xffff, /* a89f */ 0xffff, /* a8a0 */ 0xffff, /* a8a1 */ 0xffff, /* a8a2 */ 0xffff, /* a8a3 */ 0xffff, /* a8a4 */ 0xffff, /* a8a5 */ 0xffff, /* a8a6 */ 0xffff, /* a8a7 */ 0xffff, /* a8a8 */ 0xffff, /* a8a9 */ 0xffff, /* a8aa */ 0xffff, /* a8ab */ 0xffff, /* a8ac */ 0xffff, /* a8ad */ 0xffff, /* a8ae */ 0xffff, /* a8af */ 0xffff, /* a8b0 */ 0xffff, /* a8b1 */ 0xffff, /* a8b2 */ 0xffff, /* a8b3 */ 0xffff, /* a8b4 */ 0xffff, /* a8b5 */ 0xffff, /* a8b6 */ 0xffff, /* a8b7 */ 0xffff, /* a8b8 */ 0xffff, /* a8b9 */ 0xffff, /* a8ba */ 0xffff, /* a8bb */ 0xffff, /* a8bc */ 0xffff, /* a8bd */ 0xffff, /* a8be */ 0xffff, /* a8bf */ 0xffff, /* a8c0 */ 0xffff, /* a8c1 */ 0xffff, /* a8c2 */ 0xffff, /* a8c3 */ 0xffff, /* a8c4 */ 0xffff, /* a8c5 */ 0xffff, /* a8c6 */ 0xffff, /* a8c7 */ 0xffff, /* a8c8 */ 0xffff, /* a8c9 */ 0xffff, /* a8ca */ 0xffff, /* a8cb */ 0xffff, /* a8cc */ 0xffff, /* a8cd */ 0xffff, /* a8ce */ 0xffff, /* a8cf */ 0xffff, /* a8d0 */ 0xffff, /* a8d1 */ 0xffff, /* a8d2 */ 0xffff, /* a8d3 */ 0xffff, /* a8d4 */ 0xffff, /* a8d5 */ 0xffff, /* a8d6 */ 0xffff, /* a8d7 */ 0xffff, /* a8d8 */ 0xffff, /* a8d9 */ 0xffff, /* a8da */ 0xffff, /* a8db */ 0xffff, /* a8dc */ 0xffff, /* a8dd */ 0xffff, /* a8de */ 0xffff, /* a8df */ 0xffff, /* a8e0 */ 0xffff, /* a8e1 */ 0xffff, /* a8e2 */ 0xffff, /* a8e3 */ 0xffff, /* a8e4 */ 0xffff, /* a8e5 */ 0xffff, /* a8e6 */ 0xffff, /* a8e7 */ 0xffff, /* a8e8 */ 0xffff, /* a8e9 */ 0xffff, /* a8ea */ 0xffff, /* a8eb */ 0xffff, /* a8ec */ 0xffff, /* a8ed */ 0xffff, /* a8ee */ 0xffff, /* a8ef */ 0xffff, /* a8f0 */ 0xffff, /* a8f1 */ 0xffff, /* a8f2 */ 0xffff, /* a8f3 */ 0xffff, /* a8f4 */ 0xffff, /* a8f5 */ 0xffff, /* a8f6 */ 0xffff, /* a8f7 */ 0xffff, /* a8f8 */ 0xffff, /* a8f9 */ 0xffff, /* a8fa */ 0xffff, /* a8fb */ 0xffff, /* a8fc */ 0xffff, /* a8fd */ 0xffff, /* a8fe */ 0xffff, /* a8ff */ 0xffff, /* a900 */ 0xffff, /* a901 */ 0xffff, /* a902 */ 0xffff, /* a903 */ 0xffff, /* a904 */ 0xffff, /* a905 */ 0xffff, /* a906 */ 0xffff, /* a907 */ 0xffff, /* a908 */ 0xffff, /* a909 */ 0xffff, /* a90a */ 0xffff, /* a90b */ 0xffff, /* a90c */ 0xffff, /* a90d */ 0xffff, /* a90e */ 0xffff, /* a90f */ 0xffff, /* a910 */ 0xffff, /* a911 */ 0xffff, /* a912 */ 0xffff, /* a913 */ 0xffff, /* a914 */ 0xffff, /* a915 */ 0xffff, /* a916 */ 0xffff, /* a917 */ 0xffff, /* a918 */ 0xffff, /* a919 */ 0xffff, /* a91a */ 0xffff, /* a91b */ 0xffff, /* a91c */ 0xffff, /* a91d */ 0xffff, /* a91e */ 0xffff, /* a91f */ 0xffff, /* a920 */ 0xffff, /* a921 */ 0xffff, /* a922 */ 0xffff, /* a923 */ 0xffff, /* a924 */ 0xffff, /* a925 */ 0xffff, /* a926 */ 0xffff, /* a927 */ 0xffff, /* a928 */ 0xffff, /* a929 */ 0xffff, /* a92a */ 0xffff, /* a92b */ 0xffff, /* a92c */ 0xffff, /* a92d */ 0xffff, /* a92e */ 0xffff, /* a92f */ 0xffff, /* a930 */ 0xffff, /* a931 */ 0xffff, /* a932 */ 0xffff, /* a933 */ 0xffff, /* a934 */ 0xffff, /* a935 */ 0xffff, /* a936 */ 0xffff, /* a937 */ 0xffff, /* a938 */ 0xffff, /* a939 */ 0xffff, /* a93a */ 0xffff, /* a93b */ 0xffff, /* a93c */ 0xffff, /* a93d */ 0xffff, /* a93e */ 0xffff, /* a93f */ 0xffff, /* a940 */ 0xffff, /* a941 */ 0xffff, /* a942 */ 0xffff, /* a943 */ 0xffff, /* a944 */ 0xffff, /* a945 */ 0xffff, /* a946 */ 0xffff, /* a947 */ 0xffff, /* a948 */ 0xffff, /* a949 */ 0xffff, /* a94a */ 0xffff, /* a94b */ 0xffff, /* a94c */ 0xffff, /* a94d */ 0xffff, /* a94e */ 0xffff, /* a94f */ 0xffff, /* a950 */ 0xffff, /* a951 */ 0xffff, /* a952 */ 0xffff, /* a953 */ 0xffff, /* a954 */ 0xffff, /* a955 */ 0xffff, /* a956 */ 0xffff, /* a957 */ 0xffff, /* a958 */ 0xffff, /* a959 */ 0xffff, /* a95a */ 0xffff, /* a95b */ 0xffff, /* a95c */ 0xffff, /* a95d */ 0xffff, /* a95e */ 0xffff, /* a95f */ 0xffff, /* a960 */ 0xffff, /* a961 */ 0xffff, /* a962 */ 0xffff, /* a963 */ 0xffff, /* a964 */ 0xffff, /* a965 */ 0xffff, /* a966 */ 0xffff, /* a967 */ 0xffff, /* a968 */ 0xffff, /* a969 */ 0xffff, /* a96a */ 0xffff, /* a96b */ 0xffff, /* a96c */ 0xffff, /* a96d */ 0xffff, /* a96e */ 0xffff, /* a96f */ 0xffff, /* a970 */ 0xffff, /* a971 */ 0xffff, /* a972 */ 0xffff, /* a973 */ 0xffff, /* a974 */ 0xffff, /* a975 */ 0xffff, /* a976 */ 0xffff, /* a977 */ 0xffff, /* a978 */ 0xffff, /* a979 */ 0xffff, /* a97a */ 0xffff, /* a97b */ 0xffff, /* a97c */ 0xffff, /* a97d */ 0xffff, /* a97e */ 0xffff, /* a97f */ 0xffff, /* a980 */ 0xffff, /* a981 */ 0xffff, /* a982 */ 0xffff, /* a983 */ 0xffff, /* a984 */ 0xffff, /* a985 */ 0xffff, /* a986 */ 0xffff, /* a987 */ 0xffff, /* a988 */ 0xffff, /* a989 */ 0xffff, /* a98a */ 0xffff, /* a98b */ 0xffff, /* a98c */ 0xffff, /* a98d */ 0xffff, /* a98e */ 0xffff, /* a98f */ 0xffff, /* a990 */ 0xffff, /* a991 */ 0xffff, /* a992 */ 0xffff, /* a993 */ 0xffff, /* a994 */ 0xffff, /* a995 */ 0xffff, /* a996 */ 0xffff, /* a997 */ 0xffff, /* a998 */ 0xffff, /* a999 */ 0xffff, /* a99a */ 0xffff, /* a99b */ 0xffff, /* a99c */ 0xffff, /* a99d */ 0xffff, /* a99e */ 0xffff, /* a99f */ 0xffff, /* a9a0 */ 0xffff, /* a9a1 */ 0xffff, /* a9a2 */ 0xffff, /* a9a3 */ 0xffff, /* a9a4 */ 0xffff, /* a9a5 */ 0xffff, /* a9a6 */ 0xffff, /* a9a7 */ 0xffff, /* a9a8 */ 0xffff, /* a9a9 */ 0xffff, /* a9aa */ 0xffff, /* a9ab */ 0xffff, /* a9ac */ 0xffff, /* a9ad */ 0xffff, /* a9ae */ 0xffff, /* a9af */ 0xffff, /* a9b0 */ 0xffff, /* a9b1 */ 0xffff, /* a9b2 */ 0xffff, /* a9b3 */ 0xffff, /* a9b4 */ 0xffff, /* a9b5 */ 0xffff, /* a9b6 */ 0xffff, /* a9b7 */ 0xffff, /* a9b8 */ 0xffff, /* a9b9 */ 0xffff, /* a9ba */ 0xffff, /* a9bb */ 0xffff, /* a9bc */ 0xffff, /* a9bd */ 0xffff, /* a9be */ 0xffff, /* a9bf */ 0xffff, /* a9c0 */ 0xffff, /* a9c1 */ 0xffff, /* a9c2 */ 0xffff, /* a9c3 */ 0xffff, /* a9c4 */ 0xffff, /* a9c5 */ 0xffff, /* a9c6 */ 0xffff, /* a9c7 */ 0xffff, /* a9c8 */ 0xffff, /* a9c9 */ 0xffff, /* a9ca */ 0xffff, /* a9cb */ 0xffff, /* a9cc */ 0xffff, /* a9cd */ 0xffff, /* a9ce */ 0xffff, /* a9cf */ 0xffff, /* a9d0 */ 0xffff, /* a9d1 */ 0xffff, /* a9d2 */ 0xffff, /* a9d3 */ 0xffff, /* a9d4 */ 0xffff, /* a9d5 */ 0xffff, /* a9d6 */ 0xffff, /* a9d7 */ 0xffff, /* a9d8 */ 0xffff, /* a9d9 */ 0xffff, /* a9da */ 0xffff, /* a9db */ 0xffff, /* a9dc */ 0xffff, /* a9dd */ 0xffff, /* a9de */ 0xffff, /* a9df */ 0xffff, /* a9e0 */ 0xffff, /* a9e1 */ 0xffff, /* a9e2 */ 0xffff, /* a9e3 */ 0xffff, /* a9e4 */ 0xffff, /* a9e5 */ 0xffff, /* a9e6 */ 0xffff, /* a9e7 */ 0xffff, /* a9e8 */ 0xffff, /* a9e9 */ 0xffff, /* a9ea */ 0xffff, /* a9eb */ 0xffff, /* a9ec */ 0xffff, /* a9ed */ 0xffff, /* a9ee */ 0xffff, /* a9ef */ 0xffff, /* a9f0 */ 0xffff, /* a9f1 */ 0xffff, /* a9f2 */ 0xffff, /* a9f3 */ 0xffff, /* a9f4 */ 0xffff, /* a9f5 */ 0xffff, /* a9f6 */ 0xffff, /* a9f7 */ 0xffff, /* a9f8 */ 0xffff, /* a9f9 */ 0xffff, /* a9fa */ 0xffff, /* a9fb */ 0xffff, /* a9fc */ 0xffff, /* a9fd */ 0xffff, /* a9fe */ 0xffff, /* a9ff */ 0xffff, /* aa00 */ 0xffff, /* aa01 */ 0xffff, /* aa02 */ 0xffff, /* aa03 */ 0xffff, /* aa04 */ 0xffff, /* aa05 */ 0xffff, /* aa06 */ 0xffff, /* aa07 */ 0xffff, /* aa08 */ 0xffff, /* aa09 */ 0xffff, /* aa0a */ 0xffff, /* aa0b */ 0xffff, /* aa0c */ 0xffff, /* aa0d */ 0xffff, /* aa0e */ 0xffff, /* aa0f */ 0xffff, /* aa10 */ 0xffff, /* aa11 */ 0xffff, /* aa12 */ 0xffff, /* aa13 */ 0xffff, /* aa14 */ 0xffff, /* aa15 */ 0xffff, /* aa16 */ 0xffff, /* aa17 */ 0xffff, /* aa18 */ 0xffff, /* aa19 */ 0xffff, /* aa1a */ 0xffff, /* aa1b */ 0xffff, /* aa1c */ 0xffff, /* aa1d */ 0xffff, /* aa1e */ 0xffff, /* aa1f */ 0xffff, /* aa20 */ 0xffff, /* aa21 */ 0xffff, /* aa22 */ 0xffff, /* aa23 */ 0xffff, /* aa24 */ 0xffff, /* aa25 */ 0xffff, /* aa26 */ 0xffff, /* aa27 */ 0xffff, /* aa28 */ 0xffff, /* aa29 */ 0xffff, /* aa2a */ 0xffff, /* aa2b */ 0xffff, /* aa2c */ 0xffff, /* aa2d */ 0xffff, /* aa2e */ 0xffff, /* aa2f */ 0xffff, /* aa30 */ 0xffff, /* aa31 */ 0xffff, /* aa32 */ 0xffff, /* aa33 */ 0xffff, /* aa34 */ 0xffff, /* aa35 */ 0xffff, /* aa36 */ 0xffff, /* aa37 */ 0xffff, /* aa38 */ 0xffff, /* aa39 */ 0xffff, /* aa3a */ 0xffff, /* aa3b */ 0xffff, /* aa3c */ 0xffff, /* aa3d */ 0xffff, /* aa3e */ 0xffff, /* aa3f */ 0xffff, /* aa40 */ 0xffff, /* aa41 */ 0xffff, /* aa42 */ 0xffff, /* aa43 */ 0xffff, /* aa44 */ 0xffff, /* aa45 */ 0xffff, /* aa46 */ 0xffff, /* aa47 */ 0xffff, /* aa48 */ 0xffff, /* aa49 */ 0xffff, /* aa4a */ 0xffff, /* aa4b */ 0xffff, /* aa4c */ 0xffff, /* aa4d */ 0xffff, /* aa4e */ 0xffff, /* aa4f */ 0xffff, /* aa50 */ 0xffff, /* aa51 */ 0xffff, /* aa52 */ 0xffff, /* aa53 */ 0xffff, /* aa54 */ 0xffff, /* aa55 */ 0xffff, /* aa56 */ 0xffff, /* aa57 */ 0xffff, /* aa58 */ 0xffff, /* aa59 */ 0xffff, /* aa5a */ 0xffff, /* aa5b */ 0xffff, /* aa5c */ 0xffff, /* aa5d */ 0xffff, /* aa5e */ 0xffff, /* aa5f */ 0xffff, /* aa60 */ 0xffff, /* aa61 */ 0xffff, /* aa62 */ 0xffff, /* aa63 */ 0xffff, /* aa64 */ 0xffff, /* aa65 */ 0xffff, /* aa66 */ 0xffff, /* aa67 */ 0xffff, /* aa68 */ 0xffff, /* aa69 */ 0xffff, /* aa6a */ 0xffff, /* aa6b */ 0xffff, /* aa6c */ 0xffff, /* aa6d */ 0xffff, /* aa6e */ 0xffff, /* aa6f */ 0xffff, /* aa70 */ 0xffff, /* aa71 */ 0xffff, /* aa72 */ 0xffff, /* aa73 */ 0xffff, /* aa74 */ 0xffff, /* aa75 */ 0xffff, /* aa76 */ 0xffff, /* aa77 */ 0xffff, /* aa78 */ 0xffff, /* aa79 */ 0xffff, /* aa7a */ 0xffff, /* aa7b */ 0xffff, /* aa7c */ 0xffff, /* aa7d */ 0xffff, /* aa7e */ 0xffff, /* aa7f */ 0xffff, /* aa80 */ 0xffff, /* aa81 */ 0xffff, /* aa82 */ 0xffff, /* aa83 */ 0xffff, /* aa84 */ 0xffff, /* aa85 */ 0xffff, /* aa86 */ 0xffff, /* aa87 */ 0xffff, /* aa88 */ 0xffff, /* aa89 */ 0xffff, /* aa8a */ 0xffff, /* aa8b */ 0xffff, /* aa8c */ 0xffff, /* aa8d */ 0xffff, /* aa8e */ 0xffff, /* aa8f */ 0xffff, /* aa90 */ 0xffff, /* aa91 */ 0xffff, /* aa92 */ 0xffff, /* aa93 */ 0xffff, /* aa94 */ 0xffff, /* aa95 */ 0xffff, /* aa96 */ 0xffff, /* aa97 */ 0xffff, /* aa98 */ 0xffff, /* aa99 */ 0xffff, /* aa9a */ 0xffff, /* aa9b */ 0xffff, /* aa9c */ 0xffff, /* aa9d */ 0xffff, /* aa9e */ 0xffff, /* aa9f */ 0xffff, /* aaa0 */ 0xffff, /* aaa1 */ 0xffff, /* aaa2 */ 0xffff, /* aaa3 */ 0xffff, /* aaa4 */ 0xffff, /* aaa5 */ 0xffff, /* aaa6 */ 0xffff, /* aaa7 */ 0xffff, /* aaa8 */ 0xffff, /* aaa9 */ 0xffff, /* aaaa */ 0xffff, /* aaab */ 0xffff, /* aaac */ 0xffff, /* aaad */ 0xffff, /* aaae */ 0xffff, /* aaaf */ 0xffff, /* aab0 */ 0xffff, /* aab1 */ 0xffff, /* aab2 */ 0xffff, /* aab3 */ 0xffff, /* aab4 */ 0xffff, /* aab5 */ 0xffff, /* aab6 */ 0xffff, /* aab7 */ 0xffff, /* aab8 */ 0xffff, /* aab9 */ 0xffff, /* aaba */ 0xffff, /* aabb */ 0xffff, /* aabc */ 0xffff, /* aabd */ 0xffff, /* aabe */ 0xffff, /* aabf */ 0xffff, /* aac0 */ 0xffff, /* aac1 */ 0xffff, /* aac2 */ 0xffff, /* aac3 */ 0xffff, /* aac4 */ 0xffff, /* aac5 */ 0xffff, /* aac6 */ 0xffff, /* aac7 */ 0xffff, /* aac8 */ 0xffff, /* aac9 */ 0xffff, /* aaca */ 0xffff, /* aacb */ 0xffff, /* aacc */ 0xffff, /* aacd */ 0xffff, /* aace */ 0xffff, /* aacf */ 0xffff, /* aad0 */ 0xffff, /* aad1 */ 0xffff, /* aad2 */ 0xffff, /* aad3 */ 0xffff, /* aad4 */ 0xffff, /* aad5 */ 0xffff, /* aad6 */ 0xffff, /* aad7 */ 0xffff, /* aad8 */ 0xffff, /* aad9 */ 0xffff, /* aada */ 0xffff, /* aadb */ 0xffff, /* aadc */ 0xffff, /* aadd */ 0xffff, /* aade */ 0xffff, /* aadf */ 0xffff, /* aae0 */ 0xffff, /* aae1 */ 0xffff, /* aae2 */ 0xffff, /* aae3 */ 0xffff, /* aae4 */ 0xffff, /* aae5 */ 0xffff, /* aae6 */ 0xffff, /* aae7 */ 0xffff, /* aae8 */ 0xffff, /* aae9 */ 0xffff, /* aaea */ 0xffff, /* aaeb */ 0xffff, /* aaec */ 0xffff, /* aaed */ 0xffff, /* aaee */ 0xffff, /* aaef */ 0xffff, /* aaf0 */ 0xffff, /* aaf1 */ 0xffff, /* aaf2 */ 0xffff, /* aaf3 */ 0xffff, /* aaf4 */ 0xffff, /* aaf5 */ 0xffff, /* aaf6 */ 0xffff, /* aaf7 */ 0xffff, /* aaf8 */ 0xffff, /* aaf9 */ 0xffff, /* aafa */ 0xffff, /* aafb */ 0xffff, /* aafc */ 0xffff, /* aafd */ 0xffff, /* aafe */ 0xffff, /* aaff */ 0xffff, /* ab00 */ 0xffff, /* ab01 */ 0xffff, /* ab02 */ 0xffff, /* ab03 */ 0xffff, /* ab04 */ 0xffff, /* ab05 */ 0xffff, /* ab06 */ 0xffff, /* ab07 */ 0xffff, /* ab08 */ 0xffff, /* ab09 */ 0xffff, /* ab0a */ 0xffff, /* ab0b */ 0xffff, /* ab0c */ 0xffff, /* ab0d */ 0xffff, /* ab0e */ 0xffff, /* ab0f */ 0xffff, /* ab10 */ 0xffff, /* ab11 */ 0xffff, /* ab12 */ 0xffff, /* ab13 */ 0xffff, /* ab14 */ 0xffff, /* ab15 */ 0xffff, /* ab16 */ 0xffff, /* ab17 */ 0xffff, /* ab18 */ 0xffff, /* ab19 */ 0xffff, /* ab1a */ 0xffff, /* ab1b */ 0xffff, /* ab1c */ 0xffff, /* ab1d */ 0xffff, /* ab1e */ 0xffff, /* ab1f */ 0xffff, /* ab20 */ 0xffff, /* ab21 */ 0xffff, /* ab22 */ 0xffff, /* ab23 */ 0xffff, /* ab24 */ 0xffff, /* ab25 */ 0xffff, /* ab26 */ 0xffff, /* ab27 */ 0xffff, /* ab28 */ 0xffff, /* ab29 */ 0xffff, /* ab2a */ 0xffff, /* ab2b */ 0xffff, /* ab2c */ 0xffff, /* ab2d */ 0xffff, /* ab2e */ 0xffff, /* ab2f */ 0xffff, /* ab30 */ 0xffff, /* ab31 */ 0xffff, /* ab32 */ 0xffff, /* ab33 */ 0xffff, /* ab34 */ 0xffff, /* ab35 */ 0xffff, /* ab36 */ 0xffff, /* ab37 */ 0xffff, /* ab38 */ 0xffff, /* ab39 */ 0xffff, /* ab3a */ 0xffff, /* ab3b */ 0xffff, /* ab3c */ 0xffff, /* ab3d */ 0xffff, /* ab3e */ 0xffff, /* ab3f */ 0xffff, /* ab40 */ 0xffff, /* ab41 */ 0xffff, /* ab42 */ 0xffff, /* ab43 */ 0xffff, /* ab44 */ 0xffff, /* ab45 */ 0xffff, /* ab46 */ 0xffff, /* ab47 */ 0xffff, /* ab48 */ 0xffff, /* ab49 */ 0xffff, /* ab4a */ 0xffff, /* ab4b */ 0xffff, /* ab4c */ 0xffff, /* ab4d */ 0xffff, /* ab4e */ 0xffff, /* ab4f */ 0xffff, /* ab50 */ 0xffff, /* ab51 */ 0xffff, /* ab52 */ 0xffff, /* ab53 */ 0xffff, /* ab54 */ 0xffff, /* ab55 */ 0xffff, /* ab56 */ 0xffff, /* ab57 */ 0xffff, /* ab58 */ 0xffff, /* ab59 */ 0xffff, /* ab5a */ 0xffff, /* ab5b */ 0xffff, /* ab5c */ 0xffff, /* ab5d */ 0xffff, /* ab5e */ 0xffff, /* ab5f */ 0xffff, /* ab60 */ 0xffff, /* ab61 */ 0xffff, /* ab62 */ 0xffff, /* ab63 */ 0xffff, /* ab64 */ 0xffff, /* ab65 */ 0xffff, /* ab66 */ 0xffff, /* ab67 */ 0xffff, /* ab68 */ 0xffff, /* ab69 */ 0xffff, /* ab6a */ 0xffff, /* ab6b */ 0xffff, /* ab6c */ 0xffff, /* ab6d */ 0xffff, /* ab6e */ 0xffff, /* ab6f */ 0xffff, /* ab70 */ 0xffff, /* ab71 */ 0xffff, /* ab72 */ 0xffff, /* ab73 */ 0xffff, /* ab74 */ 0xffff, /* ab75 */ 0xffff, /* ab76 */ 0xffff, /* ab77 */ 0xffff, /* ab78 */ 0xffff, /* ab79 */ 0xffff, /* ab7a */ 0xffff, /* ab7b */ 0xffff, /* ab7c */ 0xffff, /* ab7d */ 0xffff, /* ab7e */ 0xffff, /* ab7f */ 0xffff, /* ab80 */ 0xffff, /* ab81 */ 0xffff, /* ab82 */ 0xffff, /* ab83 */ 0xffff, /* ab84 */ 0xffff, /* ab85 */ 0xffff, /* ab86 */ 0xffff, /* ab87 */ 0xffff, /* ab88 */ 0xffff, /* ab89 */ 0xffff, /* ab8a */ 0xffff, /* ab8b */ 0xffff, /* ab8c */ 0xffff, /* ab8d */ 0xffff, /* ab8e */ 0xffff, /* ab8f */ 0xffff, /* ab90 */ 0xffff, /* ab91 */ 0xffff, /* ab92 */ 0xffff, /* ab93 */ 0xffff, /* ab94 */ 0xffff, /* ab95 */ 0xffff, /* ab96 */ 0xffff, /* ab97 */ 0xffff, /* ab98 */ 0xffff, /* ab99 */ 0xffff, /* ab9a */ 0xffff, /* ab9b */ 0xffff, /* ab9c */ 0xffff, /* ab9d */ 0xffff, /* ab9e */ 0xffff, /* ab9f */ 0xffff, /* aba0 */ 0xffff, /* aba1 */ 0xffff, /* aba2 */ 0xffff, /* aba3 */ 0xffff, /* aba4 */ 0xffff, /* aba5 */ 0xffff, /* aba6 */ 0xffff, /* aba7 */ 0xffff, /* aba8 */ 0xffff, /* aba9 */ 0xffff, /* abaa */ 0xffff, /* abab */ 0xffff, /* abac */ 0xffff, /* abad */ 0xffff, /* abae */ 0xffff, /* abaf */ 0xffff, /* abb0 */ 0xffff, /* abb1 */ 0xffff, /* abb2 */ 0xffff, /* abb3 */ 0xffff, /* abb4 */ 0xffff, /* abb5 */ 0xffff, /* abb6 */ 0xffff, /* abb7 */ 0xffff, /* abb8 */ 0xffff, /* abb9 */ 0xffff, /* abba */ 0xffff, /* abbb */ 0xffff, /* abbc */ 0xffff, /* abbd */ 0xffff, /* abbe */ 0xffff, /* abbf */ 0xffff, /* abc0 */ 0xffff, /* abc1 */ 0xffff, /* abc2 */ 0xffff, /* abc3 */ 0xffff, /* abc4 */ 0xffff, /* abc5 */ 0xffff, /* abc6 */ 0xffff, /* abc7 */ 0xffff, /* abc8 */ 0xffff, /* abc9 */ 0xffff, /* abca */ 0xffff, /* abcb */ 0xffff, /* abcc */ 0xffff, /* abcd */ 0xffff, /* abce */ 0xffff, /* abcf */ 0xffff, /* abd0 */ 0xffff, /* abd1 */ 0xffff, /* abd2 */ 0xffff, /* abd3 */ 0xffff, /* abd4 */ 0xffff, /* abd5 */ 0xffff, /* abd6 */ 0xffff, /* abd7 */ 0xffff, /* abd8 */ 0xffff, /* abd9 */ 0xffff, /* abda */ 0xffff, /* abdb */ 0xffff, /* abdc */ 0xffff, /* abdd */ 0xffff, /* abde */ 0xffff, /* abdf */ 0xffff, /* abe0 */ 0xffff, /* abe1 */ 0xffff, /* abe2 */ 0xffff, /* abe3 */ 0xffff, /* abe4 */ 0xffff, /* abe5 */ 0xffff, /* abe6 */ 0xffff, /* abe7 */ 0xffff, /* abe8 */ 0xffff, /* abe9 */ 0xffff, /* abea */ 0xffff, /* abeb */ 0xffff, /* abec */ 0xffff, /* abed */ 0xffff, /* abee */ 0xffff, /* abef */ 0xffff, /* abf0 */ 0xffff, /* abf1 */ 0xffff, /* abf2 */ 0xffff, /* abf3 */ 0xffff, /* abf4 */ 0xffff, /* abf5 */ 0xffff, /* abf6 */ 0xffff, /* abf7 */ 0xffff, /* abf8 */ 0xffff, /* abf9 */ 0xffff, /* abfa */ 0xffff, /* abfb */ 0xffff, /* abfc */ 0xffff, /* abfd */ 0xffff, /* abfe */ 0xffff, /* abff */ 0xffff, /* ac00 */ 0xffff, /* ac01 */ 0xffff, /* ac02 */ 0xffff, /* ac03 */ 0xffff, /* ac04 */ 0xffff, /* ac05 */ 0xffff, /* ac06 */ 0xffff, /* ac07 */ 0xffff, /* ac08 */ 0xffff, /* ac09 */ 0xffff, /* ac0a */ 0xffff, /* ac0b */ 0xffff, /* ac0c */ 0xffff, /* ac0d */ 0xffff, /* ac0e */ 0xffff, /* ac0f */ 0xffff, /* ac10 */ 0xffff, /* ac11 */ 0xffff, /* ac12 */ 0xffff, /* ac13 */ 0xffff, /* ac14 */ 0xffff, /* ac15 */ 0xffff, /* ac16 */ 0xffff, /* ac17 */ 0xffff, /* ac18 */ 0xffff, /* ac19 */ 0xffff, /* ac1a */ 0xffff, /* ac1b */ 0xffff, /* ac1c */ 0xffff, /* ac1d */ 0xffff, /* ac1e */ 0xffff, /* ac1f */ 0xffff, /* ac20 */ 0xffff, /* ac21 */ 0xffff, /* ac22 */ 0xffff, /* ac23 */ 0xffff, /* ac24 */ 0xffff, /* ac25 */ 0xffff, /* ac26 */ 0xffff, /* ac27 */ 0xffff, /* ac28 */ 0xffff, /* ac29 */ 0xffff, /* ac2a */ 0xffff, /* ac2b */ 0xffff, /* ac2c */ 0xffff, /* ac2d */ 0xffff, /* ac2e */ 0xffff, /* ac2f */ 0xffff, /* ac30 */ 0xffff, /* ac31 */ 0xffff, /* ac32 */ 0xffff, /* ac33 */ 0xffff, /* ac34 */ 0xffff, /* ac35 */ 0xffff, /* ac36 */ 0xffff, /* ac37 */ 0xffff, /* ac38 */ 0xffff, /* ac39 */ 0xffff, /* ac3a */ 0xffff, /* ac3b */ 0xffff, /* ac3c */ 0xffff, /* ac3d */ 0xffff, /* ac3e */ 0xffff, /* ac3f */ 0xffff, /* ac40 */ 0xffff, /* ac41 */ 0xffff, /* ac42 */ 0xffff, /* ac43 */ 0xffff, /* ac44 */ 0xffff, /* ac45 */ 0xffff, /* ac46 */ 0xffff, /* ac47 */ 0xffff, /* ac48 */ 0xffff, /* ac49 */ 0xffff, /* ac4a */ 0xffff, /* ac4b */ 0xffff, /* ac4c */ 0xffff, /* ac4d */ 0xffff, /* ac4e */ 0xffff, /* ac4f */ 0xffff, /* ac50 */ 0xffff, /* ac51 */ 0xffff, /* ac52 */ 0xffff, /* ac53 */ 0xffff, /* ac54 */ 0xffff, /* ac55 */ 0xffff, /* ac56 */ 0xffff, /* ac57 */ 0xffff, /* ac58 */ 0xffff, /* ac59 */ 0xffff, /* ac5a */ 0xffff, /* ac5b */ 0xffff, /* ac5c */ 0xffff, /* ac5d */ 0xffff, /* ac5e */ 0xffff, /* ac5f */ 0xffff, /* ac60 */ 0xffff, /* ac61 */ 0xffff, /* ac62 */ 0xffff, /* ac63 */ 0xffff, /* ac64 */ 0xffff, /* ac65 */ 0xffff, /* ac66 */ 0xffff, /* ac67 */ 0xffff, /* ac68 */ 0xffff, /* ac69 */ 0xffff, /* ac6a */ 0xffff, /* ac6b */ 0xffff, /* ac6c */ 0xffff, /* ac6d */ 0xffff, /* ac6e */ 0xffff, /* ac6f */ 0xffff, /* ac70 */ 0xffff, /* ac71 */ 0xffff, /* ac72 */ 0xffff, /* ac73 */ 0xffff, /* ac74 */ 0xffff, /* ac75 */ 0xffff, /* ac76 */ 0xffff, /* ac77 */ 0xffff, /* ac78 */ 0xffff, /* ac79 */ 0xffff, /* ac7a */ 0xffff, /* ac7b */ 0xffff, /* ac7c */ 0xffff, /* ac7d */ 0xffff, /* ac7e */ 0xffff, /* ac7f */ 0xffff, /* ac80 */ 0xffff, /* ac81 */ 0xffff, /* ac82 */ 0xffff, /* ac83 */ 0xffff, /* ac84 */ 0xffff, /* ac85 */ 0xffff, /* ac86 */ 0xffff, /* ac87 */ 0xffff, /* ac88 */ 0xffff, /* ac89 */ 0xffff, /* ac8a */ 0xffff, /* ac8b */ 0xffff, /* ac8c */ 0xffff, /* ac8d */ 0xffff, /* ac8e */ 0xffff, /* ac8f */ 0xffff, /* ac90 */ 0xffff, /* ac91 */ 0xffff, /* ac92 */ 0xffff, /* ac93 */ 0xffff, /* ac94 */ 0xffff, /* ac95 */ 0xffff, /* ac96 */ 0xffff, /* ac97 */ 0xffff, /* ac98 */ 0xffff, /* ac99 */ 0xffff, /* ac9a */ 0xffff, /* ac9b */ 0xffff, /* ac9c */ 0xffff, /* ac9d */ 0xffff, /* ac9e */ 0xffff, /* ac9f */ 0xffff, /* aca0 */ 0xffff, /* aca1 */ 0xffff, /* aca2 */ 0xffff, /* aca3 */ 0xffff, /* aca4 */ 0xffff, /* aca5 */ 0xffff, /* aca6 */ 0xffff, /* aca7 */ 0xffff, /* aca8 */ 0xffff, /* aca9 */ 0xffff, /* acaa */ 0xffff, /* acab */ 0xffff, /* acac */ 0xffff, /* acad */ 0xffff, /* acae */ 0xffff, /* acaf */ 0xffff, /* acb0 */ 0xffff, /* acb1 */ 0xffff, /* acb2 */ 0xffff, /* acb3 */ 0xffff, /* acb4 */ 0xffff, /* acb5 */ 0xffff, /* acb6 */ 0xffff, /* acb7 */ 0xffff, /* acb8 */ 0xffff, /* acb9 */ 0xffff, /* acba */ 0xffff, /* acbb */ 0xffff, /* acbc */ 0xffff, /* acbd */ 0xffff, /* acbe */ 0xffff, /* acbf */ 0xffff, /* acc0 */ 0xffff, /* acc1 */ 0xffff, /* acc2 */ 0xffff, /* acc3 */ 0xffff, /* acc4 */ 0xffff, /* acc5 */ 0xffff, /* acc6 */ 0xffff, /* acc7 */ 0xffff, /* acc8 */ 0xffff, /* acc9 */ 0xffff, /* acca */ 0xffff, /* accb */ 0xffff, /* accc */ 0xffff, /* accd */ 0xffff, /* acce */ 0xffff, /* accf */ 0xffff, /* acd0 */ 0xffff, /* acd1 */ 0xffff, /* acd2 */ 0xffff, /* acd3 */ 0xffff, /* acd4 */ 0xffff, /* acd5 */ 0xffff, /* acd6 */ 0xffff, /* acd7 */ 0xffff, /* acd8 */ 0xffff, /* acd9 */ 0xffff, /* acda */ 0xffff, /* acdb */ 0xffff, /* acdc */ 0xffff, /* acdd */ 0xffff, /* acde */ 0xffff, /* acdf */ 0xffff, /* ace0 */ 0xffff, /* ace1 */ 0xffff, /* ace2 */ 0xffff, /* ace3 */ 0xffff, /* ace4 */ 0xffff, /* ace5 */ 0xffff, /* ace6 */ 0xffff, /* ace7 */ 0xffff, /* ace8 */ 0xffff, /* ace9 */ 0xffff, /* acea */ 0xffff, /* aceb */ 0xffff, /* acec */ 0xffff, /* aced */ 0xffff, /* acee */ 0xffff, /* acef */ 0xffff, /* acf0 */ 0xffff, /* acf1 */ 0xffff, /* acf2 */ 0xffff, /* acf3 */ 0xffff, /* acf4 */ 0xffff, /* acf5 */ 0xffff, /* acf6 */ 0xffff, /* acf7 */ 0xffff, /* acf8 */ 0xffff, /* acf9 */ 0xffff, /* acfa */ 0xffff, /* acfb */ 0xffff, /* acfc */ 0xffff, /* acfd */ 0xffff, /* acfe */ 0xffff, /* acff */ 0xffff, /* ad00 */ 0xffff, /* ad01 */ 0xffff, /* ad02 */ 0xffff, /* ad03 */ 0xffff, /* ad04 */ 0xffff, /* ad05 */ 0xffff, /* ad06 */ 0xffff, /* ad07 */ 0xffff, /* ad08 */ 0xffff, /* ad09 */ 0xffff, /* ad0a */ 0xffff, /* ad0b */ 0xffff, /* ad0c */ 0xffff, /* ad0d */ 0xffff, /* ad0e */ 0xffff, /* ad0f */ 0xffff, /* ad10 */ 0xffff, /* ad11 */ 0xffff, /* ad12 */ 0xffff, /* ad13 */ 0xffff, /* ad14 */ 0xffff, /* ad15 */ 0xffff, /* ad16 */ 0xffff, /* ad17 */ 0xffff, /* ad18 */ 0xffff, /* ad19 */ 0xffff, /* ad1a */ 0xffff, /* ad1b */ 0xffff, /* ad1c */ 0xffff, /* ad1d */ 0xffff, /* ad1e */ 0xffff, /* ad1f */ 0xffff, /* ad20 */ 0xffff, /* ad21 */ 0xffff, /* ad22 */ 0xffff, /* ad23 */ 0xffff, /* ad24 */ 0xffff, /* ad25 */ 0xffff, /* ad26 */ 0xffff, /* ad27 */ 0xffff, /* ad28 */ 0xffff, /* ad29 */ 0xffff, /* ad2a */ 0xffff, /* ad2b */ 0xffff, /* ad2c */ 0xffff, /* ad2d */ 0xffff, /* ad2e */ 0xffff, /* ad2f */ 0xffff, /* ad30 */ 0xffff, /* ad31 */ 0xffff, /* ad32 */ 0xffff, /* ad33 */ 0xffff, /* ad34 */ 0xffff, /* ad35 */ 0xffff, /* ad36 */ 0xffff, /* ad37 */ 0xffff, /* ad38 */ 0xffff, /* ad39 */ 0xffff, /* ad3a */ 0xffff, /* ad3b */ 0xffff, /* ad3c */ 0xffff, /* ad3d */ 0xffff, /* ad3e */ 0xffff, /* ad3f */ 0xffff, /* ad40 */ 0xffff, /* ad41 */ 0xffff, /* ad42 */ 0xffff, /* ad43 */ 0xffff, /* ad44 */ 0xffff, /* ad45 */ 0xffff, /* ad46 */ 0xffff, /* ad47 */ 0xffff, /* ad48 */ 0xffff, /* ad49 */ 0xffff, /* ad4a */ 0xffff, /* ad4b */ 0xffff, /* ad4c */ 0xffff, /* ad4d */ 0xffff, /* ad4e */ 0xffff, /* ad4f */ 0xffff, /* ad50 */ 0xffff, /* ad51 */ 0xffff, /* ad52 */ 0xffff, /* ad53 */ 0xffff, /* ad54 */ 0xffff, /* ad55 */ 0xffff, /* ad56 */ 0xffff, /* ad57 */ 0xffff, /* ad58 */ 0xffff, /* ad59 */ 0xffff, /* ad5a */ 0xffff, /* ad5b */ 0xffff, /* ad5c */ 0xffff, /* ad5d */ 0xffff, /* ad5e */ 0xffff, /* ad5f */ 0xffff, /* ad60 */ 0xffff, /* ad61 */ 0xffff, /* ad62 */ 0xffff, /* ad63 */ 0xffff, /* ad64 */ 0xffff, /* ad65 */ 0xffff, /* ad66 */ 0xffff, /* ad67 */ 0xffff, /* ad68 */ 0xffff, /* ad69 */ 0xffff, /* ad6a */ 0xffff, /* ad6b */ 0xffff, /* ad6c */ 0xffff, /* ad6d */ 0xffff, /* ad6e */ 0xffff, /* ad6f */ 0xffff, /* ad70 */ 0xffff, /* ad71 */ 0xffff, /* ad72 */ 0xffff, /* ad73 */ 0xffff, /* ad74 */ 0xffff, /* ad75 */ 0xffff, /* ad76 */ 0xffff, /* ad77 */ 0xffff, /* ad78 */ 0xffff, /* ad79 */ 0xffff, /* ad7a */ 0xffff, /* ad7b */ 0xffff, /* ad7c */ 0xffff, /* ad7d */ 0xffff, /* ad7e */ 0xffff, /* ad7f */ 0xffff, /* ad80 */ 0xffff, /* ad81 */ 0xffff, /* ad82 */ 0xffff, /* ad83 */ 0xffff, /* ad84 */ 0xffff, /* ad85 */ 0xffff, /* ad86 */ 0xffff, /* ad87 */ 0xffff, /* ad88 */ 0xffff, /* ad89 */ 0xffff, /* ad8a */ 0xffff, /* ad8b */ 0xffff, /* ad8c */ 0xffff, /* ad8d */ 0xffff, /* ad8e */ 0xffff, /* ad8f */ 0xffff, /* ad90 */ 0xffff, /* ad91 */ 0xffff, /* ad92 */ 0xffff, /* ad93 */ 0xffff, /* ad94 */ 0xffff, /* ad95 */ 0xffff, /* ad96 */ 0xffff, /* ad97 */ 0xffff, /* ad98 */ 0xffff, /* ad99 */ 0xffff, /* ad9a */ 0xffff, /* ad9b */ 0xffff, /* ad9c */ 0xffff, /* ad9d */ 0xffff, /* ad9e */ 0xffff, /* ad9f */ 0xffff, /* ada0 */ 0xffff, /* ada1 */ 0xffff, /* ada2 */ 0xffff, /* ada3 */ 0xffff, /* ada4 */ 0xffff, /* ada5 */ 0xffff, /* ada6 */ 0xffff, /* ada7 */ 0xffff, /* ada8 */ 0xffff, /* ada9 */ 0xffff, /* adaa */ 0xffff, /* adab */ 0xffff, /* adac */ 0xffff, /* adad */ 0xffff, /* adae */ 0xffff, /* adaf */ 0xffff, /* adb0 */ 0xffff, /* adb1 */ 0xffff, /* adb2 */ 0xffff, /* adb3 */ 0xffff, /* adb4 */ 0xffff, /* adb5 */ 0xffff, /* adb6 */ 0xffff, /* adb7 */ 0xffff, /* adb8 */ 0xffff, /* adb9 */ 0xffff, /* adba */ 0xffff, /* adbb */ 0xffff, /* adbc */ 0xffff, /* adbd */ 0xffff, /* adbe */ 0xffff, /* adbf */ 0xffff, /* adc0 */ 0xffff, /* adc1 */ 0xffff, /* adc2 */ 0xffff, /* adc3 */ 0xffff, /* adc4 */ 0xffff, /* adc5 */ 0xffff, /* adc6 */ 0xffff, /* adc7 */ 0xffff, /* adc8 */ 0xffff, /* adc9 */ 0xffff, /* adca */ 0xffff, /* adcb */ 0xffff, /* adcc */ 0xffff, /* adcd */ 0xffff, /* adce */ 0xffff, /* adcf */ 0xffff, /* add0 */ 0xffff, /* add1 */ 0xffff, /* add2 */ 0xffff, /* add3 */ 0xffff, /* add4 */ 0xffff, /* add5 */ 0xffff, /* add6 */ 0xffff, /* add7 */ 0xffff, /* add8 */ 0xffff, /* add9 */ 0xffff, /* adda */ 0xffff, /* addb */ 0xffff, /* addc */ 0xffff, /* addd */ 0xffff, /* adde */ 0xffff, /* addf */ 0xffff, /* ade0 */ 0xffff, /* ade1 */ 0xffff, /* ade2 */ 0xffff, /* ade3 */ 0xffff, /* ade4 */ 0xffff, /* ade5 */ 0xffff, /* ade6 */ 0xffff, /* ade7 */ 0xffff, /* ade8 */ 0xffff, /* ade9 */ 0xffff, /* adea */ 0xffff, /* adeb */ 0xffff, /* adec */ 0xffff, /* aded */ 0xffff, /* adee */ 0xffff, /* adef */ 0xffff, /* adf0 */ 0xffff, /* adf1 */ 0xffff, /* adf2 */ 0xffff, /* adf3 */ 0xffff, /* adf4 */ 0xffff, /* adf5 */ 0xffff, /* adf6 */ 0xffff, /* adf7 */ 0xffff, /* adf8 */ 0xffff, /* adf9 */ 0xffff, /* adfa */ 0xffff, /* adfb */ 0xffff, /* adfc */ 0xffff, /* adfd */ 0xffff, /* adfe */ 0xffff, /* adff */ 0xffff, /* ae00 */ 0xffff, /* ae01 */ 0xffff, /* ae02 */ 0xffff, /* ae03 */ 0xffff, /* ae04 */ 0xffff, /* ae05 */ 0xffff, /* ae06 */ 0xffff, /* ae07 */ 0xffff, /* ae08 */ 0xffff, /* ae09 */ 0xffff, /* ae0a */ 0xffff, /* ae0b */ 0xffff, /* ae0c */ 0xffff, /* ae0d */ 0xffff, /* ae0e */ 0xffff, /* ae0f */ 0xffff, /* ae10 */ 0xffff, /* ae11 */ 0xffff, /* ae12 */ 0xffff, /* ae13 */ 0xffff, /* ae14 */ 0xffff, /* ae15 */ 0xffff, /* ae16 */ 0xffff, /* ae17 */ 0xffff, /* ae18 */ 0xffff, /* ae19 */ 0xffff, /* ae1a */ 0xffff, /* ae1b */ 0xffff, /* ae1c */ 0xffff, /* ae1d */ 0xffff, /* ae1e */ 0xffff, /* ae1f */ 0xffff, /* ae20 */ 0xffff, /* ae21 */ 0xffff, /* ae22 */ 0xffff, /* ae23 */ 0xffff, /* ae24 */ 0xffff, /* ae25 */ 0xffff, /* ae26 */ 0xffff, /* ae27 */ 0xffff, /* ae28 */ 0xffff, /* ae29 */ 0xffff, /* ae2a */ 0xffff, /* ae2b */ 0xffff, /* ae2c */ 0xffff, /* ae2d */ 0xffff, /* ae2e */ 0xffff, /* ae2f */ 0xffff, /* ae30 */ 0xffff, /* ae31 */ 0xffff, /* ae32 */ 0xffff, /* ae33 */ 0xffff, /* ae34 */ 0xffff, /* ae35 */ 0xffff, /* ae36 */ 0xffff, /* ae37 */ 0xffff, /* ae38 */ 0xffff, /* ae39 */ 0xffff, /* ae3a */ 0xffff, /* ae3b */ 0xffff, /* ae3c */ 0xffff, /* ae3d */ 0xffff, /* ae3e */ 0xffff, /* ae3f */ 0xffff, /* ae40 */ 0xffff, /* ae41 */ 0xffff, /* ae42 */ 0xffff, /* ae43 */ 0xffff, /* ae44 */ 0xffff, /* ae45 */ 0xffff, /* ae46 */ 0xffff, /* ae47 */ 0xffff, /* ae48 */ 0xffff, /* ae49 */ 0xffff, /* ae4a */ 0xffff, /* ae4b */ 0xffff, /* ae4c */ 0xffff, /* ae4d */ 0xffff, /* ae4e */ 0xffff, /* ae4f */ 0xffff, /* ae50 */ 0xffff, /* ae51 */ 0xffff, /* ae52 */ 0xffff, /* ae53 */ 0xffff, /* ae54 */ 0xffff, /* ae55 */ 0xffff, /* ae56 */ 0xffff, /* ae57 */ 0xffff, /* ae58 */ 0xffff, /* ae59 */ 0xffff, /* ae5a */ 0xffff, /* ae5b */ 0xffff, /* ae5c */ 0xffff, /* ae5d */ 0xffff, /* ae5e */ 0xffff, /* ae5f */ 0xffff, /* ae60 */ 0xffff, /* ae61 */ 0xffff, /* ae62 */ 0xffff, /* ae63 */ 0xffff, /* ae64 */ 0xffff, /* ae65 */ 0xffff, /* ae66 */ 0xffff, /* ae67 */ 0xffff, /* ae68 */ 0xffff, /* ae69 */ 0xffff, /* ae6a */ 0xffff, /* ae6b */ 0xffff, /* ae6c */ 0xffff, /* ae6d */ 0xffff, /* ae6e */ 0xffff, /* ae6f */ 0xffff, /* ae70 */ 0xffff, /* ae71 */ 0xffff, /* ae72 */ 0xffff, /* ae73 */ 0xffff, /* ae74 */ 0xffff, /* ae75 */ 0xffff, /* ae76 */ 0xffff, /* ae77 */ 0xffff, /* ae78 */ 0xffff, /* ae79 */ 0xffff, /* ae7a */ 0xffff, /* ae7b */ 0xffff, /* ae7c */ 0xffff, /* ae7d */ 0xffff, /* ae7e */ 0xffff, /* ae7f */ 0xffff, /* ae80 */ 0xffff, /* ae81 */ 0xffff, /* ae82 */ 0xffff, /* ae83 */ 0xffff, /* ae84 */ 0xffff, /* ae85 */ 0xffff, /* ae86 */ 0xffff, /* ae87 */ 0xffff, /* ae88 */ 0xffff, /* ae89 */ 0xffff, /* ae8a */ 0xffff, /* ae8b */ 0xffff, /* ae8c */ 0xffff, /* ae8d */ 0xffff, /* ae8e */ 0xffff, /* ae8f */ 0xffff, /* ae90 */ 0xffff, /* ae91 */ 0xffff, /* ae92 */ 0xffff, /* ae93 */ 0xffff, /* ae94 */ 0xffff, /* ae95 */ 0xffff, /* ae96 */ 0xffff, /* ae97 */ 0xffff, /* ae98 */ 0xffff, /* ae99 */ 0xffff, /* ae9a */ 0xffff, /* ae9b */ 0xffff, /* ae9c */ 0xffff, /* ae9d */ 0xffff, /* ae9e */ 0xffff, /* ae9f */ 0xffff, /* aea0 */ 0xffff, /* aea1 */ 0xffff, /* aea2 */ 0xffff, /* aea3 */ 0xffff, /* aea4 */ 0xffff, /* aea5 */ 0xffff, /* aea6 */ 0xffff, /* aea7 */ 0xffff, /* aea8 */ 0xffff, /* aea9 */ 0xffff, /* aeaa */ 0xffff, /* aeab */ 0xffff, /* aeac */ 0xffff, /* aead */ 0xffff, /* aeae */ 0xffff, /* aeaf */ 0xffff, /* aeb0 */ 0xffff, /* aeb1 */ 0xffff, /* aeb2 */ 0xffff, /* aeb3 */ 0xffff, /* aeb4 */ 0xffff, /* aeb5 */ 0xffff, /* aeb6 */ 0xffff, /* aeb7 */ 0xffff, /* aeb8 */ 0xffff, /* aeb9 */ 0xffff, /* aeba */ 0xffff, /* aebb */ 0xffff, /* aebc */ 0xffff, /* aebd */ 0xffff, /* aebe */ 0xffff, /* aebf */ 0xffff, /* aec0 */ 0xffff, /* aec1 */ 0xffff, /* aec2 */ 0xffff, /* aec3 */ 0xffff, /* aec4 */ 0xffff, /* aec5 */ 0xffff, /* aec6 */ 0xffff, /* aec7 */ 0xffff, /* aec8 */ 0xffff, /* aec9 */ 0xffff, /* aeca */ 0xffff, /* aecb */ 0xffff, /* aecc */ 0xffff, /* aecd */ 0xffff, /* aece */ 0xffff, /* aecf */ 0xffff, /* aed0 */ 0xffff, /* aed1 */ 0xffff, /* aed2 */ 0xffff, /* aed3 */ 0xffff, /* aed4 */ 0xffff, /* aed5 */ 0xffff, /* aed6 */ 0xffff, /* aed7 */ 0xffff, /* aed8 */ 0xffff, /* aed9 */ 0xffff, /* aeda */ 0xffff, /* aedb */ 0xffff, /* aedc */ 0xffff, /* aedd */ 0xffff, /* aede */ 0xffff, /* aedf */ 0xffff, /* aee0 */ 0xffff, /* aee1 */ 0xffff, /* aee2 */ 0xffff, /* aee3 */ 0xffff, /* aee4 */ 0xffff, /* aee5 */ 0xffff, /* aee6 */ 0xffff, /* aee7 */ 0xffff, /* aee8 */ 0xffff, /* aee9 */ 0xffff, /* aeea */ 0xffff, /* aeeb */ 0xffff, /* aeec */ 0xffff, /* aeed */ 0xffff, /* aeee */ 0xffff, /* aeef */ 0xffff, /* aef0 */ 0xffff, /* aef1 */ 0xffff, /* aef2 */ 0xffff, /* aef3 */ 0xffff, /* aef4 */ 0xffff, /* aef5 */ 0xffff, /* aef6 */ 0xffff, /* aef7 */ 0xffff, /* aef8 */ 0xffff, /* aef9 */ 0xffff, /* aefa */ 0xffff, /* aefb */ 0xffff, /* aefc */ 0xffff, /* aefd */ 0xffff, /* aefe */ 0xffff, /* aeff */ 0xffff, /* af00 */ 0xffff, /* af01 */ 0xffff, /* af02 */ 0xffff, /* af03 */ 0xffff, /* af04 */ 0xffff, /* af05 */ 0xffff, /* af06 */ 0xffff, /* af07 */ 0xffff, /* af08 */ 0xffff, /* af09 */ 0xffff, /* af0a */ 0xffff, /* af0b */ 0xffff, /* af0c */ 0xffff, /* af0d */ 0xffff, /* af0e */ 0xffff, /* af0f */ 0xffff, /* af10 */ 0xffff, /* af11 */ 0xffff, /* af12 */ 0xffff, /* af13 */ 0xffff, /* af14 */ 0xffff, /* af15 */ 0xffff, /* af16 */ 0xffff, /* af17 */ 0xffff, /* af18 */ 0xffff, /* af19 */ 0xffff, /* af1a */ 0xffff, /* af1b */ 0xffff, /* af1c */ 0xffff, /* af1d */ 0xffff, /* af1e */ 0xffff, /* af1f */ 0xffff, /* af20 */ 0xffff, /* af21 */ 0xffff, /* af22 */ 0xffff, /* af23 */ 0xffff, /* af24 */ 0xffff, /* af25 */ 0xffff, /* af26 */ 0xffff, /* af27 */ 0xffff, /* af28 */ 0xffff, /* af29 */ 0xffff, /* af2a */ 0xffff, /* af2b */ 0xffff, /* af2c */ 0xffff, /* af2d */ 0xffff, /* af2e */ 0xffff, /* af2f */ 0xffff, /* af30 */ 0xffff, /* af31 */ 0xffff, /* af32 */ 0xffff, /* af33 */ 0xffff, /* af34 */ 0xffff, /* af35 */ 0xffff, /* af36 */ 0xffff, /* af37 */ 0xffff, /* af38 */ 0xffff, /* af39 */ 0xffff, /* af3a */ 0xffff, /* af3b */ 0xffff, /* af3c */ 0xffff, /* af3d */ 0xffff, /* af3e */ 0xffff, /* af3f */ 0xffff, /* af40 */ 0xffff, /* af41 */ 0xffff, /* af42 */ 0xffff, /* af43 */ 0xffff, /* af44 */ 0xffff, /* af45 */ 0xffff, /* af46 */ 0xffff, /* af47 */ 0xffff, /* af48 */ 0xffff, /* af49 */ 0xffff, /* af4a */ 0xffff, /* af4b */ 0xffff, /* af4c */ 0xffff, /* af4d */ 0xffff, /* af4e */ 0xffff, /* af4f */ 0xffff, /* af50 */ 0xffff, /* af51 */ 0xffff, /* af52 */ 0xffff, /* af53 */ 0xffff, /* af54 */ 0xffff, /* af55 */ 0xffff, /* af56 */ 0xffff, /* af57 */ 0xffff, /* af58 */ 0xffff, /* af59 */ 0xffff, /* af5a */ 0xffff, /* af5b */ 0xffff, /* af5c */ 0xffff, /* af5d */ 0xffff, /* af5e */ 0xffff, /* af5f */ 0xffff, /* af60 */ 0xffff, /* af61 */ 0xffff, /* af62 */ 0xffff, /* af63 */ 0xffff, /* af64 */ 0xffff, /* af65 */ 0xffff, /* af66 */ 0xffff, /* af67 */ 0xffff, /* af68 */ 0xffff, /* af69 */ 0xffff, /* af6a */ 0xffff, /* af6b */ 0xffff, /* af6c */ 0xffff, /* af6d */ 0xffff, /* af6e */ 0xffff, /* af6f */ 0xffff, /* af70 */ 0xffff, /* af71 */ 0xffff, /* af72 */ 0xffff, /* af73 */ 0xffff, /* af74 */ 0xffff, /* af75 */ 0xffff, /* af76 */ 0xffff, /* af77 */ 0xffff, /* af78 */ 0xffff, /* af79 */ 0xffff, /* af7a */ 0xffff, /* af7b */ 0xffff, /* af7c */ 0xffff, /* af7d */ 0xffff, /* af7e */ 0xffff, /* af7f */ 0xffff, /* af80 */ 0xffff, /* af81 */ 0xffff, /* af82 */ 0xffff, /* af83 */ 0xffff, /* af84 */ 0xffff, /* af85 */ 0xffff, /* af86 */ 0xffff, /* af87 */ 0xffff, /* af88 */ 0xffff, /* af89 */ 0xffff, /* af8a */ 0xffff, /* af8b */ 0xffff, /* af8c */ 0xffff, /* af8d */ 0xffff, /* af8e */ 0xffff, /* af8f */ 0xffff, /* af90 */ 0xffff, /* af91 */ 0xffff, /* af92 */ 0xffff, /* af93 */ 0xffff, /* af94 */ 0xffff, /* af95 */ 0xffff, /* af96 */ 0xffff, /* af97 */ 0xffff, /* af98 */ 0xffff, /* af99 */ 0xffff, /* af9a */ 0xffff, /* af9b */ 0xffff, /* af9c */ 0xffff, /* af9d */ 0xffff, /* af9e */ 0xffff, /* af9f */ 0xffff, /* afa0 */ 0xffff, /* afa1 */ 0xffff, /* afa2 */ 0xffff, /* afa3 */ 0xffff, /* afa4 */ 0xffff, /* afa5 */ 0xffff, /* afa6 */ 0xffff, /* afa7 */ 0xffff, /* afa8 */ 0xffff, /* afa9 */ 0xffff, /* afaa */ 0xffff, /* afab */ 0xffff, /* afac */ 0xffff, /* afad */ 0xffff, /* afae */ 0xffff, /* afaf */ 0xffff, /* afb0 */ 0xffff, /* afb1 */ 0xffff, /* afb2 */ 0xffff, /* afb3 */ 0xffff, /* afb4 */ 0xffff, /* afb5 */ 0xffff, /* afb6 */ 0xffff, /* afb7 */ 0xffff, /* afb8 */ 0xffff, /* afb9 */ 0xffff, /* afba */ 0xffff, /* afbb */ 0xffff, /* afbc */ 0xffff, /* afbd */ 0xffff, /* afbe */ 0xffff, /* afbf */ 0xffff, /* afc0 */ 0xffff, /* afc1 */ 0xffff, /* afc2 */ 0xffff, /* afc3 */ 0xffff, /* afc4 */ 0xffff, /* afc5 */ 0xffff, /* afc6 */ 0xffff, /* afc7 */ 0xffff, /* afc8 */ 0xffff, /* afc9 */ 0xffff, /* afca */ 0xffff, /* afcb */ 0xffff, /* afcc */ 0xffff, /* afcd */ 0xffff, /* afce */ 0xffff, /* afcf */ 0xffff, /* afd0 */ 0xffff, /* afd1 */ 0xffff, /* afd2 */ 0xffff, /* afd3 */ 0xffff, /* afd4 */ 0xffff, /* afd5 */ 0xffff, /* afd6 */ 0xffff, /* afd7 */ 0xffff, /* afd8 */ 0xffff, /* afd9 */ 0xffff, /* afda */ 0xffff, /* afdb */ 0xffff, /* afdc */ 0xffff, /* afdd */ 0xffff, /* afde */ 0xffff, /* afdf */ 0xffff, /* afe0 */ 0xffff, /* afe1 */ 0xffff, /* afe2 */ 0xffff, /* afe3 */ 0xffff, /* afe4 */ 0xffff, /* afe5 */ 0xffff, /* afe6 */ 0xffff, /* afe7 */ 0xffff, /* afe8 */ 0xffff, /* afe9 */ 0xffff, /* afea */ 0xffff, /* afeb */ 0xffff, /* afec */ 0xffff, /* afed */ 0xffff, /* afee */ 0xffff, /* afef */ 0xffff, /* aff0 */ 0xffff, /* aff1 */ 0xffff, /* aff2 */ 0xffff, /* aff3 */ 0xffff, /* aff4 */ 0xffff, /* aff5 */ 0xffff, /* aff6 */ 0xffff, /* aff7 */ 0xffff, /* aff8 */ 0xffff, /* aff9 */ 0xffff, /* affa */ 0xffff, /* affb */ 0xffff, /* affc */ 0xffff, /* affd */ 0xffff, /* affe */ 0xffff, /* afff */ 0xffff, /* b000 */ 0xffff, /* b001 */ 0xffff, /* b002 */ 0xffff, /* b003 */ 0xffff, /* b004 */ 0xffff, /* b005 */ 0xffff, /* b006 */ 0xffff, /* b007 */ 0xffff, /* b008 */ 0xffff, /* b009 */ 0xffff, /* b00a */ 0xffff, /* b00b */ 0xffff, /* b00c */ 0xffff, /* b00d */ 0xffff, /* b00e */ 0xffff, /* b00f */ 0xffff, /* b010 */ 0xffff, /* b011 */ 0xffff, /* b012 */ 0xffff, /* b013 */ 0xffff, /* b014 */ 0xffff, /* b015 */ 0xffff, /* b016 */ 0xffff, /* b017 */ 0xffff, /* b018 */ 0xffff, /* b019 */ 0xffff, /* b01a */ 0xffff, /* b01b */ 0xffff, /* b01c */ 0xffff, /* b01d */ 0xffff, /* b01e */ 0xffff, /* b01f */ 0xffff, /* b020 */ 0xffff, /* b021 */ 0xffff, /* b022 */ 0xffff, /* b023 */ 0xffff, /* b024 */ 0xffff, /* b025 */ 0xffff, /* b026 */ 0xffff, /* b027 */ 0xffff, /* b028 */ 0xffff, /* b029 */ 0xffff, /* b02a */ 0xffff, /* b02b */ 0xffff, /* b02c */ 0xffff, /* b02d */ 0xffff, /* b02e */ 0xffff, /* b02f */ 0xffff, /* b030 */ 0xffff, /* b031 */ 0xffff, /* b032 */ 0xffff, /* b033 */ 0xffff, /* b034 */ 0xffff, /* b035 */ 0xffff, /* b036 */ 0xffff, /* b037 */ 0xffff, /* b038 */ 0xffff, /* b039 */ 0xffff, /* b03a */ 0xffff, /* b03b */ 0xffff, /* b03c */ 0xffff, /* b03d */ 0xffff, /* b03e */ 0xffff, /* b03f */ 0xffff, /* b040 */ 0xffff, /* b041 */ 0xffff, /* b042 */ 0xffff, /* b043 */ 0xffff, /* b044 */ 0xffff, /* b045 */ 0xffff, /* b046 */ 0xffff, /* b047 */ 0xffff, /* b048 */ 0xffff, /* b049 */ 0xffff, /* b04a */ 0xffff, /* b04b */ 0xffff, /* b04c */ 0xffff, /* b04d */ 0xffff, /* b04e */ 0xffff, /* b04f */ 0xffff, /* b050 */ 0xffff, /* b051 */ 0xffff, /* b052 */ 0xffff, /* b053 */ 0xffff, /* b054 */ 0xffff, /* b055 */ 0xffff, /* b056 */ 0xffff, /* b057 */ 0xffff, /* b058 */ 0xffff, /* b059 */ 0xffff, /* b05a */ 0xffff, /* b05b */ 0xffff, /* b05c */ 0xffff, /* b05d */ 0xffff, /* b05e */ 0xffff, /* b05f */ 0xffff, /* b060 */ 0xffff, /* b061 */ 0xffff, /* b062 */ 0xffff, /* b063 */ 0xffff, /* b064 */ 0xffff, /* b065 */ 0xffff, /* b066 */ 0xffff, /* b067 */ 0xffff, /* b068 */ 0xffff, /* b069 */ 0xffff, /* b06a */ 0xffff, /* b06b */ 0xffff, /* b06c */ 0xffff, /* b06d */ 0xffff, /* b06e */ 0xffff, /* b06f */ 0xffff, /* b070 */ 0xffff, /* b071 */ 0xffff, /* b072 */ 0xffff, /* b073 */ 0xffff, /* b074 */ 0xffff, /* b075 */ 0xffff, /* b076 */ 0xffff, /* b077 */ 0xffff, /* b078 */ 0xffff, /* b079 */ 0xffff, /* b07a */ 0xffff, /* b07b */ 0xffff, /* b07c */ 0xffff, /* b07d */ 0xffff, /* b07e */ 0xffff, /* b07f */ 0xffff, /* b080 */ 0xffff, /* b081 */ 0xffff, /* b082 */ 0xffff, /* b083 */ 0xffff, /* b084 */ 0xffff, /* b085 */ 0xffff, /* b086 */ 0xffff, /* b087 */ 0xffff, /* b088 */ 0xffff, /* b089 */ 0xffff, /* b08a */ 0xffff, /* b08b */ 0xffff, /* b08c */ 0xffff, /* b08d */ 0xffff, /* b08e */ 0xffff, /* b08f */ 0xffff, /* b090 */ 0xffff, /* b091 */ 0xffff, /* b092 */ 0xffff, /* b093 */ 0xffff, /* b094 */ 0xffff, /* b095 */ 0xffff, /* b096 */ 0xffff, /* b097 */ 0xffff, /* b098 */ 0xffff, /* b099 */ 0xffff, /* b09a */ 0xffff, /* b09b */ 0xffff, /* b09c */ 0xffff, /* b09d */ 0xffff, /* b09e */ 0xffff, /* b09f */ 0xffff, /* b0a0 */ 0xffff, /* b0a1 */ 0xffff, /* b0a2 */ 0xffff, /* b0a3 */ 0xffff, /* b0a4 */ 0xffff, /* b0a5 */ 0xffff, /* b0a6 */ 0xffff, /* b0a7 */ 0xffff, /* b0a8 */ 0xffff, /* b0a9 */ 0xffff, /* b0aa */ 0xffff, /* b0ab */ 0xffff, /* b0ac */ 0xffff, /* b0ad */ 0xffff, /* b0ae */ 0xffff, /* b0af */ 0xffff, /* b0b0 */ 0xffff, /* b0b1 */ 0xffff, /* b0b2 */ 0xffff, /* b0b3 */ 0xffff, /* b0b4 */ 0xffff, /* b0b5 */ 0xffff, /* b0b6 */ 0xffff, /* b0b7 */ 0xffff, /* b0b8 */ 0xffff, /* b0b9 */ 0xffff, /* b0ba */ 0xffff, /* b0bb */ 0xffff, /* b0bc */ 0xffff, /* b0bd */ 0xffff, /* b0be */ 0xffff, /* b0bf */ 0xffff, /* b0c0 */ 0xffff, /* b0c1 */ 0xffff, /* b0c2 */ 0xffff, /* b0c3 */ 0xffff, /* b0c4 */ 0xffff, /* b0c5 */ 0xffff, /* b0c6 */ 0xffff, /* b0c7 */ 0xffff, /* b0c8 */ 0xffff, /* b0c9 */ 0xffff, /* b0ca */ 0xffff, /* b0cb */ 0xffff, /* b0cc */ 0xffff, /* b0cd */ 0xffff, /* b0ce */ 0xffff, /* b0cf */ 0xffff, /* b0d0 */ 0xffff, /* b0d1 */ 0xffff, /* b0d2 */ 0xffff, /* b0d3 */ 0xffff, /* b0d4 */ 0xffff, /* b0d5 */ 0xffff, /* b0d6 */ 0xffff, /* b0d7 */ 0xffff, /* b0d8 */ 0xffff, /* b0d9 */ 0xffff, /* b0da */ 0xffff, /* b0db */ 0xffff, /* b0dc */ 0xffff, /* b0dd */ 0xffff, /* b0de */ 0xffff, /* b0df */ 0xffff, /* b0e0 */ 0xffff, /* b0e1 */ 0xffff, /* b0e2 */ 0xffff, /* b0e3 */ 0xffff, /* b0e4 */ 0xffff, /* b0e5 */ 0xffff, /* b0e6 */ 0xffff, /* b0e7 */ 0xffff, /* b0e8 */ 0xffff, /* b0e9 */ 0xffff, /* b0ea */ 0xffff, /* b0eb */ 0xffff, /* b0ec */ 0xffff, /* b0ed */ 0xffff, /* b0ee */ 0xffff, /* b0ef */ 0xffff, /* b0f0 */ 0xffff, /* b0f1 */ 0xffff, /* b0f2 */ 0xffff, /* b0f3 */ 0xffff, /* b0f4 */ 0xffff, /* b0f5 */ 0xffff, /* b0f6 */ 0xffff, /* b0f7 */ 0xffff, /* b0f8 */ 0xffff, /* b0f9 */ 0xffff, /* b0fa */ 0xffff, /* b0fb */ 0xffff, /* b0fc */ 0xffff, /* b0fd */ 0xffff, /* b0fe */ 0xffff, /* b0ff */ 0xffff, /* b100 */ 0xffff, /* b101 */ 0xffff, /* b102 */ 0xffff, /* b103 */ 0xffff, /* b104 */ 0xffff, /* b105 */ 0xffff, /* b106 */ 0xffff, /* b107 */ 0xffff, /* b108 */ 0xffff, /* b109 */ 0xffff, /* b10a */ 0xffff, /* b10b */ 0xffff, /* b10c */ 0xffff, /* b10d */ 0xffff, /* b10e */ 0xffff, /* b10f */ 0xffff, /* b110 */ 0xffff, /* b111 */ 0xffff, /* b112 */ 0xffff, /* b113 */ 0xffff, /* b114 */ 0xffff, /* b115 */ 0xffff, /* b116 */ 0xffff, /* b117 */ 0xffff, /* b118 */ 0xffff, /* b119 */ 0xffff, /* b11a */ 0xffff, /* b11b */ 0xffff, /* b11c */ 0xffff, /* b11d */ 0xffff, /* b11e */ 0xffff, /* b11f */ 0xffff, /* b120 */ 0xffff, /* b121 */ 0xffff, /* b122 */ 0xffff, /* b123 */ 0xffff, /* b124 */ 0xffff, /* b125 */ 0xffff, /* b126 */ 0xffff, /* b127 */ 0xffff, /* b128 */ 0xffff, /* b129 */ 0xffff, /* b12a */ 0xffff, /* b12b */ 0xffff, /* b12c */ 0xffff, /* b12d */ 0xffff, /* b12e */ 0xffff, /* b12f */ 0xffff, /* b130 */ 0xffff, /* b131 */ 0xffff, /* b132 */ 0xffff, /* b133 */ 0xffff, /* b134 */ 0xffff, /* b135 */ 0xffff, /* b136 */ 0xffff, /* b137 */ 0xffff, /* b138 */ 0xffff, /* b139 */ 0xffff, /* b13a */ 0xffff, /* b13b */ 0xffff, /* b13c */ 0xffff, /* b13d */ 0xffff, /* b13e */ 0xffff, /* b13f */ 0xffff, /* b140 */ 0xffff, /* b141 */ 0xffff, /* b142 */ 0xffff, /* b143 */ 0xffff, /* b144 */ 0xffff, /* b145 */ 0xffff, /* b146 */ 0xffff, /* b147 */ 0xffff, /* b148 */ 0xffff, /* b149 */ 0xffff, /* b14a */ 0xffff, /* b14b */ 0xffff, /* b14c */ 0xffff, /* b14d */ 0xffff, /* b14e */ 0xffff, /* b14f */ 0xffff, /* b150 */ 0xffff, /* b151 */ 0xffff, /* b152 */ 0xffff, /* b153 */ 0xffff, /* b154 */ 0xffff, /* b155 */ 0xffff, /* b156 */ 0xffff, /* b157 */ 0xffff, /* b158 */ 0xffff, /* b159 */ 0xffff, /* b15a */ 0xffff, /* b15b */ 0xffff, /* b15c */ 0xffff, /* b15d */ 0xffff, /* b15e */ 0xffff, /* b15f */ 0xffff, /* b160 */ 0xffff, /* b161 */ 0xffff, /* b162 */ 0xffff, /* b163 */ 0xffff, /* b164 */ 0xffff, /* b165 */ 0xffff, /* b166 */ 0xffff, /* b167 */ 0xffff, /* b168 */ 0xffff, /* b169 */ 0xffff, /* b16a */ 0xffff, /* b16b */ 0xffff, /* b16c */ 0xffff, /* b16d */ 0xffff, /* b16e */ 0xffff, /* b16f */ 0xffff, /* b170 */ 0xffff, /* b171 */ 0xffff, /* b172 */ 0xffff, /* b173 */ 0xffff, /* b174 */ 0xffff, /* b175 */ 0xffff, /* b176 */ 0xffff, /* b177 */ 0xffff, /* b178 */ 0xffff, /* b179 */ 0xffff, /* b17a */ 0xffff, /* b17b */ 0xffff, /* b17c */ 0xffff, /* b17d */ 0xffff, /* b17e */ 0xffff, /* b17f */ 0xffff, /* b180 */ 0xffff, /* b181 */ 0xffff, /* b182 */ 0xffff, /* b183 */ 0xffff, /* b184 */ 0xffff, /* b185 */ 0xffff, /* b186 */ 0xffff, /* b187 */ 0xffff, /* b188 */ 0xffff, /* b189 */ 0xffff, /* b18a */ 0xffff, /* b18b */ 0xffff, /* b18c */ 0xffff, /* b18d */ 0xffff, /* b18e */ 0xffff, /* b18f */ 0xffff, /* b190 */ 0xffff, /* b191 */ 0xffff, /* b192 */ 0xffff, /* b193 */ 0xffff, /* b194 */ 0xffff, /* b195 */ 0xffff, /* b196 */ 0xffff, /* b197 */ 0xffff, /* b198 */ 0xffff, /* b199 */ 0xffff, /* b19a */ 0xffff, /* b19b */ 0xffff, /* b19c */ 0xffff, /* b19d */ 0xffff, /* b19e */ 0xffff, /* b19f */ 0xffff, /* b1a0 */ 0xffff, /* b1a1 */ 0xffff, /* b1a2 */ 0xffff, /* b1a3 */ 0xffff, /* b1a4 */ 0xffff, /* b1a5 */ 0xffff, /* b1a6 */ 0xffff, /* b1a7 */ 0xffff, /* b1a8 */ 0xffff, /* b1a9 */ 0xffff, /* b1aa */ 0xffff, /* b1ab */ 0xffff, /* b1ac */ 0xffff, /* b1ad */ 0xffff, /* b1ae */ 0xffff, /* b1af */ 0xffff, /* b1b0 */ 0xffff, /* b1b1 */ 0xffff, /* b1b2 */ 0xffff, /* b1b3 */ 0xffff, /* b1b4 */ 0xffff, /* b1b5 */ 0xffff, /* b1b6 */ 0xffff, /* b1b7 */ 0xffff, /* b1b8 */ 0xffff, /* b1b9 */ 0xffff, /* b1ba */ 0xffff, /* b1bb */ 0xffff, /* b1bc */ 0xffff, /* b1bd */ 0xffff, /* b1be */ 0xffff, /* b1bf */ 0xffff, /* b1c0 */ 0xffff, /* b1c1 */ 0xffff, /* b1c2 */ 0xffff, /* b1c3 */ 0xffff, /* b1c4 */ 0xffff, /* b1c5 */ 0xffff, /* b1c6 */ 0xffff, /* b1c7 */ 0xffff, /* b1c8 */ 0xffff, /* b1c9 */ 0xffff, /* b1ca */ 0xffff, /* b1cb */ 0xffff, /* b1cc */ 0xffff, /* b1cd */ 0xffff, /* b1ce */ 0xffff, /* b1cf */ 0xffff, /* b1d0 */ 0xffff, /* b1d1 */ 0xffff, /* b1d2 */ 0xffff, /* b1d3 */ 0xffff, /* b1d4 */ 0xffff, /* b1d5 */ 0xffff, /* b1d6 */ 0xffff, /* b1d7 */ 0xffff, /* b1d8 */ 0xffff, /* b1d9 */ 0xffff, /* b1da */ 0xffff, /* b1db */ 0xffff, /* b1dc */ 0xffff, /* b1dd */ 0xffff, /* b1de */ 0xffff, /* b1df */ 0xffff, /* b1e0 */ 0xffff, /* b1e1 */ 0xffff, /* b1e2 */ 0xffff, /* b1e3 */ 0xffff, /* b1e4 */ 0xffff, /* b1e5 */ 0xffff, /* b1e6 */ 0xffff, /* b1e7 */ 0xffff, /* b1e8 */ 0xffff, /* b1e9 */ 0xffff, /* b1ea */ 0xffff, /* b1eb */ 0xffff, /* b1ec */ 0xffff, /* b1ed */ 0xffff, /* b1ee */ 0xffff, /* b1ef */ 0xffff, /* b1f0 */ 0xffff, /* b1f1 */ 0xffff, /* b1f2 */ 0xffff, /* b1f3 */ 0xffff, /* b1f4 */ 0xffff, /* b1f5 */ 0xffff, /* b1f6 */ 0xffff, /* b1f7 */ 0xffff, /* b1f8 */ 0xffff, /* b1f9 */ 0xffff, /* b1fa */ 0xffff, /* b1fb */ 0xffff, /* b1fc */ 0xffff, /* b1fd */ 0xffff, /* b1fe */ 0xffff, /* b1ff */ 0xffff, /* b200 */ 0xffff, /* b201 */ 0xffff, /* b202 */ 0xffff, /* b203 */ 0xffff, /* b204 */ 0xffff, /* b205 */ 0xffff, /* b206 */ 0xffff, /* b207 */ 0xffff, /* b208 */ 0xffff, /* b209 */ 0xffff, /* b20a */ 0xffff, /* b20b */ 0xffff, /* b20c */ 0xffff, /* b20d */ 0xffff, /* b20e */ 0xffff, /* b20f */ 0xffff, /* b210 */ 0xffff, /* b211 */ 0xffff, /* b212 */ 0xffff, /* b213 */ 0xffff, /* b214 */ 0xffff, /* b215 */ 0xffff, /* b216 */ 0xffff, /* b217 */ 0xffff, /* b218 */ 0xffff, /* b219 */ 0xffff, /* b21a */ 0xffff, /* b21b */ 0xffff, /* b21c */ 0xffff, /* b21d */ 0xffff, /* b21e */ 0xffff, /* b21f */ 0xffff, /* b220 */ 0xffff, /* b221 */ 0xffff, /* b222 */ 0xffff, /* b223 */ 0xffff, /* b224 */ 0xffff, /* b225 */ 0xffff, /* b226 */ 0xffff, /* b227 */ 0xffff, /* b228 */ 0xffff, /* b229 */ 0xffff, /* b22a */ 0xffff, /* b22b */ 0xffff, /* b22c */ 0xffff, /* b22d */ 0xffff, /* b22e */ 0xffff, /* b22f */ 0xffff, /* b230 */ 0xffff, /* b231 */ 0xffff, /* b232 */ 0xffff, /* b233 */ 0xffff, /* b234 */ 0xffff, /* b235 */ 0xffff, /* b236 */ 0xffff, /* b237 */ 0xffff, /* b238 */ 0xffff, /* b239 */ 0xffff, /* b23a */ 0xffff, /* b23b */ 0xffff, /* b23c */ 0xffff, /* b23d */ 0xffff, /* b23e */ 0xffff, /* b23f */ 0xffff, /* b240 */ 0xffff, /* b241 */ 0xffff, /* b242 */ 0xffff, /* b243 */ 0xffff, /* b244 */ 0xffff, /* b245 */ 0xffff, /* b246 */ 0xffff, /* b247 */ 0xffff, /* b248 */ 0xffff, /* b249 */ 0xffff, /* b24a */ 0xffff, /* b24b */ 0xffff, /* b24c */ 0xffff, /* b24d */ 0xffff, /* b24e */ 0xffff, /* b24f */ 0xffff, /* b250 */ 0xffff, /* b251 */ 0xffff, /* b252 */ 0xffff, /* b253 */ 0xffff, /* b254 */ 0xffff, /* b255 */ 0xffff, /* b256 */ 0xffff, /* b257 */ 0xffff, /* b258 */ 0xffff, /* b259 */ 0xffff, /* b25a */ 0xffff, /* b25b */ 0xffff, /* b25c */ 0xffff, /* b25d */ 0xffff, /* b25e */ 0xffff, /* b25f */ 0xffff, /* b260 */ 0xffff, /* b261 */ 0xffff, /* b262 */ 0xffff, /* b263 */ 0xffff, /* b264 */ 0xffff, /* b265 */ 0xffff, /* b266 */ 0xffff, /* b267 */ 0xffff, /* b268 */ 0xffff, /* b269 */ 0xffff, /* b26a */ 0xffff, /* b26b */ 0xffff, /* b26c */ 0xffff, /* b26d */ 0xffff, /* b26e */ 0xffff, /* b26f */ 0xffff, /* b270 */ 0xffff, /* b271 */ 0xffff, /* b272 */ 0xffff, /* b273 */ 0xffff, /* b274 */ 0xffff, /* b275 */ 0xffff, /* b276 */ 0xffff, /* b277 */ 0xffff, /* b278 */ 0xffff, /* b279 */ 0xffff, /* b27a */ 0xffff, /* b27b */ 0xffff, /* b27c */ 0xffff, /* b27d */ 0xffff, /* b27e */ 0xffff, /* b27f */ 0xffff, /* b280 */ 0xffff, /* b281 */ 0xffff, /* b282 */ 0xffff, /* b283 */ 0xffff, /* b284 */ 0xffff, /* b285 */ 0xffff, /* b286 */ 0xffff, /* b287 */ 0xffff, /* b288 */ 0xffff, /* b289 */ 0xffff, /* b28a */ 0xffff, /* b28b */ 0xffff, /* b28c */ 0xffff, /* b28d */ 0xffff, /* b28e */ 0xffff, /* b28f */ 0xffff, /* b290 */ 0xffff, /* b291 */ 0xffff, /* b292 */ 0xffff, /* b293 */ 0xffff, /* b294 */ 0xffff, /* b295 */ 0xffff, /* b296 */ 0xffff, /* b297 */ 0xffff, /* b298 */ 0xffff, /* b299 */ 0xffff, /* b29a */ 0xffff, /* b29b */ 0xffff, /* b29c */ 0xffff, /* b29d */ 0xffff, /* b29e */ 0xffff, /* b29f */ 0xffff, /* b2a0 */ 0xffff, /* b2a1 */ 0xffff, /* b2a2 */ 0xffff, /* b2a3 */ 0xffff, /* b2a4 */ 0xffff, /* b2a5 */ 0xffff, /* b2a6 */ 0xffff, /* b2a7 */ 0xffff, /* b2a8 */ 0xffff, /* b2a9 */ 0xffff, /* b2aa */ 0xffff, /* b2ab */ 0xffff, /* b2ac */ 0xffff, /* b2ad */ 0xffff, /* b2ae */ 0xffff, /* b2af */ 0xffff, /* b2b0 */ 0xffff, /* b2b1 */ 0xffff, /* b2b2 */ 0xffff, /* b2b3 */ 0xffff, /* b2b4 */ 0xffff, /* b2b5 */ 0xffff, /* b2b6 */ 0xffff, /* b2b7 */ 0xffff, /* b2b8 */ 0xffff, /* b2b9 */ 0xffff, /* b2ba */ 0xffff, /* b2bb */ 0xffff, /* b2bc */ 0xffff, /* b2bd */ 0xffff, /* b2be */ 0xffff, /* b2bf */ 0xffff, /* b2c0 */ 0xffff, /* b2c1 */ 0xffff, /* b2c2 */ 0xffff, /* b2c3 */ 0xffff, /* b2c4 */ 0xffff, /* b2c5 */ 0xffff, /* b2c6 */ 0xffff, /* b2c7 */ 0xffff, /* b2c8 */ 0xffff, /* b2c9 */ 0xffff, /* b2ca */ 0xffff, /* b2cb */ 0xffff, /* b2cc */ 0xffff, /* b2cd */ 0xffff, /* b2ce */ 0xffff, /* b2cf */ 0xffff, /* b2d0 */ 0xffff, /* b2d1 */ 0xffff, /* b2d2 */ 0xffff, /* b2d3 */ 0xffff, /* b2d4 */ 0xffff, /* b2d5 */ 0xffff, /* b2d6 */ 0xffff, /* b2d7 */ 0xffff, /* b2d8 */ 0xffff, /* b2d9 */ 0xffff, /* b2da */ 0xffff, /* b2db */ 0xffff, /* b2dc */ 0xffff, /* b2dd */ 0xffff, /* b2de */ 0xffff, /* b2df */ 0xffff, /* b2e0 */ 0xffff, /* b2e1 */ 0xffff, /* b2e2 */ 0xffff, /* b2e3 */ 0xffff, /* b2e4 */ 0xffff, /* b2e5 */ 0xffff, /* b2e6 */ 0xffff, /* b2e7 */ 0xffff, /* b2e8 */ 0xffff, /* b2e9 */ 0xffff, /* b2ea */ 0xffff, /* b2eb */ 0xffff, /* b2ec */ 0xffff, /* b2ed */ 0xffff, /* b2ee */ 0xffff, /* b2ef */ 0xffff, /* b2f0 */ 0xffff, /* b2f1 */ 0xffff, /* b2f2 */ 0xffff, /* b2f3 */ 0xffff, /* b2f4 */ 0xffff, /* b2f5 */ 0xffff, /* b2f6 */ 0xffff, /* b2f7 */ 0xffff, /* b2f8 */ 0xffff, /* b2f9 */ 0xffff, /* b2fa */ 0xffff, /* b2fb */ 0xffff, /* b2fc */ 0xffff, /* b2fd */ 0xffff, /* b2fe */ 0xffff, /* b2ff */ 0xffff, /* b300 */ 0xffff, /* b301 */ 0xffff, /* b302 */ 0xffff, /* b303 */ 0xffff, /* b304 */ 0xffff, /* b305 */ 0xffff, /* b306 */ 0xffff, /* b307 */ 0xffff, /* b308 */ 0xffff, /* b309 */ 0xffff, /* b30a */ 0xffff, /* b30b */ 0xffff, /* b30c */ 0xffff, /* b30d */ 0xffff, /* b30e */ 0xffff, /* b30f */ 0xffff, /* b310 */ 0xffff, /* b311 */ 0xffff, /* b312 */ 0xffff, /* b313 */ 0xffff, /* b314 */ 0xffff, /* b315 */ 0xffff, /* b316 */ 0xffff, /* b317 */ 0xffff, /* b318 */ 0xffff, /* b319 */ 0xffff, /* b31a */ 0xffff, /* b31b */ 0xffff, /* b31c */ 0xffff, /* b31d */ 0xffff, /* b31e */ 0xffff, /* b31f */ 0xffff, /* b320 */ 0xffff, /* b321 */ 0xffff, /* b322 */ 0xffff, /* b323 */ 0xffff, /* b324 */ 0xffff, /* b325 */ 0xffff, /* b326 */ 0xffff, /* b327 */ 0xffff, /* b328 */ 0xffff, /* b329 */ 0xffff, /* b32a */ 0xffff, /* b32b */ 0xffff, /* b32c */ 0xffff, /* b32d */ 0xffff, /* b32e */ 0xffff, /* b32f */ 0xffff, /* b330 */ 0xffff, /* b331 */ 0xffff, /* b332 */ 0xffff, /* b333 */ 0xffff, /* b334 */ 0xffff, /* b335 */ 0xffff, /* b336 */ 0xffff, /* b337 */ 0xffff, /* b338 */ 0xffff, /* b339 */ 0xffff, /* b33a */ 0xffff, /* b33b */ 0xffff, /* b33c */ 0xffff, /* b33d */ 0xffff, /* b33e */ 0xffff, /* b33f */ 0xffff, /* b340 */ 0xffff, /* b341 */ 0xffff, /* b342 */ 0xffff, /* b343 */ 0xffff, /* b344 */ 0xffff, /* b345 */ 0xffff, /* b346 */ 0xffff, /* b347 */ 0xffff, /* b348 */ 0xffff, /* b349 */ 0xffff, /* b34a */ 0xffff, /* b34b */ 0xffff, /* b34c */ 0xffff, /* b34d */ 0xffff, /* b34e */ 0xffff, /* b34f */ 0xffff, /* b350 */ 0xffff, /* b351 */ 0xffff, /* b352 */ 0xffff, /* b353 */ 0xffff, /* b354 */ 0xffff, /* b355 */ 0xffff, /* b356 */ 0xffff, /* b357 */ 0xffff, /* b358 */ 0xffff, /* b359 */ 0xffff, /* b35a */ 0xffff, /* b35b */ 0xffff, /* b35c */ 0xffff, /* b35d */ 0xffff, /* b35e */ 0xffff, /* b35f */ 0xffff, /* b360 */ 0xffff, /* b361 */ 0xffff, /* b362 */ 0xffff, /* b363 */ 0xffff, /* b364 */ 0xffff, /* b365 */ 0xffff, /* b366 */ 0xffff, /* b367 */ 0xffff, /* b368 */ 0xffff, /* b369 */ 0xffff, /* b36a */ 0xffff, /* b36b */ 0xffff, /* b36c */ 0xffff, /* b36d */ 0xffff, /* b36e */ 0xffff, /* b36f */ 0xffff, /* b370 */ 0xffff, /* b371 */ 0xffff, /* b372 */ 0xffff, /* b373 */ 0xffff, /* b374 */ 0xffff, /* b375 */ 0xffff, /* b376 */ 0xffff, /* b377 */ 0xffff, /* b378 */ 0xffff, /* b379 */ 0xffff, /* b37a */ 0xffff, /* b37b */ 0xffff, /* b37c */ 0xffff, /* b37d */ 0xffff, /* b37e */ 0xffff, /* b37f */ 0xffff, /* b380 */ 0xffff, /* b381 */ 0xffff, /* b382 */ 0xffff, /* b383 */ 0xffff, /* b384 */ 0xffff, /* b385 */ 0xffff, /* b386 */ 0xffff, /* b387 */ 0xffff, /* b388 */ 0xffff, /* b389 */ 0xffff, /* b38a */ 0xffff, /* b38b */ 0xffff, /* b38c */ 0xffff, /* b38d */ 0xffff, /* b38e */ 0xffff, /* b38f */ 0xffff, /* b390 */ 0xffff, /* b391 */ 0xffff, /* b392 */ 0xffff, /* b393 */ 0xffff, /* b394 */ 0xffff, /* b395 */ 0xffff, /* b396 */ 0xffff, /* b397 */ 0xffff, /* b398 */ 0xffff, /* b399 */ 0xffff, /* b39a */ 0xffff, /* b39b */ 0xffff, /* b39c */ 0xffff, /* b39d */ 0xffff, /* b39e */ 0xffff, /* b39f */ 0xffff, /* b3a0 */ 0xffff, /* b3a1 */ 0xffff, /* b3a2 */ 0xffff, /* b3a3 */ 0xffff, /* b3a4 */ 0xffff, /* b3a5 */ 0xffff, /* b3a6 */ 0xffff, /* b3a7 */ 0xffff, /* b3a8 */ 0xffff, /* b3a9 */ 0xffff, /* b3aa */ 0xffff, /* b3ab */ 0xffff, /* b3ac */ 0xffff, /* b3ad */ 0xffff, /* b3ae */ 0xffff, /* b3af */ 0xffff, /* b3b0 */ 0xffff, /* b3b1 */ 0xffff, /* b3b2 */ 0xffff, /* b3b3 */ 0xffff, /* b3b4 */ 0xffff, /* b3b5 */ 0xffff, /* b3b6 */ 0xffff, /* b3b7 */ 0xffff, /* b3b8 */ 0xffff, /* b3b9 */ 0xffff, /* b3ba */ 0xffff, /* b3bb */ 0xffff, /* b3bc */ 0xffff, /* b3bd */ 0xffff, /* b3be */ 0xffff, /* b3bf */ 0xffff, /* b3c0 */ 0xffff, /* b3c1 */ 0xffff, /* b3c2 */ 0xffff, /* b3c3 */ 0xffff, /* b3c4 */ 0xffff, /* b3c5 */ 0xffff, /* b3c6 */ 0xffff, /* b3c7 */ 0xffff, /* b3c8 */ 0xffff, /* b3c9 */ 0xffff, /* b3ca */ 0xffff, /* b3cb */ 0xffff, /* b3cc */ 0xffff, /* b3cd */ 0xffff, /* b3ce */ 0xffff, /* b3cf */ 0xffff, /* b3d0 */ 0xffff, /* b3d1 */ 0xffff, /* b3d2 */ 0xffff, /* b3d3 */ 0xffff, /* b3d4 */ 0xffff, /* b3d5 */ 0xffff, /* b3d6 */ 0xffff, /* b3d7 */ 0xffff, /* b3d8 */ 0xffff, /* b3d9 */ 0xffff, /* b3da */ 0xffff, /* b3db */ 0xffff, /* b3dc */ 0xffff, /* b3dd */ 0xffff, /* b3de */ 0xffff, /* b3df */ 0xffff, /* b3e0 */ 0xffff, /* b3e1 */ 0xffff, /* b3e2 */ 0xffff, /* b3e3 */ 0xffff, /* b3e4 */ 0xffff, /* b3e5 */ 0xffff, /* b3e6 */ 0xffff, /* b3e7 */ 0xffff, /* b3e8 */ 0xffff, /* b3e9 */ 0xffff, /* b3ea */ 0xffff, /* b3eb */ 0xffff, /* b3ec */ 0xffff, /* b3ed */ 0xffff, /* b3ee */ 0xffff, /* b3ef */ 0xffff, /* b3f0 */ 0xffff, /* b3f1 */ 0xffff, /* b3f2 */ 0xffff, /* b3f3 */ 0xffff, /* b3f4 */ 0xffff, /* b3f5 */ 0xffff, /* b3f6 */ 0xffff, /* b3f7 */ 0xffff, /* b3f8 */ 0xffff, /* b3f9 */ 0xffff, /* b3fa */ 0xffff, /* b3fb */ 0xffff, /* b3fc */ 0xffff, /* b3fd */ 0xffff, /* b3fe */ 0xffff, /* b3ff */ 0xffff, /* b400 */ 0xffff, /* b401 */ 0xffff, /* b402 */ 0xffff, /* b403 */ 0xffff, /* b404 */ 0xffff, /* b405 */ 0xffff, /* b406 */ 0xffff, /* b407 */ 0xffff, /* b408 */ 0xffff, /* b409 */ 0xffff, /* b40a */ 0xffff, /* b40b */ 0xffff, /* b40c */ 0xffff, /* b40d */ 0xffff, /* b40e */ 0xffff, /* b40f */ 0xffff, /* b410 */ 0xffff, /* b411 */ 0xffff, /* b412 */ 0xffff, /* b413 */ 0xffff, /* b414 */ 0xffff, /* b415 */ 0xffff, /* b416 */ 0xffff, /* b417 */ 0xffff, /* b418 */ 0xffff, /* b419 */ 0xffff, /* b41a */ 0xffff, /* b41b */ 0xffff, /* b41c */ 0xffff, /* b41d */ 0xffff, /* b41e */ 0xffff, /* b41f */ 0xffff, /* b420 */ 0xffff, /* b421 */ 0xffff, /* b422 */ 0xffff, /* b423 */ 0xffff, /* b424 */ 0xffff, /* b425 */ 0xffff, /* b426 */ 0xffff, /* b427 */ 0xffff, /* b428 */ 0xffff, /* b429 */ 0xffff, /* b42a */ 0xffff, /* b42b */ 0xffff, /* b42c */ 0xffff, /* b42d */ 0xffff, /* b42e */ 0xffff, /* b42f */ 0xffff, /* b430 */ 0xffff, /* b431 */ 0xffff, /* b432 */ 0xffff, /* b433 */ 0xffff, /* b434 */ 0xffff, /* b435 */ 0xffff, /* b436 */ 0xffff, /* b437 */ 0xffff, /* b438 */ 0xffff, /* b439 */ 0xffff, /* b43a */ 0xffff, /* b43b */ 0xffff, /* b43c */ 0xffff, /* b43d */ 0xffff, /* b43e */ 0xffff, /* b43f */ 0xffff, /* b440 */ 0xffff, /* b441 */ 0xffff, /* b442 */ 0xffff, /* b443 */ 0xffff, /* b444 */ 0xffff, /* b445 */ 0xffff, /* b446 */ 0xffff, /* b447 */ 0xffff, /* b448 */ 0xffff, /* b449 */ 0xffff, /* b44a */ 0xffff, /* b44b */ 0xffff, /* b44c */ 0xffff, /* b44d */ 0xffff, /* b44e */ 0xffff, /* b44f */ 0xffff, /* b450 */ 0xffff, /* b451 */ 0xffff, /* b452 */ 0xffff, /* b453 */ 0xffff, /* b454 */ 0xffff, /* b455 */ 0xffff, /* b456 */ 0xffff, /* b457 */ 0xffff, /* b458 */ 0xffff, /* b459 */ 0xffff, /* b45a */ 0xffff, /* b45b */ 0xffff, /* b45c */ 0xffff, /* b45d */ 0xffff, /* b45e */ 0xffff, /* b45f */ 0xffff, /* b460 */ 0xffff, /* b461 */ 0xffff, /* b462 */ 0xffff, /* b463 */ 0xffff, /* b464 */ 0xffff, /* b465 */ 0xffff, /* b466 */ 0xffff, /* b467 */ 0xffff, /* b468 */ 0xffff, /* b469 */ 0xffff, /* b46a */ 0xffff, /* b46b */ 0xffff, /* b46c */ 0xffff, /* b46d */ 0xffff, /* b46e */ 0xffff, /* b46f */ 0xffff, /* b470 */ 0xffff, /* b471 */ 0xffff, /* b472 */ 0xffff, /* b473 */ 0xffff, /* b474 */ 0xffff, /* b475 */ 0xffff, /* b476 */ 0xffff, /* b477 */ 0xffff, /* b478 */ 0xffff, /* b479 */ 0xffff, /* b47a */ 0xffff, /* b47b */ 0xffff, /* b47c */ 0xffff, /* b47d */ 0xffff, /* b47e */ 0xffff, /* b47f */ 0xffff, /* b480 */ 0xffff, /* b481 */ 0xffff, /* b482 */ 0xffff, /* b483 */ 0xffff, /* b484 */ 0xffff, /* b485 */ 0xffff, /* b486 */ 0xffff, /* b487 */ 0xffff, /* b488 */ 0xffff, /* b489 */ 0xffff, /* b48a */ 0xffff, /* b48b */ 0xffff, /* b48c */ 0xffff, /* b48d */ 0xffff, /* b48e */ 0xffff, /* b48f */ 0xffff, /* b490 */ 0xffff, /* b491 */ 0xffff, /* b492 */ 0xffff, /* b493 */ 0xffff, /* b494 */ 0xffff, /* b495 */ 0xffff, /* b496 */ 0xffff, /* b497 */ 0xffff, /* b498 */ 0xffff, /* b499 */ 0xffff, /* b49a */ 0xffff, /* b49b */ 0xffff, /* b49c */ 0xffff, /* b49d */ 0xffff, /* b49e */ 0xffff, /* b49f */ 0xffff, /* b4a0 */ 0xffff, /* b4a1 */ 0xffff, /* b4a2 */ 0xffff, /* b4a3 */ 0xffff, /* b4a4 */ 0xffff, /* b4a5 */ 0xffff, /* b4a6 */ 0xffff, /* b4a7 */ 0xffff, /* b4a8 */ 0xffff, /* b4a9 */ 0xffff, /* b4aa */ 0xffff, /* b4ab */ 0xffff, /* b4ac */ 0xffff, /* b4ad */ 0xffff, /* b4ae */ 0xffff, /* b4af */ 0xffff, /* b4b0 */ 0xffff, /* b4b1 */ 0xffff, /* b4b2 */ 0xffff, /* b4b3 */ 0xffff, /* b4b4 */ 0xffff, /* b4b5 */ 0xffff, /* b4b6 */ 0xffff, /* b4b7 */ 0xffff, /* b4b8 */ 0xffff, /* b4b9 */ 0xffff, /* b4ba */ 0xffff, /* b4bb */ 0xffff, /* b4bc */ 0xffff, /* b4bd */ 0xffff, /* b4be */ 0xffff, /* b4bf */ 0xffff, /* b4c0 */ 0xffff, /* b4c1 */ 0xffff, /* b4c2 */ 0xffff, /* b4c3 */ 0xffff, /* b4c4 */ 0xffff, /* b4c5 */ 0xffff, /* b4c6 */ 0xffff, /* b4c7 */ 0xffff, /* b4c8 */ 0xffff, /* b4c9 */ 0xffff, /* b4ca */ 0xffff, /* b4cb */ 0xffff, /* b4cc */ 0xffff, /* b4cd */ 0xffff, /* b4ce */ 0xffff, /* b4cf */ 0xffff, /* b4d0 */ 0xffff, /* b4d1 */ 0xffff, /* b4d2 */ 0xffff, /* b4d3 */ 0xffff, /* b4d4 */ 0xffff, /* b4d5 */ 0xffff, /* b4d6 */ 0xffff, /* b4d7 */ 0xffff, /* b4d8 */ 0xffff, /* b4d9 */ 0xffff, /* b4da */ 0xffff, /* b4db */ 0xffff, /* b4dc */ 0xffff, /* b4dd */ 0xffff, /* b4de */ 0xffff, /* b4df */ 0xffff, /* b4e0 */ 0xffff, /* b4e1 */ 0xffff, /* b4e2 */ 0xffff, /* b4e3 */ 0xffff, /* b4e4 */ 0xffff, /* b4e5 */ 0xffff, /* b4e6 */ 0xffff, /* b4e7 */ 0xffff, /* b4e8 */ 0xffff, /* b4e9 */ 0xffff, /* b4ea */ 0xffff, /* b4eb */ 0xffff, /* b4ec */ 0xffff, /* b4ed */ 0xffff, /* b4ee */ 0xffff, /* b4ef */ 0xffff, /* b4f0 */ 0xffff, /* b4f1 */ 0xffff, /* b4f2 */ 0xffff, /* b4f3 */ 0xffff, /* b4f4 */ 0xffff, /* b4f5 */ 0xffff, /* b4f6 */ 0xffff, /* b4f7 */ 0xffff, /* b4f8 */ 0xffff, /* b4f9 */ 0xffff, /* b4fa */ 0xffff, /* b4fb */ 0xffff, /* b4fc */ 0xffff, /* b4fd */ 0xffff, /* b4fe */ 0xffff, /* b4ff */ 0xffff, /* b500 */ 0xffff, /* b501 */ 0xffff, /* b502 */ 0xffff, /* b503 */ 0xffff, /* b504 */ 0xffff, /* b505 */ 0xffff, /* b506 */ 0xffff, /* b507 */ 0xffff, /* b508 */ 0xffff, /* b509 */ 0xffff, /* b50a */ 0xffff, /* b50b */ 0xffff, /* b50c */ 0xffff, /* b50d */ 0xffff, /* b50e */ 0xffff, /* b50f */ 0xffff, /* b510 */ 0xffff, /* b511 */ 0xffff, /* b512 */ 0xffff, /* b513 */ 0xffff, /* b514 */ 0xffff, /* b515 */ 0xffff, /* b516 */ 0xffff, /* b517 */ 0xffff, /* b518 */ 0xffff, /* b519 */ 0xffff, /* b51a */ 0xffff, /* b51b */ 0xffff, /* b51c */ 0xffff, /* b51d */ 0xffff, /* b51e */ 0xffff, /* b51f */ 0xffff, /* b520 */ 0xffff, /* b521 */ 0xffff, /* b522 */ 0xffff, /* b523 */ 0xffff, /* b524 */ 0xffff, /* b525 */ 0xffff, /* b526 */ 0xffff, /* b527 */ 0xffff, /* b528 */ 0xffff, /* b529 */ 0xffff, /* b52a */ 0xffff, /* b52b */ 0xffff, /* b52c */ 0xffff, /* b52d */ 0xffff, /* b52e */ 0xffff, /* b52f */ 0xffff, /* b530 */ 0xffff, /* b531 */ 0xffff, /* b532 */ 0xffff, /* b533 */ 0xffff, /* b534 */ 0xffff, /* b535 */ 0xffff, /* b536 */ 0xffff, /* b537 */ 0xffff, /* b538 */ 0xffff, /* b539 */ 0xffff, /* b53a */ 0xffff, /* b53b */ 0xffff, /* b53c */ 0xffff, /* b53d */ 0xffff, /* b53e */ 0xffff, /* b53f */ 0xffff, /* b540 */ 0xffff, /* b541 */ 0xffff, /* b542 */ 0xffff, /* b543 */ 0xffff, /* b544 */ 0xffff, /* b545 */ 0xffff, /* b546 */ 0xffff, /* b547 */ 0xffff, /* b548 */ 0xffff, /* b549 */ 0xffff, /* b54a */ 0xffff, /* b54b */ 0xffff, /* b54c */ 0xffff, /* b54d */ 0xffff, /* b54e */ 0xffff, /* b54f */ 0xffff, /* b550 */ 0xffff, /* b551 */ 0xffff, /* b552 */ 0xffff, /* b553 */ 0xffff, /* b554 */ 0xffff, /* b555 */ 0xffff, /* b556 */ 0xffff, /* b557 */ 0xffff, /* b558 */ 0xffff, /* b559 */ 0xffff, /* b55a */ 0xffff, /* b55b */ 0xffff, /* b55c */ 0xffff, /* b55d */ 0xffff, /* b55e */ 0xffff, /* b55f */ 0xffff, /* b560 */ 0xffff, /* b561 */ 0xffff, /* b562 */ 0xffff, /* b563 */ 0xffff, /* b564 */ 0xffff, /* b565 */ 0xffff, /* b566 */ 0xffff, /* b567 */ 0xffff, /* b568 */ 0xffff, /* b569 */ 0xffff, /* b56a */ 0xffff, /* b56b */ 0xffff, /* b56c */ 0xffff, /* b56d */ 0xffff, /* b56e */ 0xffff, /* b56f */ 0xffff, /* b570 */ 0xffff, /* b571 */ 0xffff, /* b572 */ 0xffff, /* b573 */ 0xffff, /* b574 */ 0xffff, /* b575 */ 0xffff, /* b576 */ 0xffff, /* b577 */ 0xffff, /* b578 */ 0xffff, /* b579 */ 0xffff, /* b57a */ 0xffff, /* b57b */ 0xffff, /* b57c */ 0xffff, /* b57d */ 0xffff, /* b57e */ 0xffff, /* b57f */ 0xffff, /* b580 */ 0xffff, /* b581 */ 0xffff, /* b582 */ 0xffff, /* b583 */ 0xffff, /* b584 */ 0xffff, /* b585 */ 0xffff, /* b586 */ 0xffff, /* b587 */ 0xffff, /* b588 */ 0xffff, /* b589 */ 0xffff, /* b58a */ 0xffff, /* b58b */ 0xffff, /* b58c */ 0xffff, /* b58d */ 0xffff, /* b58e */ 0xffff, /* b58f */ 0xffff, /* b590 */ 0xffff, /* b591 */ 0xffff, /* b592 */ 0xffff, /* b593 */ 0xffff, /* b594 */ 0xffff, /* b595 */ 0xffff, /* b596 */ 0xffff, /* b597 */ 0xffff, /* b598 */ 0xffff, /* b599 */ 0xffff, /* b59a */ 0xffff, /* b59b */ 0xffff, /* b59c */ 0xffff, /* b59d */ 0xffff, /* b59e */ 0xffff, /* b59f */ 0xffff, /* b5a0 */ 0xffff, /* b5a1 */ 0xffff, /* b5a2 */ 0xffff, /* b5a3 */ 0xffff, /* b5a4 */ 0xffff, /* b5a5 */ 0xffff, /* b5a6 */ 0xffff, /* b5a7 */ 0xffff, /* b5a8 */ 0xffff, /* b5a9 */ 0xffff, /* b5aa */ 0xffff, /* b5ab */ 0xffff, /* b5ac */ 0xffff, /* b5ad */ 0xffff, /* b5ae */ 0xffff, /* b5af */ 0xffff, /* b5b0 */ 0xffff, /* b5b1 */ 0xffff, /* b5b2 */ 0xffff, /* b5b3 */ 0xffff, /* b5b4 */ 0xffff, /* b5b5 */ 0xffff, /* b5b6 */ 0xffff, /* b5b7 */ 0xffff, /* b5b8 */ 0xffff, /* b5b9 */ 0xffff, /* b5ba */ 0xffff, /* b5bb */ 0xffff, /* b5bc */ 0xffff, /* b5bd */ 0xffff, /* b5be */ 0xffff, /* b5bf */ 0xffff, /* b5c0 */ 0xffff, /* b5c1 */ 0xffff, /* b5c2 */ 0xffff, /* b5c3 */ 0xffff, /* b5c4 */ 0xffff, /* b5c5 */ 0xffff, /* b5c6 */ 0xffff, /* b5c7 */ 0xffff, /* b5c8 */ 0xffff, /* b5c9 */ 0xffff, /* b5ca */ 0xffff, /* b5cb */ 0xffff, /* b5cc */ 0xffff, /* b5cd */ 0xffff, /* b5ce */ 0xffff, /* b5cf */ 0xffff, /* b5d0 */ 0xffff, /* b5d1 */ 0xffff, /* b5d2 */ 0xffff, /* b5d3 */ 0xffff, /* b5d4 */ 0xffff, /* b5d5 */ 0xffff, /* b5d6 */ 0xffff, /* b5d7 */ 0xffff, /* b5d8 */ 0xffff, /* b5d9 */ 0xffff, /* b5da */ 0xffff, /* b5db */ 0xffff, /* b5dc */ 0xffff, /* b5dd */ 0xffff, /* b5de */ 0xffff, /* b5df */ 0xffff, /* b5e0 */ 0xffff, /* b5e1 */ 0xffff, /* b5e2 */ 0xffff, /* b5e3 */ 0xffff, /* b5e4 */ 0xffff, /* b5e5 */ 0xffff, /* b5e6 */ 0xffff, /* b5e7 */ 0xffff, /* b5e8 */ 0xffff, /* b5e9 */ 0xffff, /* b5ea */ 0xffff, /* b5eb */ 0xffff, /* b5ec */ 0xffff, /* b5ed */ 0xffff, /* b5ee */ 0xffff, /* b5ef */ 0xffff, /* b5f0 */ 0xffff, /* b5f1 */ 0xffff, /* b5f2 */ 0xffff, /* b5f3 */ 0xffff, /* b5f4 */ 0xffff, /* b5f5 */ 0xffff, /* b5f6 */ 0xffff, /* b5f7 */ 0xffff, /* b5f8 */ 0xffff, /* b5f9 */ 0xffff, /* b5fa */ 0xffff, /* b5fb */ 0xffff, /* b5fc */ 0xffff, /* b5fd */ 0xffff, /* b5fe */ 0xffff, /* b5ff */ 0xffff, /* b600 */ 0xffff, /* b601 */ 0xffff, /* b602 */ 0xffff, /* b603 */ 0xffff, /* b604 */ 0xffff, /* b605 */ 0xffff, /* b606 */ 0xffff, /* b607 */ 0xffff, /* b608 */ 0xffff, /* b609 */ 0xffff, /* b60a */ 0xffff, /* b60b */ 0xffff, /* b60c */ 0xffff, /* b60d */ 0xffff, /* b60e */ 0xffff, /* b60f */ 0xffff, /* b610 */ 0xffff, /* b611 */ 0xffff, /* b612 */ 0xffff, /* b613 */ 0xffff, /* b614 */ 0xffff, /* b615 */ 0xffff, /* b616 */ 0xffff, /* b617 */ 0xffff, /* b618 */ 0xffff, /* b619 */ 0xffff, /* b61a */ 0xffff, /* b61b */ 0xffff, /* b61c */ 0xffff, /* b61d */ 0xffff, /* b61e */ 0xffff, /* b61f */ 0xffff, /* b620 */ 0xffff, /* b621 */ 0xffff, /* b622 */ 0xffff, /* b623 */ 0xffff, /* b624 */ 0xffff, /* b625 */ 0xffff, /* b626 */ 0xffff, /* b627 */ 0xffff, /* b628 */ 0xffff, /* b629 */ 0xffff, /* b62a */ 0xffff, /* b62b */ 0xffff, /* b62c */ 0xffff, /* b62d */ 0xffff, /* b62e */ 0xffff, /* b62f */ 0xffff, /* b630 */ 0xffff, /* b631 */ 0xffff, /* b632 */ 0xffff, /* b633 */ 0xffff, /* b634 */ 0xffff, /* b635 */ 0xffff, /* b636 */ 0xffff, /* b637 */ 0xffff, /* b638 */ 0xffff, /* b639 */ 0xffff, /* b63a */ 0xffff, /* b63b */ 0xffff, /* b63c */ 0xffff, /* b63d */ 0xffff, /* b63e */ 0xffff, /* b63f */ 0xffff, /* b640 */ 0xffff, /* b641 */ 0xffff, /* b642 */ 0xffff, /* b643 */ 0xffff, /* b644 */ 0xffff, /* b645 */ 0xffff, /* b646 */ 0xffff, /* b647 */ 0xffff, /* b648 */ 0xffff, /* b649 */ 0xffff, /* b64a */ 0xffff, /* b64b */ 0xffff, /* b64c */ 0xffff, /* b64d */ 0xffff, /* b64e */ 0xffff, /* b64f */ 0xffff, /* b650 */ 0xffff, /* b651 */ 0xffff, /* b652 */ 0xffff, /* b653 */ 0xffff, /* b654 */ 0xffff, /* b655 */ 0xffff, /* b656 */ 0xffff, /* b657 */ 0xffff, /* b658 */ 0xffff, /* b659 */ 0xffff, /* b65a */ 0xffff, /* b65b */ 0xffff, /* b65c */ 0xffff, /* b65d */ 0xffff, /* b65e */ 0xffff, /* b65f */ 0xffff, /* b660 */ 0xffff, /* b661 */ 0xffff, /* b662 */ 0xffff, /* b663 */ 0xffff, /* b664 */ 0xffff, /* b665 */ 0xffff, /* b666 */ 0xffff, /* b667 */ 0xffff, /* b668 */ 0xffff, /* b669 */ 0xffff, /* b66a */ 0xffff, /* b66b */ 0xffff, /* b66c */ 0xffff, /* b66d */ 0xffff, /* b66e */ 0xffff, /* b66f */ 0xffff, /* b670 */ 0xffff, /* b671 */ 0xffff, /* b672 */ 0xffff, /* b673 */ 0xffff, /* b674 */ 0xffff, /* b675 */ 0xffff, /* b676 */ 0xffff, /* b677 */ 0xffff, /* b678 */ 0xffff, /* b679 */ 0xffff, /* b67a */ 0xffff, /* b67b */ 0xffff, /* b67c */ 0xffff, /* b67d */ 0xffff, /* b67e */ 0xffff, /* b67f */ 0xffff, /* b680 */ 0xffff, /* b681 */ 0xffff, /* b682 */ 0xffff, /* b683 */ 0xffff, /* b684 */ 0xffff, /* b685 */ 0xffff, /* b686 */ 0xffff, /* b687 */ 0xffff, /* b688 */ 0xffff, /* b689 */ 0xffff, /* b68a */ 0xffff, /* b68b */ 0xffff, /* b68c */ 0xffff, /* b68d */ 0xffff, /* b68e */ 0xffff, /* b68f */ 0xffff, /* b690 */ 0xffff, /* b691 */ 0xffff, /* b692 */ 0xffff, /* b693 */ 0xffff, /* b694 */ 0xffff, /* b695 */ 0xffff, /* b696 */ 0xffff, /* b697 */ 0xffff, /* b698 */ 0xffff, /* b699 */ 0xffff, /* b69a */ 0xffff, /* b69b */ 0xffff, /* b69c */ 0xffff, /* b69d */ 0xffff, /* b69e */ 0xffff, /* b69f */ 0xffff, /* b6a0 */ 0xffff, /* b6a1 */ 0xffff, /* b6a2 */ 0xffff, /* b6a3 */ 0xffff, /* b6a4 */ 0xffff, /* b6a5 */ 0xffff, /* b6a6 */ 0xffff, /* b6a7 */ 0xffff, /* b6a8 */ 0xffff, /* b6a9 */ 0xffff, /* b6aa */ 0xffff, /* b6ab */ 0xffff, /* b6ac */ 0xffff, /* b6ad */ 0xffff, /* b6ae */ 0xffff, /* b6af */ 0xffff, /* b6b0 */ 0xffff, /* b6b1 */ 0xffff, /* b6b2 */ 0xffff, /* b6b3 */ 0xffff, /* b6b4 */ 0xffff, /* b6b5 */ 0xffff, /* b6b6 */ 0xffff, /* b6b7 */ 0xffff, /* b6b8 */ 0xffff, /* b6b9 */ 0xffff, /* b6ba */ 0xffff, /* b6bb */ 0xffff, /* b6bc */ 0xffff, /* b6bd */ 0xffff, /* b6be */ 0xffff, /* b6bf */ 0xffff, /* b6c0 */ 0xffff, /* b6c1 */ 0xffff, /* b6c2 */ 0xffff, /* b6c3 */ 0xffff, /* b6c4 */ 0xffff, /* b6c5 */ 0xffff, /* b6c6 */ 0xffff, /* b6c7 */ 0xffff, /* b6c8 */ 0xffff, /* b6c9 */ 0xffff, /* b6ca */ 0xffff, /* b6cb */ 0xffff, /* b6cc */ 0xffff, /* b6cd */ 0xffff, /* b6ce */ 0xffff, /* b6cf */ 0xffff, /* b6d0 */ 0xffff, /* b6d1 */ 0xffff, /* b6d2 */ 0xffff, /* b6d3 */ 0xffff, /* b6d4 */ 0xffff, /* b6d5 */ 0xffff, /* b6d6 */ 0xffff, /* b6d7 */ 0xffff, /* b6d8 */ 0xffff, /* b6d9 */ 0xffff, /* b6da */ 0xffff, /* b6db */ 0xffff, /* b6dc */ 0xffff, /* b6dd */ 0xffff, /* b6de */ 0xffff, /* b6df */ 0xffff, /* b6e0 */ 0xffff, /* b6e1 */ 0xffff, /* b6e2 */ 0xffff, /* b6e3 */ 0xffff, /* b6e4 */ 0xffff, /* b6e5 */ 0xffff, /* b6e6 */ 0xffff, /* b6e7 */ 0xffff, /* b6e8 */ 0xffff, /* b6e9 */ 0xffff, /* b6ea */ 0xffff, /* b6eb */ 0xffff, /* b6ec */ 0xffff, /* b6ed */ 0xffff, /* b6ee */ 0xffff, /* b6ef */ 0xffff, /* b6f0 */ 0xffff, /* b6f1 */ 0xffff, /* b6f2 */ 0xffff, /* b6f3 */ 0xffff, /* b6f4 */ 0xffff, /* b6f5 */ 0xffff, /* b6f6 */ 0xffff, /* b6f7 */ 0xffff, /* b6f8 */ 0xffff, /* b6f9 */ 0xffff, /* b6fa */ 0xffff, /* b6fb */ 0xffff, /* b6fc */ 0xffff, /* b6fd */ 0xffff, /* b6fe */ 0xffff, /* b6ff */ 0xffff, /* b700 */ 0xffff, /* b701 */ 0xffff, /* b702 */ 0xffff, /* b703 */ 0xffff, /* b704 */ 0xffff, /* b705 */ 0xffff, /* b706 */ 0xffff, /* b707 */ 0xffff, /* b708 */ 0xffff, /* b709 */ 0xffff, /* b70a */ 0xffff, /* b70b */ 0xffff, /* b70c */ 0xffff, /* b70d */ 0xffff, /* b70e */ 0xffff, /* b70f */ 0xffff, /* b710 */ 0xffff, /* b711 */ 0xffff, /* b712 */ 0xffff, /* b713 */ 0xffff, /* b714 */ 0xffff, /* b715 */ 0xffff, /* b716 */ 0xffff, /* b717 */ 0xffff, /* b718 */ 0xffff, /* b719 */ 0xffff, /* b71a */ 0xffff, /* b71b */ 0xffff, /* b71c */ 0xffff, /* b71d */ 0xffff, /* b71e */ 0xffff, /* b71f */ 0xffff, /* b720 */ 0xffff, /* b721 */ 0xffff, /* b722 */ 0xffff, /* b723 */ 0xffff, /* b724 */ 0xffff, /* b725 */ 0xffff, /* b726 */ 0xffff, /* b727 */ 0xffff, /* b728 */ 0xffff, /* b729 */ 0xffff, /* b72a */ 0xffff, /* b72b */ 0xffff, /* b72c */ 0xffff, /* b72d */ 0xffff, /* b72e */ 0xffff, /* b72f */ 0xffff, /* b730 */ 0xffff, /* b731 */ 0xffff, /* b732 */ 0xffff, /* b733 */ 0xffff, /* b734 */ 0xffff, /* b735 */ 0xffff, /* b736 */ 0xffff, /* b737 */ 0xffff, /* b738 */ 0xffff, /* b739 */ 0xffff, /* b73a */ 0xffff, /* b73b */ 0xffff, /* b73c */ 0xffff, /* b73d */ 0xffff, /* b73e */ 0xffff, /* b73f */ 0xffff, /* b740 */ 0xffff, /* b741 */ 0xffff, /* b742 */ 0xffff, /* b743 */ 0xffff, /* b744 */ 0xffff, /* b745 */ 0xffff, /* b746 */ 0xffff, /* b747 */ 0xffff, /* b748 */ 0xffff, /* b749 */ 0xffff, /* b74a */ 0xffff, /* b74b */ 0xffff, /* b74c */ 0xffff, /* b74d */ 0xffff, /* b74e */ 0xffff, /* b74f */ 0xffff, /* b750 */ 0xffff, /* b751 */ 0xffff, /* b752 */ 0xffff, /* b753 */ 0xffff, /* b754 */ 0xffff, /* b755 */ 0xffff, /* b756 */ 0xffff, /* b757 */ 0xffff, /* b758 */ 0xffff, /* b759 */ 0xffff, /* b75a */ 0xffff, /* b75b */ 0xffff, /* b75c */ 0xffff, /* b75d */ 0xffff, /* b75e */ 0xffff, /* b75f */ 0xffff, /* b760 */ 0xffff, /* b761 */ 0xffff, /* b762 */ 0xffff, /* b763 */ 0xffff, /* b764 */ 0xffff, /* b765 */ 0xffff, /* b766 */ 0xffff, /* b767 */ 0xffff, /* b768 */ 0xffff, /* b769 */ 0xffff, /* b76a */ 0xffff, /* b76b */ 0xffff, /* b76c */ 0xffff, /* b76d */ 0xffff, /* b76e */ 0xffff, /* b76f */ 0xffff, /* b770 */ 0xffff, /* b771 */ 0xffff, /* b772 */ 0xffff, /* b773 */ 0xffff, /* b774 */ 0xffff, /* b775 */ 0xffff, /* b776 */ 0xffff, /* b777 */ 0xffff, /* b778 */ 0xffff, /* b779 */ 0xffff, /* b77a */ 0xffff, /* b77b */ 0xffff, /* b77c */ 0xffff, /* b77d */ 0xffff, /* b77e */ 0xffff, /* b77f */ 0xffff, /* b780 */ 0xffff, /* b781 */ 0xffff, /* b782 */ 0xffff, /* b783 */ 0xffff, /* b784 */ 0xffff, /* b785 */ 0xffff, /* b786 */ 0xffff, /* b787 */ 0xffff, /* b788 */ 0xffff, /* b789 */ 0xffff, /* b78a */ 0xffff, /* b78b */ 0xffff, /* b78c */ 0xffff, /* b78d */ 0xffff, /* b78e */ 0xffff, /* b78f */ 0xffff, /* b790 */ 0xffff, /* b791 */ 0xffff, /* b792 */ 0xffff, /* b793 */ 0xffff, /* b794 */ 0xffff, /* b795 */ 0xffff, /* b796 */ 0xffff, /* b797 */ 0xffff, /* b798 */ 0xffff, /* b799 */ 0xffff, /* b79a */ 0xffff, /* b79b */ 0xffff, /* b79c */ 0xffff, /* b79d */ 0xffff, /* b79e */ 0xffff, /* b79f */ 0xffff, /* b7a0 */ 0xffff, /* b7a1 */ 0xffff, /* b7a2 */ 0xffff, /* b7a3 */ 0xffff, /* b7a4 */ 0xffff, /* b7a5 */ 0xffff, /* b7a6 */ 0xffff, /* b7a7 */ 0xffff, /* b7a8 */ 0xffff, /* b7a9 */ 0xffff, /* b7aa */ 0xffff, /* b7ab */ 0xffff, /* b7ac */ 0xffff, /* b7ad */ 0xffff, /* b7ae */ 0xffff, /* b7af */ 0xffff, /* b7b0 */ 0xffff, /* b7b1 */ 0xffff, /* b7b2 */ 0xffff, /* b7b3 */ 0xffff, /* b7b4 */ 0xffff, /* b7b5 */ 0xffff, /* b7b6 */ 0xffff, /* b7b7 */ 0xffff, /* b7b8 */ 0xffff, /* b7b9 */ 0xffff, /* b7ba */ 0xffff, /* b7bb */ 0xffff, /* b7bc */ 0xffff, /* b7bd */ 0xffff, /* b7be */ 0xffff, /* b7bf */ 0xffff, /* b7c0 */ 0xffff, /* b7c1 */ 0xffff, /* b7c2 */ 0xffff, /* b7c3 */ 0xffff, /* b7c4 */ 0xffff, /* b7c5 */ 0xffff, /* b7c6 */ 0xffff, /* b7c7 */ 0xffff, /* b7c8 */ 0xffff, /* b7c9 */ 0xffff, /* b7ca */ 0xffff, /* b7cb */ 0xffff, /* b7cc */ 0xffff, /* b7cd */ 0xffff, /* b7ce */ 0xffff, /* b7cf */ 0xffff, /* b7d0 */ 0xffff, /* b7d1 */ 0xffff, /* b7d2 */ 0xffff, /* b7d3 */ 0xffff, /* b7d4 */ 0xffff, /* b7d5 */ 0xffff, /* b7d6 */ 0xffff, /* b7d7 */ 0xffff, /* b7d8 */ 0xffff, /* b7d9 */ 0xffff, /* b7da */ 0xffff, /* b7db */ 0xffff, /* b7dc */ 0xffff, /* b7dd */ 0xffff, /* b7de */ 0xffff, /* b7df */ 0xffff, /* b7e0 */ 0xffff, /* b7e1 */ 0xffff, /* b7e2 */ 0xffff, /* b7e3 */ 0xffff, /* b7e4 */ 0xffff, /* b7e5 */ 0xffff, /* b7e6 */ 0xffff, /* b7e7 */ 0xffff, /* b7e8 */ 0xffff, /* b7e9 */ 0xffff, /* b7ea */ 0xffff, /* b7eb */ 0xffff, /* b7ec */ 0xffff, /* b7ed */ 0xffff, /* b7ee */ 0xffff, /* b7ef */ 0xffff, /* b7f0 */ 0xffff, /* b7f1 */ 0xffff, /* b7f2 */ 0xffff, /* b7f3 */ 0xffff, /* b7f4 */ 0xffff, /* b7f5 */ 0xffff, /* b7f6 */ 0xffff, /* b7f7 */ 0xffff, /* b7f8 */ 0xffff, /* b7f9 */ 0xffff, /* b7fa */ 0xffff, /* b7fb */ 0xffff, /* b7fc */ 0xffff, /* b7fd */ 0xffff, /* b7fe */ 0xffff, /* b7ff */ 0xffff, /* b800 */ 0xffff, /* b801 */ 0xffff, /* b802 */ 0xffff, /* b803 */ 0xffff, /* b804 */ 0xffff, /* b805 */ 0xffff, /* b806 */ 0xffff, /* b807 */ 0xffff, /* b808 */ 0xffff, /* b809 */ 0xffff, /* b80a */ 0xffff, /* b80b */ 0xffff, /* b80c */ 0xffff, /* b80d */ 0xffff, /* b80e */ 0xffff, /* b80f */ 0xffff, /* b810 */ 0xffff, /* b811 */ 0xffff, /* b812 */ 0xffff, /* b813 */ 0xffff, /* b814 */ 0xffff, /* b815 */ 0xffff, /* b816 */ 0xffff, /* b817 */ 0xffff, /* b818 */ 0xffff, /* b819 */ 0xffff, /* b81a */ 0xffff, /* b81b */ 0xffff, /* b81c */ 0xffff, /* b81d */ 0xffff, /* b81e */ 0xffff, /* b81f */ 0xffff, /* b820 */ 0xffff, /* b821 */ 0xffff, /* b822 */ 0xffff, /* b823 */ 0xffff, /* b824 */ 0xffff, /* b825 */ 0xffff, /* b826 */ 0xffff, /* b827 */ 0xffff, /* b828 */ 0xffff, /* b829 */ 0xffff, /* b82a */ 0xffff, /* b82b */ 0xffff, /* b82c */ 0xffff, /* b82d */ 0xffff, /* b82e */ 0xffff, /* b82f */ 0xffff, /* b830 */ 0xffff, /* b831 */ 0xffff, /* b832 */ 0xffff, /* b833 */ 0xffff, /* b834 */ 0xffff, /* b835 */ 0xffff, /* b836 */ 0xffff, /* b837 */ 0xffff, /* b838 */ 0xffff, /* b839 */ 0xffff, /* b83a */ 0xffff, /* b83b */ 0xffff, /* b83c */ 0xffff, /* b83d */ 0xffff, /* b83e */ 0xffff, /* b83f */ 0xffff, /* b840 */ 0xffff, /* b841 */ 0xffff, /* b842 */ 0xffff, /* b843 */ 0xffff, /* b844 */ 0xffff, /* b845 */ 0xffff, /* b846 */ 0xffff, /* b847 */ 0xffff, /* b848 */ 0xffff, /* b849 */ 0xffff, /* b84a */ 0xffff, /* b84b */ 0xffff, /* b84c */ 0xffff, /* b84d */ 0xffff, /* b84e */ 0xffff, /* b84f */ 0xffff, /* b850 */ 0xffff, /* b851 */ 0xffff, /* b852 */ 0xffff, /* b853 */ 0xffff, /* b854 */ 0xffff, /* b855 */ 0xffff, /* b856 */ 0xffff, /* b857 */ 0xffff, /* b858 */ 0xffff, /* b859 */ 0xffff, /* b85a */ 0xffff, /* b85b */ 0xffff, /* b85c */ 0xffff, /* b85d */ 0xffff, /* b85e */ 0xffff, /* b85f */ 0xffff, /* b860 */ 0xffff, /* b861 */ 0xffff, /* b862 */ 0xffff, /* b863 */ 0xffff, /* b864 */ 0xffff, /* b865 */ 0xffff, /* b866 */ 0xffff, /* b867 */ 0xffff, /* b868 */ 0xffff, /* b869 */ 0xffff, /* b86a */ 0xffff, /* b86b */ 0xffff, /* b86c */ 0xffff, /* b86d */ 0xffff, /* b86e */ 0xffff, /* b86f */ 0xffff, /* b870 */ 0xffff, /* b871 */ 0xffff, /* b872 */ 0xffff, /* b873 */ 0xffff, /* b874 */ 0xffff, /* b875 */ 0xffff, /* b876 */ 0xffff, /* b877 */ 0xffff, /* b878 */ 0xffff, /* b879 */ 0xffff, /* b87a */ 0xffff, /* b87b */ 0xffff, /* b87c */ 0xffff, /* b87d */ 0xffff, /* b87e */ 0xffff, /* b87f */ 0xffff, /* b880 */ 0xffff, /* b881 */ 0xffff, /* b882 */ 0xffff, /* b883 */ 0xffff, /* b884 */ 0xffff, /* b885 */ 0xffff, /* b886 */ 0xffff, /* b887 */ 0xffff, /* b888 */ 0xffff, /* b889 */ 0xffff, /* b88a */ 0xffff, /* b88b */ 0xffff, /* b88c */ 0xffff, /* b88d */ 0xffff, /* b88e */ 0xffff, /* b88f */ 0xffff, /* b890 */ 0xffff, /* b891 */ 0xffff, /* b892 */ 0xffff, /* b893 */ 0xffff, /* b894 */ 0xffff, /* b895 */ 0xffff, /* b896 */ 0xffff, /* b897 */ 0xffff, /* b898 */ 0xffff, /* b899 */ 0xffff, /* b89a */ 0xffff, /* b89b */ 0xffff, /* b89c */ 0xffff, /* b89d */ 0xffff, /* b89e */ 0xffff, /* b89f */ 0xffff, /* b8a0 */ 0xffff, /* b8a1 */ 0xffff, /* b8a2 */ 0xffff, /* b8a3 */ 0xffff, /* b8a4 */ 0xffff, /* b8a5 */ 0xffff, /* b8a6 */ 0xffff, /* b8a7 */ 0xffff, /* b8a8 */ 0xffff, /* b8a9 */ 0xffff, /* b8aa */ 0xffff, /* b8ab */ 0xffff, /* b8ac */ 0xffff, /* b8ad */ 0xffff, /* b8ae */ 0xffff, /* b8af */ 0xffff, /* b8b0 */ 0xffff, /* b8b1 */ 0xffff, /* b8b2 */ 0xffff, /* b8b3 */ 0xffff, /* b8b4 */ 0xffff, /* b8b5 */ 0xffff, /* b8b6 */ 0xffff, /* b8b7 */ 0xffff, /* b8b8 */ 0xffff, /* b8b9 */ 0xffff, /* b8ba */ 0xffff, /* b8bb */ 0xffff, /* b8bc */ 0xffff, /* b8bd */ 0xffff, /* b8be */ 0xffff, /* b8bf */ 0xffff, /* b8c0 */ 0xffff, /* b8c1 */ 0xffff, /* b8c2 */ 0xffff, /* b8c3 */ 0xffff, /* b8c4 */ 0xffff, /* b8c5 */ 0xffff, /* b8c6 */ 0xffff, /* b8c7 */ 0xffff, /* b8c8 */ 0xffff, /* b8c9 */ 0xffff, /* b8ca */ 0xffff, /* b8cb */ 0xffff, /* b8cc */ 0xffff, /* b8cd */ 0xffff, /* b8ce */ 0xffff, /* b8cf */ 0xffff, /* b8d0 */ 0xffff, /* b8d1 */ 0xffff, /* b8d2 */ 0xffff, /* b8d3 */ 0xffff, /* b8d4 */ 0xffff, /* b8d5 */ 0xffff, /* b8d6 */ 0xffff, /* b8d7 */ 0xffff, /* b8d8 */ 0xffff, /* b8d9 */ 0xffff, /* b8da */ 0xffff, /* b8db */ 0xffff, /* b8dc */ 0xffff, /* b8dd */ 0xffff, /* b8de */ 0xffff, /* b8df */ 0xffff, /* b8e0 */ 0xffff, /* b8e1 */ 0xffff, /* b8e2 */ 0xffff, /* b8e3 */ 0xffff, /* b8e4 */ 0xffff, /* b8e5 */ 0xffff, /* b8e6 */ 0xffff, /* b8e7 */ 0xffff, /* b8e8 */ 0xffff, /* b8e9 */ 0xffff, /* b8ea */ 0xffff, /* b8eb */ 0xffff, /* b8ec */ 0xffff, /* b8ed */ 0xffff, /* b8ee */ 0xffff, /* b8ef */ 0xffff, /* b8f0 */ 0xffff, /* b8f1 */ 0xffff, /* b8f2 */ 0xffff, /* b8f3 */ 0xffff, /* b8f4 */ 0xffff, /* b8f5 */ 0xffff, /* b8f6 */ 0xffff, /* b8f7 */ 0xffff, /* b8f8 */ 0xffff, /* b8f9 */ 0xffff, /* b8fa */ 0xffff, /* b8fb */ 0xffff, /* b8fc */ 0xffff, /* b8fd */ 0xffff, /* b8fe */ 0xffff, /* b8ff */ 0xffff, /* b900 */ 0xffff, /* b901 */ 0xffff, /* b902 */ 0xffff, /* b903 */ 0xffff, /* b904 */ 0xffff, /* b905 */ 0xffff, /* b906 */ 0xffff, /* b907 */ 0xffff, /* b908 */ 0xffff, /* b909 */ 0xffff, /* b90a */ 0xffff, /* b90b */ 0xffff, /* b90c */ 0xffff, /* b90d */ 0xffff, /* b90e */ 0xffff, /* b90f */ 0xffff, /* b910 */ 0xffff, /* b911 */ 0xffff, /* b912 */ 0xffff, /* b913 */ 0xffff, /* b914 */ 0xffff, /* b915 */ 0xffff, /* b916 */ 0xffff, /* b917 */ 0xffff, /* b918 */ 0xffff, /* b919 */ 0xffff, /* b91a */ 0xffff, /* b91b */ 0xffff, /* b91c */ 0xffff, /* b91d */ 0xffff, /* b91e */ 0xffff, /* b91f */ 0xffff, /* b920 */ 0xffff, /* b921 */ 0xffff, /* b922 */ 0xffff, /* b923 */ 0xffff, /* b924 */ 0xffff, /* b925 */ 0xffff, /* b926 */ 0xffff, /* b927 */ 0xffff, /* b928 */ 0xffff, /* b929 */ 0xffff, /* b92a */ 0xffff, /* b92b */ 0xffff, /* b92c */ 0xffff, /* b92d */ 0xffff, /* b92e */ 0xffff, /* b92f */ 0xffff, /* b930 */ 0xffff, /* b931 */ 0xffff, /* b932 */ 0xffff, /* b933 */ 0xffff, /* b934 */ 0xffff, /* b935 */ 0xffff, /* b936 */ 0xffff, /* b937 */ 0xffff, /* b938 */ 0xffff, /* b939 */ 0xffff, /* b93a */ 0xffff, /* b93b */ 0xffff, /* b93c */ 0xffff, /* b93d */ 0xffff, /* b93e */ 0xffff, /* b93f */ 0xffff, /* b940 */ 0xffff, /* b941 */ 0xffff, /* b942 */ 0xffff, /* b943 */ 0xffff, /* b944 */ 0xffff, /* b945 */ 0xffff, /* b946 */ 0xffff, /* b947 */ 0xffff, /* b948 */ 0xffff, /* b949 */ 0xffff, /* b94a */ 0xffff, /* b94b */ 0xffff, /* b94c */ 0xffff, /* b94d */ 0xffff, /* b94e */ 0xffff, /* b94f */ 0xffff, /* b950 */ 0xffff, /* b951 */ 0xffff, /* b952 */ 0xffff, /* b953 */ 0xffff, /* b954 */ 0xffff, /* b955 */ 0xffff, /* b956 */ 0xffff, /* b957 */ 0xffff, /* b958 */ 0xffff, /* b959 */ 0xffff, /* b95a */ 0xffff, /* b95b */ 0xffff, /* b95c */ 0xffff, /* b95d */ 0xffff, /* b95e */ 0xffff, /* b95f */ 0xffff, /* b960 */ 0xffff, /* b961 */ 0xffff, /* b962 */ 0xffff, /* b963 */ 0xffff, /* b964 */ 0xffff, /* b965 */ 0xffff, /* b966 */ 0xffff, /* b967 */ 0xffff, /* b968 */ 0xffff, /* b969 */ 0xffff, /* b96a */ 0xffff, /* b96b */ 0xffff, /* b96c */ 0xffff, /* b96d */ 0xffff, /* b96e */ 0xffff, /* b96f */ 0xffff, /* b970 */ 0xffff, /* b971 */ 0xffff, /* b972 */ 0xffff, /* b973 */ 0xffff, /* b974 */ 0xffff, /* b975 */ 0xffff, /* b976 */ 0xffff, /* b977 */ 0xffff, /* b978 */ 0xffff, /* b979 */ 0xffff, /* b97a */ 0xffff, /* b97b */ 0xffff, /* b97c */ 0xffff, /* b97d */ 0xffff, /* b97e */ 0xffff, /* b97f */ 0xffff, /* b980 */ 0xffff, /* b981 */ 0xffff, /* b982 */ 0xffff, /* b983 */ 0xffff, /* b984 */ 0xffff, /* b985 */ 0xffff, /* b986 */ 0xffff, /* b987 */ 0xffff, /* b988 */ 0xffff, /* b989 */ 0xffff, /* b98a */ 0xffff, /* b98b */ 0xffff, /* b98c */ 0xffff, /* b98d */ 0xffff, /* b98e */ 0xffff, /* b98f */ 0xffff, /* b990 */ 0xffff, /* b991 */ 0xffff, /* b992 */ 0xffff, /* b993 */ 0xffff, /* b994 */ 0xffff, /* b995 */ 0xffff, /* b996 */ 0xffff, /* b997 */ 0xffff, /* b998 */ 0xffff, /* b999 */ 0xffff, /* b99a */ 0xffff, /* b99b */ 0xffff, /* b99c */ 0xffff, /* b99d */ 0xffff, /* b99e */ 0xffff, /* b99f */ 0xffff, /* b9a0 */ 0xffff, /* b9a1 */ 0xffff, /* b9a2 */ 0xffff, /* b9a3 */ 0xffff, /* b9a4 */ 0xffff, /* b9a5 */ 0xffff, /* b9a6 */ 0xffff, /* b9a7 */ 0xffff, /* b9a8 */ 0xffff, /* b9a9 */ 0xffff, /* b9aa */ 0xffff, /* b9ab */ 0xffff, /* b9ac */ 0xffff, /* b9ad */ 0xffff, /* b9ae */ 0xffff, /* b9af */ 0xffff, /* b9b0 */ 0xffff, /* b9b1 */ 0xffff, /* b9b2 */ 0xffff, /* b9b3 */ 0xffff, /* b9b4 */ 0xffff, /* b9b5 */ 0xffff, /* b9b6 */ 0xffff, /* b9b7 */ 0xffff, /* b9b8 */ 0xffff, /* b9b9 */ 0xffff, /* b9ba */ 0xffff, /* b9bb */ 0xffff, /* b9bc */ 0xffff, /* b9bd */ 0xffff, /* b9be */ 0xffff, /* b9bf */ 0xffff, /* b9c0 */ 0xffff, /* b9c1 */ 0xffff, /* b9c2 */ 0xffff, /* b9c3 */ 0xffff, /* b9c4 */ 0xffff, /* b9c5 */ 0xffff, /* b9c6 */ 0xffff, /* b9c7 */ 0xffff, /* b9c8 */ 0xffff, /* b9c9 */ 0xffff, /* b9ca */ 0xffff, /* b9cb */ 0xffff, /* b9cc */ 0xffff, /* b9cd */ 0xffff, /* b9ce */ 0xffff, /* b9cf */ 0xffff, /* b9d0 */ 0xffff, /* b9d1 */ 0xffff, /* b9d2 */ 0xffff, /* b9d3 */ 0xffff, /* b9d4 */ 0xffff, /* b9d5 */ 0xffff, /* b9d6 */ 0xffff, /* b9d7 */ 0xffff, /* b9d8 */ 0xffff, /* b9d9 */ 0xffff, /* b9da */ 0xffff, /* b9db */ 0xffff, /* b9dc */ 0xffff, /* b9dd */ 0xffff, /* b9de */ 0xffff, /* b9df */ 0xffff, /* b9e0 */ 0xffff, /* b9e1 */ 0xffff, /* b9e2 */ 0xffff, /* b9e3 */ 0xffff, /* b9e4 */ 0xffff, /* b9e5 */ 0xffff, /* b9e6 */ 0xffff, /* b9e7 */ 0xffff, /* b9e8 */ 0xffff, /* b9e9 */ 0xffff, /* b9ea */ 0xffff, /* b9eb */ 0xffff, /* b9ec */ 0xffff, /* b9ed */ 0xffff, /* b9ee */ 0xffff, /* b9ef */ 0xffff, /* b9f0 */ 0xffff, /* b9f1 */ 0xffff, /* b9f2 */ 0xffff, /* b9f3 */ 0xffff, /* b9f4 */ 0xffff, /* b9f5 */ 0xffff, /* b9f6 */ 0xffff, /* b9f7 */ 0xffff, /* b9f8 */ 0xffff, /* b9f9 */ 0xffff, /* b9fa */ 0xffff, /* b9fb */ 0xffff, /* b9fc */ 0xffff, /* b9fd */ 0xffff, /* b9fe */ 0xffff, /* b9ff */ 0xffff, /* ba00 */ 0xffff, /* ba01 */ 0xffff, /* ba02 */ 0xffff, /* ba03 */ 0xffff, /* ba04 */ 0xffff, /* ba05 */ 0xffff, /* ba06 */ 0xffff, /* ba07 */ 0xffff, /* ba08 */ 0xffff, /* ba09 */ 0xffff, /* ba0a */ 0xffff, /* ba0b */ 0xffff, /* ba0c */ 0xffff, /* ba0d */ 0xffff, /* ba0e */ 0xffff, /* ba0f */ 0xffff, /* ba10 */ 0xffff, /* ba11 */ 0xffff, /* ba12 */ 0xffff, /* ba13 */ 0xffff, /* ba14 */ 0xffff, /* ba15 */ 0xffff, /* ba16 */ 0xffff, /* ba17 */ 0xffff, /* ba18 */ 0xffff, /* ba19 */ 0xffff, /* ba1a */ 0xffff, /* ba1b */ 0xffff, /* ba1c */ 0xffff, /* ba1d */ 0xffff, /* ba1e */ 0xffff, /* ba1f */ 0xffff, /* ba20 */ 0xffff, /* ba21 */ 0xffff, /* ba22 */ 0xffff, /* ba23 */ 0xffff, /* ba24 */ 0xffff, /* ba25 */ 0xffff, /* ba26 */ 0xffff, /* ba27 */ 0xffff, /* ba28 */ 0xffff, /* ba29 */ 0xffff, /* ba2a */ 0xffff, /* ba2b */ 0xffff, /* ba2c */ 0xffff, /* ba2d */ 0xffff, /* ba2e */ 0xffff, /* ba2f */ 0xffff, /* ba30 */ 0xffff, /* ba31 */ 0xffff, /* ba32 */ 0xffff, /* ba33 */ 0xffff, /* ba34 */ 0xffff, /* ba35 */ 0xffff, /* ba36 */ 0xffff, /* ba37 */ 0xffff, /* ba38 */ 0xffff, /* ba39 */ 0xffff, /* ba3a */ 0xffff, /* ba3b */ 0xffff, /* ba3c */ 0xffff, /* ba3d */ 0xffff, /* ba3e */ 0xffff, /* ba3f */ 0xffff, /* ba40 */ 0xffff, /* ba41 */ 0xffff, /* ba42 */ 0xffff, /* ba43 */ 0xffff, /* ba44 */ 0xffff, /* ba45 */ 0xffff, /* ba46 */ 0xffff, /* ba47 */ 0xffff, /* ba48 */ 0xffff, /* ba49 */ 0xffff, /* ba4a */ 0xffff, /* ba4b */ 0xffff, /* ba4c */ 0xffff, /* ba4d */ 0xffff, /* ba4e */ 0xffff, /* ba4f */ 0xffff, /* ba50 */ 0xffff, /* ba51 */ 0xffff, /* ba52 */ 0xffff, /* ba53 */ 0xffff, /* ba54 */ 0xffff, /* ba55 */ 0xffff, /* ba56 */ 0xffff, /* ba57 */ 0xffff, /* ba58 */ 0xffff, /* ba59 */ 0xffff, /* ba5a */ 0xffff, /* ba5b */ 0xffff, /* ba5c */ 0xffff, /* ba5d */ 0xffff, /* ba5e */ 0xffff, /* ba5f */ 0xffff, /* ba60 */ 0xffff, /* ba61 */ 0xffff, /* ba62 */ 0xffff, /* ba63 */ 0xffff, /* ba64 */ 0xffff, /* ba65 */ 0xffff, /* ba66 */ 0xffff, /* ba67 */ 0xffff, /* ba68 */ 0xffff, /* ba69 */ 0xffff, /* ba6a */ 0xffff, /* ba6b */ 0xffff, /* ba6c */ 0xffff, /* ba6d */ 0xffff, /* ba6e */ 0xffff, /* ba6f */ 0xffff, /* ba70 */ 0xffff, /* ba71 */ 0xffff, /* ba72 */ 0xffff, /* ba73 */ 0xffff, /* ba74 */ 0xffff, /* ba75 */ 0xffff, /* ba76 */ 0xffff, /* ba77 */ 0xffff, /* ba78 */ 0xffff, /* ba79 */ 0xffff, /* ba7a */ 0xffff, /* ba7b */ 0xffff, /* ba7c */ 0xffff, /* ba7d */ 0xffff, /* ba7e */ 0xffff, /* ba7f */ 0xffff, /* ba80 */ 0xffff, /* ba81 */ 0xffff, /* ba82 */ 0xffff, /* ba83 */ 0xffff, /* ba84 */ 0xffff, /* ba85 */ 0xffff, /* ba86 */ 0xffff, /* ba87 */ 0xffff, /* ba88 */ 0xffff, /* ba89 */ 0xffff, /* ba8a */ 0xffff, /* ba8b */ 0xffff, /* ba8c */ 0xffff, /* ba8d */ 0xffff, /* ba8e */ 0xffff, /* ba8f */ 0xffff, /* ba90 */ 0xffff, /* ba91 */ 0xffff, /* ba92 */ 0xffff, /* ba93 */ 0xffff, /* ba94 */ 0xffff, /* ba95 */ 0xffff, /* ba96 */ 0xffff, /* ba97 */ 0xffff, /* ba98 */ 0xffff, /* ba99 */ 0xffff, /* ba9a */ 0xffff, /* ba9b */ 0xffff, /* ba9c */ 0xffff, /* ba9d */ 0xffff, /* ba9e */ 0xffff, /* ba9f */ 0xffff, /* baa0 */ 0xffff, /* baa1 */ 0xffff, /* baa2 */ 0xffff, /* baa3 */ 0xffff, /* baa4 */ 0xffff, /* baa5 */ 0xffff, /* baa6 */ 0xffff, /* baa7 */ 0xffff, /* baa8 */ 0xffff, /* baa9 */ 0xffff, /* baaa */ 0xffff, /* baab */ 0xffff, /* baac */ 0xffff, /* baad */ 0xffff, /* baae */ 0xffff, /* baaf */ 0xffff, /* bab0 */ 0xffff, /* bab1 */ 0xffff, /* bab2 */ 0xffff, /* bab3 */ 0xffff, /* bab4 */ 0xffff, /* bab5 */ 0xffff, /* bab6 */ 0xffff, /* bab7 */ 0xffff, /* bab8 */ 0xffff, /* bab9 */ 0xffff, /* baba */ 0xffff, /* babb */ 0xffff, /* babc */ 0xffff, /* babd */ 0xffff, /* babe */ 0xffff, /* babf */ 0xffff, /* bac0 */ 0xffff, /* bac1 */ 0xffff, /* bac2 */ 0xffff, /* bac3 */ 0xffff, /* bac4 */ 0xffff, /* bac5 */ 0xffff, /* bac6 */ 0xffff, /* bac7 */ 0xffff, /* bac8 */ 0xffff, /* bac9 */ 0xffff, /* baca */ 0xffff, /* bacb */ 0xffff, /* bacc */ 0xffff, /* bacd */ 0xffff, /* bace */ 0xffff, /* bacf */ 0xffff, /* bad0 */ 0xffff, /* bad1 */ 0xffff, /* bad2 */ 0xffff, /* bad3 */ 0xffff, /* bad4 */ 0xffff, /* bad5 */ 0xffff, /* bad6 */ 0xffff, /* bad7 */ 0xffff, /* bad8 */ 0xffff, /* bad9 */ 0xffff, /* bada */ 0xffff, /* badb */ 0xffff, /* badc */ 0xffff, /* badd */ 0xffff, /* bade */ 0xffff, /* badf */ 0xffff, /* bae0 */ 0xffff, /* bae1 */ 0xffff, /* bae2 */ 0xffff, /* bae3 */ 0xffff, /* bae4 */ 0xffff, /* bae5 */ 0xffff, /* bae6 */ 0xffff, /* bae7 */ 0xffff, /* bae8 */ 0xffff, /* bae9 */ 0xffff, /* baea */ 0xffff, /* baeb */ 0xffff, /* baec */ 0xffff, /* baed */ 0xffff, /* baee */ 0xffff, /* baef */ 0xffff, /* baf0 */ 0xffff, /* baf1 */ 0xffff, /* baf2 */ 0xffff, /* baf3 */ 0xffff, /* baf4 */ 0xffff, /* baf5 */ 0xffff, /* baf6 */ 0xffff, /* baf7 */ 0xffff, /* baf8 */ 0xffff, /* baf9 */ 0xffff, /* bafa */ 0xffff, /* bafb */ 0xffff, /* bafc */ 0xffff, /* bafd */ 0xffff, /* bafe */ 0xffff, /* baff */ 0xffff, /* bb00 */ 0xffff, /* bb01 */ 0xffff, /* bb02 */ 0xffff, /* bb03 */ 0xffff, /* bb04 */ 0xffff, /* bb05 */ 0xffff, /* bb06 */ 0xffff, /* bb07 */ 0xffff, /* bb08 */ 0xffff, /* bb09 */ 0xffff, /* bb0a */ 0xffff, /* bb0b */ 0xffff, /* bb0c */ 0xffff, /* bb0d */ 0xffff, /* bb0e */ 0xffff, /* bb0f */ 0xffff, /* bb10 */ 0xffff, /* bb11 */ 0xffff, /* bb12 */ 0xffff, /* bb13 */ 0xffff, /* bb14 */ 0xffff, /* bb15 */ 0xffff, /* bb16 */ 0xffff, /* bb17 */ 0xffff, /* bb18 */ 0xffff, /* bb19 */ 0xffff, /* bb1a */ 0xffff, /* bb1b */ 0xffff, /* bb1c */ 0xffff, /* bb1d */ 0xffff, /* bb1e */ 0xffff, /* bb1f */ 0xffff, /* bb20 */ 0xffff, /* bb21 */ 0xffff, /* bb22 */ 0xffff, /* bb23 */ 0xffff, /* bb24 */ 0xffff, /* bb25 */ 0xffff, /* bb26 */ 0xffff, /* bb27 */ 0xffff, /* bb28 */ 0xffff, /* bb29 */ 0xffff, /* bb2a */ 0xffff, /* bb2b */ 0xffff, /* bb2c */ 0xffff, /* bb2d */ 0xffff, /* bb2e */ 0xffff, /* bb2f */ 0xffff, /* bb30 */ 0xffff, /* bb31 */ 0xffff, /* bb32 */ 0xffff, /* bb33 */ 0xffff, /* bb34 */ 0xffff, /* bb35 */ 0xffff, /* bb36 */ 0xffff, /* bb37 */ 0xffff, /* bb38 */ 0xffff, /* bb39 */ 0xffff, /* bb3a */ 0xffff, /* bb3b */ 0xffff, /* bb3c */ 0xffff, /* bb3d */ 0xffff, /* bb3e */ 0xffff, /* bb3f */ 0xffff, /* bb40 */ 0xffff, /* bb41 */ 0xffff, /* bb42 */ 0xffff, /* bb43 */ 0xffff, /* bb44 */ 0xffff, /* bb45 */ 0xffff, /* bb46 */ 0xffff, /* bb47 */ 0xffff, /* bb48 */ 0xffff, /* bb49 */ 0xffff, /* bb4a */ 0xffff, /* bb4b */ 0xffff, /* bb4c */ 0xffff, /* bb4d */ 0xffff, /* bb4e */ 0xffff, /* bb4f */ 0xffff, /* bb50 */ 0xffff, /* bb51 */ 0xffff, /* bb52 */ 0xffff, /* bb53 */ 0xffff, /* bb54 */ 0xffff, /* bb55 */ 0xffff, /* bb56 */ 0xffff, /* bb57 */ 0xffff, /* bb58 */ 0xffff, /* bb59 */ 0xffff, /* bb5a */ 0xffff, /* bb5b */ 0xffff, /* bb5c */ 0xffff, /* bb5d */ 0xffff, /* bb5e */ 0xffff, /* bb5f */ 0xffff, /* bb60 */ 0xffff, /* bb61 */ 0xffff, /* bb62 */ 0xffff, /* bb63 */ 0xffff, /* bb64 */ 0xffff, /* bb65 */ 0xffff, /* bb66 */ 0xffff, /* bb67 */ 0xffff, /* bb68 */ 0xffff, /* bb69 */ 0xffff, /* bb6a */ 0xffff, /* bb6b */ 0xffff, /* bb6c */ 0xffff, /* bb6d */ 0xffff, /* bb6e */ 0xffff, /* bb6f */ 0xffff, /* bb70 */ 0xffff, /* bb71 */ 0xffff, /* bb72 */ 0xffff, /* bb73 */ 0xffff, /* bb74 */ 0xffff, /* bb75 */ 0xffff, /* bb76 */ 0xffff, /* bb77 */ 0xffff, /* bb78 */ 0xffff, /* bb79 */ 0xffff, /* bb7a */ 0xffff, /* bb7b */ 0xffff, /* bb7c */ 0xffff, /* bb7d */ 0xffff, /* bb7e */ 0xffff, /* bb7f */ 0xffff, /* bb80 */ 0xffff, /* bb81 */ 0xffff, /* bb82 */ 0xffff, /* bb83 */ 0xffff, /* bb84 */ 0xffff, /* bb85 */ 0xffff, /* bb86 */ 0xffff, /* bb87 */ 0xffff, /* bb88 */ 0xffff, /* bb89 */ 0xffff, /* bb8a */ 0xffff, /* bb8b */ 0xffff, /* bb8c */ 0xffff, /* bb8d */ 0xffff, /* bb8e */ 0xffff, /* bb8f */ 0xffff, /* bb90 */ 0xffff, /* bb91 */ 0xffff, /* bb92 */ 0xffff, /* bb93 */ 0xffff, /* bb94 */ 0xffff, /* bb95 */ 0xffff, /* bb96 */ 0xffff, /* bb97 */ 0xffff, /* bb98 */ 0xffff, /* bb99 */ 0xffff, /* bb9a */ 0xffff, /* bb9b */ 0xffff, /* bb9c */ 0xffff, /* bb9d */ 0xffff, /* bb9e */ 0xffff, /* bb9f */ 0xffff, /* bba0 */ 0xffff, /* bba1 */ 0xffff, /* bba2 */ 0xffff, /* bba3 */ 0xffff, /* bba4 */ 0xffff, /* bba5 */ 0xffff, /* bba6 */ 0xffff, /* bba7 */ 0xffff, /* bba8 */ 0xffff, /* bba9 */ 0xffff, /* bbaa */ 0xffff, /* bbab */ 0xffff, /* bbac */ 0xffff, /* bbad */ 0xffff, /* bbae */ 0xffff, /* bbaf */ 0xffff, /* bbb0 */ 0xffff, /* bbb1 */ 0xffff, /* bbb2 */ 0xffff, /* bbb3 */ 0xffff, /* bbb4 */ 0xffff, /* bbb5 */ 0xffff, /* bbb6 */ 0xffff, /* bbb7 */ 0xffff, /* bbb8 */ 0xffff, /* bbb9 */ 0xffff, /* bbba */ 0xffff, /* bbbb */ 0xffff, /* bbbc */ 0xffff, /* bbbd */ 0xffff, /* bbbe */ 0xffff, /* bbbf */ 0xffff, /* bbc0 */ 0xffff, /* bbc1 */ 0xffff, /* bbc2 */ 0xffff, /* bbc3 */ 0xffff, /* bbc4 */ 0xffff, /* bbc5 */ 0xffff, /* bbc6 */ 0xffff, /* bbc7 */ 0xffff, /* bbc8 */ 0xffff, /* bbc9 */ 0xffff, /* bbca */ 0xffff, /* bbcb */ 0xffff, /* bbcc */ 0xffff, /* bbcd */ 0xffff, /* bbce */ 0xffff, /* bbcf */ 0xffff, /* bbd0 */ 0xffff, /* bbd1 */ 0xffff, /* bbd2 */ 0xffff, /* bbd3 */ 0xffff, /* bbd4 */ 0xffff, /* bbd5 */ 0xffff, /* bbd6 */ 0xffff, /* bbd7 */ 0xffff, /* bbd8 */ 0xffff, /* bbd9 */ 0xffff, /* bbda */ 0xffff, /* bbdb */ 0xffff, /* bbdc */ 0xffff, /* bbdd */ 0xffff, /* bbde */ 0xffff, /* bbdf */ 0xffff, /* bbe0 */ 0xffff, /* bbe1 */ 0xffff, /* bbe2 */ 0xffff, /* bbe3 */ 0xffff, /* bbe4 */ 0xffff, /* bbe5 */ 0xffff, /* bbe6 */ 0xffff, /* bbe7 */ 0xffff, /* bbe8 */ 0xffff, /* bbe9 */ 0xffff, /* bbea */ 0xffff, /* bbeb */ 0xffff, /* bbec */ 0xffff, /* bbed */ 0xffff, /* bbee */ 0xffff, /* bbef */ 0xffff, /* bbf0 */ 0xffff, /* bbf1 */ 0xffff, /* bbf2 */ 0xffff, /* bbf3 */ 0xffff, /* bbf4 */ 0xffff, /* bbf5 */ 0xffff, /* bbf6 */ 0xffff, /* bbf7 */ 0xffff, /* bbf8 */ 0xffff, /* bbf9 */ 0xffff, /* bbfa */ 0xffff, /* bbfb */ 0xffff, /* bbfc */ 0xffff, /* bbfd */ 0xffff, /* bbfe */ 0xffff, /* bbff */ 0xffff, /* bc00 */ 0xffff, /* bc01 */ 0xffff, /* bc02 */ 0xffff, /* bc03 */ 0xffff, /* bc04 */ 0xffff, /* bc05 */ 0xffff, /* bc06 */ 0xffff, /* bc07 */ 0xffff, /* bc08 */ 0xffff, /* bc09 */ 0xffff, /* bc0a */ 0xffff, /* bc0b */ 0xffff, /* bc0c */ 0xffff, /* bc0d */ 0xffff, /* bc0e */ 0xffff, /* bc0f */ 0xffff, /* bc10 */ 0xffff, /* bc11 */ 0xffff, /* bc12 */ 0xffff, /* bc13 */ 0xffff, /* bc14 */ 0xffff, /* bc15 */ 0xffff, /* bc16 */ 0xffff, /* bc17 */ 0xffff, /* bc18 */ 0xffff, /* bc19 */ 0xffff, /* bc1a */ 0xffff, /* bc1b */ 0xffff, /* bc1c */ 0xffff, /* bc1d */ 0xffff, /* bc1e */ 0xffff, /* bc1f */ 0xffff, /* bc20 */ 0xffff, /* bc21 */ 0xffff, /* bc22 */ 0xffff, /* bc23 */ 0xffff, /* bc24 */ 0xffff, /* bc25 */ 0xffff, /* bc26 */ 0xffff, /* bc27 */ 0xffff, /* bc28 */ 0xffff, /* bc29 */ 0xffff, /* bc2a */ 0xffff, /* bc2b */ 0xffff, /* bc2c */ 0xffff, /* bc2d */ 0xffff, /* bc2e */ 0xffff, /* bc2f */ 0xffff, /* bc30 */ 0xffff, /* bc31 */ 0xffff, /* bc32 */ 0xffff, /* bc33 */ 0xffff, /* bc34 */ 0xffff, /* bc35 */ 0xffff, /* bc36 */ 0xffff, /* bc37 */ 0xffff, /* bc38 */ 0xffff, /* bc39 */ 0xffff, /* bc3a */ 0xffff, /* bc3b */ 0xffff, /* bc3c */ 0xffff, /* bc3d */ 0xffff, /* bc3e */ 0xffff, /* bc3f */ 0xffff, /* bc40 */ 0xffff, /* bc41 */ 0xffff, /* bc42 */ 0xffff, /* bc43 */ 0xffff, /* bc44 */ 0xffff, /* bc45 */ 0xffff, /* bc46 */ 0xffff, /* bc47 */ 0xffff, /* bc48 */ 0xffff, /* bc49 */ 0xffff, /* bc4a */ 0xffff, /* bc4b */ 0xffff, /* bc4c */ 0xffff, /* bc4d */ 0xffff, /* bc4e */ 0xffff, /* bc4f */ 0xffff, /* bc50 */ 0xffff, /* bc51 */ 0xffff, /* bc52 */ 0xffff, /* bc53 */ 0xffff, /* bc54 */ 0xffff, /* bc55 */ 0xffff, /* bc56 */ 0xffff, /* bc57 */ 0xffff, /* bc58 */ 0xffff, /* bc59 */ 0xffff, /* bc5a */ 0xffff, /* bc5b */ 0xffff, /* bc5c */ 0xffff, /* bc5d */ 0xffff, /* bc5e */ 0xffff, /* bc5f */ 0xffff, /* bc60 */ 0xffff, /* bc61 */ 0xffff, /* bc62 */ 0xffff, /* bc63 */ 0xffff, /* bc64 */ 0xffff, /* bc65 */ 0xffff, /* bc66 */ 0xffff, /* bc67 */ 0xffff, /* bc68 */ 0xffff, /* bc69 */ 0xffff, /* bc6a */ 0xffff, /* bc6b */ 0xffff, /* bc6c */ 0xffff, /* bc6d */ 0xffff, /* bc6e */ 0xffff, /* bc6f */ 0xffff, /* bc70 */ 0xffff, /* bc71 */ 0xffff, /* bc72 */ 0xffff, /* bc73 */ 0xffff, /* bc74 */ 0xffff, /* bc75 */ 0xffff, /* bc76 */ 0xffff, /* bc77 */ 0xffff, /* bc78 */ 0xffff, /* bc79 */ 0xffff, /* bc7a */ 0xffff, /* bc7b */ 0xffff, /* bc7c */ 0xffff, /* bc7d */ 0xffff, /* bc7e */ 0xffff, /* bc7f */ 0xffff, /* bc80 */ 0xffff, /* bc81 */ 0xffff, /* bc82 */ 0xffff, /* bc83 */ 0xffff, /* bc84 */ 0xffff, /* bc85 */ 0xffff, /* bc86 */ 0xffff, /* bc87 */ 0xffff, /* bc88 */ 0xffff, /* bc89 */ 0xffff, /* bc8a */ 0xffff, /* bc8b */ 0xffff, /* bc8c */ 0xffff, /* bc8d */ 0xffff, /* bc8e */ 0xffff, /* bc8f */ 0xffff, /* bc90 */ 0xffff, /* bc91 */ 0xffff, /* bc92 */ 0xffff, /* bc93 */ 0xffff, /* bc94 */ 0xffff, /* bc95 */ 0xffff, /* bc96 */ 0xffff, /* bc97 */ 0xffff, /* bc98 */ 0xffff, /* bc99 */ 0xffff, /* bc9a */ 0xffff, /* bc9b */ 0xffff, /* bc9c */ 0xffff, /* bc9d */ 0xffff, /* bc9e */ 0xffff, /* bc9f */ 0xffff, /* bca0 */ 0xffff, /* bca1 */ 0xffff, /* bca2 */ 0xffff, /* bca3 */ 0xffff, /* bca4 */ 0xffff, /* bca5 */ 0xffff, /* bca6 */ 0xffff, /* bca7 */ 0xffff, /* bca8 */ 0xffff, /* bca9 */ 0xffff, /* bcaa */ 0xffff, /* bcab */ 0xffff, /* bcac */ 0xffff, /* bcad */ 0xffff, /* bcae */ 0xffff, /* bcaf */ 0xffff, /* bcb0 */ 0xffff, /* bcb1 */ 0xffff, /* bcb2 */ 0xffff, /* bcb3 */ 0xffff, /* bcb4 */ 0xffff, /* bcb5 */ 0xffff, /* bcb6 */ 0xffff, /* bcb7 */ 0xffff, /* bcb8 */ 0xffff, /* bcb9 */ 0xffff, /* bcba */ 0xffff, /* bcbb */ 0xffff, /* bcbc */ 0xffff, /* bcbd */ 0xffff, /* bcbe */ 0xffff, /* bcbf */ 0xffff, /* bcc0 */ 0xffff, /* bcc1 */ 0xffff, /* bcc2 */ 0xffff, /* bcc3 */ 0xffff, /* bcc4 */ 0xffff, /* bcc5 */ 0xffff, /* bcc6 */ 0xffff, /* bcc7 */ 0xffff, /* bcc8 */ 0xffff, /* bcc9 */ 0xffff, /* bcca */ 0xffff, /* bccb */ 0xffff, /* bccc */ 0xffff, /* bccd */ 0xffff, /* bcce */ 0xffff, /* bccf */ 0xffff, /* bcd0 */ 0xffff, /* bcd1 */ 0xffff, /* bcd2 */ 0xffff, /* bcd3 */ 0xffff, /* bcd4 */ 0xffff, /* bcd5 */ 0xffff, /* bcd6 */ 0xffff, /* bcd7 */ 0xffff, /* bcd8 */ 0xffff, /* bcd9 */ 0xffff, /* bcda */ 0xffff, /* bcdb */ 0xffff, /* bcdc */ 0xffff, /* bcdd */ 0xffff, /* bcde */ 0xffff, /* bcdf */ 0xffff, /* bce0 */ 0xffff, /* bce1 */ 0xffff, /* bce2 */ 0xffff, /* bce3 */ 0xffff, /* bce4 */ 0xffff, /* bce5 */ 0xffff, /* bce6 */ 0xffff, /* bce7 */ 0xffff, /* bce8 */ 0xffff, /* bce9 */ 0xffff, /* bcea */ 0xffff, /* bceb */ 0xffff, /* bcec */ 0xffff, /* bced */ 0xffff, /* bcee */ 0xffff, /* bcef */ 0xffff, /* bcf0 */ 0xffff, /* bcf1 */ 0xffff, /* bcf2 */ 0xffff, /* bcf3 */ 0xffff, /* bcf4 */ 0xffff, /* bcf5 */ 0xffff, /* bcf6 */ 0xffff, /* bcf7 */ 0xffff, /* bcf8 */ 0xffff, /* bcf9 */ 0xffff, /* bcfa */ 0xffff, /* bcfb */ 0xffff, /* bcfc */ 0xffff, /* bcfd */ 0xffff, /* bcfe */ 0xffff, /* bcff */ 0xffff, /* bd00 */ 0xffff, /* bd01 */ 0xffff, /* bd02 */ 0xffff, /* bd03 */ 0xffff, /* bd04 */ 0xffff, /* bd05 */ 0xffff, /* bd06 */ 0xffff, /* bd07 */ 0xffff, /* bd08 */ 0xffff, /* bd09 */ 0xffff, /* bd0a */ 0xffff, /* bd0b */ 0xffff, /* bd0c */ 0xffff, /* bd0d */ 0xffff, /* bd0e */ 0xffff, /* bd0f */ 0xffff, /* bd10 */ 0xffff, /* bd11 */ 0xffff, /* bd12 */ 0xffff, /* bd13 */ 0xffff, /* bd14 */ 0xffff, /* bd15 */ 0xffff, /* bd16 */ 0xffff, /* bd17 */ 0xffff, /* bd18 */ 0xffff, /* bd19 */ 0xffff, /* bd1a */ 0xffff, /* bd1b */ 0xffff, /* bd1c */ 0xffff, /* bd1d */ 0xffff, /* bd1e */ 0xffff, /* bd1f */ 0xffff, /* bd20 */ 0xffff, /* bd21 */ 0xffff, /* bd22 */ 0xffff, /* bd23 */ 0xffff, /* bd24 */ 0xffff, /* bd25 */ 0xffff, /* bd26 */ 0xffff, /* bd27 */ 0xffff, /* bd28 */ 0xffff, /* bd29 */ 0xffff, /* bd2a */ 0xffff, /* bd2b */ 0xffff, /* bd2c */ 0xffff, /* bd2d */ 0xffff, /* bd2e */ 0xffff, /* bd2f */ 0xffff, /* bd30 */ 0xffff, /* bd31 */ 0xffff, /* bd32 */ 0xffff, /* bd33 */ 0xffff, /* bd34 */ 0xffff, /* bd35 */ 0xffff, /* bd36 */ 0xffff, /* bd37 */ 0xffff, /* bd38 */ 0xffff, /* bd39 */ 0xffff, /* bd3a */ 0xffff, /* bd3b */ 0xffff, /* bd3c */ 0xffff, /* bd3d */ 0xffff, /* bd3e */ 0xffff, /* bd3f */ 0xffff, /* bd40 */ 0xffff, /* bd41 */ 0xffff, /* bd42 */ 0xffff, /* bd43 */ 0xffff, /* bd44 */ 0xffff, /* bd45 */ 0xffff, /* bd46 */ 0xffff, /* bd47 */ 0xffff, /* bd48 */ 0xffff, /* bd49 */ 0xffff, /* bd4a */ 0xffff, /* bd4b */ 0xffff, /* bd4c */ 0xffff, /* bd4d */ 0xffff, /* bd4e */ 0xffff, /* bd4f */ 0xffff, /* bd50 */ 0xffff, /* bd51 */ 0xffff, /* bd52 */ 0xffff, /* bd53 */ 0xffff, /* bd54 */ 0xffff, /* bd55 */ 0xffff, /* bd56 */ 0xffff, /* bd57 */ 0xffff, /* bd58 */ 0xffff, /* bd59 */ 0xffff, /* bd5a */ 0xffff, /* bd5b */ 0xffff, /* bd5c */ 0xffff, /* bd5d */ 0xffff, /* bd5e */ 0xffff, /* bd5f */ 0xffff, /* bd60 */ 0xffff, /* bd61 */ 0xffff, /* bd62 */ 0xffff, /* bd63 */ 0xffff, /* bd64 */ 0xffff, /* bd65 */ 0xffff, /* bd66 */ 0xffff, /* bd67 */ 0xffff, /* bd68 */ 0xffff, /* bd69 */ 0xffff, /* bd6a */ 0xffff, /* bd6b */ 0xffff, /* bd6c */ 0xffff, /* bd6d */ 0xffff, /* bd6e */ 0xffff, /* bd6f */ 0xffff, /* bd70 */ 0xffff, /* bd71 */ 0xffff, /* bd72 */ 0xffff, /* bd73 */ 0xffff, /* bd74 */ 0xffff, /* bd75 */ 0xffff, /* bd76 */ 0xffff, /* bd77 */ 0xffff, /* bd78 */ 0xffff, /* bd79 */ 0xffff, /* bd7a */ 0xffff, /* bd7b */ 0xffff, /* bd7c */ 0xffff, /* bd7d */ 0xffff, /* bd7e */ 0xffff, /* bd7f */ 0xffff, /* bd80 */ 0xffff, /* bd81 */ 0xffff, /* bd82 */ 0xffff, /* bd83 */ 0xffff, /* bd84 */ 0xffff, /* bd85 */ 0xffff, /* bd86 */ 0xffff, /* bd87 */ 0xffff, /* bd88 */ 0xffff, /* bd89 */ 0xffff, /* bd8a */ 0xffff, /* bd8b */ 0xffff, /* bd8c */ 0xffff, /* bd8d */ 0xffff, /* bd8e */ 0xffff, /* bd8f */ 0xffff, /* bd90 */ 0xffff, /* bd91 */ 0xffff, /* bd92 */ 0xffff, /* bd93 */ 0xffff, /* bd94 */ 0xffff, /* bd95 */ 0xffff, /* bd96 */ 0xffff, /* bd97 */ 0xffff, /* bd98 */ 0xffff, /* bd99 */ 0xffff, /* bd9a */ 0xffff, /* bd9b */ 0xffff, /* bd9c */ 0xffff, /* bd9d */ 0xffff, /* bd9e */ 0xffff, /* bd9f */ 0xffff, /* bda0 */ 0xffff, /* bda1 */ 0xffff, /* bda2 */ 0xffff, /* bda3 */ 0xffff, /* bda4 */ 0xffff, /* bda5 */ 0xffff, /* bda6 */ 0xffff, /* bda7 */ 0xffff, /* bda8 */ 0xffff, /* bda9 */ 0xffff, /* bdaa */ 0xffff, /* bdab */ 0xffff, /* bdac */ 0xffff, /* bdad */ 0xffff, /* bdae */ 0xffff, /* bdaf */ 0xffff, /* bdb0 */ 0xffff, /* bdb1 */ 0xffff, /* bdb2 */ 0xffff, /* bdb3 */ 0xffff, /* bdb4 */ 0xffff, /* bdb5 */ 0xffff, /* bdb6 */ 0xffff, /* bdb7 */ 0xffff, /* bdb8 */ 0xffff, /* bdb9 */ 0xffff, /* bdba */ 0xffff, /* bdbb */ 0xffff, /* bdbc */ 0xffff, /* bdbd */ 0xffff, /* bdbe */ 0xffff, /* bdbf */ 0xffff, /* bdc0 */ 0xffff, /* bdc1 */ 0xffff, /* bdc2 */ 0xffff, /* bdc3 */ 0xffff, /* bdc4 */ 0xffff, /* bdc5 */ 0xffff, /* bdc6 */ 0xffff, /* bdc7 */ 0xffff, /* bdc8 */ 0xffff, /* bdc9 */ 0xffff, /* bdca */ 0xffff, /* bdcb */ 0xffff, /* bdcc */ 0xffff, /* bdcd */ 0xffff, /* bdce */ 0xffff, /* bdcf */ 0xffff, /* bdd0 */ 0xffff, /* bdd1 */ 0xffff, /* bdd2 */ 0xffff, /* bdd3 */ 0xffff, /* bdd4 */ 0xffff, /* bdd5 */ 0xffff, /* bdd6 */ 0xffff, /* bdd7 */ 0xffff, /* bdd8 */ 0xffff, /* bdd9 */ 0xffff, /* bdda */ 0xffff, /* bddb */ 0xffff, /* bddc */ 0xffff, /* bddd */ 0xffff, /* bdde */ 0xffff, /* bddf */ 0xffff, /* bde0 */ 0xffff, /* bde1 */ 0xffff, /* bde2 */ 0xffff, /* bde3 */ 0xffff, /* bde4 */ 0xffff, /* bde5 */ 0xffff, /* bde6 */ 0xffff, /* bde7 */ 0xffff, /* bde8 */ 0xffff, /* bde9 */ 0xffff, /* bdea */ 0xffff, /* bdeb */ 0xffff, /* bdec */ 0xffff, /* bded */ 0xffff, /* bdee */ 0xffff, /* bdef */ 0xffff, /* bdf0 */ 0xffff, /* bdf1 */ 0xffff, /* bdf2 */ 0xffff, /* bdf3 */ 0xffff, /* bdf4 */ 0xffff, /* bdf5 */ 0xffff, /* bdf6 */ 0xffff, /* bdf7 */ 0xffff, /* bdf8 */ 0xffff, /* bdf9 */ 0xffff, /* bdfa */ 0xffff, /* bdfb */ 0xffff, /* bdfc */ 0xffff, /* bdfd */ 0xffff, /* bdfe */ 0xffff, /* bdff */ 0xffff, /* be00 */ 0xffff, /* be01 */ 0xffff, /* be02 */ 0xffff, /* be03 */ 0xffff, /* be04 */ 0xffff, /* be05 */ 0xffff, /* be06 */ 0xffff, /* be07 */ 0xffff, /* be08 */ 0xffff, /* be09 */ 0xffff, /* be0a */ 0xffff, /* be0b */ 0xffff, /* be0c */ 0xffff, /* be0d */ 0xffff, /* be0e */ 0xffff, /* be0f */ 0xffff, /* be10 */ 0xffff, /* be11 */ 0xffff, /* be12 */ 0xffff, /* be13 */ 0xffff, /* be14 */ 0xffff, /* be15 */ 0xffff, /* be16 */ 0xffff, /* be17 */ 0xffff, /* be18 */ 0xffff, /* be19 */ 0xffff, /* be1a */ 0xffff, /* be1b */ 0xffff, /* be1c */ 0xffff, /* be1d */ 0xffff, /* be1e */ 0xffff, /* be1f */ 0xffff, /* be20 */ 0xffff, /* be21 */ 0xffff, /* be22 */ 0xffff, /* be23 */ 0xffff, /* be24 */ 0xffff, /* be25 */ 0xffff, /* be26 */ 0xffff, /* be27 */ 0xffff, /* be28 */ 0xffff, /* be29 */ 0xffff, /* be2a */ 0xffff, /* be2b */ 0xffff, /* be2c */ 0xffff, /* be2d */ 0xffff, /* be2e */ 0xffff, /* be2f */ 0xffff, /* be30 */ 0xffff, /* be31 */ 0xffff, /* be32 */ 0xffff, /* be33 */ 0xffff, /* be34 */ 0xffff, /* be35 */ 0xffff, /* be36 */ 0xffff, /* be37 */ 0xffff, /* be38 */ 0xffff, /* be39 */ 0xffff, /* be3a */ 0xffff, /* be3b */ 0xffff, /* be3c */ 0xffff, /* be3d */ 0xffff, /* be3e */ 0xffff, /* be3f */ 0xffff, /* be40 */ 0xffff, /* be41 */ 0xffff, /* be42 */ 0xffff, /* be43 */ 0xffff, /* be44 */ 0xffff, /* be45 */ 0xffff, /* be46 */ 0xffff, /* be47 */ 0xffff, /* be48 */ 0xffff, /* be49 */ 0xffff, /* be4a */ 0xffff, /* be4b */ 0xffff, /* be4c */ 0xffff, /* be4d */ 0xffff, /* be4e */ 0xffff, /* be4f */ 0xffff, /* be50 */ 0xffff, /* be51 */ 0xffff, /* be52 */ 0xffff, /* be53 */ 0xffff, /* be54 */ 0xffff, /* be55 */ 0xffff, /* be56 */ 0xffff, /* be57 */ 0xffff, /* be58 */ 0xffff, /* be59 */ 0xffff, /* be5a */ 0xffff, /* be5b */ 0xffff, /* be5c */ 0xffff, /* be5d */ 0xffff, /* be5e */ 0xffff, /* be5f */ 0xffff, /* be60 */ 0xffff, /* be61 */ 0xffff, /* be62 */ 0xffff, /* be63 */ 0xffff, /* be64 */ 0xffff, /* be65 */ 0xffff, /* be66 */ 0xffff, /* be67 */ 0xffff, /* be68 */ 0xffff, /* be69 */ 0xffff, /* be6a */ 0xffff, /* be6b */ 0xffff, /* be6c */ 0xffff, /* be6d */ 0xffff, /* be6e */ 0xffff, /* be6f */ 0xffff, /* be70 */ 0xffff, /* be71 */ 0xffff, /* be72 */ 0xffff, /* be73 */ 0xffff, /* be74 */ 0xffff, /* be75 */ 0xffff, /* be76 */ 0xffff, /* be77 */ 0xffff, /* be78 */ 0xffff, /* be79 */ 0xffff, /* be7a */ 0xffff, /* be7b */ 0xffff, /* be7c */ 0xffff, /* be7d */ 0xffff, /* be7e */ 0xffff, /* be7f */ 0xffff, /* be80 */ 0xffff, /* be81 */ 0xffff, /* be82 */ 0xffff, /* be83 */ 0xffff, /* be84 */ 0xffff, /* be85 */ 0xffff, /* be86 */ 0xffff, /* be87 */ 0xffff, /* be88 */ 0xffff, /* be89 */ 0xffff, /* be8a */ 0xffff, /* be8b */ 0xffff, /* be8c */ 0xffff, /* be8d */ 0xffff, /* be8e */ 0xffff, /* be8f */ 0xffff, /* be90 */ 0xffff, /* be91 */ 0xffff, /* be92 */ 0xffff, /* be93 */ 0xffff, /* be94 */ 0xffff, /* be95 */ 0xffff, /* be96 */ 0xffff, /* be97 */ 0xffff, /* be98 */ 0xffff, /* be99 */ 0xffff, /* be9a */ 0xffff, /* be9b */ 0xffff, /* be9c */ 0xffff, /* be9d */ 0xffff, /* be9e */ 0xffff, /* be9f */ 0xffff, /* bea0 */ 0xffff, /* bea1 */ 0xffff, /* bea2 */ 0xffff, /* bea3 */ 0xffff, /* bea4 */ 0xffff, /* bea5 */ 0xffff, /* bea6 */ 0xffff, /* bea7 */ 0xffff, /* bea8 */ 0xffff, /* bea9 */ 0xffff, /* beaa */ 0xffff, /* beab */ 0xffff, /* beac */ 0xffff, /* bead */ 0xffff, /* beae */ 0xffff, /* beaf */ 0xffff, /* beb0 */ 0xffff, /* beb1 */ 0xffff, /* beb2 */ 0xffff, /* beb3 */ 0xffff, /* beb4 */ 0xffff, /* beb5 */ 0xffff, /* beb6 */ 0xffff, /* beb7 */ 0xffff, /* beb8 */ 0xffff, /* beb9 */ 0xffff, /* beba */ 0xffff, /* bebb */ 0xffff, /* bebc */ 0xffff, /* bebd */ 0xffff, /* bebe */ 0xffff, /* bebf */ 0xffff, /* bec0 */ 0xffff, /* bec1 */ 0xffff, /* bec2 */ 0xffff, /* bec3 */ 0xffff, /* bec4 */ 0xffff, /* bec5 */ 0xffff, /* bec6 */ 0xffff, /* bec7 */ 0xffff, /* bec8 */ 0xffff, /* bec9 */ 0xffff, /* beca */ 0xffff, /* becb */ 0xffff, /* becc */ 0xffff, /* becd */ 0xffff, /* bece */ 0xffff, /* becf */ 0xffff, /* bed0 */ 0xffff, /* bed1 */ 0xffff, /* bed2 */ 0xffff, /* bed3 */ 0xffff, /* bed4 */ 0xffff, /* bed5 */ 0xffff, /* bed6 */ 0xffff, /* bed7 */ 0xffff, /* bed8 */ 0xffff, /* bed9 */ 0xffff, /* beda */ 0xffff, /* bedb */ 0xffff, /* bedc */ 0xffff, /* bedd */ 0xffff, /* bede */ 0xffff, /* bedf */ 0xffff, /* bee0 */ 0xffff, /* bee1 */ 0xffff, /* bee2 */ 0xffff, /* bee3 */ 0xffff, /* bee4 */ 0xffff, /* bee5 */ 0xffff, /* bee6 */ 0xffff, /* bee7 */ 0xffff, /* bee8 */ 0xffff, /* bee9 */ 0xffff, /* beea */ 0xffff, /* beeb */ 0xffff, /* beec */ 0xffff, /* beed */ 0xffff, /* beee */ 0xffff, /* beef */ 0xffff, /* bef0 */ 0xffff, /* bef1 */ 0xffff, /* bef2 */ 0xffff, /* bef3 */ 0xffff, /* bef4 */ 0xffff, /* bef5 */ 0xffff, /* bef6 */ 0xffff, /* bef7 */ 0xffff, /* bef8 */ 0xffff, /* bef9 */ 0xffff, /* befa */ 0xffff, /* befb */ 0xffff, /* befc */ 0xffff, /* befd */ 0xffff, /* befe */ 0xffff, /* beff */ 0xffff, /* bf00 */ 0xffff, /* bf01 */ 0xffff, /* bf02 */ 0xffff, /* bf03 */ 0xffff, /* bf04 */ 0xffff, /* bf05 */ 0xffff, /* bf06 */ 0xffff, /* bf07 */ 0xffff, /* bf08 */ 0xffff, /* bf09 */ 0xffff, /* bf0a */ 0xffff, /* bf0b */ 0xffff, /* bf0c */ 0xffff, /* bf0d */ 0xffff, /* bf0e */ 0xffff, /* bf0f */ 0xffff, /* bf10 */ 0xffff, /* bf11 */ 0xffff, /* bf12 */ 0xffff, /* bf13 */ 0xffff, /* bf14 */ 0xffff, /* bf15 */ 0xffff, /* bf16 */ 0xffff, /* bf17 */ 0xffff, /* bf18 */ 0xffff, /* bf19 */ 0xffff, /* bf1a */ 0xffff, /* bf1b */ 0xffff, /* bf1c */ 0xffff, /* bf1d */ 0xffff, /* bf1e */ 0xffff, /* bf1f */ 0xffff, /* bf20 */ 0xffff, /* bf21 */ 0xffff, /* bf22 */ 0xffff, /* bf23 */ 0xffff, /* bf24 */ 0xffff, /* bf25 */ 0xffff, /* bf26 */ 0xffff, /* bf27 */ 0xffff, /* bf28 */ 0xffff, /* bf29 */ 0xffff, /* bf2a */ 0xffff, /* bf2b */ 0xffff, /* bf2c */ 0xffff, /* bf2d */ 0xffff, /* bf2e */ 0xffff, /* bf2f */ 0xffff, /* bf30 */ 0xffff, /* bf31 */ 0xffff, /* bf32 */ 0xffff, /* bf33 */ 0xffff, /* bf34 */ 0xffff, /* bf35 */ 0xffff, /* bf36 */ 0xffff, /* bf37 */ 0xffff, /* bf38 */ 0xffff, /* bf39 */ 0xffff, /* bf3a */ 0xffff, /* bf3b */ 0xffff, /* bf3c */ 0xffff, /* bf3d */ 0xffff, /* bf3e */ 0xffff, /* bf3f */ 0xffff, /* bf40 */ 0xffff, /* bf41 */ 0xffff, /* bf42 */ 0xffff, /* bf43 */ 0xffff, /* bf44 */ 0xffff, /* bf45 */ 0xffff, /* bf46 */ 0xffff, /* bf47 */ 0xffff, /* bf48 */ 0xffff, /* bf49 */ 0xffff, /* bf4a */ 0xffff, /* bf4b */ 0xffff, /* bf4c */ 0xffff, /* bf4d */ 0xffff, /* bf4e */ 0xffff, /* bf4f */ 0xffff, /* bf50 */ 0xffff, /* bf51 */ 0xffff, /* bf52 */ 0xffff, /* bf53 */ 0xffff, /* bf54 */ 0xffff, /* bf55 */ 0xffff, /* bf56 */ 0xffff, /* bf57 */ 0xffff, /* bf58 */ 0xffff, /* bf59 */ 0xffff, /* bf5a */ 0xffff, /* bf5b */ 0xffff, /* bf5c */ 0xffff, /* bf5d */ 0xffff, /* bf5e */ 0xffff, /* bf5f */ 0xffff, /* bf60 */ 0xffff, /* bf61 */ 0xffff, /* bf62 */ 0xffff, /* bf63 */ 0xffff, /* bf64 */ 0xffff, /* bf65 */ 0xffff, /* bf66 */ 0xffff, /* bf67 */ 0xffff, /* bf68 */ 0xffff, /* bf69 */ 0xffff, /* bf6a */ 0xffff, /* bf6b */ 0xffff, /* bf6c */ 0xffff, /* bf6d */ 0xffff, /* bf6e */ 0xffff, /* bf6f */ 0xffff, /* bf70 */ 0xffff, /* bf71 */ 0xffff, /* bf72 */ 0xffff, /* bf73 */ 0xffff, /* bf74 */ 0xffff, /* bf75 */ 0xffff, /* bf76 */ 0xffff, /* bf77 */ 0xffff, /* bf78 */ 0xffff, /* bf79 */ 0xffff, /* bf7a */ 0xffff, /* bf7b */ 0xffff, /* bf7c */ 0xffff, /* bf7d */ 0xffff, /* bf7e */ 0xffff, /* bf7f */ 0xffff, /* bf80 */ 0xffff, /* bf81 */ 0xffff, /* bf82 */ 0xffff, /* bf83 */ 0xffff, /* bf84 */ 0xffff, /* bf85 */ 0xffff, /* bf86 */ 0xffff, /* bf87 */ 0xffff, /* bf88 */ 0xffff, /* bf89 */ 0xffff, /* bf8a */ 0xffff, /* bf8b */ 0xffff, /* bf8c */ 0xffff, /* bf8d */ 0xffff, /* bf8e */ 0xffff, /* bf8f */ 0xffff, /* bf90 */ 0xffff, /* bf91 */ 0xffff, /* bf92 */ 0xffff, /* bf93 */ 0xffff, /* bf94 */ 0xffff, /* bf95 */ 0xffff, /* bf96 */ 0xffff, /* bf97 */ 0xffff, /* bf98 */ 0xffff, /* bf99 */ 0xffff, /* bf9a */ 0xffff, /* bf9b */ 0xffff, /* bf9c */ 0xffff, /* bf9d */ 0xffff, /* bf9e */ 0xffff, /* bf9f */ 0xffff, /* bfa0 */ 0xffff, /* bfa1 */ 0xffff, /* bfa2 */ 0xffff, /* bfa3 */ 0xffff, /* bfa4 */ 0xffff, /* bfa5 */ 0xffff, /* bfa6 */ 0xffff, /* bfa7 */ 0xffff, /* bfa8 */ 0xffff, /* bfa9 */ 0xffff, /* bfaa */ 0xffff, /* bfab */ 0xffff, /* bfac */ 0xffff, /* bfad */ 0xffff, /* bfae */ 0xffff, /* bfaf */ 0xffff, /* bfb0 */ 0xffff, /* bfb1 */ 0xffff, /* bfb2 */ 0xffff, /* bfb3 */ 0xffff, /* bfb4 */ 0xffff, /* bfb5 */ 0xffff, /* bfb6 */ 0xffff, /* bfb7 */ 0xffff, /* bfb8 */ 0xffff, /* bfb9 */ 0xffff, /* bfba */ 0xffff, /* bfbb */ 0xffff, /* bfbc */ 0xffff, /* bfbd */ 0xffff, /* bfbe */ 0xffff, /* bfbf */ 0xffff, /* bfc0 */ 0xffff, /* bfc1 */ 0xffff, /* bfc2 */ 0xffff, /* bfc3 */ 0xffff, /* bfc4 */ 0xffff, /* bfc5 */ 0xffff, /* bfc6 */ 0xffff, /* bfc7 */ 0xffff, /* bfc8 */ 0xffff, /* bfc9 */ 0xffff, /* bfca */ 0xffff, /* bfcb */ 0xffff, /* bfcc */ 0xffff, /* bfcd */ 0xffff, /* bfce */ 0xffff, /* bfcf */ 0xffff, /* bfd0 */ 0xffff, /* bfd1 */ 0xffff, /* bfd2 */ 0xffff, /* bfd3 */ 0xffff, /* bfd4 */ 0xffff, /* bfd5 */ 0xffff, /* bfd6 */ 0xffff, /* bfd7 */ 0xffff, /* bfd8 */ 0xffff, /* bfd9 */ 0xffff, /* bfda */ 0xffff, /* bfdb */ 0xffff, /* bfdc */ 0xffff, /* bfdd */ 0xffff, /* bfde */ 0xffff, /* bfdf */ 0xffff, /* bfe0 */ 0xffff, /* bfe1 */ 0xffff, /* bfe2 */ 0xffff, /* bfe3 */ 0xffff, /* bfe4 */ 0xffff, /* bfe5 */ 0xffff, /* bfe6 */ 0xffff, /* bfe7 */ 0xffff, /* bfe8 */ 0xffff, /* bfe9 */ 0xffff, /* bfea */ 0xffff, /* bfeb */ 0xffff, /* bfec */ 0xffff, /* bfed */ 0xffff, /* bfee */ 0xffff, /* bfef */ 0xffff, /* bff0 */ 0xffff, /* bff1 */ 0xffff, /* bff2 */ 0xffff, /* bff3 */ 0xffff, /* bff4 */ 0xffff, /* bff5 */ 0xffff, /* bff6 */ 0xffff, /* bff7 */ 0xffff, /* bff8 */ 0xffff, /* bff9 */ 0xffff, /* bffa */ 0xffff, /* bffb */ 0xffff, /* bffc */ 0xffff, /* bffd */ 0xffff, /* bffe */ 0xffff, /* bfff */ 0xffff, /* c000 */ 0xffff, /* c001 */ 0xffff, /* c002 */ 0xffff, /* c003 */ 0xffff, /* c004 */ 0xffff, /* c005 */ 0xffff, /* c006 */ 0xffff, /* c007 */ 0xffff, /* c008 */ 0xffff, /* c009 */ 0xffff, /* c00a */ 0xffff, /* c00b */ 0xffff, /* c00c */ 0xffff, /* c00d */ 0xffff, /* c00e */ 0xffff, /* c00f */ 0xffff, /* c010 */ 0xffff, /* c011 */ 0xffff, /* c012 */ 0xffff, /* c013 */ 0xffff, /* c014 */ 0xffff, /* c015 */ 0xffff, /* c016 */ 0xffff, /* c017 */ 0xffff, /* c018 */ 0xffff, /* c019 */ 0xffff, /* c01a */ 0xffff, /* c01b */ 0xffff, /* c01c */ 0xffff, /* c01d */ 0xffff, /* c01e */ 0xffff, /* c01f */ 0xffff, /* c020 */ 0xffff, /* c021 */ 0xffff, /* c022 */ 0xffff, /* c023 */ 0xffff, /* c024 */ 0xffff, /* c025 */ 0xffff, /* c026 */ 0xffff, /* c027 */ 0xffff, /* c028 */ 0xffff, /* c029 */ 0xffff, /* c02a */ 0xffff, /* c02b */ 0xffff, /* c02c */ 0xffff, /* c02d */ 0xffff, /* c02e */ 0xffff, /* c02f */ 0xffff, /* c030 */ 0xffff, /* c031 */ 0xffff, /* c032 */ 0xffff, /* c033 */ 0xffff, /* c034 */ 0xffff, /* c035 */ 0xffff, /* c036 */ 0xffff, /* c037 */ 0xffff, /* c038 */ 0xffff, /* c039 */ 0xffff, /* c03a */ 0xffff, /* c03b */ 0xffff, /* c03c */ 0xffff, /* c03d */ 0xffff, /* c03e */ 0xffff, /* c03f */ 0xffff, /* c040 */ 0xffff, /* c041 */ 0xffff, /* c042 */ 0xffff, /* c043 */ 0xffff, /* c044 */ 0xffff, /* c045 */ 0xffff, /* c046 */ 0xffff, /* c047 */ 0xffff, /* c048 */ 0xffff, /* c049 */ 0xffff, /* c04a */ 0xffff, /* c04b */ 0xffff, /* c04c */ 0xffff, /* c04d */ 0xffff, /* c04e */ 0xffff, /* c04f */ 0xffff, /* c050 */ 0xffff, /* c051 */ 0xffff, /* c052 */ 0xffff, /* c053 */ 0xffff, /* c054 */ 0xffff, /* c055 */ 0xffff, /* c056 */ 0xffff, /* c057 */ 0xffff, /* c058 */ 0xffff, /* c059 */ 0xffff, /* c05a */ 0xffff, /* c05b */ 0xffff, /* c05c */ 0xffff, /* c05d */ 0xffff, /* c05e */ 0xffff, /* c05f */ 0xffff, /* c060 */ 0xffff, /* c061 */ 0xffff, /* c062 */ 0xffff, /* c063 */ 0xffff, /* c064 */ 0xffff, /* c065 */ 0xffff, /* c066 */ 0xffff, /* c067 */ 0xffff, /* c068 */ 0xffff, /* c069 */ 0xffff, /* c06a */ 0xffff, /* c06b */ 0xffff, /* c06c */ 0xffff, /* c06d */ 0xffff, /* c06e */ 0xffff, /* c06f */ 0xffff, /* c070 */ 0xffff, /* c071 */ 0xffff, /* c072 */ 0xffff, /* c073 */ 0xffff, /* c074 */ 0xffff, /* c075 */ 0xffff, /* c076 */ 0xffff, /* c077 */ 0xffff, /* c078 */ 0xffff, /* c079 */ 0xffff, /* c07a */ 0xffff, /* c07b */ 0xffff, /* c07c */ 0xffff, /* c07d */ 0xffff, /* c07e */ 0xffff, /* c07f */ 0xffff, /* c080 */ 0xffff, /* c081 */ 0xffff, /* c082 */ 0xffff, /* c083 */ 0xffff, /* c084 */ 0xffff, /* c085 */ 0xffff, /* c086 */ 0xffff, /* c087 */ 0xffff, /* c088 */ 0xffff, /* c089 */ 0xffff, /* c08a */ 0xffff, /* c08b */ 0xffff, /* c08c */ 0xffff, /* c08d */ 0xffff, /* c08e */ 0xffff, /* c08f */ 0xffff, /* c090 */ 0xffff, /* c091 */ 0xffff, /* c092 */ 0xffff, /* c093 */ 0xffff, /* c094 */ 0xffff, /* c095 */ 0xffff, /* c096 */ 0xffff, /* c097 */ 0xffff, /* c098 */ 0xffff, /* c099 */ 0xffff, /* c09a */ 0xffff, /* c09b */ 0xffff, /* c09c */ 0xffff, /* c09d */ 0xffff, /* c09e */ 0xffff, /* c09f */ 0xffff, /* c0a0 */ 0xffff, /* c0a1 */ 0xffff, /* c0a2 */ 0xffff, /* c0a3 */ 0xffff, /* c0a4 */ 0xffff, /* c0a5 */ 0xffff, /* c0a6 */ 0xffff, /* c0a7 */ 0xffff, /* c0a8 */ 0xffff, /* c0a9 */ 0xffff, /* c0aa */ 0xffff, /* c0ab */ 0xffff, /* c0ac */ 0xffff, /* c0ad */ 0xffff, /* c0ae */ 0xffff, /* c0af */ 0xffff, /* c0b0 */ 0xffff, /* c0b1 */ 0xffff, /* c0b2 */ 0xffff, /* c0b3 */ 0xffff, /* c0b4 */ 0xffff, /* c0b5 */ 0xffff, /* c0b6 */ 0xffff, /* c0b7 */ 0xffff, /* c0b8 */ 0xffff, /* c0b9 */ 0xffff, /* c0ba */ 0xffff, /* c0bb */ 0xffff, /* c0bc */ 0xffff, /* c0bd */ 0xffff, /* c0be */ 0xffff, /* c0bf */ 0xffff, /* c0c0 */ 0xffff, /* c0c1 */ 0xffff, /* c0c2 */ 0xffff, /* c0c3 */ 0xffff, /* c0c4 */ 0xffff, /* c0c5 */ 0xffff, /* c0c6 */ 0xffff, /* c0c7 */ 0xffff, /* c0c8 */ 0xffff, /* c0c9 */ 0xffff, /* c0ca */ 0xffff, /* c0cb */ 0xffff, /* c0cc */ 0xffff, /* c0cd */ 0xffff, /* c0ce */ 0xffff, /* c0cf */ 0xffff, /* c0d0 */ 0xffff, /* c0d1 */ 0xffff, /* c0d2 */ 0xffff, /* c0d3 */ 0xffff, /* c0d4 */ 0xffff, /* c0d5 */ 0xffff, /* c0d6 */ 0xffff, /* c0d7 */ 0xffff, /* c0d8 */ 0xffff, /* c0d9 */ 0xffff, /* c0da */ 0xffff, /* c0db */ 0xffff, /* c0dc */ 0xffff, /* c0dd */ 0xffff, /* c0de */ 0xffff, /* c0df */ 0xffff, /* c0e0 */ 0xffff, /* c0e1 */ 0xffff, /* c0e2 */ 0xffff, /* c0e3 */ 0xffff, /* c0e4 */ 0xffff, /* c0e5 */ 0xffff, /* c0e6 */ 0xffff, /* c0e7 */ 0xffff, /* c0e8 */ 0xffff, /* c0e9 */ 0xffff, /* c0ea */ 0xffff, /* c0eb */ 0xffff, /* c0ec */ 0xffff, /* c0ed */ 0xffff, /* c0ee */ 0xffff, /* c0ef */ 0xffff, /* c0f0 */ 0xffff, /* c0f1 */ 0xffff, /* c0f2 */ 0xffff, /* c0f3 */ 0xffff, /* c0f4 */ 0xffff, /* c0f5 */ 0xffff, /* c0f6 */ 0xffff, /* c0f7 */ 0xffff, /* c0f8 */ 0xffff, /* c0f9 */ 0xffff, /* c0fa */ 0xffff, /* c0fb */ 0xffff, /* c0fc */ 0xffff, /* c0fd */ 0xffff, /* c0fe */ 0xffff, /* c0ff */ 0xffff, /* c100 */ 0xffff, /* c101 */ 0xffff, /* c102 */ 0xffff, /* c103 */ 0xffff, /* c104 */ 0xffff, /* c105 */ 0xffff, /* c106 */ 0xffff, /* c107 */ 0xffff, /* c108 */ 0xffff, /* c109 */ 0xffff, /* c10a */ 0xffff, /* c10b */ 0xffff, /* c10c */ 0xffff, /* c10d */ 0xffff, /* c10e */ 0xffff, /* c10f */ 0xffff, /* c110 */ 0xffff, /* c111 */ 0xffff, /* c112 */ 0xffff, /* c113 */ 0xffff, /* c114 */ 0xffff, /* c115 */ 0xffff, /* c116 */ 0xffff, /* c117 */ 0xffff, /* c118 */ 0xffff, /* c119 */ 0xffff, /* c11a */ 0xffff, /* c11b */ 0xffff, /* c11c */ 0xffff, /* c11d */ 0xffff, /* c11e */ 0xffff, /* c11f */ 0xffff, /* c120 */ 0xffff, /* c121 */ 0xffff, /* c122 */ 0xffff, /* c123 */ 0xffff, /* c124 */ 0xffff, /* c125 */ 0xffff, /* c126 */ 0xffff, /* c127 */ 0xffff, /* c128 */ 0xffff, /* c129 */ 0xffff, /* c12a */ 0xffff, /* c12b */ 0xffff, /* c12c */ 0xffff, /* c12d */ 0xffff, /* c12e */ 0xffff, /* c12f */ 0xffff, /* c130 */ 0xffff, /* c131 */ 0xffff, /* c132 */ 0xffff, /* c133 */ 0xffff, /* c134 */ 0xffff, /* c135 */ 0xffff, /* c136 */ 0xffff, /* c137 */ 0xffff, /* c138 */ 0xffff, /* c139 */ 0xffff, /* c13a */ 0xffff, /* c13b */ 0xffff, /* c13c */ 0xffff, /* c13d */ 0xffff, /* c13e */ 0xffff, /* c13f */ 0xffff, /* c140 */ 0xffff, /* c141 */ 0xffff, /* c142 */ 0xffff, /* c143 */ 0xffff, /* c144 */ 0xffff, /* c145 */ 0xffff, /* c146 */ 0xffff, /* c147 */ 0xffff, /* c148 */ 0xffff, /* c149 */ 0xffff, /* c14a */ 0xffff, /* c14b */ 0xffff, /* c14c */ 0xffff, /* c14d */ 0xffff, /* c14e */ 0xffff, /* c14f */ 0xffff, /* c150 */ 0xffff, /* c151 */ 0xffff, /* c152 */ 0xffff, /* c153 */ 0xffff, /* c154 */ 0xffff, /* c155 */ 0xffff, /* c156 */ 0xffff, /* c157 */ 0xffff, /* c158 */ 0xffff, /* c159 */ 0xffff, /* c15a */ 0xffff, /* c15b */ 0xffff, /* c15c */ 0xffff, /* c15d */ 0xffff, /* c15e */ 0xffff, /* c15f */ 0xffff, /* c160 */ 0xffff, /* c161 */ 0xffff, /* c162 */ 0xffff, /* c163 */ 0xffff, /* c164 */ 0xffff, /* c165 */ 0xffff, /* c166 */ 0xffff, /* c167 */ 0xffff, /* c168 */ 0xffff, /* c169 */ 0xffff, /* c16a */ 0xffff, /* c16b */ 0xffff, /* c16c */ 0xffff, /* c16d */ 0xffff, /* c16e */ 0xffff, /* c16f */ 0xffff, /* c170 */ 0xffff, /* c171 */ 0xffff, /* c172 */ 0xffff, /* c173 */ 0xffff, /* c174 */ 0xffff, /* c175 */ 0xffff, /* c176 */ 0xffff, /* c177 */ 0xffff, /* c178 */ 0xffff, /* c179 */ 0xffff, /* c17a */ 0xffff, /* c17b */ 0xffff, /* c17c */ 0xffff, /* c17d */ 0xffff, /* c17e */ 0xffff, /* c17f */ 0xffff, /* c180 */ 0xffff, /* c181 */ 0xffff, /* c182 */ 0xffff, /* c183 */ 0xffff, /* c184 */ 0xffff, /* c185 */ 0xffff, /* c186 */ 0xffff, /* c187 */ 0xffff, /* c188 */ 0xffff, /* c189 */ 0xffff, /* c18a */ 0xffff, /* c18b */ 0xffff, /* c18c */ 0xffff, /* c18d */ 0xffff, /* c18e */ 0xffff, /* c18f */ 0xffff, /* c190 */ 0xffff, /* c191 */ 0xffff, /* c192 */ 0xffff, /* c193 */ 0xffff, /* c194 */ 0xffff, /* c195 */ 0xffff, /* c196 */ 0xffff, /* c197 */ 0xffff, /* c198 */ 0xffff, /* c199 */ 0xffff, /* c19a */ 0xffff, /* c19b */ 0xffff, /* c19c */ 0xffff, /* c19d */ 0xffff, /* c19e */ 0xffff, /* c19f */ 0xffff, /* c1a0 */ 0xffff, /* c1a1 */ 0xffff, /* c1a2 */ 0xffff, /* c1a3 */ 0xffff, /* c1a4 */ 0xffff, /* c1a5 */ 0xffff, /* c1a6 */ 0xffff, /* c1a7 */ 0xffff, /* c1a8 */ 0xffff, /* c1a9 */ 0xffff, /* c1aa */ 0xffff, /* c1ab */ 0xffff, /* c1ac */ 0xffff, /* c1ad */ 0xffff, /* c1ae */ 0xffff, /* c1af */ 0xffff, /* c1b0 */ 0xffff, /* c1b1 */ 0xffff, /* c1b2 */ 0xffff, /* c1b3 */ 0xffff, /* c1b4 */ 0xffff, /* c1b5 */ 0xffff, /* c1b6 */ 0xffff, /* c1b7 */ 0xffff, /* c1b8 */ 0xffff, /* c1b9 */ 0xffff, /* c1ba */ 0xffff, /* c1bb */ 0xffff, /* c1bc */ 0xffff, /* c1bd */ 0xffff, /* c1be */ 0xffff, /* c1bf */ 0xffff, /* c1c0 */ 0xffff, /* c1c1 */ 0xffff, /* c1c2 */ 0xffff, /* c1c3 */ 0xffff, /* c1c4 */ 0xffff, /* c1c5 */ 0xffff, /* c1c6 */ 0xffff, /* c1c7 */ 0xffff, /* c1c8 */ 0xffff, /* c1c9 */ 0xffff, /* c1ca */ 0xffff, /* c1cb */ 0xffff, /* c1cc */ 0xffff, /* c1cd */ 0xffff, /* c1ce */ 0xffff, /* c1cf */ 0xffff, /* c1d0 */ 0xffff, /* c1d1 */ 0xffff, /* c1d2 */ 0xffff, /* c1d3 */ 0xffff, /* c1d4 */ 0xffff, /* c1d5 */ 0xffff, /* c1d6 */ 0xffff, /* c1d7 */ 0xffff, /* c1d8 */ 0xffff, /* c1d9 */ 0xffff, /* c1da */ 0xffff, /* c1db */ 0xffff, /* c1dc */ 0xffff, /* c1dd */ 0xffff, /* c1de */ 0xffff, /* c1df */ 0xffff, /* c1e0 */ 0xffff, /* c1e1 */ 0xffff, /* c1e2 */ 0xffff, /* c1e3 */ 0xffff, /* c1e4 */ 0xffff, /* c1e5 */ 0xffff, /* c1e6 */ 0xffff, /* c1e7 */ 0xffff, /* c1e8 */ 0xffff, /* c1e9 */ 0xffff, /* c1ea */ 0xffff, /* c1eb */ 0xffff, /* c1ec */ 0xffff, /* c1ed */ 0xffff, /* c1ee */ 0xffff, /* c1ef */ 0xffff, /* c1f0 */ 0xffff, /* c1f1 */ 0xffff, /* c1f2 */ 0xffff, /* c1f3 */ 0xffff, /* c1f4 */ 0xffff, /* c1f5 */ 0xffff, /* c1f6 */ 0xffff, /* c1f7 */ 0xffff, /* c1f8 */ 0xffff, /* c1f9 */ 0xffff, /* c1fa */ 0xffff, /* c1fb */ 0xffff, /* c1fc */ 0xffff, /* c1fd */ 0xffff, /* c1fe */ 0xffff, /* c1ff */ 0xffff, /* c200 */ 0xffff, /* c201 */ 0xffff, /* c202 */ 0xffff, /* c203 */ 0xffff, /* c204 */ 0xffff, /* c205 */ 0xffff, /* c206 */ 0xffff, /* c207 */ 0xffff, /* c208 */ 0xffff, /* c209 */ 0xffff, /* c20a */ 0xffff, /* c20b */ 0xffff, /* c20c */ 0xffff, /* c20d */ 0xffff, /* c20e */ 0xffff, /* c20f */ 0xffff, /* c210 */ 0xffff, /* c211 */ 0xffff, /* c212 */ 0xffff, /* c213 */ 0xffff, /* c214 */ 0xffff, /* c215 */ 0xffff, /* c216 */ 0xffff, /* c217 */ 0xffff, /* c218 */ 0xffff, /* c219 */ 0xffff, /* c21a */ 0xffff, /* c21b */ 0xffff, /* c21c */ 0xffff, /* c21d */ 0xffff, /* c21e */ 0xffff, /* c21f */ 0xffff, /* c220 */ 0xffff, /* c221 */ 0xffff, /* c222 */ 0xffff, /* c223 */ 0xffff, /* c224 */ 0xffff, /* c225 */ 0xffff, /* c226 */ 0xffff, /* c227 */ 0xffff, /* c228 */ 0xffff, /* c229 */ 0xffff, /* c22a */ 0xffff, /* c22b */ 0xffff, /* c22c */ 0xffff, /* c22d */ 0xffff, /* c22e */ 0xffff, /* c22f */ 0xffff, /* c230 */ 0xffff, /* c231 */ 0xffff, /* c232 */ 0xffff, /* c233 */ 0xffff, /* c234 */ 0xffff, /* c235 */ 0xffff, /* c236 */ 0xffff, /* c237 */ 0xffff, /* c238 */ 0xffff, /* c239 */ 0xffff, /* c23a */ 0xffff, /* c23b */ 0xffff, /* c23c */ 0xffff, /* c23d */ 0xffff, /* c23e */ 0xffff, /* c23f */ 0xffff, /* c240 */ 0xffff, /* c241 */ 0xffff, /* c242 */ 0xffff, /* c243 */ 0xffff, /* c244 */ 0xffff, /* c245 */ 0xffff, /* c246 */ 0xffff, /* c247 */ 0xffff, /* c248 */ 0xffff, /* c249 */ 0xffff, /* c24a */ 0xffff, /* c24b */ 0xffff, /* c24c */ 0xffff, /* c24d */ 0xffff, /* c24e */ 0xffff, /* c24f */ 0xffff, /* c250 */ 0xffff, /* c251 */ 0xffff, /* c252 */ 0xffff, /* c253 */ 0xffff, /* c254 */ 0xffff, /* c255 */ 0xffff, /* c256 */ 0xffff, /* c257 */ 0xffff, /* c258 */ 0xffff, /* c259 */ 0xffff, /* c25a */ 0xffff, /* c25b */ 0xffff, /* c25c */ 0xffff, /* c25d */ 0xffff, /* c25e */ 0xffff, /* c25f */ 0xffff, /* c260 */ 0xffff, /* c261 */ 0xffff, /* c262 */ 0xffff, /* c263 */ 0xffff, /* c264 */ 0xffff, /* c265 */ 0xffff, /* c266 */ 0xffff, /* c267 */ 0xffff, /* c268 */ 0xffff, /* c269 */ 0xffff, /* c26a */ 0xffff, /* c26b */ 0xffff, /* c26c */ 0xffff, /* c26d */ 0xffff, /* c26e */ 0xffff, /* c26f */ 0xffff, /* c270 */ 0xffff, /* c271 */ 0xffff, /* c272 */ 0xffff, /* c273 */ 0xffff, /* c274 */ 0xffff, /* c275 */ 0xffff, /* c276 */ 0xffff, /* c277 */ 0xffff, /* c278 */ 0xffff, /* c279 */ 0xffff, /* c27a */ 0xffff, /* c27b */ 0xffff, /* c27c */ 0xffff, /* c27d */ 0xffff, /* c27e */ 0xffff, /* c27f */ 0xffff, /* c280 */ 0xffff, /* c281 */ 0xffff, /* c282 */ 0xffff, /* c283 */ 0xffff, /* c284 */ 0xffff, /* c285 */ 0xffff, /* c286 */ 0xffff, /* c287 */ 0xffff, /* c288 */ 0xffff, /* c289 */ 0xffff, /* c28a */ 0xffff, /* c28b */ 0xffff, /* c28c */ 0xffff, /* c28d */ 0xffff, /* c28e */ 0xffff, /* c28f */ 0xffff, /* c290 */ 0xffff, /* c291 */ 0xffff, /* c292 */ 0xffff, /* c293 */ 0xffff, /* c294 */ 0xffff, /* c295 */ 0xffff, /* c296 */ 0xffff, /* c297 */ 0xffff, /* c298 */ 0xffff, /* c299 */ 0xffff, /* c29a */ 0xffff, /* c29b */ 0xffff, /* c29c */ 0xffff, /* c29d */ 0xffff, /* c29e */ 0xffff, /* c29f */ 0xffff, /* c2a0 */ 0xffff, /* c2a1 */ 0xffff, /* c2a2 */ 0xffff, /* c2a3 */ 0xffff, /* c2a4 */ 0xffff, /* c2a5 */ 0xffff, /* c2a6 */ 0xffff, /* c2a7 */ 0xffff, /* c2a8 */ 0xffff, /* c2a9 */ 0xffff, /* c2aa */ 0xffff, /* c2ab */ 0xffff, /* c2ac */ 0xffff, /* c2ad */ 0xffff, /* c2ae */ 0xffff, /* c2af */ 0xffff, /* c2b0 */ 0xffff, /* c2b1 */ 0xffff, /* c2b2 */ 0xffff, /* c2b3 */ 0xffff, /* c2b4 */ 0xffff, /* c2b5 */ 0xffff, /* c2b6 */ 0xffff, /* c2b7 */ 0xffff, /* c2b8 */ 0xffff, /* c2b9 */ 0xffff, /* c2ba */ 0xffff, /* c2bb */ 0xffff, /* c2bc */ 0xffff, /* c2bd */ 0xffff, /* c2be */ 0xffff, /* c2bf */ 0xffff, /* c2c0 */ 0xffff, /* c2c1 */ 0xffff, /* c2c2 */ 0xffff, /* c2c3 */ 0xffff, /* c2c4 */ 0xffff, /* c2c5 */ 0xffff, /* c2c6 */ 0xffff, /* c2c7 */ 0xffff, /* c2c8 */ 0xffff, /* c2c9 */ 0xffff, /* c2ca */ 0xffff, /* c2cb */ 0xffff, /* c2cc */ 0xffff, /* c2cd */ 0xffff, /* c2ce */ 0xffff, /* c2cf */ 0xffff, /* c2d0 */ 0xffff, /* c2d1 */ 0xffff, /* c2d2 */ 0xffff, /* c2d3 */ 0xffff, /* c2d4 */ 0xffff, /* c2d5 */ 0xffff, /* c2d6 */ 0xffff, /* c2d7 */ 0xffff, /* c2d8 */ 0xffff, /* c2d9 */ 0xffff, /* c2da */ 0xffff, /* c2db */ 0xffff, /* c2dc */ 0xffff, /* c2dd */ 0xffff, /* c2de */ 0xffff, /* c2df */ 0xffff, /* c2e0 */ 0xffff, /* c2e1 */ 0xffff, /* c2e2 */ 0xffff, /* c2e3 */ 0xffff, /* c2e4 */ 0xffff, /* c2e5 */ 0xffff, /* c2e6 */ 0xffff, /* c2e7 */ 0xffff, /* c2e8 */ 0xffff, /* c2e9 */ 0xffff, /* c2ea */ 0xffff, /* c2eb */ 0xffff, /* c2ec */ 0xffff, /* c2ed */ 0xffff, /* c2ee */ 0xffff, /* c2ef */ 0xffff, /* c2f0 */ 0xffff, /* c2f1 */ 0xffff, /* c2f2 */ 0xffff, /* c2f3 */ 0xffff, /* c2f4 */ 0xffff, /* c2f5 */ 0xffff, /* c2f6 */ 0xffff, /* c2f7 */ 0xffff, /* c2f8 */ 0xffff, /* c2f9 */ 0xffff, /* c2fa */ 0xffff, /* c2fb */ 0xffff, /* c2fc */ 0xffff, /* c2fd */ 0xffff, /* c2fe */ 0xffff, /* c2ff */ 0xffff, /* c300 */ 0xffff, /* c301 */ 0xffff, /* c302 */ 0xffff, /* c303 */ 0xffff, /* c304 */ 0xffff, /* c305 */ 0xffff, /* c306 */ 0xffff, /* c307 */ 0xffff, /* c308 */ 0xffff, /* c309 */ 0xffff, /* c30a */ 0xffff, /* c30b */ 0xffff, /* c30c */ 0xffff, /* c30d */ 0xffff, /* c30e */ 0xffff, /* c30f */ 0xffff, /* c310 */ 0xffff, /* c311 */ 0xffff, /* c312 */ 0xffff, /* c313 */ 0xffff, /* c314 */ 0xffff, /* c315 */ 0xffff, /* c316 */ 0xffff, /* c317 */ 0xffff, /* c318 */ 0xffff, /* c319 */ 0xffff, /* c31a */ 0xffff, /* c31b */ 0xffff, /* c31c */ 0xffff, /* c31d */ 0xffff, /* c31e */ 0xffff, /* c31f */ 0xffff, /* c320 */ 0xffff, /* c321 */ 0xffff, /* c322 */ 0xffff, /* c323 */ 0xffff, /* c324 */ 0xffff, /* c325 */ 0xffff, /* c326 */ 0xffff, /* c327 */ 0xffff, /* c328 */ 0xffff, /* c329 */ 0xffff, /* c32a */ 0xffff, /* c32b */ 0xffff, /* c32c */ 0xffff, /* c32d */ 0xffff, /* c32e */ 0xffff, /* c32f */ 0xffff, /* c330 */ 0xffff, /* c331 */ 0xffff, /* c332 */ 0xffff, /* c333 */ 0xffff, /* c334 */ 0xffff, /* c335 */ 0xffff, /* c336 */ 0xffff, /* c337 */ 0xffff, /* c338 */ 0xffff, /* c339 */ 0xffff, /* c33a */ 0xffff, /* c33b */ 0xffff, /* c33c */ 0xffff, /* c33d */ 0xffff, /* c33e */ 0xffff, /* c33f */ 0xffff, /* c340 */ 0xffff, /* c341 */ 0xffff, /* c342 */ 0xffff, /* c343 */ 0xffff, /* c344 */ 0xffff, /* c345 */ 0xffff, /* c346 */ 0xffff, /* c347 */ 0xffff, /* c348 */ 0xffff, /* c349 */ 0xffff, /* c34a */ 0xffff, /* c34b */ 0xffff, /* c34c */ 0xffff, /* c34d */ 0xffff, /* c34e */ 0xffff, /* c34f */ 0xffff, /* c350 */ 0xffff, /* c351 */ 0xffff, /* c352 */ 0xffff, /* c353 */ 0xffff, /* c354 */ 0xffff, /* c355 */ 0xffff, /* c356 */ 0xffff, /* c357 */ 0xffff, /* c358 */ 0xffff, /* c359 */ 0xffff, /* c35a */ 0xffff, /* c35b */ 0xffff, /* c35c */ 0xffff, /* c35d */ 0xffff, /* c35e */ 0xffff, /* c35f */ 0xffff, /* c360 */ 0xffff, /* c361 */ 0xffff, /* c362 */ 0xffff, /* c363 */ 0xffff, /* c364 */ 0xffff, /* c365 */ 0xffff, /* c366 */ 0xffff, /* c367 */ 0xffff, /* c368 */ 0xffff, /* c369 */ 0xffff, /* c36a */ 0xffff, /* c36b */ 0xffff, /* c36c */ 0xffff, /* c36d */ 0xffff, /* c36e */ 0xffff, /* c36f */ 0xffff, /* c370 */ 0xffff, /* c371 */ 0xffff, /* c372 */ 0xffff, /* c373 */ 0xffff, /* c374 */ 0xffff, /* c375 */ 0xffff, /* c376 */ 0xffff, /* c377 */ 0xffff, /* c378 */ 0xffff, /* c379 */ 0xffff, /* c37a */ 0xffff, /* c37b */ 0xffff, /* c37c */ 0xffff, /* c37d */ 0xffff, /* c37e */ 0xffff, /* c37f */ 0xffff, /* c380 */ 0xffff, /* c381 */ 0xffff, /* c382 */ 0xffff, /* c383 */ 0xffff, /* c384 */ 0xffff, /* c385 */ 0xffff, /* c386 */ 0xffff, /* c387 */ 0xffff, /* c388 */ 0xffff, /* c389 */ 0xffff, /* c38a */ 0xffff, /* c38b */ 0xffff, /* c38c */ 0xffff, /* c38d */ 0xffff, /* c38e */ 0xffff, /* c38f */ 0xffff, /* c390 */ 0xffff, /* c391 */ 0xffff, /* c392 */ 0xffff, /* c393 */ 0xffff, /* c394 */ 0xffff, /* c395 */ 0xffff, /* c396 */ 0xffff, /* c397 */ 0xffff, /* c398 */ 0xffff, /* c399 */ 0xffff, /* c39a */ 0xffff, /* c39b */ 0xffff, /* c39c */ 0xffff, /* c39d */ 0xffff, /* c39e */ 0xffff, /* c39f */ 0xffff, /* c3a0 */ 0xffff, /* c3a1 */ 0xffff, /* c3a2 */ 0xffff, /* c3a3 */ 0xffff, /* c3a4 */ 0xffff, /* c3a5 */ 0xffff, /* c3a6 */ 0xffff, /* c3a7 */ 0xffff, /* c3a8 */ 0xffff, /* c3a9 */ 0xffff, /* c3aa */ 0xffff, /* c3ab */ 0xffff, /* c3ac */ 0xffff, /* c3ad */ 0xffff, /* c3ae */ 0xffff, /* c3af */ 0xffff, /* c3b0 */ 0xffff, /* c3b1 */ 0xffff, /* c3b2 */ 0xffff, /* c3b3 */ 0xffff, /* c3b4 */ 0xffff, /* c3b5 */ 0xffff, /* c3b6 */ 0xffff, /* c3b7 */ 0xffff, /* c3b8 */ 0xffff, /* c3b9 */ 0xffff, /* c3ba */ 0xffff, /* c3bb */ 0xffff, /* c3bc */ 0xffff, /* c3bd */ 0xffff, /* c3be */ 0xffff, /* c3bf */ 0xffff, /* c3c0 */ 0xffff, /* c3c1 */ 0xffff, /* c3c2 */ 0xffff, /* c3c3 */ 0xffff, /* c3c4 */ 0xffff, /* c3c5 */ 0xffff, /* c3c6 */ 0xffff, /* c3c7 */ 0xffff, /* c3c8 */ 0xffff, /* c3c9 */ 0xffff, /* c3ca */ 0xffff, /* c3cb */ 0xffff, /* c3cc */ 0xffff, /* c3cd */ 0xffff, /* c3ce */ 0xffff, /* c3cf */ 0xffff, /* c3d0 */ 0xffff, /* c3d1 */ 0xffff, /* c3d2 */ 0xffff, /* c3d3 */ 0xffff, /* c3d4 */ 0xffff, /* c3d5 */ 0xffff, /* c3d6 */ 0xffff, /* c3d7 */ 0xffff, /* c3d8 */ 0xffff, /* c3d9 */ 0xffff, /* c3da */ 0xffff, /* c3db */ 0xffff, /* c3dc */ 0xffff, /* c3dd */ 0xffff, /* c3de */ 0xffff, /* c3df */ 0xffff, /* c3e0 */ 0xffff, /* c3e1 */ 0xffff, /* c3e2 */ 0xffff, /* c3e3 */ 0xffff, /* c3e4 */ 0xffff, /* c3e5 */ 0xffff, /* c3e6 */ 0xffff, /* c3e7 */ 0xffff, /* c3e8 */ 0xffff, /* c3e9 */ 0xffff, /* c3ea */ 0xffff, /* c3eb */ 0xffff, /* c3ec */ 0xffff, /* c3ed */ 0xffff, /* c3ee */ 0xffff, /* c3ef */ 0xffff, /* c3f0 */ 0xffff, /* c3f1 */ 0xffff, /* c3f2 */ 0xffff, /* c3f3 */ 0xffff, /* c3f4 */ 0xffff, /* c3f5 */ 0xffff, /* c3f6 */ 0xffff, /* c3f7 */ 0xffff, /* c3f8 */ 0xffff, /* c3f9 */ 0xffff, /* c3fa */ 0xffff, /* c3fb */ 0xffff, /* c3fc */ 0xffff, /* c3fd */ 0xffff, /* c3fe */ 0xffff, /* c3ff */ 0xffff, /* c400 */ 0xffff, /* c401 */ 0xffff, /* c402 */ 0xffff, /* c403 */ 0xffff, /* c404 */ 0xffff, /* c405 */ 0xffff, /* c406 */ 0xffff, /* c407 */ 0xffff, /* c408 */ 0xffff, /* c409 */ 0xffff, /* c40a */ 0xffff, /* c40b */ 0xffff, /* c40c */ 0xffff, /* c40d */ 0xffff, /* c40e */ 0xffff, /* c40f */ 0xffff, /* c410 */ 0xffff, /* c411 */ 0xffff, /* c412 */ 0xffff, /* c413 */ 0xffff, /* c414 */ 0xffff, /* c415 */ 0xffff, /* c416 */ 0xffff, /* c417 */ 0xffff, /* c418 */ 0xffff, /* c419 */ 0xffff, /* c41a */ 0xffff, /* c41b */ 0xffff, /* c41c */ 0xffff, /* c41d */ 0xffff, /* c41e */ 0xffff, /* c41f */ 0xffff, /* c420 */ 0xffff, /* c421 */ 0xffff, /* c422 */ 0xffff, /* c423 */ 0xffff, /* c424 */ 0xffff, /* c425 */ 0xffff, /* c426 */ 0xffff, /* c427 */ 0xffff, /* c428 */ 0xffff, /* c429 */ 0xffff, /* c42a */ 0xffff, /* c42b */ 0xffff, /* c42c */ 0xffff, /* c42d */ 0xffff, /* c42e */ 0xffff, /* c42f */ 0xffff, /* c430 */ 0xffff, /* c431 */ 0xffff, /* c432 */ 0xffff, /* c433 */ 0xffff, /* c434 */ 0xffff, /* c435 */ 0xffff, /* c436 */ 0xffff, /* c437 */ 0xffff, /* c438 */ 0xffff, /* c439 */ 0xffff, /* c43a */ 0xffff, /* c43b */ 0xffff, /* c43c */ 0xffff, /* c43d */ 0xffff, /* c43e */ 0xffff, /* c43f */ 0xffff, /* c440 */ 0xffff, /* c441 */ 0xffff, /* c442 */ 0xffff, /* c443 */ 0xffff, /* c444 */ 0xffff, /* c445 */ 0xffff, /* c446 */ 0xffff, /* c447 */ 0xffff, /* c448 */ 0xffff, /* c449 */ 0xffff, /* c44a */ 0xffff, /* c44b */ 0xffff, /* c44c */ 0xffff, /* c44d */ 0xffff, /* c44e */ 0xffff, /* c44f */ 0xffff, /* c450 */ 0xffff, /* c451 */ 0xffff, /* c452 */ 0xffff, /* c453 */ 0xffff, /* c454 */ 0xffff, /* c455 */ 0xffff, /* c456 */ 0xffff, /* c457 */ 0xffff, /* c458 */ 0xffff, /* c459 */ 0xffff, /* c45a */ 0xffff, /* c45b */ 0xffff, /* c45c */ 0xffff, /* c45d */ 0xffff, /* c45e */ 0xffff, /* c45f */ 0xffff, /* c460 */ 0xffff, /* c461 */ 0xffff, /* c462 */ 0xffff, /* c463 */ 0xffff, /* c464 */ 0xffff, /* c465 */ 0xffff, /* c466 */ 0xffff, /* c467 */ 0xffff, /* c468 */ 0xffff, /* c469 */ 0xffff, /* c46a */ 0xffff, /* c46b */ 0xffff, /* c46c */ 0xffff, /* c46d */ 0xffff, /* c46e */ 0xffff, /* c46f */ 0xffff, /* c470 */ 0xffff, /* c471 */ 0xffff, /* c472 */ 0xffff, /* c473 */ 0xffff, /* c474 */ 0xffff, /* c475 */ 0xffff, /* c476 */ 0xffff, /* c477 */ 0xffff, /* c478 */ 0xffff, /* c479 */ 0xffff, /* c47a */ 0xffff, /* c47b */ 0xffff, /* c47c */ 0xffff, /* c47d */ 0xffff, /* c47e */ 0xffff, /* c47f */ 0xffff, /* c480 */ 0xffff, /* c481 */ 0xffff, /* c482 */ 0xffff, /* c483 */ 0xffff, /* c484 */ 0xffff, /* c485 */ 0xffff, /* c486 */ 0xffff, /* c487 */ 0xffff, /* c488 */ 0xffff, /* c489 */ 0xffff, /* c48a */ 0xffff, /* c48b */ 0xffff, /* c48c */ 0xffff, /* c48d */ 0xffff, /* c48e */ 0xffff, /* c48f */ 0xffff, /* c490 */ 0xffff, /* c491 */ 0xffff, /* c492 */ 0xffff, /* c493 */ 0xffff, /* c494 */ 0xffff, /* c495 */ 0xffff, /* c496 */ 0xffff, /* c497 */ 0xffff, /* c498 */ 0xffff, /* c499 */ 0xffff, /* c49a */ 0xffff, /* c49b */ 0xffff, /* c49c */ 0xffff, /* c49d */ 0xffff, /* c49e */ 0xffff, /* c49f */ 0xffff, /* c4a0 */ 0xffff, /* c4a1 */ 0xffff, /* c4a2 */ 0xffff, /* c4a3 */ 0xffff, /* c4a4 */ 0xffff, /* c4a5 */ 0xffff, /* c4a6 */ 0xffff, /* c4a7 */ 0xffff, /* c4a8 */ 0xffff, /* c4a9 */ 0xffff, /* c4aa */ 0xffff, /* c4ab */ 0xffff, /* c4ac */ 0xffff, /* c4ad */ 0xffff, /* c4ae */ 0xffff, /* c4af */ 0xffff, /* c4b0 */ 0xffff, /* c4b1 */ 0xffff, /* c4b2 */ 0xffff, /* c4b3 */ 0xffff, /* c4b4 */ 0xffff, /* c4b5 */ 0xffff, /* c4b6 */ 0xffff, /* c4b7 */ 0xffff, /* c4b8 */ 0xffff, /* c4b9 */ 0xffff, /* c4ba */ 0xffff, /* c4bb */ 0xffff, /* c4bc */ 0xffff, /* c4bd */ 0xffff, /* c4be */ 0xffff, /* c4bf */ 0xffff, /* c4c0 */ 0xffff, /* c4c1 */ 0xffff, /* c4c2 */ 0xffff, /* c4c3 */ 0xffff, /* c4c4 */ 0xffff, /* c4c5 */ 0xffff, /* c4c6 */ 0xffff, /* c4c7 */ 0xffff, /* c4c8 */ 0xffff, /* c4c9 */ 0xffff, /* c4ca */ 0xffff, /* c4cb */ 0xffff, /* c4cc */ 0xffff, /* c4cd */ 0xffff, /* c4ce */ 0xffff, /* c4cf */ 0xffff, /* c4d0 */ 0xffff, /* c4d1 */ 0xffff, /* c4d2 */ 0xffff, /* c4d3 */ 0xffff, /* c4d4 */ 0xffff, /* c4d5 */ 0xffff, /* c4d6 */ 0xffff, /* c4d7 */ 0xffff, /* c4d8 */ 0xffff, /* c4d9 */ 0xffff, /* c4da */ 0xffff, /* c4db */ 0xffff, /* c4dc */ 0xffff, /* c4dd */ 0xffff, /* c4de */ 0xffff, /* c4df */ 0xffff, /* c4e0 */ 0xffff, /* c4e1 */ 0xffff, /* c4e2 */ 0xffff, /* c4e3 */ 0xffff, /* c4e4 */ 0xffff, /* c4e5 */ 0xffff, /* c4e6 */ 0xffff, /* c4e7 */ 0xffff, /* c4e8 */ 0xffff, /* c4e9 */ 0xffff, /* c4ea */ 0xffff, /* c4eb */ 0xffff, /* c4ec */ 0xffff, /* c4ed */ 0xffff, /* c4ee */ 0xffff, /* c4ef */ 0xffff, /* c4f0 */ 0xffff, /* c4f1 */ 0xffff, /* c4f2 */ 0xffff, /* c4f3 */ 0xffff, /* c4f4 */ 0xffff, /* c4f5 */ 0xffff, /* c4f6 */ 0xffff, /* c4f7 */ 0xffff, /* c4f8 */ 0xffff, /* c4f9 */ 0xffff, /* c4fa */ 0xffff, /* c4fb */ 0xffff, /* c4fc */ 0xffff, /* c4fd */ 0xffff, /* c4fe */ 0xffff, /* c4ff */ 0xffff, /* c500 */ 0xffff, /* c501 */ 0xffff, /* c502 */ 0xffff, /* c503 */ 0xffff, /* c504 */ 0xffff, /* c505 */ 0xffff, /* c506 */ 0xffff, /* c507 */ 0xffff, /* c508 */ 0xffff, /* c509 */ 0xffff, /* c50a */ 0xffff, /* c50b */ 0xffff, /* c50c */ 0xffff, /* c50d */ 0xffff, /* c50e */ 0xffff, /* c50f */ 0xffff, /* c510 */ 0xffff, /* c511 */ 0xffff, /* c512 */ 0xffff, /* c513 */ 0xffff, /* c514 */ 0xffff, /* c515 */ 0xffff, /* c516 */ 0xffff, /* c517 */ 0xffff, /* c518 */ 0xffff, /* c519 */ 0xffff, /* c51a */ 0xffff, /* c51b */ 0xffff, /* c51c */ 0xffff, /* c51d */ 0xffff, /* c51e */ 0xffff, /* c51f */ 0xffff, /* c520 */ 0xffff, /* c521 */ 0xffff, /* c522 */ 0xffff, /* c523 */ 0xffff, /* c524 */ 0xffff, /* c525 */ 0xffff, /* c526 */ 0xffff, /* c527 */ 0xffff, /* c528 */ 0xffff, /* c529 */ 0xffff, /* c52a */ 0xffff, /* c52b */ 0xffff, /* c52c */ 0xffff, /* c52d */ 0xffff, /* c52e */ 0xffff, /* c52f */ 0xffff, /* c530 */ 0xffff, /* c531 */ 0xffff, /* c532 */ 0xffff, /* c533 */ 0xffff, /* c534 */ 0xffff, /* c535 */ 0xffff, /* c536 */ 0xffff, /* c537 */ 0xffff, /* c538 */ 0xffff, /* c539 */ 0xffff, /* c53a */ 0xffff, /* c53b */ 0xffff, /* c53c */ 0xffff, /* c53d */ 0xffff, /* c53e */ 0xffff, /* c53f */ 0xffff, /* c540 */ 0xffff, /* c541 */ 0xffff, /* c542 */ 0xffff, /* c543 */ 0xffff, /* c544 */ 0xffff, /* c545 */ 0xffff, /* c546 */ 0xffff, /* c547 */ 0xffff, /* c548 */ 0xffff, /* c549 */ 0xffff, /* c54a */ 0xffff, /* c54b */ 0xffff, /* c54c */ 0xffff, /* c54d */ 0xffff, /* c54e */ 0xffff, /* c54f */ 0xffff, /* c550 */ 0xffff, /* c551 */ 0xffff, /* c552 */ 0xffff, /* c553 */ 0xffff, /* c554 */ 0xffff, /* c555 */ 0xffff, /* c556 */ 0xffff, /* c557 */ 0xffff, /* c558 */ 0xffff, /* c559 */ 0xffff, /* c55a */ 0xffff, /* c55b */ 0xffff, /* c55c */ 0xffff, /* c55d */ 0xffff, /* c55e */ 0xffff, /* c55f */ 0xffff, /* c560 */ 0xffff, /* c561 */ 0xffff, /* c562 */ 0xffff, /* c563 */ 0xffff, /* c564 */ 0xffff, /* c565 */ 0xffff, /* c566 */ 0xffff, /* c567 */ 0xffff, /* c568 */ 0xffff, /* c569 */ 0xffff, /* c56a */ 0xffff, /* c56b */ 0xffff, /* c56c */ 0xffff, /* c56d */ 0xffff, /* c56e */ 0xffff, /* c56f */ 0xffff, /* c570 */ 0xffff, /* c571 */ 0xffff, /* c572 */ 0xffff, /* c573 */ 0xffff, /* c574 */ 0xffff, /* c575 */ 0xffff, /* c576 */ 0xffff, /* c577 */ 0xffff, /* c578 */ 0xffff, /* c579 */ 0xffff, /* c57a */ 0xffff, /* c57b */ 0xffff, /* c57c */ 0xffff, /* c57d */ 0xffff, /* c57e */ 0xffff, /* c57f */ 0xffff, /* c580 */ 0xffff, /* c581 */ 0xffff, /* c582 */ 0xffff, /* c583 */ 0xffff, /* c584 */ 0xffff, /* c585 */ 0xffff, /* c586 */ 0xffff, /* c587 */ 0xffff, /* c588 */ 0xffff, /* c589 */ 0xffff, /* c58a */ 0xffff, /* c58b */ 0xffff, /* c58c */ 0xffff, /* c58d */ 0xffff, /* c58e */ 0xffff, /* c58f */ 0xffff, /* c590 */ 0xffff, /* c591 */ 0xffff, /* c592 */ 0xffff, /* c593 */ 0xffff, /* c594 */ 0xffff, /* c595 */ 0xffff, /* c596 */ 0xffff, /* c597 */ 0xffff, /* c598 */ 0xffff, /* c599 */ 0xffff, /* c59a */ 0xffff, /* c59b */ 0xffff, /* c59c */ 0xffff, /* c59d */ 0xffff, /* c59e */ 0xffff, /* c59f */ 0xffff, /* c5a0 */ 0xffff, /* c5a1 */ 0xffff, /* c5a2 */ 0xffff, /* c5a3 */ 0xffff, /* c5a4 */ 0xffff, /* c5a5 */ 0xffff, /* c5a6 */ 0xffff, /* c5a7 */ 0xffff, /* c5a8 */ 0xffff, /* c5a9 */ 0xffff, /* c5aa */ 0xffff, /* c5ab */ 0xffff, /* c5ac */ 0xffff, /* c5ad */ 0xffff, /* c5ae */ 0xffff, /* c5af */ 0xffff, /* c5b0 */ 0xffff, /* c5b1 */ 0xffff, /* c5b2 */ 0xffff, /* c5b3 */ 0xffff, /* c5b4 */ 0xffff, /* c5b5 */ 0xffff, /* c5b6 */ 0xffff, /* c5b7 */ 0xffff, /* c5b8 */ 0xffff, /* c5b9 */ 0xffff, /* c5ba */ 0xffff, /* c5bb */ 0xffff, /* c5bc */ 0xffff, /* c5bd */ 0xffff, /* c5be */ 0xffff, /* c5bf */ 0xffff, /* c5c0 */ 0xffff, /* c5c1 */ 0xffff, /* c5c2 */ 0xffff, /* c5c3 */ 0xffff, /* c5c4 */ 0xffff, /* c5c5 */ 0xffff, /* c5c6 */ 0xffff, /* c5c7 */ 0xffff, /* c5c8 */ 0xffff, /* c5c9 */ 0xffff, /* c5ca */ 0xffff, /* c5cb */ 0xffff, /* c5cc */ 0xffff, /* c5cd */ 0xffff, /* c5ce */ 0xffff, /* c5cf */ 0xffff, /* c5d0 */ 0xffff, /* c5d1 */ 0xffff, /* c5d2 */ 0xffff, /* c5d3 */ 0xffff, /* c5d4 */ 0xffff, /* c5d5 */ 0xffff, /* c5d6 */ 0xffff, /* c5d7 */ 0xffff, /* c5d8 */ 0xffff, /* c5d9 */ 0xffff, /* c5da */ 0xffff, /* c5db */ 0xffff, /* c5dc */ 0xffff, /* c5dd */ 0xffff, /* c5de */ 0xffff, /* c5df */ 0xffff, /* c5e0 */ 0xffff, /* c5e1 */ 0xffff, /* c5e2 */ 0xffff, /* c5e3 */ 0xffff, /* c5e4 */ 0xffff, /* c5e5 */ 0xffff, /* c5e6 */ 0xffff, /* c5e7 */ 0xffff, /* c5e8 */ 0xffff, /* c5e9 */ 0xffff, /* c5ea */ 0xffff, /* c5eb */ 0xffff, /* c5ec */ 0xffff, /* c5ed */ 0xffff, /* c5ee */ 0xffff, /* c5ef */ 0xffff, /* c5f0 */ 0xffff, /* c5f1 */ 0xffff, /* c5f2 */ 0xffff, /* c5f3 */ 0xffff, /* c5f4 */ 0xffff, /* c5f5 */ 0xffff, /* c5f6 */ 0xffff, /* c5f7 */ 0xffff, /* c5f8 */ 0xffff, /* c5f9 */ 0xffff, /* c5fa */ 0xffff, /* c5fb */ 0xffff, /* c5fc */ 0xffff, /* c5fd */ 0xffff, /* c5fe */ 0xffff, /* c5ff */ 0xffff, /* c600 */ 0xffff, /* c601 */ 0xffff, /* c602 */ 0xffff, /* c603 */ 0xffff, /* c604 */ 0xffff, /* c605 */ 0xffff, /* c606 */ 0xffff, /* c607 */ 0xffff, /* c608 */ 0xffff, /* c609 */ 0xffff, /* c60a */ 0xffff, /* c60b */ 0xffff, /* c60c */ 0xffff, /* c60d */ 0xffff, /* c60e */ 0xffff, /* c60f */ 0xffff, /* c610 */ 0xffff, /* c611 */ 0xffff, /* c612 */ 0xffff, /* c613 */ 0xffff, /* c614 */ 0xffff, /* c615 */ 0xffff, /* c616 */ 0xffff, /* c617 */ 0xffff, /* c618 */ 0xffff, /* c619 */ 0xffff, /* c61a */ 0xffff, /* c61b */ 0xffff, /* c61c */ 0xffff, /* c61d */ 0xffff, /* c61e */ 0xffff, /* c61f */ 0xffff, /* c620 */ 0xffff, /* c621 */ 0xffff, /* c622 */ 0xffff, /* c623 */ 0xffff, /* c624 */ 0xffff, /* c625 */ 0xffff, /* c626 */ 0xffff, /* c627 */ 0xffff, /* c628 */ 0xffff, /* c629 */ 0xffff, /* c62a */ 0xffff, /* c62b */ 0xffff, /* c62c */ 0xffff, /* c62d */ 0xffff, /* c62e */ 0xffff, /* c62f */ 0xffff, /* c630 */ 0xffff, /* c631 */ 0xffff, /* c632 */ 0xffff, /* c633 */ 0xffff, /* c634 */ 0xffff, /* c635 */ 0xffff, /* c636 */ 0xffff, /* c637 */ 0xffff, /* c638 */ 0xffff, /* c639 */ 0xffff, /* c63a */ 0xffff, /* c63b */ 0xffff, /* c63c */ 0xffff, /* c63d */ 0xffff, /* c63e */ 0xffff, /* c63f */ 0xffff, /* c640 */ 0xffff, /* c641 */ 0xffff, /* c642 */ 0xffff, /* c643 */ 0xffff, /* c644 */ 0xffff, /* c645 */ 0xffff, /* c646 */ 0xffff, /* c647 */ 0xffff, /* c648 */ 0xffff, /* c649 */ 0xffff, /* c64a */ 0xffff, /* c64b */ 0xffff, /* c64c */ 0xffff, /* c64d */ 0xffff, /* c64e */ 0xffff, /* c64f */ 0xffff, /* c650 */ 0xffff, /* c651 */ 0xffff, /* c652 */ 0xffff, /* c653 */ 0xffff, /* c654 */ 0xffff, /* c655 */ 0xffff, /* c656 */ 0xffff, /* c657 */ 0xffff, /* c658 */ 0xffff, /* c659 */ 0xffff, /* c65a */ 0xffff, /* c65b */ 0xffff, /* c65c */ 0xffff, /* c65d */ 0xffff, /* c65e */ 0xffff, /* c65f */ 0xffff, /* c660 */ 0xffff, /* c661 */ 0xffff, /* c662 */ 0xffff, /* c663 */ 0xffff, /* c664 */ 0xffff, /* c665 */ 0xffff, /* c666 */ 0xffff, /* c667 */ 0xffff, /* c668 */ 0xffff, /* c669 */ 0xffff, /* c66a */ 0xffff, /* c66b */ 0xffff, /* c66c */ 0xffff, /* c66d */ 0xffff, /* c66e */ 0xffff, /* c66f */ 0xffff, /* c670 */ 0xffff, /* c671 */ 0xffff, /* c672 */ 0xffff, /* c673 */ 0xffff, /* c674 */ 0xffff, /* c675 */ 0xffff, /* c676 */ 0xffff, /* c677 */ 0xffff, /* c678 */ 0xffff, /* c679 */ 0xffff, /* c67a */ 0xffff, /* c67b */ 0xffff, /* c67c */ 0xffff, /* c67d */ 0xffff, /* c67e */ 0xffff, /* c67f */ 0xffff, /* c680 */ 0xffff, /* c681 */ 0xffff, /* c682 */ 0xffff, /* c683 */ 0xffff, /* c684 */ 0xffff, /* c685 */ 0xffff, /* c686 */ 0xffff, /* c687 */ 0xffff, /* c688 */ 0xffff, /* c689 */ 0xffff, /* c68a */ 0xffff, /* c68b */ 0xffff, /* c68c */ 0xffff, /* c68d */ 0xffff, /* c68e */ 0xffff, /* c68f */ 0xffff, /* c690 */ 0xffff, /* c691 */ 0xffff, /* c692 */ 0xffff, /* c693 */ 0xffff, /* c694 */ 0xffff, /* c695 */ 0xffff, /* c696 */ 0xffff, /* c697 */ 0xffff, /* c698 */ 0xffff, /* c699 */ 0xffff, /* c69a */ 0xffff, /* c69b */ 0xffff, /* c69c */ 0xffff, /* c69d */ 0xffff, /* c69e */ 0xffff, /* c69f */ 0xffff, /* c6a0 */ 0xffff, /* c6a1 */ 0xffff, /* c6a2 */ 0xffff, /* c6a3 */ 0xffff, /* c6a4 */ 0xffff, /* c6a5 */ 0xffff, /* c6a6 */ 0xffff, /* c6a7 */ 0xffff, /* c6a8 */ 0xffff, /* c6a9 */ 0xffff, /* c6aa */ 0xffff, /* c6ab */ 0xffff, /* c6ac */ 0xffff, /* c6ad */ 0xffff, /* c6ae */ 0xffff, /* c6af */ 0xffff, /* c6b0 */ 0xffff, /* c6b1 */ 0xffff, /* c6b2 */ 0xffff, /* c6b3 */ 0xffff, /* c6b4 */ 0xffff, /* c6b5 */ 0xffff, /* c6b6 */ 0xffff, /* c6b7 */ 0xffff, /* c6b8 */ 0xffff, /* c6b9 */ 0xffff, /* c6ba */ 0xffff, /* c6bb */ 0xffff, /* c6bc */ 0xffff, /* c6bd */ 0xffff, /* c6be */ 0xffff, /* c6bf */ 0xffff, /* c6c0 */ 0xffff, /* c6c1 */ 0xffff, /* c6c2 */ 0xffff, /* c6c3 */ 0xffff, /* c6c4 */ 0xffff, /* c6c5 */ 0xffff, /* c6c6 */ 0xffff, /* c6c7 */ 0xffff, /* c6c8 */ 0xffff, /* c6c9 */ 0xffff, /* c6ca */ 0xffff, /* c6cb */ 0xffff, /* c6cc */ 0xffff, /* c6cd */ 0xffff, /* c6ce */ 0xffff, /* c6cf */ 0xffff, /* c6d0 */ 0xffff, /* c6d1 */ 0xffff, /* c6d2 */ 0xffff, /* c6d3 */ 0xffff, /* c6d4 */ 0xffff, /* c6d5 */ 0xffff, /* c6d6 */ 0xffff, /* c6d7 */ 0xffff, /* c6d8 */ 0xffff, /* c6d9 */ 0xffff, /* c6da */ 0xffff, /* c6db */ 0xffff, /* c6dc */ 0xffff, /* c6dd */ 0xffff, /* c6de */ 0xffff, /* c6df */ 0xffff, /* c6e0 */ 0xffff, /* c6e1 */ 0xffff, /* c6e2 */ 0xffff, /* c6e3 */ 0xffff, /* c6e4 */ 0xffff, /* c6e5 */ 0xffff, /* c6e6 */ 0xffff, /* c6e7 */ 0xffff, /* c6e8 */ 0xffff, /* c6e9 */ 0xffff, /* c6ea */ 0xffff, /* c6eb */ 0xffff, /* c6ec */ 0xffff, /* c6ed */ 0xffff, /* c6ee */ 0xffff, /* c6ef */ 0xffff, /* c6f0 */ 0xffff, /* c6f1 */ 0xffff, /* c6f2 */ 0xffff, /* c6f3 */ 0xffff, /* c6f4 */ 0xffff, /* c6f5 */ 0xffff, /* c6f6 */ 0xffff, /* c6f7 */ 0xffff, /* c6f8 */ 0xffff, /* c6f9 */ 0xffff, /* c6fa */ 0xffff, /* c6fb */ 0xffff, /* c6fc */ 0xffff, /* c6fd */ 0xffff, /* c6fe */ 0xffff, /* c6ff */ 0xffff, /* c700 */ 0xffff, /* c701 */ 0xffff, /* c702 */ 0xffff, /* c703 */ 0xffff, /* c704 */ 0xffff, /* c705 */ 0xffff, /* c706 */ 0xffff, /* c707 */ 0xffff, /* c708 */ 0xffff, /* c709 */ 0xffff, /* c70a */ 0xffff, /* c70b */ 0xffff, /* c70c */ 0xffff, /* c70d */ 0xffff, /* c70e */ 0xffff, /* c70f */ 0xffff, /* c710 */ 0xffff, /* c711 */ 0xffff, /* c712 */ 0xffff, /* c713 */ 0xffff, /* c714 */ 0xffff, /* c715 */ 0xffff, /* c716 */ 0xffff, /* c717 */ 0xffff, /* c718 */ 0xffff, /* c719 */ 0xffff, /* c71a */ 0xffff, /* c71b */ 0xffff, /* c71c */ 0xffff, /* c71d */ 0xffff, /* c71e */ 0xffff, /* c71f */ 0xffff, /* c720 */ 0xffff, /* c721 */ 0xffff, /* c722 */ 0xffff, /* c723 */ 0xffff, /* c724 */ 0xffff, /* c725 */ 0xffff, /* c726 */ 0xffff, /* c727 */ 0xffff, /* c728 */ 0xffff, /* c729 */ 0xffff, /* c72a */ 0xffff, /* c72b */ 0xffff, /* c72c */ 0xffff, /* c72d */ 0xffff, /* c72e */ 0xffff, /* c72f */ 0xffff, /* c730 */ 0xffff, /* c731 */ 0xffff, /* c732 */ 0xffff, /* c733 */ 0xffff, /* c734 */ 0xffff, /* c735 */ 0xffff, /* c736 */ 0xffff, /* c737 */ 0xffff, /* c738 */ 0xffff, /* c739 */ 0xffff, /* c73a */ 0xffff, /* c73b */ 0xffff, /* c73c */ 0xffff, /* c73d */ 0xffff, /* c73e */ 0xffff, /* c73f */ 0xffff, /* c740 */ 0xffff, /* c741 */ 0xffff, /* c742 */ 0xffff, /* c743 */ 0xffff, /* c744 */ 0xffff, /* c745 */ 0xffff, /* c746 */ 0xffff, /* c747 */ 0xffff, /* c748 */ 0xffff, /* c749 */ 0xffff, /* c74a */ 0xffff, /* c74b */ 0xffff, /* c74c */ 0xffff, /* c74d */ 0xffff, /* c74e */ 0xffff, /* c74f */ 0xffff, /* c750 */ 0xffff, /* c751 */ 0xffff, /* c752 */ 0xffff, /* c753 */ 0xffff, /* c754 */ 0xffff, /* c755 */ 0xffff, /* c756 */ 0xffff, /* c757 */ 0xffff, /* c758 */ 0xffff, /* c759 */ 0xffff, /* c75a */ 0xffff, /* c75b */ 0xffff, /* c75c */ 0xffff, /* c75d */ 0xffff, /* c75e */ 0xffff, /* c75f */ 0xffff, /* c760 */ 0xffff, /* c761 */ 0xffff, /* c762 */ 0xffff, /* c763 */ 0xffff, /* c764 */ 0xffff, /* c765 */ 0xffff, /* c766 */ 0xffff, /* c767 */ 0xffff, /* c768 */ 0xffff, /* c769 */ 0xffff, /* c76a */ 0xffff, /* c76b */ 0xffff, /* c76c */ 0xffff, /* c76d */ 0xffff, /* c76e */ 0xffff, /* c76f */ 0xffff, /* c770 */ 0xffff, /* c771 */ 0xffff, /* c772 */ 0xffff, /* c773 */ 0xffff, /* c774 */ 0xffff, /* c775 */ 0xffff, /* c776 */ 0xffff, /* c777 */ 0xffff, /* c778 */ 0xffff, /* c779 */ 0xffff, /* c77a */ 0xffff, /* c77b */ 0xffff, /* c77c */ 0xffff, /* c77d */ 0xffff, /* c77e */ 0xffff, /* c77f */ 0xffff, /* c780 */ 0xffff, /* c781 */ 0xffff, /* c782 */ 0xffff, /* c783 */ 0xffff, /* c784 */ 0xffff, /* c785 */ 0xffff, /* c786 */ 0xffff, /* c787 */ 0xffff, /* c788 */ 0xffff, /* c789 */ 0xffff, /* c78a */ 0xffff, /* c78b */ 0xffff, /* c78c */ 0xffff, /* c78d */ 0xffff, /* c78e */ 0xffff, /* c78f */ 0xffff, /* c790 */ 0xffff, /* c791 */ 0xffff, /* c792 */ 0xffff, /* c793 */ 0xffff, /* c794 */ 0xffff, /* c795 */ 0xffff, /* c796 */ 0xffff, /* c797 */ 0xffff, /* c798 */ 0xffff, /* c799 */ 0xffff, /* c79a */ 0xffff, /* c79b */ 0xffff, /* c79c */ 0xffff, /* c79d */ 0xffff, /* c79e */ 0xffff, /* c79f */ 0xffff, /* c7a0 */ 0xffff, /* c7a1 */ 0xffff, /* c7a2 */ 0xffff, /* c7a3 */ 0xffff, /* c7a4 */ 0xffff, /* c7a5 */ 0xffff, /* c7a6 */ 0xffff, /* c7a7 */ 0xffff, /* c7a8 */ 0xffff, /* c7a9 */ 0xffff, /* c7aa */ 0xffff, /* c7ab */ 0xffff, /* c7ac */ 0xffff, /* c7ad */ 0xffff, /* c7ae */ 0xffff, /* c7af */ 0xffff, /* c7b0 */ 0xffff, /* c7b1 */ 0xffff, /* c7b2 */ 0xffff, /* c7b3 */ 0xffff, /* c7b4 */ 0xffff, /* c7b5 */ 0xffff, /* c7b6 */ 0xffff, /* c7b7 */ 0xffff, /* c7b8 */ 0xffff, /* c7b9 */ 0xffff, /* c7ba */ 0xffff, /* c7bb */ 0xffff, /* c7bc */ 0xffff, /* c7bd */ 0xffff, /* c7be */ 0xffff, /* c7bf */ 0xffff, /* c7c0 */ 0xffff, /* c7c1 */ 0xffff, /* c7c2 */ 0xffff, /* c7c3 */ 0xffff, /* c7c4 */ 0xffff, /* c7c5 */ 0xffff, /* c7c6 */ 0xffff, /* c7c7 */ 0xffff, /* c7c8 */ 0xffff, /* c7c9 */ 0xffff, /* c7ca */ 0xffff, /* c7cb */ 0xffff, /* c7cc */ 0xffff, /* c7cd */ 0xffff, /* c7ce */ 0xffff, /* c7cf */ 0xffff, /* c7d0 */ 0xffff, /* c7d1 */ 0xffff, /* c7d2 */ 0xffff, /* c7d3 */ 0xffff, /* c7d4 */ 0xffff, /* c7d5 */ 0xffff, /* c7d6 */ 0xffff, /* c7d7 */ 0xffff, /* c7d8 */ 0xffff, /* c7d9 */ 0xffff, /* c7da */ 0xffff, /* c7db */ 0xffff, /* c7dc */ 0xffff, /* c7dd */ 0xffff, /* c7de */ 0xffff, /* c7df */ 0xffff, /* c7e0 */ 0xffff, /* c7e1 */ 0xffff, /* c7e2 */ 0xffff, /* c7e3 */ 0xffff, /* c7e4 */ 0xffff, /* c7e5 */ 0xffff, /* c7e6 */ 0xffff, /* c7e7 */ 0xffff, /* c7e8 */ 0xffff, /* c7e9 */ 0xffff, /* c7ea */ 0xffff, /* c7eb */ 0xffff, /* c7ec */ 0xffff, /* c7ed */ 0xffff, /* c7ee */ 0xffff, /* c7ef */ 0xffff, /* c7f0 */ 0xffff, /* c7f1 */ 0xffff, /* c7f2 */ 0xffff, /* c7f3 */ 0xffff, /* c7f4 */ 0xffff, /* c7f5 */ 0xffff, /* c7f6 */ 0xffff, /* c7f7 */ 0xffff, /* c7f8 */ 0xffff, /* c7f9 */ 0xffff, /* c7fa */ 0xffff, /* c7fb */ 0xffff, /* c7fc */ 0xffff, /* c7fd */ 0xffff, /* c7fe */ 0xffff, /* c7ff */ 0xffff, /* c800 */ 0xffff, /* c801 */ 0xffff, /* c802 */ 0xffff, /* c803 */ 0xffff, /* c804 */ 0xffff, /* c805 */ 0xffff, /* c806 */ 0xffff, /* c807 */ 0xffff, /* c808 */ 0xffff, /* c809 */ 0xffff, /* c80a */ 0xffff, /* c80b */ 0xffff, /* c80c */ 0xffff, /* c80d */ 0xffff, /* c80e */ 0xffff, /* c80f */ 0xffff, /* c810 */ 0xffff, /* c811 */ 0xffff, /* c812 */ 0xffff, /* c813 */ 0xffff, /* c814 */ 0xffff, /* c815 */ 0xffff, /* c816 */ 0xffff, /* c817 */ 0xffff, /* c818 */ 0xffff, /* c819 */ 0xffff, /* c81a */ 0xffff, /* c81b */ 0xffff, /* c81c */ 0xffff, /* c81d */ 0xffff, /* c81e */ 0xffff, /* c81f */ 0xffff, /* c820 */ 0xffff, /* c821 */ 0xffff, /* c822 */ 0xffff, /* c823 */ 0xffff, /* c824 */ 0xffff, /* c825 */ 0xffff, /* c826 */ 0xffff, /* c827 */ 0xffff, /* c828 */ 0xffff, /* c829 */ 0xffff, /* c82a */ 0xffff, /* c82b */ 0xffff, /* c82c */ 0xffff, /* c82d */ 0xffff, /* c82e */ 0xffff, /* c82f */ 0xffff, /* c830 */ 0xffff, /* c831 */ 0xffff, /* c832 */ 0xffff, /* c833 */ 0xffff, /* c834 */ 0xffff, /* c835 */ 0xffff, /* c836 */ 0xffff, /* c837 */ 0xffff, /* c838 */ 0xffff, /* c839 */ 0xffff, /* c83a */ 0xffff, /* c83b */ 0xffff, /* c83c */ 0xffff, /* c83d */ 0xffff, /* c83e */ 0xffff, /* c83f */ 0xffff, /* c840 */ 0xffff, /* c841 */ 0xffff, /* c842 */ 0xffff, /* c843 */ 0xffff, /* c844 */ 0xffff, /* c845 */ 0xffff, /* c846 */ 0xffff, /* c847 */ 0xffff, /* c848 */ 0xffff, /* c849 */ 0xffff, /* c84a */ 0xffff, /* c84b */ 0xffff, /* c84c */ 0xffff, /* c84d */ 0xffff, /* c84e */ 0xffff, /* c84f */ 0xffff, /* c850 */ 0xffff, /* c851 */ 0xffff, /* c852 */ 0xffff, /* c853 */ 0xffff, /* c854 */ 0xffff, /* c855 */ 0xffff, /* c856 */ 0xffff, /* c857 */ 0xffff, /* c858 */ 0xffff, /* c859 */ 0xffff, /* c85a */ 0xffff, /* c85b */ 0xffff, /* c85c */ 0xffff, /* c85d */ 0xffff, /* c85e */ 0xffff, /* c85f */ 0xffff, /* c860 */ 0xffff, /* c861 */ 0xffff, /* c862 */ 0xffff, /* c863 */ 0xffff, /* c864 */ 0xffff, /* c865 */ 0xffff, /* c866 */ 0xffff, /* c867 */ 0xffff, /* c868 */ 0xffff, /* c869 */ 0xffff, /* c86a */ 0xffff, /* c86b */ 0xffff, /* c86c */ 0xffff, /* c86d */ 0xffff, /* c86e */ 0xffff, /* c86f */ 0xffff, /* c870 */ 0xffff, /* c871 */ 0xffff, /* c872 */ 0xffff, /* c873 */ 0xffff, /* c874 */ 0xffff, /* c875 */ 0xffff, /* c876 */ 0xffff, /* c877 */ 0xffff, /* c878 */ 0xffff, /* c879 */ 0xffff, /* c87a */ 0xffff, /* c87b */ 0xffff, /* c87c */ 0xffff, /* c87d */ 0xffff, /* c87e */ 0xffff, /* c87f */ 0xffff, /* c880 */ 0xffff, /* c881 */ 0xffff, /* c882 */ 0xffff, /* c883 */ 0xffff, /* c884 */ 0xffff, /* c885 */ 0xffff, /* c886 */ 0xffff, /* c887 */ 0xffff, /* c888 */ 0xffff, /* c889 */ 0xffff, /* c88a */ 0xffff, /* c88b */ 0xffff, /* c88c */ 0xffff, /* c88d */ 0xffff, /* c88e */ 0xffff, /* c88f */ 0xffff, /* c890 */ 0xffff, /* c891 */ 0xffff, /* c892 */ 0xffff, /* c893 */ 0xffff, /* c894 */ 0xffff, /* c895 */ 0xffff, /* c896 */ 0xffff, /* c897 */ 0xffff, /* c898 */ 0xffff, /* c899 */ 0xffff, /* c89a */ 0xffff, /* c89b */ 0xffff, /* c89c */ 0xffff, /* c89d */ 0xffff, /* c89e */ 0xffff, /* c89f */ 0xffff, /* c8a0 */ 0xffff, /* c8a1 */ 0xffff, /* c8a2 */ 0xffff, /* c8a3 */ 0xffff, /* c8a4 */ 0xffff, /* c8a5 */ 0xffff, /* c8a6 */ 0xffff, /* c8a7 */ 0xffff, /* c8a8 */ 0xffff, /* c8a9 */ 0xffff, /* c8aa */ 0xffff, /* c8ab */ 0xffff, /* c8ac */ 0xffff, /* c8ad */ 0xffff, /* c8ae */ 0xffff, /* c8af */ 0xffff, /* c8b0 */ 0xffff, /* c8b1 */ 0xffff, /* c8b2 */ 0xffff, /* c8b3 */ 0xffff, /* c8b4 */ 0xffff, /* c8b5 */ 0xffff, /* c8b6 */ 0xffff, /* c8b7 */ 0xffff, /* c8b8 */ 0xffff, /* c8b9 */ 0xffff, /* c8ba */ 0xffff, /* c8bb */ 0xffff, /* c8bc */ 0xffff, /* c8bd */ 0xffff, /* c8be */ 0xffff, /* c8bf */ 0xffff, /* c8c0 */ 0xffff, /* c8c1 */ 0xffff, /* c8c2 */ 0xffff, /* c8c3 */ 0xffff, /* c8c4 */ 0xffff, /* c8c5 */ 0xffff, /* c8c6 */ 0xffff, /* c8c7 */ 0xffff, /* c8c8 */ 0xffff, /* c8c9 */ 0xffff, /* c8ca */ 0xffff, /* c8cb */ 0xffff, /* c8cc */ 0xffff, /* c8cd */ 0xffff, /* c8ce */ 0xffff, /* c8cf */ 0xffff, /* c8d0 */ 0xffff, /* c8d1 */ 0xffff, /* c8d2 */ 0xffff, /* c8d3 */ 0xffff, /* c8d4 */ 0xffff, /* c8d5 */ 0xffff, /* c8d6 */ 0xffff, /* c8d7 */ 0xffff, /* c8d8 */ 0xffff, /* c8d9 */ 0xffff, /* c8da */ 0xffff, /* c8db */ 0xffff, /* c8dc */ 0xffff, /* c8dd */ 0xffff, /* c8de */ 0xffff, /* c8df */ 0xffff, /* c8e0 */ 0xffff, /* c8e1 */ 0xffff, /* c8e2 */ 0xffff, /* c8e3 */ 0xffff, /* c8e4 */ 0xffff, /* c8e5 */ 0xffff, /* c8e6 */ 0xffff, /* c8e7 */ 0xffff, /* c8e8 */ 0xffff, /* c8e9 */ 0xffff, /* c8ea */ 0xffff, /* c8eb */ 0xffff, /* c8ec */ 0xffff, /* c8ed */ 0xffff, /* c8ee */ 0xffff, /* c8ef */ 0xffff, /* c8f0 */ 0xffff, /* c8f1 */ 0xffff, /* c8f2 */ 0xffff, /* c8f3 */ 0xffff, /* c8f4 */ 0xffff, /* c8f5 */ 0xffff, /* c8f6 */ 0xffff, /* c8f7 */ 0xffff, /* c8f8 */ 0xffff, /* c8f9 */ 0xffff, /* c8fa */ 0xffff, /* c8fb */ 0xffff, /* c8fc */ 0xffff, /* c8fd */ 0xffff, /* c8fe */ 0xffff, /* c8ff */ 0xffff, /* c900 */ 0xffff, /* c901 */ 0xffff, /* c902 */ 0xffff, /* c903 */ 0xffff, /* c904 */ 0xffff, /* c905 */ 0xffff, /* c906 */ 0xffff, /* c907 */ 0xffff, /* c908 */ 0xffff, /* c909 */ 0xffff, /* c90a */ 0xffff, /* c90b */ 0xffff, /* c90c */ 0xffff, /* c90d */ 0xffff, /* c90e */ 0xffff, /* c90f */ 0xffff, /* c910 */ 0xffff, /* c911 */ 0xffff, /* c912 */ 0xffff, /* c913 */ 0xffff, /* c914 */ 0xffff, /* c915 */ 0xffff, /* c916 */ 0xffff, /* c917 */ 0xffff, /* c918 */ 0xffff, /* c919 */ 0xffff, /* c91a */ 0xffff, /* c91b */ 0xffff, /* c91c */ 0xffff, /* c91d */ 0xffff, /* c91e */ 0xffff, /* c91f */ 0xffff, /* c920 */ 0xffff, /* c921 */ 0xffff, /* c922 */ 0xffff, /* c923 */ 0xffff, /* c924 */ 0xffff, /* c925 */ 0xffff, /* c926 */ 0xffff, /* c927 */ 0xffff, /* c928 */ 0xffff, /* c929 */ 0xffff, /* c92a */ 0xffff, /* c92b */ 0xffff, /* c92c */ 0xffff, /* c92d */ 0xffff, /* c92e */ 0xffff, /* c92f */ 0xffff, /* c930 */ 0xffff, /* c931 */ 0xffff, /* c932 */ 0xffff, /* c933 */ 0xffff, /* c934 */ 0xffff, /* c935 */ 0xffff, /* c936 */ 0xffff, /* c937 */ 0xffff, /* c938 */ 0xffff, /* c939 */ 0xffff, /* c93a */ 0xffff, /* c93b */ 0xffff, /* c93c */ 0xffff, /* c93d */ 0xffff, /* c93e */ 0xffff, /* c93f */ 0xffff, /* c940 */ 0xffff, /* c941 */ 0xffff, /* c942 */ 0xffff, /* c943 */ 0xffff, /* c944 */ 0xffff, /* c945 */ 0xffff, /* c946 */ 0xffff, /* c947 */ 0xffff, /* c948 */ 0xffff, /* c949 */ 0xffff, /* c94a */ 0xffff, /* c94b */ 0xffff, /* c94c */ 0xffff, /* c94d */ 0xffff, /* c94e */ 0xffff, /* c94f */ 0xffff, /* c950 */ 0xffff, /* c951 */ 0xffff, /* c952 */ 0xffff, /* c953 */ 0xffff, /* c954 */ 0xffff, /* c955 */ 0xffff, /* c956 */ 0xffff, /* c957 */ 0xffff, /* c958 */ 0xffff, /* c959 */ 0xffff, /* c95a */ 0xffff, /* c95b */ 0xffff, /* c95c */ 0xffff, /* c95d */ 0xffff, /* c95e */ 0xffff, /* c95f */ 0xffff, /* c960 */ 0xffff, /* c961 */ 0xffff, /* c962 */ 0xffff, /* c963 */ 0xffff, /* c964 */ 0xffff, /* c965 */ 0xffff, /* c966 */ 0xffff, /* c967 */ 0xffff, /* c968 */ 0xffff, /* c969 */ 0xffff, /* c96a */ 0xffff, /* c96b */ 0xffff, /* c96c */ 0xffff, /* c96d */ 0xffff, /* c96e */ 0xffff, /* c96f */ 0xffff, /* c970 */ 0xffff, /* c971 */ 0xffff, /* c972 */ 0xffff, /* c973 */ 0xffff, /* c974 */ 0xffff, /* c975 */ 0xffff, /* c976 */ 0xffff, /* c977 */ 0xffff, /* c978 */ 0xffff, /* c979 */ 0xffff, /* c97a */ 0xffff, /* c97b */ 0xffff, /* c97c */ 0xffff, /* c97d */ 0xffff, /* c97e */ 0xffff, /* c97f */ 0xffff, /* c980 */ 0xffff, /* c981 */ 0xffff, /* c982 */ 0xffff, /* c983 */ 0xffff, /* c984 */ 0xffff, /* c985 */ 0xffff, /* c986 */ 0xffff, /* c987 */ 0xffff, /* c988 */ 0xffff, /* c989 */ 0xffff, /* c98a */ 0xffff, /* c98b */ 0xffff, /* c98c */ 0xffff, /* c98d */ 0xffff, /* c98e */ 0xffff, /* c98f */ 0xffff, /* c990 */ 0xffff, /* c991 */ 0xffff, /* c992 */ 0xffff, /* c993 */ 0xffff, /* c994 */ 0xffff, /* c995 */ 0xffff, /* c996 */ 0xffff, /* c997 */ 0xffff, /* c998 */ 0xffff, /* c999 */ 0xffff, /* c99a */ 0xffff, /* c99b */ 0xffff, /* c99c */ 0xffff, /* c99d */ 0xffff, /* c99e */ 0xffff, /* c99f */ 0xffff, /* c9a0 */ 0xffff, /* c9a1 */ 0xffff, /* c9a2 */ 0xffff, /* c9a3 */ 0xffff, /* c9a4 */ 0xffff, /* c9a5 */ 0xffff, /* c9a6 */ 0xffff, /* c9a7 */ 0xffff, /* c9a8 */ 0xffff, /* c9a9 */ 0xffff, /* c9aa */ 0xffff, /* c9ab */ 0xffff, /* c9ac */ 0xffff, /* c9ad */ 0xffff, /* c9ae */ 0xffff, /* c9af */ 0xffff, /* c9b0 */ 0xffff, /* c9b1 */ 0xffff, /* c9b2 */ 0xffff, /* c9b3 */ 0xffff, /* c9b4 */ 0xffff, /* c9b5 */ 0xffff, /* c9b6 */ 0xffff, /* c9b7 */ 0xffff, /* c9b8 */ 0xffff, /* c9b9 */ 0xffff, /* c9ba */ 0xffff, /* c9bb */ 0xffff, /* c9bc */ 0xffff, /* c9bd */ 0xffff, /* c9be */ 0xffff, /* c9bf */ 0xffff, /* c9c0 */ 0xffff, /* c9c1 */ 0xffff, /* c9c2 */ 0xffff, /* c9c3 */ 0xffff, /* c9c4 */ 0xffff, /* c9c5 */ 0xffff, /* c9c6 */ 0xffff, /* c9c7 */ 0xffff, /* c9c8 */ 0xffff, /* c9c9 */ 0xffff, /* c9ca */ 0xffff, /* c9cb */ 0xffff, /* c9cc */ 0xffff, /* c9cd */ 0xffff, /* c9ce */ 0xffff, /* c9cf */ 0xffff, /* c9d0 */ 0xffff, /* c9d1 */ 0xffff, /* c9d2 */ 0xffff, /* c9d3 */ 0xffff, /* c9d4 */ 0xffff, /* c9d5 */ 0xffff, /* c9d6 */ 0xffff, /* c9d7 */ 0xffff, /* c9d8 */ 0xffff, /* c9d9 */ 0xffff, /* c9da */ 0xffff, /* c9db */ 0xffff, /* c9dc */ 0xffff, /* c9dd */ 0xffff, /* c9de */ 0xffff, /* c9df */ 0xffff, /* c9e0 */ 0xffff, /* c9e1 */ 0xffff, /* c9e2 */ 0xffff, /* c9e3 */ 0xffff, /* c9e4 */ 0xffff, /* c9e5 */ 0xffff, /* c9e6 */ 0xffff, /* c9e7 */ 0xffff, /* c9e8 */ 0xffff, /* c9e9 */ 0xffff, /* c9ea */ 0xffff, /* c9eb */ 0xffff, /* c9ec */ 0xffff, /* c9ed */ 0xffff, /* c9ee */ 0xffff, /* c9ef */ 0xffff, /* c9f0 */ 0xffff, /* c9f1 */ 0xffff, /* c9f2 */ 0xffff, /* c9f3 */ 0xffff, /* c9f4 */ 0xffff, /* c9f5 */ 0xffff, /* c9f6 */ 0xffff, /* c9f7 */ 0xffff, /* c9f8 */ 0xffff, /* c9f9 */ 0xffff, /* c9fa */ 0xffff, /* c9fb */ 0xffff, /* c9fc */ 0xffff, /* c9fd */ 0xffff, /* c9fe */ 0xffff, /* c9ff */ 0xffff, /* ca00 */ 0xffff, /* ca01 */ 0xffff, /* ca02 */ 0xffff, /* ca03 */ 0xffff, /* ca04 */ 0xffff, /* ca05 */ 0xffff, /* ca06 */ 0xffff, /* ca07 */ 0xffff, /* ca08 */ 0xffff, /* ca09 */ 0xffff, /* ca0a */ 0xffff, /* ca0b */ 0xffff, /* ca0c */ 0xffff, /* ca0d */ 0xffff, /* ca0e */ 0xffff, /* ca0f */ 0xffff, /* ca10 */ 0xffff, /* ca11 */ 0xffff, /* ca12 */ 0xffff, /* ca13 */ 0xffff, /* ca14 */ 0xffff, /* ca15 */ 0xffff, /* ca16 */ 0xffff, /* ca17 */ 0xffff, /* ca18 */ 0xffff, /* ca19 */ 0xffff, /* ca1a */ 0xffff, /* ca1b */ 0xffff, /* ca1c */ 0xffff, /* ca1d */ 0xffff, /* ca1e */ 0xffff, /* ca1f */ 0xffff, /* ca20 */ 0xffff, /* ca21 */ 0xffff, /* ca22 */ 0xffff, /* ca23 */ 0xffff, /* ca24 */ 0xffff, /* ca25 */ 0xffff, /* ca26 */ 0xffff, /* ca27 */ 0xffff, /* ca28 */ 0xffff, /* ca29 */ 0xffff, /* ca2a */ 0xffff, /* ca2b */ 0xffff, /* ca2c */ 0xffff, /* ca2d */ 0xffff, /* ca2e */ 0xffff, /* ca2f */ 0xffff, /* ca30 */ 0xffff, /* ca31 */ 0xffff, /* ca32 */ 0xffff, /* ca33 */ 0xffff, /* ca34 */ 0xffff, /* ca35 */ 0xffff, /* ca36 */ 0xffff, /* ca37 */ 0xffff, /* ca38 */ 0xffff, /* ca39 */ 0xffff, /* ca3a */ 0xffff, /* ca3b */ 0xffff, /* ca3c */ 0xffff, /* ca3d */ 0xffff, /* ca3e */ 0xffff, /* ca3f */ 0xffff, /* ca40 */ 0xffff, /* ca41 */ 0xffff, /* ca42 */ 0xffff, /* ca43 */ 0xffff, /* ca44 */ 0xffff, /* ca45 */ 0xffff, /* ca46 */ 0xffff, /* ca47 */ 0xffff, /* ca48 */ 0xffff, /* ca49 */ 0xffff, /* ca4a */ 0xffff, /* ca4b */ 0xffff, /* ca4c */ 0xffff, /* ca4d */ 0xffff, /* ca4e */ 0xffff, /* ca4f */ 0xffff, /* ca50 */ 0xffff, /* ca51 */ 0xffff, /* ca52 */ 0xffff, /* ca53 */ 0xffff, /* ca54 */ 0xffff, /* ca55 */ 0xffff, /* ca56 */ 0xffff, /* ca57 */ 0xffff, /* ca58 */ 0xffff, /* ca59 */ 0xffff, /* ca5a */ 0xffff, /* ca5b */ 0xffff, /* ca5c */ 0xffff, /* ca5d */ 0xffff, /* ca5e */ 0xffff, /* ca5f */ 0xffff, /* ca60 */ 0xffff, /* ca61 */ 0xffff, /* ca62 */ 0xffff, /* ca63 */ 0xffff, /* ca64 */ 0xffff, /* ca65 */ 0xffff, /* ca66 */ 0xffff, /* ca67 */ 0xffff, /* ca68 */ 0xffff, /* ca69 */ 0xffff, /* ca6a */ 0xffff, /* ca6b */ 0xffff, /* ca6c */ 0xffff, /* ca6d */ 0xffff, /* ca6e */ 0xffff, /* ca6f */ 0xffff, /* ca70 */ 0xffff, /* ca71 */ 0xffff, /* ca72 */ 0xffff, /* ca73 */ 0xffff, /* ca74 */ 0xffff, /* ca75 */ 0xffff, /* ca76 */ 0xffff, /* ca77 */ 0xffff, /* ca78 */ 0xffff, /* ca79 */ 0xffff, /* ca7a */ 0xffff, /* ca7b */ 0xffff, /* ca7c */ 0xffff, /* ca7d */ 0xffff, /* ca7e */ 0xffff, /* ca7f */ 0xffff, /* ca80 */ 0xffff, /* ca81 */ 0xffff, /* ca82 */ 0xffff, /* ca83 */ 0xffff, /* ca84 */ 0xffff, /* ca85 */ 0xffff, /* ca86 */ 0xffff, /* ca87 */ 0xffff, /* ca88 */ 0xffff, /* ca89 */ 0xffff, /* ca8a */ 0xffff, /* ca8b */ 0xffff, /* ca8c */ 0xffff, /* ca8d */ 0xffff, /* ca8e */ 0xffff, /* ca8f */ 0xffff, /* ca90 */ 0xffff, /* ca91 */ 0xffff, /* ca92 */ 0xffff, /* ca93 */ 0xffff, /* ca94 */ 0xffff, /* ca95 */ 0xffff, /* ca96 */ 0xffff, /* ca97 */ 0xffff, /* ca98 */ 0xffff, /* ca99 */ 0xffff, /* ca9a */ 0xffff, /* ca9b */ 0xffff, /* ca9c */ 0xffff, /* ca9d */ 0xffff, /* ca9e */ 0xffff, /* ca9f */ 0xffff, /* caa0 */ 0xffff, /* caa1 */ 0xffff, /* caa2 */ 0xffff, /* caa3 */ 0xffff, /* caa4 */ 0xffff, /* caa5 */ 0xffff, /* caa6 */ 0xffff, /* caa7 */ 0xffff, /* caa8 */ 0xffff, /* caa9 */ 0xffff, /* caaa */ 0xffff, /* caab */ 0xffff, /* caac */ 0xffff, /* caad */ 0xffff, /* caae */ 0xffff, /* caaf */ 0xffff, /* cab0 */ 0xffff, /* cab1 */ 0xffff, /* cab2 */ 0xffff, /* cab3 */ 0xffff, /* cab4 */ 0xffff, /* cab5 */ 0xffff, /* cab6 */ 0xffff, /* cab7 */ 0xffff, /* cab8 */ 0xffff, /* cab9 */ 0xffff, /* caba */ 0xffff, /* cabb */ 0xffff, /* cabc */ 0xffff, /* cabd */ 0xffff, /* cabe */ 0xffff, /* cabf */ 0xffff, /* cac0 */ 0xffff, /* cac1 */ 0xffff, /* cac2 */ 0xffff, /* cac3 */ 0xffff, /* cac4 */ 0xffff, /* cac5 */ 0xffff, /* cac6 */ 0xffff, /* cac7 */ 0xffff, /* cac8 */ 0xffff, /* cac9 */ 0xffff, /* caca */ 0xffff, /* cacb */ 0xffff, /* cacc */ 0xffff, /* cacd */ 0xffff, /* cace */ 0xffff, /* cacf */ 0xffff, /* cad0 */ 0xffff, /* cad1 */ 0xffff, /* cad2 */ 0xffff, /* cad3 */ 0xffff, /* cad4 */ 0xffff, /* cad5 */ 0xffff, /* cad6 */ 0xffff, /* cad7 */ 0xffff, /* cad8 */ 0xffff, /* cad9 */ 0xffff, /* cada */ 0xffff, /* cadb */ 0xffff, /* cadc */ 0xffff, /* cadd */ 0xffff, /* cade */ 0xffff, /* cadf */ 0xffff, /* cae0 */ 0xffff, /* cae1 */ 0xffff, /* cae2 */ 0xffff, /* cae3 */ 0xffff, /* cae4 */ 0xffff, /* cae5 */ 0xffff, /* cae6 */ 0xffff, /* cae7 */ 0xffff, /* cae8 */ 0xffff, /* cae9 */ 0xffff, /* caea */ 0xffff, /* caeb */ 0xffff, /* caec */ 0xffff, /* caed */ 0xffff, /* caee */ 0xffff, /* caef */ 0xffff, /* caf0 */ 0xffff, /* caf1 */ 0xffff, /* caf2 */ 0xffff, /* caf3 */ 0xffff, /* caf4 */ 0xffff, /* caf5 */ 0xffff, /* caf6 */ 0xffff, /* caf7 */ 0xffff, /* caf8 */ 0xffff, /* caf9 */ 0xffff, /* cafa */ 0xffff, /* cafb */ 0xffff, /* cafc */ 0xffff, /* cafd */ 0xffff, /* cafe */ 0xffff, /* caff */ 0xffff, /* cb00 */ 0xffff, /* cb01 */ 0xffff, /* cb02 */ 0xffff, /* cb03 */ 0xffff, /* cb04 */ 0xffff, /* cb05 */ 0xffff, /* cb06 */ 0xffff, /* cb07 */ 0xffff, /* cb08 */ 0xffff, /* cb09 */ 0xffff, /* cb0a */ 0xffff, /* cb0b */ 0xffff, /* cb0c */ 0xffff, /* cb0d */ 0xffff, /* cb0e */ 0xffff, /* cb0f */ 0xffff, /* cb10 */ 0xffff, /* cb11 */ 0xffff, /* cb12 */ 0xffff, /* cb13 */ 0xffff, /* cb14 */ 0xffff, /* cb15 */ 0xffff, /* cb16 */ 0xffff, /* cb17 */ 0xffff, /* cb18 */ 0xffff, /* cb19 */ 0xffff, /* cb1a */ 0xffff, /* cb1b */ 0xffff, /* cb1c */ 0xffff, /* cb1d */ 0xffff, /* cb1e */ 0xffff, /* cb1f */ 0xffff, /* cb20 */ 0xffff, /* cb21 */ 0xffff, /* cb22 */ 0xffff, /* cb23 */ 0xffff, /* cb24 */ 0xffff, /* cb25 */ 0xffff, /* cb26 */ 0xffff, /* cb27 */ 0xffff, /* cb28 */ 0xffff, /* cb29 */ 0xffff, /* cb2a */ 0xffff, /* cb2b */ 0xffff, /* cb2c */ 0xffff, /* cb2d */ 0xffff, /* cb2e */ 0xffff, /* cb2f */ 0xffff, /* cb30 */ 0xffff, /* cb31 */ 0xffff, /* cb32 */ 0xffff, /* cb33 */ 0xffff, /* cb34 */ 0xffff, /* cb35 */ 0xffff, /* cb36 */ 0xffff, /* cb37 */ 0xffff, /* cb38 */ 0xffff, /* cb39 */ 0xffff, /* cb3a */ 0xffff, /* cb3b */ 0xffff, /* cb3c */ 0xffff, /* cb3d */ 0xffff, /* cb3e */ 0xffff, /* cb3f */ 0xffff, /* cb40 */ 0xffff, /* cb41 */ 0xffff, /* cb42 */ 0xffff, /* cb43 */ 0xffff, /* cb44 */ 0xffff, /* cb45 */ 0xffff, /* cb46 */ 0xffff, /* cb47 */ 0xffff, /* cb48 */ 0xffff, /* cb49 */ 0xffff, /* cb4a */ 0xffff, /* cb4b */ 0xffff, /* cb4c */ 0xffff, /* cb4d */ 0xffff, /* cb4e */ 0xffff, /* cb4f */ 0xffff, /* cb50 */ 0xffff, /* cb51 */ 0xffff, /* cb52 */ 0xffff, /* cb53 */ 0xffff, /* cb54 */ 0xffff, /* cb55 */ 0xffff, /* cb56 */ 0xffff, /* cb57 */ 0xffff, /* cb58 */ 0xffff, /* cb59 */ 0xffff, /* cb5a */ 0xffff, /* cb5b */ 0xffff, /* cb5c */ 0xffff, /* cb5d */ 0xffff, /* cb5e */ 0xffff, /* cb5f */ 0xffff, /* cb60 */ 0xffff, /* cb61 */ 0xffff, /* cb62 */ 0xffff, /* cb63 */ 0xffff, /* cb64 */ 0xffff, /* cb65 */ 0xffff, /* cb66 */ 0xffff, /* cb67 */ 0xffff, /* cb68 */ 0xffff, /* cb69 */ 0xffff, /* cb6a */ 0xffff, /* cb6b */ 0xffff, /* cb6c */ 0xffff, /* cb6d */ 0xffff, /* cb6e */ 0xffff, /* cb6f */ 0xffff, /* cb70 */ 0xffff, /* cb71 */ 0xffff, /* cb72 */ 0xffff, /* cb73 */ 0xffff, /* cb74 */ 0xffff, /* cb75 */ 0xffff, /* cb76 */ 0xffff, /* cb77 */ 0xffff, /* cb78 */ 0xffff, /* cb79 */ 0xffff, /* cb7a */ 0xffff, /* cb7b */ 0xffff, /* cb7c */ 0xffff, /* cb7d */ 0xffff, /* cb7e */ 0xffff, /* cb7f */ 0xffff, /* cb80 */ 0xffff, /* cb81 */ 0xffff, /* cb82 */ 0xffff, /* cb83 */ 0xffff, /* cb84 */ 0xffff, /* cb85 */ 0xffff, /* cb86 */ 0xffff, /* cb87 */ 0xffff, /* cb88 */ 0xffff, /* cb89 */ 0xffff, /* cb8a */ 0xffff, /* cb8b */ 0xffff, /* cb8c */ 0xffff, /* cb8d */ 0xffff, /* cb8e */ 0xffff, /* cb8f */ 0xffff, /* cb90 */ 0xffff, /* cb91 */ 0xffff, /* cb92 */ 0xffff, /* cb93 */ 0xffff, /* cb94 */ 0xffff, /* cb95 */ 0xffff, /* cb96 */ 0xffff, /* cb97 */ 0xffff, /* cb98 */ 0xffff, /* cb99 */ 0xffff, /* cb9a */ 0xffff, /* cb9b */ 0xffff, /* cb9c */ 0xffff, /* cb9d */ 0xffff, /* cb9e */ 0xffff, /* cb9f */ 0xffff, /* cba0 */ 0xffff, /* cba1 */ 0xffff, /* cba2 */ 0xffff, /* cba3 */ 0xffff, /* cba4 */ 0xffff, /* cba5 */ 0xffff, /* cba6 */ 0xffff, /* cba7 */ 0xffff, /* cba8 */ 0xffff, /* cba9 */ 0xffff, /* cbaa */ 0xffff, /* cbab */ 0xffff, /* cbac */ 0xffff, /* cbad */ 0xffff, /* cbae */ 0xffff, /* cbaf */ 0xffff, /* cbb0 */ 0xffff, /* cbb1 */ 0xffff, /* cbb2 */ 0xffff, /* cbb3 */ 0xffff, /* cbb4 */ 0xffff, /* cbb5 */ 0xffff, /* cbb6 */ 0xffff, /* cbb7 */ 0xffff, /* cbb8 */ 0xffff, /* cbb9 */ 0xffff, /* cbba */ 0xffff, /* cbbb */ 0xffff, /* cbbc */ 0xffff, /* cbbd */ 0xffff, /* cbbe */ 0xffff, /* cbbf */ 0xffff, /* cbc0 */ 0xffff, /* cbc1 */ 0xffff, /* cbc2 */ 0xffff, /* cbc3 */ 0xffff, /* cbc4 */ 0xffff, /* cbc5 */ 0xffff, /* cbc6 */ 0xffff, /* cbc7 */ 0xffff, /* cbc8 */ 0xffff, /* cbc9 */ 0xffff, /* cbca */ 0xffff, /* cbcb */ 0xffff, /* cbcc */ 0xffff, /* cbcd */ 0xffff, /* cbce */ 0xffff, /* cbcf */ 0xffff, /* cbd0 */ 0xffff, /* cbd1 */ 0xffff, /* cbd2 */ 0xffff, /* cbd3 */ 0xffff, /* cbd4 */ 0xffff, /* cbd5 */ 0xffff, /* cbd6 */ 0xffff, /* cbd7 */ 0xffff, /* cbd8 */ 0xffff, /* cbd9 */ 0xffff, /* cbda */ 0xffff, /* cbdb */ 0xffff, /* cbdc */ 0xffff, /* cbdd */ 0xffff, /* cbde */ 0xffff, /* cbdf */ 0xffff, /* cbe0 */ 0xffff, /* cbe1 */ 0xffff, /* cbe2 */ 0xffff, /* cbe3 */ 0xffff, /* cbe4 */ 0xffff, /* cbe5 */ 0xffff, /* cbe6 */ 0xffff, /* cbe7 */ 0xffff, /* cbe8 */ 0xffff, /* cbe9 */ 0xffff, /* cbea */ 0xffff, /* cbeb */ 0xffff, /* cbec */ 0xffff, /* cbed */ 0xffff, /* cbee */ 0xffff, /* cbef */ 0xffff, /* cbf0 */ 0xffff, /* cbf1 */ 0xffff, /* cbf2 */ 0xffff, /* cbf3 */ 0xffff, /* cbf4 */ 0xffff, /* cbf5 */ 0xffff, /* cbf6 */ 0xffff, /* cbf7 */ 0xffff, /* cbf8 */ 0xffff, /* cbf9 */ 0xffff, /* cbfa */ 0xffff, /* cbfb */ 0xffff, /* cbfc */ 0xffff, /* cbfd */ 0xffff, /* cbfe */ 0xffff, /* cbff */ 0xffff, /* cc00 */ 0xffff, /* cc01 */ 0xffff, /* cc02 */ 0xffff, /* cc03 */ 0xffff, /* cc04 */ 0xffff, /* cc05 */ 0xffff, /* cc06 */ 0xffff, /* cc07 */ 0xffff, /* cc08 */ 0xffff, /* cc09 */ 0xffff, /* cc0a */ 0xffff, /* cc0b */ 0xffff, /* cc0c */ 0xffff, /* cc0d */ 0xffff, /* cc0e */ 0xffff, /* cc0f */ 0xffff, /* cc10 */ 0xffff, /* cc11 */ 0xffff, /* cc12 */ 0xffff, /* cc13 */ 0xffff, /* cc14 */ 0xffff, /* cc15 */ 0xffff, /* cc16 */ 0xffff, /* cc17 */ 0xffff, /* cc18 */ 0xffff, /* cc19 */ 0xffff, /* cc1a */ 0xffff, /* cc1b */ 0xffff, /* cc1c */ 0xffff, /* cc1d */ 0xffff, /* cc1e */ 0xffff, /* cc1f */ 0xffff, /* cc20 */ 0xffff, /* cc21 */ 0xffff, /* cc22 */ 0xffff, /* cc23 */ 0xffff, /* cc24 */ 0xffff, /* cc25 */ 0xffff, /* cc26 */ 0xffff, /* cc27 */ 0xffff, /* cc28 */ 0xffff, /* cc29 */ 0xffff, /* cc2a */ 0xffff, /* cc2b */ 0xffff, /* cc2c */ 0xffff, /* cc2d */ 0xffff, /* cc2e */ 0xffff, /* cc2f */ 0xffff, /* cc30 */ 0xffff, /* cc31 */ 0xffff, /* cc32 */ 0xffff, /* cc33 */ 0xffff, /* cc34 */ 0xffff, /* cc35 */ 0xffff, /* cc36 */ 0xffff, /* cc37 */ 0xffff, /* cc38 */ 0xffff, /* cc39 */ 0xffff, /* cc3a */ 0xffff, /* cc3b */ 0xffff, /* cc3c */ 0xffff, /* cc3d */ 0xffff, /* cc3e */ 0xffff, /* cc3f */ 0xffff, /* cc40 */ 0xffff, /* cc41 */ 0xffff, /* cc42 */ 0xffff, /* cc43 */ 0xffff, /* cc44 */ 0xffff, /* cc45 */ 0xffff, /* cc46 */ 0xffff, /* cc47 */ 0xffff, /* cc48 */ 0xffff, /* cc49 */ 0xffff, /* cc4a */ 0xffff, /* cc4b */ 0xffff, /* cc4c */ 0xffff, /* cc4d */ 0xffff, /* cc4e */ 0xffff, /* cc4f */ 0xffff, /* cc50 */ 0xffff, /* cc51 */ 0xffff, /* cc52 */ 0xffff, /* cc53 */ 0xffff, /* cc54 */ 0xffff, /* cc55 */ 0xffff, /* cc56 */ 0xffff, /* cc57 */ 0xffff, /* cc58 */ 0xffff, /* cc59 */ 0xffff, /* cc5a */ 0xffff, /* cc5b */ 0xffff, /* cc5c */ 0xffff, /* cc5d */ 0xffff, /* cc5e */ 0xffff, /* cc5f */ 0xffff, /* cc60 */ 0xffff, /* cc61 */ 0xffff, /* cc62 */ 0xffff, /* cc63 */ 0xffff, /* cc64 */ 0xffff, /* cc65 */ 0xffff, /* cc66 */ 0xffff, /* cc67 */ 0xffff, /* cc68 */ 0xffff, /* cc69 */ 0xffff, /* cc6a */ 0xffff, /* cc6b */ 0xffff, /* cc6c */ 0xffff, /* cc6d */ 0xffff, /* cc6e */ 0xffff, /* cc6f */ 0xffff, /* cc70 */ 0xffff, /* cc71 */ 0xffff, /* cc72 */ 0xffff, /* cc73 */ 0xffff, /* cc74 */ 0xffff, /* cc75 */ 0xffff, /* cc76 */ 0xffff, /* cc77 */ 0xffff, /* cc78 */ 0xffff, /* cc79 */ 0xffff, /* cc7a */ 0xffff, /* cc7b */ 0xffff, /* cc7c */ 0xffff, /* cc7d */ 0xffff, /* cc7e */ 0xffff, /* cc7f */ 0xffff, /* cc80 */ 0xffff, /* cc81 */ 0xffff, /* cc82 */ 0xffff, /* cc83 */ 0xffff, /* cc84 */ 0xffff, /* cc85 */ 0xffff, /* cc86 */ 0xffff, /* cc87 */ 0xffff, /* cc88 */ 0xffff, /* cc89 */ 0xffff, /* cc8a */ 0xffff, /* cc8b */ 0xffff, /* cc8c */ 0xffff, /* cc8d */ 0xffff, /* cc8e */ 0xffff, /* cc8f */ 0xffff, /* cc90 */ 0xffff, /* cc91 */ 0xffff, /* cc92 */ 0xffff, /* cc93 */ 0xffff, /* cc94 */ 0xffff, /* cc95 */ 0xffff, /* cc96 */ 0xffff, /* cc97 */ 0xffff, /* cc98 */ 0xffff, /* cc99 */ 0xffff, /* cc9a */ 0xffff, /* cc9b */ 0xffff, /* cc9c */ 0xffff, /* cc9d */ 0xffff, /* cc9e */ 0xffff, /* cc9f */ 0xffff, /* cca0 */ 0xffff, /* cca1 */ 0xffff, /* cca2 */ 0xffff, /* cca3 */ 0xffff, /* cca4 */ 0xffff, /* cca5 */ 0xffff, /* cca6 */ 0xffff, /* cca7 */ 0xffff, /* cca8 */ 0xffff, /* cca9 */ 0xffff, /* ccaa */ 0xffff, /* ccab */ 0xffff, /* ccac */ 0xffff, /* ccad */ 0xffff, /* ccae */ 0xffff, /* ccaf */ 0xffff, /* ccb0 */ 0xffff, /* ccb1 */ 0xffff, /* ccb2 */ 0xffff, /* ccb3 */ 0xffff, /* ccb4 */ 0xffff, /* ccb5 */ 0xffff, /* ccb6 */ 0xffff, /* ccb7 */ 0xffff, /* ccb8 */ 0xffff, /* ccb9 */ 0xffff, /* ccba */ 0xffff, /* ccbb */ 0xffff, /* ccbc */ 0xffff, /* ccbd */ 0xffff, /* ccbe */ 0xffff, /* ccbf */ 0xffff, /* ccc0 */ 0xffff, /* ccc1 */ 0xffff, /* ccc2 */ 0xffff, /* ccc3 */ 0xffff, /* ccc4 */ 0xffff, /* ccc5 */ 0xffff, /* ccc6 */ 0xffff, /* ccc7 */ 0xffff, /* ccc8 */ 0xffff, /* ccc9 */ 0xffff, /* ccca */ 0xffff, /* cccb */ 0xffff, /* cccc */ 0xffff, /* cccd */ 0xffff, /* ccce */ 0xffff, /* cccf */ 0xffff, /* ccd0 */ 0xffff, /* ccd1 */ 0xffff, /* ccd2 */ 0xffff, /* ccd3 */ 0xffff, /* ccd4 */ 0xffff, /* ccd5 */ 0xffff, /* ccd6 */ 0xffff, /* ccd7 */ 0xffff, /* ccd8 */ 0xffff, /* ccd9 */ 0xffff, /* ccda */ 0xffff, /* ccdb */ 0xffff, /* ccdc */ 0xffff, /* ccdd */ 0xffff, /* ccde */ 0xffff, /* ccdf */ 0xffff, /* cce0 */ 0xffff, /* cce1 */ 0xffff, /* cce2 */ 0xffff, /* cce3 */ 0xffff, /* cce4 */ 0xffff, /* cce5 */ 0xffff, /* cce6 */ 0xffff, /* cce7 */ 0xffff, /* cce8 */ 0xffff, /* cce9 */ 0xffff, /* ccea */ 0xffff, /* cceb */ 0xffff, /* ccec */ 0xffff, /* cced */ 0xffff, /* ccee */ 0xffff, /* ccef */ 0xffff, /* ccf0 */ 0xffff, /* ccf1 */ 0xffff, /* ccf2 */ 0xffff, /* ccf3 */ 0xffff, /* ccf4 */ 0xffff, /* ccf5 */ 0xffff, /* ccf6 */ 0xffff, /* ccf7 */ 0xffff, /* ccf8 */ 0xffff, /* ccf9 */ 0xffff, /* ccfa */ 0xffff, /* ccfb */ 0xffff, /* ccfc */ 0xffff, /* ccfd */ 0xffff, /* ccfe */ 0xffff, /* ccff */ 0xffff, /* cd00 */ 0xffff, /* cd01 */ 0xffff, /* cd02 */ 0xffff, /* cd03 */ 0xffff, /* cd04 */ 0xffff, /* cd05 */ 0xffff, /* cd06 */ 0xffff, /* cd07 */ 0xffff, /* cd08 */ 0xffff, /* cd09 */ 0xffff, /* cd0a */ 0xffff, /* cd0b */ 0xffff, /* cd0c */ 0xffff, /* cd0d */ 0xffff, /* cd0e */ 0xffff, /* cd0f */ 0xffff, /* cd10 */ 0xffff, /* cd11 */ 0xffff, /* cd12 */ 0xffff, /* cd13 */ 0xffff, /* cd14 */ 0xffff, /* cd15 */ 0xffff, /* cd16 */ 0xffff, /* cd17 */ 0xffff, /* cd18 */ 0xffff, /* cd19 */ 0xffff, /* cd1a */ 0xffff, /* cd1b */ 0xffff, /* cd1c */ 0xffff, /* cd1d */ 0xffff, /* cd1e */ 0xffff, /* cd1f */ 0xffff, /* cd20 */ 0xffff, /* cd21 */ 0xffff, /* cd22 */ 0xffff, /* cd23 */ 0xffff, /* cd24 */ 0xffff, /* cd25 */ 0xffff, /* cd26 */ 0xffff, /* cd27 */ 0xffff, /* cd28 */ 0xffff, /* cd29 */ 0xffff, /* cd2a */ 0xffff, /* cd2b */ 0xffff, /* cd2c */ 0xffff, /* cd2d */ 0xffff, /* cd2e */ 0xffff, /* cd2f */ 0xffff, /* cd30 */ 0xffff, /* cd31 */ 0xffff, /* cd32 */ 0xffff, /* cd33 */ 0xffff, /* cd34 */ 0xffff, /* cd35 */ 0xffff, /* cd36 */ 0xffff, /* cd37 */ 0xffff, /* cd38 */ 0xffff, /* cd39 */ 0xffff, /* cd3a */ 0xffff, /* cd3b */ 0xffff, /* cd3c */ 0xffff, /* cd3d */ 0xffff, /* cd3e */ 0xffff, /* cd3f */ 0xffff, /* cd40 */ 0xffff, /* cd41 */ 0xffff, /* cd42 */ 0xffff, /* cd43 */ 0xffff, /* cd44 */ 0xffff, /* cd45 */ 0xffff, /* cd46 */ 0xffff, /* cd47 */ 0xffff, /* cd48 */ 0xffff, /* cd49 */ 0xffff, /* cd4a */ 0xffff, /* cd4b */ 0xffff, /* cd4c */ 0xffff, /* cd4d */ 0xffff, /* cd4e */ 0xffff, /* cd4f */ 0xffff, /* cd50 */ 0xffff, /* cd51 */ 0xffff, /* cd52 */ 0xffff, /* cd53 */ 0xffff, /* cd54 */ 0xffff, /* cd55 */ 0xffff, /* cd56 */ 0xffff, /* cd57 */ 0xffff, /* cd58 */ 0xffff, /* cd59 */ 0xffff, /* cd5a */ 0xffff, /* cd5b */ 0xffff, /* cd5c */ 0xffff, /* cd5d */ 0xffff, /* cd5e */ 0xffff, /* cd5f */ 0xffff, /* cd60 */ 0xffff, /* cd61 */ 0xffff, /* cd62 */ 0xffff, /* cd63 */ 0xffff, /* cd64 */ 0xffff, /* cd65 */ 0xffff, /* cd66 */ 0xffff, /* cd67 */ 0xffff, /* cd68 */ 0xffff, /* cd69 */ 0xffff, /* cd6a */ 0xffff, /* cd6b */ 0xffff, /* cd6c */ 0xffff, /* cd6d */ 0xffff, /* cd6e */ 0xffff, /* cd6f */ 0xffff, /* cd70 */ 0xffff, /* cd71 */ 0xffff, /* cd72 */ 0xffff, /* cd73 */ 0xffff, /* cd74 */ 0xffff, /* cd75 */ 0xffff, /* cd76 */ 0xffff, /* cd77 */ 0xffff, /* cd78 */ 0xffff, /* cd79 */ 0xffff, /* cd7a */ 0xffff, /* cd7b */ 0xffff, /* cd7c */ 0xffff, /* cd7d */ 0xffff, /* cd7e */ 0xffff, /* cd7f */ 0xffff, /* cd80 */ 0xffff, /* cd81 */ 0xffff, /* cd82 */ 0xffff, /* cd83 */ 0xffff, /* cd84 */ 0xffff, /* cd85 */ 0xffff, /* cd86 */ 0xffff, /* cd87 */ 0xffff, /* cd88 */ 0xffff, /* cd89 */ 0xffff, /* cd8a */ 0xffff, /* cd8b */ 0xffff, /* cd8c */ 0xffff, /* cd8d */ 0xffff, /* cd8e */ 0xffff, /* cd8f */ 0xffff, /* cd90 */ 0xffff, /* cd91 */ 0xffff, /* cd92 */ 0xffff, /* cd93 */ 0xffff, /* cd94 */ 0xffff, /* cd95 */ 0xffff, /* cd96 */ 0xffff, /* cd97 */ 0xffff, /* cd98 */ 0xffff, /* cd99 */ 0xffff, /* cd9a */ 0xffff, /* cd9b */ 0xffff, /* cd9c */ 0xffff, /* cd9d */ 0xffff, /* cd9e */ 0xffff, /* cd9f */ 0xffff, /* cda0 */ 0xffff, /* cda1 */ 0xffff, /* cda2 */ 0xffff, /* cda3 */ 0xffff, /* cda4 */ 0xffff, /* cda5 */ 0xffff, /* cda6 */ 0xffff, /* cda7 */ 0xffff, /* cda8 */ 0xffff, /* cda9 */ 0xffff, /* cdaa */ 0xffff, /* cdab */ 0xffff, /* cdac */ 0xffff, /* cdad */ 0xffff, /* cdae */ 0xffff, /* cdaf */ 0xffff, /* cdb0 */ 0xffff, /* cdb1 */ 0xffff, /* cdb2 */ 0xffff, /* cdb3 */ 0xffff, /* cdb4 */ 0xffff, /* cdb5 */ 0xffff, /* cdb6 */ 0xffff, /* cdb7 */ 0xffff, /* cdb8 */ 0xffff, /* cdb9 */ 0xffff, /* cdba */ 0xffff, /* cdbb */ 0xffff, /* cdbc */ 0xffff, /* cdbd */ 0xffff, /* cdbe */ 0xffff, /* cdbf */ 0xffff, /* cdc0 */ 0xffff, /* cdc1 */ 0xffff, /* cdc2 */ 0xffff, /* cdc3 */ 0xffff, /* cdc4 */ 0xffff, /* cdc5 */ 0xffff, /* cdc6 */ 0xffff, /* cdc7 */ 0xffff, /* cdc8 */ 0xffff, /* cdc9 */ 0xffff, /* cdca */ 0xffff, /* cdcb */ 0xffff, /* cdcc */ 0xffff, /* cdcd */ 0xffff, /* cdce */ 0xffff, /* cdcf */ 0xffff, /* cdd0 */ 0xffff, /* cdd1 */ 0xffff, /* cdd2 */ 0xffff, /* cdd3 */ 0xffff, /* cdd4 */ 0xffff, /* cdd5 */ 0xffff, /* cdd6 */ 0xffff, /* cdd7 */ 0xffff, /* cdd8 */ 0xffff, /* cdd9 */ 0xffff, /* cdda */ 0xffff, /* cddb */ 0xffff, /* cddc */ 0xffff, /* cddd */ 0xffff, /* cdde */ 0xffff, /* cddf */ 0xffff, /* cde0 */ 0xffff, /* cde1 */ 0xffff, /* cde2 */ 0xffff, /* cde3 */ 0xffff, /* cde4 */ 0xffff, /* cde5 */ 0xffff, /* cde6 */ 0xffff, /* cde7 */ 0xffff, /* cde8 */ 0xffff, /* cde9 */ 0xffff, /* cdea */ 0xffff, /* cdeb */ 0xffff, /* cdec */ 0xffff, /* cded */ 0xffff, /* cdee */ 0xffff, /* cdef */ 0xffff, /* cdf0 */ 0xffff, /* cdf1 */ 0xffff, /* cdf2 */ 0xffff, /* cdf3 */ 0xffff, /* cdf4 */ 0xffff, /* cdf5 */ 0xffff, /* cdf6 */ 0xffff, /* cdf7 */ 0xffff, /* cdf8 */ 0xffff, /* cdf9 */ 0xffff, /* cdfa */ 0xffff, /* cdfb */ 0xffff, /* cdfc */ 0xffff, /* cdfd */ 0xffff, /* cdfe */ 0xffff, /* cdff */ 0xffff, /* ce00 */ 0xffff, /* ce01 */ 0xffff, /* ce02 */ 0xffff, /* ce03 */ 0xffff, /* ce04 */ 0xffff, /* ce05 */ 0xffff, /* ce06 */ 0xffff, /* ce07 */ 0xffff, /* ce08 */ 0xffff, /* ce09 */ 0xffff, /* ce0a */ 0xffff, /* ce0b */ 0xffff, /* ce0c */ 0xffff, /* ce0d */ 0xffff, /* ce0e */ 0xffff, /* ce0f */ 0xffff, /* ce10 */ 0xffff, /* ce11 */ 0xffff, /* ce12 */ 0xffff, /* ce13 */ 0xffff, /* ce14 */ 0xffff, /* ce15 */ 0xffff, /* ce16 */ 0xffff, /* ce17 */ 0xffff, /* ce18 */ 0xffff, /* ce19 */ 0xffff, /* ce1a */ 0xffff, /* ce1b */ 0xffff, /* ce1c */ 0xffff, /* ce1d */ 0xffff, /* ce1e */ 0xffff, /* ce1f */ 0xffff, /* ce20 */ 0xffff, /* ce21 */ 0xffff, /* ce22 */ 0xffff, /* ce23 */ 0xffff, /* ce24 */ 0xffff, /* ce25 */ 0xffff, /* ce26 */ 0xffff, /* ce27 */ 0xffff, /* ce28 */ 0xffff, /* ce29 */ 0xffff, /* ce2a */ 0xffff, /* ce2b */ 0xffff, /* ce2c */ 0xffff, /* ce2d */ 0xffff, /* ce2e */ 0xffff, /* ce2f */ 0xffff, /* ce30 */ 0xffff, /* ce31 */ 0xffff, /* ce32 */ 0xffff, /* ce33 */ 0xffff, /* ce34 */ 0xffff, /* ce35 */ 0xffff, /* ce36 */ 0xffff, /* ce37 */ 0xffff, /* ce38 */ 0xffff, /* ce39 */ 0xffff, /* ce3a */ 0xffff, /* ce3b */ 0xffff, /* ce3c */ 0xffff, /* ce3d */ 0xffff, /* ce3e */ 0xffff, /* ce3f */ 0xffff, /* ce40 */ 0xffff, /* ce41 */ 0xffff, /* ce42 */ 0xffff, /* ce43 */ 0xffff, /* ce44 */ 0xffff, /* ce45 */ 0xffff, /* ce46 */ 0xffff, /* ce47 */ 0xffff, /* ce48 */ 0xffff, /* ce49 */ 0xffff, /* ce4a */ 0xffff, /* ce4b */ 0xffff, /* ce4c */ 0xffff, /* ce4d */ 0xffff, /* ce4e */ 0xffff, /* ce4f */ 0xffff, /* ce50 */ 0xffff, /* ce51 */ 0xffff, /* ce52 */ 0xffff, /* ce53 */ 0xffff, /* ce54 */ 0xffff, /* ce55 */ 0xffff, /* ce56 */ 0xffff, /* ce57 */ 0xffff, /* ce58 */ 0xffff, /* ce59 */ 0xffff, /* ce5a */ 0xffff, /* ce5b */ 0xffff, /* ce5c */ 0xffff, /* ce5d */ 0xffff, /* ce5e */ 0xffff, /* ce5f */ 0xffff, /* ce60 */ 0xffff, /* ce61 */ 0xffff, /* ce62 */ 0xffff, /* ce63 */ 0xffff, /* ce64 */ 0xffff, /* ce65 */ 0xffff, /* ce66 */ 0xffff, /* ce67 */ 0xffff, /* ce68 */ 0xffff, /* ce69 */ 0xffff, /* ce6a */ 0xffff, /* ce6b */ 0xffff, /* ce6c */ 0xffff, /* ce6d */ 0xffff, /* ce6e */ 0xffff, /* ce6f */ 0xffff, /* ce70 */ 0xffff, /* ce71 */ 0xffff, /* ce72 */ 0xffff, /* ce73 */ 0xffff, /* ce74 */ 0xffff, /* ce75 */ 0xffff, /* ce76 */ 0xffff, /* ce77 */ 0xffff, /* ce78 */ 0xffff, /* ce79 */ 0xffff, /* ce7a */ 0xffff, /* ce7b */ 0xffff, /* ce7c */ 0xffff, /* ce7d */ 0xffff, /* ce7e */ 0xffff, /* ce7f */ 0xffff, /* ce80 */ 0xffff, /* ce81 */ 0xffff, /* ce82 */ 0xffff, /* ce83 */ 0xffff, /* ce84 */ 0xffff, /* ce85 */ 0xffff, /* ce86 */ 0xffff, /* ce87 */ 0xffff, /* ce88 */ 0xffff, /* ce89 */ 0xffff, /* ce8a */ 0xffff, /* ce8b */ 0xffff, /* ce8c */ 0xffff, /* ce8d */ 0xffff, /* ce8e */ 0xffff, /* ce8f */ 0xffff, /* ce90 */ 0xffff, /* ce91 */ 0xffff, /* ce92 */ 0xffff, /* ce93 */ 0xffff, /* ce94 */ 0xffff, /* ce95 */ 0xffff, /* ce96 */ 0xffff, /* ce97 */ 0xffff, /* ce98 */ 0xffff, /* ce99 */ 0xffff, /* ce9a */ 0xffff, /* ce9b */ 0xffff, /* ce9c */ 0xffff, /* ce9d */ 0xffff, /* ce9e */ 0xffff, /* ce9f */ 0xffff, /* cea0 */ 0xffff, /* cea1 */ 0xffff, /* cea2 */ 0xffff, /* cea3 */ 0xffff, /* cea4 */ 0xffff, /* cea5 */ 0xffff, /* cea6 */ 0xffff, /* cea7 */ 0xffff, /* cea8 */ 0xffff, /* cea9 */ 0xffff, /* ceaa */ 0xffff, /* ceab */ 0xffff, /* ceac */ 0xffff, /* cead */ 0xffff, /* ceae */ 0xffff, /* ceaf */ 0xffff, /* ceb0 */ 0xffff, /* ceb1 */ 0xffff, /* ceb2 */ 0xffff, /* ceb3 */ 0xffff, /* ceb4 */ 0xffff, /* ceb5 */ 0xffff, /* ceb6 */ 0xffff, /* ceb7 */ 0xffff, /* ceb8 */ 0xffff, /* ceb9 */ 0xffff, /* ceba */ 0xffff, /* cebb */ 0xffff, /* cebc */ 0xffff, /* cebd */ 0xffff, /* cebe */ 0xffff, /* cebf */ 0xffff, /* cec0 */ 0xffff, /* cec1 */ 0xffff, /* cec2 */ 0xffff, /* cec3 */ 0xffff, /* cec4 */ 0xffff, /* cec5 */ 0xffff, /* cec6 */ 0xffff, /* cec7 */ 0xffff, /* cec8 */ 0xffff, /* cec9 */ 0xffff, /* ceca */ 0xffff, /* cecb */ 0xffff, /* cecc */ 0xffff, /* cecd */ 0xffff, /* cece */ 0xffff, /* cecf */ 0xffff, /* ced0 */ 0xffff, /* ced1 */ 0xffff, /* ced2 */ 0xffff, /* ced3 */ 0xffff, /* ced4 */ 0xffff, /* ced5 */ 0xffff, /* ced6 */ 0xffff, /* ced7 */ 0xffff, /* ced8 */ 0xffff, /* ced9 */ 0xffff, /* ceda */ 0xffff, /* cedb */ 0xffff, /* cedc */ 0xffff, /* cedd */ 0xffff, /* cede */ 0xffff, /* cedf */ 0xffff, /* cee0 */ 0xffff, /* cee1 */ 0xffff, /* cee2 */ 0xffff, /* cee3 */ 0xffff, /* cee4 */ 0xffff, /* cee5 */ 0xffff, /* cee6 */ 0xffff, /* cee7 */ 0xffff, /* cee8 */ 0xffff, /* cee9 */ 0xffff, /* ceea */ 0xffff, /* ceeb */ 0xffff, /* ceec */ 0xffff, /* ceed */ 0xffff, /* ceee */ 0xffff, /* ceef */ 0xffff, /* cef0 */ 0xffff, /* cef1 */ 0xffff, /* cef2 */ 0xffff, /* cef3 */ 0xffff, /* cef4 */ 0xffff, /* cef5 */ 0xffff, /* cef6 */ 0xffff, /* cef7 */ 0xffff, /* cef8 */ 0xffff, /* cef9 */ 0xffff, /* cefa */ 0xffff, /* cefb */ 0xffff, /* cefc */ 0xffff, /* cefd */ 0xffff, /* cefe */ 0xffff, /* ceff */ 0xffff, /* cf00 */ 0xffff, /* cf01 */ 0xffff, /* cf02 */ 0xffff, /* cf03 */ 0xffff, /* cf04 */ 0xffff, /* cf05 */ 0xffff, /* cf06 */ 0xffff, /* cf07 */ 0xffff, /* cf08 */ 0xffff, /* cf09 */ 0xffff, /* cf0a */ 0xffff, /* cf0b */ 0xffff, /* cf0c */ 0xffff, /* cf0d */ 0xffff, /* cf0e */ 0xffff, /* cf0f */ 0xffff, /* cf10 */ 0xffff, /* cf11 */ 0xffff, /* cf12 */ 0xffff, /* cf13 */ 0xffff, /* cf14 */ 0xffff, /* cf15 */ 0xffff, /* cf16 */ 0xffff, /* cf17 */ 0xffff, /* cf18 */ 0xffff, /* cf19 */ 0xffff, /* cf1a */ 0xffff, /* cf1b */ 0xffff, /* cf1c */ 0xffff, /* cf1d */ 0xffff, /* cf1e */ 0xffff, /* cf1f */ 0xffff, /* cf20 */ 0xffff, /* cf21 */ 0xffff, /* cf22 */ 0xffff, /* cf23 */ 0xffff, /* cf24 */ 0xffff, /* cf25 */ 0xffff, /* cf26 */ 0xffff, /* cf27 */ 0xffff, /* cf28 */ 0xffff, /* cf29 */ 0xffff, /* cf2a */ 0xffff, /* cf2b */ 0xffff, /* cf2c */ 0xffff, /* cf2d */ 0xffff, /* cf2e */ 0xffff, /* cf2f */ 0xffff, /* cf30 */ 0xffff, /* cf31 */ 0xffff, /* cf32 */ 0xffff, /* cf33 */ 0xffff, /* cf34 */ 0xffff, /* cf35 */ 0xffff, /* cf36 */ 0xffff, /* cf37 */ 0xffff, /* cf38 */ 0xffff, /* cf39 */ 0xffff, /* cf3a */ 0xffff, /* cf3b */ 0xffff, /* cf3c */ 0xffff, /* cf3d */ 0xffff, /* cf3e */ 0xffff, /* cf3f */ 0xffff, /* cf40 */ 0xffff, /* cf41 */ 0xffff, /* cf42 */ 0xffff, /* cf43 */ 0xffff, /* cf44 */ 0xffff, /* cf45 */ 0xffff, /* cf46 */ 0xffff, /* cf47 */ 0xffff, /* cf48 */ 0xffff, /* cf49 */ 0xffff, /* cf4a */ 0xffff, /* cf4b */ 0xffff, /* cf4c */ 0xffff, /* cf4d */ 0xffff, /* cf4e */ 0xffff, /* cf4f */ 0xffff, /* cf50 */ 0xffff, /* cf51 */ 0xffff, /* cf52 */ 0xffff, /* cf53 */ 0xffff, /* cf54 */ 0xffff, /* cf55 */ 0xffff, /* cf56 */ 0xffff, /* cf57 */ 0xffff, /* cf58 */ 0xffff, /* cf59 */ 0xffff, /* cf5a */ 0xffff, /* cf5b */ 0xffff, /* cf5c */ 0xffff, /* cf5d */ 0xffff, /* cf5e */ 0xffff, /* cf5f */ 0xffff, /* cf60 */ 0xffff, /* cf61 */ 0xffff, /* cf62 */ 0xffff, /* cf63 */ 0xffff, /* cf64 */ 0xffff, /* cf65 */ 0xffff, /* cf66 */ 0xffff, /* cf67 */ 0xffff, /* cf68 */ 0xffff, /* cf69 */ 0xffff, /* cf6a */ 0xffff, /* cf6b */ 0xffff, /* cf6c */ 0xffff, /* cf6d */ 0xffff, /* cf6e */ 0xffff, /* cf6f */ 0xffff, /* cf70 */ 0xffff, /* cf71 */ 0xffff, /* cf72 */ 0xffff, /* cf73 */ 0xffff, /* cf74 */ 0xffff, /* cf75 */ 0xffff, /* cf76 */ 0xffff, /* cf77 */ 0xffff, /* cf78 */ 0xffff, /* cf79 */ 0xffff, /* cf7a */ 0xffff, /* cf7b */ 0xffff, /* cf7c */ 0xffff, /* cf7d */ 0xffff, /* cf7e */ 0xffff, /* cf7f */ 0xffff, /* cf80 */ 0xffff, /* cf81 */ 0xffff, /* cf82 */ 0xffff, /* cf83 */ 0xffff, /* cf84 */ 0xffff, /* cf85 */ 0xffff, /* cf86 */ 0xffff, /* cf87 */ 0xffff, /* cf88 */ 0xffff, /* cf89 */ 0xffff, /* cf8a */ 0xffff, /* cf8b */ 0xffff, /* cf8c */ 0xffff, /* cf8d */ 0xffff, /* cf8e */ 0xffff, /* cf8f */ 0xffff, /* cf90 */ 0xffff, /* cf91 */ 0xffff, /* cf92 */ 0xffff, /* cf93 */ 0xffff, /* cf94 */ 0xffff, /* cf95 */ 0xffff, /* cf96 */ 0xffff, /* cf97 */ 0xffff, /* cf98 */ 0xffff, /* cf99 */ 0xffff, /* cf9a */ 0xffff, /* cf9b */ 0xffff, /* cf9c */ 0xffff, /* cf9d */ 0xffff, /* cf9e */ 0xffff, /* cf9f */ 0xffff, /* cfa0 */ 0xffff, /* cfa1 */ 0xffff, /* cfa2 */ 0xffff, /* cfa3 */ 0xffff, /* cfa4 */ 0xffff, /* cfa5 */ 0xffff, /* cfa6 */ 0xffff, /* cfa7 */ 0xffff, /* cfa8 */ 0xffff, /* cfa9 */ 0xffff, /* cfaa */ 0xffff, /* cfab */ 0xffff, /* cfac */ 0xffff, /* cfad */ 0xffff, /* cfae */ 0xffff, /* cfaf */ 0xffff, /* cfb0 */ 0xffff, /* cfb1 */ 0xffff, /* cfb2 */ 0xffff, /* cfb3 */ 0xffff, /* cfb4 */ 0xffff, /* cfb5 */ 0xffff, /* cfb6 */ 0xffff, /* cfb7 */ 0xffff, /* cfb8 */ 0xffff, /* cfb9 */ 0xffff, /* cfba */ 0xffff, /* cfbb */ 0xffff, /* cfbc */ 0xffff, /* cfbd */ 0xffff, /* cfbe */ 0xffff, /* cfbf */ 0xffff, /* cfc0 */ 0xffff, /* cfc1 */ 0xffff, /* cfc2 */ 0xffff, /* cfc3 */ 0xffff, /* cfc4 */ 0xffff, /* cfc5 */ 0xffff, /* cfc6 */ 0xffff, /* cfc7 */ 0xffff, /* cfc8 */ 0xffff, /* cfc9 */ 0xffff, /* cfca */ 0xffff, /* cfcb */ 0xffff, /* cfcc */ 0xffff, /* cfcd */ 0xffff, /* cfce */ 0xffff, /* cfcf */ 0xffff, /* cfd0 */ 0xffff, /* cfd1 */ 0xffff, /* cfd2 */ 0xffff, /* cfd3 */ 0xffff, /* cfd4 */ 0xffff, /* cfd5 */ 0xffff, /* cfd6 */ 0xffff, /* cfd7 */ 0xffff, /* cfd8 */ 0xffff, /* cfd9 */ 0xffff, /* cfda */ 0xffff, /* cfdb */ 0xffff, /* cfdc */ 0xffff, /* cfdd */ 0xffff, /* cfde */ 0xffff, /* cfdf */ 0xffff, /* cfe0 */ 0xffff, /* cfe1 */ 0xffff, /* cfe2 */ 0xffff, /* cfe3 */ 0xffff, /* cfe4 */ 0xffff, /* cfe5 */ 0xffff, /* cfe6 */ 0xffff, /* cfe7 */ 0xffff, /* cfe8 */ 0xffff, /* cfe9 */ 0xffff, /* cfea */ 0xffff, /* cfeb */ 0xffff, /* cfec */ 0xffff, /* cfed */ 0xffff, /* cfee */ 0xffff, /* cfef */ 0xffff, /* cff0 */ 0xffff, /* cff1 */ 0xffff, /* cff2 */ 0xffff, /* cff3 */ 0xffff, /* cff4 */ 0xffff, /* cff5 */ 0xffff, /* cff6 */ 0xffff, /* cff7 */ 0xffff, /* cff8 */ 0xffff, /* cff9 */ 0xffff, /* cffa */ 0xffff, /* cffb */ 0xffff, /* cffc */ 0xffff, /* cffd */ 0xffff, /* cffe */ 0xffff, /* cfff */ 0xffff, /* d000 */ 0xffff, /* d001 */ 0xffff, /* d002 */ 0xffff, /* d003 */ 0xffff, /* d004 */ 0xffff, /* d005 */ 0xffff, /* d006 */ 0xffff, /* d007 */ 0xffff, /* d008 */ 0xffff, /* d009 */ 0xffff, /* d00a */ 0xffff, /* d00b */ 0xffff, /* d00c */ 0xffff, /* d00d */ 0xffff, /* d00e */ 0xffff, /* d00f */ 0xffff, /* d010 */ 0xffff, /* d011 */ 0xffff, /* d012 */ 0xffff, /* d013 */ 0xffff, /* d014 */ 0xffff, /* d015 */ 0xffff, /* d016 */ 0xffff, /* d017 */ 0xffff, /* d018 */ 0xffff, /* d019 */ 0xffff, /* d01a */ 0xffff, /* d01b */ 0xffff, /* d01c */ 0xffff, /* d01d */ 0xffff, /* d01e */ 0xffff, /* d01f */ 0xffff, /* d020 */ 0xffff, /* d021 */ 0xffff, /* d022 */ 0xffff, /* d023 */ 0xffff, /* d024 */ 0xffff, /* d025 */ 0xffff, /* d026 */ 0xffff, /* d027 */ 0xffff, /* d028 */ 0xffff, /* d029 */ 0xffff, /* d02a */ 0xffff, /* d02b */ 0xffff, /* d02c */ 0xffff, /* d02d */ 0xffff, /* d02e */ 0xffff, /* d02f */ 0xffff, /* d030 */ 0xffff, /* d031 */ 0xffff, /* d032 */ 0xffff, /* d033 */ 0xffff, /* d034 */ 0xffff, /* d035 */ 0xffff, /* d036 */ 0xffff, /* d037 */ 0xffff, /* d038 */ 0xffff, /* d039 */ 0xffff, /* d03a */ 0xffff, /* d03b */ 0xffff, /* d03c */ 0xffff, /* d03d */ 0xffff, /* d03e */ 0xffff, /* d03f */ 0xffff, /* d040 */ 0xffff, /* d041 */ 0xffff, /* d042 */ 0xffff, /* d043 */ 0xffff, /* d044 */ 0xffff, /* d045 */ 0xffff, /* d046 */ 0xffff, /* d047 */ 0xffff, /* d048 */ 0xffff, /* d049 */ 0xffff, /* d04a */ 0xffff, /* d04b */ 0xffff, /* d04c */ 0xffff, /* d04d */ 0xffff, /* d04e */ 0xffff, /* d04f */ 0xffff, /* d050 */ 0xffff, /* d051 */ 0xffff, /* d052 */ 0xffff, /* d053 */ 0xffff, /* d054 */ 0xffff, /* d055 */ 0xffff, /* d056 */ 0xffff, /* d057 */ 0xffff, /* d058 */ 0xffff, /* d059 */ 0xffff, /* d05a */ 0xffff, /* d05b */ 0xffff, /* d05c */ 0xffff, /* d05d */ 0xffff, /* d05e */ 0xffff, /* d05f */ 0xffff, /* d060 */ 0xffff, /* d061 */ 0xffff, /* d062 */ 0xffff, /* d063 */ 0xffff, /* d064 */ 0xffff, /* d065 */ 0xffff, /* d066 */ 0xffff, /* d067 */ 0xffff, /* d068 */ 0xffff, /* d069 */ 0xffff, /* d06a */ 0xffff, /* d06b */ 0xffff, /* d06c */ 0xffff, /* d06d */ 0xffff, /* d06e */ 0xffff, /* d06f */ 0xffff, /* d070 */ 0xffff, /* d071 */ 0xffff, /* d072 */ 0xffff, /* d073 */ 0xffff, /* d074 */ 0xffff, /* d075 */ 0xffff, /* d076 */ 0xffff, /* d077 */ 0xffff, /* d078 */ 0xffff, /* d079 */ 0xffff, /* d07a */ 0xffff, /* d07b */ 0xffff, /* d07c */ 0xffff, /* d07d */ 0xffff, /* d07e */ 0xffff, /* d07f */ 0xffff, /* d080 */ 0xffff, /* d081 */ 0xffff, /* d082 */ 0xffff, /* d083 */ 0xffff, /* d084 */ 0xffff, /* d085 */ 0xffff, /* d086 */ 0xffff, /* d087 */ 0xffff, /* d088 */ 0xffff, /* d089 */ 0xffff, /* d08a */ 0xffff, /* d08b */ 0xffff, /* d08c */ 0xffff, /* d08d */ 0xffff, /* d08e */ 0xffff, /* d08f */ 0xffff, /* d090 */ 0xffff, /* d091 */ 0xffff, /* d092 */ 0xffff, /* d093 */ 0xffff, /* d094 */ 0xffff, /* d095 */ 0xffff, /* d096 */ 0xffff, /* d097 */ 0xffff, /* d098 */ 0xffff, /* d099 */ 0xffff, /* d09a */ 0xffff, /* d09b */ 0xffff, /* d09c */ 0xffff, /* d09d */ 0xffff, /* d09e */ 0xffff, /* d09f */ 0xffff, /* d0a0 */ 0xffff, /* d0a1 */ 0xffff, /* d0a2 */ 0xffff, /* d0a3 */ 0xffff, /* d0a4 */ 0xffff, /* d0a5 */ 0xffff, /* d0a6 */ 0xffff, /* d0a7 */ 0xffff, /* d0a8 */ 0xffff, /* d0a9 */ 0xffff, /* d0aa */ 0xffff, /* d0ab */ 0xffff, /* d0ac */ 0xffff, /* d0ad */ 0xffff, /* d0ae */ 0xffff, /* d0af */ 0xffff, /* d0b0 */ 0xffff, /* d0b1 */ 0xffff, /* d0b2 */ 0xffff, /* d0b3 */ 0xffff, /* d0b4 */ 0xffff, /* d0b5 */ 0xffff, /* d0b6 */ 0xffff, /* d0b7 */ 0xffff, /* d0b8 */ 0xffff, /* d0b9 */ 0xffff, /* d0ba */ 0xffff, /* d0bb */ 0xffff, /* d0bc */ 0xffff, /* d0bd */ 0xffff, /* d0be */ 0xffff, /* d0bf */ 0xffff, /* d0c0 */ 0xffff, /* d0c1 */ 0xffff, /* d0c2 */ 0xffff, /* d0c3 */ 0xffff, /* d0c4 */ 0xffff, /* d0c5 */ 0xffff, /* d0c6 */ 0xffff, /* d0c7 */ 0xffff, /* d0c8 */ 0xffff, /* d0c9 */ 0xffff, /* d0ca */ 0xffff, /* d0cb */ 0xffff, /* d0cc */ 0xffff, /* d0cd */ 0xffff, /* d0ce */ 0xffff, /* d0cf */ 0xffff, /* d0d0 */ 0xffff, /* d0d1 */ 0xffff, /* d0d2 */ 0xffff, /* d0d3 */ 0xffff, /* d0d4 */ 0xffff, /* d0d5 */ 0xffff, /* d0d6 */ 0xffff, /* d0d7 */ 0xffff, /* d0d8 */ 0xffff, /* d0d9 */ 0xffff, /* d0da */ 0xffff, /* d0db */ 0xffff, /* d0dc */ 0xffff, /* d0dd */ 0xffff, /* d0de */ 0xffff, /* d0df */ 0xffff, /* d0e0 */ 0xffff, /* d0e1 */ 0xffff, /* d0e2 */ 0xffff, /* d0e3 */ 0xffff, /* d0e4 */ 0xffff, /* d0e5 */ 0xffff, /* d0e6 */ 0xffff, /* d0e7 */ 0xffff, /* d0e8 */ 0xffff, /* d0e9 */ 0xffff, /* d0ea */ 0xffff, /* d0eb */ 0xffff, /* d0ec */ 0xffff, /* d0ed */ 0xffff, /* d0ee */ 0xffff, /* d0ef */ 0xffff, /* d0f0 */ 0xffff, /* d0f1 */ 0xffff, /* d0f2 */ 0xffff, /* d0f3 */ 0xffff, /* d0f4 */ 0xffff, /* d0f5 */ 0xffff, /* d0f6 */ 0xffff, /* d0f7 */ 0xffff, /* d0f8 */ 0xffff, /* d0f9 */ 0xffff, /* d0fa */ 0xffff, /* d0fb */ 0xffff, /* d0fc */ 0xffff, /* d0fd */ 0xffff, /* d0fe */ 0xffff, /* d0ff */ 0xffff, /* d100 */ 0xffff, /* d101 */ 0xffff, /* d102 */ 0xffff, /* d103 */ 0xffff, /* d104 */ 0xffff, /* d105 */ 0xffff, /* d106 */ 0xffff, /* d107 */ 0xffff, /* d108 */ 0xffff, /* d109 */ 0xffff, /* d10a */ 0xffff, /* d10b */ 0xffff, /* d10c */ 0xffff, /* d10d */ 0xffff, /* d10e */ 0xffff, /* d10f */ 0xffff, /* d110 */ 0xffff, /* d111 */ 0xffff, /* d112 */ 0xffff, /* d113 */ 0xffff, /* d114 */ 0xffff, /* d115 */ 0xffff, /* d116 */ 0xffff, /* d117 */ 0xffff, /* d118 */ 0xffff, /* d119 */ 0xffff, /* d11a */ 0xffff, /* d11b */ 0xffff, /* d11c */ 0xffff, /* d11d */ 0xffff, /* d11e */ 0xffff, /* d11f */ 0xffff, /* d120 */ 0xffff, /* d121 */ 0xffff, /* d122 */ 0xffff, /* d123 */ 0xffff, /* d124 */ 0xffff, /* d125 */ 0xffff, /* d126 */ 0xffff, /* d127 */ 0xffff, /* d128 */ 0xffff, /* d129 */ 0xffff, /* d12a */ 0xffff, /* d12b */ 0xffff, /* d12c */ 0xffff, /* d12d */ 0xffff, /* d12e */ 0xffff, /* d12f */ 0xffff, /* d130 */ 0xffff, /* d131 */ 0xffff, /* d132 */ 0xffff, /* d133 */ 0xffff, /* d134 */ 0xffff, /* d135 */ 0xffff, /* d136 */ 0xffff, /* d137 */ 0xffff, /* d138 */ 0xffff, /* d139 */ 0xffff, /* d13a */ 0xffff, /* d13b */ 0xffff, /* d13c */ 0xffff, /* d13d */ 0xffff, /* d13e */ 0xffff, /* d13f */ 0xffff, /* d140 */ 0xffff, /* d141 */ 0xffff, /* d142 */ 0xffff, /* d143 */ 0xffff, /* d144 */ 0xffff, /* d145 */ 0xffff, /* d146 */ 0xffff, /* d147 */ 0xffff, /* d148 */ 0xffff, /* d149 */ 0xffff, /* d14a */ 0xffff, /* d14b */ 0xffff, /* d14c */ 0xffff, /* d14d */ 0xffff, /* d14e */ 0xffff, /* d14f */ 0xffff, /* d150 */ 0xffff, /* d151 */ 0xffff, /* d152 */ 0xffff, /* d153 */ 0xffff, /* d154 */ 0xffff, /* d155 */ 0xffff, /* d156 */ 0xffff, /* d157 */ 0xffff, /* d158 */ 0xffff, /* d159 */ 0xffff, /* d15a */ 0xffff, /* d15b */ 0xffff, /* d15c */ 0xffff, /* d15d */ 0xffff, /* d15e */ 0xffff, /* d15f */ 0xffff, /* d160 */ 0xffff, /* d161 */ 0xffff, /* d162 */ 0xffff, /* d163 */ 0xffff, /* d164 */ 0xffff, /* d165 */ 0xffff, /* d166 */ 0xffff, /* d167 */ 0xffff, /* d168 */ 0xffff, /* d169 */ 0xffff, /* d16a */ 0xffff, /* d16b */ 0xffff, /* d16c */ 0xffff, /* d16d */ 0xffff, /* d16e */ 0xffff, /* d16f */ 0xffff, /* d170 */ 0xffff, /* d171 */ 0xffff, /* d172 */ 0xffff, /* d173 */ 0xffff, /* d174 */ 0xffff, /* d175 */ 0xffff, /* d176 */ 0xffff, /* d177 */ 0xffff, /* d178 */ 0xffff, /* d179 */ 0xffff, /* d17a */ 0xffff, /* d17b */ 0xffff, /* d17c */ 0xffff, /* d17d */ 0xffff, /* d17e */ 0xffff, /* d17f */ 0xffff, /* d180 */ 0xffff, /* d181 */ 0xffff, /* d182 */ 0xffff, /* d183 */ 0xffff, /* d184 */ 0xffff, /* d185 */ 0xffff, /* d186 */ 0xffff, /* d187 */ 0xffff, /* d188 */ 0xffff, /* d189 */ 0xffff, /* d18a */ 0xffff, /* d18b */ 0xffff, /* d18c */ 0xffff, /* d18d */ 0xffff, /* d18e */ 0xffff, /* d18f */ 0xffff, /* d190 */ 0xffff, /* d191 */ 0xffff, /* d192 */ 0xffff, /* d193 */ 0xffff, /* d194 */ 0xffff, /* d195 */ 0xffff, /* d196 */ 0xffff, /* d197 */ 0xffff, /* d198 */ 0xffff, /* d199 */ 0xffff, /* d19a */ 0xffff, /* d19b */ 0xffff, /* d19c */ 0xffff, /* d19d */ 0xffff, /* d19e */ 0xffff, /* d19f */ 0xffff, /* d1a0 */ 0xffff, /* d1a1 */ 0xffff, /* d1a2 */ 0xffff, /* d1a3 */ 0xffff, /* d1a4 */ 0xffff, /* d1a5 */ 0xffff, /* d1a6 */ 0xffff, /* d1a7 */ 0xffff, /* d1a8 */ 0xffff, /* d1a9 */ 0xffff, /* d1aa */ 0xffff, /* d1ab */ 0xffff, /* d1ac */ 0xffff, /* d1ad */ 0xffff, /* d1ae */ 0xffff, /* d1af */ 0xffff, /* d1b0 */ 0xffff, /* d1b1 */ 0xffff, /* d1b2 */ 0xffff, /* d1b3 */ 0xffff, /* d1b4 */ 0xffff, /* d1b5 */ 0xffff, /* d1b6 */ 0xffff, /* d1b7 */ 0xffff, /* d1b8 */ 0xffff, /* d1b9 */ 0xffff, /* d1ba */ 0xffff, /* d1bb */ 0xffff, /* d1bc */ 0xffff, /* d1bd */ 0xffff, /* d1be */ 0xffff, /* d1bf */ 0xffff, /* d1c0 */ 0xffff, /* d1c1 */ 0xffff, /* d1c2 */ 0xffff, /* d1c3 */ 0xffff, /* d1c4 */ 0xffff, /* d1c5 */ 0xffff, /* d1c6 */ 0xffff, /* d1c7 */ 0xffff, /* d1c8 */ 0xffff, /* d1c9 */ 0xffff, /* d1ca */ 0xffff, /* d1cb */ 0xffff, /* d1cc */ 0xffff, /* d1cd */ 0xffff, /* d1ce */ 0xffff, /* d1cf */ 0xffff, /* d1d0 */ 0xffff, /* d1d1 */ 0xffff, /* d1d2 */ 0xffff, /* d1d3 */ 0xffff, /* d1d4 */ 0xffff, /* d1d5 */ 0xffff, /* d1d6 */ 0xffff, /* d1d7 */ 0xffff, /* d1d8 */ 0xffff, /* d1d9 */ 0xffff, /* d1da */ 0xffff, /* d1db */ 0xffff, /* d1dc */ 0xffff, /* d1dd */ 0xffff, /* d1de */ 0xffff, /* d1df */ 0xffff, /* d1e0 */ 0xffff, /* d1e1 */ 0xffff, /* d1e2 */ 0xffff, /* d1e3 */ 0xffff, /* d1e4 */ 0xffff, /* d1e5 */ 0xffff, /* d1e6 */ 0xffff, /* d1e7 */ 0xffff, /* d1e8 */ 0xffff, /* d1e9 */ 0xffff, /* d1ea */ 0xffff, /* d1eb */ 0xffff, /* d1ec */ 0xffff, /* d1ed */ 0xffff, /* d1ee */ 0xffff, /* d1ef */ 0xffff, /* d1f0 */ 0xffff, /* d1f1 */ 0xffff, /* d1f2 */ 0xffff, /* d1f3 */ 0xffff, /* d1f4 */ 0xffff, /* d1f5 */ 0xffff, /* d1f6 */ 0xffff, /* d1f7 */ 0xffff, /* d1f8 */ 0xffff, /* d1f9 */ 0xffff, /* d1fa */ 0xffff, /* d1fb */ 0xffff, /* d1fc */ 0xffff, /* d1fd */ 0xffff, /* d1fe */ 0xffff, /* d1ff */ 0xffff, /* d200 */ 0xffff, /* d201 */ 0xffff, /* d202 */ 0xffff, /* d203 */ 0xffff, /* d204 */ 0xffff, /* d205 */ 0xffff, /* d206 */ 0xffff, /* d207 */ 0xffff, /* d208 */ 0xffff, /* d209 */ 0xffff, /* d20a */ 0xffff, /* d20b */ 0xffff, /* d20c */ 0xffff, /* d20d */ 0xffff, /* d20e */ 0xffff, /* d20f */ 0xffff, /* d210 */ 0xffff, /* d211 */ 0xffff, /* d212 */ 0xffff, /* d213 */ 0xffff, /* d214 */ 0xffff, /* d215 */ 0xffff, /* d216 */ 0xffff, /* d217 */ 0xffff, /* d218 */ 0xffff, /* d219 */ 0xffff, /* d21a */ 0xffff, /* d21b */ 0xffff, /* d21c */ 0xffff, /* d21d */ 0xffff, /* d21e */ 0xffff, /* d21f */ 0xffff, /* d220 */ 0xffff, /* d221 */ 0xffff, /* d222 */ 0xffff, /* d223 */ 0xffff, /* d224 */ 0xffff, /* d225 */ 0xffff, /* d226 */ 0xffff, /* d227 */ 0xffff, /* d228 */ 0xffff, /* d229 */ 0xffff, /* d22a */ 0xffff, /* d22b */ 0xffff, /* d22c */ 0xffff, /* d22d */ 0xffff, /* d22e */ 0xffff, /* d22f */ 0xffff, /* d230 */ 0xffff, /* d231 */ 0xffff, /* d232 */ 0xffff, /* d233 */ 0xffff, /* d234 */ 0xffff, /* d235 */ 0xffff, /* d236 */ 0xffff, /* d237 */ 0xffff, /* d238 */ 0xffff, /* d239 */ 0xffff, /* d23a */ 0xffff, /* d23b */ 0xffff, /* d23c */ 0xffff, /* d23d */ 0xffff, /* d23e */ 0xffff, /* d23f */ 0xffff, /* d240 */ 0xffff, /* d241 */ 0xffff, /* d242 */ 0xffff, /* d243 */ 0xffff, /* d244 */ 0xffff, /* d245 */ 0xffff, /* d246 */ 0xffff, /* d247 */ 0xffff, /* d248 */ 0xffff, /* d249 */ 0xffff, /* d24a */ 0xffff, /* d24b */ 0xffff, /* d24c */ 0xffff, /* d24d */ 0xffff, /* d24e */ 0xffff, /* d24f */ 0xffff, /* d250 */ 0xffff, /* d251 */ 0xffff, /* d252 */ 0xffff, /* d253 */ 0xffff, /* d254 */ 0xffff, /* d255 */ 0xffff, /* d256 */ 0xffff, /* d257 */ 0xffff, /* d258 */ 0xffff, /* d259 */ 0xffff, /* d25a */ 0xffff, /* d25b */ 0xffff, /* d25c */ 0xffff, /* d25d */ 0xffff, /* d25e */ 0xffff, /* d25f */ 0xffff, /* d260 */ 0xffff, /* d261 */ 0xffff, /* d262 */ 0xffff, /* d263 */ 0xffff, /* d264 */ 0xffff, /* d265 */ 0xffff, /* d266 */ 0xffff, /* d267 */ 0xffff, /* d268 */ 0xffff, /* d269 */ 0xffff, /* d26a */ 0xffff, /* d26b */ 0xffff, /* d26c */ 0xffff, /* d26d */ 0xffff, /* d26e */ 0xffff, /* d26f */ 0xffff, /* d270 */ 0xffff, /* d271 */ 0xffff, /* d272 */ 0xffff, /* d273 */ 0xffff, /* d274 */ 0xffff, /* d275 */ 0xffff, /* d276 */ 0xffff, /* d277 */ 0xffff, /* d278 */ 0xffff, /* d279 */ 0xffff, /* d27a */ 0xffff, /* d27b */ 0xffff, /* d27c */ 0xffff, /* d27d */ 0xffff, /* d27e */ 0xffff, /* d27f */ 0xffff, /* d280 */ 0xffff, /* d281 */ 0xffff, /* d282 */ 0xffff, /* d283 */ 0xffff, /* d284 */ 0xffff, /* d285 */ 0xffff, /* d286 */ 0xffff, /* d287 */ 0xffff, /* d288 */ 0xffff, /* d289 */ 0xffff, /* d28a */ 0xffff, /* d28b */ 0xffff, /* d28c */ 0xffff, /* d28d */ 0xffff, /* d28e */ 0xffff, /* d28f */ 0xffff, /* d290 */ 0xffff, /* d291 */ 0xffff, /* d292 */ 0xffff, /* d293 */ 0xffff, /* d294 */ 0xffff, /* d295 */ 0xffff, /* d296 */ 0xffff, /* d297 */ 0xffff, /* d298 */ 0xffff, /* d299 */ 0xffff, /* d29a */ 0xffff, /* d29b */ 0xffff, /* d29c */ 0xffff, /* d29d */ 0xffff, /* d29e */ 0xffff, /* d29f */ 0xffff, /* d2a0 */ 0xffff, /* d2a1 */ 0xffff, /* d2a2 */ 0xffff, /* d2a3 */ 0xffff, /* d2a4 */ 0xffff, /* d2a5 */ 0xffff, /* d2a6 */ 0xffff, /* d2a7 */ 0xffff, /* d2a8 */ 0xffff, /* d2a9 */ 0xffff, /* d2aa */ 0xffff, /* d2ab */ 0xffff, /* d2ac */ 0xffff, /* d2ad */ 0xffff, /* d2ae */ 0xffff, /* d2af */ 0xffff, /* d2b0 */ 0xffff, /* d2b1 */ 0xffff, /* d2b2 */ 0xffff, /* d2b3 */ 0xffff, /* d2b4 */ 0xffff, /* d2b5 */ 0xffff, /* d2b6 */ 0xffff, /* d2b7 */ 0xffff, /* d2b8 */ 0xffff, /* d2b9 */ 0xffff, /* d2ba */ 0xffff, /* d2bb */ 0xffff, /* d2bc */ 0xffff, /* d2bd */ 0xffff, /* d2be */ 0xffff, /* d2bf */ 0xffff, /* d2c0 */ 0xffff, /* d2c1 */ 0xffff, /* d2c2 */ 0xffff, /* d2c3 */ 0xffff, /* d2c4 */ 0xffff, /* d2c5 */ 0xffff, /* d2c6 */ 0xffff, /* d2c7 */ 0xffff, /* d2c8 */ 0xffff, /* d2c9 */ 0xffff, /* d2ca */ 0xffff, /* d2cb */ 0xffff, /* d2cc */ 0xffff, /* d2cd */ 0xffff, /* d2ce */ 0xffff, /* d2cf */ 0xffff, /* d2d0 */ 0xffff, /* d2d1 */ 0xffff, /* d2d2 */ 0xffff, /* d2d3 */ 0xffff, /* d2d4 */ 0xffff, /* d2d5 */ 0xffff, /* d2d6 */ 0xffff, /* d2d7 */ 0xffff, /* d2d8 */ 0xffff, /* d2d9 */ 0xffff, /* d2da */ 0xffff, /* d2db */ 0xffff, /* d2dc */ 0xffff, /* d2dd */ 0xffff, /* d2de */ 0xffff, /* d2df */ 0xffff, /* d2e0 */ 0xffff, /* d2e1 */ 0xffff, /* d2e2 */ 0xffff, /* d2e3 */ 0xffff, /* d2e4 */ 0xffff, /* d2e5 */ 0xffff, /* d2e6 */ 0xffff, /* d2e7 */ 0xffff, /* d2e8 */ 0xffff, /* d2e9 */ 0xffff, /* d2ea */ 0xffff, /* d2eb */ 0xffff, /* d2ec */ 0xffff, /* d2ed */ 0xffff, /* d2ee */ 0xffff, /* d2ef */ 0xffff, /* d2f0 */ 0xffff, /* d2f1 */ 0xffff, /* d2f2 */ 0xffff, /* d2f3 */ 0xffff, /* d2f4 */ 0xffff, /* d2f5 */ 0xffff, /* d2f6 */ 0xffff, /* d2f7 */ 0xffff, /* d2f8 */ 0xffff, /* d2f9 */ 0xffff, /* d2fa */ 0xffff, /* d2fb */ 0xffff, /* d2fc */ 0xffff, /* d2fd */ 0xffff, /* d2fe */ 0xffff, /* d2ff */ 0xffff, /* d300 */ 0xffff, /* d301 */ 0xffff, /* d302 */ 0xffff, /* d303 */ 0xffff, /* d304 */ 0xffff, /* d305 */ 0xffff, /* d306 */ 0xffff, /* d307 */ 0xffff, /* d308 */ 0xffff, /* d309 */ 0xffff, /* d30a */ 0xffff, /* d30b */ 0xffff, /* d30c */ 0xffff, /* d30d */ 0xffff, /* d30e */ 0xffff, /* d30f */ 0xffff, /* d310 */ 0xffff, /* d311 */ 0xffff, /* d312 */ 0xffff, /* d313 */ 0xffff, /* d314 */ 0xffff, /* d315 */ 0xffff, /* d316 */ 0xffff, /* d317 */ 0xffff, /* d318 */ 0xffff, /* d319 */ 0xffff, /* d31a */ 0xffff, /* d31b */ 0xffff, /* d31c */ 0xffff, /* d31d */ 0xffff, /* d31e */ 0xffff, /* d31f */ 0xffff, /* d320 */ 0xffff, /* d321 */ 0xffff, /* d322 */ 0xffff, /* d323 */ 0xffff, /* d324 */ 0xffff, /* d325 */ 0xffff, /* d326 */ 0xffff, /* d327 */ 0xffff, /* d328 */ 0xffff, /* d329 */ 0xffff, /* d32a */ 0xffff, /* d32b */ 0xffff, /* d32c */ 0xffff, /* d32d */ 0xffff, /* d32e */ 0xffff, /* d32f */ 0xffff, /* d330 */ 0xffff, /* d331 */ 0xffff, /* d332 */ 0xffff, /* d333 */ 0xffff, /* d334 */ 0xffff, /* d335 */ 0xffff, /* d336 */ 0xffff, /* d337 */ 0xffff, /* d338 */ 0xffff, /* d339 */ 0xffff, /* d33a */ 0xffff, /* d33b */ 0xffff, /* d33c */ 0xffff, /* d33d */ 0xffff, /* d33e */ 0xffff, /* d33f */ 0xffff, /* d340 */ 0xffff, /* d341 */ 0xffff, /* d342 */ 0xffff, /* d343 */ 0xffff, /* d344 */ 0xffff, /* d345 */ 0xffff, /* d346 */ 0xffff, /* d347 */ 0xffff, /* d348 */ 0xffff, /* d349 */ 0xffff, /* d34a */ 0xffff, /* d34b */ 0xffff, /* d34c */ 0xffff, /* d34d */ 0xffff, /* d34e */ 0xffff, /* d34f */ 0xffff, /* d350 */ 0xffff, /* d351 */ 0xffff, /* d352 */ 0xffff, /* d353 */ 0xffff, /* d354 */ 0xffff, /* d355 */ 0xffff, /* d356 */ 0xffff, /* d357 */ 0xffff, /* d358 */ 0xffff, /* d359 */ 0xffff, /* d35a */ 0xffff, /* d35b */ 0xffff, /* d35c */ 0xffff, /* d35d */ 0xffff, /* d35e */ 0xffff, /* d35f */ 0xffff, /* d360 */ 0xffff, /* d361 */ 0xffff, /* d362 */ 0xffff, /* d363 */ 0xffff, /* d364 */ 0xffff, /* d365 */ 0xffff, /* d366 */ 0xffff, /* d367 */ 0xffff, /* d368 */ 0xffff, /* d369 */ 0xffff, /* d36a */ 0xffff, /* d36b */ 0xffff, /* d36c */ 0xffff, /* d36d */ 0xffff, /* d36e */ 0xffff, /* d36f */ 0xffff, /* d370 */ 0xffff, /* d371 */ 0xffff, /* d372 */ 0xffff, /* d373 */ 0xffff, /* d374 */ 0xffff, /* d375 */ 0xffff, /* d376 */ 0xffff, /* d377 */ 0xffff, /* d378 */ 0xffff, /* d379 */ 0xffff, /* d37a */ 0xffff, /* d37b */ 0xffff, /* d37c */ 0xffff, /* d37d */ 0xffff, /* d37e */ 0xffff, /* d37f */ 0xffff, /* d380 */ 0xffff, /* d381 */ 0xffff, /* d382 */ 0xffff, /* d383 */ 0xffff, /* d384 */ 0xffff, /* d385 */ 0xffff, /* d386 */ 0xffff, /* d387 */ 0xffff, /* d388 */ 0xffff, /* d389 */ 0xffff, /* d38a */ 0xffff, /* d38b */ 0xffff, /* d38c */ 0xffff, /* d38d */ 0xffff, /* d38e */ 0xffff, /* d38f */ 0xffff, /* d390 */ 0xffff, /* d391 */ 0xffff, /* d392 */ 0xffff, /* d393 */ 0xffff, /* d394 */ 0xffff, /* d395 */ 0xffff, /* d396 */ 0xffff, /* d397 */ 0xffff, /* d398 */ 0xffff, /* d399 */ 0xffff, /* d39a */ 0xffff, /* d39b */ 0xffff, /* d39c */ 0xffff, /* d39d */ 0xffff, /* d39e */ 0xffff, /* d39f */ 0xffff, /* d3a0 */ 0xffff, /* d3a1 */ 0xffff, /* d3a2 */ 0xffff, /* d3a3 */ 0xffff, /* d3a4 */ 0xffff, /* d3a5 */ 0xffff, /* d3a6 */ 0xffff, /* d3a7 */ 0xffff, /* d3a8 */ 0xffff, /* d3a9 */ 0xffff, /* d3aa */ 0xffff, /* d3ab */ 0xffff, /* d3ac */ 0xffff, /* d3ad */ 0xffff, /* d3ae */ 0xffff, /* d3af */ 0xffff, /* d3b0 */ 0xffff, /* d3b1 */ 0xffff, /* d3b2 */ 0xffff, /* d3b3 */ 0xffff, /* d3b4 */ 0xffff, /* d3b5 */ 0xffff, /* d3b6 */ 0xffff, /* d3b7 */ 0xffff, /* d3b8 */ 0xffff, /* d3b9 */ 0xffff, /* d3ba */ 0xffff, /* d3bb */ 0xffff, /* d3bc */ 0xffff, /* d3bd */ 0xffff, /* d3be */ 0xffff, /* d3bf */ 0xffff, /* d3c0 */ 0xffff, /* d3c1 */ 0xffff, /* d3c2 */ 0xffff, /* d3c3 */ 0xffff, /* d3c4 */ 0xffff, /* d3c5 */ 0xffff, /* d3c6 */ 0xffff, /* d3c7 */ 0xffff, /* d3c8 */ 0xffff, /* d3c9 */ 0xffff, /* d3ca */ 0xffff, /* d3cb */ 0xffff, /* d3cc */ 0xffff, /* d3cd */ 0xffff, /* d3ce */ 0xffff, /* d3cf */ 0xffff, /* d3d0 */ 0xffff, /* d3d1 */ 0xffff, /* d3d2 */ 0xffff, /* d3d3 */ 0xffff, /* d3d4 */ 0xffff, /* d3d5 */ 0xffff, /* d3d6 */ 0xffff, /* d3d7 */ 0xffff, /* d3d8 */ 0xffff, /* d3d9 */ 0xffff, /* d3da */ 0xffff, /* d3db */ 0xffff, /* d3dc */ 0xffff, /* d3dd */ 0xffff, /* d3de */ 0xffff, /* d3df */ 0xffff, /* d3e0 */ 0xffff, /* d3e1 */ 0xffff, /* d3e2 */ 0xffff, /* d3e3 */ 0xffff, /* d3e4 */ 0xffff, /* d3e5 */ 0xffff, /* d3e6 */ 0xffff, /* d3e7 */ 0xffff, /* d3e8 */ 0xffff, /* d3e9 */ 0xffff, /* d3ea */ 0xffff, /* d3eb */ 0xffff, /* d3ec */ 0xffff, /* d3ed */ 0xffff, /* d3ee */ 0xffff, /* d3ef */ 0xffff, /* d3f0 */ 0xffff, /* d3f1 */ 0xffff, /* d3f2 */ 0xffff, /* d3f3 */ 0xffff, /* d3f4 */ 0xffff, /* d3f5 */ 0xffff, /* d3f6 */ 0xffff, /* d3f7 */ 0xffff, /* d3f8 */ 0xffff, /* d3f9 */ 0xffff, /* d3fa */ 0xffff, /* d3fb */ 0xffff, /* d3fc */ 0xffff, /* d3fd */ 0xffff, /* d3fe */ 0xffff, /* d3ff */ 0xffff, /* d400 */ 0xffff, /* d401 */ 0xffff, /* d402 */ 0xffff, /* d403 */ 0xffff, /* d404 */ 0xffff, /* d405 */ 0xffff, /* d406 */ 0xffff, /* d407 */ 0xffff, /* d408 */ 0xffff, /* d409 */ 0xffff, /* d40a */ 0xffff, /* d40b */ 0xffff, /* d40c */ 0xffff, /* d40d */ 0xffff, /* d40e */ 0xffff, /* d40f */ 0xffff, /* d410 */ 0xffff, /* d411 */ 0xffff, /* d412 */ 0xffff, /* d413 */ 0xffff, /* d414 */ 0xffff, /* d415 */ 0xffff, /* d416 */ 0xffff, /* d417 */ 0xffff, /* d418 */ 0xffff, /* d419 */ 0xffff, /* d41a */ 0xffff, /* d41b */ 0xffff, /* d41c */ 0xffff, /* d41d */ 0xffff, /* d41e */ 0xffff, /* d41f */ 0xffff, /* d420 */ 0xffff, /* d421 */ 0xffff, /* d422 */ 0xffff, /* d423 */ 0xffff, /* d424 */ 0xffff, /* d425 */ 0xffff, /* d426 */ 0xffff, /* d427 */ 0xffff, /* d428 */ 0xffff, /* d429 */ 0xffff, /* d42a */ 0xffff, /* d42b */ 0xffff, /* d42c */ 0xffff, /* d42d */ 0xffff, /* d42e */ 0xffff, /* d42f */ 0xffff, /* d430 */ 0xffff, /* d431 */ 0xffff, /* d432 */ 0xffff, /* d433 */ 0xffff, /* d434 */ 0xffff, /* d435 */ 0xffff, /* d436 */ 0xffff, /* d437 */ 0xffff, /* d438 */ 0xffff, /* d439 */ 0xffff, /* d43a */ 0xffff, /* d43b */ 0xffff, /* d43c */ 0xffff, /* d43d */ 0xffff, /* d43e */ 0xffff, /* d43f */ 0xffff, /* d440 */ 0xffff, /* d441 */ 0xffff, /* d442 */ 0xffff, /* d443 */ 0xffff, /* d444 */ 0xffff, /* d445 */ 0xffff, /* d446 */ 0xffff, /* d447 */ 0xffff, /* d448 */ 0xffff, /* d449 */ 0xffff, /* d44a */ 0xffff, /* d44b */ 0xffff, /* d44c */ 0xffff, /* d44d */ 0xffff, /* d44e */ 0xffff, /* d44f */ 0xffff, /* d450 */ 0xffff, /* d451 */ 0xffff, /* d452 */ 0xffff, /* d453 */ 0xffff, /* d454 */ 0xffff, /* d455 */ 0xffff, /* d456 */ 0xffff, /* d457 */ 0xffff, /* d458 */ 0xffff, /* d459 */ 0xffff, /* d45a */ 0xffff, /* d45b */ 0xffff, /* d45c */ 0xffff, /* d45d */ 0xffff, /* d45e */ 0xffff, /* d45f */ 0xffff, /* d460 */ 0xffff, /* d461 */ 0xffff, /* d462 */ 0xffff, /* d463 */ 0xffff, /* d464 */ 0xffff, /* d465 */ 0xffff, /* d466 */ 0xffff, /* d467 */ 0xffff, /* d468 */ 0xffff, /* d469 */ 0xffff, /* d46a */ 0xffff, /* d46b */ 0xffff, /* d46c */ 0xffff, /* d46d */ 0xffff, /* d46e */ 0xffff, /* d46f */ 0xffff, /* d470 */ 0xffff, /* d471 */ 0xffff, /* d472 */ 0xffff, /* d473 */ 0xffff, /* d474 */ 0xffff, /* d475 */ 0xffff, /* d476 */ 0xffff, /* d477 */ 0xffff, /* d478 */ 0xffff, /* d479 */ 0xffff, /* d47a */ 0xffff, /* d47b */ 0xffff, /* d47c */ 0xffff, /* d47d */ 0xffff, /* d47e */ 0xffff, /* d47f */ 0xffff, /* d480 */ 0xffff, /* d481 */ 0xffff, /* d482 */ 0xffff, /* d483 */ 0xffff, /* d484 */ 0xffff, /* d485 */ 0xffff, /* d486 */ 0xffff, /* d487 */ 0xffff, /* d488 */ 0xffff, /* d489 */ 0xffff, /* d48a */ 0xffff, /* d48b */ 0xffff, /* d48c */ 0xffff, /* d48d */ 0xffff, /* d48e */ 0xffff, /* d48f */ 0xffff, /* d490 */ 0xffff, /* d491 */ 0xffff, /* d492 */ 0xffff, /* d493 */ 0xffff, /* d494 */ 0xffff, /* d495 */ 0xffff, /* d496 */ 0xffff, /* d497 */ 0xffff, /* d498 */ 0xffff, /* d499 */ 0xffff, /* d49a */ 0xffff, /* d49b */ 0xffff, /* d49c */ 0xffff, /* d49d */ 0xffff, /* d49e */ 0xffff, /* d49f */ 0xffff, /* d4a0 */ 0xffff, /* d4a1 */ 0xffff, /* d4a2 */ 0xffff, /* d4a3 */ 0xffff, /* d4a4 */ 0xffff, /* d4a5 */ 0xffff, /* d4a6 */ 0xffff, /* d4a7 */ 0xffff, /* d4a8 */ 0xffff, /* d4a9 */ 0xffff, /* d4aa */ 0xffff, /* d4ab */ 0xffff, /* d4ac */ 0xffff, /* d4ad */ 0xffff, /* d4ae */ 0xffff, /* d4af */ 0xffff, /* d4b0 */ 0xffff, /* d4b1 */ 0xffff, /* d4b2 */ 0xffff, /* d4b3 */ 0xffff, /* d4b4 */ 0xffff, /* d4b5 */ 0xffff, /* d4b6 */ 0xffff, /* d4b7 */ 0xffff, /* d4b8 */ 0xffff, /* d4b9 */ 0xffff, /* d4ba */ 0xffff, /* d4bb */ 0xffff, /* d4bc */ 0xffff, /* d4bd */ 0xffff, /* d4be */ 0xffff, /* d4bf */ 0xffff, /* d4c0 */ 0xffff, /* d4c1 */ 0xffff, /* d4c2 */ 0xffff, /* d4c3 */ 0xffff, /* d4c4 */ 0xffff, /* d4c5 */ 0xffff, /* d4c6 */ 0xffff, /* d4c7 */ 0xffff, /* d4c8 */ 0xffff, /* d4c9 */ 0xffff, /* d4ca */ 0xffff, /* d4cb */ 0xffff, /* d4cc */ 0xffff, /* d4cd */ 0xffff, /* d4ce */ 0xffff, /* d4cf */ 0xffff, /* d4d0 */ 0xffff, /* d4d1 */ 0xffff, /* d4d2 */ 0xffff, /* d4d3 */ 0xffff, /* d4d4 */ 0xffff, /* d4d5 */ 0xffff, /* d4d6 */ 0xffff, /* d4d7 */ 0xffff, /* d4d8 */ 0xffff, /* d4d9 */ 0xffff, /* d4da */ 0xffff, /* d4db */ 0xffff, /* d4dc */ 0xffff, /* d4dd */ 0xffff, /* d4de */ 0xffff, /* d4df */ 0xffff, /* d4e0 */ 0xffff, /* d4e1 */ 0xffff, /* d4e2 */ 0xffff, /* d4e3 */ 0xffff, /* d4e4 */ 0xffff, /* d4e5 */ 0xffff, /* d4e6 */ 0xffff, /* d4e7 */ 0xffff, /* d4e8 */ 0xffff, /* d4e9 */ 0xffff, /* d4ea */ 0xffff, /* d4eb */ 0xffff, /* d4ec */ 0xffff, /* d4ed */ 0xffff, /* d4ee */ 0xffff, /* d4ef */ 0xffff, /* d4f0 */ 0xffff, /* d4f1 */ 0xffff, /* d4f2 */ 0xffff, /* d4f3 */ 0xffff, /* d4f4 */ 0xffff, /* d4f5 */ 0xffff, /* d4f6 */ 0xffff, /* d4f7 */ 0xffff, /* d4f8 */ 0xffff, /* d4f9 */ 0xffff, /* d4fa */ 0xffff, /* d4fb */ 0xffff, /* d4fc */ 0xffff, /* d4fd */ 0xffff, /* d4fe */ 0xffff, /* d4ff */ 0xffff, /* d500 */ 0xffff, /* d501 */ 0xffff, /* d502 */ 0xffff, /* d503 */ 0xffff, /* d504 */ 0xffff, /* d505 */ 0xffff, /* d506 */ 0xffff, /* d507 */ 0xffff, /* d508 */ 0xffff, /* d509 */ 0xffff, /* d50a */ 0xffff, /* d50b */ 0xffff, /* d50c */ 0xffff, /* d50d */ 0xffff, /* d50e */ 0xffff, /* d50f */ 0xffff, /* d510 */ 0xffff, /* d511 */ 0xffff, /* d512 */ 0xffff, /* d513 */ 0xffff, /* d514 */ 0xffff, /* d515 */ 0xffff, /* d516 */ 0xffff, /* d517 */ 0xffff, /* d518 */ 0xffff, /* d519 */ 0xffff, /* d51a */ 0xffff, /* d51b */ 0xffff, /* d51c */ 0xffff, /* d51d */ 0xffff, /* d51e */ 0xffff, /* d51f */ 0xffff, /* d520 */ 0xffff, /* d521 */ 0xffff, /* d522 */ 0xffff, /* d523 */ 0xffff, /* d524 */ 0xffff, /* d525 */ 0xffff, /* d526 */ 0xffff, /* d527 */ 0xffff, /* d528 */ 0xffff, /* d529 */ 0xffff, /* d52a */ 0xffff, /* d52b */ 0xffff, /* d52c */ 0xffff, /* d52d */ 0xffff, /* d52e */ 0xffff, /* d52f */ 0xffff, /* d530 */ 0xffff, /* d531 */ 0xffff, /* d532 */ 0xffff, /* d533 */ 0xffff, /* d534 */ 0xffff, /* d535 */ 0xffff, /* d536 */ 0xffff, /* d537 */ 0xffff, /* d538 */ 0xffff, /* d539 */ 0xffff, /* d53a */ 0xffff, /* d53b */ 0xffff, /* d53c */ 0xffff, /* d53d */ 0xffff, /* d53e */ 0xffff, /* d53f */ 0xffff, /* d540 */ 0xffff, /* d541 */ 0xffff, /* d542 */ 0xffff, /* d543 */ 0xffff, /* d544 */ 0xffff, /* d545 */ 0xffff, /* d546 */ 0xffff, /* d547 */ 0xffff, /* d548 */ 0xffff, /* d549 */ 0xffff, /* d54a */ 0xffff, /* d54b */ 0xffff, /* d54c */ 0xffff, /* d54d */ 0xffff, /* d54e */ 0xffff, /* d54f */ 0xffff, /* d550 */ 0xffff, /* d551 */ 0xffff, /* d552 */ 0xffff, /* d553 */ 0xffff, /* d554 */ 0xffff, /* d555 */ 0xffff, /* d556 */ 0xffff, /* d557 */ 0xffff, /* d558 */ 0xffff, /* d559 */ 0xffff, /* d55a */ 0xffff, /* d55b */ 0xffff, /* d55c */ 0xffff, /* d55d */ 0xffff, /* d55e */ 0xffff, /* d55f */ 0xffff, /* d560 */ 0xffff, /* d561 */ 0xffff, /* d562 */ 0xffff, /* d563 */ 0xffff, /* d564 */ 0xffff, /* d565 */ 0xffff, /* d566 */ 0xffff, /* d567 */ 0xffff, /* d568 */ 0xffff, /* d569 */ 0xffff, /* d56a */ 0xffff, /* d56b */ 0xffff, /* d56c */ 0xffff, /* d56d */ 0xffff, /* d56e */ 0xffff, /* d56f */ 0xffff, /* d570 */ 0xffff, /* d571 */ 0xffff, /* d572 */ 0xffff, /* d573 */ 0xffff, /* d574 */ 0xffff, /* d575 */ 0xffff, /* d576 */ 0xffff, /* d577 */ 0xffff, /* d578 */ 0xffff, /* d579 */ 0xffff, /* d57a */ 0xffff, /* d57b */ 0xffff, /* d57c */ 0xffff, /* d57d */ 0xffff, /* d57e */ 0xffff, /* d57f */ 0xffff, /* d580 */ 0xffff, /* d581 */ 0xffff, /* d582 */ 0xffff, /* d583 */ 0xffff, /* d584 */ 0xffff, /* d585 */ 0xffff, /* d586 */ 0xffff, /* d587 */ 0xffff, /* d588 */ 0xffff, /* d589 */ 0xffff, /* d58a */ 0xffff, /* d58b */ 0xffff, /* d58c */ 0xffff, /* d58d */ 0xffff, /* d58e */ 0xffff, /* d58f */ 0xffff, /* d590 */ 0xffff, /* d591 */ 0xffff, /* d592 */ 0xffff, /* d593 */ 0xffff, /* d594 */ 0xffff, /* d595 */ 0xffff, /* d596 */ 0xffff, /* d597 */ 0xffff, /* d598 */ 0xffff, /* d599 */ 0xffff, /* d59a */ 0xffff, /* d59b */ 0xffff, /* d59c */ 0xffff, /* d59d */ 0xffff, /* d59e */ 0xffff, /* d59f */ 0xffff, /* d5a0 */ 0xffff, /* d5a1 */ 0xffff, /* d5a2 */ 0xffff, /* d5a3 */ 0xffff, /* d5a4 */ 0xffff, /* d5a5 */ 0xffff, /* d5a6 */ 0xffff, /* d5a7 */ 0xffff, /* d5a8 */ 0xffff, /* d5a9 */ 0xffff, /* d5aa */ 0xffff, /* d5ab */ 0xffff, /* d5ac */ 0xffff, /* d5ad */ 0xffff, /* d5ae */ 0xffff, /* d5af */ 0xffff, /* d5b0 */ 0xffff, /* d5b1 */ 0xffff, /* d5b2 */ 0xffff, /* d5b3 */ 0xffff, /* d5b4 */ 0xffff, /* d5b5 */ 0xffff, /* d5b6 */ 0xffff, /* d5b7 */ 0xffff, /* d5b8 */ 0xffff, /* d5b9 */ 0xffff, /* d5ba */ 0xffff, /* d5bb */ 0xffff, /* d5bc */ 0xffff, /* d5bd */ 0xffff, /* d5be */ 0xffff, /* d5bf */ 0xffff, /* d5c0 */ 0xffff, /* d5c1 */ 0xffff, /* d5c2 */ 0xffff, /* d5c3 */ 0xffff, /* d5c4 */ 0xffff, /* d5c5 */ 0xffff, /* d5c6 */ 0xffff, /* d5c7 */ 0xffff, /* d5c8 */ 0xffff, /* d5c9 */ 0xffff, /* d5ca */ 0xffff, /* d5cb */ 0xffff, /* d5cc */ 0xffff, /* d5cd */ 0xffff, /* d5ce */ 0xffff, /* d5cf */ 0xffff, /* d5d0 */ 0xffff, /* d5d1 */ 0xffff, /* d5d2 */ 0xffff, /* d5d3 */ 0xffff, /* d5d4 */ 0xffff, /* d5d5 */ 0xffff, /* d5d6 */ 0xffff, /* d5d7 */ 0xffff, /* d5d8 */ 0xffff, /* d5d9 */ 0xffff, /* d5da */ 0xffff, /* d5db */ 0xffff, /* d5dc */ 0xffff, /* d5dd */ 0xffff, /* d5de */ 0xffff, /* d5df */ 0xffff, /* d5e0 */ 0xffff, /* d5e1 */ 0xffff, /* d5e2 */ 0xffff, /* d5e3 */ 0xffff, /* d5e4 */ 0xffff, /* d5e5 */ 0xffff, /* d5e6 */ 0xffff, /* d5e7 */ 0xffff, /* d5e8 */ 0xffff, /* d5e9 */ 0xffff, /* d5ea */ 0xffff, /* d5eb */ 0xffff, /* d5ec */ 0xffff, /* d5ed */ 0xffff, /* d5ee */ 0xffff, /* d5ef */ 0xffff, /* d5f0 */ 0xffff, /* d5f1 */ 0xffff, /* d5f2 */ 0xffff, /* d5f3 */ 0xffff, /* d5f4 */ 0xffff, /* d5f5 */ 0xffff, /* d5f6 */ 0xffff, /* d5f7 */ 0xffff, /* d5f8 */ 0xffff, /* d5f9 */ 0xffff, /* d5fa */ 0xffff, /* d5fb */ 0xffff, /* d5fc */ 0xffff, /* d5fd */ 0xffff, /* d5fe */ 0xffff, /* d5ff */ 0xffff, /* d600 */ 0xffff, /* d601 */ 0xffff, /* d602 */ 0xffff, /* d603 */ 0xffff, /* d604 */ 0xffff, /* d605 */ 0xffff, /* d606 */ 0xffff, /* d607 */ 0xffff, /* d608 */ 0xffff, /* d609 */ 0xffff, /* d60a */ 0xffff, /* d60b */ 0xffff, /* d60c */ 0xffff, /* d60d */ 0xffff, /* d60e */ 0xffff, /* d60f */ 0xffff, /* d610 */ 0xffff, /* d611 */ 0xffff, /* d612 */ 0xffff, /* d613 */ 0xffff, /* d614 */ 0xffff, /* d615 */ 0xffff, /* d616 */ 0xffff, /* d617 */ 0xffff, /* d618 */ 0xffff, /* d619 */ 0xffff, /* d61a */ 0xffff, /* d61b */ 0xffff, /* d61c */ 0xffff, /* d61d */ 0xffff, /* d61e */ 0xffff, /* d61f */ 0xffff, /* d620 */ 0xffff, /* d621 */ 0xffff, /* d622 */ 0xffff, /* d623 */ 0xffff, /* d624 */ 0xffff, /* d625 */ 0xffff, /* d626 */ 0xffff, /* d627 */ 0xffff, /* d628 */ 0xffff, /* d629 */ 0xffff, /* d62a */ 0xffff, /* d62b */ 0xffff, /* d62c */ 0xffff, /* d62d */ 0xffff, /* d62e */ 0xffff, /* d62f */ 0xffff, /* d630 */ 0xffff, /* d631 */ 0xffff, /* d632 */ 0xffff, /* d633 */ 0xffff, /* d634 */ 0xffff, /* d635 */ 0xffff, /* d636 */ 0xffff, /* d637 */ 0xffff, /* d638 */ 0xffff, /* d639 */ 0xffff, /* d63a */ 0xffff, /* d63b */ 0xffff, /* d63c */ 0xffff, /* d63d */ 0xffff, /* d63e */ 0xffff, /* d63f */ 0xffff, /* d640 */ 0xffff, /* d641 */ 0xffff, /* d642 */ 0xffff, /* d643 */ 0xffff, /* d644 */ 0xffff, /* d645 */ 0xffff, /* d646 */ 0xffff, /* d647 */ 0xffff, /* d648 */ 0xffff, /* d649 */ 0xffff, /* d64a */ 0xffff, /* d64b */ 0xffff, /* d64c */ 0xffff, /* d64d */ 0xffff, /* d64e */ 0xffff, /* d64f */ 0xffff, /* d650 */ 0xffff, /* d651 */ 0xffff, /* d652 */ 0xffff, /* d653 */ 0xffff, /* d654 */ 0xffff, /* d655 */ 0xffff, /* d656 */ 0xffff, /* d657 */ 0xffff, /* d658 */ 0xffff, /* d659 */ 0xffff, /* d65a */ 0xffff, /* d65b */ 0xffff, /* d65c */ 0xffff, /* d65d */ 0xffff, /* d65e */ 0xffff, /* d65f */ 0xffff, /* d660 */ 0xffff, /* d661 */ 0xffff, /* d662 */ 0xffff, /* d663 */ 0xffff, /* d664 */ 0xffff, /* d665 */ 0xffff, /* d666 */ 0xffff, /* d667 */ 0xffff, /* d668 */ 0xffff, /* d669 */ 0xffff, /* d66a */ 0xffff, /* d66b */ 0xffff, /* d66c */ 0xffff, /* d66d */ 0xffff, /* d66e */ 0xffff, /* d66f */ 0xffff, /* d670 */ 0xffff, /* d671 */ 0xffff, /* d672 */ 0xffff, /* d673 */ 0xffff, /* d674 */ 0xffff, /* d675 */ 0xffff, /* d676 */ 0xffff, /* d677 */ 0xffff, /* d678 */ 0xffff, /* d679 */ 0xffff, /* d67a */ 0xffff, /* d67b */ 0xffff, /* d67c */ 0xffff, /* d67d */ 0xffff, /* d67e */ 0xffff, /* d67f */ 0xffff, /* d680 */ 0xffff, /* d681 */ 0xffff, /* d682 */ 0xffff, /* d683 */ 0xffff, /* d684 */ 0xffff, /* d685 */ 0xffff, /* d686 */ 0xffff, /* d687 */ 0xffff, /* d688 */ 0xffff, /* d689 */ 0xffff, /* d68a */ 0xffff, /* d68b */ 0xffff, /* d68c */ 0xffff, /* d68d */ 0xffff, /* d68e */ 0xffff, /* d68f */ 0xffff, /* d690 */ 0xffff, /* d691 */ 0xffff, /* d692 */ 0xffff, /* d693 */ 0xffff, /* d694 */ 0xffff, /* d695 */ 0xffff, /* d696 */ 0xffff, /* d697 */ 0xffff, /* d698 */ 0xffff, /* d699 */ 0xffff, /* d69a */ 0xffff, /* d69b */ 0xffff, /* d69c */ 0xffff, /* d69d */ 0xffff, /* d69e */ 0xffff, /* d69f */ 0xffff, /* d6a0 */ 0xffff, /* d6a1 */ 0xffff, /* d6a2 */ 0xffff, /* d6a3 */ 0xffff, /* d6a4 */ 0xffff, /* d6a5 */ 0xffff, /* d6a6 */ 0xffff, /* d6a7 */ 0xffff, /* d6a8 */ 0xffff, /* d6a9 */ 0xffff, /* d6aa */ 0xffff, /* d6ab */ 0xffff, /* d6ac */ 0xffff, /* d6ad */ 0xffff, /* d6ae */ 0xffff, /* d6af */ 0xffff, /* d6b0 */ 0xffff, /* d6b1 */ 0xffff, /* d6b2 */ 0xffff, /* d6b3 */ 0xffff, /* d6b4 */ 0xffff, /* d6b5 */ 0xffff, /* d6b6 */ 0xffff, /* d6b7 */ 0xffff, /* d6b8 */ 0xffff, /* d6b9 */ 0xffff, /* d6ba */ 0xffff, /* d6bb */ 0xffff, /* d6bc */ 0xffff, /* d6bd */ 0xffff, /* d6be */ 0xffff, /* d6bf */ 0xffff, /* d6c0 */ 0xffff, /* d6c1 */ 0xffff, /* d6c2 */ 0xffff, /* d6c3 */ 0xffff, /* d6c4 */ 0xffff, /* d6c5 */ 0xffff, /* d6c6 */ 0xffff, /* d6c7 */ 0xffff, /* d6c8 */ 0xffff, /* d6c9 */ 0xffff, /* d6ca */ 0xffff, /* d6cb */ 0xffff, /* d6cc */ 0xffff, /* d6cd */ 0xffff, /* d6ce */ 0xffff, /* d6cf */ 0xffff, /* d6d0 */ 0xffff, /* d6d1 */ 0xffff, /* d6d2 */ 0xffff, /* d6d3 */ 0xffff, /* d6d4 */ 0xffff, /* d6d5 */ 0xffff, /* d6d6 */ 0xffff, /* d6d7 */ 0xffff, /* d6d8 */ 0xffff, /* d6d9 */ 0xffff, /* d6da */ 0xffff, /* d6db */ 0xffff, /* d6dc */ 0xffff, /* d6dd */ 0xffff, /* d6de */ 0xffff, /* d6df */ 0xffff, /* d6e0 */ 0xffff, /* d6e1 */ 0xffff, /* d6e2 */ 0xffff, /* d6e3 */ 0xffff, /* d6e4 */ 0xffff, /* d6e5 */ 0xffff, /* d6e6 */ 0xffff, /* d6e7 */ 0xffff, /* d6e8 */ 0xffff, /* d6e9 */ 0xffff, /* d6ea */ 0xffff, /* d6eb */ 0xffff, /* d6ec */ 0xffff, /* d6ed */ 0xffff, /* d6ee */ 0xffff, /* d6ef */ 0xffff, /* d6f0 */ 0xffff, /* d6f1 */ 0xffff, /* d6f2 */ 0xffff, /* d6f3 */ 0xffff, /* d6f4 */ 0xffff, /* d6f5 */ 0xffff, /* d6f6 */ 0xffff, /* d6f7 */ 0xffff, /* d6f8 */ 0xffff, /* d6f9 */ 0xffff, /* d6fa */ 0xffff, /* d6fb */ 0xffff, /* d6fc */ 0xffff, /* d6fd */ 0xffff, /* d6fe */ 0xffff, /* d6ff */ 0xffff, /* d700 */ 0xffff, /* d701 */ 0xffff, /* d702 */ 0xffff, /* d703 */ 0xffff, /* d704 */ 0xffff, /* d705 */ 0xffff, /* d706 */ 0xffff, /* d707 */ 0xffff, /* d708 */ 0xffff, /* d709 */ 0xffff, /* d70a */ 0xffff, /* d70b */ 0xffff, /* d70c */ 0xffff, /* d70d */ 0xffff, /* d70e */ 0xffff, /* d70f */ 0xffff, /* d710 */ 0xffff, /* d711 */ 0xffff, /* d712 */ 0xffff, /* d713 */ 0xffff, /* d714 */ 0xffff, /* d715 */ 0xffff, /* d716 */ 0xffff, /* d717 */ 0xffff, /* d718 */ 0xffff, /* d719 */ 0xffff, /* d71a */ 0xffff, /* d71b */ 0xffff, /* d71c */ 0xffff, /* d71d */ 0xffff, /* d71e */ 0xffff, /* d71f */ 0xffff, /* d720 */ 0xffff, /* d721 */ 0xffff, /* d722 */ 0xffff, /* d723 */ 0xffff, /* d724 */ 0xffff, /* d725 */ 0xffff, /* d726 */ 0xffff, /* d727 */ 0xffff, /* d728 */ 0xffff, /* d729 */ 0xffff, /* d72a */ 0xffff, /* d72b */ 0xffff, /* d72c */ 0xffff, /* d72d */ 0xffff, /* d72e */ 0xffff, /* d72f */ 0xffff, /* d730 */ 0xffff, /* d731 */ 0xffff, /* d732 */ 0xffff, /* d733 */ 0xffff, /* d734 */ 0xffff, /* d735 */ 0xffff, /* d736 */ 0xffff, /* d737 */ 0xffff, /* d738 */ 0xffff, /* d739 */ 0xffff, /* d73a */ 0xffff, /* d73b */ 0xffff, /* d73c */ 0xffff, /* d73d */ 0xffff, /* d73e */ 0xffff, /* d73f */ 0xffff, /* d740 */ 0xffff, /* d741 */ 0xffff, /* d742 */ 0xffff, /* d743 */ 0xffff, /* d744 */ 0xffff, /* d745 */ 0xffff, /* d746 */ 0xffff, /* d747 */ 0xffff, /* d748 */ 0xffff, /* d749 */ 0xffff, /* d74a */ 0xffff, /* d74b */ 0xffff, /* d74c */ 0xffff, /* d74d */ 0xffff, /* d74e */ 0xffff, /* d74f */ 0xffff, /* d750 */ 0xffff, /* d751 */ 0xffff, /* d752 */ 0xffff, /* d753 */ 0xffff, /* d754 */ 0xffff, /* d755 */ 0xffff, /* d756 */ 0xffff, /* d757 */ 0xffff, /* d758 */ 0xffff, /* d759 */ 0xffff, /* d75a */ 0xffff, /* d75b */ 0xffff, /* d75c */ 0xffff, /* d75d */ 0xffff, /* d75e */ 0xffff, /* d75f */ 0xffff, /* d760 */ 0xffff, /* d761 */ 0xffff, /* d762 */ 0xffff, /* d763 */ 0xffff, /* d764 */ 0xffff, /* d765 */ 0xffff, /* d766 */ 0xffff, /* d767 */ 0xffff, /* d768 */ 0xffff, /* d769 */ 0xffff, /* d76a */ 0xffff, /* d76b */ 0xffff, /* d76c */ 0xffff, /* d76d */ 0xffff, /* d76e */ 0xffff, /* d76f */ 0xffff, /* d770 */ 0xffff, /* d771 */ 0xffff, /* d772 */ 0xffff, /* d773 */ 0xffff, /* d774 */ 0xffff, /* d775 */ 0xffff, /* d776 */ 0xffff, /* d777 */ 0xffff, /* d778 */ 0xffff, /* d779 */ 0xffff, /* d77a */ 0xffff, /* d77b */ 0xffff, /* d77c */ 0xffff, /* d77d */ 0xffff, /* d77e */ 0xffff, /* d77f */ 0xffff, /* d780 */ 0xffff, /* d781 */ 0xffff, /* d782 */ 0xffff, /* d783 */ 0xffff, /* d784 */ 0xffff, /* d785 */ 0xffff, /* d786 */ 0xffff, /* d787 */ 0xffff, /* d788 */ 0xffff, /* d789 */ 0xffff, /* d78a */ 0xffff, /* d78b */ 0xffff, /* d78c */ 0xffff, /* d78d */ 0xffff, /* d78e */ 0xffff, /* d78f */ 0xffff, /* d790 */ 0xffff, /* d791 */ 0xffff, /* d792 */ 0xffff, /* d793 */ 0xffff, /* d794 */ 0xffff, /* d795 */ 0xffff, /* d796 */ 0xffff, /* d797 */ 0xffff, /* d798 */ 0xffff, /* d799 */ 0xffff, /* d79a */ 0xffff, /* d79b */ 0xffff, /* d79c */ 0xffff, /* d79d */ 0xffff, /* d79e */ 0xffff, /* d79f */ 0xffff, /* d7a0 */ 0xffff, /* d7a1 */ 0xffff, /* d7a2 */ 0xffff, /* d7a3 */ 0xffff, /* d7a4 */ 0xffff, /* d7a5 */ 0xffff, /* d7a6 */ 0xffff, /* d7a7 */ 0xffff, /* d7a8 */ 0xffff, /* d7a9 */ 0xffff, /* d7aa */ 0xffff, /* d7ab */ 0xffff, /* d7ac */ 0xffff, /* d7ad */ 0xffff, /* d7ae */ 0xffff, /* d7af */ 0xffff, /* d7b0 */ 0xffff, /* d7b1 */ 0xffff, /* d7b2 */ 0xffff, /* d7b3 */ 0xffff, /* d7b4 */ 0xffff, /* d7b5 */ 0xffff, /* d7b6 */ 0xffff, /* d7b7 */ 0xffff, /* d7b8 */ 0xffff, /* d7b9 */ 0xffff, /* d7ba */ 0xffff, /* d7bb */ 0xffff, /* d7bc */ 0xffff, /* d7bd */ 0xffff, /* d7be */ 0xffff, /* d7bf */ 0xffff, /* d7c0 */ 0xffff, /* d7c1 */ 0xffff, /* d7c2 */ 0xffff, /* d7c3 */ 0xffff, /* d7c4 */ 0xffff, /* d7c5 */ 0xffff, /* d7c6 */ 0xffff, /* d7c7 */ 0xffff, /* d7c8 */ 0xffff, /* d7c9 */ 0xffff, /* d7ca */ 0xffff, /* d7cb */ 0xffff, /* d7cc */ 0xffff, /* d7cd */ 0xffff, /* d7ce */ 0xffff, /* d7cf */ 0xffff, /* d7d0 */ 0xffff, /* d7d1 */ 0xffff, /* d7d2 */ 0xffff, /* d7d3 */ 0xffff, /* d7d4 */ 0xffff, /* d7d5 */ 0xffff, /* d7d6 */ 0xffff, /* d7d7 */ 0xffff, /* d7d8 */ 0xffff, /* d7d9 */ 0xffff, /* d7da */ 0xffff, /* d7db */ 0xffff, /* d7dc */ 0xffff, /* d7dd */ 0xffff, /* d7de */ 0xffff, /* d7df */ 0xffff, /* d7e0 */ 0xffff, /* d7e1 */ 0xffff, /* d7e2 */ 0xffff, /* d7e3 */ 0xffff, /* d7e4 */ 0xffff, /* d7e5 */ 0xffff, /* d7e6 */ 0xffff, /* d7e7 */ 0xffff, /* d7e8 */ 0xffff, /* d7e9 */ 0xffff, /* d7ea */ 0xffff, /* d7eb */ 0xffff, /* d7ec */ 0xffff, /* d7ed */ 0xffff, /* d7ee */ 0xffff, /* d7ef */ 0xffff, /* d7f0 */ 0xffff, /* d7f1 */ 0xffff, /* d7f2 */ 0xffff, /* d7f3 */ 0xffff, /* d7f4 */ 0xffff, /* d7f5 */ 0xffff, /* d7f6 */ 0xffff, /* d7f7 */ 0xffff, /* d7f8 */ 0xffff, /* d7f9 */ 0xffff, /* d7fa */ 0xffff, /* d7fb */ 0xffff, /* d7fc */ 0xffff, /* d7fd */ 0xffff, /* d7fe */ 0xffff, /* d7ff */ 0xffff, /* d800 */ 0xffff, /* d801 */ 0xffff, /* d802 */ 0xffff, /* d803 */ 0xffff, /* d804 */ 0xffff, /* d805 */ 0xffff, /* d806 */ 0xffff, /* d807 */ 0xffff, /* d808 */ 0xffff, /* d809 */ 0xffff, /* d80a */ 0xffff, /* d80b */ 0xffff, /* d80c */ 0xffff, /* d80d */ 0xffff, /* d80e */ 0xffff, /* d80f */ 0xffff, /* d810 */ 0xffff, /* d811 */ 0xffff, /* d812 */ 0xffff, /* d813 */ 0xffff, /* d814 */ 0xffff, /* d815 */ 0xffff, /* d816 */ 0xffff, /* d817 */ 0xffff, /* d818 */ 0xffff, /* d819 */ 0xffff, /* d81a */ 0xffff, /* d81b */ 0xffff, /* d81c */ 0xffff, /* d81d */ 0xffff, /* d81e */ 0xffff, /* d81f */ 0xffff, /* d820 */ 0xffff, /* d821 */ 0xffff, /* d822 */ 0xffff, /* d823 */ 0xffff, /* d824 */ 0xffff, /* d825 */ 0xffff, /* d826 */ 0xffff, /* d827 */ 0xffff, /* d828 */ 0xffff, /* d829 */ 0xffff, /* d82a */ 0xffff, /* d82b */ 0xffff, /* d82c */ 0xffff, /* d82d */ 0xffff, /* d82e */ 0xffff, /* d82f */ 0xffff, /* d830 */ 0xffff, /* d831 */ 0xffff, /* d832 */ 0xffff, /* d833 */ 0xffff, /* d834 */ 0xffff, /* d835 */ 0xffff, /* d836 */ 0xffff, /* d837 */ 0xffff, /* d838 */ 0xffff, /* d839 */ 0xffff, /* d83a */ 0xffff, /* d83b */ 0xffff, /* d83c */ 0xffff, /* d83d */ 0xffff, /* d83e */ 0xffff, /* d83f */ 0xffff, /* d840 */ 0xffff, /* d841 */ 0xffff, /* d842 */ 0xffff, /* d843 */ 0xffff, /* d844 */ 0xffff, /* d845 */ 0xffff, /* d846 */ 0xffff, /* d847 */ 0xffff, /* d848 */ 0xffff, /* d849 */ 0xffff, /* d84a */ 0xffff, /* d84b */ 0xffff, /* d84c */ 0xffff, /* d84d */ 0xffff, /* d84e */ 0xffff, /* d84f */ 0xffff, /* d850 */ 0xffff, /* d851 */ 0xffff, /* d852 */ 0xffff, /* d853 */ 0xffff, /* d854 */ 0xffff, /* d855 */ 0xffff, /* d856 */ 0xffff, /* d857 */ 0xffff, /* d858 */ 0xffff, /* d859 */ 0xffff, /* d85a */ 0xffff, /* d85b */ 0xffff, /* d85c */ 0xffff, /* d85d */ 0xffff, /* d85e */ 0xffff, /* d85f */ 0xffff, /* d860 */ 0xffff, /* d861 */ 0xffff, /* d862 */ 0xffff, /* d863 */ 0xffff, /* d864 */ 0xffff, /* d865 */ 0xffff, /* d866 */ 0xffff, /* d867 */ 0xffff, /* d868 */ 0xffff, /* d869 */ 0xffff, /* d86a */ 0xffff, /* d86b */ 0xffff, /* d86c */ 0xffff, /* d86d */ 0xffff, /* d86e */ 0xffff, /* d86f */ 0xffff, /* d870 */ 0xffff, /* d871 */ 0xffff, /* d872 */ 0xffff, /* d873 */ 0xffff, /* d874 */ 0xffff, /* d875 */ 0xffff, /* d876 */ 0xffff, /* d877 */ 0xffff, /* d878 */ 0xffff, /* d879 */ 0xffff, /* d87a */ 0xffff, /* d87b */ 0xffff, /* d87c */ 0xffff, /* d87d */ 0xffff, /* d87e */ 0xffff, /* d87f */ 0xffff, /* d880 */ 0xffff, /* d881 */ 0xffff, /* d882 */ 0xffff, /* d883 */ 0xffff, /* d884 */ 0xffff, /* d885 */ 0xffff, /* d886 */ 0xffff, /* d887 */ 0xffff, /* d888 */ 0xffff, /* d889 */ 0xffff, /* d88a */ 0xffff, /* d88b */ 0xffff, /* d88c */ 0xffff, /* d88d */ 0xffff, /* d88e */ 0xffff, /* d88f */ 0xffff, /* d890 */ 0xffff, /* d891 */ 0xffff, /* d892 */ 0xffff, /* d893 */ 0xffff, /* d894 */ 0xffff, /* d895 */ 0xffff, /* d896 */ 0xffff, /* d897 */ 0xffff, /* d898 */ 0xffff, /* d899 */ 0xffff, /* d89a */ 0xffff, /* d89b */ 0xffff, /* d89c */ 0xffff, /* d89d */ 0xffff, /* d89e */ 0xffff, /* d89f */ 0xffff, /* d8a0 */ 0xffff, /* d8a1 */ 0xffff, /* d8a2 */ 0xffff, /* d8a3 */ 0xffff, /* d8a4 */ 0xffff, /* d8a5 */ 0xffff, /* d8a6 */ 0xffff, /* d8a7 */ 0xffff, /* d8a8 */ 0xffff, /* d8a9 */ 0xffff, /* d8aa */ 0xffff, /* d8ab */ 0xffff, /* d8ac */ 0xffff, /* d8ad */ 0xffff, /* d8ae */ 0xffff, /* d8af */ 0xffff, /* d8b0 */ 0xffff, /* d8b1 */ 0xffff, /* d8b2 */ 0xffff, /* d8b3 */ 0xffff, /* d8b4 */ 0xffff, /* d8b5 */ 0xffff, /* d8b6 */ 0xffff, /* d8b7 */ 0xffff, /* d8b8 */ 0xffff, /* d8b9 */ 0xffff, /* d8ba */ 0xffff, /* d8bb */ 0xffff, /* d8bc */ 0xffff, /* d8bd */ 0xffff, /* d8be */ 0xffff, /* d8bf */ 0xffff, /* d8c0 */ 0xffff, /* d8c1 */ 0xffff, /* d8c2 */ 0xffff, /* d8c3 */ 0xffff, /* d8c4 */ 0xffff, /* d8c5 */ 0xffff, /* d8c6 */ 0xffff, /* d8c7 */ 0xffff, /* d8c8 */ 0xffff, /* d8c9 */ 0xffff, /* d8ca */ 0xffff, /* d8cb */ 0xffff, /* d8cc */ 0xffff, /* d8cd */ 0xffff, /* d8ce */ 0xffff, /* d8cf */ 0xffff, /* d8d0 */ 0xffff, /* d8d1 */ 0xffff, /* d8d2 */ 0xffff, /* d8d3 */ 0xffff, /* d8d4 */ 0xffff, /* d8d5 */ 0xffff, /* d8d6 */ 0xffff, /* d8d7 */ 0xffff, /* d8d8 */ 0xffff, /* d8d9 */ 0xffff, /* d8da */ 0xffff, /* d8db */ 0xffff, /* d8dc */ 0xffff, /* d8dd */ 0xffff, /* d8de */ 0xffff, /* d8df */ 0xffff, /* d8e0 */ 0xffff, /* d8e1 */ 0xffff, /* d8e2 */ 0xffff, /* d8e3 */ 0xffff, /* d8e4 */ 0xffff, /* d8e5 */ 0xffff, /* d8e6 */ 0xffff, /* d8e7 */ 0xffff, /* d8e8 */ 0xffff, /* d8e9 */ 0xffff, /* d8ea */ 0xffff, /* d8eb */ 0xffff, /* d8ec */ 0xffff, /* d8ed */ 0xffff, /* d8ee */ 0xffff, /* d8ef */ 0xffff, /* d8f0 */ 0xffff, /* d8f1 */ 0xffff, /* d8f2 */ 0xffff, /* d8f3 */ 0xffff, /* d8f4 */ 0xffff, /* d8f5 */ 0xffff, /* d8f6 */ 0xffff, /* d8f7 */ 0xffff, /* d8f8 */ 0xffff, /* d8f9 */ 0xffff, /* d8fa */ 0xffff, /* d8fb */ 0xffff, /* d8fc */ 0xffff, /* d8fd */ 0xffff, /* d8fe */ 0xffff, /* d8ff */ 0xffff, /* d900 */ 0xffff, /* d901 */ 0xffff, /* d902 */ 0xffff, /* d903 */ 0xffff, /* d904 */ 0xffff, /* d905 */ 0xffff, /* d906 */ 0xffff, /* d907 */ 0xffff, /* d908 */ 0xffff, /* d909 */ 0xffff, /* d90a */ 0xffff, /* d90b */ 0xffff, /* d90c */ 0xffff, /* d90d */ 0xffff, /* d90e */ 0xffff, /* d90f */ 0xffff, /* d910 */ 0xffff, /* d911 */ 0xffff, /* d912 */ 0xffff, /* d913 */ 0xffff, /* d914 */ 0xffff, /* d915 */ 0xffff, /* d916 */ 0xffff, /* d917 */ 0xffff, /* d918 */ 0xffff, /* d919 */ 0xffff, /* d91a */ 0xffff, /* d91b */ 0xffff, /* d91c */ 0xffff, /* d91d */ 0xffff, /* d91e */ 0xffff, /* d91f */ 0xffff, /* d920 */ 0xffff, /* d921 */ 0xffff, /* d922 */ 0xffff, /* d923 */ 0xffff, /* d924 */ 0xffff, /* d925 */ 0xffff, /* d926 */ 0xffff, /* d927 */ 0xffff, /* d928 */ 0xffff, /* d929 */ 0xffff, /* d92a */ 0xffff, /* d92b */ 0xffff, /* d92c */ 0xffff, /* d92d */ 0xffff, /* d92e */ 0xffff, /* d92f */ 0xffff, /* d930 */ 0xffff, /* d931 */ 0xffff, /* d932 */ 0xffff, /* d933 */ 0xffff, /* d934 */ 0xffff, /* d935 */ 0xffff, /* d936 */ 0xffff, /* d937 */ 0xffff, /* d938 */ 0xffff, /* d939 */ 0xffff, /* d93a */ 0xffff, /* d93b */ 0xffff, /* d93c */ 0xffff, /* d93d */ 0xffff, /* d93e */ 0xffff, /* d93f */ 0xffff, /* d940 */ 0xffff, /* d941 */ 0xffff, /* d942 */ 0xffff, /* d943 */ 0xffff, /* d944 */ 0xffff, /* d945 */ 0xffff, /* d946 */ 0xffff, /* d947 */ 0xffff, /* d948 */ 0xffff, /* d949 */ 0xffff, /* d94a */ 0xffff, /* d94b */ 0xffff, /* d94c */ 0xffff, /* d94d */ 0xffff, /* d94e */ 0xffff, /* d94f */ 0xffff, /* d950 */ 0xffff, /* d951 */ 0xffff, /* d952 */ 0xffff, /* d953 */ 0xffff, /* d954 */ 0xffff, /* d955 */ 0xffff, /* d956 */ 0xffff, /* d957 */ 0xffff, /* d958 */ 0xffff, /* d959 */ 0xffff, /* d95a */ 0xffff, /* d95b */ 0xffff, /* d95c */ 0xffff, /* d95d */ 0xffff, /* d95e */ 0xffff, /* d95f */ 0xffff, /* d960 */ 0xffff, /* d961 */ 0xffff, /* d962 */ 0xffff, /* d963 */ 0xffff, /* d964 */ 0xffff, /* d965 */ 0xffff, /* d966 */ 0xffff, /* d967 */ 0xffff, /* d968 */ 0xffff, /* d969 */ 0xffff, /* d96a */ 0xffff, /* d96b */ 0xffff, /* d96c */ 0xffff, /* d96d */ 0xffff, /* d96e */ 0xffff, /* d96f */ 0xffff, /* d970 */ 0xffff, /* d971 */ 0xffff, /* d972 */ 0xffff, /* d973 */ 0xffff, /* d974 */ 0xffff, /* d975 */ 0xffff, /* d976 */ 0xffff, /* d977 */ 0xffff, /* d978 */ 0xffff, /* d979 */ 0xffff, /* d97a */ 0xffff, /* d97b */ 0xffff, /* d97c */ 0xffff, /* d97d */ 0xffff, /* d97e */ 0xffff, /* d97f */ 0xffff, /* d980 */ 0xffff, /* d981 */ 0xffff, /* d982 */ 0xffff, /* d983 */ 0xffff, /* d984 */ 0xffff, /* d985 */ 0xffff, /* d986 */ 0xffff, /* d987 */ 0xffff, /* d988 */ 0xffff, /* d989 */ 0xffff, /* d98a */ 0xffff, /* d98b */ 0xffff, /* d98c */ 0xffff, /* d98d */ 0xffff, /* d98e */ 0xffff, /* d98f */ 0xffff, /* d990 */ 0xffff, /* d991 */ 0xffff, /* d992 */ 0xffff, /* d993 */ 0xffff, /* d994 */ 0xffff, /* d995 */ 0xffff, /* d996 */ 0xffff, /* d997 */ 0xffff, /* d998 */ 0xffff, /* d999 */ 0xffff, /* d99a */ 0xffff, /* d99b */ 0xffff, /* d99c */ 0xffff, /* d99d */ 0xffff, /* d99e */ 0xffff, /* d99f */ 0xffff, /* d9a0 */ 0xffff, /* d9a1 */ 0xffff, /* d9a2 */ 0xffff, /* d9a3 */ 0xffff, /* d9a4 */ 0xffff, /* d9a5 */ 0xffff, /* d9a6 */ 0xffff, /* d9a7 */ 0xffff, /* d9a8 */ 0xffff, /* d9a9 */ 0xffff, /* d9aa */ 0xffff, /* d9ab */ 0xffff, /* d9ac */ 0xffff, /* d9ad */ 0xffff, /* d9ae */ 0xffff, /* d9af */ 0xffff, /* d9b0 */ 0xffff, /* d9b1 */ 0xffff, /* d9b2 */ 0xffff, /* d9b3 */ 0xffff, /* d9b4 */ 0xffff, /* d9b5 */ 0xffff, /* d9b6 */ 0xffff, /* d9b7 */ 0xffff, /* d9b8 */ 0xffff, /* d9b9 */ 0xffff, /* d9ba */ 0xffff, /* d9bb */ 0xffff, /* d9bc */ 0xffff, /* d9bd */ 0xffff, /* d9be */ 0xffff, /* d9bf */ 0xffff, /* d9c0 */ 0xffff, /* d9c1 */ 0xffff, /* d9c2 */ 0xffff, /* d9c3 */ 0xffff, /* d9c4 */ 0xffff, /* d9c5 */ 0xffff, /* d9c6 */ 0xffff, /* d9c7 */ 0xffff, /* d9c8 */ 0xffff, /* d9c9 */ 0xffff, /* d9ca */ 0xffff, /* d9cb */ 0xffff, /* d9cc */ 0xffff, /* d9cd */ 0xffff, /* d9ce */ 0xffff, /* d9cf */ 0xffff, /* d9d0 */ 0xffff, /* d9d1 */ 0xffff, /* d9d2 */ 0xffff, /* d9d3 */ 0xffff, /* d9d4 */ 0xffff, /* d9d5 */ 0xffff, /* d9d6 */ 0xffff, /* d9d7 */ 0xffff, /* d9d8 */ 0xffff, /* d9d9 */ 0xffff, /* d9da */ 0xffff, /* d9db */ 0xffff, /* d9dc */ 0xffff, /* d9dd */ 0xffff, /* d9de */ 0xffff, /* d9df */ 0xffff, /* d9e0 */ 0xffff, /* d9e1 */ 0xffff, /* d9e2 */ 0xffff, /* d9e3 */ 0xffff, /* d9e4 */ 0xffff, /* d9e5 */ 0xffff, /* d9e6 */ 0xffff, /* d9e7 */ 0xffff, /* d9e8 */ 0xffff, /* d9e9 */ 0xffff, /* d9ea */ 0xffff, /* d9eb */ 0xffff, /* d9ec */ 0xffff, /* d9ed */ 0xffff, /* d9ee */ 0xffff, /* d9ef */ 0xffff, /* d9f0 */ 0xffff, /* d9f1 */ 0xffff, /* d9f2 */ 0xffff, /* d9f3 */ 0xffff, /* d9f4 */ 0xffff, /* d9f5 */ 0xffff, /* d9f6 */ 0xffff, /* d9f7 */ 0xffff, /* d9f8 */ 0xffff, /* d9f9 */ 0xffff, /* d9fa */ 0xffff, /* d9fb */ 0xffff, /* d9fc */ 0xffff, /* d9fd */ 0xffff, /* d9fe */ 0xffff, /* d9ff */ 0xffff, /* da00 */ 0xffff, /* da01 */ 0xffff, /* da02 */ 0xffff, /* da03 */ 0xffff, /* da04 */ 0xffff, /* da05 */ 0xffff, /* da06 */ 0xffff, /* da07 */ 0xffff, /* da08 */ 0xffff, /* da09 */ 0xffff, /* da0a */ 0xffff, /* da0b */ 0xffff, /* da0c */ 0xffff, /* da0d */ 0xffff, /* da0e */ 0xffff, /* da0f */ 0xffff, /* da10 */ 0xffff, /* da11 */ 0xffff, /* da12 */ 0xffff, /* da13 */ 0xffff, /* da14 */ 0xffff, /* da15 */ 0xffff, /* da16 */ 0xffff, /* da17 */ 0xffff, /* da18 */ 0xffff, /* da19 */ 0xffff, /* da1a */ 0xffff, /* da1b */ 0xffff, /* da1c */ 0xffff, /* da1d */ 0xffff, /* da1e */ 0xffff, /* da1f */ 0xffff, /* da20 */ 0xffff, /* da21 */ 0xffff, /* da22 */ 0xffff, /* da23 */ 0xffff, /* da24 */ 0xffff, /* da25 */ 0xffff, /* da26 */ 0xffff, /* da27 */ 0xffff, /* da28 */ 0xffff, /* da29 */ 0xffff, /* da2a */ 0xffff, /* da2b */ 0xffff, /* da2c */ 0xffff, /* da2d */ 0xffff, /* da2e */ 0xffff, /* da2f */ 0xffff, /* da30 */ 0xffff, /* da31 */ 0xffff, /* da32 */ 0xffff, /* da33 */ 0xffff, /* da34 */ 0xffff, /* da35 */ 0xffff, /* da36 */ 0xffff, /* da37 */ 0xffff, /* da38 */ 0xffff, /* da39 */ 0xffff, /* da3a */ 0xffff, /* da3b */ 0xffff, /* da3c */ 0xffff, /* da3d */ 0xffff, /* da3e */ 0xffff, /* da3f */ 0xffff, /* da40 */ 0xffff, /* da41 */ 0xffff, /* da42 */ 0xffff, /* da43 */ 0xffff, /* da44 */ 0xffff, /* da45 */ 0xffff, /* da46 */ 0xffff, /* da47 */ 0xffff, /* da48 */ 0xffff, /* da49 */ 0xffff, /* da4a */ 0xffff, /* da4b */ 0xffff, /* da4c */ 0xffff, /* da4d */ 0xffff, /* da4e */ 0xffff, /* da4f */ 0xffff, /* da50 */ 0xffff, /* da51 */ 0xffff, /* da52 */ 0xffff, /* da53 */ 0xffff, /* da54 */ 0xffff, /* da55 */ 0xffff, /* da56 */ 0xffff, /* da57 */ 0xffff, /* da58 */ 0xffff, /* da59 */ 0xffff, /* da5a */ 0xffff, /* da5b */ 0xffff, /* da5c */ 0xffff, /* da5d */ 0xffff, /* da5e */ 0xffff, /* da5f */ 0xffff, /* da60 */ 0xffff, /* da61 */ 0xffff, /* da62 */ 0xffff, /* da63 */ 0xffff, /* da64 */ 0xffff, /* da65 */ 0xffff, /* da66 */ 0xffff, /* da67 */ 0xffff, /* da68 */ 0xffff, /* da69 */ 0xffff, /* da6a */ 0xffff, /* da6b */ 0xffff, /* da6c */ 0xffff, /* da6d */ 0xffff, /* da6e */ 0xffff, /* da6f */ 0xffff, /* da70 */ 0xffff, /* da71 */ 0xffff, /* da72 */ 0xffff, /* da73 */ 0xffff, /* da74 */ 0xffff, /* da75 */ 0xffff, /* da76 */ 0xffff, /* da77 */ 0xffff, /* da78 */ 0xffff, /* da79 */ 0xffff, /* da7a */ 0xffff, /* da7b */ 0xffff, /* da7c */ 0xffff, /* da7d */ 0xffff, /* da7e */ 0xffff, /* da7f */ 0xffff, /* da80 */ 0xffff, /* da81 */ 0xffff, /* da82 */ 0xffff, /* da83 */ 0xffff, /* da84 */ 0xffff, /* da85 */ 0xffff, /* da86 */ 0xffff, /* da87 */ 0xffff, /* da88 */ 0xffff, /* da89 */ 0xffff, /* da8a */ 0xffff, /* da8b */ 0xffff, /* da8c */ 0xffff, /* da8d */ 0xffff, /* da8e */ 0xffff, /* da8f */ 0xffff, /* da90 */ 0xffff, /* da91 */ 0xffff, /* da92 */ 0xffff, /* da93 */ 0xffff, /* da94 */ 0xffff, /* da95 */ 0xffff, /* da96 */ 0xffff, /* da97 */ 0xffff, /* da98 */ 0xffff, /* da99 */ 0xffff, /* da9a */ 0xffff, /* da9b */ 0xffff, /* da9c */ 0xffff, /* da9d */ 0xffff, /* da9e */ 0xffff, /* da9f */ 0xffff, /* daa0 */ 0xffff, /* daa1 */ 0xffff, /* daa2 */ 0xffff, /* daa3 */ 0xffff, /* daa4 */ 0xffff, /* daa5 */ 0xffff, /* daa6 */ 0xffff, /* daa7 */ 0xffff, /* daa8 */ 0xffff, /* daa9 */ 0xffff, /* daaa */ 0xffff, /* daab */ 0xffff, /* daac */ 0xffff, /* daad */ 0xffff, /* daae */ 0xffff, /* daaf */ 0xffff, /* dab0 */ 0xffff, /* dab1 */ 0xffff, /* dab2 */ 0xffff, /* dab3 */ 0xffff, /* dab4 */ 0xffff, /* dab5 */ 0xffff, /* dab6 */ 0xffff, /* dab7 */ 0xffff, /* dab8 */ 0xffff, /* dab9 */ 0xffff, /* daba */ 0xffff, /* dabb */ 0xffff, /* dabc */ 0xffff, /* dabd */ 0xffff, /* dabe */ 0xffff, /* dabf */ 0xffff, /* dac0 */ 0xffff, /* dac1 */ 0xffff, /* dac2 */ 0xffff, /* dac3 */ 0xffff, /* dac4 */ 0xffff, /* dac5 */ 0xffff, /* dac6 */ 0xffff, /* dac7 */ 0xffff, /* dac8 */ 0xffff, /* dac9 */ 0xffff, /* daca */ 0xffff, /* dacb */ 0xffff, /* dacc */ 0xffff, /* dacd */ 0xffff, /* dace */ 0xffff, /* dacf */ 0xffff, /* dad0 */ 0xffff, /* dad1 */ 0xffff, /* dad2 */ 0xffff, /* dad3 */ 0xffff, /* dad4 */ 0xffff, /* dad5 */ 0xffff, /* dad6 */ 0xffff, /* dad7 */ 0xffff, /* dad8 */ 0xffff, /* dad9 */ 0xffff, /* dada */ 0xffff, /* dadb */ 0xffff, /* dadc */ 0xffff, /* dadd */ 0xffff, /* dade */ 0xffff, /* dadf */ 0xffff, /* dae0 */ 0xffff, /* dae1 */ 0xffff, /* dae2 */ 0xffff, /* dae3 */ 0xffff, /* dae4 */ 0xffff, /* dae5 */ 0xffff, /* dae6 */ 0xffff, /* dae7 */ 0xffff, /* dae8 */ 0xffff, /* dae9 */ 0xffff, /* daea */ 0xffff, /* daeb */ 0xffff, /* daec */ 0xffff, /* daed */ 0xffff, /* daee */ 0xffff, /* daef */ 0xffff, /* daf0 */ 0xffff, /* daf1 */ 0xffff, /* daf2 */ 0xffff, /* daf3 */ 0xffff, /* daf4 */ 0xffff, /* daf5 */ 0xffff, /* daf6 */ 0xffff, /* daf7 */ 0xffff, /* daf8 */ 0xffff, /* daf9 */ 0xffff, /* dafa */ 0xffff, /* dafb */ 0xffff, /* dafc */ 0xffff, /* dafd */ 0xffff, /* dafe */ 0xffff, /* daff */ 0xffff, /* db00 */ 0xffff, /* db01 */ 0xffff, /* db02 */ 0xffff, /* db03 */ 0xffff, /* db04 */ 0xffff, /* db05 */ 0xffff, /* db06 */ 0xffff, /* db07 */ 0xffff, /* db08 */ 0xffff, /* db09 */ 0xffff, /* db0a */ 0xffff, /* db0b */ 0xffff, /* db0c */ 0xffff, /* db0d */ 0xffff, /* db0e */ 0xffff, /* db0f */ 0xffff, /* db10 */ 0xffff, /* db11 */ 0xffff, /* db12 */ 0xffff, /* db13 */ 0xffff, /* db14 */ 0xffff, /* db15 */ 0xffff, /* db16 */ 0xffff, /* db17 */ 0xffff, /* db18 */ 0xffff, /* db19 */ 0xffff, /* db1a */ 0xffff, /* db1b */ 0xffff, /* db1c */ 0xffff, /* db1d */ 0xffff, /* db1e */ 0xffff, /* db1f */ 0xffff, /* db20 */ 0xffff, /* db21 */ 0xffff, /* db22 */ 0xffff, /* db23 */ 0xffff, /* db24 */ 0xffff, /* db25 */ 0xffff, /* db26 */ 0xffff, /* db27 */ 0xffff, /* db28 */ 0xffff, /* db29 */ 0xffff, /* db2a */ 0xffff, /* db2b */ 0xffff, /* db2c */ 0xffff, /* db2d */ 0xffff, /* db2e */ 0xffff, /* db2f */ 0xffff, /* db30 */ 0xffff, /* db31 */ 0xffff, /* db32 */ 0xffff, /* db33 */ 0xffff, /* db34 */ 0xffff, /* db35 */ 0xffff, /* db36 */ 0xffff, /* db37 */ 0xffff, /* db38 */ 0xffff, /* db39 */ 0xffff, /* db3a */ 0xffff, /* db3b */ 0xffff, /* db3c */ 0xffff, /* db3d */ 0xffff, /* db3e */ 0xffff, /* db3f */ 0xffff, /* db40 */ 0xffff, /* db41 */ 0xffff, /* db42 */ 0xffff, /* db43 */ 0xffff, /* db44 */ 0xffff, /* db45 */ 0xffff, /* db46 */ 0xffff, /* db47 */ 0xffff, /* db48 */ 0xffff, /* db49 */ 0xffff, /* db4a */ 0xffff, /* db4b */ 0xffff, /* db4c */ 0xffff, /* db4d */ 0xffff, /* db4e */ 0xffff, /* db4f */ 0xffff, /* db50 */ 0xffff, /* db51 */ 0xffff, /* db52 */ 0xffff, /* db53 */ 0xffff, /* db54 */ 0xffff, /* db55 */ 0xffff, /* db56 */ 0xffff, /* db57 */ 0xffff, /* db58 */ 0xffff, /* db59 */ 0xffff, /* db5a */ 0xffff, /* db5b */ 0xffff, /* db5c */ 0xffff, /* db5d */ 0xffff, /* db5e */ 0xffff, /* db5f */ 0xffff, /* db60 */ 0xffff, /* db61 */ 0xffff, /* db62 */ 0xffff, /* db63 */ 0xffff, /* db64 */ 0xffff, /* db65 */ 0xffff, /* db66 */ 0xffff, /* db67 */ 0xffff, /* db68 */ 0xffff, /* db69 */ 0xffff, /* db6a */ 0xffff, /* db6b */ 0xffff, /* db6c */ 0xffff, /* db6d */ 0xffff, /* db6e */ 0xffff, /* db6f */ 0xffff, /* db70 */ 0xffff, /* db71 */ 0xffff, /* db72 */ 0xffff, /* db73 */ 0xffff, /* db74 */ 0xffff, /* db75 */ 0xffff, /* db76 */ 0xffff, /* db77 */ 0xffff, /* db78 */ 0xffff, /* db79 */ 0xffff, /* db7a */ 0xffff, /* db7b */ 0xffff, /* db7c */ 0xffff, /* db7d */ 0xffff, /* db7e */ 0xffff, /* db7f */ 0xffff, /* db80 */ 0xffff, /* db81 */ 0xffff, /* db82 */ 0xffff, /* db83 */ 0xffff, /* db84 */ 0xffff, /* db85 */ 0xffff, /* db86 */ 0xffff, /* db87 */ 0xffff, /* db88 */ 0xffff, /* db89 */ 0xffff, /* db8a */ 0xffff, /* db8b */ 0xffff, /* db8c */ 0xffff, /* db8d */ 0xffff, /* db8e */ 0xffff, /* db8f */ 0xffff, /* db90 */ 0xffff, /* db91 */ 0xffff, /* db92 */ 0xffff, /* db93 */ 0xffff, /* db94 */ 0xffff, /* db95 */ 0xffff, /* db96 */ 0xffff, /* db97 */ 0xffff, /* db98 */ 0xffff, /* db99 */ 0xffff, /* db9a */ 0xffff, /* db9b */ 0xffff, /* db9c */ 0xffff, /* db9d */ 0xffff, /* db9e */ 0xffff, /* db9f */ 0xffff, /* dba0 */ 0xffff, /* dba1 */ 0xffff, /* dba2 */ 0xffff, /* dba3 */ 0xffff, /* dba4 */ 0xffff, /* dba5 */ 0xffff, /* dba6 */ 0xffff, /* dba7 */ 0xffff, /* dba8 */ 0xffff, /* dba9 */ 0xffff, /* dbaa */ 0xffff, /* dbab */ 0xffff, /* dbac */ 0xffff, /* dbad */ 0xffff, /* dbae */ 0xffff, /* dbaf */ 0xffff, /* dbb0 */ 0xffff, /* dbb1 */ 0xffff, /* dbb2 */ 0xffff, /* dbb3 */ 0xffff, /* dbb4 */ 0xffff, /* dbb5 */ 0xffff, /* dbb6 */ 0xffff, /* dbb7 */ 0xffff, /* dbb8 */ 0xffff, /* dbb9 */ 0xffff, /* dbba */ 0xffff, /* dbbb */ 0xffff, /* dbbc */ 0xffff, /* dbbd */ 0xffff, /* dbbe */ 0xffff, /* dbbf */ 0xffff, /* dbc0 */ 0xffff, /* dbc1 */ 0xffff, /* dbc2 */ 0xffff, /* dbc3 */ 0xffff, /* dbc4 */ 0xffff, /* dbc5 */ 0xffff, /* dbc6 */ 0xffff, /* dbc7 */ 0xffff, /* dbc8 */ 0xffff, /* dbc9 */ 0xffff, /* dbca */ 0xffff, /* dbcb */ 0xffff, /* dbcc */ 0xffff, /* dbcd */ 0xffff, /* dbce */ 0xffff, /* dbcf */ 0xffff, /* dbd0 */ 0xffff, /* dbd1 */ 0xffff, /* dbd2 */ 0xffff, /* dbd3 */ 0xffff, /* dbd4 */ 0xffff, /* dbd5 */ 0xffff, /* dbd6 */ 0xffff, /* dbd7 */ 0xffff, /* dbd8 */ 0xffff, /* dbd9 */ 0xffff, /* dbda */ 0xffff, /* dbdb */ 0xffff, /* dbdc */ 0xffff, /* dbdd */ 0xffff, /* dbde */ 0xffff, /* dbdf */ 0xffff, /* dbe0 */ 0xffff, /* dbe1 */ 0xffff, /* dbe2 */ 0xffff, /* dbe3 */ 0xffff, /* dbe4 */ 0xffff, /* dbe5 */ 0xffff, /* dbe6 */ 0xffff, /* dbe7 */ 0xffff, /* dbe8 */ 0xffff, /* dbe9 */ 0xffff, /* dbea */ 0xffff, /* dbeb */ 0xffff, /* dbec */ 0xffff, /* dbed */ 0xffff, /* dbee */ 0xffff, /* dbef */ 0xffff, /* dbf0 */ 0xffff, /* dbf1 */ 0xffff, /* dbf2 */ 0xffff, /* dbf3 */ 0xffff, /* dbf4 */ 0xffff, /* dbf5 */ 0xffff, /* dbf6 */ 0xffff, /* dbf7 */ 0xffff, /* dbf8 */ 0xffff, /* dbf9 */ 0xffff, /* dbfa */ 0xffff, /* dbfb */ 0xffff, /* dbfc */ 0xffff, /* dbfd */ 0xffff, /* dbfe */ 0xffff, /* dbff */ 0xffff, /* dc00 */ 0xffff, /* dc01 */ 0xffff, /* dc02 */ 0xffff, /* dc03 */ 0xffff, /* dc04 */ 0xffff, /* dc05 */ 0xffff, /* dc06 */ 0xffff, /* dc07 */ 0xffff, /* dc08 */ 0xffff, /* dc09 */ 0xffff, /* dc0a */ 0xffff, /* dc0b */ 0xffff, /* dc0c */ 0xffff, /* dc0d */ 0xffff, /* dc0e */ 0xffff, /* dc0f */ 0xffff, /* dc10 */ 0xffff, /* dc11 */ 0xffff, /* dc12 */ 0xffff, /* dc13 */ 0xffff, /* dc14 */ 0xffff, /* dc15 */ 0xffff, /* dc16 */ 0xffff, /* dc17 */ 0xffff, /* dc18 */ 0xffff, /* dc19 */ 0xffff, /* dc1a */ 0xffff, /* dc1b */ 0xffff, /* dc1c */ 0xffff, /* dc1d */ 0xffff, /* dc1e */ 0xffff, /* dc1f */ 0xffff, /* dc20 */ 0xffff, /* dc21 */ 0xffff, /* dc22 */ 0xffff, /* dc23 */ 0xffff, /* dc24 */ 0xffff, /* dc25 */ 0xffff, /* dc26 */ 0xffff, /* dc27 */ 0xffff, /* dc28 */ 0xffff, /* dc29 */ 0xffff, /* dc2a */ 0xffff, /* dc2b */ 0xffff, /* dc2c */ 0xffff, /* dc2d */ 0xffff, /* dc2e */ 0xffff, /* dc2f */ 0xffff, /* dc30 */ 0xffff, /* dc31 */ 0xffff, /* dc32 */ 0xffff, /* dc33 */ 0xffff, /* dc34 */ 0xffff, /* dc35 */ 0xffff, /* dc36 */ 0xffff, /* dc37 */ 0xffff, /* dc38 */ 0xffff, /* dc39 */ 0xffff, /* dc3a */ 0xffff, /* dc3b */ 0xffff, /* dc3c */ 0xffff, /* dc3d */ 0xffff, /* dc3e */ 0xffff, /* dc3f */ 0xffff, /* dc40 */ 0xffff, /* dc41 */ 0xffff, /* dc42 */ 0xffff, /* dc43 */ 0xffff, /* dc44 */ 0xffff, /* dc45 */ 0xffff, /* dc46 */ 0xffff, /* dc47 */ 0xffff, /* dc48 */ 0xffff, /* dc49 */ 0xffff, /* dc4a */ 0xffff, /* dc4b */ 0xffff, /* dc4c */ 0xffff, /* dc4d */ 0xffff, /* dc4e */ 0xffff, /* dc4f */ 0xffff, /* dc50 */ 0xffff, /* dc51 */ 0xffff, /* dc52 */ 0xffff, /* dc53 */ 0xffff, /* dc54 */ 0xffff, /* dc55 */ 0xffff, /* dc56 */ 0xffff, /* dc57 */ 0xffff, /* dc58 */ 0xffff, /* dc59 */ 0xffff, /* dc5a */ 0xffff, /* dc5b */ 0xffff, /* dc5c */ 0xffff, /* dc5d */ 0xffff, /* dc5e */ 0xffff, /* dc5f */ 0xffff, /* dc60 */ 0xffff, /* dc61 */ 0xffff, /* dc62 */ 0xffff, /* dc63 */ 0xffff, /* dc64 */ 0xffff, /* dc65 */ 0xffff, /* dc66 */ 0xffff, /* dc67 */ 0xffff, /* dc68 */ 0xffff, /* dc69 */ 0xffff, /* dc6a */ 0xffff, /* dc6b */ 0xffff, /* dc6c */ 0xffff, /* dc6d */ 0xffff, /* dc6e */ 0xffff, /* dc6f */ 0xffff, /* dc70 */ 0xffff, /* dc71 */ 0xffff, /* dc72 */ 0xffff, /* dc73 */ 0xffff, /* dc74 */ 0xffff, /* dc75 */ 0xffff, /* dc76 */ 0xffff, /* dc77 */ 0xffff, /* dc78 */ 0xffff, /* dc79 */ 0xffff, /* dc7a */ 0xffff, /* dc7b */ 0xffff, /* dc7c */ 0xffff, /* dc7d */ 0xffff, /* dc7e */ 0xffff, /* dc7f */ 0xffff, /* dc80 */ 0xffff, /* dc81 */ 0xffff, /* dc82 */ 0xffff, /* dc83 */ 0xffff, /* dc84 */ 0xffff, /* dc85 */ 0xffff, /* dc86 */ 0xffff, /* dc87 */ 0xffff, /* dc88 */ 0xffff, /* dc89 */ 0xffff, /* dc8a */ 0xffff, /* dc8b */ 0xffff, /* dc8c */ 0xffff, /* dc8d */ 0xffff, /* dc8e */ 0xffff, /* dc8f */ 0xffff, /* dc90 */ 0xffff, /* dc91 */ 0xffff, /* dc92 */ 0xffff, /* dc93 */ 0xffff, /* dc94 */ 0xffff, /* dc95 */ 0xffff, /* dc96 */ 0xffff, /* dc97 */ 0xffff, /* dc98 */ 0xffff, /* dc99 */ 0xffff, /* dc9a */ 0xffff, /* dc9b */ 0xffff, /* dc9c */ 0xffff, /* dc9d */ 0xffff, /* dc9e */ 0xffff, /* dc9f */ 0xffff, /* dca0 */ 0xffff, /* dca1 */ 0xffff, /* dca2 */ 0xffff, /* dca3 */ 0xffff, /* dca4 */ 0xffff, /* dca5 */ 0xffff, /* dca6 */ 0xffff, /* dca7 */ 0xffff, /* dca8 */ 0xffff, /* dca9 */ 0xffff, /* dcaa */ 0xffff, /* dcab */ 0xffff, /* dcac */ 0xffff, /* dcad */ 0xffff, /* dcae */ 0xffff, /* dcaf */ 0xffff, /* dcb0 */ 0xffff, /* dcb1 */ 0xffff, /* dcb2 */ 0xffff, /* dcb3 */ 0xffff, /* dcb4 */ 0xffff, /* dcb5 */ 0xffff, /* dcb6 */ 0xffff, /* dcb7 */ 0xffff, /* dcb8 */ 0xffff, /* dcb9 */ 0xffff, /* dcba */ 0xffff, /* dcbb */ 0xffff, /* dcbc */ 0xffff, /* dcbd */ 0xffff, /* dcbe */ 0xffff, /* dcbf */ 0xffff, /* dcc0 */ 0xffff, /* dcc1 */ 0xffff, /* dcc2 */ 0xffff, /* dcc3 */ 0xffff, /* dcc4 */ 0xffff, /* dcc5 */ 0xffff, /* dcc6 */ 0xffff, /* dcc7 */ 0xffff, /* dcc8 */ 0xffff, /* dcc9 */ 0xffff, /* dcca */ 0xffff, /* dccb */ 0xffff, /* dccc */ 0xffff, /* dccd */ 0xffff, /* dcce */ 0xffff, /* dccf */ 0xffff, /* dcd0 */ 0xffff, /* dcd1 */ 0xffff, /* dcd2 */ 0xffff, /* dcd3 */ 0xffff, /* dcd4 */ 0xffff, /* dcd5 */ 0xffff, /* dcd6 */ 0xffff, /* dcd7 */ 0xffff, /* dcd8 */ 0xffff, /* dcd9 */ 0xffff, /* dcda */ 0xffff, /* dcdb */ 0xffff, /* dcdc */ 0xffff, /* dcdd */ 0xffff, /* dcde */ 0xffff, /* dcdf */ 0xffff, /* dce0 */ 0xffff, /* dce1 */ 0xffff, /* dce2 */ 0xffff, /* dce3 */ 0xffff, /* dce4 */ 0xffff, /* dce5 */ 0xffff, /* dce6 */ 0xffff, /* dce7 */ 0xffff, /* dce8 */ 0xffff, /* dce9 */ 0xffff, /* dcea */ 0xffff, /* dceb */ 0xffff, /* dcec */ 0xffff, /* dced */ 0xffff, /* dcee */ 0xffff, /* dcef */ 0xffff, /* dcf0 */ 0xffff, /* dcf1 */ 0xffff, /* dcf2 */ 0xffff, /* dcf3 */ 0xffff, /* dcf4 */ 0xffff, /* dcf5 */ 0xffff, /* dcf6 */ 0xffff, /* dcf7 */ 0xffff, /* dcf8 */ 0xffff, /* dcf9 */ 0xffff, /* dcfa */ 0xffff, /* dcfb */ 0xffff, /* dcfc */ 0xffff, /* dcfd */ 0xffff, /* dcfe */ 0xffff, /* dcff */ 0xffff, /* dd00 */ 0xffff, /* dd01 */ 0xffff, /* dd02 */ 0xffff, /* dd03 */ 0xffff, /* dd04 */ 0xffff, /* dd05 */ 0xffff, /* dd06 */ 0xffff, /* dd07 */ 0xffff, /* dd08 */ 0xffff, /* dd09 */ 0xffff, /* dd0a */ 0xffff, /* dd0b */ 0xffff, /* dd0c */ 0xffff, /* dd0d */ 0xffff, /* dd0e */ 0xffff, /* dd0f */ 0xffff, /* dd10 */ 0xffff, /* dd11 */ 0xffff, /* dd12 */ 0xffff, /* dd13 */ 0xffff, /* dd14 */ 0xffff, /* dd15 */ 0xffff, /* dd16 */ 0xffff, /* dd17 */ 0xffff, /* dd18 */ 0xffff, /* dd19 */ 0xffff, /* dd1a */ 0xffff, /* dd1b */ 0xffff, /* dd1c */ 0xffff, /* dd1d */ 0xffff, /* dd1e */ 0xffff, /* dd1f */ 0xffff, /* dd20 */ 0xffff, /* dd21 */ 0xffff, /* dd22 */ 0xffff, /* dd23 */ 0xffff, /* dd24 */ 0xffff, /* dd25 */ 0xffff, /* dd26 */ 0xffff, /* dd27 */ 0xffff, /* dd28 */ 0xffff, /* dd29 */ 0xffff, /* dd2a */ 0xffff, /* dd2b */ 0xffff, /* dd2c */ 0xffff, /* dd2d */ 0xffff, /* dd2e */ 0xffff, /* dd2f */ 0xffff, /* dd30 */ 0xffff, /* dd31 */ 0xffff, /* dd32 */ 0xffff, /* dd33 */ 0xffff, /* dd34 */ 0xffff, /* dd35 */ 0xffff, /* dd36 */ 0xffff, /* dd37 */ 0xffff, /* dd38 */ 0xffff, /* dd39 */ 0xffff, /* dd3a */ 0xffff, /* dd3b */ 0xffff, /* dd3c */ 0xffff, /* dd3d */ 0xffff, /* dd3e */ 0xffff, /* dd3f */ 0xffff, /* dd40 */ 0xffff, /* dd41 */ 0xffff, /* dd42 */ 0xffff, /* dd43 */ 0xffff, /* dd44 */ 0xffff, /* dd45 */ 0xffff, /* dd46 */ 0xffff, /* dd47 */ 0xffff, /* dd48 */ 0xffff, /* dd49 */ 0xffff, /* dd4a */ 0xffff, /* dd4b */ 0xffff, /* dd4c */ 0xffff, /* dd4d */ 0xffff, /* dd4e */ 0xffff, /* dd4f */ 0xffff, /* dd50 */ 0xffff, /* dd51 */ 0xffff, /* dd52 */ 0xffff, /* dd53 */ 0xffff, /* dd54 */ 0xffff, /* dd55 */ 0xffff, /* dd56 */ 0xffff, /* dd57 */ 0xffff, /* dd58 */ 0xffff, /* dd59 */ 0xffff, /* dd5a */ 0xffff, /* dd5b */ 0xffff, /* dd5c */ 0xffff, /* dd5d */ 0xffff, /* dd5e */ 0xffff, /* dd5f */ 0xffff, /* dd60 */ 0xffff, /* dd61 */ 0xffff, /* dd62 */ 0xffff, /* dd63 */ 0xffff, /* dd64 */ 0xffff, /* dd65 */ 0xffff, /* dd66 */ 0xffff, /* dd67 */ 0xffff, /* dd68 */ 0xffff, /* dd69 */ 0xffff, /* dd6a */ 0xffff, /* dd6b */ 0xffff, /* dd6c */ 0xffff, /* dd6d */ 0xffff, /* dd6e */ 0xffff, /* dd6f */ 0xffff, /* dd70 */ 0xffff, /* dd71 */ 0xffff, /* dd72 */ 0xffff, /* dd73 */ 0xffff, /* dd74 */ 0xffff, /* dd75 */ 0xffff, /* dd76 */ 0xffff, /* dd77 */ 0xffff, /* dd78 */ 0xffff, /* dd79 */ 0xffff, /* dd7a */ 0xffff, /* dd7b */ 0xffff, /* dd7c */ 0xffff, /* dd7d */ 0xffff, /* dd7e */ 0xffff, /* dd7f */ 0xffff, /* dd80 */ 0xffff, /* dd81 */ 0xffff, /* dd82 */ 0xffff, /* dd83 */ 0xffff, /* dd84 */ 0xffff, /* dd85 */ 0xffff, /* dd86 */ 0xffff, /* dd87 */ 0xffff, /* dd88 */ 0xffff, /* dd89 */ 0xffff, /* dd8a */ 0xffff, /* dd8b */ 0xffff, /* dd8c */ 0xffff, /* dd8d */ 0xffff, /* dd8e */ 0xffff, /* dd8f */ 0xffff, /* dd90 */ 0xffff, /* dd91 */ 0xffff, /* dd92 */ 0xffff, /* dd93 */ 0xffff, /* dd94 */ 0xffff, /* dd95 */ 0xffff, /* dd96 */ 0xffff, /* dd97 */ 0xffff, /* dd98 */ 0xffff, /* dd99 */ 0xffff, /* dd9a */ 0xffff, /* dd9b */ 0xffff, /* dd9c */ 0xffff, /* dd9d */ 0xffff, /* dd9e */ 0xffff, /* dd9f */ 0xffff, /* dda0 */ 0xffff, /* dda1 */ 0xffff, /* dda2 */ 0xffff, /* dda3 */ 0xffff, /* dda4 */ 0xffff, /* dda5 */ 0xffff, /* dda6 */ 0xffff, /* dda7 */ 0xffff, /* dda8 */ 0xffff, /* dda9 */ 0xffff, /* ddaa */ 0xffff, /* ddab */ 0xffff, /* ddac */ 0xffff, /* ddad */ 0xffff, /* ddae */ 0xffff, /* ddaf */ 0xffff, /* ddb0 */ 0xffff, /* ddb1 */ 0xffff, /* ddb2 */ 0xffff, /* ddb3 */ 0xffff, /* ddb4 */ 0xffff, /* ddb5 */ 0xffff, /* ddb6 */ 0xffff, /* ddb7 */ 0xffff, /* ddb8 */ 0xffff, /* ddb9 */ 0xffff, /* ddba */ 0xffff, /* ddbb */ 0xffff, /* ddbc */ 0xffff, /* ddbd */ 0xffff, /* ddbe */ 0xffff, /* ddbf */ 0xffff, /* ddc0 */ 0xffff, /* ddc1 */ 0xffff, /* ddc2 */ 0xffff, /* ddc3 */ 0xffff, /* ddc4 */ 0xffff, /* ddc5 */ 0xffff, /* ddc6 */ 0xffff, /* ddc7 */ 0xffff, /* ddc8 */ 0xffff, /* ddc9 */ 0xffff, /* ddca */ 0xffff, /* ddcb */ 0xffff, /* ddcc */ 0xffff, /* ddcd */ 0xffff, /* ddce */ 0xffff, /* ddcf */ 0xffff, /* ddd0 */ 0xffff, /* ddd1 */ 0xffff, /* ddd2 */ 0xffff, /* ddd3 */ 0xffff, /* ddd4 */ 0xffff, /* ddd5 */ 0xffff, /* ddd6 */ 0xffff, /* ddd7 */ 0xffff, /* ddd8 */ 0xffff, /* ddd9 */ 0xffff, /* ddda */ 0xffff, /* dddb */ 0xffff, /* dddc */ 0xffff, /* dddd */ 0xffff, /* ddde */ 0xffff, /* dddf */ 0xffff, /* dde0 */ 0xffff, /* dde1 */ 0xffff, /* dde2 */ 0xffff, /* dde3 */ 0xffff, /* dde4 */ 0xffff, /* dde5 */ 0xffff, /* dde6 */ 0xffff, /* dde7 */ 0xffff, /* dde8 */ 0xffff, /* dde9 */ 0xffff, /* ddea */ 0xffff, /* ddeb */ 0xffff, /* ddec */ 0xffff, /* dded */ 0xffff, /* ddee */ 0xffff, /* ddef */ 0xffff, /* ddf0 */ 0xffff, /* ddf1 */ 0xffff, /* ddf2 */ 0xffff, /* ddf3 */ 0xffff, /* ddf4 */ 0xffff, /* ddf5 */ 0xffff, /* ddf6 */ 0xffff, /* ddf7 */ 0xffff, /* ddf8 */ 0xffff, /* ddf9 */ 0xffff, /* ddfa */ 0xffff, /* ddfb */ 0xffff, /* ddfc */ 0xffff, /* ddfd */ 0xffff, /* ddfe */ 0xffff, /* ddff */ 0xffff, /* de00 */ 0xffff, /* de01 */ 0xffff, /* de02 */ 0xffff, /* de03 */ 0xffff, /* de04 */ 0xffff, /* de05 */ 0xffff, /* de06 */ 0xffff, /* de07 */ 0xffff, /* de08 */ 0xffff, /* de09 */ 0xffff, /* de0a */ 0xffff, /* de0b */ 0xffff, /* de0c */ 0xffff, /* de0d */ 0xffff, /* de0e */ 0xffff, /* de0f */ 0xffff, /* de10 */ 0xffff, /* de11 */ 0xffff, /* de12 */ 0xffff, /* de13 */ 0xffff, /* de14 */ 0xffff, /* de15 */ 0xffff, /* de16 */ 0xffff, /* de17 */ 0xffff, /* de18 */ 0xffff, /* de19 */ 0xffff, /* de1a */ 0xffff, /* de1b */ 0xffff, /* de1c */ 0xffff, /* de1d */ 0xffff, /* de1e */ 0xffff, /* de1f */ 0xffff, /* de20 */ 0xffff, /* de21 */ 0xffff, /* de22 */ 0xffff, /* de23 */ 0xffff, /* de24 */ 0xffff, /* de25 */ 0xffff, /* de26 */ 0xffff, /* de27 */ 0xffff, /* de28 */ 0xffff, /* de29 */ 0xffff, /* de2a */ 0xffff, /* de2b */ 0xffff, /* de2c */ 0xffff, /* de2d */ 0xffff, /* de2e */ 0xffff, /* de2f */ 0xffff, /* de30 */ 0xffff, /* de31 */ 0xffff, /* de32 */ 0xffff, /* de33 */ 0xffff, /* de34 */ 0xffff, /* de35 */ 0xffff, /* de36 */ 0xffff, /* de37 */ 0xffff, /* de38 */ 0xffff, /* de39 */ 0xffff, /* de3a */ 0xffff, /* de3b */ 0xffff, /* de3c */ 0xffff, /* de3d */ 0xffff, /* de3e */ 0xffff, /* de3f */ 0xffff, /* de40 */ 0xffff, /* de41 */ 0xffff, /* de42 */ 0xffff, /* de43 */ 0xffff, /* de44 */ 0xffff, /* de45 */ 0xffff, /* de46 */ 0xffff, /* de47 */ 0xffff, /* de48 */ 0xffff, /* de49 */ 0xffff, /* de4a */ 0xffff, /* de4b */ 0xffff, /* de4c */ 0xffff, /* de4d */ 0xffff, /* de4e */ 0xffff, /* de4f */ 0xffff, /* de50 */ 0xffff, /* de51 */ 0xffff, /* de52 */ 0xffff, /* de53 */ 0xffff, /* de54 */ 0xffff, /* de55 */ 0xffff, /* de56 */ 0xffff, /* de57 */ 0xffff, /* de58 */ 0xffff, /* de59 */ 0xffff, /* de5a */ 0xffff, /* de5b */ 0xffff, /* de5c */ 0xffff, /* de5d */ 0xffff, /* de5e */ 0xffff, /* de5f */ 0xffff, /* de60 */ 0xffff, /* de61 */ 0xffff, /* de62 */ 0xffff, /* de63 */ 0xffff, /* de64 */ 0xffff, /* de65 */ 0xffff, /* de66 */ 0xffff, /* de67 */ 0xffff, /* de68 */ 0xffff, /* de69 */ 0xffff, /* de6a */ 0xffff, /* de6b */ 0xffff, /* de6c */ 0xffff, /* de6d */ 0xffff, /* de6e */ 0xffff, /* de6f */ 0xffff, /* de70 */ 0xffff, /* de71 */ 0xffff, /* de72 */ 0xffff, /* de73 */ 0xffff, /* de74 */ 0xffff, /* de75 */ 0xffff, /* de76 */ 0xffff, /* de77 */ 0xffff, /* de78 */ 0xffff, /* de79 */ 0xffff, /* de7a */ 0xffff, /* de7b */ 0xffff, /* de7c */ 0xffff, /* de7d */ 0xffff, /* de7e */ 0xffff, /* de7f */ 0xffff, /* de80 */ 0xffff, /* de81 */ 0xffff, /* de82 */ 0xffff, /* de83 */ 0xffff, /* de84 */ 0xffff, /* de85 */ 0xffff, /* de86 */ 0xffff, /* de87 */ 0xffff, /* de88 */ 0xffff, /* de89 */ 0xffff, /* de8a */ 0xffff, /* de8b */ 0xffff, /* de8c */ 0xffff, /* de8d */ 0xffff, /* de8e */ 0xffff, /* de8f */ 0xffff, /* de90 */ 0xffff, /* de91 */ 0xffff, /* de92 */ 0xffff, /* de93 */ 0xffff, /* de94 */ 0xffff, /* de95 */ 0xffff, /* de96 */ 0xffff, /* de97 */ 0xffff, /* de98 */ 0xffff, /* de99 */ 0xffff, /* de9a */ 0xffff, /* de9b */ 0xffff, /* de9c */ 0xffff, /* de9d */ 0xffff, /* de9e */ 0xffff, /* de9f */ 0xffff, /* dea0 */ 0xffff, /* dea1 */ 0xffff, /* dea2 */ 0xffff, /* dea3 */ 0xffff, /* dea4 */ 0xffff, /* dea5 */ 0xffff, /* dea6 */ 0xffff, /* dea7 */ 0xffff, /* dea8 */ 0xffff, /* dea9 */ 0xffff, /* deaa */ 0xffff, /* deab */ 0xffff, /* deac */ 0xffff, /* dead */ 0xffff, /* deae */ 0xffff, /* deaf */ 0xffff, /* deb0 */ 0xffff, /* deb1 */ 0xffff, /* deb2 */ 0xffff, /* deb3 */ 0xffff, /* deb4 */ 0xffff, /* deb5 */ 0xffff, /* deb6 */ 0xffff, /* deb7 */ 0xffff, /* deb8 */ 0xffff, /* deb9 */ 0xffff, /* deba */ 0xffff, /* debb */ 0xffff, /* debc */ 0xffff, /* debd */ 0xffff, /* debe */ 0xffff, /* debf */ 0xffff, /* dec0 */ 0xffff, /* dec1 */ 0xffff, /* dec2 */ 0xffff, /* dec3 */ 0xffff, /* dec4 */ 0xffff, /* dec5 */ 0xffff, /* dec6 */ 0xffff, /* dec7 */ 0xffff, /* dec8 */ 0xffff, /* dec9 */ 0xffff, /* deca */ 0xffff, /* decb */ 0xffff, /* decc */ 0xffff, /* decd */ 0xffff, /* dece */ 0xffff, /* decf */ 0xffff, /* ded0 */ 0xffff, /* ded1 */ 0xffff, /* ded2 */ 0xffff, /* ded3 */ 0xffff, /* ded4 */ 0xffff, /* ded5 */ 0xffff, /* ded6 */ 0xffff, /* ded7 */ 0xffff, /* ded8 */ 0xffff, /* ded9 */ 0xffff, /* deda */ 0xffff, /* dedb */ 0xffff, /* dedc */ 0xffff, /* dedd */ 0xffff, /* dede */ 0xffff, /* dedf */ 0xffff, /* dee0 */ 0xffff, /* dee1 */ 0xffff, /* dee2 */ 0xffff, /* dee3 */ 0xffff, /* dee4 */ 0xffff, /* dee5 */ 0xffff, /* dee6 */ 0xffff, /* dee7 */ 0xffff, /* dee8 */ 0xffff, /* dee9 */ 0xffff, /* deea */ 0xffff, /* deeb */ 0xffff, /* deec */ 0xffff, /* deed */ 0xffff, /* deee */ 0xffff, /* deef */ 0xffff, /* def0 */ 0xffff, /* def1 */ 0xffff, /* def2 */ 0xffff, /* def3 */ 0xffff, /* def4 */ 0xffff, /* def5 */ 0xffff, /* def6 */ 0xffff, /* def7 */ 0xffff, /* def8 */ 0xffff, /* def9 */ 0xffff, /* defa */ 0xffff, /* defb */ 0xffff, /* defc */ 0xffff, /* defd */ 0xffff, /* defe */ 0xffff, /* deff */ 0xffff, /* df00 */ 0xffff, /* df01 */ 0xffff, /* df02 */ 0xffff, /* df03 */ 0xffff, /* df04 */ 0xffff, /* df05 */ 0xffff, /* df06 */ 0xffff, /* df07 */ 0xffff, /* df08 */ 0xffff, /* df09 */ 0xffff, /* df0a */ 0xffff, /* df0b */ 0xffff, /* df0c */ 0xffff, /* df0d */ 0xffff, /* df0e */ 0xffff, /* df0f */ 0xffff, /* df10 */ 0xffff, /* df11 */ 0xffff, /* df12 */ 0xffff, /* df13 */ 0xffff, /* df14 */ 0xffff, /* df15 */ 0xffff, /* df16 */ 0xffff, /* df17 */ 0xffff, /* df18 */ 0xffff, /* df19 */ 0xffff, /* df1a */ 0xffff, /* df1b */ 0xffff, /* df1c */ 0xffff, /* df1d */ 0xffff, /* df1e */ 0xffff, /* df1f */ 0xffff, /* df20 */ 0xffff, /* df21 */ 0xffff, /* df22 */ 0xffff, /* df23 */ 0xffff, /* df24 */ 0xffff, /* df25 */ 0xffff, /* df26 */ 0xffff, /* df27 */ 0xffff, /* df28 */ 0xffff, /* df29 */ 0xffff, /* df2a */ 0xffff, /* df2b */ 0xffff, /* df2c */ 0xffff, /* df2d */ 0xffff, /* df2e */ 0xffff, /* df2f */ 0xffff, /* df30 */ 0xffff, /* df31 */ 0xffff, /* df32 */ 0xffff, /* df33 */ 0xffff, /* df34 */ 0xffff, /* df35 */ 0xffff, /* df36 */ 0xffff, /* df37 */ 0xffff, /* df38 */ 0xffff, /* df39 */ 0xffff, /* df3a */ 0xffff, /* df3b */ 0xffff, /* df3c */ 0xffff, /* df3d */ 0xffff, /* df3e */ 0xffff, /* df3f */ 0xffff, /* df40 */ 0xffff, /* df41 */ 0xffff, /* df42 */ 0xffff, /* df43 */ 0xffff, /* df44 */ 0xffff, /* df45 */ 0xffff, /* df46 */ 0xffff, /* df47 */ 0xffff, /* df48 */ 0xffff, /* df49 */ 0xffff, /* df4a */ 0xffff, /* df4b */ 0xffff, /* df4c */ 0xffff, /* df4d */ 0xffff, /* df4e */ 0xffff, /* df4f */ 0xffff, /* df50 */ 0xffff, /* df51 */ 0xffff, /* df52 */ 0xffff, /* df53 */ 0xffff, /* df54 */ 0xffff, /* df55 */ 0xffff, /* df56 */ 0xffff, /* df57 */ 0xffff, /* df58 */ 0xffff, /* df59 */ 0xffff, /* df5a */ 0xffff, /* df5b */ 0xffff, /* df5c */ 0xffff, /* df5d */ 0xffff, /* df5e */ 0xffff, /* df5f */ 0xffff, /* df60 */ 0xffff, /* df61 */ 0xffff, /* df62 */ 0xffff, /* df63 */ 0xffff, /* df64 */ 0xffff, /* df65 */ 0xffff, /* df66 */ 0xffff, /* df67 */ 0xffff, /* df68 */ 0xffff, /* df69 */ 0xffff, /* df6a */ 0xffff, /* df6b */ 0xffff, /* df6c */ 0xffff, /* df6d */ 0xffff, /* df6e */ 0xffff, /* df6f */ 0xffff, /* df70 */ 0xffff, /* df71 */ 0xffff, /* df72 */ 0xffff, /* df73 */ 0xffff, /* df74 */ 0xffff, /* df75 */ 0xffff, /* df76 */ 0xffff, /* df77 */ 0xffff, /* df78 */ 0xffff, /* df79 */ 0xffff, /* df7a */ 0xffff, /* df7b */ 0xffff, /* df7c */ 0xffff, /* df7d */ 0xffff, /* df7e */ 0xffff, /* df7f */ 0xffff, /* df80 */ 0xffff, /* df81 */ 0xffff, /* df82 */ 0xffff, /* df83 */ 0xffff, /* df84 */ 0xffff, /* df85 */ 0xffff, /* df86 */ 0xffff, /* df87 */ 0xffff, /* df88 */ 0xffff, /* df89 */ 0xffff, /* df8a */ 0xffff, /* df8b */ 0xffff, /* df8c */ 0xffff, /* df8d */ 0xffff, /* df8e */ 0xffff, /* df8f */ 0xffff, /* df90 */ 0xffff, /* df91 */ 0xffff, /* df92 */ 0xffff, /* df93 */ 0xffff, /* df94 */ 0xffff, /* df95 */ 0xffff, /* df96 */ 0xffff, /* df97 */ 0xffff, /* df98 */ 0xffff, /* df99 */ 0xffff, /* df9a */ 0xffff, /* df9b */ 0xffff, /* df9c */ 0xffff, /* df9d */ 0xffff, /* df9e */ 0xffff, /* df9f */ 0xffff, /* dfa0 */ 0xffff, /* dfa1 */ 0xffff, /* dfa2 */ 0xffff, /* dfa3 */ 0xffff, /* dfa4 */ 0xffff, /* dfa5 */ 0xffff, /* dfa6 */ 0xffff, /* dfa7 */ 0xffff, /* dfa8 */ 0xffff, /* dfa9 */ 0xffff, /* dfaa */ 0xffff, /* dfab */ 0xffff, /* dfac */ 0xffff, /* dfad */ 0xffff, /* dfae */ 0xffff, /* dfaf */ 0xffff, /* dfb0 */ 0xffff, /* dfb1 */ 0xffff, /* dfb2 */ 0xffff, /* dfb3 */ 0xffff, /* dfb4 */ 0xffff, /* dfb5 */ 0xffff, /* dfb6 */ 0xffff, /* dfb7 */ 0xffff, /* dfb8 */ 0xffff, /* dfb9 */ 0xffff, /* dfba */ 0xffff, /* dfbb */ 0xffff, /* dfbc */ 0xffff, /* dfbd */ 0xffff, /* dfbe */ 0xffff, /* dfbf */ 0xffff, /* dfc0 */ 0xffff, /* dfc1 */ 0xffff, /* dfc2 */ 0xffff, /* dfc3 */ 0xffff, /* dfc4 */ 0xffff, /* dfc5 */ 0xffff, /* dfc6 */ 0xffff, /* dfc7 */ 0xffff, /* dfc8 */ 0xffff, /* dfc9 */ 0xffff, /* dfca */ 0xffff, /* dfcb */ 0xffff, /* dfcc */ 0xffff, /* dfcd */ 0xffff, /* dfce */ 0xffff, /* dfcf */ 0xffff, /* dfd0 */ 0xffff, /* dfd1 */ 0xffff, /* dfd2 */ 0xffff, /* dfd3 */ 0xffff, /* dfd4 */ 0xffff, /* dfd5 */ 0xffff, /* dfd6 */ 0xffff, /* dfd7 */ 0xffff, /* dfd8 */ 0xffff, /* dfd9 */ 0xffff, /* dfda */ 0xffff, /* dfdb */ 0xffff, /* dfdc */ 0xffff, /* dfdd */ 0xffff, /* dfde */ 0xffff, /* dfdf */ 0xffff, /* dfe0 */ 0xffff, /* dfe1 */ 0xffff, /* dfe2 */ 0xffff, /* dfe3 */ 0xffff, /* dfe4 */ 0xffff, /* dfe5 */ 0xffff, /* dfe6 */ 0xffff, /* dfe7 */ 0xffff, /* dfe8 */ 0xffff, /* dfe9 */ 0xffff, /* dfea */ 0xffff, /* dfeb */ 0xffff, /* dfec */ 0xffff, /* dfed */ 0xffff, /* dfee */ 0xffff, /* dfef */ 0xffff, /* dff0 */ 0xffff, /* dff1 */ 0xffff, /* dff2 */ 0xffff, /* dff3 */ 0xffff, /* dff4 */ 0xffff, /* dff5 */ 0xffff, /* dff6 */ 0xffff, /* dff7 */ 0xffff, /* dff8 */ 0xffff, /* dff9 */ 0xffff, /* dffa */ 0xffff, /* dffb */ 0xffff, /* dffc */ 0xffff, /* dffd */ 0xffff, /* dffe */ 0xffff, /* dfff */ 0xffff, /* e000 */ 0xffff, /* e001 */ 0xffff, /* e002 */ 0xffff, /* e003 */ 0xffff, /* e004 */ 0xffff, /* e005 */ 0xffff, /* e006 */ 0xffff, /* e007 */ 0xffff, /* e008 */ 0xffff, /* e009 */ 0xffff, /* e00a */ 0xffff, /* e00b */ 0xffff, /* e00c */ 0xffff, /* e00d */ 0xffff, /* e00e */ 0xffff, /* e00f */ 0xffff, /* e010 */ 0xffff, /* e011 */ 0xffff, /* e012 */ 0xffff, /* e013 */ 0xffff, /* e014 */ 0xffff, /* e015 */ 0xffff, /* e016 */ 0xffff, /* e017 */ 0xffff, /* e018 */ 0xffff, /* e019 */ 0xffff, /* e01a */ 0xffff, /* e01b */ 0xffff, /* e01c */ 0xffff, /* e01d */ 0xffff, /* e01e */ 0xffff, /* e01f */ 0xffff, /* e020 */ 0xffff, /* e021 */ 0xffff, /* e022 */ 0xffff, /* e023 */ 0xffff, /* e024 */ 0xffff, /* e025 */ 0xffff, /* e026 */ 0xffff, /* e027 */ 0xffff, /* e028 */ 0xffff, /* e029 */ 0xffff, /* e02a */ 0xffff, /* e02b */ 0xffff, /* e02c */ 0xffff, /* e02d */ 0xffff, /* e02e */ 0xffff, /* e02f */ 0xffff, /* e030 */ 0xffff, /* e031 */ 0xffff, /* e032 */ 0xffff, /* e033 */ 0xffff, /* e034 */ 0xffff, /* e035 */ 0xffff, /* e036 */ 0xffff, /* e037 */ 0xffff, /* e038 */ 0xffff, /* e039 */ 0xffff, /* e03a */ 0xffff, /* e03b */ 0xffff, /* e03c */ 0xffff, /* e03d */ 0xffff, /* e03e */ 0xffff, /* e03f */ 0xffff, /* e040 */ 0xffff, /* e041 */ 0xffff, /* e042 */ 0xffff, /* e043 */ 0xffff, /* e044 */ 0xffff, /* e045 */ 0xffff, /* e046 */ 0xffff, /* e047 */ 0xffff, /* e048 */ 0xffff, /* e049 */ 0xffff, /* e04a */ 0xffff, /* e04b */ 0xffff, /* e04c */ 0xffff, /* e04d */ 0xffff, /* e04e */ 0xffff, /* e04f */ 0xffff, /* e050 */ 0xffff, /* e051 */ 0xffff, /* e052 */ 0xffff, /* e053 */ 0xffff, /* e054 */ 0xffff, /* e055 */ 0xffff, /* e056 */ 0xffff, /* e057 */ 0xffff, /* e058 */ 0xffff, /* e059 */ 0xffff, /* e05a */ 0xffff, /* e05b */ 0xffff, /* e05c */ 0xffff, /* e05d */ 0xffff, /* e05e */ 0xffff, /* e05f */ 0xffff, /* e060 */ 0xffff, /* e061 */ 0xffff, /* e062 */ 0xffff, /* e063 */ 0xffff, /* e064 */ 0xffff, /* e065 */ 0xffff, /* e066 */ 0xffff, /* e067 */ 0xffff, /* e068 */ 0xffff, /* e069 */ 0xffff, /* e06a */ 0xffff, /* e06b */ 0xffff, /* e06c */ 0xffff, /* e06d */ 0xffff, /* e06e */ 0xffff, /* e06f */ 0xffff, /* e070 */ 0xffff, /* e071 */ 0xffff, /* e072 */ 0xffff, /* e073 */ 0xffff, /* e074 */ 0xffff, /* e075 */ 0xffff, /* e076 */ 0xffff, /* e077 */ 0xffff, /* e078 */ 0xffff, /* e079 */ 0xffff, /* e07a */ 0xffff, /* e07b */ 0xffff, /* e07c */ 0xffff, /* e07d */ 0xffff, /* e07e */ 0xffff, /* e07f */ 0xffff, /* e080 */ 0xffff, /* e081 */ 0xffff, /* e082 */ 0xffff, /* e083 */ 0xffff, /* e084 */ 0xffff, /* e085 */ 0xffff, /* e086 */ 0xffff, /* e087 */ 0xffff, /* e088 */ 0xffff, /* e089 */ 0xffff, /* e08a */ 0xffff, /* e08b */ 0xffff, /* e08c */ 0xffff, /* e08d */ 0xffff, /* e08e */ 0xffff, /* e08f */ 0xffff, /* e090 */ 0xffff, /* e091 */ 0xffff, /* e092 */ 0xffff, /* e093 */ 0xffff, /* e094 */ 0xffff, /* e095 */ 0xffff, /* e096 */ 0xffff, /* e097 */ 0xffff, /* e098 */ 0xffff, /* e099 */ 0xffff, /* e09a */ 0xffff, /* e09b */ 0xffff, /* e09c */ 0xffff, /* e09d */ 0xffff, /* e09e */ 0xffff, /* e09f */ 0xffff, /* e0a0 */ 0xffff, /* e0a1 */ 0xffff, /* e0a2 */ 0xffff, /* e0a3 */ 0xffff, /* e0a4 */ 0xffff, /* e0a5 */ 0xffff, /* e0a6 */ 0xffff, /* e0a7 */ 0xffff, /* e0a8 */ 0xffff, /* e0a9 */ 0xffff, /* e0aa */ 0xffff, /* e0ab */ 0xffff, /* e0ac */ 0xffff, /* e0ad */ 0xffff, /* e0ae */ 0xffff, /* e0af */ 0xffff, /* e0b0 */ 0xffff, /* e0b1 */ 0xffff, /* e0b2 */ 0xffff, /* e0b3 */ 0xffff, /* e0b4 */ 0xffff, /* e0b5 */ 0xffff, /* e0b6 */ 0xffff, /* e0b7 */ 0xffff, /* e0b8 */ 0xffff, /* e0b9 */ 0xffff, /* e0ba */ 0xffff, /* e0bb */ 0xffff, /* e0bc */ 0xffff, /* e0bd */ 0xffff, /* e0be */ 0xffff, /* e0bf */ 0xffff, /* e0c0 */ 0xffff, /* e0c1 */ 0xffff, /* e0c2 */ 0xffff, /* e0c3 */ 0xffff, /* e0c4 */ 0xffff, /* e0c5 */ 0xffff, /* e0c6 */ 0xffff, /* e0c7 */ 0xffff, /* e0c8 */ 0xffff, /* e0c9 */ 0xffff, /* e0ca */ 0xffff, /* e0cb */ 0xffff, /* e0cc */ 0xffff, /* e0cd */ 0xffff, /* e0ce */ 0xffff, /* e0cf */ 0xffff, /* e0d0 */ 0xffff, /* e0d1 */ 0xffff, /* e0d2 */ 0xffff, /* e0d3 */ 0xffff, /* e0d4 */ 0xffff, /* e0d5 */ 0xffff, /* e0d6 */ 0xffff, /* e0d7 */ 0xffff, /* e0d8 */ 0xffff, /* e0d9 */ 0xffff, /* e0da */ 0xffff, /* e0db */ 0xffff, /* e0dc */ 0xffff, /* e0dd */ 0xffff, /* e0de */ 0xffff, /* e0df */ 0xffff, /* e0e0 */ 0xffff, /* e0e1 */ 0xffff, /* e0e2 */ 0xffff, /* e0e3 */ 0xffff, /* e0e4 */ 0xffff, /* e0e5 */ 0xffff, /* e0e6 */ 0xffff, /* e0e7 */ 0xffff, /* e0e8 */ 0xffff, /* e0e9 */ 0xffff, /* e0ea */ 0xffff, /* e0eb */ 0xffff, /* e0ec */ 0xffff, /* e0ed */ 0xffff, /* e0ee */ 0xffff, /* e0ef */ 0xffff, /* e0f0 */ 0xffff, /* e0f1 */ 0xffff, /* e0f2 */ 0xffff, /* e0f3 */ 0xffff, /* e0f4 */ 0xffff, /* e0f5 */ 0xffff, /* e0f6 */ 0xffff, /* e0f7 */ 0xffff, /* e0f8 */ 0xffff, /* e0f9 */ 0xffff, /* e0fa */ 0xffff, /* e0fb */ 0xffff, /* e0fc */ 0xffff, /* e0fd */ 0xffff, /* e0fe */ 0xffff, /* e0ff */ 0xffff, /* e100 */ 0xffff, /* e101 */ 0xffff, /* e102 */ 0xffff, /* e103 */ 0xffff, /* e104 */ 0xffff, /* e105 */ 0xffff, /* e106 */ 0xffff, /* e107 */ 0xffff, /* e108 */ 0xffff, /* e109 */ 0xffff, /* e10a */ 0xffff, /* e10b */ 0xffff, /* e10c */ 0xffff, /* e10d */ 0xffff, /* e10e */ 0xffff, /* e10f */ 0xffff, /* e110 */ 0xffff, /* e111 */ 0xffff, /* e112 */ 0xffff, /* e113 */ 0xffff, /* e114 */ 0xffff, /* e115 */ 0xffff, /* e116 */ 0xffff, /* e117 */ 0xffff, /* e118 */ 0xffff, /* e119 */ 0xffff, /* e11a */ 0xffff, /* e11b */ 0xffff, /* e11c */ 0xffff, /* e11d */ 0xffff, /* e11e */ 0xffff, /* e11f */ 0xffff, /* e120 */ 0xffff, /* e121 */ 0xffff, /* e122 */ 0xffff, /* e123 */ 0xffff, /* e124 */ 0xffff, /* e125 */ 0xffff, /* e126 */ 0xffff, /* e127 */ 0xffff, /* e128 */ 0xffff, /* e129 */ 0xffff, /* e12a */ 0xffff, /* e12b */ 0xffff, /* e12c */ 0xffff, /* e12d */ 0xffff, /* e12e */ 0xffff, /* e12f */ 0xffff, /* e130 */ 0xffff, /* e131 */ 0xffff, /* e132 */ 0xffff, /* e133 */ 0xffff, /* e134 */ 0xffff, /* e135 */ 0xffff, /* e136 */ 0xffff, /* e137 */ 0xffff, /* e138 */ 0xffff, /* e139 */ 0xffff, /* e13a */ 0xffff, /* e13b */ 0xffff, /* e13c */ 0xffff, /* e13d */ 0xffff, /* e13e */ 0xffff, /* e13f */ 0xffff, /* e140 */ 0xffff, /* e141 */ 0xffff, /* e142 */ 0xffff, /* e143 */ 0xffff, /* e144 */ 0xffff, /* e145 */ 0xffff, /* e146 */ 0xffff, /* e147 */ 0xffff, /* e148 */ 0xffff, /* e149 */ 0xffff, /* e14a */ 0xffff, /* e14b */ 0xffff, /* e14c */ 0xffff, /* e14d */ 0xffff, /* e14e */ 0xffff, /* e14f */ 0xffff, /* e150 */ 0xffff, /* e151 */ 0xffff, /* e152 */ 0xffff, /* e153 */ 0xffff, /* e154 */ 0xffff, /* e155 */ 0xffff, /* e156 */ 0xffff, /* e157 */ 0xffff, /* e158 */ 0xffff, /* e159 */ 0xffff, /* e15a */ 0xffff, /* e15b */ 0xffff, /* e15c */ 0xffff, /* e15d */ 0xffff, /* e15e */ 0xffff, /* e15f */ 0xffff, /* e160 */ 0xffff, /* e161 */ 0xffff, /* e162 */ 0xffff, /* e163 */ 0xffff, /* e164 */ 0xffff, /* e165 */ 0xffff, /* e166 */ 0xffff, /* e167 */ 0xffff, /* e168 */ 0xffff, /* e169 */ 0xffff, /* e16a */ 0xffff, /* e16b */ 0xffff, /* e16c */ 0xffff, /* e16d */ 0xffff, /* e16e */ 0xffff, /* e16f */ 0xffff, /* e170 */ 0xffff, /* e171 */ 0xffff, /* e172 */ 0xffff, /* e173 */ 0xffff, /* e174 */ 0xffff, /* e175 */ 0xffff, /* e176 */ 0xffff, /* e177 */ 0xffff, /* e178 */ 0xffff, /* e179 */ 0xffff, /* e17a */ 0xffff, /* e17b */ 0xffff, /* e17c */ 0xffff, /* e17d */ 0xffff, /* e17e */ 0xffff, /* e17f */ 0xffff, /* e180 */ 0xffff, /* e181 */ 0xffff, /* e182 */ 0xffff, /* e183 */ 0xffff, /* e184 */ 0xffff, /* e185 */ 0xffff, /* e186 */ 0xffff, /* e187 */ 0xffff, /* e188 */ 0xffff, /* e189 */ 0xffff, /* e18a */ 0xffff, /* e18b */ 0xffff, /* e18c */ 0xffff, /* e18d */ 0xffff, /* e18e */ 0xffff, /* e18f */ 0xffff, /* e190 */ 0xffff, /* e191 */ 0xffff, /* e192 */ 0xffff, /* e193 */ 0xffff, /* e194 */ 0xffff, /* e195 */ 0xffff, /* e196 */ 0xffff, /* e197 */ 0xffff, /* e198 */ 0xffff, /* e199 */ 0xffff, /* e19a */ 0xffff, /* e19b */ 0xffff, /* e19c */ 0xffff, /* e19d */ 0xffff, /* e19e */ 0xffff, /* e19f */ 0xffff, /* e1a0 */ 0xffff, /* e1a1 */ 0xffff, /* e1a2 */ 0xffff, /* e1a3 */ 0xffff, /* e1a4 */ 0xffff, /* e1a5 */ 0xffff, /* e1a6 */ 0xffff, /* e1a7 */ 0xffff, /* e1a8 */ 0xffff, /* e1a9 */ 0xffff, /* e1aa */ 0xffff, /* e1ab */ 0xffff, /* e1ac */ 0xffff, /* e1ad */ 0xffff, /* e1ae */ 0xffff, /* e1af */ 0xffff, /* e1b0 */ 0xffff, /* e1b1 */ 0xffff, /* e1b2 */ 0xffff, /* e1b3 */ 0xffff, /* e1b4 */ 0xffff, /* e1b5 */ 0xffff, /* e1b6 */ 0xffff, /* e1b7 */ 0xffff, /* e1b8 */ 0xffff, /* e1b9 */ 0xffff, /* e1ba */ 0xffff, /* e1bb */ 0xffff, /* e1bc */ 0xffff, /* e1bd */ 0xffff, /* e1be */ 0xffff, /* e1bf */ 0xffff, /* e1c0 */ 0xffff, /* e1c1 */ 0xffff, /* e1c2 */ 0xffff, /* e1c3 */ 0xffff, /* e1c4 */ 0xffff, /* e1c5 */ 0xffff, /* e1c6 */ 0xffff, /* e1c7 */ 0xffff, /* e1c8 */ 0xffff, /* e1c9 */ 0xffff, /* e1ca */ 0xffff, /* e1cb */ 0xffff, /* e1cc */ 0xffff, /* e1cd */ 0xffff, /* e1ce */ 0xffff, /* e1cf */ 0xffff, /* e1d0 */ 0xffff, /* e1d1 */ 0xffff, /* e1d2 */ 0xffff, /* e1d3 */ 0xffff, /* e1d4 */ 0xffff, /* e1d5 */ 0xffff, /* e1d6 */ 0xffff, /* e1d7 */ 0xffff, /* e1d8 */ 0xffff, /* e1d9 */ 0xffff, /* e1da */ 0xffff, /* e1db */ 0xffff, /* e1dc */ 0xffff, /* e1dd */ 0xffff, /* e1de */ 0xffff, /* e1df */ 0xffff, /* e1e0 */ 0xffff, /* e1e1 */ 0xffff, /* e1e2 */ 0xffff, /* e1e3 */ 0xffff, /* e1e4 */ 0xffff, /* e1e5 */ 0xffff, /* e1e6 */ 0xffff, /* e1e7 */ 0xffff, /* e1e8 */ 0xffff, /* e1e9 */ 0xffff, /* e1ea */ 0xffff, /* e1eb */ 0xffff, /* e1ec */ 0xffff, /* e1ed */ 0xffff, /* e1ee */ 0xffff, /* e1ef */ 0xffff, /* e1f0 */ 0xffff, /* e1f1 */ 0xffff, /* e1f2 */ 0xffff, /* e1f3 */ 0xffff, /* e1f4 */ 0xffff, /* e1f5 */ 0xffff, /* e1f6 */ 0xffff, /* e1f7 */ 0xffff, /* e1f8 */ 0xffff, /* e1f9 */ 0xffff, /* e1fa */ 0xffff, /* e1fb */ 0xffff, /* e1fc */ 0xffff, /* e1fd */ 0xffff, /* e1fe */ 0xffff, /* e1ff */ 0xffff, /* e200 */ 0xffff, /* e201 */ 0xffff, /* e202 */ 0xffff, /* e203 */ 0xffff, /* e204 */ 0xffff, /* e205 */ 0xffff, /* e206 */ 0xffff, /* e207 */ 0xffff, /* e208 */ 0xffff, /* e209 */ 0xffff, /* e20a */ 0xffff, /* e20b */ 0xffff, /* e20c */ 0xffff, /* e20d */ 0xffff, /* e20e */ 0xffff, /* e20f */ 0xffff, /* e210 */ 0xffff, /* e211 */ 0xffff, /* e212 */ 0xffff, /* e213 */ 0xffff, /* e214 */ 0xffff, /* e215 */ 0xffff, /* e216 */ 0xffff, /* e217 */ 0xffff, /* e218 */ 0xffff, /* e219 */ 0xffff, /* e21a */ 0xffff, /* e21b */ 0xffff, /* e21c */ 0xffff, /* e21d */ 0xffff, /* e21e */ 0xffff, /* e21f */ 0xffff, /* e220 */ 0xffff, /* e221 */ 0xffff, /* e222 */ 0xffff, /* e223 */ 0xffff, /* e224 */ 0xffff, /* e225 */ 0xffff, /* e226 */ 0xffff, /* e227 */ 0xffff, /* e228 */ 0xffff, /* e229 */ 0xffff, /* e22a */ 0xffff, /* e22b */ 0xffff, /* e22c */ 0xffff, /* e22d */ 0xffff, /* e22e */ 0xffff, /* e22f */ 0xffff, /* e230 */ 0xffff, /* e231 */ 0xffff, /* e232 */ 0xffff, /* e233 */ 0xffff, /* e234 */ 0xffff, /* e235 */ 0xffff, /* e236 */ 0xffff, /* e237 */ 0xffff, /* e238 */ 0xffff, /* e239 */ 0xffff, /* e23a */ 0xffff, /* e23b */ 0xffff, /* e23c */ 0xffff, /* e23d */ 0xffff, /* e23e */ 0xffff, /* e23f */ 0xffff, /* e240 */ 0xffff, /* e241 */ 0xffff, /* e242 */ 0xffff, /* e243 */ 0xffff, /* e244 */ 0xffff, /* e245 */ 0xffff, /* e246 */ 0xffff, /* e247 */ 0xffff, /* e248 */ 0xffff, /* e249 */ 0xffff, /* e24a */ 0xffff, /* e24b */ 0xffff, /* e24c */ 0xffff, /* e24d */ 0xffff, /* e24e */ 0xffff, /* e24f */ 0xffff, /* e250 */ 0xffff, /* e251 */ 0xffff, /* e252 */ 0xffff, /* e253 */ 0xffff, /* e254 */ 0xffff, /* e255 */ 0xffff, /* e256 */ 0xffff, /* e257 */ 0xffff, /* e258 */ 0xffff, /* e259 */ 0xffff, /* e25a */ 0xffff, /* e25b */ 0xffff, /* e25c */ 0xffff, /* e25d */ 0xffff, /* e25e */ 0xffff, /* e25f */ 0xffff, /* e260 */ 0xffff, /* e261 */ 0xffff, /* e262 */ 0xffff, /* e263 */ 0xffff, /* e264 */ 0xffff, /* e265 */ 0xffff, /* e266 */ 0xffff, /* e267 */ 0xffff, /* e268 */ 0xffff, /* e269 */ 0xffff, /* e26a */ 0xffff, /* e26b */ 0xffff, /* e26c */ 0xffff, /* e26d */ 0xffff, /* e26e */ 0xffff, /* e26f */ 0xffff, /* e270 */ 0xffff, /* e271 */ 0xffff, /* e272 */ 0xffff, /* e273 */ 0xffff, /* e274 */ 0xffff, /* e275 */ 0xffff, /* e276 */ 0xffff, /* e277 */ 0xffff, /* e278 */ 0xffff, /* e279 */ 0xffff, /* e27a */ 0xffff, /* e27b */ 0xffff, /* e27c */ 0xffff, /* e27d */ 0xffff, /* e27e */ 0xffff, /* e27f */ 0xffff, /* e280 */ 0xffff, /* e281 */ 0xffff, /* e282 */ 0xffff, /* e283 */ 0xffff, /* e284 */ 0xffff, /* e285 */ 0xffff, /* e286 */ 0xffff, /* e287 */ 0xffff, /* e288 */ 0xffff, /* e289 */ 0xffff, /* e28a */ 0xffff, /* e28b */ 0xffff, /* e28c */ 0xffff, /* e28d */ 0xffff, /* e28e */ 0xffff, /* e28f */ 0xffff, /* e290 */ 0xffff, /* e291 */ 0xffff, /* e292 */ 0xffff, /* e293 */ 0xffff, /* e294 */ 0xffff, /* e295 */ 0xffff, /* e296 */ 0xffff, /* e297 */ 0xffff, /* e298 */ 0xffff, /* e299 */ 0xffff, /* e29a */ 0xffff, /* e29b */ 0xffff, /* e29c */ 0xffff, /* e29d */ 0xffff, /* e29e */ 0xffff, /* e29f */ 0xffff, /* e2a0 */ 0xffff, /* e2a1 */ 0xffff, /* e2a2 */ 0xffff, /* e2a3 */ 0xffff, /* e2a4 */ 0xffff, /* e2a5 */ 0xffff, /* e2a6 */ 0xffff, /* e2a7 */ 0xffff, /* e2a8 */ 0xffff, /* e2a9 */ 0xffff, /* e2aa */ 0xffff, /* e2ab */ 0xffff, /* e2ac */ 0xffff, /* e2ad */ 0xffff, /* e2ae */ 0xffff, /* e2af */ 0xffff, /* e2b0 */ 0xffff, /* e2b1 */ 0xffff, /* e2b2 */ 0xffff, /* e2b3 */ 0xffff, /* e2b4 */ 0xffff, /* e2b5 */ 0xffff, /* e2b6 */ 0xffff, /* e2b7 */ 0xffff, /* e2b8 */ 0xffff, /* e2b9 */ 0xffff, /* e2ba */ 0xffff, /* e2bb */ 0xffff, /* e2bc */ 0xffff, /* e2bd */ 0xffff, /* e2be */ 0xffff, /* e2bf */ 0xffff, /* e2c0 */ 0xffff, /* e2c1 */ 0xffff, /* e2c2 */ 0xffff, /* e2c3 */ 0xffff, /* e2c4 */ 0xffff, /* e2c5 */ 0xffff, /* e2c6 */ 0xffff, /* e2c7 */ 0xffff, /* e2c8 */ 0xffff, /* e2c9 */ 0xffff, /* e2ca */ 0xffff, /* e2cb */ 0xffff, /* e2cc */ 0xffff, /* e2cd */ 0xffff, /* e2ce */ 0xffff, /* e2cf */ 0xffff, /* e2d0 */ 0xffff, /* e2d1 */ 0xffff, /* e2d2 */ 0xffff, /* e2d3 */ 0xffff, /* e2d4 */ 0xffff, /* e2d5 */ 0xffff, /* e2d6 */ 0xffff, /* e2d7 */ 0xffff, /* e2d8 */ 0xffff, /* e2d9 */ 0xffff, /* e2da */ 0xffff, /* e2db */ 0xffff, /* e2dc */ 0xffff, /* e2dd */ 0xffff, /* e2de */ 0xffff, /* e2df */ 0xffff, /* e2e0 */ 0xffff, /* e2e1 */ 0xffff, /* e2e2 */ 0xffff, /* e2e3 */ 0xffff, /* e2e4 */ 0xffff, /* e2e5 */ 0xffff, /* e2e6 */ 0xffff, /* e2e7 */ 0xffff, /* e2e8 */ 0xffff, /* e2e9 */ 0xffff, /* e2ea */ 0xffff, /* e2eb */ 0xffff, /* e2ec */ 0xffff, /* e2ed */ 0xffff, /* e2ee */ 0xffff, /* e2ef */ 0xffff, /* e2f0 */ 0xffff, /* e2f1 */ 0xffff, /* e2f2 */ 0xffff, /* e2f3 */ 0xffff, /* e2f4 */ 0xffff, /* e2f5 */ 0xffff, /* e2f6 */ 0xffff, /* e2f7 */ 0xffff, /* e2f8 */ 0xffff, /* e2f9 */ 0xffff, /* e2fa */ 0xffff, /* e2fb */ 0xffff, /* e2fc */ 0xffff, /* e2fd */ 0xffff, /* e2fe */ 0xffff, /* e2ff */ 0xffff, /* e300 */ 0xffff, /* e301 */ 0xffff, /* e302 */ 0xffff, /* e303 */ 0xffff, /* e304 */ 0xffff, /* e305 */ 0xffff, /* e306 */ 0xffff, /* e307 */ 0xffff, /* e308 */ 0xffff, /* e309 */ 0xffff, /* e30a */ 0xffff, /* e30b */ 0xffff, /* e30c */ 0xffff, /* e30d */ 0xffff, /* e30e */ 0xffff, /* e30f */ 0xffff, /* e310 */ 0xffff, /* e311 */ 0xffff, /* e312 */ 0xffff, /* e313 */ 0xffff, /* e314 */ 0xffff, /* e315 */ 0xffff, /* e316 */ 0xffff, /* e317 */ 0xffff, /* e318 */ 0xffff, /* e319 */ 0xffff, /* e31a */ 0xffff, /* e31b */ 0xffff, /* e31c */ 0xffff, /* e31d */ 0xffff, /* e31e */ 0xffff, /* e31f */ 0xffff, /* e320 */ 0xffff, /* e321 */ 0xffff, /* e322 */ 0xffff, /* e323 */ 0xffff, /* e324 */ 0xffff, /* e325 */ 0xffff, /* e326 */ 0xffff, /* e327 */ 0xffff, /* e328 */ 0xffff, /* e329 */ 0xffff, /* e32a */ 0xffff, /* e32b */ 0xffff, /* e32c */ 0xffff, /* e32d */ 0xffff, /* e32e */ 0xffff, /* e32f */ 0xffff, /* e330 */ 0xffff, /* e331 */ 0xffff, /* e332 */ 0xffff, /* e333 */ 0xffff, /* e334 */ 0xffff, /* e335 */ 0xffff, /* e336 */ 0xffff, /* e337 */ 0xffff, /* e338 */ 0xffff, /* e339 */ 0xffff, /* e33a */ 0xffff, /* e33b */ 0xffff, /* e33c */ 0xffff, /* e33d */ 0xffff, /* e33e */ 0xffff, /* e33f */ 0xffff, /* e340 */ 0xffff, /* e341 */ 0xffff, /* e342 */ 0xffff, /* e343 */ 0xffff, /* e344 */ 0xffff, /* e345 */ 0xffff, /* e346 */ 0xffff, /* e347 */ 0xffff, /* e348 */ 0xffff, /* e349 */ 0xffff, /* e34a */ 0xffff, /* e34b */ 0xffff, /* e34c */ 0xffff, /* e34d */ 0xffff, /* e34e */ 0xffff, /* e34f */ 0xffff, /* e350 */ 0xffff, /* e351 */ 0xffff, /* e352 */ 0xffff, /* e353 */ 0xffff, /* e354 */ 0xffff, /* e355 */ 0xffff, /* e356 */ 0xffff, /* e357 */ 0xffff, /* e358 */ 0xffff, /* e359 */ 0xffff, /* e35a */ 0xffff, /* e35b */ 0xffff, /* e35c */ 0xffff, /* e35d */ 0xffff, /* e35e */ 0xffff, /* e35f */ 0xffff, /* e360 */ 0xffff, /* e361 */ 0xffff, /* e362 */ 0xffff, /* e363 */ 0xffff, /* e364 */ 0xffff, /* e365 */ 0xffff, /* e366 */ 0xffff, /* e367 */ 0xffff, /* e368 */ 0xffff, /* e369 */ 0xffff, /* e36a */ 0xffff, /* e36b */ 0xffff, /* e36c */ 0xffff, /* e36d */ 0xffff, /* e36e */ 0xffff, /* e36f */ 0xffff, /* e370 */ 0xffff, /* e371 */ 0xffff, /* e372 */ 0xffff, /* e373 */ 0xffff, /* e374 */ 0xffff, /* e375 */ 0xffff, /* e376 */ 0xffff, /* e377 */ 0xffff, /* e378 */ 0xffff, /* e379 */ 0xffff, /* e37a */ 0xffff, /* e37b */ 0xffff, /* e37c */ 0xffff, /* e37d */ 0xffff, /* e37e */ 0xffff, /* e37f */ 0xffff, /* e380 */ 0xffff, /* e381 */ 0xffff, /* e382 */ 0xffff, /* e383 */ 0xffff, /* e384 */ 0xffff, /* e385 */ 0xffff, /* e386 */ 0xffff, /* e387 */ 0xffff, /* e388 */ 0xffff, /* e389 */ 0xffff, /* e38a */ 0xffff, /* e38b */ 0xffff, /* e38c */ 0xffff, /* e38d */ 0xffff, /* e38e */ 0xffff, /* e38f */ 0xffff, /* e390 */ 0xffff, /* e391 */ 0xffff, /* e392 */ 0xffff, /* e393 */ 0xffff, /* e394 */ 0xffff, /* e395 */ 0xffff, /* e396 */ 0xffff, /* e397 */ 0xffff, /* e398 */ 0xffff, /* e399 */ 0xffff, /* e39a */ 0xffff, /* e39b */ 0xffff, /* e39c */ 0xffff, /* e39d */ 0xffff, /* e39e */ 0xffff, /* e39f */ 0xffff, /* e3a0 */ 0xffff, /* e3a1 */ 0xffff, /* e3a2 */ 0xffff, /* e3a3 */ 0xffff, /* e3a4 */ 0xffff, /* e3a5 */ 0xffff, /* e3a6 */ 0xffff, /* e3a7 */ 0xffff, /* e3a8 */ 0xffff, /* e3a9 */ 0xffff, /* e3aa */ 0xffff, /* e3ab */ 0xffff, /* e3ac */ 0xffff, /* e3ad */ 0xffff, /* e3ae */ 0xffff, /* e3af */ 0xffff, /* e3b0 */ 0xffff, /* e3b1 */ 0xffff, /* e3b2 */ 0xffff, /* e3b3 */ 0xffff, /* e3b4 */ 0xffff, /* e3b5 */ 0xffff, /* e3b6 */ 0xffff, /* e3b7 */ 0xffff, /* e3b8 */ 0xffff, /* e3b9 */ 0xffff, /* e3ba */ 0xffff, /* e3bb */ 0xffff, /* e3bc */ 0xffff, /* e3bd */ 0xffff, /* e3be */ 0xffff, /* e3bf */ 0xffff, /* e3c0 */ 0xffff, /* e3c1 */ 0xffff, /* e3c2 */ 0xffff, /* e3c3 */ 0xffff, /* e3c4 */ 0xffff, /* e3c5 */ 0xffff, /* e3c6 */ 0xffff, /* e3c7 */ 0xffff, /* e3c8 */ 0xffff, /* e3c9 */ 0xffff, /* e3ca */ 0xffff, /* e3cb */ 0xffff, /* e3cc */ 0xffff, /* e3cd */ 0xffff, /* e3ce */ 0xffff, /* e3cf */ 0xffff, /* e3d0 */ 0xffff, /* e3d1 */ 0xffff, /* e3d2 */ 0xffff, /* e3d3 */ 0xffff, /* e3d4 */ 0xffff, /* e3d5 */ 0xffff, /* e3d6 */ 0xffff, /* e3d7 */ 0xffff, /* e3d8 */ 0xffff, /* e3d9 */ 0xffff, /* e3da */ 0xffff, /* e3db */ 0xffff, /* e3dc */ 0xffff, /* e3dd */ 0xffff, /* e3de */ 0xffff, /* e3df */ 0xffff, /* e3e0 */ 0xffff, /* e3e1 */ 0xffff, /* e3e2 */ 0xffff, /* e3e3 */ 0xffff, /* e3e4 */ 0xffff, /* e3e5 */ 0xffff, /* e3e6 */ 0xffff, /* e3e7 */ 0xffff, /* e3e8 */ 0xffff, /* e3e9 */ 0xffff, /* e3ea */ 0xffff, /* e3eb */ 0xffff, /* e3ec */ 0xffff, /* e3ed */ 0xffff, /* e3ee */ 0xffff, /* e3ef */ 0xffff, /* e3f0 */ 0xffff, /* e3f1 */ 0xffff, /* e3f2 */ 0xffff, /* e3f3 */ 0xffff, /* e3f4 */ 0xffff, /* e3f5 */ 0xffff, /* e3f6 */ 0xffff, /* e3f7 */ 0xffff, /* e3f8 */ 0xffff, /* e3f9 */ 0xffff, /* e3fa */ 0xffff, /* e3fb */ 0xffff, /* e3fc */ 0xffff, /* e3fd */ 0xffff, /* e3fe */ 0xffff, /* e3ff */ 0xffff, /* e400 */ 0xffff, /* e401 */ 0xffff, /* e402 */ 0xffff, /* e403 */ 0xffff, /* e404 */ 0xffff, /* e405 */ 0xffff, /* e406 */ 0xffff, /* e407 */ 0xffff, /* e408 */ 0xffff, /* e409 */ 0xffff, /* e40a */ 0xffff, /* e40b */ 0xffff, /* e40c */ 0xffff, /* e40d */ 0xffff, /* e40e */ 0xffff, /* e40f */ 0xffff, /* e410 */ 0xffff, /* e411 */ 0xffff, /* e412 */ 0xffff, /* e413 */ 0xffff, /* e414 */ 0xffff, /* e415 */ 0xffff, /* e416 */ 0xffff, /* e417 */ 0xffff, /* e418 */ 0xffff, /* e419 */ 0xffff, /* e41a */ 0xffff, /* e41b */ 0xffff, /* e41c */ 0xffff, /* e41d */ 0xffff, /* e41e */ 0xffff, /* e41f */ 0xffff, /* e420 */ 0xffff, /* e421 */ 0xffff, /* e422 */ 0xffff, /* e423 */ 0xffff, /* e424 */ 0xffff, /* e425 */ 0xffff, /* e426 */ 0xffff, /* e427 */ 0xffff, /* e428 */ 0xffff, /* e429 */ 0xffff, /* e42a */ 0xffff, /* e42b */ 0xffff, /* e42c */ 0xffff, /* e42d */ 0xffff, /* e42e */ 0xffff, /* e42f */ 0xffff, /* e430 */ 0xffff, /* e431 */ 0xffff, /* e432 */ 0xffff, /* e433 */ 0xffff, /* e434 */ 0xffff, /* e435 */ 0xffff, /* e436 */ 0xffff, /* e437 */ 0xffff, /* e438 */ 0xffff, /* e439 */ 0xffff, /* e43a */ 0xffff, /* e43b */ 0xffff, /* e43c */ 0xffff, /* e43d */ 0xffff, /* e43e */ 0xffff, /* e43f */ 0xffff, /* e440 */ 0xffff, /* e441 */ 0xffff, /* e442 */ 0xffff, /* e443 */ 0xffff, /* e444 */ 0xffff, /* e445 */ 0xffff, /* e446 */ 0xffff, /* e447 */ 0xffff, /* e448 */ 0xffff, /* e449 */ 0xffff, /* e44a */ 0xffff, /* e44b */ 0xffff, /* e44c */ 0xffff, /* e44d */ 0xffff, /* e44e */ 0xffff, /* e44f */ 0xffff, /* e450 */ 0xffff, /* e451 */ 0xffff, /* e452 */ 0xffff, /* e453 */ 0xffff, /* e454 */ 0xffff, /* e455 */ 0xffff, /* e456 */ 0xffff, /* e457 */ 0xffff, /* e458 */ 0xffff, /* e459 */ 0xffff, /* e45a */ 0xffff, /* e45b */ 0xffff, /* e45c */ 0xffff, /* e45d */ 0xffff, /* e45e */ 0xffff, /* e45f */ 0xffff, /* e460 */ 0xffff, /* e461 */ 0xffff, /* e462 */ 0xffff, /* e463 */ 0xffff, /* e464 */ 0xffff, /* e465 */ 0xffff, /* e466 */ 0xffff, /* e467 */ 0xffff, /* e468 */ 0xffff, /* e469 */ 0xffff, /* e46a */ 0xffff, /* e46b */ 0xffff, /* e46c */ 0xffff, /* e46d */ 0xffff, /* e46e */ 0xffff, /* e46f */ 0xffff, /* e470 */ 0xffff, /* e471 */ 0xffff, /* e472 */ 0xffff, /* e473 */ 0xffff, /* e474 */ 0xffff, /* e475 */ 0xffff, /* e476 */ 0xffff, /* e477 */ 0xffff, /* e478 */ 0xffff, /* e479 */ 0xffff, /* e47a */ 0xffff, /* e47b */ 0xffff, /* e47c */ 0xffff, /* e47d */ 0xffff, /* e47e */ 0xffff, /* e47f */ 0xffff, /* e480 */ 0xffff, /* e481 */ 0xffff, /* e482 */ 0xffff, /* e483 */ 0xffff, /* e484 */ 0xffff, /* e485 */ 0xffff, /* e486 */ 0xffff, /* e487 */ 0xffff, /* e488 */ 0xffff, /* e489 */ 0xffff, /* e48a */ 0xffff, /* e48b */ 0xffff, /* e48c */ 0xffff, /* e48d */ 0xffff, /* e48e */ 0xffff, /* e48f */ 0xffff, /* e490 */ 0xffff, /* e491 */ 0xffff, /* e492 */ 0xffff, /* e493 */ 0xffff, /* e494 */ 0xffff, /* e495 */ 0xffff, /* e496 */ 0xffff, /* e497 */ 0xffff, /* e498 */ 0xffff, /* e499 */ 0xffff, /* e49a */ 0xffff, /* e49b */ 0xffff, /* e49c */ 0xffff, /* e49d */ 0xffff, /* e49e */ 0xffff, /* e49f */ 0xffff, /* e4a0 */ 0xffff, /* e4a1 */ 0xffff, /* e4a2 */ 0xffff, /* e4a3 */ 0xffff, /* e4a4 */ 0xffff, /* e4a5 */ 0xffff, /* e4a6 */ 0xffff, /* e4a7 */ 0xffff, /* e4a8 */ 0xffff, /* e4a9 */ 0xffff, /* e4aa */ 0xffff, /* e4ab */ 0xffff, /* e4ac */ 0xffff, /* e4ad */ 0xffff, /* e4ae */ 0xffff, /* e4af */ 0xffff, /* e4b0 */ 0xffff, /* e4b1 */ 0xffff, /* e4b2 */ 0xffff, /* e4b3 */ 0xffff, /* e4b4 */ 0xffff, /* e4b5 */ 0xffff, /* e4b6 */ 0xffff, /* e4b7 */ 0xffff, /* e4b8 */ 0xffff, /* e4b9 */ 0xffff, /* e4ba */ 0xffff, /* e4bb */ 0xffff, /* e4bc */ 0xffff, /* e4bd */ 0xffff, /* e4be */ 0xffff, /* e4bf */ 0xffff, /* e4c0 */ 0xffff, /* e4c1 */ 0xffff, /* e4c2 */ 0xffff, /* e4c3 */ 0xffff, /* e4c4 */ 0xffff, /* e4c5 */ 0xffff, /* e4c6 */ 0xffff, /* e4c7 */ 0xffff, /* e4c8 */ 0xffff, /* e4c9 */ 0xffff, /* e4ca */ 0xffff, /* e4cb */ 0xffff, /* e4cc */ 0xffff, /* e4cd */ 0xffff, /* e4ce */ 0xffff, /* e4cf */ 0xffff, /* e4d0 */ 0xffff, /* e4d1 */ 0xffff, /* e4d2 */ 0xffff, /* e4d3 */ 0xffff, /* e4d4 */ 0xffff, /* e4d5 */ 0xffff, /* e4d6 */ 0xffff, /* e4d7 */ 0xffff, /* e4d8 */ 0xffff, /* e4d9 */ 0xffff, /* e4da */ 0xffff, /* e4db */ 0xffff, /* e4dc */ 0xffff, /* e4dd */ 0xffff, /* e4de */ 0xffff, /* e4df */ 0xffff, /* e4e0 */ 0xffff, /* e4e1 */ 0xffff, /* e4e2 */ 0xffff, /* e4e3 */ 0xffff, /* e4e4 */ 0xffff, /* e4e5 */ 0xffff, /* e4e6 */ 0xffff, /* e4e7 */ 0xffff, /* e4e8 */ 0xffff, /* e4e9 */ 0xffff, /* e4ea */ 0xffff, /* e4eb */ 0xffff, /* e4ec */ 0xffff, /* e4ed */ 0xffff, /* e4ee */ 0xffff, /* e4ef */ 0xffff, /* e4f0 */ 0xffff, /* e4f1 */ 0xffff, /* e4f2 */ 0xffff, /* e4f3 */ 0xffff, /* e4f4 */ 0xffff, /* e4f5 */ 0xffff, /* e4f6 */ 0xffff, /* e4f7 */ 0xffff, /* e4f8 */ 0xffff, /* e4f9 */ 0xffff, /* e4fa */ 0xffff, /* e4fb */ 0xffff, /* e4fc */ 0xffff, /* e4fd */ 0xffff, /* e4fe */ 0xffff, /* e4ff */ 0xffff, /* e500 */ 0xffff, /* e501 */ 0xffff, /* e502 */ 0xffff, /* e503 */ 0xffff, /* e504 */ 0xffff, /* e505 */ 0xffff, /* e506 */ 0xffff, /* e507 */ 0xffff, /* e508 */ 0xffff, /* e509 */ 0xffff, /* e50a */ 0xffff, /* e50b */ 0xffff, /* e50c */ 0xffff, /* e50d */ 0xffff, /* e50e */ 0xffff, /* e50f */ 0xffff, /* e510 */ 0xffff, /* e511 */ 0xffff, /* e512 */ 0xffff, /* e513 */ 0xffff, /* e514 */ 0xffff, /* e515 */ 0xffff, /* e516 */ 0xffff, /* e517 */ 0xffff, /* e518 */ 0xffff, /* e519 */ 0xffff, /* e51a */ 0xffff, /* e51b */ 0xffff, /* e51c */ 0xffff, /* e51d */ 0xffff, /* e51e */ 0xffff, /* e51f */ 0xffff, /* e520 */ 0xffff, /* e521 */ 0xffff, /* e522 */ 0xffff, /* e523 */ 0xffff, /* e524 */ 0xffff, /* e525 */ 0xffff, /* e526 */ 0xffff, /* e527 */ 0xffff, /* e528 */ 0xffff, /* e529 */ 0xffff, /* e52a */ 0xffff, /* e52b */ 0xffff, /* e52c */ 0xffff, /* e52d */ 0xffff, /* e52e */ 0xffff, /* e52f */ 0xffff, /* e530 */ 0xffff, /* e531 */ 0xffff, /* e532 */ 0xffff, /* e533 */ 0xffff, /* e534 */ 0xffff, /* e535 */ 0xffff, /* e536 */ 0xffff, /* e537 */ 0xffff, /* e538 */ 0xffff, /* e539 */ 0xffff, /* e53a */ 0xffff, /* e53b */ 0xffff, /* e53c */ 0xffff, /* e53d */ 0xffff, /* e53e */ 0xffff, /* e53f */ 0xffff, /* e540 */ 0xffff, /* e541 */ 0xffff, /* e542 */ 0xffff, /* e543 */ 0xffff, /* e544 */ 0xffff, /* e545 */ 0xffff, /* e546 */ 0xffff, /* e547 */ 0xffff, /* e548 */ 0xffff, /* e549 */ 0xffff, /* e54a */ 0xffff, /* e54b */ 0xffff, /* e54c */ 0xffff, /* e54d */ 0xffff, /* e54e */ 0xffff, /* e54f */ 0xffff, /* e550 */ 0xffff, /* e551 */ 0xffff, /* e552 */ 0xffff, /* e553 */ 0xffff, /* e554 */ 0xffff, /* e555 */ 0xffff, /* e556 */ 0xffff, /* e557 */ 0xffff, /* e558 */ 0xffff, /* e559 */ 0xffff, /* e55a */ 0xffff, /* e55b */ 0xffff, /* e55c */ 0xffff, /* e55d */ 0xffff, /* e55e */ 0xffff, /* e55f */ 0xffff, /* e560 */ 0xffff, /* e561 */ 0xffff, /* e562 */ 0xffff, /* e563 */ 0xffff, /* e564 */ 0xffff, /* e565 */ 0xffff, /* e566 */ 0xffff, /* e567 */ 0xffff, /* e568 */ 0xffff, /* e569 */ 0xffff, /* e56a */ 0xffff, /* e56b */ 0xffff, /* e56c */ 0xffff, /* e56d */ 0xffff, /* e56e */ 0xffff, /* e56f */ 0xffff, /* e570 */ 0xffff, /* e571 */ 0xffff, /* e572 */ 0xffff, /* e573 */ 0xffff, /* e574 */ 0xffff, /* e575 */ 0xffff, /* e576 */ 0xffff, /* e577 */ 0xffff, /* e578 */ 0xffff, /* e579 */ 0xffff, /* e57a */ 0xffff, /* e57b */ 0xffff, /* e57c */ 0xffff, /* e57d */ 0xffff, /* e57e */ 0xffff, /* e57f */ 0xffff, /* e580 */ 0xffff, /* e581 */ 0xffff, /* e582 */ 0xffff, /* e583 */ 0xffff, /* e584 */ 0xffff, /* e585 */ 0xffff, /* e586 */ 0xffff, /* e587 */ 0xffff, /* e588 */ 0xffff, /* e589 */ 0xffff, /* e58a */ 0xffff, /* e58b */ 0xffff, /* e58c */ 0xffff, /* e58d */ 0xffff, /* e58e */ 0xffff, /* e58f */ 0xffff, /* e590 */ 0xffff, /* e591 */ 0xffff, /* e592 */ 0xffff, /* e593 */ 0xffff, /* e594 */ 0xffff, /* e595 */ 0xffff, /* e596 */ 0xffff, /* e597 */ 0xffff, /* e598 */ 0xffff, /* e599 */ 0xffff, /* e59a */ 0xffff, /* e59b */ 0xffff, /* e59c */ 0xffff, /* e59d */ 0xffff, /* e59e */ 0xffff, /* e59f */ 0xffff, /* e5a0 */ 0xffff, /* e5a1 */ 0xffff, /* e5a2 */ 0xffff, /* e5a3 */ 0xffff, /* e5a4 */ 0xffff, /* e5a5 */ 0xffff, /* e5a6 */ 0xffff, /* e5a7 */ 0xffff, /* e5a8 */ 0xffff, /* e5a9 */ 0xffff, /* e5aa */ 0xffff, /* e5ab */ 0xffff, /* e5ac */ 0xffff, /* e5ad */ 0xffff, /* e5ae */ 0xffff, /* e5af */ 0xffff, /* e5b0 */ 0xffff, /* e5b1 */ 0xffff, /* e5b2 */ 0xffff, /* e5b3 */ 0xffff, /* e5b4 */ 0xffff, /* e5b5 */ 0xffff, /* e5b6 */ 0xffff, /* e5b7 */ 0xffff, /* e5b8 */ 0xffff, /* e5b9 */ 0xffff, /* e5ba */ 0xffff, /* e5bb */ 0xffff, /* e5bc */ 0xffff, /* e5bd */ 0xffff, /* e5be */ 0xffff, /* e5bf */ 0xffff, /* e5c0 */ 0xffff, /* e5c1 */ 0xffff, /* e5c2 */ 0xffff, /* e5c3 */ 0xffff, /* e5c4 */ 0xffff, /* e5c5 */ 0xffff, /* e5c6 */ 0xffff, /* e5c7 */ 0xffff, /* e5c8 */ 0xffff, /* e5c9 */ 0xffff, /* e5ca */ 0xffff, /* e5cb */ 0xffff, /* e5cc */ 0xffff, /* e5cd */ 0xffff, /* e5ce */ 0xffff, /* e5cf */ 0xffff, /* e5d0 */ 0xffff, /* e5d1 */ 0xffff, /* e5d2 */ 0xffff, /* e5d3 */ 0xffff, /* e5d4 */ 0xffff, /* e5d5 */ 0xffff, /* e5d6 */ 0xffff, /* e5d7 */ 0xffff, /* e5d8 */ 0xffff, /* e5d9 */ 0xffff, /* e5da */ 0xffff, /* e5db */ 0xffff, /* e5dc */ 0xffff, /* e5dd */ 0xffff, /* e5de */ 0xffff, /* e5df */ 0xffff, /* e5e0 */ 0xffff, /* e5e1 */ 0xffff, /* e5e2 */ 0xffff, /* e5e3 */ 0xffff, /* e5e4 */ 0xffff, /* e5e5 */ 0xffff, /* e5e6 */ 0xffff, /* e5e7 */ 0xffff, /* e5e8 */ 0xffff, /* e5e9 */ 0xffff, /* e5ea */ 0xffff, /* e5eb */ 0xffff, /* e5ec */ 0xffff, /* e5ed */ 0xffff, /* e5ee */ 0xffff, /* e5ef */ 0xffff, /* e5f0 */ 0xffff, /* e5f1 */ 0xffff, /* e5f2 */ 0xffff, /* e5f3 */ 0xffff, /* e5f4 */ 0xffff, /* e5f5 */ 0xffff, /* e5f6 */ 0xffff, /* e5f7 */ 0xffff, /* e5f8 */ 0xffff, /* e5f9 */ 0xffff, /* e5fa */ 0xffff, /* e5fb */ 0xffff, /* e5fc */ 0xffff, /* e5fd */ 0xffff, /* e5fe */ 0xffff, /* e5ff */ 0xffff, /* e600 */ 0xffff, /* e601 */ 0xffff, /* e602 */ 0xffff, /* e603 */ 0xffff, /* e604 */ 0xffff, /* e605 */ 0xffff, /* e606 */ 0xffff, /* e607 */ 0xffff, /* e608 */ 0xffff, /* e609 */ 0xffff, /* e60a */ 0xffff, /* e60b */ 0xffff, /* e60c */ 0xffff, /* e60d */ 0xffff, /* e60e */ 0xffff, /* e60f */ 0xffff, /* e610 */ 0xffff, /* e611 */ 0xffff, /* e612 */ 0xffff, /* e613 */ 0xffff, /* e614 */ 0xffff, /* e615 */ 0xffff, /* e616 */ 0xffff, /* e617 */ 0xffff, /* e618 */ 0xffff, /* e619 */ 0xffff, /* e61a */ 0xffff, /* e61b */ 0xffff, /* e61c */ 0xffff, /* e61d */ 0xffff, /* e61e */ 0xffff, /* e61f */ 0xffff, /* e620 */ 0xffff, /* e621 */ 0xffff, /* e622 */ 0xffff, /* e623 */ 0xffff, /* e624 */ 0xffff, /* e625 */ 0xffff, /* e626 */ 0xffff, /* e627 */ 0xffff, /* e628 */ 0xffff, /* e629 */ 0xffff, /* e62a */ 0xffff, /* e62b */ 0xffff, /* e62c */ 0xffff, /* e62d */ 0xffff, /* e62e */ 0xffff, /* e62f */ 0xffff, /* e630 */ 0xffff, /* e631 */ 0xffff, /* e632 */ 0xffff, /* e633 */ 0xffff, /* e634 */ 0xffff, /* e635 */ 0xffff, /* e636 */ 0xffff, /* e637 */ 0xffff, /* e638 */ 0xffff, /* e639 */ 0xffff, /* e63a */ 0xffff, /* e63b */ 0xffff, /* e63c */ 0xffff, /* e63d */ 0xffff, /* e63e */ 0xffff, /* e63f */ 0xffff, /* e640 */ 0xffff, /* e641 */ 0xffff, /* e642 */ 0xffff, /* e643 */ 0xffff, /* e644 */ 0xffff, /* e645 */ 0xffff, /* e646 */ 0xffff, /* e647 */ 0xffff, /* e648 */ 0xffff, /* e649 */ 0xffff, /* e64a */ 0xffff, /* e64b */ 0xffff, /* e64c */ 0xffff, /* e64d */ 0xffff, /* e64e */ 0xffff, /* e64f */ 0xffff, /* e650 */ 0xffff, /* e651 */ 0xffff, /* e652 */ 0xffff, /* e653 */ 0xffff, /* e654 */ 0xffff, /* e655 */ 0xffff, /* e656 */ 0xffff, /* e657 */ 0xffff, /* e658 */ 0xffff, /* e659 */ 0xffff, /* e65a */ 0xffff, /* e65b */ 0xffff, /* e65c */ 0xffff, /* e65d */ 0xffff, /* e65e */ 0xffff, /* e65f */ 0xffff, /* e660 */ 0xffff, /* e661 */ 0xffff, /* e662 */ 0xffff, /* e663 */ 0xffff, /* e664 */ 0xffff, /* e665 */ 0xffff, /* e666 */ 0xffff, /* e667 */ 0xffff, /* e668 */ 0xffff, /* e669 */ 0xffff, /* e66a */ 0xffff, /* e66b */ 0xffff, /* e66c */ 0xffff, /* e66d */ 0xffff, /* e66e */ 0xffff, /* e66f */ 0xffff, /* e670 */ 0xffff, /* e671 */ 0xffff, /* e672 */ 0xffff, /* e673 */ 0xffff, /* e674 */ 0xffff, /* e675 */ 0xffff, /* e676 */ 0xffff, /* e677 */ 0xffff, /* e678 */ 0xffff, /* e679 */ 0xffff, /* e67a */ 0xffff, /* e67b */ 0xffff, /* e67c */ 0xffff, /* e67d */ 0xffff, /* e67e */ 0xffff, /* e67f */ 0xffff, /* e680 */ 0xffff, /* e681 */ 0xffff, /* e682 */ 0xffff, /* e683 */ 0xffff, /* e684 */ 0xffff, /* e685 */ 0xffff, /* e686 */ 0xffff, /* e687 */ 0xffff, /* e688 */ 0xffff, /* e689 */ 0xffff, /* e68a */ 0xffff, /* e68b */ 0xffff, /* e68c */ 0xffff, /* e68d */ 0xffff, /* e68e */ 0xffff, /* e68f */ 0xffff, /* e690 */ 0xffff, /* e691 */ 0xffff, /* e692 */ 0xffff, /* e693 */ 0xffff, /* e694 */ 0xffff, /* e695 */ 0xffff, /* e696 */ 0xffff, /* e697 */ 0xffff, /* e698 */ 0xffff, /* e699 */ 0xffff, /* e69a */ 0xffff, /* e69b */ 0xffff, /* e69c */ 0xffff, /* e69d */ 0xffff, /* e69e */ 0xffff, /* e69f */ 0xffff, /* e6a0 */ 0xffff, /* e6a1 */ 0xffff, /* e6a2 */ 0xffff, /* e6a3 */ 0xffff, /* e6a4 */ 0xffff, /* e6a5 */ 0xffff, /* e6a6 */ 0xffff, /* e6a7 */ 0xffff, /* e6a8 */ 0xffff, /* e6a9 */ 0xffff, /* e6aa */ 0xffff, /* e6ab */ 0xffff, /* e6ac */ 0xffff, /* e6ad */ 0xffff, /* e6ae */ 0xffff, /* e6af */ 0xffff, /* e6b0 */ 0xffff, /* e6b1 */ 0xffff, /* e6b2 */ 0xffff, /* e6b3 */ 0xffff, /* e6b4 */ 0xffff, /* e6b5 */ 0xffff, /* e6b6 */ 0xffff, /* e6b7 */ 0xffff, /* e6b8 */ 0xffff, /* e6b9 */ 0xffff, /* e6ba */ 0xffff, /* e6bb */ 0xffff, /* e6bc */ 0xffff, /* e6bd */ 0xffff, /* e6be */ 0xffff, /* e6bf */ 0xffff, /* e6c0 */ 0xffff, /* e6c1 */ 0xffff, /* e6c2 */ 0xffff, /* e6c3 */ 0xffff, /* e6c4 */ 0xffff, /* e6c5 */ 0xffff, /* e6c6 */ 0xffff, /* e6c7 */ 0xffff, /* e6c8 */ 0xffff, /* e6c9 */ 0xffff, /* e6ca */ 0xffff, /* e6cb */ 0xffff, /* e6cc */ 0xffff, /* e6cd */ 0xffff, /* e6ce */ 0xffff, /* e6cf */ 0xffff, /* e6d0 */ 0xffff, /* e6d1 */ 0xffff, /* e6d2 */ 0xffff, /* e6d3 */ 0xffff, /* e6d4 */ 0xffff, /* e6d5 */ 0xffff, /* e6d6 */ 0xffff, /* e6d7 */ 0xffff, /* e6d8 */ 0xffff, /* e6d9 */ 0xffff, /* e6da */ 0xffff, /* e6db */ 0xffff, /* e6dc */ 0xffff, /* e6dd */ 0xffff, /* e6de */ 0xffff, /* e6df */ 0xffff, /* e6e0 */ 0xffff, /* e6e1 */ 0xffff, /* e6e2 */ 0xffff, /* e6e3 */ 0xffff, /* e6e4 */ 0xffff, /* e6e5 */ 0xffff, /* e6e6 */ 0xffff, /* e6e7 */ 0xffff, /* e6e8 */ 0xffff, /* e6e9 */ 0xffff, /* e6ea */ 0xffff, /* e6eb */ 0xffff, /* e6ec */ 0xffff, /* e6ed */ 0xffff, /* e6ee */ 0xffff, /* e6ef */ 0xffff, /* e6f0 */ 0xffff, /* e6f1 */ 0xffff, /* e6f2 */ 0xffff, /* e6f3 */ 0xffff, /* e6f4 */ 0xffff, /* e6f5 */ 0xffff, /* e6f6 */ 0xffff, /* e6f7 */ 0xffff, /* e6f8 */ 0xffff, /* e6f9 */ 0xffff, /* e6fa */ 0xffff, /* e6fb */ 0xffff, /* e6fc */ 0xffff, /* e6fd */ 0xffff, /* e6fe */ 0xffff, /* e6ff */ 0xffff, /* e700 */ 0xffff, /* e701 */ 0xffff, /* e702 */ 0xffff, /* e703 */ 0xffff, /* e704 */ 0xffff, /* e705 */ 0xffff, /* e706 */ 0xffff, /* e707 */ 0xffff, /* e708 */ 0xffff, /* e709 */ 0xffff, /* e70a */ 0xffff, /* e70b */ 0xffff, /* e70c */ 0xffff, /* e70d */ 0xffff, /* e70e */ 0xffff, /* e70f */ 0xffff, /* e710 */ 0xffff, /* e711 */ 0xffff, /* e712 */ 0xffff, /* e713 */ 0xffff, /* e714 */ 0xffff, /* e715 */ 0xffff, /* e716 */ 0xffff, /* e717 */ 0xffff, /* e718 */ 0xffff, /* e719 */ 0xffff, /* e71a */ 0xffff, /* e71b */ 0xffff, /* e71c */ 0xffff, /* e71d */ 0xffff, /* e71e */ 0xffff, /* e71f */ 0xffff, /* e720 */ 0xffff, /* e721 */ 0xffff, /* e722 */ 0xffff, /* e723 */ 0xffff, /* e724 */ 0xffff, /* e725 */ 0xffff, /* e726 */ 0xffff, /* e727 */ 0xffff, /* e728 */ 0xffff, /* e729 */ 0xffff, /* e72a */ 0xffff, /* e72b */ 0xffff, /* e72c */ 0xffff, /* e72d */ 0xffff, /* e72e */ 0xffff, /* e72f */ 0xffff, /* e730 */ 0xffff, /* e731 */ 0xffff, /* e732 */ 0xffff, /* e733 */ 0xffff, /* e734 */ 0xffff, /* e735 */ 0xffff, /* e736 */ 0xffff, /* e737 */ 0xffff, /* e738 */ 0xffff, /* e739 */ 0xffff, /* e73a */ 0xffff, /* e73b */ 0xffff, /* e73c */ 0xffff, /* e73d */ 0xffff, /* e73e */ 0xffff, /* e73f */ 0xffff, /* e740 */ 0xffff, /* e741 */ 0xffff, /* e742 */ 0xffff, /* e743 */ 0xffff, /* e744 */ 0xffff, /* e745 */ 0xffff, /* e746 */ 0xffff, /* e747 */ 0xffff, /* e748 */ 0xffff, /* e749 */ 0xffff, /* e74a */ 0xffff, /* e74b */ 0xffff, /* e74c */ 0xffff, /* e74d */ 0xffff, /* e74e */ 0xffff, /* e74f */ 0xffff, /* e750 */ 0xffff, /* e751 */ 0xffff, /* e752 */ 0xffff, /* e753 */ 0xffff, /* e754 */ 0xffff, /* e755 */ 0xffff, /* e756 */ 0xffff, /* e757 */ 0xffff, /* e758 */ 0xffff, /* e759 */ 0xffff, /* e75a */ 0xffff, /* e75b */ 0xffff, /* e75c */ 0xffff, /* e75d */ 0xffff, /* e75e */ 0xffff, /* e75f */ 0xffff, /* e760 */ 0xffff, /* e761 */ 0xffff, /* e762 */ 0xffff, /* e763 */ 0xffff, /* e764 */ 0xffff, /* e765 */ 0xffff, /* e766 */ 0xffff, /* e767 */ 0xffff, /* e768 */ 0xffff, /* e769 */ 0xffff, /* e76a */ 0xffff, /* e76b */ 0xffff, /* e76c */ 0xffff, /* e76d */ 0xffff, /* e76e */ 0xffff, /* e76f */ 0xffff, /* e770 */ 0xffff, /* e771 */ 0xffff, /* e772 */ 0xffff, /* e773 */ 0xffff, /* e774 */ 0xffff, /* e775 */ 0xffff, /* e776 */ 0xffff, /* e777 */ 0xffff, /* e778 */ 0xffff, /* e779 */ 0xffff, /* e77a */ 0xffff, /* e77b */ 0xffff, /* e77c */ 0xffff, /* e77d */ 0xffff, /* e77e */ 0xffff, /* e77f */ 0xffff, /* e780 */ 0xffff, /* e781 */ 0xffff, /* e782 */ 0xffff, /* e783 */ 0xffff, /* e784 */ 0xffff, /* e785 */ 0xffff, /* e786 */ 0xffff, /* e787 */ 0xffff, /* e788 */ 0xffff, /* e789 */ 0xffff, /* e78a */ 0xffff, /* e78b */ 0xffff, /* e78c */ 0xffff, /* e78d */ 0xffff, /* e78e */ 0xffff, /* e78f */ 0xffff, /* e790 */ 0xffff, /* e791 */ 0xffff, /* e792 */ 0xffff, /* e793 */ 0xffff, /* e794 */ 0xffff, /* e795 */ 0xffff, /* e796 */ 0xffff, /* e797 */ 0xffff, /* e798 */ 0xffff, /* e799 */ 0xffff, /* e79a */ 0xffff, /* e79b */ 0xffff, /* e79c */ 0xffff, /* e79d */ 0xffff, /* e79e */ 0xffff, /* e79f */ 0xffff, /* e7a0 */ 0xffff, /* e7a1 */ 0xffff, /* e7a2 */ 0xffff, /* e7a3 */ 0xffff, /* e7a4 */ 0xffff, /* e7a5 */ 0xffff, /* e7a6 */ 0xffff, /* e7a7 */ 0xffff, /* e7a8 */ 0xffff, /* e7a9 */ 0xffff, /* e7aa */ 0xffff, /* e7ab */ 0xffff, /* e7ac */ 0xffff, /* e7ad */ 0xffff, /* e7ae */ 0xffff, /* e7af */ 0xffff, /* e7b0 */ 0xffff, /* e7b1 */ 0xffff, /* e7b2 */ 0xffff, /* e7b3 */ 0xffff, /* e7b4 */ 0xffff, /* e7b5 */ 0xffff, /* e7b6 */ 0xffff, /* e7b7 */ 0xffff, /* e7b8 */ 0xffff, /* e7b9 */ 0xffff, /* e7ba */ 0xffff, /* e7bb */ 0xffff, /* e7bc */ 0xffff, /* e7bd */ 0xffff, /* e7be */ 0xffff, /* e7bf */ 0xffff, /* e7c0 */ 0xffff, /* e7c1 */ 0xffff, /* e7c2 */ 0xffff, /* e7c3 */ 0xffff, /* e7c4 */ 0xffff, /* e7c5 */ 0xffff, /* e7c6 */ 0xffff, /* e7c7 */ 0xffff, /* e7c8 */ 0xffff, /* e7c9 */ 0xffff, /* e7ca */ 0xffff, /* e7cb */ 0xffff, /* e7cc */ 0xffff, /* e7cd */ 0xffff, /* e7ce */ 0xffff, /* e7cf */ 0xffff, /* e7d0 */ 0xffff, /* e7d1 */ 0xffff, /* e7d2 */ 0xffff, /* e7d3 */ 0xffff, /* e7d4 */ 0xffff, /* e7d5 */ 0xffff, /* e7d6 */ 0xffff, /* e7d7 */ 0xffff, /* e7d8 */ 0xffff, /* e7d9 */ 0xffff, /* e7da */ 0xffff, /* e7db */ 0xffff, /* e7dc */ 0xffff, /* e7dd */ 0xffff, /* e7de */ 0xffff, /* e7df */ 0xffff, /* e7e0 */ 0xffff, /* e7e1 */ 0xffff, /* e7e2 */ 0xffff, /* e7e3 */ 0xffff, /* e7e4 */ 0xffff, /* e7e5 */ 0xffff, /* e7e6 */ 0xffff, /* e7e7 */ 0xffff, /* e7e8 */ 0xffff, /* e7e9 */ 0xffff, /* e7ea */ 0xffff, /* e7eb */ 0xffff, /* e7ec */ 0xffff, /* e7ed */ 0xffff, /* e7ee */ 0xffff, /* e7ef */ 0xffff, /* e7f0 */ 0xffff, /* e7f1 */ 0xffff, /* e7f2 */ 0xffff, /* e7f3 */ 0xffff, /* e7f4 */ 0xffff, /* e7f5 */ 0xffff, /* e7f6 */ 0xffff, /* e7f7 */ 0xffff, /* e7f8 */ 0xffff, /* e7f9 */ 0xffff, /* e7fa */ 0xffff, /* e7fb */ 0xffff, /* e7fc */ 0xffff, /* e7fd */ 0xffff, /* e7fe */ 0xffff, /* e7ff */ 0xffff, /* e800 */ 0xffff, /* e801 */ 0xffff, /* e802 */ 0xffff, /* e803 */ 0xffff, /* e804 */ 0xffff, /* e805 */ 0xffff, /* e806 */ 0xffff, /* e807 */ 0xffff, /* e808 */ 0xffff, /* e809 */ 0xffff, /* e80a */ 0xffff, /* e80b */ 0xffff, /* e80c */ 0xffff, /* e80d */ 0xffff, /* e80e */ 0xffff, /* e80f */ 0xffff, /* e810 */ 0xffff, /* e811 */ 0xffff, /* e812 */ 0xffff, /* e813 */ 0xffff, /* e814 */ 0xffff, /* e815 */ 0xffff, /* e816 */ 0xffff, /* e817 */ 0xffff, /* e818 */ 0xffff, /* e819 */ 0xffff, /* e81a */ 0xffff, /* e81b */ 0xffff, /* e81c */ 0xffff, /* e81d */ 0xffff, /* e81e */ 0xffff, /* e81f */ 0xffff, /* e820 */ 0xffff, /* e821 */ 0xffff, /* e822 */ 0xffff, /* e823 */ 0xffff, /* e824 */ 0xffff, /* e825 */ 0xffff, /* e826 */ 0xffff, /* e827 */ 0xffff, /* e828 */ 0xffff, /* e829 */ 0xffff, /* e82a */ 0xffff, /* e82b */ 0xffff, /* e82c */ 0xffff, /* e82d */ 0xffff, /* e82e */ 0xffff, /* e82f */ 0xffff, /* e830 */ 0xffff, /* e831 */ 0xffff, /* e832 */ 0xffff, /* e833 */ 0xffff, /* e834 */ 0xffff, /* e835 */ 0xffff, /* e836 */ 0xffff, /* e837 */ 0xffff, /* e838 */ 0xffff, /* e839 */ 0xffff, /* e83a */ 0xffff, /* e83b */ 0xffff, /* e83c */ 0xffff, /* e83d */ 0xffff, /* e83e */ 0xffff, /* e83f */ 0xffff, /* e840 */ 0xffff, /* e841 */ 0xffff, /* e842 */ 0xffff, /* e843 */ 0xffff, /* e844 */ 0xffff, /* e845 */ 0xffff, /* e846 */ 0xffff, /* e847 */ 0xffff, /* e848 */ 0xffff, /* e849 */ 0xffff, /* e84a */ 0xffff, /* e84b */ 0xffff, /* e84c */ 0xffff, /* e84d */ 0xffff, /* e84e */ 0xffff, /* e84f */ 0xffff, /* e850 */ 0xffff, /* e851 */ 0xffff, /* e852 */ 0xffff, /* e853 */ 0xffff, /* e854 */ 0xffff, /* e855 */ 0xffff, /* e856 */ 0xffff, /* e857 */ 0xffff, /* e858 */ 0xffff, /* e859 */ 0xffff, /* e85a */ 0xffff, /* e85b */ 0xffff, /* e85c */ 0xffff, /* e85d */ 0xffff, /* e85e */ 0xffff, /* e85f */ 0xffff, /* e860 */ 0xffff, /* e861 */ 0xffff, /* e862 */ 0xffff, /* e863 */ 0xffff, /* e864 */ 0xffff, /* e865 */ 0xffff, /* e866 */ 0xffff, /* e867 */ 0xffff, /* e868 */ 0xffff, /* e869 */ 0xffff, /* e86a */ 0xffff, /* e86b */ 0xffff, /* e86c */ 0xffff, /* e86d */ 0xffff, /* e86e */ 0xffff, /* e86f */ 0xffff, /* e870 */ 0xffff, /* e871 */ 0xffff, /* e872 */ 0xffff, /* e873 */ 0xffff, /* e874 */ 0xffff, /* e875 */ 0xffff, /* e876 */ 0xffff, /* e877 */ 0xffff, /* e878 */ 0xffff, /* e879 */ 0xffff, /* e87a */ 0xffff, /* e87b */ 0xffff, /* e87c */ 0xffff, /* e87d */ 0xffff, /* e87e */ 0xffff, /* e87f */ 0xffff, /* e880 */ 0xffff, /* e881 */ 0xffff, /* e882 */ 0xffff, /* e883 */ 0xffff, /* e884 */ 0xffff, /* e885 */ 0xffff, /* e886 */ 0xffff, /* e887 */ 0xffff, /* e888 */ 0xffff, /* e889 */ 0xffff, /* e88a */ 0xffff, /* e88b */ 0xffff, /* e88c */ 0xffff, /* e88d */ 0xffff, /* e88e */ 0xffff, /* e88f */ 0xffff, /* e890 */ 0xffff, /* e891 */ 0xffff, /* e892 */ 0xffff, /* e893 */ 0xffff, /* e894 */ 0xffff, /* e895 */ 0xffff, /* e896 */ 0xffff, /* e897 */ 0xffff, /* e898 */ 0xffff, /* e899 */ 0xffff, /* e89a */ 0xffff, /* e89b */ 0xffff, /* e89c */ 0xffff, /* e89d */ 0xffff, /* e89e */ 0xffff, /* e89f */ 0xffff, /* e8a0 */ 0xffff, /* e8a1 */ 0xffff, /* e8a2 */ 0xffff, /* e8a3 */ 0xffff, /* e8a4 */ 0xffff, /* e8a5 */ 0xffff, /* e8a6 */ 0xffff, /* e8a7 */ 0xffff, /* e8a8 */ 0xffff, /* e8a9 */ 0xffff, /* e8aa */ 0xffff, /* e8ab */ 0xffff, /* e8ac */ 0xffff, /* e8ad */ 0xffff, /* e8ae */ 0xffff, /* e8af */ 0xffff, /* e8b0 */ 0xffff, /* e8b1 */ 0xffff, /* e8b2 */ 0xffff, /* e8b3 */ 0xffff, /* e8b4 */ 0xffff, /* e8b5 */ 0xffff, /* e8b6 */ 0xffff, /* e8b7 */ 0xffff, /* e8b8 */ 0xffff, /* e8b9 */ 0xffff, /* e8ba */ 0xffff, /* e8bb */ 0xffff, /* e8bc */ 0xffff, /* e8bd */ 0xffff, /* e8be */ 0xffff, /* e8bf */ 0xffff, /* e8c0 */ 0xffff, /* e8c1 */ 0xffff, /* e8c2 */ 0xffff, /* e8c3 */ 0xffff, /* e8c4 */ 0xffff, /* e8c5 */ 0xffff, /* e8c6 */ 0xffff, /* e8c7 */ 0xffff, /* e8c8 */ 0xffff, /* e8c9 */ 0xffff, /* e8ca */ 0xffff, /* e8cb */ 0xffff, /* e8cc */ 0xffff, /* e8cd */ 0xffff, /* e8ce */ 0xffff, /* e8cf */ 0xffff, /* e8d0 */ 0xffff, /* e8d1 */ 0xffff, /* e8d2 */ 0xffff, /* e8d3 */ 0xffff, /* e8d4 */ 0xffff, /* e8d5 */ 0xffff, /* e8d6 */ 0xffff, /* e8d7 */ 0xffff, /* e8d8 */ 0xffff, /* e8d9 */ 0xffff, /* e8da */ 0xffff, /* e8db */ 0xffff, /* e8dc */ 0xffff, /* e8dd */ 0xffff, /* e8de */ 0xffff, /* e8df */ 0xffff, /* e8e0 */ 0xffff, /* e8e1 */ 0xffff, /* e8e2 */ 0xffff, /* e8e3 */ 0xffff, /* e8e4 */ 0xffff, /* e8e5 */ 0xffff, /* e8e6 */ 0xffff, /* e8e7 */ 0xffff, /* e8e8 */ 0xffff, /* e8e9 */ 0xffff, /* e8ea */ 0xffff, /* e8eb */ 0xffff, /* e8ec */ 0xffff, /* e8ed */ 0xffff, /* e8ee */ 0xffff, /* e8ef */ 0xffff, /* e8f0 */ 0xffff, /* e8f1 */ 0xffff, /* e8f2 */ 0xffff, /* e8f3 */ 0xffff, /* e8f4 */ 0xffff, /* e8f5 */ 0xffff, /* e8f6 */ 0xffff, /* e8f7 */ 0xffff, /* e8f8 */ 0xffff, /* e8f9 */ 0xffff, /* e8fa */ 0xffff, /* e8fb */ 0xffff, /* e8fc */ 0xffff, /* e8fd */ 0xffff, /* e8fe */ 0xffff, /* e8ff */ 0xffff, /* e900 */ 0xffff, /* e901 */ 0xffff, /* e902 */ 0xffff, /* e903 */ 0xffff, /* e904 */ 0xffff, /* e905 */ 0xffff, /* e906 */ 0xffff, /* e907 */ 0xffff, /* e908 */ 0xffff, /* e909 */ 0xffff, /* e90a */ 0xffff, /* e90b */ 0xffff, /* e90c */ 0xffff, /* e90d */ 0xffff, /* e90e */ 0xffff, /* e90f */ 0xffff, /* e910 */ 0xffff, /* e911 */ 0xffff, /* e912 */ 0xffff, /* e913 */ 0xffff, /* e914 */ 0xffff, /* e915 */ 0xffff, /* e916 */ 0xffff, /* e917 */ 0xffff, /* e918 */ 0xffff, /* e919 */ 0xffff, /* e91a */ 0xffff, /* e91b */ 0xffff, /* e91c */ 0xffff, /* e91d */ 0xffff, /* e91e */ 0xffff, /* e91f */ 0xffff, /* e920 */ 0xffff, /* e921 */ 0xffff, /* e922 */ 0xffff, /* e923 */ 0xffff, /* e924 */ 0xffff, /* e925 */ 0xffff, /* e926 */ 0xffff, /* e927 */ 0xffff, /* e928 */ 0xffff, /* e929 */ 0xffff, /* e92a */ 0xffff, /* e92b */ 0xffff, /* e92c */ 0xffff, /* e92d */ 0xffff, /* e92e */ 0xffff, /* e92f */ 0xffff, /* e930 */ 0xffff, /* e931 */ 0xffff, /* e932 */ 0xffff, /* e933 */ 0xffff, /* e934 */ 0xffff, /* e935 */ 0xffff, /* e936 */ 0xffff, /* e937 */ 0xffff, /* e938 */ 0xffff, /* e939 */ 0xffff, /* e93a */ 0xffff, /* e93b */ 0xffff, /* e93c */ 0xffff, /* e93d */ 0xffff, /* e93e */ 0xffff, /* e93f */ 0xffff, /* e940 */ 0xffff, /* e941 */ 0xffff, /* e942 */ 0xffff, /* e943 */ 0xffff, /* e944 */ 0xffff, /* e945 */ 0xffff, /* e946 */ 0xffff, /* e947 */ 0xffff, /* e948 */ 0xffff, /* e949 */ 0xffff, /* e94a */ 0xffff, /* e94b */ 0xffff, /* e94c */ 0xffff, /* e94d */ 0xffff, /* e94e */ 0xffff, /* e94f */ 0xffff, /* e950 */ 0xffff, /* e951 */ 0xffff, /* e952 */ 0xffff, /* e953 */ 0xffff, /* e954 */ 0xffff, /* e955 */ 0xffff, /* e956 */ 0xffff, /* e957 */ 0xffff, /* e958 */ 0xffff, /* e959 */ 0xffff, /* e95a */ 0xffff, /* e95b */ 0xffff, /* e95c */ 0xffff, /* e95d */ 0xffff, /* e95e */ 0xffff, /* e95f */ 0xffff, /* e960 */ 0xffff, /* e961 */ 0xffff, /* e962 */ 0xffff, /* e963 */ 0xffff, /* e964 */ 0xffff, /* e965 */ 0xffff, /* e966 */ 0xffff, /* e967 */ 0xffff, /* e968 */ 0xffff, /* e969 */ 0xffff, /* e96a */ 0xffff, /* e96b */ 0xffff, /* e96c */ 0xffff, /* e96d */ 0xffff, /* e96e */ 0xffff, /* e96f */ 0xffff, /* e970 */ 0xffff, /* e971 */ 0xffff, /* e972 */ 0xffff, /* e973 */ 0xffff, /* e974 */ 0xffff, /* e975 */ 0xffff, /* e976 */ 0xffff, /* e977 */ 0xffff, /* e978 */ 0xffff, /* e979 */ 0xffff, /* e97a */ 0xffff, /* e97b */ 0xffff, /* e97c */ 0xffff, /* e97d */ 0xffff, /* e97e */ 0xffff, /* e97f */ 0xffff, /* e980 */ 0xffff, /* e981 */ 0xffff, /* e982 */ 0xffff, /* e983 */ 0xffff, /* e984 */ 0xffff, /* e985 */ 0xffff, /* e986 */ 0xffff, /* e987 */ 0xffff, /* e988 */ 0xffff, /* e989 */ 0xffff, /* e98a */ 0xffff, /* e98b */ 0xffff, /* e98c */ 0xffff, /* e98d */ 0xffff, /* e98e */ 0xffff, /* e98f */ 0xffff, /* e990 */ 0xffff, /* e991 */ 0xffff, /* e992 */ 0xffff, /* e993 */ 0xffff, /* e994 */ 0xffff, /* e995 */ 0xffff, /* e996 */ 0xffff, /* e997 */ 0xffff, /* e998 */ 0xffff, /* e999 */ 0xffff, /* e99a */ 0xffff, /* e99b */ 0xffff, /* e99c */ 0xffff, /* e99d */ 0xffff, /* e99e */ 0xffff, /* e99f */ 0xffff, /* e9a0 */ 0xffff, /* e9a1 */ 0xffff, /* e9a2 */ 0xffff, /* e9a3 */ 0xffff, /* e9a4 */ 0xffff, /* e9a5 */ 0xffff, /* e9a6 */ 0xffff, /* e9a7 */ 0xffff, /* e9a8 */ 0xffff, /* e9a9 */ 0xffff, /* e9aa */ 0xffff, /* e9ab */ 0xffff, /* e9ac */ 0xffff, /* e9ad */ 0xffff, /* e9ae */ 0xffff, /* e9af */ 0xffff, /* e9b0 */ 0xffff, /* e9b1 */ 0xffff, /* e9b2 */ 0xffff, /* e9b3 */ 0xffff, /* e9b4 */ 0xffff, /* e9b5 */ 0xffff, /* e9b6 */ 0xffff, /* e9b7 */ 0xffff, /* e9b8 */ 0xffff, /* e9b9 */ 0xffff, /* e9ba */ 0xffff, /* e9bb */ 0xffff, /* e9bc */ 0xffff, /* e9bd */ 0xffff, /* e9be */ 0xffff, /* e9bf */ 0xffff, /* e9c0 */ 0xffff, /* e9c1 */ 0xffff, /* e9c2 */ 0xffff, /* e9c3 */ 0xffff, /* e9c4 */ 0xffff, /* e9c5 */ 0xffff, /* e9c6 */ 0xffff, /* e9c7 */ 0xffff, /* e9c8 */ 0xffff, /* e9c9 */ 0xffff, /* e9ca */ 0xffff, /* e9cb */ 0xffff, /* e9cc */ 0xffff, /* e9cd */ 0xffff, /* e9ce */ 0xffff, /* e9cf */ 0xffff, /* e9d0 */ 0xffff, /* e9d1 */ 0xffff, /* e9d2 */ 0xffff, /* e9d3 */ 0xffff, /* e9d4 */ 0xffff, /* e9d5 */ 0xffff, /* e9d6 */ 0xffff, /* e9d7 */ 0xffff, /* e9d8 */ 0xffff, /* e9d9 */ 0xffff, /* e9da */ 0xffff, /* e9db */ 0xffff, /* e9dc */ 0xffff, /* e9dd */ 0xffff, /* e9de */ 0xffff, /* e9df */ 0xffff, /* e9e0 */ 0xffff, /* e9e1 */ 0xffff, /* e9e2 */ 0xffff, /* e9e3 */ 0xffff, /* e9e4 */ 0xffff, /* e9e5 */ 0xffff, /* e9e6 */ 0xffff, /* e9e7 */ 0xffff, /* e9e8 */ 0xffff, /* e9e9 */ 0xffff, /* e9ea */ 0xffff, /* e9eb */ 0xffff, /* e9ec */ 0xffff, /* e9ed */ 0xffff, /* e9ee */ 0xffff, /* e9ef */ 0xffff, /* e9f0 */ 0xffff, /* e9f1 */ 0xffff, /* e9f2 */ 0xffff, /* e9f3 */ 0xffff, /* e9f4 */ 0xffff, /* e9f5 */ 0xffff, /* e9f6 */ 0xffff, /* e9f7 */ 0xffff, /* e9f8 */ 0xffff, /* e9f9 */ 0xffff, /* e9fa */ 0xffff, /* e9fb */ 0xffff, /* e9fc */ 0xffff, /* e9fd */ 0xffff, /* e9fe */ 0xffff, /* e9ff */ 0xffff, /* ea00 */ 0xffff, /* ea01 */ 0xffff, /* ea02 */ 0xffff, /* ea03 */ 0xffff, /* ea04 */ 0xffff, /* ea05 */ 0xffff, /* ea06 */ 0xffff, /* ea07 */ 0xffff, /* ea08 */ 0xffff, /* ea09 */ 0xffff, /* ea0a */ 0xffff, /* ea0b */ 0xffff, /* ea0c */ 0xffff, /* ea0d */ 0xffff, /* ea0e */ 0xffff, /* ea0f */ 0xffff, /* ea10 */ 0xffff, /* ea11 */ 0xffff, /* ea12 */ 0xffff, /* ea13 */ 0xffff, /* ea14 */ 0xffff, /* ea15 */ 0xffff, /* ea16 */ 0xffff, /* ea17 */ 0xffff, /* ea18 */ 0xffff, /* ea19 */ 0xffff, /* ea1a */ 0xffff, /* ea1b */ 0xffff, /* ea1c */ 0xffff, /* ea1d */ 0xffff, /* ea1e */ 0xffff, /* ea1f */ 0xffff, /* ea20 */ 0xffff, /* ea21 */ 0xffff, /* ea22 */ 0xffff, /* ea23 */ 0xffff, /* ea24 */ 0xffff, /* ea25 */ 0xffff, /* ea26 */ 0xffff, /* ea27 */ 0xffff, /* ea28 */ 0xffff, /* ea29 */ 0xffff, /* ea2a */ 0xffff, /* ea2b */ 0xffff, /* ea2c */ 0xffff, /* ea2d */ 0xffff, /* ea2e */ 0xffff, /* ea2f */ 0xffff, /* ea30 */ 0xffff, /* ea31 */ 0xffff, /* ea32 */ 0xffff, /* ea33 */ 0xffff, /* ea34 */ 0xffff, /* ea35 */ 0xffff, /* ea36 */ 0xffff, /* ea37 */ 0xffff, /* ea38 */ 0xffff, /* ea39 */ 0xffff, /* ea3a */ 0xffff, /* ea3b */ 0xffff, /* ea3c */ 0xffff, /* ea3d */ 0xffff, /* ea3e */ 0xffff, /* ea3f */ 0xffff, /* ea40 */ 0xffff, /* ea41 */ 0xffff, /* ea42 */ 0xffff, /* ea43 */ 0xffff, /* ea44 */ 0xffff, /* ea45 */ 0xffff, /* ea46 */ 0xffff, /* ea47 */ 0xffff, /* ea48 */ 0xffff, /* ea49 */ 0xffff, /* ea4a */ 0xffff, /* ea4b */ 0xffff, /* ea4c */ 0xffff, /* ea4d */ 0xffff, /* ea4e */ 0xffff, /* ea4f */ 0xffff, /* ea50 */ 0xffff, /* ea51 */ 0xffff, /* ea52 */ 0xffff, /* ea53 */ 0xffff, /* ea54 */ 0xffff, /* ea55 */ 0xffff, /* ea56 */ 0xffff, /* ea57 */ 0xffff, /* ea58 */ 0xffff, /* ea59 */ 0xffff, /* ea5a */ 0xffff, /* ea5b */ 0xffff, /* ea5c */ 0xffff, /* ea5d */ 0xffff, /* ea5e */ 0xffff, /* ea5f */ 0xffff, /* ea60 */ 0xffff, /* ea61 */ 0xffff, /* ea62 */ 0xffff, /* ea63 */ 0xffff, /* ea64 */ 0xffff, /* ea65 */ 0xffff, /* ea66 */ 0xffff, /* ea67 */ 0xffff, /* ea68 */ 0xffff, /* ea69 */ 0xffff, /* ea6a */ 0xffff, /* ea6b */ 0xffff, /* ea6c */ 0xffff, /* ea6d */ 0xffff, /* ea6e */ 0xffff, /* ea6f */ 0xffff, /* ea70 */ 0xffff, /* ea71 */ 0xffff, /* ea72 */ 0xffff, /* ea73 */ 0xffff, /* ea74 */ 0xffff, /* ea75 */ 0xffff, /* ea76 */ 0xffff, /* ea77 */ 0xffff, /* ea78 */ 0xffff, /* ea79 */ 0xffff, /* ea7a */ 0xffff, /* ea7b */ 0xffff, /* ea7c */ 0xffff, /* ea7d */ 0xffff, /* ea7e */ 0xffff, /* ea7f */ 0xffff, /* ea80 */ 0xffff, /* ea81 */ 0xffff, /* ea82 */ 0xffff, /* ea83 */ 0xffff, /* ea84 */ 0xffff, /* ea85 */ 0xffff, /* ea86 */ 0xffff, /* ea87 */ 0xffff, /* ea88 */ 0xffff, /* ea89 */ 0xffff, /* ea8a */ 0xffff, /* ea8b */ 0xffff, /* ea8c */ 0xffff, /* ea8d */ 0xffff, /* ea8e */ 0xffff, /* ea8f */ 0xffff, /* ea90 */ 0xffff, /* ea91 */ 0xffff, /* ea92 */ 0xffff, /* ea93 */ 0xffff, /* ea94 */ 0xffff, /* ea95 */ 0xffff, /* ea96 */ 0xffff, /* ea97 */ 0xffff, /* ea98 */ 0xffff, /* ea99 */ 0xffff, /* ea9a */ 0xffff, /* ea9b */ 0xffff, /* ea9c */ 0xffff, /* ea9d */ 0xffff, /* ea9e */ 0xffff, /* ea9f */ 0xffff, /* eaa0 */ 0xffff, /* eaa1 */ 0xffff, /* eaa2 */ 0xffff, /* eaa3 */ 0xffff, /* eaa4 */ 0xffff, /* eaa5 */ 0xffff, /* eaa6 */ 0xffff, /* eaa7 */ 0xffff, /* eaa8 */ 0xffff, /* eaa9 */ 0xffff, /* eaaa */ 0xffff, /* eaab */ 0xffff, /* eaac */ 0xffff, /* eaad */ 0xffff, /* eaae */ 0xffff, /* eaaf */ 0xffff, /* eab0 */ 0xffff, /* eab1 */ 0xffff, /* eab2 */ 0xffff, /* eab3 */ 0xffff, /* eab4 */ 0xffff, /* eab5 */ 0xffff, /* eab6 */ 0xffff, /* eab7 */ 0xffff, /* eab8 */ 0xffff, /* eab9 */ 0xffff, /* eaba */ 0xffff, /* eabb */ 0xffff, /* eabc */ 0xffff, /* eabd */ 0xffff, /* eabe */ 0xffff, /* eabf */ 0xffff, /* eac0 */ 0xffff, /* eac1 */ 0xffff, /* eac2 */ 0xffff, /* eac3 */ 0xffff, /* eac4 */ 0xffff, /* eac5 */ 0xffff, /* eac6 */ 0xffff, /* eac7 */ 0xffff, /* eac8 */ 0xffff, /* eac9 */ 0xffff, /* eaca */ 0xffff, /* eacb */ 0xffff, /* eacc */ 0xffff, /* eacd */ 0xffff, /* eace */ 0xffff, /* eacf */ 0xffff, /* ead0 */ 0xffff, /* ead1 */ 0xffff, /* ead2 */ 0xffff, /* ead3 */ 0xffff, /* ead4 */ 0xffff, /* ead5 */ 0xffff, /* ead6 */ 0xffff, /* ead7 */ 0xffff, /* ead8 */ 0xffff, /* ead9 */ 0xffff, /* eada */ 0xffff, /* eadb */ 0xffff, /* eadc */ 0xffff, /* eadd */ 0xffff, /* eade */ 0xffff, /* eadf */ 0xffff, /* eae0 */ 0xffff, /* eae1 */ 0xffff, /* eae2 */ 0xffff, /* eae3 */ 0xffff, /* eae4 */ 0xffff, /* eae5 */ 0xffff, /* eae6 */ 0xffff, /* eae7 */ 0xffff, /* eae8 */ 0xffff, /* eae9 */ 0xffff, /* eaea */ 0xffff, /* eaeb */ 0xffff, /* eaec */ 0xffff, /* eaed */ 0xffff, /* eaee */ 0xffff, /* eaef */ 0xffff, /* eaf0 */ 0xffff, /* eaf1 */ 0xffff, /* eaf2 */ 0xffff, /* eaf3 */ 0xffff, /* eaf4 */ 0xffff, /* eaf5 */ 0xffff, /* eaf6 */ 0xffff, /* eaf7 */ 0xffff, /* eaf8 */ 0xffff, /* eaf9 */ 0xffff, /* eafa */ 0xffff, /* eafb */ 0xffff, /* eafc */ 0xffff, /* eafd */ 0xffff, /* eafe */ 0xffff, /* eaff */ 0xffff, /* eb00 */ 0xffff, /* eb01 */ 0xffff, /* eb02 */ 0xffff, /* eb03 */ 0xffff, /* eb04 */ 0xffff, /* eb05 */ 0xffff, /* eb06 */ 0xffff, /* eb07 */ 0xffff, /* eb08 */ 0xffff, /* eb09 */ 0xffff, /* eb0a */ 0xffff, /* eb0b */ 0xffff, /* eb0c */ 0xffff, /* eb0d */ 0xffff, /* eb0e */ 0xffff, /* eb0f */ 0xffff, /* eb10 */ 0xffff, /* eb11 */ 0xffff, /* eb12 */ 0xffff, /* eb13 */ 0xffff, /* eb14 */ 0xffff, /* eb15 */ 0xffff, /* eb16 */ 0xffff, /* eb17 */ 0xffff, /* eb18 */ 0xffff, /* eb19 */ 0xffff, /* eb1a */ 0xffff, /* eb1b */ 0xffff, /* eb1c */ 0xffff, /* eb1d */ 0xffff, /* eb1e */ 0xffff, /* eb1f */ 0xffff, /* eb20 */ 0xffff, /* eb21 */ 0xffff, /* eb22 */ 0xffff, /* eb23 */ 0xffff, /* eb24 */ 0xffff, /* eb25 */ 0xffff, /* eb26 */ 0xffff, /* eb27 */ 0xffff, /* eb28 */ 0xffff, /* eb29 */ 0xffff, /* eb2a */ 0xffff, /* eb2b */ 0xffff, /* eb2c */ 0xffff, /* eb2d */ 0xffff, /* eb2e */ 0xffff, /* eb2f */ 0xffff, /* eb30 */ 0xffff, /* eb31 */ 0xffff, /* eb32 */ 0xffff, /* eb33 */ 0xffff, /* eb34 */ 0xffff, /* eb35 */ 0xffff, /* eb36 */ 0xffff, /* eb37 */ 0xffff, /* eb38 */ 0xffff, /* eb39 */ 0xffff, /* eb3a */ 0xffff, /* eb3b */ 0xffff, /* eb3c */ 0xffff, /* eb3d */ 0xffff, /* eb3e */ 0xffff, /* eb3f */ 0xffff, /* eb40 */ 0xffff, /* eb41 */ 0xffff, /* eb42 */ 0xffff, /* eb43 */ 0xffff, /* eb44 */ 0xffff, /* eb45 */ 0xffff, /* eb46 */ 0xffff, /* eb47 */ 0xffff, /* eb48 */ 0xffff, /* eb49 */ 0xffff, /* eb4a */ 0xffff, /* eb4b */ 0xffff, /* eb4c */ 0xffff, /* eb4d */ 0xffff, /* eb4e */ 0xffff, /* eb4f */ 0xffff, /* eb50 */ 0xffff, /* eb51 */ 0xffff, /* eb52 */ 0xffff, /* eb53 */ 0xffff, /* eb54 */ 0xffff, /* eb55 */ 0xffff, /* eb56 */ 0xffff, /* eb57 */ 0xffff, /* eb58 */ 0xffff, /* eb59 */ 0xffff, /* eb5a */ 0xffff, /* eb5b */ 0xffff, /* eb5c */ 0xffff, /* eb5d */ 0xffff, /* eb5e */ 0xffff, /* eb5f */ 0xffff, /* eb60 */ 0xffff, /* eb61 */ 0xffff, /* eb62 */ 0xffff, /* eb63 */ 0xffff, /* eb64 */ 0xffff, /* eb65 */ 0xffff, /* eb66 */ 0xffff, /* eb67 */ 0xffff, /* eb68 */ 0xffff, /* eb69 */ 0xffff, /* eb6a */ 0xffff, /* eb6b */ 0xffff, /* eb6c */ 0xffff, /* eb6d */ 0xffff, /* eb6e */ 0xffff, /* eb6f */ 0xffff, /* eb70 */ 0xffff, /* eb71 */ 0xffff, /* eb72 */ 0xffff, /* eb73 */ 0xffff, /* eb74 */ 0xffff, /* eb75 */ 0xffff, /* eb76 */ 0xffff, /* eb77 */ 0xffff, /* eb78 */ 0xffff, /* eb79 */ 0xffff, /* eb7a */ 0xffff, /* eb7b */ 0xffff, /* eb7c */ 0xffff, /* eb7d */ 0xffff, /* eb7e */ 0xffff, /* eb7f */ 0xffff, /* eb80 */ 0xffff, /* eb81 */ 0xffff, /* eb82 */ 0xffff, /* eb83 */ 0xffff, /* eb84 */ 0xffff, /* eb85 */ 0xffff, /* eb86 */ 0xffff, /* eb87 */ 0xffff, /* eb88 */ 0xffff, /* eb89 */ 0xffff, /* eb8a */ 0xffff, /* eb8b */ 0xffff, /* eb8c */ 0xffff, /* eb8d */ 0xffff, /* eb8e */ 0xffff, /* eb8f */ 0xffff, /* eb90 */ 0xffff, /* eb91 */ 0xffff, /* eb92 */ 0xffff, /* eb93 */ 0xffff, /* eb94 */ 0xffff, /* eb95 */ 0xffff, /* eb96 */ 0xffff, /* eb97 */ 0xffff, /* eb98 */ 0xffff, /* eb99 */ 0xffff, /* eb9a */ 0xffff, /* eb9b */ 0xffff, /* eb9c */ 0xffff, /* eb9d */ 0xffff, /* eb9e */ 0xffff, /* eb9f */ 0xffff, /* eba0 */ 0xffff, /* eba1 */ 0xffff, /* eba2 */ 0xffff, /* eba3 */ 0xffff, /* eba4 */ 0xffff, /* eba5 */ 0xffff, /* eba6 */ 0xffff, /* eba7 */ 0xffff, /* eba8 */ 0xffff, /* eba9 */ 0xffff, /* ebaa */ 0xffff, /* ebab */ 0xffff, /* ebac */ 0xffff, /* ebad */ 0xffff, /* ebae */ 0xffff, /* ebaf */ 0xffff, /* ebb0 */ 0xffff, /* ebb1 */ 0xffff, /* ebb2 */ 0xffff, /* ebb3 */ 0xffff, /* ebb4 */ 0xffff, /* ebb5 */ 0xffff, /* ebb6 */ 0xffff, /* ebb7 */ 0xffff, /* ebb8 */ 0xffff, /* ebb9 */ 0xffff, /* ebba */ 0xffff, /* ebbb */ 0xffff, /* ebbc */ 0xffff, /* ebbd */ 0xffff, /* ebbe */ 0xffff, /* ebbf */ 0xffff, /* ebc0 */ 0xffff, /* ebc1 */ 0xffff, /* ebc2 */ 0xffff, /* ebc3 */ 0xffff, /* ebc4 */ 0xffff, /* ebc5 */ 0xffff, /* ebc6 */ 0xffff, /* ebc7 */ 0xffff, /* ebc8 */ 0xffff, /* ebc9 */ 0xffff, /* ebca */ 0xffff, /* ebcb */ 0xffff, /* ebcc */ 0xffff, /* ebcd */ 0xffff, /* ebce */ 0xffff, /* ebcf */ 0xffff, /* ebd0 */ 0xffff, /* ebd1 */ 0xffff, /* ebd2 */ 0xffff, /* ebd3 */ 0xffff, /* ebd4 */ 0xffff, /* ebd5 */ 0xffff, /* ebd6 */ 0xffff, /* ebd7 */ 0xffff, /* ebd8 */ 0xffff, /* ebd9 */ 0xffff, /* ebda */ 0xffff, /* ebdb */ 0xffff, /* ebdc */ 0xffff, /* ebdd */ 0xffff, /* ebde */ 0xffff, /* ebdf */ 0xffff, /* ebe0 */ 0xffff, /* ebe1 */ 0xffff, /* ebe2 */ 0xffff, /* ebe3 */ 0xffff, /* ebe4 */ 0xffff, /* ebe5 */ 0xffff, /* ebe6 */ 0xffff, /* ebe7 */ 0xffff, /* ebe8 */ 0xffff, /* ebe9 */ 0xffff, /* ebea */ 0xffff, /* ebeb */ 0xffff, /* ebec */ 0xffff, /* ebed */ 0xffff, /* ebee */ 0xffff, /* ebef */ 0xffff, /* ebf0 */ 0xffff, /* ebf1 */ 0xffff, /* ebf2 */ 0xffff, /* ebf3 */ 0xffff, /* ebf4 */ 0xffff, /* ebf5 */ 0xffff, /* ebf6 */ 0xffff, /* ebf7 */ 0xffff, /* ebf8 */ 0xffff, /* ebf9 */ 0xffff, /* ebfa */ 0xffff, /* ebfb */ 0xffff, /* ebfc */ 0xffff, /* ebfd */ 0xffff, /* ebfe */ 0xffff, /* ebff */ 0xffff, /* ec00 */ 0xffff, /* ec01 */ 0xffff, /* ec02 */ 0xffff, /* ec03 */ 0xffff, /* ec04 */ 0xffff, /* ec05 */ 0xffff, /* ec06 */ 0xffff, /* ec07 */ 0xffff, /* ec08 */ 0xffff, /* ec09 */ 0xffff, /* ec0a */ 0xffff, /* ec0b */ 0xffff, /* ec0c */ 0xffff, /* ec0d */ 0xffff, /* ec0e */ 0xffff, /* ec0f */ 0xffff, /* ec10 */ 0xffff, /* ec11 */ 0xffff, /* ec12 */ 0xffff, /* ec13 */ 0xffff, /* ec14 */ 0xffff, /* ec15 */ 0xffff, /* ec16 */ 0xffff, /* ec17 */ 0xffff, /* ec18 */ 0xffff, /* ec19 */ 0xffff, /* ec1a */ 0xffff, /* ec1b */ 0xffff, /* ec1c */ 0xffff, /* ec1d */ 0xffff, /* ec1e */ 0xffff, /* ec1f */ 0xffff, /* ec20 */ 0xffff, /* ec21 */ 0xffff, /* ec22 */ 0xffff, /* ec23 */ 0xffff, /* ec24 */ 0xffff, /* ec25 */ 0xffff, /* ec26 */ 0xffff, /* ec27 */ 0xffff, /* ec28 */ 0xffff, /* ec29 */ 0xffff, /* ec2a */ 0xffff, /* ec2b */ 0xffff, /* ec2c */ 0xffff, /* ec2d */ 0xffff, /* ec2e */ 0xffff, /* ec2f */ 0xffff, /* ec30 */ 0xffff, /* ec31 */ 0xffff, /* ec32 */ 0xffff, /* ec33 */ 0xffff, /* ec34 */ 0xffff, /* ec35 */ 0xffff, /* ec36 */ 0xffff, /* ec37 */ 0xffff, /* ec38 */ 0xffff, /* ec39 */ 0xffff, /* ec3a */ 0xffff, /* ec3b */ 0xffff, /* ec3c */ 0xffff, /* ec3d */ 0xffff, /* ec3e */ 0xffff, /* ec3f */ 0xffff, /* ec40 */ 0xffff, /* ec41 */ 0xffff, /* ec42 */ 0xffff, /* ec43 */ 0xffff, /* ec44 */ 0xffff, /* ec45 */ 0xffff, /* ec46 */ 0xffff, /* ec47 */ 0xffff, /* ec48 */ 0xffff, /* ec49 */ 0xffff, /* ec4a */ 0xffff, /* ec4b */ 0xffff, /* ec4c */ 0xffff, /* ec4d */ 0xffff, /* ec4e */ 0xffff, /* ec4f */ 0xffff, /* ec50 */ 0xffff, /* ec51 */ 0xffff, /* ec52 */ 0xffff, /* ec53 */ 0xffff, /* ec54 */ 0xffff, /* ec55 */ 0xffff, /* ec56 */ 0xffff, /* ec57 */ 0xffff, /* ec58 */ 0xffff, /* ec59 */ 0xffff, /* ec5a */ 0xffff, /* ec5b */ 0xffff, /* ec5c */ 0xffff, /* ec5d */ 0xffff, /* ec5e */ 0xffff, /* ec5f */ 0xffff, /* ec60 */ 0xffff, /* ec61 */ 0xffff, /* ec62 */ 0xffff, /* ec63 */ 0xffff, /* ec64 */ 0xffff, /* ec65 */ 0xffff, /* ec66 */ 0xffff, /* ec67 */ 0xffff, /* ec68 */ 0xffff, /* ec69 */ 0xffff, /* ec6a */ 0xffff, /* ec6b */ 0xffff, /* ec6c */ 0xffff, /* ec6d */ 0xffff, /* ec6e */ 0xffff, /* ec6f */ 0xffff, /* ec70 */ 0xffff, /* ec71 */ 0xffff, /* ec72 */ 0xffff, /* ec73 */ 0xffff, /* ec74 */ 0xffff, /* ec75 */ 0xffff, /* ec76 */ 0xffff, /* ec77 */ 0xffff, /* ec78 */ 0xffff, /* ec79 */ 0xffff, /* ec7a */ 0xffff, /* ec7b */ 0xffff, /* ec7c */ 0xffff, /* ec7d */ 0xffff, /* ec7e */ 0xffff, /* ec7f */ 0xffff, /* ec80 */ 0xffff, /* ec81 */ 0xffff, /* ec82 */ 0xffff, /* ec83 */ 0xffff, /* ec84 */ 0xffff, /* ec85 */ 0xffff, /* ec86 */ 0xffff, /* ec87 */ 0xffff, /* ec88 */ 0xffff, /* ec89 */ 0xffff, /* ec8a */ 0xffff, /* ec8b */ 0xffff, /* ec8c */ 0xffff, /* ec8d */ 0xffff, /* ec8e */ 0xffff, /* ec8f */ 0xffff, /* ec90 */ 0xffff, /* ec91 */ 0xffff, /* ec92 */ 0xffff, /* ec93 */ 0xffff, /* ec94 */ 0xffff, /* ec95 */ 0xffff, /* ec96 */ 0xffff, /* ec97 */ 0xffff, /* ec98 */ 0xffff, /* ec99 */ 0xffff, /* ec9a */ 0xffff, /* ec9b */ 0xffff, /* ec9c */ 0xffff, /* ec9d */ 0xffff, /* ec9e */ 0xffff, /* ec9f */ 0xffff, /* eca0 */ 0xffff, /* eca1 */ 0xffff, /* eca2 */ 0xffff, /* eca3 */ 0xffff, /* eca4 */ 0xffff, /* eca5 */ 0xffff, /* eca6 */ 0xffff, /* eca7 */ 0xffff, /* eca8 */ 0xffff, /* eca9 */ 0xffff, /* ecaa */ 0xffff, /* ecab */ 0xffff, /* ecac */ 0xffff, /* ecad */ 0xffff, /* ecae */ 0xffff, /* ecaf */ 0xffff, /* ecb0 */ 0xffff, /* ecb1 */ 0xffff, /* ecb2 */ 0xffff, /* ecb3 */ 0xffff, /* ecb4 */ 0xffff, /* ecb5 */ 0xffff, /* ecb6 */ 0xffff, /* ecb7 */ 0xffff, /* ecb8 */ 0xffff, /* ecb9 */ 0xffff, /* ecba */ 0xffff, /* ecbb */ 0xffff, /* ecbc */ 0xffff, /* ecbd */ 0xffff, /* ecbe */ 0xffff, /* ecbf */ 0xffff, /* ecc0 */ 0xffff, /* ecc1 */ 0xffff, /* ecc2 */ 0xffff, /* ecc3 */ 0xffff, /* ecc4 */ 0xffff, /* ecc5 */ 0xffff, /* ecc6 */ 0xffff, /* ecc7 */ 0xffff, /* ecc8 */ 0xffff, /* ecc9 */ 0xffff, /* ecca */ 0xffff, /* eccb */ 0xffff, /* eccc */ 0xffff, /* eccd */ 0xffff, /* ecce */ 0xffff, /* eccf */ 0xffff, /* ecd0 */ 0xffff, /* ecd1 */ 0xffff, /* ecd2 */ 0xffff, /* ecd3 */ 0xffff, /* ecd4 */ 0xffff, /* ecd5 */ 0xffff, /* ecd6 */ 0xffff, /* ecd7 */ 0xffff, /* ecd8 */ 0xffff, /* ecd9 */ 0xffff, /* ecda */ 0xffff, /* ecdb */ 0xffff, /* ecdc */ 0xffff, /* ecdd */ 0xffff, /* ecde */ 0xffff, /* ecdf */ 0xffff, /* ece0 */ 0xffff, /* ece1 */ 0xffff, /* ece2 */ 0xffff, /* ece3 */ 0xffff, /* ece4 */ 0xffff, /* ece5 */ 0xffff, /* ece6 */ 0xffff, /* ece7 */ 0xffff, /* ece8 */ 0xffff, /* ece9 */ 0xffff, /* ecea */ 0xffff, /* eceb */ 0xffff, /* ecec */ 0xffff, /* eced */ 0xffff, /* ecee */ 0xffff, /* ecef */ 0xffff, /* ecf0 */ 0xffff, /* ecf1 */ 0xffff, /* ecf2 */ 0xffff, /* ecf3 */ 0xffff, /* ecf4 */ 0xffff, /* ecf5 */ 0xffff, /* ecf6 */ 0xffff, /* ecf7 */ 0xffff, /* ecf8 */ 0xffff, /* ecf9 */ 0xffff, /* ecfa */ 0xffff, /* ecfb */ 0xffff, /* ecfc */ 0xffff, /* ecfd */ 0xffff, /* ecfe */ 0xffff, /* ecff */ 0xffff, /* ed00 */ 0xffff, /* ed01 */ 0xffff, /* ed02 */ 0xffff, /* ed03 */ 0xffff, /* ed04 */ 0xffff, /* ed05 */ 0xffff, /* ed06 */ 0xffff, /* ed07 */ 0xffff, /* ed08 */ 0xffff, /* ed09 */ 0xffff, /* ed0a */ 0xffff, /* ed0b */ 0xffff, /* ed0c */ 0xffff, /* ed0d */ 0xffff, /* ed0e */ 0xffff, /* ed0f */ 0xffff, /* ed10 */ 0xffff, /* ed11 */ 0xffff, /* ed12 */ 0xffff, /* ed13 */ 0xffff, /* ed14 */ 0xffff, /* ed15 */ 0xffff, /* ed16 */ 0xffff, /* ed17 */ 0xffff, /* ed18 */ 0xffff, /* ed19 */ 0xffff, /* ed1a */ 0xffff, /* ed1b */ 0xffff, /* ed1c */ 0xffff, /* ed1d */ 0xffff, /* ed1e */ 0xffff, /* ed1f */ 0xffff, /* ed20 */ 0xffff, /* ed21 */ 0xffff, /* ed22 */ 0xffff, /* ed23 */ 0xffff, /* ed24 */ 0xffff, /* ed25 */ 0xffff, /* ed26 */ 0xffff, /* ed27 */ 0xffff, /* ed28 */ 0xffff, /* ed29 */ 0xffff, /* ed2a */ 0xffff, /* ed2b */ 0xffff, /* ed2c */ 0xffff, /* ed2d */ 0xffff, /* ed2e */ 0xffff, /* ed2f */ 0xffff, /* ed30 */ 0xffff, /* ed31 */ 0xffff, /* ed32 */ 0xffff, /* ed33 */ 0xffff, /* ed34 */ 0xffff, /* ed35 */ 0xffff, /* ed36 */ 0xffff, /* ed37 */ 0xffff, /* ed38 */ 0xffff, /* ed39 */ 0xffff, /* ed3a */ 0xffff, /* ed3b */ 0xffff, /* ed3c */ 0xffff, /* ed3d */ 0xffff, /* ed3e */ 0xffff, /* ed3f */ 0xffff, /* ed40 */ 0xffff, /* ed41 */ 0xffff, /* ed42 */ 0xffff, /* ed43 */ 0xffff, /* ed44 */ 0xffff, /* ed45 */ 0xffff, /* ed46 */ 0xffff, /* ed47 */ 0xffff, /* ed48 */ 0xffff, /* ed49 */ 0xffff, /* ed4a */ 0xffff, /* ed4b */ 0xffff, /* ed4c */ 0xffff, /* ed4d */ 0xffff, /* ed4e */ 0xffff, /* ed4f */ 0xffff, /* ed50 */ 0xffff, /* ed51 */ 0xffff, /* ed52 */ 0xffff, /* ed53 */ 0xffff, /* ed54 */ 0xffff, /* ed55 */ 0xffff, /* ed56 */ 0xffff, /* ed57 */ 0xffff, /* ed58 */ 0xffff, /* ed59 */ 0xffff, /* ed5a */ 0xffff, /* ed5b */ 0xffff, /* ed5c */ 0xffff, /* ed5d */ 0xffff, /* ed5e */ 0xffff, /* ed5f */ 0xffff, /* ed60 */ 0xffff, /* ed61 */ 0xffff, /* ed62 */ 0xffff, /* ed63 */ 0xffff, /* ed64 */ 0xffff, /* ed65 */ 0xffff, /* ed66 */ 0xffff, /* ed67 */ 0xffff, /* ed68 */ 0xffff, /* ed69 */ 0xffff, /* ed6a */ 0xffff, /* ed6b */ 0xffff, /* ed6c */ 0xffff, /* ed6d */ 0xffff, /* ed6e */ 0xffff, /* ed6f */ 0xffff, /* ed70 */ 0xffff, /* ed71 */ 0xffff, /* ed72 */ 0xffff, /* ed73 */ 0xffff, /* ed74 */ 0xffff, /* ed75 */ 0xffff, /* ed76 */ 0xffff, /* ed77 */ 0xffff, /* ed78 */ 0xffff, /* ed79 */ 0xffff, /* ed7a */ 0xffff, /* ed7b */ 0xffff, /* ed7c */ 0xffff, /* ed7d */ 0xffff, /* ed7e */ 0xffff, /* ed7f */ 0xffff, /* ed80 */ 0xffff, /* ed81 */ 0xffff, /* ed82 */ 0xffff, /* ed83 */ 0xffff, /* ed84 */ 0xffff, /* ed85 */ 0xffff, /* ed86 */ 0xffff, /* ed87 */ 0xffff, /* ed88 */ 0xffff, /* ed89 */ 0xffff, /* ed8a */ 0xffff, /* ed8b */ 0xffff, /* ed8c */ 0xffff, /* ed8d */ 0xffff, /* ed8e */ 0xffff, /* ed8f */ 0xffff, /* ed90 */ 0xffff, /* ed91 */ 0xffff, /* ed92 */ 0xffff, /* ed93 */ 0xffff, /* ed94 */ 0xffff, /* ed95 */ 0xffff, /* ed96 */ 0xffff, /* ed97 */ 0xffff, /* ed98 */ 0xffff, /* ed99 */ 0xffff, /* ed9a */ 0xffff, /* ed9b */ 0xffff, /* ed9c */ 0xffff, /* ed9d */ 0xffff, /* ed9e */ 0xffff, /* ed9f */ 0xffff, /* eda0 */ 0xffff, /* eda1 */ 0xffff, /* eda2 */ 0xffff, /* eda3 */ 0xffff, /* eda4 */ 0xffff, /* eda5 */ 0xffff, /* eda6 */ 0xffff, /* eda7 */ 0xffff, /* eda8 */ 0xffff, /* eda9 */ 0xffff, /* edaa */ 0xffff, /* edab */ 0xffff, /* edac */ 0xffff, /* edad */ 0xffff, /* edae */ 0xffff, /* edaf */ 0xffff, /* edb0 */ 0xffff, /* edb1 */ 0xffff, /* edb2 */ 0xffff, /* edb3 */ 0xffff, /* edb4 */ 0xffff, /* edb5 */ 0xffff, /* edb6 */ 0xffff, /* edb7 */ 0xffff, /* edb8 */ 0xffff, /* edb9 */ 0xffff, /* edba */ 0xffff, /* edbb */ 0xffff, /* edbc */ 0xffff, /* edbd */ 0xffff, /* edbe */ 0xffff, /* edbf */ 0xffff, /* edc0 */ 0xffff, /* edc1 */ 0xffff, /* edc2 */ 0xffff, /* edc3 */ 0xffff, /* edc4 */ 0xffff, /* edc5 */ 0xffff, /* edc6 */ 0xffff, /* edc7 */ 0xffff, /* edc8 */ 0xffff, /* edc9 */ 0xffff, /* edca */ 0xffff, /* edcb */ 0xffff, /* edcc */ 0xffff, /* edcd */ 0xffff, /* edce */ 0xffff, /* edcf */ 0xffff, /* edd0 */ 0xffff, /* edd1 */ 0xffff, /* edd2 */ 0xffff, /* edd3 */ 0xffff, /* edd4 */ 0xffff, /* edd5 */ 0xffff, /* edd6 */ 0xffff, /* edd7 */ 0xffff, /* edd8 */ 0xffff, /* edd9 */ 0xffff, /* edda */ 0xffff, /* eddb */ 0xffff, /* eddc */ 0xffff, /* eddd */ 0xffff, /* edde */ 0xffff, /* eddf */ 0xffff, /* ede0 */ 0xffff, /* ede1 */ 0xffff, /* ede2 */ 0xffff, /* ede3 */ 0xffff, /* ede4 */ 0xffff, /* ede5 */ 0xffff, /* ede6 */ 0xffff, /* ede7 */ 0xffff, /* ede8 */ 0xffff, /* ede9 */ 0xffff, /* edea */ 0xffff, /* edeb */ 0xffff, /* edec */ 0xffff, /* eded */ 0xffff, /* edee */ 0xffff, /* edef */ 0xffff, /* edf0 */ 0xffff, /* edf1 */ 0xffff, /* edf2 */ 0xffff, /* edf3 */ 0xffff, /* edf4 */ 0xffff, /* edf5 */ 0xffff, /* edf6 */ 0xffff, /* edf7 */ 0xffff, /* edf8 */ 0xffff, /* edf9 */ 0xffff, /* edfa */ 0xffff, /* edfb */ 0xffff, /* edfc */ 0xffff, /* edfd */ 0xffff, /* edfe */ 0xffff, /* edff */ 0xffff, /* ee00 */ 0xffff, /* ee01 */ 0xffff, /* ee02 */ 0xffff, /* ee03 */ 0xffff, /* ee04 */ 0xffff, /* ee05 */ 0xffff, /* ee06 */ 0xffff, /* ee07 */ 0xffff, /* ee08 */ 0xffff, /* ee09 */ 0xffff, /* ee0a */ 0xffff, /* ee0b */ 0xffff, /* ee0c */ 0xffff, /* ee0d */ 0xffff, /* ee0e */ 0xffff, /* ee0f */ 0xffff, /* ee10 */ 0xffff, /* ee11 */ 0xffff, /* ee12 */ 0xffff, /* ee13 */ 0xffff, /* ee14 */ 0xffff, /* ee15 */ 0xffff, /* ee16 */ 0xffff, /* ee17 */ 0xffff, /* ee18 */ 0xffff, /* ee19 */ 0xffff, /* ee1a */ 0xffff, /* ee1b */ 0xffff, /* ee1c */ 0xffff, /* ee1d */ 0xffff, /* ee1e */ 0xffff, /* ee1f */ 0xffff, /* ee20 */ 0xffff, /* ee21 */ 0xffff, /* ee22 */ 0xffff, /* ee23 */ 0xffff, /* ee24 */ 0xffff, /* ee25 */ 0xffff, /* ee26 */ 0xffff, /* ee27 */ 0xffff, /* ee28 */ 0xffff, /* ee29 */ 0xffff, /* ee2a */ 0xffff, /* ee2b */ 0xffff, /* ee2c */ 0xffff, /* ee2d */ 0xffff, /* ee2e */ 0xffff, /* ee2f */ 0xffff, /* ee30 */ 0xffff, /* ee31 */ 0xffff, /* ee32 */ 0xffff, /* ee33 */ 0xffff, /* ee34 */ 0xffff, /* ee35 */ 0xffff, /* ee36 */ 0xffff, /* ee37 */ 0xffff, /* ee38 */ 0xffff, /* ee39 */ 0xffff, /* ee3a */ 0xffff, /* ee3b */ 0xffff, /* ee3c */ 0xffff, /* ee3d */ 0xffff, /* ee3e */ 0xffff, /* ee3f */ 0xffff, /* ee40 */ 0xffff, /* ee41 */ 0xffff, /* ee42 */ 0xffff, /* ee43 */ 0xffff, /* ee44 */ 0xffff, /* ee45 */ 0xffff, /* ee46 */ 0xffff, /* ee47 */ 0xffff, /* ee48 */ 0xffff, /* ee49 */ 0xffff, /* ee4a */ 0xffff, /* ee4b */ 0xffff, /* ee4c */ 0xffff, /* ee4d */ 0xffff, /* ee4e */ 0xffff, /* ee4f */ 0xffff, /* ee50 */ 0xffff, /* ee51 */ 0xffff, /* ee52 */ 0xffff, /* ee53 */ 0xffff, /* ee54 */ 0xffff, /* ee55 */ 0xffff, /* ee56 */ 0xffff, /* ee57 */ 0xffff, /* ee58 */ 0xffff, /* ee59 */ 0xffff, /* ee5a */ 0xffff, /* ee5b */ 0xffff, /* ee5c */ 0xffff, /* ee5d */ 0xffff, /* ee5e */ 0xffff, /* ee5f */ 0xffff, /* ee60 */ 0xffff, /* ee61 */ 0xffff, /* ee62 */ 0xffff, /* ee63 */ 0xffff, /* ee64 */ 0xffff, /* ee65 */ 0xffff, /* ee66 */ 0xffff, /* ee67 */ 0xffff, /* ee68 */ 0xffff, /* ee69 */ 0xffff, /* ee6a */ 0xffff, /* ee6b */ 0xffff, /* ee6c */ 0xffff, /* ee6d */ 0xffff, /* ee6e */ 0xffff, /* ee6f */ 0xffff, /* ee70 */ 0xffff, /* ee71 */ 0xffff, /* ee72 */ 0xffff, /* ee73 */ 0xffff, /* ee74 */ 0xffff, /* ee75 */ 0xffff, /* ee76 */ 0xffff, /* ee77 */ 0xffff, /* ee78 */ 0xffff, /* ee79 */ 0xffff, /* ee7a */ 0xffff, /* ee7b */ 0xffff, /* ee7c */ 0xffff, /* ee7d */ 0xffff, /* ee7e */ 0xffff, /* ee7f */ 0xffff, /* ee80 */ 0xffff, /* ee81 */ 0xffff, /* ee82 */ 0xffff, /* ee83 */ 0xffff, /* ee84 */ 0xffff, /* ee85 */ 0xffff, /* ee86 */ 0xffff, /* ee87 */ 0xffff, /* ee88 */ 0xffff, /* ee89 */ 0xffff, /* ee8a */ 0xffff, /* ee8b */ 0xffff, /* ee8c */ 0xffff, /* ee8d */ 0xffff, /* ee8e */ 0xffff, /* ee8f */ 0xffff, /* ee90 */ 0xffff, /* ee91 */ 0xffff, /* ee92 */ 0xffff, /* ee93 */ 0xffff, /* ee94 */ 0xffff, /* ee95 */ 0xffff, /* ee96 */ 0xffff, /* ee97 */ 0xffff, /* ee98 */ 0xffff, /* ee99 */ 0xffff, /* ee9a */ 0xffff, /* ee9b */ 0xffff, /* ee9c */ 0xffff, /* ee9d */ 0xffff, /* ee9e */ 0xffff, /* ee9f */ 0xffff, /* eea0 */ 0xffff, /* eea1 */ 0xffff, /* eea2 */ 0xffff, /* eea3 */ 0xffff, /* eea4 */ 0xffff, /* eea5 */ 0xffff, /* eea6 */ 0xffff, /* eea7 */ 0xffff, /* eea8 */ 0xffff, /* eea9 */ 0xffff, /* eeaa */ 0xffff, /* eeab */ 0xffff, /* eeac */ 0xffff, /* eead */ 0xffff, /* eeae */ 0xffff, /* eeaf */ 0xffff, /* eeb0 */ 0xffff, /* eeb1 */ 0xffff, /* eeb2 */ 0xffff, /* eeb3 */ 0xffff, /* eeb4 */ 0xffff, /* eeb5 */ 0xffff, /* eeb6 */ 0xffff, /* eeb7 */ 0xffff, /* eeb8 */ 0xffff, /* eeb9 */ 0xffff, /* eeba */ 0xffff, /* eebb */ 0xffff, /* eebc */ 0xffff, /* eebd */ 0xffff, /* eebe */ 0xffff, /* eebf */ 0xffff, /* eec0 */ 0xffff, /* eec1 */ 0xffff, /* eec2 */ 0xffff, /* eec3 */ 0xffff, /* eec4 */ 0xffff, /* eec5 */ 0xffff, /* eec6 */ 0xffff, /* eec7 */ 0xffff, /* eec8 */ 0xffff, /* eec9 */ 0xffff, /* eeca */ 0xffff, /* eecb */ 0xffff, /* eecc */ 0xffff, /* eecd */ 0xffff, /* eece */ 0xffff, /* eecf */ 0xffff, /* eed0 */ 0xffff, /* eed1 */ 0xffff, /* eed2 */ 0xffff, /* eed3 */ 0xffff, /* eed4 */ 0xffff, /* eed5 */ 0xffff, /* eed6 */ 0xffff, /* eed7 */ 0xffff, /* eed8 */ 0xffff, /* eed9 */ 0xffff, /* eeda */ 0xffff, /* eedb */ 0xffff, /* eedc */ 0xffff, /* eedd */ 0xffff, /* eede */ 0xffff, /* eedf */ 0xffff, /* eee0 */ 0xffff, /* eee1 */ 0xffff, /* eee2 */ 0xffff, /* eee3 */ 0xffff, /* eee4 */ 0xffff, /* eee5 */ 0xffff, /* eee6 */ 0xffff, /* eee7 */ 0xffff, /* eee8 */ 0xffff, /* eee9 */ 0xffff, /* eeea */ 0xffff, /* eeeb */ 0xffff, /* eeec */ 0xffff, /* eeed */ 0xffff, /* eeee */ 0xffff, /* eeef */ 0xffff, /* eef0 */ 0xffff, /* eef1 */ 0xffff, /* eef2 */ 0xffff, /* eef3 */ 0xffff, /* eef4 */ 0xffff, /* eef5 */ 0xffff, /* eef6 */ 0xffff, /* eef7 */ 0xffff, /* eef8 */ 0xffff, /* eef9 */ 0xffff, /* eefa */ 0xffff, /* eefb */ 0xffff, /* eefc */ 0xffff, /* eefd */ 0xffff, /* eefe */ 0xffff, /* eeff */ 0xffff, /* ef00 */ 0xffff, /* ef01 */ 0xffff, /* ef02 */ 0xffff, /* ef03 */ 0xffff, /* ef04 */ 0xffff, /* ef05 */ 0xffff, /* ef06 */ 0xffff, /* ef07 */ 0xffff, /* ef08 */ 0xffff, /* ef09 */ 0xffff, /* ef0a */ 0xffff, /* ef0b */ 0xffff, /* ef0c */ 0xffff, /* ef0d */ 0xffff, /* ef0e */ 0xffff, /* ef0f */ 0xffff, /* ef10 */ 0xffff, /* ef11 */ 0xffff, /* ef12 */ 0xffff, /* ef13 */ 0xffff, /* ef14 */ 0xffff, /* ef15 */ 0xffff, /* ef16 */ 0xffff, /* ef17 */ 0xffff, /* ef18 */ 0xffff, /* ef19 */ 0xffff, /* ef1a */ 0xffff, /* ef1b */ 0xffff, /* ef1c */ 0xffff, /* ef1d */ 0xffff, /* ef1e */ 0xffff, /* ef1f */ 0xffff, /* ef20 */ 0xffff, /* ef21 */ 0xffff, /* ef22 */ 0xffff, /* ef23 */ 0xffff, /* ef24 */ 0xffff, /* ef25 */ 0xffff, /* ef26 */ 0xffff, /* ef27 */ 0xffff, /* ef28 */ 0xffff, /* ef29 */ 0xffff, /* ef2a */ 0xffff, /* ef2b */ 0xffff, /* ef2c */ 0xffff, /* ef2d */ 0xffff, /* ef2e */ 0xffff, /* ef2f */ 0xffff, /* ef30 */ 0xffff, /* ef31 */ 0xffff, /* ef32 */ 0xffff, /* ef33 */ 0xffff, /* ef34 */ 0xffff, /* ef35 */ 0xffff, /* ef36 */ 0xffff, /* ef37 */ 0xffff, /* ef38 */ 0xffff, /* ef39 */ 0xffff, /* ef3a */ 0xffff, /* ef3b */ 0xffff, /* ef3c */ 0xffff, /* ef3d */ 0xffff, /* ef3e */ 0xffff, /* ef3f */ 0xffff, /* ef40 */ 0xffff, /* ef41 */ 0xffff, /* ef42 */ 0xffff, /* ef43 */ 0xffff, /* ef44 */ 0xffff, /* ef45 */ 0xffff, /* ef46 */ 0xffff, /* ef47 */ 0xffff, /* ef48 */ 0xffff, /* ef49 */ 0xffff, /* ef4a */ 0xffff, /* ef4b */ 0xffff, /* ef4c */ 0xffff, /* ef4d */ 0xffff, /* ef4e */ 0xffff, /* ef4f */ 0xffff, /* ef50 */ 0xffff, /* ef51 */ 0xffff, /* ef52 */ 0xffff, /* ef53 */ 0xffff, /* ef54 */ 0xffff, /* ef55 */ 0xffff, /* ef56 */ 0xffff, /* ef57 */ 0xffff, /* ef58 */ 0xffff, /* ef59 */ 0xffff, /* ef5a */ 0xffff, /* ef5b */ 0xffff, /* ef5c */ 0xffff, /* ef5d */ 0xffff, /* ef5e */ 0xffff, /* ef5f */ 0xffff, /* ef60 */ 0xffff, /* ef61 */ 0xffff, /* ef62 */ 0xffff, /* ef63 */ 0xffff, /* ef64 */ 0xffff, /* ef65 */ 0xffff, /* ef66 */ 0xffff, /* ef67 */ 0xffff, /* ef68 */ 0xffff, /* ef69 */ 0xffff, /* ef6a */ 0xffff, /* ef6b */ 0xffff, /* ef6c */ 0xffff, /* ef6d */ 0xffff, /* ef6e */ 0xffff, /* ef6f */ 0xffff, /* ef70 */ 0xffff, /* ef71 */ 0xffff, /* ef72 */ 0xffff, /* ef73 */ 0xffff, /* ef74 */ 0xffff, /* ef75 */ 0xffff, /* ef76 */ 0xffff, /* ef77 */ 0xffff, /* ef78 */ 0xffff, /* ef79 */ 0xffff, /* ef7a */ 0xffff, /* ef7b */ 0xffff, /* ef7c */ 0xffff, /* ef7d */ 0xffff, /* ef7e */ 0xffff, /* ef7f */ 0xffff, /* ef80 */ 0xffff, /* ef81 */ 0xffff, /* ef82 */ 0xffff, /* ef83 */ 0xffff, /* ef84 */ 0xffff, /* ef85 */ 0xffff, /* ef86 */ 0xffff, /* ef87 */ 0xffff, /* ef88 */ 0xffff, /* ef89 */ 0xffff, /* ef8a */ 0xffff, /* ef8b */ 0xffff, /* ef8c */ 0xffff, /* ef8d */ 0xffff, /* ef8e */ 0xffff, /* ef8f */ 0xffff, /* ef90 */ 0xffff, /* ef91 */ 0xffff, /* ef92 */ 0xffff, /* ef93 */ 0xffff, /* ef94 */ 0xffff, /* ef95 */ 0xffff, /* ef96 */ 0xffff, /* ef97 */ 0xffff, /* ef98 */ 0xffff, /* ef99 */ 0xffff, /* ef9a */ 0xffff, /* ef9b */ 0xffff, /* ef9c */ 0xffff, /* ef9d */ 0xffff, /* ef9e */ 0xffff, /* ef9f */ 0xffff, /* efa0 */ 0xffff, /* efa1 */ 0xffff, /* efa2 */ 0xffff, /* efa3 */ 0xffff, /* efa4 */ 0xffff, /* efa5 */ 0xffff, /* efa6 */ 0xffff, /* efa7 */ 0xffff, /* efa8 */ 0xffff, /* efa9 */ 0xffff, /* efaa */ 0xffff, /* efab */ 0xffff, /* efac */ 0xffff, /* efad */ 0xffff, /* efae */ 0xffff, /* efaf */ 0xffff, /* efb0 */ 0xffff, /* efb1 */ 0xffff, /* efb2 */ 0xffff, /* efb3 */ 0xffff, /* efb4 */ 0xffff, /* efb5 */ 0xffff, /* efb6 */ 0xffff, /* efb7 */ 0xffff, /* efb8 */ 0xffff, /* efb9 */ 0xffff, /* efba */ 0xffff, /* efbb */ 0xffff, /* efbc */ 0xffff, /* efbd */ 0xffff, /* efbe */ 0xffff, /* efbf */ 0xffff, /* efc0 */ 0xffff, /* efc1 */ 0xffff, /* efc2 */ 0xffff, /* efc3 */ 0xffff, /* efc4 */ 0xffff, /* efc5 */ 0xffff, /* efc6 */ 0xffff, /* efc7 */ 0xffff, /* efc8 */ 0xffff, /* efc9 */ 0xffff, /* efca */ 0xffff, /* efcb */ 0xffff, /* efcc */ 0xffff, /* efcd */ 0xffff, /* efce */ 0xffff, /* efcf */ 0xffff, /* efd0 */ 0xffff, /* efd1 */ 0xffff, /* efd2 */ 0xffff, /* efd3 */ 0xffff, /* efd4 */ 0xffff, /* efd5 */ 0xffff, /* efd6 */ 0xffff, /* efd7 */ 0xffff, /* efd8 */ 0xffff, /* efd9 */ 0xffff, /* efda */ 0xffff, /* efdb */ 0xffff, /* efdc */ 0xffff, /* efdd */ 0xffff, /* efde */ 0xffff, /* efdf */ 0xffff, /* efe0 */ 0xffff, /* efe1 */ 0xffff, /* efe2 */ 0xffff, /* efe3 */ 0xffff, /* efe4 */ 0xffff, /* efe5 */ 0xffff, /* efe6 */ 0xffff, /* efe7 */ 0xffff, /* efe8 */ 0xffff, /* efe9 */ 0xffff, /* efea */ 0xffff, /* efeb */ 0xffff, /* efec */ 0xffff, /* efed */ 0xffff, /* efee */ 0xffff, /* efef */ 0xffff, /* eff0 */ 0xffff, /* eff1 */ 0xffff, /* eff2 */ 0xffff, /* eff3 */ 0xffff, /* eff4 */ 0xffff, /* eff5 */ 0xffff, /* eff6 */ 0xffff, /* eff7 */ 0xffff, /* eff8 */ 0xffff, /* eff9 */ 0xffff, /* effa */ 0xffff, /* effb */ 0xffff, /* effc */ 0xffff, /* effd */ 0xffff, /* effe */ 0xffff, /* efff */ 0xffff, /* f000 */ 0xffff, /* f001 */ 0xffff, /* f002 */ 0xffff, /* f003 */ 0xffff, /* f004 */ 0xffff, /* f005 */ 0xffff, /* f006 */ 0xffff, /* f007 */ 0xffff, /* f008 */ 0xffff, /* f009 */ 0xffff, /* f00a */ 0xffff, /* f00b */ 0xffff, /* f00c */ 0xffff, /* f00d */ 0xffff, /* f00e */ 0xffff, /* f00f */ 0xffff, /* f010 */ 0xffff, /* f011 */ 0xffff, /* f012 */ 0xffff, /* f013 */ 0xffff, /* f014 */ 0xffff, /* f015 */ 0xffff, /* f016 */ 0xffff, /* f017 */ 0xffff, /* f018 */ 0xffff, /* f019 */ 0xffff, /* f01a */ 0xffff, /* f01b */ 0xffff, /* f01c */ 0xffff, /* f01d */ 0xffff, /* f01e */ 0xffff, /* f01f */ 0xffff, /* f020 */ 0xffff, /* f021 */ 0xffff, /* f022 */ 0xffff, /* f023 */ 0xffff, /* f024 */ 0xffff, /* f025 */ 0xffff, /* f026 */ 0xffff, /* f027 */ 0xffff, /* f028 */ 0xffff, /* f029 */ 0xffff, /* f02a */ 0xffff, /* f02b */ 0xffff, /* f02c */ 0xffff, /* f02d */ 0xffff, /* f02e */ 0xffff, /* f02f */ 0xffff, /* f030 */ 0xffff, /* f031 */ 0xffff, /* f032 */ 0xffff, /* f033 */ 0xffff, /* f034 */ 0xffff, /* f035 */ 0xffff, /* f036 */ 0xffff, /* f037 */ 0xffff, /* f038 */ 0xffff, /* f039 */ 0xffff, /* f03a */ 0xffff, /* f03b */ 0xffff, /* f03c */ 0xffff, /* f03d */ 0xffff, /* f03e */ 0xffff, /* f03f */ 0xffff, /* f040 */ 0xffff, /* f041 */ 0xffff, /* f042 */ 0xffff, /* f043 */ 0xffff, /* f044 */ 0xffff, /* f045 */ 0xffff, /* f046 */ 0xffff, /* f047 */ 0xffff, /* f048 */ 0xffff, /* f049 */ 0xffff, /* f04a */ 0xffff, /* f04b */ 0xffff, /* f04c */ 0xffff, /* f04d */ 0xffff, /* f04e */ 0xffff, /* f04f */ 0xffff, /* f050 */ 0xffff, /* f051 */ 0xffff, /* f052 */ 0xffff, /* f053 */ 0xffff, /* f054 */ 0xffff, /* f055 */ 0xffff, /* f056 */ 0xffff, /* f057 */ 0xffff, /* f058 */ 0xffff, /* f059 */ 0xffff, /* f05a */ 0xffff, /* f05b */ 0xffff, /* f05c */ 0xffff, /* f05d */ 0xffff, /* f05e */ 0xffff, /* f05f */ 0xffff, /* f060 */ 0xffff, /* f061 */ 0xffff, /* f062 */ 0xffff, /* f063 */ 0xffff, /* f064 */ 0xffff, /* f065 */ 0xffff, /* f066 */ 0xffff, /* f067 */ 0xffff, /* f068 */ 0xffff, /* f069 */ 0xffff, /* f06a */ 0xffff, /* f06b */ 0xffff, /* f06c */ 0xffff, /* f06d */ 0xffff, /* f06e */ 0xffff, /* f06f */ 0xffff, /* f070 */ 0xffff, /* f071 */ 0xffff, /* f072 */ 0xffff, /* f073 */ 0xffff, /* f074 */ 0xffff, /* f075 */ 0xffff, /* f076 */ 0xffff, /* f077 */ 0xffff, /* f078 */ 0xffff, /* f079 */ 0xffff, /* f07a */ 0xffff, /* f07b */ 0xffff, /* f07c */ 0xffff, /* f07d */ 0xffff, /* f07e */ 0xffff, /* f07f */ 0xffff, /* f080 */ 0xffff, /* f081 */ 0xffff, /* f082 */ 0xffff, /* f083 */ 0xffff, /* f084 */ 0xffff, /* f085 */ 0xffff, /* f086 */ 0xffff, /* f087 */ 0xffff, /* f088 */ 0xffff, /* f089 */ 0xffff, /* f08a */ 0xffff, /* f08b */ 0xffff, /* f08c */ 0xffff, /* f08d */ 0xffff, /* f08e */ 0xffff, /* f08f */ 0xffff, /* f090 */ 0xffff, /* f091 */ 0xffff, /* f092 */ 0xffff, /* f093 */ 0xffff, /* f094 */ 0xffff, /* f095 */ 0xffff, /* f096 */ 0xffff, /* f097 */ 0xffff, /* f098 */ 0xffff, /* f099 */ 0xffff, /* f09a */ 0xffff, /* f09b */ 0xffff, /* f09c */ 0xffff, /* f09d */ 0xffff, /* f09e */ 0xffff, /* f09f */ 0xffff, /* f0a0 */ 0xffff, /* f0a1 */ 0xffff, /* f0a2 */ 0xffff, /* f0a3 */ 0xffff, /* f0a4 */ 0xffff, /* f0a5 */ 0xffff, /* f0a6 */ 0xffff, /* f0a7 */ 0xffff, /* f0a8 */ 0xffff, /* f0a9 */ 0xffff, /* f0aa */ 0xffff, /* f0ab */ 0xffff, /* f0ac */ 0xffff, /* f0ad */ 0xffff, /* f0ae */ 0xffff, /* f0af */ 0xffff, /* f0b0 */ 0xffff, /* f0b1 */ 0xffff, /* f0b2 */ 0xffff, /* f0b3 */ 0xffff, /* f0b4 */ 0xffff, /* f0b5 */ 0xffff, /* f0b6 */ 0xffff, /* f0b7 */ 0xffff, /* f0b8 */ 0xffff, /* f0b9 */ 0xffff, /* f0ba */ 0xffff, /* f0bb */ 0xffff, /* f0bc */ 0xffff, /* f0bd */ 0xffff, /* f0be */ 0xffff, /* f0bf */ 0xffff, /* f0c0 */ 0xffff, /* f0c1 */ 0xffff, /* f0c2 */ 0xffff, /* f0c3 */ 0xffff, /* f0c4 */ 0xffff, /* f0c5 */ 0xffff, /* f0c6 */ 0xffff, /* f0c7 */ 0xffff, /* f0c8 */ 0xffff, /* f0c9 */ 0xffff, /* f0ca */ 0xffff, /* f0cb */ 0xffff, /* f0cc */ 0xffff, /* f0cd */ 0xffff, /* f0ce */ 0xffff, /* f0cf */ 0xffff, /* f0d0 */ 0xffff, /* f0d1 */ 0xffff, /* f0d2 */ 0xffff, /* f0d3 */ 0xffff, /* f0d4 */ 0xffff, /* f0d5 */ 0xffff, /* f0d6 */ 0xffff, /* f0d7 */ 0xffff, /* f0d8 */ 0xffff, /* f0d9 */ 0xffff, /* f0da */ 0xffff, /* f0db */ 0xffff, /* f0dc */ 0xffff, /* f0dd */ 0xffff, /* f0de */ 0xffff, /* f0df */ 0xffff, /* f0e0 */ 0xffff, /* f0e1 */ 0xffff, /* f0e2 */ 0xffff, /* f0e3 */ 0xffff, /* f0e4 */ 0xffff, /* f0e5 */ 0xffff, /* f0e6 */ 0xffff, /* f0e7 */ 0xffff, /* f0e8 */ 0xffff, /* f0e9 */ 0xffff, /* f0ea */ 0xffff, /* f0eb */ 0xffff, /* f0ec */ 0xffff, /* f0ed */ 0xffff, /* f0ee */ 0xffff, /* f0ef */ 0xffff, /* f0f0 */ 0xffff, /* f0f1 */ 0xffff, /* f0f2 */ 0xffff, /* f0f3 */ 0xffff, /* f0f4 */ 0xffff, /* f0f5 */ 0xffff, /* f0f6 */ 0xffff, /* f0f7 */ 0xffff, /* f0f8 */ 0xffff, /* f0f9 */ 0xffff, /* f0fa */ 0xffff, /* f0fb */ 0xffff, /* f0fc */ 0xffff, /* f0fd */ 0xffff, /* f0fe */ 0xffff, /* f0ff */ 0xffff, /* f100 */ 0xffff, /* f101 */ 0xffff, /* f102 */ 0xffff, /* f103 */ 0xffff, /* f104 */ 0xffff, /* f105 */ 0xffff, /* f106 */ 0xffff, /* f107 */ 0xffff, /* f108 */ 0xffff, /* f109 */ 0xffff, /* f10a */ 0xffff, /* f10b */ 0xffff, /* f10c */ 0xffff, /* f10d */ 0xffff, /* f10e */ 0xffff, /* f10f */ 0xffff, /* f110 */ 0xffff, /* f111 */ 0xffff, /* f112 */ 0xffff, /* f113 */ 0xffff, /* f114 */ 0xffff, /* f115 */ 0xffff, /* f116 */ 0xffff, /* f117 */ 0xffff, /* f118 */ 0xffff, /* f119 */ 0xffff, /* f11a */ 0xffff, /* f11b */ 0xffff, /* f11c */ 0xffff, /* f11d */ 0xffff, /* f11e */ 0xffff, /* f11f */ 0xffff, /* f120 */ 0xffff, /* f121 */ 0xffff, /* f122 */ 0xffff, /* f123 */ 0xffff, /* f124 */ 0xffff, /* f125 */ 0xffff, /* f126 */ 0xffff, /* f127 */ 0xffff, /* f128 */ 0xffff, /* f129 */ 0xffff, /* f12a */ 0xffff, /* f12b */ 0xffff, /* f12c */ 0xffff, /* f12d */ 0xffff, /* f12e */ 0xffff, /* f12f */ 0xffff, /* f130 */ 0xffff, /* f131 */ 0xffff, /* f132 */ 0xffff, /* f133 */ 0xffff, /* f134 */ 0xffff, /* f135 */ 0xffff, /* f136 */ 0xffff, /* f137 */ 0xffff, /* f138 */ 0xffff, /* f139 */ 0xffff, /* f13a */ 0xffff, /* f13b */ 0xffff, /* f13c */ 0xffff, /* f13d */ 0xffff, /* f13e */ 0xffff, /* f13f */ 0xffff, /* f140 */ 0xffff, /* f141 */ 0xffff, /* f142 */ 0xffff, /* f143 */ 0xffff, /* f144 */ 0xffff, /* f145 */ 0xffff, /* f146 */ 0xffff, /* f147 */ 0xffff, /* f148 */ 0xffff, /* f149 */ 0xffff, /* f14a */ 0xffff, /* f14b */ 0xffff, /* f14c */ 0xffff, /* f14d */ 0xffff, /* f14e */ 0xffff, /* f14f */ 0xffff, /* f150 */ 0xffff, /* f151 */ 0xffff, /* f152 */ 0xffff, /* f153 */ 0xffff, /* f154 */ 0xffff, /* f155 */ 0xffff, /* f156 */ 0xffff, /* f157 */ 0xffff, /* f158 */ 0xffff, /* f159 */ 0xffff, /* f15a */ 0xffff, /* f15b */ 0xffff, /* f15c */ 0xffff, /* f15d */ 0xffff, /* f15e */ 0xffff, /* f15f */ 0xffff, /* f160 */ 0xffff, /* f161 */ 0xffff, /* f162 */ 0xffff, /* f163 */ 0xffff, /* f164 */ 0xffff, /* f165 */ 0xffff, /* f166 */ 0xffff, /* f167 */ 0xffff, /* f168 */ 0xffff, /* f169 */ 0xffff, /* f16a */ 0xffff, /* f16b */ 0xffff, /* f16c */ 0xffff, /* f16d */ 0xffff, /* f16e */ 0xffff, /* f16f */ 0xffff, /* f170 */ 0xffff, /* f171 */ 0xffff, /* f172 */ 0xffff, /* f173 */ 0xffff, /* f174 */ 0xffff, /* f175 */ 0xffff, /* f176 */ 0xffff, /* f177 */ 0xffff, /* f178 */ 0xffff, /* f179 */ 0xffff, /* f17a */ 0xffff, /* f17b */ 0xffff, /* f17c */ 0xffff, /* f17d */ 0xffff, /* f17e */ 0xffff, /* f17f */ 0xffff, /* f180 */ 0xffff, /* f181 */ 0xffff, /* f182 */ 0xffff, /* f183 */ 0xffff, /* f184 */ 0xffff, /* f185 */ 0xffff, /* f186 */ 0xffff, /* f187 */ 0xffff, /* f188 */ 0xffff, /* f189 */ 0xffff, /* f18a */ 0xffff, /* f18b */ 0xffff, /* f18c */ 0xffff, /* f18d */ 0xffff, /* f18e */ 0xffff, /* f18f */ 0xffff, /* f190 */ 0xffff, /* f191 */ 0xffff, /* f192 */ 0xffff, /* f193 */ 0xffff, /* f194 */ 0xffff, /* f195 */ 0xffff, /* f196 */ 0xffff, /* f197 */ 0xffff, /* f198 */ 0xffff, /* f199 */ 0xffff, /* f19a */ 0xffff, /* f19b */ 0xffff, /* f19c */ 0xffff, /* f19d */ 0xffff, /* f19e */ 0xffff, /* f19f */ 0xffff, /* f1a0 */ 0xffff, /* f1a1 */ 0xffff, /* f1a2 */ 0xffff, /* f1a3 */ 0xffff, /* f1a4 */ 0xffff, /* f1a5 */ 0xffff, /* f1a6 */ 0xffff, /* f1a7 */ 0xffff, /* f1a8 */ 0xffff, /* f1a9 */ 0xffff, /* f1aa */ 0xffff, /* f1ab */ 0xffff, /* f1ac */ 0xffff, /* f1ad */ 0xffff, /* f1ae */ 0xffff, /* f1af */ 0xffff, /* f1b0 */ 0xffff, /* f1b1 */ 0xffff, /* f1b2 */ 0xffff, /* f1b3 */ 0xffff, /* f1b4 */ 0xffff, /* f1b5 */ 0xffff, /* f1b6 */ 0xffff, /* f1b7 */ 0xffff, /* f1b8 */ 0xffff, /* f1b9 */ 0xffff, /* f1ba */ 0xffff, /* f1bb */ 0xffff, /* f1bc */ 0xffff, /* f1bd */ 0xffff, /* f1be */ 0xffff, /* f1bf */ 0xffff, /* f1c0 */ 0xffff, /* f1c1 */ 0xffff, /* f1c2 */ 0xffff, /* f1c3 */ 0xffff, /* f1c4 */ 0xffff, /* f1c5 */ 0xffff, /* f1c6 */ 0xffff, /* f1c7 */ 0xffff, /* f1c8 */ 0xffff, /* f1c9 */ 0xffff, /* f1ca */ 0xffff, /* f1cb */ 0xffff, /* f1cc */ 0xffff, /* f1cd */ 0xffff, /* f1ce */ 0xffff, /* f1cf */ 0xffff, /* f1d0 */ 0xffff, /* f1d1 */ 0xffff, /* f1d2 */ 0xffff, /* f1d3 */ 0xffff, /* f1d4 */ 0xffff, /* f1d5 */ 0xffff, /* f1d6 */ 0xffff, /* f1d7 */ 0xffff, /* f1d8 */ 0xffff, /* f1d9 */ 0xffff, /* f1da */ 0xffff, /* f1db */ 0xffff, /* f1dc */ 0xffff, /* f1dd */ 0xffff, /* f1de */ 0xffff, /* f1df */ 0xffff, /* f1e0 */ 0xffff, /* f1e1 */ 0xffff, /* f1e2 */ 0xffff, /* f1e3 */ 0xffff, /* f1e4 */ 0xffff, /* f1e5 */ 0xffff, /* f1e6 */ 0xffff, /* f1e7 */ 0xffff, /* f1e8 */ 0xffff, /* f1e9 */ 0xffff, /* f1ea */ 0xffff, /* f1eb */ 0xffff, /* f1ec */ 0xffff, /* f1ed */ 0xffff, /* f1ee */ 0xffff, /* f1ef */ 0xffff, /* f1f0 */ 0xffff, /* f1f1 */ 0xffff, /* f1f2 */ 0xffff, /* f1f3 */ 0xffff, /* f1f4 */ 0xffff, /* f1f5 */ 0xffff, /* f1f6 */ 0xffff, /* f1f7 */ 0xffff, /* f1f8 */ 0xffff, /* f1f9 */ 0xffff, /* f1fa */ 0xffff, /* f1fb */ 0xffff, /* f1fc */ 0xffff, /* f1fd */ 0xffff, /* f1fe */ 0xffff, /* f1ff */ 0xffff, /* f200 */ 0xffff, /* f201 */ 0xffff, /* f202 */ 0xffff, /* f203 */ 0xffff, /* f204 */ 0xffff, /* f205 */ 0xffff, /* f206 */ 0xffff, /* f207 */ 0xffff, /* f208 */ 0xffff, /* f209 */ 0xffff, /* f20a */ 0xffff, /* f20b */ 0xffff, /* f20c */ 0xffff, /* f20d */ 0xffff, /* f20e */ 0xffff, /* f20f */ 0xffff, /* f210 */ 0xffff, /* f211 */ 0xffff, /* f212 */ 0xffff, /* f213 */ 0xffff, /* f214 */ 0xffff, /* f215 */ 0xffff, /* f216 */ 0xffff, /* f217 */ 0xffff, /* f218 */ 0xffff, /* f219 */ 0xffff, /* f21a */ 0xffff, /* f21b */ 0xffff, /* f21c */ 0xffff, /* f21d */ 0xffff, /* f21e */ 0xffff, /* f21f */ 0xffff, /* f220 */ 0xffff, /* f221 */ 0xffff, /* f222 */ 0xffff, /* f223 */ 0xffff, /* f224 */ 0xffff, /* f225 */ 0xffff, /* f226 */ 0xffff, /* f227 */ 0xffff, /* f228 */ 0xffff, /* f229 */ 0xffff, /* f22a */ 0xffff, /* f22b */ 0xffff, /* f22c */ 0xffff, /* f22d */ 0xffff, /* f22e */ 0xffff, /* f22f */ 0xffff, /* f230 */ 0xffff, /* f231 */ 0xffff, /* f232 */ 0xffff, /* f233 */ 0xffff, /* f234 */ 0xffff, /* f235 */ 0xffff, /* f236 */ 0xffff, /* f237 */ 0xffff, /* f238 */ 0xffff, /* f239 */ 0xffff, /* f23a */ 0xffff, /* f23b */ 0xffff, /* f23c */ 0xffff, /* f23d */ 0xffff, /* f23e */ 0xffff, /* f23f */ 0xffff, /* f240 */ 0xffff, /* f241 */ 0xffff, /* f242 */ 0xffff, /* f243 */ 0xffff, /* f244 */ 0xffff, /* f245 */ 0xffff, /* f246 */ 0xffff, /* f247 */ 0xffff, /* f248 */ 0xffff, /* f249 */ 0xffff, /* f24a */ 0xffff, /* f24b */ 0xffff, /* f24c */ 0xffff, /* f24d */ 0xffff, /* f24e */ 0xffff, /* f24f */ 0xffff, /* f250 */ 0xffff, /* f251 */ 0xffff, /* f252 */ 0xffff, /* f253 */ 0xffff, /* f254 */ 0xffff, /* f255 */ 0xffff, /* f256 */ 0xffff, /* f257 */ 0xffff, /* f258 */ 0xffff, /* f259 */ 0xffff, /* f25a */ 0xffff, /* f25b */ 0xffff, /* f25c */ 0xffff, /* f25d */ 0xffff, /* f25e */ 0xffff, /* f25f */ 0xffff, /* f260 */ 0xffff, /* f261 */ 0xffff, /* f262 */ 0xffff, /* f263 */ 0xffff, /* f264 */ 0xffff, /* f265 */ 0xffff, /* f266 */ 0xffff, /* f267 */ 0xffff, /* f268 */ 0xffff, /* f269 */ 0xffff, /* f26a */ 0xffff, /* f26b */ 0xffff, /* f26c */ 0xffff, /* f26d */ 0xffff, /* f26e */ 0xffff, /* f26f */ 0xffff, /* f270 */ 0xffff, /* f271 */ 0xffff, /* f272 */ 0xffff, /* f273 */ 0xffff, /* f274 */ 0xffff, /* f275 */ 0xffff, /* f276 */ 0xffff, /* f277 */ 0xffff, /* f278 */ 0xffff, /* f279 */ 0xffff, /* f27a */ 0xffff, /* f27b */ 0xffff, /* f27c */ 0xffff, /* f27d */ 0xffff, /* f27e */ 0xffff, /* f27f */ 0xffff, /* f280 */ 0xffff, /* f281 */ 0xffff, /* f282 */ 0xffff, /* f283 */ 0xffff, /* f284 */ 0xffff, /* f285 */ 0xffff, /* f286 */ 0xffff, /* f287 */ 0xffff, /* f288 */ 0xffff, /* f289 */ 0xffff, /* f28a */ 0xffff, /* f28b */ 0xffff, /* f28c */ 0xffff, /* f28d */ 0xffff, /* f28e */ 0xffff, /* f28f */ 0xffff, /* f290 */ 0xffff, /* f291 */ 0xffff, /* f292 */ 0xffff, /* f293 */ 0xffff, /* f294 */ 0xffff, /* f295 */ 0xffff, /* f296 */ 0xffff, /* f297 */ 0xffff, /* f298 */ 0xffff, /* f299 */ 0xffff, /* f29a */ 0xffff, /* f29b */ 0xffff, /* f29c */ 0xffff, /* f29d */ 0xffff, /* f29e */ 0xffff, /* f29f */ 0xffff, /* f2a0 */ 0xffff, /* f2a1 */ 0xffff, /* f2a2 */ 0xffff, /* f2a3 */ 0xffff, /* f2a4 */ 0xffff, /* f2a5 */ 0xffff, /* f2a6 */ 0xffff, /* f2a7 */ 0xffff, /* f2a8 */ 0xffff, /* f2a9 */ 0xffff, /* f2aa */ 0xffff, /* f2ab */ 0xffff, /* f2ac */ 0xffff, /* f2ad */ 0xffff, /* f2ae */ 0xffff, /* f2af */ 0xffff, /* f2b0 */ 0xffff, /* f2b1 */ 0xffff, /* f2b2 */ 0xffff, /* f2b3 */ 0xffff, /* f2b4 */ 0xffff, /* f2b5 */ 0xffff, /* f2b6 */ 0xffff, /* f2b7 */ 0xffff, /* f2b8 */ 0xffff, /* f2b9 */ 0xffff, /* f2ba */ 0xffff, /* f2bb */ 0xffff, /* f2bc */ 0xffff, /* f2bd */ 0xffff, /* f2be */ 0xffff, /* f2bf */ 0xffff, /* f2c0 */ 0xffff, /* f2c1 */ 0xffff, /* f2c2 */ 0xffff, /* f2c3 */ 0xffff, /* f2c4 */ 0xffff, /* f2c5 */ 0xffff, /* f2c6 */ 0xffff, /* f2c7 */ 0xffff, /* f2c8 */ 0xffff, /* f2c9 */ 0xffff, /* f2ca */ 0xffff, /* f2cb */ 0xffff, /* f2cc */ 0xffff, /* f2cd */ 0xffff, /* f2ce */ 0xffff, /* f2cf */ 0xffff, /* f2d0 */ 0xffff, /* f2d1 */ 0xffff, /* f2d2 */ 0xffff, /* f2d3 */ 0xffff, /* f2d4 */ 0xffff, /* f2d5 */ 0xffff, /* f2d6 */ 0xffff, /* f2d7 */ 0xffff, /* f2d8 */ 0xffff, /* f2d9 */ 0xffff, /* f2da */ 0xffff, /* f2db */ 0xffff, /* f2dc */ 0xffff, /* f2dd */ 0xffff, /* f2de */ 0xffff, /* f2df */ 0xffff, /* f2e0 */ 0xffff, /* f2e1 */ 0xffff, /* f2e2 */ 0xffff, /* f2e3 */ 0xffff, /* f2e4 */ 0xffff, /* f2e5 */ 0xffff, /* f2e6 */ 0xffff, /* f2e7 */ 0xffff, /* f2e8 */ 0xffff, /* f2e9 */ 0xffff, /* f2ea */ 0xffff, /* f2eb */ 0xffff, /* f2ec */ 0xffff, /* f2ed */ 0xffff, /* f2ee */ 0xffff, /* f2ef */ 0xffff, /* f2f0 */ 0xffff, /* f2f1 */ 0xffff, /* f2f2 */ 0xffff, /* f2f3 */ 0xffff, /* f2f4 */ 0xffff, /* f2f5 */ 0xffff, /* f2f6 */ 0xffff, /* f2f7 */ 0xffff, /* f2f8 */ 0xffff, /* f2f9 */ 0xffff, /* f2fa */ 0xffff, /* f2fb */ 0xffff, /* f2fc */ 0xffff, /* f2fd */ 0xffff, /* f2fe */ 0xffff, /* f2ff */ 0xffff, /* f300 */ 0xffff, /* f301 */ 0xffff, /* f302 */ 0xffff, /* f303 */ 0xffff, /* f304 */ 0xffff, /* f305 */ 0xffff, /* f306 */ 0xffff, /* f307 */ 0xffff, /* f308 */ 0xffff, /* f309 */ 0xffff, /* f30a */ 0xffff, /* f30b */ 0xffff, /* f30c */ 0xffff, /* f30d */ 0xffff, /* f30e */ 0xffff, /* f30f */ 0xffff, /* f310 */ 0xffff, /* f311 */ 0xffff, /* f312 */ 0xffff, /* f313 */ 0xffff, /* f314 */ 0xffff, /* f315 */ 0xffff, /* f316 */ 0xffff, /* f317 */ 0xffff, /* f318 */ 0xffff, /* f319 */ 0xffff, /* f31a */ 0xffff, /* f31b */ 0xffff, /* f31c */ 0xffff, /* f31d */ 0xffff, /* f31e */ 0xffff, /* f31f */ 0xffff, /* f320 */ 0xffff, /* f321 */ 0xffff, /* f322 */ 0xffff, /* f323 */ 0xffff, /* f324 */ 0xffff, /* f325 */ 0xffff, /* f326 */ 0xffff, /* f327 */ 0xffff, /* f328 */ 0xffff, /* f329 */ 0xffff, /* f32a */ 0xffff, /* f32b */ 0xffff, /* f32c */ 0xffff, /* f32d */ 0xffff, /* f32e */ 0xffff, /* f32f */ 0xffff, /* f330 */ 0xffff, /* f331 */ 0xffff, /* f332 */ 0xffff, /* f333 */ 0xffff, /* f334 */ 0xffff, /* f335 */ 0xffff, /* f336 */ 0xffff, /* f337 */ 0xffff, /* f338 */ 0xffff, /* f339 */ 0xffff, /* f33a */ 0xffff, /* f33b */ 0xffff, /* f33c */ 0xffff, /* f33d */ 0xffff, /* f33e */ 0xffff, /* f33f */ 0xffff, /* f340 */ 0xffff, /* f341 */ 0xffff, /* f342 */ 0xffff, /* f343 */ 0xffff, /* f344 */ 0xffff, /* f345 */ 0xffff, /* f346 */ 0xffff, /* f347 */ 0xffff, /* f348 */ 0xffff, /* f349 */ 0xffff, /* f34a */ 0xffff, /* f34b */ 0xffff, /* f34c */ 0xffff, /* f34d */ 0xffff, /* f34e */ 0xffff, /* f34f */ 0xffff, /* f350 */ 0xffff, /* f351 */ 0xffff, /* f352 */ 0xffff, /* f353 */ 0xffff, /* f354 */ 0xffff, /* f355 */ 0xffff, /* f356 */ 0xffff, /* f357 */ 0xffff, /* f358 */ 0xffff, /* f359 */ 0xffff, /* f35a */ 0xffff, /* f35b */ 0xffff, /* f35c */ 0xffff, /* f35d */ 0xffff, /* f35e */ 0xffff, /* f35f */ 0xffff, /* f360 */ 0xffff, /* f361 */ 0xffff, /* f362 */ 0xffff, /* f363 */ 0xffff, /* f364 */ 0xffff, /* f365 */ 0xffff, /* f366 */ 0xffff, /* f367 */ 0xffff, /* f368 */ 0xffff, /* f369 */ 0xffff, /* f36a */ 0xffff, /* f36b */ 0xffff, /* f36c */ 0xffff, /* f36d */ 0xffff, /* f36e */ 0xffff, /* f36f */ 0xffff, /* f370 */ 0xffff, /* f371 */ 0xffff, /* f372 */ 0xffff, /* f373 */ 0xffff, /* f374 */ 0xffff, /* f375 */ 0xffff, /* f376 */ 0xffff, /* f377 */ 0xffff, /* f378 */ 0xffff, /* f379 */ 0xffff, /* f37a */ 0xffff, /* f37b */ 0xffff, /* f37c */ 0xffff, /* f37d */ 0xffff, /* f37e */ 0xffff, /* f37f */ 0xffff, /* f380 */ 0xffff, /* f381 */ 0xffff, /* f382 */ 0xffff, /* f383 */ 0xffff, /* f384 */ 0xffff, /* f385 */ 0xffff, /* f386 */ 0xffff, /* f387 */ 0xffff, /* f388 */ 0xffff, /* f389 */ 0xffff, /* f38a */ 0xffff, /* f38b */ 0xffff, /* f38c */ 0xffff, /* f38d */ 0xffff, /* f38e */ 0xffff, /* f38f */ 0xffff, /* f390 */ 0xffff, /* f391 */ 0xffff, /* f392 */ 0xffff, /* f393 */ 0xffff, /* f394 */ 0xffff, /* f395 */ 0xffff, /* f396 */ 0xffff, /* f397 */ 0xffff, /* f398 */ 0xffff, /* f399 */ 0xffff, /* f39a */ 0xffff, /* f39b */ 0xffff, /* f39c */ 0xffff, /* f39d */ 0xffff, /* f39e */ 0xffff, /* f39f */ 0xffff, /* f3a0 */ 0xffff, /* f3a1 */ 0xffff, /* f3a2 */ 0xffff, /* f3a3 */ 0xffff, /* f3a4 */ 0xffff, /* f3a5 */ 0xffff, /* f3a6 */ 0xffff, /* f3a7 */ 0xffff, /* f3a8 */ 0xffff, /* f3a9 */ 0xffff, /* f3aa */ 0xffff, /* f3ab */ 0xffff, /* f3ac */ 0xffff, /* f3ad */ 0xffff, /* f3ae */ 0xffff, /* f3af */ 0xffff, /* f3b0 */ 0xffff, /* f3b1 */ 0xffff, /* f3b2 */ 0xffff, /* f3b3 */ 0xffff, /* f3b4 */ 0xffff, /* f3b5 */ 0xffff, /* f3b6 */ 0xffff, /* f3b7 */ 0xffff, /* f3b8 */ 0xffff, /* f3b9 */ 0xffff, /* f3ba */ 0xffff, /* f3bb */ 0xffff, /* f3bc */ 0xffff, /* f3bd */ 0xffff, /* f3be */ 0xffff, /* f3bf */ 0xffff, /* f3c0 */ 0xffff, /* f3c1 */ 0xffff, /* f3c2 */ 0xffff, /* f3c3 */ 0xffff, /* f3c4 */ 0xffff, /* f3c5 */ 0xffff, /* f3c6 */ 0xffff, /* f3c7 */ 0xffff, /* f3c8 */ 0xffff, /* f3c9 */ 0xffff, /* f3ca */ 0xffff, /* f3cb */ 0xffff, /* f3cc */ 0xffff, /* f3cd */ 0xffff, /* f3ce */ 0xffff, /* f3cf */ 0xffff, /* f3d0 */ 0xffff, /* f3d1 */ 0xffff, /* f3d2 */ 0xffff, /* f3d3 */ 0xffff, /* f3d4 */ 0xffff, /* f3d5 */ 0xffff, /* f3d6 */ 0xffff, /* f3d7 */ 0xffff, /* f3d8 */ 0xffff, /* f3d9 */ 0xffff, /* f3da */ 0xffff, /* f3db */ 0xffff, /* f3dc */ 0xffff, /* f3dd */ 0xffff, /* f3de */ 0xffff, /* f3df */ 0xffff, /* f3e0 */ 0xffff, /* f3e1 */ 0xffff, /* f3e2 */ 0xffff, /* f3e3 */ 0xffff, /* f3e4 */ 0xffff, /* f3e5 */ 0xffff, /* f3e6 */ 0xffff, /* f3e7 */ 0xffff, /* f3e8 */ 0xffff, /* f3e9 */ 0xffff, /* f3ea */ 0xffff, /* f3eb */ 0xffff, /* f3ec */ 0xffff, /* f3ed */ 0xffff, /* f3ee */ 0xffff, /* f3ef */ 0xffff, /* f3f0 */ 0xffff, /* f3f1 */ 0xffff, /* f3f2 */ 0xffff, /* f3f3 */ 0xffff, /* f3f4 */ 0xffff, /* f3f5 */ 0xffff, /* f3f6 */ 0xffff, /* f3f7 */ 0xffff, /* f3f8 */ 0xffff, /* f3f9 */ 0xffff, /* f3fa */ 0xffff, /* f3fb */ 0xffff, /* f3fc */ 0xffff, /* f3fd */ 0xffff, /* f3fe */ 0xffff, /* f3ff */ 0xffff, /* f400 */ 0xffff, /* f401 */ 0xffff, /* f402 */ 0xffff, /* f403 */ 0xffff, /* f404 */ 0xffff, /* f405 */ 0xffff, /* f406 */ 0xffff, /* f407 */ 0xffff, /* f408 */ 0xffff, /* f409 */ 0xffff, /* f40a */ 0xffff, /* f40b */ 0xffff, /* f40c */ 0xffff, /* f40d */ 0xffff, /* f40e */ 0xffff, /* f40f */ 0xffff, /* f410 */ 0xffff, /* f411 */ 0xffff, /* f412 */ 0xffff, /* f413 */ 0xffff, /* f414 */ 0xffff, /* f415 */ 0xffff, /* f416 */ 0xffff, /* f417 */ 0xffff, /* f418 */ 0xffff, /* f419 */ 0xffff, /* f41a */ 0xffff, /* f41b */ 0xffff, /* f41c */ 0xffff, /* f41d */ 0xffff, /* f41e */ 0xffff, /* f41f */ 0xffff, /* f420 */ 0xffff, /* f421 */ 0xffff, /* f422 */ 0xffff, /* f423 */ 0xffff, /* f424 */ 0xffff, /* f425 */ 0xffff, /* f426 */ 0xffff, /* f427 */ 0xffff, /* f428 */ 0xffff, /* f429 */ 0xffff, /* f42a */ 0xffff, /* f42b */ 0xffff, /* f42c */ 0xffff, /* f42d */ 0xffff, /* f42e */ 0xffff, /* f42f */ 0xffff, /* f430 */ 0xffff, /* f431 */ 0xffff, /* f432 */ 0xffff, /* f433 */ 0xffff, /* f434 */ 0xffff, /* f435 */ 0xffff, /* f436 */ 0xffff, /* f437 */ 0xffff, /* f438 */ 0xffff, /* f439 */ 0xffff, /* f43a */ 0xffff, /* f43b */ 0xffff, /* f43c */ 0xffff, /* f43d */ 0xffff, /* f43e */ 0xffff, /* f43f */ 0xffff, /* f440 */ 0xffff, /* f441 */ 0xffff, /* f442 */ 0xffff, /* f443 */ 0xffff, /* f444 */ 0xffff, /* f445 */ 0xffff, /* f446 */ 0xffff, /* f447 */ 0xffff, /* f448 */ 0xffff, /* f449 */ 0xffff, /* f44a */ 0xffff, /* f44b */ 0xffff, /* f44c */ 0xffff, /* f44d */ 0xffff, /* f44e */ 0xffff, /* f44f */ 0xffff, /* f450 */ 0xffff, /* f451 */ 0xffff, /* f452 */ 0xffff, /* f453 */ 0xffff, /* f454 */ 0xffff, /* f455 */ 0xffff, /* f456 */ 0xffff, /* f457 */ 0xffff, /* f458 */ 0xffff, /* f459 */ 0xffff, /* f45a */ 0xffff, /* f45b */ 0xffff, /* f45c */ 0xffff, /* f45d */ 0xffff, /* f45e */ 0xffff, /* f45f */ 0xffff, /* f460 */ 0xffff, /* f461 */ 0xffff, /* f462 */ 0xffff, /* f463 */ 0xffff, /* f464 */ 0xffff, /* f465 */ 0xffff, /* f466 */ 0xffff, /* f467 */ 0xffff, /* f468 */ 0xffff, /* f469 */ 0xffff, /* f46a */ 0xffff, /* f46b */ 0xffff, /* f46c */ 0xffff, /* f46d */ 0xffff, /* f46e */ 0xffff, /* f46f */ 0xffff, /* f470 */ 0xffff, /* f471 */ 0xffff, /* f472 */ 0xffff, /* f473 */ 0xffff, /* f474 */ 0xffff, /* f475 */ 0xffff, /* f476 */ 0xffff, /* f477 */ 0xffff, /* f478 */ 0xffff, /* f479 */ 0xffff, /* f47a */ 0xffff, /* f47b */ 0xffff, /* f47c */ 0xffff, /* f47d */ 0xffff, /* f47e */ 0xffff, /* f47f */ 0xffff, /* f480 */ 0xffff, /* f481 */ 0xffff, /* f482 */ 0xffff, /* f483 */ 0xffff, /* f484 */ 0xffff, /* f485 */ 0xffff, /* f486 */ 0xffff, /* f487 */ 0xffff, /* f488 */ 0xffff, /* f489 */ 0xffff, /* f48a */ 0xffff, /* f48b */ 0xffff, /* f48c */ 0xffff, /* f48d */ 0xffff, /* f48e */ 0xffff, /* f48f */ 0xffff, /* f490 */ 0xffff, /* f491 */ 0xffff, /* f492 */ 0xffff, /* f493 */ 0xffff, /* f494 */ 0xffff, /* f495 */ 0xffff, /* f496 */ 0xffff, /* f497 */ 0xffff, /* f498 */ 0xffff, /* f499 */ 0xffff, /* f49a */ 0xffff, /* f49b */ 0xffff, /* f49c */ 0xffff, /* f49d */ 0xffff, /* f49e */ 0xffff, /* f49f */ 0xffff, /* f4a0 */ 0xffff, /* f4a1 */ 0xffff, /* f4a2 */ 0xffff, /* f4a3 */ 0xffff, /* f4a4 */ 0xffff, /* f4a5 */ 0xffff, /* f4a6 */ 0xffff, /* f4a7 */ 0xffff, /* f4a8 */ 0xffff, /* f4a9 */ 0xffff, /* f4aa */ 0xffff, /* f4ab */ 0xffff, /* f4ac */ 0xffff, /* f4ad */ 0xffff, /* f4ae */ 0xffff, /* f4af */ 0xffff, /* f4b0 */ 0xffff, /* f4b1 */ 0xffff, /* f4b2 */ 0xffff, /* f4b3 */ 0xffff, /* f4b4 */ 0xffff, /* f4b5 */ 0xffff, /* f4b6 */ 0xffff, /* f4b7 */ 0xffff, /* f4b8 */ 0xffff, /* f4b9 */ 0xffff, /* f4ba */ 0xffff, /* f4bb */ 0xffff, /* f4bc */ 0xffff, /* f4bd */ 0xffff, /* f4be */ 0xffff, /* f4bf */ 0xffff, /* f4c0 */ 0xffff, /* f4c1 */ 0xffff, /* f4c2 */ 0xffff, /* f4c3 */ 0xffff, /* f4c4 */ 0xffff, /* f4c5 */ 0xffff, /* f4c6 */ 0xffff, /* f4c7 */ 0xffff, /* f4c8 */ 0xffff, /* f4c9 */ 0xffff, /* f4ca */ 0xffff, /* f4cb */ 0xffff, /* f4cc */ 0xffff, /* f4cd */ 0xffff, /* f4ce */ 0xffff, /* f4cf */ 0xffff, /* f4d0 */ 0xffff, /* f4d1 */ 0xffff, /* f4d2 */ 0xffff, /* f4d3 */ 0xffff, /* f4d4 */ 0xffff, /* f4d5 */ 0xffff, /* f4d6 */ 0xffff, /* f4d7 */ 0xffff, /* f4d8 */ 0xffff, /* f4d9 */ 0xffff, /* f4da */ 0xffff, /* f4db */ 0xffff, /* f4dc */ 0xffff, /* f4dd */ 0xffff, /* f4de */ 0xffff, /* f4df */ 0xffff, /* f4e0 */ 0xffff, /* f4e1 */ 0xffff, /* f4e2 */ 0xffff, /* f4e3 */ 0xffff, /* f4e4 */ 0xffff, /* f4e5 */ 0xffff, /* f4e6 */ 0xffff, /* f4e7 */ 0xffff, /* f4e8 */ 0xffff, /* f4e9 */ 0xffff, /* f4ea */ 0xffff, /* f4eb */ 0xffff, /* f4ec */ 0xffff, /* f4ed */ 0xffff, /* f4ee */ 0xffff, /* f4ef */ 0xffff, /* f4f0 */ 0xffff, /* f4f1 */ 0xffff, /* f4f2 */ 0xffff, /* f4f3 */ 0xffff, /* f4f4 */ 0xffff, /* f4f5 */ 0xffff, /* f4f6 */ 0xffff, /* f4f7 */ 0xffff, /* f4f8 */ 0xffff, /* f4f9 */ 0xffff, /* f4fa */ 0xffff, /* f4fb */ 0xffff, /* f4fc */ 0xffff, /* f4fd */ 0xffff, /* f4fe */ 0xffff, /* f4ff */ 0xffff, /* f500 */ 0xffff, /* f501 */ 0xffff, /* f502 */ 0xffff, /* f503 */ 0xffff, /* f504 */ 0xffff, /* f505 */ 0xffff, /* f506 */ 0xffff, /* f507 */ 0xffff, /* f508 */ 0xffff, /* f509 */ 0xffff, /* f50a */ 0xffff, /* f50b */ 0xffff, /* f50c */ 0xffff, /* f50d */ 0xffff, /* f50e */ 0xffff, /* f50f */ 0xffff, /* f510 */ 0xffff, /* f511 */ 0xffff, /* f512 */ 0xffff, /* f513 */ 0xffff, /* f514 */ 0xffff, /* f515 */ 0xffff, /* f516 */ 0xffff, /* f517 */ 0xffff, /* f518 */ 0xffff, /* f519 */ 0xffff, /* f51a */ 0xffff, /* f51b */ 0xffff, /* f51c */ 0xffff, /* f51d */ 0xffff, /* f51e */ 0xffff, /* f51f */ 0xffff, /* f520 */ 0xffff, /* f521 */ 0xffff, /* f522 */ 0xffff, /* f523 */ 0xffff, /* f524 */ 0xffff, /* f525 */ 0xffff, /* f526 */ 0xffff, /* f527 */ 0xffff, /* f528 */ 0xffff, /* f529 */ 0xffff, /* f52a */ 0xffff, /* f52b */ 0xffff, /* f52c */ 0xffff, /* f52d */ 0xffff, /* f52e */ 0xffff, /* f52f */ 0xffff, /* f530 */ 0xffff, /* f531 */ 0xffff, /* f532 */ 0xffff, /* f533 */ 0xffff, /* f534 */ 0xffff, /* f535 */ 0xffff, /* f536 */ 0xffff, /* f537 */ 0xffff, /* f538 */ 0xffff, /* f539 */ 0xffff, /* f53a */ 0xffff, /* f53b */ 0xffff, /* f53c */ 0xffff, /* f53d */ 0xffff, /* f53e */ 0xffff, /* f53f */ 0xffff, /* f540 */ 0xffff, /* f541 */ 0xffff, /* f542 */ 0xffff, /* f543 */ 0xffff, /* f544 */ 0xffff, /* f545 */ 0xffff, /* f546 */ 0xffff, /* f547 */ 0xffff, /* f548 */ 0xffff, /* f549 */ 0xffff, /* f54a */ 0xffff, /* f54b */ 0xffff, /* f54c */ 0xffff, /* f54d */ 0xffff, /* f54e */ 0xffff, /* f54f */ 0xffff, /* f550 */ 0xffff, /* f551 */ 0xffff, /* f552 */ 0xffff, /* f553 */ 0xffff, /* f554 */ 0xffff, /* f555 */ 0xffff, /* f556 */ 0xffff, /* f557 */ 0xffff, /* f558 */ 0xffff, /* f559 */ 0xffff, /* f55a */ 0xffff, /* f55b */ 0xffff, /* f55c */ 0xffff, /* f55d */ 0xffff, /* f55e */ 0xffff, /* f55f */ 0xffff, /* f560 */ 0xffff, /* f561 */ 0xffff, /* f562 */ 0xffff, /* f563 */ 0xffff, /* f564 */ 0xffff, /* f565 */ 0xffff, /* f566 */ 0xffff, /* f567 */ 0xffff, /* f568 */ 0xffff, /* f569 */ 0xffff, /* f56a */ 0xffff, /* f56b */ 0xffff, /* f56c */ 0xffff, /* f56d */ 0xffff, /* f56e */ 0xffff, /* f56f */ 0xffff, /* f570 */ 0xffff, /* f571 */ 0xffff, /* f572 */ 0xffff, /* f573 */ 0xffff, /* f574 */ 0xffff, /* f575 */ 0xffff, /* f576 */ 0xffff, /* f577 */ 0xffff, /* f578 */ 0xffff, /* f579 */ 0xffff, /* f57a */ 0xffff, /* f57b */ 0xffff, /* f57c */ 0xffff, /* f57d */ 0xffff, /* f57e */ 0xffff, /* f57f */ 0xffff, /* f580 */ 0xffff, /* f581 */ 0xffff, /* f582 */ 0xffff, /* f583 */ 0xffff, /* f584 */ 0xffff, /* f585 */ 0xffff, /* f586 */ 0xffff, /* f587 */ 0xffff, /* f588 */ 0xffff, /* f589 */ 0xffff, /* f58a */ 0xffff, /* f58b */ 0xffff, /* f58c */ 0xffff, /* f58d */ 0xffff, /* f58e */ 0xffff, /* f58f */ 0xffff, /* f590 */ 0xffff, /* f591 */ 0xffff, /* f592 */ 0xffff, /* f593 */ 0xffff, /* f594 */ 0xffff, /* f595 */ 0xffff, /* f596 */ 0xffff, /* f597 */ 0xffff, /* f598 */ 0xffff, /* f599 */ 0xffff, /* f59a */ 0xffff, /* f59b */ 0xffff, /* f59c */ 0xffff, /* f59d */ 0xffff, /* f59e */ 0xffff, /* f59f */ 0xffff, /* f5a0 */ 0xffff, /* f5a1 */ 0xffff, /* f5a2 */ 0xffff, /* f5a3 */ 0xffff, /* f5a4 */ 0xffff, /* f5a5 */ 0xffff, /* f5a6 */ 0xffff, /* f5a7 */ 0xffff, /* f5a8 */ 0xffff, /* f5a9 */ 0xffff, /* f5aa */ 0xffff, /* f5ab */ 0xffff, /* f5ac */ 0xffff, /* f5ad */ 0xffff, /* f5ae */ 0xffff, /* f5af */ 0xffff, /* f5b0 */ 0xffff, /* f5b1 */ 0xffff, /* f5b2 */ 0xffff, /* f5b3 */ 0xffff, /* f5b4 */ 0xffff, /* f5b5 */ 0xffff, /* f5b6 */ 0xffff, /* f5b7 */ 0xffff, /* f5b8 */ 0xffff, /* f5b9 */ 0xffff, /* f5ba */ 0xffff, /* f5bb */ 0xffff, /* f5bc */ 0xffff, /* f5bd */ 0xffff, /* f5be */ 0xffff, /* f5bf */ 0xffff, /* f5c0 */ 0xffff, /* f5c1 */ 0xffff, /* f5c2 */ 0xffff, /* f5c3 */ 0xffff, /* f5c4 */ 0xffff, /* f5c5 */ 0xffff, /* f5c6 */ 0xffff, /* f5c7 */ 0xffff, /* f5c8 */ 0xffff, /* f5c9 */ 0xffff, /* f5ca */ 0xffff, /* f5cb */ 0xffff, /* f5cc */ 0xffff, /* f5cd */ 0xffff, /* f5ce */ 0xffff, /* f5cf */ 0xffff, /* f5d0 */ 0xffff, /* f5d1 */ 0xffff, /* f5d2 */ 0xffff, /* f5d3 */ 0xffff, /* f5d4 */ 0xffff, /* f5d5 */ 0xffff, /* f5d6 */ 0xffff, /* f5d7 */ 0xffff, /* f5d8 */ 0xffff, /* f5d9 */ 0xffff, /* f5da */ 0xffff, /* f5db */ 0xffff, /* f5dc */ 0xffff, /* f5dd */ 0xffff, /* f5de */ 0xffff, /* f5df */ 0xffff, /* f5e0 */ 0xffff, /* f5e1 */ 0xffff, /* f5e2 */ 0xffff, /* f5e3 */ 0xffff, /* f5e4 */ 0xffff, /* f5e5 */ 0xffff, /* f5e6 */ 0xffff, /* f5e7 */ 0xffff, /* f5e8 */ 0xffff, /* f5e9 */ 0xffff, /* f5ea */ 0xffff, /* f5eb */ 0xffff, /* f5ec */ 0xffff, /* f5ed */ 0xffff, /* f5ee */ 0xffff, /* f5ef */ 0xffff, /* f5f0 */ 0xffff, /* f5f1 */ 0xffff, /* f5f2 */ 0xffff, /* f5f3 */ 0xffff, /* f5f4 */ 0xffff, /* f5f5 */ 0xffff, /* f5f6 */ 0xffff, /* f5f7 */ 0xffff, /* f5f8 */ 0xffff, /* f5f9 */ 0xffff, /* f5fa */ 0xffff, /* f5fb */ 0xffff, /* f5fc */ 0xffff, /* f5fd */ 0xffff, /* f5fe */ 0xffff, /* f5ff */ 0xffff, /* f600 */ 0xffff, /* f601 */ 0xffff, /* f602 */ 0xffff, /* f603 */ 0xffff, /* f604 */ 0xffff, /* f605 */ 0xffff, /* f606 */ 0xffff, /* f607 */ 0xffff, /* f608 */ 0xffff, /* f609 */ 0xffff, /* f60a */ 0xffff, /* f60b */ 0xffff, /* f60c */ 0xffff, /* f60d */ 0xffff, /* f60e */ 0xffff, /* f60f */ 0xffff, /* f610 */ 0xffff, /* f611 */ 0xffff, /* f612 */ 0xffff, /* f613 */ 0xffff, /* f614 */ 0xffff, /* f615 */ 0xffff, /* f616 */ 0xffff, /* f617 */ 0xffff, /* f618 */ 0xffff, /* f619 */ 0xffff, /* f61a */ 0xffff, /* f61b */ 0xffff, /* f61c */ 0xffff, /* f61d */ 0xffff, /* f61e */ 0xffff, /* f61f */ 0xffff, /* f620 */ 0xffff, /* f621 */ 0xffff, /* f622 */ 0xffff, /* f623 */ 0xffff, /* f624 */ 0xffff, /* f625 */ 0xffff, /* f626 */ 0xffff, /* f627 */ 0xffff, /* f628 */ 0xffff, /* f629 */ 0xffff, /* f62a */ 0xffff, /* f62b */ 0xffff, /* f62c */ 0xffff, /* f62d */ 0xffff, /* f62e */ 0xffff, /* f62f */ 0xffff, /* f630 */ 0xffff, /* f631 */ 0xffff, /* f632 */ 0xffff, /* f633 */ 0xffff, /* f634 */ 0xffff, /* f635 */ 0xffff, /* f636 */ 0xffff, /* f637 */ 0xffff, /* f638 */ 0xffff, /* f639 */ 0xffff, /* f63a */ 0xffff, /* f63b */ 0xffff, /* f63c */ 0xffff, /* f63d */ 0xffff, /* f63e */ 0xffff, /* f63f */ 0xffff, /* f640 */ 0xffff, /* f641 */ 0xffff, /* f642 */ 0xffff, /* f643 */ 0xffff, /* f644 */ 0xffff, /* f645 */ 0xffff, /* f646 */ 0xffff, /* f647 */ 0xffff, /* f648 */ 0xffff, /* f649 */ 0xffff, /* f64a */ 0xffff, /* f64b */ 0xffff, /* f64c */ 0xffff, /* f64d */ 0xffff, /* f64e */ 0xffff, /* f64f */ 0xffff, /* f650 */ 0xffff, /* f651 */ 0xffff, /* f652 */ 0xffff, /* f653 */ 0xffff, /* f654 */ 0xffff, /* f655 */ 0xffff, /* f656 */ 0xffff, /* f657 */ 0xffff, /* f658 */ 0xffff, /* f659 */ 0xffff, /* f65a */ 0xffff, /* f65b */ 0xffff, /* f65c */ 0xffff, /* f65d */ 0xffff, /* f65e */ 0xffff, /* f65f */ 0xffff, /* f660 */ 0xffff, /* f661 */ 0xffff, /* f662 */ 0xffff, /* f663 */ 0xffff, /* f664 */ 0xffff, /* f665 */ 0xffff, /* f666 */ 0xffff, /* f667 */ 0xffff, /* f668 */ 0xffff, /* f669 */ 0xffff, /* f66a */ 0xffff, /* f66b */ 0xffff, /* f66c */ 0xffff, /* f66d */ 0xffff, /* f66e */ 0xffff, /* f66f */ 0xffff, /* f670 */ 0xffff, /* f671 */ 0xffff, /* f672 */ 0xffff, /* f673 */ 0xffff, /* f674 */ 0xffff, /* f675 */ 0xffff, /* f676 */ 0xffff, /* f677 */ 0xffff, /* f678 */ 0xffff, /* f679 */ 0xffff, /* f67a */ 0xffff, /* f67b */ 0xffff, /* f67c */ 0xffff, /* f67d */ 0xffff, /* f67e */ 0xffff, /* f67f */ 0xffff, /* f680 */ 0xffff, /* f681 */ 0xffff, /* f682 */ 0xffff, /* f683 */ 0xffff, /* f684 */ 0xffff, /* f685 */ 0xffff, /* f686 */ 0xffff, /* f687 */ 0xffff, /* f688 */ 0xffff, /* f689 */ 0xffff, /* f68a */ 0xffff, /* f68b */ 0xffff, /* f68c */ 0xffff, /* f68d */ 0xffff, /* f68e */ 0xffff, /* f68f */ 0xffff, /* f690 */ 0xffff, /* f691 */ 0xffff, /* f692 */ 0xffff, /* f693 */ 0xffff, /* f694 */ 0xffff, /* f695 */ 0xffff, /* f696 */ 0xffff, /* f697 */ 0xffff, /* f698 */ 0xffff, /* f699 */ 0xffff, /* f69a */ 0xffff, /* f69b */ 0xffff, /* f69c */ 0xffff, /* f69d */ 0xffff, /* f69e */ 0xffff, /* f69f */ 0xffff, /* f6a0 */ 0xffff, /* f6a1 */ 0xffff, /* f6a2 */ 0xffff, /* f6a3 */ 0xffff, /* f6a4 */ 0xffff, /* f6a5 */ 0xffff, /* f6a6 */ 0xffff, /* f6a7 */ 0xffff, /* f6a8 */ 0xffff, /* f6a9 */ 0xffff, /* f6aa */ 0xffff, /* f6ab */ 0xffff, /* f6ac */ 0xffff, /* f6ad */ 0xffff, /* f6ae */ 0xffff, /* f6af */ 0xffff, /* f6b0 */ 0xffff, /* f6b1 */ 0xffff, /* f6b2 */ 0xffff, /* f6b3 */ 0xffff, /* f6b4 */ 0xffff, /* f6b5 */ 0xffff, /* f6b6 */ 0xffff, /* f6b7 */ 0xffff, /* f6b8 */ 0xffff, /* f6b9 */ 0xffff, /* f6ba */ 0xffff, /* f6bb */ 0xffff, /* f6bc */ 0xffff, /* f6bd */ 0xffff, /* f6be */ 0xffff, /* f6bf */ 0xffff, /* f6c0 */ 0xffff, /* f6c1 */ 0xffff, /* f6c2 */ 0xffff, /* f6c3 */ 0xffff, /* f6c4 */ 0xffff, /* f6c5 */ 0xffff, /* f6c6 */ 0xffff, /* f6c7 */ 0xffff, /* f6c8 */ 0xffff, /* f6c9 */ 0xffff, /* f6ca */ 0xffff, /* f6cb */ 0xffff, /* f6cc */ 0xffff, /* f6cd */ 0xffff, /* f6ce */ 0xffff, /* f6cf */ 0xffff, /* f6d0 */ 0xffff, /* f6d1 */ 0xffff, /* f6d2 */ 0xffff, /* f6d3 */ 0xffff, /* f6d4 */ 0xffff, /* f6d5 */ 0xffff, /* f6d6 */ 0xffff, /* f6d7 */ 0xffff, /* f6d8 */ 0xffff, /* f6d9 */ 0xffff, /* f6da */ 0xffff, /* f6db */ 0xffff, /* f6dc */ 0xffff, /* f6dd */ 0xffff, /* f6de */ 0xffff, /* f6df */ 0xffff, /* f6e0 */ 0xffff, /* f6e1 */ 0xffff, /* f6e2 */ 0xffff, /* f6e3 */ 0xffff, /* f6e4 */ 0xffff, /* f6e5 */ 0xffff, /* f6e6 */ 0xffff, /* f6e7 */ 0xffff, /* f6e8 */ 0xffff, /* f6e9 */ 0xffff, /* f6ea */ 0xffff, /* f6eb */ 0xffff, /* f6ec */ 0xffff, /* f6ed */ 0xffff, /* f6ee */ 0xffff, /* f6ef */ 0xffff, /* f6f0 */ 0xffff, /* f6f1 */ 0xffff, /* f6f2 */ 0xffff, /* f6f3 */ 0xffff, /* f6f4 */ 0xffff, /* f6f5 */ 0xffff, /* f6f6 */ 0xffff, /* f6f7 */ 0xffff, /* f6f8 */ 0xffff, /* f6f9 */ 0xffff, /* f6fa */ 0xffff, /* f6fb */ 0xffff, /* f6fc */ 0xffff, /* f6fd */ 0xffff, /* f6fe */ 0xffff, /* f6ff */ 0xffff, /* f700 */ 0xffff, /* f701 */ 0xffff, /* f702 */ 0xffff, /* f703 */ 0xffff, /* f704 */ 0xffff, /* f705 */ 0xffff, /* f706 */ 0xffff, /* f707 */ 0xffff, /* f708 */ 0xffff, /* f709 */ 0xffff, /* f70a */ 0xffff, /* f70b */ 0xffff, /* f70c */ 0xffff, /* f70d */ 0xffff, /* f70e */ 0xffff, /* f70f */ 0xffff, /* f710 */ 0xffff, /* f711 */ 0xffff, /* f712 */ 0xffff, /* f713 */ 0xffff, /* f714 */ 0xffff, /* f715 */ 0xffff, /* f716 */ 0xffff, /* f717 */ 0xffff, /* f718 */ 0xffff, /* f719 */ 0xffff, /* f71a */ 0xffff, /* f71b */ 0xffff, /* f71c */ 0xffff, /* f71d */ 0xffff, /* f71e */ 0xffff, /* f71f */ 0xffff, /* f720 */ 0xffff, /* f721 */ 0xffff, /* f722 */ 0xffff, /* f723 */ 0xffff, /* f724 */ 0xffff, /* f725 */ 0xffff, /* f726 */ 0xffff, /* f727 */ 0xffff, /* f728 */ 0xffff, /* f729 */ 0xffff, /* f72a */ 0xffff, /* f72b */ 0xffff, /* f72c */ 0xffff, /* f72d */ 0xffff, /* f72e */ 0xffff, /* f72f */ 0xffff, /* f730 */ 0xffff, /* f731 */ 0xffff, /* f732 */ 0xffff, /* f733 */ 0xffff, /* f734 */ 0xffff, /* f735 */ 0xffff, /* f736 */ 0xffff, /* f737 */ 0xffff, /* f738 */ 0xffff, /* f739 */ 0xffff, /* f73a */ 0xffff, /* f73b */ 0xffff, /* f73c */ 0xffff, /* f73d */ 0xffff, /* f73e */ 0xffff, /* f73f */ 0xffff, /* f740 */ 0xffff, /* f741 */ 0xffff, /* f742 */ 0xffff, /* f743 */ 0xffff, /* f744 */ 0xffff, /* f745 */ 0xffff, /* f746 */ 0xffff, /* f747 */ 0xffff, /* f748 */ 0xffff, /* f749 */ 0xffff, /* f74a */ 0xffff, /* f74b */ 0xffff, /* f74c */ 0xffff, /* f74d */ 0xffff, /* f74e */ 0xffff, /* f74f */ 0xffff, /* f750 */ 0xffff, /* f751 */ 0xffff, /* f752 */ 0xffff, /* f753 */ 0xffff, /* f754 */ 0xffff, /* f755 */ 0xffff, /* f756 */ 0xffff, /* f757 */ 0xffff, /* f758 */ 0xffff, /* f759 */ 0xffff, /* f75a */ 0xffff, /* f75b */ 0xffff, /* f75c */ 0xffff, /* f75d */ 0xffff, /* f75e */ 0xffff, /* f75f */ 0xffff, /* f760 */ 0xffff, /* f761 */ 0xffff, /* f762 */ 0xffff, /* f763 */ 0xffff, /* f764 */ 0xffff, /* f765 */ 0xffff, /* f766 */ 0xffff, /* f767 */ 0xffff, /* f768 */ 0xffff, /* f769 */ 0xffff, /* f76a */ 0xffff, /* f76b */ 0xffff, /* f76c */ 0xffff, /* f76d */ 0xffff, /* f76e */ 0xffff, /* f76f */ 0xffff, /* f770 */ 0xffff, /* f771 */ 0xffff, /* f772 */ 0xffff, /* f773 */ 0xffff, /* f774 */ 0xffff, /* f775 */ 0xffff, /* f776 */ 0xffff, /* f777 */ 0xffff, /* f778 */ 0xffff, /* f779 */ 0xffff, /* f77a */ 0xffff, /* f77b */ 0xffff, /* f77c */ 0xffff, /* f77d */ 0xffff, /* f77e */ 0xffff, /* f77f */ 0xffff, /* f780 */ 0xffff, /* f781 */ 0xffff, /* f782 */ 0xffff, /* f783 */ 0xffff, /* f784 */ 0xffff, /* f785 */ 0xffff, /* f786 */ 0xffff, /* f787 */ 0xffff, /* f788 */ 0xffff, /* f789 */ 0xffff, /* f78a */ 0xffff, /* f78b */ 0xffff, /* f78c */ 0xffff, /* f78d */ 0xffff, /* f78e */ 0xffff, /* f78f */ 0xffff, /* f790 */ 0xffff, /* f791 */ 0xffff, /* f792 */ 0xffff, /* f793 */ 0xffff, /* f794 */ 0xffff, /* f795 */ 0xffff, /* f796 */ 0xffff, /* f797 */ 0xffff, /* f798 */ 0xffff, /* f799 */ 0xffff, /* f79a */ 0xffff, /* f79b */ 0xffff, /* f79c */ 0xffff, /* f79d */ 0xffff, /* f79e */ 0xffff, /* f79f */ 0xffff, /* f7a0 */ 0xffff, /* f7a1 */ 0xffff, /* f7a2 */ 0xffff, /* f7a3 */ 0xffff, /* f7a4 */ 0xffff, /* f7a5 */ 0xffff, /* f7a6 */ 0xffff, /* f7a7 */ 0xffff, /* f7a8 */ 0xffff, /* f7a9 */ 0xffff, /* f7aa */ 0xffff, /* f7ab */ 0xffff, /* f7ac */ 0xffff, /* f7ad */ 0xffff, /* f7ae */ 0xffff, /* f7af */ 0xffff, /* f7b0 */ 0xffff, /* f7b1 */ 0xffff, /* f7b2 */ 0xffff, /* f7b3 */ 0xffff, /* f7b4 */ 0xffff, /* f7b5 */ 0xffff, /* f7b6 */ 0xffff, /* f7b7 */ 0xffff, /* f7b8 */ 0xffff, /* f7b9 */ 0xffff, /* f7ba */ 0xffff, /* f7bb */ 0xffff, /* f7bc */ 0xffff, /* f7bd */ 0xffff, /* f7be */ 0xffff, /* f7bf */ 0xffff, /* f7c0 */ 0xffff, /* f7c1 */ 0xffff, /* f7c2 */ 0xffff, /* f7c3 */ 0xffff, /* f7c4 */ 0xffff, /* f7c5 */ 0xffff, /* f7c6 */ 0xffff, /* f7c7 */ 0xffff, /* f7c8 */ 0xffff, /* f7c9 */ 0xffff, /* f7ca */ 0xffff, /* f7cb */ 0xffff, /* f7cc */ 0xffff, /* f7cd */ 0xffff, /* f7ce */ 0xffff, /* f7cf */ 0xffff, /* f7d0 */ 0xffff, /* f7d1 */ 0xffff, /* f7d2 */ 0xffff, /* f7d3 */ 0xffff, /* f7d4 */ 0xffff, /* f7d5 */ 0xffff, /* f7d6 */ 0xffff, /* f7d7 */ 0xffff, /* f7d8 */ 0xffff, /* f7d9 */ 0xffff, /* f7da */ 0xffff, /* f7db */ 0xffff, /* f7dc */ 0xffff, /* f7dd */ 0xffff, /* f7de */ 0xffff, /* f7df */ 0xffff, /* f7e0 */ 0xffff, /* f7e1 */ 0xffff, /* f7e2 */ 0xffff, /* f7e3 */ 0xffff, /* f7e4 */ 0xffff, /* f7e5 */ 0xffff, /* f7e6 */ 0xffff, /* f7e7 */ 0xffff, /* f7e8 */ 0xffff, /* f7e9 */ 0xffff, /* f7ea */ 0xffff, /* f7eb */ 0xffff, /* f7ec */ 0xffff, /* f7ed */ 0xffff, /* f7ee */ 0xffff, /* f7ef */ 0xffff, /* f7f0 */ 0xffff, /* f7f1 */ 0xffff, /* f7f2 */ 0xffff, /* f7f3 */ 0xffff, /* f7f4 */ 0xffff, /* f7f5 */ 0xffff, /* f7f6 */ 0xffff, /* f7f7 */ 0xffff, /* f7f8 */ 0xffff, /* f7f9 */ 0xffff, /* f7fa */ 0xffff, /* f7fb */ 0xffff, /* f7fc */ 0xffff, /* f7fd */ 0xffff, /* f7fe */ 0xffff, /* f7ff */ 0xffff, /* f800 */ 0xffff, /* f801 */ 0xffff, /* f802 */ 0xffff, /* f803 */ 0xffff, /* f804 */ 0xffff, /* f805 */ 0xffff, /* f806 */ 0xffff, /* f807 */ 0xffff, /* f808 */ 0xffff, /* f809 */ 0xffff, /* f80a */ 0xffff, /* f80b */ 0xffff, /* f80c */ 0xffff, /* f80d */ 0xffff, /* f80e */ 0xffff, /* f80f */ 0xffff, /* f810 */ 0xffff, /* f811 */ 0xffff, /* f812 */ 0xffff, /* f813 */ 0xffff, /* f814 */ 0xffff, /* f815 */ 0xffff, /* f816 */ 0xffff, /* f817 */ 0xffff, /* f818 */ 0xffff, /* f819 */ 0xffff, /* f81a */ 0xffff, /* f81b */ 0xffff, /* f81c */ 0xffff, /* f81d */ 0xffff, /* f81e */ 0xffff, /* f81f */ 0xffff, /* f820 */ 0xffff, /* f821 */ 0xffff, /* f822 */ 0xffff, /* f823 */ 0xffff, /* f824 */ 0xffff, /* f825 */ 0xffff, /* f826 */ 0xffff, /* f827 */ 0xffff, /* f828 */ 0xffff, /* f829 */ 0xffff, /* f82a */ 0xffff, /* f82b */ 0xffff, /* f82c */ 0xffff, /* f82d */ 0xffff, /* f82e */ 0xffff, /* f82f */ 0xffff, /* f830 */ 0xffff, /* f831 */ 0xffff, /* f832 */ 0xffff, /* f833 */ 0xffff, /* f834 */ 0xffff, /* f835 */ 0xffff, /* f836 */ 0xffff, /* f837 */ 0xffff, /* f838 */ 0xffff, /* f839 */ 0xffff, /* f83a */ 0xffff, /* f83b */ 0xffff, /* f83c */ 0xffff, /* f83d */ 0xffff, /* f83e */ 0xffff, /* f83f */ 0xffff, /* f840 */ 0xffff, /* f841 */ 0xffff, /* f842 */ 0xffff, /* f843 */ 0xffff, /* f844 */ 0xffff, /* f845 */ 0xffff, /* f846 */ 0xffff, /* f847 */ 0xffff, /* f848 */ 0xffff, /* f849 */ 0xffff, /* f84a */ 0xffff, /* f84b */ 0xffff, /* f84c */ 0xffff, /* f84d */ 0xffff, /* f84e */ 0xffff, /* f84f */ 0xffff, /* f850 */ 0xffff, /* f851 */ 0xffff, /* f852 */ 0xffff, /* f853 */ 0xffff, /* f854 */ 0xffff, /* f855 */ 0xffff, /* f856 */ 0xffff, /* f857 */ 0xffff, /* f858 */ 0xffff, /* f859 */ 0xffff, /* f85a */ 0xffff, /* f85b */ 0xffff, /* f85c */ 0xffff, /* f85d */ 0xffff, /* f85e */ 0xffff, /* f85f */ 0xffff, /* f860 */ 0xffff, /* f861 */ 0xffff, /* f862 */ 0xffff, /* f863 */ 0xffff, /* f864 */ 0xffff, /* f865 */ 0xffff, /* f866 */ 0xffff, /* f867 */ 0xffff, /* f868 */ 0xffff, /* f869 */ 0xffff, /* f86a */ 0xffff, /* f86b */ 0xffff, /* f86c */ 0xffff, /* f86d */ 0xffff, /* f86e */ 0xffff, /* f86f */ 0xffff, /* f870 */ 0xffff, /* f871 */ 0xffff, /* f872 */ 0xffff, /* f873 */ 0xffff, /* f874 */ 0xffff, /* f875 */ 0xffff, /* f876 */ 0xffff, /* f877 */ 0xffff, /* f878 */ 0xffff, /* f879 */ 0xffff, /* f87a */ 0xffff, /* f87b */ 0xffff, /* f87c */ 0xffff, /* f87d */ 0xffff, /* f87e */ 0xffff, /* f87f */ 0xffff, /* f880 */ 0xffff, /* f881 */ 0xffff, /* f882 */ 0xffff, /* f883 */ 0xffff, /* f884 */ 0xffff, /* f885 */ 0xffff, /* f886 */ 0xffff, /* f887 */ 0xffff, /* f888 */ 0xffff, /* f889 */ 0xffff, /* f88a */ 0xffff, /* f88b */ 0xffff, /* f88c */ 0xffff, /* f88d */ 0xffff, /* f88e */ 0xffff, /* f88f */ 0xffff, /* f890 */ 0xffff, /* f891 */ 0xffff, /* f892 */ 0xffff, /* f893 */ 0xffff, /* f894 */ 0xffff, /* f895 */ 0xffff, /* f896 */ 0xffff, /* f897 */ 0xffff, /* f898 */ 0xffff, /* f899 */ 0xffff, /* f89a */ 0xffff, /* f89b */ 0xffff, /* f89c */ 0xffff, /* f89d */ 0xffff, /* f89e */ 0xffff, /* f89f */ 0xffff, /* f8a0 */ 0xffff, /* f8a1 */ 0xffff, /* f8a2 */ 0xffff, /* f8a3 */ 0xffff, /* f8a4 */ 0xffff, /* f8a5 */ 0xffff, /* f8a6 */ 0xffff, /* f8a7 */ 0xffff, /* f8a8 */ 0xffff, /* f8a9 */ 0xffff, /* f8aa */ 0xffff, /* f8ab */ 0xffff, /* f8ac */ 0xffff, /* f8ad */ 0xffff, /* f8ae */ 0xffff, /* f8af */ 0xffff, /* f8b0 */ 0xffff, /* f8b1 */ 0xffff, /* f8b2 */ 0xffff, /* f8b3 */ 0xffff, /* f8b4 */ 0xffff, /* f8b5 */ 0xffff, /* f8b6 */ 0xffff, /* f8b7 */ 0xffff, /* f8b8 */ 0xffff, /* f8b9 */ 0xffff, /* f8ba */ 0xffff, /* f8bb */ 0xffff, /* f8bc */ 0xffff, /* f8bd */ 0xffff, /* f8be */ 0xffff, /* f8bf */ 0xffff, /* f8c0 */ 0xffff, /* f8c1 */ 0xffff, /* f8c2 */ 0xffff, /* f8c3 */ 0xffff, /* f8c4 */ 0xffff, /* f8c5 */ 0xffff, /* f8c6 */ 0xffff, /* f8c7 */ 0xffff, /* f8c8 */ 0xffff, /* f8c9 */ 0xffff, /* f8ca */ 0xffff, /* f8cb */ 0xffff, /* f8cc */ 0xffff, /* f8cd */ 0xffff, /* f8ce */ 0xffff, /* f8cf */ 0xffff, /* f8d0 */ 0xffff, /* f8d1 */ 0xffff, /* f8d2 */ 0xffff, /* f8d3 */ 0xffff, /* f8d4 */ 0xffff, /* f8d5 */ 0xffff, /* f8d6 */ 0xffff, /* f8d7 */ 0xffff, /* f8d8 */ 0xffff, /* f8d9 */ 0xffff, /* f8da */ 0xffff, /* f8db */ 0xffff, /* f8dc */ 0xffff, /* f8dd */ 0xffff, /* f8de */ 0xffff, /* f8df */ 0xffff, /* f8e0 */ 0xffff, /* f8e1 */ 0xffff, /* f8e2 */ 0xffff, /* f8e3 */ 0xffff, /* f8e4 */ 0xffff, /* f8e5 */ 0xffff, /* f8e6 */ 0xffff, /* f8e7 */ 0xffff, /* f8e8 */ 0xffff, /* f8e9 */ 0xffff, /* f8ea */ 0xffff, /* f8eb */ 0xffff, /* f8ec */ 0xffff, /* f8ed */ 0xffff, /* f8ee */ 0xffff, /* f8ef */ 0xffff, /* f8f0 */ 0xffff, /* f8f1 */ 0xffff, /* f8f2 */ 0xffff, /* f8f3 */ 0xffff, /* f8f4 */ 0xffff, /* f8f5 */ 0xffff, /* f8f6 */ 0xffff, /* f8f7 */ 0xffff, /* f8f8 */ 0xffff, /* f8f9 */ 0xffff, /* f8fa */ 0xffff, /* f8fb */ 0xffff, /* f8fc */ 0xffff, /* f8fd */ 0xffff, /* f8fe */ 0xffff, /* f8ff */ 0xffff, /* f900 */ 0xffff, /* f901 */ 0xffff, /* f902 */ 0xffff, /* f903 */ 0xffff, /* f904 */ 0xffff, /* f905 */ 0xffff, /* f906 */ 0xffff, /* f907 */ 0xffff, /* f908 */ 0xffff, /* f909 */ 0xffff, /* f90a */ 0xffff, /* f90b */ 0xffff, /* f90c */ 0xffff, /* f90d */ 0xffff, /* f90e */ 0xffff, /* f90f */ 0xffff, /* f910 */ 0xffff, /* f911 */ 0xffff, /* f912 */ 0xffff, /* f913 */ 0xffff, /* f914 */ 0xffff, /* f915 */ 0xffff, /* f916 */ 0xffff, /* f917 */ 0xffff, /* f918 */ 0xffff, /* f919 */ 0xffff, /* f91a */ 0xffff, /* f91b */ 0xffff, /* f91c */ 0xffff, /* f91d */ 0xffff, /* f91e */ 0xffff, /* f91f */ 0xffff, /* f920 */ 0xffff, /* f921 */ 0xffff, /* f922 */ 0xffff, /* f923 */ 0xffff, /* f924 */ 0xffff, /* f925 */ 0xffff, /* f926 */ 0xffff, /* f927 */ 0xffff, /* f928 */ 0xffff, /* f929 */ 0xffff, /* f92a */ 0xffff, /* f92b */ 0xffff, /* f92c */ 0xffff, /* f92d */ 0xffff, /* f92e */ 0xffff, /* f92f */ 0xffff, /* f930 */ 0xffff, /* f931 */ 0xffff, /* f932 */ 0xffff, /* f933 */ 0xffff, /* f934 */ 0xffff, /* f935 */ 0xffff, /* f936 */ 0xffff, /* f937 */ 0xffff, /* f938 */ 0xffff, /* f939 */ 0xffff, /* f93a */ 0xffff, /* f93b */ 0xffff, /* f93c */ 0xffff, /* f93d */ 0xffff, /* f93e */ 0xffff, /* f93f */ 0xffff, /* f940 */ 0xffff, /* f941 */ 0xffff, /* f942 */ 0xffff, /* f943 */ 0xffff, /* f944 */ 0xffff, /* f945 */ 0xffff, /* f946 */ 0xffff, /* f947 */ 0xffff, /* f948 */ 0xffff, /* f949 */ 0xffff, /* f94a */ 0xffff, /* f94b */ 0xffff, /* f94c */ 0xffff, /* f94d */ 0xffff, /* f94e */ 0xffff, /* f94f */ 0xffff, /* f950 */ 0xffff, /* f951 */ 0xffff, /* f952 */ 0xffff, /* f953 */ 0xffff, /* f954 */ 0xffff, /* f955 */ 0xffff, /* f956 */ 0xffff, /* f957 */ 0xffff, /* f958 */ 0xffff, /* f959 */ 0xffff, /* f95a */ 0xffff, /* f95b */ 0xffff, /* f95c */ 0xffff, /* f95d */ 0xffff, /* f95e */ 0xffff, /* f95f */ 0xffff, /* f960 */ 0xffff, /* f961 */ 0xffff, /* f962 */ 0xffff, /* f963 */ 0xffff, /* f964 */ 0xffff, /* f965 */ 0xffff, /* f966 */ 0xffff, /* f967 */ 0xffff, /* f968 */ 0xffff, /* f969 */ 0xffff, /* f96a */ 0xffff, /* f96b */ 0xffff, /* f96c */ 0xffff, /* f96d */ 0xffff, /* f96e */ 0xffff, /* f96f */ 0xffff, /* f970 */ 0xffff, /* f971 */ 0xffff, /* f972 */ 0xffff, /* f973 */ 0xffff, /* f974 */ 0xffff, /* f975 */ 0xffff, /* f976 */ 0xffff, /* f977 */ 0xffff, /* f978 */ 0xffff, /* f979 */ 0xffff, /* f97a */ 0xffff, /* f97b */ 0xffff, /* f97c */ 0xffff, /* f97d */ 0xffff, /* f97e */ 0xffff, /* f97f */ 0xffff, /* f980 */ 0xffff, /* f981 */ 0xffff, /* f982 */ 0xffff, /* f983 */ 0xffff, /* f984 */ 0xffff, /* f985 */ 0xffff, /* f986 */ 0xffff, /* f987 */ 0xffff, /* f988 */ 0xffff, /* f989 */ 0xffff, /* f98a */ 0xffff, /* f98b */ 0xffff, /* f98c */ 0xffff, /* f98d */ 0xffff, /* f98e */ 0xffff, /* f98f */ 0xffff, /* f990 */ 0xffff, /* f991 */ 0xffff, /* f992 */ 0xffff, /* f993 */ 0xffff, /* f994 */ 0xffff, /* f995 */ 0xffff, /* f996 */ 0xffff, /* f997 */ 0xffff, /* f998 */ 0xffff, /* f999 */ 0xffff, /* f99a */ 0xffff, /* f99b */ 0xffff, /* f99c */ 0xffff, /* f99d */ 0xffff, /* f99e */ 0xffff, /* f99f */ 0xffff, /* f9a0 */ 0xffff, /* f9a1 */ 0xffff, /* f9a2 */ 0xffff, /* f9a3 */ 0xffff, /* f9a4 */ 0xffff, /* f9a5 */ 0xffff, /* f9a6 */ 0xffff, /* f9a7 */ 0xffff, /* f9a8 */ 0xffff, /* f9a9 */ 0xffff, /* f9aa */ 0xffff, /* f9ab */ 0xffff, /* f9ac */ 0xffff, /* f9ad */ 0xffff, /* f9ae */ 0xffff, /* f9af */ 0xffff, /* f9b0 */ 0xffff, /* f9b1 */ 0xffff, /* f9b2 */ 0xffff, /* f9b3 */ 0xffff, /* f9b4 */ 0xffff, /* f9b5 */ 0xffff, /* f9b6 */ 0xffff, /* f9b7 */ 0xffff, /* f9b8 */ 0xffff, /* f9b9 */ 0xffff, /* f9ba */ 0xffff, /* f9bb */ 0xffff, /* f9bc */ 0xffff, /* f9bd */ 0xffff, /* f9be */ 0xffff, /* f9bf */ 0xffff, /* f9c0 */ 0xffff, /* f9c1 */ 0xffff, /* f9c2 */ 0xffff, /* f9c3 */ 0xffff, /* f9c4 */ 0xffff, /* f9c5 */ 0xffff, /* f9c6 */ 0xffff, /* f9c7 */ 0xffff, /* f9c8 */ 0xffff, /* f9c9 */ 0xffff, /* f9ca */ 0xffff, /* f9cb */ 0xffff, /* f9cc */ 0xffff, /* f9cd */ 0xffff, /* f9ce */ 0xffff, /* f9cf */ 0xffff, /* f9d0 */ 0xffff, /* f9d1 */ 0xffff, /* f9d2 */ 0xffff, /* f9d3 */ 0xffff, /* f9d4 */ 0xffff, /* f9d5 */ 0xffff, /* f9d6 */ 0xffff, /* f9d7 */ 0xffff, /* f9d8 */ 0xffff, /* f9d9 */ 0xffff, /* f9da */ 0xffff, /* f9db */ 0xffff, /* f9dc */ 0xffff, /* f9dd */ 0xffff, /* f9de */ 0xffff, /* f9df */ 0xffff, /* f9e0 */ 0xffff, /* f9e1 */ 0xffff, /* f9e2 */ 0xffff, /* f9e3 */ 0xffff, /* f9e4 */ 0xffff, /* f9e5 */ 0xffff, /* f9e6 */ 0xffff, /* f9e7 */ 0xffff, /* f9e8 */ 0xffff, /* f9e9 */ 0xffff, /* f9ea */ 0xffff, /* f9eb */ 0xffff, /* f9ec */ 0xffff, /* f9ed */ 0xffff, /* f9ee */ 0xffff, /* f9ef */ 0xffff, /* f9f0 */ 0xffff, /* f9f1 */ 0xffff, /* f9f2 */ 0xffff, /* f9f3 */ 0xffff, /* f9f4 */ 0xffff, /* f9f5 */ 0xffff, /* f9f6 */ 0xffff, /* f9f7 */ 0xffff, /* f9f8 */ 0xffff, /* f9f9 */ 0xffff, /* f9fa */ 0xffff, /* f9fb */ 0xffff, /* f9fc */ 0xffff, /* f9fd */ 0xffff, /* f9fe */ 0xffff, /* f9ff */ 0xffff, /* fa00 */ 0xffff, /* fa01 */ 0xffff, /* fa02 */ 0xffff, /* fa03 */ 0xffff, /* fa04 */ 0xffff, /* fa05 */ 0xffff, /* fa06 */ 0xffff, /* fa07 */ 0xffff, /* fa08 */ 0xffff, /* fa09 */ 0xffff, /* fa0a */ 0xffff, /* fa0b */ 0xffff, /* fa0c */ 0xffff, /* fa0d */ 0xffff, /* fa0e */ 0xffff, /* fa0f */ 0xffff, /* fa10 */ 0xffff, /* fa11 */ 0xffff, /* fa12 */ 0xffff, /* fa13 */ 0xffff, /* fa14 */ 0xffff, /* fa15 */ 0xffff, /* fa16 */ 0xffff, /* fa17 */ 0xffff, /* fa18 */ 0xffff, /* fa19 */ 0xffff, /* fa1a */ 0xffff, /* fa1b */ 0xffff, /* fa1c */ 0xffff, /* fa1d */ 0xffff, /* fa1e */ 0xffff, /* fa1f */ 0xffff, /* fa20 */ 0xffff, /* fa21 */ 0xffff, /* fa22 */ 0xffff, /* fa23 */ 0xffff, /* fa24 */ 0xffff, /* fa25 */ 0xffff, /* fa26 */ 0xffff, /* fa27 */ 0xffff, /* fa28 */ 0xffff, /* fa29 */ 0xffff, /* fa2a */ 0xffff, /* fa2b */ 0xffff, /* fa2c */ 0xffff, /* fa2d */ 0xffff, /* fa2e */ 0xffff, /* fa2f */ 0xffff, /* fa30 */ 0xffff, /* fa31 */ 0xffff, /* fa32 */ 0xffff, /* fa33 */ 0xffff, /* fa34 */ 0xffff, /* fa35 */ 0xffff, /* fa36 */ 0xffff, /* fa37 */ 0xffff, /* fa38 */ 0xffff, /* fa39 */ 0xffff, /* fa3a */ 0xffff, /* fa3b */ 0xffff, /* fa3c */ 0xffff, /* fa3d */ 0xffff, /* fa3e */ 0xffff, /* fa3f */ 0xffff, /* fa40 */ 0xffff, /* fa41 */ 0xffff, /* fa42 */ 0xffff, /* fa43 */ 0xffff, /* fa44 */ 0xffff, /* fa45 */ 0xffff, /* fa46 */ 0xffff, /* fa47 */ 0xffff, /* fa48 */ 0xffff, /* fa49 */ 0xffff, /* fa4a */ 0xffff, /* fa4b */ 0xffff, /* fa4c */ 0xffff, /* fa4d */ 0xffff, /* fa4e */ 0xffff, /* fa4f */ 0xffff, /* fa50 */ 0xffff, /* fa51 */ 0xffff, /* fa52 */ 0xffff, /* fa53 */ 0xffff, /* fa54 */ 0xffff, /* fa55 */ 0xffff, /* fa56 */ 0xffff, /* fa57 */ 0xffff, /* fa58 */ 0xffff, /* fa59 */ 0xffff, /* fa5a */ 0xffff, /* fa5b */ 0xffff, /* fa5c */ 0xffff, /* fa5d */ 0xffff, /* fa5e */ 0xffff, /* fa5f */ 0xffff, /* fa60 */ 0xffff, /* fa61 */ 0xffff, /* fa62 */ 0xffff, /* fa63 */ 0xffff, /* fa64 */ 0xffff, /* fa65 */ 0xffff, /* fa66 */ 0xffff, /* fa67 */ 0xffff, /* fa68 */ 0xffff, /* fa69 */ 0xffff, /* fa6a */ 0xffff, /* fa6b */ 0xffff, /* fa6c */ 0xffff, /* fa6d */ 0xffff, /* fa6e */ 0xffff, /* fa6f */ 0xffff, /* fa70 */ 0xffff, /* fa71 */ 0xffff, /* fa72 */ 0xffff, /* fa73 */ 0xffff, /* fa74 */ 0xffff, /* fa75 */ 0xffff, /* fa76 */ 0xffff, /* fa77 */ 0xffff, /* fa78 */ 0xffff, /* fa79 */ 0xffff, /* fa7a */ 0xffff, /* fa7b */ 0xffff, /* fa7c */ 0xffff, /* fa7d */ 0xffff, /* fa7e */ 0xffff, /* fa7f */ 0xffff, /* fa80 */ 0xffff, /* fa81 */ 0xffff, /* fa82 */ 0xffff, /* fa83 */ 0xffff, /* fa84 */ 0xffff, /* fa85 */ 0xffff, /* fa86 */ 0xffff, /* fa87 */ 0xffff, /* fa88 */ 0xffff, /* fa89 */ 0xffff, /* fa8a */ 0xffff, /* fa8b */ 0xffff, /* fa8c */ 0xffff, /* fa8d */ 0xffff, /* fa8e */ 0xffff, /* fa8f */ 0xffff, /* fa90 */ 0xffff, /* fa91 */ 0xffff, /* fa92 */ 0xffff, /* fa93 */ 0xffff, /* fa94 */ 0xffff, /* fa95 */ 0xffff, /* fa96 */ 0xffff, /* fa97 */ 0xffff, /* fa98 */ 0xffff, /* fa99 */ 0xffff, /* fa9a */ 0xffff, /* fa9b */ 0xffff, /* fa9c */ 0xffff, /* fa9d */ 0xffff, /* fa9e */ 0xffff, /* fa9f */ 0xffff, /* faa0 */ 0xffff, /* faa1 */ 0xffff, /* faa2 */ 0xffff, /* faa3 */ 0xffff, /* faa4 */ 0xffff, /* faa5 */ 0xffff, /* faa6 */ 0xffff, /* faa7 */ 0xffff, /* faa8 */ 0xffff, /* faa9 */ 0xffff, /* faaa */ 0xffff, /* faab */ 0xffff, /* faac */ 0xffff, /* faad */ 0xffff, /* faae */ 0xffff, /* faaf */ 0xffff, /* fab0 */ 0xffff, /* fab1 */ 0xffff, /* fab2 */ 0xffff, /* fab3 */ 0xffff, /* fab4 */ 0xffff, /* fab5 */ 0xffff, /* fab6 */ 0xffff, /* fab7 */ 0xffff, /* fab8 */ 0xffff, /* fab9 */ 0xffff, /* faba */ 0xffff, /* fabb */ 0xffff, /* fabc */ 0xffff, /* fabd */ 0xffff, /* fabe */ 0xffff, /* fabf */ 0xffff, /* fac0 */ 0xffff, /* fac1 */ 0xffff, /* fac2 */ 0xffff, /* fac3 */ 0xffff, /* fac4 */ 0xffff, /* fac5 */ 0xffff, /* fac6 */ 0xffff, /* fac7 */ 0xffff, /* fac8 */ 0xffff, /* fac9 */ 0xffff, /* faca */ 0xffff, /* facb */ 0xffff, /* facc */ 0xffff, /* facd */ 0xffff, /* face */ 0xffff, /* facf */ 0xffff, /* fad0 */ 0xffff, /* fad1 */ 0xffff, /* fad2 */ 0xffff, /* fad3 */ 0xffff, /* fad4 */ 0xffff, /* fad5 */ 0xffff, /* fad6 */ 0xffff, /* fad7 */ 0xffff, /* fad8 */ 0xffff, /* fad9 */ 0xffff, /* fada */ 0xffff, /* fadb */ 0xffff, /* fadc */ 0xffff, /* fadd */ 0xffff, /* fade */ 0xffff, /* fadf */ 0xffff, /* fae0 */ 0xffff, /* fae1 */ 0xffff, /* fae2 */ 0xffff, /* fae3 */ 0xffff, /* fae4 */ 0xffff, /* fae5 */ 0xffff, /* fae6 */ 0xffff, /* fae7 */ 0xffff, /* fae8 */ 0xffff, /* fae9 */ 0xffff, /* faea */ 0xffff, /* faeb */ 0xffff, /* faec */ 0xffff, /* faed */ 0xffff, /* faee */ 0xffff, /* faef */ 0xffff, /* faf0 */ 0xffff, /* faf1 */ 0xffff, /* faf2 */ 0xffff, /* faf3 */ 0xffff, /* faf4 */ 0xffff, /* faf5 */ 0xffff, /* faf6 */ 0xffff, /* faf7 */ 0xffff, /* faf8 */ 0xffff, /* faf9 */ 0xffff, /* fafa */ 0xffff, /* fafb */ 0xffff, /* fafc */ 0xffff, /* fafd */ 0xffff, /* fafe */ 0xffff, /* faff */ 0xffff, /* fb00 */ 0xffff, /* fb01 */ 0xffff, /* fb02 */ 0xffff, /* fb03 */ 0xffff, /* fb04 */ 0xffff, /* fb05 */ 0xffff, /* fb06 */ 0xffff, /* fb07 */ 0xffff, /* fb08 */ 0xffff, /* fb09 */ 0xffff, /* fb0a */ 0xffff, /* fb0b */ 0xffff, /* fb0c */ 0xffff, /* fb0d */ 0xffff, /* fb0e */ 0xffff, /* fb0f */ 0xffff, /* fb10 */ 0xffff, /* fb11 */ 0xffff, /* fb12 */ 0xffff, /* fb13 */ 0xffff, /* fb14 */ 0xffff, /* fb15 */ 0xffff, /* fb16 */ 0xffff, /* fb17 */ 0xffff, /* fb18 */ 0xffff, /* fb19 */ 0xffff, /* fb1a */ 0xffff, /* fb1b */ 0xffff, /* fb1c */ 0xffff, /* fb1d */ 0xffff, /* fb1e */ 0xffff, /* fb1f */ 0xffff, /* fb20 */ 0xffff, /* fb21 */ 0xffff, /* fb22 */ 0xffff, /* fb23 */ 0xffff, /* fb24 */ 0xffff, /* fb25 */ 0xffff, /* fb26 */ 0xffff, /* fb27 */ 0xffff, /* fb28 */ 0xffff, /* fb29 */ 0xffff, /* fb2a */ 0xffff, /* fb2b */ 0xffff, /* fb2c */ 0xffff, /* fb2d */ 0xffff, /* fb2e */ 0xffff, /* fb2f */ 0xffff, /* fb30 */ 0xffff, /* fb31 */ 0xffff, /* fb32 */ 0xffff, /* fb33 */ 0xffff, /* fb34 */ 0xffff, /* fb35 */ 0xffff, /* fb36 */ 0xffff, /* fb37 */ 0xffff, /* fb38 */ 0xffff, /* fb39 */ 0xffff, /* fb3a */ 0xffff, /* fb3b */ 0xffff, /* fb3c */ 0xffff, /* fb3d */ 0xffff, /* fb3e */ 0xffff, /* fb3f */ 0xffff, /* fb40 */ 0xffff, /* fb41 */ 0xffff, /* fb42 */ 0xffff, /* fb43 */ 0xffff, /* fb44 */ 0xffff, /* fb45 */ 0xffff, /* fb46 */ 0xffff, /* fb47 */ 0xffff, /* fb48 */ 0xffff, /* fb49 */ 0xffff, /* fb4a */ 0xffff, /* fb4b */ 0xffff, /* fb4c */ 0xffff, /* fb4d */ 0xffff, /* fb4e */ 0xffff, /* fb4f */ 0xffff, /* fb50 */ 0xffff, /* fb51 */ 0xffff, /* fb52 */ 0xffff, /* fb53 */ 0xffff, /* fb54 */ 0xffff, /* fb55 */ 0xffff, /* fb56 */ 0xffff, /* fb57 */ 0xffff, /* fb58 */ 0xffff, /* fb59 */ 0xffff, /* fb5a */ 0xffff, /* fb5b */ 0xffff, /* fb5c */ 0xffff, /* fb5d */ 0xffff, /* fb5e */ 0xffff, /* fb5f */ 0xffff, /* fb60 */ 0xffff, /* fb61 */ 0xffff, /* fb62 */ 0xffff, /* fb63 */ 0xffff, /* fb64 */ 0xffff, /* fb65 */ 0xffff, /* fb66 */ 0xffff, /* fb67 */ 0xffff, /* fb68 */ 0xffff, /* fb69 */ 0xffff, /* fb6a */ 0xffff, /* fb6b */ 0xffff, /* fb6c */ 0xffff, /* fb6d */ 0xffff, /* fb6e */ 0xffff, /* fb6f */ 0xffff, /* fb70 */ 0xffff, /* fb71 */ 0xffff, /* fb72 */ 0xffff, /* fb73 */ 0xffff, /* fb74 */ 0xffff, /* fb75 */ 0xffff, /* fb76 */ 0xffff, /* fb77 */ 0xffff, /* fb78 */ 0xffff, /* fb79 */ 0xffff, /* fb7a */ 0xffff, /* fb7b */ 0xffff, /* fb7c */ 0xffff, /* fb7d */ 0xffff, /* fb7e */ 0xffff, /* fb7f */ 0xffff, /* fb80 */ 0xffff, /* fb81 */ 0xffff, /* fb82 */ 0xffff, /* fb83 */ 0xffff, /* fb84 */ 0xffff, /* fb85 */ 0xffff, /* fb86 */ 0xffff, /* fb87 */ 0xffff, /* fb88 */ 0xffff, /* fb89 */ 0xffff, /* fb8a */ 0xffff, /* fb8b */ 0xffff, /* fb8c */ 0xffff, /* fb8d */ 0xffff, /* fb8e */ 0xffff, /* fb8f */ 0xffff, /* fb90 */ 0xffff, /* fb91 */ 0xffff, /* fb92 */ 0xffff, /* fb93 */ 0xffff, /* fb94 */ 0xffff, /* fb95 */ 0xffff, /* fb96 */ 0xffff, /* fb97 */ 0xffff, /* fb98 */ 0xffff, /* fb99 */ 0xffff, /* fb9a */ 0xffff, /* fb9b */ 0xffff, /* fb9c */ 0xffff, /* fb9d */ 0xffff, /* fb9e */ 0xffff, /* fb9f */ 0xffff, /* fba0 */ 0xffff, /* fba1 */ 0xffff, /* fba2 */ 0xffff, /* fba3 */ 0xffff, /* fba4 */ 0xffff, /* fba5 */ 0xffff, /* fba6 */ 0xffff, /* fba7 */ 0xffff, /* fba8 */ 0xffff, /* fba9 */ 0xffff, /* fbaa */ 0xffff, /* fbab */ 0xffff, /* fbac */ 0xffff, /* fbad */ 0xffff, /* fbae */ 0xffff, /* fbaf */ 0xffff, /* fbb0 */ 0xffff, /* fbb1 */ 0xffff, /* fbb2 */ 0xffff, /* fbb3 */ 0xffff, /* fbb4 */ 0xffff, /* fbb5 */ 0xffff, /* fbb6 */ 0xffff, /* fbb7 */ 0xffff, /* fbb8 */ 0xffff, /* fbb9 */ 0xffff, /* fbba */ 0xffff, /* fbbb */ 0xffff, /* fbbc */ 0xffff, /* fbbd */ 0xffff, /* fbbe */ 0xffff, /* fbbf */ 0xffff, /* fbc0 */ 0xffff, /* fbc1 */ 0xffff, /* fbc2 */ 0xffff, /* fbc3 */ 0xffff, /* fbc4 */ 0xffff, /* fbc5 */ 0xffff, /* fbc6 */ 0xffff, /* fbc7 */ 0xffff, /* fbc8 */ 0xffff, /* fbc9 */ 0xffff, /* fbca */ 0xffff, /* fbcb */ 0xffff, /* fbcc */ 0xffff, /* fbcd */ 0xffff, /* fbce */ 0xffff, /* fbcf */ 0xffff, /* fbd0 */ 0xffff, /* fbd1 */ 0xffff, /* fbd2 */ 0xffff, /* fbd3 */ 0xffff, /* fbd4 */ 0xffff, /* fbd5 */ 0xffff, /* fbd6 */ 0xffff, /* fbd7 */ 0xffff, /* fbd8 */ 0xffff, /* fbd9 */ 0xffff, /* fbda */ 0xffff, /* fbdb */ 0xffff, /* fbdc */ 0xffff, /* fbdd */ 0xffff, /* fbde */ 0xffff, /* fbdf */ 0xffff, /* fbe0 */ 0xffff, /* fbe1 */ 0xffff, /* fbe2 */ 0xffff, /* fbe3 */ 0xffff, /* fbe4 */ 0xffff, /* fbe5 */ 0xffff, /* fbe6 */ 0xffff, /* fbe7 */ 0xffff, /* fbe8 */ 0xffff, /* fbe9 */ 0xffff, /* fbea */ 0xffff, /* fbeb */ 0xffff, /* fbec */ 0xffff, /* fbed */ 0xffff, /* fbee */ 0xffff, /* fbef */ 0xffff, /* fbf0 */ 0xffff, /* fbf1 */ 0xffff, /* fbf2 */ 0xffff, /* fbf3 */ 0xffff, /* fbf4 */ 0xffff, /* fbf5 */ 0xffff, /* fbf6 */ 0xffff, /* fbf7 */ 0xffff, /* fbf8 */ 0xffff, /* fbf9 */ 0xffff, /* fbfa */ 0xffff, /* fbfb */ 0xffff, /* fbfc */ 0xffff, /* fbfd */ 0xffff, /* fbfe */ 0xffff, /* fbff */ 0xffff, /* fc00 */ 0xffff, /* fc01 */ 0xffff, /* fc02 */ 0xffff, /* fc03 */ 0xffff, /* fc04 */ 0xffff, /* fc05 */ 0xffff, /* fc06 */ 0xffff, /* fc07 */ 0xffff, /* fc08 */ 0xffff, /* fc09 */ 0xffff, /* fc0a */ 0xffff, /* fc0b */ 0xffff, /* fc0c */ 0xffff, /* fc0d */ 0xffff, /* fc0e */ 0xffff, /* fc0f */ 0xffff, /* fc10 */ 0xffff, /* fc11 */ 0xffff, /* fc12 */ 0xffff, /* fc13 */ 0xffff, /* fc14 */ 0xffff, /* fc15 */ 0xffff, /* fc16 */ 0xffff, /* fc17 */ 0xffff, /* fc18 */ 0xffff, /* fc19 */ 0xffff, /* fc1a */ 0xffff, /* fc1b */ 0xffff, /* fc1c */ 0xffff, /* fc1d */ 0xffff, /* fc1e */ 0xffff, /* fc1f */ 0xffff, /* fc20 */ 0xffff, /* fc21 */ 0xffff, /* fc22 */ 0xffff, /* fc23 */ 0xffff, /* fc24 */ 0xffff, /* fc25 */ 0xffff, /* fc26 */ 0xffff, /* fc27 */ 0xffff, /* fc28 */ 0xffff, /* fc29 */ 0xffff, /* fc2a */ 0xffff, /* fc2b */ 0xffff, /* fc2c */ 0xffff, /* fc2d */ 0xffff, /* fc2e */ 0xffff, /* fc2f */ 0xffff, /* fc30 */ 0xffff, /* fc31 */ 0xffff, /* fc32 */ 0xffff, /* fc33 */ 0xffff, /* fc34 */ 0xffff, /* fc35 */ 0xffff, /* fc36 */ 0xffff, /* fc37 */ 0xffff, /* fc38 */ 0xffff, /* fc39 */ 0xffff, /* fc3a */ 0xffff, /* fc3b */ 0xffff, /* fc3c */ 0xffff, /* fc3d */ 0xffff, /* fc3e */ 0xffff, /* fc3f */ 0xffff, /* fc40 */ 0xffff, /* fc41 */ 0xffff, /* fc42 */ 0xffff, /* fc43 */ 0xffff, /* fc44 */ 0xffff, /* fc45 */ 0xffff, /* fc46 */ 0xffff, /* fc47 */ 0xffff, /* fc48 */ 0xffff, /* fc49 */ 0xffff, /* fc4a */ 0xffff, /* fc4b */ 0xffff, /* fc4c */ 0xffff, /* fc4d */ 0xffff, /* fc4e */ 0xffff, /* fc4f */ 0xffff, /* fc50 */ 0xffff, /* fc51 */ 0xffff, /* fc52 */ 0xffff, /* fc53 */ 0xffff, /* fc54 */ 0xffff, /* fc55 */ 0xffff, /* fc56 */ 0xffff, /* fc57 */ 0xffff, /* fc58 */ 0xffff, /* fc59 */ 0xffff, /* fc5a */ 0xffff, /* fc5b */ 0xffff, /* fc5c */ 0xffff, /* fc5d */ 0xffff, /* fc5e */ 0xffff, /* fc5f */ 0xffff, /* fc60 */ 0xffff, /* fc61 */ 0xffff, /* fc62 */ 0xffff, /* fc63 */ 0xffff, /* fc64 */ 0xffff, /* fc65 */ 0xffff, /* fc66 */ 0xffff, /* fc67 */ 0xffff, /* fc68 */ 0xffff, /* fc69 */ 0xffff, /* fc6a */ 0xffff, /* fc6b */ 0xffff, /* fc6c */ 0xffff, /* fc6d */ 0xffff, /* fc6e */ 0xffff, /* fc6f */ 0xffff, /* fc70 */ 0xffff, /* fc71 */ 0xffff, /* fc72 */ 0xffff, /* fc73 */ 0xffff, /* fc74 */ 0xffff, /* fc75 */ 0xffff, /* fc76 */ 0xffff, /* fc77 */ 0xffff, /* fc78 */ 0xffff, /* fc79 */ 0xffff, /* fc7a */ 0xffff, /* fc7b */ 0xffff, /* fc7c */ 0xffff, /* fc7d */ 0xffff, /* fc7e */ 0xffff, /* fc7f */ 0xffff, /* fc80 */ 0xffff, /* fc81 */ 0xffff, /* fc82 */ 0xffff, /* fc83 */ 0xffff, /* fc84 */ 0xffff, /* fc85 */ 0xffff, /* fc86 */ 0xffff, /* fc87 */ 0xffff, /* fc88 */ 0xffff, /* fc89 */ 0xffff, /* fc8a */ 0xffff, /* fc8b */ 0xffff, /* fc8c */ 0xffff, /* fc8d */ 0xffff, /* fc8e */ 0xffff, /* fc8f */ 0xffff, /* fc90 */ 0xffff, /* fc91 */ 0xffff, /* fc92 */ 0xffff, /* fc93 */ 0xffff, /* fc94 */ 0xffff, /* fc95 */ 0xffff, /* fc96 */ 0xffff, /* fc97 */ 0xffff, /* fc98 */ 0xffff, /* fc99 */ 0xffff, /* fc9a */ 0xffff, /* fc9b */ 0xffff, /* fc9c */ 0xffff, /* fc9d */ 0xffff, /* fc9e */ 0xffff, /* fc9f */ 0xffff, /* fca0 */ 0xffff, /* fca1 */ 0xffff, /* fca2 */ 0xffff, /* fca3 */ 0xffff, /* fca4 */ 0xffff, /* fca5 */ 0xffff, /* fca6 */ 0xffff, /* fca7 */ 0xffff, /* fca8 */ 0xffff, /* fca9 */ 0xffff, /* fcaa */ 0xffff, /* fcab */ 0xffff, /* fcac */ 0xffff, /* fcad */ 0xffff, /* fcae */ 0xffff, /* fcaf */ 0xffff, /* fcb0 */ 0xffff, /* fcb1 */ 0xffff, /* fcb2 */ 0xffff, /* fcb3 */ 0xffff, /* fcb4 */ 0xffff, /* fcb5 */ 0xffff, /* fcb6 */ 0xffff, /* fcb7 */ 0xffff, /* fcb8 */ 0xffff, /* fcb9 */ 0xffff, /* fcba */ 0xffff, /* fcbb */ 0xffff, /* fcbc */ 0xffff, /* fcbd */ 0xffff, /* fcbe */ 0xffff, /* fcbf */ 0xffff, /* fcc0 */ 0xffff, /* fcc1 */ 0xffff, /* fcc2 */ 0xffff, /* fcc3 */ 0xffff, /* fcc4 */ 0xffff, /* fcc5 */ 0xffff, /* fcc6 */ 0xffff, /* fcc7 */ 0xffff, /* fcc8 */ 0xffff, /* fcc9 */ 0xffff, /* fcca */ 0xffff, /* fccb */ 0xffff, /* fccc */ 0xffff, /* fccd */ 0xffff, /* fcce */ 0xffff, /* fccf */ 0xffff, /* fcd0 */ 0xffff, /* fcd1 */ 0xffff, /* fcd2 */ 0xffff, /* fcd3 */ 0xffff, /* fcd4 */ 0xffff, /* fcd5 */ 0xffff, /* fcd6 */ 0xffff, /* fcd7 */ 0xffff, /* fcd8 */ 0xffff, /* fcd9 */ 0xffff, /* fcda */ 0xffff, /* fcdb */ 0xffff, /* fcdc */ 0xffff, /* fcdd */ 0xffff, /* fcde */ 0xffff, /* fcdf */ 0xffff, /* fce0 */ 0xffff, /* fce1 */ 0xffff, /* fce2 */ 0xffff, /* fce3 */ 0xffff, /* fce4 */ 0xffff, /* fce5 */ 0xffff, /* fce6 */ 0xffff, /* fce7 */ 0xffff, /* fce8 */ 0xffff, /* fce9 */ 0xffff, /* fcea */ 0xffff, /* fceb */ 0xffff, /* fcec */ 0xffff, /* fced */ 0xffff, /* fcee */ 0xffff, /* fcef */ 0xffff, /* fcf0 */ 0xffff, /* fcf1 */ 0xffff, /* fcf2 */ 0xffff, /* fcf3 */ 0xffff, /* fcf4 */ 0xffff, /* fcf5 */ 0xffff, /* fcf6 */ 0xffff, /* fcf7 */ 0xffff, /* fcf8 */ 0xffff, /* fcf9 */ 0xffff, /* fcfa */ 0xffff, /* fcfb */ 0xffff, /* fcfc */ 0xffff, /* fcfd */ 0xffff, /* fcfe */ 0xffff, /* fcff */ 0xffff, /* fd00 */ 0xffff, /* fd01 */ 0xffff, /* fd02 */ 0xffff, /* fd03 */ 0xffff, /* fd04 */ 0xffff, /* fd05 */ 0xffff, /* fd06 */ 0xffff, /* fd07 */ 0xffff, /* fd08 */ 0xffff, /* fd09 */ 0xffff, /* fd0a */ 0xffff, /* fd0b */ 0xffff, /* fd0c */ 0xffff, /* fd0d */ 0xffff, /* fd0e */ 0xffff, /* fd0f */ 0xffff, /* fd10 */ 0xffff, /* fd11 */ 0xffff, /* fd12 */ 0xffff, /* fd13 */ 0xffff, /* fd14 */ 0xffff, /* fd15 */ 0xffff, /* fd16 */ 0xffff, /* fd17 */ 0xffff, /* fd18 */ 0xffff, /* fd19 */ 0xffff, /* fd1a */ 0xffff, /* fd1b */ 0xffff, /* fd1c */ 0xffff, /* fd1d */ 0xffff, /* fd1e */ 0xffff, /* fd1f */ 0xffff, /* fd20 */ 0xffff, /* fd21 */ 0xffff, /* fd22 */ 0xffff, /* fd23 */ 0xffff, /* fd24 */ 0xffff, /* fd25 */ 0xffff, /* fd26 */ 0xffff, /* fd27 */ 0xffff, /* fd28 */ 0xffff, /* fd29 */ 0xffff, /* fd2a */ 0xffff, /* fd2b */ 0xffff, /* fd2c */ 0xffff, /* fd2d */ 0xffff, /* fd2e */ 0xffff, /* fd2f */ 0xffff, /* fd30 */ 0xffff, /* fd31 */ 0xffff, /* fd32 */ 0xffff, /* fd33 */ 0xffff, /* fd34 */ 0xffff, /* fd35 */ 0xffff, /* fd36 */ 0xffff, /* fd37 */ 0xffff, /* fd38 */ 0xffff, /* fd39 */ 0xffff, /* fd3a */ 0xffff, /* fd3b */ 0xffff, /* fd3c */ 0xffff, /* fd3d */ 0xffff, /* fd3e */ 0xffff, /* fd3f */ 0xffff, /* fd40 */ 0xffff, /* fd41 */ 0xffff, /* fd42 */ 0xffff, /* fd43 */ 0xffff, /* fd44 */ 0xffff, /* fd45 */ 0xffff, /* fd46 */ 0xffff, /* fd47 */ 0xffff, /* fd48 */ 0xffff, /* fd49 */ 0xffff, /* fd4a */ 0xffff, /* fd4b */ 0xffff, /* fd4c */ 0xffff, /* fd4d */ 0xffff, /* fd4e */ 0xffff, /* fd4f */ 0xffff, /* fd50 */ 0xffff, /* fd51 */ 0xffff, /* fd52 */ 0xffff, /* fd53 */ 0xffff, /* fd54 */ 0xffff, /* fd55 */ 0xffff, /* fd56 */ 0xffff, /* fd57 */ 0xffff, /* fd58 */ 0xffff, /* fd59 */ 0xffff, /* fd5a */ 0xffff, /* fd5b */ 0xffff, /* fd5c */ 0xffff, /* fd5d */ 0xffff, /* fd5e */ 0xffff, /* fd5f */ 0xffff, /* fd60 */ 0xffff, /* fd61 */ 0xffff, /* fd62 */ 0xffff, /* fd63 */ 0xffff, /* fd64 */ 0xffff, /* fd65 */ 0xffff, /* fd66 */ 0xffff, /* fd67 */ 0xffff, /* fd68 */ 0xffff, /* fd69 */ 0xffff, /* fd6a */ 0xffff, /* fd6b */ 0xffff, /* fd6c */ 0xffff, /* fd6d */ 0xffff, /* fd6e */ 0xffff, /* fd6f */ 0xffff, /* fd70 */ 0xffff, /* fd71 */ 0xffff, /* fd72 */ 0xffff, /* fd73 */ 0xffff, /* fd74 */ 0xffff, /* fd75 */ 0xffff, /* fd76 */ 0xffff, /* fd77 */ 0xffff, /* fd78 */ 0xffff, /* fd79 */ 0xffff, /* fd7a */ 0xffff, /* fd7b */ 0xffff, /* fd7c */ 0xffff, /* fd7d */ 0xffff, /* fd7e */ 0xffff, /* fd7f */ 0xffff, /* fd80 */ 0xffff, /* fd81 */ 0xffff, /* fd82 */ 0xffff, /* fd83 */ 0xffff, /* fd84 */ 0xffff, /* fd85 */ 0xffff, /* fd86 */ 0xffff, /* fd87 */ 0xffff, /* fd88 */ 0xffff, /* fd89 */ 0xffff, /* fd8a */ 0xffff, /* fd8b */ 0xffff, /* fd8c */ 0xffff, /* fd8d */ 0xffff, /* fd8e */ 0xffff, /* fd8f */ 0xffff, /* fd90 */ 0xffff, /* fd91 */ 0xffff, /* fd92 */ 0xffff, /* fd93 */ 0xffff, /* fd94 */ 0xffff, /* fd95 */ 0xffff, /* fd96 */ 0xffff, /* fd97 */ 0xffff, /* fd98 */ 0xffff, /* fd99 */ 0xffff, /* fd9a */ 0xffff, /* fd9b */ 0xffff, /* fd9c */ 0xffff, /* fd9d */ 0xffff, /* fd9e */ 0xffff, /* fd9f */ 0xffff, /* fda0 */ 0xffff, /* fda1 */ 0xffff, /* fda2 */ 0xffff, /* fda3 */ 0xffff, /* fda4 */ 0xffff, /* fda5 */ 0xffff, /* fda6 */ 0xffff, /* fda7 */ 0xffff, /* fda8 */ 0xffff, /* fda9 */ 0xffff, /* fdaa */ 0xffff, /* fdab */ 0xffff, /* fdac */ 0xffff, /* fdad */ 0xffff, /* fdae */ 0xffff, /* fdaf */ 0xffff, /* fdb0 */ 0xffff, /* fdb1 */ 0xffff, /* fdb2 */ 0xffff, /* fdb3 */ 0xffff, /* fdb4 */ 0xffff, /* fdb5 */ 0xffff, /* fdb6 */ 0xffff, /* fdb7 */ 0xffff, /* fdb8 */ 0xffff, /* fdb9 */ 0xffff, /* fdba */ 0xffff, /* fdbb */ 0xffff, /* fdbc */ 0xffff, /* fdbd */ 0xffff, /* fdbe */ 0xffff, /* fdbf */ 0xffff, /* fdc0 */ 0xffff, /* fdc1 */ 0xffff, /* fdc2 */ 0xffff, /* fdc3 */ 0xffff, /* fdc4 */ 0xffff, /* fdc5 */ 0xffff, /* fdc6 */ 0xffff, /* fdc7 */ 0xffff, /* fdc8 */ 0xffff, /* fdc9 */ 0xffff, /* fdca */ 0xffff, /* fdcb */ 0xffff, /* fdcc */ 0xffff, /* fdcd */ 0xffff, /* fdce */ 0xffff, /* fdcf */ 0xffff, /* fdd0 */ 0xffff, /* fdd1 */ 0xffff, /* fdd2 */ 0xffff, /* fdd3 */ 0xffff, /* fdd4 */ 0xffff, /* fdd5 */ 0xffff, /* fdd6 */ 0xffff, /* fdd7 */ 0xffff, /* fdd8 */ 0xffff, /* fdd9 */ 0xffff, /* fdda */ 0xffff, /* fddb */ 0xffff, /* fddc */ 0xffff, /* fddd */ 0xffff, /* fdde */ 0xffff, /* fddf */ 0xffff, /* fde0 */ 0xffff, /* fde1 */ 0xffff, /* fde2 */ 0xffff, /* fde3 */ 0xffff, /* fde4 */ 0xffff, /* fde5 */ 0xffff, /* fde6 */ 0xffff, /* fde7 */ 0xffff, /* fde8 */ 0xffff, /* fde9 */ 0xffff, /* fdea */ 0xffff, /* fdeb */ 0xffff, /* fdec */ 0xffff, /* fded */ 0xffff, /* fdee */ 0xffff, /* fdef */ 0xffff, /* fdf0 */ 0xffff, /* fdf1 */ 0xffff, /* fdf2 */ 0xffff, /* fdf3 */ 0xffff, /* fdf4 */ 0xffff, /* fdf5 */ 0xffff, /* fdf6 */ 0xffff, /* fdf7 */ 0xffff, /* fdf8 */ 0xffff, /* fdf9 */ 0xffff, /* fdfa */ 0xffff, /* fdfb */ 0xffff, /* fdfc */ 0xffff, /* fdfd */ 0xffff, /* fdfe */ 0xffff, /* fdff */ 0xffff, /* fe00 */ 0xffff, /* fe01 */ 0xffff, /* fe02 */ 0xffff, /* fe03 */ 0xffff, /* fe04 */ 0xffff, /* fe05 */ 0xffff, /* fe06 */ 0xffff, /* fe07 */ 0xffff, /* fe08 */ 0xffff, /* fe09 */ 0xffff, /* fe0a */ 0xffff, /* fe0b */ 0xffff, /* fe0c */ 0xffff, /* fe0d */ 0xffff, /* fe0e */ 0xffff, /* fe0f */ 0xffff, /* fe10 */ 0xffff, /* fe11 */ 0xffff, /* fe12 */ 0xffff, /* fe13 */ 0xffff, /* fe14 */ 0xffff, /* fe15 */ 0xffff, /* fe16 */ 0xffff, /* fe17 */ 0xffff, /* fe18 */ 0xffff, /* fe19 */ 0xffff, /* fe1a */ 0xffff, /* fe1b */ 0xffff, /* fe1c */ 0xffff, /* fe1d */ 0xffff, /* fe1e */ 0xffff, /* fe1f */ 0xffff, /* fe20 */ 0xffff, /* fe21 */ 0xffff, /* fe22 */ 0xffff, /* fe23 */ 0xffff, /* fe24 */ 0xffff, /* fe25 */ 0xffff, /* fe26 */ 0xffff, /* fe27 */ 0xffff, /* fe28 */ 0xffff, /* fe29 */ 0xffff, /* fe2a */ 0xffff, /* fe2b */ 0xffff, /* fe2c */ 0xffff, /* fe2d */ 0xffff, /* fe2e */ 0xffff, /* fe2f */ 0xffff, /* fe30 */ 0xffff, /* fe31 */ 0xffff, /* fe32 */ 0xffff, /* fe33 */ 0xffff, /* fe34 */ 0xffff, /* fe35 */ 0xffff, /* fe36 */ 0xffff, /* fe37 */ 0xffff, /* fe38 */ 0xffff, /* fe39 */ 0xffff, /* fe3a */ 0xffff, /* fe3b */ 0xffff, /* fe3c */ 0xffff, /* fe3d */ 0xffff, /* fe3e */ 0xffff, /* fe3f */ 0xffff, /* fe40 */ 0xffff, /* fe41 */ 0xffff, /* fe42 */ 0xffff, /* fe43 */ 0xffff, /* fe44 */ 0xffff, /* fe45 */ 0xffff, /* fe46 */ 0xffff, /* fe47 */ 0xffff, /* fe48 */ 0xffff, /* fe49 */ 0xffff, /* fe4a */ 0xffff, /* fe4b */ 0xffff, /* fe4c */ 0xffff, /* fe4d */ 0xffff, /* fe4e */ 0xffff, /* fe4f */ 0xffff, /* fe50 */ 0xffff, /* fe51 */ 0xffff, /* fe52 */ 0xffff, /* fe53 */ 0xffff, /* fe54 */ 0xffff, /* fe55 */ 0xffff, /* fe56 */ 0xffff, /* fe57 */ 0xffff, /* fe58 */ 0xffff, /* fe59 */ 0xffff, /* fe5a */ 0xffff, /* fe5b */ 0xffff, /* fe5c */ 0xffff, /* fe5d */ 0xffff, /* fe5e */ 0xffff, /* fe5f */ 0xffff, /* fe60 */ 0xffff, /* fe61 */ 0xffff, /* fe62 */ 0xffff, /* fe63 */ 0xffff, /* fe64 */ 0xffff, /* fe65 */ 0xffff, /* fe66 */ 0xffff, /* fe67 */ 0xffff, /* fe68 */ 0xffff, /* fe69 */ 0xffff, /* fe6a */ 0xffff, /* fe6b */ 0xffff, /* fe6c */ 0xffff, /* fe6d */ 0xffff, /* fe6e */ 0xffff, /* fe6f */ 0xffff, /* fe70 */ 0xffff, /* fe71 */ 0xffff, /* fe72 */ 0xffff, /* fe73 */ 0xffff, /* fe74 */ 0xffff, /* fe75 */ 0xffff, /* fe76 */ 0xffff, /* fe77 */ 0xffff, /* fe78 */ 0xffff, /* fe79 */ 0xffff, /* fe7a */ 0xffff, /* fe7b */ 0xffff, /* fe7c */ 0xffff, /* fe7d */ 0xffff, /* fe7e */ 0xffff, /* fe7f */ 0xffff, /* fe80 */ 0xffff, /* fe81 */ 0xffff, /* fe82 */ 0xffff, /* fe83 */ 0xffff, /* fe84 */ 0xffff, /* fe85 */ 0xffff, /* fe86 */ 0xffff, /* fe87 */ 0xffff, /* fe88 */ 0xffff, /* fe89 */ 0xffff, /* fe8a */ 0xffff, /* fe8b */ 0xffff, /* fe8c */ 0xffff, /* fe8d */ 0xffff, /* fe8e */ 0xffff, /* fe8f */ 0xffff, /* fe90 */ 0xffff, /* fe91 */ 0xffff, /* fe92 */ 0xffff, /* fe93 */ 0xffff, /* fe94 */ 0xffff, /* fe95 */ 0xffff, /* fe96 */ 0xffff, /* fe97 */ 0xffff, /* fe98 */ 0xffff, /* fe99 */ 0xffff, /* fe9a */ 0xffff, /* fe9b */ 0xffff, /* fe9c */ 0xffff, /* fe9d */ 0xffff, /* fe9e */ 0xffff, /* fe9f */ 0xffff, /* fea0 */ 0xffff, /* fea1 */ 0xffff, /* fea2 */ 0xffff, /* fea3 */ 0xffff, /* fea4 */ 0xffff, /* fea5 */ 0xffff, /* fea6 */ 0xffff, /* fea7 */ 0xffff, /* fea8 */ 0xffff, /* fea9 */ 0xffff, /* feaa */ 0xffff, /* feab */ 0xffff, /* feac */ 0xffff, /* fead */ 0xffff, /* feae */ 0xffff, /* feaf */ 0xffff, /* feb0 */ 0xffff, /* feb1 */ 0xffff, /* feb2 */ 0xffff, /* feb3 */ 0xffff, /* feb4 */ 0xffff, /* feb5 */ 0xffff, /* feb6 */ 0xffff, /* feb7 */ 0xffff, /* feb8 */ 0xffff, /* feb9 */ 0xffff, /* feba */ 0xffff, /* febb */ 0xffff, /* febc */ 0xffff, /* febd */ 0xffff, /* febe */ 0xffff, /* febf */ 0xffff, /* fec0 */ 0xffff, /* fec1 */ 0xffff, /* fec2 */ 0xffff, /* fec3 */ 0xffff, /* fec4 */ 0xffff, /* fec5 */ 0xffff, /* fec6 */ 0xffff, /* fec7 */ 0xffff, /* fec8 */ 0xffff, /* fec9 */ 0xffff, /* feca */ 0xffff, /* fecb */ 0xffff, /* fecc */ 0xffff, /* fecd */ 0xffff, /* fece */ 0xffff, /* fecf */ 0xffff, /* fed0 */ 0xffff, /* fed1 */ 0xffff, /* fed2 */ 0xffff, /* fed3 */ 0xffff, /* fed4 */ 0xffff, /* fed5 */ 0xffff, /* fed6 */ 0xffff, /* fed7 */ 0xffff, /* fed8 */ 0xffff, /* fed9 */ 0xffff, /* feda */ 0xffff, /* fedb */ 0xffff, /* fedc */ 0xffff, /* fedd */ 0xffff, /* fede */ 0xffff, /* fedf */ 0xffff, /* fee0 */ 0xffff, /* fee1 */ 0xffff, /* fee2 */ 0xffff, /* fee3 */ 0xffff, /* fee4 */ 0xffff, /* fee5 */ 0xffff, /* fee6 */ 0xffff, /* fee7 */ 0xffff, /* fee8 */ 0xffff, /* fee9 */ 0xffff, /* feea */ 0xffff, /* feeb */ 0xffff, /* feec */ 0xffff, /* feed */ 0xffff, /* feee */ 0xffff, /* feef */ 0xffff, /* fef0 */ 0xffff, /* fef1 */ 0xffff, /* fef2 */ 0xffff, /* fef3 */ 0xffff, /* fef4 */ 0xffff, /* fef5 */ 0xffff, /* fef6 */ 0xffff, /* fef7 */ 0xffff, /* fef8 */ 0xffff, /* fef9 */ 0xffff, /* fefa */ 0xffff, /* fefb */ 0xffff, /* fefc */ 0xffff, /* fefd */ 0xffff, /* fefe */ 0xffff, /* feff */ 0xffff, /* ff00 */ 0xffff, /* ff01 */ 0xffff, /* ff02 */ 0xffff, /* ff03 */ 0xffff, /* ff04 */ 0xffff, /* ff05 */ 0xffff, /* ff06 */ 0xffff, /* ff07 */ 0xffff, /* ff08 */ 0xffff, /* ff09 */ 0xffff, /* ff0a */ 0xffff, /* ff0b */ 0xffff, /* ff0c */ 0xffff, /* ff0d */ 0xffff, /* ff0e */ 0xffff, /* ff0f */ 0xffff, /* ff10 */ 0xffff, /* ff11 */ 0xffff, /* ff12 */ 0xffff, /* ff13 */ 0xffff, /* ff14 */ 0xffff, /* ff15 */ 0xffff, /* ff16 */ 0xffff, /* ff17 */ 0xffff, /* ff18 */ 0xffff, /* ff19 */ 0xffff, /* ff1a */ 0xffff, /* ff1b */ 0xffff, /* ff1c */ 0xffff, /* ff1d */ 0xffff, /* ff1e */ 0xffff, /* ff1f */ 0xffff, /* ff20 */ 0xffff, /* ff21 */ 0xffff, /* ff22 */ 0xffff, /* ff23 */ 0xffff, /* ff24 */ 0xffff, /* ff25 */ 0xffff, /* ff26 */ 0xffff, /* ff27 */ 0xffff, /* ff28 */ 0xffff, /* ff29 */ 0xffff, /* ff2a */ 0xffff, /* ff2b */ 0xffff, /* ff2c */ 0xffff, /* ff2d */ 0xffff, /* ff2e */ 0xffff, /* ff2f */ 0xffff, /* ff30 */ 0xffff, /* ff31 */ 0xffff, /* ff32 */ 0xffff, /* ff33 */ 0xffff, /* ff34 */ 0xffff, /* ff35 */ 0xffff, /* ff36 */ 0xffff, /* ff37 */ 0xffff, /* ff38 */ 0xffff, /* ff39 */ 0xffff, /* ff3a */ 0xffff, /* ff3b */ 0xffff, /* ff3c */ 0xffff, /* ff3d */ 0xffff, /* ff3e */ 0xffff, /* ff3f */ 0xffff, /* ff40 */ 0xffff, /* ff41 */ 0xffff, /* ff42 */ 0xffff, /* ff43 */ 0xffff, /* ff44 */ 0xffff, /* ff45 */ 0xffff, /* ff46 */ 0xffff, /* ff47 */ 0xffff, /* ff48 */ 0xffff, /* ff49 */ 0xffff, /* ff4a */ 0xffff, /* ff4b */ 0xffff, /* ff4c */ 0xffff, /* ff4d */ 0xffff, /* ff4e */ 0xffff, /* ff4f */ 0xffff, /* ff50 */ 0xffff, /* ff51 */ 0xffff, /* ff52 */ 0xffff, /* ff53 */ 0xffff, /* ff54 */ 0xffff, /* ff55 */ 0xffff, /* ff56 */ 0xffff, /* ff57 */ 0xffff, /* ff58 */ 0xffff, /* ff59 */ 0xffff, /* ff5a */ 0xffff, /* ff5b */ 0xffff, /* ff5c */ 0xffff, /* ff5d */ 0xffff, /* ff5e */ 0xffff, /* ff5f */ 0xffff, /* ff60 */ 0xffff, /* ff61 */ 0xffff, /* ff62 */ 0xffff, /* ff63 */ 0xffff, /* ff64 */ 0xffff, /* ff65 */ 0xffff, /* ff66 */ 0xffff, /* ff67 */ 0xffff, /* ff68 */ 0xffff, /* ff69 */ 0xffff, /* ff6a */ 0xffff, /* ff6b */ 0xffff, /* ff6c */ 0xffff, /* ff6d */ 0xffff, /* ff6e */ 0xffff, /* ff6f */ 0xffff, /* ff70 */ 0xffff, /* ff71 */ 0xffff, /* ff72 */ 0xffff, /* ff73 */ 0xffff, /* ff74 */ 0xffff, /* ff75 */ 0xffff, /* ff76 */ 0xffff, /* ff77 */ 0xffff, /* ff78 */ 0xffff, /* ff79 */ 0xffff, /* ff7a */ 0xffff, /* ff7b */ 0xffff, /* ff7c */ 0xffff, /* ff7d */ 0xffff, /* ff7e */ 0xffff, /* ff7f */ 0xffff, /* ff80 */ 0xffff, /* ff81 */ 0xffff, /* ff82 */ 0xffff, /* ff83 */ 0xffff, /* ff84 */ 0xffff, /* ff85 */ 0xffff, /* ff86 */ 0xffff, /* ff87 */ 0xffff, /* ff88 */ 0xffff, /* ff89 */ 0xffff, /* ff8a */ 0xffff, /* ff8b */ 0xffff, /* ff8c */ 0xffff, /* ff8d */ 0xffff, /* ff8e */ 0xffff, /* ff8f */ 0xffff, /* ff90 */ 0xffff, /* ff91 */ 0xffff, /* ff92 */ 0xffff, /* ff93 */ 0xffff, /* ff94 */ 0xffff, /* ff95 */ 0xffff, /* ff96 */ 0xffff, /* ff97 */ 0xffff, /* ff98 */ 0xffff, /* ff99 */ 0xffff, /* ff9a */ 0xffff, /* ff9b */ 0xffff, /* ff9c */ 0xffff, /* ff9d */ 0xffff, /* ff9e */ 0xffff, /* ff9f */ 0xffff, /* ffa0 */ 0xffff, /* ffa1 */ 0xffff, /* ffa2 */ 0xffff, /* ffa3 */ 0xffff, /* ffa4 */ 0xffff, /* ffa5 */ 0xffff, /* ffa6 */ 0xffff, /* ffa7 */ 0xffff, /* ffa8 */ 0xffff, /* ffa9 */ 0xffff, /* ffaa */ 0xffff, /* ffab */ 0xffff, /* ffac */ 0xffff, /* ffad */ 0xffff, /* ffae */ 0xffff, /* ffaf */ 0xffff, /* ffb0 */ 0xffff, /* ffb1 */ 0xffff, /* ffb2 */ 0xffff, /* ffb3 */ 0xffff, /* ffb4 */ 0xffff, /* ffb5 */ 0xffff, /* ffb6 */ 0xffff, /* ffb7 */ 0xffff, /* ffb8 */ 0xffff, /* ffb9 */ 0xffff, /* ffba */ 0xffff, /* ffbb */ 0xffff, /* ffbc */ 0xffff, /* ffbd */ 0xffff, /* ffbe */ 0xffff, /* ffbf */ 0xffff, /* ffc0 */ 0xffff, /* ffc1 */ 0xffff, /* ffc2 */ 0xffff, /* ffc3 */ 0xffff, /* ffc4 */ 0xffff, /* ffc5 */ 0xffff, /* ffc6 */ 0xffff, /* ffc7 */ 0xffff, /* ffc8 */ 0xffff, /* ffc9 */ 0xffff, /* ffca */ 0xffff, /* ffcb */ 0xffff, /* ffcc */ 0xffff, /* ffcd */ 0xffff, /* ffce */ 0xffff, /* ffcf */ 0xffff, /* ffd0 */ 0xffff, /* ffd1 */ 0xffff, /* ffd2 */ 0xffff, /* ffd3 */ 0xffff, /* ffd4 */ 0xffff, /* ffd5 */ 0xffff, /* ffd6 */ 0xffff, /* ffd7 */ 0xffff, /* ffd8 */ 0xffff, /* ffd9 */ 0xffff, /* ffda */ 0xffff, /* ffdb */ 0xffff, /* ffdc */ 0xffff, /* ffdd */ 0xffff, /* ffde */ 0xffff, /* ffdf */ 0xffff, /* ffe0 */ 0xffff, /* ffe1 */ 0xffff, /* ffe2 */ 0xffff, /* ffe3 */ 0xffff, /* ffe4 */ 0xffff, /* ffe5 */ 0xffff, /* ffe6 */ 0xffff, /* ffe7 */ 0xffff, /* ffe8 */ 0xffff, /* ffe9 */ 0xffff, /* ffea */ 0xffff, /* ffeb */ 0xffff, /* ffec */ 0xffff, /* ffed */ 0xffff, /* ffee */ 0xffff, /* ffef */ 0xffff, /* fff0 */ 0xffff, /* fff1 */ 0xffff, /* fff2 */ 0xffff, /* fff3 */ 0xffff, /* fff4 */ 0xffff, /* fff5 */ 0xffff, /* fff6 */ 0xffff, /* fff7 */ 0xffff, /* fff8 */ 0xffff, /* fff9 */ 0xffff, /* fffa */ 0xffff, /* fffb */ 0xffff, /* fffc */ 0xffff, /* fffd */ 0xffff, /* fffe */ 0xffff, /* ffff */ 0xffff }; aranym-1.1.0/src/natfeat/hostfs.h0000664000175000017500000001563513454637621015103 0ustar joyjoy/* * hostfs.h - HostFS routines - declaration * * Copyright (c) 2001-2004 STanda of ARAnyM development team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _HOSTFS_H #define _HOSTFS_H #ifdef HOSTFS_SUPPORT #include "nf_base.h" #include "tools.h" #include "win32_supp.h" #include class HostFs : public NF_Base { // the maximum pathname length allowed // note: this would be nice to be rewriten using // the std::string to become unlimited static const int MAXPATHNAMELEN = 2048; struct ExtDrive { int16 driveNumber; memptr fsDrv; memptr fsDevDrv; int32 fsFlags; char *hostRoot; char *mountPoint; bool halfSensitive; public: // copy constructor ExtDrive() { driveNumber = -1; fsDrv = 0; fsDevDrv = 0; fsFlags = 0; hostRoot = NULL; mountPoint = NULL; halfSensitive = true; } ExtDrive( ExtDrive *old ); ~ExtDrive() { free( hostRoot ); free( mountPoint ); } }; struct XfsFsFile { XfsFsFile *parent; uint32 refCount; uint32 childCount; bool created; // only xfs_creat() was issued (no dev_open yet) memptr locks; char *name; }; struct XfsCookie { memptr xfs; // m68k filesystem pointer uint16 dev; // device number uint16 aux; // used by FreeMiNT (custom filsystem field) XfsFsFile *index; // the filesystem implementation specific structure (host one) ExtDrive *drv; // dev->drv mapping is found during the cookie fetch }; struct ExtFile { XfsCookie fc; // file cookie like in FreeMiNT int16 flags; // open flags int16 links; // number of MetaDOS's pointers that points to this int hostFd; // host filedescriptor of the file }; struct XfsDir { XfsCookie fc; // cookie for this directory uint16 index; // index of the current entry uint16 flags; // flags (e. g. tos or not) DIR *hostDir; // used DIR (host one) }; // mountpoints map typedef std::map MountMap; MountMap mounts; #if SIZEOF_INT != 4 || DEBUG_NON32BIT // host filedescriptor mapper NativeTypeMapper fdMapper; #endif void debugCookie( HostFs::XfsCookie *fc ); private: void freeMounts(); protected: void convert_to_xattr( ExtDrive *drv, const struct stat *statBuf, memptr xattrp ); void convert_to_stat64( ExtDrive *drv, const struct stat *statBuf, memptr statp ); public: HostFs(); ~HostFs(); void reset(); /** * MetaDos DOS driver dispatch functions. **/ const char *name() { return "HOSTFS"; } bool isSuperOnly() { return true; } int32 dispatch( uint32 emulop ); /** * Host to ARAnyM structure conversion routines. **/ mode_t modeMint2Host( uint16 m ); uint16 modeHost2Mint( mode_t m ); uint16 modeHost2TOS( mode_t m ); int flagsMint2Host( uint16 flags ); int16 flagsHost2Mint( int flags ); uint16 time2dos( time_t t ); uint16 date2dos( time_t t ); void datetime2tm( uint32 dtm, struct tm* ttm ); time_t datetime2utc(uint32 dtm); /** * Path conversions. * * Note: This is the most sophisticated thing in this object. **/ void transformFileName( char* dest, const char* source ); bool getHostFileName( char* result, ExtDrive* drv, const char* pathName, const char* name ); void fetchXFSC( XfsCookie *fc, memptr filep ); void flushXFSC( XfsCookie *fc, memptr filep ); void fetchXFSF( ExtFile *extFile, memptr filep ); void flushXFSF( ExtFile *extFile, memptr filep ); void fetchXFSD( XfsDir *dirh, memptr dirp ); void flushXFSD( XfsDir *dirh, memptr dirp ); char *cookie2Pathname( ExtDrive *drv, XfsFsFile *fs, const char *name, char *buf ); char *cookie2Pathname( XfsCookie *fc, const char *name, char *buf ); int32 host_stat64 ( XfsCookie *fc, const char *pathname, struct stat *statbuf ); int32 host_statvfs ( const char *fpathName, void *buff ); char *host_readlink( const char *pathname, char *target, int len ); DIR *host_opendir( const char *name ); void xfs_freefs( XfsFsFile *fs ); int32 xfs_native_init( int16 devnum, memptr mountpoint, memptr hostroot, bool halfSensitive, memptr filesys, memptr filesys_devdrv ); int32 xfs_root( uint16 dev, XfsCookie *fc ); int32 xfs_fscntl ( XfsCookie *dir, memptr name, int16 cmd, int32 arg ); int32 xfs_dupcookie( XfsCookie *newCook, XfsCookie *oldCook ); int32 xfs_release( XfsCookie *fc ); int32 xfs_getxattr( XfsCookie *fc, memptr name, memptr xattrp ); int32 xfs_stat64( XfsCookie *fc, memptr name, memptr statp ); int32 xfs_chattr( XfsCookie *fc, int16 attr ); int32 xfs_chmod( XfsCookie *fc, uint16 mode ); int32 xfs_getdev( XfsCookie *fc, memptr devspecial ); int32 xfs_lookup( XfsCookie *dir, memptr name, XfsCookie *fc ); int32 xfs_getname( XfsCookie *relto, XfsCookie *dir, memptr pathName, int16 size ); int32 xfs_creat( XfsCookie *dir, memptr name, uint16 mode, int16 flags, XfsCookie *fc ); int32 xfs_rename( XfsCookie *olddir, memptr oldname, XfsCookie *newdir, memptr newname ); int32 xfs_remove( XfsCookie *dir, memptr name ); int32 xfs_pathconf( XfsCookie *fc, int16 which ); int32 xfs_opendir( XfsDir *dirh, uint16 flags ); int32 xfs_closedir( XfsDir *dirh ); int32 xfs_readdir( XfsDir *dirh, memptr buff, int16 len, XfsCookie *fc ); int32 xfs_rewinddir( XfsDir *dirh ); int32 xfs_mkdir( XfsCookie *dir, memptr name, uint16 mode ); int32 xfs_rmdir( XfsCookie *dir, memptr name ); int32 xfs_dfree( XfsCookie *dir, memptr buff ); int32 xfs_readlabel( XfsCookie *dir, memptr buff, int16 len ); int32 xfs_symlink( XfsCookie *dir, memptr fromname, memptr toname ); int32 xfs_readlink( XfsCookie *dir, memptr buff, int16 len ); int32 xfs_hardlink( XfsCookie *fromDir, memptr fromname, XfsCookie *toDir, memptr toname ); int32 xfs_dev_open(ExtFile *fp); int32 xfs_dev_close(ExtFile *fp, int16 pid); int32 xfs_dev_ioctl ( ExtFile *fp, int16 mode, memptr buff); int32 xfs_dev_datime( ExtFile *fp, memptr datetimep, int16 wflag); int32 xfs_dev_read( ExtFile *fp, memptr buffer, uint32 count); int32 xfs_dev_write(ExtFile *fp, memptr buffer, uint32 count); int32 xfs_dev_lseek(ExtFile *fp, int32 offset, int16 seekmode); }; #endif // HOSTFS_SUPPORT #endif // _HOSTFS_H aranym-1.1.0/src/natfeat/hostfs.cpp0000664000175000017500000023555613454637621015444 0ustar joyjoy/* * hostfs.cpp - HostFS routines * * Copyright (c) 2001-2009 STanda of ARAnyM development team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #ifdef HOSTFS_SUPPORT #include "cpu_emulation.h" #include "main.h" #include "parameters.h" #include "host_filesys.h" #include "toserror.h" #include "hostfs.h" #include "tools.h" #include "win32_supp.h" #define DEBUG 0 #include "debug.h" #if 0 # define DFNAME(x) x #else # define DFNAME(x) #endif #ifdef HAVE_SYS_VFS_H # include #endif #ifdef HAVE_EXT2FS_EXT2_FS_H # include #else #if defined(__linux__) #define EXT2_IOC_GETFLAGS _IOR('f', 1, long) #define EXT2_IOC_SETFLAGS _IOW('f', 2, long) #define EXT2_IOC_GETVERSION _IOR('v', 1, long) #define EXT2_IOC_SETVERSION _IOW('v', 2, long) #define EXT2_IOC_GETVERSION_NEW _IOR('f', 3, long) #define EXT2_IOC_SETVERSION_NEW _IOW('f', 4, long) #define EXT2_IOC_GROUP_EXTEND _IOW('f', 7, unsigned long) #define EXT2_IOC_GROUP_ADD _IOW('f', 8,struct ext2_new_group_input) #define EXT4_IOC_GROUP_ADD _IOW('f', 8,struct ext4_new_group_input) #define EXT4_IOC_RESIZE_FS _IOW('f', 16, __u64) #endif #endif # include # include # include #ifdef OS_mint #include #include #endif /* OS_mint */ #ifdef __CYGWIN__ #include /* for FIONREAD */ #endif #include "../../atari/hostfs/hostfs_nfapi.h" /* XFS_xx and DEV_xx enum */ #ifndef __has_builtin #define __has_builtin(x) 0 #define __builtin_available(...) 1 #else #if !__has_builtin(__builtin_available) #define __builtin_available(...) 1 #endif #endif // please remember to leave this define _after_ the reqired system headers!!! // some systems does define this to some important value for them.... #ifndef O_BINARY # define O_BINARY 0 #endif #ifndef S_ISSOCK # define S_ISSOCK(m) 0 # undef S_IFSOCK # define S_IFSOCK 0 #endif #ifdef HAVE_SYS_STATVFS_H # define STATVFS struct statvfs #else # define STATVFS struct statfs #endif // for the FS_EXT3 using host.xfs (recently changed) #define FS_EXT_3 0x800 #define SHR(a, b) \ (-1 >> 1 == -1 \ ? (a) >> (b) \ : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0)) static long gmtoff(time_t t) { struct tm *tp; if ((tp = localtime(&t)) == NULL) return 0; #ifdef HAVE_STRUCT_TM_TM_GMTOFF return tp->tm_gmtoff; #else { struct tm gtm; struct tm ltm; time_t lt; long a4, b4, a100, b100, a400, b400, intervening_leap_days, years, days; ltm = *tp; lt = mktime(<m); if (lt == (time_t) -1) { /* mktime returns -1 for errors, but -1 is also a valid time_t value. Check whether an error really occurred. */ struct tm tm; if ((tp = localtime(<)) == NULL) return 0; tm = *tp; if ((ltm.tm_sec ^ tm.tm_sec) || (ltm.tm_min ^ tm.tm_min) || (ltm.tm_hour ^ tm.tm_hour) || (ltm.tm_mday ^ tm.tm_mday) || (ltm.tm_mon ^ tm.tm_mon) || (ltm.tm_year ^ tm.tm_year)) return 0; } if ((tp = gmtime(<)) == NULL) return 0; gtm = *tp; a4 = SHR(ltm.tm_year, 2) + SHR(1900, 2) - !(ltm.tm_year & 3); b4 = SHR(gtm.tm_year, 2) + SHR(1900, 2) - !(gtm.tm_year & 3); a100 = a4 / 25 - (a4 % 25 < 0); b100 = b4 / 25 - (b4 % 25 < 0); a400 = SHR(a100, 2); b400 = SHR(b100, 2); intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400); years = ltm.tm_year - gtm.tm_year; days = (365 * years + intervening_leap_days + (ltm.tm_yday - gtm.tm_yday)); return (60 * (60 * (24 * days + (ltm.tm_hour - gtm.tm_hour)) + (ltm.tm_min - gtm.tm_min)) + (ltm.tm_sec - gtm.tm_sec)); } #endif } static long mint_fake_gmtoff(time_t t) { long offset; /* * The mint kernel currently uses a fixed timezone offset * for calculating UTC timestamps (the one for the current * local time). So we must correct that here. */ offset = gmtoff(t); offset -= gmtoff(time(NULL)); return offset; } #if defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC # ifdef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC # define STAT_TIMESPEC(st, st_xtim) ((st)->st_xtim) # else # define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim.tv_nsec) # endif #elif defined HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC # define STAT_TIMESPEC(st, st_xtim) ((st)->st_xtim##espec) #elif defined HAVE_STRUCT_STAT_ST_ATIMENSEC # define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim##ensec) #elif defined HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC # define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim.st__tim.tv_nsec) #endif /* Return the nanosecond component of *ST's access time. */ static long int get_stat_atime_ns (struct stat const *st) { # if defined STAT_TIMESPEC return STAT_TIMESPEC (st, st_atim).tv_nsec; # elif defined STAT_TIMESPEC_NS return STAT_TIMESPEC_NS (st, st_atim); # else (void) st; return 0; # endif } /* Return the nanosecond component of *ST's status change time. */ static long int get_stat_ctime_ns (struct stat const *st) { # if defined STAT_TIMESPEC return STAT_TIMESPEC (st, st_ctim).tv_nsec; # elif defined STAT_TIMESPEC_NS return STAT_TIMESPEC_NS (st, st_ctim); # else (void) st; return 0; # endif } #ifndef HAVE_FUTIMES int futimes(int fd, const struct timeval tv[2]) { UNUSED(fd); UNUSED(tv); errno = ENOSYS; return -1; } #endif /* Return the nanosecond component of *ST's data modification time. */ static long int get_stat_mtime_ns (struct stat const *st) { # if defined STAT_TIMESPEC return STAT_TIMESPEC (st, st_mtim).tv_nsec; # elif defined STAT_TIMESPEC_NS return STAT_TIMESPEC_NS (st, st_mtim); # else (void) st; return 0; # endif } int32 HostFs::dispatch(uint32 fncode) { XfsCookie fc; XfsCookie resFc; XfsDir dirh; ExtFile extFile; D(bug("HOSTFS: calling %d", fncode)); int32 ret = 0; switch (fncode) { case GET_VERSION: ret = HOSTFS_NFAPI_VERSION; D(bug("HOSTFS: version %d", ret)); break; case GET_DRIVE_BITS: ret = 0; for(int i=0; i<(int)(sizeof(bx_options.aranymfs.drive)/sizeof(bx_options.aranymfs.drive[0])); i++) if (bx_options.aranymfs.drive[i].rootPath[0]) ret |= (1 << i); D(bug("HOSTFS: drvBits %08x", (uint32)ret)); break; case XFS_INIT: ret = xfs_native_init( getParameter(0), getParameter(1), getParameter(2), getParameter(3), getParameter(4), getParameter(5) ); break; case XFS_ROOT: D(bug("%s", "fs_root")); fetchXFSC( &fc, getParameter(1) ); ret = xfs_root( getParameter(0), /* dev */ &fc ); /* fcookie */ flushXFSC( &fc, getParameter(1) ); break; case XFS_LOOKUP: D(bug("%s", "fs_lookup")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_lookup( &fc, (memptr)getParameter(1), /* name */ &resFc ); flushXFSC( &fc, getParameter(0) ); flushXFSC( &resFc, getParameter(2) ); break; case XFS_CREATE: D(bug("%s", "fs_creat")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_creat( &fc, (memptr)getParameter(1) /* name */, getParameter(2) /* mode */, getParameter(3) /* attrib */, &resFc ); flushXFSC( &fc, getParameter(0) ); flushXFSC( &resFc, getParameter(4) ); break; case XFS_GETDEV: D(bug("%s", "fs_getdev")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_getdev( &fc, getParameter(1) /* *devspecial */ ); break; case XFS_GETXATTR: D(bug("%s", "fs_getxattr")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_getxattr( &fc, 0, getParameter(1) /* XATTR* */ ); flushXFSC( &fc, getParameter(0) ); break; case XFS_STAT64: D(bug("%s", "fs_stat64")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_stat64( &fc, 0, getParameter(1) /* STAT* */ ); flushXFSC( &fc, getParameter(0) ); break; case XFS_CHATTR: D(bug("%s", "fs_chattr")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_chattr( &fc, getParameter(1) /* mode */ ); break; case XFS_CHOWN: D(bug("%s", "fs_chown")); D(bug("fs_chown - TODO: NOT IMPLEMENTED!")); ret = TOS_E_OK; break; case XFS_CHMOD: D(bug("%s", "fs_chmod")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_chmod( &fc, getParameter(1) /* mode */ ); break; case XFS_MKDIR: D(bug("%s", "fs_mkdir")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_mkdir( &fc, (memptr)getParameter(1) /* name */, getParameter(2) /* mode */ ); break; case XFS_RMDIR: D(bug("%s", "fs_rmdir")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_rmdir( &fc, (memptr)getParameter(1) /* name */ ); break; case XFS_REMOVE: D(bug("%s", "fs_remove")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_remove( &fc, (memptr)getParameter(1) /* name */ ); flushXFSC( &fc, getParameter(0) ); break; case XFS_GETNAME: D(bug("%s", "fs_getname")); fetchXFSC( &fc, getParameter(0) ); fetchXFSC( &resFc, getParameter(1) ); ret = xfs_getname( &fc, &resFc, (memptr)getParameter(2), // pathName getParameter(3) ); // size // not needed: flushXFSC( &fc, getParameter(0) ); // not needed: flushXFSC( &resFc, getParameter(1) ); break; case XFS_RENAME: D(bug("%s", "fs_rename")); fetchXFSC( &fc, getParameter(0) ); fetchXFSC( &resFc, getParameter(2) ); ret = xfs_rename( &fc, (memptr)getParameter(1), /* oldName */ &resFc, (memptr)getParameter(3) /* newName */ ); // not needed: flushXFSC( &fc, getParameter(0) ); // not needed: flushXFSC( &resFc, getParameter(2) ); break; case XFS_OPENDIR: D(bug("%s", "fs_opendir")); fetchXFSD( &dirh, getParameter(0) ); ret = xfs_opendir( &dirh, getParameter(1) /* flags */ ); flushXFSD( &dirh, getParameter(0) ); break; case XFS_READDIR: D(bug("%s", "fs_readdir")); fetchXFSD( &dirh, getParameter(0) ); ret = xfs_readdir( &dirh, (memptr)getParameter(1) /* name */, getParameter(2) /* namelen */, &resFc ); flushXFSD( &dirh, getParameter(0) ); flushXFSC( &resFc, getParameter(3) ); break; case XFS_REWINDDIR: D(bug("%s", "fs_rewinddir")); fetchXFSD( &dirh, getParameter(0) ); ret = xfs_rewinddir( &dirh ); flushXFSD( &dirh, getParameter(0) ); break; case XFS_CLOSEDIR: D(bug("%s", "fs_closedir")); fetchXFSD( &dirh, getParameter(0) ); ret = xfs_closedir( &dirh ); flushXFSD( &dirh, getParameter(0) ); break; case XFS_PATHCONF: D(bug("%s", "fs_pathconf")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_pathconf( &fc, getParameter(1) /* which */ ); flushXFSC( &fc, getParameter(0) ); break; case XFS_DFREE: D(bug("%s", "fs_dfree")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_dfree( &fc, (memptr)getParameter(1) /* buff */ ); break; case XFS_WRITELABEL: D(bug("%s", "fs_writelabel")); ret = TOS_EINVFN; break; case XFS_READLABEL: D(bug("%s", "fs_readlabel")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_readlabel( &fc, (memptr)getParameter(1) /* buff */, getParameter(2) /* len */ ); break; case XFS_SYMLINK: D(bug("%s", "fs_symlink")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_symlink( &fc, (memptr)getParameter(1), /* fromName */ (memptr)getParameter(2) /* toName */ ); break; case XFS_READLINK: D(bug("%s", "fs_readlink")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_readlink( &fc, (memptr)getParameter(1) /* buff */, getParameter(2) /* len */ ); break; case XFS_HARDLINK: D(bug("%s", "fs_hardlink")); XfsCookie fromDir, toDir; fetchXFSC( &fromDir, getParameter(0) ); fetchXFSC( &toDir, getParameter(2) ); ret = xfs_hardlink( &fromDir, (memptr)getParameter(1), /* fromName */ &toDir, (memptr)getParameter(3) /* toName */ ); break; case XFS_FSCNTL: fetchXFSC( &fc, getParameter(0) ); D(bug("fs_fscntl '%c'<<8|%d", (getParameter(2)>>8)&0xff ? (char)(getParameter(2)>>8)&0xff : 0x20, (char)(getParameter(2)&0xff))); ret = xfs_fscntl( &fc, (memptr)getParameter(1) /* name */, getParameter(2) /* cmd */, getParameter(3) /* arg */ ); flushXFSC( &fc, getParameter(0) ); break; case XFS_DSKCHNG: D(bug("%s", "fs_dskchng (dummy - not needed)")); ret = TOS_E_OK; break; case XFS_RELEASE: D(bug("%s", "fs_release")); fetchXFSC( &fc, getParameter(0) ); ret = xfs_release( &fc ); flushXFSC( &fc, getParameter(0) ); break; case XFS_DUPCOOKIE: fetchXFSC( &resFc, getParameter(0) ); fetchXFSC( &fc, getParameter(1) ); D(bug("fs_dupcookie( %s )", cookie2Pathname( fc.drv, fc.index, NULL, NULL ))); ret = xfs_dupcookie( &resFc, &fc ); flushXFSC( &resFc, getParameter(0) ); flushXFSC( &fc, getParameter(1) ); break; case XFS_SYNC: D(bug("%s", "fs_sync")); ret = TOS_EINVFN; break; case XFS_MKNOD: D(bug("%s", "fs_mknod")); ret = TOS_EINVFN; break; case XFS_UNMOUNT: D(bug("%s", "fs_unmount")); ret = TOS_EINVFN; break; case DEV_OPEN: D(bug("%s", "fs_dev_open")); fetchXFSF( &extFile, getParameter(0) ); ret = xfs_dev_open( &extFile ); flushXFSF( &extFile, getParameter(0) ); break; case DEV_WRITE: D(bug("%s", "fs_dev_write")); fetchXFSF( &extFile, getParameter(0) ); ret = xfs_dev_write( &extFile, (memptr)getParameter(1) /* buffer */, getParameter(2) /* bytes */ ); flushXFSF( &extFile, getParameter(0) ); break; case DEV_READ: D(bug("%s", "fs_dev_read")); fetchXFSF( &extFile, getParameter(0) ); ret = xfs_dev_read( &extFile, (memptr)getParameter(1) /* buffer */, getParameter(2) /* bytes */ ); flushXFSF( &extFile, getParameter(0) ); break; case DEV_LSEEK: D(bug("%s", "fs_dev_lseek")); fetchXFSF( &extFile, getParameter(0) ); ret = xfs_dev_lseek( &extFile, getParameter(1), // offset getParameter(2) ); // seekmode // not needed: flushXFSF( &extFile, getParameter(0) ); break; case DEV_IOCTL: fetchXFSF( &extFile, getParameter(0) ); D(bug("fs_dev_ioctl '%c'<<8|%d", (getParameter(1)>>8)&0xff ? (char)(getParameter(1)>>8)&0xff : 0x20, (char)(getParameter(1)&0xff))); ret = xfs_dev_ioctl(&extFile, getParameter(1), (memptr)getParameter(2)); flushXFSF( &extFile, getParameter(0) ); break; case DEV_DATIME: D(bug("%s", "fs_dev_datime")); fetchXFSF( &extFile, getParameter(0) ); ret = xfs_dev_datime( &extFile, (memptr)getParameter(1), // datetimep getParameter(2) );// wflag flushXFSF( &extFile, getParameter(0) ); break; case DEV_CLOSE: D(bug("%s", "fs_dev_close")); fetchXFSF( &extFile, getParameter(0) ); ret = xfs_dev_close( &extFile, 0 ); // pid flushXFSF( &extFile, getParameter(0) ); break; case DEV_SELECT: D(bug("%s", "fs_dev_select")); D(bug("fs_dev_select - TODO: NOT IMPLEMENTED!")); ret = TOS_E_OK; break; case DEV_UNSELECT: D(bug("%s", "fs_dev_unselect")); D(bug("fs_dev_unselect - TODO: NOT IMPLEMENTED!")); ret = TOS_E_OK; break; default: panicbug("Unknown HOSTFS subID %d", fncode); ret = TOS_EINVFN; } return ret; } void HostFs::fetchXFSC( XfsCookie *fc, memptr filep ) { fc->xfs = ReadInt32( filep ); // fs fc->dev = ReadInt16( filep + 4 ); // dev fc->aux = ReadInt16( filep + 6 ); // aux fc->index = (XfsFsFile*)MAP32TOVOIDP( ReadInt32( filep + 8 ) ); // index MountMap::iterator it = mounts.find(fc->dev); fc->drv = ( it != mounts.end() ? it->second : NULL ); } void HostFs::flushXFSC( XfsCookie *fc, memptr filep ) { WriteInt32( filep , fc->xfs ); WriteInt16( filep + 4, fc->dev ); WriteInt16( filep + 6, fc->aux ); WriteInt32( filep + 8, (uint32)MAPVOIDPTO32( fc->index ) ); } void HostFs::fetchXFSF( ExtFile *extFile, memptr filep ) { extFile->links = ReadInt16( filep ); extFile->flags = ReadInt16( filep + 2 ); #if SIZEOF_INT != 4 || DEBUG_NON32BIT extFile->hostFd = fdMapper.getNative( ReadInt32( filep + 4 ) ); // offset not needed (replaced by the host fd) #else extFile->hostFd = (int)ReadInt32( filep + 4 ); // offset not needed (replaced by the host fd) #endif /* devinfo unused */ fetchXFSC( &extFile->fc, filep + 12 ); // sizeof(12) } void HostFs::flushXFSF( ExtFile *extFile, memptr filep ) { WriteInt16( filep, extFile->links ); WriteInt16( filep + 2, extFile->flags ); #if SIZEOF_INT != 4 || DEBUG_NON32BIT WriteInt32( filep + 4, fdMapper.get32bit( extFile->hostFd ) ); // instead of the offset #else WriteInt32( filep + 4, (uint32)extFile->hostFd ); // instead of the offset #endif /* devinfo unused */ flushXFSC( &extFile->fc, filep + 12 ); // sizeof(12) } void HostFs::fetchXFSD( XfsDir *dirh, memptr dirp ) { fetchXFSC( (XfsCookie*)dirh, dirp ); // sizeof(12) dirh->index = ReadInt16( dirp + 12 ); dirh->flags = ReadInt16( dirp + 14 ); Atari2Host_memcpy( (char*)&dirh->hostDir, dirp + 18, sizeof(dirh->hostDir) ); } void HostFs::flushXFSD( XfsDir *dirh, memptr dirp ) { flushXFSC( (XfsCookie*)dirh, dirp ); // sizeof(12) WriteInt16( dirp + 12, dirh->index ); WriteInt16( dirp + 14, dirh->flags ); Host2Atari_memcpy( dirp + 18, (char*)&dirh->hostDir, sizeof(dirh->hostDir) ); } uint16 HostFs::time2dos(time_t t) { struct tm *x; x = localtime (&t); D2(bug("HOSTFS: time2dos (%d:%d:%d)", x->tm_hour, x->tm_min, x->tm_sec)); return ((x->tm_sec&0x3f)>>1)|((x->tm_min&0x3f)<<5)|((x->tm_hour&0x1f)<<11); } uint16 HostFs::date2dos(time_t t) { struct tm *x; x = localtime (&t); D2(bug("HOSTFS: date2dos (%d,%d,%d)", x->tm_mday, x->tm_mon, x->tm_year-80+1980)); return x->tm_mday|((x->tm_mon+1)<<5)|(MAX(x->tm_year-80,0)<<9); } void HostFs::datetime2tm(uint32 dtm, struct tm* ttm) { ttm->tm_mday = dtm & 0x1f; ttm->tm_mon = ((dtm>>5) & 0x0f) - 1; ttm->tm_year = ((dtm>>9) & 0x7f) + 80; ttm->tm_sec = ((dtm>>16) & 0x1f) << 1; ttm->tm_min = (dtm>>21) & 0x3f; ttm->tm_hour = (dtm>>27) & 0x1f; ttm->tm_isdst = -1; } time_t HostFs::datetime2utc(uint32 dtm) { struct tm ttm; datetime2tm(dtm, &ttm); return mktime(&ttm); } uint16 HostFs::modeHost2TOS(mode_t m) { return ( S_ISDIR(m) ) ? 0x10 : 0; /* FIXME */ // if (!(da == 0 || ((da != 0) && (attribs != 8)) || ((attribs | 0x21) & da))) } /** * Convert the unix file stat.st_mode value into a FreeMiNT's one. * * File permissions and mode bitmask according * to the FreeMiNT 1.16.x stat.h header file. * * Name Mask Permission * S_IXOTH 0000001 Execute permission for all others. * S_IWOTH 0000002 Write permission for all others. * S_IROTH 0000004 Read permission for all others. * S_IXGRP 0000010 Execute permission for processes with same group ID. * S_IWGRP 0000020 Write permission for processes with same group ID. * S_IRGRP 0000040 Read permission for processes with same group ID. * S_IXUSR 0000100 Execute permission for processes with same user ID. * S_IWUSR 0000200 Write permission for processes with same user ID. * S_IRUSR 0000400 Read permission for processes with same user ID. * S_ISVTX 0001000 Sticky bit * S_ISGID 0002000 Alter effective group ID when executing this file. * S_ISUID 0004000 Alter effective user ID when executing this file. * * S_IFSOCK 0010000 File is a FreeMiNTNet socket file. * S_IFCHR 0020000 File is a BIOS (character) special file. * S_IFDIR 0040000 File is a directory. * S_IFBLK 0060000 File is a block special file. * S_IFREG 0100000 File is a regular file. * S_IFIFO 0120000 File is a FIFO (named pipe). * S_IMEM 0140000 File is a memory region. * S_IFLNK 0160000 File is a symbolic link. */ uint16 HostFs::modeHost2Mint(mode_t m) { uint16 result = 0; // permissions if ( m & S_IXOTH ) result |= 00001; if ( m & S_IWOTH ) result |= 00002; if ( m & S_IROTH ) result |= 00004; if ( m & S_IXGRP ) result |= 00010; if ( m & S_IWGRP ) result |= 00020; if ( m & S_IRGRP ) result |= 00040; if ( m & S_IXUSR ) result |= 00100; if ( m & S_IWUSR ) result |= 00200; if ( m & S_IRUSR ) result |= 00400; if ( m & S_ISVTX ) result |= 01000; if ( m & S_ISGID ) result |= 02000; if ( m & S_ISUID ) result |= 04000; if ( S_ISSOCK(m) ) result |= 0010000; if ( S_ISCHR(m) ) result |= 0020000; if ( S_ISDIR(m) ) result |= 0040000; if ( S_ISBLK(m) ) result |= 0060000; if ( S_ISREG(m) ) result |= 0100000; if ( S_ISFIFO(m) ) result |= 0120000; // Linux doesn't have this! if ( S_ISMEM(m) ) result |= 0140000; if ( S_ISLNK(m) ) result |= 0160000; D2(bug(" (statmode: %#4o)", result)); return result; } mode_t HostFs::modeMint2Host(uint16 m) { mode_t result = 0; // permissions if ( m & 00001 ) result |= S_IXOTH; if ( m & 00002 ) result |= S_IWOTH; if ( m & 00004 ) result |= S_IROTH; if ( m & 00010 ) result |= S_IXGRP; if ( m & 00020 ) result |= S_IWGRP; if ( m & 00040 ) result |= S_IRGRP; if ( m & 00100 ) result |= S_IXUSR; if ( m & 00200 ) result |= S_IWUSR; if ( m & 00400 ) result |= S_IRUSR; if ( m & 01000 ) result |= S_ISVTX; if ( m & 02000 ) result |= S_ISGID; if ( m & 04000 ) result |= S_ISUID; if ( (m & 0170000) == 0010000 ) result |= S_IFSOCK; if ( (m & 0170000) == 0020000 ) result |= S_IFCHR; if ( (m & 0170000) == 0040000 ) result |= S_IFDIR; if ( (m & 0170000) == 0060000 ) result |= S_IFBLK; if ( (m & 0170000) == 0100000 ) result |= S_IFREG; if ( (m & 0170000) == 0120000 ) result |= S_IFIFO; // Linux doesn't have this! if ( m & 0140000 ) result |= S_IFMEM; if ( (m & 0170000) == 0160000 ) result |= S_IFLNK; D2(bug(" (statmode: %#04o)", result)); return result; } int HostFs::flagsMint2Host(uint16 flags) { int res = O_RDONLY; /* exclusive */ if (flags & 0x1) res = O_WRONLY; if (flags & 0x2) res = O_RDWR; if ((flags & 0x3) == 0x3) /* FreeMiNT kernel O_EXEC */ res = O_RDONLY; if (flags & 0x200) res |= O_CREAT; if (flags & 0x400) res |= O_TRUNC; if (flags & 0x800) res |= O_EXCL; if (flags & 0x1000) res |= O_APPEND; if (flags & 0x100) res |= O_NONBLOCK; if (flags & 0x4000) res |= O_NOCTTY; return res; } int16 HostFs::flagsHost2Mint(int flags) { int16 res = 0; /* default read only */ /* exclusive */ if (!(flags & (O_WRONLY|O_RDWR))) res = 0; if (flags & O_WRONLY) res = 1; /* write only/ kludge to avoid files being created */ if (flags & O_RDWR) res = 2; if (flags & O_CREAT) res |= 0x200; if (flags & O_TRUNC) res |= 0x400; if (flags & O_EXCL) res |= 0x800; if (flags & O_APPEND) res |= 0x1000; if (flags & O_NONBLOCK) res |= 0x100; if (flags & O_NOCTTY) res |= 0x4000; return res; } static int strapply_tolower(int c) { return tolower(c); } static int strapply_toupper(int c) { return toupper(c); } /*** * Long filename to 8+3 transformation. * The extensions, if exists in the original filename, are only shortened * and never appended with anything due to the filename extension driven * file type recognition posibility used by nearly all desktop programs. * * The translation rules are: * The filename that has no extension and: * - is max 11 chars long is splited to the filename and extension * just by inserting a dot to the 8th position (example 1). * - is longer than 11 chars is shortened to 8 chars and appended * with the hashcode extension (~XX... example 2). * The filename is over 8 chars: * the filename is shortened to 5 and appended with the hashcode put * into the name part (not the extention... example 3). The extension * shortend to max 3 chars and appended too. * The extension is over 3 chars long: * The filename is appended with the hashcode and the extension is * shortened to max 3 chars (example 4). * * Examples: * 1. longnamett -> longname.tt * 2. longfilename -> longfile.~XX * 3. longfilename.ext -> longf~XX.ext * 4. file.html -> file~XX.htm * * @param dest The buffer to put the filename (max 12 char). * @param source The source filename string. * **/ void HostFs::transformFileName( char* dest, const char* source ) { DFNAME(bug("HOSTFS: transformFileName(\"%s\")...", source)); // . and .. system folders if ( strcmp(source, ".") == 0 || strcmp(source, "..") == 0) { strcpy(dest, source); // copy to final 8+3 buffer return; } // Get file name (strip off file extension) char *dot = (char *)strrchr( source, '.' ); // ignore leading dot if (dot == source) dot = NULL; // find out dot position ssize_t len = strlen( source ); ssize_t nameLen = ( dot == NULL ) ? len : dot - source; ssize_t extLen = ( nameLen == len ) ? 0 : len - nameLen - 1; // copy the name... (max 12 chars due to the buffer length limitation) strncpy(dest, source, 12); dest[12] = '\0'; DFNAME(bug("HOSTFS: transformFileName:... nameLen = %i, extLen = %i", nameLen, extLen)); if ( nameLen > 8 || extLen > 3 || // the filename is longer than the 8+3 standard ( nameLen <= 8 && extLen == 0 && dot != NULL ) ) // there is a dot at the end of the filename { // calculate a hash value from the long name uint32 hashValue = 0; for( int i=0; source[i]; i++ ) hashValue += (hashValue << 3) + source[i]; // hash value hex string as the unique shortenning char hashString[10]; sprintf( hashString, "%08x", hashValue ); hashString[5] = '~'; char *hashStr = &hashString[5]; if ( extLen == 0 ) { if ( nameLen >= 12 ) { // filename is longer than 8+3 and has no extension // -> put the hash string as the file extension nameLen = 8; extLen = 3; dot = hashStr; } else { // filename is max 11 chars long and no extension if ( dot == NULL ) { // no dot at the end -> insert the . char into the name after the 8th char nameLen = 8; dot = (char*)source + nameLen; } else { // there is a . at the end of the filename nameLen = MIN(8,nameLen); dot = hashStr; } extLen = 3; } } else { // shorten the name part to max 5 nameLen = MIN(5,nameLen); // add the hash string memcpy( &dest[nameLen], hashStr, 4 ); // including the trailing \0! nameLen+=3; dot++; } if ( extLen > 0 ) { // and the extension extLen = MIN(3,extLen); dest[nameLen] = '.'; strncpy(&dest[nameLen+1], dot, extLen); } dest[ nameLen+extLen+1 ] = '\0'; } // replace spaces and dots in the filename with the _ char *temp = dest; char *brkPos; while ( (brkPos = strpbrk( temp, " ." )) != NULL ) { *brkPos = '_'; temp = brkPos + 1; } // set the extension separator if ( dot != NULL ) dest[ nameLen ] = '.'; // upper case conversion strapply( dest, strapply_toupper ); DFNAME(bug("HOSTFS: /transformFileName(\"%s\") -> \"%s\"", source, dest)); } bool HostFs::getHostFileName( char* result, ExtDrive* drv, const char* pathName, const char* name ) { struct stat statBuf; DFNAME(bug("HOSTFS: getHostFileName (%s,%s)", pathName, name)); // if the whole thing fails then take the requested name as is // it also completes the path strcpy( result, name ); if ( ! strpbrk( name, "*?" ) && // if is it NOT a mask stat(pathName, &statBuf) ) // and if such file NOT really exists { // the TOS filename was adjusted (lettercase, length, ..) char testName[MAXPATHNAMELEN]; const char *finalName = name; struct dirent *dirEntry; bool nonexisting = false; DFNAME(bug(" (stat failed)")); // shorten the name from the pathName; *result = '\0'; DIR *dh = host_opendir( pathName ); if ( dh == NULL ) { DFNAME(bug("HOSTFS: getHostFileName dopendir(%s) failed.", pathName)); goto lbl_final; // should never happen } while ( true ) { if ((dirEntry = readdir( dh )) == NULL) { DFNAME(bug("HOSTFS: getHostFileName dreaddir: no more files.")); nonexisting = true; goto lbl_final; } if ( !drv || drv->halfSensitive ) if ( ! strcasecmp( name, dirEntry->d_name ) ) { finalName = dirEntry->d_name; DFNAME(bug("HOSTFS: getHostFileName found final file.")); goto lbl_final; } transformFileName( testName, dirEntry->d_name ); DFNAME(bug("HOSTFS: getHostFileName (%s,%s,%s)", name, testName, dirEntry->d_name)); if ( ! strcmp( testName, name ) ) { // FIXME isFile test (maybe?) // this follows one more argument to be passed finalName = dirEntry->d_name; goto lbl_final; } } lbl_final: DFNAME(bug("HOSTFS: getHostFileName final (%s,%s)", name, finalName)); strcpy( result, finalName ); // in case of halfsensitive filesystem, // an upper case filename should be lowecase? if ( nonexisting && (!drv || drv->halfSensitive) ) { bool isUpper = true; for( char *curr = result; *curr; curr++ ) { if ( *curr != toupper( *curr ) ) { isUpper = false; break; } } if ( isUpper ) { // lower case conversion strapply( result, strapply_tolower ); } } if ( dh != NULL ) closedir( dh ); } else { DFNAME(bug(" (stat OK)")); } return true; } /* * build a complete linux filepath * --> fs something like a handle to a known file * name a postfix to the path of fs or NULL, if no postfix * buf buffer for the complete filepath or NULL if static one * should be used. * <-- complete filepath or NULL if error */ char *HostFs::cookie2Pathname( ExtDrive *drv, HostFs::XfsFsFile *fs, const char *name, char *buf ) { static char sbuf[MAXPATHNAMELEN]; /* FIXME: size should told by unix */ if (!buf) // use static buffer buf = sbuf; if (!fs) { // we are at root D2(bug("HOSTFS: cookie2pathname root? '%s'", name)); if (!name) return NULL; // in the root cookie there is the host path that // needs no modification (drv->hostRoot) // -> copy it to the buffer and return strcpy(buf, name); return buf; } // recurse to deep if (!cookie2Pathname(drv, fs->parent, fs->name, buf)) return NULL; // returning from the recursion -> append the appropriate filename if (name && *name) { // make sure there's the right trailing dir separator int len = strlen(buf); if (len > 0) { char *last = buf + len-1; if (*last == '\\' || *last == '/') { *last = '\0'; } strcat(buf, DIRSEPARATOR); } getHostFileName( buf + strlen(buf), drv, buf, name ); } D2(bug("HOSTFS: cookie2pathname '%s'", buf)); return buf; } char *HostFs::cookie2Pathname( HostFs::XfsCookie *fc, const char *name, char *buf ) { return cookie2Pathname( fc->drv, fc->index, name, buf ); } #if DEBUG void HostFs::debugCookie( HostFs::XfsCookie *fc ) { D(bug( "release():\n" " fc = %08lx\n" " fs = %08lx\n" " dev = %04x\n" " aux = %04x\n" " index = %08lx\n" " parent = %08lx\n" " name = \"%s\"\n" " usecnt = %d\n" " childcnt = %d\n", (long)fc, (long)fc->xfs, (int)fc->dev, (int)fc->aux, (long)fc->index, (long)fc->index->parent, fc->index->name, fc->index->refCount, fc->index->childCount )); } #endif int32 HostFs::host_statvfs( const char *fpathName, void *buff ) { D(bug("HOSTFS: fs_dfree (%s)", fpathName)); #ifdef HAVE_SYS_STATVFS_H if ( statvfs(fpathName, (STATVFS *)buff) ) #else if ( statfs(fpathName, (STATVFS *)buff) ) #endif return errnoHost2Mint(errno,TOS_EFILNF); return TOS_E_OK; } int32 HostFs::xfs_dfree( XfsCookie *dir, uint32 diskinfop ) { char fpathName[MAXPATHNAMELEN]; cookie2Pathname( dir, NULL, fpathName ); STATVFS buff; int32 res = host_statvfs( fpathName, &buff); if ( res != TOS_E_OK ) return res; /* ULONG b_free */ WriteInt32( diskinfop , buff.f_bavail ); /* ULONG b_total */ WriteInt32( diskinfop + 4, buff.f_blocks ); /* ULONG b_secsize */ WriteInt32( diskinfop + 8, buff.f_bsize /* not 512 according to stonx_fs */ ); /* ULONG b_clsize */ WriteInt32( diskinfop + 12, 1 ); return TOS_E_OK; } // fake Dreadlabel, extract the last folder name of the host path being root out the mount on 68k side int32 HostFs::xfs_readlabel(XfsCookie * dir, memptr buff, int16 len) { // dir->drv->hostRoot contains the full path of the folder mounted to a drive // to omitt very long label names, we stick to the last folder name size_t hostrootlen; if ( dir && dir->drv && dir->drv->hostRoot && (hostrootlen = strlen(dir->drv->hostRoot)) > 0 ) { // it seems there is a host root path to be used char* startchar = dir->drv->hostRoot; // position on start of name char* poschar = &startchar[hostrootlen - 1]; // position on last character if (poschar > startchar && *poschar == *DIRSEPARATOR) { // ignore an ending slash --poschar; } if (poschar > startchar && *poschar == ':') { // ignore an ending ":" from dos drive letters --poschar; } char* endchar = poschar; // remember this position as the end of hostRoot to copy // search backwards for bounding slash while (poschar > startchar && *poschar != *DIRSEPARATOR) --poschar; if (*poschar == *DIRSEPARATOR) // move to character behind that slash ++poschar; if (poschar <= endchar) { // there are some characters inbetween to copy hostrootlen = endchar - poschar + 2; if (len < 0 || hostrootlen > size_t(len)) { return(TOS_ENAMETOOLONG); } else { Host2AtariUtf8Copy(buff, poschar, hostrootlen); return(TOS_E_OK); } } } if (len > 0) { // there is no label name to extract // fall back to a default label Host2AtariUtf8Copy(buff, "HOSTFS", len); return TOS_E_OK; } else { return(TOS_ENAMETOOLONG); } } int32 HostFs::xfs_mkdir( XfsCookie *dir, memptr name, uint16 mode ) { char fname[MAXPATHNAMELEN]; Atari2HostUtf8Copy( fname, name, sizeof(fname) ); char fpathName[MAXPATHNAMELEN]; cookie2Pathname( dir, fname, fpathName ); if ( HostFilesys::makeDir( (char*)fpathName, mode ) ) return errnoHost2Mint(errno,TOS_EFILNF); return TOS_E_OK; } int32 HostFs::xfs_rmdir( XfsCookie *dir, memptr name ) { char fname[MAXPATHNAMELEN]; Atari2HostUtf8Copy( fname, name, sizeof(fname) ); char fpathName[MAXPATHNAMELEN]; cookie2Pathname( dir, fname, fpathName ); if ( rmdir( fpathName ) ) return errnoHost2Mint(errno,TOS_EFILNF); return TOS_E_OK; } int32 HostFs::xfs_creat( XfsCookie *dir, memptr name, uint16 mode, int16 flags, XfsCookie *fc ) { DUNUSED(flags); char fname[MAXPATHNAMELEN]; Atari2HostUtf8Copy( fname, name, sizeof(fname) ); // convert and mask out the file type bits for unix open() mode = modeMint2Host( mode ) & (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO); D(bug("HOSTFS: dev_creat (%s, flags: %#x, mode: %#o)", fname, flags, mode)); char fpathName[MAXPATHNAMELEN]; cookie2Pathname(dir,fname,fpathName); // get the cookie filename *fc = *dir; fc->index = 0; int fd = open( fpathName, O_CREAT|O_EXCL|O_WRONLY|O_BINARY, mode ); if (fd < 0) return errnoHost2Mint(errno,TOS_EFILNF); close( fd ); XfsFsFile *newFsFile = new XfsFsFile(); MAPNEWVOIDP( newFsFile ); newFsFile->name = strdup( fname ); newFsFile->refCount = 1; newFsFile->childCount = 0; newFsFile->parent = dir->index; newFsFile->created = false; newFsFile->locks = 0; dir->index->childCount++; *fc = *dir; fc->index = newFsFile; return TOS_E_OK; } int32 HostFs::xfs_dev_open(ExtFile *fp) { char fpathName[MAXPATHNAMELEN]; cookie2Pathname(&fp->fc, NULL, fpathName); int flags = flagsMint2Host(fp->flags); D(bug("HOSTFS: dev_open (%s, flags: %#x->%#x)", fpathName, fp->flags, flags)); // the xfs_creat() does create the host fs file although // it should not according to the FreeMiNT .XFS design if ( !fp->fc.index->created && (flags & O_CREAT) ) { // if xfs_creat()'ed file is now opened with O_CREAT // then set the special index->created to true fp->fc.index->created = true; // clear the O_EXCL and O_CREAT flags flags &= ~(O_CREAT|O_EXCL); } int fd = open( fpathName, flags|O_BINARY, 0 ); if (fd < 0) return errnoHost2Mint(errno,TOS_EFILNF); fp->hostFd = fd; #if SIZEOF_INT != 4 || DEBUG_NON32BIT fdMapper.putNative( fp->hostFd ); #endif D(bug("HOSTFS: /dev_open (fd = %d)", fp->hostFd)); return TOS_E_OK; } int32 HostFs::xfs_dev_close(ExtFile *fp, int16 pid) { DUNUSED(pid); D(bug("HOSTFS: dev_close (fd = %d, links = %d, pid = %d)", fp->hostFd, fp->links, pid)); if ( fp->links <= 0 ) { if ( close( fp->hostFd ) ) return errnoHost2Mint(errno,TOS_EIO); #if SIZEOF_INT != 4 || DEBUG_NON32BIT fdMapper.removeNative( fp->hostFd ); #endif D(bug("HOSTFS: /dev_close (fd = %d, %d)", fp->hostFd, pid)); } return TOS_E_OK; } #define FRDWR_BUFFER_LENGTH 8192 int32 HostFs::xfs_dev_read(ExtFile *fp, memptr buffer, uint32 count) { uint8 fBuff[ FRDWR_BUFFER_LENGTH ]; memptr destBuff = buffer; ssize_t readCount = 0; ssize_t toRead = count; ssize_t toReadNow; D(bug("HOSTFS: dev_read (fd = %d, %d)", fp->hostFd, count)); while ( toRead > 0 ) { toReadNow = ( toRead > FRDWR_BUFFER_LENGTH ) ? FRDWR_BUFFER_LENGTH : toRead; readCount = read( fp->hostFd, fBuff, toReadNow ); if ( readCount <= 0 ) break; Host2Atari_memcpy( destBuff, fBuff, readCount ); destBuff += readCount; toRead -= readCount; } D(bug("HOSTFS: /dev_read readCount (%d)", (int)(count - toRead))); if ( readCount < 0 ) return errnoHost2Mint(errno,TOS_EINTRN); return count - toRead; } int32 HostFs::xfs_dev_write(ExtFile *fp, memptr buffer, uint32 count) { uint8 fBuff[ FRDWR_BUFFER_LENGTH ]; memptr sourceBuff = buffer; ssize_t toWrite = count; ssize_t toWriteNow; ssize_t writeCount = 0; D(bug("HOSTFS: dev_write (fd = %d, %d)", fp->hostFd, count)); while ( toWrite > 0 ) { toWriteNow = ( toWrite > FRDWR_BUFFER_LENGTH ) ? FRDWR_BUFFER_LENGTH : toWrite; Atari2Host_memcpy( fBuff, sourceBuff, toWriteNow ); writeCount = write( fp->hostFd, fBuff, toWriteNow ); if ( writeCount <= 0 ) break; sourceBuff += writeCount; toWrite -= writeCount; } D(bug("HOSTFS: /dev_write writeCount (%d)", (int)(count - toWrite))); if ( writeCount < 0 ) return errnoHost2Mint(errno,TOS_EINTRN); return count - toWrite; } int32 HostFs::xfs_dev_lseek(ExtFile *fp, int32 offset, int16 seekmode) { int whence; D(bug("HOSTFS: dev_lseek (fd = %d,offset = %d,mode = %d)", fp->hostFd, offset, seekmode)); switch (seekmode) { case 0: whence = SEEK_SET; break; case 1: whence = SEEK_CUR; break; case 2: whence = SEEK_END; break; default: return TOS_EINVFN; } off_t newoff = lseek( fp->hostFd, offset, whence); D(bug("HOSTFS: /dev_lseek (offset = %d,mode = %d,resoffset = %d)", offset, seekmode, (int32)newoff)); if ( newoff == -1 ) return errnoHost2Mint(errno,TOS_EIO); return newoff; } int32 HostFs::xfs_remove( XfsCookie *dir, memptr name ) { char fname[MAXPATHNAMELEN]; Atari2HostUtf8Copy( fname, name, sizeof(fname) ); char fpathName[MAXPATHNAMELEN]; cookie2Pathname(dir,fname,fpathName); // get the cookie filename if ( unlink( fpathName ) ) return errnoHost2Mint(errno,TOS_EFILNF); return TOS_E_OK; } int32 HostFs::xfs_rename( XfsCookie *olddir, memptr oldname, XfsCookie *newdir, memptr newname ) { char foldname[MAXPATHNAMELEN]; char fnewname[MAXPATHNAMELEN]; Atari2HostUtf8Copy( foldname, oldname, sizeof(foldname) ); Atari2HostUtf8Copy( fnewname, newname, sizeof(fnewname) ); char fpathName[MAXPATHNAMELEN]; char fnewPathName[MAXPATHNAMELEN]; cookie2Pathname( olddir, foldname, fpathName ); cookie2Pathname( newdir, fnewname, fnewPathName ); if ( rename( fpathName, fnewPathName ) ) return errnoHost2Mint(errno,TOS_EFILNF); return TOS_E_OK; } int32 HostFs::xfs_symlink( XfsCookie *dir, memptr fromname, memptr toname ) { char ffromname[MAXPATHNAMELEN]; char ftoname[MAXPATHNAMELEN]; Atari2HostUtf8Copy( ffromname, fromname, sizeof(ffromname) ); Atari2HostUtf8Copy( ftoname, toname, sizeof(ftoname) ); char ffromName[MAXPATHNAMELEN]; char ftoName[MAXPATHNAMELEN]; cookie2Pathname( dir, ffromname, ffromName ); strd2upath(ftoname, ftoname); strcpy( ftoName, ftoname ); if (ftoName[0] == '\0' || ffromName[0] == '\0') return TOS_EFILNF; if (ftoName[0] != '/' && ftoName[1] != ':' ) { // relative symlink. Use it as is } else { // search among the mount points to find suitable link... size_t nameLen = strlen(ftoname); /* convert U:/c/... to c:/... */ if (nameLen >= 4 && strncasecmp(ftoname, "u:/", 3) == 0 && DriveFromLetter(ftoname[3]) >= 0 && (ftoname[4] == '\0' || ftoname[4] == '/')) { ftoname[0] = ftoname[3]; memmove(ftoname + 2, ftoname + 4, nameLen - 3); nameLen -= 2; } else /* convert /c/... to c:/... */ if (nameLen >= 2 && ftoname[0] == '/' && DriveFromLetter(ftoname[1]) >= 0 && (ftoname[2] == '\0' || ftoname[2] == '/')) { ftoname[0] = ftoname[1]; ftoname[1] = ':'; } if (nameLen == 2) { strcat(ftoname, "/"); nameLen++; } if (strcmp(bx_options.aranymfs.symlinks, "conv") == 0) { bool found = false; for (MountMap::iterator it = mounts.begin(); it != mounts.end(); it++) { ExtDrive *drv = it->second; size_t mpLen = strlen( drv->mountPoint ); if (mpLen == 0 || mpLen > nameLen) continue; if (strncasecmp(drv->mountPoint, ftoname, mpLen) == 0) { // target drive found; replace MiNTs mount point // with the hosts root directory int len = MAXPATHNAMELEN; safe_strncpy(ftoName, drv->hostRoot, len); int hrLen = strlen( drv->hostRoot ); if (hrLen < len) safe_strncpy(ftoName + hrLen, ftoname + mpLen, len - hrLen); found = true; break; } } if (!found) { // undo a possible _unx2dos() conversion from MiNTlib if (toupper(ftoName[0]) == 'U' && ftoName[1] == ':') strcpy(ftoName, ftoname + 2); } } else { if (toupper(ftoName[0]) == 'U' && ftoName[1] == ':') { memmove(ftoName, ftoName + 2, strlen(ftoName + 2) + 1); } else { if (DriveFromLetter(ftoname[0]) >= 0 && ftoname[1] == ':') { ftoname[1] = ftoname[0]; ftoname[0] = '/'; } strcpy(ftoName, ftoname); } } if (ftoName[0] == '/' && DriveFromLetter(ftoname[1]) >= 0 && (ftoName[2] == '\0' || ftoName[2] == '/')) ftoName[1] = tolower(ftoName[1]); } D(bug( "HOSTFS: fs_symlink: \"%s\" --> \"%s\"", ffromName, ftoName )); if ( symlink( ftoName, ffromName ) ) return errnoHost2Mint(errno,TOS_EFILNF); return TOS_E_OK; } int32 HostFs::xfs_hardlink( XfsCookie *fromDir, memptr fromname, XfsCookie *toDir, memptr toname ) { #ifdef HAVE_LINK char ffromname[MAXPATHNAMELEN]; char ftoname[MAXPATHNAMELEN]; Atari2HostUtf8Copy( ffromname, fromname, sizeof(ffromname) ); Atari2HostUtf8Copy( ftoname, toname, sizeof(ftoname) ); char ffromName[MAXPATHNAMELEN]; cookie2Pathname( fromDir, ffromname, ffromName ); char ftoName[MAXPATHNAMELEN]; cookie2Pathname( toDir, ftoname, ftoName ); D(bug( "HOSTFS: fs_hardlink: \"%s\" --> \"%s\"", ffromName, ftoName )); if ( link( ffromName, ftoName ) ) { D(bug("link %s %s: %s", ffromName, ftoName, strerror(errno))); return errnoHost2Mint(errno,TOS_EFILNF); } return TOS_E_OK; #else (void) fromDir; (void) fromname; (void) toDir; (void) toname; return TOS_EINVFN; #endif } int32 HostFs::xfs_dev_datime( ExtFile *fp, memptr datetimep, int16 wflag) { char fpathName[MAXPATHNAMELEN]; cookie2Pathname( &fp->fc, NULL, fpathName ); D(bug("HOSTFS: dev_datime (%s)", fpathName)); struct stat statBuf; if ( stat(fpathName, &statBuf) ) return errnoHost2Mint(errno,TOS_EFILNF); uint32 datetime = ReadInt32( datetimep ); if (wflag != 0) { struct utimbuf tmb; if (fp->fc.drv->fsFlags & FS_EXT_3) { tmb.actime = datetime; tmb.actime -= mint_fake_gmtoff(tmb.actime); } else { struct tm ttm; datetime2tm( datetime, &ttm ); tmb.actime = mktime( &ttm ); /* access time */ D(bug("HOSTFS: /dev_datime: setting to: %d.%d.%d %d:%d.%d", ttm.tm_mday, ttm.tm_mon, ttm.tm_year + 1900, ttm.tm_sec, ttm.tm_min, ttm.tm_hour )); tmb.actime -= gmtoff(tmb.actime); } tmb.modtime = tmb.actime; /* modification time */ if (utime( fpathName, &tmb ) < 0) return errnoHost2Mint(errno, TOS_EACCES); } if (!wflag) { if (!(fp->fc.drv->fsFlags & FS_EXT_3)) { datetime = statBuf.st_mtime + gmtoff(statBuf.st_mtime); datetime = (time2dos(datetime) << 16 ) | date2dos(datetime); } else { datetime = statBuf.st_mtime; datetime += mint_fake_gmtoff(statBuf.st_mtime); } WriteInt32( datetimep, datetime ); } return TOS_E_OK; //EBADRQ; } int32 HostFs::xfs_pathconf( XfsCookie *fc, int16 which ) { char fpathName[MAXPATHNAMELEN]; cookie2Pathname(fc, NULL, fpathName); int oldErrno = errno; // FIXME: Has to be different for .XFS and for HOSTFS. D(bug("HOSTFS: fs_pathconf (%s,%d)", fpathName, which)); switch (which) { case -1: return 9; // maximal which value case 0: // DP_IOPEN return 0x7fffffffL; // unlimited case 1: { // DP_MAXLINKS long result = pathconf(fpathName, _PC_LINK_MAX); if ( result == -1 && oldErrno != errno ) return errnoHost2Mint(errno,TOS_EFILNF); return result; } case 2: // DP_PATHMAX return MAXPATHNAMELEN; // FIXME: This is the limitation of this implementation (ARAnyM specific) case 3: // DP_NAMEMAX { STATVFS buff; int32 res = host_statvfs( fpathName, &buff); if ( res != TOS_E_OK ) return res; #ifdef HAVE_SYS_STATVFS_H return buff.f_namemax; #else # if (defined(OS_openbsd) || defined(OS_freebsd) || defined(OS_netbsd) || defined(OS_darwin)) return MFSNAMELEN; # else #if defined(OS_mint) return Dpathconf(fpathName,3 /* DP_NAMEMAX */); #else return buff.f_namelen; #endif /* OS_mint */ #endif /* OS_*bsd */ #endif /* HAVE_SYS_STATVFS_H */ } case 4: // DP_ATOMIC { STATVFS buff; int32 res = host_statvfs( fpathName, &buff); if ( res != TOS_E_OK ) return res; return buff.f_bsize; // ST max vs Linux optimal } case 5: // DP_TRUNC return 0; // files are NOT truncated... (hope correct) case 6: // DP_CASE return ( !fc->drv || fc->drv->halfSensitive ) ? 2 /*DP_CASEINSENS*/ : 0 /*DP_CASESENS*/; case 7: // D_XATTRMODE return 0x0fffffdfL; // only the archive bit is not recognised in the fs_getxattr case 8: // DP_XATTR // FIXME: This argument should be set accordingly to the filesystem type mounted // to the particular path. return 0x00000ffbL; // rdev is not used case 9: // DP_VOLNAMEMAX return 0; default:; } return TOS_EINVFN; } char *HostFs::host_readlink(const char *pathname, char *target, int len ) { int rv; target[0] = '\0'; if ((rv=readlink(pathname,target,len))<0) return NULL; // put the trailing \0 target[rv] = '\0'; // relative host fs symlinks are left alone. The MiNT kernel will parse them if ( target[0] != '/' && target[0] != '\\' && target[1] != ':' ) return target; // convert to real path (example: "/tmp/../file" -> "/file") if (strcmp(bx_options.aranymfs.symlinks, "conv") == 0) { char *tmp = my_canonicalize_file_name(target, false); if (tmp == NULL) return target; size_t nameLen = strlen(tmp); for (MountMap::iterator it = mounts.begin(); it != mounts.end(); it++) { ExtDrive *drv = it->second; size_t hrLen = strlen( drv->hostRoot ); if (hrLen == 0 || hrLen > nameLen) continue; if (strncmp(drv->hostRoot, tmp, hrLen) == 0) { // target drive found; replace the hosts root directory // with MiNTs mount point safe_strncpy(target, drv->mountPoint, len); int mLen = strlen( drv->mountPoint ); if (mLen < len) safe_strncpy(target + mLen, tmp + hrLen, len - mLen); break; } } free(tmp); } D(bug("host_readlink(%s, %s)", pathname, target)); return target; } DIR *HostFs::host_opendir( const char *fpathName ) { DIR *result = opendir( fpathName ); if ( result || errno != ENOTDIR ) return result; // follow symlink when needed struct stat statBuf; if ( !lstat(fpathName, &statBuf) && S_ISLNK(statBuf.st_mode) ) { char temp[MAXPATHNAMELEN]; if (host_readlink(fpathName,temp,sizeof(temp)-1)) return host_opendir( temp ); } return NULL; } int32 HostFs::xfs_opendir( XfsDir *dirh, uint16 flags ) { char fpathName[MAXPATHNAMELEN]; cookie2Pathname(&dirh->fc, NULL, fpathName); D(bug("HOSTFS: fs_opendir (%s,%d)", fpathName, flags)); dirh->flags = flags; dirh->index = 0; dirh->hostDir = host_opendir( fpathName ); if ( dirh->hostDir == NULL ) return errnoHost2Mint(errno,TOS_EPTHNF); return TOS_E_OK; } int32 HostFs::xfs_closedir( XfsDir *dirh ) { if ( closedir( dirh->hostDir ) ) return errnoHost2Mint(errno,TOS_EPTHNF); return TOS_E_OK; } int32 HostFs::xfs_readdir( XfsDir *dirh, memptr buff, int16 len, XfsCookie *fc ) { struct dirent *dirEntry; fc->drv = dirh->fc.drv; fc->xfs = fc->drv->fsDrv; fc->dev = dirh->fc.dev; fc->aux = 0; fc->index = 0; do { if ((void*)(dirEntry = readdir( dirh->hostDir )) == NULL) return TOS_ENMFIL; } while ( !dirh->fc.index->parent && ( dirEntry->d_name[0] == '.' && ( !dirEntry->d_name[1] || ( dirEntry->d_name[1] == '.' && !dirEntry->d_name[2] ) ) ) ); XfsFsFile *newFsFile = new XfsFsFile(); newFsFile->name = strdup( dirEntry->d_name ); if ( dirh->flags == 0 ) { D(bug("HOSTFS: fs_readdir (%s, %d)", (char*)dirEntry->d_name, len )); if ( (uint16)len < strlen( dirEntry->d_name ) + 4 ) { delete newFsFile; return TOS_ERANGE; } char fpathName[MAXPATHNAMELEN]; cookie2Pathname(&dirh->fc, dirEntry->d_name, fpathName); /* struct stat statBuf; if ( lstat(fpathName, &statBuf) ) return errnoHost2Mint(errno,TOS_EFILNF); */ WriteInt32( (uint32)buff, dirEntry->d_ino /* statBuf.st_ino */ ); Host2AtariUtf8Copy( buff + 4, dirEntry->d_name, len-4 ); } else { char truncFileName[MAXPATHNAMELEN]; transformFileName( truncFileName, (char*)dirEntry->d_name ); D(bug("HOSTFS: fs_readdir (%s -> %s, %d)", (char*)dirEntry->d_name, (char*)truncFileName, len )); if ( (uint16)len < strlen( truncFileName ) ) { delete newFsFile; return TOS_ERANGE; } Host2AtariUtf8Copy( buff, truncFileName, len ); } dirh->index++; dirh->fc.index->childCount++; MAPNEWVOIDP( newFsFile ); newFsFile->parent = dirh->fc.index; newFsFile->refCount = 1; newFsFile->childCount = 0; newFsFile->created = false; newFsFile->locks = 0; fc->drv = dirh->fc.drv; fc->xfs = fc->drv->fsDrv; fc->dev = dirh->fc.dev; fc->aux = 0; fc->index = newFsFile; return TOS_E_OK; } int32 HostFs::xfs_rewinddir( XfsDir *dirh ) { rewinddir( dirh->hostDir ); dirh->index = 0; return TOS_E_OK; } int32 HostFs::host_stat64( XfsCookie *fc, const char *fpathName, struct stat *statBuf ) { (void) fc; if ( lstat(fpathName, statBuf) ) return errnoHost2Mint(errno,TOS_EFILNF); return TOS_E_OK; } void HostFs::convert_to_xattr( ExtDrive *drv, const struct stat *statBuf, memptr xattrp ) { // XATTR structure conversion (COMPEND.HYP) /* UWORD mode */ WriteInt16( xattrp , modeHost2Mint(statBuf->st_mode) ); /* LONG index */ WriteInt32( xattrp + 2, statBuf->st_ino ); // FIXME: this is Linux's one /* UWORD dev */ WriteInt16( xattrp + 6, statBuf->st_dev ); // FIXME: this is Linux's one /* UWORD reserved1 */ WriteInt16( xattrp + 8, 0 ); /* UWORD nlink */ WriteInt16( xattrp + 10, statBuf->st_nlink ); /* UWORD uid */ WriteInt16( xattrp + 12, statBuf->st_uid ); // FIXME: this is Linux's one /* UWORD gid */ WriteInt16( xattrp + 14, statBuf->st_gid ); // FIXME: this is Linux's one /* LONG size */ WriteInt32( xattrp + 16, statBuf->st_size ); unsigned long blksize, blocks; #ifdef __MINGW32__ blksize = 512 ; // FIXME: I just made up the number #else blksize = statBuf->st_blksize; #endif /* LONG blksize */ WriteInt32( xattrp + 20, blksize ); /* * in struct xattr, "blocks" is the number blocks of size blksize */ if (blksize <= 512) blksize = 512; #if defined(OS_beos) || defined (__MINGW32__) blocks = (statBuf->st_size + blksize - 1) / blksize; #else blocks = (statBuf->st_blocks * 512 + blksize - 1) / blksize; #endif /* LONG nblocks */ WriteInt32( xattrp + 24, blocks ); if (drv->fsFlags & FS_EXT_3) { /* UWORD mtime */ WriteInt32( xattrp + 28, statBuf->st_mtime + mint_fake_gmtoff(statBuf->st_mtime) ); /* UWORD atime */ WriteInt32( xattrp + 32, statBuf->st_atime + mint_fake_gmtoff(statBuf->st_atime) ); /* UWORD ctime */ WriteInt32( xattrp + 36, statBuf->st_ctime + mint_fake_gmtoff(statBuf->st_ctime) ); } else { /* UWORD mtime */ WriteInt16( xattrp + 28, time2dos(statBuf->st_mtime) ); /* UWORD mdate */ WriteInt16( xattrp + 30, date2dos(statBuf->st_mtime) ); /* UWORD atime */ WriteInt16( xattrp + 32, time2dos(statBuf->st_atime) ); /* UWORD adate */ WriteInt16( xattrp + 34, date2dos(statBuf->st_atime) ); /* UWORD ctime */ WriteInt16( xattrp + 36, time2dos(statBuf->st_ctime) ); /* UWORD cdate */ WriteInt16( xattrp + 38, date2dos(statBuf->st_ctime) ); } /* UWORD attr */ WriteInt16( xattrp + 40, modeHost2TOS(statBuf->st_mode) ); /* UWORD reserved2 */ WriteInt16( xattrp + 42, 0 ); /* LONG reserved3 */ WriteInt32( xattrp + 44, 0 ); /* LONG reserved4 */ WriteInt32( xattrp + 48, 0 ); D(bug("HOSTFS: fs_getxattr mode %#02x, mtime %#04x, mdate %#04x", modeHost2Mint(statBuf->st_mode), ReadInt16(xattrp + 28), ReadInt16(xattrp + 30))); } int32 HostFs::xfs_getxattr( XfsCookie *fc, memptr name, memptr xattrp ) { char fpathName[MAXPATHNAMELEN]; if (name) { char fname[MAXPATHNAMELEN]; Atari2HostUtf8Copy( fname, name, sizeof(fname) ); cookie2Pathname( fc, fname, fpathName ); } else { cookie2Pathname( fc, NULL, fpathName ); } D(bug("HOSTFS: fs_getxattr (%s)", fpathName)); // perform the link stat itself struct stat statBuf; int32 res = host_stat64(fc, fpathName, &statBuf); if ( res != TOS_E_OK ) return res; convert_to_xattr(fc->drv, &statBuf, xattrp); return TOS_E_OK; } void HostFs::convert_to_stat64( ExtDrive *drv, const struct stat *statBuf, memptr statp ) { (void) drv; /* LLONG dev */ WriteInt64( statp + 0, statBuf->st_dev ); // FIXME: this is Linux's one /* ULONG ino */ WriteInt32( statp + 8, statBuf->st_ino ); // FIXME: this is Linux's one /* ULONG mode */ WriteInt32( statp + 12, modeHost2Mint(statBuf->st_mode) ); // FIXME: convert??? /* ULONG nlink */ WriteInt32( statp + 16, statBuf->st_nlink ); /* ULONG uid */ WriteInt32( statp + 20, statBuf->st_uid ); // FIXME: this is Linux's one /* ULONG gid */ WriteInt32( statp + 24, statBuf->st_gid ); // FIXME: this is Linux's one /* LLONG rdev */ WriteInt64( statp + 28, statBuf->st_rdev ); // FIXME: this is Linux's one /* atime */ WriteInt64( statp + 36, statBuf->st_atime ); /* atime ns*/ WriteInt32( statp + 44, get_stat_atime_ns(statBuf) ); /* mtime */ WriteInt64( statp + 48, statBuf->st_mtime ); /* mtime ns*/ WriteInt32( statp + 56, get_stat_mtime_ns(statBuf) ); /* ctime */ WriteInt64( statp + 60, statBuf->st_ctime ); /* ctime ns*/ WriteInt32( statp + 68, get_stat_ctime_ns(statBuf) ); /* LLONG size */ WriteInt64( statp + 72, statBuf->st_size ); uint64 blksize, blocks; #ifdef __MINGW32__ blksize = 512 ; // FIXME: I just made up the number #else blksize = statBuf->st_blksize; #endif /* * in struct stat, "blocks" is the number blocks of size 512 */ if (blksize <= 512) blksize = 512; #if defined(OS_beos) || defined (__MINGW32__) blocks = (statBuf->st_size + blksize - 1) / 512; #else blocks = statBuf->st_blocks; #endif /* LLONG blocks */ WriteInt64( statp + 80, blocks ); /* ULONG blksize*/ WriteInt32( statp + 88, blksize ); /* ULONG flags */ WriteInt32( statp + 92, 0 ); /* ULONG gen */ WriteInt32( statp + 96, 0 ); /* ULONG reserverd[0] */ WriteInt32( statp + 100, 0 ); /* ULONG reserverd[1] */ WriteInt32( statp + 104, 0 ); /* ULONG reserverd[2] */ WriteInt32( statp + 108, 0 ); /* ULONG reserverd[3] */ WriteInt32( statp + 112, 0 ); /* ULONG reserverd[4] */ WriteInt32( statp + 116, 0 ); /* ULONG reserverd[5] */ WriteInt32( statp + 120, 0 ); /* ULONG reserverd[6] */ WriteInt32( statp + 124, 0 ); D(bug("HOSTFS: fs_stat64 mode %#02x, mtime %#08x", modeHost2Mint(statBuf->st_mode), ReadInt32(statp + 52))); } int32 HostFs::xfs_stat64( XfsCookie *fc, memptr name, memptr statp ) { char fpathName[MAXPATHNAMELEN]; if (name) { char fname[MAXPATHNAMELEN]; Atari2HostUtf8Copy( fname, name, sizeof(fname) ); cookie2Pathname( fc, fname, fpathName ); } else { cookie2Pathname( fc, NULL, fpathName ); } D(bug("HOSTFS: fs_stat64 (%s)", fpathName)); // perform the link stat itself struct stat statBuf; int32 res = host_stat64(fc, fpathName, &statBuf); if ( res != TOS_E_OK ) return res; convert_to_stat64(fc->drv, &statBuf, statp); return TOS_E_OK; } int32 HostFs::xfs_chattr( XfsCookie *fc, int16 attr ) { char fpathName[MAXPATHNAMELEN]; cookie2Pathname(fc, NULL, fpathName); D(bug("HOSTFS: fs_chattr (%s)", fpathName)); // perform the link stat itself struct stat statBuf; if ( lstat( fpathName, &statBuf ) ) return errnoHost2Mint( errno, TOS_EACCDN ); mode_t newmode; if ( attr & 0x01 ) /* FA_RDONLY */ newmode = statBuf.st_mode & ~( S_IWUSR | S_IWGRP | S_IWOTH ); else newmode = statBuf.st_mode | ( S_IWUSR | S_IWGRP | S_IWOTH ); if ( newmode != statBuf.st_mode && chmod( fpathName, newmode ) ) return errnoHost2Mint( errno, TOS_EACCDN ); return TOS_E_OK; } int32 HostFs::xfs_chmod( XfsCookie *fc, uint16 mode ) { char fpathName[MAXPATHNAMELEN]; cookie2Pathname(fc, NULL, fpathName); /* FIXME: ARAnyM has to run at root and uid and gid have to */ /* FIXME: be same at unix and MiNT! */ D(bug( "HOSTFS: fs_chmod (NOT TESTED)\n" " CANNOT WORK CORRECTLY UNTIL uid AND gid AT MiNT ARE SAME LIKE AT UNIX!)\n" )); if ( chmod( fpathName, mode ) ) return errnoHost2Mint( errno, TOS_EACCDN ); return TOS_E_OK; } int32 HostFs::xfs_root( uint16 dev, XfsCookie *fc ) { MountMap::iterator it = mounts.find(dev); if ( it == mounts.end() ) { D(bug( "root: dev = %#04x -> EDRIVE\n", dev )); return TOS_EDRIVE; } D(bug( "root:\n" " dev = %#04x\n" " devdrv = %#08x\n", dev, it->second->fsDrv)); fc->drv = it->second; fc->xfs = fc->drv->fsDrv; fc->dev = dev; fc->aux = 0; fc->index = new XfsFsFile(); MAPNEWVOIDP( fc->index ); fc->index->parent = NULL; fc->index->name = fc->drv->hostRoot; fc->index->refCount = 1; fc->index->childCount = 0; fc->index->created = false; fc->index->locks = 0; D2(bug( "root result:\n" " fs = %08lx\n" " dev = %04x\n" " aux = %04x\n" " index = %08lx\n" " name = \"%s\"\n", fc->xfs, fc->dev, fc->aux, fc->index, fc->index->name)); return TOS_E_OK; } int32 HostFs::xfs_getdev( XfsCookie *fc, memptr devspecial ) { WriteInt32(devspecial,0); /* reserved */ return (int32)fc->drv->fsDevDrv; } int32 HostFs::xfs_readlink( XfsCookie *dir, memptr buf, int16 len ) { char fpathName[MAXPATHNAMELEN]; cookie2Pathname(dir,NULL,fpathName); // get the cookie filename D(bug( "HOSTFS: fs_readlink: %s", fpathName )); char target[MAXPATHNAMELEN]; if (!host_readlink(fpathName,target,sizeof(target))) return errnoHost2Mint( errno, TOS_EFILNF ); D(bug( "HOSTFS: fs_readlink: -> %s", target )); Host2AtariUtf8Copy( buf, target, len ); return TOS_E_OK; } void HostFs::xfs_freefs( XfsFsFile *fs ) { D2(bug( "freefs:\n" " fs = %08lx\n" " parent = %08lx\n" " name = \"%s\"\n" " usecnt = %d\n" " childcnt = %d", (long)fs, (long)(fs->parent), fs->name, fs->refCount, fs->childCount )); if ( !fs->refCount && !fs->childCount ) { D2(bug( "freefs: realfree" )); if ( fs->parent ) { fs->parent->childCount--; xfs_freefs( fs->parent ); free( fs->name ); } MAPDELVOIDP( fs ); delete fs; } else { D2(bug( "freefs: notfree" )); } } int32 HostFs::xfs_lookup( XfsCookie *dir, memptr name, XfsCookie *fc ) { char fname[MAXPATHNAMELEN]; Atari2HostUtf8Copy( fname, name, sizeof(fname) ); D(bug( "HOSTFS: fs_lookup: %s", fname )); XfsFsFile *newFsFile; *fc = *dir; fc->index = 0; if ( !*fname || (*fname == '.' && !fname[1]) ) { newFsFile = dir->index; newFsFile->refCount++; } else if ( *fname == '.' && fname[1] == '.' && !fname[2] ) { if ( !dir->index->parent ) { D(bug( "HOSTFS: fs_lookup to \"..\" at root" )); return TOS_EMOUNT; } newFsFile = dir->index->parent; newFsFile->refCount++; } else { if ( (newFsFile = new XfsFsFile()) == NULL ) { D(bug( "HOSTFS: fs_lookup: malloc() failed!" )); return TOS_ENSMEM; } newFsFile->parent = dir->index; char fpathName[MAXPATHNAMELEN]; cookie2Pathname(dir,fname,fpathName); // get the cookie filename D(bug( "HOSTFS: fs_lookup stat: %s", fpathName )); struct stat statBuf; if ( lstat( fpathName, &statBuf ) ) { delete newFsFile; return errnoHost2Mint( errno, TOS_EFILNF ); } MAPNEWVOIDP( newFsFile ); newFsFile->name = strdup(fname); newFsFile->refCount = 1; newFsFile->childCount = 0; newFsFile->created = false; newFsFile->locks = 0; dir->index->childCount++; /* same as: new->parent->childcnt++ */ } *fc = *dir; fc->index = newFsFile; return TOS_E_OK; } int32 HostFs::xfs_getname( XfsCookie *relto, XfsCookie *dir, memptr pathName, int16 size ) { char base[MAXPATHNAMELEN]; cookie2Pathname(relto,NULL,base); // get the cookie filename char dirBuff[MAXPATHNAMELEN]; char *dirPath = dirBuff; cookie2Pathname(dir,NULL,dirBuff); // get the cookie filename char fpathName[MAXPATHNAMELEN]; D2(bug( "HOSTFS: fs_getname: relto = \"%s\"", base )); size_t baselength = strlen(base); if ( baselength && base[baselength-1] == DIRSEPARATOR[0] ) { baselength--; base[baselength] = '\0'; D2(bug( "HOSTFS: fs_getname: fixed relto = \"%s\"", base )); } D2(bug( "HOSTFS: fs_getname: dir = \"%s\"", dirPath )); size_t dirlength = strlen(dirPath); if ( dirlength < baselength || strncmp( dirPath, base, baselength ) ) { /* dir is not a sub...directory of relto, so use absolute */ /* FIXME: try to use a relative path, if relativ is smaller */ D2(bug( "HOSTFS: fs_getname: dir not relativ to relto!" )); } else { /* delete "same"-Part */ dirPath += baselength; } D2(bug( "HOSTFS: fs_getname: relativ dir to relto = \"%s\"", dirPath )); /* copy and unix2dosname */ char *pfpathName = fpathName; for ( ; *dirPath && size > 0; size--, dirPath++ ) if ( *dirPath == '/' ) *pfpathName++ = '\\'; else *pfpathName++ = *dirPath; if ( !size ) { D2(bug( "HOSTFS: fs_getname: relative dir is too long!" )); return TOS_ERANGE; } else { *pfpathName = '\0'; D(bug( "HOSTFS: fs_getname result = \"%s\"", fpathName )); Host2AtariUtf8Copy( pathName, fpathName, pfpathName - fpathName + 1 ); return TOS_E_OK; } } /* * from $FREEMINT_CVS/sys/mint/dcntl.h */ # define MINT_V_CNTR_WP (('V'<< 8) | 100) /* MiNT, write protect control */ /* * MagiC opcodes (all group 'm' opcodes are reserved for MagiC) */ # define MX_KER_GETINFO (('m'<< 8) | 0) /* mgx_dos.txt */ # define MX_KER_DOSLIMITS (('m'<< 8) | 1) /* mgx_dos.txt */ # define MX_KER_INSTXFS (('m'<< 8) | 2) /* mgx_dos.txt */ # define MX_KER_DRVSTAT (('m'<< 8) | 4) /* mgx_dos.txt */ # define MX_KER_XFSNAME (('m'<< 8) | 5) /* mgx_dos.txt */ # define MX_DEV_INSTALL (('m'<< 8) | 0x20) /* mgx_dos.txt */ # define MX_DFS_GETINFO (('m'<< 8) | 0x40) /* mgx_dos.txt */ # define MX_DFS_INSTDFS (('m'<< 8) | 0x41) /* mgx_dos.txt */ # define MINT_FS_INFO 0xf100 # define MINT_FS_USAGE 0xf101 # define MINT_FS_HOSTFS (15L << 16) /* * from $FREEMINT_CVS/sys/mint/ioctl.h */ # define MINT_FSTAT (('F'<< 8) | 0) /* handled by kernel */ # define MINT_FIONREAD (('F'<< 8) | 1) # define MINT_FIONWRITE (('F'<< 8) | 2) # define MINT_FUTIME (('F'<< 8) | 3) # define MINT_FTRUNCATE (('F'<< 8) | 4) # define MINT_FIOEXCEPT (('F'<< 8) | 5) # define MINT_FSTAT64 (('F'<< 8) | 6) /* 1.15.4 extension, optional */ # define MINT_FUTIME_UTC (('F'<< 8) | 7) /* 1.15.4 extension, optional */ # define MINT_FIBMAP (('F'<< 8) | 10) # define MINT_EXT2_IOC_GETFLAGS (('f'<< 8) | 1) # define MINT_EXT2_IOC_SETFLAGS (('f'<< 8) | 2) # define MINT_EXT2_IOC_GETVERSION_NEW (('f'<< 8) | 3) # define MINT_EXT2_IOC_SETVERSION_NEW (('f'<< 8) | 4) # define MINT_EXT2_IOC_GETVERSION (('v'<< 8) | 1) # define MINT_EXT2_IOC_SETVERSION (('v'<< 8) | 2) # define MINT_F_GETLK 5 # define MINT_F_SETLK 6 # define MINT_F_SETLKW 7 int32 HostFs::xfs_fscntl ( XfsCookie *dir, memptr name, int16 cmd, int32 arg) { switch ((uint16)cmd) { case MX_KER_XFSNAME: { D(bug( "HOSTFS: fs_fscntl: MX_KER_XFSNAME: arg = %08x", arg )); Host2AtariUtf8Copy(arg, "hostfs", 8); return TOS_E_OK; } case MINT_FS_INFO: { D(bug( "HOSTFS: fs_fscntl: FS_INFO: arg = %08x", arg )); if (arg) { Host2AtariUtf8Copy(arg, "hostfs-xfs", 32); WriteInt32(arg+32, ((int32)HOSTFS_XFS_VERSION << 16) | HOSTFS_NFAPI_VERSION ); WriteInt32(arg+36, MINT_FS_HOSTFS ); Host2AtariUtf8Copy(arg+40, "host filesystem", 32); } return TOS_E_OK; } case MINT_FS_USAGE: { char fpathName[MAXPATHNAMELEN]; cookie2Pathname( dir, NULL, fpathName ); STATVFS buff; int32 res = host_statvfs( fpathName, &buff); if ( res != TOS_E_OK ) return res; if (arg) { /* LONG blocksize */ WriteInt32( arg , buff.f_bsize ); /* LLONG blocks */ WriteInt64( arg + 4, buff.f_blocks ); /* LLONG freebs */ WriteInt64( arg + 12, buff.f_bavail ); /* LLONG inodes */ WriteInt64( arg + 20, 0xffffffffffffffffULL); /* LLONG finodes*/ WriteInt64( arg + 28, 0xffffffffffffffffULL); } return TOS_E_OK; } case MINT_V_CNTR_WP: // FIXME: TODO! break; case MINT_FUTIME: // Mintlib calls the dcntl(FUTIME_ETC, filename) first (below), // but other libs might not know. { char fpathName[MAXPATHNAMELEN]; struct utimbuf t_set; if (name) { char fname[MAXPATHNAMELEN]; Atari2HostUtf8Copy( fname, name, sizeof(fname) ); cookie2Pathname( dir, fname, fpathName ); } else { cookie2Pathname( dir, NULL, fpathName ); } if (arg) { t_set.actime = ReadInt32( arg ); t_set.modtime = ReadInt32( arg + 4 ); t_set.actime = datetime2utc(t_set.actime) - gmtoff(t_set.actime); t_set.modtime = datetime2utc(t_set.modtime) - gmtoff(t_set.modtime); } else { t_set.actime = t_set.modtime = time(NULL); } if (utime(fpathName, &t_set)) return errnoHost2Mint( errno, TOS_EFILNF ); return TOS_E_OK; } case MINT_FUTIME_UTC: { char fpathName[MAXPATHNAMELEN]; struct utimbuf t_set; if (name) { char fname[MAXPATHNAMELEN]; Atari2HostUtf8Copy( fname, name, sizeof(fname) ); cookie2Pathname( dir, fname, fpathName ); } else { cookie2Pathname( dir, NULL, fpathName ); } if (arg) { t_set.actime = ReadInt32( arg ); t_set.modtime = ReadInt32( arg + 4 ); t_set.actime -= mint_fake_gmtoff(t_set.actime); t_set.modtime -= mint_fake_gmtoff(t_set.modtime); } else { t_set.actime = t_set.modtime = time(NULL); } if (utime(fpathName, &t_set)) return errnoHost2Mint( errno, TOS_EFILNF ); return TOS_E_OK; } case MINT_FTRUNCATE: { char fname[MAXPATHNAMELEN]; Atari2HostUtf8Copy( fname, name, sizeof(fname) ); char fpathName[MAXPATHNAMELEN]; cookie2Pathname(dir,fname,fpathName); // get the cookie filename D(bug( "HOSTFS: fs_fscntl: FTRUNCATE: %s, %08x", fpathName, arg )); if(truncate(fpathName, arg)) return errnoHost2Mint( errno, TOS_EFILNF ); return TOS_E_OK; } case MINT_FSTAT: return xfs_getxattr(dir, name, arg); case MINT_FSTAT64: return xfs_stat64(dir, name, arg); } return TOS_ENOSYS; } int32 HostFs::xfs_dev_ioctl ( ExtFile *fp, int16 mode, memptr buff) { switch ((uint16)mode) { case MINT_FIONWRITE: WriteInt32(buff, 1); return TOS_E_OK; case MINT_FIONREAD: { int navail; #ifdef FIONREAD if (ioctl(fp->hostFd, FIONREAD, &navail) < 0) #endif { int32 pos = lseek( fp->hostFd, 0, SEEK_CUR ); // get position navail = lseek( fp->hostFd, 0, SEEK_END ) - pos; lseek( fp->hostFd, pos, SEEK_SET ); // set the position back } WriteInt32(buff, navail); return TOS_E_OK; } case MINT_FIOEXCEPT: WriteInt32(buff, 0); return TOS_E_OK; case MINT_FUTIME: #ifdef HAVE_FUTIMENS // Mintlib calls the dcntl(FUTIME_UTC, filename) first (below). // but other libs might not know. if (__builtin_available(macOS 10.13, iOS 11, tvOS 11, watchOS 4, *)) { struct timespec ts[2]; if (buff) { ts[0].tv_sec = ReadInt32(buff); ts[1].tv_sec = ReadInt32(buff + 4); ts[0].tv_sec = datetime2utc(ts[0].tv_sec) - gmtoff(ts[0].tv_sec); ts[1].tv_sec = datetime2utc(ts[1].tv_sec) - gmtoff(ts[1].tv_sec); } else { ts[0].tv_sec = ts[1].tv_sec = time(NULL); } ts[0].tv_nsec = ts[1].tv_nsec = 0; if (futimens(fp->hostFd, ts)) return errnoHost2Mint( errno, TOS_EACCES ); } else #endif { struct timeval tv[2]; if (buff) { tv[0].tv_sec = ReadInt32(buff); tv[1].tv_sec = ReadInt32(buff + 4); tv[0].tv_sec = datetime2utc(tv[0].tv_sec) - gmtoff(tv[0].tv_sec); tv[1].tv_sec = datetime2utc(tv[1].tv_sec) - gmtoff(tv[1].tv_sec); } else { tv[0].tv_sec = tv[1].tv_sec = time(NULL); } tv[0].tv_usec = tv[1].tv_usec = 0; if (futimes(fp->hostFd, tv)) return errnoHost2Mint( errno, TOS_EACCES ); } return TOS_E_OK; case MINT_FUTIME_UTC: #ifdef HAVE_FUTIMENS if (__builtin_available(macOS 10.13, iOS 11, tvOS 11, watchOS 4, *)) { struct timespec ts[2]; if (buff) { ts[0].tv_sec = ReadInt32(buff); ts[1].tv_sec = ReadInt32(buff + 4); ts[0].tv_sec -= mint_fake_gmtoff(ts[0].tv_sec); ts[1].tv_sec -= mint_fake_gmtoff(ts[1].tv_sec); } else { ts[0].tv_sec = ts[1].tv_sec = time(NULL); } ts[0].tv_nsec = ts[1].tv_nsec = 0; if (futimens(fp->hostFd, ts)) return errnoHost2Mint( errno, TOS_EACCES ); } else #endif { struct timeval tv[2]; if (buff) { tv[0].tv_sec = ReadInt32(buff); tv[1].tv_sec = ReadInt32(buff + 4); tv[0].tv_sec -= mint_fake_gmtoff(tv[0].tv_sec); tv[1].tv_sec -= mint_fake_gmtoff(tv[1].tv_sec); } else { tv[0].tv_sec = tv[1].tv_sec = time(NULL); } tv[0].tv_usec = tv[1].tv_usec = 0; if (futimes(fp->hostFd, tv)) return errnoHost2Mint( errno, TOS_EACCES ); } return TOS_E_OK; case MINT_F_SETLK: case MINT_F_SETLKW: case MINT_F_GETLK: /* * locking can't be handled here. * It has to be done in hostfs.xfs on the Atari side * (and is done now, with newer kernels). * We must maintain the root pointer of MiNT's file * locks list, however. * Note that the "buff" arguments to flock() is a pointer * to a struct flock, and older kernels without implementing * the call will pass that to us, while the new implementation * just passes the address of the root of the locks list. */ if (!fp->fc.index) return TOS_EIHNDL; if (mode == MINT_F_GETLK) WriteInt32(buff, fp->fc.index->locks); else fp->fc.index->locks = ReadInt32(buff); return TOS_E_OK; case MINT_FTRUNCATE: D(bug( "HOSTFS: fs_ioctl: FTRUNCATE( fd=%d, %08lx )", fp->hostFd, (unsigned long)ReadInt32(buff) )); if ((fp->flags & O_ACCMODE) == O_RDONLY) return TOS_EACCES; if (ftruncate( fp->hostFd, ReadInt32(buff))) return errnoHost2Mint( errno, TOS_EACCES ); return TOS_E_OK; case MINT_FSTAT: { struct stat statBuf; D(bug( "HOSTFS: fs_ioctl: FSTAT: arg = %08lx", (unsigned long)buff )); if (fstat( fp->hostFd, &statBuf)) return errnoHost2Mint( errno, TOS_EFILNF ); if (buff) convert_to_xattr(fp->fc.drv, &statBuf, buff); } return TOS_E_OK; case MINT_FSTAT64: { struct stat statBuf; D(bug( "HOSTFS: fs_ioctl: FSTAT64: arg = %08lx", (unsigned long)buff )); if (fstat( fp->hostFd, &statBuf)) return errnoHost2Mint( errno, TOS_EFILNF ); if (buff) convert_to_stat64(fp->fc.drv, &statBuf, buff); } return TOS_E_OK; case MX_KER_XFSNAME: D(bug( "HOSTFS: fs_ioctl: MX_KER_XFSNAME: arg = %08lx", (unsigned long)buff )); if (buff) Host2AtariUtf8Copy(buff, "hostfs", 8); return TOS_E_OK; #ifdef EXT2_IOC_GETFLAGS case MINT_EXT2_IOC_GETFLAGS: { long flags; D(bug( "HOSTFS: fs_ioctl: EXT2_IOC_GETFLAGS( fd=%d, %08lx )", fp->hostFd, (unsigned long)buff )); if (ioctl( fp->hostFd, EXT2_IOC_GETFLAGS, &flags)) return errnoHost2Mint( errno, TOS_EACCES ); WriteInt32(buff, flags); } return TOS_E_OK; #endif #ifdef EXT2_IOC_SETFLAGS case MINT_EXT2_IOC_SETFLAGS: { long flags; D(bug( "HOSTFS: fs_ioctl: EXT2_IOC_SETFLAGS( fd=%d, %08lx )", fp->hostFd, (unsigned long)ReadInt32(buff) )); flags = ReadInt32(buff); if (ioctl( fp->hostFd, EXT2_IOC_SETFLAGS, &flags)) return errnoHost2Mint( errno, TOS_EACCES ); } return TOS_E_OK; #endif #if defined EXT2_IOC_GETVERSION || defined EXT2_IOC_GETVERSION_NEW case MINT_EXT2_IOC_GETVERSION: case MINT_EXT2_IOC_GETVERSION_NEW: { long version; D(bug( "HOSTFS: fs_ioctl: EXT2_IOC_GETVERSION( fd=%d, %08lx )", fp->hostFd, (unsigned long)buff )); #ifdef EXT2_IOC_GETVERSION_NEW if (ioctl( fp->hostFd, EXT2_IOC_GETVERSION_NEW, &version)) #endif if (ioctl( fp->hostFd, EXT2_IOC_GETVERSION, &version)) return errnoHost2Mint( errno, TOS_EACCES ); WriteInt32(buff, version); } return TOS_E_OK; #endif #if defined EXT2_IOC_SETVERSION || defined EXT2_IOC_SETVERSION_NEW case MINT_EXT2_IOC_SETVERSION: { long version; D(bug( "HOSTFS: fs_ioctl: EXT2_IOC_SETVERSION( fd=%d, %08lx )", fp->hostFd, (unsigned long)ReadInt32(buff) )); version = ReadInt32(buff); #ifdef EXT2_IOC_SETVERSION_NEW if (ioctl( fp->hostFd, EXT2_IOC_SETVERSION_NEW, &version)) #endif if (ioctl( fp->hostFd, EXT2_IOC_SETVERSION, &version)) return errnoHost2Mint( errno, TOS_EACCES ); } return TOS_E_OK; #endif } return TOS_ENOSYS; } int32 HostFs::xfs_dupcookie( XfsCookie *newCook, XfsCookie *oldCook ) { XfsFsFile *fs = new XfsFsFile(); if ( ( fs->parent = oldCook->index->parent ) != NULL ) { if ( (fs->name = strdup(oldCook->index->name)) == NULL ) { D(bug( "HOSTFS: fs_dupcookie: strdup() failed!" )); delete fs; return TOS_ENSMEM; } fs->parent->childCount++; } else fs->name = oldCook->drv->hostRoot; MAPNEWVOIDP( fs ); fs->refCount = 1; fs->childCount = 0; /* don't heritate childs! */ *newCook = *oldCook; newCook->index = fs; return TOS_E_OK; } int32 HostFs::xfs_release( XfsCookie *fc ) { D2(bug( "release():\n" " fc = %08lx\n" " fs = %08lx\n" " dev = %04x\n" " aux = %04x\n" " index = %08lx\n" " parent = %08lx\n" " name = \"%s\"\n" " usecnt = %d\n" " childcnt = %d\n", (long)fc, (long)fc->xfs, (int)fc->dev, (int)fc->aux, (long)fc->index, (long)fc->index->parent, fc->index->name, fc->index->refCount, fc->index->childCount )); if ( !fc->index->refCount ) { D(bug( "HOSTFS: fs_release: RELEASE OF UNUSED FILECOOKIE!" )); return TOS_EACCDN; } fc->index->refCount--; xfs_freefs( fc->index ); return TOS_E_OK; } HostFs::ExtDrive::ExtDrive( HostFs::ExtDrive *old ) { if ( old ) { driveNumber = old->driveNumber; fsDrv = old->fsDrv; fsFlags = old->fsFlags; fsDevDrv = old->fsDevDrv; hostRoot = old->hostRoot ? strdup( old->hostRoot ) : NULL; mountPoint = old->hostRoot ? strdup( old->mountPoint ) : NULL; halfSensitive = old->halfSensitive; } } int32 HostFs::xfs_native_init( int16 devnum, memptr mountpoint, memptr hostroot, bool halfSensitive, memptr filesys, memptr filesys_devdrv ) { char fmountPoint[MAXPATHNAMELEN]; Atari2HostUtf8Copy( fmountPoint, mountpoint, sizeof(fmountPoint) ); ExtDrive *drv = new ExtDrive(); drv->fsDrv = filesys; drv->fsFlags = ReadInt32(filesys + 4); drv->fsDevDrv = filesys_devdrv; /* * for drivers that are not running under mint, * report our current timezone (in the filesys.res1 field) */ WriteInt32(filesys + 136, timezone); int16 dnum = -1; size_t len = strlen( fmountPoint ); if ( len == 2 && fmountPoint[1] == ':' ) { // The mountPoint is of a "X:" format: (BetaDOS mapping) dnum = DriveFromLetter(fmountPoint[0]); } else if (len >= 4 && strncasecmp(fmountPoint, "u:\\", 3) == 0) { // the hostfs.xfs tries to map drives to u:\\X // in this case we use the [HOSTFS] of config file here dnum = DriveFromLetter(fmountPoint[3]); /* convert U:/c/... to c:/... */ fmountPoint[0] = toupper(fmountPoint[3]); memmove(fmountPoint + 2, fmountPoint + 4, len - 3); len -= 2; } strd2upath(fmountPoint, fmountPoint); if (len > 0 && fmountPoint[len - 1] != '/') strcat(fmountPoint, "/"); drv->mountPoint = strdup( fmountPoint ); int maxdnum = sizeof(bx_options.aranymfs.drive) / sizeof(bx_options.aranymfs.drive[0]); if (dnum >= 0 && dnum < maxdnum) { drv->hostRoot = my_canonicalize_file_name( bx_options.aranymfs.drive[dnum].rootPath, true ); drv->halfSensitive = bx_options.aranymfs.drive[dnum].halfSensitive; } else { dnum = -1; // invalidate dnum // no [HOSTFS] match -> map to the passed mountpoint // - future extension to map from m68k side char fhostroot[MAXPATHNAMELEN]; Atari2HostUtf8Copy( fhostroot, hostroot, sizeof(fhostroot) ); drv->hostRoot = my_canonicalize_file_name( fhostroot, true ); drv->halfSensitive = halfSensitive; } // no rootPath -> do not map the drive if ( drv->hostRoot == NULL || !strlen(drv->hostRoot) ) { delete drv; return TOS_EPTHNF; } drv->driveNumber = devnum; mounts.insert(std::make_pair( devnum, drv )); // if the drive mount was mounted to some FreeMiNT mountpoint // which devnum is higher that MAXDRIVES then serve also as the // GEMDOS drive equivalent. This is a need for the current // FreeMiNT kernel which requires the driver for u:\[a-z0-6] to react // to 0-31 devno's if (dnum != -1 && dnum != devnum) { drv = new ExtDrive( drv ); drv->driveNumber = dnum; mounts.insert(std::make_pair( dnum, drv )); } D(bug("HOSTFS: fs_native_init:\n" "\t\t fs_drv = %#08x, flags %#08x\n" "\t\t fs_devdrv = %#08x\n" "\t\t fs_devnum = %#04x (%c)\n" "\t\t fs_mountPoint = %s\n" "\t\t fs_hostRoot = %s [%d]\n" ,drv->fsDrv, drv->fsFlags ,drv->fsDevDrv ,(int)devnum ,dnum < 0 ? '-' : DriveToLetter(dnum) ,drv->mountPoint ,drv->hostRoot ,(int)strlen(drv->hostRoot) )); return TOS_E_OK; } void HostFs::freeMounts() { for(MountMap::iterator it = mounts.begin(); it != mounts.end(); ) { delete it->second; mounts.erase(it++); } } HostFs::HostFs() { mounts.clear(); } void HostFs::reset() { freeMounts(); } HostFs::~HostFs() { freeMounts(); } #endif /* HOSTFS_SUPPORT */ /* vim:ts=4:sw=4: */ aranym-1.1.0/src/natfeat/fvdidrv_nfapi.h0000664000175000017500000000150313454637621016403 0ustar joyjoy/* * STanda 2004 * * GPL */ #ifndef _FVDIDRV_NFAPI_H #define _FVDIDRV_NFAPI_H /* if you change anything in the enum {} below you have to increase this FVDIDRV_NFAPI_VERSION! fVDI v0.960 driver API, fVDI Natfeat v1.400 */ #define FVDIDRV_NFAPI_VERSION 0x14000960L enum { FVDI_GET_VERSION = 0, /* subID = 0 */ FVDI_GET_PIXEL = 1, FVDI_PUT_PIXEL = 2, FVDI_MOUSE = 3, FVDI_EXPAND_AREA = 4, FVDI_FILL_AREA = 5, FVDI_BLIT_AREA = 6, FVDI_LINE = 7, FVDI_FILL_POLYGON = 8, FVDI_GET_HWCOLOR = 9, FVDI_SET_COLOR = 10, FVDI_GET_FBADDR = 11, FVDI_SET_RESOLUTION = 12, FVDI_GET_WIDTH = 13, FVDI_GET_HEIGHT = 14, FVDI_OPENWK = 15, FVDI_CLOSEWK = 16, FVDI_GETBPP = 17, FVDI_EVENT = 18, FVDI_TEXT_AREA = 19 #if 0 , FVDI_GETCOMPONENT = 20 #endif }; extern unsigned long nfFvdiDrvId; #endif /* _FVDIDRV_NFAPI_H */ aranym-1.1.0/src/natfeat/ethernet.h0000664000175000017500000000451513454637621015406 0ustar joyjoy/* * ethernet.h - Ethernet Card Emulation * * Copyright (c) 2002-2005 Standa Opichal, Petr Stehlik of ARAnyM team * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _ETHERNET_H #define _ETHERNET_H #include "nf_base.h" #include "parameters.h" // defines MAX_ETH #define MAX_PACKET_SIZE 9000 class ETHERNETDriver : public NF_Base { public: class Handler { public: int ethX; ssize_t packet_length; uint8 packet[MAX_PACKET_SIZE+2]; SDL_Thread *handlingThread; // Packet reception thread SDL_sem *intAck; // Interrupt acknowledge semaphore Handler(int eth_idx) { ethX = eth_idx; packet_length = 0; handlingThread = NULL; intAck = NULL; } virtual bool open() = 0; virtual void close() = 0; virtual int recv(uint8 *, int) = 0; virtual int send(const uint8 *, int) = 0; virtual ~Handler() { } }; private: Handler *handlers[MAX_ETH]; Handler *getHandler(int ethX); static int pending_interrupts; int32 readPacketLength(int ethX); void readPacket(int ethX, memptr buffer, uint32 len); void sendPacket(int ethX, memptr buffer, uint32 len); bool init(); void exit(); // emulators handling the TAP device bool startThread(int ethX); void stopThread(int ethX); static int receiveFunc(void *arg); protected: typedef enum {HOST_IP, ATARI_IP, NETMASK} GET_PAR; int get_params(GET_PAR which); public: ETHERNETDriver(); ~ETHERNETDriver(); void reset(); const char *name() { return "ETHERNET"; } bool isSuperOnly() { return true; } int32 dispatch(uint32 fncode); }; #endif // _ETHERNET_H /* vim:ts=4:sw=4: */ aranym-1.1.0/src/natfeat/ethernet.cpp0000664000175000017500000002506413454637621015743 0ustar joyjoy/* * ethernet.cpp - Ethernet Card Emulation * * Copyright (c) 2002-2005 Standa Opichal, Petr Stehlik of ARAnyM team * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include "cpu_emulation.h" #include "main.h" #include "ethernet.h" #include "tools.h" #include "toserror.h" #define DEBUG 0 #include "debug.h" #include "SDL_compat.h" #include #include "../../atari/network/ethernet/ethernet_nfapi.h" /**************************** * Configuration zone begins */ #ifdef OS_cygwin #include "cygwin/ethernet_cygwin.h" #else # ifdef OS_darwin # ifdef ENABLE_BPF # include "../Unix/MacOSX/ethernet_macosx.h" # else # include "../Unix/darwin/ethernet_darwin.h" # endif # else # include "linux/ethernet_linux.h" # endif #endif // Ethernet runs at interrupt level 3 by default but can be reconfigured #if 1 # define INTLEVEL 3 # define TRIGGER_INTERRUPT TriggerInt3() #else # define INTLEVEL 5 # define TRIGGER_INTERRUPT TriggerInt5() #endif /* * Configuration zone ends **************************/ int ETHERNETDriver::pending_interrupts; int32 ETHERNETDriver::dispatch(uint32 fncode) { D(bug("Ethernet: Dispatch %d", fncode)); int32 ret = 0; switch(fncode) { case GET_VERSION: D(bug("Ethernet: getVersion")); ret = ARAETHER_NFAPI_VERSION; break; case XIF_INTLEVEL: // what interrupt level is used? D(bug("Ethernet: getINTlevel")); ret = INTLEVEL; break; case XIF_GET_MAC: // what is the MAC address? /* store MAC address to provided buffer */ { int ethX = getParameter(0); Handler *handler = getHandler(ethX); if (handler == NULL) { ret = 0; // return FALSE if ethX not defined break; } memptr buf_ptr = getParameter(1); // destination buffer uint32 buf_size = getParameter(2); // buffer size D(bug("Ethernet: getMAC(%d, %x, %d)", ethX, buf_ptr, (int)buf_size)); // default MAC Address is just made up uint8 mac_addr[6] = {'\0','A','E','T','H', uint8('0'+ethX) }; // convert user-defined MAC Address from string to 6 bytes array char *ms = bx_options.ethernet[ethX].mac_addr; bool format_OK = false; if (strlen(ms) == 2*6+5 && (ms[2] == ':' || ms[2] == '-')) { ms[2] = ms[5] = ms[8] = ms[11] = ms[14] = ':'; int md[6] = {0, 0, 0, 0, 0, 0}; int matched = sscanf(ms, "%02x:%02x:%02x:%02x:%02x:%02x", &md[0], &md[1], &md[2], &md[3], &md[4], &md[5]); if (matched == 6) { for(int i=0; i<6; i++) mac_addr[i] = md[i]; format_OK = true; } } if (!format_OK) { panicbug("MAC Address of [ETH%d] in incorrect format", ethX); } Host2Atari_memcpy(buf_ptr, mac_addr, MIN(buf_size, sizeof(mac_addr))); ret = 1; // TRUE } break; case XIF_IRQ: // interrupt raised by native side thread polling tap0 interface { int dev_bit = getParameter(0); if (dev_bit == 0) { // dev_bit = 0 means "tell me what devices want me to serve their interrupts" ret = pending_interrupts; } else { // otherwise the set bit means "I'm acknowledging this device's interrupt" int ethX = -1; switch(dev_bit) { case 0x01: ethX = 0; break; case 0x02: ethX = 1; break; case 0x04: ethX = 2; break; case 0x08: ethX = 3; break; case 0x10: ethX = 4; break; case 0x20: ethX = 5; break; case 0x40: ethX = 6; break; case 0x80: ethX = 7; break; default: panicbug("Ethernet: wrong XIF_IRQ(%d)", dev_bit); break; } Handler *handler = getHandler(ethX); if (handler == NULL) { panicbug("Ethernet: handler for %d not found", ethX); return 0; } D(bug("Ethernet: ETH%d IRQ acknowledged", ethX)); // Acknowledge interrupt to reception thread SDL_SemPost(handler->intAck); ret = 0; } } break; case XIF_START: if (startThread( getParameter(0) /* ethX */) == false) ret = TOS_EUNDEV; break; case XIF_STOP: stopThread( getParameter(0) /* ethX */); break; case XIF_READLENGTH: ret = readPacketLength( getParameter(0) /* ethX */); break; case XIF_READBLOCK: readPacket( getParameter(0) /* ethX */, getParameter(1) /* buff */, getParameter(2) /* len */ ); break; case XIF_WRITEBLOCK: sendPacket( getParameter(0) /* ethX */, getParameter(1) /* buff */, getParameter(2) /* len */ ); break; case XIF_GET_IPHOST: D(bug("XIF_GET_IPHOST")); ret = get_params(HOST_IP); break; case XIF_GET_IPATARI: D(bug("XIF_GET_IPATARI")); ret = get_params(ATARI_IP); break; case XIF_GET_NETMASK: D(bug("XIF_GET_NETMASK")); ret = get_params(NETMASK); break; default: D(bug("XIF: unsupported function %d", fncode)); ret = TOS_ENOSYS; break; } return ret; } int ETHERNETDriver::get_params(GET_PAR which) { int ethX = getParameter(0); memptr name_ptr = getParameter(1); uint32 name_maxlen = getParameter(2); const char *text = NULL; D(bug("Ethernet: getPAR(%d) for eth%d to buffer at %x of size %d", which, ethX, name_ptr, name_maxlen)); if (! ValidAddr(name_ptr, true, name_maxlen)) BUS_ERROR(name_ptr); switch(which) { case HOST_IP: text = bx_options.ethernet[ethX].ip_host; break; case ATARI_IP:text = bx_options.ethernet[ethX].ip_atari; break; case NETMASK: text = bx_options.ethernet[ethX].netmask; break; default: text = ""; } Host2AtariSafeStrncpy(name_ptr, text, name_maxlen); return strlen(text); } int32 ETHERNETDriver::readPacketLength(int ethX) { Handler *handler = getHandler(ethX); if (handler == NULL) { panicbug("Ethernet: handler for %d not found", ethX); return 0; } return handler->packet_length; } /* * ETHERNETDriver ReadPacket routine */ void ETHERNETDriver::readPacket(int ethX, memptr buffer, uint32 len) { Handler *handler = getHandler(ethX); if (handler == NULL) { panicbug("Ethernet: handler for %d not found", ethX); return; } D(bug("Ethernet: ReadPacket dest %08x, len %x", buffer, len)); Host2Atari_memcpy(buffer, handler->packet, MIN(len, MAX_PACKET_SIZE)); if (len > MAX_PACKET_SIZE) { panicbug("ETHERNETDriver::readPacket() - length %d > %d", len, MAX_PACKET_SIZE); } } /* * ETHERNETDriver writePacket routine */ void ETHERNETDriver::sendPacket(int ethX, memptr buffer, uint32 len) { Handler *handler = getHandler(ethX); if (handler == NULL) { panicbug("Ethernet: handler for %d not found", ethX); return; } uint8 packetToWrite[MAX_PACKET_SIZE+2]; D(bug("Ethernet: SendPacket src %08x, len %x", buffer, len)); len = MIN(len, MAX_PACKET_SIZE); Atari2Host_memcpy( packetToWrite, buffer, len ); // Transmit packet if (handler->send(packetToWrite, len) < 0) { D(bug("WARNING: Couldn't transmit packet")); } } /* * Initialization */ bool ETHERNETDriver::init(void) { pending_interrupts = 0; for(int i=0; iopen() ) { handlers[i] = handler; } else { delete handler; handlers[i] = NULL; } } return true; // kinda unnecessary } /* * Deinitialization */ void ETHERNETDriver::exit() { D(bug("Ethernet: exit")); for(int i=0; iclose(); delete handler; handlers[i]= NULL; } } } // reset, called upon OS reboot void ETHERNETDriver::reset() { D(bug("Ethernet: reset")); for(int i=0; i= 0 && ethX < MAX_ETH) { Handler *h = handlers[ethX]; if (h != NULL) { assert(h->ethX == ethX); return h; } } return NULL; } // ctor ETHERNETDriver::ETHERNETDriver() { init(); } // destructor, called on exit automatically ETHERNETDriver::~ETHERNETDriver() { exit(); } /* * Start packet reception thread */ bool ETHERNETDriver::startThread(int ethX) { Handler *handler = getHandler(ethX); if (handler == NULL) { panicbug("Ethernet: handler for %d not found", ethX); return false; } if (handler->handlingThread == NULL) { D(bug("Ethernet: Start thread")); if ((handler->intAck = SDL_CreateSemaphore(0)) == NULL) { D(bug("WARNING: Cannot init semaphore")); return false; } handler->handlingThread = SDL_CreateNamedThread( receiveFunc, "Ethernet", handler ); if (handler->handlingThread == NULL) { D(bug("WARNING: Cannot start ETHERNETDriver thread")); return false; } } return true; } /* * Stop packet reception thread */ void ETHERNETDriver::stopThread(int ethX) { Handler *handler = getHandler(ethX); if (handler == NULL) { panicbug("Ethernet: handler for %d not found", ethX); return; } if (handler->handlingThread) { D(bug("Ethernet: Stop thread")); #ifdef FIXME // pthread_cancel(handlingThread); // FIXME: set the cancel flag. SDL_WaitThread(handler->handlingThread, NULL); SDL_DestroySemaphore(handler->intAck); #endif handler->handlingThread = NULL; } } /* * Packet reception thread */ int ETHERNETDriver::receiveFunc(void *arg) { Handler *handler = (Handler*)arg; // Call protocol handler for received packets // ssize_t length; for (;;) { // Read packet device handler->packet_length = handler->recv(handler->packet, MAX_PACKET_SIZE); // Trigger ETHERNETDriver interrupt (call the m68k side) D(bug(" packet received (len %d), triggering ETHERNETDriver interrupt", (int)handler->packet_length)); pending_interrupts |= (1 << handler->ethX); TRIGGER_INTERRUPT; // Wait for interrupt acknowledge (m68k network driver read interrupt to finish) D(bug(" waiting for int acknowledge with pending irq mask %02x", pending_interrupts)); SDL_SemWait(handler->intAck); pending_interrupts &= ~(1 << handler->ethX); D(bug(" int acknowledged, pending irq mask now %02x", pending_interrupts)); } return 0; } aranym-1.1.0/src/natfeat/doc/0000775000175000017500000000000013454637621014157 5ustar joyjoyaranym-1.1.0/src/natfeat/doc/sample.c0000664000175000017500000000333213454637621015605 0ustar joyjoy/* * sample.c - implementation of some Native functions * * Copyright (c) 2002 Laurent Vogel * * TODO: license (LGPL?) */ #include "nf.h" /* * this is the list of functions defined in this module. * they are made static in order to guarantee that they will not * interfere with names of other functions??? * * TODO: suggest a naming rule for implementations? * example: nfi_ followed by the name of the feature? */ static void shutdown(nf_addr_t addr); static void open_channel(nf_addr_t addr); static void print_channel(nf_addr_t addr); /* * the actual implementation of functions defined in this module */ /* quit the emulator */ static void shutdown(nf_addr_t addr) { nf_quit(); } static void open_channel(nf_addr_t addr) { /* TODO: bus error */ char * channel = nf_get_str(addr); int32_t token = nf_to_token(channel); nf_set_d0l(token); } static void print_channel(nf_addr_t addr) { /* TODO: bus error */ int32_t token = nf_get_l(addr); char * channel = nf_from_token(token); char * str; if(channel == NULL) channel = ""; str = nf_get_str(addr+4); printf("%s: %s\n", channel, str); nf_free(str); } static void native_print(nf_addr_t addr) { /* TODO: bus error */ char * str = nf_get_str(addr); printf("%s", str); nf_free(str); } /* TODO, basic set emulator name, version */ static void emulator_name(nf_addr_t addr) { char *name = nf_emulator_name(); ... } /* * module initialisation. This function is called by the * emulator in an emulator-dependent way after the native * feature services have been setup, to register the native * features. * * TODO: suggest a naming convention for such functions? */ void sample_init(void) { nf_register("shutdown", shutdown); } aranym-1.1.0/src/natfeat/doc/nf.h0000664000175000017500000001330513454637621014735 0ustar joyjoy/* * nf.h - Implementation interface for Native features * * Copyright (c) 2002 Laurent Vogel * * TODO - determine what license should apply (LGPL?) */ /*========================== basic types ===================================*/ /* TODO: extern C ..., #IFDEF _NF_H, ... */ #include #include #include /* the type of an address in the 68k side */ typedef uint32_t nf_addr_t; /* the type of the native function */ typedef void (*nf_func_t)(nf_addr_t); #if BUS_ERROR_STRUCT /* this structure contains details that will be used to fill in specific * fields in the bus error stack frame. it will be set by whatever functions * are used to check for bus error, and pass to nf_buserr() to actually * raise the bus error. */ struct nf_berr; typedef struct nf_berr nf_berr_t; #endif /*========================== basic emulator glue ===========================*/ /* TODO: document behaviour about bus error */ int8_t nf_get_b (nf_addr_t addr); uint8_t nf_get_ub(nf_addr_t addr); int16_t nf_get_w (nf_addr_t addr); uint16_t nf_get_uw(nf_addr_t addr); int32_t nf_get_l (nf_addr_t addr); uint32_t nf_get_ul(nf_addr_t addr); void nf_set_b (nf_addr_t addr, int8_t value); void nf_set_ub(nf_addr_t addr, uint8_t value); void nf_set_w (nf_addr_t addr, int16_t value); void nf_set_uw(nf_addr_t addr, uint16_t value); void nf_set_l (nf_addr_t addr, int32_t value); void nf_set_ul(nf_addr_t addr, uint32_t value); void nf_set_d0l (int32_t value); void nf_set_d0ul(uint32_t value); /* TODO: for native to 68k function call, more control is needed * (push to stack, pop from stack, set pc, ...) */ /* returns != 0 if the memory zone (from begin to end inclusive) * is readable, else sets bad to any bad address within the zone */ int nf_readable (nf_addr_t begin, nf_addr_t end, nf_addr_t *bad); int nf_writeable(nf_addr_t begin, nf_addr_t end, nf_addr_t *bad); #if NEEDS_FURTHER_THOUGHT /* interrupt level 6 * TODO: needs further thought */ void nf_interrupt(int number); #endif /* raise a bus error for the given address; write != 0 if the bus error * occurred when writing, 0 if reading. * TODO: the bus error case should be handled differently. when detecting * that a bus error occurs, the utility function should save this bus error * context, and the native function implementation should simply call * bus error and return ??? Or, the nf_addr_t *bad should be replaced * by a type nf_berr_t * pointer to a structure. */ void nf_buserr (nf_addr_t bad, int write); /*========================== context handling ===========================*/ /* functions providing a means to encapsulate native addresses into * a 'token' that can be represented in an int32_t regardless of the * native bus address size. */ /* returns a token usable to later retrieve the passed ptr */ int32_t nf_to_token(void * ptr); /* returns the ptr that was earlier associated with this token. * the token is not destroyed and the ptr can be retrieved any number of * times. * TODO: what happens if the token is not a token created by nf_to_token? */ void * nf_from_token(int32_t token); /* frees the token. It is unspecified what happens if further calls to * nf_from_token() on this same token happen. */ void * nf_free_token(int32_t token); /*========================== utility functions ===========================*/ /* these can be implemented using the other above, or using more direct * access to the emulator internals. */ /* TODO: what if bus error? */ void nf_set_zone(nf_addr_t addr, void *buf, size_t size); void nf_get_zone(void *buf, nf_addr_t addr, size_t size); /* returns the length of the string in 68k memory, or -1 if a bus error * occured. TODO: what is the bad address then? */ int nf_strlen(nf_addr_t addr); /* returns a malloc()-allocated copy of the string found in 68k memory. * TODO: what if no memory, what if bus error? * TODO: does the use of malloc cause a problem? should a nf_malloc be * defined (to allow using whatever allocation scheme is available in * the emulator)? */ char * nf_get_str(nf_addr_t addr); /* copies in 68k memory the supplied string. * TODO: what if bus error? */ void nf_set_str(nf_addr_t addr, char *s); /* copies up to size chars in native memory, and returns a malloc()-allocated * string that is always zero-terminated. * TODO: memory, bus error? */ char * nf_get_nstr(nf_addr_t addr, int size); /* copies in 68k memory the supplied string, up to size chars. * TODO: is the string zero-terminated? * TODO: what if bus error? */ void nf_set_nstr(nf_addr_t addr, char *s, int size); /*========================== management functions ========================*/ /* called either by the nf manager or by implementations to report errors * TODO: check if this is coherent with what emulators provide */ void nf_error(const char *fmt, ...); void nf_verror(const char *fmt, va_list ap); /* called by the emulator to initialise the nf manager; non-zero means error.*/ int nf_init(void); /* called by a native implementation module to register native functions * returns the id by which the native function will be callable from 68k side. * a zero id is returned in case of error (no memory, or duplicate name). * supplying a NULL name registers an unnamed function. */ int32_t nf_register_func(const char * name, nf_func_t func); #if VALUE_ONLY_FEATURES /* if value-only features are obtained using the ID, * called by a native implementation module to register native * value-only features. returns 0 if an error occurs * (no memory, or duplicate name) */ int nf_register_value(const char *name, int32_t value); #endif /* called by the CPU core */ int32_t nf_get_id(nf_addr_t name); nf_func_t nf_get_func(int32_t id); /* TODO: implement the four native opcodes */ aranym-1.1.0/src/natfeat/doc/native.txt0000664000175000017500000004573013454637621016217 0ustar joyjoy Native features proposal Laurent Vogel, 8 december 2001 Introduction This document describes a general technique to allow interaction between software running on a m68k processor inside an emulator, and native software. In this document, the emulator is some software running on a native platform, to run software in a 68k platform. This document specifies a general technique by which 68k software can interact with special native software to achieve special effects not allowed directly on the 68k platform. To this end two interfaces are specified - the 68k interface, describing special illegal opcodes by which the 68k code can call the native feature services. - the implementation interface, describing how native features can be implemented in a partable way independently of the specific emulator. This is illustrated in the following diagram. native side 68k side ______________________/\______________________ ____/\____ / \ / \ implementation 68k interface interface __________ (nf.h) _________________________ __________ | | | | g | | | | | feature |<------->| native | l | CPU and |<------->| 68k code | | implemen-| | feature | u | memory | |__________| | tation | | services | e | core | |__________| |__________|___|__________| \______ ______/ \/ specific to each particular emulator Scope and contents The Native feature proposal comprises of mandatory specifications, optional specifications, and optional implementations. The mandatory specifications is the 68k interface, i.e. the behaviour that can be observed from 68k side regardless of how it is implemented in the native side. An optional set of specification is a basic set of native features, that can be supplied or not supplied by the emulator. Another optional specification is the implementation interface, i.e. the services provided by the emulator to implementations of particular native features. This specification is optional because it is perfectly valid to implement native features without using this interface (for example for native features very tied to particular emulators). Other optional specifications may describe Operating System-related services on the 68k side to encapsulate the raw 68k interface. A suitable additional specification for TOS is provided in annex E. Optional implementations are - a supplied implementation of the generic native feature services; - supplied implementation of some particular native features; - supplied glue to particular emulators These are optional, because it is perfectly valid to provide the same functionality using a different implementation. Definitions The 68k platform here is a virtual machine based on a motorola 680xx processor, where xx is one of 00, 08, 10, 20, 30, 40, 60, or any other processor with the same programming model and instruction set. Each native 'feature' is a group of 'functions', each taking arguments and returning a value. here is a short list of terms that have a special meaning in this document: id - non-null feature identifier with bits 0-19 set to zero sub-id - 20-bit function identifier integer feature - a groupe of functions function - a native function 68k side - a virtual machine based on a supported processor supported processor - 68008, 680[012346]0, and compatibles special opcodes - 68k opcodes used by the native feature framework emulator - the container of both the 68k side and the native side basic set - the mandatory set of features Limitations Other 68k processors like the ColdFire, whose instruction set is not compatible to the instruction set of the supported 68k processors, are not taken into account by this document. In the event where some 68k code were to be designed to support both the current specification (when running on a supported 68k processor) and unsupported processors, that code should not use the special opcodes if it can be determined that the processor is unsupported, either by first checking the processor type, or by determining in an operating-system-dependant way that native features are not available. This document does not support emulators emulating a multi-processor 68k machine (several 68k processors running in parallel). The implementation interface, and the proposed implementation of native feature services do not fully support multi-thread native environments in which the 68k memory can be modified during the execution of one native feature call. All 68k memory accessed during the execution of a native function, either directly (the stack), or indirectly (following pointers) must reside in physical memory before the native function is called. As it is an error to call a native function with non-accessible memory, the implementation of native functions may ignore the possibility that bus errors occur when they fetch 68k memory. (so, they can let the 68k glue raise a bus error automatically, without testing beforehand that the memory is valid and without having to take steps to ensure that no resource lossage occurs due to such automatic bus errors being raised). Some of these limitations might be solved by changing the implementation of native feature services. Principle Each native feature has a name uniquely identifying this feature. 68k code inquires whether the feature is available by asking for the 'ID' corresponding to the name: long id = nf_get_id(name); If the returned ID is zero, then the feature isn't available. Else, functions provided by this feature may be called given this ID, a sub-ID identifying the function among those provided by the feature, and the requested function arguments: long result_value = nf_call(id+sub_id, the, requested, arguments); IDs have the following format: - bits 20-31 hold a meaningless number internally managed by the emulator; - bits 0-19 are set to zero, and serve as a place-holder to contain the sub-ID, a number that is given to the native implementation to allow efficient handling of multiple actual functions all regrouped under the same feature name. See Annex G for a full example of how to call the basic set. This document describes - a small number of special opcodes (m68k illegal instructions) used to manage native features; - guidance for defining native features; - a proposed basic set of native features that may be implemented by emulators. Compliant emulator Any emulator has the choice of providing the full interface described in this document, or nothing. If the emulator does not provide the interface, then all illegal opcodes defined below must provoke the normal m68k behaviour (i.e. raise an illegal exception). If the emulator provides one illegal opcode defined below, then it must also provide the complete set of opcodes, with the behaviour defined in this document. Such an emulator is called a compliant emulator. In the rest of the document, 'emulator' means 'compliant emulator'. C calling convention Native functions do the job of C functions, using the C calling convention described here: - values are represented in memory as big endian (the byte with lowest address is the most significant byte); - 'char' are 8bit values, either signed or unsigned (unspecified); - 'short' are 16bit values; - 'int', 'long' and pointers are 32 bit values; - the return type of a function is either void (no return type), or a 32bit value; functions cannot return 8bit or 16bit values, and functions cannot return structs; - parameters are passed on the stack; the last parameter is pushed first, then any parameters until the first parameter which is pushed last; when pushing parameters, if the size of the parameter is less than 32 bit, the parameter is converted to a 32bit value by padding to the left with unspecified bytes; - struct members are set in memory in growing addresses, with padding using the smallest number of unspecified bytes needed so that any member not of type char, signed char, unsigned char, or an array of these three types, has an even address. String encoding is not specified in this document. Generally speaking native functions should document this. When a string is to be displayed to the user (as opposed as written in a file) it can be assumed that chars in the range 0x20 to 0x7e are ASCII (ISO-646). Native functions should not alter any registers other than d0, unless properly justified and documented. Naming Feature names beginning with 'NF_' or 'nf_' are reserved. Special opcodes Special opcodes are taken in the range 0x73nn (illegal moveq instructions). The following opcodes are defined: mnemonic nf_getid (in ARAnyM debugger it's NATFEAT_ID) value 0x7300 prototype unsigned long nf_get_id(const char * feature_name); ignore the first long word on the stack; let feature_name be the second long word on the stack; if the null-ended string pointed to by feature_name is the name of an implemented native feature, then return its ID in register D0, else return zero. mnemonic nf_call (in ARAnyM debugger it's NATFEAT_CALL) value 0x7301 prototype long nf_call(unsigned long feature_id, ...); ignore the first long word on the stack; let feature_id be the second long word on the stack; if feature_id is not a valid native function ID then the result is unspecified; else, call the function defined by the ID (optionnally containing a non-null sub-ID), passing the rest of the stack arguments (i.e. starting at address stack+8) as parameters. returns in register D0 the 32bit value returned by the fonction. If the function is documented as not returning any meaningful value, (i.e. declared as void function(...)) then the value in D0 is unspecified. Note: both these special opcodes ignore the first long word on the stack. This is done so that these special opcodes can be encapsulated into small assembler routines that are declared with the same prototype as indicated above for each special opcode. For instance, here is an actual declaration and code for nf_get_id: extern long nf_get_id(const char * feature_name); .global _nf_get_id: _nf_get_id: dc.w 0x7300 rts and here is another implementation of the same: long nf_get_id_opcodes = 0x73004e75; #define nf_get_id ((long (*)(const char *))&nf_get_id_opcodes) These opcodes are defined both for supervisor mode (Interrupt or Master modes on 680x0) and normal user mode. Each NatFeat has a bool flag "isSupervisorModeRequired" and if set to true then calling such opcode from user mode will result in a priviledge exception. The stack used for passing arguments will be the current stack (SSP/ISP for Supervisor/Interrupt mode, MSP for Master mode). Feature documentation Feature documentation shall provide the following information: - the feature name, a case-insensitive string of printable ASCII characters. - the features that are required for this one to work - the list of functions provided by this feature, and for each function: - its sub-id - a description of the way the feature works, including a function prototype and a description of return values and error cases Optionally the feature text can include an implementation, that is, source code running inside the emulator. In this case it is recommended that it be given with a licence allowing it to be included in most emulators, including closed-source ones (licence like LGPL); also it is best if such sample implementation is written in one of the proposed implementation interfaces. Basic set features "NF_NAME" sub-ID 0 - user allowed unsigned long getName(char *buffer, unsigned long size) fills 'buffer' with a null-terminated string representing the emulator name. At most 'size' bytes will be written in the buffer (which means that the string will be truncated if it contains more than size - 1 characters). the string should contain only printable ASCII characters (ASCII 32 to 126 inclusive). Returns the length of the string before truncation. sub-ID 1 - user allowed unsigned long getFullName(char *buffer, unsigned long size) similar to getName, but the string is the emulator name plus its version (and anything else that might be printed together with the emulator name) Returns the length of the string before truncation. "NF_VERSION" sub-ID 0 - user allowed long getVersion(void); returns the version of the native feature framework, hex encoded (upper word = major number, lower word = minor number). This document describes native features version 1.0 (hex encoding 0x00010000). "NF_STDERR" sub-ID 0 - user allowed unsigned long output(const char *string); emit a null-terminated string of printable ASCII chars on a particular output stream, intended for use to display debug messages. Returns the number of chars printed. Characters not among the set of ASCII chars 9 (horizontal tabulation '\t'), 10, 13, (both meaning '\n' newline), 32-126 will have implementation defined representations. "NF_SHUTDOWN" sub-id 0 - supervisor mode only void shutdown(void); immediately terminate the execution of the emulator, with no user interaction. Error cases features should be developed in a way that allow them to be called from multitasking host systems. To achieve this, there should not be a single 'errno' feature collecting the status of multiple distinct features, but rather each feature or feature group should provide an independent way of reporting errors. In any case calling a feature with incorrect parameters should not crash the emulator. Memory On emulators implementing MMU and where physical addresses differ from logical addresses, the memory that will be accessed by native features uses the logical addresses (that is, exactly the same memory than that seen by the CPU). This does not prevent special features to have special behaviour. If the feature was asked to access memory that does not exist, or whose access is not allowed by the current MMU policy, or to write to ROM, then the feature should directly provoke a bus error. The exact address used in the bus error stack frame can be any address within the range of offending addresses. TODO: remove the need for reporting the offending address? DISCUSSION: almost no emulator keeps track of the offending address, and even less 68k software cares for it. relaxing the need for reporting an offending address would simplify native feature implementations for instance, if a bzero native feature is asked to clear from memory 0x2000 to 0x3fff, and only memory 0 to 0x2fff is writeable, then - there should be a bus error, - the value of memory from 0x2000 to 0x2fff is 'unspecified' - the address reported in the bus error can be any address between 0x3000 and 0x3fff for features running on a 68000-only emulator, asking for unaligned memory accesses will NOT provoke address errors. However, such aligned memory accesses may be much slower. DISCUSSION: We don't want to impose the emulator to implement unaligned memory access; however we don't want to impose to the native function implementation to check whether they are running on 68000-only emulators. Calling 68k code from native side. There is no provision in this document to allow native features to call 68k subroutines. Therefore the control flow must reside entirely on the 68k side. Feature designers should decompose the native functions into small functions that can be interspersed, on the 68k side, by calls to the required subroutines. Appendix A - TODO list - add a paragraph encouraging feature designers to think! - add a paragraph encouraging native features using interrupts to be as independent from other features as possible, to avoid deadlock - rework appendix B completely. Appendix B - implementation interface see file nf.h (to be rewritten following experience gained) Appendix C - sample implementation (to be rewritten following experience gained) Appendix D - Contributors Thanks to all who did contribute to this document, including: Milan Jurik Petr Stehlik Martin Dring Johan Klockars ... TODO: complete this list. Appendix E - TOS glue : the __NF cookie TOS-compatible operating systems may define a cookie named '__NF', pointing to the following data: struct cookie__NF_data { long magic; /* equals 0x20021021 */ long (*getid)(const char *name); long (*nfcall)(long id, ...); }; this cookie serves two purposes: a) report that native features are available b) provide pointers to functions encapsulating the illegal opcodes. It is intended to be used as follow: - 68k code that do not intend to ever run on unsupported processors is not obliged to check for this cookie, and may instead use the illegal opcodes directly; However it may check for the cookie, and if the cookie is not present it may still try the illegal opcodes. if the cookie is present it may use either the supplied function pointers or the illegal opcodes. - 68k code that must be able to run on a unsupported processor must check for this cookie. In any case the illegal opcodes should NOT be used directly. If the cookie is not present, then no native features are available. If the cookie is present, then native features are available, throught the use of the provided function pointers in the cookie. Appendix F - a small example see file ../atari_example.c ??? Appendix G - modifications to this document 2001-12-08 - 'native feature proposal' posted to aranym mailing list. 2001-12-09 - erratum about an interrupt manager (not integrated in this document) 2001-12 - discussions on the aranym mailing list; moving from 16 to 32bit ints, question about string charsets, replaced 'host side' by '68k side'. 2002-03-02 - rewriting of the document, put some things in attic.txt, - rewrote the beginning of the document, added an overall diagram. - put the implementation interface in a separate nf.h 2002-08-11 (joy) - corrected the actual nf calls according to what is implemented in ARAnyM. - NatFeats are usermode callable now. - Value-only features removed. - Basic set of features replaced with list of current basic NF implemented in ARAnyM. 2002-10-22 - enumerated supported processors, natfeat usage on unsupported processor need an OS-specific way (i.e. __NF cookie) - removed direct call; opcodes better explained (ignored return address) - told about sub-id, distinguished between 'features' and 'functions' - reworded a little the basic set (TODO, check with actual aranym implementation (joy?)) 2002-10-28 - NF_STDERR added, NF_NAME corrected (returns the number of chars before truncating). 2002-10-29 - a note about valid m68k physical memory added 2003-06-03 - NF_SHUTDOWN added aranym-1.1.0/src/natfeat/doc/call68k.txt0000664000175000017500000001250513454637621016167 0ustar joyjoy call68k.txt - calling 68k code from native side. Proposal: the 68k code calls a native feature f1. f1 needs to call some 68k-side routine r1. As it is troublesome to return from r1 inside f1 (would require some heavy setjmp/longjmp magic, and would not work if a context change occurs in the 68k-side in between), a native function f2 is called when r1 is done. f2 can in turn call another routine r2, giving the control back to the native side by returning in function f3, ... or restore the 68k stack and return to continues the initial 68k code. To enable this, f1 must record enough information in memory to be used by f2 later, especially if routine r1, or a routine r11 called by r1 itself calls function f1. The detailed proposal is: f1 creates a context, that is, allocates memory to hold: (public visibility) - the native address of function f2, (private visibility) - the saved 68k SP and PC, - any needed context information, to be shared within the "session" between f1 and f2. the actual structure is: struct return_info { void (*func)(); /* the native address of function f2 */ ... /* private data shared between f1 and f2 */ }; f1 encapsulates this context in a token; the token is then pushed on the stack as a piece of 68k code calling a native feature nf_return with this token as parameter. the code is: 2f3c aaaa aaaa move.l #token_value, -(sp) 2f3c bbbb bbbb move.l #nf_return_id, -(sp) 7301 dc.w nf_call where nf_return_id is the ID of the following utility native function: /* retrieves the struct return_info held in the token, * and calls member func of this structure using a pointer * to this structure as parameter */ void nf_return(long token) { struct return_info *info = nf_from_token(token); nf_free_token(token); info->func(info); } f1 then pushes parameters to routine r1 on the stack, and finally pushes the addresss of the piece of code. At his point the stack contains: | ... |_ stack when calling f1 | ..>|_ 14 bytes, piece of code : | : |_ arguments to r1, if any :..| |_ address of the start of the piece of code. f1 then sets the pc to the 68k address of r1, and returns (goes back to the CPU core, which then starts to execute routine r1) The stack is setup so that a simple rts in r1 will eventually call native function f2. f2 then goes on doing the job of the native feature. Eventually it returns to the calling 68k code by setting back 68k SP and PC to their values saved by f1. details ------- from the implementation point of view in f1, the call can be done like this: struct f1_context { void (*func)(); nf_addr_t sp, pc; /* ... */ } extern nf_addr_t r2; void f1(nf_addr_t addr) { struct f1_context *context; ... context = malloc(sizeof(*context)); if(context == NULL) { nf_error("memory"); ... /* no need to call f2, fail directly */ } context->func = f2; context->pc = nf_get_pc(); context->sp = nf_get_sp(); ... /* fill in other context fields */ nf_call_68k_begin(context); ... /* push args to routine r2 */ nf_call_68k_end(r2); } void f2(struct f1_context *context) { ... /* do something with the value of d0 and the context */ /* restore sp and pc */ nf_set_pc(context->pc); nf_set_sp(context->sp); /* frees the the context */ free(context); /* optionnally, returns a value */ nf_set_d0l(...); } Note: in this scheme, the utility functions nf_call_68k_begin and nf_call_68k_end take care of implementing this calling mechanism (including the potential need for cache control due to modified code on the stack). variants -------- instead of calling an ordinary nf_return native function, a dedicated illegal opcode can be specified for this. the token creation and deallocation can be handled by utility functions provided in the native feature services. To simplify implementations, a never-failing memory allocation routine can be supplied by the NF emulator-specific glue. The utility functions can be made simpler to use if they take care of setting/restoring PC and SP themselves. the structure would then be struct return_info { void (*func)(void *); nf_addr_t sp, pc; void *context_ptr; } with context_ptr being handled by the functions f1, f2? ... entirely, and struct return_info being handled only by the utility functions. discussion ---------- This scheme supports various combinations with respect to the control flow and the way functions and routines call each other: - recursion is supported (because each context is allocated by f1 for unique use by f2) - it is possible to support multi-tasking in the 68k side: it does not matter if a context change occurs during execution of routine r1; whenever r1 resumes and eventually returns, the context implicitely pushed on the stack (via a token) contains enough information for f2 to finish the job. - 68k routines called by native code need not be programmed in any special way. they end with rts like any normal 68k code. points to consider: - this token allocation needs, for simplicity, a non-failing memory allocation. - this scheme generates code dynamically on the stack, and this might cause performance loss if the only way to allow this is to invalidate the whole instruction cache. aranym-1.1.0/src/natfeat/doc/attic.txt0000664000175000017500000000541713454637621016033 0ustar joyjoyFeature groups when a bunch of native features are closely tied together, such as the group of functions to manage an external filesystem, it makes no sense to create individual feature names for those. In this case, a 'feature group' should be created. the ID for this group should correspond to a function 'returning' the IDs of all individual functions of the group. Options to 'return' a list of IDs include - the group function fills a structure in memory whose address was passed to it. this structure contains the individual IDs of individual features - same, but the structure only contains a basic set of IDs, and some other functions are used to get extensions TODO: make it informational. put this in a discussion about the uses. Calling 68k code from native side. [section removed to the attic until it is better understood] there are two different ways by which 68k code is called by the native side. alarm callback (after an event has occurred) and direct call. Direct call It is possible to design for specific native features an interface by which 68k code will be executed as a routine by the native feature. This document makes no recommendation. A solution can be, that the native feature will remember its internal state (that is, in the state 'calling outside'), will create, on the stack, code to call another feature with, as parameter, enough information, then will push on the stack, as return address, the address of this little code on the stack, and finally jump to execute the 68k code. this way an rts from the 68k code will eventually return to the native world. An example of the need for direct calls could be, to allocate memory in 68k address space, to be used by native features. Direct calls are needed in this case, because only the 68k Operating System can manage the memory. Callback on events A native feature can signal that some event has occurred using an interrupt mechanism. The native feature must first have been initialised from the 68k side, and be provided a vector number. When the native feature wants to signal an event, a interrupt is asked on IPL 6 on this vector number. The interrupt may not happen if the native feature has not been inited from the 68k side; the interrupt is not taken if interrupts are disabled at the time; it is unspecified whether this interrupt has higher or lower priority over other interrupts of same level 6 (either from the MFP or from other native features); the interrupt will happen in any case (there is no way to clear it). In this case it is mandatory that the feature provide a way to disable itself. for native features to effectively use interrupts, an interrupt manager has to be developped, to insert between the native feature code and the emulator internals. the API for this interrupt manager might look like: aranym-1.1.0/src/natfeat/debugprintf.h0000664000175000017500000000077513454637621016105 0ustar joyjoy/** * BasicNatFeats (Basic set of Native Features) * * Petr Stehlik (c) 2002 * * GPL */ #include "nf_base.h" #include "stdio.h" class DebugPrintf : public NF_Base { public: const char *name() { return "DEBUGPRINTF"; } bool isSuperOnly() { return false; } int32 dispatch(uint32 fncode); private: uint32 debugprintf(FILE *, memptr, uint32); uint32 PUTC(FILE *f, int c, int width); uint32 PUTS(FILE *f, memptr s, int width); uint32 PUTL(FILE *f, uint32 u, int base, int width, int fill_char); }; aranym-1.1.0/src/natfeat/debugprintf.cpp0000664000175000017500000000774513454637621016444 0ustar joyjoy/* * Copyright 2002-2005 Petr Stehlik of the Aranym dev team * * printf routines Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "cpu_emulation.h" #include "debugprintf.h" #include "nf_basicset.h" #define DEBUG 0 #include "debug.h" int32 DebugPrintf::dispatch(uint32 fncode) { FILE *output = stderr; DUNUSED(fncode); memptr str_ptr = getParameter(0); D(bug("DebugPrintf(%d, $%08x)", fncode, str_ptr)); int ret = debugprintf(output, str_ptr, 1); fflush(output); return ret; } # define TIMESTEN(x) ((((x) << 2) + (x)) << 1) uint32 DebugPrintf::debugprintf(FILE *f, memptr fmt, uint32 param) { char c; char fill_char; uint32 len = 0; int width; int long_flag; int i_arg; long l_arg; while ((c = ReadNFInt8(fmt++)) != 0) { if (c != '%') { len += PUTC (f, c, 1); continue; } c = ReadNFInt8(fmt++); width = 0; long_flag = 0; fill_char = ' '; if (c == '0') { fill_char = '0'; c = ReadNFInt8(fmt++); } while (c >= '0' && c <= '9') { width = TIMESTEN (width) + (c - '0'); c = ReadNFInt8(fmt++); } if (c == 'l' || c == 'L') { long_flag = 1; c = ReadNFInt8(fmt++); } if (!c) break; switch (c) { case '%': { len += PUTC (f, c, width); break; } case 'c': { i_arg = (int)getParameter(param++); len += PUTC (f, i_arg, width); break; } case 's': { memptr buf = getParameter(param++); len += PUTS (f, buf, width); break; } case 'i': case 'd': { if (long_flag) l_arg = (long)getParameter(param++); else l_arg = (int)getParameter(param++); if (l_arg < 0) { len += PUTC (f, '-', 1); width--; l_arg = -l_arg; } len += PUTL (f, l_arg, 10, width, fill_char); break; } case 'o': { if (long_flag) l_arg = (long)getParameter(param++); else l_arg = (unsigned int)getParameter(param++); len += PUTL (f, l_arg, 8, width, fill_char); break; } case 'x': { if (long_flag) l_arg = (long)getParameter(param++); else l_arg = (unsigned int)getParameter(param++); len += PUTL (f, l_arg, 16, width, fill_char); break; } case 'b': { if (long_flag) l_arg = (long)getParameter(param++); else l_arg = (unsigned int)getParameter(param++); len += PUTL (f, l_arg, 2, width, fill_char); break; } case 'u': { if (long_flag) l_arg = (long)getParameter(param++); else l_arg = (unsigned int)getParameter(param++); len += PUTL (f, l_arg, 10, width, fill_char); break; } } } return len; } uint32 DebugPrintf::PUTC(FILE *f, int c, int width) { uint32 put; put = NF_StdErr::host_putc(f, c); while (--width > 0) { put += NF_StdErr::host_putc(f, ' '); } return put; } uint32 DebugPrintf::PUTS(FILE *f, memptr s, int width) { return NF_StdErr::host_puts(f, s, width); } uint32 DebugPrintf::PUTL(FILE *f, uint32 u, int base, int width, int fill_char) { char obuf[32]; char *t = obuf; uint32 put = 0; do { *t++ = "0123456789ABCDEF"[u % base]; u /= base; width--; } while (u > 0); while (width-- > 0) { put += NF_StdErr::host_putc(f, fill_char); } while (t != obuf) { put += NF_StdErr::host_putc(f, *--t); } return put; } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/natfeat/atari_rootsec.h0000664000175000017500000000235513454637621016426 0ustar joyjoy#ifndef ATARI_ROOTSEC_H #define ATARI_ROOTSEC_H /* * linux/include/linux/atari_rootsec.h * definitions for Atari Rootsector layout * by Andreas Schwab (schwab@ls5.informatik.uni-dortmund.de) * * modified for ICD/Supra partitioning scheme restricted to at most 12 * partitions * by Guenther Kelleter (guenther@pool.informatik.rwth-aachen.de) */ #define u8 unsigned char #define u16 uint16 #define u32 uint32 struct partition_info { u8 flg; /* bit 0: active; bit 7: bootable */ char id[3]; /* "GEM", "BGM", "XGM", or other */ u32 st; /* start of partition */ u32 siz; /* length of partition */ }; struct rootsector { char unused[0x156]; /* room for boot code */ struct partition_info icdpart[8]; /* info for ICD-partitions 5..12 */ char unused2[0xc]; u32 hd_siz; /* size of disk in blocks */ struct partition_info part[4]; u32 bsl_st; /* start of bad sector list */ u32 bsl_cnt; /* length of bad sector list */ u16 checksum; /* checksum for bootable disks */ } __attribute__ ((__packed__)); #endif /* ATARI_ROOTSEC_H */ aranym-1.1.0/src/natfeat/atari_example_gfa.lst0000664000175000017500000000301413454637621017564 0ustar joyjoy' Example of NatFeat usage - detecting ARAnyM presence ' Written by Petr Stehlik in 2003 and placed into Public Domain ' IF @is_aranym PRINT "This is ARAnyM" ENDIF END ' FUNCTION get_cookie(target%,VAR value%) ' try Ssystem, be FreeMiNT friendly IF GEMDOS(340,-1,L:0,L:0)=0 value%=GEMDOS(340,8,L:target%,L:0) RETURN value%<>-1 ELSE cookie_ptr%=LPEEK(&H5A0) IF cookie_ptr%<>0 REPEAT IF {cookie_ptr%}=target% value%={cookie_ptr%+4} RETURN TRUE ENDIF ADD cookie_ptr%,8 UNTIL {cookie_ptr%}=0 ENDIF ENDIF RETURN FALSE ENDFUNC ' FUNCTION init_natfeats IF NOT @get_cookie(&H5F5F4E46,nf_cookie%) PRINT "NF COOKIE NOT FOUND!" RETURN 0 ENDIF ' IF {nf_cookie%}<>&H20021021 PRINT "NF COOKIE WITH BAD MAGIC" RETURN 0 ENDIF ' RETURN nf_cookie% ENDFUNC ' PROCEDURE nf_get_name(nf_ptr%,VAR nf_name$) nf_id%={nf_ptr%+4} nf_call%={nf_ptr%+8} ' nfstr$=SPACE$(80) CHAR{V:nfstr$}="NF_NAME" nid%=C:nf_id%(L:V:nfstr$) ' size%=80 nf_name_ptr%=MALLOC(size%) IF nf_name_ptr%<>0 ~C:nf_call%(L:nid%,L:nf_name_ptr%,L:size%) nf_name$=CHAR{nf_name_ptr%} ~MFREE(nf_name_ptr%) ELSE nf_name$="" PRINT "Memory allocation error!" ENDIF ' PRINT "Debug info: NatFeat(NF_NAME)=";nf_name$ RETURN ' FUNCTION is_aranym nf_cookie%=@init_natfeats ' IF nf_cookie%=0 RETURN FALSE ENDIF ' nf_get_name(nf_cookie%,nf_name$) ' IF UPPER$(nf_name$)="ARANYM" RETURN TRUE ELSE RETURN FALSE ENDIF ENDFUNC aranym-1.1.0/src/natfeat/atari_example.c0000664000175000017500000000463213454637621016376 0ustar joyjoy/* * Example of NatFeat usage - detecting ARAnyM presence * Written by Petr Stehlik in 2003 and placed into Public Domain */ #include /* for printf */ #include /* for gemdos and Super */ #include /* for strcmp */ /* compiler and library compatibility defines */ #if __PUREC__ #define CDECL cdecl #define compare_strings strcmpi #else #define CDECL #define compare_strings strcasecmp #endif #ifndef TRUE #define TRUE (1==1) #define FALSE (!TRUE) #endif /* TOS Cookie Jar */ typedef struct { long cookie; long value; } COOKIE; int getcookie(long target, long *p_value) { if (gemdos(340, -1, 0L, 0L) == 0) { /* Ssystem is available */ long result = gemdos(340, 8, target, NULL); if (result != -1L) { *p_value = result; return TRUE; } return FALSE; } else { char *oldssp; COOKIE *cookie_ptr; oldssp = (char *) Super(0L); cookie_ptr = *(COOKIE **) 0x5A0; if (oldssp) Super(oldssp); if (cookie_ptr != NULL) { do { if (cookie_ptr->cookie == target) { if (p_value != NULL) *p_value = cookie_ptr->value; return TRUE; } } while ((cookie_ptr++)->cookie != 0L); } } return FALSE; } /* NatFeat code */ typedef struct { long magic; long CDECL(*nfGetID) (const char *); long CDECL(*nfCall) (long ID, ...); } NatFeatCookie; /* return NatFeat pointer if NatFeat initialization was successful, * otherwise NULL */ NatFeatCookie *initNatFeats(void) { NatFeatCookie *nf_ptr = NULL; if (getcookie(0x5f5f4e46L, &(long) nf_ptr) == 0) { /* "__NF" */ puts("NatFeat cookie not found"); return NULL; } if (nf_ptr->magic != 0x20021021L) { /* NatFeat magic constant */ puts("NatFeat cookie magic value does not match"); return NULL; } return nf_ptr; } /* get name (fill 'buffer' with the `NF_NAME` value, up to 'size' chars) */ long nfGetName(NatFeatCookie * nf_ptr, char *buffer, long size) { static unsigned long nf_name_id = 0; if (nf_name_id == 0) nf_name_id = nf_ptr->nfGetID("NF_NAME"); return nf_ptr->nfCall(nf_name_id, buffer, size); } /* return TRUE if ARAnyM was detected, FALSE otherwise */ int isARAnyM(void) { NatFeatCookie *nf_ptr = NULL; char buf[80] = ""; nf_ptr = initNatFeats(); if (nf_ptr == NULL) return FALSE; nfGetName(nf_ptr, buf, sizeof(buf)); return !compare_strings(buf, "ARAnyM"); } /* example of use */ int main() { if (isARAnyM()) { printf("This is ARAnyM\n"); return 1; } return 0; } aranym-1.1.0/src/mmu.cpp0000664000175000017500000000311313454637621013270 0ustar joyjoy/* * mmu.cpp - Atari Falcon MMU emulation code * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "mmu.h" #include "parameters.h" MMU::MMU(memptr addr, uint32 size) : BASE_IO(addr, size) {} void MMU::reset() { memctl = 0; } uint8 MMU::handleRead(memptr addr) { addr -= getHWoffset(); switch(addr) { case 1: return memctl; case 6: return bx_options.video.monitor == 1 ? 0xe6 : 0xa6; // a6 = 14MB, 96 = 4MB on VGA case 7: return 0x61; } return 0; } void MMU::handleWrite(memptr addr, uint8 value) { addr -= getHWoffset(); switch(addr) { case 1: memctl = value; break; case 6: break; case 7: break; } } aranym-1.1.0/src/midi_sequencer.cpp0000664000175000017500000000425313454637621015474 0ustar joyjoy/* Atari MIDI emulation, output to sequencer device ARAnyM (C) 2005-2009 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "midi.h" #include "midi_sequencer.h" #include "parameters.h" #define DEBUG 0 #include "debug.h" MidiSequencer::MidiSequencer(memptr addr, uint32 size) : MIDI(addr, size) { D(bug("midi_sequencer: interface created at 0x%06x", getHWoffset())); packet[0] = SEQ_MIDIPUTC; packet[1] = 0; /* data */ packet[2] = 0; /* device number */ packet[3] = 0; /* NULL */ fd = -1; if (bx_options.midi.enabled) enable(true); } void MidiSequencer::enable(bool bEnable) { bx_midi_options_t *m = &bx_options.midi; if (!bEnable) close(); if (strcmp(type(), m->type)==0 && strlen(m->sequencer) > 0) { if (bEnable && fd < 0) { fd = ::open(m->sequencer, O_WRONLY, 0664); if (fd < 0) { panicbug("midi_sequencer: Can not open %s", m->sequencer); } } } m->enabled = bEnable; } MidiSequencer::~MidiSequencer(void) { D(bug("midi_sequencer: interface destroyed at 0x%06x", getHWoffset())); close(); } void MidiSequencer::WriteData(uae_u8 value) { D(bug("midi_sequencer: WriteData(0x%02x)",value)); if (fd>=0) { packet[1] = value; if (write(fd, packet, sizeof(packet)) != sizeof(packet)) { panicbug("midi_sequencer: error writing"); } } } // don't remove this modeline with intended formatting for vim:ts=4:sw=4: aranym-1.1.0/src/midi_file.cpp0000664000175000017500000000353213454637621014420 0ustar joyjoy/* Atari MIDI emulation, output to file ARAnyM (C) 2005-2009 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "midi.h" #include "midi_file.h" #include "parameters.h" #define DEBUG 0 #include "debug.h" MidiFile::MidiFile(memptr addr, uint32 size) : MIDI(addr, size) { D(bug("midi_file: interface created at 0x%06x", getHWoffset())); fd = -1; if (bx_options.midi.enabled) enable(true); } void MidiFile::enable(bool bEnable) { bx_midi_options_t *m = &bx_options.midi; if (!bEnable) close(); if (strcmp(type(), m->type)==0 && strlen(m->file) > 0) { if (bEnable && fd < 0) { fd = ::open(m->file, O_WRONLY|O_CREAT, 0664); if (fd < 0) { panicbug("midi_file: Can not open %s", m->file); } } } m->enabled = bEnable; } MidiFile::~MidiFile(void) { D(bug("midi_file: interface destroyed at 0x%06x", getHWoffset())); close(); } void MidiFile::WriteData(uae_u8 value) { D(bug("midi_file: WriteData(0x%02x)",value)); if (fd>=0) { if (write(fd, &value, 1) != 1) { panicbug("midi_file: error writing"); } } } // don't remove this modeline with intended formatting for vim:ts=4:sw=4: aranym-1.1.0/src/midi.cpp0000664000175000017500000000271013454637621013416 0ustar joyjoy/* Atari MIDI emulation ARAnyM (C) 2005-2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "midi.h" #include "parameters.h" #define DEBUG 0 #include "debug.h" #include #include #include MIDI::MIDI(memptr addr, uint32 size) : ACIA(addr, size) { D(bug("midi: interface created at 0x%06x", getHWoffset())); reset(); } MIDI::~MIDI(void) { D(bug("midi: interface destroyed at 0x%06x", getHWoffset())); } void MIDI::reset(void) { D(bug("midi: reset")); ACIA::reset(); } void MIDI::close(void) { if (fd >= 0) { int i, j; for (j=0;j<128;j++) { for (i=0;i<16;i++) { WriteData(0x80 + i); WriteData(j); WriteData(0); } } ::close(fd); fd = -1; } } aranym-1.1.0/src/mfp.cpp0000664000175000017500000003721113454637621013262 0ustar joyjoy/* * mfp.cpp - MFP emulation * * Copyright (c) 2001-2005 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * Copied almost bit-by-bit from STonC's mfp.c (thanks, Laurent!) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "mfp.h" #define DEBUG 0 #include "debug.h" MFP_Timer::MFP_Timer(int value) { name = 'A' + value; reset(); } void MFP_Timer::reset() { control = start_data = current_data = 0; state = false; } bool MFP_Timer::isRunning() { return ((control & 0x0f) > 0); } void MFP_Timer::setControl(uint8 value) { control = value & 0x0f; if (value & 0x10) state = false; // D(bug("Set MFP Timer%c control to $%x", name, value)); } uint8 MFP_Timer::getControl() { return control | (state << 5); } void MFP_Timer::setData(uint8 value) { // D(bug("Set MFP Timer%c data to %d", name, value)); start_data = value; if (! isRunning()) current_data = value; } void MFP_Timer::resetCounter() { // D(bug("reset of Timer%c", name)); if (isRunning()) { state = true; current_data = start_data; } } uint8 MFP_Timer::getData() { // D(bug("get MFP Timer%c data = %d", name, current_data)); if (isRunning() && current_data > 2) current_data--; // hack to overcome microseconds delays in TOS (e.g. at $E02570) return current_data; } int MFP_Timer::compute_timer_freq() { #define MFP_FREQ 2457600UL int freq; switch(control) { case 1: freq = MFP_FREQ / 4; break; case 2: freq = MFP_FREQ / 10; break; case 3: freq = MFP_FREQ / 16; break; case 4: freq = MFP_FREQ / 50; break; case 5: freq = MFP_FREQ / 64; break; case 6: freq = MFP_FREQ /100; break; case 7: freq = MFP_FREQ /200; break; default: freq = MFP_FREQ / 64; break; // TOS default } if (start_data) freq = freq / start_data; else freq = freq / 192; // TOS default return freq; } /*************************************************************************/ MFP::MFP(memptr addr, uint32 size) : BASE_IO(addr, size) { reset(); } #define MFP_VR_VECTOR 0xF0 #define MFP_VR_SEI 0x08 /* Software end of interrupt, need software cancelling in inservice ? */ #define MFP_VR_AEI 0x00 /* Automatic end of interrupt, ??? */ void MFP::reset() { input = 0xff; GPIP_data = input; vr = 0x0100; active_edge = 0; data_direction = 0; irq_enable = 0; irq_pending = 0; irq_inservice = 0; irq_mask = 0; timerCounter = 0; A.reset(); B.reset(); C.reset(); D.reset(); } uint8 MFP::handleRead(memptr addr) { addr -= getHWoffset(); if (addr > getHWsize()) return 0; // unhandled uint8 value; switch(addr) { case 0x01: value = (GPIP_data & ~ 0x21) | getYAMAHA()->parallel->getBusy(); break; case 0x03: value = active_edge; break; case 0x05: value = data_direction; break; case 0x07: value = irq_enable >> 8; break; case 0x09: value = irq_enable; break; case 0x0b: value = 0x20; //(irq_pending >> 8) | (tA->getControl() & 0x10); // finish break; case 0x0d: // D(bug("Read: TimerC IRQ %s pending", (irq_pending & 0x20) ? "" : "NOT")); value = irq_pending; break; case 0xf: value = irq_inservice >> 8; break; case 0x11: // D(bug("Read: TimerC IRQ %s in-service", (irq_inservice & 0x20) ? "" : "NOT")); value = irq_inservice; break; case 0x13: value = irq_mask >> 8; break; case 0x15: // D(bug("Read: TimerC IRQ %s masked", (irq_mask & 0x20) ? "" : "NOT")); value = irq_mask; break; case 0x17: value = vr; break; case 0x19: value = A.getControl(); break; case 0x1b: value = B.getControl(); break; case 0x1d: value = (C.getControl() << 4) | D.getControl(); break; case 0x1f: value = A.getData(); break; case 0x21: value = B.getData(); break; case 0x23: value = C.getData(); break; case 0x25: value = D.getData(); break; case 0x2d: value = 0x80; // for Linux/m68k break; default: value = 0; }; D(bug("Reading MFP data from %04lx = %d ($%02x) at %06x", addr, value, value, showPC())); return value; } void MFP::set_active_edge(uint8 value) { static int map_gpip_to_ier[8] = {0, 1, 2, 3, 6, 7, 14, 15}; /* AER : 1=Rising (0->1), 0=Falling (1->0) */ /* [mfp.txt] * The edge bit is simply one input to an exclusive-or * gate, with the other input coming from the input buffer and the output going * to a 1-0 transition detector. Thus, depending upon the state of the input, * writing the AER can cause an interrupt-producing transition */ /* this means : a = input xor aer, and interrupt when a 1->0. * ____before____ ______after_____ ___result___ * input aer a input val a interrupt * 0 0 0 0 1 1 * 1 0 1 1 1 0 yes * 0 1 1 0 0 0 yes * 1 1 0 1 0 1 */ int i, j; for(j = 0, i = 1; j < 8; j++, i <<= 1) { if( ((active_edge & i) != (value & i)) /* if AER changes */ && (! (data_direction & i)) /* for input lines */ && ((active_edge & i) != (input & i))) { IRQ(map_gpip_to_ier[j], 1); } } active_edge = value; } void MFP::handleWrite(memptr addr, uint8 value) { addr -= getHWoffset(); if (addr > getHWsize()) return; // unhandled D(bug("Writing MFP data to %04lx = %d ($%02x) at %06x", addr, value, value, showPC())); switch(addr) { case 0x01: //GPIP_data = value; GPIP_data &= ~data_direction; GPIP_data |= value & data_direction; D(bug("New GPIP=$%x from PC=$%x", GPIP_data, showPC())); break; case 0x03: set_active_edge(value); break; case 0x05: data_direction = value; GPIP_data &= data_direction; GPIP_data |= input & (~data_direction); D(bug("GPIP Data Direction set to %02x", value)); break; case 0x07: irq_enable = (irq_enable & 0x00ff) | (value << 8); // cancel any pending interrupts, but do not alter ISR irq_pending &= irq_enable; // mfp_check_timers_ier(); break; case 0x09: #ifdef DEBUG_IER if ((irq_enable ^ value) & 0x20) { D(bug("Write: TimerC IRQ %sabled", (value & 20) ? "en" : "dis")); } if ((irq_enable ^ value) & 0x40) { D(bug("Write: IKBD IRQ %sabled", (value & 40) ? "en" : "dis")); } #endif /* DEBUG */ irq_enable = (irq_enable & 0xff00) | value; // cancel any pending interrupts, but do not alter ISR irq_pending &= irq_enable; // mfp_check_timers_ier(); break; /* [mfp.txt] * IPRA and IPRB are also writeable and a pending interrupt can be cleared * without going through the acknowledge sequence by writing a zero to the * appropriate bit. This allows any one bit to be cleared, without altering any * other bits, simply by writing all ones except for the bit position to be * cleared on IPRA or IPRB. */ case 0x0b: irq_pending &= (value << 8) | 0xff; /* if no unmasked interrupt pending any more, there's no point in * keeping F_MFP active */ if ((irq_pending & irq_mask) == 0) { TriggerMFP(false); } break; case 0x0d: #ifdef DEBUG_IPR if ((irq_pending ^ value) & 0x20) { D(bug("Write: TimerC IRQ %s pending", (value & 20) ? "" : "NOT")); } #endif /* DEBUG */ irq_pending &= 0xff00 | value; if ((irq_pending & irq_mask) == 0) { TriggerMFP(false); } break; /* [mfp.txt] * Only a zero may be written into any bit of ISRA and ISRB; thus the * in-service may be cleared in software but cannot be set in software. */ case 0xf: irq_inservice &= (value << 8) | 0xff; if (irq_pending & irq_mask) { // unmasked interrupt pending, signal it to cpu TriggerMFP(true); } break; case 0x11: #ifdef DEBUG_ISR if ((irq_inservice ^ value) & 0x20) { D(bug("Write: TimerC IRQ %s in-service at %08x", (value & 20) ? "" : "NOT", showPC())); } #endif /* DEBUG */ irq_inservice &= 0xff00 | value; if (irq_pending & irq_mask) { // unmasked interrupt pending, signal it to cpu TriggerMFP(true); } break; case 0x13: irq_mask = (irq_mask & 0x00ff) | (value << 8); TriggerMFP(irq_pending & irq_mask); break; case 0x15: #ifdef DEBUG_IMR if ((irq_mask ^ value) & 0x20) { D(bug("Write: TimerC IRQ %s masked", (value & 20) ? "" : "NOT")); } #endif /* DEBUG */ irq_mask = (irq_mask & 0xff00) | value; TriggerMFP(irq_pending & irq_mask); break; case 0x17: vr = value; if (vr & MFP_VR_SEI) { // software end-of-interrupt mode } else { // automatic end-of-interrupt mode : reset inservice bits? irq_inservice = 0; // try to pass a vector TriggerMFP(irq_pending & irq_mask); } break; case 0x19: A.setControl(value); break; case 0x1b: B.setControl(value); break; case 0x1d: C.setControl(value >> 4); D.setControl(value & 0x0f); break; case 0x1f: A.setData(value); break; case 0x21: B.setData(value); break; case 0x23: C.setData(value); break; case 0x25: D.setData(value); break; case 0x27: case 0x29: case 0x2b: case 0x2d: case 0x2f: default: break; }; } /* * setGPIPbit sets input port bits (peripheral interrupt request) */ void MFP::setGPIPbit(int mask, int value) { static int map_gpip_to_ier[8] = {0, 1, 2, 3, 6, 7, 14, 15}; mask &= 0xff; int oldGPIP = GPIP_data; input &= ~mask; input |= (value & mask); /* if output port, no interrupt */ mask &= ~data_direction; GPIP_data &= ~mask; GPIP_data |= (value & mask); GPIP_data &= 0xFF; D(bug("setGPIPbit($%x, $%x): old=$%x, new=$%x", mask, value, oldGPIP, GPIP_data)); int i, j; for(j = 0, i = 1; j < 8; j++, i <<= 1) { if ((oldGPIP & i) != (GPIP_data & i)) { D(bug("setGPIPbit: i=$%x, irq_enable=$%x, old=$%x, new=$%x", i, irq_enable, oldGPIP, GPIP_data)); if (active_edge & i) { /* interrupt when going from 0 to 1 */ if (oldGPIP & i) continue; } else { /* interrupt when going from 1 to 0 */ if (GPIP_data & i) continue; } D(bug("calling IRQ(%d)->%d", j, map_gpip_to_ier[j])); IRQ(map_gpip_to_ier[j], 1); } } } /* Ask for an interrupt. Depending on diverse factors, an interrupt will eventually occur the next time MFP:doInterrupt() is called. 0: IO port 0 : Printer Busy 1: IO port 1 : Printer Acknowledge (RS232 Carrier detect on ST) 2: IO port 2 : MIDI Interrupt (RS232 CTS on ST) 3: IO port 3 : DSP Interrupt (Blitter on ST) 4: timer D 5: timer C 6: IO port 4 : ACIA (IKBD/MIDI) 7: IO port 5 : FDC/SCSI/IDE 8: Timer B : Display Enable 9: Send error 10: Send buffer empty 11: Receive error 12: Receive buffer full 13: Timer A : DMA Sound Interrupt 14: IO port 6 : RS232 ring 15: IO port 7 : DMA Sound Interrupt (monochrome detect on ST) */ void MFP::IRQ(int int_level, int count) { int i = 1 << int_level; if (int_level == 5) C.resetCounter(); // special hack for TimerC /* interrupt enabled ? */ if( (irq_enable & i) == 0) { // panicbug("interrupt %d not enabled", int_level); return; } if (int_level == 5) timerCounter += count; // special hack for TimerC /* same interrupt already pending */ if( (irq_pending & i) ) { D(bug("same interrupt %d already pending", int_level)); return; } /* ok, we will request an interrupt to the mfp */ #if 0 if(int_level) { panicbug( "mfp ask interrupt %d\n", int_level); } #endif irq_pending |= i; /* interrupt masked ? */ if( ! (irq_mask & i) ) { /* irq_pending set but no irq : stop here */ D(bug("irq_pending set but no irq")); return; } /* highest priority ? */ if(irq_inservice > i) { /* no, do nothing (the mfp will check when the current interrupt resumes, i.e. when irq_inservice is being cleared). */ D(bug("irq_inservice has higher priority")); return; } /* say we want to interrupt the cpu */ TriggerMFP(true); /* when UAE CPU finds this flag set, according to the current IPL, the function MFP::doInterrupt() will be called. This function will then decide what to do, and will treat the request that has the highest priority at that time. */ } // return : vector number, or zero if no interrupt int MFP::doInterrupt() { int j, vector; unsigned i; /* what's happening here ? */ #if 0 panicbug( "starting mfp_do_interrupt\n"); panicbug( "ier %04x, ipr %04x, isr %04x, imr %04x\n", irq_enable, irq_pending, irq_inservice, irq_mask); #endif /* any pending interrupts? */ for(j = 15, i = 0x8000; i; j--, i>>=1) { if(irq_pending & i & irq_mask) break; } if(i == 0) { /* this shouldn't happen :-) */ panicbug( "mfp_do_interrupt called with no pending interrupt\n"); TriggerMFP(false); return 0; } if(irq_inservice >= i) { /* Still busy. We shouldn't come here. */ /* Running MagiC this happens all the time. The panicbug log makes the whole console output unusable. Thus it is commented out. panicbug( "mfp_do_interrupt called when " "another higher priority interrupt is running\n"); */ TriggerMFP(false); return 0; } /* ok, do the interrupt, i.e. "pass the vector". */ vector = (vr & MFP_VR_VECTOR) + j; if (j != 5 || --timerCounter <= 0) { // special hack for TimerC irq_pending &= ~i; TriggerMFP(false); } if(vr & MFP_VR_SEI) { /* software mode of interrupt : irq_inservice will remain set until explicitely cleared by writing on it */ irq_inservice |= i; } else { /* automatic mode of interrupt : irq_inservice automatically cleared when the interrupt starts (which is now). In this case, we must keep the flag raised if another unmasked interrupt remains pending, since irq_inservice will not tell us to re-raise the flag. */ if((irq_pending & irq_mask)) { /* if other unmasked interrupt pending, keep the flag */ TriggerMFP(true); } } #if 0 panicbug( "MFP::doInterrupt : vector %d\n", vector); #endif return vector; } int MFP::timerC_ms_ticks() { int freq = C.compute_timer_freq(); return 1000 / freq; } aranym-1.1.0/src/md5.cpp0000664000175000017500000002122613454637621013164 0ustar joyjoy/* * This code implements the MD5 message-digest algorithm. * The algorithm is due to Ron Rivest. This code was * written by Colin Plumb in 1993, no copyright is claimed. * This code is in the public domain; do with it what you wish. * * Equivalent code is available from RSA Data Security, Inc. * This code has been tested against that, and is equivalent, * except that you don't need to include two pages of legalese * with every copy. * * To compute the message digest of a chunk of bytes, declare an * MD5Context structure, pass it to MD5Init, call MD5Update as * needed on buffers full of bytes, and then call MD5Final, which * will fill a supplied 16-byte array with the digest. * * Changed so as no longer to depend on Colin Plumb's `usual.h' header * definitions; now uses stuff from dpkg's config.h. * - Ian Jackson . * Still in the public domain. * * Converted to C++ and added all public functions (*buf and FILE*) * - Petr Stehlik . * Still in the public domain. */ #include "sysdeps.h" #include "aramd5.h" #include "SDL_compat.h" # include using namespace std; #if SDL_BYTEORDER == SDL_BIG_ENDIAN void byteSwap(UWORD32 *buf, unsigned words) { md5byte *p = (md5byte *)buf; do { *buf++ = (UWORD32)((unsigned)p[3] << 8 | p[2]) << 16 | ((unsigned)p[1] << 8 | p[0]); p += 4; } while (--words); } #else #define byteSwap(buf,words) #endif /* SDL_BYTEORDER == SDL_BIG_ENDIAN */ /* * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious * initialization constants. */ void MD5::MD5Init() { MD5Context *ctx = this->context; ctx->buf[0] = 0x67452301; ctx->buf[1] = 0xefcdab89; ctx->buf[2] = 0x98badcfe; ctx->buf[3] = 0x10325476; ctx->bytes[0] = 0; ctx->bytes[1] = 0; } /* * Update context to reflect the concatenation of another buffer full * of bytes. */ void MD5::MD5Update(md5byte const *buf, unsigned len) { UWORD32 t; MD5Context *ctx = this->context; /* Update byte count */ t = ctx->bytes[0]; if ((ctx->bytes[0] = t + len) < t) ctx->bytes[1]++; /* Carry from low to high */ t = 64 - (t & 0x3f); /* Space available in ctx->in (at least 1) */ if (t > len) { memcpy((md5byte *)ctx->in + 64 - t, buf, len); return; } /* First chunk is an odd size */ memcpy((md5byte *)ctx->in + 64 - t, buf, t); byteSwap(ctx->in, 16); MD5Transform(ctx->buf, ctx->in); buf += t; len -= t; /* Process data in 64-byte chunks */ while (len >= 64) { memcpy(ctx->in, buf, 64); byteSwap(ctx->in, 16); MD5Transform(ctx->buf, ctx->in); buf += 64; len -= 64; } /* Handle any remaining bytes of data. */ memcpy(ctx->in, buf, len); } /* * Final wrapup - pad to 64-byte boundary with the bit pattern * 1 0* (64-bit count of bits processed, MSB-first) */ void MD5::MD5Final(md5byte digest[16]) { MD5Context *ctx = this->context; int count = ctx->bytes[0] & 0x3f; /* Number of bytes in ctx->in */ md5byte *p = (md5byte *)ctx->in + count; /* Set the first char of padding to 0x80. There is always room. */ *p++ = 0x80; /* Bytes of padding needed to make 56 bytes (-8..55) */ count = 56 - 1 - count; if (count < 0) { /* Padding forces an extra block */ memset(p, 0, count + 8); byteSwap(ctx->in, 16); MD5Transform(ctx->buf, ctx->in); p = (md5byte *)ctx->in; count = 56; } memset(p, 0, count); byteSwap(ctx->in, 14); /* Append length in bits and transform */ ctx->in[14] = ctx->bytes[0] << 3; ctx->in[15] = ctx->bytes[1] << 3 | ctx->bytes[0] >> 29; MD5Transform(ctx->buf, ctx->in); byteSwap(ctx->buf, 4); memcpy(digest, ctx->buf, 16); memset(ctx, 0, sizeof(MD5Context)); /* In case it's sensitive */ } #ifndef ASM_MD5 /* The four core functions - F1 is optimized somewhat */ /* #define F1(x, y, z) (x & y | ~x & z) */ #define F1(x, y, z) (z ^ (x & (y ^ z))) #define F2(x, y, z) F1(z, x, y) #define F3(x, y, z) (x ^ y ^ z) #define F4(x, y, z) (y ^ (x | ~z)) /* This is the central step in the MD5 algorithm. */ #define MD5STEP(f,w,x,y,z,in,s) \ (w += f(x,y,z) + in, w = (w<>(32-s)) + x) /* * The core of the MD5 algorithm, this alters an existing MD5 hash to * reflect the addition of 16 longwords of new data. MD5Update blocks * the data and converts bytes into longwords for this routine. */ void MD5::MD5Transform(UWORD32 buf[4], UWORD32 const in[16]) { register UWORD32 a, b, c, d; a = buf[0]; b = buf[1]; c = buf[2]; d = buf[3]; MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); buf[0] += a; buf[1] += b; buf[2] += c; buf[3] += d; } void MD5::computeSum(md5byte const *buf, unsigned long size, unsigned char digest[16]) { MD5Init(); MD5Update(buf, size); MD5Final(digest); } bool MD5::compareSum(md5byte const *buf, unsigned long size, const unsigned char digest[16]) { unsigned char buf_digest[16]; computeSum(buf, size, buf_digest); if (memcmp(digest, buf_digest, 16) != 0) return false; return true; } bool MD5::computeSum(FILE *f, unsigned char digest[16]) { unsigned char buf[1024]; int n; MD5Init(); rewind(f); while ((n = fread(buf, 1, sizeof(buf), f)) > 0) MD5Update(buf, n); MD5Final(digest); if (ferror(f)) return false; rewind(f); return true; } bool MD5::compareSum(FILE *f, const unsigned char digest[16]) { unsigned char file_digest[16]; if (! computeSum(f, file_digest)) return false; if (memcmp(digest, file_digest, 16) != 0) return false; return true; } void MD5::printSum(const unsigned char *p) { int i; for (i = 0; i < 16; ++i) printf("%02x", *p++); } bool MD5::printSum(FILE *f) { unsigned char file_digest[16]; if (! computeSum(f, file_digest)) return false; printSum(file_digest); return true; } #endif aranym-1.1.0/src/main.cpp0000664000175000017500000002703213454637621013424 0ustar joyjoy/* * main.cpp - startup/shutdown code * * Copyright (c) 2001-2008 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "main.h" #include "input.h" #include "hardware.h" #include "parameters.h" #include "host.h" // for the HostScreen #include "parameters.h" #include "natfeat/nf_objs.h" #include "bootos_tos.h" #include "bootos_emutos.h" #include "bootos_linux.h" #include "aranym_exception.h" #include "disasm-glue.h" #define DEBUG 0 #include "debug.h" #ifdef HAVE_NEW_HEADERS # include #else # include #endif #ifdef RTC_TIMER #include #include #endif #include "SDL_compat.h" #ifdef SDL_GUI # include "sdlgui.h" #endif //For starting debugger #ifdef OS_irix void setactvdebug() #else void setactvdebug(int) #endif { #ifdef DEBUGGER activate_debugger(); #endif } // CPU and FPU type, addressing mode int CPUType; bool CPUIs68060; int FPUType; // Timer stuff static uint32 lastTicks = 0; #ifdef RTC_TIMER static SDL_Thread *RTCthread = NULL; static volatile bool using_rtc_timer = false; static volatile bool quit_rtc_loop = false; #endif SDL_TimerID my_timer_id = (SDL_TimerID)0; #if DEBUG static int early_interrupts = 0; static int multiple_interrupts = 0; static int multiple_interrupts2 = 0; static int multiple_interrupts3 = 0; static int multiple_interrupts4 = 0; static int max_mult_interrupts = 0; static int total_interrupts = 0; #endif #ifdef SDL_GUI bool isGuiAvailable; bool startupGUI = false; char *startupAlert = NULL; #endif uint32 InterruptFlags = 0; SDL_mutex *InterruptFlagLock; void SetInterruptFlag(uint32 flag) { if (SDL_LockMutex(InterruptFlagLock) == -1) { panicbug("Internal error! LockMutex returns -1."); abort(); } InterruptFlags |= flag; if (SDL_UnlockMutex(InterruptFlagLock) == -1) { panicbug("Internal error! UnlockMutex returns -1."); abort(); } } void ClearInterruptFlag(uint32 flag) { if (SDL_LockMutex(InterruptFlagLock) == -1) { panicbug("Internal error! LockMutex returns -1."); abort(); } InterruptFlags &= ~flag; if (SDL_UnlockMutex(InterruptFlagLock) == -1) { panicbug("Internal error! UnlockMutex returns -1."); abort(); } } /* VBL is fixed at 50 Hz in ARAnyM */ void do_vbl_irq() { TriggerVBL(); // generate VBL check_event(); // process keyboard and mouse events host->video->refresh(); } /* * the following function is called from the CPU emulation anytime */ void invoke200HzInterrupt() { int ms_ticks = getMFP()->timerC_ms_ticks(); /* syncing to 200 Hz */ uint32 newTicks = (uint32) host->clock->getClock(); // correct lastTicks at start-up if (lastTicks == 0) { lastTicks = newTicks - ms_ticks; } int count = (newTicks - lastTicks) / ms_ticks; if (count == 0) { #if DEBUG early_interrupts++; #endif return; } #if DEBUG total_interrupts++; if (count > 1) { multiple_interrupts++; if (count == 2) multiple_interrupts2++; if (count == 3) multiple_interrupts3++; if (count == 4) multiple_interrupts4++; if (count > max_mult_interrupts) { max_mult_interrupts = count; D(bug("Max multiple interrupts increased to %d", count)); } } #endif #ifdef RTC_TIMER if (using_rtc_timer) { // do not generate multiple interrupts, let it synchronize over time count = 1; } #endif int milliseconds = (count * ms_ticks); lastTicks += milliseconds; #ifdef DEBUGGER if (!debugging || irqindebug) #endif { getMFP()->IRQ(5, count); getSCC()->IRQ(); /* jc: after or before getMFP does not change anything */ } #define VBL_MS 20 static int VBL_counter = 0; VBL_counter += milliseconds; if (VBL_counter >= VBL_MS) { VBL_counter -= VBL_MS; do_vbl_irq(); } } #ifdef RTC_TIMER static int rtc_timer_thread(void * /*ptr*/) { int fd = open ("/dev/rtc", O_RDONLY); if (fd == -1) { bug("ARAnyM RTC Timer: /dev/rtc: %s", strerror(errno)); return 1; } int retval = ioctl(fd, RTC_IRQP_SET, 256); // 256 Hz if (retval == -1) { bug("ARAnyM RTC Timer: ioctl(256 Hz): %s", strerror(errno)); close(fd); return 2; } /* Enable periodic interrupts */ retval = ioctl(fd, RTC_PIE_ON, 0); if (retval == -1) { bug("ARAnyM RTC Timer; ioctl(PIE_ON): %s", strerror(errno)); close(fd); return 3; } using_rtc_timer = true; while(! quit_rtc_loop) { unsigned long data; /* This blocks */ retval = read(fd, &data, sizeof(data)); if (retval == -1) { bug("ARAnyM RTC Timer: read: %s", strerror(errno)); close(fd); return 4; } TriggerInternalIRQ(); } /* Disable periodic interrupts */ retval = ioctl(fd, RTC_PIE_OFF, 0); if (retval == -1) { bug("ARAnyM RTC Timer: ioctl(PIE_OFF): %s", strerror(errno)); } close(fd); return 0; } static void KillRTCTimer(void) { if (RTCthread != NULL) { quit_rtc_loop = true; SDL_Delay(50); // give it a time to safely finish the timer thread #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_WaitThread(RTCthread, NULL); #else SDL_KillThread(RTCthread); #endif RTCthread = NULL; } } #else # define KillRTCTimer() #endif /* * my_callback_function() is called every 10 miliseconds (~ 100 Hz) */ Uint32 my_callback_function(Uint32 /*interval*/, void * /*param*/) { TriggerInternalIRQ(); return 10; // come back in 10 milliseconds } /* * Initialize the Operating System - Linux, TOS 4.04 or EmuTOS */ bool InitOS(void) { /* * First try to boot a linux kernel if enabled, * then try TOS 4.04 if EmuTOS is disabled, * then finally try EmuTOS. * Note that EmuTOS should always be available so this will be * a nice fallback. */ /* Try Linux/m68k */ if (boot_lilo) { try { bootOs = new LinuxBootOs(); return true; } catch (AranymException &e) { /* Could not init Linux/m68k */ panicbug("%s", e.getErrorMessage()); } } /* Try TOS */ if (!boot_emutos) { try { bootOs = new TosBootOs(); return true; } catch (AranymException &e) { /* Could not init TOS */ panicbug("%s", e.getErrorMessage()); } } /* Try EmuTOS */ try { bootOs = new EmutosBootOs(); return true; } catch (AranymException &e) { /* Could not init EmuTOS */ panicbug("%s", e.getErrorMessage()); } guialert("No operating system found. ARAnyM can not boot!\n" "Visit http://emutos.sourceforge.net/ and get your copy of EmuTOS now."); return false; } /* * Initialize everything, returns false on error */ bool InitAll(void) { bool needToReboot = false; #ifndef NOT_MALLOC if (ROMBaseHost == NULL) { if ((RAMBaseHost = (uint8 *)malloc(RAMSize + ROMSize + HWSize + FastRAMSize)) == NULL) { panicbug("Not enough free memory."); return false; } ROMBaseHost = (uint8 *)(RAMBaseHost + ROMBase); HWBaseHost = (uint8 *)(RAMBaseHost + HWBase); FastRAMBaseHost = (uint8 *)(RAMBaseHost + FastRAMBase); } #endif if (!InitMEM()) return false; #if !SDL_VERSION_ATLEAST(2, 0, 0) // work around a bug fix in Debian's libsdl1.2-dev - BTS #317010 SDL_putenv((char*)"SDL_DISABLE_LOCK_KEYS=1"); #endif #ifdef __CYGWIN__ // the cygwin implementation will sometimes // use Win32 style pathnames. Avoid the warning. if (getenv("CYGWIN") == NULL) putenv((char *)"CYGWIN=nodosfilewarning"); #endif int sdlInitParams = SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK | SDL_INIT_NOPARACHUTE; #if defined(NFCDROM_SUPPORT) && !SDL_VERSION_ATLEAST(2, 0, 0) sdlInitParams |= SDL_INIT_CDROM; #endif sdlInitParams |= SDL_INIT_TIMER; if (SDL_Init(sdlInitParams) != 0) { panicbug("SDL initialization failed: %s", SDL_GetError()); return false; } atexit(SDL_Quit); host = new Host(); // For InterruptFlag controling InterruptFlagLock = SDL_CreateMutex(); CPUType = 4; FPUType = 1; #ifdef HAVE_DISASM_M68K D(bug("Initializing disassembler...")); m68k_disasm_init(&disasm_info, CPU_68040); #endif // Init HW HWInit(); // Init NF NFCreate(); InputInit(); // Init 680x0 emulation if (!Init680x0()) return false; #ifdef DEBUGGER if (bx_options.startup.debugger && !startupGUI) { D(bug("Activate debugger...")); activate_debugger(); } #endif // timer init #ifdef RTC_TIMER RTCthread = SDL_CreateNamedThread(rtc_timer_thread, "RTC", NULL); if (RTCthread != NULL) { SDL_Delay(50); // give the timer thread time to initialize } if (using_rtc_timer) { infoprint("Using RTC Timer"); } else #endif { KillRTCTimer(); my_timer_id = SDL_AddTimer(10, my_callback_function, NULL); if (my_timer_id == 0) { panicbug("SDL Timer does not work!"); return false; } } if (! InitOS()) { startupGUI = true; needToReboot = true; } #ifdef SDL_GUI isGuiAvailable = SDLGui_Init(); if (isGuiAvailable && startupGUI) { do { open_GUI(); do { if (SDL_QuitRequested()) return false; check_event(); // process mouse & keyboard events host->video->refresh(); SDL_Delay(20); } while(!SDLGui_isClosed()); if (needToReboot) { needToReboot = false; if (!quit_program && !InitOS()) { needToReboot = true; } } } while(needToReboot); } startupGUI = false; #endif /* SDL_GUI */ if (bootOs == NULL || RAMBaseHost == NULL) return false; host->video->bootDone(); return true; } /* * Deinitialize everything */ void ExitAll(void) { delete bootOs; /* Pause audio before killing hw then host */ if (SDL_WasInit(SDL_INIT_AUDIO)) SDL_PauseAudio(SDL_TRUE); InputExit(); // Exit Time Manager KillRTCTimer(); if (my_timer_id) { SDL_RemoveTimer(my_timer_id); my_timer_id = (SDL_TimerID)0; SDL_Delay(100); // give it a time to safely finish the timer thread } D(bug("200 Hz IRQ statistics: max multiple irqs %d, total multiple irq ratio %02.2lf%%, 2xirq ration %02.2lf%%, 3xirq ratio %02.2lf%%, 4xirq ration %02.2lf%%, early irq ratio %02.2lf%%", max_mult_interrupts, multiple_interrupts*100.0 / total_interrupts, multiple_interrupts2*100.0 / total_interrupts, multiple_interrupts3*100.0 / total_interrupts, multiple_interrupts4*100.0 / total_interrupts, early_interrupts * 100.0 / total_interrupts)); #ifdef SDL_GUI close_GUI(); SDLGui_UnInit(); #endif #ifdef HAVE_DISASM_M68K m68k_disasm_exit(&disasm_info); #endif // Natfeats NFDestroy(); // hardware HWExit(); delete host; host = NULL; SDL_Quit(); } void RestartAll(bool cold) { lastTicks = 0; // memory init should be added here? /* * Emulated Atari hardware and virtual hardware provided by NativeFeatures * is initialized by the RESET instruction in the AtariReset() handler * in the aranym_glue.cpp so it doesn't have to be initialized here. * The RESET instruction is at beginning on every operating system (TOS * and EmuTOS for sure, and it is added in our integrated LILO as well) */ // Host reset host->reset(); // OS init try { bootOs->reset(cold); } catch (AranymException &e) { panicbug("%s", e.getErrorMessage()); } // CPU init Restart680x0(); host->video->bootDone(); } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/logo.cpp0000664000175000017500000000625713454637621013446 0ustar joyjoy/* Logo (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "SDL_compat.h" #include "dirty_rects.h" #include "host_surface.h" #include "logo.h" #include "hostscreen.h" #include "host.h" #define DEBUG 0 #include "debug.h" /*--- Constructor/destructor ---*/ Logo::Logo(const char *filename) : logo_surf(NULL), surface(NULL), opacity(100) { load(filename); } Logo::~Logo() { if (logo_surf) { SDL_FreeSurface(logo_surf); } if (surface) { host->video->destroySurface(surface); } } /*--- Public functions ---*/ void Logo::load(const char *filename) { if (surface) { delete surface; surface = NULL; } logo_surf = mySDL_LoadBMP_RW(SDL_RWFromFile(filename, "rb"), 1); if (!logo_surf) { panicbug("Can not load logo from file %s", filename); return; } /* FIXME: set key for other bpp ? */ if (logo_surf->format->BitsPerPixel == 8) { /* Set transparency from first pixel */ SDL_SetColorKey(logo_surf, SDL_SRCCOLORKEY|SDL_RLEACCEL, ((Uint8 *)logo_surf->pixels)[0]); } surface = host->video->createSurface(logo_surf->w, logo_surf->h, logo_surf->format); if (surface != NULL) { surface->setParam(HostSurface::SURF_USE_ALPHA, 1); } } HostSurface *Logo::getSurface(void) { if (!surface) { return NULL; } SDL_Surface *sdl_surf = surface->getSdlSurface(); if (!sdl_surf) { return NULL; } Uint8 *dirtyRects = surface->getDirtyRects(); /* Refresh surface from loaded file if needed */ int dirty_w = surface->getDirtyWidth(); int dirty_h = surface->getDirtyHeight(); for (int y=0; ygetSdlSurface(), &dst, sdl_surf->format->Amask); SDL_BlitSurface(logo_surf, &src, surface->getSdlSurface(), &dst); } } } return surface; } void Logo::alphaBlend(bool init) { if (init) { opacity = 100; } else { if (bx_options.opengl.enabled && opacity > 0) { if (surface != NULL) { surface->setParam(HostSurface::SURF_ALPHA, opacity); surface->setDirtyRect(0, 0, surface->getWidth(), surface->getHeight()); host->video->drawSurfaceToScreen(surface); } opacity -= 5 * bx_options.video.refresh; if (opacity <= 0 && getVIDEL() != NULL && getVIDEL()->getSurface() != NULL && surface != NULL) { getVIDEL()->getSurface()->setDirtyRect(0, 0, surface->getWidth(), surface->getHeight()); } } } } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/joypads.cpp0000664000175000017500000001313613454637621014151 0ustar joyjoy/* Joypads port emulation ARAnyM (C) 2008 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "joypads.h" #define DEBUG 0 #include "debug.h" #define JOYSTICK_THRESHOLD 16384 enum { JP_PAUSE, JP_FIRE0, JP_UNDEF0, JP_FIRE1, JP_UNDEF1, JP_FIRE2, JP_UNDEF2, JP_OPTION, JP_UP, JP_DOWN, JP_LEFT, JP_RIGHT, JP_KPMULT, JP_KP7, JP_KP4, JP_KP1, JP_KP0, JP_KP8, JP_KP5, JP_KP2, JP_KPNUM, JP_KP9, JP_KP6, JP_KP3, }; /* multiplexer mask, num joypad, shift, mask */ const int JOYPADS::multiplexer0[8][4]={ {0xfffe, 0, 0, 3}, {0xfffd, 0, 2, 3}, {0xfffb, 0, 4, 3}, {0xfff7, 0, 6, 3}, {0xffef, 1, -2, 3<<2}, {0xffdf, 1, 0, 3<<2}, {0xffbf, 1, 2, 3<<2}, {0xff7f, 1, 4, 3<<2}, }; const int JOYPADS::multiplexer1[8][4]={ {0xfffe, 0, 8, 15}, {0xfffd, 0, 12, 15}, {0xfffb, 0, 16, 15}, {0xfff7, 0, 20, 15}, {0xffef, 1, 4, 15<<4}, {0xffdf, 1, 8, 15<<4}, {0xffbf, 1, 12, 15<<4}, {0xff7f, 1, 16, 15<<4}, }; /* Buttons, for mapping */ const int JOYPADS::buttons[17]={ JP_FIRE0, JP_FIRE1, JP_FIRE2, JP_PAUSE, JP_OPTION, JP_KP0, JP_KP1, JP_KP2, JP_KP3, JP_KP4, JP_KP5, JP_KP6, JP_KP7, JP_KP8, JP_KP9, JP_KPMULT, JP_KPNUM }; JOYPADS::JOYPADS(memptr addr, uint32 size) : BASE_IO(addr, size) { D(bug("joypads: interface created at 0x%06x", getHWoffset())); /* Read button mappings for joypads */ int i, tmp[17]; for (i=0; i<17; i++) { joypada_mapping[i] = joypadb_mapping[i] = i; } sscanf(bx_options.joysticks.joypada_mapping, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", &tmp[0], &tmp[1], &tmp[2], &tmp[3], &tmp[4], &tmp[5], &tmp[6], &tmp[7], &tmp[8], &tmp[9], &tmp[10], &tmp[11], &tmp[12], &tmp[13], &tmp[14], &tmp[15], &tmp[16] ); for (i=0; i<17; i++) { if ((tmp[i]>=0) && tmp[i]<17) { joypada_mapping[tmp[i]]=i; } } sscanf(bx_options.joysticks.joypadb_mapping, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", &tmp[0], &tmp[1], &tmp[2], &tmp[3], &tmp[4], &tmp[5], &tmp[6], &tmp[7], &tmp[8], &tmp[9], &tmp[10], &tmp[11], &tmp[12], &tmp[13], &tmp[14], &tmp[15], &tmp[16] ); for (i=0; i<17; i++) { if ((tmp[i]>=0) && tmp[i]<17) { joypadb_mapping[tmp[i]]=i; } } reset(); } JOYPADS::~JOYPADS() { D(bug("joypads: interface destroyed at 0x%06x", getHWoffset())); } void JOYPADS::reset() { D(bug("joypads: reset")); mask = 0xffff; host_state[0] = host_state[1] = 0; } uae_u8 JOYPADS::handleRead(uaecptr addr) { Uint32 state = 0; int state_mask = 0, state_shift = 0, i; uae_u8 value = 0xff; switch (addr-getHWoffset()) { case 0x01: for (i=0; i<8; i++) { if (multiplexer0[i][0] == mask) { state = host_state[multiplexer0[i][1]]; state_shift = multiplexer0[i][2]; state_mask = multiplexer0[i][3]; break; } } break; case 0x02: for (i=0; i<8; i++) { if (multiplexer1[i][0] == mask) { state = host_state[multiplexer1[i][1]]; state_shift = multiplexer1[i][2]; state_mask = multiplexer1[i][3]; break; } } break; } if (state_shift<0) { value = ~((state<<(-state_shift)) & state_mask); } else { value = ~((state>>state_shift) & state_mask); } D(bug("joypads: Read 0x%02x from 0x%08x",value,addr)); return value; } void JOYPADS::handleWrite(uaecptr addr, uae_u8 value) { D(bug("joypads: Write 0x%02x to 0x%08x",value,addr)); switch(addr-getHWoffset()) { case 0x02: mask = (mask & 0xff) | (value<<8); break; case 0x03: mask = (mask & 0xff00) | value; break; } } void JOYPADS::sendJoystickAxis(int numjoy, int numaxis, int value) { switch(numaxis) { case 0: host_state[numjoy] &= ~((1<JOYSTICK_THRESHOLD) { host_state[numjoy] |= 1<JOYSTICK_THRESHOLD) { host_state[numjoy] |= 1<=0) && (which<17)) { numbit = buttons[maptable[which]]; } if (pressed) { host_state[numjoy] |= 1<=0) { \ sdl_joysticks[array_number] = \ SDL_JoystickOpen(host_number); \ if (!sdl_joysticks[array_number]) { \ panicbug("Could not open joystick %d", \ host_number); \ } \ } SDL_Joystick *sdl_joysticks[4]={ NULL, NULL, NULL, NULL }; /* * Four different types of keyboard translation: * * SYMTABLE = table of symbols (the original method) - never worked properly * FRAMEBUFFER = host to Atari scancode table - tested under framebuffer * X11 = scancode table but with different host scancode offset (crappy SDL) * SCANCODE = scancode table with heuristic detection of scancode offset * */ #define KEYSYM_SYMTABLE 0 #define KEYSYM_MACSCANCODE 1 #define KEYSYM_SCANCODE 3 #define UNDEFINED_OFFSET -1 #ifdef OS_darwin #define KEYBOARD_TRANSLATION KEYSYM_MACSCANCODE #else #define KEYBOARD_TRANSLATION KEYSYM_SCANCODE #endif // according to Gerhard Stoll Milan defined scancode 76 for AltGr key #define RALT_ATARI_SCANCODE (bx_options.ikbd.altgr ? 0x4c : 0x38) /********************************************************************* * Mouse handling *********************************************************************/ static SDL_bool grabbedMouse = SDL_FALSE; static SDL_bool hiddenMouse = SDL_FALSE; SDL_Cursor *aranym_cursor = NULL; SDL_Cursor *empty_cursor = NULL; static const char *arrow[] = { /* width height num_colors chars_per_pixel */ " 32 32 3 1", /* colors */ "X c #000000", ". c #ffffff", " c None", /* pixels */ "X ", "XX ", "X.X ", "X..X ", "X...X ", "X....X ", "X.....X ", "X......X ", "X.......X ", "X........X ", "X.....XXXXX ", "X..X..X ", "X.X X..X ", "XX X..X ", "X X..X ", " X..X ", " X..X ", " X..X ", " XX ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "0,0" }; static SDL_Cursor *init_system_cursor(const char *image[]) { int i, row, col; Uint8 data[4*32]; Uint8 mask[4*32]; int hot_x, hot_y; i = -1; for ( row=0; row<32; ++row ) { for ( col=0; col<32; ++col ) { if ( col % 8 ) { data[i] <<= 1; mask[i] <<= 1; } else { ++i; data[i] = mask[i] = 0; } switch (image[4+row][col]) { case 'X': data[i] |= 0x01; mask[i] |= 0x01; break; case '.': mask[i] |= 0x01; break; case ' ': break; } } } sscanf(image[4+row], "%d,%d", &hot_x, &hot_y); return SDL_CreateCursor(data, mask, 32, 32, hot_x, hot_y); } static SDL_Cursor *init_empty_cursor() { Uint8 data[4*16]; Uint8 mask[4*16]; memset(data, 0, sizeof(data)); memset(mask, 0, sizeof(mask)); return SDL_CreateCursor(data, mask, 16, 16, 0, 0); } #if SDL_VERSION_ATLEAST(2, 0, 0) static int SDLCALL event_filter(void * /* userdata */, SDL_Event *event) #else static int SDLCALL event_filter(const SDL_Event *event) #endif { #if defined(NFCLIPBRD_SUPPORT) if (filter_aclip(event) == 0) return 0; #endif UNUSED(event); return 1; } void InputInit() { aranym_cursor = init_system_cursor(arrow); empty_cursor = init_empty_cursor(); SDL_SetCursor(aranym_cursor); if (bx_options.startup.grabMouseAllowed) { // warp mouse to center of Atari 320x200 screen and grab it grabMouse(SDL_TRUE); // hide mouse unconditionally hideMouse(SDL_TRUE); if (! bx_options.video.fullscreen) { host->video->WarpMouse(0, 0); } } #if defined (OS_darwin) && !SDL_VERSION_ATLEAST(2, 0, 0) // Make sure ALT+click is not interpreted as SDL_MIDDLE_BUTTON SDL_putenv((char*)"SDL_HAS3BUTTONMOUSE=1"); #endif /* Open joysticks */ OPEN_JOYSTICK(bx_options.joysticks.ikbd0, ARANYM_JOY_IKBD0); OPEN_JOYSTICK(bx_options.joysticks.ikbd1, ARANYM_JOY_IKBD1); OPEN_JOYSTICK(bx_options.joysticks.joypada, ARANYM_JOY_JOYPADA); OPEN_JOYSTICK(bx_options.joysticks.joypadb, ARANYM_JOY_JOYPADB); /* Enable the special window hook events */ SDL_EventState(SDL_SYSWMEVENT, SDL_ENABLE); #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_SetEventFilter(event_filter, NULL); #else SDL_SetEventFilter(event_filter); #endif } void InputReset() { // FIXME: add? InputInit(); // FIXME: how??? capslockState (detect) host->video->CapslockState((SDL_GetModState() & KMOD_CAPS) != 0); } void InputExit() { grabMouse(SDL_FALSE); // release mouse hideMouse(SDL_FALSE); // show it /* Close joysticks */ int i; for (i=0; i<4; i++) { if (sdl_joysticks[i]) { SDL_JoystickClose(sdl_joysticks[i]); } } SDL_FreeCursor(aranym_cursor); aranym_cursor = NULL; SDL_FreeCursor(empty_cursor); empty_cursor = NULL; } /********************************************************************* * Keyboard handling *********************************************************************/ #if KEYBOARD_TRANSLATION == KEYSYM_MACSCANCODE static int keyboardTable[0x80] = { /* 0-7 */ -1, 0x35, 0x12, 0x13, 0x14, 0x15, 0x17, 0x16, /* 8-f */ 0x1A, 0x1C, 0x19, 0x1D, 0x1B, 0x18, 0x33, 0x30, /*10-17*/ 0xC, 0xD, 0xE, 0xF, 0x11, 0x10, 0x20, 0x22, /*18-1f*/ 0x1F, 0x23, 0x21, 0x1E, 0x24, -1 /*LCTRL*/, 0x00, 0x01, /*20-27*/ 0x02, 0x03, 0x05, 0x04, 0x26, 0x28, 0x25, 0x29, /*28-2f*/ 0x27, 0x2A, -1 /*LSHIFT*/, 0x0A, 0x06, 0x07, 0x08, 0x09, /*30-37*/ 0x0B, 0x2D, 0x2E, 0x2B, 0x2F, 0x2C, -1 /*RSHIFT*/, -1, /*38-3f*/ -1 /*LALT*/, 0x31, -1 /*CAPSLOCK*/, 0x7A, 0x78, 0x63, 0x76, 0x60, /*40-47*/ 0x61, 0x62, 0x64, 0x65, 0x6D, -1, -1, 0x73, /*48-4f*/ 0x7E, -1, 0x4E, 0x7B, -1, 0x7C, 0x45, -1, /*50-57*/ 0x7D, -1, 0x77, 0x75, -1, -1, -1, -1, /*58-5f*/ -1, -1, -1, -1, -1, -1, -1, -1, /*60-67*/ 0x32, 0x6F, 0x67, -1 /* NumLock */ , 0x51, 0x4B, 0x43, 0x59, /*68-6f*/ 0x5B, 0x5C, 0x56, 0x57, 0x58, 0x53, 0x54, 0x55, /*70-77*/ 0x52, 0x41, 0x4C, -1, -1, -1, -1, -1, /*78-7f*/ -1, -1, -1, -1, -1, -1, -1, -1 }; static int keysymToAtari(SDL_Keysym keysym) { // panicbug("scancode: %x - sym: %x - char: %s", keysym.scancode, keysym.sym, SDL_GetKeyName (keysym.sym)); int sym = keysym.scancode; switch (keysym.sym) { case SDLK_LGUI: case SDLK_RGUI: #if MAP_META_TO_CONTROL return 0x1D; #else return 0; #endif break; case SDLK_MODE: /* passthru */ /* Alt Gr key according to SDL docs */ case SDLK_RALT: return RALT_ATARI_SCANCODE; case SDLK_LALT: return 0x38; break; case SDLK_LSHIFT: return 0x2A; break; case SDLK_RSHIFT: return 0x36; break; case SDLK_RCTRL: case SDLK_LCTRL: #if MAP_CONTROL_TO_CONTROL return 0x1D; #else return 0; #endif default: break; } for (int i = 0; i < 0x73; i++) { if (keyboardTable[i] == sym) { //panicbug ("scancode mac:%x - scancode atari: %x", keysym.scancode, i); return i; } } if (keysym.scancode != 0) bug("keycode: %d (0x%x), scancode %d (0x%x), keysym '%s' is not mapped", keysym.sym, keysym.sym, keysym.scancode, keysym.scancode, SDL_GetKeyName(keysym.sym)); return 0; /* invalid scancode */ } #endif /* KEYSYM_MACSCANCODE */ #if KEYBOARD_TRANSLATION == KEYSYM_SYMTABLE static SDL_Keycode keyboardTable[0x80] = { /* 0-7 */ 0, SDLK_ESCAPE, SDLK_1, SDLK_2, SDLK_3, SDLK_4, SDLK_5, SDLK_6, /* 8-f */ SDLK_7, SDLK_8, SDLK_9, SDLK_0, SDLK_EQUALS, SDLK_QUOTE, SDLK_BACKSPACE, SDLK_TAB, /*10-17*/ SDLK_q, SDLK_w, SDLK_e, SDLK_r, SDLK_t, SDLK_y, SDLK_u, SDLK_i, /*18-1f*/ SDLK_o, SDLK_p, SDLK_LEFTPAREN, SDLK_RIGHTPAREN, SDLK_RETURN, SDLK_LCTRL, SDLK_a, SDLK_s, /*20-27*/ SDLK_d, SDLK_f, SDLK_g, SDLK_h, SDLK_j, SDLK_k, SDLK_l, SDLK_SEMICOLON, /*28-2f*/ SDLK_QUOTE, SDLK_HASH, SDLK_LSHIFT, SDLK_BACKQUOTE, SDLK_z, SDLK_x, SDLK_c, SDLK_v, /*30-37*/ SDLK_b, SDLK_n, SDLK_m, SDLK_COMMA, SDLK_PERIOD, SDLK_SLASH, SDLK_RSHIFT, SDLK_PRINTSCREEN, /*38-3f*/ SDLK_LALT, SDLK_SPACE, SDLK_CAPSLOCK, SDLK_F1, SDLK_F2, SDLK_F3, SDLK_F4, SDLK_F5, /*40-47*/ SDLK_F6, SDLK_F7, SDLK_F8, SDLK_F9, SDLK_F10, 0, 0, SDLK_HOME, /*48-4f*/ SDLK_UP, SDLK_PAGEUP, SDLK_KP_MINUS, SDLK_LEFT, 0, SDLK_RIGHT, SDLK_KP_PLUS, SDLK_END, /*50-57*/ SDLK_DOWN, SDLK_PAGEDOWN, SDLK_INSERT, SDLK_DELETE, 0, 0, 0, 0, /*58-5f*/ 0, 0, 0, 0, 0, 0, 0, 0, /*60-67*/ SDLK_LESS, SDLK_F12, SDLK_F11, SDLK_KP_LEFTPAREN, SDLK_KP_RIGHTPAREN, SDLK_KP_DIVIDE, SDLK_KP_MULTIPLY, SDLK_KP_7, /*68-6f*/ SDLK_KP_8, SDLK_KP_9, SDLK_KP_4, SDLK_KP_5, SDLK_KP_6, SDLK_KP_1, SDLK_KP_2, SDLK_KP_3, /*70-77*/ SDLK_KP_0, SDLK_KP_PERIOD, SDLK_KP_ENTER, 0, 0, 0, 0, 0, /*78-7f*/ 0, 0, 0, 0, 0, 0, 0, 0 }; static int keysymToAtari(SDL_Keysym keysym) { int sym = keysym.sym; if (sym == SDLK_RALT || sym == SDLK_MODE /* Alt Gr */) return RALT_ATARI_SCANCODE; // map right Control key to the left one if (sym == SDLK_RCTRL) sym = SDLK_LCTRL; for (int i = 0; i < 0x73; i++) { if (keyboardTable[i] == sym) { return i; } } return 0; /* invalid scancode */ } #endif /* KEYSYM_SYMTABLE */ #if KEYBOARD_TRANSLATION == KEYSYM_SCANCODE #if !SDL_VERSION_ATLEAST(2, 0, 0) static int findScanCodeOffset(SDL_keysym keysym) { unsigned int scanPC = keysym.scancode; int offset = UNDEFINED_OFFSET; switch(keysym.sym) { case SDLK_ESCAPE: offset = scanPC - 0x01; break; case SDLK_1: offset = scanPC - 0x02; break; case SDLK_2: offset = scanPC - 0x03; break; case SDLK_3: offset = scanPC - 0x04; break; case SDLK_4: offset = scanPC - 0x05; break; case SDLK_5: offset = scanPC - 0x06; break; case SDLK_6: offset = scanPC - 0x07; break; case SDLK_7: offset = scanPC - 0x08; break; case SDLK_8: offset = scanPC - 0x09; break; case SDLK_9: offset = scanPC - 0x0a; break; case SDLK_0: offset = scanPC - 0x0b; break; case SDLK_BACKSPACE: offset = scanPC - 0x0e; break; case SDLK_TAB: offset = scanPC - 0x0f; break; case SDLK_RETURN: offset = scanPC - 0x1c; break; case SDLK_SPACE: offset = scanPC - 0x39; break; case SDLK_q: offset = scanPC - 0x10; break; case SDLK_w: offset = scanPC - 0x11; break; case SDLK_e: offset = scanPC - 0x12; break; case SDLK_r: offset = scanPC - 0x13; break; case SDLK_t: offset = scanPC - 0x14; break; case SDLK_y: offset = scanPC - 0x15; break; case SDLK_u: offset = scanPC - 0x16; break; case SDLK_i: offset = scanPC - 0x17; break; case SDLK_o: offset = scanPC - 0x18; break; case SDLK_p: offset = scanPC - 0x19; break; case SDLK_a: offset = scanPC - 0x1e; break; case SDLK_s: offset = scanPC - 0x1f; break; case SDLK_d: offset = scanPC - 0x20; break; case SDLK_f: offset = scanPC - 0x21; break; case SDLK_g: offset = scanPC - 0x22; break; case SDLK_h: offset = scanPC - 0x23; break; case SDLK_j: offset = scanPC - 0x24; break; case SDLK_k: offset = scanPC - 0x25; break; case SDLK_l: offset = scanPC - 0x26; break; case SDLK_z: offset = scanPC - 0x2c; break; case SDLK_x: offset = scanPC - 0x2d; break; case SDLK_c: offset = scanPC - 0x2e; break; case SDLK_v: offset = scanPC - 0x2f; break; case SDLK_b: offset = scanPC - 0x30; break; case SDLK_n: offset = scanPC - 0x31; break; case SDLK_m: offset = scanPC - 0x32; break; case SDLK_CAPSLOCK: offset = scanPC - 0x3a; break; case SDLK_RSHIFT: offset = scanPC - 0x36; break; case SDLK_LSHIFT: offset = scanPC - 0x2a; break; case SDLK_LCTRL: offset = scanPC - 0x1d; break; case SDLK_LALT: offset = scanPC - 0x38; break; case SDLK_F1: offset = scanPC - 0x3b; break; case SDLK_F2: offset = scanPC - 0x3c; break; case SDLK_F3: offset = scanPC - 0x3d; break; case SDLK_F4: offset = scanPC - 0x3e; break; case SDLK_F5: offset = scanPC - 0x3f; break; case SDLK_F6: offset = scanPC - 0x40; break; case SDLK_F7: offset = scanPC - 0x41; break; case SDLK_F8: offset = scanPC - 0x42; break; case SDLK_F9: offset = scanPC - 0x43; break; case SDLK_F10: offset = scanPC - 0x44; break; default: break; } if (offset != UNDEFINED_OFFSET) { D(bug("Detected scancode offset = %d (key: '%s' with scancode $%02x)", offset, SDL_GetKeyName(keysym.sym), scanPC)); } return offset; } #endif static int keysymToAtari(SDL_Keysym keysym) { #if SDL_VERSION_ATLEAST(2, 0, 0) switch( (unsigned int) keysym.scancode) { case SDL_SCANCODE_ESCAPE: return 0x01; case SDL_SCANCODE_1: return 0x02; case SDL_SCANCODE_2: return 0x03; case SDL_SCANCODE_3: return 0x04; case SDL_SCANCODE_4: return 0x05; case SDL_SCANCODE_5: return 0x06; case SDL_SCANCODE_6: return 0x07; case SDL_SCANCODE_7: return 0x08; case SDL_SCANCODE_8: return 0x09; case SDL_SCANCODE_9: return 0x0a; case SDL_SCANCODE_0: return 0x0b; case SDL_SCANCODE_MINUS: return 0x0c; case SDL_SCANCODE_EQUALS: return 0x0d; case SDL_SCANCODE_BACKSPACE: return 0x0e; case SDL_SCANCODE_TAB: return 0x0f; case SDL_SCANCODE_Q: return 0x10; case SDL_SCANCODE_W: return 0x11; case SDL_SCANCODE_E: return 0x12; case SDL_SCANCODE_R: return 0x13; case SDL_SCANCODE_T: return 0x14; case SDL_SCANCODE_Y: return 0x15; case SDL_SCANCODE_U: return 0x16; case SDL_SCANCODE_I: return 0x17; case SDL_SCANCODE_O: return 0x18; case SDL_SCANCODE_P: return 0x19; case SDL_SCANCODE_LEFTBRACKET: return 0x1a; case SDL_SCANCODE_RIGHTBRACKET: return 0x1b; case SDL_SCANCODE_RETURN: return 0x1c; case SDL_SCANCODE_LCTRL: return 0x1d; case SDL_SCANCODE_A: return 0x1e; case SDL_SCANCODE_S: return 0x1f; case SDL_SCANCODE_D: return 0x20; case SDL_SCANCODE_F: return 0x21; case SDL_SCANCODE_G: return 0x22; case SDL_SCANCODE_H: return 0x23; case SDL_SCANCODE_J: return 0x24; case SDL_SCANCODE_K: return 0x25; case SDL_SCANCODE_L: return 0x26; case SDL_SCANCODE_SEMICOLON: return 0x27; case SDL_SCANCODE_APOSTROPHE: return 0x28; case SDL_SCANCODE_GRAVE: return 0x29; case SDL_SCANCODE_LSHIFT: return 0x2a; case SDL_SCANCODE_BACKSLASH: return 0x2b; case SDL_SCANCODE_Z: return 0x2c; case SDL_SCANCODE_X: return 0x2d; case SDL_SCANCODE_C: return 0x2e; case SDL_SCANCODE_V: return 0x2f; case SDL_SCANCODE_B: return 0x30; case SDL_SCANCODE_N: return 0x31; case SDL_SCANCODE_M: return 0x32; case SDL_SCANCODE_COMMA: return 0x33; case SDL_SCANCODE_PERIOD: return 0x34; case SDL_SCANCODE_SLASH: return 0x35; case SDL_SCANCODE_RSHIFT: return 0x36; case SDL_SCANCODE_PRINTSCREEN: return 0x37; case SDL_SCANCODE_LALT: return 0x38; case SDL_SCANCODE_SPACE: return 0x39; case SDL_SCANCODE_CAPSLOCK: return 0x3a; case SDL_SCANCODE_F1: return 0x3b; case SDL_SCANCODE_F2: return 0x3c; case SDL_SCANCODE_F3: return 0x3d; case SDL_SCANCODE_F4: return 0x3e; case SDL_SCANCODE_F5: return 0x3f; case SDL_SCANCODE_F6: return 0x40; case SDL_SCANCODE_F7: return 0x41; case SDL_SCANCODE_F8: return 0x42; case SDL_SCANCODE_F9: return 0x43; case SDL_SCANCODE_F10: return 0x44; case SDL_SCANCODE_NONUSBACKSLASH: return 0x60; case SDL_SCANCODE_KP_LEFTPAREN: return 0x63; case SDL_SCANCODE_KP_RIGHTPAREN: return 0x64; case SDL_SCANCODE_SCROLLLOCK: return 0x00; case SDL_SCANCODE_PAUSE: return 0x00; } #endif switch((unsigned int) keysym.sym) { // Numeric Pad case SDLK_KP_DIVIDE: return 0x65; /* Numpad / */ case SDLK_KP_MULTIPLY: return 0x66; /* NumPad * */ case SDLK_KP_7: return 0x67; /* NumPad 7 */ case SDLK_KP_8: return 0x68; /* NumPad 8 */ case SDLK_KP_9: return 0x69; /* NumPad 9 */ case SDLK_KP_4: return 0x6a; /* NumPad 4 */ case SDLK_KP_5: return 0x6b; /* NumPad 5 */ case SDLK_KP_6: return 0x6c; /* NumPad 6 */ case SDLK_KP_1: return 0x6d; /* NumPad 1 */ case SDLK_KP_2: return 0x6e; /* NumPad 2 */ case SDLK_KP_3: return 0x6f; /* NumPad 3 */ case SDLK_KP_0: return 0x70; /* NumPad 0 */ case SDLK_KP_PERIOD: return 0x71; /* NumPad . */ case SDLK_KP_ENTER: return 0x72; /* NumPad Enter */ case SDLK_KP_MINUS: return 0x4a; /* NumPad - */ case SDLK_KP_PLUS: return 0x4e; /* NumPad + */ // Special Keys case SDLK_F11: return 0x62; /* F11 => Help */ case SDLK_F12: return 0x61; /* F12 => Undo */ case SDLK_HOME: return 0x47; /* Home */ case SDLK_UP: return 0x48; /* Arrow Up */ case SDLK_PAGEUP: return 0x49; /* Page Up */ case SDLK_LEFT: return 0x4b; /* Arrow Left */ case SDLK_RIGHT: return 0x4d; /* Arrow Right */ case SDLK_END: return 0x4f; /* Milan's scancode for End */ case SDLK_DOWN: return 0x50; /* Arrow Down */ case SDLK_PAGEDOWN: return 0x51; /* Page Down */ case SDLK_INSERT: return 0x52; /* Insert */ case SDLK_DELETE: return 0x53; /* Delete */ case SDLK_NUMLOCKCLEAR: return 0x63; case SDLK_BACKQUOTE: case SDLK_LESS: return 0x60; /* a '<>' key next to short left Shift */ // keys not found on original Atari keyboard case SDLK_RCTRL: return 0x1d; /* map right Control to Atari control */ case SDLK_MODE: /* passthru */ /* Alt Gr key according to SDL docs */ case SDLK_RALT: return RALT_ATARI_SCANCODE; } #if !SDL_VERSION_ATLEAST(2, 0, 0) static int offset = UNDEFINED_OFFSET; // Process remaining keys: assume that it's PC101 keyboard // and that it is compatible with Atari ST keyboard (basically // same scancodes but on different platforms with different // base offset (framebuffer = 0, X11 = 8). // Try to detect the offset using a little bit of black magic. // If offset is known then simply pass the scancode. int scanPC = keysym.scancode; if (offset == UNDEFINED_OFFSET /* || scanPC == 0 */) { offset = findScanCodeOffset(keysym); } // offset is defined so pass the scancode directly if (offset != UNDEFINED_OFFSET && scanPC > offset) return scanPC - offset; #endif if (keysym.scancode != 0) bug("keycode: %d (0x%x), scancode %d (0x%x), keysym '%s' is not mapped", keysym.sym, keysym.sym, keysym.scancode, keysym.scancode, SDL_GetKeyName(keysym.sym)); return 0; } #endif /* KEYSYM_SCANCODE */ /********************************************************************* * Input event checking *********************************************************************/ static bool pendingQuit = false; static int but = 0; static bool mouseOut = false; #ifdef SDL_GUI extern bool isGuiAvailable; // from main.cpp static bool cur_fullscreen; void open_GUI(void) { if (!isGuiAvailable || !SDLGui_isClosed()) { return; } cur_fullscreen = bx_options.video.fullscreen; /* Always ungrab+show mouse */ hiddenMouse = hideMouse(SDL_FALSE); grabbedMouse = grabMouse(SDL_FALSE); SDLGui_Open(NULL); #if SDL_VERSION_ATLEAST(2, 0, 0) host->video->gui_window = host->video->window; host->video->gui_window_id = SDL_GetWindowID(host->video->gui_window); #endif } void close_GUI(void) { HostScreen *video; if (!isGuiAvailable /*|| SDLGui_isClosed()*/) { return; } if (host == NULL || (video = host->video) == NULL) return; SDLGui_Close(); #if SDL_VERSION_ATLEAST(2, 0, 0) if (video->gui_window && video->gui_window != video->window) SDL_DestroyWindow(video->gui_window); video->gui_window = NULL; video->gui_window_id = 0; #endif // small hack to toggle fullscreen from the SETUP GUI if (bx_options.video.fullscreen != cur_fullscreen) { bx_options.video.fullscreen = cur_fullscreen; video->toggleFullScreen(); if (bx_options.video.fullscreen && !grabbedMouse) video->grabTheMouse(); } /* Restore mouse cursor state */ if (hiddenMouse) { hideMouse(SDL_TRUE); } if (grabbedMouse) { grabMouse(SDL_TRUE); } video->forceRefreshScreen(); } #endif /* SDL_GUI */ SDL_bool grabMouse(SDL_bool grab) { if (host && host->video) return host->video->grabMouse(grab); return SDL_FALSE; } SDL_bool hideMouse(SDL_bool hide) { if (host && host->video) return host->video->hideMouse(hide); return SDL_FALSE; } HOTKEY check_hotkey(int state, SDL_Keycode sym) { #define CHECK_HOTKEY(Hotkey) \ if (bx_options.hotkeys.Hotkey.sym != 0 && sym == bx_options.hotkeys.Hotkey.sym && state == bx_options.hotkeys.Hotkey.mod) \ return HOTKEY_ ## Hotkey; \ if (bx_options.hotkeys.Hotkey.sym == 0 && bx_options.hotkeys.Hotkey.mod != 0 && state == bx_options.hotkeys.Hotkey.mod) \ return HOTKEY_ ## Hotkey CHECK_HOTKEY(setup); CHECK_HOTKEY(quit); CHECK_HOTKEY(warmreboot); CHECK_HOTKEY(coldreboot); CHECK_HOTKEY(debug); CHECK_HOTKEY(ungrab); CHECK_HOTKEY(screenshot); CHECK_HOTKEY(fullscreen); CHECK_HOTKEY(sound); #undef CHECK_HOTKEY return HOTKEY_none; } static void process_keyboard_event(const SDL_Event &event) { SDL_Keysym keysym = event.key.keysym; SDL_Keycode sym = keysym.sym; int state; HostScreen *video; if (host == NULL || (video = host->video) == NULL) return; if ((keysym.mod & HOTKEYS_MOD_MASK) == 0) state = SDL_GetModState(); // keysym.mod does not deliver single mod key presses for some reason else state = keysym.mod; // May be send by SDL_PushEvent #ifdef SDL_GUI if (!SDLGui_isClosed() #if SDL_VERSION_ATLEAST(2, 0, 0) && event.key.windowID == video->gui_window_id #endif ) { switch (SDLGui_DoEvent(event)) { case Dialog::GUI_CLOSE: close_GUI(); break; case Dialog::GUI_WARMREBOOT: close_GUI(); RestartAll(); break; case Dialog::GUI_COLDREBOOT: close_GUI(); RestartAll(true); break; case Dialog::GUI_SHUTDOWN: close_GUI(); pendingQuit = true; break; default: break; } return; // don't pass the key events to emulation } #endif /* SDL_GUI */ #ifdef FLIGHT_RECORDER static bool flight_is_active = false; bool flight_turn_on = (state & (KMOD_SHIFT)) == KMOD_RSHIFT; bool flight_turn_off = (state & (KMOD_SHIFT)) == KMOD_LSHIFT; bool flight_changed = (flight_turn_on && !flight_is_active) || (flight_turn_off && flight_is_active); if (flight_changed) { flight_is_active = ! flight_is_active; cpu_flight_recorder(flight_is_active); panicbug("Flight was %sactivated!", (flight_is_active ? "" : "DE")); } #endif bool pressed = (event.type == SDL_KEYDOWN); bool shifted = state & KMOD_SHIFT; // bool controlled = state & KMOD_CTRL; // bool alternated = state & KMOD_ALT; bool capslocked = state & KMOD_CAPS; bool send2Atari = true; if (sym == SDLK_CAPSLOCK) send2Atari = false; if (video->CapslockState() != capslocked) { // SDL sends SDLK_CAPSLOCK keydown to turn it on and keyup to off. // TOS handles it just like any other keypress (down&up) // -> we handle this differently here getIKBD()->SendKey(0x3a); // press CapsLock getIKBD()->SendKey(0xba); // release CapsLock video->CapslockState(capslocked); } #if SDL_VERSION_ATLEAST(2, 0, 0) if (event.key.windowID != video->window_id) return; if (event.key.repeat > 0) return; #endif #if defined(_WIN32) || defined(__CYGWIN__) /* SDL on windows does not report KMOD_CTRL on right ctrl key */ if (keysym.sym == SDLK_RCTRL) state = pressed ? (state | KMOD_CTRL) : (state & ~KMOD_CTRL); #endif // process special hotkeys int masked_mod = state & HOTKEYS_MOD_MASK; HOTKEY hotkey = check_hotkey(masked_mod, sym); if (pressed) { switch (hotkey) { case HOTKEY_none: break; case HOTKEY_quit: pendingQuit = true; send2Atari = false; break; case HOTKEY_warmreboot: RestartAll(); // force Warm Reboot send2Atari = false; break; case HOTKEY_coldreboot: RestartAll(true); // force Cold Reboot send2Atari = false; break; case HOTKEY_setup: #ifdef SDL_GUI /* release shifters (if any) */ if ( bx_options.hotkeys.setup.mod & KMOD_LSHIFT ) getIKBD()->SendKey(0x80 | 0x2a); if ( bx_options.hotkeys.setup.mod & KMOD_RSHIFT ) getIKBD()->SendKey(0x80 | 0x36); if ( bx_options.hotkeys.setup.mod & KMOD_CTRL ) getIKBD()->SendKey(0x80 | 0x1d); if ( bx_options.hotkeys.setup.mod & KMOD_LALT ) getIKBD()->SendKey(0x80 | 0x38); if ( bx_options.hotkeys.setup.mod & (KMOD_MODE|KMOD_RALT) ) getIKBD()->SendKey(0x80 | RALT_ATARI_SCANCODE); open_GUI(); send2Atari = false; #endif break; case HOTKEY_debug: #ifdef DEBUGGER // activate debugger activate_debugger(); send2Atari = false; #endif break; case HOTKEY_ungrab: if ( bx_options.video.fullscreen ) video->toggleFullScreen(); video->releaseTheMouse(); video->CanGrabMouseAgain(false); // let it leave our window send2Atari = false; break; case HOTKEY_screenshot: video->doScreenshot(); send2Atari = false; break; case HOTKEY_fullscreen: video->toggleFullScreen(); if (bx_options.video.fullscreen && !video->GrabbedMouse()) video->grabTheMouse(); send2Atari = false; break; case HOTKEY_sound: host->audio.ToggleAudio(); send2Atari = false; break; } } else if (hotkey != HOTKEY_none) { send2Atari = false; } // map special keys to Atari range of scancodes if (sym == SDLK_PAGEUP) { if (pressed) { if (! shifted) getIKBD()->SendKey(0x2a); // press and hold LShift getIKBD()->SendKey(0x48); // press keyUp } else { getIKBD()->SendKey(0xc8); // release keyUp if (! shifted) getIKBD()->SendKey(0xaa); // release LShift } send2Atari = false; } else if (sym == SDLK_PAGEDOWN) { if (pressed) { if (! shifted) getIKBD()->SendKey(0x2a); // press and hold LShift getIKBD()->SendKey(0x50); // press keyDown } else { getIKBD()->SendKey(0xd0); // release keyDown if (! shifted) getIKBD()->SendKey(0xaa); // release LShift } send2Atari = false; } // send all pressed keys to IKBD if (send2Atari) { int scanAtari = keysymToAtari(keysym); D(bug("Host scancode = %d ($%02x), Atari scancode = %d ($%02x), keycode = '%s' ($%02x)", keysym.scancode, keysym.scancode, pressed ? scanAtari : scanAtari|0x80, pressed ? scanAtari : scanAtari|0x80, SDL_GetKeyName(sym), sym)); if (scanAtari > 0) { if (!pressed) scanAtari |= 0x80; getIKBD()->SendKey(scanAtari); } } } #ifdef NFVDI_SUPPORT static NF_Base* fvdi = NULL; #endif static void send_wheelup(bool clicked) { #ifdef NFVDI_SUPPORT if (clicked && fvdi != NULL && fvdi->dispatch(0xc00100ff) == 0) return; #endif if (bx_options.ikbd.wheel_eiffel) { if (clicked) { getIKBD()->SendKey(0xF6); getIKBD()->SendKey(0x05); getIKBD()->SendKey(0x00); getIKBD()->SendKey(0x00); getIKBD()->SendKey(0x00); getIKBD()->SendKey(0x00); getIKBD()->SendKey(0x00); getIKBD()->SendKey(0x59); } } else { int releaseKeyMask = (clicked ? 0x00 : 0x80); getIKBD()->SendKey(0x48 | releaseKeyMask); // keyUp } } static void send_wheeldown(bool clicked) { #ifdef NFVDI_SUPPORT if (clicked && fvdi != NULL && fvdi->dispatch(0xc0010001) == 0) return; #endif if (bx_options.ikbd.wheel_eiffel) { if (clicked) { getIKBD()->SendKey(0xF6); getIKBD()->SendKey(0x05); getIKBD()->SendKey(0x00); getIKBD()->SendKey(0x00); getIKBD()->SendKey(0x00); getIKBD()->SendKey(0x00); getIKBD()->SendKey(0x00); getIKBD()->SendKey(0x5A); } } else { int releaseKeyMask = (clicked ? 0x00 : 0x80); getIKBD()->SendKey(0x50 | releaseKeyMask); // keyDown } } static void process_mouse_event(const SDL_Event &event) { HostScreen *video; if (host == NULL || (video = host->video) == NULL) return; #ifdef NFVDI_SUPPORT bool mouse_exit = false; bool fvdi_events = false; if (!fvdi) { fvdi = NFGetDriver("fVDI"); } #endif #ifdef SDL_GUI if (!SDLGui_isClosed() #if SDL_VERSION_ATLEAST(2, 0, 0) && event.key.windowID == video->gui_window_id #endif ) { switch (SDLGui_DoEvent(event)) { case Dialog::GUI_CLOSE: close_GUI(); break; case Dialog::GUI_WARMREBOOT: close_GUI(); RestartAll(); break; case Dialog::GUI_COLDREBOOT: close_GUI(); RestartAll(true); break; case Dialog::GUI_SHUTDOWN: close_GUI(); pendingQuit = true; break; default: break; } return; // don't pass the mouse events to emulation } #endif /* SDL_GUI */ if (!video->GrabbedMouse()) { if ((event.type == SDL_MOUSEBUTTONDOWN || event.type == SDL_MOUSEBUTTONUP) && event.button.button == SDL_BUTTON_LEFT) { D(bug("Left mouse click in our window => grab the mouse")); video->RememberAtariMouseCursorPosition(); video->grabTheMouse(); } return; } int xrel = 0; int yrel = 0; int lastbut = but; if (event.type == SDL_MOUSEBUTTONDOWN || event.type == SDL_MOUSEBUTTONUP) { bool clicked = (event.type == SDL_MOUSEBUTTONDOWN); int releaseKeyMask = (clicked ? 0x00 : 0x80); switch(event.button.button) { case SDL_BUTTON_LEFT: if (clicked) but |= 2; else but &= ~2; break; case SDL_BUTTON_RIGHT: if (clicked) but |= 1; else but &= ~1; break; case SDL_BUTTON_MIDDLE: if (bx_options.ikbd.wheel_eiffel) { D(bug("Middle mouse button")); getIKBD()->SendKey(0x37 | releaseKeyMask); } else if (clicked) { // ungrab on middle mouse button click if ( bx_options.video.fullscreen ) video->toggleFullScreen(); video->releaseTheMouse(); video->CanGrabMouseAgain(false); // let it leave our window } return; #if !SDL_VERSION_ATLEAST(2, 0, 0) case SDL_BUTTON_WHEELUP: send_wheelup(clicked); return; case SDL_BUTTON_WHEELDOWN: send_wheeldown(clicked); return; #endif default: D(bug("Unknown mouse button: %d", event.button.button)); } } else if (event.type == SDL_MOUSEMOTION) { if (!video->IgnoreMouseMotionEvent()) { xrel = event.motion.xrel; yrel = event.motion.yrel; } else video->IgnoreMouseMotionEvent(false); #ifdef NFVDI_SUPPORT if (fvdi != NULL) { if (fvdi->dispatch(0x80008000 | (event.motion.x << 16) | (event.motion.y)) == 0) fvdi_events = true; } // Can't use the method below to get out of the window // if the events are reported directly, since it only // works with hidden mouse pointer. // So, define top left corner as exit point. mouse_exit = (event.motion.x == 0) && (event.motion.y == 0); #endif #ifdef __ANDROID__ if (getARADATA()->isAtariMouseDriver()) { xrel = event.motion.x - getARADATA()->getAtariMouseX(); yrel = event.motion.y - getARADATA()->getAtariMouseY(); } #endif if (!bx_options.startup.grabMouseAllowed && ( (xrel <= 0 && event.motion.x <= 0) || (yrel <= 0 && event.motion.y <= 0) || (xrel >= 0 && event.motion.x >= video->getWidth() - 1) || (yrel >= 0 && event.motion.y >= video->getHeight() - 1))) mouseOut = true; } #if SDL_VERSION_ATLEAST(2, 0, 0) else if (event.type == SDL_MOUSEWHEEL) { if (event.wheel.y > 0) { send_wheelup(true); send_wheelup(false); } else if (event.wheel.y < 0) { send_wheeldown(true); send_wheeldown(false); } } #endif #ifdef NFVDI_SUPPORT if (lastbut != but) { if (fvdi != NULL && (fvdi->dispatch(0xb0000000 | but) == 0)) fvdi_events = true; } if (fvdi_events) { #if DEBUG static bool reported = false; if (!reported) { D(bug("Using nfvdi direct mouse support")); reported = true; } #endif if (!bx_options.video.fullscreen && mouse_exit && !bx_options.startup.grabMouseAllowed) mouseOut = true; return; } #endif // send the mouse data packet if (xrel || yrel || lastbut != but) { #if 0 if (xrel < -250 || xrel > 250 || yrel < -250 || yrel > 250) { D(bug("Resetting suspicious mouse packet: position %dx%d, buttons %d", xrel, yrel, but)); xrel = yrel = 0; // reset the values otherwise ikbd goes crazy } #endif getIKBD()->SendMouseMotion(xrel, yrel, but, false); } if (! bx_options.video.fullscreen && !bx_options.startup.grabMouseAllowed && getARADATA()->isAtariMouseDriver()) { // check whether user doesn't try to go out of window (top or left) if ((xrel < 0 && getARADATA()->getAtariMouseX() == 0) || (yrel < 0 && getARADATA()->getAtariMouseY() == 0)) mouseOut = true; // same check but for bottom and right side of our window int hostw = video->getWidth(); int hosth = video->getHeight(); if ((xrel > 0 && getARADATA()->getAtariMouseX() >= hostw - 1) || (yrel > 0 && getARADATA()->getAtariMouseY() >= hosth - 1)) mouseOut = true; } } /*--- Video resize event ---*/ static void process_resize_event(int w, int h) { if (!host || !host->video) { return; } /* Use new size as fixed size */ if (bx_options.autozoom.fixedsize) { bx_options.autozoom.width = w; bx_options.autozoom.height = h; } host->video->resizeWindow(w, h); } static void process_active_event(const SDL_Event &event) { HostScreen *video; if (host == NULL || (video = host->video) == NULL) return; #if SDL_VERSION_ATLEAST(2, 0, 0) if (event.window.event == SDL_WINDOWEVENT_NONE || event.window.event == SDL_WINDOWEVENT_SHOWN || event.window.event == SDL_WINDOWEVENT_HIDDEN || event.window.event == SDL_WINDOWEVENT_EXPOSED || event.window.event == SDL_WINDOWEVENT_MOVED) return; if (event.window.event == SDL_WINDOWEVENT_CLOSE) { #ifdef SDL_GUI if (event.window.windowID == video->gui_window_id && !SDLGui_isClosed()) close_GUI(); #endif return; } bool app_focus = event.window.event == SDL_WINDOWEVENT_MINIMIZED || event.window.event == SDL_WINDOWEVENT_RESTORED || event.window.event == SDL_WINDOWEVENT_SHOWN || event.window.event == SDL_WINDOWEVENT_HIDDEN; bool mouse_focus = event.window.event == SDL_WINDOWEVENT_ENTER || event.window.event == SDL_WINDOWEVENT_LEAVE; bool input_focus = event.window.event == SDL_WINDOWEVENT_FOCUS_GAINED || event.window.event == SDL_WINDOWEVENT_FOCUS_LOST; bool gained = event.window.event == SDL_WINDOWEVENT_RESTORED || event.window.event == SDL_WINDOWEVENT_SHOWN || event.window.event == SDL_WINDOWEVENT_ENTER || event.window.event == SDL_WINDOWEVENT_FOCUS_GAINED; if ((event.window.event == SDL_WINDOWEVENT_RESIZED || event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED) && event.window.windowID == video->window_id) { process_resize_event(event.window.data1, event.window.data2); } #else bool app_focus = (event.active.state & SDL_APPACTIVE) != 0; bool mouse_focus = (event.active.state & SDL_APPMOUSEFOCUS) != 0; bool input_focus = (event.active.state & SDL_APPINPUTFOCUS) != 0; bool gained = event.active.gain != 0; #endif #if DEBUG uint32 ticks = SDL_GetTicks(); #endif if (app_focus) { D(bug("%d: ARAnyM window is being %s", ticks, gained ? "restored" : "minimized")); } if (input_focus) { D(bug("%d: ARAnyM window is %s input focus", ticks, gained ? "gaining" : "losing")); } // if it's mouse focus event if (mouse_focus) { D(bug("%d: Mouse pointer is %s ARAnyM window", ticks, gained ? "entering" : "leaving")); bool allowMouseGrab = true; #ifdef SDL_GUI // Disable grab, if Setup GUI is open // because else the mouse goes invisible if the window is reentered allowMouseGrab = SDLGui_isClosed(); #endif if (allowMouseGrab) { // if we can grab the mouse automatically // and if the Atari mouse driver works D(bug("Proceed only if AtariMouseDriver is working")); if (getARADATA()->isAtariMouseDriver()) { // if the mouse pointer is leaving our window if (!gained) { // allow grabbing it when it will be returning D(bug("Host mouse is indeed leaving us")); if (video->CanGrabMouseAgain()) { // video->RememberAtariMouseCursorPosition(); } } // if the mouse pointer is entering our window else { D(bug("Host mouse is returning!")); // if grabbing the mouse is allowed if (video->CanGrabMouseAgain() && (video->HasInputFocus() || bx_options.startup.grabMouseAllowed)) { D(bug("canGrabMouseAgain allows autograb")); // then grab it video->grabTheMouse(); } } } } } } /*--- Joystick event ---*/ static void process_joystick_event(const SDL_Event &event) { switch(event.type) { case SDL_JOYAXISMOTION: if (event.jaxis.which==bx_options.joysticks.ikbd0) { getIKBD()->SendJoystickAxis(0, event.jaxis.axis, event.jaxis.value); } else if (event.jaxis.which==bx_options.joysticks.ikbd1) { getIKBD()->SendJoystickAxis(1, event.jaxis.axis, event.jaxis.value); } else if (event.jaxis.which==bx_options.joysticks.joypada) { getJOYPADS()->sendJoystickAxis(0, event.jaxis.axis, event.jaxis.value); } else if (event.jaxis.which==bx_options.joysticks.joypadb) { getJOYPADS()->sendJoystickAxis(1, event.jaxis.axis, event.jaxis.value); } break; case SDL_JOYHATMOTION: if (event.jaxis.which==bx_options.joysticks.ikbd0) { getIKBD()->SendJoystickHat(0, event.jhat.value); } else if (event.jaxis.which==bx_options.joysticks.ikbd1) { getIKBD()->SendJoystickHat(1, event.jhat.value); } else if (event.jaxis.which==bx_options.joysticks.joypada) { getJOYPADS()->sendJoystickHat(0, event.jhat.value); } else if (event.jaxis.which==bx_options.joysticks.joypadb) { getJOYPADS()->sendJoystickHat(1, event.jhat.value); } break; case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: if (event.jaxis.which==bx_options.joysticks.ikbd0) { getIKBD()->SendJoystickButton(0, event.jbutton.state==SDL_PRESSED); } else if (event.jaxis.which==bx_options.joysticks.ikbd1) { getIKBD()->SendJoystickButton(1, event.jbutton.state==SDL_PRESSED); } else if (event.jaxis.which==bx_options.joysticks.joypada) { getJOYPADS()->sendJoystickButton(0, event.jbutton.button, event.jbutton.state==SDL_PRESSED); } else if (event.jaxis.which==bx_options.joysticks.joypadb) { getJOYPADS()->sendJoystickButton(1, event.jbutton.button, event.jbutton.state==SDL_PRESSED); } break; } } /////// // main function for checking keyboard, mouse and joystick events // called from main.cpp every 20 ms void check_event() { HostScreen *video; if (host == NULL || (video = host->video) == NULL) return; if (!bx_options.video.fullscreen && mouseOut) { // host mouse moved but the Atari mouse did not => mouse is // probably at the Atari screen border. Ungrab it and warp the host mouse at // the same location so the mouse moves smoothly. video->releaseTheMouse(); mouseOut = false; } SDL_Event event; while (SDL_PollEvent(&event)) { switch(event.type) { case SDL_KEYDOWN: case SDL_KEYUP: process_keyboard_event(event); break; case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: case SDL_MOUSEMOTION: #if SDL_VERSION_ATLEAST(2, 0, 0) case SDL_MOUSEWHEEL: #endif process_mouse_event(event); break; case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: case SDL_JOYHATMOTION: case SDL_JOYAXISMOTION: process_joystick_event(event); break; #if SDL_VERSION_ATLEAST(2, 0, 0) case SDL_WINDOWEVENT: #else case SDL_ACTIVEEVENT: #endif process_active_event(event); break; #if SDL_VERSION_ATLEAST(2, 0, 0) case SDL_APP_TERMINATING: case SDL_APP_LOWMEMORY: case SDL_APP_WILLENTERBACKGROUND: case SDL_APP_DIDENTERBACKGROUND: case SDL_APP_WILLENTERFOREGROUND: case SDL_APP_DIDENTERFOREGROUND: /* SDL2FIXME: TODO */ break; case SDL_FINGERDOWN: case SDL_FINGERUP: case SDL_FINGERMOTION: /* SDL2FIXME: TODO */ break; #endif #if SDL_VERSION_ATLEAST(2, 0, 0) /* resize handled in process_active_event() */ #else case SDL_VIDEORESIZE: process_resize_event(event.resize.w, event.resize.h); break; #endif case SDL_QUIT: #ifdef SDL_GUI if (!SDLGui_isClosed()) { close_GUI(); } #endif pendingQuit = true; break; } } if (pendingQuit) { Quit680x0(); // forces CPU to quit the loop } } // don't remove this modeline with intended formatting for vim:ts=4:sw=4: aranym-1.1.0/src/include/0000775000175000017500000000000013454637621013413 5ustar joyjoyaranym-1.1.0/src/include/yamaha.h0000664000175000017500000000251113454637621015023 0ustar joyjoy/* * yamaha.h - Atari YM2149 emulation code - declaration * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _YAMAHA_H #define _YAMAHA_H #include "icio.h" class YAMAHA : public BASE_IO { private: int active_reg; int yamaha_regs[16]; public: YAMAHA(memptr, uint32); ~YAMAHA(); void reset(); virtual uint8 handleRead(memptr addr); virtual void handleWrite(memptr addr, uint8 value); int getFloppyStat(); Parallel *parallel; }; #endif /* _YAMAHA_H */ aranym-1.1.0/src/include/videl_zoom.h0000664000175000017500000000235413454637621015737 0ustar joyjoy/* Falcon VIDEL emulation, with zoom (C) 2006-2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef VIDELZOOM_H #define VIDELZOOM_H class VIDEL; class HostSurface; class VidelZoom : public VIDEL { private: HostSurface *surface; int zoomWidth, zoomHeight; int prevVidelWidth, prevVidelHeight, prevVidelBpp; int prevWidth, prevHeight, prevBpp; int *xtable, *ytable; void refreshScreen(void); public: VidelZoom(memptr, uint32); virtual ~VidelZoom(void); void reset(void); HostSurface *getSurface(void); void forceRefresh(void); }; #endif /* VIDELZOOM_H */ aranym-1.1.0/src/include/videl.h0000664000175000017500000000276613454637621014702 0ustar joyjoy/* Falcon VIDEL emulation (C) 2001-2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef VIDEL_H #define VIDEL_H #include "SDL_compat.h" class BASE_IO; class HostSurface; class VIDEL : public BASE_IO { private: HostSurface *surface; int prevVidelWidth, prevVidelHeight, prevVidelBpp; bool updatePalette; Uint32 *crcList; bool useStPalette(void); Uint32 getVramAddress(void); int getWidth(void); int getHeight(void); void refreshPalette(void); void refreshScreen(void); void updateAspect(void); public: VIDEL(memptr, uint32); virtual ~VIDEL(void); bool isMyHWRegister(memptr addr); virtual void reset(void); void handleWrite(uint32 addr, uint8 value); virtual HostSurface *getSurface(void); virtual void forceRefresh(void); virtual int getBpp(void); int aspect_x, aspect_y; }; #endif /* VIDEL_H */ aranym-1.1.0/src/include/version.h0000664000175000017500000000217713454637621015260 0ustar joyjoy/* * version.h - Version information * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef VERSION_H #define VERSION_H #define VER_MAJOR 1 #define VER_MINOR 1 #define VER_MICRO 0 #ifndef VER_STATUS #define VER_STATUS //#define VER_STATUS "+" CVS_DATE //#define VER_STATUS "alpha" //#define VER_STATUS "beta" //#define VER_STATUS "beta+" CVS_DATE #endif #define NAME_STRING "ARAnyM" extern char const name_string[]; extern char const version_string[]; #endif aranym-1.1.0/src/include/verify.h0000664000175000017500000002357213454637621015101 0ustar joyjoy/* Compile-time assert-like macros. Copyright (C) 2005-2006, 2009-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ /* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */ #ifndef _GL_VERIFY_H #define _GL_VERIFY_H /* Define _GL_HAVE__STATIC_ASSERT to 1 if _Static_assert works as per C11. This is supported by GCC 4.6.0 and later, in C mode, and its use here generates easier-to-read diagnostics when verify (R) fails. Define _GL_HAVE_STATIC_ASSERT to 1 if static_assert works as per C++11. This will likely be supported by future GCC versions, in C++ mode. Use this only with GCC. If we were willing to slow 'configure' down we could also use it with other compilers, but since this affects only the quality of diagnostics, why bother? */ #if (__GNUC_PREREQ(4, 6) \ && ((defined __STDC_VERSION__ && 201112L <= __STDC_VERSION__) && !defined __STRICT_ANSI__) \ && !defined __cplusplus) # define _GL_HAVE__STATIC_ASSERT 1 #endif /* The condition (99 < __GNUC__) is temporary, until we know about the first G++ release that supports static_assert. */ #if defined __cplusplus && (99 < __GNUC__) # define _GL_HAVE_STATIC_ASSERT 1 #endif /* FreeBSD 9.1 , included by and lots of other system headers, defines a conflicting _Static_assert that is no better than ours; override it. */ #ifndef _GL_HAVE_STATIC_ASSERT # include # undef _Static_assert #endif /* Each of these macros verifies that its argument R is nonzero. To be portable, R should be an integer constant expression. Unlike assert (R), there is no run-time overhead. If _Static_assert works, verify (R) uses it directly. Similarly, _GL_VERIFY_TRUE works by packaging a _Static_assert inside a struct that is an operand of sizeof. The code below uses several ideas for C++ compilers, and for C compilers that do not support _Static_assert: * The first step is ((R) ? 1 : -1). Given an expression R, of integral or boolean or floating-point type, this yields an expression of integral type, whose value is later verified to be constant and nonnegative. * Next this expression W is wrapped in a type struct _gl_verify_type { unsigned int _gl_verify_error_if_negative: W; }. If W is negative, this yields a compile-time error. No compiler can deal with a bit-field of negative size. One might think that an array size check would have the same effect, that is, that the type struct { unsigned int dummy[W]; } would work as well. However, inside a function, some compilers (such as C++ compilers and GNU C) allow local parameters and variables inside array size expressions. With these compilers, an array size check would not properly diagnose this misuse of the verify macro: void function (int n) { verify (n < 0); } * For the verify macro, the struct _gl_verify_type will need to somehow be embedded into a declaration. To be portable, this declaration must declare an object, a constant, a function, or a typedef name. If the declared entity uses the type directly, such as in struct dummy {...}; typedef struct {...} dummy; extern struct {...} *dummy; extern void dummy (struct {...} *); extern struct {...} *dummy (void); two uses of the verify macro would yield colliding declarations if the entity names are not disambiguated. A workaround is to attach the current line number to the entity name: #define _GL_CONCAT0(x, y) x##y #define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y) extern struct {...} * _GL_CONCAT (dummy, __LINE__); But this has the problem that two invocations of verify from within the same macro would collide, since the __LINE__ value would be the same for both invocations. (The GCC __COUNTER__ macro solves this problem, but is not portable.) A solution is to use the sizeof operator. It yields a number, getting rid of the identity of the type. Declarations like extern int dummy [sizeof (struct {...})]; extern void dummy (int [sizeof (struct {...})]); extern int (*dummy (void)) [sizeof (struct {...})]; can be repeated. * Should the implementation use a named struct or an unnamed struct? Which of the following alternatives can be used? extern int dummy [sizeof (struct {...})]; extern int dummy [sizeof (struct _gl_verify_type {...})]; extern void dummy (int [sizeof (struct {...})]); extern void dummy (int [sizeof (struct _gl_verify_type {...})]); extern int (*dummy (void)) [sizeof (struct {...})]; extern int (*dummy (void)) [sizeof (struct _gl_verify_type {...})]; In the second and sixth case, the struct type is exported to the outer scope; two such declarations therefore collide. GCC warns about the first, third, and fourth cases. So the only remaining possibility is the fifth case: extern int (*dummy (void)) [sizeof (struct {...})]; * GCC warns about duplicate declarations of the dummy function if -Wredundant-decls is used. GCC 4.3 and later have a builtin __COUNTER__ macro that can let us generate unique identifiers for each dummy function, to suppress this warning. * This implementation exploits the fact that older versions of GCC, which do not support _Static_assert, also do not warn about the last declaration mentioned above. * GCC warns if -Wnested-externs is enabled and verify() is used within a function body; but inside a function, you can always arrange to use verify_expr() instead. * In C++, any struct definition inside sizeof is invalid. Use a template type to work around the problem. */ /* Concatenate two preprocessor tokens. */ #define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y) #define _GL_CONCAT0(x, y) x##y /* _GL_COUNTER is an integer, preferably one that changes each time we use it. Use __COUNTER__ if it works, falling back on __LINE__ otherwise. __LINE__ isn't perfect, but it's better than a constant. */ #if defined __COUNTER__ && __COUNTER__ != __COUNTER__ # define _GL_COUNTER __COUNTER__ #else # define _GL_COUNTER __LINE__ #endif /* Generate a symbol with the given prefix, making it unique if possible. */ #define _GL_GENSYM(prefix) _GL_CONCAT (prefix, _GL_COUNTER) /* Verify requirement R at compile-time, as an integer constant expression that returns 1. If R is false, fail at compile-time, preferably with a diagnostic that includes the string-literal DIAGNOSTIC. */ #define _GL_VERIFY_TRUE(R, DIAGNOSTIC) \ ((R) ? 1 : -1) #ifdef __cplusplus # ifndef GNULIB_defined_struct__gl_verify_type template struct _gl_verify_type { unsigned int _gl_verify_error_if_negative: w; }; # define GNULIB_defined_struct__gl_verify_type 1 # endif # define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ _gl_verify_type<(R) ? 1 : -1> #elif defined _GL_HAVE__STATIC_ASSERT # define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ struct { \ _Static_assert (R, DIAGNOSTIC); \ int _gl_dummy; \ } #else # define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ struct _GL_GENSYM(_gl_verify_type) { unsigned int _gl_verify_error_if_negative: (R) ? 1 : -1; } #endif /* Verify requirement R at compile-time, as a declaration without a trailing ';'. If R is false, fail at compile-time, preferably with a diagnostic that includes the string-literal DIAGNOSTIC. Unfortunately, unlike C11, this implementation must appear as an ordinary declaration, and cannot appear inside struct { ... }. */ #ifdef _GL_HAVE__STATIC_ASSERT # define _GL_VERIFY _Static_assert #else # define _GL_VERIFY(R, DIAGNOSTIC) \ extern int (*_GL_GENSYM (_gl_verify_function) (void)) \ [_GL_VERIFY_TRUE (R, DIAGNOSTIC)] #endif /* _GL_STATIC_ASSERT_H is defined if this code is copied into assert.h. */ #ifdef _GL_STATIC_ASSERT_H # if !defined _GL_HAVE__STATIC_ASSERT && !defined _Static_assert # define _Static_assert(R, DIAGNOSTIC) _GL_VERIFY (R, DIAGNOSTIC) # endif # if !defined _GL_HAVE_STATIC_ASSERT && !defined static_assert # define static_assert _Static_assert /* C11 requires this #define. */ # endif #endif /* @assert.h omit start@ */ /* Each of these macros verifies that its argument R is nonzero. To be portable, R should be an integer constant expression. Unlike assert (R), there is no run-time overhead. There are two macros, since no single macro can be used in all contexts in C. verify_true (R) is for scalar contexts, including integer constant expression contexts. verify (R) is for declaration contexts, e.g., the top level. */ /* Verify requirement R at compile-time, as an integer constant expression. Return 1. This is equivalent to verify_expr (R, 1). verify_true is obsolescent; please use verify_expr instead. */ #define verify_true(R) _GL_VERIFY_TRUE (R, "verify_true (" #R ")") /* Verify requirement R at compile-time. Return the value of the expression E. */ #define verify_expr(R, E) (_GL_VERIFY_TRUE(R, E) < 0 ? (void)abort() : (void)0) /* Verify requirement R at compile-time, as a declaration without a trailing ';'. */ # define verify(R) _GL_VERIFY (R, "verify (" #R ")") /* @assert.h omit end@ */ #endif aranym-1.1.0/src/include/toserror.h0000664000175000017500000000625313454637621015451 0ustar joyjoy/* This file is part of STonX, the Atari ST Emulator for Unix/X * ============================================================ * STonX is free software and comes with NO WARRANTY - read the file * COPYING for details */ /* List of all known TOS-ERRORs */ #define TOS_E_OK 0 /* Ok = no error */ #define TOS_ERROR -1 /* Error: unknown error */ #define TOS_EDRVNR -2 /* Drive not ready: device timeout */ #define TOS_EUNCMD -3 /* Unknown command: device access */ #define TOS_E_CRC -4 /* CRC error: sector read */ #define TOS_EBADRQ -5 /* Bad request: error at device request */ #define TOS_E_SEEK -6 /* Seek error: wrong tracknumber */ #define TOS_EMEDIA -7 /* Unknown media: bootsector defect or not there */ #define TOS_ESECNF -8 /* Sector not found: wrong sectornumber */ #define TOS_EPAPER -9 /* Out of paper: printer not ready */ #define TOS_EWRITF -10 /* Write fault */ #define TOS_EREADF -11 /* Read fault */ #define TOS_EGENRL -12 /* General error: reserved for future catastrophes */ #define TOS_EROFS -13 /* Write on write-protected media */ #define TOS_E_CHNG -14 /* Media change detected */ #define TOS_EUNDEV -15 /* Unknown device */ #define TOS_EBADSF -16 /* Bad sectors on format */ #define TOS_EOTHER -17 /* Insert other disk (request) */ #define TOS_EINSERT -18 /* Insert disk: Metados error */ #define TOS_EDVNRSP -19 /* Device not responding: Metados error */ #define TOS_ESRCH -20 /* No such process */ #define TOS_ECHILD -21 /* No child processes. */ #define TOS_EDEADLK -22 /* Resource deadlock would occur. */ #define TOS_ENOTBLK -23 /* Block device required. */ #define TOS_EISDIR -24 /* Is a directory. */ #define TOS_EINVAL -25 /* Invalid argument. */ #define TOS_EFTYPE -26 /* Inappropriate file type or format. */ #define TOS_EILSEQ -27 /* Illegal byte sequence. */ #define TOS_EINVFN -32 /* Invalid function number: GEMDOS */ #define TOS_ENOSYS TOS_EINVFN #define TOS_EFILNF -33 /* File not found */ #define TOS_EPTHNF -34 /* Path not found */ #define TOS_ENHNDL -35 /* Handle pool exhausted */ #define TOS_EACCDN -36 /* Access denied */ #define TOS_EACCES TOS_EACCDN #define TOS_EIHNDL -37 /* Invalid handle */ #define TOS_EPERM -38 /* permission denied */ #define TOS_ENSMEM -39 /* Insufficient memory */ #define TOS_EIMBA -40 /* Invalid memory block address */ #define TOS_EDRIVE -46 /* Invalid drive specification */ #define TOS_ENSAME -48 /* Not the same drive */ #define TOS_ENMFIL -49 /* No more files: Fsfirst/Fsnext */ #define TOS_ELOCKED -58 /* Record is locked */ #define TOS_ENSLOCK -59 /* Matching lock not found */ #define TOS_ERANGE -64 /* Range error */ #define TOS_EINTRN -65 /* GEMDOS internal error */ #define TOS_EPLFMT -66 /* Invalid executable file format */ #define TOS_EGSBF -67 /* Memory block groth failure */ #define TOS_EBREAK -68 /* Break by CTRL-C: KAOS/MagiC */ #define TOS_EXCPT -69 /* Break by Exception: KAOS/MagiC */ #define TOS_EEXIST -85 /* file exist, try later */ #define TOS_ENAMETOOLONG -86 /* Name too long */ #define TOS_EIO -90 /* I/O error */ #define TOS_ENOSPC -91 /* disk full */ #define TOS_EMOUNT -200 /* used by MiNT-kernel */ extern int unix2toserrno(int unixerrno,int defaulttoserrno); aranym-1.1.0/src/include/tools.h0000664000175000017500000001122713454637621014727 0ustar joyjoy/* * tools.h - non-32bit CPU and miscelany utilities * * Copyright (c) 2001-2003 STanda of ARAnyM developer team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _TOOLS_H #define _TOOLS_H #include "sysdeps.h" # include // minimun and maximum macros #ifndef MIN #define MIN(_a,_b) ((_a)<(_b)?(_a):(_b)) #endif #ifndef MAX #define MAX(_a,_b) ((_a)>(_b)?(_a):(_b)) #endif // // some additional std*.h like functions // extern "C" { static inline char* strapply( char* str, int (*functor)(int) ) { char* pos = str; while ( (*pos = (char)functor( (int)*pos )) != 0 ) pos++; return str; } static inline char* strd2upath( char* dest, char* src ) { char* result = dest; while( *src ) { *dest++ = (((*src == '\\') || (*src == '/')) ? DIRSEPARATOR[0] : *src); src++; } *dest=0; return result; } } // enables the conversions also on the 32bit system // (in case the system doesn't need them) #define DEBUG_FORCE_NON32BIT 0 // denies any 32bit <-> ANYbit conversions // (explicitly denies it on any system) #define DEBUG_DISABLE_NON32BIT 0 // single define to force 32bit algorithms #if DEBUG_FORCE_NON32BIT && !DEBUG_DISABLE_NON32BIT #define DEBUG_NON32BIT 1 #else #define DEBUG_NON32BIT 0 #endif /** * Provides bijective mapping between uint32 and e.g. void* * (or int or any other type) * * It is a need when there is not enough space on the emulated * side and we need to store native pointers there (hostfs) * * Also the filedescriptor number is int (which is not always 32bit) * and therefore we need to handle them this way. */ template class NativeTypeMapper { std::map a2n; std::map n2a; public: void putNative( nativeType value ) { // test if present if ( n2a.find( value ) != n2a.end() ) return; // cast to the number (not a pointer) type // of the same size as the void*. Then cut the lowest // 32bits as the default hash value uint32 aValue = (uintptr)value & 0xffffffffUL; #if DEBUG_FORCE_NON32BIT // easier NativeTypeMapper functionality debugging aValue &= 0x1fL; #endif // make the aValue unique (test if present and increase if positive) while ( a2n.find( aValue ) != a2n.end() ) { #if DEBUG_FORCE_NON32BIT fprintf(stderr,"NTM: Conflicting mapping %x [%d]\n", aValue, a2n.size()); #endif aValue+=7; } #if DEBUG_FORCE_NON32BIT fprintf(stderr,"NTM: mapping %x [%d]\n", aValue, a2n.size()); #endif // put the values into maps (both direction search possible) a2n.insert( std::make_pair( aValue, value ) ); n2a.insert( std::make_pair( value, aValue ) ); } void removeNative( nativeType value ) { typename std::map::iterator it = n2a.find( value ); // remove if present if ( it != n2a.end() ) { // remove the 32bit -> native mapping a2n.erase( it->second ); // and now the native -> 32bit n2a.erase( value ); } } nativeType getNative( uint32 from ) { return a2n.find( from )->second; } uint32 get32bit( nativeType from ) { return n2a.find( from )->second; } }; // if the void* is not 4 byte long or if the map debugging is on // and if it is not explicitely turned off #if SIZEOF_VOID_P != 4 || DEBUG_NON32BIT # define MAPNEWVOIDP(x) memptrMapper.putNative(x) # define MAPDELVOIDP(x) memptrMapper.removeNative(x) # define MAP32TOVOIDP(x) memptrMapper.getNative(x) # define MAPVOIDPTO32(x) ((memptr)memptrMapper.get32bit(x)) extern NativeTypeMapper memptrMapper; #else # define MAPNEWVOIDP(x) # define MAPDELVOIDP(x) # define MAP32TOVOIDP(x) x # define MAPVOIDPTO32(x) x #endif char *safe_strncpy(char *dest, const char *src, size_t size); char *safe_strncat(char *dest, const char *src, size_t size); #ifdef OS_cygwin char* cygwin_path_to_win32(char *, size_t); #endif char *my_canonicalize_file_name(const char *filename, bool append_slash); #endif // _TOOLS_H aranym-1.1.0/src/include/sysconfig.h0000664000175000017500000000246313454637621015575 0ustar joyjoy/* * sysconfig.h - (WIN)UAE defines for ARAnyM * * Copyright (c) 2017 ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _SYSCONFIG_H #define _SYSCONFIG_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #define WINUAE_ARANYM 1 #undef UAE /* just in case */ /* ARAnyM uses USE_JIT; WINUAE uses JIT to enable JIT support */ #ifdef USE_JIT #define JIT 1 #endif /* WINUAE makes this conditional */ #define NOFLAGS_SUPPORT 1 #if SIZEOF_VOID_P != 4 #define CPU_64_BIT 1 #endif #endif aranym-1.1.0/src/include/serial_port.h0000664000175000017500000000226313454637621016112 0ustar joyjoy/* Serial port emulation, Linux driver ARAnyM (C) 2005 Patrice Mandin 2010 Jean Conter This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef SERIAL_PORT_H #define SERIAL_PORT_H class Serialport: public Serial { private: int handle; uint16 oldTBE; uint16 oldStatus; uint16 getTBE(); public: Serialport(void); ~Serialport(void); void reset(void); uint8 getData(); void setData(uint8 value); void setBaud(uint32 value); uint16 getStatus(); void setRTS(bool value); void setDTR(bool value); }; #endif /* SERIAL_PORT_H */ aranym-1.1.0/src/include/serial.h0000664000175000017500000000224613454637621015047 0ustar joyjoy/* Serial port emulation, base class ARAnyM (C) 2005 Patrice Mandin 2010 Jean Conter This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef SERIAL_H #define SERIAL_H #include "sysdeps.h" class Serial { public: Serial(void); virtual ~Serial(void); virtual void reset(void); virtual uint8 getData(); virtual void setData(uint8 value); virtual void setBaud(uint32 value); virtual uint16 getStatus(); virtual void setRTS(bool value); virtual void setDTR(bool value); virtual uint16 getTBE(); }; #endif /* SERIAL_H */ aranym-1.1.0/src/include/scsidefs.h0000664000175000017500000003504613454637621015377 0ustar joyjoy///////////////////////////////////////////////////////////////////////// // // // iodev/scsidefs.h // // This file was copied from ... ? // //*************************************************************************** // // Name: SCSIDEFS.H // // Description: SCSI definitions ('C' Language) // //*************************************************************************** //*************************************************************************** // %%% TARGET STATUS VALUES %%% //*************************************************************************** #define STATUS_GOOD 0x00 // Status Good #define STATUS_CHKCOND 0x02 // Check Condition #define STATUS_CONDMET 0x04 // Condition Met #define STATUS_BUSY 0x08 // Busy #define STATUS_INTERM 0x10 // Intermediate #define STATUS_INTCDMET 0x14 // Intermediate-condition met #define STATUS_RESCONF 0x18 // Reservation conflict #define STATUS_COMTERM 0x22 // Command Terminated #define STATUS_QFULL 0x28 // Queue full //*************************************************************************** // %%% SCSI MISCELLANEOUS EQUATES %%% //*************************************************************************** #define MAXLUN 7 // Maximum Logical Unit Id #define MAXTARG 7 // Maximum Target Id #define MAX_SCSI_LUNS 64 // Maximum Number of SCSI LUNs #define MAX_NUM_HA 8 // Maximum Number of SCSI HA's //\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ // // %%% SCSI COMMAND OPCODES %%% // ///\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ //*************************************************************************** // %%% Commands for all Device Types %%% //*************************************************************************** #define SCSI_CHANGE_DEF 0x40 // Change Definition (Optional) #define SCSI_COMPARE 0x39 // Compare (O) #define SCSI_COPY 0x18 // Copy (O) #define SCSI_COP_VERIFY 0x3A // Copy and Verify (O) #define SCSI_INQUIRY 0x12 // Inquiry (MANDATORY) #define SCSI_LOG_SELECT 0x4C // Log Select (O) #define SCSI_LOG_SENSE 0x4D // Log Sense (O) #define SCSI_MODE_SEL6 0x15 // Mode Select 6-byte (Device Specific) #define SCSI_MODE_SEL10 0x55 // Mode Select 10-byte (Device Specific) #define SCSI_MODE_SEN6 0x1A // Mode Sense 6-byte (Device Specific) #define SCSI_MODE_SEN10 0x5A // Mode Sense 10-byte (Device Specific) #define SCSI_READ_BUFF 0x3C // Read Buffer (O) #define SCSI_REQ_SENSE 0x03 // Request Sense (MANDATORY) #define SCSI_SEND_DIAG 0x1D // Send Diagnostic (O) #define SCSI_TST_U_RDY 0x00 // Test Unit Ready (MANDATORY) #define SCSI_WRITE_BUFF 0x3B // Write Buffer (O) //*************************************************************************** // %%% Commands Unique to Direct Access Devices %%% //*************************************************************************** #define SCSI_COMPARE 0x39 // Compare (O) #define SCSI_FORMAT 0x04 // Format Unit (MANDATORY) #define SCSI_LCK_UN_CAC 0x36 // Lock Unlock Cache (O) #define SCSI_PREFETCH 0x34 // Prefetch (O) #define SCSI_MED_REMOVL 0x1E // Prevent/Allow medium Removal (O) #define SCSI_READ6 0x08 // Read 6-byte (MANDATORY) #define SCSI_READ10 0x28 // Read 10-byte (MANDATORY) #define SCSI_RD_CAPAC 0x25 // Read Capacity (MANDATORY) #define SCSI_RD_DEFECT 0x37 // Read Defect Data (O) #define SCSI_READ_LONG 0x3E // Read Long (O) #define SCSI_REASS_BLK 0x07 // Reassign Blocks (O) #define SCSI_RCV_DIAG 0x1C // Receive Diagnostic Results (O) #define SCSI_RELEASE 0x17 // Release Unit (MANDATORY) #define SCSI_REZERO 0x01 // Rezero Unit (O) #define SCSI_SRCH_DAT_E 0x31 // Search Data Equal (O) #define SCSI_SRCH_DAT_H 0x30 // Search Data High (O) #define SCSI_SRCH_DAT_L 0x32 // Search Data Low (O) #define SCSI_SEEK6 0x0B // Seek 6-Byte (O) #define SCSI_SEEK10 0x2B // Seek 10-Byte (O) #define SCSI_SEND_DIAG 0x1D // Send Diagnostics (MANDATORY) #define SCSI_SET_LIMIT 0x33 // Set Limits (O) #define SCSI_START_STP 0x1B // Start/Stop Unit (O) #define SCSI_SYNC_CACHE 0x35 // Synchronize Cache (O) #define SCSI_VERIFY 0x2F // Verify (O) #define SCSI_WRITE6 0x0A // Write 6-Byte (MANDATORY) #define SCSI_WRITE10 0x2A // Write 10-Byte (MANDATORY) #define SCSI_WRT_VERIFY 0x2E // Write and Verify (O) #define SCSI_WRITE_LONG 0x3F // Write Long (O) #define SCSI_WRITE_SAME 0x41 // Write Same (O) //*************************************************************************** // %%% Commands Unique to Sequential Access Devices %%% //*************************************************************************** #define SCSI_ERASE 0x19 // Erase (MANDATORY) #define SCSI_LOAD_UN 0x1B // Load/Unload (O) #define SCSI_LOCATE 0x2B // Locate (O) #define SCSI_RD_BLK_LIM 0x05 // Read Block Limits (MANDATORY) #define SCSI_READ_POS 0x34 // Read Position (O) #define SCSI_READ_REV 0x0F // Read Reverse (O) #define SCSI_REC_BF_DAT 0x14 // Recover Buffer Data (O) #define SCSI_RESERVE 0x16 // Reserve Unit (MANDATORY) #define SCSI_REWIND 0x01 // Rewind (MANDATORY) #define SCSI_SPACE 0x11 // Space (MANDATORY) #define SCSI_VERIFY_T 0x13 // Verify (Tape) (O) #define SCSI_WRT_FILE 0x10 // Write Filemarks (MANDATORY) //*************************************************************************** // %%% Commands Unique to Printer Devices %%% //*************************************************************************** #define SCSI_PRINT 0x0A // Print (MANDATORY) #define SCSI_SLEW_PNT 0x0B // Slew and Print (O) #define SCSI_STOP_PNT 0x1B // Stop Print (O) #define SCSI_SYNC_BUFF 0x10 // Synchronize Buffer (O) //*************************************************************************** // %%% Commands Unique to Processor Devices %%% //*************************************************************************** #define SCSI_RECEIVE 0x08 // Receive (O) #define SCSI_SEND 0x0A // Send (O) //*************************************************************************** // %%% Commands Unique to Write-Once Devices %%% //*************************************************************************** #define SCSI_MEDIUM_SCN 0x38 // Medium Scan (O) #define SCSI_SRCHDATE10 0x31 // Search Data Equal 10-Byte (O) #define SCSI_SRCHDATE12 0xB1 // Search Data Equal 12-Byte (O) #define SCSI_SRCHDATH10 0x30 // Search Data High 10-Byte (O) #define SCSI_SRCHDATH12 0xB0 // Search Data High 12-Byte (O) #define SCSI_SRCHDATL10 0x32 // Search Data Low 10-Byte (O) #define SCSI_SRCHDATL12 0xB2 // Search Data Low 12-Byte (O) #define SCSI_SET_LIM_10 0x33 // Set Limits 10-Byte (O) #define SCSI_SET_LIM_12 0xB3 // Set Limits 10-Byte (O) #define SCSI_VERIFY10 0x2F // Verify 10-Byte (O) #define SCSI_VERIFY12 0xAF // Verify 12-Byte (O) #define SCSI_WRITE12 0xAA // Write 12-Byte (O) #define SCSI_WRT_VER10 0x2E // Write and Verify 10-Byte (O) #define SCSI_WRT_VER12 0xAE // Write and Verify 12-Byte (O) //*************************************************************************** // %%% Commands Unique to CD-ROM Devices %%% //*************************************************************************** #define SCSI_PLAYAUD_10 0x45 // Play Audio 10-Byte (O) #define SCSI_PLAYAUD_12 0xA5 // Play Audio 12-Byte 12-Byte (O) #define SCSI_PLAYAUDMSF 0x47 // Play Audio MSF (O) #define SCSI_PLAYA_TKIN 0x48 // Play Audio Track/Index (O) #define SCSI_PLYTKREL10 0x49 // Play Track Relative 10-Byte (O) #define SCSI_PLYTKREL12 0xA9 // Play Track Relative 12-Byte (O) #define SCSI_READCDCAP 0x25 // Read CD-ROM Capacity (MANDATORY) #define SCSI_READHEADER 0x44 // Read Header (O) #define SCSI_SUBCHANNEL 0x42 // Read Subchannel (O) #define SCSI_READ_TOC 0x43 // Read TOC (O) //*************************************************************************** // %%% Commands Unique to Scanner Devices %%% //*************************************************************************** #define SCSI_GETDBSTAT 0x34 // Get Data Buffer Status (O) #define SCSI_GETWINDOW 0x25 // Get Window (O) #define SCSI_OBJECTPOS 0x31 // Object Postion (O) #define SCSI_SCAN 0x1B // Scan (O) #define SCSI_SETWINDOW 0x24 // Set Window (MANDATORY) //*************************************************************************** // %%% Commands Unique to Optical Memory Devices %%% //*************************************************************************** #define SCSI_UpdateBlk 0x3D // Update Block (O) //*************************************************************************** // %%% Commands Unique to Medium Changer Devices %%% //*************************************************************************** #define SCSI_EXCHMEDIUM 0xA6 // Exchange Medium (O) #define SCSI_INITELSTAT 0x07 // Initialize Element Status (O) #define SCSI_POSTOELEM 0x2B // Position to Element (O) #define SCSI_REQ_VE_ADD 0xB5 // Request Volume Element Address (O) #define SCSI_SENDVOLTAG 0xB6 // Send Volume Tag (O) //*************************************************************************** // %%% Commands Unique to Communication Devices %%% //*************************************************************************** #define SCSI_GET_MSG_6 0x08 // Get Message 6-Byte (MANDATORY) #define SCSI_GET_MSG_10 0x28 // Get Message 10-Byte (O) #define SCSI_GET_MSG_12 0xA8 // Get Message 12-Byte (O) #define SCSI_SND_MSG_6 0x0A // Send Message 6-Byte (MANDATORY) #define SCSI_SND_MSG_10 0x2A // Send Message 10-Byte (O) #define SCSI_SND_MSG_12 0xAA // Send Message 12-Byte (O) //\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ // // %%% END OF SCSI COMMAND OPCODES %%% // ///\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ //*************************************************************************** // %%% Request Sense Data Format %%% //*************************************************************************** typedef struct { BYTE ErrorCode; // Error Code (70H or 71H) BYTE SegmentNum; // Number of current segment descriptor BYTE SenseKey; // Sense Key(See bit definitions too) BYTE InfoByte0; // Information MSB BYTE InfoByte1; // Information MID BYTE InfoByte2; // Information MID BYTE InfoByte3; // Information LSB BYTE AddSenLen; // Additional Sense Length BYTE ComSpecInf0; // Command Specific Information MSB BYTE ComSpecInf1; // Command Specific Information MID BYTE ComSpecInf2; // Command Specific Information MID BYTE ComSpecInf3; // Command Specific Information LSB BYTE AddSenseCode; // Additional Sense Code BYTE AddSenQual; // Additional Sense Code Qualifier BYTE FieldRepUCode; // Field Replaceable Unit Code BYTE SenKeySpec15; // Sense Key Specific 15th byte BYTE SenKeySpec16; // Sense Key Specific 16th byte BYTE SenKeySpec17; // Sense Key Specific 17th byte BYTE AddSenseBytes; // Additional Sense Bytes } SENSE_DATA_FMT; //*************************************************************************** // %%% REQUEST SENSE ERROR CODE %%% //*************************************************************************** #define SERROR_CURRENT 0x70 // Current Errors #define SERROR_DEFERED 0x71 // Deferred Errors //*************************************************************************** // %%% REQUEST SENSE BIT DEFINITIONS %%% //*************************************************************************** #define SENSE_VALID 0x80 // Byte 0 Bit 7 #define SENSE_FILEMRK 0x80 // Byte 2 Bit 7 #define SENSE_EOM 0x40 // Byte 2 Bit 6 #define SENSE_ILI 0x20 // Byte 2 Bit 5 //*************************************************************************** // %%% REQUEST SENSE SENSE KEY DEFINITIONS %%% //*************************************************************************** #define KEY_NOSENSE 0x00 // No Sense #define KEY_RECERROR 0x01 // Recovered Error #define KEY_NOTREADY 0x02 // Not Ready #define KEY_MEDIUMERR 0x03 // Medium Error #define KEY_HARDERROR 0x04 // Hardware Error #define KEY_ILLGLREQ 0x05 // Illegal Request #define KEY_UNITATT 0x06 // Unit Attention #define KEY_DATAPROT 0x07 // Data Protect #define KEY_BLANKCHK 0x08 // Blank Check #define KEY_VENDSPEC 0x09 // Vendor Specific #define KEY_COPYABORT 0x0A // Copy Abort #define KEY_EQUAL 0x0C // Equal (Search) #define KEY_VOLOVRFLW 0x0D // Volume Overflow #define KEY_MISCOMP 0x0E // Miscompare (Search) #define KEY_RESERVED 0x0F // Reserved //*************************************************************************** // %%% PERIPHERAL DEVICE TYPE DEFINITIONS %%% //*************************************************************************** #define DTYPE_DASD 0x00 // Disk Device #define DTYPE_SEQD 0x01 // Tape Device #define DTYPE_PRNT 0x02 // Printer #define DTYPE_PROC 0x03 // Processor #define DTYPE_WORM 0x04 // Write-once read-multiple #define DTYPE_CROM 0x05 // CD-ROM device #define DTYPE_CDROM 0x05 // CD-ROM device #define DTYPE_SCAN 0x06 // Scanner device #define DTYPE_OPTI 0x07 // Optical memory device #define DTYPE_JUKE 0x08 // Medium Changer device #define DTYPE_COMM 0x09 // Communications device #define DTYPE_RESL 0x0A // Reserved (low) #define DTYPE_RESH 0x1E // Reserved (high) #define DTYPE_UNKNOWN 0x1F // Unknown or no device type //*************************************************************************** // %%% ANSI APPROVED VERSION DEFINITIONS %%% //*************************************************************************** #define ANSI_MAYBE 0x0 // Device may or may not be ANSI approved stand #define ANSI_SCSI1 0x1 // Device complies to ANSI X3.131-1986 (SCSI-1) #define ANSI_SCSI2 0x2 // Device complies to SCSI-2 #define ANSI_RESLO 0x3 // Reserved (low) #define ANSI_RESHI 0x7 // Reserved (high) aranym-1.1.0/src/include/scc.h0000664000175000017500000000306313454637621014336 0ustar joyjoy/* * scc.h - 85C30 emulation code - declaration * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef SCC_H #define SCC_H #include "icio.h" #include "serial.h" #include "serial_port.h" #define RCA 0 #define TBE 2 #define CTS 5 class SCC : public BASE_IO { private: int active_reg; int scc_regs[32]; uint8 RR3,RR3M;//jc common to channel A & B public: int charcount; SCC(memptr, uint32); ~SCC(); void reset(); void channelAreset(); void channelBreset(); virtual uint8 handleRead(memptr addr); virtual void handleWrite(memptr addr, uint8 value); void IRQ(void); int doInterrupt(void); Serial *serial; }; #endif /* SCC_H */ aranym-1.1.0/src/include/rtc.h0000664000175000017500000000575013454637621014363 0ustar joyjoy/* * rtc.h - Atari NVRAM emulation code - declaration * * Copyright (c) 2001-2008 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _RTC_H #define _RTC_H #include "icio.h" /* NVRAM keyboard setting */ typedef enum { COUNTRY_US, // USA COUNTRY_DE, // Germany COUNTRY_FR, // France COUNTRY_UK, // United Kingdom COUNTRY_ES, // Spain COUNTRY_IT, // Italy COUNTRY_SE, // Sweden COUNTRY_SF, // Switzerland (French) COUNTRY_SG, // Switzerland (German) COUNTRY_TR, // Turkey COUNTRY_FI, // Finland COUNTRY_NO, // Norway COUNTRY_DK, // Denmark COUNTRY_SA, // Saudi Arabia COUNTRY_NL, // Holland COUNTRY_CZ, // Czech Republic COUNTRY_HU, // Hungary // the following entries are from EmuTOS and TOS.HYP (http://toshyp.atari.org/en/003007.html#Cookie_2C_20_AKP) COUNTRY_PL, // Poland COUNTRY_LT, // Lithuania COUNTRY_RU, // Russia COUNTRY_EE, // Estonia COUNTRY_BY, // Belarus COUNTRY_UA, // Ukraine COUNTRY_SK, // Slovak Republic COUNTRY_RO, // Romania COUNTRY_BG, // Bulgaria COUNTRY_SI, // Slovenia COUNTRY_HR, // Croatia COUNTRY_RS, // Serbia COUNTRY_ME, // Montenegro COUNTRY_MK, // Macedonia COUNTRY_GR, // Greece COUNTRY_LV, // Latvia COUNTRY_IL, // Israel COUNTRY_ZA, // South Africa COUNTRY_PT, // Portugal COUNTRY_BE, // Belgium COUNTRY_JP, // Japan COUNTRY_CN, // China COUNTRY_KR, // Korea COUNTRY_VN, // Vietnam COUNTRY_IN, // India COUNTRY_IR, // Iran COUNTRY_MN, // Mongolia COUNTRY_NP, // Nepal COUNTRY_LA, // Lao People's Democratic Republic COUNTRY_KH, // Cambodia COUNTRY_ID, // Indonesia COUNTRY_BD, // Bangladesh COUNTRY_MX = 99, // Mexico (found in Atari sources) } nvram_t; class RTC : public BASE_IO { private: uint8 index; char nvram_filename[512]; struct tm frozen_time; public: RTC(memptr, uint32); virtual ~RTC(); void reset(); void init(void); bool load(void); bool save(void); virtual uint8 handleRead(memptr); virtual void handleWrite(memptr, uint8); nvram_t getNvramKeyboard(void); private: void setAddr(uint8 value); uint8 getData(); void setData(uint8); void setChecksum(); void patch(); void freezeTime(void); struct tm getFrozenTime(void); }; #endif // _RTC_H /* vim:ts=4:sw=4: */ aranym-1.1.0/src/include/romdiff.h0000664000175000017500000000032013454637621015205 0ustar joyjoy #ifndef _romdiff_h #define _romdiff_h typedef struct { unsigned int start; unsigned int value; int len; const unsigned char *patch; } ROMdiff; extern ROMdiff const tosdiff[]; #endif /* !_romdiff_h */ aranym-1.1.0/src/include/parameters.h0000664000175000017500000002057213454637621015735 0ustar joyjoy/* * parameters.h - parameter init/load/save code - header file * * Copyright (c) 2001-2008 ARAnyM developer team (see AUTHORS) * * Authors: * MJ Milan Jurik * Joy Petr Stehlik * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef PARAMETERS_H #define PARAMETERS_H #include "sysdeps.h" #include "SDL_compat.h" #ifndef ARANYMHOME # define ARANYMHOME ".aranym" #endif #ifndef ARANYMCONFIG # define ARANYMCONFIG "config" #endif #ifndef ARANYMNVRAM # define ARANYMNVRAM "nvram" #endif #ifndef ARANYMKEYMAP # define ARANYMKEYMAP "keymap" #endif #ifndef DIRSEPARATOR # define DIRSEPARATOR "/" #endif #define BX_MAX_ATA_CHANNEL 1 #define MAX_ETH 4 enum geo_type { geoCylinders, geoHeads, geoSpt, geoByteswap }; extern int get_geometry(const char *, enum geo_type geo); // External filesystem type #define HOSTFS_MAX_DRIVES 32 typedef struct { bool halfSensitive; char rootPath[512]; char configPath[520]; } bx_aranymfs_drive_t; typedef struct { char symlinks[20]; bx_aranymfs_drive_t drive[HOSTFS_MAX_DRIVES]; } bx_aranymfs_options_t; // Floppy device typedef struct { char path[512]; } bx_floppy_options_t; typedef enum { IDE_NONE, IDE_DISK, IDE_CDROM } device_type_t; // Generic ATA device typedef struct { bool present; // is converted to device_type_t below bool isCDROM; // is converted to device_type_t below device_type_t type; char path[512]; unsigned int cylinders; unsigned int heads; unsigned int spt; bool byteswap; bool readonly; bool status; // inserted = true char model[41]; } bx_atadevice_options_t; // SCSI device typedef struct { bool present; bool byteswap; bool readonly; char path[512]; char partID[3+1]; // 3 chars + EOS ( = '\0') } bx_scsidevice_options_t; // TOS options typedef struct { bool redirect_CON; long cookie_mch; long cookie_akp; char tos_path[512]; char emutos_path[512]; } bx_tos_options_t; // Video output options typedef struct { bool fullscreen; // boot in fullscreen int8 boot_color_depth; // boot color depth uint8 refresh; int8 monitor; // VGA or TV char window_pos[10]; // window position coordinates in the form "123,456" bool single_blit_composing; // whether the screen is composed using a single BitBlit/rectangluar copy bool single_blit_refresh; // whether the composed screen is updated/sent to screen using a single BitBlit/rectangluar copy } bx_video_options_t; // Startup options typedef struct { bool grabMouseAllowed; bool debugger; } bx_startup_options_t; // JIT compiler options typedef struct { bool jit; bool jitfpu; bool jitinline; bool jitdebug; uint32 jitcachesize; uint32 jitlazyflush; char jitblacklist[512]; } bx_jit_options_t; // OpenGL options typedef struct { bool enabled; bool filtered; char library[1024]; } bx_opengl_options_t; // Ethernet options typedef struct { char type[32]; char tunnel[16]; char ip_host[16]; char ip_atari[16]; char netmask[16]; char mac_addr[18]; } bx_ethernet_options_t; // Lilo options typedef struct { char kernel[512]; /* /path/to/vmlinux[.gz] */ char args[512]; /* command line arguments for kernel */ char ramdisk[512]; /* /path/to/ramdisk[.gz] */ bool load_to_fastram; /* load kernel to Fast RAM */ } bx_lilo_options_t; // Midi options typedef struct { char type[32]; /* MIDI output type */ char file[512]; /* /path/to/output */ char sequencer[256]; /* /dev/sequencer */ bool enabled; } bx_midi_options_t; // NfCdrom options typedef struct { int32 physdevtohostdev; } bx_nfcdrom_options_t; // Misc CPU emulation options typedef struct { bool eps_enabled; /* Exception per second limiter enabled ? */ int32 eps_max; /* Maximum tolerated eps before shutdown */ } bx_cpu_options_t; // Autozoom options typedef struct { bool enabled; // Autozoom enabled bool integercoefs; // Autozoom with integer coefficients bool fixedsize; // Keep host screen size constant ? uint32 width; // Wanted host screen size uint32 height; } bx_autozoom_options_t; // NfOSMesa options typedef struct { uint32 channel_size; /* If using libOSMesa[16|32], size of channel */ char libgl[1024]; /* Pathname to libGL */ char libosmesa[1024]; /* Pathname to libOSMesa */ } bx_nfosmesa_options_t; // NatFeats options typedef struct { char cdrom_driver[256]; /* CD-ROM driver */ char vdi_driver[256]; /* VDI driver */ bool hostexec_enabled; } bx_natfeat_options_t; // NFvdi options typedef struct { bool use_host_mouse_cursor; /* Use host mouse cursor */ } bx_nfvdi_options_t; // Parallel port options typedef struct { char type[256]; char file[256]; char parport[256]; bool enabled; } bx_parallel_options_t; // Serial port options typedef struct { char serport[256]; bool enabled; } bx_serial_options_t; // Keyboard and mouse typedef struct { bool wheel_eiffel; // eiffel compatible scancodes for mouse wheel bool altgr; // real AltGr like on Milan } bx_ikbd_options_t; // Hotkeys #define HOTKEYS_STRING_SIZE 60 typedef struct { SDL_Keycode sym; SDL_Keymod mod; } bx_hotkey; typedef struct { bx_hotkey setup; bx_hotkey quit; bx_hotkey warmreboot; bx_hotkey coldreboot; bx_hotkey debug; bx_hotkey ungrab; bx_hotkey fullscreen; bx_hotkey screenshot; bx_hotkey sound; } bx_hotkeys_t; // Audio typedef struct { uint32 freq; uint32 chans; uint32 bits; uint32 samples; bool enabled; } bx_audio_options_t; // Joysticks typedef struct { int32 ikbd0; int32 ikbd1; int32 joypada; char joypada_mapping[256]; int32 joypadb; char joypadb_mapping[256]; } bx_joysticks_options_t; #define DISKS 8 #define CD_MAX_DRIVES 32 // Options typedef struct { bx_floppy_options_t floppy; bx_atadevice_options_t atadevice[BX_MAX_ATA_CHANNEL][2]; bx_scsidevice_options_t disks[DISKS]; bx_aranymfs_options_t aranymfs; bx_video_options_t video; bx_tos_options_t tos; bx_startup_options_t startup; bx_jit_options_t jit; bx_opengl_options_t opengl; bx_ethernet_options_t ethernet[MAX_ETH]; bx_lilo_options_t lilo; bx_midi_options_t midi; bx_ikbd_options_t ikbd; bx_nfcdrom_options_t nfcdroms[ CD_MAX_DRIVES ]; bx_cpu_options_t cpu; bx_autozoom_options_t autozoom; bx_nfosmesa_options_t osmesa; bx_parallel_options_t parallel; bx_serial_options_t serial; bx_natfeat_options_t natfeats; bx_nfvdi_options_t nfvdi; bx_audio_options_t audio; bx_joysticks_options_t joysticks; char bootstrap_path[512]; char bootstrap_args[512]; char bootdrive; uint32 fastram; unsigned long fixed_memory_offset; // FIXME: should be uintptr bool gmtime; bx_hotkeys_t hotkeys; bool newHardDriveSupport; char snapshot_dir[512]; } bx_options_t; extern bx_options_t bx_options; extern uint32 FastRAMSize; // Size of Fast-RAM #if FIXED_ADDRESSING extern uintptr fixed_memory_offset; // Virtual address of atari memory #endif extern char *program_name; extern bool boot_emutos; extern bool boot_lilo; extern bool halt_on_reboot; extern bool decode_switches(int, char **); extern char *getConfFilename(const char *file, char *buffer, unsigned int bufsize); extern char *getDataFilename(const char *file, char *buffer, unsigned int bufsize); char *addFilename(char *buffer, const char *file, unsigned int bufsize); bool setConfigValue(const char *section_name, const char *key, const char *value); void listConfigValues(bool type); char *keysymToString(char *buffer, const bx_hotkey *keysym); bool stringToKeysym(bx_hotkey *keysym, const char *string); char **split_pathlist(const char *pathlist); extern const char *getConfigFile(); void setConfigFile(const char *filename); extern bool loadSettings(const char *); extern bool saveSettings(const char *); extern const struct Config_Section *getConfigSections(void); #endif aranym-1.1.0/src/include/parallel_x86.h0000664000175000017500000000227513454637621016073 0ustar joyjoy/* Parallel port emulation, Linux/X86 hardware access ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _PARALLEL_X86_H #define _PARALLEL_X86_H class ParallelX86: public Parallel { private: int port; int gcontrol; int old_strobe, old_busy; void set_ctrl(int); void clr_ctrl(int); public: ParallelX86(void); ~ParallelX86(void); void reset(void); void setDirection(bool out); uint8 getData(); void setData(uint8 value); uint8 getBusy(); void setStrobe(bool high); }; #endif /* _PARALLEL_X86_H */ aranym-1.1.0/src/include/parallel_parport.h0000664000175000017500000000217613454637621017135 0ustar joyjoy/* Parallel port emulation, Linux /dev/parport driver ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _PARALLEL_PARPORT_H #define _PARALLEL_PARPORT_H class ParallelParport: public Parallel { private: int handle; public: ParallelParport(void); ~ParallelParport(void); void reset(void); void setDirection(bool out); uint8 getData(); void setData(uint8 value); uint8 getBusy(); void setStrobe(bool high); }; #endif /* _PARALLEL_PARPORT_H */ aranym-1.1.0/src/include/parallel_file.h0000664000175000017500000000230513454637621016357 0ustar joyjoy/* Parallel port emulation, output to file ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _PARALLEL_FILE_H #define _PARALLEL_FILE_H class ParallelFile: public Parallel { private: int close_handle; /* Close handle at end of usage ? */ FILE *handle; /* Handle to file/stdout/stderr output */ public: ParallelFile(void); ~ParallelFile(void); void reset(void); void setDirection(bool out); uint8 getData(); void setData(uint8 value); uint8 getBusy(); void setStrobe(bool high); }; #endif /* _PARALLEL_FILE_H */ aranym-1.1.0/src/include/parallel.h0000664000175000017500000000214613454637621015363 0ustar joyjoy/* Parallel port emulation, base class ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _PARALLEL_H #define _PARALLEL_H #include "sysdeps.h" class Parallel { public: Parallel(void); virtual ~Parallel(void); virtual void reset(void); virtual void setDirection(bool out); virtual uint8 getData(); virtual void setData(uint8 value); virtual uint8 getBusy(); virtual void setStrobe(bool high); }; #endif /* _PARALLEL_H */ aranym-1.1.0/src/include/ndebug.h0000664000175000017500000001201413454637621015026 0ustar joyjoy/* * ndebug.h - new ARAnyM fullscreen debugger - header file * * Copyright (c) 2001-2006 Milan Jurik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* MJ 2001 */ #ifndef NDEBUG_H #define NDEBUG_H #include "sysdeps.h" #include "identify.h" #include "memory-uae.h" #include "cpu_emulation.h" # include class ndebug { #ifdef DEBUGGER typedef enum {EQUAL_value_test_8, EQUAL_value_test_16, EQUAL_value_test_32, CHANGE_value_test_8, CHANGE_value_test_16, CHANGE_value_test_32 } value_test_t; static const unsigned int max_breakpoints = 256; #ifdef HAVE_TERMIOS_H static termios savetty; #endif static bool issavettyvalid; static unsigned int rowlen; static const unsigned int dbsize = 1000; static unsigned int warnlen; static char **dbbuffer; static unsigned int dbstart; static unsigned int dbend; static unsigned int dbfull; static unsigned int actualrow; static unsigned int tp; static uaecptr skipaddr; static bool do_skip_value; static uaecptr value_addr; static uint32 value; static value_test_t value_test; static unsigned int do_breakpoints; static bool breakpoint[max_breakpoints]; static uaecptr breakpoint_address[max_breakpoints]; static char old_debug_cmd[80]; static void reset_actualrow(); static void set_actualrow(signed int); static unsigned int get_len(); // { return 25; } static unsigned int get_warnlen() { return warnlen = get_len() - 12; } static unsigned int get_rowlen() { return rowlen; } static void warn_print(FILE *); static void m68k_print(FILE *); static void instr_print(FILE *); static void show(FILE *); static void showHelp(FILE *); static void set_Ax(char **); static void set_Dx(char **); static void set_Px(char **); static void set_Sx(char **); static void saveintofile(FILE *, char **); static void errorintofile(FILE *, char **); static void loadintomemory(FILE *, char **); static void convertNo(char **); static uae_u32 readhex(char, char **); static uae_u32 readoct(char, char **); static uae_u32 readdec(char, char **); static uae_u32 readbin(char, char **); static char *dectobin(uae_u32); static void pressenkey(FILE *f) { char input[80]; fprintf(f, "Press ENTER\n"); fflush(f); if (fgets(input, 80, stdin) == NULL) { fprintf(stderr, "Internal error!\n"); return; } } static char next_char(char **c) { ignore_ws (c); return *(*c)++; } static void ignore_ws(char **c); static int more_params(char **c) { ignore_ws (c); return (**c) != 0; } static uae_u32 readhex(char **c) { uae_u32 val = 0; char nc; ignore_ws (c); while (isxdigit(nc = **c)) { (*c)++; val *= 16; nc = toupper(nc); if (isdigit(nc)) { val += nc - '0'; } else { val += nc - 'A' + 10; } } return val; } static void dump_traps(FILE *f) { for (int i = 0; trap_labels[i].name; i++) { fprintf(f, "$%02x: %s\t $%08x\n", trap_labels[i].adr, trap_labels[i].name, ReadAtariInt32(trap_labels[i].adr)); } } static void dump_ints(FILE *f) { for (int i = 0; int_labels[i].name; i++) { fprintf(f, "$%02x: %s\t $%08x\n", int_labels[i].adr, int_labels[i].name, ReadAtariInt32(int_labels[i].adr)); } } static void dumpmem(FILE *, uaecptr, uaecptr *, unsigned int); static void writeintomem(FILE *, char **); static void backtrace(FILE *, unsigned int); static void log2phys(FILE *, uaecptr); static void showTypes(); static int canon(FILE *, uaecptr, uaecptr &, uaecptr &); static int icanon(FILE *, uaecptr, uaecptr &, uaecptr &); static int dm(FILE *, uaecptr, uaecptr &, uaecptr &); #endif /* DEBUGGER */ public: static void dbprintf(const char *, ...) __attribute__((format(__printf__, 1, 2))); static void pdbprintf(const char *, ...) __attribute__((format(__printf__, 1, 2))); static void pdbvprintf(const char *, va_list args) __attribute__((format(__printf__, 1, 0))); #ifdef DEBUGGER static bool do_skip; static void run(); static void init(); static void nexit(); #endif #ifdef FULL_HISTORY static void showHistory(unsigned int, bool showLast = true); #endif }; extern "C" void guialert(const char *, ...) __attribute__((format(__printf__, 1, 2))); #endif aranym-1.1.0/src/include/ncr5380.h0000664000175000017500000000226513454637621014673 0ustar joyjoy/* * Atari Falcon NCR5380 SCSI emulation * * ARAnyM (C) 2003 Patrice Mandin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _NCR5380_H #define _NCR5380_H /*--- Includes ---*/ #include "icio.h" /*--- NCR5380 class ---*/ class NCR5380 { private: uae_u8 hd_status; uae_u8 hd_count; uae_u8 hd_initiator; uae_u8 hd_mode; public: NCR5380(void); ~NCR5380(void); void reset(void); uae_u8 ReadData(uae_u16 control); void WriteData(uae_u16 control, uae_u8 data); }; #endif /* _NCR5380_H */ aranym-1.1.0/src/include/natfeats.h0000664000175000017500000001052613454637621015375 0ustar joyjoy/* * natfeats.h - common functions for all NatFeats * * Copyright (c) 2001-2013 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _NATFEATS_H #define _NATFEATS_H #include "sysdeps.h" #include "cpu_emulation.h" // NatFeats CPU handlers extern uint32 nf_get_id(memptr); extern int32 nf_call(memptr, bool); // NatFeats call for getting parameters extern uint32 nf_getparameter(int); // should NatFeats work with physical (not MMU mapped) addresses #define NATFEAT_PHYS_ADDR 1 // should NatFeats use direct memcpy() to/from guest provided pointer (fast but less safe) #define NATFEAT_LIBC_MEMCPY 1 #if NATFEAT_PHYS_ADDR # define ReadNFInt8 ReadAtariInt8 # define ReadNFInt16 ReadAtariInt16 # define ReadNFInt32 ReadAtariInt32 # define ReadNFInt64 ReadAtariInt64 # define WriteNFInt8 WriteAtariInt8 # define WriteNFInt16 WriteAtariInt16 # define WriteNFInt32 WriteAtariInt32 # define WriteNFInt64 WriteAtariInt64 #else # define ReadNFInt8 ReadInt8 # define ReadNFInt16 ReadInt16 # define ReadNFInt32 ReadInt32 # define ReadNFInt64 ReadInt64 # define WriteNFInt8 WriteInt8 # define WriteNFInt16 WriteInt16 # define WriteNFInt32 WriteInt32 # define WriteNFInt64 WriteInt64 #endif static inline void Atari2Host_memcpy(void *_dst, memptr src, size_t count) { #if NATFEAT_LIBC_MEMCPY && NATFEAT_PHYS_ADDR memptr src_end = src + count - 1; if (! ValidAtariAddr(src, false, 1)) BUS_ERROR(src); if (! ValidAtariAddr(src_end, false, 1)) BUS_ERROR(src_end); memcpy(_dst, Atari2HostAddr(src), count); #else uint8 *dst = (uint8 *)_dst; while ( count-- ) *dst++ = (char)ReadNFInt8( src++ ); #endif } static inline void Host2Atari_memcpy(memptr dst, const void *_src, size_t count) { #if NATFEAT_LIBC_MEMCPY && NATFEAT_PHYS_ADDR memptr dst_end = dst + count - 1; if (! ValidAtariAddr(dst, true, 1)) BUS_ERROR(dst); if (! ValidAtariAddr(dst_end, true, 1)) BUS_ERROR(dst_end); memcpy(Atari2HostAddr(dst), _src, count); #else uint8 *src = (uint8 *)_src; while ( count-- ) WriteNFInt8( dst++, *src++ ); #endif } static inline void Atari2HostSafeStrncpy(char *dst, memptr src, size_t count) { #if NATFEAT_LIBC_MEMCPY && NATFEAT_PHYS_ADDR memptr src_end = src + count - 1; if (! ValidAtariAddr(src, false, 1)) BUS_ERROR(src); if (! ValidAtariAddr(src_end, false, 1)) BUS_ERROR(src_end); safe_strncpy(dst, (const char*)Atari2HostAddr(src), count); #else while ( count > 1 && (*dst = (char)ReadNFInt8( src++ )) != 0 ) { count--; dst++; } if (count > 0) *dst = '\0'; #endif } static inline void Host2AtariSafeStrncpy(memptr dst, const char *src, size_t count) { #if NATFEAT_LIBC_MEMCPY && NATFEAT_PHYS_ADDR memptr dst_end = dst + count - 1; if (! ValidAtariAddr(dst, true, 1)) BUS_ERROR(dst); if (! ValidAtariAddr(dst_end, true, 1)) BUS_ERROR(dst_end); safe_strncpy((char *)Atari2HostAddr(dst), src, count); #else while ( count > 1 && *src ) { WriteNFInt8( dst++, (uint8)*src++ ); count--; } if (count > 0) WriteNFInt8( dst, 0 ); #endif } static inline size_t Atari2HostSafeStrlen(memptr src) { if (!src) return 0; size_t count = 1; #if NATFEAT_LIBC_MEMCPY && NATFEAT_PHYS_ADDR for (;;) { if (! ValidAtariAddr(src, false, 1)) BUS_ERROR(src); char c = ReadNFInt8(src); if (!c) break; count++; src += 1; } #else while ((char)ReadNFInt8( src++ )) != 0 ) { count++; } #endif return count; } void Atari2HostUtf8Copy(char *dst, memptr src, size_t count); void Host2AtariUtf8Copy(memptr dst, const char *src, size_t count); void charset_conv_error(unsigned short ch); #endif /* _NATFEATS_H */ aranym-1.1.0/src/include/mmu.h0000664000175000017500000000226713454637621014371 0ustar joyjoy/* * mmu.h - Atari Falcon MMU emulation code - declaration * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "icio.h" class MMU : public BASE_IO { private: uint8 memctl; public: MMU(memptr, uint32); void reset(); virtual uint8 handleRead(memptr addr); virtual void handleWrite(memptr addr, uint8 value); }; aranym-1.1.0/src/include/midi_sequencer.h0000664000175000017500000000216513454637621016564 0ustar joyjoy/* Atari MIDI emulation, output to sequencer device ARAnyM (C) 2005-2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _MIDI_SEQUENCER_H #define _MIDI_SEQUENCER_H #include "midi.h" class MidiSequencer: public MIDI { private: unsigned char packet[4]; public: MidiSequencer(memptr, uint32); ~MidiSequencer(); void WriteData(uint8); virtual void enable(bool bEnable); virtual const char *type() { return "sequencer"; } }; #endif /* _MIDI_SEQUENCER_H */ aranym-1.1.0/src/include/midi_file.h0000664000175000017500000000204013454637621015501 0ustar joyjoy/* Atari MIDI emulation, output to file ARAnyM (C) 2005-2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _MIDI_FILE_H #define _MIDI_FILE_H #include "midi.h" class MidiFile: public MIDI { public: MidiFile(memptr, uint32); ~MidiFile(); void WriteData(uint8); virtual void enable(bool bEnable); virtual const char *type() { return "file"; } }; #endif /* _MIDI_FILE_H */ aranym-1.1.0/src/include/midi.h0000664000175000017500000000205013454637621014503 0ustar joyjoy/* Atari MIDI emulation ARAnyM (C) 2005-2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _MIDI_H #define _MIDI_H #include "acia.h" class MIDI: public ACIA { protected: int fd; virtual void close(void); public: MIDI(memptr, uint32); virtual ~MIDI(); virtual void reset(void); virtual void enable(bool bEnable) = 0; virtual const char *type() = 0; }; #endif /* _MIDI_H */ aranym-1.1.0/src/include/mfp.h0000664000175000017500000000461713454637621014356 0ustar joyjoy/* * mfp.h - MFP emulation - declaration * * Copyright (c) 2001-2005 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _MFP_H #define _MFP_H #include "icio.h" class MFP_Timer { private: uint8 control; uint8 start_data, current_data; bool state; char name; protected: bool isRunning(); public: MFP_Timer(int); void reset(); void setControl(uint8); uint8 getControl(); void setData(uint8); uint8 getData(); void resetCounter(); int compute_timer_freq(); }; class MFP_TimerA:public MFP_Timer { public: MFP_TimerA() : MFP_Timer(0) {}; }; class MFP_TimerB:public MFP_Timer { public: MFP_TimerB() : MFP_Timer(1) {}; }; class MFP_TimerC:public MFP_Timer { public: MFP_TimerC() : MFP_Timer(2) {}; }; class MFP_TimerD:public MFP_Timer { public: MFP_TimerD() : MFP_Timer(3) {}; }; class USART { public: uint8 synchar; uint8 control; uint8 rxstat; uint8 txstat; uint8 data; }; /*****************************************************************/ class MFP : public BASE_IO { private: uint8 input; uint8 GPIP_data; uint8 active_edge; uint8 data_direction; uint16 irq_enable; uint16 irq_pending; uint16 irq_inservice; uint16 irq_mask; MFP_TimerA A; MFP_TimerB B; MFP_TimerC C; MFP_TimerD D; // USART usart; int timerCounter; int vr; public: MFP(memptr addr, uint32 size); void reset(); virtual uint8 handleRead(memptr); virtual void handleWrite(memptr, uint8); void IRQ(int, int count); void setGPIPbit(int mask, int value); int doInterrupt(void); int timerC_ms_ticks(); private: void set_active_edge(uint8 value); }; #endif /* _MFP_H */ aranym-1.1.0/src/include/main.h0000664000175000017500000000372013454637621014512 0ustar joyjoy/* * main.h - general definitions * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * Inspired by Christian Bauer's Basilisk II * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef MAIN_H #define MAIN_H #include "sysdeps.h" // CPU type (0 = 68000, 1 = 68010, 2 = 68020, 3 = 68030, 4 = 68040/060) extern int CPUType; // FPU type (0 = no FPU, 1 = 68881, 2 = 68882) extern int FPUType; // 68k register structure (for Execute68k()) struct M68kRegisters { uint32 d[8]; memptr a[8]; uint16 sr; memptr usp, isp, msp; memptr pc; }; #ifdef SDL_GUI extern bool isGuiAvailable; extern bool startupGUI; extern char *startupAlert; #endif // General functions extern bool InitAll(void); extern void ExitAll(void); extern void RestartAll(bool cold = false); extern void invoke200HzInterrupt(void); #ifdef OS_irix extern void setactvdebug(); #else extern void setactvdebug(int); #endif // Platform-specific functions extern void QuitEmulator(int exitcode = EXIT_FAILURE); // Quit emulator #if FIXED_ADDRESSING bool allocate_all_memory(uintptr fmemory, bool quiet); #else bool allocate_all_memory(bool quiet); #endif void release_all_memory(void); #endif aranym-1.1.0/src/include/logo.h0000664000175000017500000000217313454637621014527 0ustar joyjoy/* Logo (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef LOGO_H #define LOGO_H 1 #ifndef LOGO_FILENAME #define LOGO_FILENAME "logo.bmp" #endif class HostSurface; /*--- Logo class ---*/ class Logo { private: SDL_Surface *logo_surf; HostSurface *surface; int opacity; void load(const char *filename); public: Logo(const char *filename); virtual ~Logo(); HostSurface *getSurface(void); void alphaBlend(bool init); }; #endif /* LOGO_H */ aranym-1.1.0/src/include/linux/0000775000175000017500000000000013454637621014552 5ustar joyjoyaranym-1.1.0/src/include/linux/libcwrap.h0000664000175000017500000013517113454637621016536 0ustar joyjoy/* glibc bindings for target ABI version glibc 2.11 */ #if defined(__linux__) && !defined (__LIBC_CUSTOM_BINDINGS_H__) && !defined(__ANDROID__) #if defined (__cplusplus) extern "C" { #endif #undef SYMVER #undef SYMVER1 #ifdef __ASSEMBLER__ #define SYMVER1(name, ver) .symver name, name##@##ver #else #define SYMVER1(name, ver) __asm__(".symver " #name ", " #name "@" #ver ); #endif #define SYMVER(name, ver) SYMVER1(name, ver) #if defined(__i386__) || defined(__x86_64__) /* Symbols redirected to earlier glibc versions */ SYMVER(__longjmp_chk, GLIBC_2.11) SYMVER(_sys_errlist, GLIBC_2.4) SYMVER(_sys_nerr, GLIBC_2.4) #if defined(__x86_64__) SYMVER(clock_getcpuclockid, GLIBC_2.2.5) SYMVER(clock_getres, GLIBC_2.2.5) SYMVER(clock_gettime, GLIBC_2.2.5) SYMVER(clock_nanosleep, GLIBC_2.2.5) SYMVER(clock_settime, GLIBC_2.2.5) #else SYMVER(clock_getcpuclockid, GLIBC_2.2) SYMVER(clock_getres, GLIBC_2.2) SYMVER(clock_gettime, GLIBC_2.2) SYMVER(clock_nanosleep, GLIBC_2.2) SYMVER(clock_settime, GLIBC_2.2) #endif SYMVER(execvpe, GLIBC_2.11) #if defined(__i386__) SYMVER(fallocate64, GLIBC_2.11) #endif #if defined(__x86_64__) SYMVER(exp2f, GLIBC_2.2.5) SYMVER(expf, GLIBC_2.2.5) SYMVER(fmemopen, GLIBC_2.2.5) SYMVER(glob, GLIBC_2.2.5) SYMVER(glob64, GLIBC_2.2.5) SYMVER(lgamma, GLIBC_2.2.5) SYMVER(lgammaf, GLIBC_2.2.5) SYMVER(lgammal, GLIBC_2.2.5) SYMVER(log2f, GLIBC_2.2.5) SYMVER(logf, GLIBC_2.2.5) SYMVER(memcpy, GLIBC_2.2.5) #else SYMVER(fmemopen, GLIBC_2.2) SYMVER(lgamma, GLIBC_2.0) SYMVER(lgammaf, GLIBC_2.0) SYMVER(lgammal, GLIBC_2.0) #endif SYMVER(mkostemps, GLIBC_2.11) SYMVER(mkostemps64, GLIBC_2.11) SYMVER(mkstemps, GLIBC_2.11) SYMVER(mkstemps64, GLIBC_2.11) #if defined(__x86_64__) SYMVER(posix_spawn, GLIBC_2.2.5) SYMVER(posix_spawnp, GLIBC_2.2.5) SYMVER(powf, GLIBC_2.2.5) #else SYMVER(posix_spawn, GLIBC_2.2) SYMVER(posix_spawnp, GLIBC_2.2) #endif SYMVER(pthread_sigqueue, GLIBC_2.11) SYMVER(quick_exit, GLIBC_2.10) SYMVER(sys_errlist, GLIBC_2.4) SYMVER(sys_nerr, GLIBC_2.4) /* Symbols introduced in newer glibc versions, which must not be used */ SYMVER(_ZGVbN2v_cos, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVbN2v_exp, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVbN2v_log, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVbN2v_sin, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVbN2vv_pow, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVbN2vvv_sincos, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVbN4v_cosf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVbN4v_expf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVbN4v_logf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVbN4v_sinf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVbN4vv_powf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVbN4vvv_sincosf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVcN4v_cos, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVcN4v_exp, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVcN4v_log, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVcN4v_sin, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVcN4vv_pow, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVcN4vvv_sincos, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVcN8v_cosf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVcN8v_expf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVcN8v_logf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVcN8v_sinf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVcN8vv_powf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVcN8vvv_sincosf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVdN4v_cos, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVdN4v_exp, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVdN4v_log, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVdN4v_sin, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVdN4vv_pow, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVdN4vvv_sincos, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVdN8v_cosf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVdN8v_expf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVdN8v_logf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVdN8v_sinf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVdN8vv_powf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVdN8vvv_sincosf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVeN16v_cosf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVeN16v_expf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVeN16v_logf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVeN16v_sinf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVeN16vv_powf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVeN16vvv_sincosf, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVeN8v_cos, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVeN8v_exp, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVeN8v_log, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVeN8v_sin, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVeN8vv_pow, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(_ZGVeN8vvv_sincos, GLIBC_DONT_USE_THIS_VERSION_2.22) SYMVER(__acos_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__acosf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__acosf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__acosh_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__acoshf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__acoshf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__acoshl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__acosl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__asin_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__asinf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__asinf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__asinl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__atan2_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__atan2f128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__atan2f_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__atan2l_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__atanh_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__atanhf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__atanhf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__atanhl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__cosh_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__coshf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__coshf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__coshl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__cxa_thread_atexit_impl, GLIBC_DONT_USE_THIS_VERSION_2.18) SYMVER(__exp10_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__exp10f128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__exp10f_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__exp10l_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__exp2_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__exp2f128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__exp2f_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__exp2l_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__exp_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__expf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__expf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__expl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__explicit_bzero_chk, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(__fdelt_chk, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__fdelt_warn, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__fentry__, GLIBC_DONT_USE_THIS_VERSION_2.13) SYMVER(__finitef128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__fmod_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__fmodf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__fmodf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__fmodl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__fpclassifyf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__gamma_r_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__gammaf128_r_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__gammaf_r_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__gammal_r_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__getauxval, GLIBC_DONT_USE_THIS_VERSION_2.16) SYMVER(__hypot_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__hypotf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__hypotf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__hypotl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__iscanonicall, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(__iseqsig, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(__iseqsigf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(__iseqsigf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__iseqsigl, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(__isinff128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__isnanf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__issignaling, GLIBC_DONT_USE_THIS_VERSION_2.18) SYMVER(__issignalingf, GLIBC_DONT_USE_THIS_VERSION_2.18) SYMVER(__issignalingf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__issignalingl, GLIBC_DONT_USE_THIS_VERSION_2.18) SYMVER(__j0_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__j0f128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__j0f_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__j0l_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__j1_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__j1f128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__j1f_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__j1l_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__jn_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__jnf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__jnf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__jnl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__lgamma_r_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__lgammaf128_r_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__lgammaf_r_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__lgammal_r_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__log10_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__log10f128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__log10f_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__log10l_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__log2_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__log2f128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__log2f_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__log2l_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__log_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__logf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__logf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__logl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__poll_chk, GLIBC_DONT_USE_THIS_VERSION_2.16) SYMVER(__pow_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__powf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__powf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__powl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__ppoll_chk, GLIBC_DONT_USE_THIS_VERSION_2.16) SYMVER(__remainder_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__remainderf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__remainderf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__remainderl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__scalb_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__scalbf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__scalbl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__signbitf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__signgam, GLIBC_DONT_USE_THIS_VERSION_2.23) SYMVER(__sinh_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__sinhf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__sinhf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__sinhl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__sqrt_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__sqrtf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__sqrtf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__sqrtl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__strtof128_internal, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__wcstof128_internal, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__y0_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__y0f128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__y0f_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__y0l_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__y1_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__y1f128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__y1f_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__y1l_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__yn_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__ynf128_finite, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(__ynf_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(__ynl_finite, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(acosf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(acosf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(acosf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(acosf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(acosf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(acoshf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(acoshf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(acoshf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(acoshf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(acoshf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(aligned_alloc, GLIBC_DONT_USE_THIS_VERSION_2.16) SYMVER(asinf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(asinf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(asinf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(asinf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(asinf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(asinhf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(asinhf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(asinhf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(asinhf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(asinhf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(atan2f128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(atan2f32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(atan2f32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(atan2f64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(atan2f64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(atanf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(atanf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(atanf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(atanf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(atanf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(atanhf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(atanhf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(atanhf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(atanhf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(atanhf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(c16rtomb, GLIBC_DONT_USE_THIS_VERSION_2.16) SYMVER(c32rtomb, GLIBC_DONT_USE_THIS_VERSION_2.16) SYMVER(cabsf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(cabsf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cabsf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cabsf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cabsf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cacosf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(cacosf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cacosf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cacosf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cacosf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cacoshf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(cacoshf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cacoshf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cacoshf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cacoshf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(canonicalize, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(canonicalizef, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(canonicalizef128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(canonicalizef32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(canonicalizef32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(canonicalizef64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(canonicalizef64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(canonicalizel, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(cargf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(cargf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cargf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cargf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cargf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(casinf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(casinf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(casinf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(casinf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(casinf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(casinhf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(casinhf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(casinhf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(casinhf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(casinhf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(catanf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(catanf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(catanf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(catanf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(catanf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(catanhf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(catanhf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(catanhf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(catanhf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(catanhf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cbrtf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(cbrtf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cbrtf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cbrtf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cbrtf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ccosf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(ccosf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ccosf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ccosf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ccosf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ccoshf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(ccoshf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ccoshf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ccoshf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ccoshf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ceilf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(ceilf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ceilf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ceilf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ceilf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cexpf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(cexpf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cexpf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cexpf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cexpf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cimagf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(cimagf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cimagf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cimagf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cimagf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(clock_adjtime, GLIBC_DONT_USE_THIS_VERSION_2.14) SYMVER(clog10f128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(clog10f32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(clog10f32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(clog10f64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(clog10f64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(clogf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(clogf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(clogf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(clogf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(clogf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(conjf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(conjf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(conjf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(conjf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(conjf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(copy_file_range, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(copysignf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(copysignf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(copysignf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(copysignf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(copysignf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cosf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(cosf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cosf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cosf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cosf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(coshf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(coshf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(coshf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(coshf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(coshf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cpowf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(cpowf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cpowf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cpowf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cpowf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cprojf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(cprojf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cprojf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cprojf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(cprojf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(crealf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(crealf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(crealf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(crealf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(crealf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(csinf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(csinf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(csinf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(csinf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(csinf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(csinhf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(csinhf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(csinhf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(csinhf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(csinhf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(csqrtf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(csqrtf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(csqrtf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(csqrtf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(csqrtf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ctanf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(ctanf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ctanf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ctanf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ctanf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ctanhf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(ctanhf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ctanhf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ctanhf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ctanhf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(erfcf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(erfcf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(erfcf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(erfcf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(erfcf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(erff128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(erff32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(erff32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(erff64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(erff64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(exp10f128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(exp10f32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(exp10f32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(exp10f64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(exp10f64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(exp2f128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(exp2f32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(exp2f32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(exp2f64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(exp2f64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(expf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(expf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(expf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(expf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(expf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(explicit_bzero, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(expm1f128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(expm1f32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(expm1f32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(expm1f64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(expm1f64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fabsf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(fabsf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fabsf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fabsf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fabsf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fanotify_init, GLIBC_DONT_USE_THIS_VERSION_2.13) SYMVER(fanotify_mark, GLIBC_DONT_USE_THIS_VERSION_2.13) SYMVER(fdimf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(fdimf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fdimf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fdimf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fdimf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fegetmode, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fesetexcept, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fesetmode, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fetestexceptflag, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(floorf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(floorf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(floorf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(floorf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(floorf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmaf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(fmaf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmaf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmaf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmaf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmaxf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(fmaxf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmaxf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmaxf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmaxf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmaxmag, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fmaxmagf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fmaxmagf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(fmaxmagf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmaxmagf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmaxmagf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmaxmagf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmaxmagl, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fminf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(fminf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fminf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fminf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fminf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fminmag, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fminmagf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fminmagf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(fminmagf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fminmagf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fminmagf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fminmagf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fminmagl, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fmodf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(fmodf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmodf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmodf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fmodf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(frexpf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(frexpf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(frexpf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(frexpf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(frexpf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fromfp, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fromfpf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fromfpf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(fromfpf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fromfpf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fromfpf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fromfpf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fromfpl, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fromfpx, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fromfpxf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fromfpxf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(fromfpxf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fromfpxf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fromfpxf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fromfpxf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(fromfpxl, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(fts64_children, GLIBC_DONT_USE_THIS_VERSION_2.23) SYMVER(fts64_close, GLIBC_DONT_USE_THIS_VERSION_2.23) SYMVER(fts64_open, GLIBC_DONT_USE_THIS_VERSION_2.23) SYMVER(fts64_read, GLIBC_DONT_USE_THIS_VERSION_2.23) SYMVER(fts64_set, GLIBC_DONT_USE_THIS_VERSION_2.23) SYMVER(getauxval, GLIBC_DONT_USE_THIS_VERSION_2.16) SYMVER(getentropy, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(getpayload, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(getpayloadf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(getpayloadf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(getpayloadf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(getpayloadf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(getpayloadf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(getpayloadf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(getpayloadl, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(getrandom, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(hypotf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(hypotf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(hypotf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(hypotf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(hypotf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ilogbf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(ilogbf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ilogbf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ilogbf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ilogbf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(j0f128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(j0f32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(j0f32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(j0f64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(j0f64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(j1f128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(j1f32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(j1f32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(j1f64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(j1f64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(jnf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(jnf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(jnf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(jnf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(jnf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ldexpf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(ldexpf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ldexpf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ldexpf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ldexpf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lgammaf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(lgammaf128_r, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(lgammaf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lgammaf32_r, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lgammaf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lgammaf32x_r, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lgammaf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lgammaf64_r, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lgammaf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lgammaf64x_r, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(llogb, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(llogbf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(llogbf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(llogbf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(llogbf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(llogbf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(llogbf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(llogbl, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(llrintf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(llrintf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(llrintf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(llrintf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(llrintf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(llroundf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(llroundf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(llroundf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(llroundf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(llroundf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(log10f128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(log10f32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(log10f32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(log10f64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(log10f64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(log1pf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(log1pf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(log1pf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(log1pf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(log1pf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(log2f128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(log2f32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(log2f32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(log2f64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(log2f64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(logbf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(logbf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(logbf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(logbf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(logbf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(logf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(logf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(logf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(logf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(logf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lrintf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(lrintf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lrintf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lrintf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lrintf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lroundf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(lroundf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lroundf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lroundf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(lroundf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(mbrtoc16, GLIBC_DONT_USE_THIS_VERSION_2.16) SYMVER(mbrtoc32, GLIBC_DONT_USE_THIS_VERSION_2.16) SYMVER(memfd_create, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(mlock2, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(modff128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(modff32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(modff32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(modff64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(modff64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(name_to_handle_at, GLIBC_DONT_USE_THIS_VERSION_2.14) SYMVER(nanf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(nanf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nanf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nanf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nanf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nearbyintf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(nearbyintf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nearbyintf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nearbyintf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nearbyintf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nextafterf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(nextafterf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nextafterf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nextafterf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nextafterf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nextdown, GLIBC_DONT_USE_THIS_VERSION_2.24) SYMVER(nextdownf, GLIBC_DONT_USE_THIS_VERSION_2.24) SYMVER(nextdownf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(nextdownf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nextdownf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nextdownf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nextdownf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nextdownl, GLIBC_DONT_USE_THIS_VERSION_2.24) SYMVER(nextup, GLIBC_DONT_USE_THIS_VERSION_2.24) SYMVER(nextupf, GLIBC_DONT_USE_THIS_VERSION_2.24) SYMVER(nextupf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(nextupf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nextupf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nextupf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nextupf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(nextupl, GLIBC_DONT_USE_THIS_VERSION_2.24) SYMVER(ntp_gettimex, GLIBC_DONT_USE_THIS_VERSION_2.12) SYMVER(open_by_handle_at, GLIBC_DONT_USE_THIS_VERSION_2.14) SYMVER(pkey_alloc, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(pkey_free, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(pkey_get, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(pkey_mprotect, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(pkey_set, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(powf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(powf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(powf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(powf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(powf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(preadv2, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(preadv64v2, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(prlimit, GLIBC_DONT_USE_THIS_VERSION_2.13) SYMVER(prlimit64, GLIBC_DONT_USE_THIS_VERSION_2.13) SYMVER(process_vm_readv, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(process_vm_writev, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(pthread_getattr_default_np, GLIBC_DONT_USE_THIS_VERSION_2.18) SYMVER(pthread_getname_np, GLIBC_DONT_USE_THIS_VERSION_2.12) SYMVER(pthread_mutex_consistent, GLIBC_DONT_USE_THIS_VERSION_2.12) SYMVER(pthread_mutexattr_getrobust, GLIBC_DONT_USE_THIS_VERSION_2.12) SYMVER(pthread_mutexattr_setrobust, GLIBC_DONT_USE_THIS_VERSION_2.12) SYMVER(pthread_setattr_default_np, GLIBC_DONT_USE_THIS_VERSION_2.18) SYMVER(pthread_setname_np, GLIBC_DONT_USE_THIS_VERSION_2.12) SYMVER(pwritev2, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(pwritev64v2, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(reallocarray, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(recvmmsg, GLIBC_DONT_USE_THIS_VERSION_2.12) SYMVER(remainderf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(remainderf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(remainderf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(remainderf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(remainderf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(remquof128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(remquof32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(remquof32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(remquof64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(remquof64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(rintf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(rintf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(rintf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(rintf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(rintf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(roundeven, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(roundevenf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(roundevenf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(roundevenf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(roundevenf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(roundevenf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(roundevenf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(roundevenl, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(roundf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(roundf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(roundf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(roundf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(roundf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(scalblnf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(scalblnf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(scalblnf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(scalblnf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(scalblnf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(scalbnf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(scalbnf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(scalbnf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(scalbnf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(scalbnf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(scandirat, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(scandirat64, GLIBC_DONT_USE_THIS_VERSION_2.15) SYMVER(secure_getenv, GLIBC_DONT_USE_THIS_VERSION_2.17) SYMVER(sendmmsg, GLIBC_DONT_USE_THIS_VERSION_2.14) SYMVER(setns, GLIBC_DONT_USE_THIS_VERSION_2.14) SYMVER(setpayload, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(setpayloadf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(setpayloadf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(setpayloadf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(setpayloadf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(setpayloadf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(setpayloadf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(setpayloadl, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(setpayloadsig, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(setpayloadsigf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(setpayloadsigf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(setpayloadsigf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(setpayloadsigf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(setpayloadsigf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(setpayloadsigf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(setpayloadsigl, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(sincosf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(sincosf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sincosf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sincosf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sincosf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sinf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(sinf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sinf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sinf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sinf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sinhf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(sinhf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sinhf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sinhf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sinhf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sqrtf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(sqrtf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sqrtf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sqrtf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(sqrtf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(strfromd, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(strfromf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(strfromf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(strfromf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(strfromf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(strfromf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(strfromf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(strfroml, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(strtof128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(strtof128_l, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(strtof32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(strtof32_l, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(strtof32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(strtof32x_l, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(strtof64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(strtof64_l, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(strtof64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(strtof64x_l, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(syncfs, GLIBC_DONT_USE_THIS_VERSION_2.14) SYMVER(tanf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(tanf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(tanf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(tanf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(tanf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(tanhf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(tanhf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(tanhf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(tanhf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(tanhf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(tgammaf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(tgammaf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(tgammaf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(tgammaf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(tgammaf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(timespec_get, GLIBC_DONT_USE_THIS_VERSION_2.16) SYMVER(totalorder, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(totalorderf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(totalorderf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(totalorderf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(totalorderf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(totalorderf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(totalorderf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(totalorderl, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(totalordermag, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(totalordermagf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(totalordermagf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(totalordermagf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(totalordermagf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(totalordermagf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(totalordermagf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(totalordermagl, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(truncf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(truncf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(truncf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(truncf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(truncf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ufromfp, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(ufromfpf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(ufromfpf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(ufromfpf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ufromfpf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ufromfpf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ufromfpf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ufromfpl, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(ufromfpx, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(ufromfpxf, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(ufromfpxf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(ufromfpxf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ufromfpxf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ufromfpxf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ufromfpxf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ufromfpxl, GLIBC_DONT_USE_THIS_VERSION_2.25) SYMVER(wcstof128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(wcstof128_l, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(wcstof32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(wcstof32_l, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(wcstof32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(wcstof32x_l, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(wcstof64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(wcstof64_l, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(wcstof64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(wcstof64x_l, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(y0f128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(y0f32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(y0f32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(y0f64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(y0f64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(y1f128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(y1f32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(y1f32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(y1f64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(y1f64x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ynf128, GLIBC_DONT_USE_THIS_VERSION_2.26) SYMVER(ynf32, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ynf32x, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ynf64, GLIBC_DONT_USE_THIS_VERSION_2.27) SYMVER(ynf64x, GLIBC_DONT_USE_THIS_VERSION_2.27) #endif /* x86 */ #if defined(__arm__) || defined(__aarch64__) /* Symbols redirected to earlier glibc versions */ #if defined(__arm__) SYMVER(__longjmp_chk, GLIBC_2.11) #endif SYMVER(_sys_errlist, GLIBC_2.4) SYMVER(_sys_nerr, GLIBC_2.4) SYMVER(execvpe, GLIBC_2.11) SYMVER(fallocate64, GLIBC_2.11) SYMVER(mkostemps, GLIBC_2.11) SYMVER(mkostemps64, GLIBC_2.11) SYMVER(mkstemps, GLIBC_2.11) SYMVER(mkstemps64, GLIBC_2.11) SYMVER(pthread_sigqueue, GLIBC_2.11) SYMVER(sys_errlist, GLIBC_2.4) SYMVER(sys_nerr, GLIBC_2.4) /* Symbols introduced in newer glibc versions, which must not be used */ SYMVER(fanotify_init, GLIBC_DONT_USE_THIS_VERSION_2.13) SYMVER(fanotify_mark, GLIBC_DONT_USE_THIS_VERSION_2.13) SYMVER(ntp_gettimex, GLIBC_DONT_USE_THIS_VERSION_2.12) SYMVER(prlimit, GLIBC_DONT_USE_THIS_VERSION_2.13) SYMVER(prlimit64, GLIBC_DONT_USE_THIS_VERSION_2.13) SYMVER(pthread_getname_np, GLIBC_DONT_USE_THIS_VERSION_2.12) SYMVER(pthread_mutex_consistent, GLIBC_DONT_USE_THIS_VERSION_2.12) SYMVER(pthread_mutexattr_getrobust, GLIBC_DONT_USE_THIS_VERSION_2.12) SYMVER(pthread_mutexattr_setrobust, GLIBC_DONT_USE_THIS_VERSION_2.12) SYMVER(pthread_setname_np, GLIBC_DONT_USE_THIS_VERSION_2.12) SYMVER(recvmmsg, GLIBC_DONT_USE_THIS_VERSION_2.12) #endif /* __arm__ */ #undef SYMVER #undef SYMVER1 #if defined (__cplusplus) } #endif #endif aranym-1.1.0/src/include/joypads.h0000664000175000017500000000270713454637621015243 0ustar joyjoy/* Joypads port emulation ARAnyM (C) 2008 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef JOYPADS_H #define JOYPADS_H #include "icio.h" class JOYPADS : public BASE_IO { private: static const int multiplexer0[8][4]; /* on 0xff9200 */ static const int multiplexer1[8][4]; /* on 0xff9202 */ static const int buttons[17]; int joypada_mapping[17]; int joypadb_mapping[17]; Uint16 mask; Uint32 host_state[2]; public: JOYPADS(memptr, uint32); virtual ~JOYPADS(); virtual void reset(void); virtual uae_u8 handleRead(uaecptr addr); virtual void handleWrite(uaecptr addr, uae_u8 value); void sendJoystickAxis(int numjoy, int numaxis, int value); void sendJoystickHat(int numjoy, int value); void sendJoystickButton(int numjoy, int which, int pressed); }; #endif /* JOYPADS_H */ aranym-1.1.0/src/include/input.h0000664000175000017500000000136213454637621014725 0ustar joyjoy/* * Input handling */ #ifndef _INPUT_H #define _INPUT_H #include "SDL_compat.h" #define HOTKEYS_MOD_MASK (KMOD_SHIFT | KMOD_CTRL | KMOD_ALT | KMOD_GUI | KMOD_MODE) typedef enum { HOTKEY_none, HOTKEY_setup, HOTKEY_quit, HOTKEY_warmreboot, HOTKEY_coldreboot, HOTKEY_debug, HOTKEY_ungrab, HOTKEY_fullscreen, HOTKEY_screenshot, HOTKEY_sound, } HOTKEY; void InputInit(); void InputReset(); void InputExit(); SDL_bool grabMouse(SDL_bool grab); SDL_bool hideMouse(SDL_bool grab); void check_event(); HOTKEY check_hotkey(int state, SDL_Keycode sym); #ifdef SDL_GUI void open_GUI(void); void close_GUI(void); #endif extern SDL_Joystick *sdl_joystick; extern SDL_Cursor *aranym_cursor; extern SDL_Cursor *empty_cursor; #endif /* _INPUT_H */ aranym-1.1.0/src/include/ikbd.h0000664000175000017500000000516213454637621014501 0ustar joyjoy/* * ikbd.h - IKBD 6301 emulation code - declaration * * Copyright (c) 2001-2009 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _IKBD_H #define _IKBD_H #include "SDL_compat.h" #include #include "acia.h" /*--- Defines ---*/ enum ikbd_packet_t { IKBD_PACKET_UNKNOWN=0, IKBD_PACKET_KEYBOARD, IKBD_PACKET_MOUSE, IKBD_PACKET_JOYSTICK }; #define IKBD_JOY_UP 0 #define IKBD_JOY_DOWN 1 #define IKBD_JOY_LEFT 2 #define IKBD_JOY_RIGHT 3 #define IKBD_JOY_FIRE 7 /*--- IKBD class ---*/ class IKBD: public ACIA { private: /* IKBD keyboard state */ /* IKBD mouse state */ int mouse_enabled; int mouserel_enabled; int mousex, mousey, mouseb; bool yaxis_reversed; /* IKBD joysticks state */ int joy_enabled[2]; int joy_state[2]; /* Buffer when writing to IKBD */ uae_u8 *outbuffer; int outbufferlen; int outwrite; /* Buffer when reading from IKBD */ uae_u8 *inbuffer; int inbufferlen; int inwrite, inread; ikbd_packet_t intype; /* Latest type of packet in buffer */ uint8 int2bcd(int a); void ThrowInterrupt(void); void MergeMousePacket(int *relx, int *rely, int buttons); void send(uae_u8 value); public: IKBD(memptr addr, uint32 size); // IKBD(int inlen, int outlen); /* Params are length (2^x) of in/out buffers */ ~IKBD(); void reset(void); uae_u8 ReadStatus(void); void WriteControl(uae_u8 value); uae_u8 ReadData(void); void WriteData(uae_u8 value); void SendKey(uae_u8 scancode); void SendMouseMotion(int relx, int rely, int buttons, bool slow); void SendJoystickAxis(int numjoy, int numaxis, int value); void SendJoystickHat(int numjoy, int value); void SendJoystickButton(int numjoy, int pressed); }; #endif /* _IKBD_H */ // don't remove this modeline with intended formatting for vim:ts=4:sw=4: aranym-1.1.0/src/include/identify.h0000664000175000017500000000055213454637621015401 0ustar joyjoy /* * UAE - The Un*x Amiga Emulator * * Tables for labelling ARAnyM internals. * */ #include "sysdeps.h" struct mem_labels { const char *name; memptr adr; }; struct customData { const char *name; memptr adr; }; extern struct mem_labels mem_labels[]; extern struct mem_labels int_labels[]; extern struct mem_labels trap_labels[]; aranym-1.1.0/src/include/ide.h0000664000175000017500000000264013454637621014327 0ustar joyjoy/* * ide.h - Falcon IDE emulation code - class definition * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _IDE_H #define _IDE_H #include "icio.h" class IDE : public BASE_IO { public: IDE(memptr, uint32); void reset(); virtual uae_u8 handleRead(uaecptr addr); virtual void handleWrite(uaecptr addr, uae_u8 value); virtual uae_u16 handleReadW(uaecptr addr); virtual void handleWriteW(uaecptr addr, uae_u16 value); virtual uae_u32 handleReadL(uaecptr addr); virtual void handleWriteL(uaecptr addr, uae_u32 value); }; #endif /* _IDE_H */ aranym-1.1.0/src/include/icio.h0000664000175000017500000000135213454637621014510 0ustar joyjoy#ifndef _BASE_IO_h #define _BASE_IO_h class BASE_IO { protected: memptr hw_offset; uint32 hw_size; memptr getHWoffset() { return hw_offset; } uint16 getHWsize() { return hw_size; } public: BASE_IO(memptr addr, uint32 size) { hw_offset = addr; hw_size = size; } virtual void reset() {}; virtual ~BASE_IO() {}; virtual bool isMyHWRegister(memptr addr) { return (addr >= hw_offset && addr < (hw_offset + hw_size)); } virtual uae_u8 handleRead(memptr addr); virtual uae_u16 handleReadW(memptr addr); virtual uae_u32 handleReadL(memptr addr); virtual void handleWrite(memptr addr, uint8 value); virtual void handleWriteW(memptr addr, uint16 value); virtual void handleWriteL(memptr addr, uint32 value); }; #endif //_BASE_IO_h aranym-1.1.0/src/include/hostscreen_opengl.h0000664000175000017500000000305013454637621017303 0ustar joyjoy/* Hostscreen, OpenGL renderer (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef HOSTSCREENOPENGL #define HOSTSCREENOPENGL 1 #include #include "SDL_compat.h" class HostScreen; class HostSurface; class HostSurfaceOpenGL; class HostScreenOpenGL: public HostScreen { private: std::list surfList; void setVideoMode(int width, int height, int bpp); void refreshScreen(void); void initScreen(void); void clearScreen(void); void drawSurfaceToScreen(HostSurface *hsurf, int *dst_x, int *dst_y); public: HostScreenOpenGL(void); ~HostScreenOpenGL(); int getBpp(void); void makeSnapshot(void); /* Surface creation */ HostSurface *createSurface(int width, int height, int bpp); HostSurface *createSurface(int width, int height, SDL_PixelFormat *pixelFormat); void destroySurface(HostSurface *hsurf); }; #endif /* HOSTSCREENOPENGL */ aranym-1.1.0/src/include/hostscreen.h0000664000175000017500000001133713454637621015746 0ustar joyjoy/* Hostscreen, base class Software renderer (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _HOSTSCREEN_H #define _HOSTSCREEN_H #include "parameters.h" #include "SDL_compat.h" #include "dirty_rects.h" class HostSurface; class Logo; class HostScreen: public DirtyRects { private: enum { SCREEN_BOOT, SCREEN_LOGO, SCREEN_VIDEL, SCREEN_NFVDI }; void refreshVidel(void); void forceRefreshVidel(void); void refreshLogo(void); void forceRefreshLogo(void); void refreshNfvdi(void); void forceRefreshNfvdi(void); void refreshGui(void); void refreshSurface(HostSurface *hsurf); void checkSwitchToVidel(void); void checkSwitchVidelNfvdi(void); void alphaBlendLogo(bool init); SDL_bool OpenGLVdi; /* Using NF OpenGL VDI renderer ? */ Logo *logo; bool clear_screen, force_refresh, do_screenshot; int refreshCounter; bool renderVidelSurface; int lastVidelWidth, lastVidelHeight, lastVidelBpp; int numScreen; SDL_bool grabbedMouse; SDL_bool hiddenMouse; bool canGrabMouseAgain; bool capslockState; bool ignoreMouseMotionEvent; int atari_mouse_xpos; int atari_mouse_ypos; bool recording; protected: static const int MIN_WIDTH = 640; static const int MIN_HEIGHT = 480; SDL_Surface *screen; #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_Renderer *renderer; SDL_Texture *texture; #endif int new_width, new_height; int PendingConfigureNotifyWidth, PendingConfigureNotifyHeight; uint16 snapCounter; // ALT+PrintScreen to make a snap? virtual void setVideoMode(int width, int height, int bpp); // Create a BMP file with a snapshot of the screen surface void writeSnapshot(SDL_Surface *surf); virtual void makeSnapshot(void); virtual void refreshScreen(void); virtual void initScreen(void); virtual void clearScreen(void); public: virtual void drawSurfaceToScreen(HostSurface *hsurf, int *dst_x = NULL, int *dst_y = NULL); #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_Window *window; Uint32 window_id; #ifdef SDL_GUI SDL_Window *gui_window; Uint32 gui_window_id; #endif #endif HostScreen(void); virtual ~HostScreen(void); void reset(void); void resizeWindow(int new_width, int new_height); void OpenGLUpdate(void); /* Full screen update with NF software VDI */ void EnableOpenGLVdi(void); void DisableOpenGLVdi(void); int getWidth(void); int getHeight(void); virtual int getBpp(void); /** * Atari bitplane to chunky conversion helper. **/ static void bitplaneToChunky( uint16 *atariBitplaneData, uint16 bpp, uint8 colorValues[16], int horiz_shift = 0); void doScreenshot(void); // Toggle Window/FullScreen mode void toggleFullScreen(void); void refresh(void); void forceRefreshScreen(void); virtual void refreshScreenFromSurface(SDL_Surface *surface); void setVidelRendering(bool videlRender); void bootDone(void); /* Surface creation */ virtual HostSurface *createSurface(int width, int height, int bpp); virtual HostSurface *createSurface(int width, int height, SDL_PixelFormat *pixelFormat); virtual void destroySurface(HostSurface *hsurf); void SetWMIcon(); void SetCaption(const char *caption); #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_Window *Window() { return window; } #ifdef SDL_GUI SDL_Window *GuiWindow() { return gui_window; } #endif #endif // Mouse handling void WarpMouse(int x, int y); bool IgnoreMouseMotionEvent() { return ignoreMouseMotionEvent; } void IgnoreMouseMotionEvent(bool ignore) { ignoreMouseMotionEvent = ignore; } bool CanGrabMouseAgain() { return canGrabMouseAgain; } void CanGrabMouseAgain(bool enable) { canGrabMouseAgain = enable; } bool CapslockState() { return capslockState; } void CapslockState(bool state) { capslockState = state; } SDL_bool GrabbedMouse() { return grabbedMouse; } SDL_bool hideMouse(SDL_bool hide); SDL_bool grabMouse(SDL_bool grab); void grabTheMouse(); void releaseTheMouse(); void RememberAtariMouseCursorPosition(); void RestoreAtariMouseCursorPosition(); bool HasInputFocus(); bool HasMouseFocus(); virtual bool Recording(void) { return recording; } virtual void StartRecording() { recording = true; } virtual void StopRecording() { recording = false; } }; #endif aranym-1.1.0/src/include/host_surface_opengl.h0000664000175000017500000000365713454637621017630 0ustar joyjoy/* Rendering surface with OpenGL texture (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef HOSTSURFACEOPENGL_H #define HOSTSURFACEOPENGL_H #include "SDL_compat.h" #include "SDL_opengl_wrapper.h" class HostSurface; class HostSurfaceOpenGL: public HostSurface { private: GLenum textureTarget, textureFormat; GLuint textureObject; bool can_palette, use_palette, first_upload; void createTexture(void); void calcGlDimensions(int *width, int *height); SDL_Surface *createSdlSurface(int width, int height, SDL_PixelFormat *pixelFormat); public: /* Create a surface from dimensions, bpp */ HostSurfaceOpenGL(int width, int height, int bpp); /* Create a surface from dimensions, and a given pixel format */ HostSurfaceOpenGL(int width, int height, SDL_PixelFormat *pixelFormat); /* Create a surface from existing SDL_Surface */ HostSurfaceOpenGL(SDL_Surface *surf); virtual ~HostSurfaceOpenGL(); void update(void); void resize(int width, int height, bool force_recreate = false); void setPalette(SDL_Color *palette, int first, int count); void updateTexture(void); void createTextureObject(void); void destroyTextureObject(void); GLenum getTextureTarget(void); GLuint getTextureObject(void); }; #endif /* HOSTSURFACEOPENGL_H */ aranym-1.1.0/src/include/host_surface.h0000664000175000017500000000402613454637621016253 0ustar joyjoy/* Rendering surface (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef HOSTSURFACE_H #define HOSTSURFACE_H #include "SDL_compat.h" class DirtyRects; class HostSurface: public DirtyRects { protected: SDL_Surface *surface; int clip_w, clip_h; /* clipped dimensions */ int draw_mode; int use_alpha; int alpha_coef; virtual SDL_Surface *createSdlSurface(int width, int height, SDL_PixelFormat *pixelFormat); public: enum { SURF_DRAW, /* drawing mode */ SURF_USE_ALPHA, /* use alpha coef */ SURF_ALPHA /* set alpha coefficient */ }; enum { DRAW_CROP_AND_CENTER, DRAW_RESCALE }; /* Create a surface from dimensions, bpp */ HostSurface(int width, int height, int bpp); /* Create a surface from dimensions, and a given pixel format */ HostSurface(int width, int height, SDL_PixelFormat *pixelFormat); virtual ~HostSurface(); SDL_Surface *getSdlSurface(void); int getWidth(void); int getHeight(void); int getBpp(void); virtual void update(void); virtual void resize(int new_width, int new_height, bool force_recreate = false); void resize(int new_width, int new_height, int surf_width, int surf_height, bool force_recreate = false); virtual void setPalette(SDL_Color *palette, int first, int count); int getParam(int num_param); void setParam(int num_param, int value); }; #endif /* HOSTSURFACE_H */ aranym-1.1.0/src/include/host_filesys.h0000664000175000017500000000241013454637621016274 0ustar joyjoy/* Host filesystem ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef HOSTFILESYS_H #define HOSTFILESYS_H /*--- Class ---*/ class HostFilesys { public: /* Return user's home folder */ static char *getHomeFolder(char *buffer, unsigned int bufsize); /* Return ARAnyM configuration folder */ static char *getConfFolder(char *buffer, unsigned int bufsize); /* Return ARAnyM data folder */ static char *getDataFolder(char *buffer, unsigned int bufsize); /* Create a folder */ static int makeDir(char *filename, int perm = 0755); }; #endif /* HOSTFILESYS_H */ aranym-1.1.0/src/include/host_clock_unix.h0000664000175000017500000000170713454637621016764 0ustar joyjoy/* Host clock for timers, Unix systems ARAnyM (C) 2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef HOSTCLOCKUNIX_H #define HOSTCLOCKUNIX_H #include "host_clock.h" /*--- Class ---*/ class HostClockUnix: public HostClock { private: float getCurTime(void); }; #endif /* HOSTCLOCKUNIX_H */ aranym-1.1.0/src/include/host_clock.h0000664000175000017500000000212313454637621015712 0ustar joyjoy/* Host clock for timers ARAnyM (C) 2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef HOSTCLOCK_H #define HOSTCLOCK_H /*--- HostClock Class ---*/ class HostClock { protected: float startTime; virtual float getCurTime(void); /* Override this for your system */ public: HostClock(void); virtual ~HostClock() {} void reset(void); float getClock(void); /* integer part are milli seconds */ }; #endif /* HOSTCLOCK_H */ aranym-1.1.0/src/include/host_audio.h0000664000175000017500000000351413454637621015725 0ustar joyjoy/* Audio core ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef HOSTAUDIO_H #define HOSTAUDIO_H #include "SDL_compat.h" /*--- Defines ---*/ #define MAX_AUDIO_CALLBACKS 8 /*--- Types ---*/ typedef void (*audio_callback_f)(void *unused, Uint8 *stream, int len); /*--- Class ---*/ class HostAudio { private: SDL_AudioSpec desired; bool recording; bool enabled; public: HostAudio(); ~HostAudio(); void reset(void); /* private data but needed by SDL audio callback */ audio_callback_f callbacks[MAX_AUDIO_CALLBACKS]; void *userdatas[MAX_AUDIO_CALLBACKS]; /* Register your external audio callback with this */ void AddCallback(audio_callback_f callback, void *userdata); void RemoveCallback(audio_callback_f callback); /* Usable by external audio callbacks, consider read-only */ SDL_AudioSpec obtained; bool Recording(void) { return recording; } void StartRecording() { recording = true && enabled; } void StopRecording() { recording = false; } bool Enabled(void) { return enabled; } void Enable(bool enable); void ToggleAudio() { Enable(!enabled); } static const char *FormatName(Uint16 format); }; #endif /* HOSTAUDIO_H */ aranym-1.1.0/src/include/host.h0000664000175000017500000000215313454637621014542 0ustar joyjoy/* Host class for host dependent audio, video and clock (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef HOST_H #define HOST_H #include "hostscreen.h" #include "host_audio.h" #include "host_filesys.h" #include "host_clock.h" #include "host_clock_unix.h" class Host : public HostFilesys { public: Host(); ~Host(); void reset(void); HostAudio audio; HostScreen *video; HostClock *clock; }; extern Host *host; #endif /* HOST_H */ aranym-1.1.0/src/include/hardware.h0000664000175000017500000000403513454637621015363 0ustar joyjoy/* * hardware.h - Atari hardware emulation - definitions * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef HARDWARE_H #define HARDWARE_H #include "aradata.h" #include "mfp.h" #include "ikbd.h" #include "midi.h" #include "parallel.h" #include "yamaha.h" #include "videl.h" #include "dsp.h" #include "acsifdc.h" #include "ide.h" #include "audio_dma.h" #include "audio_crossbar.h" #include "joypads.h" #include "scc.h" extern Parallel *parallel; extern Serial *serial; extern uae_u32 vram_addr; void HWInit(void); void HWExit(void); void HWReset(void); ARADATA *getARADATA(void); MFP *getMFP(void); IKBD *getIKBD(void); MIDI *getMIDI(void); YAMAHA *getYAMAHA(void); VIDEL *getVIDEL(void); DSP *getDSP(void); ACSIFDC *getFDC(void); IDE *getIDE(void); AUDIODMA *getAUDIODMA(void); CROSSBAR *getCROSSBAR(void); JOYPADS *getJOYPADS(void); SCC *getSCC(void); extern uae_u32 HWget_l(uaecptr addr); extern uae_u16 HWget_w(uaecptr addr); extern uae_u8 HWget_b(uaecptr addr); extern void HWput_l(uaecptr addr, uae_u32 l); extern void HWput_w(uaecptr addr, uae_u16 w); extern void HWput_b(uaecptr addr, uae_u8 b); extern char* debug_print_IO(uaecptr addr); // for debugging only #endif aranym-1.1.0/src/include/glenums.h0000664000175000017500000134065613454637621015255 0ustar joyjoy/* GL enums ARAnyM (C) 2015 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef __GLENUMS_H__ #define __GLENUMS_H__ #ifndef GL_1PASS_EXT #define GL_1PASS_EXT 0x80A1 #endif #ifndef GL_1PASS_SGIS #define GL_1PASS_SGIS 0x80A1 #endif #ifndef GL_2D #define GL_2D 0x0600 #endif #ifndef GL_2PASS_0_EXT #define GL_2PASS_0_EXT 0x80A2 #endif #ifndef GL_2PASS_0_SGIS #define GL_2PASS_0_SGIS 0x80A2 #endif #ifndef GL_2PASS_1_EXT #define GL_2PASS_1_EXT 0x80A3 #endif #ifndef GL_2PASS_1_SGIS #define GL_2PASS_1_SGIS 0x80A3 #endif #ifndef GL_2X_BIT_ATI #define GL_2X_BIT_ATI 0x00000001 #endif #ifndef GL_2_BYTES #define GL_2_BYTES 0x1407 #endif #ifndef GL_2_BYTES_NV #define GL_2_BYTES_NV 0x1407 #endif #ifndef GL_3D #define GL_3D 0x0601 #endif #ifndef GL_3D_COLOR #define GL_3D_COLOR 0x0602 #endif #ifndef GL_3D_COLOR_TEXTURE #define GL_3D_COLOR_TEXTURE 0x0603 #endif #ifndef GL_3_BYTES #define GL_3_BYTES 0x1408 #endif #ifndef GL_3_BYTES_NV #define GL_3_BYTES_NV 0x1408 #endif #ifndef GL_422_AVERAGE_EXT #define GL_422_AVERAGE_EXT 0x80CE #endif #ifndef GL_422_EXT #define GL_422_EXT 0x80CC #endif #ifndef GL_422_REV_AVERAGE_EXT #define GL_422_REV_AVERAGE_EXT 0x80CF #endif #ifndef GL_422_REV_EXT #define GL_422_REV_EXT 0x80CD #endif #ifndef GL_4D_COLOR_TEXTURE #define GL_4D_COLOR_TEXTURE 0x0604 #endif #ifndef GL_4PASS_0_EXT #define GL_4PASS_0_EXT 0x80A4 #endif #ifndef GL_4PASS_0_SGIS #define GL_4PASS_0_SGIS 0x80A4 #endif #ifndef GL_4PASS_1_EXT #define GL_4PASS_1_EXT 0x80A5 #endif #ifndef GL_4PASS_1_SGIS #define GL_4PASS_1_SGIS 0x80A5 #endif #ifndef GL_4PASS_2_EXT #define GL_4PASS_2_EXT 0x80A6 #endif #ifndef GL_4PASS_2_SGIS #define GL_4PASS_2_SGIS 0x80A6 #endif #ifndef GL_4PASS_3_EXT #define GL_4PASS_3_EXT 0x80A7 #endif #ifndef GL_4PASS_3_SGIS #define GL_4PASS_3_SGIS 0x80A7 #endif #ifndef GL_4X_BIT_ATI #define GL_4X_BIT_ATI 0x00000002 #endif #ifndef GL_4_BYTES #define GL_4_BYTES 0x1409 #endif #ifndef GL_4_BYTES_NV #define GL_4_BYTES_NV 0x1409 #endif #ifndef GL_8X_BIT_ATI #define GL_8X_BIT_ATI 0x00000004 #endif #ifndef GL_ABGR_EXT #define GL_ABGR_EXT 0x8000 #endif #ifndef GL_ACCUM #define GL_ACCUM 0x0100 #endif #ifndef GL_ACCUM_ADJACENT_PAIRS_NV #define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD #endif #ifndef GL_ACCUM_ALPHA_BITS #define GL_ACCUM_ALPHA_BITS 0x0D5B #endif #ifndef GL_ACCUM_BLUE_BITS #define GL_ACCUM_BLUE_BITS 0x0D5A #endif #ifndef GL_ACCUM_BUFFER_BIT #define GL_ACCUM_BUFFER_BIT 0x00000200 #endif #ifndef GL_ACCUM_CLEAR_VALUE #define GL_ACCUM_CLEAR_VALUE 0x0B80 #endif #ifndef GL_ACCUM_GREEN_BITS #define GL_ACCUM_GREEN_BITS 0x0D59 #endif #ifndef GL_ACCUM_RED_BITS #define GL_ACCUM_RED_BITS 0x0D58 #endif #ifndef GL_ACTIVE_ATOMIC_COUNTER_BUFFERS #define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 #endif #ifndef GL_ACTIVE_ATTRIBUTES #define GL_ACTIVE_ATTRIBUTES 0x8B89 #endif #ifndef GL_ACTIVE_ATTRIBUTE_MAX_LENGTH #define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A #endif #ifndef GL_ACTIVE_PROGRAM #define GL_ACTIVE_PROGRAM 0x8259 #endif #ifndef GL_ACTIVE_PROGRAM_EXT #define GL_ACTIVE_PROGRAM_EXT 0x8B8D #endif #ifndef GL_ACTIVE_RESOURCES #define GL_ACTIVE_RESOURCES 0x92F5 #endif #ifndef GL_ACTIVE_STENCIL_FACE_EXT #define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 #endif #ifndef GL_ACTIVE_SUBROUTINES #define GL_ACTIVE_SUBROUTINES 0x8DE5 #endif #ifndef GL_ACTIVE_SUBROUTINE_MAX_LENGTH #define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 #endif #ifndef GL_ACTIVE_SUBROUTINE_UNIFORMS #define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 #endif #ifndef GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS #define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 #endif #ifndef GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH #define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 #endif #ifndef GL_ACTIVE_TEXTURE #define GL_ACTIVE_TEXTURE 0x84E0 #endif #ifndef GL_ACTIVE_TEXTURE_ARB #define GL_ACTIVE_TEXTURE_ARB 0x84E0 #endif #ifndef GL_ACTIVE_UNIFORMS #define GL_ACTIVE_UNIFORMS 0x8B86 #endif #ifndef GL_ACTIVE_UNIFORM_BLOCKS #define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 #endif #ifndef GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH #define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 #endif #ifndef GL_ACTIVE_UNIFORM_MAX_LENGTH #define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 #endif #ifndef GL_ACTIVE_VARIABLES #define GL_ACTIVE_VARIABLES 0x9305 #endif #ifndef GL_ACTIVE_VARYINGS_NV #define GL_ACTIVE_VARYINGS_NV 0x8C81 #endif #ifndef GL_ACTIVE_VARYING_MAX_LENGTH_NV #define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 #endif #ifndef GL_ACTIVE_VERTEX_UNITS_ARB #define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 #endif #ifndef GL_ADD #define GL_ADD 0x0104 #endif #ifndef GL_ADD_ATI #define GL_ADD_ATI 0x8963 #endif #ifndef GL_ADD_SIGNED #define GL_ADD_SIGNED 0x8574 #endif #ifndef GL_ADD_SIGNED_ARB #define GL_ADD_SIGNED_ARB 0x8574 #endif #ifndef GL_ADD_SIGNED_EXT #define GL_ADD_SIGNED_EXT 0x8574 #endif #ifndef GL_ADJACENT_PAIRS_NV #define GL_ADJACENT_PAIRS_NV 0x90AE #endif #ifndef GL_AFFINE_2D_NV #define GL_AFFINE_2D_NV 0x9092 #endif #ifndef GL_AFFINE_3D_NV #define GL_AFFINE_3D_NV 0x9094 #endif #ifndef GL_ALIASED_LINE_WIDTH_RANGE #define GL_ALIASED_LINE_WIDTH_RANGE 0x846E #endif #ifndef GL_ALIASED_POINT_SIZE_RANGE #define GL_ALIASED_POINT_SIZE_RANGE 0x846D #endif #ifndef GL_ALLOW_DRAW_FRG_HINT_PGI #define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 #endif #ifndef GL_ALLOW_DRAW_MEM_HINT_PGI #define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 #endif #ifndef GL_ALLOW_DRAW_OBJ_HINT_PGI #define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E #endif #ifndef GL_ALLOW_DRAW_WIN_HINT_PGI #define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F #endif #ifndef GL_ALL_ATTRIB_BITS #define GL_ALL_ATTRIB_BITS 0x000fffff #endif #ifndef GL_ALL_BARRIER_BITS #define GL_ALL_BARRIER_BITS 0xFFFFFFFF #endif #ifndef GL_ALL_BARRIER_BITS_EXT #define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF #endif #ifndef GL_ALL_COMPLETED_NV #define GL_ALL_COMPLETED_NV 0x84F2 #endif #ifndef GL_ALL_SHADER_BITS #define GL_ALL_SHADER_BITS 0xFFFFFFFF #endif #ifndef GL_ALL_STATIC_DATA_IBM #define GL_ALL_STATIC_DATA_IBM 103060 #endif #ifndef GL_ALPHA #define GL_ALPHA 0x1906 #endif #ifndef GL_ALPHA12 #define GL_ALPHA12 0x803D #endif #ifndef GL_ALPHA12_EXT #define GL_ALPHA12_EXT 0x803D #endif #ifndef GL_ALPHA16 #define GL_ALPHA16 0x803E #endif #ifndef GL_ALPHA16F_ARB #define GL_ALPHA16F_ARB 0x881C #endif #ifndef GL_ALPHA16I_EXT #define GL_ALPHA16I_EXT 0x8D8A #endif #ifndef GL_ALPHA16UI_EXT #define GL_ALPHA16UI_EXT 0x8D78 #endif #ifndef GL_ALPHA16_EXT #define GL_ALPHA16_EXT 0x803E #endif #ifndef GL_ALPHA16_SNORM #define GL_ALPHA16_SNORM 0x9018 #endif #ifndef GL_ALPHA32F_ARB #define GL_ALPHA32F_ARB 0x8816 #endif #ifndef GL_ALPHA32I_EXT #define GL_ALPHA32I_EXT 0x8D84 #endif #ifndef GL_ALPHA32UI_EXT #define GL_ALPHA32UI_EXT 0x8D72 #endif #ifndef GL_ALPHA4 #define GL_ALPHA4 0x803B #endif #ifndef GL_ALPHA4_EXT #define GL_ALPHA4_EXT 0x803B #endif #ifndef GL_ALPHA8 #define GL_ALPHA8 0x803C #endif #ifndef GL_ALPHA8I_EXT #define GL_ALPHA8I_EXT 0x8D90 #endif #ifndef GL_ALPHA8UI_EXT #define GL_ALPHA8UI_EXT 0x8D7E #endif #ifndef GL_ALPHA8_EXT #define GL_ALPHA8_EXT 0x803C #endif #ifndef GL_ALPHA8_SNORM #define GL_ALPHA8_SNORM 0x9014 #endif #ifndef GL_ALPHA_BIAS #define GL_ALPHA_BIAS 0x0D1D #endif #ifndef GL_ALPHA_BITS #define GL_ALPHA_BITS 0x0D55 #endif #ifndef GL_ALPHA_BLEND_EQUATION_ATI #define GL_ALPHA_BLEND_EQUATION_ATI 0x883D #endif #ifndef GL_ALPHA_FLOAT16_APPLE #define GL_ALPHA_FLOAT16_APPLE 0x881C #endif #ifndef GL_ALPHA_FLOAT16_ATI #define GL_ALPHA_FLOAT16_ATI 0x881C #endif #ifndef GL_ALPHA_FLOAT32_APPLE #define GL_ALPHA_FLOAT32_APPLE 0x8816 #endif #ifndef GL_ALPHA_FLOAT32_ATI #define GL_ALPHA_FLOAT32_ATI 0x8816 #endif #ifndef GL_ALPHA_INTEGER #define GL_ALPHA_INTEGER 0x8D97 #endif #ifndef GL_ALPHA_INTEGER_EXT #define GL_ALPHA_INTEGER_EXT 0x8D97 #endif #ifndef GL_ALPHA_MAX_CLAMP_INGR #define GL_ALPHA_MAX_CLAMP_INGR 0x8567 #endif #ifndef GL_ALPHA_MAX_SGIX #define GL_ALPHA_MAX_SGIX 0x8321 #endif #ifndef GL_ALPHA_MIN_CLAMP_INGR #define GL_ALPHA_MIN_CLAMP_INGR 0x8563 #endif #ifndef GL_ALPHA_MIN_SGIX #define GL_ALPHA_MIN_SGIX 0x8320 #endif #ifndef GL_ALPHA_REF_COMMAND_NV #define GL_ALPHA_REF_COMMAND_NV 0x000F #endif #ifndef GL_ALPHA_SCALE #define GL_ALPHA_SCALE 0x0D1C #endif #ifndef GL_ALPHA_SNORM #define GL_ALPHA_SNORM 0x9010 #endif #ifndef GL_ALPHA_TEST #define GL_ALPHA_TEST 0x0BC0 #endif #ifndef GL_ALPHA_TEST_FUNC #define GL_ALPHA_TEST_FUNC 0x0BC1 #endif #ifndef GL_ALPHA_TEST_REF #define GL_ALPHA_TEST_REF 0x0BC2 #endif #ifndef GL_ALREADY_SIGNALED #define GL_ALREADY_SIGNALED 0x911A #endif #ifndef GL_ALWAYS #define GL_ALWAYS 0x0207 #endif #ifndef GL_ALWAYS_FAST_HINT_PGI #define GL_ALWAYS_FAST_HINT_PGI 0x1A20C #endif #ifndef GL_ALWAYS_SOFT_HINT_PGI #define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D #endif #ifndef GL_AMBIENT #define GL_AMBIENT 0x1200 #endif #ifndef GL_AMBIENT_AND_DIFFUSE #define GL_AMBIENT_AND_DIFFUSE 0x1602 #endif #ifndef GL_AND #define GL_AND 0x1501 #endif #ifndef GL_AND_INVERTED #define GL_AND_INVERTED 0x1504 #endif #ifndef GL_AND_REVERSE #define GL_AND_REVERSE 0x1502 #endif #ifndef GL_ANY_SAMPLES_PASSED #define GL_ANY_SAMPLES_PASSED 0x8C2F #endif #ifndef GL_ANY_SAMPLES_PASSED_CONSERVATIVE #define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A #endif #ifndef GL_ARC_TO_NV #define GL_ARC_TO_NV 0xFE #endif #ifndef GL_ARRAY_BUFFER #define GL_ARRAY_BUFFER 0x8892 #endif #ifndef GL_ARRAY_BUFFER_ARB #define GL_ARRAY_BUFFER_ARB 0x8892 #endif #ifndef GL_ARRAY_BUFFER_BINDING #define GL_ARRAY_BUFFER_BINDING 0x8894 #endif #ifndef GL_ARRAY_BUFFER_BINDING_ARB #define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 #endif #ifndef GL_ARRAY_ELEMENT_LOCK_COUNT_EXT #define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 #endif #ifndef GL_ARRAY_ELEMENT_LOCK_FIRST_EXT #define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 #endif #ifndef GL_ARRAY_OBJECT_BUFFER_ATI #define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 #endif #ifndef GL_ARRAY_OBJECT_OFFSET_ATI #define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 #endif #ifndef GL_ARRAY_SIZE #define GL_ARRAY_SIZE 0x92FB #endif #ifndef GL_ARRAY_STRIDE #define GL_ARRAY_STRIDE 0x92FE #endif #ifndef GL_ASYNC_DRAW_PIXELS_SGIX #define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D #endif #ifndef GL_ASYNC_HISTOGRAM_SGIX #define GL_ASYNC_HISTOGRAM_SGIX 0x832C #endif #ifndef GL_ASYNC_MARKER_SGIX #define GL_ASYNC_MARKER_SGIX 0x8329 #endif #ifndef GL_ASYNC_READ_PIXELS_SGIX #define GL_ASYNC_READ_PIXELS_SGIX 0x835E #endif #ifndef GL_ASYNC_TEX_IMAGE_SGIX #define GL_ASYNC_TEX_IMAGE_SGIX 0x835C #endif #ifndef GL_ATOMIC_COUNTER_BARRIER_BIT #define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 #endif #ifndef GL_ATOMIC_COUNTER_BARRIER_BIT_EXT #define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000 #endif #ifndef GL_ATOMIC_COUNTER_BUFFER #define GL_ATOMIC_COUNTER_BUFFER 0x92C0 #endif #ifndef GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS #define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 #endif #ifndef GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES #define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 #endif #ifndef GL_ATOMIC_COUNTER_BUFFER_BINDING #define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 #endif #ifndef GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE #define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 #endif #ifndef GL_ATOMIC_COUNTER_BUFFER_INDEX #define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 #endif #ifndef GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER #define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED #endif #ifndef GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER #define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB #endif #ifndef GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER #define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA #endif #ifndef GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER #define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8 #endif #ifndef GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER #define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9 #endif #ifndef GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER #define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7 #endif #ifndef GL_ATOMIC_COUNTER_BUFFER_SIZE #define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 #endif #ifndef GL_ATOMIC_COUNTER_BUFFER_START #define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 #endif #ifndef GL_ATTACHED_SHADERS #define GL_ATTACHED_SHADERS 0x8B85 #endif #ifndef GL_ATTENUATION_EXT #define GL_ATTENUATION_EXT 0x834D #endif #ifndef GL_ATTRIBUTE_ADDRESS_COMMAND_NV #define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009 #endif #ifndef GL_ATTRIB_ARRAY_POINTER_NV #define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 #endif #ifndef GL_ATTRIB_ARRAY_SIZE_NV #define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 #endif #ifndef GL_ATTRIB_ARRAY_STRIDE_NV #define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 #endif #ifndef GL_ATTRIB_ARRAY_TYPE_NV #define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 #endif #ifndef GL_ATTRIB_STACK_DEPTH #define GL_ATTRIB_STACK_DEPTH 0x0BB0 #endif #ifndef GL_AUTO_GENERATE_MIPMAP #define GL_AUTO_GENERATE_MIPMAP 0x8295 #endif #ifndef GL_AUTO_NORMAL #define GL_AUTO_NORMAL 0x0D80 #endif #ifndef GL_AUX0 #define GL_AUX0 0x0409 #endif #ifndef GL_AUX1 #define GL_AUX1 0x040A #endif #ifndef GL_AUX2 #define GL_AUX2 0x040B #endif #ifndef GL_AUX3 #define GL_AUX3 0x040C #endif #ifndef GL_AUX_BUFFERS #define GL_AUX_BUFFERS 0x0C00 #endif #ifndef GL_AUX_DEPTH_STENCIL_APPLE #define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 #endif #ifndef GL_AVERAGE_EXT #define GL_AVERAGE_EXT 0x8335 #endif #ifndef GL_AVERAGE_HP #define GL_AVERAGE_HP 0x8160 #endif #ifndef GL_BACK #define GL_BACK 0x0405 #endif #ifndef GL_BACK_LEFT #define GL_BACK_LEFT 0x0402 #endif #ifndef GL_BACK_NORMALS_HINT_PGI #define GL_BACK_NORMALS_HINT_PGI 0x1A223 #endif #ifndef GL_BACK_PRIMARY_COLOR_NV #define GL_BACK_PRIMARY_COLOR_NV 0x8C77 #endif #ifndef GL_BACK_RIGHT #define GL_BACK_RIGHT 0x0403 #endif #ifndef GL_BACK_SECONDARY_COLOR_NV #define GL_BACK_SECONDARY_COLOR_NV 0x8C78 #endif #ifndef GL_BEVEL_NV #define GL_BEVEL_NV 0x90A6 #endif #ifndef GL_BGR #define GL_BGR 0x80E0 #endif #ifndef GL_BGRA #define GL_BGRA 0x80E1 #endif #ifndef GL_BGRA_EXT #define GL_BGRA_EXT 0x80E1 #endif #ifndef GL_BGRA_INTEGER #define GL_BGRA_INTEGER 0x8D9B #endif #ifndef GL_BGRA_INTEGER_EXT #define GL_BGRA_INTEGER_EXT 0x8D9B #endif #ifndef GL_BGR_EXT #define GL_BGR_EXT 0x80E0 #endif #ifndef GL_BGR_INTEGER #define GL_BGR_INTEGER 0x8D9A #endif #ifndef GL_BGR_INTEGER_EXT #define GL_BGR_INTEGER_EXT 0x8D9A #endif #ifndef GL_BIAS_BIT_ATI #define GL_BIAS_BIT_ATI 0x00000008 #endif #ifndef GL_BIAS_BY_NEGATIVE_ONE_HALF_NV #define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 #endif #ifndef GL_BINORMAL_ARRAY_EXT #define GL_BINORMAL_ARRAY_EXT 0x843A #endif #ifndef GL_BINORMAL_ARRAY_POINTER_EXT #define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 #endif #ifndef GL_BINORMAL_ARRAY_STRIDE_EXT #define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 #endif #ifndef GL_BINORMAL_ARRAY_TYPE_EXT #define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 #endif #ifndef GL_BITMAP #define GL_BITMAP 0x1A00 #endif #ifndef GL_BITMAP_TOKEN #define GL_BITMAP_TOKEN 0x0704 #endif #ifndef GL_BLEND #define GL_BLEND 0x0BE2 #endif #ifndef GL_BLEND_ADVANCED_COHERENT_KHR #define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 #endif #ifndef GL_BLEND_ADVANCED_COHERENT_NV #define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 #endif #ifndef GL_BLEND_COLOR #define GL_BLEND_COLOR 0x8005 #endif #ifndef GL_BLEND_COLOR_COMMAND_NV #define GL_BLEND_COLOR_COMMAND_NV 0x000B #endif #ifndef GL_BLEND_COLOR_EXT #define GL_BLEND_COLOR_EXT 0x8005 #endif #ifndef GL_BLEND_DST #define GL_BLEND_DST 0x0BE0 #endif #ifndef GL_BLEND_DST_ALPHA #define GL_BLEND_DST_ALPHA 0x80CA #endif #ifndef GL_BLEND_DST_ALPHA_EXT #define GL_BLEND_DST_ALPHA_EXT 0x80CA #endif #ifndef GL_BLEND_DST_RGB #define GL_BLEND_DST_RGB 0x80C8 #endif #ifndef GL_BLEND_DST_RGB_EXT #define GL_BLEND_DST_RGB_EXT 0x80C8 #endif #ifndef GL_BLEND_EQUATION #define GL_BLEND_EQUATION 0x8009 #endif #ifndef GL_BLEND_EQUATION_ALPHA #define GL_BLEND_EQUATION_ALPHA 0x883D #endif #ifndef GL_BLEND_EQUATION_ALPHA_EXT #define GL_BLEND_EQUATION_ALPHA_EXT 0x883D #endif #ifndef GL_BLEND_EQUATION_EXT #define GL_BLEND_EQUATION_EXT 0x8009 #endif #ifndef GL_BLEND_EQUATION_RGB #define GL_BLEND_EQUATION_RGB 0x8009 #endif #ifndef GL_BLEND_EQUATION_RGB_EXT #define GL_BLEND_EQUATION_RGB_EXT 0x8009 #endif #ifndef GL_BLEND_OVERLAP_NV #define GL_BLEND_OVERLAP_NV 0x9281 #endif #ifndef GL_BLEND_PREMULTIPLIED_SRC_NV #define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 #endif #ifndef GL_BLEND_SRC #define GL_BLEND_SRC 0x0BE1 #endif #ifndef GL_BLEND_SRC_ALPHA #define GL_BLEND_SRC_ALPHA 0x80CB #endif #ifndef GL_BLEND_SRC_ALPHA_EXT #define GL_BLEND_SRC_ALPHA_EXT 0x80CB #endif #ifndef GL_BLEND_SRC_RGB #define GL_BLEND_SRC_RGB 0x80C9 #endif #ifndef GL_BLEND_SRC_RGB_EXT #define GL_BLEND_SRC_RGB_EXT 0x80C9 #endif #ifndef GL_BLOCK_INDEX #define GL_BLOCK_INDEX 0x92FD #endif #ifndef GL_BLUE #define GL_BLUE 0x1905 #endif #ifndef GL_BLUE_BIAS #define GL_BLUE_BIAS 0x0D1B #endif #ifndef GL_BLUE_BITS #define GL_BLUE_BITS 0x0D54 #endif #ifndef GL_BLUE_BIT_ATI #define GL_BLUE_BIT_ATI 0x00000004 #endif #ifndef GL_BLUE_INTEGER #define GL_BLUE_INTEGER 0x8D96 #endif #ifndef GL_BLUE_INTEGER_EXT #define GL_BLUE_INTEGER_EXT 0x8D96 #endif #ifndef GL_BLUE_MAX_CLAMP_INGR #define GL_BLUE_MAX_CLAMP_INGR 0x8566 #endif #ifndef GL_BLUE_MIN_CLAMP_INGR #define GL_BLUE_MIN_CLAMP_INGR 0x8562 #endif #ifndef GL_BLUE_NV #define GL_BLUE_NV 0x1905 #endif #ifndef GL_BLUE_SCALE #define GL_BLUE_SCALE 0x0D1A #endif #ifndef GL_BOLD_BIT_NV #define GL_BOLD_BIT_NV 0x01 #endif #ifndef GL_BOOL #define GL_BOOL 0x8B56 #endif #ifndef GL_BOOL_ARB #define GL_BOOL_ARB 0x8B56 #endif #ifndef GL_BOOL_VEC2 #define GL_BOOL_VEC2 0x8B57 #endif #ifndef GL_BOOL_VEC2_ARB #define GL_BOOL_VEC2_ARB 0x8B57 #endif #ifndef GL_BOOL_VEC3 #define GL_BOOL_VEC3 0x8B58 #endif #ifndef GL_BOOL_VEC3_ARB #define GL_BOOL_VEC3_ARB 0x8B58 #endif #ifndef GL_BOOL_VEC4 #define GL_BOOL_VEC4 0x8B59 #endif #ifndef GL_BOOL_VEC4_ARB #define GL_BOOL_VEC4_ARB 0x8B59 #endif #ifndef GL_BOUNDING_BOX_NV #define GL_BOUNDING_BOX_NV 0x908D #endif #ifndef GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV #define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C #endif #ifndef GL_BUFFER #define GL_BUFFER 0x82E0 #endif #ifndef GL_BUFFER_ACCESS #define GL_BUFFER_ACCESS 0x88BB #endif #ifndef GL_BUFFER_ACCESS_ARB #define GL_BUFFER_ACCESS_ARB 0x88BB #endif #ifndef GL_BUFFER_ACCESS_FLAGS #define GL_BUFFER_ACCESS_FLAGS 0x911F #endif #ifndef GL_BUFFER_BINDING #define GL_BUFFER_BINDING 0x9302 #endif #ifndef GL_BUFFER_DATA_SIZE #define GL_BUFFER_DATA_SIZE 0x9303 #endif #ifndef GL_BUFFER_FLUSHING_UNMAP_APPLE #define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 #endif #ifndef GL_BUFFER_GPU_ADDRESS_NV #define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D #endif #ifndef GL_BUFFER_IMMUTABLE_STORAGE #define GL_BUFFER_IMMUTABLE_STORAGE 0x821F #endif #ifndef GL_BUFFER_MAPPED #define GL_BUFFER_MAPPED 0x88BC #endif #ifndef GL_BUFFER_MAPPED_ARB #define GL_BUFFER_MAPPED_ARB 0x88BC #endif #ifndef GL_BUFFER_MAP_LENGTH #define GL_BUFFER_MAP_LENGTH 0x9120 #endif #ifndef GL_BUFFER_MAP_OFFSET #define GL_BUFFER_MAP_OFFSET 0x9121 #endif #ifndef GL_BUFFER_MAP_POINTER #define GL_BUFFER_MAP_POINTER 0x88BD #endif #ifndef GL_BUFFER_MAP_POINTER_ARB #define GL_BUFFER_MAP_POINTER_ARB 0x88BD #endif #ifndef GL_BUFFER_OBJECT_APPLE #define GL_BUFFER_OBJECT_APPLE 0x85B3 #endif #ifndef GL_BUFFER_OBJECT_EXT #define GL_BUFFER_OBJECT_EXT 0x9151 #endif #ifndef GL_BUFFER_SERIALIZED_MODIFY_APPLE #define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 #endif #ifndef GL_BUFFER_SIZE #define GL_BUFFER_SIZE 0x8764 #endif #ifndef GL_BUFFER_SIZE_ARB #define GL_BUFFER_SIZE_ARB 0x8764 #endif #ifndef GL_BUFFER_STORAGE_FLAGS #define GL_BUFFER_STORAGE_FLAGS 0x8220 #endif #ifndef GL_BUFFER_UPDATE_BARRIER_BIT #define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 #endif #ifndef GL_BUFFER_UPDATE_BARRIER_BIT_EXT #define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 #endif #ifndef GL_BUFFER_USAGE #define GL_BUFFER_USAGE 0x8765 #endif #ifndef GL_BUFFER_USAGE_ARB #define GL_BUFFER_USAGE_ARB 0x8765 #endif #ifndef GL_BUFFER_VARIABLE #define GL_BUFFER_VARIABLE 0x92E5 #endif #ifndef GL_BUMP_ENVMAP_ATI #define GL_BUMP_ENVMAP_ATI 0x877B #endif #ifndef GL_BUMP_NUM_TEX_UNITS_ATI #define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 #endif #ifndef GL_BUMP_ROT_MATRIX_ATI #define GL_BUMP_ROT_MATRIX_ATI 0x8775 #endif #ifndef GL_BUMP_ROT_MATRIX_SIZE_ATI #define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 #endif #ifndef GL_BUMP_TARGET_ATI #define GL_BUMP_TARGET_ATI 0x877C #endif #ifndef GL_BUMP_TEX_UNITS_ATI #define GL_BUMP_TEX_UNITS_ATI 0x8778 #endif #ifndef GL_BYTE #define GL_BYTE 0x1400 #endif #ifndef GL_C3F_V3F #define GL_C3F_V3F 0x2A24 #endif #ifndef GL_C4F_N3F_V3F #define GL_C4F_N3F_V3F 0x2A26 #endif #ifndef GL_C4UB_V2F #define GL_C4UB_V2F 0x2A22 #endif #ifndef GL_C4UB_V3F #define GL_C4UB_V3F 0x2A23 #endif #ifndef GL_CALLIGRAPHIC_FRAGMENT_SGIX #define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 #endif #ifndef GL_CAVEAT_SUPPORT #define GL_CAVEAT_SUPPORT 0x82B8 #endif #ifndef GL_CCW #define GL_CCW 0x0901 #endif #ifndef GL_CIRCULAR_CCW_ARC_TO_NV #define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 #endif #ifndef GL_CIRCULAR_CW_ARC_TO_NV #define GL_CIRCULAR_CW_ARC_TO_NV 0xFA #endif #ifndef GL_CIRCULAR_TANGENT_ARC_TO_NV #define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC #endif #ifndef GL_CLAMP #define GL_CLAMP 0x2900 #endif #ifndef GL_CLAMP_FRAGMENT_COLOR #define GL_CLAMP_FRAGMENT_COLOR 0x891B #endif #ifndef GL_CLAMP_FRAGMENT_COLOR_ARB #define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B #endif #ifndef GL_CLAMP_READ_COLOR #define GL_CLAMP_READ_COLOR 0x891C #endif #ifndef GL_CLAMP_READ_COLOR_ARB #define GL_CLAMP_READ_COLOR_ARB 0x891C #endif #ifndef GL_CLAMP_TO_BORDER #define GL_CLAMP_TO_BORDER 0x812D #endif #ifndef GL_CLAMP_TO_BORDER_ARB #define GL_CLAMP_TO_BORDER_ARB 0x812D #endif #ifndef GL_CLAMP_TO_BORDER_SGIS #define GL_CLAMP_TO_BORDER_SGIS 0x812D #endif #ifndef GL_CLAMP_TO_EDGE #define GL_CLAMP_TO_EDGE 0x812F #endif #ifndef GL_CLAMP_TO_EDGE_SGIS #define GL_CLAMP_TO_EDGE_SGIS 0x812F #endif #ifndef GL_CLAMP_VERTEX_COLOR #define GL_CLAMP_VERTEX_COLOR 0x891A #endif #ifndef GL_CLAMP_VERTEX_COLOR_ARB #define GL_CLAMP_VERTEX_COLOR_ARB 0x891A #endif #ifndef GL_CLEAR #define GL_CLEAR 0x1500 #endif #ifndef GL_CLEAR_BUFFER #define GL_CLEAR_BUFFER 0x82B4 #endif #ifndef GL_CLEAR_TEXTURE #define GL_CLEAR_TEXTURE 0x9365 #endif #ifndef GL_CLIENT_ACTIVE_TEXTURE #define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 #endif #ifndef GL_CLIENT_ACTIVE_TEXTURE_ARB #define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 #endif #ifndef GL_CLIENT_ATTRIB_STACK_DEPTH #define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 #endif #ifndef GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT #define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000 #endif #ifndef GL_CLIENT_STORAGE_BIT #define GL_CLIENT_STORAGE_BIT 0x0200 #endif #ifndef GL_CLIPPING_INPUT_PRIMITIVES_ARB #define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6 #endif #ifndef GL_CLIPPING_OUTPUT_PRIMITIVES_ARB #define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7 #endif #ifndef GL_CLIP_DEPTH_MODE #define GL_CLIP_DEPTH_MODE 0x935D #endif #ifndef GL_CLIP_DISTANCE0 #define GL_CLIP_DISTANCE0 0x3000 #endif #ifndef GL_CLIP_DISTANCE1 #define GL_CLIP_DISTANCE1 0x3001 #endif #ifndef GL_CLIP_DISTANCE2 #define GL_CLIP_DISTANCE2 0x3002 #endif #ifndef GL_CLIP_DISTANCE3 #define GL_CLIP_DISTANCE3 0x3003 #endif #ifndef GL_CLIP_DISTANCE4 #define GL_CLIP_DISTANCE4 0x3004 #endif #ifndef GL_CLIP_DISTANCE5 #define GL_CLIP_DISTANCE5 0x3005 #endif #ifndef GL_CLIP_DISTANCE6 #define GL_CLIP_DISTANCE6 0x3006 #endif #ifndef GL_CLIP_DISTANCE7 #define GL_CLIP_DISTANCE7 0x3007 #endif #ifndef GL_CLIP_DISTANCE_NV #define GL_CLIP_DISTANCE_NV 0x8C7A #endif #ifndef GL_CLIP_FAR_HINT_PGI #define GL_CLIP_FAR_HINT_PGI 0x1A221 #endif #ifndef GL_CLIP_NEAR_HINT_PGI #define GL_CLIP_NEAR_HINT_PGI 0x1A220 #endif #ifndef GL_CLIP_ORIGIN #define GL_CLIP_ORIGIN 0x935C #endif #ifndef GL_CLIP_PLANE0 #define GL_CLIP_PLANE0 0x3000 #endif #ifndef GL_CLIP_PLANE1 #define GL_CLIP_PLANE1 0x3001 #endif #ifndef GL_CLIP_PLANE2 #define GL_CLIP_PLANE2 0x3002 #endif #ifndef GL_CLIP_PLANE3 #define GL_CLIP_PLANE3 0x3003 #endif #ifndef GL_CLIP_PLANE4 #define GL_CLIP_PLANE4 0x3004 #endif #ifndef GL_CLIP_PLANE5 #define GL_CLIP_PLANE5 0x3005 #endif #ifndef GL_CLIP_VOLUME_CLIPPING_HINT_EXT #define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 #endif #ifndef GL_CLOSE_PATH_NV #define GL_CLOSE_PATH_NV 0x00 #endif #ifndef GL_CMYKA_EXT #define GL_CMYKA_EXT 0x800D #endif #ifndef GL_CMYK_EXT #define GL_CMYK_EXT 0x800C #endif #ifndef GL_CND0_ATI #define GL_CND0_ATI 0x896B #endif #ifndef GL_CND_ATI #define GL_CND_ATI 0x896A #endif #ifndef GL_COEFF #define GL_COEFF 0x0A00 #endif #ifndef GL_COLOR #define GL_COLOR 0x1800 #endif #ifndef GL_COLOR3_BIT_PGI #define GL_COLOR3_BIT_PGI 0x00010000 #endif #ifndef GL_COLOR4_BIT_PGI #define GL_COLOR4_BIT_PGI 0x00020000 #endif #ifndef GL_COLORBURN_KHR #define GL_COLORBURN_KHR 0x929A #endif #ifndef GL_COLORBURN_NV #define GL_COLORBURN_NV 0x929A #endif #ifndef GL_COLORDODGE_KHR #define GL_COLORDODGE_KHR 0x9299 #endif #ifndef GL_COLORDODGE_NV #define GL_COLORDODGE_NV 0x9299 #endif #ifndef GL_COLOR_ALPHA_PAIRING_ATI #define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 #endif #ifndef GL_COLOR_ARRAY #define GL_COLOR_ARRAY 0x8076 #endif #ifndef GL_COLOR_ARRAY_ADDRESS_NV #define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 #endif #ifndef GL_COLOR_ARRAY_BUFFER_BINDING #define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 #endif #ifndef GL_COLOR_ARRAY_BUFFER_BINDING_ARB #define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 #endif #ifndef GL_COLOR_ARRAY_COUNT_EXT #define GL_COLOR_ARRAY_COUNT_EXT 0x8084 #endif #ifndef GL_COLOR_ARRAY_EXT #define GL_COLOR_ARRAY_EXT 0x8076 #endif #ifndef GL_COLOR_ARRAY_LENGTH_NV #define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D #endif #ifndef GL_COLOR_ARRAY_LIST_IBM #define GL_COLOR_ARRAY_LIST_IBM 103072 #endif #ifndef GL_COLOR_ARRAY_LIST_STRIDE_IBM #define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 #endif #ifndef GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL #define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 #endif #ifndef GL_COLOR_ARRAY_POINTER #define GL_COLOR_ARRAY_POINTER 0x8090 #endif #ifndef GL_COLOR_ARRAY_POINTER_EXT #define GL_COLOR_ARRAY_POINTER_EXT 0x8090 #endif #ifndef GL_COLOR_ARRAY_SIZE #define GL_COLOR_ARRAY_SIZE 0x8081 #endif #ifndef GL_COLOR_ARRAY_SIZE_EXT #define GL_COLOR_ARRAY_SIZE_EXT 0x8081 #endif #ifndef GL_COLOR_ARRAY_STRIDE #define GL_COLOR_ARRAY_STRIDE 0x8083 #endif #ifndef GL_COLOR_ARRAY_STRIDE_EXT #define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 #endif #ifndef GL_COLOR_ARRAY_TYPE #define GL_COLOR_ARRAY_TYPE 0x8082 #endif #ifndef GL_COLOR_ARRAY_TYPE_EXT #define GL_COLOR_ARRAY_TYPE_EXT 0x8082 #endif #ifndef GL_COLOR_ATTACHMENT0 #define GL_COLOR_ATTACHMENT0 0x8CE0 #endif #ifndef GL_COLOR_ATTACHMENT0_EXT #define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 #endif #ifndef GL_COLOR_ATTACHMENT1 #define GL_COLOR_ATTACHMENT1 0x8CE1 #endif #ifndef GL_COLOR_ATTACHMENT10 #define GL_COLOR_ATTACHMENT10 0x8CEA #endif #ifndef GL_COLOR_ATTACHMENT10_EXT #define GL_COLOR_ATTACHMENT10_EXT 0x8CEA #endif #ifndef GL_COLOR_ATTACHMENT11 #define GL_COLOR_ATTACHMENT11 0x8CEB #endif #ifndef GL_COLOR_ATTACHMENT11_EXT #define GL_COLOR_ATTACHMENT11_EXT 0x8CEB #endif #ifndef GL_COLOR_ATTACHMENT12 #define GL_COLOR_ATTACHMENT12 0x8CEC #endif #ifndef GL_COLOR_ATTACHMENT12_EXT #define GL_COLOR_ATTACHMENT12_EXT 0x8CEC #endif #ifndef GL_COLOR_ATTACHMENT13 #define GL_COLOR_ATTACHMENT13 0x8CED #endif #ifndef GL_COLOR_ATTACHMENT13_EXT #define GL_COLOR_ATTACHMENT13_EXT 0x8CED #endif #ifndef GL_COLOR_ATTACHMENT14 #define GL_COLOR_ATTACHMENT14 0x8CEE #endif #ifndef GL_COLOR_ATTACHMENT14_EXT #define GL_COLOR_ATTACHMENT14_EXT 0x8CEE #endif #ifndef GL_COLOR_ATTACHMENT15 #define GL_COLOR_ATTACHMENT15 0x8CEF #endif #ifndef GL_COLOR_ATTACHMENT15_EXT #define GL_COLOR_ATTACHMENT15_EXT 0x8CEF #endif #ifndef GL_COLOR_ATTACHMENT16 #define GL_COLOR_ATTACHMENT16 0x8CF0 #endif #ifndef GL_COLOR_ATTACHMENT17 #define GL_COLOR_ATTACHMENT17 0x8CF1 #endif #ifndef GL_COLOR_ATTACHMENT18 #define GL_COLOR_ATTACHMENT18 0x8CF2 #endif #ifndef GL_COLOR_ATTACHMENT19 #define GL_COLOR_ATTACHMENT19 0x8CF3 #endif #ifndef GL_COLOR_ATTACHMENT1_EXT #define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 #endif #ifndef GL_COLOR_ATTACHMENT2 #define GL_COLOR_ATTACHMENT2 0x8CE2 #endif #ifndef GL_COLOR_ATTACHMENT20 #define GL_COLOR_ATTACHMENT20 0x8CF4 #endif #ifndef GL_COLOR_ATTACHMENT21 #define GL_COLOR_ATTACHMENT21 0x8CF5 #endif #ifndef GL_COLOR_ATTACHMENT22 #define GL_COLOR_ATTACHMENT22 0x8CF6 #endif #ifndef GL_COLOR_ATTACHMENT23 #define GL_COLOR_ATTACHMENT23 0x8CF7 #endif #ifndef GL_COLOR_ATTACHMENT24 #define GL_COLOR_ATTACHMENT24 0x8CF8 #endif #ifndef GL_COLOR_ATTACHMENT25 #define GL_COLOR_ATTACHMENT25 0x8CF9 #endif #ifndef GL_COLOR_ATTACHMENT26 #define GL_COLOR_ATTACHMENT26 0x8CFA #endif #ifndef GL_COLOR_ATTACHMENT27 #define GL_COLOR_ATTACHMENT27 0x8CFB #endif #ifndef GL_COLOR_ATTACHMENT28 #define GL_COLOR_ATTACHMENT28 0x8CFC #endif #ifndef GL_COLOR_ATTACHMENT29 #define GL_COLOR_ATTACHMENT29 0x8CFD #endif #ifndef GL_COLOR_ATTACHMENT2_EXT #define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 #endif #ifndef GL_COLOR_ATTACHMENT3 #define GL_COLOR_ATTACHMENT3 0x8CE3 #endif #ifndef GL_COLOR_ATTACHMENT30 #define GL_COLOR_ATTACHMENT30 0x8CFE #endif #ifndef GL_COLOR_ATTACHMENT31 #define GL_COLOR_ATTACHMENT31 0x8CFF #endif #ifndef GL_COLOR_ATTACHMENT3_EXT #define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 #endif #ifndef GL_COLOR_ATTACHMENT4 #define GL_COLOR_ATTACHMENT4 0x8CE4 #endif #ifndef GL_COLOR_ATTACHMENT4_EXT #define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 #endif #ifndef GL_COLOR_ATTACHMENT5 #define GL_COLOR_ATTACHMENT5 0x8CE5 #endif #ifndef GL_COLOR_ATTACHMENT5_EXT #define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 #endif #ifndef GL_COLOR_ATTACHMENT6 #define GL_COLOR_ATTACHMENT6 0x8CE6 #endif #ifndef GL_COLOR_ATTACHMENT6_EXT #define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 #endif #ifndef GL_COLOR_ATTACHMENT7 #define GL_COLOR_ATTACHMENT7 0x8CE7 #endif #ifndef GL_COLOR_ATTACHMENT7_EXT #define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 #endif #ifndef GL_COLOR_ATTACHMENT8 #define GL_COLOR_ATTACHMENT8 0x8CE8 #endif #ifndef GL_COLOR_ATTACHMENT8_EXT #define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 #endif #ifndef GL_COLOR_ATTACHMENT9 #define GL_COLOR_ATTACHMENT9 0x8CE9 #endif #ifndef GL_COLOR_ATTACHMENT9_EXT #define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 #endif #ifndef GL_COLOR_BUFFER_BIT #define GL_COLOR_BUFFER_BIT 0x00004000 #endif #ifndef GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI #define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 #endif #ifndef GL_COLOR_CLEAR_VALUE #define GL_COLOR_CLEAR_VALUE 0x0C22 #endif #ifndef GL_COLOR_COMPONENTS #define GL_COLOR_COMPONENTS 0x8283 #endif #ifndef GL_COLOR_ENCODING #define GL_COLOR_ENCODING 0x8296 #endif #ifndef GL_COLOR_FLOAT_APPLE #define GL_COLOR_FLOAT_APPLE 0x8A0F #endif #ifndef GL_COLOR_INDEX #define GL_COLOR_INDEX 0x1900 #endif #ifndef GL_COLOR_INDEX12_EXT #define GL_COLOR_INDEX12_EXT 0x80E6 #endif #ifndef GL_COLOR_INDEX16_EXT #define GL_COLOR_INDEX16_EXT 0x80E7 #endif #ifndef GL_COLOR_INDEX1_EXT #define GL_COLOR_INDEX1_EXT 0x80E2 #endif #ifndef GL_COLOR_INDEX2_EXT #define GL_COLOR_INDEX2_EXT 0x80E3 #endif #ifndef GL_COLOR_INDEX4_EXT #define GL_COLOR_INDEX4_EXT 0x80E4 #endif #ifndef GL_COLOR_INDEX8_EXT #define GL_COLOR_INDEX8_EXT 0x80E5 #endif #ifndef GL_COLOR_INDEXES #define GL_COLOR_INDEXES 0x1603 #endif #ifndef GL_COLOR_LOGIC_OP #define GL_COLOR_LOGIC_OP 0x0BF2 #endif #ifndef GL_COLOR_MATERIAL #define GL_COLOR_MATERIAL 0x0B57 #endif #ifndef GL_COLOR_MATERIAL_FACE #define GL_COLOR_MATERIAL_FACE 0x0B55 #endif #ifndef GL_COLOR_MATERIAL_PARAMETER #define GL_COLOR_MATERIAL_PARAMETER 0x0B56 #endif #ifndef GL_COLOR_MATRIX #define GL_COLOR_MATRIX 0x80B1 #endif #ifndef GL_COLOR_MATRIX_SGI #define GL_COLOR_MATRIX_SGI 0x80B1 #endif #ifndef GL_COLOR_MATRIX_STACK_DEPTH #define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 #endif #ifndef GL_COLOR_MATRIX_STACK_DEPTH_SGI #define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 #endif #ifndef GL_COLOR_RENDERABLE #define GL_COLOR_RENDERABLE 0x8286 #endif #ifndef GL_COLOR_SAMPLES_NV #define GL_COLOR_SAMPLES_NV 0x8E20 #endif #ifndef GL_COLOR_SUM #define GL_COLOR_SUM 0x8458 #endif #ifndef GL_COLOR_SUM_ARB #define GL_COLOR_SUM_ARB 0x8458 #endif #ifndef GL_COLOR_SUM_CLAMP_NV #define GL_COLOR_SUM_CLAMP_NV 0x854F #endif #ifndef GL_COLOR_SUM_EXT #define GL_COLOR_SUM_EXT 0x8458 #endif #ifndef GL_COLOR_TABLE #define GL_COLOR_TABLE 0x80D0 #endif #ifndef GL_COLOR_TABLE_ALPHA_SIZE #define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD #endif #ifndef GL_COLOR_TABLE_ALPHA_SIZE_SGI #define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD #endif #ifndef GL_COLOR_TABLE_BIAS #define GL_COLOR_TABLE_BIAS 0x80D7 #endif #ifndef GL_COLOR_TABLE_BIAS_SGI #define GL_COLOR_TABLE_BIAS_SGI 0x80D7 #endif #ifndef GL_COLOR_TABLE_BLUE_SIZE #define GL_COLOR_TABLE_BLUE_SIZE 0x80DC #endif #ifndef GL_COLOR_TABLE_BLUE_SIZE_SGI #define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC #endif #ifndef GL_COLOR_TABLE_FORMAT #define GL_COLOR_TABLE_FORMAT 0x80D8 #endif #ifndef GL_COLOR_TABLE_FORMAT_SGI #define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 #endif #ifndef GL_COLOR_TABLE_GREEN_SIZE #define GL_COLOR_TABLE_GREEN_SIZE 0x80DB #endif #ifndef GL_COLOR_TABLE_GREEN_SIZE_SGI #define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB #endif #ifndef GL_COLOR_TABLE_INTENSITY_SIZE #define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF #endif #ifndef GL_COLOR_TABLE_INTENSITY_SIZE_SGI #define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF #endif #ifndef GL_COLOR_TABLE_LUMINANCE_SIZE #define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE #endif #ifndef GL_COLOR_TABLE_LUMINANCE_SIZE_SGI #define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE #endif #ifndef GL_COLOR_TABLE_RED_SIZE #define GL_COLOR_TABLE_RED_SIZE 0x80DA #endif #ifndef GL_COLOR_TABLE_RED_SIZE_SGI #define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA #endif #ifndef GL_COLOR_TABLE_SCALE #define GL_COLOR_TABLE_SCALE 0x80D6 #endif #ifndef GL_COLOR_TABLE_SCALE_SGI #define GL_COLOR_TABLE_SCALE_SGI 0x80D6 #endif #ifndef GL_COLOR_TABLE_SGI #define GL_COLOR_TABLE_SGI 0x80D0 #endif #ifndef GL_COLOR_TABLE_WIDTH #define GL_COLOR_TABLE_WIDTH 0x80D9 #endif #ifndef GL_COLOR_TABLE_WIDTH_SGI #define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 #endif #ifndef GL_COLOR_WRITEMASK #define GL_COLOR_WRITEMASK 0x0C23 #endif #ifndef GL_COMBINE #define GL_COMBINE 0x8570 #endif #ifndef GL_COMBINE4_NV #define GL_COMBINE4_NV 0x8503 #endif #ifndef GL_COMBINER0_NV #define GL_COMBINER0_NV 0x8550 #endif #ifndef GL_COMBINER1_NV #define GL_COMBINER1_NV 0x8551 #endif #ifndef GL_COMBINER2_NV #define GL_COMBINER2_NV 0x8552 #endif #ifndef GL_COMBINER3_NV #define GL_COMBINER3_NV 0x8553 #endif #ifndef GL_COMBINER4_NV #define GL_COMBINER4_NV 0x8554 #endif #ifndef GL_COMBINER5_NV #define GL_COMBINER5_NV 0x8555 #endif #ifndef GL_COMBINER6_NV #define GL_COMBINER6_NV 0x8556 #endif #ifndef GL_COMBINER7_NV #define GL_COMBINER7_NV 0x8557 #endif #ifndef GL_COMBINER_AB_DOT_PRODUCT_NV #define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 #endif #ifndef GL_COMBINER_AB_OUTPUT_NV #define GL_COMBINER_AB_OUTPUT_NV 0x854A #endif #ifndef GL_COMBINER_BIAS_NV #define GL_COMBINER_BIAS_NV 0x8549 #endif #ifndef GL_COMBINER_CD_DOT_PRODUCT_NV #define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 #endif #ifndef GL_COMBINER_CD_OUTPUT_NV #define GL_COMBINER_CD_OUTPUT_NV 0x854B #endif #ifndef GL_COMBINER_COMPONENT_USAGE_NV #define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 #endif #ifndef GL_COMBINER_INPUT_NV #define GL_COMBINER_INPUT_NV 0x8542 #endif #ifndef GL_COMBINER_MAPPING_NV #define GL_COMBINER_MAPPING_NV 0x8543 #endif #ifndef GL_COMBINER_MUX_SUM_NV #define GL_COMBINER_MUX_SUM_NV 0x8547 #endif #ifndef GL_COMBINER_SCALE_NV #define GL_COMBINER_SCALE_NV 0x8548 #endif #ifndef GL_COMBINER_SUM_OUTPUT_NV #define GL_COMBINER_SUM_OUTPUT_NV 0x854C #endif #ifndef GL_COMBINE_ALPHA #define GL_COMBINE_ALPHA 0x8572 #endif #ifndef GL_COMBINE_ALPHA_ARB #define GL_COMBINE_ALPHA_ARB 0x8572 #endif #ifndef GL_COMBINE_ALPHA_EXT #define GL_COMBINE_ALPHA_EXT 0x8572 #endif #ifndef GL_COMBINE_ARB #define GL_COMBINE_ARB 0x8570 #endif #ifndef GL_COMBINE_EXT #define GL_COMBINE_EXT 0x8570 #endif #ifndef GL_COMBINE_RGB #define GL_COMBINE_RGB 0x8571 #endif #ifndef GL_COMBINE_RGB_ARB #define GL_COMBINE_RGB_ARB 0x8571 #endif #ifndef GL_COMBINE_RGB_EXT #define GL_COMBINE_RGB_EXT 0x8571 #endif #ifndef GL_COMMAND_BARRIER_BIT #define GL_COMMAND_BARRIER_BIT 0x00000040 #endif #ifndef GL_COMMAND_BARRIER_BIT_EXT #define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 #endif #ifndef GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT #define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E #endif #ifndef GL_COMPARE_REF_TO_TEXTURE #define GL_COMPARE_REF_TO_TEXTURE 0x884E #endif #ifndef GL_COMPARE_R_TO_TEXTURE #define GL_COMPARE_R_TO_TEXTURE 0x884E #endif #ifndef GL_COMPARE_R_TO_TEXTURE_ARB #define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E #endif #ifndef GL_COMPATIBLE_SUBROUTINES #define GL_COMPATIBLE_SUBROUTINES 0x8E4B #endif #ifndef GL_COMPILE #define GL_COMPILE 0x1300 #endif #ifndef GL_COMPILE_AND_EXECUTE #define GL_COMPILE_AND_EXECUTE 0x1301 #endif #ifndef GL_COMPILE_STATUS #define GL_COMPILE_STATUS 0x8B81 #endif #ifndef GL_COMPRESSED_ALPHA #define GL_COMPRESSED_ALPHA 0x84E9 #endif #ifndef GL_COMPRESSED_ALPHA_ARB #define GL_COMPRESSED_ALPHA_ARB 0x84E9 #endif #ifndef GL_COMPRESSED_INTENSITY #define GL_COMPRESSED_INTENSITY 0x84EC #endif #ifndef GL_COMPRESSED_INTENSITY_ARB #define GL_COMPRESSED_INTENSITY_ARB 0x84EC #endif #ifndef GL_COMPRESSED_LUMINANCE #define GL_COMPRESSED_LUMINANCE 0x84EA #endif #ifndef GL_COMPRESSED_LUMINANCE_ALPHA #define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB #endif #ifndef GL_COMPRESSED_LUMINANCE_ALPHA_ARB #define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB #endif #ifndef GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT #define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 #endif #ifndef GL_COMPRESSED_LUMINANCE_ARB #define GL_COMPRESSED_LUMINANCE_ARB 0x84EA #endif #ifndef GL_COMPRESSED_LUMINANCE_LATC1_EXT #define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 #endif #ifndef GL_COMPRESSED_R11_EAC #define GL_COMPRESSED_R11_EAC 0x9270 #endif #ifndef GL_COMPRESSED_RED #define GL_COMPRESSED_RED 0x8225 #endif #ifndef GL_COMPRESSED_RED_GREEN_RGTC2_EXT #define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD #endif #ifndef GL_COMPRESSED_RED_RGTC1 #define GL_COMPRESSED_RED_RGTC1 0x8DBB #endif #ifndef GL_COMPRESSED_RED_RGTC1_EXT #define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB #endif #ifndef GL_COMPRESSED_RG #define GL_COMPRESSED_RG 0x8226 #endif #ifndef GL_COMPRESSED_RG11_EAC #define GL_COMPRESSED_RG11_EAC 0x9272 #endif #ifndef GL_COMPRESSED_RGB #define GL_COMPRESSED_RGB 0x84ED #endif #ifndef GL_COMPRESSED_RGB8_ETC2 #define GL_COMPRESSED_RGB8_ETC2 0x9274 #endif #ifndef GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 #define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 #endif #ifndef GL_COMPRESSED_RGBA #define GL_COMPRESSED_RGBA 0x84EE #endif #ifndef GL_COMPRESSED_RGBA8_ETC2_EAC #define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 #endif #ifndef GL_COMPRESSED_RGBA_ARB #define GL_COMPRESSED_RGBA_ARB 0x84EE #endif #ifndef GL_COMPRESSED_RGBA_ASTC_10x10_KHR #define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB #endif #ifndef GL_COMPRESSED_RGBA_ASTC_10x5_KHR #define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 #endif #ifndef GL_COMPRESSED_RGBA_ASTC_10x6_KHR #define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 #endif #ifndef GL_COMPRESSED_RGBA_ASTC_10x8_KHR #define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA #endif #ifndef GL_COMPRESSED_RGBA_ASTC_12x10_KHR #define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC #endif #ifndef GL_COMPRESSED_RGBA_ASTC_12x12_KHR #define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD #endif #ifndef GL_COMPRESSED_RGBA_ASTC_4x4_KHR #define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 #endif #ifndef GL_COMPRESSED_RGBA_ASTC_5x4_KHR #define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 #endif #ifndef GL_COMPRESSED_RGBA_ASTC_5x5_KHR #define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 #endif #ifndef GL_COMPRESSED_RGBA_ASTC_6x5_KHR #define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 #endif #ifndef GL_COMPRESSED_RGBA_ASTC_6x6_KHR #define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 #endif #ifndef GL_COMPRESSED_RGBA_ASTC_8x5_KHR #define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 #endif #ifndef GL_COMPRESSED_RGBA_ASTC_8x6_KHR #define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 #endif #ifndef GL_COMPRESSED_RGBA_ASTC_8x8_KHR #define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 #endif #ifndef GL_COMPRESSED_RGBA_BPTC_UNORM #define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C #endif #ifndef GL_COMPRESSED_RGBA_BPTC_UNORM_ARB #define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C #endif #ifndef GL_COMPRESSED_RGBA_FXT1_3DFX #define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 #endif #ifndef GL_COMPRESSED_RGBA_S3TC_DXT1_EXT #define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 #endif #ifndef GL_COMPRESSED_RGBA_S3TC_DXT3_EXT #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 #endif #ifndef GL_COMPRESSED_RGBA_S3TC_DXT5_EXT #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 #endif #ifndef GL_COMPRESSED_RGB_ARB #define GL_COMPRESSED_RGB_ARB 0x84ED #endif #ifndef GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT #define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E #endif #ifndef GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB #define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E #endif #ifndef GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT #define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F #endif #ifndef GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB #define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F #endif #ifndef GL_COMPRESSED_RGB_FXT1_3DFX #define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 #endif #ifndef GL_COMPRESSED_RGB_S3TC_DXT1_EXT #define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 #endif #ifndef GL_COMPRESSED_RG_RGTC2 #define GL_COMPRESSED_RG_RGTC2 0x8DBD #endif #ifndef GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT #define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 #endif #ifndef GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT #define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 #endif #ifndef GL_COMPRESSED_SIGNED_R11_EAC #define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 #endif #ifndef GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT #define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE #endif #ifndef GL_COMPRESSED_SIGNED_RED_RGTC1 #define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC #endif #ifndef GL_COMPRESSED_SIGNED_RED_RGTC1_EXT #define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC #endif #ifndef GL_COMPRESSED_SIGNED_RG11_EAC #define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 #endif #ifndef GL_COMPRESSED_SIGNED_RG_RGTC2 #define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE #endif #ifndef GL_COMPRESSED_SLUMINANCE #define GL_COMPRESSED_SLUMINANCE 0x8C4A #endif #ifndef GL_COMPRESSED_SLUMINANCE_ALPHA #define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B #endif #ifndef GL_COMPRESSED_SLUMINANCE_ALPHA_EXT #define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B #endif #ifndef GL_COMPRESSED_SLUMINANCE_EXT #define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A #endif #ifndef GL_COMPRESSED_SRGB #define GL_COMPRESSED_SRGB 0x8C48 #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 #endif #ifndef GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC #define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 #endif #ifndef GL_COMPRESSED_SRGB8_ETC2 #define GL_COMPRESSED_SRGB8_ETC2 0x9275 #endif #ifndef GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 #define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 #endif #ifndef GL_COMPRESSED_SRGB_ALPHA #define GL_COMPRESSED_SRGB_ALPHA 0x8C49 #endif #ifndef GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM #define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D #endif #ifndef GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB #define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D #endif #ifndef GL_COMPRESSED_SRGB_ALPHA_EXT #define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 #endif #ifndef GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D #endif #ifndef GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E #endif #ifndef GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F #endif #ifndef GL_COMPRESSED_SRGB_EXT #define GL_COMPRESSED_SRGB_EXT 0x8C48 #endif #ifndef GL_COMPRESSED_SRGB_S3TC_DXT1_EXT #define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C #endif #ifndef GL_COMPRESSED_TEXTURE_FORMATS #define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 #endif #ifndef GL_COMPRESSED_TEXTURE_FORMATS_ARB #define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 #endif #ifndef GL_COMPUTE_PROGRAM_NV #define GL_COMPUTE_PROGRAM_NV 0x90FB #endif #ifndef GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV #define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC #endif #ifndef GL_COMPUTE_SHADER #define GL_COMPUTE_SHADER 0x91B9 #endif #ifndef GL_COMPUTE_SHADER_BIT #define GL_COMPUTE_SHADER_BIT 0x00000020 #endif #ifndef GL_COMPUTE_SHADER_INVOCATIONS_ARB #define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5 #endif #ifndef GL_COMPUTE_SUBROUTINE #define GL_COMPUTE_SUBROUTINE 0x92ED #endif #ifndef GL_COMPUTE_SUBROUTINE_UNIFORM #define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 #endif #ifndef GL_COMPUTE_TEXTURE #define GL_COMPUTE_TEXTURE 0x82A0 #endif #ifndef GL_COMPUTE_WORK_GROUP_SIZE #define GL_COMPUTE_WORK_GROUP_SIZE 0x8267 #endif #ifndef GL_COMP_BIT_ATI #define GL_COMP_BIT_ATI 0x00000002 #endif #ifndef GL_CONDITION_SATISFIED #define GL_CONDITION_SATISFIED 0x911C #endif #ifndef GL_CONFORMANT_NV #define GL_CONFORMANT_NV 0x9374 #endif #ifndef GL_CONIC_CURVE_TO_NV #define GL_CONIC_CURVE_TO_NV 0x1A #endif #ifndef GL_CONJOINT_NV #define GL_CONJOINT_NV 0x9284 #endif #ifndef GL_CONSERVATIVE_RASTERIZATION_NV #define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346 #endif #ifndef GL_CONSERVE_MEMORY_HINT_PGI #define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD #endif #ifndef GL_CONSTANT #define GL_CONSTANT 0x8576 #endif #ifndef GL_CONSTANT_ALPHA #define GL_CONSTANT_ALPHA 0x8003 #endif #ifndef GL_CONSTANT_ALPHA_EXT #define GL_CONSTANT_ALPHA_EXT 0x8003 #endif #ifndef GL_CONSTANT_ARB #define GL_CONSTANT_ARB 0x8576 #endif #ifndef GL_CONSTANT_ATTENUATION #define GL_CONSTANT_ATTENUATION 0x1207 #endif #ifndef GL_CONSTANT_BORDER #define GL_CONSTANT_BORDER 0x8151 #endif #ifndef GL_CONSTANT_BORDER_HP #define GL_CONSTANT_BORDER_HP 0x8151 #endif #ifndef GL_CONSTANT_COLOR #define GL_CONSTANT_COLOR 0x8001 #endif #ifndef GL_CONSTANT_COLOR0_NV #define GL_CONSTANT_COLOR0_NV 0x852A #endif #ifndef GL_CONSTANT_COLOR1_NV #define GL_CONSTANT_COLOR1_NV 0x852B #endif #ifndef GL_CONSTANT_COLOR_EXT #define GL_CONSTANT_COLOR_EXT 0x8001 #endif #ifndef GL_CONSTANT_EXT #define GL_CONSTANT_EXT 0x8576 #endif #ifndef GL_CONSTANT_NV #define GL_CONSTANT_NV 0x8576 #endif #ifndef GL_CONST_EYE_NV #define GL_CONST_EYE_NV 0x86E5 #endif #ifndef GL_CONTEXT_COMPATIBILITY_PROFILE_BIT #define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 #endif #ifndef GL_CONTEXT_CORE_PROFILE_BIT #define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 #endif #ifndef GL_CONTEXT_FLAGS #define GL_CONTEXT_FLAGS 0x821E #endif #ifndef GL_CONTEXT_FLAG_DEBUG_BIT #define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 #endif #ifndef GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT #define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 #endif #ifndef GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR #define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 #endif #ifndef GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT #define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004 #endif #ifndef GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB #define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 #endif #ifndef GL_CONTEXT_LOST #define GL_CONTEXT_LOST 0x0507 #endif #ifndef GL_CONTEXT_PROFILE_MASK #define GL_CONTEXT_PROFILE_MASK 0x9126 #endif #ifndef GL_CONTEXT_RELEASE_BEHAVIOR #define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB #endif #ifndef GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH #define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC #endif #ifndef GL_CONTEXT_ROBUST_ACCESS #define GL_CONTEXT_ROBUST_ACCESS 0x90F3 #endif #ifndef GL_CONTINUOUS_AMD #define GL_CONTINUOUS_AMD 0x9007 #endif #ifndef GL_CONTRAST_NV #define GL_CONTRAST_NV 0x92A1 #endif #ifndef GL_CONVEX_HULL_NV #define GL_CONVEX_HULL_NV 0x908B #endif #ifndef GL_CONVOLUTION_1D #define GL_CONVOLUTION_1D 0x8010 #endif #ifndef GL_CONVOLUTION_1D_EXT #define GL_CONVOLUTION_1D_EXT 0x8010 #endif #ifndef GL_CONVOLUTION_2D #define GL_CONVOLUTION_2D 0x8011 #endif #ifndef GL_CONVOLUTION_2D_EXT #define GL_CONVOLUTION_2D_EXT 0x8011 #endif #ifndef GL_CONVOLUTION_BORDER_COLOR #define GL_CONVOLUTION_BORDER_COLOR 0x8154 #endif #ifndef GL_CONVOLUTION_BORDER_COLOR_HP #define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 #endif #ifndef GL_CONVOLUTION_BORDER_MODE #define GL_CONVOLUTION_BORDER_MODE 0x8013 #endif #ifndef GL_CONVOLUTION_BORDER_MODE_EXT #define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 #endif #ifndef GL_CONVOLUTION_FILTER_BIAS #define GL_CONVOLUTION_FILTER_BIAS 0x8015 #endif #ifndef GL_CONVOLUTION_FILTER_BIAS_EXT #define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 #endif #ifndef GL_CONVOLUTION_FILTER_SCALE #define GL_CONVOLUTION_FILTER_SCALE 0x8014 #endif #ifndef GL_CONVOLUTION_FILTER_SCALE_EXT #define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 #endif #ifndef GL_CONVOLUTION_FORMAT #define GL_CONVOLUTION_FORMAT 0x8017 #endif #ifndef GL_CONVOLUTION_FORMAT_EXT #define GL_CONVOLUTION_FORMAT_EXT 0x8017 #endif #ifndef GL_CONVOLUTION_HEIGHT #define GL_CONVOLUTION_HEIGHT 0x8019 #endif #ifndef GL_CONVOLUTION_HEIGHT_EXT #define GL_CONVOLUTION_HEIGHT_EXT 0x8019 #endif #ifndef GL_CONVOLUTION_HINT_SGIX #define GL_CONVOLUTION_HINT_SGIX 0x8316 #endif #ifndef GL_CONVOLUTION_WIDTH #define GL_CONVOLUTION_WIDTH 0x8018 #endif #ifndef GL_CONVOLUTION_WIDTH_EXT #define GL_CONVOLUTION_WIDTH_EXT 0x8018 #endif #ifndef GL_CON_0_ATI #define GL_CON_0_ATI 0x8941 #endif #ifndef GL_CON_10_ATI #define GL_CON_10_ATI 0x894B #endif #ifndef GL_CON_11_ATI #define GL_CON_11_ATI 0x894C #endif #ifndef GL_CON_12_ATI #define GL_CON_12_ATI 0x894D #endif #ifndef GL_CON_13_ATI #define GL_CON_13_ATI 0x894E #endif #ifndef GL_CON_14_ATI #define GL_CON_14_ATI 0x894F #endif #ifndef GL_CON_15_ATI #define GL_CON_15_ATI 0x8950 #endif #ifndef GL_CON_16_ATI #define GL_CON_16_ATI 0x8951 #endif #ifndef GL_CON_17_ATI #define GL_CON_17_ATI 0x8952 #endif #ifndef GL_CON_18_ATI #define GL_CON_18_ATI 0x8953 #endif #ifndef GL_CON_19_ATI #define GL_CON_19_ATI 0x8954 #endif #ifndef GL_CON_1_ATI #define GL_CON_1_ATI 0x8942 #endif #ifndef GL_CON_20_ATI #define GL_CON_20_ATI 0x8955 #endif #ifndef GL_CON_21_ATI #define GL_CON_21_ATI 0x8956 #endif #ifndef GL_CON_22_ATI #define GL_CON_22_ATI 0x8957 #endif #ifndef GL_CON_23_ATI #define GL_CON_23_ATI 0x8958 #endif #ifndef GL_CON_24_ATI #define GL_CON_24_ATI 0x8959 #endif #ifndef GL_CON_25_ATI #define GL_CON_25_ATI 0x895A #endif #ifndef GL_CON_26_ATI #define GL_CON_26_ATI 0x895B #endif #ifndef GL_CON_27_ATI #define GL_CON_27_ATI 0x895C #endif #ifndef GL_CON_28_ATI #define GL_CON_28_ATI 0x895D #endif #ifndef GL_CON_29_ATI #define GL_CON_29_ATI 0x895E #endif #ifndef GL_CON_2_ATI #define GL_CON_2_ATI 0x8943 #endif #ifndef GL_CON_30_ATI #define GL_CON_30_ATI 0x895F #endif #ifndef GL_CON_31_ATI #define GL_CON_31_ATI 0x8960 #endif #ifndef GL_CON_3_ATI #define GL_CON_3_ATI 0x8944 #endif #ifndef GL_CON_4_ATI #define GL_CON_4_ATI 0x8945 #endif #ifndef GL_CON_5_ATI #define GL_CON_5_ATI 0x8946 #endif #ifndef GL_CON_6_ATI #define GL_CON_6_ATI 0x8947 #endif #ifndef GL_CON_7_ATI #define GL_CON_7_ATI 0x8948 #endif #ifndef GL_CON_8_ATI #define GL_CON_8_ATI 0x8949 #endif #ifndef GL_CON_9_ATI #define GL_CON_9_ATI 0x894A #endif #ifndef GL_COORD_REPLACE #define GL_COORD_REPLACE 0x8862 #endif #ifndef GL_COORD_REPLACE_ARB #define GL_COORD_REPLACE_ARB 0x8862 #endif #ifndef GL_COORD_REPLACE_NV #define GL_COORD_REPLACE_NV 0x8862 #endif #ifndef GL_COPY #define GL_COPY 0x1503 #endif #ifndef GL_COPY_INVERTED #define GL_COPY_INVERTED 0x150C #endif #ifndef GL_COPY_PIXEL_TOKEN #define GL_COPY_PIXEL_TOKEN 0x0706 #endif #ifndef GL_COPY_READ_BUFFER #define GL_COPY_READ_BUFFER 0x8F36 #endif #ifndef GL_COPY_READ_BUFFER_BINDING #define GL_COPY_READ_BUFFER_BINDING 0x8F36 #endif #ifndef GL_COPY_WRITE_BUFFER #define GL_COPY_WRITE_BUFFER 0x8F37 #endif #ifndef GL_COPY_WRITE_BUFFER_BINDING #define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 #endif #ifndef GL_COUNTER_RANGE_AMD #define GL_COUNTER_RANGE_AMD 0x8BC1 #endif #ifndef GL_COUNTER_TYPE_AMD #define GL_COUNTER_TYPE_AMD 0x8BC0 #endif #ifndef GL_COUNT_DOWN_NV #define GL_COUNT_DOWN_NV 0x9089 #endif #ifndef GL_COUNT_UP_NV #define GL_COUNT_UP_NV 0x9088 #endif #ifndef GL_COVERAGE_MODULATION_NV #define GL_COVERAGE_MODULATION_NV 0x9332 #endif #ifndef GL_COVERAGE_MODULATION_TABLE_NV #define GL_COVERAGE_MODULATION_TABLE_NV 0x9331 #endif #ifndef GL_COVERAGE_MODULATION_TABLE_SIZE_NV #define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 #endif #ifndef GL_COVERAGE_SAMPLES_NV #define GL_COVERAGE_SAMPLES_NV 0x80A9 #endif #ifndef GL_CUBIC_CURVE_TO_NV #define GL_CUBIC_CURVE_TO_NV 0x0C #endif #ifndef GL_CUBIC_EXT #define GL_CUBIC_EXT 0x8334 #endif #ifndef GL_CUBIC_HP #define GL_CUBIC_HP 0x815F #endif #ifndef GL_CULL_FACE #define GL_CULL_FACE 0x0B44 #endif #ifndef GL_CULL_FACE_MODE #define GL_CULL_FACE_MODE 0x0B45 #endif #ifndef GL_CULL_FRAGMENT_NV #define GL_CULL_FRAGMENT_NV 0x86E7 #endif #ifndef GL_CULL_MODES_NV #define GL_CULL_MODES_NV 0x86E0 #endif #ifndef GL_CULL_VERTEX_EXT #define GL_CULL_VERTEX_EXT 0x81AA #endif #ifndef GL_CULL_VERTEX_EYE_POSITION_EXT #define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB #endif #ifndef GL_CULL_VERTEX_IBM #define GL_CULL_VERTEX_IBM 103050 #endif #ifndef GL_CULL_VERTEX_OBJECT_POSITION_EXT #define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC #endif #ifndef GL_CURRENT_ATTRIB_NV #define GL_CURRENT_ATTRIB_NV 0x8626 #endif #ifndef GL_CURRENT_BINORMAL_EXT #define GL_CURRENT_BINORMAL_EXT 0x843C #endif #ifndef GL_CURRENT_BIT #define GL_CURRENT_BIT 0x00000001 #endif #ifndef GL_CURRENT_COLOR #define GL_CURRENT_COLOR 0x0B00 #endif #ifndef GL_CURRENT_FOG_COORD #define GL_CURRENT_FOG_COORD 0x8453 #endif #ifndef GL_CURRENT_FOG_COORDINATE #define GL_CURRENT_FOG_COORDINATE 0x8453 #endif #ifndef GL_CURRENT_FOG_COORDINATE_EXT #define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 #endif #ifndef GL_CURRENT_INDEX #define GL_CURRENT_INDEX 0x0B01 #endif #ifndef GL_CURRENT_MATRIX_ARB #define GL_CURRENT_MATRIX_ARB 0x8641 #endif #ifndef GL_CURRENT_MATRIX_INDEX_ARB #define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 #endif #ifndef GL_CURRENT_MATRIX_NV #define GL_CURRENT_MATRIX_NV 0x8641 #endif #ifndef GL_CURRENT_MATRIX_STACK_DEPTH_ARB #define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 #endif #ifndef GL_CURRENT_MATRIX_STACK_DEPTH_NV #define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 #endif #ifndef GL_CURRENT_NORMAL #define GL_CURRENT_NORMAL 0x0B02 #endif #ifndef GL_CURRENT_OCCLUSION_QUERY_ID_NV #define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 #endif #ifndef GL_CURRENT_PALETTE_MATRIX_ARB #define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 #endif #ifndef GL_CURRENT_PROGRAM #define GL_CURRENT_PROGRAM 0x8B8D #endif #ifndef GL_CURRENT_QUERY #define GL_CURRENT_QUERY 0x8865 #endif #ifndef GL_CURRENT_QUERY_ARB #define GL_CURRENT_QUERY_ARB 0x8865 #endif #ifndef GL_CURRENT_RASTER_COLOR #define GL_CURRENT_RASTER_COLOR 0x0B04 #endif #ifndef GL_CURRENT_RASTER_DISTANCE #define GL_CURRENT_RASTER_DISTANCE 0x0B09 #endif #ifndef GL_CURRENT_RASTER_INDEX #define GL_CURRENT_RASTER_INDEX 0x0B05 #endif #ifndef GL_CURRENT_RASTER_NORMAL_SGIX #define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 #endif #ifndef GL_CURRENT_RASTER_POSITION #define GL_CURRENT_RASTER_POSITION 0x0B07 #endif #ifndef GL_CURRENT_RASTER_POSITION_VALID #define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 #endif #ifndef GL_CURRENT_RASTER_SECONDARY_COLOR #define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F #endif #ifndef GL_CURRENT_RASTER_TEXTURE_COORDS #define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 #endif #ifndef GL_CURRENT_SECONDARY_COLOR #define GL_CURRENT_SECONDARY_COLOR 0x8459 #endif #ifndef GL_CURRENT_SECONDARY_COLOR_EXT #define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 #endif #ifndef GL_CURRENT_TANGENT_EXT #define GL_CURRENT_TANGENT_EXT 0x843B #endif #ifndef GL_CURRENT_TEXTURE_COORDS #define GL_CURRENT_TEXTURE_COORDS 0x0B03 #endif #ifndef GL_CURRENT_TIME_NV #define GL_CURRENT_TIME_NV 0x8E28 #endif #ifndef GL_CURRENT_VERTEX_ATTRIB #define GL_CURRENT_VERTEX_ATTRIB 0x8626 #endif #ifndef GL_CURRENT_VERTEX_ATTRIB_ARB #define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 #endif #ifndef GL_CURRENT_VERTEX_EXT #define GL_CURRENT_VERTEX_EXT 0x87E2 #endif #ifndef GL_CURRENT_VERTEX_WEIGHT_EXT #define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B #endif #ifndef GL_CURRENT_WEIGHT_ARB #define GL_CURRENT_WEIGHT_ARB 0x86A8 #endif #ifndef GL_CW #define GL_CW 0x0900 #endif #ifndef GL_DARKEN_KHR #define GL_DARKEN_KHR 0x9297 #endif #ifndef GL_DARKEN_NV #define GL_DARKEN_NV 0x9297 #endif #ifndef GL_DATA_BUFFER_AMD #define GL_DATA_BUFFER_AMD 0x9151 #endif #ifndef GL_DEBUG_ASSERT_MESA #define GL_DEBUG_ASSERT_MESA 0x875B #endif #ifndef GL_DEBUG_CALLBACK_FUNCTION #define GL_DEBUG_CALLBACK_FUNCTION 0x8244 #endif #ifndef GL_DEBUG_CALLBACK_FUNCTION_ARB #define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 #endif #ifndef GL_DEBUG_CALLBACK_USER_PARAM #define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 #endif #ifndef GL_DEBUG_CALLBACK_USER_PARAM_ARB #define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 #endif #ifndef GL_DEBUG_CATEGORY_API_ERROR_AMD #define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 #endif #ifndef GL_DEBUG_CATEGORY_APPLICATION_AMD #define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F #endif #ifndef GL_DEBUG_CATEGORY_DEPRECATION_AMD #define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B #endif #ifndef GL_DEBUG_CATEGORY_OTHER_AMD #define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 #endif #ifndef GL_DEBUG_CATEGORY_PERFORMANCE_AMD #define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D #endif #ifndef GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD #define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E #endif #ifndef GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD #define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C #endif #ifndef GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD #define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A #endif #ifndef GL_DEBUG_GROUP_STACK_DEPTH #define GL_DEBUG_GROUP_STACK_DEPTH 0x826D #endif #ifndef GL_DEBUG_LOGGED_MESSAGES #define GL_DEBUG_LOGGED_MESSAGES 0x9145 #endif #ifndef GL_DEBUG_LOGGED_MESSAGES_AMD #define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 #endif #ifndef GL_DEBUG_LOGGED_MESSAGES_ARB #define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 #endif #ifndef GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH #define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 #endif #ifndef GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB #define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 #endif #ifndef GL_DEBUG_OBJECT_MESA #define GL_DEBUG_OBJECT_MESA 0x8759 #endif #ifndef GL_DEBUG_OUTPUT #define GL_DEBUG_OUTPUT 0x92E0 #endif #ifndef GL_DEBUG_OUTPUT_SYNCHRONOUS #define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 #endif #ifndef GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB #define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 #endif #ifndef GL_DEBUG_PRINT_MESA #define GL_DEBUG_PRINT_MESA 0x875A #endif #ifndef GL_DEBUG_SEVERITY_HIGH #define GL_DEBUG_SEVERITY_HIGH 0x9146 #endif #ifndef GL_DEBUG_SEVERITY_HIGH_AMD #define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 #endif #ifndef GL_DEBUG_SEVERITY_HIGH_ARB #define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 #endif #ifndef GL_DEBUG_SEVERITY_LOW #define GL_DEBUG_SEVERITY_LOW 0x9148 #endif #ifndef GL_DEBUG_SEVERITY_LOW_AMD #define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 #endif #ifndef GL_DEBUG_SEVERITY_LOW_ARB #define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 #endif #ifndef GL_DEBUG_SEVERITY_MEDIUM #define GL_DEBUG_SEVERITY_MEDIUM 0x9147 #endif #ifndef GL_DEBUG_SEVERITY_MEDIUM_AMD #define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 #endif #ifndef GL_DEBUG_SEVERITY_MEDIUM_ARB #define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 #endif #ifndef GL_DEBUG_SEVERITY_NOTIFICATION #define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B #endif #ifndef GL_DEBUG_SOURCE_API #define GL_DEBUG_SOURCE_API 0x8246 #endif #ifndef GL_DEBUG_SOURCE_API_ARB #define GL_DEBUG_SOURCE_API_ARB 0x8246 #endif #ifndef GL_DEBUG_SOURCE_APPLICATION #define GL_DEBUG_SOURCE_APPLICATION 0x824A #endif #ifndef GL_DEBUG_SOURCE_APPLICATION_ARB #define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A #endif #ifndef GL_DEBUG_SOURCE_OTHER #define GL_DEBUG_SOURCE_OTHER 0x824B #endif #ifndef GL_DEBUG_SOURCE_OTHER_ARB #define GL_DEBUG_SOURCE_OTHER_ARB 0x824B #endif #ifndef GL_DEBUG_SOURCE_SHADER_COMPILER #define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 #endif #ifndef GL_DEBUG_SOURCE_SHADER_COMPILER_ARB #define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 #endif #ifndef GL_DEBUG_SOURCE_THIRD_PARTY #define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 #endif #ifndef GL_DEBUG_SOURCE_THIRD_PARTY_ARB #define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 #endif #ifndef GL_DEBUG_SOURCE_WINDOW_SYSTEM #define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 #endif #ifndef GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB #define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 #endif #ifndef GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR #define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D #endif #ifndef GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB #define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D #endif #ifndef GL_DEBUG_TYPE_ERROR #define GL_DEBUG_TYPE_ERROR 0x824C #endif #ifndef GL_DEBUG_TYPE_ERROR_ARB #define GL_DEBUG_TYPE_ERROR_ARB 0x824C #endif #ifndef GL_DEBUG_TYPE_MARKER #define GL_DEBUG_TYPE_MARKER 0x8268 #endif #ifndef GL_DEBUG_TYPE_OTHER #define GL_DEBUG_TYPE_OTHER 0x8251 #endif #ifndef GL_DEBUG_TYPE_OTHER_ARB #define GL_DEBUG_TYPE_OTHER_ARB 0x8251 #endif #ifndef GL_DEBUG_TYPE_PERFORMANCE #define GL_DEBUG_TYPE_PERFORMANCE 0x8250 #endif #ifndef GL_DEBUG_TYPE_PERFORMANCE_ARB #define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 #endif #ifndef GL_DEBUG_TYPE_POP_GROUP #define GL_DEBUG_TYPE_POP_GROUP 0x826A #endif #ifndef GL_DEBUG_TYPE_PORTABILITY #define GL_DEBUG_TYPE_PORTABILITY 0x824F #endif #ifndef GL_DEBUG_TYPE_PORTABILITY_ARB #define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F #endif #ifndef GL_DEBUG_TYPE_PUSH_GROUP #define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 #endif #ifndef GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR #define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E #endif #ifndef GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB #define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E #endif #ifndef GL_DECAL #define GL_DECAL 0x2101 #endif #ifndef GL_DECODE_EXT #define GL_DECODE_EXT 0x8A49 #endif #ifndef GL_DECR #define GL_DECR 0x1E03 #endif #ifndef GL_DECR_WRAP #define GL_DECR_WRAP 0x8508 #endif #ifndef GL_DECR_WRAP_EXT #define GL_DECR_WRAP_EXT 0x8508 #endif #ifndef GL_DEFORMATIONS_MASK_SGIX #define GL_DEFORMATIONS_MASK_SGIX 0x8196 #endif #ifndef GL_DELETE_STATUS #define GL_DELETE_STATUS 0x8B80 #endif #ifndef GL_DEPENDENT_AR_TEXTURE_2D_NV #define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 #endif #ifndef GL_DEPENDENT_GB_TEXTURE_2D_NV #define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA #endif #ifndef GL_DEPENDENT_HILO_TEXTURE_2D_NV #define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 #endif #ifndef GL_DEPENDENT_RGB_TEXTURE_3D_NV #define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 #endif #ifndef GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV #define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A #endif #ifndef GL_DEPTH #define GL_DEPTH 0x1801 #endif #ifndef GL_DEPTH24_STENCIL8 #define GL_DEPTH24_STENCIL8 0x88F0 #endif #ifndef GL_DEPTH24_STENCIL8_EXT #define GL_DEPTH24_STENCIL8_EXT 0x88F0 #endif #ifndef GL_DEPTH32F_STENCIL8 #define GL_DEPTH32F_STENCIL8 0x8CAD #endif #ifndef GL_DEPTH32F_STENCIL8_NV #define GL_DEPTH32F_STENCIL8_NV 0x8DAC #endif #ifndef GL_DEPTH_ATTACHMENT #define GL_DEPTH_ATTACHMENT 0x8D00 #endif #ifndef GL_DEPTH_ATTACHMENT_EXT #define GL_DEPTH_ATTACHMENT_EXT 0x8D00 #endif #ifndef GL_DEPTH_BIAS #define GL_DEPTH_BIAS 0x0D1F #endif #ifndef GL_DEPTH_BITS #define GL_DEPTH_BITS 0x0D56 #endif #ifndef GL_DEPTH_BOUNDS_EXT #define GL_DEPTH_BOUNDS_EXT 0x8891 #endif #ifndef GL_DEPTH_BOUNDS_TEST_EXT #define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 #endif #ifndef GL_DEPTH_BUFFER #define GL_DEPTH_BUFFER 0x8223 #endif #ifndef GL_DEPTH_BUFFER_BIT #define GL_DEPTH_BUFFER_BIT 0x00000100 #endif #ifndef GL_DEPTH_BUFFER_FLOAT_MODE_NV #define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF #endif #ifndef GL_DEPTH_CLAMP #define GL_DEPTH_CLAMP 0x864F #endif #ifndef GL_DEPTH_CLAMP_FAR_AMD #define GL_DEPTH_CLAMP_FAR_AMD 0x901F #endif #ifndef GL_DEPTH_CLAMP_NEAR_AMD #define GL_DEPTH_CLAMP_NEAR_AMD 0x901E #endif #ifndef GL_DEPTH_CLAMP_NV #define GL_DEPTH_CLAMP_NV 0x864F #endif #ifndef GL_DEPTH_CLEAR_VALUE #define GL_DEPTH_CLEAR_VALUE 0x0B73 #endif #ifndef GL_DEPTH_COMPONENT #define GL_DEPTH_COMPONENT 0x1902 #endif #ifndef GL_DEPTH_COMPONENT16 #define GL_DEPTH_COMPONENT16 0x81A5 #endif #ifndef GL_DEPTH_COMPONENT16_ARB #define GL_DEPTH_COMPONENT16_ARB 0x81A5 #endif #ifndef GL_DEPTH_COMPONENT16_SGIX #define GL_DEPTH_COMPONENT16_SGIX 0x81A5 #endif #ifndef GL_DEPTH_COMPONENT24 #define GL_DEPTH_COMPONENT24 0x81A6 #endif #ifndef GL_DEPTH_COMPONENT24_ARB #define GL_DEPTH_COMPONENT24_ARB 0x81A6 #endif #ifndef GL_DEPTH_COMPONENT24_SGIX #define GL_DEPTH_COMPONENT24_SGIX 0x81A6 #endif #ifndef GL_DEPTH_COMPONENT32 #define GL_DEPTH_COMPONENT32 0x81A7 #endif #ifndef GL_DEPTH_COMPONENT32F #define GL_DEPTH_COMPONENT32F 0x8CAC #endif #ifndef GL_DEPTH_COMPONENT32F_NV #define GL_DEPTH_COMPONENT32F_NV 0x8DAB #endif #ifndef GL_DEPTH_COMPONENT32_ARB #define GL_DEPTH_COMPONENT32_ARB 0x81A7 #endif #ifndef GL_DEPTH_COMPONENT32_SGIX #define GL_DEPTH_COMPONENT32_SGIX 0x81A7 #endif #ifndef GL_DEPTH_COMPONENTS #define GL_DEPTH_COMPONENTS 0x8284 #endif #ifndef GL_DEPTH_FUNC #define GL_DEPTH_FUNC 0x0B74 #endif #ifndef GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX #define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311 #endif #ifndef GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX #define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312 #endif #ifndef GL_DEPTH_PASS_INSTRUMENT_SGIX #define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310 #endif #ifndef GL_DEPTH_RANGE #define GL_DEPTH_RANGE 0x0B70 #endif #ifndef GL_DEPTH_RENDERABLE #define GL_DEPTH_RENDERABLE 0x8287 #endif #ifndef GL_DEPTH_SAMPLES_NV #define GL_DEPTH_SAMPLES_NV 0x932D #endif #ifndef GL_DEPTH_SCALE #define GL_DEPTH_SCALE 0x0D1E #endif #ifndef GL_DEPTH_STENCIL #define GL_DEPTH_STENCIL 0x84F9 #endif #ifndef GL_DEPTH_STENCIL_ATTACHMENT #define GL_DEPTH_STENCIL_ATTACHMENT 0x821A #endif #ifndef GL_DEPTH_STENCIL_EXT #define GL_DEPTH_STENCIL_EXT 0x84F9 #endif #ifndef GL_DEPTH_STENCIL_MESA #define GL_DEPTH_STENCIL_MESA 0x8750 #endif #ifndef GL_DEPTH_STENCIL_NV #define GL_DEPTH_STENCIL_NV 0x84F9 #endif #ifndef GL_DEPTH_STENCIL_TEXTURE_MODE #define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA #endif #ifndef GL_DEPTH_STENCIL_TO_BGRA_NV #define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F #endif #ifndef GL_DEPTH_STENCIL_TO_RGBA_NV #define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E #endif #ifndef GL_DEPTH_TEST #define GL_DEPTH_TEST 0x0B71 #endif #ifndef GL_DEPTH_TEXTURE_MODE #define GL_DEPTH_TEXTURE_MODE 0x884B #endif #ifndef GL_DEPTH_TEXTURE_MODE_ARB #define GL_DEPTH_TEXTURE_MODE_ARB 0x884B #endif #ifndef GL_DEPTH_WRITEMASK #define GL_DEPTH_WRITEMASK 0x0B72 #endif #ifndef GL_DETAIL_TEXTURE_2D_BINDING_SGIS #define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 #endif #ifndef GL_DETAIL_TEXTURE_2D_SGIS #define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 #endif #ifndef GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS #define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C #endif #ifndef GL_DETAIL_TEXTURE_LEVEL_SGIS #define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A #endif #ifndef GL_DETAIL_TEXTURE_MODE_SGIS #define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B #endif #ifndef GL_DIFFERENCE_KHR #define GL_DIFFERENCE_KHR 0x929E #endif #ifndef GL_DIFFERENCE_NV #define GL_DIFFERENCE_NV 0x929E #endif #ifndef GL_DIFFUSE #define GL_DIFFUSE 0x1201 #endif #ifndef GL_DISCARD_ATI #define GL_DISCARD_ATI 0x8763 #endif #ifndef GL_DISCARD_NV #define GL_DISCARD_NV 0x8530 #endif #ifndef GL_DISCRETE_AMD #define GL_DISCRETE_AMD 0x9006 #endif #ifndef GL_DISJOINT_NV #define GL_DISJOINT_NV 0x9283 #endif #ifndef GL_DISPATCH_INDIRECT_BUFFER #define GL_DISPATCH_INDIRECT_BUFFER 0x90EE #endif #ifndef GL_DISPATCH_INDIRECT_BUFFER_BINDING #define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF #endif #ifndef GL_DISPLAY_LIST #define GL_DISPLAY_LIST 0x82E7 #endif #ifndef GL_DISTANCE_ATTENUATION_EXT #define GL_DISTANCE_ATTENUATION_EXT 0x8129 #endif #ifndef GL_DISTANCE_ATTENUATION_SGIS #define GL_DISTANCE_ATTENUATION_SGIS 0x8129 #endif #ifndef GL_DITHER #define GL_DITHER 0x0BD0 #endif #ifndef GL_DOMAIN #define GL_DOMAIN 0x0A02 #endif #ifndef GL_DONT_CARE #define GL_DONT_CARE 0x1100 #endif #ifndef GL_DOT2_ADD_ATI #define GL_DOT2_ADD_ATI 0x896C #endif #ifndef GL_DOT3_ATI #define GL_DOT3_ATI 0x8966 #endif #ifndef GL_DOT3_RGB #define GL_DOT3_RGB 0x86AE #endif #ifndef GL_DOT3_RGBA #define GL_DOT3_RGBA 0x86AF #endif #ifndef GL_DOT3_RGBA_ARB #define GL_DOT3_RGBA_ARB 0x86AF #endif #ifndef GL_DOT3_RGBA_EXT #define GL_DOT3_RGBA_EXT 0x8741 #endif #ifndef GL_DOT3_RGB_ARB #define GL_DOT3_RGB_ARB 0x86AE #endif #ifndef GL_DOT3_RGB_EXT #define GL_DOT3_RGB_EXT 0x8740 #endif #ifndef GL_DOT4_ATI #define GL_DOT4_ATI 0x8967 #endif #ifndef GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV #define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D #endif #ifndef GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV #define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 #endif #ifndef GL_DOT_PRODUCT_DEPTH_REPLACE_NV #define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED #endif #ifndef GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV #define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 #endif #ifndef GL_DOT_PRODUCT_NV #define GL_DOT_PRODUCT_NV 0x86EC #endif #ifndef GL_DOT_PRODUCT_PASS_THROUGH_NV #define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B #endif #ifndef GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV #define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 #endif #ifndef GL_DOT_PRODUCT_TEXTURE_1D_NV #define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C #endif #ifndef GL_DOT_PRODUCT_TEXTURE_2D_NV #define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE #endif #ifndef GL_DOT_PRODUCT_TEXTURE_3D_NV #define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF #endif #ifndef GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV #define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 #endif #ifndef GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV #define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E #endif #ifndef GL_DOUBLE #define GL_DOUBLE 0x140A #endif #ifndef GL_DOUBLEBUFFER #define GL_DOUBLEBUFFER 0x0C32 #endif #ifndef GL_DOUBLE_MAT2 #define GL_DOUBLE_MAT2 0x8F46 #endif #ifndef GL_DOUBLE_MAT2_EXT #define GL_DOUBLE_MAT2_EXT 0x8F46 #endif #ifndef GL_DOUBLE_MAT2x3 #define GL_DOUBLE_MAT2x3 0x8F49 #endif #ifndef GL_DOUBLE_MAT2x3_EXT #define GL_DOUBLE_MAT2x3_EXT 0x8F49 #endif #ifndef GL_DOUBLE_MAT2x4 #define GL_DOUBLE_MAT2x4 0x8F4A #endif #ifndef GL_DOUBLE_MAT2x4_EXT #define GL_DOUBLE_MAT2x4_EXT 0x8F4A #endif #ifndef GL_DOUBLE_MAT3 #define GL_DOUBLE_MAT3 0x8F47 #endif #ifndef GL_DOUBLE_MAT3_EXT #define GL_DOUBLE_MAT3_EXT 0x8F47 #endif #ifndef GL_DOUBLE_MAT3x2 #define GL_DOUBLE_MAT3x2 0x8F4B #endif #ifndef GL_DOUBLE_MAT3x2_EXT #define GL_DOUBLE_MAT3x2_EXT 0x8F4B #endif #ifndef GL_DOUBLE_MAT3x4 #define GL_DOUBLE_MAT3x4 0x8F4C #endif #ifndef GL_DOUBLE_MAT3x4_EXT #define GL_DOUBLE_MAT3x4_EXT 0x8F4C #endif #ifndef GL_DOUBLE_MAT4 #define GL_DOUBLE_MAT4 0x8F48 #endif #ifndef GL_DOUBLE_MAT4_EXT #define GL_DOUBLE_MAT4_EXT 0x8F48 #endif #ifndef GL_DOUBLE_MAT4x2 #define GL_DOUBLE_MAT4x2 0x8F4D #endif #ifndef GL_DOUBLE_MAT4x2_EXT #define GL_DOUBLE_MAT4x2_EXT 0x8F4D #endif #ifndef GL_DOUBLE_MAT4x3 #define GL_DOUBLE_MAT4x3 0x8F4E #endif #ifndef GL_DOUBLE_MAT4x3_EXT #define GL_DOUBLE_MAT4x3_EXT 0x8F4E #endif #ifndef GL_DOUBLE_VEC2 #define GL_DOUBLE_VEC2 0x8FFC #endif #ifndef GL_DOUBLE_VEC2_EXT #define GL_DOUBLE_VEC2_EXT 0x8FFC #endif #ifndef GL_DOUBLE_VEC3 #define GL_DOUBLE_VEC3 0x8FFD #endif #ifndef GL_DOUBLE_VEC3_EXT #define GL_DOUBLE_VEC3_EXT 0x8FFD #endif #ifndef GL_DOUBLE_VEC4 #define GL_DOUBLE_VEC4 0x8FFE #endif #ifndef GL_DOUBLE_VEC4_EXT #define GL_DOUBLE_VEC4_EXT 0x8FFE #endif #ifndef GL_DRAW_ARRAYS_COMMAND_NV #define GL_DRAW_ARRAYS_COMMAND_NV 0x0003 #endif #ifndef GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV #define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007 #endif #ifndef GL_DRAW_ARRAYS_STRIP_COMMAND_NV #define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005 #endif #ifndef GL_DRAW_BUFFER #define GL_DRAW_BUFFER 0x0C01 #endif #ifndef GL_DRAW_BUFFER0 #define GL_DRAW_BUFFER0 0x8825 #endif #ifndef GL_DRAW_BUFFER0_ARB #define GL_DRAW_BUFFER0_ARB 0x8825 #endif #ifndef GL_DRAW_BUFFER0_ATI #define GL_DRAW_BUFFER0_ATI 0x8825 #endif #ifndef GL_DRAW_BUFFER1 #define GL_DRAW_BUFFER1 0x8826 #endif #ifndef GL_DRAW_BUFFER10 #define GL_DRAW_BUFFER10 0x882F #endif #ifndef GL_DRAW_BUFFER10_ARB #define GL_DRAW_BUFFER10_ARB 0x882F #endif #ifndef GL_DRAW_BUFFER10_ATI #define GL_DRAW_BUFFER10_ATI 0x882F #endif #ifndef GL_DRAW_BUFFER11 #define GL_DRAW_BUFFER11 0x8830 #endif #ifndef GL_DRAW_BUFFER11_ARB #define GL_DRAW_BUFFER11_ARB 0x8830 #endif #ifndef GL_DRAW_BUFFER11_ATI #define GL_DRAW_BUFFER11_ATI 0x8830 #endif #ifndef GL_DRAW_BUFFER12 #define GL_DRAW_BUFFER12 0x8831 #endif #ifndef GL_DRAW_BUFFER12_ARB #define GL_DRAW_BUFFER12_ARB 0x8831 #endif #ifndef GL_DRAW_BUFFER12_ATI #define GL_DRAW_BUFFER12_ATI 0x8831 #endif #ifndef GL_DRAW_BUFFER13 #define GL_DRAW_BUFFER13 0x8832 #endif #ifndef GL_DRAW_BUFFER13_ARB #define GL_DRAW_BUFFER13_ARB 0x8832 #endif #ifndef GL_DRAW_BUFFER13_ATI #define GL_DRAW_BUFFER13_ATI 0x8832 #endif #ifndef GL_DRAW_BUFFER14 #define GL_DRAW_BUFFER14 0x8833 #endif #ifndef GL_DRAW_BUFFER14_ARB #define GL_DRAW_BUFFER14_ARB 0x8833 #endif #ifndef GL_DRAW_BUFFER14_ATI #define GL_DRAW_BUFFER14_ATI 0x8833 #endif #ifndef GL_DRAW_BUFFER15 #define GL_DRAW_BUFFER15 0x8834 #endif #ifndef GL_DRAW_BUFFER15_ARB #define GL_DRAW_BUFFER15_ARB 0x8834 #endif #ifndef GL_DRAW_BUFFER15_ATI #define GL_DRAW_BUFFER15_ATI 0x8834 #endif #ifndef GL_DRAW_BUFFER1_ARB #define GL_DRAW_BUFFER1_ARB 0x8826 #endif #ifndef GL_DRAW_BUFFER1_ATI #define GL_DRAW_BUFFER1_ATI 0x8826 #endif #ifndef GL_DRAW_BUFFER2 #define GL_DRAW_BUFFER2 0x8827 #endif #ifndef GL_DRAW_BUFFER2_ARB #define GL_DRAW_BUFFER2_ARB 0x8827 #endif #ifndef GL_DRAW_BUFFER2_ATI #define GL_DRAW_BUFFER2_ATI 0x8827 #endif #ifndef GL_DRAW_BUFFER3 #define GL_DRAW_BUFFER3 0x8828 #endif #ifndef GL_DRAW_BUFFER3_ARB #define GL_DRAW_BUFFER3_ARB 0x8828 #endif #ifndef GL_DRAW_BUFFER3_ATI #define GL_DRAW_BUFFER3_ATI 0x8828 #endif #ifndef GL_DRAW_BUFFER4 #define GL_DRAW_BUFFER4 0x8829 #endif #ifndef GL_DRAW_BUFFER4_ARB #define GL_DRAW_BUFFER4_ARB 0x8829 #endif #ifndef GL_DRAW_BUFFER4_ATI #define GL_DRAW_BUFFER4_ATI 0x8829 #endif #ifndef GL_DRAW_BUFFER5 #define GL_DRAW_BUFFER5 0x882A #endif #ifndef GL_DRAW_BUFFER5_ARB #define GL_DRAW_BUFFER5_ARB 0x882A #endif #ifndef GL_DRAW_BUFFER5_ATI #define GL_DRAW_BUFFER5_ATI 0x882A #endif #ifndef GL_DRAW_BUFFER6 #define GL_DRAW_BUFFER6 0x882B #endif #ifndef GL_DRAW_BUFFER6_ARB #define GL_DRAW_BUFFER6_ARB 0x882B #endif #ifndef GL_DRAW_BUFFER6_ATI #define GL_DRAW_BUFFER6_ATI 0x882B #endif #ifndef GL_DRAW_BUFFER7 #define GL_DRAW_BUFFER7 0x882C #endif #ifndef GL_DRAW_BUFFER7_ARB #define GL_DRAW_BUFFER7_ARB 0x882C #endif #ifndef GL_DRAW_BUFFER7_ATI #define GL_DRAW_BUFFER7_ATI 0x882C #endif #ifndef GL_DRAW_BUFFER8 #define GL_DRAW_BUFFER8 0x882D #endif #ifndef GL_DRAW_BUFFER8_ARB #define GL_DRAW_BUFFER8_ARB 0x882D #endif #ifndef GL_DRAW_BUFFER8_ATI #define GL_DRAW_BUFFER8_ATI 0x882D #endif #ifndef GL_DRAW_BUFFER9 #define GL_DRAW_BUFFER9 0x882E #endif #ifndef GL_DRAW_BUFFER9_ARB #define GL_DRAW_BUFFER9_ARB 0x882E #endif #ifndef GL_DRAW_BUFFER9_ATI #define GL_DRAW_BUFFER9_ATI 0x882E #endif #ifndef GL_DRAW_ELEMENTS_COMMAND_NV #define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002 #endif #ifndef GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV #define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006 #endif #ifndef GL_DRAW_ELEMENTS_STRIP_COMMAND_NV #define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004 #endif #ifndef GL_DRAW_FRAMEBUFFER #define GL_DRAW_FRAMEBUFFER 0x8CA9 #endif #ifndef GL_DRAW_FRAMEBUFFER_BINDING #define GL_DRAW_FRAMEBUFFER_BINDING GL_FRAMEBUFFER_BINDING #endif #ifndef GL_DRAW_FRAMEBUFFER_BINDING_EXT #define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 #endif #ifndef GL_DRAW_FRAMEBUFFER_EXT #define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 #endif #ifndef GL_DRAW_INDIRECT_ADDRESS_NV #define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 #endif #ifndef GL_DRAW_INDIRECT_BUFFER #define GL_DRAW_INDIRECT_BUFFER 0x8F3F #endif #ifndef GL_DRAW_INDIRECT_BUFFER_BINDING #define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 #endif #ifndef GL_DRAW_INDIRECT_LENGTH_NV #define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 #endif #ifndef GL_DRAW_INDIRECT_UNIFIED_NV #define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 #endif #ifndef GL_DRAW_PIXELS_APPLE #define GL_DRAW_PIXELS_APPLE 0x8A0A #endif #ifndef GL_DRAW_PIXEL_TOKEN #define GL_DRAW_PIXEL_TOKEN 0x0705 #endif #ifndef GL_DSDT8_MAG8_INTENSITY8_NV #define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B #endif #ifndef GL_DSDT8_MAG8_NV #define GL_DSDT8_MAG8_NV 0x870A #endif #ifndef GL_DSDT8_NV #define GL_DSDT8_NV 0x8709 #endif #ifndef GL_DSDT_MAG_INTENSITY_NV #define GL_DSDT_MAG_INTENSITY_NV 0x86DC #endif #ifndef GL_DSDT_MAG_NV #define GL_DSDT_MAG_NV 0x86F6 #endif #ifndef GL_DSDT_MAG_VIB_NV #define GL_DSDT_MAG_VIB_NV 0x86F7 #endif #ifndef GL_DSDT_NV #define GL_DSDT_NV 0x86F5 #endif #ifndef GL_DST_ALPHA #define GL_DST_ALPHA 0x0304 #endif #ifndef GL_DST_ATOP_NV #define GL_DST_ATOP_NV 0x928F #endif #ifndef GL_DST_COLOR #define GL_DST_COLOR 0x0306 #endif #ifndef GL_DST_IN_NV #define GL_DST_IN_NV 0x928B #endif #ifndef GL_DST_NV #define GL_DST_NV 0x9287 #endif #ifndef GL_DST_OUT_NV #define GL_DST_OUT_NV 0x928D #endif #ifndef GL_DST_OVER_NV #define GL_DST_OVER_NV 0x9289 #endif #ifndef GL_DS_BIAS_NV #define GL_DS_BIAS_NV 0x8716 #endif #ifndef GL_DS_SCALE_NV #define GL_DS_SCALE_NV 0x8710 #endif #ifndef GL_DT_BIAS_NV #define GL_DT_BIAS_NV 0x8717 #endif #ifndef GL_DT_SCALE_NV #define GL_DT_SCALE_NV 0x8711 #endif #ifndef GL_DU8DV8_ATI #define GL_DU8DV8_ATI 0x877A #endif #ifndef GL_DUAL_ALPHA12_SGIS #define GL_DUAL_ALPHA12_SGIS 0x8112 #endif #ifndef GL_DUAL_ALPHA16_SGIS #define GL_DUAL_ALPHA16_SGIS 0x8113 #endif #ifndef GL_DUAL_ALPHA4_SGIS #define GL_DUAL_ALPHA4_SGIS 0x8110 #endif #ifndef GL_DUAL_ALPHA8_SGIS #define GL_DUAL_ALPHA8_SGIS 0x8111 #endif #ifndef GL_DUAL_INTENSITY12_SGIS #define GL_DUAL_INTENSITY12_SGIS 0x811A #endif #ifndef GL_DUAL_INTENSITY16_SGIS #define GL_DUAL_INTENSITY16_SGIS 0x811B #endif #ifndef GL_DUAL_INTENSITY4_SGIS #define GL_DUAL_INTENSITY4_SGIS 0x8118 #endif #ifndef GL_DUAL_INTENSITY8_SGIS #define GL_DUAL_INTENSITY8_SGIS 0x8119 #endif #ifndef GL_DUAL_LUMINANCE12_SGIS #define GL_DUAL_LUMINANCE12_SGIS 0x8116 #endif #ifndef GL_DUAL_LUMINANCE16_SGIS #define GL_DUAL_LUMINANCE16_SGIS 0x8117 #endif #ifndef GL_DUAL_LUMINANCE4_SGIS #define GL_DUAL_LUMINANCE4_SGIS 0x8114 #endif #ifndef GL_DUAL_LUMINANCE8_SGIS #define GL_DUAL_LUMINANCE8_SGIS 0x8115 #endif #ifndef GL_DUAL_LUMINANCE_ALPHA4_SGIS #define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C #endif #ifndef GL_DUAL_LUMINANCE_ALPHA8_SGIS #define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D #endif #ifndef GL_DUAL_TEXTURE_SELECT_SGIS #define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 #endif #ifndef GL_DUDV_ATI #define GL_DUDV_ATI 0x8779 #endif #ifndef GL_DUP_FIRST_CUBIC_CURVE_TO_NV #define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 #endif #ifndef GL_DUP_LAST_CUBIC_CURVE_TO_NV #define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 #endif #ifndef GL_DYNAMIC_ATI #define GL_DYNAMIC_ATI 0x8761 #endif #ifndef GL_DYNAMIC_COPY #define GL_DYNAMIC_COPY 0x88EA #endif #ifndef GL_DYNAMIC_COPY_ARB #define GL_DYNAMIC_COPY_ARB 0x88EA #endif #ifndef GL_DYNAMIC_DRAW #define GL_DYNAMIC_DRAW 0x88E8 #endif #ifndef GL_DYNAMIC_DRAW_ARB #define GL_DYNAMIC_DRAW_ARB 0x88E8 #endif #ifndef GL_DYNAMIC_READ #define GL_DYNAMIC_READ 0x88E9 #endif #ifndef GL_DYNAMIC_READ_ARB #define GL_DYNAMIC_READ_ARB 0x88E9 #endif #ifndef GL_DYNAMIC_STORAGE_BIT #define GL_DYNAMIC_STORAGE_BIT 0x0100 #endif #ifndef GL_EDGEFLAG_BIT_PGI #define GL_EDGEFLAG_BIT_PGI 0x00040000 #endif #ifndef GL_EDGE_FLAG #define GL_EDGE_FLAG 0x0B43 #endif #ifndef GL_EDGE_FLAG_ARRAY #define GL_EDGE_FLAG_ARRAY 0x8079 #endif #ifndef GL_EDGE_FLAG_ARRAY_ADDRESS_NV #define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 #endif #ifndef GL_EDGE_FLAG_ARRAY_BUFFER_BINDING #define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B #endif #ifndef GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB #define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B #endif #ifndef GL_EDGE_FLAG_ARRAY_COUNT_EXT #define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D #endif #ifndef GL_EDGE_FLAG_ARRAY_EXT #define GL_EDGE_FLAG_ARRAY_EXT 0x8079 #endif #ifndef GL_EDGE_FLAG_ARRAY_LENGTH_NV #define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 #endif #ifndef GL_EDGE_FLAG_ARRAY_LIST_IBM #define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 #endif #ifndef GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM #define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 #endif #ifndef GL_EDGE_FLAG_ARRAY_POINTER #define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 #endif #ifndef GL_EDGE_FLAG_ARRAY_POINTER_EXT #define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 #endif #ifndef GL_EDGE_FLAG_ARRAY_STRIDE #define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C #endif #ifndef GL_EDGE_FLAG_ARRAY_STRIDE_EXT #define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C #endif #ifndef GL_EFFECTIVE_RASTER_SAMPLES_EXT #define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C #endif #ifndef GL_EIGHTH_BIT_ATI #define GL_EIGHTH_BIT_ATI 0x00000020 #endif #ifndef GL_ELEMENT_ADDRESS_COMMAND_NV #define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008 #endif #ifndef GL_ELEMENT_ARRAY_ADDRESS_NV #define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 #endif #ifndef GL_ELEMENT_ARRAY_APPLE #define GL_ELEMENT_ARRAY_APPLE 0x8A0C #endif #ifndef GL_ELEMENT_ARRAY_ATI #define GL_ELEMENT_ARRAY_ATI 0x8768 #endif #ifndef GL_ELEMENT_ARRAY_BARRIER_BIT #define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 #endif #ifndef GL_ELEMENT_ARRAY_BARRIER_BIT_EXT #define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 #endif #ifndef GL_ELEMENT_ARRAY_BUFFER #define GL_ELEMENT_ARRAY_BUFFER 0x8893 #endif #ifndef GL_ELEMENT_ARRAY_BUFFER_ARB #define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 #endif #ifndef GL_ELEMENT_ARRAY_BUFFER_BINDING #define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 #endif #ifndef GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB #define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 #endif #ifndef GL_ELEMENT_ARRAY_LENGTH_NV #define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 #endif #ifndef GL_ELEMENT_ARRAY_POINTER_APPLE #define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E #endif #ifndef GL_ELEMENT_ARRAY_POINTER_ATI #define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A #endif #ifndef GL_ELEMENT_ARRAY_TYPE_APPLE #define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D #endif #ifndef GL_ELEMENT_ARRAY_TYPE_ATI #define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 #endif #ifndef GL_ELEMENT_ARRAY_UNIFIED_NV #define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F #endif #ifndef GL_EMBOSS_CONSTANT_NV #define GL_EMBOSS_CONSTANT_NV 0x855E #endif #ifndef GL_EMBOSS_LIGHT_NV #define GL_EMBOSS_LIGHT_NV 0x855D #endif #ifndef GL_EMBOSS_MAP_NV #define GL_EMBOSS_MAP_NV 0x855F #endif #ifndef GL_EMISSION #define GL_EMISSION 0x1600 #endif #ifndef GL_ENABLE_BIT #define GL_ENABLE_BIT 0x00002000 #endif #ifndef GL_EQUAL #define GL_EQUAL 0x0202 #endif #ifndef GL_EQUIV #define GL_EQUIV 0x1509 #endif #ifndef GL_EVAL_2D_NV #define GL_EVAL_2D_NV 0x86C0 #endif #ifndef GL_EVAL_BIT #define GL_EVAL_BIT 0x00010000 #endif #ifndef GL_EVAL_FRACTIONAL_TESSELLATION_NV #define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 #endif #ifndef GL_EVAL_TRIANGULAR_2D_NV #define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 #endif #ifndef GL_EVAL_VERTEX_ATTRIB0_NV #define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 #endif #ifndef GL_EVAL_VERTEX_ATTRIB10_NV #define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 #endif #ifndef GL_EVAL_VERTEX_ATTRIB11_NV #define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 #endif #ifndef GL_EVAL_VERTEX_ATTRIB12_NV #define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 #endif #ifndef GL_EVAL_VERTEX_ATTRIB13_NV #define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 #endif #ifndef GL_EVAL_VERTEX_ATTRIB14_NV #define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 #endif #ifndef GL_EVAL_VERTEX_ATTRIB15_NV #define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 #endif #ifndef GL_EVAL_VERTEX_ATTRIB1_NV #define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 #endif #ifndef GL_EVAL_VERTEX_ATTRIB2_NV #define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 #endif #ifndef GL_EVAL_VERTEX_ATTRIB3_NV #define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 #endif #ifndef GL_EVAL_VERTEX_ATTRIB4_NV #define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA #endif #ifndef GL_EVAL_VERTEX_ATTRIB5_NV #define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB #endif #ifndef GL_EVAL_VERTEX_ATTRIB6_NV #define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC #endif #ifndef GL_EVAL_VERTEX_ATTRIB7_NV #define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD #endif #ifndef GL_EVAL_VERTEX_ATTRIB8_NV #define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE #endif #ifndef GL_EVAL_VERTEX_ATTRIB9_NV #define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF #endif #ifndef GL_EXCLUSION_KHR #define GL_EXCLUSION_KHR 0x92A0 #endif #ifndef GL_EXCLUSION_NV #define GL_EXCLUSION_NV 0x92A0 #endif #ifndef GL_EXP #define GL_EXP 0x0800 #endif #ifndef GL_EXP2 #define GL_EXP2 0x0801 #endif #ifndef GL_EXPAND_NEGATE_NV #define GL_EXPAND_NEGATE_NV 0x8539 #endif #ifndef GL_EXPAND_NORMAL_NV #define GL_EXPAND_NORMAL_NV 0x8538 #endif #ifndef GL_EXTENSIONS #define GL_EXTENSIONS 0x1F03 #endif #ifndef GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD #define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 #endif #ifndef GL_EYE_DISTANCE_TO_LINE_SGIS #define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 #endif #ifndef GL_EYE_DISTANCE_TO_POINT_SGIS #define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 #endif #ifndef GL_EYE_LINEAR #define GL_EYE_LINEAR 0x2400 #endif #ifndef GL_EYE_LINEAR_NV #define GL_EYE_LINEAR_NV 0x2400 #endif #ifndef GL_EYE_LINE_SGIS #define GL_EYE_LINE_SGIS 0x81F6 #endif #ifndef GL_EYE_PLANE #define GL_EYE_PLANE 0x2502 #endif #ifndef GL_EYE_PLANE_ABSOLUTE_NV #define GL_EYE_PLANE_ABSOLUTE_NV 0x855C #endif #ifndef GL_EYE_POINT_SGIS #define GL_EYE_POINT_SGIS 0x81F4 #endif #ifndef GL_EYE_RADIAL_NV #define GL_EYE_RADIAL_NV 0x855B #endif #ifndef GL_E_TIMES_F_NV #define GL_E_TIMES_F_NV 0x8531 #endif #ifndef GL_FACTOR_MAX_AMD #define GL_FACTOR_MAX_AMD 0x901D #endif #ifndef GL_FACTOR_MIN_AMD #define GL_FACTOR_MIN_AMD 0x901C #endif #ifndef GL_FAILURE_NV #define GL_FAILURE_NV 0x9030 #endif #ifndef GL_FALSE #define GL_FALSE 0 #endif #ifndef GL_FASTEST #define GL_FASTEST 0x1101 #endif #ifndef GL_FEEDBACK #define GL_FEEDBACK 0x1C01 #endif #ifndef GL_FEEDBACK_BUFFER_POINTER #define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 #endif #ifndef GL_FEEDBACK_BUFFER_SIZE #define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 #endif #ifndef GL_FEEDBACK_BUFFER_TYPE #define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 #endif #ifndef GL_FENCE_APPLE #define GL_FENCE_APPLE 0x8A0B #endif #ifndef GL_FENCE_CONDITION_NV #define GL_FENCE_CONDITION_NV 0x84F4 #endif #ifndef GL_FENCE_STATUS_NV #define GL_FENCE_STATUS_NV 0x84F3 #endif #ifndef GL_FIELDS_NV #define GL_FIELDS_NV 0x8E27 #endif #ifndef GL_FIELD_LOWER_NV #define GL_FIELD_LOWER_NV 0x9023 #endif #ifndef GL_FIELD_UPPER_NV #define GL_FIELD_UPPER_NV 0x9022 #endif #ifndef GL_FILE_NAME_NV #define GL_FILE_NAME_NV 0x9074 #endif #ifndef GL_FILL #define GL_FILL 0x1B02 #endif #ifndef GL_FILL_RECTANGLE_NV #define GL_FILL_RECTANGLE_NV 0x933C #endif #ifndef GL_FILTER #define GL_FILTER 0x829A #endif #ifndef GL_FILTER4_SGIS #define GL_FILTER4_SGIS 0x8146 #endif #ifndef GL_FIRST_TO_REST_NV #define GL_FIRST_TO_REST_NV 0x90AF #endif #ifndef GL_FIRST_VERTEX_CONVENTION #define GL_FIRST_VERTEX_CONVENTION 0x8E4D #endif #ifndef GL_FIRST_VERTEX_CONVENTION_EXT #define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D #endif #ifndef GL_FIXED #define GL_FIXED 0x140C #endif #ifndef GL_FIXED_OES #define GL_FIXED_OES 0x140C #endif #ifndef GL_FIXED_ONLY #define GL_FIXED_ONLY 0x891D #endif #ifndef GL_FIXED_ONLY_ARB #define GL_FIXED_ONLY_ARB 0x891D #endif #ifndef GL_FLAT #define GL_FLAT 0x1D00 #endif #ifndef GL_FLOAT #define GL_FLOAT 0x1406 #endif #ifndef GL_FLOAT16_NV #define GL_FLOAT16_NV 0x8FF8 #endif #ifndef GL_FLOAT16_VEC2_NV #define GL_FLOAT16_VEC2_NV 0x8FF9 #endif #ifndef GL_FLOAT16_VEC3_NV #define GL_FLOAT16_VEC3_NV 0x8FFA #endif #ifndef GL_FLOAT16_VEC4_NV #define GL_FLOAT16_VEC4_NV 0x8FFB #endif #ifndef GL_FLOAT_32_UNSIGNED_INT_24_8_REV #define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD #endif #ifndef GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV #define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD #endif #ifndef GL_FLOAT_CLEAR_COLOR_VALUE_NV #define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D #endif #ifndef GL_FLOAT_MAT2 #define GL_FLOAT_MAT2 0x8B5A #endif #ifndef GL_FLOAT_MAT2_ARB #define GL_FLOAT_MAT2_ARB 0x8B5A #endif #ifndef GL_FLOAT_MAT2x3 #define GL_FLOAT_MAT2x3 0x8B65 #endif #ifndef GL_FLOAT_MAT2x4 #define GL_FLOAT_MAT2x4 0x8B66 #endif #ifndef GL_FLOAT_MAT3 #define GL_FLOAT_MAT3 0x8B5B #endif #ifndef GL_FLOAT_MAT3_ARB #define GL_FLOAT_MAT3_ARB 0x8B5B #endif #ifndef GL_FLOAT_MAT3x2 #define GL_FLOAT_MAT3x2 0x8B67 #endif #ifndef GL_FLOAT_MAT3x4 #define GL_FLOAT_MAT3x4 0x8B68 #endif #ifndef GL_FLOAT_MAT4 #define GL_FLOAT_MAT4 0x8B5C #endif #ifndef GL_FLOAT_MAT4_ARB #define GL_FLOAT_MAT4_ARB 0x8B5C #endif #ifndef GL_FLOAT_MAT4x2 #define GL_FLOAT_MAT4x2 0x8B69 #endif #ifndef GL_FLOAT_MAT4x3 #define GL_FLOAT_MAT4x3 0x8B6A #endif #ifndef GL_FLOAT_R16_NV #define GL_FLOAT_R16_NV 0x8884 #endif #ifndef GL_FLOAT_R32_NV #define GL_FLOAT_R32_NV 0x8885 #endif #ifndef GL_FLOAT_RG16_NV #define GL_FLOAT_RG16_NV 0x8886 #endif #ifndef GL_FLOAT_RG32_NV #define GL_FLOAT_RG32_NV 0x8887 #endif #ifndef GL_FLOAT_RGB16_NV #define GL_FLOAT_RGB16_NV 0x8888 #endif #ifndef GL_FLOAT_RGB32_NV #define GL_FLOAT_RGB32_NV 0x8889 #endif #ifndef GL_FLOAT_RGBA16_NV #define GL_FLOAT_RGBA16_NV 0x888A #endif #ifndef GL_FLOAT_RGBA32_NV #define GL_FLOAT_RGBA32_NV 0x888B #endif #ifndef GL_FLOAT_RGBA_MODE_NV #define GL_FLOAT_RGBA_MODE_NV 0x888E #endif #ifndef GL_FLOAT_RGBA_NV #define GL_FLOAT_RGBA_NV 0x8883 #endif #ifndef GL_FLOAT_RGB_NV #define GL_FLOAT_RGB_NV 0x8882 #endif #ifndef GL_FLOAT_RG_NV #define GL_FLOAT_RG_NV 0x8881 #endif #ifndef GL_FLOAT_R_NV #define GL_FLOAT_R_NV 0x8880 #endif #ifndef GL_FLOAT_VEC2 #define GL_FLOAT_VEC2 0x8B50 #endif #ifndef GL_FLOAT_VEC2_ARB #define GL_FLOAT_VEC2_ARB 0x8B50 #endif #ifndef GL_FLOAT_VEC3 #define GL_FLOAT_VEC3 0x8B51 #endif #ifndef GL_FLOAT_VEC3_ARB #define GL_FLOAT_VEC3_ARB 0x8B51 #endif #ifndef GL_FLOAT_VEC4 #define GL_FLOAT_VEC4 0x8B52 #endif #ifndef GL_FLOAT_VEC4_ARB #define GL_FLOAT_VEC4_ARB 0x8B52 #endif #ifndef GL_FOG #define GL_FOG 0x0B60 #endif #ifndef GL_FOG_BIT #define GL_FOG_BIT 0x00000080 #endif #ifndef GL_FOG_COLOR #define GL_FOG_COLOR 0x0B66 #endif #ifndef GL_FOG_COORD #define GL_FOG_COORD 0x8451 #endif #ifndef GL_FOG_COORDINATE #define GL_FOG_COORDINATE 0x8451 #endif #ifndef GL_FOG_COORDINATE_ARRAY #define GL_FOG_COORDINATE_ARRAY 0x8457 #endif #ifndef GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING #define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D #endif #ifndef GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB #define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D #endif #ifndef GL_FOG_COORDINATE_ARRAY_EXT #define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 #endif #ifndef GL_FOG_COORDINATE_ARRAY_LIST_IBM #define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 #endif #ifndef GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM #define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 #endif #ifndef GL_FOG_COORDINATE_ARRAY_POINTER #define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 #endif #ifndef GL_FOG_COORDINATE_ARRAY_POINTER_EXT #define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 #endif #ifndef GL_FOG_COORDINATE_ARRAY_STRIDE #define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 #endif #ifndef GL_FOG_COORDINATE_ARRAY_STRIDE_EXT #define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 #endif #ifndef GL_FOG_COORDINATE_ARRAY_TYPE #define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 #endif #ifndef GL_FOG_COORDINATE_ARRAY_TYPE_EXT #define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 #endif #ifndef GL_FOG_COORDINATE_EXT #define GL_FOG_COORDINATE_EXT 0x8451 #endif #ifndef GL_FOG_COORDINATE_SOURCE #define GL_FOG_COORDINATE_SOURCE 0x8450 #endif #ifndef GL_FOG_COORDINATE_SOURCE_EXT #define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 #endif #ifndef GL_FOG_COORD_ARRAY #define GL_FOG_COORD_ARRAY 0x8457 #endif #ifndef GL_FOG_COORD_ARRAY_ADDRESS_NV #define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 #endif #ifndef GL_FOG_COORD_ARRAY_BUFFER_BINDING #define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D #endif #ifndef GL_FOG_COORD_ARRAY_LENGTH_NV #define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 #endif #ifndef GL_FOG_COORD_ARRAY_POINTER #define GL_FOG_COORD_ARRAY_POINTER 0x8456 #endif #ifndef GL_FOG_COORD_ARRAY_STRIDE #define GL_FOG_COORD_ARRAY_STRIDE 0x8455 #endif #ifndef GL_FOG_COORD_ARRAY_TYPE #define GL_FOG_COORD_ARRAY_TYPE 0x8454 #endif #ifndef GL_FOG_COORD_SRC #define GL_FOG_COORD_SRC 0x8450 #endif #ifndef GL_FOG_DENSITY #define GL_FOG_DENSITY 0x0B62 #endif #ifndef GL_FOG_DISTANCE_MODE_NV #define GL_FOG_DISTANCE_MODE_NV 0x855A #endif #ifndef GL_FOG_END #define GL_FOG_END 0x0B64 #endif #ifndef GL_FOG_FUNC_POINTS_SGIS #define GL_FOG_FUNC_POINTS_SGIS 0x812B #endif #ifndef GL_FOG_FUNC_SGIS #define GL_FOG_FUNC_SGIS 0x812A #endif #ifndef GL_FOG_HINT #define GL_FOG_HINT 0x0C54 #endif #ifndef GL_FOG_INDEX #define GL_FOG_INDEX 0x0B61 #endif #ifndef GL_FOG_MODE #define GL_FOG_MODE 0x0B65 #endif #ifndef GL_FOG_OFFSET_SGIX #define GL_FOG_OFFSET_SGIX 0x8198 #endif #ifndef GL_FOG_OFFSET_VALUE_SGIX #define GL_FOG_OFFSET_VALUE_SGIX 0x8199 #endif #ifndef GL_FOG_SCALE_SGIX #define GL_FOG_SCALE_SGIX 0x81FC #endif #ifndef GL_FOG_SCALE_VALUE_SGIX #define GL_FOG_SCALE_VALUE_SGIX 0x81FD #endif #ifndef GL_FOG_SPECULAR_TEXTURE_WIN #define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC #endif #ifndef GL_FOG_START #define GL_FOG_START 0x0B63 #endif #ifndef GL_FONT_ASCENDER_BIT_NV #define GL_FONT_ASCENDER_BIT_NV 0x00200000 #endif #ifndef GL_FONT_DESCENDER_BIT_NV #define GL_FONT_DESCENDER_BIT_NV 0x00400000 #endif #ifndef GL_FONT_GLYPHS_AVAILABLE_NV #define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368 #endif #ifndef GL_FONT_HAS_KERNING_BIT_NV #define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 #endif #ifndef GL_FONT_HEIGHT_BIT_NV #define GL_FONT_HEIGHT_BIT_NV 0x00800000 #endif #ifndef GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV #define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 #endif #ifndef GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV #define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 #endif #ifndef GL_FONT_NUM_GLYPH_INDICES_BIT_NV #define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 #endif #ifndef GL_FONT_TARGET_UNAVAILABLE_NV #define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369 #endif #ifndef GL_FONT_UNAVAILABLE_NV #define GL_FONT_UNAVAILABLE_NV 0x936A #endif #ifndef GL_FONT_UNDERLINE_POSITION_BIT_NV #define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 #endif #ifndef GL_FONT_UNDERLINE_THICKNESS_BIT_NV #define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 #endif #ifndef GL_FONT_UNINTELLIGIBLE_NV #define GL_FONT_UNINTELLIGIBLE_NV 0x936B #endif #ifndef GL_FONT_UNITS_PER_EM_BIT_NV #define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 #endif #ifndef GL_FONT_X_MAX_BOUNDS_BIT_NV #define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 #endif #ifndef GL_FONT_X_MIN_BOUNDS_BIT_NV #define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 #endif #ifndef GL_FONT_Y_MAX_BOUNDS_BIT_NV #define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 #endif #ifndef GL_FONT_Y_MIN_BOUNDS_BIT_NV #define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 #endif #ifndef GL_FORCE_BLUE_TO_ONE_NV #define GL_FORCE_BLUE_TO_ONE_NV 0x8860 #endif #ifndef GL_FORMAT_SUBSAMPLE_244_244_OML #define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 #endif #ifndef GL_FORMAT_SUBSAMPLE_24_24_OML #define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 #endif #ifndef GL_FRACTIONAL_EVEN #define GL_FRACTIONAL_EVEN 0x8E7C #endif #ifndef GL_FRACTIONAL_ODD #define GL_FRACTIONAL_ODD 0x8E7B #endif #ifndef GL_FRAGMENT_COLOR_EXT #define GL_FRAGMENT_COLOR_EXT 0x834C #endif #ifndef GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX #define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 #endif #ifndef GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX #define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 #endif #ifndef GL_FRAGMENT_COLOR_MATERIAL_SGIX #define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 #endif #ifndef GL_FRAGMENT_COVERAGE_COLOR_NV #define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE #endif #ifndef GL_FRAGMENT_COVERAGE_TO_COLOR_NV #define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD #endif #ifndef GL_FRAGMENT_DEPTH #define GL_FRAGMENT_DEPTH 0x8452 #endif #ifndef GL_FRAGMENT_DEPTH_EXT #define GL_FRAGMENT_DEPTH_EXT 0x8452 #endif #ifndef GL_FRAGMENT_INPUT_NV #define GL_FRAGMENT_INPUT_NV 0x936D #endif #ifndef GL_FRAGMENT_INTERPOLATION_OFFSET_BITS #define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D #endif #ifndef GL_FRAGMENT_LIGHT0_SGIX #define GL_FRAGMENT_LIGHT0_SGIX 0x840C #endif #ifndef GL_FRAGMENT_LIGHT1_SGIX #define GL_FRAGMENT_LIGHT1_SGIX 0x840D #endif #ifndef GL_FRAGMENT_LIGHT2_SGIX #define GL_FRAGMENT_LIGHT2_SGIX 0x840E #endif #ifndef GL_FRAGMENT_LIGHT3_SGIX #define GL_FRAGMENT_LIGHT3_SGIX 0x840F #endif #ifndef GL_FRAGMENT_LIGHT4_SGIX #define GL_FRAGMENT_LIGHT4_SGIX 0x8410 #endif #ifndef GL_FRAGMENT_LIGHT5_SGIX #define GL_FRAGMENT_LIGHT5_SGIX 0x8411 #endif #ifndef GL_FRAGMENT_LIGHT6_SGIX #define GL_FRAGMENT_LIGHT6_SGIX 0x8412 #endif #ifndef GL_FRAGMENT_LIGHT7_SGIX #define GL_FRAGMENT_LIGHT7_SGIX 0x8413 #endif #ifndef GL_FRAGMENT_LIGHTING_SGIX #define GL_FRAGMENT_LIGHTING_SGIX 0x8400 #endif #ifndef GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX #define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A #endif #ifndef GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX #define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 #endif #ifndef GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX #define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B #endif #ifndef GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX #define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 #endif #ifndef GL_FRAGMENT_MATERIAL_EXT #define GL_FRAGMENT_MATERIAL_EXT 0x8349 #endif #ifndef GL_FRAGMENT_NORMAL_EXT #define GL_FRAGMENT_NORMAL_EXT 0x834A #endif #ifndef GL_FRAGMENT_PROGRAM_ARB #define GL_FRAGMENT_PROGRAM_ARB 0x8804 #endif #ifndef GL_FRAGMENT_PROGRAM_BINDING_NV #define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 #endif #ifndef GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA #define GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA 0x8bb3 #endif #ifndef GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA #define GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA 0x8bb2 #endif #ifndef GL_FRAGMENT_PROGRAM_CALLBACK_MESA #define GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x8bb1 #endif #ifndef GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV #define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D #endif #ifndef GL_FRAGMENT_PROGRAM_NV #define GL_FRAGMENT_PROGRAM_NV 0x8870 #endif #ifndef GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV #define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 #endif #ifndef GL_FRAGMENT_PROGRAM_POSITION_MESA #define GL_FRAGMENT_PROGRAM_POSITION_MESA 0x8bb0 #endif #ifndef GL_FRAGMENT_SHADER #define GL_FRAGMENT_SHADER 0x8B30 #endif #ifndef GL_FRAGMENT_SHADER_ARB #define GL_FRAGMENT_SHADER_ARB 0x8B30 #endif #ifndef GL_FRAGMENT_SHADER_ATI #define GL_FRAGMENT_SHADER_ATI 0x8920 #endif #ifndef GL_FRAGMENT_SHADER_BIT #define GL_FRAGMENT_SHADER_BIT 0x00000002 #endif #ifndef GL_FRAGMENT_SHADER_DERIVATIVE_HINT #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B #endif #ifndef GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B #endif #ifndef GL_FRAGMENT_SHADER_INVOCATIONS_ARB #define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4 #endif #ifndef GL_FRAGMENT_SUBROUTINE #define GL_FRAGMENT_SUBROUTINE 0x92EC #endif #ifndef GL_FRAGMENT_SUBROUTINE_UNIFORM #define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 #endif #ifndef GL_FRAGMENT_TEXTURE #define GL_FRAGMENT_TEXTURE 0x829F #endif #ifndef GL_FRAMEBUFFER #define GL_FRAMEBUFFER 0x8D40 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE #define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE #define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING #define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE #define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE #define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE #define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_LAYERED #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE #define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE #define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 #endif #ifndef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630 #endif #ifndef GL_FRAMEBUFFER_BARRIER_BIT #define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 #endif #ifndef GL_FRAMEBUFFER_BARRIER_BIT_EXT #define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 #endif #ifndef GL_FRAMEBUFFER_BINDING #define GL_FRAMEBUFFER_BINDING 0x8CA6 #endif #ifndef GL_FRAMEBUFFER_BINDING_EXT #define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 #endif #ifndef GL_FRAMEBUFFER_BLEND #define GL_FRAMEBUFFER_BLEND 0x828B #endif #ifndef GL_FRAMEBUFFER_COMPLETE #define GL_FRAMEBUFFER_COMPLETE 0x8CD5 #endif #ifndef GL_FRAMEBUFFER_COMPLETE_EXT #define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 #endif #ifndef GL_FRAMEBUFFER_DEFAULT #define GL_FRAMEBUFFER_DEFAULT 0x8218 #endif #ifndef GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS #define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 #endif #ifndef GL_FRAMEBUFFER_DEFAULT_HEIGHT #define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 #endif #ifndef GL_FRAMEBUFFER_DEFAULT_LAYERS #define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 #endif #ifndef GL_FRAMEBUFFER_DEFAULT_SAMPLES #define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 #endif #ifndef GL_FRAMEBUFFER_DEFAULT_WIDTH #define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 #endif #ifndef GL_FRAMEBUFFER_EXT #define GL_FRAMEBUFFER_EXT 0x8D40 #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT #define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER #define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT #define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT #define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER #define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC #endif #ifndef GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT #define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC #endif #ifndef GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV #define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 #endif #ifndef GL_FRAMEBUFFER_RENDERABLE #define GL_FRAMEBUFFER_RENDERABLE 0x8289 #endif #ifndef GL_FRAMEBUFFER_RENDERABLE_LAYERED #define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A #endif #ifndef GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV #define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 #endif #ifndef GL_FRAMEBUFFER_SRGB #define GL_FRAMEBUFFER_SRGB 0x8DB9 #endif #ifndef GL_FRAMEBUFFER_SRGB_CAPABLE_EXT #define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA #endif #ifndef GL_FRAMEBUFFER_SRGB_EXT #define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 #endif #ifndef GL_FRAMEBUFFER_UNDEFINED #define GL_FRAMEBUFFER_UNDEFINED 0x8219 #endif #ifndef GL_FRAMEBUFFER_UNSUPPORTED #define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD #endif #ifndef GL_FRAMEBUFFER_UNSUPPORTED_EXT #define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD #endif #ifndef GL_FRAMEZOOM_FACTOR_SGIX #define GL_FRAMEZOOM_FACTOR_SGIX 0x818C #endif #ifndef GL_FRAMEZOOM_SGIX #define GL_FRAMEZOOM_SGIX 0x818B #endif #ifndef GL_FRAME_NV #define GL_FRAME_NV 0x8E26 #endif #ifndef GL_FRONT #define GL_FRONT 0x0404 #endif #ifndef GL_FRONT_AND_BACK #define GL_FRONT_AND_BACK 0x0408 #endif #ifndef GL_FRONT_FACE #define GL_FRONT_FACE 0x0B46 #endif #ifndef GL_FRONT_FACE_COMMAND_NV #define GL_FRONT_FACE_COMMAND_NV 0x0012 #endif #ifndef GL_FRONT_LEFT #define GL_FRONT_LEFT 0x0400 #endif #ifndef GL_FRONT_RIGHT #define GL_FRONT_RIGHT 0x0401 #endif #ifndef GL_FULL_RANGE_EXT #define GL_FULL_RANGE_EXT 0x87E1 #endif #ifndef GL_FULL_STIPPLE_HINT_PGI #define GL_FULL_STIPPLE_HINT_PGI 0x1A219 #endif #ifndef GL_FULL_SUPPORT #define GL_FULL_SUPPORT 0x82B7 #endif #ifndef GL_FUNC_ADD #define GL_FUNC_ADD 0x8006 #endif #ifndef GL_FUNC_ADD_EXT #define GL_FUNC_ADD_EXT 0x8006 #endif #ifndef GL_FUNC_REVERSE_SUBTRACT #define GL_FUNC_REVERSE_SUBTRACT 0x800B #endif #ifndef GL_FUNC_REVERSE_SUBTRACT_EXT #define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B #endif #ifndef GL_FUNC_SUBTRACT #define GL_FUNC_SUBTRACT 0x800A #endif #ifndef GL_FUNC_SUBTRACT_EXT #define GL_FUNC_SUBTRACT_EXT 0x800A #endif #ifndef GL_GENERATE_MIPMAP #define GL_GENERATE_MIPMAP 0x8191 #endif #ifndef GL_GENERATE_MIPMAP_HINT #define GL_GENERATE_MIPMAP_HINT 0x8192 #endif #ifndef GL_GENERATE_MIPMAP_HINT_SGIS #define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 #endif #ifndef GL_GENERATE_MIPMAP_SGIS #define GL_GENERATE_MIPMAP_SGIS 0x8191 #endif #ifndef GL_GENERIC_ATTRIB_NV #define GL_GENERIC_ATTRIB_NV 0x8C7D #endif #ifndef GL_GEOMETRY_DEFORMATION_BIT_SGIX #define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 #endif #ifndef GL_GEOMETRY_DEFORMATION_SGIX #define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 #endif #ifndef GL_GEOMETRY_INPUT_TYPE #define GL_GEOMETRY_INPUT_TYPE 0x8917 #endif #ifndef GL_GEOMETRY_INPUT_TYPE_ARB #define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB #endif #ifndef GL_GEOMETRY_INPUT_TYPE_EXT #define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB #endif #ifndef GL_GEOMETRY_OUTPUT_TYPE #define GL_GEOMETRY_OUTPUT_TYPE 0x8918 #endif #ifndef GL_GEOMETRY_OUTPUT_TYPE_ARB #define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC #endif #ifndef GL_GEOMETRY_OUTPUT_TYPE_EXT #define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC #endif #ifndef GL_GEOMETRY_PROGRAM_NV #define GL_GEOMETRY_PROGRAM_NV 0x8C26 #endif #ifndef GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV #define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 #endif #ifndef GL_GEOMETRY_SHADER #define GL_GEOMETRY_SHADER 0x8DD9 #endif #ifndef GL_GEOMETRY_SHADER_ARB #define GL_GEOMETRY_SHADER_ARB 0x8DD9 #endif #ifndef GL_GEOMETRY_SHADER_BIT #define GL_GEOMETRY_SHADER_BIT 0x00000004 #endif #ifndef GL_GEOMETRY_SHADER_EXT #define GL_GEOMETRY_SHADER_EXT 0x8DD9 #endif #ifndef GL_GEOMETRY_SHADER_INVOCATIONS #define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F #endif #ifndef GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB #define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3 #endif #ifndef GL_GEOMETRY_SUBROUTINE #define GL_GEOMETRY_SUBROUTINE 0x92EB #endif #ifndef GL_GEOMETRY_SUBROUTINE_UNIFORM #define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 #endif #ifndef GL_GEOMETRY_TEXTURE #define GL_GEOMETRY_TEXTURE 0x829E #endif #ifndef GL_GEOMETRY_VERTICES_OUT #define GL_GEOMETRY_VERTICES_OUT 0x8916 #endif #ifndef GL_GEOMETRY_VERTICES_OUT_ARB #define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA #endif #ifndef GL_GEOMETRY_VERTICES_OUT_EXT #define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA #endif #ifndef GL_GEQUAL #define GL_GEQUAL 0x0206 #endif #ifndef GL_GET_TEXTURE_IMAGE_FORMAT #define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 #endif #ifndef GL_GET_TEXTURE_IMAGE_TYPE #define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 #endif #ifndef GL_GLOBAL_ALPHA_FACTOR_SUN #define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA #endif #ifndef GL_GLOBAL_ALPHA_SUN #define GL_GLOBAL_ALPHA_SUN 0x81D9 #endif #ifndef GL_GLYPH_HAS_KERNING_BIT_NV #define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 #endif #ifndef GL_GLYPH_HEIGHT_BIT_NV #define GL_GLYPH_HEIGHT_BIT_NV 0x02 #endif #ifndef GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV #define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 #endif #ifndef GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV #define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 #endif #ifndef GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV #define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 #endif #ifndef GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV #define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 #endif #ifndef GL_GLYPH_VERTICAL_BEARING_X_BIT_NV #define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 #endif #ifndef GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV #define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 #endif #ifndef GL_GLYPH_WIDTH_BIT_NV #define GL_GLYPH_WIDTH_BIT_NV 0x01 #endif #ifndef GL_GPU_ADDRESS_NV #define GL_GPU_ADDRESS_NV 0x8F34 #endif #ifndef GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX #define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 #endif #ifndef GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX #define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 #endif #ifndef GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX #define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B #endif #ifndef GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX #define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A #endif #ifndef GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX #define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 #endif #ifndef GL_GREATER #define GL_GREATER 0x0204 #endif #ifndef GL_GREEN #define GL_GREEN 0x1904 #endif #ifndef GL_GREEN_BIAS #define GL_GREEN_BIAS 0x0D19 #endif #ifndef GL_GREEN_BITS #define GL_GREEN_BITS 0x0D53 #endif #ifndef GL_GREEN_BIT_ATI #define GL_GREEN_BIT_ATI 0x00000002 #endif #ifndef GL_GREEN_INTEGER #define GL_GREEN_INTEGER 0x8D95 #endif #ifndef GL_GREEN_INTEGER_EXT #define GL_GREEN_INTEGER_EXT 0x8D95 #endif #ifndef GL_GREEN_MAX_CLAMP_INGR #define GL_GREEN_MAX_CLAMP_INGR 0x8565 #endif #ifndef GL_GREEN_MIN_CLAMP_INGR #define GL_GREEN_MIN_CLAMP_INGR 0x8561 #endif #ifndef GL_GREEN_NV #define GL_GREEN_NV 0x1904 #endif #ifndef GL_GREEN_SCALE #define GL_GREEN_SCALE 0x0D18 #endif #ifndef GL_GUILTY_CONTEXT_RESET #define GL_GUILTY_CONTEXT_RESET 0x8253 #endif #ifndef GL_GUILTY_CONTEXT_RESET_ARB #define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 #endif #ifndef GL_HALF_APPLE #define GL_HALF_APPLE 0x140B #endif #ifndef GL_HALF_BIAS_NEGATE_NV #define GL_HALF_BIAS_NEGATE_NV 0x853B #endif #ifndef GL_HALF_BIAS_NORMAL_NV #define GL_HALF_BIAS_NORMAL_NV 0x853A #endif #ifndef GL_HALF_BIT_ATI #define GL_HALF_BIT_ATI 0x00000008 #endif #ifndef GL_HALF_FLOAT #define GL_HALF_FLOAT 0x140B #endif #ifndef GL_HALF_FLOAT_ARB #define GL_HALF_FLOAT_ARB 0x140B #endif #ifndef GL_HALF_FLOAT_NV #define GL_HALF_FLOAT_NV 0x140B #endif #ifndef GL_HARDLIGHT_KHR #define GL_HARDLIGHT_KHR 0x929B #endif #ifndef GL_HARDLIGHT_NV #define GL_HARDLIGHT_NV 0x929B #endif #ifndef GL_HARDMIX_NV #define GL_HARDMIX_NV 0x92A9 #endif #ifndef GL_HIGH_FLOAT #define GL_HIGH_FLOAT 0x8DF2 #endif #ifndef GL_HIGH_INT #define GL_HIGH_INT 0x8DF5 #endif #ifndef GL_HILO16_NV #define GL_HILO16_NV 0x86F8 #endif #ifndef GL_HILO8_NV #define GL_HILO8_NV 0x885E #endif #ifndef GL_HILO_NV #define GL_HILO_NV 0x86F4 #endif #ifndef GL_HINT_BIT #define GL_HINT_BIT 0x00008000 #endif #ifndef GL_HISTOGRAM #define GL_HISTOGRAM 0x8024 #endif #ifndef GL_HISTOGRAM_ALPHA_SIZE #define GL_HISTOGRAM_ALPHA_SIZE 0x802B #endif #ifndef GL_HISTOGRAM_ALPHA_SIZE_EXT #define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B #endif #ifndef GL_HISTOGRAM_BLUE_SIZE #define GL_HISTOGRAM_BLUE_SIZE 0x802A #endif #ifndef GL_HISTOGRAM_BLUE_SIZE_EXT #define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A #endif #ifndef GL_HISTOGRAM_EXT #define GL_HISTOGRAM_EXT 0x8024 #endif #ifndef GL_HISTOGRAM_FORMAT #define GL_HISTOGRAM_FORMAT 0x8027 #endif #ifndef GL_HISTOGRAM_FORMAT_EXT #define GL_HISTOGRAM_FORMAT_EXT 0x8027 #endif #ifndef GL_HISTOGRAM_GREEN_SIZE #define GL_HISTOGRAM_GREEN_SIZE 0x8029 #endif #ifndef GL_HISTOGRAM_GREEN_SIZE_EXT #define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 #endif #ifndef GL_HISTOGRAM_LUMINANCE_SIZE #define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C #endif #ifndef GL_HISTOGRAM_LUMINANCE_SIZE_EXT #define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C #endif #ifndef GL_HISTOGRAM_RED_SIZE #define GL_HISTOGRAM_RED_SIZE 0x8028 #endif #ifndef GL_HISTOGRAM_RED_SIZE_EXT #define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 #endif #ifndef GL_HISTOGRAM_SINK #define GL_HISTOGRAM_SINK 0x802D #endif #ifndef GL_HISTOGRAM_SINK_EXT #define GL_HISTOGRAM_SINK_EXT 0x802D #endif #ifndef GL_HISTOGRAM_WIDTH #define GL_HISTOGRAM_WIDTH 0x8026 #endif #ifndef GL_HISTOGRAM_WIDTH_EXT #define GL_HISTOGRAM_WIDTH_EXT 0x8026 #endif #ifndef GL_HI_BIAS_NV #define GL_HI_BIAS_NV 0x8714 #endif #ifndef GL_HI_SCALE_NV #define GL_HI_SCALE_NV 0x870E #endif #ifndef GL_HORIZONTAL_LINE_TO_NV #define GL_HORIZONTAL_LINE_TO_NV 0x06 #endif #ifndef GL_HSL_COLOR_KHR #define GL_HSL_COLOR_KHR 0x92AF #endif #ifndef GL_HSL_COLOR_NV #define GL_HSL_COLOR_NV 0x92AF #endif #ifndef GL_HSL_HUE_KHR #define GL_HSL_HUE_KHR 0x92AD #endif #ifndef GL_HSL_HUE_NV #define GL_HSL_HUE_NV 0x92AD #endif #ifndef GL_HSL_LUMINOSITY_KHR #define GL_HSL_LUMINOSITY_KHR 0x92B0 #endif #ifndef GL_HSL_LUMINOSITY_NV #define GL_HSL_LUMINOSITY_NV 0x92B0 #endif #ifndef GL_HSL_SATURATION_KHR #define GL_HSL_SATURATION_KHR 0x92AE #endif #ifndef GL_HSL_SATURATION_NV #define GL_HSL_SATURATION_NV 0x92AE #endif #ifndef GL_IDENTITY_NV #define GL_IDENTITY_NV 0x862A #endif #ifndef GL_IGNORE_BORDER_HP #define GL_IGNORE_BORDER_HP 0x8150 #endif #ifndef GL_IMAGE_1D #define GL_IMAGE_1D 0x904C #endif #ifndef GL_IMAGE_1D_ARRAY #define GL_IMAGE_1D_ARRAY 0x9052 #endif #ifndef GL_IMAGE_1D_ARRAY_EXT #define GL_IMAGE_1D_ARRAY_EXT 0x9052 #endif #ifndef GL_IMAGE_1D_EXT #define GL_IMAGE_1D_EXT 0x904C #endif #ifndef GL_IMAGE_2D #define GL_IMAGE_2D 0x904D #endif #ifndef GL_IMAGE_2D_ARRAY #define GL_IMAGE_2D_ARRAY 0x9053 #endif #ifndef GL_IMAGE_2D_ARRAY_EXT #define GL_IMAGE_2D_ARRAY_EXT 0x9053 #endif #ifndef GL_IMAGE_2D_EXT #define GL_IMAGE_2D_EXT 0x904D #endif #ifndef GL_IMAGE_2D_MULTISAMPLE #define GL_IMAGE_2D_MULTISAMPLE 0x9055 #endif #ifndef GL_IMAGE_2D_MULTISAMPLE_ARRAY #define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 #endif #ifndef GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT #define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 #endif #ifndef GL_IMAGE_2D_MULTISAMPLE_EXT #define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 #endif #ifndef GL_IMAGE_2D_RECT #define GL_IMAGE_2D_RECT 0x904F #endif #ifndef GL_IMAGE_2D_RECT_EXT #define GL_IMAGE_2D_RECT_EXT 0x904F #endif #ifndef GL_IMAGE_3D #define GL_IMAGE_3D 0x904E #endif #ifndef GL_IMAGE_3D_EXT #define GL_IMAGE_3D_EXT 0x904E #endif #ifndef GL_IMAGE_BINDING_ACCESS #define GL_IMAGE_BINDING_ACCESS 0x8F3E #endif #ifndef GL_IMAGE_BINDING_ACCESS_EXT #define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E #endif #ifndef GL_IMAGE_BINDING_FORMAT #define GL_IMAGE_BINDING_FORMAT 0x906E #endif #ifndef GL_IMAGE_BINDING_FORMAT_EXT #define GL_IMAGE_BINDING_FORMAT_EXT 0x906E #endif #ifndef GL_IMAGE_BINDING_LAYER #define GL_IMAGE_BINDING_LAYER 0x8F3D #endif #ifndef GL_IMAGE_BINDING_LAYERED #define GL_IMAGE_BINDING_LAYERED 0x8F3C #endif #ifndef GL_IMAGE_BINDING_LAYERED_EXT #define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C #endif #ifndef GL_IMAGE_BINDING_LAYER_EXT #define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D #endif #ifndef GL_IMAGE_BINDING_LEVEL #define GL_IMAGE_BINDING_LEVEL 0x8F3B #endif #ifndef GL_IMAGE_BINDING_LEVEL_EXT #define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B #endif #ifndef GL_IMAGE_BINDING_NAME #define GL_IMAGE_BINDING_NAME 0x8F3A #endif #ifndef GL_IMAGE_BINDING_NAME_EXT #define GL_IMAGE_BINDING_NAME_EXT 0x8F3A #endif #ifndef GL_IMAGE_BUFFER #define GL_IMAGE_BUFFER 0x9051 #endif #ifndef GL_IMAGE_BUFFER_EXT #define GL_IMAGE_BUFFER_EXT 0x9051 #endif #ifndef GL_IMAGE_CLASS_10_10_10_2 #define GL_IMAGE_CLASS_10_10_10_2 0x82C3 #endif #ifndef GL_IMAGE_CLASS_11_11_10 #define GL_IMAGE_CLASS_11_11_10 0x82C2 #endif #ifndef GL_IMAGE_CLASS_1_X_16 #define GL_IMAGE_CLASS_1_X_16 0x82BE #endif #ifndef GL_IMAGE_CLASS_1_X_32 #define GL_IMAGE_CLASS_1_X_32 0x82BB #endif #ifndef GL_IMAGE_CLASS_1_X_8 #define GL_IMAGE_CLASS_1_X_8 0x82C1 #endif #ifndef GL_IMAGE_CLASS_2_X_16 #define GL_IMAGE_CLASS_2_X_16 0x82BD #endif #ifndef GL_IMAGE_CLASS_2_X_32 #define GL_IMAGE_CLASS_2_X_32 0x82BA #endif #ifndef GL_IMAGE_CLASS_2_X_8 #define GL_IMAGE_CLASS_2_X_8 0x82C0 #endif #ifndef GL_IMAGE_CLASS_4_X_16 #define GL_IMAGE_CLASS_4_X_16 0x82BC #endif #ifndef GL_IMAGE_CLASS_4_X_32 #define GL_IMAGE_CLASS_4_X_32 0x82B9 #endif #ifndef GL_IMAGE_CLASS_4_X_8 #define GL_IMAGE_CLASS_4_X_8 0x82BF #endif #ifndef GL_IMAGE_COMPATIBILITY_CLASS #define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 #endif #ifndef GL_IMAGE_CUBE #define GL_IMAGE_CUBE 0x9050 #endif #ifndef GL_IMAGE_CUBE_EXT #define GL_IMAGE_CUBE_EXT 0x9050 #endif #ifndef GL_IMAGE_CUBE_MAP_ARRAY #define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 #endif #ifndef GL_IMAGE_CUBE_MAP_ARRAY_EXT #define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 #endif #ifndef GL_IMAGE_CUBIC_WEIGHT_HP #define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E #endif #ifndef GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS #define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 #endif #ifndef GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE #define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 #endif #ifndef GL_IMAGE_FORMAT_COMPATIBILITY_TYPE #define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 #endif #ifndef GL_IMAGE_MAG_FILTER_HP #define GL_IMAGE_MAG_FILTER_HP 0x815C #endif #ifndef GL_IMAGE_MIN_FILTER_HP #define GL_IMAGE_MIN_FILTER_HP 0x815D #endif #ifndef GL_IMAGE_PIXEL_FORMAT #define GL_IMAGE_PIXEL_FORMAT 0x82A9 #endif #ifndef GL_IMAGE_PIXEL_TYPE #define GL_IMAGE_PIXEL_TYPE 0x82AA #endif #ifndef GL_IMAGE_ROTATE_ANGLE_HP #define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 #endif #ifndef GL_IMAGE_ROTATE_ORIGIN_X_HP #define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A #endif #ifndef GL_IMAGE_ROTATE_ORIGIN_Y_HP #define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B #endif #ifndef GL_IMAGE_SCALE_X_HP #define GL_IMAGE_SCALE_X_HP 0x8155 #endif #ifndef GL_IMAGE_SCALE_Y_HP #define GL_IMAGE_SCALE_Y_HP 0x8156 #endif #ifndef GL_IMAGE_TEXEL_SIZE #define GL_IMAGE_TEXEL_SIZE 0x82A7 #endif #ifndef GL_IMAGE_TRANSFORM_2D_HP #define GL_IMAGE_TRANSFORM_2D_HP 0x8161 #endif #ifndef GL_IMAGE_TRANSLATE_X_HP #define GL_IMAGE_TRANSLATE_X_HP 0x8157 #endif #ifndef GL_IMAGE_TRANSLATE_Y_HP #define GL_IMAGE_TRANSLATE_Y_HP 0x8158 #endif #ifndef GL_IMPLEMENTATION_COLOR_READ_FORMAT #define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B #endif #ifndef GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES #define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B #endif #ifndef GL_IMPLEMENTATION_COLOR_READ_TYPE #define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A #endif #ifndef GL_IMPLEMENTATION_COLOR_READ_TYPE_OES #define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A #endif #ifndef GL_INCR #define GL_INCR 0x1E02 #endif #ifndef GL_INCR_WRAP #define GL_INCR_WRAP 0x8507 #endif #ifndef GL_INCR_WRAP_EXT #define GL_INCR_WRAP_EXT 0x8507 #endif #ifndef GL_INDEX #define GL_INDEX 0x8222 #endif #ifndef GL_INDEX_ARRAY #define GL_INDEX_ARRAY 0x8077 #endif #ifndef GL_INDEX_ARRAY_ADDRESS_NV #define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 #endif #ifndef GL_INDEX_ARRAY_BUFFER_BINDING #define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 #endif #ifndef GL_INDEX_ARRAY_BUFFER_BINDING_ARB #define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 #endif #ifndef GL_INDEX_ARRAY_COUNT_EXT #define GL_INDEX_ARRAY_COUNT_EXT 0x8087 #endif #ifndef GL_INDEX_ARRAY_EXT #define GL_INDEX_ARRAY_EXT 0x8077 #endif #ifndef GL_INDEX_ARRAY_LENGTH_NV #define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E #endif #ifndef GL_INDEX_ARRAY_LIST_IBM #define GL_INDEX_ARRAY_LIST_IBM 103073 #endif #ifndef GL_INDEX_ARRAY_LIST_STRIDE_IBM #define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 #endif #ifndef GL_INDEX_ARRAY_POINTER #define GL_INDEX_ARRAY_POINTER 0x8091 #endif #ifndef GL_INDEX_ARRAY_POINTER_EXT #define GL_INDEX_ARRAY_POINTER_EXT 0x8091 #endif #ifndef GL_INDEX_ARRAY_STRIDE #define GL_INDEX_ARRAY_STRIDE 0x8086 #endif #ifndef GL_INDEX_ARRAY_STRIDE_EXT #define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 #endif #ifndef GL_INDEX_ARRAY_TYPE #define GL_INDEX_ARRAY_TYPE 0x8085 #endif #ifndef GL_INDEX_ARRAY_TYPE_EXT #define GL_INDEX_ARRAY_TYPE_EXT 0x8085 #endif #ifndef GL_INDEX_BITS #define GL_INDEX_BITS 0x0D51 #endif #ifndef GL_INDEX_BIT_PGI #define GL_INDEX_BIT_PGI 0x00080000 #endif #ifndef GL_INDEX_CLEAR_VALUE #define GL_INDEX_CLEAR_VALUE 0x0C20 #endif #ifndef GL_INDEX_LOGIC_OP #define GL_INDEX_LOGIC_OP 0x0BF1 #endif #ifndef GL_INDEX_MATERIAL_EXT #define GL_INDEX_MATERIAL_EXT 0x81B8 #endif #ifndef GL_INDEX_MATERIAL_FACE_EXT #define GL_INDEX_MATERIAL_FACE_EXT 0x81BA #endif #ifndef GL_INDEX_MATERIAL_PARAMETER_EXT #define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 #endif #ifndef GL_INDEX_MODE #define GL_INDEX_MODE 0x0C30 #endif #ifndef GL_INDEX_OFFSET #define GL_INDEX_OFFSET 0x0D13 #endif #ifndef GL_INDEX_SHIFT #define GL_INDEX_SHIFT 0x0D12 #endif #ifndef GL_INDEX_TEST_EXT #define GL_INDEX_TEST_EXT 0x81B5 #endif #ifndef GL_INDEX_TEST_FUNC_EXT #define GL_INDEX_TEST_FUNC_EXT 0x81B6 #endif #ifndef GL_INDEX_TEST_REF_EXT #define GL_INDEX_TEST_REF_EXT 0x81B7 #endif #ifndef GL_INDEX_WRITEMASK #define GL_INDEX_WRITEMASK 0x0C21 #endif #ifndef GL_INFO_LOG_LENGTH #define GL_INFO_LOG_LENGTH 0x8B84 #endif #ifndef GL_INNOCENT_CONTEXT_RESET #define GL_INNOCENT_CONTEXT_RESET 0x8254 #endif #ifndef GL_INNOCENT_CONTEXT_RESET_ARB #define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 #endif #ifndef GL_INSTRUMENT_BUFFER_POINTER_SGIX #define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 #endif #ifndef GL_INSTRUMENT_MEASUREMENTS_SGIX #define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 #endif #ifndef GL_INT #define GL_INT 0x1404 #endif #ifndef GL_INT16_NV #define GL_INT16_NV 0x8FE4 #endif #ifndef GL_INT16_VEC2_NV #define GL_INT16_VEC2_NV 0x8FE5 #endif #ifndef GL_INT16_VEC3_NV #define GL_INT16_VEC3_NV 0x8FE6 #endif #ifndef GL_INT16_VEC4_NV #define GL_INT16_VEC4_NV 0x8FE7 #endif #ifndef GL_INT64_NV #define GL_INT64_NV 0x140E #endif #ifndef GL_INT64_VEC2_NV #define GL_INT64_VEC2_NV 0x8FE9 #endif #ifndef GL_INT64_VEC3_NV #define GL_INT64_VEC3_NV 0x8FEA #endif #ifndef GL_INT64_VEC4_NV #define GL_INT64_VEC4_NV 0x8FEB #endif #ifndef GL_INT8_NV #define GL_INT8_NV 0x8FE0 #endif #ifndef GL_INT8_VEC2_NV #define GL_INT8_VEC2_NV 0x8FE1 #endif #ifndef GL_INT8_VEC3_NV #define GL_INT8_VEC3_NV 0x8FE2 #endif #ifndef GL_INT8_VEC4_NV #define GL_INT8_VEC4_NV 0x8FE3 #endif #ifndef GL_INTENSITY #define GL_INTENSITY 0x8049 #endif #ifndef GL_INTENSITY12 #define GL_INTENSITY12 0x804C #endif #ifndef GL_INTENSITY12_EXT #define GL_INTENSITY12_EXT 0x804C #endif #ifndef GL_INTENSITY16 #define GL_INTENSITY16 0x804D #endif #ifndef GL_INTENSITY16F_ARB #define GL_INTENSITY16F_ARB 0x881D #endif #ifndef GL_INTENSITY16I_EXT #define GL_INTENSITY16I_EXT 0x8D8B #endif #ifndef GL_INTENSITY16UI_EXT #define GL_INTENSITY16UI_EXT 0x8D79 #endif #ifndef GL_INTENSITY16_EXT #define GL_INTENSITY16_EXT 0x804D #endif #ifndef GL_INTENSITY16_SNORM #define GL_INTENSITY16_SNORM 0x901B #endif #ifndef GL_INTENSITY32F_ARB #define GL_INTENSITY32F_ARB 0x8817 #endif #ifndef GL_INTENSITY32I_EXT #define GL_INTENSITY32I_EXT 0x8D85 #endif #ifndef GL_INTENSITY32UI_EXT #define GL_INTENSITY32UI_EXT 0x8D73 #endif #ifndef GL_INTENSITY4 #define GL_INTENSITY4 0x804A #endif #ifndef GL_INTENSITY4_EXT #define GL_INTENSITY4_EXT 0x804A #endif #ifndef GL_INTENSITY8 #define GL_INTENSITY8 0x804B #endif #ifndef GL_INTENSITY8I_EXT #define GL_INTENSITY8I_EXT 0x8D91 #endif #ifndef GL_INTENSITY8UI_EXT #define GL_INTENSITY8UI_EXT 0x8D7F #endif #ifndef GL_INTENSITY8_EXT #define GL_INTENSITY8_EXT 0x804B #endif #ifndef GL_INTENSITY8_SNORM #define GL_INTENSITY8_SNORM 0x9017 #endif #ifndef GL_INTENSITY_EXT #define GL_INTENSITY_EXT 0x8049 #endif #ifndef GL_INTENSITY_FLOAT16_APPLE #define GL_INTENSITY_FLOAT16_APPLE 0x881D #endif #ifndef GL_INTENSITY_FLOAT16_ATI #define GL_INTENSITY_FLOAT16_ATI 0x881D #endif #ifndef GL_INTENSITY_FLOAT32_APPLE #define GL_INTENSITY_FLOAT32_APPLE 0x8817 #endif #ifndef GL_INTENSITY_FLOAT32_ATI #define GL_INTENSITY_FLOAT32_ATI 0x8817 #endif #ifndef GL_INTENSITY_SNORM #define GL_INTENSITY_SNORM 0x9013 #endif #ifndef GL_INTERLACE_OML #define GL_INTERLACE_OML 0x8980 #endif #ifndef GL_INTERLACE_READ_INGR #define GL_INTERLACE_READ_INGR 0x8568 #endif #ifndef GL_INTERLACE_READ_OML #define GL_INTERLACE_READ_OML 0x8981 #endif #ifndef GL_INTERLACE_SGIX #define GL_INTERLACE_SGIX 0x8094 #endif #ifndef GL_INTERLEAVED_ATTRIBS #define GL_INTERLEAVED_ATTRIBS 0x8C8C #endif #ifndef GL_INTERLEAVED_ATTRIBS_EXT #define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C #endif #ifndef GL_INTERLEAVED_ATTRIBS_NV #define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C #endif #ifndef GL_INTERNALFORMAT_ALPHA_SIZE #define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 #endif #ifndef GL_INTERNALFORMAT_ALPHA_TYPE #define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B #endif #ifndef GL_INTERNALFORMAT_BLUE_SIZE #define GL_INTERNALFORMAT_BLUE_SIZE 0x8273 #endif #ifndef GL_INTERNALFORMAT_BLUE_TYPE #define GL_INTERNALFORMAT_BLUE_TYPE 0x827A #endif #ifndef GL_INTERNALFORMAT_DEPTH_SIZE #define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 #endif #ifndef GL_INTERNALFORMAT_DEPTH_TYPE #define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C #endif #ifndef GL_INTERNALFORMAT_GREEN_SIZE #define GL_INTERNALFORMAT_GREEN_SIZE 0x8272 #endif #ifndef GL_INTERNALFORMAT_GREEN_TYPE #define GL_INTERNALFORMAT_GREEN_TYPE 0x8279 #endif #ifndef GL_INTERNALFORMAT_PREFERRED #define GL_INTERNALFORMAT_PREFERRED 0x8270 #endif #ifndef GL_INTERNALFORMAT_RED_SIZE #define GL_INTERNALFORMAT_RED_SIZE 0x8271 #endif #ifndef GL_INTERNALFORMAT_RED_TYPE #define GL_INTERNALFORMAT_RED_TYPE 0x8278 #endif #ifndef GL_INTERNALFORMAT_SHARED_SIZE #define GL_INTERNALFORMAT_SHARED_SIZE 0x8277 #endif #ifndef GL_INTERNALFORMAT_STENCIL_SIZE #define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 #endif #ifndef GL_INTERNALFORMAT_STENCIL_TYPE #define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D #endif #ifndef GL_INTERNALFORMAT_SUPPORTED #define GL_INTERNALFORMAT_SUPPORTED 0x826F #endif #ifndef GL_INTERPOLATE #define GL_INTERPOLATE 0x8575 #endif #ifndef GL_INTERPOLATE_ARB #define GL_INTERPOLATE_ARB 0x8575 #endif #ifndef GL_INTERPOLATE_EXT #define GL_INTERPOLATE_EXT 0x8575 #endif #ifndef GL_INT_2_10_10_10_REV #define GL_INT_2_10_10_10_REV 0x8D9F #endif #ifndef GL_INT_IMAGE_1D #define GL_INT_IMAGE_1D 0x9057 #endif #ifndef GL_INT_IMAGE_1D_ARRAY #define GL_INT_IMAGE_1D_ARRAY 0x905D #endif #ifndef GL_INT_IMAGE_1D_ARRAY_EXT #define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D #endif #ifndef GL_INT_IMAGE_1D_EXT #define GL_INT_IMAGE_1D_EXT 0x9057 #endif #ifndef GL_INT_IMAGE_2D #define GL_INT_IMAGE_2D 0x9058 #endif #ifndef GL_INT_IMAGE_2D_ARRAY #define GL_INT_IMAGE_2D_ARRAY 0x905E #endif #ifndef GL_INT_IMAGE_2D_ARRAY_EXT #define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E #endif #ifndef GL_INT_IMAGE_2D_EXT #define GL_INT_IMAGE_2D_EXT 0x9058 #endif #ifndef GL_INT_IMAGE_2D_MULTISAMPLE #define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 #endif #ifndef GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY #define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 #endif #ifndef GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT #define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 #endif #ifndef GL_INT_IMAGE_2D_MULTISAMPLE_EXT #define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 #endif #ifndef GL_INT_IMAGE_2D_RECT #define GL_INT_IMAGE_2D_RECT 0x905A #endif #ifndef GL_INT_IMAGE_2D_RECT_EXT #define GL_INT_IMAGE_2D_RECT_EXT 0x905A #endif #ifndef GL_INT_IMAGE_3D #define GL_INT_IMAGE_3D 0x9059 #endif #ifndef GL_INT_IMAGE_3D_EXT #define GL_INT_IMAGE_3D_EXT 0x9059 #endif #ifndef GL_INT_IMAGE_BUFFER #define GL_INT_IMAGE_BUFFER 0x905C #endif #ifndef GL_INT_IMAGE_BUFFER_EXT #define GL_INT_IMAGE_BUFFER_EXT 0x905C #endif #ifndef GL_INT_IMAGE_CUBE #define GL_INT_IMAGE_CUBE 0x905B #endif #ifndef GL_INT_IMAGE_CUBE_EXT #define GL_INT_IMAGE_CUBE_EXT 0x905B #endif #ifndef GL_INT_IMAGE_CUBE_MAP_ARRAY #define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F #endif #ifndef GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT #define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F #endif #ifndef GL_INT_SAMPLER_1D #define GL_INT_SAMPLER_1D 0x8DC9 #endif #ifndef GL_INT_SAMPLER_1D_ARRAY #define GL_INT_SAMPLER_1D_ARRAY 0x8DCE #endif #ifndef GL_INT_SAMPLER_1D_ARRAY_EXT #define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE #endif #ifndef GL_INT_SAMPLER_1D_EXT #define GL_INT_SAMPLER_1D_EXT 0x8DC9 #endif #ifndef GL_INT_SAMPLER_2D #define GL_INT_SAMPLER_2D 0x8DCA #endif #ifndef GL_INT_SAMPLER_2D_ARRAY #define GL_INT_SAMPLER_2D_ARRAY 0x8DCF #endif #ifndef GL_INT_SAMPLER_2D_ARRAY_EXT #define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF #endif #ifndef GL_INT_SAMPLER_2D_EXT #define GL_INT_SAMPLER_2D_EXT 0x8DCA #endif #ifndef GL_INT_SAMPLER_2D_MULTISAMPLE #define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 #endif #ifndef GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY #define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C #endif #ifndef GL_INT_SAMPLER_2D_RECT #define GL_INT_SAMPLER_2D_RECT 0x8DCD #endif #ifndef GL_INT_SAMPLER_2D_RECT_EXT #define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD #endif #ifndef GL_INT_SAMPLER_3D #define GL_INT_SAMPLER_3D 0x8DCB #endif #ifndef GL_INT_SAMPLER_3D_EXT #define GL_INT_SAMPLER_3D_EXT 0x8DCB #endif #ifndef GL_INT_SAMPLER_BUFFER #define GL_INT_SAMPLER_BUFFER 0x8DD0 #endif #ifndef GL_INT_SAMPLER_BUFFER_AMD #define GL_INT_SAMPLER_BUFFER_AMD 0x9002 #endif #ifndef GL_INT_SAMPLER_BUFFER_EXT #define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 #endif #ifndef GL_INT_SAMPLER_CUBE #define GL_INT_SAMPLER_CUBE 0x8DCC #endif #ifndef GL_INT_SAMPLER_CUBE_EXT #define GL_INT_SAMPLER_CUBE_EXT 0x8DCC #endif #ifndef GL_INT_SAMPLER_CUBE_MAP_ARRAY #define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E #endif #ifndef GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB #define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E #endif #ifndef GL_INT_SAMPLER_RENDERBUFFER_NV #define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 #endif #ifndef GL_INT_VEC2 #define GL_INT_VEC2 0x8B53 #endif #ifndef GL_INT_VEC2_ARB #define GL_INT_VEC2_ARB 0x8B53 #endif #ifndef GL_INT_VEC3 #define GL_INT_VEC3 0x8B54 #endif #ifndef GL_INT_VEC3_ARB #define GL_INT_VEC3_ARB 0x8B54 #endif #ifndef GL_INT_VEC4 #define GL_INT_VEC4 0x8B55 #endif #ifndef GL_INT_VEC4_ARB #define GL_INT_VEC4_ARB 0x8B55 #endif #ifndef GL_INVALID_ENUM #define GL_INVALID_ENUM 0x0500 #endif #ifndef GL_INVALID_FRAMEBUFFER_OPERATION #define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 #endif #ifndef GL_INVALID_FRAMEBUFFER_OPERATION_EXT #define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 #endif #ifndef GL_INVALID_INDEX #define GL_INVALID_INDEX 0xFFFFFFFFu #endif #ifndef GL_INVALID_OPERATION #define GL_INVALID_OPERATION 0x0502 #endif #ifndef GL_INVALID_VALUE #define GL_INVALID_VALUE 0x0501 #endif #ifndef GL_INVARIANT_DATATYPE_EXT #define GL_INVARIANT_DATATYPE_EXT 0x87EB #endif #ifndef GL_INVARIANT_EXT #define GL_INVARIANT_EXT 0x87C2 #endif #ifndef GL_INVARIANT_VALUE_EXT #define GL_INVARIANT_VALUE_EXT 0x87EA #endif #ifndef GL_INVERSE_NV #define GL_INVERSE_NV 0x862B #endif #ifndef GL_INVERSE_TRANSPOSE_NV #define GL_INVERSE_TRANSPOSE_NV 0x862D #endif #ifndef GL_INVERT #define GL_INVERT 0x150A #endif #ifndef GL_INVERTED_SCREEN_W_REND #define GL_INVERTED_SCREEN_W_REND 0x8491 #endif #ifndef GL_INVERT_OVG_NV #define GL_INVERT_OVG_NV 0x92B4 #endif #ifndef GL_INVERT_RGB_NV #define GL_INVERT_RGB_NV 0x92A3 #endif #ifndef GL_IR_INSTRUMENT1_SGIX #define GL_IR_INSTRUMENT1_SGIX 0x817F #endif #ifndef GL_ISOLINES #define GL_ISOLINES 0x8E7A #endif #ifndef GL_IS_PER_PATCH #define GL_IS_PER_PATCH 0x92E7 #endif #ifndef GL_IS_ROW_MAJOR #define GL_IS_ROW_MAJOR 0x9300 #endif #ifndef GL_ITALIC_BIT_NV #define GL_ITALIC_BIT_NV 0x02 #endif #ifndef GL_IUI_N3F_V2F_EXT #define GL_IUI_N3F_V2F_EXT 0x81AF #endif #ifndef GL_IUI_N3F_V3F_EXT #define GL_IUI_N3F_V3F_EXT 0x81B0 #endif #ifndef GL_IUI_V2F_EXT #define GL_IUI_V2F_EXT 0x81AD #endif #ifndef GL_IUI_V3F_EXT #define GL_IUI_V3F_EXT 0x81AE #endif #ifndef GL_KEEP #define GL_KEEP 0x1E00 #endif #ifndef GL_LARGE_CCW_ARC_TO_NV #define GL_LARGE_CCW_ARC_TO_NV 0x16 #endif #ifndef GL_LARGE_CW_ARC_TO_NV #define GL_LARGE_CW_ARC_TO_NV 0x18 #endif #ifndef GL_LAST_VERTEX_CONVENTION #define GL_LAST_VERTEX_CONVENTION 0x8E4E #endif #ifndef GL_LAST_VERTEX_CONVENTION_EXT #define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E #endif #ifndef GL_LAST_VIDEO_CAPTURE_STATUS_NV #define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027 #endif #ifndef GL_LAYER_NV #define GL_LAYER_NV 0x8DAA #endif #ifndef GL_LAYER_PROVOKING_VERTEX #define GL_LAYER_PROVOKING_VERTEX 0x825E #endif #ifndef GL_LAYOUT_DEFAULT_INTEL #define GL_LAYOUT_DEFAULT_INTEL 0 #endif #ifndef GL_LAYOUT_LINEAR_CPU_CACHED_INTEL #define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2 #endif #ifndef GL_LAYOUT_LINEAR_INTEL #define GL_LAYOUT_LINEAR_INTEL 1 #endif #ifndef GL_LEFT #define GL_LEFT 0x0406 #endif #ifndef GL_LEQUAL #define GL_LEQUAL 0x0203 #endif #ifndef GL_LERP_ATI #define GL_LERP_ATI 0x8969 #endif #ifndef GL_LESS #define GL_LESS 0x0201 #endif #ifndef GL_LIGHT0 #define GL_LIGHT0 0x4000 #endif #ifndef GL_LIGHT1 #define GL_LIGHT1 0x4001 #endif #ifndef GL_LIGHT2 #define GL_LIGHT2 0x4002 #endif #ifndef GL_LIGHT3 #define GL_LIGHT3 0x4003 #endif #ifndef GL_LIGHT4 #define GL_LIGHT4 0x4004 #endif #ifndef GL_LIGHT5 #define GL_LIGHT5 0x4005 #endif #ifndef GL_LIGHT6 #define GL_LIGHT6 0x4006 #endif #ifndef GL_LIGHT7 #define GL_LIGHT7 0x4007 #endif #ifndef GL_LIGHTEN_KHR #define GL_LIGHTEN_KHR 0x9298 #endif #ifndef GL_LIGHTEN_NV #define GL_LIGHTEN_NV 0x9298 #endif #ifndef GL_LIGHTING #define GL_LIGHTING 0x0B50 #endif #ifndef GL_LIGHTING_BIT #define GL_LIGHTING_BIT 0x00000040 #endif #ifndef GL_LIGHT_ENV_MODE_SGIX #define GL_LIGHT_ENV_MODE_SGIX 0x8407 #endif #ifndef GL_LIGHT_MODEL_AMBIENT #define GL_LIGHT_MODEL_AMBIENT 0x0B53 #endif #ifndef GL_LIGHT_MODEL_COLOR_CONTROL #define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 #endif #ifndef GL_LIGHT_MODEL_COLOR_CONTROL_EXT #define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 #endif #ifndef GL_LIGHT_MODEL_LOCAL_VIEWER #define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 #endif #ifndef GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE #define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 #endif #ifndef GL_LIGHT_MODEL_TWO_SIDE #define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 #endif #ifndef GL_LINE #define GL_LINE 0x1B01 #endif #ifndef GL_LINEAR #define GL_LINEAR 0x2601 #endif #ifndef GL_LINEARBURN_NV #define GL_LINEARBURN_NV 0x92A5 #endif #ifndef GL_LINEARDODGE_NV #define GL_LINEARDODGE_NV 0x92A4 #endif #ifndef GL_LINEARLIGHT_NV #define GL_LINEARLIGHT_NV 0x92A7 #endif #ifndef GL_LINEAR_ATTENUATION #define GL_LINEAR_ATTENUATION 0x1208 #endif #ifndef GL_LINEAR_CLIPMAP_LINEAR_SGIX #define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 #endif #ifndef GL_LINEAR_CLIPMAP_NEAREST_SGIX #define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F #endif #ifndef GL_LINEAR_DETAIL_ALPHA_SGIS #define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 #endif #ifndef GL_LINEAR_DETAIL_COLOR_SGIS #define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 #endif #ifndef GL_LINEAR_DETAIL_SGIS #define GL_LINEAR_DETAIL_SGIS 0x8097 #endif #ifndef GL_LINEAR_MIPMAP_LINEAR #define GL_LINEAR_MIPMAP_LINEAR 0x2703 #endif #ifndef GL_LINEAR_MIPMAP_NEAREST #define GL_LINEAR_MIPMAP_NEAREST 0x2701 #endif #ifndef GL_LINEAR_SHARPEN_ALPHA_SGIS #define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE #endif #ifndef GL_LINEAR_SHARPEN_COLOR_SGIS #define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF #endif #ifndef GL_LINEAR_SHARPEN_SGIS #define GL_LINEAR_SHARPEN_SGIS 0x80AD #endif #ifndef GL_LINES #define GL_LINES 0x0001 #endif #ifndef GL_LINES_ADJACENCY #define GL_LINES_ADJACENCY 0x000A #endif #ifndef GL_LINES_ADJACENCY_ARB #define GL_LINES_ADJACENCY_ARB 0x000A #endif #ifndef GL_LINES_ADJACENCY_EXT #define GL_LINES_ADJACENCY_EXT 0x000A #endif #ifndef GL_LINE_BIT #define GL_LINE_BIT 0x00000004 #endif #ifndef GL_LINE_LOOP #define GL_LINE_LOOP 0x0002 #endif #ifndef GL_LINE_RESET_TOKEN #define GL_LINE_RESET_TOKEN 0x0707 #endif #ifndef GL_LINE_SMOOTH #define GL_LINE_SMOOTH 0x0B20 #endif #ifndef GL_LINE_SMOOTH_HINT #define GL_LINE_SMOOTH_HINT 0x0C52 #endif #ifndef GL_LINE_STIPPLE #define GL_LINE_STIPPLE 0x0B24 #endif #ifndef GL_LINE_STIPPLE_PATTERN #define GL_LINE_STIPPLE_PATTERN 0x0B25 #endif #ifndef GL_LINE_STIPPLE_REPEAT #define GL_LINE_STIPPLE_REPEAT 0x0B26 #endif #ifndef GL_LINE_STRIP #define GL_LINE_STRIP 0x0003 #endif #ifndef GL_LINE_STRIP_ADJACENCY #define GL_LINE_STRIP_ADJACENCY 0x000B #endif #ifndef GL_LINE_STRIP_ADJACENCY_ARB #define GL_LINE_STRIP_ADJACENCY_ARB 0x000B #endif #ifndef GL_LINE_STRIP_ADJACENCY_EXT #define GL_LINE_STRIP_ADJACENCY_EXT 0x000B #endif #ifndef GL_LINE_TOKEN #define GL_LINE_TOKEN 0x0702 #endif #ifndef GL_LINE_TO_NV #define GL_LINE_TO_NV 0x04 #endif #ifndef GL_LINE_WIDTH #define GL_LINE_WIDTH 0x0B21 #endif #ifndef GL_LINE_WIDTH_COMMAND_NV #define GL_LINE_WIDTH_COMMAND_NV 0x000D #endif #ifndef GL_LINE_WIDTH_GRANULARITY #define GL_LINE_WIDTH_GRANULARITY 0x0B23 #endif #ifndef GL_LINE_WIDTH_RANGE #define GL_LINE_WIDTH_RANGE 0x0B22 #endif #ifndef GL_LINK_STATUS #define GL_LINK_STATUS 0x8B82 #endif #ifndef GL_LIST_BASE #define GL_LIST_BASE 0x0B32 #endif #ifndef GL_LIST_BIT #define GL_LIST_BIT 0x00020000 #endif #ifndef GL_LIST_INDEX #define GL_LIST_INDEX 0x0B33 #endif #ifndef GL_LIST_MODE #define GL_LIST_MODE 0x0B30 #endif #ifndef GL_LIST_PRIORITY_SGIX #define GL_LIST_PRIORITY_SGIX 0x8182 #endif #ifndef GL_LOAD #define GL_LOAD 0x0101 #endif #ifndef GL_LOCAL_CONSTANT_DATATYPE_EXT #define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED #endif #ifndef GL_LOCAL_CONSTANT_EXT #define GL_LOCAL_CONSTANT_EXT 0x87C3 #endif #ifndef GL_LOCAL_CONSTANT_VALUE_EXT #define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC #endif #ifndef GL_LOCAL_EXT #define GL_LOCAL_EXT 0x87C4 #endif #ifndef GL_LOCATION #define GL_LOCATION 0x930E #endif #ifndef GL_LOCATION_COMPONENT #define GL_LOCATION_COMPONENT 0x934A #endif #ifndef GL_LOCATION_INDEX #define GL_LOCATION_INDEX 0x930F #endif #ifndef GL_LOGIC_OP #define GL_LOGIC_OP GL_INDEX_LOGIC_OP #endif #ifndef GL_LOGIC_OP_MODE #define GL_LOGIC_OP_MODE 0x0BF0 #endif #ifndef GL_LOSE_CONTEXT_ON_RESET #define GL_LOSE_CONTEXT_ON_RESET 0x8252 #endif #ifndef GL_LOSE_CONTEXT_ON_RESET_ARB #define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 #endif #ifndef GL_LOWER_LEFT #define GL_LOWER_LEFT 0x8CA1 #endif #ifndef GL_LOW_FLOAT #define GL_LOW_FLOAT 0x8DF0 #endif #ifndef GL_LOW_INT #define GL_LOW_INT 0x8DF3 #endif #ifndef GL_LO_BIAS_NV #define GL_LO_BIAS_NV 0x8715 #endif #ifndef GL_LO_SCALE_NV #define GL_LO_SCALE_NV 0x870F #endif #ifndef GL_LUMINANCE #define GL_LUMINANCE 0x1909 #endif #ifndef GL_LUMINANCE12 #define GL_LUMINANCE12 0x8041 #endif #ifndef GL_LUMINANCE12_ALPHA12 #define GL_LUMINANCE12_ALPHA12 0x8047 #endif #ifndef GL_LUMINANCE12_ALPHA12_EXT #define GL_LUMINANCE12_ALPHA12_EXT 0x8047 #endif #ifndef GL_LUMINANCE12_ALPHA4 #define GL_LUMINANCE12_ALPHA4 0x8046 #endif #ifndef GL_LUMINANCE12_ALPHA4_EXT #define GL_LUMINANCE12_ALPHA4_EXT 0x8046 #endif #ifndef GL_LUMINANCE12_EXT #define GL_LUMINANCE12_EXT 0x8041 #endif #ifndef GL_LUMINANCE16 #define GL_LUMINANCE16 0x8042 #endif #ifndef GL_LUMINANCE16F_ARB #define GL_LUMINANCE16F_ARB 0x881E #endif #ifndef GL_LUMINANCE16I_EXT #define GL_LUMINANCE16I_EXT 0x8D8C #endif #ifndef GL_LUMINANCE16UI_EXT #define GL_LUMINANCE16UI_EXT 0x8D7A #endif #ifndef GL_LUMINANCE16_ALPHA16 #define GL_LUMINANCE16_ALPHA16 0x8048 #endif #ifndef GL_LUMINANCE16_ALPHA16_EXT #define GL_LUMINANCE16_ALPHA16_EXT 0x8048 #endif #ifndef GL_LUMINANCE16_ALPHA16_SNORM #define GL_LUMINANCE16_ALPHA16_SNORM 0x901A #endif #ifndef GL_LUMINANCE16_EXT #define GL_LUMINANCE16_EXT 0x8042 #endif #ifndef GL_LUMINANCE16_SNORM #define GL_LUMINANCE16_SNORM 0x9019 #endif #ifndef GL_LUMINANCE32F_ARB #define GL_LUMINANCE32F_ARB 0x8818 #endif #ifndef GL_LUMINANCE32I_EXT #define GL_LUMINANCE32I_EXT 0x8D86 #endif #ifndef GL_LUMINANCE32UI_EXT #define GL_LUMINANCE32UI_EXT 0x8D74 #endif #ifndef GL_LUMINANCE4 #define GL_LUMINANCE4 0x803F #endif #ifndef GL_LUMINANCE4_ALPHA4 #define GL_LUMINANCE4_ALPHA4 0x8043 #endif #ifndef GL_LUMINANCE4_ALPHA4_EXT #define GL_LUMINANCE4_ALPHA4_EXT 0x8043 #endif #ifndef GL_LUMINANCE4_EXT #define GL_LUMINANCE4_EXT 0x803F #endif #ifndef GL_LUMINANCE6_ALPHA2 #define GL_LUMINANCE6_ALPHA2 0x8044 #endif #ifndef GL_LUMINANCE6_ALPHA2_EXT #define GL_LUMINANCE6_ALPHA2_EXT 0x8044 #endif #ifndef GL_LUMINANCE8 #define GL_LUMINANCE8 0x8040 #endif #ifndef GL_LUMINANCE8I_EXT #define GL_LUMINANCE8I_EXT 0x8D92 #endif #ifndef GL_LUMINANCE8UI_EXT #define GL_LUMINANCE8UI_EXT 0x8D80 #endif #ifndef GL_LUMINANCE8_ALPHA8 #define GL_LUMINANCE8_ALPHA8 0x8045 #endif #ifndef GL_LUMINANCE8_ALPHA8_EXT #define GL_LUMINANCE8_ALPHA8_EXT 0x8045 #endif #ifndef GL_LUMINANCE8_ALPHA8_SNORM #define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 #endif #ifndef GL_LUMINANCE8_EXT #define GL_LUMINANCE8_EXT 0x8040 #endif #ifndef GL_LUMINANCE8_SNORM #define GL_LUMINANCE8_SNORM 0x9015 #endif #ifndef GL_LUMINANCE_ALPHA #define GL_LUMINANCE_ALPHA 0x190A #endif #ifndef GL_LUMINANCE_ALPHA16F_ARB #define GL_LUMINANCE_ALPHA16F_ARB 0x881F #endif #ifndef GL_LUMINANCE_ALPHA16I_EXT #define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D #endif #ifndef GL_LUMINANCE_ALPHA16UI_EXT #define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B #endif #ifndef GL_LUMINANCE_ALPHA32F_ARB #define GL_LUMINANCE_ALPHA32F_ARB 0x8819 #endif #ifndef GL_LUMINANCE_ALPHA32I_EXT #define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 #endif #ifndef GL_LUMINANCE_ALPHA32UI_EXT #define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 #endif #ifndef GL_LUMINANCE_ALPHA8I_EXT #define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 #endif #ifndef GL_LUMINANCE_ALPHA8UI_EXT #define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 #endif #ifndef GL_LUMINANCE_ALPHA_FLOAT16_APPLE #define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F #endif #ifndef GL_LUMINANCE_ALPHA_FLOAT16_ATI #define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F #endif #ifndef GL_LUMINANCE_ALPHA_FLOAT32_APPLE #define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 #endif #ifndef GL_LUMINANCE_ALPHA_FLOAT32_ATI #define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 #endif #ifndef GL_LUMINANCE_ALPHA_INTEGER_EXT #define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D #endif #ifndef GL_LUMINANCE_ALPHA_SNORM #define GL_LUMINANCE_ALPHA_SNORM 0x9012 #endif #ifndef GL_LUMINANCE_FLOAT16_APPLE #define GL_LUMINANCE_FLOAT16_APPLE 0x881E #endif #ifndef GL_LUMINANCE_FLOAT16_ATI #define GL_LUMINANCE_FLOAT16_ATI 0x881E #endif #ifndef GL_LUMINANCE_FLOAT32_APPLE #define GL_LUMINANCE_FLOAT32_APPLE 0x8818 #endif #ifndef GL_LUMINANCE_FLOAT32_ATI #define GL_LUMINANCE_FLOAT32_ATI 0x8818 #endif #ifndef GL_LUMINANCE_INTEGER_EXT #define GL_LUMINANCE_INTEGER_EXT 0x8D9C #endif #ifndef GL_LUMINANCE_SNORM #define GL_LUMINANCE_SNORM 0x9011 #endif #ifndef GL_MAD_ATI #define GL_MAD_ATI 0x8968 #endif #ifndef GL_MAGNITUDE_BIAS_NV #define GL_MAGNITUDE_BIAS_NV 0x8718 #endif #ifndef GL_MAGNITUDE_SCALE_NV #define GL_MAGNITUDE_SCALE_NV 0x8712 #endif #ifndef GL_MAJOR_VERSION #define GL_MAJOR_VERSION 0x821B #endif #ifndef GL_MANUAL_GENERATE_MIPMAP #define GL_MANUAL_GENERATE_MIPMAP 0x8294 #endif #ifndef GL_MAP1_BINORMAL_EXT #define GL_MAP1_BINORMAL_EXT 0x8446 #endif #ifndef GL_MAP1_COLOR_4 #define GL_MAP1_COLOR_4 0x0D90 #endif #ifndef GL_MAP1_GRID_DOMAIN #define GL_MAP1_GRID_DOMAIN 0x0DD0 #endif #ifndef GL_MAP1_GRID_SEGMENTS #define GL_MAP1_GRID_SEGMENTS 0x0DD1 #endif #ifndef GL_MAP1_INDEX #define GL_MAP1_INDEX 0x0D91 #endif #ifndef GL_MAP1_NORMAL #define GL_MAP1_NORMAL 0x0D92 #endif #ifndef GL_MAP1_TANGENT_EXT #define GL_MAP1_TANGENT_EXT 0x8444 #endif #ifndef GL_MAP1_TEXTURE_COORD_1 #define GL_MAP1_TEXTURE_COORD_1 0x0D93 #endif #ifndef GL_MAP1_TEXTURE_COORD_2 #define GL_MAP1_TEXTURE_COORD_2 0x0D94 #endif #ifndef GL_MAP1_TEXTURE_COORD_3 #define GL_MAP1_TEXTURE_COORD_3 0x0D95 #endif #ifndef GL_MAP1_TEXTURE_COORD_4 #define GL_MAP1_TEXTURE_COORD_4 0x0D96 #endif #ifndef GL_MAP1_VERTEX_3 #define GL_MAP1_VERTEX_3 0x0D97 #endif #ifndef GL_MAP1_VERTEX_4 #define GL_MAP1_VERTEX_4 0x0D98 #endif #ifndef GL_MAP1_VERTEX_ATTRIB0_4_NV #define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 #endif #ifndef GL_MAP1_VERTEX_ATTRIB10_4_NV #define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A #endif #ifndef GL_MAP1_VERTEX_ATTRIB11_4_NV #define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B #endif #ifndef GL_MAP1_VERTEX_ATTRIB12_4_NV #define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C #endif #ifndef GL_MAP1_VERTEX_ATTRIB13_4_NV #define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D #endif #ifndef GL_MAP1_VERTEX_ATTRIB14_4_NV #define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E #endif #ifndef GL_MAP1_VERTEX_ATTRIB15_4_NV #define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F #endif #ifndef GL_MAP1_VERTEX_ATTRIB1_4_NV #define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 #endif #ifndef GL_MAP1_VERTEX_ATTRIB2_4_NV #define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 #endif #ifndef GL_MAP1_VERTEX_ATTRIB3_4_NV #define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 #endif #ifndef GL_MAP1_VERTEX_ATTRIB4_4_NV #define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 #endif #ifndef GL_MAP1_VERTEX_ATTRIB5_4_NV #define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 #endif #ifndef GL_MAP1_VERTEX_ATTRIB6_4_NV #define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 #endif #ifndef GL_MAP1_VERTEX_ATTRIB7_4_NV #define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 #endif #ifndef GL_MAP1_VERTEX_ATTRIB8_4_NV #define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 #endif #ifndef GL_MAP1_VERTEX_ATTRIB9_4_NV #define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 #endif #ifndef GL_MAP2_BINORMAL_EXT #define GL_MAP2_BINORMAL_EXT 0x8447 #endif #ifndef GL_MAP2_COLOR_4 #define GL_MAP2_COLOR_4 0x0DB0 #endif #ifndef GL_MAP2_GRID_DOMAIN #define GL_MAP2_GRID_DOMAIN 0x0DD2 #endif #ifndef GL_MAP2_GRID_SEGMENTS #define GL_MAP2_GRID_SEGMENTS 0x0DD3 #endif #ifndef GL_MAP2_INDEX #define GL_MAP2_INDEX 0x0DB1 #endif #ifndef GL_MAP2_NORMAL #define GL_MAP2_NORMAL 0x0DB2 #endif #ifndef GL_MAP2_TANGENT_EXT #define GL_MAP2_TANGENT_EXT 0x8445 #endif #ifndef GL_MAP2_TEXTURE_COORD_1 #define GL_MAP2_TEXTURE_COORD_1 0x0DB3 #endif #ifndef GL_MAP2_TEXTURE_COORD_2 #define GL_MAP2_TEXTURE_COORD_2 0x0DB4 #endif #ifndef GL_MAP2_TEXTURE_COORD_3 #define GL_MAP2_TEXTURE_COORD_3 0x0DB5 #endif #ifndef GL_MAP2_TEXTURE_COORD_4 #define GL_MAP2_TEXTURE_COORD_4 0x0DB6 #endif #ifndef GL_MAP2_VERTEX_3 #define GL_MAP2_VERTEX_3 0x0DB7 #endif #ifndef GL_MAP2_VERTEX_4 #define GL_MAP2_VERTEX_4 0x0DB8 #endif #ifndef GL_MAP2_VERTEX_ATTRIB0_4_NV #define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 #endif #ifndef GL_MAP2_VERTEX_ATTRIB10_4_NV #define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A #endif #ifndef GL_MAP2_VERTEX_ATTRIB11_4_NV #define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B #endif #ifndef GL_MAP2_VERTEX_ATTRIB12_4_NV #define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C #endif #ifndef GL_MAP2_VERTEX_ATTRIB13_4_NV #define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D #endif #ifndef GL_MAP2_VERTEX_ATTRIB14_4_NV #define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E #endif #ifndef GL_MAP2_VERTEX_ATTRIB15_4_NV #define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F #endif #ifndef GL_MAP2_VERTEX_ATTRIB1_4_NV #define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 #endif #ifndef GL_MAP2_VERTEX_ATTRIB2_4_NV #define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 #endif #ifndef GL_MAP2_VERTEX_ATTRIB3_4_NV #define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 #endif #ifndef GL_MAP2_VERTEX_ATTRIB4_4_NV #define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 #endif #ifndef GL_MAP2_VERTEX_ATTRIB5_4_NV #define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 #endif #ifndef GL_MAP2_VERTEX_ATTRIB6_4_NV #define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 #endif #ifndef GL_MAP2_VERTEX_ATTRIB7_4_NV #define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 #endif #ifndef GL_MAP2_VERTEX_ATTRIB8_4_NV #define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 #endif #ifndef GL_MAP2_VERTEX_ATTRIB9_4_NV #define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 #endif #ifndef GL_MAP_ATTRIB_U_ORDER_NV #define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 #endif #ifndef GL_MAP_ATTRIB_V_ORDER_NV #define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 #endif #ifndef GL_MAP_COHERENT_BIT #define GL_MAP_COHERENT_BIT 0x0080 #endif #ifndef GL_MAP_COLOR #define GL_MAP_COLOR 0x0D10 #endif #ifndef GL_MAP_FLUSH_EXPLICIT_BIT #define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 #endif #ifndef GL_MAP_INVALIDATE_BUFFER_BIT #define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 #endif #ifndef GL_MAP_INVALIDATE_RANGE_BIT #define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 #endif #ifndef GL_MAP_PERSISTENT_BIT #define GL_MAP_PERSISTENT_BIT 0x0040 #endif #ifndef GL_MAP_READ_BIT #define GL_MAP_READ_BIT 0x0001 #endif #ifndef GL_MAP_STENCIL #define GL_MAP_STENCIL 0x0D11 #endif #ifndef GL_MAP_TESSELLATION_NV #define GL_MAP_TESSELLATION_NV 0x86C2 #endif #ifndef GL_MAP_UNSYNCHRONIZED_BIT #define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 #endif #ifndef GL_MAP_WRITE_BIT #define GL_MAP_WRITE_BIT 0x0002 #endif #ifndef GL_MATERIAL_SIDE_HINT_PGI #define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C #endif #ifndef GL_MATRIX0_ARB #define GL_MATRIX0_ARB 0x88C0 #endif #ifndef GL_MATRIX0_NV #define GL_MATRIX0_NV 0x8630 #endif #ifndef GL_MATRIX10_ARB #define GL_MATRIX10_ARB 0x88CA #endif #ifndef GL_MATRIX11_ARB #define GL_MATRIX11_ARB 0x88CB #endif #ifndef GL_MATRIX12_ARB #define GL_MATRIX12_ARB 0x88CC #endif #ifndef GL_MATRIX13_ARB #define GL_MATRIX13_ARB 0x88CD #endif #ifndef GL_MATRIX14_ARB #define GL_MATRIX14_ARB 0x88CE #endif #ifndef GL_MATRIX15_ARB #define GL_MATRIX15_ARB 0x88CF #endif #ifndef GL_MATRIX16_ARB #define GL_MATRIX16_ARB 0x88D0 #endif #ifndef GL_MATRIX17_ARB #define GL_MATRIX17_ARB 0x88D1 #endif #ifndef GL_MATRIX18_ARB #define GL_MATRIX18_ARB 0x88D2 #endif #ifndef GL_MATRIX19_ARB #define GL_MATRIX19_ARB 0x88D3 #endif #ifndef GL_MATRIX1_ARB #define GL_MATRIX1_ARB 0x88C1 #endif #ifndef GL_MATRIX1_NV #define GL_MATRIX1_NV 0x8631 #endif #ifndef GL_MATRIX20_ARB #define GL_MATRIX20_ARB 0x88D4 #endif #ifndef GL_MATRIX21_ARB #define GL_MATRIX21_ARB 0x88D5 #endif #ifndef GL_MATRIX22_ARB #define GL_MATRIX22_ARB 0x88D6 #endif #ifndef GL_MATRIX23_ARB #define GL_MATRIX23_ARB 0x88D7 #endif #ifndef GL_MATRIX24_ARB #define GL_MATRIX24_ARB 0x88D8 #endif #ifndef GL_MATRIX25_ARB #define GL_MATRIX25_ARB 0x88D9 #endif #ifndef GL_MATRIX26_ARB #define GL_MATRIX26_ARB 0x88DA #endif #ifndef GL_MATRIX27_ARB #define GL_MATRIX27_ARB 0x88DB #endif #ifndef GL_MATRIX28_ARB #define GL_MATRIX28_ARB 0x88DC #endif #ifndef GL_MATRIX29_ARB #define GL_MATRIX29_ARB 0x88DD #endif #ifndef GL_MATRIX2_ARB #define GL_MATRIX2_ARB 0x88C2 #endif #ifndef GL_MATRIX2_NV #define GL_MATRIX2_NV 0x8632 #endif #ifndef GL_MATRIX30_ARB #define GL_MATRIX30_ARB 0x88DE #endif #ifndef GL_MATRIX31_ARB #define GL_MATRIX31_ARB 0x88DF #endif #ifndef GL_MATRIX3_ARB #define GL_MATRIX3_ARB 0x88C3 #endif #ifndef GL_MATRIX3_NV #define GL_MATRIX3_NV 0x8633 #endif #ifndef GL_MATRIX4_ARB #define GL_MATRIX4_ARB 0x88C4 #endif #ifndef GL_MATRIX4_NV #define GL_MATRIX4_NV 0x8634 #endif #ifndef GL_MATRIX5_ARB #define GL_MATRIX5_ARB 0x88C5 #endif #ifndef GL_MATRIX5_NV #define GL_MATRIX5_NV 0x8635 #endif #ifndef GL_MATRIX6_ARB #define GL_MATRIX6_ARB 0x88C6 #endif #ifndef GL_MATRIX6_NV #define GL_MATRIX6_NV 0x8636 #endif #ifndef GL_MATRIX7_ARB #define GL_MATRIX7_ARB 0x88C7 #endif #ifndef GL_MATRIX7_NV #define GL_MATRIX7_NV 0x8637 #endif #ifndef GL_MATRIX8_ARB #define GL_MATRIX8_ARB 0x88C8 #endif #ifndef GL_MATRIX9_ARB #define GL_MATRIX9_ARB 0x88C9 #endif #ifndef GL_MATRIX_EXT #define GL_MATRIX_EXT 0x87C0 #endif #ifndef GL_MATRIX_INDEX_ARRAY_ARB #define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 #endif #ifndef GL_MATRIX_INDEX_ARRAY_POINTER_ARB #define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 #endif #ifndef GL_MATRIX_INDEX_ARRAY_SIZE_ARB #define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 #endif #ifndef GL_MATRIX_INDEX_ARRAY_STRIDE_ARB #define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 #endif #ifndef GL_MATRIX_INDEX_ARRAY_TYPE_ARB #define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 #endif #ifndef GL_MATRIX_MODE #define GL_MATRIX_MODE 0x0BA0 #endif #ifndef GL_MATRIX_PALETTE_ARB #define GL_MATRIX_PALETTE_ARB 0x8840 #endif #ifndef GL_MATRIX_STRIDE #define GL_MATRIX_STRIDE 0x92FF #endif #ifndef GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI #define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 #endif #ifndef GL_MAT_AMBIENT_BIT_PGI #define GL_MAT_AMBIENT_BIT_PGI 0x00100000 #endif #ifndef GL_MAT_COLOR_INDEXES_BIT_PGI #define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 #endif #ifndef GL_MAT_DIFFUSE_BIT_PGI #define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 #endif #ifndef GL_MAT_EMISSION_BIT_PGI #define GL_MAT_EMISSION_BIT_PGI 0x00800000 #endif #ifndef GL_MAT_SHININESS_BIT_PGI #define GL_MAT_SHININESS_BIT_PGI 0x02000000 #endif #ifndef GL_MAT_SPECULAR_BIT_PGI #define GL_MAT_SPECULAR_BIT_PGI 0x04000000 #endif #ifndef GL_MAX #define GL_MAX 0x8008 #endif #ifndef GL_MAX_3D_TEXTURE_SIZE #define GL_MAX_3D_TEXTURE_SIZE 0x8073 #endif #ifndef GL_MAX_3D_TEXTURE_SIZE_EXT #define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 #endif #ifndef GL_MAX_4D_TEXTURE_SIZE_SGIS #define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 #endif #ifndef GL_MAX_ACTIVE_LIGHTS_SGIX #define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 #endif #ifndef GL_MAX_ARRAY_TEXTURE_LAYERS #define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF #endif #ifndef GL_MAX_ARRAY_TEXTURE_LAYERS_EXT #define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF #endif #ifndef GL_MAX_ASYNC_DRAW_PIXELS_SGIX #define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 #endif #ifndef GL_MAX_ASYNC_HISTOGRAM_SGIX #define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D #endif #ifndef GL_MAX_ASYNC_READ_PIXELS_SGIX #define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 #endif #ifndef GL_MAX_ASYNC_TEX_IMAGE_SGIX #define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F #endif #ifndef GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS #define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC #endif #ifndef GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE #define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 #endif #ifndef GL_MAX_ATTRIB_STACK_DEPTH #define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 #endif #ifndef GL_MAX_BINDABLE_UNIFORM_SIZE_EXT #define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED #endif #ifndef GL_MAX_CLIENT_ATTRIB_STACK_DEPTH #define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B #endif #ifndef GL_MAX_CLIPMAP_DEPTH_SGIX #define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 #endif #ifndef GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX #define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 #endif #ifndef GL_MAX_CLIP_DISTANCES #define GL_MAX_CLIP_DISTANCES 0x0D32 #endif #ifndef GL_MAX_CLIP_PLANES #define GL_MAX_CLIP_PLANES 0x0D32 #endif #ifndef GL_MAX_COLOR_ATTACHMENTS #define GL_MAX_COLOR_ATTACHMENTS 0x8CDF #endif #ifndef GL_MAX_COLOR_ATTACHMENTS_EXT #define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF #endif #ifndef GL_MAX_COLOR_MATRIX_STACK_DEPTH #define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 #endif #ifndef GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI #define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 #endif #ifndef GL_MAX_COLOR_TEXTURE_SAMPLES #define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E #endif #ifndef GL_MAX_COMBINED_ATOMIC_COUNTERS #define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 #endif #ifndef GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS #define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 #endif #ifndef GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES #define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA #endif #ifndef GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS #define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 #endif #ifndef GL_MAX_COMBINED_DIMENSIONS #define GL_MAX_COMBINED_DIMENSIONS 0x8282 #endif #ifndef GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS #define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 #endif #ifndef GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS #define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 #endif #ifndef GL_MAX_COMBINED_IMAGE_UNIFORMS #define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF #endif #ifndef GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS #define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 #endif #ifndef GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT #define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 #endif #ifndef GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES #define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 #endif #ifndef GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS #define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC #endif #ifndef GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS #define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E #endif #ifndef GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS #define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F #endif #ifndef GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS #define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D #endif #ifndef GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB #define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D #endif #ifndef GL_MAX_COMBINED_UNIFORM_BLOCKS #define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E #endif #ifndef GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS #define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 #endif #ifndef GL_MAX_COMPUTE_ATOMIC_COUNTERS #define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 #endif #ifndef GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS #define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 #endif #ifndef GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB #define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB #endif #ifndef GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB #define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF #endif #ifndef GL_MAX_COMPUTE_IMAGE_UNIFORMS #define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD #endif #ifndef GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS #define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB #endif #ifndef GL_MAX_COMPUTE_SHARED_MEMORY_SIZE #define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 #endif #ifndef GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS #define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC #endif #ifndef GL_MAX_COMPUTE_UNIFORM_BLOCKS #define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB #endif #ifndef GL_MAX_COMPUTE_UNIFORM_COMPONENTS #define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 #endif #ifndef GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB #define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344 #endif #ifndef GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB #define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345 #endif #ifndef GL_MAX_COMPUTE_WORK_GROUP_COUNT #define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE #endif #ifndef GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS #define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB #endif #ifndef GL_MAX_COMPUTE_WORK_GROUP_SIZE #define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF #endif #ifndef GL_MAX_CONVOLUTION_HEIGHT #define GL_MAX_CONVOLUTION_HEIGHT 0x801B #endif #ifndef GL_MAX_CONVOLUTION_HEIGHT_EXT #define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B #endif #ifndef GL_MAX_CONVOLUTION_WIDTH #define GL_MAX_CONVOLUTION_WIDTH 0x801A #endif #ifndef GL_MAX_CONVOLUTION_WIDTH_EXT #define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A #endif #ifndef GL_MAX_CUBE_MAP_TEXTURE_SIZE #define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C #endif #ifndef GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB #define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C #endif #ifndef GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT #define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C #endif #ifndef GL_MAX_CULL_DISTANCES #define GL_MAX_CULL_DISTANCES 0x82F9 #endif #ifndef GL_MAX_DEBUG_GROUP_STACK_DEPTH #define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C #endif #ifndef GL_MAX_DEBUG_LOGGED_MESSAGES #define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 #endif #ifndef GL_MAX_DEBUG_LOGGED_MESSAGES_AMD #define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 #endif #ifndef GL_MAX_DEBUG_LOGGED_MESSAGES_ARB #define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 #endif #ifndef GL_MAX_DEBUG_MESSAGE_LENGTH #define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 #endif #ifndef GL_MAX_DEBUG_MESSAGE_LENGTH_AMD #define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 #endif #ifndef GL_MAX_DEBUG_MESSAGE_LENGTH_ARB #define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 #endif #ifndef GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV #define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1 #endif #ifndef GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV #define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0 #endif #ifndef GL_MAX_DEFORMATION_ORDER_SGIX #define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 #endif #ifndef GL_MAX_DEPTH #define GL_MAX_DEPTH 0x8280 #endif #ifndef GL_MAX_DEPTH_TEXTURE_SAMPLES #define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F #endif #ifndef GL_MAX_DRAW_BUFFERS #define GL_MAX_DRAW_BUFFERS 0x8824 #endif #ifndef GL_MAX_DRAW_BUFFERS_ARB #define GL_MAX_DRAW_BUFFERS_ARB 0x8824 #endif #ifndef GL_MAX_DRAW_BUFFERS_ATI #define GL_MAX_DRAW_BUFFERS_ATI 0x8824 #endif #ifndef GL_MAX_DUAL_SOURCE_DRAW_BUFFERS #define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC #endif #ifndef GL_MAX_ELEMENTS_INDICES #define GL_MAX_ELEMENTS_INDICES 0x80E9 #endif #ifndef GL_MAX_ELEMENTS_INDICES_EXT #define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 #endif #ifndef GL_MAX_ELEMENTS_VERTICES #define GL_MAX_ELEMENTS_VERTICES 0x80E8 #endif #ifndef GL_MAX_ELEMENTS_VERTICES_EXT #define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 #endif #ifndef GL_MAX_ELEMENT_INDEX #define GL_MAX_ELEMENT_INDEX 0x8D6B #endif #ifndef GL_MAX_EVAL_ORDER #define GL_MAX_EVAL_ORDER 0x0D30 #endif #ifndef GL_MAX_EXT #define GL_MAX_EXT 0x8008 #endif #ifndef GL_MAX_FOG_FUNC_POINTS_SGIS #define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C #endif #ifndef GL_MAX_FRAGMENT_ATOMIC_COUNTERS #define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 #endif #ifndef GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS #define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 #endif #ifndef GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT #define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 #endif #ifndef GL_MAX_FRAGMENT_IMAGE_UNIFORMS #define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE #endif #ifndef GL_MAX_FRAGMENT_INPUT_COMPONENTS #define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 #endif #ifndef GL_MAX_FRAGMENT_INTERPOLATION_OFFSET #define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C #endif #ifndef GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV #define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C #endif #ifndef GL_MAX_FRAGMENT_LIGHTS_SGIX #define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 #endif #ifndef GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV #define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 #endif #ifndef GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS #define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA #endif #ifndef GL_MAX_FRAGMENT_UNIFORM_BLOCKS #define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D #endif #ifndef GL_MAX_FRAGMENT_UNIFORM_COMPONENTS #define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 #endif #ifndef GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB #define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 #endif #ifndef GL_MAX_FRAGMENT_UNIFORM_VECTORS #define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD #endif #ifndef GL_MAX_FRAMEBUFFER_HEIGHT #define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 #endif #ifndef GL_MAX_FRAMEBUFFER_LAYERS #define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 #endif #ifndef GL_MAX_FRAMEBUFFER_SAMPLES #define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 #endif #ifndef GL_MAX_FRAMEBUFFER_WIDTH #define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 #endif #ifndef GL_MAX_FRAMEZOOM_FACTOR_SGIX #define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D #endif #ifndef GL_MAX_GENERAL_COMBINERS_NV #define GL_MAX_GENERAL_COMBINERS_NV 0x854D #endif #ifndef GL_MAX_GEOMETRY_ATOMIC_COUNTERS #define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 #endif #ifndef GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS #define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF #endif #ifndef GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT #define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 #endif #ifndef GL_MAX_GEOMETRY_IMAGE_UNIFORMS #define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD #endif #ifndef GL_MAX_GEOMETRY_INPUT_COMPONENTS #define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 #endif #ifndef GL_MAX_GEOMETRY_OUTPUT_COMPONENTS #define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 #endif #ifndef GL_MAX_GEOMETRY_OUTPUT_VERTICES #define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 #endif #ifndef GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB #define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 #endif #ifndef GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT #define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 #endif #ifndef GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV #define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A #endif #ifndef GL_MAX_GEOMETRY_SHADER_INVOCATIONS #define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A #endif #ifndef GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS #define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 #endif #ifndef GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 #endif #ifndef GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 #endif #ifndef GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 #endif #ifndef GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS #define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 #endif #ifndef GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB #define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 #endif #ifndef GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT #define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 #endif #ifndef GL_MAX_GEOMETRY_UNIFORM_BLOCKS #define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C #endif #ifndef GL_MAX_GEOMETRY_UNIFORM_COMPONENTS #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF #endif #ifndef GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF #endif #ifndef GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF #endif #ifndef GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB #define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD #endif #ifndef GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT #define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD #endif #ifndef GL_MAX_HEIGHT #define GL_MAX_HEIGHT 0x827F #endif #ifndef GL_MAX_IMAGE_SAMPLES #define GL_MAX_IMAGE_SAMPLES 0x906D #endif #ifndef GL_MAX_IMAGE_SAMPLES_EXT #define GL_MAX_IMAGE_SAMPLES_EXT 0x906D #endif #ifndef GL_MAX_IMAGE_UNITS #define GL_MAX_IMAGE_UNITS 0x8F38 #endif #ifndef GL_MAX_IMAGE_UNITS_EXT #define GL_MAX_IMAGE_UNITS_EXT 0x8F38 #endif #ifndef GL_MAX_INTEGER_SAMPLES #define GL_MAX_INTEGER_SAMPLES 0x9110 #endif #ifndef GL_MAX_LABEL_LENGTH #define GL_MAX_LABEL_LENGTH 0x82E8 #endif #ifndef GL_MAX_LAYERS #define GL_MAX_LAYERS 0x8281 #endif #ifndef GL_MAX_LIGHTS #define GL_MAX_LIGHTS 0x0D31 #endif #ifndef GL_MAX_LIST_NESTING #define GL_MAX_LIST_NESTING 0x0B31 #endif #ifndef GL_MAX_MAP_TESSELLATION_NV #define GL_MAX_MAP_TESSELLATION_NV 0x86D6 #endif #ifndef GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB #define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 #endif #ifndef GL_MAX_MODELVIEW_STACK_DEPTH #define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 #endif #ifndef GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV #define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 #endif #ifndef GL_MAX_NAME_LENGTH #define GL_MAX_NAME_LENGTH 0x92F6 #endif #ifndef GL_MAX_NAME_STACK_DEPTH #define GL_MAX_NAME_STACK_DEPTH 0x0D37 #endif #ifndef GL_MAX_NUM_ACTIVE_VARIABLES #define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 #endif #ifndef GL_MAX_NUM_COMPATIBLE_SUBROUTINES #define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 #endif #ifndef GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT #define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA #endif #ifndef GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT #define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD #endif #ifndef GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT #define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE #endif #ifndef GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT #define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC #endif #ifndef GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT #define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB #endif #ifndef GL_MAX_PALETTE_MATRICES_ARB #define GL_MAX_PALETTE_MATRICES_ARB 0x8842 #endif #ifndef GL_MAX_PATCH_VERTICES #define GL_MAX_PATCH_VERTICES 0x8E7D #endif #ifndef GL_MAX_PIXEL_MAP_TABLE #define GL_MAX_PIXEL_MAP_TABLE 0x0D34 #endif #ifndef GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT #define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 #endif #ifndef GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI #define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 #endif #ifndef GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB #define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 #endif #ifndef GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB #define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B #endif #ifndef GL_MAX_PROGRAM_ATTRIBS_ARB #define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD #endif #ifndef GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV #define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 #endif #ifndef GL_MAX_PROGRAM_CALL_DEPTH_NV #define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 #endif #ifndef GL_MAX_PROGRAM_ENV_PARAMETERS_ARB #define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 #endif #ifndef GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV #define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 #endif #ifndef GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV #define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 #endif #ifndef GL_MAX_PROGRAM_GENERIC_RESULTS_NV #define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 #endif #ifndef GL_MAX_PROGRAM_IF_DEPTH_NV #define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 #endif #ifndef GL_MAX_PROGRAM_INSTRUCTIONS_ARB #define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 #endif #ifndef GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB #define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 #endif #ifndef GL_MAX_PROGRAM_LOOP_COUNT_NV #define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 #endif #ifndef GL_MAX_PROGRAM_LOOP_DEPTH_NV #define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 #endif #ifndef GL_MAX_PROGRAM_MATRICES_ARB #define GL_MAX_PROGRAM_MATRICES_ARB 0x862F #endif #ifndef GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB #define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E #endif #ifndef GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB #define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 #endif #ifndef GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB #define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E #endif #ifndef GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB #define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF #endif #ifndef GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB #define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 #endif #ifndef GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB #define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB #endif #ifndef GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB #define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 #endif #ifndef GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB #define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 #endif #ifndef GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB #define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F #endif #ifndef GL_MAX_PROGRAM_OUTPUT_VERTICES_NV #define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 #endif #ifndef GL_MAX_PROGRAM_PARAMETERS_ARB #define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 #endif #ifndef GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV #define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 #endif #ifndef GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV #define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 #endif #ifndef GL_MAX_PROGRAM_PATCH_ATTRIBS_NV #define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 #endif #ifndef GL_MAX_PROGRAM_RESULT_COMPONENTS_NV #define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 #endif #ifndef GL_MAX_PROGRAM_SUBROUTINE_NUM_NV #define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45 #endif #ifndef GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV #define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44 #endif #ifndef GL_MAX_PROGRAM_TEMPORARIES_ARB #define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 #endif #ifndef GL_MAX_PROGRAM_TEXEL_OFFSET #define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 #endif #ifndef GL_MAX_PROGRAM_TEXEL_OFFSET_EXT #define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905 #endif #ifndef GL_MAX_PROGRAM_TEXEL_OFFSET_NV #define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 #endif #ifndef GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB #define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F #endif #ifndef GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET #define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F #endif #ifndef GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB #define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F #endif #ifndef GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV #define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F #endif #ifndef GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB #define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D #endif #ifndef GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB #define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C #endif #ifndef GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV #define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 #endif #ifndef GL_MAX_PROJECTION_STACK_DEPTH #define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 #endif #ifndef GL_MAX_RASTER_SAMPLES_EXT #define GL_MAX_RASTER_SAMPLES_EXT 0x9329 #endif #ifndef GL_MAX_RATIONAL_EVAL_ORDER_NV #define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 #endif #ifndef GL_MAX_RECTANGLE_TEXTURE_SIZE #define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 #endif #ifndef GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB #define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 #endif #ifndef GL_MAX_RECTANGLE_TEXTURE_SIZE_NV #define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 #endif #ifndef GL_MAX_RENDERBUFFER_SIZE #define GL_MAX_RENDERBUFFER_SIZE 0x84E8 #endif #ifndef GL_MAX_RENDERBUFFER_SIZE_EXT #define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 #endif #ifndef GL_MAX_SAMPLES #define GL_MAX_SAMPLES 0x8D57 #endif #ifndef GL_MAX_SAMPLES_EXT #define GL_MAX_SAMPLES_EXT 0x8D57 #endif #ifndef GL_MAX_SAMPLE_MASK_WORDS #define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 #endif #ifndef GL_MAX_SAMPLE_MASK_WORDS_NV #define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 #endif #ifndef GL_MAX_SERVER_WAIT_TIMEOUT #define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 #endif #ifndef GL_MAX_SHADER_BUFFER_ADDRESS_NV #define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 #endif #ifndef GL_MAX_SHADER_STORAGE_BLOCK_SIZE #define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE #endif #ifndef GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS #define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD #endif #ifndef GL_MAX_SHININESS_NV #define GL_MAX_SHININESS_NV 0x8504 #endif #ifndef GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD #define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199 #endif #ifndef GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB #define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199 #endif #ifndef GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS #define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A #endif #ifndef GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB #define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A #endif #ifndef GL_MAX_SPARSE_TEXTURE_SIZE_AMD #define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198 #endif #ifndef GL_MAX_SPARSE_TEXTURE_SIZE_ARB #define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198 #endif #ifndef GL_MAX_SPOT_EXPONENT_NV #define GL_MAX_SPOT_EXPONENT_NV 0x8505 #endif #ifndef GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV #define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349 #endif #ifndef GL_MAX_SUBROUTINES #define GL_MAX_SUBROUTINES 0x8DE7 #endif #ifndef GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS #define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 #endif #ifndef GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS #define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3 #endif #ifndef GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS #define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD #endif #ifndef GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS #define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB #endif #ifndef GL_MAX_TESS_CONTROL_INPUT_COMPONENTS #define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C #endif #ifndef GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS #define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 #endif #ifndef GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS #define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 #endif #ifndef GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS #define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 #endif #ifndef GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS #define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 #endif #ifndef GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS #define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 #endif #ifndef GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS #define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F #endif #ifndef GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS #define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4 #endif #ifndef GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS #define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE #endif #ifndef GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS #define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC #endif #ifndef GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS #define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D #endif #ifndef GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS #define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 #endif #ifndef GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS #define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 #endif #ifndef GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS #define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 #endif #ifndef GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS #define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A #endif #ifndef GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS #define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 #endif #ifndef GL_MAX_TESS_GEN_LEVEL #define GL_MAX_TESS_GEN_LEVEL 0x8E7E #endif #ifndef GL_MAX_TESS_PATCH_COMPONENTS #define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 #endif #ifndef GL_MAX_TEXTURE_BUFFER_SIZE #define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B #endif #ifndef GL_MAX_TEXTURE_BUFFER_SIZE_ARB #define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B #endif #ifndef GL_MAX_TEXTURE_BUFFER_SIZE_EXT #define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B #endif #ifndef GL_MAX_TEXTURE_COORDS #define GL_MAX_TEXTURE_COORDS 0x8871 #endif #ifndef GL_MAX_TEXTURE_COORDS_ARB #define GL_MAX_TEXTURE_COORDS_ARB 0x8871 #endif #ifndef GL_MAX_TEXTURE_COORDS_NV #define GL_MAX_TEXTURE_COORDS_NV 0x8871 #endif #ifndef GL_MAX_TEXTURE_IMAGE_UNITS #define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 #endif #ifndef GL_MAX_TEXTURE_IMAGE_UNITS_ARB #define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 #endif #ifndef GL_MAX_TEXTURE_IMAGE_UNITS_NV #define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 #endif #ifndef GL_MAX_TEXTURE_LOD_BIAS #define GL_MAX_TEXTURE_LOD_BIAS 0x84FD #endif #ifndef GL_MAX_TEXTURE_LOD_BIAS_EXT #define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD #endif #ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF #endif #ifndef GL_MAX_TEXTURE_SIZE #define GL_MAX_TEXTURE_SIZE 0x0D33 #endif #ifndef GL_MAX_TEXTURE_STACK_DEPTH #define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 #endif #ifndef GL_MAX_TEXTURE_UNITS #define GL_MAX_TEXTURE_UNITS 0x84E2 #endif #ifndef GL_MAX_TEXTURE_UNITS_ARB #define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 #endif #ifndef GL_MAX_TRACK_MATRICES_NV #define GL_MAX_TRACK_MATRICES_NV 0x862F #endif #ifndef GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV #define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E #endif #ifndef GL_MAX_TRANSFORM_FEEDBACK_BUFFERS #define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 #endif #ifndef GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS #define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A #endif #ifndef GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT #define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A #endif #ifndef GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV #define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A #endif #ifndef GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B #endif #ifndef GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B #endif #ifndef GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B #endif #ifndef GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 #endif #ifndef GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 #endif #ifndef GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 #endif #ifndef GL_MAX_UNIFORM_BLOCK_SIZE #define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 #endif #ifndef GL_MAX_UNIFORM_BUFFER_BINDINGS #define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F #endif #ifndef GL_MAX_UNIFORM_LOCATIONS #define GL_MAX_UNIFORM_LOCATIONS 0x826E #endif #ifndef GL_MAX_VARYING_COMPONENTS #define GL_MAX_VARYING_COMPONENTS 0x8B4B #endif #ifndef GL_MAX_VARYING_COMPONENTS_EXT #define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B #endif #ifndef GL_MAX_VARYING_FLOATS #define GL_MAX_VARYING_FLOATS 0x8B4B #endif #ifndef GL_MAX_VARYING_FLOATS_ARB #define GL_MAX_VARYING_FLOATS_ARB 0x8B4B #endif #ifndef GL_MAX_VARYING_VECTORS #define GL_MAX_VARYING_VECTORS 0x8DFC #endif #ifndef GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV #define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 #endif #ifndef GL_MAX_VERTEX_ATOMIC_COUNTERS #define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 #endif #ifndef GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS #define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC #endif #ifndef GL_MAX_VERTEX_ATTRIBS #define GL_MAX_VERTEX_ATTRIBS 0x8869 #endif #ifndef GL_MAX_VERTEX_ATTRIBS_ARB #define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 #endif #ifndef GL_MAX_VERTEX_ATTRIB_BINDINGS #define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA #endif #ifndef GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET #define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 #endif #ifndef GL_MAX_VERTEX_ATTRIB_STRIDE #define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 #endif #ifndef GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT #define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 #endif #ifndef GL_MAX_VERTEX_HINT_PGI #define GL_MAX_VERTEX_HINT_PGI 0x1A22D #endif #ifndef GL_MAX_VERTEX_IMAGE_UNIFORMS #define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA #endif #ifndef GL_MAX_VERTEX_OUTPUT_COMPONENTS #define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 #endif #ifndef GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT #define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 #endif #ifndef GL_MAX_VERTEX_SHADER_INVARIANTS_EXT #define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 #endif #ifndef GL_MAX_VERTEX_SHADER_LOCALS_EXT #define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 #endif #ifndef GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT #define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 #endif #ifndef GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS #define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 #endif #ifndef GL_MAX_VERTEX_SHADER_VARIANTS_EXT #define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 #endif #ifndef GL_MAX_VERTEX_STREAMS #define GL_MAX_VERTEX_STREAMS 0x8E71 #endif #ifndef GL_MAX_VERTEX_STREAMS_ATI #define GL_MAX_VERTEX_STREAMS_ATI 0x876B #endif #ifndef GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS #define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C #endif #ifndef GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB #define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C #endif #ifndef GL_MAX_VERTEX_UNIFORM_BLOCKS #define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B #endif #ifndef GL_MAX_VERTEX_UNIFORM_COMPONENTS #define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A #endif #ifndef GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB #define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A #endif #ifndef GL_MAX_VERTEX_UNIFORM_VECTORS #define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB #endif #ifndef GL_MAX_VERTEX_UNITS_ARB #define GL_MAX_VERTEX_UNITS_ARB 0x86A4 #endif #ifndef GL_MAX_VERTEX_VARYING_COMPONENTS_ARB #define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE #endif #ifndef GL_MAX_VERTEX_VARYING_COMPONENTS_EXT #define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE #endif #ifndef GL_MAX_VIEWPORTS #define GL_MAX_VIEWPORTS 0x825B #endif #ifndef GL_MAX_VIEWPORT_DIMS #define GL_MAX_VIEWPORT_DIMS 0x0D3A #endif #ifndef GL_MAX_VIEWS_OVR #define GL_MAX_VIEWS_OVR 0x9631 #endif #ifndef GL_MAX_WIDTH #define GL_MAX_WIDTH 0x827E #endif #ifndef GL_MEDIUM_FLOAT #define GL_MEDIUM_FLOAT 0x8DF1 #endif #ifndef GL_MEDIUM_INT #define GL_MEDIUM_INT 0x8DF4 #endif #ifndef GL_MIN #define GL_MIN 0x8007 #endif #ifndef GL_MINMAX #define GL_MINMAX 0x802E #endif #ifndef GL_MINMAX_EXT #define GL_MINMAX_EXT 0x802E #endif #ifndef GL_MINMAX_FORMAT #define GL_MINMAX_FORMAT 0x802F #endif #ifndef GL_MINMAX_FORMAT_EXT #define GL_MINMAX_FORMAT_EXT 0x802F #endif #ifndef GL_MINMAX_SINK #define GL_MINMAX_SINK 0x8030 #endif #ifndef GL_MINMAX_SINK_EXT #define GL_MINMAX_SINK_EXT 0x8030 #endif #ifndef GL_MINOR_VERSION #define GL_MINOR_VERSION 0x821C #endif #ifndef GL_MINUS_CLAMPED_NV #define GL_MINUS_CLAMPED_NV 0x92B3 #endif #ifndef GL_MINUS_NV #define GL_MINUS_NV 0x929F #endif #ifndef GL_MIN_EXT #define GL_MIN_EXT 0x8007 #endif #ifndef GL_MIN_FRAGMENT_INTERPOLATION_OFFSET #define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B #endif #ifndef GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV #define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B #endif #ifndef GL_MIN_LOD_WARNING_AMD #define GL_MIN_LOD_WARNING_AMD 0x919C #endif #ifndef GL_MIN_MAP_BUFFER_ALIGNMENT #define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC #endif #ifndef GL_MIN_PROGRAM_TEXEL_OFFSET #define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 #endif #ifndef GL_MIN_PROGRAM_TEXEL_OFFSET_EXT #define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904 #endif #ifndef GL_MIN_PROGRAM_TEXEL_OFFSET_NV #define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 #endif #ifndef GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET #define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E #endif #ifndef GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB #define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E #endif #ifndef GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV #define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E #endif #ifndef GL_MIN_SAMPLE_SHADING_VALUE #define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 #endif #ifndef GL_MIN_SAMPLE_SHADING_VALUE_ARB #define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 #endif #ifndef GL_MIN_SPARSE_LEVEL_AMD #define GL_MIN_SPARSE_LEVEL_AMD 0x919B #endif #ifndef GL_MIN_SPARSE_LEVEL_ARB #define GL_MIN_SPARSE_LEVEL_ARB 0x919B #endif #ifndef GL_MIPMAP #define GL_MIPMAP 0x8293 #endif #ifndef GL_MIRRORED_REPEAT #define GL_MIRRORED_REPEAT 0x8370 #endif #ifndef GL_MIRRORED_REPEAT_ARB #define GL_MIRRORED_REPEAT_ARB 0x8370 #endif #ifndef GL_MIRRORED_REPEAT_IBM #define GL_MIRRORED_REPEAT_IBM 0x8370 #endif #ifndef GL_MIRROR_CLAMP_ATI #define GL_MIRROR_CLAMP_ATI 0x8742 #endif #ifndef GL_MIRROR_CLAMP_EXT #define GL_MIRROR_CLAMP_EXT 0x8742 #endif #ifndef GL_MIRROR_CLAMP_TO_BORDER_EXT #define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 #endif #ifndef GL_MIRROR_CLAMP_TO_EDGE #define GL_MIRROR_CLAMP_TO_EDGE 0x8743 #endif #ifndef GL_MIRROR_CLAMP_TO_EDGE_ATI #define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 #endif #ifndef GL_MIRROR_CLAMP_TO_EDGE_EXT #define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 #endif #ifndef GL_MITER_REVERT_NV #define GL_MITER_REVERT_NV 0x90A7 #endif #ifndef GL_MITER_TRUNCATE_NV #define GL_MITER_TRUNCATE_NV 0x90A8 #endif #ifndef GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV #define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F #endif #ifndef GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV #define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330 #endif #ifndef GL_MODELVIEW #define GL_MODELVIEW 0x1700 #endif #ifndef GL_MODELVIEW0_ARB #define GL_MODELVIEW0_ARB 0x1700 #endif #ifndef GL_MODELVIEW0_EXT #define GL_MODELVIEW0_EXT 0x1700 #endif #ifndef GL_MODELVIEW0_MATRIX_EXT #define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 #endif #ifndef GL_MODELVIEW0_STACK_DEPTH_EXT #define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 #endif #ifndef GL_MODELVIEW10_ARB #define GL_MODELVIEW10_ARB 0x872A #endif #ifndef GL_MODELVIEW11_ARB #define GL_MODELVIEW11_ARB 0x872B #endif #ifndef GL_MODELVIEW12_ARB #define GL_MODELVIEW12_ARB 0x872C #endif #ifndef GL_MODELVIEW13_ARB #define GL_MODELVIEW13_ARB 0x872D #endif #ifndef GL_MODELVIEW14_ARB #define GL_MODELVIEW14_ARB 0x872E #endif #ifndef GL_MODELVIEW15_ARB #define GL_MODELVIEW15_ARB 0x872F #endif #ifndef GL_MODELVIEW16_ARB #define GL_MODELVIEW16_ARB 0x8730 #endif #ifndef GL_MODELVIEW17_ARB #define GL_MODELVIEW17_ARB 0x8731 #endif #ifndef GL_MODELVIEW18_ARB #define GL_MODELVIEW18_ARB 0x8732 #endif #ifndef GL_MODELVIEW19_ARB #define GL_MODELVIEW19_ARB 0x8733 #endif #ifndef GL_MODELVIEW1_ARB #define GL_MODELVIEW1_ARB 0x850A #endif #ifndef GL_MODELVIEW1_EXT #define GL_MODELVIEW1_EXT 0x850A #endif #ifndef GL_MODELVIEW1_MATRIX_EXT #define GL_MODELVIEW1_MATRIX_EXT 0x8506 #endif #ifndef GL_MODELVIEW1_STACK_DEPTH_EXT #define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 #endif #ifndef GL_MODELVIEW20_ARB #define GL_MODELVIEW20_ARB 0x8734 #endif #ifndef GL_MODELVIEW21_ARB #define GL_MODELVIEW21_ARB 0x8735 #endif #ifndef GL_MODELVIEW22_ARB #define GL_MODELVIEW22_ARB 0x8736 #endif #ifndef GL_MODELVIEW23_ARB #define GL_MODELVIEW23_ARB 0x8737 #endif #ifndef GL_MODELVIEW24_ARB #define GL_MODELVIEW24_ARB 0x8738 #endif #ifndef GL_MODELVIEW25_ARB #define GL_MODELVIEW25_ARB 0x8739 #endif #ifndef GL_MODELVIEW26_ARB #define GL_MODELVIEW26_ARB 0x873A #endif #ifndef GL_MODELVIEW27_ARB #define GL_MODELVIEW27_ARB 0x873B #endif #ifndef GL_MODELVIEW28_ARB #define GL_MODELVIEW28_ARB 0x873C #endif #ifndef GL_MODELVIEW29_ARB #define GL_MODELVIEW29_ARB 0x873D #endif #ifndef GL_MODELVIEW2_ARB #define GL_MODELVIEW2_ARB 0x8722 #endif #ifndef GL_MODELVIEW30_ARB #define GL_MODELVIEW30_ARB 0x873E #endif #ifndef GL_MODELVIEW31_ARB #define GL_MODELVIEW31_ARB 0x873F #endif #ifndef GL_MODELVIEW3_ARB #define GL_MODELVIEW3_ARB 0x8723 #endif #ifndef GL_MODELVIEW4_ARB #define GL_MODELVIEW4_ARB 0x8724 #endif #ifndef GL_MODELVIEW5_ARB #define GL_MODELVIEW5_ARB 0x8725 #endif #ifndef GL_MODELVIEW6_ARB #define GL_MODELVIEW6_ARB 0x8726 #endif #ifndef GL_MODELVIEW7_ARB #define GL_MODELVIEW7_ARB 0x8727 #endif #ifndef GL_MODELVIEW8_ARB #define GL_MODELVIEW8_ARB 0x8728 #endif #ifndef GL_MODELVIEW9_ARB #define GL_MODELVIEW9_ARB 0x8729 #endif #ifndef GL_MODELVIEW_MATRIX #define GL_MODELVIEW_MATRIX 0x0BA6 #endif #ifndef GL_MODELVIEW_PROJECTION_NV #define GL_MODELVIEW_PROJECTION_NV 0x8629 #endif #ifndef GL_MODELVIEW_STACK_DEPTH #define GL_MODELVIEW_STACK_DEPTH 0x0BA3 #endif #ifndef GL_MODULATE #define GL_MODULATE 0x2100 #endif #ifndef GL_MODULATE_ADD_ATI #define GL_MODULATE_ADD_ATI 0x8744 #endif #ifndef GL_MODULATE_SIGNED_ADD_ATI #define GL_MODULATE_SIGNED_ADD_ATI 0x8745 #endif #ifndef GL_MODULATE_SUBTRACT_ATI #define GL_MODULATE_SUBTRACT_ATI 0x8746 #endif #ifndef GL_MOVE_TO_CONTINUES_NV #define GL_MOVE_TO_CONTINUES_NV 0x90B6 #endif #ifndef GL_MOVE_TO_NV #define GL_MOVE_TO_NV 0x02 #endif #ifndef GL_MOVE_TO_RESETS_NV #define GL_MOVE_TO_RESETS_NV 0x90B5 #endif #ifndef GL_MOV_ATI #define GL_MOV_ATI 0x8961 #endif #ifndef GL_MULT #define GL_MULT 0x0103 #endif #ifndef GL_MULTIPLY_KHR #define GL_MULTIPLY_KHR 0x9294 #endif #ifndef GL_MULTIPLY_NV #define GL_MULTIPLY_NV 0x9294 #endif #ifndef GL_MULTISAMPLE #define GL_MULTISAMPLE 0x809D #endif #ifndef GL_MULTISAMPLES_NV #define GL_MULTISAMPLES_NV 0x9371 #endif #ifndef GL_MULTISAMPLE_3DFX #define GL_MULTISAMPLE_3DFX 0x86B2 #endif #ifndef GL_MULTISAMPLE_ARB #define GL_MULTISAMPLE_ARB 0x809D #endif #ifndef GL_MULTISAMPLE_BIT #define GL_MULTISAMPLE_BIT 0x20000000 #endif #ifndef GL_MULTISAMPLE_BIT_3DFX #define GL_MULTISAMPLE_BIT_3DFX 0x20000000 #endif #ifndef GL_MULTISAMPLE_BIT_ARB #define GL_MULTISAMPLE_BIT_ARB 0x20000000 #endif #ifndef GL_MULTISAMPLE_BIT_EXT #define GL_MULTISAMPLE_BIT_EXT 0x20000000 #endif #ifndef GL_MULTISAMPLE_COVERAGE_MODES_NV #define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 #endif #ifndef GL_MULTISAMPLE_EXT #define GL_MULTISAMPLE_EXT 0x809D #endif #ifndef GL_MULTISAMPLE_FILTER_HINT_NV #define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 #endif #ifndef GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT #define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B #endif #ifndef GL_MULTISAMPLE_SGIS #define GL_MULTISAMPLE_SGIS 0x809D #endif #ifndef GL_MULTI_HULLS_NV #define GL_MULTI_HULLS_NV 0x908C #endif #ifndef GL_MUL_ATI #define GL_MUL_ATI 0x8964 #endif #ifndef GL_MVP_MATRIX_EXT #define GL_MVP_MATRIX_EXT 0x87E3 #endif #ifndef GL_N3F_V3F #define GL_N3F_V3F 0x2A25 #endif #ifndef GL_NAMED_STRING_LENGTH_ARB #define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 #endif #ifndef GL_NAMED_STRING_TYPE_ARB #define GL_NAMED_STRING_TYPE_ARB 0x8DEA #endif #ifndef GL_NAME_LENGTH #define GL_NAME_LENGTH 0x92F9 #endif #ifndef GL_NAME_STACK_DEPTH #define GL_NAME_STACK_DEPTH 0x0D70 #endif #ifndef GL_NAND #define GL_NAND 0x150E #endif #ifndef GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI #define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 #endif #ifndef GL_NATIVE_GRAPHICS_END_HINT_PGI #define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 #endif #ifndef GL_NATIVE_GRAPHICS_HANDLE_PGI #define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 #endif #ifndef GL_NEAREST #define GL_NEAREST 0x2600 #endif #ifndef GL_NEAREST_CLIPMAP_LINEAR_SGIX #define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E #endif #ifndef GL_NEAREST_CLIPMAP_NEAREST_SGIX #define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D #endif #ifndef GL_NEAREST_MIPMAP_LINEAR #define GL_NEAREST_MIPMAP_LINEAR 0x2702 #endif #ifndef GL_NEAREST_MIPMAP_NEAREST #define GL_NEAREST_MIPMAP_NEAREST 0x2700 #endif #ifndef GL_NEGATE_BIT_ATI #define GL_NEGATE_BIT_ATI 0x00000004 #endif #ifndef GL_NEGATIVE_ONE_EXT #define GL_NEGATIVE_ONE_EXT 0x87DF #endif #ifndef GL_NEGATIVE_ONE_TO_ONE #define GL_NEGATIVE_ONE_TO_ONE 0x935E #endif #ifndef GL_NEGATIVE_W_EXT #define GL_NEGATIVE_W_EXT 0x87DC #endif #ifndef GL_NEGATIVE_X_EXT #define GL_NEGATIVE_X_EXT 0x87D9 #endif #ifndef GL_NEGATIVE_Y_EXT #define GL_NEGATIVE_Y_EXT 0x87DA #endif #ifndef GL_NEGATIVE_Z_EXT #define GL_NEGATIVE_Z_EXT 0x87DB #endif #ifndef GL_NEVER #define GL_NEVER 0x0200 #endif #ifndef GL_NEXT_BUFFER_NV #define GL_NEXT_BUFFER_NV -2 #endif #ifndef GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV #define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025 #endif #ifndef GL_NICEST #define GL_NICEST 0x1102 #endif #ifndef GL_NONE #define GL_NONE 0 #endif #ifndef GL_NOOP #define GL_NOOP 0x1505 #endif #ifndef GL_NOP_COMMAND_NV #define GL_NOP_COMMAND_NV 0x0001 #endif #ifndef GL_NOR #define GL_NOR 0x1508 #endif #ifndef GL_NORMALIZE #define GL_NORMALIZE 0x0BA1 #endif #ifndef GL_NORMALIZED_RANGE_EXT #define GL_NORMALIZED_RANGE_EXT 0x87E0 #endif #ifndef GL_NORMAL_ARRAY #define GL_NORMAL_ARRAY 0x8075 #endif #ifndef GL_NORMAL_ARRAY_ADDRESS_NV #define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 #endif #ifndef GL_NORMAL_ARRAY_BUFFER_BINDING #define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 #endif #ifndef GL_NORMAL_ARRAY_BUFFER_BINDING_ARB #define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 #endif #ifndef GL_NORMAL_ARRAY_COUNT_EXT #define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 #endif #ifndef GL_NORMAL_ARRAY_EXT #define GL_NORMAL_ARRAY_EXT 0x8075 #endif #ifndef GL_NORMAL_ARRAY_LENGTH_NV #define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C #endif #ifndef GL_NORMAL_ARRAY_LIST_IBM #define GL_NORMAL_ARRAY_LIST_IBM 103071 #endif #ifndef GL_NORMAL_ARRAY_LIST_STRIDE_IBM #define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 #endif #ifndef GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL #define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 #endif #ifndef GL_NORMAL_ARRAY_POINTER #define GL_NORMAL_ARRAY_POINTER 0x808F #endif #ifndef GL_NORMAL_ARRAY_POINTER_EXT #define GL_NORMAL_ARRAY_POINTER_EXT 0x808F #endif #ifndef GL_NORMAL_ARRAY_STRIDE #define GL_NORMAL_ARRAY_STRIDE 0x807F #endif #ifndef GL_NORMAL_ARRAY_STRIDE_EXT #define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F #endif #ifndef GL_NORMAL_ARRAY_TYPE #define GL_NORMAL_ARRAY_TYPE 0x807E #endif #ifndef GL_NORMAL_ARRAY_TYPE_EXT #define GL_NORMAL_ARRAY_TYPE_EXT 0x807E #endif #ifndef GL_NORMAL_BIT_PGI #define GL_NORMAL_BIT_PGI 0x08000000 #endif #ifndef GL_NORMAL_MAP #define GL_NORMAL_MAP 0x8511 #endif #ifndef GL_NORMAL_MAP_ARB #define GL_NORMAL_MAP_ARB 0x8511 #endif #ifndef GL_NORMAL_MAP_EXT #define GL_NORMAL_MAP_EXT 0x8511 #endif #ifndef GL_NORMAL_MAP_NV #define GL_NORMAL_MAP_NV 0x8511 #endif #ifndef GL_NOTEQUAL #define GL_NOTEQUAL 0x0205 #endif #ifndef GL_NO_ERROR #define GL_NO_ERROR 0 #endif #ifndef GL_NO_RESET_NOTIFICATION #define GL_NO_RESET_NOTIFICATION 0x8261 #endif #ifndef GL_NO_RESET_NOTIFICATION_ARB #define GL_NO_RESET_NOTIFICATION_ARB 0x8261 #endif #ifndef GL_NUM_ACTIVE_VARIABLES #define GL_NUM_ACTIVE_VARIABLES 0x9304 #endif #ifndef GL_NUM_COMPATIBLE_SUBROUTINES #define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A #endif #ifndef GL_NUM_COMPRESSED_TEXTURE_FORMATS #define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 #endif #ifndef GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB #define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 #endif #ifndef GL_NUM_EXTENSIONS #define GL_NUM_EXTENSIONS 0x821D #endif #ifndef GL_NUM_FILL_STREAMS_NV #define GL_NUM_FILL_STREAMS_NV 0x8E29 #endif #ifndef GL_NUM_FRAGMENT_CONSTANTS_ATI #define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F #endif #ifndef GL_NUM_FRAGMENT_REGISTERS_ATI #define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E #endif #ifndef GL_NUM_GENERAL_COMBINERS_NV #define GL_NUM_GENERAL_COMBINERS_NV 0x854E #endif #ifndef GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI #define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 #endif #ifndef GL_NUM_INSTRUCTIONS_PER_PASS_ATI #define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 #endif #ifndef GL_NUM_INSTRUCTIONS_TOTAL_ATI #define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 #endif #ifndef GL_NUM_LOOPBACK_COMPONENTS_ATI #define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 #endif #ifndef GL_NUM_PASSES_ATI #define GL_NUM_PASSES_ATI 0x8970 #endif #ifndef GL_NUM_PROGRAM_BINARY_FORMATS #define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE #endif #ifndef GL_NUM_SAMPLE_COUNTS #define GL_NUM_SAMPLE_COUNTS 0x9380 #endif #ifndef GL_NUM_SHADER_BINARY_FORMATS #define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 #endif #ifndef GL_NUM_SHADING_LANGUAGE_VERSIONS #define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 #endif #ifndef GL_NUM_SPARSE_LEVELS_ARB #define GL_NUM_SPARSE_LEVELS_ARB 0x91AA #endif #ifndef GL_NUM_VIDEO_CAPTURE_STREAMS_NV #define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024 #endif #ifndef GL_NUM_VIRTUAL_PAGE_SIZES_ARB #define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8 #endif #ifndef GL_OBJECT_ACTIVE_ATTRIBUTES_ARB #define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 #endif #ifndef GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB #define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A #endif #ifndef GL_OBJECT_ACTIVE_UNIFORMS_ARB #define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 #endif #ifndef GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB #define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 #endif #ifndef GL_OBJECT_ATTACHED_OBJECTS_ARB #define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 #endif #ifndef GL_OBJECT_BUFFER_SIZE_ATI #define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 #endif #ifndef GL_OBJECT_BUFFER_USAGE_ATI #define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 #endif #ifndef GL_OBJECT_COMPILE_STATUS_ARB #define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 #endif #ifndef GL_OBJECT_DELETE_STATUS_ARB #define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 #endif #ifndef GL_OBJECT_DISTANCE_TO_LINE_SGIS #define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 #endif #ifndef GL_OBJECT_DISTANCE_TO_POINT_SGIS #define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 #endif #ifndef GL_OBJECT_INFO_LOG_LENGTH_ARB #define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 #endif #ifndef GL_OBJECT_LINEAR #define GL_OBJECT_LINEAR 0x2401 #endif #ifndef GL_OBJECT_LINEAR_NV #define GL_OBJECT_LINEAR_NV 0x2401 #endif #ifndef GL_OBJECT_LINE_SGIS #define GL_OBJECT_LINE_SGIS 0x81F7 #endif #ifndef GL_OBJECT_LINK_STATUS_ARB #define GL_OBJECT_LINK_STATUS_ARB 0x8B82 #endif #ifndef GL_OBJECT_PLANE #define GL_OBJECT_PLANE 0x2501 #endif #ifndef GL_OBJECT_POINT_SGIS #define GL_OBJECT_POINT_SGIS 0x81F5 #endif #ifndef GL_OBJECT_SHADER_SOURCE_LENGTH_ARB #define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 #endif #ifndef GL_OBJECT_SUBTYPE_ARB #define GL_OBJECT_SUBTYPE_ARB 0x8B4F #endif #ifndef GL_OBJECT_TYPE #define GL_OBJECT_TYPE 0x9112 #endif #ifndef GL_OBJECT_TYPE_ARB #define GL_OBJECT_TYPE_ARB 0x8B4E #endif #ifndef GL_OBJECT_VALIDATE_STATUS_ARB #define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 #endif #ifndef GL_OCCLUSION_QUERY_EVENT_MASK_AMD #define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F #endif #ifndef GL_OCCLUSION_TEST_HP #define GL_OCCLUSION_TEST_HP 0x8165 #endif #ifndef GL_OCCLUSION_TEST_RESULT_HP #define GL_OCCLUSION_TEST_RESULT_HP 0x8166 #endif #ifndef GL_OFFSET #define GL_OFFSET 0x92FC #endif #ifndef GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV #define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 #endif #ifndef GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV #define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 #endif #ifndef GL_OFFSET_HILO_TEXTURE_2D_NV #define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 #endif #ifndef GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV #define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 #endif #ifndef GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV #define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 #endif #ifndef GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV #define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 #endif #ifndef GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV #define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 #endif #ifndef GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV #define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 #endif #ifndef GL_OFFSET_TEXTURE_2D_BIAS_NV #define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 #endif #ifndef GL_OFFSET_TEXTURE_2D_MATRIX_NV #define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 #endif #ifndef GL_OFFSET_TEXTURE_2D_NV #define GL_OFFSET_TEXTURE_2D_NV 0x86E8 #endif #ifndef GL_OFFSET_TEXTURE_2D_SCALE_NV #define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 #endif #ifndef GL_OFFSET_TEXTURE_BIAS_NV #define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 #endif #ifndef GL_OFFSET_TEXTURE_MATRIX_NV #define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 #endif #ifndef GL_OFFSET_TEXTURE_RECTANGLE_NV #define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C #endif #ifndef GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV #define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D #endif #ifndef GL_OFFSET_TEXTURE_SCALE_NV #define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 #endif #ifndef GL_ONE #define GL_ONE 1 #endif #ifndef GL_ONE_EXT #define GL_ONE_EXT 0x87DE #endif #ifndef GL_ONE_MINUS_CONSTANT_ALPHA #define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 #endif #ifndef GL_ONE_MINUS_CONSTANT_ALPHA_EXT #define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 #endif #ifndef GL_ONE_MINUS_CONSTANT_COLOR #define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 #endif #ifndef GL_ONE_MINUS_CONSTANT_COLOR_EXT #define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 #endif #ifndef GL_ONE_MINUS_DST_ALPHA #define GL_ONE_MINUS_DST_ALPHA 0x0305 #endif #ifndef GL_ONE_MINUS_DST_COLOR #define GL_ONE_MINUS_DST_COLOR 0x0307 #endif #ifndef GL_ONE_MINUS_SRC1_ALPHA #define GL_ONE_MINUS_SRC1_ALPHA 0x88FB #endif #ifndef GL_ONE_MINUS_SRC1_COLOR #define GL_ONE_MINUS_SRC1_COLOR 0x88FA #endif #ifndef GL_ONE_MINUS_SRC_ALPHA #define GL_ONE_MINUS_SRC_ALPHA 0x0303 #endif #ifndef GL_ONE_MINUS_SRC_COLOR #define GL_ONE_MINUS_SRC_COLOR 0x0301 #endif #ifndef GL_OPERAND0_ALPHA #define GL_OPERAND0_ALPHA 0x8598 #endif #ifndef GL_OPERAND0_ALPHA_ARB #define GL_OPERAND0_ALPHA_ARB 0x8598 #endif #ifndef GL_OPERAND0_ALPHA_EXT #define GL_OPERAND0_ALPHA_EXT 0x8598 #endif #ifndef GL_OPERAND0_RGB #define GL_OPERAND0_RGB 0x8590 #endif #ifndef GL_OPERAND0_RGB_ARB #define GL_OPERAND0_RGB_ARB 0x8590 #endif #ifndef GL_OPERAND0_RGB_EXT #define GL_OPERAND0_RGB_EXT 0x8590 #endif #ifndef GL_OPERAND1_ALPHA #define GL_OPERAND1_ALPHA 0x8599 #endif #ifndef GL_OPERAND1_ALPHA_ARB #define GL_OPERAND1_ALPHA_ARB 0x8599 #endif #ifndef GL_OPERAND1_ALPHA_EXT #define GL_OPERAND1_ALPHA_EXT 0x8599 #endif #ifndef GL_OPERAND1_RGB #define GL_OPERAND1_RGB 0x8591 #endif #ifndef GL_OPERAND1_RGB_ARB #define GL_OPERAND1_RGB_ARB 0x8591 #endif #ifndef GL_OPERAND1_RGB_EXT #define GL_OPERAND1_RGB_EXT 0x8591 #endif #ifndef GL_OPERAND2_ALPHA #define GL_OPERAND2_ALPHA 0x859A #endif #ifndef GL_OPERAND2_ALPHA_ARB #define GL_OPERAND2_ALPHA_ARB 0x859A #endif #ifndef GL_OPERAND2_ALPHA_EXT #define GL_OPERAND2_ALPHA_EXT 0x859A #endif #ifndef GL_OPERAND2_RGB #define GL_OPERAND2_RGB 0x8592 #endif #ifndef GL_OPERAND2_RGB_ARB #define GL_OPERAND2_RGB_ARB 0x8592 #endif #ifndef GL_OPERAND2_RGB_EXT #define GL_OPERAND2_RGB_EXT 0x8592 #endif #ifndef GL_OPERAND3_ALPHA #define GL_OPERAND3_ALPHA 0x859B #endif #ifndef GL_OPERAND3_ALPHA_ARB #define GL_OPERAND3_ALPHA_ARB 0x859B #endif #ifndef GL_OPERAND3_ALPHA_NV #define GL_OPERAND3_ALPHA_NV 0x859B #endif #ifndef GL_OPERAND3_RGB #define GL_OPERAND3_RGB 0x8593 #endif #ifndef GL_OPERAND3_RGB_ARB #define GL_OPERAND3_RGB_ARB 0x8593 #endif #ifndef GL_OPERAND3_RGB_NV #define GL_OPERAND3_RGB_NV 0x8593 #endif #ifndef GL_OPERAND4_ALPHA #define GL_OPERAND4_ALPHA 0x859C #endif #ifndef GL_OPERAND4_ALPHA_ARB #define GL_OPERAND4_ALPHA_ARB 0x859C #endif #ifndef GL_OPERAND4_RGB #define GL_OPERAND4_RGB 0x8594 #endif #ifndef GL_OPERAND4_RGB_ARB #define GL_OPERAND4_RGB_ARB 0x8594 #endif #ifndef GL_OPERAND5_ALPHA #define GL_OPERAND5_ALPHA 0x859D #endif #ifndef GL_OPERAND5_ALPHA_ARB #define GL_OPERAND5_ALPHA_ARB 0x859D #endif #ifndef GL_OPERAND5_RGB #define GL_OPERAND5_RGB 0x8595 #endif #ifndef GL_OPERAND5_RGB_ARB #define GL_OPERAND5_RGB_ARB 0x8595 #endif #ifndef GL_OPERAND6_ALPHA #define GL_OPERAND6_ALPHA 0x859E #endif #ifndef GL_OPERAND6_ALPHA_ARB #define GL_OPERAND6_ALPHA_ARB 0x859E #endif #ifndef GL_OPERAND6_RGB #define GL_OPERAND6_RGB 0x8596 #endif #ifndef GL_OPERAND6_RGB_ARB #define GL_OPERAND6_RGB_ARB 0x8596 #endif #ifndef GL_OPERAND7_ALPHA #define GL_OPERAND7_ALPHA 0x859F #endif #ifndef GL_OPERAND7_ALPHA_ARB #define GL_OPERAND7_ALPHA_ARB 0x859F #endif #ifndef GL_OPERAND7_RGB #define GL_OPERAND7_RGB 0x8597 #endif #ifndef GL_OPERAND7_RGB_ARB #define GL_OPERAND7_RGB_ARB 0x8597 #endif #ifndef GL_OP_ADD_EXT #define GL_OP_ADD_EXT 0x8787 #endif #ifndef GL_OP_CLAMP_EXT #define GL_OP_CLAMP_EXT 0x878E #endif #ifndef GL_OP_CROSS_PRODUCT_EXT #define GL_OP_CROSS_PRODUCT_EXT 0x8797 #endif #ifndef GL_OP_DOT3_EXT #define GL_OP_DOT3_EXT 0x8784 #endif #ifndef GL_OP_DOT4_EXT #define GL_OP_DOT4_EXT 0x8785 #endif #ifndef GL_OP_EXP_BASE_2_EXT #define GL_OP_EXP_BASE_2_EXT 0x8791 #endif #ifndef GL_OP_FLOOR_EXT #define GL_OP_FLOOR_EXT 0x878F #endif #ifndef GL_OP_FRAC_EXT #define GL_OP_FRAC_EXT 0x8789 #endif #ifndef GL_OP_INDEX_EXT #define GL_OP_INDEX_EXT 0x8782 #endif #ifndef GL_OP_LOG_BASE_2_EXT #define GL_OP_LOG_BASE_2_EXT 0x8792 #endif #ifndef GL_OP_MADD_EXT #define GL_OP_MADD_EXT 0x8788 #endif #ifndef GL_OP_MAX_EXT #define GL_OP_MAX_EXT 0x878A #endif #ifndef GL_OP_MIN_EXT #define GL_OP_MIN_EXT 0x878B #endif #ifndef GL_OP_MOV_EXT #define GL_OP_MOV_EXT 0x8799 #endif #ifndef GL_OP_MULTIPLY_MATRIX_EXT #define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 #endif #ifndef GL_OP_MUL_EXT #define GL_OP_MUL_EXT 0x8786 #endif #ifndef GL_OP_NEGATE_EXT #define GL_OP_NEGATE_EXT 0x8783 #endif #ifndef GL_OP_POWER_EXT #define GL_OP_POWER_EXT 0x8793 #endif #ifndef GL_OP_RECIP_EXT #define GL_OP_RECIP_EXT 0x8794 #endif #ifndef GL_OP_RECIP_SQRT_EXT #define GL_OP_RECIP_SQRT_EXT 0x8795 #endif #ifndef GL_OP_ROUND_EXT #define GL_OP_ROUND_EXT 0x8790 #endif #ifndef GL_OP_SET_GE_EXT #define GL_OP_SET_GE_EXT 0x878C #endif #ifndef GL_OP_SET_LT_EXT #define GL_OP_SET_LT_EXT 0x878D #endif #ifndef GL_OP_SUB_EXT #define GL_OP_SUB_EXT 0x8796 #endif #ifndef GL_OR #define GL_OR 0x1507 #endif #ifndef GL_ORDER #define GL_ORDER 0x0A01 #endif #ifndef GL_OR_INVERTED #define GL_OR_INVERTED 0x150D #endif #ifndef GL_OR_REVERSE #define GL_OR_REVERSE 0x150B #endif #ifndef GL_OUTPUT_COLOR0_EXT #define GL_OUTPUT_COLOR0_EXT 0x879B #endif #ifndef GL_OUTPUT_COLOR1_EXT #define GL_OUTPUT_COLOR1_EXT 0x879C #endif #ifndef GL_OUTPUT_FOG_EXT #define GL_OUTPUT_FOG_EXT 0x87BD #endif #ifndef GL_OUTPUT_TEXTURE_COORD0_EXT #define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D #endif #ifndef GL_OUTPUT_TEXTURE_COORD10_EXT #define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 #endif #ifndef GL_OUTPUT_TEXTURE_COORD11_EXT #define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 #endif #ifndef GL_OUTPUT_TEXTURE_COORD12_EXT #define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 #endif #ifndef GL_OUTPUT_TEXTURE_COORD13_EXT #define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA #endif #ifndef GL_OUTPUT_TEXTURE_COORD14_EXT #define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB #endif #ifndef GL_OUTPUT_TEXTURE_COORD15_EXT #define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC #endif #ifndef GL_OUTPUT_TEXTURE_COORD16_EXT #define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD #endif #ifndef GL_OUTPUT_TEXTURE_COORD17_EXT #define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE #endif #ifndef GL_OUTPUT_TEXTURE_COORD18_EXT #define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF #endif #ifndef GL_OUTPUT_TEXTURE_COORD19_EXT #define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 #endif #ifndef GL_OUTPUT_TEXTURE_COORD1_EXT #define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E #endif #ifndef GL_OUTPUT_TEXTURE_COORD20_EXT #define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 #endif #ifndef GL_OUTPUT_TEXTURE_COORD21_EXT #define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 #endif #ifndef GL_OUTPUT_TEXTURE_COORD22_EXT #define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 #endif #ifndef GL_OUTPUT_TEXTURE_COORD23_EXT #define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 #endif #ifndef GL_OUTPUT_TEXTURE_COORD24_EXT #define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 #endif #ifndef GL_OUTPUT_TEXTURE_COORD25_EXT #define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 #endif #ifndef GL_OUTPUT_TEXTURE_COORD26_EXT #define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 #endif #ifndef GL_OUTPUT_TEXTURE_COORD27_EXT #define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 #endif #ifndef GL_OUTPUT_TEXTURE_COORD28_EXT #define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 #endif #ifndef GL_OUTPUT_TEXTURE_COORD29_EXT #define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA #endif #ifndef GL_OUTPUT_TEXTURE_COORD2_EXT #define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F #endif #ifndef GL_OUTPUT_TEXTURE_COORD30_EXT #define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB #endif #ifndef GL_OUTPUT_TEXTURE_COORD31_EXT #define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC #endif #ifndef GL_OUTPUT_TEXTURE_COORD3_EXT #define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 #endif #ifndef GL_OUTPUT_TEXTURE_COORD4_EXT #define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 #endif #ifndef GL_OUTPUT_TEXTURE_COORD5_EXT #define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 #endif #ifndef GL_OUTPUT_TEXTURE_COORD6_EXT #define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 #endif #ifndef GL_OUTPUT_TEXTURE_COORD7_EXT #define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 #endif #ifndef GL_OUTPUT_TEXTURE_COORD8_EXT #define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 #endif #ifndef GL_OUTPUT_TEXTURE_COORD9_EXT #define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 #endif #ifndef GL_OUTPUT_VERTEX_EXT #define GL_OUTPUT_VERTEX_EXT 0x879A #endif #ifndef GL_OUT_OF_MEMORY #define GL_OUT_OF_MEMORY 0x0505 #endif #ifndef GL_OVERLAY_KHR #define GL_OVERLAY_KHR 0x9296 #endif #ifndef GL_OVERLAY_NV #define GL_OVERLAY_NV 0x9296 #endif #ifndef GL_PACK_ALIGNMENT #define GL_PACK_ALIGNMENT 0x0D05 #endif #ifndef GL_PACK_CMYK_HINT_EXT #define GL_PACK_CMYK_HINT_EXT 0x800E #endif #ifndef GL_PACK_COMPRESSED_BLOCK_DEPTH #define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D #endif #ifndef GL_PACK_COMPRESSED_BLOCK_HEIGHT #define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C #endif #ifndef GL_PACK_COMPRESSED_BLOCK_SIZE #define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E #endif #ifndef GL_PACK_COMPRESSED_BLOCK_WIDTH #define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B #endif #ifndef GL_PACK_IMAGE_DEPTH_SGIS #define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 #endif #ifndef GL_PACK_IMAGE_HEIGHT #define GL_PACK_IMAGE_HEIGHT 0x806C #endif #ifndef GL_PACK_IMAGE_HEIGHT_EXT #define GL_PACK_IMAGE_HEIGHT_EXT 0x806C #endif #ifndef GL_PACK_INVERT_MESA #define GL_PACK_INVERT_MESA 0x8758 #endif #ifndef GL_PACK_LSB_FIRST #define GL_PACK_LSB_FIRST 0x0D01 #endif #ifndef GL_PACK_RESAMPLE_OML #define GL_PACK_RESAMPLE_OML 0x8984 #endif #ifndef GL_PACK_RESAMPLE_SGIX #define GL_PACK_RESAMPLE_SGIX 0x842C #endif #ifndef GL_PACK_ROW_BYTES_APPLE #define GL_PACK_ROW_BYTES_APPLE 0x8A15 #endif #ifndef GL_PACK_ROW_LENGTH #define GL_PACK_ROW_LENGTH 0x0D02 #endif #ifndef GL_PACK_SKIP_IMAGES #define GL_PACK_SKIP_IMAGES 0x806B #endif #ifndef GL_PACK_SKIP_IMAGES_EXT #define GL_PACK_SKIP_IMAGES_EXT 0x806B #endif #ifndef GL_PACK_SKIP_PIXELS #define GL_PACK_SKIP_PIXELS 0x0D04 #endif #ifndef GL_PACK_SKIP_ROWS #define GL_PACK_SKIP_ROWS 0x0D03 #endif #ifndef GL_PACK_SKIP_VOLUMES_SGIS #define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 #endif #ifndef GL_PACK_SUBSAMPLE_RATE_SGIX #define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 #endif #ifndef GL_PACK_SWAP_BYTES #define GL_PACK_SWAP_BYTES 0x0D00 #endif #ifndef GL_PALETTE4_R5_G6_B5_OES #define GL_PALETTE4_R5_G6_B5_OES 0x8B92 #endif #ifndef GL_PALETTE4_RGB5_A1_OES #define GL_PALETTE4_RGB5_A1_OES 0x8B94 #endif #ifndef GL_PALETTE4_RGB8_OES #define GL_PALETTE4_RGB8_OES 0x8B90 #endif #ifndef GL_PALETTE4_RGBA4_OES #define GL_PALETTE4_RGBA4_OES 0x8B93 #endif #ifndef GL_PALETTE4_RGBA8_OES #define GL_PALETTE4_RGBA8_OES 0x8B91 #endif #ifndef GL_PALETTE8_R5_G6_B5_OES #define GL_PALETTE8_R5_G6_B5_OES 0x8B97 #endif #ifndef GL_PALETTE8_RGB5_A1_OES #define GL_PALETTE8_RGB5_A1_OES 0x8B99 #endif #ifndef GL_PALETTE8_RGB8_OES #define GL_PALETTE8_RGB8_OES 0x8B95 #endif #ifndef GL_PALETTE8_RGBA4_OES #define GL_PALETTE8_RGBA4_OES 0x8B98 #endif #ifndef GL_PALETTE8_RGBA8_OES #define GL_PALETTE8_RGBA8_OES 0x8B96 #endif #ifndef GL_PARALLEL_ARRAYS_INTEL #define GL_PARALLEL_ARRAYS_INTEL 0x83F4 #endif #ifndef GL_PARAMETER_BUFFER_ARB #define GL_PARAMETER_BUFFER_ARB 0x80EE #endif #ifndef GL_PARAMETER_BUFFER_BINDING_ARB #define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF #endif #ifndef GL_PARTIAL_SUCCESS_NV #define GL_PARTIAL_SUCCESS_NV 0x902E #endif #ifndef GL_PASS_THROUGH_NV #define GL_PASS_THROUGH_NV 0x86E6 #endif #ifndef GL_PASS_THROUGH_TOKEN #define GL_PASS_THROUGH_TOKEN 0x0700 #endif #ifndef GL_PATCHES #define GL_PATCHES 0x000E #endif #ifndef GL_PATCH_DEFAULT_INNER_LEVEL #define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 #endif #ifndef GL_PATCH_DEFAULT_OUTER_LEVEL #define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 #endif #ifndef GL_PATCH_VERTICES #define GL_PATCH_VERTICES 0x8E72 #endif #ifndef GL_PATH_CLIENT_LENGTH_NV #define GL_PATH_CLIENT_LENGTH_NV 0x907F #endif #ifndef GL_PATH_COMMAND_COUNT_NV #define GL_PATH_COMMAND_COUNT_NV 0x909D #endif #ifndef GL_PATH_COMPUTED_LENGTH_NV #define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 #endif #ifndef GL_PATH_COORD_COUNT_NV #define GL_PATH_COORD_COUNT_NV 0x909E #endif #ifndef GL_PATH_COVER_DEPTH_FUNC_NV #define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF #endif #ifndef GL_PATH_DASH_ARRAY_COUNT_NV #define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F #endif #ifndef GL_PATH_DASH_CAPS_NV #define GL_PATH_DASH_CAPS_NV 0x907B #endif #ifndef GL_PATH_DASH_OFFSET_NV #define GL_PATH_DASH_OFFSET_NV 0x907E #endif #ifndef GL_PATH_DASH_OFFSET_RESET_NV #define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 #endif #ifndef GL_PATH_END_CAPS_NV #define GL_PATH_END_CAPS_NV 0x9076 #endif #ifndef GL_PATH_ERROR_POSITION_NV #define GL_PATH_ERROR_POSITION_NV 0x90AB #endif #ifndef GL_PATH_FILL_BOUNDING_BOX_NV #define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 #endif #ifndef GL_PATH_FILL_COVER_MODE_NV #define GL_PATH_FILL_COVER_MODE_NV 0x9082 #endif #ifndef GL_PATH_FILL_MASK_NV #define GL_PATH_FILL_MASK_NV 0x9081 #endif #ifndef GL_PATH_FILL_MODE_NV #define GL_PATH_FILL_MODE_NV 0x9080 #endif #ifndef GL_PATH_FOG_GEN_MODE_NV #define GL_PATH_FOG_GEN_MODE_NV 0x90AC #endif #ifndef GL_PATH_FORMAT_PS_NV #define GL_PATH_FORMAT_PS_NV 0x9071 #endif #ifndef GL_PATH_FORMAT_SVG_NV #define GL_PATH_FORMAT_SVG_NV 0x9070 #endif #ifndef GL_PATH_GEN_COEFF_NV #define GL_PATH_GEN_COEFF_NV 0x90B1 #endif #ifndef GL_PATH_GEN_COLOR_FORMAT_NV #define GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2 #endif #ifndef GL_PATH_GEN_COMPONENTS_NV #define GL_PATH_GEN_COMPONENTS_NV 0x90B3 #endif #ifndef GL_PATH_GEN_MODE_NV #define GL_PATH_GEN_MODE_NV 0x90B0 #endif #ifndef GL_PATH_INITIAL_DASH_CAP_NV #define GL_PATH_INITIAL_DASH_CAP_NV 0x907C #endif #ifndef GL_PATH_INITIAL_END_CAP_NV #define GL_PATH_INITIAL_END_CAP_NV 0x9077 #endif #ifndef GL_PATH_JOIN_STYLE_NV #define GL_PATH_JOIN_STYLE_NV 0x9079 #endif #ifndef GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV #define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36 #endif #ifndef GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV #define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38 #endif #ifndef GL_PATH_MITER_LIMIT_NV #define GL_PATH_MITER_LIMIT_NV 0x907A #endif #ifndef GL_PATH_MODELVIEW_MATRIX_NV #define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6 #endif #ifndef GL_PATH_MODELVIEW_NV #define GL_PATH_MODELVIEW_NV 0x1700 #endif #ifndef GL_PATH_MODELVIEW_STACK_DEPTH_NV #define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3 #endif #ifndef GL_PATH_OBJECT_BOUNDING_BOX_NV #define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A #endif #ifndef GL_PATH_PROJECTION_MATRIX_NV #define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7 #endif #ifndef GL_PATH_PROJECTION_NV #define GL_PATH_PROJECTION_NV 0x1701 #endif #ifndef GL_PATH_PROJECTION_STACK_DEPTH_NV #define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4 #endif #ifndef GL_PATH_SAMPLE_QUALITY_NV #define GL_PATH_SAMPLE_QUALITY_NV 0x9085 #endif #ifndef GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV #define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD #endif #ifndef GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV #define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE #endif #ifndef GL_PATH_STENCIL_FUNC_NV #define GL_PATH_STENCIL_FUNC_NV 0x90B7 #endif #ifndef GL_PATH_STENCIL_REF_NV #define GL_PATH_STENCIL_REF_NV 0x90B8 #endif #ifndef GL_PATH_STENCIL_VALUE_MASK_NV #define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 #endif #ifndef GL_PATH_STROKE_BOUNDING_BOX_NV #define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 #endif #ifndef GL_PATH_STROKE_BOUND_NV #define GL_PATH_STROKE_BOUND_NV 0x9086 #endif #ifndef GL_PATH_STROKE_COVER_MODE_NV #define GL_PATH_STROKE_COVER_MODE_NV 0x9083 #endif #ifndef GL_PATH_STROKE_MASK_NV #define GL_PATH_STROKE_MASK_NV 0x9084 #endif #ifndef GL_PATH_STROKE_OVERSAMPLE_COUNT_NV #define GL_PATH_STROKE_OVERSAMPLE_COUNT_NV 0x9087 #endif #ifndef GL_PATH_STROKE_WIDTH_NV #define GL_PATH_STROKE_WIDTH_NV 0x9075 #endif #ifndef GL_PATH_TERMINAL_DASH_CAP_NV #define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D #endif #ifndef GL_PATH_TERMINAL_END_CAP_NV #define GL_PATH_TERMINAL_END_CAP_NV 0x9078 #endif #ifndef GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV #define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3 #endif #ifndef GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV #define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4 #endif #ifndef GL_PERCENTAGE_AMD #define GL_PERCENTAGE_AMD 0x8BC3 #endif #ifndef GL_PERFMON_RESULT_AMD #define GL_PERFMON_RESULT_AMD 0x8BC6 #endif #ifndef GL_PERFMON_RESULT_AVAILABLE_AMD #define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 #endif #ifndef GL_PERFMON_RESULT_SIZE_AMD #define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 #endif #ifndef GL_PERFORMANCE_MONITOR_AMD #define GL_PERFORMANCE_MONITOR_AMD 0x9152 #endif #ifndef GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL #define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC #endif #ifndef GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL #define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB #endif #ifndef GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL #define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA #endif #ifndef GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL #define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 #endif #ifndef GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL #define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 #endif #ifndef GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL #define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF #endif #ifndef GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL #define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 #endif #ifndef GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL #define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 #endif #ifndef GL_PERFQUERY_COUNTER_EVENT_INTEL #define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 #endif #ifndef GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL #define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE #endif #ifndef GL_PERFQUERY_COUNTER_RAW_INTEL #define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 #endif #ifndef GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL #define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 #endif #ifndef GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL #define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 #endif #ifndef GL_PERFQUERY_DONOT_FLUSH_INTEL #define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 #endif #ifndef GL_PERFQUERY_FLUSH_INTEL #define GL_PERFQUERY_FLUSH_INTEL 0x83FA #endif #ifndef GL_PERFQUERY_GLOBAL_CONTEXT_INTEL #define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 #endif #ifndef GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL #define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 #endif #ifndef GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL #define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD #endif #ifndef GL_PERFQUERY_SINGLE_CONTEXT_INTEL #define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 #endif #ifndef GL_PERFQUERY_WAIT_INTEL #define GL_PERFQUERY_WAIT_INTEL 0x83FB #endif #ifndef GL_PERSPECTIVE_CORRECTION_HINT #define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 #endif #ifndef GL_PERTURB_EXT #define GL_PERTURB_EXT 0x85AE #endif #ifndef GL_PER_STAGE_CONSTANTS_NV #define GL_PER_STAGE_CONSTANTS_NV 0x8535 #endif #ifndef GL_PHONG_HINT_WIN #define GL_PHONG_HINT_WIN 0x80EB #endif #ifndef GL_PHONG_WIN #define GL_PHONG_WIN 0x80EA #endif #ifndef GL_PINLIGHT_NV #define GL_PINLIGHT_NV 0x92A8 #endif #ifndef GL_PIXEL_BUFFER_BARRIER_BIT #define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 #endif #ifndef GL_PIXEL_BUFFER_BARRIER_BIT_EXT #define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 #endif #ifndef GL_PIXEL_COUNTER_BITS_NV #define GL_PIXEL_COUNTER_BITS_NV 0x8864 #endif #ifndef GL_PIXEL_COUNT_AVAILABLE_NV #define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 #endif #ifndef GL_PIXEL_COUNT_NV #define GL_PIXEL_COUNT_NV 0x8866 #endif #ifndef GL_PIXEL_CUBIC_WEIGHT_EXT #define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 #endif #ifndef GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS #define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 #endif #ifndef GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS #define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 #endif #ifndef GL_PIXEL_GROUP_COLOR_SGIS #define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 #endif #ifndef GL_PIXEL_MAG_FILTER_EXT #define GL_PIXEL_MAG_FILTER_EXT 0x8331 #endif #ifndef GL_PIXEL_MAP_A_TO_A #define GL_PIXEL_MAP_A_TO_A 0x0C79 #endif #ifndef GL_PIXEL_MAP_A_TO_A_SIZE #define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 #endif #ifndef GL_PIXEL_MAP_B_TO_B #define GL_PIXEL_MAP_B_TO_B 0x0C78 #endif #ifndef GL_PIXEL_MAP_B_TO_B_SIZE #define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 #endif #ifndef GL_PIXEL_MAP_G_TO_G #define GL_PIXEL_MAP_G_TO_G 0x0C77 #endif #ifndef GL_PIXEL_MAP_G_TO_G_SIZE #define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 #endif #ifndef GL_PIXEL_MAP_I_TO_A #define GL_PIXEL_MAP_I_TO_A 0x0C75 #endif #ifndef GL_PIXEL_MAP_I_TO_A_SIZE #define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 #endif #ifndef GL_PIXEL_MAP_I_TO_B #define GL_PIXEL_MAP_I_TO_B 0x0C74 #endif #ifndef GL_PIXEL_MAP_I_TO_B_SIZE #define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 #endif #ifndef GL_PIXEL_MAP_I_TO_G #define GL_PIXEL_MAP_I_TO_G 0x0C73 #endif #ifndef GL_PIXEL_MAP_I_TO_G_SIZE #define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 #endif #ifndef GL_PIXEL_MAP_I_TO_I #define GL_PIXEL_MAP_I_TO_I 0x0C70 #endif #ifndef GL_PIXEL_MAP_I_TO_I_SIZE #define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 #endif #ifndef GL_PIXEL_MAP_I_TO_R #define GL_PIXEL_MAP_I_TO_R 0x0C72 #endif #ifndef GL_PIXEL_MAP_I_TO_R_SIZE #define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 #endif #ifndef GL_PIXEL_MAP_R_TO_R #define GL_PIXEL_MAP_R_TO_R 0x0C76 #endif #ifndef GL_PIXEL_MAP_R_TO_R_SIZE #define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 #endif #ifndef GL_PIXEL_MAP_S_TO_S #define GL_PIXEL_MAP_S_TO_S 0x0C71 #endif #ifndef GL_PIXEL_MAP_S_TO_S_SIZE #define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 #endif #ifndef GL_PIXEL_MIN_FILTER_EXT #define GL_PIXEL_MIN_FILTER_EXT 0x8332 #endif #ifndef GL_PIXEL_MODE_BIT #define GL_PIXEL_MODE_BIT 0x00000020 #endif #ifndef GL_PIXEL_PACK_BUFFER #define GL_PIXEL_PACK_BUFFER 0x88EB #endif #ifndef GL_PIXEL_PACK_BUFFER_ARB #define GL_PIXEL_PACK_BUFFER_ARB 0x88EB #endif #ifndef GL_PIXEL_PACK_BUFFER_BINDING #define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED #endif #ifndef GL_PIXEL_PACK_BUFFER_BINDING_ARB #define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED #endif #ifndef GL_PIXEL_PACK_BUFFER_BINDING_EXT #define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED #endif #ifndef GL_PIXEL_PACK_BUFFER_EXT #define GL_PIXEL_PACK_BUFFER_EXT 0x88EB #endif #ifndef GL_PIXEL_SUBSAMPLE_2424_SGIX #define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 #endif #ifndef GL_PIXEL_SUBSAMPLE_4242_SGIX #define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 #endif #ifndef GL_PIXEL_SUBSAMPLE_4444_SGIX #define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 #endif #ifndef GL_PIXEL_TEXTURE_SGIS #define GL_PIXEL_TEXTURE_SGIS 0x8353 #endif #ifndef GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX #define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189 #endif #ifndef GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX #define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A #endif #ifndef GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX #define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188 #endif #ifndef GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX #define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187 #endif #ifndef GL_PIXEL_TEX_GEN_MODE_SGIX #define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B #endif #ifndef GL_PIXEL_TEX_GEN_Q_CEILING_SGIX #define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184 #endif #ifndef GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX #define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186 #endif #ifndef GL_PIXEL_TEX_GEN_Q_ROUND_SGIX #define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185 #endif #ifndef GL_PIXEL_TEX_GEN_SGIX #define GL_PIXEL_TEX_GEN_SGIX 0x8139 #endif #ifndef GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX #define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E #endif #ifndef GL_PIXEL_TILE_CACHE_INCREMENT_SGIX #define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F #endif #ifndef GL_PIXEL_TILE_CACHE_SIZE_SGIX #define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 #endif #ifndef GL_PIXEL_TILE_GRID_DEPTH_SGIX #define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 #endif #ifndef GL_PIXEL_TILE_GRID_HEIGHT_SGIX #define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 #endif #ifndef GL_PIXEL_TILE_GRID_WIDTH_SGIX #define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 #endif #ifndef GL_PIXEL_TILE_HEIGHT_SGIX #define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 #endif #ifndef GL_PIXEL_TILE_WIDTH_SGIX #define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 #endif #ifndef GL_PIXEL_TRANSFORM_2D_EXT #define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 #endif #ifndef GL_PIXEL_TRANSFORM_2D_MATRIX_EXT #define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 #endif #ifndef GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT #define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 #endif #ifndef GL_PIXEL_UNPACK_BUFFER #define GL_PIXEL_UNPACK_BUFFER 0x88EC #endif #ifndef GL_PIXEL_UNPACK_BUFFER_ARB #define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC #endif #ifndef GL_PIXEL_UNPACK_BUFFER_BINDING #define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF #endif #ifndef GL_PIXEL_UNPACK_BUFFER_BINDING_ARB #define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF #endif #ifndef GL_PIXEL_UNPACK_BUFFER_BINDING_EXT #define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF #endif #ifndef GL_PIXEL_UNPACK_BUFFER_EXT #define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC #endif #ifndef GL_PLUS_CLAMPED_ALPHA_NV #define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 #endif #ifndef GL_PLUS_CLAMPED_NV #define GL_PLUS_CLAMPED_NV 0x92B1 #endif #ifndef GL_PLUS_DARKER_NV #define GL_PLUS_DARKER_NV 0x9292 #endif #ifndef GL_PLUS_NV #define GL_PLUS_NV 0x9291 #endif #ifndef GL_PN_TRIANGLES_ATI #define GL_PN_TRIANGLES_ATI 0x87F0 #endif #ifndef GL_PN_TRIANGLES_NORMAL_MODE_ATI #define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 #endif #ifndef GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI #define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 #endif #ifndef GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI #define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 #endif #ifndef GL_PN_TRIANGLES_POINT_MODE_ATI #define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 #endif #ifndef GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI #define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 #endif #ifndef GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI #define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 #endif #ifndef GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI #define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 #endif #ifndef GL_POINT #define GL_POINT 0x1B00 #endif #ifndef GL_POINTS #define GL_POINTS 0x0000 #endif #ifndef GL_POINT_BIT #define GL_POINT_BIT 0x00000002 #endif #ifndef GL_POINT_DISTANCE_ATTENUATION #define GL_POINT_DISTANCE_ATTENUATION 0x8129 #endif #ifndef GL_POINT_DISTANCE_ATTENUATION_ARB #define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 #endif #ifndef GL_POINT_FADE_THRESHOLD_SIZE #define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 #endif #ifndef GL_POINT_FADE_THRESHOLD_SIZE_ARB #define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 #endif #ifndef GL_POINT_FADE_THRESHOLD_SIZE_EXT #define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 #endif #ifndef GL_POINT_FADE_THRESHOLD_SIZE_SGIS #define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 #endif #ifndef GL_POINT_SIZE #define GL_POINT_SIZE 0x0B11 #endif #ifndef GL_POINT_SIZE_GRANULARITY #define GL_POINT_SIZE_GRANULARITY 0x0B13 #endif #ifndef GL_POINT_SIZE_MAX #define GL_POINT_SIZE_MAX 0x8127 #endif #ifndef GL_POINT_SIZE_MAX_ARB #define GL_POINT_SIZE_MAX_ARB 0x8127 #endif #ifndef GL_POINT_SIZE_MAX_EXT #define GL_POINT_SIZE_MAX_EXT 0x8127 #endif #ifndef GL_POINT_SIZE_MAX_SGIS #define GL_POINT_SIZE_MAX_SGIS 0x8127 #endif #ifndef GL_POINT_SIZE_MIN #define GL_POINT_SIZE_MIN 0x8126 #endif #ifndef GL_POINT_SIZE_MIN_ARB #define GL_POINT_SIZE_MIN_ARB 0x8126 #endif #ifndef GL_POINT_SIZE_MIN_EXT #define GL_POINT_SIZE_MIN_EXT 0x8126 #endif #ifndef GL_POINT_SIZE_MIN_SGIS #define GL_POINT_SIZE_MIN_SGIS 0x8126 #endif #ifndef GL_POINT_SIZE_RANGE #define GL_POINT_SIZE_RANGE 0x0B12 #endif #ifndef GL_POINT_SMOOTH #define GL_POINT_SMOOTH 0x0B10 #endif #ifndef GL_POINT_SMOOTH_HINT #define GL_POINT_SMOOTH_HINT 0x0C51 #endif #ifndef GL_POINT_SPRITE #define GL_POINT_SPRITE 0x8861 #endif #ifndef GL_POINT_SPRITE_ARB #define GL_POINT_SPRITE_ARB 0x8861 #endif #ifndef GL_POINT_SPRITE_COORD_ORIGIN #define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 #endif #ifndef GL_POINT_SPRITE_NV #define GL_POINT_SPRITE_NV 0x8861 #endif #ifndef GL_POINT_SPRITE_R_MODE_NV #define GL_POINT_SPRITE_R_MODE_NV 0x8863 #endif #ifndef GL_POINT_TOKEN #define GL_POINT_TOKEN 0x0701 #endif #ifndef GL_POLYGON #define GL_POLYGON 0x0009 #endif #ifndef GL_POLYGON_BIT #define GL_POLYGON_BIT 0x00000008 #endif #ifndef GL_POLYGON_MODE #define GL_POLYGON_MODE 0x0B40 #endif #ifndef GL_POLYGON_OFFSET_BIAS_EXT #define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 #endif #ifndef GL_POLYGON_OFFSET_CLAMP_EXT #define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B #endif #ifndef GL_POLYGON_OFFSET_COMMAND_NV #define GL_POLYGON_OFFSET_COMMAND_NV 0x000E #endif #ifndef GL_POLYGON_OFFSET_EXT #define GL_POLYGON_OFFSET_EXT 0x8037 #endif #ifndef GL_POLYGON_OFFSET_FACTOR #define GL_POLYGON_OFFSET_FACTOR 0x8038 #endif #ifndef GL_POLYGON_OFFSET_FACTOR_EXT #define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 #endif #ifndef GL_POLYGON_OFFSET_FILL #define GL_POLYGON_OFFSET_FILL 0x8037 #endif #ifndef GL_POLYGON_OFFSET_LINE #define GL_POLYGON_OFFSET_LINE 0x2A02 #endif #ifndef GL_POLYGON_OFFSET_POINT #define GL_POLYGON_OFFSET_POINT 0x2A01 #endif #ifndef GL_POLYGON_OFFSET_UNITS #define GL_POLYGON_OFFSET_UNITS 0x2A00 #endif #ifndef GL_POLYGON_SMOOTH #define GL_POLYGON_SMOOTH 0x0B41 #endif #ifndef GL_POLYGON_SMOOTH_HINT #define GL_POLYGON_SMOOTH_HINT 0x0C53 #endif #ifndef GL_POLYGON_STIPPLE #define GL_POLYGON_STIPPLE 0x0B42 #endif #ifndef GL_POLYGON_STIPPLE_BIT #define GL_POLYGON_STIPPLE_BIT 0x00000010 #endif #ifndef GL_POLYGON_TOKEN #define GL_POLYGON_TOKEN 0x0703 #endif #ifndef GL_POSITION #define GL_POSITION 0x1203 #endif #ifndef GL_POST_COLOR_MATRIX_ALPHA_BIAS #define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB #endif #ifndef GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI #define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB #endif #ifndef GL_POST_COLOR_MATRIX_ALPHA_SCALE #define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 #endif #ifndef GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI #define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 #endif #ifndef GL_POST_COLOR_MATRIX_BLUE_BIAS #define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA #endif #ifndef GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI #define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA #endif #ifndef GL_POST_COLOR_MATRIX_BLUE_SCALE #define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 #endif #ifndef GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI #define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 #endif #ifndef GL_POST_COLOR_MATRIX_COLOR_TABLE #define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 #endif #ifndef GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI #define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 #endif #ifndef GL_POST_COLOR_MATRIX_GREEN_BIAS #define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 #endif #ifndef GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI #define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 #endif #ifndef GL_POST_COLOR_MATRIX_GREEN_SCALE #define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 #endif #ifndef GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI #define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 #endif #ifndef GL_POST_COLOR_MATRIX_RED_BIAS #define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 #endif #ifndef GL_POST_COLOR_MATRIX_RED_BIAS_SGI #define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 #endif #ifndef GL_POST_COLOR_MATRIX_RED_SCALE #define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 #endif #ifndef GL_POST_COLOR_MATRIX_RED_SCALE_SGI #define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 #endif #ifndef GL_POST_CONVOLUTION_ALPHA_BIAS #define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 #endif #ifndef GL_POST_CONVOLUTION_ALPHA_BIAS_EXT #define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 #endif #ifndef GL_POST_CONVOLUTION_ALPHA_SCALE #define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F #endif #ifndef GL_POST_CONVOLUTION_ALPHA_SCALE_EXT #define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F #endif #ifndef GL_POST_CONVOLUTION_BLUE_BIAS #define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 #endif #ifndef GL_POST_CONVOLUTION_BLUE_BIAS_EXT #define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 #endif #ifndef GL_POST_CONVOLUTION_BLUE_SCALE #define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E #endif #ifndef GL_POST_CONVOLUTION_BLUE_SCALE_EXT #define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E #endif #ifndef GL_POST_CONVOLUTION_COLOR_TABLE #define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 #endif #ifndef GL_POST_CONVOLUTION_COLOR_TABLE_SGI #define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 #endif #ifndef GL_POST_CONVOLUTION_GREEN_BIAS #define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 #endif #ifndef GL_POST_CONVOLUTION_GREEN_BIAS_EXT #define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 #endif #ifndef GL_POST_CONVOLUTION_GREEN_SCALE #define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D #endif #ifndef GL_POST_CONVOLUTION_GREEN_SCALE_EXT #define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D #endif #ifndef GL_POST_CONVOLUTION_RED_BIAS #define GL_POST_CONVOLUTION_RED_BIAS 0x8020 #endif #ifndef GL_POST_CONVOLUTION_RED_BIAS_EXT #define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 #endif #ifndef GL_POST_CONVOLUTION_RED_SCALE #define GL_POST_CONVOLUTION_RED_SCALE 0x801C #endif #ifndef GL_POST_CONVOLUTION_RED_SCALE_EXT #define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C #endif #ifndef GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP #define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 #endif #ifndef GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX #define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B #endif #ifndef GL_POST_TEXTURE_FILTER_BIAS_SGIX #define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 #endif #ifndef GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX #define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C #endif #ifndef GL_POST_TEXTURE_FILTER_SCALE_SGIX #define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A #endif #ifndef GL_PREFER_DOUBLEBUFFER_HINT_PGI #define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 #endif #ifndef GL_PRESENT_DURATION_NV #define GL_PRESENT_DURATION_NV 0x8E2B #endif #ifndef GL_PRESENT_TIME_NV #define GL_PRESENT_TIME_NV 0x8E2A #endif #ifndef GL_PRESERVE_ATI #define GL_PRESERVE_ATI 0x8762 #endif #ifndef GL_PREVIOUS #define GL_PREVIOUS 0x8578 #endif #ifndef GL_PREVIOUS_ARB #define GL_PREVIOUS_ARB 0x8578 #endif #ifndef GL_PREVIOUS_EXT #define GL_PREVIOUS_EXT 0x8578 #endif #ifndef GL_PREVIOUS_TEXTURE_INPUT_NV #define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 #endif #ifndef GL_PRIMARY_COLOR #define GL_PRIMARY_COLOR 0x8577 #endif #ifndef GL_PRIMARY_COLOR_ARB #define GL_PRIMARY_COLOR_ARB 0x8577 #endif #ifndef GL_PRIMARY_COLOR_EXT #define GL_PRIMARY_COLOR_EXT 0x8577 #endif #ifndef GL_PRIMARY_COLOR_NV #define GL_PRIMARY_COLOR_NV 0x852C #endif #ifndef GL_PRIMITIVES_GENERATED #define GL_PRIMITIVES_GENERATED 0x8C87 #endif #ifndef GL_PRIMITIVES_GENERATED_EXT #define GL_PRIMITIVES_GENERATED_EXT 0x8C87 #endif #ifndef GL_PRIMITIVES_GENERATED_NV #define GL_PRIMITIVES_GENERATED_NV 0x8C87 #endif #ifndef GL_PRIMITIVES_SUBMITTED_ARB #define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF #endif #ifndef GL_PRIMITIVE_ID_NV #define GL_PRIMITIVE_ID_NV 0x8C7C #endif #ifndef GL_PRIMITIVE_RESTART #define GL_PRIMITIVE_RESTART 0x8F9D #endif #ifndef GL_PRIMITIVE_RESTART_FIXED_INDEX #define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 #endif #ifndef GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED #define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 #endif #ifndef GL_PRIMITIVE_RESTART_INDEX #define GL_PRIMITIVE_RESTART_INDEX 0x8F9E #endif #ifndef GL_PRIMITIVE_RESTART_INDEX_NV #define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 #endif #ifndef GL_PRIMITIVE_RESTART_NV #define GL_PRIMITIVE_RESTART_NV 0x8558 #endif #ifndef GL_PROGRAM #define GL_PROGRAM 0x82E2 #endif #ifndef GL_PROGRAMMABLE_SAMPLE_LOCATION_NV #define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 #endif #ifndef GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV #define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340 #endif #ifndef GL_PROGRAM_ADDRESS_REGISTERS_ARB #define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 #endif #ifndef GL_PROGRAM_ALU_INSTRUCTIONS_ARB #define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 #endif #ifndef GL_PROGRAM_ATTRIBS_ARB #define GL_PROGRAM_ATTRIBS_ARB 0x88AC #endif #ifndef GL_PROGRAM_ATTRIB_COMPONENTS_NV #define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 #endif #ifndef GL_PROGRAM_BINARY_FORMATS #define GL_PROGRAM_BINARY_FORMATS 0x87FF #endif #ifndef GL_PROGRAM_BINARY_LENGTH #define GL_PROGRAM_BINARY_LENGTH 0x8741 #endif #ifndef GL_PROGRAM_BINARY_RETRIEVABLE_HINT #define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 #endif #ifndef GL_PROGRAM_BINDING_ARB #define GL_PROGRAM_BINDING_ARB 0x8677 #endif #ifndef GL_PROGRAM_ERROR_POSITION_ARB #define GL_PROGRAM_ERROR_POSITION_ARB 0x864B #endif #ifndef GL_PROGRAM_ERROR_POSITION_NV #define GL_PROGRAM_ERROR_POSITION_NV 0x864B #endif #ifndef GL_PROGRAM_ERROR_STRING_ARB #define GL_PROGRAM_ERROR_STRING_ARB 0x8874 #endif #ifndef GL_PROGRAM_ERROR_STRING_NV #define GL_PROGRAM_ERROR_STRING_NV 0x8874 #endif #ifndef GL_PROGRAM_FORMAT_ARB #define GL_PROGRAM_FORMAT_ARB 0x8876 #endif #ifndef GL_PROGRAM_FORMAT_ASCII_ARB #define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 #endif #ifndef GL_PROGRAM_INPUT #define GL_PROGRAM_INPUT 0x92E3 #endif #ifndef GL_PROGRAM_INSTRUCTIONS_ARB #define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 #endif #ifndef GL_PROGRAM_LENGTH_ARB #define GL_PROGRAM_LENGTH_ARB 0x8627 #endif #ifndef GL_PROGRAM_LENGTH_NV #define GL_PROGRAM_LENGTH_NV 0x8627 #endif #ifndef GL_PROGRAM_MATRIX_EXT #define GL_PROGRAM_MATRIX_EXT 0x8E2D #endif #ifndef GL_PROGRAM_MATRIX_STACK_DEPTH_EXT #define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F #endif #ifndef GL_PROGRAM_NAME_ARB #define GL_PROGRAM_NAME_ARB GL_PROGRAM_BINDING_ARB #endif #ifndef GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB #define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 #endif #ifndef GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB #define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 #endif #ifndef GL_PROGRAM_NATIVE_ATTRIBS_ARB #define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE #endif #ifndef GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB #define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 #endif #ifndef GL_PROGRAM_NATIVE_PARAMETERS_ARB #define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA #endif #ifndef GL_PROGRAM_NATIVE_TEMPORARIES_ARB #define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 #endif #ifndef GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB #define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A #endif #ifndef GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB #define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 #endif #ifndef GL_PROGRAM_OBJECT_ARB #define GL_PROGRAM_OBJECT_ARB 0x8B40 #endif #ifndef GL_PROGRAM_OBJECT_EXT #define GL_PROGRAM_OBJECT_EXT 0x8B40 #endif #ifndef GL_PROGRAM_OUTPUT #define GL_PROGRAM_OUTPUT 0x92E4 #endif #ifndef GL_PROGRAM_PARAMETERS_ARB #define GL_PROGRAM_PARAMETERS_ARB 0x88A8 #endif #ifndef GL_PROGRAM_PARAMETER_NV #define GL_PROGRAM_PARAMETER_NV 0x8644 #endif #ifndef GL_PROGRAM_PIPELINE #define GL_PROGRAM_PIPELINE 0x82E4 #endif #ifndef GL_PROGRAM_PIPELINE_BINDING #define GL_PROGRAM_PIPELINE_BINDING 0x825A #endif #ifndef GL_PROGRAM_PIPELINE_OBJECT_EXT #define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F #endif #ifndef GL_PROGRAM_POINT_SIZE #define GL_PROGRAM_POINT_SIZE 0x8642 #endif #ifndef GL_PROGRAM_POINT_SIZE_ARB #define GL_PROGRAM_POINT_SIZE_ARB 0x8642 #endif #ifndef GL_PROGRAM_POINT_SIZE_EXT #define GL_PROGRAM_POINT_SIZE_EXT 0x8642 #endif #ifndef GL_PROGRAM_RESIDENT_NV #define GL_PROGRAM_RESIDENT_NV 0x8647 #endif #ifndef GL_PROGRAM_RESULT_COMPONENTS_NV #define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 #endif #ifndef GL_PROGRAM_SEPARABLE #define GL_PROGRAM_SEPARABLE 0x8258 #endif #ifndef GL_PROGRAM_STRING_ARB #define GL_PROGRAM_STRING_ARB 0x8628 #endif #ifndef GL_PROGRAM_STRING_NV #define GL_PROGRAM_STRING_NV 0x8628 #endif #ifndef GL_PROGRAM_TARGET_NV #define GL_PROGRAM_TARGET_NV 0x8646 #endif #ifndef GL_PROGRAM_TEMPORARIES_ARB #define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 #endif #ifndef GL_PROGRAM_TEX_INDIRECTIONS_ARB #define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 #endif #ifndef GL_PROGRAM_TEX_INSTRUCTIONS_ARB #define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 #endif #ifndef GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB #define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 #endif #ifndef GL_PROJECTION #define GL_PROJECTION 0x1701 #endif #ifndef GL_PROJECTION_MATRIX #define GL_PROJECTION_MATRIX 0x0BA7 #endif #ifndef GL_PROJECTION_STACK_DEPTH #define GL_PROJECTION_STACK_DEPTH 0x0BA4 #endif #ifndef GL_PROJECTIVE_2D_NV #define GL_PROJECTIVE_2D_NV 0x9093 #endif #ifndef GL_PROJECTIVE_3D_NV #define GL_PROJECTIVE_3D_NV 0x9095 #endif #ifndef GL_PROVOKING_VERTEX #define GL_PROVOKING_VERTEX 0x8E4F #endif #ifndef GL_PROVOKING_VERTEX_EXT #define GL_PROVOKING_VERTEX_EXT 0x8E4F #endif #ifndef GL_PROXY_COLOR_TABLE #define GL_PROXY_COLOR_TABLE 0x80D3 #endif #ifndef GL_PROXY_COLOR_TABLE_SGI #define GL_PROXY_COLOR_TABLE_SGI 0x80D3 #endif #ifndef GL_PROXY_HISTOGRAM #define GL_PROXY_HISTOGRAM 0x8025 #endif #ifndef GL_PROXY_HISTOGRAM_EXT #define GL_PROXY_HISTOGRAM_EXT 0x8025 #endif #ifndef GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE #define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 #endif #ifndef GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI #define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 #endif #ifndef GL_PROXY_POST_CONVOLUTION_COLOR_TABLE #define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 #endif #ifndef GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI #define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 #endif #ifndef GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP #define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 #endif #ifndef GL_PROXY_TEXTURE_1D #define GL_PROXY_TEXTURE_1D 0x8063 #endif #ifndef GL_PROXY_TEXTURE_1D_ARRAY #define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 #endif #ifndef GL_PROXY_TEXTURE_1D_ARRAY_EXT #define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 #endif #ifndef GL_PROXY_TEXTURE_1D_EXT #define GL_PROXY_TEXTURE_1D_EXT 0x8063 #endif #ifndef GL_PROXY_TEXTURE_1D_STACK_MESAX #define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B #endif #ifndef GL_PROXY_TEXTURE_2D #define GL_PROXY_TEXTURE_2D 0x8064 #endif #ifndef GL_PROXY_TEXTURE_2D_ARRAY #define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B #endif #ifndef GL_PROXY_TEXTURE_2D_ARRAY_EXT #define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B #endif #ifndef GL_PROXY_TEXTURE_2D_EXT #define GL_PROXY_TEXTURE_2D_EXT 0x8064 #endif #ifndef GL_PROXY_TEXTURE_2D_MULTISAMPLE #define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 #endif #ifndef GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY #define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 #endif #ifndef GL_PROXY_TEXTURE_2D_STACK_MESAX #define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C #endif #ifndef GL_PROXY_TEXTURE_3D #define GL_PROXY_TEXTURE_3D 0x8070 #endif #ifndef GL_PROXY_TEXTURE_3D_EXT #define GL_PROXY_TEXTURE_3D_EXT 0x8070 #endif #ifndef GL_PROXY_TEXTURE_4D_SGIS #define GL_PROXY_TEXTURE_4D_SGIS 0x8135 #endif #ifndef GL_PROXY_TEXTURE_COLOR_TABLE_SGI #define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD #endif #ifndef GL_PROXY_TEXTURE_CUBE_MAP #define GL_PROXY_TEXTURE_CUBE_MAP 0x851B #endif #ifndef GL_PROXY_TEXTURE_CUBE_MAP_ARB #define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B #endif #ifndef GL_PROXY_TEXTURE_CUBE_MAP_ARRAY #define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B #endif #ifndef GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB #define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B #endif #ifndef GL_PROXY_TEXTURE_CUBE_MAP_EXT #define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B #endif #ifndef GL_PROXY_TEXTURE_RECTANGLE #define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 #endif #ifndef GL_PROXY_TEXTURE_RECTANGLE_ARB #define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 #endif #ifndef GL_PROXY_TEXTURE_RECTANGLE_NV #define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 #endif #ifndef GL_PURGEABLE_APPLE #define GL_PURGEABLE_APPLE 0x8A1D #endif #ifndef GL_Q #define GL_Q 0x2003 #endif #ifndef GL_QUADRATIC_ATTENUATION #define GL_QUADRATIC_ATTENUATION 0x1209 #endif #ifndef GL_QUADRATIC_CURVE_TO_NV #define GL_QUADRATIC_CURVE_TO_NV 0x0A #endif #ifndef GL_QUADS #define GL_QUADS 0x0007 #endif #ifndef GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION #define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C #endif #ifndef GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT #define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C #endif #ifndef GL_QUAD_ALPHA4_SGIS #define GL_QUAD_ALPHA4_SGIS 0x811E #endif #ifndef GL_QUAD_ALPHA8_SGIS #define GL_QUAD_ALPHA8_SGIS 0x811F #endif #ifndef GL_QUAD_INTENSITY4_SGIS #define GL_QUAD_INTENSITY4_SGIS 0x8122 #endif #ifndef GL_QUAD_INTENSITY8_SGIS #define GL_QUAD_INTENSITY8_SGIS 0x8123 #endif #ifndef GL_QUAD_LUMINANCE4_SGIS #define GL_QUAD_LUMINANCE4_SGIS 0x8120 #endif #ifndef GL_QUAD_LUMINANCE8_SGIS #define GL_QUAD_LUMINANCE8_SGIS 0x8121 #endif #ifndef GL_QUAD_MESH_SUN #define GL_QUAD_MESH_SUN 0x8614 #endif #ifndef GL_QUAD_STRIP #define GL_QUAD_STRIP 0x0008 #endif #ifndef GL_QUAD_TEXTURE_SELECT_SGIS #define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 #endif #ifndef GL_QUARTER_BIT_ATI #define GL_QUARTER_BIT_ATI 0x00000010 #endif #ifndef GL_QUERY #define GL_QUERY 0x82E3 #endif #ifndef GL_QUERY_ALL_EVENT_BITS_AMD #define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF #endif #ifndef GL_QUERY_BUFFER #define GL_QUERY_BUFFER 0x9192 #endif #ifndef GL_QUERY_BUFFER_AMD #define GL_QUERY_BUFFER_AMD 0x9192 #endif #ifndef GL_QUERY_BUFFER_BARRIER_BIT #define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 #endif #ifndef GL_QUERY_BUFFER_BINDING #define GL_QUERY_BUFFER_BINDING 0x9193 #endif #ifndef GL_QUERY_BUFFER_BINDING_AMD #define GL_QUERY_BUFFER_BINDING_AMD 0x9193 #endif #ifndef GL_QUERY_BY_REGION_NO_WAIT #define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 #endif #ifndef GL_QUERY_BY_REGION_NO_WAIT_INVERTED #define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A #endif #ifndef GL_QUERY_BY_REGION_NO_WAIT_NV #define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 #endif #ifndef GL_QUERY_BY_REGION_WAIT #define GL_QUERY_BY_REGION_WAIT 0x8E15 #endif #ifndef GL_QUERY_BY_REGION_WAIT_INVERTED #define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19 #endif #ifndef GL_QUERY_BY_REGION_WAIT_NV #define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 #endif #ifndef GL_QUERY_COUNTER_BITS #define GL_QUERY_COUNTER_BITS 0x8864 #endif #ifndef GL_QUERY_COUNTER_BITS_ARB #define GL_QUERY_COUNTER_BITS_ARB 0x8864 #endif #ifndef GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD #define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008 #endif #ifndef GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD #define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002 #endif #ifndef GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD #define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001 #endif #ifndef GL_QUERY_NO_WAIT #define GL_QUERY_NO_WAIT 0x8E14 #endif #ifndef GL_QUERY_NO_WAIT_INVERTED #define GL_QUERY_NO_WAIT_INVERTED 0x8E18 #endif #ifndef GL_QUERY_NO_WAIT_NV #define GL_QUERY_NO_WAIT_NV 0x8E14 #endif #ifndef GL_QUERY_OBJECT_AMD #define GL_QUERY_OBJECT_AMD 0x9153 #endif #ifndef GL_QUERY_OBJECT_EXT #define GL_QUERY_OBJECT_EXT 0x9153 #endif #ifndef GL_QUERY_RESULT #define GL_QUERY_RESULT 0x8866 #endif #ifndef GL_QUERY_RESULT_ARB #define GL_QUERY_RESULT_ARB 0x8866 #endif #ifndef GL_QUERY_RESULT_AVAILABLE #define GL_QUERY_RESULT_AVAILABLE 0x8867 #endif #ifndef GL_QUERY_RESULT_AVAILABLE_ARB #define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 #endif #ifndef GL_QUERY_RESULT_NO_WAIT #define GL_QUERY_RESULT_NO_WAIT 0x9194 #endif #ifndef GL_QUERY_RESULT_NO_WAIT_AMD #define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194 #endif #ifndef GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD #define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004 #endif #ifndef GL_QUERY_TARGET #define GL_QUERY_TARGET 0x82EA #endif #ifndef GL_QUERY_WAIT #define GL_QUERY_WAIT 0x8E13 #endif #ifndef GL_QUERY_WAIT_INVERTED #define GL_QUERY_WAIT_INVERTED 0x8E17 #endif #ifndef GL_QUERY_WAIT_NV #define GL_QUERY_WAIT_NV 0x8E13 #endif #ifndef GL_R #define GL_R 0x2002 #endif #ifndef GL_R11F_G11F_B10F #define GL_R11F_G11F_B10F 0x8C3A #endif #ifndef GL_R11F_G11F_B10F_EXT #define GL_R11F_G11F_B10F_EXT 0x8C3A #endif #ifndef GL_R16 #define GL_R16 0x822A #endif #ifndef GL_R16F #define GL_R16F 0x822D #endif #ifndef GL_R16I #define GL_R16I 0x8233 #endif #ifndef GL_R16UI #define GL_R16UI 0x8234 #endif #ifndef GL_R16_SNORM #define GL_R16_SNORM 0x8F98 #endif #ifndef GL_R1UI_C3F_V3F_SUN #define GL_R1UI_C3F_V3F_SUN 0x85C6 #endif #ifndef GL_R1UI_C4F_N3F_V3F_SUN #define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 #endif #ifndef GL_R1UI_C4UB_V3F_SUN #define GL_R1UI_C4UB_V3F_SUN 0x85C5 #endif #ifndef GL_R1UI_N3F_V3F_SUN #define GL_R1UI_N3F_V3F_SUN 0x85C7 #endif #ifndef GL_R1UI_T2F_C4F_N3F_V3F_SUN #define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB #endif #ifndef GL_R1UI_T2F_N3F_V3F_SUN #define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA #endif #ifndef GL_R1UI_T2F_V3F_SUN #define GL_R1UI_T2F_V3F_SUN 0x85C9 #endif #ifndef GL_R1UI_V3F_SUN #define GL_R1UI_V3F_SUN 0x85C4 #endif #ifndef GL_R32F #define GL_R32F 0x822E #endif #ifndef GL_R32I #define GL_R32I 0x8235 #endif #ifndef GL_R32UI #define GL_R32UI 0x8236 #endif #ifndef GL_R3_G3_B2 #define GL_R3_G3_B2 0x2A10 #endif #ifndef GL_R8 #define GL_R8 0x8229 #endif #ifndef GL_R8I #define GL_R8I 0x8231 #endif #ifndef GL_R8UI #define GL_R8UI 0x8232 #endif #ifndef GL_R8_SNORM #define GL_R8_SNORM 0x8F94 #endif #ifndef GL_RASTERIZER_DISCARD #define GL_RASTERIZER_DISCARD 0x8C89 #endif #ifndef GL_RASTERIZER_DISCARD_EXT #define GL_RASTERIZER_DISCARD_EXT 0x8C89 #endif #ifndef GL_RASTERIZER_DISCARD_NV #define GL_RASTERIZER_DISCARD_NV 0x8C89 #endif #ifndef GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT #define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A #endif #ifndef GL_RASTER_MULTISAMPLE_EXT #define GL_RASTER_MULTISAMPLE_EXT 0x9327 #endif #ifndef GL_RASTER_POSITION_UNCLIPPED_IBM #define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 #endif #ifndef GL_RASTER_SAMPLES_EXT #define GL_RASTER_SAMPLES_EXT 0x9328 #endif #ifndef GL_READ_BUFFER #define GL_READ_BUFFER 0x0C02 #endif #ifndef GL_READ_FRAMEBUFFER #define GL_READ_FRAMEBUFFER 0x8CA8 #endif #ifndef GL_READ_FRAMEBUFFER_BINDING #define GL_READ_FRAMEBUFFER_BINDING 0x8CAA #endif #ifndef GL_READ_FRAMEBUFFER_BINDING_EXT #define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA #endif #ifndef GL_READ_FRAMEBUFFER_EXT #define GL_READ_FRAMEBUFFER_EXT 0x8CA8 #endif #ifndef GL_READ_ONLY #define GL_READ_ONLY 0x88B8 #endif #ifndef GL_READ_ONLY_ARB #define GL_READ_ONLY_ARB 0x88B8 #endif #ifndef GL_READ_PIXELS #define GL_READ_PIXELS 0x828C #endif #ifndef GL_READ_PIXELS_FORMAT #define GL_READ_PIXELS_FORMAT 0x828D #endif #ifndef GL_READ_PIXELS_TYPE #define GL_READ_PIXELS_TYPE 0x828E #endif #ifndef GL_READ_PIXEL_DATA_RANGE_LENGTH_NV #define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B #endif #ifndef GL_READ_PIXEL_DATA_RANGE_NV #define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 #endif #ifndef GL_READ_PIXEL_DATA_RANGE_POINTER_NV #define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D #endif #ifndef GL_READ_WRITE #define GL_READ_WRITE 0x88BA #endif #ifndef GL_READ_WRITE_ARB #define GL_READ_WRITE_ARB 0x88BA #endif #ifndef GL_RECLAIM_MEMORY_HINT_PGI #define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE #endif #ifndef GL_RECT_NV #define GL_RECT_NV 0xF6 #endif #ifndef GL_RED #define GL_RED 0x1903 #endif #ifndef GL_REDUCE #define GL_REDUCE 0x8016 #endif #ifndef GL_REDUCE_EXT #define GL_REDUCE_EXT 0x8016 #endif #ifndef GL_RED_BIAS #define GL_RED_BIAS 0x0D15 #endif #ifndef GL_RED_BITS #define GL_RED_BITS 0x0D52 #endif #ifndef GL_RED_BIT_ATI #define GL_RED_BIT_ATI 0x00000001 #endif #ifndef GL_RED_INTEGER #define GL_RED_INTEGER 0x8D94 #endif #ifndef GL_RED_INTEGER_EXT #define GL_RED_INTEGER_EXT 0x8D94 #endif #ifndef GL_RED_MAX_CLAMP_INGR #define GL_RED_MAX_CLAMP_INGR 0x8564 #endif #ifndef GL_RED_MIN_CLAMP_INGR #define GL_RED_MIN_CLAMP_INGR 0x8560 #endif #ifndef GL_RED_NV #define GL_RED_NV 0x1903 #endif #ifndef GL_RED_SCALE #define GL_RED_SCALE 0x0D14 #endif #ifndef GL_RED_SNORM #define GL_RED_SNORM 0x8F90 #endif #ifndef GL_REFERENCED_BY_COMPUTE_SHADER #define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B #endif #ifndef GL_REFERENCED_BY_FRAGMENT_SHADER #define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A #endif #ifndef GL_REFERENCED_BY_GEOMETRY_SHADER #define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 #endif #ifndef GL_REFERENCED_BY_TESS_CONTROL_SHADER #define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 #endif #ifndef GL_REFERENCED_BY_TESS_EVALUATION_SHADER #define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 #endif #ifndef GL_REFERENCED_BY_VERTEX_SHADER #define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 #endif #ifndef GL_REFERENCE_PLANE_EQUATION_SGIX #define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E #endif #ifndef GL_REFERENCE_PLANE_SGIX #define GL_REFERENCE_PLANE_SGIX 0x817D #endif #ifndef GL_REFLECTION_MAP #define GL_REFLECTION_MAP 0x8512 #endif #ifndef GL_REFLECTION_MAP_ARB #define GL_REFLECTION_MAP_ARB 0x8512 #endif #ifndef GL_REFLECTION_MAP_EXT #define GL_REFLECTION_MAP_EXT 0x8512 #endif #ifndef GL_REFLECTION_MAP_NV #define GL_REFLECTION_MAP_NV 0x8512 #endif #ifndef GL_REGISTER_COMBINERS_NV #define GL_REGISTER_COMBINERS_NV 0x8522 #endif #ifndef GL_REG_0_ATI #define GL_REG_0_ATI 0x8921 #endif #ifndef GL_REG_10_ATI #define GL_REG_10_ATI 0x892B #endif #ifndef GL_REG_11_ATI #define GL_REG_11_ATI 0x892C #endif #ifndef GL_REG_12_ATI #define GL_REG_12_ATI 0x892D #endif #ifndef GL_REG_13_ATI #define GL_REG_13_ATI 0x892E #endif #ifndef GL_REG_14_ATI #define GL_REG_14_ATI 0x892F #endif #ifndef GL_REG_15_ATI #define GL_REG_15_ATI 0x8930 #endif #ifndef GL_REG_16_ATI #define GL_REG_16_ATI 0x8931 #endif #ifndef GL_REG_17_ATI #define GL_REG_17_ATI 0x8932 #endif #ifndef GL_REG_18_ATI #define GL_REG_18_ATI 0x8933 #endif #ifndef GL_REG_19_ATI #define GL_REG_19_ATI 0x8934 #endif #ifndef GL_REG_1_ATI #define GL_REG_1_ATI 0x8922 #endif #ifndef GL_REG_20_ATI #define GL_REG_20_ATI 0x8935 #endif #ifndef GL_REG_21_ATI #define GL_REG_21_ATI 0x8936 #endif #ifndef GL_REG_22_ATI #define GL_REG_22_ATI 0x8937 #endif #ifndef GL_REG_23_ATI #define GL_REG_23_ATI 0x8938 #endif #ifndef GL_REG_24_ATI #define GL_REG_24_ATI 0x8939 #endif #ifndef GL_REG_25_ATI #define GL_REG_25_ATI 0x893A #endif #ifndef GL_REG_26_ATI #define GL_REG_26_ATI 0x893B #endif #ifndef GL_REG_27_ATI #define GL_REG_27_ATI 0x893C #endif #ifndef GL_REG_28_ATI #define GL_REG_28_ATI 0x893D #endif #ifndef GL_REG_29_ATI #define GL_REG_29_ATI 0x893E #endif #ifndef GL_REG_2_ATI #define GL_REG_2_ATI 0x8923 #endif #ifndef GL_REG_30_ATI #define GL_REG_30_ATI 0x893F #endif #ifndef GL_REG_31_ATI #define GL_REG_31_ATI 0x8940 #endif #ifndef GL_REG_3_ATI #define GL_REG_3_ATI 0x8924 #endif #ifndef GL_REG_4_ATI #define GL_REG_4_ATI 0x8925 #endif #ifndef GL_REG_5_ATI #define GL_REG_5_ATI 0x8926 #endif #ifndef GL_REG_6_ATI #define GL_REG_6_ATI 0x8927 #endif #ifndef GL_REG_7_ATI #define GL_REG_7_ATI 0x8928 #endif #ifndef GL_REG_8_ATI #define GL_REG_8_ATI 0x8929 #endif #ifndef GL_REG_9_ATI #define GL_REG_9_ATI 0x892A #endif #ifndef GL_RELATIVE_ARC_TO_NV #define GL_RELATIVE_ARC_TO_NV 0xFF #endif #ifndef GL_RELATIVE_CONIC_CURVE_TO_NV #define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B #endif #ifndef GL_RELATIVE_CUBIC_CURVE_TO_NV #define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D #endif #ifndef GL_RELATIVE_HORIZONTAL_LINE_TO_NV #define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 #endif #ifndef GL_RELATIVE_LARGE_CCW_ARC_TO_NV #define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 #endif #ifndef GL_RELATIVE_LARGE_CW_ARC_TO_NV #define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 #endif #ifndef GL_RELATIVE_LINE_TO_NV #define GL_RELATIVE_LINE_TO_NV 0x05 #endif #ifndef GL_RELATIVE_MOVE_TO_NV #define GL_RELATIVE_MOVE_TO_NV 0x03 #endif #ifndef GL_RELATIVE_QUADRATIC_CURVE_TO_NV #define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B #endif #ifndef GL_RELATIVE_RECT_NV #define GL_RELATIVE_RECT_NV 0xF7 #endif #ifndef GL_RELATIVE_ROUNDED_RECT2_NV #define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB #endif #ifndef GL_RELATIVE_ROUNDED_RECT4_NV #define GL_RELATIVE_ROUNDED_RECT4_NV 0xED #endif #ifndef GL_RELATIVE_ROUNDED_RECT8_NV #define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF #endif #ifndef GL_RELATIVE_ROUNDED_RECT_NV #define GL_RELATIVE_ROUNDED_RECT_NV 0xE9 #endif #ifndef GL_RELATIVE_SMALL_CCW_ARC_TO_NV #define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 #endif #ifndef GL_RELATIVE_SMALL_CW_ARC_TO_NV #define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 #endif #ifndef GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV #define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 #endif #ifndef GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV #define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F #endif #ifndef GL_RELATIVE_VERTICAL_LINE_TO_NV #define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 #endif #ifndef GL_RELEASED_APPLE #define GL_RELEASED_APPLE 0x8A19 #endif #ifndef GL_RENDER #define GL_RENDER 0x1C00 #endif #ifndef GL_RENDERBUFFER #define GL_RENDERBUFFER 0x8D41 #endif #ifndef GL_RENDERBUFFER_ALPHA_SIZE #define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 #endif #ifndef GL_RENDERBUFFER_ALPHA_SIZE_EXT #define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 #endif #ifndef GL_RENDERBUFFER_BINDING #define GL_RENDERBUFFER_BINDING 0x8CA7 #endif #ifndef GL_RENDERBUFFER_BINDING_EXT #define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 #endif #ifndef GL_RENDERBUFFER_BLUE_SIZE #define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 #endif #ifndef GL_RENDERBUFFER_BLUE_SIZE_EXT #define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 #endif #ifndef GL_RENDERBUFFER_COLOR_SAMPLES_NV #define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 #endif #ifndef GL_RENDERBUFFER_COVERAGE_SAMPLES_NV #define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB #endif #ifndef GL_RENDERBUFFER_DEPTH_SIZE #define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 #endif #ifndef GL_RENDERBUFFER_DEPTH_SIZE_EXT #define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 #endif #ifndef GL_RENDERBUFFER_EXT #define GL_RENDERBUFFER_EXT 0x8D41 #endif #ifndef GL_RENDERBUFFER_FREE_MEMORY_ATI #define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD #endif #ifndef GL_RENDERBUFFER_GREEN_SIZE #define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 #endif #ifndef GL_RENDERBUFFER_GREEN_SIZE_EXT #define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 #endif #ifndef GL_RENDERBUFFER_HEIGHT #define GL_RENDERBUFFER_HEIGHT 0x8D43 #endif #ifndef GL_RENDERBUFFER_HEIGHT_EXT #define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 #endif #ifndef GL_RENDERBUFFER_INTERNAL_FORMAT #define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 #endif #ifndef GL_RENDERBUFFER_INTERNAL_FORMAT_EXT #define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 #endif #ifndef GL_RENDERBUFFER_RED_SIZE #define GL_RENDERBUFFER_RED_SIZE 0x8D50 #endif #ifndef GL_RENDERBUFFER_RED_SIZE_EXT #define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 #endif #ifndef GL_RENDERBUFFER_SAMPLES #define GL_RENDERBUFFER_SAMPLES 0x8CAB #endif #ifndef GL_RENDERBUFFER_SAMPLES_EXT #define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB #endif #ifndef GL_RENDERBUFFER_STENCIL_SIZE #define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 #endif #ifndef GL_RENDERBUFFER_STENCIL_SIZE_EXT #define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 #endif #ifndef GL_RENDERBUFFER_WIDTH #define GL_RENDERBUFFER_WIDTH 0x8D42 #endif #ifndef GL_RENDERBUFFER_WIDTH_EXT #define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 #endif #ifndef GL_RENDERER #define GL_RENDERER 0x1F01 #endif #ifndef GL_RENDER_MODE #define GL_RENDER_MODE 0x0C40 #endif #ifndef GL_REPEAT #define GL_REPEAT 0x2901 #endif #ifndef GL_REPLACE #define GL_REPLACE 0x1E01 #endif #ifndef GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN #define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 #endif #ifndef GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN #define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 #endif #ifndef GL_REPLACEMENT_CODE_ARRAY_SUN #define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 #endif #ifndef GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN #define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 #endif #ifndef GL_REPLACEMENT_CODE_SUN #define GL_REPLACEMENT_CODE_SUN 0x81D8 #endif #ifndef GL_REPLACE_EXT #define GL_REPLACE_EXT 0x8062 #endif #ifndef GL_REPLACE_MIDDLE_SUN #define GL_REPLACE_MIDDLE_SUN 0x0002 #endif #ifndef GL_REPLACE_OLDEST_SUN #define GL_REPLACE_OLDEST_SUN 0x0003 #endif #ifndef GL_REPLACE_VALUE_AMD #define GL_REPLACE_VALUE_AMD 0x874B #endif #ifndef GL_REPLICATE_BORDER #define GL_REPLICATE_BORDER 0x8153 #endif #ifndef GL_REPLICATE_BORDER_HP #define GL_REPLICATE_BORDER_HP 0x8153 #endif #ifndef GL_RESAMPLE_AVERAGE_OML #define GL_RESAMPLE_AVERAGE_OML 0x8988 #endif #ifndef GL_RESAMPLE_DECIMATE_OML #define GL_RESAMPLE_DECIMATE_OML 0x8989 #endif #ifndef GL_RESAMPLE_DECIMATE_SGIX #define GL_RESAMPLE_DECIMATE_SGIX 0x8430 #endif #ifndef GL_RESAMPLE_REPLICATE_OML #define GL_RESAMPLE_REPLICATE_OML 0x8986 #endif #ifndef GL_RESAMPLE_REPLICATE_SGIX #define GL_RESAMPLE_REPLICATE_SGIX 0x842E #endif #ifndef GL_RESAMPLE_ZERO_FILL_OML #define GL_RESAMPLE_ZERO_FILL_OML 0x8987 #endif #ifndef GL_RESAMPLE_ZERO_FILL_SGIX #define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F #endif #ifndef GL_RESCALE_NORMAL #define GL_RESCALE_NORMAL 0x803A #endif #ifndef GL_RESCALE_NORMAL_EXT #define GL_RESCALE_NORMAL_EXT 0x803A #endif #ifndef GL_RESET_NOTIFICATION_STRATEGY #define GL_RESET_NOTIFICATION_STRATEGY 0x8256 #endif #ifndef GL_RESET_NOTIFICATION_STRATEGY_ARB #define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 #endif #ifndef GL_RESTART_PATH_NV #define GL_RESTART_PATH_NV 0xF0 #endif #ifndef GL_RESTART_SUN #define GL_RESTART_SUN 0x0001 #endif #ifndef GL_RETAINED_APPLE #define GL_RETAINED_APPLE 0x8A1B #endif #ifndef GL_RETURN #define GL_RETURN 0x0102 #endif #ifndef GL_RG #define GL_RG 0x8227 #endif #ifndef GL_RG16 #define GL_RG16 0x822C #endif #ifndef GL_RG16F #define GL_RG16F 0x822F #endif #ifndef GL_RG16I #define GL_RG16I 0x8239 #endif #ifndef GL_RG16UI #define GL_RG16UI 0x823A #endif #ifndef GL_RG16_SNORM #define GL_RG16_SNORM 0x8F99 #endif #ifndef GL_RG32F #define GL_RG32F 0x8230 #endif #ifndef GL_RG32I #define GL_RG32I 0x823B #endif #ifndef GL_RG32UI #define GL_RG32UI 0x823C #endif #ifndef GL_RG8 #define GL_RG8 0x822B #endif #ifndef GL_RG8I #define GL_RG8I 0x8237 #endif #ifndef GL_RG8UI #define GL_RG8UI 0x8238 #endif #ifndef GL_RG8_SNORM #define GL_RG8_SNORM 0x8F95 #endif #ifndef GL_RGB #define GL_RGB 0x1907 #endif #ifndef GL_RGB10 #define GL_RGB10 0x8052 #endif #ifndef GL_RGB10_A2 #define GL_RGB10_A2 0x8059 #endif #ifndef GL_RGB10_A2UI #define GL_RGB10_A2UI 0x906F #endif #ifndef GL_RGB10_A2_EXT #define GL_RGB10_A2_EXT 0x8059 #endif #ifndef GL_RGB10_EXT #define GL_RGB10_EXT 0x8052 #endif #ifndef GL_RGB12 #define GL_RGB12 0x8053 #endif #ifndef GL_RGB12_EXT #define GL_RGB12_EXT 0x8053 #endif #ifndef GL_RGB16 #define GL_RGB16 0x8054 #endif #ifndef GL_RGB16F #define GL_RGB16F 0x881B #endif #ifndef GL_RGB16F_ARB #define GL_RGB16F_ARB 0x881B #endif #ifndef GL_RGB16I #define GL_RGB16I 0x8D89 #endif #ifndef GL_RGB16I_EXT #define GL_RGB16I_EXT 0x8D89 #endif #ifndef GL_RGB16UI #define GL_RGB16UI 0x8D77 #endif #ifndef GL_RGB16UI_EXT #define GL_RGB16UI_EXT 0x8D77 #endif #ifndef GL_RGB16_EXT #define GL_RGB16_EXT 0x8054 #endif #ifndef GL_RGB16_SNORM #define GL_RGB16_SNORM 0x8F9A #endif #ifndef GL_RGB2_EXT #define GL_RGB2_EXT 0x804E #endif #ifndef GL_RGB32F #define GL_RGB32F 0x8815 #endif #ifndef GL_RGB32F_ARB #define GL_RGB32F_ARB 0x8815 #endif #ifndef GL_RGB32I #define GL_RGB32I 0x8D83 #endif #ifndef GL_RGB32I_EXT #define GL_RGB32I_EXT 0x8D83 #endif #ifndef GL_RGB32UI #define GL_RGB32UI 0x8D71 #endif #ifndef GL_RGB32UI_EXT #define GL_RGB32UI_EXT 0x8D71 #endif #ifndef GL_RGB4 #define GL_RGB4 0x804F #endif #ifndef GL_RGB4_EXT #define GL_RGB4_EXT 0x804F #endif #ifndef GL_RGB4_S3TC #define GL_RGB4_S3TC 0x83A1 #endif #ifndef GL_RGB5 #define GL_RGB5 0x8050 #endif #ifndef GL_RGB565 #define GL_RGB565 0x8D62 #endif #ifndef GL_RGB5_A1 #define GL_RGB5_A1 0x8057 #endif #ifndef GL_RGB5_A1_EXT #define GL_RGB5_A1_EXT 0x8057 #endif #ifndef GL_RGB5_EXT #define GL_RGB5_EXT 0x8050 #endif #ifndef GL_RGB8 #define GL_RGB8 0x8051 #endif #ifndef GL_RGB8I #define GL_RGB8I 0x8D8F #endif #ifndef GL_RGB8I_EXT #define GL_RGB8I_EXT 0x8D8F #endif #ifndef GL_RGB8UI #define GL_RGB8UI 0x8D7D #endif #ifndef GL_RGB8UI_EXT #define GL_RGB8UI_EXT 0x8D7D #endif #ifndef GL_RGB8_EXT #define GL_RGB8_EXT 0x8051 #endif #ifndef GL_RGB8_SNORM #define GL_RGB8_SNORM 0x8F96 #endif #ifndef GL_RGB9_E5 #define GL_RGB9_E5 0x8C3D #endif #ifndef GL_RGB9_E5_EXT #define GL_RGB9_E5_EXT 0x8C3D #endif #ifndef GL_RGBA #define GL_RGBA 0x1908 #endif #ifndef GL_RGBA12 #define GL_RGBA12 0x805A #endif #ifndef GL_RGBA12_EXT #define GL_RGBA12_EXT 0x805A #endif #ifndef GL_RGBA16 #define GL_RGBA16 0x805B #endif #ifndef GL_RGBA16F #define GL_RGBA16F 0x881A #endif #ifndef GL_RGBA16F_ARB #define GL_RGBA16F_ARB 0x881A #endif #ifndef GL_RGBA16I #define GL_RGBA16I 0x8D88 #endif #ifndef GL_RGBA16I_EXT #define GL_RGBA16I_EXT 0x8D88 #endif #ifndef GL_RGBA16UI #define GL_RGBA16UI 0x8D76 #endif #ifndef GL_RGBA16UI_EXT #define GL_RGBA16UI_EXT 0x8D76 #endif #ifndef GL_RGBA16_EXT #define GL_RGBA16_EXT 0x805B #endif #ifndef GL_RGBA16_SNORM #define GL_RGBA16_SNORM 0x8F9B #endif #ifndef GL_RGBA2 #define GL_RGBA2 0x8055 #endif #ifndef GL_RGBA2_EXT #define GL_RGBA2_EXT 0x8055 #endif #ifndef GL_RGBA32F #define GL_RGBA32F 0x8814 #endif #ifndef GL_RGBA32F_ARB #define GL_RGBA32F_ARB 0x8814 #endif #ifndef GL_RGBA32I #define GL_RGBA32I 0x8D82 #endif #ifndef GL_RGBA32I_EXT #define GL_RGBA32I_EXT 0x8D82 #endif #ifndef GL_RGBA32UI #define GL_RGBA32UI 0x8D70 #endif #ifndef GL_RGBA32UI_EXT #define GL_RGBA32UI_EXT 0x8D70 #endif #ifndef GL_RGBA4 #define GL_RGBA4 0x8056 #endif #ifndef GL_RGBA4_DXT5_S3TC #define GL_RGBA4_DXT5_S3TC 0x83A5 #endif #ifndef GL_RGBA4_EXT #define GL_RGBA4_EXT 0x8056 #endif #ifndef GL_RGBA4_S3TC #define GL_RGBA4_S3TC 0x83A3 #endif #ifndef GL_RGBA8 #define GL_RGBA8 0x8058 #endif #ifndef GL_RGBA8I #define GL_RGBA8I 0x8D8E #endif #ifndef GL_RGBA8I_EXT #define GL_RGBA8I_EXT 0x8D8E #endif #ifndef GL_RGBA8UI #define GL_RGBA8UI 0x8D7C #endif #ifndef GL_RGBA8UI_EXT #define GL_RGBA8UI_EXT 0x8D7C #endif #ifndef GL_RGBA8_EXT #define GL_RGBA8_EXT 0x8058 #endif #ifndef GL_RGBA8_SNORM #define GL_RGBA8_SNORM 0x8F97 #endif #ifndef GL_RGBA_DXT5_S3TC #define GL_RGBA_DXT5_S3TC 0x83A4 #endif #ifndef GL_RGBA_FLOAT16_APPLE #define GL_RGBA_FLOAT16_APPLE 0x881A #endif #ifndef GL_RGBA_FLOAT16_ATI #define GL_RGBA_FLOAT16_ATI 0x881A #endif #ifndef GL_RGBA_FLOAT32_APPLE #define GL_RGBA_FLOAT32_APPLE 0x8814 #endif #ifndef GL_RGBA_FLOAT32_ATI #define GL_RGBA_FLOAT32_ATI 0x8814 #endif #ifndef GL_RGBA_FLOAT_MODE_ARB #define GL_RGBA_FLOAT_MODE_ARB 0x8820 #endif #ifndef GL_RGBA_FLOAT_MODE_ATI #define GL_RGBA_FLOAT_MODE_ATI 0x8820 #endif #ifndef GL_RGBA_INTEGER #define GL_RGBA_INTEGER 0x8D99 #endif #ifndef GL_RGBA_INTEGER_EXT #define GL_RGBA_INTEGER_EXT 0x8D99 #endif #ifndef GL_RGBA_INTEGER_MODE_EXT #define GL_RGBA_INTEGER_MODE_EXT 0x8D9E #endif #ifndef GL_RGBA_MODE #define GL_RGBA_MODE 0x0C31 #endif #ifndef GL_RGBA_S3TC #define GL_RGBA_S3TC 0x83A2 #endif #ifndef GL_RGBA_SIGNED_COMPONENTS_EXT #define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C #endif #ifndef GL_RGBA_SNORM #define GL_RGBA_SNORM 0x8F93 #endif #ifndef GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV #define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 #endif #ifndef GL_RGB_422_APPLE #define GL_RGB_422_APPLE 0x8A1F #endif #ifndef GL_RGB_FLOAT16_APPLE #define GL_RGB_FLOAT16_APPLE 0x881B #endif #ifndef GL_RGB_FLOAT16_ATI #define GL_RGB_FLOAT16_ATI 0x881B #endif #ifndef GL_RGB_FLOAT32_APPLE #define GL_RGB_FLOAT32_APPLE 0x8815 #endif #ifndef GL_RGB_FLOAT32_ATI #define GL_RGB_FLOAT32_ATI 0x8815 #endif #ifndef GL_RGB_INTEGER #define GL_RGB_INTEGER 0x8D98 #endif #ifndef GL_RGB_INTEGER_EXT #define GL_RGB_INTEGER_EXT 0x8D98 #endif #ifndef GL_RGB_RAW_422_APPLE #define GL_RGB_RAW_422_APPLE 0x8A51 #endif #ifndef GL_RGB_S3TC #define GL_RGB_S3TC 0x83A0 #endif #ifndef GL_RGB_SCALE #define GL_RGB_SCALE 0x8573 #endif #ifndef GL_RGB_SCALE_ARB #define GL_RGB_SCALE_ARB 0x8573 #endif #ifndef GL_RGB_SCALE_EXT #define GL_RGB_SCALE_EXT 0x8573 #endif #ifndef GL_RGB_SNORM #define GL_RGB_SNORM 0x8F92 #endif #ifndef GL_RG_INTEGER #define GL_RG_INTEGER 0x8228 #endif #ifndef GL_RG_SNORM #define GL_RG_SNORM 0x8F91 #endif #ifndef GL_RIGHT #define GL_RIGHT 0x0407 #endif #ifndef GL_ROUNDED_RECT2_NV #define GL_ROUNDED_RECT2_NV 0xEA #endif #ifndef GL_ROUNDED_RECT4_NV #define GL_ROUNDED_RECT4_NV 0xEC #endif #ifndef GL_ROUNDED_RECT8_NV #define GL_ROUNDED_RECT8_NV 0xEE #endif #ifndef GL_ROUNDED_RECT_NV #define GL_ROUNDED_RECT_NV 0xE8 #endif #ifndef GL_ROUND_NV #define GL_ROUND_NV 0x90A4 #endif #ifndef GL_S #define GL_S 0x2000 #endif #ifndef GL_SAMPLER #define GL_SAMPLER 0x82E6 #endif #ifndef GL_SAMPLER_1D #define GL_SAMPLER_1D 0x8B5D #endif #ifndef GL_SAMPLER_1D_ARB #define GL_SAMPLER_1D_ARB 0x8B5D #endif #ifndef GL_SAMPLER_1D_ARRAY #define GL_SAMPLER_1D_ARRAY 0x8DC0 #endif #ifndef GL_SAMPLER_1D_ARRAY_EXT #define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 #endif #ifndef GL_SAMPLER_1D_ARRAY_SHADOW #define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 #endif #ifndef GL_SAMPLER_1D_ARRAY_SHADOW_EXT #define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 #endif #ifndef GL_SAMPLER_1D_SHADOW #define GL_SAMPLER_1D_SHADOW 0x8B61 #endif #ifndef GL_SAMPLER_1D_SHADOW_ARB #define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 #endif #ifndef GL_SAMPLER_2D #define GL_SAMPLER_2D 0x8B5E #endif #ifndef GL_SAMPLER_2D_ARB #define GL_SAMPLER_2D_ARB 0x8B5E #endif #ifndef GL_SAMPLER_2D_ARRAY #define GL_SAMPLER_2D_ARRAY 0x8DC1 #endif #ifndef GL_SAMPLER_2D_ARRAY_EXT #define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 #endif #ifndef GL_SAMPLER_2D_ARRAY_SHADOW #define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 #endif #ifndef GL_SAMPLER_2D_ARRAY_SHADOW_EXT #define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 #endif #ifndef GL_SAMPLER_2D_MULTISAMPLE #define GL_SAMPLER_2D_MULTISAMPLE 0x9108 #endif #ifndef GL_SAMPLER_2D_MULTISAMPLE_ARRAY #define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B #endif #ifndef GL_SAMPLER_2D_RECT #define GL_SAMPLER_2D_RECT 0x8B63 #endif #ifndef GL_SAMPLER_2D_RECT_ARB #define GL_SAMPLER_2D_RECT_ARB 0x8B63 #endif #ifndef GL_SAMPLER_2D_RECT_SHADOW #define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 #endif #ifndef GL_SAMPLER_2D_RECT_SHADOW_ARB #define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 #endif #ifndef GL_SAMPLER_2D_SHADOW #define GL_SAMPLER_2D_SHADOW 0x8B62 #endif #ifndef GL_SAMPLER_2D_SHADOW_ARB #define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 #endif #ifndef GL_SAMPLER_3D #define GL_SAMPLER_3D 0x8B5F #endif #ifndef GL_SAMPLER_3D_ARB #define GL_SAMPLER_3D_ARB 0x8B5F #endif #ifndef GL_SAMPLER_BINDING #define GL_SAMPLER_BINDING 0x8919 #endif #ifndef GL_SAMPLER_BUFFER #define GL_SAMPLER_BUFFER 0x8DC2 #endif #ifndef GL_SAMPLER_BUFFER_AMD #define GL_SAMPLER_BUFFER_AMD 0x9001 #endif #ifndef GL_SAMPLER_BUFFER_EXT #define GL_SAMPLER_BUFFER_EXT 0x8DC2 #endif #ifndef GL_SAMPLER_CUBE #define GL_SAMPLER_CUBE 0x8B60 #endif #ifndef GL_SAMPLER_CUBE_ARB #define GL_SAMPLER_CUBE_ARB 0x8B60 #endif #ifndef GL_SAMPLER_CUBE_MAP_ARRAY #define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C #endif #ifndef GL_SAMPLER_CUBE_MAP_ARRAY_ARB #define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C #endif #ifndef GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW #define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D #endif #ifndef GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB #define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D #endif #ifndef GL_SAMPLER_CUBE_SHADOW #define GL_SAMPLER_CUBE_SHADOW 0x8DC5 #endif #ifndef GL_SAMPLER_CUBE_SHADOW_EXT #define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 #endif #ifndef GL_SAMPLER_OBJECT_AMD #define GL_SAMPLER_OBJECT_AMD 0x9155 #endif #ifndef GL_SAMPLER_RENDERBUFFER_NV #define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 #endif #ifndef GL_SAMPLES #define GL_SAMPLES 0x80A9 #endif #ifndef GL_SAMPLES_3DFX #define GL_SAMPLES_3DFX 0x86B4 #endif #ifndef GL_SAMPLES_ARB #define GL_SAMPLES_ARB 0x80A9 #endif #ifndef GL_SAMPLES_EXT #define GL_SAMPLES_EXT 0x80A9 #endif #ifndef GL_SAMPLES_PASSED #define GL_SAMPLES_PASSED 0x8914 #endif #ifndef GL_SAMPLES_PASSED_ARB #define GL_SAMPLES_PASSED_ARB 0x8914 #endif #ifndef GL_SAMPLES_SGIS #define GL_SAMPLES_SGIS 0x80A9 #endif #ifndef GL_SAMPLE_ALPHA_TO_COVERAGE #define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E #endif #ifndef GL_SAMPLE_ALPHA_TO_COVERAGE_ARB #define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E #endif #ifndef GL_SAMPLE_ALPHA_TO_MASK_EXT #define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E #endif #ifndef GL_SAMPLE_ALPHA_TO_MASK_SGIS #define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E #endif #ifndef GL_SAMPLE_ALPHA_TO_ONE #define GL_SAMPLE_ALPHA_TO_ONE 0x809F #endif #ifndef GL_SAMPLE_ALPHA_TO_ONE_ARB #define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F #endif #ifndef GL_SAMPLE_ALPHA_TO_ONE_EXT #define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F #endif #ifndef GL_SAMPLE_ALPHA_TO_ONE_SGIS #define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F #endif #ifndef GL_SAMPLE_BUFFERS #define GL_SAMPLE_BUFFERS 0x80A8 #endif #ifndef GL_SAMPLE_BUFFERS_3DFX #define GL_SAMPLE_BUFFERS_3DFX 0x86B3 #endif #ifndef GL_SAMPLE_BUFFERS_ARB #define GL_SAMPLE_BUFFERS_ARB 0x80A8 #endif #ifndef GL_SAMPLE_BUFFERS_EXT #define GL_SAMPLE_BUFFERS_EXT 0x80A8 #endif #ifndef GL_SAMPLE_BUFFERS_SGIS #define GL_SAMPLE_BUFFERS_SGIS 0x80A8 #endif #ifndef GL_SAMPLE_COVERAGE #define GL_SAMPLE_COVERAGE 0x80A0 #endif #ifndef GL_SAMPLE_COVERAGE_ARB #define GL_SAMPLE_COVERAGE_ARB 0x80A0 #endif #ifndef GL_SAMPLE_COVERAGE_INVERT #define GL_SAMPLE_COVERAGE_INVERT 0x80AB #endif #ifndef GL_SAMPLE_COVERAGE_INVERT_ARB #define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB #endif #ifndef GL_SAMPLE_COVERAGE_VALUE #define GL_SAMPLE_COVERAGE_VALUE 0x80AA #endif #ifndef GL_SAMPLE_COVERAGE_VALUE_ARB #define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA #endif #ifndef GL_SAMPLE_LOCATION_NV #define GL_SAMPLE_LOCATION_NV 0x8E50 #endif #ifndef GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV #define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F #endif #ifndef GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV #define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E #endif #ifndef GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV #define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D #endif #ifndef GL_SAMPLE_MASK #define GL_SAMPLE_MASK 0x8E51 #endif #ifndef GL_SAMPLE_MASK_EXT #define GL_SAMPLE_MASK_EXT 0x80A0 #endif #ifndef GL_SAMPLE_MASK_INVERT_EXT #define GL_SAMPLE_MASK_INVERT_EXT 0x80AB #endif #ifndef GL_SAMPLE_MASK_INVERT_SGIS #define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB #endif #ifndef GL_SAMPLE_MASK_NV #define GL_SAMPLE_MASK_NV 0x8E51 #endif #ifndef GL_SAMPLE_MASK_SGIS #define GL_SAMPLE_MASK_SGIS 0x80A0 #endif #ifndef GL_SAMPLE_MASK_VALUE #define GL_SAMPLE_MASK_VALUE 0x8E52 #endif #ifndef GL_SAMPLE_MASK_VALUE_EXT #define GL_SAMPLE_MASK_VALUE_EXT 0x80AA #endif #ifndef GL_SAMPLE_MASK_VALUE_NV #define GL_SAMPLE_MASK_VALUE_NV 0x8E52 #endif #ifndef GL_SAMPLE_MASK_VALUE_SGIS #define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA #endif #ifndef GL_SAMPLE_PATTERN_EXT #define GL_SAMPLE_PATTERN_EXT 0x80AC #endif #ifndef GL_SAMPLE_PATTERN_SGIS #define GL_SAMPLE_PATTERN_SGIS 0x80AC #endif #ifndef GL_SAMPLE_POSITION #define GL_SAMPLE_POSITION 0x8E50 #endif #ifndef GL_SAMPLE_POSITION_NV #define GL_SAMPLE_POSITION_NV 0x8E50 #endif #ifndef GL_SAMPLE_SHADING #define GL_SAMPLE_SHADING 0x8C36 #endif #ifndef GL_SAMPLE_SHADING_ARB #define GL_SAMPLE_SHADING_ARB 0x8C36 #endif #ifndef GL_SATURATE_BIT_ATI #define GL_SATURATE_BIT_ATI 0x00000040 #endif #ifndef GL_SCALAR_EXT #define GL_SCALAR_EXT 0x87BE #endif #ifndef GL_SCALEBIAS_HINT_SGIX #define GL_SCALEBIAS_HINT_SGIX 0x8322 #endif #ifndef GL_SCALED_RESOLVE_FASTEST_EXT #define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA #endif #ifndef GL_SCALED_RESOLVE_NICEST_EXT #define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB #endif #ifndef GL_SCALE_BY_FOUR_NV #define GL_SCALE_BY_FOUR_NV 0x853F #endif #ifndef GL_SCALE_BY_ONE_HALF_NV #define GL_SCALE_BY_ONE_HALF_NV 0x8540 #endif #ifndef GL_SCALE_BY_TWO_NV #define GL_SCALE_BY_TWO_NV 0x853E #endif #ifndef GL_SCISSOR_BIT #define GL_SCISSOR_BIT 0x00080000 #endif #ifndef GL_SCISSOR_BOX #define GL_SCISSOR_BOX 0x0C10 #endif #ifndef GL_SCISSOR_COMMAND_NV #define GL_SCISSOR_COMMAND_NV 0x0011 #endif #ifndef GL_SCISSOR_TEST #define GL_SCISSOR_TEST 0x0C11 #endif #ifndef GL_SCREEN_COORDINATES_REND #define GL_SCREEN_COORDINATES_REND 0x8490 #endif #ifndef GL_SCREEN_KHR #define GL_SCREEN_KHR 0x9295 #endif #ifndef GL_SCREEN_NV #define GL_SCREEN_NV 0x9295 #endif #ifndef GL_SECONDARY_COLOR_ARRAY #define GL_SECONDARY_COLOR_ARRAY 0x845E #endif #ifndef GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV #define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 #endif #ifndef GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING #define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C #endif #ifndef GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB #define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C #endif #ifndef GL_SECONDARY_COLOR_ARRAY_EXT #define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E #endif #ifndef GL_SECONDARY_COLOR_ARRAY_LENGTH_NV #define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 #endif #ifndef GL_SECONDARY_COLOR_ARRAY_LIST_IBM #define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 #endif #ifndef GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM #define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 #endif #ifndef GL_SECONDARY_COLOR_ARRAY_POINTER #define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D #endif #ifndef GL_SECONDARY_COLOR_ARRAY_POINTER_EXT #define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D #endif #ifndef GL_SECONDARY_COLOR_ARRAY_SIZE #define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A #endif #ifndef GL_SECONDARY_COLOR_ARRAY_SIZE_EXT #define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A #endif #ifndef GL_SECONDARY_COLOR_ARRAY_STRIDE #define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C #endif #ifndef GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT #define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C #endif #ifndef GL_SECONDARY_COLOR_ARRAY_TYPE #define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B #endif #ifndef GL_SECONDARY_COLOR_ARRAY_TYPE_EXT #define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B #endif #ifndef GL_SECONDARY_COLOR_NV #define GL_SECONDARY_COLOR_NV 0x852D #endif #ifndef GL_SECONDARY_INTERPOLATOR_ATI #define GL_SECONDARY_INTERPOLATOR_ATI 0x896D #endif #ifndef GL_SELECT #define GL_SELECT 0x1C02 #endif #ifndef GL_SELECTION_BUFFER_POINTER #define GL_SELECTION_BUFFER_POINTER 0x0DF3 #endif #ifndef GL_SELECTION_BUFFER_SIZE #define GL_SELECTION_BUFFER_SIZE 0x0DF4 #endif #ifndef GL_SEPARABLE_2D #define GL_SEPARABLE_2D 0x8012 #endif #ifndef GL_SEPARABLE_2D_EXT #define GL_SEPARABLE_2D_EXT 0x8012 #endif #ifndef GL_SEPARATE_ATTRIBS #define GL_SEPARATE_ATTRIBS 0x8C8D #endif #ifndef GL_SEPARATE_ATTRIBS_EXT #define GL_SEPARATE_ATTRIBS_EXT 0x8C8D #endif #ifndef GL_SEPARATE_ATTRIBS_NV #define GL_SEPARATE_ATTRIBS_NV 0x8C8D #endif #ifndef GL_SEPARATE_SPECULAR_COLOR #define GL_SEPARATE_SPECULAR_COLOR 0x81FA #endif #ifndef GL_SEPARATE_SPECULAR_COLOR_EXT #define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA #endif #ifndef GL_SET #define GL_SET 0x150F #endif #ifndef GL_SET_AMD #define GL_SET_AMD 0x874A #endif #ifndef GL_SHADER #define GL_SHADER 0x82E1 #endif #ifndef GL_SHADER_BINARY_FORMATS #define GL_SHADER_BINARY_FORMATS 0x8DF8 #endif #ifndef GL_SHADER_COMPILER #define GL_SHADER_COMPILER 0x8DFA #endif #ifndef GL_SHADER_CONSISTENT_NV #define GL_SHADER_CONSISTENT_NV 0x86DD #endif #ifndef GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV #define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010 #endif #ifndef GL_SHADER_IMAGE_ACCESS_BARRIER_BIT #define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 #endif #ifndef GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT #define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 #endif #ifndef GL_SHADER_IMAGE_ATOMIC #define GL_SHADER_IMAGE_ATOMIC 0x82A6 #endif #ifndef GL_SHADER_IMAGE_LOAD #define GL_SHADER_IMAGE_LOAD 0x82A4 #endif #ifndef GL_SHADER_IMAGE_STORE #define GL_SHADER_IMAGE_STORE 0x82A5 #endif #ifndef GL_SHADER_INCLUDE_ARB #define GL_SHADER_INCLUDE_ARB 0x8DAE #endif #ifndef GL_SHADER_OBJECT_ARB #define GL_SHADER_OBJECT_ARB 0x8B48 #endif #ifndef GL_SHADER_OBJECT_EXT #define GL_SHADER_OBJECT_EXT 0x8B48 #endif #ifndef GL_SHADER_OPERATION_NV #define GL_SHADER_OPERATION_NV 0x86DF #endif #ifndef GL_SHADER_SOURCE_LENGTH #define GL_SHADER_SOURCE_LENGTH 0x8B88 #endif #ifndef GL_SHADER_STORAGE_BARRIER_BIT #define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000 #endif #ifndef GL_SHADER_STORAGE_BLOCK #define GL_SHADER_STORAGE_BLOCK 0x92E6 #endif #ifndef GL_SHADER_STORAGE_BUFFER #define GL_SHADER_STORAGE_BUFFER 0x90D2 #endif #ifndef GL_SHADER_STORAGE_BUFFER_BINDING #define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 #endif #ifndef GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT #define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF #endif #ifndef GL_SHADER_STORAGE_BUFFER_SIZE #define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 #endif #ifndef GL_SHADER_STORAGE_BUFFER_START #define GL_SHADER_STORAGE_BUFFER_START 0x90D4 #endif #ifndef GL_SHADER_TYPE #define GL_SHADER_TYPE 0x8B4F #endif #ifndef GL_SHADE_MODEL #define GL_SHADE_MODEL 0x0B54 #endif #ifndef GL_SHADING_LANGUAGE_VERSION #define GL_SHADING_LANGUAGE_VERSION 0x8B8C #endif #ifndef GL_SHADING_LANGUAGE_VERSION_ARB #define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C #endif #ifndef GL_SHADOW_AMBIENT_SGIX #define GL_SHADOW_AMBIENT_SGIX 0x80BF #endif #ifndef GL_SHADOW_ATTENUATION_EXT #define GL_SHADOW_ATTENUATION_EXT 0x834E #endif #ifndef GL_SHARED_EDGE_NV #define GL_SHARED_EDGE_NV 0xC0 #endif #ifndef GL_SHARED_TEXTURE_PALETTE_EXT #define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB #endif #ifndef GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS #define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 #endif #ifndef GL_SHININESS #define GL_SHININESS 0x1601 #endif #ifndef GL_SHORT #define GL_SHORT 0x1402 #endif #ifndef GL_SIGNALED #define GL_SIGNALED 0x9119 #endif #ifndef GL_SIGNED_ALPHA8_NV #define GL_SIGNED_ALPHA8_NV 0x8706 #endif #ifndef GL_SIGNED_ALPHA_NV #define GL_SIGNED_ALPHA_NV 0x8705 #endif #ifndef GL_SIGNED_HILO16_NV #define GL_SIGNED_HILO16_NV 0x86FA #endif #ifndef GL_SIGNED_HILO8_NV #define GL_SIGNED_HILO8_NV 0x885F #endif #ifndef GL_SIGNED_HILO_NV #define GL_SIGNED_HILO_NV 0x86F9 #endif #ifndef GL_SIGNED_IDENTITY_NV #define GL_SIGNED_IDENTITY_NV 0x853C #endif #ifndef GL_SIGNED_INTENSITY8_NV #define GL_SIGNED_INTENSITY8_NV 0x8708 #endif #ifndef GL_SIGNED_INTENSITY_NV #define GL_SIGNED_INTENSITY_NV 0x8707 #endif #ifndef GL_SIGNED_LUMINANCE8_ALPHA8_NV #define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 #endif #ifndef GL_SIGNED_LUMINANCE8_NV #define GL_SIGNED_LUMINANCE8_NV 0x8702 #endif #ifndef GL_SIGNED_LUMINANCE_ALPHA_NV #define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 #endif #ifndef GL_SIGNED_LUMINANCE_NV #define GL_SIGNED_LUMINANCE_NV 0x8701 #endif #ifndef GL_SIGNED_NEGATE_NV #define GL_SIGNED_NEGATE_NV 0x853D #endif #ifndef GL_SIGNED_NORMALIZED #define GL_SIGNED_NORMALIZED 0x8F9C #endif #ifndef GL_SIGNED_RGB8_NV #define GL_SIGNED_RGB8_NV 0x86FF #endif #ifndef GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV #define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D #endif #ifndef GL_SIGNED_RGBA8_NV #define GL_SIGNED_RGBA8_NV 0x86FC #endif #ifndef GL_SIGNED_RGBA_NV #define GL_SIGNED_RGBA_NV 0x86FB #endif #ifndef GL_SIGNED_RGB_NV #define GL_SIGNED_RGB_NV 0x86FE #endif #ifndef GL_SIGNED_RGB_UNSIGNED_ALPHA_NV #define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C #endif #ifndef GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST #define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC #endif #ifndef GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE #define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE #endif #ifndef GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST #define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD #endif #ifndef GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE #define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF #endif #ifndef GL_SINGLE_COLOR #define GL_SINGLE_COLOR 0x81F9 #endif #ifndef GL_SINGLE_COLOR_EXT #define GL_SINGLE_COLOR_EXT 0x81F9 #endif #ifndef GL_SKIP_COMPONENTS1_NV #define GL_SKIP_COMPONENTS1_NV -6 #endif #ifndef GL_SKIP_COMPONENTS2_NV #define GL_SKIP_COMPONENTS2_NV -5 #endif #ifndef GL_SKIP_COMPONENTS3_NV #define GL_SKIP_COMPONENTS3_NV -4 #endif #ifndef GL_SKIP_COMPONENTS4_NV #define GL_SKIP_COMPONENTS4_NV -3 #endif #ifndef GL_SKIP_DECODE_EXT #define GL_SKIP_DECODE_EXT 0x8A4A #endif #ifndef GL_SKIP_MISSING_GLYPH_NV #define GL_SKIP_MISSING_GLYPH_NV 0x90A9 #endif #ifndef GL_SLICE_ACCUM_SUN #define GL_SLICE_ACCUM_SUN 0x85CC #endif #ifndef GL_SLUMINANCE #define GL_SLUMINANCE 0x8C46 #endif #ifndef GL_SLUMINANCE8 #define GL_SLUMINANCE8 0x8C47 #endif #ifndef GL_SLUMINANCE8_ALPHA8 #define GL_SLUMINANCE8_ALPHA8 0x8C45 #endif #ifndef GL_SLUMINANCE8_ALPHA8_EXT #define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 #endif #ifndef GL_SLUMINANCE8_EXT #define GL_SLUMINANCE8_EXT 0x8C47 #endif #ifndef GL_SLUMINANCE_ALPHA #define GL_SLUMINANCE_ALPHA 0x8C44 #endif #ifndef GL_SLUMINANCE_ALPHA_EXT #define GL_SLUMINANCE_ALPHA_EXT 0x8C44 #endif #ifndef GL_SLUMINANCE_EXT #define GL_SLUMINANCE_EXT 0x8C46 #endif #ifndef GL_SMALL_CCW_ARC_TO_NV #define GL_SMALL_CCW_ARC_TO_NV 0x12 #endif #ifndef GL_SMALL_CW_ARC_TO_NV #define GL_SMALL_CW_ARC_TO_NV 0x14 #endif #ifndef GL_SMOOTH #define GL_SMOOTH 0x1D01 #endif #ifndef GL_SMOOTH_CUBIC_CURVE_TO_NV #define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 #endif #ifndef GL_SMOOTH_LINE_WIDTH_GRANULARITY #define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 #endif #ifndef GL_SMOOTH_LINE_WIDTH_RANGE #define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 #endif #ifndef GL_SMOOTH_POINT_SIZE_GRANULARITY #define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 #endif #ifndef GL_SMOOTH_POINT_SIZE_RANGE #define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 #endif #ifndef GL_SMOOTH_QUADRATIC_CURVE_TO_NV #define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E #endif #ifndef GL_SM_COUNT_NV #define GL_SM_COUNT_NV 0x933B #endif #ifndef GL_SOFTLIGHT_KHR #define GL_SOFTLIGHT_KHR 0x929C #endif #ifndef GL_SOFTLIGHT_NV #define GL_SOFTLIGHT_NV 0x929C #endif #ifndef GL_SOURCE0_ALPHA #define GL_SOURCE0_ALPHA 0x8588 #endif #ifndef GL_SOURCE0_ALPHA_ARB #define GL_SOURCE0_ALPHA_ARB 0x8588 #endif #ifndef GL_SOURCE0_ALPHA_EXT #define GL_SOURCE0_ALPHA_EXT 0x8588 #endif #ifndef GL_SOURCE0_RGB #define GL_SOURCE0_RGB 0x8580 #endif #ifndef GL_SOURCE0_RGB_ARB #define GL_SOURCE0_RGB_ARB 0x8580 #endif #ifndef GL_SOURCE0_RGB_EXT #define GL_SOURCE0_RGB_EXT 0x8580 #endif #ifndef GL_SOURCE1_ALPHA #define GL_SOURCE1_ALPHA 0x8589 #endif #ifndef GL_SOURCE1_ALPHA_ARB #define GL_SOURCE1_ALPHA_ARB 0x8589 #endif #ifndef GL_SOURCE1_ALPHA_EXT #define GL_SOURCE1_ALPHA_EXT 0x8589 #endif #ifndef GL_SOURCE1_RGB #define GL_SOURCE1_RGB 0x8581 #endif #ifndef GL_SOURCE1_RGB_ARB #define GL_SOURCE1_RGB_ARB 0x8581 #endif #ifndef GL_SOURCE1_RGB_EXT #define GL_SOURCE1_RGB_EXT 0x8581 #endif #ifndef GL_SOURCE2_ALPHA #define GL_SOURCE2_ALPHA 0x858A #endif #ifndef GL_SOURCE2_ALPHA_ARB #define GL_SOURCE2_ALPHA_ARB 0x858A #endif #ifndef GL_SOURCE2_ALPHA_EXT #define GL_SOURCE2_ALPHA_EXT 0x858A #endif #ifndef GL_SOURCE2_RGB #define GL_SOURCE2_RGB 0x8582 #endif #ifndef GL_SOURCE2_RGB_ARB #define GL_SOURCE2_RGB_ARB 0x8582 #endif #ifndef GL_SOURCE2_RGB_EXT #define GL_SOURCE2_RGB_EXT 0x8582 #endif #ifndef GL_SOURCE3_ALPHA #define GL_SOURCE3_ALPHA 0x858B #endif #ifndef GL_SOURCE3_ALPHA_ARB #define GL_SOURCE3_ALPHA_ARB 0x858B #endif #ifndef GL_SOURCE3_ALPHA_NV #define GL_SOURCE3_ALPHA_NV 0x858B #endif #ifndef GL_SOURCE3_RGB #define GL_SOURCE3_RGB 0x8583 #endif #ifndef GL_SOURCE3_RGB_ARB #define GL_SOURCE3_RGB_ARB 0x8583 #endif #ifndef GL_SOURCE3_RGB_NV #define GL_SOURCE3_RGB_NV 0x8583 #endif #ifndef GL_SOURCE4_ALPHA #define GL_SOURCE4_ALPHA 0x858C #endif #ifndef GL_SOURCE4_ALPHA_ARB #define GL_SOURCE4_ALPHA_ARB 0x858C #endif #ifndef GL_SOURCE4_RGB #define GL_SOURCE4_RGB 0x8584 #endif #ifndef GL_SOURCE4_RGB_ARB #define GL_SOURCE4_RGB_ARB 0x8584 #endif #ifndef GL_SOURCE5_ALPHA #define GL_SOURCE5_ALPHA 0x858D #endif #ifndef GL_SOURCE5_ALPHA_ARB #define GL_SOURCE5_ALPHA_ARB 0x858D #endif #ifndef GL_SOURCE5_RGB #define GL_SOURCE5_RGB 0x8585 #endif #ifndef GL_SOURCE5_RGB_ARB #define GL_SOURCE5_RGB_ARB 0x8585 #endif #ifndef GL_SOURCE6_ALPHA #define GL_SOURCE6_ALPHA 0x858E #endif #ifndef GL_SOURCE6_ALPHA_ARB #define GL_SOURCE6_ALPHA_ARB 0x858E #endif #ifndef GL_SOURCE6_RGB #define GL_SOURCE6_RGB 0x8586 #endif #ifndef GL_SOURCE6_RGB_ARB #define GL_SOURCE6_RGB_ARB 0x8586 #endif #ifndef GL_SOURCE7_ALPHA #define GL_SOURCE7_ALPHA 0x858F #endif #ifndef GL_SOURCE7_ALPHA_ARB #define GL_SOURCE7_ALPHA_ARB 0x858F #endif #ifndef GL_SOURCE7_RGB #define GL_SOURCE7_RGB 0x8587 #endif #ifndef GL_SOURCE7_RGB_ARB #define GL_SOURCE7_RGB_ARB 0x8587 #endif #ifndef GL_SPARE0_NV #define GL_SPARE0_NV 0x852E #endif #ifndef GL_SPARE0_PLUS_SECONDARY_COLOR_NV #define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 #endif #ifndef GL_SPARE1_NV #define GL_SPARE1_NV 0x852F #endif #ifndef GL_SPARSE_BUFFER_PAGE_SIZE_ARB #define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8 #endif #ifndef GL_SPARSE_STORAGE_BIT_ARB #define GL_SPARSE_STORAGE_BIT_ARB 0x0400 #endif #ifndef GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB #define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9 #endif #ifndef GL_SPECULAR #define GL_SPECULAR 0x1202 #endif #ifndef GL_SPHERE_MAP #define GL_SPHERE_MAP 0x2402 #endif #ifndef GL_SPOT_CUTOFF #define GL_SPOT_CUTOFF 0x1206 #endif #ifndef GL_SPOT_DIRECTION #define GL_SPOT_DIRECTION 0x1204 #endif #ifndef GL_SPOT_EXPONENT #define GL_SPOT_EXPONENT 0x1205 #endif #ifndef GL_SPRITE_AXIAL_SGIX #define GL_SPRITE_AXIAL_SGIX 0x814C #endif #ifndef GL_SPRITE_AXIS_SGIX #define GL_SPRITE_AXIS_SGIX 0x814A #endif #ifndef GL_SPRITE_EYE_ALIGNED_SGIX #define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E #endif #ifndef GL_SPRITE_MODE_SGIX #define GL_SPRITE_MODE_SGIX 0x8149 #endif #ifndef GL_SPRITE_OBJECT_ALIGNED_SGIX #define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D #endif #ifndef GL_SPRITE_SGIX #define GL_SPRITE_SGIX 0x8148 #endif #ifndef GL_SPRITE_TRANSLATION_SGIX #define GL_SPRITE_TRANSLATION_SGIX 0x814B #endif #ifndef GL_SQUARE_NV #define GL_SQUARE_NV 0x90A3 #endif #ifndef GL_SRC0_ALPHA #define GL_SRC0_ALPHA 0x8588 #endif #ifndef GL_SRC0_RGB #define GL_SRC0_RGB 0x8580 #endif #ifndef GL_SRC1_ALPHA #define GL_SRC1_ALPHA 0x8589 #endif #ifndef GL_SRC1_COLOR #define GL_SRC1_COLOR 0x88F9 #endif #ifndef GL_SRC1_RGB #define GL_SRC1_RGB 0x8581 #endif #ifndef GL_SRC2_ALPHA #define GL_SRC2_ALPHA 0x858A #endif #ifndef GL_SRC2_RGB #define GL_SRC2_RGB 0x8582 #endif #ifndef GL_SRC3_ALPHA #define GL_SRC3_ALPHA 0x858B #endif #ifndef GL_SRC3_RGB #define GL_SRC3_RGB 0x8583 #endif #ifndef GL_SRC4_ALPHA #define GL_SRC4_ALPHA 0x858C #endif #ifndef GL_SRC4_RGB #define GL_SRC4_RGB 0x8584 #endif #ifndef GL_SRC5_ALPHA #define GL_SRC5_ALPHA 0x858D #endif #ifndef GL_SRC5_RGB #define GL_SRC5_RGB 0x8585 #endif #ifndef GL_SRC6_ALPHA #define GL_SRC6_ALPHA 0x858E #endif #ifndef GL_SRC6_RGB #define GL_SRC6_RGB 0x8586 #endif #ifndef GL_SRC7_ALPHA #define GL_SRC7_ALPHA 0x858F #endif #ifndef GL_SRC7_RGB #define GL_SRC7_RGB 0x8587 #endif #ifndef GL_SRC_ALPHA #define GL_SRC_ALPHA 0x0302 #endif #ifndef GL_SRC_ALPHA_SATURATE #define GL_SRC_ALPHA_SATURATE 0x0308 #endif #ifndef GL_SRC_ATOP_NV #define GL_SRC_ATOP_NV 0x928E #endif #ifndef GL_SRC_COLOR #define GL_SRC_COLOR 0x0300 #endif #ifndef GL_SRC_IN_NV #define GL_SRC_IN_NV 0x928A #endif #ifndef GL_SRC_NV #define GL_SRC_NV 0x9286 #endif #ifndef GL_SRC_OUT_NV #define GL_SRC_OUT_NV 0x928C #endif #ifndef GL_SRC_OVER_NV #define GL_SRC_OVER_NV 0x9288 #endif #ifndef GL_SRGB #define GL_SRGB 0x8C40 #endif #ifndef GL_SRGB8 #define GL_SRGB8 0x8C41 #endif #ifndef GL_SRGB8_ALPHA8 #define GL_SRGB8_ALPHA8 0x8C43 #endif #ifndef GL_SRGB8_ALPHA8_EXT #define GL_SRGB8_ALPHA8_EXT 0x8C43 #endif #ifndef GL_SRGB8_EXT #define GL_SRGB8_EXT 0x8C41 #endif #ifndef GL_SRGB_ALPHA #define GL_SRGB_ALPHA 0x8C42 #endif #ifndef GL_SRGB_ALPHA_EXT #define GL_SRGB_ALPHA_EXT 0x8C42 #endif #ifndef GL_SRGB_DECODE_ARB #define GL_SRGB_DECODE_ARB 0x8299 #endif #ifndef GL_SRGB_EXT #define GL_SRGB_EXT 0x8C40 #endif #ifndef GL_SRGB_READ #define GL_SRGB_READ 0x8297 #endif #ifndef GL_SRGB_WRITE #define GL_SRGB_WRITE 0x8298 #endif #ifndef GL_STACK_OVERFLOW #define GL_STACK_OVERFLOW 0x0503 #endif #ifndef GL_STACK_UNDERFLOW #define GL_STACK_UNDERFLOW 0x0504 #endif #ifndef GL_STANDARD_FONT_FORMAT_NV #define GL_STANDARD_FONT_FORMAT_NV 0x936C #endif #ifndef GL_STANDARD_FONT_NAME_NV #define GL_STANDARD_FONT_NAME_NV 0x9072 #endif #ifndef GL_STATIC_ATI #define GL_STATIC_ATI 0x8760 #endif #ifndef GL_STATIC_COPY #define GL_STATIC_COPY 0x88E6 #endif #ifndef GL_STATIC_COPY_ARB #define GL_STATIC_COPY_ARB 0x88E6 #endif #ifndef GL_STATIC_DRAW #define GL_STATIC_DRAW 0x88E4 #endif #ifndef GL_STATIC_DRAW_ARB #define GL_STATIC_DRAW_ARB 0x88E4 #endif #ifndef GL_STATIC_READ #define GL_STATIC_READ 0x88E5 #endif #ifndef GL_STATIC_READ_ARB #define GL_STATIC_READ_ARB 0x88E5 #endif #ifndef GL_STATIC_VERTEX_ARRAY_IBM #define GL_STATIC_VERTEX_ARRAY_IBM 103061 #endif #ifndef GL_STENCIL #define GL_STENCIL 0x1802 #endif #ifndef GL_STENCIL_ATTACHMENT #define GL_STENCIL_ATTACHMENT 0x8D20 #endif #ifndef GL_STENCIL_ATTACHMENT_EXT #define GL_STENCIL_ATTACHMENT_EXT 0x8D20 #endif #ifndef GL_STENCIL_BACK_FAIL #define GL_STENCIL_BACK_FAIL 0x8801 #endif #ifndef GL_STENCIL_BACK_FAIL_ATI #define GL_STENCIL_BACK_FAIL_ATI 0x8801 #endif #ifndef GL_STENCIL_BACK_FUNC #define GL_STENCIL_BACK_FUNC 0x8800 #endif #ifndef GL_STENCIL_BACK_FUNC_ATI #define GL_STENCIL_BACK_FUNC_ATI 0x8800 #endif #ifndef GL_STENCIL_BACK_OP_VALUE_AMD #define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D #endif #ifndef GL_STENCIL_BACK_PASS_DEPTH_FAIL #define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 #endif #ifndef GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI #define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 #endif #ifndef GL_STENCIL_BACK_PASS_DEPTH_PASS #define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 #endif #ifndef GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI #define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 #endif #ifndef GL_STENCIL_BACK_REF #define GL_STENCIL_BACK_REF 0x8CA3 #endif #ifndef GL_STENCIL_BACK_VALUE_MASK #define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 #endif #ifndef GL_STENCIL_BACK_WRITEMASK #define GL_STENCIL_BACK_WRITEMASK 0x8CA5 #endif #ifndef GL_STENCIL_BITS #define GL_STENCIL_BITS 0x0D57 #endif #ifndef GL_STENCIL_BUFFER #define GL_STENCIL_BUFFER 0x8224 #endif #ifndef GL_STENCIL_BUFFER_BIT #define GL_STENCIL_BUFFER_BIT 0x00000400 #endif #ifndef GL_STENCIL_CLEAR_TAG_VALUE_EXT #define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 #endif #ifndef GL_STENCIL_CLEAR_VALUE #define GL_STENCIL_CLEAR_VALUE 0x0B91 #endif #ifndef GL_STENCIL_COMPONENTS #define GL_STENCIL_COMPONENTS 0x8285 #endif #ifndef GL_STENCIL_FAIL #define GL_STENCIL_FAIL 0x0B94 #endif #ifndef GL_STENCIL_FUNC #define GL_STENCIL_FUNC 0x0B92 #endif #ifndef GL_STENCIL_INDEX #define GL_STENCIL_INDEX 0x1901 #endif #ifndef GL_STENCIL_INDEX1 #define GL_STENCIL_INDEX1 0x8D46 #endif #ifndef GL_STENCIL_INDEX16 #define GL_STENCIL_INDEX16 0x8D49 #endif #ifndef GL_STENCIL_INDEX16_EXT #define GL_STENCIL_INDEX16_EXT 0x8D49 #endif #ifndef GL_STENCIL_INDEX1_EXT #define GL_STENCIL_INDEX1_EXT 0x8D46 #endif #ifndef GL_STENCIL_INDEX4 #define GL_STENCIL_INDEX4 0x8D47 #endif #ifndef GL_STENCIL_INDEX4_EXT #define GL_STENCIL_INDEX4_EXT 0x8D47 #endif #ifndef GL_STENCIL_INDEX8 #define GL_STENCIL_INDEX8 0x8D48 #endif #ifndef GL_STENCIL_INDEX8_EXT #define GL_STENCIL_INDEX8_EXT 0x8D48 #endif #ifndef GL_STENCIL_OP_VALUE_AMD #define GL_STENCIL_OP_VALUE_AMD 0x874C #endif #ifndef GL_STENCIL_PASS_DEPTH_FAIL #define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 #endif #ifndef GL_STENCIL_PASS_DEPTH_PASS #define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 #endif #ifndef GL_STENCIL_REF #define GL_STENCIL_REF 0x0B97 #endif #ifndef GL_STENCIL_REF_COMMAND_NV #define GL_STENCIL_REF_COMMAND_NV 0x000C #endif #ifndef GL_STENCIL_RENDERABLE #define GL_STENCIL_RENDERABLE 0x8288 #endif #ifndef GL_STENCIL_SAMPLES_NV #define GL_STENCIL_SAMPLES_NV 0x932E #endif #ifndef GL_STENCIL_TAG_BITS_EXT #define GL_STENCIL_TAG_BITS_EXT 0x88F2 #endif #ifndef GL_STENCIL_TEST #define GL_STENCIL_TEST 0x0B90 #endif #ifndef GL_STENCIL_TEST_TWO_SIDE_EXT #define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 #endif #ifndef GL_STENCIL_VALUE_MASK #define GL_STENCIL_VALUE_MASK 0x0B93 #endif #ifndef GL_STENCIL_WRITEMASK #define GL_STENCIL_WRITEMASK 0x0B98 #endif #ifndef GL_STEREO #define GL_STEREO 0x0C33 #endif #ifndef GL_STORAGE_CACHED_APPLE #define GL_STORAGE_CACHED_APPLE 0x85BE #endif #ifndef GL_STORAGE_CLIENT_APPLE #define GL_STORAGE_CLIENT_APPLE 0x85B4 #endif #ifndef GL_STORAGE_PRIVATE_APPLE #define GL_STORAGE_PRIVATE_APPLE 0x85BD #endif #ifndef GL_STORAGE_SHARED_APPLE #define GL_STORAGE_SHARED_APPLE 0x85BF #endif #ifndef GL_STREAM_COPY #define GL_STREAM_COPY 0x88E2 #endif #ifndef GL_STREAM_COPY_ARB #define GL_STREAM_COPY_ARB 0x88E2 #endif #ifndef GL_STREAM_DRAW #define GL_STREAM_DRAW 0x88E0 #endif #ifndef GL_STREAM_DRAW_ARB #define GL_STREAM_DRAW_ARB 0x88E0 #endif #ifndef GL_STREAM_RASTERIZATION_AMD #define GL_STREAM_RASTERIZATION_AMD 0x91A0 #endif #ifndef GL_STREAM_READ #define GL_STREAM_READ 0x88E1 #endif #ifndef GL_STREAM_READ_ARB #define GL_STREAM_READ_ARB 0x88E1 #endif #ifndef GL_STRICT_DEPTHFUNC_HINT_PGI #define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 #endif #ifndef GL_STRICT_LIGHTING_HINT_PGI #define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 #endif #ifndef GL_STRICT_SCISSOR_HINT_PGI #define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 #endif #ifndef GL_SUBPIXEL_BITS #define GL_SUBPIXEL_BITS 0x0D50 #endif #ifndef GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV #define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347 #endif #ifndef GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV #define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348 #endif #ifndef GL_SUBSAMPLE_DISTANCE_AMD #define GL_SUBSAMPLE_DISTANCE_AMD 0x883F #endif #ifndef GL_SUBTRACT #define GL_SUBTRACT 0x84E7 #endif #ifndef GL_SUBTRACT_ARB #define GL_SUBTRACT_ARB 0x84E7 #endif #ifndef GL_SUB_ATI #define GL_SUB_ATI 0x8965 #endif #ifndef GL_SUCCESS_NV #define GL_SUCCESS_NV 0x902F #endif #ifndef GL_SUPERSAMPLE_SCALE_X_NV #define GL_SUPERSAMPLE_SCALE_X_NV 0x9372 #endif #ifndef GL_SUPERSAMPLE_SCALE_Y_NV #define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373 #endif #ifndef GL_SURFACE_MAPPED_NV #define GL_SURFACE_MAPPED_NV 0x8700 #endif #ifndef GL_SURFACE_REGISTERED_NV #define GL_SURFACE_REGISTERED_NV 0x86FD #endif #ifndef GL_SURFACE_STATE_NV #define GL_SURFACE_STATE_NV 0x86EB #endif #ifndef GL_SWIZZLE_STQ_ATI #define GL_SWIZZLE_STQ_ATI 0x8977 #endif #ifndef GL_SWIZZLE_STQ_DQ_ATI #define GL_SWIZZLE_STQ_DQ_ATI 0x8979 #endif #ifndef GL_SWIZZLE_STRQ_ATI #define GL_SWIZZLE_STRQ_ATI 0x897A #endif #ifndef GL_SWIZZLE_STRQ_DQ_ATI #define GL_SWIZZLE_STRQ_DQ_ATI 0x897B #endif #ifndef GL_SWIZZLE_STR_ATI #define GL_SWIZZLE_STR_ATI 0x8976 #endif #ifndef GL_SWIZZLE_STR_DR_ATI #define GL_SWIZZLE_STR_DR_ATI 0x8978 #endif #ifndef GL_SYNC_CL_EVENT_ARB #define GL_SYNC_CL_EVENT_ARB 0x8240 #endif #ifndef GL_SYNC_CL_EVENT_COMPLETE_ARB #define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 #endif #ifndef GL_SYNC_CONDITION #define GL_SYNC_CONDITION 0x9113 #endif #ifndef GL_SYNC_FENCE #define GL_SYNC_FENCE 0x9116 #endif #ifndef GL_SYNC_FLAGS #define GL_SYNC_FLAGS 0x9115 #endif #ifndef GL_SYNC_FLUSH_COMMANDS_BIT #define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 #endif #ifndef GL_SYNC_GPU_COMMANDS_COMPLETE #define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 #endif #ifndef GL_SYNC_STATUS #define GL_SYNC_STATUS 0x9114 #endif #ifndef GL_SYNC_X11_FENCE_EXT #define GL_SYNC_X11_FENCE_EXT 0x90E1 #endif #ifndef GL_SYSTEM_FONT_NAME_NV #define GL_SYSTEM_FONT_NAME_NV 0x9073 #endif #ifndef GL_T #define GL_T 0x2001 #endif #ifndef GL_T2F_C3F_V3F #define GL_T2F_C3F_V3F 0x2A2A #endif #ifndef GL_T2F_C4F_N3F_V3F #define GL_T2F_C4F_N3F_V3F 0x2A2C #endif #ifndef GL_T2F_C4UB_V3F #define GL_T2F_C4UB_V3F 0x2A29 #endif #ifndef GL_T2F_IUI_N3F_V2F_EXT #define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 #endif #ifndef GL_T2F_IUI_N3F_V3F_EXT #define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 #endif #ifndef GL_T2F_IUI_V2F_EXT #define GL_T2F_IUI_V2F_EXT 0x81B1 #endif #ifndef GL_T2F_IUI_V3F_EXT #define GL_T2F_IUI_V3F_EXT 0x81B2 #endif #ifndef GL_T2F_N3F_V3F #define GL_T2F_N3F_V3F 0x2A2B #endif #ifndef GL_T2F_V3F #define GL_T2F_V3F 0x2A27 #endif #ifndef GL_T4F_C4F_N3F_V4F #define GL_T4F_C4F_N3F_V4F 0x2A2D #endif #ifndef GL_T4F_V4F #define GL_T4F_V4F 0x2A28 #endif #ifndef GL_TABLE_TOO_LARGE #define GL_TABLE_TOO_LARGE 0x8031 #endif #ifndef GL_TABLE_TOO_LARGE_EXT #define GL_TABLE_TOO_LARGE_EXT 0x8031 #endif #ifndef GL_TANGENT_ARRAY_EXT #define GL_TANGENT_ARRAY_EXT 0x8439 #endif #ifndef GL_TANGENT_ARRAY_POINTER_EXT #define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 #endif #ifndef GL_TANGENT_ARRAY_STRIDE_EXT #define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F #endif #ifndef GL_TANGENT_ARRAY_TYPE_EXT #define GL_TANGENT_ARRAY_TYPE_EXT 0x843E #endif #ifndef GL_TERMINATE_SEQUENCE_COMMAND_NV #define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000 #endif #ifndef GL_TESSELLATION_FACTOR_AMD #define GL_TESSELLATION_FACTOR_AMD 0x9005 #endif #ifndef GL_TESSELLATION_MODE_AMD #define GL_TESSELLATION_MODE_AMD 0x9004 #endif #ifndef GL_TESS_CONTROL_OUTPUT_VERTICES #define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 #endif #ifndef GL_TESS_CONTROL_PROGRAM_NV #define GL_TESS_CONTROL_PROGRAM_NV 0x891E #endif #ifndef GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV #define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 #endif #ifndef GL_TESS_CONTROL_SHADER #define GL_TESS_CONTROL_SHADER 0x8E88 #endif #ifndef GL_TESS_CONTROL_SHADER_BIT #define GL_TESS_CONTROL_SHADER_BIT 0x00000008 #endif #ifndef GL_TESS_CONTROL_SHADER_PATCHES_ARB #define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1 #endif #ifndef GL_TESS_CONTROL_SUBROUTINE #define GL_TESS_CONTROL_SUBROUTINE 0x92E9 #endif #ifndef GL_TESS_CONTROL_SUBROUTINE_UNIFORM #define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF #endif #ifndef GL_TESS_CONTROL_TEXTURE #define GL_TESS_CONTROL_TEXTURE 0x829C #endif #ifndef GL_TESS_EVALUATION_PROGRAM_NV #define GL_TESS_EVALUATION_PROGRAM_NV 0x891F #endif #ifndef GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV #define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 #endif #ifndef GL_TESS_EVALUATION_SHADER #define GL_TESS_EVALUATION_SHADER 0x8E87 #endif #ifndef GL_TESS_EVALUATION_SHADER_BIT #define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 #endif #ifndef GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB #define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2 #endif #ifndef GL_TESS_EVALUATION_SUBROUTINE #define GL_TESS_EVALUATION_SUBROUTINE 0x92EA #endif #ifndef GL_TESS_EVALUATION_SUBROUTINE_UNIFORM #define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 #endif #ifndef GL_TESS_EVALUATION_TEXTURE #define GL_TESS_EVALUATION_TEXTURE 0x829D #endif #ifndef GL_TESS_GEN_MODE #define GL_TESS_GEN_MODE 0x8E76 #endif #ifndef GL_TESS_GEN_POINT_MODE #define GL_TESS_GEN_POINT_MODE 0x8E79 #endif #ifndef GL_TESS_GEN_SPACING #define GL_TESS_GEN_SPACING 0x8E77 #endif #ifndef GL_TESS_GEN_VERTEX_ORDER #define GL_TESS_GEN_VERTEX_ORDER 0x8E78 #endif #ifndef GL_TEXCOORD1_BIT_PGI #define GL_TEXCOORD1_BIT_PGI 0x10000000 #endif #ifndef GL_TEXCOORD2_BIT_PGI #define GL_TEXCOORD2_BIT_PGI 0x20000000 #endif #ifndef GL_TEXCOORD3_BIT_PGI #define GL_TEXCOORD3_BIT_PGI 0x40000000 #endif #ifndef GL_TEXCOORD4_BIT_PGI #define GL_TEXCOORD4_BIT_PGI 0x80000000 #endif #ifndef GL_TEXTURE #define GL_TEXTURE 0x1702 #endif #ifndef GL_TEXTURE0 #define GL_TEXTURE0 0x84C0 #endif #ifndef GL_TEXTURE0_ARB #define GL_TEXTURE0_ARB 0x84C0 #endif #ifndef GL_TEXTURE1 #define GL_TEXTURE1 0x84C1 #endif #ifndef GL_TEXTURE10 #define GL_TEXTURE10 0x84CA #endif #ifndef GL_TEXTURE10_ARB #define GL_TEXTURE10_ARB 0x84CA #endif #ifndef GL_TEXTURE11 #define GL_TEXTURE11 0x84CB #endif #ifndef GL_TEXTURE11_ARB #define GL_TEXTURE11_ARB 0x84CB #endif #ifndef GL_TEXTURE12 #define GL_TEXTURE12 0x84CC #endif #ifndef GL_TEXTURE12_ARB #define GL_TEXTURE12_ARB 0x84CC #endif #ifndef GL_TEXTURE13 #define GL_TEXTURE13 0x84CD #endif #ifndef GL_TEXTURE13_ARB #define GL_TEXTURE13_ARB 0x84CD #endif #ifndef GL_TEXTURE14 #define GL_TEXTURE14 0x84CE #endif #ifndef GL_TEXTURE14_ARB #define GL_TEXTURE14_ARB 0x84CE #endif #ifndef GL_TEXTURE15 #define GL_TEXTURE15 0x84CF #endif #ifndef GL_TEXTURE15_ARB #define GL_TEXTURE15_ARB 0x84CF #endif #ifndef GL_TEXTURE16 #define GL_TEXTURE16 0x84D0 #endif #ifndef GL_TEXTURE16_ARB #define GL_TEXTURE16_ARB 0x84D0 #endif #ifndef GL_TEXTURE17 #define GL_TEXTURE17 0x84D1 #endif #ifndef GL_TEXTURE17_ARB #define GL_TEXTURE17_ARB 0x84D1 #endif #ifndef GL_TEXTURE18 #define GL_TEXTURE18 0x84D2 #endif #ifndef GL_TEXTURE18_ARB #define GL_TEXTURE18_ARB 0x84D2 #endif #ifndef GL_TEXTURE19 #define GL_TEXTURE19 0x84D3 #endif #ifndef GL_TEXTURE19_ARB #define GL_TEXTURE19_ARB 0x84D3 #endif #ifndef GL_TEXTURE1_ARB #define GL_TEXTURE1_ARB 0x84C1 #endif #ifndef GL_TEXTURE2 #define GL_TEXTURE2 0x84C2 #endif #ifndef GL_TEXTURE20 #define GL_TEXTURE20 0x84D4 #endif #ifndef GL_TEXTURE20_ARB #define GL_TEXTURE20_ARB 0x84D4 #endif #ifndef GL_TEXTURE21 #define GL_TEXTURE21 0x84D5 #endif #ifndef GL_TEXTURE21_ARB #define GL_TEXTURE21_ARB 0x84D5 #endif #ifndef GL_TEXTURE22 #define GL_TEXTURE22 0x84D6 #endif #ifndef GL_TEXTURE22_ARB #define GL_TEXTURE22_ARB 0x84D6 #endif #ifndef GL_TEXTURE23 #define GL_TEXTURE23 0x84D7 #endif #ifndef GL_TEXTURE23_ARB #define GL_TEXTURE23_ARB 0x84D7 #endif #ifndef GL_TEXTURE24 #define GL_TEXTURE24 0x84D8 #endif #ifndef GL_TEXTURE24_ARB #define GL_TEXTURE24_ARB 0x84D8 #endif #ifndef GL_TEXTURE25 #define GL_TEXTURE25 0x84D9 #endif #ifndef GL_TEXTURE25_ARB #define GL_TEXTURE25_ARB 0x84D9 #endif #ifndef GL_TEXTURE26 #define GL_TEXTURE26 0x84DA #endif #ifndef GL_TEXTURE26_ARB #define GL_TEXTURE26_ARB 0x84DA #endif #ifndef GL_TEXTURE27 #define GL_TEXTURE27 0x84DB #endif #ifndef GL_TEXTURE27_ARB #define GL_TEXTURE27_ARB 0x84DB #endif #ifndef GL_TEXTURE28 #define GL_TEXTURE28 0x84DC #endif #ifndef GL_TEXTURE28_ARB #define GL_TEXTURE28_ARB 0x84DC #endif #ifndef GL_TEXTURE29 #define GL_TEXTURE29 0x84DD #endif #ifndef GL_TEXTURE29_ARB #define GL_TEXTURE29_ARB 0x84DD #endif #ifndef GL_TEXTURE2_ARB #define GL_TEXTURE2_ARB 0x84C2 #endif #ifndef GL_TEXTURE3 #define GL_TEXTURE3 0x84C3 #endif #ifndef GL_TEXTURE30 #define GL_TEXTURE30 0x84DE #endif #ifndef GL_TEXTURE30_ARB #define GL_TEXTURE30_ARB 0x84DE #endif #ifndef GL_TEXTURE31 #define GL_TEXTURE31 0x84DF #endif #ifndef GL_TEXTURE31_ARB #define GL_TEXTURE31_ARB 0x84DF #endif #ifndef GL_TEXTURE3_ARB #define GL_TEXTURE3_ARB 0x84C3 #endif #ifndef GL_TEXTURE4 #define GL_TEXTURE4 0x84C4 #endif #ifndef GL_TEXTURE4_ARB #define GL_TEXTURE4_ARB 0x84C4 #endif #ifndef GL_TEXTURE5 #define GL_TEXTURE5 0x84C5 #endif #ifndef GL_TEXTURE5_ARB #define GL_TEXTURE5_ARB 0x84C5 #endif #ifndef GL_TEXTURE6 #define GL_TEXTURE6 0x84C6 #endif #ifndef GL_TEXTURE6_ARB #define GL_TEXTURE6_ARB 0x84C6 #endif #ifndef GL_TEXTURE7 #define GL_TEXTURE7 0x84C7 #endif #ifndef GL_TEXTURE7_ARB #define GL_TEXTURE7_ARB 0x84C7 #endif #ifndef GL_TEXTURE8 #define GL_TEXTURE8 0x84C8 #endif #ifndef GL_TEXTURE8_ARB #define GL_TEXTURE8_ARB 0x84C8 #endif #ifndef GL_TEXTURE9 #define GL_TEXTURE9 0x84C9 #endif #ifndef GL_TEXTURE9_ARB #define GL_TEXTURE9_ARB 0x84C9 #endif #ifndef GL_TEXTURE_1D #define GL_TEXTURE_1D 0x0DE0 #endif #ifndef GL_TEXTURE_1D_ARRAY #define GL_TEXTURE_1D_ARRAY 0x8C18 #endif #ifndef GL_TEXTURE_1D_ARRAY_EXT #define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 #endif #ifndef GL_TEXTURE_1D_BINDING_EXT #define GL_TEXTURE_1D_BINDING_EXT 0x8068 #endif #ifndef GL_TEXTURE_1D_STACK_BINDING_MESAX #define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D #endif #ifndef GL_TEXTURE_1D_STACK_MESAX #define GL_TEXTURE_1D_STACK_MESAX 0x8759 #endif #ifndef GL_TEXTURE_2D #define GL_TEXTURE_2D 0x0DE1 #endif #ifndef GL_TEXTURE_2D_ARRAY #define GL_TEXTURE_2D_ARRAY 0x8C1A #endif #ifndef GL_TEXTURE_2D_ARRAY_EXT #define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A #endif #ifndef GL_TEXTURE_2D_BINDING_EXT #define GL_TEXTURE_2D_BINDING_EXT 0x8069 #endif #ifndef GL_TEXTURE_2D_MULTISAMPLE #define GL_TEXTURE_2D_MULTISAMPLE 0x9100 #endif #ifndef GL_TEXTURE_2D_MULTISAMPLE_ARRAY #define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 #endif #ifndef GL_TEXTURE_2D_STACK_BINDING_MESAX #define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E #endif #ifndef GL_TEXTURE_2D_STACK_MESAX #define GL_TEXTURE_2D_STACK_MESAX 0x875A #endif #ifndef GL_TEXTURE_3D #define GL_TEXTURE_3D 0x806F #endif #ifndef GL_TEXTURE_3D_BINDING_EXT #define GL_TEXTURE_3D_BINDING_EXT 0x806A #endif #ifndef GL_TEXTURE_3D_EXT #define GL_TEXTURE_3D_EXT 0x806F #endif #ifndef GL_TEXTURE_4DSIZE_SGIS #define GL_TEXTURE_4DSIZE_SGIS 0x8136 #endif #ifndef GL_TEXTURE_4D_BINDING_SGIS #define GL_TEXTURE_4D_BINDING_SGIS 0x814F #endif #ifndef GL_TEXTURE_4D_SGIS #define GL_TEXTURE_4D_SGIS 0x8134 #endif #ifndef GL_TEXTURE_ALPHA_SIZE #define GL_TEXTURE_ALPHA_SIZE 0x805F #endif #ifndef GL_TEXTURE_ALPHA_SIZE_EXT #define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F #endif #ifndef GL_TEXTURE_ALPHA_TYPE #define GL_TEXTURE_ALPHA_TYPE 0x8C13 #endif #ifndef GL_TEXTURE_ALPHA_TYPE_ARB #define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 #endif #ifndef GL_TEXTURE_APPLICATION_MODE_EXT #define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F #endif #ifndef GL_TEXTURE_BASE_LEVEL #define GL_TEXTURE_BASE_LEVEL 0x813C #endif #ifndef GL_TEXTURE_BASE_LEVEL_SGIS #define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C #endif #ifndef GL_TEXTURE_BINDING_1D #define GL_TEXTURE_BINDING_1D 0x8068 #endif #ifndef GL_TEXTURE_BINDING_1D_ARRAY #define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C #endif #ifndef GL_TEXTURE_BINDING_1D_ARRAY_EXT #define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C #endif #ifndef GL_TEXTURE_BINDING_2D #define GL_TEXTURE_BINDING_2D 0x8069 #endif #ifndef GL_TEXTURE_BINDING_2D_ARRAY #define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D #endif #ifndef GL_TEXTURE_BINDING_2D_ARRAY_EXT #define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D #endif #ifndef GL_TEXTURE_BINDING_2D_MULTISAMPLE #define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 #endif #ifndef GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY #define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 #endif #ifndef GL_TEXTURE_BINDING_3D #define GL_TEXTURE_BINDING_3D 0x806A #endif #ifndef GL_TEXTURE_BINDING_BUFFER #define GL_TEXTURE_BINDING_BUFFER 0x8C2C #endif #ifndef GL_TEXTURE_BINDING_BUFFER_ARB #define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C #endif #ifndef GL_TEXTURE_BINDING_BUFFER_EXT #define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C #endif #ifndef GL_TEXTURE_BINDING_CUBE_MAP #define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 #endif #ifndef GL_TEXTURE_BINDING_CUBE_MAP_ARB #define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 #endif #ifndef GL_TEXTURE_BINDING_CUBE_MAP_ARRAY #define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A #endif #ifndef GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB #define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A #endif #ifndef GL_TEXTURE_BINDING_CUBE_MAP_EXT #define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 #endif #ifndef GL_TEXTURE_BINDING_RECTANGLE #define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 #endif #ifndef GL_TEXTURE_BINDING_RECTANGLE_ARB #define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 #endif #ifndef GL_TEXTURE_BINDING_RECTANGLE_NV #define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 #endif #ifndef GL_TEXTURE_BINDING_RENDERBUFFER_NV #define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 #endif #ifndef GL_TEXTURE_BIT #define GL_TEXTURE_BIT 0x00040000 #endif #ifndef GL_TEXTURE_BLUE_SIZE #define GL_TEXTURE_BLUE_SIZE 0x805E #endif #ifndef GL_TEXTURE_BLUE_SIZE_EXT #define GL_TEXTURE_BLUE_SIZE_EXT 0x805E #endif #ifndef GL_TEXTURE_BLUE_TYPE #define GL_TEXTURE_BLUE_TYPE 0x8C12 #endif #ifndef GL_TEXTURE_BLUE_TYPE_ARB #define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 #endif #ifndef GL_TEXTURE_BORDER #define GL_TEXTURE_BORDER 0x1005 #endif #ifndef GL_TEXTURE_BORDER_COLOR #define GL_TEXTURE_BORDER_COLOR 0x1004 #endif #ifndef GL_TEXTURE_BORDER_VALUES_NV #define GL_TEXTURE_BORDER_VALUES_NV 0x871A #endif #ifndef GL_TEXTURE_BUFFER #define GL_TEXTURE_BUFFER 0x8C2A #endif #ifndef GL_TEXTURE_BUFFER_ARB #define GL_TEXTURE_BUFFER_ARB 0x8C2A #endif #ifndef GL_TEXTURE_BUFFER_BINDING #define GL_TEXTURE_BUFFER_BINDING 0x8C2A #endif #ifndef GL_TEXTURE_BUFFER_DATA_STORE_BINDING #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D #endif #ifndef GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D #endif #ifndef GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D #endif #ifndef GL_TEXTURE_BUFFER_EXT #define GL_TEXTURE_BUFFER_EXT 0x8C2A #endif #ifndef GL_TEXTURE_BUFFER_FORMAT #define GL_TEXTURE_BUFFER_FORMAT 0x8C2E #endif #ifndef GL_TEXTURE_BUFFER_FORMAT_ARB #define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E #endif #ifndef GL_TEXTURE_BUFFER_FORMAT_EXT #define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E #endif #ifndef GL_TEXTURE_BUFFER_OFFSET #define GL_TEXTURE_BUFFER_OFFSET 0x919D #endif #ifndef GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT #define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F #endif #ifndef GL_TEXTURE_BUFFER_SIZE #define GL_TEXTURE_BUFFER_SIZE 0x919E #endif #ifndef GL_TEXTURE_CLIPMAP_CENTER_SGIX #define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 #endif #ifndef GL_TEXTURE_CLIPMAP_DEPTH_SGIX #define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 #endif #ifndef GL_TEXTURE_CLIPMAP_FRAME_SGIX #define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 #endif #ifndef GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX #define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 #endif #ifndef GL_TEXTURE_CLIPMAP_OFFSET_SGIX #define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 #endif #ifndef GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX #define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 #endif #ifndef GL_TEXTURE_COLOR_SAMPLES_NV #define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046 #endif #ifndef GL_TEXTURE_COLOR_TABLE_SGI #define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC #endif #ifndef GL_TEXTURE_COLOR_WRITEMASK_SGIS #define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF #endif #ifndef GL_TEXTURE_COMPARE_FAIL_VALUE_ARB #define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF #endif #ifndef GL_TEXTURE_COMPARE_FUNC #define GL_TEXTURE_COMPARE_FUNC 0x884D #endif #ifndef GL_TEXTURE_COMPARE_FUNC_ARB #define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D #endif #ifndef GL_TEXTURE_COMPARE_MODE #define GL_TEXTURE_COMPARE_MODE 0x884C #endif #ifndef GL_TEXTURE_COMPARE_MODE_ARB #define GL_TEXTURE_COMPARE_MODE_ARB 0x884C #endif #ifndef GL_TEXTURE_COMPARE_OPERATOR_SGIX #define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B #endif #ifndef GL_TEXTURE_COMPARE_SGIX #define GL_TEXTURE_COMPARE_SGIX 0x819A #endif #ifndef GL_TEXTURE_COMPONENTS #define GL_TEXTURE_COMPONENTS GL_TEXTURE_INTERNAL_FORMAT #endif #ifndef GL_TEXTURE_COMPRESSED #define GL_TEXTURE_COMPRESSED 0x86A1 #endif #ifndef GL_TEXTURE_COMPRESSED_ARB #define GL_TEXTURE_COMPRESSED_ARB 0x86A1 #endif #ifndef GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT #define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 #endif #ifndef GL_TEXTURE_COMPRESSED_BLOCK_SIZE #define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 #endif #ifndef GL_TEXTURE_COMPRESSED_BLOCK_WIDTH #define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 #endif #ifndef GL_TEXTURE_COMPRESSED_IMAGE_SIZE #define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 #endif #ifndef GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB #define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 #endif #ifndef GL_TEXTURE_COMPRESSION_HINT #define GL_TEXTURE_COMPRESSION_HINT 0x84EF #endif #ifndef GL_TEXTURE_COMPRESSION_HINT_ARB #define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF #endif #ifndef GL_TEXTURE_CONSTANT_DATA_SUNX #define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 #endif #ifndef GL_TEXTURE_COORD_ARRAY #define GL_TEXTURE_COORD_ARRAY 0x8078 #endif #ifndef GL_TEXTURE_COORD_ARRAY_ADDRESS_NV #define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 #endif #ifndef GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING #define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A #endif #ifndef GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB #define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A #endif #ifndef GL_TEXTURE_COORD_ARRAY_COUNT_EXT #define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B #endif #ifndef GL_TEXTURE_COORD_ARRAY_EXT #define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 #endif #ifndef GL_TEXTURE_COORD_ARRAY_LENGTH_NV #define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F #endif #ifndef GL_TEXTURE_COORD_ARRAY_LIST_IBM #define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 #endif #ifndef GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM #define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 #endif #ifndef GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL #define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 #endif #ifndef GL_TEXTURE_COORD_ARRAY_POINTER #define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 #endif #ifndef GL_TEXTURE_COORD_ARRAY_POINTER_EXT #define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 #endif #ifndef GL_TEXTURE_COORD_ARRAY_SIZE #define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 #endif #ifndef GL_TEXTURE_COORD_ARRAY_SIZE_EXT #define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 #endif #ifndef GL_TEXTURE_COORD_ARRAY_STRIDE #define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A #endif #ifndef GL_TEXTURE_COORD_ARRAY_STRIDE_EXT #define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A #endif #ifndef GL_TEXTURE_COORD_ARRAY_TYPE #define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 #endif #ifndef GL_TEXTURE_COORD_ARRAY_TYPE_EXT #define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 #endif #ifndef GL_TEXTURE_COORD_NV #define GL_TEXTURE_COORD_NV 0x8C79 #endif #ifndef GL_TEXTURE_COVERAGE_SAMPLES_NV #define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045 #endif #ifndef GL_TEXTURE_CUBE_MAP #define GL_TEXTURE_CUBE_MAP 0x8513 #endif #ifndef GL_TEXTURE_CUBE_MAP_ARB #define GL_TEXTURE_CUBE_MAP_ARB 0x8513 #endif #ifndef GL_TEXTURE_CUBE_MAP_ARRAY #define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 #endif #ifndef GL_TEXTURE_CUBE_MAP_ARRAY_ARB #define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 #endif #ifndef GL_TEXTURE_CUBE_MAP_EXT #define GL_TEXTURE_CUBE_MAP_EXT 0x8513 #endif #ifndef GL_TEXTURE_CUBE_MAP_NEGATIVE_X #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 #endif #ifndef GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 #endif #ifndef GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 #endif #ifndef GL_TEXTURE_CUBE_MAP_NEGATIVE_Y #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 #endif #ifndef GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 #endif #ifndef GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 #endif #ifndef GL_TEXTURE_CUBE_MAP_NEGATIVE_Z #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A #endif #ifndef GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A #endif #ifndef GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A #endif #ifndef GL_TEXTURE_CUBE_MAP_POSITIVE_X #define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 #endif #ifndef GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 #endif #ifndef GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 #endif #ifndef GL_TEXTURE_CUBE_MAP_POSITIVE_Y #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 #endif #ifndef GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 #endif #ifndef GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 #endif #ifndef GL_TEXTURE_CUBE_MAP_POSITIVE_Z #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 #endif #ifndef GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 #endif #ifndef GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 #endif #ifndef GL_TEXTURE_CUBE_MAP_SEAMLESS #define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F #endif #ifndef GL_TEXTURE_DEFORMATION_BIT_SGIX #define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 #endif #ifndef GL_TEXTURE_DEFORMATION_SGIX #define GL_TEXTURE_DEFORMATION_SGIX 0x8195 #endif #ifndef GL_TEXTURE_DEPTH #define GL_TEXTURE_DEPTH 0x8071 #endif #ifndef GL_TEXTURE_DEPTH_EXT #define GL_TEXTURE_DEPTH_EXT 0x8071 #endif #ifndef GL_TEXTURE_DEPTH_SIZE #define GL_TEXTURE_DEPTH_SIZE 0x884A #endif #ifndef GL_TEXTURE_DEPTH_SIZE_ARB #define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A #endif #ifndef GL_TEXTURE_DEPTH_TYPE #define GL_TEXTURE_DEPTH_TYPE 0x8C16 #endif #ifndef GL_TEXTURE_DEPTH_TYPE_ARB #define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 #endif #ifndef GL_TEXTURE_DS_SIZE_NV #define GL_TEXTURE_DS_SIZE_NV 0x871D #endif #ifndef GL_TEXTURE_DT_SIZE_NV #define GL_TEXTURE_DT_SIZE_NV 0x871E #endif #ifndef GL_TEXTURE_ENV #define GL_TEXTURE_ENV 0x2300 #endif #ifndef GL_TEXTURE_ENV_BIAS_SGIX #define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE #endif #ifndef GL_TEXTURE_ENV_COLOR #define GL_TEXTURE_ENV_COLOR 0x2201 #endif #ifndef GL_TEXTURE_ENV_MODE #define GL_TEXTURE_ENV_MODE 0x2200 #endif #ifndef GL_TEXTURE_FETCH_BARRIER_BIT #define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 #endif #ifndef GL_TEXTURE_FETCH_BARRIER_BIT_EXT #define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 #endif #ifndef GL_TEXTURE_FILTER4_SIZE_SGIS #define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 #endif #ifndef GL_TEXTURE_FILTER_CONTROL #define GL_TEXTURE_FILTER_CONTROL 0x8500 #endif #ifndef GL_TEXTURE_FILTER_CONTROL_EXT #define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 #endif #ifndef GL_TEXTURE_FIXED_SAMPLE_LOCATIONS #define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 #endif #ifndef GL_TEXTURE_FLOAT_COMPONENTS_NV #define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C #endif #ifndef GL_TEXTURE_FREE_MEMORY_ATI #define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC #endif #ifndef GL_TEXTURE_GATHER #define GL_TEXTURE_GATHER 0x82A2 #endif #ifndef GL_TEXTURE_GATHER_SHADOW #define GL_TEXTURE_GATHER_SHADOW 0x82A3 #endif #ifndef GL_TEXTURE_GEN_MODE #define GL_TEXTURE_GEN_MODE 0x2500 #endif #ifndef GL_TEXTURE_GEN_Q #define GL_TEXTURE_GEN_Q 0x0C63 #endif #ifndef GL_TEXTURE_GEN_R #define GL_TEXTURE_GEN_R 0x0C62 #endif #ifndef GL_TEXTURE_GEN_S #define GL_TEXTURE_GEN_S 0x0C60 #endif #ifndef GL_TEXTURE_GEN_T #define GL_TEXTURE_GEN_T 0x0C61 #endif #ifndef GL_TEXTURE_GEQUAL_R_SGIX #define GL_TEXTURE_GEQUAL_R_SGIX 0x819D #endif #ifndef GL_TEXTURE_GREEN_SIZE #define GL_TEXTURE_GREEN_SIZE 0x805D #endif #ifndef GL_TEXTURE_GREEN_SIZE_EXT #define GL_TEXTURE_GREEN_SIZE_EXT 0x805D #endif #ifndef GL_TEXTURE_GREEN_TYPE #define GL_TEXTURE_GREEN_TYPE 0x8C11 #endif #ifndef GL_TEXTURE_GREEN_TYPE_ARB #define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 #endif #ifndef GL_TEXTURE_HEIGHT #define GL_TEXTURE_HEIGHT 0x1001 #endif #ifndef GL_TEXTURE_HI_SIZE_NV #define GL_TEXTURE_HI_SIZE_NV 0x871B #endif #ifndef GL_TEXTURE_IMAGE_FORMAT #define GL_TEXTURE_IMAGE_FORMAT 0x828F #endif #ifndef GL_TEXTURE_IMAGE_TYPE #define GL_TEXTURE_IMAGE_TYPE 0x8290 #endif #ifndef GL_TEXTURE_IMMUTABLE_FORMAT #define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F #endif #ifndef GL_TEXTURE_IMMUTABLE_LEVELS #define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF #endif #ifndef GL_TEXTURE_INDEX_SIZE_EXT #define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED #endif #ifndef GL_TEXTURE_INTENSITY_SIZE #define GL_TEXTURE_INTENSITY_SIZE 0x8061 #endif #ifndef GL_TEXTURE_INTENSITY_SIZE_EXT #define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 #endif #ifndef GL_TEXTURE_INTENSITY_TYPE #define GL_TEXTURE_INTENSITY_TYPE 0x8C15 #endif #ifndef GL_TEXTURE_INTENSITY_TYPE_ARB #define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 #endif #ifndef GL_TEXTURE_INTERNAL_FORMAT #define GL_TEXTURE_INTERNAL_FORMAT 0x1003 #endif #ifndef GL_TEXTURE_LEQUAL_R_SGIX #define GL_TEXTURE_LEQUAL_R_SGIX 0x819C #endif #ifndef GL_TEXTURE_LIGHTING_MODE_HP #define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 #endif #ifndef GL_TEXTURE_LIGHT_EXT #define GL_TEXTURE_LIGHT_EXT 0x8350 #endif #ifndef GL_TEXTURE_LOD_BIAS #define GL_TEXTURE_LOD_BIAS 0x8501 #endif #ifndef GL_TEXTURE_LOD_BIAS_EXT #define GL_TEXTURE_LOD_BIAS_EXT 0x8501 #endif #ifndef GL_TEXTURE_LOD_BIAS_R_SGIX #define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 #endif #ifndef GL_TEXTURE_LOD_BIAS_S_SGIX #define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E #endif #ifndef GL_TEXTURE_LOD_BIAS_T_SGIX #define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F #endif #ifndef GL_TEXTURE_LO_SIZE_NV #define GL_TEXTURE_LO_SIZE_NV 0x871C #endif #ifndef GL_TEXTURE_LUMINANCE_SIZE #define GL_TEXTURE_LUMINANCE_SIZE 0x8060 #endif #ifndef GL_TEXTURE_LUMINANCE_SIZE_EXT #define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 #endif #ifndef GL_TEXTURE_LUMINANCE_TYPE #define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 #endif #ifndef GL_TEXTURE_LUMINANCE_TYPE_ARB #define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 #endif #ifndef GL_TEXTURE_MAG_FILTER #define GL_TEXTURE_MAG_FILTER 0x2800 #endif #ifndef GL_TEXTURE_MAG_SIZE_NV #define GL_TEXTURE_MAG_SIZE_NV 0x871F #endif #ifndef GL_TEXTURE_MATERIAL_FACE_EXT #define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 #endif #ifndef GL_TEXTURE_MATERIAL_PARAMETER_EXT #define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 #endif #ifndef GL_TEXTURE_MATRIX #define GL_TEXTURE_MATRIX 0x0BA8 #endif #ifndef GL_TEXTURE_MAX_ANISOTROPY_EXT #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE #endif #ifndef GL_TEXTURE_MAX_CLAMP_R_SGIX #define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B #endif #ifndef GL_TEXTURE_MAX_CLAMP_S_SGIX #define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 #endif #ifndef GL_TEXTURE_MAX_CLAMP_T_SGIX #define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A #endif #ifndef GL_TEXTURE_MAX_LEVEL #define GL_TEXTURE_MAX_LEVEL 0x813D #endif #ifndef GL_TEXTURE_MAX_LEVEL_SGIS #define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D #endif #ifndef GL_TEXTURE_MAX_LOD #define GL_TEXTURE_MAX_LOD 0x813B #endif #ifndef GL_TEXTURE_MAX_LOD_SGIS #define GL_TEXTURE_MAX_LOD_SGIS 0x813B #endif #ifndef GL_TEXTURE_MEMORY_LAYOUT_INTEL #define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF #endif #ifndef GL_TEXTURE_MIN_FILTER #define GL_TEXTURE_MIN_FILTER 0x2801 #endif #ifndef GL_TEXTURE_MIN_LOD #define GL_TEXTURE_MIN_LOD 0x813A #endif #ifndef GL_TEXTURE_MIN_LOD_SGIS #define GL_TEXTURE_MIN_LOD_SGIS 0x813A #endif #ifndef GL_TEXTURE_MULTI_BUFFER_HINT_SGIX #define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E #endif #ifndef GL_TEXTURE_NORMAL_EXT #define GL_TEXTURE_NORMAL_EXT 0x85AF #endif #ifndef GL_TEXTURE_POST_SPECULAR_HP #define GL_TEXTURE_POST_SPECULAR_HP 0x8168 #endif #ifndef GL_TEXTURE_PRE_SPECULAR_HP #define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 #endif #ifndef GL_TEXTURE_PRIORITY #define GL_TEXTURE_PRIORITY 0x8066 #endif #ifndef GL_TEXTURE_PRIORITY_EXT #define GL_TEXTURE_PRIORITY_EXT 0x8066 #endif #ifndef GL_TEXTURE_RANGE_LENGTH_APPLE #define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 #endif #ifndef GL_TEXTURE_RANGE_POINTER_APPLE #define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 #endif #ifndef GL_TEXTURE_RECTANGLE #define GL_TEXTURE_RECTANGLE 0x84F5 #endif #ifndef GL_TEXTURE_RECTANGLE_ARB #define GL_TEXTURE_RECTANGLE_ARB 0x84F5 #endif #ifndef GL_TEXTURE_RECTANGLE_NV #define GL_TEXTURE_RECTANGLE_NV 0x84F5 #endif #ifndef GL_TEXTURE_RED_SIZE #define GL_TEXTURE_RED_SIZE 0x805C #endif #ifndef GL_TEXTURE_RED_SIZE_EXT #define GL_TEXTURE_RED_SIZE_EXT 0x805C #endif #ifndef GL_TEXTURE_RED_TYPE #define GL_TEXTURE_RED_TYPE 0x8C10 #endif #ifndef GL_TEXTURE_RED_TYPE_ARB #define GL_TEXTURE_RED_TYPE_ARB 0x8C10 #endif #ifndef GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV #define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 #endif #ifndef GL_TEXTURE_RENDERBUFFER_NV #define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 #endif #ifndef GL_TEXTURE_RESIDENT #define GL_TEXTURE_RESIDENT 0x8067 #endif #ifndef GL_TEXTURE_RESIDENT_EXT #define GL_TEXTURE_RESIDENT_EXT 0x8067 #endif #ifndef GL_TEXTURE_SAMPLES #define GL_TEXTURE_SAMPLES 0x9106 #endif #ifndef GL_TEXTURE_SHADER_NV #define GL_TEXTURE_SHADER_NV 0x86DE #endif #ifndef GL_TEXTURE_SHADOW #define GL_TEXTURE_SHADOW 0x82A1 #endif #ifndef GL_TEXTURE_SHARED_SIZE #define GL_TEXTURE_SHARED_SIZE 0x8C3F #endif #ifndef GL_TEXTURE_SHARED_SIZE_EXT #define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F #endif #ifndef GL_TEXTURE_SPARSE_ARB #define GL_TEXTURE_SPARSE_ARB 0x91A6 #endif #ifndef GL_TEXTURE_SRGB_DECODE_EXT #define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 #endif #ifndef GL_TEXTURE_STACK_DEPTH #define GL_TEXTURE_STACK_DEPTH 0x0BA5 #endif #ifndef GL_TEXTURE_STENCIL_SIZE #define GL_TEXTURE_STENCIL_SIZE 0x88F1 #endif #ifndef GL_TEXTURE_STENCIL_SIZE_EXT #define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 #endif #ifndef GL_TEXTURE_STORAGE_HINT_APPLE #define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC #endif #ifndef GL_TEXTURE_STORAGE_SPARSE_BIT_AMD #define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 #endif #ifndef GL_TEXTURE_SWIZZLE_A #define GL_TEXTURE_SWIZZLE_A 0x8E45 #endif #ifndef GL_TEXTURE_SWIZZLE_A_EXT #define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 #endif #ifndef GL_TEXTURE_SWIZZLE_B #define GL_TEXTURE_SWIZZLE_B 0x8E44 #endif #ifndef GL_TEXTURE_SWIZZLE_B_EXT #define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 #endif #ifndef GL_TEXTURE_SWIZZLE_G #define GL_TEXTURE_SWIZZLE_G 0x8E43 #endif #ifndef GL_TEXTURE_SWIZZLE_G_EXT #define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 #endif #ifndef GL_TEXTURE_SWIZZLE_R #define GL_TEXTURE_SWIZZLE_R 0x8E42 #endif #ifndef GL_TEXTURE_SWIZZLE_RGBA #define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 #endif #ifndef GL_TEXTURE_SWIZZLE_RGBA_EXT #define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 #endif #ifndef GL_TEXTURE_SWIZZLE_R_EXT #define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 #endif #ifndef GL_TEXTURE_TARGET #define GL_TEXTURE_TARGET 0x1006 #endif #ifndef GL_TEXTURE_TOO_LARGE_EXT #define GL_TEXTURE_TOO_LARGE_EXT 0x8065 #endif #ifndef GL_TEXTURE_UNSIGNED_REMAP_MODE_NV #define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F #endif #ifndef GL_TEXTURE_UPDATE_BARRIER_BIT #define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 #endif #ifndef GL_TEXTURE_UPDATE_BARRIER_BIT_EXT #define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 #endif #ifndef GL_TEXTURE_VIEW #define GL_TEXTURE_VIEW 0x82B5 #endif #ifndef GL_TEXTURE_VIEW_MIN_LAYER #define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD #endif #ifndef GL_TEXTURE_VIEW_MIN_LEVEL #define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB #endif #ifndef GL_TEXTURE_VIEW_NUM_LAYERS #define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE #endif #ifndef GL_TEXTURE_VIEW_NUM_LEVELS #define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC #endif #ifndef GL_TEXTURE_WIDTH #define GL_TEXTURE_WIDTH 0x1000 #endif #ifndef GL_TEXTURE_WRAP_Q_SGIS #define GL_TEXTURE_WRAP_Q_SGIS 0x8137 #endif #ifndef GL_TEXTURE_WRAP_R #define GL_TEXTURE_WRAP_R 0x8072 #endif #ifndef GL_TEXTURE_WRAP_R_EXT #define GL_TEXTURE_WRAP_R_EXT 0x8072 #endif #ifndef GL_TEXTURE_WRAP_S #define GL_TEXTURE_WRAP_S 0x2802 #endif #ifndef GL_TEXTURE_WRAP_T #define GL_TEXTURE_WRAP_T 0x2803 #endif #ifndef GL_TEXT_FRAGMENT_SHADER_ATI #define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 #endif #ifndef GL_TIMEOUT_EXPIRED #define GL_TIMEOUT_EXPIRED 0x911B #endif #ifndef GL_TIMEOUT_IGNORED #define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull #endif #ifndef GL_TIMESTAMP #define GL_TIMESTAMP 0x8E28 #endif #ifndef GL_TIME_ELAPSED #define GL_TIME_ELAPSED 0x88BF #endif #ifndef GL_TIME_ELAPSED_EXT #define GL_TIME_ELAPSED_EXT 0x88BF #endif #ifndef GL_TOP_LEVEL_ARRAY_SIZE #define GL_TOP_LEVEL_ARRAY_SIZE 0x930C #endif #ifndef GL_TOP_LEVEL_ARRAY_STRIDE #define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D #endif #ifndef GL_TRACE_ALL_BITS_MESA #define GL_TRACE_ALL_BITS_MESA 0xFFFF #endif #ifndef GL_TRACE_ARRAYS_BIT_MESA #define GL_TRACE_ARRAYS_BIT_MESA 0x0004 #endif #ifndef GL_TRACE_ERRORS_BIT_MESA #define GL_TRACE_ERRORS_BIT_MESA 0x0020 #endif #ifndef GL_TRACE_MASK_MESA #define GL_TRACE_MASK_MESA 0x8755 #endif #ifndef GL_TRACE_NAME_MESA #define GL_TRACE_NAME_MESA 0x8756 #endif #ifndef GL_TRACE_OPERATIONS_BIT_MESA #define GL_TRACE_OPERATIONS_BIT_MESA 0x0001 #endif #ifndef GL_TRACE_PIXELS_BIT_MESA #define GL_TRACE_PIXELS_BIT_MESA 0x0010 #endif #ifndef GL_TRACE_PRIMITIVES_BIT_MESA #define GL_TRACE_PRIMITIVES_BIT_MESA 0x0002 #endif #ifndef GL_TRACE_TEXTURES_BIT_MESA #define GL_TRACE_TEXTURES_BIT_MESA 0x0008 #endif #ifndef GL_TRACK_MATRIX_NV #define GL_TRACK_MATRIX_NV 0x8648 #endif #ifndef GL_TRACK_MATRIX_TRANSFORM_NV #define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 #endif #ifndef GL_TRANSFORM_BIT #define GL_TRANSFORM_BIT 0x00001000 #endif #ifndef GL_TRANSFORM_FEEDBACK #define GL_TRANSFORM_FEEDBACK 0x8E22 #endif #ifndef GL_TRANSFORM_FEEDBACK_ACTIVE #define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 #endif #ifndef GL_TRANSFORM_FEEDBACK_ATTRIBS_NV #define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E #endif #ifndef GL_TRANSFORM_FEEDBACK_BARRIER_BIT #define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 #endif #ifndef GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT #define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 #endif #ifndef GL_TRANSFORM_FEEDBACK_BINDING #define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 #endif #ifndef GL_TRANSFORM_FEEDBACK_BINDING_NV #define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER #define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE #define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV #define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_BINDING #define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT #define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV #define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_EXT #define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_INDEX #define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_MODE #define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT #define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV #define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_NV #define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED #define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV #define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_SIZE #define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT #define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV #define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_START #define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT #define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_START_NV #define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 #endif #ifndef GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE #define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C #endif #ifndef GL_TRANSFORM_FEEDBACK_NV #define GL_TRANSFORM_FEEDBACK_NV 0x8E22 #endif #ifndef GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB #define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC #endif #ifndef GL_TRANSFORM_FEEDBACK_PAUSED #define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 #endif #ifndef GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN #define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 #endif #ifndef GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT #define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 #endif #ifndef GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV #define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 #endif #ifndef GL_TRANSFORM_FEEDBACK_RECORD_NV #define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 #endif #ifndef GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB #define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED #endif #ifndef GL_TRANSFORM_FEEDBACK_VARYING #define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 #endif #ifndef GL_TRANSFORM_FEEDBACK_VARYINGS #define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 #endif #ifndef GL_TRANSFORM_FEEDBACK_VARYINGS_EXT #define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 #endif #ifndef GL_TRANSFORM_FEEDBACK_VARYINGS_NV #define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 #endif #ifndef GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH #define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 #endif #ifndef GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT #define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 #endif #ifndef GL_TRANSFORM_HINT_APPLE #define GL_TRANSFORM_HINT_APPLE 0x85B1 #endif #ifndef GL_TRANSLATE_2D_NV #define GL_TRANSLATE_2D_NV 0x9090 #endif #ifndef GL_TRANSLATE_3D_NV #define GL_TRANSLATE_3D_NV 0x9091 #endif #ifndef GL_TRANSLATE_X_NV #define GL_TRANSLATE_X_NV 0x908E #endif #ifndef GL_TRANSLATE_Y_NV #define GL_TRANSLATE_Y_NV 0x908F #endif #ifndef GL_TRANSPOSE_AFFINE_2D_NV #define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 #endif #ifndef GL_TRANSPOSE_AFFINE_3D_NV #define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 #endif #ifndef GL_TRANSPOSE_COLOR_MATRIX #define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 #endif #ifndef GL_TRANSPOSE_COLOR_MATRIX_ARB #define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 #endif #ifndef GL_TRANSPOSE_CURRENT_MATRIX_ARB #define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 #endif #ifndef GL_TRANSPOSE_MODELVIEW_MATRIX #define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 #endif #ifndef GL_TRANSPOSE_MODELVIEW_MATRIX_ARB #define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 #endif #ifndef GL_TRANSPOSE_NV #define GL_TRANSPOSE_NV 0x862C #endif #ifndef GL_TRANSPOSE_PROGRAM_MATRIX_EXT #define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E #endif #ifndef GL_TRANSPOSE_PROJECTION_MATRIX #define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 #endif #ifndef GL_TRANSPOSE_PROJECTION_MATRIX_ARB #define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 #endif #ifndef GL_TRANSPOSE_PROJECTIVE_2D_NV #define GL_TRANSPOSE_PROJECTIVE_2D_NV 0x9097 #endif #ifndef GL_TRANSPOSE_PROJECTIVE_3D_NV #define GL_TRANSPOSE_PROJECTIVE_3D_NV 0x9099 #endif #ifndef GL_TRANSPOSE_TEXTURE_MATRIX #define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 #endif #ifndef GL_TRANSPOSE_TEXTURE_MATRIX_ARB #define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 #endif #ifndef GL_TRIANGLES #define GL_TRIANGLES 0x0004 #endif #ifndef GL_TRIANGLES_ADJACENCY #define GL_TRIANGLES_ADJACENCY 0x000C #endif #ifndef GL_TRIANGLES_ADJACENCY_ARB #define GL_TRIANGLES_ADJACENCY_ARB 0x000C #endif #ifndef GL_TRIANGLES_ADJACENCY_EXT #define GL_TRIANGLES_ADJACENCY_EXT 0x000C #endif #ifndef GL_TRIANGLE_FAN #define GL_TRIANGLE_FAN 0x0006 #endif #ifndef GL_TRIANGLE_LIST_SUN #define GL_TRIANGLE_LIST_SUN 0x81D7 #endif #ifndef GL_TRIANGLE_MESH_SUN #define GL_TRIANGLE_MESH_SUN 0x8615 #endif #ifndef GL_TRIANGLE_STRIP #define GL_TRIANGLE_STRIP 0x0005 #endif #ifndef GL_TRIANGLE_STRIP_ADJACENCY #define GL_TRIANGLE_STRIP_ADJACENCY 0x000D #endif #ifndef GL_TRIANGLE_STRIP_ADJACENCY_ARB #define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D #endif #ifndef GL_TRIANGLE_STRIP_ADJACENCY_EXT #define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D #endif #ifndef GL_TRIANGULAR_NV #define GL_TRIANGULAR_NV 0x90A5 #endif #ifndef GL_TRUE #define GL_TRUE 1 #endif #ifndef GL_TYPE #define GL_TYPE 0x92FA #endif #ifndef GL_UNCORRELATED_NV #define GL_UNCORRELATED_NV 0x9282 #endif #ifndef GL_UNDEFINED_APPLE #define GL_UNDEFINED_APPLE 0x8A1C #endif #ifndef GL_UNDEFINED_VERTEX #define GL_UNDEFINED_VERTEX 0x8260 #endif #ifndef GL_UNIFORM #define GL_UNIFORM 0x92E1 #endif #ifndef GL_UNIFORM_ADDRESS_COMMAND_NV #define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000A #endif #ifndef GL_UNIFORM_ARRAY_STRIDE #define GL_UNIFORM_ARRAY_STRIDE 0x8A3C #endif #ifndef GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX #define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA #endif #ifndef GL_UNIFORM_BARRIER_BIT #define GL_UNIFORM_BARRIER_BIT 0x00000004 #endif #ifndef GL_UNIFORM_BARRIER_BIT_EXT #define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 #endif #ifndef GL_UNIFORM_BLOCK #define GL_UNIFORM_BLOCK 0x92E2 #endif #ifndef GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS #define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 #endif #ifndef GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES #define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 #endif #ifndef GL_UNIFORM_BLOCK_BINDING #define GL_UNIFORM_BLOCK_BINDING 0x8A3F #endif #ifndef GL_UNIFORM_BLOCK_DATA_SIZE #define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 #endif #ifndef GL_UNIFORM_BLOCK_INDEX #define GL_UNIFORM_BLOCK_INDEX 0x8A3A #endif #ifndef GL_UNIFORM_BLOCK_NAME_LENGTH #define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 #endif #ifndef GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER #define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC #endif #ifndef GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER #define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 #endif #ifndef GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER #define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 #endif #ifndef GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER #define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 #endif #ifndef GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER #define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 #endif #ifndef GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER #define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 #endif #ifndef GL_UNIFORM_BUFFER #define GL_UNIFORM_BUFFER 0x8A11 #endif #ifndef GL_UNIFORM_BUFFER_ADDRESS_NV #define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F #endif #ifndef GL_UNIFORM_BUFFER_BINDING #define GL_UNIFORM_BUFFER_BINDING 0x8A28 #endif #ifndef GL_UNIFORM_BUFFER_BINDING_EXT #define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF #endif #ifndef GL_UNIFORM_BUFFER_EXT #define GL_UNIFORM_BUFFER_EXT 0x8DEE #endif #ifndef GL_UNIFORM_BUFFER_LENGTH_NV #define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370 #endif #ifndef GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT #define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 #endif #ifndef GL_UNIFORM_BUFFER_SIZE #define GL_UNIFORM_BUFFER_SIZE 0x8A2A #endif #ifndef GL_UNIFORM_BUFFER_START #define GL_UNIFORM_BUFFER_START 0x8A29 #endif #ifndef GL_UNIFORM_BUFFER_UNIFIED_NV #define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E #endif #ifndef GL_UNIFORM_IS_ROW_MAJOR #define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E #endif #ifndef GL_UNIFORM_MATRIX_STRIDE #define GL_UNIFORM_MATRIX_STRIDE 0x8A3D #endif #ifndef GL_UNIFORM_NAME_LENGTH #define GL_UNIFORM_NAME_LENGTH 0x8A39 #endif #ifndef GL_UNIFORM_OFFSET #define GL_UNIFORM_OFFSET 0x8A3B #endif #ifndef GL_UNIFORM_SIZE #define GL_UNIFORM_SIZE 0x8A38 #endif #ifndef GL_UNIFORM_TYPE #define GL_UNIFORM_TYPE 0x8A37 #endif #ifndef GL_UNKNOWN_CONTEXT_RESET #define GL_UNKNOWN_CONTEXT_RESET 0x8255 #endif #ifndef GL_UNKNOWN_CONTEXT_RESET_ARB #define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 #endif #ifndef GL_UNPACK_ALIGNMENT #define GL_UNPACK_ALIGNMENT 0x0CF5 #endif #ifndef GL_UNPACK_CLIENT_STORAGE_APPLE #define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 #endif #ifndef GL_UNPACK_CMYK_HINT_EXT #define GL_UNPACK_CMYK_HINT_EXT 0x800F #endif #ifndef GL_UNPACK_COMPRESSED_BLOCK_DEPTH #define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129 #endif #ifndef GL_UNPACK_COMPRESSED_BLOCK_HEIGHT #define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128 #endif #ifndef GL_UNPACK_COMPRESSED_BLOCK_SIZE #define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A #endif #ifndef GL_UNPACK_COMPRESSED_BLOCK_WIDTH #define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127 #endif #ifndef GL_UNPACK_CONSTANT_DATA_SUNX #define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 #endif #ifndef GL_UNPACK_IMAGE_DEPTH_SGIS #define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 #endif #ifndef GL_UNPACK_IMAGE_HEIGHT #define GL_UNPACK_IMAGE_HEIGHT 0x806E #endif #ifndef GL_UNPACK_IMAGE_HEIGHT_EXT #define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E #endif #ifndef GL_UNPACK_LSB_FIRST #define GL_UNPACK_LSB_FIRST 0x0CF1 #endif #ifndef GL_UNPACK_RESAMPLE_OML #define GL_UNPACK_RESAMPLE_OML 0x8985 #endif #ifndef GL_UNPACK_RESAMPLE_SGIX #define GL_UNPACK_RESAMPLE_SGIX 0x842D #endif #ifndef GL_UNPACK_ROW_BYTES_APPLE #define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 #endif #ifndef GL_UNPACK_ROW_LENGTH #define GL_UNPACK_ROW_LENGTH 0x0CF2 #endif #ifndef GL_UNPACK_SKIP_IMAGES #define GL_UNPACK_SKIP_IMAGES 0x806D #endif #ifndef GL_UNPACK_SKIP_IMAGES_EXT #define GL_UNPACK_SKIP_IMAGES_EXT 0x806D #endif #ifndef GL_UNPACK_SKIP_PIXELS #define GL_UNPACK_SKIP_PIXELS 0x0CF4 #endif #ifndef GL_UNPACK_SKIP_ROWS #define GL_UNPACK_SKIP_ROWS 0x0CF3 #endif #ifndef GL_UNPACK_SKIP_VOLUMES_SGIS #define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 #endif #ifndef GL_UNPACK_SUBSAMPLE_RATE_SGIX #define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 #endif #ifndef GL_UNPACK_SWAP_BYTES #define GL_UNPACK_SWAP_BYTES 0x0CF0 #endif #ifndef GL_UNSIGNALED #define GL_UNSIGNALED 0x9118 #endif #ifndef GL_UNSIGNED_BYTE #define GL_UNSIGNED_BYTE 0x1401 #endif #ifndef GL_UNSIGNED_BYTE_2_3_3_REV #define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 #endif #ifndef GL_UNSIGNED_BYTE_3_3_2 #define GL_UNSIGNED_BYTE_3_3_2 0x8032 #endif #ifndef GL_UNSIGNED_BYTE_3_3_2_EXT #define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 #endif #ifndef GL_UNSIGNED_IDENTITY_NV #define GL_UNSIGNED_IDENTITY_NV 0x8536 #endif #ifndef GL_UNSIGNED_INT #define GL_UNSIGNED_INT 0x1405 #endif #ifndef GL_UNSIGNED_INT16_NV #define GL_UNSIGNED_INT16_NV 0x8FF0 #endif #ifndef GL_UNSIGNED_INT16_VEC2_NV #define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 #endif #ifndef GL_UNSIGNED_INT16_VEC3_NV #define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 #endif #ifndef GL_UNSIGNED_INT16_VEC4_NV #define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 #endif #ifndef GL_UNSIGNED_INT64_AMD #define GL_UNSIGNED_INT64_AMD 0x8BC2 #endif #ifndef GL_UNSIGNED_INT64_ARB #define GL_UNSIGNED_INT64_ARB 0x140F #endif #ifndef GL_UNSIGNED_INT64_NV #define GL_UNSIGNED_INT64_NV 0x140F #endif #ifndef GL_UNSIGNED_INT64_VEC2_NV #define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 #endif #ifndef GL_UNSIGNED_INT64_VEC3_NV #define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 #endif #ifndef GL_UNSIGNED_INT64_VEC4_NV #define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 #endif #ifndef GL_UNSIGNED_INT8_NV #define GL_UNSIGNED_INT8_NV 0x8FEC #endif #ifndef GL_UNSIGNED_INT8_VEC2_NV #define GL_UNSIGNED_INT8_VEC2_NV 0x8FED #endif #ifndef GL_UNSIGNED_INT8_VEC3_NV #define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE #endif #ifndef GL_UNSIGNED_INT8_VEC4_NV #define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF #endif #ifndef GL_UNSIGNED_INT_10F_11F_11F_REV #define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B #endif #ifndef GL_UNSIGNED_INT_10F_11F_11F_REV_EXT #define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B #endif #ifndef GL_UNSIGNED_INT_10_10_10_2 #define GL_UNSIGNED_INT_10_10_10_2 0x8036 #endif #ifndef GL_UNSIGNED_INT_10_10_10_2_EXT #define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 #endif #ifndef GL_UNSIGNED_INT_24_8 #define GL_UNSIGNED_INT_24_8 0x84FA #endif #ifndef GL_UNSIGNED_INT_24_8_EXT #define GL_UNSIGNED_INT_24_8_EXT 0x84FA #endif #ifndef GL_UNSIGNED_INT_24_8_MESA #define GL_UNSIGNED_INT_24_8_MESA 0x8751 #endif #ifndef GL_UNSIGNED_INT_24_8_NV #define GL_UNSIGNED_INT_24_8_NV 0x84FA #endif #ifndef GL_UNSIGNED_INT_2_10_10_10_REV #define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 #endif #ifndef GL_UNSIGNED_INT_5_9_9_9_REV #define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E #endif #ifndef GL_UNSIGNED_INT_5_9_9_9_REV_EXT #define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E #endif #ifndef GL_UNSIGNED_INT_8_24_REV_MESA #define GL_UNSIGNED_INT_8_24_REV_MESA 0x8752 #endif #ifndef GL_UNSIGNED_INT_8_8_8_8 #define GL_UNSIGNED_INT_8_8_8_8 0x8035 #endif #ifndef GL_UNSIGNED_INT_8_8_8_8_EXT #define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 #endif #ifndef GL_UNSIGNED_INT_8_8_8_8_REV #define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 #endif #ifndef GL_UNSIGNED_INT_8_8_S8_S8_REV_NV #define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB #endif #ifndef GL_UNSIGNED_INT_ATOMIC_COUNTER #define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB #endif #ifndef GL_UNSIGNED_INT_IMAGE_1D #define GL_UNSIGNED_INT_IMAGE_1D 0x9062 #endif #ifndef GL_UNSIGNED_INT_IMAGE_1D_ARRAY #define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 #endif #ifndef GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT #define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 #endif #ifndef GL_UNSIGNED_INT_IMAGE_1D_EXT #define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 #endif #ifndef GL_UNSIGNED_INT_IMAGE_2D #define GL_UNSIGNED_INT_IMAGE_2D 0x9063 #endif #ifndef GL_UNSIGNED_INT_IMAGE_2D_ARRAY #define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 #endif #ifndef GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT #define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 #endif #ifndef GL_UNSIGNED_INT_IMAGE_2D_EXT #define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 #endif #ifndef GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B #endif #ifndef GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C #endif #ifndef GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C #endif #ifndef GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B #endif #ifndef GL_UNSIGNED_INT_IMAGE_2D_RECT #define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 #endif #ifndef GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT #define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 #endif #ifndef GL_UNSIGNED_INT_IMAGE_3D #define GL_UNSIGNED_INT_IMAGE_3D 0x9064 #endif #ifndef GL_UNSIGNED_INT_IMAGE_3D_EXT #define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 #endif #ifndef GL_UNSIGNED_INT_IMAGE_BUFFER #define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 #endif #ifndef GL_UNSIGNED_INT_IMAGE_BUFFER_EXT #define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 #endif #ifndef GL_UNSIGNED_INT_IMAGE_CUBE #define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 #endif #ifndef GL_UNSIGNED_INT_IMAGE_CUBE_EXT #define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 #endif #ifndef GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY #define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A #endif #ifndef GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT #define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A #endif #ifndef GL_UNSIGNED_INT_S8_S8_8_8_NV #define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA #endif #ifndef GL_UNSIGNED_INT_SAMPLER_1D #define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_1D_ARRAY #define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT #define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_1D_EXT #define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_2D #define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_2D_ARRAY #define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT #define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_2D_EXT #define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A #endif #ifndef GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D #endif #ifndef GL_UNSIGNED_INT_SAMPLER_2D_RECT #define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT #define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_3D #define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_3D_EXT #define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_BUFFER #define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD #define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT #define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_CUBE #define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_CUBE_EXT #define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 #endif #ifndef GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY #define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F #endif #ifndef GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB #define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F #endif #ifndef GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV #define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 #endif #ifndef GL_UNSIGNED_INT_VEC2 #define GL_UNSIGNED_INT_VEC2 0x8DC6 #endif #ifndef GL_UNSIGNED_INT_VEC2_EXT #define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 #endif #ifndef GL_UNSIGNED_INT_VEC3 #define GL_UNSIGNED_INT_VEC3 0x8DC7 #endif #ifndef GL_UNSIGNED_INT_VEC3_EXT #define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 #endif #ifndef GL_UNSIGNED_INT_VEC4 #define GL_UNSIGNED_INT_VEC4 0x8DC8 #endif #ifndef GL_UNSIGNED_INT_VEC4_EXT #define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 #endif #ifndef GL_UNSIGNED_INVERT_NV #define GL_UNSIGNED_INVERT_NV 0x8537 #endif #ifndef GL_UNSIGNED_NORMALIZED #define GL_UNSIGNED_NORMALIZED 0x8C17 #endif #ifndef GL_UNSIGNED_NORMALIZED_ARB #define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 #endif #ifndef GL_UNSIGNED_SHORT #define GL_UNSIGNED_SHORT 0x1403 #endif #ifndef GL_UNSIGNED_SHORT_15_1_MESA #define GL_UNSIGNED_SHORT_15_1_MESA 0x8753 #endif #ifndef GL_UNSIGNED_SHORT_1_15_REV_MESA #define GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754 #endif #ifndef GL_UNSIGNED_SHORT_1_5_5_5_REV #define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 #endif #ifndef GL_UNSIGNED_SHORT_4_4_4_4 #define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 #endif #ifndef GL_UNSIGNED_SHORT_4_4_4_4_EXT #define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 #endif #ifndef GL_UNSIGNED_SHORT_4_4_4_4_REV #define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 #endif #ifndef GL_UNSIGNED_SHORT_5_5_5_1 #define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 #endif #ifndef GL_UNSIGNED_SHORT_5_5_5_1_EXT #define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 #endif #ifndef GL_UNSIGNED_SHORT_5_6_5 #define GL_UNSIGNED_SHORT_5_6_5 0x8363 #endif #ifndef GL_UNSIGNED_SHORT_5_6_5_REV #define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 #endif #ifndef GL_UNSIGNED_SHORT_8_8_APPLE #define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA #endif #ifndef GL_UNSIGNED_SHORT_8_8_MESA #define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA #endif #ifndef GL_UNSIGNED_SHORT_8_8_REV_APPLE #define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB #endif #ifndef GL_UNSIGNED_SHORT_8_8_REV_MESA #define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB #endif #ifndef GL_UPPER_LEFT #define GL_UPPER_LEFT 0x8CA2 #endif #ifndef GL_USE_MISSING_GLYPH_NV #define GL_USE_MISSING_GLYPH_NV 0x90AA #endif #ifndef GL_UTF16_NV #define GL_UTF16_NV 0x909B #endif #ifndef GL_UTF8_NV #define GL_UTF8_NV 0x909A #endif #ifndef GL_V2F #define GL_V2F 0x2A20 #endif #ifndef GL_V3F #define GL_V3F 0x2A21 #endif #ifndef GL_VALIDATE_STATUS #define GL_VALIDATE_STATUS 0x8B83 #endif #ifndef GL_VARIABLE_A_NV #define GL_VARIABLE_A_NV 0x8523 #endif #ifndef GL_VARIABLE_B_NV #define GL_VARIABLE_B_NV 0x8524 #endif #ifndef GL_VARIABLE_C_NV #define GL_VARIABLE_C_NV 0x8525 #endif #ifndef GL_VARIABLE_D_NV #define GL_VARIABLE_D_NV 0x8526 #endif #ifndef GL_VARIABLE_E_NV #define GL_VARIABLE_E_NV 0x8527 #endif #ifndef GL_VARIABLE_F_NV #define GL_VARIABLE_F_NV 0x8528 #endif #ifndef GL_VARIABLE_G_NV #define GL_VARIABLE_G_NV 0x8529 #endif #ifndef GL_VARIANT_ARRAY_EXT #define GL_VARIANT_ARRAY_EXT 0x87E8 #endif #ifndef GL_VARIANT_ARRAY_POINTER_EXT #define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 #endif #ifndef GL_VARIANT_ARRAY_STRIDE_EXT #define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 #endif #ifndef GL_VARIANT_ARRAY_TYPE_EXT #define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 #endif #ifndef GL_VARIANT_DATATYPE_EXT #define GL_VARIANT_DATATYPE_EXT 0x87E5 #endif #ifndef GL_VARIANT_EXT #define GL_VARIANT_EXT 0x87C1 #endif #ifndef GL_VARIANT_VALUE_EXT #define GL_VARIANT_VALUE_EXT 0x87E4 #endif #ifndef GL_VBO_FREE_MEMORY_ATI #define GL_VBO_FREE_MEMORY_ATI 0x87FB #endif #ifndef GL_VECTOR_EXT #define GL_VECTOR_EXT 0x87BF #endif #ifndef GL_VENDOR #define GL_VENDOR 0x1F00 #endif #ifndef GL_VERSION #define GL_VERSION 0x1F02 #endif #ifndef GL_VERTEX23_BIT_PGI #define GL_VERTEX23_BIT_PGI 0x00000004 #endif #ifndef GL_VERTEX4_BIT_PGI #define GL_VERTEX4_BIT_PGI 0x00000008 #endif #ifndef GL_VERTEX_ARRAY #define GL_VERTEX_ARRAY 0x8074 #endif #ifndef GL_VERTEX_ARRAY_ADDRESS_NV #define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 #endif #ifndef GL_VERTEX_ARRAY_BINDING #define GL_VERTEX_ARRAY_BINDING 0x85B5 #endif #ifndef GL_VERTEX_ARRAY_BINDING_APPLE #define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 #endif #ifndef GL_VERTEX_ARRAY_BUFFER_BINDING #define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 #endif #ifndef GL_VERTEX_ARRAY_BUFFER_BINDING_ARB #define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 #endif #ifndef GL_VERTEX_ARRAY_COUNT_EXT #define GL_VERTEX_ARRAY_COUNT_EXT 0x807D #endif #ifndef GL_VERTEX_ARRAY_EXT #define GL_VERTEX_ARRAY_EXT 0x8074 #endif #ifndef GL_VERTEX_ARRAY_LENGTH_NV #define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B #endif #ifndef GL_VERTEX_ARRAY_LIST_IBM #define GL_VERTEX_ARRAY_LIST_IBM 103070 #endif #ifndef GL_VERTEX_ARRAY_LIST_STRIDE_IBM #define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 #endif #ifndef GL_VERTEX_ARRAY_OBJECT_AMD #define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 #endif #ifndef GL_VERTEX_ARRAY_OBJECT_EXT #define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 #endif #ifndef GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL #define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 #endif #ifndef GL_VERTEX_ARRAY_POINTER #define GL_VERTEX_ARRAY_POINTER 0x808E #endif #ifndef GL_VERTEX_ARRAY_POINTER_EXT #define GL_VERTEX_ARRAY_POINTER_EXT 0x808E #endif #ifndef GL_VERTEX_ARRAY_RANGE_APPLE #define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D #endif #ifndef GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE #define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E #endif #ifndef GL_VERTEX_ARRAY_RANGE_LENGTH_NV #define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E #endif #ifndef GL_VERTEX_ARRAY_RANGE_NV #define GL_VERTEX_ARRAY_RANGE_NV 0x851D #endif #ifndef GL_VERTEX_ARRAY_RANGE_POINTER_APPLE #define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 #endif #ifndef GL_VERTEX_ARRAY_RANGE_POINTER_NV #define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 #endif #ifndef GL_VERTEX_ARRAY_RANGE_VALID_NV #define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F #endif #ifndef GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV #define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 #endif #ifndef GL_VERTEX_ARRAY_SIZE #define GL_VERTEX_ARRAY_SIZE 0x807A #endif #ifndef GL_VERTEX_ARRAY_SIZE_EXT #define GL_VERTEX_ARRAY_SIZE_EXT 0x807A #endif #ifndef GL_VERTEX_ARRAY_STORAGE_HINT_APPLE #define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F #endif #ifndef GL_VERTEX_ARRAY_STRIDE #define GL_VERTEX_ARRAY_STRIDE 0x807C #endif #ifndef GL_VERTEX_ARRAY_STRIDE_EXT #define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C #endif #ifndef GL_VERTEX_ARRAY_TYPE #define GL_VERTEX_ARRAY_TYPE 0x807B #endif #ifndef GL_VERTEX_ARRAY_TYPE_EXT #define GL_VERTEX_ARRAY_TYPE_EXT 0x807B #endif #ifndef GL_VERTEX_ATTRIB_ARRAY0_NV #define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY10_NV #define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A #endif #ifndef GL_VERTEX_ATTRIB_ARRAY11_NV #define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B #endif #ifndef GL_VERTEX_ATTRIB_ARRAY12_NV #define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C #endif #ifndef GL_VERTEX_ATTRIB_ARRAY13_NV #define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D #endif #ifndef GL_VERTEX_ATTRIB_ARRAY14_NV #define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E #endif #ifndef GL_VERTEX_ATTRIB_ARRAY15_NV #define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F #endif #ifndef GL_VERTEX_ATTRIB_ARRAY1_NV #define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY2_NV #define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY3_NV #define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY4_NV #define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY5_NV #define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY6_NV #define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY7_NV #define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY8_NV #define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY9_NV #define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV #define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT #define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT #define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING #define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB #define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_DIVISOR #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_ENABLED #define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB #define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_INTEGER #define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT #define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV #define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV #define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_LONG #define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_NORMALIZED #define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB #define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_POINTER #define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB #define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_SIZE #define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB #define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_STRIDE #define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB #define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_TYPE #define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB #define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 #endif #ifndef GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV #define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E #endif #ifndef GL_VERTEX_ATTRIB_BINDING #define GL_VERTEX_ATTRIB_BINDING 0x82D4 #endif #ifndef GL_VERTEX_ATTRIB_MAP1_APPLE #define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 #endif #ifndef GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE #define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 #endif #ifndef GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE #define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 #endif #ifndef GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE #define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 #endif #ifndef GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE #define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 #endif #ifndef GL_VERTEX_ATTRIB_MAP2_APPLE #define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 #endif #ifndef GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE #define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 #endif #ifndef GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE #define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 #endif #ifndef GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE #define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 #endif #ifndef GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE #define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 #endif #ifndef GL_VERTEX_ATTRIB_RELATIVE_OFFSET #define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 #endif #ifndef GL_VERTEX_BINDING_BUFFER #define GL_VERTEX_BINDING_BUFFER 0x8F4F #endif #ifndef GL_VERTEX_BINDING_DIVISOR #define GL_VERTEX_BINDING_DIVISOR 0x82D6 #endif #ifndef GL_VERTEX_BINDING_OFFSET #define GL_VERTEX_BINDING_OFFSET 0x82D7 #endif #ifndef GL_VERTEX_BINDING_STRIDE #define GL_VERTEX_BINDING_STRIDE 0x82D8 #endif #ifndef GL_VERTEX_BLEND_ARB #define GL_VERTEX_BLEND_ARB 0x86A7 #endif #ifndef GL_VERTEX_CONSISTENT_HINT_PGI #define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B #endif #ifndef GL_VERTEX_DATA_HINT_PGI #define GL_VERTEX_DATA_HINT_PGI 0x1A22A #endif #ifndef GL_VERTEX_ELEMENT_SWIZZLE_AMD #define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4 #endif #ifndef GL_VERTEX_ID_NV #define GL_VERTEX_ID_NV 0x8C7B #endif #ifndef GL_VERTEX_ID_SWIZZLE_AMD #define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5 #endif #ifndef GL_VERTEX_PRECLIP_HINT_SGIX #define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF #endif #ifndef GL_VERTEX_PRECLIP_SGIX #define GL_VERTEX_PRECLIP_SGIX 0x83EE #endif #ifndef GL_VERTEX_PROGRAM_ARB #define GL_VERTEX_PROGRAM_ARB 0x8620 #endif #ifndef GL_VERTEX_PROGRAM_BINDING_NV #define GL_VERTEX_PROGRAM_BINDING_NV 0x864A #endif #ifndef GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA #define GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA 0x8bb7 #endif #ifndef GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA #define GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA 0x8bb6 #endif #ifndef GL_VERTEX_PROGRAM_CALLBACK_MESA #define GL_VERTEX_PROGRAM_CALLBACK_MESA 0x8bb5 #endif #ifndef GL_VERTEX_PROGRAM_NV #define GL_VERTEX_PROGRAM_NV 0x8620 #endif #ifndef GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV #define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 #endif #ifndef GL_VERTEX_PROGRAM_POINT_SIZE #define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 #endif #ifndef GL_VERTEX_PROGRAM_POINT_SIZE_ARB #define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 #endif #ifndef GL_VERTEX_PROGRAM_POINT_SIZE_NV #define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 #endif #ifndef GL_VERTEX_PROGRAM_POSITION_MESA #define GL_VERTEX_PROGRAM_POSITION_MESA 0x8bb4 #endif #ifndef GL_VERTEX_PROGRAM_TWO_SIDE #define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 #endif #ifndef GL_VERTEX_PROGRAM_TWO_SIDE_ARB #define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 #endif #ifndef GL_VERTEX_PROGRAM_TWO_SIDE_NV #define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 #endif #ifndef GL_VERTEX_SHADER #define GL_VERTEX_SHADER 0x8B31 #endif #ifndef GL_VERTEX_SHADER_ARB #define GL_VERTEX_SHADER_ARB 0x8B31 #endif #ifndef GL_VERTEX_SHADER_BINDING_EXT #define GL_VERTEX_SHADER_BINDING_EXT 0x8781 #endif #ifndef GL_VERTEX_SHADER_BIT #define GL_VERTEX_SHADER_BIT 0x00000001 #endif #ifndef GL_VERTEX_SHADER_EXT #define GL_VERTEX_SHADER_EXT 0x8780 #endif #ifndef GL_VERTEX_SHADER_INSTRUCTIONS_EXT #define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF #endif #ifndef GL_VERTEX_SHADER_INVARIANTS_EXT #define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 #endif #ifndef GL_VERTEX_SHADER_INVOCATIONS_ARB #define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0 #endif #ifndef GL_VERTEX_SHADER_LOCALS_EXT #define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 #endif #ifndef GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT #define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 #endif #ifndef GL_VERTEX_SHADER_OPTIMIZED_EXT #define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 #endif #ifndef GL_VERTEX_SHADER_VARIANTS_EXT #define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 #endif #ifndef GL_VERTEX_SOURCE_ATI #define GL_VERTEX_SOURCE_ATI 0x8774 #endif #ifndef GL_VERTEX_STATE_PROGRAM_NV #define GL_VERTEX_STATE_PROGRAM_NV 0x8621 #endif #ifndef GL_VERTEX_STREAM0_ATI #define GL_VERTEX_STREAM0_ATI 0x876C #endif #ifndef GL_VERTEX_STREAM1_ATI #define GL_VERTEX_STREAM1_ATI 0x876D #endif #ifndef GL_VERTEX_STREAM2_ATI #define GL_VERTEX_STREAM2_ATI 0x876E #endif #ifndef GL_VERTEX_STREAM3_ATI #define GL_VERTEX_STREAM3_ATI 0x876F #endif #ifndef GL_VERTEX_STREAM4_ATI #define GL_VERTEX_STREAM4_ATI 0x8770 #endif #ifndef GL_VERTEX_STREAM5_ATI #define GL_VERTEX_STREAM5_ATI 0x8771 #endif #ifndef GL_VERTEX_STREAM6_ATI #define GL_VERTEX_STREAM6_ATI 0x8772 #endif #ifndef GL_VERTEX_STREAM7_ATI #define GL_VERTEX_STREAM7_ATI 0x8773 #endif #ifndef GL_VERTEX_SUBROUTINE #define GL_VERTEX_SUBROUTINE 0x92E8 #endif #ifndef GL_VERTEX_SUBROUTINE_UNIFORM #define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE #endif #ifndef GL_VERTEX_TEXTURE #define GL_VERTEX_TEXTURE 0x829B #endif #ifndef GL_VERTEX_WEIGHTING_EXT #define GL_VERTEX_WEIGHTING_EXT 0x8509 #endif #ifndef GL_VERTEX_WEIGHT_ARRAY_EXT #define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C #endif #ifndef GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT #define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 #endif #ifndef GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT #define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D #endif #ifndef GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT #define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F #endif #ifndef GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT #define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E #endif #ifndef GL_VERTICAL_LINE_TO_NV #define GL_VERTICAL_LINE_TO_NV 0x08 #endif #ifndef GL_VERTICES_SUBMITTED_ARB #define GL_VERTICES_SUBMITTED_ARB 0x82EE #endif #ifndef GL_VIBRANCE_BIAS_NV #define GL_VIBRANCE_BIAS_NV 0x8719 #endif #ifndef GL_VIBRANCE_SCALE_NV #define GL_VIBRANCE_SCALE_NV 0x8713 #endif #ifndef GL_VIDEO_BUFFER_BINDING_NV #define GL_VIDEO_BUFFER_BINDING_NV 0x9021 #endif #ifndef GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV #define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D #endif #ifndef GL_VIDEO_BUFFER_NV #define GL_VIDEO_BUFFER_NV 0x9020 #endif #ifndef GL_VIDEO_BUFFER_PITCH_NV #define GL_VIDEO_BUFFER_PITCH_NV 0x9028 #endif #ifndef GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV #define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B #endif #ifndef GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV #define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A #endif #ifndef GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV #define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039 #endif #ifndef GL_VIDEO_CAPTURE_FRAME_WIDTH_NV #define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038 #endif #ifndef GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV #define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C #endif #ifndef GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV #define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026 #endif #ifndef GL_VIDEO_COLOR_CONVERSION_MATRIX_NV #define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029 #endif #ifndef GL_VIDEO_COLOR_CONVERSION_MAX_NV #define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A #endif #ifndef GL_VIDEO_COLOR_CONVERSION_MIN_NV #define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B #endif #ifndef GL_VIDEO_COLOR_CONVERSION_OFFSET_NV #define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C #endif #ifndef GL_VIEWPORT #define GL_VIEWPORT 0x0BA2 #endif #ifndef GL_VIEWPORT_BIT #define GL_VIEWPORT_BIT 0x00000800 #endif #ifndef GL_VIEWPORT_BOUNDS_RANGE #define GL_VIEWPORT_BOUNDS_RANGE 0x825D #endif #ifndef GL_VIEWPORT_COMMAND_NV #define GL_VIEWPORT_COMMAND_NV 0x0010 #endif #ifndef GL_VIEWPORT_INDEX_PROVOKING_VERTEX #define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F #endif #ifndef GL_VIEWPORT_SUBPIXEL_BITS #define GL_VIEWPORT_SUBPIXEL_BITS 0x825C #endif #ifndef GL_VIEW_CLASS_128_BITS #define GL_VIEW_CLASS_128_BITS 0x82C4 #endif #ifndef GL_VIEW_CLASS_16_BITS #define GL_VIEW_CLASS_16_BITS 0x82CA #endif #ifndef GL_VIEW_CLASS_24_BITS #define GL_VIEW_CLASS_24_BITS 0x82C9 #endif #ifndef GL_VIEW_CLASS_32_BITS #define GL_VIEW_CLASS_32_BITS 0x82C8 #endif #ifndef GL_VIEW_CLASS_48_BITS #define GL_VIEW_CLASS_48_BITS 0x82C7 #endif #ifndef GL_VIEW_CLASS_64_BITS #define GL_VIEW_CLASS_64_BITS 0x82C6 #endif #ifndef GL_VIEW_CLASS_8_BITS #define GL_VIEW_CLASS_8_BITS 0x82CB #endif #ifndef GL_VIEW_CLASS_96_BITS #define GL_VIEW_CLASS_96_BITS 0x82C5 #endif #ifndef GL_VIEW_CLASS_BPTC_FLOAT #define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 #endif #ifndef GL_VIEW_CLASS_BPTC_UNORM #define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 #endif #ifndef GL_VIEW_CLASS_RGTC1_RED #define GL_VIEW_CLASS_RGTC1_RED 0x82D0 #endif #ifndef GL_VIEW_CLASS_RGTC2_RG #define GL_VIEW_CLASS_RGTC2_RG 0x82D1 #endif #ifndef GL_VIEW_CLASS_S3TC_DXT1_RGB #define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC #endif #ifndef GL_VIEW_CLASS_S3TC_DXT1_RGBA #define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD #endif #ifndef GL_VIEW_CLASS_S3TC_DXT3_RGBA #define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE #endif #ifndef GL_VIEW_CLASS_S3TC_DXT5_RGBA #define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF #endif #ifndef GL_VIEW_COMPATIBILITY_CLASS #define GL_VIEW_COMPATIBILITY_CLASS 0x82B6 #endif #ifndef GL_VIRTUAL_PAGE_SIZE_INDEX_ARB #define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7 #endif #ifndef GL_VIRTUAL_PAGE_SIZE_X_AMD #define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195 #endif #ifndef GL_VIRTUAL_PAGE_SIZE_X_ARB #define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195 #endif #ifndef GL_VIRTUAL_PAGE_SIZE_Y_AMD #define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196 #endif #ifndef GL_VIRTUAL_PAGE_SIZE_Y_ARB #define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196 #endif #ifndef GL_VIRTUAL_PAGE_SIZE_Z_AMD #define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197 #endif #ifndef GL_VIRTUAL_PAGE_SIZE_Z_ARB #define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197 #endif #ifndef GL_VIVIDLIGHT_NV #define GL_VIVIDLIGHT_NV 0x92A6 #endif #ifndef GL_VOLATILE_APPLE #define GL_VOLATILE_APPLE 0x8A1A #endif #ifndef GL_WAIT_FAILED #define GL_WAIT_FAILED 0x911D #endif #ifndef GL_WARPS_PER_SM_NV #define GL_WARPS_PER_SM_NV 0x933A #endif #ifndef GL_WARP_SIZE_NV #define GL_WARP_SIZE_NV 0x9339 #endif #ifndef GL_WEIGHT_ARRAY_ARB #define GL_WEIGHT_ARRAY_ARB 0x86AD #endif #ifndef GL_WEIGHT_ARRAY_BUFFER_BINDING #define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E #endif #ifndef GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB #define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E #endif #ifndef GL_WEIGHT_ARRAY_POINTER_ARB #define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC #endif #ifndef GL_WEIGHT_ARRAY_SIZE_ARB #define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB #endif #ifndef GL_WEIGHT_ARRAY_STRIDE_ARB #define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA #endif #ifndef GL_WEIGHT_ARRAY_TYPE_ARB #define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 #endif #ifndef GL_WEIGHT_SUM_UNITY_ARB #define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 #endif #ifndef GL_WIDE_LINE_HINT_PGI #define GL_WIDE_LINE_HINT_PGI 0x1A222 #endif #ifndef GL_WRAP_BORDER_SUN #define GL_WRAP_BORDER_SUN 0x81D4 #endif #ifndef GL_WRITE_DISCARD_NV #define GL_WRITE_DISCARD_NV 0x88BE #endif #ifndef GL_WRITE_ONLY #define GL_WRITE_ONLY 0x88B9 #endif #ifndef GL_WRITE_ONLY_ARB #define GL_WRITE_ONLY_ARB 0x88B9 #endif #ifndef GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV #define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A #endif #ifndef GL_WRITE_PIXEL_DATA_RANGE_NV #define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 #endif #ifndef GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV #define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C #endif #ifndef GL_W_EXT #define GL_W_EXT 0x87D8 #endif #ifndef GL_XOR #define GL_XOR 0x1506 #endif #ifndef GL_XOR_NV #define GL_XOR_NV 0x1506 #endif #ifndef GL_X_EXT #define GL_X_EXT 0x87D5 #endif #ifndef GL_YCBAYCR8A_4224_NV #define GL_YCBAYCR8A_4224_NV 0x9032 #endif #ifndef GL_YCBCR_422_APPLE #define GL_YCBCR_422_APPLE 0x85B9 #endif #ifndef GL_YCBCR_MESA #define GL_YCBCR_MESA 0x8757 #endif #ifndef GL_YCBYCR8_422_NV #define GL_YCBYCR8_422_NV 0x9031 #endif #ifndef GL_YCRCBA_SGIX #define GL_YCRCBA_SGIX 0x8319 #endif #ifndef GL_YCRCB_422_SGIX #define GL_YCRCB_422_SGIX 0x81BB #endif #ifndef GL_YCRCB_444_SGIX #define GL_YCRCB_444_SGIX 0x81BC #endif #ifndef GL_YCRCB_SGIX #define GL_YCRCB_SGIX 0x8318 #endif #ifndef GL_Y_EXT #define GL_Y_EXT 0x87D6 #endif #ifndef GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV #define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036 #endif #ifndef GL_Z4Y12Z4CB12Z4CR12_444_NV #define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037 #endif #ifndef GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV #define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035 #endif #ifndef GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV #define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034 #endif #ifndef GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV #define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033 #endif #ifndef GL_ZERO #define GL_ZERO 0 #endif #ifndef GL_ZERO_EXT #define GL_ZERO_EXT 0x87DD #endif #ifndef GL_ZERO_TO_ONE #define GL_ZERO_TO_ONE 0x935F #endif #ifndef GL_ZOOM_X #define GL_ZOOM_X 0x0D16 #endif #ifndef GL_ZOOM_Y #define GL_ZOOM_Y 0x0D17 #endif #ifndef GL_Z_EXT #define GL_Z_EXT 0x87D7 #endif /* * For debugging. */ #define GL_NFOSMESA_ERROR_CHECK 0x6200 #ifdef __cplusplus extern "C" { #endif extern const char *gl_enum_name(GLenum pname); extern void gl_print_enums(void); GLboolean gl_HasExtension(const char *extName, const GLubyte *_extString); #ifdef __cplusplus } #endif #endif /* __GLENUMS_H__ */ aranym-1.1.0/src/include/emul_op.h0000664000175000017500000000451413454637621015230 0ustar joyjoy/* * emul_op.h - 68k opcodes for ROM patches * * Basilisk II (C) 1997-2000 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef EMUL_OP_H #define EMUL_OP_H // 68k opcodes /* const uint16 M68K_ILLEGAL = 0x4afc; const uint16 M68K_NOP = 0x4e71; const uint16 M68K_RTS = 0x4e75; const uint16 M68K_RTD = 0x4e74; const uint16 M68K_RTR = 0x4e77; const uint16 M68K_JMP = 0x4ef9; const uint16 M68K_JMP_A0 = 0x4ed0; const uint16 M68K_JSR = 0x4eb9; const uint16 M68K_JSR_A0 = 0x4e90; */ // Extended opcodes enum { /* M68K_EXEC_RETURN = 0x7100, // Extended opcodes (illegal moveq form) */ M68K_EMUL_BREAK = 0x7101, // 0x7101 - breakpoint M68K_EMUL_RESET = 0x7102, M68K_EMUL_EXIT = 0x7103, M68K_EMUL_INIT = 0x7104, M68K_EMUL_OP_PUT_SCRAP = 0x712a, // 0x712a - used in TOS ROM patch M68K_EMUL_OP_CPUDEBUG_ON = 0x7139, // 0x7139 - cpu_debugging on M68K_EMUL_OP_CPUDEBUG_OFF = 0x713a, // 0x713a - cpu_debugging off M68K_EMUL_OP_JIT = 0x713b, /* 0x713b - JIT state */ M68K_EMUL_OP_MAX, // highest number M68K_EMUL_OP_MON0 = 0x71f0, // Monitor instructions M68K_EMUL_OP_MON1 = 0x71f1, M68K_EMUL_OP_MON2 = 0x71f2, M68K_EMUL_OP_MON3 = 0x71f3, M68K_EMUL_OP_MON4 = 0x71f4, M68K_EMUL_OP_MON5 = 0x71f5, M68K_EMUL_OP_MON6 = 0x71f6, M68K_EMUL_OP_MON7 = 0x71f7, M68K_EMUL_OP_MON8 = 0x71f8, M68K_EMUL_OP_MON9 = 0x71f9, M68K_EMUL_OP_MONa = 0x71fa, M68K_EMUL_OP_MONb = 0x71fb, M68K_EMUL_OP_MONc = 0x71fc, M68K_EMUL_OP_MONd = 0x71fd, M68K_EMUL_OP_MONe = 0x71fe, M68K_EMUL_OP_DEBUGGER = 0x71ff // Run debuger }; // Functions extern bool EmulOp(uint16 opcode, struct M68kRegisters *r); // Execute EMUL_OP opcode (called by 68k emulator or Line-F trap handler) #endif aranym-1.1.0/src/include/emu_bochs.h0000664000175000017500000000077313454637621015537 0ustar joyjoy #ifndef _emu_bochs_h #define _emu_bochs_h extern "C" { #ifndef WIN32 # include #else # include #endif #ifdef macintosh # include "macutils.h" # define SuperDrive "[fd:]" #endif } #define BX_DEBUG(a) D2(panicbug(a)) #define BX_PANIC(a) panicbug(a) #define BX_INFO(a) infoprint(a) #define BX_ASSERT(x) do {if (!(x)) BX_PANIC(("failed assertion \"%s\" at %s:%d\n", #x, __FILE__, __LINE__));} while (0) #define BX_INSERTED true #define BX_EJECTED false #define bx_ptr_t void * #endif aranym-1.1.0/src/include/dyngl.h0000664000175000017500000000246213454637621014705 0ustar joyjoy/* OpenGL dynamic loader (C) 2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DYNGL_H #define DYNGL_H 1 #include #ifdef __cplusplus extern "C" { #endif /*--- Defines ---*/ #include "../../atari/nfosmesa/gltypes.h" /*--- Structures ---*/ typedef struct { #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) type (APIENTRY *name) proto ; #define GLU_PROC(type, gl, name, export, upper, proot, args, first, ret) #include "../../atari/nfosmesa/glfuncs.h" } dyngl_funcs; /*--- Global variables ---*/ extern dyngl_funcs gl; /*--- Functions ---*/ int dyngl_load(const char *filename); #ifdef __cplusplus } #endif #endif aranym-1.1.0/src/include/dsp_disasm.h0000664000175000017500000000225413454637621015715 0ustar joyjoy/* DSP M56001 emulation Disassembler (C) 2003-2008 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DSP_DISASM_H #define DSP_DISASM_H #ifdef __cplusplus extern "C" { #endif /* Functions */ void dsp56k_disasm_init(dsp_core_t *my_dsp_core); void dsp56k_disasm(void); /* Registers change */ void dsp56k_disasm_reg_read(void); void dsp56k_disasm_reg_compare(void); /* Function to mark register as changed */ void dsp56k_disasm_force_reg_changed(int num_dsp_reg); #ifdef __cplusplus } #endif #endif /* DSP_DISASM_H */ aranym-1.1.0/src/include/dsp_cpu.h0000664000175000017500000000542113454637621015223 0ustar joyjoy/* DSP M56001 emulation Instructions interpreter, execution thread (C) 2003-2008 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DSP_CPU_H #define DSP_CPU_H #ifdef __cplusplus extern "C" { #endif /* Defines */ #define DSP_OMR_MA 0x00 #define DSP_OMR_MB 0x01 #define DSP_OMR_DE 0x02 #define DSP_OMR_SD 0x06 #define DSP_OMR_EA 0x07 #define DSP_SR_C 0x00 #define DSP_SR_V 0x01 #define DSP_SR_Z 0x02 #define DSP_SR_N 0x03 #define DSP_SR_U 0x04 #define DSP_SR_E 0x05 #define DSP_SR_L 0x06 #define DSP_SR_I0 0x08 #define DSP_SR_I1 0x09 #define DSP_SR_S0 0x0a #define DSP_SR_S1 0x0b #define DSP_SR_T 0x0d #define DSP_SR_LF 0x0f /* Registers numbers in dsp.registers[] */ #define DSP_REG_X0 0x04 #define DSP_REG_X1 0x05 #define DSP_REG_Y0 0x06 #define DSP_REG_Y1 0x07 #define DSP_REG_A0 0x08 #define DSP_REG_B0 0x09 #define DSP_REG_A2 0x0a #define DSP_REG_B2 0x0b #define DSP_REG_A1 0x0c #define DSP_REG_B1 0x0d #define DSP_REG_A 0x0e #define DSP_REG_B 0x0f #define DSP_REG_R0 0x10 #define DSP_REG_R1 0x11 #define DSP_REG_R2 0x12 #define DSP_REG_R3 0x13 #define DSP_REG_R4 0x14 #define DSP_REG_R5 0x15 #define DSP_REG_R6 0x16 #define DSP_REG_R7 0x17 #define DSP_REG_N0 0x18 #define DSP_REG_N1 0x19 #define DSP_REG_N2 0x1a #define DSP_REG_N3 0x1b #define DSP_REG_N4 0x1c #define DSP_REG_N5 0x1d #define DSP_REG_N6 0x1e #define DSP_REG_N7 0x1f #define DSP_REG_M0 0x20 #define DSP_REG_M1 0x21 #define DSP_REG_M2 0x22 #define DSP_REG_M3 0x23 #define DSP_REG_M4 0x24 #define DSP_REG_M5 0x25 #define DSP_REG_M6 0x26 #define DSP_REG_M7 0x27 #define DSP_REG_SR 0x39 #define DSP_REG_OMR 0x3a #define DSP_REG_SP 0x3b #define DSP_REG_SSH 0x3c #define DSP_REG_SSL 0x3d #define DSP_REG_LA 0x3e #define DSP_REG_LC 0x3f #define DSP_REG_NULL 0x00 #define DSP_REG_LCSAVE 0x30 /* Memory spaces for dsp.ram[], dsp.rom[] */ #define DSP_SPACE_X 0x00 #define DSP_SPACE_Y 0x01 #define DSP_SPACE_P 0x02 /* Functions */ void dsp56k_init_cpu(void *th_dsp_core); /* Set dsp_core to use */ int dsp56k_exec_thread(void *th_dsp_core); /* Thread execution */ void dsp56k_execute_instruction(void); /* Execute 1 instruction */ #ifdef __cplusplus } #endif #endif /* DSP_CPU_H */ aranym-1.1.0/src/include/dsp_core.h0000664000175000017500000001261613454637621015370 0ustar joyjoy/* DSP M56001 emulation Core of DSP emulation (C) 2003-2008 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DSP_CORE_H #define DSP_CORE_H #include "SDL_compat.h" #include #ifdef __cplusplus extern "C" { #endif #define DSP_RAMSIZE 32768 /* Host port, CPU side */ #define CPU_HOST_ICR 0x00 #define CPU_HOST_CVR 0x01 #define CPU_HOST_ISR 0x02 #define CPU_HOST_IVR 0x03 #define CPU_HOST_RX0 0x04 #define CPU_HOST_RXH 0x05 #define CPU_HOST_RXM 0x06 #define CPU_HOST_RXL 0x07 #define CPU_HOST_TX0 0x04 #define CPU_HOST_TXH 0x05 #define CPU_HOST_TXM 0x06 #define CPU_HOST_TXL 0x07 #define CPU_HOST_ICR_RREQ 0x00 #define CPU_HOST_ICR_TREQ 0x01 #define CPU_HOST_ICR_HF0 0x03 #define CPU_HOST_ICR_HF1 0x04 #define CPU_HOST_ICR_HM0 0x05 #define CPU_HOST_ICR_HM1 0x06 #define CPU_HOST_ICR_INIT 0x07 #define CPU_HOST_CVR_HC 0x07 #define CPU_HOST_ISR_RXDF 0x00 #define CPU_HOST_ISR_TXDE 0x01 #define CPU_HOST_ISR_TRDY 0x02 #define CPU_HOST_ISR_HF2 0x03 #define CPU_HOST_ISR_HF3 0x04 #define CPU_HOST_ISR_DMA 0x06 #define CPU_HOST_ISR_HREQ 0x07 /* Host port, DSP side, DSP addresses are 0xffc0+value */ #define DSP_PBC 0x20 /* Port B control register */ #define DSP_PCC 0x21 /* Port C control register */ #define DSP_PBDDR 0x22 /* Port B data direction register */ #define DSP_PCDDR 0x23 /* Port C data direction register */ #define DSP_PBD 0x24 /* Port B data register */ #define DSP_PCD 0x25 /* Port C data register */ #define DSP_HOST_HCR 0x28 /* Host control register */ #define DSP_HOST_HSR 0x29 /* Host status register */ #define DSP_HOST_HRX 0x2b /* Host receive register */ #define DSP_HOST_HTX 0x2b /* Host transmit register */ #define DSP_SSI_CRA 0x2c /* Ssi control register A */ #define DSP_SSI_CRB 0x2d /* Ssi control register B */ #define DSP_SSI_SR 0x2e /* Ssi status register */ #define DSP_SSI_TSR 0x2e /* Ssi time slot register */ #define DSP_SSI_RX 0x2f /* Ssi receive register */ #define DSP_SSI_TX 0x2f /* Ssi transmit register */ #define DSP_BCR 0x3e /* Port A bus control register */ #define DSP_IPR 0x3f /* Interrupt priority register */ #define DSP_HOST_HCR_HRIE 0x00 #define DSP_HOST_HCR_HTIE 0x01 #define DSP_HOST_HCR_HCIE 0x02 #define DSP_HOST_HCR_HF2 0x03 #define DSP_HOST_HCR_HF3 0x04 #define DSP_HOST_HSR_HRDF 0x00 #define DSP_HOST_HSR_HTDE 0x01 #define DSP_HOST_HSR_HCP 0x02 #define DSP_HOST_HSR_HF0 0x03 #define DSP_HOST_HSR_HF1 0x04 #define DSP_HOST_HSR_DMA 0x07 #define DSP_SSI_CRB_TIE 0xe #define DSP_SSI_CRB_RIE 0xf #define DSP_SSI_SR_TUE 0x4 #define DSP_SSI_SR_ROE 0x5 #define DSP_SSI_SR_TDF 0x6 #define DSP_SSI_SR_RDF 0x7 #define DSP_INTERRUPT_NONE 0x0 #define DSP_INTERRUPT_FAST 0x1 #define DSP_INTERRUPT_LONG 0x2 typedef struct dsp_core_s dsp_core_t; struct dsp_core_s { SDL_Thread *thread; /* Thread in which DSP emulation runs */ SDL_sem *semaphore; /* Semaphore used to pause/unpause thread */ SDL_mutex *mutex; /* Mutex for read/writes through host port */ int use_thread; /* Threaded emulation ? */ /* DSP executing instructions ? */ volatile int running; /* Registers */ Uint16 pc; Uint32 registers[64]; /* stack[0=ssh], stack[1=ssl] */ Uint16 stack[2][15]; /* External ram[0] is x:, ram[1] is y:, ram[2] is p: */ Uint32 ram[3][DSP_RAMSIZE]; /* rom[0] is x:, rom[1] is y: */ Uint32 rom[2][512]; /* Internal ram[0] is x:, ram[1] is y:, ram[2] is p: */ Uint32 ramint[3][512]; /* peripheral space, [x|y]:0xffc0-0xffff */ volatile Uint32 periph[2][64]; /* host port, CPU side */ volatile Uint8 hostport[8]; /* Misc */ Uint32 loop_rep; /* executing rep ? */ Uint32 swi_inter; /* SWI interruption ? */ /* For bootstrap routine */ Uint16 bootstrap_pos; /* Interruptions */ Uint16 interrupt_state; Uint32 interrupt_instr_fetch; Uint32 interrupt_save_pc; /* Lock/unlock mutex */ void (*lockMutex)(dsp_core_t *_this); void (*unlockMutex)(dsp_core_t *_this); /* Pause/unpause thread */ void (*pauseThread)(dsp_core_t *_this); void (*resumeThread)(dsp_core_t *_this); }; /* Emulator call these to init/stop/reset DSP emulation */ void dsp_core_init(dsp_core_t *dsp_core, int use_thread); void dsp_core_shutdown(dsp_core_t *dsp_core); void dsp_core_reset(dsp_core_t *dsp_core); /* host port read/write by emulator, addr is 0-7, not 0xffa200-0xffa207 */ Uint8 dsp_core_read_host(dsp_core_t *dsp_core, int addr); void dsp_core_write_host(dsp_core_t *dsp_core, int addr, Uint8 value); /* dsp_cpu call these to signal state change */ void dsp_core_set_state(dsp_core_t *dsp_core, int new_state); void dsp_core_set_state_sem(dsp_core_t *dsp_core, int new_state, int use_semaphore); /* dsp_cpu call these to read/write host port */ void dsp_core_hostport_dspread(dsp_core_t *dsp_core); void dsp_core_hostport_dspwrite(dsp_core_t *dsp_core); #ifdef __cplusplus } #endif #endif /* DSP_CORE_H */ aranym-1.1.0/src/include/dsp.h0000664000175000017500000000223513454637621014354 0ustar joyjoy/* DSP M56001 emulation Dummy emulation, Aranym glue (C) 2001-2008 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DSP_H #define DSP_H #include "icio.h" #if DSP_EMULATION # include "dsp_core.h" #endif class DSP : public BASE_IO { public: DSP(memptr, uint32); ~DSP(); virtual void reset(void); virtual uint8 handleRead(memptr addr); virtual void handleWrite(memptr, uint8); void exec_insts(int num_inst); #if DSP_EMULATION private: dsp_core_t dsp_core; #endif }; #endif /* DSP_H */ aranym-1.1.0/src/include/disasm-glue.h0000664000175000017500000000661213454637621016003 0ustar joyjoy#ifndef __DISASM_GLUE_H__ #define __DISASM_GLUE_H__ /* * generic interface to various disassemblers that are freely available. * * currently supported: * * - DISASM_USE_BUILTIN: uses the builtin disassembler. * This is the default. * It's always available, and rather short. * - DISASM_USE_OPCODES: uses GNU opcodes library. * Available for most systems, and can probably handle everything * we can think of. For this reason, rather bloated. * The problem with this is if the systems default * library doesn't contain support for 68k, you have to compile one yourself, * and install it in a non-default place, or it clashes with the system library. */ #if defined(MAIN) && !defined(DISASM_USE_BUILTIN) && !defined(DISASM_USE_OPCODES) # define DISASM_USE_BUILTIN #endif #if defined(DISASM_USE_BUILTIN) || defined(DISASM_USE_OPCODES) # define HAVE_DISASM_M68K #else # undef HAVE_DISASM_M68K #endif #if (defined(DISASM_USE_BUILTIN) + defined(DISASM_USE_OPCODES)) > 1 #error only one disassembler may be defined #endif #ifdef HAVE_DISASM_M68K enum m68k_cpu { CPU_AUTO, CPU_68000, CPU_68008, CPU_68010, CPU_68020, CPU_CPU32, CPU_68030, CPU_68EC030, CPU_68040, CPU_68EC040, CPU_68LC040, CPU_68060, CPU_68302, CPU_68331, CPU_68332, CPU_68333, CPU_68360, CPU_5200, CPU_5202, CPU_5204, CPU_5206, CPU_5206e, CPU_5207, CPU_5208, CPU_521x, CPU_5249, CPU_528x, CPU_5307, CPU_537x, CPU_5407, CPU_547x, CPU_548x, CPU_CFV4, CPU_CFV4e, CPU_CF_FIRST = CPU_5200, CPU_CF_LAST = CPU_CFV4e }; enum m68k_fpu { FPU_AUTO, FPU_NONE, FPU_68881, FPU_68882, FPU_68040, FPU_COLDFIRE }; enum m68k_mmu { MMU_AUTO, MMU_NONE, MMU_68851, MMU_68040 }; typedef struct _m68k_disasm_info { enum m68k_cpu cpu; enum m68k_fpu fpu; enum m68k_mmu mmu; int is_64bit; memptr memory_vma; uae_u32 reloffset; /* * for use by the caller */ void *application_data; /* * for use by the disassembler */ void *disasm_data; /* * opcode of decoded instruction */ char opcode[22]; /* * number of operands in decoded instruction, 0-2 */ int num_oper; /* * the operands */ char operands[128]; /* * any comments */ char comments[128]; /* * the number of instruction words, and their values (in host format) */ int num_insn_words; unsigned short insn_words[11]; } m68k_disasm_info; extern m68k_disasm_info disasm_info; void m68k_disasm_init(m68k_disasm_info *info, enum m68k_cpu cpu); void m68k_disasm_exit(m68k_disasm_info *info); int m68k_disasm_insn(m68k_disasm_info *info); int m68k_disasm_to_buf(m68k_disasm_info *info, char *buf, int allbytes); memptr gdb_dis(memptr start, unsigned int count); void gdb_regs(void); memptr gdb_pc(void); #ifdef DISASM_USE_BUILTIN int m68k_disasm_builtin(m68k_disasm_info *info); #endif #endif /* HAVE_DISASM_M68K */ #if (defined(DISASM_USE_BUILTIN) || defined(DISASM_USE_OPCODES)) && (defined(CPU_i386) || defined(CPU_x86_64)) #define HAVE_DISASM_X86 1 const uint8 *x86_disasm(const uint8 *ainstr, char *buf, int allbytes); #endif #if defined(DISASM_USE_OPCODES) && (defined(CPU_powerpc)) #define HAVE_DISASM_PPC 1 const uint8 *ppc_disasm(const uint8 *ainstr, char *buf, int allbytes); #endif #if (defined(DISASM_USE_BUILTIN) || defined(DISASM_USE_OPCODES)) && (defined(CPU_arm)) #define HAVE_DISASM_ARM 1 const uint8 *arm_disasm(const uint8 *ainstr, char *buf, int allbytes); #endif #endif /* __DISASM_GLUE_H__ */ aranym-1.1.0/src/include/dirty_rects.h0000664000175000017500000000273213454637621016123 0ustar joyjoy/* Dirty rectangle markers (C) 2006 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DIRTYRECTS_H #define DIRTYRECTS_H 1 /*--- DirtyRects class ---*/ class DirtyRects { protected: /* Dirty rectangle list */ Uint8 *dirtyMarker; int dirtyW, dirtyH; int areaW, areaH; int minDirtX, minDirtY, maxDirtX, maxDirtY; public: DirtyRects(int width = 16, int height = 16); virtual ~DirtyRects(); void resizeDirty(int width, int height); Uint8 *getDirtyRects(void); void setDirtyRect(int x, int y, int w, int h); void setDirtyLine(int x1, int y1, int x2, int y2); void clearDirtyRects(void); bool hasDirtyRect(void); int getDirtyWidth(void); int getDirtyHeight(void); int getMinDirtX(void); int getMinDirtY(void); int getMaxDirtX(void); int getMaxDirtY(void); }; #endif /* DIRTYRECTS_H */ aranym-1.1.0/src/include/debug.h0000664000175000017500000000475213454637621014662 0ustar joyjoy/* ARAnyM Debugger (C) 2001-2009 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "ndebug.h" #ifndef DEBUG_H #define DEBUG_H #ifdef WHOLEDEBUG # undef DEBUG # define DEBUG 2 #endif #if defined(DEBUG) && DEBUG #define DUNUSED(x) #else #define DUNUSED(x) ((void)x) #endif #ifndef UNUSED #define UNUSED(x) ((void)x) #endif #define MAX_HIST 10000 extern unsigned int firsthist; extern unsigned int lasthist; extern int debugging; extern int irqindebug; extern bool cpu_debugging; extern int ignore_irq; #ifdef NEED_TO_DEBUG_BADLY extern struct regstruct history[MAX_HIST]; extern struct flag_struct historyf[MAX_HIST]; #else extern uaecptr history[MAX_HIST]; #endif extern void debug(void); extern void activate_debugger(void); extern void deactivate_debugger(void); /* * debug.h - Debugging utilities * * Basilisk II (C) 1997-2000 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #define bug ndebug::dbprintf #define panicbug ndebug::pdbprintf #if defined(DEBUG) && DEBUG #define D(x) (x); #else #define D(x) ; #endif #if defined(DEBUG) && DEBUG > 1 #define D2(x) (x); #else #define D2(x) ; #endif #define infoprint bug #endif aranym-1.1.0/src/include/cfgopts.h0000664000175000017500000000334513454637621015236 0ustar joyjoy/* ** CFGOPTS.H */ #ifndef TAG_TYPE_defined #define TAG_TYPE_defined #include #include #include #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "tools.h" typedef enum { Error_Tag, Byte_Tag, Bool_Tag, Word_Tag, Int_Tag, Long_Tag, OctWord_Tag, OctLong_Tag, HexWord_Tag, HexLong_Tag, Float_Tag, Double_Tag, Char_Tag, String_Tag, Path_Tag, Function_Tag } TAG_TYPE; struct Config_Tag { const char *code; /* Option switch */ TAG_TYPE type; /* Type of option */ void *buf; /* Storage location */ short buf_size; /* Storage size for String_Tag - max. 32k */ char stat; /* internal flag for update_config */ }; struct Config_Section { const char *name; Config_Tag *tags; bool skip_if_empty; void (*preset)(void); void (*postload)(void); void (*presave)(void); }; #ifndef MAX_PATH #define MAX_PATH 1024 #endif class ConfigOptions { private: char * trim(char *); char * strip_comment(char *); long fcopy(const char *, const char *); void expand_path(char *, const char *, unsigned short); bool write_token(FILE *, struct Config_Tag *); const char *config_file; char config_folder[512]; char home_folder[512]; char data_folder[512]; char line[32768]; public: ConfigOptions(const char *cfgfile, const char *home, const char *data); int input_config(struct Config_Tag *configs, const char *section); int update_config(struct Config_Tag *configs, const char *section); bool set_config_value(struct Config_Tag *tag, const char *value); char *get_config_value(const struct Config_Tag *ptr, bool type); int process_config(struct Config_Tag *configs, const char *section, bool verbose); void compress_path(char *, char *, unsigned short); }; #endif aranym-1.1.0/src/include/cdrom.h0000664000175000017500000000352013454637621014670 0ustar joyjoy///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2002 MandrakeSoft S.A. // // MandrakeSoft S.A. // 43, rue d'Aboukir // 75002 Paris - France // http://www.linux-mandrake.com/ // http://www.mandrakesoft.com/ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // Header file for low-level OS specific CDROM emulation #if defined(_WIN32) #include #endif class cdrom_interface { public: cdrom_interface(char *dev); ~cdrom_interface(void); void init(void); // Load CD-ROM. Returns false if CD is not ready. bool insert_cdrom(char *dev = NULL); // Logically eject the CD. void eject_cdrom(); // Read CD TOC. Returns false if start track is out of bounds. bool read_toc(uint8* buf, int* length, bool msf, int start_track, int format); // Return CD-ROM capacity (in 2048 byte frames) uint32 capacity(); // Read a single block from the CD void read_block(uint8* buf, int lba); // Start (spin up) the CD. int start_cdrom(); private: int fd; char *path; int using_file; #ifdef WIN32 BOOL bUseASPI; HANDLE hFile; int hid; int tid; int lun; #endif }; aranym-1.1.0/src/include/bootos_tos.h0000664000175000017500000000224613454637621015762 0ustar joyjoy/* ROM / OS loader, TOS Copyright (c) 2005-2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef BOOTOSTOS_H #define BOOTOSTOS_H #include "aranym_exception.h" #include "bootos.h" /* TOS ROM class */ class TosBootOs : public BootOs { public: TosBootOs(void) ARANYM_THROWS(AranymException); void reset(bool cold) ARANYM_THROWS(AranymException); virtual const char *type() { return "TOS"; }; private: void tos_patch(bool cold) ARANYM_THROWS(AranymException); }; #endif /* BOOTOSTOS_H */ /* vim:ts=4:sw=4 */ aranym-1.1.0/src/include/bootos_linux.h0000664000175000017500000000455313454637621016317 0ustar joyjoy/* ROM / OS loader, Linux/m68k Copyright (c) 2005-2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef BOOTOSLINUX_H #define BOOTOSLINUX_H #include "aranym_exception.h" #include "bootos.h" /*--- Some defines ---*/ #define NUM_MEMINFO 4 #define CL_SIZE 256 /* Linux/m68k loader class */ class LinuxBootOs : public BootOs { private: struct mem_info { uint32 addr; /* physical address of memory chunk */ uint32 size; /* length of memory chunk (in bytes) */ }; struct atari_bootinfo { uint32 machtype; /* machine type */ uint32 cputype; /* system CPU */ uint32 fputype; /* system FPU */ uint32 mmutype; /* system MMU */ int32 num_memory; /* # of memory blocks found */ struct mem_info memory[NUM_MEMINFO]; /* memory description */ struct mem_info ramdisk; /* ramdisk description */ char command_line[CL_SIZE]; /* kernel command line parameters */ uint32 mch_cookie; /* _MCH cookie from TOS */ uint32 mch_type; /* special machine types */ }; void *kernel; unsigned long kernel_length; void *ramdisk; unsigned long ramdisk_length; struct atari_bootinfo bi; unsigned long bi_size; void cleanup(void); void init(bool cold); void *loadFile(const char *filename, unsigned long *length); int checkKernel(void); int create_bootinfo(void); int add_bi_record( unsigned short tag, unsigned short size, const void *data); int add_bi_string(unsigned short tag, const char *s); public: LinuxBootOs(void) ARANYM_THROWS(AranymException); virtual ~LinuxBootOs(void); virtual void reset(bool cold) ARANYM_THROWS(AranymException); virtual const char *type() { return "LILO"; }; }; #endif /* BOOTOSLINUX_H */ /* vim:ts=4:sw=4 */ aranym-1.1.0/src/include/bootos_emutos.h0000664000175000017500000000220413454637621016463 0ustar joyjoy/* ROM / OS loader, EmuTOS Copyright (c) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef BOOTOSEMUTOS_H #define BOOTOSEMUTOS_H #include "aranym_exception.h" #include "bootos.h" /* EmuTOS ROM class */ class EmutosBootOs : public BootOs { public: EmutosBootOs(void) ARANYM_THROWS(AranymException); virtual const char *type() { return "EMUTOS"; }; private: void emutos_patch(bool cold) ARANYM_THROWS(AranymException); }; #endif /* BOOTOSEMUTOS_H */ /* vim:ts=4:sw=4 */ aranym-1.1.0/src/include/bootos.h0000664000175000017500000000216013454637621015070 0ustar joyjoy/* ROM / OS loader, base class Copyright (c) 2005-2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef BOOTOS_H #define BOOTOS_H #include "aranym_exception.h" class BootOs { protected: virtual void init(bool cold); virtual void load(const char *filename) ARANYM_THROWS(AranymException); public: virtual ~BootOs() {}; virtual void reset(bool cold); virtual const char *type() = 0; }; extern BootOs *bootOs; #endif /* BOOTOS_H */ /* vim:ts=4:sw=4 */ aranym-1.1.0/src/include/blitter.h0000664000175000017500000000404513454637621015234 0ustar joyjoy/* * blitter.h - Atari Blitter emulation code - declaration * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * Based on work by Martin Griffiths for the STonX, see below. * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _BLITTER_H #define _BLITTER_H #include "icio.h" class BLITTER : public BASE_IO { public: uint16 halftone_ram[16]; uint16 end_mask_1,end_mask_2,end_mask_3; uint8 NFSR,FXSR; uint16 x_count,y_count; uint8 hop,op,line_num,skewreg; short int halftone_curroffset,halftone_direction; short int source_x_inc, source_y_inc, dest_x_inc, dest_y_inc; uint32 source_addr, source_addr_backup; uint32 dest_addr, dest_addr_backup; bool blit; public: BLITTER(memptr, uint32); void reset(); virtual uint8 handleRead(memptr); virtual void handleWrite(memptr, uint8); virtual uae_u16 handleReadW(uaecptr addr); virtual void handleWriteW(uaecptr addr, uae_u16 value); virtual uae_u32 handleReadL(uaecptr addr); virtual void handleWriteL(uaecptr addr, uae_u32 value); uint16 LM_UW(memptr); void SM_UW(memptr, uint16); private: void Do_Blit(void); char LOAD_B_ff8a3c(); void STORE_B_ff8a3a(char); void STORE_B_ff8a3b(char); void STORE_B_ff8a3c(char); void STORE_B_ff8a3d(char); }; #endif /* _BLITTER_H */ aranym-1.1.0/src/include/audio_dma.h0000664000175000017500000000242613454637621015512 0ustar joyjoy/* Audio DMA emulation ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef AUDIODMA_H #define AUDIODMA_H #include "icio.h" /*--- AUDIODMA class ---*/ class AUDIODMA : public BASE_IO { private: int freqs[4]; uint32 current; uint16 mode; int freq; void updateCurrent(); void updateControl(); public: AUDIODMA(memptr, uint32); ~AUDIODMA(); void reset(); virtual uae_u8 handleRead(uaecptr addr); virtual void handleWrite(uaecptr addr, uae_u8 value); void updateMode(void); /* Only for audio callback */ uint16 control; uint32 start, end; int start_tic; }; #endif /* AUDIODMA_H */ aranym-1.1.0/src/include/audio_crossbar.h0000664000175000017500000000240013454637621016557 0ustar joyjoy/* Audio crossbar emulation ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef CROSSBAR_H #define CROSSBAR_H #include "icio.h" /*--- CROSSBAR class ---*/ class CROSSBAR : public BASE_IO { private: uint16 input, output; uint8 extfreqdiv, intfreqdiv, rec_tracks; uint8 in_source, adc_input; uint8 gain, atten; uint8 gpio_dir, gpio_data; public: CROSSBAR(memptr, uint32); ~CROSSBAR(); void reset(); virtual uae_u8 handleRead(uaecptr addr); virtual void handleWrite(uaecptr addr, uae_u8 value); int getIntFreq(void); int getIntPrediv(void); }; #endif /* CROSSBAR_H */ aranym-1.1.0/src/include/audio_conv.h0000664000175000017500000000266213454637621015720 0ustar joyjoy/* Audio format conversions ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef AUDIOCONV_H #define AUDIOCONV_H #include "SDL_compat.h" class AudioConv { private: SDL_AudioCVT cvt; Uint8 *tmpBuf; int srcRate, srcChan, srcOffset, srcSkip; int dstRate, tmpBufLen; int volume; int rescaleFreq8(Uint8 *source, int *src_len, Uint8 *dest, int dst_len); int rescaleFreq16(Uint16 *source, int *src_len, Uint16 *dest, int dst_len); public: AudioConv(void); ~AudioConv(); void setConversion(Uint16 src_fmt, Uint8 src_chan, int src_rate, int src_offset, int src_skip, Uint16 dst_fmt, Uint8 dst_chan, int dst_rate); void doConversion(Uint8 *source, int *src_len, Uint8 *dest, int *dst_len); void setVolume(int newVolume); }; #endif /* AUDIOCONV_H */ aranym-1.1.0/src/include/ata.h0000664000175000017500000002327513454637621014342 0ustar joyjoy///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2002 MandrakeSoft S.A. // // MandrakeSoft S.A. // 43, rue d'Aboukir // 75002 Paris - France // http://www.linux-mandrake.com/ // http://www.mandrakesoft.com/ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef ATA_H #define ATA_H #include "parameters.h" #ifdef SUPPORT_CDROM # define LOWLEVEL_CDROM cdrom_interface #endif typedef enum _sense { SENSE_NONE = 0, SENSE_NOT_READY = 2, SENSE_ILLEGAL_REQUEST = 5, SENSE_UNIT_ATTENTION = 6 } sense_t; typedef enum _asc { ASC_INV_FIELD_IN_CMD_PACKET = 0x24, ASC_MEDIUM_NOT_PRESENT = 0x3a, ASC_SAVING_PARAMETERS_NOT_SUPPORTED = 0x39, ASC_LOGICAL_BLOCK_OOR = 0x21 } asc_t; class LOWLEVEL_CDROM; class device_image_t { public: // Open a image. Returns non-negative if successful. virtual int open (const char* pathname, bool readonly) = 0; // Close the image. virtual void close () = 0; // Position ourselves. Return the resulting offset from the // beginning of the file. virtual off_t lseek (off_t offset, int whence) = 0; // Read count bytes to the buffer buf. Return the number of // bytes read (count). virtual ssize_t read (void* buf, size_t count) = 0; // Write count bytes from buf. Return the number of bytes // written (count). virtual ssize_t write (const void* buf, size_t count) = 0; virtual ~device_image_t() { } unsigned cylinders; unsigned heads; unsigned sectors; bool byteswap; }; class default_image_t : public device_image_t { public: // Open a image. Returns non-negative if successful. int open (const char* pathname, bool readonly); // Close the image. void close (); // Position ourselves. Return the resulting offset from the // beginning of the file. off_t lseek (off_t offset, int whence); // Read count bytes to the buffer buf. Return the number of // bytes read (count). ssize_t read (void* buf, size_t count); // Write count bytes from buf. Return the number of bytes // written (count). ssize_t write (const void* buf, size_t count); private: int fd; }; #ifdef BX_SPLIT_HD_SUPPORT class concat_image_t : public device_image_t { public: // Default constructor concat_image_t(); // Open a image. Returns non-negative if successful. int open (const char* pathname, bool readonly); // Close the image. void close (); // Position ourselves. Return the resulting offset from the // beginning of the file. off_t lseek (off_t offset, int whence); // Read count bytes to the buffer buf. Return the number of // bytes read (count). ssize_t read (void* buf, size_t count); // Write count bytes from buf. Return the number of bytes // written (count). ssize_t write (const void* buf, size_t count); private: #define BX_CONCAT_MAX_IMAGES 8 int fd_table[BX_CONCAT_MAX_IMAGES]; off_t start_offset_table[BX_CONCAT_MAX_IMAGES]; off_t length_table[BX_CONCAT_MAX_IMAGES]; void increment_string (char *str); int maxfd; // number of entries in tables that are valid // notice if anyone does sequential read or write without seek in between. // This can be supported pretty easily, but needs additional checks. // 0=something other than seek was last operation // 1=seek was last operation int seek_was_last_op; // the following variables tell which partial image file to use for // the next read and write. int index; // index into table int fd; // fd to use for reads and writes off_t thismin, thismax; // byte offset boundary of this image }; #endif /* BX_SPLIT_HD_SUPPORT */ #ifdef EXTERNAL_DISK_SIMULATOR #include "external-disk-simulator.h" #endif #ifdef DLL_HD_SUPPORT class dll_image_t : public device_image_t { public: // Open a image. Returns non-negative if successful. int open (const char* pathname, bool readonly); // Close the image. void close (); // Position ourselves. Return the resulting offset from the // beginning of the file. off_t lseek (off_t offset, int whence); // Read count bytes to the buffer buf. Return the number of // bytes read (count). ssize_t read (void* buf, size_t count); // Write count bytes from buf. Return the number of bytes // written (count). ssize_t write (const void* buf, size_t count); private: int vunit,vblk; }; #endif typedef struct { struct { bool busy; bool drive_ready; bool write_fault; bool seek_complete; bool drq; bool corrected_data; bool index_pulse; unsigned index_pulse_count; bool err; } status; Bit8u error_register; Bit8u head_no; union { Bit8u sector_count; struct { #ifdef WORDS_BIGENDIAN unsigned tag : 5; unsigned rel : 1; unsigned i_o : 1; unsigned c_d : 1; #else unsigned c_d : 1; unsigned i_o : 1; unsigned rel : 1; unsigned tag : 5; #endif } interrupt_reason; }; Bit8u sector_no; union { Bit16u cylinder_no; Bit16u byte_count; }; Bit8u buffer[2048]; Bit32u buffer_index; Bit32u drq_index; Bit8u current_command; Bit8u sectors_per_block; Bit8u lba_mode; struct { bool reset; // 0=normal, 1=reset controller bool disable_irq; // 0=allow irq, 1=disable irq } control; Bit8u reset_in_progress; Bit8u features; } controller_t; struct sense_info_t { sense_t sense_key; struct { Bit8u arr[4]; } information; struct { Bit8u arr[4]; } specific_inf; struct { Bit8u arr[3]; } key_spec; Bit8u fruc; Bit8u asc; Bit8u ascq; }; struct error_recovery_t { unsigned char data[8]; error_recovery_t (); }; uint16 read_16bit(const uint8* buf); uint32 read_32bit(const uint8* buf); #ifdef LOWLEVEL_CDROM # include "cdrom.h" #endif struct cdrom_t { bool ready; bool locked; #ifdef LOWLEVEL_CDROM LOWLEVEL_CDROM* cd; #endif uint32 capacity; int next_lba; int remaining_blocks; struct currentStruct { error_recovery_t error_recovery; } current; }; struct atapi_t { uint8 command; int drq_bytes; int total_bytes_remaining; }; #ifdef BX_USE_HD_SMF # define BX_HD_SMF static # define BX_HD_THIS bx_hard_drive. #else # define BX_HD_SMF # define BX_HD_THIS this-> #endif class bx_hard_drive_c { public: bx_hard_drive_c(void); ~bx_hard_drive_c(void); BX_HD_SMF void close_harddrive(void); BX_HD_SMF void init(); BX_HD_SMF void reset(unsigned type); BX_HD_SMF Bit32u get_device_handle(Bit8u channel, Bit8u device); BX_HD_SMF Bit32u get_first_cd_handle(void); BX_HD_SMF unsigned get_cd_media_status(Bit32u handle); BX_HD_SMF unsigned set_cd_media_status(Bit32u handle, unsigned status); BX_HD_SMF bool bmdma_read_sector(Bit8u channel, Bit8u *buffer); BX_HD_SMF bool bmdma_write_sector(Bit8u channel, Bit8u *buffer); BX_HD_SMF void bmdma_complete(Bit8u channel); #ifndef BX_USE_HD_SMF Bit32u read(Bit32u address, unsigned io_len); void write(Bit32u address, Bit32u value, unsigned io_len); #endif static Bit32u read_handler(void *this_ptr, Bit32u address, unsigned io_len); static void write_handler(void *this_ptr, Bit32u address, Bit32u value, unsigned io_len); private: BX_HD_SMF bool calculate_logical_address(Bit8u channel, off_t *sector); BX_HD_SMF void increment_address(Bit8u channel); BX_HD_SMF void identify_drive(Bit8u channel); BX_HD_SMF void identify_ATAPI_drive(Bit8u channel); BX_HD_SMF void command_aborted(Bit8u channel, unsigned command); BX_HD_SMF void init_send_atapi_command(Bit8u channel, Bit8u command, int req_length, int alloc_length, bool lazy = false); BX_HD_SMF void ready_to_send_atapi(Bit8u channel); BX_HD_SMF void raise_interrupt(Bit8u channel); BX_HD_SMF void atapi_cmd_error(Bit8u channel, sense_t sense_key, asc_t asc); BX_HD_SMF void init_mode_sense_single(Bit8u channel, const void* src, int size); BX_HD_SMF void atapi_cmd_nop(Bit8u channel); // FIXME: // For each ATA channel we should have one controller struct // and an array of two drive structs struct channel_t { struct drive_t { device_image_t* hard_drive; device_type_t device_type; // 512 byte buffer for ID drive command // These words are stored in native word endian format, as // they are fetched and returned via a return(), so // there's no need to keep them in x86 endian format. Bit16u id_drive[256]; controller_t controller; cdrom_t cdrom; sense_info_t sense; atapi_t atapi; Bit8u model_no[41]; } drives[2]; unsigned drive_select; #if 0 Bit32u ioaddr1; Bit32u ioaddr2; Bit8u irq; #endif Bit32u (*addr2io)(Bit32u); } channels[BX_MAX_ATA_CHANNEL]; }; extern bx_hard_drive_c bx_hard_drive; #ifndef UNUSED # define UNUSED(x) ((void)x) #endif #endif /* ATA_H */ aranym-1.1.0/src/include/aspi-win32.h0000664000175000017500000003005613454637621015464 0ustar joyjoy// // iodev/aspi-win32.h // // This file was copied from cdrecord 1.9 under libscg/scg/aspi-win32.h. // The only modification is related to use of the PACKED keyword. // #ifndef __ASPI_WIN32_H_ #define __ASPI_WIN32_H_ #include "windows_ver.h" #ifndef PACKED // It seems that VC++ has no PACKED keyword but Cygwin does. We can just // define PACKED to be empty if it's not already defined by the system // headers. #define PACKED /* empty */ #endif /*************************************************************************** ** SCSI MISCELLANEOUS EQUATES ***************************************************************************/ #define SENSE_LEN 14 /* Default sense buffer length */ #define SRB_DIR_SCSI 0x00 /* Direction determined by SCSI */ #define SRB_POSTING 0x01 /* Enable ASPI posting */ #define SRB_ENABLE_RESIDUAL_COUNT 0x04 /* Enable residual byte count */ /* reporting */ #define SRB_DIR_IN 0x08 /* Transfer from SCSI target to */ /* host */ #define SRB_DIR_OUT 0x10 /* Transfer from host to SCSI */ /* target */ #define SRB_EVENT_NOTIFY 0x40 /* Enable ASPI event notification */ #define RESIDUAL_COUNT_SUPPORTED 0x02 /* Extended buffer flag */ #define MAX_SRB_TIMEOUT 1080001u /* 30 hour maximum timeout in sec */ #define DEFAULT_SRB_TIMEOUT 1080001u /* use max.timeout by default */ /*************************************************************************** ** ASPI command definitions ***************************************************************************/ #define SC_HA_INQUIRY 0x00 /* Host adapter inquiry */ #define SC_GET_DEV_TYPE 0x01 /* Get device type */ #define SC_EXEC_SCSI_CMD 0x02 /* Execute SCSI command */ #define SC_ABORT_SRB 0x03 /* Abort an SRB */ #define SC_RESET_DEV 0x04 /* SCSI bus device reset */ #define SC_SET_HA_PARMS 0x05 /* Set HA parameters */ #define SC_GET_DISK_INFO 0x06 /* Get Disk */ #define SC_RESCAN_SCSI_BUS 0x07 /* Rebuild SCSI device map */ #define SC_GETSET_TIMEOUTS 0x08 /* Get/Set target timeouts */ /*************************************************************************** ** SRB Status ***************************************************************************/ #define SS_PENDING 0x00 /* SRB being processed */ #define SS_COMP 0x01 /* SRB completed without error */ #define SS_ABORTED 0x02 /* SRB aborted */ #define SS_ABORT_FAIL 0x03 /* Unable to abort SRB */ #define SS_ERR 0x04 /* SRB completed with error */ #define SS_INVALID_CMD 0x80 /* Invalid ASPI command */ #define SS_INVALID_HA 0x81 /* Invalid host adapter number */ #define SS_NO_DEVICE 0x82 /* SCSI device not installed */ #define SS_INVALID_SRB 0xE0 /* Invalid parameter set in SRB */ #define SS_OLD_MANAGER 0xE1 /* ASPI manager doesn't support */ /* windows */ #define SS_BUFFER_ALIGN 0xE1 /* Buffer not aligned (replaces */ /* SS_OLD_MANAGER in Win32) */ #define SS_ILLEGAL_MODE 0xE2 /* Unsupported Windows mode */ #define SS_NO_ASPI 0xE3 /* No ASPI managers */ #define SS_FAILED_INIT 0xE4 /* ASPI for windows failed init */ #define SS_ASPI_IS_BUSY 0xE5 /* No resources available to */ /* execute command */ #define SS_BUFFER_TO_BIG 0xE6 /* Buffer size too big to handle */ #define SS_BUFFER_TOO_BIG 0xE6 /* Correct spelling of 'too' */ #define SS_MISMATCHED_COMPONENTS 0xE7 /* The DLLs/EXEs of ASPI don't */ /* version check */ #define SS_NO_ADAPTERS 0xE8 /* No host adapters to manager */ #define SS_INSUFFICIENT_RESOURCES 0xE9 /* Couldn't allocate resources */ /* needed to init */ #define SS_ASPI_IS_SHUTDOWN 0xEA /* Call came to ASPI after */ /* PROCESS_DETACH */ #define SS_BAD_INSTALL 0xEB /* The DLL or other components */ /* are installed wrong */ /*************************************************************************** ** Host Adapter Status ***************************************************************************/ #define HASTAT_OK 0x00 /* No error detected by HA */ #define HASTAT_SEL_TO 0x11 /* Selection Timeout */ #define HASTAT_DO_DU 0x12 /* Data overrun/data underrun */ #define HASTAT_BUS_FREE 0x13 /* Unexpected bus free */ #define HASTAT_PHASE_ERR 0x14 /* Target bus phase sequence */ #define HASTAT_TIMEOUT 0x09 /* Timed out while SRB was */ /* waiting to be processed */ #define HASTAT_COMMAND_TIMEOUT 0x0B /* Adapter timed out while */ /* processing SRB */ #define HASTAT_MESSAGE_REJECT 0x0D /* While processing the SRB, the */ /* adapter received a MESSAGE */ #define HASTAT_BUS_RESET 0x0E /* A bus reset was detected */ #define HASTAT_PARITY_ERROR 0x0F /* A parity error was detected */ #define HASTAT_REQUEST_SENSE_FAILED 0x10 /* The adapter failed in issuing */ /*************************************************************************** ** SRB - HOST ADAPTER INQUIRIY - SC_HA_INQUIRY (0) ***************************************************************************/ typedef struct { BYTE SRB_Cmd; /* 00/000 ASPI command code == SC_HA_INQUIRY */ BYTE SRB_Status; /* 01/001 ASPI command status byte */ BYTE SRB_HaId; /* 02/002 ASPI host adapter number */ BYTE SRB_Flags; /* 03/003 ASPI request flags */ DWORD SRB_Hdr_Rsvd; /* 04/004 Reserved, must = 0 */ BYTE HA_Count; /* 08/008 Number of host adapters present */ BYTE HA_SCSI_ID; /* 09/009 SCSI ID of host adapter */ BYTE HA_ManagerId[16]; /* 0a/010 String describing the manager */ BYTE HA_Identifier[16]; /* 1a/026 String describing the host adapter */ BYTE HA_Unique[16]; /* 2a/042 Host Adapter Unique parameters */ WORD HA_Rsvd1; /* 3a/058 Reserved, must = 0 */ } PACKED SRB_HAInquiry, *PSRB_HAInquiry, FAR *LPSRB_HAInquiry; /*************************************************************************** ** SRB - GET DEVICE TYPE - SC_GET_DEV_TYPE (1) ***************************************************************************/ typedef struct { BYTE SRB_Cmd; /* 00/000 ASPI cmd code == SC_GET_DEV_TYPE */ BYTE SRB_Status; /* 01/001 ASPI command status byte */ BYTE SRB_HaId; /* 02/002 ASPI host adapter number */ BYTE SRB_Flags; /* 03/003 Reserved, must = 0 */ DWORD SRB_Hdr_Rsvd; /* 04/004 Reserved, must = 0 */ BYTE SRB_Target; /* 08/008 Target's SCSI ID */ BYTE SRB_Lun; /* 09/009 Target's LUN number */ BYTE SRB_DeviceType; /* 0a/010 Target's peripheral device type */ BYTE SRB_Rsvd1; /* 0b/011 Reserved, must = 0 */ } PACKED SRB_GDEVBlock, *PSRB_GDEVBlock, FAR *LPSRB_GDEVBlock; /*************************************************************************** ** SRB - EXECUTE SCSI COMMAND - SC_EXEC_SCSI_CMD (2) ***************************************************************************/ typedef struct { BYTE SRB_Cmd; /* 00/000 ASPI cmd code == SC_EXEC_SCSI_CMD */ BYTE SRB_Status; /* 01/001 ASPI command status byte */ BYTE SRB_HaId; /* 02/002 ASPI host adapter number */ BYTE SRB_Flags; /* 03/003 Reserved, must = 0 */ DWORD SRB_Hdr_Rsvd; /* 04/004 Reserved, must = 0 */ BYTE SRB_Target; /* 08/008 Target's SCSI ID */ BYTE SRB_Lun; /* 09/009 Target's LUN */ WORD SRB_Rsvd1; /* 0a/010 Reserved for alignment */ DWORD SRB_BufLen; /* 0c/012 Data Allocation Length */ BYTE FAR *SRB_BufPointer; /* 10/016 Data Buffer Pointer */ BYTE SRB_SenseLen; /* 14/020 Sense Allocation Length */ BYTE SRB_CDBLen; /* 15/021 CDB Length */ BYTE SRB_HaStat; /* 16/022 Host Adapter Status */ BYTE SRB_TargStat; /* 17/023 Target Status */ VOID FAR *SRB_PostProc; /* 18/024 Post routine */ BYTE SRB_Rsvd2[20]; /* 1c/028 Reserved, must = 0 */ BYTE CDBByte[16]; /* 30/048 SCSI CDB */ BYTE SenseArea[SENSE_LEN+2]; /* 40/064 Request Sense buffer */ } PACKED SRB_ExecSCSICmd, *PSRB_ExecSCSICmd, FAR *LPSRB_ExecSCSICmd; typedef struct { BYTE SRB_Cmd; /* 00/000 ASPI cmd code == SC_ABORT_SRB */ BYTE SRB_Status; /* 01/001 ASPI command status byte */ BYTE SRB_HaId; /* 02/002 ASPI host adapter number */ BYTE SRB_Flags; /* 03/003 Reserved, must = 0 */ DWORD SRB_Hdr_Rsvd; /* 04/004 Reserved, must = 0 */ void *SRB_ToAbort; /* 08/008 Pointer to SRB to abort */ } PACKED SRB_Abort, *PSRB_Abort, FAR *LPSRB_Abort; /*************************************************************************** ** SRB - BUS DEVICE RESET - SC_RESET_DEV (4) ***************************************************************************/ typedef struct { BYTE SRB_Cmd; /* 00/000 ASPI cmd code == SC_RESET_DEV */ BYTE SRB_Status; /* 01/001 ASPI command status byte */ BYTE SRB_HaId; /* 02/002 ASPI host adapter number */ DWORD SRB_Flags; /* 04/004 Reserved */ BYTE SRB_Target; /* 08/008 Target's SCSI ID */ BYTE SRB_Lun; /* 09/009 Target's LUN number */ BYTE SRB_Rsvd1[12]; /* 0A/010 Reserved for alignment */ BYTE SRB_HaStat; /* 16/022 Host Adapter Status */ BYTE SRB_TargStat; /* 17/023 Target Status */ VOID FAR *SRB_PostProc; /* 18/024 Post routine */ BYTE SRB_Rsvd2[36]; /* 1C/028 Reserved, must = 0 */ } SRB_BusDeviceReset, *PSRB_BusDeviceReset, FAR *LPSRB_BusDeviceReset; typedef struct tag_ASPI32BUFF { PBYTE AB_BufPointer; DWORD AB_BufLen; DWORD AB_ZeroFill; DWORD AB_Reserved; } PACKED ASPI32BUFF, *PASPI32BUFF, FAR *LPASPI32BUFF; typedef struct { BYTE SRB_Cmd; BYTE SRB_Status; BYTE SRB_HaId; BYTE SRB_Flags; DWORD SRB_Hdr_Rsvd; } SRB, *PSRB, FAR *LPSRB; #endif aranym-1.1.0/src/include/aranym_exception.h0000664000175000017500000000176713454637621017144 0ustar joyjoy/* General ARAnyM exception class ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef ARANYMEXCEPTION_H #define ARANYMEXCEPTION_H class AranymException { private: char errMsg[256]; public: AranymException(const char *fmt, ...); virtual ~AranymException(); char *getErrorMessage(void); }; #endif /* ARANYMEXCEPTION_H */ aranym-1.1.0/src/include/aramd5.h0000664000175000017500000000342413454637621014740 0ustar joyjoy/* * This is the header file for the MD5 message-digest algorithm. * The algorithm is due to Ron Rivest. This code was * written by Colin Plumb in 1993, no copyright is claimed. * This code is in the public domain; do with it what you wish. * * Equivalent code is available from RSA Data Security, Inc. * This code has been tested against that, and is equivalent, * except that you don't need to include two pages of legalese * with every copy. * * To compute the message digest of a chunk of bytes, declare an * MD5Context structure, pass it to MD5Init, call MD5Update as * needed on buffers full of bytes, and then call MD5Final, which * will fill a supplied 16-byte array with the digest. * * Changed so as no longer to depend on Colin Plumb's `usual.h' * header definitions; now uses stuff from dpkg's config.h * - Ian Jackson . * Still in the public domain. */ #ifndef MD5_H #define MD5_H # include #define md5byte uint8 #define UWORD32 uint32 struct MD5Context { UWORD32 buf[4]; UWORD32 bytes[2]; UWORD32 in[16]; }; class MD5 { private: struct MD5Context *context; public: MD5() { this->context = new MD5Context; } ~MD5() { delete this->context; } void computeSum(md5byte const *buf, unsigned long size, unsigned char digest[16]); bool compareSum(md5byte const *buf, unsigned long size, const unsigned char digest[16]); void printSum(const unsigned char digest[16]); bool computeSum(std::FILE *f, unsigned char digest[16]); bool compareSum(std::FILE *f, const unsigned char digest[16]); bool printSum(std::FILE *f); protected: void MD5Init(); void MD5Update(md5byte const *buf, unsigned len); void MD5Final(unsigned char digest[16]); private: void MD5Transform(UWORD32 buf[4], UWORD32 const in[16]); }; #endif /* !MD5_H */ aranym-1.1.0/src/include/aradata.h0000664000175000017500000000277413454637621015173 0ustar joyjoy/* * aradata.h - ARAnyM special HW registers - declaration * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _ARADATA #define _ARADATA #include "icio.h" class ARADATA : public BASE_IO { private: bool mouseDriver; uae_u32 abase; int mouse_x, mouse_y; void reset(); public: ARADATA(memptr, uint32); virtual uint8 handleRead(memptr addr); virtual void handleWrite(memptr addr, uint8 value); bool isAtariMouseDriver() { return abase != 0 || mouseDriver; } int getAtariMouseX(); int getAtariMouseY(); void setAtariMousePosition(int x, int y) { mouse_x = x; mouse_y = y; } void setAbase(memptr new_abase); }; #endif /* _ARADATA */ aranym-1.1.0/src/include/adler32.h0000664000175000017500000000231213454637621015016 0ustar joyjoy/* Adler-32 algorithm implementation to deal with blocks (rows x lines) based on http://en.wikipedia.org/wiki/Adler-32 (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef ADLER32_H #define ADLER32_H 1 #include "SDL_compat.h" #ifdef __cplusplus extern "C" { #endif /* Calc Adler-32 sum in a rows*lines block rows = number of bytes in a line lines = number of lines pitch = length of a line in bytes (to skip a part) */ Uint32 calc_adler(Uint8 *base, int rows, int lines, int pitch); #ifdef __cplusplus } #endif #endif /* ADLER32_H */ aranym-1.1.0/src/include/acsifdc.h0000664000175000017500000000444213454637621015164 0ustar joyjoy/* * acsifdc.h - Atari floppy emulation code - class definition * * Copyright (c) 2001-2005 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _ACSIFDC_H #define _ACSIFDC_H #include "icio.h" enum { DISKDMA_BIT0=0, /* for scsi: bits 2-0 are ncr5380 register */ DISKDMA_A0, /* for floppy: bits A0,A1 are WD1772 register */ DISKDMA_A1, DISKDMA_CS, /* Select, 0=floppy, 1=acsi/scsi */ DISKDMA_BIT4, DISKDMA_BIT5, DISKDMA_DMA, /* DMA enabled, 0=on, 1=off */ DISKDMA_DRQ, /* Run command, 0=off, 1=on */ DISKDMA_RW /* DMA direction, 0=read, 1=write */ }; /* The DMA disk class */ class ACSIFDC : public BASE_IO { private: memptr DMAaddr; bool floppy_changed; int drive_fd; int head, sides, tracks, spt, secsize; int dma_mode, dma_scr, dma_car, dma_sr; int fdc_command, fdc_track, fdc_sector, fdc_data, fdc_status; public: ACSIFDC(memptr, uint32); void reset(); virtual uint16 handleReadW(memptr); virtual void handleWriteW(memptr, uint16); virtual uint8 handleRead(memptr); virtual void handleWrite(memptr, uint8); void remove_floppy(); bool insert_floppy(); bool is_floppy_inserted(); private: uint16 getDMAData(); uint16 getDMAStatus(); void setDMASectorCount(uint16); void setDMAMode(uint16); void set_floppy_geometry(); void fdc_exec_command(); bool read_file(int device, long offset, memptr address, int secsize, int count); bool write_file(int device, long offset, memptr address, int secsize, int count); }; #endif /* _ACSIFDC_H */ aranym-1.1.0/src/include/acia.h0000664000175000017500000000552213454637621014465 0ustar joyjoy/* * acia.h - ACIA 6850 emulation code - declaration * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _ACIA_H #define _ACIA_H #include "icio.h" /*--- ACIA CR register ---*/ /* Clock predivisor, bits 0-1 */ #define ACIA_CR_PREDIV_MASK 0x03 #define ACIA_CR_PREDIV1 0x00 /* Nominal clock = 500 Khz */ #define ACIA_CR_PREDIV16 0x01 /* Clock/16 = 31250 Hz */ #define ACIA_CR_PREDIV64 0x02 /* Clock/64 = 7812.5 Hz */ #define ACIA_CR_RESET 0x03 /* Master reset */ /* Format, bits 2-4 */ #define ACIA_CR_PARITY 0x02 /* 0=parity, 1=no parity */ #define ACIA_CR_STOPBITS 0x03 /* 0=2 stop bits, 1=1 stop bits */ #define ACIA_CR_DATABITS 0x04 /* 0=7 data bits, 1=8 data bits */ /* Emission control, bits 5-6 */ #define ACIA_CR_EMIT_RTS 0x05 /* 0=RTS low, 1=RTS high */ #define ACIA_CR_EMIT_INTER 0x06 /* 0=interrupt disabled, 1=interrupt enabled */ /* Reception control, bit 7 */ #define ACIA_CR_REC_INTER 0x07 /* 0=interrupt disabled, 1=interrupt enabled */ /*--- ACIA SR register ---*/ #define ACIA_SR_RXFULL 0x00 /* Receive full */ #define ACIA_SR_TXEMPTY 0x01 /* Transmit empty */ #define ACIA_SR_CD 0x02 /* Carrier detect */ #define ACIA_SR_CTS 0x03 /* Clear to send */ #define ACIA_SR_FRAMEERR 0x04 /* Frame error */ #define ACIA_SR_OVERRUN 0x05 /* Overrun */ #define ACIA_SR_PARITYERR 0x06 /* Parity error */ #define ACIA_SR_INTERRUPT 0x07 /* Interrupt source */ /*--- ACIA class ---*/ class ACIA : public BASE_IO { protected: uae_u8 sr; /* Status register */ uae_u8 cr; /* Control register */ uae_u8 rxdr; /* Reception data register */ uae_u8 txdr; /* Transmit data register */ public: ACIA(memptr, uint32); virtual ~ACIA(); void reset(); virtual uae_u8 handleRead(uaecptr addr); virtual void handleWrite(uaecptr addr, uae_u8 value); virtual uae_u8 ReadStatus(); virtual void WriteControl(uae_u8 value); virtual uae_u8 ReadData(); virtual void WriteData(uae_u8); void PrintControlRegister(const char *devicename, uae_u8 value); }; #endif /* _ACIA_H */ aranym-1.1.0/src/include/SDL_opengl_wrapper.h0000664000175000017500000000270513454637621017316 0ustar joyjoy#ifndef SDL_OPENGL_WRAPPER_H #define SDL_OPENGL_WRAPPER_H #if defined(ENABLE_OPENGL) /* on Cygwin we need the WIN32 version of the api */ #ifdef __CYGWIN__ # include # define __WIN32__ 1 # define _WIN32 1 # define __MINGW32__ 1 # ifndef _DLL # define _DLL 1 # define __dll_defined_here # endif # undef __CYGWIN__ # define __cygwin_undefined_here # define __STRALIGN_H_ 1 #endif #define GL_GLEXT_LEGACY #include #if defined(__MACOSX__) #include /* Header File For The OpenGL Library */ #include /* Header File For The GLU Library */ #elif defined(__MACOS__) #include /* Header File For The OpenGL Library */ #include /* Header File For The GLU Library */ #else #include /* Header File For The OpenGL Library */ #include /* Header File For The GLU Library */ #endif #include "glenums.h" /* On darwin/Mac OS X systems SDL_opengl.h includes OpenGL/gl.h instead of GL/gl.h, which does not define GLAPI and GLAPIENTRY used by GL/osmesa.h */ #if defined(__gl_h_) #if !defined(GLAPI) #define GLAPI #endif #if !defined(GLAPIENTRY) #define GLAPIENTRY #endif #endif #ifdef __cygwin_undefined_here # undef __WIN32__ # undef _WIN32 # undef __MINGW32__ # ifdef __dll_defined_here # undef _DLL # undef __dll_defined_here # endif # define __CYGWIN__ 1 # undef __cygwin_undefined_here #endif #endif /* ENABLE_OPENGL */ #endif /* SDL_OPENGL_WRAPPER_H */ aranym-1.1.0/src/include/SDL_compat.h0000664000175000017500000001341613454637621015556 0ustar joyjoy#ifndef _SDL_COMPAT_H #define _SDL_COMPAT_H /* * SDL 1.x/SDL2 compatibility macros. * * Newly written code should use the SDL2 names where they differ, * and define macros here to map them to SDL 1.x names if neccessary. */ #if defined(HAVE_STDINT_H) # define _HAVE_STDINT_H 1 /* SDL2 needs this */ #endif #ifndef HAVE_LIBC # define HAVE_LIBC 1 /* SDL2 does not include system headers without it */ #endif /* * workaround for SDL2/SDL_syswm.h: * make sure directfb++.h isn't included, because it is wrapped in extern "C" */ #define DIRECTFBPP_H /* * some broken installations of SDL define the PACKAGE_* from * the compilation of SDL itself in SDL_config.h; * just undefine them to avoid redefinitions, we don't need them */ #undef PACKAGE_TARNAME #undef PACKAGE_NAME #undef PACKAGE_STRING #undef PACKAGE_BUGREPORT #undef PACKAGE_VERSION #undef PACKAGE_URL #include #include #include #include #include #if defined(__CYGWIN__) /* * HACK: cygwin/mingw32 mix crap * if not present the SDL_putenv uses cygwin implementation however * the video driver reading it uses SDL_getenv which comes from the SDL * build using mingw32... * * SDL2 does not have its own putenv() any longer, but still SDL_getenv() * The places where SDL_putenv was used before, however, * are handled differently now. */ #undef SDL_getenv #undef SDL_putenv #ifdef __cplusplus extern "C" { #endif extern DECLSPEC char * SDLCALL SDL_getenv(const char *name); extern DECLSPEC int SDLCALL SDL_putenv(const char *variable); #ifdef __cplusplus } #endif #else #ifndef SDL_putenv #define SDL_putenv(x) putenv(x) #endif #endif /* * work around inconsistencies between w32api headers * and cygwin headers: both may declare ssize_t/intptr_t * but protect it by different defines */ #ifdef _INTPTR_T_DECLARED #define _INTPTR_T_DEFINED #endif #ifdef _UINTPTR_T_DECLARED #define _UINTPTR_T_DEFINED #endif #ifdef _SSIZE_T_DECLARED #define _SSIZE_T_DEFINED #endif #if SDL_VERSION_ATLEAST(2, 0, 0) #define SDL_CreateNamedThread(fn, name, data) SDL_CreateThread(fn, name, data) #define WINDOW_ALPHA 0xff #define SDL_SRCCOLORKEY SDL_TRUE #define SDLK_IS_MODIFIER(sym) \ ((sym) == SDLK_NUMLOCKCLEAR || \ (sym) == SDLK_CAPSLOCK || \ (sym) == SDLK_SCROLLLOCK || \ (sym) == SDLK_RSHIFT || \ (sym) == SDLK_LSHIFT || \ (sym) == SDLK_RCTRL || \ (sym) == SDLK_LCTRL || \ (sym) == SDLK_RALT || \ (sym) == SDLK_LALT || \ (sym) == SDLK_RGUI || \ (sym) == SDLK_LGUI || \ (sym) == SDLK_MODE) #define SDL_GetVideoDriverName() SDL_GetCurrentVideoDriver() #else #define SDL_CreateNamedThread(fn, name, data) SDL_CreateThread(fn, data) #define SDL_SetMainReady() #define SDL_GetWindowGrab(window) (SDL_WM_GrabInput(SDL_GRAB_QUERY) == SDL_GRAB_ON ? SDL_TRUE : SDL_FALSE) #define SDL_SetWindowGrab(window, on) SDL_WM_GrabInput((on) ? SDL_GRAB_ON : SDL_GRAB_OFF) typedef SDLMod SDL_Keymod; typedef SDLKey SDL_Keycode; typedef Uint8 SDL_Scancode; typedef SDL_keysym SDL_Keysym; typedef SDL_audiostatus SDL_AudioStatus; #define SDL_GetVersion(v) *(v) = *SDL_Linked_Version() #define KMOD_LGUI KMOD_LMETA #define KMOD_RGUI KMOD_RMETA #define KMOD_GUI KMOD_META #define SDLK_KP_1 SDLK_KP1 #define SDLK_KP_2 SDLK_KP2 #define SDLK_KP_3 SDLK_KP3 #define SDLK_KP_4 SDLK_KP4 #define SDLK_KP_5 SDLK_KP5 #define SDLK_KP_6 SDLK_KP6 #define SDLK_KP_7 SDLK_KP7 #define SDLK_KP_8 SDLK_KP8 #define SDLK_KP_9 SDLK_KP9 #define SDLK_KP_0 SDLK_KP0 #define SDLK_SCROLLLOCK SDLK_SCROLLOCK #define SDLK_PRINTSCREEN SDLK_PRINT #define SDLK_NUMLOCKCLEAR SDLK_NUMLOCK #define SDLK_LGUI SDLK_LMETA #define SDLK_RGUI SDLK_RMETA #define SDLK_CANCEL SDLK_BREAK #define SDLK_IS_MODIFIER(sym) ((sym) >= SDLK_NUMLOCK && (sym) <= SDLK_COMPOSE) static inline const char *SDL_GetVideoDriverName(void) { static char namebuf[80]; return SDL_VideoDriverName(namebuf, (int)sizeof(namebuf)); } typedef void *SDL_GLContext; #if defined(SDL_VIDEO_DRIVER_WINDIB) || defined(SDL_VIDEO_DRIVER_DDRAW) || defined(SDL_VIDEO_DRIVER_GAPI) extern SDL_GLContext SDL_GL_GetCurrentContext(void); #endif #if defined(SDL_VIDEO_DRIVER_QUARTZ) #ifdef __cplusplus extern "C" { #endif /* returns a NSOpenGLContext and must be implemented in Objc */ extern SDL_GLContext SDL_GL_GetCurrentContext(void); #ifdef __cplusplus } #endif #endif #if defined(SDL_VIDEO_DRIVER_X11) /* * SDL_syswm includes , but on macOS * These headers are only available if XQuartz was installed */ #if !(defined(SDL_VIDEO_DRIVER_QUARTZ) || defined(SDL_VIDEO_DRIVER_COCOA)) || defined(HAVE_X11_XLIB_H) # define HAVE_X11_XLIB_H 1 #endif extern SDL_GLContext SDL_GL_GetCurrentContext(void); #endif #endif #if !defined(SDL_VIDEO_DRIVER_WINDOWS) && (defined(SDL_VIDEO_DRIVER_WINRT) || defined(SDL_VIDEO_DRIVER_WINDIB) || defined(SDL_VIDEO_DRIVER_DDRAW) || defined(SDL_VIDEO_DRIVER_GAPI)) # define SDL_VIDEO_DRIVER_WINDOWS 1 #endif #ifdef __cplusplus extern "C" { #endif extern void SDL_GL_SetCurrentContext(SDL_GLContext ctx); #ifdef __cplusplus } #endif /* * possible driver names: * * SDL1: * riscos * svgalib * bwindow * qtopia * vgl * wscons * x11 * xbios * directfb * aalib * caca * dcvideo * dga * Quartz * DSp (MacOS dspvideo) * toolbox (MacOS romvideo) * windib * directx * epoc * fbcon * gapi (WinCE GAPI) * gem * ggi * ps2gs * ipod * nds * dummy * nanox * os2fslib * picogui * photon * ps3 * * SDL2: * PSP * RPI (RaspBery Pi, GLES) * uikit * wayland * windows * winrt (GLES) * x11 * directfb * cocoa * Android (GLES) * haiku * mir * dummy * wiz */ static inline int SDL_IsVideoDriver(const char *name) { const char *driver = SDL_GetVideoDriverName(); if (!driver) return 0; return strcmp(driver, name) == 0; } SDL_Surface *mySDL_LoadBMP_RW(SDL_RWops * src, int freesrc); #endif /* _SDL_COMPAT_H */ aranym-1.1.0/src/ikbd.cpp0000664000175000017500000003063213454637621013411 0ustar joyjoy/* * ikbd.cpp - IKBD 6301 emulation code * * Copyright (c) 2001-2013 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "ikbd.h" #define DEBUG 0 #include "debug.h" /*--- Defines ---*/ #define DEFAULT_INBUFFERLEN (1<<13) #define DEFAULT_OUTBUFFERLEN (1<<4) #define MOUSE_DELTA_MAX 63 #define JOYSTICK_THRESHOLD 16384 /*--- Constructor/destructor of the IKBD class ---*/ IKBD::IKBD(memptr addr, uint32 size) : ACIA(addr, size) { D(bug("ikbd: interface created at 0x%06x", getHWoffset())); inbufferlen = DEFAULT_INBUFFERLEN; outbufferlen = DEFAULT_OUTBUFFERLEN; inbuffer = new uint8[inbufferlen]; outbuffer = new uint8[outbufferlen]; reset(); }; IKBD::~IKBD() { delete [] outbuffer; outbuffer = NULL; delete [] inbuffer; inbuffer = NULL; D(bug("ikbd: interface destroyed at 0x%06x", getHWoffset())); } /*--- IKBD i/o access functions ---*/ void IKBD::reset() { inread = inwrite = 0; outwrite = 0; intype = IKBD_PACKET_UNKNOWN; /* Default: mouse on port 0 enabled */ mouse_enabled = SDL_TRUE; mouserel_enabled = SDL_TRUE; yaxis_reversed = false; mousex = mousey = mouseb = 0; /* Default: joystick on port 0 disabled */ joy_enabled[0] = SDL_FALSE; joy_state[0] = 0; /* Default: joystick on port 1 enabled */ joy_enabled[1] = SDL_TRUE; joy_state[1] = 0; D(bug("ikbd: reset")); } uint8 IKBD::ReadStatus() { D(bug("ikbd: ReadStatus()=0x%02x",sr)); return sr; } void IKBD::WriteControl(uint8 value) { cr = value; D(bug("ikbd: WriteControl(0x%02x)",cr)); #if DEBUG PrintControlRegister("ikbd",cr); #endif } uint8 IKBD::ReadData() { if (inread != inwrite) { rxdr = inbuffer[inread++]; D(bug("ikbd: ReadData()=0x%02x at position %d",rxdr, inread-1)); inread &= (inbufferlen-1); if (inread == inwrite) { /* Queue empty */ /* Update MFP GPIP */ getMFP()->setGPIPbit(0x10, 0x10); sr &= ~((1<tm_year % 100)); send(int2bcd(curtim->tm_mon+1)); send(int2bcd(curtim->tm_mday)); send(int2bcd(curtim->tm_hour)); send(int2bcd(curtim->tm_min)); send(int2bcd(curtim->tm_sec)); outwrite = 0; } break; } break; case 2: switch(outbuffer[0]) { case 0x07: D(bug("ikbd: Set mouse report mode")); outwrite = 0; break; case 0x17: D(bug("ikbd: Joystick position read continuously")); outwrite = 0; break; case 0x80: if (outbuffer[1]==0x01) { reset(); outwrite = 0; send(0xf1); // if all's well code 0xF1 is returned, else the break codes of all keys making contact } break; } break; case 3: switch(outbuffer[0]) { case 0x0a: D(bug("ikbd: Set mouse emulation via keyboard")); mouse_enabled = SDL_TRUE; joy_enabled[1] = SDL_TRUE; outwrite = 0; break; case 0x0b: D(bug("ikbd: Set mouse threshold")); outwrite = 0; break; case 0x0c: D(bug("ikbd: Set mouse accuracy")); outwrite = 0; break; case 0x20: D(bug("ikbd: Write to IKBD ram")); /* FIXME: we should ignore a given number of following bytes */ outwrite = 0; break; case 0x21: D(bug("ikbd: Read from IKBD ram")); outwrite = 0; break; } break; case 4: switch(outbuffer[0]) { case 0x09: D(bug("ikbd: Set mouse absolute mode")); mouse_enabled = SDL_TRUE; mouserel_enabled = SDL_FALSE; joy_enabled[1] = SDL_TRUE; outwrite = 0; break; } break; case 5: switch(outbuffer[0]) { case 0x0e: D(bug("ikbd: Set mouse position")); outwrite = 0; break; } break; case 6: switch(outbuffer[0]) { case 0x19: D(bug("ikbd: Set joystick keyboard emulation")); outwrite = 0; break; case 0x1b: D(bug("ikbd: Set date/time")); outwrite = 0; break; } break; default: outwrite = 0; break; } } /*--- Functions called to transmit an input event from host to IKBD ---*/ void IKBD::SendKey(uint8 scancode) { intype = IKBD_PACKET_KEYBOARD; send(scancode); } void IKBD::SendMouseMotion(int relx, int rely, int buttons, bool slow) { if (!mouse_enabled) return; if (!slow && (abs(relx) > 2048 || abs(rely) > 2048)) { bug("IKBD: ignoring insane mouse motion: [%d, %d]", relx, rely); return; } // Generate several mouse packets if motion is too long do { int movex, movey; if (slow) { movex = relx > 0 ? 1 : relx < 0 ? -1 : 0; movey = rely > 0 ? 1 : rely < 0 ? -1 : 0; } else { movex = (abs(relx) > MOUSE_DELTA_MAX) ? ( (relx > 0) ? MOUSE_DELTA_MAX : -MOUSE_DELTA_MAX ) : relx; movey = (abs(rely) > MOUSE_DELTA_MAX) ? ( (rely > 0) ? MOUSE_DELTA_MAX : -MOUSE_DELTA_MAX ) : rely; } relx -= movex; rely -= movey; /* Merge with the previous mouse packet ? */ if (!slow) MergeMousePacket(&movex, &movey, buttons); /* Send the packet */ intype = IKBD_PACKET_MOUSE; send(0xf8 | (buttons & 3)); send(movex); send(yaxis_reversed ? -movey : movey); // bug("IKBD: creating mouse packet [%d (%d), %d (%d), %d]", movex, relx, (yaxis_reversed ? -movey : movey), rely, buttons & 3); } while (relx || rely); } void IKBD::MergeMousePacket(int *relx, int *rely, int buttons) { int mouse_inwrite; int distx, disty; /* Check if it was a mouse packet */ if (intype != IKBD_PACKET_MOUSE) return; /* And ReadData() is not waiting our packet */ if (inread == inwrite) return; /* Where is the previous mouse packet ? */ mouse_inwrite = (inwrite-3) & (inbufferlen-1); /* Check if not currently read */ if ((inread == mouse_inwrite) || (inread == ((mouse_inwrite+1) & (inbufferlen-1))) || (inread == ((mouse_inwrite+2) & (inbufferlen-1))) ) return; /* Check mouse packet header */ if ((inbuffer[mouse_inwrite]<=0xf8) && (inbuffer[mouse_inwrite]>=0xfb)) return; /* Check if same buttons are pressed */ if (inbuffer[mouse_inwrite] != (0xf8 | (buttons & 3))) return; /* Check if distances are not too far */ distx = *relx + inbuffer[(mouse_inwrite+1) & (inbufferlen-1)]; if (abs(distx) > MOUSE_DELTA_MAX) return; disty = *rely + inbuffer[(mouse_inwrite+2) & (inbufferlen-1)]; if (abs(disty) > MOUSE_DELTA_MAX) return; /* Replace previous packet */ inwrite = mouse_inwrite; *relx = distx; *rely = disty; } void IKBD::SendJoystickAxis(int numjoy, int numaxis, int value) { uint8 newjoy_state; if (!joy_enabled[numjoy]) return; newjoy_state = joy_state[numjoy]; switch(numaxis) { case 0: newjoy_state &= ~((1<JOYSTICK_THRESHOLD) { newjoy_state |= 1<JOYSTICK_THRESHOLD) { newjoy_state |= 1<handleRead(0xfffa09) & 0x40)==0) return; /* Check ACIA interrupt on reception */ if ((cr & (1<setGPIPbit(0x10, 0x10); /* Force GPIP value transition so MFP layer generates interrupt */ getMFP()->setGPIPbit(0x10, 0); } // don't remove this modeline with intended formatting for vim:ts=4:sw=4: aranym-1.1.0/src/identify.cpp0000664000175000017500000000252713454637621014315 0ustar joyjoy /* * UAE - The Un*x Amiga Emulator * * Routines for labelling ARAnyM internals. * */ #include "identify.h" struct mem_labels int_labels[] = { { "Reset:SSP", 0x0000 }, { "EXECBASE", 0x0004 }, { "BUS ERROR", 0x0008 }, { "ADR ERROR", 0x000C }, { "ILLEG OPC", 0x0010 }, { "DIV BY 0", 0x0014 }, { "CHK", 0x0018 }, { "TRAPV", 0x001C }, { "PRIVIL VIO", 0x0020 }, { "TRACE", 0x0024 }, { "LINEA EMU", 0x0028 }, { "LINEF EMU", 0x002C }, { "INT Uninit", 0x003C }, { "INT Unjust", 0x0060 }, { "Lvl 1 Int", 0x0064 }, { "Lvl 2 Int", 0x0068 }, { "Lvl 3 Int", 0x006C }, { "Lvl 4 Int", 0x0070 }, { "Lvl 5 Int", 0x0074 }, { "Lvl 6 Int", 0x0078 }, { "NMI", 0x007C }, { 0, 0 } }; struct mem_labels trap_labels[] = { { "TRAP 01", 0x0080 }, { "TRAP 02", 0x0084 }, { "TRAP 03", 0x0088 }, { "TRAP 04", 0x008C }, { "TRAP 05", 0x0090 }, { "TRAP 06", 0x0094 }, { "TRAP 07", 0x0098 }, { "TRAP 08", 0x009C }, { "TRAP 09", 0x00A0 }, { "TRAP 10", 0x00A4 }, { "TRAP 11", 0x00A8 }, { "TRAP 12", 0x00AC }, { "TRAP 13", 0x00B0 }, { "TRAP 14", 0x00B4 }, { "TRAP 15", 0x00B8 }, { 0, 0 } }; /* struct mem_labels mem_labels[] = { { NULL, 0 } }; */ aranym-1.1.0/src/ide.cpp0000664000175000017500000000516313454637621013242 0ustar joyjoy/* * ide.cpp - Falcon IDE emulation code - wrapper for bochs' ata.cpp * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "parameters.h" #include "ide.h" #include "ata.h" #define BX_INSERTED true // copied from emu_bochs.h IDE::IDE(memptr addr, uint32 size) : BASE_IO(addr, size) { reset(); } void IDE::reset() { // convert aranym's "present" and "isCDROM" to bochs' "status" and "type" int channel = 0; for(int device=0; device<2; device++) { if (bx_options.atadevice[channel][device].present) { bx_options.atadevice[channel][device].status = BX_INSERTED; bx_options.atadevice[channel][device].type = (bx_options.atadevice[channel][device].isCDROM) ? IDE_CDROM : IDE_DISK; } else { bx_options.atadevice[channel][device].type = IDE_NONE; } } // init bochs emulation bx_hard_drive.init(); } uae_u8 IDE::handleRead(uaecptr addr) { return bx_hard_drive.read_handler(&bx_hard_drive, addr, 1); } void IDE::handleWrite(uaecptr addr, uae_u8 value) { bx_hard_drive.write_handler(&bx_hard_drive, addr, value, 1); } uae_u16 IDE::handleReadW(uaecptr addr) { if (addr == 0xf00002) { addr = 0xf00000; // according to Xavier $f00002 is mapped to the same IDE register as $f00000 } return bx_hard_drive.read_handler(&bx_hard_drive, addr, 2); } void IDE::handleWriteW(uaecptr addr, uae_u16 value) { if (addr == 0xf00002) { addr = 0xf00000; // according to Xavier $f00002 is mapped to the same IDE register as $f00000 } bx_hard_drive.write_handler(&bx_hard_drive, addr, value, 2); } uae_u32 IDE::handleReadL(uaecptr addr) { return bx_hard_drive.read_handler(&bx_hard_drive, addr, 4); } void IDE::handleWriteL(uaecptr addr, uae_u32 value) { bx_hard_drive.write_handler(&bx_hard_drive, addr, value, 4); } aranym-1.1.0/src/hostscreen_opengl.cpp0000664000175000017500000002761213454637621016225 0ustar joyjoy/* Hostscreen, OpenGL renderer (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef ENABLE_OPENGL #include "SDL_compat.h" #include "SDL_opengl_wrapper.h" #include "dyngl.h" #include "hostscreen.h" #include "hostscreen_opengl.h" #include "host_surface.h" #include "host_surface_opengl.h" #include "parameters.h" #include "version.h" #include "main.h" /* QuitEmulator */ #include "input.h" #define DEBUG 0 #include "debug.h" HostScreenOpenGL::HostScreenOpenGL(void) : HostScreen() { int res; char **path; res = -1; path = split_pathlist(bx_options.opengl.library); if (path != NULL) { for (int i = 0; res < 0 && path[i] != NULL; i++) res = dyngl_load(path[i]); free(path); } if (res<0) { res = dyngl_load(NULL); } if (res<0) { bug("Can not load OpenGL library: using software rendering mode"); bx_options.opengl.enabled = false; } else if (res == 0) { bug("Loaded default OpenGL library"); } #if SDL_VERSION_ATLEAST(2, 0, 0) window = NULL; window_id = 0; renderer = NULL; texture = NULL; #ifdef SDL_GUI gui_window = NULL; gui_window_id = 0; #endif #endif } HostScreenOpenGL::~HostScreenOpenGL() { } /*--- Public functions ---*/ void HostScreenOpenGL::setVideoMode(int width, int height, int bpp) { if (!bx_options.opengl.enabled) { HostScreen::setVideoMode(width, height, bpp); return; } int i, gl_bpp[4]={0,16,24,32}; if (bx_options.autozoom.fixedsize) { width = bx_options.autozoom.width; height = bx_options.autozoom.height; } if (width::iterator it; for (it=surfList.begin(); it!=surfList.end(); ++it) { (*it)->destroyTextureObject(); } #if SDL_VERSION_ATLEAST(2, 0, 0) int windowFlags = 0; if (!bx_options.autozoom.fixedsize) { windowFlags |= SDL_WINDOW_RESIZABLE; } if (bx_options.video.fullscreen) { windowFlags |= SDL_WINDOW_FULLSCREEN; } // set preferred window position const char *wpos = bx_options.video.window_pos; int x, y; x = y = SDL_WINDOWPOS_UNDEFINED; if (strlen(wpos) > 0) { if (strncasecmp(wpos, "center", strlen("center")) == 0) { x = y = SDL_WINDOWPOS_CENTERED; } else { sscanf(wpos, "%d,%d", &x, &y); } } SDL_DisplayMode mode, oldmode; if (window) SDL_GetWindowDisplayMode(window, &oldmode); else memset(&oldmode, 0, sizeof(oldmode)); mode.w = width; mode.h = height; if (window == NULL || width != oldmode.w || height != oldmode.h) { if (window == NULL) { window = SDL_CreateWindow(version_string, x, y, width, height, windowFlags); if (window) { SDL_GetWindowDisplayMode(window, &mode); } } if (window==NULL) { panicbug("Could not create window: %s", SDL_GetError()); QuitEmulator(); return; } window_id = SDL_GetWindowID(window); SDL_SetWindowSize(window, width, height); } /* SDL2FIXME: find appropriate renderer for bpp */ renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); /* Now setup video mode */ for (i=0;i<4;i++) { screen = SDL_CreateRGBSurface(0, width, height, gl_bpp[i], 0, 0, 0, 0); if (screen) { break; } } if (screen==NULL) { panicbug("Can not set OpenGL video mode: using software rendering mode"); bx_options.opengl.enabled = false; HostScreen::setVideoMode(width, height, bpp); return; } /* SDL2FIXME: find appropriate renderer for bpp */ renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); texture = SDL_CreateTextureFromSurface(renderer, screen); SetWMIcon(); #else int screenFlags = SDL_OPENGL; if (!bx_options.autozoom.fixedsize) { screenFlags |= SDL_RESIZABLE; } if (bx_options.video.fullscreen) { screenFlags |= SDL_FULLSCREEN; } // set preferred window position const char *wpos = bx_options.video.window_pos; if (strlen(wpos) > 0) { if (strncasecmp(wpos, "center", strlen("center")) == 0) { SDL_putenv((char*)"SDL_VIDEO_CENTERED=1"); } else { static char var[64]; snprintf(var, sizeof(var), "SDL_VIDEO_WINDOW_POS=%s", wpos); SDL_putenv(var); } } SetWMIcon(); PendingConfigureNotifyWidth = width; PendingConfigureNotifyHeight = height; /* Now setup video mode */ for (i=0;i<4;i++) { screen = SDL_SetVideoMode(width, height, gl_bpp[i], screenFlags); if (screen) { break; } } if (screen==NULL) { /* Try with default resolution */ for (i=0;i<4;i++) { screen = SDL_SetVideoMode(0, 0, gl_bpp[i], screenFlags); if (screen) { break; } } } if (screen==NULL) { panicbug("Can not set OpenGL video mode: using software rendering mode"); bx_options.opengl.enabled = false; HostScreen::setVideoMode(width, height, bpp); return; } #endif /* Now tell surfaces to recreate their texture */ for (it=surfList.begin(); it!=surfList.end(); ++it) { (*it)->createTextureObject(); } #if SDL_VERSION_ATLEAST(2, 0, 0) bx_options.video.fullscreen = (SDL_GetWindowFlags(window) & SDL_WINDOW_FULLSCREEN) == SDL_WINDOW_FULLSCREEN; #else bx_options.video.fullscreen = ((screen->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN); #endif new_width = screen->w; new_height = screen->h; resizeDirty(screen->w, screen->h); forceRefreshScreen(); } void HostScreenOpenGL::makeSnapshot(void) { if (!bx_options.opengl.enabled) { return HostScreen::makeSnapshot(); } HostSurface *sshot_hsurf = createSurface(getWidth(), getHeight(), 32); if (!sshot_hsurf) { return; } SDL_Surface *sdl_surf = sshot_hsurf->getSdlSurface(); if (sdl_surf) { #ifdef GL_EXT_bgra int i; Uint8 *dst = (Uint8 *) sdl_surf->pixels; for (i=0;ih;i++) { gl.ReadPixels(0,screen->h-i-1,screen->w,1,GL_BGRA_EXT, GL_UNSIGNED_INT_8_8_8_8_REV, dst); dst += sdl_surf->pitch; } writeSnapshot(sdl_surf); #else fprintf(stderr, "screenshot: Sorry, BGRA texture format not supported\n"); #endif } destroySurface(sshot_hsurf); } int HostScreenOpenGL::getBpp(void) { if (!bx_options.opengl.enabled) { return HostScreen::getBpp(); } int bpp; SDL_GL_GetAttribute(SDL_GL_BUFFER_SIZE, &bpp); return bpp; } void HostScreenOpenGL::drawSurfaceToScreen(HostSurface *hsurf, int *dst_x, int *dst_y) { if (!bx_options.opengl.enabled) { HostScreen::drawSurfaceToScreen(hsurf, dst_x, dst_y); return; } if (!hsurf) { return; } hsurf->update(); SDL_Surface *sdl_surf = hsurf->getSdlSurface(); int width = hsurf->getWidth(); int height = hsurf->getHeight(); SDL_Rect dst_rect = {0,0, Uint16(screen->w), Uint16(screen->h)}; if (screen->w > width) { dst_rect.x = (screen->w - width) >> 1; dst_rect.w = width; } if (screen->h > height) { dst_rect.y = (screen->h - height) >> 1; dst_rect.h = height; } /* Init texturing */ GLenum textureTarget = ((HostSurfaceOpenGL *)hsurf)->getTextureTarget(); gl.Enable(textureTarget); gl.BindTexture(textureTarget, ((HostSurfaceOpenGL *)hsurf)->getTextureObject()); GLenum filtering = (bx_options.opengl.filtered ? GL_LINEAR : GL_NEAREST); gl.TexParameteri(textureTarget, GL_TEXTURE_MAG_FILTER, filtering); gl.TexParameteri(textureTarget, GL_TEXTURE_MIN_FILTER, filtering); gl.TexParameteri(textureTarget, GL_TEXTURE_WRAP_S, GL_CLAMP); gl.TexParameteri(textureTarget, GL_TEXTURE_WRAP_T, GL_CLAMP); bool use_alpha = (hsurf->getParam(HostSurface::SURF_USE_ALPHA) != 0); if (use_alpha) { gl.TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); gl.Enable(GL_BLEND); gl.BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); } else { gl.TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); gl.Enable(GL_BLEND); gl.BlendFunc(GL_ONE, GL_ZERO); } /* Texture coordinates */ GLfloat txWidth = width, txHeight = height; if (textureTarget == GL_TEXTURE_2D) { txWidth /= (GLfloat) sdl_surf->w; txHeight /= (GLfloat) sdl_surf->h; } gl.MatrixMode(GL_TEXTURE); gl.PushMatrix(); gl.Scalef(txWidth,txHeight,1.0); GLfloat targetW = width; GLfloat targetH = height; if (bx_options.autozoom.enabled && (hsurf->getParam(HostSurface::SURF_DRAW) == HostSurface::DRAW_RESCALE)) { targetW = screen->w; targetH = screen->h; if (bx_options.autozoom.integercoefs && (screen->w>=width) && (screen->h>=height)) { int coefx = (int) (screen->w / width); int coefy = (int) (screen->h / height); targetW = (GLfloat) (width * coefx); targetH = (GLfloat) (height * coefy); } } GLfloat targetX = (screen->w-targetW)*0.5; GLfloat targetY = (screen->h-targetH)*0.5; gl.MatrixMode(GL_MODELVIEW); gl.PushMatrix(); gl.Translatef(targetX, targetY, 0.0); gl.Scalef(targetW, targetH, 1.0); if (use_alpha) { gl.Color4f(1.0,1.0,1.0,hsurf->getParam(HostSurface::SURF_ALPHA)/100.0); } gl.Begin(GL_QUADS); gl.TexCoord2f(0.0, 0.0); gl.Vertex2f(0.0, 0.0); gl.TexCoord2f(1.0, 0.0); gl.Vertex2f(1.0, 0.0); gl.TexCoord2f(1.0, 1.0); gl.Vertex2f(1.0, 1.0); gl.TexCoord2f(0.0, 1.0); gl.Vertex2f(0.0, 1.0); gl.End(); gl.MatrixMode(GL_TEXTURE); gl.PopMatrix(); gl.MatrixMode(GL_MODELVIEW); gl.PopMatrix(); gl.Disable(GL_BLEND); gl.Disable(textureTarget); /* GUI need to know where it is */ if (dst_x) { *dst_x = dst_rect.x; } if (dst_y) { *dst_y = dst_rect.y; } } void HostScreenOpenGL::initScreen(void) { if (!bx_options.opengl.enabled) { return; } gl.Viewport(0, 0, screen->w, screen->h); gl.MatrixMode(GL_PROJECTION); gl.LoadIdentity(); gl.Ortho(0.0, screen->w, screen->h, 0.0, -1.0, 1.0); gl.MatrixMode(GL_TEXTURE); gl.LoadIdentity(); gl.MatrixMode(GL_MODELVIEW); gl.LoadIdentity(); gl.Translatef(0.375, 0.375, 0.0); } void HostScreenOpenGL::clearScreen(void) { if (!bx_options.opengl.enabled) { HostScreen::clearScreen(); return; } gl.ClearColor(0.0,0.0,0.0,0.0); gl.Clear(GL_COLOR_BUFFER_BIT); } void HostScreenOpenGL::refreshScreen(void) { if (!bx_options.opengl.enabled) { HostScreen::refreshScreen(); return; } #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_GL_SwapWindow(window); #else SDL_GL_SwapBuffers(); #endif } HostSurface *HostScreenOpenGL::createSurface(int width, int height, int bpp) { if (!bx_options.opengl.enabled) { return HostScreen::createSurface(width, height, bpp); } HostSurfaceOpenGL *hsurf = new HostSurfaceOpenGL(width, height, bpp); if (hsurf) { surfList.push_back(hsurf); } return hsurf; } HostSurface *HostScreenOpenGL::createSurface(int width, int height, SDL_PixelFormat *pixelFormat) { if (!bx_options.opengl.enabled) { return HostScreen::createSurface(width, height, pixelFormat); } HostSurfaceOpenGL *hsurf = new HostSurfaceOpenGL(width, height, pixelFormat); if (hsurf) { surfList.push_back(hsurf); } return hsurf; } void HostScreenOpenGL::destroySurface(HostSurface *hsurf) { if (!bx_options.opengl.enabled) { HostScreen::destroySurface(hsurf); return; } if (hsurf) { surfList.remove((HostSurfaceOpenGL *) hsurf); } delete hsurf; } #endif aranym-1.1.0/src/hostscreen.cpp0000664000175000017500000007777413454637621014677 0ustar joyjoy/* Hostscreen, base class Software renderer (C) 2007-2008 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "newcpu.h" #include #include "SDL_compat.h" #include #include #include "dirty_rects.h" #include "host_surface.h" #include "logo.h" #include "hostscreen.h" #include "version.h" #include "parameters.h" /* bx_options */ #include "main.h" /* QuitEmulator */ #include "input.h" #ifdef NFVDI_SUPPORT # include "nf_objs.h" # include "nfvdi.h" #endif #ifdef SDL_GUI # include "gui-sdl/sdlgui.h" #endif #define DEBUG 0 #include "debug.h" void HostScreen::SetWMIcon(void) { #ifndef OS_darwin char path[1024]; getDataFilename("wm_icon.bmp", path, sizeof(path)); SDL_Surface *icon = mySDL_LoadBMP_RW(SDL_RWFromFile(path, "rb"), 1); if (icon != NULL) { SDL_SetColorKey(icon, SDL_SRCCOLORKEY|SDL_RLEACCEL, 0); #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_Surface *display_icon = SDL_ConvertSurfaceFormat(icon, SDL_GetWindowPixelFormat(window), 0); if (display_icon) { SDL_FreeSurface(icon); icon = display_icon; } SDL_SetWindowIcon(window, icon); #else SDL_Surface *display_icon = SDL_DisplayFormat(icon); if (display_icon) { SDL_FreeSurface(icon); icon = display_icon; } uint8 mask[] = {0x00, 0x3f, 0xfc, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xff, 0x80, 0x07, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xf0, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xf8, 0x3f, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xf8, 0x0f, 0xff, 0xff, 0xf8, 0x0f, 0xff, 0xff, 0xf0, 0x07, 0xff, 0xff, 0xe0, 0x01, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0x00, 0x00, 0x1f, 0xfc, 0x00}; /* uint8 masK[] = {0x01, 0x80, 0x07, 0xfc, 0x01, 0x80, 0x07, 0xfc, 0x00, 0x00, 0x3e, 0x03, 0x00, 0x00, 0x3e, 0x03, 0x00, 0x00, 0x3e, 0x03, 0x00, 0x7c, 0xf0, 0x03, 0x00, 0x7c, 0xf0, 0x03, 0xc0, 0x7c, 0xc0, 0x1c, 0xc0, 0x7c, 0xc0, 0x1c, 0x07, 0x83, 0xc0, 0x63, 0x07, 0x83, 0xc0, 0x63, 0x07, 0x9e, 0x31, 0x9c, 0x07, 0x9e, 0x31, 0x9c, 0x07, 0x9e, 0x31, 0x9c, 0x00, 0x7c, 0xfe, 0x00, 0x00, 0x7c, 0xfe, 0x00, 0x07, 0xe3, 0x31, 0xe0, 0x07, 0xe3, 0x31, 0xe0, 0x3e, 0x1f, 0xff, 0xfc, 0x3e, 0x1f, 0xff, 0xfc, 0x38, 0x03, 0x3e, 0x00, 0xf8, 0x03, 0x3e, 0x00, 0xf8, 0x03, 0x3e, 0x00, 0xc0, 0x1c, 0xf1, 0xff, 0xc0, 0x1c, 0xf1, 0xff, 0xc0, 0x60, 0xf1, 0xe0, 0xc0, 0x60, 0xf1, 0xe0, 0xc1, 0x9c, 0x31, 0x9f, 0xc1, 0x9c, 0x31, 0x9f, 0xc1, 0x60, 0x31, 0x9f, 0x3e, 0x60, 0x01, 0x9c, 0x3e, 0x60, 0x01, 0x9c}; */ SDL_WM_SetIcon(icon, mask); #endif SDL_FreeSurface(icon); } else { infoprint("WM Icon not found at %s", path); } #endif } HostScreen::HostScreen(void) : DirtyRects(), logo(NULL), clear_screen(true), force_refresh(true), do_screenshot(false), refreshCounter(0), grabbedMouse(SDL_FALSE), hiddenMouse(SDL_FALSE), canGrabMouseAgain(false), capslockState(false), ignoreMouseMotionEvent(false), atari_mouse_xpos(-1), atari_mouse_ypos(-1), recording(false), screen(NULL), new_width(0), new_height(0), PendingConfigureNotifyWidth(-1), PendingConfigureNotifyHeight(-1), snapCounter(0) { #if SDL_VERSION_ATLEAST(2, 0, 0) window = NULL; window_id = 0; renderer = NULL; texture = NULL; #ifdef SDL_GUI gui_window = NULL; gui_window_id = 0; #endif #endif } HostScreen::~HostScreen(void) { if (logo) { delete logo; } } void HostScreen::reset(void) { StopRecording(); lastVidelWidth = lastVidelHeight = lastVidelBpp = -1; numScreen = SCREEN_BOOT; setVidelRendering(true); DisableOpenGLVdi(); setVideoMode(MIN_WIDTH,MIN_HEIGHT,8); #if SDL_VERSION_ATLEAST(2, 0, 0) // If double mouse cursor appear in FB Mode do sthg. similar to below code #else const SDL_VideoInfo *videoInfo = SDL_GetVideoInfo(); if (!videoInfo->wm_available) { hideMouse(SDL_TRUE); SDL_SetWindowGrab(window, SDL_TRUE); grabbedMouse = SDL_TRUE; canGrabMouseAgain = true; } #endif /* Set window caption */ std::string buf; #ifdef SDL_GUI char key[HOTKEYS_STRING_SIZE]; keysymToString(key, &bx_options.hotkeys.setup); buf = std::string(version_string) + std::string(" (Press the [") + std::string(key) + std::string("] key for SETUP)"); #else buf = std::string(version_string); #endif /* SDL_GUI */ SetCaption(buf.c_str()); } void HostScreen::SetCaption(const char *caption) { #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_SetWindowTitle(window, caption); /* SDL2FIXME: have not found a way yet to set the window class */ #else SDL_WM_SetCaption(caption, "ARAnyM"); #endif } int HostScreen::getWidth(void) { return screen->w; } int HostScreen::getHeight(void) { return screen->h; } int HostScreen::getBpp(void) { return screen->format->BitsPerPixel; } void HostScreen::doScreenshot(void) { do_screenshot = true; } static int get_screenshot_counter(void) { char dummy[5]; int i, num; DIR *workingdir; struct dirent *file; int nScreenShots = 0; workingdir = opendir(bx_options.snapshot_dir); if (workingdir == NULL) { HostFilesys::makeDir(bx_options.snapshot_dir); workingdir = opendir(bx_options.snapshot_dir); } if (workingdir != NULL) { file = readdir(workingdir); while (file != NULL) { if (strncmp("snap", file->d_name, 4) == 0 ) { /* copy next 4 numbers */ for (i = 0; i < 4; i++) { if (file->d_name[4+i] >= '0' && file->d_name[4+i] <= '9') dummy[i] = file->d_name[4+i]; else break; } dummy[i] = '\0'; /* null terminate */ num = atoi(dummy); if (num >= nScreenShots) nScreenShots = num + 1; } /* next file.. */ file = readdir(workingdir); } closedir(workingdir); } return nScreenShots; } void HostScreen::writeSnapshot(SDL_Surface *surf) { char filename[15]; char path[PATH_MAX]; if (snapCounter == 0) snapCounter = get_screenshot_counter(); sprintf(filename, "snap%03d.bmp", snapCounter++ ); safe_strncpy(path, bx_options.snapshot_dir, sizeof(path)); addFilename(path, filename, sizeof(path)); if (SDL_SaveBMP(surf, path) < 0) { #ifdef __CYGWIN__ bug("%s: %s", SDL_GetError(), win32_errstring(GetLastError())); #else bug("%s: %s", SDL_GetError(), strerror(errno)); #endif } else { bug("saved screenshot %s", path); } } void HostScreen::makeSnapshot(void) { writeSnapshot(screen); } void HostScreen::toggleFullScreen(void) { bx_options.video.fullscreen = !bx_options.video.fullscreen; setVideoMode(getWidth(), getHeight(), getBpp()); } void HostScreen::setVideoMode(int width, int height, int bpp) { if (bx_options.autozoom.fixedsize) { width = bx_options.autozoom.width; height = bx_options.autozoom.height; } if (width 0) { if (strncasecmp(wpos, "center", strlen("center")) == 0) { x = y = SDL_WINDOWPOS_CENTERED; } else { sscanf(wpos, "%d,%d", &x, &y); } } SDL_DisplayMode mode, oldmode; if (window) SDL_GetWindowDisplayMode(window, &oldmode); else memset(&oldmode, 0, sizeof(oldmode)); mode.w = width; mode.h = height; mode.refresh_rate = 0; mode.driverdata = 0; if (bpp <= 8) mode.format = SDL_PIXELFORMAT_INDEX8; else if (bpp <= 16) mode.format = SDL_PIXELFORMAT_RGB565; else if (bpp <= 24) mode.format = SDL_BITSPERPIXEL(oldmode.format) >= 24 ? oldmode.format : (Uint32)SDL_PIXELFORMAT_RGB24; else mode.format = SDL_BITSPERPIXEL(oldmode.format) >= 24 ? oldmode.format : (Uint32)SDL_PIXELFORMAT_RGBX8888; if (window == NULL || width != oldmode.w || height != oldmode.h || mode.format != oldmode.format) { #ifdef USE_FIXED_CONSOLE_FBVIDEOMODE // Raspberry doesn't allow switching video mode. Keep current mode #endif if (renderer) { SDL_DestroyRenderer(renderer); renderer = NULL; } if (texture) { SDL_DestroyTexture(texture); texture = NULL; } if (window == NULL) { window = SDL_CreateWindow(version_string, x, y, width, height, windowFlags); if (window) { SDL_GetWindowDisplayMode(window, &oldmode); if (bpp >= 24 && (int)SDL_BITSPERPIXEL(oldmode.format) >= bpp) mode.format = oldmode.format; } } if (window==NULL) { panicbug("Could not create window: %s", SDL_GetError()); QuitEmulator(); return; } window_id = SDL_GetWindowID(window); if (mode.format != oldmode.format || width != oldmode.w || height != oldmode.h) { if (SDL_SetWindowDisplayMode(window, &mode) < 0) { mode.format = oldmode.format; SDL_SetWindowDisplayMode(window, &mode); } } SDL_SetWindowSize(window, width, height); /* SDL2FIXME: find appropriate renderer for bpp */ // renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); } screen = SDL_GetWindowSurface(window); // texture = SDL_CreateTextureFromSurface(renderer, screen); #else #ifdef __ANDROID__ int screenFlags = SDL_SWSURFACE|SDL_HWPALETTE; #else int screenFlags = SDL_HWSURFACE|SDL_HWPALETTE; #endif if (!bx_options.autozoom.fixedsize) { screenFlags |= SDL_RESIZABLE; } if (bx_options.video.fullscreen) { screenFlags |= SDL_FULLSCREEN; } // set preferred window position const char *wpos = bx_options.video.window_pos; if (strlen(wpos) > 0) { if (strncasecmp(wpos, "center", strlen("center")) == 0) { SDL_putenv((char*)"SDL_VIDEO_CENTERED=1"); } else { static char var[64]; snprintf(var, sizeof(var), "SDL_VIDEO_WINDOW_POS=%s", wpos); SDL_putenv(var); } } #ifdef USE_FIXED_CONSOLE_FBVIDEOMODE // Raspberry doesn't allow switching video mode. Keep current mode const SDL_VideoInfo *videoInfo = SDL_GetVideoInfo(); if (!videoInfo->wm_available) { width = videoInfo->current_w; height = videoInfo->current_h; bpp = videoInfo->vfmt->BitsPerPixel; } #endif { SDL_Rect **modes; modes = SDL_ListModes(NULL, screenFlags); if (modes != (SDL_Rect **)-1 && modes != (SDL_Rect **)0) { int i; for (i = 0; modes[i] != NULL; i++) { } if (i == 1) { width = modes[0]->w; height = modes[0]->h; bug("only one video mode, using %dx%d", width, height); } } } screen = SDL_SetVideoMode(width, height, bpp, screenFlags); if (screen==NULL) { /* Try with default bpp */ screen = SDL_SetVideoMode(width, height, 0, screenFlags); } if (screen==NULL) { /* Try with default resolution */ screen = SDL_SetVideoMode(0, 0, 0, screenFlags); } #endif if (screen==NULL) { panicbug("Can not set video mode"); QuitEmulator(); return; } SetWMIcon(); SDL_SetClipRect(screen, NULL); #if SDL_VERSION_ATLEAST(2, 0, 0) bx_options.video.fullscreen = (SDL_GetWindowFlags(window) & SDL_WINDOW_FULLSCREEN) == SDL_WINDOW_FULLSCREEN; #else bx_options.video.fullscreen = ((screen->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN); #endif new_width = screen->w; new_height = screen->h; resizeDirty(screen->w, screen->h); forceRefreshScreen(); } void HostScreen::resizeWindow(int new_width, int new_height) { if (PendingConfigureNotifyWidth >= 0 && PendingConfigureNotifyHeight >= 0) { if (PendingConfigureNotifyWidth == new_width && PendingConfigureNotifyHeight == new_height) { /* * Event is from setVideoMode, so ignore. */ PendingConfigureNotifyWidth = -1; PendingConfigureNotifyHeight = -1; } return; } this->new_width = new_width; this->new_height = new_height; } void HostScreen::EnableOpenGLVdi(void) { OpenGLVdi = SDL_TRUE; } void HostScreen::DisableOpenGLVdi(void) { OpenGLVdi = SDL_FALSE; } /* * this is called in VBL, i.e. 50 times per second */ void HostScreen::refresh(void) { if (++refreshCounter < bx_options.video.refresh) { return; } refreshCounter = 0; if (force_refresh) { clear_screen = true; forceRefreshLogo(); forceRefreshVidel(); forceRefreshNfvdi(); if (screen) { setDirtyRect(0,0, screen->w, screen->h); } force_refresh = false; } initScreen(); if (clear_screen || bx_options.opengl.enabled) { clearScreen(); clear_screen = false; } /* Render current screen */ switch(numScreen) { case SCREEN_BOOT: /* Wait till GUI or reset is done */ break; case SCREEN_LOGO: refreshLogo(); alphaBlendLogo(true); checkSwitchToVidel(); break; case SCREEN_VIDEL: refreshVidel(); alphaBlendLogo(false); checkSwitchVidelNfvdi(); break; case SCREEN_NFVDI: refreshNfvdi(); checkSwitchVidelNfvdi(); break; } #ifdef SDL_GUI if (!SDLGui_isClosed() #if SDL_VERSION_ATLEAST(2, 0, 0) && window == gui_window #endif ) { refreshGui(); } #endif if (do_screenshot) { makeSnapshot(); do_screenshot = false; } refreshScreen(); if ((new_width!=screen->w) || (new_height!=screen->h)) { setVideoMode(new_width, new_height, getBpp()); } } void HostScreen::setVidelRendering(bool videlRender) { renderVidelSurface = videlRender; } void HostScreen::initScreen(void) { } void HostScreen::clearScreen(void) { SDL_FillRect(screen, NULL, 0); } void HostScreen::refreshVidel(void) { getVIDEL()->forceRefresh(); refreshSurface(getVIDEL()->getSurface()); } void HostScreen::forceRefreshVidel(void) { if (!getVIDEL()) { return; } getVIDEL()->forceRefresh(); } void HostScreen::checkSwitchVidelNfvdi(void) { numScreen = renderVidelSurface ? SCREEN_VIDEL : SCREEN_NFVDI; } void HostScreen::refreshLogo(void) { if (!logo) { char path[1024]; getDataFilename(LOGO_FILENAME, path, sizeof(path)); logo = new Logo(path); if (!logo) { return; } } HostSurface *logo_hsurf = logo->getSurface(); if (!logo_hsurf) { return; } refreshSurface(logo_hsurf); } void HostScreen::forceRefreshLogo(void) { if (!logo) { return; } HostSurface *logo_hsurf = logo->getSurface(); if (!logo_hsurf) { return; } logo_hsurf->setDirtyRect(0,0, logo_hsurf->getWidth(), logo_hsurf->getHeight()); } void HostScreen::alphaBlendLogo(bool init) { if (logo) logo->alphaBlend(init); } void HostScreen::checkSwitchToVidel(void) { /* No logo ? */ if (!logo || !logo->getSurface()) { numScreen = SCREEN_VIDEL; return; } /* Wait for Videl surface to be ready */ HostSurface *videl_hsurf = getVIDEL()->getSurface(); if (!videl_hsurf) { return; } if ((videl_hsurf->getWidth()>64) && (videl_hsurf->getHeight()>64)) { #if 0 /* set to 1 for debugging to make logo visible, if machine is too fast */ if (numScreen == SCREEN_LOGO && !bx_options.opengl.enabled) { SDL_Flip(screen); usleep(1000000); } #endif numScreen = SCREEN_VIDEL; } } void HostScreen::forceRefreshNfvdi(void) { #ifdef NFVDI_SUPPORT /* Force nfvdi surface refresh */ NF_Base* fvdi = NFGetDriver("fVDI"); if (!fvdi) { return; } HostSurface *nfvdi_hsurf = ((VdiDriver *) fvdi)->getSurface(); if (!nfvdi_hsurf) { return; } nfvdi_hsurf->setDirtyRect(0,0, nfvdi_hsurf->getWidth(), nfvdi_hsurf->getHeight()); #endif } void HostScreen::refreshNfvdi(void) { #ifdef NFVDI_SUPPORT NF_Base* fvdi = NFGetDriver("fVDI"); if (!fvdi) { return; } refreshSurface(((VdiDriver *) fvdi)->getSurface()); #endif } void HostScreen::refreshGui(void) { #ifdef SDL_GUI int gui_x, gui_y; drawSurfaceToScreen(SDLGui_getSurface(), &gui_x, &gui_y); SDLGui_setGuiPos(gui_x, gui_y); #endif /* SDL_GUI */ } void HostScreen::WarpMouse(int x, int y) { #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_WarpMouseInWindow(window, x, y); #else SDL_WarpMouse(x, y); #endif } SDL_bool HostScreen::hideMouse(SDL_bool hide) { SDL_bool current = hiddenMouse; if (hide) { SDL_SetCursor(empty_cursor); #if defined(SDL_VIDEO_DRIVER_X11) if (bx_options.startup.grabMouseAllowed && SDL_IsVideoDriver("x11")) SDL_ShowCursor(SDL_DISABLE); #endif #if defined(SDL_VIDEO_DRIVER_QUARTZ) if (bx_options.startup.grabMouseAllowed && SDL_IsVideoDriver("Quartz")) SDL_ShowCursor(SDL_DISABLE); #endif hiddenMouse = SDL_TRUE; } else if (!hide) { SDL_SetCursor(aranym_cursor); #if defined(SDL_VIDEO_DRIVER_X11) if (bx_options.startup.grabMouseAllowed && SDL_IsVideoDriver("x11")) SDL_ShowCursor(SDL_ENABLE); #endif #if defined(SDL_VIDEO_DRIVER_QUARTZ) if (bx_options.startup.grabMouseAllowed && SDL_IsVideoDriver("Quartz")) SDL_ShowCursor(SDL_ENABLE); #endif hiddenMouse = SDL_FALSE; } return current; } SDL_bool HostScreen::grabMouse(SDL_bool grab) { SDL_bool current = SDL_GetWindowGrab(window); if (grab && !current) { SDL_SetWindowGrab(window, SDL_TRUE); grabbedMouse = SDL_TRUE; canGrabMouseAgain = true; hideMouse(SDL_TRUE); if (bx_options.startup.grabMouseAllowed) IgnoreMouseMotionEvent(true); } else if (!grab && current) { SDL_SetWindowGrab(window, SDL_FALSE); grabbedMouse = SDL_FALSE; hideMouse(SDL_FALSE); } // show hint in the window caption if (SDL_GetWindowGrab(window)) { char ungrab_key[HOTKEYS_STRING_SIZE]; std::string buf; keysymToString(ungrab_key, &bx_options.hotkeys.ungrab); #ifdef SDL_GUI char setup_key[HOTKEYS_STRING_SIZE]; keysymToString(setup_key, &bx_options.hotkeys.setup); buf = "ARAnyM: press [" + std::string(setup_key) + std::string("] for SETUP, [") + std::string(ungrab_key) + std::string("] or middle mouse button to release input grab"); #else buf = std::string("ARAnyM: press [") + std::string(ungrab_key) + std::string("] or middle mouse button to release input grab"); #endif SetCaption(buf.c_str()); } else { SetCaption("ARAnyM: no input grab"); } return current; } void HostScreen::grabTheMouse() { #if DEBUG int x,y; SDL_GetMouseState(&x, &y); D(bug("grabTheMouse: mouse grab at window position [%d,%d]", x, y)); #endif hideMouse(SDL_TRUE); grabMouse(SDL_TRUE); RestoreAtariMouseCursorPosition(); } void HostScreen::releaseTheMouse() { #if SDL_VERSION_ATLEAST(2, 0, 0) // ToDo: If double mouse cursor appear in FB Mode do sthg. similar to below #else const SDL_VideoInfo *videoInfo = SDL_GetVideoInfo(); if (!videoInfo->wm_available && hiddenMouse) return; #endif D(bug("Releasing the mouse grab")); grabMouse(SDL_FALSE); // release mouse hideMouse(SDL_FALSE); // show it ARADATA *ara = getARADATA(); if (ara && ara->isAtariMouseDriver()) { RememberAtariMouseCursorPosition(); WarpMouse(atari_mouse_xpos, atari_mouse_ypos); } } // remember the current Atari mouse cursor position void HostScreen::RememberAtariMouseCursorPosition() { ARADATA *ara = getARADATA(); if (ara && ara->isAtariMouseDriver()) { atari_mouse_xpos = getARADATA()->getAtariMouseX(); atari_mouse_ypos = getARADATA()->getAtariMouseY(); D(bug("Atari mouse cursor pointer left at [%d, %d]", atari_mouse_xpos, atari_mouse_ypos)); } } // reposition the Atari mouse cursor to match the host mouse cursor position void HostScreen::RestoreAtariMouseCursorPosition() { int xpos, ypos; SDL_GetMouseState(&xpos, &ypos); if (atari_mouse_xpos >= 0 && atari_mouse_ypos >= 0) { D(bug("Restoring mouse cursor pointer to [%d, %d]", xpos, ypos)); // getARADATA()->setAtariMousePosition(xpos, ypos); int delta_x = xpos - atari_mouse_xpos; int delta_y = ypos - atari_mouse_ypos; if (delta_x || delta_y) { D(bug("RestoreAtariMouse: %d,%d atari %d,%d delta %d,%d\n", xpos, ypos, atari_mouse_xpos, atari_mouse_ypos, delta_x, delta_y)); getIKBD()->SendMouseMotion(delta_x, delta_y, 0, true); } } } bool HostScreen::HasInputFocus() { #if SDL_VERSION_ATLEAST(2, 0, 0) return (SDL_GetWindowFlags(window) & SDL_WINDOW_INPUT_FOCUS) != 0; #else return (SDL_GetAppState() & SDL_APPINPUTFOCUS) != 0; #endif } bool HostScreen::HasMouseFocus() { #if SDL_VERSION_ATLEAST(2, 0, 0) Uint32 flags = SDL_GetWindowFlags(window); return (flags & (SDL_WINDOW_MOUSE_FOCUS|SDL_WINDOW_SHOWN)) == (SDL_WINDOW_MOUSE_FOCUS|SDL_WINDOW_SHOWN); #else Uint8 state = SDL_GetAppState(); return (state & (SDL_APPMOUSEFOCUS|SDL_APPACTIVE)) == (SDL_APPMOUSEFOCUS|SDL_APPACTIVE); #endif } void HostScreen::refreshSurface(HostSurface *hsurf) { if (!hsurf) { return; } SDL_Surface *sdl_surf = hsurf->getSdlSurface(); if (!sdl_surf) { return; } int width = hsurf->getWidth(); int height = hsurf->getHeight(); int w = (width < 320) ? 320 : width; int h = (height < 200) ? 200 : height; int bpp = hsurf->getBpp(); if ((w!=lastVidelWidth) || (h!=lastVidelHeight) || (bpp!=lastVidelBpp)) { setVideoMode(w, h, bpp); lastVidelWidth = w; lastVidelHeight = h; lastVidelBpp = bpp; } /* Set screen palette from surface if needed */ if (!bx_options.opengl.enabled && (bpp==8) && (getBpp() == 8)) { #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_Color colors[256]; for (int i=0; i<256; i++) { colors[i].r = sdl_surf->format->palette->colors[i].r; colors[i].g = sdl_surf->format->palette->colors[i].g; colors[i].b = sdl_surf->format->palette->colors[i].b; colors[i].a = WINDOW_ALPHA; } SDL_SetPaletteColors(screen->format->palette, colors, 0, 256); #else SDL_Color palette[256]; for (int i=0; i<256; i++) { palette[i].r = sdl_surf->format->palette->colors[i].r; palette[i].g = sdl_surf->format->palette->colors[i].g; palette[i].b = sdl_surf->format->palette->colors[i].b; } SDL_SetPalette(screen, SDL_LOGPAL|SDL_PHYSPAL, palette, 0,256); #endif } drawSurfaceToScreen(hsurf); } void HostScreen::drawSurfaceToScreen(HostSurface *hsurf, int *dst_x, int *dst_y) { if (!hsurf) { return; } hsurf->update(); SDL_Surface *sdl_surf = hsurf->getSdlSurface(); if (!sdl_surf) { return; } int width = hsurf->getWidth(); int height = hsurf->getHeight(); SDL_Rect src_rect = {0,0, Uint16(width), Uint16(height)}; SDL_Rect dst_rect = {0,0, Uint16(screen->w), Uint16(screen->h)}; if (screen->w > width) { dst_rect.x = (screen->w - width) >> 1; dst_rect.w = width; } else { src_rect.w = screen->w; } if (screen->h > height) { dst_rect.y = (screen->h - height) >> 1; dst_rect.h = height; } else { src_rect.h = screen->h; } Uint8 *dirtyRects = hsurf->getDirtyRects(); if (!dirtyRects) { SDL_BlitSurface(sdl_surf, &src_rect, screen, &dst_rect); setDirtyRect(dst_rect.x,dst_rect.y,dst_rect.w,dst_rect.h); } else if(hsurf->hasDirtyRect()) { if(bx_options.video.single_blit_composing) { // redraw only using one SDL Blit SDL_Rect src, dst; dst.x = dst_rect.x + hsurf->getMinDirtX(); dst.y = dst_rect.y + hsurf->getMinDirtY(); dst.w = dst_rect.w + hsurf->getMaxDirtX()-hsurf->getMinDirtX()+1; dst.h = dst_rect.h + hsurf->getMaxDirtY()-hsurf->getMinDirtY()+1; src.x = src_rect.x + hsurf->getMinDirtX(); src.y = src_rect.y + hsurf->getMinDirtY(); src.w = src_rect.w + hsurf->getMaxDirtX()-hsurf->getMinDirtX()+1; src.h = src_rect.h + hsurf->getMaxDirtY()-hsurf->getMinDirtX()+1; SDL_BlitSurface(sdl_surf, &src, screen, &dst); setDirtyRect(dst.x,dst.y,dst.w,dst.h); } else { // Chunky redraw: blit multiple 16x16 rectangles int dirty_w = hsurf->getDirtyWidth(); int dirty_h = hsurf->getDirtyHeight(); for (int y=0; y16) { num_lines=16; } for (int x=0; x16) { num_cols=16; } if (dirtyRects[y * dirty_w + x]) { /* Dirty */ if (block_w==0) { /* First dirty block, mark x pos */ block_x = x; } block_w += num_cols; } else { /* Non dirty, force update of previously merged blocks */ block_update = 1; } /* Update only if we have a dirty block */ if (block_update && (block_w>0)) { SDL_Rect src, dst; src.x = src_rect.x + (block_x<<4); src.y = src_rect.y + (y<<4); src.w = block_w; src.h = num_lines; dst.x = dst_rect.x + (block_x<<4); dst.y = dst_rect.y + (y<<4); dst.w = block_w; dst.h = num_lines; SDL_BlitSurface(sdl_surf, &src, screen, &dst); setDirtyRect(dst.x,dst.y,dst.w,dst.h); block_w = 0; } } } } hsurf->clearDirtyRects(); } /* GUI need to know where it is */ if (dst_x) { *dst_x = dst_rect.x; } if (dst_y) { *dst_y = dst_rect.y; } } void HostScreen::refreshScreen(void) { #if !SDL_VERSION_ATLEAST(2, 0, 0) if ((screen->flags & SDL_DOUBLEBUF)==SDL_DOUBLEBUF) { SDL_Flip(screen); return; } #endif if (!dirtyMarker) { return; } if(!hasDirtyRect()) return; if(bx_options.video.single_blit_refresh) { /* Only update dirty rect with a single update*/ SDL_Rect update_rect; update_rect.x=minDirtX; update_rect.y=minDirtY; update_rect.w=maxDirtX-minDirtX+1; update_rect.h=maxDirtY-minDirtY+1; #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_UpdateWindowSurfaceRects(window, &update_rect, 1); if (renderer) SDL_RenderPresent(renderer); #else SDL_UpdateRects(screen, 1, &update_rect); #endif } else { // Chunky redraw: blit multiple 16x16 rectangles /* Only update dirtied rects */ std::vector update_rects(dirtyW*dirtyH); int i = 0; for (int y=0; yh - (y<<4) < (1<<4)) { maxh = screen->h - (y<<4); } for (int x=0; xw - (x<<4) < (1<<4)) { maxw = screen->w - (x<<4); } if (dirtyMarker[y * dirtyW + x]) { /* Dirty */ if (block_w==0) { /* First dirty block, mark x pos */ block_x = x; } block_w += maxw; } else { /* Non dirty, force update of previously merged blocks */ block_update = 1; } /* Update only if we have a dirty block */ if (block_update && (block_w>0)) { update_rects[i].x = block_x<<4; update_rects[i].y = y<<4; update_rects[i].w = block_w; update_rects[i].h = maxh; i++; block_w = 0; } } } #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_UpdateWindowSurfaceRects(window, &update_rects[0], i); if (renderer) SDL_RenderPresent(renderer); #else SDL_UpdateRects(screen, i, &update_rects[0]); #endif } clearDirtyRects(); } void HostScreen::refreshScreenFromSurface(SDL_Surface *surface) { #if SDL_VERSION_ATLEAST(2, 0, 0) // SDL_UpdateTexture(texture, NULL, surface->pixels, surface->pitch); // SDL_RenderClear(renderer); // SDL_RenderCopy(renderer, texture, NULL, NULL); // SDL_RenderPresent(renderer); (void) surface; SDL_UpdateWindowSurface(window); if (renderer) SDL_RenderPresent(renderer); #else SDL_Rect update_rect; update_rect.x=minDirtX; update_rect.y=minDirtY; update_rect.w=maxDirtX-minDirtX+1; update_rect.h=maxDirtY-minDirtY+1; SDL_UpdateRects(surface, 1, &update_rect); #endif } void HostScreen::forceRefreshScreen(void) { force_refresh = true; } void HostScreen::bootDone(void) { numScreen = SCREEN_LOGO; } HostSurface *HostScreen::createSurface(int width, int height, int bpp) { return new HostSurface(width, height, bpp); } HostSurface *HostScreen::createSurface(int width, int height, SDL_PixelFormat *pixelFormat) { return new HostSurface(width, height, pixelFormat); } void HostScreen::destroySurface(HostSurface *hsurf) { delete hsurf; } /** * Performs conversion from the TOS's bitplane word order (big endian) data * into the native chunky color index. */ void HostScreen::bitplaneToChunky( uint16 *atariBitplaneData, uint16 bpp, uint8 colorValues[16], int horiz_shift) { uint32 a=0, b=0, c=0, d=0, x; uint32 *source = (uint32 *) atariBitplaneData; uint16 scrolled[8]; /* Obviously the different cases can be broken out in various * ways to lessen the amount of work needed for <8 bit modes. * It's doubtful if the usage of those modes warrants it, though. * The branches below should be ~100% correctly predicted and * thus be more or less for free. * Getting the palette values inline does not seem to help * enough to worry about. The palette lookup is much slower than * this code, though, so it would be nice to do something about it. */ if (horiz_shift) { /* Shift the source to deal with horizontal scrolling */ int i; for (i=0; i>16); } source = (uint32 *) scrolled; } switch(bpp) { case 8: d = *source++; c = *source++; b = *source++; a = *source++; break; case 4: d = *source++; c = *source++; break; case 2: d = *source++; break; default: { uint16 *source16 = (uint16 *) source; #if SDL_BYTEORDER == SDL_BIG_ENDIAN d = (*source16)<<16; #else d = *source16; #endif } break; } x = a; a = (a & 0xf0f0f0f0) | ((c & 0xf0f0f0f0) >> 4); c = ((x & 0x0f0f0f0f) << 4) | (c & 0x0f0f0f0f); x = b; b = (b & 0xf0f0f0f0) | ((d & 0xf0f0f0f0) >> 4); d = ((x & 0x0f0f0f0f) << 4) | (d & 0x0f0f0f0f); x = a; a = (a & 0xcccccccc) | ((b & 0xcccccccc) >> 2); b = ((x & 0x33333333) << 2) | (b & 0x33333333); x = c; c = (c & 0xcccccccc) | ((d & 0xcccccccc) >> 2); d = ((x & 0x33333333) << 2) | (d & 0x33333333); #if SDL_BYTEORDER == SDL_BIG_ENDIAN a = (a & 0x5555aaaa) | ((a & 0x00005555) << 17) | ((a & 0xaaaa0000) >> 17); b = (b & 0x5555aaaa) | ((b & 0x00005555) << 17) | ((b & 0xaaaa0000) >> 17); c = (c & 0x5555aaaa) | ((c & 0x00005555) << 17) | ((c & 0xaaaa0000) >> 17); d = (d & 0x5555aaaa) | ((d & 0x00005555) << 17) | ((d & 0xaaaa0000) >> 17); colorValues[ 8] = a; a >>= 8; colorValues[ 0] = a; a >>= 8; colorValues[ 9] = a; a >>= 8; colorValues[ 1] = a; colorValues[10] = b; b >>= 8; colorValues[ 2] = b; b >>= 8; colorValues[11] = b; b >>= 8; colorValues[ 3] = b; colorValues[12] = c; c >>= 8; colorValues[ 4] = c; c >>= 8; colorValues[13] = c; c >>= 8; colorValues[ 5] = c; colorValues[14] = d; d >>= 8; colorValues[ 6] = d; d >>= 8; colorValues[15] = d; d >>= 8; colorValues[ 7] = d; #else a = (a & 0xaaaa5555) | ((a & 0x0000aaaa) << 15) | ((a & 0x55550000) >> 15); b = (b & 0xaaaa5555) | ((b & 0x0000aaaa) << 15) | ((b & 0x55550000) >> 15); c = (c & 0xaaaa5555) | ((c & 0x0000aaaa) << 15) | ((c & 0x55550000) >> 15); d = (d & 0xaaaa5555) | ((d & 0x0000aaaa) << 15) | ((d & 0x55550000) >> 15); colorValues[ 1] = a; a >>= 8; colorValues[ 9] = a; a >>= 8; colorValues[ 0] = a; a >>= 8; colorValues[ 8] = a; colorValues[ 3] = b; b >>= 8; colorValues[11] = b; b >>= 8; colorValues[ 2] = b; b >>= 8; colorValues[10] = b; colorValues[ 5] = c; c >>= 8; colorValues[13] = c; c >>= 8; colorValues[ 4] = c; c >>= 8; colorValues[12] = c; colorValues[ 7] = d; d >>= 8; colorValues[15] = d; d >>= 8; colorValues[ 6] = d; d >>= 8; colorValues[14] = d; #endif } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/host_surface_opengl.cpp0000664000175000017500000002135713454637621016535 0ustar joyjoy/* Rendering surface with OpenGL texture (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef ENABLE_OPENGL #include "SDL_compat.h" #include "SDL_opengl_wrapper.h" #include "dyngl.h" #include "dirty_rects.h" #include "host_surface.h" #include "host_surface_opengl.h" #define DEBUG 0 #include "debug.h" /*--- Defines ---*/ /*--- Constructor/destructor ---*/ HostSurfaceOpenGL::HostSurfaceOpenGL(int width, int height, int bpp) : HostSurface(width, height, bpp) { createTexture(); } HostSurfaceOpenGL::HostSurfaceOpenGL(int width, int height, SDL_PixelFormat *pixelFormat) : HostSurface(width, height, pixelFormat) { createTexture(); } HostSurfaceOpenGL::~HostSurfaceOpenGL(void) { destroyTextureObject(); } /*--- Private functions ---*/ void HostSurfaceOpenGL::createTexture(void) { can_palette = false; use_palette = false; resize(getWidth(), getHeight(), true); createTextureObject(); } void HostSurfaceOpenGL::calcGlDimensions(int *width, int *height) { int w = *width, h = *height; /* Minimal size */ if (w<64) { w = 64; } if (h<64) { h = 64; } /* Align on 16 pixels boundary */ if (w & 15) { w = (w | 15)+1; } if (h & 15) { h = (h | 15)+1; } const GLubyte *extensions = gl.GetString(GL_EXTENSIONS); if (gl_HasExtension("GL_ARB_texture_non_power_of_two", extensions)) { textureTarget = GL_TEXTURE_2D; can_palette = true; } else if (gl_HasExtension("GL_ARB_texture_rectangle", extensions)) { textureTarget = GL_TEXTURE_RECTANGLE_ARB; can_palette = false; } else if (gl_HasExtension("GL_EXT_texture_rectangle", extensions)) { textureTarget = GL_TEXTURE_RECTANGLE; can_palette = false; } else if (gl_HasExtension("GL_NV_texture_rectangle", extensions)) { textureTarget = GL_TEXTURE_RECTANGLE_NV; can_palette = false; } else { /* Calc smallest power of two size needed */ int w1=64, h1=64; while (w>w1) { w1<<=1; } while (h>h1) { h1<<=1; } w = w1; h = h1; textureTarget = GL_TEXTURE_2D; can_palette = true; } /* FIXME: what to do if hw do not support asked size ? */ *width = w; *height = h; } SDL_Surface *HostSurfaceOpenGL::createSdlSurface(int width, int height, SDL_PixelFormat *pixelFormat) { SDL_PixelFormat glPixelFormat; memcpy(&glPixelFormat, pixelFormat, sizeof(SDL_PixelFormat)); textureFormat = GL_RGBA; switch(pixelFormat->BitsPerPixel) { case 8: textureFormat = GL_COLOR_INDEX; break; case 15: /* GL_RGB5_A1, byteswap at updateTexture time */ glPixelFormat.Rmask = 31<<10; glPixelFormat.Gmask = 31<<5; glPixelFormat.Bmask = 31; glPixelFormat.Amask = 1<<15; break; case 16: /* GL_RGB, 16bits, byteswap at updateTexture time */ textureFormat = GL_RGB; glPixelFormat.Rmask = 31<<11; glPixelFormat.Gmask = 63<<5; glPixelFormat.Bmask = 31; glPixelFormat.Amask = 0; break; case 24: /* GL_RGB, 24bits */ textureFormat = GL_RGB; #if SDL_BYTEORDER == SDL_LIL_ENDIAN glPixelFormat.Rmask = 255; glPixelFormat.Gmask = 255<<8; glPixelFormat.Bmask = 255<<16; glPixelFormat.Amask = 0; #else glPixelFormat.Rmask = 255<<16; glPixelFormat.Gmask = 255<<8; glPixelFormat.Bmask = 255; glPixelFormat.Amask = 0; #endif break; case 32: /* FVDI driver is hardcoded to ARGB, so try to use a compatible texture format if available */ bool has_ext_bgra = gl_HasExtension("GL_EXT_bgra", gl.GetString(GL_EXTENSIONS)); if (has_ext_bgra) { textureFormat = GL_BGRA_EXT; /* Only change format if some alpha was requested till fvdi fixed */ if (pixelFormat->Amask) { /* FIXME: is it the same on big endian ? */ glPixelFormat.Rmask = 255<<16; glPixelFormat.Gmask = 255<<8; glPixelFormat.Bmask = 255; glPixelFormat.Amask = 255<<24; } } break; } return HostSurface::createSdlSurface(width,height,&glPixelFormat); } /*--- Public functions ---*/ void HostSurfaceOpenGL::update(void) { updateTexture(); } void HostSurfaceOpenGL::resize(int width, int height, bool force_recreate) { int w=width, h=height; calcGlDimensions(&w, &h); HostSurface::resize(width,height, w,h, force_recreate); first_upload = true; updateTexture(); } void HostSurfaceOpenGL::setPalette(SDL_Color *palette, int first, int count) { HostSurface::setPalette(palette,first, count); if (!surface) { return; } /* Reupload palette if needed */ if ((getBpp()==8) && use_palette) { Uint8 mapP[256*3]; Uint8 *pMap = mapP; SDL_Color *palette = surface->format->palette->colors; for (int i=0;iformat->palette->ncolors;i++) { *pMap++ = palette[i].r; *pMap++ = palette[i].g; *pMap++ = palette[i].b; } gl.BindTexture(textureTarget, textureObject); gl.ColorTableEXT(textureTarget, GL_RGB, 256, GL_RGB, GL_UNSIGNED_BYTE, mapP); return; } /* Reupload texture if needed */ updateTexture(); } void HostSurfaceOpenGL::updateTexture(void) { if (!surface) { return; } gl.BindTexture(textureTarget, textureObject); GLfloat mapR[256], mapG[256], mapB[256], mapA[256]; GLenum internalFormat = GL_RGBA; GLenum pixelType = GL_UNSIGNED_BYTE; switch (getBpp()) { case 8: { SDL_Color *palette = surface->format->palette->colors; if (use_palette) { Uint8 mapP[256*3]; Uint8 *pMap = mapP; internalFormat = GL_COLOR_INDEX8_EXT; for (int i=0;iformat->palette->ncolors;i++) { *pMap++ = palette[i].r; *pMap++ = palette[i].g; *pMap++ = palette[i].b; } gl.ColorTableEXT(textureTarget, GL_RGB, 256, GL_RGB, GL_UNSIGNED_BYTE, mapP); } else { memset(mapR, 0, sizeof(mapR)); memset(mapG, 0, sizeof(mapG)); memset(mapB, 0, sizeof(mapB)); memset(mapA, 0, sizeof(mapA)); for (int i=0;iformat->palette->ncolors;i++) { mapR[i] = palette[i].r / 255.0; mapG[i] = palette[i].g / 255.0; mapB[i] = palette[i].b / 255.0; mapA[i] = 1.0; } gl.PixelTransferi(GL_MAP_COLOR, GL_TRUE); gl.PixelMapfv(GL_PIXEL_MAP_I_TO_R, 256, mapR); gl.PixelMapfv(GL_PIXEL_MAP_I_TO_G, 256, mapG); gl.PixelMapfv(GL_PIXEL_MAP_I_TO_B, 256, mapB); gl.PixelMapfv(GL_PIXEL_MAP_I_TO_A, 256, mapA); } } break; case 16: pixelType = GL_UNSIGNED_SHORT_5_6_5; /* FIXME: care about endianness ? */ break; case 24: /* FIXME: care about endianness ? */ break; case 32: /* FIXME: care about endianness ? */ if (textureFormat == GL_BGRA_EXT) { pixelType = GL_UNSIGNED_INT_8_8_8_8_REV; } break; } if (first_upload) { /* Complete texture upload the first time, and only parts after */ gl.TexImage2D(textureTarget,0, internalFormat, surface->w, surface->h, 0, textureFormat, pixelType, surface->pixels ); first_upload = false; } else { gl.PixelStorei(GL_UNPACK_ROW_LENGTH, surface->w); int x,y; Uint8 *dirtyArray = getDirtyRects(); for (y=0; ypixels; surfPixels += (y<<4) * surface->pitch; surfPixels += (x<<4) * surface->format->BytesPerPixel; gl.TexSubImage2D(textureTarget,0, x<<4,y<<4,16,16, textureFormat, pixelType, surfPixels); } } clearDirtyRects(); gl.PixelStorei(GL_UNPACK_ROW_LENGTH, 0); } switch (getBpp()) { case 8: if (!use_palette) { gl.PixelTransferi(GL_MAP_COLOR, GL_FALSE); } break; case 16: /* FIXME: care about endianness ? */ break; case 24: /* FIXME: care about endianness ? */ break; case 32: /* FIXME: care about endianness ? */ break; } } void HostSurfaceOpenGL::createTextureObject(void) { gl.GenTextures(1, &textureObject); if (gl_HasExtension("GL_EXT_paletted_texture", gl.GetString(GL_EXTENSIONS)) && (getBpp() == 8) && can_palette) { use_palette = true; } first_upload = true; updateTexture(); } void HostSurfaceOpenGL::destroyTextureObject(void) { gl.DeleteTextures(1, &textureObject); } GLenum HostSurfaceOpenGL::getTextureTarget(void) { return textureTarget; } GLuint HostSurfaceOpenGL::getTextureObject(void) { return textureObject; } #endif /* ENABLE_OPENGL */ aranym-1.1.0/src/host_surface.cpp0000664000175000017500000001145013454637621015162 0ustar joyjoy/* Rendering surface (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "SDL_compat.h" #include "dirty_rects.h" #include "host_surface.h" #define DEBUG 0 #include "debug.h" /*--- Defines ---*/ /*--- Constructor/destructor ---*/ HostSurface::HostSurface(int width, int height, int bpp) : DirtyRects(width, height) { surface = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, bpp, 0,0,0,0); clip_w = surface ? surface->w : 0; clip_h = surface ? surface->h : 0; setParam(SURF_DRAW, DRAW_CROP_AND_CENTER); setParam(SURF_USE_ALPHA, 0); setParam(SURF_ALPHA, 100); } HostSurface::HostSurface(int width, int height, SDL_PixelFormat *pixelFormat) : DirtyRects(width, height) { surface = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, pixelFormat->BitsPerPixel, pixelFormat->Rmask, pixelFormat->Gmask, pixelFormat->Bmask, pixelFormat->Amask ); clip_w = surface ? surface->w : 0; clip_h = surface ? surface->h : 0; setParam(SURF_DRAW, DRAW_CROP_AND_CENTER); setParam(SURF_USE_ALPHA, 0); setParam(SURF_ALPHA, 100); } HostSurface::~HostSurface(void) { if (surface) { SDL_FreeSurface(surface); surface = NULL; } } /*--- Protected functions ---*/ SDL_Surface *HostSurface::createSdlSurface(int width, int height, SDL_PixelFormat *pixelFormat) { return SDL_CreateRGBSurface(SDL_SWSURFACE, width,height, pixelFormat->BitsPerPixel, pixelFormat->Rmask, pixelFormat->Gmask, pixelFormat->Bmask, pixelFormat->Amask ); } /*--- Public functions ---*/ SDL_Surface *HostSurface::getSdlSurface(void) { return surface; } int HostSurface::getWidth(void) { return clip_w; } int HostSurface::getHeight(void) { return clip_h; } int HostSurface::getBpp(void) { return (surface ? surface->format->BitsPerPixel : 0); } void HostSurface::update(void) { } void HostSurface::resize(int new_width, int new_height, bool force_recreate) { resize(new_width,new_height, new_width,new_height, force_recreate); } void HostSurface::resize(int new_width, int new_height, int surf_width, int surf_height, bool force_recreate) { SDL_PixelFormat pixelFormat; SDL_Color palette[256]; bool restore_palette = false; bool recreateSurface = force_recreate; if (surf_width & 15) { surf_width = (surf_width|15)+1; } if (surf_height & 15) { surf_height = (surf_height|15)+1; } if (!surface) { recreateSurface = true; } else { /* Recreate surface if too small */ if ((surf_width>surface->w) || (surf_height>surface->h)) { recreateSurface = true; } clip_w = new_width; clip_h = new_height; } if (recreateSurface) { memset(&pixelFormat, 0, sizeof(SDL_PixelFormat)); if (surface) { /* Save pixel format */ memcpy(&pixelFormat, surface->format, sizeof(SDL_PixelFormat)); /* Save palette ? */ if ((surface->format->BitsPerPixel==8) && surface->format->palette) { int i; for (i=0; iformat->palette->ncolors; i++) { palette[i].r = surface->format->palette->colors[i].r; palette[i].g = surface->format->palette->colors[i].g; palette[i].b = surface->format->palette->colors[i].b; #if SDL_VERSION_ATLEAST(2, 0, 0) palette[i].a = surface->format->palette->colors[i].a; #endif } restore_palette = SDL_TRUE; } SDL_FreeSurface(surface); } else { pixelFormat.BitsPerPixel = 8; } surface = createSdlSurface(surf_width,surf_height, &pixelFormat); if (restore_palette) { setPalette(palette, 0, 256); } } resizeDirty(clip_w, clip_h); } void HostSurface::setPalette(SDL_Color *palette, int first, int count) { if (!surface || !palette) { return; } #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_SetPaletteColors(surface->format->palette, palette, first, count); #else SDL_SetPalette(surface, SDL_LOGPAL, palette, first, count); #endif } int HostSurface::getParam(int num_param) { switch (num_param) { case SURF_DRAW: return draw_mode; case SURF_ALPHA: return alpha_coef; case SURF_USE_ALPHA: return use_alpha; } return 0; } void HostSurface::setParam(int num_param, int value) { switch (num_param) { case SURF_DRAW: draw_mode = value; break; case SURF_ALPHA: alpha_coef = value; break; case SURF_USE_ALPHA: use_alpha = value; break; } } aranym-1.1.0/src/host_clock.cpp0000664000175000017500000000223313454637621014624 0ustar joyjoy/* Host clock for timers ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "SDL_compat.h" #include "host_clock.h" /*--- Defines ---*/ /*--- Constructor/destructor of HostClock class ---*/ HostClock::HostClock(void) { reset(); } /*--- Protected stuff ---*/ float HostClock::getCurTime(void) { return ((float) SDL_GetTicks()); } /*--- Public stuff ---*/ void HostClock::reset(void) { startTime = getCurTime(); } float HostClock::getClock(void) { return (getCurTime() - startTime); } aranym-1.1.0/src/host_audio.cpp0000664000175000017500000001014513454637621014633 0ustar joyjoy/* Audio core ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "host_audio.h" #include "host.h" #include "parameters.h" #define DEBUG 0 #include "debug.h" #include "SDL_compat.h" /*--- SDL callback function ---*/ extern "C" { static void UpdateAudio(void *unused, Uint8 *stream, int len) { UNUSED(unused); if (!host) { return; } /* SDL 1.3 will require the application to clear the buffer */ #if SDL_VERSION_ATLEAST(2, 0, 0) memset(stream, 0, len); #endif for (int i=0; iaudio.callbacks[i]) { host->audio.callbacks[i](host->audio.userdatas[i], stream, len); } } } } /*--- Constructor/destructor of HostAudio class ---*/ HostAudio::HostAudio() { D(bug("HostAudio: HostAudio()")); for (int i=0; ireset(); } Host::~Host() { D(bug("Host::~Host()")); delete video; delete clock; } void Host::reset(void) { audio.reset(); video->reset(); clock->reset(); } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/hardware.cpp0000664000175000017500000001241213454637621014271 0ustar joyjoy/* * hardware.cpp - Atari hardware emulation * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "icio.h" #include "acsifdc.h" #include "rtc.h" #include "blitter.h" #include "ide.h" #include "mmu.h" #include "hostscreen.h" #include "midi_file.h" #include "midi_sequencer.h" #include "videl.h" #include "videl_zoom.h" #include "joypads.h" #define DEBUG 0 #include "debug.h" #define debug_print_IO(a) "unknown" MFP *mfp; MMU *mmu; IKBD *ikbd; MIDI *midi; ACSIFDC *fdc; RTC *rtc; IDE *ide; DSP *dsp; BLITTER *blitter; VIDEL *videl; YAMAHA *yamaha; ARADATA *aradata; AUDIODMA *audiodma; CROSSBAR *crossbar; JOYPADS *joypads; SCC *scc; enum {iMFP = 0, iMMU, iIKBD, iMIDI, iFDC, iRTC, iIDE, iDSP, iBLITTER, iVIDEL, iYAMAHA, iARADATA, iAUDIODMA, iCROSSBAR, iSCC, iCARTRIDGE, iJOYPADS, /* the iITEMS must be the last one in the enum */ iITEMS}; BASE_IO *arhw[iITEMS]; void HWInit() { arhw[iMFP] = mfp = new MFP(0xfffa00, 0x30); arhw[iMMU] = mmu = new MMU(0xff8000, 8); arhw[iIKBD] = ikbd = new IKBD(0xfffc00, 4); #ifdef ENABLE_MIDI_SEQUENCER if (strcmp("sequencer", bx_options.midi.type)==0) midi = new MidiSequencer(0xfffc04, 4); else #endif midi = new MidiFile(0xfffc04, 4); arhw[iMIDI] = midi; arhw[iFDC] = fdc = new ACSIFDC(0xff8600, 0x10); arhw[iRTC] = rtc = new RTC(0xff8960, 4); arhw[iIDE] = ide = new IDE(0xf00000, 0x3a); arhw[iDSP] = dsp = new DSP(0xffa200, 8); arhw[iBLITTER] = blitter = new BLITTER(0xff8A00, 0x3e); arhw[iVIDEL] = videl = new VidelZoom(0xff8200, 0xc4); arhw[iYAMAHA] = yamaha = new YAMAHA(0xff8800, 4); arhw[iARADATA] = aradata = new ARADATA(0xf90000, 18); arhw[iAUDIODMA] = audiodma = new AUDIODMA(0xff8900, 0x22); arhw[iCROSSBAR] = crossbar = new CROSSBAR(0xff8930, 0x14); arhw[iJOYPADS] = joypads = new JOYPADS(0xff9200, 0x24); arhw[iSCC] = scc = new SCC(0xff8c81, 8); arhw[iCARTRIDGE] = new BASE_IO(0xfa0000, 0x20000); } // {"DMA/SCSI", 0xff8700, 0x16, &fake_io}, // {"SCSI", 0xff8780, 0x10, &fake_io}, // {"MicroWire", 0xff8922, 0x4}, // {"DMA/SCC", 0xff8C00, 0x16}, // {"VME", 0xff8e00, 0x0c}, // {"STFPC", 0xfffa40, 8}, // {"RTC", 0xfffc20, 0x20} void HWExit() { for(int i=0; ireset(); } } BASE_IO *getModule(memptr addr) { for(int i=0; iisMyHWRegister(addr)) return arhw[i]; } D(bug("HW register %08x not emulated", addr)); return NULL; } ARADATA* getARADATA(){ return aradata; /* (ARADATA*)arhw[ARADATA];*/ } MFP* getMFP() { return mfp; } IKBD* getIKBD() { return ikbd; } MIDI* getMIDI() { return midi; } YAMAHA* getYAMAHA() { return yamaha; } VIDEL* getVIDEL() { return videl; } DSP* getDSP() { return dsp; } ACSIFDC *getFDC() { return fdc; } IDE *getIDE() { return ide; } AUDIODMA *getAUDIODMA() { return audiodma; } CROSSBAR *getCROSSBAR() { return crossbar; } JOYPADS *getJOYPADS() { return joypads; } SCC* getSCC() { return scc; } uae_u32 HWget_l (uaecptr addr) { D(bug("HWget_l %x <- %s at %08x", addr, debug_print_IO(addr), showPC())); BASE_IO *ptr = getModule(addr); if (ptr != NULL) { return ptr->handleReadL(addr); } BUS_ERROR(addr); } uae_u16 HWget_w (uaecptr addr) { D(bug("HWget_w %x <- %s at %08x", addr, debug_print_IO(addr), showPC())); BASE_IO *ptr = getModule(addr); if (ptr != NULL) { return ptr->handleReadW(addr); } BUS_ERROR(addr); } uae_u8 HWget_b (uaecptr addr) { D(bug("HWget_b %x <- %s at %08x", addr, debug_print_IO(addr), showPC())); BASE_IO *ptr = getModule(addr); if (ptr != NULL) { return ptr->handleRead(addr); } BUS_ERROR(addr); } void HWput_l (uaecptr addr, uae_u32 value) { D(bug("HWput_l %x,%d ($%08x) -> %s at %08x", addr, value, value, debug_print_IO(addr), showPC())); BASE_IO *ptr = getModule(addr); if (ptr != NULL) { ptr->handleWriteL(addr, value); return; } BUS_ERROR(addr); } void HWput_w (uaecptr addr, uae_u16 value) { D(bug("HWput_w %x,%d ($%04x) -> %s at %08x", addr, value, value, debug_print_IO(addr), showPC())); BASE_IO *ptr = getModule(addr); if (ptr != NULL) { ptr->handleWriteW(addr, value); return; } BUS_ERROR(addr); } void HWput_b (uaecptr addr, uae_u8 value) { D(bug("HWput_b %x,%u ($%02x) -> %s at %08x", addr, value, value, debug_print_IO(addr), showPC())); BASE_IO *ptr = getModule(addr); if (ptr != NULL) { ptr->handleWrite(addr, value); return; } BUS_ERROR(addr); } aranym-1.1.0/src/gui-sdl/0000775000175000017500000000000013454637641013336 5ustar joyjoyaranym-1.1.0/src/gui-sdl/sdlgui.sdl0000664000175000017500000010501713454637621015333 0ustar joyjoy/* * GEM resource SDL output of sdlgui * * created by ORCS 2.16 */ #ifndef _ # define N_(x) x #endif #ifndef SDL_GUI_SHORTCUT_STRING # define SDL_GUI_SHORTCUT_STRING "_" #endif #if defined(SDLGUI_INCLUDE_MAINDLG) || defined(SDLGUI_INCLUDE_ALL) enum MAINDLG { box_main = 0, box_setup = 1, ABOUT = 2, DISCS = 3, HOTKEYS = 4, KEYBOARD = 5, OS = 6, VIDEO = 7, NETWORK = 8, PARTITIONS = 9, USB = 10, text_conffile = 11, LOAD = 12, SAVE = 13, HOSTFS = 14, text_main = 15, box_hotkeys = 16, WARMREBOOT = 17, COLDREBOOT = 18, FULLSCREEN = 19, SHUTDOWN = 20, SCREENSHOT = 21, CLOSE = 22, text_hotkeys = 23, HELP = 24 }; static SGOBJ maindlg[] = { { SGBOX, SG_BACKGROUND, 0, 0, 0, 76, 25, NULL, 0 }, { SGBOX, 0, 0, 17, 2, 44, 15, NULL, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 19, 3, 18, 1, N_("About"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 19, 5, 18, 1, N_("Disks"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 19, 7, 18, 1, N_("Hotkeys"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 19, 9, 18, 1, N_("Keyboard + mouse"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 19, 11, 18, 1, N_("Operating System"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 41, 3, 18, 1, N_("Video"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 41, 5, 18, 1, N_("Networking"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 41, 7, 18, 1, N_("Partitions"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 41, 9, 18, 1, N_("USB"), 0 }, { SGTEXT, 0, 0, 22, 15, 12, 1, N_("Config file:"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 35, 15, 6, 1, N_("Load"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 43, 15, 6, 1, N_("Save"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 41, 11, 18, 1, N_("Host Filesystem"), 0 }, { SGTEXT, 0, 0, 30, 1, 20, 1, N_(" \016\017 ARAnyM Setup \016\017 "), 0 }, { SGBOX, 0, 0, 17, 19, 44, 5, NULL, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 19, 20, 12, 1, N_("Warm-Reboot"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 33, 20, 12, 1, N_("Cold-Reboot"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 47, 20, 12, 1, N_("Fullscreen"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 19, 22, 12, 1, N_("Shutdown"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 33, 22, 12, 1, N_("Screenshot"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_DEFAULT, 0, 47, 22, 12, 1, N_("Close"), 0 }, { SGTEXT, 0, 0, 27, 18, 22, 1, N_(" Quick Access Buttons "), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 3, 22, 12, 1, N_("Help"), 0 }, { -1, 0, 0, 0, 0, 0, 0, NULL, 0 } }; #endif #if defined(SDLGUI_INCLUDE_DISCDLG) || defined(SDLGUI_INCLUDE_ALL) enum DISCDLG { box_main = 0, box_floppy = 1, FLP_BROWSE = 2, FLP_PATH = 3, FLP_CLEAR = 4, text_floppy = 5, spacer_mount = 6, FLOPPY_MOUNT = 7, box_ide0 = 8, IDE0_BROWSE = 9, IDE0_PATH = 10, IDE0_PRESENT = 11, IDE0_CDROM = 12, IDE0_READONLY = 13, IDE0_BYTESWAP = 14, text_geom0 = 15, text_cyls0 = 16, IDE0_CYL = 17 /* max len 5 */, text_heads0 = 18, IDE0_HEAD = 19 /* max len 2 */, text_spts0 = 20, IDE0_SEC = 21 /* max len 3 */, text_size0 = 22, IDE0_SIZE = 23 /* max len 6 */, text_size0mb = 24, IDE0_GENERATE = 25, IDE0_CLEAR = 26, text_ide0 = 27, spacer_name0 = 28, IDE0_NAME = 29 /* max len 40 */, IDE0_MOUNT = 30, box_ide1 = 31, IDE1_BROWSE = 32, IDE1_PATH = 33, IDE1_PRESENT = 34, IDE1_CDROM = 35, IDE1_READONLY = 36, IDE1_BYTESWAP = 37, text_geom1 = 38, text_cyls1 = 39, IDE1_CYL = 40 /* max len 5 */, text_heads1 = 41, IDE1_HEAD = 42 /* max len 2 */, text_spts1 = 43, IDE1_SEC = 44 /* max len 3 */, text_size1 = 45, IDE1_SIZE = 46 /* max len 6 */, IDE1_GENERATE = 48, IDE1_CLEAR = 49, text_ide1 = 50, spacer_name1 = 51, IDE1_NAME = 52 /* max len 40 */, IDE1_MOUNT = 53, HELP = 54, APPLY = 55, CANCEL = 56 }; static SGOBJ discdlg[] = { { SGBOX, SG_BACKGROUND, 0, 0, 0, 76, 25, NULL, 0 }, { SGBOX, 0, 0, 1, 2, 74, 2, NULL, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 2, 3, 5, 1, N_("Path:"), 0 }, { SGTEXT, 0, 0, 8, 3, 62, 1, floppy_path, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 72, 3, 2, 1, N_("X"), 0 }, { SGTEXT, 0, 0, 2, 1, 16, 1, N_(" Floppy disk A: "), 0 }, { SGTEXT, 0, 0, 27, 1, 1, 1, N_(" "), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 18, 1, 9, 1, N_("Eject"), 0 }, { SGBOX, 0, 0, 1, 7, 74, 6, NULL, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 2, 8, 5, 1, N_("Path:"), 0 }, { SGTEXT, 0, 0, 8, 8, 62, 1, N_(""), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 63, 9, 10, 1, N_("Present"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 63, 10, 11, 1, N_("is CDROM"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 63, 11, 11, 1, N_("ReadOnly"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 63, 12, 11, 1, N_("ByteSwap"), 0 }, { SGTEXT, 0, 0, 2, 10, 8, 1, N_("Geometry"), 0 }, { SGTEXT, 0, 0, 12, 10, 10, 1, N_("Cylinders:"), 0 }, { SGEDITFIELD, 0, 0, 22, 10, 5, 1, ide0_cyl, 0 }, { SGTEXT, 0, 0, 29, 10, 6, 1, N_("Heads:"), 0 }, { SGEDITFIELD, 0, 0, 35, 10, 2, 1, ide0_head, 0 }, { SGTEXT, 0, 0, 39, 10, 18, 1, N_("Sectors per track:"), 0 }, { SGEDITFIELD, 0, 0, 57, 10, 3, 1, ide0_spt, 0 }, { SGTEXT, 0, 0, 2, 12, 10, 1, N_("Disk Size:"), 0 }, { SGEDITFIELD, 0, 0, 12, 12, 6, 1, ide0_size, 0 }, { SGTEXT, 0, 0, 19, 12, 2, 1, N_("MB"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 31, 12, 21, 1, N_("Generate Disk Image"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 72, 8, 2, 1, N_("X"), 0 }, { SGTEXT, 0, 0, 2, 6, 17, 1, N_(" Hard disk IDE0:"), 0 }, { SGTEXT, 0, 0, 59, 6, 1, 1, N_(" "), 0 }, { SGEDITFIELD, 0, 0, 19, 6, 40, 1, ide0_name, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 66, 6, 8, 1, N_("Insert"), 0 }, { SGBOX, 0, 0, 1, 15, 74, 6, NULL, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 2, 16, 5, 1, N_("Path:"), 0 }, { SGTEXT, 0, 0, 8, 16, 62, 1, N_(""), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 63, 17, 10, 1, N_("Present"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 63, 18, 11, 1, N_("is CDROM"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 63, 19, 11, 1, N_("ReadOnly"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 63, 20, 11, 1, N_("ByteSwap"), 0 }, { SGTEXT, 0, 0, 2, 18, 8, 1, N_("Geometry"), 0 }, { SGTEXT, 0, 0, 12, 18, 10, 1, N_("Cylinders:"), 0 }, { SGEDITFIELD, 0, 0, 22, 18, 5, 1, ide1_cyl, 0 }, { SGTEXT, 0, 0, 29, 18, 6, 1, N_("Heads:"), 0 }, { SGEDITFIELD, 0, 0, 35, 18, 2, 1, ide1_head, 0 }, { SGTEXT, 0, 0, 39, 18, 18, 1, N_("Sectors per track:"), 0 }, { SGEDITFIELD, 0, 0, 57, 18, 3, 1, ide1_spt, 0 }, { SGTEXT, 0, 0, 2, 20, 10, 1, N_("Disk Size:"), 0 }, { SGEDITFIELD, 0, 0, 12, 20, 6, 1, ide1_size, 0 }, { SGTEXT, 0, 0, 19, 20, 2, 1, N_("MB"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 31, 20, 21, 1, N_("Generate Disk Image"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 72, 16, 2, 1, N_("X"), 0 }, { SGTEXT, 0, 0, 2, 14, 17, 1, N_(" Hard disk IDE1:"), 0 }, { SGTEXT, 0, 0, 59, 14, 1, 1, N_(" "), 0 }, { SGEDITFIELD, 0, 0, 19, 14, 40, 1, ide1_name, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 66, 14, 8, 1, N_("Insert"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 2, 23, 6, 1, N_("Help"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_DEFAULT, 0, 54, 23, 8, 1, N_("Apply"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 66, 23, 8, 1, N_("Cancel"), 0 }, { -1, 0, 0, 0, 0, 0, 0, NULL, 0 } }; #endif #if defined(SDLGUI_INCLUDE_FSDLG) || defined(SDLGUI_INCLUDE_ALL) enum FSDLG { SGFSDLG_PATH = 3, SGFSDLG_FILENAME = 5, SGFSDLG_UPDIR = 6, SGFSDLG_ROOTDIR = 7, SGFSDLG_UP = 10, SGFSDLG_DOWN = 11, SGFSDLG_FIRSTENTRY = 12 /* max len 71 */, SGFSDLG_LASTENTRY = 26 /* max len 71 */, SGFSDLG_OKAY = 27, SGFSDLG_CANCEL = 28 }; static SGOBJ fsdlg[] = { { SGBOX, SG_BACKGROUND, 0, 0, 0, 76, 25, NULL, 0 }, { SGTEXT, 0, 0, 31, 1, 13, 1, N_("Choose a file"), 0 }, { SGTEXT, 0, 0, 1, 2, 7, 1, N_("Folder:"), 0 }, { SGTEXT, 0, 0, 1, 3, 74, 1, dlgpath, 0 }, { SGTEXT, 0, 0, 1, 4, 5, 1, N_("File:"), 0 }, { SGTEXT, 0, 0, 7, 4, 68, 1, dlgfname, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 67, 1, 4, 1, N_(".."), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 72, 1, 3, 1, N_("/"), 0 }, { SGBOX, 0, 0, 1, 6, 74, 15, NULL, 0 }, { SGBOX, 0, 0, 74, 6, 1, 15, NULL, 0 }, { SGBUTTON, SG_SELECTABLE|SG_TOUCHEXIT, 0, 74, 6, 1, 1, "\001", SG_SHORTCUT_UP }, { SGBUTTON, SG_SELECTABLE|SG_TOUCHEXIT, 0, 74, 20, 1, 1, "\002", SG_SHORTCUT_DOWN }, { SGTEXT, 0, 0, 2, 6, 71, 1, dlgfilenames[0], 0 }, { SGTEXT, 0, 0, 2, 7, 71, 1, dlgfilenames[1], 0 }, { SGTEXT, 0, 0, 2, 8, 71, 1, dlgfilenames[2], 0 }, { SGTEXT, 0, 0, 2, 9, 71, 1, dlgfilenames[3], 0 }, { SGTEXT, 0, 0, 2, 10, 71, 1, dlgfilenames[4], 0 }, { SGTEXT, 0, 0, 2, 11, 71, 1, dlgfilenames[5], 0 }, { SGTEXT, 0, 0, 2, 12, 71, 1, dlgfilenames[6], 0 }, { SGTEXT, 0, 0, 2, 13, 71, 1, dlgfilenames[7], 0 }, { SGTEXT, 0, 0, 2, 14, 71, 1, dlgfilenames[8], 0 }, { SGTEXT, 0, 0, 2, 15, 71, 1, dlgfilenames[9], 0 }, { SGTEXT, 0, 0, 2, 16, 71, 1, dlgfilenames[10], 0 }, { SGTEXT, 0, 0, 2, 17, 71, 1, dlgfilenames[11], 0 }, { SGTEXT, 0, 0, 2, 18, 71, 1, dlgfilenames[12], 0 }, { SGTEXT, 0, 0, 2, 19, 71, 1, dlgfilenames[13], 0 }, { SGTEXT, 0, 0, 2, 20, 71, 1, dlgfilenames[14], 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_DEFAULT, 0, 20, 23, 8, 1, N_("OK"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 48, 23, 8, 1, N_("Cancel"), 0 }, { -1, 0, 0, 0, 0, 0, 0, NULL, 0 } }; #endif #if defined(SDLGUI_INCLUDE_HOTKEYSDLG) || defined(SDLGUI_INCLUDE_ALL) enum HOTKEYSDLG { box_main = 0, box_hotkeys = 1, SETUP = 2, setup_key = 3 /* max len 25 */, QUIT = 4, quit_key = 5 /* max len 25 */, WARMREBOOT = 6, warmreboot_key = 7 /* max len 25 */, COLDREBOOT = 8, coldreboot_key = 9 /* max len 25 */, UNGRAB = 10, ungrab_key = 11 /* max len 25 */, DEBUG = 12, debug_key = 13 /* max len 25 */, SCREENSHOT = 14, screenshot_key = 15 /* max len 25 */, FULLSCREEN = 16, fullscreen_key = 17 /* max len 25 */, SOUND = 18, sound_key = 19 /* max len 26 */, label_hotkeys = 20, HELP = 21, APPLY = 22, CANCEL = 23 }; static SGOBJ hotkeysdlg[] = { { SGBOX, SG_BACKGROUND, 0, 0, 0, 46, 23, NULL, 0 }, { SGBOX, 0, 0, 2, 2, 42, 18, NULL, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 3, 3, 12, 1, N_("Setup"), 0 }, { SGTEXT, 0, 0, 17, 3, 25, 1, key_setup, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 3, 5, 12, 1, N_("Quit"), 0 }, { SGTEXT, 0, 0, 17, 5, 25, 1, key_quit, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 3, 7, 12, 1, N_("Warm-Reboot"), 0 }, { SGTEXT, 0, 0, 17, 7, 25, 1, key_warmreboot, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 3, 9, 12, 1, N_("Cold-Reboot"), 0 }, { SGTEXT, 0, 0, 17, 9, 25, 1, key_coldreboot, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 3, 11, 12, 1, N_("Ungrab"), 0 }, { SGTEXT, 0, 0, 17, 11, 25, 1, key_ungrab, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 3, 13, 12, 1, N_("Debug"), 0 }, { SGTEXT, 0, 0, 17, 13, 25, 1, key_debug, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 3, 15, 12, 1, N_("Screenshot"), 0 }, { SGTEXT, 0, 0, 17, 15, 25, 1, key_screenshot, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 3, 17, 12, 1, N_("Fullscreen"), 0 }, { SGTEXT, 0, 0, 17, 17, 25, 1, key_fullscreen, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 3, 19, 12, 1, N_("Sound on/off"), 0 }, { SGTEXT, 0, 0, 17, 19, 26, 1, key_sound, 0 }, { SGTEXT, 0, 0, 12, 1, 16, 1, N_(" Hotkeys Editor "), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 2, 21, 6, 1, N_("Help"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_DEFAULT, 0, 24, 21, 8, 1, N_("Apply"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 36, 21, 8, 1, N_("Cancel"), 0 }, { -1, 0, 0, 0, 0, 0, 0, NULL, 0 } }; #endif #if defined(SDLGUI_INCLUDE_KEYBOARDDLG) || defined(SDLGUI_INCLUDE_ALL) enum KEYBOARDDLG { box_main = 0, box_wheel = 1, ARROWKEYS = 2, EIFFEL = 3, text_wheel = 4, box_altgr = 5, ATARI_ALT = 6, MILAN_ALTGR = 7, text_altgr = 8, APPLY = 9, CANCEL = 10 }; static SGOBJ keyboarddlg[] = { { SGBOX, SG_BACKGROUND, 0, 0, 0, 42, 13, NULL, 0 }, { SGBOX, 0, 0, 2, 2, 38, 2, NULL, 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, SG_SELECTED, 3, 3, 13, 1, N_("Arrow keys"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 19, 3, 19, 1, N_("Eiffel scancodes"), 0 }, { SGTEXT, 0, 0, 3, 1, 18, 1, N_(" Host mouse wheel "), 0 }, { SGBOX, 0, 0, 2, 7, 38, 2, NULL, 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, SG_SELECTED, 3, 8, 12, 1, N_("Atari Alt"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 19, 8, 14, 1, N_("Milan AltGr"), 0 }, { SGTEXT, 0, 0, 3, 6, 16, 1, N_(" Host AltGr key "), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_DEFAULT, 0, 7, 11, 8, 1, N_("Apply"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 28, 11, 8, 1, N_("Cancel"), 0 }, { -1, 0, 0, 0, 0, 0, 0, NULL, 0 } }; #endif #if defined(SDLGUI_INCLUDE_PRESSKEYDLG) || defined(SDLGUI_INCLUDE_ALL) enum PRESSKEYDLG { box_main = 0, label_key = 1 }; static SGOBJ presskeydlg[] = { { SGBOX, SG_BACKGROUND, 0, 0, 0, 15, 3, NULL, 0 }, { SGTEXT, 0, 0, 2, 1, 11, 1, N_("Press a key"), 0 }, { -1, 0, 0, 0, 0, 0, 0, NULL, 0 } }; #endif #if defined(SDLGUI_INCLUDE_NETWORKDLG) || defined(SDLGUI_INCLUDE_ALL) enum NETWORKDLG { box_main = 0, eth0_type = 1, ETH0_TUNNEL = 2 /* max len 5 */, ETH0_TYP_NONE = 3, ETH0_TYP_PTP = 4, ETH0_TYP_BRIDGE = 5, eth0_hip = 6, ETH0_HIP = 7 /* max len 15 */, eth0_aip = 8, ETH0_AIP = 9 /* max len 15 */, eth0_mask = 10, ETH0_MASK = 11 /* max len 15 */, eth0_mac = 12, ETH0_MAC = 13 /* max len 17 */, eth1_type = 14, ETH1_TUNNEL = 15 /* max len 5 */, ETH1_TYP_NONE = 16, ETH1_TYP_PTP = 17, ETH1_TYP_BRIDGE = 18, eth1_hip = 19, ETH1_HIP = 20 /* max len 15 */, eth1_aip = 21, ETH1_AIP = 22 /* max len 15 */, eth1_mask = 23, ETH1_MASK = 24 /* max len 15 */, eth1_mac = 25, ETH1_MAC = 26 /* max len 17 */, APPLY = 27, CANCEL = 28 }; static SGOBJ networkdlg[] = { { SGBOX, SG_BACKGROUND, 0, 0, 0, 44, 25, NULL, 0 }, { SGTEXT, 0, 0, 1, 2, 5, 1, N_("ETH0:"), 0 }, { SGEDITFIELD, 0, 0, 7, 2, 5, 1, eth[0].config.tunnel, 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 14, 2, 7, 1, N_("None"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, SG_SELECTED, 23, 2, 8, 1, N_("P-t-p"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 33, 2, 9, 1, N_("Bridge"), 0 }, { SGTEXT, 0, 0, 4, 4, 8, 1, N_("Host IP:"), 0 }, { SGEDITFIELD, 0, 0, 14, 4, 15, 1, eth[0].config.ip_host, 0 }, { SGTEXT, 0, 0, 4, 6, 9, 1, N_("Atari IP:"), 0 }, { SGEDITFIELD, 0, 0, 14, 6, 15, 1, eth[0].config.ip_atari, 0 }, { SGTEXT, 0, 0, 4, 8, 8, 1, N_("Netmask:"), 0 }, { SGEDITFIELD, 0, 0, 14, 8, 15, 1, eth[0].config.netmask, 0 }, { SGTEXT, 0, 0, 4, 10, 9, 1, N_("MAC addr:"), 0 }, { SGEDITFIELD, 0, 0, 14, 10, 17, 1, eth[0].config.mac_addr, 0 }, { SGTEXT, 0, 0, 1, 12, 5, 1, N_("ETH1:"), 0 }, { SGEDITFIELD, 0, 0, 7, 12, 5, 1, eth[1].config.tunnel, 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 14, 12, 7, 1, N_("None"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, SG_SELECTED, 23, 12, 8, 1, N_("P-t-p"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 33, 12, 9, 1, N_("Bridge"), 0 }, { SGTEXT, 0, 0, 4, 14, 8, 1, N_("Host IP:"), 0 }, { SGEDITFIELD, 0, 0, 14, 14, 15, 1, eth[1].config.ip_host, 0 }, { SGTEXT, 0, 0, 4, 16, 9, 1, N_("Atari IP:"), 0 }, { SGEDITFIELD, 0, 0, 14, 16, 15, 1, eth[1].config.ip_atari, 0 }, { SGTEXT, 0, 0, 4, 18, 8, 1, N_("Netmask:"), 0 }, { SGEDITFIELD, 0, 0, 14, 18, 15, 1, eth[1].config.netmask, 0 }, { SGTEXT, 0, 0, 4, 20, 9, 1, N_("MAC addr:"), 0 }, { SGEDITFIELD, 0, 0, 14, 20, 17, 1, eth[1].config.mac_addr, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_DEFAULT, 0, 8, 23, 8, 1, N_("Apply"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 28, 23, 8, 1, N_("Cancel"), 0 }, { -1, 0, 0, 0, 0, 0, 0, NULL, 0 } }; #endif #if defined(SDLGUI_INCLUDE_OSDLG) || defined(SDLGUI_INCLUDE_ALL) enum OSDLG { box_main = 0, box_wheel = 1, MCH_TOS_PATH = 2, MCH_TOS_BROWSE = 3, MCH_EMUTOS_BROWSE = 4, MCH_EMUTOS_PATH = 5, MCH_TOS_CLEAR = 6, MCH_EMUTOS_CLEAR = 7, TOSCONSOLE = 9, text_mch = 10, MCH_ARANYM = 11, MCH_FALCON = 12, APPLY = 13, CANCEL = 14, text_wheel = 16, SNAPSHOT_DIR = 18 /* max len 70 */ }; static SGOBJ osdlg[] = { { SGBOX, SG_BACKGROUND, 0, 0, 0, 77, 22, NULL, 0 }, { SGBOX, 0, 0, 1, 2, 74, 5, NULL, 0 }, { SGTEXT, 0, 0, 10, 3, 60, 1, tos_path, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 2, 3, 7, 1, N_("TOS:"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 2, 5, 7, 1, N_("EmuTOS:"), 0 }, { SGTEXT, 0, 0, 10, 5, 60, 1, emutos_path, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 72, 3, 2, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 72, 5, 2, 1, N_("X"), 0 }, { SGBOX, 0, 0, 1, 9, 74, 5, NULL, 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_BUTTON_RIGHT, SG_SELECTED, 2, 10, 45, 1, N_("BIOS CON: output redirected to Host stdout"), 0 }, { SGTEXT, 0, 0, 2, 12, 18, 1, N_("_MCH Cookie value:"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, SG_SELECTED, 21, 12, 9, 1, N_("ARAnyM"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 32, 12, 9, 1, N_("Falcon"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_DEFAULT, 0, 55, 20, 8, 1, N_("Apply"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 67, 20, 8, 1, N_("Cancel"), 0 }, { SGTEXT, 0, 0, 3, 1, 12, 1, N_(" TOS images "), 0 }, { SGTEXT, 0, 0, 3, 8, 13, 1, N_(" TOS patches "), 0 }, { SGBOX, 0, 0, 1, 16, 74, 2, NULL, 0 }, { SGTEXT, SG_SELECTABLE|SG_EXIT, 0, 2, 16, 70, 1, snapshot_dir_display, 0 }, { SGTEXT, 0, 0, 2, 15, 22, 1, N_(" Screenshot Directory "), 0 }, { -1, 0, 0, 0, 0, 0, 0, NULL, 0 } }; #endif #if defined(SDLGUI_INCLUDE_PARTITIONDLG) || defined(SDLGUI_INCLUDE_ALL) enum PARTITIONDLG { box_main = 0, header = 1, box_part0 = 2, PART0_BROWSE = 3, PART0_PATH = 4 /* max len 0 */, text_id0 = 5, PART0_ID = 6 /* max len 3 */, PART0_PRESENT = 7, PART0_READONLY = 8, PART0_BYTESWAP = 9, text_size0 = 10, PART0_SIZE = 11 /* max len 6 */, text_size0mb = 12, PART0_GENERATE = 13, PART0_CLEAR = 14, box_part1 = 15, PART1_BROWSE = 16, PART1_PATH = 17 /* max len 0 */, text_id1 = 18, PART1_ID = 19 /* max len 3 */, PART1_PRESENT = 20, PART1_READONLY = 21, PART1_BYTESWAP = 22, text_size1 = 23, PART1_SIZE = 24 /* max len 6 */, text_size1mb = 25, PART1_GENERATE = 26, PART1_CLEAR = 27, box_part2 = 28, PART2_BROWSE = 29, PART2_PATH = 30 /* max len 0 */, text_id2 = 31, PART2_ID = 32 /* max len 3 */, PART2_PRESENT = 33, PART2_READONLY = 34, PART2_BYTESWAP = 35, text_size2 = 36, PART2_SIZE = 37 /* max len 6 */, text_size2mb = 38, PART2_GENERATE = 39, PART2_CLEAR = 40, box_part3 = 41, PART3_BROWSE = 42, PART3_PATH = 43 /* max len 0 */, text_id3 = 44, PART3_ID = 45 /* max len 3 */, PART3_PRESENT = 46, PART3_READONLY = 47, PART3_BYTESWAP = 48, text_size3 = 49, PART3_SIZE = 50 /* max len 6 */, text_size3mb = 51, PART3_GENERATE = 52, PART3_CLEAR = 53, text_ide = 54, MAP_IDE0 = 55, MAP_IDE1 = 56, HELP = 57, APPLY = 58, CANCEL = 59 }; static SGOBJ partitiondlg[] = { { SGBOX, SG_BACKGROUND, 0, 0, 0, 76, 25, NULL, 0 }, { SGTEXT, 0, 0, 16, 1, 42, 1, N_("XHDI Direct Access to Host Disk Partitions"), 0 }, { SGBOX, 0, 0, 1, 3, 74, 3, NULL, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 2, 3, 6, 1, N_("SCSI0:"), 0 }, { SGTEXT, 0, 0, 9, 3, 62, 1, N_(""), 0 }, { SGTEXT, 0, 0, 2, 5, 7, 1, N_("PartID:"), 0 }, { SGEDITFIELD, 0, 0, 9, 5, 3, 1, part_id[0], 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 14, 5, 10, 1, N_("Present"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 26, 5, 11, 1, N_("ReadOnly"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 39, 5, 11, 1, N_("ByteSwap"), 0 }, { SGTEXT, 0, 0, 52, 5, 5, 1, N_("Size:"), 0 }, { SGEDITFIELD, 0, 0, 57, 5, 6, 1, part_size[0], 0 }, { SGTEXT, 0, 0, 64, 5, 2, 1, N_("MB"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 67, 5, 7, 1, N_("Create"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 72, 3, 2, 1, N_("X"), 0 }, { SGBOX, 0, 0, 1, 7, 74, 3, NULL, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 2, 7, 6, 1, N_("SCSI1:"), 0 }, { SGTEXT, 0, 0, 9, 7, 62, 1, N_(""), 0 }, { SGTEXT, 0, 0, 2, 9, 7, 1, N_("PartID:"), 0 }, { SGEDITFIELD, 0, 0, 9, 9, 3, 1, part_id[1], 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 14, 9, 10, 1, N_("Present"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 26, 9, 11, 1, N_("ReadOnly"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 39, 9, 11, 1, N_("ByteSwap"), 0 }, { SGTEXT, 0, 0, 52, 9, 5, 1, N_("Size:"), 0 }, { SGEDITFIELD, 0, 0, 57, 9, 6, 1, part_size[1], 0 }, { SGTEXT, 0, 0, 64, 9, 2, 1, N_("MB"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 67, 9, 7, 1, N_("Create"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 72, 7, 2, 1, N_("X"), 0 }, { SGBOX, 0, 0, 1, 11, 74, 3, NULL, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 2, 11, 6, 1, N_("SCSI2:"), 0 }, { SGTEXT, 0, 0, 9, 11, 62, 1, N_(""), 0 }, { SGTEXT, 0, 0, 2, 13, 7, 1, N_("PartID:"), 0 }, { SGEDITFIELD, 0, 0, 9, 13, 3, 1, part_id[2], 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 14, 13, 10, 1, N_("Present"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 26, 13, 11, 1, N_("ReadOnly"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 39, 13, 11, 1, N_("ByteSwap"), 0 }, { SGTEXT, 0, 0, 52, 13, 5, 1, N_("Size:"), 0 }, { SGEDITFIELD, 0, 0, 57, 13, 6, 1, part_size[2], 0 }, { SGTEXT, 0, 0, 64, 13, 2, 1, N_("MB"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 67, 13, 7, 1, N_("Create"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 72, 11, 2, 1, N_("X"), 0 }, { SGBOX, 0, 0, 1, 15, 74, 3, NULL, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 2, 15, 6, 1, N_("SCSI3:"), 0 }, { SGTEXT, 0, 0, 9, 15, 62, 1, N_(""), 0 }, { SGTEXT, 0, 0, 2, 17, 7, 1, N_("PartID:"), 0 }, { SGEDITFIELD, 0, 0, 9, 17, 3, 1, part_id[3], 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 14, 17, 10, 1, N_("Present"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 26, 17, 11, 1, N_("ReadOnly"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 39, 17, 11, 1, N_("ByteSwap"), 0 }, { SGTEXT, 0, 0, 52, 17, 5, 1, N_("Size:"), 0 }, { SGEDITFIELD, 0, 0, 57, 17, 6, 1, part_size[3], 0 }, { SGTEXT, 0, 0, 64, 17, 2, 1, N_("MB"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 67, 17, 7, 1, N_("Create"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 72, 15, 2, 1, N_("X"), 0 }, { SGTEXT, 0, SG_DISABLED, 2, 20, 32, 1, N_("Map IDE disk drives as XHDI IDE:"), 0 }, { SGCHECKBOX, SG_SELECTABLE, SG_SELECTED|SG_DISABLED, 36, 20, 16, 1, N_("IDE0 (Master)"), 0 }, { SGCHECKBOX, SG_SELECTABLE, SG_SELECTED|SG_DISABLED, 54, 20, 16, 1, N_("IDE1 (Slave)"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 2, 23, 6, 1, N_("Help"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_DEFAULT, 0, 54, 23, 8, 1, N_("Apply"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 66, 23, 8, 1, N_("Cancel"), 0 }, { -1, 0, 0, 0, 0, 0, 0, NULL, 0 } }; #endif #if defined(SDLGUI_INCLUDE_NOUSBDLG) || defined(SDLGUI_INCLUDE_ALL) enum NOUSBDLG { box_main = 0, usb_text0 = 1, usb_text1 = 2, usb_text2 = 3, usb_text3 = 4, usb_text4 = 5, usb_text5 = 6, OK = 7 }; static SGOBJ nousbdlg[] = { { SGBOX, SG_BACKGROUND, 0, 0, 0, 48, 11, NULL, 0 }, { SGTEXT, 0, 0, 17, 1, 14, 1, N_("NO USB SUPPORT"), 0 }, { SGTEXT, 0, 0, 2, 3, 45, 1, N_("Aranym has been compiled without USB support,"), 0 }, { SGTEXT, 0, 0, 2, 4, 44, 1, N_("if you want to have USB support in Aranym"), 0 }, { SGTEXT, 0, 0, 2, 5, 44, 1, N_("you need libusb for your platform and"), 0 }, { SGTEXT, 0, 0, 2, 6, 44, 1, N_("compile Aranym again with --enable-usbhost"), 0 }, { SGTEXT, 0, 0, 2, 7, 34, 1, N_("when running the configure script."), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_DEFAULT, 0, 21, 9, 6, 1, N_("OK"), 0 }, { -1, 0, 0, 0, 0, 0, 0, NULL, 0 } }; #endif #if defined(SDLGUI_INCLUDE_USBDLG) || defined(SDLGUI_INCLUDE_ALL) enum USBDLG { box_main = 0, box_usb = 1, usb_desc0 = 2, usb_desc1 = 3, usb_desc2 = 4, usb_desc3 = 5, usb_desc4 = 6, usb_desc5 = 7, usb_desc6 = 8, usb_desc7 = 9, usb_desc8 = 10, CONNECTED_0 = 11, CONNECTED_1 = 12, CONNECTED_2 = 13, CONNECTED_3 = 14, CONNECTED_4 = 15, CONNECTED_5 = 16, CONNECTED_6 = 17, CONNECTED_7 = 18, CONNECTED_8 = 19, PLUG_0 = 20, PLUG_1 = 21, PLUG_2 = 22, PLUG_3 = 23, PLUG_4 = 24, PLUG_5 = 25, PLUG_6 = 26, PLUG_7 = 27, PLUG_8 = 28, SLIDEBAR = 29, USBHOSTDLG_UP = 30, USBHOSTDLG_DOWN = 31, text_usb = 32, GET_DEVICE_LIST = 33, OK = 34 }; static SGOBJ usbdlg[] = { { SGBOX, SG_BACKGROUND, 0, 0, 0, 64, 24, NULL, 0 }, { SGBOX, 0, 0, 2, 3, 60, 17, NULL, 0 }, { SGTEXT, 0, 0, 4, 3, 31, 1, product[0], 0 }, { SGTEXT, 0, 0, 4, 5, 31, 1, product[1], 0 }, { SGTEXT, 0, 0, 4, 7, 31, 1, product[2], 0 }, { SGTEXT, 0, 0, 4, 9, 31, 1, product[3], 0 }, { SGTEXT, 0, 0, 4, 11, 31, 1, product[4], 0 }, { SGTEXT, 0, 0, 4, 13, 31, 1, product[5], 0 }, { SGTEXT, 0, 0, 4, 15, 31, 1, product[6], 0 }, { SGTEXT, 0, 0, 4, 17, 31, 1, product[7], 0 }, { SGTEXT, 0, 0, 4, 19, 31, 1, product[8], 0 }, { SGTEXT, 0, 0, 36, 3, 9, 1, N_("CONNECTED"), 0 }, { SGTEXT, 0, 0, 36, 5, 9, 1, N_("CONNECTED"), 0 }, { SGTEXT, 0, 0, 36, 7, 9, 1, N_("CONNECTED"), 0 }, { SGTEXT, 0, 0, 36, 9, 9, 1, N_("CONNECTED"), 0 }, { SGTEXT, 0, 0, 36, 11, 9, 1, N_("CONNECTED"), 0 }, { SGTEXT, 0, 0, 36, 13, 9, 1, N_("CONNECTED"), 0 }, { SGTEXT, 0, 0, 36, 15, 9, 1, N_("CONNECTED"), 0 }, { SGTEXT, 0, 0, 36, 17, 9, 1, N_("CONNECTED"), 0 }, { SGTEXT, 0, 0, 36, 19, 9, 1, N_("CONNECTED"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 46, 3, 13, 1, N_("Plug/Unplug"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 46, 5, 13, 1, N_("Plug/Unplug"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 46, 7, 13, 1, N_("Plug/Unplug"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 46, 9, 13, 1, N_("Plug/Unplug"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 46, 11, 13, 1, N_("Plug/Unplug"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 46, 13, 13, 1, N_("Plug/Unplug"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 46, 15, 13, 1, N_("Plug/Unplug"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 46, 17, 13, 1, N_("Plug/Unplug"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 46, 19, 13, 1, N_("Plug/Unplug"), 0 }, { SGBOX, 0, 0, 61, 3, 1, 17, NULL, 0 }, { SGBUTTON, SG_SELECTABLE|SG_TOUCHEXIT, 0, 61, 3, 1, 1, "\001", SG_SHORTCUT_UP }, { SGBUTTON, SG_SELECTABLE|SG_TOUCHEXIT, 0, 61, 19, 1, 1, "\002", SG_SHORTCUT_UP }, { SGTEXT, 0, 0, 26, 1, 13, 1, N_(" USB Devices "), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 4, 22, 16, 1, N_("Get new list"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 43, 22, 16, 1, N_("OK"), 0 }, { -1, 0, 0, 0, 0, 0, 0, NULL, 0 } }; #endif #if defined(SDLGUI_INCLUDE_VIDEODLG) || defined(SDLGUI_INCLUDE_ALL) enum VIDEODLG { box_main = 0, text_fullscreen = 1, FULLSCREEN = 2, WINDOW = 3, text_frameskip = 4, FRAMESKIP_0 = 5, FRAMESKIP_1 = 6, FRAMESKIP_2 = 7, FRAMESKIP_5 = 8, FRAMESKIP_10 = 9, FRAMESKIP_50 = 10, text_monitor = 11, MONITOR_NV = 12, MONITOR_VGA = 13, MONITOR_TV = 14, text_colordepth = 15, COLORDEPTH_NV = 16, COLORDEPTH_1 = 17, COLORDEPTH_2 = 18, COLORDEPTH_4 = 19, COLORDEPTH_8 = 20, COLORDEPTH_16 = 21, text_autozoom = 22, AUTOZOOM_ON = 23, AZ_INTEGER = 24, AZ_FIXEDSIZE = 25, SINGLE_BLIT_COMPOSING = 26, SINGLE_BLIT_REFRESH = 27, RES_640 = 28, RES_800 = 29, RES_1024 = 30, RES_1280 = 31, RES_CUSTOM = 32, text_rw = 33, RES_WIDTH = 34 /* max len 4 */, text_rh = 35, RES_HEIGHT = 36 /* max len 4 */, APPLY = 37, CANCEL = 38 }; static SGOBJ videodlg[] = { { SGBOX, SG_BACKGROUND, 0, 0, 0, 42, 24, NULL, 0 }, { SGTEXT, 0, 0, 2, 2, 7, 1, N_("ARAnyM:"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 10, 2, 13, 1, N_("Fullscreen"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, SG_SELECTED, 24, 2, 14, 1, N_("in a Window"), 0 }, { SGTEXT, 0, 0, 2, 4, 6, 1, N_("VIDEL:"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 2, 5, 9, 1, N_("50 FPS"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, SG_SELECTED, 2, 6, 9, 1, N_("25 FPS"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 2, 7, 9, 1, N_("17 FPS"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 2, 8, 9, 1, N_("10 FPS"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 2, 9, 9, 1, N_(" 5 FPS"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 2, 10, 9, 1, N_(" 1 FPS"), 0 }, { SGTEXT, 0, 0, 13, 4, 8, 1, N_("Monitor:"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, SG_SELECTED, 13, 5, 10, 1, N_(""), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 13, 6, 6, 1, N_("VGA"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 13, 7, 5, 1, N_("TV"), 0 }, { SGTEXT, 0, 0, 25, 4, 11, 1, N_("Boot Depth:"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, SG_SELECTED, 25, 5, 10, 1, N_(""), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 25, 6, 11, 1, N_("2 colors"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 25, 7, 11, 1, N_("4 colors"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 25, 8, 12, 1, N_("16 colors"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 25, 9, 13, 1, N_("256 colors"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 25, 10, 12, 1, N_("TrueColor"), 0 }, { SGTEXT, 0, 0, 2, 13, 13, 1, N_("Video output:"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 2, 14, 19, 1, N_("Autozoom enabled"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 2, 15, 16, 1, N_("Integer coefs"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 2, 16, 13, 1, N_("Fixed size"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 2, 17, 22, 1, N_("SingleBlitComposing"), 0 }, { SGCHECKBOX, SG_SELECTABLE, 0, 2, 18, 20, 1, N_("SingleBlitRefresh"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 25, 14, 10, 1, N_("640x480"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 25, 15, 10, 1, N_("800x600"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 25, 16, 11, 1, N_("1024x768"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, SG_SELECTED, 25, 17, 12, 1, N_("1280x1024"), 0 }, { SGRADIOBUT, SG_SELECTABLE|SG_RADIO, 0, 25, 18, 11, 1, N_("Custom"), 0 }, { SGTEXT, 0, 0, 28, 19, 6, 1, N_("Width:"), 0 }, { SGEDITFIELD, 0, 0, 35, 19, 4, 1, video_width, 0 }, { SGTEXT, 0, 0, 28, 20, 7, 1, N_("Height:"), 0 }, { SGEDITFIELD, 0, 0, 35, 20, 4, 1, video_height, 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_DEFAULT, 0, 6, 22, 8, 1, N_("Apply"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 29, 22, 8, 1, N_("Cancel"), 0 }, { -1, 0, 0, 0, 0, 0, 0, NULL, 0 } }; #endif #if defined(SDLGUI_INCLUDE_HOSTFSDLG) || defined(SDLGUI_INCLUDE_ALL) enum HOSTFSDLG { HOSTFSDLG_FIRSTDRIVE = 3, HOSTFSDLG_FIRSTENTRY = 18 /* max len 53 */, HOSTFSDLG_LASTENTRY = 32 /* max len 53 */, HOSTFSDLG_FIRSTCASE = 33, HOSTFSDLG_LASTCASE = 47, HOSTFSDLG_UP = 49, HOSTFSDLG_DOWN = 50, HOSTFSDLG_FIRSTCLEAR = 51, HOSTFSDLG_LASTCLEAR = 65, HOSTFSDLG_OKAY = 66, HOSTFSDLG_CANCEL = 67, HELP = 68 }; static SGOBJ hostfsdlg[] = { { SGBOX, SG_BACKGROUND, 0, 0, 0, 76, 23, NULL, 0 }, { SGTEXT, 0, 0, 31, 1, 15, 1, N_("Host Filesystem"), 0 }, { SGBOX, 0, 0, 1, 3, 74, 15, NULL, 0 }, { SGTEXT, 0, 0, 2, 3, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 2, 4, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 2, 5, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 2, 6, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 2, 7, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 2, 8, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 2, 9, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 2, 10, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 2, 11, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 2, 12, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 2, 13, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 2, 14, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 2, 15, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 2, 16, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 2, 17, 2, 1, N_("A:"), 0 }, { SGTEXT, 0, 0, 5, 3, 53, 1, dlgfilenames[0], 0 }, { SGTEXT, 0, 0, 5, 4, 53, 1, dlgfilenames[1], 0 }, { SGTEXT, 0, 0, 5, 5, 53, 1, dlgfilenames[2], 0 }, { SGTEXT, 0, 0, 5, 6, 53, 1, dlgfilenames[3], 0 }, { SGTEXT, 0, 0, 5, 7, 53, 1, dlgfilenames[4], 0 }, { SGTEXT, 0, 0, 5, 8, 53, 1, dlgfilenames[5], 0 }, { SGTEXT, 0, 0, 5, 9, 53, 1, dlgfilenames[6], 0 }, { SGTEXT, 0, 0, 5, 10, 53, 1, dlgfilenames[7], 0 }, { SGTEXT, 0, 0, 5, 11, 53, 1, dlgfilenames[8], 0 }, { SGTEXT, 0, 0, 5, 12, 53, 1, dlgfilenames[9], 0 }, { SGTEXT, 0, 0, 5, 13, 53, 1, dlgfilenames[10], 0 }, { SGTEXT, 0, 0, 5, 14, 53, 1, dlgfilenames[11], 0 }, { SGTEXT, 0, 0, 5, 15, 53, 1, dlgfilenames[12], 0 }, { SGTEXT, 0, 0, 5, 16, 53, 1, dlgfilenames[13], 0 }, { SGTEXT, 0, 0, 5, 17, 53, 1, dlgfilenames[14], 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 3, 12, 1, N_("Case Sens"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 4, 12, 1, N_("Case Sens"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 5, 12, 1, N_("Case Sens"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 6, 12, 1, N_("Case Sens"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 7, 12, 1, N_("Case Sens"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 8, 12, 1, N_("Case Sens"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 9, 12, 1, N_("Case Sens"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 10, 12, 1, N_("Case Sens"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 11, 12, 1, N_("Case Sens"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 12, 12, 1, N_("Case Sens"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 13, 12, 1, N_("Case Sens"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 14, 12, 1, N_("Case Sens"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 15, 12, 1, N_("Case Sens"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 16, 12, 1, N_("Case Sens"), 0 }, { SGCHECKBOX, SG_SELECTABLE|SG_EXIT, 0, 61, 17, 12, 1, N_("Case Sens"), 0 }, { SGBOX, 0, 0, 74, 3, 1, 15, NULL, 0 }, { SGBUTTON, SG_SELECTABLE|SG_TOUCHEXIT, 0, 74, 3, 1, 1, "\001", SG_SHORTCUT_UP }, { SGBUTTON, SG_SELECTABLE|SG_TOUCHEXIT, 0, 74, 17, 1, 1, "\002", SG_SHORTCUT_DOWN }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 3, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 4, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 5, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 6, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 7, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 8, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 9, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 10, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 11, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 12, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 13, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 14, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 15, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 16, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_SMALLTEXT, 0, 59, 17, 1, 1, N_("X"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_DEFAULT, 0, 54, 21, 8, 1, N_("OK"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 67, 21, 8, 1, N_("Cancel"), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, 2, 21, 8, 1, N_("Help"), 0 }, { -1, 0, 0, 0, 0, 0, 0, NULL, 0 } }; #endif #if defined(SDLGUI_INCLUDE_NOHOSTFSDLG) || defined(SDLGUI_INCLUDE_ALL) enum NOHOSTFSDLG { box_main = 0, OK = 6 }; static SGOBJ nohostfsdlg[] = { { SGBOX, SG_BACKGROUND, 0, 0, 0, 53, 11, NULL, 0 }, { SGTEXT, 0, 0, 18, 1, 17, 1, N_("NO HOSTFS SUPPORT"), 0 }, { SGTEXT, 0, 0, 2, 3, 50, 1, N_("Aranym has been compiled without HOSTFS support,"), 0 }, { SGTEXT, 0, 0, 2, 4, 49, 1, N_("if you want to have HOSTFS support in Aranym you"), 0 }, { SGTEXT, 0, 0, 2, 5, 49, 1, N_("need to compile Aranym again with --enable-hostfs"), 0 }, { SGTEXT, 0, 0, 2, 6, 34, 1, N_("when running the configure script."), 0 }, { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_DEFAULT, 0, 24, 9, 6, 1, N_("OK"), 0 }, { -1, 0, 0, 0, 0, 0, 0, NULL, 0 } }; #endif aranym-1.1.0/src/gui-sdl/sdlgui.rso0000664000175000017500000001464213454637621015357 0ustar joyjoyRSOHJ  H\CONVERT.RSCHYPVIEW\DOC\EN\IMGES?V(y*_VERT\RSH\CONVERT.RSCHYPVIEW\DOC\EN\IMGES?V(y*ׄ8CrZ}CMAINDLGbox_main box_setupABOUTDISCSHOTKEYSKEYBOARDOSVIDEONETWORK PARTITIONS USB text_conffile LOAD SAVEHOSTFS text_main box_hotkeys WARMREBOOT COLDREBOOT FULLSCREENSHUTDOWN SCREENSHOTCLOSE text_hotkeysHELPDISCDLGbox_main box_floppy FLP_BROWSEFLP_PATH floppy_path FLP_CLEAR text_floppy spacer_mount FLOPPY_MOUNTbox_ide0 IDE0_BROWSE IDE0_PATH IDE0_PRESENT IDE0_CDROM IDE0_READONLY IDE0_BYTESWAP text_geom0 text_cyls0IDE0_CYLide0_cyl text_heads0 IDE0_HEAD ide0_head text_spts0IDE0_SECide0_spt text_size0 IDE0_SIZE ide0_size text_size0mb IDE0_GENERATE IDE0_CLEAR text_ide0 spacer_name0 IDE0_NAME ide0_name IDE0_MOUNTbox_ide1 IDE1_BROWSE! IDE1_PATH" IDE1_PRESENT# IDE1_CDROM$ IDE1_READONLY% IDE1_BYTESWAP& text_geom1' text_cyls1(IDE1_CYLide1_cyl) text_heads1* IDE1_HEAD ide1_head+ text_spts1,IDE1_SECide1_spt- text_size1. IDE1_SIZE ide1_size0 IDE1_GENERATE1 IDE1_CLEAR2 text_ide13 spacer_name14 IDE1_NAME ide1_name5 IDE1_MOUNT6HELP7APPLY8CANCELFSDLG SGFSDLG_PATHdlgpathSGFSDLG_FILENAMEdlgfname SGFSDLG_UPDIRSGFSDLG_ROOTDIR SGFSDLG_UP SGFSDLG_DOWN SGFSDLG_FIRSTENTRYdlgfilenames[0] dlgfilenames[1]dlgfilenames[2]dlgfilenames[3]dlgfilenames[4]dlgfilenames[5]dlgfilenames[6]dlgfilenames[7]dlgfilenames[8]dlgfilenames[9]dlgfilenames[10]dlgfilenames[11]dlgfilenames[12]dlgfilenames[13]SGFSDLG_LASTENTRYdlgfilenames[14] SGFSDLG_OKAYSGFSDLG_CANCEL HOTKEYSDLGbox_main box_hotkeysSETUP setup_key key_setupQUITquit_keykey_quit WARMREBOOTwarmreboot_keykey_warmreboot COLDREBOOT coldreboot_keykey_coldreboot UNGRAB ungrab_key key_ungrab DEBUG debug_key key_debug SCREENSHOTscreenshot_keykey_screenshot FULLSCREENfullscreen_keykey_fullscreenSOUND sound_key key_sound label_hotkeysHELPAPPLYCANCEL KEYBOARDDLGbox_main box_wheel ARROWKEYSEIFFEL text_wheel box_altgr ATARI_ALT MILAN_ALTGR text_altgr APPLY CANCEL PRESSKEYDLGbox_main label_key NETWORKDLGbox_main eth0_type ETH0_TUNNELeth[0].config.tunnel ETH0_TYP_NONE ETH0_TYP_PTPETH0_TYP_BRIDGEeth0_hipETH0_HIPeth[0].config.ip_hosteth0_aip ETH0_AIPeth[0].config.ip_atari eth0_mask ETH0_MASKeth[0].config.netmask eth0_mac ETH0_MACeth[0].config.mac_addr eth1_type ETH1_TUNNELeth[1].config.tunnel ETH1_TYP_NONE ETH1_TYP_PTPETH1_TYP_BRIDGEeth1_hipETH1_HIPeth[1].config.ip_hosteth1_aipETH1_AIPeth[1].config.ip_atari eth1_mask ETH1_MASKeth[1].config.netmasketh1_macETH1_MACeth[1].config.mac_addrAPPLYCANCELOSDLGbox_main box_wheel MCH_TOS_PATHtos_pathMCH_TOS_BROWSEMCH_EMUTOS_BROWSEMCH_EMUTOS_PATH emutos_path MCH_TOS_CLEARMCH_EMUTOS_CLEAR TOSCONSOLE text_mch MCH_ARANYM MCH_FALCON APPLYCANCEL text_wheel SNAPSHOT_DIRsnapshot_dir_display PARTITIONDLGbox_mainheader box_part0 PART0_BROWSE PART0_PATHtext_id0PART0_ID part_id[0] PART0_PRESENTPART0_READONLY PART0_BYTESWAP text_size0 PART0_SIZE part_size[0] text_size0mb PART0_GENERATE PART0_CLEAR box_part1 PART1_BROWSE PART1_PATHtext_id1PART1_ID part_id[1] PART1_PRESENTPART1_READONLYPART1_BYTESWAP text_size1 PART1_SIZE part_size[1] text_size1mbPART1_GENERATE PART1_CLEAR box_part2 PART2_BROWSE PART2_PATHtext_id2 PART2_ID part_id[2]! PART2_PRESENT"PART2_READONLY#PART2_BYTESWAP$ text_size2% PART2_SIZE part_size[2]& text_size2mb'PART2_GENERATE( PART2_CLEAR) box_part3* PART3_BROWSE+ PART3_PATH,text_id3-PART3_ID part_id[3]. PART3_PRESENT/PART3_READONLY0PART3_BYTESWAP1 text_size32 PART3_SIZE part_size[3]3 text_size3mb4PART3_GENERATE5 PART3_CLEAR6text_ide7MAP_IDE08MAP_IDE19HELP:APPLY;CANCEL NOUSBDLGbox_main usb_text0 usb_text1 usb_text2 usb_text3 usb_text4 usb_text5OK USBDLGbox_mainbox_usb usb_desc0 product[0] usb_desc1 product[1] usb_desc2 product[2] usb_desc3 product[3] usb_desc4 product[4] usb_desc5 product[5] usb_desc6 product[6] usb_desc7 product[7] usb_desc8 product[8] CONNECTED_0 CONNECTED_1 CONNECTED_2 CONNECTED_3 CONNECTED_4 CONNECTED_5 CONNECTED_6 CONNECTED_7 CONNECTED_8PLUG_0PLUG_1PLUG_2PLUG_3PLUG_4PLUG_5PLUG_6PLUG_7PLUG_8SLIDEBAR USBHOSTDLG_UPUSBHOSTDLG_DOWN text_usb!GET_DEVICE_LIST"OK VIDEODLGbox_maintext_fullscreen FULLSCREENWINDOWtext_frameskip FRAMESKIP_0 FRAMESKIP_1 FRAMESKIP_2 FRAMESKIP_5 FRAMESKIP_10 FRAMESKIP_50 text_monitor MONITOR_NV MONITOR_VGA MONITOR_TVtext_colordepth COLORDEPTH_NV COLORDEPTH_1 COLORDEPTH_2 COLORDEPTH_4 COLORDEPTH_8 COLORDEPTH_16 text_autozoom AUTOZOOM_ON AZ_INTEGER AZ_FIXEDSIZESINGLE_BLIT_COMPOSINGSINGLE_BLIT_REFRESHRES_640RES_800RES_1024RES_1280 RES_CUSTOM!text_rw" RES_WIDTH video_width#text_rh$ RES_HEIGHT video_height%APPLY&CANCEL  HOSTFSDLGHOSTFSDLG_FIRSTDRIVEHOSTFSDLG_FIRSTENTRYdlgfilenames[0]dlgfilenames[1]dlgfilenames[2]dlgfilenames[3]dlgfilenames[4]dlgfilenames[5]dlgfilenames[6]dlgfilenames[7]dlgfilenames[8]dlgfilenames[9]dlgfilenames[10]dlgfilenames[11]dlgfilenames[12]dlgfilenames[13] HOSTFSDLG_LASTENTRYdlgfilenames[14]!HOSTFSDLG_FIRSTCASE/HOSTFSDLG_LASTCASE1 HOSTFSDLG_UP2HOSTFSDLG_DOWN3HOSTFSDLG_FIRSTCLEARAHOSTFSDLG_LASTCLEARBHOSTFSDLG_OKAYCHOSTFSDLG_CANCELDHELP  NOHOSTFSDLGbox_mainOK     aranym-1.1.0/src/gui-sdl/sdlgui.rsc0000664000175000017500000004341413454637621015342 0ustar joyjoy$FJG AboutDisksHotkeysKeyboard + mouseOperating SystemVideoNetworkingPartitionsUSBConfig file:LoadSaveHost Filesystem  ARAnyM Setup  Warm-RebootCold-RebootFullscreenShutdownScreenshotClose Quick Access Buttons HelpPath:X Floppy disk A: EjectPath:Presentis CDROMReadOnlyByteSwapGeometryCylinders: 0_____9Heads: 0__9Sectors per track: 0___9Disk Size: 0______9MBGenerate Disk ImageX Hard disk IDE0: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@________________________________________XInsertPath:Presentis CDROMReadOnlyByteSwapGeometryCylinders: 0_____9Heads: 0__9Sectors per track: 0___9Disk Size: 0______9MBGenerate Disk ImageX Hard disk IDE1: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@________________________________________XInsertHelpApplyCancelChoose a fileFolder:File:../.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................OKCancelSetupPause QuitLS+Pause Warm-RebootLC+Pause Cold-RebootLC+LS+Pause UngrabLS+LC+LA+Escape DebugLA+Pause ScreenshotPrintScreen FullscreenScrollLock Sound on/off Hotkeys Editor HelpApplyCancelArrow keysEiffel scancodes Host mouse wheel Atari AltMilan AltGr Host AltGr key ApplyCancelPress a keyETH0:_____XNoneP-t-pBridgeHost IP:_______________XAtari IP:_______________XNetmask:_______________XMAC addr:_________________XETH1:_____XNoneP-t-pBridgeHost IP:_______________XAtari IP:_______________XNetmask:_______________XMAC addr:_________________XApplyCancelTOS:EmuTOS:XXBIOS CON: output redirected to Host stdout_MCH Cookie value:ARAnyMFalconApplyCancel TOS images TOS patches ...................................................................... Screenshot Directory XHDI Direct Access to Host Disk PartitionsSCSI0:PartID:BGM___XPresentReadOnlyByteSwapSize:______9MBCreateXSCSI1:PartID:BGM___XPresentReadOnlyByteSwapSize:______9MBCreateXSCSI2:PartID:BGM___XPresentReadOnlyByteSwapSize:______9MBCreateXSCSI3:PartID:BGM___XPresentReadOnlyByteSwapSize:______9MBCreateXMap IDE disk drives as XHDI IDE:IDE0 (Master)IDE1 (Slave)HelpApplyCancelNO USB SUPPORTAranym has been compiled without USB support,if you want to have USB support in Aranymyou need libusb for your platform andcompile Aranym again with --enable-usbhostwhen running the configure script.OK.......................................................................................................................................................................................................................................................................................CONNECTEDCONNECTEDCONNECTEDCONNECTEDCONNECTEDCONNECTEDCONNECTEDCONNECTEDCONNECTEDPlug/UnplugPlug/UnplugPlug/UnplugPlug/UnplugPlug/UnplugPlug/UnplugPlug/UnplugPlug/UnplugPlug/Unplug USB Devices Get new listOKARAnyM:Fullscreenin a WindowVIDEL:50 FPS25 FPS17 FPS10 FPS 5 FPS 1 FPSMonitor:VGATVBoot Depth:2 colors4 colors16 colors256 colorsTrueColorVideo output:Autozoom enabledInteger coefsFixed sizeSingleBlitComposingSingleBlitRefresh640x480800x6001024x7681280x1024CustomWidth:____9Height:____9ApplyCancelHost FilesystemA:A:A:A:A:A:A:A:A:A:A:A:A:A:A:...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................Case SensCase SensCase SensCase SensCase SensCase SensCase SensCase SensCase SensCase SensCase SensCase SensCase SensCase SensCase SensXXXXXXXXXXXXXXXOKCancelHelpNO HOSTFS SUPPORTAranym has been compiled without HOSTFS support,if you want to have HOSTFS support in Aranym youneed to compile Aranym again with --enable-hostfswhen running the configure script.OKou{B)) 3\))H01H2z{H|HHXYHZHH67H8HHH^_H`HH%?@Mghu  " # 1 L M    / ; K [ f v      # 3 > N ^ j |  $ k lG         ! C J Q f g h q u y    +,6-cd6e66  6 CD6E{|6}66#$6%[\6]666;<6L,$*08I Z ` k v z     ,      %  8LJ>G)+  J 1 7> @8>  A@@> @I> @R> [d  }"& 8 ( G;D(DB2 1J!K"Q>#@R> $A@Z> %@c> &@l> 'u(~  )`*+|",&-8. / 01G34;5(6^B7e8j6%pBLw JDCH J I E E GG$G@G\GxGGGG G G  G< GX GtG%0.*   A  i          8  T $ p N  _ d% j$ * &A q @ | &A  @      %    , @ A @ !    1    ]        @  A  @ !  4  P 5l `  % MJ <   < G G  J  A -   A  @   7 C    JF m;L *J > @   @   @ &   3 8  ? B GJ > 0@ #  @ + @ 4&  =3L8 S? VB ]G)( J _h>  i!"@ {  #@  $@ & % 3&8' ?( B G6*5J+ ,>- ./@  0@  1@ & 2 3384?5B) G7 8I0$9I>6:K;P6%VB0 ]l-,,,!"'D "@ <Gg    ' G g"  q" {" " " " " " " , , , , , ,  , , !, ;A-A/!1 "?%L+&*O@W  Abn@u A| @  @  @  @    A  @ @  A @ @ @ @ @  @ @@) @4@H@Z @b @j  As !@} "##$%,#&%DLBAJ          H5d555555 5(5D 5` 5| 5 5  5!5"A@=< #A@G< $A@Q< %A@[< &A@e< 'A@o< (A@y< )A@< *A@< +A@< ,A@< -A@< .A@< /A@< 0A@< 312I2E0E4:5:6:7:8:9:::;:<:=: >: ?: @: A: :C6DC%5 2I1{1"' "D'*T,--02d88< ?F,aranym-1.1.0/src/gui-sdl/sdlgui.h0000664000175000017500000000753013454637621015001 0ustar joyjoy/* Hatari This file is distributed under the GNU Public License, version 2 or at your option any later version. Read the file gpl.txt for details. Header for the tiny graphical user interface for Hatari. */ #ifndef _SDLGUI_H #define _SDLGUI_H #include "host.h" #include "SDL_compat.h" class HostSurface; class Dialog; enum { SGBOX, SGTEXT, SGEDITFIELD, SGBUTTON, SGRADIOBUT, SGCHECKBOX, SGPOPUP, SGSCROLLBAR }; /* Object flags: */ #define SG_TOUCHEXIT 0x0001 /* Exit immediately when mouse button is pressed down */ #define SG_EXIT 0x0002 /* Exit when mouse button has been pressed (and released) */ #define SG_BUTTON_RIGHT 0x0004 /* Text is aligned right */ #define SG_DEFAULT 0x0008 /* Marks a default button, selectable with Enter & Return keys */ #define SG_CANCEL 0x0010 /* Marks a cancel button, selectable with ESC key */ #define SG_SHORTCUT 0x0020 /* Marks a shortcut button, selectable with masked letter */ #define SG_SELECTABLE 0x0100 #define SG_BACKGROUND 0x0200 #define SG_RADIO 0x0400 #define SG_SMALLTEXT 0x0800 /* Object states: */ #define SG_SELECTED 0x0001 #define SG_MOUSEDOWN 0x0002 #define SG_FOCUSED 0x0004 /* Marks an object that has selection focus */ #define SG_WASFOCUSED 0x0008 /* Marks an object that had selection focus & its bg needs redraw */ #define SG_HIDDEN 0x0100 #define SG_DISABLED 0x0200 /* special shortcut keys, something that won't conflict with text shortcuts */ #define SG_SHORTCUT_LEFT '<' #define SG_SHORTCUT_RIGHT '>' #define SG_SHORTCUT_UP '^' #define SG_SHORTCUT_DOWN '|' /* Special characters: */ #define SGARROWUP 1 #define SGARROWDOWN 2 #define SGFOLDER 5 typedef struct { int type; /* What type of object */ int flags; /* Object flags */ int state; /* Object state */ int x, y; /* The offset to the upper left corner */ unsigned int w, h; /* Width and height (for scrollbar : height and position) */ const char *txt; /* Text string */ int shortcut; /* shortcut key */ } SGOBJ; typedef struct { int object; int position; Uint32 blink_counter; bool blink_state; } cursor_state; enum { SG_FIRST_EDITFIELD, SG_PREVIOUS_EDITFIELD, SG_NEXT_EDITFIELD, SG_LAST_EDITFIELD }; bool SDLGui_Init(void); int SDLGui_UnInit(void); int SDLGui_DoDialog(SGOBJ *dlg); int SDLGui_PrepareFont(void); void SDLGui_FreeFont(void); int SDLGui_FileSelect(char *path_and_name, bool bAllowNew); SDL_Rect *SDLGui_GetFirstBackgroundRect(void); SDL_Rect *SDLGui_GetNextBackgroundRect(void); #define STATUS_REBOOT 1 #define STATUS_SHUTDOWN 2 int GUImainDlg(); typedef enum { ALERT_OK, ALERT_OKCANCEL } alert_type; extern bool SDLGui_Alert(const char *, alert_type type); void SDLGui_setGuiPos(int guix, int guiy); HostSurface *SDLGui_getSurface(void); /* dlgHotkeys.cpp */ /* stuff needed by dialog.cpp */ int SDLGui_FindEditField(SGOBJ *dlg, int objnum, int mode); void SDLGui_DrawDialog(SGOBJ *dlg); int SDLGui_FindObj(SGOBJ *dlg, int fx, int fy); bool SDLGui_UpdateObjState(SGOBJ *dlg, int clicked_obj, int original_state, int x, int y); void SDLGui_SelectRadioObject(SGOBJ *dlg, int clicked_obj); void SDLGui_ClickEditField(SGOBJ *dlg, cursor_state *cursor, int clicked_obj, int x); void SDLGui_DrawObject(SGOBJ *dlg, int objnum); void SDLGui_RefreshObj(SGOBJ *dlg, int objnum); int SDLGui_FindDefaultObj(SGOBJ *dlg); void SDLGui_MoveCursor(SGOBJ *dlg, cursor_state *cursor, int mode); void SDLGui_DeselectButtons(SGOBJ *dlg); void SDLGui_DeselectAndRedraw(SGOBJ *dlg, int obj); int SDLGui_TextLen(const char *txt); int SDLGui_ByteLen(const char *txt, int pos); int SDLGui_DoEvent(const SDL_Event &event); void SDLGui_Open(Dialog *new_dlg); void SDLGui_Close(void); bool SDLGui_isClosed(void); #endif /* _SDLGUI_H */ aranym-1.1.0/src/gui-sdl/sdlgui.cpp0000664000175000017500000011431313454637621015332 0ustar joyjoy/* * sdlgui.cpp - a GEM like graphical user interface * * Copyright (c) 2001 Thomas Huth - taken from his hatari project * Copyright (c) 2002-2007 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "sdlgui.h" #include "file.h" #include "tools.h" #include "host_surface.h" #include "hostscreen.h" #include "host.h" #include "main.h" #include "maptab.h" #ifdef OS_darwin #include #endif #include #include #include "font.h" #include "fontsmall.h" #include "dialog.h" #include "dlgMain.h" #include "dlgAlert.h" #define DEBUG 0 #include "debug.h" #define sdlscrn gui_surf static SDL_Surface *fontgfx=NULL; static SDL_Surface *fontgfxsmall=NULL; /* layout of the converted surface */ #define FONTCOLS 128 #define FONTROWS ((FONTCHARS + FONTCOLS - 1) / FONTCOLS) static std::stack dlgStack; /* gui surface */ static HostSurface *gui_hsurf = NULL; static SDL_Surface *gui_surf = NULL; static int gui_x = 0, gui_y = 0; /* gui position */ /* current dialog to draw */ static Dialog *gui_dlg = NULL; static SDL_Color gui_palette[4] = { {0,0,0,255}, {128,128,128,255}, {192,192,192, 255}, {255, 255, 255, 255} }; enum { blackc = 0, darkgreyc, greyc, whitec }; /* the glyph to display for undefined characters */ #define REPLACEMENT_GLYPH 0x6ff // Stores current dialog coordinates static SDL_Rect DialogRect = {0, 0, 0, 0}; #if 0 // Used by SDLGui_Get[First|Next]BackgroundRect() static SDL_Rect BackgroundRect = {0, 0, 0, 0}; static int BackgroundRectCounter; enum { SG_BCKGND_RECT_BEGIN, SG_BCKGND_RECT_TOP, SG_BCKGND_RECT_LEFT, SG_BCKGND_RECT_RIGHT, SG_BCKGND_RECT_BOTTOM, SG_BCKGND_RECT_END }; #endif /* Special characters: */ /* * These are used for radio & checkboxes. * Each graphic is composed of two characters, * which are encoded as 0x600-0x0607 so they * don't conflict with any other character. */ static char const SGCHECKBOX_RADIO_NORMAL[4] = { '\330', '\200', '\330', '\201' }; static char const SGCHECKBOX_RADIO_SELECTED[4] = { '\330', '\202', '\330', '\203' }; static char const SGCHECKBOX_NORMAL[4] = { '\330', '\204', '\330', '\205' }; static char const SGCHECKBOX_SELECTED[4] = { '\330', '\206', '\330', '\207' }; /*-----------------------------------------------------------------------*/ /* Load an 1 plane XBM into a 8 planes SDL_Surface. */ static SDL_Surface *SDLGui_LoadXBM(const Uint8 *srcbits, int width, int height, int form_width) { SDL_Surface *bitmap; Uint8 *dstbits; int ascii; /* Allocate the bitmap */ bitmap = SDL_CreateRGBSurface(SDL_SWSURFACE, FONTCOLS * width, FONTROWS * height, 8, 0, 0, 0, 0); if ( bitmap == NULL ) { panicbug("Couldn't allocate bitmap: %s", SDL_GetError()); return(NULL); } dstbits = (Uint8 *)bitmap->pixels; /* Copy the pixels */ for (ascii = 0; ascii < FONTCHARS; ascii++) { int y0 = ascii / FONTCOLS; int x0 = ascii % FONTCOLS; int x, y; for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { int off = ascii * width + x; int bit = off & 7; dstbits[(y0 * height + y) * bitmap->pitch + x0 * width + x] = (srcbits[(off >> 3) + y * form_width] & (0x80 >> bit)) ? 1 : 0; } } } return bitmap; } /*-----------------------------------------------------------------------*/ /* Initialize the GUI. */ bool SDLGui_Init() { // Load the font graphics char font_filename[256]; unsigned char font_data_buffer[FONTHEIGHT * FORM_WIDTH]; getConfFilename("font", font_filename, sizeof(font_filename)); FILE *f = fopen(font_filename, "rb"); const unsigned char *font_data = NULL; if (f != NULL) { if (fread(font_data_buffer, 1, sizeof(font_data_buffer), f) == sizeof(font_data_buffer)) { font_data = font_data_buffer; } fclose(f); } // If font can't be loaded use the internal one if (font_data == NULL) { font_data = font_bits; } fontgfx = SDLGui_LoadXBM(font_data, FONTWIDTH, FONTHEIGHT, FORM_WIDTH); if (fontgfx == NULL) { panicbug("Could not create font data"); panicbug("ARAnyM GUI will not be available"); return false; } fontgfxsmall = SDLGui_LoadXBM(fontsmall_bits, FONTSMALLWIDTH, FONTSMALLHEIGHT, FORMSMALL_WIDTH); gui_hsurf = host->video->createSurface(76*8+16,25*16+16,8); if (!gui_hsurf) { panicbug("Could not create surface for GUI"); panicbug("ARAnyM GUI will not be available"); return false; } gui_surf = gui_hsurf->getSdlSurface(); gui_hsurf->setPalette(gui_palette, 0, 4); // gui_hsurf->setParam(HostSurface::SURF_ALPHA, bx_options.opengl.gui_alpha); // gui_hsurf->setParam(HostSurface::SURF_USE_ALPHA, 1); /* Set font color 0 as transparent */ SDL_SetColorKey(fontgfx, SDL_SRCCOLORKEY, 0); if (fontgfxsmall) SDL_SetColorKey(fontgfxsmall, SDL_SRCCOLORKEY, 0); #if 0 /* for testing */ #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_SetPaletteColors(fontgfx->format->palette, &gui_palette[whitec], 0, 1); SDL_SetPaletteColors(fontgfx->format->palette, &gui_palette[blackc], 1, 1); #else SDL_SetColors(fontgfx, &gui_palette[whitec], 0, 1); SDL_SetColors(fontgfx, &gui_palette[blackc], 1, 1); #endif SDL_SaveBMP(fontgfx, "aranym-font.bmp"); #endif return true; } /*-----------------------------------------------------------------------*/ /* Uninitialize the GUI. */ int SDLGui_UnInit() { if (gui_hsurf) { host->video->destroySurface(gui_hsurf); gui_hsurf = NULL; } if (fontgfx) { SDL_FreeSurface(fontgfx); fontgfx = NULL; } if (fontgfxsmall) { SDL_FreeSurface(fontgfxsmall); fontgfxsmall = NULL; } return 0; } /*-----------------------------------------------------------------------*/ /* Compute real coordinates for a given object. Note: centers dialog on screen. */ static void SDLGui_ObjCoord(SGOBJ *dlg, int objnum, SDL_Rect *rect) { rect->x = dlg[objnum].x * FONTWIDTH; rect->y = dlg[objnum].y * FONTHEIGHT; if (dlg[objnum].flags & SG_SMALLTEXT) { rect->w = dlg[objnum].w * FONTSMALLWIDTH; rect->h = dlg[objnum].h * FONTSMALLHEIGHT; rect->y += 3; } else { rect->w = dlg[objnum].w * FONTWIDTH; rect->h = dlg[objnum].h * FONTHEIGHT; } rect->x += (sdlscrn->w - (dlg[0].w * FONTWIDTH)) / 2; rect->y += (sdlscrn->h - (dlg[0].h * FONTHEIGHT)) / 2; } /*-----------------------------------------------------------------------*/ /* Compute real coordinates for a given object. This one takes borders into account and give coordinates as seen by user */ void SDLGui_ObjFullCoord(SGOBJ *dlg, int objnum, SDL_Rect *coord) { SDLGui_ObjCoord(dlg, objnum, coord); switch (dlg[objnum].type) { case SGBOX: case SGBUTTON: { // Take border into account int border_size; if (dlg[objnum].flags & SG_SELECTABLE) { if (dlg[objnum].flags & SG_DEFAULT) border_size = 4; else border_size = 3; } else { if (dlg[objnum].flags & SG_BACKGROUND) border_size = 6; else border_size = 5; } coord->x -= border_size; coord->y -= border_size; coord->w += (border_size * 2); coord->h += (border_size * 2); } break; case SGEDITFIELD: // Allow one more pixel to the right for cursor coord->w += 1; // There is a line below coord->h += 1; break; } } /*-----------------------------------------------------------------------*/ /* Refresh display at given coordinates. Unlike SDL_UpdateRect() this function can eat coords that goes beyond screen boundaries. "rect" will be modified to represent the area actually refreshed. */ void SDLGui_UpdateRect(SDL_Rect *rect) { if (rect->x < 0) { rect->w += rect->x; rect->x = 0; } if ((rect->x + rect->w) > sdlscrn->w) rect->w = (sdlscrn->w - rect->x); if (rect->y < 0) { rect->h += rect->y; rect->y = 0; } if ((rect->y + rect->h) > sdlscrn->h) rect->h = (sdlscrn->h - rect->y); if ((rect->w > 0) && (rect->h > 0)) { #if SDL_VERSION_ATLEAST(2, 0, 0) host->video->refreshScreenFromSurface(sdlscrn); #else SDL_UpdateRects(sdlscrn, 1, rect); #endif } else { rect->x = 0; rect->y = 0; rect->w = 0; rect->h = 0; } } /*-----------------------------------------------------------------------*/ /* Maps an SDL_Color to the screen format. */ Uint32 SDLGui_MapColor(int color) { return SDL_MapRGB(sdlscrn->format, gui_palette[color].r, gui_palette[color].g, gui_palette[color].b); } /*-----------------------------------------------------------------------*/ /* Refresh display to reflect an object change. */ void SDLGui_RefreshObj(SGOBJ *dlg, int objnum) { SDL_Rect coord; SDLGui_ObjFullCoord(dlg, objnum, &coord); SDLGui_UpdateRect(&coord); } static unsigned short *host_to_atari(const char *src) { #ifdef OS_darwin /* MacOSX uses decomposed strings, normalize them first */ CFMutableStringRef theString = CFStringCreateMutable(NULL, 0); CFStringAppendCString(theString, src, kCFStringEncodingUTF8); CFStringNormalize(theString, kCFStringNormalizationFormC); UniChar ch; CFIndex idx; CFIndex len = CFStringGetLength(theString); unsigned short *dst, *res; size_t count = strlen(src); res = (unsigned short *)malloc((count + 1) * sizeof(*res)); dst = res; idx = 0; while (idx < len ) { ch = CFStringGetCharacterAtIndex(theString, idx); if (ch >= FONTCHARS || (ch >= 0x80 && ch < 0xa0)) { ch = REPLACEMENT_GLYPH; } else if (ch >= FONTCHARS) { ch = utf16_to_atari[ch]; if (ch >= FONTCHARS) ch = REPLACEMENT_GLYPH; } *dst++ = ch; idx++; } *dst = '\0'; CFRelease(theString); #else unsigned short ch; size_t bytes; unsigned short *dst, *res; size_t count = strlen(src); res = (unsigned short *)malloc((count + 1) * sizeof(*res)); dst = res; while (*src) { ch = (unsigned char) *src; if (ch < 0x80) { bytes = 1; } else if ((ch & 0xe0) == 0xc0) { ch = ((ch & 0x1f) << 6) | (src[1] & 0x3f); bytes = 2; } else { ch = ((((ch & 0x0f) << 6) | (src[1] & 0x3f)) << 6) | (src[2] & 0x3f); bytes = 3; } if (ch >= FONTCHARS || (ch >= 0x80 && ch < 0xa0)) { ch = REPLACEMENT_GLYPH; } else if (ch >= 0x100) { ch = utf16_to_atari[ch]; if (ch >= FONTCHARS) ch = REPLACEMENT_GLYPH; } *dst++ = ch; src += bytes; } *dst = '\0'; #endif return res; } /*-----------------------------------------------------------------------*/ /* Draw a text string. */ void SDLGui_Text(int x, int y, const char *txt, int col) { int i; unsigned short c; SDL_Rect sr, dr; unsigned short *conv; #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_SetPaletteColors(fontgfx->format->palette, &gui_palette[col], 1, 1); #else SDL_SetColors(fontgfx, &gui_palette[col], 1, 1); #endif conv = host_to_atari(txt); for (i = 0; conv[i] != 0; i++) { c = conv[i]; sr.x = FONTWIDTH * (c % FONTCOLS); sr.y = FONTHEIGHT * (c / FONTCOLS); sr.w = FONTWIDTH; sr.h = FONTHEIGHT; dr.x = x + (FONTWIDTH * i); dr.y = y; dr.w = FONTWIDTH; dr.h = FONTHEIGHT; SDL_BlitSurface(fontgfx, &sr, sdlscrn, &dr); } free(conv); } /*-----------------------------------------------------------------------*/ /* Draw a text string, using the smaller font. */ void SDLGui_TextSmall(int x, int y, const char *txt, int col) { int i; unsigned short c; SDL_Rect sr, dr; unsigned short *conv; if (fontgfxsmall == NULL) { SDLGui_Text(x, y, txt, col); return; } #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_SetPaletteColors(fontgfxsmall->format->palette, &gui_palette[col], 1, 1); #else SDL_SetColors(fontgfxsmall, &gui_palette[col], 1, 1); #endif conv = host_to_atari(txt); for (i = 0; conv[i] != 0; i++) { c = conv[i]; sr.x = FONTSMALLWIDTH * (c % FONTCOLS); sr.y = FONTSMALLHEIGHT * (c / FONTCOLS); sr.w = FONTSMALLWIDTH; sr.h = FONTSMALLHEIGHT; dr.x = x + (FONTSMALLWIDTH * i); dr.y = y; dr.w = FONTSMALLWIDTH; dr.h = FONTSMALLHEIGHT; SDL_BlitSurface(fontgfxsmall, &sr, sdlscrn, &dr); } free(conv); } /*-----------------------------------------------------------------------*/ /* * return the number of characters that are displayed */ int SDLGui_TextLen(const char *txt) { unsigned short *conv; int i; conv = host_to_atari(txt); for (i = 0; conv[i] != 0; i++) ; free(conv); return i; } /*-----------------------------------------------------------------------*/ /* * return the number of up to a given character index */ int SDLGui_ByteLen(const char *txt, int pos) { size_t bytes; const char *src = txt; unsigned char ch; while (pos > 0 && *src) { ch = *src; if (ch < 0x80) { bytes = 1; } else if ((ch & 0xe0) == 0xc0 && src[1]) { bytes = 2; } else if (src[1] && src[2]) { bytes = 3; } else { bytes = 1; } src += bytes; pos--; } return (int)(src - txt); } /*-----------------------------------------------------------------------*/ /* Draw a dialog text object. */ void SDLGui_DrawText(SGOBJ *tdlg, int objnum) { SDL_Rect coord; int textc, backgroundc; if (tdlg[objnum].state & SG_SELECTED) { textc = whitec; backgroundc = darkgreyc; } else if (tdlg[objnum].state & SG_DISABLED) { textc = darkgreyc; backgroundc = greyc; } else { textc = blackc; backgroundc = greyc; } SDLGui_ObjCoord(tdlg, objnum, &coord); SDL_FillRect(sdlscrn, &coord, SDLGui_MapColor(backgroundc)); SDLGui_Text(coord.x, coord.y, tdlg[objnum].txt, textc); } /*-----------------------------------------------------------------------*/ /* Draw a dialog text object. */ void SDLGui_DrawTextSmall(SGOBJ *tdlg, int objnum) { SDL_Rect coord; int textc, backgroundc; if (tdlg[objnum].state & SG_SELECTED) { textc = whitec; backgroundc = darkgreyc; } else if (tdlg[objnum].state & SG_DISABLED) { textc = darkgreyc; backgroundc = greyc; } else { textc = blackc; backgroundc = greyc; } SDLGui_ObjCoord(tdlg, objnum, &coord); SDL_FillRect(sdlscrn, &coord, SDLGui_MapColor(backgroundc)); SDLGui_TextSmall(coord.x, coord.y, tdlg[objnum].txt, textc); } /*-----------------------------------------------------------------------*/ /* Draw an edit field object. */ void SDLGui_DrawEditField(SGOBJ *edlg, int objnum) { SDL_Rect coord; int textc; if (edlg[objnum].state & SG_DISABLED) textc = darkgreyc; else textc = blackc; SDLGui_ObjCoord(edlg, objnum, &coord); coord.w += 1; SDL_FillRect(sdlscrn, &coord, SDLGui_MapColor(greyc)); SDLGui_Text(coord.x, coord.y, edlg[objnum].txt, textc); // Draw a line below. coord.y = coord.y + coord.h; coord.h = 1; SDL_FillRect(sdlscrn, &coord, SDLGui_MapColor(darkgreyc)); } /*-----------------------------------------------------------------------*/ /* Draw or erase cursor. */ void SDLGui_DrawCursor(SGOBJ *dlg, cursor_state *cursor) { if (cursor->object != -1) { SDL_Rect coord; int cursorc; SDLGui_DrawEditField(dlg, cursor->object); if (cursor->blink_state) cursorc = blackc; else cursorc = greyc; SDLGui_ObjCoord(dlg, cursor->object, &coord); coord.x += (cursor->position * FONTWIDTH); coord.w = 1; SDL_FillRect(sdlscrn, &coord, SDLGui_MapColor(cursorc)); SDLGui_RefreshObj(dlg, cursor->object); } } /*-----------------------------------------------------------------------*/ /* Draw a 3D effect around a given rectangle. Rectangle is updated to the full size of the new object. */ void SDLGui_Draw3DAround(SDL_Rect *coord, int upleftc, int downrightc, int cornerc, int width) { SDL_Rect rect; int i; Uint32 upleftcol = SDLGui_MapColor(upleftc); Uint32 downrightcol = SDLGui_MapColor(downrightc); Uint32 cornercol = SDLGui_MapColor(cornerc); for ( i = 1 ; i <= width ; i++) { rect.x = coord->x - i; rect.y = coord->y - i; rect.w = coord->w + (i * 2) - 1; rect.h = 1; SDL_FillRect(sdlscrn, &rect, upleftcol); rect.x = coord->x - i; rect.y = coord->y - i; rect.w = 1; rect.h = coord->h + (i * 2) - 1; SDL_FillRect(sdlscrn, &rect, upleftcol); rect.x = coord->x - i + 1; rect.y = coord->y + coord->h - 1 + i; rect.w = coord->w + (i * 2) - 1; rect.h = 1; SDL_FillRect(sdlscrn, &rect, downrightcol); rect.x = coord->x + coord->w - 1 + i; rect.y = coord->y - i + 1; rect.w = 1; rect.h = coord->h + (i * 2) - 1; SDL_FillRect(sdlscrn, &rect, downrightcol); rect.x = coord->x + coord->w + i - 1; rect.y = coord->y - i; rect.w = 1; rect.h = 1; SDL_FillRect(sdlscrn, &rect, cornercol); rect.x = coord->x - i; rect.y = coord->y + coord->h + i - 1; rect.w = 1; rect.h = 1; SDL_FillRect(sdlscrn, &rect, cornercol); } coord->x -= width; coord->y -= width; coord->w += (width * 2); coord->h += (width * 2); } /*-----------------------------------------------------------------------*/ /* Draw a colored box around a given rectangle. Rectangle is updated to the full size of the new object. */ void SDLGui_DrawBoxAround(SDL_Rect *coord, int color, int width) { SDL_Rect rect; Uint32 col = SDLGui_MapColor(color); rect.x = coord->x - width; rect.y = coord->y - width; rect.w = coord->w + (width * 2); rect.h = width; SDL_FillRect(sdlscrn, &rect, col); rect.x = coord->x - width; rect.y = coord->y - width; rect.w = width; rect.h = coord->h + (width * 2); SDL_FillRect(sdlscrn, &rect, col); rect.x = coord->x + coord->w; rect.y = coord->y - width; rect.w = width; rect.h = coord->h + (width * 2); SDL_FillRect(sdlscrn, &rect, col); rect.x = coord->x - width; rect.y = coord->y + coord->h; rect.w = coord->w + (width * 2); rect.h = width; SDL_FillRect(sdlscrn, &rect, col); coord->x -= width; coord->y -= width; coord->w += (width * 2); coord->h += (width * 2); } /*-----------------------------------------------------------------------*/ /* Draw a 3D box with given attributes. */ void SDLGui_Draw3DBox(SDL_Rect *coord, int backgroundc, int inboxc, int upleftc, int downrightc, int outboxc, int widthbackground, int widthinbox, int width3D1, int width3D2, int widthoutbox) { SDL_Rect rect; // Draw background rect.x = coord->x - widthbackground; rect.y = coord->y - widthbackground*2; rect.w = coord->w + (widthbackground * 2); rect.h = coord->h + (widthbackground*2 * 2); SDL_FillRect(sdlscrn, &rect, SDLGui_MapColor(backgroundc)); // Update coords coord->x -= widthbackground; coord->y -= widthbackground*5/2; coord->w += (widthbackground * 2); coord->h += (widthbackground*5/2 * 2); if (widthinbox > 0) SDLGui_DrawBoxAround(coord, inboxc, widthinbox); if (width3D1 > 0) SDLGui_Draw3DAround(coord, upleftc, downrightc, backgroundc, width3D1); if (width3D2 > 0) SDLGui_Draw3DAround(coord, downrightc, upleftc, backgroundc, width3D2); if (widthoutbox > 0) SDLGui_DrawBoxAround(coord, outboxc, widthoutbox); } /*-----------------------------------------------------------------------*/ /* Draw a dialog box object. */ void SDLGui_DrawBox(SGOBJ *bdlg, int objnum) { SDL_Rect coord; int my_blackc, upleftc, downrightc; SDLGui_ObjCoord(bdlg, objnum, &coord); // Modify box drawing according to object state if (bdlg[objnum].state & SG_DISABLED) my_blackc = darkgreyc; else my_blackc = blackc; if (bdlg[objnum].state & SG_SELECTED) { upleftc = darkgreyc; downrightc = whitec; } else { upleftc = whitec; downrightc = darkgreyc; } // Draw box according to object flags switch (bdlg[objnum].flags & (SG_SELECTABLE | SG_DEFAULT | SG_BACKGROUND)) { case (SG_SELECTABLE | SG_DEFAULT | SG_BACKGROUND): case (SG_SELECTABLE | SG_DEFAULT): SDLGui_Draw3DBox(&coord, greyc, 0, upleftc, downrightc, my_blackc, 1, 0, 1, 0, 2); break; case (SG_SELECTABLE | SG_BACKGROUND): case SG_SELECTABLE: SDLGui_Draw3DBox(&coord, greyc, 0, upleftc, downrightc, my_blackc, 1, 0, 1, 0, 1); break; case (SG_DEFAULT | SG_BACKGROUND): case SG_BACKGROUND: SDLGui_Draw3DBox(&coord, greyc, my_blackc, upleftc, downrightc, darkgreyc, 0, 2, 3, 0, 1); break; case SG_DEFAULT: case 0: SDLGui_Draw3DBox(&coord, greyc, 0, upleftc, downrightc, 0, 3, 0, 1, 1, 0); break; } } /*-----------------------------------------------------------------------*/ /* Draw a normal button. */ void SDLGui_DrawButton(SGOBJ *bdlg, int objnum) { SDL_Rect coord; int x, y; int textc; SDLGui_ObjCoord(bdlg, objnum, &coord); x = coord.x + ((coord.w - (SDLGui_TextLen(bdlg[objnum].txt) * FONTWIDTH)) / 2); y = coord.y + ((coord.h - FONTHEIGHT) / 2); if (bdlg[objnum].state & SG_SELECTED) { x += 1; y += 1; } if (bdlg[objnum].state & SG_DISABLED) textc = darkgreyc; else textc = blackc; SDLGui_DrawBox(bdlg, objnum); SDLGui_Text(x, y, bdlg[objnum].txt, textc); } /*-----------------------------------------------------------------------*/ /* Draw a normal button. */ void SDLGui_DrawButtonSmall(SGOBJ *bdlg, int objnum) { SDL_Rect coord; int x, y; int textc; SDLGui_ObjCoord(bdlg, objnum, &coord); x = coord.x + ((coord.w - (SDLGui_TextLen(bdlg[objnum].txt) * FONTSMALLWIDTH)) / 2); y = coord.y + ((coord.h - FONTSMALLHEIGHT) / 2); if (bdlg[objnum].state & SG_SELECTED) { x += 1; y += 1; } if (bdlg[objnum].state & SG_DISABLED) textc = darkgreyc; else textc = blackc; SDLGui_DrawBox(bdlg, objnum); SDLGui_TextSmall(x, y, bdlg[objnum].txt, textc); } /*-----------------------------------------------------------------------*/ /* Draw a dialog check box object state. */ void SDLGui_DrawCheckBoxState(SGOBJ *cdlg, int objnum) { Uint32 grey = SDLGui_MapColor(greyc); SDL_Rect coord; char str[5]; int textc; SDLGui_ObjCoord(cdlg, objnum, &coord); if (cdlg[objnum].flags & SG_RADIO) { if (cdlg[objnum].state & SG_SELECTED) { str[0]=SGCHECKBOX_RADIO_SELECTED[0]; str[1]=SGCHECKBOX_RADIO_SELECTED[1]; str[2]=SGCHECKBOX_RADIO_SELECTED[2]; str[3]=SGCHECKBOX_RADIO_SELECTED[3]; } else { str[0]=SGCHECKBOX_RADIO_NORMAL[0]; str[1]=SGCHECKBOX_RADIO_NORMAL[1]; str[2]=SGCHECKBOX_RADIO_NORMAL[2]; str[3]=SGCHECKBOX_RADIO_NORMAL[3]; } } else { if (cdlg[objnum].state & SG_SELECTED) { str[0]=SGCHECKBOX_SELECTED[0]; str[1]=SGCHECKBOX_SELECTED[1]; str[2]=SGCHECKBOX_SELECTED[2]; str[3]=SGCHECKBOX_SELECTED[3]; } else { str[0]=SGCHECKBOX_NORMAL[0]; str[1]=SGCHECKBOX_NORMAL[1]; str[2]=SGCHECKBOX_NORMAL[2]; str[3]=SGCHECKBOX_NORMAL[3]; } } str[4]='\0'; if (cdlg[objnum].state & SG_DISABLED) textc = darkgreyc; else textc = blackc; coord.w = FONTWIDTH*2; coord.h = FONTHEIGHT; if (cdlg[objnum].flags & SG_BUTTON_RIGHT) coord.x += ((SDLGui_TextLen(cdlg[objnum].txt) + 1) * FONTWIDTH); SDL_FillRect(sdlscrn, &coord, grey); SDLGui_Text(coord.x, coord.y, str, textc); } /*-----------------------------------------------------------------------*/ /* Draw a dialog check box object. */ void SDLGui_DrawCheckBox(SGOBJ *cdlg, int objnum) { SDL_Rect coord; int textc; SDLGui_ObjCoord(cdlg, objnum, &coord); if (!(cdlg[objnum].flags&SG_BUTTON_RIGHT)) coord.x += (FONTWIDTH * 3); // 2 chars for the box plus 1 space if (cdlg[objnum].state & SG_DISABLED) textc = darkgreyc; else textc = blackc; SDLGui_Text(coord.x, coord.y, cdlg[objnum].txt, textc); SDLGui_DrawCheckBoxState(cdlg, objnum); } /*-----------------------------------------------------------------------*/ /* Draw a dialog popup button object. */ void SDLGui_DrawPopupButton(SGOBJ *pdlg, int objnum) { SDL_Rect coord; static char const downstr[2] = { SGARROWDOWN, 0 }; int textc; if (pdlg[objnum].state & SG_DISABLED) textc = darkgreyc; else textc = blackc; SDLGui_DrawBox(pdlg, objnum); SDLGui_ObjCoord(pdlg, objnum, &coord); SDLGui_Text(coord.x, coord.y, pdlg[objnum].txt, textc); SDLGui_Text(coord.x+coord.w-FONTWIDTH, coord.y, downstr, textc); } /*-----------------------------------------------------------------------*/ /* Draw an object. */ void SDLGui_DrawObject(SGOBJ *dlg, int objnum) { switch (dlg[objnum].type) { case SGBOX: SDLGui_DrawBox(dlg, objnum); break; case SGTEXT: if (dlg[objnum].flags & SG_SMALLTEXT) SDLGui_DrawTextSmall(dlg, objnum); else SDLGui_DrawText(dlg, objnum); break; case SGEDITFIELD: SDLGui_DrawEditField(dlg, objnum); break; case SGBUTTON: if (dlg[objnum].flags & SG_SMALLTEXT) SDLGui_DrawButtonSmall(dlg, objnum); else SDLGui_DrawButton(dlg, objnum); break; case SGCHECKBOX: case SGRADIOBUT: SDLGui_DrawCheckBox(dlg, objnum); break; case SGPOPUP: SDLGui_DrawPopupButton(dlg, objnum); break; } } /*-----------------------------------------------------------------------*/ /* Draw a whole dialog. */ void SDLGui_DrawDialog(SGOBJ *dlg) { int i; // Store dialog coordinates SDLGui_ObjFullCoord(dlg, 0, &DialogRect); for (i = 0 ; dlg[i].type != -1 ; i++) { if (dlg[i].state & SG_HIDDEN) continue; SDLGui_DrawObject(dlg, i); } SDLGui_RefreshObj(dlg, 0); } void SDLGui_setGuiPos(int guix, int guiy) { gui_x = guix; gui_y = guiy; } HostSurface *SDLGui_getSurface(void) { if (gui_dlg) { /* Process a TOUCHEXIT object ? */ if (gui_dlg->isTouchExitPressed()) { /*int retval =*/ gui_dlg->processDialog(); } /* Blink cursor ? */ cursor_state *cursor = gui_dlg->getCursor(); Uint32 cur_ticks = SDL_GetTicks(); if (cur_ticks-cursor->blink_counter >= 500) { cursor->blink_counter = cur_ticks; cursor->blink_state = !cursor->blink_state; } /* Redraw updated dialog */ SDLGui_DrawDialog(gui_dlg->getDialog()); SDLGui_DrawCursor(gui_dlg->getDialog(), cursor); } if (gui_hsurf) { gui_hsurf->setDirtyRect(0,0, gui_hsurf->getWidth(),gui_hsurf->getHeight()); } return gui_hsurf; } /*-----------------------------------------------------------------------*/ /* Search default object in a dialog. */ int SDLGui_FindDefaultObj(SGOBJ *dlg) { int i = 0; while (dlg[i].type != -1) { if (dlg[i].flags & SG_DEFAULT) return i; i++; } return -1; } /*-----------------------------------------------------------------------*/ /* Search an object at given coordinates. */ int SDLGui_FindObj(SGOBJ *dlg, int fx, int fy) { SDL_Rect coord; int end, i; int ob = -1; // Search end object in dialog i = 0; while (dlg[i++].type != -1) ; end = i; // Now check each object for (i = end-1 ; i >= 0 ; i--) { SDLGui_ObjFullCoord(dlg, i, &coord); if(fx >= coord.x && fy >= coord.y && fx < (coord.x + coord.w) && fy < (coord.y + coord.h)) { if (dlg[i].state & (SG_HIDDEN | SG_DISABLED)) continue; ob = i; break; } } return ob; } /*-----------------------------------------------------------------------*/ /* A radio object has been selected. Let's deselect any other in his group. */ void SDLGui_SelectRadioObject(SGOBJ *dlg, int clicked_obj) { int obj; // Find first radio object in this group obj = clicked_obj; while (dlg[--obj].flags & SG_RADIO) ; // Update state while (dlg[++obj].flags & SG_RADIO) { // This code scan every object in the group. This allows to solve cases // where multiple objects were selected in the group by clicking one. if (obj != clicked_obj) { // Deselect this radio button SDLGui_DeselectAndRedraw(dlg, obj); } } } /*-----------------------------------------------------------------------*/ /* Update clicked object state depending on given mouse coordinates. Returns true if the mouse is over the object, false otherwise. */ bool SDLGui_UpdateObjState(SGOBJ *dlg, int clicked_obj, int original_state, int x, int y) { int obj; obj = SDLGui_FindObj(dlg, x, y); // Special case : user clicked on an already selected radio object // do not modify its state. // We handle it here because it allows to exit if the object is SG_EXIT or // SG_TOUCHEXIT without any additional test. if ((dlg[clicked_obj].flags & SG_RADIO) && (original_state & SG_SELECTED)) return (obj == clicked_obj); if (((obj != clicked_obj) && (dlg[clicked_obj].state != original_state)) || ((obj == clicked_obj) && (dlg[clicked_obj].state == original_state))) { if (dlg[clicked_obj].flags & SG_SELECTABLE) { dlg[clicked_obj].state ^= SG_SELECTED; SDLGui_DrawObject(dlg, clicked_obj); SDLGui_RefreshObj(dlg, clicked_obj); } } return (obj == clicked_obj); } void SDLGui_DeselectAndRedraw(SGOBJ *dlg, int obj) { if (dlg[obj].flags & SG_SELECTABLE) { dlg[obj].state &= ~SG_SELECTED; SDLGui_DrawObject(dlg, obj); SDLGui_RefreshObj(dlg, obj); } } /*-----------------------------------------------------------------------*/ /* Search edit field in a dialog. */ int SDLGui_FindEditField(SGOBJ *dlg, int objnum, int mode) { int i, j; switch (mode) { case SG_FIRST_EDITFIELD: i = 0; while (dlg[i].type != -1) { if ((dlg[i].type == SGEDITFIELD) && ((dlg[i].state & (SG_HIDDEN | SG_DISABLED)) == 0)) return i; i++; } break; case SG_PREVIOUS_EDITFIELD: i = objnum - 1; while (i >= 0) { if ((dlg[i].type == SGEDITFIELD) && ((dlg[i].state & (SG_HIDDEN | SG_DISABLED)) == 0)) return i; i--; } break; case SG_NEXT_EDITFIELD: i = objnum + 1; while (dlg[i].type != -1) { if ((dlg[i].type == SGEDITFIELD) && ((dlg[i].state & (SG_HIDDEN | SG_DISABLED)) == 0)) return i; i++; } break; case SG_LAST_EDITFIELD: i = objnum + 1; j = -1; while (dlg[i].type != -1) { if ((dlg[i].type == SGEDITFIELD) && ((dlg[i].state & (SG_HIDDEN | SG_DISABLED)) == 0)) j = i; i++; } if (j != -1) return j; break; } return objnum; } /*-----------------------------------------------------------------------*/ /* Move cursor to another edit field. */ void SDLGui_MoveCursor(SGOBJ *dlg, cursor_state *cursor, int mode) { int new_object; new_object = SDLGui_FindEditField(dlg, cursor->object, mode); if (new_object != cursor->object) { /* Erase old cursor */ cursor->blink_state = false; SDLGui_DrawCursor(dlg, cursor); cursor->object = new_object; cursor->position = SDLGui_TextLen(dlg[new_object].txt); } else { /* We stay in the same field */ /* Move cursor to begin or end of text depending on mode */ switch (mode) { case SG_FIRST_EDITFIELD: case SG_PREVIOUS_EDITFIELD: cursor->position = 0; break; case SG_NEXT_EDITFIELD: case SG_LAST_EDITFIELD: cursor->position = SDLGui_TextLen(dlg[new_object].txt); break; } } } /* Deselect all buttons */ void SDLGui_DeselectButtons(SGOBJ *dlg) { int i = 0; while (dlg[i].type != -1) { if (dlg[i].type == SGBUTTON) { dlg[i].state &= ~SG_SELECTED; } ++i; } } /*-----------------------------------------------------------------------*/ /* Handle mouse clicks on edit fields. */ void SDLGui_ClickEditField(SGOBJ *dlg, cursor_state *cursor, int clicked_obj, int x) { SDL_Rect coord; int i, j; /* Erase old cursor */ cursor->blink_state = false; SDLGui_DrawCursor(dlg, cursor); SDLGui_ObjFullCoord(dlg, clicked_obj, &coord); i = (x - coord.x + (FONTWIDTH / 2)) / FONTWIDTH; j = SDLGui_TextLen(dlg[clicked_obj].txt); cursor->object = clicked_obj; cursor->position = MIN(i, j); cursor->blink_state = true; cursor->blink_counter = 0; SDLGui_DrawCursor(dlg, cursor); } #if 0 /*-----------------------------------------------------------------------*/ /* Used to update screen while GUI is opened. Return a list of rectangles that covers the screen without overlaping the current dialog. */ SDL_Rect *SDLGui_GetFirstBackgroundRect(void) { // Reset counter... BackgroundRectCounter = SG_BCKGND_RECT_BEGIN; // And returns first rectangle return SDLGui_GetNextBackgroundRect(); } /*-----------------------------------------------------------------------*/ /* Returns next rectangle to be redrawn to update screen or NULL if we reached the end of the list. This code is "flying dialog" ready :) It will need some updating if we implement popup buttons handled by sdlgui, as the popup could be higher than the root box... I used some recursivity here to simplify the code. */ SDL_Rect *SDLGui_GetNextBackgroundRect(void) { SDL_Rect *return_rect = NULL; switch (BackgroundRectCounter) { case SG_BCKGND_RECT_END: // Nothing to do : return_rect is already initialized to NULL. break; case SG_BCKGND_RECT_BEGIN: if (DialogRect.w == 0) { // The dialog is not drawn yet... // Let's redraw the full screen. BackgroundRect.x = 0; BackgroundRect.y = 0; BackgroundRect.w = sdlscrn->w; BackgroundRect.h = sdlscrn->h; return_rect = &BackgroundRect; // We reached the end of the list. BackgroundRectCounter = SG_BCKGND_RECT_END; } else { BackgroundRectCounter = SG_BCKGND_RECT_TOP; return_rect = SDLGui_GetNextBackgroundRect(); } break; case SG_BCKGND_RECT_TOP: BackgroundRectCounter = SG_BCKGND_RECT_LEFT; if (DialogRect.y > 0) { BackgroundRect.x = 0; BackgroundRect.y = 0; BackgroundRect.w = sdlscrn->w; BackgroundRect.h = DialogRect.y; return_rect = &BackgroundRect; } else return_rect = SDLGui_GetNextBackgroundRect(); break; case SG_BCKGND_RECT_LEFT: BackgroundRectCounter = SG_BCKGND_RECT_RIGHT; if (DialogRect.x > 0) { BackgroundRect.x = 0; BackgroundRect.y = (DialogRect.y > 0) ? DialogRect.y : 0; BackgroundRect.w = DialogRect.x; BackgroundRect.h = ((DialogRect.y + DialogRect.h) < (int)sdlscrn->h) ? (DialogRect.h + DialogRect.y - BackgroundRect.y) : (sdlscrn->h - DialogRect.y); return_rect = &BackgroundRect; } else return_rect = SDLGui_GetNextBackgroundRect(); break; case SG_BCKGND_RECT_RIGHT: BackgroundRectCounter = SG_BCKGND_RECT_BOTTOM; if ((DialogRect.x + DialogRect.w) < (int)sdlscrn->w) { BackgroundRect.x = DialogRect.x + DialogRect.w; BackgroundRect.y = (DialogRect.y > 0) ? DialogRect.y : 0; BackgroundRect.w = sdlscrn->w - (DialogRect.x + DialogRect.w); BackgroundRect.h = ((DialogRect.y + DialogRect.h) < (int)sdlscrn->w) ? (DialogRect.h + DialogRect.y - BackgroundRect.y) : (sdlscrn->h - DialogRect.y); return_rect = &BackgroundRect; } else return_rect = SDLGui_GetNextBackgroundRect(); break; case SG_BCKGND_RECT_BOTTOM: BackgroundRectCounter = SG_BCKGND_RECT_END; if ((DialogRect.y + DialogRect.h) < (int)sdlscrn->h) { // Bottom BackgroundRect.x = 0; BackgroundRect.y = DialogRect.y + DialogRect.h; BackgroundRect.w = sdlscrn->w; BackgroundRect.h = sdlscrn->h - (DialogRect.y + DialogRect.h); return_rect = &BackgroundRect; } else return_rect = SDLGui_GetNextBackgroundRect(); break; } return return_rect; } #endif /* Process event for a dialog */ int SDLGui_DoEvent(const SDL_Event &event) { int retval = Dialog::GUI_CONTINUE; int num_dialogs=1; /* Number of processDialog to call */ if (gui_dlg) { gui_dlg->idle(); switch(event.type) { case SDL_KEYDOWN: gui_dlg->keyPress(event); break; case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: gui_dlg->mouseClick(event, gui_x, gui_y); break; case SDL_QUIT: return Dialog::GUI_CLOSE; case SDL_MOUSEMOTION: return Dialog::GUI_CONTINUE; } while (num_dialogs-->0) { retval = gui_dlg->processDialog(); if (retval != Dialog::GUI_CONTINUE) { Dialog *prev_dlg = NULL; Dialog *curr_dlg = dlgStack.top(); dlgStack.pop(); if (!dlgStack.empty()) { prev_dlg = dlgStack.top(); /* Process result of called dialog */ prev_dlg->processResult(); /* Continue displaying GUI with previous dialog */ retval = Dialog::GUI_CONTINUE; } /* Close current dialog */ delete curr_dlg; /* Set dialog to previous one */ if (gui_dlg == curr_dlg) gui_dlg = prev_dlg; if (gui_dlg) { gui_dlg->init(); ++num_dialogs; /* Need to process result in the caller dialog */ } } } } return retval; } /* Open a dialog */ void SDLGui_Open(Dialog *new_dlg) { if (new_dlg==NULL) { /* Open main as default */ new_dlg = DlgMainOpen(); if (startupAlert) { dlgStack.push(new_dlg); new_dlg = DlgAlertOpen(startupAlert, ALERT_OK); free(startupAlert); startupAlert = NULL; } } dlgStack.push(new_dlg); gui_dlg = dlgStack.top(); gui_dlg->init(); gui_dlg->idle(); } void SDLGui_Close(void) { /* Empty the dialog stack */ while (!dlgStack.empty()) { Dialog *dlg = dlgStack.top(); delete dlg; dlgStack.pop(); } gui_dlg = NULL; } bool SDLGui_isClosed(void) { return (gui_dlg == NULL); } aranym-1.1.0/src/gui-sdl/genmaptab.c0000664000175000017500000006250613454637621015447 0ustar joyjoy/* * genmaptab.c - helper program to generate character mapping tables * * Copyright (c) 2018 Thorsten Otto of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include static unsigned short const atari_to_utf16[256] = { /* 00 */ 0x0000, 0x21e7, 0x21e9, 0x21e8, 0x21e6, 0x2610, 0x2611, 0x2612, /* 08 */ 0x2713, 0x231a, 0x237e, 0x266a, 0x240c, 0x240d, 0x26f0, 0x26f1, /* 10 */ 0x24ea, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, /* 18 */ 0x2467, 0x2468, 0x018f, 0x241b, 0x26f2, 0x26f3, 0x26f4, 0x26f5, /* 20 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 28 */ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, /* 30 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 38 */ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, /* 40 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 48 */ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, /* 50 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 58 */ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, /* 60 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 68 */ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, /* 70 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 78 */ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2206, /* 80 */ 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, /* 88 */ 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, /* 90 */ 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, /* 98 */ 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x00df, 0x0192, /* a0 */ 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, /* a8 */ 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, /* b0 */ 0x00e3, 0x00f5, 0x00d8, 0x00f8, 0x0153, 0x0152, 0x00c0, 0x00c3, /* b8 */ 0x00d5, 0x00a8, 0x00b4, 0x2020, 0x00b6, 0x00a9, 0x00ae, 0x2122, /* c0 */ 0x0133, 0x0132, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, /* c8 */ 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05db, 0x05dc, 0x05de, 0x05e0, /* d0 */ 0x05e1, 0x05e2, 0x05e4, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, /* d8 */ 0x05df, 0x05da, 0x05dd, 0x05e3, 0x05e5, 0x00a7, 0x2227, 0x221e, /* e0 */ 0x03b1, 0x03b2, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, /* e8 */ 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x222e, 0x03c6, 0x2208, 0x2229, /* f0 */ 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, /* f8 */ 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x00b3, 0x00af }; static unsigned short maptab[0x10000]; int main(void) { int i, j; unsigned short uc; /* * initialize tables */ for (i = 0; i < 0x10000; i++) maptab[i] = 0xffff; /* * build lookup table */ for (i = 0; i < 256; i++) { uc = atari_to_utf16[i]; maptab[uc] = i; } /* * the control characters in the table above * are mapped to font encodings. For reverse * lookup, map them to themselves */ for (i = 0; i < 0x20; i++) maptab[i] = i; maptab[0x7f] = 0x7f; /* * mapping of our special chars */ maptab[0x600] = 0x0600; /* left half of normal radio button */ maptab[0x601] = 0x0601; /* right half of normal radio button */ maptab[0x602] = 0x0602; /* left half of selected radio button */ maptab[0x603] = 0x0603; /* right half of selected radio button */ maptab[0x604] = 0x0604; /* left half of normal checkbox */ maptab[0x605] = 0x0605; /* right half of normal checkbox */ maptab[0x606] = 0x0606; /* left half of selected checkbox */ maptab[0x607] = 0x0607; /* right half of selected checkbox */ /* * mapping of characters missing from atari standard encoding */ maptab[0x00c1] = 0x00c1; /* LATIN CAPITAL LETTER A WITH ACUTE */ maptab[0x00c2] = 0x00c2; /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ maptab[0x00c8] = 0x00c8; /* LATIN CAPITAL LETTER E WITH GRAVE */ maptab[0x00ca] = 0x00ca; /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ maptab[0x00cb] = 0x00cb; /* LATIN CAPITAL LETTER E WITH DIAERESIS */ maptab[0x00cc] = 0x00cc; /* LATIN CAPITAL LETTER I WITH GRAVE */ maptab[0x00cd] = 0x00cd; /* LATIN CAPITAL LETTER I WITH ACUTE */ maptab[0x00ce] = 0x00ce; /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ maptab[0x00cf] = 0x00cf; /* LATIN CAPITAL LETTER I WITH DIAERESIS */ maptab[0x00d0] = 0x00d0; /* LATIN CAPITAL LETTER ETH */ maptab[0x00d2] = 0x00d2; /* LATIN CAPITAL LETTER O WITH GRAVE */ maptab[0x00d3] = 0x00d3; /* LATIN CAPITAL LETTER O WITH ACUTE */ maptab[0x00d4] = 0x00d4; /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ maptab[0x00d7] = 0x00d7; /* MULTIPLICATION SIGN */ maptab[0x00d9] = 0x00d9; /* LATIN CAPITAL LETTER U WITH GRAVE */ maptab[0x00da] = 0x00da; /* LATIN CAPITAL LETTER U WITH ACUTE */ maptab[0x00db] = 0x00db; /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ maptab[0x00dd] = 0x00dd; /* LATIN CAPITAL LETTER Y WITH ACUTE */ maptab[0x00de] = 0x00de; /* LATIN CAPITAL LETTER THORN */ maptab[0x00f0] = 0x00f0; /* LATIN SMALL LETTER ETH */ maptab[0x00fd] = 0x00fd; /* LATIN SMALL LETTER Y WITH ACUTE */ maptab[0x00fe] = 0x00fe; /* LATIN SMALL LETTER THORN */ maptab[0x00b8] = 0x00b8; /* CEDILLA */ maptab[0x00be] = 0x00be; /* VULGAR FRACTION THREE QUARTERS */ maptab[0x00a6] = 0x00a6; /* BROKEN BAR */ maptab[0x0100] = 0x0100; /* LATIN CAPITAL LETTER A WITH MACRON */ maptab[0x0101] = 0x0101; /* LATIN SMALL LETTER A WITH MACRON */ maptab[0x0102] = 0x0102; /* LATIN CAPITAL LETTER A WITH BREVE */ maptab[0x0103] = 0x0103; /* LATIN SMALL LETTER A WITH BREVE */ maptab[0x0104] = 0x0104; /* LATIN CAPITAL LETTER A WITH OGONEK */ maptab[0x0105] = 0x0105; /* LATIN SMALL LETTER A WITH OGONEK */ maptab[0x0106] = 0x0106; /* LATIN CAPITAL LETTER C WITH ACUTE */ maptab[0x0107] = 0x0107; /* LATIN SMALL LETTER C WITH ACUTE */ maptab[0x0108] = 0x0108; /* LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ maptab[0x0109] = 0x0109; /* LATIN SMALL LETTER C WITH CIRCUMFLEX */ maptab[0x010a] = 0x010a; /* LATIN CAPITAL LETTER C WITH DOT ABOVE */ maptab[0x010b] = 0x010b; /* LATIN SMALL LETTER C WITH DOT ABOVE */ maptab[0x010c] = 0x010c; /* LATIN CAPITAL LETTER C WITH CARON */ maptab[0x010d] = 0x010d; /* LATIN SMALL LETTER C WITH CARON */ maptab[0x010e] = 0x010e; /* LATIN CAPITAL LETTER D WITH CARON */ maptab[0x010f] = 0x010f; /* LATIN SMALL LETTER D WITH CARON */ maptab[0x0110] = 0x0110; /* LATIN CAPITAL LETTER D WITH STROKE */ maptab[0x0111] = 0x0111; /* LATIN SMALL LETTER D WITH STROKE */ maptab[0x0112] = 0x0112; /* LATIN CAPITAL LETTER E WITH MACRON */ maptab[0x0113] = 0x0113; /* LATIN SMALL LETTER E WITH MACRON */ maptab[0x0114] = 0x0114; /* LATIN CAPITAL LETTER E WITH BREVE */ maptab[0x0115] = 0x0115; /* LATIN SMALL LETTER E WITH BREVE */ maptab[0x0116] = 0x0116; /* LATIN CAPITAL LETTER E WITH DOT ABOVE */ maptab[0x0117] = 0x0117; /* LATIN SMALL LETTER E WITH DOT ABOVE */ maptab[0x0118] = 0x0118; /* LATIN CAPITAL LETTER E WITH OGONEK */ maptab[0x0119] = 0x0119; /* LATIN SMALL LETTER E WITH OGONEK */ maptab[0x011a] = 0x011a; /* LATIN CAPITAL LETTER E WITH CARON */ maptab[0x011b] = 0x011b; /* LATIN SMALL LETTER E WITH CARON */ maptab[0x011c] = 0x011c; /* LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ maptab[0x011d] = 0x011d; /* LATIN SMALL LETTER G WITH CIRCUMFLEX */ maptab[0x011e] = 0x011e; /* LATIN CAPITAL LETTER G WITH BREVE */ maptab[0x011f] = 0x011f; /* LATIN SMALL LETTER G WITH BREVE */ maptab[0x0120] = 0x0120; /* LATIN CAPITAL LETTER G WITH DOT ABOVE */ maptab[0x0121] = 0x0121; /* LATIN SMALL LETTER G WITH DOT ABOVE */ maptab[0x0122] = 0x0122; /* LATIN CAPITAL LETTER G WITH CEDILLA */ maptab[0x0123] = 0x0123; /* LATIN SMALL LETTER G WITH CEDILLA */ maptab[0x0124] = 0x0124; /* LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ maptab[0x0125] = 0x0125; /* LATIN SMALL LETTER H WITH CIRCUMFLEX */ maptab[0x0126] = 0x0126; /* LATIN CAPITAL LETTER H WITH STROKE */ maptab[0x0127] = 0x0127; /* LATIN SMALL LETTER H WITH STROKE */ maptab[0x0128] = 0x0128; /* LATIN CAPITAL LETTER I WITH TILDE */ maptab[0x0129] = 0x0129; /* LATIN SMALL LETTER I WITH TILDE */ maptab[0x012a] = 0x012a; /* LATIN CAPITAL LETTER I WITH MACRON */ maptab[0x012b] = 0x012b; /* LATIN SMALL LETTER I WITH MACRON */ maptab[0x012c] = 0x012c; /* LATIN CAPITAL LETTER I WITH BREVE */ maptab[0x012d] = 0x012d; /* LATIN SMALL LETTER I WITH BREVE */ maptab[0x012e] = 0x012e; /* LATIN CAPITAL LETTER I WITH OGONEK */ maptab[0x012f] = 0x012f; /* LATIN SMALL LETTER I WITH OGONEK */ maptab[0x0130] = 0x0130; /* LATIN CAPITAL LETTER I WITH DOT ABOVE */ maptab[0x0131] = 0x0131; /* LATIN SMALL LETTER DOTLESS I */ maptab[0x0132] = 0x00c1; /* LATIN CAPITAL LIGATURE IJ */ maptab[0x0133] = 0x00c0; /* LATIN SMALL LIGATURE IJ */ maptab[0x0134] = 0x0134; /* LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ maptab[0x0135] = 0x0135; /* LATIN SMALL LETTER J WITH CIRCUMFLEX */ maptab[0x0136] = 0x0136; /* LATIN CAPITAL LETTER K WITH CEDILLA */ maptab[0x0137] = 0x0137; /* LATIN SMALL LETTER K WITH CEDILLA */ maptab[0x0138] = 0x0138; /* LATIN SMALL LETTER KRA */ maptab[0x0139] = 0x0139; /* LATIN CAPITAL LETTER L WITH ACUTE */ maptab[0x013a] = 0x013a; /* LATIN SMALL LETTER L WITH ACUTE */ maptab[0x013b] = 0x013b; /* LATIN CAPITAL LETTER L WITH CEDILLA */ maptab[0x013c] = 0x013c; /* LATIN SMALL LETTER L WITH CEDILLA */ maptab[0x013d] = 0x013d; /* LATIN CAPITAL LETTER L WITH CARON */ maptab[0x013e] = 0x013e; /* LATIN SMALL LETTER L WITH CARON */ maptab[0x013f] = 0x013f; /* LATIN CAPITAL LETTER L WITH MIDDLE DOT */ maptab[0x0140] = 0x0140; /* LATIN SMALL LETTER L WITH MIDDLE DOT */ maptab[0x0141] = 0x0141; /* LATIN CAPITAL LETTER L WITH STROKE */ maptab[0x0142] = 0x0142; /* LATIN SMALL LETTER L WITH STROKE */ maptab[0x0143] = 0x0143; /* LATIN CAPITAL LETTER N WITH ACUTE */ maptab[0x0144] = 0x0144; /* LATIN SMALL LETTER N WITH ACUTE */ maptab[0x0145] = 0x0145; /* LATIN CAPITAL LETTER N WITH CEDILLA */ maptab[0x0146] = 0x0146; /* LATIN SMALL LETTER N WITH CEDILLA */ maptab[0x0147] = 0x0147; /* LATIN CAPITAL LETTER N WITH CARON */ maptab[0x0148] = 0x0148; /* LATIN SMALL LETTER N WITH CARON */ maptab[0x0149] = 0x0149; /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */ maptab[0x014a] = 0x014a; /* LATIN CAPITAL LETTER ENG */ maptab[0x014b] = 0x014b; /* LATIN SMALL LETTER ENG */ maptab[0x014c] = 0x014c; /* LATIN CAPITAL LETTER O WITH MACRON */ maptab[0x014d] = 0x014d; /* LATIN SMALL LETTER O WITH MACRON */ maptab[0x014e] = 0x014e; /* LATIN CAPITAL LETTER O WITH BREVE */ maptab[0x014f] = 0x014f; /* LATIN SMALL LETTER O WITH BREVE */ maptab[0x0150] = 0x0150; /* LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ maptab[0x0151] = 0x0151; /* LATIN SMALL LETTER O WITH DOUBLE ACUTE */ maptab[0x0154] = 0x0154; /* LATIN CAPITAL LETTER R WITH ACUTE */ maptab[0x0155] = 0x0155; /* LATIN SMALL LETTER R WITH ACUTE */ maptab[0x0156] = 0x0156; /* LATIN CAPITAL LETTER R WITH CEDILLA */ maptab[0x0157] = 0x0157; /* LATIN SMALL LETTER R WITH CEDILLA */ maptab[0x0158] = 0x0158; /* LATIN CAPITAL LETTER R WITH CARON */ maptab[0x0159] = 0x0159; /* LATIN SMALL LETTER R WITH CARON */ maptab[0x015a] = 0x015a; /* LATIN CAPITAL LETTER S WITH ACUTE */ maptab[0x015b] = 0x015b; /* LATIN SMALL LETTER S WITH ACUTE */ maptab[0x015c] = 0x015c; /* LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ maptab[0x015d] = 0x015d; /* LATIN SMALL LETTER S WITH CIRCUMFLEX */ maptab[0x015e] = 0x015e; /* LATIN CAPITAL LETTER S WITH CEDILLA */ maptab[0x015f] = 0x015f; /* LATIN SMALL LETTER S WITH CEDILLA */ maptab[0x0160] = 0x0160; /* LATIN CAPITAL LETTER S WITH CARON */ maptab[0x0161] = 0x0161; /* LATIN SMALL LETTER S WITH CARON */ maptab[0x0162] = 0x0162; /* LATIN CAPITAL LETTER T WITH CEDILLA */ maptab[0x0163] = 0x0163; /* LATIN SMALL LETTER T WITH CEDILLA */ maptab[0x0164] = 0x0164; /* LATIN CAPITAL LETTER T WITH CARON */ maptab[0x0165] = 0x0165; /* LATIN SMALL LETTER T WITH CARON */ maptab[0x0166] = 0x0166; /* LATIN CAPITAL LETTER T WITH STROKE */ maptab[0x0167] = 0x0167; /* LATIN SMALL LETTER T WITH STROKE */ maptab[0x0168] = 0x0168; /* LATIN CAPITAL LETTER U WITH TILDE */ maptab[0x0169] = 0x0169; /* LATIN SMALL LETTER U WITH TILDE */ maptab[0x016a] = 0x016a; /* LATIN CAPITAL LETTER U WITH MACRON */ maptab[0x016b] = 0x016b; /* LATIN SMALL LETTER U WITH MACRON */ maptab[0x016c] = 0x016c; /* LATIN CAPITAL LETTER U WITH BREVE */ maptab[0x016d] = 0x016d; /* LATIN SMALL LETTER U WITH BREVE */ maptab[0x016e] = 0x016e; /* LATIN CAPITAL LETTER U WITH RING ABOVE */ maptab[0x016f] = 0x016f; /* LATIN SMALL LETTER U WITH RING ABOVE */ maptab[0x0170] = 0x0170; /* LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ maptab[0x0171] = 0x0171; /* LATIN SMALL LETTER U WITH DOUBLE ACUTE */ maptab[0x0172] = 0x0172; /* LATIN CAPITAL LETTER U WITH OGONEK */ maptab[0x0173] = 0x0173; /* LATIN SMALL LETTER U WITH OGONEK */ maptab[0x0174] = 0x0174; /* LATIN CAPITAL LETTER W WITH CIRCUMFLEX */ maptab[0x0175] = 0x0175; /* LATIN SMALL LETTER W WITH CIRCUMFLEX */ maptab[0x0176] = 0x0176; /* LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */ maptab[0x0177] = 0x0177; /* LATIN SMALL LETTER Y WITH CIRCUMFLEX */ maptab[0x0178] = 0x0178; /* LATIN CAPITAL LETTER Y WITH DIAERESIS */ maptab[0x0179] = 0x0179; /* LATIN CAPITAL LETTER Z WITH ACUTE */ maptab[0x017a] = 0x017a; /* LATIN SMALL LETTER Z WITH ACUTE */ maptab[0x017b] = 0x017b; /* LATIN CAPITAL LETTER Z WITH DOT ABOVE */ maptab[0x017c] = 0x017c; /* LATIN SMALL LETTER Z WITH DOT ABOVE */ maptab[0x017d] = 0x017d; /* LATIN CAPITAL LETTER Z WITH CARON */ maptab[0x017e] = 0x017e; /* LATIN SMALL LETTER Z WITH CARON */ maptab[0x017f] = 0x017f; /* LATIN SMALL LETTER LONG S */ maptab[0x02c7] = 0x02c7; /* CARON */ maptab[0x02d8] = 0x02d8; /* BREVE */ maptab[0x02d9] = 0x02d9; /* DOT ABOVE */ maptab[0x02db] = 0x02db; /* OGONEK */ maptab[0x02dd] = 0x02dd; /* DOUBLE ACUTE ACCENT */ maptab[0x0384] = 0x0384; /* GREEK TONOS */ maptab[0x0385] = 0x0385; /* GREEK DIALYTIKA TONOS */ maptab[0x0386] = 0x0386; /* GREEK CAPITAL LETTER ALPHA WITH TONOS */ maptab[0x0387] = 0x0387; /* GREEK ANO TELEIA */ maptab[0x0388] = 0x0388; /* GREEK CAPITAL LETTER EPSILON WITH TONOS */ maptab[0x0389] = 0x0389; /* GREEK CAPITAL LETTER ETA WITH TONOS */ maptab[0x038a] = 0x038a; /* GREEK CAPITAL LETTER IOTA WITH TONOS */ maptab[0x038c] = 0x038c; /* GREEK CAPITAL LETTER OMICRON WITH TONOS */ maptab[0x038e] = 0x038e; /* GREEK CAPITAL LETTER UPSILON WITH TONOS */ maptab[0x038f] = 0x038f; /* GREEK CAPITAL LETTER OMEGA WITH TONOS */ maptab[0x0390] = 0x0390; /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ maptab[0x0391] = 0x0391; /* GREEK CAPITAL LETTER ALPHA */ maptab[0x0392] = 0x0392; /* GREEK CAPITAL LETTER BETA */ maptab[0x0393] = 0x00e2; /* GREEK CAPITAL LETTER GAMMA */ maptab[0x0394] = 0x0394; /* GREEK CAPITAL LETTER DELTA */ maptab[0x0395] = 0x0395; /* GREEK CAPITAL LETTER EPSILON */ maptab[0x0396] = 0x0396; /* GREEK CAPITAL LETTER ZETA */ maptab[0x0397] = 0x0397; /* GREEK CAPITAL LETTER ETA */ maptab[0x0398] = 0x00e9; /* GREEK CAPITAL LETTER THETA */ maptab[0x0399] = 0x0399; /* GREEK CAPITAL LETTER IOTA */ maptab[0x039a] = 0x039a; /* GREEK CAPITAL LETTER KAPPA */ maptab[0x039b] = 0x039b; /* GREEK CAPITAL LETTER LAMDA */ maptab[0x039c] = 0x039c; /* GREEK CAPITAL LETTER MU */ maptab[0x039d] = 0x039d; /* GREEK CAPITAL LETTER NU */ maptab[0x039e] = 0x039e; /* GREEK CAPITAL LETTER XI */ maptab[0x039f] = 0x039f; /* GREEK CAPITAL LETTER OMICRON */ maptab[0x03a0] = 0x03a0; /* GREEK CAPITAL LETTER PI */ maptab[0x03a1] = 0x03a1; /* GREEK CAPITAL LETTER RHO */ maptab[0x03a3] = 0x00e4; /* GREEK CAPITAL LETTER SIGMA */ maptab[0x03a4] = 0x03a4; /* GREEK CAPITAL LETTER TAU */ maptab[0x03a5] = 0x03a5; /* GREEK CAPITAL LETTER UPSILON */ maptab[0x03a6] = 0x00e8; /* GREEK CAPITAL LETTER PHI */ maptab[0x03a7] = 0x03a7; /* GREEK CAPITAL LETTER CHI */ maptab[0x03a8] = 0x03a8; /* GREEK CAPITAL LETTER PSI */ maptab[0x03a9] = 0x00ea; /* GREEK CAPITAL LETTER OMEGA */ maptab[0x03aa] = 0x03aa; /* GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */ maptab[0x03ab] = 0x03ab; /* GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */ maptab[0x03ac] = 0x03ac; /* GREEK SMALL LETTER ALPHA WITH TONOS */ maptab[0x03ad] = 0x03ad; /* GREEK SMALL LETTER EPSILON WITH TONOS */ maptab[0x03ae] = 0x03ae; /* GREEK SMALL LETTER ETA WITH TONOS */ maptab[0x03af] = 0x03af; /* GREEK SMALL LETTER IOTA WITH TONOS */ maptab[0x03b0] = 0x03b0; /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ maptab[0x03b1] = 0x00e0; /* GREEK SMALL LETTER ALPHA */ maptab[0x03b2] = 0x00e1; /* GREEK SMALL LETTER BETA */ maptab[0x03b3] = 0x03b3; /* GREEK SMALL LETTER GAMMA */ maptab[0x03b4] = 0x00eb; /* GREEK SMALL LETTER DELTA */ maptab[0x03b5] = 0x03b5; /* GREEK SMALL LETTER EPSILON */ maptab[0x03b6] = 0x03b6; /* GREEK SMALL LETTER ZETA */ maptab[0x03b7] = 0x03b7; /* GREEK SMALL LETTER ETA */ maptab[0x03b8] = 0x03b8; /* GREEK SMALL LETTER THETA */ maptab[0x03b9] = 0x03b9; /* GREEK SMALL LETTER IOTA */ maptab[0x03ba] = 0x03ba; /* GREEK SMALL LETTER KAPPA */ maptab[0x03bb] = 0x03bb; /* GREEK SMALL LETTER LAMDA */ maptab[0x03bc] = 0x03bc; /* GREEK SMALL LETTER MU */ maptab[0x03bd] = 0x03bd; /* GREEK SMALL LETTER NU */ maptab[0x03be] = 0x03be; /* GREEK SMALL LETTER XI */ maptab[0x03bf] = 0x03bf; /* GREEK SMALL LETTER OMICRON */ maptab[0x03c0] = 0x00e3; /* GREEK SMALL LETTER PI */ maptab[0x03c1] = 0x03c1; /* GREEK SMALL LETTER RHO */ maptab[0x03c2] = 0x03c2; /* GREEK SMALL LETTER FINAL SIGMA */ maptab[0x03c3] = 0x00e5; /* GREEK SMALL LETTER SIGMA */ maptab[0x03c4] = 0x00e7; /* GREEK SMALL LETTER TAU */ maptab[0x03c5] = 0x03c5; /* GREEK SMALL LETTER UPSILON */ maptab[0x03c6] = 0x00ed; /* GREEK SMALL LETTER PHI */ maptab[0x03c7] = 0x03c7; /* GREEK SMALL LETTER CHI */ maptab[0x03c8] = 0x03c8; /* GREEK SMALL LETTER PSI */ maptab[0x03c9] = 0x03c9; /* GREEK SMALL LETTER OMEGA */ maptab[0x03ca] = 0x03ca; /* GREEK SMALL LETTER IOTA WITH DIALYTIKA */ maptab[0x03cb] = 0x03cb; /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ maptab[0x03cc] = 0x03cc; /* GREEK SMALL LETTER OMICRON WITH TONOS */ maptab[0x03cd] = 0x03cd; /* GREEK SMALL LETTER UPSILON WITH TONOS */ maptab[0x03ce] = 0x03ce; /* GREEK SMALL LETTER OMEGA WITH TONOS */ maptab[0x03d0] = 0x03d0; /* GREEK BETA SYMBOL */ maptab[0x03d1] = 0x03d1; /* GREEK THETA SYMBOL */ maptab[0x0400] = 0x0400; /* CYRILLIC CAPITAL LETTER IE WITH GRAVE */ maptab[0x0401] = 0x0401; /* CYRILLIC CAPITAL LETTER IO */ maptab[0x0402] = 0x0402; /* CYRILLIC CAPITAL LETTER DJE */ maptab[0x0403] = 0x0403; /* CYRILLIC CAPITAL LETTER GJE */ maptab[0x0404] = 0x0404; /* CYRILLIC CAPITAL LETTER UKRAINIAN IE */ maptab[0x0405] = 0x0405; /* CYRILLIC CAPITAL LETTER DZE */ maptab[0x0406] = 0x0406; /* CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ maptab[0x0407] = 0x0407; /* CYRILLIC CAPITAL LETTER YI */ maptab[0x0408] = 0x0408; /* CYRILLIC CAPITAL LETTER JE */ maptab[0x0409] = 0x0409; /* CYRILLIC CAPITAL LETTER LJE */ maptab[0x040a] = 0x040a; /* CYRILLIC CAPITAL LETTER NJE */ maptab[0x040b] = 0x040b; /* CYRILLIC CAPITAL LETTER TSHE */ maptab[0x040c] = 0x040c; /* CYRILLIC CAPITAL LETTER KJE */ maptab[0x040d] = 0x040d; /* CYRILLIC CAPITAL LETTER I WITH GRAVE */ maptab[0x040e] = 0x040e; /* CYRILLIC CAPITAL LETTER SHORT U */ maptab[0x040f] = 0x040f; /* CYRILLIC CAPITAL LETTER DZHE */ maptab[0x0410] = 0x0410; /* CYRILLIC CAPITAL LETTER A */ maptab[0x0411] = 0x0411; /* CYRILLIC CAPITAL LETTER BE */ maptab[0x0412] = 0x0412; /* CYRILLIC CAPITAL LETTER VE */ maptab[0x0413] = 0x0413; /* CYRILLIC CAPITAL LETTER GHE */ maptab[0x0414] = 0x0414; /* CYRILLIC CAPITAL LETTER DE */ maptab[0x0415] = 0x0415; /* CYRILLIC CAPITAL LETTER IE */ maptab[0x0416] = 0x0416; /* CYRILLIC CAPITAL LETTER ZHE */ maptab[0x0417] = 0x0417; /* CYRILLIC CAPITAL LETTER ZE */ maptab[0x0418] = 0x0418; /* CYRILLIC CAPITAL LETTER I */ maptab[0x0419] = 0x0419; /* CYRILLIC CAPITAL LETTER SHORT I */ maptab[0x041a] = 0x041a; /* CYRILLIC CAPITAL LETTER KA */ maptab[0x041b] = 0x041b; /* CYRILLIC CAPITAL LETTER EL */ maptab[0x041c] = 0x041c; /* CYRILLIC CAPITAL LETTER EM */ maptab[0x041d] = 0x041d; /* CYRILLIC CAPITAL LETTER EN */ maptab[0x041e] = 0x041e; /* CYRILLIC CAPITAL LETTER O */ maptab[0x041f] = 0x041f; /* CYRILLIC CAPITAL LETTER PE */ maptab[0x0420] = 0x0420; /* CYRILLIC CAPITAL LETTER ER */ maptab[0x0421] = 0x0421; /* CYRILLIC CAPITAL LETTER ES */ maptab[0x0422] = 0x0422; /* CYRILLIC CAPITAL LETTER TE */ maptab[0x0423] = 0x0423; /* CYRILLIC CAPITAL LETTER U */ maptab[0x0424] = 0x0424; /* CYRILLIC CAPITAL LETTER EF */ maptab[0x0425] = 0x0425; /* CYRILLIC CAPITAL LETTER HA */ maptab[0x0426] = 0x0426; /* CYRILLIC CAPITAL LETTER TSE */ maptab[0x0427] = 0x0427; /* CYRILLIC CAPITAL LETTER CHE */ maptab[0x0428] = 0x0428; /* CYRILLIC CAPITAL LETTER SHA */ maptab[0x0429] = 0x0429; /* CYRILLIC CAPITAL LETTER SHCHA */ maptab[0x042a] = 0x042a; /* CYRILLIC CAPITAL LETTER HARD SIGN */ maptab[0x042b] = 0x042b; /* CYRILLIC CAPITAL LETTER YERU */ maptab[0x042c] = 0x042c; /* CYRILLIC CAPITAL LETTER SOFT SIGN */ maptab[0x042d] = 0x042d; /* CYRILLIC CAPITAL LETTER E */ maptab[0x042e] = 0x042e; /* CYRILLIC CAPITAL LETTER YU */ maptab[0x042f] = 0x042f; /* CYRILLIC CAPITAL LETTER YA */ maptab[0x0430] = 0x0430; /* CYRILLIC SMALL LETTER A */ maptab[0x0431] = 0x0431; /* CYRILLIC SMALL LETTER BE */ maptab[0x0432] = 0x0432; /* CYRILLIC SMALL LETTER VE */ maptab[0x0433] = 0x0433; /* CYRILLIC SMALL LETTER GHE */ maptab[0x0434] = 0x0434; /* CYRILLIC SMALL LETTER DE */ maptab[0x0435] = 0x0435; /* CYRILLIC SMALL LETTER IE */ maptab[0x0436] = 0x0436; /* CYRILLIC SMALL LETTER ZHE */ maptab[0x0437] = 0x0437; /* CYRILLIC SMALL LETTER ZE */ maptab[0x0438] = 0x0438; /* CYRILLIC SMALL LETTER I */ maptab[0x0439] = 0x0439; /* CYRILLIC SMALL LETTER SHORT I */ maptab[0x043a] = 0x043a; /* CYRILLIC SMALL LETTER KA */ maptab[0x043b] = 0x043b; /* CYRILLIC SMALL LETTER EL */ maptab[0x043c] = 0x043c; /* CYRILLIC SMALL LETTER EM */ maptab[0x043d] = 0x043d; /* CYRILLIC SMALL LETTER EN */ maptab[0x043e] = 0x043e; /* CYRILLIC SMALL LETTER O */ maptab[0x043f] = 0x043f; /* CYRILLIC SMALL LETTER PE */ maptab[0x0440] = 0x0440; /* CYRILLIC SMALL LETTER ER */ maptab[0x0441] = 0x0441; /* CYRILLIC SMALL LETTER ES */ maptab[0x0442] = 0x0442; /* CYRILLIC SMALL LETTER TE */ maptab[0x0443] = 0x0443; /* CYRILLIC SMALL LETTER U */ maptab[0x0444] = 0x0444; /* CYRILLIC SMALL LETTER EF */ maptab[0x0445] = 0x0445; /* CYRILLIC SMALL LETTER HA */ maptab[0x0446] = 0x0446; /* CYRILLIC SMALL LETTER TSE */ maptab[0x0447] = 0x0447; /* CYRILLIC SMALL LETTER CHE */ maptab[0x0448] = 0x0448; /* CYRILLIC SMALL LETTER SHA */ maptab[0x0449] = 0x0449; /* CYRILLIC SMALL LETTER SHCHA */ maptab[0x044a] = 0x044a; /* CYRILLIC SMALL LETTER HARD SIGN */ maptab[0x044b] = 0x044b; /* CYRILLIC SMALL LETTER YERU */ maptab[0x044c] = 0x044c; /* CYRILLIC SMALL LETTER SOFT SIGN */ maptab[0x044d] = 0x044d; /* CYRILLIC SMALL LETTER E */ maptab[0x044e] = 0x044e; /* CYRILLIC SMALL LETTER YU */ maptab[0x044f] = 0x044f; /* CYRILLIC SMALL LETTER YA */ maptab[0x2025] = 0x2025; /* TWO DOT LEADER */ maptab[0x2070] = 0x2070; /* SUPERSCRIPT ZERO */ maptab[0x2116] = 0x2116; /* NUMERO SIGN */ maptab[0x2153] = 0x2153; /* VULGAR FRACTION ONE THIRD */ maptab[0x25a0] = 0x25a0; /* BLACK SQUARE */ /* * 0xde in the table above is mapped to the * original definition (0x2227 = logical and) * Some prefer to map it to euro sign instead. * Do so at least in reverse lookup. */ maptab[0x00a4] = 0xde; /* currency sign */ maptab[0x20ac] = 0xde; /* euro sign */ maptab[0x2038] = 0xde; /* caret; some atari programs use this for the missing euro sign */ maptab[0x2022] = 0xf9; /* bullet */ maptab[0x03bc] = 0xe6; /* micro sign */ maptab[0x00ad] = '-'; /* soft hyphen */ maptab[0x00a0] = ' '; /* no-break space */ printf("/* generated by genmaptab.c -- DO NOT EDIT */\n"); printf("\n"); printf("#include \"maptab.h\"\n"); printf("\n"); printf("unsigned short const atari_to_utf16[256] = {\n"); for (j = 0; j < 256; j++) { if (((j + 0) % 8) == 0) printf("/* %02x */\t", j); else printf(", "); if (j >= 0x20 && j != 0x7f) i = atari_to_utf16[j]; else i = j; printf("0x%04x", i); if (j == 255) printf("\n"); else if (((j + 1) % 8) == 0) printf(",\n"); } printf("};\n"); printf("\n"); printf("/* same, except for the controls char which map to themselves in the table above */\n"); printf("\n"); printf("unsigned short const atarifont_to_utf16[256] = {\n"); for (j = 0; j < 256; j++) { if (((j + 0) % 8) == 0) printf("/* %02x */\t", j); else printf(", "); printf("0x%04x", atari_to_utf16[j]); if (j == 255) printf("\n"); else if (((j + 1) % 8) == 0) printf(",\n"); } printf("};\n"); printf("\n"); printf("unsigned short const utf16_to_atari[] = {\n"); for (i = 0; i < 0x10000; ) { printf("/* %04x */\t0x%04x", i, maptab[i]); if (++i != 0x10000) printf(","); printf("\n"); } printf("};\n"); return 0; } aranym-1.1.0/src/gui-sdl/fontsmall.h0000664000175000017500000175234013454637621015520 0ustar joyjoy/* * font.h - 8x16 font for Atari ST encoding * modified for the SDL-GUI (added a radio button and a checkbox) * converted using ./fntconv -a -o font.h aranym10.txt * * The fntconv utility can be used to convert the font to text, edit it, and convert it back. * * Copyright (C) 2007 ARAnyM development team * Copyright (C) 2001, 02 The EmuTOS development team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #define FONTSMALLWIDTH 8 #define FONTSMALLHEIGHT 8 #define FONTSMALLCHARS 10240 #define FORMSMALL_WIDTH 10240 static unsigned char const fontsmall_bits[] = { 0x00, 0x18, 0x3c, 0x18, 0x18, 0x3c, 0xff, 0xe7, 0x01, 0x7e, 0x18, 0x18, 0xf0, 0xf0, 0x05, 0xa0, 0x7c, 0x06, 0x7c, 0x7c, 0xc6, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x78, 0x07, 0xf0, 0x11, 0x04, 0x00, 0x18, 0x66, 0x00, 0x18, 0x00, 0x38, 0x18, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3c, 0x18, 0x3c, 0x7e, 0x0c, 0x7e, 0x3c, 0x7e, 0x3c, 0x3c, 0x00, 0x00, 0x06, 0x00, 0x60, 0x3c, 0x3c, 0x18, 0x7c, 0x3c, 0x78, 0x7e, 0x7e, 0x3e, 0x66, 0x3c, 0x06, 0x66, 0x60, 0xc6, 0x66, 0x3c, 0x7c, 0x3c, 0x7c, 0x3c, 0x7e, 0x66, 0x66, 0xc6, 0x66, 0x66, 0x7e, 0x1e, 0x40, 0x78, 0x10, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x1c, 0x00, 0x60, 0x18, 0x18, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1c, 0x81, 0x66, 0x18, 0x0e, 0x66, 0x7e, 0x00, 0x1b, 0x00, 0x00, 0x7e, 0x00, 0x38, 0x18, 0x38, 0x78, 0x0c, 0x00, 0x7a, 0x00, 0x00, 0x18, 0x00, 0xd8, 0xc6, 0xc6, 0xc6, 0x00, 0x30, 0x0c, 0x18, 0x34, 0x66, 0x18, 0x3f, 0x00, 0x30, 0x0c, 0x18, 0x66, 0x30, 0x0c, 0x18, 0x66, 0x78, 0x34, 0x30, 0x0c, 0x18, 0x34, 0x66, 0x00, 0x02, 0x30, 0x0c, 0x18, 0x66, 0x0c, 0x60, 0x1c, 0x30, 0x0c, 0x18, 0x34, 0x66, 0x18, 0x00, 0x00, 0x30, 0x0c, 0x18, 0x66, 0x60, 0x0c, 0x18, 0x66, 0x26, 0x34, 0x30, 0x0c, 0x18, 0x34, 0x66, 0x18, 0x00, 0x30, 0x0c, 0x18, 0x66, 0x0c, 0x00, 0x66, 0x7e, 0x3c, 0x66, 0x24, 0x18, 0x00, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x24, 0x24, 0x24, 0x0d, 0x78, 0x06, 0x3c, 0x3c, 0x24, 0x24, 0x18, 0x08, 0x00, 0x00, 0x24, 0x24, 0x18, 0x18, 0x24, 0x24, 0x18, 0x18, 0x3e, 0x3e, 0x18, 0x18, 0x00, 0x00, 0x34, 0x34, 0x3c, 0x3c, 0x36, 0x2c, 0x3c, 0x18, 0x08, 0x00, 0xf6, 0x66, 0x18, 0x18, 0x66, 0x60, 0x00, 0x66, 0x76, 0x60, 0x38, 0x6c, 0x76, 0x60, 0x70, 0x60, 0x38, 0x0c, 0x0c, 0x66, 0x00, 0x24, 0x24, 0x00, 0x66, 0x00, 0x3c, 0x00, 0x36, 0x36, 0x36, 0x36, 0x7f, 0x00, 0x18, 0x0c, 0x7c, 0x00, 0x36, 0x24, 0x0c, 0x0c, 0x0c, 0x18, 0x3e, 0x00, 0x36, 0x24, 0x7e, 0x00, 0x24, 0x03, 0x00, 0x00, 0x34, 0x34, 0x3c, 0x3c, 0x24, 0x24, 0x18, 0x18, 0x36, 0x36, 0x66, 0x00, 0x0c, 0x18, 0x18, 0x18, 0x66, 0x0c, 0x0c, 0x08, 0x08, 0x66, 0x24, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x66, 0x98, 0x00, 0xbf, 0xb3, 0xbc, 0x00, 0x9e, 0x00, 0xb3, 0x9e, 0x66, 0x18, 0x7c, 0x00, 0x18, 0x7e, 0x7e, 0x66, 0x00, 0x3c, 0x66, 0x18, 0xc6, 0x66, 0x7e, 0x3c, 0x7e, 0x7c, 0x00, 0xfe, 0x7e, 0x66, 0x3c, 0x66, 0xc6, 0x00, 0x24, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x66, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x18, 0x18, 0x18, 0x00, 0x38, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x24, 0x7e, 0x04, 0x3c, 0x3c, 0x3c, 0x24, 0x06, 0x0c, 0x4c, 0x7e, 0x04, 0x10, 0x18, 0x66, 0x18, 0x7e, 0xfc, 0x7e, 0x3c, 0xfe, 0xdb, 0x3c, 0x66, 0x5c, 0xe6, 0x1f, 0xc6, 0x66, 0x3c, 0x7e, 0xfc, 0x3c, 0x7e, 0x66, 0x18, 0xc6, 0x66, 0x66, 0xd6, 0xd6, 0xe0, 0xc3, 0x60, 0x3c, 0xce, 0x3f, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x7c, 0x7c, 0xc6, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x24, 0x1c, 0x38, 0x99, 0xff, 0xc3, 0x03, 0xc3, 0x3c, 0x1c, 0xc0, 0xc0, 0x05, 0xa0, 0xc6, 0x06, 0x06, 0x06, 0xc6, 0xc0, 0xc0, 0x06, 0xc6, 0xc6, 0x00, 0x60, 0x0f, 0xf8, 0x0b, 0x28, 0x00, 0x18, 0x66, 0x6c, 0x3e, 0x66, 0x6c, 0x18, 0x1c, 0x38, 0x66, 0x18, 0x00, 0x00, 0x00, 0x06, 0x66, 0x38, 0x66, 0x0c, 0x1c, 0x60, 0x60, 0x06, 0x66, 0x66, 0x18, 0x18, 0x0c, 0x00, 0x30, 0x66, 0x66, 0x3c, 0x66, 0x66, 0x6c, 0x60, 0x60, 0x60, 0x66, 0x18, 0x06, 0x6c, 0x60, 0xee, 0x76, 0x66, 0x66, 0x66, 0x66, 0x66, 0x18, 0x66, 0x66, 0xc6, 0x66, 0x66, 0x06, 0x18, 0x60, 0x18, 0x38, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x06, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x3a, 0x5a, 0x66, 0x18, 0x1b, 0x00, 0xc3, 0x3c, 0x36, 0x00, 0x00, 0xc3, 0xfe, 0x6c, 0x18, 0x6c, 0x0c, 0x18, 0x00, 0xca, 0x00, 0x00, 0x78, 0x3c, 0x6c, 0xcc, 0xcc, 0x4c, 0x18, 0x18, 0x18, 0x66, 0x58, 0x00, 0x00, 0x78, 0x3c, 0x18, 0x18, 0x66, 0x00, 0x18, 0x18, 0x24, 0x00, 0x66, 0x58, 0x18, 0x18, 0x66, 0x58, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x66, 0x00, 0x18, 0x60, 0x36, 0x18, 0x18, 0x66, 0x58, 0x00, 0x18, 0x00, 0x00, 0x18, 0x18, 0x66, 0x00, 0x30, 0x18, 0x66, 0x00, 0x18, 0x58, 0x18, 0x18, 0x66, 0x58, 0x00, 0x18, 0x02, 0x18, 0x18, 0x66, 0x00, 0x18, 0x60, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x24, 0x66, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0d, 0x6c, 0x1f, 0x00, 0x00, 0x18, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x24, 0x24, 0x18, 0x18, 0x18, 0x18, 0x60, 0x66, 0x24, 0x24, 0x66, 0x70, 0x58, 0x58, 0x00, 0x10, 0x18, 0x18, 0x18, 0x00, 0x3c, 0x00, 0x66, 0x00, 0x24, 0x24, 0x6c, 0x60, 0x60, 0x6c, 0x34, 0x60, 0x18, 0x64, 0x32, 0x60, 0x30, 0x60, 0x18, 0x18, 0x18, 0x76, 0x00, 0x18, 0x18, 0x80, 0x76, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x6c, 0x6c, 0xd8, 0x00, 0x7c, 0x18, 0x66, 0x00, 0x7c, 0x18, 0x3e, 0x18, 0x3e, 0x24, 0x60, 0x00, 0x3e, 0x18, 0x18, 0x18, 0x18, 0x19, 0x7e, 0x18, 0x58, 0x58, 0x00, 0x00, 0x18, 0x18, 0x24, 0x24, 0x6c, 0x6c, 0x66, 0x00, 0xc6, 0x24, 0x24, 0x24, 0x00, 0x7e, 0x18, 0x7e, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xbc, 0x00, 0xb0, 0xb3, 0x98, 0x00, 0xb3, 0x00, 0xb3, 0xb3, 0x00, 0x3c, 0x66, 0xfe, 0x3c, 0x60, 0x06, 0x66, 0x3c, 0x18, 0x6c, 0x3c, 0xee, 0x76, 0x00, 0x66, 0x66, 0x66, 0x00, 0x66, 0x18, 0x66, 0x18, 0x66, 0xd6, 0x3c, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x18, 0x00, 0x66, 0x00, 0x00, 0x66, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x5a, 0x7e, 0x66, 0x66, 0x18, 0x3c, 0x06, 0x0c, 0x4c, 0x5a, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x60, 0x66, 0x62, 0x6c, 0x62, 0xdb, 0x66, 0x66, 0x66, 0x66, 0x3e, 0xee, 0x66, 0x66, 0x66, 0x66, 0x66, 0x5a, 0x66, 0x7e, 0xc6, 0x66, 0x66, 0xd6, 0xd6, 0x60, 0xc3, 0x60, 0x66, 0xdb, 0x66, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x7c, 0x1e, 0x7e, 0x7c, 0x1c, 0x1e, 0x7e, 0x6e, 0x3c, 0x3e, 0x3e, 0x7e, 0xfe, 0x6c, 0x1c, 0x1c, 0x3e, 0x36, 0x7e, 0x7e, 0x36, 0x66, 0x3e, 0x78, 0xd6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x04, 0x20, 0x08, 0x10, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7c, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x3c, 0x1c, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xc6, 0xc0, 0xc0, 0x06, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xff, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x24, 0xf6, 0x6f, 0xc3, 0xfe, 0x99, 0x06, 0xd3, 0x3c, 0x16, 0xfe, 0xdf, 0x05, 0xa0, 0xc6, 0x06, 0x06, 0x06, 0xc6, 0xc0, 0xc0, 0x06, 0xc6, 0xc6, 0x3c, 0x78, 0x1f, 0xec, 0x0d, 0xd8, 0x00, 0x18, 0x66, 0xfe, 0x60, 0x6c, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x6e, 0x18, 0x06, 0x18, 0x3c, 0x7c, 0x60, 0x0c, 0x66, 0x66, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x06, 0x6e, 0x66, 0x66, 0x60, 0x66, 0x60, 0x60, 0x60, 0x66, 0x18, 0x06, 0x78, 0x60, 0xfe, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x60, 0x18, 0x66, 0x66, 0xc6, 0x3c, 0x66, 0x0c, 0x18, 0x30, 0x18, 0x6c, 0x00, 0x60, 0x3c, 0x7c, 0x3c, 0x3e, 0x3c, 0x7c, 0x3e, 0x7c, 0x38, 0x18, 0x66, 0x18, 0xec, 0x7c, 0x3c, 0x7c, 0x3e, 0x7c, 0x3e, 0x7e, 0x66, 0x66, 0xc6, 0x66, 0x66, 0x7e, 0x18, 0x18, 0x18, 0xf2, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x30, 0x24, 0x3c, 0x18, 0x3c, 0x00, 0xbd, 0x06, 0x6c, 0x00, 0x00, 0xbd, 0x00, 0x38, 0x7e, 0x18, 0x38, 0x30, 0x6c, 0xca, 0x00, 0x00, 0x18, 0x66, 0x36, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x18, 0x18, 0xd8, 0x66, 0x7e, 0x7e, 0x00, 0x7e, 0x00, 0x3c, 0x3c, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x44, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, 0x7c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x66, 0x7c, 0x66, 0x18, 0x00, 0x18, 0x00, 0x66, 0x3c, 0x3c, 0x00, 0x18, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x7c, 0x7c, 0x66, 0x06, 0x7e, 0x3c, 0x7e, 0x3c, 0x7e, 0x3c, 0x60, 0x3c, 0x7e, 0x3c, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x6e, 0x66, 0x00, 0x60, 0x7e, 0x60, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x18, 0x38, 0x18, 0x38, 0x66, 0xe6, 0x06, 0x18, 0x78, 0x66, 0x67, 0x60, 0x30, 0x60, 0x18, 0x68, 0x34, 0x64, 0x32, 0x70, 0x18, 0x66, 0x00, 0x7e, 0x7c, 0x66, 0x00, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0xd8, 0x7e, 0x66, 0x00, 0x66, 0x7c, 0x66, 0x00, 0x60, 0x3e, 0x60, 0x3e, 0x3c, 0x3e, 0x60, 0x3e, 0x18, 0x7e, 0x7e, 0x7e, 0x18, 0x7e, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7e, 0x18, 0x66, 0x00, 0x66, 0x66, 0xc6, 0xc6, 0x66, 0x66, 0x66, 0x0c, 0x7e, 0x0c, 0x7e, 0x7e, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x30, 0x33, 0x18, 0x00, 0x33, 0x00, 0x33, 0x33, 0x18, 0x66, 0x66, 0x66, 0x66, 0x60, 0x0c, 0x66, 0x66, 0x18, 0x78, 0x66, 0xfe, 0x76, 0x00, 0x66, 0x66, 0x66, 0x00, 0x30, 0x18, 0x66, 0x3c, 0x3c, 0xd6, 0x66, 0x18, 0x66, 0x3e, 0x3e, 0xfc, 0x30, 0x66, 0x76, 0x66, 0x66, 0x78, 0x3e, 0x30, 0xfc, 0x66, 0x30, 0x66, 0x06, 0x66, 0x66, 0x30, 0x3c, 0xfe, 0x3c, 0x3e, 0x38, 0x7e, 0x66, 0x7c, 0x66, 0xc6, 0xc6, 0x18, 0x66, 0x3c, 0x66, 0xc6, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x62, 0x18, 0x60, 0x60, 0x60, 0x18, 0x18, 0x06, 0x0c, 0x4c, 0x18, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x60, 0x66, 0x60, 0x6c, 0x68, 0x7e, 0x06, 0x6e, 0x6e, 0x6c, 0x66, 0xfe, 0x66, 0x66, 0x66, 0x66, 0x60, 0x18, 0x66, 0xdb, 0x6c, 0x66, 0x66, 0xd6, 0xd6, 0x60, 0xc3, 0x60, 0x06, 0xdb, 0x66, 0x78, 0x60, 0x7c, 0x3e, 0x1e, 0x3c, 0xdb, 0x7c, 0xcc, 0xcc, 0x66, 0x1e, 0xcc, 0x66, 0x3c, 0x7e, 0x7c, 0x3c, 0x7e, 0x66, 0x7e, 0xc6, 0x66, 0x66, 0xd6, 0xd6, 0xe0, 0xc6, 0x60, 0x7c, 0xce, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x0c, 0x06, 0x0c, 0x06, 0x0c, 0x0c, 0x36, 0x66, 0x0c, 0x06, 0x06, 0x06, 0x66, 0x3e, 0x0c, 0x0c, 0x36, 0x36, 0x66, 0x66, 0x36, 0x66, 0x06, 0x0c, 0xd6, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x09, 0x90, 0x08, 0x10, 0x0a, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x66, 0xf6, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0f, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xc6, 0xc0, 0xc0, 0x06, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xfe, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xe7, 0x83, 0xc1, 0xe7, 0xfc, 0x3c, 0x8c, 0xd3, 0x3c, 0x10, 0xd8, 0xdb, 0x0d, 0xb0, 0x00, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x7c, 0x7c, 0x06, 0x60, 0x18, 0x04, 0x06, 0x28, 0x00, 0x18, 0x00, 0x6c, 0x3c, 0x18, 0x70, 0x00, 0x18, 0x18, 0xff, 0x7e, 0x00, 0x7e, 0x00, 0x18, 0x76, 0x18, 0x0c, 0x0c, 0x6c, 0x06, 0x7c, 0x18, 0x3c, 0x3e, 0x00, 0x00, 0x30, 0x00, 0x0c, 0x0c, 0x6a, 0x66, 0x7c, 0x60, 0x66, 0x7c, 0x7c, 0x6e, 0x7e, 0x18, 0x06, 0x70, 0x60, 0xd6, 0x7e, 0x66, 0x7c, 0x66, 0x7c, 0x3c, 0x18, 0x66, 0x66, 0xd6, 0x18, 0x3c, 0x18, 0x18, 0x18, 0x18, 0xc6, 0x00, 0x30, 0x06, 0x66, 0x60, 0x66, 0x66, 0x30, 0x66, 0x66, 0x18, 0x18, 0x6c, 0x18, 0xfe, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x18, 0x66, 0x66, 0xc6, 0x3c, 0x66, 0x0c, 0x30, 0x18, 0x0c, 0x9e, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x60, 0x7c, 0x5a, 0x18, 0x00, 0x66, 0x00, 0xb1, 0x3e, 0xd8, 0x7c, 0x7c, 0xa5, 0x00, 0x00, 0x18, 0x30, 0x0c, 0x00, 0x6c, 0xca, 0x00, 0x00, 0x18, 0x66, 0x1b, 0x36, 0x36, 0x36, 0x18, 0x18, 0x66, 0x18, 0x18, 0x3c, 0x3c, 0xde, 0x60, 0x60, 0x60, 0x7e, 0x60, 0x3c, 0x18, 0x18, 0x18, 0xf6, 0x66, 0x3c, 0x3c, 0x3c, 0x66, 0x66, 0x28, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x06, 0x3c, 0x1b, 0x60, 0x3c, 0x3c, 0x3c, 0x66, 0x38, 0x38, 0x38, 0x38, 0x1e, 0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x7e, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x3c, 0x3c, 0x66, 0x06, 0x66, 0x3c, 0x3c, 0x3c, 0x66, 0x3c, 0x66, 0x3c, 0x66, 0xcc, 0xf6, 0x3e, 0x60, 0x66, 0x60, 0x66, 0x60, 0x66, 0x7c, 0x7e, 0x60, 0x66, 0x60, 0x66, 0x60, 0x66, 0x60, 0x66, 0x66, 0x3e, 0x66, 0x7c, 0x66, 0x7c, 0x3c, 0x38, 0x18, 0x38, 0x3c, 0x38, 0x18, 0x18, 0x18, 0x18, 0x66, 0x66, 0x06, 0x18, 0x70, 0x6c, 0x6c, 0x60, 0x30, 0x60, 0x18, 0x60, 0x30, 0x60, 0x30, 0xe0, 0x3c, 0x76, 0x7c, 0x7e, 0x66, 0x76, 0x7c, 0x7c, 0x7e, 0x7c, 0x66, 0x3c, 0x66, 0x3c, 0x66, 0x3c, 0xde, 0xdb, 0x66, 0x7c, 0x7c, 0x66, 0x66, 0x7c, 0x3c, 0x60, 0x3c, 0x60, 0x06, 0x60, 0x3c, 0x60, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xc6, 0xc6, 0x66, 0x66, 0x66, 0x18, 0x0c, 0x18, 0x0c, 0x0c, 0x7e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x3e, 0x3f, 0x18, 0x00, 0x33, 0x00, 0x1e, 0x33, 0x18, 0x66, 0x7c, 0x62, 0x66, 0x7c, 0x18, 0x7e, 0x7e, 0x18, 0x70, 0x66, 0xd6, 0x7e, 0x3c, 0x66, 0x66, 0x7c, 0x00, 0x18, 0x18, 0x3c, 0x66, 0x18, 0xd6, 0x66, 0x18, 0x3c, 0x66, 0x60, 0x66, 0x30, 0x66, 0xdc, 0x7c, 0x3c, 0xdc, 0x60, 0x60, 0x66, 0x1e, 0x30, 0x6c, 0x3e, 0x66, 0x66, 0x18, 0x66, 0x6c, 0x66, 0x60, 0x6c, 0x18, 0x66, 0xd6, 0x66, 0xd6, 0xd6, 0x18, 0x66, 0x66, 0x66, 0xd6, 0x00, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x68, 0x1e, 0x60, 0x78, 0x3c, 0x18, 0x18, 0x06, 0x0c, 0x7c, 0x1e, 0x78, 0x6e, 0x66, 0x66, 0x66, 0x7c, 0x7c, 0x60, 0x6c, 0x78, 0x7e, 0x1c, 0x7e, 0x7e, 0x78, 0x66, 0xd6, 0x7e, 0x66, 0x66, 0x7c, 0x60, 0x18, 0x3e, 0xdb, 0x38, 0x66, 0x7e, 0xda, 0xda, 0x7c, 0xfb, 0x7c, 0x1e, 0xfb, 0x3e, 0x0c, 0x7c, 0x66, 0x30, 0x36, 0x66, 0xdb, 0x06, 0xcc, 0xcc, 0x6c, 0x36, 0xfe, 0x66, 0x66, 0x66, 0x66, 0x66, 0x18, 0x66, 0xdb, 0x6c, 0x66, 0x66, 0xd6, 0xd6, 0x60, 0xc6, 0x60, 0x06, 0xdb, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x0c, 0x0e, 0x0c, 0x66, 0x0c, 0x06, 0x36, 0x66, 0x0c, 0x06, 0x06, 0x06, 0x66, 0x66, 0x0c, 0x0c, 0x36, 0x36, 0x76, 0x76, 0x1c, 0x3c, 0x36, 0x0c, 0xd6, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x0b, 0xd0, 0x08, 0x10, 0x09, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xc3, 0x83, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xfc, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xc3, 0x83, 0xc1, 0xc3, 0xf9, 0x99, 0xd8, 0xdb, 0x7e, 0x10, 0xde, 0xff, 0x0d, 0xb0, 0xc6, 0x06, 0xc0, 0x06, 0x06, 0x06, 0xc6, 0x06, 0xc6, 0x06, 0x7e, 0x7e, 0x18, 0x04, 0x07, 0xd0, 0x00, 0x18, 0x00, 0x6c, 0x06, 0x30, 0xde, 0x00, 0x18, 0x18, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x30, 0x66, 0x18, 0x18, 0x06, 0x7e, 0x06, 0x66, 0x30, 0x66, 0x06, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x6e, 0x7e, 0x66, 0x60, 0x66, 0x60, 0x60, 0x66, 0x66, 0x18, 0x06, 0x78, 0x60, 0xc6, 0x6e, 0x66, 0x60, 0x76, 0x6c, 0x06, 0x18, 0x66, 0x66, 0xfe, 0x3c, 0x18, 0x30, 0x18, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x3e, 0x66, 0x60, 0x66, 0x7e, 0x30, 0x66, 0x66, 0x18, 0x18, 0x78, 0x18, 0xd6, 0x66, 0x66, 0x66, 0x66, 0x60, 0x3c, 0x18, 0x66, 0x66, 0xd6, 0x18, 0x66, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x60, 0x30, 0x5a, 0x3c, 0x18, 0x66, 0x00, 0xb1, 0x66, 0x6c, 0x0c, 0x00, 0xb9, 0x00, 0x00, 0x18, 0x7c, 0x78, 0x00, 0x6c, 0x7a, 0x18, 0x00, 0x7c, 0x66, 0x36, 0x6e, 0x6b, 0x6e, 0x30, 0x3c, 0x66, 0x3c, 0x3c, 0x66, 0x66, 0xf8, 0x66, 0x7c, 0x7c, 0x60, 0x7c, 0x18, 0x18, 0x18, 0x18, 0x66, 0x76, 0x66, 0x66, 0x66, 0x66, 0x66, 0x10, 0x76, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x7c, 0x66, 0x06, 0x06, 0x06, 0x06, 0x3e, 0x06, 0x7f, 0x60, 0x7e, 0x7e, 0x7e, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x76, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x66, 0x06, 0x7e, 0x3e, 0x60, 0x60, 0x66, 0x60, 0x60, 0x60, 0x60, 0x60, 0x66, 0xcc, 0x66, 0x66, 0x7c, 0x7e, 0x7c, 0x7e, 0x7c, 0x7e, 0x60, 0x60, 0x7c, 0x7e, 0x6e, 0x66, 0x6e, 0x66, 0x6e, 0x66, 0x66, 0x06, 0x66, 0x66, 0x7e, 0x66, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x66, 0x66, 0x06, 0x18, 0x78, 0x78, 0x78, 0x60, 0x30, 0x60, 0x18, 0x60, 0x30, 0x60, 0x30, 0x60, 0x18, 0x7e, 0x66, 0x6e, 0x66, 0x7e, 0x66, 0x66, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xd8, 0xdf, 0x7c, 0x66, 0x6c, 0x60, 0x7c, 0x66, 0x06, 0x3c, 0x06, 0x3c, 0x66, 0x3c, 0x06, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xd6, 0xd6, 0x3c, 0x66, 0x3c, 0x30, 0x18, 0x30, 0x18, 0x18, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x18, 0x30, 0x33, 0x18, 0x00, 0x33, 0x00, 0x0c, 0x1e, 0x18, 0x7e, 0x66, 0x60, 0x66, 0x60, 0x30, 0x66, 0x66, 0x18, 0x78, 0x66, 0xc6, 0x6e, 0x00, 0x66, 0x66, 0x60, 0x00, 0x30, 0x18, 0x18, 0x66, 0x3c, 0x7c, 0x66, 0x18, 0x18, 0x66, 0x7c, 0x66, 0x30, 0x66, 0xc8, 0x66, 0x18, 0xcc, 0x7c, 0x30, 0x66, 0x66, 0x30, 0x78, 0x66, 0x66, 0x66, 0x30, 0x66, 0x6c, 0x66, 0x3c, 0x6c, 0x18, 0x66, 0xd6, 0x3c, 0xd6, 0xd6, 0x18, 0x66, 0x66, 0x66, 0xd6, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x78, 0x1a, 0x60, 0x60, 0x06, 0x18, 0x18, 0x06, 0x0f, 0x4f, 0x1a, 0x70, 0x7e, 0x3e, 0x66, 0x7e, 0x66, 0x66, 0x60, 0x6c, 0x68, 0xdb, 0x06, 0x76, 0x76, 0x6c, 0x66, 0xc6, 0x66, 0x66, 0x66, 0x60, 0x60, 0x18, 0x06, 0x7e, 0x38, 0x66, 0x06, 0xda, 0xda, 0x66, 0xdf, 0x66, 0x06, 0xdb, 0x36, 0x7c, 0x66, 0x7c, 0x30, 0x36, 0x7e, 0x7e, 0x1c, 0xcc, 0xcc, 0x78, 0x36, 0xfe, 0x7e, 0x66, 0x66, 0x66, 0x60, 0x18, 0x66, 0xdb, 0x38, 0x66, 0x7e, 0xda, 0xda, 0x7c, 0xfa, 0x7c, 0x3e, 0xf3, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x0c, 0x1e, 0x0c, 0x66, 0x0c, 0x06, 0x36, 0x66, 0x00, 0x06, 0x06, 0x06, 0x66, 0x66, 0x0c, 0x0c, 0x36, 0x36, 0x06, 0x06, 0x0c, 0x0e, 0x36, 0x0c, 0xd6, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x09, 0x90, 0x08, 0x10, 0x0a, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xe7, 0x83, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0x06, 0x06, 0xc6, 0x06, 0xc6, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xf9, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x66, 0xf6, 0x6f, 0x99, 0xf3, 0xc3, 0x70, 0xc3, 0x10, 0x70, 0x18, 0x1e, 0x19, 0x98, 0xc6, 0x06, 0xc0, 0x06, 0x06, 0x06, 0xc6, 0x06, 0xc6, 0x06, 0x66, 0x18, 0x10, 0x04, 0x2e, 0x10, 0x00, 0x00, 0x00, 0xfe, 0x7c, 0x66, 0xcc, 0x00, 0x1c, 0x38, 0x66, 0x18, 0x30, 0x00, 0x18, 0x60, 0x66, 0x18, 0x30, 0x66, 0x0c, 0x66, 0x66, 0x30, 0x66, 0x0c, 0x18, 0x18, 0x0c, 0x7e, 0x30, 0x00, 0x60, 0x66, 0x66, 0x66, 0x6c, 0x60, 0x60, 0x66, 0x66, 0x18, 0x66, 0x6c, 0x60, 0xc6, 0x66, 0x66, 0x60, 0x6c, 0x66, 0x66, 0x18, 0x66, 0x3c, 0xee, 0x66, 0x18, 0x60, 0x18, 0x06, 0x18, 0x00, 0x00, 0x00, 0x66, 0x66, 0x60, 0x66, 0x60, 0x30, 0x3e, 0x66, 0x18, 0x18, 0x6c, 0x18, 0xc6, 0x66, 0x66, 0x66, 0x66, 0x60, 0x06, 0x18, 0x66, 0x3c, 0x7c, 0x3c, 0x3e, 0x30, 0x18, 0x18, 0x18, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x30, 0x24, 0x18, 0x18, 0x3c, 0x00, 0xbd, 0x3e, 0x36, 0x0c, 0x00, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x0a, 0x18, 0x00, 0x00, 0x3c, 0x6c, 0xd6, 0xc3, 0xd6, 0x60, 0x66, 0x7e, 0x66, 0x66, 0x7e, 0x7e, 0xd8, 0x3c, 0x60, 0x60, 0x7c, 0x60, 0x18, 0x18, 0x18, 0x18, 0x66, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x28, 0x66, 0x66, 0x66, 0x66, 0x66, 0x18, 0x60, 0x66, 0x7e, 0x7e, 0x7e, 0x7e, 0x66, 0x7e, 0xd8, 0x3c, 0x60, 0x60, 0x60, 0x60, 0x18, 0x18, 0x18, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x7c, 0x3e, 0x7e, 0x7e, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x60, 0x60, 0x60, 0x66, 0x60, 0x66, 0x60, 0x66, 0xcc, 0x6c, 0x66, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7e, 0x3c, 0x60, 0x60, 0x66, 0x3e, 0x66, 0x3e, 0x66, 0x3e, 0x3e, 0x7c, 0x7e, 0x66, 0x66, 0x66, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf6, 0xf6, 0x06, 0x18, 0x6c, 0x6c, 0x6c, 0x60, 0x30, 0x60, 0x18, 0x60, 0x30, 0x60, 0x30, 0x60, 0x18, 0x6e, 0x66, 0x66, 0x66, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xd8, 0xd8, 0x6c, 0x60, 0x66, 0x60, 0x6c, 0x60, 0x66, 0x06, 0x66, 0x06, 0x3c, 0x06, 0x66, 0x06, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xfe, 0x7c, 0x18, 0x3e, 0x18, 0x60, 0x30, 0x60, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x18, 0x30, 0x33, 0x18, 0x00, 0x33, 0x00, 0x0c, 0x00, 0x1a, 0x66, 0x66, 0x60, 0x66, 0x60, 0x60, 0x66, 0x66, 0x18, 0x6c, 0x66, 0xc6, 0x6e, 0x00, 0x66, 0x66, 0x60, 0x00, 0x66, 0x18, 0x18, 0x3c, 0x66, 0x10, 0x24, 0x18, 0x18, 0x66, 0x60, 0x66, 0x34, 0x66, 0xdc, 0x66, 0x3c, 0xec, 0x60, 0x18, 0x66, 0x66, 0x34, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x66, 0x6c, 0x66, 0x06, 0x6c, 0x18, 0x66, 0xd6, 0x18, 0xd6, 0xd6, 0x1a, 0x66, 0x66, 0x66, 0xd6, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x68, 0x1a, 0x60, 0x66, 0x66, 0x18, 0x18, 0x66, 0x6d, 0x4d, 0x1a, 0x78, 0x76, 0x06, 0x66, 0x66, 0x66, 0x66, 0x60, 0x6c, 0x62, 0xdb, 0x66, 0x66, 0x66, 0x66, 0x66, 0xc6, 0x66, 0x66, 0x66, 0x60, 0x66, 0x18, 0x06, 0x18, 0x6c, 0x66, 0x06, 0xda, 0xda, 0x66, 0xcf, 0x66, 0x66, 0xdb, 0x66, 0xcc, 0x66, 0x66, 0x30, 0x36, 0x60, 0xdb, 0x06, 0xcc, 0xcc, 0x6c, 0x36, 0xd6, 0x66, 0x66, 0x66, 0x66, 0x66, 0x18, 0x3e, 0xdb, 0x6c, 0x66, 0x06, 0xda, 0xda, 0x66, 0xce, 0x66, 0x06, 0xdb, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x7e, 0x36, 0x0c, 0x66, 0x0c, 0x06, 0x36, 0x7e, 0x00, 0x06, 0x3e, 0x0e, 0x7e, 0x6e, 0x0c, 0x3c, 0x1c, 0x7e, 0x06, 0x7e, 0x0c, 0x7e, 0x34, 0x0c, 0xfe, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x04, 0x20, 0x08, 0x10, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x24, 0xf6, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0x06, 0x06, 0xc6, 0x06, 0xc6, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xf3, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x3c, 0x1c, 0x38, 0x3c, 0xe7, 0xe7, 0x20, 0xc3, 0x38, 0xf0, 0x18, 0x1b, 0x79, 0x9e, 0x7c, 0x06, 0x7c, 0x7c, 0x06, 0x7c, 0x7c, 0x06, 0x7c, 0x7c, 0x3c, 0x1e, 0x1e, 0x3c, 0x39, 0xe0, 0x00, 0x18, 0x00, 0x6c, 0x18, 0x46, 0x76, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x30, 0x00, 0x18, 0x40, 0x3c, 0x7e, 0x7e, 0x3c, 0x0c, 0x3c, 0x3c, 0x30, 0x3c, 0x38, 0x00, 0x30, 0x06, 0x00, 0x60, 0x18, 0x3e, 0x66, 0x7c, 0x3c, 0x78, 0x7e, 0x60, 0x3e, 0x66, 0x3c, 0x3c, 0x66, 0x7e, 0xc6, 0x66, 0x3c, 0x60, 0x36, 0x66, 0x3c, 0x18, 0x3e, 0x18, 0xc6, 0x66, 0x18, 0x7e, 0x1e, 0x02, 0x78, 0x00, 0xfe, 0x00, 0x3e, 0x7c, 0x3c, 0x3e, 0x3c, 0x30, 0x06, 0x66, 0x3c, 0x18, 0x66, 0x3c, 0xc6, 0x66, 0x3c, 0x7c, 0x3e, 0x60, 0x7c, 0x0e, 0x3e, 0x18, 0x6c, 0x66, 0x06, 0x7e, 0x0e, 0x18, 0x70, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x5a, 0x18, 0x18, 0xd8, 0x00, 0xc3, 0x00, 0x1b, 0x0c, 0x00, 0xc3, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x7f, 0x0a, 0x00, 0x08, 0x00, 0x00, 0xd8, 0x9f, 0x86, 0x9f, 0x66, 0x7e, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0xdf, 0x08, 0x7e, 0x7e, 0x60, 0x7e, 0x18, 0x3c, 0x3c, 0x3c, 0x78, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x44, 0x3c, 0x3c, 0x3c, 0x66, 0x3e, 0x18, 0x60, 0x7c, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x7e, 0x08, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x66, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x18, 0x3c, 0x3e, 0x3e, 0x3e, 0x3e, 0x06, 0x60, 0x06, 0x66, 0x3e, 0x66, 0x3e, 0x66, 0x3e, 0x3c, 0x3c, 0x66, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x78, 0x3e, 0x7e, 0x3c, 0x7e, 0x3c, 0x7e, 0x3c, 0x30, 0x18, 0x7e, 0x3c, 0x66, 0x06, 0x66, 0x06, 0x66, 0x06, 0x08, 0x08, 0x66, 0x66, 0x66, 0x66, 0x18, 0x3c, 0x18, 0x3c, 0x18, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x06, 0x06, 0x66, 0x18, 0x66, 0x66, 0x66, 0x7e, 0x78, 0x7e, 0x3c, 0x7e, 0x78, 0x7e, 0x78, 0x7e, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x62, 0x62, 0x66, 0x3c, 0x66, 0x3c, 0x66, 0x3c, 0x7f, 0x7e, 0x66, 0x60, 0x08, 0x08, 0x66, 0x60, 0x3c, 0x7c, 0x3c, 0x7c, 0x08, 0x7c, 0x3c, 0x7c, 0x18, 0x0e, 0x18, 0x0e, 0x18, 0x0e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0xee, 0x6c, 0x18, 0x06, 0x18, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x3f, 0x33, 0x3c, 0x00, 0x1e, 0x00, 0x0c, 0x3f, 0x0c, 0x66, 0x7c, 0x60, 0x7e, 0x7e, 0x7e, 0x66, 0x3c, 0x3c, 0x66, 0x66, 0xc6, 0x66, 0x7e, 0x3c, 0x66, 0x60, 0x00, 0xfe, 0x18, 0x18, 0x18, 0x66, 0x10, 0x66, 0x18, 0x18, 0x3f, 0x3e, 0x66, 0x18, 0x3c, 0x76, 0x7c, 0x24, 0x78, 0x3e, 0x0c, 0x66, 0x3c, 0x18, 0x66, 0x66, 0x7f, 0x18, 0x0c, 0x3c, 0x6c, 0x7c, 0x7c, 0x38, 0x18, 0x3c, 0x7c, 0x3c, 0x7c, 0x7c, 0x0c, 0x3c, 0x3c, 0x3c, 0x7c, 0x00, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x62, 0x3c, 0x60, 0x3c, 0x3c, 0x3c, 0x18, 0x3c, 0x3e, 0x4e, 0x3c, 0x6c, 0x66, 0x06, 0x7e, 0x66, 0x7c, 0xfc, 0x60, 0xff, 0xfe, 0xdb, 0x3c, 0x66, 0x66, 0xe6, 0xe6, 0xc6, 0x66, 0x3c, 0x66, 0xf0, 0x3c, 0x3c, 0x7c, 0x3c, 0xc6, 0x7f, 0x06, 0xfe, 0xff, 0x7c, 0xfb, 0x7c, 0x3c, 0xce, 0x67, 0x76, 0x3c, 0x7c, 0x30, 0x7f, 0x3e, 0xdb, 0x7c, 0x76, 0x76, 0x66, 0x76, 0xc6, 0x66, 0x3c, 0x66, 0x7c, 0x3c, 0x18, 0x06, 0x7e, 0xc6, 0x7f, 0x06, 0xfe, 0xff, 0x7c, 0xfa, 0x7c, 0x7c, 0xce, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x24, 0x1c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x7c, 0x7c, 0x06, 0x7c, 0x7c, 0x06, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xe7, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x10, 0x60, 0x00, 0x00, 0x71, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x54, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x81, 0x00, 0x18, 0x70, 0x00, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0a, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x06, 0x0f, 0x06, 0x3c, 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x40, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x3e, 0x7c, 0x3e, 0x7c, 0x3e, 0x7c, 0x38, 0x38, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x08, 0x08, 0x00, 0x00, 0x1c, 0x1c, 0x3c, 0x70, 0x38, 0x38, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x06, 0x06, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0c, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xc6, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x3c, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x04, 0x00, 0x48, 0x60, 0x00, 0x00, 0x10, 0x00, 0x10, 0x66, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x7c, 0x18, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x7c, 0x18, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; aranym-1.1.0/src/gui-sdl/font.h0000664000175000017500000372231013454637621014463 0ustar joyjoy/* * font.h - 8x16 font for Atari ST encoding * modified for the SDL-GUI (added a radio button and a checkbox) * converted using ./fntconv -a -o font.h aranym10.txt * * The fntconv utility can be used to convert the font to text, edit it, and convert it back. * * Copyright (C) 2007 ARAnyM development team * Copyright (C) 2001, 02 The EmuTOS development team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #define FONTWIDTH 8 #define FONTHEIGHT 16 #define FONTCHARS 10240 #define FORM_WIDTH 10240 static unsigned char const font_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x18, 0x32, 0x00, 0x3c, 0x00, 0x00, 0x60, 0x06, 0x18, 0x66, 0x60, 0x06, 0x18, 0x00, 0x00, 0x00, 0x60, 0x06, 0x18, 0x32, 0x00, 0x00, 0x00, 0x60, 0x06, 0x18, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x18, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x36, 0x00, 0x18, 0x00, 0x00, 0x00, 0x36, 0x00, 0x18, 0x00, 0x36, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x32, 0x00, 0x7e, 0x00, 0x36, 0x00, 0x00, 0x00, 0x18, 0x00, 0xf6, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x19, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x18, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xa0, 0x7c, 0x00, 0x7c, 0x7c, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x28, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x18, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x38, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x70, 0x00, 0x30, 0x18, 0x3c, 0x7a, 0x66, 0x66, 0x3e, 0x00, 0x30, 0x0c, 0x3c, 0x66, 0x30, 0x0c, 0x3c, 0x66, 0x00, 0x32, 0x30, 0x0c, 0x3c, 0x7a, 0x66, 0x00, 0x01, 0x30, 0x0c, 0x3c, 0x66, 0x0c, 0x00, 0x00, 0x60, 0x06, 0x18, 0x32, 0x00, 0x1c, 0x00, 0x00, 0x60, 0x06, 0x18, 0x00, 0x60, 0x06, 0x18, 0x00, 0x00, 0x32, 0x60, 0x06, 0x18, 0x32, 0x00, 0x00, 0x00, 0x60, 0x06, 0x18, 0x00, 0x06, 0x00, 0x00, 0x7e, 0x00, 0x66, 0x00, 0x00, 0x00, 0x18, 0x06, 0x3c, 0x18, 0x18, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x3c, 0x18, 0x1c, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x00, 0x00, 0x7a, 0x32, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x18, 0x00, 0xf6, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x36, 0x00, 0x1b, 0x1b, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, 0x38, 0x00, 0x18, 0x06, 0x3c, 0x18, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x7a, 0x32, 0x7e, 0x00, 0x36, 0x36, 0x36, 0x1c, 0x33, 0x1b, 0x00, 0x00, 0x3c, 0x18, 0x3c, 0x18, 0x66, 0x18, 0x06, 0x18, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x03, 0x00, 0x38, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x24, 0x00, 0x04, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x7f, 0xfe, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x7c, 0xfe, 0xee, 0x01, 0x00, 0x00, 0x08, 0x78, 0x38, 0x05, 0xa0, 0xba, 0x02, 0x3a, 0x3a, 0x82, 0xb8, 0xb8, 0xba, 0xba, 0xba, 0x00, 0x78, 0x00, 0x00, 0x0d, 0xd8, 0x00, 0x18, 0x66, 0x66, 0x3e, 0x66, 0x6c, 0x18, 0x06, 0x60, 0x66, 0x00, 0x00, 0x00, 0x00, 0x06, 0x3c, 0x18, 0x3c, 0x7e, 0x0c, 0x7e, 0x1c, 0x7e, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x38, 0x18, 0x7c, 0x3c, 0x78, 0x7e, 0x7e, 0x3e, 0x66, 0x7e, 0x06, 0xcc, 0x60, 0xc6, 0x66, 0x3c, 0x7c, 0x3c, 0xf8, 0x3e, 0x7e, 0x66, 0x66, 0xc6, 0x66, 0x66, 0x7e, 0x1e, 0x60, 0x78, 0x10, 0x00, 0x70, 0x00, 0x60, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x60, 0x18, 0x0c, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1e, 0x00, 0x66, 0x18, 0x1c, 0x66, 0x7c, 0x3c, 0x00, 0x00, 0x00, 0x7c, 0xfe, 0x6c, 0x00, 0x30, 0x78, 0x0c, 0x00, 0x7a, 0x00, 0x00, 0x18, 0x3c, 0x00, 0x20, 0x20, 0x98, 0x18, 0x18, 0x00, 0x66, 0x4c, 0x66, 0x3c, 0x7e, 0x3c, 0x18, 0x18, 0x66, 0x00, 0x18, 0x18, 0x66, 0x66, 0x78, 0x7a, 0x18, 0x18, 0x66, 0x4c, 0x66, 0x00, 0x3d, 0x18, 0x18, 0x66, 0x66, 0x18, 0x60, 0x18, 0x30, 0x0c, 0x3c, 0x7a, 0x66, 0x36, 0x00, 0x00, 0x30, 0x0c, 0x3c, 0x66, 0x30, 0x0c, 0x3c, 0x66, 0x66, 0x7a, 0x30, 0x0c, 0x3c, 0x7a, 0x66, 0x00, 0x00, 0x30, 0x0c, 0x3c, 0x66, 0x0c, 0x00, 0x66, 0x00, 0x7e, 0x3c, 0x66, 0x18, 0x00, 0x3c, 0x0c, 0x66, 0x3c, 0x3c, 0x18, 0x3c, 0x36, 0x78, 0xde, 0x78, 0x06, 0x7e, 0x3e, 0x7e, 0x36, 0x7e, 0x18, 0x7e, 0x00, 0x7e, 0x36, 0x66, 0x3c, 0x00, 0x36, 0x00, 0x18, 0x3e, 0x00, 0x66, 0x3c, 0x66, 0x70, 0x4c, 0x7a, 0x7e, 0x3c, 0x00, 0x36, 0x7e, 0x18, 0x00, 0x00, 0x66, 0x66, 0x66, 0x3c, 0xcc, 0xc0, 0x00, 0x66, 0xec, 0x60, 0x38, 0x6c, 0x76, 0x60, 0x70, 0x60, 0x38, 0x00, 0x0c, 0x66, 0x00, 0x00, 0x36, 0x80, 0x66, 0x00, 0x00, 0x7e, 0x1c, 0x36, 0x36, 0x36, 0x7e, 0x00, 0xf8, 0x0c, 0xf8, 0x00, 0xf8, 0x6c, 0x3e, 0x0c, 0x66, 0x3c, 0x3e, 0x00, 0x3e, 0x36, 0x7e, 0x00, 0x7e, 0x30, 0x7e, 0x30, 0x4c, 0x7a, 0x00, 0x7e, 0x1c, 0x1c, 0x1c, 0x36, 0x66, 0x36, 0x66, 0x00, 0x66, 0x3c, 0x66, 0x3c, 0x66, 0x7e, 0x0c, 0x00, 0x18, 0x7e, 0x36, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0x8c, 0x00, 0xbf, 0xb3, 0xbf, 0x00, 0x9e, 0x00, 0xb3, 0x9e, 0xcc, 0x18, 0x7c, 0xfe, 0x18, 0x7e, 0x7e, 0x66, 0x3c, 0x7e, 0x66, 0x18, 0x63, 0x66, 0x7e, 0x3c, 0x7e, 0x7c, 0x00, 0xfe, 0x7e, 0x66, 0x10, 0x66, 0x63, 0x38, 0x7e, 0x66, 0x0c, 0x0c, 0x0c, 0x18, 0x66, 0x00, 0x18, 0x00, 0x3e, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xcc, 0x66, 0x0c, 0x0c, 0x06, 0x00, 0x44, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7e, 0x7e, 0x1c, 0x3e, 0x7e, 0x7e, 0x06, 0x0c, 0x4c, 0x7e, 0xcc, 0x66, 0xc3, 0x66, 0x18, 0x7e, 0x7c, 0x7e, 0x3e, 0x7e, 0x99, 0x3c, 0x66, 0x00, 0x66, 0x3e, 0x63, 0x66, 0x3c, 0x7e, 0x7c, 0x3c, 0x7e, 0xc3, 0x18, 0x66, 0x66, 0x66, 0xd6, 0xd6, 0xf0, 0xc6, 0x60, 0x78, 0x4e, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x7c, 0x1e, 0x7e, 0x7e, 0x38, 0x1e, 0x7e, 0x6e, 0x3c, 0x7e, 0x3c, 0x7e, 0x7e, 0x6c, 0x38, 0x00, 0xfe, 0x36, 0x7e, 0x7e, 0x6e, 0x6e, 0x3e, 0x7c, 0xd6, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x0c, 0x30, 0x40, 0x02, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3a, 0x3a, 0x82, 0xb8, 0xb8, 0xba, 0xba, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xfe, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x38, 0x1c, 0x38, 0xfe, 0xc6, 0x01, 0x3c, 0x00, 0x0e, 0x40, 0x40, 0x05, 0xa0, 0xc6, 0x06, 0x06, 0x06, 0xc6, 0xc0, 0xc0, 0xc6, 0xc6, 0xc6, 0x00, 0x40, 0x00, 0x00, 0x06, 0x28, 0x00, 0x18, 0x66, 0x66, 0x7e, 0x66, 0x6c, 0x18, 0x0c, 0x30, 0x66, 0x18, 0x00, 0x00, 0x00, 0x06, 0x7e, 0x18, 0x7e, 0x7e, 0x0c, 0x7e, 0x3c, 0x7e, 0x7e, 0x7e, 0x00, 0x00, 0x0e, 0x00, 0xe0, 0x7e, 0x7c, 0x3c, 0x7e, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, 0x66, 0x7e, 0x06, 0xcc, 0x60, 0xc6, 0x66, 0x7e, 0x7e, 0x7e, 0xfc, 0x7e, 0x7e, 0x66, 0x66, 0xc6, 0x66, 0x66, 0x7e, 0x1e, 0x60, 0x78, 0x38, 0x00, 0x38, 0x00, 0x60, 0x00, 0x06, 0x00, 0x1e, 0x00, 0x60, 0x18, 0x0c, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x38, 0x00, 0x66, 0x18, 0x36, 0x00, 0xc6, 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x44, 0x18, 0x48, 0x18, 0x18, 0x00, 0xca, 0x00, 0x00, 0x78, 0x66, 0x00, 0x20, 0x20, 0x30, 0x18, 0x00, 0x18, 0x00, 0x00, 0x18, 0x18, 0xf8, 0x7e, 0x7e, 0x7e, 0x00, 0x7e, 0x7e, 0x3c, 0x00, 0x00, 0x7c, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x3c, 0x18, 0x18, 0x66, 0x4c, 0x66, 0x1c, 0x00, 0x00, 0x18, 0x18, 0x66, 0x66, 0x18, 0x18, 0x66, 0x66, 0x18, 0x4c, 0x18, 0x18, 0x66, 0x4c, 0x66, 0x18, 0x00, 0x18, 0x18, 0x66, 0x66, 0x18, 0x60, 0x66, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x7e, 0x18, 0x00, 0x66, 0x7e, 0x18, 0x7e, 0x1c, 0x7c, 0x76, 0x7c, 0x06, 0x7e, 0x00, 0x7e, 0x1c, 0x7e, 0x18, 0x7e, 0x00, 0x7e, 0x1c, 0x00, 0x66, 0x3e, 0x1c, 0x3e, 0x18, 0x7e, 0x18, 0x00, 0x66, 0x7e, 0x60, 0x7e, 0x4c, 0x7e, 0x00, 0x7e, 0x1c, 0x7e, 0x18, 0x7e, 0x00, 0x66, 0x00, 0x00, 0x66, 0xcc, 0xc0, 0x00, 0x6c, 0xe8, 0x60, 0x38, 0x64, 0x72, 0x60, 0x70, 0x60, 0x38, 0x66, 0x18, 0x66, 0x00, 0x66, 0x1c, 0x80, 0x66, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x6c, 0xfe, 0x00, 0xfc, 0x18, 0xfc, 0x00, 0xfc, 0x38, 0x7e, 0x18, 0x7e, 0x66, 0x7e, 0x00, 0x7e, 0x1c, 0x7e, 0x18, 0x7e, 0x33, 0x7e, 0x30, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x6c, 0x66, 0x00, 0xc6, 0x66, 0x00, 0x66, 0x00, 0x7e, 0x18, 0x7e, 0x18, 0x7e, 0x1c, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xcc, 0x9e, 0x00, 0xbf, 0xb3, 0xbf, 0x00, 0xbf, 0x00, 0xb3, 0xbf, 0xcc, 0x3c, 0x7e, 0x7e, 0x18, 0x7e, 0x7e, 0x66, 0x7e, 0x7e, 0x66, 0x18, 0x63, 0x66, 0x7e, 0x7e, 0x7e, 0x7e, 0x00, 0xfe, 0x7e, 0x66, 0x10, 0x66, 0x63, 0x6c, 0x7e, 0x66, 0x18, 0x18, 0x18, 0x30, 0x66, 0x00, 0x3c, 0x00, 0x20, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00, 0xcc, 0x66, 0x18, 0x18, 0x0c, 0x00, 0x58, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x7e, 0x3e, 0x7e, 0x7e, 0x7e, 0x06, 0x0c, 0x4c, 0x7e, 0xcc, 0x66, 0xc3, 0x66, 0x3c, 0x7e, 0x7e, 0x7e, 0x3e, 0x7e, 0x5a, 0x7e, 0x66, 0x66, 0x66, 0x3e, 0x63, 0x66, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0xc3, 0x18, 0x66, 0x66, 0x66, 0xd6, 0xd6, 0xf0, 0xc6, 0x60, 0x7c, 0x5f, 0x7e, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x7c, 0x1e, 0x7e, 0x7e, 0x38, 0x1e, 0x7e, 0x6e, 0x3c, 0x7e, 0x3e, 0x7e, 0x3e, 0x6e, 0x38, 0x00, 0xfe, 0x36, 0x7e, 0x7e, 0x6e, 0x6e, 0x3e, 0x7e, 0xd6, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x10, 0x08, 0x40, 0x02, 0x58, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x18, 0x38, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xc6, 0xc0, 0xc0, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xfe, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x24, 0x2c, 0x34, 0xba, 0xfe, 0xd6, 0x03, 0x66, 0x18, 0x0f, 0x70, 0x40, 0x05, 0xa0, 0xc6, 0x06, 0x06, 0x06, 0xc6, 0xc0, 0xc0, 0xc6, 0xc6, 0xc6, 0x00, 0x70, 0x00, 0x00, 0x07, 0xd0, 0x00, 0x18, 0x66, 0xff, 0x60, 0x6c, 0x38, 0x18, 0x1c, 0x38, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x06, 0x66, 0x38, 0x66, 0x0c, 0x1c, 0x60, 0x70, 0x06, 0x66, 0x66, 0x18, 0x18, 0x1c, 0x7e, 0x70, 0x66, 0xe6, 0x7e, 0x66, 0x66, 0x6e, 0x60, 0x60, 0x60, 0x66, 0x18, 0x06, 0xd8, 0x60, 0xee, 0x66, 0x66, 0x66, 0x66, 0xcc, 0x60, 0x18, 0x66, 0x66, 0xc6, 0x66, 0x66, 0x0c, 0x18, 0x60, 0x18, 0x38, 0x00, 0x1c, 0x00, 0x60, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x30, 0x81, 0x66, 0x18, 0x32, 0x00, 0x82, 0x7e, 0x00, 0x00, 0x00, 0x82, 0x00, 0x6c, 0x18, 0x18, 0x30, 0x00, 0x00, 0xca, 0x00, 0x00, 0x18, 0x66, 0x00, 0x23, 0x23, 0x9b, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0xd8, 0x66, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x3c, 0x7e, 0x7e, 0x6e, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x66, 0x00, 0x3c, 0x00, 0x66, 0x00, 0x66, 0x00, 0x6e, 0x06, 0x6e, 0x1f, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x3e, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x60, 0x30, 0x66, 0x00, 0x66, 0x60, 0x7e, 0x00, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x00, 0x7e, 0x00, 0x66, 0xe6, 0x06, 0x00, 0xd8, 0xc0, 0xc0, 0x60, 0x60, 0x60, 0x18, 0x68, 0x34, 0x60, 0x30, 0x60, 0x18, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x66, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0xd8, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x18, 0x18, 0x18, 0x31, 0x18, 0x30, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0xc6, 0x00, 0x66, 0x00, 0x66, 0x0c, 0x00, 0x7e, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x00, 0xb0, 0xb3, 0x8c, 0x00, 0xb3, 0x00, 0xb3, 0xb3, 0x00, 0x7e, 0x66, 0x62, 0x3c, 0x60, 0x0c, 0x66, 0x66, 0x18, 0x6c, 0x3c, 0x77, 0x66, 0x00, 0x66, 0x66, 0x66, 0x00, 0x60, 0x18, 0x66, 0x7c, 0x66, 0x6b, 0xc6, 0x18, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x66, 0x00, 0x30, 0x00, 0x18, 0x00, 0x66, 0x00, 0x00, 0x66, 0x00, 0x00, 0x18, 0x00, 0x02, 0x00, 0x00, 0x1e, 0x7e, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x18, 0x60, 0x72, 0x60, 0x18, 0x18, 0x06, 0x0c, 0x4c, 0x18, 0xd8, 0x66, 0x66, 0x66, 0x7e, 0x60, 0x66, 0x60, 0x66, 0x60, 0x5a, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x66, 0x66, 0x66, 0x66, 0x66, 0x18, 0x66, 0x3c, 0x66, 0x66, 0x66, 0xd6, 0xd6, 0xb0, 0xc6, 0x60, 0x0e, 0x5b, 0x66, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x0c, 0x06, 0x0c, 0x06, 0x18, 0x04, 0x66, 0x66, 0x0c, 0x06, 0x06, 0x06, 0x36, 0x3e, 0x18, 0x00, 0xfe, 0x36, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0xd6, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x23, 0xc4, 0x40, 0x02, 0x5c, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3c, 0x2c, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xc6, 0xc0, 0xc0, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0xfe, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x24, 0xe6, 0x67, 0x92, 0xfc, 0x92, 0x03, 0xc3, 0x3c, 0x09, 0x40, 0x40, 0x0d, 0xb0, 0xc6, 0x06, 0x06, 0x06, 0xc6, 0xc0, 0xc0, 0xc6, 0xc6, 0xc6, 0x7c, 0x40, 0x00, 0x00, 0x2e, 0x10, 0x00, 0x18, 0x66, 0xff, 0x60, 0x0c, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x66, 0x38, 0x66, 0x0c, 0x1c, 0x60, 0x60, 0x06, 0x66, 0x66, 0x18, 0x18, 0x38, 0x7e, 0x38, 0x66, 0xc2, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x60, 0x66, 0x18, 0x06, 0xd8, 0x60, 0xee, 0x76, 0x66, 0x66, 0x66, 0xcc, 0x60, 0x18, 0x66, 0x66, 0xc6, 0x3c, 0x66, 0x0c, 0x18, 0x30, 0x18, 0x6c, 0x00, 0x0c, 0x3c, 0x7c, 0x3c, 0x3e, 0x3c, 0x18, 0x3e, 0x7c, 0x38, 0x0c, 0xcc, 0x18, 0x6c, 0x3c, 0x3c, 0x7c, 0x3e, 0x7c, 0x3e, 0x7e, 0x66, 0x66, 0xc6, 0x66, 0x66, 0x7e, 0x18, 0x18, 0x30, 0x62, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x30, 0x42, 0x66, 0x18, 0x18, 0x00, 0xba, 0x66, 0x00, 0x00, 0x00, 0xba, 0x00, 0x38, 0x18, 0x30, 0x18, 0x00, 0x66, 0xca, 0x00, 0x00, 0x18, 0x66, 0x00, 0x26, 0x26, 0x76, 0x18, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0xd8, 0x66, 0x60, 0x60, 0x7e, 0x60, 0x18, 0x18, 0x7e, 0x7e, 0x66, 0x66, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x42, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x76, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x38, 0x38, 0x38, 0x38, 0x06, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x3d, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x7e, 0x3c, 0x7e, 0x3c, 0x66, 0x3c, 0x66, 0x3c, 0x7e, 0x3c, 0x66, 0x3c, 0x66, 0x3c, 0x66, 0x3e, 0x66, 0x06, 0x60, 0x3c, 0x60, 0x3c, 0x60, 0x3c, 0x60, 0x3c, 0x60, 0x3c, 0x7e, 0x3e, 0x60, 0x3e, 0x60, 0x3e, 0x60, 0x3e, 0x66, 0x60, 0x66, 0x7c, 0x18, 0x38, 0x18, 0x38, 0x18, 0x38, 0x18, 0x38, 0x18, 0x38, 0x66, 0x66, 0x06, 0x0c, 0xd8, 0xcc, 0xce, 0x60, 0x60, 0x60, 0x18, 0x60, 0x30, 0x60, 0x30, 0x68, 0x18, 0x76, 0x3c, 0x76, 0x3c, 0x76, 0x3c, 0x3c, 0x76, 0x3c, 0x7e, 0x3c, 0x7e, 0x3c, 0x7e, 0x3c, 0xd8, 0x7e, 0xcc, 0x7c, 0xcc, 0x7c, 0xcc, 0x7c, 0x60, 0x3e, 0x60, 0x3e, 0x60, 0x3e, 0x60, 0x3e, 0x18, 0x7e, 0x18, 0xfa, 0x18, 0xfc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xc6, 0xc6, 0x66, 0x66, 0x66, 0x0c, 0x7e, 0x0c, 0x7e, 0x0c, 0x7e, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x30, 0x33, 0x0c, 0x00, 0x33, 0x00, 0x33, 0x33, 0x30, 0x66, 0x66, 0x60, 0x3c, 0x60, 0x0c, 0x66, 0x42, 0x18, 0x6c, 0x3c, 0x7f, 0x76, 0x00, 0x66, 0x66, 0x66, 0x00, 0x30, 0x18, 0x66, 0xc6, 0x3c, 0x6b, 0xc6, 0x18, 0x66, 0x3e, 0x3e, 0xfc, 0x30, 0x66, 0xf6, 0x66, 0x66, 0x18, 0x3e, 0x30, 0xfc, 0x66, 0x30, 0x66, 0x06, 0x66, 0x66, 0x18, 0x3c, 0x7e, 0x3c, 0x3e, 0x38, 0xfc, 0x66, 0xd6, 0x66, 0x63, 0x63, 0x30, 0x66, 0x3c, 0x66, 0x63, 0x00, 0x3c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x18, 0x60, 0x60, 0x60, 0x18, 0x18, 0x06, 0x0c, 0x4c, 0x18, 0xd8, 0x6e, 0x66, 0x66, 0x66, 0x60, 0x66, 0x60, 0x66, 0x60, 0x5a, 0x46, 0x6e, 0x66, 0x66, 0x66, 0x77, 0x66, 0x66, 0x66, 0x66, 0x62, 0x18, 0x66, 0x7e, 0x66, 0x66, 0x66, 0xd6, 0xd6, 0x30, 0xc6, 0x60, 0x06, 0x5b, 0x66, 0x3c, 0x3c, 0x7c, 0x7e, 0x3c, 0x3c, 0x99, 0x3c, 0x66, 0x66, 0x66, 0x3e, 0x63, 0x66, 0x3c, 0x7e, 0x7c, 0x3c, 0x7e, 0x63, 0x18, 0x66, 0x66, 0x66, 0xd6, 0xd6, 0xf0, 0xc6, 0x60, 0x78, 0x4e, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x0c, 0x06, 0x0c, 0x66, 0x18, 0x0c, 0x66, 0x66, 0x0c, 0x06, 0x06, 0x06, 0x36, 0x36, 0x18, 0x00, 0xc6, 0x36, 0x66, 0x66, 0x76, 0x36, 0x06, 0x06, 0xd6, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x27, 0xe4, 0x40, 0x02, 0x4e, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x66, 0xe6, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1f, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xc6, 0xc0, 0xc0, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xfc, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x24, 0x83, 0xc1, 0xd6, 0xfc, 0xba, 0x06, 0x91, 0x3c, 0x08, 0x40, 0x38, 0x0d, 0xb0, 0x82, 0x02, 0x3a, 0x3a, 0xba, 0xb8, 0xb8, 0x82, 0xba, 0xba, 0x7e, 0x78, 0x00, 0x00, 0x39, 0xe0, 0x00, 0x18, 0x66, 0x66, 0x7c, 0x18, 0x70, 0x18, 0x18, 0x18, 0xff, 0x7e, 0x00, 0x7e, 0x00, 0x0c, 0x66, 0x18, 0x0c, 0x18, 0x3c, 0x7c, 0x60, 0x0c, 0x3c, 0x7e, 0x18, 0x18, 0x70, 0x00, 0x1c, 0x0c, 0xda, 0x66, 0x7e, 0x60, 0x66, 0x7c, 0x7c, 0x6e, 0x7e, 0x18, 0x06, 0xf0, 0x60, 0xfe, 0x76, 0x66, 0x66, 0x66, 0xcc, 0x70, 0x18, 0x66, 0x66, 0xc6, 0x3c, 0x3c, 0x18, 0x18, 0x30, 0x18, 0x6c, 0x00, 0x04, 0x3e, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x38, 0x0c, 0xdc, 0x18, 0xfe, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x66, 0x66, 0xc6, 0x66, 0x66, 0x7e, 0x38, 0x18, 0x38, 0xf2, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x66, 0x30, 0x3c, 0x7e, 0x18, 0x3c, 0x00, 0xa2, 0x66, 0x1a, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x7e, 0x60, 0x48, 0x00, 0x66, 0xca, 0x00, 0x00, 0x18, 0x66, 0xb0, 0x2c, 0x2c, 0x0c, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xde, 0x60, 0x60, 0x60, 0x60, 0x60, 0x18, 0x18, 0x18, 0x18, 0x76, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x66, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x7f, 0x7c, 0x7e, 0x7e, 0x7e, 0x7e, 0x38, 0x38, 0x38, 0x38, 0x1e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x3e, 0x66, 0x3e, 0x66, 0x3e, 0x60, 0x7c, 0x66, 0x7c, 0x60, 0x7c, 0x60, 0x7c, 0x66, 0x7e, 0x66, 0x3e, 0x60, 0x7e, 0x60, 0x7e, 0x60, 0x7e, 0x7c, 0x7e, 0x60, 0x7e, 0x60, 0x7e, 0x60, 0x7e, 0x60, 0x7e, 0x6e, 0x7e, 0x66, 0x60, 0x7e, 0x7e, 0x18, 0x38, 0x18, 0x38, 0x18, 0x38, 0x18, 0x38, 0x18, 0x38, 0x66, 0x66, 0x06, 0x0c, 0xf0, 0xdc, 0xdc, 0x60, 0x60, 0x60, 0x18, 0x60, 0x30, 0x64, 0x32, 0x78, 0x1c, 0x76, 0x7e, 0x76, 0x7e, 0x76, 0x7e, 0x7e, 0x76, 0x7e, 0x66, 0x7e, 0x66, 0x7e, 0x66, 0x7e, 0xde, 0xff, 0xcc, 0x7e, 0xcc, 0x7e, 0xcc, 0x7e, 0x70, 0x7e, 0x70, 0x7e, 0x70, 0x7e, 0x70, 0x7e, 0x18, 0x7e, 0x18, 0xf8, 0x18, 0xfc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xc6, 0xc6, 0x66, 0x66, 0x66, 0x18, 0x7e, 0x0c, 0x7e, 0x18, 0x7e, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x3e, 0x3f, 0x0c, 0x00, 0x33, 0x00, 0x33, 0x33, 0x30, 0x66, 0x7c, 0x60, 0x66, 0x7c, 0x18, 0x7e, 0x42, 0x18, 0x78, 0x66, 0x7f, 0x76, 0x00, 0x66, 0x66, 0x66, 0x00, 0x18, 0x18, 0x3c, 0x82, 0x3c, 0x6b, 0xc6, 0x18, 0x3c, 0x7e, 0x7e, 0xfe, 0x30, 0x66, 0xdc, 0x66, 0x66, 0x3c, 0x7e, 0x60, 0xfe, 0x76, 0x30, 0x66, 0x06, 0x66, 0x66, 0x30, 0x7e, 0xfc, 0x7e, 0x7e, 0x6c, 0x90, 0x66, 0x92, 0x66, 0x63, 0x63, 0x30, 0x66, 0x7e, 0x66, 0x63, 0x00, 0x7e, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x18, 0x60, 0x60, 0x70, 0x18, 0x18, 0x06, 0x0c, 0x4c, 0x18, 0xf0, 0x6e, 0x3c, 0x66, 0x66, 0x7c, 0x66, 0x60, 0x66, 0x60, 0x5a, 0x06, 0x6e, 0x6e, 0x6c, 0x66, 0x7f, 0x66, 0x66, 0x66, 0x66, 0x60, 0x18, 0x3c, 0x5a, 0x3c, 0x66, 0x66, 0xd6, 0xd6, 0x30, 0xc6, 0x7c, 0x06, 0x5b, 0x66, 0x3e, 0x78, 0x66, 0x7e, 0x7c, 0x7e, 0x5a, 0x7e, 0x66, 0x66, 0x66, 0x3e, 0x77, 0x66, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x63, 0x18, 0x66, 0x66, 0x66, 0xd6, 0xd6, 0xf0, 0xc6, 0x60, 0x7c, 0x5f, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x0c, 0x0e, 0x0c, 0x66, 0x18, 0x0c, 0x66, 0x66, 0x00, 0x06, 0x06, 0x06, 0x36, 0x66, 0x18, 0x00, 0xc6, 0x36, 0x76, 0x76, 0x3e, 0x3e, 0x06, 0x06, 0xf6, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x4f, 0xf2, 0x40, 0x02, 0x47, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xc3, 0x83, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3a, 0x3a, 0xba, 0xb8, 0xb8, 0x82, 0xba, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xfc, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xe7, 0x83, 0xc1, 0xc6, 0xf8, 0x38, 0x06, 0x91, 0x3c, 0x08, 0x00, 0x00, 0x1d, 0xb8, 0x00, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x7c, 0x7c, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x66, 0x66, 0x3e, 0x18, 0x70, 0x18, 0x18, 0x18, 0xff, 0x7e, 0x00, 0x7e, 0x00, 0x18, 0x6e, 0x18, 0x0c, 0x18, 0x3c, 0x7e, 0x7c, 0x0c, 0x3c, 0x3e, 0x18, 0x18, 0xe0, 0x00, 0x0e, 0x0c, 0xd6, 0x66, 0x7c, 0x60, 0x66, 0x7c, 0x7c, 0x6e, 0x7e, 0x18, 0x06, 0xf0, 0x60, 0xd6, 0x7e, 0x66, 0x66, 0x66, 0xfc, 0x38, 0x18, 0x66, 0x66, 0xd6, 0x18, 0x3c, 0x18, 0x18, 0x18, 0x18, 0xc6, 0x00, 0x00, 0x06, 0x66, 0x60, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x18, 0x0c, 0xf8, 0x18, 0xfe, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x18, 0x66, 0x66, 0xd6, 0x3c, 0x66, 0x0c, 0xf0, 0x18, 0x1e, 0xbe, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x60, 0x30, 0x66, 0x3c, 0x00, 0x66, 0x00, 0xa2, 0x3e, 0x36, 0x00, 0x7e, 0xb2, 0x00, 0x00, 0x7e, 0x78, 0x30, 0x00, 0x66, 0xca, 0x00, 0x00, 0x7c, 0x3c, 0xd8, 0x18, 0x18, 0x18, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xde, 0x60, 0x7c, 0x7c, 0x60, 0x7c, 0x18, 0x18, 0x18, 0x18, 0xf6, 0x76, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1b, 0x60, 0x66, 0x66, 0x66, 0x66, 0x18, 0x18, 0x18, 0x18, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x66, 0x06, 0x66, 0x06, 0x60, 0x60, 0x66, 0x60, 0x60, 0x60, 0x60, 0x60, 0x66, 0x66, 0xf6, 0x7e, 0x7c, 0x66, 0x7c, 0x66, 0x7c, 0x66, 0x7c, 0x66, 0x7c, 0x66, 0x6e, 0x66, 0x6e, 0x66, 0x6e, 0x66, 0x6e, 0x66, 0x7e, 0x7c, 0x7e, 0x66, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x66, 0x66, 0x06, 0x0c, 0xf0, 0xf8, 0xf8, 0x60, 0x60, 0x60, 0x18, 0x60, 0x30, 0x64, 0x32, 0x70, 0x38, 0x7e, 0x66, 0x7e, 0x66, 0x7e, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xde, 0xdb, 0xfc, 0x66, 0xfc, 0x66, 0xfc, 0x66, 0x38, 0x60, 0x38, 0x60, 0x38, 0x60, 0x38, 0x60, 0x18, 0x18, 0x18, 0x30, 0x3c, 0x30, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xd6, 0xd6, 0x66, 0x66, 0x66, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x3e, 0x3f, 0x0c, 0x00, 0x33, 0x00, 0x1e, 0x33, 0x30, 0x66, 0x7e, 0x60, 0x66, 0x7c, 0x18, 0x7e, 0x7e, 0x18, 0x78, 0x66, 0x6b, 0x7e, 0x3c, 0x66, 0x66, 0x66, 0x00, 0x0c, 0x18, 0x3c, 0x82, 0x18, 0x7f, 0xc6, 0x18, 0x3c, 0x66, 0x60, 0x66, 0x30, 0x66, 0x88, 0x7c, 0x3c, 0x66, 0x60, 0x60, 0x66, 0x3e, 0x30, 0x6c, 0x3e, 0x66, 0x66, 0x30, 0x66, 0xa8, 0x66, 0x60, 0xc6, 0x30, 0x66, 0x92, 0x66, 0x63, 0x6b, 0x30, 0x66, 0x66, 0x66, 0x63, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x18, 0x60, 0x7c, 0x38, 0x18, 0x18, 0x06, 0x0c, 0x4c, 0x18, 0xf0, 0x7e, 0x3c, 0x66, 0x66, 0x7e, 0x7c, 0x60, 0x66, 0x7c, 0x7e, 0x0c, 0x7e, 0x6e, 0x78, 0x66, 0x6b, 0x7e, 0x66, 0x66, 0x7e, 0x60, 0x18, 0x3c, 0x5a, 0x18, 0x66, 0x7e, 0xd6, 0xd6, 0x3e, 0xe6, 0x7e, 0x3e, 0x7b, 0x3e, 0x06, 0x60, 0x66, 0x60, 0x6c, 0x66, 0x5a, 0x46, 0x66, 0x66, 0x66, 0x26, 0x7f, 0x66, 0x66, 0x66, 0x66, 0x62, 0x18, 0x66, 0x3c, 0x66, 0x66, 0x66, 0xd6, 0xd6, 0xb0, 0xc6, 0x60, 0x1e, 0x5b, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x0c, 0x1e, 0x0c, 0x66, 0x18, 0x0c, 0x66, 0x66, 0x00, 0x06, 0x06, 0x0e, 0x36, 0x66, 0x18, 0x00, 0xc6, 0x36, 0x76, 0x76, 0x0e, 0x18, 0x36, 0x06, 0xf6, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x4f, 0xf2, 0x40, 0x02, 0x43, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x81, 0x83, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xf8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x81, 0xe6, 0x67, 0xd6, 0xfa, 0xba, 0x8c, 0x9d, 0x3c, 0x78, 0x1e, 0x1c, 0x39, 0x9c, 0x82, 0x02, 0xb8, 0x3a, 0x3a, 0x3a, 0xba, 0x02, 0xba, 0x3a, 0x06, 0x0e, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x18, 0x00, 0xff, 0x06, 0x30, 0xde, 0x00, 0x18, 0x18, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x18, 0x76, 0x18, 0x18, 0x0c, 0x6c, 0x06, 0x7e, 0x18, 0x66, 0x06, 0x00, 0x00, 0x70, 0x7e, 0x1c, 0x18, 0xd6, 0x7e, 0x66, 0x60, 0x66, 0x60, 0x60, 0x66, 0x66, 0x18, 0x06, 0xd8, 0x60, 0xd6, 0x7e, 0x66, 0x7e, 0x66, 0xf8, 0x1c, 0x18, 0x66, 0x66, 0xd6, 0x18, 0x18, 0x30, 0x18, 0x18, 0x18, 0xc6, 0x00, 0x00, 0x3e, 0x66, 0x60, 0x66, 0x66, 0x18, 0x66, 0x66, 0x18, 0x0c, 0xf0, 0x18, 0xd6, 0x66, 0x66, 0x66, 0x66, 0x60, 0x70, 0x18, 0x66, 0x66, 0xd6, 0x3c, 0x66, 0x18, 0xf0, 0x18, 0x1e, 0x9c, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x60, 0xfe, 0x5a, 0x18, 0x18, 0x66, 0x00, 0xa2, 0x00, 0x6c, 0x00, 0x7e, 0xba, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x66, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x32, 0x30, 0x32, 0x30, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0xf8, 0x60, 0x7c, 0x7c, 0x7c, 0x7c, 0x18, 0x18, 0x18, 0x18, 0xe6, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x18, 0x76, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x66, 0x66, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x7b, 0x60, 0x66, 0x66, 0x66, 0x66, 0x18, 0x18, 0x18, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x3e, 0x7e, 0x3e, 0x7e, 0x3e, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x66, 0x66, 0xf6, 0x66, 0x7c, 0x66, 0x7c, 0x66, 0x7c, 0x66, 0x60, 0x66, 0x7c, 0x66, 0x6e, 0x66, 0x6e, 0x66, 0x6e, 0x66, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x66, 0x66, 0x06, 0x0c, 0xd8, 0xf0, 0xf0, 0x60, 0x60, 0x60, 0x18, 0x60, 0x30, 0x60, 0x30, 0xe0, 0x18, 0x7e, 0x66, 0x7e, 0x66, 0x7e, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xd8, 0xdb, 0xf8, 0x60, 0xf8, 0x60, 0xf8, 0x60, 0x1c, 0x70, 0x1c, 0x70, 0x1c, 0x70, 0x1c, 0x70, 0x18, 0x18, 0x18, 0x30, 0x18, 0x78, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xd6, 0xd6, 0x3c, 0x66, 0x3c, 0x30, 0x18, 0x18, 0x18, 0x30, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x30, 0x33, 0x0c, 0x00, 0x33, 0x00, 0x1e, 0x3f, 0x30, 0x7e, 0x66, 0x60, 0x66, 0x60, 0x30, 0x66, 0x42, 0x18, 0x6c, 0x66, 0x6b, 0x7e, 0x3c, 0x66, 0x66, 0x7e, 0x00, 0x0c, 0x18, 0x18, 0x82, 0x18, 0x3e, 0x6c, 0x18, 0x18, 0x66, 0x7c, 0x66, 0x30, 0x66, 0x88, 0x66, 0x3c, 0x42, 0x7c, 0x60, 0x66, 0x5e, 0x30, 0x78, 0x7e, 0x66, 0x66, 0x1c, 0x66, 0x28, 0x66, 0x60, 0xc6, 0x30, 0x66, 0x92, 0x3c, 0x6b, 0x6b, 0x30, 0x66, 0x66, 0x66, 0x6b, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x1e, 0x60, 0x7c, 0x1c, 0x18, 0x18, 0x06, 0x0f, 0x7f, 0x1e, 0xd8, 0x7e, 0x18, 0x66, 0x7e, 0x66, 0x7e, 0x60, 0x66, 0x7c, 0x7e, 0x0c, 0x7e, 0x7e, 0x78, 0x66, 0x6b, 0x7e, 0x66, 0x66, 0x7c, 0x60, 0x18, 0x18, 0x5a, 0x18, 0x66, 0x3e, 0xd6, 0xd6, 0x3f, 0xf6, 0x66, 0x3e, 0x7b, 0x3e, 0x3e, 0x7c, 0x7c, 0x60, 0x4c, 0x66, 0x5a, 0x06, 0x6e, 0x6e, 0x6c, 0x26, 0x7f, 0x7e, 0x66, 0x66, 0x66, 0x60, 0x18, 0x66, 0x7e, 0x3c, 0x66, 0x66, 0xd6, 0xd6, 0x3e, 0xe6, 0x7c, 0x06, 0x5b, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x0c, 0x36, 0x0c, 0x66, 0x18, 0x0c, 0x66, 0x66, 0x00, 0x06, 0x06, 0x1c, 0x36, 0x66, 0x18, 0x00, 0xc6, 0x36, 0x06, 0x06, 0x06, 0x1c, 0x36, 0x06, 0xc6, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x4f, 0xf2, 0x40, 0x02, 0x43, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0xe7, 0xe6, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xb8, 0x3a, 0x3a, 0x3a, 0xba, 0x02, 0xba, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xfa, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xc3, 0x2c, 0x34, 0x92, 0xf2, 0x92, 0x8c, 0x81, 0x3c, 0xf8, 0x10, 0x12, 0x79, 0x9e, 0xc6, 0x06, 0xc0, 0x06, 0x06, 0x06, 0xc6, 0x06, 0xc6, 0x06, 0x7e, 0x10, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x18, 0x00, 0xff, 0x06, 0x36, 0xde, 0x00, 0x18, 0x18, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x30, 0x66, 0x18, 0x18, 0x0c, 0x6c, 0x06, 0x66, 0x18, 0x66, 0x06, 0x00, 0x00, 0x38, 0x7e, 0x38, 0x18, 0xdc, 0x7e, 0x66, 0x60, 0x66, 0x60, 0x60, 0x66, 0x66, 0x18, 0x06, 0xd8, 0x60, 0xc6, 0x6e, 0x66, 0x7c, 0x66, 0xd8, 0x0e, 0x18, 0x66, 0x66, 0xfe, 0x3c, 0x18, 0x30, 0x18, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x7e, 0x66, 0x60, 0x66, 0x7e, 0x18, 0x66, 0x66, 0x18, 0x0c, 0xf8, 0x18, 0xd6, 0x66, 0x66, 0x66, 0x66, 0x60, 0x3c, 0x18, 0x66, 0x66, 0xfe, 0x18, 0x66, 0x18, 0x38, 0x18, 0x38, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x66, 0x30, 0x5a, 0x7e, 0x18, 0x3c, 0x00, 0xba, 0x7e, 0xd8, 0x7e, 0x00, 0xaa, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x66, 0x0a, 0x18, 0x00, 0x00, 0x7e, 0x36, 0x66, 0x6e, 0x66, 0x30, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0xf8, 0x60, 0x60, 0x60, 0x7c, 0x60, 0x18, 0x18, 0x18, 0x18, 0x66, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x76, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x7e, 0x66, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0xff, 0x60, 0x7e, 0x7e, 0x7e, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x18, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x60, 0x7e, 0x60, 0x7e, 0x60, 0x7e, 0x60, 0x7e, 0x60, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x66, 0x66, 0x06, 0x0c, 0xd8, 0xf8, 0xf8, 0x60, 0x60, 0x60, 0x18, 0x60, 0x30, 0x60, 0x30, 0xe0, 0x18, 0x6e, 0x66, 0x6e, 0x66, 0x6e, 0x66, 0x66, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xd8, 0xdf, 0xd8, 0x60, 0xd8, 0x60, 0xd8, 0x60, 0x0e, 0x3c, 0x0e, 0x3c, 0x0e, 0x3c, 0x0e, 0x3c, 0x18, 0x18, 0x18, 0x30, 0x18, 0x30, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xfe, 0xfe, 0x3c, 0x66, 0x3c, 0x30, 0x18, 0x30, 0x18, 0x30, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x30, 0x33, 0x0c, 0x00, 0x33, 0x00, 0x0c, 0x1e, 0x30, 0x7e, 0x66, 0x60, 0x66, 0x60, 0x30, 0x66, 0x42, 0x18, 0x6c, 0x66, 0x63, 0x6e, 0x00, 0x66, 0x66, 0x7c, 0x00, 0x18, 0x18, 0x18, 0x82, 0x3c, 0x1c, 0x28, 0x18, 0x18, 0x66, 0x7c, 0x66, 0x30, 0x66, 0xdc, 0x66, 0x18, 0x42, 0x7c, 0x30, 0x66, 0x66, 0x30, 0x78, 0x66, 0x66, 0x66, 0x1c, 0x66, 0x28, 0x66, 0x60, 0xc6, 0x30, 0x66, 0x92, 0x3c, 0x6b, 0x6b, 0x30, 0x66, 0x66, 0x66, 0x6b, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x1a, 0x60, 0x60, 0x0e, 0x18, 0x18, 0x06, 0x0d, 0x4d, 0x1a, 0xd8, 0x76, 0x18, 0x66, 0x7e, 0x66, 0x66, 0x60, 0x66, 0x60, 0x5a, 0x06, 0x76, 0x76, 0x6c, 0x66, 0x63, 0x66, 0x66, 0x66, 0x60, 0x60, 0x18, 0x18, 0x5a, 0x3c, 0x66, 0x06, 0xd6, 0xd6, 0x33, 0xd6, 0x66, 0x06, 0x5b, 0x66, 0x7e, 0x7e, 0x7c, 0x60, 0x4c, 0x7e, 0x7e, 0x1c, 0x7e, 0x7e, 0x78, 0x66, 0x6b, 0x7e, 0x66, 0x66, 0x66, 0x60, 0x18, 0x1c, 0x5a, 0x18, 0x66, 0x7e, 0xd6, 0xd6, 0x3f, 0xf6, 0x7e, 0x7e, 0x7b, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x0c, 0x36, 0x0c, 0x66, 0x18, 0x0c, 0x66, 0x66, 0x00, 0x06, 0x06, 0x30, 0x36, 0x6e, 0x18, 0x00, 0xc6, 0x36, 0x06, 0x7e, 0x06, 0x0e, 0x36, 0x06, 0xc6, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x4f, 0xf2, 0x40, 0x02, 0x47, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x24, 0x2c, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0x06, 0x06, 0xc6, 0x06, 0xc6, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xf2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x66, 0x38, 0x1c, 0xba, 0xf6, 0xd6, 0xd8, 0xc3, 0x7e, 0x70, 0x1c, 0x1c, 0x71, 0x8e, 0xc6, 0x06, 0xc0, 0x06, 0x06, 0x06, 0xc6, 0x06, 0xc6, 0x06, 0x66, 0x0c, 0x1f, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x7e, 0x66, 0xcc, 0x00, 0x18, 0x18, 0x66, 0x18, 0x18, 0x00, 0x18, 0x30, 0x66, 0x18, 0x30, 0x66, 0x7e, 0x06, 0x66, 0x30, 0x66, 0x06, 0x18, 0x18, 0x1c, 0x00, 0x70, 0x18, 0xc0, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x66, 0x66, 0x18, 0x66, 0xcc, 0x60, 0xc6, 0x6e, 0x66, 0x60, 0x66, 0xcc, 0x06, 0x18, 0x66, 0x3c, 0xfe, 0x3c, 0x18, 0x60, 0x18, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x66, 0x66, 0x60, 0x66, 0x60, 0x18, 0x66, 0x66, 0x18, 0x0c, 0xd8, 0x18, 0xd6, 0x66, 0x66, 0x66, 0x66, 0x60, 0x0e, 0x18, 0x66, 0x3c, 0xfe, 0x3c, 0x66, 0x30, 0x18, 0x18, 0x30, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x7e, 0x30, 0x66, 0x18, 0x18, 0x18, 0x00, 0x82, 0x00, 0x6c, 0x7e, 0x00, 0x82, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x66, 0x0a, 0x3c, 0x00, 0x00, 0x00, 0x6c, 0xce, 0xd3, 0xce, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xd8, 0x66, 0x60, 0x60, 0x60, 0x60, 0x18, 0x18, 0x18, 0x18, 0x66, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x18, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xd8, 0x60, 0x60, 0x60, 0x60, 0x60, 0x18, 0x18, 0x18, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x18, 0x76, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x66, 0x60, 0x66, 0x60, 0x66, 0x60, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x66, 0x66, 0x66, 0x0c, 0xcc, 0xd8, 0xd8, 0x60, 0x60, 0x60, 0x18, 0x60, 0x30, 0x60, 0x30, 0x60, 0x18, 0x6e, 0x66, 0x6e, 0x66, 0x6e, 0x66, 0x66, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xd8, 0xd8, 0xcc, 0x60, 0xcc, 0x60, 0xcc, 0x60, 0x06, 0x0e, 0x06, 0x0e, 0x06, 0x0e, 0x06, 0x0e, 0x18, 0x18, 0x18, 0x30, 0x18, 0x30, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xfe, 0xfe, 0x18, 0x66, 0x18, 0x60, 0x30, 0x30, 0x30, 0x60, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3c, 0x30, 0x33, 0x0c, 0x00, 0x33, 0x00, 0x0c, 0x00, 0x30, 0x66, 0x66, 0x60, 0x66, 0x60, 0x60, 0x66, 0x66, 0x18, 0x66, 0x66, 0x63, 0x6e, 0x00, 0x66, 0x66, 0x60, 0x00, 0x30, 0x18, 0x18, 0xc6, 0x3c, 0x08, 0xaa, 0x18, 0x18, 0x66, 0x60, 0x66, 0x30, 0x66, 0xf6, 0x66, 0x3c, 0x66, 0x60, 0x18, 0x66, 0x66, 0x30, 0x6c, 0x66, 0x66, 0x3c, 0x30, 0x66, 0x28, 0x66, 0x60, 0xc6, 0x30, 0x66, 0xd6, 0x18, 0x6b, 0x6b, 0x30, 0x66, 0x66, 0x66, 0x6b, 0x00, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x19, 0x60, 0x60, 0x06, 0x18, 0x18, 0x66, 0x6d, 0x4d, 0x19, 0xcc, 0x76, 0x30, 0x66, 0x66, 0x66, 0x66, 0x60, 0x66, 0x60, 0x5a, 0x46, 0x76, 0x76, 0x66, 0x66, 0x63, 0x66, 0x66, 0x66, 0x60, 0x62, 0x18, 0x30, 0x7e, 0x66, 0x66, 0x06, 0xd6, 0xd6, 0x33, 0xd6, 0x66, 0x06, 0x5b, 0x66, 0x66, 0x66, 0x66, 0x60, 0x4c, 0x60, 0x5a, 0x06, 0x76, 0x76, 0x6c, 0x66, 0x63, 0x66, 0x66, 0x66, 0x7e, 0x60, 0x18, 0x1c, 0x5a, 0x3c, 0x66, 0x3e, 0xd6, 0xd6, 0x33, 0xd6, 0x66, 0x06, 0x5b, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x7e, 0x36, 0x0c, 0x66, 0x18, 0x0c, 0x66, 0x7e, 0x00, 0x06, 0x3e, 0x30, 0x3e, 0x6e, 0x18, 0x00, 0xfe, 0x7e, 0x06, 0x7e, 0x06, 0x7e, 0x36, 0x06, 0xfe, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x27, 0xe4, 0x40, 0x02, 0x4e, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x24, 0x38, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0x06, 0x06, 0xc6, 0x06, 0xc6, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0xf6, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x3c, 0x30, 0x0c, 0x38, 0xe6, 0xc6, 0x58, 0x66, 0xff, 0x00, 0x10, 0x14, 0x71, 0x8e, 0xc6, 0x06, 0xc0, 0x06, 0x06, 0x06, 0xc6, 0x06, 0xc6, 0x06, 0x66, 0x02, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x7c, 0x66, 0xcc, 0x00, 0x1c, 0x38, 0x66, 0x00, 0x18, 0x00, 0x18, 0x60, 0x66, 0x18, 0x30, 0x66, 0x7e, 0x66, 0x66, 0x30, 0x66, 0x0e, 0x18, 0x18, 0x0e, 0x00, 0xe0, 0x00, 0xe2, 0x66, 0x66, 0x66, 0x6e, 0x60, 0x60, 0x66, 0x66, 0x18, 0x66, 0xcc, 0x60, 0xc6, 0x66, 0x66, 0x60, 0x6a, 0xcc, 0x06, 0x18, 0x66, 0x3c, 0xee, 0x66, 0x18, 0x60, 0x18, 0x06, 0x18, 0x00, 0x00, 0x00, 0x66, 0x66, 0x60, 0x66, 0x60, 0x18, 0x7e, 0x66, 0x18, 0x0c, 0xcc, 0x18, 0xc6, 0x66, 0x66, 0x66, 0x66, 0x60, 0x06, 0x18, 0x66, 0x3c, 0xee, 0x3c, 0x7e, 0x30, 0x18, 0x18, 0x30, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x30, 0x3c, 0x18, 0x18, 0x4c, 0x00, 0xc6, 0x00, 0x36, 0x06, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x0a, 0x3c, 0x00, 0x00, 0x00, 0xd8, 0x1a, 0x06, 0x1a, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xd8, 0x66, 0x60, 0x60, 0x60, 0x60, 0x18, 0x18, 0x18, 0x18, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x42, 0x66, 0x66, 0x66, 0x66, 0x66, 0x18, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xd8, 0x60, 0x60, 0x60, 0x60, 0x60, 0x18, 0x18, 0x18, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x66, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x66, 0x60, 0x66, 0x60, 0x66, 0x60, 0x6e, 0x66, 0x6e, 0x66, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x66, 0x7e, 0x66, 0x7e, 0x66, 0x7e, 0x66, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf6, 0x66, 0x66, 0x0c, 0xcc, 0xcc, 0xcc, 0x60, 0x60, 0x60, 0x18, 0x60, 0x30, 0x60, 0x30, 0x60, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xd8, 0xd8, 0xcc, 0x60, 0xcc, 0x60, 0xcc, 0x60, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x18, 0x18, 0x18, 0x30, 0x18, 0x30, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xee, 0xee, 0x18, 0x7e, 0x18, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3c, 0x30, 0x33, 0x0c, 0x00, 0x33, 0x00, 0x0c, 0x00, 0x32, 0x66, 0x66, 0x60, 0x66, 0x60, 0x60, 0x66, 0x7e, 0x18, 0x66, 0x66, 0x63, 0x66, 0x00, 0x66, 0x66, 0x60, 0x00, 0x60, 0x18, 0x18, 0x7c, 0x66, 0x08, 0xee, 0x18, 0x18, 0x66, 0x60, 0x66, 0x32, 0x66, 0x62, 0x7c, 0x66, 0x7e, 0x60, 0x0c, 0x66, 0x66, 0x32, 0x6c, 0x66, 0x66, 0x3c, 0x30, 0x66, 0x28, 0x66, 0x7c, 0x6c, 0x20, 0x66, 0x7c, 0x3c, 0x6b, 0x6b, 0x32, 0x66, 0x66, 0x66, 0x6b, 0x00, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x1a, 0x60, 0x72, 0x06, 0x18, 0x18, 0x66, 0x6d, 0x4d, 0x1a, 0xcc, 0x66, 0x30, 0x66, 0x66, 0x66, 0x66, 0x60, 0x66, 0x60, 0x5a, 0x66, 0x66, 0x66, 0x66, 0x46, 0x63, 0x66, 0x66, 0x66, 0x60, 0x66, 0x18, 0x30, 0x3c, 0x66, 0x66, 0x06, 0xd6, 0xd6, 0x33, 0xd6, 0x66, 0x0e, 0x5b, 0x66, 0x66, 0x66, 0x66, 0x60, 0x4c, 0x62, 0x5a, 0x46, 0x66, 0x66, 0x66, 0x66, 0x63, 0x66, 0x66, 0x66, 0x7c, 0x62, 0x18, 0x18, 0x7e, 0x66, 0x66, 0x06, 0xd6, 0xd6, 0x33, 0xd6, 0x66, 0x1e, 0x5b, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x7e, 0x36, 0x0c, 0x66, 0x18, 0x04, 0x66, 0x7e, 0x00, 0x06, 0x3c, 0x30, 0x3e, 0x6e, 0x18, 0x00, 0x7c, 0x7e, 0x06, 0x7e, 0x06, 0x7e, 0x36, 0x06, 0xfe, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x23, 0xc4, 0x40, 0x02, 0x5c, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x24, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0x06, 0x06, 0xc6, 0x06, 0xc6, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xe6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x00, 0x00, 0x7c, 0xee, 0xee, 0x70, 0x3c, 0x10, 0x00, 0x10, 0x12, 0x61, 0x86, 0xba, 0x02, 0xb8, 0x3a, 0x02, 0x3a, 0xba, 0x02, 0xba, 0x3a, 0x7e, 0x1c, 0x18, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0xfe, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x18, 0x00, 0x18, 0x60, 0x7e, 0x7e, 0x7e, 0x7e, 0x0c, 0x7e, 0x7e, 0x30, 0x7e, 0x3c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x7e, 0x66, 0x7e, 0x7e, 0x7c, 0x7e, 0x60, 0x7e, 0x66, 0x7e, 0x7e, 0xc6, 0x7e, 0xc6, 0x66, 0x7e, 0x60, 0x7c, 0xc6, 0x7e, 0x18, 0x7e, 0x18, 0xc6, 0x66, 0x18, 0x7e, 0x1e, 0x06, 0x78, 0x00, 0xfe, 0x00, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x18, 0x3e, 0x66, 0x3c, 0x0c, 0xce, 0x3c, 0xc6, 0x66, 0x7e, 0x7e, 0x7e, 0x60, 0x7e, 0x1e, 0x7e, 0x18, 0xc6, 0x66, 0x3e, 0x7e, 0x18, 0x18, 0x30, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7f, 0x42, 0x18, 0x18, 0x6c, 0x00, 0x7c, 0x00, 0x1a, 0x06, 0x00, 0x7c, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x5d, 0x0a, 0x18, 0x00, 0x00, 0x00, 0xb0, 0x32, 0x0c, 0x32, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xde, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x3c, 0x7e, 0x7e, 0x7c, 0x66, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x00, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x18, 0x60, 0x6c, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0xff, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x3c, 0x3c, 0x3c, 0x3c, 0x7e, 0x66, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x00, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x3e, 0x7e, 0x3e, 0x66, 0x7e, 0x66, 0x7e, 0x66, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7c, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x3e, 0x7e, 0x3e, 0x7e, 0x3e, 0x7e, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x3c, 0x7e, 0x3c, 0x7e, 0x3c, 0x7e, 0x3c, 0x7e, 0x3c, 0xf6, 0xf6, 0x7e, 0x0c, 0xc6, 0xce, 0xce, 0x7e, 0xf0, 0x7e, 0x3c, 0x7e, 0x78, 0x7e, 0x78, 0x7e, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0xfe, 0xff, 0xc6, 0x60, 0xc6, 0x60, 0xc6, 0x60, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x18, 0x1e, 0x18, 0x3c, 0x18, 0x3c, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0xc6, 0xc6, 0x18, 0x3e, 0x18, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x18, 0x3f, 0x33, 0x3f, 0x00, 0x3f, 0x00, 0x0c, 0x3f, 0x3e, 0x66, 0x7e, 0x60, 0x7e, 0x7e, 0x7e, 0x66, 0x3c, 0x7e, 0x63, 0x66, 0x63, 0x66, 0x7e, 0x7e, 0x66, 0x60, 0x00, 0xfe, 0x18, 0x18, 0x10, 0x66, 0x08, 0x6c, 0x7e, 0x18, 0x7f, 0x7e, 0x66, 0x3e, 0x7e, 0x00, 0x6c, 0x66, 0x3c, 0x7e, 0x06, 0x66, 0x7e, 0x3e, 0x66, 0x66, 0x7e, 0x18, 0x1c, 0x7e, 0x00, 0x7e, 0x3e, 0x38, 0x00, 0x7e, 0x10, 0x3c, 0x3e, 0x7f, 0x3e, 0x7e, 0x7e, 0x7e, 0x7f, 0x00, 0x7e, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x1a, 0x60, 0x3e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x4d, 0x1a, 0xc6, 0x66, 0x60, 0x7e, 0x66, 0x7e, 0x7e, 0x60, 0xff, 0x7e, 0x5a, 0x7e, 0x66, 0x66, 0x66, 0xc6, 0x63, 0x66, 0x7e, 0x66, 0x60, 0x7e, 0x18, 0x60, 0x18, 0x66, 0x7f, 0x06, 0xfe, 0xff, 0x3f, 0xf6, 0x7e, 0x7c, 0x5f, 0x66, 0x7e, 0x7e, 0x66, 0x60, 0xfe, 0x7e, 0x5a, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x63, 0x66, 0x7e, 0x66, 0x60, 0x7e, 0x18, 0x18, 0x3c, 0x66, 0x7f, 0x06, 0xfe, 0xff, 0x3f, 0xf6, 0x7e, 0x7c, 0x5f, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x10, 0x08, 0x40, 0x02, 0x58, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xb8, 0x3a, 0x02, 0x3a, 0xba, 0x02, 0xba, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xee, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x38, 0x00, 0x00, 0x00, 0x41, 0x82, 0x7c, 0x00, 0x7c, 0x7c, 0x00, 0x7c, 0x7c, 0x00, 0x7c, 0x7c, 0x3c, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x76, 0x00, 0x06, 0x60, 0x00, 0x00, 0x18, 0x00, 0x18, 0x60, 0x3c, 0x7e, 0x7e, 0x3c, 0x0c, 0x3c, 0x3c, 0x30, 0x3c, 0x38, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x66, 0x7c, 0x3c, 0x78, 0x7e, 0x60, 0x3c, 0x66, 0x7e, 0x3c, 0xc6, 0x7e, 0xc6, 0x66, 0x3c, 0x60, 0x36, 0xc6, 0x7c, 0x18, 0x3c, 0x18, 0x82, 0x66, 0x18, 0x7e, 0x1e, 0x06, 0x78, 0x00, 0xfe, 0x00, 0x3e, 0x7c, 0x3e, 0x3e, 0x3e, 0x18, 0x06, 0x66, 0x3c, 0x0c, 0xc6, 0x3c, 0xc6, 0x66, 0x3c, 0x7c, 0x3e, 0x60, 0x7c, 0x0e, 0x3e, 0x18, 0x82, 0x66, 0x06, 0x7e, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0xff, 0x81, 0x18, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xc0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x3f, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xde, 0x3c, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x3c, 0x7e, 0x7e, 0x78, 0x66, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0xbc, 0x3c, 0x3c, 0x3c, 0x3c, 0x18, 0x60, 0x60, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x7f, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x66, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0xbc, 0x3e, 0x3e, 0x3e, 0x3e, 0x06, 0x7c, 0x06, 0x66, 0x3e, 0x66, 0x3e, 0x66, 0x3e, 0x3c, 0x3e, 0x3c, 0x3e, 0x3c, 0x3e, 0x3c, 0x3e, 0x78, 0x3e, 0x78, 0x3e, 0x7e, 0x3e, 0x7e, 0x3e, 0x7e, 0x3e, 0x7e, 0x3e, 0x7e, 0x3e, 0x3c, 0x06, 0x3c, 0x06, 0x3c, 0x06, 0x3c, 0x06, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x3c, 0x7e, 0x3c, 0x7e, 0x3c, 0x7e, 0x3c, 0x7e, 0x3c, 0x0e, 0x0e, 0x3c, 0x0c, 0xc6, 0xc6, 0xc6, 0x7e, 0xf0, 0x7e, 0x3c, 0x7e, 0x78, 0x7e, 0x78, 0x7e, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x62, 0x62, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x7e, 0x7f, 0xc6, 0x60, 0xc6, 0x60, 0xc6, 0x60, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x18, 0x0e, 0x18, 0x1c, 0x18, 0x1c, 0x3c, 0x3e, 0x3c, 0x3e, 0x3c, 0x3e, 0x3c, 0x3e, 0x3c, 0x3e, 0x3c, 0x3e, 0x82, 0x82, 0x18, 0x06, 0x18, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x3f, 0x33, 0x3f, 0x00, 0x1e, 0x00, 0x0c, 0x3f, 0x1c, 0x66, 0x7c, 0xf0, 0x7e, 0x7e, 0x7e, 0x66, 0x00, 0x7e, 0x63, 0x66, 0x63, 0x66, 0x7e, 0x3c, 0x66, 0x60, 0x00, 0xfe, 0x18, 0x18, 0x10, 0x66, 0x08, 0x00, 0x7e, 0x18, 0x3f, 0x3e, 0x66, 0x1c, 0x3c, 0x00, 0x60, 0x66, 0x00, 0x3e, 0x06, 0x66, 0x3c, 0x1c, 0x66, 0x66, 0x7f, 0x18, 0x1e, 0x3c, 0x00, 0x7c, 0x06, 0x00, 0x00, 0x3c, 0x10, 0x66, 0x1c, 0x3e, 0x1c, 0x3c, 0x3c, 0x3c, 0x3e, 0x00, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x18, 0x60, 0x1c, 0x7c, 0x7e, 0x7e, 0x3c, 0x3e, 0x4e, 0x18, 0xc6, 0x66, 0xc0, 0x7e, 0x66, 0x7c, 0x7c, 0x60, 0xff, 0x7e, 0x99, 0x3c, 0x66, 0x66, 0x66, 0xc6, 0x63, 0x66, 0x3c, 0x66, 0x60, 0x3c, 0x18, 0xc0, 0x18, 0x66, 0x7f, 0x06, 0xfe, 0xff, 0x3e, 0xe6, 0x7c, 0x78, 0x4e, 0x66, 0x3e, 0x3c, 0x7c, 0x60, 0xfe, 0x3c, 0x99, 0x3c, 0x66, 0x66, 0x66, 0xc6, 0x63, 0x66, 0x3c, 0x66, 0x60, 0x3c, 0x18, 0x30, 0x18, 0x66, 0x7f, 0x06, 0xfe, 0xff, 0x3e, 0xe6, 0x7c, 0x78, 0x4e, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x0c, 0x30, 0x40, 0x02, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x00, 0x7c, 0x7c, 0x00, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x0e, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x1f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x60, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x7e, 0x0c, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x7c, 0x3c, 0x00, 0x7c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7e, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x18, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x7f, 0xfe, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x60, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x38, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x78, 0x38, 0x00, 0x78, 0x38, 0x38, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x60, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; aranym-1.1.0/src/gui-sdl/fntconv.c0000664000175000017500000011614013454637621015160 0ustar joyjoy/* * fntconv.c : convert Gemdos fonts between FNT, TXT and C formats * * Copyright (c) 2001 Laurent Vogel * Copyright (c) 2017 Thorsten Otto * * Authors: * LVL Laurent Vogel * THO Thorsten Otto * * This file is distributed under the GPL, version 2 or at your * option any later version. See doc/license.txt for details. */ #include #include #include #include #include typedef unsigned char UBYTE; typedef signed char BYTE; typedef unsigned short UWORD; typedef short WORD; typedef unsigned long ULONG; typedef long LONG; #define FILE_C 1 #define FILE_TXT 2 #define FILE_FNT 3 #define FILE_BMP 4 static int convert_from; static int convert_to; static int scale = 1; static int grid = 0; #define MAX_ADE 0x7fffl static int all_chars = 0; static int for_aranym = 0; static int do_off_table = 1; static const char *varname = "THISFONT"; /* * internal error routine */ static void fatal(const char *s, ...) { va_list ap; va_start(ap, s); vfprintf(stderr, s, ap); fprintf(stderr, "\naborted.\n"); va_end(ap); exit(EXIT_FAILURE); } /* * memory */ static void *xmalloc(size_t s) { void *a = calloc(1, s); if (a == 0) fatal("memory"); return a; } /* * xstrdup */ static char *xstrdup(const char *s) { size_t len = strlen(s); char *a = xmalloc(len + 1); strcpy(a, s); return a; } /* * little/big endian conversion */ static LONG get_b_long(void *addr) { UBYTE *uaddr = (UBYTE *) addr; return (uaddr[0] << 24) + (uaddr[1] << 16) + (uaddr[2] << 8) + uaddr[3]; } static void set_b_long(void *addr, LONG value) { UBYTE *uaddr = (UBYTE *) addr; uaddr[0] = value >> 24; uaddr[1] = value >> 16; uaddr[2] = value >> 8; uaddr[3] = value; } static WORD get_b_word(void *addr) { UBYTE *uaddr = (UBYTE *) addr; return (uaddr[0] << 8) + uaddr[1]; } static void set_b_word(void *addr, WORD value) { UBYTE *uaddr = (UBYTE *) addr; uaddr[0] = value >> 8; uaddr[1] = value; } static LONG get_l_long(void *addr) { UBYTE *uaddr = (UBYTE *) addr; return (uaddr[3] << 24) + (uaddr[2] << 16) + (uaddr[1] << 8) + uaddr[0]; } static void set_l_long(void *addr, LONG value) { UBYTE *uaddr = (UBYTE *) addr; uaddr[3] = value >> 24; uaddr[2] = value >> 16; uaddr[1] = value >> 8; uaddr[0] = value; } static void set_l_word(void *addr, WORD value) { UBYTE *uaddr = (UBYTE *) addr; uaddr[1] = value >> 8; uaddr[0] = value; } static WORD get_l_word(void *addr) { UBYTE *uaddr = (UBYTE *) addr; return (uaddr[1] << 8) + uaddr[0]; } #if 0 static void set_l_word(void *addr, WORD value) { UBYTE *uaddr = (UBYTE *) addr; uaddr[1] = value >> 8; uaddr[0] = value; } #endif /* * fontdef.h - font-header definitions * */ /* fh_flags */ #define F_DEFAULT 1 /* this is the default font (face and size) */ #define F_HORZ_OFF 2 /* there are left and right offset tables */ #define F_STDFORM 4 /* is the font in standard (bigendian) format */ #define F_MONOSPACE 8 /* is the font monospaced */ #define F_EXT_HDR 32 /* extended header */ /* flags that this tool supports */ #define F_SUPPORTED (F_STDFORM|F_MONOSPACE|F_DEFAULT|F_HORZ_OFF|F_EXT_HDR) #define F_EXT_HDR_SIZE 62 /* size of an additional extended header */ /* style bits */ #define F_THICKEN 1 #define F_LIGHT 2 #define F_SKEW 4 #define F_UNDER 8 #define F_OUTLINE 16 #define F_SHADOW 32 struct font_file_hdr { /* describes a .FNT file header */ UBYTE font_id[2]; UBYTE point[2]; char name[32]; UBYTE first_ade[2]; UBYTE last_ade[2]; UBYTE top[2]; UBYTE ascent[2]; UBYTE half[2]; UBYTE descent[2]; UBYTE bottom[2]; UBYTE max_char_width[2]; UBYTE max_cell_width[2]; UBYTE left_offset[2]; /* amount character slants left when skewed */ UBYTE right_offset[2]; /* amount character slants right */ UBYTE thicken[2]; /* number of pixels to smear */ UBYTE ul_size[2]; /* size of the underline */ UBYTE lighten[2]; /* mask to and with to lighten */ UBYTE skew[2]; /* mask for skewing */ UBYTE flags[2]; UBYTE hor_table[4]; /* offset of horizontal offsets */ UBYTE off_table[4]; /* offset of character offsets */ UBYTE dat_table[4]; /* offset of character definitions */ UBYTE form_width[2]; UBYTE form_height[2]; UBYTE next_font[4]; }; struct font { /* describes a font in memory */ WORD font_id; WORD point; char name[32]; UWORD first_ade; UWORD last_ade; UWORD top; UWORD ascent; UWORD half; UWORD descent; UWORD bottom; UWORD max_char_width; UWORD max_cell_width; UWORD left_offset; /* amount character slants left when skewed */ UWORD right_offset; /* amount character slants right */ UWORD thicken; /* number of pixels to smear */ UWORD ul_size; /* size of the underline */ UWORD lighten; /* mask to and with to lighten */ UWORD skew; /* mask for skewing */ UWORD flags; UBYTE *hor_table; /* horizontal offsets, 2 bytes per character */ unsigned long *off_table; /* character offsets, 0xFFFF if no char present. */ UBYTE *dat_table; /* character definitions */ unsigned long form_width; UWORD form_height; }; #define F_NO_CHAR 0xFFFFu #define F_NO_CHARL 0xFFFFFFFFul static FILE *open_output(const char **filename, const char *mode) { FILE *f; if (*filename == NULL || strcmp(*filename, "-") == 0) { f = fdopen(fileno(stdout), mode); *filename = ""; } else { f = fopen(*filename, mode); } if (f == NULL) fatal("can't create %s", *filename); return f; } static FILE *open_input(const char **filename, const char *mode) { FILE *f; if (*filename == NULL || strcmp(*filename, "-") == 0) { f = fdopen(fileno(stdin), mode); *filename = ""; } else { f = fopen(*filename, mode); } if (f == NULL) fatal("can't open %s", *filename); return f; } /* * text input files */ #define BACKSIZ 10 #define READSIZ 512 typedef struct ifile { long lineno; char *fname; FILE *fh; UBYTE buf[BACKSIZ + READSIZ]; long size; long index; int ateof; } IFILE; static void irefill(IFILE *f) { if (f->size > BACKSIZ) { memmove(f->buf, f->buf + f->size - BACKSIZ, BACKSIZ); f->size = BACKSIZ; f->index = f->size; } f->size += fread(f->buf + f->size, 1, READSIZ, f->fh); } static IFILE *ifopen(const char *fname) { IFILE *f = xmalloc(sizeof(IFILE)); f->fh = open_input(&fname, "rb"); if (f->fh == NULL) { free(f); return NULL; } f->fname = xstrdup(fname); f->size = 0; f->index = 0; f->ateof = 0; f->lineno = 1; return f; } static void ifclose(IFILE *f) { fclose(f->fh); free(f); } static void iback(IFILE *f) { if (f->index == 0) { fatal("too far backward"); } else { f->index--; } } static int igetc(IFILE *f) { if (f->index >= f->size) { irefill(f); if (f->index >= f->size) { f->ateof = 1; return EOF; } } return f->buf[f->index++]; } /* returns the next logical char, in sh syntax */ static int inextsh(IFILE *f) { int ret; ret = igetc(f); if (ret == 015) { ret = igetc(f); if (ret == 012) { f->lineno++; return '\n'; } else { iback(f); f->lineno++; return '\n'; } } else if (ret == 012) { f->lineno++; return '\n'; } else { return ret; } } /* read a line, ignoring comments, initial white, trailing white, * empty lines and long lines */ static int igetline(IFILE *f, char *buf, int max) { char *b; char *bmax = buf + max - 1; int c; again: c = inextsh(f); b = buf; if (c == '#') { ignore: while (c != EOF && c != '\n') { c = inextsh(f); } goto again; } while (c == ' ' || c == '\t') { c = inextsh(f); } while (c != EOF && c != '\n') { if (b >= bmax) { fprintf(stderr, "file %s, line %ld too long\n", f->fname, f->lineno); goto ignore; } *b++ = c; c = inextsh(f); } /* remove trailing white */ if (b == buf) return 0; /* EOF */ b--; while (b >= buf && (*b == ' ' || *b == '\t')) { b--; } b++; *b = 0; return 1; } /* * functions to try read some patterns. * they look in a string, return 1 if read, 0 if not read. * if the pattern was read, the string pointer is set to the * character immediately after the last character of the pattern. */ /* backslash sequences in C strings */ static int try_backslash(char **cc, long *val) { long ret; char *c = *cc; if (*c++ != '\\') return 0; switch (*c) { case 0: return 0; case 'a': ret = '\a'; c++; break; case 'b': ret = '\b'; c++; break; case 'f': ret = '\f'; c++; break; case 'n': ret = '\n'; c++; break; case 'r': ret = '\r'; c++; break; case 't': ret = '\t'; c++; break; case 'v': ret = '\v'; c++; break; case '\\': case '\'': case '\"': ret = *c++; break; default: if (*c >= '0' && *c <= '7') { ret = *c++ - '0'; if (*c >= '0' && *c <= '7') { ret <<= 3; ret |= *c++ - '0'; if (*c >= '0' && *c <= '7') { ret <<= 3; ret |= *c++ - '0'; } } } else { ret = *c++; } break; } *cc = c; *val = ret; return 1; } static int try_unsigned(char **cc, long *val) { long ret; char *c = *cc; if (*c == '0') { c++; if (*c == 'x') { c++; ret = 0; if (*c == 0) return 0; while (*c) { if (*c >= '0' && *c <= '9') { ret <<= 4; ret |= (*c - '0'); } else if (*c >= 'a' && *c <= 'f') { ret <<= 4; ret |= (*c - 'a' + 10); } else if (*c >= 'A' && *c <= 'F') { ret <<= 4; ret |= (*c - 'A' + 10); } else break; c++; } } else { ret = 0; while (*c >= '0' && *c <= '7') { ret <<= 3; ret |= (*c++ - '0'); } } } else if (*c >= '1' && *c <= '9') { ret = 0; while (*c >= '0' && *c <= '9') { ret *= 10; ret += (*c++ - '0'); } } else if (*c == '\'') { c++; if (try_backslash(&c, &ret)) { if (*c++ != '\'') return 0; } else if (*c == '\'' || *c < 32 || *c >= 127) { return 0; } else { ret = (*c++) & 0xFF; if (*c++ != '\'') return 0; } } else return 0; *cc = c; *val = ret; return 1; } #if 0 static int try_signed(char **cc, long *val) { char *c = *cc; if (*c == '-') { c++; if (try_unsigned(&c, val)) { *val = -*val; *cc = c; return 1; } else { return 0; } } else { return try_unsigned(cc, val); } } #endif static int try_given_string(char **cc, char *s) { size_t n = strlen(s); if (!strncmp(*cc, s, n)) { *cc += n; return 1; } else { return 0; } } static int try_c_string(char **cc, char *s, int max) { char *c = *cc; char *smax = s + max - 1; long u; if (*c != '"') { fprintf(stderr, "c='%c'\n", *c); return 0; } c++; while (*c != '"') { if (*c == 0) { fprintf(stderr, "c='%c'\n", *c); return 0; } if (s >= smax) { fprintf(stderr, "c='%c'\n", *c); return 0; } if (try_backslash(&c, &u)) { *s++ = u; } else { *s++ = *c++; } } c++; *s++ = 0; *cc = c; return 1; } static int try_white(char **cc) { char *c = *cc; if (*c == ' ' || *c == '\t') { c++; while (*c == ' ' || *c == '\t') c++; *cc = c; return 1; } else return 0; } static int try_eol(char **cc) { return (**cc == 0) ? 1 : 0; } /* * simple bitmap read/write */ static int get_bit(UBYTE *addr, long i) { return (addr[i / 8] & (1 << (7 - (i & 7)))) ? 1 : 0; } static void set_bit(UBYTE *addr, long i) { addr[i / 8] |= (1 << (7 - (i & 7))); } static unsigned long get_width(struct font *p, unsigned short ch) { unsigned short next; unsigned short bmnum = p->last_ade - p->first_ade + 1; unsigned long off; off = p->off_table[ch]; if (off != F_NO_CHARL) { for (next = ch + 1; next <= bmnum; next++) { unsigned long nextoff = p->off_table[next]; if (nextoff != F_NO_CHARL) return nextoff - off; } off = F_NO_CHARL; } return off; } static void check_monospaced(struct font *p, const char *filename) { int i, bmnum; int mono = 1; unsigned long width, firstwidth; bmnum = p->last_ade - p->first_ade + 1; firstwidth = get_width(p, 0); for (i = 0; i < bmnum; i++) { width = get_width(p, i); if (width == F_NO_CHARL) continue; if (width != 0 && width != firstwidth) { mono = 0; if (p->flags & F_MONOSPACE) fprintf(stderr, "%s: warning: font says it is monospaced, but isn't\n", filename); p->flags &= ~F_MONOSPACE; return; } } if (mono && !(p->flags & F_MONOSPACE)) { fprintf(stderr, "%s: warning: font does not say it is monospaced, but is\n", filename); p->flags |= F_MONOSPACE; } } /* * read functions */ static struct font *read_txt(const char *fname) { IFILE *f; int ch, i, j, k, lastch; unsigned long off; int height; unsigned long width = 0; int w; UBYTE *bms; int bmsize, bmnum; int first, last; UBYTE *b; char *c; long u; char line[200]; struct font *p; int max = 80; p = xmalloc(sizeof(*p)); if (p == NULL) fatal("memory"); f = ifopen(fname); #define EXPECT(a) \ if(!igetline(f, line, max) || strcmp(line, a) != 0) \ { \ fprintf(stderr, "\"%s\" expected\n", a); \ goto fail; \ } EXPECT("GDOSFONT"); EXPECT("version 1.0"); #define EXPECTNUM(a) c=line; \ if(!igetline(f, line, max) || !try_given_string(&c, #a) \ || !try_white(&c) || !try_unsigned(&c, &u) || !try_eol(&c)) \ { \ fprintf(stderr, "\"%s\" with number expected\n", #a); \ goto fail; \ } \ p->a = u; EXPECTNUM(font_id); EXPECTNUM(point); c = line; if (!igetline(f, line, max) || !try_given_string(&c, "name") || !try_white(&c) || !try_c_string(&c, p->name, 32) || !try_eol(&c)) { fprintf(stderr, "\"%s\" expected\n", "name"); goto fail; } EXPECTNUM(first_ade); EXPECTNUM(last_ade); EXPECTNUM(top); EXPECTNUM(ascent); EXPECTNUM(half); EXPECTNUM(descent); EXPECTNUM(bottom); EXPECTNUM(max_char_width); EXPECTNUM(max_cell_width); EXPECTNUM(left_offset); EXPECTNUM(right_offset); EXPECTNUM(thicken); EXPECTNUM(ul_size); EXPECTNUM(lighten); EXPECTNUM(skew); EXPECTNUM(flags); EXPECTNUM(form_height); #undef EXPECTNUM if (p->flags & F_HORZ_OFF) { fatal("horizontal offsets not handled"); } first = p->first_ade; last = p->last_ade; height = p->form_height; if (first < 0 || last < 0 || (long)first > MAX_ADE || first > last) { fatal("wrong char range : first = %d, last = %d", first, last); } if (p->max_cell_width >= 40 || p->form_height >= 40) { fatal("unreasonable font size %dx%d", p->max_cell_width, height); } /* allocate a big buffer to hold all bitmaps */ bmnum = last - first + 1; bmsize = (p->max_cell_width * height + 7) >> 3; bms = xmalloc((size_t)bmsize * bmnum); p->off_table = xmalloc(sizeof(*p->off_table) * (bmnum + 1)); for (i = 0; i < bmnum; i++) { p->off_table[i] = F_NO_CHARL; } lastch = 0; for (;;) { /* for each char */ c = line; if (!igetline(f, line, max)) { fprintf(stderr, "unexpected EOF\n"); goto fail; } if (strcmp(line, "endfont") == 0) break; if (!try_given_string(&c, "char") || !try_white(&c) || !try_unsigned(&c, &u) || !try_eol(&c)) { fprintf(stderr, "\"%s\" with number expected\n", "char"); goto fail; } ch = (int)u; if (ch < first || ch > last) { fprintf(stderr, "wrong character number 0x%x\n", ch); goto fail; } if (ch < lastch) fprintf(stderr, "%s:%ld: warning: char 0x%x less previous char 0x%x\n", fname, f->lineno, ch, lastch); lastch = ch; ch -= first; if (p->off_table[ch] != F_NO_CHARL) { fprintf(stderr, "%s:%ld: character number 0x%x was already defined\n", fname, f->lineno, lastch); goto fail; } b = bms + ch * bmsize; k = 0; for (i = 0; i < height; i++) { if (!igetline(f, line, max)) { fprintf(stderr, "unexpected EOF\n"); goto fail; } for (c = line, w = 0; *c; c++, w++) { if (w >= p->max_cell_width) { fprintf(stderr, "bitmap line to long at line %ld.", f->lineno); goto fail; } else if (*c == 'X') { set_bit(b, k); k++; } else if (*c == '.') { k++; } else { fprintf(stderr, "illegal character '%c' in bitmap definition\n", *c); goto fail; } } if (i == 0) { width = w; } else if (w != width) { fprintf(stderr, "bitmap lines of different lengths\n"); goto fail; } } EXPECT("endchar"); p->off_table[ch] = width; /* != F_NO_CHAR, real value filled later */ if ((all_chars || (p->flags & F_MONOSPACE)) && width != p->max_cell_width) { fprintf(stderr, "%s: 0x%x: width %ld != cell width %d\n", fname, lastch, width, p->max_cell_width); goto fail; } } ifclose(f); #undef EXPECT /* compute size of final form, and compute offs from widths */ off = 0; for (i = 0; i < bmnum; i++) { width = p->off_table[i]; p->off_table[i] = off; if (width != F_NO_CHARL) { off += width; } else { if (i < 256 && !(i >= 0x80 && i <= 0x9f)) { fprintf(stderr, "%s: warning: %x undefined\n", fname, i); } if (all_chars) { off += p->max_cell_width; } } } p->off_table[bmnum] = off; if (convert_to == FILE_FNT && off >= 0x10000L) { fprintf(stderr, "%s: last offset %ld too large for generating GEM font\n", fname, off); exit(EXIT_FAILURE); } p->form_width = ((off + 15) >> 4) << 1; p->dat_table = xmalloc((size_t)height * p->form_width); check_monospaced(p, fname); /* now, pack the bitmaps in the destination form */ for (i = 0; i < bmnum; i++) { off = p->off_table[i]; width = get_width(p, i); if (width == F_NO_CHARL) continue; b = bms + bmsize * i; k = 0; for (j = 0; j < height; j++) { for (w = 0; w < width; w++) { if (get_bit(b, k)) { set_bit(p->dat_table + j * p->form_width, off + w); } k++; } } } /* free temporary form */ free(bms); return p; fail: fprintf(stderr, "fatal error file %s line %ld\n", f->fname, f->lineno - 1); ifclose(f); exit(EXIT_FAILURE); return NULL; } static struct font *read_fnt(const char *fname) { struct font *p; FILE *f; struct font_file_hdr h; long count; long off_hor_table; long off_off_table; long off_dat_table; int bigendian = 0; int bmnum; p = malloc(sizeof(struct font)); if (p == NULL) fatal("memory"); f = open_input(&fname, "rb"); count = fread(&h, 1, sizeof(h), f); if (count != sizeof(h)) fatal("short fread"); /* determine byte order */ if (get_l_word(h.point) >= 256) { bigendian = 1; } else { bigendian = 0; } /* convert the header */ #define GET_WORD(a) \ if(bigendian) p->a = get_b_word(h.a); else p->a = get_l_word(h.a); GET_WORD(font_id); GET_WORD(point); memcpy(p->name, h.name, sizeof(h.name)); GET_WORD(first_ade); GET_WORD(last_ade); GET_WORD(top); GET_WORD(ascent); GET_WORD(half); GET_WORD(descent); GET_WORD(bottom); GET_WORD(max_char_width); GET_WORD(max_cell_width); GET_WORD(left_offset); GET_WORD(right_offset); GET_WORD(thicken); GET_WORD(ul_size); GET_WORD(lighten); GET_WORD(skew); GET_WORD(flags); if (bigendian) { off_hor_table = get_b_long(h.hor_table); off_off_table = get_b_long(h.off_table); off_dat_table = get_b_long(h.dat_table); } else { off_hor_table = get_l_long(h.hor_table); off_off_table = get_l_long(h.off_table); off_dat_table = get_l_long(h.dat_table); } GET_WORD(form_width); GET_WORD(form_height); #undef GET_WORD /* make some checks */ if (p->last_ade > MAX_ADE || p->first_ade > p->last_ade) { fatal("wrong char range : first = %d, last = %d", p->first_ade, p->last_ade); } if (p->max_cell_width >= 40 || p->form_height >= 40) { fatal("unreasonable font size %dx%d", p->max_cell_width, p->form_height); } if (fseek(f, off_off_table, SEEK_SET)) fatal("seek"); bmnum = p->last_ade - p->first_ade + 1; p->off_table = xmalloc(sizeof(*p->off_table) * (bmnum + 1)); { int i; char buf[2]; for (i = 0; i <= bmnum; i++) { count = 2; if ((long)fread(buf, 1, count, f) != count) fatal("short read"); if (bigendian) { p->off_table[i] = get_b_word(buf); } else { p->off_table[i] = get_l_word(buf); } if (p->off_table[i] == F_NO_CHAR) p->off_table[i] = F_NO_CHARL; } } if (fseek(f, off_dat_table, SEEK_SET)) fatal("seek"); count = p->form_height * p->form_width; p->dat_table = malloc(count); if (p->dat_table == NULL) fatal("memory"); if ((long)fread(p->dat_table, 1, count, f) != count) fatal("short read"); if (p->flags & F_HORZ_OFF) { long i; int empty; /* * check wether offset table is really present; * some fonts have this incorrectly set */ count = 2 * bmnum; if (off_hor_table == 0 || off_hor_table == off_off_table) { fprintf(stderr, "%s: ignoring non-existing offset table\n", fname); p->flags &= ~F_HORZ_OFF; } else if ((off_off_table - off_hor_table) < count) { fprintf(stderr, "%s: ignoring offset table of size %ld, should be %ld\n", fname, off_off_table - off_hor_table, count); p->flags &= ~F_HORZ_OFF; } else { p->hor_table = xmalloc(count); if (fseek(f, off_hor_table, SEEK_SET)) fatal("seek"); if ((long)fread(p->hor_table, 1, count, f) != count) fatal("short read"); empty = 1; for (i = 0; i < count; i++) { if (p->hor_table[i] != 0) empty = 0; } if (empty) { fprintf(stderr, "%s: warning: empty horizontal offset table\n", fname); p->flags &= ~F_HORZ_OFF; } } } fclose(f); check_monospaced(p, fname); return p; } static void write_fnt(struct font *p, const char *fname) { FILE *f; char buf[2]; int i; struct font_file_hdr h; long count; long off_hor_table; long off_off_table; long off_dat_table; long off; int bmnum; bmnum = p->last_ade - p->first_ade + 1; if (p->off_table[bmnum] >= 0x10000L) { fprintf(stderr, "%s: form width %ld too large for GEM font\n", fname, p->off_table[bmnum]); exit(EXIT_FAILURE); } f = open_output(&fname, "wb"); p->flags |= F_STDFORM; #define SET_WORD(a) set_b_word(h.a, p->a) SET_WORD(font_id); SET_WORD(point); memcpy(h.name, p->name, sizeof(h.name)); SET_WORD(first_ade); SET_WORD(last_ade); SET_WORD(top); SET_WORD(ascent); SET_WORD(half); SET_WORD(descent); SET_WORD(bottom); SET_WORD(max_char_width); SET_WORD(max_cell_width); SET_WORD(left_offset); SET_WORD(right_offset); SET_WORD(thicken); SET_WORD(ul_size); SET_WORD(lighten); SET_WORD(skew); SET_WORD(flags); SET_WORD(form_width); SET_WORD(form_height); #undef SET_WORD off = sizeof(struct font_file_hdr); off_hor_table = off; if (p->flags & F_HORZ_OFF) { off += bmnum * 2; } off_off_table = off; off += (bmnum + 1) * 2; off_dat_table = off; set_b_long(h.hor_table, off_hor_table); set_b_long(h.off_table, off_off_table); set_b_long(h.dat_table, off_dat_table); set_b_long(h.next_font, 0); count = sizeof(h); if (count != (long)fwrite(&h, 1, count, f)) fatal("write"); if (p->flags & F_HORZ_OFF) { i = bmnum * 2; if (i != fwrite(p->hor_table, 1, i, f)) fatal("write"); } for (i = 0; i <= bmnum; i++) { set_b_word(buf, p->off_table[i]); if (2 != fwrite(buf, 1, 2, f)) fatal("write"); } count = p->form_width * p->form_height; if (count != (long)fwrite(p->dat_table, 1, count, f)) fatal("write"); if (fclose(f)) fatal("fclose"); } static void write_bmp(struct font *p, const char *fname) { FILE *f; long bmpwidth; long bmpstride; long bmpheight; int bmnum, i; int charrows; long datasize; int cmapsize = 256 * 4; unsigned char *bitmap; #define CHAR_COLUMNS 16 struct { unsigned char magic[2]; /* BM */ unsigned char filesize[4]; unsigned char xHotSpot[2]; unsigned char yHotSpot[2]; unsigned char offbits[4]; /* offset to data */ } fileheader; struct { unsigned char bisize[4]; unsigned char width[4]; unsigned char height[4]; unsigned char planes[2]; unsigned char bitcount[2]; unsigned char compressed[4]; unsigned char datasize[4]; unsigned char pix_width[4]; unsigned char pix_height[4]; unsigned char clr_used[4]; unsigned char clr_important[4]; } bmpheader; unsigned char palette[256][4]; if (p->flags & F_HORZ_OFF) { fatal("horizontal offsets not handled"); } bmnum = p->last_ade + 1; charrows = (bmnum + CHAR_COLUMNS - 1) / CHAR_COLUMNS; bmpwidth = CHAR_COLUMNS * p->max_cell_width * scale + (CHAR_COLUMNS + 1) * grid; bmpstride = (bmpwidth + 3) & ~3; bmpheight = charrows * p->form_height * scale + (charrows + 1) * grid; datasize = bmpstride * bmpheight; set_b_word(fileheader.magic, 0x424d); set_l_long(fileheader.filesize, sizeof(fileheader) + sizeof(bmpheader) + cmapsize + datasize); set_l_word(fileheader.xHotSpot, 0); set_l_word(fileheader.yHotSpot, 0); set_l_long(fileheader.offbits, sizeof(fileheader) + sizeof(bmpheader) + cmapsize); set_l_long(bmpheader.bisize, sizeof(bmpheader)); set_l_long(bmpheader.width, bmpwidth); set_l_long(bmpheader.height, -bmpheight); /* we write it top-down */ set_l_word(bmpheader.planes, 1); set_l_word(bmpheader.bitcount, 8); set_l_long(bmpheader.compressed, 0); set_l_long(bmpheader.datasize, datasize); set_l_long(bmpheader.pix_width, 95); set_l_long(bmpheader.pix_height, 95); set_l_long(bmpheader.clr_used, cmapsize / 4); set_l_long(bmpheader.clr_important, grid > 0 ? 3 : 2); memset(palette, 0, sizeof(palette)); palette[0][0] = 255; palette[0][1] = 255; palette[0][2] = 255; palette[1][0] = 0; palette[1][1] = 0; palette[1][2] = 0; palette[2][0] = 0; palette[2][1] = 0; palette[2][2] = 255; f = open_output(&fname, "wb"); bitmap = xmalloc(datasize); if (grid > 0) { int x, y, sy, sx; for (y = 0; y < (charrows + 1); y++) { for (sy = 0; sy < grid; sy++) for (x = 0; x < bmpwidth; x++) bitmap[((y * (p->form_height * scale + grid)) + sy) * bmpstride + x] = 2; } for (x = 0; x < (CHAR_COLUMNS + 1); x++) { for (sx = 0; sx < grid; sx++) for (y = 0; y < bmpheight; y++) bitmap[y * bmpstride + x * (p->max_cell_width * scale + grid) + sx] = 2; } } for (i = 0; i < bmnum; i++) { unsigned long w; unsigned long off; int y0; int x0; int x, y, sx, sy; if (i < p->first_ade) continue; off = p->off_table[i - p->first_ade]; w = get_width(p, i - p->first_ade); if (w == F_NO_CHARL) continue; y0 = i / CHAR_COLUMNS; x0 = i % CHAR_COLUMNS; for (y = 0; y < p->form_height; y++) { for (x = 0; x < w; x++) { if (get_bit(p->dat_table + p->form_width * y, off + x)) { for (sx = 0; sx < scale; sx++) for (sy = 0; sy < scale; sy++) bitmap[((y0 * p->form_height + y) * scale + y0 * grid + grid + sy) * bmpstride + ((x0 * p->max_cell_width + x) * scale) + x0 * grid + grid + sx] = 1; } } } } if (fwrite(&fileheader, 1, sizeof(fileheader), f) != sizeof(fileheader) || fwrite(&bmpheader, 1, sizeof(bmpheader), f) != sizeof(bmpheader) || fwrite(palette, 1, cmapsize, f) != cmapsize || fwrite(bitmap, 1, datasize, f) != datasize) fatal("write"); fclose(f); #undef CHAR_COLUMNS } static void write_txt(struct font *p, const char *filename) { FILE *f; int i; /* first, write header */ if (p->flags & F_HORZ_OFF) { fatal("horizontal offsets not handled"); } f = open_output(&filename, "w"); fprintf(f, "GDOSFONT\n"); fprintf(f, "version 1.0\n"); #define SET_WORD(a) fprintf(f, #a " %u\n", p->a) SET_WORD(font_id); SET_WORD(point); fprintf(f, "name \""); for (i = 0; i < 32; i++) { char c = p->name[i]; if (c == 0) break; if (c < 32 || c > 126 || c == '\\' || c == '"') { fprintf(f, "\\%03o", c); } else { fprintf(f, "%c", c); } } fprintf(f, "\"\n"); SET_WORD(first_ade); SET_WORD(last_ade); SET_WORD(top); SET_WORD(ascent); SET_WORD(half); SET_WORD(descent); SET_WORD(bottom); SET_WORD(max_char_width); SET_WORD(max_cell_width); SET_WORD(left_offset); SET_WORD(right_offset); SET_WORD(thicken); SET_WORD(ul_size); fprintf(f, "lighten 0x%04x\n", p->lighten); fprintf(f, "skew 0x%04x\n", p->skew); fprintf(f, "flags 0x%02x\n", p->flags); SET_WORD(form_height); #undef SET_WORD /* then, output char bitmaps */ for (i = p->first_ade; i <= p->last_ade; i++) { int r, c; unsigned long w; unsigned long off; off = p->off_table[i - p->first_ade]; w = get_width(p, i - p->first_ade); if (w == F_NO_CHARL) continue; if ((off + w) > (8 * p->form_width)) { fprintf(stderr, "char %d: offset %ld + width %ld out of range (%ld)\n", i, off, w, 8 * p->form_width); continue; } if (i < 32 || i > 126) { fprintf(f, "char 0x%02x\n", i); } else if (i == '\\' || i == '\'') { fprintf(f, "char '\\%c'\n", i); } else { fprintf(f, "char '%c'\n", i); } for (r = 0; r < p->form_height; r++) { for (c = 0; c < w; c++) { if (get_bit(p->dat_table + p->form_width * r, off + c)) { fprintf(f, "X"); } else { fprintf(f, "."); } } fprintf(f, "\n"); } fprintf(f, "endchar\n"); } fprintf(f, "endfont\n"); fclose(f); } static void write_c_emutos(struct font *p, const char *filename) { FILE *f; unsigned long i; int bmnum; const char *off_table_name = "off_table"; const char *hor_table_name = "0"; bmnum = p->last_ade - p->first_ade + 1; if (p->off_table[bmnum] >= 0x10000L) { fprintf(stderr, "%s: form width %ld too large for GEM font\n", filename, p->off_table[bmnum]); exit(EXIT_FAILURE); } /* output is always done bigendian */ p->flags |= F_STDFORM; /* first, write header */ f = open_output(&filename, "w"); fprintf(f, "\ /*\n\ * %s - a font in standard format\n\ *\n\ * Copyright (C) 2001-2018 The EmuTOS development team\n\ *\n\ * This file is distributed under the GPL, version 2 or at your\n\ * option any later version. See doc/license.txt for details.\n\ *\n\ * Automatically generated by fntconv.c\n\ */\n", filename); fprintf(f, "\ \n\ #include \"config.h\"\n\ #include \"portab.h\"\n\ #include \"fonthdr.h\"\n\ \n"); if (p->first_ade == 0 && p->last_ade == 255 && (p->flags & F_MONOSPACE)) { if (p->max_cell_width == 6 && p->form_height == 6) off_table_name = "off_6x6_table"; else if (p->max_cell_width == 8 && p->form_height == 8) off_table_name = "off_8x8_table"; else if (p->max_cell_width == 8 && p->form_height == 16) off_table_name = "off_8x16_table"; else if (!do_off_table) fatal("unsupported font size for omitting offset table"); } if (do_off_table) { fprintf(f, "static const UWORD %s[] =\n{\n", off_table_name); { for (i = 0; i <= bmnum; i++) { if ((i & 7) == 0) fprintf(f, " "); else fprintf(f, " "); fprintf(f, "0x%04lx", p->off_table[i]); if (i != bmnum) fprintf(f, ","); if ((i & 7) == 7) fprintf(f, "\n"); } } if ((i & 7) != 7) fprintf(f, "\n"); fprintf(f, "};\n\n"); } else { if (p->first_ade == 0 && p->last_ade == 255 && (p->flags & F_MONOSPACE) && p->max_cell_width == 8 && p->form_height == 16) { fprintf(f, "extern const UWORD %s[];\n", "off_8x8_table"); fprintf(f, "#define %s %s\n", off_table_name, "off_8x8_table"); } else { fprintf(f, "extern const UWORD %s[];\n", off_table_name); } fprintf(f, "\n"); } if (p->flags & F_HORZ_OFF) { hor_table_name = "hor_table"; fprintf(f, "static const UBYTE %s[] =\n{\n", hor_table_name); { unsigned long count = bmnum * 2; for (i = 0; i < count; i++) { if ((i & 7) == 0) fprintf(f, " "); else fprintf(f, " "); fprintf(f, "0x%02x", p->hor_table[i]); if (i != (count - 1)) fprintf(f, ","); if ((i & 7) == 7) fprintf(f, "\n"); } } if ((i & 7) != 7) fprintf(f, "\n"); fprintf(f, "};\n\n"); } fprintf(f, "static const UWORD dat_table[] =\n{\n"); { unsigned long h; unsigned int a; h = (p->form_height * p->form_width) / 2; for (i = 0; i < h; i++) { if ((i & 7) == 0) fprintf(f, " "); else fprintf(f, " "); a = (p->dat_table[2 * i] << 8) | (p->dat_table[2 * i + 1] & 0xFF); fprintf(f, "0x%04x", a); if (i != (h - 1)) fprintf(f, ","); if ((i & 7) == 7) fprintf(f, "\n"); } if ((i & 7) != 0) fprintf(f, "\n"); } fprintf(f, "};\n"); fprintf(f, "\n"); fprintf(f, "const Fonthead %s = {\n", varname); #define SET_WORD(a) fprintf(f, " %u, /* " #a " */\n", (unsigned int)p->a) SET_WORD(font_id); SET_WORD(point); fprintf(f, " \""); for (i = 0; i < 32; i++) { char c = p->name[i]; if (c == 0) break; if (c < 32 || c > 126 || c == '\\' || c == '"') { fprintf(f, "\\%03o", c); } else { fprintf(f, "%c", c); } } fprintf(f, "\", /* BYTE name[32] */\n"); SET_WORD(first_ade); SET_WORD(last_ade); SET_WORD(top); SET_WORD(ascent); SET_WORD(half); SET_WORD(descent); SET_WORD(bottom); SET_WORD(max_char_width); SET_WORD(max_cell_width); SET_WORD(left_offset); SET_WORD(right_offset); SET_WORD(thicken); SET_WORD(ul_size); fprintf(f, " 0x%04x, /* lighten */\n", p->lighten); fprintf(f, " 0x%04x, /* skew */\n", p->skew); fprintf(f, " F_STDFORM"); if (p->flags & F_MONOSPACE) fprintf(f, " | F_MONOSPACE"); if (p->flags & F_DEFAULT) fprintf(f, " | F_DEFAULT"); if (p->flags & F_HORZ_OFF) fprintf(f, " | F_HORZ_OFF"); if (p->flags & F_EXT_HDR) fprintf(f, " | F_EXT_HDR"); if ((p->flags & ~F_SUPPORTED) != 0) fprintf(f, " | 0x%x", p->flags & ~F_SUPPORTED); fprintf(f, ", /* flags */\n"); fprintf(f, " %s, /* UBYTE *hor_table */\n", hor_table_name); fprintf(f, " %s, /* UWORD *off_table */\n", off_table_name); fprintf(f, " dat_table, /* UBYTE *dat_table */\n"); SET_WORD(form_width); SET_WORD(form_height); #undef SET_WORD fprintf(f, " 0, /* struct font * next_font */\n"); fprintf(f, " 0 /* UWORD next_seg */\n"); fprintf(f, "};\n"); fclose(f); } static void write_c_aranym(struct font *p, const char *filename) { FILE *f; if (p->flags & F_HORZ_OFF) { fatal("horizontal offsets not handled"); } /* first, write header */ f = open_output(&filename, "w"); fprintf(f, "\ /*\n\ * font.h - 8x16 font for Atari ST encoding\n\ * modified for the SDL-GUI (added a radio button and a checkbox)\n\ * converted using ./fntconv -a -o font.h aranym10.txt\n\ *\n\ * The fntconv utility can be used to convert the font to text, edit it, and convert it back.\n\ *\n\ * Copyright (C) 2007 ARAnyM development team\n\ * Copyright (C) 2001, 02 The EmuTOS development team\n\ *\n\ * This program is free software; you can redistribute it and/or modify\n\ * it under the terms of the GNU General Public License as published by\n\ * the Free Software Foundation; either version 2 of the License, or\n\ * (at your option) any later version.\n\ \n\ * This program is distributed in the hope that it will be useful,\n\ * but WITHOUT ANY WARRANTY; without even the implied warranty of\n\ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\ * GNU General Public License for more details.\n\ \n\ * You should have received a copy of the GNU General Public License\n\ * along with this program; if not, write to the Free Software\n\ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n\ */\n\ \n\ \n"); fprintf(f, "#define FONTWIDTH %d\n", p->max_cell_width); fprintf(f, "#define FONTHEIGHT %d\n", p->form_height); fprintf(f, "#define FONTCHARS %u\n", p->last_ade + 1); fprintf(f, "#define FORM_WIDTH %lu\n", p->form_width); fprintf(f, "\n"); fprintf(f, "static unsigned char const font_bits[] = {\n"); { unsigned long i, h; unsigned char a; h = p->form_height * p->form_width; for (i = 0; i < h; i++) { if ((i & 15) == 0) fprintf(f, " "); else fprintf(f, " "); a = p->dat_table[i]; fprintf(f, "0x%02x", a); if (i != (h - 1)) fprintf(f, ","); if ((i & 15) == 15) fprintf(f, "\n"); } if ((i & 15) != 0) fprintf(f, "\n"); } fprintf(f, "};\n"); fclose(f); } static int file_type(const char *c) { int n; if (c == NULL || strcmp(c, "-") == 0) return FILE_TXT; n = (int)strlen(c); if (n >= 3 && c[n - 2] == '.' && (c[n - 1] == 'c' || c[n - 1] == 'C' || c[n - 1] == 'h' || c[n - 1] == 'H')) return FILE_C; if (n < 5 || c[n - 4] != '.') return 0; if (strcmp(c + n - 3, "txt") == 0 || strcmp(c + n - 3, "TXT") == 0) return FILE_TXT; if (strcmp(c + n - 3, "fnt") == 0 || strcmp(c + n - 3, "FNT") == 0) return FILE_FNT; if (strcmp(c + n - 3, "bmp") == 0 || strcmp(c + n - 3, "BMP") == 0) return FILE_BMP; return 0; } enum opt { OPTION_FLAG_SET = 0, OPTION_ERROR = '?', OPTION_OUTPUT = 'o', OPTION_ARANYM = 'a', OPTION_ALLCHARS = 'A', OPTION_NO_OFFTABLE = 'O', OPTION_VARNAME = 'v', OPTION_SCALE = 's', OPTION_GRID = 'g', OPTION_HELP = 'h', OPTION_VERSION = 'V' }; static struct option const long_options[] = { { "aranym", no_argument, NULL, OPTION_ARANYM }, { "all-chars", no_argument, NULL, OPTION_ALLCHARS }, { "output", required_argument, NULL, OPTION_OUTPUT }, { "varname", required_argument, NULL, OPTION_VARNAME }, { "no-offtable", no_argument, NULL, OPTION_NO_OFFTABLE }, { "scale", required_argument, NULL, OPTION_SCALE }, { "grid", required_argument, NULL, OPTION_GRID }, { "help", no_argument, NULL, OPTION_HELP }, { "version", no_argument, NULL, OPTION_VERSION }, { NULL, no_argument, NULL, 0 } }; static void print_version(void) { } static void usage(FILE *f, int errcode) { fprintf(f, "\ Usage: \n\ fntconv -o \n\ converts BDOS font between types C, TXT, FNT.\n\ the file types are inferred from the file extensions.\n\ (not all combinations are allowed.)\n\ Options:\n\ -o, --output write output to \n\ -a, --aranym output C sourcecode for AraNYM\n\ -A, --all-chars output data also for non-existent chars\n\ -v, --varname set the name of the font header variable\n\ -O, --no-offtable do not write the offsets table\n\ -s, --scale scale picture up (BMP only)\n\ -g, --grid draw grid around characters (BMP only)\n\ "); exit(errcode); } int main(int argc, char **argv) { struct font *p; const char *from = NULL; const char *to = NULL; int c; while ((c = getopt_long_only(argc, argv, "o:ag:s:AOhV", long_options, NULL)) != EOF) { const char *arg = optarg; switch ((enum opt) c) { case OPTION_OUTPUT: to = arg; break; case OPTION_ARANYM: for_aranym = 1; all_chars = 1; break; case OPTION_ALLCHARS: all_chars = 1; break; case OPTION_NO_OFFTABLE: do_off_table = 0; break; case OPTION_VARNAME: varname = optarg; break; case OPTION_SCALE: scale = (int)strtol(optarg, NULL, 0); if (scale <= 0 || scale > 100) usage(stderr, EXIT_FAILURE); break; case OPTION_GRID: grid = (int)strtol(optarg, NULL, 0); if (grid < 0 || grid > 100) usage(stderr, EXIT_FAILURE); break; case OPTION_VERSION: print_version(); return EXIT_SUCCESS; case OPTION_HELP: usage(stdout, EXIT_SUCCESS); break; /* returned when only flag was set */ case OPTION_FLAG_SET: break; /* returned for unknown/invalid option */ case OPTION_ERROR: exit(EXIT_FAILURE); break; } } if ((argc - optind) != 1) usage(stderr, EXIT_FAILURE); from = argv[optind]; convert_from = file_type(from); convert_to = file_type(to); switch (convert_from) { case FILE_C: fatal("cannot read C files"); return EXIT_FAILURE; case FILE_TXT: p = read_txt(from); break; case FILE_FNT: p = read_fnt(from); break; case FILE_BMP: fatal("cannot read BMP files"); return EXIT_FAILURE; default: fatal("wrong file type"); return EXIT_FAILURE; } switch (convert_to) { case FILE_C: if (for_aranym) write_c_aranym(p, to); else write_c_emutos(p, to); break; case FILE_TXT: write_txt(p, to); break; case FILE_FNT: write_fnt(p, to); break; case FILE_BMP: write_bmp(p, to); break; default: fatal("wrong file type"); return EXIT_FAILURE; } return EXIT_SUCCESS; } aranym-1.1.0/src/gui-sdl/file.h0000664000175000017500000000223013454637621014421 0ustar joyjoy/* Hatari */ #ifndef HATARI_FILE_H #define HATARI_FILE_H #include "sysdeps.h" #define MAX_FILENAME_LENGTH 260 /* File types */ enum { FILEFILTER_DISCFILES, FILEFILTER_ALLFILES, FILEFILTER_TOSROM, FILEFILTER_MAPFILE, FILEFILTER_YMFILE, FILEFILTER_MEMORYFILE }; extern void File_CleanFileName(char *pszFileName); extern void File_AddSlashToEndFileName(char *pszFileName); extern bool File_DoesFileExtensionMatch(char *pszFileName, char *pszExtension); extern bool File_IsRootFileName(char *pszFileName); extern char *File_RemoveFileNameDrive(char *pszFileName); extern bool File_DoesFileNameEndWithSlash(char *pszFileName); extern void File_RemoveFileNameTrailingSlashes(char *pszFileName); extern int File_Length(char *pszFileName); extern bool File_Exists(const char *pszFileName); extern bool File_Delete(char *pszFileName); extern bool File_QueryOverwrite(char *pszFileName); extern void File_splitpath(char *pSrcFileName, char *pDir, char *pName, char *Ext); extern void File_makepath(char *pDestFileName, char *pDir, char *pName, char *pExt); extern void File_ShrinkName(char *pDestFileName, char *pSrcFileName, int maxlen); #endif /* HATARI_FILE_H */ aranym-1.1.0/src/gui-sdl/file.cpp0000664000175000017500000001534213454637621014764 0ustar joyjoy/* Hatari common file access */ #include "sysdeps.h" #include "file.h" #define DEBUG 0 #include "debug.h" # include # include # include #ifdef OS_solaris #define DIRHANDLE dirp->d_fd #elif defined(OS_mingw) #define DIRHANDLE dirp->dd_handle #else #define DIRHANDLE dirp->fd #endif /*-----------------------------------------------------------------------*/ /* Remove any '/'s from end of filenames, but keeps / intact */ void File_CleanFileName(char *pszFileName) { int len; len = strlen(pszFileName); /* Security length check: */ if( len>MAX_FILENAME_LENGTH ) { pszFileName[MAX_FILENAME_LENGTH-1] = 0; len = MAX_FILENAME_LENGTH; } /* Remove end slash from filename! But / remains! Doh! */ if( len>2 && pszFileName[len-1]=='/' ) pszFileName[len-1] = 0; } /*-----------------------------------------------------------------------*/ /* Add '/' to end of filename */ void File_AddSlashToEndFileName(char *pszFileName) { /* Check dir/filenames */ if (strlen(pszFileName)!=0) { if (pszFileName[strlen(pszFileName)-1]!='/') strcat(pszFileName,"/"); /* Must use end slash */ } } /*-----------------------------------------------------------------------*/ /* Does filename extension match? If so, return true */ bool File_DoesFileExtensionMatch(char *pszFileName, char *pszExtension) { if ( strlen(pszFileName) < strlen(pszExtension) ) return(false); /* Is matching extension? */ if ( !strcasecmp(&pszFileName[strlen(pszFileName)-strlen(pszExtension)], pszExtension) ) return(true); /* No */ return(false); } /*-----------------------------------------------------------------------*/ /* Check if filename is from root Return true if filename is '/', else give false */ bool File_IsRootFileName(char *pszFileName) { if (pszFileName[0]=='\0') /* If NULL string return! */ return(false); if (pszFileName[0]=='/') return(true); return(false); } /*-----------------------------------------------------------------------*/ /* Return string, to remove 'C:' part of filename */ char *File_RemoveFileNameDrive(char *pszFileName) { if ( (pszFileName[0]!='\0') && (pszFileName[1]==':') ) return(&pszFileName[2]); else return(pszFileName); } /*-----------------------------------------------------------------------*/ /* Check if filename end with a '/' Return true if filename ends with '/' */ bool File_DoesFileNameEndWithSlash(char *pszFileName) { if (pszFileName[0]=='\0') /* If NULL string return! */ return(false); /* Does string end in a '/'? */ if (pszFileName[strlen(pszFileName)-1]=='/') return(true); return(false); } /*-----------------------------------------------------------------------*/ /* Remove any double '/'s from end of filenames. So just the one */ void File_RemoveFileNameTrailingSlashes(char *pszFileName) { int Length; /* Do have slash at end of filename? */ Length = strlen(pszFileName); if (Length>=3) { if (pszFileName[Length-1]=='/') { /* Yes, have one previous? */ if (pszFileName[Length-2]=='/') pszFileName[Length-1] = '\0'; /* then remove it! */ } } } /*-----------------------------------------------------------------------*/ /* Return size of file, -1 if error */ int File_Length(char *pszFileName) { FILE *DiscFile; int FileSize; DiscFile = fopen(pszFileName, "rb"); if (DiscFile!=NULL) { fseek(DiscFile, 0, SEEK_END); FileSize = ftell(DiscFile); fseek(DiscFile, 0, SEEK_SET); fclose(DiscFile); return(FileSize); } return(-1); } /*-----------------------------------------------------------------------*/ /* Return true if file exists */ bool File_Exists(const char *pszFileName) { FILE *DiscFile; /* Attempt to open file */ DiscFile = fopen(pszFileName, "rb"); if (DiscFile!=NULL) { fclose(DiscFile); return(true); } return(false); } /*-----------------------------------------------------------------------*/ /* Delete file, return true if OK */ bool File_Delete(char *pszFileName) { /* Delete the file (must be closed first) */ return( os_remove(pszFileName) ); } /*-----------------------------------------------------------------------*/ /* Find if file exists, and if so ask user if OK to overwrite */ bool File_QueryOverwrite(char *pszFileName) { char szString[MAX_FILENAME_LENGTH]; /* Try and find if file exists */ if (File_Exists(pszFileName)) { /* File does exist, are we OK to overwrite? */ sprintf(szString,"File '%s' exists, overwrite?",pszFileName); /* FIXME: */ // if (MessageBox(hWnd,szString,PROG_NAME,MB_YESNO | MB_DEFBUTTON2 | MB_ICONSTOP)==IDNO) // return(false); } return(true); } /*-----------------------------------------------------------------------*/ /* Split a complete filename into path, filename and extension. If pExt is NULL, don't split the extension from the file name! */ void File_splitpath(char *pSrcFileName, char *pDir, char *pName, char *pExt) { char *ptr1, *ptr2; /* Build pathname: */ ptr1 = strrchr(pSrcFileName, '/'); if( ptr1 ) { strcpy(pDir, pSrcFileName); strcpy(pName, ptr1+1); pDir[ptr1-pSrcFileName+1] = 0; } else { strcpy(pDir, ""); strcpy(pName, pSrcFileName); } /* Build the raw filename: */ if( pExt!=NULL ) { ptr2 = strrchr(pName+1, '.'); if( ptr2 ) { pName[ptr2-pName] = 0; /* Copy the file extension: */ strcpy(pExt, ptr2+1); } else pExt[0] = 0; } } /*-----------------------------------------------------------------------*/ /* Build a complete filename from path, filename and extension. pExt can also be NULL. */ void File_makepath(char *pDestFileName, char *pDir, char *pName, char *pExt) { strcpy(pDestFileName, pDir); if( strlen(pDestFileName)==0 ) strcpy(pDestFileName, ""); if( pDestFileName[strlen(pDestFileName)-1]!='/' ) strcat(pDestFileName, "/"); strcat(pDestFileName, pName); if( pExt!=NULL ) { if( strlen(pExt)>0 && pExt[0]!='.' ) strcat(pDestFileName, "."); strcat(pDestFileName, pExt); } } /*-----------------------------------------------------------------------*/ /* Shrink a file name to a certain length and insert some dots if we cut something away (usefull for showing file names in a dialog). */ void File_ShrinkName(char *pDestFileName, char *pSrcFileName, int maxlen) { int srclen = strlen(pSrcFileName); if( srclenfullscreen ? SG_SELECTED : 0; videodlg[WINDOW].state = !video->fullscreen ? SG_SELECTED : 0; videodlg[FRAMESKIP_0].state = 0; videodlg[FRAMESKIP_1].state = 0; videodlg[FRAMESKIP_2].state = 0; videodlg[FRAMESKIP_5].state = 0; videodlg[FRAMESKIP_10].state = 0; videodlg[FRAMESKIP_50].state = 0; switch(video->refresh) { default: case S50F: videodlg[FRAMESKIP_0].state = SG_SELECTED; break; case S25F: videodlg[FRAMESKIP_1].state = SG_SELECTED; break; case S17F: videodlg[FRAMESKIP_2].state = SG_SELECTED; break; case S10F: videodlg[FRAMESKIP_5].state = SG_SELECTED; break; case S05F: videodlg[FRAMESKIP_10].state = SG_SELECTED; break; case S01F: videodlg[FRAMESKIP_50].state = SG_SELECTED; break; } videodlg[MONITOR_NV].state = 0; videodlg[MONITOR_VGA].state = 0; videodlg[MONITOR_TV].state = 0; switch(video->monitor) { default: case -1: videodlg[MONITOR_NV].state = SG_SELECTED; break; case 0: videodlg[MONITOR_VGA].state = SG_SELECTED; break; case 1: videodlg[MONITOR_TV].state = SG_SELECTED; break; } videodlg[COLORDEPTH_NV].state = 0; videodlg[COLORDEPTH_1].state = 0; videodlg[COLORDEPTH_2].state = 0; videodlg[COLORDEPTH_4].state = 0; videodlg[COLORDEPTH_8].state = 0; videodlg[COLORDEPTH_16].state = 0; switch(video->boot_color_depth) { default: case -1: videodlg[COLORDEPTH_NV].state = SG_SELECTED; break; case 1: videodlg[COLORDEPTH_1].state = SG_SELECTED; break; case 2: videodlg[COLORDEPTH_2].state = SG_SELECTED; break; case 4: videodlg[COLORDEPTH_4].state = SG_SELECTED; break; case 8: videodlg[COLORDEPTH_8].state = SG_SELECTED; break; case 16: videodlg[COLORDEPTH_16].state = SG_SELECTED; break; } videodlg[AUTOZOOM_ON].state = autozoom->enabled ? SG_SELECTED:0; videodlg[AZ_INTEGER].state = autozoom->integercoefs ? SG_SELECTED:0; videodlg[AZ_FIXEDSIZE].state = autozoom->fixedsize ? SG_SELECTED:0; videodlg[SINGLE_BLIT_COMPOSING].state = video->single_blit_composing ? SG_SELECTED : 0; videodlg[SINGLE_BLIT_REFRESH].state = video->single_blit_refresh ? SG_SELECTED : 0; videodlg[RES_640].state = 0; videodlg[RES_800].state = 0; videodlg[RES_1024].state = 0; videodlg[RES_1280].state = 0; videodlg[RES_CUSTOM].state = 0; if (autozoom->width == 640 && autozoom->height == 480) videodlg[RES_640].state |= SG_SELECTED; else if (autozoom->width == 800 && autozoom->height == 600) videodlg[RES_800].state |= SG_SELECTED; else if (autozoom->width == 1024 && autozoom->height == 768) videodlg[RES_1024].state |= SG_SELECTED; else if (autozoom->width == 1280 && autozoom->height == 1024) videodlg[RES_1280].state |= SG_SELECTED; else { videodlg[RES_CUSTOM].state |= SG_SELECTED; } sprintf(video_width, "%4d", autozoom->width); sprintf(video_height, "%4d", autozoom->height); } DlgVideo::~DlgVideo() { } int DlgVideo::processDialog(void) { int retval = Dialog::GUI_CONTINUE; switch(return_obj) { case APPLY: confirm(); /* fall through */ case CANCEL: retval = Dialog::GUI_CLOSE; break; } return retval; } void DlgVideo::confirm(void) { bx_video_options_t *video = &bx_options.video; bx_autozoom_options_t *autozoom = &bx_options.autozoom; video->fullscreen = videodlg[FULLSCREEN].state & SG_SELECTED; video->refresh = S50F; if (videodlg[FRAMESKIP_1].state & SG_SELECTED) video->refresh = S25F; else if (videodlg[FRAMESKIP_2].state & SG_SELECTED) video->refresh = S17F; else if (videodlg[FRAMESKIP_5].state & SG_SELECTED) video->refresh = S10F; else if (videodlg[FRAMESKIP_10].state & SG_SELECTED) video->refresh = S05F; else if (videodlg[FRAMESKIP_50].state & SG_SELECTED) video->refresh = S01F; video->monitor = -1; if (videodlg[MONITOR_VGA].state & SG_SELECTED) video->monitor = 0; else if (videodlg[MONITOR_TV].state & SG_SELECTED) video->monitor = 1; video->boot_color_depth = -1; if (videodlg[COLORDEPTH_1].state & SG_SELECTED) video->boot_color_depth = 1; else if (videodlg[COLORDEPTH_2].state & SG_SELECTED) video->boot_color_depth = 2; else if (videodlg[COLORDEPTH_4].state & SG_SELECTED) video->boot_color_depth = 4; else if (videodlg[COLORDEPTH_8].state & SG_SELECTED) video->boot_color_depth = 8; else if (videodlg[COLORDEPTH_16].state & SG_SELECTED) video->boot_color_depth = 16; autozoom->enabled = videodlg[AUTOZOOM_ON].state & SG_SELECTED; autozoom->integercoefs = videodlg[AZ_INTEGER].state & SG_SELECTED; autozoom->fixedsize = videodlg[AZ_FIXEDSIZE].state & SG_SELECTED; video->single_blit_composing = videodlg[SINGLE_BLIT_COMPOSING].state & SG_SELECTED; video->single_blit_refresh = videodlg[SINGLE_BLIT_REFRESH].state & SG_SELECTED; if (videodlg[RES_640].state & SG_SELECTED) { autozoom->width = 640; autozoom->height= 480; } else if (videodlg[RES_800].state & SG_SELECTED) { autozoom->width = 800; autozoom->height= 600; } else if (videodlg[RES_1024].state & SG_SELECTED) { autozoom->width = 1024; autozoom->height= 768; } else if (videodlg[RES_1280].state & SG_SELECTED) { autozoom->width = 1280; autozoom->height= 1024; } else if (videodlg[RES_CUSTOM].state & SG_SELECTED) { autozoom->width = atoi(video_width); autozoom->height= atoi(video_height); } } Dialog *DlgVideoOpen(void) { return new DlgVideo(videodlg); } aranym-1.1.0/src/gui-sdl/dlgUsb.h0000664000175000017500000000327713454637621014736 0ustar joyjoy/* * dlgUsb.h - USB selection dialog * * Copyright (c) 2012-2015 David Galvez. ARAnyM development team (see AUTHORS). * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DLGUSB_H #define DLGUSB_H #define ENTRY_COUNT 9 /* (usb_description_8 - usb_description_0 + 1) */ #define MAX_PRODUCT_LENGTH 32 #include "dialog.h" #ifdef USBHOST_SUPPORT #include "../natfeat/usbhost.h" class DlgAlert; #endif class DlgUsb: public Dialog { private: enum { STATE_MAIN, STATE_ALERT, }; int state; int ypos; bool refreshentries; DlgAlert *dlgAlert; void confirm(void); void reset_buttons_and_state(void); void clean_product_strings(void); int check_if_devices_connected(void); void enable_buttons(void); void disable_buttons(void); void refreshEntries(void); public: DlgUsb(SGOBJ *dlg); ~DlgUsb(); int processDialog(void); }; Dialog *DlgUsbOpen(void); #endif /* DLGUSB_H */ aranym-1.1.0/src/gui-sdl/dlgUsb.cpp0000664000175000017500000001461213454637621015264 0ustar joyjoy/* * dlgUsb.cpp - USB selection dialog * * Copyright (c) 2012-2015 David Galvez. ARAnyM development team (see AUTHORS). * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "sdlgui.h" #include "dlgAlert.h" #include "dlgUsb.h" #define DEBUG 0 #include "debug.h" #ifdef USBHOST_SUPPORT /* Static variables */ static char product[ENTRY_COUNT][MAX_PRODUCT_LENGTH]; static bool init_flag = false; static const char *ALERT_TEXT = " !!! ALERT !!!\n" "\n" "Getting a new USB device list\n" "will disconnect any USB device\n" "connected to Aranym\n" ""; #define SDLGUI_INCLUDE_USBDLG #include "sdlgui.sdl" #define PLUG_BUTTON_OFFSET PLUG_0 #define CONNECTED_INFO_OFFSET CONNECTED_0 /* Local functions */ int DlgUsb::check_if_devices_connected(void) { int i = 0; while (i < USB_MAX_DEVICE) { if (virtual_device[i].connected == true) return 1; i++; } return 0; } void DlgUsb::enable_buttons(void) { int i = 0; while (i < ENTRY_COUNT) { if (virtual_device[i + ypos].virtdev_available == true) dlg[PLUG_BUTTON_OFFSET + i].state &= ~SG_DISABLED; else usbdlg[PLUG_BUTTON_OFFSET + i].state |= SG_DISABLED; i++; } } void DlgUsb::disable_buttons(void) { int i = 0; while (i < ENTRY_COUNT) { if (virtual_device[i + ypos].connected == false) usbdlg[PLUG_BUTTON_OFFSET + i].state |= SG_DISABLED; else usbdlg[PLUG_BUTTON_OFFSET + i].state &= ~SG_DISABLED; i++; } } void DlgUsb::reset_buttons_and_state(void) { int i = 0; while (i < ENTRY_COUNT) { dlg[PLUG_BUTTON_OFFSET + i].state |= SG_DISABLED; dlg[CONNECTED_INFO_OFFSET + i].state |= SG_DISABLED; i++; } init_flag = true; } void DlgUsb::clean_product_strings(void) { int i = 0; while (i < ENTRY_COUNT) { product[i][0] = '\0'; i++; } } /* Public functions */ int DlgUsb::processDialog(void) { int retval = Dialog::GUI_CONTINUE; int virtdev_idx, virtdev_position; int32 r; if (state == STATE_MAIN) { /* Process main USB dialog */ switch(return_obj) { case OK: retval = Dialog::GUI_CLOSE; break; case GET_DEVICE_LIST: if ((r = check_if_devices_connected())) { state = STATE_ALERT; dlgAlert = (DlgAlert *) DlgAlertOpen(ALERT_TEXT, ALERT_OKCANCEL); SDLGui_Open(dlgAlert); } else { ypos = 0; reset_buttons_and_state(); clean_product_strings(); usbhost_free_usb_devices(); usbhost_get_device_list(); refreshentries = true; } break; case USBHOSTDLG_UP: /* Scroll up */ if (ypos > 0) { --ypos; refreshentries = true; } break; case USBHOSTDLG_DOWN: /* Scroll down */ if (ypos < (USB_MAX_DEVICE - ENTRY_COUNT)) { ++ypos; refreshentries = true; } break; } virtdev_idx = return_obj - PLUG_BUTTON_OFFSET + ypos; virtdev_position = return_obj - PLUG_BUTTON_OFFSET; /* User clicked on PLUG/UNPLUG buttons */ if ((return_obj >= PLUG_BUTTON_OFFSET) && (return_obj <= PLUG_BUTTON_OFFSET + ENTRY_COUNT)) { if (virtual_device[virtdev_idx].connected == false) { if (usbhost_claim_device(virtdev_idx) != -1) { D(bug("dlgUsb: Device plugged")); dlg[CONNECTED_INFO_OFFSET + virtdev_position].state &= ~SG_DISABLED; virtual_device[virtdev_idx].connected = true; if ((++number_ports_used == NUMBER_OF_PORTS)) refreshentries = true; } } else { if (usbhost_release_device(virtdev_idx) != -1) { D(bug("dlgUsb: Device unplugged")); dlg[CONNECTED_INFO_OFFSET + virtdev_position].state |= SG_DISABLED; virtual_device[virtdev_idx].connected = false; if (--number_ports_used < NUMBER_OF_PORTS) refreshentries = true; } } } } else { /* Process Alert dialog */ state = STATE_MAIN; D(bug("dlgUsb: Process Alert dialog")); if (dlgAlert && dlgAlert->pressedOk()) { reset_buttons_and_state(); clean_product_strings(); usbhost_free_usb_devices(); usbhost_get_device_list(); refreshentries = true; } } if (refreshentries) { refreshEntries(); } return_obj = -1; return retval; } void DlgUsb::refreshEntries(void) { if (refreshentries) { int i; for (i = 0; i < ENTRY_COUNT; i++) { if ((i + ypos) < USB_MAX_DEVICE) { /* Copy entries to dialog: */ strcpy(product[i], virtual_device[i + ypos].product_name); /* Grey/Ungrey CONNECTED info string */ if (virtual_device[i + ypos].connected == true) { dlg[CONNECTED_INFO_OFFSET + i].state &= ~SG_DISABLED; } else { dlg[CONNECTED_INFO_OFFSET + i].state |= SG_DISABLED; } /* Enable/disable PLUG/UNPLUG buttons */ if (number_ports_used < NUMBER_OF_PORTS) enable_buttons(); else disable_buttons(); } else { /* Clear entry */ } } refreshentries = false; } } DlgUsb::DlgUsb(SGOBJ *dlg) : Dialog(dlg), state(STATE_MAIN), ypos(0), refreshentries(true) { if (init_flag == false) { reset_buttons_and_state(); usbhost_init_libusb(); } refreshEntries(); for (int i = 0; i < ENTRY_COUNT; i++) { if ((virtual_device[i].virtdev_available == true && number_ports_used < NUMBER_OF_PORTS) || (virtual_device[i].connected == true)) { dlg[PLUG_BUTTON_OFFSET + i].state &= ~SG_DISABLED; } } } #else /* Function and variables for when USB not present */ #define usbdlg nousbdlg #define SDLGUI_INCLUDE_NOUSBDLG #include "sdlgui.sdl" int DlgUsb::processDialog(void) { int retval = Dialog::GUI_CONTINUE; if (return_obj == OK) retval = Dialog::GUI_CLOSE; return retval; } DlgUsb::DlgUsb(SGOBJ *dlg) : Dialog(dlg) { } #endif /* USBHOST_SUPPORT */ DlgUsb::~DlgUsb() { } /* Private functios */ void DlgUsb::confirm(void) { } Dialog *DlgUsbOpen(void) { return new DlgUsb(usbdlg); } aranym-1.1.0/src/gui-sdl/dlgPartition.h0000664000175000017500000000306213454637621016146 0ustar joyjoy/* dlgPartition.cpp - disk dialog Copyright (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DLGPARTITION_H #define DLGPARTITION_H 1 #include "dialog.h" class DlgAlert; class DlgFileSelect; class DlgPartition: public Dialog { private: enum { STATE_MAIN, STATE_FSEL, STATE_CDI0, STATE_CDI1 }; char *cdi_path; char tmpname[MAX_FILENAME_LENGTH]; int state, cdi_disk; long sizeMB; DlgAlert *dlgAlert; DlgFileSelect *dlgFileSelect; void confirm(void); void selectPartPath(int disk); int processDialogMain(void); int processDialogCdi0(void); int processDialogCdi1(void); void processResultFsel(int disk); void init_create_disk_image(int disk); bool create_disk_image(void); public: DlgPartition(SGOBJ *dlg); ~DlgPartition(); int processDialog(void); void processResult(void); }; Dialog *DlgPartitionOpen(void); #endif /* DLGPARTITION_H */ aranym-1.1.0/src/gui-sdl/dlgPartition.cpp0000664000175000017500000002204013454637621016476 0ustar joyjoy/* * dlgPartition.cpp - dialog for editing Partition settings * * Copyright (c) 2008 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * gui-sdl original code and ideas borrowed from Hatari emulator * disk_image() borrowed from Bochs project, IIRC * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "sdlgui.h" #include "file.h" #include "ata.h" #include "tools.h" #include "dlgPartition.h" #include "dlgAlert.h" #include "dlgFileSelect.h" #define DEBUG 0 #include "debug.h" static bx_options_t gui_options; #define PARTS 4 static char part_id[PARTS][3+1]; static char part_size[PARTS][7]; static char part_path[PARTS][80]; /* The disks dialog: */ #define SDLGUI_INCLUDE_PARTITIONDLG #include "sdlgui.sdl" static int PARTS_PATH[] = { PART0_PATH, PART1_PATH, PART2_PATH, PART3_PATH }; static int PARTS_PRESENT[] = { PART0_PRESENT, PART1_PRESENT, PART2_PRESENT, PART3_PRESENT }; static int PARTS_READONLY[] = { PART0_READONLY, PART1_READONLY, PART2_READONLY, PART3_READONLY }; static int PARTS_BYTESWAP[] = { PART0_BYTESWAP, PART1_BYTESWAP, PART2_BYTESWAP, PART3_BYTESWAP }; static const char *HELP_TEXT = "For creating new partition image click on the [SCSIx] and select a file (or type in a new filename).\n" "Then set the desired partition size in MegaBytes.\n" "At last click on [Create] and the partition image will be created.\n" "\n" "PartID can be one of GEM, BGM, RAW, F32, LNX, SWP or $XX where XX is the HEX code of partition type (example: $83 for Linux Ext2)"; static void setState(int index, int bits, bool set) { if (set) partitiondlg[index].state |= bits; else partitiondlg[index].state &= ~bits; } static void setSelected(int index, bool set) { setState(index, SG_SELECTED, set); } static bool getSelected(int index) { return (partitiondlg[index].state & SG_SELECTED); } static void UpdateDiskParameters(int disk) { char *fname = gui_options.disks[disk].path; int dlgpath_idx = PARTS_PATH[disk]; File_ShrinkName(part_path[disk], fname, partitiondlg[dlgpath_idx].w); strncpy(part_id[disk], gui_options.disks[disk].partID, sizeof(part_id[disk])); if (fname == NULL || strlen(fname) == 0) { strcpy(part_size[disk], ""); return; } setState(dlgpath_idx, SG_DISABLED, false); struct stat buf; if (stat(fname, &buf) != 0) { strcpy(part_size[disk], ""); setState(dlgpath_idx, SG_DISABLED, true); return; } off_t size = 0; if (S_ISREG(buf.st_mode)) { size = buf.st_size; } int sizeMB = ((size / 1024) + 512) / 1024; // output sprintf(part_size[disk], "%6d", sizeMB); } void DlgPartition::init_create_disk_image(int disk) { cdi_path = gui_options.disks[disk].path; cdi_disk = disk; sizeMB = atoi(part_size[disk]); char text[250]; sprintf(text, "Create partition image '%s' with size %ld MB?", cdi_path, sizeMB); dlgAlert = (DlgAlert *) DlgAlertOpen(text, ALERT_OKCANCEL); SDLGui_Open(dlgAlert); state = STATE_CDI0; } extern bool make_image(long sec, const char *filename); bool DlgPartition::create_disk_image(void) { D(bug("partition: creating disk image %ld MB", sizeMB)); long sectors = sizeMB * 2048; bool ret = make_image(sectors, cdi_path); UpdateDiskParameters(cdi_disk); return ret; } /*-----------------------------------------------------------------------*/ /* Show and process the disc image dialog. */ DlgPartition::DlgPartition(SGOBJ *dlg) : Dialog(dlg), cdi_path(NULL), state(STATE_MAIN), cdi_disk(-1), sizeMB(0) { memset(tmpname, 0, sizeof(tmpname)); // preload bx settings gui_options = bx_options; /* Set up dialog to actual values: */ for(int disk = 0; disk < PARTS; disk++) { partitiondlg[PARTS_PATH[disk]].txt = part_path[disk]; UpdateDiskParameters(disk); setSelected(PARTS_PRESENT[disk], gui_options.disks[disk].present); setSelected(PARTS_READONLY[disk], gui_options.disks[disk].readonly); setSelected(PARTS_BYTESWAP[disk], gui_options.disks[disk].byteswap); } // note that File_Exists() checks were disabled since they didn't work // on /dev/fd0 or /dev/cdrom if no media were inserted } DlgPartition::~DlgPartition() { } int DlgPartition::processDialog(void) { int retval = Dialog::GUI_CONTINUE; switch(state) { case STATE_MAIN: retval = processDialogMain(); break; case STATE_CDI0: retval = processDialogCdi0(); break; case STATE_CDI1: retval = processDialogCdi1(); break; } return retval; } void DlgPartition::selectPartPath(int disk) { strcpy(tmpname, gui_options.disks[disk].path); SDLGui_Open(dlgFileSelect = (DlgFileSelect*)DlgFileSelectOpen(tmpname, true)); state = STATE_FSEL; cdi_disk = disk; // let's use the cdi_disk even for selecting the path } int DlgPartition::processDialogMain(void) { int retval = Dialog::GUI_CONTINUE; switch (return_obj) { case PART0_BROWSE: selectPartPath(0); break; case PART1_BROWSE: selectPartPath(1); break; case PART2_BROWSE: selectPartPath(2); break; case PART3_BROWSE: selectPartPath(3); break; case PART0_CLEAR: part_path[0][0] = '\0'; part_size[0][0] = '\0'; setSelected(PARTS_PRESENT[0], false); setSelected(PARTS_READONLY[0], false); setSelected(PARTS_BYTESWAP[0], false); break; case PART1_CLEAR: part_path[1][0] = '\0'; part_size[1][0] = '\0'; setSelected(PARTS_PRESENT[1], false); setSelected(PARTS_READONLY[1], false); setSelected(PARTS_BYTESWAP[1], false); break; case PART2_CLEAR: part_path[2][0] = '\0'; part_size[2][0] = '\0'; setSelected(PARTS_PRESENT[2], false); setSelected(PARTS_READONLY[2], false); setSelected(PARTS_BYTESWAP[2], false); break; case PART3_CLEAR: part_path[3][0] = '\0'; part_size[3][0] = '\0'; setSelected(PARTS_PRESENT[3], false); setSelected(PARTS_READONLY[3], false); setSelected(PARTS_BYTESWAP[3], false); break; case PART0_GENERATE: init_create_disk_image(0); break; case PART1_GENERATE: init_create_disk_image(1); break; case PART2_GENERATE: init_create_disk_image(2); break; case PART3_GENERATE: init_create_disk_image(3); break; case HELP: SDLGui_Open(DlgAlertOpen(HELP_TEXT, ALERT_OK)); break; case APPLY: confirm(); /* fall through */ case CANCEL: retval = Dialog::GUI_CLOSE; break; } return retval; } int DlgPartition::processDialogCdi0(void) { D(bug("partition: dialog create disk image, step 1")); int retval = Dialog::GUI_CONTINUE; state = STATE_MAIN; if (dlgAlert && dlgAlert->pressedOk()) { if (File_Exists(cdi_path)) { dlgAlert = (DlgAlert *) DlgAlertOpen("File Exists. Overwrite?", ALERT_OKCANCEL); SDLGui_Open(dlgAlert); } else { dlgAlert = NULL; } state = STATE_CDI1; } return retval; } int DlgPartition::processDialogCdi1(void) { D(bug("partition: dialog create disk image, step 2")); int retval = Dialog::GUI_CONTINUE; state = STATE_MAIN; if (!dlgAlert || dlgAlert->pressedOk()) { int present = PARTS_PRESENT[cdi_disk]; if (create_disk_image()) { setSelected(present, true); } else { part_path[cdi_disk][0] = 0; } } return retval; } void DlgPartition::processResultFsel(int disk) { D(bug("disk: result part")); if (dlgFileSelect && dlgFileSelect->pressedOk()) { if (!File_DoesFileNameEndWithSlash(tmpname) /*&& File_Exists(tmpname) */ ) { safe_strncpy(gui_options.disks[disk].path, tmpname, sizeof(gui_options.disks[0].path)); UpdateDiskParameters(disk); setSelected(PARTS_PRESENT[disk], true); } else { part_path[disk][0] = 0; } } } void DlgPartition::confirm(void) { /* Read values from dialog */ for(int disk = 0; disk < PARTS; disk++) { strncpy(gui_options.disks[disk].partID, part_id[disk], sizeof(gui_options.disks[disk].partID)); gui_options.disks[disk].present = getSelected(PARTS_PRESENT[disk]); gui_options.disks[disk].readonly = getSelected(PARTS_READONLY[disk]); gui_options.disks[disk].byteswap = getSelected(PARTS_BYTESWAP[disk]); } bx_options = gui_options; } void DlgPartition::processResult(void) { D(bug("partition: process result, state=%d", state)); switch(state) { case STATE_FSEL: processResultFsel(cdi_disk); dlgFileSelect = NULL; state = STATE_MAIN; break; case STATE_CDI0: case STATE_CDI1: /* Will process it on next processDialog */ break; default: dlgFileSelect = NULL; dlgAlert = NULL; state = STATE_MAIN; break; } } Dialog *DlgPartitionOpen(void) { return new DlgPartition(partitiondlg); } aranym-1.1.0/src/gui-sdl/dlgOs.h0000664000175000017500000000307213454637621014557 0ustar joyjoy/* dlgOs.cpp - OS selection dialog Copyright (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DLGOS_H #define DLGOS_H 1 #include "dialog.h" class DlgFileSelect; class DlgAlert; class DlgOs: public Dialog { private: enum { STATE_MAIN, STATE_FSEL_TOS, STATE_FSEL_EMUTOS, STATE_FSEL_SNAPSHOT_DIR, STATE_CONFIRM, } state; char tmpname[MAX_FILENAME_LENGTH]; bx_tos_options_t tos_options; char snapshot_dir[sizeof(bx_options.snapshot_dir)]; DlgAlert *dlgAlert; DlgFileSelect *dlgFileSelect; int processDialogMain(void); void processResultTos(void); void processResultEmutos(void); void processResultTosClear(void); void processResultEmutosClear(void); void processResultSnapshotDir(void); void confirm(void); public: DlgOs(SGOBJ *dlg); ~DlgOs(); int processDialog(void); void processResult(void); }; Dialog *DlgOsOpen(void); #endif /* DLGOS_H */ aranym-1.1.0/src/gui-sdl/dlgOs.cpp0000664000175000017500000001310413454637621015107 0ustar joyjoy/* * dlgOs.cpp - Operating System dialog * * Copyright (c) 2004-2007 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "sdlgui.h" #include "file.h" #include "dlgOs.h" #include "dlgFileSelect.h" #include "dlgAlert.h" #define DEBUG 0 #include "debug.h" static char tos_path[sizeof(bx_options.tos.tos_path)]; static char emutos_path[sizeof(bx_options.tos.emutos_path)]; static char snapshot_dir_display[sizeof(bx_options.snapshot_dir)]; #define SDLGUI_INCLUDE_OSDLG #include "sdlgui.sdl" DlgOs::DlgOs(SGOBJ *dlg) : Dialog(dlg), state(STATE_MAIN), dlgAlert(NULL), dlgFileSelect(NULL) { /* Set up dialog to actual values: */ tos_options = bx_options.tos; osdlg[TOSCONSOLE].state = tos_options.redirect_CON ? SG_SELECTED : 0; osdlg[MCH_ARANYM].state = tos_options.cookie_mch == 0x50000 ? SG_SELECTED : 0; osdlg[MCH_FALCON].state = tos_options.cookie_mch == 0x30000 ? SG_SELECTED : 0; File_ShrinkName(tos_path, tos_options.tos_path, osdlg[MCH_TOS_PATH].w); osdlg[MCH_TOS_PATH].txt = tos_path; File_ShrinkName(emutos_path, tos_options.emutos_path, osdlg[MCH_EMUTOS_PATH].w); osdlg[MCH_EMUTOS_PATH].txt = emutos_path; strcpy(snapshot_dir, bx_options.snapshot_dir); File_ShrinkName(snapshot_dir_display, snapshot_dir, osdlg[SNAPSHOT_DIR].w); osdlg[SNAPSHOT_DIR].txt = snapshot_dir_display; } DlgOs::~DlgOs() { } int DlgOs::processDialog(void) { int retval = Dialog::GUI_CONTINUE; switch (state) { case STATE_MAIN: retval = processDialogMain(); break; case STATE_CONFIRM: state = STATE_MAIN; if (dlgAlert) { if (dlgAlert->pressedOk()) { confirm(); retval = Dialog::GUI_CLOSE; } delete dlgAlert; dlgAlert = NULL; } break; case STATE_FSEL_TOS: case STATE_FSEL_EMUTOS: case STATE_FSEL_SNAPSHOT_DIR: break; } return retval; } int DlgOs::processDialogMain(void) { int retval = Dialog::GUI_CONTINUE; D(bug("Os: process dialogmain, return_obj=%d", return_obj)); switch (return_obj) { case MCH_TOS_BROWSE: strcpy(tmpname, tos_options.tos_path); SDLGui_Open(dlgFileSelect = (DlgFileSelect*)DlgFileSelectOpen(tmpname, false)); state = STATE_FSEL_TOS; break; case MCH_TOS_CLEAR: strcpy(tos_options.tos_path, ""); strcpy(tos_path, ""); state = STATE_MAIN; break; case MCH_EMUTOS_BROWSE: strcpy(tmpname, tos_options.emutos_path); SDLGui_Open(dlgFileSelect = (DlgFileSelect*)DlgFileSelectOpen(tmpname, false)); state = STATE_FSEL_EMUTOS; break; case MCH_EMUTOS_CLEAR: strcpy(tos_options.emutos_path, ""); strcpy(emutos_path, ""); state = STATE_MAIN; break; case SNAPSHOT_DIR: strcpy(tmpname, snapshot_dir); SDLGui_Open(dlgFileSelect = (DlgFileSelect*)DlgFileSelectOpen(tmpname, false)); state = STATE_FSEL_SNAPSHOT_DIR; break; case APPLY: if (!File_Exists(tos_options.tos_path) && !File_Exists(tos_options.emutos_path)) { dlgAlert = (DlgAlert *) DlgAlertOpen("No operating system found.\nARAnyM will not be able to boot!\nContinue?", ALERT_OKCANCEL); SDLGui_Open(dlgAlert); state = STATE_CONFIRM; } if (!dlgAlert) { confirm(); retval = Dialog::GUI_CLOSE; } break; case CANCEL: retval = Dialog::GUI_CLOSE; break; } return retval; } void DlgOs::processResultTos(void) { if (dlgFileSelect && dlgFileSelect->pressedOk()) { strcpy(tos_options.tos_path, tmpname); File_ShrinkName(tos_path, tmpname, osdlg[MCH_TOS_PATH].w); } } void DlgOs::processResultEmutos(void) { if (dlgFileSelect && dlgFileSelect->pressedOk()) { strcpy(tos_options.emutos_path, tmpname); File_ShrinkName(emutos_path, tmpname, osdlg[MCH_EMUTOS_PATH].w); } } void DlgOs::processResultSnapshotDir(void) { struct stat st; if (dlgFileSelect && dlgFileSelect->pressedOk() && stat(tmpname, &st) == 0 && S_ISDIR(st.st_mode)) { strcpy(snapshot_dir, tmpname); File_ShrinkName(snapshot_dir_display, tmpname, osdlg[SNAPSHOT_DIR].w); } } void DlgOs::processResult(void) { D(bug("Os: process result, state=%d", state)); switch (state) { case STATE_FSEL_TOS: processResultTos(); dlgFileSelect = NULL; state = STATE_MAIN; break; case STATE_FSEL_EMUTOS: processResultEmutos(); dlgFileSelect = NULL; state = STATE_MAIN; break; case STATE_FSEL_SNAPSHOT_DIR: processResultSnapshotDir(); dlgFileSelect = NULL; state = STATE_MAIN; break; case STATE_CONFIRM: break; default: dlgFileSelect = NULL; state = STATE_MAIN; break; } } void DlgOs::confirm(void) { tos_options.redirect_CON = (osdlg[TOSCONSOLE].state & SG_SELECTED); tos_options.cookie_mch = (osdlg[MCH_ARANYM].state & SG_SELECTED) ? 0x50000 : 0x30000; bx_options.tos = tos_options; strcpy(bx_options.snapshot_dir, snapshot_dir); } Dialog *DlgOsOpen(void) { return new DlgOs(osdlg); } aranym-1.1.0/src/gui-sdl/dlgNetwork.h0000664000175000017500000000220513454637621015624 0ustar joyjoy/* dlgNetwork.cpp - Network selection dialog Copyright (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DLGNETWORK_H #define DLGNETWORK_H 1 #include "dialog.h" class DlgNetwork: public Dialog { private: void confirm(void); void init_options(int ethX, int type); void save_options(int ethX, int type); public: DlgNetwork(SGOBJ *dlg); ~DlgNetwork(); int processDialog(void); }; Dialog *DlgNetworkOpen(void); #endif /* DLGNETWORK_H */ aranym-1.1.0/src/gui-sdl/dlgNetwork.cpp0000664000175000017500000000736113454637621016167 0ustar joyjoy/* * dlgNetwork.cpp - Network dialog * * Copyright (c) 2007 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "sdlgui.h" #include "tools.h" // safe_strncpy #include "dlgNetwork.h" #define BRIDGE_FILTER_NONE 0 #define BRIDGE_FILTER_MCAST 1 #define BRIDGE_FILTER_IP 2 #define BRIDGE_FILTER_MAC 3 static struct { bx_ethernet_options_t config; bool bridge; bool debug; int filter_type; } eth[2]; #define SDLGUI_INCLUDE_NETWORKDLG #include "sdlgui.sdl" void DlgNetwork::init_options(int ethX, int type) { eth[ethX].config = bx_options.ethernet[ethX]; eth[ethX].debug = strstr(eth[ethX].config.type, "debug") != NULL; eth[ethX].bridge = strstr(eth[ethX].config.type, "bridge") != NULL; dlg[type + 0].state = 0; /* ETH0_TYP_NONE */ dlg[type + 1].state = 0; /* ETH0_TYP_PTP */ dlg[type + 2].state = 0; /* ETH0_TYP_BRIDGE */ if (strlen(eth[ethX].config.type) == 0 || strcmp(eth[ethX].config.type, "none") == 0) dlg[type + 0].state = SG_SELECTED; else if (eth[ethX].bridge) dlg[type + 2].state = SG_SELECTED; else dlg[type + 1].state = SG_SELECTED; if (strstr(eth[ethX].config.type, "nofilter") != NULL) eth[ethX].filter_type = BRIDGE_FILTER_NONE; else if (strstr(eth[ethX].config.type, "mcast") != NULL) eth[ethX].filter_type = BRIDGE_FILTER_MCAST; else if (strstr(eth[ethX].config.type, "ip") != NULL) eth[ethX].filter_type = BRIDGE_FILTER_IP; else eth[ethX].filter_type = BRIDGE_FILTER_MAC; } DlgNetwork::DlgNetwork(SGOBJ *dlg) : Dialog(dlg) { // init init_options(0, ETH0_TYP_NONE); init_options(1, ETH1_TYP_NONE); } DlgNetwork::~DlgNetwork() { } int DlgNetwork::processDialog(void) { int retval = Dialog::GUI_CONTINUE; switch(return_obj) { case APPLY: confirm(); /* fall through */ case CANCEL: retval = Dialog::GUI_CLOSE; break; } return retval; } void DlgNetwork::save_options(int ethX, int type) { eth[ethX].bridge = (dlg[type + 2].state & SG_SELECTED); if (dlg[type + 0].state & SG_SELECTED) { eth[ethX].config.type[0] = '\0'; } else { safe_strncpy(eth[ethX].config.type, eth[ethX].bridge ? "bridge" : "ptp", sizeof(eth[ethX].config.type)); if (eth[ethX].debug) safe_strncat(eth[ethX].config.type, " debug", sizeof(eth[ethX].config.type)); if (eth[ethX].bridge) { switch (eth[ethX].filter_type) { case BRIDGE_FILTER_NONE: safe_strncat(eth[ethX].config.type, " nofilter", sizeof(eth[ethX].config.type)); break; case BRIDGE_FILTER_MCAST: safe_strncat(eth[ethX].config.type, " mcast", sizeof(eth[ethX].config.type)); break; case BRIDGE_FILTER_IP: safe_strncat(eth[ethX].config.type, " ip", sizeof(eth[ethX].config.type)); break; default: case BRIDGE_FILTER_MAC: break; } } } bx_options.ethernet[ethX] = eth[ethX].config; } void DlgNetwork::confirm(void) { save_options(0, ETH0_TYP_NONE); save_options(1, ETH1_TYP_NONE); } Dialog *DlgNetworkOpen(void) { return new DlgNetwork(networkdlg); } aranym-1.1.0/src/gui-sdl/dlgMain.h0000664000175000017500000000243213454637621015061 0ustar joyjoy/* dlgMain.cpp - main dialog Copyright (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DLGMAIN_H #define DLGMAIN_H 1 #include "dialog.h" class DlgFileSelect; class DlgMain : public Dialog { private: enum { STATE_MAIN, STATE_LOADSETTINGS, STATE_SAVESETTINGS }; char path[MAX_FILENAME_LENGTH]; void LoadSettings(void); void SaveSettings(void); int state; DlgFileSelect *dlgFileSelect; void processResult(void); virtual void handleHotkey(HOTKEY hotkey); public: DlgMain(SGOBJ *new_dlg); ~DlgMain(); int processDialog(void); }; DlgMain *DlgMainOpen(void); #endif /* DLGMAIN_H */ aranym-1.1.0/src/gui-sdl/dlgMain.cpp0000664000175000017500000001654413454637621015425 0ustar joyjoy/* * dlgMain.cpp - Main Setup dialog * * Copyright (c) 2002-2008 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "file.h" #include "parameters.h" // load/saveSettings() #include "tools.h" #include "version.h" #include "sdlgui.h" #include "dlgFileSelect.h" #include "dlgMain.h" #include "dlgAlert.h" #include "dlgOs.h" #include "dlgVideo.h" #include "dlgKeyboard.h" #include "dlgNetwork.h" #include "dlgPartition.h" #include "dlgHotkeys.h" #include "dlgDisk.h" #include "dlgUsb.h" #include "dlgHostfs.h" #include "bootos.h" // bootOs ptr #include "main.h" #ifdef OS_darwin extern void refreshMenuKeys(); #endif /* The main dialog: */ #define SDLGUI_INCLUDE_MAINDLG #include "sdlgui.sdl" static const char *ABOUT_TEXT = " %s\n" " =============\n" "\n" "ARAnyM as an Open Source project has\n" "been developed by a loosely knit team\n" "of hackers accross the Net. Please see\n" "the doc file AUTHORS for more info.\n" "\n" "This program is free software; you can\n" "redistribute it and/or modify it under\n" "the terms of the GNU General Public\n" "License as published by the Free Soft-\n" "ware Foundation; either version 2 of\n" "the License, or (at your option) any\n" "later version.\n" "\n" "This program is distributed in the\n" "hope that it will be useful, but\n" "WITHOUT ANY WARRANTY. See the GNU Ge-\n" "neral Public License for more details."; static const char *HELP_TEXT = " ARAnyM SETUP menu:\n" " ------------------\n" "Changes must be confirmed with APPLY first. Note that all changes are applied immediately to a running ARAnyM.\n" "Some changes require system reboot in order to take effect. It's actually safest to always reboot after any change."; static const char *MEMORY_TEXT = "Changing memory configuration here is not supported yet.\n" "You have to restart ARAnyM."; static void setState(int index, int bits, bool set) { if (set) maindlg[index].state |= bits; else maindlg[index].state &= ~bits; } DlgMain::DlgMain(SGOBJ *dlg) : Dialog(dlg), state(STATE_MAIN), dlgFileSelect(NULL) { memset(path, 0, sizeof(path)); // if no bootOs available then disable the Reboot button setState(WARMREBOOT, SG_DISABLED, bootOs == NULL); setState(COLDREBOOT, SG_DISABLED, bootOs == NULL); } DlgMain::~DlgMain() { #ifdef OS_darwin refreshMenuKeys(); #endif } #ifndef HAVE_VASPRINTF extern "C" int vasprintf(char **, const char *, va_list); #endif static void aboutalert(const char *fmt, ...) { va_list args; char *buf = NULL; int ret; va_start(args, fmt); ret = vasprintf(&buf, fmt, args); va_end(args); if (ret >= 0) { SDLGui_Open(DlgAlertOpen(buf, ALERT_OK)); free(buf); } va_end(args); } int DlgMain::processDialog(void) { int retval = Dialog::GUI_CONTINUE; switch(return_obj) { case ABOUT: aboutalert(ABOUT_TEXT, version_string); break; case DISCS: SDLGui_Open(DlgDiskOpen()); break; case KEYBOARD: SDLGui_Open(DlgKeyboardOpen()); break; case HOTKEYS: SDLGui_Open(DlgHotkeysOpen()); break; case OS: SDLGui_Open(DlgOsOpen()); break; case VIDEO: SDLGui_Open(DlgVideoOpen()); break; case NETWORK: SDLGui_Open(DlgNetworkOpen()); break; case PARTITIONS: SDLGui_Open(DlgPartitionOpen()); break; case USB: SDLGui_Open(DlgUsbOpen()); break; case HOSTFS: SDLGui_Open(DlgHostfsOpen()); break; case LOAD: LoadSettings(); break; case SAVE: // make sure users understand which setting they're saving // best by allowing this Save button only after the "Apply" was used. SaveSettings(); break; case WARMREBOOT: if (bootOs != NULL) retval = Dialog::GUI_WARMREBOOT; break; case COLDREBOOT: if (bootOs != NULL) retval = Dialog::GUI_COLDREBOOT; break; case SHUTDOWN: retval = Dialog::GUI_SHUTDOWN; break; case FULLSCREEN: bx_options.video.fullscreen = !bx_options.video.fullscreen; retval = Dialog::GUI_CLOSE; break; case SCREENSHOT: host->video->doScreenshot(); retval = Dialog::GUI_CLOSE; break; case HELP: SDLGui_Open(DlgAlertOpen(HELP_TEXT, ALERT_OK)); break; case CLOSE: retval = Dialog::GUI_CLOSE; break; } return retval; } void DlgMain::LoadSettings(void) { if (strlen(path) == 0) { safe_strncpy(path, getConfigFile(), sizeof(path)); } dlgFileSelect = (DlgFileSelect *) DlgFileSelectOpen(path, false); SDLGui_Open(dlgFileSelect); state = STATE_LOADSETTINGS; } void DlgMain::SaveSettings(void) { if (strlen(path) == 0) { safe_strncpy(path, getConfigFile(), sizeof(path)); } dlgFileSelect = (DlgFileSelect *) DlgFileSelectOpen(path, true); SDLGui_Open(dlgFileSelect); state = STATE_SAVESETTINGS; } void DlgMain::processResult(void) { /* We called either a fileselector, to load/save or an alert box */ switch(state) { case STATE_LOADSETTINGS: if (dlgFileSelect) { /* Load setting if pressed OK in fileselector */ if (dlgFileSelect->pressedOk()) { uint32 old_FastRAMSize = FastRAMSize; #if FIXED_ADDRESSING unsigned long old_fixed_memory_offset = fixed_memory_offset; #endif bool ret = loadSettings(path); if (ret && (FastRAMSize != old_FastRAMSize #if FIXED_ADDRESSING || fixed_memory_offset != old_fixed_memory_offset #endif )) { /* * changing memory configuration here, * by releasing and re-allocating it, * does not work because it is too late. * Give a hint at least. */ FastRAMSize = old_FastRAMSize; #if FIXED_ADDRESSING fixed_memory_offset = old_fixed_memory_offset; #endif SDLGui_Open(DlgAlertOpen(MEMORY_TEXT, ALERT_OK)); } } } break; case STATE_SAVESETTINGS: if (dlgFileSelect) { /* Save setting if pressed OK in fileselector */ if (dlgFileSelect->pressedOk()) { saveSettings(path); } } break; } dlgFileSelect = NULL; state = STATE_MAIN; } void DlgMain::handleHotkey(HOTKEY hotkey) { int obj = -1; switch (hotkey) { case HOTKEY_none: case HOTKEY_debug: case HOTKEY_ungrab: break; case HOTKEY_setup: obj = CLOSE; break; case HOTKEY_quit: obj = SHUTDOWN; break; case HOTKEY_warmreboot: obj = WARMREBOOT; break; case HOTKEY_coldreboot: obj = COLDREBOOT; break; case HOTKEY_fullscreen: obj = FULLSCREEN; break; case HOTKEY_screenshot: obj = SCREENSHOT; break; case HOTKEY_sound: break; } if (obj >= 0) { dlg[obj].state ^= SG_SELECTED; SDLGui_DrawObject(dlg, obj); SDLGui_RefreshObj(dlg, obj); if (dlg[obj].flags & (SG_EXIT | SG_TOUCHEXIT)) { return_obj = obj; } } } DlgMain *DlgMainOpen(void) { return new DlgMain(maindlg); } aranym-1.1.0/src/gui-sdl/dlgKeypress.h0000664000175000017500000000220313454637621015776 0ustar joyjoy/* dlgKeypress.cpp - Keypress dialog Copyright (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DLGKEYPRESS_H #define DLGKEYPRESS_H 1 #include "dialog.h" #include "SDL_compat.h" class DlgKeypress: public Dialog { private: bx_hotkey keysym; void keyPress(const SDL_Event &event); public: DlgKeypress(SGOBJ *dlg); ~DlgKeypress(); int processDialog(void); bx_hotkey &getPressedKey(void); }; Dialog *DlgKeypressOpen(void); #endif /* DLGKEYPRESS_H */ aranym-1.1.0/src/gui-sdl/dlgKeypress.cpp0000664000175000017500000000377013454637621016343 0ustar joyjoy/* dlgKeyPress.cpp - dialog for asking to press a key Copyright (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "parameters.h" #include "sdlgui.h" #include "input.h" #include "dlgKeypress.h" #define SDLGUI_INCLUDE_PRESSKEYDLG #include "sdlgui.sdl" DlgKeypress::DlgKeypress(SGOBJ *dlg) : Dialog(dlg) { memset(&keysym, 0, sizeof(keysym)); } DlgKeypress::~DlgKeypress() { } void DlgKeypress::keyPress(const SDL_Event &event) { if (event.type == SDL_KEYDOWN) { keysym.sym = event.key.keysym.sym; keysym.mod = (SDL_Keymod)(event.key.keysym.mod & HOTKEYS_MOD_MASK); #if defined(_WIN32) || defined(__CYGWIN__) /* SDL on windows does not report KMOD_CTRL on right ctrl key */ if (keysym.sym == SDLK_RCTRL) keysym.mod = (SDL_Keymod)(keysym.mod | KMOD_CTRL); #endif if (SDLK_IS_MODIFIER(keysym.sym) && keysym.sym != SDLK_NUMLOCKCLEAR && keysym.sym != SDLK_SCROLLLOCK) { keysym.sym = SDLK_UNKNOWN; } } } int DlgKeypress::processDialog(void) { int retval = Dialog::GUI_CONTINUE; if (keysym.sym != SDLK_UNKNOWN) { // special hack: Enter key = no key needed, just modifiers if (keysym.sym == SDLK_RETURN) { keysym.sym = SDLK_UNKNOWN; } retval = Dialog::GUI_CLOSE; } return retval; } bx_hotkey &DlgKeypress::getPressedKey(void) { return keysym; } Dialog *DlgKeypressOpen(void) { return new DlgKeypress(presskeydlg); } aranym-1.1.0/src/gui-sdl/dlgKeyboard.h0000664000175000017500000000205113454637621015732 0ustar joyjoy/* dlgKeyboard.cpp - Keyboard selection dialog Copyright (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DLGKEYBOARD_H #define DLGKEYBOARD_H 1 #include "dialog.h" class DlgKeyboard: public Dialog { private: void confirm(void); public: DlgKeyboard(SGOBJ *dlg); ~DlgKeyboard(); int processDialog(void); }; Dialog *DlgKeyboardOpen(void); #endif /* DLGKEYBOARD_H */ aranym-1.1.0/src/gui-sdl/dlgKeyboard.cpp0000664000175000017500000000372513454637621016276 0ustar joyjoy/* * dlgKeyboard.cpp - Keyboard dialog * * Copyright (c) 2004-2007 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "sdlgui.h" #include "dlgKeyboard.h" /* The keyboard dialog: */ #define SDLGUI_INCLUDE_KEYBOARDDLG #include "sdlgui.sdl" DlgKeyboard::DlgKeyboard(SGOBJ *dlg) : Dialog(dlg) { keyboarddlg[EIFFEL].state = bx_options.ikbd.wheel_eiffel ? SG_SELECTED : 0; keyboarddlg[ARROWKEYS].state = bx_options.ikbd.wheel_eiffel ? 0 : SG_SELECTED; keyboarddlg[MILAN_ALTGR].state = bx_options.ikbd.altgr ? SG_SELECTED : 0; keyboarddlg[ATARI_ALT].state = bx_options.ikbd.altgr ? 0 : SG_SELECTED; } DlgKeyboard::~DlgKeyboard() { } int DlgKeyboard::processDialog(void) { int retval = Dialog::GUI_CONTINUE; switch(return_obj) { case APPLY: confirm(); /* fall through */ case CANCEL: retval = Dialog::GUI_CLOSE; break; } return retval; } void DlgKeyboard::confirm(void) { bx_options.ikbd.wheel_eiffel = (keyboarddlg[EIFFEL].state & SG_SELECTED); bx_options.ikbd.altgr = (keyboarddlg[MILAN_ALTGR].state & SG_SELECTED); } Dialog *DlgKeyboardOpen(void) { return new DlgKeyboard(keyboarddlg); } aranym-1.1.0/src/gui-sdl/dlgHotkeys.h0000664000175000017500000000256513454637621015632 0ustar joyjoy/* dlgHotkeys.cpp - Hotkeys dialog Copyright (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DLGHOTKEYS_H #define DLGHOTKEYS_H 1 #include "dialog.h" #include "SDL_compat.h" class DlgKeypress; class DlgHotkeys: public Dialog { private: enum { STATE_MAIN, STATE_SETUP, STATE_QUIT, STATE_WARMREBOOT, STATE_COLDREBOOT, STATE_UNGRAB, STATE_DEBUG, STATE_SCREENSHOT, STATE_FULLSCREEN, STATE_SOUND }; bx_hotkeys_t hotkeys; int state; DlgKeypress *dlgKeypress; void confirm(void); void idle(void); void processResult(void); public: DlgHotkeys(SGOBJ *dlg); ~DlgHotkeys(); int processDialog(void); }; Dialog *DlgHotkeysOpen(void); #endif /* DLGHOTKEYS_H */ aranym-1.1.0/src/gui-sdl/dlgHotkeys.cpp0000664000175000017500000001367313454637621016167 0ustar joyjoy/* * dlgHotkeys.cpp - dialog for editing Hotkeys settings * * Copyright (c) 2003-2007 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * gui-sdl original code and ideas borrowed from Hatari emulator * disk_image() borrowed from Bochs project, IIRC * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "parameters.h" #include "sdlgui.h" #include "input.h" #include "dlgKeypress.h" #include "dlgHotkeys.h" #include "dlgAlert.h" #define UPDATE_BUTTON(Button) keysymToString(key_ ## Button, &hotkeys.Button) static char key_setup[HOTKEYS_STRING_SIZE]; static char key_quit[HOTKEYS_STRING_SIZE]; static char key_warmreboot[HOTKEYS_STRING_SIZE]; static char key_coldreboot[HOTKEYS_STRING_SIZE]; static char key_ungrab[HOTKEYS_STRING_SIZE]; static char key_debug[HOTKEYS_STRING_SIZE]; static char key_screenshot[HOTKEYS_STRING_SIZE]; static char key_fullscreen[HOTKEYS_STRING_SIZE]; static char key_sound[HOTKEYS_STRING_SIZE]; /* The hotkeys dialog: */ #define SDLGUI_INCLUDE_HOTKEYSDLG #include "sdlgui.sdl" static const char *HELP_TEXT = "Define hotkeys for certain functions:\n" "\n" "Setup ....... you are using it right now\n" "Quit ........ quit ARAnyM\n" "Warm-Reboot . restart virtual machine\n" "Cold-Reboot . power-on virtual machine\n" "Ungrab ...... release mouse and keyboard\n" "Debug ....... invoke internal debugger\n" "Screenshot... save screen image to file\n" "Fullscreen... switch from/to window mode\n" "Sound........ Toggle sound on/off\n" "\n" "LS = Left Shift, LC = Left Ctrl,\n" "RA = Right Alt, RM = Right Meta.\n" "\n" "Shifter + [Enter] key => Shifter only"; DlgHotkeys::DlgHotkeys(SGOBJ *dlg) : Dialog(dlg), state(STATE_MAIN), dlgKeypress(NULL) { hotkeys = bx_options.hotkeys; // show current GUI hotkey UPDATE_BUTTON(setup); UPDATE_BUTTON(quit); UPDATE_BUTTON(warmreboot); UPDATE_BUTTON(coldreboot); UPDATE_BUTTON(ungrab); UPDATE_BUTTON(debug); UPDATE_BUTTON(screenshot); UPDATE_BUTTON(fullscreen); UPDATE_BUTTON(sound); } DlgHotkeys::~DlgHotkeys() { } int DlgHotkeys::processDialog(void) { int retval = Dialog::GUI_CONTINUE; switch(return_obj) { case SETUP: dlgKeypress = (DlgKeypress *) DlgKeypressOpen(); SDLGui_Open(dlgKeypress); state = STATE_SETUP; break; case QUIT: dlgKeypress = (DlgKeypress *) DlgKeypressOpen(); SDLGui_Open(dlgKeypress); state = STATE_QUIT; break; case WARMREBOOT: dlgKeypress = (DlgKeypress *) DlgKeypressOpen(); SDLGui_Open(dlgKeypress); state = STATE_WARMREBOOT; break; case COLDREBOOT: dlgKeypress = (DlgKeypress *) DlgKeypressOpen(); SDLGui_Open(dlgKeypress); state = STATE_COLDREBOOT; break; case UNGRAB: dlgKeypress = (DlgKeypress *) DlgKeypressOpen(); SDLGui_Open(dlgKeypress); state = STATE_UNGRAB; break; case DEBUG: dlgKeypress = (DlgKeypress *) DlgKeypressOpen(); SDLGui_Open(dlgKeypress); state = STATE_DEBUG; break; case SCREENSHOT: dlgKeypress = (DlgKeypress *) DlgKeypressOpen(); SDLGui_Open(dlgKeypress); state = STATE_SCREENSHOT; break; case FULLSCREEN: dlgKeypress = (DlgKeypress *) DlgKeypressOpen(); SDLGui_Open(dlgKeypress); state = STATE_FULLSCREEN; break; case SOUND: dlgKeypress = (DlgKeypress *) DlgKeypressOpen(); SDLGui_Open(dlgKeypress); state = STATE_SOUND; break; case HELP: SDLGui_Open(DlgAlertOpen(HELP_TEXT, ALERT_OK)); break; case APPLY: confirm(); /* fall through */ case CANCEL: retval = Dialog::GUI_CLOSE; break; } return retval; } void DlgHotkeys::confirm(void) { bx_options.hotkeys = hotkeys; } void DlgHotkeys::idle(void) { // show current GUI hotkey UPDATE_BUTTON(setup); UPDATE_BUTTON(quit); UPDATE_BUTTON(warmreboot); UPDATE_BUTTON(coldreboot); UPDATE_BUTTON(ungrab); UPDATE_BUTTON(debug); UPDATE_BUTTON(screenshot); UPDATE_BUTTON(fullscreen); UPDATE_BUTTON(sound); /* Force redraw */ init(); } void DlgHotkeys::processResult(void) { switch(state) { case STATE_SETUP: if (dlgKeypress) { hotkeys.setup = dlgKeypress->getPressedKey(); dlgKeypress = NULL; } break; case STATE_QUIT: if (dlgKeypress) { hotkeys.quit = dlgKeypress->getPressedKey(); dlgKeypress = NULL; } break; case STATE_WARMREBOOT: if (dlgKeypress) { hotkeys.warmreboot = dlgKeypress->getPressedKey(); dlgKeypress = NULL; } break; case STATE_COLDREBOOT: if (dlgKeypress) { hotkeys.coldreboot = dlgKeypress->getPressedKey(); dlgKeypress = NULL; } break; case STATE_UNGRAB: if (dlgKeypress) { hotkeys.ungrab = dlgKeypress->getPressedKey(); dlgKeypress = NULL; } break; case STATE_DEBUG: if (dlgKeypress) { hotkeys.debug = dlgKeypress->getPressedKey(); dlgKeypress = NULL; } break; case STATE_SCREENSHOT: if (dlgKeypress) { hotkeys.screenshot = dlgKeypress->getPressedKey(); dlgKeypress = NULL; } break; case STATE_FULLSCREEN: if (dlgKeypress) { hotkeys.fullscreen = dlgKeypress->getPressedKey(); dlgKeypress = NULL; } break; case STATE_SOUND: if (dlgKeypress) { hotkeys.sound = dlgKeypress->getPressedKey(); dlgKeypress = NULL; } break; } state = STATE_MAIN; } Dialog *DlgHotkeysOpen(void) { return new DlgHotkeys(hotkeysdlg); } aranym-1.1.0/src/gui-sdl/dlgHostfs.h0000664000175000017500000000273713454637621015453 0ustar joyjoy/* dlgHostfs.cpp - HostFS dialog Copyright (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DLGHOSTFS_H #define DLGHOSTFS_H 1 #include "dialog.h" class DlgAlert; class DlgFileSelect; class DlgHostfs: public Dialog { private: bx_aranymfs_options_t options; DlgFileSelect *dlgFileSelect; char tmpname[MAX_FILENAME_LENGTH]; int selected; /* Do we have to update the file names in the dialog? */ bool refreshentries; /* The actual selection, -1 if none selected */ int ypos; bool pressed_ok, redraw; void confirm(void); void idle(void); void processResult(void); void refreshEntries(void); void updateEntries(void); public: DlgHostfs(SGOBJ *dlg); ~DlgHostfs(); int processDialog(void); bool pressedOk(void); }; Dialog *DlgHostfsOpen(void); #endif /* DLGHOSTFS_H */ aranym-1.1.0/src/gui-sdl/dlgHostfs.cpp0000664000175000017500000001604013454637621015776 0ustar joyjoy/* * dlgHostfs.cpp - dialog for HostFS support * * Copyright (c) 2003-2009 ARAnyM dev team (see AUTHORS) * * originally taken from the hatari project, thanks Thothy! * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "sdlgui.h" #include "file.h" #include "dlgHostfs.h" #include "dlgAlert.h" #include "dlgFileSelect.h" #include "nf_base.h" #include #include "verify.h" #define DEBUG 0 #include "debug.h" #ifdef HOSTFS_SUPPORT #define DLG_WIDTH 76 #define ENTRY_COUNT 15 /* (HOSTFSDLG_LASTENTRY - HOSTFSDLG_FIRSTENTRY + 1) */ #define ENTRY_LENGTH sizeof(bx_options.aranymfs.drive[0].configPath) static char dlgfilenames[ENTRY_COUNT][ENTRY_LENGTH + 1]; static char dlgdrives[ENTRY_COUNT][3]; /* The dialog data: */ #define SDLGUI_INCLUDE_HOSTFSDLG #include "sdlgui.sdl" verify((HOSTFSDLG_LASTENTRY - HOSTFSDLG_FIRSTENTRY + 1) == ENTRY_COUNT); verify((HOSTFSDLG_LASTCASE - HOSTFSDLG_FIRSTCASE + 1) == ENTRY_COUNT); verify((HOSTFSDLG_LASTCLEAR - HOSTFSDLG_FIRSTCLEAR + 1) == ENTRY_COUNT); static const char *HELP_TEXT = "For accessing data on a host filesystem you can map the host fs to a logical drive in TOS or MiNT.\n" "To assign a drive click on a [Path] and select a directory (or type in a name).\n" "\n" "You have to reboot Aranym for the settings to take effect."; /*-----------------------------------------------------------------------*/ /* Show and process a file selection dialog. Returns TRUE if user selected "OK", FALSE if "cancel". bAllowNew: TRUE if the user is allowed to insert new file names. */ DlgHostfs::DlgHostfs(SGOBJ *dlg) : Dialog(dlg), dlgFileSelect(NULL), selected(0), refreshentries(true), ypos(0), pressed_ok(false), redraw(true) { options = bx_options.aranymfs; } void DlgHostfs::confirm(void) { char *ptrLast; int len; for (int i = 0; i < HOSTFS_MAX_DRIVES; i++) { len = strlen(options.drive[i].rootPath); if (len > 0) { ptrLast = options.drive[i].rootPath + len - 1; if (*ptrLast != DIRSEPARATOR[0]) strcat(options.drive[i].rootPath, DIRSEPARATOR); } strcpy(options.drive[i].configPath, options.drive[i].rootPath); if (len > 0) { if (options.drive[i].halfSensitive) strcat(options.drive[i].configPath, ":"); } } bx_options.aranymfs = options; } void DlgHostfs::idle(void) { if (refreshentries) { refreshEntries(); } /* Force redraw ? */ if (redraw) { init(); redraw = false; } } int DlgHostfs::processDialog(void) { int retval = Dialog::GUI_CONTINUE; switch (return_obj) { case HOSTFSDLG_UP: updateEntries(); /* Scroll up */ if (ypos > 0) { --ypos; refreshentries = true; } break; case HOSTFSDLG_DOWN: updateEntries(); /* Scroll down */ if (ypos < (HOSTFS_MAX_DRIVES - ENTRY_COUNT)) { ++ypos; refreshentries = true; } break; case HELP: updateEntries(); SDLGui_Open(DlgAlertOpen(HELP_TEXT, ALERT_OK)); break; case HOSTFSDLG_OKAY: updateEntries(); pressed_ok = true; confirm(); /* fall through */ case HOSTFSDLG_CANCEL: retval = Dialog::GUI_CLOSE; break; default: break; } /* Has the user clicked on the path? */ if ((return_obj >= HOSTFSDLG_FIRSTENTRY) && (return_obj < (HOSTFSDLG_FIRSTENTRY + ENTRY_COUNT))) { selected = return_obj - HOSTFSDLG_FIRSTENTRY + ypos; strcpy(tmpname, options.drive[selected].rootPath); SDLGui_Open(dlgFileSelect = (DlgFileSelect*)DlgFileSelectOpen(tmpname, false)); } if ((return_obj >= HOSTFSDLG_FIRSTCASE) && (return_obj < (HOSTFSDLG_FIRSTCASE + ENTRY_COUNT))) { options.drive[return_obj - HOSTFSDLG_FIRSTCASE + ypos].halfSensitive = (dlg[return_obj].state & SG_SELECTED) == 0; } if ((return_obj >= HOSTFSDLG_FIRSTCLEAR) && (return_obj < (HOSTFSDLG_FIRSTCLEAR + ENTRY_COUNT))) { selected = return_obj - HOSTFSDLG_FIRSTCLEAR + ypos; options.drive[selected].rootPath[0] = '\0'; dlgfilenames[selected][0] = '\0'; refreshentries = true; } if (refreshentries) { refreshEntries(); } return retval; } void DlgHostfs::refreshEntries(void) { if (refreshentries) { int i; /* Copy entries to dialog: */ for (i = 0; i < ENTRY_COUNT; i++) { if ((i + ypos) < HOSTFS_MAX_DRIVES) { strcpy(dlgfilenames[i], options.drive[i + ypos].rootPath); dlg[HOSTFSDLG_FIRSTENTRY + i].flags = (SG_SELECTABLE | SG_EXIT); dlg[HOSTFSDLG_FIRSTENTRY + i].type = SGEDITFIELD; strcpy(dlgdrives[i], "A:"); dlgdrives[i][0] = DriveToLetter(i + ypos); dlg[HOSTFSDLG_FIRSTDRIVE + i].txt = dlgdrives[i]; dlg[HOSTFSDLG_FIRSTCASE + i].state = !options.drive[i + ypos].halfSensitive && options.drive[i + ypos].rootPath[0] ? SG_SELECTED : 0; } else { /* Clear entry */ dlgfilenames[i][0] = 0; dlg[HOSTFSDLG_FIRSTENTRY + i].flags = 0; dlg[HOSTFSDLG_FIRSTENTRY + i].type = SGTEXT; dlg[HOSTFSDLG_FIRSTDRIVE + i].txt = ""; dlg[HOSTFSDLG_FIRSTCASE + i].state = 0; } dlg[HOSTFSDLG_FIRSTENTRY + i].state = 0; } refreshentries = false; redraw = true; } } void DlgHostfs::updateEntries(void) { int i; /* Copy entries from dialog to options: */ for (i = 0; i < ENTRY_COUNT; i++) { if ((i + ypos) < HOSTFS_MAX_DRIVES) { strcpy(options.drive[i + ypos].rootPath, dlgfilenames[i]); } } } bool DlgHostfs::pressedOk(void) { return pressed_ok; } void DlgHostfs::processResult(void) { struct stat st; if (dlgFileSelect && dlgFileSelect->pressedOk() && stat(tmpname, &st) == 0 && S_ISDIR(st.st_mode)) { strcpy(options.drive[selected].rootPath, tmpname); refreshentries = true; } dlgFileSelect = NULL; } #else /* Function and variables for when HOSTFS not present */ #define hostfsdlg nohostfsdlg #define SDLGUI_INCLUDE_NOHOSTFSDLG #include "sdlgui.sdl" int DlgHostfs::processDialog(void) { int retval = Dialog::GUI_CONTINUE; if (return_obj == OK) retval = Dialog::GUI_CLOSE; return retval; } void DlgHostfs::processResult(void) { dlgFileSelect = NULL; } DlgHostfs::DlgHostfs(SGOBJ *dlg) : Dialog(dlg), dlgFileSelect(NULL), selected(0), refreshentries(false), ypos(0), pressed_ok(false), redraw(false) { } void DlgHostfs::confirm(void) { } void DlgHostfs::idle(void) { } #endif /* HOSTFS_SUPPORT */ DlgHostfs::~DlgHostfs() { } Dialog *DlgHostfsOpen() { return new DlgHostfs(hostfsdlg); } // don't remove this modeline with intended formatting for vim:ts=4:sw=4: aranym-1.1.0/src/gui-sdl/dlgFileSelect.h0000664000175000017500000000310013454637621016205 0ustar joyjoy/* dlgFileSelect.cpp - File selection dialog Copyright (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DLGFILESELECT_H #define DLGFILESELECT_H 1 #include "dialog.h" class DlgFileSelect: public Dialog { private: char *path_and_name; char file_path[MAX_FILENAME_LENGTH]; char file_fname[128]; /* Do we have to reload the directory file list? */ bool reloaddir; /* Do we have to update the file names in the dialog? */ bool refreshentries; /* The actual selection, -1 if none selected */ int selection, ypos; bool eol, pressed_ok, redraw; void confirm(void); void idle(void); void processResult(void); void refreshEntries(void); public: DlgFileSelect(SGOBJ *dlg, char *new_path_and_name, bool bAllowNew); ~DlgFileSelect(); int processDialog(void); bool pressedOk(void); }; Dialog *DlgFileSelectOpen(char *path_and_name, bool bAllowNew); #endif /* DLGFILESELECT_H */ aranym-1.1.0/src/gui-sdl/dlgFileSelect.cpp0000664000175000017500000002315113454637621016550 0ustar joyjoy/* * dlgFileselect.cpp - dialog for selecting files (fileselector box) * * Copyright (c) 2003-2009 ARAnyM dev team (see AUTHORS) * * originally taken from the hatari project, thanks Thothy! * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "sdlgui.h" #include "file.h" #include "dlgFileSelect.h" #include #define DEBUG 0 #include "debug.h" #define DLG_WIDTH 76 #define ENTRY_COUNT 15 /* (SGFSDLG_LASTENTRY - SGFSDLG_FIRSTENTRY + 1) */ #define ENTRY_LENGTH (DLG_WIDTH-5) static char dlgpath[DLG_WIDTH-1], dlgfname[ENTRY_LENGTH-2]; /* File and path name in the dialog */ static char dlgfilenames[ENTRY_COUNT][ENTRY_LENGTH + 1]; /* The dialog data: */ #define SDLGUI_INCLUDE_FSDLG #include "sdlgui.sdl" struct listentry { char *filename; bool directory; struct listentry *next; }; /* Create a sorted list from the directory listing of path */ struct listentry *create_list(char *path) { struct listentry *list = NULL; struct listentry *newentry; DIR *dd; struct dirent *direntry; char tempstr[MAX_FILENAME_LENGTH]; struct stat filestat; if ((dd = opendir(path)) == NULL) return NULL; while ((direntry = readdir(dd)) != NULL) { // skip "." name if (strcmp(direntry->d_name, ".") == 0) continue; /* Allocate enough memory to store a new list entry and its filemane */ newentry = (struct listentry *) malloc(sizeof(struct listentry) + strlen(direntry->d_name) + 1); /* Store filename */ newentry->filename = (char *) (newentry + 1); strcpy(newentry->filename, direntry->d_name); /* Is this entry a directory ? */ strcpy(tempstr, path); strcat(tempstr, newentry->filename); if (stat(tempstr, &filestat) == 0 && S_ISDIR(filestat.st_mode)) newentry->directory = true; else newentry->directory = false; /* Search for right place to insert new entry */ struct listentry **prev = &list; struct listentry *next = list; while (next != NULL) { /* directory first, then files */ if ((newentry->directory == true) && (next->directory == false)) break; /* Sort by name */ if ((newentry->directory == next->directory) && (strcmp(newentry->filename, next->filename) < 0)) break; prev = &(next->next); next = next->next; } /* Insert new entry */ newentry->next = next; *prev = newentry; } if (closedir(dd) != 0) { D(bug("Error on closedir.")); } return list; } /* Free memory allocated for each member of list */ void free_list(struct listentry *list) { while (list != NULL) { struct listentry *temp = list; list = list->next; free(temp); } } /*-----------------------------------------------------------------------*/ /* Show and process a file selection dialog. Returns TRUE if user selected "OK", FALSE if "cancel". bAllowNew: TRUE if the user is allowed to insert new file names. */ static listentry *gui_file_list = NULL; DlgFileSelect::DlgFileSelect(SGOBJ *dlg, char *new_path_and_name, bool bAllowNew) : Dialog(dlg), path_and_name(new_path_and_name) , reloaddir(true), refreshentries(true), selection(-1), ypos(0), eol(true) , pressed_ok(false), redraw(true) { gui_file_list = NULL; fsdlg[SGFSDLG_FILENAME].type = bAllowNew ? SGEDITFIELD : SGTEXT; /* Prepare the path and filename variables */ File_splitpath(path_and_name, file_path, file_fname, NULL); if (strlen(file_path) == 0) { assert(getcwd(file_path, sizeof(file_path)) != NULL); File_AddSlashToEndFileName(file_path); } File_ShrinkName(dlgpath, file_path, sizeof(dlgpath)-1); File_ShrinkName(dlgfname, file_fname, sizeof(dlgfname)-1); } DlgFileSelect::~DlgFileSelect() { if (gui_file_list) { free_list(gui_file_list); gui_file_list = NULL; } } void DlgFileSelect::confirm(void) { /* if user edited filename, use new one */ char dlgfname2[ENTRY_LENGTH-2]; File_ShrinkName(dlgfname2, file_fname, sizeof(dlgfname2)-1); if (strcmp(dlgfname, dlgfname2) != 0) strcpy(file_fname, dlgfname); File_makepath(path_and_name,file_path, file_fname, NULL); } void DlgFileSelect::idle(void) { if (reloaddir || refreshentries) { refreshEntries(); } /* Force redraw ? */ if (redraw) { init(); redraw = false; } } int DlgFileSelect::processDialog(void) { int retval = Dialog::GUI_CONTINUE; switch (return_obj) { case SGFSDLG_UPDIR: /* Change path to parent directory */ if (strlen(file_path) > 2) { File_CleanFileName(file_path); char *ptr = strrchr(file_path, '/'); if (ptr) *(ptr + 1) = 0; File_AddSlashToEndFileName(file_path); reloaddir = true; /* Copy the path name to the dialog */ File_ShrinkName(dlgpath, file_path, sizeof(dlgpath)-1); /* Remove old selection */ selection = -1; file_fname[0] = 0; dlgfname[0] = 0; ypos = 0; } break; case SGFSDLG_ROOTDIR: /* Change to root directory */ strcpy(file_path, "/"); reloaddir = true; strcpy(dlgpath, file_path); /* Remove old selection */ selection = -1; file_fname[0] = 0; dlgfname[0] = 0; ypos = 0; break; case SGFSDLG_UP: /* Scroll up */ if (ypos > 0) { --ypos; refreshentries = true; } break; case SGFSDLG_DOWN: /* Scroll down */ if (eol == false) { ++ypos; refreshentries = true; } break; case SGFSDLG_OKAY: pressed_ok = true; confirm(); /* fall through */ case SGFSDLG_CANCEL: retval = Dialog::GUI_CLOSE; break; default: break; } /* Has the user clicked on a file or folder? */ if ((return_obj >= SGFSDLG_FIRSTENTRY) && (return_obj <= SGFSDLG_LASTENTRY)) { char tempstr[MAX_FILENAME_LENGTH]; struct stat filestat; struct listentry *temp = gui_file_list; int i; strcpy(tempstr, file_path); for (i = 0; i < ((return_obj - SGFSDLG_FIRSTENTRY) + ypos); i++) temp = temp->next; strcat(tempstr, temp->filename); if (stat(tempstr, &filestat) == 0 && S_ISDIR(filestat.st_mode)) { /* Set the new directory */ strcpy(file_path, tempstr); if (strlen(file_path) >= 3) { if ((file_path[strlen(file_path) - 2] == '/') && (file_path[strlen(file_path) - 1] == '.')) { /* Strip a single dot at the end of the path name */ file_path[strlen(file_path) - 2] = 0; } if ((file_path[strlen(file_path) - 3] == '/') && (file_path[strlen(file_path) - 2] == '.') && (file_path[strlen(file_path) - 1] == '.')) { /* Handle the ".." folder */ char *ptr; if (strlen(file_path) == 3) { file_path[1] = 0; } else { file_path[strlen(file_path) - 3] = 0; ptr = strrchr(file_path, '/'); if (ptr) *(ptr + 1) = 0; } } } File_AddSlashToEndFileName(file_path); reloaddir = true; /* Copy the path name to the dialog */ File_ShrinkName(dlgpath, file_path, sizeof(dlgpath)-1); selection = -1; /* Remove old selection */ // gui_file_fname[0] = 0; dlgfname[0] = 0; ypos = 0; } else { /* Select a file */ selection = return_obj - SGFSDLG_FIRSTENTRY + ypos; strcpy(file_fname, temp->filename); File_ShrinkName(dlgfname, file_fname, sizeof(dlgfname)-1); } } if (reloaddir || refreshentries) { refreshEntries(); } return retval; } void DlgFileSelect::refreshEntries(void) { if (reloaddir) { if (strlen(file_path) >= MAX_FILENAME_LENGTH) { fprintf(stderr, "SDLGui_FileSelect: Path name too long!\n"); return; } free_list(gui_file_list); /* Load directory entries: */ gui_file_list = create_list(file_path); if (gui_file_list == NULL) { fprintf(stderr, "SDLGui_FileSelect: Path not found.\n"); /* reset path and reload entries */ strcpy(file_path, "/"); strcpy(dlgpath, file_path); gui_file_list = create_list(file_path); if (gui_file_list == NULL) /* we're really lost if even root is unreadable */ return; } reloaddir = false; refreshentries = true; redraw = true; } if (refreshentries) { struct listentry *temp = gui_file_list; int i; for (i = 0; i < ypos; i++) temp = temp->next; /* Copy entries to dialog: */ for (i = 0; i < ENTRY_COUNT; i++) { if (temp != NULL) { char tempstr[MAX_FILENAME_LENGTH]; /* Prepare entries: */ strcpy(tempstr, " "); strcat(tempstr, temp->filename); File_ShrinkName(dlgfilenames[i], tempstr, ENTRY_LENGTH); /* Mark folders: */ if (temp->directory) dlgfilenames[i][0] = SGFOLDER; fsdlg[SGFSDLG_FIRSTENTRY + i].flags = (SG_SELECTABLE | SG_EXIT | SG_RADIO); temp = temp->next; } else { /* Clear entry */ dlgfilenames[i][0] = 0; fsdlg[SGFSDLG_FIRSTENTRY + i].flags = 0; } fsdlg[SGFSDLG_FIRSTENTRY + i].state = 0; } eol = (temp == NULL); refreshentries = false; redraw = true; } } bool DlgFileSelect::pressedOk(void) { return pressed_ok; } void DlgFileSelect::processResult(void) { } Dialog *DlgFileSelectOpen(char *path_and_name, bool bAllowNew) { return new DlgFileSelect(fsdlg, path_and_name, bAllowNew); } // don't remove this modeline with intended formatting for vim:ts=4:sw=4: aranym-1.1.0/src/gui-sdl/dlgDisk.h0000664000175000017500000000312013454637621015062 0ustar joyjoy/* dlgDisk.cpp - disk dialog Copyright (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DLGDISK_H #define DLGDISK_H 1 #include "dialog.h" class DlgAlert; class DlgFileSelect; class DlgDisk: public Dialog { private: enum { STATE_MAIN, STATE_FSEL_FD0, STATE_FSEL_IDE0, STATE_FSEL_IDE1, STATE_CDI0, STATE_CDI1 }; char *cdi_path; char tmpname[MAX_FILENAME_LENGTH]; int state, cdi_disk; long sizeMB; DlgAlert *dlgAlert; DlgFileSelect *dlgFileSelect; void confirm(void); int processDialogMain(void); int processDialogCdi0(void); int processDialogCdi1(void); void processResultFd0(void); void processResultIde0(void); void processResultIde1(void); void init_create_disk_image(int disk); bool create_disk_image(void); public: DlgDisk(SGOBJ *dlg); ~DlgDisk(); int processDialog(void); void processResult(void); }; Dialog *DlgDiskOpen(void); #endif /* DLGDISK_H */ aranym-1.1.0/src/gui-sdl/dlgDisk.cpp0000664000175000017500000004056213454637621015430 0ustar joyjoy/* * dlgDisk.cpp - dialog for editing Disk settings * * Copyright (c) 2003-2007 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * gui-sdl original code and ideas borrowed from Hatari emulator * disk_image() borrowed from Bochs project, IIRC * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "sdlgui.h" #include "file.h" #include "ata.h" #include "tools.h" #include "hardware.h" // for getFDC() #include "dlgDisk.h" #include "dlgAlert.h" #include "dlgFileSelect.h" #define DEBUG 0 #include "debug.h" static bx_options_t gui_options; // floppy static char ide0_name[41]; // size of this array defines also the GUI edit field length static char ide1_name[41]; static char ide0_size[7], ide0_cyl[6], ide0_head[3], ide0_spt[4]; static char ide1_size[7], ide1_cyl[6], ide1_head[3], ide1_spt[4]; static const char *eject = "Eject"; static const char *insert = "Insert"; static char floppy_path[80]; static char ide0_path[80]; static char ide1_path[80]; #define MAXHEADS 16 #define MAXSPT 255 #define MAXCYLS 65535 #define BAR130G (MAXHEADS * MAXSPT * MAXCYLS / 2048) #define MaxSPT 63 #define BAR32G (MAXHEADS * MaxSPT * MAXCYLS / 2048) /* The disks dialog: */ #define SDLGUI_INCLUDE_DISCDLG #include "sdlgui.sdl" static const char *HELP_TEXT = "For creating new disk image click on the [Path] and select a file (or type in a new filename).\n" "\n" "Then set the desired [Disk Size:] in MegaBytes.\n" "\n" "At last click on [Generate Disk Image] and the disk image will be created.\n" "\n" "Now you can reboot to your OS and partition this new disk."; static void setState(int index, int bits, bool set) { if (set) discdlg[index].state |= bits; else discdlg[index].state &= ~bits; } static void setSelected(int index, bool set) { setState(index, SG_SELECTED, set); } static bool getSelected(int index) { return (discdlg[index].state & SG_SELECTED); } static void UpdateFloppyStatus(void) { discdlg[FLOPPY_MOUNT].txt = getFDC()->is_floppy_inserted()? eject : insert; } static void HideDiskSettings(int handle, bool state) { int start = (handle == 0) ? IDE0_READONLY : IDE1_READONLY; int end = (handle == 0) ? IDE0_GENERATE : IDE1_GENERATE; // READONLY, BYTESWAP, chs, CYL, HEAD, SEC, size, SIZE, sizemb for (int i = start; i <= end; i++) { setState(i, SG_HIDDEN, state); } // MOUNT button visibility setState((handle == 0) ? IDE0_MOUNT : IDE1_MOUNT, SG_HIDDEN, !state); } static void UpdateCDROMstatus(int handle) { int index = (handle == 0) ? IDE0_MOUNT : IDE1_MOUNT; bool isCDROM = gui_options.atadevice[0][handle].isCDROM; if (isCDROM) { discdlg[index].txt = bx_hard_drive.get_cd_media_status(handle) ? eject : insert; } // MOUNT button visibility setState(index, SG_HIDDEN, !isCDROM); } static void RemountCDROM(int handle) { if (gui_options.atadevice[0][handle].isCDROM) { bool status = bx_hard_drive.get_cd_media_status(handle); // fprintf(stderr, "handle=%d, status=%s\n", handle, status ? "in" : "out"); bx_hard_drive.set_cd_media_status(handle, !status); UpdateCDROMstatus(handle); } } static off_t DiskImageSize(const char *fname) { struct stat buf; if (stat(fname, &buf) != 0) { // error reading file return 0; } if (!S_ISREG(buf.st_mode)) { // not regular file (perhaps block device?) return 0; } return buf.st_size; } static void UpdateDiskParameters(int disk, bool updateCHS) { const char *fname = gui_options.atadevice[0][disk].path; int cyl = gui_options.atadevice[0][disk].cylinders; int head = gui_options.atadevice[0][disk].heads; int spt = gui_options.atadevice[0][disk].spt; off_t size = DiskImageSize(fname); int sizeMB = ((size / 1024) + 512) / 1024; if (updateCHS) { if (size > 0 && sizeMB <= BAR130G) { head = MAXHEADS; spt = (sizeMB <= BAR32G) ? MaxSPT : MAXSPT; int divisor = 512 * head * spt; // 512 is sector size cyl = size / divisor; if (size % divisor) cyl++; } else { head = spt = cyl = 0; } gui_options.atadevice[0][disk].cylinders = cyl; gui_options.atadevice[0][disk].heads = head; gui_options.atadevice[0][disk].spt = spt; } // output sprintf(disk == 0 ? ide0_size : ide1_size, "%6d", sizeMB); sprintf(disk == 0 ? ide0_cyl : ide1_cyl, "%5d", cyl); sprintf(disk == 0 ? ide0_head : ide1_head, "%2d", head); sprintf(disk == 0 ? ide0_spt : ide1_spt, "%3d", spt); } /* produce the image file */ bool make_image(long sec, const char *filename) { FILE *fp; fp = fopen(filename, "wb"); if (fp == NULL) { // attempt to print an error panicbug("make_image: error while opening '%s' for writing", filename); return false; } /* * seek to sec*512-1 and write a single character. * can't just do: fseek(fp, 512*sec-1, SEEK_SET) * because 512*sec may be too large for signed int. */ while (sec > 0) { /* temp <-- min(sec, 4194303) * 4194303 is (int)(0x7FFFFFFF/512) */ long temp = ((sec < 4194303) ? sec : 4194303); fseek(fp, 512 * temp, SEEK_CUR); sec -= temp; } fseek(fp, -1, SEEK_CUR); if (fputc('\0', fp) == EOF) { fclose(fp); panicbug("ERROR: The just created disk image is not complete!"); return false; } fclose(fp); return true; } void DlgDisk::init_create_disk_image(int disk) { cdi_path = gui_options.atadevice[0][disk].path; cdi_disk = disk; sizeMB = atoi(disk == 0 ? ide0_size : ide1_size); if (sizeMB > BAR130G) { panicbug("Warning: max IDE disk size is 130 GB"); sizeMB = BAR130G; } char text[250]; sprintf(text, "Create disk image '%s' with size %ld MB?", cdi_path, sizeMB); dlgAlert = (DlgAlert *) DlgAlertOpen(text, ALERT_OKCANCEL); SDLGui_Open(dlgAlert); state = STATE_CDI0; } bool DlgDisk::create_disk_image(void) { int maxspt = (sizeMB <= BAR32G) ? MaxSPT : MAXSPT; // create the file int cyl = sizeMB * 2048 / MAXHEADS / maxspt; if (cyl > MAXCYLS) cyl = MAXCYLS; long sectors = cyl * MAXHEADS * maxspt; bool ret = make_image(sectors, cdi_path); UpdateDiskParameters(cdi_disk, true); return ret; } /*-----------------------------------------------------------------------*/ /* Show and process the disc image dialog. */ DlgDisk::DlgDisk(SGOBJ *dlg) : Dialog(dlg), cdi_path(NULL), state(STATE_MAIN), cdi_disk(-1), sizeMB(0) { memset(tmpname, 0, sizeof(tmpname)); // preload bx settings gui_options = bx_options; /* Set up dialog to actual values: */ // floppy File_ShrinkName(floppy_path, gui_options.floppy.path, discdlg[FLP_PATH].w); setState(FLP_PATH, SG_DISABLED, ! File_Exists(gui_options.floppy.path)); discdlg[FLP_PATH].txt = floppy_path; // IDE0 File_ShrinkName(ide0_path, gui_options.atadevice[0][0].path, discdlg[IDE0_PATH].w); setState(IDE0_PATH, SG_DISABLED, ! File_Exists(gui_options.atadevice[0][0].path)); discdlg[IDE0_PATH].txt = ide0_path; safe_strncpy(ide0_name, gui_options.atadevice[0][0].model, sizeof(ide0_name)); UpdateDiskParameters(0, false); setSelected(IDE0_PRESENT, gui_options.atadevice[0][0].present); setSelected(IDE0_CDROM, gui_options.atadevice[0][0].isCDROM); setSelected(IDE0_READONLY, gui_options.atadevice[0][0].readonly); setSelected(IDE0_BYTESWAP, gui_options.atadevice[0][0].byteswap); HideDiskSettings(0, gui_options.atadevice[0][0].isCDROM); // IDE1 File_ShrinkName(ide1_path, gui_options.atadevice[0][1].path, discdlg[IDE1_PATH].w); setState(IDE1_PATH, SG_DISABLED, ! File_Exists(gui_options.atadevice[0][1].path)); discdlg[IDE1_PATH].txt = ide1_path; safe_strncpy(ide1_name, gui_options.atadevice[0][1].model, sizeof(ide1_name)); UpdateDiskParameters(1, false); setSelected(IDE1_PRESENT, gui_options.atadevice[0][1].present); setSelected(IDE1_READONLY, gui_options.atadevice[0][1].readonly); setSelected(IDE1_CDROM, gui_options.atadevice[0][1].isCDROM); setSelected(IDE1_BYTESWAP, gui_options.atadevice[0][1].byteswap); HideDiskSettings(1, gui_options.atadevice[0][1].isCDROM); UpdateFloppyStatus(); UpdateCDROMstatus(0); UpdateCDROMstatus(1); // note that File_Exists() checks were disabled since they didn't work // on /dev/fd0 or /dev/cdrom if no media were inserted } DlgDisk::~DlgDisk() { } int DlgDisk::processDialog(void) { int retval = Dialog::GUI_CONTINUE; switch(state) { case STATE_MAIN: retval = processDialogMain(); break; case STATE_CDI0: retval = processDialogCdi0(); break; case STATE_CDI1: retval = processDialogCdi1(); break; } return retval; } int DlgDisk::processDialogMain(void) { int retval = Dialog::GUI_CONTINUE; switch (return_obj) { case FLP_BROWSE: /* Choose a new disc A: */ strcpy(tmpname, gui_options.floppy.path); SDLGui_Open(dlgFileSelect = (DlgFileSelect*)DlgFileSelectOpen(tmpname, false)); state = STATE_FSEL_FD0; break; case FLP_CLEAR: /* Choose a new disc A: */ gui_options.floppy.path[0] = '\0'; floppy_path[0] = '\0'; setState(FLP_PATH, SG_DISABLED, true); state = STATE_MAIN; getFDC()->remove_floppy(); UpdateFloppyStatus(); break; case IDE0_BROWSE: strcpy(tmpname, gui_options.atadevice[0][0].path); SDLGui_Open(dlgFileSelect = (DlgFileSelect*)DlgFileSelectOpen(tmpname, true)); state = STATE_FSEL_IDE0; break; case IDE0_CLEAR: gui_options.atadevice[0][0].path[0] = '\0'; ide0_path[0] = '\0'; strcpy(ide0_cyl, "0"); strcpy(ide0_head, "0"); strcpy(ide0_spt, "0"); strcpy(ide0_size, "0"); setSelected(IDE0_PRESENT, false); setSelected(IDE0_CDROM, false); setSelected(IDE0_READONLY, false); setSelected(IDE0_BYTESWAP, false); state = STATE_MAIN; break; case IDE1_BROWSE: strcpy(tmpname, gui_options.atadevice[0][1].path); SDLGui_Open(dlgFileSelect = (DlgFileSelect*)DlgFileSelectOpen(tmpname, true)); state = STATE_FSEL_IDE1; break; case IDE1_CLEAR: gui_options.atadevice[0][1].path[0] = '\0'; ide1_path[0] = '\0'; strcpy(ide1_cyl, "0"); strcpy(ide1_head, "0"); strcpy(ide1_spt, "0"); strcpy(ide1_size, "0"); setSelected(IDE1_PRESENT, false); setSelected(IDE1_CDROM, false); setSelected(IDE1_READONLY, false); setSelected(IDE1_BYTESWAP, false); state = STATE_MAIN; break; case IDE0_GENERATE: init_create_disk_image(0); break; case IDE1_GENERATE: init_create_disk_image(1); break; case IDE0_CDROM: HideDiskSettings(0, getSelected(IDE0_CDROM)); break; case IDE1_CDROM: HideDiskSettings(1, getSelected(IDE1_CDROM)); break; case FLOPPY_MOUNT: if (getFDC()->is_floppy_inserted()) { getFDC()->remove_floppy(); } else { if (!getFDC()->insert_floppy()) { SDLGui_Open(DlgAlertOpen("Error: Inserting floppy failed", ALERT_OK)); } } UpdateFloppyStatus(); return_obj = -1; break; case IDE0_MOUNT: RemountCDROM(0); break; case IDE1_MOUNT: RemountCDROM(1); break; case HELP: SDLGui_Open(DlgAlertOpen(HELP_TEXT, ALERT_OK)); break; case APPLY: confirm(); /* fall through */ case CANCEL: retval = Dialog::GUI_CLOSE; break; } return retval; } int DlgDisk::processDialogCdi0(void) { D(bug("disk: dialog create disk image, step 1")); int retval = Dialog::GUI_CONTINUE; state = STATE_MAIN; if (dlgAlert && dlgAlert->pressedOk()) { if (File_Exists(cdi_path)) { dlgAlert = (DlgAlert *) DlgAlertOpen("File Exists. Overwrite?", ALERT_OKCANCEL); SDLGui_Open(dlgAlert); state = STATE_CDI1; } else { dlgAlert = NULL; retval = processDialogCdi1(); } } return retval; } int DlgDisk::processDialogCdi1(void) { D(bug("disk: dialog create disk image, step 2")); int retval = Dialog::GUI_CONTINUE; state = STATE_MAIN; if (!dlgAlert || dlgAlert->pressedOk()) { char *ide_path = (cdi_disk==0) ? ide0_path : ide1_path; int ide_select = (cdi_disk==0) ? IDE0_PRESENT : IDE1_PRESENT; int ide_numpath = (cdi_disk==0) ? IDE0_PATH : IDE1_PATH; if (create_disk_image()) { File_ShrinkName(ide_path, gui_options.atadevice[0][cdi_disk].path, discdlg[ide_numpath].w); setState(ide_numpath, SG_DISABLED, ! File_Exists(gui_options.atadevice[0][cdi_disk].path)); setSelected(ide_select, true); } else { ide_path[0] = 0; } } return retval; } void DlgDisk::processResultFd0(void) { D(bug("disk: result fd0")); if (dlgFileSelect && dlgFileSelect->pressedOk()) { if (!File_DoesFileNameEndWithSlash(tmpname) /*&& File_Exists(tmpname) */ ) { strcpy(gui_options.floppy.path, tmpname); File_ShrinkName(floppy_path, tmpname, discdlg[FLP_PATH].w); setState(FLP_PATH, SG_DISABLED, ! File_Exists(gui_options.floppy.path)); } else { floppy_path[0] = 0; } } } void DlgDisk::processResultIde0(void) { D(bug("disk: result ide0")); if (dlgFileSelect && dlgFileSelect->pressedOk()) { if (!File_DoesFileNameEndWithSlash(tmpname) /*&& File_Exists(tmpname) */ ) { strcpy(gui_options.atadevice[0][0].path, tmpname); File_ShrinkName(ide0_path, tmpname, discdlg[IDE0_PATH].w); bool exists = DiskImageSize(gui_options.atadevice[0][0].path) > 0; setState(IDE0_PATH, SG_DISABLED, !exists); if (exists) { UpdateDiskParameters(0, true); setSelected(IDE0_PRESENT, true); } else { setSelected(IDE0_PRESENT, false); } } else { ide0_path[0] = 0; } } } void DlgDisk::processResultIde1(void) { D(bug("disk: result ide1")); if (dlgFileSelect && dlgFileSelect->pressedOk()) { if (!File_DoesFileNameEndWithSlash(tmpname) /*&& File_Exists(tmpname) */ ) { strcpy(gui_options.atadevice[0][1].path, tmpname); File_ShrinkName(ide1_path, tmpname, discdlg[IDE1_PATH].w); bool exists = DiskImageSize(gui_options.atadevice[0][1].path) > 0; setState(IDE1_PATH, SG_DISABLED, !exists); if (exists) { UpdateDiskParameters(1, true); setSelected(IDE1_PRESENT, true); } else { setSelected(IDE1_PRESENT, false); } } else { ide1_path[0] = 0; } } } void DlgDisk::confirm(void) { /* Read values from dialog */ int cyl, head, spt; safe_strncpy(gui_options.atadevice[0][0].model, ide0_name, sizeof(gui_options.atadevice[0][0].model)); sscanf(ide0_cyl, "%d", &cyl); sscanf(ide0_head, "%d", &head); sscanf(ide0_spt, "%d", &spt); if (cyl > MAXCYLS) cyl = MAXCYLS; if (head > MAXHEADS) head = MAXHEADS; if (spt > MAXSPT) spt = MAXSPT; gui_options.atadevice[0][0].cylinders = cyl; gui_options.atadevice[0][0].heads = head; gui_options.atadevice[0][0].spt = spt; gui_options.atadevice[0][0].present = getSelected(IDE0_PRESENT); gui_options.atadevice[0][0].readonly = getSelected(IDE0_READONLY); gui_options.atadevice[0][0].isCDROM = getSelected(IDE0_CDROM); gui_options.atadevice[0][0].byteswap = getSelected(IDE0_BYTESWAP); safe_strncpy(gui_options.atadevice[0][1].model, ide1_name, sizeof(gui_options.atadevice[0][1].model)); sscanf(ide1_cyl, "%d", &cyl); sscanf(ide1_head, "%d", &head); sscanf(ide1_spt, "%d", &spt); if (cyl > MAXCYLS) cyl = MAXCYLS; if (head > MAXHEADS) head = MAXHEADS; if (spt > MAXSPT) spt = MAXSPT; gui_options.atadevice[0][1].cylinders = cyl; gui_options.atadevice[0][1].heads = head; gui_options.atadevice[0][1].spt = spt; gui_options.atadevice[0][1].present = getSelected(IDE1_PRESENT); gui_options.atadevice[0][1].readonly = getSelected(IDE1_READONLY); gui_options.atadevice[0][1].isCDROM = getSelected(IDE1_CDROM); gui_options.atadevice[0][1].byteswap = getSelected(IDE1_BYTESWAP); bx_options = gui_options; } void DlgDisk::processResult(void) { D(bug("disk: process result, state=%d", state)); switch(state) { case STATE_FSEL_FD0: processResultFd0(); dlgFileSelect = NULL; state = STATE_MAIN; break; case STATE_FSEL_IDE0: processResultIde0(); dlgFileSelect = NULL; state = STATE_MAIN; break; case STATE_FSEL_IDE1: processResultIde1(); dlgFileSelect = NULL; state = STATE_MAIN; break; case STATE_CDI0: case STATE_CDI1: /* Will process it on next processDialog */ break; default: dlgFileSelect = NULL; dlgAlert = NULL; state = STATE_MAIN; break; } } Dialog *DlgDiskOpen(void) { return new DlgDisk(discdlg); } aranym-1.1.0/src/gui-sdl/dlgAlert.h0000664000175000017500000000232613454637621015246 0ustar joyjoy/* dlgAlert.cpp - alert dialog Copyright (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DLGALERT_H #define DLGALERT_H 1 #include "dialog.h" class DlgAlert: public Dialog { public: enum { SDLGUI_ALERT_TEXT, SDLGUI_ALERT_TYPE }; private: const char *text; alert_type type; char *orig_t; int ok_but_idx; void processResult(void); public: DlgAlert(SGOBJ *dlg, const char *text, alert_type type); ~DlgAlert(); bool pressedOk(void); }; Dialog *DlgAlertOpen(const char *text, alert_type type); #endif /* DLGALERT_H */ aranym-1.1.0/src/gui-sdl/dlgAlert.cpp0000664000175000017500000001156313454637621015604 0ustar joyjoy/* * dlgAlert.cpp - AES-like AlertBox * * Copyright (c) 2004-2007 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include #include #include "sdlgui.h" #include "dlgAlert.h" #define DLG_WIDTH 76 #define MAX_LINES 20 /* The "Alert"-dialog: */ SGOBJ alertdlg[1/*BACKGROUND*/ + MAX_LINES/*text*/ + 1/*OK*/ + 1/*Cancel*/ + 1/*NULL*/] = { { SGBOX, SG_BACKGROUND, 0, 0,0, DLG_WIDTH,25, NULL, 0 }, { -1, 0, 0, 0,0, 0,0, NULL, 0 } }; SGOBJ obj_text = { SGTEXT, 0, 0, 1,1, DLG_WIDTH-2,1, NULL, 0 }; SGOBJ obj_but_ok = { SGBUTTON, SG_SELECTABLE|SG_EXIT|SG_DEFAULT, 0, (DLG_WIDTH-8-8)/3,5, 8,1, "OK", 0 }; SGOBJ obj_but_cancel = { SGBUTTON, SG_SELECTABLE|SG_EXIT, 0, (DLG_WIDTH-8-8)*2/3+8,5, 8,1, "Cancel", 0 }; SGOBJ obj_null = { -1, 0, 0, 0,0, 0,0, NULL, 0 }; /* Breaks long string to several strings of max_width, divided by '\0' and returns the number of lines you need to display the strings. */ int FormatTextToBox(char *text, int max_width) { int lines=1; int delka = strlen(text); char *p; /* pointer to begin of actual line */ char *q; /* pointer to start of next search */ char *rozdel = text-1; /* pointer to last place suitable for breaking the line */ char *konec; /* pointer to end of the text */ q = p = text; konec = text + delka; while(q < konec) { /* q was last place suitable for breaking */ char *r = strpbrk(q, " \t/\\\n"); /* find next suitable place for the break */ if (r == NULL) r = konec; /* if there's no place then point to the end */ if ((r-p) < max_width && *r != '\n') { /* '\n' is always used for breaking */ rozdel = r; /* remember new place suitable for breaking */ q++; continue; /* search again */ } if ((r-p) > max_width) { /* too long line already? */ if (p > rozdel) /* bad luck - no place for the delimiter. Let's do it the strong way */ rozdel = p + max_width; /* we loose one character */ } else rozdel = r; /* break in this place */ *rozdel = '\0'; /* BREAK */ p = q = rozdel+1; /* next line begins here */ lines++; /* increment line counter */ } return lines; /* return line counter */ } /*-----------------------------------------------------------------------*/ /* Show the "alert" dialog: */ DlgAlert::DlgAlert(SGOBJ *dlg, const char *_text, alert_type _type) : Dialog(dlg), text(_text), type(_type), orig_t(NULL), ok_but_idx(-1) { char *t = (char *)malloc(strlen(text)+1); orig_t = t; strcpy(t, text); int max_linelen = 0; // break long text into '\0' terminated array of strings int lines = FormatTextToBox(t, obj_text.w); if (lines > MAX_LINES) lines = MAX_LINES; // build the dialog, find the longest line int idx = 1; for(int i=0; i max_linelen) max_linelen = str_len; t += str_len + 1; } // compute smallest possible dialog width int dlg_width = obj_but_ok.w + 2; if (type == ALERT_OKCANCEL) { dlg_width += obj_but_cancel.w + 2; } if (max_linelen+2 > dlg_width) dlg_width = max_linelen+2; // update dialog width alertdlg[0].w = dlg_width; for(int i=0; i=0) { return GUI_CLOSE; } return GUI_CONTINUE; } void Dialog::mouseClick(const SDL_Event &event, int gui_x, int gui_y) { int clicked_obj; int original_state = 0; int x = event.button.x - gui_x; int y = event.button.y - gui_y; if (event.type == SDL_MOUSEBUTTONUP && touch_exit_obj != -1) { SDLGui_DeselectAndRedraw(dlg, touch_exit_obj); } touch_exit_obj = -1; clicked_obj = SDLGui_FindObj(dlg, x, y); if (clicked_obj<0) { return; } /* Read current state, to restore it if needed */ original_state = dlg[clicked_obj].state; /* Memorize object on mouse button pressed event */ if (event.type == SDL_MOUSEBUTTONDOWN) { /* ignore mouse wheel events reported as button presses here */ if (!(event.button.button >= 1 && event.button.button <= 3)) return; SDLGui_UpdateObjState(dlg, clicked_obj, original_state, x, y); last_clicked_obj = clicked_obj; last_state = original_state; /* Except for TOUCHEXIT objects which must be activated on mouse button pressed */ if (dlg[clicked_obj].flags & SG_TOUCHEXIT) { /*SDLGui_UpdateObjState(dlg, clicked_obj, original_state, x, y);*/ return_obj = clicked_obj; last_clicked_obj = -1; touch_exit_obj = clicked_obj; } return; } /* Compare with object when releasing mouse button */ if (clicked_obj == last_clicked_obj) { // Exit if object is an SG_EXIT one. if (dlg[clicked_obj].flags & SG_EXIT) { /* Hum, HACK for checkbox CDROM in diskdlg */ if (dlg[clicked_obj].type != SGCHECKBOX) { /* Restore original state before exiting dialog */ SDLGui_UpdateObjState(dlg, clicked_obj, original_state, x, y); } return_obj = clicked_obj; } // If it's a SG_RADIO object, deselect other objects in his group. if (dlg[clicked_obj].flags & SG_RADIO) SDLGui_SelectRadioObject(dlg, clicked_obj); if (dlg[clicked_obj].type == SGEDITFIELD) SDLGui_ClickEditField(dlg, &cursor, clicked_obj, x); } else if (last_clicked_obj>=0) { /* We released mouse on a different object, restore state of mouse-press object */ SDLGui_UpdateObjState(dlg, last_clicked_obj, last_state, x, y); } } void Dialog::keyPress(const SDL_Event &event) { if (event.type != SDL_KEYDOWN) { return; } int obj; SDL_Keycode keysym = event.key.keysym.sym; int state; if ((event.key.keysym.mod & HOTKEYS_MOD_MASK) == 0) state = SDL_GetModState(); // keysym.mod does not deliver single mod key presses for some reason else state = event.key.keysym.mod; // May be send by SDL_PushEvent if (cursor.object != -1) { switch(keysym) { case SDLK_RETURN: case SDLK_KP_ENTER: break; case SDLK_BACKSPACE: if (cursor.position > 0) { char *txt = (char *)dlg[cursor.object].txt; int prev = SDLGui_ByteLen(txt, cursor.position-1); int curr = SDLGui_ByteLen(txt, cursor.position); memmove(&txt[prev], &txt[curr], strlen(&txt[curr]) + 1); cursor.position--; } break; case SDLK_DELETE: if(cursor.position < SDLGui_TextLen(dlg[cursor.object].txt)) { char *txt = (char *)dlg[cursor.object].txt; int curr = SDLGui_ByteLen(txt, cursor.position); int next = SDLGui_ByteLen(txt, cursor.position + 1); memmove(&txt[curr], &txt[next], strlen(&txt[next]) + 1); } break; case SDLK_LEFT: if (cursor.position > 0) cursor.position--; break; case SDLK_RIGHT: if (cursor.position < SDLGui_TextLen(dlg[cursor.object].txt)) cursor.position++; break; case SDLK_DOWN: SDLGui_MoveCursor(dlg, &cursor, SG_NEXT_EDITFIELD); break; case SDLK_UP: SDLGui_MoveCursor(dlg, &cursor, SG_PREVIOUS_EDITFIELD); break; case SDLK_TAB: SDLGui_MoveCursor(dlg, &cursor, (state & KMOD_SHIFT) ? SG_PREVIOUS_EDITFIELD : SG_NEXT_EDITFIELD); break; case SDLK_HOME: if (state & KMOD_CTRL) SDLGui_MoveCursor(dlg, &cursor, SG_FIRST_EDITFIELD); else cursor.position = 0; break; case SDLK_END: if (state & KMOD_CTRL) SDLGui_MoveCursor(dlg, &cursor, SG_LAST_EDITFIELD); else cursor.position = SDLGui_TextLen(dlg[cursor.object].txt); break; default: // map numpad numbers to normal numbers switch(keysym) { case SDLK_KP_0: keysym = SDLK_0; break; case SDLK_KP_1: keysym = SDLK_1; break; case SDLK_KP_2: keysym = SDLK_2; break; case SDLK_KP_3: keysym = SDLK_3; break; case SDLK_KP_4: keysym = SDLK_4; break; case SDLK_KP_5: keysym = SDLK_5; break; case SDLK_KP_6: keysym = SDLK_6; break; case SDLK_KP_7: keysym = SDLK_7; break; case SDLK_KP_8: keysym = SDLK_8; break; case SDLK_KP_9: keysym = SDLK_9; break; default: break; } /* If it is a "good" key then insert it into the text field */ /* FIXME: can't handle non-ascii characters here */ if (((unsigned int)keysym >= 0x20) && ((unsigned int)keysym < 0x80)) { char *dlgtxt = (char *)dlg[cursor.object].txt; if (SDLGui_TextLen(dlgtxt) < (int)dlg[cursor.object].w) { int curr = SDLGui_ByteLen(dlgtxt, cursor.position); memmove(&dlgtxt[curr + 1], &dlgtxt[curr], strlen(&dlgtxt[curr])+1); dlgtxt[curr] = (state & KMOD_SHIFT) ? toupper(keysym) : keysym; cursor.position++; } } break; } } switch(keysym) { case SDLK_RETURN: case SDLK_KP_ENTER: obj = SDLGui_FindDefaultObj(dlg); if (obj >= 0) { dlg[obj].state ^= SG_SELECTED; SDLGui_DrawObject(dlg, obj); SDLGui_RefreshObj(dlg, obj); if (dlg[obj].flags & (SG_EXIT | SG_TOUCHEXIT)) { return_obj = obj; } } break; default: { int masked_mod = state & HOTKEYS_MOD_MASK; HOTKEY hotkey = check_hotkey(masked_mod, keysym); handleHotkey(hotkey); } break; } // Force cursor display. Should ease text input. cursor.blink_state = true; cursor.blink_counter = SDL_GetTicks(); } void Dialog::idle(void) { } void Dialog::processResult(void) { } bool Dialog::isTouchExitPressed(void) { return touch_exit_obj != -1; } aranym-1.1.0/src/gui-sdl/aranym10.txt0000664000175000017500000125237113454637621015540 0ustar joyjoyGDOSFONT version 1.0 font_id 1 point 10 name "8x16 system font" first_ade 0 last_ade 0x27ff top 13 ascent 11 half 8 descent 2 bottom 2 max_char_width 7 max_cell_width 8 left_offset 1 right_offset 7 thicken 1 ul_size 1 lighten 0x5555 skew 0x5555 flags 0x0c form_height 16 # NULL char 0x00 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # UPWARDS WHITE ARROW char 0x01 ........ ........ ........ ...XX... ..XXXX.. .XX..XX. XX....XX X......X XXX..XXX ..X..X.. ..X..X.. ..X..X.. ..XXXX.. ........ ........ ........ endchar # DOWNWARDS WHITE ARROW char 0x02 ........ ........ ........ ..XXXX.. ..X..X.. ..X..X.. ..X..X.. XXX..XXX X......X XX....XX .XX..XX. ..XXXX.. ...XX... ........ ........ ........ endchar # RIGHTWARDS WHITE ARROW char 0x03 ........ ........ ..XX.... ..XXX... ..X.XX.. XXX..XX. X.....XX X.....XX XXX..XX. ..X.XX.. ..XXX... ..XX.... ........ ........ ........ ........ endchar # LEFTWARDS WHITE ARROW char 0x04 ........ ........ ....XX.. ...XXX.. ..XX.X.. .XX..XXX XX.....X XX.....X .XX..XXX ..XX.X.. ...XXX.. ....XX.. ........ ........ ........ ........ endchar # BALLOT BOX (used for folder) char 0x05 ........ ........ .XXXXX.. ..XXX... X.XXX.X. X..X..X. XX.X.XX. XX...XX. XX.X.XX. X..X..X. X.XXX.X. ..XXX... .XXXXX.. ........ ........ ........ endchar # BALLOT BOX WITH CHECK char 0x06 ........ ........ XXXXXXX. XXXXXXX. XXXXXXX. XXXXXX.. XXXXXX.. XXXXX... XXXXX.X. XXXX..X. XXXX.XX. XXX..XX. XXX.XXX. ........ ........ ........ endchar # BALLOT BOX WITH X char 0x07 ........ ........ XXX.XXX. XX...XX. XX.X.XX. X..X..X. X.XXX.X. ..XXX... X.XXX.X. X..X..X. XX.X.XX. XX...XX. XXX.XXX. ........ ........ ........ endchar # CHECK MARK char 0x08 ........ ........ .......X .......X ......XX ......XX .....XX. .....XX. X...XX.. X...XX.. XX.XX... .X.XX... .XXX.... ..XX.... ..X..... ........ endchar # WATCH char 0x09 ........ ........ ........ ..XXXX.. .XX..XX. XX....XX X..X...X X..X...X X..XXX.X X......X XX....XX .XX..XX. ..XXXX.. ........ ........ ........ endchar # BELL SYMBOL char 0x0a ........ ........ ........ ........ ...XX... ..XXXX.. ..XXXX.. ..XXXX.. ..XXXX.. ..XXXX.. .XXXXXX. XXXXXXXX ...X.... ..XXX... ...X.... ........ endchar # EIGHTH NOTE char 0x0b ........ ........ ....X... ....XXX. ....XXXX ....X..X ....X... ....X... .XXXX... XXXXX... .XXX.... ........ ........ ........ ........ ........ endchar # SYMBOL FOR FORM FEED char 0x0c ........ ........ .XXXX... .X...... .XXX.... .X...... .X...... ........ ...XXXX. ...X.... ...XXX.. ...X.... ...X.... ........ ........ ........ endchar # SYMBOL FOR CARRIAGE RETURN char 0x0d ........ ........ ..XXX... .X...... .X...... .X...... ..XXX... ........ ...XXX.. ...X..X. ...XXX.. ...X.X.. ...X..X. ........ ........ ........ endchar # MOUNTAIN (left half of Atari symbol) char 0x0e ........ .....X.X .....X.X .....X.X .....X.X ....XX.X ....XX.X ...XXX.X ..XXX..X .XXXX..X .XXX...X .XXX...X .XX....X .X.....X ........ ........ endchar # UMBRELLA ON GROUND (right half of Atari symbol) char 0x0f ........ X.X..... X.X..... X.X..... X.X..... X.XX.... X.XX.... X.XXX... X..XXX.. X..XXXX. X...XXX. X...XXX. X....XX. X.....X. ........ ........ endchar # CIRCLED DIGIT ZERO char 0x10 ........ .XXXXX.. X.XXX.X. XX...XX. XX...XX. XX...XX. X.....X. ........ X.....X. XX...XX. XX...XX. XX...XX. X.XXX.X. .XXXXX.. ........ ........ endchar # CIRCLED DIGIT ONE char 0x11 ........ ........ ......X. .....XX. .....XX. .....XX. ......X. ........ ......X. .....XX. .....XX. .....XX. ......X. ........ ........ ........ endchar # CIRCLED DIGIT TWO char 0x12 ........ .XXXXX.. ..XXX.X. .....XX. .....XX. .....XX. ..XXX.X. .XXXXX.. X.XXX... XX...... XX...... XX...... X.XXX... .XXXXX.. ........ ........ endchar # CIRCLED DIGIT THREE char 0x13 ........ .XXXXX.. ..XXX.X. .....XX. .....XX. .....XX. ..XXX.X. .XXXXX.. ..XXX.X. .....XX. .....XX. .....XX. ..XXX.X. .XXXXX.. ........ ........ endchar # CIRCLED DIGIT FOUR char 0x14 ........ ........ X.....X. XX...XX. XX...XX. XX...XX. X.XXX.X. .XXXXX.. ..XXX.X. .....XX. .....XX. .....XX. ......X. ........ ........ ........ endchar # CIRCLED DIGIT FIVE char 0x15 ........ .XXXXX.. X.XXX... XX...... XX...... XX...... X.XXX... .XXXXX.. ..XXX.X. .....XX. .....XX. .....XX. ..XXX.X. .XXXXX.. ........ ........ endchar # CIRCLED DIGIT SIX char 0x16 ........ .XXXXX.. X.XXX... XX...... XX...... XX...... X.XXX... .XXXXX.. X.XXX.X. XX...XX. XX...XX. XX...XX. X.XXX.X. .XXXXX.. ........ ........ endchar # CIRCLED DIGIT SEVEN char 0x17 ........ .XXXXX.. X.XXX.X. XX...XX. XX...XX. XX...XX. X.....X. ........ ......X. .....XX. .....XX. .....XX. ......X. ........ ........ ........ endchar # CIRCLED DIGIT EIGHT char 0x18 ........ .XXXXX.. X.XXX.X. XX...XX. XX...XX. XX...XX. X.XXX.X. .XXXXX.. X.XXX.X. XX...XX. XX...XX. XX...XX. X.XXX.X. .XXXXX.. ........ ........ endchar # CIRCLED DIGIT NINE char 0x19 ........ .XXXXX.. X.XXX.X. XX...XX. XX...XX. XX...XX. X.XXX.X. .XXXXX.. ..XXX.X. .....XX. .....XX. .....XX. ..XXX.X. .XXXXX.. ........ ........ endchar # LATIN CAPITAL LETTER SCHWA char 0x1a ........ ........ ........ ........ ........ .XXXXX.. .XXXXXX. .....XX. .....XX. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # SYMBOL FOR ESCAPE char 0x1b ........ ........ .XXXX... .X...... .XXX.... .X...... .XXXX... ........ ....XXX. ...X.... ....XX.. ......X. ...XXX.. ........ ........ ........ endchar # FOUNTAIN (upper left of face) char 0x1c ........ ........ ........ ........ ........ ........ ........ ........ .....XXX ....XXXX ...XXXXX ...XX... ...XX... ...X.... ...XXXX. ...X.XXX endchar # FLAG IN HOLE (upper right of face) char 0x1d ........ ........ ........ ........ ........ ........ ........ ........ XXXX.... XXXXX... XXX.XX.. .....X.. .....X.. .....X.. ..XXXX.. .X.X.X.. endchar # FERRY (lower left of face) char 0x1e ...X...X ....X.XX ....XX.X .....XX. .....XXX ..X.XXX. ..XXX..X ..XXX... ........ ........ ........ ........ ........ ........ ........ ........ endchar # SAILBOAT (lower right of face) char 0x1f .....X.. ..X.X... XX.XX... ..X.X... XX.X.... ...X.... XXX..... ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # SPACE char 0x20 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # EXCLAMATION MARK char 0x21 ........ ........ ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ ...XX... ...XX... ........ ........ endchar # QUOTATION MARK char '"' ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ ........ ........ ........ ........ ........ ........ endchar # NUMBER SIGN char '#' ........ ........ .XX..XX. .XX..XX. XXXXXXXX XXXXXXXX .XX..XX. .XX..XX. XXXXXXXX XXXXXXXX .XX..XX. .XX..XX. ........ ........ ........ ........ endchar # DOLLAR SIGN char '$' ...XX... ...XX... ..XXXXX. .XXXXXX. .XX..... .XX..... .XXXXX.. ..XXXXX. .....XX. .....XX. .XXXXXX. .XXXXX.. ...XX... ...XX... ........ ........ endchar # PERCENT SIGN char '%' ........ ........ .XX..XX. .XX..XX. .XX.XX.. ....XX.. ...XX... ...XX... ..XX.... ..XX.XX. .XX..XX. .XX..XX. ........ ........ ........ ........ endchar # AMPERSAND char '&' ..XXX... .XXXXX.. .XX.XX.. .XX.XX.. ..XXX... ..XXX... .XXX.... .XXX.... XX.XXXX. XX.XXXX. XX..XX.. XX..XX.. XXXXXXX. .XXX.XX. ........ ........ endchar # APOSTROPHE char '\'' ........ ........ ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ ........ ........ ........ ........ ........ ........ endchar # LEFT PARENTHESIS char '(' ........ ........ .....XX. ....XX.. ...XXX.. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XXX.. ....XX.. .....XX. ........ ........ endchar # RIGHT PARENTHESIS char ')' ........ ........ .XX..... ..XX.... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXX... ..XX.... .XX..... ........ ........ endchar # ASTERISK char '*' ........ ........ .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. XXXXXXXX XXXXXXXX ..XXXX.. ..XXXX.. .XX..XX. .XX..XX. ........ ........ ........ ........ endchar # PLUS SIGN char '+' ........ ........ ........ ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ........ ........ ........ ........ ........ endchar # COMMA char ',' ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ...XX... ...XX... ...XX... ...XX... ..XX.... ..X..... endchar # HYPHEN-MINUS char '-' ........ ........ ........ ........ ........ ........ .XXXXXX. .XXXXXX. ........ ........ ........ ........ ........ ........ ........ ........ endchar # FULL STOP char '.' ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # SOLIDUS char '/' ........ ........ .....XX. .....XX. .....XX. ....XX.. ....XX.. ...XX... ...XX... ..XX.... ..XX.... .XX..... .XX..... .XX..... ........ ........ endchar # DIGIT ZERO char '0' ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX.XXX. .XXX.XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # DIGIT ONE char '1' ........ ........ ...XX... ...XX... ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ........ ........ endchar # DIGIT TWO char '2' ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. ....XX.. ....XX.. ...XX... ...XX... ..XX.... ..XX.... .XXXXXX. .XXXXXX. ........ ........ endchar # DIGIT THREE char '3' ........ ........ .XXXXXX. .XXXXXX. ....XX.. ....XX.. ...XX... ...XX... ....XX.. ....XX.. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # DIGIT FOUR char '4' ........ ........ ....XX.. ....XX.. ...XXX.. ...XXX.. ..XXXX.. ..XXXX.. .XX.XX.. .XX.XX.. .XXXXXX. .XXXXXX. ....XX.. ....XX.. ........ ........ endchar # DIGIT FIVE char '5' ........ ........ .XXXXXX. .XXXXXX. .XX..... .XX..... .XXXXX.. .XXXXXX. .....XX. .....XX. .....XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # DIGIT SIX char '6' ........ ........ ...XXX.. ..XXXX.. .XXX.... .XX..... .XX..... .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # DIGIT SEVEN char '7' ........ ........ .XXXXXX. .XXXXXX. .....XX. .....XX. ....XX.. ....XX.. ...XX... ...XX... ..XX.... ..XX.... ..XX.... ..XX.... ........ ........ endchar # DIGIT EIGHT char '8' ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # DIGIT NINE char '9' ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. .....XX. .....XX. .....XX. ....XXX. ..XXXX.. ..XXX... ........ ........ endchar # COLON char ':' ........ ........ ........ ........ ...XX... ...XX... ...XX... ...XX... ........ ........ ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # SEMICOLON char ';' ........ ........ ........ ........ ...XX... ...XX... ...XX... ...XX... ........ ........ ...XX... ...XX... ...XX... ...XX... ..XX.... ..X..... endchar # LESS-THAN SIGN char '<' ........ ........ ........ ....XXX. ...XXX.. ..XXX... .XXX.... XXX..... .XXX.... ..XXX... ...XXX.. ....XXX. ........ ........ ........ ........ endchar # EQUALS SIGN char '=' ........ ........ ........ ........ .XXXXXX. .XXXXXX. ........ ........ .XXXXXX. .XXXXXX. ........ ........ ........ ........ ........ ........ endchar # GREATER-THAN SIGN char '>' ........ ........ ........ XXX..... .XXX.... ..XXX... ...XXX.. ....XXX. ...XXX.. ..XXX... .XXX.... XXX..... ........ ........ ........ ........ endchar # QUESTION MARK char '?' ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. ....XX.. ....XX.. ...XX... ...XX... ...XX... ........ ...XX... ...XX... ........ ........ endchar # COMMERCIAL AT char '@' ........ ........ ..XXX... .XXXXX.. XXX..XX. XX....X. XX.XX.X. XX.X.XX. XX.X.XX. XX.XXX.. XX...... XXX...X. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER A char 'A' ........ ........ ...XX... ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER B char 'B' ........ ........ .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. ........ ........ endchar # LATIN CAPITAL LETTER C char 'C' ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..... .XX..... .XX..... .XX..... .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER D char 'D' ........ ........ .XXXX... .XXXXX.. .XX.XXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX.XXX. .XXXXX.. .XXXX... ........ ........ endchar # LATIN CAPITAL LETTER E char 'E' ........ ........ .XXXXXX. .XXXXXX. .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN CAPITAL LETTER F char 'F' ........ ........ .XXXXXX. .XXXXXX. .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... ........ ........ endchar # LATIN CAPITAL LETTER G char 'G' ........ ........ ..XXXXX. .XXXXXX. .XX..... .XX..... .XX.XXX. .XX.XXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER H char 'H' ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER I char 'I' ........ ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN CAPITAL LETTER J char 'J' ........ ........ .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER K char 'K' ........ ........ XX..XX.. XX..XX.. XX.XX... XX.XX... XXXX.... XXXX.... XX.XX... XX.XX... XX..XX.. XX..XX.. XX...XX. XX...XX. ........ ........ endchar # LATIN CAPITAL LETTER L char 'L' ........ ........ .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN CAPITAL LETTER M char 'M' ........ ........ XX...XX. XX...XX. XXX.XXX. XXX.XXX. XXXXXXX. XX.X.XX. XX.X.XX. XX...XX. XX...XX. XX...XX. XX...XX. XX...XX. ........ ........ endchar # LATIN CAPITAL LETTER N char 'N' ........ ........ .XX..XX. .XX..XX. .XX..XX. .XXX.XX. .XXX.XX. .XXXXXX. .XXXXXX. .XX.XXX. .XX.XXX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER O char 'O' ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER P char 'P' ........ ........ .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. .XX..... .XX..... .XX..... .XX..... ........ ........ endchar # LATIN CAPITAL LETTER Q char 'Q' ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX.X.X. .XXXXX.. ..XX.XX. ........ ........ endchar # LATIN CAPITAL LETTER R char 'R' ........ ........ XXXXX... XXXXXX.. XX..XX.. XX..XX.. XX..XX.. XXXXXX.. XXXXX... XX.XX... XX..XX.. XX..XX.. XX...XX. XX...XX. ........ ........ endchar # LATIN CAPITAL LETTER S char 'S' ........ ........ ..XXXXX. .XXXXXX. .XX..... .XX..... .XXX.... ..XXX... ...XXX.. ....XXX. .....XX. .....XX. .XXXXXX. .XXXXX.. ........ ........ endchar # LATIN CAPITAL LETTER T char 'T' ........ ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # LATIN CAPITAL LETTER U char 'U' ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER V char 'V' ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ...XX... ........ ........ endchar # LATIN CAPITAL LETTER W char 'W' ........ ........ XX...XX. XX...XX. XX...XX. XX...XX. XX...XX. XX.X.XX. XX.X.XX. XXXXXXX. XXXXXXX. XXX.XXX. XX...XX. X.....X. ........ ........ endchar # LATIN CAPITAL LETTER X char 'X' ........ ........ .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ...XX... ..XXXX.. ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER Y char 'Y' ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # LATIN CAPITAL LETTER Z char 'Z' ........ ........ .XXXXXX. .XXXXXX. ....XX.. ....XX.. ...XX... ...XX... ..XX.... ..XX.... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LEFT SQUARE BRACKET char '[' ........ ........ ...XXXX. ...XXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XXXX. ...XXXX. ........ ........ endchar # REVERSE SOLIDUS char 0x5c ........ ........ .XX..... .XX..... .XX..... ..XX.... ..XX.... ...XX... ...XX... ....XX.. ....XX.. .....XX. .....XX. .....XX. ........ ........ endchar # RIGHT SQUARE BRACKET char ']' ........ ........ .XXXX... .XXXX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXX... .XXXX... ........ ........ endchar # CIRCUMFLEX ACCENT char '^' ........ ...X.... ...X.... ..XXX... ..XXX... .XX.XX.. .XX.XX.. XX...XX. XX...XX. ........ ........ ........ ........ ........ ........ ........ endchar # LOW LINE char '_' ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ XXXXXXX. XXXXXXX. ........ ........ endchar # GRAVE ACCENT char '`' .X...... .XX..... .XXX.... ..XXX... ...XXX.. ....XX.. .....X.. ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # LATIN SMALL LETTER A char 'a' ........ ........ ........ ........ ........ ..XXXX.. ..XXXXX. .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER B char 'b' ........ ........ .XX..... .XX..... .XX..... .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. ........ ........ endchar # LATIN SMALL LETTER C char 'c' ........ ........ ........ ........ ........ ..XXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER D char 'd' ........ ........ .....XX. .....XX. .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER E char 'e' ........ ........ ........ ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER F char 'f' ........ ........ ....XXX. ...XXXX. ...XX... ...XX... .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # LATIN SMALL LETTER G char 'g' ........ ........ ........ ........ ........ ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. .....XX. .XXXXXX. .XXXXX.. endchar # LATIN SMALL LETTER H char 'h' ........ ........ .XX..... .XX..... .XX..... .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN SMALL LETTER I char 'i' ........ ........ ...XX... ...XX... ........ ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER J char 'j' ........ ........ ....XX.. ....XX.. ........ ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. .XXXXX.. .XXXX... endchar # LATIN SMALL LETTER K char 'k' ........ ........ XX...... XX...... XX...... XX..XX.. XX.XXX.. XXXXX... XXXX.... XXXXX... XX.XX... XX..XX.. XX..XXX. XX...XX. ........ ........ endchar # LATIN SMALL LETTER L char 'l' ........ ........ ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER M char 'm' ........ ........ ........ ........ ........ .XX.XX.. XXXXXXX. XXXXXXX. XX.X.XX. XX.X.XX. XX.X.XX. XX...XX. XX...XX. XX...XX. ........ ........ endchar # LATIN SMALL LETTER N char 'n' ........ ........ ........ ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN SMALL LETTER O char 'o' ........ ........ ........ ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER P char 'p' ........ ........ ........ ........ ........ .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. .XX..... .XX..... endchar # LATIN SMALL LETTER Q char 'q' ........ ........ ........ ........ ........ ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. .....XX. .....XX. endchar # LATIN SMALL LETTER R char 'r' ........ ........ ........ ........ ........ .XXXXX.. .XXXXXX. .XX..XX. .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... ........ ........ endchar # LATIN SMALL LETTER S char 's' ........ ........ ........ ........ ........ ..XXXXX. .XXXXXX. .XX..... .XXX.... ..XXXX.. ....XXX. .....XX. .XXXXXX. .XXXXX.. ........ ........ endchar # LATIN SMALL LETTER T char 't' ........ ........ ........ ...XX... ...XX... .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XXXX. ....XXX. ........ ........ endchar # LATIN SMALL LETTER U char 'u' ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER V char 'v' ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ...XX... ........ ........ endchar # LATIN SMALL LETTER W char 'w' ........ ........ ........ ........ ........ XX...XX. XX...XX. XX.X.XX. XX.X.XX. XXXXXXX. XXXXXXX. XXX.XXX. XX...XX. X.....X. ........ ........ endchar # LATIN SMALL LETTER X char 'x' ........ ........ ........ ........ ........ .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ..XXXX.. ..XXXX.. .XX..XX. .XX..XX. ........ ........ endchar # LATIN SMALL LETTER Y char 'y' ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. .....XX. .XXXXXX. .XXXXX.. endchar # LATIN SMALL LETTER Z char 'z' ........ ........ ........ ........ ........ .XXXXXX. .XXXXXX. ....XX.. ...XX... ...XX... ..XX.... ..XX.... .XXXXXX. .XXXXXX. ........ ........ endchar # LEFT CURLY BRACKET char '{' ........ ....XXX. ...XX... ...XX... ...XX... ...XX... ..XXX... XXXX.... XXXX.... ..XXX... ...XX... ...XX... ...XX... ...XX... ....XXX. ........ endchar # VERTICAL LINE char '|' ........ ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ endchar # RIGHT CURLY BRACKET char '}' ........ XXX..... ..XX.... ..XX.... ..XX.... ..XX.... ..XXX... ...XXXX. ...XXXX. ..XXX... ..XX.... ..XX.... ..XX.... ..XX.... XXX..... ........ endchar # TILDE char '~' ........ ........ ........ ........ ........ .XX...X. XXXX..X. X.XXXXX. X..XXX.. ........ ........ ........ ........ ........ ........ ........ endchar # 0x2206 INCREMENT char 0x7f ........ ........ ........ ........ ........ ...XX... ...XX... ..XXXX.. ..X..X.. .XX..XX. .X....X. XX....XX XXXXXXXX ........ ........ ........ endchar # NO-BREAK SPACE char 0x00a0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # INVERTED EXCLAMATION MARK char 0x00a1 ........ ........ ........ ...XX... ...XX... ........ ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ endchar # CENT SIGN char 0x00a2 ........ ........ ...XX... ...XX... ..XXXX.. .XXXXXX. .XX..XX. .XX..... .XX..... .XX..XX. .XXXXXX. ..XXXX.. ...XX... ...XX... ........ ........ endchar # POUND SIGN char 0x00a3 ........ ....XXX. ...XXXX. ..XXX... ..XX.... ..XX.... ..XX.... ..XX.... XXXXXXX. ..XX.... ..XX.... ..XX.... .XXXXXXX XXXXXXXX ........ ........ endchar # CURRENCY SIGN char 0x00a4 ........ ........ ........ ........ X......X .X....X. ..XXXX.. .XX..XX. .X.XX.X. .X.XX.X. .XX..XX. ..XXXX.. .X....X. X......X ........ ........ endchar # YEN SIGN char 0x00a5 ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ...XX... .XXXXXX. ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # BROKEN BAR char 0x00a6 ........ ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ endchar # SECTION SIGN char 0x00a7 ........ ........ ...XXX.. ..XX.XX. ..XX..X. ...XX... ..XXXX.. .XX..XX. .XX..XX. ..XXXX.. ...XX... .X..XX.. .XX.XX.. ..XXX... ........ ........ endchar # DIAERESIS char 0x00a8 ........ .XX..XX. .XX..XX. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # COPYRIGHT SIGN char 0x00a9 ........ ........ .XXXXX.. XX...XX. X.....X. X.XXX.X. X.X...X. X.X...X. X.X...X. X.XXX.X. X.....X. XX...XX. .XXXXX.. ........ ........ ........ endchar # FEMININE ORDINAL INDICATOR char 0x00aa ........ ........ ..XXXX.. .....XX. .XXXXXX. .XX..XX. .XX..XX. ..XXXXX. ........ .XXXXXX. ........ ........ ........ ........ ........ ........ endchar # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK char 0x00ab ........ ........ ........ ........ ........ ........ ...XX.X. ..XX.XX. .XX.XX.. XX.XX... .XX.XX.. ..XX.XX. ...XX.X. ........ ........ ........ endchar # NOT SIGN char 0x00ac ........ ........ ........ ........ ........ ........ ........ ........ ........ .XXXXXX. .XXXXXX. .....XX. .....XX. .....XX. ........ ........ endchar # SOFT HYPHEN char 0x00ad ........ ........ ........ ........ ........ ........ ........ .XXXXXX. .XXXXXX. ........ ........ ........ ........ ........ ........ ........ endchar # REGISTERED SIGN char 0x00ae ........ ........ .XXXXX.. XX...XX. X.....X. X.XXX.X. X.X.X.X. X.XX..X. X.XXX.X. X.X.X.X. X.....X. XX...XX. .XXXXX.. ........ ........ ........ endchar # MACRON char 0x00af ........ XXXXXXX. XXXXXXX. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # DEGREE SIGN char 0x00b0 ........ ..XXX... .XX.XX.. .X...X.. .XX.XX.. ..XXX... ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # PLUS-MINUS SIGN char 0x00b1 ........ ........ ........ ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ........ .XXXXXX. .XXXXXX. ........ ........ endchar # SUPERSCRIPT TWO char 0x00b2 ........ ........ ..XX.... .X..X... ...XX... ..XX.... .XX..... .XXXX... ........ ........ ........ ........ ........ ........ ........ ........ endchar # SUPERSCRIPT THREE char 0x00b3 ........ ........ .XXXX... ...XX... ..XX.... ...XX... .X..X... ..XX.... ........ ........ ........ ........ ........ ........ ........ ........ endchar # ACUTE ACCENT char 0x00b4 ........ .....XX. ....XX.. ...XX... ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # MICRO SIGN char 0x00b5 ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXXX .X.XXX.X XX...... X....... ........ endchar # PILCROW SIGN char 0x00b6 ........ ........ .XXXX.X. XX..X.X. XX..X.X. XX..X.X. XX..X.X. XX..X.X. .XXXX.X. ....X.X. ....X.X. ....X.X. ....X.X. ....X.X. ........ ........ endchar # MIDDLE DOT char 0x00b7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ...XX... ..XXXX.. ..XXXX.. ...XX... ........ ........ ........ endchar # CEDILLA char 0x00b8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ....XX.. ..XXX... endchar # SUPERSCRIPT ONE char 0x00b9 ........ ........ ...XX... .XXXX... ...XX... ...XX... ...XX... .XXXXX.. ........ ........ ........ ........ ........ ........ ........ ........ endchar # MASCULINE ORDINAL INDICATOR char 0x00ba ........ ........ ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ .XXXXXX. ........ ........ ........ ........ ........ ........ endchar # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK char 0x00bb ........ ........ ........ ........ ........ ........ X.XX.... XX.XX... .XX.XX.. ..XX.XX. .XX.XX.. XX.XX... X.XX.... ........ ........ ........ endchar # VULGAR FRACTION ONE QUARTER char 0x00bc ........ .XX..... ..X..... ..X..... ..X...XX ..X..XX. ..X.XX.. ...XX... ..XX..X. .XX..XX. XX..XXX. ...XX.X. ..XX..X. ..XXXXXX ......X. ........ endchar # VULGAR FRACTION ONE HALF char 0x00bd ........ .XX..... ..X..... ..X..... ..X...XX ..X..XX. ..X.XX.. ...XX... ..XX.... .XX.XXX. XX.X..XX .....XX. ....XX.. ...XX... ...XXXXX ........ endchar # VULGAR FRACTION THREE QUARTERS char 0x00be ........ .XXX.... X..XX... ..XX.... X..XX.XX .XXX.XX. ....XX.. ...XX... ..XX..X. .XX..XX. XX..XXX. ...XX.X. ..XX..X. ..XXXXXX ......X. ........ endchar # INVERTED QUESTION MARK char 0x00bf ........ ........ ...XX... ...XX... ........ ...XX... ...XX... ...XX... ..XX.... ..XX.... .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER A WITH GRAVE char 0x00c0 .XX..... ..XX.... ...XX... ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER A WITH ACUTE char 0x00c1 ....XX.. ...XX... ........ ...XX... ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER A WITH CIRCUMFLEX char 0x00c2 ...XX... ..XXXX.. .XX..XX. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER A WITH TILDE char 0x00c3 ..XX..X. .XXXX.X. .X..XX.. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER A WITH DIAERESIS char 0x00c4 ........ .XX..XX. .XX..XX. ...XX... ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER A WITH RING ABOVE char 0x00c5 ..XXXX.. .XX..XX. ..XXXX.. ...XX... ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER AE char 0x00c6 ........ ..XXXXX. .XXXXXX. XXXXX... XX.XX... XX.XX... XX.XXXX. XX.XXXX. XXXXX... XXXXX... XX.XX... XX.XX... XX.XXXX. XX.XXXX. ........ ........ endchar # LATIN CAPITAL LETTER C WITH CEDILLA char 0x00c7 ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..... .XX..... .XX..... .XX..... .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ....XX.. ..XXX... endchar # LATIN CAPITAL LETTER E WITH GRAVE char 0x00c8 .XX..... ..XX.... ...XX... .XXXXXX. .XXXXXX. .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN CAPITAL LETTER E WITH ACUTE char 0x00c9 .....XX. ....XX.. ...XX... .XXXXXX. .XXXXXX. .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN CAPITAL LETTER E WITH CIRCUMFLEX char 0x00ca ...XX... ..XXXX.. .XX..XX. ........ .XXXXXX. .XXXXXX. .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN CAPITAL LETTER E WITH DIAERESIS char 0x00cb .XX..XX. .XX..XX. ........ .XXXXXX. .XXXXXX. .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN CAPITAL LETTER I WITH GRAVE char 0x00cc .XX..... ..XX.... ...XX... .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN CAPITAL LETTER I WITH ACUTE char 0x00cd .....XX. ....XX.. ...XX... ..XXXX.. ..XXXX.. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER I WITH CIRCUMFLEX char 0x00ce ...XX... ..XXXX.. .XX..XX. ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN CAPITAL LETTER I WITH DIAERESIS char 0x00cf ........ .XX..XX. .XX..XX. ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN CAPITAL LETTER ETH char 0x00d0 ........ ........ .XXXX... .XXXXX.. .XX.XXX. .XX..XX. .XXX.XX. XXXX.XX. XXX..XX. .XX..XX. .XX..XX. .XX.XXX. .XXXXX.. .XXXX... ........ ........ endchar # LATIN CAPITAL LETTER N WITH TILDE char 0x00d1 ........ ..XX..X. .XXXX.X. .X..XX.. ........ .XX..XX. .XX..XX. .XXX.XX. .XXXXXX. .XXXXXX. .XX.XXX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER O WITH GRAVE char 0x00d2 .XX..... ..XX.... ...XX... ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER O WITH ACUTE char 0x00d3 .....XX. ....XX.. ...XX... ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER O WITH CIRCUMFLEX char 0x00d4 ...XX... ..XXXX.. .XX..XX. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER O WITH TILDE char 0x00d5 ..XX..X. .XXXX.X. .X..XX.. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER O WITH DIAERESIS char 0x00d6 ........ .XX..XX. .XX..XX. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # MULTIPLICATION SIGN char 0x00d7 ........ ........ ........ ........ ........ .X....X. .XX..XX. ..XXXX.. ...XX... ..XXXX.. .XX..XX. .X....X. ........ ........ ........ ........ endchar # LATIN CAPITAL LETTER O WITH STROKE char 0x00d8 ........ .......X ..XXXX.X .XXXXXX. .XX..XX. .XX..XX. .XX.XXX. .XX.XXX. .XXX.XX. .XXX.XX. .XX..XX. .XX..XX. .XXXXXX. X.XXXX.. X....... ........ endchar # LATIN CAPITAL LETTER U WITH GRAVE char 0x00d9 .XX..... ..XX.... ...XX... ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER U WITH ACUTE char 0x00da .....XX. ....XX.. ...XX... ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER U WITH CIRCUMFLEX char 0x000db ...XX... ..XXXX.. .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER U WITH DIAERESIS char 0x00dc ........ .XX..XX. .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER Y WITH ACUTE char 0x00dd .....XX. ....XX.. ...XX... ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # LATIN CAPITAL LETTER THORN char 0x00de ........ ........ .XX..... .XX..... .XX..... .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. .XX..... .XX..... .XX..... ........ ........ endchar # LATIN SMALL LETTER SHARP S char 0x00df ........ ........ ...XX... ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XXXXX.. .XX..XX. .XX..XX. .XX..XX. .XXXXX.. .XX.XX.. .XX..... .X...... ........ endchar # LATIN SMALL LETTER A WITH GRAVE char 0x00e0 ........ .XX..... ..XX.... ...XX... ........ ..XXXX.. ..XXXXX. .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER A WITH ACUTE char 0x00e1 ........ .....XX. ....XX.. ...XX... ........ ..XXXX.. ..XXXXX. .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER A WITH CIRCUMFLEX char 0x00e2 ........ ...XX... ..XXXX.. .XX..XX. ........ ..XXXX.. ..XXXXX. .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER A WITH TILDE char 0x00e3 ........ ..XX..X. .XXXX.X. .X..XX.. ........ ..XXXX.. ..XXXXX. .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER A WITH DIAERESIS char 0x00e4 ........ ........ .XX..XX. .XX..XX. ........ ..XXXX.. ..XXXXX. .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER A WITH RING ABOVE char 0x00e5 ........ ...XXX.. ..XX.XX. ...XXX.. ........ ..XXXX.. ..XXXXX. .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER AE char 0x00e6 ........ ........ ........ ........ ........ .XXX.XX. .XXXXXXX ...XX.XX .XXXX.XX XXXXXXXX XX.XX... XX.XX... XXXXXXXX .XXXXXXX ........ ........ endchar # LATIN SMALL LETTER C WITH CEDILLA char 0x00e7 ........ ........ ........ ........ ........ ..XXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XX..... .XX..... .XXXXXX. ..XXXXX. ....XX.. ..XXX... endchar # LATIN SMALL LETTER E WITH GRAVE char 0x00e8 ........ .XX..... ..XX.... ...XX... ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER E WITH ACUTE char 0x00e9 ........ .....XX. ....XX.. ...XX... ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER E WITH CIRCUMFLEX char 0x00ea ........ ...XX... ..XXXX.. .XX..XX. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER E WITH DIAERESIS char 0x00eb ........ ........ .XX..XX. .XX..XX. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER I WITH GRAVE char 0x00ec ........ .XX..... ..XX.... ...XX... ........ ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER I WITH ACUTE char 0x00ed ........ .....XX. ....XX.. ...XX... ........ ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER I WITH CIRCUMFLEX char 0x00ee ........ ...XX... ..XXXX.. .XX..XX. ........ ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER I WITH DIAERESIS char 0x00ef ........ ........ .XX..XX. .XX..XX. ........ ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER ETH char 0x00f0 ........ ........ .XX..XX. ...XX... .XX.XX.. .....XX. ...XXXX. ..XXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER N WITH TILDE char 0x00f1 ........ ..XX..X. .XXXX.X. .X..XX.. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN SMALL LETTER O WITH GRAVE char 0x00f2 ........ .XX..... ..XX.... ...XX... ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER O WITH ACUTE char 0x00f3 ........ .....XX. ....XX.. ...XX... ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER O WITH CIRCUMFLEX char 0x00f4 ........ ...XX... ..XXXX.. .XX..XX. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER O WITH TILDE char 0x00f5 ........ ..XX..X. .XXXX.X. .X..XX.. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER O WITH DIAERESIS char 0x00f6 ........ ........ .XX..XX. .XX..XX. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # DIVISION SIGN char 0x00f7 ........ ........ ........ ...XX... ...XX... ........ .XXXXXX. .XXXXXX. ........ ...XX... ...XX... ........ ........ ........ ........ ........ endchar # LATIN SMALL LETTER O WITH STROKE char 0x00f8 ........ ........ ........ ........ .......X ..XXXX.X .XXXXXX. .XX..XX. .XX.XXX. .XXXXXX. .XXX.XX. .XX..XX. .XXXXXX. X.XXXX.. X....... ........ endchar # LATIN SMALL LETTER U WITH GRAVE char 0x00f9 ........ .XX..... ..XX.... ...XX... ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER U WITH ACUTE char 0x00fa ........ .....XX. ....XX.. ...XX... ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER U WITH CIRCUMFLEX char 0x00fb ........ ...XX... ..XXXX.. .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER U WITH DIAERESIS char 0x00fc ........ ........ .XX..XX. .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN SMALL LETTER Y WITH ACUTE char 0x00fd ........ .....XX. ....XX.. ...XX... ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. .....XX. .XXXXXX. .XXXXX.. endchar # LATIN SMALL LETTER THORN char 0x00fe ........ ........ ........ .XX..... .XX..... .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. .XX..... .XX..... endchar # LATIN SMALL LETTER Y WITH DIAERESIS char 0x00ff ........ ........ .XX..XX. .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. .....XX. .XXXXXX. .XXXXX.. endchar # LATIN CAPITAL LETTER A WITH MACRON char 0x0100 ........ .XXXXXX. ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN SMALL LETTER A WITH MACRON char 0x0101 ........ ........ .XXXXXX. ........ ........ ..XXXX.. ..XXXXX. .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER A WITH BREVE char 0x0102 ........ .XX..XX. ..XXXX.. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN SMALL LETTER A WITH BREVE char 0x0103 ........ ........ .XX..XX. ..XXXX.. ........ ..XXXX.. ..XXXXX. .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER A WITH OGONEK char 0x0104 ........ ........ ...XX... ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ....XX.. .....XX. endchar # LATIN SMALL LETTER A WITH OGONEK char 0x0105 ........ ........ ........ ........ ........ ..XXXX.. ..XXXXX. .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ....XX.. .....XX. endchar # LATIN CAPITAL LETTER C WITH ACUTE char 0x0106 ....XX.. ...XX... ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..... .XX..... .XX..... .XX..... .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER C WITH ACUTE char 0x0107 ........ .....XX. ....XX.. ...XX... ........ ..XXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER C WITH CIRCUMFLEX char 0x0108 ...XX... ..XXXX.. .XX..XX. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..... .XX..... .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER C WITH CIRCUMFLEX char 0x0109 ........ ...XX... ..XXXX.. .XX..XX. ........ ..XXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER C WITH DOT ABOVE char 0x010a ...XX... ...XX... ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..... .XX..... .XX..... .XX..... .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER C WITH DOT ABOVE char 0x010b ........ ........ ...XX... ...XX... ........ ..XXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER C WITH CARON char 0x010c .XX.XX.. ..XXX... ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..... .XX..... .XX..... .XX..... .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER C WITH CARON char 0x010d ........ ........ ..XX.XX. ...XXX.. ........ ..XXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER D WITH CARON char 0x010e .XX.XX.. ..XXX... .XXXX... .XXXXX.. .XX.XXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX.XXX. .XXXXX.. .XXXX... ........ ........ endchar # LATIN SMALL LETTER D WITH CARON char 0x010f ........ ........ XX.XXXX. .XXX.XX. .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER D WITH STROKE char 0x0110 ........ ........ .XXXX... .XXXXX.. .XX.XXX. .XX..XX. .XX..XX. XXXX.XX. XXXX.XX. .XX..XX. .XX..XX. .XX.XXX. .XXXXX.. .XXXX... ........ ........ endchar # LATIN SMALL LETTER D WITH STROKE char 0x0111 ........ ........ .....XX. .....XX. ...XXXXX .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER E WITH MACRON char 0x0112 ..XXXXX. ........ .XXXXXX. .XXXXXX. .XX..... .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER E WITH MACRON char 0x0113 ........ ........ ..XXXXX. ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER E WITH BREVE char 0x0114 ..XX.XX. ...XXX.. .XXXXXX. .XXXXXX. .XX..... .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER E WITH BREVE char 0x0115 ........ ........ ..XX.XX. ...XXX.. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER E WITH DOT ABOVE char 0x0116 ...XX... ...XX... .XXXXXX. .XXXXXX. .XX..... .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER E WITH DOT ABOVE char 0x0117 ........ ........ ...XX... ...XX... ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER E WITH OGONEK char 0x0118 ........ ........ .XXXXXX. .XXXXXX. .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ...XX... ....XX.. endchar # LATIN SMALL LETTER E WITH OGONEK char 0x0119 ........ ........ ........ ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XX..... .XX..... .XXXXXX. ..XXXXX. ...XX... ....XX.. endchar # LATIN CAPITAL LETTER E WITH CARON char 0x011a ..XX.XX. ...XXX.. .XXXXXX. .XXXXXX. .XX..... .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER E WITH CARON char 0x011b ........ ........ ..XX.XX. ...XXX.. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER G WITH CIRCUMFLEX char 0x011c ...XX... ..XXXX.. .XX..XX. ........ ..XXXXX. .XXXXXX. .XX..... .XX.XXX. .XX.XXX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER G WITH CIRCUMFLEX char 0x011d ........ ...XX... ..XXXX.. .XX..XX. ........ ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. .....XX. .XXXXXX. .XXXXX.. endchar # LATIN CAPITAL LETTER G WITH BREVE char 0x011e ..XX.XX. ...XXX.. ........ ..XXXXX. .XXXXXX. .XX..... .XX..... .XX.XXX. .XX.XXX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER G WITH BREVE char 0x011f ........ ........ ..XX.XX. ...XXX.. ........ ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. .....XX. .XXXXXX. .XXXXX.. endchar # LATIN CAPITAL LETTER G WITH DOT ABOVE char 0x0120 ...XX... ...XX... ........ ..XXXXX. .XXXXXX. .XX..... .XX..... .XX.XXX. .XX.XXX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER G WITH DOT ABOVE char 0x0121 ........ ........ ...XX... ...XX... ........ ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. .....XX. .XXXXXX. .XXXXX.. endchar # LATIN CAPITAL LETTER G WITH CEDILLA char 0x0122 ........ ........ ..XXXXX. .XXXXXX. .XX..... .XX..... .XX.XXX. .XX.XXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ....XX.. ..XXX... endchar # LATIN SMALL LETTER G WITH CEDILLA char 0x0123 ........ ........ ........ ...XX... ..XX.... ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. .....XX. .XXXXXX. .XXXXX.. endchar # LATIN CAPITAL LETTER H WITH CIRCUMFLEX char 0x0124 ...XX... ..XXXX.. .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN SMALL LETTER H WITH CIRCUMFLEX char 0x0125 ........ ...XX... ..XXXX.. .XX..XX. ........ .XX..... .XX..... .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER H WITH STROKE char 0x0126 ........ ........ .XX..XX. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN SMALL LETTER H WITH STROKE char 0x0127 ........ ........ .XXX.... .XX..... .XX..... .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER I WITH TILDE char 0x0128 ..XX..X. .XXXX.X. .X..XX.. .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER I WITH TILDE char 0x0129 ........ ..XX..X. .XXXX.X. .X..XX.. ........ ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER I WITH MACRON char 0x012a .XXXXXX. ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER I WITH MACRON char 0x012b ........ ........ ..XXXX.. ........ ........ ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER I WITH BREVE char 0x012c ..XX.XX. ...XXX.. ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER I WITH BREVE char 0x012d ........ ........ ..XX.XX. ...XXX.. ........ ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER I WITH OGONEK char 0x012e ........ ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ...XX... ....XX.. endchar # LATIN SMALL LETTER I WITH OGONEK char 0x012f ........ ........ ...XX... ...XX... ........ ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXXX.. ...XX... ....XX.. endchar # LATIN CAPITAL LETTER I WITH DOT ABOVE char 0x0130 ...XX... ...XX... ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER DOTLESS I char 0x0131 ........ ........ ........ ........ ........ ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LIGATURE IJ char 0x0132 XXXX.XX. XXXX.XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. XXXX.XX. XXXX.XX. ....XXX. .XXXXX.. .XXXX... endchar # LATIN SMALL LIGATURE IJ char 0x0133 ........ .XX..XX. .XX..XX. ........ XXX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. XXXX.XX. ....XXX. ..XXXX.. ..XXX... endchar # LATIN CAPITAL LETTER J WITH CIRCUMFLEX char 0x0134 ...XX... ..XXXX.. .XX..XX. ........ .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER J WITH CIRCUMFLEX char 0x0135 ........ ...XX... ..XXXX.. .XX..XX. ........ ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. .XXXXX.. .XXXX... endchar # LATIN CAPITAL LETTER K WITH CEDILLA char 0x0136 ........ ........ XX..XX.. XX..XX.. XX.XX... XX.XX... XXXX.... XXXX.... XX.XX... XX.XX... XX..XX.. XX..XX.. XX...XX. XX...XX. ....XX.. ..XXX... endchar # LATIN SMALL LETTER K WITH CEDILLA char 0x0137 ........ ........ XX...... XX...... XX...... XX..XX.. XX.XXX.. XXXXX... XXXX.... XXXXX... XX.XX... XX..XX.. XX..XXX. XX...XX. ....XX.. ..XXX... endchar # LATIN SMALL LETTER KRA char 0x0138 ........ ........ ........ ........ XX...... XX..XXX. XX.XXX.. XXXXX... XXXX.... XXXXX... XX.XX... XX..XX.. XX..XXX. XX...XX. ........ ........ endchar # LATIN CAPITAL LETTER L WITH ACUTE char 0x0139 ........ ......X. .XX..XX. .XX.XX.. .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER L WITH ACUTE char 0x013a ........ .....XX. XXX.XX.. XXX.X... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... XXXX.... XXXX.... ........ ........ endchar # LATIN CAPITAL LETTER L WITH CEDILLA char 0x013b ........ ........ .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ....XX.. ..XXX... endchar # LATIN SMALL LETTER L WITH CEDILLA char 0x013c ........ ........ ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXXX.. ....XX.. ..XXX... endchar # LATIN CAPITAL LETTER L WITH CARON char 0x013d ........ ........ .XX.XX.. .XX..X.. .XX.X... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER L WITH CARON char 0x013e ........ ........ .XXX.XX. .XXX..X. ..XX.X.. ..XX.... ..XX.... ..XX.... ..XX.... ..XX.... ..XX.... ..XX.... .XXXX... .XXXX... ........ ........ endchar # LATIN CAPITAL LETTER L WITH MIDDLE DOT char 0x013f ........ ........ .XX..... .XX..... .XX..... .XX..... .XX..X.. .XX..X.. .XX..... .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER L WITH MIDDLE DOT char 0x0140 ........ ........ .XXX.... .XXX.... ..XX.... ..XX.... ..XX..X. ..XX..X. ..XX.... ..XX.... ..XX.... ..XX.... .XXXX... .XXXX... ........ ........ endchar # LATIN CAPITAL LETTER L WITH STROKE char 0x0141 ........ ........ .XX..... .XX..... .XX..... .XX.X... .XXXX... .XXX.... XXX..... XXX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER L WITH STROKE char 0x0142 ........ ........ ..XXX... ..XXX... ...XX... ...XX... ...XXX.. ..XXX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER N WITH ACUTE char 0x0143 ....XX.. ...XX... ........ .XX..XX. .XX..XX. .XXX.XX. .XXX.XX. .XXXXXX. .XXXXXX. .XX.XXX. .XX.XXX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN SMALL LETTER N WITH ACUTE char 0x0144 ........ .....XX. ....XX.. ...XX... ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER N WITH CEDILLA char 0x0145 ........ ........ .XX..XX. .XX..XX. .XX..XX. .XXX.XX. .XXX.XX. .XXXXXX. .XXXXXX. .XX.XXX. .XX.XXX. .XX..XX. .XX..XX. .XX..XX. ....XX.. ..XXX... endchar # LATIN SMALL LETTER N WITH CEDILLA char 0x0146 ........ ........ ........ ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ....XX.. ..XXX... endchar # LATIN CAPITAL LETTER N WITH CARON char 0x0147 ..XX.XX. ...XXX.. ........ .XX..XX. .XX..XX. .XXX.XX. .XXX.XX. .XXXXXX. .XXXXXX. .XX.XXX. .XX.XXX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN SMALL LETTER N WITH CARON char 0x0148 ........ ........ ..XX.XX. ...XXX.. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE char 0x0149 ........ ........ X....... X....... ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # LATIN CAPITAL LETTER ENG char 0x014a ........ ........ .XX..XX. .XX..XX. .XX..XX. .XXX.XX. .XXX.XX. .XXXXXX. .XXXXXX. .XX.XXX. .XX.XXX. .XX..XX. .XX..XX. .XX...X. ......X. .....XX. endchar # LATIN SMALL LETTER ENG char 0x014b ........ ........ ........ ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX...X. ......X. .....XX. endchar # LATIN CAPITAL LETTER O WITH MACRON char 0x014c ........ .XXXXXX. ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER O WITH MACRON char 0x014d ........ ........ .XXXXXX. ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER O WITH BREVE char 0x014e ........ ..XX.XX. ...XXX.. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER O WITH BREVE char 0x014f ........ ........ ..XX.XX. ...XXX.. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE char 0x0150 ........ ...XX.XX ..XX.XX. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER O WITH DOUBLE ACUTE char 0x0151 ........ ...XX.XX ..XX.XX. .XX.XX.. ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN CAPITAL LIGATURE OE char 0x0152 ........ ........ .XXXXXX. XXXXXXX. XX.XX... XX.XX... XX.XXXX. XX.XXXX. XX.XX... XX.XX... XX.XX... XX.XX... XXXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LIGATURE OE char 0x0153 ........ ........ ........ ........ ........ .XXXXXX. XXXXXXXX XX.XX.XX XX.XX.XX XX.XXXXX XX.XX... XX.XX... XXXXXXXX .XXXXXXX ........ ........ endchar # LATIN CAPITAL LETTER R WITH ACUTE char 0x0154 ...XX... ..XX.... XXXXX... XXXXXX.. XX..XX.. XX..XX.. XX..XX.. XXXXXX.. XXXXX... XX.XX... XX..XX.. XX..XX.. XX...XX. XX...XX. ........ ........ endchar # LATIN SMALL LETTER R WITH ACUTE char 0x0155 ........ .....XX. ....XX.. ...XX... ........ .XXXXX.. .XXXXXX. .XX..XX. .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... ........ ........ endchar # LATIN CAPITAL LETTER R WITH CEDILLA char 0x0156 ........ ........ XXXXX... XXXXXX.. XX..XX.. XX..XX.. XX..XX.. XXXXXX.. XXXXX... XX.XX... XX..XX.. XX..XX.. XX...XX. XX...XX. ....XX.. ..XXX... endchar # LATIN SMALL LETTER R WITH CEDILLA char 0x0157 ........ ........ ........ ........ ........ .XXXXX.. .XXXXXX. .XX..XX. .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... ....XX.. ..XXX... endchar # LATIN CAPITAL LETTER R WITH CARON char 0x0158 .XX.XX.. ..XXX... XXXXX... XXXXXX.. XX..XX.. XX..XX.. XX..XX.. XXXXXX.. XXXXX... XX.XX... XX..XX.. XX..XX.. XX...XX. XX...XX. ........ ........ endchar # LATIN SMALL LETTER R WITH CARON char 0x0159 ........ ........ .XX.XX.. ..XXX... ........ .XXXXX.. .XXXXXX. .XX..XX. .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... ........ ........ endchar # LATIN CAPITAL LETTER S WITH ACUTE char 0x015a ....XX.. ...XX... ..XXXXX. .XXXXXX. .XX..... .XX..... .XXX.... ..XXX... ...XXX.. ....XXX. .....XX. .....XX. .XXXXXX. .XXXXX.. ........ ........ endchar # LATIN SMALL LETTER S WITH ACUTE char 0x015b ........ .....XX. ....XX.. ...XX... ........ ..XXXXX. .XXXXXX. .XX..... .XXX.... ..XXXX.. ....XXX. .....XX. .XXXXXX. .XXXXX.. ........ ........ endchar # LATIN CAPITAL LETTER S WITH CIRCUMFLEX char 0x015c ...XX... ..XXXX.. .XX..XX. .XXXXXX. .XX..... .XX..... .XXX.... ..XXX... ...XXX.. ....XXX. .....XX. .....XX. .XXXXXX. .XXXXX.. ........ ........ endchar # LATIN SMALL LETTER S WITH CIRCUMFLEX char 0x015d ........ ...XX... ..XXXX.. .XX..XX. ........ ..XXXXX. .XXXXXX. .XX..... .XXX.... ..XXXX.. ....XXX. .....XX. .XXXXXX. .XXXXX.. ........ ........ endchar # LATIN CAPITAL LETTER S WITH CEDILLA char 0x015e ........ ........ ..XXXXX. .XXXXXX. .XX..... .XX..... .XXX.... ..XXX... ...XXX.. ....XXX. .....XX. .....XX. .XXXXXX. .XXXXX.. ....XX.. ..XXX... endchar # LATIN SMALL LETTER S WITH CEDILLA char 0x015f ........ ........ ........ ........ ........ ..XXXXX. .XXXXXX. .XX..... .XXX.... ..XXXX.. ....XXX. .....XX. .XXXXXX. .XXXXX.. ....XX.. ..XXX... endchar # LATIN CAPITAL LETTER S WITH CARON char 0x0160 ..XX.XX. ...XXX.. ..XXXXX. .XXXXXX. .XX..... .XX..... .XXX.... ..XXX... ...XXX.. ....XXX. .....XX. .....XX. .XXXXXX. .XXXXX.. ........ ........ endchar # LATIN SMALL LETTER S WITH CARON char 0x0161 ........ ........ ..XX.XX. ...XXX.. ........ ..XXXXX. .XXXXXX. .XX..... .XXX.... ..XXXX.. ....XXX. .....XX. .XXXXXX. .XXXXX.. ........ ........ endchar # LATIN CAPITAL LETTER T WITH CEDILLA char 0x0162 ........ ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XX.... endchar # LATIN SMALL LETTER T WITH CEDILLA char 0x0163 ........ ........ ........ ...XX... ...XX... .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XXXX. ....XXX. ....XX.. ..XXX... endchar # LATIN CAPITAL LETTER T WITH CARON char 0x0164 ..XX.XX. ...XXX.. .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # LATIN SMALL LETTER T WITH CARON char 0x0165 ........ ........ ..XX.... ..XX..XX ..XX...X XXXXX.X. XXXXX... ..XX.... ..XX.... ..XX.... ..XX.... ..XX.... ..XXXX.. ...XXX.. ........ ........ endchar # LATIN CAPITAL LETTER T WITH STROKE char 0x0166 ........ ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ..XXXX.. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # LATIN SMALL LETTER T WITH STROKE char 0x0167 ........ ........ ..XX.... ..XX.... ..XX.... XXXXXX.. XXXXXX.. ..XX.... .XXXX... ..XX.... ..XX.... ..XX.... ..XXXX.. ...XXX.. ........ ........ endchar # LATIN CAPITAL LETTER U WITH TILDE char 0x0168 ..XX..X. .XXXX.X. .X..XX.. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER U WITH TILDE char 0x0169 ........ ..XX..X. .XXXX.X. .X..XX.. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER U WITH MACRON char 0x016a ........ .XXXXXX. ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER U WITH MACRON char 0x016b ........ ........ .XXXXXX. ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER U WITH BREVE char 0x016c ........ ..XX.XX. ...XXX.. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER U WITH BREVE char 0x016d ........ ..XX.XX. ...XXX.. ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER U WITH RING ABOVE char 0x016e ...XXX.. ..XX.XX. ...XXX.. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER U WITH RING ABOVE char 0x016f ........ ...XXX.. ..XX.XX. ...XXX.. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE char 0x0170 ...XX..X ..XX..XX .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # LATIN SMALL LETTER U WITH DOUBLE ACUTE char 0x0171 ........ ...XX.XX ..XX.XX. .XX.XX.. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # LATIN CAPITAL LETTER U WITH OGONEK char 0x0172 ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ...XX... ....XX.. endchar # LATIN SMALL LETTER U WITH OGONEK char 0x0173 ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ...XX... ....XX.. endchar # LATIN CAPITAL LETTER W WITH CIRCUMFLEX char 0x0174 ...XX... ..XXXX.. .XX..XX. XX...XX. XX...XX. XX...XX. XX...XX. XX.X.XX. XX.X.XX. XXXXXXX. XXXXXXX. XXX.XXX. XX...XX. X.....X. ........ ........ endchar # LATIN SMALL LETTER W WITH CIRCUMFLEX char 0x0175 ........ ...XX... ..XXXX.. .XX..XX. ........ XX...XX. XX...XX. XX.X.XX. XX.X.XX. XXXXXXX. XXXXXXX. XXX.XXX. XX...XX. X.....X. ........ ........ endchar # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX char 0x0176 ...XX... ..XXXX.. .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # LATIN SMALL LETTER Y WITH CIRCUMFLEX char 0x0177 ........ ...XX... ..XXXX.. .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. .....XX. .XXXXXX. .XXXXX.. endchar # LATIN CAPITAL LETTER Y WITH DIAERESIS char 0x0178 ........ .XX..XX. .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # LATIN CAPITAL LETTER Z WITH ACUTE char 0x0179 ....XX.. ...XX... .XXXXXX. .XXXXXX. ....XX.. ....XX.. ...XX... ...XX... ..XX.... ..XX.... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER Z WITH ACUTE char 0x017a ........ .....XX. ....XX.. ...XX... ........ .XXXXXX. .XXXXXX. ....XX.. ...XX... ...XX... ..XX.... ..XX.... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN CAPITAL LETTER Z WITH DOT ABOVE char 0x017b ...XX... ...XX... ........ .XXXXXX. .XXXXXX. ....XX.. ....XX.. ...XX... ...XX... ..XX.... ..XX.... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER Z WITH DOT ABOVE char 0x017c ........ ........ ...XX... ...XX... ........ .XXXXXX. .XXXXXX. ....XX.. ...XX... ...XX... ..XX.... ..XX.... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN CAPITAL LETTER Z WITH CARON char 0x017d ..XX.XX. ...XXX.. .XXXXXX. .XXXXXX. ....XX.. ....XX.. ...XX... ...XX... ..XX.... ..XX.... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER Z WITH CARON char 0x017e ........ ........ ..XX.XX. ...XXX.. ........ .XXXXXX. .XXXXXX. ....XX.. ...XX... ...XX... ..XX.... ..XX.... .XXXXXX. .XXXXXX. ........ ........ endchar # LATIN SMALL LETTER LONG S char 0x017f ........ ........ ....XXX. ...XXXX. ...XX... ...XX... .XXXX... .XXXX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ endchar char 0x0180 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0181 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0182 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0183 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0184 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0185 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0186 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0187 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0188 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0189 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x018a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x018b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x018c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x018d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x018e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # LATIN CAPITAL LETTER SCHWA char 0x018f ........ ........ ........ ........ ........ .XXXXX.. .XXXXXX. .....XX. .....XX. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar char 0x0190 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0191 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # LATIN SMALL LETTER F WITH HOOK char 0x0192 ........ ........ ....XXX. ...XXXX. ...XX... ...XX... ...XX... .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... .XXX.... .XX..... ........ endchar char 0x0193 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0194 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0195 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0196 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0197 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0198 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0199 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x019a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x019b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x019c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x019d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x019e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x019f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01a0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01a1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01a2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01a3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01a4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01a5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01a6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01a7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01a8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01a9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01aa ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01ab ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01ac ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01ad ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01ae ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01af ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01b0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01b1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01b2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01b3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01b4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01b5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01b6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01b7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01b8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01b9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01ba ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01bb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01bc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01bd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01be ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01bf ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01c0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01c1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01c2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01c3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01c4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01c5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01c6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01c7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01c8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01c9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01ca ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01cb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01cc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01cd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01ce ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01cf ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01d0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01d1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01d2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01d3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01d4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01d5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01d6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01d7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01d8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01d9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01da ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01db ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01dc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01dd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01de ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01df ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01e0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01e1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01e2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01e3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01e4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01e5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01e6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01e7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01e8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01e9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01ea ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01eb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01ec ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01ed ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01ee ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01ef ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01f0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01f1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01f2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01f3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01f4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01f5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01f6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01f7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01f8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01f9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01fa ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01fb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01fc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01fd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01fe ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x01ff ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0200 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0201 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0202 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0203 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0204 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0205 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0206 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0207 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0208 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0209 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x020a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x020b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x020c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x020d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x020e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x020f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0210 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0211 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0212 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0213 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0214 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0215 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0216 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0217 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0218 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0219 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x021a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x021b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x021c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x021d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x021e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x021f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0220 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0221 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0222 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0223 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0224 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0225 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0226 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0227 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0228 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0229 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x022a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x022b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x022c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x022d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x022e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x022f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0230 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0231 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0232 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0233 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0234 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0235 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0236 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0237 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0238 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0239 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x023a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x023b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x023c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x023d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x023e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x023f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0240 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0241 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0242 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0243 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0244 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0245 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0246 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0247 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0248 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0249 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x024a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x024b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x024c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x024d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x024e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x024f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0250 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0251 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0252 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0253 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0254 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0255 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0256 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0257 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0258 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0259 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x025a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x025b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x025c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x025d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x025e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x025f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0260 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0261 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0262 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0263 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0264 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0265 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0266 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0267 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0268 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0269 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x026a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x026b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x026c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x026d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x026e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x026f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0270 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0271 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0272 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0273 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0274 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0275 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0276 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0277 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0278 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0279 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x027a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x027b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x027c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x027d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x027e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x027f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0280 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0281 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0282 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0283 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0284 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0285 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0286 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0287 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0288 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0289 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x028a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x028b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x028c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x028d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x028e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x028f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0290 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0291 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0292 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0293 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0294 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0295 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0296 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0297 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0298 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0299 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x029a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x029b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x029c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x029d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x029e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x029f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02a0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02a1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02a2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02a3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02a4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02a5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02a6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02a7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02a8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02a9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02aa ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02ab ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02ac ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02ad ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02ae ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02af ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02b0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02b1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02b2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02b3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02b4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02b5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02b6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02b7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02b8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02b9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02ba ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02bb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02bc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02bd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02be ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02bf ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02c0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02c1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02c2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02c3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02c4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02c5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02c6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # CARON char 0x02c7 ..XX.XX. ...XXX.. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02c8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02c9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02ca ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02cb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02cc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02cd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02ce ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02cf ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02d0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02d1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02d2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02d3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02d4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02d5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02d6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02d7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # BREVE char 0x02d8 .XX..XX. ..XXXX.. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # DOT ABOVE char 0x02d9 ...XX... ...XX... ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02da ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # OGONEK char 0x02db ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ....XX.. .....XX. endchar char 0x02dc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # DOUBLE ACUTE ACCENT char 0x02dd ...XX.XX ..XX.XX. .XX.XX.. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02de ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02df ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02e0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02e1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02e2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02e3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02e4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02e5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02e6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02e7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02e8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02e9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02ea ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02eb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02ec ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02ed ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02ee ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02ef ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02f0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02f1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02f2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02f3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02f4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02f5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02f6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02f7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02f8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02f9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02fa ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02fb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02fc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02fd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02fe ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x02ff ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0300 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0301 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0302 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0303 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0304 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0305 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0306 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0307 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0308 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0309 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x030a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x030b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x030c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x030d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x030e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x030f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0310 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0311 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0312 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0313 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0314 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0315 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0316 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0317 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0318 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0319 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x031a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x031b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x031c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x031d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x031e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x031f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0320 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0321 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0322 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0323 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0324 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0325 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0326 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0327 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0328 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0329 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x032a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x032b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x032c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x032d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x032e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x032f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0330 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0331 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0332 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0333 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0334 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0335 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0336 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0337 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0338 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0339 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x033a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x033b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x033c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x033d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x033e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x033f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0340 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0341 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0342 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0343 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0344 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0345 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0346 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0347 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0348 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0349 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x034a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x034b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x034c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x034d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x034e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x034f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0350 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0351 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0352 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0353 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0354 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0355 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0356 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0357 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0358 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0359 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x035a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x035b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x035c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x035d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x035e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x035f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0360 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0361 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0362 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0363 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0364 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0365 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0366 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0367 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0368 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0369 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x036a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x036b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x036c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x036d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x036e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x036f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0370 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0371 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0372 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0373 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0374 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0375 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0376 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0377 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0378 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0379 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x037a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x037b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x037c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x037d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x037e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x037f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0380 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0381 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0382 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0383 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # GREEK TONOS char 0x0384 ........ .....XX. ....XX.. ...XX... ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # GREEK DIALYTIKA TONOS char 0x0385 ...X.... ..X..... XX..XX.. XX..XX.. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # GREEK CAPITAL LETTER ALPHA WITH TONOS char 0x0386 ........ ........ X...XX.. X..XXXX. X.XXXXXX ..XX..XX ..XX..XX ..XX..XX ..XXXXXX ..XXXXXX ..XX..XX ..XX..XX ..XX..XX ..XX..XX ........ ........ endchar # GREEK ANO TELEIA char 0x0387 ........ ........ ........ ........ ........ ........ ........ ........ ........ ...XX... ..XXXX.. ..XXXX.. ...XX... ........ ........ ........ endchar # GREEK CAPITAL LETTER EPSILON WITH TONOS char 0x0388 ........ ........ X.XXXXXX X.XXXXXX X.XX.... ..XX.... ..XXXXX. ..XXXXX. ..XX.... ..XX.... ..XX.... ..XX.... ..XXXXXX ..XXXXXX ........ ........ endchar # GREEK CAPITAL LETTER ETA WITH TONOS char 0x0389 ........ ........ X.XX..XX X.XX..XX X.XX..XX ..XX..XX ..XXXXXX ..XXXXXX ..XX..XX ..XX..XX ..XX..XX ..XX..XX ..XX..XX ..XX..XX ........ ........ endchar # GREEK CAPITAL LETTER IOTA WITH TONOS char 0x038a ........ ........ X.XXXXXX X.XXXXXX X...XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ..XXXXXX ..XXXXXX ........ ........ endchar char 0x038b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # GREEK CAPITAL LETTER OMICRON WITH TONOS char 0x038c ........ ........ X..XXXX. X.XXXXXX X.XX..XX ..XX..XX ..XX..XX ..XX..XX ..XX..XX ..XX..XX ..XX..XX ..XX..XX ..XXXXXX ...XXXX. ........ ........ endchar char 0x038d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # GREEK CAPITAL LETTER UPSILON WITH TONOS char 0x038e ........ ........ X.XX..XX X.XX..XX X.XX..XX ..XX..XX ..XX..XX ...XXXX. ...XXXX. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ........ ........ endchar # GREEK CAPITAL LETTER OMEGA WITH TONOS char 0x038f ........ ........ X..XXXX. X.XXXXXX X.XX..XX ..XX..XX ..XX..XX ..XX..XX ..XXXXXX ...XXXX. ........ ........ ..XXXXXX ..XXXXXX ........ ........ endchar # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS char 0x0390 ....X... ...X.... XX..XX.. XX..XX.. ........ ..XX.... ..XX.... ..XX.... ..XX.... ..XX.... ..XX.... ..XX..X. ..XXXXX. ...XXX.. ........ ........ endchar # GREEK CAPITAL LETTER ALPHA char 0x0391 ........ ........ ...XX... ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar char 0x0392 ........ ........ .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. ........ ........ endchar # GREEK CAPITAL LETTER GAMMA char 0x0393 ........ ........ XXXXXXX. .XXXXXX. .XX...X. .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... XXXX.... ........ ........ endchar # GREEK CAPITAL LETTER DELTA char 0x0394 ........ ........ ...XX... ...XX... ..XXXX.. ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. ........ ........ endchar # GREEK CAPITAL LETTER EPSILON char 0x0395 ........ ........ .XXXXXX. .XXXXXX. .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # GREEK CAPITAL LETTER ZETA char 0x0396 ........ ........ .XXXXXX. .XXXXXX. ....XX.. ....XX.. ...XX... ...XX... ..XX.... ..XX.... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # GREEK CAPITAL LETTER ETA char 0x0397 ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # GREEK CAPITAL LETTER THETA char 0x0398 ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .X....X. .X....X. .XXXXXX. .X....X. .X....X. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ ........ endchar # GREEK CAPITAL LETTER IOTA char 0x0399 ........ ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ........ ........ endchar # GREEK CAPITAL LETTER KAPPA char 0x039a ........ ........ .XX..XX. .XX..XX. .XX.XX.. .XX.XX.. .XXXX... .XXXX... .XX.XX.. .XX.XX.. .XX..XX. .XX..XX. .XX...XX .XX...XX ........ ........ endchar # GREEK CAPITAL LETTER LAMDA char 0x039b ........ ........ ...XX... ...XX... ..XXXX.. ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # GREEK CAPITAL LETTER MU char 0x039c ........ ........ .XX...XX .XX...XX .XXX.XXX .XXXXXXX .XXXXXXX .XX.X.XX .XX.X.XX .XX...XX .XX...XX .XX...XX .XX...XX .XX...XX ........ ........ endchar # GREEK CAPITAL LETTER NU char 0x039d ........ ........ .XX..XX. .XX..XX. .XX..XX. .XXX.XX. .XXX.XX. .XXXXXX. .XXXXXX. .XX.XXX. .XX.XXX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # GREEK CAPITAL LETTER XI char 0x039e ........ ........ .XXXXXX. .XXXXXX. ........ ........ ........ ..XXXX.. ..XXXX.. ........ ........ ........ .XXXXXX. .XXXXXX. ........ ........ endchar # GREEK CAPITAL LETTER OMICRON char 0x039f ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # GREEK CAPITAL LETTER PI char 0x03a0 ........ ........ .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # GREEK CAPITAL LETTER RHO char 0x03a1 ........ ........ .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. .XX..... .XX..... .XX..... .XX..... ........ ........ endchar char 0x03a2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # GREEK CAPITAL LETTER SIGMA char 0x03a3 ........ ........ XXXXXXX. XXXXXXX. .XX..... ..XX.... ...XX... ....XX.. ....XX.. ...XX... ..XX.... .XX..... XXXXXXX. XXXXXXX. ........ ........ endchar # GREEK CAPITAL LETTER TAU char 0x03a4 ........ ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # GREEK CAPITAL LETTER UPSILON char 0x03a5 ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # GREEK CAPITAL LETTER PHI char 0x03a6 ........ .XXXXX.. ...X.... ...X.... .XXXXX.. XX...XX. X.....X. X.....X. X.....X. X.....X. XX...XX. .XXXXX.. ...X.... ...X.... .XXXXX.. ........ endchar # GREEK CAPITAL LETTER CHI char 0x03a7 ........ ........ .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ...XX... ..XXXX.. ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # GREEK CAPITAL LETTER PSI char 0x03a8 ........ ........ .XX...XX .XX...XX .XX.X.XX .XX.X.XX .XX.X.XX .XXXXXXX ..XXXXX. ...XXX.. ....X... ....X... ....X... ....X... ........ ........ endchar # GREEK CAPITAL LETTER OMEGA char 0x03a9 ........ ........ ..XXX... .XX.XX.. XX...XX. XX...XX. XX...XX. XX...XX. .XX.XX.. ..X.X... X.X.X.X. XXX.XXX. .XX.XX.. ........ ........ ........ endchar # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA char 0x03aa .XX..XX. ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ........ ........ endchar # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA char 0x03ab .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # GREEK SMALL LETTER ALPHA WITH TONOS char 0x03ac ........ .....XX. ....XX.. ...XX... ........ ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXXX ..XXXXXX ........ ........ endchar # GREEK SMALL LETTER EPSILON WITH TONOS char 0x03ad ........ .....XX. ....XX.. ...XX... ........ ..XXXXX. .XXXXXX. .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # GREEK SMALL LETTER ETA WITH TONOS char 0x03ae ........ .....XX. ....XX.. ...XX... ........ XXXXXX.. XXXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # GREEK SMALL LETTER IOTA WITH TONOS char 0x03af ........ ....XX.. ...XX... ..XX.... ........ ..XX.... ..XX.... ..XX.... ..XX.... ..XX.... ..XX.... ..XX..X. ..XXXXX. ...XXX.. ........ ........ endchar # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS char 0x03b0 ........ .......X .XX..XX. .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # GREEK SMALL LETTER ALPHA char 0x03b1 ........ ........ ........ ........ .XX...X. XXXX.XX. XX.XXX.. X...X... X...X... XX.XXX.. XXXX.XX. .XX...X. ........ ........ ........ ........ endchar # GREEK SMALL LETTER BETA char 0x03b2 ........ ........ ...XX... ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XXXXX.. .XX..XX. .XX..XX. .XX..XX. .XXXXX.. .XX.XX.. .XX..... .X...... ........ endchar # GREEK SMALL LETTER GAMMA char 0x03b3 ........ ........ ........ ........ ........ .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. endchar # GREEK SMALL LETTER DELTA char 0x03b4 ........ ...XXXX. ..XXXXX. ..X..... ..XX.... ...XX... ..XXXX.. .XX..XX. .X....X. .X....X. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ ........ endchar # GREEK SMALL LETTER EPSILON char 0x03b5 ........ ........ ........ ........ ........ ..XXXXX. .XXXXXX. .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XXXXXX. ..XXXXX. ........ ........ endchar # GREEK SMALL LETTER ZETA char 0x03b6 ........ ........ .XXXXXX. .XXXXXX. ...XX... ..XX.... .XX..... .XX..... .XX..... ..XX.... ...XX... ....XX.. .....XX. .....XX. ..XXXXX. ..XXXX.. endchar # GREEK SMALL LETTER ETA char 0x03b7 ........ ........ ........ ........ ........ XXXXXX.. XXXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # GREEK SMALL LETTER THETA char 0x03b8 ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXX.XX. ..XXXXX. .X.XXXX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # GREEK SMALL LETTER IOTA char 0x03b9 ........ ........ ........ ........ ........ ..XX.... ..XX.... ..XX.... ..XX.... ..XX.... ..XX.... ..XX..X. ..XXXXX. ...XXX.. ........ ........ endchar # GREEK SMALL LETTER KAPPA char 0x03ba ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX.XX.. .XXXX... .XXXX... .XX.XX.. .XX.XX.. .XX..XX. .XX..XX. ........ ........ endchar # GREEK SMALL LETTER LAMDA char 0x03bb ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .....XX. .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # GREEK SMALL LETTER MU char 0x03bc ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXXX .XX..... XX...... endchar # GREEK SMALL LETTER NU char 0x03bd ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ...XX... ........ ........ endchar # GREEK SMALL LETTER XI char 0x03be ........ ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ..XX.... ..XX.... ...XXX.. ...XXX.. ..XX.... ..XX.... ...XXX.. ...XXXX. .....XX. .....XX. endchar # GREEK SMALL LETTER OMICRON char 0x03bf ........ ........ ........ ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # GREEK SMALL LETTER PI char 0x03c0 ........ ........ ........ ........ ......X. .XXXXXX. XXXXXX.. X.X.X... ..X.X... ..X.X... ..X.X... ..X.X... ........ ........ ........ ........ endchar # GREEK SMALL LETTER RHO char 0x03c1 ........ ........ ........ ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. .XX..... .XX..... endchar # GREEK SMALL LETTER FINAL SIGMA char 0x03c2 ........ ........ ........ ........ ........ ..XXXXX. .XXXXXX. .XX..... .XX..... .XX..... .XX..... .XXXXX.. ..XXXXX. .....XX. ...XXXX. ...XXX.. endchar # GREEK SMALL LETTER SIGMA char 0x03c3 ........ ........ ........ ........ ...XXXX. ..XXX... .XX.XX.. XX...XX. XX...XX. XX...XX. XX...XX. .XX.XX.. ..XXX... ........ ........ ........ endchar # GREEK SMALL LETTER TAU char 0x03c4 ........ ........ ........ ......X. .XXXXXX. XXXXXX.. X..X.... ..XX.... ..XX.... ..XX.... ..XX.... ..X..... ........ ........ ........ ........ endchar # GREEK SMALL LETTER UPSILON char 0x03c5 ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # GREEK SMALL LETTER PHI char 0x03c6 ........ ........ ...X.... ...X.... .XXXXX.. XX.X.XX. X..X..X. X..X..X. X..X..X. X..X..X. XX.X.XX. .XXXXX.. ...X.... ...X.... ........ ........ endchar # GREEK SMALL LETTER CHI char 0x03c7 ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ..XXXX.. ..XXXX.. .XX..XX. .XX..XX. .XX..XX. endchar # GREEK SMALL LETTER PSI char 0x03c8 ........ ........ ........ ........ ........ .XX...XX .XX...XX .XX...XX .XX.X.XX .XX.X.XX .XX.X.XX .XX.X.XX ..XXXXX. ...XXX.. ....X... ....X... endchar # GREEK SMALL LETTER OMEGA char 0x03c9 ........ ........ ........ ........ ........ .XX...XX .XX...XX .XX.X.XX .XX.X.XX .XX.X.XX .XX.X.XX .XX.X.XX .XXXXXXX ..XXXXX. ........ ........ endchar # GREEK SMALL LETTER IOTA WITH DIALYTIKA char 0x03ca ........ ........ XX..XX.. XX..XX.. ........ ..XX.... ..XX.... ..XX.... ..XX.... ..XX.... ..XX.... ..XX..X. ..XXXXX. ...XXX.. ........ ........ endchar # GREEK SMALL LETTER UPSILON WITH DIALYTIKA char 0x03cb ........ ........ .XX..XX. .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # GREEK SMALL LETTER OMICRON WITH TONOS char 0x03cc ........ .....XX. ....XX.. ...XX... ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # GREEK SMALL LETTER UPSILON WITH TONOS char 0x03cd ........ .....XX. ....XX.. ...XX... ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # GREEK SMALL LETTER OMEGA WITH TONOS char 0x03ce ........ ......XX .....XX. ....XX.. ........ .XX...XX .XX...XX .XX...XX .XX.X.XX .XX.X.XX .XX.X.XX .XX.X.XX .XXXXXXX ..XXXXX. ........ ........ endchar char 0x03cf ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # GREEK BETA SYMBOL char 0x03d0 ........ ..XXX... .X...X.. .X.XX... .X...... ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # GREEK THETA SYMBOL char 0x03d1 ........ ..XXXX.. .X....X. ..XXXXXX ......X. XX...XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ...XX... ........ ........ endchar char 0x03d2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03d3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03d4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03d5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03d6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03d7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03d8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03d9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03da ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03db ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03dc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03dd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03de ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03df ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03e0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03e1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03e2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03e3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03e4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03e5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03e6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03e7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03e8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03e9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03ea ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03eb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03ec ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03ed ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03ee ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03ef ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03f0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03f1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03f2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03f3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03f4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03f5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03f6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03f7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03f8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03f9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03fa ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03fb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03fc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03fd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03fe ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x03ff ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # CYRILLIC CAPITAL LETTER IE WITH GRAVE char 0x0400 .XX..... ..XX.... ...XX... .XXXXXX. .XXXXXX. .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # CYRILLIC CAPITAL LETTER IO char 0x0401 ........ ..X..X.. ........ .XXXXXX. .XXXXXX. .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # CYRILLIC CAPITAL LETTER DJE char 0x0402 ........ ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XXXX. ...XX.X. ...XX..X ...XX.X. ...XX.X. ...XX... ........ ........ endchar # CYRILLIC CAPITAL LETTER GJE char 0x0403 ........ .....X.. .XXXXXX. .XXXXXX. .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... ........ ........ endchar # CYRILLIC CAPITAL LETTER UKRAINIAN IE char 0x0404 ........ ........ ...XXX.. ..XXXXX. .XXX..X. .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XXX..X. ..XXXXX. ...XXX.. ........ ........ endchar # CYRILLIC CAPITAL LETTER DZE char 0x0405 ........ ........ ..XXXXX. .XXXXXX. .XX..... .XX..... .XXX.... ..XXX... ...XXX.. ....XXX. .....XX. .....XX. .XXXXXX. .XXXXX.. ........ ........ endchar # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I char 0x0406 ........ ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ........ ........ endchar # CYRILLIC CAPITAL LETTER YI char 0x0407 ........ ..X..X.. .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. .XXXXXX. ........ ........ endchar # CYRILLIC CAPITAL LETTER JE char 0x0408 ........ ........ .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # CYRILLIC CAPITAL LETTER LJE char 0x0409 ........ ........ ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XXXX ....XX.X .XX.XX.X .XX.XX.X .XXXXX.X ..XXXXX. ........ ........ endchar # CYRILLIC CAPITAL LETTER NJE char 0x040a ........ ........ .X..XX.. .X..XX.. .X..XX.. .X..XX.. .X..XX.. .X..XX.. .XXXXXXX .X..XX.X .X..XX.X .X..XX.X .X..XX.X .X..XXX. ........ ........ endchar # CYRILLIC CAPITAL LETTER TSHE char 0x040b ........ ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XXXX. ...XX.X. ...XX..X ...XX.X. ...XX.X. ...XX... ........ ........ endchar # CYRILLIC CAPITAL LETTER KJE char 0x040c ....X... ...X.... XX..XX.. XX..XX.. XX.XX... XX.XX... XXXX.... XXXX.... XX.XX... XX.XX... XX..XX.. XX..XX.. XX...XX. XX...XX. ........ ........ endchar # CYRILLIC CAPITAL LETTER I WITH GRAVE char 0x040d ..X..... ...X.... .XX..XX. .XX..XX. .XX..XX. .XX.XXX. .XX.XXX. .XXXXXX. .XXXXXX. .XXX.XX. .XXX.XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC CAPITAL LETTER SHORT U char 0x040e ..X..X.. ...XX... XX....XX XX....XX .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ...XX... ..XX.... ..XX.... .XX..... XX...... ........ ........ endchar # CYRILLIC CAPITAL LETTER DZHE char 0x040f ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. ...XX... ........ endchar # CYRILLIC CAPITAL LETTER A char 0x0410 ........ ........ ...XX... ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC CAPITAL LETTER BE char 0x0411 ........ ........ .XXXXXX. .XXXXXX. .XX..... .XX..... .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. ........ ........ endchar # CYRILLIC CAPITAL LETTER VE char 0x0412 ........ ........ .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. ........ ........ endchar # CYRILLIC CAPITAL LETTER GHE char 0x0413 ........ ........ .XXXXXX. .XXXXXX. .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... ........ ........ endchar # CYRILLIC CAPITAL LETTER DE char 0x0414 ........ ........ ..XXXXX. ..XXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. XXXXXXXX XXXXXXXX XX....XX ........ endchar # CYRILLIC CAPITAL LETTER IE char 0x0415 ........ ........ .XXXXXX. .XXXXXX. .XX..... .XX..... .XX..... .XXXXX.. .XXXXX.. .XX..... .XX..... .XX..... .XXXXXX. .XXXXXX. ........ ........ endchar # CYRILLIC CAPITAL LETTER ZHE char 0x0416 ........ ........ X..XX..X .X.XX.X. .X.XX.X. .X.XX.X. .X.XX.X. .XXXXXX. .XXXXXX. .X.XX.X. .X.XX.X. .X.XX.X. .X.XX.X. X..XX..X ........ ........ endchar # CYRILLIC CAPITAL LETTER ZE char 0x0417 ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .X...XX. .....XX. ....XX.. ....XX.. .....XX. .X...XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # CYRILLIC CAPITAL LETTER I char 0x0418 ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX.XXX. .XX.XXX. .XXXXXX. .XXXXXX. .XXX.XX. .XXX.XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC CAPITAL LETTER SHORT I char 0x0419 .XX..XX. ..XXXX.. ........ .XX..XX. .XX..XX. .XX..XX. .XX.XXX. .XX.XXX. .XXXXXX. .XXX.XX. .XXX.XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC CAPITAL LETTER KA char 0x041a ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX.XX.. .XXXX... .XXXX... .XX.XX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC CAPITAL LETTER EL char 0x041b ........ ........ ..XXXXX. ..XXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .X...XX. XX...XX. XX...XX. ........ ........ endchar # CYRILLIC CAPITAL LETTER EM char 0x041c ........ ........ .XX...XX .XX...XX .XXX.XXX .XXX.XXX .XXXXXXX .XX.X.XX .XX.X.XX .XX...XX .XX...XX .XX...XX .XX...XX .XX...XX ........ ........ endchar # CYRILLIC CAPITAL LETTER EN char 0x041d ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC CAPITAL LETTER O char 0x041e ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # CYRILLIC CAPITAL LETTER PE char 0x041f ........ ........ .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC CAPITAL LETTER ER char 0x0420 ........ ........ .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. .XX..... .XX..... .XX..... .XX..... .XX..... ........ ........ endchar # CYRILLIC CAPITAL LETTER ES char 0x0421 ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX...X. .XX..... .XX..... .XX..... .XX..... .XX...X. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # CYRILLIC CAPITAL LETTER TE char 0x0422 ........ ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # CYRILLIC CAPITAL LETTER U char 0x0423 ........ ........ XX....XX XX....XX .XX..XX. .XX..XX. ..XXXX.. ..XXXX.. ...XX... ...XX... ..XX.... ..XX.... .XX..... XX...... ........ ........ endchar # CYRILLIC CAPITAL LETTER EF char 0x0424 ........ ........ ...XX... ...XX... ..XXXX.. .XXXXXX. .X.XX.X. .X.XX.X. .X.XX.X. .X.XX.X. .XXXXXX. ..XXXX.. ...XX... ...XX... ........ ........ endchar # CYRILLIC CAPITAL LETTER HA char 0x0425 ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ...XX... ...XX... ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC CAPITAL LETTER TSE char 0x0426 ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXXX .XXXXXXX ......XX ........ endchar # CYRILLIC CAPITAL LETTER CHE char 0x0427 ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. .....XX. .....XX. .....XX. .....XX. .....XX. ........ ........ endchar # CYRILLIC CAPITAL LETTER SHA char 0x0428 ........ ........ XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XXXXXXX. XXXXXXX. ........ ........ endchar # CYRILLIC CAPITAL LETTER SHCHA char 0x0429 ........ ........ XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XXXXXXXX XXXXXXXX ......XX ........ endchar # CYRILLIC CAPITAL LETTER HARD SIGN char 0x042a ........ ........ XXXX.... XXXX.... X.XX.... ..XX.... ..XX.... ..XXXXX. ..XXXXXX ..XX..XX ..XX..XX ..XX..XX ..XXXXXX ..XXXXX. ........ ........ endchar # CYRILLIC CAPITAL LETTER YERU char 0x042b ........ ........ XX...XX. XX...XX. XX...XX. XX...XX. XX...XX. XXX..XX. XXXX.XX. XX.X.XX. XX.X.XX. XX.X.XX. XXXX.XX. XXX..XX. ........ ........ endchar # CYRILLIC CAPITAL LETTER SOFT SIGN char 0x042c ........ ........ .XX..... .XX..... .XX..... .XX..... .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. ........ ........ endchar # CYRILLIC CAPITAL LETTER E char 0x042d ........ ........ .XXXX... .XXXXX.. ....XXX. .....XX. .....XX. ..XXXXX. ..XXXXX. .....XX. .....XX. ....XXX. .XXXXX.. .XXXX... ........ ........ endchar # CYRILLIC CAPITAL LETTER YU char 0x042e ........ ........ .X..XXX. .X.XXXXX .X.XX.XX .X.XX.XX .X.XX.XX .XXXX.XX .XXXX.XX .X.XX.XX .X.XX.XX .X.XX.XX .X.XXXXX .X..XXX. ........ ........ endchar # CYRILLIC CAPITAL LETTER YA char 0x042f ........ ........ ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ..XXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC SMALL LETTER A char 0x0430 ........ ........ ........ ........ ........ ..XXXX.. ..XXXXX. .....XX. ..XXXXX. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. ........ ........ endchar # CYRILLIC SMALL LETTER BE char 0x0431 ........ ........ ........ ......X. .....XX. ..XXXX.. .XXXX... .XX..... .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # CYRILLIC SMALL LETTER VE char 0x0432 ........ ........ ........ ........ ........ .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. .XXXXX.. .XX..XX. .XX..XX. .XX..XX. .XXXXX.. ........ ........ endchar # CYRILLIC SMALL LETTER GHE char 0x0433 ........ ........ ........ ........ ........ .XXXXXX. .XXXXXX. .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... ........ ........ endchar # CYRILLIC SMALL LETTER DE char 0x0434 ........ ........ ........ ........ ........ ..XXXX.. .XXXXX.. .XX.XX.. .X..XX.. .X..XX.. .X..XX.. .X..XX.. XXXXXXX. XXXXXXX. XX...XX. ........ endchar # CYRILLIC SMALL LETTER IE char 0x0435 ........ ........ ........ ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XX..... .XX...X. .XXXXXX. ..XXXX.. ........ ........ endchar # CYRILLIC SMALL LETTER ZHE char 0x0436 ........ ........ ........ ........ ........ X..XX..X .X.XX.X. .X.XX.X. .X.XX.X. .XXXXXX. .X.XX.X. .X.XX.X. .X.XX.X. X..XX..X ........ ........ endchar # CYRILLIC SMALL LETTER ZE char 0x0437 ........ ........ ........ ........ ........ ..XXXX.. .XXXXXX. .X...XX. .....XX. ...XXX.. .....XX. .X...XX. .XXXXXX. ..XXXX.. ........ ........ endchar # CYRILLIC SMALL LETTER I char 0x0438 ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX.XXX. .XXXXXX. .XXX.XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC SMALL LETTER SHORT I char 0x0439 ........ ........ .XX..XX. ..XXXX.. ........ .XX..XX. .XX..XX. .XX..XX. .XX.XXX. .XXXXXX. .XXX.XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC SMALL LETTER KA char 0x043a ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX.XX.. .XXXX... .XX.XX.. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC SMALL LETTER EL char 0x043b ........ ........ ........ ........ ........ ..XXXXX. ..XXXXX. ..X..XX. ..X..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. XX...XX. ........ ........ endchar # CYRILLIC SMALL LETTER EM char 0x043c ........ ........ ........ ........ ........ .XX...XX .XXX.XXX .XXXXXXX .XXXXXXX .XX.X.XX .XX...XX .XX...XX .XX...XX .XX...XX ........ ........ endchar # CYRILLIC SMALL LETTER EN char 0x043d ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC SMALL LETTER O char 0x043e ........ ........ ........ ........ ........ ..XXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXX.. ........ ........ endchar # CYRILLIC SMALL LETTER PE char 0x043f ........ ........ ........ ........ ........ .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC SMALL LETTER ER char 0x0440 ........ ........ ........ ........ ........ .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. .XX..... .XX..... .XX..... ........ endchar # CYRILLIC SMALL LETTER ES char 0x0441 ........ ........ ........ ........ ........ ..XXXX.. .XXXXXX. .XX...X. .XX..... .XX..... .XX..... .XX...X. .XXXXXX. ..XXXX.. ........ ........ endchar # CYRILLIC SMALL LETTER TE char 0x0442 ........ ........ ........ ........ ........ .XXXXXX. .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ endchar # CYRILLIC SMALL LETTER U char 0x0443 ........ ........ ........ ........ ........ .XX...XX .XX...XX .XX..XX. .XX..XX. ...XXX.. ...XXX.. ...XX... ...XX... ..XX.... ..XX.... ........ endchar # CYRILLIC SMALL LETTER EF char 0x0444 ........ ........ ........ ........ ........ ...XX... ...XX... ..XXXX.. .XXXXXX. .X.XX.X. .X.XX.X. .XXXXXX. ..XXXX.. ...XX... ...XX... ........ endchar # CYRILLIC SMALL LETTER HA char 0x0445 ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ...XX... ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # CYRILLIC SMALL LETTER TSE char 0x0446 ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXXX .XXXXXXX ......XX ........ endchar # CYRILLIC SMALL LETTER CHE char 0x0447 ........ ........ ........ ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ..XXXXX. .....XX. .....XX. .....XX. ........ ........ endchar # CYRILLIC SMALL LETTER SHA char 0x0448 ........ ........ ........ ........ ........ XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XXXXXXX. XXXXXXX. ........ ........ endchar # CYRILLIC SMALL LETTER SHCHA char 0x0449 ........ ........ ........ ........ ........ XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XXXXXXXX XXXXXXXX ......XX ........ endchar # CYRILLIC SMALL LETTER HARD SIGN char 0x044a ........ ........ ........ ........ ........ XXXX.... XXXX.... X.XX.... ..XXXXX. ..XXXXXX ..XX..XX ..XX..XX ..XXXXXX ..XXXXX. ........ ........ endchar # CYRILLIC SMALL LETTER YERU char 0x044b ........ ........ ........ ........ ........ XX...XX. XX...XX. XX...XX. XXX..XX. XXXX.XX. XX.X.XX. XX.X.XX. XXXX.XX. XXX..XX. ........ ........ endchar # CYRILLIC SMALL LETTER SOFT SIGN char 0x044c ........ ........ ........ ........ ........ .XX..... .XX..... .XX..... .XXXXX.. .XXXXXX. .XX..XX. .XX..XX. .XXXXXX. .XXXXX.. ........ ........ endchar # CYRILLIC SMALL LETTER E char 0x044d ........ ........ ........ ........ ........ .XXXX... .XXXXX.. ...XXXX. .....XX. .XXXXXX. .....XX. ...XXXX. .XXXXX.. .XXXX... ........ ........ endchar # CYRILLIC SMALL LETTER YU char 0x044e ........ ........ ........ ........ ........ .X..XXX. .X.XXXXX .X.XX.XX .X.XX.XX .XXXX.XX .X.XX.XX .X.XX.XX .X.XXXXX .X..XXX. ........ ........ endchar # CYRILLIC SMALL LETTER YA char 0x044f ........ ........ ........ ........ ........ ..XXXXX. .XX..XX. .XX..XX. ..XXXXX. ..XX.XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar char 0x0450 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0451 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0452 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0453 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0454 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0455 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0456 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0457 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0458 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0459 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x045a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x045b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x045c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x045d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x045e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x045f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0460 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0461 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0462 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0463 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0464 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0465 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0466 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0467 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0468 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0469 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x046a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x046b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x046c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x046d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x046e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x046f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0470 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0471 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0472 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0473 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0474 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0475 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0476 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0477 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0478 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0479 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x047a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x047b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x047c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x047d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x047e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x047f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0480 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0481 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0482 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0483 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0484 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0485 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0486 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0487 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0488 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0489 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x048a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x048b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x048c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x048d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x048e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x048f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0490 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0491 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0492 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0493 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0494 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0495 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0496 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0497 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0498 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0499 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x049a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x049b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x049c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x049d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x049e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x049f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04a0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04a1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04a2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04a3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04a4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04a5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04a6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04a7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04a8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04a9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04aa ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04ab ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04ac ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04ad ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04ae ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04af ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04b0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04b1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04b2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04b3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04b4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04b5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04b6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04b7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04b8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04b9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04ba ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04bb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04bc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04bd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04be ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04bf ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04c0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04c1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04c2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04c3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04c4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04c5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04c6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04c7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04c8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04c9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04ca ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04cb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04cc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04cd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04ce ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04cf ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04d0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04d1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04d2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04d3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04d4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04d5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04d6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04d7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04d8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04d9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04da ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04db ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04dc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04dd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04de ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04df ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04e0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04e1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04e2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04e3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04e4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04e5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04e6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04e7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04e8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04e9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04ea ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04eb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04ec ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04ed ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04ee ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04ef ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04f0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04f1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04f2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04f3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04f4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04f5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04f6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04f7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04f8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04f9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04fa ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04fb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04fc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04fd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04fe ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x04ff ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0500 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0501 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0502 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0503 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0504 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0505 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0506 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0507 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0508 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0509 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x050a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x050b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x050c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x050d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x050e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x050f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0510 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0511 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0512 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0513 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0514 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0515 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0516 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0517 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0518 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0519 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x051a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x051b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x051c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x051d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x051e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x051f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0520 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0521 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0522 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0523 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0524 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0525 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0526 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0527 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0528 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0529 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x052a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x052b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x052c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x052d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x052e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x052f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0530 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0531 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0532 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0533 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0534 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0535 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0536 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0537 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0538 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0539 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x053a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x053b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x053c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x053d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x053e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x053f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0540 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0541 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0542 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0543 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0544 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0545 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0546 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0547 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0548 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0549 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x054a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x054b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x054c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x054d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x054e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x054f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0550 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0551 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0552 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0553 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0554 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0555 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0556 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0557 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0558 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0559 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x055a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x055b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x055c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x055d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x055e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x055f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0560 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0561 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0562 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0563 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0564 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0565 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0566 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0567 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0568 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0569 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x056a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x056b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x056c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x056d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x056e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x056f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0570 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0571 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0572 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0573 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0574 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0575 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0576 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0577 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0578 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0579 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x057a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x057b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x057c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x057d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x057e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x057f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0580 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0581 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0582 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0583 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0584 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0585 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0586 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0587 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0588 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0589 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x058a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x058b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x058c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x058d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x058e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x058f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0590 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0591 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0592 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0593 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0594 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0595 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0596 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0597 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0598 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0599 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x059a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x059b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x059c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x059d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x059e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x059f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05a0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05a1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05a2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05a3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05a4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05a5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05a6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05a7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05a8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05a9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05aa ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05ab ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05ac ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05ad ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05ae ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05af ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05b0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05b1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05b2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05b3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05b4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05b5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05b6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05b7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05b8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05b9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05ba ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05bb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05bc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05bd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05be ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05bf ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05c0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05c1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05c2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05c3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05c4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05c5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05c6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05c7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05c8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05c9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05ca ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05cb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05cc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05cd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05ce ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05cf ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # HEBREW LETTER ALEF char 0x05d0 ........ ........ .XX..XX. .XXX.XX. .XXX.XX. ..XXXXX. ..XXXX.. ..XXXX.. .XX.XXX. .XX.XXX. .XX..XX. .XX...X. ........ ........ ........ ........ endchar # HEBREW LETTER BET char 0x05d1 ........ ........ .XXXXX.. .XXXXX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. .XXXXXX. .XXXXXX. ........ ........ ........ ........ endchar # HEBREW LETTER GIMEL char 0x05d2 ........ ........ ...XXXX. ...XXXX. .....XX. .....XX. ....XXX. ...XXXX. ..XX.XX. ..XX.XX. ..XX.XX. ..XX.XX. ........ ........ ........ ........ endchar # HEBREW LETTER DALET char 0x05d3 ........ ........ .XXXXXX. .XXXXXX. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ........ ........ ........ ........ endchar # HEBREW LETTER HE char 0x05d4 ........ ........ .XXXXXX. .XXXXXX. .....XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ ........ ........ endchar # HEBREW LETTER VAV char 0x05d5 ........ ........ ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ ........ ........ endchar # HEBREW LETTER ZAYIN char 0x05d6 ........ ........ ...XXXX. ...XXXX. .....X.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. .....X.. ........ ........ ........ ........ endchar # HEBREW LETTER HET char 0x05d7 ........ ........ .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ ........ ........ endchar # HEBREW LETTER TET char 0x05d8 ........ ........ .XX.XXX. .XX.XXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XXXXXX. ........ ........ ........ ........ endchar # HEBREW LETTER YOD char 0x05d9 ........ ........ ..XXXX.. ..XXXX.. ....XX.. ....XX.. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # HEBREW LETTER FINAL KAF char 0x05da ........ ........ .XXXXXX. .XXXXXX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. ........ ........ endchar # HEBREW LETTER KAF char 0x05db ........ ........ ..XXXX.. ..XXXXX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. ..XXXXX. ..XXXX.. ........ ........ ........ ........ endchar # HEBREW LETTER LAMED char 0x05dc .XX..... .XX..... .XXXXXX. .XXXXXX. .....XX. .....XX. .....XX. ....XXX. ...XXX.. ..XX.... ..XX.... ..XX.... ........ ........ ........ ........ endchar # HEBREW LETTER FINAL MEM char 0x05dd ........ ........ .XXXXXX. ..XXXXX. ..XX.XX. ..XX.XX. ..XX.XX. ..XX.XX. ..XX.XX. ..XX.XX. ..XXXXX. ..XXXXX. ........ ........ ........ ........ endchar # HEBREW LETTER MEM char 0x05de ........ ........ .XX.XX.. .XX.XXX. ..XXXXX. ..XX.XX. .XX..XX. .XX..XX. .XX..XX. .XX.XXX. .XX.XXX. .XX.XXX. ........ ........ ........ ........ endchar # HEBREW LETTER FINAL NUN char 0x05df ........ ........ ..XXX... ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ ........ endchar char 0x05e0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # HEBREW LETTER SAMEKH char 0x05e1 ........ ........ XXXXXXX. XXXXXXX. XXXXXXX. XX...XX. XX...XX. XX...XX. XX...XX. XX...XX. XXXXXXX. .XXXXX.. ........ ........ ........ ........ endchar # HEBREW LETTER AYIN char 0x05e2 ........ ........ ..XX.XX. ..XX.XX. ..XX.XX. ..XX.XX. ..XX.XX. ..XX.XX. ..XX.XX. ..XX.XX. .XXXXXX. .XXXXXX. ........ ........ ........ ........ endchar # HEBREW LETTER FINAL PE char 0x05e3 ........ ........ .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XXX.XX. .XXX.XX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. ........ ........ endchar # HEBREW LETTER PE char 0x05e4 ........ ........ .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XXX.XX. .XXX.XX. .....XX. .XXXXXX. .XXXXXX. .XXXXXX. ........ ........ ........ ........ endchar # HEBREW LETTER FINAL TSADI char 0x05e5 ........ ........ .XX.XXX. .XX.XXX. .XX..XX. .XXX.XX. ..XXXXX. ....XXX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. ........ ........ endchar # HEBREW LETTER TSADI char 0x05e6 ........ ........ .XX.XXX. .XX.XXX. .XX..XX. ..XX.XX. ..XXXXX. ...XX... ...XXX.. ....XXX. .XXXXXX. .XXXXXX. ........ ........ ........ ........ endchar # HEBREW LETTER QOF char 0x05e7 ........ ........ ..XXXXX. ..XXXXX. ..XXXXX. .....XX. .....XX. ..XX.XX. ..XX.XX. ..XX.XX. ..XX.XX. ..XX.XX. ..XX.... ..XX.... ..XX.... ........ endchar # HEBREW LETTER RESH char 0x05e8 ........ ........ .XXXXX.. .XXXXXX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. .....XX. ........ ........ ........ ........ endchar # HEBREW LETTER SHIN char 0x05e9 ........ ........ XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XXXX.XX. XXXX.XX. XX...XX. XX...XX. XXXXXXX. XXXXXXX. ........ ........ ........ ........ endchar # HEBREW LETTER TAV char 0x05ea ........ ........ .XXXXXX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. XXX..XX. XXX..XX. ........ ........ ........ ........ endchar char 0x05eb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05ec ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05ed ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05ee ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05ef ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05f0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05f1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05f2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05f3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05f4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05f5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05f6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05f7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05f8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05f9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05fa ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05fb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05fc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05fd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05fe ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x05ff ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # 0x0600 left half of normal radio button char 0x0600 ........ ......XX ....XX.. ...X.... ..X..... ..X..... .X...... .X...... .X...... .X...... ..X..... ..X..... ...X.... ....XX.. ......XX ........ endchar # 0x0601 right half of normal radio button char 0x0601 ........ XX...... ..XX.... ....X... .....X.. .....X.. ......X. ......X. ......X. ......X. .....X.. .....X.. ....X... ..XX.... XX...... ........ endchar # 0x0602 left half of selected radio button char 0x0602 ........ ......XX ....XX.. ...X.... ..X...XX ..X..XXX .X..XXXX .X..XXXX .X..XXXX .X..XXXX ..X..XXX ..X...XX ...X.... ....XX.. ......XX ........ endchar # 0x0603 right half of selected radio button char 0x0603 ........ XX...... ..XX.... ....X... XX...X.. XXX..X.. XXXX..X. XXXX..X. XXXX..X. XXXX..X. XXX..X.. XX...X.. ....X... ..XX.... XX...... ........ endchar # 0x0604 left half of normal checkbox char 0x0604 ........ .XXXXXXX .X...... .X...... .X...... .X...... .X...... .X...... .X...... .X...... .X...... .X...... .X...... .X...... .XXXXXXX ........ endchar # 0x0605 right half of normal checkbox char 0x0605 ........ XXXXXXX. ......X. ......X. ......X. ......X. ......X. ......X. ......X. ......X. ......X. ......X. ......X. ......X. XXXXXXX. ........ endchar # 0x0606 left half of selected checkbox char 0x0606 ........ .XXXXXXX .X...... .X.XX... .X.XXX.. .X..XXX. .X...XXX .X....XX .X....XX .X...XXX .X..XXX. .X.XXX.. .X.XX... .X...... .XXXXXXX ........ endchar # 0x0607 right half of selected checkbox char 0x0607 ........ XXXXXXX. ......X. ...XX.X. ..XXX.X. .XXX..X. XXX...X. XX....X. XX....X. XXX...X. .XXX..X. ..XXX.X. ...XX.X. ......X. XXXXXXX. ........ endchar char 0x062a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x062b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x062c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x062d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x062e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x062f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0630 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0631 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0632 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0633 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0634 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0635 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0636 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0637 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0638 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0639 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x063a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x063b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x063c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x063d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x063e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x063f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0640 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0641 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0642 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0643 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0644 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0645 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0646 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0647 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0648 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0649 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x064a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x064b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x064c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x064d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x064e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x064f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0650 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0651 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0652 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0653 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0654 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0655 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0656 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0657 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0658 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0659 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x065a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x065b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x065c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x065d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x065e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x065f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0660 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0661 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0662 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0663 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0664 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0665 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0666 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0667 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0668 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0669 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x066a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x066b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x066c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x066d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x066e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x066f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0670 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0671 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0672 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0673 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0674 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0675 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0676 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0677 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0678 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0679 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x067a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x067b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x067c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x067d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x067e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x067f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0680 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0681 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0682 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0683 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0684 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0685 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0686 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0687 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0688 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0689 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x068a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x068b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x068c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x068d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x068e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x068f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0690 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0691 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0692 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0693 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0694 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0695 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0696 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0697 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0698 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0699 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x069a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x069b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x069c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x069d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x069e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x069f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06a0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06a1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06a2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06a3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06a4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06a5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06a6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06a7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06a8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06a9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06aa ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06ab ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06ac ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06ad ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06ae ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06af ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06b0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06b1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06b2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06b3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06b4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06b5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06b6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06b7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06b8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06b9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06ba ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06bb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06bc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06bd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06be ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06bf ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06c0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06c1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06c2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06c3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06c4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06c5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06c6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06c7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06c8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06c9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06ca ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06cb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06cc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06cd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06ce ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06cf ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06d0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06d1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06d2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06d3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06d4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06d5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06d6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06d7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06d8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06d9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06da ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06db ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06dc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06dd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06de ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06df ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06e0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06e1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06e2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06e3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06e4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06e5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06e6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06e7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06e8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06e9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06ea ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06eb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06ec ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06ed ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06ee ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06ef ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06f0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06f1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06f2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06f3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06f4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06f5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06f6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06f7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06f8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06f9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06fa ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06fb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06fc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06fd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x06fe ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # 0xfffd REPLACEMENT CHARACTER char 0x06ff ........ ...X.... ..XXX... .XXXXX.. XXX..XX. XX.XX.X. XXXXX.X. XXXX.XX. XXX.XXX. XXXXXXX. XXX.XXX. .XXXXX.. ..XXX... ...X.... ........ ........ endchar char 0x0700 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0701 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0702 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0703 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0704 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0705 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0706 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0707 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0708 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0709 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x070a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x070b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x070c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x070d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x070e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x070f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0710 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0711 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0712 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0713 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0714 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0715 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0716 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0717 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0718 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0719 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x071a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x071b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x071c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x071d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x071e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x071f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0720 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0721 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0722 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0723 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0724 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0725 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0726 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0727 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0728 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0729 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x072a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x072b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x072c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x072d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x072e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x072f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0730 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0731 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0732 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0733 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0734 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0735 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0736 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0737 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0738 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0739 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x073a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x073b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x073c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x073d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x073e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x073f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0740 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0741 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0742 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0743 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0744 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0745 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0746 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0747 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0748 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0749 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x074a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x074b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x074c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x074d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x074e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x074f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0750 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0751 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0752 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0753 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0754 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0755 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0756 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0757 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0758 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0759 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x075a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x075b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x075c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x075d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x075e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x075f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0760 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0761 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0762 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0763 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0764 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0765 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0766 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0767 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0768 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0769 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x076a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x076b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x076c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x076d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x076e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x076f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0770 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0771 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0772 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0773 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0774 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0775 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0776 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0777 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0778 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0779 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x077a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x077b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x077c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x077d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x077e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x077f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0780 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0781 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0782 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0783 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0784 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0785 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0786 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0787 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0788 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0789 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x078a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x078b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x078c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x078d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x078e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x078f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0790 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0791 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0792 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0793 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0794 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0795 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0796 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0797 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0798 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x0799 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x079a ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x079b ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x079c ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x079d ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x079e ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x079f ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07a0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07a1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07a2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07a3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07a4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07a5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07a6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07a7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07a8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07a9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07aa ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07ab ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07ac ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07ad ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07ae ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07af ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07b0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07b1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07b2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07b3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07b4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07b5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07b6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07b7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07b8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07b9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07ba ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07bb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07bc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07bd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07be ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07bf ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07c0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07c1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07c2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07c3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07c4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07c5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07c6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07c7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07c8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07c9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07ca ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07cb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07cc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07cd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07ce ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07cf ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07d0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07d1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07d2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07d3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07d4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07d5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07d6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07d7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07d8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07d9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07da ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07db ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07dc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07dd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07de ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07df ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07e0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07e1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07e2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07e3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07e4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07e5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07e6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07e7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07e8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07e9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07ea ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07eb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07ec ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07ed ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07ee ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07ef ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07f0 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07f1 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07f2 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07f3 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07f4 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07f5 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07f6 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07f7 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07f8 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07f9 ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07fa ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07fb ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07fc ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x07fd ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # DAGGER char 0x2020 ........ ...X.... .XXXXX.. ...X.... ...X.... ...X.... ...X.... ...X.... ........ ........ ........ ........ ........ ........ ........ ........ endchar # BULLET char 0x2022 ........ ..XXX... .XXXXX.. .XXXXX.. .XXXXX.. ..XXX... ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # TWO DOT LEADER char 0x2025 ........ ........ ........ ........ ........ ........ ..XX.XX. ..XX.XX. ........ ........ ........ ........ ........ ........ ........ ........ endchar # CARET char 0x2038 ........ ........ ........ ........ ........ ...X.... ...X.... ..XXX... ..XXX... .XX.XX.. .XX.XX.. XX...XX. XX...XX. ........ ........ ........ endchar # SUPERSCRIPT ZERO char 0x2070 ........ ........ ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ ........ ........ ........ ........ ........ ........ ........ endchar # SUPERSCRIPT LATIN SMALL LETTER N char 0x207f ........ ........ ..XX.... .XXXX... .X..X... .X..X... .X..X... .X..X... ........ ........ ........ ........ ........ ........ ........ ........ endchar # EURO SIGN char 0x20ac ........ ........ ...XXX.. ..XXXXX. .XX..XX. .XX..... XXXXXX.. .XX..... XXXXX... .XX..... .XX..... .XX..XX. ..XXXXX. ...XXX.. ........ ........ endchar # NUMERO SIGN char 0x2116 ........ ........ X..XXXXX X..XXXXX X..XX... X.XXX... X.XXX.XX X.X.X.XX X.X.X.XX XXX.X... XXX.X... XX..X.XX XX..X... XX..X... ........ ........ endchar # TRADE MARK SIGN char 0x2122 XXXX...X .X.XX.XX .X.XXXXX .X.X.X.X .X.X...X ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # VULGAR FRACTION ONE THIRD char 0x2153 ........ .XX..... ..X..... ..X..... ..X...XX ..X..XX. ..X.XX.. ...XX... ..XX.... .XX.XXX. XX.X..XX .....XX. .....XX. ...X..XX ....XXX. ........ endchar # LEFTWARDS WHITE ARROW char 0x21e6 ........ ........ ....XX.. ...XXX.. ..XX.X.. .XX..XXX XX.....X XX.....X .XX..XXX ..XX.X.. ...XXX.. ....XX.. ........ ........ ........ ........ endchar # UPWARDS WHITE ARROW char 0x21e7 ........ ........ ........ ...XX... ..XXXX.. .XX..XX. XX....XX X......X XXX..XXX ..X..X.. ..X..X.. ..X..X.. ..XXXX.. ........ ........ ........ endchar # RIGHTWARDS WHITE ARROW char 0x21e8 ........ ........ ..XX.... ..XXX... ..X.XX.. XXX..XX. X.....XX X.....XX XXX..XX. ..X.XX.. ..XXX... ..XX.... ........ ........ ........ ........ endchar # DOWNWARDS WHITE ARROW char 0x21e9 ........ ........ ........ ..XXXX.. ..X..X.. ..X..X.. ..X..X.. XXX..XXX X......X XX....XX .XX..XX. ..XXXX.. ...XX... ........ ........ ........ endchar # ELEMENT OF char 0x2208 ........ ........ ..XXXXX. .XXXXXX. XXX..... XX...... XX...... XXXXXX.. XXXXXX.. XX...... XX...... XXX..... .XXXXXX. ..XXXXX. ........ ........ endchar # BULLET OPERATOR char 0x2219 ........ ..XXX... .XXXXX.. .XXXXX.. .XXXXX.. ..XXX... ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ endchar # SQUARE ROOT char 0x221a ........ ........ ........ ........ ........ ...XXXXX ...X.... XX.X.... XX.X.... .X.X.... .XXX.... ..X..... ........ ........ ........ ........ endchar # INFINITY char 0x221e ........ ........ ........ ........ .XX..XX. XXXX.XXX X..XX..X X..XX..X XXX.XXXX .XX..XX. ........ ........ ........ ........ ........ ........ endchar # LOGICAL AND char 0x2227 ........ ........ ........ ........ ........ ...X.... ...X.... ..XXX... ..XXX... .XX.XX.. .XX.XX.. XX...XX. XX...XX. ........ ........ ........ endchar # INTERSECTION char 0x2229 ........ ........ .XXXXX.. XXXXXXX. XX...XX. XX...XX. XX...XX. XX...XX. XX...XX. XX...XX. XX...XX. XX...XX. XX...XX. XX...XX. ........ ........ endchar # CONTOUR INTEGRAL char 0x222e ........ ....XXX. ...XXXX. ...X.... .XXXXX.. XX.X.XX. X..X..X. X..X..X. X..X..X. X..X..X. XX.X.XX. .XXXXX.. ...X.... XXXX.... XXX..... ........ endchar # ALMOST EQUAL TO char 0x2248 ........ ........ ........ ......X. ..XXXXX. .XXXXX.. .X...... ......X. ..XXXXX. .XXXXX.. .X...... ........ ........ ........ ........ ........ endchar # IDENTICAL TO char 0x2261 ........ ........ ........ ........ .XXXXXX. .XXXXXX. ........ .XXXXXX. .XXXXXX. ........ .XXXXXX. .XXXXXX. ........ ........ ........ ........ endchar # LESS-THAN OR EQUAL TO char 0x2264 ........ ........ .....XX. ....XXX. ...XXX.. ..XXX... .XXX.... ..XXX... ...XXX.. ....XXX. .....XX. ........ .XXXXXX. .XXXXXX. ........ ........ endchar # GREATER-THAN OR EQUAL TO char 0x2265 ........ ........ .XX..... .XXX.... ..XXX... ...XXX.. ....XXX. ...XXX.. ..XXX... .XXX.... .XX..... ........ .XXXXXX. .XXXXXX. ........ ........ endchar # REVERSED NOT SIGN char 0x2310 ........ ........ ........ ........ ........ ........ ........ ........ ........ .XXXXXX. .XXXXXX. .XX..... .XX..... .XX..... ........ ........ endchar # WATCH char 0x231a ........ ........ ........ ..XXXX.. .XX..XX. XX....XX X..X...X X..X...X X..XXX.X X......X XX....XX .XX..XX. ..XXXX.. ........ ........ ........ endchar # TOP HALF INTEGRAL char 0x2320 ........ ........ ....XXX. ...XX..X ...XX.XX ...XX.XX ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... endchar # BOTTOM HALF INTEGRAL char 0x2321 ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... XX.XX... XX.XX... X..XX... .XXX.... ........ ........ endchar # BELL SYMBOL char 0x237e ........ ........ ........ ........ ...XX... ..XXXX.. ..XXXX.. ..XXXX.. ..XXXX.. ..XXXX.. .XXXXXX. XXXXXXXX ...X.... ..XXX... ...X.... ........ endchar # SYMBOL FOR FORM FEED char 0x240c ........ ........ .XXXX... .X...... .XXX.... .X...... .X...... ........ ...XXXX. ...X.... ...XXX.. ...X.... ...X.... ........ ........ ........ endchar # SYMBOL FOR CARRIAGE RETURN char 0x240d ........ ........ ..XXX... .X...... .X...... .X...... ..XXX... ........ ...XXX.. ...X..X. ...XXX.. ...X.X.. ...X..X. ........ ........ ........ endchar # SYMBOL FOR ESCAPE char 0x241b ........ ........ .XXXX... .X...... .XXX.... .X...... .XXXX... ........ ....XXX. ...X.... ....XX.. ......X. ...XXX.. ........ ........ ........ endchar # CIRCLED DIGIT ONE char 0x2460 ........ ........ ......X. .....XX. .....XX. .....XX. ......X. ........ ......X. .....XX. .....XX. .....XX. ......X. ........ ........ ........ endchar # CIRCLED DIGIT TWO char 0x2461 ........ .XXXXX.. ..XXX.X. .....XX. .....XX. .....XX. ..XXX.X. .XXXXX.. X.XXX... XX...... XX...... XX...... X.XXX... .XXXXX.. ........ ........ endchar # CIRCLED DIGIT THREE char 0x2462 ........ .XXXXX.. ..XXX.X. .....XX. .....XX. .....XX. ..XXX.X. .XXXXX.. ..XXX.X. .....XX. .....XX. .....XX. ..XXX.X. .XXXXX.. ........ ........ endchar # CIRCLED DIGIT FOUR char 0x2463 ........ ........ X.....X. XX...XX. XX...XX. XX...XX. X.XXX.X. .XXXXX.. ..XXX.X. .....XX. .....XX. .....XX. ......X. ........ ........ ........ endchar # CIRCLED DIGIT FIVE char 0x2464 ........ .XXXXX.. X.XXX... XX...... XX...... XX...... X.XXX... .XXXXX.. ..XXX.X. .....XX. .....XX. .....XX. ..XXX.X. .XXXXX.. ........ ........ endchar # CIRCLED DIGIT SIX char 0x2465 ........ .XXXXX.. X.XXX... XX...... XX...... XX...... X.XXX... .XXXXX.. X.XXX.X. XX...XX. XX...XX. XX...XX. X.XXX.X. .XXXXX.. ........ ........ endchar # CIRCLED DIGIT SEVEN char 0x2466 ........ .XXXXX.. X.XXX.X. XX...XX. XX...XX. XX...XX. X.....X. ........ ......X. .....XX. .....XX. .....XX. ......X. ........ ........ ........ endchar # CIRCLED DIGIT EIGHT char 0x2467 ........ .XXXXX.. X.XXX.X. XX...XX. XX...XX. XX...XX. X.XXX.X. .XXXXX.. X.XXX.X. XX...XX. XX...XX. XX...XX. X.XXX.X. .XXXXX.. ........ ........ endchar # CIRCLED DIGIT NINE char 0x2468 ........ .XXXXX.. X.XXX.X. XX...XX. XX...XX. XX...XX. X.XXX.X. .XXXXX.. ..XXX.X. .....XX. .....XX. .....XX. ..XXX.X. .XXXXX.. ........ ........ endchar # CIRCLED DIGIT ZERO char 0x24ea ........ .XXXXX.. X.XXX.X. XX...XX. XX...XX. XX...XX. X.....X. ........ X.....X. XX...XX. XX...XX. XX...XX. X.XXX.X. .XXXXX.. ........ ........ endchar # BLACK SQUARE char 0x25a0 ........ ........ ........ ........ ........ ..XXXX.. ..XXXX.. ..XXXX.. ..XXXX.. ..XXXX.. ........ ........ ........ ........ ........ ........ endchar # BALLOT BOX char 0x2610 ........ ........ .XXXXX.. ..XXX... X.XXX.X. X..X..X. XX.X.XX. XX...XX. XX.X.XX. X..X..X. X.XXX.X. ..XXX... .XXXXX.. ........ ........ ........ endchar # BALLOT BOX WITH CHECK char 0x2611 ........ ........ XXXXXXX. XXXXXXX. XXXXXXX. XXXXXX.. XXXXXX.. XXXXX... XXXXX.X. XXXX..X. XXXX.XX. XXX..XX. XXX.XXX. ........ ........ ........ endchar # BALLOT BOX WITH X char 0x2612 ........ ........ XXX.XXX. XX...XX. XX.X.XX. X..X..X. X.XXX.X. ..XXX... X.XXX.X. X..X..X. XX.X.XX. XX...XX. XXX.XXX. ........ ........ ........ endchar # EIGHTH NOTE char 0x266a ........ ........ ....X... ....XXX. ....XXXX ....X..X ....X... ....X... .XXXX... XXXXX... .XXX.... ........ ........ ........ ........ ........ endchar # CHECK MARK char 0x2713 ........ ........ .......X .......X ......XX ......XX .....XX. .....XX. X...XX.. X...XX.. XX.XX... .X.XX... .XXX.... ..XX.... ..X..... ........ endchar endfont aranym-1.1.0/src/gui-sdl/aranym09.txt0000664000175000017500000061211113454637621015537 0ustar joyjoyGDOSFONT version 1.0 font_id 1 point 9 name "8x8 system font" first_ade 0 last_ade 0x27ff top 6 ascent 6 half 4 descent 1 bottom 1 max_char_width 7 max_cell_width 8 left_offset 1 right_offset 3 thicken 1 ul_size 1 lighten 0x5555 skew 0x5555 flags 0x0d form_height 8 # NULL char 0x00 ........ ........ ........ ........ ........ ........ ........ ........ endchar # UPWARDS WHITE ARROW char 0x01 ...XX... ..XXXX.. .XX..XX. XX....XX XXX..XXX ..X..X.. ..X..X.. ..XXXX.. endchar # DOWNWARDS WHITE ARROW char 0x02 ..XXXX.. ..X..X.. ..X..X.. XXX..XXX XX....XX .XX..XX. ..XXXX.. ...XX... endchar # RIGHTWARDS WHITE ARROW char 0x03 ...XX... ...XXX.. XXXX.XX. X.....XX X.....XX XXXX.XX. ...XXX.. ...XX... endchar # LEFTWARDS WHITE ARROW char 0x04 ...XX... ..XXX... .XX.XXXX XX.....X XX.....X .XX.XXXX ..XXX... ...XX... endchar # BALLOT BOX (used for folder) char 0x05 ..XXXX.. X..XX..X XX....XX XXX..XXX XX....XX X..XX..X ..XXXX.. ........ endchar # BALLOT BOX WITH CHECK char 0x06 XXXXXXXX XXXXXXXX XXXXXXX. XXXXXX.. XXXXX..X XXXX..XX XXX..XXX ........ endchar # BALLOT BOX WITH X char 0x07 XXX..XXX XX....XX X..XX..X ..XXXX.. X..XX..X XX....XX XXX..XXX ........ endchar # CHECK MARK char 0x08 .......X ......XX .....XX. X...XX.. XX.XX... .XXX.... ..X..... ........ endchar # WATCH char 0x09 .XXXXXX. XX....XX XX.X..XX XX.X..XX XX.XX.XX XX....XX XX....XX .XXXXXX. endchar # BELL SYMBOL char 0x0a ...XX... ..XXXX.. ..XXXX.. ..XXXX.. .XXXXXX. ...X.... ..XXX... ...X.... endchar # EIGHTH NOTE char 0x0b ...XX... ...XXX.. ...X.XX. ...X.... ...X.... .XXX.... XXXX.... .XX..... endchar # SYMBOL FOR FORM FEED char 0x0c XXXX.... XX...... XXXXXXX. XX.XX... XX.XXXX. ...XX... ...XX... ........ endchar # SYMBOL FOR CARRIAGE RETURN char 0x0d XXXX.... XX...... XX.XXXXX XX.XX.XX XXXXXXXX ...XXXX. ...XX.XX ........ endchar # MOUNTAIN (left half of Atari symbol) char 0x0e .....X.X .....X.X .....X.X ....XX.X ....XX.X ...XX..X .XXXX..X .XXX...X endchar # UMBRELLA ON GROUND (right half of Atari symbol) char 0x0f X.X..... X.X..... X.X..... X.XX.... X.XX.... X..XX... X..XXXX. X...XXX. endchar # CIRCLED DIGIT ZERO char 0x10 .XXXXX.. XX...XX. XX...XX. ........ XX...XX. XX...XX. .XXXXX.. ........ endchar # CIRCLED DIGIT ONE char 0x11 .....XX. .....XX. .....XX. ........ .....XX. .....XX. .....XX. ........ endchar # CIRCLED DIGIT TWO char 0x12 .XXXXX.. .....XX. .....XX. .XXXXX.. XX...... XX...... .XXXXX.. ........ endchar # CIRCLED DIGIT THREE char 0x13 .XXXXX.. .....XX. .....XX. .XXXXX.. .....XX. .....XX. .XXXXX.. ........ endchar # CIRCLED DIGIT FOUR char 0x14 XX...XX. XX...XX. XX...XX. .XXXXX.. .....XX. .....XX. .....XX. ........ endchar # CIRCLED DIGIT FIVE char 0x15 .XXXXX.. XX...... XX...... .XXXXX.. .....XX. .....XX. .XXXXX.. ........ endchar # CIRCLED DIGIT SIX char 0x16 .XXXXX.. XX...... XX...... .XXXXX.. XX...XX. XX...XX. .XXXXX.. ........ endchar # CIRCLED DIGIT SEVEN char 0x17 .XXXXX.. .....XX. .....XX. ........ .....XX. .....XX. .....XX. ........ endchar # CIRCLED DIGIT EIGHT char 0x18 .XXXXX.. XX...XX. XX...XX. .XXXXX.. XX...XX. XX...XX. .XXXXX.. ........ endchar # CIRCLED DIGIT NINE char 0x19 .XXXXX.. XX...XX. XX...XX. .XXXXX.. .....XX. .....XX. .XXXXX.. ........ endchar # LATIN CAPITAL LETTER SCHWA char 0x1a ........ ........ ..XXXX.. .....XX. .XXXXXX. .XX..XX. ..XXXX.. ........ endchar # SYMBOL FOR ESCAPE char 0x1b .XXXX... .XX..... .XXXX... .XX..... .XXXXXX. ...XX... ...XXXX. ........ endchar # FOUNTAIN (upper left of face) char 0x1c .....XXX ....XXXX ...XXXXX ...XX... ...XX... ...X.... ...XXXX. ...X.XXX endchar # FLAG IN HOLE (upper right of face) char 0x1d XXXX.... XXXXX... XXX.XX.. .....X.. .....X.. .....X.. ..XXXX.. .X.X.X.. endchar # FERRY (lower left of face) char 0x1e ...X...X ....X.XX ....XX.X .....XX. .....XXX ..X.XXX. ..XXX..X ..XXX... endchar # SAILBOAT (lower right of face) char 0x1f .....X.. ..X.X... XX.XX... ..X.X... XX.X.... ...X.... XXX..... ........ endchar # SPACE char 0x20 ........ ........ ........ ........ ........ ........ ........ ........ endchar # EXCLAMATION MARK char '!' ...XX... ...XX... ...XX... ...XX... ...XX... ........ ...XX... ........ endchar # QUOTATION MARK char '"' .XX..XX. .XX..XX. .XX..XX. ........ ........ ........ ........ ........ endchar # NUMBER SIGN char '#' ........ .XX.XX.. XXXXXXX. .XX.XX.. .XX.XX.. XXXXXXX. .XX.XX.. ........ endchar # DOLLAR SIGN char '$' ...XX... ..XXXXX. .XX..... ..XXXX.. .....XX. .XXXXX.. ...XX... ........ endchar # PERCENT SIGN char '%' ........ .XX..XX. .XX.XX.. ...XX... ..XX.... .XX..XX. .X...XX. ........ endchar # AMPERSAND char '&' ..XXX... .XX.XX.. ..XXX... .XXX.... XX.XXXX. XX..XX.. .XXX.XX. ........ endchar # APOSTROPHE char '\'' ...XX... ...XX... ...XX... ........ ........ ........ ........ ........ endchar # LEFT PARENTHESIS char '(' ....XXX. ...XXX.. ...XX... ...XX... ...XX... ...XXX.. ....XXX. ........ endchar # RIGHT PARENTHESIS char ')' .XXX.... ..XXX... ...XX... ...XX... ...XX... ..XXX... .XXX.... ........ endchar # ASTERISK char '*' ........ .XX..XX. ..XXXX.. XXXXXXXX ..XXXX.. .XX..XX. ........ ........ endchar # PLUS SIGN char '+' ........ ...XX... ...XX... .XXXXXX. ...XX... ...XX... ........ ........ endchar # COMMA char ',' ........ ........ ........ ........ ........ ..XX.... ..XX.... .XX..... endchar # HYPHEN-MINUS char '-' ........ ........ ........ .XXXXXX. ........ ........ ........ ........ endchar # FULL STOP char '.' ........ ........ ........ ........ ........ ...XX... ...XX... ........ endchar # SOLIDUS char '/' ......X. .....XX. ....XX.. ...XX... ..XX.... .XX..... .X...... ........ endchar # DIGIT ZERO char '0' ..XXXX.. .XX..XX. .XX.XXX. .XXX.XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # DIGIT ONE char '1' ...XX... ..XXX... ...XX... ...XX... ...XX... ...XX... .XXXXXX. ........ endchar # DIGIT TWO char '2' ..XXXX.. .XX..XX. .....XX. ....XX.. ...XX... ..XX.... .XXXXXX. ........ endchar # DIGIT THREE char '3' .XXXXXX. ....XX.. ...XX... ....XX.. .....XX. .XX..XX. ..XXXX.. ........ endchar # DIGIT FOUR char '4' ....XX.. ...XXX.. ..XXXX.. .XX.XX.. .XXXXXX. ....XX.. ....XX.. ........ endchar # DIGIT FIVE char '5' .XXXXXX. .XX..... .XXXXX.. .....XX. .....XX. .XX..XX. ..XXXX.. ........ endchar # DIGIT SIX char '6' ..XXXX.. .XX..... .XX..... .XXXXX.. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # DIGIT SEVEN char '7' .XXXXXX. .....XX. ....XX.. ...XX... ..XX.... ..XX.... ..XX.... ........ endchar # DIGIT EIGHT char '8' ..XXXX.. .XX..XX. .XX..XX. ..XXXX.. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # DIGIT NINE char '9' ..XXXX.. .XX..XX. .XX..XX. ..XXXXX. .....XX. ....XX.. ..XXX... ........ endchar # COLON char ':' ........ ...XX... ...XX... ........ ...XX... ...XX... ........ ........ endchar # SEMICOLON char ';' ........ ...XX... ...XX... ........ ...XX... ...XX... ..XX.... ........ endchar # LESS-THAN SIGN char '<' .....XX. ....XX.. ...XX... ..XX.... ...XX... ....XX.. .....XX. ........ endchar # EQUALS SIGN char '=' ........ ........ .XXXXXX. ........ ........ .XXXXXX. ........ ........ endchar # GREATER-THAN SIGN char '>' .XX..... ..XX.... ...XX... ....XX.. ...XX... ..XX.... .XX..... ........ endchar # QUESTION MARK char '?' ..XXXX.. .XX..XX. .....XX. ....XX.. ...XX... ........ ...XX... ........ endchar # COMMERCIAL AT char '@' ..XXXX.. .XX..XX. .XX.XXX. .XX.X.X. .XX.XXX. .XX..... ..XXXXX. ........ endchar # LATIN CAPITAL LETTER A char 'A' ...XX... ..XXXX.. .XX..XX. .XX..XX. .XXXXXX. .XX..XX. .XX..XX. ........ endchar # LATIN CAPITAL LETTER B char 'B' .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. ........ endchar # LATIN CAPITAL LETTER C char 'C' ..XXXX.. .XX..XX. .XX..... .XX..... .XX..... .XX..XX. ..XXXX.. ........ endchar # LATIN CAPITAL LETTER D char 'D' .XXXX... .XX.XX.. .XX..XX. .XX..XX. .XX..XX. .XX.XX.. .XXXX... ........ endchar # LATIN CAPITAL LETTER E char 'E' .XXXXXX. .XX..... .XX..... .XXXXX.. .XX..... .XX..... .XXXXXX. ........ endchar # LATIN CAPITAL LETTER F char 'F' .XXXXXX. .XX..... .XX..... .XXXXX.. .XX..... .XX..... .XX..... ........ endchar # LATIN CAPITAL LETTER G char 'G' ..XXXXX. .XX..... .XX..... .XX.XXX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN CAPITAL LETTER H char 'H' .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. ........ endchar # LATIN CAPITAL LETTER I char 'I' ..XXXX.. ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER J char 'J' .....XX. .....XX. .....XX. .....XX. .....XX. .XX..XX. ..XXXX.. ........ endchar # LATIN CAPITAL LETTER K char 'K' .XX..XX. .XX.XX.. .XXXX... .XXX.... .XXXX... .XX.XX.. .XX..XX. ........ endchar # LATIN CAPITAL LETTER L char 'L' .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XXXXXX. ........ endchar # LATIN CAPITAL LETTER M char 'M' XX...XX. XXX.XXX. XXXXXXX. XX.X.XX. XX...XX. XX...XX. XX...XX. ........ endchar # LATIN CAPITAL LETTER N char 'N' .XX..XX. .XXX.XX. .XXXXXX. .XXXXXX. .XX.XXX. .XX..XX. .XX..XX. ........ endchar # LATIN CAPITAL LETTER O char 'O' ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # LATIN CAPITAL LETTER P char 'P' .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. .XX..... .XX..... .XX..... ........ endchar # LATIN CAPITAL LETTER Q char 'Q' ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XXX.XX. .XX.XX.. ..XX.XX. ........ endchar # LATIN CAPITAL LETTER R char 'R' .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. .XX.XX.. .XX..XX. .XX..XX. ........ endchar # LATIN CAPITAL LETTER S char 'S' ..XXXX.. .XX..XX. .XX..... ..XXXX.. .....XX. .XX..XX. ..XXXX.. ........ endchar # LATIN CAPITAL LETTER T char 'T' .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ endchar # LATIN CAPITAL LETTER U char 'U' .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN CAPITAL LETTER V char 'V' .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ...XX... ........ endchar # LATIN CAPITAL LETTER W char 'W' XX...XX. XX...XX. XX...XX. XX.X.XX. XXXXXXX. XXX.XXX. XX...XX. ........ endchar # LATIN CAPITAL LETTER X char 'X' .XX..XX. .XX..XX. ..XXXX.. ...XX... ..XXXX.. .XX..XX. .XX..XX. ........ endchar # LATIN CAPITAL LETTER Y char 'Y' .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ...XX... ...XX... ...XX... ........ endchar # LATIN CAPITAL LETTER Z char 'Z' .XXXXXX. .....XX. ....XX.. ...XX... ..XX.... .XX..... .XXXXXX. ........ endchar # LEFT SQUARE BRACKET char '[' ...XXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XXXX. ........ endchar # REVERSE SOLIDUS char 0x5c .X...... .XX..... ..XX.... ...XX... ....XX.. .....XX. ......X. ........ endchar # RIGHT SQUARE BRACKET char ']' .XXXX... ...XX... ...XX... ...XX... ...XX... ...XX... .XXXX... ........ endchar # CIRCUMFLEX ACCENT char '^' ...X.... ..XXX... .XX.XX.. XX...XX. ........ ........ ........ ........ endchar # LOW LINE char '_' ........ ........ ........ ........ ........ ........ XXXXXXX. ........ endchar # GRAVE ACCENT char '`' ........ XX...... .XX..... ..XX.... ........ ........ ........ ........ endchar # LATIN SMALL LETTER A char 'a' ........ ........ ..XXXX.. .....XX. ..XXXXX. .XX..XX. ..XXXXX. ........ endchar # LATIN SMALL LETTER B char 'b' .XX..... .XX..... .XXXXX.. .XX..XX. .XX..XX. .XX..XX. .XXXXX.. ........ endchar # LATIN SMALL LETTER C char 'c' ........ ........ ..XXXX.. .XX..... .XX..... .XX..... ..XXXX.. ........ endchar # LATIN SMALL LETTER D char 'd' .....XX. .....XX. ..XXXXX. .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN SMALL LETTER E char 'e' ........ ........ ..XXXX.. .XX..XX. .XXXXXX. .XX..... ..XXXX.. ........ endchar # LATIN SMALL LETTER F char 'f' ...XXX.. ..XX.... .XXXXX.. ..XX.... ..XX.... ..XX.... ..XX.... ........ endchar # LATIN SMALL LETTER G char 'g' ........ ........ ..XXXXX. .XX..XX. .XX..XX. ..XXXXX. .....XX. .XXXXX.. endchar # LATIN SMALL LETTER H char 'h' .XX..... .XX..... .XXXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ endchar # LATIN SMALL LETTER I char 'i' ...XX... ........ ..XXX... ...XX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN SMALL LETTER J char 'j' ...XX... ........ ...XX... ...XX... ...XX... ...XX... ...XX... .XXX.... endchar # LATIN SMALL LETTER K char 'k' .XX..... .XX..... .XX..XX. .XX.XX.. .XXXX... .XX.XX.. .XX..XX. ........ endchar # LATIN SMALL LETTER L char 'l' ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN SMALL LETTER M char 'm' ........ ........ XXX.XX.. XXXXXXX. XX.X.XX. XX...XX. XX...XX. ........ endchar # LATIN SMALL LETTER N char 'n' ........ ........ .XXXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ endchar # LATIN SMALL LETTER O char 'o' ........ ........ ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # LATIN SMALL LETTER P char 'p' ........ ........ .XXXXX.. .XX..XX. .XX..XX. .XX..XX. .XXXXX.. .XX..... endchar # LATIN SMALL LETTER Q char 'q' ........ ........ ..XXXXX. .XX..XX. .XX..XX. .XX..XX. ..XXXXX. .....XX. endchar # LATIN SMALL LETTER R char 'r' ........ ........ .XXXXX.. .XX..XX. .XX..... .XX..... .XX..... ........ endchar # LATIN SMALL LETTER S char 's' ........ ........ ..XXXXX. .XX..... ..XXXX.. .....XX. .XXXXX.. ........ endchar # LATIN SMALL LETTER T char 't' ........ ...XX... .XXXXXX. ...XX... ...XX... ...XX... ....XXX. ........ endchar # LATIN SMALL LETTER U char 'u' ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN SMALL LETTER V char 'v' ........ ........ .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ...XX... ........ endchar # LATIN SMALL LETTER W char 'w' ........ ........ XX...XX. XX...XX. XX.X.XX. .XXXXX.. .XX.XX.. ........ endchar # LATIN SMALL LETTER X char 'x' ........ ........ .XX..XX. ..XXXX.. ...XX... ..XXXX.. .XX..XX. ........ endchar # LATIN SMALL LETTER Y char 'y' ........ ........ .XX..XX. .XX..XX. .XX..XX. ..XXXXX. .....XX. .XXXXX.. endchar # LATIN SMALL LETTER Z char 'z' ........ ........ .XXXXXX. ....XX.. ...XX... ..XX.... .XXXXXX. ........ endchar # LEFT CURLY BRACKET char '{' ....XXX. ...XX... ...XX... ..XX.... ...XX... ...XX... ....XXX. ........ endchar # VERTICAL LINE char '|' ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... endchar # RIGHT CURLY BRACKET char '}' .XXX.... ...XX... ...XX... ....XX.. ...XX... ...XX... .XXX.... ........ endchar # TILDE char '~' ........ .XX..... XXXX..X. X..XXXX. ....XX.. ........ ........ ........ endchar # 0x2206 INCREMENT char 0x7f ........ ...XX... ...XX... ..XX.X.. ..XX.X.. .XX...X. .XXXXXX. ........ endchar # NO-BREAK SPACE char 0x00a0 ........ ........ ........ ........ ........ ........ ........ ........ endchar # INVERTED EXCLAMATION MARK char 0x00a1 ........ ...XX... ........ ...XX... ...XX... ...XX... ...XX... ...XX... endchar # CENT SIGN char 0x00a2 ...XX... ...XX... ..XXXX.. .XX..... .XX..... ..XXXX.. ...XX... ...XX... endchar # POUND SIGN char 0x00a3 ...XXX.. ..XXX.X. ..XX.... .XXXXX.. ..XX.... ..XX.... .XXXXXX. ........ endchar # CURRENCY SIGN char 0x00a4 X......X .X.XX.X. ..X..X.. .X.XX.X. .X.XX.X. ..X..X.. .X.XX.X. X......X endchar # YEN SIGN char 0x00a5 .XX..XX. .XX..XX. ..XXXX.. ...XX... ..XXXX.. ...XX... ...XX... ........ endchar # BROKEN BAR char 0x00a6 ...XX... ...XX... ...XX... ........ ...XX... ...XX... ...XX... ...XX... endchar # SECTION SIGN char 0x00a7 ....XXX. ...XX.XX ..XXXX.. .XX..XX. .XX..XX. ..XXXX.. XX.XX... .XXX.... endchar # DIAERESIS char 0x00a8 .XX..XX. ........ ........ ........ ........ ........ ........ ........ endchar # COPYRIGHT SIGN char 0x00a9 .XXXXXX. XX....XX X.XXXX.X X.XX...X X.XX...X X.XXXX.X XX....XX .XXXXXX. endchar # FEMININE ORDINAL INDICATOR char 0x00aa ........ ..XXXX.. .....XX. ..XXXXX. .XX..XX. ..XXXXX. ........ ..XXXX.. endchar # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK char 0x00ab ...XX.XX ..XX.XX. .XX.XX.. XX.XX... .XX.XX.. ..XX.XX. ...XX.XX ........ endchar # NOT SIGN char 0x00ac ........ ........ ........ .XXXXX.. ....XX.. ....XX.. ....XX.. ........ endchar # SOFT HYPHEN char 0x00ad ........ ........ ........ .XXXXX.. ........ ........ ........ ........ endchar # REGISTERED SIGN char 0x00ae .XXXXXX. XX....XX X.XXXX.X X.X..X.X X.XXX..X X.X.XX.X XX....XX .XXXXXX. endchar # MACRON char 0x00af ........ XXXXXXX. ........ ........ ........ ........ ........ ........ endchar # DEGREE SIGN char 0x00b0 ..XXX... .XX.XX.. ..XXX... ........ ........ ........ ........ ........ endchar # PLUS-MINUS SIGN char 0x00b1 ...XX... ...XX... .XXXXXX. ...XX... ...XX... ........ .XXXXXX. ........ endchar # SUPERSCRIPT TWO char 0x00b2 ..XXX... .XX.XX.. ...XX... ..XX.... .XXXXX.. ........ ........ ........ endchar # SUPERSCRIPT THREE char 0x00b3 .XXXX... ....XX.. ..XXX... ....XX.. .XXXX... ........ ........ ........ endchar # ACUTE ACCENT char 0x00b4 ....XX.. ...XX... ..XX.... ........ ........ ........ ........ ........ endchar # MICRO SIGN char 0x00b5 ........ ........ .XX.XX.. .XX.XX.. .XX.XX.. .XX.XX.. .XXXXXXX XX...... endchar # PILCROW SIGN char 0x00b6 .XXXX.X. XX..X.X. XX..X.X. XX..X.X. .XXXX.X. ....X.X. ....X.X. ....X.X. endchar # MIDDLE DOT char 0x00b7 ........ ........ ........ ........ ...XX... ...XX... ........ ........ endchar # CEDILLA char 0x00b8 ........ ........ ........ ........ ........ ........ ....X... ..XXX... endchar # SUPERSCRIPT ONE char 0x00b9 ...XX... .XXXX... ...XX... ...XX... .XXXXX.. ........ ........ ........ endchar # MASCULINE ORDINAL INDICATOR char 0x00ba ........ ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ ..XXXX.. endchar # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK char 0x00bb XX.XX... .XX.XX.. ..XX.XX. ...XX.XX ..XX.XX. .XX.XX.. XX.XX... ........ endchar # VULGAR FRACTION ONE QUARTER char 0x00bc XX...XX. XX..XX.. XX.XX... ..XX.XX. .XX.XXX. XX.X.XX. X..XXXXX .....XX. endchar # VULGAR FRACTION ONE HALF char 0x00bd XX...XX. XX..XX.. XX.XX... ..XX.XX. .XX.X.XX XX....XX X....XX. ....XXXX endchar # VULGAR FRACTION THREE QUARTERS char 0x00be XX...XX. .X..XX.. XX.XX... ..XX.XX. .XX.XXX. XX.X.XX. X..XXXXX .....XX. endchar # INVERTED QUESTION MARK char 0x00bf ........ ...XX... ........ ...XX... ..XX.... .XX..... .XX..XX. ..XXXX.. endchar # LATIN CAPITAL LETTER A WITH GRAVE char 0x00c0 ..XX.... ...XX... ........ ...XX... ..XXXX.. .XX..XX. .XXXXXX. .XX..XX. endchar # LATIN CAPITAL LETTER A WITH ACUTE char 0x00c1 ....XX.. ...XX... ..XXXX.. .XX..XX. .XX..XX. .XXXXXX. .XX..XX. ........ endchar # LATIN CAPITAL LETTER A WITH CIRCUMFLEX char 0x00c2 ...XX... .XX..XX. ........ ...XX... ..XXXX.. .XX..XX. .XXXXXX. .XX..XX. endchar # LATIN CAPITAL LETTER A WITH TILDE char 0x00c3 ..XX.X.. .X.XX... ........ ...XX... ..XXXX.. .XX..XX. .XXXXXX. .XX..XX. endchar # LATIN CAPITAL LETTER A WITH DIAERESIS char 0x00c4 .XX..XX. ........ ...XX... ..XXXX.. .XX..XX. .XXXXXX. .XX..XX. ........ endchar # LATIN CAPITAL LETTER A WITH RING ABOVE char 0x00c5 ...XX... ........ ...XX... ..XXXX.. .XX..XX. .XXXXXX. .XX..XX. ........ endchar # LATIN CAPITAL LETTER AE char 0x00c6 ..XXXXXX .XXXX... XX.XX... XX.XXXX. XXXXX... XX.XX... XX.XXXXX ........ endchar # LATIN CAPITAL LETTER C WITH CEDILLA char 0x00c7 ........ ..XXXX.. .XX..XX. .XX..... .XX..XX. ..XXXX.. ....X... ..XXX... endchar # LATIN CAPITAL LETTER E WITH GRAVE char 0x00c8 ..XX.... ...XX... .XXXXXX. .XX..... .XXXXX.. .XX..... .XXXXXX. ........ endchar # LATIN CAPITAL LETTER E WITH ACUTE char 0x00c9 ....XX.. ...XX... .XXXXXX. .XX..... .XXXXX.. .XX..... .XXXXXX. ........ endchar # LATIN CAPITAL LETTER E WITH CIRCUMFLEX char 0x00ca ...XX... .XX..XX. ........ .XXXXXX. .XX..... .XXXXX.. .XX..... .XXXXXX. endchar # LATIN CAPITAL LETTER E WITH DIAERESIS char 0x00cb .XX..XX. ........ .XXXXXX. .XX..... .XXXXX.. .XX..... .XXXXXX. ........ endchar # LATIN CAPITAL LETTER I WITH GRAVE char 0x00cc ..XX.... ...XX... ........ ..XXXX.. ...XX... ...XX... ...XX... ..XXXX.. endchar # LATIN CAPITAL LETTER I WITH ACUTE char 0x00cd ....XX.. ...XX... ..XXXX.. ...XX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER I WITH CIRCUMFLEX char 0x00ce ...XX... ..X..X.. ..XXXX.. ...XX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER I WITH DIAERESIS char 0x00cf .XX..XX. ........ ..XXXX.. ...XX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER ETH char 0x00d0 .XXXX... .XX..XX. .XX..XX. XXXX.XX. .XX..XX. .XX..XX. .XXXX... ........ endchar # LATIN CAPITAL LETTER N WITH TILDE char 0x00d1 ..XX.X.. .X.XX... ........ .XX..XX. .XXX.XX. .XX.XXX. .XX..XX. ........ endchar # LATIN CAPITAL LETTER O WITH GRAVE char 0x00d2 ..XX.... ...XX... ........ ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. endchar # LATIN CAPITAL LETTER O WITH ACUTE char 0x00d3 ....XX.. ...XX... ........ ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. endchar # LATIN CAPITAL LETTER O WITH CIRCUMFLEX char 0x00d4 ...XX... .XX..XX. ........ ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. endchar # LATIN CAPITAL LETTER O WITH TILDE char 0x00d5 ..XX.X.. .X.XX... ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. endchar # LATIN CAPITAL LETTER O WITH DIAERESIS char 0x00d6 .XX..XX. ........ ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # MULTIPLICATION SIGN char 0x00d7 ........ ........ .X...X.. ..X.X... ...X.... ..X.X... .X...X.. ........ endchar # LATIN CAPITAL LETTER O WITH STROKE char 0x00d8 ......X. ..XXXX.. .XX..XX. .XX.XXX. .XXX.XX. .XX..XX. ..XXXX.. .X...... endchar # LATIN CAPITAL LETTER U WITH GRAVE char 0x00d9 ..XX.... ...XX... .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # LATIN CAPITAL LETTER U WITH ACUTE char 0x00da ....XX.. ...XX... .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # LATIN CAPITAL LETTER U WITH CIRCUMFLEX char 0x000db ...XX... .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. endchar # LATIN CAPITAL LETTER U WITH DIAERESIS char 0x00dc .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN CAPITAL LETTER Y WITH ACUTE char 0x00dd ....XX.. ...XX... .XX..XX. .XX..XX. ..XXXX.. ...XX... ...XX... ........ endchar # LATIN CAPITAL LETTER THORN char 0x00de .XX..... .XX..... .XXXXX.. .XX..XX. .XXXXX.. .XX..... .XX..... ........ endchar # LATIN SMALL LETTER SHARP S char 0x00df ...XXX.. ..XX.XX. .XX..XX. .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. .XX..... endchar # LATIN SMALL LETTER A WITH GRAVE char 0x00e0 ..XX.... ...XX... ........ ..XXXX.. .....XX. .XXXXXX. ..XXXXX. ........ endchar # LATIN SMALL LETTER A WITH ACUTE char 0x00e1 ....XX.. ...XX... ........ ..XXXX.. .....XX. .XXXXXX. ..XXXXX. ........ endchar # LATIN SMALL LETTER A WITH CIRCUMFLEX char 0x00e2 ...XX... .XX..XX. ........ ..XXXX.. .....XX. .XXXXXX. ..XXXXX. ........ endchar # LATIN SMALL LETTER A WITH TILDE char 0x00e3 ..XX.X.. .X.XX... ........ ..XXXX.. .....XX. .XXXXXX. ..XXXXX. ........ endchar # LATIN SMALL LETTER A WITH DIAERESIS char 0x00e4 .XX..XX. ........ ..XXXX.. .....XX. ..XXXXX. .XX..XX. ..XXXXX. ........ endchar # LATIN SMALL LETTER A WITH RING ABOVE char 0x00e5 ...XX... ...XX... ........ ..XXXX.. .....XX. .XXXXXX. ..XXXXX. ........ endchar # LATIN SMALL LETTER AE char 0x00e6 ........ ........ .XXXXXX. ...XX.XX .XXXXXXX XX.XX... .XXXXXX. ........ endchar # LATIN SMALL LETTER C WITH CEDILLA char 0x00e7 ........ ........ ..XXXX.. .XX..... .XX..... ..XXXX.. ....X... ...XX... endchar # LATIN SMALL LETTER E WITH GRAVE char 0x00e8 ..XX.... ...XX... ........ ..XXXX.. .XXXXXX. .XX..... ..XXXX.. ........ endchar # LATIN SMALL LETTER E WITH ACUTE char 0x00e9 ....XX.. ...XX... ........ ..XXXX.. .XXXXXX. .XX..... ..XXXX.. ........ endchar # LATIN SMALL LETTER E WITH CIRCUMFLEX char 0x00ea ...XX... .XX..XX. ........ ..XXXX.. .XXXXXX. .XX..... ..XXXX.. ........ endchar # LATIN SMALL LETTER E WITH DIAERESIS char 0x00eb .XX..XX. ........ ..XXXX.. .XX..XX. .XXXXXX. .XX..... ..XXXX.. ........ endchar # LATIN SMALL LETTER I WITH GRAVE char 0x00ec .XX..... ..XX.... ........ ..XXX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN SMALL LETTER I WITH ACUTE char 0x00ed ....XX.. ...XX... ........ ..XXX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN SMALL LETTER I WITH CIRCUMFLEX char 0x00ee ...XX... .XX..XX. ........ ..XXX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN SMALL LETTER I WITH DIAERESIS char 0x00ef .XX..XX. ........ ........ ..XXX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN SMALL LETTER ETH char 0x00f0 ..X..XX. ...XX... .XX.XX.. ...XXXX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # LATIN SMALL LETTER N WITH TILDE char 0x00f1 ..XX.X.. .X.XX... ........ .XXXXX.. .XX..XX. .XX..XX. .XX..XX. ........ endchar # LATIN SMALL LETTER O WITH GRAVE char 0x00f2 ..XX.... ...XX... ........ ..XXXX.. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # LATIN SMALL LETTER O WITH ACUTE char 0x00f3 ....XX.. ...XX... ........ ..XXXX.. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # LATIN SMALL LETTER O WITH CIRCUMFLEX char 0x00f4 ...XX... .XX..XX. ........ ..XXXX.. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # LATIN SMALL LETTER O WITH TILDE char 0x00f5 ..XX.X.. .X.XX... ........ ..XXXX.. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # LATIN SMALL LETTER O WITH DIAERESIS char 0x00f6 .XX..XX. ........ ........ ..XXXX.. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # DIVISION SIGN char 0x00f7 ...XX... ...XX... ........ .XXXXXX. ........ ...XX... ...XX... ........ endchar # LATIN SMALL LETTER O WITH STROKE char 0x00f8 ........ ......X. ..XXXX.. .XX.XXX. .XXX.XX. .XX..XX. ..XXXX.. .X...... endchar # LATIN SMALL LETTER U WITH GRAVE char 0x00f9 ..XX.... ...XX... ........ .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN SMALL LETTER U WITH ACUTE char 0x00fa ....XX.. ...XX... ........ .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN SMALL LETTER U WITH CIRCUMFLEX char 0x00fb ...XX... .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN SMALL LETTER U WITH DIAERESIS char 0x00fc .XX..XX. ........ ........ .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN SMALL LETTER Y WITH ACUTE char 0x00fd ....XX.. ...XX... .XX..XX. .XX..XX. .XX..XX. ..XXXXX. .....XX. .XXXXX.. endchar # LATIN SMALL LETTER THORN char 0x00fe ........ .XX..... .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. .XX..... ........ endchar # LATIN SMALL LETTER Y WITH DIAERESIS char 0x00ff .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. ..XXXXX. .....XX. .XXXXX.. endchar # LATIN CAPITAL LETTER A WITH MACRON char 0x100 .XXXXXX. ........ ...XX... ..XXXX.. .XX..XX. .XXXXXX. .XX..XX. ........ endchar # LATIN SMALL LETTER A WITH MACRON char 0x101 ..XXXX.. ........ ........ ..XXXX.. .....XX. .XXXXXX. ..XXXXX. ........ endchar # LATIN CAPITAL LETTER A WITH BREVE char 0x102 .XX..XX. ..XXXX.. ...XX... ..XXXX.. .XX..XX. .XXXXXX. .XX..XX. ........ endchar # LATIN SMALL LETTER A WITH BREVE char 0x103 ..X..X.. ...XX... ........ ..XXXX.. .....XX. .XXXXXX. ..XXXXX. ........ endchar # LATIN CAPITAL LETTER A WITH OGONEK char 0x104 ...XX... ..XXXX.. .XX..XX. .XX..XX. .XXXXXX. .XX..XX. .XX..XX. ....XX.. endchar # LATIN SMALL LETTER A WITH OGONEK char 0x105 ........ ........ ..XXXX.. .....XX. ..XXXXX. .XX..XX. ..XXXXX. ....XX.. endchar # LATIN CAPITAL LETTER C WITH ACUTE char 0x106 ....XX.. ...XX... ..XXXX.. .XX..XX. .XX..... .XX..XX. ..XXXX.. ........ endchar # LATIN SMALL LETTER C WITH ACUTE char 0x107 ....XX.. ...XX... ........ ..XXXX.. .XX..... .XX..... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER C WITH CIRCUMFLEX char 0x108 ...XX... ..X..X.. ...XX... ..XXXX.. .XX..XX. .XX..... .XX..XX. ..XXXX.. endchar # LATIN SMALL LETTER C WITH CIRCUMFLEX char 0x109 ...XX... .XX..XX. ........ ..XXXX.. .XX..... .XX..... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER C WITH DOT ABOVE char 0x10a ...XX... ...XX... ..XXXX.. .XX..XX. .XX..... .XX..XX. ..XXXX.. ........ endchar # LATIN SMALL LETTER C WITH DOT ABOVE char 0x10b ...XX... ...XX... ........ ..XXXX.. .XX..... .XX..... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER C WITH CARON char 0x10c ..X..X.. ...XX... ..XXXX.. .XX..XX. .XX..... .XX..XX. ..XXXX.. ........ endchar # LATIN SMALL LETTER C WITH CARON char 0x10d ..X..X.. ...XX... ........ ..XXXX.. .XX..... .XX..... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER D WITH CARON char 0x10e ..X..X.. ...XX... .XXXXX.. .XX..XX. .XX..XX. .XX..XX. .XXXXX.. ........ endchar # LATIN SMALL LETTER D WITH CARON char 0x10f ....XX.X ....XX.X .XXXXX.. XX..XX.. XX..XX.. XX..XX.. .XXXXX.. ........ endchar # LATIN CAPITAL LETTER D WITH STROKE char 0x110 .XXXX... .XX.XX.. .XX..XX. XXXX.XX. .XX..XX. .XX.XX.. .XXXX... ........ endchar # LATIN SMALL LETTER D WITH STROKE char 0x111 .....XX. ...XXXXX .....XX. ..XXXXX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN CAPITAL LETTER E WITH MACRON char 0x112 ..XXXX.. ........ .XXXXXX. .XX..... .XXXXX.. .XX..... .XXXXXX. ........ endchar # LATIN SMALL LETTER E WITH MACRON char 0x113 ..XXXX.. ........ ..XXXX.. .XX..XX. .XXXXXX. .XX..... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER E WITH BREVE char 0x114 ..X..X.. ...XX... .XXXXXX. .XX..... .XXXXX.. .XX..... .XXXXXX. ........ endchar # LATIN SMALL LETTER E WITH BREVE char 0x115 ..X..X.. ...XX... ..XXXX.. .XX..XX. .XXXXXX. .XX..... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER E WITH DOT ABOVE char 0x116 ...XX... ...XX... .XXXXXX. .XX..... .XXXXX.. .XX..... .XXXXXX. ........ endchar # LATIN SMALL LETTER E WITH DOT ABOVE char 0x117 ....X... ........ ..XXXX.. .XX..XX. .XXXXXX. .XX..... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER E WITH OGONEK char 0x118 ........ .XXXXXX. .XX..... .XXXXX.. .XX..... .XXXXXX. ..XX.... ...XX... endchar # LATIN SMALL LETTER E WITH OGONEK char 0x119 ........ ........ ..XXXX.. .XXXXXX. .XX..... ..XXXX.. ...XX... ....XX.. endchar # LATIN CAPITAL LETTER E WITH CARON char 0x11a ..X..X.. ...XX... .XXXXXX. .XX..... .XXXXX.. .XX..... .XXXXXX. ........ endchar # LATIN SMALL LETTER E WITH CARON char 0x11b ..X..X.. ...XX... ..XXXX.. .XX..XX. .XXXXXX. .XX..... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER G WITH CIRCUMFLEX char 0x11c ...XX... ..X..X.. ..XXXXX. .XX..... .XX.XXX. .XX..XX. .XX..XX. ..XXXXX. endchar # LATIN SMALL LETTER G WITH CIRCUMFLEX char 0x11d ...XX... ..X..X.. ..XXXXX. .XX..XX. .XX..XX. ..XXXXX. .....XX. .XXXXX.. endchar # LATIN CAPITAL LETTER G WITH BREVE char 0x11e ..X..X.. ...XX... ..XXXXX. .XX..... .XX.XXX. .XX..XX. .XX..XX. ..XXXXX. endchar # LATIN SMALL LETTER G WITH BREVE char 0x11f ..X..X.. ...XX... ..XXXXX. .XX..XX. .XX..XX. ..XXXXX. .....XX. .XXXXX.. endchar # LATIN CAPITAL LETTER G WITH DOT ABOVE char 0x120 ...XX... ...XX... ..XXXXX. .XX..... .XX.XXX. .XX..XX. .XX..XX. ..XXXXX. endchar # LATIN SMALL LETTER G WITH DOT ABOVE char 0x121 ...XX... ...XX... ..XXXXX. .XX..XX. .XX..XX. ..XXXXX. .....XX. .XXXXX.. endchar # LATIN CAPITAL LETTER G WITH CEDILLA char 0x122 ..XXXXX. .XX..... .XX.XXX. .XX..XX. .XX..XX. ..XXXXX. ....X... ..XXX... endchar # LATIN SMALL LETTER G WITH CEDILLA char 0x123 ..XXXXX. .XX..XX. .XX..XX. ..XXXXX. .....XX. .XXXXX.. ....X... ..XXX... endchar # LATIN CAPITAL LETTER H WITH CIRCUMFLEX char 0x124 ...XX... ..X..X.. ........ .XX..XX. .XX..XX. .XXXXXX. .XX..XX. .XX..XX. endchar # LATIN SMALL LETTER H WITH CIRCUMFLEX char 0x125 ...XX... ..X..X.. .XX..... .XXXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. endchar # LATIN CAPITAL LETTER H WITH STROKE char 0x126 ........ .XX..XX. .XXXXXX. .XX..XX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. endchar # LATIN SMALL LETTER H WITH STROKE char 0x127 ........ .XXX.... .XX..... .XXXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. endchar # LATIN CAPITAL LETTER I WITH TILDE char 0x128 ..XX.X.. .X.XX... ........ ..XXXX.. ...XX... ...XX... ...XX... ..XXXX.. endchar # LATIN SMALL LETTER I WITH TILDE char 0x129 ..XX.X.. .X.XX... ........ ..XXX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER I WITH MACRON char 0x12a ..XXXX.. ........ ..XXXX.. ...XX... ...XX... ...XX... ...XX... ..XXXX.. endchar # LATIN SMALL LETTER I WITH MACRON char 0x12b ..XXXX.. ...X.... ........ ..XXX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER I WITH BREVE char 0x12c ..XX.XX. ...XX... ........ ..XXXX.. ...XX... ...XX... ...XX... ..XXXX.. endchar # LATIN SMALL LETTER I WITH BREVE char 0x12d ..X.XX.. ...XX... ........ ..XXX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER I WITH OGONEK char 0x12e ..XXXX.. ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ....X... endchar # LATIN SMALL LETTER I WITH OGONEK char 0x12f ...XX... ........ ..XXX... ...XX... ...XX... ...XX... ..XXXX.. ....X... endchar # LATIN CAPITAL LETTER I WITH DOT ABOVE char 0x130 ....X... ..XXXX.. ...XX... ...XX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN SMALL LETTER DOTLESS I char 0x131 ........ ........ ..XXX... ...XX... ...XX... ...XX... ..XXXX.. ........ endchar # LATIN CAPITAL LIGATURE IJ char 0x0132 XXXX.XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. XXXX.XX. .....XX. ...XXX.. endchar # LATIN SMALL LIGATURE IJ char 0x0133 .XX..XX. ........ XXX..XX. .XX..XX. .XX..XX. XXXX.XX. .....XX. ...XXX.. endchar # LATIN CAPITAL LETTER J WITH CIRCUMFLEX char 0x134 ...XX... ..X..X.. .....XX. .....XX. .....XX. .....XX. .XX..XX. ..XXXX.. endchar # LATIN SMALL LETTER J WITH CIRCUMFLEX char 0x135 ...XX... ..X..X.. ...XX... ...XX... ...XX... ...XX... ...XX... .XXX.... endchar # LATIN CAPITAL LETTER K WITH CEDILLA char 0x136 .XX..XX. .XX.XX.. .XXXX... .XXX.... .XXXX... .XX.XX.. .XX..XX. ..XXX... endchar # LATIN SMALL LETTER K WITH CEDILLA char 0x137 .XX..... .XX..... .XX..XX. .XX.XX.. .XXXX... .XX.XX.. .XX..XX. ..XXX... endchar # LATIN SMALL LETTER KRA char 0x138 ........ .XX..... .XX..XXX .XX.XX.. .XXXX... .XX.XX.. .XX..XX. ........ endchar # LATIN CAPITAL LETTER L WITH ACUTE char 0x139 .XX..XX. .XX.XX.. .XX..... .XX..... .XX..... .XX..... .XXXXXX. ........ endchar # LATIN SMALL LETTER L WITH ACUTE char 0x13a .XXX.XX. ..XX.X.. ..XX.... ..XX.... ..XX.... ..XX.... .XXXX... ........ endchar # LATIN CAPITAL LETTER L WITH CEDILLA char 0x13b .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... .XXXXXX. ..XXX... endchar # LATIN SMALL LETTER L WITH CEDILLA char 0x13c ..XXX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ..XXX... endchar # LATIN CAPITAL LETTER L WITH CARON char 0x13d .XX.XX.. .XX..X.. .XX.X... .XX..... .XX..... .XX..... .XXXXXX. ........ endchar # LATIN SMALL LETTER L WITH CARON char 0x13e .XXX.XX. ..XX..X. ..XX.X.. ..XX.... ..XX.... ..XX.... .XXXX... ........ endchar # LATIN CAPITAL LETTER L WITH MIDDLE DOT char 0x13f .XX..... .XX..... .XX..X.. .XX..... .XX..... .XX..... .XXXXXX. ........ endchar # LATIN SMALL LETTER L WITH MIDDLE DOT char 0x140 .XXX.... ..XX.... ..XX..X. ..XX.... ..XX.... ..XX.... .XXXX... ........ endchar # LATIN CAPITAL LETTER L WITH STROKE char 0x141 .XX..... .XX..... .XXX.... XXX..... .XX..... .XX..... .XXXXXX. ........ endchar # LATIN SMALL LETTER L WITH STROKE char 0x142 ..XXX... ...XX... ...XX... ..XXXX.. ...XX... ...XX... ..XXXX.. ........ endchar # LATIN CAPITAL LETTER N WITH ACUTE char 0x143 ....XX.. ...XX... .XX..XX. .XXX.XX. .XXXXXX. .XX.XXX. .XX..XX. ........ endchar # LATIN SMALL LETTER N WITH ACUTE char 0x144 ....XX.. ...XX... ........ .XXXXX.. .XX..XX. .XX..XX. .XX..XX. ........ endchar # LATIN CAPITAL LETTER N WITH CEDILLA char 0x145 .XX..XX. .XXX.XX. .XXXXXX. .XXXXXX. .XX.XXX. .XX..XX. .XX..XX. ..XXX... endchar # LATIN SMALL LETTER N WITH CEDILLA char 0x146 ........ ........ .XXXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXX... endchar # LATIN CAPITAL LETTER N WITH CARON char 0x147 ..X..X.. ...XX... .XX..XX. .XXX.XX. .XXXXXX. .XX.XXX. .XX..XX. ........ endchar # LATIN SMALL LETTER N WITH CARON char 0x148 ..X..X.. ...XX... ........ .XXXXX.. .XX..XX. .XX..XX. .XX..XX. ........ endchar # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE char 0x149 ........ X....... ........ .XXXXX.. .XX..XX. .XX..XX. .XX..XX. ........ endchar # LATIN CAPITAL LETTER ENG char 0x14a .XX..XX. .XXX.XX. .XXXXXX. .XXXXXX. .XX.XXX. .XX..XX. .XX...X. .....XX. endchar # LATIN SMALL LETTER ENG char 0x14b ........ ........ ........ .XXXXX.. .XX..XX. .XX..XX. .XX...X. .....XX. endchar # LATIN CAPITAL LETTER O WITH MACRON char 0x14c ..XXXX.. ........ ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. endchar # LATIN SMALL LETTER O WITH MACRON char 0x14d ........ ..XXXX.. ........ ..XXXX.. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # LATIN CAPITAL LETTER O WITH BREVE char 0x14e ..XX.XX. ...XX... ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. endchar # LATIN SMALL LETTER O WITH BREVE char 0x14f ..XX.XX. ...XX... ........ ..XXXX.. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE char 0x150 ..XX.XX. .XX.XX.. ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. endchar # LATIN SMALL LETTER O WITH DOUBLE ACUTE char 0x151 ..XX.XX. .XX.XX.. ........ ..XXXX.. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # LATIN CAPITAL LIGATURE OE char 0x0152 .XXXXXXX XX.XX... XX.XX... XX.XXXX. XX.XX... XX.XX... .XXXXXXX ........ endchar # LATIN SMALL LIGATURE OE char 0x0153 ........ ........ .XXXXXX. XX.XX.XX XX.XXXXX XX.XX... .XXXXXX. ........ endchar # LATIN CAPITAL LETTER R WITH ACUTE char 0x154 ...XX... .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. .XX.XX.. .XX..XX. ........ endchar # LATIN SMALL LETTER R WITH ACUTE char 0x155 ....XX.. ...XX... ........ .XXXXX.. .XX..XX. .XX..... .XX..... ........ endchar # LATIN CAPITAL LETTER R WITH CEDILLA char 0x156 .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. .XX.XX.. .XX..XX. ....X... ..XXX... endchar char 0x157 ........ ........ .XXXXX.. .XX..XX. .XX..... .XX..... ....X... ..XXX... endchar # LATIN CAPITAL LETTER R WITH CARON char 0x158 ..XX.XX. .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. .XX.XX.. .XX..XX. ........ endchar # LATIN SMALL LETTER R WITH CARON char 0x159 ..X..X.. ...XX... ........ .XXXXX.. .XX..XX. .XX..... .XX..... ........ endchar # LATIN CAPITAL LETTER S WITH ACUTE char 0x15a ....XX.. ..XXXXX. .XX..... ..XXXX.. .....XX. .XX..XX. ..XXXX.. ........ endchar # LATIN SMALL LETTER S WITH ACUTE char 0x15b ....XX.. ...XX... ..XXXXX. .XX..... ..XXXX.. .....XX. .XXXXX.. ........ endchar # LATIN CAPITAL LETTER S WITH CIRCUMFLEX char 0x15c ....XX.. ..XXXXX. .XX..... ..XXXX.. .....XX. .XX..XX. ..XXXX.. ........ endchar # LATIN SMALL LETTER S WITH CIRCUMFLEX char 0x15d ...XX... ..X..X.. ..XXXXX. .XX..... ..XXXX.. .....XX. .XXXXX.. ........ endchar # LATIN CAPITAL LETTER S WITH CEDILLA char 0x15e ..XXXXX. .XX..... ..XXXX.. .....XX. .XX..XX. ..XXXX.. ....X... ..XXX... endchar # LATIN SMALL LETTER S WITH CEDILLA char 0x15f ........ ........ ..XXXXX. .XX..... ..XXXX.. .....XX. .XXXXX.. ....XX.. endchar # LATIN CAPITAL LETTER S WITH CARON char 0x160 ..XX.XX. ..XXXXX. .XX..... ..XXXX.. .....XX. .XX..XX. ..XXXX.. ........ endchar # LATIN SMALL LETTER S WITH CARON char 0x161 ..X..X.. ...XX... ..XXXXX. .XX..... ..XXXX.. .....XX. .XXXXX.. ........ endchar # LATIN CAPITAL LETTER T WITH CEDILLA char 0x162 .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ..XX.... endchar # LATIN SMALL LETTER T WITH CEDILLA char 0x163 ........ ...XX... .XXXXXX. ...XX... ...XX... ...XX... ....XXX. ...XX... endchar # LATIN CAPITAL LETTER T WITH CARON char 0x164 ..X..X.. ...XX... .XXXXXX. ...XX... ...XX... ...XX... ...XX... ........ endchar # LATIN SMALL LETTER T WITH CARON char 0x165 ......XX ...XX..X .XXXXXX. ...XX... ...XX... ...XX... ....XXX. ........ endchar # LATIN CAPITAL LETTER T WITH STROKE char 0x166 ........ .XXXXXX. ...XX... ..XXXX.. ...XX... ...XX... ...XX... ........ endchar # LATIN SMALL LETTER T WITH STROKE char 0x167 ........ ...XX... .XXXXXX. ...XX... ..XXXX.. ...XX... ....XXX. ........ endchar # LATIN CAPITAL LETTER U WITH TILDE char 0x168 ..XX.X.. .X.XX... .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN SMALL LETTER U WITH TILDE char 0x169 ..XX.X.. .X.XX... ........ .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN CAPITAL LETTER U WITH MACRON char 0x16a ..XXXX.. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN SMALL LETTER U WITH MACRON char 0x16b ..XXXX.. ........ ........ .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN CAPITAL LETTER U WITH BREVE char 0x16c ..X..X.. ...XX... .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN SMALL LETTER U WITH BREVE char 0x16d ..X..X.. ...XX... ........ .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN CAPITAL LETTER U WITH RING ABOVE char 0x16e ...XX... ..X..X.. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN SMALL LETTER U WITH RING ABOVE char 0x16f ...XX... ..X..X.. ...XX... .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE char 0x170 ..XX.XX. .XX.XX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN SMALL LETTER U WITH DOUBLE ACUTE char 0x171 ..XX.XX. .XX.XX.. ........ .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ........ endchar # LATIN CAPITAL LETTER U WITH OGONEK char 0x172 .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ....X... endchar # LATIN SMALL LETTER U WITH OGONEK char 0x173 ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXXX. ....X... endchar # LATIN CAPITAL LETTER W WITH CIRCUMFLEX char 0x174 ....XX.. XX...XX. XX...XX. XX...XX. XX.X.XX. XXXXXXX. XXX.XXX. XX...XX. endchar # LATIN SMALL LETTER W WITH CIRCUMFLEX char 0x175 ...XX... ..X..X.. XX...XX. XX...XX. XX.X.XX. .XXXXX.. .XX.XX.. ........ endchar # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX char 0x176 ...XX... ..X..X.. .XX..XX. .XX..XX. ..XXXX.. ...XX... ...XX... ........ endchar # LATIN SMALL LETTER Y WITH CIRCUMFLEX char 0x177 ...XX... ..X..X.. .XX..XX. .XX..XX. .XX..XX. ..XXXXX. .....XX. .XXXXX.. endchar # LATIN CAPITAL LETTER Y WITH DIAERESIS char 0x178 .XX..XX. ........ .XX..XX. .XX..XX. ..XXXX.. ...XX... ...XX... ........ endchar # LATIN CAPITAL LETTER Z WITH ACUTE char 0x179 ....XX.. .XXXXXX. ....XX.. ...XX... ..XX.... .XX..... .XXXXXX. ........ endchar # LATIN SMALL LETTER Z WITH ACUTE char 0x17a ....XX.. ...XX... .XXXXXX. ....XX.. ...XX... ..XX.... .XXXXXX. ........ endchar # LATIN CAPITAL LETTER Z WITH DOT ABOVE char 0x17b ....X... .XXXXXX. ....XX.. ...XX... ..XX.... .XX..... .XXXXXX. ........ endchar # LATIN SMALL LETTER Z WITH DOT ABOVE char 0x17c ....X... ........ .XXXXXX. ....XX.. ...XX... ..XX.... .XXXXXX. ........ endchar # LATIN CAPITAL LETTER Z WITH CARON char 0x17d .XX..XX. ...XX... .XXXXXX. ....XX.. ...XX... ..XX.... .XXXXXX. ........ endchar # LATIN SMALL LETTER Z WITH CARON char 0x17e ..X..X.. ...XX... ........ .XXXXXX. ....XX.. ..XX.... .XXXXXX. ........ endchar # LATIN SMALL LETTER LONG S char 0x17f ...XXX.. ..XX.... .XXX.... ..XX.... ..XX.... ..XX.... ..XX.... ........ endchar char 0x180 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x181 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x182 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x183 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x184 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x185 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x186 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x187 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x188 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x189 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x18a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x18b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x18c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x18d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x18e ........ ........ ........ ........ ........ ........ ........ ........ endchar # LATIN CAPITAL LETTER SCHWA char 0x018f ........ ........ ..XXXX.. .....XX. .XXXXXX. .XX..XX. ..XXXX.. ........ endchar char 0x190 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x191 ........ ........ ........ ........ ........ ........ ........ ........ endchar # LATIN SMALL LETTER F WITH HOOK char 0x0192 ...XXXX. ..XX.... .XXXXX.. ..XX.... ..XX.... ..XX.... .XX..... ........ endchar char 0x193 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x194 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x195 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x196 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x197 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x198 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x199 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x19a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x19b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x19c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x19d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x19e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x19f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1a0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1a1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1a2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1a3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1a4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1a5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1a6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1a7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1a8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1a9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1aa ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1ab ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1ac ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1ad ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1ae ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1af ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1b0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1b1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1b2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1b3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1b4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1b5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1b6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1b7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1b8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1b9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1ba ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1bb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1bc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1bd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1be ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1bf ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1c0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1c1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1c2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1c3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1c4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1c5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1c6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1c7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1c8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1c9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1ca ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1cb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1cc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1cd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1ce ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1cf ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1d0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1d1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1d2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1d3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1d4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1d5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1d6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1d7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1d8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1d9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1da ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1db ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1dc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1dd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1de ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1df ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1e0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1e1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1e2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1e3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1e4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1e5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1e6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1e7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1e8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1e9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1ea ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1eb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1ec ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1ed ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1ee ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1ef ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1f0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1f1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1f2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1f3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1f4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1f5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1f6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1f7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1f8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1f9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1fa ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1fb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1fc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1fd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1fe ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x1ff ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x200 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x201 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x202 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x203 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x204 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x205 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x206 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x207 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x208 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x209 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x20a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x20b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x20c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x20d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x20e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x20f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x210 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x211 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x212 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x213 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x214 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x215 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x216 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x217 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x218 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x219 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x21a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x21b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x21c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x21d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x21e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x21f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x220 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x221 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x222 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x223 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x224 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x225 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x226 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x227 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x228 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x229 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x22a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x22b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x22c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x22d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x22e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x22f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x230 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x231 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x232 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x233 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x234 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x235 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x236 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x237 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x238 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x239 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x23a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x23b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x23c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x23d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x23e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x23f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x240 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x241 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x242 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x243 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x244 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x245 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x246 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x247 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x248 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x249 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x24a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x24b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x24c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x24d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x24e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x24f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x250 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x251 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x252 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x253 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x254 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x255 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x256 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x257 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x258 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x259 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x25a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x25b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x25c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x25d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x25e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x25f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x260 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x261 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x262 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x263 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x264 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x265 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x266 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x267 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x268 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x269 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x26a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x26b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x26c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x26d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x26e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x26f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x270 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x271 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x272 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x273 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x274 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x275 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x276 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x277 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x278 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x279 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x27a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x27b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x27c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x27d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x27e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x27f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x280 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x281 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x282 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x283 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x284 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x285 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x286 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x287 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x288 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x289 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x28a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x28b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x28c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x28d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x28e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x28f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x290 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x291 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x292 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x293 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x294 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x295 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x296 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x297 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x298 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x299 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x29a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x29b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x29c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x29d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x29e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x29f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2a0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2a1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2a2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2a3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2a4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2a5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2a6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2a7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2a8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2a9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2aa ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2ab ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2ac ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2ad ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2ae ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2af ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2b0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2b1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2b2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2b3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2b4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2b5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2b6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2b7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2b8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2b9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2ba ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2bb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2bc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2bd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2be ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2bf ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2c0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2c1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2c2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2c3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2c4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2c5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2c6 ........ ........ ........ ........ ........ ........ ........ ........ endchar # CARON char 0x2c7 ..X..X.. ...XX... ........ ........ ........ ........ ........ ........ endchar char 0x2c8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2c9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2ca ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2cb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2cc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2cd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2ce ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2cf ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2d0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2d1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2d2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2d3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2d4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2d5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2d6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2d7 ........ ........ ........ ........ ........ ........ ........ ........ endchar # BREVE char 0x2d8 .XX..XX. ..XXXX.. ........ ........ ........ ........ ........ ........ endchar # DOT ABOVE char 0x2d9 ....X... ........ ........ ........ ........ ........ ........ ........ endchar char 0x2da ........ ........ ........ ........ ........ ........ ........ ........ endchar # OGONEK char 0x2db ........ ........ ........ ........ ........ ........ ...XX... ....XX.. endchar char 0x2dc ........ ........ ........ ........ ........ ........ ........ ........ endchar # DOUBLE ACUTE ACCENT char 0x2dd ..XX.XX. .XX.XX.. ........ ........ ........ ........ ........ ........ endchar char 0x2de ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2df ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2e0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2e1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2e2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2e3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2e4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2e5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2e6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2e7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2e8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2e9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2ea ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2eb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2ec ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2ed ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2ee ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2ef ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2f0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2f1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2f2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2f3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2f4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2f5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2f6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2f7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2f8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2f9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2fa ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2fb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2fc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2fd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2fe ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x2ff ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x300 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x301 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x302 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x303 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x304 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x305 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x306 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x307 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x308 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x309 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x30a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x30b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x30c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x30d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x30e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x30f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x310 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x311 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x312 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x313 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x314 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x315 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x316 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x317 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x318 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x319 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x31a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x31b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x31c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x31d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x31e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x31f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x320 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x321 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x322 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x323 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x324 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x325 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x326 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x327 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x328 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x329 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x32a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x32b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x32c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x32d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x32e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x32f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x330 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x331 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x332 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x333 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x334 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x335 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x336 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x337 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x338 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x339 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x33a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x33b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x33c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x33d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x33e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x33f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x340 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x341 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x342 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x343 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x344 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x345 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x346 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x347 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x348 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x349 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x34a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x34b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x34c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x34d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x34e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x34f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x350 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x351 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x352 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x353 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x354 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x355 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x356 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x357 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x358 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x359 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x35a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x35b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x35c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x35d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x35e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x35f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x360 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x361 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x362 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x363 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x364 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x365 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x366 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x367 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x368 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x369 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x36a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x36b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x36c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x36d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x36e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x36f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x370 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x371 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x372 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x373 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x374 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x375 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x376 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x377 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x378 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x379 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x37a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x37b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x37c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x37d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x37e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x37f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x380 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x381 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x382 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x383 ........ ........ ........ ........ ........ ........ ........ ........ endchar # GREEK TONOS char 0x384 ...XX... ........ ........ ........ ........ ........ ........ ........ endchar # GREEK DIALYTIKA TONOS char 0x385 .XX..XX. .....X.. ........ ........ ........ ........ ........ ........ endchar # GREEK CAPITAL LETTER ALPHA WITH TONOS char 0x386 X..XX... X.XXXX.. .XX..XX. .XX..XX. .XXXXXX. .XX..XX. .XX..XX. ........ endchar # GREEK ANO TELEIA char 0x387 ........ ........ ........ ........ ...XX... ...XX... ........ ........ endchar # GREEK CAPITAL LETTER EPSILON WITH TONOS char 0x388 X.XXXXXX X.XX.... ..XX.... ..XXXXX. ..XX.... ..XX.... ..XXXXXX ........ endchar # GREEK CAPITAL LETTER ETA WITH TONOS char 0x389 X.XX..XX X.XX..XX ..XX..XX ..XXXXXX ..XX..XX ..XX..XX ..XX..XX ........ endchar # GREEK CAPITAL LETTER IOTA WITH TONOS char 0x38a X.XXXX.. X..XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ........ endchar char 0x38b ........ ........ ........ ........ ........ ........ ........ ........ endchar # GREEK CAPITAL LETTER OMICRON WITH TONOS char 0x38c X..XXXX. X.XX..XX ..XX..XX ..XX..XX ..XX..XX ..XX..XX ...XXXX. ........ endchar char 0x38d ........ ........ ........ ........ ........ ........ ........ ........ endchar # GREEK CAPITAL LETTER UPSILON WITH TONOS char 0x38e X.XX..XX X.XX..XX ..XX..XX ...XXXX. ....XX.. ....XX.. ....XX.. ........ endchar # GREEK CAPITAL LETTER OMEGA WITH TONOS char 0x38f X..XXXX. X.XX..XX ..XX..XX ..XX..XX ...XXXX. ........ ..XXXXXX ........ endchar # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS char 0x390 .XX..XX. ........ ...XX... ...XX... ...XX... ...XX.X. ....XX.. ........ endchar # GREEK CAPITAL LETTER ALPHA char 0x391 ...XX... ..XXXX.. .XX..XX. .XX..XX. .XXXXXX. .XX..XX. .XX..XX. ........ endchar char 0x392 .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. ........ endchar # GREEK CAPITAL LETTER GAMMA char 0x0393 ........ XXXXXXX. .XX..XX. .XX...X. .XX..... .XX..... .XX..... XXXXX... endchar # GREEK CAPITAL LETTER DELTA char 0x394 ...XX... ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ........ endchar # GREEK CAPITAL LETTER EPSILON char 0x395 .XXXXXX. .XX..... .XX..... .XXXXX.. .XX..... .XX..... .XXXXXX. ........ endchar # GREEK CAPITAL LETTER ZETA char 0x396 .XXXXXX. .....XX. ....XX.. ...XX... ..XX.... .XX..... .XXXXXX. ........ endchar # GREEK CAPITAL LETTER ETA char 0x397 .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. ........ endchar # GREEK CAPITAL LETTER THETA char 0x0398 ........ ..XXXX.. .XX..XX. .XXXXXX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # GREEK CAPITAL LETTER IOTA char 0x399 ..XXXX.. ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ........ endchar # GREEK CAPITAL LETTER KAPPA char 0x39a .XX..XX. .XX.XX.. .XXXX... .XXX.... .XXXX... .XX.XX.. .XX..XX. ........ endchar # GREEK CAPITAL LETTER LAMDA char 0x39b ...XX... ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ endchar # GREEK CAPITAL LETTER MU char 0x39c XX...XX. XXX.XXX. XXXXXXX. XX.X.XX. XX...XX. XX...XX. XX...XX. ........ endchar # GREEK CAPITAL LETTER NU char 0x39d .XX..XX. .XXX.XX. .XXX.XX. .XXXXXX. .XX.XXX. .XX.XXX. .XX..XX. ........ endchar # GREEK CAPITAL LETTER XI char 0x39e .XXXXXX. ........ ........ ..XXXX.. ........ ........ .XXXXXX. ........ endchar # GREEK CAPITAL LETTER OMICRON char 0x39f ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # GREEK CAPITAL LETTER PI char 0x3a0 .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ endchar # GREEK CAPITAL LETTER RHO char 0x3a1 .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. .XX..... .XX..... .XX..... ........ endchar char 0x3a2 ........ ........ ........ ........ ........ ........ ........ ........ endchar # GREEK CAPITAL LETTER SIGMA char 0x03a3 XXXXXXX. .XX..XX. ..XX.... ...XX... ..XX.... .XX..XX. XXXXXXX. ........ endchar # GREEK CAPITAL LETTER TAU char 0x3a4 .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...XX... ...XX... ........ endchar # GREEK CAPITAL LETTER UPSILON char 0x3a5 .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ...XX... ...XX... ...XX... ........ endchar # GREEK CAPITAL LETTER PHI char 0x03a6 ..XXXX.. ...XX... ..XXXX.. .XX..XX. .XX..XX. ..XXXX.. ...XX... ..XXXX.. endchar # GREEK CAPITAL LETTER CHI char 0x3a7 .XX..XX. .XX..XX. ..XXXX.. ...XX... ..XXXX.. .XX..XX. .XX..XX. ........ endchar # GREEK CAPITAL LETTER PSI char 0x3a8 XX...XX. XX.X.XX. XX.X.XX. XX.X.XX. .XXXXX.. ...X.... ...X.... ........ endchar # GREEK CAPITAL LETTER OMEGA char 0x03a9 ........ ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ..X..X.. .XX..XX. ........ endchar # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA char 0x3aa ..X..X.. ..XXXX.. ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. endchar # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA char 0x3ab .X.XX.X. .XX..XX. .XX..XX. ..XXXX.. ...XX... ...XX... ...XX... ........ endchar # GREEK SMALL LETTER ALPHA WITH TONOS char 0x3ac ...XX... ........ ..XXXXX. .XX..XX. .XX..XX. .XX..XX. ..XXXXXX ........ endchar # GREEK SMALL LETTER EPSILON WITH TONOS char 0x3ad ...XX... ........ ..XXXXX. .XX..... .XXXXX.. .XX..... ..XXXXX. ........ endchar # GREEK SMALL LETTER ETA WITH TONOS char 0x3ae ...XX... ........ XXXXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ endchar # GREEK SMALL LETTER IOTA WITH TONOS char 0x3af ...XX... ........ ..XX.... ..XX.... ..XX.... ..XX.X.. ...XX... ........ endchar # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS char 0x3b0 .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # GREEK SMALL LETTER ALPHA char 0x03b1 ........ ........ .XXX.XX. XX.XXX.. XX..X... XX.XXX.. .XXX.XX. ........ endchar # GREEK SMALL LETTER BETA char 0x03b2 ...XXX.. ..XX.XX. .XX..XX. .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. .XX..... endchar # GREEK SMALL LETTER GAMMA char 0x3b3 ........ ........ .XX..XX. ..XXXX.. ...XX... ..XXXX.. ..X..X.. ..XXXX.. endchar # GREEK SMALL LETTER DELTA char 0x03b4 ...XXX.. ..XX.XX. .XXXX... XX.XXX.. XX..XX.. XXX.XX.. .XXXX... ........ endchar # GREEK SMALL LETTER EPSILON char 0x3b5 ........ ........ ..XXXXX. .XX..... .XXXXX.. .XX..... ..XXXXX. ........ endchar # GREEK SMALL LETTER ZETA char 0x3b6 .XXXXXX. ...XX... ..XX.... .XX..... ..XX.... ...XX... ....XX.. .XXXXX.. endchar # GREEK SMALL LETTER ETA char 0x3b7 ........ ........ XXXXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ endchar # GREEK SMALL LETTER THETA char 0x3b8 ..XXXX.. .XX..XX. .XX..XX. ...XXXX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # GREEK SMALL LETTER IOTA char 0x3b9 ........ ........ ..XX.... ..XX.... ..XX.... ..XX.X.. ...XX... ........ endchar # GREEK SMALL LETTER KAPPA char 0x3ba ........ ........ .XX..XX. .XX.XX.. .XXXX... .XX..XX. .XX..XX. ........ endchar # GREEK SMALL LETTER LAMDA char 0x3bb ..XXXX.. .XX..XX. .....XX. ..XXXXX. .XX..XX. .XX..XX. .XX..XX. ........ endchar # GREEK SMALL LETTER MU char 0x03bc ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXXX .XX..... endchar # GREEK SMALL LETTER NU char 0x03bd ........ ........ .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ...XX... ........ endchar # GREEK SMALL LETTER XI char 0x03be .XXXXXX. ...XX... ..XX.... ...XX... ..XX.... ...XX... ....XX.. .....X.. endchar # GREEK SMALL LETTER OMICRON char 0x03bf ........ ........ ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # GREEK SMALL LETTER PI char 0x03c0 ........ ........ XXXXXXX. .XX.XX.. .XX.XX.. .XX.XX.. .XX.XX.. .X..X... endchar # GREEK SMALL LETTER RHO char 0x03c1 ........ ........ ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XXXXX.. .XX..... endchar # GREEK SMALL LETTER FINAL SIGMA char 0x03c2 ........ ........ ..XXXXX. .XX..... ..XXXX.. .....XX. .XXXXX.. ........ endchar # GREEK SMALL LETTER SIGMA char 0x03c3 ........ ...XXXX. ..XXX... .XX.XX.. .XX.XX.. .XX.XX.. ..XXX... ........ endchar # GREEK SMALL LETTER TAU char 0x03c4 ........ ........ .XXXXXX. ...XX... ...XX... ...XX... ...XX... ...X.... endchar # GREEK SMALL LETTER UPSILON char 0x3c5 ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # GREEK SMALL LETTER PHI char 0x03c6 ........ ...X.... .XXXXX.. XX.X.XX. XX.X.XX. XX.X.XX. .XXXXX.. ...X.... endchar # GREEK SMALL LETTER CHI char 0x3c7 ........ ........ .XX..XX. .XX..XX. ..XXXX.. ...XX... ..XXXX.. .XX..XX. endchar # GREEK SMALL LETTER PSI char 0x3c8 ........ ........ XX...XX. XX.X.XX. XX.X.XX. XX.X.XX. .XXXXX.. ...X.... endchar # GREEK SMALL LETTER OMEGA char 0x3c9 ........ ........ XX...XX. XX.X.XX. XX.X.XX. XX.X.XX. .XXXXX.. ........ endchar # GREEK SMALL LETTER IOTA WITH DIALYTIKA char 0x3ca .XX..XX. ........ ...XX... ...XX... ...XX... ...XX.X. ....XX.. ........ endchar # GREEK SMALL LETTER UPSILON WITH DIALYTIKA char 0x3cb .XX..XX. ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # GREEK SMALL LETTER OMICRON WITH TONOS char 0x3cc ...XX... ........ ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # GREEK SMALL LETTER UPSILON WITH TONOS char 0x3cd ...XX... ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # GREEK SMALL LETTER OMEGA WITH TONOS char 0x3ce ...XX... ........ XX...XX. XX.X.XX. XX.X.XX. XX.X.XX. .XXXXX.. ........ endchar char 0x3cf ........ ........ ........ ........ ........ ........ ........ ........ endchar # GREEK BETA SYMBOL char 0x3d0 ..XXX... .X...X.. .X...... ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. endchar # GREEK THETA SYMBOL char 0x3d1 ....XX.. ......X. ......X. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ...XX... endchar char 0x3d2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3d3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3d4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3d5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3d6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3d7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3d8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3d9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3da ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3db ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3dc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3dd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3de ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3df ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3e0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3e1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3e2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3e3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3e4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3e5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3e6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3e7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3e8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3e9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3ea ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3eb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3ec ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3ed ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3ee ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3ef ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3f0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3f1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3f2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3f3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3f4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3f5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3f6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3f7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3f8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3f9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3fa ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3fb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3fc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3fd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3fe ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x3ff ........ ........ ........ ........ ........ ........ ........ ........ endchar # CYRILLIC CAPITAL LETTER IE WITH GRAVE char 0x400 ..XX.... XXXXXXX. .XX...X. .XX.X... .XXXX... .XX.X... .XX...X. XXXXXXX. endchar # CYRILLIC CAPITAL LETTER IO char 0x401 ..X..X.. XXXXXXX. .XX...X. .XX.X... .XXXX... .XX.X... .XX...X. XXXXXXX. endchar # CYRILLIC CAPITAL LETTER DJE char 0x402 .XXXXXX. .X.XX.X. ...XX... ...XXXX. ...XX.X. ...XX.X. ..XXXX.. ........ endchar # CYRILLIC CAPITAL LETTER GJE char 0x403 .....X.. .XXXXXX. .XX..... .XX..... .XX..... .XX..... .XX..... .XX..... endchar # CYRILLIC CAPITAL LETTER UKRAINIAN IE char 0x404 ..XXXX.. .XX..XX. .XX..... .XXXX... .XX..... .XX..XX. ..XXXX.. ........ endchar # CYRILLIC CAPITAL LETTER DZE char 0x405 ..XXXX.. .XX..XX. .XX..... ..XXXX.. .....XX. .XX..XX. ..XXXX.. ........ endchar # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I char 0x406 ..XXXX.. ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. ........ endchar # CYRILLIC CAPITAL LETTER YI char 0x407 ..X..X.. ..XXXX.. ...XX... ...XX... ...XX... ...XX... ...XX... ..XXXX.. endchar # CYRILLIC CAPITAL LETTER JE char 0x408 .....XX. .....XX. .....XX. .....XX. .....XX. .XX..XX. ..XXXX.. ........ endchar # CYRILLIC CAPITAL LETTER LJE char 0x409 ....XX.. ....XX.. ....XX.. ....XX.. ....XXXX .XX.XX.X ..XXXXX. ........ endchar # CYRILLIC CAPITAL LETTER NJE char 0x40a .X..XX.. .X..XX.. .X..XX.. .XXXXX.. .X..XXXX .X..XX.X .X..XXX. ........ endchar # CYRILLIC CAPITAL LETTER TSHE char 0x40b .XXXXXX. .X.XX.X. ...XX... ...XXXX. ...XX.X. ...XX.X. ..XXXX.. ........ endchar # CYRILLIC CAPITAL LETTER KJE char 0x40c .....X.. .XX..XX. .XX.XX.. .XXXX... .XXX.... .XXXX... .XX.XX.. .XX..XX. endchar # CYRILLIC CAPITAL LETTER I WITH GRAVE char 0x40d ...X.... .XX..XX. .XX..XX. .XX.XXX. .XXXXXX. .XXX.XX. .XX..XX. .XX..XX. endchar # CYRILLIC CAPITAL LETTER SHORT U char 0x40e ...XX... .XX..XX. .XX..XX. .XX..XX. ..XXXXX. .....XX. .....XX. .XXXXX.. endchar # CYRILLIC CAPITAL LETTER DZHE char 0x40f .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ...XX... endchar # CYRILLIC CAPITAL LETTER A char 0x410 ...XX... ..XXXX.. .XX..XX. .XX..XX. .XXXXXX. .XX..XX. .XX..XX. ........ endchar # CYRILLIC CAPITAL LETTER BE char 0x411 .XXXXXX. .XX..... .XX..... .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. ........ endchar # CYRILLIC CAPITAL LETTER VE char 0x412 XXXXXX.. .XX..XX. .XX..XX. .XXXXX.. .XX..XX. .XX..XX. XXXXXX.. ........ endchar # CYRILLIC CAPITAL LETTER GHE char 0x413 .XXXXXX. .XX...X. .XX..... .XX..... .XX..... .XX..... .XX..... ........ endchar # CYRILLIC CAPITAL LETTER DE char 0x414 ..XXXX.. .XX.XX.. .XX.XX.. .XX.XX.. .XX.XX.. .XX.XX.. XXXXXXXX XX....XX endchar # CYRILLIC CAPITAL LETTER IE char 0x415 XXXXXXX. .XX...X. .XX.X... .XXXX... .XX.X... .XX...X. XXXXXXX. ........ endchar # CYRILLIC CAPITAL LETTER ZHE char 0x416 XX.XX.XX XX.XX.XX .XXXXXX. .XXXXXX. XX.XX.XX XX.XX.XX XX.XX.XX ........ endchar # CYRILLIC CAPITAL LETTER ZE char 0x417 ..XXXX.. .XX..XX. .....XX. ...XXX.. .....XX. .XX..XX. ..XXXX.. ........ endchar # CYRILLIC CAPITAL LETTER I char 0x418 .XX..XX. .XX..XX. .XX.XXX. .XXXXXX. .XXX.XX. .XX..XX. .XX..XX. ........ endchar # CYRILLIC CAPITAL LETTER SHORT I char 0x419 .X.XXX.. .XX..XX. .XX.XXX. .XXXXXX. .XXX.XX. .XX..XX. .XX..XX. ........ endchar # CYRILLIC CAPITAL LETTER KA char 0x41a XXX..XX. .XX..XX. .XX.XX.. .XXXX... .XX.XX.. .XX..XX. XXX..XX. ........ endchar # CYRILLIC CAPITAL LETTER EL char 0x41b ...XXXXX ..XXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. XXX..XX. ........ endchar # CYRILLIC CAPITAL LETTER EM char 0x41c XX...XX. XXX.XXX. XXXXXXX. XX.X.XX. XX...XX. XX...XX. XX...XX. ........ endchar # CYRILLIC CAPITAL LETTER EN char 0x41d .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .XX..XX. .XX..XX. .XX..XX. ........ endchar # CYRILLIC CAPITAL LETTER O char 0x41e ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # CYRILLIC CAPITAL LETTER PE char 0x41f .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ endchar # CYRILLIC CAPITAL LETTER ER char 0x420 XXXXXX.. .XX..XX. .XX..XX. .XXXXX.. .XX..... .XX..... XXXX.... ........ endchar # CYRILLIC CAPITAL LETTER ES char 0x421 ..XXXX.. .XX..XX. .XX..... .XX..... .XX..... .XX..XX. ..XXXX.. ........ endchar # CYRILLIC CAPITAL LETTER TE char 0x422 .XXXXXX. .X.XX.X. ...XX... ...XX... ...XX... ...XX... ..XXXX.. ........ endchar # CYRILLIC CAPITAL LETTER U char 0x423 .XX..XX. .XX..XX. .XX..XX. ..XXXXX. .....XX. .....XX. .XXXXX.. ........ endchar # CYRILLIC CAPITAL LETTER EF char 0x424 ...XX... .XXXXXX. XX.XX.XX XX.XX.XX .XXXXXX. ...XX... ..XXXX.. ........ endchar # CYRILLIC CAPITAL LETTER HA char 0x425 XX...XX. XX...XX. .XX.XX.. ..XXX... ..XXX... .XX.XX.. XX...XX. ........ endchar # CYRILLIC CAPITAL LETTER TSE char 0x426 .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXXX ......XX endchar # CYRILLIC CAPITAL LETTER CHE char 0x427 .XX..XX. .XX..XX. .XX..XX. .XXXXXX. .....XX. .....XX. .....XX. ........ endchar # CYRILLIC CAPITAL LETTER SHA char 0x428 XX.X.XX. XX.X.XX. XX.X.XX. XX.XX.X. XX.XX.X. XX.XX.X. XXXXXXX. ........ endchar # CYRILLIC CAPITAL LETTER SHCHA char 0x429 XX.X.XX. XX.X.XX. XX.X.XX. XX.XX.X. XX.XX.X. XX.XX.X. XXXXXXXX ......XX endchar # CYRILLIC CAPITAL LETTER HARD SIGN char 0x42a XXX..... .XX..... .XX..... .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. ........ endchar # CYRILLIC CAPITAL LETTER YERU char 0x42b XX....XX XX....XX XX....XX XXXXX.XX XX.XXXXX XX..XXXX XXXXX.XX ........ endchar # CYRILLIC CAPITAL LETTER SOFT SIGN char 0x42c .XX..... .XX..... .XX..... .XXXXX.. .XX..XX. .XX..XX. .XXXXX.. ........ endchar # CYRILLIC CAPITAL LETTER E char 0x42d ..XXXX.. .XX..XX. .....XX. ...XXXX. .....XX. .XX..XX. ..XXXX.. ........ endchar # CYRILLIC CAPITAL LETTER YU char 0x42e XX..XXX. XX.XX.XX XX.XX.XX XXXXX.XX XX.XX.XX XX.XX.XX XX..XXX. ........ endchar # CYRILLIC CAPITAL LETTER YA char 0x42f ..XXXXXX .XX..XX. .XX..XX. ..XXXXX. ..XX.XX. .XX..XX. .XX..XXX ........ endchar # CYRILLIC SMALL LETTER A char 0x430 ........ ........ .XXXX... ....XX.. .XXXXX.. XX..XX.. .XXX.XX. ........ endchar # CYRILLIC SMALL LETTER BE char 0x431 ......X. ..XXXXX. .XX..... .XXXXX.. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # CYRILLIC SMALL LETTER VE char 0x432 ........ ........ .XXXXX.. .XX..XX. .XXXXX.. .XX..XX. .XXXXX.. ........ endchar # CYRILLIC SMALL LETTER GHE char 0x433 ........ ........ ..XXXXX. ..XX.... ..XX.... ..XX.... ..XX.... ........ endchar # CYRILLIC SMALL LETTER DE char 0x434 ........ ........ ...XXXX. ..XX.XX. ..XX.XX. ..XX.XX. .XXXXXXX .XX...XX endchar # CYRILLIC SMALL LETTER IE char 0x435 ........ ........ ..XXXX.. .XX..XX. .XXXXXX. .XX..... ..XXXXX. ........ endchar # CYRILLIC SMALL LETTER ZHE char 0x436 ........ ........ XX.XX.XX XX.XX.XX .XXXXXX. XX.XX.XX XX.XX.XX ........ endchar # CYRILLIC SMALL LETTER ZE char 0x437 ........ ........ .XXXXX.. .....XX. ...XXX.. .....XX. .XXXXX.. ........ endchar # CYRILLIC SMALL LETTER I char 0x438 ........ ........ XX..XX.. XX..XX.. XX..XX.. XX..XX.. .XXX.XX. ........ endchar # CYRILLIC SMALL LETTER SHORT I char 0x439 ...XXX.. ........ XX..XX.. XX..XX.. XX..XX.. XX..XX.. .XXX.XX. ........ endchar # CYRILLIC SMALL LETTER KA char 0x43a ........ ........ .XX..XX. .XX.XX.. .XXXX... .XX.XX.. .XX..XX. ........ endchar # CYRILLIC SMALL LETTER EL char 0x43b ........ ........ ...XXXX. ..XX.XX. ..XX.XX. ..XX.XX. .XXX.XX. ........ endchar # CYRILLIC SMALL LETTER EM char 0x43c ........ ........ XX..XX.. XXXXXXX. XXXXXXX. XX.X.XX. XX...XX. ........ endchar # CYRILLIC SMALL LETTER EN char 0x43d ........ ........ .XX..XX. .XX..XX. .XXXXXX. .XX..XX. .XX..XX. ........ endchar # CYRILLIC SMALL LETTER O char 0x43e ........ ........ ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ endchar # CYRILLIC SMALL LETTER PE char 0x43f ........ ........ .XXXXXX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ endchar # CYRILLIC SMALL LETTER ER char 0x440 ........ ........ .XXXXX.. .XX..XX. .XX..XX. .XX..XX. .XXXXX.. .XX..... endchar # CYRILLIC SMALL LETTER ES char 0x441 ........ ........ ..XXXX.. .XX..XX. .XX..... .XX..XX. ..XXXX.. ........ endchar # CYRILLIC SMALL LETTER TE char 0x442 ........ ........ .XXXXXX. ...XX... ...XX... ...XX... ...XX... ........ endchar # CYRILLIC SMALL LETTER U char 0x443 ........ ........ .XX..XX. .XX..XX. .XX..XX. ..XXXXX. .....XX. .XXXXX.. endchar # CYRILLIC SMALL LETTER EF char 0x444 ........ ...XX... .XXXXXX. XX.XX.XX XX.XX.XX XX.XX.XX .XXXXXX. ...XX... endchar # CYRILLIC SMALL LETTER HA char 0x445 ........ ........ XX...XX. .XX.XX.. ..XXX... .XX.XX.. XX...XX. ........ endchar # CYRILLIC SMALL LETTER TSE char 0x446 ........ ........ .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XXXXXXX ......XX endchar # CYRILLIC SMALL LETTER CHE char 0x447 ........ ........ .XX..XX. .XX..XX. .XXXXXX. .....XX. .....XX. ........ endchar # CYRILLIC SMALL LETTER SHA char 0x448 ........ ........ XX.X.XX. XX.X.XX. XX.XX.X. XX.XX.X. XXXXXXX. ........ endchar # CYRILLIC SMALL LETTER SHCHA char 0x449 ........ ........ XX.X.XX. XX.X.XX. XX.XX.X. XX.XX.X. XXXXXXXX ......XX endchar # CYRILLIC SMALL LETTER HARD SIGN char 0x44a ........ ........ XXX..... .XX..... .XXXXX.. .XX..XX. .XXXXX.. ........ endchar # CYRILLIC SMALL LETTER YERU char 0x44b ........ ........ XX...XX. XX...XX. XXXXX.X. XX..XXX. XXXXX.X. ........ endchar # CYRILLIC SMALL LETTER SOFT SIGN char 0x44c ........ ........ .XX..... .XX..... .XXXXX.. .XX..XX. .XXXXX.. ........ endchar # CYRILLIC SMALL LETTER E char 0x44d ........ ........ .XXXXX.. .....XX. ..XXXXX. .....XX. .XXXXX.. ........ endchar # CYRILLIC SMALL LETTER YU char 0x44e ........ ........ XX..XXX. XX.XX.XX XXXX..XX XX.XX.XX XX..XXX. ........ endchar # CYRILLIC SMALL LETTER YA char 0x44f ........ ........ ..XXXXX. .XX..XX. ..XXXXX. ..XX.XX. .XX..XX. ........ endchar char 0x450 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x451 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x452 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x453 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x454 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x455 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x456 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x457 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x458 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x459 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x45a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x45b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x45c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x45d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x45e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x45f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x460 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x461 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x462 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x463 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x464 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x465 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x466 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x467 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x468 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x469 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x46a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x46b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x46c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x46d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x46e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x46f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x470 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x471 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x472 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x473 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x474 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x475 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x476 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x477 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x478 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x479 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x47a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x47b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x47c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x47d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x47e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x47f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x480 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x481 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x482 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x483 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x484 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x485 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x486 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x487 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x488 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x489 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x48a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x48b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x48c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x48d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x48e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x48f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x490 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x491 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x492 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x493 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x494 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x495 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x496 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x497 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x498 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x499 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x49a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x49b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x49c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x49d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x49e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x49f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4a0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4a1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4a2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4a3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4a4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4a5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4a6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4a7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4a8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4a9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4aa ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4ab ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4ac ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4ad ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4ae ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4af ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4b0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4b1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4b2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4b3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4b4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4b5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4b6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4b7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4b8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4b9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4ba ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4bb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4bc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4bd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4be ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4bf ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4c0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4c1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4c2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4c3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4c4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4c5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4c6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4c7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4c8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4c9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4ca ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4cb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4cc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4cd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4ce ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4cf ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4d0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4d1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4d2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4d3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4d4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4d5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4d6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4d7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4d8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4d9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4da ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4db ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4dc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4dd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4de ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4df ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4e0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4e1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4e2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4e3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4e4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4e5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4e6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4e7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4e8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4e9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4ea ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4eb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4ec ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4ed ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4ee ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4ef ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4f0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4f1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4f2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4f3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4f4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4f5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4f6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4f7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4f8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4f9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4fa ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4fb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4fc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4fd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4fe ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x4ff ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x500 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x501 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x502 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x503 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x504 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x505 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x506 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x507 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x508 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x509 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x50a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x50b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x50c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x50d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x50e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x50f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x510 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x511 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x512 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x513 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x514 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x515 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x516 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x517 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x518 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x519 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x51a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x51b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x51c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x51d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x51e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x51f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x520 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x521 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x522 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x523 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x524 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x525 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x526 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x527 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x528 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x529 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x52a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x52b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x52c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x52d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x52e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x52f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x530 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x531 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x532 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x533 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x534 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x535 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x536 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x537 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x538 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x539 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x53a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x53b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x53c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x53d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x53e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x53f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x540 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x541 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x542 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x543 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x544 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x545 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x546 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x547 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x548 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x549 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x54a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x54b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x54c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x54d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x54e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x54f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x550 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x551 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x552 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x553 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x554 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x555 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x556 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x557 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x558 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x559 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x55a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x55b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x55c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x55d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x55e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x55f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x560 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x561 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x562 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x563 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x564 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x565 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x566 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x567 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x568 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x569 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x56a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x56b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x56c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x56d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x56e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x56f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x570 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x571 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x572 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x573 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x574 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x575 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x576 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x577 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x578 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x579 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x57a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x57b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x57c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x57d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x57e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x57f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x580 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x581 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x582 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x583 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x584 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x585 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x586 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x587 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x588 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x589 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x58a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x58b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x58c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x58d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x58e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x58f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x590 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x591 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x592 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x593 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x594 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x595 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x596 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x597 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x598 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x599 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x59a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x59b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x59c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x59d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x59e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x59f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5a0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5a1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5a2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5a3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5a4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5a5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5a6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5a7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5a8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5a9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5aa ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5ab ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5ac ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5ad ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5ae ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5af ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5b0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5b1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5b2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5b3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5b4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5b5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5b6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5b7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5b8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5b9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5ba ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5bb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5bc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5bd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5be ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5bf ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5c0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5c1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5c2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5c3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5c4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5c5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5c6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5c7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5c8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5c9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5ca ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5cb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5cc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5cd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5ce ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5cf ........ ........ ........ ........ ........ ........ ........ ........ endchar # HEBREW LETTER ALEF char 0x05d0 ........ .XX..XX. .XXX.XX. ..XXXX.. .XX.XXX. .XX..XX. ........ ........ endchar # HEBREW LETTER BET char 0x05d1 ........ .XXXXX.. ....XX.. ....XX.. ....XX.. .XXXXXX. ........ ........ endchar # HEBREW LETTER GIMEL char 0x05d2 ........ ...XXXX. .....XX. ....XXX. ...XXXX. ..XX.XX. ........ ........ endchar # HEBREW LETTER DALET char 0x05d3 ........ .XXXXXX. ....XX.. ....XX.. ....XX.. ....XX.. ........ ........ endchar # HEBREW LETTER HE char 0x05d4 ........ .XXXXX.. .....XX. .XX..XX. .XX..XX. .XX..XX. ........ ........ endchar # HEBREW LETTER VAV char 0x05d5 ........ ...XXX.. ....XX.. ....XX.. ....XX.. ....XX.. ........ ........ endchar # HEBREW LETTER ZAYIN char 0x05d6 ........ ...XXXX. ....XX.. .....XX. .....XX. .....XX. ........ ........ endchar # HEBREW LETTER HET char 0x05d7 ........ .XXXXXX. ..XX.XX. ..XX.XX. ..XX.XX. ..XX.XX. ........ ........ endchar # HEBREW LETTER TET char 0x05d8 .XX..... .XX.XXX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ........ ........ endchar # HEBREW LETTER YOD char 0x05d9 ........ ..XXXX.. ....XX.. ....XX.. ........ ........ ........ ........ endchar # HEBREW LETTER FINAL KAF char 0x05da ........ ..XXXXX. .....XX. .....XX. .....XX. .....XX. .....XX. ........ endchar # HEBREW LETTER KAF char 0x05db ........ ..XXXXX. .....XX. .....XX. .....XX. ..XXXXX. ........ ........ endchar # HEBREW LETTER LAMED char 0x05dc .XX..... .XXXXXX. .....XX. .....XX. .....XX. ....XXX. ........ ........ endchar # HEBREW LETTER FINAL MEM char 0x05dd ........ XXXXXXX. .XX..XX. .XX..XX. .XX..XX. .XXXXXX. ........ ........ endchar # HEBREW LETTER MEM char 0x05de ........ .XX.XX.. ..XXXXX. .XX..XX. .XX..XX. .XX.XXX. ........ ........ endchar # HEBREW LETTER FINAL NUN char 0x05df ........ ...XXX.. ....XX.. ....XX.. ....XX.. ....XX.. ....XX.. ........ endchar # HEBREW LETTER NUN char 0x05e0 ........ ...XXX.. ....XX.. ....XX.. ....XX.. ..XXXX.. ........ ........ endchar # HEBREW LETTER SAMEKH char 0x05e1 ........ ..XXXXX. ..XX.XX. ..XX.XX. ..XX.XX. ...XXX.. ........ ........ endchar # HEBREW LETTER AYIN char 0x05e2 ........ ..XX.XX. ..XX.XX. ..XX.XX. ..XX.XX. .XXXXXX. ........ ........ endchar # HEBREW LETTER FINAL PE char 0x05e3 ........ .XXXXXX. .XX..XX. .XXX.XX. .....XX. .....XX. .....XX. ........ endchar # HEBREW LETTER PE char 0x05e4 ........ .XXXXXX. .XX..XX. .XXX.XX. .....XX. .XXXXXX. ........ ........ endchar # HEBREW LETTER FINAL TSADI char 0x05e5 ........ ..XX.XX. ..XX.XX. ...XXX.. ....XX.. ....XX.. ....XX.. ........ endchar # HEBREW LETTER TSADI char 0x05e6 ........ .XX..XX. .XX..XX. ..XXXX.. ....XXX. .XXXXXX. ........ ........ endchar # HEBREW LETTER QOF char 0x05e7 ........ ..XXXXX. .....XX. ..XX.XX. ..XX.XX. ..XX.X.. ..XX.... ........ endchar # HEBREW LETTER RESH char 0x05e8 ........ .XXXX... ....XX.. ....XX.. ....XX.. ....XX.. ........ ........ endchar # HEBREW LETTER SHIN char 0x05e9 ........ XX.X.XX. XX.X.XX. XX.X.XX. XX.X.XX. XXXXXXX. ........ ........ endchar # HEBREW LETTER TAV char 0x05ea ........ .XXXXX.. .XX.XX.. .XX.XX.. .XX.XX.. XXX.XX.. ........ ........ endchar char 0x5eb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5ec ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5ed ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5ee ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5ef ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5f0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5f1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5f2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5f3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5f4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5f5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5f6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5f7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5f8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5f9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5fa ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5fb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5fc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5fd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5fe ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x5ff ........ ........ ........ ........ ........ ........ ........ ........ endchar # 0x0600 left half of normal radio button char 0x600 ......XX .....X.. ....X... ....X... ....X... .....X.. ......XX ........ endchar # 0x0601 right half of normal radio button char 0x601 XX...... ..X..... ...X.... ...X.... ...X.... ..X..... XX...... ........ endchar # 0x0602 left half of selected radio button char 0x602 ......XX .....X.. ....X..X ....X.XX ....X..X .....X.. ......XX ........ endchar # 0x0603 right half of selected radio button char 0x603 XX...... ..X..... X..X.... XX.X.... X..X.... ..X..... XX...... ........ endchar # 0x0604 left half of normal checkbox char 0x604 ....XXXX ....X... ....X... ....X... ....X... ....X... ....XXXX ........ endchar # 0x0605 right half of normal checkbox char 0x605 XXXX.... ...X.... ...X.... ...X.... ...X.... ...X.... XXXX.... ........ endchar # 0x0606 left half of selected checkbox char 0x606 ....XXXX ....XX.. ....X.X. ....X..X ....X.X. ....XX.. ....XXXX ........ endchar # 0x0607 right half of selected checkbox char 0x607 XXXX.... ..XX.... .X.X.... X..X.... .X.X.... ..XX.... XXXX.... ........ endchar char 0x62a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x62b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x62c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x62d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x62e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x62f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x630 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x631 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x632 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x633 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x634 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x635 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x636 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x637 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x638 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x639 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x63a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x63b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x63c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x63d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x63e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x63f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x640 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x641 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x642 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x643 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x644 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x645 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x646 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x647 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x648 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x649 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x64a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x64b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x64c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x64d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x64e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x64f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x650 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x651 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x652 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x653 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x654 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x655 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x656 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x657 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x658 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x659 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x65a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x65b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x65c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x65d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x65e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x65f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x660 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x661 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x662 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x663 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x664 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x665 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x666 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x667 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x668 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x669 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x66a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x66b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x66c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x66d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x66e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x66f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x670 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x671 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x672 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x673 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x674 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x675 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x676 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x677 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x678 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x679 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x67a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x67b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x67c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x67d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x67e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x67f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x680 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x681 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x682 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x683 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x684 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x685 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x686 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x687 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x688 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x689 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x68a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x68b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x68c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x68d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x68e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x68f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x690 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x691 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x692 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x693 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x694 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x695 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x696 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x697 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x698 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x699 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x69a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x69b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x69c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x69d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x69e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x69f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6a0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6a1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6a2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6a3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6a4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6a5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6a6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6a7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6a8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6a9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6aa ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6ab ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6ac ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6ad ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6ae ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6af ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6b0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6b1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6b2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6b3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6b4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6b5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6b6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6b7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6b8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6b9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6ba ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6bb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6bc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6bd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6be ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6bf ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6c0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6c1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6c2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6c3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6c4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6c5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6c6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6c7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6c8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6c9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6ca ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6cb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6cc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6cd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6ce ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6cf ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6d0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6d1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6d2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6d3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6d4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6d5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6d6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6d7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6d8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6d9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6da ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6db ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6dc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6dd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6de ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6df ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6e0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6e1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6e2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6e3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6e4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6e5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6e6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6e7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6e8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6e9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6ea ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6eb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6ec ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6ed ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6ee ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6ef ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6f0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6f1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6f2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6f3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6f4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6f5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6f6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6f7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6f8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6f9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6fa ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6fb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6fc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6fd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x6fe ........ ........ ........ ........ ........ ........ ........ ........ endchar # 0xfffd REPLACEMENT CHARACTER char 0x6ff ...X.... ..XXX... .XX.XX.. XX...XX. .XX.XX.. ..XXX... ...X.... ........ endchar char 0x700 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x701 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x702 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x703 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x704 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x705 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x706 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x707 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x708 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x709 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x70a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x70b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x70c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x70d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x70e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x70f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x710 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x711 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x712 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x713 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x714 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x715 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x716 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x717 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x718 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x719 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x71a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x71b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x71c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x71d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x71e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x71f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x720 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x721 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x722 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x723 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x724 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x725 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x726 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x727 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x728 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x729 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x72a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x72b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x72c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x72d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x72e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x72f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x730 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x731 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x732 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x733 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x734 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x735 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x736 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x737 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x738 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x739 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x73a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x73b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x73c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x73d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x73e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x73f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x740 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x741 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x742 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x743 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x744 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x745 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x746 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x747 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x748 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x749 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x74a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x74b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x74c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x74d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x74e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x74f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x750 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x751 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x752 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x753 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x754 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x755 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x756 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x757 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x758 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x759 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x75a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x75b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x75c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x75d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x75e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x75f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x760 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x761 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x762 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x763 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x764 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x765 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x766 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x767 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x768 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x769 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x76a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x76b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x76c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x76d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x76e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x76f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x770 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x771 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x772 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x773 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x774 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x775 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x776 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x777 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x778 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x779 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x77a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x77b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x77c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x77d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x77e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x77f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x780 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x781 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x782 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x783 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x784 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x785 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x786 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x787 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x788 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x789 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x78a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x78b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x78c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x78d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x78e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x78f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x790 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x791 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x792 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x793 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x794 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x795 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x796 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x797 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x798 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x799 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x79a ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x79b ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x79c ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x79d ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x79e ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x79f ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7a0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7a1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7a2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7a3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7a4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7a5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7a6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7a7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7a8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7a9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7aa ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7ab ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7ac ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7ad ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7ae ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7af ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7b0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7b1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7b2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7b3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7b4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7b5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7b6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7b7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7b8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7b9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7ba ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7bb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7bc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7bd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7be ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7bf ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7c0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7c1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7c2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7c3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7c4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7c5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7c6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7c7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7c8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7c9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7ca ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7cb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7cc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7cd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7ce ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7cf ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7d0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7d1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7d2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7d3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7d4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7d5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7d6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7d7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7d8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7d9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7da ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7db ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7dc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7dd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7de ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7df ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7e0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7e1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7e2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7e3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7e4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7e5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7e6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7e7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7e8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7e9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7ea ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7eb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7ec ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7ed ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7ee ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7ef ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7f0 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7f1 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7f2 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7f3 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7f4 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7f5 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7f6 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7f7 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7f8 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7f9 ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7fa ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7fb ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7fc ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7fd ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7fe ........ ........ ........ ........ ........ ........ ........ ........ endchar char 0x7ff ........ ........ ........ ........ ........ ........ ........ ........ endchar # DAGGER char 0x2020 ........ ...X.... ..XXX... ...X.... ...X.... ...X.... ........ ........ endchar # BULLET char 0x2022 ..XXX... .XXXXX.. ..XXX... ........ ........ ........ ........ ........ endchar # TWO DOT LEADER char 0x2025 ........ .XX.XX.. .XX.XX.. ........ ........ ........ ........ ........ endchar # CARET char 0x2038 ........ ...X.... ..XXX... .XX.XX.. XX...XX. X.....X. ........ ........ endchar # SUPERSCRIPT ZERO char 0x2070 ..XXXX.. .XX..XX. .XX..XX. .XX..XX. ..XXXX.. ........ ........ ........ endchar # SUPERSCRIPT LATIN SMALL LETTER N char 0x207f ..XXX... .XX.XX.. .XX.XX.. .XX.XX.. .XX.XX.. ........ ........ ........ endchar # EURO SIGN char 0x20ac ..XXXXX. .XX..... XXXXXX.. .XX..... XXXXX... .XX..... ..XXXXX. ........ endchar # NUMERO SIGN char 0x2116 ........ ........ ........ ........ ........ ........ ........ ........ endchar # TRADE MARK SIGN char 0x2122 XXXX...X .X.XX.XX .X.XXXXX .X.X.X.X .X.X...X ........ ........ ........ endchar # VULGAR FRACTION ONE THIRD char 0x2153 ........ ........ ........ ........ ........ ........ ........ ........ endchar # LEFTWARDS WHITE ARROW char 0x21e6 ...XX... ..XXX... .XX.XXXX XX.....X XX.....X .XX.XXXX ..XXX... ...XX... endchar # UPWARDS WHITE ARROW char 0x21e7 ...XX... ..XXXX.. .XX..XX. XX....XX XXX..XXX ..X..X.. ..X..X.. ..XXXX.. endchar # RIGHTWARDS WHITE ARROW char 0x21e8 ...XX... ...XXX.. XXXX.XX. X.....XX X.....XX XXXX.XX. ...XXX.. ...XX... endchar # DOWNWARDS WHITE ARROW char 0x21e9 ..XXXX.. ..X..X.. ..X..X.. XXX..XXX XX....XX .XX..XX. ..XXXX.. ...XX... endchar # ELEMENT OF char 0x2208 ..XXXXX. .XXX.... .XX..... .XXXXXX. .XX..... .XXX.... ..XXXXX. ........ endchar # BULLET OPERATOR char 0x2219 ..XXX... .XXXXX.. ..XXX... ........ ........ ........ ........ ........ endchar # SQUARE ROOT char 0x221a ........ ........ ....XXXX ...XX... XX.XX... .XXX.... ..XX.... ........ endchar # INFINITY char 0x221e .XX..XX. XXXX.XXX X..XX..X X..XX..X XXX.XXXX .XX..XX. ........ ........ endchar # LOGICAL AND char 0x2227 ........ ...X.... ..XXX... .XX.XX.. XX...XX. X.....X. ........ ........ endchar # INTERSECTION char 0x2229 ..XXXX.. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. .XX..XX. ........ endchar # CONTOUR INTEGRAL char 0x222e ....XX.. ...XX... ..XXX... .X.X.X.. .X.X.X.. ..XXX... ..XX.... .XX..... endchar # ALMOST EQUAL TO char 0x2248 ........ ..XX..X. .X..XX.. ........ ..XX..X. .X..XX.. ........ ........ endchar # IDENTICAL TO char 0x2261 ........ .XXXXXX. ........ .XXXXXX. ........ .XXXXXX. ........ ........ endchar # LESS-THAN OR EQUAL TO char 0x2264 ....XX.. ...XX... ..XX.... ...XX... ....XX.. ........ .XXXXXX. ........ endchar # GREATER-THAN OR EQUAL TO char 0x2265 ..XX.... ...XX... ....XX.. ...XX... ..XX.... ........ .XXXXXX. ........ endchar # REVERSED NOT SIGN char 0x2310 ........ ........ ........ ..XXXXX. ..XX.... ..XX.... ..XX.... ........ endchar # WATCH char 0x231a .XXXXXX. XX....XX XX.X..XX XX.X..XX XX.XX.XX XX....XX XX....XX .XXXXXX. endchar # TOP HALF INTEGRAL char 0x2320 ........ ....XXX. ...XX.XX ...XX.XX ...XX... ...XX... ...XX... ...XX... endchar # BOTTOM HALF INTEGRAL char 0x2321 ...XX... ...XX... ...XX... ...XX... XX.XX... XX.XX... .XXX.... ........ endchar # BELL SYMBOL char 0x237e ...XX... ..XXXX.. ..XXXX.. ..XXXX.. .XXXXXX. ...X.... ..XXX... ...X.... endchar # SYMBOL FOR FORM FEED char 0x240c XXXX.... XX...... XXXXXXX. XX.XX... XX.XXXX. ...XX... ...XX... ........ endchar # SYMBOL FOR CARRIAGE RETURN char 0x240d XXXX.... XX...... XX.XXXXX XX.XX.XX XXXXXXXX ...XXXX. ...XX.XX ........ endchar # SYMBOL FOR ESCAPE char 0x241b .XXXX... .XX..... .XXXX... .XX..... .XXXXXX. ...XX... ...XXXX. ........ endchar # CIRCLED DIGIT ONE char 0x2460 .....XX. .....XX. .....XX. ........ .....XX. .....XX. .....XX. ........ endchar # CIRCLED DIGIT TWO char 0x2461 .XXXXX.. .....XX. .....XX. .XXXXX.. XX...... XX...... .XXXXX.. ........ endchar # CIRCLED DIGIT THREE char 0x2462 .XXXXX.. .....XX. .....XX. .XXXXX.. .....XX. .....XX. .XXXXX.. ........ endchar # CIRCLED DIGIT FOUR char 0x2463 XX...XX. XX...XX. XX...XX. .XXXXX.. .....XX. .....XX. .....XX. ........ endchar # CIRCLED DIGIT FIVE char 0x2464 .XXXXX.. XX...... XX...... .XXXXX.. .....XX. .....XX. .XXXXX.. ........ endchar # CIRCLED DIGIT SIX char 0x2465 .XXXXX.. XX...... XX...... .XXXXX.. XX...XX. XX...XX. .XXXXX.. ........ endchar # CIRCLED DIGIT SEVEN char 0x2466 .XXXXX.. .....XX. .....XX. ........ .....XX. .....XX. .....XX. ........ endchar # CIRCLED DIGIT EIGHT char 0x2467 .XXXXX.. XX...XX. XX...XX. .XXXXX.. XX...XX. XX...XX. .XXXXX.. ........ endchar # CIRCLED DIGIT NINE char 0x2468 .XXXXX.. XX...XX. XX...XX. .XXXXX.. .....XX. .....XX. .XXXXX.. ........ endchar # CIRCLED DIGIT ZERO char 0x24ea .XXXXX.. XX...XX. XX...XX. ........ XX...XX. XX...XX. .XXXXX.. ........ endchar # BLACK SQUARE char 0x25a0 ........ ........ ........ ..XXX... ..XXX... ..XXX... ........ ........ endchar # BALLOT BOX char 0x2610 ..XXXX.. X..XX..X XX....XX XXX..XXX XX....XX X..XX..X ..XXXX.. ........ endchar # BALLOT BOX WITH CHECK char 0x2611 XXXXXXXX XXXXXXXX XXXXXXX. XXXXXX.. XXXXX..X XXXX..XX XXX..XXX ........ endchar # BALLOT BOX WITH X char 0x2612 XXX..XXX XX....XX X..XX..X ..XXXX.. X..XX..X XX....XX XXX..XXX ........ endchar # EIGHTH NOTE char 0x266a ...XX... ...XXX.. ...X.XX. ...X.... ...X.... .XXX.... XXXX.... .XX..... endchar # CHECK MARK char 0x2713 .......X ......XX .....XX. X...XX.. XX.XX... .XXX.... ..X..... ........ endchar endfont aranym-1.1.0/src/gui-sdl/aranym08.txt0000664000175000017500000042316513454637621015547 0ustar joyjoyGDOSFONT version 1.0 font_id 1 point 8 name "6x6 system font" first_ade 0 last_ade 0x27ff top 4 ascent 4 half 3 descent 1 bottom 1 max_char_width 5 max_cell_width 6 left_offset 0 right_offset 3 thicken 1 ul_size 1 lighten 0x5555 skew 0xaaaa flags 0x0c form_height 6 # NULL char 0x00 ...... ...... ...... ...... ...... ...... endchar # UPWARDS WHITE ARROW char 0x01 ..X... .XXX.. XX.XX. ..X... ..X... ..X... endchar # DOWNWARDS ARROW char 0x02 ..X... ..X... ..X... XX.XX. .XXX.. ..X... endchar # RIGHTWARDS WHITE ARROW char 0x03 ...X.. ...XX. XXX.XX ...XX. ...X.. ...... endchar # LEFTWARDS WHITE ARROW char 0x04 ..X... .XX... XX.XXX .XX... ..X... ...... endchar # BALLOT BOX (used for folder) char 0x05 .XXX.. X.X.X. XX.XX. X.X.X. .XXX.. ...... endchar # BALLOT BOX WITH CHECK char 0x06 XXXXX. XXXX.. XXX... XX..X. X..XX. ...... endchar # BALLOT BOX WITH X char 0x07 XX.XX. X.X.X. .XXX.. X.X.X. XX.XX. ...... endchar # CHECK MARK char 0x08 ....XX ...XX. X.XX.. XXX... .X.... ...... endchar # WATCH char 0x09 .XXXX. X....X X.X..X X.XX.X X....X .XXXX. endchar # BELL SYMBOL char 0x0a ..XX.. .XXXX. .XXXX. XXXXXX ...... ..XX.. endchar # EIGHTH NOTE char 0x0b ...X.. ...XX. ...X.. .XXX.. XXXX.. .XX... endchar # SYMBOL FOR FORM FEED char 0x0c XXX... X..... XX.XXX X..X.. ...XX. ...X.. endchar # SYMBOL FOR CARRIAGE RETURN char 0x0d XXX... X..... X.XXX. XXX.X. ..XXX. ..X.XX endchar # MOUNTAIN (left half of Atari symbol) char 0x0e ...X.X ...X.X ...X.X ..XX.X .XXX.X .XX..X endchar # UMBRELLA ON GROUND (right half of Atari symbol) char 0x0f .X.... .X.... .X.... .XX... .XXX.. ..XX.. endchar # CIRCLED DIGIT ZERO char 0x10 XXXXX. XX..X. XX..X. XX.XX. XX.XX. XXXXX. endchar # CIRCLED DIGIT ONE char 0x11 .XX... ..X... ..X... .XXX.. .XXX.. .XXX.. endchar # CIRCLED DIGIT TWO char 0x12 .XXXX. ....X. XXXXX. XX.... XX.... XXXXX. endchar # CIRCLED DIGIT THREE char 0x13 XXXX.. ...X.. XXXXX. ...XX. ...XX. XXXXX. endchar # CIRCLED DIGIT FOUR char 0x14 XX.... XX.... XX.... XX.XX. XXXXX. ...XX. endchar # CIRCLED DIGIT FIVE char 0x15 XXXX.. X..... XXXXX. ...XX. ...XX. XXXXX. endchar # CIRCLED DIGIT SIX char 0x16 XX.... XX.... XXXXX. X..XX. XX.XX. XXXXX. endchar # CIRCLED DIGIT SEVEN char 0x17 XXXXX. ....X. ..XXX. ..XX.. ..XX.. ..XX.. endchar # CIRCLED DIGIT EIGHT char 0x18 .XXX.. .X.X.. .XXX.. XX.XX. XX.XX. XXXXX. endchar # CIRCLED DIGIT NINE char 0x19 XXXXX. XX.XX. XX..X. XXXXX. ...XX. ...XX. endchar # LATIN CAPITAL LETTER SCHWA char 0x1a ...... .XXX.. ....X. XXXXX. .XXX.. ...... endchar # SYMBOL FOR ESCAPE char 0x1b XXX... X..... XX.XXX X..X.. XXXX.. ...XXX endchar # FOUNTAIN (upper left of face) char 0x1c ...XXX ..XXXX .XX... .X.... .XXX.. .X.XX. endchar # FLAG IN HOLE (upper right of face) char 0x1d XXX... XX.X.. ...XX. ....X. .XXXX. ..X.X. endchar # FERRY (lower left of face) char 0x1e .X...X ..X.XX ..X.X. ...X.X XXX.XX XX.... endchar # SAILBOAT (lower right of face) char 0x1f ....X. XX.X.. .X.X.. X.X... XX.... ...... endchar # SPACE char 0x20 ...... ...... ...... ...... ...... ...... endchar # EXCLAMATION MARK char '!' ..XX.. ..XX.. ..XX.. ..XX.. ...... ..XX.. endchar # QUOTATION MARK char '"' XX.XX. XX.XX. X..X.. ...... ...... ...... endchar # NUMBER SIGN char '#' .X.X.. XXXXX. .X.X.. XXXXX. .X.X.. ...... endchar # DOLLAR SIGN char '$' .XXXX. X.X... .XXX.. ..X.X. XXXX.. ..X... endchar # PERCENT SIGN char '%' XX..X. XX.X.. ..X... .X.XX. X..XX. ...... endchar # AMPERSAND char '&' .XX... XX.X.. .XX... XXX.X. XX.X.. .XX.X. endchar # APOSTROPHE char '\'' ..XX.. ..XX.. .XX... ...... ...... ...... endchar # LEFT PARENTHESIS char '(' ..XX.. .XX... .XX... .XX... ..XX.. ...... endchar # RIGHT PARENTHESIS char ')' .XX... ..XX.. ..XX.. ..XX.. .XX... ...... endchar # ASTERISK char '*' .X..X. ..XX.. .XXXX. ..XX.. .X..X. ...... endchar # PLUS SIGN char '+' ..X... ..X... XXXXX. ..X... ..X... ...... endchar # COMMA char ',' ...... ...... ...... ..XX.. ..XX.. .XX... endchar # HYPHEN-MINUS char '-' ...... ...... .XXXX. ...... ...... ...... endchar # FULL STOP char '.' ...... ...... ...... ..XX.. ..XX.. ...... endchar # SOLIDUS char '/' ...XX. ..XX.. .XX... XX.... X..... ...... endchar # DIGIT ZERO char '0' .XXX.. X..XX. X.X.X. XX..X. .XXX.. ...... endchar # DIGIT ONE char '1' ...X.. ..XX.. ...X.. ...X.. ...X.. ...... endchar # DIGIT TWO char '2' XXXX.. ....X. .XXX.. X..... XXXXX. ...... endchar # DIGIT THREE char '3' XXXX.. ....X. .XXX.. ....X. XXXX.. ...... endchar # DIGIT FOUR char '4' ..XX.. .X.X.. X..X.. XXXXX. ...X.. ...... endchar # DIGIT FIVE char '5' XXXX.. X..... XXXX.. ....X. XXXX.. ...... endchar # DIGIT SIX char '6' .XXX.. X..... XXXX.. X...X. .XXX.. ...... endchar # DIGIT SEVEN char '7' XXXXX. ....X. ...X.. ..X... ..X... ...... endchar # DIGIT EIGHT char '8' .XXX.. X...X. .XXX.. X...X. .XXX.. ...... endchar # DIGIT NINE char '9' .XXX.. X...X. .XXXX. ....X. .XXX.. ...... endchar # COLON char ':' ..XX.. ..XX.. ...... ..XX.. ..XX.. ...... endchar # SEMICOLON char ';' ..XX.. ..XX.. ...... ..XX.. ...X.. ..X... endchar # LESS-THAN SIGN char '<' ...XX. ..XX.. .XX... ..XX.. ...XX. ...... endchar # EQUALS SIGN char '=' ...... .XXXX. ...... .XXXX. ...... ...... endchar # GREATER-THAN SIGN char '>' .XX... ..XX.. ...XX. ..XX.. .XX... ...... endchar # QUESTION MARK char '?' .XXX.. X..XX. ..XX.. ..XX.. ...... ..XX.. endchar # COMMERCIAL AT char '@' .XXX.. X...X. X.XXX. X.XX.. X..... .XXXX. endchar # LATIN CAPITAL LETTER A char 'A' .XXX.. X...X. XXXXX. X...X. X...X. ...... endchar # LATIN CAPITAL LETTER B char 'B' XXXX.. X...X. XXXX.. X...X. XXXX.. ...... endchar # LATIN CAPITAL LETTER C char 'C' .XXXX. X..... X..... X..... .XXXX. ...... endchar # LATIN CAPITAL LETTER D char 'D' XXXX.. X...X. X...X. X...X. XXXX.. ...... endchar # LATIN CAPITAL LETTER E char 'E' XXXXX. X..... XXXX.. X..... XXXXX. ...... endchar # LATIN CAPITAL LETTER F char 'F' XXXXX. X..... XXXX.. X..... X..... ...... endchar # LATIN CAPITAL LETTER G char 'G' .XXXX. X..... X..XX. X...X. .XXXX. ...... endchar # LATIN CAPITAL LETTER H char 'H' X...X. X...X. XXXXX. X...X. X...X. ...... endchar # LATIN CAPITAL LETTER I char 'I' .XXX.. ..X... ..X... ..X... .XXX.. ...... endchar # LATIN CAPITAL LETTER J char 'J' ....X. ....X. ....X. X...X. .XXX.. ...... endchar # LATIN CAPITAL LETTER K char 'K' .X..X. .X.X.. .XX... .X.X.. .X..X. ...... endchar # LATIN CAPITAL LETTER L char 'L' .X.... .X.... .X.... .X.... .XXXX. ...... endchar # LATIN CAPITAL LETTER M char 'M' X...X. XX.XX. X.X.X. X...X. X...X. ...... endchar # LATIN CAPITAL LETTER N char 'N' X...X. XX..X. X.X.X. X..XX. X...X. ...... endchar # LATIN CAPITAL LETTER O char 'O' .XXX.. X...X. X...X. X...X. .XXX.. ...... endchar # LATIN CAPITAL LETTER P char 'P' XXXX.. X...X. XXXX.. X..... X..... ...... endchar # LATIN CAPITAL LETTER Q char 'Q' .XXX.. X...X. X...X. X...X. .XXX.. ...XX. endchar # LATIN CAPITAL LETTER R char 'R' XXXX.. X...X. XXXX.. X.X... X..XX. ...... endchar # LATIN CAPITAL LETTER S char 'S' .XXXX. X..... .XXX.. ....X. XXXX.. ...... endchar # LATIN CAPITAL LETTER T char 'T' XXXXX. ..X... ..X... ..X... ..X... ...... endchar # LATIN CAPITAL LETTER U char 'U' X...X. X...X. X...X. X...X. .XXXX. ...... endchar # LATIN CAPITAL LETTER V char 'V' X...X. X...X. X...X. .X.X.. ..X... ...... endchar # LATIN CAPITAL LETTER W char 'W' X...X. X...X. X.X.X. XX.XX. X...X. ...... endchar # LATIN CAPITAL LETTER X char 'X' X...X. .X.X.. ..X... .X.X.. X...X. ...... endchar # LATIN CAPITAL LETTER Y char 'Y' X...X. X...X. .X.X.. ..X... ..X... ...... endchar # LATIN CAPITAL LETTER Z char 'Z' XXXXX. ...X.. ..X... .X.... XXXXX. ...... endchar # LEFT SQUARE BRACKET char '[' .XXXX. .XX... .XX... .XX... .XXXX. ...... endchar # REVERSE SOLIDUS char 0x5c XX.... .XX... ..XX.. ...XX. ....X. ...... endchar # RIGHT SQUARE BRACKET char ']' .XXXX. ...XX. ...XX. ...XX. .XXXX. ...... endchar # CIRCUMFLEX ACCENT char '^' ..X... .XXX.. XX.XX. ...... ...... ...... endchar # LOW LINE char '_' ...... ...... ...... ...... ...... XXXXX. endchar # GRAVE ACCENT char '`' .XX... .XX... ..XX.. ...... ...... ...... endchar # LATIN SMALL LETTER A char 'a' ...... .XXX.. ....X. XXXXX. .XXXX. ...... endchar # LATIN SMALL LETTER B char 'b' X..... XXXX.. X...X. X...X. XXXX.. ...... endchar # LATIN SMALL LETTER C char 'c' ...... .XXX.. X..... X..... .XXX.. ...... endchar # LATIN SMALL LETTER D char 'd' ....X. .XXXX. X...X. X...X. .XXXX. ...... endchar # LATIN SMALL LETTER E char 'e' ...... .XXX.. XXXXX. X..... .XXX.. ...... endchar # LATIN SMALL LETTER F char 'f' ...XX. ..X... .XXXX. ..X... ..X... ...... endchar # LATIN SMALL LETTER G char 'g' ...... .XXXX. X...X. .XXXX. ....X. XXXX.. endchar # LATIN SMALL LETTER H char 'h' X..... X.XX.. XX..X. X...X. X...X. ...... endchar # LATIN SMALL LETTER I char 'i' ...... .XX... ..X... ..X... .XXX.. ...... endchar # LATIN SMALL LETTER J char 'j' ...X.. ...X.. ...X.. ...X.. ...X.. XXX... endchar # LATIN SMALL LETTER K char 'k' X..... X..X.. XXX... X..X.. X...X. ...... endchar # LATIN SMALL LETTER L char 'l' .XX... ..X... ..X... ..X... .XXX.. ...... endchar # LATIN SMALL LETTER M char 'm' ...... .X.X.. XXXXX. X.X.X. X...X. ...... endchar # LATIN SMALL LETTER N char 'n' ...... XXXX.. X...X. X...X. X...X. ...... endchar # LATIN SMALL LETTER O char 'o' ...... .XXX.. X...X. X...X. .XXX.. ...... endchar # LATIN SMALL LETTER P char 'p' ...... XXXX.. X...X. X...X. XXXX.. X..... endchar # LATIN SMALL LETTER Q char 'q' ...... .XXXX. X...X. X...X. .XXXX. ....X. endchar # LATIN SMALL LETTER R char 'r' ...... .XXX.. .X..X. .X.... .X.... ...... endchar # LATIN SMALL LETTER S char 's' ...... ..XXX. .XX... ...XX. .XXX.. ...... endchar # LATIN SMALL LETTER T char 't' ..X... .XXX.. ..X... ..X... ...X.. ...... endchar # LATIN SMALL LETTER U char 'u' ...... X...X. X...X. X...X. .XXXX. ...... endchar # LATIN SMALL LETTER V char 'v' ...... X...X. X...X. .X.X.. ..X... ...... endchar # LATIN SMALL LETTER W char 'w' ...... X...X. X.X.X. X.X.X. XX.XX. ...... endchar # LATIN SMALL LETTER X char 'x' ...... .X..X. ..XX.. ..XX.. .X..X. ...... endchar # LATIN SMALL LETTER Y char 'y' ...... X...X. X...X. .XXXX. ....X. XXXX.. endchar # LATIN SMALL LETTER Z char 'z' ...... .XXXX. ...X.. ..X... .XXXX. ...... endchar # LEFT CURLY BRACKET char '{' ..XXX. ..XX.. .XX... ..XX.. ..XXX. ...... endchar # VERTICAL LINE char '|' ..XX.. ..XX.. ..XX.. ..XX.. ..XX.. ..XX.. endchar # RIGHT CURLY BRACKET char '}' .XXX.. ..XX.. ...XX. ..XX.. .XXX.. ...... endchar # TILDE char '~' .X.... XXX.X. X.XXX. ...X.. ...... ...... endchar # 0x2206 INCREMENT char 0x7f ...... ..X... .XXX.. XX..X. XXXXX. ...... endchar # NO-BREAK SPACE char 0x00a0 ...... ...... ...... ...... ...... ...... endchar # INVERTED EXCLAMATION MARK char 0x00a1 ..XX.. ...... ..XX.. ..XX.. ..XX.. ..XX.. endchar # CENT SIGN char 0x00a2 ...X.. ..XXX. .XX... ..XXX. ...X.. ...... endchar # POUND SIGN char 0x00a3 ...XX. ..X... .XXX.. ..X... .XXXX. ...... endchar # CURRENCY SIGN char 0x00a4 X....X .XXXX. .X..X. .X..X. .XXXX. X....X endchar # YEN SIGN char 0x00a5 X...X. XX.XX. .XXX.. ..X... .XXX.. ..X... endchar # BROKEN BAR char 0x00a6 ..XX.. ..XX.. ...... ..XX.. ..XX.. ..XX.. endchar # SECTION SIGN char 0x00a7 ..XX.. ..X.X. .XXX.. .XXX.. X.X... .XX... endchar # DIAERESIS char 0x00a8 .X.X.. ...... ...... ...... ...... ...... endchar # COPYRIGHT SIGN char 0x00a9 .XXXX. XX..XX X.XX.X X.XXXX XX...X .XXXX. endchar # FEMININE ORDINAL INDICATOR char 0x00aa .XXX.. ....X. XXXXX. .XXXX. ...... XXXXX. endchar # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK char 0x00ab ..XX.X .XX.XX XX.XX. .XX.XX ..XX.X ...... endchar # NOT SIGN char 0x00ac ...... ...... .XXXX. ....X. ....X. ...... endchar # SOFT HYPHEN char 0x00ad ...... ...... .XXXX. ...... ...... ...... endchar # REGISTERED SIGN char 0x00ae .XXXX. X...XX X.XX.X X...XX X.X..X .XXXX. endchar # MACRON char 0x00af XXXXX. ...... ...... ...... ...... ...... endchar # DEGREE SIGN char 0x00b0 ..XX.. .X..X. ..XX.. ...... ...... ...... endchar # PLUS-MINUS SIGN char 0x00b1 ..X... XXXXX. ..X... ...... XXXXX. ...... endchar # SUPERSCRIPT TWO char 0x00b2 .XXX.. ...XX. ..XX.. .XXXX. ...... ...... endchar # SUPERSCRIPT THREE char 0x00b3 .XXX.. ..XX.. ...X.. .XXX.. ...... ...... endchar # ACUTE ACCENT char 0x00b4 ...X.. ..X... ...... ...... ...... ...... endchar # MICRO SIGN char 0x00b5 ...... .XX.X. .XX.X. .XX.X. .XXXXX XX.... endchar # PILCROW SIGN char 0x00b6 .XX.X. XXX.X. XXX.X. .XX.X. ..X.X. ..X.X. endchar # MIDDLE DOT char 0x00b7 ...... ...... ..XX.. ..XX.. ...... ...... endchar # CEDILLA char 0x00b8 ...... ...... ...... ...... ...X.. ..X... endchar # SUPERSCRIPT ONE char 0x00b9 ..XX.. .XXX.. ..XX.. .XXXX. ...... ...... endchar # MASCULINE ORDINAL INDICATOR char 0x00ba .XXX.. X...X. X...X. .XXX.. ...... XXXXX. endchar # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK char 0x00bb X.XX.. XX.XX. .XX.XX XX.XX. X.XX.. ...... endchar # VULGAR FRACTION ONE QUARTER char 0x00bc XX.... XX.... XX..XX ...X.X ..XXXX .....X endchar # VULGAR FRACTION ONE HALF char 0x00bd XX.... XX.... XX.XX. ..X.XX ...XX. ..XXXX endchar # VULGAR FRACTION THREE QUARTERS char 0x00be XX.... .X.... XX..XX ...X.X ..XXXX .....X endchar # INVERTED QUESTION MARK char 0x00bf .XX... ...... .XX... .XX... XX..X. .XXX.. endchar # LATIN CAPITAL LETTER A WITH GRAVE char 0x00c0 .X.... ..X... .XXX.. X...X. XXXXX. X...X. endchar # LATIN CAPITAL LETTER A WITH ACUTE char 0x00c1 ...X.. ..X... .XXX.. X...X. XXXXX. X...X. endchar # LATIN CAPITAL LETTER A WITH CIRCUMFLEX char 0x00c2 ..X... .X.X.. .XXX.. X...X. XXXXX. X...X. endchar # LATIN CAPITAL LETTER A WITH TILDE char 0x00c3 .XX.X. X.XX.. .XXX.. X...X. XXXXX. X...X. endchar # LATIN CAPITAL LETTER A WITH DIAERESIS char 0x00c4 .X.X.. ...... .XXX.. X...X. XXXXX. X...X. endchar # LATIN CAPITAL LETTER A WITH RING ABOVE char 0x00c5 ..X... ...... .XXX.. X...X. XXXXX. X...X. endchar # LATIN CAPITAL LETTER AE char 0x00c6 .XXXX. X.X... XXXXX. X.X... X.XXX. ...... endchar # LATIN CAPITAL LETTER C WITH CEDILLA char 0x00c7 .XXXX. X..... X..... X..... .XXXX. XX.... endchar # LATIN CAPITAL LETTER E WITH GRAVE char 0x00c8 .X.... ..X... XXXXX. XXX... X..... XXXXX. endchar # LATIN CAPITAL LETTER E WITH ACUTE char 0x00c9 ..X... XXXXX. X..... XXXX.. X..... XXXXX. endchar # LATIN CAPITAL LETTER E WITH CIRCUMFLEX char 0x00ca ..X... .X.X.. XXXXX. XXX... X..... XXXXX. endchar # LATIN CAPITAL LETTER E WITH DIAERESIS char 0x00cb .X..X. XXXXX. X..... XXXX.. X..... XXXXX. endchar # LATIN CAPITAL LETTER I WITH GRAVE char 0x00cc .X.... ..X... .XXX.. ..X... ..X... .XXX.. endchar # LATIN CAPITAL LETTER I WITH ACUTE char 0x00cd ...X.. .XXX.. ..X... ..X... ..X... .XXX.. endchar # LATIN CAPITAL LETTER I WITH CIRCUMFLEX char 0x00ce ..X... .XXX.. ..X... ..X... ..X... .XXX.. endchar # LATIN CAPITAL LETTER I WITH DIAERESIS char 0x00cf .X.X.. ...... .XXX.. ..X... ..X... .XXX.. endchar # LATIN CAPITAL LETTER ETH char 0x00d0 .XXX.. .X..X. XXX.X. .X..X. .XXX.. ...... endchar # LATIN CAPITAL LETTER N WITH TILDE char 0x00d1 .XXXX. ...... .X..X. .XX.X. .X.XX. .X..X. endchar # LATIN CAPITAL LETTER O WITH GRAVE char 0x00d2 .X.... ..X... .XXX.. X...X. X...X. .XXX.. endchar # LATIN CAPITAL LETTER O WITH ACUTE char 0x00d3 ...X.. .XXX.. X...X. X...X. X...X. .XXX.. endchar # LATIN CAPITAL LETTER O WITH CIRCUMFLEX char 0x00d4 ..X... .X.X.. .XXX.. X...X. X...X. .XXX.. endchar # LATIN CAPITAL LETTER O WITH TILDE char 0x00d5 .XX.X. X.XX.. .XXX.. X...X. X...X. .XXX.. endchar # LATIN CAPITAL LETTER O WITH DIAERESIS char 0x00d6 .X.X.. ...... .XXX.. X...X. X...X. .XXX.. endchar # MULTIPLICATION SIGN char 0x00d7 ...... .X..X. ..XX.. ..XX.. .X..X. ...... endchar # LATIN CAPITAL LETTER O WITH STROKE char 0x00d8 ..XX.X .X..X. .X.XX. .XX.X. .X..X. X.XX.. endchar # LATIN CAPITAL LETTER U WITH GRAVE char 0x00d9 .X.... ..X... X...X. X...X. X...X. .XXX.. endchar # LATIN CAPITAL LETTER U WITH ACUTE char 0x00da ...X.. X.X.X. X...X. X...X. X...X. .XXXX. endchar # LATIN CAPITAL LETTER U WITH CIRCUMFLEX char 0x000db ..X... .X.X.. X...X. X...X. X...X. .XXX.. endchar # LATIN CAPITAL LETTER U WITH DIAERESIS char 0x00dc .X.X.. ...... X...X. X...X. X...X. .XXXX. endchar # LATIN CAPITAL LETTER Y WITH ACUTE char 0x00dd ...X.. X.X.X. X...X. .X.X.. ..X... ..X... endchar # LATIN CAPITAL LETTER THORN char 0x00de .X.... .XXX.. .X..X. .XXX.. .X.... .X.... endchar # LATIN SMALL LETTER SHARP S char 0x00df XXXX.. XX.XX. XXXX.. XX.XX. XXXX.. XX.... endchar # LATIN SMALL LETTER A WITH GRAVE char 0x00e0 .X.... ..X... .XXX.. ....X. XXXXX. .XXXX. endchar # LATIN SMALL LETTER A WITH ACUTE char 0x00e1 ...X.. ..X... .XXX.. ....X. XXXXX. .XXXX. endchar # LATIN SMALL LETTER A WITH CIRCUMFLEX char 0x00e2 ..X... .X.X.. .XXX.. ....X. XXXXX. .XXXX. endchar # LATIN SMALL LETTER A WITH TILDE char 0x00e3 .XX.X. X.XX.. .XXX.. ....X. XXXXX. .XXXX. endchar # LATIN SMALL LETTER A WITH DIAERESIS char 0x00e4 .X.X.. ...... .XXX.. ....X. XXXXX. .XXXX. endchar # LATIN SMALL LETTER A WITH RING ABOVE char 0x00e5 ..X... ...... .XXX.. ....X. XXXXX. .XXXX. endchar # LATIN SMALL LETTER AE char 0x00e6 ...... XXXX.. ..XXX. XXX... .XXXX. ...... endchar # LATIN SMALL LETTER C WITH CEDILLA char 0x00e7 ...... .XXXX. X..... X..... .XXXX. XXX... endchar # LATIN SMALL LETTER E WITH GRAVE char 0x00e8 .X.... ..X... .XXX.. XXXXX. X..... .XXX.. endchar # LATIN SMALL LETTER E WITH ACUTE char 0x00e9 ...X.. ..X... .XXX.. XXXXX. X..... .XXX.. endchar # LATIN SMALL LETTER E WITH CIRCUMFLEX char 0x00ea ..X... .X.X.. .XXX.. XXXXX. X..... .XXX.. endchar # LATIN SMALL LETTER E WITH DIAERESIS char 0x00eb .X.X.. ...... .XXX.. XXXXX. X..... .XXX.. endchar # LATIN SMALL LETTER I WITH GRAVE char 0x00ec .X.... ..X... .XX... ..X... ..X... .XXX.. endchar # LATIN SMALL LETTER I WITH ACUTE char 0x00ed ...X.. ..X... .XX... ..X... ..X... .XXX.. endchar # LATIN SMALL LETTER I WITH CIRCUMFLEX char 0x00ee ..X... .X.X.. ..X... ..X... ..X... .XXX.. endchar # LATIN SMALL LETTER I WITH DIAERESIS char 0x00ef .X.X.. ...... .XX... ..X... ..X... .XXX.. endchar # LATIN SMALL LETTER ETH char 0x00f0 .X.XX. ..X... XX.X.. ..XXX. .X..X. ..XX.. endchar # LATIN SMALL LETTER N WITH TILDE char 0x00f1 XXXX.. ...... XXXX.. X...X. X...X. X...X. endchar # LATIN SMALL LETTER O WITH GRAVE char 0x00f2 .X.... ..X... .XXX.. X...X. X...X. .XXX.. endchar # LATIN SMALL LETTER O WITH ACUTE char 0x00f3 ...X.. ..X... .XXX.. X...X. X...X. .XXX.. endchar # LATIN SMALL LETTER O WITH CIRCUMFLEX char 0x00f4 ..X... .X.X.. .XXX.. X...X. X...X. .XXX.. endchar # LATIN SMALL LETTER O WITH TILDE char 0x00f5 .XX.X. X.XX.. .XXX.. X...X. X...X. .XXX.. endchar # LATIN SMALL LETTER O WITH DIAERESIS char 0x00f6 .X.X.. ...... .XXX.. X...X. X...X. .XXX.. endchar # DIVISION SIGN char 0x00f7 ..X... ...... XXXXX. ...... ..X... ...... endchar # LATIN SMALL LETTER O WITH STROKE char 0x00f8 ....X. ..XX.. .X.XX. .XX.X. ..XX.. .X.... endchar # LATIN SMALL LETTER U WITH GRAVE char 0x00f9 .X.... ..X... X...X. X...X. X...X. .XXXX. endchar # LATIN SMALL LETTER U WITH ACUTE char 0x00fa ...X.. ..X... X...X. X...X. X...X. .XXXX. endchar # LATIN SMALL LETTER U WITH CIRCUMFLEX char 0x00fb ..X... .X.X.. X...X. X...X. X...X. .XXXX. endchar # LATIN SMALL LETTER U WITH DIAERESIS char 0x00fc .X.X.. ...... X...X. X...X. X...X. .XXXX. endchar # LATIN SMALL LETTER Y WITH ACUTE char 0x00fd ...X.. ..X... X...X. .XXXX. ....X. .XXX.. endchar # LATIN SMALL LETTER THORN char 0x00fe ...... .X.... .XXX.. .X..X. .XXX.. .X.... endchar # LATIN SMALL LETTER Y WITH DIAERESIS char 0x00ff .X.X.. ...... X...X. .XXXX. ....X. XXXX.. endchar # LATIN CAPITAL LETTER A WITH MACRON char 0x100 .XXXX. ...... .XXX.. X...X. XXXXX. X...X. endchar # LATIN SMALL LETTER A WITH MACRON char 0x101 .XXXX. ...... .XXX.. ....X. XXXXX. .XXXX. endchar # LATIN CAPITAL LETTER A WITH BREVE char 0x102 .X..X. ..XX.. .XXX.. X...X. XXXXX. X...X. endchar # LATIN SMALL LETTER A WITH BREVE char 0x103 .X..X. ..XX.. .XXX.. ....X. XXXXX. .XXXX. endchar # LATIN CAPITAL LETTER A WITH OGONEK char 0x104 .XXX.. X...X. XXXXX. X...X. X...X. ...XX. endchar # LATIN SMALL LETTER A WITH OGONEK char 0x105 ...... .XXX.. ....X. XXXXX. .XXXX. ...X.. endchar # LATIN CAPITAL LETTER C WITH ACUTE char 0x106 ...X.. .XXXX. X..... X..... X..... .XXXX. endchar # LATIN SMALL LETTER C WITH ACUTE char 0x107 ...X.. ..X... .XXX.. X..... X..... .XXX.. endchar # LATIN CAPITAL LETTER C WITH CIRCUMFLEX char 0x108 ..X... .X.X.. .XXXX. X..... X..... .XXXX. endchar # LATIN SMALL LETTER C WITH CIRCUMFLEX char 0x109 ..X... .X.X.. .XXX.. X..... X..... .XXX.. endchar # LATIN CAPITAL LETTER C WITH DOT ABOVE char 0x10a ..X... .XXXX. X..... X..... X..... .XXXX. endchar # LATIN SMALL LETTER C WITH DOT ABOVE char 0x10b ..X... ...... .XXX.. X..... X..... .XXX.. endchar # LATIN CAPITAL LETTER C WITH CARON char 0x10c .X.X.. .XXXX. X..... X..... X..... .XXXX. endchar # LATIN SMALL LETTER C WITH CARON char 0x10d .X.X.. ..X... .XXX.. X..... X..... .XXX.. endchar # LATIN CAPITAL LETTER D WITH CARON char 0x10e .X.X.. XXXX.. X...X. X...X. X...X. XXXX.. endchar # LATIN SMALL LETTER D WITH CARON char 0x10f .X.X.. ..X.X. .XXXX. X...X. X...X. .XXXX. endchar # LATIN CAPITAL LETTER D WITH STROKE char 0x110 XXXX.. X...X. XXX.X. X...X. XXXX.. ...... endchar # LATIN SMALL LETTER D WITH STROKE char 0x111 ....X. .XXXXX X...X. X...X. .XXXX. ...... endchar # LATIN CAPITAL LETTER E WITH MACRON char 0x112 .XXX.. XXXXX. X..... XXXX.. X..... XXXXX. endchar # LATIN SMALL LETTER E WITH MACRON char 0x113 .XXX.. ...... .XXX.. XXXXX. X..... .XXX.. endchar # LATIN CAPITAL LETTER E WITH BREVE char 0x114 .X.X.. XXXXX. X..... XXXX.. X..... XXXXX. endchar # LATIN SMALL LETTER E WITH BREVE char 0x115 .X.X.. ..X... .XXX.. XXXXX. X..... .XXX.. endchar # LATIN CAPITAL LETTER E WITH DOT ABOVE char 0x116 .XX... XXXXX. X..... XXXX.. X..... XXXXX. endchar # LATIN SMALL LETTER E WITH DOT ABOVE char 0x117 ..XX.. ...... .XXX.. XXXXX. X..... .XXX.. endchar # LATIN CAPITAL LETTER E WITH OGONEK char 0x118 XXXXX. X..... XXXX.. X..... XXXXX. ...X.. endchar # LATIN SMALL LETTER E WITH OGONEK char 0x119 ...... .XXX.. XXXXX. X..... .XXX.. ..X... endchar # LATIN CAPITAL LETTER E WITH CARON char 0x11a .X.X.. XXXXX. X..... XXXX.. X..... XXXXX. endchar # LATIN SMALL LETTER E WITH CARON char 0x11b .X.X.. ..X... .XXX.. XXXXX. X..... .XXX.. endchar # LATIN CAPITAL LETTER G WITH CIRCUMFLEX char 0x11c ..X... .XXXX. X..... X..XX. X...X. .XXXX. endchar # LATIN SMALL LETTER G WITH CIRCUMFLEX char 0x11d ..X... .XXXX. X...X. .XXXX. ....X. XXXX.. endchar # LATIN CAPITAL LETTER G WITH BREVE char 0x11e ..XX.. .XXXX. X..... X..XX. X...X. .XXXX. endchar # LATIN SMALL LETTER G WITH BREVE char 0x11f ..XX.. .XXXX. X...X. .XXXX. ....X. XXXX.. endchar # LATIN CAPITAL LETTER G WITH DOT ABOVE char 0x120 ..XX.. .XXXX. X..... X..XX. X...X. .XXXX. endchar # LATIN SMALL LETTER G WITH DOT ABOVE char 0x121 ..XX.. .XXXX. X...X. .XXXX. ....X. XXXX.. endchar # LATIN CAPITAL LETTER G WITH CEDILLA char 0x122 .XXXX. X..... X..XX. X...X. .XXXX. ..X... endchar # LATIN SMALL LETTER G WITH CEDILLA char 0x123 .XXXX. X...X. .XXXX. ....X. XXXX.. ..X... endchar # LATIN CAPITAL LETTER H WITH CIRCUMFLEX char 0x124 .X.... X...X. X...X. XXXXX. X...X. X...X. endchar # LATIN SMALL LETTER H WITH CIRCUMFLEX char 0x125 .X.... X..... X.XX.. XX..X. X...X. X...X. endchar # LATIN CAPITAL LETTER H WITH STROKE char 0x126 X...X. XXXXX. X...X. XXXXX. X...X. X...X. endchar # LATIN SMALL LETTER H WITH STROKE char 0x127 ...... XX.... X.XX.. XX..X. X...X. X...X. endchar # LATIN CAPITAL LETTER I WITH TILDE char 0x128 .XX.X. X.XX.. .XXX.. ..X... ..X... .XXX.. endchar # LATIN SMALL LETTER I WITH TILDE char 0x129 .XX.X. X.XX.. .XX... ..X... ..X... .XXX.. endchar # LATIN CAPITAL LETTER I WITH MACRON char 0x12a .XXX.. ...... .XXX.. ..X... ..X... .XXX.. endchar # LATIN SMALL LETTER I WITH MACRON char 0x12b .XXX.. ..X... .XX... ..X... ..X... .XXX.. endchar # LATIN CAPITAL LETTER I WITH BREVE char 0x12c .X.X.. ..X... .XXX.. ..X... ..X... .XXX.. endchar # LATIN SMALL LETTER I WITH BREVE char 0x12d .X.X.. ..X... .XX... ..X... ..X... .XXX.. endchar # LATIN CAPITAL LETTER I WITH OGONEK char 0x12e .XXX.. ..X... ..X... ..X... .XXX.. ...X.. endchar # LATIN SMALL LETTER I WITH OGONEK char 0x12f ..X... .XX... ..X... ..X... .XXX.. ...X.. endchar # LATIN CAPITAL LETTER I WITH DOT ABOVE char 0x130 ..X... .XXX.. ..X... ..X... ..X... .XXX.. endchar # LATIN SMALL LETTER DOTLESS I char 0x131 ...... .XX... ..X... ..X... .XXX.. ...... endchar # LATIN CAPITAL LIGATURE IJ char 0x0132 XXX.X. .X..X. .X..X. XXX.X. ....X. ..XX.. endchar # LATIN SMALL LIGATURE IJ char 0x0133 .X..X. ...... .X..X. .X..X. .X..X. ...X.. endchar # LATIN CAPITAL LETTER J WITH CIRCUMFLEX char 0x134 ..X... .X.X.. ....X. ....X. X...X. .XXX.. endchar # LATIN SMALL LETTER J WITH CIRCUMFLEX char 0x135 ..X... .X.X.. ...X.. ...X.. ...X.. XXX... endchar # LATIN CAPITAL LETTER K WITH CEDILLA char 0x136 .X..X. .X.X.. .XX... .X.X.. .X..X. ..X... endchar # LATIN SMALL LETTER K WITH CEDILLA char 0x137 X..... X..X.. XXX... X..X.. X...X. ..X... endchar # LATIN SMALL LETTER KRA char 0x138 X..... X..XX. XXX... X..X.. X...X. ...... endchar # LATIN CAPITAL LETTER L WITH ACUTE char 0x139 .X..X. .X.X.. .X.... .X.... .XXXX. ...... endchar # LATIN SMALL LETTER L WITH ACUTE char 0x13a .XX.X. ..XX.. ..X... ..X... .XXX.. ...... endchar # LATIN CAPITAL LETTER L WITH CEDILLA char 0x13b .X.... .X.... .X.... .X.... .XXXX. ..X... endchar # LATIN SMALL LETTER L WITH CEDILLA char 0x13c .XX... ..X... ..X... ..X... .XXX.. ..X... endchar # LATIN CAPITAL LETTER L WITH CARON char 0x13d .X.X.. .X.X.. .X.... .X.... .XXXX. ...... endchar # LATIN SMALL LETTER L WITH CARON char 0x13e .XX.X. ..X.X. ..X... ..X... .XXX.. ...... endchar # LATIN CAPITAL LETTER L WITH MIDDLE DOT char 0x13f .X.... .X.X.. .X.... .X.... .XXXX. ...... endchar # LATIN SMALL LETTER L WITH MIDDLE DOT char 0x140 .XX... ..X.X. ..X... ..X... .XXX.. ...... endchar # LATIN CAPITAL LETTER L WITH STROKE char 0x141 .X.... .XX... XX.... .X.... .XXXX. ...... endchar # LATIN SMALL LETTER L WITH STROKE char 0x142 .XX... ..X... .XXX.. ..X... .XXX.. ...... endchar # LATIN CAPITAL LETTER N WITH ACUTE char 0x143 ...X.. X.X.X. XX..X. X.X.X. X..XX. X...X. endchar # LATIN SMALL LETTER N WITH ACUTE char 0x144 ...X.. ..X... XXXX.. X...X. X...X. X...X. endchar # LATIN CAPITAL LETTER N WITH CEDILLA char 0x145 X...X. XX..X. X.X.X. X..XX. X...X. ..X... endchar # LATIN SMALL LETTER N WITH CEDILLA char 0x146 ...... XXXX.. X...X. X...X. X...X. ..X... endchar # LATIN CAPITAL LETTER N WITH CARON char 0x147 .X.X.. X.X.X. XX..X. X.X.X. X..XX. X...X. endchar # LATIN SMALL LETTER N WITH CARON char 0x148 .X.X.. ..X... XXXX.. X...X. X...X. X...X. endchar # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE char 0x149 X..... .XXXX. .X...X .X...X .X...X ...... endchar # LATIN CAPITAL LETTER ENG char 0x14a X...X. XX..X. X.X.X. X..XX. X...X. ...XX. endchar # LATIN SMALL LETTER ENG char 0x14b ...... .XXXX. .X...X .X...X .X...X ....XX endchar # LATIN CAPITAL LETTER O WITH MACRON char 0x14c .XXX.. .XXX.. X...X. X...X. X...X. .XXX.. endchar # LATIN SMALL LETTER O WITH MACRON char 0x14d .XXX.. ...... .XXX.. X...X. X...X. .XXX.. endchar # LATIN CAPITAL LETTER O WITH BREVE char 0x14e .X.X.. .XXX.. X...X. X...X. X...X. .XXX.. endchar # LATIN SMALL LETTER O WITH BREVE char 0x14f .X.X.. ...... .XXX.. X...X. X...X. .XXX.. endchar # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE char 0x150 ..X.X. .X.X.. .XXX.. X...X. X...X. .XXX.. endchar # LATIN SMALL LETTER O WITH DOUBLE ACUTE char 0x151 ..X.X. .X.X.. .XXX.. X...X. X...X. .XXX.. endchar # LATIN CAPITAL LIGATURE OE char 0x0152 .XXXX. X.XX.. X.XXX. X.XX.. .XXXX. ...... endchar # LATIN SMALL LIGATURE OE char 0x0153 ...... .XXX.. X.XXX. X.X... .XXXX. ...... endchar # LATIN CAPITAL LETTER R WITH ACUTE char 0x154 ...X.. XXXX.. X...X. XXXX.. X.X... X..XX. endchar # LATIN SMALL LETTER R WITH ACUTE char 0x155 ...X.. ..X... .XXX.. .X..X. .X.... .X.... endchar # LATIN CAPITAL LETTER R WITH CEDILLA char 0x156 XXXX.. X...X. XXXX.. X.X... X..XX. ..X... endchar # LATIN SMALL LETTER R WITH CEDILLA char 0x157 ...... .XXX.. .X..X. .X.... .X.... ..X... endchar # LATIN CAPITAL LETTER R WITH CARON char 0x158 .X.X.. XXXX.. X...X. XXXX.. X.X... X..XX. endchar # LATIN SMALL LETTER R WITH CARON char 0x159 .X.X.. ..X... .XXX.. .X..X. .X.... .X.... endchar # LATIN CAPITAL LETTER S WITH ACUTE char 0x15a ...X.. .XXXX. X..... .XXX.. ....X. XXXX.. endchar # LATIN SMALL LETTER S WITH ACUTE char 0x15b ....X. ...X.. ..XXX. .XX... ...XX. .XXX.. endchar # LATIN CAPITAL LETTER S WITH CIRCUMFLEX char 0x15c ..XX.. .XXXX. X..... .XXX.. ....X. XXXX.. endchar # LATIN SMALL LETTER S WITH CIRCUMFLEX char 0x15d ...X.. ..X.X. ..XXX. .XX... ...XX. .XXX.. endchar # LATIN CAPITAL LETTER S WITH CEDILLA char 0x15e .XXXX. X..... .XXX.. ....X. XXXX.. ..X... endchar # LATIN SMALL LETTER S WITH CEDILLA char 0x15f ...... ..XXX. .XX... ...XX. .XXX.. ..X... endchar # LATIN CAPITAL LETTER S WITH CARON char 0x160 .X.X.. .XXXX. X..... .XXX.. ....X. XXXX.. endchar # LATIN SMALL LETTER S WITH CARON char 0x161 ..X.X. ...X.. ..XXX. .XX... ...XX. .XXX.. endchar # LATIN CAPITAL LETTER T WITH CEDILLA char 0x162 XXXXX. ..X... ..X... ..X... ..X... .X.... endchar # LATIN SMALL LETTER T WITH CEDILLA char 0x163 ..X... .XXX.. ..X... ..X... ...X.. ..X... endchar # LATIN CAPITAL LETTER T WITH CARON char 0x164 .X.X.. XXXXX. ..X... ..X... ..X... ..X... endchar # LATIN SMALL LETTER T WITH CARON char 0x165 ....X. ..X.X. .XXX.. ..X... ..X... ...X.. endchar # LATIN CAPITAL LETTER T WITH STROKE char 0x166 ...... XXXXX. ..X... .XXX.. ..X... ..X... endchar # LATIN SMALL LETTER T WITH STROKE char 0x167 ...... ..X... .XXX.. .XXX.. ..X... ...X.. endchar # LATIN CAPITAL LETTER U WITH TILDE char 0x168 .XX.X. X...X. X...X. X...X. X...X. .XXXX. endchar # LATIN SMALL LETTER U WITH TILDE char 0x169 .XX.X. X.XX.. X...X. X...X. X...X. .XXXX. endchar # LATIN CAPITAL LETTER U WITH MACRON char 0x16a .XXXX. X...X. X...X. X...X. X...X. .XXXX. endchar # LATIN SMALL LETTER U WITH MACRON char 0x16b .XXXX. ...... X...X. X...X. X...X. .XXXX. endchar # LATIN CAPITAL LETTER U WITH BREVE char 0x16c .XX.X. X...X. X...X. X...X. X...X. .XXXX. endchar # LATIN SMALL LETTER U WITH BREVE char 0x16d .X..X. ..XX.. X...X. X...X. X...X. .XXXX. endchar # LATIN CAPITAL LETTER U WITH RING ABOVE char 0x16e ..X... X...X. X...X. X...X. X...X. .XXXX. endchar # LATIN SMALL LETTER U WITH RING ABOVE char 0x16f ..X... .X.X.. X.X.X. X...X. X...X. .XXXX. endchar # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE char 0x170 ..X.X. .X.X.. X...X. X...X. X...X. .XXXX. endchar # LATIN SMALL LETTER U WITH DOUBLE ACUTE char 0x171 ..X.X. .X.X.. X...X. X...X. X...X. .XXXX. endchar # LATIN CAPITAL LETTER U WITH OGONEK char 0x172 X...X. X...X. X...X. X...X. .XXXX. ...X.. endchar # LATIN SMALL LETTER U WITH OGONEK char 0x173 ...... X...X. X...X. X...X. .XXXX. ...X.. endchar # LATIN CAPITAL LETTER W WITH CIRCUMFLEX char 0x174 ..XX.. X...X. X...X. X.X.X. XX.XX. X...X. endchar # LATIN SMALL LETTER W WITH CIRCUMFLEX char 0x175 ..XX.. X...X. X.X.X. X.X.X. XX.XX. ...... endchar # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX char 0x176 ..X... X...X. X...X. .X.X.. ..X... ..X... endchar # LATIN SMALL LETTER Y WITH CIRCUMFLEX char 0x177 ..X... .X.X.. X...X. .XXXX. ....X. XXXX.. endchar # LATIN CAPITAL LETTER Y WITH DIAERESIS char 0x178 .X.X.. ...... X...X. .XXX.. ..X... ..X... endchar # LATIN CAPITAL LETTER Z WITH ACUTE char 0x179 ...X.. XXXXX. ...X.. ..X... .X.... XXXXX. endchar # LATIN SMALL LETTER Z WITH ACUTE char 0x17a ....X. ...X.. .XXXX. ...X.. ..X... .XXXX. endchar # LATIN CAPITAL LETTER Z WITH DOT ABOVE char 0x17b ..X... XXXXX. ...X.. ..X... .X.... XXXXX. endchar # LATIN SMALL LETTER Z WITH DOT ABOVE char 0x17c ..XX.. ...... .XXXX. ...X.. ..X... .XXXX. endchar # LATIN CAPITAL LETTER Z WITH CARON char 0x17d .X.X.. XXXXX. ...X.. ..X... .X.... XXXXX. endchar # LATIN SMALL LETTER Z WITH CARON char 0x17e ..X.X. ...X.. .XXXX. ...X.. ..X... .XXXX. endchar # LATIN SMALL LETTER LONG S char 0x17f ...XX. ..X... .XX... ..X... ..X... ...... endchar char 0x180 ...... ...... ...... ...... ...... ...... endchar char 0x181 ...... ...... ...... ...... ...... ...... endchar char 0x182 ...... ...... ...... ...... ...... ...... endchar char 0x183 ...... ...... ...... ...... ...... ...... endchar char 0x184 ...... ...... ...... ...... ...... ...... endchar char 0x185 ...... ...... ...... ...... ...... ...... endchar char 0x186 ...... ...... ...... ...... ...... ...... endchar char 0x187 ...... ...... ...... ...... ...... ...... endchar char 0x188 ...... ...... ...... ...... ...... ...... endchar char 0x189 ...... ...... ...... ...... ...... ...... endchar char 0x18a ...... ...... ...... ...... ...... ...... endchar char 0x18b ...... ...... ...... ...... ...... ...... endchar char 0x18c ...... ...... ...... ...... ...... ...... endchar char 0x18d ...... ...... ...... ...... ...... ...... endchar char 0x18e ...... ...... ...... ...... ...... ...... endchar # LATIN CAPITAL LETTER SCHWA char 0x018f ...... .XXX.. ....X. XXXXX. .XXX.. ...... endchar char 0x190 ...... ...... ...... ...... ...... ...... endchar char 0x191 ...... ...... ...... ...... ...... ...... endchar # LATIN SMALL LETTER F WITH HOOK char 0x0192 ...XX. ..X... .XXXX. ..X... ..X... XX.... endchar char 0x193 ...... ...... ...... ...... ...... ...... endchar char 0x194 ...... ...... ...... ...... ...... ...... endchar char 0x195 ...... ...... ...... ...... ...... ...... endchar char 0x196 ...... ...... ...... ...... ...... ...... endchar char 0x197 ...... ...... ...... ...... ...... ...... endchar char 0x198 ...... ...... ...... ...... ...... ...... endchar char 0x199 ...... ...... ...... ...... ...... ...... endchar char 0x19a ...... ...... ...... ...... ...... ...... endchar char 0x19b ...... ...... ...... ...... ...... ...... endchar char 0x19c ...... ...... ...... ...... ...... ...... endchar char 0x19d ...... ...... ...... ...... ...... ...... endchar char 0x19e ...... ...... ...... ...... ...... ...... endchar char 0x19f ...... ...... ...... ...... ...... ...... endchar char 0x1a0 ...... ...... ...... ...... ...... ...... endchar char 0x1a1 ...... ...... ...... ...... ...... ...... endchar char 0x1a2 ...... ...... ...... ...... ...... ...... endchar char 0x1a3 ...... ...... ...... ...... ...... ...... endchar char 0x1a4 ...... ...... ...... ...... ...... ...... endchar char 0x1a5 ...... ...... ...... ...... ...... ...... endchar char 0x1a6 ...... ...... ...... ...... ...... ...... endchar char 0x1a7 ...... ...... ...... ...... ...... ...... endchar char 0x1a8 ...... ...... ...... ...... ...... ...... endchar char 0x1a9 ...... ...... ...... ...... ...... ...... endchar char 0x1aa ...... ...... ...... ...... ...... ...... endchar char 0x1ab ...... ...... ...... ...... ...... ...... endchar char 0x1ac ...... ...... ...... ...... ...... ...... endchar char 0x1ad ...... ...... ...... ...... ...... ...... endchar char 0x1ae ...... ...... ...... ...... ...... ...... endchar char 0x1af ...... ...... ...... ...... ...... ...... endchar char 0x1b0 ...... ...... ...... ...... ...... ...... endchar char 0x1b1 ...... ...... ...... ...... ...... ...... endchar char 0x1b2 ...... ...... ...... ...... ...... ...... endchar char 0x1b3 ...... ...... ...... ...... ...... ...... endchar char 0x1b4 ...... ...... ...... ...... ...... ...... endchar char 0x1b5 ...... ...... ...... ...... ...... ...... endchar char 0x1b6 ...... ...... ...... ...... ...... ...... endchar char 0x1b7 ...... ...... ...... ...... ...... ...... endchar char 0x1b8 ...... ...... ...... ...... ...... ...... endchar char 0x1b9 ...... ...... ...... ...... ...... ...... endchar char 0x1ba ...... ...... ...... ...... ...... ...... endchar char 0x1bb ...... ...... ...... ...... ...... ...... endchar char 0x1bc ...... ...... ...... ...... ...... ...... endchar char 0x1bd ...... ...... ...... ...... ...... ...... endchar char 0x1be ...... ...... ...... ...... ...... ...... endchar char 0x1bf ...... ...... ...... ...... ...... ...... endchar char 0x1c0 ...... ...... ...... ...... ...... ...... endchar char 0x1c1 ...... ...... ...... ...... ...... ...... endchar char 0x1c2 ...... ...... ...... ...... ...... ...... endchar char 0x1c3 ...... ...... ...... ...... ...... ...... endchar char 0x1c4 ...... ...... ...... ...... ...... ...... endchar char 0x1c5 ...... ...... ...... ...... ...... ...... endchar char 0x1c6 ...... ...... ...... ...... ...... ...... endchar char 0x1c7 ...... ...... ...... ...... ...... ...... endchar char 0x1c8 ...... ...... ...... ...... ...... ...... endchar char 0x1c9 ...... ...... ...... ...... ...... ...... endchar char 0x1ca ...... ...... ...... ...... ...... ...... endchar char 0x1cb ...... ...... ...... ...... ...... ...... endchar char 0x1cc ...... ...... ...... ...... ...... ...... endchar char 0x1cd ...... ...... ...... ...... ...... ...... endchar char 0x1ce ...... ...... ...... ...... ...... ...... endchar char 0x1cf ...... ...... ...... ...... ...... ...... endchar char 0x1d0 ...... ...... ...... ...... ...... ...... endchar char 0x1d1 ...... ...... ...... ...... ...... ...... endchar char 0x1d2 ...... ...... ...... ...... ...... ...... endchar char 0x1d3 ...... ...... ...... ...... ...... ...... endchar char 0x1d4 ...... ...... ...... ...... ...... ...... endchar char 0x1d5 ...... ...... ...... ...... ...... ...... endchar char 0x1d6 ...... ...... ...... ...... ...... ...... endchar char 0x1d7 ...... ...... ...... ...... ...... ...... endchar char 0x1d8 ...... ...... ...... ...... ...... ...... endchar char 0x1d9 ...... ...... ...... ...... ...... ...... endchar char 0x1da ...... ...... ...... ...... ...... ...... endchar char 0x1db ...... ...... ...... ...... ...... ...... endchar char 0x1dc ...... ...... ...... ...... ...... ...... endchar char 0x1dd ...... ...... ...... ...... ...... ...... endchar char 0x1de ...... ...... ...... ...... ...... ...... endchar char 0x1df ...... ...... ...... ...... ...... ...... endchar char 0x1e0 ...... ...... ...... ...... ...... ...... endchar char 0x1e1 ...... ...... ...... ...... ...... ...... endchar char 0x1e2 ...... ...... ...... ...... ...... ...... endchar char 0x1e3 ...... ...... ...... ...... ...... ...... endchar char 0x1e4 ...... ...... ...... ...... ...... ...... endchar char 0x1e5 ...... ...... ...... ...... ...... ...... endchar char 0x1e6 ...... ...... ...... ...... ...... ...... endchar char 0x1e7 ...... ...... ...... ...... ...... ...... endchar char 0x1e8 ...... ...... ...... ...... ...... ...... endchar char 0x1e9 ...... ...... ...... ...... ...... ...... endchar char 0x1ea ...... ...... ...... ...... ...... ...... endchar char 0x1eb ...... ...... ...... ...... ...... ...... endchar char 0x1ec ...... ...... ...... ...... ...... ...... endchar char 0x1ed ...... ...... ...... ...... ...... ...... endchar char 0x1ee ...... ...... ...... ...... ...... ...... endchar char 0x1ef ...... ...... ...... ...... ...... ...... endchar char 0x1f0 ...... ...... ...... ...... ...... ...... endchar char 0x1f1 ...... ...... ...... ...... ...... ...... endchar char 0x1f2 ...... ...... ...... ...... ...... ...... endchar char 0x1f3 ...... ...... ...... ...... ...... ...... endchar char 0x1f4 ...... ...... ...... ...... ...... ...... endchar char 0x1f5 ...... ...... ...... ...... ...... ...... endchar char 0x1f6 ...... ...... ...... ...... ...... ...... endchar char 0x1f7 ...... ...... ...... ...... ...... ...... endchar char 0x1f8 ...... ...... ...... ...... ...... ...... endchar char 0x1f9 ...... ...... ...... ...... ...... ...... endchar char 0x1fa ...... ...... ...... ...... ...... ...... endchar char 0x1fb ...... ...... ...... ...... ...... ...... endchar char 0x1fc ...... ...... ...... ...... ...... ...... endchar char 0x1fd ...... ...... ...... ...... ...... ...... endchar char 0x1fe ...... ...... ...... ...... ...... ...... endchar char 0x1ff ...... ...... ...... ...... ...... ...... endchar char 0x200 ...... ...... ...... ...... ...... ...... endchar char 0x201 ...... ...... ...... ...... ...... ...... endchar char 0x202 ...... ...... ...... ...... ...... ...... endchar char 0x203 ...... ...... ...... ...... ...... ...... endchar char 0x204 ...... ...... ...... ...... ...... ...... endchar char 0x205 ...... ...... ...... ...... ...... ...... endchar char 0x206 ...... ...... ...... ...... ...... ...... endchar char 0x207 ...... ...... ...... ...... ...... ...... endchar char 0x208 ...... ...... ...... ...... ...... ...... endchar char 0x209 ...... ...... ...... ...... ...... ...... endchar char 0x20a ...... ...... ...... ...... ...... ...... endchar char 0x20b ...... ...... ...... ...... ...... ...... endchar char 0x20c ...... ...... ...... ...... ...... ...... endchar char 0x20d ...... ...... ...... ...... ...... ...... endchar char 0x20e ...... ...... ...... ...... ...... ...... endchar char 0x20f ...... ...... ...... ...... ...... ...... endchar char 0x210 ...... ...... ...... ...... ...... ...... endchar char 0x211 ...... ...... ...... ...... ...... ...... endchar char 0x212 ...... ...... ...... ...... ...... ...... endchar char 0x213 ...... ...... ...... ...... ...... ...... endchar char 0x214 ...... ...... ...... ...... ...... ...... endchar char 0x215 ...... ...... ...... ...... ...... ...... endchar char 0x216 ...... ...... ...... ...... ...... ...... endchar char 0x217 ...... ...... ...... ...... ...... ...... endchar char 0x218 ...... ...... ...... ...... ...... ...... endchar char 0x219 ...... ...... ...... ...... ...... ...... endchar char 0x21a ...... ...... ...... ...... ...... ...... endchar char 0x21b ...... ...... ...... ...... ...... ...... endchar char 0x21c ...... ...... ...... ...... ...... ...... endchar char 0x21d ...... ...... ...... ...... ...... ...... endchar char 0x21e ...... ...... ...... ...... ...... ...... endchar char 0x21f ...... ...... ...... ...... ...... ...... endchar char 0x220 ...... ...... ...... ...... ...... ...... endchar char 0x221 ...... ...... ...... ...... ...... ...... endchar char 0x222 ...... ...... ...... ...... ...... ...... endchar char 0x223 ...... ...... ...... ...... ...... ...... endchar char 0x224 ...... ...... ...... ...... ...... ...... endchar char 0x225 ...... ...... ...... ...... ...... ...... endchar char 0x226 ...... ...... ...... ...... ...... ...... endchar char 0x227 ...... ...... ...... ...... ...... ...... endchar char 0x228 ...... ...... ...... ...... ...... ...... endchar char 0x229 ...... ...... ...... ...... ...... ...... endchar char 0x22a ...... ...... ...... ...... ...... ...... endchar char 0x22b ...... ...... ...... ...... ...... ...... endchar char 0x22c ...... ...... ...... ...... ...... ...... endchar char 0x22d ...... ...... ...... ...... ...... ...... endchar char 0x22e ...... ...... ...... ...... ...... ...... endchar char 0x22f ...... ...... ...... ...... ...... ...... endchar char 0x230 ...... ...... ...... ...... ...... ...... endchar char 0x231 ...... ...... ...... ...... ...... ...... endchar char 0x232 ...... ...... ...... ...... ...... ...... endchar char 0x233 ...... ...... ...... ...... ...... ...... endchar char 0x234 ...... ...... ...... ...... ...... ...... endchar char 0x235 ...... ...... ...... ...... ...... ...... endchar char 0x236 ...... ...... ...... ...... ...... ...... endchar char 0x237 ...... ...... ...... ...... ...... ...... endchar char 0x238 ...... ...... ...... ...... ...... ...... endchar char 0x239 ...... ...... ...... ...... ...... ...... endchar char 0x23a ...... ...... ...... ...... ...... ...... endchar char 0x23b ...... ...... ...... ...... ...... ...... endchar char 0x23c ...... ...... ...... ...... ...... ...... endchar char 0x23d ...... ...... ...... ...... ...... ...... endchar char 0x23e ...... ...... ...... ...... ...... ...... endchar char 0x23f ...... ...... ...... ...... ...... ...... endchar char 0x240 ...... ...... ...... ...... ...... ...... endchar char 0x241 ...... ...... ...... ...... ...... ...... endchar char 0x242 ...... ...... ...... ...... ...... ...... endchar char 0x243 ...... ...... ...... ...... ...... ...... endchar char 0x244 ...... ...... ...... ...... ...... ...... endchar char 0x245 ...... ...... ...... ...... ...... ...... endchar char 0x246 ...... ...... ...... ...... ...... ...... endchar char 0x247 ...... ...... ...... ...... ...... ...... endchar char 0x248 ...... ...... ...... ...... ...... ...... endchar char 0x249 ...... ...... ...... ...... ...... ...... endchar char 0x24a ...... ...... ...... ...... ...... ...... endchar char 0x24b ...... ...... ...... ...... ...... ...... endchar char 0x24c ...... ...... ...... ...... ...... ...... endchar char 0x24d ...... ...... ...... ...... ...... ...... endchar char 0x24e ...... ...... ...... ...... ...... ...... endchar char 0x24f ...... ...... ...... ...... ...... ...... endchar char 0x250 ...... ...... ...... ...... ...... ...... endchar char 0x251 ...... ...... ...... ...... ...... ...... endchar char 0x252 ...... ...... ...... ...... ...... ...... endchar char 0x253 ...... ...... ...... ...... ...... ...... endchar char 0x254 ...... ...... ...... ...... ...... ...... endchar char 0x255 ...... ...... ...... ...... ...... ...... endchar char 0x256 ...... ...... ...... ...... ...... ...... endchar char 0x257 ...... ...... ...... ...... ...... ...... endchar char 0x258 ...... ...... ...... ...... ...... ...... endchar char 0x259 ...... ...... ...... ...... ...... ...... endchar char 0x25a ...... ...... ...... ...... ...... ...... endchar char 0x25b ...... ...... ...... ...... ...... ...... endchar char 0x25c ...... ...... ...... ...... ...... ...... endchar char 0x25d ...... ...... ...... ...... ...... ...... endchar char 0x25e ...... ...... ...... ...... ...... ...... endchar char 0x25f ...... ...... ...... ...... ...... ...... endchar char 0x260 ...... ...... ...... ...... ...... ...... endchar char 0x261 ...... ...... ...... ...... ...... ...... endchar char 0x262 ...... ...... ...... ...... ...... ...... endchar char 0x263 ...... ...... ...... ...... ...... ...... endchar char 0x264 ...... ...... ...... ...... ...... ...... endchar char 0x265 ...... ...... ...... ...... ...... ...... endchar char 0x266 ...... ...... ...... ...... ...... ...... endchar char 0x267 ...... ...... ...... ...... ...... ...... endchar char 0x268 ...... ...... ...... ...... ...... ...... endchar char 0x269 ...... ...... ...... ...... ...... ...... endchar char 0x26a ...... ...... ...... ...... ...... ...... endchar char 0x26b ...... ...... ...... ...... ...... ...... endchar char 0x26c ...... ...... ...... ...... ...... ...... endchar char 0x26d ...... ...... ...... ...... ...... ...... endchar char 0x26e ...... ...... ...... ...... ...... ...... endchar char 0x26f ...... ...... ...... ...... ...... ...... endchar char 0x270 ...... ...... ...... ...... ...... ...... endchar char 0x271 ...... ...... ...... ...... ...... ...... endchar char 0x272 ...... ...... ...... ...... ...... ...... endchar char 0x273 ...... ...... ...... ...... ...... ...... endchar char 0x274 ...... ...... ...... ...... ...... ...... endchar char 0x275 ...... ...... ...... ...... ...... ...... endchar char 0x276 ...... ...... ...... ...... ...... ...... endchar char 0x277 ...... ...... ...... ...... ...... ...... endchar char 0x278 ...... ...... ...... ...... ...... ...... endchar char 0x279 ...... ...... ...... ...... ...... ...... endchar char 0x27a ...... ...... ...... ...... ...... ...... endchar char 0x27b ...... ...... ...... ...... ...... ...... endchar char 0x27c ...... ...... ...... ...... ...... ...... endchar char 0x27d ...... ...... ...... ...... ...... ...... endchar char 0x27e ...... ...... ...... ...... ...... ...... endchar char 0x27f ...... ...... ...... ...... ...... ...... endchar char 0x280 ...... ...... ...... ...... ...... ...... endchar char 0x281 ...... ...... ...... ...... ...... ...... endchar char 0x282 ...... ...... ...... ...... ...... ...... endchar char 0x283 ...... ...... ...... ...... ...... ...... endchar char 0x284 ...... ...... ...... ...... ...... ...... endchar char 0x285 ...... ...... ...... ...... ...... ...... endchar char 0x286 ...... ...... ...... ...... ...... ...... endchar char 0x287 ...... ...... ...... ...... ...... ...... endchar char 0x288 ...... ...... ...... ...... ...... ...... endchar char 0x289 ...... ...... ...... ...... ...... ...... endchar char 0x28a ...... ...... ...... ...... ...... ...... endchar char 0x28b ...... ...... ...... ...... ...... ...... endchar char 0x28c ...... ...... ...... ...... ...... ...... endchar char 0x28d ...... ...... ...... ...... ...... ...... endchar char 0x28e ...... ...... ...... ...... ...... ...... endchar char 0x28f ...... ...... ...... ...... ...... ...... endchar char 0x290 ...... ...... ...... ...... ...... ...... endchar char 0x291 ...... ...... ...... ...... ...... ...... endchar char 0x292 ...... ...... ...... ...... ...... ...... endchar char 0x293 ...... ...... ...... ...... ...... ...... endchar char 0x294 ...... ...... ...... ...... ...... ...... endchar char 0x295 ...... ...... ...... ...... ...... ...... endchar char 0x296 ...... ...... ...... ...... ...... ...... endchar char 0x297 ...... ...... ...... ...... ...... ...... endchar char 0x298 ...... ...... ...... ...... ...... ...... endchar char 0x299 ...... ...... ...... ...... ...... ...... endchar char 0x29a ...... ...... ...... ...... ...... ...... endchar char 0x29b ...... ...... ...... ...... ...... ...... endchar char 0x29c ...... ...... ...... ...... ...... ...... endchar char 0x29d ...... ...... ...... ...... ...... ...... endchar char 0x29e ...... ...... ...... ...... ...... ...... endchar char 0x29f ...... ...... ...... ...... ...... ...... endchar char 0x2a0 ...... ...... ...... ...... ...... ...... endchar char 0x2a1 ...... ...... ...... ...... ...... ...... endchar char 0x2a2 ...... ...... ...... ...... ...... ...... endchar char 0x2a3 ...... ...... ...... ...... ...... ...... endchar char 0x2a4 ...... ...... ...... ...... ...... ...... endchar char 0x2a5 ...... ...... ...... ...... ...... ...... endchar char 0x2a6 ...... ...... ...... ...... ...... ...... endchar char 0x2a7 ...... ...... ...... ...... ...... ...... endchar char 0x2a8 ...... ...... ...... ...... ...... ...... endchar char 0x2a9 ...... ...... ...... ...... ...... ...... endchar char 0x2aa ...... ...... ...... ...... ...... ...... endchar char 0x2ab ...... ...... ...... ...... ...... ...... endchar char 0x2ac ...... ...... ...... ...... ...... ...... endchar char 0x2ad ...... ...... ...... ...... ...... ...... endchar char 0x2ae ...... ...... ...... ...... ...... ...... endchar char 0x2af ...... ...... ...... ...... ...... ...... endchar char 0x2b0 ...... ...... ...... ...... ...... ...... endchar char 0x2b1 ...... ...... ...... ...... ...... ...... endchar char 0x2b2 ...... ...... ...... ...... ...... ...... endchar char 0x2b3 ...... ...... ...... ...... ...... ...... endchar char 0x2b4 ...... ...... ...... ...... ...... ...... endchar char 0x2b5 ...... ...... ...... ...... ...... ...... endchar char 0x2b6 ...... ...... ...... ...... ...... ...... endchar char 0x2b7 ...... ...... ...... ...... ...... ...... endchar char 0x2b8 ...... ...... ...... ...... ...... ...... endchar char 0x2b9 ...... ...... ...... ...... ...... ...... endchar char 0x2ba ...... ...... ...... ...... ...... ...... endchar char 0x2bb ...... ...... ...... ...... ...... ...... endchar char 0x2bc ...... ...... ...... ...... ...... ...... endchar char 0x2bd ...... ...... ...... ...... ...... ...... endchar char 0x2be ...... ...... ...... ...... ...... ...... endchar char 0x2bf ...... ...... ...... ...... ...... ...... endchar char 0x2c0 ...... ...... ...... ...... ...... ...... endchar char 0x2c1 ...... ...... ...... ...... ...... ...... endchar char 0x2c2 ...... ...... ...... ...... ...... ...... endchar char 0x2c3 ...... ...... ...... ...... ...... ...... endchar char 0x2c4 ...... ...... ...... ...... ...... ...... endchar char 0x2c5 ...... ...... ...... ...... ...... ...... endchar char 0x2c6 ...... ...... ...... ...... ...... ...... endchar # CARON char 0x2c7 .X.X.. ..X... ...... ...... ...... ...... endchar char 0x2c8 ...... ...... ...... ...... ...... ...... endchar char 0x2c9 ...... ...... ...... ...... ...... ...... endchar char 0x2ca ...... ...... ...... ...... ...... ...... endchar char 0x2cb ...... ...... ...... ...... ...... ...... endchar char 0x2cc ...... ...... ...... ...... ...... ...... endchar char 0x2cd ...... ...... ...... ...... ...... ...... endchar char 0x2ce ...... ...... ...... ...... ...... ...... endchar char 0x2cf ...... ...... ...... ...... ...... ...... endchar char 0x2d0 ...... ...... ...... ...... ...... ...... endchar char 0x2d1 ...... ...... ...... ...... ...... ...... endchar char 0x2d2 ...... ...... ...... ...... ...... ...... endchar char 0x2d3 ...... ...... ...... ...... ...... ...... endchar char 0x2d4 ...... ...... ...... ...... ...... ...... endchar char 0x2d5 ...... ...... ...... ...... ...... ...... endchar char 0x2d6 ...... ...... ...... ...... ...... ...... endchar char 0x2d7 ...... ...... ...... ...... ...... ...... endchar # BREVE char 0x2d8 .X..X. ..XX.. ...... ...... ...... ...... endchar # DOT ABOVE char 0x2d9 ..X... ...... ...... ...... ...... ...... endchar char 0x2da ...... ...... ...... ...... ...... ...... endchar # OGONEK char 0x2db ...... ...... ...... ...... ..X... ...X.. endchar char 0x2dc ...... ...... ...... ...... ...... ...... endchar # DOUBLE ACUTE ACCENT char 0x2dd ..X.X. .X.X.. ...... ...... ...... ...... endchar char 0x2de ...... ...... ...... ...... ...... ...... endchar char 0x2df ...... ...... ...... ...... ...... ...... endchar char 0x2e0 ...... ...... ...... ...... ...... ...... endchar char 0x2e1 ...... ...... ...... ...... ...... ...... endchar char 0x2e2 ...... ...... ...... ...... ...... ...... endchar char 0x2e3 ...... ...... ...... ...... ...... ...... endchar char 0x2e4 ...... ...... ...... ...... ...... ...... endchar char 0x2e5 ...... ...... ...... ...... ...... ...... endchar char 0x2e6 ...... ...... ...... ...... ...... ...... endchar char 0x2e7 ...... ...... ...... ...... ...... ...... endchar char 0x2e8 ...... ...... ...... ...... ...... ...... endchar char 0x2e9 ...... ...... ...... ...... ...... ...... endchar char 0x2ea ...... ...... ...... ...... ...... ...... endchar char 0x2eb ...... ...... ...... ...... ...... ...... endchar char 0x2ec ...... ...... ...... ...... ...... ...... endchar char 0x2ed ...... ...... ...... ...... ...... ...... endchar char 0x2ee ...... ...... ...... ...... ...... ...... endchar char 0x2ef ...... ...... ...... ...... ...... ...... endchar char 0x2f0 ...... ...... ...... ...... ...... ...... endchar char 0x2f1 ...... ...... ...... ...... ...... ...... endchar char 0x2f2 ...... ...... ...... ...... ...... ...... endchar char 0x2f3 ...... ...... ...... ...... ...... ...... endchar char 0x2f4 ...... ...... ...... ...... ...... ...... endchar char 0x2f5 ...... ...... ...... ...... ...... ...... endchar char 0x2f6 ...... ...... ...... ...... ...... ...... endchar char 0x2f7 ...... ...... ...... ...... ...... ...... endchar char 0x2f8 ...... ...... ...... ...... ...... ...... endchar char 0x2f9 ...... ...... ...... ...... ...... ...... endchar char 0x2fa ...... ...... ...... ...... ...... ...... endchar char 0x2fb ...... ...... ...... ...... ...... ...... endchar char 0x2fc ...... ...... ...... ...... ...... ...... endchar char 0x2fd ...... ...... ...... ...... ...... ...... endchar char 0x2fe ...... ...... ...... ...... ...... ...... endchar char 0x2ff ...... ...... ...... ...... ...... ...... endchar char 0x300 ...... ...... ...... ...... ...... ...... endchar char 0x301 ...... ...... ...... ...... ...... ...... endchar char 0x302 ...... ...... ...... ...... ...... ...... endchar char 0x303 ...... ...... ...... ...... ...... ...... endchar char 0x304 ...... ...... ...... ...... ...... ...... endchar char 0x305 ...... ...... ...... ...... ...... ...... endchar char 0x306 ...... ...... ...... ...... ...... ...... endchar char 0x307 ...... ...... ...... ...... ...... ...... endchar char 0x308 ...... ...... ...... ...... ...... ...... endchar char 0x309 ...... ...... ...... ...... ...... ...... endchar char 0x30a ...... ...... ...... ...... ...... ...... endchar char 0x30b ...... ...... ...... ...... ...... ...... endchar char 0x30c ...... ...... ...... ...... ...... ...... endchar char 0x30d ...... ...... ...... ...... ...... ...... endchar char 0x30e ...... ...... ...... ...... ...... ...... endchar char 0x30f ...... ...... ...... ...... ...... ...... endchar char 0x310 ...... ...... ...... ...... ...... ...... endchar char 0x311 ...... ...... ...... ...... ...... ...... endchar char 0x312 ...... ...... ...... ...... ...... ...... endchar char 0x313 ...... ...... ...... ...... ...... ...... endchar char 0x314 ...... ...... ...... ...... ...... ...... endchar char 0x315 ...... ...... ...... ...... ...... ...... endchar char 0x316 ...... ...... ...... ...... ...... ...... endchar char 0x317 ...... ...... ...... ...... ...... ...... endchar char 0x318 ...... ...... ...... ...... ...... ...... endchar char 0x319 ...... ...... ...... ...... ...... ...... endchar char 0x31a ...... ...... ...... ...... ...... ...... endchar char 0x31b ...... ...... ...... ...... ...... ...... endchar char 0x31c ...... ...... ...... ...... ...... ...... endchar char 0x31d ...... ...... ...... ...... ...... ...... endchar char 0x31e ...... ...... ...... ...... ...... ...... endchar char 0x31f ...... ...... ...... ...... ...... ...... endchar char 0x320 ...... ...... ...... ...... ...... ...... endchar char 0x321 ...... ...... ...... ...... ...... ...... endchar char 0x322 ...... ...... ...... ...... ...... ...... endchar char 0x323 ...... ...... ...... ...... ...... ...... endchar char 0x324 ...... ...... ...... ...... ...... ...... endchar char 0x325 ...... ...... ...... ...... ...... ...... endchar char 0x326 ...... ...... ...... ...... ...... ...... endchar char 0x327 ...... ...... ...... ...... ...... ...... endchar char 0x328 ...... ...... ...... ...... ...... ...... endchar char 0x329 ...... ...... ...... ...... ...... ...... endchar char 0x32a ...... ...... ...... ...... ...... ...... endchar char 0x32b ...... ...... ...... ...... ...... ...... endchar char 0x32c ...... ...... ...... ...... ...... ...... endchar char 0x32d ...... ...... ...... ...... ...... ...... endchar char 0x32e ...... ...... ...... ...... ...... ...... endchar char 0x32f ...... ...... ...... ...... ...... ...... endchar char 0x330 ...... ...... ...... ...... ...... ...... endchar char 0x331 ...... ...... ...... ...... ...... ...... endchar char 0x332 ...... ...... ...... ...... ...... ...... endchar char 0x333 ...... ...... ...... ...... ...... ...... endchar char 0x334 ...... ...... ...... ...... ...... ...... endchar char 0x335 ...... ...... ...... ...... ...... ...... endchar char 0x336 ...... ...... ...... ...... ...... ...... endchar char 0x337 ...... ...... ...... ...... ...... ...... endchar char 0x338 ...... ...... ...... ...... ...... ...... endchar char 0x339 ...... ...... ...... ...... ...... ...... endchar char 0x33a ...... ...... ...... ...... ...... ...... endchar char 0x33b ...... ...... ...... ...... ...... ...... endchar char 0x33c ...... ...... ...... ...... ...... ...... endchar char 0x33d ...... ...... ...... ...... ...... ...... endchar char 0x33e ...... ...... ...... ...... ...... ...... endchar char 0x33f ...... ...... ...... ...... ...... ...... endchar char 0x340 ...... ...... ...... ...... ...... ...... endchar char 0x341 ...... ...... ...... ...... ...... ...... endchar char 0x342 ...... ...... ...... ...... ...... ...... endchar char 0x343 ...... ...... ...... ...... ...... ...... endchar char 0x344 ...... ...... ...... ...... ...... ...... endchar char 0x345 ...... ...... ...... ...... ...... ...... endchar char 0x346 ...... ...... ...... ...... ...... ...... endchar char 0x347 ...... ...... ...... ...... ...... ...... endchar char 0x348 ...... ...... ...... ...... ...... ...... endchar char 0x349 ...... ...... ...... ...... ...... ...... endchar char 0x34a ...... ...... ...... ...... ...... ...... endchar char 0x34b ...... ...... ...... ...... ...... ...... endchar char 0x34c ...... ...... ...... ...... ...... ...... endchar char 0x34d ...... ...... ...... ...... ...... ...... endchar char 0x34e ...... ...... ...... ...... ...... ...... endchar char 0x34f ...... ...... ...... ...... ...... ...... endchar char 0x350 ...... ...... ...... ...... ...... ...... endchar char 0x351 ...... ...... ...... ...... ...... ...... endchar char 0x352 ...... ...... ...... ...... ...... ...... endchar char 0x353 ...... ...... ...... ...... ...... ...... endchar char 0x354 ...... ...... ...... ...... ...... ...... endchar char 0x355 ...... ...... ...... ...... ...... ...... endchar char 0x356 ...... ...... ...... ...... ...... ...... endchar char 0x357 ...... ...... ...... ...... ...... ...... endchar char 0x358 ...... ...... ...... ...... ...... ...... endchar char 0x359 ...... ...... ...... ...... ...... ...... endchar char 0x35a ...... ...... ...... ...... ...... ...... endchar char 0x35b ...... ...... ...... ...... ...... ...... endchar char 0x35c ...... ...... ...... ...... ...... ...... endchar char 0x35d ...... ...... ...... ...... ...... ...... endchar char 0x35e ...... ...... ...... ...... ...... ...... endchar char 0x35f ...... ...... ...... ...... ...... ...... endchar char 0x360 ...... ...... ...... ...... ...... ...... endchar char 0x361 ...... ...... ...... ...... ...... ...... endchar char 0x362 ...... ...... ...... ...... ...... ...... endchar char 0x363 ...... ...... ...... ...... ...... ...... endchar char 0x364 ...... ...... ...... ...... ...... ...... endchar char 0x365 ...... ...... ...... ...... ...... ...... endchar char 0x366 ...... ...... ...... ...... ...... ...... endchar char 0x367 ...... ...... ...... ...... ...... ...... endchar char 0x368 ...... ...... ...... ...... ...... ...... endchar char 0x369 ...... ...... ...... ...... ...... ...... endchar char 0x36a ...... ...... ...... ...... ...... ...... endchar char 0x36b ...... ...... ...... ...... ...... ...... endchar char 0x36c ...... ...... ...... ...... ...... ...... endchar char 0x36d ...... ...... ...... ...... ...... ...... endchar char 0x36e ...... ...... ...... ...... ...... ...... endchar char 0x36f ...... ...... ...... ...... ...... ...... endchar char 0x370 ...... ...... ...... ...... ...... ...... endchar char 0x371 ...... ...... ...... ...... ...... ...... endchar char 0x372 ...... ...... ...... ...... ...... ...... endchar char 0x373 ...... ...... ...... ...... ...... ...... endchar char 0x374 ...... ...... ...... ...... ...... ...... endchar char 0x375 ...... ...... ...... ...... ...... ...... endchar char 0x376 ...... ...... ...... ...... ...... ...... endchar char 0x377 ...... ...... ...... ...... ...... ...... endchar char 0x378 ...... ...... ...... ...... ...... ...... endchar char 0x379 ...... ...... ...... ...... ...... ...... endchar char 0x37a ...... ...... ...... ...... ...... ...... endchar char 0x37b ...... ...... ...... ...... ...... ...... endchar char 0x37c ...... ...... ...... ...... ...... ...... endchar char 0x37d ...... ...... ...... ...... ...... ...... endchar char 0x37e ...... ...... ...... ...... ...... ...... endchar char 0x37f ...... ...... ...... ...... ...... ...... endchar char 0x380 ...... ...... ...... ...... ...... ...... endchar char 0x381 ...... ...... ...... ...... ...... ...... endchar char 0x382 ...... ...... ...... ...... ...... ...... endchar char 0x383 ...... ...... ...... ...... ...... ...... endchar # GREEK TONOS char 0x384 ..X... ...... ...... ...... ...... ...... endchar # GREEK DIALYTIKA TONOS char 0x385 .X.X.X ...... ...... ...... ...... ...... endchar # GREEK CAPITAL LETTER ALPHA WITH TONOS char 0x386 X.XXX. .X...X .XXXXX .X...X .X...X ...... endchar # GREEK ANO TELEIA char 0x387 ...... ...... ..XX.. ..XX.. ...... ...... endchar # GREEK CAPITAL LETTER EPSILON WITH TONOS char 0x388 XXXXXX .X.... .XXX.. .X.... .XXXXX ...... endchar # GREEK CAPITAL LETTER ETA WITH TONOS char 0x389 XX...X .X...X .XXXXX .X...X .X...X ...... endchar # GREEK CAPITAL LETTER IOTA WITH TONOS char 0x38a X.XXX. ...X.. ...X.. ...X.. ..XXX. ...... endchar char 0x38b ...... ...... ...... ...... ...... ...... endchar # GREEK CAPITAL LETTER OMICRON WITH TONOS char 0x38c X.XXX. .X...X .X...X .X...X ..XXX. ...... endchar char 0x38d ...... ...... ...... ...... ...... ...... endchar # GREEK CAPITAL LETTER UPSILON WITH TONOS char 0x38e XX...X .X...X ..XXX. ...X.. ...X.. ...... endchar # GREEK CAPITAL LETTER OMEGA WITH TONOS char 0x38f X.XXX. .X...X ..XXX. ...... .XXXXX ...... endchar # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS char 0x390 .X.X.. ..X... ..X... ..X... ..XX.. ...... endchar # GREEK CAPITAL LETTER ALPHA char 0x391 .XXX.. X...X. XXXXX. X...X. X...X. ...... endchar # GREEK CAPITAL LETTER BETA char 0x392 XXXX.. X...X. XXXX.. X...X. XXXX.. ...... endchar # GREEK CAPITAL LETTER GAMMA char 0x0393 XXXXXX .XX.XX .XX..X .XX... .XX... .XX... endchar # GREEK CAPITAL LETTER DELTA char 0x394 ..X... .X.X.. X...X. X...X. XXXXX. ...... endchar # GREEK CAPITAL LETTER EPSILON char 0x395 XXXXX. X..... XXXX.. X..... XXXXX. ...... endchar # GREEK CAPITAL LETTER ZETA char 0x396 XXXXX. ...X.. ..X... .X.... XXXXX. ...... endchar # GREEK CAPITAL LETTER ETA char 0x397 X...X. X...X. XXXXX. X...X. X...X. ...... endchar # GREEK CAPITAL LETTER THETA char 0x0398 .XXX.. XX.XX. XXXXX. XX.XX. .XXX.. ...... endchar # GREEK CAPITAL LETTER IOTA char 0x399 .XXX.. ..X... ..X... ..X... .XXX.. ...... endchar # GREEK CAPITAL LETTER KAPPA char 0x39a .X..X. .X.X.. .XX... .X.X.. .X..X. ...... endchar # GREEK CAPITAL LETTER LAMDA char 0x39b ..X... .X.X.. X...X. X...X. X...X. ...... endchar # GREEK CAPITAL LETTER MU char 0x39c X...X. XX.XX. X.X.X. X...X. X...X. ...... endchar # GREEK CAPITAL LETTER NU char 0x39d X...X. XX..X. X.X.X. X..XX. X...X. ...... endchar # GREEK CAPITAL LETTER XI char 0x39e XXXXX. ...... .XXX.. ...... XXXXX. ...... endchar # GREEK CAPITAL LETTER OMICRON char 0x39f .XXX.. X...X. X...X. X...X. .XXX.. ...... endchar # GREEK CAPITAL LETTER PI char 0x3a0 XXXXX. X...X. X...X. X...X. X...X. ...... endchar # GREEK CAPITAL LETTER RHO char 0x3a1 XXXX.. X...X. XXXX.. X..... X..... ...... endchar char 0x3a2 ...... ...... ...... ...... ...... ...... endchar # GREEK CAPITAL LETTER SIGMA char 0x03a3 XXXXX. .XX... ..XX.. .XX... XX.... XXXXX. endchar # GREEK CAPITAL LETTER TAU char 0x3a4 XXXXX. ..X... ..X... ..X... ..X... ...... endchar # GREEK CAPITAL LETTER UPSILON char 0x3a5 X...X. X...X. .X.X.. ..X... ..X... ...... endchar # GREEK CAPITAL LETTER PHI char 0x03a6 .XXX.. .XXX.. X.X.X. X.X.X. .XXX.. .XXX.. endchar # GREEK CAPITAL LETTER CHI char 0x3a7 X...X. .X.X.. ..X... .X.X.. X...X. ...... endchar # GREEK CAPITAL LETTER PSI char 0x3a8 X.X.X. X.X.X. .XXX.. ..X... ..X... ...... endchar # GREEK CAPITAL LETTER OMEGA char 0x03a9 .XXX.. XX.XX. XX.XX. .X.X.. XX.XX. ...... endchar # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA char 0x3aa .X.X.. .XXX.. ..X... ..X... ..X... .XXX.. endchar # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA char 0x3ab X.X.X. X...X. .X.X.. ..X... ..X... ...... endchar # GREEK SMALL LETTER ALPHA WITH TONOS char 0x3ac ..X... XXX.X. X..X.. X..X.. XXXXX. ...... endchar # GREEK SMALL LETTER EPSILON WITH TONOS char 0x3ad ...X.. .XXXX. XXXX.. X..... .XXXX. ...... endchar # GREEK SMALL LETTER ETA WITH TONOS char 0x3ae ..X... XXXXX. .X..X. .X..X. .X..X. ...... endchar # GREEK SMALL LETTER IOTA WITH TONOS char 0x3af ...X.. ..X... ..X... ..X... ..XX.. ...... endchar # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS char 0x3b0 X.X... X...X. X...X. X...X. .XXX.. ...... endchar # GREEK SMALL LETTER ALPHA char 0x03b1 ...... .XX.X. XX.X.. XX.X.. .XX.X. ...... endchar # GREEK SMALL LETTER BETA char 0x03b2 .XXX.. XX.XX. XXXX.. XX.XX. XXXX.. XX.... endchar # GREEK SMALL LETTER GAMMA char 0x3b3 ...... .X..X. ..XX.. ..XX.. .X..X. ..XX.. endchar # GREEK SMALL LETTER DELTA char 0x03b4 ..XX.. .XX.X. .XXX.. XX.XX. XX.XX. .XXX.. endchar # GREEK SMALL LETTER EPSILON char 0x3b5 ...... .XXXX. XXXX.. X..... .XXXX. ...... endchar # GREEK SMALL LETTER ZETA char 0x3b6 XXXXX. ..XX.. .X.... X..... XX.... .XXX.. endchar # GREEK SMALL LETTER ETA char 0x3b7 ...... XXXX.. .X..X. .X..X. .X..X. ...... endchar # GREEK SMALL LETTER THETA char 0x3b8 .XXX.. .X..X. .XXXX. X...X. .XXX.. ...... endchar # GREEK SMALL LETTER IOTA char 0x3b9 ...... ..X... ..X... ..X... ..XX.. ...... endchar # GREEK SMALL LETTER KAPPA char 0x3ba ...... X..X.. XXX... X..X.. X...X. ...... endchar # GREEK SMALL LETTER LAMDA char 0x3bb .XXX.. ...XX. .XXXX. X...X. X...X. ...... endchar # GREEK SMALL LETTER MU char 0x03bc ...... .X..X. .X..X. .X..X. .XXXX. X..... endchar # GREEK SMALL LETTER NU char 0x3bd ...... X...X. X...X. .X.X.. ..X... ...... endchar # GREEK SMALL LETTER XI char 0x3be XXXXX. .XX... XX.... .XXX.. XX.... .XXX.. endchar # GREEK SMALL LETTER OMICRON char 0x3bf ...... .XXX.. X...X. X...X. .XXX.. ...... endchar # GREEK SMALL LETTER PI char 0x03c0 ...... XXXXX. .X.X.. .X.X.. .X.X.. ...... endchar # GREEK SMALL LETTER RHO char 0x3c1 ...... .XXX.. X...X. X...X. XXXX.. X..... endchar # GREEK SMALL LETTER FINAL SIGMA char 0x3c2 ...... ..XXX. .XX... ...XX. .XXX.. ...... endchar # GREEK SMALL LETTER SIGMA char 0x03c3 ..XXX. .XXX.. XX.XX. XX.XX. .XXX.. ...... endchar # GREEK SMALL LETTER TAU char 0x03c4 ...... XXXXX. ..XX.. ..XX.. ..XX.. ..X... endchar # GREEK SMALL LETTER UPSILON char 0x3c5 ...... X...X. X...X. X...X. .XXX.. ...... endchar # GREEK SMALL LETTER PHI char 0x03c6 ..X... .XXX.. X.X.X. X.X.X. .XXX.. ..X... endchar # GREEK SMALL LETTER CHI char 0x3c7 ...... X..XX. .XX... ..X... .XXX.. XX..X. endchar # GREEK SMALL LETTER PSI char 0x3c8 ...... X...X. X.X.X. X.X.X. XXXXX. ..X... endchar # GREEK SMALL LETTER OMEGA char 0x3c9 ...... X...X. X.X.X. X.X.X. .XXX.. ...... endchar # GREEK SMALL LETTER IOTA WITH DIALYTIKA char 0x3ca .X.X.. ..X... ..X... ..X... ..XX.. ...... endchar # GREEK SMALL LETTER UPSILON WITH DIALYTIKA char 0x3cb .X.X.. X...X. X...X. X...X. .XXX.. ...... endchar # GREEK SMALL LETTER OMICRON WITH TONOS char 0x3cc ..X... .XXX.. X...X. X...X. .XXX.. ...... endchar # GREEK SMALL LETTER UPSILON WITH TONOS char 0x3cd ..X... X...X. X...X. X...X. .XXX.. ...... endchar # GREEK SMALL LETTER OMEGA WITH TONOS char 0x3ce ..X... X...X. X.X.X. X.X.X. .XXX.. ...... endchar char 0x3cf ...... ...... ...... ...... ...... ...... endchar # GREEK BETA SYMBOL char 0x3d0 .XXX.. X..... .XXX.. X...X. X...X. .XXX.. endchar # GREEK THETA SYMBOL char 0x3d1 ..XX.. ....X. X...X. X...X. .X.X.. ..X... endchar char 0x3d2 ...... ...... ...... ...... ...... ...... endchar char 0x3d3 ...... ...... ...... ...... ...... ...... endchar char 0x3d4 ...... ...... ...... ...... ...... ...... endchar char 0x3d5 ...... ...... ...... ...... ...... ...... endchar char 0x3d6 ...... ...... ...... ...... ...... ...... endchar char 0x3d7 ...... ...... ...... ...... ...... ...... endchar char 0x3d8 ...... ...... ...... ...... ...... ...... endchar char 0x3d9 ...... ...... ...... ...... ...... ...... endchar char 0x3da ...... ...... ...... ...... ...... ...... endchar char 0x3db ...... ...... ...... ...... ...... ...... endchar char 0x3dc ...... ...... ...... ...... ...... ...... endchar char 0x3dd ...... ...... ...... ...... ...... ...... endchar char 0x3de ...... ...... ...... ...... ...... ...... endchar char 0x3df ...... ...... ...... ...... ...... ...... endchar char 0x3e0 ...... ...... ...... ...... ...... ...... endchar char 0x3e1 ...... ...... ...... ...... ...... ...... endchar char 0x3e2 ...... ...... ...... ...... ...... ...... endchar char 0x3e3 ...... ...... ...... ...... ...... ...... endchar char 0x3e4 ...... ...... ...... ...... ...... ...... endchar char 0x3e5 ...... ...... ...... ...... ...... ...... endchar char 0x3e6 ...... ...... ...... ...... ...... ...... endchar char 0x3e7 ...... ...... ...... ...... ...... ...... endchar char 0x3e8 ...... ...... ...... ...... ...... ...... endchar char 0x3e9 ...... ...... ...... ...... ...... ...... endchar char 0x3ea ...... ...... ...... ...... ...... ...... endchar char 0x3eb ...... ...... ...... ...... ...... ...... endchar char 0x3ec ...... ...... ...... ...... ...... ...... endchar char 0x3ed ...... ...... ...... ...... ...... ...... endchar char 0x3ee ...... ...... ...... ...... ...... ...... endchar char 0x3ef ...... ...... ...... ...... ...... ...... endchar char 0x3f0 ...... ...... ...... ...... ...... ...... endchar char 0x3f1 ...... ...... ...... ...... ...... ...... endchar char 0x3f2 ...... ...... ...... ...... ...... ...... endchar char 0x3f3 ...... ...... ...... ...... ...... ...... endchar char 0x3f4 ...... ...... ...... ...... ...... ...... endchar char 0x3f5 ...... ...... ...... ...... ...... ...... endchar char 0x3f6 ...... ...... ...... ...... ...... ...... endchar char 0x3f7 ...... ...... ...... ...... ...... ...... endchar char 0x3f8 ...... ...... ...... ...... ...... ...... endchar char 0x3f9 ...... ...... ...... ...... ...... ...... endchar char 0x3fa ...... ...... ...... ...... ...... ...... endchar char 0x3fb ...... ...... ...... ...... ...... ...... endchar char 0x3fc ...... ...... ...... ...... ...... ...... endchar char 0x3fd ...... ...... ...... ...... ...... ...... endchar char 0x3fe ...... ...... ...... ...... ...... ...... endchar char 0x3ff ...... ...... ...... ...... ...... ...... endchar # CYRILLIC CAPITAL LETTER IE WITH GRAVE char 0x400 .X.... ..X... XXXXX. XXXX.. X..... XXXXX. endchar # CYRILLIC CAPITAL LETTER IO char 0x401 .X.X.. XXXXX. X..... XXXX.. X..... XXXXX. endchar # CYRILLIC CAPITAL LETTER DJE char 0x402 XXXXX. ..X... ..XXX. ..X.X. ..X.X. ...... endchar # CYRILLIC CAPITAL LETTER GJE char 0x403 ...X.. XXXXX. X..... X..... X..... X..... endchar # CYRILLIC CAPITAL LETTER UKRAINIAN IE char 0x404 ..XXX. .X.... .XXXX. .X.... ..XXX. ...... endchar # CYRILLIC CAPITAL LETTER DZE char 0x405 .XXXX. X..... .XXX.. ....X. XXXX.. ...... endchar # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I char 0x406 .XXX.. ..X... ..X... ..X... .XXX.. ...... endchar # CYRILLIC CAPITAL LETTER YI char 0x407 .X.X.. .XXX.. ..X... ..X... ..X... .XXX.. endchar # CYRILLIC CAPITAL LETTER JE char 0x408 ....X. ....X. ....X. X...X. .XXX.. ...... endchar # CYRILLIC CAPITAL LETTER LJE char 0x409 ..XX.. ..XX.. ..XXXX X.XX.X .XXXXX ...... endchar # CYRILLIC CAPITAL LETTER NJE char 0x40a X.XX.. X.XX.. XXXXXX X.XX.X X.XXXX ...... endchar # CYRILLIC CAPITAL LETTER TSHE char 0x40b XXXXX. ..X... ..XXX. ..X.X. ..X.X. ...... endchar # CYRILLIC CAPITAL LETTER KJE char 0x40c ...X.. .X..X. .X.X.. .XX... .X.X.. .X..X. endchar # CYRILLIC CAPITAL LETTER I WITH GRAVE char 0x40d .X.... X...X. X..XX. X.X.X. XX..X. X...X. endchar # CYRILLIC CAPITAL LETTER SHORT U char 0x40e ..X... X...X. X...X. .XXXX. ....X. .XXX.. endchar # CYRILLIC CAPITAL LETTER DZHE char 0x40f X...X. X...X. X...X. X...X. XXXXX. ..X... endchar # CYRILLIC CAPITAL LETTER A char 0x410 .XXX.. X...X. XXXXX. X...X. X...X. ...... endchar # CYRILLIC CAPITAL LETTER BE char 0x411 XXXXX. X..... XXXX.. X...X. XXXX.. ...... endchar # CYRILLIC CAPITAL LETTER VE char 0x412 XXXX.. X...X. XXXX.. X...X. XXXX.. ...... endchar # CYRILLIC CAPITAL LETTER GHE char 0x413 XXXXX. X..... X..... X..... X..... ...... endchar # CYRILLIC CAPITAL LETTER DE char 0x414 ..XXX. .X..X. .X..X. .X..X. XXXXXX X....X endchar # CYRILLIC CAPITAL LETTER IE char 0x415 XXXXX. X..... XXXX.. X..... XXXXX. ...... endchar # CYRILLIC CAPITAL LETTER ZHE char 0x416 X.XX.X XXXXXX .XXXX. X.XX.X X.XX.X ...... endchar # CYRILLIC CAPITAL LETTER ZE char 0x417 XXXX.. ....X. .XXX.. ....X. XXXX.. ...... endchar # CYRILLIC CAPITAL LETTER I char 0x418 X...X. X..XX. X.X.X. XX..X. X...X. ...... endchar # CYRILLIC CAPITAL LETTER SHORT I char 0x419 X.X.X. X..XX. X.X.X. XX..X. X...X. ...... endchar # CYRILLIC CAPITAL LETTER KA char 0x41a .X..X. .X.X.. .XX... .X.X.. .X..X. ...... endchar # CYRILLIC CAPITAL LETTER EL char 0x41b ..XXX. .X..X. .X..X. .X..X. XX..X. ...... endchar # CYRILLIC CAPITAL LETTER EM char 0x41c X...X. XX.XX. X.X.X. X...X. X...X. ...... endchar # CYRILLIC CAPITAL LETTER EN char 0x41d X...X. X...X. XXXXX. X...X. X...X. ...... endchar # CYRILLIC CAPITAL LETTER O char 0x41e .XXX.. X...X. X...X. X...X. .XXX.. ...... endchar # CYRILLIC CAPITAL LETTER PE char 0x41f XXXXX. X...X. X...X. X...X. X...X. ...... endchar # CYRILLIC CAPITAL LETTER ER char 0x420 XXXX.. X...X. XXXX.. X..... X..... ...... endchar # CYRILLIC CAPITAL LETTER ES char 0x421 .XXXX. X..... X..... X..... .XXXX. ...... endchar # CYRILLIC CAPITAL LETTER TE char 0x422 XXXXX. ..X... ..X... ..X... ..X... ...... endchar # CYRILLIC CAPITAL LETTER U char 0x423 X...X. X...X. .XXXX. ....X. .XXX.. ...... endchar # CYRILLIC CAPITAL LETTER EF char 0x424 XXXXX. X.X.X. X.X.X. XXXXX. ..X... ...... endchar # CYRILLIC CAPITAL LETTER HA char 0x425 X...X. .X.X.. ..X... .X.X.. X...X. ...... endchar # CYRILLIC CAPITAL LETTER TSE char 0x426 X...X. X...X. X...X. X...X. XXXXXX .....X endchar # CYRILLIC CAPITAL LETTER CHE char 0x427 X...X. X...X. .XXXX. ....X. ....X. ...... endchar # CYRILLIC CAPITAL LETTER SHA char 0x428 X...X. X...X. X.X.X. X.X.X. XXXXX. ...... endchar # CYRILLIC CAPITAL LETTER SHCHA char 0x429 X...X. X...X. X.X.X. X.X.X. XXXXXX .....X endchar # CYRILLIC CAPITAL LETTER HARD SIGN char 0x42a .X.... .X.... .XXXX. .X...X .XXXX. ...... endchar # CYRILLIC CAPITAL LETTER YERU char 0x42b X....X X....X XXX..X X..X.X XXX..X ...... endchar # CYRILLIC CAPITAL LETTER SOFT SIGN char 0x42c XX.... .X.... .XXXX. .X...X .XXXX. ...... endchar # CYRILLIC CAPITAL LETTER E char 0x42d .XXX.. ....X. .XXXX. ....X. .XXX.. ...... endchar # CYRILLIC CAPITAL LETTER YU char 0x42e X..XX. X.X..X XXX..X X.X..X X..XX. ...... endchar # CYRILLIC CAPITAL LETTER YA char 0x42f .XXXX. XX..X. .XXXX. ..X.X. XX..X. ...... endchar # CYRILLIC SMALL LETTER A char 0x430 ...... .XXX.. X...X. XXXXX. X...X. ...... endchar # CYRILLIC SMALL LETTER BE char 0x431 ..XX.. XX.... XXXX.. X...X. .XXX.. ...... endchar # CYRILLIC SMALL LETTER VE char 0x432 XXX... X.X... XXXX.. X..X.. XXXX.. ...... endchar # CYRILLIC SMALL LETTER GHE char 0x433 ...... XXXXX. X..... X..... X..... ...... endchar # CYRILLIC SMALL LETTER DE char 0x434 .XXX.. ....X. .XXXX. X...X. .XXX.. ...... endchar # CYRILLIC SMALL LETTER IE char 0x435 ...... .XXX.. XXXXX. X..... .XXX.. ...... endchar # CYRILLIC SMALL LETTER ZHE char 0x436 ...... X.XX.X .XXXX. XXXXXX X.XX.X ...... endchar # CYRILLIC SMALL LETTER ZE char 0x437 .XXX.. ....X. ..XX.. ....X. .XXX.. ...... endchar # CYRILLIC SMALL LETTER I char 0x438 ...... X...X. X...X. X...X. .XXX.X ...... endchar # CYRILLIC SMALL LETTER SHORT I char 0x439 .XXX.. ...... X...X. X...X. .XXX.X ...... endchar # CYRILLIC SMALL LETTER KA char 0x43a ...... X..X.. XXX... X..X.. X...X. ...... endchar # CYRILLIC SMALL LETTER EL char 0x43b ...... ..XXX. .X..X. .X..X. XX..X. ...... endchar # CYRILLIC SMALL LETTER EM char 0x43c ...... .X.X.. XXXXX. X.X.X. X...X. ...... endchar # CYRILLIC SMALL LETTER EN char 0x43d ...... X...X. X...X. XXXXX. X...X. ...... endchar # CYRILLIC SMALL LETTER O char 0x43e ...... .XXX.. X...X. X...X. .XXX.. ...... endchar # CYRILLIC SMALL LETTER PE char 0x43f ...... XXXX.. X...X. X...X. X...X. ...... endchar # CYRILLIC SMALL LETTER ER char 0x440 ...... XXXX.. X...X. X...X. XXXX.. X..... endchar # CYRILLIC SMALL LETTER ES char 0x441 ...... .XXX.. X..... X..... .XXX.. ...... endchar # CYRILLIC SMALL LETTER TE char 0x442 ...... XXXXX. ..X... ..X... ..X... ...... endchar # CYRILLIC SMALL LETTER U char 0x443 ...... X..X.. X..X.. .XXX.. ...X.. XXX... endchar # CYRILLIC SMALL LETTER EF char 0x444 ..X... .XXX.. X.X.X. X.X.X. .XXX.. ..X... endchar # CYRILLIC SMALL LETTER HA char 0x445 ...... X..X.. .XX... .XX... X..X.. ...... endchar # CYRILLIC SMALL LETTER TSE char 0x446 ...... X..X.. X..X.. X..X.. .XXXX. ....X. endchar # CYRILLIC SMALL LETTER CHE char 0x447 ...... .X..X. .X..X. ..XXX. ....X. ...... endchar # CYRILLIC SMALL LETTER SHA char 0x448 ...... X...X. X.X.X. X.X.X. XXXXX. ...... endchar # CYRILLIC SMALL LETTER SHCHA char 0x449 ...... X...X. X.X.X. X.X.X. XXXXXX .....X endchar # CYRILLIC SMALL LETTER HARD SIGN char 0x44a ...... .X.... .XXX.. .X..X. .XXX.. ...... endchar # CYRILLIC SMALL LETTER YERU char 0x44b ...... X....X XXX..X X..X.X XXX..X ...... endchar # CYRILLIC SMALL LETTER SOFT SIGN char 0x44c ...... XXX... ..XXX. ..X..X ..XXX. ...... endchar # CYRILLIC SMALL LETTER E char 0x44d ...... .XXX.. ..X.X. ...XX. .XXX.. ...... endchar # CYRILLIC SMALL LETTER YU char 0x44e ...... X..XX. XXX..X XXX..X X..XX. ...... endchar # CYRILLIC SMALL LETTER YA char 0x44f ...... .XXXX. XX..X. .XXXX. XX..X. ...... endchar char 0x450 ...... ...... ...... ...... ...... ...... endchar char 0x451 ...... ...... ...... ...... ...... ...... endchar char 0x452 ...... ...... ...... ...... ...... ...... endchar char 0x453 ...... ...... ...... ...... ...... ...... endchar char 0x454 ...... ...... ...... ...... ...... ...... endchar char 0x455 ...... ...... ...... ...... ...... ...... endchar char 0x456 ...... ...... ...... ...... ...... ...... endchar char 0x457 ...... ...... ...... ...... ...... ...... endchar char 0x458 ...... ...... ...... ...... ...... ...... endchar char 0x459 ...... ...... ...... ...... ...... ...... endchar char 0x45a ...... ...... ...... ...... ...... ...... endchar char 0x45b ...... ...... ...... ...... ...... ...... endchar char 0x45c ...... ...... ...... ...... ...... ...... endchar char 0x45d ...... ...... ...... ...... ...... ...... endchar char 0x45e ...... ...... ...... ...... ...... ...... endchar char 0x45f ...... ...... ...... ...... ...... ...... endchar char 0x460 ...... ...... ...... ...... ...... ...... endchar char 0x461 ...... ...... ...... ...... ...... ...... endchar char 0x462 ...... ...... ...... ...... ...... ...... endchar char 0x463 ...... ...... ...... ...... ...... ...... endchar char 0x464 ...... ...... ...... ...... ...... ...... endchar char 0x465 ...... ...... ...... ...... ...... ...... endchar char 0x466 ...... ...... ...... ...... ...... ...... endchar char 0x467 ...... ...... ...... ...... ...... ...... endchar char 0x468 ...... ...... ...... ...... ...... ...... endchar char 0x469 ...... ...... ...... ...... ...... ...... endchar char 0x46a ...... ...... ...... ...... ...... ...... endchar char 0x46b ...... ...... ...... ...... ...... ...... endchar char 0x46c ...... ...... ...... ...... ...... ...... endchar char 0x46d ...... ...... ...... ...... ...... ...... endchar char 0x46e ...... ...... ...... ...... ...... ...... endchar char 0x46f ...... ...... ...... ...... ...... ...... endchar char 0x470 ...... ...... ...... ...... ...... ...... endchar char 0x471 ...... ...... ...... ...... ...... ...... endchar char 0x472 ...... ...... ...... ...... ...... ...... endchar char 0x473 ...... ...... ...... ...... ...... ...... endchar char 0x474 ...... ...... ...... ...... ...... ...... endchar char 0x475 ...... ...... ...... ...... ...... ...... endchar char 0x476 ...... ...... ...... ...... ...... ...... endchar char 0x477 ...... ...... ...... ...... ...... ...... endchar char 0x478 ...... ...... ...... ...... ...... ...... endchar char 0x479 ...... ...... ...... ...... ...... ...... endchar char 0x47a ...... ...... ...... ...... ...... ...... endchar char 0x47b ...... ...... ...... ...... ...... ...... endchar char 0x47c ...... ...... ...... ...... ...... ...... endchar char 0x47d ...... ...... ...... ...... ...... ...... endchar char 0x47e ...... ...... ...... ...... ...... ...... endchar char 0x47f ...... ...... ...... ...... ...... ...... endchar char 0x480 ...... ...... ...... ...... ...... ...... endchar char 0x481 ...... ...... ...... ...... ...... ...... endchar char 0x482 ...... ...... ...... ...... ...... ...... endchar char 0x483 ...... ...... ...... ...... ...... ...... endchar char 0x484 ...... ...... ...... ...... ...... ...... endchar char 0x485 ...... ...... ...... ...... ...... ...... endchar char 0x486 ...... ...... ...... ...... ...... ...... endchar char 0x487 ...... ...... ...... ...... ...... ...... endchar char 0x488 ...... ...... ...... ...... ...... ...... endchar char 0x489 ...... ...... ...... ...... ...... ...... endchar char 0x48a ...... ...... ...... ...... ...... ...... endchar char 0x48b ...... ...... ...... ...... ...... ...... endchar char 0x48c ...... ...... ...... ...... ...... ...... endchar char 0x48d ...... ...... ...... ...... ...... ...... endchar char 0x48e ...... ...... ...... ...... ...... ...... endchar char 0x48f ...... ...... ...... ...... ...... ...... endchar char 0x490 ...... ...... ...... ...... ...... ...... endchar char 0x491 ...... ...... ...... ...... ...... ...... endchar char 0x492 ...... ...... ...... ...... ...... ...... endchar char 0x493 ...... ...... ...... ...... ...... ...... endchar char 0x494 ...... ...... ...... ...... ...... ...... endchar char 0x495 ...... ...... ...... ...... ...... ...... endchar char 0x496 ...... ...... ...... ...... ...... ...... endchar char 0x497 ...... ...... ...... ...... ...... ...... endchar char 0x498 ...... ...... ...... ...... ...... ...... endchar char 0x499 ...... ...... ...... ...... ...... ...... endchar char 0x49a ...... ...... ...... ...... ...... ...... endchar char 0x49b ...... ...... ...... ...... ...... ...... endchar char 0x49c ...... ...... ...... ...... ...... ...... endchar char 0x49d ...... ...... ...... ...... ...... ...... endchar char 0x49e ...... ...... ...... ...... ...... ...... endchar char 0x49f ...... ...... ...... ...... ...... ...... endchar char 0x4a0 ...... ...... ...... ...... ...... ...... endchar char 0x4a1 ...... ...... ...... ...... ...... ...... endchar char 0x4a2 ...... ...... ...... ...... ...... ...... endchar char 0x4a3 ...... ...... ...... ...... ...... ...... endchar char 0x4a4 ...... ...... ...... ...... ...... ...... endchar char 0x4a5 ...... ...... ...... ...... ...... ...... endchar char 0x4a6 ...... ...... ...... ...... ...... ...... endchar char 0x4a7 ...... ...... ...... ...... ...... ...... endchar char 0x4a8 ...... ...... ...... ...... ...... ...... endchar char 0x4a9 ...... ...... ...... ...... ...... ...... endchar char 0x4aa ...... ...... ...... ...... ...... ...... endchar char 0x4ab ...... ...... ...... ...... ...... ...... endchar char 0x4ac ...... ...... ...... ...... ...... ...... endchar char 0x4ad ...... ...... ...... ...... ...... ...... endchar char 0x4ae ...... ...... ...... ...... ...... ...... endchar char 0x4af ...... ...... ...... ...... ...... ...... endchar char 0x4b0 ...... ...... ...... ...... ...... ...... endchar char 0x4b1 ...... ...... ...... ...... ...... ...... endchar char 0x4b2 ...... ...... ...... ...... ...... ...... endchar char 0x4b3 ...... ...... ...... ...... ...... ...... endchar char 0x4b4 ...... ...... ...... ...... ...... ...... endchar char 0x4b5 ...... ...... ...... ...... ...... ...... endchar char 0x4b6 ...... ...... ...... ...... ...... ...... endchar char 0x4b7 ...... ...... ...... ...... ...... ...... endchar char 0x4b8 ...... ...... ...... ...... ...... ...... endchar char 0x4b9 ...... ...... ...... ...... ...... ...... endchar char 0x4ba ...... ...... ...... ...... ...... ...... endchar char 0x4bb ...... ...... ...... ...... ...... ...... endchar char 0x4bc ...... ...... ...... ...... ...... ...... endchar char 0x4bd ...... ...... ...... ...... ...... ...... endchar char 0x4be ...... ...... ...... ...... ...... ...... endchar char 0x4bf ...... ...... ...... ...... ...... ...... endchar char 0x4c0 ...... ...... ...... ...... ...... ...... endchar char 0x4c1 ...... ...... ...... ...... ...... ...... endchar char 0x4c2 ...... ...... ...... ...... ...... ...... endchar char 0x4c3 ...... ...... ...... ...... ...... ...... endchar char 0x4c4 ...... ...... ...... ...... ...... ...... endchar char 0x4c5 ...... ...... ...... ...... ...... ...... endchar char 0x4c6 ...... ...... ...... ...... ...... ...... endchar char 0x4c7 ...... ...... ...... ...... ...... ...... endchar char 0x4c8 ...... ...... ...... ...... ...... ...... endchar char 0x4c9 ...... ...... ...... ...... ...... ...... endchar char 0x4ca ...... ...... ...... ...... ...... ...... endchar char 0x4cb ...... ...... ...... ...... ...... ...... endchar char 0x4cc ...... ...... ...... ...... ...... ...... endchar char 0x4cd ...... ...... ...... ...... ...... ...... endchar char 0x4ce ...... ...... ...... ...... ...... ...... endchar char 0x4cf ...... ...... ...... ...... ...... ...... endchar char 0x4d0 ...... ...... ...... ...... ...... ...... endchar char 0x4d1 ...... ...... ...... ...... ...... ...... endchar char 0x4d2 ...... ...... ...... ...... ...... ...... endchar char 0x4d3 ...... ...... ...... ...... ...... ...... endchar char 0x4d4 ...... ...... ...... ...... ...... ...... endchar char 0x4d5 ...... ...... ...... ...... ...... ...... endchar char 0x4d6 ...... ...... ...... ...... ...... ...... endchar char 0x4d7 ...... ...... ...... ...... ...... ...... endchar char 0x4d8 ...... ...... ...... ...... ...... ...... endchar char 0x4d9 ...... ...... ...... ...... ...... ...... endchar char 0x4da ...... ...... ...... ...... ...... ...... endchar char 0x4db ...... ...... ...... ...... ...... ...... endchar char 0x4dc ...... ...... ...... ...... ...... ...... endchar char 0x4dd ...... ...... ...... ...... ...... ...... endchar char 0x4de ...... ...... ...... ...... ...... ...... endchar char 0x4df ...... ...... ...... ...... ...... ...... endchar char 0x4e0 ...... ...... ...... ...... ...... ...... endchar char 0x4e1 ...... ...... ...... ...... ...... ...... endchar char 0x4e2 ...... ...... ...... ...... ...... ...... endchar char 0x4e3 ...... ...... ...... ...... ...... ...... endchar char 0x4e4 ...... ...... ...... ...... ...... ...... endchar char 0x4e5 ...... ...... ...... ...... ...... ...... endchar char 0x4e6 ...... ...... ...... ...... ...... ...... endchar char 0x4e7 ...... ...... ...... ...... ...... ...... endchar char 0x4e8 ...... ...... ...... ...... ...... ...... endchar char 0x4e9 ...... ...... ...... ...... ...... ...... endchar char 0x4ea ...... ...... ...... ...... ...... ...... endchar char 0x4eb ...... ...... ...... ...... ...... ...... endchar char 0x4ec ...... ...... ...... ...... ...... ...... endchar char 0x4ed ...... ...... ...... ...... ...... ...... endchar char 0x4ee ...... ...... ...... ...... ...... ...... endchar char 0x4ef ...... ...... ...... ...... ...... ...... endchar char 0x4f0 ...... ...... ...... ...... ...... ...... endchar char 0x4f1 ...... ...... ...... ...... ...... ...... endchar char 0x4f2 ...... ...... ...... ...... ...... ...... endchar char 0x4f3 ...... ...... ...... ...... ...... ...... endchar char 0x4f4 ...... ...... ...... ...... ...... ...... endchar char 0x4f5 ...... ...... ...... ...... ...... ...... endchar char 0x4f6 ...... ...... ...... ...... ...... ...... endchar char 0x4f7 ...... ...... ...... ...... ...... ...... endchar char 0x4f8 ...... ...... ...... ...... ...... ...... endchar char 0x4f9 ...... ...... ...... ...... ...... ...... endchar char 0x4fa ...... ...... ...... ...... ...... ...... endchar char 0x4fb ...... ...... ...... ...... ...... ...... endchar char 0x4fc ...... ...... ...... ...... ...... ...... endchar char 0x4fd ...... ...... ...... ...... ...... ...... endchar char 0x4fe ...... ...... ...... ...... ...... ...... endchar char 0x4ff ...... ...... ...... ...... ...... ...... endchar char 0x500 ...... ...... ...... ...... ...... ...... endchar char 0x501 ...... ...... ...... ...... ...... ...... endchar char 0x502 ...... ...... ...... ...... ...... ...... endchar char 0x503 ...... ...... ...... ...... ...... ...... endchar char 0x504 ...... ...... ...... ...... ...... ...... endchar char 0x505 ...... ...... ...... ...... ...... ...... endchar char 0x506 ...... ...... ...... ...... ...... ...... endchar char 0x507 ...... ...... ...... ...... ...... ...... endchar char 0x508 ...... ...... ...... ...... ...... ...... endchar char 0x509 ...... ...... ...... ...... ...... ...... endchar char 0x50a ...... ...... ...... ...... ...... ...... endchar char 0x50b ...... ...... ...... ...... ...... ...... endchar char 0x50c ...... ...... ...... ...... ...... ...... endchar char 0x50d ...... ...... ...... ...... ...... ...... endchar char 0x50e ...... ...... ...... ...... ...... ...... endchar char 0x50f ...... ...... ...... ...... ...... ...... endchar char 0x510 ...... ...... ...... ...... ...... ...... endchar char 0x511 ...... ...... ...... ...... ...... ...... endchar char 0x512 ...... ...... ...... ...... ...... ...... endchar char 0x513 ...... ...... ...... ...... ...... ...... endchar char 0x514 ...... ...... ...... ...... ...... ...... endchar char 0x515 ...... ...... ...... ...... ...... ...... endchar char 0x516 ...... ...... ...... ...... ...... ...... endchar char 0x517 ...... ...... ...... ...... ...... ...... endchar char 0x518 ...... ...... ...... ...... ...... ...... endchar char 0x519 ...... ...... ...... ...... ...... ...... endchar char 0x51a ...... ...... ...... ...... ...... ...... endchar char 0x51b ...... ...... ...... ...... ...... ...... endchar char 0x51c ...... ...... ...... ...... ...... ...... endchar char 0x51d ...... ...... ...... ...... ...... ...... endchar char 0x51e ...... ...... ...... ...... ...... ...... endchar char 0x51f ...... ...... ...... ...... ...... ...... endchar char 0x520 ...... ...... ...... ...... ...... ...... endchar char 0x521 ...... ...... ...... ...... ...... ...... endchar char 0x522 ...... ...... ...... ...... ...... ...... endchar char 0x523 ...... ...... ...... ...... ...... ...... endchar char 0x524 ...... ...... ...... ...... ...... ...... endchar char 0x525 ...... ...... ...... ...... ...... ...... endchar char 0x526 ...... ...... ...... ...... ...... ...... endchar char 0x527 ...... ...... ...... ...... ...... ...... endchar char 0x528 ...... ...... ...... ...... ...... ...... endchar char 0x529 ...... ...... ...... ...... ...... ...... endchar char 0x52a ...... ...... ...... ...... ...... ...... endchar char 0x52b ...... ...... ...... ...... ...... ...... endchar char 0x52c ...... ...... ...... ...... ...... ...... endchar char 0x52d ...... ...... ...... ...... ...... ...... endchar char 0x52e ...... ...... ...... ...... ...... ...... endchar char 0x52f ...... ...... ...... ...... ...... ...... endchar char 0x530 ...... ...... ...... ...... ...... ...... endchar char 0x531 ...... ...... ...... ...... ...... ...... endchar char 0x532 ...... ...... ...... ...... ...... ...... endchar char 0x533 ...... ...... ...... ...... ...... ...... endchar char 0x534 ...... ...... ...... ...... ...... ...... endchar char 0x535 ...... ...... ...... ...... ...... ...... endchar char 0x536 ...... ...... ...... ...... ...... ...... endchar char 0x537 ...... ...... ...... ...... ...... ...... endchar char 0x538 ...... ...... ...... ...... ...... ...... endchar char 0x539 ...... ...... ...... ...... ...... ...... endchar char 0x53a ...... ...... ...... ...... ...... ...... endchar char 0x53b ...... ...... ...... ...... ...... ...... endchar char 0x53c ...... ...... ...... ...... ...... ...... endchar char 0x53d ...... ...... ...... ...... ...... ...... endchar char 0x53e ...... ...... ...... ...... ...... ...... endchar char 0x53f ...... ...... ...... ...... ...... ...... endchar char 0x540 ...... ...... ...... ...... ...... ...... endchar char 0x541 ...... ...... ...... ...... ...... ...... endchar char 0x542 ...... ...... ...... ...... ...... ...... endchar char 0x543 ...... ...... ...... ...... ...... ...... endchar char 0x544 ...... ...... ...... ...... ...... ...... endchar char 0x545 ...... ...... ...... ...... ...... ...... endchar char 0x546 ...... ...... ...... ...... ...... ...... endchar char 0x547 ...... ...... ...... ...... ...... ...... endchar char 0x548 ...... ...... ...... ...... ...... ...... endchar char 0x549 ...... ...... ...... ...... ...... ...... endchar char 0x54a ...... ...... ...... ...... ...... ...... endchar char 0x54b ...... ...... ...... ...... ...... ...... endchar char 0x54c ...... ...... ...... ...... ...... ...... endchar char 0x54d ...... ...... ...... ...... ...... ...... endchar char 0x54e ...... ...... ...... ...... ...... ...... endchar char 0x54f ...... ...... ...... ...... ...... ...... endchar char 0x550 ...... ...... ...... ...... ...... ...... endchar char 0x551 ...... ...... ...... ...... ...... ...... endchar char 0x552 ...... ...... ...... ...... ...... ...... endchar char 0x553 ...... ...... ...... ...... ...... ...... endchar char 0x554 ...... ...... ...... ...... ...... ...... endchar char 0x555 ...... ...... ...... ...... ...... ...... endchar char 0x556 ...... ...... ...... ...... ...... ...... endchar char 0x557 ...... ...... ...... ...... ...... ...... endchar char 0x558 ...... ...... ...... ...... ...... ...... endchar char 0x559 ...... ...... ...... ...... ...... ...... endchar char 0x55a ...... ...... ...... ...... ...... ...... endchar char 0x55b ...... ...... ...... ...... ...... ...... endchar char 0x55c ...... ...... ...... ...... ...... ...... endchar char 0x55d ...... ...... ...... ...... ...... ...... endchar char 0x55e ...... ...... ...... ...... ...... ...... endchar char 0x55f ...... ...... ...... ...... ...... ...... endchar char 0x560 ...... ...... ...... ...... ...... ...... endchar char 0x561 ...... ...... ...... ...... ...... ...... endchar char 0x562 ...... ...... ...... ...... ...... ...... endchar char 0x563 ...... ...... ...... ...... ...... ...... endchar char 0x564 ...... ...... ...... ...... ...... ...... endchar char 0x565 ...... ...... ...... ...... ...... ...... endchar char 0x566 ...... ...... ...... ...... ...... ...... endchar char 0x567 ...... ...... ...... ...... ...... ...... endchar char 0x568 ...... ...... ...... ...... ...... ...... endchar char 0x569 ...... ...... ...... ...... ...... ...... endchar char 0x56a ...... ...... ...... ...... ...... ...... endchar char 0x56b ...... ...... ...... ...... ...... ...... endchar char 0x56c ...... ...... ...... ...... ...... ...... endchar char 0x56d ...... ...... ...... ...... ...... ...... endchar char 0x56e ...... ...... ...... ...... ...... ...... endchar char 0x56f ...... ...... ...... ...... ...... ...... endchar char 0x570 ...... ...... ...... ...... ...... ...... endchar char 0x571 ...... ...... ...... ...... ...... ...... endchar char 0x572 ...... ...... ...... ...... ...... ...... endchar char 0x573 ...... ...... ...... ...... ...... ...... endchar char 0x574 ...... ...... ...... ...... ...... ...... endchar char 0x575 ...... ...... ...... ...... ...... ...... endchar char 0x576 ...... ...... ...... ...... ...... ...... endchar char 0x577 ...... ...... ...... ...... ...... ...... endchar char 0x578 ...... ...... ...... ...... ...... ...... endchar char 0x579 ...... ...... ...... ...... ...... ...... endchar char 0x57a ...... ...... ...... ...... ...... ...... endchar char 0x57b ...... ...... ...... ...... ...... ...... endchar char 0x57c ...... ...... ...... ...... ...... ...... endchar char 0x57d ...... ...... ...... ...... ...... ...... endchar char 0x57e ...... ...... ...... ...... ...... ...... endchar char 0x57f ...... ...... ...... ...... ...... ...... endchar char 0x580 ...... ...... ...... ...... ...... ...... endchar char 0x581 ...... ...... ...... ...... ...... ...... endchar char 0x582 ...... ...... ...... ...... ...... ...... endchar char 0x583 ...... ...... ...... ...... ...... ...... endchar char 0x584 ...... ...... ...... ...... ...... ...... endchar char 0x585 ...... ...... ...... ...... ...... ...... endchar char 0x586 ...... ...... ...... ...... ...... ...... endchar char 0x587 ...... ...... ...... ...... ...... ...... endchar char 0x588 ...... ...... ...... ...... ...... ...... endchar char 0x589 ...... ...... ...... ...... ...... ...... endchar char 0x58a ...... ...... ...... ...... ...... ...... endchar char 0x58b ...... ...... ...... ...... ...... ...... endchar char 0x58c ...... ...... ...... ...... ...... ...... endchar char 0x58d ...... ...... ...... ...... ...... ...... endchar char 0x58e ...... ...... ...... ...... ...... ...... endchar char 0x58f ...... ...... ...... ...... ...... ...... endchar char 0x590 ...... ...... ...... ...... ...... ...... endchar char 0x591 ...... ...... ...... ...... ...... ...... endchar char 0x592 ...... ...... ...... ...... ...... ...... endchar char 0x593 ...... ...... ...... ...... ...... ...... endchar char 0x594 ...... ...... ...... ...... ...... ...... endchar char 0x595 ...... ...... ...... ...... ...... ...... endchar char 0x596 ...... ...... ...... ...... ...... ...... endchar char 0x597 ...... ...... ...... ...... ...... ...... endchar char 0x598 ...... ...... ...... ...... ...... ...... endchar char 0x599 ...... ...... ...... ...... ...... ...... endchar char 0x59a ...... ...... ...... ...... ...... ...... endchar char 0x59b ...... ...... ...... ...... ...... ...... endchar char 0x59c ...... ...... ...... ...... ...... ...... endchar char 0x59d ...... ...... ...... ...... ...... ...... endchar char 0x59e ...... ...... ...... ...... ...... ...... endchar char 0x59f ...... ...... ...... ...... ...... ...... endchar char 0x5a0 ...... ...... ...... ...... ...... ...... endchar char 0x5a1 ...... ...... ...... ...... ...... ...... endchar char 0x5a2 ...... ...... ...... ...... ...... ...... endchar char 0x5a3 ...... ...... ...... ...... ...... ...... endchar char 0x5a4 ...... ...... ...... ...... ...... ...... endchar char 0x5a5 ...... ...... ...... ...... ...... ...... endchar char 0x5a6 ...... ...... ...... ...... ...... ...... endchar char 0x5a7 ...... ...... ...... ...... ...... ...... endchar char 0x5a8 ...... ...... ...... ...... ...... ...... endchar char 0x5a9 ...... ...... ...... ...... ...... ...... endchar char 0x5aa ...... ...... ...... ...... ...... ...... endchar char 0x5ab ...... ...... ...... ...... ...... ...... endchar char 0x5ac ...... ...... ...... ...... ...... ...... endchar char 0x5ad ...... ...... ...... ...... ...... ...... endchar char 0x5ae ...... ...... ...... ...... ...... ...... endchar char 0x5af ...... ...... ...... ...... ...... ...... endchar char 0x5b0 ...... ...... ...... ...... ...... ...... endchar char 0x5b1 ...... ...... ...... ...... ...... ...... endchar char 0x5b2 ...... ...... ...... ...... ...... ...... endchar char 0x5b3 ...... ...... ...... ...... ...... ...... endchar char 0x5b4 ...... ...... ...... ...... ...... ...... endchar char 0x5b5 ...... ...... ...... ...... ...... ...... endchar char 0x5b6 ...... ...... ...... ...... ...... ...... endchar char 0x5b7 ...... ...... ...... ...... ...... ...... endchar char 0x5b8 ...... ...... ...... ...... ...... ...... endchar char 0x5b9 ...... ...... ...... ...... ...... ...... endchar char 0x5ba ...... ...... ...... ...... ...... ...... endchar char 0x5bb ...... ...... ...... ...... ...... ...... endchar char 0x5bc ...... ...... ...... ...... ...... ...... endchar char 0x5bd ...... ...... ...... ...... ...... ...... endchar char 0x5be ...... ...... ...... ...... ...... ...... endchar char 0x5bf ...... ...... ...... ...... ...... ...... endchar char 0x5c0 ...... ...... ...... ...... ...... ...... endchar char 0x5c1 ...... ...... ...... ...... ...... ...... endchar char 0x5c2 ...... ...... ...... ...... ...... ...... endchar char 0x5c3 ...... ...... ...... ...... ...... ...... endchar char 0x5c4 ...... ...... ...... ...... ...... ...... endchar char 0x5c5 ...... ...... ...... ...... ...... ...... endchar char 0x5c6 ...... ...... ...... ...... ...... ...... endchar char 0x5c7 ...... ...... ...... ...... ...... ...... endchar char 0x5c8 ...... ...... ...... ...... ...... ...... endchar char 0x5c9 ...... ...... ...... ...... ...... ...... endchar char 0x5ca ...... ...... ...... ...... ...... ...... endchar char 0x5cb ...... ...... ...... ...... ...... ...... endchar char 0x5cc ...... ...... ...... ...... ...... ...... endchar char 0x5cd ...... ...... ...... ...... ...... ...... endchar char 0x5ce ...... ...... ...... ...... ...... ...... endchar char 0x5cf ...... ...... ...... ...... ...... ...... endchar # HEBREW LETTER ALEF char 0x05d0 X..XX. XX.XX. .XXX.. XX.XX. XX..X. ...... endchar # HEBREW LETTER BET char 0x05d1 XXXX.. ..XX.. ..XX.. ..XX.. XXXXX. ...... endchar # HEBREW LETTER GIMEL char 0x05d2 .XXXX. ....X. ...XX. ..XXX. .XX.X. ...... endchar # HEBREW LETTER DALET char 0x05d3 XXXXXX ...XX. ...XX. ...XX. ...XX. ...... endchar # HEBREW LETTER HE char 0x05d4 XXXX.. ...XX. XX.XX. XX.XX. XX.XX. ...... endchar # HEBREW LETTER VAV char 0x05d5 .XXX.. ..XX.. ..XX.. ..XX.. ..XX.. ...... endchar # HEBREW LETTER ZAYIN char 0x05d6 .XXXX. ..XX.. ...XX. ...XX. ...XX. ...... endchar # HEBREW LETTER HET char 0x05d7 XXXXXX .XX.XX .XX.XX .XX.XX .XX.XX ...... endchar # HEBREW LETTER TET char 0x05d8 XX.... XX.XX. XX.XX. XX.XX. XXXXX. ...... endchar # HEBREW LETTER YOD char 0x05d9 .XXXX. ...XX. ...XX. ...... ...... ...... endchar # HEBREW LETTER FINAL KAF char 0x05da XXXXX. ...XX. ...XX. ...XX. ...XX. ...... endchar # HEBREW LETTER KAF char 0x05db XXXX.. ...XX. ...XX. ...XX. XXXX.. ...... endchar # HEBREW LETTER LAMED char 0x05dc XX.... XXXXX. ...XX. ...XX. .XXXX. ...... endchar # HEBREW LETTER FINAL MEM char 0x05dd ...... XXXXXX .XX.XX .XX.XX .XXXXX ...... endchar # HEBREW LETTER MEM char 0x05de XX.XX. .XXXXX .XX..X .XX..X .XX.XX ...... endchar # HEBREW LETTER FINAL NUN char 0x05df ..XXX. ...XX. ...XX. ...XX. ...XX. ...... endchar # HEBREW LETTER NUN char 0x05e0 ..XXX. ...XX. ...XX. ...XX. .XXXX. ...... endchar # HEBREW LETTER SAMEKH char 0x05e1 XXXXX. XX.XX. XX.XX. XX.XX. .XXX.. ...... endchar # HEBREW LETTER AYIN char 0x05e2 .XX.XX .XX.XX .XX.XX .XX.XX XXXXXX ...... endchar # HEBREW LETTER FINAL PE char 0x05e3 XXXXX. X..XX. XX.XX. ...XX. ...XX. ...... endchar # HEBREW LETTER PE char 0x05e4 XXXXX. X..XX. XX.XX. ...XX. XXXXX. ...... endchar # HEBREW LETTER FINAL TSADI char 0x05e5 XX.XX. XX.XX. .XXX.. ..XX.. ..XX.. ...... endchar # HEBREW LETTER TSADI char 0x05e6 XX.XX. XX.XX. .XXX.. ..XXX. XXXXX. ...... endchar # HEBREW LETTER QOF char 0x05e7 XXXXX. ...XX. XX.XX. XX.X.. XX.... XX.... endchar # HEBREW LETTER RESH char 0x05e8 .XXX.. ...XX. ...XX. ...XX. ...XX. ...... endchar # HEBREW LETTER SHIN char 0x05e9 XX.X.X XX.X.X XXXX.X XX...X XXXXXX ...... endchar # HEBREW LETTER TAV char 0x05ea .XXXX. .X.XX. .X.XX. .X.XX. XX.XX. ...... endchar char 0x5eb ...... ...... ...... ...... ...... ...... endchar char 0x5ec ...... ...... ...... ...... ...... ...... endchar char 0x5ed ...... ...... ...... ...... ...... ...... endchar char 0x5ee ...... ...... ...... ...... ...... ...... endchar char 0x5ef ...... ...... ...... ...... ...... ...... endchar char 0x5f0 ...... ...... ...... ...... ...... ...... endchar char 0x5f1 ...... ...... ...... ...... ...... ...... endchar char 0x5f2 ...... ...... ...... ...... ...... ...... endchar char 0x5f3 ...... ...... ...... ...... ...... ...... endchar char 0x5f4 ...... ...... ...... ...... ...... ...... endchar char 0x5f5 ...... ...... ...... ...... ...... ...... endchar char 0x5f6 ...... ...... ...... ...... ...... ...... endchar char 0x5f7 ...... ...... ...... ...... ...... ...... endchar char 0x5f8 ...... ...... ...... ...... ...... ...... endchar char 0x5f9 ...... ...... ...... ...... ...... ...... endchar char 0x5fa ...... ...... ...... ...... ...... ...... endchar char 0x5fb ...... ...... ...... ...... ...... ...... endchar char 0x5fc ...... ...... ...... ...... ...... ...... endchar char 0x5fd ...... ...... ...... ...... ...... ...... endchar char 0x5fe ...... ...... ...... ...... ...... ...... endchar char 0x5ff ...... ...... ...... ...... ...... ...... endchar # 0x0600 left half of normal radio button char 0x600 ...XXX ..X... .X.... ..X... ...XXX ...... endchar # 0x0601 right half of normal radio button char 0x601 XXX... ...X.. ....X. ...X.. XXX... ...... endchar # 0x0602 left half of selected radio button char 0x602 ...XXX ..X... .X..XX ..X... ...XXX ...... endchar # 0x0603 right half of selected radio button char 0x603 XXX... ...X.. XX..X. ...X.. XXX... ...... endchar # 0x0604 left half of normal checkbox char 0x604 .XXXXX .X.... .X.... .X.... .XXXXX ...... endchar # 0x0605 right half of normal checkbox char 0x605 XXXXX. ....X. ....X. ....X. XXXXX. ...... endchar # 0x0606 left half of selected checkbox char 0x606 .XXXXX .X..X. .X...X .X..X. .XXXXX ...... endchar # 0x0607 right half of selected checkbox char 0x607 XXXXX. .X..X. X...X. .X..X. XXXXX. ...... endchar char 0x62a ...... ...... ...... ...... ...... ...... endchar char 0x62b ...... ...... ...... ...... ...... ...... endchar char 0x62c ...... ...... ...... ...... ...... ...... endchar char 0x62d ...... ...... ...... ...... ...... ...... endchar char 0x62e ...... ...... ...... ...... ...... ...... endchar char 0x62f ...... ...... ...... ...... ...... ...... endchar char 0x630 ...... ...... ...... ...... ...... ...... endchar char 0x631 ...... ...... ...... ...... ...... ...... endchar char 0x632 ...... ...... ...... ...... ...... ...... endchar char 0x633 ...... ...... ...... ...... ...... ...... endchar char 0x634 ...... ...... ...... ...... ...... ...... endchar char 0x635 ...... ...... ...... ...... ...... ...... endchar char 0x636 ...... ...... ...... ...... ...... ...... endchar char 0x637 ...... ...... ...... ...... ...... ...... endchar char 0x638 ...... ...... ...... ...... ...... ...... endchar char 0x639 ...... ...... ...... ...... ...... ...... endchar char 0x63a ...... ...... ...... ...... ...... ...... endchar char 0x63b ...... ...... ...... ...... ...... ...... endchar char 0x63c ...... ...... ...... ...... ...... ...... endchar char 0x63d ...... ...... ...... ...... ...... ...... endchar char 0x63e ...... ...... ...... ...... ...... ...... endchar char 0x63f ...... ...... ...... ...... ...... ...... endchar char 0x640 ...... ...... ...... ...... ...... ...... endchar char 0x641 ...... ...... ...... ...... ...... ...... endchar char 0x642 ...... ...... ...... ...... ...... ...... endchar char 0x643 ...... ...... ...... ...... ...... ...... endchar char 0x644 ...... ...... ...... ...... ...... ...... endchar char 0x645 ...... ...... ...... ...... ...... ...... endchar char 0x646 ...... ...... ...... ...... ...... ...... endchar char 0x647 ...... ...... ...... ...... ...... ...... endchar char 0x648 ...... ...... ...... ...... ...... ...... endchar char 0x649 ...... ...... ...... ...... ...... ...... endchar char 0x64a ...... ...... ...... ...... ...... ...... endchar char 0x64b ...... ...... ...... ...... ...... ...... endchar char 0x64c ...... ...... ...... ...... ...... ...... endchar char 0x64d ...... ...... ...... ...... ...... ...... endchar char 0x64e ...... ...... ...... ...... ...... ...... endchar char 0x64f ...... ...... ...... ...... ...... ...... endchar char 0x650 ...... ...... ...... ...... ...... ...... endchar char 0x651 ...... ...... ...... ...... ...... ...... endchar char 0x652 ...... ...... ...... ...... ...... ...... endchar char 0x653 ...... ...... ...... ...... ...... ...... endchar char 0x654 ...... ...... ...... ...... ...... ...... endchar char 0x655 ...... ...... ...... ...... ...... ...... endchar char 0x656 ...... ...... ...... ...... ...... ...... endchar char 0x657 ...... ...... ...... ...... ...... ...... endchar char 0x658 ...... ...... ...... ...... ...... ...... endchar char 0x659 ...... ...... ...... ...... ...... ...... endchar char 0x65a ...... ...... ...... ...... ...... ...... endchar char 0x65b ...... ...... ...... ...... ...... ...... endchar char 0x65c ...... ...... ...... ...... ...... ...... endchar char 0x65d ...... ...... ...... ...... ...... ...... endchar char 0x65e ...... ...... ...... ...... ...... ...... endchar char 0x65f ...... ...... ...... ...... ...... ...... endchar char 0x660 ...... ...... ...... ...... ...... ...... endchar char 0x661 ...... ...... ...... ...... ...... ...... endchar char 0x662 ...... ...... ...... ...... ...... ...... endchar char 0x663 ...... ...... ...... ...... ...... ...... endchar char 0x664 ...... ...... ...... ...... ...... ...... endchar char 0x665 ...... ...... ...... ...... ...... ...... endchar char 0x666 ...... ...... ...... ...... ...... ...... endchar char 0x667 ...... ...... ...... ...... ...... ...... endchar char 0x668 ...... ...... ...... ...... ...... ...... endchar char 0x669 ...... ...... ...... ...... ...... ...... endchar char 0x66a ...... ...... ...... ...... ...... ...... endchar char 0x66b ...... ...... ...... ...... ...... ...... endchar char 0x66c ...... ...... ...... ...... ...... ...... endchar char 0x66d ...... ...... ...... ...... ...... ...... endchar char 0x66e ...... ...... ...... ...... ...... ...... endchar char 0x66f ...... ...... ...... ...... ...... ...... endchar char 0x670 ...... ...... ...... ...... ...... ...... endchar char 0x671 ...... ...... ...... ...... ...... ...... endchar char 0x672 ...... ...... ...... ...... ...... ...... endchar char 0x673 ...... ...... ...... ...... ...... ...... endchar char 0x674 ...... ...... ...... ...... ...... ...... endchar char 0x675 ...... ...... ...... ...... ...... ...... endchar char 0x676 ...... ...... ...... ...... ...... ...... endchar char 0x677 ...... ...... ...... ...... ...... ...... endchar char 0x678 ...... ...... ...... ...... ...... ...... endchar char 0x679 ...... ...... ...... ...... ...... ...... endchar char 0x67a ...... ...... ...... ...... ...... ...... endchar char 0x67b ...... ...... ...... ...... ...... ...... endchar char 0x67c ...... ...... ...... ...... ...... ...... endchar char 0x67d ...... ...... ...... ...... ...... ...... endchar char 0x67e ...... ...... ...... ...... ...... ...... endchar char 0x67f ...... ...... ...... ...... ...... ...... endchar char 0x680 ...... ...... ...... ...... ...... ...... endchar char 0x681 ...... ...... ...... ...... ...... ...... endchar char 0x682 ...... ...... ...... ...... ...... ...... endchar char 0x683 ...... ...... ...... ...... ...... ...... endchar char 0x684 ...... ...... ...... ...... ...... ...... endchar char 0x685 ...... ...... ...... ...... ...... ...... endchar char 0x686 ...... ...... ...... ...... ...... ...... endchar char 0x687 ...... ...... ...... ...... ...... ...... endchar char 0x688 ...... ...... ...... ...... ...... ...... endchar char 0x689 ...... ...... ...... ...... ...... ...... endchar char 0x68a ...... ...... ...... ...... ...... ...... endchar char 0x68b ...... ...... ...... ...... ...... ...... endchar char 0x68c ...... ...... ...... ...... ...... ...... endchar char 0x68d ...... ...... ...... ...... ...... ...... endchar char 0x68e ...... ...... ...... ...... ...... ...... endchar char 0x68f ...... ...... ...... ...... ...... ...... endchar char 0x690 ...... ...... ...... ...... ...... ...... endchar char 0x691 ...... ...... ...... ...... ...... ...... endchar char 0x692 ...... ...... ...... ...... ...... ...... endchar char 0x693 ...... ...... ...... ...... ...... ...... endchar char 0x694 ...... ...... ...... ...... ...... ...... endchar char 0x695 ...... ...... ...... ...... ...... ...... endchar char 0x696 ...... ...... ...... ...... ...... ...... endchar char 0x697 ...... ...... ...... ...... ...... ...... endchar char 0x698 ...... ...... ...... ...... ...... ...... endchar char 0x699 ...... ...... ...... ...... ...... ...... endchar char 0x69a ...... ...... ...... ...... ...... ...... endchar char 0x69b ...... ...... ...... ...... ...... ...... endchar char 0x69c ...... ...... ...... ...... ...... ...... endchar char 0x69d ...... ...... ...... ...... ...... ...... endchar char 0x69e ...... ...... ...... ...... ...... ...... endchar char 0x69f ...... ...... ...... ...... ...... ...... endchar char 0x6a0 ...... ...... ...... ...... ...... ...... endchar char 0x6a1 ...... ...... ...... ...... ...... ...... endchar char 0x6a2 ...... ...... ...... ...... ...... ...... endchar char 0x6a3 ...... ...... ...... ...... ...... ...... endchar char 0x6a4 ...... ...... ...... ...... ...... ...... endchar char 0x6a5 ...... ...... ...... ...... ...... ...... endchar char 0x6a6 ...... ...... ...... ...... ...... ...... endchar char 0x6a7 ...... ...... ...... ...... ...... ...... endchar char 0x6a8 ...... ...... ...... ...... ...... ...... endchar char 0x6a9 ...... ...... ...... ...... ...... ...... endchar char 0x6aa ...... ...... ...... ...... ...... ...... endchar char 0x6ab ...... ...... ...... ...... ...... ...... endchar char 0x6ac ...... ...... ...... ...... ...... ...... endchar char 0x6ad ...... ...... ...... ...... ...... ...... endchar char 0x6ae ...... ...... ...... ...... ...... ...... endchar char 0x6af ...... ...... ...... ...... ...... ...... endchar char 0x6b0 ...... ...... ...... ...... ...... ...... endchar char 0x6b1 ...... ...... ...... ...... ...... ...... endchar char 0x6b2 ...... ...... ...... ...... ...... ...... endchar char 0x6b3 ...... ...... ...... ...... ...... ...... endchar char 0x6b4 ...... ...... ...... ...... ...... ...... endchar char 0x6b5 ...... ...... ...... ...... ...... ...... endchar char 0x6b6 ...... ...... ...... ...... ...... ...... endchar char 0x6b7 ...... ...... ...... ...... ...... ...... endchar char 0x6b8 ...... ...... ...... ...... ...... ...... endchar char 0x6b9 ...... ...... ...... ...... ...... ...... endchar char 0x6ba ...... ...... ...... ...... ...... ...... endchar char 0x6bb ...... ...... ...... ...... ...... ...... endchar char 0x6bc ...... ...... ...... ...... ...... ...... endchar char 0x6bd ...... ...... ...... ...... ...... ...... endchar char 0x6be ...... ...... ...... ...... ...... ...... endchar char 0x6bf ...... ...... ...... ...... ...... ...... endchar char 0x6c0 ...... ...... ...... ...... ...... ...... endchar char 0x6c1 ...... ...... ...... ...... ...... ...... endchar char 0x6c2 ...... ...... ...... ...... ...... ...... endchar char 0x6c3 ...... ...... ...... ...... ...... ...... endchar char 0x6c4 ...... ...... ...... ...... ...... ...... endchar char 0x6c5 ...... ...... ...... ...... ...... ...... endchar char 0x6c6 ...... ...... ...... ...... ...... ...... endchar char 0x6c7 ...... ...... ...... ...... ...... ...... endchar char 0x6c8 ...... ...... ...... ...... ...... ...... endchar char 0x6c9 ...... ...... ...... ...... ...... ...... endchar char 0x6ca ...... ...... ...... ...... ...... ...... endchar char 0x6cb ...... ...... ...... ...... ...... ...... endchar char 0x6cc ...... ...... ...... ...... ...... ...... endchar char 0x6cd ...... ...... ...... ...... ...... ...... endchar char 0x6ce ...... ...... ...... ...... ...... ...... endchar char 0x6cf ...... ...... ...... ...... ...... ...... endchar char 0x6d0 ...... ...... ...... ...... ...... ...... endchar char 0x6d1 ...... ...... ...... ...... ...... ...... endchar char 0x6d2 ...... ...... ...... ...... ...... ...... endchar char 0x6d3 ...... ...... ...... ...... ...... ...... endchar char 0x6d4 ...... ...... ...... ...... ...... ...... endchar char 0x6d5 ...... ...... ...... ...... ...... ...... endchar char 0x6d6 ...... ...... ...... ...... ...... ...... endchar char 0x6d7 ...... ...... ...... ...... ...... ...... endchar char 0x6d8 ...... ...... ...... ...... ...... ...... endchar char 0x6d9 ...... ...... ...... ...... ...... ...... endchar char 0x6da ...... ...... ...... ...... ...... ...... endchar char 0x6db ...... ...... ...... ...... ...... ...... endchar char 0x6dc ...... ...... ...... ...... ...... ...... endchar char 0x6dd ...... ...... ...... ...... ...... ...... endchar char 0x6de ...... ...... ...... ...... ...... ...... endchar char 0x6df ...... ...... ...... ...... ...... ...... endchar char 0x6e0 ...... ...... ...... ...... ...... ...... endchar char 0x6e1 ...... ...... ...... ...... ...... ...... endchar char 0x6e2 ...... ...... ...... ...... ...... ...... endchar char 0x6e3 ...... ...... ...... ...... ...... ...... endchar char 0x6e4 ...... ...... ...... ...... ...... ...... endchar char 0x6e5 ...... ...... ...... ...... ...... ...... endchar char 0x6e6 ...... ...... ...... ...... ...... ...... endchar char 0x6e7 ...... ...... ...... ...... ...... ...... endchar char 0x6e8 ...... ...... ...... ...... ...... ...... endchar char 0x6e9 ...... ...... ...... ...... ...... ...... endchar char 0x6ea ...... ...... ...... ...... ...... ...... endchar char 0x6eb ...... ...... ...... ...... ...... ...... endchar char 0x6ec ...... ...... ...... ...... ...... ...... endchar char 0x6ed ...... ...... ...... ...... ...... ...... endchar char 0x6ee ...... ...... ...... ...... ...... ...... endchar char 0x6ef ...... ...... ...... ...... ...... ...... endchar char 0x6f0 ...... ...... ...... ...... ...... ...... endchar char 0x6f1 ...... ...... ...... ...... ...... ...... endchar char 0x6f2 ...... ...... ...... ...... ...... ...... endchar char 0x6f3 ...... ...... ...... ...... ...... ...... endchar char 0x6f4 ...... ...... ...... ...... ...... ...... endchar char 0x6f5 ...... ...... ...... ...... ...... ...... endchar char 0x6f6 ...... ...... ...... ...... ...... ...... endchar char 0x6f7 ...... ...... ...... ...... ...... ...... endchar char 0x6f8 ...... ...... ...... ...... ...... ...... endchar char 0x6f9 ...... ...... ...... ...... ...... ...... endchar char 0x6fa ...... ...... ...... ...... ...... ...... endchar char 0x6fb ...... ...... ...... ...... ...... ...... endchar char 0x6fc ...... ...... ...... ...... ...... ...... endchar char 0x6fd ...... ...... ...... ...... ...... ...... endchar char 0x6fe ...... ...... ...... ...... ...... ...... endchar # 0xfffd REPLACEMENT CHARACTER char 0x6ff ..X... .XXX.. XX.XX. .XXX.. ..X... ...... endchar char 0x700 ...... ...... ...... ...... ...... ...... endchar char 0x701 ...... ...... ...... ...... ...... ...... endchar char 0x702 ...... ...... ...... ...... ...... ...... endchar char 0x703 ...... ...... ...... ...... ...... ...... endchar char 0x704 ...... ...... ...... ...... ...... ...... endchar char 0x705 ...... ...... ...... ...... ...... ...... endchar char 0x706 ...... ...... ...... ...... ...... ...... endchar char 0x707 ...... ...... ...... ...... ...... ...... endchar char 0x708 ...... ...... ...... ...... ...... ...... endchar char 0x709 ...... ...... ...... ...... ...... ...... endchar char 0x70a ...... ...... ...... ...... ...... ...... endchar char 0x70b ...... ...... ...... ...... ...... ...... endchar char 0x70c ...... ...... ...... ...... ...... ...... endchar char 0x70d ...... ...... ...... ...... ...... ...... endchar char 0x70e ...... ...... ...... ...... ...... ...... endchar char 0x70f ...... ...... ...... ...... ...... ...... endchar char 0x710 ...... ...... ...... ...... ...... ...... endchar char 0x711 ...... ...... ...... ...... ...... ...... endchar char 0x712 ...... ...... ...... ...... ...... ...... endchar char 0x713 ...... ...... ...... ...... ...... ...... endchar char 0x714 ...... ...... ...... ...... ...... ...... endchar char 0x715 ...... ...... ...... ...... ...... ...... endchar char 0x716 ...... ...... ...... ...... ...... ...... endchar char 0x717 ...... ...... ...... ...... ...... ...... endchar char 0x718 ...... ...... ...... ...... ...... ...... endchar char 0x719 ...... ...... ...... ...... ...... ...... endchar char 0x71a ...... ...... ...... ...... ...... ...... endchar char 0x71b ...... ...... ...... ...... ...... ...... endchar char 0x71c ...... ...... ...... ...... ...... ...... endchar char 0x71d ...... ...... ...... ...... ...... ...... endchar char 0x71e ...... ...... ...... ...... ...... ...... endchar char 0x71f ...... ...... ...... ...... ...... ...... endchar char 0x720 ...... ...... ...... ...... ...... ...... endchar char 0x721 ...... ...... ...... ...... ...... ...... endchar char 0x722 ...... ...... ...... ...... ...... ...... endchar char 0x723 ...... ...... ...... ...... ...... ...... endchar char 0x724 ...... ...... ...... ...... ...... ...... endchar char 0x725 ...... ...... ...... ...... ...... ...... endchar char 0x726 ...... ...... ...... ...... ...... ...... endchar char 0x727 ...... ...... ...... ...... ...... ...... endchar char 0x728 ...... ...... ...... ...... ...... ...... endchar char 0x729 ...... ...... ...... ...... ...... ...... endchar char 0x72a ...... ...... ...... ...... ...... ...... endchar char 0x72b ...... ...... ...... ...... ...... ...... endchar char 0x72c ...... ...... ...... ...... ...... ...... endchar char 0x72d ...... ...... ...... ...... ...... ...... endchar char 0x72e ...... ...... ...... ...... ...... ...... endchar char 0x72f ...... ...... ...... ...... ...... ...... endchar char 0x730 ...... ...... ...... ...... ...... ...... endchar char 0x731 ...... ...... ...... ...... ...... ...... endchar char 0x732 ...... ...... ...... ...... ...... ...... endchar char 0x733 ...... ...... ...... ...... ...... ...... endchar char 0x734 ...... ...... ...... ...... ...... ...... endchar char 0x735 ...... ...... ...... ...... ...... ...... endchar char 0x736 ...... ...... ...... ...... ...... ...... endchar char 0x737 ...... ...... ...... ...... ...... ...... endchar char 0x738 ...... ...... ...... ...... ...... ...... endchar char 0x739 ...... ...... ...... ...... ...... ...... endchar char 0x73a ...... ...... ...... ...... ...... ...... endchar char 0x73b ...... ...... ...... ...... ...... ...... endchar char 0x73c ...... ...... ...... ...... ...... ...... endchar char 0x73d ...... ...... ...... ...... ...... ...... endchar char 0x73e ...... ...... ...... ...... ...... ...... endchar char 0x73f ...... ...... ...... ...... ...... ...... endchar char 0x740 ...... ...... ...... ...... ...... ...... endchar char 0x741 ...... ...... ...... ...... ...... ...... endchar char 0x742 ...... ...... ...... ...... ...... ...... endchar char 0x743 ...... ...... ...... ...... ...... ...... endchar char 0x744 ...... ...... ...... ...... ...... ...... endchar char 0x745 ...... ...... ...... ...... ...... ...... endchar char 0x746 ...... ...... ...... ...... ...... ...... endchar char 0x747 ...... ...... ...... ...... ...... ...... endchar char 0x748 ...... ...... ...... ...... ...... ...... endchar char 0x749 ...... ...... ...... ...... ...... ...... endchar char 0x74a ...... ...... ...... ...... ...... ...... endchar char 0x74b ...... ...... ...... ...... ...... ...... endchar char 0x74c ...... ...... ...... ...... ...... ...... endchar char 0x74d ...... ...... ...... ...... ...... ...... endchar char 0x74e ...... ...... ...... ...... ...... ...... endchar char 0x74f ...... ...... ...... ...... ...... ...... endchar char 0x750 ...... ...... ...... ...... ...... ...... endchar char 0x751 ...... ...... ...... ...... ...... ...... endchar char 0x752 ...... ...... ...... ...... ...... ...... endchar char 0x753 ...... ...... ...... ...... ...... ...... endchar char 0x754 ...... ...... ...... ...... ...... ...... endchar char 0x755 ...... ...... ...... ...... ...... ...... endchar char 0x756 ...... ...... ...... ...... ...... ...... endchar char 0x757 ...... ...... ...... ...... ...... ...... endchar char 0x758 ...... ...... ...... ...... ...... ...... endchar char 0x759 ...... ...... ...... ...... ...... ...... endchar char 0x75a ...... ...... ...... ...... ...... ...... endchar char 0x75b ...... ...... ...... ...... ...... ...... endchar char 0x75c ...... ...... ...... ...... ...... ...... endchar char 0x75d ...... ...... ...... ...... ...... ...... endchar char 0x75e ...... ...... ...... ...... ...... ...... endchar char 0x75f ...... ...... ...... ...... ...... ...... endchar char 0x760 ...... ...... ...... ...... ...... ...... endchar char 0x761 ...... ...... ...... ...... ...... ...... endchar char 0x762 ...... ...... ...... ...... ...... ...... endchar char 0x763 ...... ...... ...... ...... ...... ...... endchar char 0x764 ...... ...... ...... ...... ...... ...... endchar char 0x765 ...... ...... ...... ...... ...... ...... endchar char 0x766 ...... ...... ...... ...... ...... ...... endchar char 0x767 ...... ...... ...... ...... ...... ...... endchar char 0x768 ...... ...... ...... ...... ...... ...... endchar char 0x769 ...... ...... ...... ...... ...... ...... endchar char 0x76a ...... ...... ...... ...... ...... ...... endchar char 0x76b ...... ...... ...... ...... ...... ...... endchar char 0x76c ...... ...... ...... ...... ...... ...... endchar char 0x76d ...... ...... ...... ...... ...... ...... endchar char 0x76e ...... ...... ...... ...... ...... ...... endchar char 0x76f ...... ...... ...... ...... ...... ...... endchar char 0x770 ...... ...... ...... ...... ...... ...... endchar char 0x771 ...... ...... ...... ...... ...... ...... endchar char 0x772 ...... ...... ...... ...... ...... ...... endchar char 0x773 ...... ...... ...... ...... ...... ...... endchar char 0x774 ...... ...... ...... ...... ...... ...... endchar char 0x775 ...... ...... ...... ...... ...... ...... endchar char 0x776 ...... ...... ...... ...... ...... ...... endchar char 0x777 ...... ...... ...... ...... ...... ...... endchar char 0x778 ...... ...... ...... ...... ...... ...... endchar char 0x779 ...... ...... ...... ...... ...... ...... endchar char 0x77a ...... ...... ...... ...... ...... ...... endchar char 0x77b ...... ...... ...... ...... ...... ...... endchar char 0x77c ...... ...... ...... ...... ...... ...... endchar char 0x77d ...... ...... ...... ...... ...... ...... endchar char 0x77e ...... ...... ...... ...... ...... ...... endchar char 0x77f ...... ...... ...... ...... ...... ...... endchar char 0x780 ...... ...... ...... ...... ...... ...... endchar char 0x781 ...... ...... ...... ...... ...... ...... endchar char 0x782 ...... ...... ...... ...... ...... ...... endchar char 0x783 ...... ...... ...... ...... ...... ...... endchar char 0x784 ...... ...... ...... ...... ...... ...... endchar char 0x785 ...... ...... ...... ...... ...... ...... endchar char 0x786 ...... ...... ...... ...... ...... ...... endchar char 0x787 ...... ...... ...... ...... ...... ...... endchar char 0x788 ...... ...... ...... ...... ...... ...... endchar char 0x789 ...... ...... ...... ...... ...... ...... endchar char 0x78a ...... ...... ...... ...... ...... ...... endchar char 0x78b ...... ...... ...... ...... ...... ...... endchar char 0x78c ...... ...... ...... ...... ...... ...... endchar char 0x78d ...... ...... ...... ...... ...... ...... endchar char 0x78e ...... ...... ...... ...... ...... ...... endchar char 0x78f ...... ...... ...... ...... ...... ...... endchar char 0x790 ...... ...... ...... ...... ...... ...... endchar char 0x791 ...... ...... ...... ...... ...... ...... endchar char 0x792 ...... ...... ...... ...... ...... ...... endchar char 0x793 ...... ...... ...... ...... ...... ...... endchar char 0x794 ...... ...... ...... ...... ...... ...... endchar char 0x795 ...... ...... ...... ...... ...... ...... endchar char 0x796 ...... ...... ...... ...... ...... ...... endchar char 0x797 ...... ...... ...... ...... ...... ...... endchar char 0x798 ...... ...... ...... ...... ...... ...... endchar char 0x799 ...... ...... ...... ...... ...... ...... endchar char 0x79a ...... ...... ...... ...... ...... ...... endchar char 0x79b ...... ...... ...... ...... ...... ...... endchar char 0x79c ...... ...... ...... ...... ...... ...... endchar char 0x79d ...... ...... ...... ...... ...... ...... endchar char 0x79e ...... ...... ...... ...... ...... ...... endchar char 0x79f ...... ...... ...... ...... ...... ...... endchar char 0x7a0 ...... ...... ...... ...... ...... ...... endchar char 0x7a1 ...... ...... ...... ...... ...... ...... endchar char 0x7a2 ...... ...... ...... ...... ...... ...... endchar char 0x7a3 ...... ...... ...... ...... ...... ...... endchar char 0x7a4 ...... ...... ...... ...... ...... ...... endchar char 0x7a5 ...... ...... ...... ...... ...... ...... endchar char 0x7a6 ...... ...... ...... ...... ...... ...... endchar char 0x7a7 ...... ...... ...... ...... ...... ...... endchar char 0x7a8 ...... ...... ...... ...... ...... ...... endchar char 0x7a9 ...... ...... ...... ...... ...... ...... endchar char 0x7aa ...... ...... ...... ...... ...... ...... endchar char 0x7ab ...... ...... ...... ...... ...... ...... endchar char 0x7ac ...... ...... ...... ...... ...... ...... endchar char 0x7ad ...... ...... ...... ...... ...... ...... endchar char 0x7ae ...... ...... ...... ...... ...... ...... endchar char 0x7af ...... ...... ...... ...... ...... ...... endchar char 0x7b0 ...... ...... ...... ...... ...... ...... endchar char 0x7b1 ...... ...... ...... ...... ...... ...... endchar char 0x7b2 ...... ...... ...... ...... ...... ...... endchar char 0x7b3 ...... ...... ...... ...... ...... ...... endchar char 0x7b4 ...... ...... ...... ...... ...... ...... endchar char 0x7b5 ...... ...... ...... ...... ...... ...... endchar char 0x7b6 ...... ...... ...... ...... ...... ...... endchar char 0x7b7 ...... ...... ...... ...... ...... ...... endchar char 0x7b8 ...... ...... ...... ...... ...... ...... endchar char 0x7b9 ...... ...... ...... ...... ...... ...... endchar char 0x7ba ...... ...... ...... ...... ...... ...... endchar char 0x7bb ...... ...... ...... ...... ...... ...... endchar char 0x7bc ...... ...... ...... ...... ...... ...... endchar char 0x7bd ...... ...... ...... ...... ...... ...... endchar char 0x7be ...... ...... ...... ...... ...... ...... endchar char 0x7bf ...... ...... ...... ...... ...... ...... endchar char 0x7c0 ...... ...... ...... ...... ...... ...... endchar char 0x7c1 ...... ...... ...... ...... ...... ...... endchar char 0x7c2 ...... ...... ...... ...... ...... ...... endchar char 0x7c3 ...... ...... ...... ...... ...... ...... endchar char 0x7c4 ...... ...... ...... ...... ...... ...... endchar char 0x7c5 ...... ...... ...... ...... ...... ...... endchar char 0x7c6 ...... ...... ...... ...... ...... ...... endchar char 0x7c7 ...... ...... ...... ...... ...... ...... endchar char 0x7c8 ...... ...... ...... ...... ...... ...... endchar char 0x7c9 ...... ...... ...... ...... ...... ...... endchar char 0x7ca ...... ...... ...... ...... ...... ...... endchar char 0x7cb ...... ...... ...... ...... ...... ...... endchar char 0x7cc ...... ...... ...... ...... ...... ...... endchar char 0x7cd ...... ...... ...... ...... ...... ...... endchar char 0x7ce ...... ...... ...... ...... ...... ...... endchar char 0x7cf ...... ...... ...... ...... ...... ...... endchar char 0x7d0 ...... ...... ...... ...... ...... ...... endchar char 0x7d1 ...... ...... ...... ...... ...... ...... endchar char 0x7d2 ...... ...... ...... ...... ...... ...... endchar char 0x7d3 ...... ...... ...... ...... ...... ...... endchar char 0x7d4 ...... ...... ...... ...... ...... ...... endchar char 0x7d5 ...... ...... ...... ...... ...... ...... endchar char 0x7d6 ...... ...... ...... ...... ...... ...... endchar char 0x7d7 ...... ...... ...... ...... ...... ...... endchar char 0x7d8 ...... ...... ...... ...... ...... ...... endchar char 0x7d9 ...... ...... ...... ...... ...... ...... endchar char 0x7da ...... ...... ...... ...... ...... ...... endchar char 0x7db ...... ...... ...... ...... ...... ...... endchar char 0x7dc ...... ...... ...... ...... ...... ...... endchar char 0x7dd ...... ...... ...... ...... ...... ...... endchar char 0x7de ...... ...... ...... ...... ...... ...... endchar char 0x7df ...... ...... ...... ...... ...... ...... endchar char 0x7e0 ...... ...... ...... ...... ...... ...... endchar char 0x7e1 ...... ...... ...... ...... ...... ...... endchar char 0x7e2 ...... ...... ...... ...... ...... ...... endchar char 0x7e3 ...... ...... ...... ...... ...... ...... endchar char 0x7e4 ...... ...... ...... ...... ...... ...... endchar char 0x7e5 ...... ...... ...... ...... ...... ...... endchar char 0x7e6 ...... ...... ...... ...... ...... ...... endchar char 0x7e7 ...... ...... ...... ...... ...... ...... endchar char 0x7e8 ...... ...... ...... ...... ...... ...... endchar char 0x7e9 ...... ...... ...... ...... ...... ...... endchar char 0x7ea ...... ...... ...... ...... ...... ...... endchar char 0x7eb ...... ...... ...... ...... ...... ...... endchar char 0x7ec ...... ...... ...... ...... ...... ...... endchar char 0x7ed ...... ...... ...... ...... ...... ...... endchar char 0x7ee ...... ...... ...... ...... ...... ...... endchar char 0x7ef ...... ...... ...... ...... ...... ...... endchar char 0x7f0 ...... ...... ...... ...... ...... ...... endchar char 0x7f1 ...... ...... ...... ...... ...... ...... endchar char 0x7f2 ...... ...... ...... ...... ...... ...... endchar char 0x7f3 ...... ...... ...... ...... ...... ...... endchar char 0x7f4 ...... ...... ...... ...... ...... ...... endchar char 0x7f5 ...... ...... ...... ...... ...... ...... endchar char 0x7f6 ...... ...... ...... ...... ...... ...... endchar char 0x7f7 ...... ...... ...... ...... ...... ...... endchar char 0x7f8 ...... ...... ...... ...... ...... ...... endchar char 0x7f9 ...... ...... ...... ...... ...... ...... endchar char 0x7fa ...... ...... ...... ...... ...... ...... endchar char 0x7fb ...... ...... ...... ...... ...... ...... endchar char 0x7fc ...... ...... ...... ...... ...... ...... endchar char 0x7fd ...... ...... ...... ...... ...... ...... endchar char 0x7fe ...... ...... ...... ...... ...... ...... endchar char 0x7ff ...... ...... ...... ...... ...... ...... endchar # DAGGER char 0x2020 ..X... .XXX.. ..X... ..X... ..X... ...... endchar # BULLET char 0x2022 ..XX.. .XXXX. ..XX.. ...... ...... ...... endchar # TWO DOT LEADER char 0x2025 ...... ...... .X.X.. ...... ...... ...... endchar # CARET char 0x2038 ...... ..X... .XXX.. XX.XX. X...X. ...... endchar # SUPERSCRIPT ZERO char 0x2070 .XXX.. X...X. X...X. .XXX.. ...... ...... endchar # SUPERSCRIPT LATIN SMALL LETTER N char 0x207f .XXX.. .XX.X. .XX.X. .XX.X. ...... ...... endchar # EURO SIGN char 0x20ac ..XXX. .X.... XXXXX. XXXX.. .X.... ..XXX. endchar # NUMERO SIGN char 0x2116 ...... ...... ...... ...... ...... ...... endchar # TRADE MARK SIGN char 0x2122 XXXX.X .X.XXX .X.X.X ...... ...... ...... endchar # VULGAR FRACTION ONE THIRD char 0x2153 ...... ...... ...... ...... ...... ...... endchar # LEFTWARDS WHITE ARROW char 0x21e6 ..X... .XX... XX.XXX .XX... ..X... ...... endchar # UPWARDS WHITE ARROW char 0x21e7 ..X... .XXX.. XX.XX. ..X... ..X... ..X... endchar # RIGHTWARDS WHITE ARROW char 0x21e8 ...X.. ...XX. XXX.XX ...XX. ...X.. ...... endchar # DOWNWARDS ARROW char 0x21e9 ..X... ..X... ..X... XX.XX. .XXX.. ..X... endchar # ELEMENT OF char 0x2208 ..XXX. .X.... .XXXX. .X.... ..XXX. ...... endchar # BULLET OPERATOR char 0x2219 ..XX.. .XXXX. ..XX.. ...... ...... ...... endchar # SQUARE ROOT char 0x221a ...... ...XXX ...X.. XX.X.. .XXX.. ..X... endchar # INFINITY char 0x221e ...... .X.XX. X.XX.X X.XX.X .XX.X. ...... endchar # LOGICAL AND char 0x2227 ...... ..X... .XXX.. XX.XX. X...X. ...... endchar # INTERSECTION char 0x2229 ..XX.. .X..X. .X..X. .X..X. .X..X. ...... endchar # CONTOUR INTEGRAL char 0x222e ...XX. ..X... .XXX.. X.X.X. .XXX.. XX.... endchar # ALMOST EQUAL TO char 0x2248 .XX.X. X.XX.. ...... .XX.X. X.XX.. ...... endchar # IDENTICAL TO char 0x2261 .XXXX. ...... .XXXX. ...... .XXXX. ...... endchar # LESS-THAN OR EQUAL TO char 0x2264 ...XX. .XX... ...XX. ...... .XXXX. ...... endchar # GREATER-THAN OR EQUAL TO char 0x2265 .XX... ...XX. .XX... ...... .XXXX. ...... endchar # REVERSED NOT SIGN char 0x2310 ...... ...... .XXXX. .X.... .X.... ...... endchar # WATCH char 0x231a .XXXX. X....X X.X..X X.XX.X X....X .XXXX. endchar # TOP HALF INTEGRAL char 0x2320 ....XX ...X.. ..XX.. ..XX.. ..XX.. ..XX.. endchar # BOTTOM HALF INTEGRAL char 0x2321 ..XX.. ..XX.. ..XX.. ..XX.. ..X... XX.... endchar # BELL SYMBOL char 0x237e ..XX.. .XXXX. .XXXX. XXXXXX ...... ..XX.. endchar # SYMBOL FOR FORM FEED char 0x240c XXX... X..... XX.XXX X..X.. ...XX. ...X.. endchar # SYMBOL FOR CARRIAGE RETURN char 0x240d XXX... X..... X.XXX. XXX.X. ..XXX. ..X.XX endchar # SYMBOL FOR ESCAPE char 0x241b XXX... X..... XX.XXX X..X.. XXXX.. ...XXX endchar # CIRCLED DIGIT ONE char 0x2460 .XX... ..X... ..X... .XXX.. .XXX.. .XXX.. endchar # CIRCLED DIGIT TWO char 0x2461 .XXXX. ....X. XXXXX. XX.... XX.... XXXXX. endchar # CIRCLED DIGIT THREE char 0x2462 XXXX.. ...X.. XXXXX. ...XX. ...XX. XXXXX. endchar # CIRCLED DIGIT FOUR char 0x2463 XX.... XX.... XX.... XX.XX. XXXXX. ...XX. endchar # CIRCLED DIGIT FIVE char 0x2464 XXXX.. X..... XXXXX. ...XX. ...XX. XXXXX. endchar # CIRCLED DIGIT SIX char 0x2465 XX.... XX.... XXXXX. X..XX. XX.XX. XXXXX. endchar # CIRCLED DIGIT SEVEN char 0x2466 XXXXX. ....X. ..XXX. ..XX.. ..XX.. ..XX.. endchar # CIRCLED DIGIT EIGHT char 0x2467 .XXX.. .X.X.. .XXX.. XX.XX. XX.XX. XXXXX. endchar # CIRCLED DIGIT NINE char 0x2468 XXXXX. XX.XX. XX..X. XXXXX. ...XX. ...XX. endchar # CIRCLED DIGIT ZERO char 0x24ea XXXXX. XX..X. XX..X. XX.XX. XX.XX. XXXXX. endchar # BLACK SQUARE char 0x25a0 ...... ...... ..XX.. ..XX.. ...... ...... endchar # BALLOT BOX char 0x2610 .XXX.. X.X.X. XX.XX. X.X.X. .XXX.. ...... endchar # BALLOT BOX WITH CHECK char 0x2611 XXXXX. XXXX.. XXX... XX..X. X..XX. ...... endchar # BALLOT BOX WITH X char 0x2612 XX.XX. X.X.X. .XXX.. X.X.X. XX.XX. ...... endchar # EIGHTH NOTE char 0x266a ...X.. ...XX. ...X.. .XXX.. XXXX.. .XX... endchar # CHECK MARK char 0x2713 ....XX ...XX. X.XX.. XXX... .X.... ...... endchar endfont aranym-1.1.0/src/gui-sdl/aranym.fnt0000664000175000017500000017747213454637621015356 0ustar joyjoy 8x16 system font? UUUU XXZ (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx    ( 0 8 @ H P X ` h p x    ( 0 8 @ H P X ` h p x    ( 0 8 @ H P X ` h p x    ( 0 8 @ H P X ` h p x    ( 0 8 @ H P X ` h p x  (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx    ( 0 8 @ H P X ` h p x !!!!! !(!0!8!@!H!P!X!`!h!p!x!!!!!!!!!!!!!!!!""""" "("0"8"@"H"P"X"`"h"p"x""""""""""""""""##### #(#0#8#@#H#P#X#`#h#p#x################$$$$$ $($0$8$@$H$P$X$`$h$p$x$$$$$$$$$$$$$$$$%%%%% %(%0%8%@%H%P%X%`%h%p%x%%%%%%%%%%%%%%%%&&&&& &(&0&8&@&H&P&X&`&h&p&x&&&&&&&&&&&&&&&&''''' '('0'8'@'H'P'X'`'h'p'x''''''''''''''''((((( (((0(8(@(H(P(X(`(h(p(x(((((((((((((((())))) )()0)8)@)H)P)X)`)h)p)x))))))))))))))))***** *(*0*8*@*H*P*X*`*h*p*x****************+++++ +(+0+8+@+H+P+X+`+h+p+x++++++++++++++++,,,,, ,(,0,8,@,H,P,X,`,h,p,x,,,,,,,,,,,,,,,,----- -(-0-8-@-H-P-X-`-h-p-x----------------..... .(.0.8.@.H.P.X.`.h.p.x................///// /(/0/8/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/H/P/X/`/h/p/x////////////////00000 0(00080@0H0P0X0`0h0p0x000000000000000011111 1(10181@1H1P1X1`1h1p1x111111111111111122222 2(20282@2H2P2X2`2h2p2x222222222222222233333 3(30383@3H3P3X3`3h3p3x333333333333333344444 4(40484@4H4P4X4`4h4p4x444444444444444455555 5(50585@5H5P5X5`5h5p5x555555555555555566666 6(60686@6H6P6X6`6h6p6x666666666666666677777 7(70787@7H7P7X7`7h7p7x777777777777777788888 8(80888@8H8P8X8`8h8p8x888888888888888899999 9(90989@9H9P9X9`9h9p9x9999999999999999::::: :(:0:8:@:H:P:X:`:h:p:x::::::::::::::::;;;;; ;(;0;8;@;H;P;X;`;h;p;x;;;;;;;;;;;;;;;;<<<<< <(<0<8<@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > > > > > > > > > > >(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>(>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>8>@>H>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>P>X>X>X>X>X>X>X>X>X>X>X>X>X>X>X>X>X>`>h>h>h>h>p>p>p>p>p>p>p>p>p>x>x>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????? ?(?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?H?P?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h8@` 2<`f``2`~f ll>6662~6 6l 66 66fff` $f`|||||||| (|`f8``p00 fl`f<<~ ~~<<<8|f~`f<|<>~ffff~`xp`` 80ff|<|l0x z< fLf<~<fffxzfLf=ff`0 ~6~~~6f<6>f >>6~~06f6f~ ~6l ̌|~~f<~fcf~<~|~ffc8~f f>~<<~f DB~~>~~ L~ff~|~>~cf<~|<~fff`xN>ff|~~8~n<~<~~l86~~nn>|~ 0 0@@8||<0_ 0>||`x8x::|<88<@@@(ff~fl 0f~~~ ~<~~~~|<~~|~~~f~`f~~~~~ffff~`x88`` 808f6DHxf 0~~~~~<|L~`<fLfffffLfLfff`f<<<<~f~~|v|~~~~~f>>~f~`~L~~~~ffl`8dr`p`8ffff~~~ L~ff<~~~>~Z~fff>cf~~~~~fff`|_~<v|~~8~n<~>~>n86~~nn>~~@X||fx>U 8<~|p<@@@8<$,4fp@pf`l88<f8f `pff~pf~ffn```f`ffff`ffff `8``0<0f2~l0f##<<<<<~~`0ff`~~~f```h4`0`ffff<<~```1fff ~ ~fb<` ffl6ffff>f #@\:|fHfQ#4<,$|f|>~8fp@pf$g< @@ |@.f` 8< f8f ``ff8~8fffff```f`vfff`ff<>|8 l<<|>|>~ffff~0b~0Bff80ff&&v~~~~~~f``~`~~ff~~~~~Bffffff|f<<<<<f`<`<`<`<`<~>`>`>`>f`f|88888ff ````0`0hv`>`>~fffff ~ ~ ~|303 3330ff`<` fBl<vfff0f>0fff>0f0fff<~<>8ffcc0fcf<~|<~cfff`xN>>  f ff 666ffv6f '@Nr8fH`&gf$8|~8<@@@< $<@8 ::~x9ff|p~~ f <|` <~p f~`f||n~`vfffpff<<0l>~|~~~~~8 ~~~~~~~ffff~88f0<~<f~`Hff,, ffffff`````vfffffffnfffff~f>>>>>>|~~~~8888~~~~~~~~fffff~ff>f>f>`|f|`|`|f~f>`~`~`~|~`~`~`~`~n~f`~~88888ff ````0d2xv~v~v~~v~f~f~f~~~p~p~p~~fffff~ ~~~3>? 3330f|`f|~Bxfvfff<xf~|~Z~fff>wf~~~~~cfff`|_f<  f ff6f6vv>>f@O@G6fH,Ã$ƒ@p<@8x::<8<|||||||8ff>p~~n <~| <> f|`f||n~`~fff8ff<f`ff~ff fffff`ff6~~x0f|<ffffff`||`|vfffffffffff~fffffffffff``f`````ff~|f|f|f|f|fnfnfnfnf~|~fff ````0d2p8~f~f~ff~fffffffff8`8`8`0fffff   ~3>? 330f~`f|~~xfk~0l>ff0ff`0ffck0fffcff||`|8 L~~>{>`f`lfZFfff&ffffbff`ffff ffff`pff>>>>>{`fffffffffffnfffffff~>~>~>````````fff|f|f|f`f|fnfnfnfff~~ffff ````0`0~f~f~ff~fffffff``ppp0ffff<00?03 3?0~f`f`0fBlfk~lf|f0ff?f>{>>||`LfZnnl&~fff`f~|[>n 6 f ff6f66f@O@C80g8ƒ>~8<::::3f[ff~6 f f~>0>n~~~6 '@Nrl`$8fpl@~`~~ p$<0 8Xfqff|f8f`f0f~ff0ffffn``fff`ff`jfn|~~~6 #@\:|f $0< |~`f8X<|p<a:::~ 0`~~~~ ~~0~<~f~~|~`~f~~~f~`|~~f~x~~~~~>f< ~0Bl||~] 2 2~ffffff~~~~~~<~~|f~~~~~~~~~~`l~~~~~~~~~~~<<<<~f~~~~~~~~~~>~>f~f~f~~~~~~~~~|~|~~~~~~~~~~~~>~>~>~>ffff~<~<~<~<~<~ ~~<~x~x~f~`~~~f<~cfcf~~f`fl~~f>~lf<~f~>ff~~~>8~<>>~~~~~~`>~~~~}Mf`~f~~`~Z~fffcf~f`~`f?~|_f~~f`~Z~ffffcf~f`~<~~~`<:::|p08A|||||||<v``<~~< <<0<8|>>>f< `|>f~08~ ??>>>>>>>>>><<<<>>>|f>f>f><><><><>x>x>~>~>~>~>~><<<<ffff~<~<~<~<~<< ~~<~x~x~<>~~~~~~<p3?3? ?f|~~~f~cfcf~f<`f>f<ff<|<f><<<><~~`|~~<>Nf~f||`~|xNf><|`<|xNf0 0 0@@>~~`p8|||||||0 <00~|`~  @ ~`~ ~~~ ~|<|   ` |@~>``f`00 T |x`|888|`| |||8| x8x8888888808<<`faranym-1.1.0/src/gui-sdl/.gitignore0000664000175000017500000000001613454637621015321 0ustar joyjoyfntconv a.out aranym-1.1.0/src/gui-osx/0000775000175000017500000000000013454637641013365 5ustar joyjoyaranym-1.1.0/src/gui-osx/aranym.icns0000664000175000017500000065612513454637621015547 0ustar joyjoyicns\Uis32  G 70 yE  x_ h jSJMrOf#AS$B;)8F/Td)&4,[T'5 !3qC4W lKo;AF4=+ 8|C2? #K(3 (#*$2 &%(9&a4*: 5:'/& $"!%# 0e %!%LI` '%q y" \^!bh |6Vh/WQ5E(Y;l?9B<"xo:N6-  EYJz( # aO[cN`H  M_Jb,&&0i$>DU25:66=8L#,,' 1-"=1% *E -u>   4E @G1"(:. ]\b\7+ G\\`YNE.&Nc`XX˂!.64!6TQB`9Ð8!oz2L|)0z[^[}U2ǍiX(e 00#Q84`tXP#7'f}pF/*)E 6nvu%,AU u qKHA$GL9k7Ubg:.T#Uc`t=FQVM.V:5YOD/%.7#S^@7MY&)/'+X_ #+ UgRC>IW<.3!s8mkkՐ-Ur PQe&t 4 3Hq il32 Ȃ   DE  8E  C+vH  B< Nׅ  )  _L A.U {f0 <6r )QILC>=]\$-S/x;JXK d(.iO UF  _W 1m8dOFE/Q0@*,:>Fa+N9J;g}QgQLfR 0t `V\hbK ' BKM,,RL"*$ {pc -u?7OX1 "  HIuWZMHF<56+#}%{@ 1`*T?-8A"1#85&3X6tG,JL/0">![1o \ 7<"#L36wQ//+   Q,47=0+ (  4T&N\"? ksG#o3p4("!&17% "#"   fـk!"#"   _k!"$$=eH$ m !"#"0R b" # k   M ! }P+ ѯ^1g'A GG3h\`ZWOr 3@$ jEE #j  oc;E|=:'bl\ 4n" " A H{g\U?j#B\:D! PI  ^~= #qQ n/0I! l̇pi#y?{p|l !  6  .Vff#>C/0j0*"JQVK@6B*"C8Hb1p5e-!. @A=$U   1 @ M X /jk *srV7%2,+/;?* ]^`]VK<* +OnāPV[]^`]UF/"4F=)&YȁPV[]^a[C@[B82(NPV[]_ZC}w4 */353)-TZ_^ _WG42/ 0.-1'IX\ [[\V@Q$1#/0/J1+#%(+')022RSP6942"//3Iݻ*oED6dW80h "0 Q}|}ځ61%՜1(/7T]E*;g\%[$.%0/A-4$7Yv=V7 !}$5Z$,"(\(*cn~d\<5kXlC&^"Q Ȳd4 3c;G ؼg5  +[J : ۹za8 Ip/弔mL.  /d'&Șj> @znm7  M8{9   U G   Y f  Wi ,*  QV@a   FK=55:,/)(('&%%$#"%^ 5IUKl s !rPMКD~}{zywvb $  X` KպɕB~}|zxwvtsq|_   9{ Rܢ:~}{f V5 u A-H~ponmljihgedca`iR   J jgileen#H  * oe nrjit$V P[hefibbl!V 蕀fedga`j '  H am bf__g T  ~W$uwqponmlk|@ggb`^{T"%$( ad^]f݌  4!f9 _b[[dA b3WB ]aYZbNj q U~}A \^XX`! ;&TJhlddm!\\ICAG8S[OONZ))#"!#9:77; _%;S5{hfpS6N +E4ͻƛR~ /l[ZbJ渉 /$ 3ȷP}~-iYW_H| #  7ӥ S {},r_^fLU ,&|{zyxvuK$y{ +WJHO= Ы   r{5}|{yxyHj[Yg. OQLKQy  w~ 4ywvx~Jm^]k- QTNMS"0 ow5~|{xwvuv|EeWUc, KMGGMt nv3}zx wuv|DeWUc+ KMGGM mt +zxux~}Fk\Zi*OQKJQ_Ƌ =lsEk\[Xf~xwd@WKJV(EDAAB"%@658/" kqkuvu[Xwu>lkefk%fUS[CI >jp\|{yxvut]Nvedt5\[UWZ%UHFL:i@ho[zywvusr}[Mtcbr3ZYTUW$TFEJ8 x| Tyws|fGub`r+ gf`ad)^ONT@b(AhYXWVUTS[K/0/.+dwv{aFFEL>''(&#Sk`_h@"$65335 3+*-"F }tus< {{trqe^_]Y`ecbmK.#|{ywusrBkkedb`^][ZYXWU_C #~yxvtsrpAhhb``^][YXWUTS\@ }wus|~|{Crrkih_YYXUZ][ZcD&%#{|vtte__^k<WVRPNW[WVWNFEDK7   -a}|{ywusu|*xhepQBfVUb+ MLGFECBA?H!1 d|usrs{*|jhsS@dUS`) ONIGFECBAI!1 9]}|{yxvtsqpqy+scajN@aSQ^*IHDB@@>==;:B% W}{x}}|zywx#p`^hI<^ON[$ FE@?><;:8A bf_^\t{zS=UJIFQb^\]U?=;KSNLO@45414BA?><;9867-$%$&  xzx@,Qrppg[[ZWZdb`^]RLLKHNRPOMI?>=;;9865269759+%~}|{ywvF.Iqa`_\[ZYWVUSQPNMLKIGGEDBA?>=;:9865421/.-/$7x}|zywvuD/Gp`^\[YXWVTRQPNMLKIGFECB@?><;:9765321/.-+.#Nr ~{zvO/QmkjbVWVRU^][YXMGGFECA@?<>ECA?><;98653203&gi 943/:|zy|UFGFP*/,C986C\UTVK0//.-AKFEBA@?>?6#""! \  +{yxycTR[? 2RDBA@?=;C,@   &~|ywvw #`RPX@3NBA@>=;:@-  %|{yxvuu~ #^POW>3LA?>=;:8=+W  $~zwy#!fWV^B 0K?>;>@>=C-  $|yysba``h   $LB@F4 3G><<5//-1$ Q *+0$ #{wd?bSR^0 IIDBA?=<;C 31.,+*)'&%#"!  , EEIH2 #xuc@cUS`/ JIECB>;:9A 31.,+)('&$#"   ]]`cW: #wt}b4<\ONX-ED@>=<:98? /-*)'&%#"! e vuw|uc>  "vq|a4<]ONY-BB>=;9875= -,('&%#"!7 k=  "~spz_#<`RP[.A@<;98754; +)'&$#"! p6 !}rox^-AA==? ??:9865439 )(%$#!   Bp( !{pmv\`a[[a==98653218 ('$#!  ܊ ʹi yoku[ RRNNQ!<;865321/6 &%"! k X wmjrYQQKLP:955320/.4 %$! oǞ> vkgqX\]VW[#AA<;:2..,2 #" y ̒! sifoV1'"!!"/.-,- ""*0,+0 "  ~y rhemU'j[YbF 5WIHQ* 4+).    gX pfbkS"[OMT>0J?>F$'!0)(,   4 ndajR!YMJQ<.G=>A DJR \`YWUTRQO[- FFAAD  ;UXQPNMLKIS+ @?<;> ÷,SWPOMLKJHR* ??::=#]aZXWUTRP[/EE@@CuDuhhp" #$! !  Xk\^ZG=\vѭU,&# !"#"!    #&)+>\vѭU,&# !"#"!    $')+=\vѭU,&# !"#"!    $'),A\uѭU,&# !"#"!!   "&(,EbzѭU,&# !"#"%!   #'(;`}ѭU,&# !"#" !   $'+MuѭU,&# !"#" !   $%0\ѭU,&# !"#" !  $&')(%#  $#6iѭU,&# !"#"!  ! %0=GE<40+$   #"9sѭU,&# !"#"/!  !!"! )9PlrY?(    ! :yѭU,&# !"#"! !!"$# #0FeO&     7|ѭU,&# !"#"!""#%# ,Cfn0  1zҭU,&# !"#"##%% "2Q|_   (sʄ үU,&# !"#"#$%&""1S\ iσ ĬU,&# !"# %&%!,K|k  ]҂ ۷X-&# !"#$%'#$ڀZ+%#!" $&%#=u3  ?g+"!!"#&&"=yȀ G3! !!"%&!:xʀ UK  !#&!4qƀ l   "%",fw %LDCI: $B:9987665437.D  !$#$Uv f)b     "% B} _[ϱ  $M    $ /y \Xɭ} J " Z c-Oʫ _ #; RӺ˘-&""_ªm  ! %k(   ǭ69r"@P     Ҷ6  %q ī 1 }!> ê0 R i=|ĨČ/ y 3| %$U#~{wl,116) . :Uζ 0/ĮK ~~. e %W$+ɿn *V  |}- 3 : "+Ⱦl )U  {{, B \H *Ƽk )b  2 = $} "[TRXH *źj )ueffv9  #>6527RSONV  6F K *¹i ( Mu [i Ki D )h (* E}i   Љ  !RF  B)g (+  C|zg   *H& G j * Bn ;k  /7;ǸÚ!*&&%6a!5*  AzigpY  /*  ˘F* e~|Drvonw.  !0   ՝FƬ* hCvzrr|-BB  #. ٽǕ I) bzx@ nqjjt( 톇  %()ػƓ H(  azy? nrkkt'   &ֹĒ.>  e>uyqq{) yއ  & Eո‘]xwq'',*)Wsgfu<ba]]^4$%$#9\RQUI$!! ">&  $ҶԷwuW'8|ze U   ?ѵxz jJ#xz~" :}kirY x  Aϳwy iH #~}wy| :{ihqW     ڞ oc=$Awvb}  @Wqpnmmlksa=?BA8\]\dT68:92rZ,3528OOKKN*OCBF7 ]    P{k   C    .!W ~}||zy`   /  )$X "~|{zxwv^  #  %Z||{w~c  .  ($$#&4}}|Q,vvpnlyzy{oddclQ 5  9}'k \vt> mlgecca`_l3  4  < w( =i [ts= kkecba`^]k1  ,  :r"6fWrq8jicba_^][j,  !  ~|zvm%)**)/('&Trfe`pvYY[YVlvqos_NPOLQedba_^\[Y\L>@@D7'    %ƺT-n}~}y~vnonjs{wuuoba`^^\[YXT[b^\cM 7  "\ / d~}|zyxvtsqponljjhgedba`^]\[YXWUTRQPVC M  "[ 0 c~|{zywutsqponljihfecba_^]\ZYXVUTRQPNTA h   h 0pxzyuyrijihfdcb_bnlihfeca`^][ZX_I{    NHG Z KKPE.%% 5 4\wuHnmgfeb`_^l1XVQPNMLKIHGEDCB@?><=<@ }}wZ2#!4 5XrqD hhca`_]\[h1 SQMLJIHFEDCB@?>=;:98< q _0!  3% XsqD ffa`^\[ZXf0 POKJIHFEDB @?==;:88< W ^* 3~:YwvF ed_^\[ZXWc0  ONJIGFEDB@BDB@?=<;:9= ®W#  2}.^_ZZ\1 " cc]\[YXWVb.  MLHGFDCBAH) 'MηJ  2{"# aa\[YXVUT`.  LKGFDCB@?J  ٽ8  2y/uwqqx" ``[YXVUTR^-  JIEDCB@?>F! z z&   1x sunpv! !^]XXVUSRQ\,  IHDBA@?>>@ ;310/.,++-X   /qF5omwZ Jn`_k9  910.-,+*)+`K8  2x3xv_Mwges< + @ZONY*  ?>;;<  60.-,/-,+.  *vr{c 5ma^fOD^RQ\1 + 5I@>F#  >=::;  5.-,*%$#"$  # ywutrqon}F ffaaf!  (   <;889  3-,.$ k^~ $~{zywutFklffl (   ;:778  2,*-" /g$w}tsqponl{C cd__d   98556  0*),!  Vv{trqonmkzA bc]^c  87445  /)(*   )ǿL}{zxH lnhhn =<99: 2,*-# WI 883200//.5  /.*)+  {|~zg]\e|N    jORG5008NY     e+,,'%#! (Tm  k&(%##"+  {#" V )By  gs 4R,0k% cm    AdW <, 6  U' #D  [. %l  PJ  9x  20   hg  ]Ё;   _<  aاo> KѫX 7|ycL:+!!+8K`r> CiziN)          ]__`"_^]\ZYVTROMIFC@<951-*&"   &+29@HPX`jrzצ{m_X[]__`"_^]\ZYVTROMIFC@<951-*&"  %+3:AIQX`jrzצ{m_X[]__`$_^]\ZYVTROMIFC@<951-*&"   '/7@IQYajrzצ{m_X[]__`A_^]\ZYVTROMIFC@<951,)&#    (09DNXakt|צ{m_X[]__`(_^]\ZYVTROMIFC@<841.+*(%$"    )0;FQ\hr|צ{m_X[]__`*_^]\ZYVTROMIFC?;96421/.-+*('%"   '1=<;:98764320/,*'%"  %/:GTbo|צ{m_X[]__`_^]\ZYVTROLIGFEDEEFGGFEDC@>;84/*$  +8FUdpצ{m_X[]__` _^]\ZYVTROMLKL1NOQSTUVWY[`eilnonkf_XOF>81,'# $3BSdoצ{m_X[]__`4_^]\ZYVTRQQRRSVX[\^^bhq~ucO=/$  *5-)+WX[ahmЁB "010/5# 01/4"/-))1KˀtWI:/(" !TUY^fk}7 &11/&CecY*+./&De\[[ZYYXWV UYO-,,*,2W߀ VK9,#SRSUZbis3(11/-./+ $".-+/4jnJ:* PRW]gm6)20/ +./ ߱,/.-16J=) MOSXbiـ?*10/ })./) ڬ)/0/.4=o=,JIJNT\eqO*20/ (-/-1"s ,216LC0 FJOVahi (10/ s(-/-->FAA"Լ'*7;>3,/26kt0 CBEIPYctɀ &10/ +%")./+*ǻX-/59=$ @?@DJR^f#01/ 1("'+./+*V *.17Hv$<>CKU`t3/1/.,)'(+-/+!%&7ĹM&-046p589=CMYca-1/.-,-,**+,.0/,) &*,;¸J%+/16:p5447=DO\n *10/2+ 2//2, (-/ =H$+/126X(1016JYs +10/%K%,Jv"$&)-./ =F$+/034D%',4>M\N#10/$J"*Iv%)++-./ !!&)-/l̳"&*-/.00e (5Id10/ b)-/I!*H@ %(**,./jɰ$')*+-././1:T (6Kqg)2/ h(-1!; 9@$*-../0%!!i۾Ϟ *0././, '6O{811/[(,,@HEDCC2V݃7=.V@&,/.;A=<)g&*69=2,./.S '8Uw&2/+$")*c@&,/,"DZj&P,./..1/ &9ZW /1/1*"'++ f?&,/, θg(L)-/..(h  %:`}230/.,*(''(+-+#%&k?&,/, îb $4E &,/.-+V $3/E, (+!ޱ9:A@9{a-.#?V;?;2X}}sB;97:"&+/.,#}A  "Ac&*2/, (*墂#)-H5Zض˜ &(-/-&Sl !CY11/E, (* ּm&,C: " ^!"$%(+./.)5  DL40/E, (+ޥ %&Ӻj#+C7#(`%)++,../.*"ظ D= 3/,Ɔ4 չZ 4;%+iɱ(-/+φ B/*2/@-}Y^ddY׬|wQV]]SǷǁ?SWU\xvqpt*',!L{jgmX)-/,چ  ?#01/1 !p$"оԛ%(-2$ %*./-s :30/+&"59z 9Ƽ#'+./-($! $(,./. \$ 44/.,*)(.@z$?¹$()*+-//.-+)*,./"I3 -4/1".4~8ȸΒ !""##")1.-../% 'aйɖ $&]%2=?>/<4ys{|xzdklsb))./"P :6.&!4/ Es.ñ"#,./.e A>6.$ 40/A#0!Ҹq*./. HF?6,30/@~%)*0(Ϸo)-/- POH?4'01/4'% )-/0,|(-/+Ú WWQH=0 ,2/%?tnk_t֖|U #+./0.$gwtkhgjhbZ[\\[ZYXXWVUUTZJ(-/)'x ^_ZRH:)&2/ a- #&+./ 1 BǬtr %*./.%DN fhd\RE320/ZA!%)-/.+'# U zu  $(,./-!q nong]P?*/1/XC %(*+-./.,*)Y #${t #'())*,./+ uvvqh\K6+1/WJ#*-../1% Yζȑ x{"$%&'&,0/.*({rhYE) $10/Wɮ>&,/-;B?>-]w%-78/~yzxf"+47876560,./-&MhqgT9/0/V !',/5- p)O (}|{yxwvtsrqpw?,./,!pcJ(+1/V߯&*-/5-Įn.N ,~}{zywvusrry;)-/.+(ǫn[; %00/Uܯ!%'(*,./5-i#8Q"5~}|zyxwvtsrqonmmt4&,/,(OӯiP&.0/Uڮ%*,-../8,,-*h (;P ' 9~}|zyxvwwutsrpommv1 %+/.,$$ ް}a=)00/ U٬'-/:0-"!! Ǯk!*!=P"*#:~}{zyxvsx|yxvusrqqy1 %+/-+7߉ sS' "/0/ T׫(-/.$=R4959(#+!=O"*#:|{zxwvuL&'&)&+/.,'vgf@ +0/ Tԩ(-/1C¹9$',!9#(+,,-."rpnlkjhhn;,.//-.+`."*/0/ Q̾ɠ(-/G\wb&,/.*&"gI"*%8wvrsw%Bugedcba``e3)-/.--FH)!'-0/ Qʼȟ(-/FZ$%v^ #+..-+*'h~}H"*%8uuqru' &Dqedba`_^^d.&+.-00u9($).0/ T٩ #E WŰ {b"*.//..+ nM"*%8ttops'$*!Fodb`agfdck-%+-/-qߎ}2(',/0//L%'4798&Yx '24+nR"*./+.%`|om{A #*%7srnor'&,#Fmbaa]TRQQW(%*-/G0e0**.0/$,&(n)@$+./).)#%+%7qqlmp'&,#Ela`gQ &*05,T0+,/0/0* 'm*8$(,/''!$(-&7poklo&&,#Dj`^fP $(..֐+J1--/0/.,*'4g#67 !$&'),./'-+('&'),.&6nmikm&&,$Ci^]dO!%''(,,i*E3/.00..-,8e (:4$),--../..-, -./&6mmijl&&,$Ch]\cN%*,+--RTB40/00/ <Ļo!* >7%,/&8vvstw)&,#FoedlU(-.//GC620//*2[YQNLLKKJS5#+)3TOHFI#&,/,0B=756',*4>612+ ),00@ʷ F73110/1+  $'+1+&)-/0+ %)-1( %)-0=Ĕ L75100/.,($#"$'*-/.+($"#$'+./.,'$#"$(+./-*&$"#%(,.>{|uolkk} W87200.-,**)**+-.//-,*,-./.-,*,-//.-+**))--A l mngb__^`ހh9831//./././ .-,/.I ` a_VRQQTRg=9510/.-0.XS TPHDCCGIMJ8720/--0/nE FF@:6558>>`d9841/.-/.6}:9;;3,*((*13@E7620/--0+MP. /-& !),Ve8641/ .-.-2u,+-,#  .uP4620../ .--.*O~-.-$ 8چE241/../ .-,-(=1-.-$  C~C121./ .-,,'6th-.-$  DЂI//0.-../ .,,*%6r -.-$  8Y3*-../ .-+*%%@-.-$  nˀ {H,')+,--./ --+($!.]-.-$ < M-""%(+,-../.-,+'"/\T-.-$ =ր zO0 #%$!1Vl-.-$ VͰ{fVIB@AHTeyʗM -.-$ ,V]0-.-$   $%"-.-$ -.-$ -.-$ -.-$ -.-$ -.-$ -.-$ -.-$ t8mk@#?a̹fC&J꾉P!<ьD >Gw(8CAN9F)p0Av'CXo h6Tl6a7%A5a#?}#>k4Pj&-DHghղʞgGf,B$g1Mh ;y;\0 ;1X|.c.K_~ f}:On&7hz.<7E-9q~4ܗ>2|Ƅ;C{ڶJ7[{ó_<ic08 jP ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cOQ2R \ PXX`XX`XX`XXXPPXdKakadu-v5.2.1 4^s↡ ѵË;)mTr/A;c"r#Y D9vPIvշt︯DR_%-a06Aj)H,UPQ't8e`hNAj&Y ǎ_7pcJZ Z)BhsWlk' =.`>4@ۏnћٽO[zYCA1t7w>l 5B@?4`2UPq O#~ilU%qeȉepeb%[x7݌oM,".p :Ԣ%K8f<]C9t]Љ&hZ6H{o]r;h=.р9B}=rp''qەβ006ķ ~W/1Z%!=7Nm646,F+H5iǥNea(nQ>u!"{4[-ʉ8ǝc"?4h>*_nj ץ^ <Vs>#V ,'CSO a5Bɬak{ƂJ+WM?3r.+A]Fc{qk=.Hr{ o4a3p[1!:= a^fnI}}xש$aDI}bќ}$$U"s}o1Z+:-SpA[*n˳#{IVrTe?@6ӉϜ <,F~`QfʓN;4aNԓg";,Lmڇ)A=FzȬ!I( +" 2mUܯp tV] %y^hMk鼱^$rE]feMH/7@fUomqe+T& y;|Xsُ/[+jg}؈@sfN$o&o[H@{tLc򔢑b]jYrum!%So*Dp2}/o? XTJk7H% F/&X3)mv{>5ༀ=yd99o&zD +Jfma8AZ+ MXc+WǤ&T%C[M;r ١1#-iv[߃cuj6΄2tþ:GK;.M"Ç e?y!аaCv,LnLiY92eR61~+}>+q}p"Wd`5~2baӜDGF4{ AKםlDX'a[Ϊcwn8ؖUj^lw>oJuH:㛻zz=uTFJۃA+; "׳&f*B!mPBn+ #. &+9УIPʯb\{ǧ{B.`Imqw$8g/GxwyA=y"?GzCKPl^(N=d} ?,K),}s% `>QߵAr!7?4I2tE 7ԉdRW֋rw+X|Dƪ Af}!{yh5"O\"*ZF3+i3f|!1^=Y/Cb|}G_ңu7[ 6 l,y}>0mQ9G+*F>R@+蔉ͺ i( [CM"sE͈q5FtKOZ(7x5("qbBjTKJfEıEm3+R6s`F\!/ > tyt>d-c"S˵c^}cyXἓ;`)nFNʏ n X a90x,iA3h1jNtHci3 `*tQjwG]|Hh3aR7h4qeed7vpIN|&2:=t'@zR}TmESn?: Ox_m$PK,^,>.z,8B bjI|/\O|cE"ݩ&p6$V z4~(:Bub'X"P@Ld8;kqܚ=Ym/;}bRk]QB q[v%)I/ǒ.1– ?*dSmk;X6HΖ8q:x Aḛ&vĝ"47yof?qf$*nv)9Mom~o181MA\(.}ɢqdiw>YGpY&> rܱCe+԰8^aZ"Y!\<16+k30-R7p{z~lt ]/hjB`ދgfeA?J + @w,CK)~X#n*;hg"8|ID, 3,ƅD`wMϦ'sMl8 70t^>6jh( ê7bBh׊CErj;h Kdk VG9"ֲA%5cezY@7q&7s)LϦG@SoZ~"O{|OPVpxRGm٥ ]/,dŘ (gYrb?,qe3l$HbD>J_nM1K9~Ϫosc&vނWFUsȇ_+GT<<3žƮu5WIJ9F6L"%Geo8f2(qDΖny}zkqMe-}ABڀib8Nْ-/:g;/z'V`)ui:@r"? W_;`P(A XWh<Y fmiTZ^;ֿ.Fvʈ;dez,Jx)-|8"'H)[>Y@ Yŗ׍ 1Rf]9%3C4 ٚZ5zAQ+jFQM.n"YCa6Wm3ቮ)cL9e9B"& 2=fU89"@xlA)pF?EP!^ dX{?=|k(g^lܳͣmj+0W5ty23nዽG[}a;$b, I6k9f6}/aϰ&hov@5b P^oJL\{wl%¦nו4 F.WsPI7G| 3PDA>K6*[߹'H9F}X#+-dcu矂gXR(]hk $[e|G6/z7F58+ؗ?TjZTy*ZyƛLWsdx2fKaoǥ;H؆,bY~K_VмrӬ3}u )ˁ*U Sժk? xHvHAYZ0_ Įc慗TF;P5Q #9~hVSkV5x.C tanFq*Evό'G ;p]^`9qVDK;g3qϼߨS *I7MYL 64$e(@E1EwP`sˣJ[WD*S 5,7LCC߯8&#jvq6T{ΧN!r/ b$?Zj,Sa6UjsL%^~kԬǰ]džIWF_x ֵFkȚT¿m{ꊄsrӽ) S \uXXǿM1nD.w||^.O -H> f uaw7u]KwY QtN]7bOl/ Y6J]0;go'9YDKy'l:TsC 6HPH0[=Ї5 } v )2$f$>^K&F*H(lF Ɋ4>}ߞFzBFVd/pVl 7pl Jᛆ:9 ,Zڻ[DkM$Bë|+bM֕qՍ[ VU^"(t 1.w3 %yНj´gW$ڶ#*$MKړ$/=xKE>zdqޗ?KEt&L<ك]aWkBg눁DLƥ4%dcUs w\!ө@/0G ~]/'Ⱥrqǹ~aqE.魊 kiX; /3[gY7Q+˽g5gm;)}Lv*cu,Htl+0~xEIH/Zkxsh}TQScX$O\c/l|vȵ[B:W9Tt2> Ia(ʟ" ZTCg)cД3TX/u} @Y|MX͏xQ>?FJUDӷ͊fm{NnJ  B֐ Ԅ4]Z\W`81r)%Өov Jn[2_LKΡ7"mB̬LUb-PŰ/s\"D EJQ g6W7 - >Yhڎi] яmTQ6H3| |}"KcϚc` (\wIj ? :ȓPʶXhC7%}u^}~|↪t~~F\̀^FWDh'58:ܕ`H̸[$F3ݯӈQ+h c?J,fڥP~9 >T|]J m(g K:߽aN(w" O;Ƶ0@qpJƇ_,tGTTT 6\YMf WKTŽ9J Uy "8U\VJE;.⩏'Jʜm}*K.,gROYnTl}u?. ^4Uo *q{- _LekeNu;^׀TO?4WAыN@ԝx>b βm {@0Ӱ_D>0M2ZL1~j(*_1N3YoSվ/M,sA$ZS܅6E3@ܨUԪFvi- 3Xף=M7lSLvE:^JҮV`1:$rPS6] ˙G^{h!$0A&Vk#8:SU[1cx*O$MaWA[;`^D‡AdгLtYHճƂBR]C(U^+ͳSC9;S;wM@ȪSnbj8՜RPĆ(\O㔍BdK7[Z +' ژq#oO,\xJzSβdIn013y umbȶh#r# Drn!;% zѲ9S[ u-qTҠx#8 :^]Ya/0 ѹ5s4sFJMWzK0$hͦlH$Mj1Ӌ8sݫ^lv k;<p낆i}20͟? t}G>~DYjD)/R6l>*Gdda7We1=:_%^8)$T>s|c Sݲ26(?^q^,1S{ìǷ$V<0{Y%͵%:JXQaQFZ3~rI0q#7)c. mqX|*qzb:/ɦujo۞.˛|7_1rIQR5>i9ڭy}έ9}EΪ)Nb tG~hZ)ܨA{Ϣ-r~7,=D]u` }K}T1ھIb|:g>|9A_JoHj1hAIO9n%_pU;P2H60F_ۤ=lIlcMðBأ)B8HB>d%sGj5*hSL.K up>S?]G1(̇,qy/Wd_Q0}7GWn|#3ڨɿj3ߘJoe<`;W )jjMnk%s[3'VZxaEPPYG2tx$vZ(#eA.9CJѽ !`Hߟ5BxDwK+.#p# dP0$[r[=v( *?A!)uTYcs^pX/TmBmK :y4T90ޭ2#Jm\-^:. ^VX;>ֈU y[:vƤZ8;Epl2,Ba WnyH;,[BÈu|ȧ S ZR@Azg>'S,&j==)ᤥ3 o$A(Gr֞~~zPaC-]k%{3,t2tJ7JQ0L8@|GLG`mW.WiA:9UM-*I^YU?"ffd $T`1۫`J2<*BL[2,D9R"'v0dtme<:{S`߹Wg808R.϶)blY^G-aKɱ1-VAlE3s%$x4-1|pMDw<)R5!)ȓ'n EB}aC(XRLUV.T[?GTNN:#\bgY>rO@@۳|ҭ4} }e(iǮPd>2gc`dNq V0B޲Q&FT8S)0#gJvC(Nѫ/[@ʼnZۅz},RsG" ҐѿnT:g*wd[cPT]^K48ΒE3G;y((]}GE PGYlQ@ϐ;sW N;+^HiLz@:(?^/jmwUeC?kj"w+Q"ޑfejNpFO}JL|{9i= eIh74HM-%ooL=/]G?4G WE%nŏ݈}Fw]ZfO h0A;l0#[ RvC?F`YoeB9.`]Y@T|7z2nc#+yPe嚌V8v/>KN&Dc;oj>ic /CH;OM.5t'krmaup7gb0ccBJ|4K2wBiD 'tiMG eᴁw9Yؙq![j"nX'?Wegus>Tʨ%Tm"z-XaW)<#Ҩј Edז|j<`0rbhelI+ώ VXַE53zWJ+؄d&X ?m. u^QZDu+ZʩUK<뢑"eFnc+?\uي25)I$TXqan#P.(Ujb@h;<p%J~$x\-~/g1_uGֻppoa '\`qY:]}n D[ 7 by>X(Iݳq c]@tr҉7",&+D .$pww(/F-^:U^Ryn_)PE5Ƙ niղ=7ֽ(3y} qtzrmaG 6 +՛VW*eQh];7 )3m8+2[ _MWYID(ѕT;Z/0ol 9 @ aPV@ C@R );rwu0(U7ȻI^zQ~_c%?xnrm݇szna/᥶4?oT.9`oe.UgjXRf嗟ΖoM.:Uهp MՃ'wK?7v7qϦ9 1>ǂy9jgsSfO +g!  ۿUJfNN"c+1(] z }}"-rJu 3vDغ$򩪚} $2([È`o?%p.!.!:NlF< gt_zV.y=ugJEhKܴ i p#~E@ c A*Bx);O))BJaǁ[5GLp8_>s%~Y,th}=O!/,}c$rQ(g++$jp ^ݮ6Aek[ҍ&@ 5n9NA:=l\Vj̱LdH^cA˦haHƟW^i"%Bт4 = ѝ2(Mw/B,O硜*EScoIR 4+O`A Xw=yy$piHf{UT2,3Q13JMF)C!5\>D|lЖ9sAlΒ@u4:#nz)?/a}KbhZ\)UעڀYX bwa#슡rX/f)uF]epi<F;зu {>bcdT%|MSt)ư(`2/YDB"gEAK(Zڛ3A ƥy>PKMO.ٔ% {M XVH (>43 :g@xل'楍k3ٌXЮJ ﺂD'w-s+JY;N-ҝr( OxoE6k&\A痭1>}DܗݷuSjUKw@ U|WS-HUƞ")8''l[0 .@-%DWT87×+s=>|*V0q*$ѝZtƎX<-]zUPzN*D} u3&\UѤOe.@Y:Ȃz#C2T>mxX*!l|h[O)XȉA[Z$YAHZ2V jjvwuUZ,|E6T7նF/~t^oUQܭ:ڢ3Fyy'mebLDEl]̘ `"T3JOkՇ +[[h^_MEwTch<|nT.4tيTse Ä?U["}dpr^SF"4&^9`!7^dUI 2gI| zN|!>pNFz% ܌Sx(iIۯ{!*l4ѽ=t(6(m#ck <0 D3 saJ\nV,0:;mکҚ4)H+EGV 1F6C-6Qf C (Ksww2~F׸ i׈tX ّX"7VYBhխ^" c3ޭdW$fV ) 7N;]ݜdwKS]g-zOj/"涢n BOvmBpKݠVؘٙCg2<wF'ZQǼJ;wÅ!ꘃ|,VJLJ=O7[Խ\:hJ 8pGm{dHe_OnwcU O?Ng7q ܂j @}_ve$m33 ֔}y}{W7hV x| 1́hM4wjЄO5[Mz6b9愃oC_%󯽹;|;a.7 +C+Nw3 Ef3WAģ{pǍw[on+%E`vAJ Ch9afK"Qof Cȇȣ!N6LuR4q^(ymSUe6<ڣL,q:Y"eb.@U.r?dh(@V;q[s۝6(c'yOfPGc^"L˲IE}B:Kѿj-Kq 2 (NZQa',s^aGm,@6Վ@5(6&f ff,UXl;n@BlLʽb4Էz$*_Vx1NЋ́ŭm?;%詛\N lv-tQ xh9m9鈭D(=Fq}!x! Cs,729HG2,ɸQ嵂PjGP#`3 8Ec79t{EYG/W> OO0Z*"FͫiIJM6]qdX8Qu)eۻB$PZavPPm00f $õb-ʦCt gTQͅ^{G: .8Z>)r Fhl`0EWm!.dp$WFNnX0cae}TC_HXpf_ 5 jVJ`ly؂ Jܿ&91xW#nQrQ+"p k)vR(zl#g0Fo_ jkU@ l C@ nHXD7Z7J0T/Ai혿ݖqWJvUMԜhwHc.UI]dXy;OGjf~휦X/MNx4QgZUҏ%?7$1ކn{;U( `Ti7g+!$W26hظ6Hs`l̻;*~{d)[^ϼ2%hVio4TǑl\#qndbA޾: Y{\[l߾ؗqy> R`$m obn  suc(JնߙOatNQaB,ڶwBS7sPޭ 5w3";>eׇMBj屇NG. ֪9UG*{^&ES J8{M\)pHٞtgc⑮9~o2L79 l,2'n#U毐IVc S>kN*ܩĽ}`}'WWB!lxYz)M>A7r1Xˊ&A)VTŮ넡T_/q L^dHYP$hVPBD>^S!iR[?H J3Rw7+Ii^tv>"5uNiqwBY8~4&qTmXk?j$ƹ,'= b@JZ>03TbFΠk&\%)Ij_~!8%Q>W$qS|(ٝ'qwZ*]@2AEj\qpz(XVW&˿Y yla5İX3ʐs!&qDK ǞpQx=5!gQJj6Z&U #pt]|s;';#pS+M_ů5[,l"v6]3=jX K8]!k C q\BtrL~f|u]kyAu' k$˒~ƉRbhd^{~@X( ،ƌ˵ Cf[4X|e;O쿭]Mqfv_gURJ 4zwܠ8`n6Ie mPJ<02WLΝ9W 2vN{h`()1a_WCP{wd UDmU5]SdL都df#N cKm$xfwESENR{WN7 {\V*yw\\nzRHz6ƞ%`xfNaXN٥<}H(Rkc( i5. Ɗ>w>Cٽ0BAqj*jRB4" `N/>9ȗ=p~a˜@氩@h'8NeLSX/r̞Ff@W7-D{oG#,䑕:4Sqɍ\6WJ+~*QX]]q 7} _6+gr[ܶ9@@ZCFZ'uvjĢNko^2}|y{q22r)~sZ|fɬfQ]x! NN76.-A[W@3kWC Z>c7ZPqcNEaXnUK5Ww e.8O"R6hhJvGIabeTs_n AB.y97:*s7MI$Qn$w׹y}A"I[OxMx~|QI>x?ҢcFqE P/=vw$0T~fa3je֊ )_ w4.  wE 'L 0g'!‹}]oDY`P`#͟d/ u3h۟4z>+W(\H:n< lRr$H]"àfYݔQhuTeJS8!+Rd<^#;vQS۬Zђqh7 9 .{̺;e e+w  aro<}syc ꔸ_mL0hp! |tomfZ=@`ٗѭOB ]!B}|xEՅ? {^dg=t|ܠBTc|˷^ݱG~>(cC/DzįGVI&Dt `UrMnZǬhw6_rg'q;Qd=y͑ŀ- :-D"Sr@J_GT$Y!j,W[ BnW1+);>? ==9=MDޑ0kK|In5< ~t 5v{Βu*a!*w P(hA{~ Oʇ@Wh(jd'ҡqU}r摡4AOA`6V.~` ܨvpƕ _ "_eZni8(Ȼ;\z–-e.qgP>w,071f^~|kz/ݤ4%[I:8݈$L1(^WetyRϳ-(ǂ7ν%ݟV|"cEllmf#A讗N\Oxn^{WԊņ~ױtjqϧ `/\EB@)t{)u DŽBܡm]7;zNgM:RÂ, m`Ps>RI(ކ+X/K1>ŶT4) YB$ Î-?+dA t|51Di%H^s8 #RBۂ/z5x6>hC3\V&{47ZZWZ%wQ f[Y7DȠ7BM9 *x; 7۰ɾNs Jߋ@)S|k` W wJ3=1E#\7vJ見a&xZ]䄭m=27El[V&C]/? dYV=Sy[ aKEelh<;3ܧyT8C,@L bx)Bͥ,d 8uwFҢ:c'~'(d̕m;ILwXw=z+ ^c EuS Y(!kܢ?}N% 34 Ҳp\N2x99ajuv@ -MLv bm|Lx*bhK#E LHw',.`1gOW&gL*daEh Qv!&6 Ak/SwOtri4\{:HS%*J&4*]jeGrA{>YlѠ閕 >LmC^r:go aC׻}wO'8ŘtVr2MSJ1`Q\k-!CVeh_,J;jYVx]8w]9(o!n: v 8? ΛG yV}o5Q1N6`6@O2N$gp/bY9'x7H)byG< D;r74- Hq 6y^v~P =F2\)m#ˡЬ@M?"+cw~."+'cP?>]:X>lͶG0!\eMms' PpCON:=gc(]ъfZE49X)@v|'pFSG.lr svkV=윉VYFq], cJewˁvuelaSsDM, OV@Q; q孫_MJf𘜭o\43O^MA{M%Q  ƿ/6Ҙ;"}W[uߴ@<Ѕ7 |FiQH*4ωK96Z ~~,XęJrr_E7W}, D/rc9}<&i:9$nPoxE- ey8{6E~0GD<ƛωy.~v )rDK`Rv [S䟀I OS` ޤTD I H`-o D,e) !1(X eFk>l89L 4 lg2Z{  8x'%>4Pb^6B'"TEl8MXD 8>FXUV%#g]y'Do]|iM:= //~t,dY]=_J9 D@9[YҤ{P9 oXhcM }i]u] O]8[ YZ/#~L-ЩbJ6 8lEg>cե?cMS3h$^/՟l qj_#wu@ce:Ci_=F37Bex~I)RM[PAT1=Ϲ%:PH>YlJߵ_F= >LmC4`L+@‰P(M `{9¤IڑUe~9zKxr$xR.X&A{>ɫ~W>.7=[1$A-D \az ~nSt(1ؔf5mn^B/뇇؎ / -o5%NRݯQI܃U)rt5:3qn![.`QCxkZs0D1Z?I9 A}RD~DZVե8*\N' ,l rG.23Sl=\EI6 q9nJ -UL%ɚy3^Eב9tHfsS`W;[=7#+8uHJ\컯nXqEepQ"{Z ]YdbU.mr|ߤL7*d>^#vD ]a,}!f:MU eU~Еׄ^7.='M* 2\ ]u\y9Jo!7/¸&QfqPv:a3OM\D2 =[}~J \-SP> tH?É u"yIQB[~zP f,OI1XAv-OZR ąXucf%2*P._c|0 }SR[1Eʹr[+`7j=jVj ? j8Kv!P1;K 7+G/T6As3V[?+Lhi#F +B;A+-tz>B$|쪘J$f6aWm03M7F'}{\Ǚ5OvtI9mẅ́dBgz.`eF,r[i&O^5\V_a#f[xooD{>j: ZJ0`!ZyY$9X. gup̃B?p4"oH/OOka?WkDAi{[3N:8h4P$'صxz7(ƕ $B\fu35;Z6M\Uϒe]*e#߅*xiIf~fNjA!0~]c9H|Y_wqO_Hk>Sv2)kow2us8_pG )CKb&.E2Hj:w\6lw+\OhZJ}s bȓ; d?d]Rʆoc:*)nbxl閊A4\&3]g޸AB:}qRN)IZ %Ӿ;EM$-T(*kX<yv?PV}8h;5w(SSkMc7GS;et.yȱgWSR!ɠq7 bPXlF!d? U?9nw'u/Li ⱁIKr;a-ϽEŮI[nК4HNjCSXYG8U}ҳ|Ȥ\>7_lm-D9g3ujsSJHKrG< $H!ks^ ,RUPc)ia}>cDgs**ѝ6=] }hQ;!/CYp|bɛnAuf,k_ICW#ALJ>\%?%Vl2|'m vbFǗ70IJ1 ˣxm;S捩]TCSFPY5GN 4$3:h IP;k|UNCѬ}yM$ۂBT)PT=X ̍SvTr晄ǰMBp<Ҕ#!]|WTh;Qt4)m.A(1~,UɨAmo-ۉ[ͳI TGX27 oIoTz,lЌ<\ޯ8$&PפPpN"zRyQ|Ho:w2!Mi5?pxNU857EL=3G8|Bk~/Pi0Rv I7iT._oQ2ߟqѾrI净]KT^V $HXD{ I;h`][a3'gid@PԻ o-ULH02%D~ |=P /Rgz|~Nn(ggml:A4OHtQIJSv-5 -|/4.;{QPd=E4uDחѨ5oVغv-T(UpB^Ryb_cnV\| /ϛs~V"& bőeQr7qn֣ }t[3g2.c: ]쓼?[V &F|bDvʼzr ?Cv7f Dց ;TY6[ 8U"Uh)pLiO$y|oi)1_:4P|߫yz&m S(BwMDd<Q!%Y]^{b%ObwwMf6JB,Z s*P@+B."&&dc&n9R375_o˅?~PDH}O'{T1N4IjF5ΒxqC6A4ҭ\]澤vL;0zpZ6: /o{9r}dZU;y,~2~خa|=O K=@o"%Yb.SQ0J27j( x~P%-4zqv9`@"[*%ȉL/" /,Y͒=ل!N:RFN,vƩpUxBsr uq6`K 㴨ׇ/ }[*% ho28msͼy6e!D7ю-B(>2W×Hq5R]z 7 kVJU6x~ .sn 4#4[DvõR߸ v)#c/$kLm9 v;,{x*gO>i/b%p%._T!/q8q99փel"x=k B !4=T}Ϙݝ O~ۓ{ %Ǒ2i u< qLк*>ºܿ)7bkp=7kr*p%?Y>J2}L_!${Env5S@62X DO6qx> 9lM˼@8~S"`\zkL 'h3e dDy?O5iV㎖_  !Q]kƬ8M0R՜9vxm&*o4M/a<,`Shw{d1Oj:['DI}Tq|y+&x& h m;ћrσ4ݺZWtLG*:gZ^ejZ@l0Bk\'B0GgUR`ڱ$M5Qf=HSPvtdF5~tcd| QV:m,u?8䥡$/b'p\_B0y;樕ۥIy2iFQAuˉ 0Ec+d%'ؐEuAi/c=ϡAߕ)3 +ȐTs^Eu~I`F!$KϓQɲY(>/fJB.9牰z +[ t^)߭\'p] ʮ#_//&OwcfR 8I4w++"H?/(w|7HmE*&DU7Y! rML\ܴ66w~e3aO)ݫ\fHw8UDT,8;DH6*9Qx 1Vh~S~1Jcޮ-H֕(VC<'گX/- "οΨS݅V6Ⱥl1ڢ yx]c$$%13Ϗ.BcO!_98]Os˵4t ÜG5`^82##ABGֳ/]B 56oM˭Ɓsl8+w1p`g>dɩXVN'6_ _CX3("s{ڭ+vA+V9=xD4OZM_I$LV{&2*gĵU&3k c҂M28=k1b߻QaߝL_L׍ .@ =[fCbc]4ih?cR8qweP [/dl, ɽu%:2blErHC@q"cx15[יZ Աyn,SE0T}{-fe=#+^}Ɉ8Y/]# ~ ,Ok M{'0_$NLD4T:4R |Љ) K)o!jN]aĶkǪrD|ۍ+xx/O(lo]DgԞVP55'RH\`i7Me@NW9W6(w7tǺywf!4}'[ ]Əim(aPrP-B~{q2B9]ڕfYdx]q#/I9KPȠg 0(P(/sӬԣ ]4"t3X4x:A jhC&5 BHh+ᝐ\d(S[FflC6Ƌ66AEfNf֬[<&8zh)`Ί\QaL"TRiwY)-b}5|ocE8!ʤ'lPfiy| d~nQ,@Dx$>]>8^&[eWk>kCe 0* UzrNY>ЈDF{tHE0CS|.F^}&V8&D̯ ,_4(6߈豴-('vj ռ96%dNA8Bz$q#hgEUt o?ɛ /{L13M_ 5t'`_.KIGȉwe3Z#w:*WϥGMwgb'*A= 2kBM4GvSI'ovYw[-0T?6B>1v=Z8R3Y%"2iV ;b/8I[Us;bI;?lNxh߀7[ČUB 7LJm㫨&by3 Z\/o1GDrh;O#!FB~BVCtsCdr֕eGѕ@h$ygH07<{ӧC j[HL,yL5'8_xUNӮ;>0 qYS?W %(ߡ!2!K!~+O$̿oQ_WUՕu7zY__50>-EN5pY,N,) Iɛ.5LdJ=@VW) I@*|ǩeo>{/y961k24F*'4bbC?ً=,R8}_< \@lY㧩"k8,sLXj!It:o,9B٣9=nA )ֲEO]*|$Fڂ5LNV$D̖!3n#*DwZ"u+@ M}lxzQ%T-d[R\`4 <;$[aR @ ;7xP̔̄f=|aTg6P'֭bNc0>B;wf_BJe ScjCuH`!ƶʷdIJ˝'`G9?^xsa p;$aXY&*[v!16aW Cou浢#P.>dA!Ĥ:,]+Rw<{̎Vi&hgsxP8ł0rC^SCӓw>+JN/͹5k= ,k뀤:5~kU"6ZM-R#}%yM g<:ŖΛP*-(I c?YOsNJiF3>%e,H: ]#oj{zфJw' L9<P. 'bWWPlb}L6bs#ֶ֢Ե*Y5A͝;i7qcLZ t9gz7\ڳ^J9j|&1Dl?Lmo#UȳmjD͐y|5dИN[%%74B}γHad܂o/govB]alɄ̶xr5n \&ᠫcwR]L30kNf[Swδz;ce¤^=}ck?jIT|mόyeyz%v4޾e]C1,fX ~+"O& . 3FȪɆWeCʚ)eVM!Ewz !~U-|p'bʃԞBG_5&`K#=[or SlN)ރtJ 9(Kt`fz?#e,Y}xal|^h|vb|a ΢@ؒ(L@K@hM:]$^iWNl= Sg , -4ML",#.cƈ8X*J#mӋ*Ɲ0e;O~{e> $G;e WL[._'s& (Sd7@0#RpVDbŧP _bn%[;1DEF[vޓeź&`iXTzs"5265i E弪{lp3Z".kf-5-XDoG9zF6ۿ9ˏrBRԲ=Db RYp|=U~xd*̯ IJCA3X\=:.1a|O$8O9F1o[&1j80rQv=2I}I6K=ej^ 9WTށū- h-<lFb2{w/,Z~ >s q޷ͥPaŷ|"S-ѮV'Wm $4, b7͢riĘ9f S+:kzLTBS°M\nz]jޑwxdC9;dhZN&1G!`ݤ |D?Ai{_V.-un.wy2 }sKT˭'?X/wj]z:dz?z0qc1~}lc%W:[ V^Fl n$**K#j!oxpaM~ṊE!U;*$lـ[ PDxU8  40 б[&$:r(GMkN8Wk=!@Y$ RC:z2sJzhLt9E.X@w hɳE av7J̷GgP$L;T&E3Ƕ-*+ѓ—.=ˀ1_KXl~*PRV`~y(ăxSuqƜ7YR\8fN }'CdwkQD<%t!fFL\6 m5PV M~(iԽWf.5 SW]I[ࢳh0K{BgWO7HD-3hu2r)i\v%%V:era'¸xp3`d0(ֵhѰhbM(B}.poE=Qźaȭzj rkJ`U0R` wܖHhN ZMAuMQΕSzcz1wט_:)<(m`Zai&g~K,{0`pwv jDod/LlL!>yO?O] hsQ?*ME׷C3ј=M~kOh*qHX$JL%@Ϟ4{6 ⽎SPXފÌ%^r記~d(8}T(>Yl\\NӌX(WZPuU>qj,{9cGδ?xM&nNdfp N[`eO-h.N@^ .UZ@:-e94UA__$#?Lv3E",lB }11kН B_1if`?`I"n3)eTڥJ,Nw4p_iW!:pjljMx6˲F:UlM3it. /Kh.Eiwl@nRE #T䜍~OrAx"oN.ѽTG"<xvnQ2޽s6)㺠[*4Ր a$Ox)I8?:'á;%~Ƈ9Zbj֌j`Nc+>$;Y)ޤT2p(M;Q<I 'wM=K|\ܟ]ZROU%i%%}˫ 3CX6w0o? :Tm0ku8kc|ˢSc /WZSv 򇶺"XO+|:p/{0gÆMoUE*hiR a.q6({I E !l)Ŀ Eh/ d.dݛN20(Ίð0_Ht:&g@=\勺3EĤ?:/H2!utsxdc]-z4x07UE8`з P=/mWK9U[xK*C4&t5J_/o/tNMS뵹xˤ$H|2)€UAC* υ4i=3g_t{?yuTC^wxZs}b}U"g.pbcr)EYPMH!,Bh6:gMQZxHb^1mY Yu1iyxxD=[5t}FHpv,-C_)yF\ۗds6[I}tO*5BJVMϴ %mum+RO /ˢ8lʲ }v}718e UT)pFHnqcnrwB!'-2RdMiHgB\y1( %WY_48:ԡ%Bٞ^衎ӞOMI@7e8rΩ柹 x%K7`o9S>H fA;!K$;j@@MtQ(_ۗM1~J!ӕOltmgX4-pJc4ly_/iA6G[4:h9xqËLŤR)Aj*Zuz]ݥ1^3p6idoɷp^Q{;n9_(J'Zf`=n{+ VO2OEiZA,P!˴}3o&wiO4 ?:4*m'8T[R(唘X60vsxpf?_%G%WЃEʝoJ;D A8yW0$57}4xctZ݂2FHJ`c]e끛[j[u?R񱡥ѦfCD.L,qo](_5T@C:ߝYPH9 }VsL|8Chd@/̭5k5otmXӄMx3I@Q{ ꐢ ,Vy^fAأwI_i|dNSK(&r*84׏6Q6L(NI,7V' UFo Y"MPP#ݥo#fmJ3%)?ɱߔ d+ۄVUQr~ )(@"Adk6ZDEn[\6Yvݻot_^;cm՝WJ&:V80b۵q| 7NU4S{:xBIboqiqj |3O,c, VO]O@0LJ >! ːNch>.9-0Z;" XŤ¤5 df䋩ZIl3YJ 3r~7 H'ОP.I<8rwAs0$*p|~h-PCEnp= q9ƱQCG4n3f7%cyZ0؂'[[)9HE\̚8mgf9>[G:,\12=39ClC2/4HWY-}iKk:jvI˥@ !Y bv=NYj>~p!*DoN%N,,NghJ+T%ma8,.T2q~vsAɌk7l5Kt)rfC5>SESdUx'-ho62<4?uC#_>`DŽײ32&}-Q\^3돿֏Ot,Ѻ'fGލI] ڎe..qh2ivZg1=kjMȆ,p&Ui{?Ѝj,HFqa IluiGDJh$ Yl*33sԆ+YH7ewѱxIm@O9ө06SafV6i9Nm~9+iM1!6q_|ro^x&/VmXBQhX #R$oN D)q/w&N&lș?hFiб3RdueE@>]HY7U鍸,*8ٳհ~#sD֬[5x TD H>uJ* J?yeet˵o _yB!/:l5ug1'e.'ޓ9>6B`k:?OԴ{Ai#i\J|od3/j0$+ S0)g#\^]3D78:byEb3Mu txGRAOUq|̺o[廅qcm]L yK@;x&aϳM)SN[Y;:fFD;ZC傉ILoU3j`SͩT`_?׻6`^_R*WK,Crx_tQU# ~ķX~@.%n\[|d%>_1^{М'44;+N͞F`}( R\ NHە֬..Cm,?#e;{I ܓiSilURb+a+_P/iy0_Suh=dgeT4f$݉4!赫<㊦w8{s 륮5ue[m%X{_4֋%,R`1sj]]: cĤ f6`KwA/de{[:I>9u 'ޤA9$[[ܑ|?W]tutT?& K|/ 56N{Jit9{u`exgmW㇅r$IFCɚ|n+-U pFRq x(ׂ 9YpâY ''08NӬ)BJ{HI.zpks~ܒo]<]<{Ec(-IBm=Ut{fx<ߍdzmWseiFd4;WN2Nug ?2H"er:U-艡{ʥ݃b3`:5!'8 ؂5_a`o֌g?8f5ipblrho֣܋)}{:/0hx%FBWW4Ф 5QU\]Kb6NFxށAB=wyo,KZSVxAk f~2#zϐ6q_Q Af>SY^**&~wmH=LPN?]nIi^\85= g> ƀ6-J#7U/YέN̻]f) W,> _`lbᇪM#ʯA- ~(r9(Y8HfWbpԜt9bK?W-iG BIaSv,zv9ƯY#DnA^,o/(f #MgWtd\BVǫy[,֣Zl5^_pCt >.O04$΅(+!|ޡ꪿@TlBr)c ]UP8W$ A<^fe"uZ,$!txѫD4E& +r6VWWcYbBv1f&ʹ”ku]fm1 \[D|:A05|: lkޓ EOp[4oMvaɂ pɢzS i%)8jc7DM:95-z<-MlH&`L%;@Q  3525g7v$fٮ8jWe!=Bg%Cr9rv%(#DAb F;E]̛3-i |2Ec: ^cVc{%hM`EEL?#SbןNu\) moBs`݈w^l"Va\IIQ,^/>0jY߈W%1~"Ѿ.4:?ݺ' ~ b%q"2Hn>Cku~ΥtT+QKH;<7#C^mpRV69EྱU,UX(!,莟 X-|(gE-v\(%É!mr'7 D 3|lũܥ֯7FA!p`Zƹ| %?=bŌ/  ;{W dY0}>}0'm޻-hƊ]d W`c+ARxh;B-yQܭcWU>^Z0!K MN!q{Y;@updN[(DW#Lx}{=D"FUe[LŴEƒy!-}V."`vu_kMosm:Q6mhGbh߼$ԫv^N3PEW<O1ҧ BJnӰzSPq1Ϋ&b *<ecwN8OnRK:z.>Au4VcS03>}3/k,dT\њ_L-0nCڔs T;Gg].Yy0FvwI]K:EoFZz!{գBkɕa#~2˃϶8L)픩/7SW>3%>bX`#";="&̑)Q]w\T',^.7tgߨ_`D]?4Z5eH@[ 3̂i>Vrz"#";SU"n|I1zt&O@fȉU'vlGkKe $=1+:U*'oÄ7-dA̢}d})?iHXx, /B$bD YpB5,S\qԑ֙ɔ1;31.BiwF & Vsx;BuPbJpL##j+W|:;Ujc\زKF`} #krG8\^T\Sut EkR^|A<&9ekMpVyX?x1o. ՌEױxMZrđVIT .uꀕL9l\3POrv@_=.=¾h ö\/OHɈSk}44y`!c܃k fH nGyPfG~4fdߠ#"t*K@Ҩ=)b #l>fiXѓ,6r"ٶ_@NXЪٳck DZԊNFH_v4* )}3 ޮ(y[d1  ]r"'|p|EgP NBSrR{L P,ݿu\EK,^Z4o FbS~J\>NޣBf3޻%YmcHmuc'4n,I $f^(CnEގsA/D0` =o 0 "(ϷH ]@hݍYp@ۄ*8 GTEfyVx_,ﰹ6Gg"qmdNo:x28#D--Ӱ5h*g<~qoI1\^oN@-@'iKX Y/2J2Ov!nǿ*7$+͛nΖird,1O7Q{{܀Vݑ9LLE(%g_C@egmLv )/3$7PvRcﴑ0= 4sRzcva]Т_%=Sן!8MO,K?cI五vrk6 d~+HH0xl⣛8sfjpq1~#5}I/uN6xd5/$_5̖tYm4(6![`#IXox'8ebpn)(L(= W1M @?U5l՛(~*Fdq? ^oTb!>;)90xGO5Hs{ӉeR<_i=*,x7sLܣݥ$7E–YN.TdB?P=[<^$R_ە$녡 U 8F@~ OyA7mo6 ᄩG(T̚r{6;'SEL3`A/)"K=+<֯3acD䏍42=ijIVT%yR 8ߪ+(w,aR̠oʬuÅ|AkL(jp僃 /MC{#D"{afAJewbzfbD3I .K6 j:L*lkEP*@vp~]Dp,z}VX\VsHG ̯4b(#hI(3VF1BL2M_@?91R} [3,}0fȭ%>F%\ؔ0 ,_Q^FCk$Y^>i󍙗u &cUo/U^3o;3LE>b_!ɑE!\^8|N3)d+kk =Ώh+Zr@ȷ!i<8=̂ݷcZ2%孿}6>VX$r{Oѡ8Їd" >ڤNִg5 @E9*yz_وㅤ0 UA*_'SZȪD^A,"XWt]n:x7y1 }yiIe\c,i#9e%Ipˊjμܳaƚ^Yì ,fD.q66\$};AhIoD{r4%7K| uhnٽlOS#[#NNUSaMiXMag]q>RRZx@+'PIBU\Tna0ܙ)xDz5BxJ!M`Xg!I_^(xs~*侣%pv0=qm2aY IxQD00$1'AKl *Ojk!NjЦ'ups>Jzh]NҾS=O`D*t`C06NC4=;5]Kġ-!|:ƕF߆٫u.?BS1{g_tXy0,O N[{ĥ=CxT$dk{EV./c*5d%:V\i%^Bp.dUў7ѿ`lEB?!m E$J_ K^ s,&(y3ŕ#\„:'OsDIglcYÌmtzY.Bxׄ*+MjqxoN X(;芊yY'O NjEjy6~}EÑ%&)7ι]BMH{]fIũ HJ*1~VfHFQo |+ڢ7yʩBO=0V}d%d|ȐcL 6APY}*&سKQ_W[8$4l!reEN i'ӫѧ8J™ @a/Dl+DL.u8>{C͍xSi0\W'-L,( Z:rKNc1cսmŬ;_>;*LJP:pKatm.ܾ۞mtُe-jpV y1AM$2ɱ~L0 }X5G"nZGuHCJ>T6R|jMnn.jb Z@zJnC$Z˕);ʼnTͮP`Cx;;؍&b`s5@Aiipr{~[Aօl86ul_#48(^1@W#7#KU("rVtiV8 s9n&Ö]i|ë3ӗ N B6w(JRY ]kAW| +`)jL2SJ~W|CVŒm6F̓cud0Lu\GGm@+?'jye~*iރĉ0Hloah F6J9sf~S\ NA t491Uw]G*}DQܳ! Gl+@h-UjZ,$Gt`TьyD&}QnJȸH7yŶB F9|en61I&ՂR%D4p:RFyZ M'}V$Z!x5~z NkϦ#pƱ%7wAO0 )^jKɨ3f&چN_~n+x13Cb_] o6(<i3vj?4)8/4@Dnz*J}'6n7M}q)0wP#&*@^m4ԷwSZWT KNJǭ:+nh7yi y-G?3$H|&6QAES ;ld_mC1*kI]6p?>o+I۽L3v>?|,U4L NJcR7 ֫S%ӣ ÑN$y;մdS?T_gS/*2S1S~ U;Ⲛ/򁛉|>.H8B%XX %Ld//YƱЅmi2/|G0"aZK}xkQ,WnԦÔ`|NnK#<ˀ]yñ"!P 0_dXVW(7@cN~ '<\1o"BM* ֢ic098 jP ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cOQ2R \ PXX`XX`XX`XXXPPXdKakadu-v5.2.1 KB)B㑨? ((>kL+A¸=A'7A5^4_@CT~ZDwY"WQ 10p ﶑[ [d>O5N eU~.{נtxx,\ PERZWn#}S]vΊ,3x0i/WUS:8<SJ!:3j{S:1>l%%-Z$zϻPZ1^Ai>*9$;4}ƚoߺ/Q$#/;P}e/If$i]y=O3]BM.bxjl~=@+cc'[i.67Lb_Þ֨tQJ%J!" #4IyjP[!сy!(࠸xtO=Tԭ13Zځy.Z 5f꬀JZRg"ß,}ţTElaqThލ*cu[kfՍ>^SIA}uUA7iH1Gq念p[p͍FDfSNp"p 8̩In,inQ]{|K&/]Tj ckb#?ذ3CzKE_/X.r%2;~I ezү}Gy F|b$5?t @X:=dC]4ex$->Z7/ygR ”s4yWV/(6蟝l={9:rXOa[U#kOے^Lj쫐jx?VAClJ E*8#&NuES= nQ!tkb68W-ie>"W2]9,d!g"ž.hZ2}:@rh Hz?rd]cdpZq/{ v9GNpۧF=~~(+/nEIh?~S[czhR`_h}Y5'v@ßL̂T)s>o-֕#~R IJY4ׅA {f2X^_M61n>eÒ*1i! nx'kf0ar`o eIsw37><"hJ3E}sVѵϝZ6[(m4sCܜf#MK$zfn3`R'k&ˬѐٌ2yEd< uRg`>Q/(=dtOajN]++8)#Cm_qV6)lg`{HH%Պ5MTB{dfÃ!(DP5,vwx\kj #]ևg8VxpRl[Yޞ}vw]UDMf"S˵c^}aڇ'XGk"jygOt{szTS{5|NiPs "PlrAK o~`qEtlLrQ ݰߕ8mu^qDP{^ݖeܯ eoWJ)k0>PIAE ryPR}Th < ֱ6uګ5<`i]5 X(/z=+)͜w`N*0X(_?xAp>1_$HH^eł8=kScůS6 wLEpWe,tMPɅ:|hPHꋐ}p"pQ<9~,卿la'"[PgAyݥ"=P9EȡT6B2P Ju%1Vf=޿H&5W(̙n?&,0$RlaQwJ+RV~is+lEӹQt'y eF%>fTM0Š]&MV4]mK8܉.ړ3 7܌wT3qj*ar{XOR/w:)& +^AY~o81MRL}pa*$RϲïN^ĎUshć>. g1,Y2?( #aB}SB$;nC730-R5+H.=<}gZ փr|YR{;vWI5>˪#AeϊrY-|`- ďj5ݲRdw4\";3~"@1@~wMϦ'sMl8 70t^51VYя.Z Bb\z*5Z#jVsan?4wA;t87ǰ(¼&GQMrM%lZy]fϩISoZ~-_Xq7PMIRAESl3$]`Mo9ο)RZXGo=[cޒc =b얡yMmtB:eXMp^+Hos`<,U u)J &hrIe:(}Y@j#[\q?ޛga@b!t5Y&z/9%Q_d:A}?Gƌ3<>,E;13LL]%ļ`K"aDH˄pqyunV]R|hh hV?l08F41_ ?"2n]U/a[3j~ߜr:3Jm8 ,;iƖӠb AoTWaG76& *0[Iu[S76W* <# 0=3ljA\V~]29>ln!cl8:vW O= ;(zNOϗI4W+Cp)W2#[@gW0cH\I5E?Lu@6,*I[a` 1<{=[Mi5'B;c (׾+8@5jvWt hYFI*Yx.g`TվN Oyzm 5nȧGjD| L ŝQEj Թk3}XVib͕S1 ]/UŚ&+0 ކxrV$8zףS|\L_INNY)"귛D+5H| N|PSs'.cu8|T 3UW Bh%RDyƹܱke2Y}ӣ^iqZi \8o(wVz?qxEP)q'^X y-%62zVm\jlhHazܾ(*&;&CFc=a_I(g@$WAa/Ǵ;"q:\uxP Ks$8ٴF:2/O!Vb Ct {' '{P9SY4Z]kDXۭ[Kfks(kLui@(fq\wf)B3 U l+ zfEdnس+v^s[ϋO{b"r=hvmuv;*Y+nU<5P4Ozz͖q5+M3])637J%oʨƜ|\lE7!U2,w5ib5R% "m\n[q,BẸXdNA{]DŘQ3MB}`!T3Q @DUot >/ o@7l v )2lD c:s^/q 9lEgoLr N9uvP}ӳ"uvpydt&&=H wgqqy!y3Ȼ{D~2؛Y_P9D;^6QG:Am )^I$0 fX(?ܵhLF"TT i!*?v?HDzy$uz"{Adm}(K-W{+&`8 KT.ܦ_V&jz^K` Eg lt?:Ʋî];UB?nq}nTڐ(Y\b}^_Ga+ոk^aS#TH4j Z׊65%pŘ_+JՋ F7I*EVXBcgYI"Byf%/]TTmXA a8)exxz7xῇ:ݬ^d][ޚ$=>k'oIoI(d 2O.oϸf{T]ex&OxX,{"7{( &gɔj)%ZNp\`<܃g^aZ-dv<(h޺ 7HĭrfK ɠBx0ʷjn,bQBʇ'W닒?V.keAaX :@2Q1VcjWs7C&<0MUvAKa֍go`xh2 ߅S,I4@ͅ9l,XWF4"ߑs &)iٞNB ¹=Tz4 yJagx>(WV`(TOiOAb0vd#<@5Rbyai[7.5Eyr<hOMVh["e,> N YPpS>Un`vS&u`[+mG[r ϧ)"JKJ. eoA5nmpDorxDZTe}Dx蟔דn\gjy6tnVv; ٸ&ac˥&yhFd=El7'܌jB@g$mCk࿰ME_*oO'g?t(t5vB#U/J^2j-WiLtev}\SGmM4Hx +\۰ǶLZz[,Sw5tC'-3{"C _>z1f;dصC%̚ PWM=C]r;+gi0kk<Җ,a.^¤D f&!sԤX&.頦(iV%LSF=~(Nͬ|1mTS>>'U6.߉aYMtm<+Imn-$=[@twu 2F"Ʊ=qz<9H rr<1;;uI %#Tdyʧͅl̮C Ox0ꨒ<uxo3s.Iv;VMW" bãVSp)98JP~~=Å%Xp|#m\Ӄ͌@/7y/O0&>Y'5pǬЄR$&qL)P.RhJ@##:UX .6xiV Kqfw.uEF +/OZYB4-!``6nڿ*ZPyť y$\S_fmnIi0'@xBdˣRANY/"< [V'bpDeoy1r͔ZۆM݃_@Nj#/<c~3N{]H$Z3Xڬ`wUCYЫ7(L#jڵْC;\öd*|?cֺ zq !mcNj}r4.~0nR!c^VEۈ>!&I5#G+Jzϯ> = |,"7b҂Y 0u42֏T Ou ]; zBSPLjkkgUyN#5lͬ~v7S~d=;:-ZhqҤk=+dxG{Ǐ(Ђ)0d2D \O){DR=`2MYQmYڒ9ՃHREht$2}:{@yzÕ骋"v5蒓PsˢRW5Ȑ$h~$2Ȥo{,͈`BFK~$2|) RdA+e[@k[p[bІh$&Η379(根fwZUE8\Y{OVϺ(Q%C6p \Kjbӹ>o}iLB)Lry*4|Ox[Wa?D5h|*Eߪ" ;%ЄfB w(@MZ4w n>T|zZ&o(Ai^4v}M68[LR62'H-CV`t!Hcd;a*C6?ev&Mڿ"^眆}VwhmY.]v&>_Zl8mQ1 %?%&<`VX |<+yfgj wg7لc:l7"H pk 偍sFWt";jLt16|r'yoxOP{=ذR=RɔC@/0~oŇlsn2(sb$aN*Ӱ4 :KH;"f>=* ~Nt%|]ZD=$B%v͇k!=Cܮ3oͱbR'\) lHCy*u;*EO9wWc4ToT3eb'nS Z &|"\v/CcCK!m TІ|+`-S0#0`ĥ)i3ffDQ*|6!e/" l0CYm] u%1SVZCC&ݻwRm`_Pnvm^:Ӑds,6ҫ9SaA$Kg_(ϑ`DWp8DroѤ})92# G0d"k0Yջ<l3VaOC૟+/n+uq _*ѱF!m d[ ~b Nm2FI.9 n@|JW<[3"G(TT QO^!Kq Kt7QዑĭTmk/" m贜w㦹`XU!*҆-[FodnƕOZi_':,uu-uC2|Rln [\Py΃f˲m[+9CBշ՗V,ӫc!`~!7[*u$ĞjgN#9Ev!JKw!>)s $RDRb0KU;H7%zzJ eO״p5( }TFnJ:n^]),=| ^H632vY„,Wo8p*#ḅAz.ͩ=yŪ0M-m$${]TUY!޳ *fhHsG$q^YMrv3zI?*C B}-HF*k ]߸Pv4}G_'ˏiSVÇ-JWŚ+OSyk™XQPM-Wz' * A,^,{S9b#ȩ?ǂaV"aGMvSRh <3{aTk ஑4Cfcѐ%\12y#BFqW#p7k2{es!}K@ïcfgGSOU&}.e!|> "SbpOӀR^ s:9!-@5#-}my+òwexQ8rCNe`!_ Rϑ?_hd4 H6rJ""e%=#w ڜb16r| Nfpŭ$W+;,P.c`-}_+bay{9G-4grwTFu["Bi3$?ocۍ; vx $^9,2\AqZPPYw /nY$rKՔ вdlyU8* 9q Z8,ƻZ rUyKc ?i4D]?e"!B2>;?LbRTiyvQ>ZNU3\NH)Aj#5[ Yqe3 g ϱyZ$OcLȣ~cR`o(?{6ܺwO{ulk/:Ziӯf"ȁ t_({E*fJGi{~\.PMU4"B=j'c]h"U~? ̖ٔe2s677 oPl0$"YSukKL&U|;OaJP V&h@=P9F4prЪm79ޕ }Vd_Jն! ^WmնB0zA,Df.~qkD0,S nMt:Ҽ3}Pa5 X=žݠ_ɬ QѣrϓUR+Fi::GP&h >Yٌ2{Qd)!)|vTKQ[%Ȁ`0`[r!t֨gJEZ}v!FKŏi2PE3d $Uf~JGļ!݉Q1kpЗwd)2 TeIQCC%]۽s.MS-u['7$~T-b,.//ג!R%&b_yz+|tInPb[Y'ﶯ]mj =Ć{ZH&Mo$tCk:=l)Bݹ]a3ʫzV, 2^*na5j-`u= ɏhdȖΜ q^)\;¯Y=߯Z2NWY0y@t\6u>1@m MIE̟?Fƿ;BUq9_GUub.5N~D_y굈M& lĚ6k澕e|{VȄ:Bǂ< Hş57΁c6WGL!UqOԎ})+o/RThdR>Wf ~SQ>;K!G:%UqU*`qOnR&<:EcLT4\*(ֆ(Ž8)j:<6h-,UCs7lwáx6]7eϤ.7]Am_Z6g,d"`}t }({'Dh"xrӭz*g SjnizbBmIQShlbE0(IRŎ|Yu  g333k4qMHT3zyq $Yv!;l=mM -c%7[sk%9hIժ]e$Hi3kƧS&>K^ka.Q!J9M&O?7Uc9GaԬr Q Ɗ~QJ̽i0:-/5`;xsA񁊐MltF{']i=mr -Dld3+`uw2,OOءf38Z @5hPA*SCfQTïxU% ۥ_;2^G;NZ<3d V%s m*U5%{[H4G|]v]H)Q9: 87 +?k:xr%$ac+b`jzHjTJ3b `>Yr0*>aϰ14Yct!|̯wc~i !~w7"o a'n!?ē\]vHQ>TU'`#͎W<ń C+c&_tHRwW$K7sh^TK:[ =: GD/" ]K a_oKc `sSz 侼ȟh,o_b E2KXr~5m~j2lp~^dv׉{s'%DY,XDU+T1$doi= T+e;Q~zz"/In𿙉/ e\~:z#P)RB('V,*d~4hf zs8[}yQ#&Bض3]=<B_CxlTUrfnR}X:몋'n%T$96F<:BbWi@ {\Zsi/jmc)s闇=|4S^j4j`<^`iRqxJ(?|=R#ވ;s1yG}y#tnd1{ Bdۀ(Je3y&nlr(ŽNn\'O]A%fX Hs%+I(h'Ř5- VKx[qafH_*1*wDop8`g@=LNq&(S8]vo\E^,uz\OS>ɗ4 1j(7;E*0H&z@Aͭ+c6#B0>!`rq,0GHed Nɖמ^q)`Ec)ǐ߻ $qΡMf-AAm{wp_wuAFy9=\+ÿMCej(‚K>oN+ rDT܈6I~Q0;[$8nDaFYjxKMXSx!f~vi׵9#!ቯiHѫO`KIڄ.4Hn|~x\tN݉;Jݨ…*0Ց)Bט>>'&k&Bwk.V"SQ֓9dQZȄ_[@LJ{.gZf{r,y" i$`mؓ) i>~)Zuw/zatq)ZBB-ˁ`FhC?Q'iJTcXw*-e1yޅbLWʢ!#/͟KQk43IgBn6u;=b YIyσn$%I+jJz]*w nSr-"@x9,^OBc8y+JMmrBJ7B#,J (t\Dr{j>H|6Bn `|삏(zP0VA:ƺ?v99n3[/)4 >#RKB41Qv!W&﹙:vgU?vSU>9%j7&./ +.qrٰ>95@]`t4VnF*G\yE,3,$OlB_?I+Α(~ j"QHJS^T.x8Yo].x$m5*H_r ?LPǧ%.o]Tv=IrD C%ke5/,B"֨ 7[gZ|}Wˬ jYQ -dߐoL9Vnr`GX靥h)+6Pm4{_"! ;] O* {ewƠv&EȜ(5ۗ䍿k xdE]idYAvpnD]> -XE۲L=q=M4%jIPxf6t4nEt )!ְ_s KDVyB2JkuQ5e*Trnb&%#h#WPyjSvlޥS?qU?>:s$|T1&YoJGX 0IxʰE5(1ުD[qagKS0q9yz۹Hbf86^l EI0֨"F@bFڍV- +5k^$65oϒǿ1H\,I"aW~.9,.5@""x$Hڳ,yp^J+*qINxŒti0S-9ZjgW{نQA)~yIp ީm'`C7GYmA} M;".t/\t3y<S+rDҘZ!?uaCf\&\ 7P)kՎw݄_L$4+rމd5]tdf{mGX7Df)w-7ApTWv>az'04NcZ70i} rto0rE$/ 9f`i`_x "Yí w^W /\J[I _y!/qӮilcB_r$\xHT8xO)M.90 O, 2,ľGp);<'\} VWsԃ=M%8a3ɬR?˜; "4$4-nWI 8f5JT$Y/0y=h2 zEkq:Gi~w8L(z9r\G5֚7#AwHw]vA$UjN+9)c3(+*,^^FךV*h:9d~CtT<8خ0F6uyEx&Z+5gk&o 3\㒹3QwLLdQ:۳9]yҌiVi;G u>Ej}|7>noE#;!p~ǿWH6R kxlP!Uy{.vJ︰QK c9I+Lj wEU6˔*W g4X`< T85^Yukl#&mNϠ@RшL_lB{?ن. ?ܭgy%/Syl6 V@oV̚Y[v1 1K kD V朅 B'WNoak5/RlTl҄v'NH,ݮ[AFyy$'ۅ/emz’=^E!h`5o`Ն2+jr~aWviv;''9ݡS㟜&:~\GhQjO$ {w~1sY~8X.vT\)GLq :*@I3b<'rh4 R1MGqO.ʯMPjdj:@MEN|7шt=!ttp.VX:Q1Hvp ]m$~.0/Rȡr򥘌sV.0k5&Z7(pg#lHg٬9<2xoO d/6Rkm bOiZm*}ܠZDk.ƎM08`<\olZ5ʢ{j?`M3KipRKt|],=mFopˤ3O$l >$6ªHY(..7 ayU;=ud=iW$k߻(;ZӧTDa([0=YsD^ѣ_KdT~ "3~V (xf oK&0V?j7f[GH1<``:Euc:T|k)WSe< 6q7@i-T|LH G`zUch/(%T O֒Il` ɺvvA s|:\8A:qUlXRpv\fiҕ<_ܻSzb~-sp#eíGgZP=i+ڊQ kN;gE 2rp 뉇2v;j8_oxú/;{6zx ˪YEg1,J-[<qqj %ͲW̰X#Fu67lf.!gYT##KG$% ZNkr۽#JO$CDHU"nԜ틼`4>`5aWCO/_8>0櫩Tϰ' s-K5\8$]>,wg*MӃ;:tcu+Ix"R с{Wsw݄9{GɹMz oAœ_\Q1 ^i֧+/s`ck>(ӾWHPFpSx+(@ / E[5Wa }oڋ(IcE|IS4%yqY%*A1쨯 4o04܁EuᜇQ#ͪ*M0p40@=O:ETÆ-mA1-.n~9M"jl"Cw%옪nm6.S-vk1o 6Ѕ;%+$LƸklm`yb.Os-90L^F !kv]5q+h\x՚ 5czuH+UȚw{YZ*@сY8sm>Kᒌ.5f.78TwLJwl 4.Q@xRnJֱJ3j%gښ%O%q@[3j]K?Qr/2}2L= u,5mO3#bܕn=yRIOB9 Pޒ  aÐ*'8kn[ӠPmZ%8DԷt/xA[h?xpx$p'A&|`6X#.9\#9h0`WmO]YmEyeIui:?$L1mQeOM'ճslWoyC= d 8WLu(FC-9 ψ+ԪJ${l-nc,]-v@ %f\ueqe,* Ot' cNSLBI+mFU(ɎYEKN|a#qGjx^ n6-2x$Xt"H, jR3:]/>Pkr̉9Ij|Xc1RO<1@v 9, !sĕR6Ҝ3Bta;l۳j:FZAp~k!? ˚6oNΡ84w Z3"3Ӆgkwº1\em{ZBI25|jr'cf^eOKo3KǨ}dQ&&3d3W|5_OWjQf|HPst̍Mf^)gMɰOf *&>H@ta]fd]|k(9-`Lj~@rW `\TĂL_]ڇp?]&6cUzHhr6w]bZ9 J65*.F3[u]~`nZ=+P`M#tf2KC-G52^yNVf6r#YemX' Bx}ŦG&[]I#n*uQ:Fran{*D؄S@Ӧt~_ƙyy Q8!gX Ȩ^󤎖Y*xO.ݽWۙ߮% Jzza.!G`q|,!Jޣ scE1D A Եς z, ۴/cYPՂHJnd_ج)>JnsSb#R1;j\9@fZfXl#@6VGxK]']35t69N+)dn'uH0$7\6V|*@?lEjgՊs-KR!5 _}!sb*HF#'!IǀpAы}ԩ>]LSf%)('ɿsbbZ%2(ޡq˟~UxBKC? IT3&k<@NHBOEJ1IZDcS(-H'aQ!{mt +/g|ӲL!a`XA ٥1L’G2l7 Lyhg=4ի5?]R)]8rQ >ܖˣ0㿷/DzЂ%*%ƶ\Kc҉HI) }Dwu 5<Wj_ oBV=7&U:+c\!%[yڋ)Nkȑ QxƣSIL&(G]fpy:!Gs.CgR;菸3:Zw4fP:QHe &JaIփl TUd`V۵HqJJO}sH£*`S(|G.[: +Cv_G&4Ƹ#H?`!4^{ &e'L9B”lPώտ|pIN`(ōSKPȓXMaCFD_JÔ p>?AT|"ŰZv<"%PeJ 㜑?:74qC3A9v:_Oc6dS?O6B]_Ώ9fqKpC7^@ j0ӹ– y<]Q`yu(C6dHdjp~)qI@5zR;͞+"A1Բ̟p|$CyZ۩=v֪mB3D|~(PN?a)~=UsZ(1u笟fn÷xtd m1-S!|&Hꅬ.m 9U1 ,ƿ*((qpTq'd$)\ouVd h~:4E-[ ֈFwzݪcfWۼčfL/*1xG0H/S#M8UxK&T)m%P&M4;|||{e{`.wx=wUQR9jӉCHӾ;oG.AAL]MË?]VCʈd˚o[+jؑ:ߥ:`BTFwj苴5Ms+ v1?瞞) \ρ/' PԪ]_ Fuީk+d%ͺP'}wx w\lפm@3/Z #q}bL}w{5qPb(L!{CSu]Ng&W4˶aB؟̫%R>^ O>sV8dgT`sɓ#򜢟,ΌQ!TTXjGܟR^Q`_28== 36QښYAvj pEd.ADPr oj`E@|;yS1  9Pw ?LɜQ,$aKVOӱX(焂TK, DAA +uSKO?Zkd*b/LQpEH1>åFs$x E월ԣ~:]oazq]Su5U}|ΈN:٫Ɓ>$_AJ욪gfkA & 1aM +%gE0KI/۝:OX5yd:BJˢw >žv.^MYzG8vxP@l9cpU20 b' | ؇pUVFWL4 v{&EA1)ur7')F=q*diM8?txs,aH0ht%`v!i=Y zx[7*,~A#U]S8h xXkEmyvh]+YV3(Љ3{*XLMr?nH6p6N"0V0cJ/.zMBI)lL1mkÅEp>yeAP!8U\}?ޜ$6▋(j58/Wic 0-=6 A&>T&'tCMa13s cKl>:u4dC_ޑkuAJ{@j[Fy[4VUǁՋ7p{f}BzSQ6BՀ#Jv6+UIÀp}H'oCԄwBt $Yv&`}AB'wφ&q4kܙhoH$ڶP:``P8 &1&bF9VŠ?t[x ۩éݴ;(F ^S9KwHht/ZYFDNFH+ev AhŪzc?_i ?:Ȓ= q*%@)@i#6 m5m;JoĖӤ2oE U50T;$_RsYaT@CU-C)TlYSW:?9TʹUMװg+.XX ]DžrAeu& qpYCIt~g ޅFGx})z56 :/h(B7or|RtX>5B[);M-D&*"):7ʕJ_>vb$5HS'm"Dq&TxI)?6?Mf {T$p+򜡥,CR}հa䵳Їb5j`fmΏ4>x QVn8ߑN=,ofiuBfx$i%b/>D'F~t`$wW?% :{x [ѽ9k`[3|n2 tH{ʜzc^*3g~@y02cOG|8]tX5?UK&~U/5/᪝Õ֣w/ [`&`&Xjxe2V""ltv7SUbAbz$ө#?)m9j0EFRC<ݯ0iFx͈W혤|W ;+fEY*ުxϡ P3Pbb;{$V/%l՜ٷ"%S͸kQ-Z ouRv`M5 ϴ1Ҳ=O ؘWn@4#5Һ5}DP_k[y*&Ɍ£ :u$bG'ſ%pAHHc?Rnp?AtPcuv3cE. tt m1YӰbւo 7-(15hh$BV{tI",rKɥlMxҪЅ"wRGUO{u0gvȘjeKyg`Jtp] ʼnU*s}[.Ik4+38k#0QZW)_b|\Eӯ8,Hra\~րO|AQ&3{+(!*GĦ\.xhŏ{Ͳ$en aq%4Eg3U Hx+],eo;.%@uqO'L)Nbla%>܅,/( Јy@=aE5F%ngi-&,n͹(B1J0#OcenE '_ )Rp-) o~rsF=#nL K921|i Wg&u+ q5gʤuE/{a0&JԜXf8oA>c\*# Ez,pB,s0 x\n@7vzleF >Wjֳ0w.d?e@[/Ec(": S#A>eO2^G|g{2UB=~ Kd@VM$()v}w!\WaBi=D)wk<:+{R֘;$,GjSsE0(ť , *p/PȰ@+7`}V糄T)ѓxd1,Bsie:b % 9IoԢjdz?f$ (nIײT/CԜgl(9CWx]U…8 E+`{!XȬb`q.&=`aEvHt^wp=:YUD)]?cDimϔw ( \@r#Ch$m^ߵn|x7>XRoqa9ְ#oN{cR%, y@zͬ `yE1%r>8 GR)Y0`)} [p cCV1t[}3ѭ݀;[€=gYr +~)a7Z~D2e؎K%{?;w|xDӉK݄襞.fÐBzv/ a<}]o.v{:M}]Lϫuy:XװiH%~ vpR!~RzK r@:F<fxiB ^ _X{&zsN|r1ʫ#yX`p&Xҗev:L}g٢[a|JnuޅaЩ4EQ7Vp*zm<ͅCs4o`(i!rDX֯˲6>GI-e41rF?.QyH"! "iU.+|~v{kpI;&.7Rއ 2htڀVRQQBönO5Q)k ݠ+a 0 mI3 X]絒yHp|.K <[ "FB c,"a`/\4h=ڭ q9B>sPKI3Jת,LUK2Nz@5X,Dpqs!S\Z@=rI;IZ-̡Hyϴ*n13{} {kh,UE!ݎVed$- GS,y17m~`{_:J=Le: > ~7pa=g/%"0Y 89(G+VgWN "_+pV] 45fkuNjvۑ iOna1ИC*[}f]4+/h)cf Ol05UOO>q=wH7^5OѱP?x6s] H|z Q$L&L^۠qڗ?Hgf̼EZfj' tTA ^t:BYu&| ;Pb ߉Q%d dZ۴&w,(,:/S<}0:6#uGB%}'gV!-M!0RVmkbi 3[f4XŷX'lr骽[Eص@\@t:Ԙ֧`X1(k-͟S&e2}Dnj: D]#-i;L`o  /$ yi{d1g?aj\^u$u"\Y"0>@#HŐ,>06Z3'kF-"oDz;uHXA9EeJID_0ߌ,e)8V Нi&( dl+[|ѣլV7|z5ɝ) Ik@~N@Ev=[2 k5l zM8YG_7b']xܼ%\U_Ő*dr[GFq$7?5Gʺt3Uɣ]F-0ڏ{k7OeU $fMLOلi\_ ^P H `8<~̙NTc y/<_ ˿@H8:S pTA*®8b;(\ep AE@FKtD %/iKFucv m Mtg{ *OKҺ3 +!nI>gu:;LRW4m/Ē؍S3\EEs-owXE -Ӌn4g`iyv5/:6DN?ч ]IjKn/aD>JD~4+?Lle@E?HN6磟TU 㭦6:O7y]9'vɁ p:~3Q[ѵA+U2 qB,.?e ᎔:>t\n_m'ԒDiJ:)d@ɽ%ѓ+(>7 zʾ"(C!` v=cxu*%N~ '68G~MoM$<-`WnT'el M Q_UYsGԔ7 6|x˸ln2eUм˗f@A)8+خr߃kZeÊ?b71C8DP ]p;zmk6}!: {n քUvZtgW%CkQ`.A8c!"w?ɕldYQ8/> ,3>D-~'Nive$|umҎH@N~LzYu w'N,oM,"F()j}Jl;烺ajͤ&R&F\h_+x;{83rWKۦDftՁc,<rPo gxdo +v)N3E넴M> T|v!uv ޠ6T4b蹥{SL @ӤK?t9 4*B ˫{I!׌T0{(K?Fk9FѢI/Ri l\:v\23]]_ d*Qz͗Lmou2SJMT4#D脦Ӯ% XiBtMW'G!r(ܬE 𶱲zWeWٟ8jr> Th"$S} mPr#:Ft>LFclPn4zoWk1sh2 zaQ =-tpH@3-h6gz ,;E7Ee,^VqaV4S+Qh0})%/q楉.߶DA\4gP!K_ e/T^-zj]0 w%?*VQκűgY&~Zdޓ P_*1;#>>n.i`]Vb樯Fdز\>$}RM:ȁHd(ӃR4=_W#xG9 ԺS.jhcNG[ ~#q%)3>cGp9~j|2#v/(iT( m6f~8TjޞG إr:Ƭz menD{t3_JO:5gnX#ep&}}QOl7^ F4]! zVhN߆:DŞU2<*rͮSw莛lTM&䝺àk3ΠCx"&#ԡsY\`k^I{Ol|Ȍ2=AwC u9L%L22A/tCU[8|ƓRCmݾuR Lbt1FxzEHL^p{>wLDGC-ПNzҒ_Гd ͺ؝ B 6IY+H''*\Lځ.+,kڍU'e_itF. ,ex&3$T&P]/s*73X_̑VVV\mJkFMcȸbY&Aå _L}%Ċi DŽUI։~\T (4s]b3wU0Ÿ{,$wc&?+b* bvޭ0X'=K#wLMDMxe'=6+ Ŀ|Zݕ$.ǭ+KDޝu-izmei-19'= K>a5-QD}&k#!tG% k:?A*{ɏkGIrd;GlqjPUѵ> F ~up m^ZIW襣F€  nkXXA`vKI\3Q(}Nyޖxo^0j'N%+2Wb_$kh$~S"oiz%t+2UwEQYD\Dsnofc5X[汯~P@ *T;ôNqs]D$IU(R dlb/GլY4Gd_ OVcmUkۦdḙaKLOԔ@D5QD¸>fqIن%.Ӫ xyg =9/'"n JtKQFQ5:k"qsuɊB 4`K܄XvF!VUN)3lcQ R+Fy1=tET%h 뫩ƉOĖ&d~LF7g9&B)\ 챃+~/ v'zoJՙOƴadJ{jLXny5`y:|nɠ,?/ R`L Ն"e@42 ǀ` ᘶ/ѕBh[3)EtݸLX oqJ"F{X&'<*D; %֓$.?)32|eA1 ] oLvԖOo%m77dphT*_iYO"1t@ZB ~y5 @~I5/e۰o#S34UW]^,?MĈH 0tZ*0&QWI\Wn!fy Ji_К[YyW:6o 'ƓV>nE,zfAg9:S#R5 V#1`Ѽ;@~VG ZGlFBqYX^|ڬ^A"X'LS$[&R2ճo`N vݕ|`l VVd\ՍJK.[JAd&@"M{>4`lфjPW*M&X-;qtsFUj륰5~o-C&@Pyte8_0}%N"RZ+Du!1Al~Q)*`ӇîG>68hE9ѱ|@aA?]7bQZ6hh;NeO}BHF~ 38G^r\ Dȭv5.IӚnz$q7ZH kfp0˼Yaޖ;Ȝ{,ߑ `*1,R.S&n?d!u 2TJ A`Dɜ%ʽ "&+qTVBuE%-3=U+Zx-1$"/jRn짛wAsM?lq ,0\b!D% BH蠲=x.ݕ»IniM\f8O2kQhЁI,*|Ė6GGKσm+Q|4zቍAAu<6G0bnÉ-s6HICuMW&z҇j$<lXE5SK}Ʒ3qOC _5ȸNx{AV׎t90XS*G[PG ?ʮ/Xcvoj5ɦښZ Pe=χz`bg,G66!f_Qayr\uc[+T@0aGqDb/JJ?;[-S[^  Um=FU!̑E@h QK"P*pl|S^ap Q=Ta3O%kAؠ,AAGH#/y?3;/E49(H!NpH[xt87 yg#rI12g(rxϹ3ڡŬWLezՌ &%J$Ցrg'+>ߤ%XM:)!&R(Dp7ƶm55Ƌ 9gܔ-N Ps =jL 25)I] `i' :uF֎-k`m yq 3,N Mju5>&8uI,662ל%}h|-õv=q[D5Ɉl"oaKsy O; ] -ǯ7\3[ kc'lzw q1jkMaE@F3R# 6˙՟j`ٰq#-HIyxi:qi3!01,.*m>ap6 f0_р JϺ;F0[)@*סzZA{$ݝ+DKAҎ3r QebzSDaue\e?籩2J3P)FxɺAlo) BNeʔ 9qw@n]a6H/G=^8":LBķ^P(V< @Vaw+N=j =2S66>APҾW6;n=ymtw)xgv"7ܬ-5xnoC?v6 [B02MuHdmuhq_QR$~,XST"q)UJ|<F̭}'A|>i vv3cvry?Aьnfe25qFcA4!`/ha\  ՈӮHc:3^%$pm`VSD/Wo/2#ZskN\)ZKЬa3n; le? P 1V%ɗSѴǼ)`IF31r嵄2<+)¨3c}^eprqWՑ}tn?DIOQ0(h߸Dӈ|g+ ov?&zИ[]^:W*|iglI;]:|՗{tO?ߐ8XU.v +ґ?f/ǛةBP꿱=MXIϕEIu졮s㬢FZ07bS?S>QSک\ bF!=E:chhs%82.GoB)*Y#jVp`-fD!C!5  })}h.v=ʈ8s*`vA`;q,PxXfazRԢz;є?3fG:??8_G챎;U"!SqA7>k#n,xm$ܠvbBb63V*!cb"bDIwɥ-h(/s CYad{b.8.&\1mcyo Ӣg? ] Z>51_:[f|c&dHgdB\Cw]iB,^eeQUL>0BA${1:tÇ释NBm/bv"'l(v U;GbJ8;'Cx/jnY4A &=Z(CmcZUX_= #Lz|1}Np\ML i1yA$UB]y m 0 b {3X@[`qdAl])zzك5I#"4W>YΐX"*nJOx1&>~y,'5dkR0nea)^c.RBWh=ֵ] 1iDb g< ovV[SrIOwvpg{c/2YJL -IE7ozL?2_'V% D&S|msFI{S lU/j7CI5)Ӣp:.,E }e\jṚةNP؋*G;) o|7[a`9(~3"KpqȨN=J(5?QícvdCgU9R"CU;0ּSHB8|â!5B8sOHmT|zƦ& J"r9Uwuzml,&-x7+TȓP}8~_b)c̉9pJ2%b [IU T=(4z/tVdݒ_o9nc3 OylS+jG≅E'")'_215nKnoe/!e 8zD ݉uM; 콶icOwl#I}F ljYћ02Twp+۫^ʲfQBj,y[{xwqX2`c:J8JNۖb`XG%F 6~[[qޭ.M]X%GG?ؤ{l/= (Z꫋,_BӁ bG:~cJ![Frkc΅cSxNr f _J(G,G/n[%Kgaaغ`.z'4_e@8 So  ɀN *~`. CJsA?RJp_LM!L 38sgWUHhZ^?-¨l 8O[wB&#k*eVewGR H$ba=oHifhFax,I;|%  9t2&  eRB<;e؁G:q\<=/T-nrb`ƙux {JE& $l0/9WQ|hWˑeȴ=v%N[3VUvPz+Pfao#ܾʔ'j(/2@Bsv@uA ='9V =ׅ&0 RZCNY< Zh&Bv)٘Yt6OT#p!IMEj5rsY 2#U \kvʍAX)F' =VϨC:$A \j /#ɇP}g/!fCG4il"\.Lp"1(. B>%k|t^`H)oRܫ@fw<%QzV(-V%Lܹq68w `^k! KM~SĢt?w=C73I&~R'#!֧ Bqf9`P~Ǥ9* =nu?ڏk]EO9Ԋڜ'/,9~֡VWP dgr=kamj%Y].Fw( [~"GIh0F*Xj9k t7LbYbkuzp)f9ѵus6$Z0O^~"+`EBOj`* <?,x@qzЛME 9lFtz ~+8#MQPipj8ǗEcpAN@S *^.|41WdYXMR?2) fQOybCh-QDW^.afRϘ|rue-u^E"FT+^:^?F:XljI#ep@Cdl@t})妫*ɕrԈ _wǷϋƺd2x9ïG+C5 bW5"3ѱW\ 2M/RIXmluv.43HmTԢ1]y?W{g0W\^u YS*6^bU/>zs'dR)]S[PNV_3XMx?j;ŭ~u":FZͬ |XLe RF #}y~Wyߧ5]a:+bsynVx$ lwK[\UmG:lla@!NK wKC? /0H(ĚXsn;&6̘@jײȏ)tyr52u #( *_)Kxh/yuR~;+LɦMx}:P ݟE<d\zU6naEDT3*dƯ!2-.INQv̹/N5(U|8M̈aB\ޕ]INb+GTqO孋n}i~rI0kZ?OS&1O9s}#!rΦ)*E l܊'1:ɾ(fuoI|ޤ'Z >pk26vw儳HOj668 {O,|[G8{%+)b1 uh G1O¿͖Zm .; z0'%2UpҗL"B"GM򹽖C՗/)o bX,mǘs4f%D>JE"3gt}_O]b]|7@-kֿ-& (#diEС1, eu-S>)wZ7j(y6 `x=:SiãS)jQj|hHRzTCg GMa\|'_TwVAg 轚:fm*NrfĂ@mV&ގǍcaߴ>:,9x,bq7XxHռe7IKT=5^I5h8e \ PvOHi7N[U%(4^>LkvrAX04L+A ?MA>d z{Hlsf=@a:$8-##pٛZUtksA5T(|mo.Qiʦ-شa]}hO+OC4&4| 4h(Njt4oy+3t/xV[*G@I>l{ge_.gxzn= e)>#q [/vQ\tbۃ_Fwo75n#(pRc*G}9BW&zZ2kC oy`_[`6]S1X5Zp[9>p:Ŧ] sT;|F]3USY%Bẘ d @*\})5g[a6;x]AgM#E *w%w)`L;T 1rɀ}h*W"mO˜4:^-Ryv}3Qj:M Ӊvg&C7 pe3\^ֻ51 OuIpA:ŧzyEFE;b<hS1u T߾De>%vp߈L \\(M"ꐤABC#@h=/f]e%R0vo,v>zm悴g`=Xʹ3zzG%%|H}G#'f" Xqiv3*FKCšzwe P;9g6.çD;0 l'KN R\K,c s1 ٽgUwT6[[]\)*I1-KR y:;uw H[fK9S'.^C+8ɺF P4o21[I8%Fdd*cS\2=9sO{E!!原Ah1]!dA}s>O1/ XB QLD@M^$E%d`7q3Ցd4v_N/ 9T\_ˉ2[xĕR/`A_,!`GA4itI|]Ymk6\@V;-jB7uK/ǖko~mq6*)1D癍ð\H{d_gȅޖL\L{/nxF{]55|0këu8~UMoR>at}mԬVR0eZz]G̃}sVs=GuSzF$ R{x,r(r0'8o~?WA>-W##=]u>{Y>RHth $g28wUk_Lz#ܺoPP^8K~wet%"|QӁ"AlBN۸tئ|+#vGnrO2`"Bt+F[8^|`0.7+=}g{Hg#lCF"Vx9y.g.J%;l_.C;67 _:>\wvob[u &Z!]j^3n0m6*7cMʐ*,-ARm%$?o{Lⵀb`/-F959`(=}AUťsy2~y(K!}-BaN#d)Y~Ԫc#KϪ#C!(6nn#̴0q׬u9xw@u]3ոr-1MbpR x"!aoR,n\.,Go >$ՙ ZM.Nkeم T*UT}Oɾmg4 2'c^#9FH!DV,œ%8wO0Zpv-6^t>*ZEau`*^Rt @8Q;\u%6u2̅[M IQS{V27仔2/56`d>;W_bH3ec~ݵ8Q4gεOJPVZk'L! ŋ9hysH 7q4dt7:.X(^K : $M+\(݅ |`p(5%1NdH́t)u@PnO賿jquk)g)rVpMUƒe6?4?]`P'V9>PfOjSP2;.D9\F^!.k3wzgMvbZf:/:G61W8%jUFg--?Z?noФuw{R3/Wiâ?۲ձ۱>~މO?W~sn4Uz|X[?t'n5u1ϟյl|:>Nr \4K&x\QqLt륧#A}EqrQI,ıu$D5W׌#,+7+Vٍġ%"be "۫U̱ P 0Br/>¾&jk?ډ-}dNHBPEb#*ug$3Q)V[veio !y ik :hA<$k:We\fqE޸bzw\5kz73d_WR*AXc?M.e* իS`k8h˛+ 7r1W[jUgCAv5UԸ՗ Ekp,5x-9Yդ{} ¼Ak|W.?v[(op@?[ϓ^|W dLe1욧D;a_cc\,3h+)ZPI%SM1Le)pt'wuf)MH LUD/FoօL Pw+! _*UDQJMrZW7lxB3MTǝ<g1OC~3"]@ (-FƁ5}kT8S 웉/>]càrb3 )jN2(XY8piQQ籫`A}D]/!FaZZ114TqQE ơ$3 wh.n(i9$Ӿ;bU Pus`܀o õ7ZN1聫Dj}E$x"$9~zEt:RETܦ=⠘1B nfSu$1BƻU.CY:ch-*g2dFG_BWSEJD5ç56~NN+):L]ٰÿ}EXHp L;0Uz;{p5I9K^a1e<6)[M&c.]sTFnyrn%EA<ρWX5;.? UU\sUm=#g' C 4{H 4i CssS_J!s." sE8" 4 .t&~'2[K$Zlr}ᡀ\=8 #z#vQςsRe%#&+ s8 ׺\oo@JImAKUn9ݍ9ːQOnBo"{ED8~::R=@HEQ/U[( #/~ 6Uq({)Xx7u, (`ߊqUŨ%<Q?y˴~rC_1Xir:!bn >Ej9d4r›{XLvOѾ4ѯ.y);(/9='JZe%vg 8757FxQy-#Өr/XXJ>Y],2DiRFQ C*t#GU -qaɊ {a"l(֋T_X\zLр"Dw ܊Ѧ+,)4t*ݶlX2APo$Y FVw3RYJ@~_/*y6I_``>K*:k,KLQ4]TRw\V:󋻵K6?t?,HmE97Eev8!{)i~V~ .(5Mgu^7TK%qW+P, cM@uERl?nNnn3׆}> ;΂@icU>-Edz(q,IkBB= ʈ[*SFbu) N\^=2[%PPP9kTXyiHe-R(fߩwwH_VP44Yjj6%G;KHUËJuyC OWrj`G.Jy){' D=iIz2qq FLCoN?j62i2nF]|L3f_9'|ɌhVixwh̸Pi K\!j ]w8I [~Vʘ*,x e"`lm$-j%P]UdFnƬ m|_*; 1-*L8$C̒WzD5mNSLʇj4eYP֟@%|<ע\eNCD:ѡ_ Fsa _ʐ rTbՏMtzWG < tlQriDT[YӄcT7ť:mC<~h=Y!3aI֣v"5aSNEU}o hҼӝ>R򣛓w.ݼ,*C|\IdQx\nRA3FӾn1@/,8xP&RbP)tkz#LLTNZN L?ZcnhObqAH˳wMm/yɛNmZ>&6s7?-]OLS >gF|Y Ga:jv2N8?LISk3DrF(z!ȥi\ǘ=EC{s,wl(՜[:(bk?{=`:i{<0vuFhPD>=j h|d5wLڌB̝KC +u2?}V~0H[h3ww9bT`em@~lvkE-wZmaFd)VR}3c(ˡ;qQ/3L$c JsΰWїKIͪ'P'x֕AuPiY!۩"$S?x<Ť $"ۋLb}Br2w`Ns'}.$ڐ:(81e^b-2qF1i;HB?4.%Qk 5L* FpxeY΋UY(;84 tRemyk_87,[F$G`(!W<<45s|`BdYPTx7j YOcL'UsQ+-_r`7J69\a=\Ai}n\;~ OltrODLf)<:Of q@wλo֡2WΒeXܦ-A!afV%fdDG~ B܀/[E2h&9Vj$aKIWUWk}<;&>,2O68]>b-є|}fQ^SǃR@ڸ cAL.+^w,OpO6ePwldaNF߉WĜ7,e juel(iWޕFMyeBdDK|E=l=[x1GzuJ㦑yp֜`ڥ HLΞn"%cЌwV*eN|q}T O&AͷEsl{ֳ2E8z%gU6CY|໱TN >s |25(v #BO"ǎ8i,%/*QShIw৆hF#?&08ۈSVewZW/N|7/> _=~纤]*W| h|zYpR.v 0\6.Y oIXN`[r1ǵdD_[ 7ߣBs\~ÚEYL`b9^A>7kLrah$on3P%gn tbƲ&h^YgC<чħcӾ (_sҳ% '[RrQrÏU[%>#dH[|}Rۋq&_S|G9S |F`ZvN:4",)@J7[vx+`xzZ9RߎJpتd% KzS]Clmy߼CիgmNPPMggӆV[@v?Ձ͉2n(;@գJ:ݗEJn<]8*–V<pR`i* 8-%a k;M' uQuOEAc5 R9gHG #`G=I@窉eŸt.:\ߡj(qx)\٪gy_B 3f wmBR-#4xFO?Qt@,АػA׾f }Kt9y"^*??M$B&w)62tH:o<&59 I<~LBQJA6=s7{0/p<UlzA,8bYR>Ҕj^qss("Tj[FCa$VlfKՈ 6BasW^sihdYVv5J( E؀\gi^ב;\Κ#n3Ƞ/\#8S.ݏBI@7*O3)slrIku\ϗCzCK ̍0N K+6 ΄Ġtk|fVǀ~ZN1hSqSc_Xt>Cy=fEI 1Zwy8 NecsBt7SHT[ߨi5?ZJ~[c|& VC ljzd4T f`zх T:=vp@ToR5B"KՉ'uV_ΝA1eUI:D1}kyK.?Fs6!&^o9y,6Y4ߟA _LI򀰾`BUy`21  &BBg/GKR.O_ JRY&y%).%ZDs : 3ٻk_jVh.i$>0~pL=bS=:>=\9΋X%H21X3d`g- ҁ\y\ L!QN+jk]G>$k2Y/e*d=;A/r8_Nȹc4k1ȱGyH]6縋&{`5=ɤ akEeRdq#).y{ rÆPJsOӶH QV(w׉;rtqCU[$MWDhD/:a04&cşǩN0Ѱ0#0c ''h+~kgHdY1 9ף-"h$FWA\yiLyRN[%E4z`gI3? @3<,UWzvJE7Qq(Ż,r 4Dw5E/䈕{lD fYu mD=nj YtD&c>s[' ƛG?a5m56IYeRaq=Ъ](jS{=rj2KA%IE[HT,fTeyx@KNnw+yѩ(%}n*ڊ+GE9FB^267,Ÿ#PsΠ1)P(R\G3 Fg'QY2KPĢpZIeM^rG$ս6Cr 7fۯ44Rw*H P`\]dz{kt\\ dpne5u΂Իz~/xjt:w+qǜF 4 @,v8nU>eL((:9I..B1Pe@'ng-eŞ,r.1l i/sjef.L$=TiYi}twt4. S[7 M|z ϻ%+ @S(Yz7 KNr삘kqTVvc2ACN.Gb >MZ#c㾙|6xIjR_K^ C4qu|ڙ(\:/DEI[&_'b (eAej x3 u_,?Yo&Z 4k 6m]Y5O1,wQWS܌ p=u8côXKQCS<@#g5XM:Jpᔔ*o^A8Y}F*qI/ c] VME^Ꟙ@ܵqܶ+toj?Zi)x Zu2I≴;NjׯiDD&ZY\- 7 iW}}h29^,F0x_ yϾ%@3 92ϹQ {'vz=ſNvA7-}y;%^ZCqdWњz1?~>RYUY&ެf+J2zZt3..,Rv|9`{kF2namsPrXI.KËh&B=äwd4v }KƌZK}#(_Pdv .m@|SW{R& X!Uզh;WΔh&]^ַI2ճ:PgJ"-NG EJ)Xz@EhFI rN=_Ơ8M0)Q]x7N d eZ&5.? yjlm#(xG)baQbUlTWUOG[N*q@ґ@ǫ0g|}Si]b@- ʭ Mr ܇M)-َNDaV{F}U`o?"tmf4.C7oUIИq+n[drdTTpD0ᕨ@$֏*|F^#v MePBcvbW:Ʃs:щش1F ߚ,(=5 aDR{,pzn3`/YӬ́]\EfU5pS 5 %J{1_ULt4)> G 98:PU h%3KKH`?fy8bβa)1Fݚ6x4}9-HѠB.. kJ7`﫨Glu=a# i6D˾wl’b;L$Z3 K~]+oJbMg5ɸa瀋tJ6"l,sYbZ˜Ϋdb AJ6fQp?CL!tX^OcI(͡w wpݶ>Xpnc/J *:azdvU4rƅMcF.QPs3ת~SH@H1ԠkEQ)dm=(hŮ"[WQ۶ גitUHimfن*Y]޲p<*N ?Ar0>[`mN>Ix+]a ,Qs9urvMˉDQ§ L]ўI= s C!ᶐ.@'d/Zqf_&VD m\0(3و#k$ǿed[>UinxZ%qG@& w?7N"Z]%,Ummto " .5״~*%wY ?&(5IGp$YZȅ8awV!g•OXs!yYNI juCX@:g"CTIg*3ۛyu9!l {y &\+{|$ ޻z9}3 ~A^"s-U+-phUzGV*J/vaFKFe 5G#Cf !D(^;=DRq2 E,Q]*jJL/"UIŧ.,$$s (l) b:fl J{D`Bc>Rx6boM_m5Kom!Lq`@-ʉ PW~L؝:T`@G'|PFcH(ohLz Q[.h[{H^ /ΰ~^KF8DJT،f9bM10]50SUg3>-_.W"瘳H|sbQlQoz$s_z*3}C]Y?ˈ܂_/pǬψvMAu?9oh8n :Mcz`TXLhM<ܱ8ѷScIlmzP% xdRJKb e7uՔ駶I_?@q b0t 5sSgwY˂$#sf9Gui M{ E)MV5߇A]80#Z 0_/4G_!4DG'1OÇ"ݔ/D?r>'1> q).y:y'4 R1?bˆ*?s 0PNdOV ʝ/Au"6}W{rzfAq}s pEGhKsKTu;BPsVup'^d %S?-$ȗb %oyF\ߒtm4yKD]Y׋%Nx0 K2E5"*ntk.o~@p@P(N H"BN@\4O-@dDMfJ2jN4ݐp[!s>!X(9|b=St_5%S{̒#>! 'x ϬKd/ج JVaĐ5hݠM)GYm!o(~ +E]5Xz7C(rzᐃ,%ٮm)r|dJh(3b fm5f`3+| sk.XqI (yo[R*o;8'W+E=0ҙN?))1iq tσDGJ#Yf":a9{*$)niX#ax^7DAPj{5u0'Kw9S[~ _bv)?#aj6Zo˛SYR.JWᏓ7z]C'cv^O "xwp6#?4aW;PS~xqȊR ytO>(|59zz?k9w>ꗀ==Y]g9Ӈn0"`Sv0AnK~_f{QU8W\*VRskSwplO9iC^hMe^a#Cp`%s ;枆)qyq-=He#<J6@$yM;l8dYW )&nh-gy@[zQ\ Vqn^XBk뒒)r)ނ&j0*U\虖e_4=$׿:yd#Be@[QCO@ Ht.TFlygė(z[)ŸE İzk[VBeQz>4J)M9+T1 ΃a | Ȥ^0M~&Dq谤&ٚlt)HЪJ_Z% ^F<=mt"(g!H3).G967OL%4)SVI 0B5ؽĠ[k o? [܋YSȘ|wdgd_D 3P@}~_{ecC>ӣQP!XlV~:*gc0-ƨѤ䪹7vA;8뻰/v ›p50J0M?آv 6~|/3nS΅q#F]R.?w3eg "bޥw*EF9Uws"}0\MlW;!l4,7 oه0;W0= RK@xބ<$j 7[ >uPv]i B۟|ep 5-116BFG{t ٯ|_ cWyaW>4 t@6, 5k|+]3nx756([pU_P֥"B!(rdh3A_/BUj7Esl\2?|>k固ϻ !=Cuxwf_PWxnRf?nPso¹v+壓 ,Jn' IjJy!',ib1P^X x%HU0ـ`Ybn04.ɱ8Rgc{AR{C4Au˜ߟ٨?Lua2 68i3qP/x ŭI m'e}&?V%rQlqӦ.nkXfX6k :er]kڕ RkrhD}fP%u 1R wCA?N]S'Ld`c6S޹Q쥧5*bzS IE\roF2i̠l=2dѴ",sm(_(jGؑ[k?i䬮U<Fيas@=waa\\%%5aU|-kû0ۯ>o$-kU61C B"`mPˏXNMƂ-pk/HM kɾ0 k+`Hqu,uPU*wA9İx:'_ K82ݽ[hVG:.^a4!|ݳj3a{"t)< !R>G.1KeV VѴ ~H[9H$b1t⌇K['.]NI%0 `DgmfW:]VT-KUAf+{]@OlId/9jD?=T+8m5o@ₗ!5]Tul]U,5gvK;GJy;7 3r ɍǾ j|H+( }7vnwZQ%-9n ?jJ"[Q9$ϥFzbg=Eb3?̧Ms%ػRyt1OzStpǃ!w.Sjϭ հ :CϚ1p=^f\+m4O=T-А@Nˉ[ɏđI#N@v XٵZwpS1L4b0Ȣ,. 2i2ʙ$oB骀>Ex3 mǣ m#,v-<8?~kY4!Yh,3dodM|8.Wx(EP7w8*4?nEχq;@-LzE> 7*`S ͳkqzH(ozNlї;7 LԜJy-%tt2***zmj}UNNdNNWmfL%}x@ ^-,,rMelD(\Xi)eY0(8b\i)9MÖ KX1-] %!׵#.suumzM3J:Ǘ"F ,Վ5;fk' g@Y `φ +\H>#E` H#^Y<30\Tc"fg!eo *9\P"+&3Π9pm)'e-tHX!N3B_\]ff+sh)!>[4o#9޿j9G\ZyfOȯT.I_MM}OHO|Ey3Wha6 `j-q=>V^`)7fUe %lG҃]p[?&LlﵽdcQƨէ9OULQPUϖfK弴!%ko'3,o,Ueh#x Z\?hi-`rc7@]eh7gI)v3b턌Hqf$p>D)g]M3,]]No G.b7e?hK+"/T(XC$w?.UGob=A6#E9!׹f(A6 kx!SUHV|,i>VO=( ޒ(D{ |ƬCWZߓ! &Й #@O2(G\hr쇬1aփӌ8ȌT\ (ܘk9ƒh)Y;eN-}kڳ?Edv9'vj{!*L~=` ?9 󕣘Gr.1߱\|Q *,TEvtH:1Q(VDy{?œ.q3 YY 8;]Ho+<:&~b ƶ;w7К™+YO¶ZT4YmVc.VPfF\m8N,!g{d_O~-'~LGBxoLEGp!';N[[P*֕\NdyVIE|$dZ)iNa; Aʮ1g33Z5b[]P;|Cx>8t!RVLHd{jT7G 9Sğy}0ޚB~%8 J6ԔA#w\-Pqg-c-j60_KA*ܹG-יԶ 5ED q]pR:*#.K!(1̑!3I-])R)єWpZ0ûƳ0+8U^o3=BAY"}V4+ޭ"P^hj-:saz1$`b7cA\h$Gݞ^SBqA4 +h@Ҥ5Zhَ/uc콜`._C'&DlLOL.(j I-e;Y-L53{HyFicYn_ߩG}0NIwjn-­o@SÕ,s=xݽľY۵e8E-,*F$UTo zd}X`?~wX2B碸w,B?c(^>_9̺KނUC2[Nj'T/.ɎU>.j(= ΡG4e}B_tД-T$cOήv|ˬGxsv HEKlH99yG*Lՙj '<?9T&,~;R s] IKQw[c n,lB͌`\6es+"68EyfpĴNz+Gd-F7uX+}I&Tl#TUq˿|JoϿlXPӺ:l 7}>ɢ e+x^E1|jDVLCs1!G[CRTc[B9gT(zCQ+ZM9 5Z;ѺΚl#kcpZ͒R$E`ӈUP<>{ fbBg`{eQO~쨔jP"vyQ"E Z@[`nDVw ijq^q z#Z=ңYXMӣ/q8):TW y+Od mPk/;b=!N-k3^NB9CX,\d/=ߚu_>o8 ٌobeLLNKZiu4G@{O|o I(\ f6'`-m)\X~YS^R.w/{ Rv7O ސ<ΞoQe5tn fk}ޙXXB\q^NR :A85aҟxhcP6jhM#h|a4Hͫ *1̯Ki 1m:ZdבЎ`1]w!hEnkXzlĿi}C!C ZI:b#wWy'y,q{X6bNMn,)y<6,Ԃ_F;͹~g&D zI+hA ~ ־=Ņ+ O,II-|C7Csq%Zԁ~p =c!)%l<\ՓPʙ0Mo P!qoX EFp tF@:%PImƫׯ'Pݠb4oSX0L[FV Ok143B '*69g2鎭 t،vt,bMS"{Rw 0 `Mh;,2:GDZjyjPSd-gQ}#k] |aހi]CpЄGfv&+[N%"ds~猁'2"L)Y,N ˖| ?Ձ>zJZY9P^7/?;,D:5SAULk/rYQMAd5[ΟG4$x[,m)Ɛ5\]+) %;&+{0}iC" }'tA.(h_AmިV_5jEQO;'(7͝mTbOPT"gqu >&$T;0G!TcE cJ++=H7."!CFiiގȥTqA$+{= A2i ƃmNNbҿαk=fGvm'>~G>Z`!Pto;% ̍R1{mT2múw=}n&:{;kQ8(4L+D>j̆o]DTVtqzK ]p>9~#O1mQ!$8{A*?ZoV <}ki,'bI$/CYPBƉ-<9l8b$ 9N5D Abe񎗠,1v-jG &l]h֝TWuHuMzɔ;5JզExZǁэóv ,qjc8gZ,peeR|abo+z?4ywը:?hN:quXINQb74._Mc鋾3%qI `R`#>QJg-)` /"EO1Z5~R﮻<+a^ E͙ǩtki^A\l p.eJ/Ecx~3,x{1fJMKP(<,*y_-"8Zj}M rP/xY6&U`ÈĸNuIJAQ/H$b zGNG8VDt(4okm9]`]jR WKdy.rW}-tmϘ՟U9cڲЉZؙG=cJܨ*QIL~~yK7?d9i-?NV· Ev֕d9ޏ6-s"{N)g 6{fN*o甍ps7YGj0F^_ B_ϷHg{R P!m?:OOiYoizaonG&Pi Spq}lsj-޻aE|"9ά1$PHS(_]ƿ{ZZDP^žqȥ2?;7fY<"IƢn,/+7,tM\'u΅0/.{;)xW ƨ3t=Oau2 .F68a10. 34I>GE 5q5y)W{vd0PR:xF 1bY (`}pN%j%2^ R2FSoeR~;'Ai+#_cU S\OW2yN.$&*>ҦHԴu}E6ֽT Qv2ySrgP]5㟅 5U3I|7o+4ZV\̔Ӏ_Qu2v1K{Vn#u |8{̧mH$32iF+;lFXE ̆3q.ɰUL. 4]B OL~Gtn5)*ĆZdU6h9[0ˢ/ySv Lڈ7 (Hvm}Mju]nk {vE ځ5 Ȫ O"mՋF/I;^\̒W&U"sXe˛}^] Lz#:ǺyֺqʖѪWA/?F~]^~ʁ b ,3'D;nӵT%̒(| @䅖H>,f<}l*P2 *"ݗp휍hMXpdu򄟲h2>?E9e-- zl4K ǟȷ=x2ԬHqz0o҃h{'zʪ愵?, Dt>x0'R֡#l7";|5Tֆ_U*Sb:i>$ౖO4:JCnZ~ 8I,r;&z 438ˮ"jl/J2bQXjɔ_cjbBxVdR_gǴΈ@.E3:E||x` @qYj!+!L7YӟO8t>ӮH[滹7'JOM`zS>>)yW>6D0-yBm d+VB͏[X` !;Nu"9)Q ? ; uw${hO,8.2|;c(ģA3r!FC 8&;]%;wӢ8%$! ~\_'jFiZlӃb x8Z<1w@g^6=8'imC%$lqfzo1@FZmSRAXyYFh+`|.%w ^p$ie@aL p~/P+7%+6P0lA=#D/p?1`i?ʉb(j{@Rr7,RXMc ah;FfvkxпܠNۇm9k R@@5ݮv9W=e"c&Q $TjSJ?Q*29!̧Y, Htfڇd넨 ߷q|8-z&2+3ePwtu"NZF HezXnoB@f-xc Fְ9|sE8Ml`HYGw(>1D3 >yId'PpZ2Zɕ)r녘d<}cg hnEcnmN*J]C^U% c5ވiև{1P[W”Ƨ@dNT㇣aG8G IEɱOo+;kzɋظ"` ^|DD=7r\{JehI֤Q&H?R+ݪ)o/INrx {a6$ :8vzK@GkQ5-4K|\sNXF0*ۣ"8;i-ɓIuiBCm1$U-\yKI2|T03w)b.LAeLf.-;i3/-1xCf""t.qhiI H\0 ׹~lnZ2hop{߂GUd@y Q['βnԕ@WbL'5jg$< 2Y۝_Q1v5fDoPWyG7QW0H0j SwF>EFB@D,AF6K)MY1T93ʩ9נkvDE&@΄jGc*?.q 9.hSOf+tr*A8Q E0_G*obH|}}-՟4> _e1 !K=TRL:Q{%ZAyF ~׎egqq[ۺEQWn[ga_jοljҖJ80Sc9,>MV'I0D\3*,ܻ8ْgDmB>4ɖMܵjԄ65nw  ^nmPeiptVo1j+H g1\w.Ԙ^2Soo@%u5ձLu=?O1٤a{'9H| k01N "$SY^K[h*郄'?O6*^>tD(!_x@jq\*xh*sD_}3IDV eO Mhē.D:tƌ<~k?=q_1N~Pc5Uă3DhiY4bPZ܉:.+>5!>!JJkoS\ ss}]7uhɿ&jÝ,C[ycCu6UYgC=I׍ g ǵw,9S})">;gI\!BR _b}Ҧ}Sc`T1_"ŧAf8b6S #"~aYfmJ3S;h]ɳ W^Oa2I|Q !9%lgGM2<ۘslO2b"S<_˸H༨]]bfZ~܄8TzS>@H-,$v}o곆9"Eբ71)CVn]!-Xx I`oJty0ib7UupKE t v|I(bHVL{;SW}V')!\D s!(;Ne  .ؗWn|]R dBF9azR%a4sy~yLKJqt{Jǫ&f(8 mu;f]5;H4Hxqo9\3˸-y圐xZVq[~ *F1N*|k؃ꗔnpcٕ,PV]1&!i}mPX t0ǛWnymM3.-+2L6YyqtJpE4U$w?R,#{DO7'tA:GC!b`XLfs1P #a~~i#[0h|"˔¥vun}|l~f[r|c̶h1ˮ܂|<2nHq5#& {gHkv2a #US&9P_@fL`ΔȆ5 B ӓh4qHɎ,7w4ë גC8;a&kT}tP] Z =^Cٺōu:0[ xkm6CKڍ_*6=U!ࣂz֙WL\˘Xm%cҊZT4;>H2ݬ3fU&+@> WH֏Yԛ<3ex}]BI=IVFCwA%&ȡտ4jx$P}b_9-oF,ɭX;Ẁ#q[%{C@O__,阙8}+v>ylWaS,IJ"*DC\'#P#đB񘦤's3 u쭼yIe3,Pщԑi=6X&#}~f-,X;c1Z,b$,E6B n#{H㄄4<[d_f O[/GѢVy SL[I^8vS n8‚rӢlJ oESv,wtn KqvX\Q݂li8C)!TGZtꊊ/-uKK+&&%X\?ڂTaH2u.mՏda B9˵qM ?nȾ/KItlw]L)of|`r从Yj[[IS\g䷘b}PS@)@<k9QvApTNNz  +K~ Q\.7OBNhBt#7bmɄB9ʾ,zjA8;"zz'0L`Vl=zJpsyk3`=&M{8 xD=\$PbAjgI&qKͩoJAcfpy,ng\yiCr)\N&Ghƥ1_0Hi.MW(ΪH=قΫ\^}4ϧ1eƪ3^B{*s=7#5]^j3yaݦ<or\rC~V` -y7d =q VUQ rY&A՜Deeu=x"{?E$R fu^Z8ն#l<ĂKq* Y 9㙷ylY*%uh5'zxckuܴ? L"}ާD=W :ܒՀz"4^Mf0إ)!b s3hGSNH!N>"6bAlv@N 餬O۷HοnK>w3oev{96Ϗ!R}suͬx6D6JKJ159tO&)?p]QfXg ±?@+)7R=,: Z7thC^LcAy$/!_OnU%*V}p>uy:{pg)@<g>vNYp$T$f٣ Sd h?K̃#oEfNT DEZP~݇r6K>Q*%=#ՍC5BD,m`J. QcpBp{Q!i=Vd+  :IijD[]K<9HI  L^/Jts002$&舅+i89kCf-te`tS*7B.ÿʫrcX葇>;#DYSŴ:tP~amhb98!3Hb8J]gd%tn,5j`M 3 LG7wTȮ'w9?ڸOOzXb}xWEf{'f:M+ V_hH{[lֿ,*!̓*BL]:ACmNFt g'ذk(v t&dRhAi{ZsnIFAgo瘣z޾ {? Y{4$PAC.`4.=*d 1} \BA;cCpٷ,Q&">\ dE\`jSNЭX->62i99`KFKG1+=!nxd;!@aJx#ku:`pi~KE#[Ra,fBSX@~=˪};?e"iėb54WS?;,@83JB}~KA%0%Y6 .a`ϲPӨHL\xxvyX963YcR84Wt•;յ_8Ǝ'Oȇ|oJ.bRը:%m I)ijJ2"1 Hkti&(}])hh?( D6iGЉ`EږzX.`!2 4򆑑E`ZeYW=]PdzIjѶ#rq}`JkC_cMcpZ&,=+4.SX,_d.9:,*x3Sc~?*+ ?^)ue 4~~jQ3~ w!I1P;rYQ]LT\ "E.H_mѤyQܣ¨x2%= #aPsG4 Ky!xVfQ[̀.)m- o%^=X6B?Ghks9@|kif%]@Y]3J`)ew-J{FaTܚd5aÂ:msvLz/H!G? \>*R$z Ҫ=xmroʗ#bd0- FEucf*ŐvIKـz,wM14ih~N"&߾v{Gt@O+ ^ h~N2sY@a!}j!=MqU<&`nGqfrC@~1F?)i GU&Y喃&dJ>;7!IU76c3ZЗ@]Y_ 灈V@Gy$bU3i!9b]Qc.H1}n!XQa ћ6k{X sj:{ 8 >[&!q3瞳M"A22v "]"jBR됬~A3_l.&qf] vrřD\}lrL>>6caa)3o{YFxˑk^82{ LYh7-< 3N!1iu'ẍ&D~֋qQE+F۴{عiYQ34`Bױl^  ƽE|xyͅ |J&%Q70:Juo̻-,صqUlsAkUA6(M$tR-C8mrUA1~Er%߸iNnɆR}fLT<@/VPh/;F<&,|%! o5K$;YJfjܰ_zemnvj)hsâdGf;FK#fM+_+V11GwJ׼ݳ[h((fH",Lʞ߯h/ޢcq"2 kP7$O)qGk6Ppez(EqDyC 4h]*TSW'jc0DCqN5*_ǰkÅBpW4tPhjmʶEQٷ%~<+yESX.4SQ)]g0.kȁtB LL~1bQ5`=NXp:gj7su׫We"[, l 8_>$?h!2!?#S1@͟En'K2LP4ND2s`)**1^| ^?j Uہ{ jA㥲7[:nfވrbVcӐJ=}SPH1|7. }叓a] vVBL̩|YY@5 ߁3Xç{Ó7@L=HCp  ۂ冽"2 0 Wd_zN: `6A:yp`P07cs'I/vwJ% d`RBj,Yq]j!{.oQõ%c/HHq,vʧ\>ǟgn@'8_sN_.+{>gw&Q:A~_r[Jެs8Pv뵌L ,` >X]'8 'ھJ+h;q՘= g&J%}В=~Jy_g.PD^};g'vP Iwħ?06ʹ oS3F&h.@,!u (CPJ 4cny!BݥRFpw˷1ruj0'/CR0%IM darGQ0hU_=ձC8%EK: x:TZP=W0Q4V2Z˨D|,ipIM0I 5s OG:lmjz){©X֓*צ͞8cA#NO?WCnκ I@g3X"k7iQpk}>b98Uv["/>~|mD*0oQaeOt xH'LrU--GxhB#b`7%Jܴy`ބRxr{:VA Ҟ6ʐ߀Տ#6O P|2c6G. lphtt"om^H!㇅P͢Ȅpw>ľemAqO"3GH+P$$.cQ"m.eq7N 'RJgmZȱoę~lGVz 3#(6s:[}yيv7>g,^Q!t6 [y 3Qt1l/}SrК[v:.LA2[ Sү3`ԜE+!N\g[I)[7 ˿ogن];ci,%]V?J$bEufi 5e/B̿>U)}QeK*O+nI<$r *iٗ+oY5kCLm/1!uo[ elEKDħ͇nږeh1`^mJhM; <./5]?% :Z̬ޞ}ߩsĸ/mŇϓlܜ5iV;22IOwFMIIEhD,jK̀|au2tmXvMz2L!ͧcgQI`a44Ds!-l9(Jƌ:lf`:Fv={e$򲈞OiF|@+-iOQfOl9nF/<*/ڇ)ze%nANƅNӥ=iKjw 끡v ؜ wd "lsw+K tQaȱ"tj2:Y!YvtVCѳ(r>,$nLUŵ1jYŮ<%]oYw{7$}]:n4×K`9MaU<)@7sQ|T䞢—cTҠQ%D᮶ܧhZƄ^;k>yj 2;8`xDҚ+r|>+LV[55w}`$Lxɍ}tl d#UFҌd!C|0J*I~H 4OxNCipOߢZhl* BJTx,W ]|yEMfÚڍ'\` sD_'nzd^`(V4AH4(h9)zϕ5y8GJݜ""`S$q'gb8z9W>sUXÍcn*!l-$xK"=􈨃\g2*&VbK&.kP%PbOjr%ܑ6u~tɘ<**=䠃@s_{ܻ)}oҁFL51ȤI,qi1UU!Fͺ/J ن6`i,F t `]I<T@B_|6jŘдRࢶi917Ѳ̼;JdQVCHؚBxK@/__0>M4ZO#diA3b{~ HJ_扏YbPLި3'[%B-p c5BR ؽ2:Ѵt/CNI{ٜoU׏{dRE ! O~cyQA] XZۻ@ω0kD )!nwg_j|`.w0&wؔA1Jc[5ert @^ݒ,[[ME}/{{ct礑 2PEJΕ\ U&<'ek!u#;q2 .!{ovCuzw9e;?$eZc7Iİ#4oDP3Je7F( 5UF|Ew[}dZw\7z6ߞJmj~.|v[iO!j˜QaRny,:GJzX D*5_?lhIug׽j.z'9zkY\lt JќOs~/kh5_ .pk* "cK2gCUu~na0 ~ s u[`ͳ%[s;իܔO!%8ro|XޮP|gyqjOŴ%A$aON %ݻ?Ry gJU+/qe&CΟt Nlf3IS:;sP cM(ٸਬsK% 1|=@#95*1SUM ֮އ@UψgkZCM[ћ>y@ }& ) ADt1/ͽQ"QG}@iM%:ӝsj96  ÉbjC$]kǡm &ʒʀYV6Hf+gBsjܴ6hGzZ/9 \~<"fE2uMd(@9W4nhԸ oЩR ;X݃>&,v!f׌".=3t4/[5'Lp ̳k!?hVqoe윟Uve"<њVnǦ=k+ܾ͒K-_=޷dNaj\D-ϼ:!;HrS==xд,om.P01y<knlޫ$(2߬0bab4(4Ţ#}Wh'(Nm,<[l0UWEpV6S籃OUEţ TeJU"a4ܠ`@ %笻ކV@UfoҘ۩kgC0Ƨ$j0ڂ ؝P@k=Ge1/u%$V38s/2ҥNl8 AmI0EGHtZr,[G=ލʵyGYΔM[Q.he"O>*}/4wWOc *vRBHDdX] *c[(%y3Tvtٓ ϸ*zA!fn3~uX(ǐ)0/>n-kpPhkQP4!xN8ܤgڗ—K[)-#Kv-]?/ryV |]D3J0qdǵHy@~= ?`p,ILf3Gb ã,Ѽm'<޲WП$-D4JrɄ(˾߶Tws$3\eycȔ-a6= ^wy ,VV+! 0/-i*-9z Yk8eo*t58nCid2g R7Y7 v?֕6g$fs NQYYrAq4bڂpACxb_ɾ2 c'{B~yWC#0VhE);/3) w|t|xŃ"C%sC7*Y7ީtܷd]{`fG9(˄]rJ蘒4|i)/`˘Ƒg1ٜQZnήT#8t&ܩ6: -$D!zr|뽍of<l-ߤœذySn{wNqgi/E]5j+^s`HAA{4>nB9;A .w[Sp5 1SϏjE(A619WwEX=ЏzK0 E΋yDrInHZ(_i>S - > r/me>c&{ Gz?P{۫)Ӄif"UE),-V P ަ'VhE(KL4@?? J; XƟB:vE tz1ar!(k޴R((V4qi3>OKbQ'2/)9n|}8MBuС'bJëkTQ|2%Qt-Sqo͉{Pyo{ȑ91]i%Ќt]hb:iWQAvAF^j܎!a۝(/9俙HQٴjŦJ+0Gcz.YEW}޷BR-T]kK:ٯ7pX0IĦÚ҉fu e\'QؖdӝcƵж,ŒofؤX`ɿB)Hv'Ek&xS8,ycmdPtwY%Ķ@<_螲!*HT3a-؇T.@Ԗ+{0JDoR4)ԁh=2{y x;~dBU%(f$pKxiw?zrK/t5;I/N ?wz'5A+K*OŒ_yy~%^Lgf>*W-/G%64/EG?s>'xb{]h\!@E BOx(%g]C*vc"y0{H8˹l7+p;\ƒW RW6fVpb M-X),jjubH%,|_~%?ܢDLgm3~KE͡R^\U{ РH]MssQ9V ^lu꾧o,5H JyKV ůѓrS1'Pͷ+\(h+mgA%xp@rcR1yn}7=U/FW`"n-;%R-\zpfě"H%3F>_f6cpKuq hZYLLU콼oZP mu562N$xқe蒲RSIgj’'F}U[:ؠa^wHi1 h;uLI+:^͏5oxI44bH>~*=O:U >5ΗIQ={zq]W\,>%jƌ5N16880 ?#FNI'Ǐ;8vճˆ*c^Z׽OLeUNROr8Ojʣ`,2_IHA444^+xhb0{|ou#dktmȝYҮ ITJMPhTcz@`F\x,He " AhmCeM'Q3] q OJ_ϕrF]n&60垳|za+䜉X?Iܢ0J?*K2!G@psA$Ĉl=R 􎬐C̢ڥJ>~iR:=&WU4A L*8)&l z ׁ狮:zbLx\ɕ ky~M~q.d&+G9j҆p#kk)h!ԢO=cJCSytQ~r}LU5HbQˑ8@LY2*䰭\+cuQ9|tV 3I}Rp%šCniА>b_cjC"L}Nl9]OtiA2Lb'[f.4YkSJAfݲf\;XlOvW#>K/lmhL[Szgp=f $W Tt\XsP7smqNhgВվ0PڞRš:Pw 7u| T,^|nJtc૝p5<ͩ^+F2 HBsLJS20J?T8NPk? nY1;3á+%;iB_Y3I?qKZlfW_]^=?3ML/YsOTX+!% 0`a6+Y ѣ!B~x֪h'">2AzYX ^x&TL$X}o5Z @4>BP!sGw%mbIWcaK*w'k+3ӧ8 E(92x&d}|7P{CEHQЄ-MқUYHoZV&VŶČ"r v I8&ٱu3ڙ2yT('pn Sr!d&FKWpDdgE (-9JjW>6q(;MzIIyp?9 xqA9|7TM"n@Pw5fjxH;k^4T$|fR5a'N#} (-NuOZXlu](l_t8FhDCC>zI ?I01C*+Lmw@5 A3qn 2y)dsz ;ۄ ^ Q69kh." &?V VKC.2`/MnHDƔ鼱qM|YVC؎]Eff7P [.DLҳEQd?ѵeO3N.jU"K}4Yv~ślgm-$E'-X} iQ챥q/g\F]Dwծh.|*%бczAs֮n$̯}mE''9뗔\ܙ @vile?cOdBUȷ&S;\$Dx 6HacHq˕']R܆ _iŦ9eG\AQMPijs~_?Y?f??mߝAsWg:|υ|#NoׯՏؿ~_?W>N_?U?V~}S'N'_wru{uOwuӾN_'p;_ Wi7@Ib6PMM#=_99\hx00qEJȑ>SeE8{`ű#&ug7pa^ѿ2 B+IJb[۫ 82[ XȆL y2Mix)W#E@ B rVQ"z?~)w1TQ 8g Ͷ+F [D\:`RyQo "@s Kns\cv\ *ဓnAq_޷ojtعSeZfڏQ 2|G^]$fIw;&k^ \TWZjwNmy|5: KOh2-3`4̘znH( 6b^:lNܢۍietExNZ>U{e$_:=Cpsyԥd'VAb5KA&X!OtۿF#"lm!^XifY(.YzvnGlΉW0;TNpZܱf@QcCMG[P)RY+lJ{~ѕ 9h,]ѺV$kU3,2Z;. DaL"&(ػ1駞W2c;˨l 8D(%؝]XŞp@eU~W#5'HPܦFBɯmZ.ӧ5Z8mG9pMcp μ ]@(*fP. ͫi7@:zB-o;.qE\ь5sR8ƇzUYLSXGA+W ^Ji87ؠۉU߆&jVBX5HgKƐO(Ax~}to>DhJddWX*6e<-_Vasaf$ =P+1`xo:"DY!Q]ܪ[f3{l\nLj+mM?l=}4<?ޕ䀞3~M8L6w^aT08*l!|mH8nŀpӽ?#qhvQvؾohGN '\'fzGTQ18cUr2`*4>Uihu O9:!h ?8Д!2QZrUG>^y1&1ݑŋ'߮l9lyO=xifcN(X٩Jf6CW+5 \/\oo| kÎRJlUIc Sf-hd_vdwQ~ f7v.C3amHȑ1/z_ypx{]pAiQ"Im,l,e 5I e?{n)Gm eQ`d~j~ISݷ}0:n0. u[7˸ GMx7 ) *хt`pn7mzCK?z,r]wC ]%V~,*8D2P<-.Kv}{RpY]L$6qRyہ4T7(Q.t}pdJ>+徶P""_Drh33 ETD̻ț2shXb`v%has :ux!JFml3Ljq{~fL75BaVZ l(hи /m0r1ds>o x&2VӥAL'=LB璻Ь)`PKXX S`S4 <@m^ᯡ<ʯEus9 0&+7".09%& ޜ6pB/ *Fɭ>Fhuєޒ&lҲU?d&6~IZ%|> rP+9JuC-fSz @ɑ3'ü`?&faXl %I"4~a0"kAb[$¦lظY/JiaTg|]ᘛS &sNF%Ґ>BprX 'y34tFO"̇DT^G=4ޮNy>4ɽ 8}t%|%(=3,I!:tۇI?9w%ES6> XN#=tAx!t혨mudBHJDRM0QOǺ@4S6jۺqmav{ !+:SsBn@٤!;QJI WnD?&Q[ (6u3w#vr6~e/&L:FU>BU[%kE5.A+TX'KS. ^mI[X(~V ('-:> Zdx1pRNꓹ|л<:48.b8S$%_Ml#ю*21HGMyf"t*\ʩÉ\ڱLrbk@l9s ǿxrPX ^7oj QRc=9&~VGSҸ>It,b FCo"L'*З~SɿZ䂰 -CZ#ή_8~L:~{.Ndspt!bKieUd$Jok_Y ]L͡aM[gy_im'nh?]QU':raX#8G:.R&tY,ۈ9LLt.3z΁jCdURe ͇k%˱e^u*=t}t>[S qRMm6yo{pqA᭲,4OAڧ*MYR#>%VU=T˞!SPXf lߧ#,|ZaY':AKS(QA$ALaotӧ371Kyv#NCAz`\/5st;Sh/^G31_ +Dt _6LK6[=0c~R3E M?#uϝ{vUkL; T"iyF;Q1_gOؼVO]ڎ|Z~DLb06<fBk.oj%KTvnYM7 hѳ%9tБ+C!}, 3x /mP므ʥFZL)xBޗfQ4˯ׂ3&n7  .W5Sع9 1c\ _)%WvAQ MxqUXTi=/KWCWP^k1a 74U &p'J!,⠍MVG~v @Lhs >@r<qdbܷ,^h ddr8"16X8J$Ma K9,%΂ϕ؟^TI-|ܢpKu{ |LCyIm[M,5ɕp)"&7~9JWU-,q}yyWFJ\\2͘6IsQ &g=\} JJTp (y @j"IƞB6G۸B C5RTPPf9\q-Z¡*ܰ -~GwbȘ)v~ZfXl~h z1P69 S(іMSNZ_e>w)m6q;j310(_4gj27#Oz49B&M٣)-T5d +D9a̱^eD0t=~nX>y6or1E;Z}ryc_u,p,NH'3fPZ)4)D' ə~[DtiP!Ѡ 끦J֩/YP{OW̓N: ;{~S~0VTcX*Pu㞿{"X}4- 7KEP2Gv?3h}.إee)A6Wa5 )^NX*yz~c"X}c)a vȮGgnBc@ƮZkHMƺk(?F F\]'[+g"ZYfZ  &-Rw_0%y?zܫ)ng*cd" 8"kJ85*|'QP#鼱@ͽk3TEp 2ع/<;s/XWtsRBr6|0 [˲V9ez{+&0@pDʓ״֛)hacU+aʿ b*QSS|~F{ϦxVǴAAb`v#zNH "qf?KcY]= %E c ;_ .td kQy>TzƝ0::Iד˓[nL:-?0=WΕR0_=A$ \Ϫs(;|n_6!ZPUƔ-rXįҳs<-:ソRO)(Xv'u}8Y'|s]Nע8G(g_ KUʸ4~s7t4q |tЉhO2 alǚ0^*Y1Y!.e'dLӖ'v+K:nuM9g1 Qz_ Y(Oxp 4}(CbpU–Z2s>6pr1؃XB79IaSג(3<gf w7cT;ެ)0P=⵲^760Fmp*_d%W8yr %\m ˈ^oadN⩎qHqHHx[3c|3Qf~xfU>=9!anZhx.ڊ YOV >Ф >SFK 5>1n_S% 5 S/q.Y-=ߩ@}(CR45cluswgNrǵ @ɞkFϲ@ o#0vNq%c 'd0A|Ƹ;* H4]}RaaGAX]K >a=&b6$ܩ࿼+gJа جJ*}vd>Fт[p뇒͙ޒlɾwCeԴ,68Bv؉eα}S@(|faa؏\ NoDsmڛah 1ݯcRz_p ] pBSU (&M.ۥwCڏfsώE1GG vmbINn"r>h[Q>c -]P~2=P(e-8BN#Oas`s1#gHbP ?xpTeD|6#kۄhIKܙoe= BBH^+)3:`6Lj1d.ىNx8XytU,C˺x?[ʯ-)ێ^0 ~ɥn*T{gCaKx0DOS= [7Rp«Ɍ-~#ض%WQ+H}Bq:PZA/ i0pS0uTJ4pR¤UiM^:||:'n*IG5!=TQHn"h^L o$a# 9 eFqߑΪ unq(2ZC+D5vLXMw\6lf'-fMi_4:#Uا!PWbK.@X qyb!袦a0&1y1*65 [^_!@rz7؅N$XiS۲n'.ĭ2JJ$E[f~C}z`Wwx\5&moH ,jUQ!J?{ʽ 3c'~1 r[_$ASǛ=~>HX+^Wt7!Yg: mld 7!&Bo}~ )%ESBaKE^`s^س'Vd(v}'%&ra&NMܖl;<5:IePjR}d.`\N6%ghi{qa,U4%-7PXP 7?5ݸA馚Yz[ j #mrg9&;l3"\*Gj(pX 4.cƢ:1GJpuKA$YAC;Q:vɑ"09 Fit>EھaG׼K.8z֛P~u(t?]6@Z!3{XodL0PLӾaf_ܱP{χfriy_*VAȢ/ VRr#f|$[X2`A5dI? W͋+rU QLy`.h2eh;-nI_8ٻ!/wm H9{ކI /rmu,_I&R2-@1eggiu^o~4% yGm=Kq=&gwT GGKAʋ{%)4Cm^c7usRYDϱ2G+h0uc'3/txzZе{ݶJosY~&!\v U jRIQ|]BΘ*FzgpS ߪ}|UĐ }4g+DĚhiUzEA m-@,MS's=T$4A6I)F'x(5 ORʪO`sO$(K֘Ì*]~Ȍ ֽ!o@'EuK>:ܺnpYm*;>M՞q)I!_p Sғ7-gY̎Ŧi%lWrh-0)+!uA2Wh8>@BUd =;<佰`h OұUkR+U"֝* D'x,Z tOS$4\65GMߜ}rb.*]*t%ׄI- G sg\z/y@}v/h?Y};|vapſռ`# "XRp@$(B`?:t!i{mcgwg#{vܳUn=2=0hIILyt .Ťl#Uhnʻ- I`4}XL>ӃE%~KenJA'jvu/WIG:dwk3hm>SY;͉0u^Ώ^3%2BnfJ=unxMY3 Ԟg/iS*9M3г#Z+p*Z* :sQ,HwTl:3=M$%})W\=a@˞n7u@ZDJ[*s*ݬHЬ.]-0g0ޜd6b3LGTn7?4A)~(xXLw㖶>}vez!4n0~q$H'}?򯛞}|o=2Y kQaq6Z=Mc`=ܥ!7 ]쯑B!ًx_(P- i1d0?{7+"nqq8,ӱ{xro7F._1$^);BDwhxe(Ԑ>:JF]FM kè syp.:9lM׍7sr@?vfGR 3?1}.;:ð'O>G`sP>8?>ũB]WLb, SrťlDWaS{x%<&hxM*fUI΢ZNeg*GdX:{/WLvc(r2)Gz]X؀#C\4P1&l$PCVfbv(sjzy:[&;z欇C_LEps^@UCϽ-Dwz:36x/мw.m=wd;esҚ&HAW$k~@d y_LI!M՞$sD9J׆ɒC0Qq}]m(637JG!w'u@_=Ǡ1/baǷ/ޑ!b8I(jδ0I)2(.-/b+FAIGICe p.{̾W\JxQiҍu@XRzrz{:5=)3=D5H_iYTZɂ/_1h@˖W^rJggfhu.fR%w5^c]-ʬH8 G·yNhhwˉCxky΋1t`uFn8u:XoQb FE[b4Rit]%!^e!.1ʑ;"v3!@f@>I|Ѫ&kz} FPt,a[WR)p FK]S[`k/iHM6:77]C]5o|^.e04]W࣍ARy#p12zJZ?%ԴLp_y~%L`ehi(Qr#]DzF>|#GEu7gBPmX)e$EHB|jzMqF 5v7=lSϣAx;^ ~ÿ`# w!Aq;R|vGZt{@,8A2YuVS~jh{\`NWzJطZKKqy4JVgzPɌ߄J t Wv8O~F̌&@`aL8QVNLqØv$[Z:l!G;m&[e܀D$WYVQĚvv׊p0;D$Ͷfwq#;HgkK%|;c8ޅtwQHPF>5-~CSPpo?j gIP 8دxy#kS foRI GV9GuN3cܮrk#CҦPaVV[pIp儋i2_otW/khpZܽ©SX a+_BrC&siȉmQ䋭$ja@̧DE.'X<ӪpS &T@T4y@`KSC< (B`L4YyaR8cG{øC$d fZ*r :< Ō#:ZN`{rO)f=39#ք1D 9Aηh(@^MAUFO>-oAyL:7EE`E=j(9jĺ] u,s)H#6YP*sjz\lb( UѷkOmIne?`^ܕ+I D=S:1Sm$u$biomk%uOQtɋb2U*O~ulTE@ mZ9۟4~%姒>Xь j~ h#vY0#(ɯTR9ҒeVs:+q-:\aȉT*DF3GJ\9w;3Ӈ0X /0~E3HB=B oJ{B7CܼFBm S?ߔ _ ]-+&-ˉ$5m88G U"U重¼x~ ܤvO:Fٖk{w|&u+֤(y#񸳹ʳX^1=b:OĜajofsg`S>Jb u(}Gzn`ZDFgM53AzCڭ!$r*YS8\dA.Si떭JcI)gGl>F MP)cJ<Ɋk6H#|[Ī ?'0\G C1LLVҕ~zun R %rǑŘԅ_gd܁&1WpO0MҺ? D%cj3;\ >eycZ4l.GJO+,tl  G.tQDQC׉!N: 3'-J34*MtL$.A>$umz7ðc LRSܗL_dL~| ǡ&*|* wY?Ab¼ZS 9F3LT1ZER}tPxE±j%4`34o-~`0D Y.X3K_r gyMlX XYwU _2Q `WnPd"iZ6̪rw8 'ʀkA"q QZ{P wO+O?G7G 0xɋ,(fo;[-܈NǸ@ 5GgX XxXn9}Íd@%y o> cYAvFݾ.y Ge)iRFo(4@WDEG qsnSĆU^뇲ۗN4D-E`8 վ-5Lˬw}D(BO53ѴPBK+&jB>X5u-~-79G&}I (< !oL\ETsԱ\'7q[3&d lZ0t^ƊTT{  2%̏ O+q:GʭB[*ل<aF!nl@C>ԚpPj ?ry#G<nLj^T:K4ٕlַjֈmh&jv5Ͼوk}ƽ*H~|:5GYv13QWsb%ÈkpDqe;Ϋ U\ PØ O Yth\`6eJr{'JZVnIfn?Z-nPceރ =ym4WrmVV QS u'S!E1j{R^*y;JEa51S0 }3=I򺤊{-BUb{Oed9=(b.a;&OjYH&N:K~w@ZvD)Á-S~YUz=I}(}׸2M~h813Jր1ߤ.><ĥZ|GVhs(QΊY^{?m,J; 2HRg]ioӨ5oYk),[ Cےgi9htԥ_ZkP'WCa;޻B l9.tꍉ/yH4b!NZWu1G?3W &+-F}u|r,H)ҦZhKE3ݓU{ͥ8lUF[ aG BޞI,)zqlm.{ pgUE/:HNWGa<4U1RT~јj_El &%}nX^8$Ҙd3 szW{P#g@ Jd,@~`TiTme)R. ptf=ZUHMbc{I:Oh?B 1!&neEyѨO@L%Wtm[zB)bLHF<ݸb(Ps], ߝ|}܄Rbp\6k ̛ ;58+2zT3Ub}5JX/xݕ%qud|p.$57i~20I/\[P.cT)[^{-QgRE:fCq$@\i9,<~`}JY>q>k)7, %2nv?HSrKN.ᷖfPfiPCE$VO޽S6Z`B5-ن~`_$duU rc<˸fFʙs8dDŽ^!Fmx*]Q^ߴ&j-A^(|6?!m“|1ﶹk_EoE~||}O>BU}}Q}wܯ*} >߭.Ak/^gX@7=OYwɮ('-+ǪURWB˭{{B!y/p&|' j"$?1nPFG DB#91Z_*XOp_W}9Ԑk0OG^?#~xs faekv΋k&}fu6+qloce1髬F( ➤3doDiL$:G_TvSqq ))7 +~ ,`HG&{P@VGxhgVF%eh*ɯ†-Soÿ\UNRx{Z@@ O=+z{L0#Ӳ(:, \Q^SisPa_-+89*> 1O7 !f}kmg f+^b;E"IR7>zq%ߡ44ī Kt5?(4Sacf(4(@;Έb`gB o’f,as+6Oq3sU)VsٓrWB7Ef(.`ĴӅڂGuZaWlng)V )FIRQ6?ͼvb8z9f& u)M͓!kYhC_TĈ[,H{ʹo-j?׆{N%p[*I||-s鈀a]^cT<4b tXX[9}a)NgGU;X?~}\}c>*(F~Hk}ɡ s=L>L+|;윲ޫ<,b0ygOs+f2x.wNњ7`\]r0=t.RcOLM)[>5Ғo,ymۧtWBP0*lț|4%IxLCq*̀ktПS$}( jBiar6vAIoz%FKIv߲!#ŢDTe 칂1Eq%GVJ{2CCSgL~62R+%1dYĵۊXix;0eB /)߃}[sgAA_UݽrN!kRge⮏#2[Hdž]8*^moomРaSG6\lˈSgzC5{>V Ou EzY-QIJp18S$۵AVO259`וb{KnuD#@=&pwePNtW+ޢ/#`+]*G: Ah+χCҪ =`糟CPvj|{gX6z9GczW{VV 壝0BE3M;!cظé17_uV5?pv?<<621{^{4|u~j!SW˻=VfT(9ة[SqѦRD`Ç+|X`UV &B!qGXȠucԡR)+tx+,,[*Ȩ$ 3̺6n<6jq%A`Whqk9B:ԉ8+J̆޽h[CרV^^I A!TENip@56ݻf{(T˖3DKMR@/^4.omhuDߥ&a 6PG5N4>se=e@6^P oOcyPޟݤSW.JOE:._|:O"LߓB9ςiVF8"Jm7έ?VQ(~eq^"UEl1~4LdM X1e@ϗeผL1eRXջyРǂVDzxb943$` ܥu:r.Ć N!^?θp>"`Qt9f4@$SGrU`8hWW"zQ<<9PJ!㋆vojw# q 4,QȷSw1xWgL 阉zf3._ y񙯇:DzեThr^hM ̸0)ᡛ#f^O78ZęR\nf b{u&0+6e|"|`d-9u2c[`6+Ӓ00qDY[/)OS:,t/6ɲZ:[Gk)sb66GEú[I./ B[GR>H&1Z&{r5!N5cu#=7}^o2ƾY5-D{p(5ECnW;QlLP 5BNV+@@.GDzb[VkҀ$`{UTp52]=yDYU%"g,,;'iA\XYɃzaJ D 5 gJ!|Ld~G^b5^8)3Z%\H6ӑ[ۘt-͑A0OϬ\[v=ɤ$?swG|ukc_e? $ BT߈(arM=I-ԤlRrD&FYX#SP5A^uc$ZA[6,J V]ٷ{<5#m=R[G*l/0#7+J6+*ڊ8.;O)c'$ m 7~O^+t(˩oL~ЕrvɲOT)R {ZʳA %Ʃ1x3ז~N 㠦hR }VA7]dr eY, RzR,x9(9/ve5MSʞ7!!;Ѷ #1No : +TtQڴ`z̿!_Mɪ f]T㓫LΊh|9vxikÕ*!ѵ~߅S!x:7&"#}V0:I:8azrFo|θ- ]KX[9wI|gTD{3H2HJ"x *¹œ.|LLI+Ȯ~:y ~6Gj!' mU8ШR|Tat}yWl"y>PNH|>|OrȟqP€aTPi[ ~TWŐA|gWE+~ta[y7yA\6 mm\BWۭE&>7 JvN(&3R.Etw8hB/C<#Z_Ί9K[+\$/pcY %1dF)Qh7ڙb+9keJx0S7ƭW@l5 XA&7AI,ic]^0-iV+FlNVh_kDWҍ4R${}ԏ]VwN\gz-Kpq|±rmknor7th>*"8x8ݛMLߢKK§Wmvػɚ}[Q8L';9)cHKI0-C诖'ztoQ@/$B h6+3;tE9]J*"7)oĹk (SBj& IV<5Ժ2[zq Lz0߯p/G_|xt^wi~UsU?DΈt:݆ Rw oZ>ܤ_`q9Lhބ;nڑs0Pp l27+o’LkႮR# VD ?H23f=At١#/ Rq+B?2_q~xeC^%%uz\5nU#M)iZxэ?5(ig|$N^3⥀cm/Ju%$7G4x1yڛv?1 9u3"Dt ֍3ǧ<#^QV-Y` :Kb, nY[icnV Baranym-1.1.0/src/gui-osx/SDLMain.m0000664000175000017500000001720513454637621014775 0ustar joyjoy/* SDLMain.m - main entry point for our Cocoa-ized SDL app Initial Version: Darrell Walisser Non-NIB-Code & other changes: Max Horn Feel free to customize this file to suit your needs Adapted for aranym */ #import "SDL_compat.h" #import "SDLMain.h" #import /* for MAXPATHLEN */ #import #import "parameters.h" static int gArgc; static char **gArgv; static BOOL gFinderLaunch; static BOOL gCalledAppMainline = FALSE; char gAranymFilesDirectory[MAXPATHLEN]; // Path to the "AranymFiles" folder /* these were renamed in SDK 10.12 and above */ #if !defined(MAC_OS_X_VERSION_10_12) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12 #define NSAlertStyleWarning NSWarningAlertStyle #define NSAlertStyleInformational NSInformationalAlertStyle #define NSAlertStyleCritical NSCriticalAlertStyle #endif @interface NSApplication (SDLApplication) @end @implementation NSApplication (SDLApplication) /* Invoked from the Quit menu item */ - (void)terminate:(id)sender { /* Post a SDL_QUIT event */ SDL_Event event; event.type = SDL_QUIT; SDL_PushEvent(&event); } @end /* The main class of the application, the application's delegate */ @implementation SDLMain /* The user selected the "Preferencs..." menu entry */ - (IBAction)doSetup:(id)sender { SDL_Event event; event.type = SDL_KEYDOWN; event.key.keysym.sym = bx_options.hotkeys.setup.sym; event.key.keysym.mod = bx_options.hotkeys.setup.mod; SDL_PushEvent(&event); } /* The user selected the "Fullscreen" menu entry */ - (IBAction)doFullscreen:(id)sender { SDL_Event event; event.type = SDL_KEYDOWN; event.key.keysym.sym = bx_options.hotkeys.fullscreen.sym; event.key.keysym.mod = bx_options.hotkeys.fullscreen.mod; SDL_PushEvent(&event); } /* The user selected the "Screenshot" menu entry */ - (IBAction)doScreenshot:(id)sender { SDL_Event event; event.type = SDL_KEYDOWN; event.key.keysym.sym = bx_options.hotkeys.screenshot.sym; event.key.keysym.mod = bx_options.hotkeys.screenshot.mod; SDL_PushEvent(&event); } /* The user selected the "Reboot" menu entry */ - (IBAction)doReboot:(id)sender { SDL_Event event; event.type = SDL_KEYDOWN; event.key.keysym.sym = bx_options.hotkeys.warmreboot.sym; event.key.keysym.mod = bx_options.hotkeys.warmreboot.mod; SDL_PushEvent(&event); } /* The user selected the "Reboot" menu entry */ - (IBAction)doDebug:(id)sender { SDL_Event event; event.type = SDL_KEYDOWN; event.key.keysym.sym = bx_options.hotkeys.debug.sym; event.key.keysym.mod = bx_options.hotkeys.debug.mod; SDL_PushEvent(&event); } /* A nice joke :-) */ - (IBAction)help:(id)sender { NSRunAlertPanel (@"Oh help, where have ye gone?", @"Sorry, there is no help available.\n\nThis message brought to you by We Don't Document, Inc.\n\n", @"Rats", @"Good, I never read it anyway", nil); } /* Set the working directory to the .app's parent directory */ - (void) setupWorkingDirectory:(BOOL)shouldChdir { if (shouldChdir) { char parentdir[MAXPATHLEN]; CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle()); CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url); if (CFURLGetFileSystemRepresentation(url2, true, (UInt8 *)parentdir, MAXPATHLEN)) { assert ( chdir (parentdir) == 0 ); /* chdir to the binary app's parent */ } CFRelease(url); CFRelease(url2); } } - (void) findAranymFilesDirectory { // get the application's bundle, thus it's name (ARAnyM) NSBundle* bundle=[NSBundle mainBundle]; NSDictionary *infoDict = [bundle infoDictionary]; NSArray* searchPaths = [infoDict objectForKey: @"AranymHomeDirectories"]; // helper to check existence NSFileManager* fileManager = [NSFileManager defaultManager]; BOOL isDirectory = NO; // iterate through all folders and check if they exist NSEnumerator* searchPathEnum = [searchPaths objectEnumerator]; NSString* currentPath; while ((currentPath = [searchPathEnum nextObject]) != nil) { currentPath = [[currentPath stringByExpandingTildeInPath] stringByStandardizingPath]; [fileManager fileExistsAtPath: currentPath isDirectory: &isDirectory]; [currentPath getCString: gAranymFilesDirectory maxLength: MAXPATHLEN encoding: NSUTF8StringEncoding]; if (isDirectory) // it's a valid and existing directory break; } // if Preferences folder couldn't be found, take last choice if (currentPath == nil) currentPath = [[[searchPaths lastObject] stringByExpandingTildeInPath] stringByStandardizingPath]; // store this path, convert it to a C string and copy into buffer [currentPath getFileSystemRepresentation: gAranymFilesDirectory maxLength: MAXPATHLEN]; char realPath[MAXPATHLEN]; // Temporary storage for the resolved path realpath(gAranymFilesDirectory, realPath); strncpy(gAranymFilesDirectory, realPath, MAXPATHLEN); } -(void) applicationWillFinishLaunching:(NSNotification *)notification { #if defined(MAC_OS_X_VERSION_10_12) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_12) if (NSAppKitVersionNumber > 1500) { [NSWindow setAllowsAutomaticWindowTabbing: NO]; } #endif } /* Called when the internal event loop has just started running */ - (void) applicationDidFinishLaunching: (NSNotification *) note { int status; /* Set the working directory to the .app's parent directory */ [self setupWorkingDirectory:gFinderLaunch]; [self findAranymFilesDirectory]; #ifdef ENABLE_LILO /* Enable linux booting if available! */ boot_lilo = 1; #endif /* Hand off to main application code */ gCalledAppMainline = TRUE; status = SDL_main (gArgc, gArgv); /* We're done, thank you for playing */ exit(status); } @end void guialert(const char *fmt, ...) { va_list args; char *buf = NULL; int ret; va_start(args, fmt); vfprintf(stderr, fmt, args); fputs("\n", stderr); va_end(args); va_start(args, fmt); ret = vasprintf(&buf, fmt, args); va_end(args); if (ret >= 0) { NSRunAlertPanel (@"Error:", @"%s", @"Ok", nil, nil, buf); free(buf); } } #if !SDL_VERSION_ATLEAST(2, 0, 0) SDL_GLContext SDL_GL_GetCurrentContext(void) { return [NSOpenGLContext currentContext]; } #endif /* * Only called with ctx != 0, * to restore the current SDL context */ void SDL_GL_SetCurrentContext(SDL_GLContext ctx) { NSAutoreleasePool *pool; pool = [[NSAutoreleasePool alloc] init]; NSOpenGLContext *nscontext = (NSOpenGLContext *)ctx; [nscontext makeCurrentContext]; [pool release]; } #ifdef main # undef main #endif static int IsRootCwd(void) { char buf[MAXPATHLEN]; char *cwd = getcwd(buf, sizeof (buf)); return cwd != NULL && strcmp(cwd, "/") == 0; } static int IsFinderLaunch(int argc, char **argv) { /* -psn_XXX is passed if we are launched from Finder, SOMETIMES */ if ( (argc >= 2) && (strncmp(argv[1], "-psn", 4) == 0) ) { return 1; } else if ((argc == 1) && IsRootCwd()) { /* we might still be launched from the Finder; on 10.9+, you might not get the -psn command line anymore. If there's no command line, and if our current working directory is "/", it might as well be a Finder launch. */ return 1; } return 0; /* not a Finder launch. */ } /* Main entry point to executable - should *not* be SDL_main! */ int main (int argc, char **argv) { /* Copy the arguments into a global variable */ /* This is passed if we are launched by double-clicking */ if (IsFinderLaunch(argc, argv)) { gArgv = (char **) SDL_malloc(sizeof (char *) * 2); gArgv[0] = argv[0]; gArgv[1] = NULL; gArgc = 1; gFinderLaunch = YES; } else { int i; gArgc = argc; gArgv = (char **) SDL_malloc(sizeof (char *) * (argc+1)); for (i = 0; i <= argc; i++) gArgv[i] = argv[i]; gFinderLaunch = NO; } NSApplicationMain (argc, (const char **)argv); return 0; } aranym-1.1.0/src/gui-osx/SDLMain.h0000664000175000017500000000077313454637621014772 0ustar joyjoy/* SDLMain.m - main entry point for our Cocoa-ized SDL app Initial Version: Darrell Walisser Non-NIB-Code & other changes: Max Horn Feel free to customize this file to suit your needs */ #import @interface SDLMain : NSObject - (IBAction)doSetup:(id)sender; - (IBAction)doFullscreen:(id)sender; - (IBAction)doScreenshot:(id)sender; - (IBAction)doReboot:(id)sender; - (IBAction)doDebug:(id)sender; - (IBAction)help:(id)sender; @end aranym-1.1.0/src/gui-osx/Info.plist0000664000175000017500000000261213454637621015334 0ustar joyjoy AranymHomeDirectories Aranym_files ~/Documents/Aranym_files CFBundleDevelopmentRegion English CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIconFile aranym.icns CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName ${EXECUTABLE_NAME} CFBundlePackageType APPL CFBundleShortVersionString ${CURRENT_PROJECT_VERSION} CFBundleSignature ???? CFBundleVersion ${CURRENT_PROJECT_VERSION} LSHasLocalizedDisplayName NSHumanReadableCopyright GNU General Public License NSMainNibFile aranym NSPrincipalClass NSApplication LSMinimumSystemVersionByArchitecture x86_64 10.6.0 i386 10.4.0 ppc 10.4.0 aranym-1.1.0/src/gui-osx/German.lproj/0000775000175000017500000000000013454637621015721 5ustar joyjoyaranym-1.1.0/src/gui-osx/German.lproj/aranym.nib/0000775000175000017500000000000013454637621017757 5ustar joyjoyaranym-1.1.0/src/gui-osx/German.lproj/aranym.nib/objects.nib0000664000175000017500000000505513454637621022107 0ustar joyjoy streamtyped@NSIBObjectDataNSObjectNSCustomObject)@@NSMutableStringNSString+ NSApplicationi NSMenuItemNSMenui@@@ MacAranymNSMutableArrayNSArray i@@IIi@@@@:i@Über MacAranymNSCustomResource)NSImageNSMenuCheckmarkNSMenuMixedState@Einstellungen...,@MacAranym ausblendenhAndere ausblenden@MacAranym beendenq _NSAppleMenuAlle einblendenWindow MinimierenmZoom@Alle nach vorne bringen_NSWindowsMenuSDLMainȠsubmenuAction:Ƞ Emulation̈́ΠNeustartrΠBildschirmfotosΠVollbildfΠDebugd_NSWindowsMenuǒȠHilfeބߠMacAranym Hilfe? _NSMainMenuWindowΖûȖΖȖĻȖ NSFontManagerȖΖߖSDLMain˖Ζݖ̖ȕل NSMenuItem122̄ NSMenuItem11Є NSMenuItem12 File's Ownerք NSMenuItem121愙 Font ManagerȄMainMenu΄NSMenuӄ NSMenuItem12 NSMenuItem߄2 NSMenuItem1݄1ᄘ1111 NSMutableSetNSSetINSNibControlConnectorNSNibConnector@@@orderFrontStandardAboutPanel:hideOtherApplications:hide:unhideAllApplications:NSNibOutletConnector脙delegate脙help: terminate:performMiniaturize:ąarrangeInFront: performZoom:脙 doReboot:脙 doScreenshot:脙 doFullscreen:脙doSetup:脙doDebug:-@iցqosājwĺai9gف{ DjӁcv%Ёfo΁bn:uÁmp8`k}ǁh L~IBCocoaFrameworkaranym-1.1.0/src/gui-osx/German.lproj/aranym.nib/info.nib0000664000175000017500000000106613454637621021407 0ustar joyjoy IBDocumentLocation 71 73 356 240 0 0 1680 1028 IBEditorPositions 29 371 677 312 44 0 0 1680 1028 IBFramework Version 446.1 IBOpenObjects 29 IBSystem Version 8R2218 aranym-1.1.0/src/gui-osx/German.lproj/aranym.nib/classes.nib0000664000175000017500000000073413454637621022112 0ustar joyjoy{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { doDebug = id; doFullscreen = id; doReboot = id; doScreenshot = id; doSetup = id; help = id; }; CLASS = SDLMain; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }aranym-1.1.0/src/gui-osx/English.lproj/0000775000175000017500000000000013454637621016101 5ustar joyjoyaranym-1.1.0/src/gui-osx/English.lproj/aranym.nib/0000775000175000017500000000000013454637621020137 5ustar joyjoyaranym-1.1.0/src/gui-osx/English.lproj/aranym.nib/objects.nib0000664000175000017500000000502013454637621022257 0ustar joyjoy streamtyped@NSIBObjectDataNSObjectNSCustomObject)@@NSMutableStringNSString+ NSApplicationi NSMenuItemNSMenui@@@ MacAranymNSMutableArrayNSArray i@@IIi@@@@:i@About MacAranymNSCustomResource)NSImageNSMenuCheckmarkNSMenuMixedStatePreferences...,@Hide MacAranymh Hide OthersShow All@Quit MacAranymq _NSAppleMenu@WindowMinimizemZoom_NSWindowsMenuBring All to FrontSDLMainȠsubmenuAction:ǒȠWindowȠHelpHelpРMacAranym Help? _NSMainMenu EmulationׄؠRebootrؠ Screenshotsؠ FullscreenfؠDebugd_NSWindowsMenuȖ NSFontManagerȖؖЖ¼SDLMain˖ؖΖǖȕ̖ؖļȖؖȚㄙ NSMenuItem122DŽ NSMenuItem11ڄ NSMenuItem12 File's Owner NSMenuItem121焙 Font ManagerȄMainMenu؄NSMenu݄ NSMenuItem12 NSMenuItemЄ2 NSMenuItem1΄1ӄ1111ꒄ NSMutableSetNSSetINSNibControlConnectorNSNibConnector@@@orderFrontStandardAboutPanel:hideOtherApplications:hide:unhideAllApplications:NSNibOutletConnector鄙delegate鄙help: terminate:performMiniaturize:arrangeInFront:… performZoom:鄙 doReboot:鄙 doScreenshot:鄙 doFullscreen:鄙doSetup:鄙doDebug:-@ijwl9iǁag{jv݁c D%ځfo؁bn:uāmp8`k}́h Lqos~IBCocoaFrameworkaranym-1.1.0/src/gui-osx/English.lproj/aranym.nib/info.nib0000664000175000017500000000076113454637621021570 0ustar joyjoy IBDocumentLocation 71 73 356 240 0 0 1680 1028 IBEditorPositions 29 371 677 312 44 0 0 1680 1028 IBFramework Version 446.1 IBSystem Version 8R2218 aranym-1.1.0/src/gui-osx/English.lproj/aranym.nib/classes.nib0000664000175000017500000000073413454637621022272 0ustar joyjoy{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { doDebug = id; doFullscreen = id; doReboot = id; doScreenshot = id; doSetup = id; help = id; }; CLASS = SDLMain; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }aranym-1.1.0/src/glenums.c0000664000175000017500000064110513454637621013615 0ustar joyjoy/* GL utility functions, mostly for debug putposes Copyright (C) 2015 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "SDL_compat.h" #include "SDL_opengl_wrapper.h" #include #include #include #ifdef ENABLE_OPENGL struct glenum { GLenum val; const char *name; }; /* * This table must be sorted by number. * If you have to insert entries, * use gl_print_enums() below and insert the * result back here */ #define GL_ENUM(x) { x, #x }, static struct glenum const glenums[] = { /* 0x0000 */ GL_ENUM(GL_NONE) /* 0x0000 */ GL_ENUM(GL_NO_ERROR) /* 0x0000 */ GL_ENUM(GL_POINTS) /* 0x0001 */ GL_ENUM(GL_LINES) /* 0x0001 */ GL_ENUM(GL_RESTART_SUN) /* 0x0002 */ GL_ENUM(GL_LINE_LOOP) /* 0x0002 */ GL_ENUM(GL_REPLACE_MIDDLE_SUN) /* 0x0003 */ GL_ENUM(GL_LINE_STRIP) /* 0x0003 */ GL_ENUM(GL_REPLACE_OLDEST_SUN) /* 0x0004 */ GL_ENUM(GL_TRIANGLES) /* 0x0005 */ GL_ENUM(GL_TRIANGLE_STRIP) /* 0x0006 */ GL_ENUM(GL_TRIANGLE_FAN) /* 0x0007 */ GL_ENUM(GL_QUADS) /* 0x0008 */ GL_ENUM(GL_QUAD_STRIP) /* 0x0009 */ GL_ENUM(GL_POLYGON) /* 0x000A */ GL_ENUM(GL_LINES_ADJACENCY) /* 0x000A */ GL_ENUM(GL_LINES_ADJACENCY_ARB) /* 0x000A */ GL_ENUM(GL_LINES_ADJACENCY_EXT) /* 0x000B */ GL_ENUM(GL_LINE_STRIP_ADJACENCY) /* 0x000B */ GL_ENUM(GL_LINE_STRIP_ADJACENCY_ARB) /* 0x000B */ GL_ENUM(GL_LINE_STRIP_ADJACENCY_EXT) /* 0x000C */ GL_ENUM(GL_TRIANGLES_ADJACENCY) /* 0x000C */ GL_ENUM(GL_TRIANGLES_ADJACENCY_ARB) /* 0x000C */ GL_ENUM(GL_TRIANGLES_ADJACENCY_EXT) /* 0x000D */ GL_ENUM(GL_TRIANGLE_STRIP_ADJACENCY) /* 0x000D */ GL_ENUM(GL_TRIANGLE_STRIP_ADJACENCY_ARB) /* 0x000D */ GL_ENUM(GL_TRIANGLE_STRIP_ADJACENCY_EXT) /* 0x000E */ GL_ENUM(GL_PATCHES) /* 0x00C0 */ GL_ENUM(GL_SHARED_EDGE_NV) /* 0x00F0 */ GL_ENUM(GL_RESTART_PATH_NV) /* 0x0100 */ GL_ENUM(GL_ACCUM) /* 0x0101 */ GL_ENUM(GL_LOAD) /* 0x0102 */ GL_ENUM(GL_RETURN) /* 0x0103 */ GL_ENUM(GL_MULT) /* 0x0104 */ GL_ENUM(GL_ADD) /* 0x0200 */ GL_ENUM(GL_NEVER) /* 0x0201 */ GL_ENUM(GL_LESS) /* 0x0202 */ GL_ENUM(GL_EQUAL) /* 0x0203 */ GL_ENUM(GL_LEQUAL) /* 0x0204 */ GL_ENUM(GL_GREATER) /* 0x0205 */ GL_ENUM(GL_NOTEQUAL) /* 0x0206 */ GL_ENUM(GL_GEQUAL) /* 0x0207 */ GL_ENUM(GL_ALWAYS) /* 0x0300 */ GL_ENUM(GL_SRC_COLOR) /* 0x0301 */ GL_ENUM(GL_ONE_MINUS_SRC_COLOR) /* 0x0302 */ GL_ENUM(GL_SRC_ALPHA) /* 0x0303 */ GL_ENUM(GL_ONE_MINUS_SRC_ALPHA) /* 0x0304 */ GL_ENUM(GL_DST_ALPHA) /* 0x0305 */ GL_ENUM(GL_ONE_MINUS_DST_ALPHA) /* 0x0306 */ GL_ENUM(GL_DST_COLOR) /* 0x0307 */ GL_ENUM(GL_ONE_MINUS_DST_COLOR) /* 0x0308 */ GL_ENUM(GL_SRC_ALPHA_SATURATE) /* 0x0400 */ GL_ENUM(GL_FRONT_LEFT) /* 0x0401 */ GL_ENUM(GL_FRONT_RIGHT) /* 0x0402 */ GL_ENUM(GL_BACK_LEFT) /* 0x0403 */ GL_ENUM(GL_BACK_RIGHT) /* 0x0404 */ GL_ENUM(GL_FRONT) /* 0x0405 */ GL_ENUM(GL_BACK) /* 0x0406 */ GL_ENUM(GL_LEFT) /* 0x0407 */ GL_ENUM(GL_RIGHT) /* 0x0408 */ GL_ENUM(GL_FRONT_AND_BACK) /* 0x0409 */ GL_ENUM(GL_AUX0) /* 0x040A */ GL_ENUM(GL_AUX1) /* 0x040B */ GL_ENUM(GL_AUX2) /* 0x040C */ GL_ENUM(GL_AUX3) /* 0x0500 */ GL_ENUM(GL_INVALID_ENUM) /* 0x0501 */ GL_ENUM(GL_INVALID_VALUE) /* 0x0502 */ GL_ENUM(GL_INVALID_OPERATION) /* 0x0503 */ GL_ENUM(GL_STACK_OVERFLOW) /* 0x0504 */ GL_ENUM(GL_STACK_UNDERFLOW) /* 0x0505 */ GL_ENUM(GL_OUT_OF_MEMORY) /* 0x0506 */ GL_ENUM(GL_INVALID_FRAMEBUFFER_OPERATION) /* 0x0506 */ GL_ENUM(GL_INVALID_FRAMEBUFFER_OPERATION_EXT) /* 0x0507 */ GL_ENUM(GL_CONTEXT_LOST) /* 0x0600 */ GL_ENUM(GL_2D) /* 0x0601 */ GL_ENUM(GL_3D) /* 0x0602 */ GL_ENUM(GL_3D_COLOR) /* 0x0603 */ GL_ENUM(GL_3D_COLOR_TEXTURE) /* 0x0604 */ GL_ENUM(GL_4D_COLOR_TEXTURE) /* 0x0700 */ GL_ENUM(GL_PASS_THROUGH_TOKEN) /* 0x0701 */ GL_ENUM(GL_POINT_TOKEN) /* 0x0702 */ GL_ENUM(GL_LINE_TOKEN) /* 0x0703 */ GL_ENUM(GL_POLYGON_TOKEN) /* 0x0704 */ GL_ENUM(GL_BITMAP_TOKEN) /* 0x0705 */ GL_ENUM(GL_DRAW_PIXEL_TOKEN) /* 0x0706 */ GL_ENUM(GL_COPY_PIXEL_TOKEN) /* 0x0707 */ GL_ENUM(GL_LINE_RESET_TOKEN) /* 0x0800 */ GL_ENUM(GL_EXP) /* 0x0801 */ GL_ENUM(GL_EXP2) /* 0x0900 */ GL_ENUM(GL_CW) /* 0x0901 */ GL_ENUM(GL_CCW) /* 0x0A00 */ GL_ENUM(GL_COEFF) /* 0x0A01 */ GL_ENUM(GL_ORDER) /* 0x0A02 */ GL_ENUM(GL_DOMAIN) /* 0x0B00 */ GL_ENUM(GL_CURRENT_COLOR) /* 0x0B01 */ GL_ENUM(GL_CURRENT_INDEX) /* 0x0B02 */ GL_ENUM(GL_CURRENT_NORMAL) /* 0x0B03 */ GL_ENUM(GL_CURRENT_TEXTURE_COORDS) /* 0x0B04 */ GL_ENUM(GL_CURRENT_RASTER_COLOR) /* 0x0B05 */ GL_ENUM(GL_CURRENT_RASTER_INDEX) /* 0x0B06 */ GL_ENUM(GL_CURRENT_RASTER_TEXTURE_COORDS) /* 0x0B07 */ GL_ENUM(GL_CURRENT_RASTER_POSITION) /* 0x0B08 */ GL_ENUM(GL_CURRENT_RASTER_POSITION_VALID) /* 0x0B09 */ GL_ENUM(GL_CURRENT_RASTER_DISTANCE) /* 0x0B10 */ GL_ENUM(GL_POINT_SMOOTH) /* 0x0B11 */ GL_ENUM(GL_POINT_SIZE) /* 0x0B12 */ GL_ENUM(GL_POINT_SIZE_RANGE) /* 0x0B12 */ GL_ENUM(GL_SMOOTH_POINT_SIZE_RANGE) /* 0x0B13 */ GL_ENUM(GL_POINT_SIZE_GRANULARITY) /* 0x0B13 */ GL_ENUM(GL_SMOOTH_POINT_SIZE_GRANULARITY) /* 0x0B20 */ GL_ENUM(GL_LINE_SMOOTH) /* 0x0B21 */ GL_ENUM(GL_LINE_WIDTH) /* 0x0B22 */ GL_ENUM(GL_LINE_WIDTH_RANGE) /* 0x0B22 */ GL_ENUM(GL_SMOOTH_LINE_WIDTH_RANGE) /* 0x0B23 */ GL_ENUM(GL_LINE_WIDTH_GRANULARITY) /* 0x0B23 */ GL_ENUM(GL_SMOOTH_LINE_WIDTH_GRANULARITY) /* 0x0B24 */ GL_ENUM(GL_LINE_STIPPLE) /* 0x0B25 */ GL_ENUM(GL_LINE_STIPPLE_PATTERN) /* 0x0B26 */ GL_ENUM(GL_LINE_STIPPLE_REPEAT) /* 0x0B30 */ GL_ENUM(GL_LIST_MODE) /* 0x0B31 */ GL_ENUM(GL_MAX_LIST_NESTING) /* 0x0B32 */ GL_ENUM(GL_LIST_BASE) /* 0x0B33 */ GL_ENUM(GL_LIST_INDEX) /* 0x0B40 */ GL_ENUM(GL_POLYGON_MODE) /* 0x0B41 */ GL_ENUM(GL_POLYGON_SMOOTH) /* 0x0B42 */ GL_ENUM(GL_POLYGON_STIPPLE) /* 0x0B43 */ GL_ENUM(GL_EDGE_FLAG) /* 0x0B44 */ GL_ENUM(GL_CULL_FACE) /* 0x0B45 */ GL_ENUM(GL_CULL_FACE_MODE) /* 0x0B46 */ GL_ENUM(GL_FRONT_FACE) /* 0x0B50 */ GL_ENUM(GL_LIGHTING) /* 0x0B51 */ GL_ENUM(GL_LIGHT_MODEL_LOCAL_VIEWER) /* 0x0B52 */ GL_ENUM(GL_LIGHT_MODEL_TWO_SIDE) /* 0x0B53 */ GL_ENUM(GL_LIGHT_MODEL_AMBIENT) /* 0x0B54 */ GL_ENUM(GL_SHADE_MODEL) /* 0x0B55 */ GL_ENUM(GL_COLOR_MATERIAL_FACE) /* 0x0B56 */ GL_ENUM(GL_COLOR_MATERIAL_PARAMETER) /* 0x0B57 */ GL_ENUM(GL_COLOR_MATERIAL) /* 0x0B60 */ GL_ENUM(GL_FOG) /* 0x0B61 */ GL_ENUM(GL_FOG_INDEX) /* 0x0B62 */ GL_ENUM(GL_FOG_DENSITY) /* 0x0B63 */ GL_ENUM(GL_FOG_START) /* 0x0B64 */ GL_ENUM(GL_FOG_END) /* 0x0B65 */ GL_ENUM(GL_FOG_MODE) /* 0x0B66 */ GL_ENUM(GL_FOG_COLOR) /* 0x0B70 */ GL_ENUM(GL_DEPTH_RANGE) /* 0x0B71 */ GL_ENUM(GL_DEPTH_TEST) /* 0x0B72 */ GL_ENUM(GL_DEPTH_WRITEMASK) /* 0x0B73 */ GL_ENUM(GL_DEPTH_CLEAR_VALUE) /* 0x0B74 */ GL_ENUM(GL_DEPTH_FUNC) /* 0x0B80 */ GL_ENUM(GL_ACCUM_CLEAR_VALUE) /* 0x0B90 */ GL_ENUM(GL_STENCIL_TEST) /* 0x0B91 */ GL_ENUM(GL_STENCIL_CLEAR_VALUE) /* 0x0B92 */ GL_ENUM(GL_STENCIL_FUNC) /* 0x0B93 */ GL_ENUM(GL_STENCIL_VALUE_MASK) /* 0x0B94 */ GL_ENUM(GL_STENCIL_FAIL) /* 0x0B95 */ GL_ENUM(GL_STENCIL_PASS_DEPTH_FAIL) /* 0x0B96 */ GL_ENUM(GL_STENCIL_PASS_DEPTH_PASS) /* 0x0B97 */ GL_ENUM(GL_STENCIL_REF) /* 0x0B98 */ GL_ENUM(GL_STENCIL_WRITEMASK) /* 0x0BA0 */ GL_ENUM(GL_MATRIX_MODE) /* 0x0BA1 */ GL_ENUM(GL_NORMALIZE) /* 0x0BA2 */ GL_ENUM(GL_VIEWPORT) /* 0x0BA3 */ GL_ENUM(GL_MODELVIEW0_STACK_DEPTH_EXT) /* 0x0BA3 */ GL_ENUM(GL_MODELVIEW_STACK_DEPTH) /* 0x0BA3 */ GL_ENUM(GL_PATH_MODELVIEW_STACK_DEPTH_NV) /* 0x0BA4 */ GL_ENUM(GL_PATH_PROJECTION_STACK_DEPTH_NV) /* 0x0BA4 */ GL_ENUM(GL_PROJECTION_STACK_DEPTH) /* 0x0BA5 */ GL_ENUM(GL_TEXTURE_STACK_DEPTH) /* 0x0BA6 */ GL_ENUM(GL_MODELVIEW0_MATRIX_EXT) /* 0x0BA6 */ GL_ENUM(GL_MODELVIEW_MATRIX) /* 0x0BA6 */ GL_ENUM(GL_PATH_MODELVIEW_MATRIX_NV) /* 0x0BA7 */ GL_ENUM(GL_PATH_PROJECTION_MATRIX_NV) /* 0x0BA7 */ GL_ENUM(GL_PROJECTION_MATRIX) /* 0x0BA8 */ GL_ENUM(GL_TEXTURE_MATRIX) /* 0x0BB0 */ GL_ENUM(GL_ATTRIB_STACK_DEPTH) /* 0x0BB1 */ GL_ENUM(GL_CLIENT_ATTRIB_STACK_DEPTH) /* 0x0BC0 */ GL_ENUM(GL_ALPHA_TEST) /* 0x0BC1 */ GL_ENUM(GL_ALPHA_TEST_FUNC) /* 0x0BC2 */ GL_ENUM(GL_ALPHA_TEST_REF) /* 0x0BD0 */ GL_ENUM(GL_DITHER) /* 0x0BE0 */ GL_ENUM(GL_BLEND_DST) /* 0x0BE1 */ GL_ENUM(GL_BLEND_SRC) /* 0x0BE2 */ GL_ENUM(GL_BLEND) /* 0x0BF0 */ GL_ENUM(GL_LOGIC_OP_MODE) /* 0x0BF1 */ GL_ENUM(GL_INDEX_LOGIC_OP) /* 0x0BF1 */ GL_ENUM(GL_LOGIC_OP) /* 0x0BF2 */ GL_ENUM(GL_COLOR_LOGIC_OP) /* 0x0C00 */ GL_ENUM(GL_AUX_BUFFERS) /* 0x0C01 */ GL_ENUM(GL_DRAW_BUFFER) /* 0x0C02 */ GL_ENUM(GL_READ_BUFFER) /* 0x0C10 */ GL_ENUM(GL_SCISSOR_BOX) /* 0x0C11 */ GL_ENUM(GL_SCISSOR_TEST) /* 0x0C20 */ GL_ENUM(GL_INDEX_CLEAR_VALUE) /* 0x0C21 */ GL_ENUM(GL_INDEX_WRITEMASK) /* 0x0C22 */ GL_ENUM(GL_COLOR_CLEAR_VALUE) /* 0x0C23 */ GL_ENUM(GL_COLOR_WRITEMASK) /* 0x0C30 */ GL_ENUM(GL_INDEX_MODE) /* 0x0C31 */ GL_ENUM(GL_RGBA_MODE) /* 0x0C32 */ GL_ENUM(GL_DOUBLEBUFFER) /* 0x0C33 */ GL_ENUM(GL_STEREO) /* 0x0C40 */ GL_ENUM(GL_RENDER_MODE) /* 0x0C50 */ GL_ENUM(GL_PERSPECTIVE_CORRECTION_HINT) /* 0x0C51 */ GL_ENUM(GL_POINT_SMOOTH_HINT) /* 0x0C52 */ GL_ENUM(GL_LINE_SMOOTH_HINT) /* 0x0C53 */ GL_ENUM(GL_POLYGON_SMOOTH_HINT) /* 0x0C54 */ GL_ENUM(GL_FOG_HINT) /* 0x0C60 */ GL_ENUM(GL_TEXTURE_GEN_S) /* 0x0C61 */ GL_ENUM(GL_TEXTURE_GEN_T) /* 0x0C62 */ GL_ENUM(GL_TEXTURE_GEN_R) /* 0x0C63 */ GL_ENUM(GL_TEXTURE_GEN_Q) /* 0x0C70 */ GL_ENUM(GL_PIXEL_MAP_I_TO_I) /* 0x0C71 */ GL_ENUM(GL_PIXEL_MAP_S_TO_S) /* 0x0C72 */ GL_ENUM(GL_PIXEL_MAP_I_TO_R) /* 0x0C73 */ GL_ENUM(GL_PIXEL_MAP_I_TO_G) /* 0x0C74 */ GL_ENUM(GL_PIXEL_MAP_I_TO_B) /* 0x0C75 */ GL_ENUM(GL_PIXEL_MAP_I_TO_A) /* 0x0C76 */ GL_ENUM(GL_PIXEL_MAP_R_TO_R) /* 0x0C77 */ GL_ENUM(GL_PIXEL_MAP_G_TO_G) /* 0x0C78 */ GL_ENUM(GL_PIXEL_MAP_B_TO_B) /* 0x0C79 */ GL_ENUM(GL_PIXEL_MAP_A_TO_A) /* 0x0CB0 */ GL_ENUM(GL_PIXEL_MAP_I_TO_I_SIZE) /* 0x0CB1 */ GL_ENUM(GL_PIXEL_MAP_S_TO_S_SIZE) /* 0x0CB2 */ GL_ENUM(GL_PIXEL_MAP_I_TO_R_SIZE) /* 0x0CB3 */ GL_ENUM(GL_PIXEL_MAP_I_TO_G_SIZE) /* 0x0CB4 */ GL_ENUM(GL_PIXEL_MAP_I_TO_B_SIZE) /* 0x0CB5 */ GL_ENUM(GL_PIXEL_MAP_I_TO_A_SIZE) /* 0x0CB6 */ GL_ENUM(GL_PIXEL_MAP_R_TO_R_SIZE) /* 0x0CB7 */ GL_ENUM(GL_PIXEL_MAP_G_TO_G_SIZE) /* 0x0CB8 */ GL_ENUM(GL_PIXEL_MAP_B_TO_B_SIZE) /* 0x0CB9 */ GL_ENUM(GL_PIXEL_MAP_A_TO_A_SIZE) /* 0x0CF0 */ GL_ENUM(GL_UNPACK_SWAP_BYTES) /* 0x0CF1 */ GL_ENUM(GL_UNPACK_LSB_FIRST) /* 0x0CF2 */ GL_ENUM(GL_UNPACK_ROW_LENGTH) /* 0x0CF3 */ GL_ENUM(GL_UNPACK_SKIP_ROWS) /* 0x0CF4 */ GL_ENUM(GL_UNPACK_SKIP_PIXELS) /* 0x0CF5 */ GL_ENUM(GL_UNPACK_ALIGNMENT) /* 0x0D00 */ GL_ENUM(GL_PACK_SWAP_BYTES) /* 0x0D01 */ GL_ENUM(GL_PACK_LSB_FIRST) /* 0x0D02 */ GL_ENUM(GL_PACK_ROW_LENGTH) /* 0x0D03 */ GL_ENUM(GL_PACK_SKIP_ROWS) /* 0x0D04 */ GL_ENUM(GL_PACK_SKIP_PIXELS) /* 0x0D05 */ GL_ENUM(GL_PACK_ALIGNMENT) /* 0x0D10 */ GL_ENUM(GL_MAP_COLOR) /* 0x0D11 */ GL_ENUM(GL_MAP_STENCIL) /* 0x0D12 */ GL_ENUM(GL_INDEX_SHIFT) /* 0x0D13 */ GL_ENUM(GL_INDEX_OFFSET) /* 0x0D14 */ GL_ENUM(GL_RED_SCALE) /* 0x0D15 */ GL_ENUM(GL_RED_BIAS) /* 0x0D16 */ GL_ENUM(GL_ZOOM_X) /* 0x0D17 */ GL_ENUM(GL_ZOOM_Y) /* 0x0D18 */ GL_ENUM(GL_GREEN_SCALE) /* 0x0D19 */ GL_ENUM(GL_GREEN_BIAS) /* 0x0D1A */ GL_ENUM(GL_BLUE_SCALE) /* 0x0D1B */ GL_ENUM(GL_BLUE_BIAS) /* 0x0D1C */ GL_ENUM(GL_ALPHA_SCALE) /* 0x0D1D */ GL_ENUM(GL_ALPHA_BIAS) /* 0x0D1E */ GL_ENUM(GL_DEPTH_SCALE) /* 0x0D1F */ GL_ENUM(GL_DEPTH_BIAS) /* 0x0D30 */ GL_ENUM(GL_MAX_EVAL_ORDER) /* 0x0D31 */ GL_ENUM(GL_MAX_LIGHTS) /* 0x0D32 */ GL_ENUM(GL_MAX_CLIP_DISTANCES) /* 0x0D32 */ GL_ENUM(GL_MAX_CLIP_PLANES) /* 0x0D33 */ GL_ENUM(GL_MAX_TEXTURE_SIZE) /* 0x0D34 */ GL_ENUM(GL_MAX_PIXEL_MAP_TABLE) /* 0x0D35 */ GL_ENUM(GL_MAX_ATTRIB_STACK_DEPTH) /* 0x0D36 */ GL_ENUM(GL_MAX_MODELVIEW_STACK_DEPTH) /* 0x0D36 */ GL_ENUM(GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV) /* 0x0D37 */ GL_ENUM(GL_MAX_NAME_STACK_DEPTH) /* 0x0D38 */ GL_ENUM(GL_MAX_PROJECTION_STACK_DEPTH) /* 0x0D38 */ GL_ENUM(GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV) /* 0x0D39 */ GL_ENUM(GL_MAX_TEXTURE_STACK_DEPTH) /* 0x0D3A */ GL_ENUM(GL_MAX_VIEWPORT_DIMS) /* 0x0D3B */ GL_ENUM(GL_MAX_CLIENT_ATTRIB_STACK_DEPTH) /* 0x0D50 */ GL_ENUM(GL_SUBPIXEL_BITS) /* 0x0D51 */ GL_ENUM(GL_INDEX_BITS) /* 0x0D52 */ GL_ENUM(GL_RED_BITS) /* 0x0D53 */ GL_ENUM(GL_GREEN_BITS) /* 0x0D54 */ GL_ENUM(GL_BLUE_BITS) /* 0x0D55 */ GL_ENUM(GL_ALPHA_BITS) /* 0x0D56 */ GL_ENUM(GL_DEPTH_BITS) /* 0x0D57 */ GL_ENUM(GL_STENCIL_BITS) /* 0x0D58 */ GL_ENUM(GL_ACCUM_RED_BITS) /* 0x0D59 */ GL_ENUM(GL_ACCUM_GREEN_BITS) /* 0x0D5A */ GL_ENUM(GL_ACCUM_BLUE_BITS) /* 0x0D5B */ GL_ENUM(GL_ACCUM_ALPHA_BITS) /* 0x0D70 */ GL_ENUM(GL_NAME_STACK_DEPTH) /* 0x0D80 */ GL_ENUM(GL_AUTO_NORMAL) /* 0x0D90 */ GL_ENUM(GL_MAP1_COLOR_4) /* 0x0D91 */ GL_ENUM(GL_MAP1_INDEX) /* 0x0D92 */ GL_ENUM(GL_MAP1_NORMAL) /* 0x0D93 */ GL_ENUM(GL_MAP1_TEXTURE_COORD_1) /* 0x0D94 */ GL_ENUM(GL_MAP1_TEXTURE_COORD_2) /* 0x0D95 */ GL_ENUM(GL_MAP1_TEXTURE_COORD_3) /* 0x0D96 */ GL_ENUM(GL_MAP1_TEXTURE_COORD_4) /* 0x0D97 */ GL_ENUM(GL_MAP1_VERTEX_3) /* 0x0D98 */ GL_ENUM(GL_MAP1_VERTEX_4) /* 0x0DB0 */ GL_ENUM(GL_MAP2_COLOR_4) /* 0x0DB1 */ GL_ENUM(GL_MAP2_INDEX) /* 0x0DB2 */ GL_ENUM(GL_MAP2_NORMAL) /* 0x0DB3 */ GL_ENUM(GL_MAP2_TEXTURE_COORD_1) /* 0x0DB4 */ GL_ENUM(GL_MAP2_TEXTURE_COORD_2) /* 0x0DB5 */ GL_ENUM(GL_MAP2_TEXTURE_COORD_3) /* 0x0DB6 */ GL_ENUM(GL_MAP2_TEXTURE_COORD_4) /* 0x0DB7 */ GL_ENUM(GL_MAP2_VERTEX_3) /* 0x0DB8 */ GL_ENUM(GL_MAP2_VERTEX_4) /* 0x0DD0 */ GL_ENUM(GL_MAP1_GRID_DOMAIN) /* 0x0DD1 */ GL_ENUM(GL_MAP1_GRID_SEGMENTS) /* 0x0DD2 */ GL_ENUM(GL_MAP2_GRID_DOMAIN) /* 0x0DD3 */ GL_ENUM(GL_MAP2_GRID_SEGMENTS) /* 0x0DE0 */ GL_ENUM(GL_TEXTURE_1D) /* 0x0DE1 */ GL_ENUM(GL_TEXTURE_2D) /* 0x0DF0 */ GL_ENUM(GL_FEEDBACK_BUFFER_POINTER) /* 0x0DF1 */ GL_ENUM(GL_FEEDBACK_BUFFER_SIZE) /* 0x0DF2 */ GL_ENUM(GL_FEEDBACK_BUFFER_TYPE) /* 0x0DF3 */ GL_ENUM(GL_SELECTION_BUFFER_POINTER) /* 0x0DF4 */ GL_ENUM(GL_SELECTION_BUFFER_SIZE) /* 0x1000 */ GL_ENUM(GL_TEXTURE_WIDTH) /* 0x1001 */ GL_ENUM(GL_TEXTURE_HEIGHT) /* 0x1003 */ GL_ENUM(GL_TEXTURE_COMPONENTS) /* 0x1003 */ GL_ENUM(GL_TEXTURE_INTERNAL_FORMAT) /* 0x1004 */ GL_ENUM(GL_TEXTURE_BORDER_COLOR) /* 0x1005 */ GL_ENUM(GL_TEXTURE_BORDER) /* 0x1006 */ GL_ENUM(GL_TEXTURE_TARGET) /* 0x1100 */ GL_ENUM(GL_DONT_CARE) /* 0x1101 */ GL_ENUM(GL_FASTEST) /* 0x1102 */ GL_ENUM(GL_NICEST) /* 0x1200 */ GL_ENUM(GL_AMBIENT) /* 0x1201 */ GL_ENUM(GL_DIFFUSE) /* 0x1202 */ GL_ENUM(GL_SPECULAR) /* 0x1203 */ GL_ENUM(GL_POSITION) /* 0x1204 */ GL_ENUM(GL_SPOT_DIRECTION) /* 0x1205 */ GL_ENUM(GL_SPOT_EXPONENT) /* 0x1206 */ GL_ENUM(GL_SPOT_CUTOFF) /* 0x1207 */ GL_ENUM(GL_CONSTANT_ATTENUATION) /* 0x1208 */ GL_ENUM(GL_LINEAR_ATTENUATION) /* 0x1209 */ GL_ENUM(GL_QUADRATIC_ATTENUATION) /* 0x1300 */ GL_ENUM(GL_COMPILE) /* 0x1301 */ GL_ENUM(GL_COMPILE_AND_EXECUTE) /* 0x1400 */ GL_ENUM(GL_BYTE) /* 0x1401 */ GL_ENUM(GL_UNSIGNED_BYTE) /* 0x1402 */ GL_ENUM(GL_SHORT) /* 0x1403 */ GL_ENUM(GL_UNSIGNED_SHORT) /* 0x1404 */ GL_ENUM(GL_INT) /* 0x1405 */ GL_ENUM(GL_UNSIGNED_INT) /* 0x1406 */ GL_ENUM(GL_FLOAT) /* 0x1407 */ GL_ENUM(GL_2_BYTES) /* 0x1407 */ GL_ENUM(GL_2_BYTES_NV) /* 0x1408 */ GL_ENUM(GL_3_BYTES) /* 0x1408 */ GL_ENUM(GL_3_BYTES_NV) /* 0x1409 */ GL_ENUM(GL_4_BYTES) /* 0x1409 */ GL_ENUM(GL_4_BYTES_NV) /* 0x140A */ GL_ENUM(GL_DOUBLE) /* 0x140B */ GL_ENUM(GL_HALF_APPLE) /* 0x140B */ GL_ENUM(GL_HALF_FLOAT) /* 0x140B */ GL_ENUM(GL_HALF_FLOAT_ARB) /* 0x140B */ GL_ENUM(GL_HALF_FLOAT_NV) /* 0x140C */ GL_ENUM(GL_FIXED) /* 0x140C */ GL_ENUM(GL_FIXED_OES) /* 0x140E */ GL_ENUM(GL_INT64_NV) /* 0x140F */ GL_ENUM(GL_UNSIGNED_INT64_ARB) /* 0x140F */ GL_ENUM(GL_UNSIGNED_INT64_NV) /* 0x1500 */ GL_ENUM(GL_CLEAR) /* 0x1501 */ GL_ENUM(GL_AND) /* 0x1502 */ GL_ENUM(GL_AND_REVERSE) /* 0x1503 */ GL_ENUM(GL_COPY) /* 0x1504 */ GL_ENUM(GL_AND_INVERTED) /* 0x1505 */ GL_ENUM(GL_NOOP) /* 0x1506 */ GL_ENUM(GL_XOR) /* 0x1506 */ GL_ENUM(GL_XOR_NV) /* 0x1507 */ GL_ENUM(GL_OR) /* 0x1508 */ GL_ENUM(GL_NOR) /* 0x1509 */ GL_ENUM(GL_EQUIV) /* 0x150A */ GL_ENUM(GL_INVERT) /* 0x150B */ GL_ENUM(GL_OR_REVERSE) /* 0x150C */ GL_ENUM(GL_COPY_INVERTED) /* 0x150D */ GL_ENUM(GL_OR_INVERTED) /* 0x150E */ GL_ENUM(GL_NAND) /* 0x150F */ GL_ENUM(GL_SET) /* 0x1600 */ GL_ENUM(GL_EMISSION) /* 0x1601 */ GL_ENUM(GL_SHININESS) /* 0x1602 */ GL_ENUM(GL_AMBIENT_AND_DIFFUSE) /* 0x1603 */ GL_ENUM(GL_COLOR_INDEXES) /* 0x1700 */ GL_ENUM(GL_MODELVIEW) /* 0x1700 */ GL_ENUM(GL_MODELVIEW0_ARB) /* 0x1700 */ GL_ENUM(GL_MODELVIEW0_EXT) /* 0x1700 */ GL_ENUM(GL_PATH_MODELVIEW_NV) /* 0x1701 */ GL_ENUM(GL_PATH_PROJECTION_NV) /* 0x1701 */ GL_ENUM(GL_PROJECTION) /* 0x1702 */ GL_ENUM(GL_TEXTURE) /* 0x1800 */ GL_ENUM(GL_COLOR) /* 0x1801 */ GL_ENUM(GL_DEPTH) /* 0x1802 */ GL_ENUM(GL_STENCIL) /* 0x1900 */ GL_ENUM(GL_COLOR_INDEX) /* 0x1901 */ GL_ENUM(GL_STENCIL_INDEX) /* 0x1902 */ GL_ENUM(GL_DEPTH_COMPONENT) /* 0x1903 */ GL_ENUM(GL_RED) /* 0x1903 */ GL_ENUM(GL_RED_NV) /* 0x1904 */ GL_ENUM(GL_GREEN) /* 0x1904 */ GL_ENUM(GL_GREEN_NV) /* 0x1905 */ GL_ENUM(GL_BLUE) /* 0x1905 */ GL_ENUM(GL_BLUE_NV) /* 0x1906 */ GL_ENUM(GL_ALPHA) /* 0x1907 */ GL_ENUM(GL_RGB) /* 0x1908 */ GL_ENUM(GL_RGBA) /* 0x1909 */ GL_ENUM(GL_LUMINANCE) /* 0x190A */ GL_ENUM(GL_LUMINANCE_ALPHA) /* 0x1A00 */ GL_ENUM(GL_BITMAP) /* 0x1B00 */ GL_ENUM(GL_POINT) /* 0x1B01 */ GL_ENUM(GL_LINE) /* 0x1B02 */ GL_ENUM(GL_FILL) /* 0x1C00 */ GL_ENUM(GL_RENDER) /* 0x1C01 */ GL_ENUM(GL_FEEDBACK) /* 0x1C02 */ GL_ENUM(GL_SELECT) /* 0x1D00 */ GL_ENUM(GL_FLAT) /* 0x1D01 */ GL_ENUM(GL_SMOOTH) /* 0x1E00 */ GL_ENUM(GL_KEEP) /* 0x1E01 */ GL_ENUM(GL_REPLACE) /* 0x1E02 */ GL_ENUM(GL_INCR) /* 0x1E03 */ GL_ENUM(GL_DECR) /* 0x1F00 */ GL_ENUM(GL_VENDOR) /* 0x1F01 */ GL_ENUM(GL_RENDERER) /* 0x1F02 */ GL_ENUM(GL_VERSION) /* 0x1F03 */ GL_ENUM(GL_EXTENSIONS) /* 0x2000 */ GL_ENUM(GL_S) /* 0x2001 */ GL_ENUM(GL_T) /* 0x2002 */ GL_ENUM(GL_R) /* 0x2003 */ GL_ENUM(GL_Q) /* 0x2100 */ GL_ENUM(GL_MODULATE) /* 0x2101 */ GL_ENUM(GL_DECAL) /* 0x2200 */ GL_ENUM(GL_TEXTURE_ENV_MODE) /* 0x2201 */ GL_ENUM(GL_TEXTURE_ENV_COLOR) /* 0x2300 */ GL_ENUM(GL_TEXTURE_ENV) /* 0x2400 */ GL_ENUM(GL_EYE_LINEAR) /* 0x2400 */ GL_ENUM(GL_EYE_LINEAR_NV) /* 0x2401 */ GL_ENUM(GL_OBJECT_LINEAR) /* 0x2401 */ GL_ENUM(GL_OBJECT_LINEAR_NV) /* 0x2402 */ GL_ENUM(GL_SPHERE_MAP) /* 0x2500 */ GL_ENUM(GL_TEXTURE_GEN_MODE) /* 0x2501 */ GL_ENUM(GL_OBJECT_PLANE) /* 0x2502 */ GL_ENUM(GL_EYE_PLANE) /* 0x2600 */ GL_ENUM(GL_NEAREST) /* 0x2601 */ GL_ENUM(GL_LINEAR) /* 0x2700 */ GL_ENUM(GL_NEAREST_MIPMAP_NEAREST) /* 0x2701 */ GL_ENUM(GL_LINEAR_MIPMAP_NEAREST) /* 0x2702 */ GL_ENUM(GL_NEAREST_MIPMAP_LINEAR) /* 0x2703 */ GL_ENUM(GL_LINEAR_MIPMAP_LINEAR) /* 0x2800 */ GL_ENUM(GL_TEXTURE_MAG_FILTER) /* 0x2801 */ GL_ENUM(GL_TEXTURE_MIN_FILTER) /* 0x2802 */ GL_ENUM(GL_TEXTURE_WRAP_S) /* 0x2803 */ GL_ENUM(GL_TEXTURE_WRAP_T) /* 0x2900 */ GL_ENUM(GL_CLAMP) /* 0x2901 */ GL_ENUM(GL_REPEAT) /* 0x2A00 */ GL_ENUM(GL_POLYGON_OFFSET_UNITS) /* 0x2A01 */ GL_ENUM(GL_POLYGON_OFFSET_POINT) /* 0x2A02 */ GL_ENUM(GL_POLYGON_OFFSET_LINE) /* 0x2A10 */ GL_ENUM(GL_R3_G3_B2) /* 0x2A20 */ GL_ENUM(GL_V2F) /* 0x2A21 */ GL_ENUM(GL_V3F) /* 0x2A22 */ GL_ENUM(GL_C4UB_V2F) /* 0x2A23 */ GL_ENUM(GL_C4UB_V3F) /* 0x2A24 */ GL_ENUM(GL_C3F_V3F) /* 0x2A25 */ GL_ENUM(GL_N3F_V3F) /* 0x2A26 */ GL_ENUM(GL_C4F_N3F_V3F) /* 0x2A27 */ GL_ENUM(GL_T2F_V3F) /* 0x2A28 */ GL_ENUM(GL_T4F_V4F) /* 0x2A29 */ GL_ENUM(GL_T2F_C4UB_V3F) /* 0x2A2A */ GL_ENUM(GL_T2F_C3F_V3F) /* 0x2A2B */ GL_ENUM(GL_T2F_N3F_V3F) /* 0x2A2C */ GL_ENUM(GL_T2F_C4F_N3F_V3F) /* 0x2A2D */ GL_ENUM(GL_T4F_C4F_N3F_V4F) /* 0x3000 */ GL_ENUM(GL_CLIP_DISTANCE0) /* 0x3000 */ GL_ENUM(GL_CLIP_PLANE0) /* 0x3001 */ GL_ENUM(GL_CLIP_DISTANCE1) /* 0x3001 */ GL_ENUM(GL_CLIP_PLANE1) /* 0x3002 */ GL_ENUM(GL_CLIP_DISTANCE2) /* 0x3002 */ GL_ENUM(GL_CLIP_PLANE2) /* 0x3003 */ GL_ENUM(GL_CLIP_DISTANCE3) /* 0x3003 */ GL_ENUM(GL_CLIP_PLANE3) /* 0x3004 */ GL_ENUM(GL_CLIP_DISTANCE4) /* 0x3004 */ GL_ENUM(GL_CLIP_PLANE4) /* 0x3005 */ GL_ENUM(GL_CLIP_DISTANCE5) /* 0x3005 */ GL_ENUM(GL_CLIP_PLANE5) /* 0x3006 */ GL_ENUM(GL_CLIP_DISTANCE6) /* 0x3007 */ GL_ENUM(GL_CLIP_DISTANCE7) /* 0x4000 */ GL_ENUM(GL_LIGHT0) /* 0x4001 */ GL_ENUM(GL_LIGHT1) /* 0x4002 */ GL_ENUM(GL_LIGHT2) /* 0x4003 */ GL_ENUM(GL_LIGHT3) /* 0x4004 */ GL_ENUM(GL_LIGHT4) /* 0x4005 */ GL_ENUM(GL_LIGHT5) /* 0x4006 */ GL_ENUM(GL_LIGHT6) /* 0x4007 */ GL_ENUM(GL_LIGHT7) /* 0x6200 */ GL_ENUM(GL_NFOSMESA_ERROR_CHECK) /* 0x8000 */ GL_ENUM(GL_ABGR_EXT) /* 0x8001 */ GL_ENUM(GL_CONSTANT_COLOR) /* 0x8001 */ GL_ENUM(GL_CONSTANT_COLOR_EXT) /* 0x8002 */ GL_ENUM(GL_ONE_MINUS_CONSTANT_COLOR) /* 0x8002 */ GL_ENUM(GL_ONE_MINUS_CONSTANT_COLOR_EXT) /* 0x8003 */ GL_ENUM(GL_CONSTANT_ALPHA) /* 0x8003 */ GL_ENUM(GL_CONSTANT_ALPHA_EXT) /* 0x8004 */ GL_ENUM(GL_ONE_MINUS_CONSTANT_ALPHA) /* 0x8004 */ GL_ENUM(GL_ONE_MINUS_CONSTANT_ALPHA_EXT) /* 0x8005 */ GL_ENUM(GL_BLEND_COLOR) /* 0x8005 */ GL_ENUM(GL_BLEND_COLOR_EXT) /* 0x8006 */ GL_ENUM(GL_FUNC_ADD) /* 0x8006 */ GL_ENUM(GL_FUNC_ADD_EXT) /* 0x8007 */ GL_ENUM(GL_MIN) /* 0x8007 */ GL_ENUM(GL_MIN_EXT) /* 0x8008 */ GL_ENUM(GL_MAX) /* 0x8008 */ GL_ENUM(GL_MAX_EXT) /* 0x8009 */ GL_ENUM(GL_BLEND_EQUATION) /* 0x8009 */ GL_ENUM(GL_BLEND_EQUATION_EXT) /* 0x8009 */ GL_ENUM(GL_BLEND_EQUATION_RGB) /* 0x8009 */ GL_ENUM(GL_BLEND_EQUATION_RGB_EXT) /* 0x800A */ GL_ENUM(GL_FUNC_SUBTRACT) /* 0x800A */ GL_ENUM(GL_FUNC_SUBTRACT_EXT) /* 0x800B */ GL_ENUM(GL_FUNC_REVERSE_SUBTRACT) /* 0x800B */ GL_ENUM(GL_FUNC_REVERSE_SUBTRACT_EXT) /* 0x800C */ GL_ENUM(GL_CMYK_EXT) /* 0x800D */ GL_ENUM(GL_CMYKA_EXT) /* 0x800E */ GL_ENUM(GL_PACK_CMYK_HINT_EXT) /* 0x800F */ GL_ENUM(GL_UNPACK_CMYK_HINT_EXT) /* 0x8010 */ GL_ENUM(GL_CONVOLUTION_1D) /* 0x8010 */ GL_ENUM(GL_CONVOLUTION_1D_EXT) /* 0x8011 */ GL_ENUM(GL_CONVOLUTION_2D) /* 0x8011 */ GL_ENUM(GL_CONVOLUTION_2D_EXT) /* 0x8012 */ GL_ENUM(GL_SEPARABLE_2D) /* 0x8012 */ GL_ENUM(GL_SEPARABLE_2D_EXT) /* 0x8013 */ GL_ENUM(GL_CONVOLUTION_BORDER_MODE) /* 0x8013 */ GL_ENUM(GL_CONVOLUTION_BORDER_MODE_EXT) /* 0x8014 */ GL_ENUM(GL_CONVOLUTION_FILTER_SCALE) /* 0x8014 */ GL_ENUM(GL_CONVOLUTION_FILTER_SCALE_EXT) /* 0x8015 */ GL_ENUM(GL_CONVOLUTION_FILTER_BIAS) /* 0x8015 */ GL_ENUM(GL_CONVOLUTION_FILTER_BIAS_EXT) /* 0x8016 */ GL_ENUM(GL_REDUCE) /* 0x8016 */ GL_ENUM(GL_REDUCE_EXT) /* 0x8017 */ GL_ENUM(GL_CONVOLUTION_FORMAT) /* 0x8017 */ GL_ENUM(GL_CONVOLUTION_FORMAT_EXT) /* 0x8018 */ GL_ENUM(GL_CONVOLUTION_WIDTH) /* 0x8018 */ GL_ENUM(GL_CONVOLUTION_WIDTH_EXT) /* 0x8019 */ GL_ENUM(GL_CONVOLUTION_HEIGHT) /* 0x8019 */ GL_ENUM(GL_CONVOLUTION_HEIGHT_EXT) /* 0x801A */ GL_ENUM(GL_MAX_CONVOLUTION_WIDTH) /* 0x801A */ GL_ENUM(GL_MAX_CONVOLUTION_WIDTH_EXT) /* 0x801B */ GL_ENUM(GL_MAX_CONVOLUTION_HEIGHT) /* 0x801B */ GL_ENUM(GL_MAX_CONVOLUTION_HEIGHT_EXT) /* 0x801C */ GL_ENUM(GL_POST_CONVOLUTION_RED_SCALE) /* 0x801C */ GL_ENUM(GL_POST_CONVOLUTION_RED_SCALE_EXT) /* 0x801D */ GL_ENUM(GL_POST_CONVOLUTION_GREEN_SCALE) /* 0x801D */ GL_ENUM(GL_POST_CONVOLUTION_GREEN_SCALE_EXT) /* 0x801E */ GL_ENUM(GL_POST_CONVOLUTION_BLUE_SCALE) /* 0x801E */ GL_ENUM(GL_POST_CONVOLUTION_BLUE_SCALE_EXT) /* 0x801F */ GL_ENUM(GL_POST_CONVOLUTION_ALPHA_SCALE) /* 0x801F */ GL_ENUM(GL_POST_CONVOLUTION_ALPHA_SCALE_EXT) /* 0x8020 */ GL_ENUM(GL_POST_CONVOLUTION_RED_BIAS) /* 0x8020 */ GL_ENUM(GL_POST_CONVOLUTION_RED_BIAS_EXT) /* 0x8021 */ GL_ENUM(GL_POST_CONVOLUTION_GREEN_BIAS) /* 0x8021 */ GL_ENUM(GL_POST_CONVOLUTION_GREEN_BIAS_EXT) /* 0x8022 */ GL_ENUM(GL_POST_CONVOLUTION_BLUE_BIAS) /* 0x8022 */ GL_ENUM(GL_POST_CONVOLUTION_BLUE_BIAS_EXT) /* 0x8023 */ GL_ENUM(GL_POST_CONVOLUTION_ALPHA_BIAS) /* 0x8023 */ GL_ENUM(GL_POST_CONVOLUTION_ALPHA_BIAS_EXT) /* 0x8024 */ GL_ENUM(GL_HISTOGRAM) /* 0x8024 */ GL_ENUM(GL_HISTOGRAM_EXT) /* 0x8025 */ GL_ENUM(GL_PROXY_HISTOGRAM) /* 0x8025 */ GL_ENUM(GL_PROXY_HISTOGRAM_EXT) /* 0x8026 */ GL_ENUM(GL_HISTOGRAM_WIDTH) /* 0x8026 */ GL_ENUM(GL_HISTOGRAM_WIDTH_EXT) /* 0x8027 */ GL_ENUM(GL_HISTOGRAM_FORMAT) /* 0x8027 */ GL_ENUM(GL_HISTOGRAM_FORMAT_EXT) /* 0x8028 */ GL_ENUM(GL_HISTOGRAM_RED_SIZE) /* 0x8028 */ GL_ENUM(GL_HISTOGRAM_RED_SIZE_EXT) /* 0x8029 */ GL_ENUM(GL_HISTOGRAM_GREEN_SIZE) /* 0x8029 */ GL_ENUM(GL_HISTOGRAM_GREEN_SIZE_EXT) /* 0x802A */ GL_ENUM(GL_HISTOGRAM_BLUE_SIZE) /* 0x802A */ GL_ENUM(GL_HISTOGRAM_BLUE_SIZE_EXT) /* 0x802B */ GL_ENUM(GL_HISTOGRAM_ALPHA_SIZE) /* 0x802B */ GL_ENUM(GL_HISTOGRAM_ALPHA_SIZE_EXT) /* 0x802C */ GL_ENUM(GL_HISTOGRAM_LUMINANCE_SIZE) /* 0x802C */ GL_ENUM(GL_HISTOGRAM_LUMINANCE_SIZE_EXT) /* 0x802D */ GL_ENUM(GL_HISTOGRAM_SINK) /* 0x802D */ GL_ENUM(GL_HISTOGRAM_SINK_EXT) /* 0x802E */ GL_ENUM(GL_MINMAX) /* 0x802E */ GL_ENUM(GL_MINMAX_EXT) /* 0x802F */ GL_ENUM(GL_MINMAX_FORMAT) /* 0x802F */ GL_ENUM(GL_MINMAX_FORMAT_EXT) /* 0x8030 */ GL_ENUM(GL_MINMAX_SINK) /* 0x8030 */ GL_ENUM(GL_MINMAX_SINK_EXT) /* 0x8031 */ GL_ENUM(GL_TABLE_TOO_LARGE) /* 0x8031 */ GL_ENUM(GL_TABLE_TOO_LARGE_EXT) /* 0x8032 */ GL_ENUM(GL_UNSIGNED_BYTE_3_3_2) /* 0x8032 */ GL_ENUM(GL_UNSIGNED_BYTE_3_3_2_EXT) /* 0x8033 */ GL_ENUM(GL_UNSIGNED_SHORT_4_4_4_4) /* 0x8033 */ GL_ENUM(GL_UNSIGNED_SHORT_4_4_4_4_EXT) /* 0x8034 */ GL_ENUM(GL_UNSIGNED_SHORT_5_5_5_1) /* 0x8034 */ GL_ENUM(GL_UNSIGNED_SHORT_5_5_5_1_EXT) /* 0x8035 */ GL_ENUM(GL_UNSIGNED_INT_8_8_8_8) /* 0x8035 */ GL_ENUM(GL_UNSIGNED_INT_8_8_8_8_EXT) /* 0x8036 */ GL_ENUM(GL_UNSIGNED_INT_10_10_10_2) /* 0x8036 */ GL_ENUM(GL_UNSIGNED_INT_10_10_10_2_EXT) /* 0x8037 */ GL_ENUM(GL_POLYGON_OFFSET_EXT) /* 0x8037 */ GL_ENUM(GL_POLYGON_OFFSET_FILL) /* 0x8038 */ GL_ENUM(GL_POLYGON_OFFSET_FACTOR) /* 0x8038 */ GL_ENUM(GL_POLYGON_OFFSET_FACTOR_EXT) /* 0x8039 */ GL_ENUM(GL_POLYGON_OFFSET_BIAS_EXT) /* 0x803A */ GL_ENUM(GL_RESCALE_NORMAL) /* 0x803A */ GL_ENUM(GL_RESCALE_NORMAL_EXT) /* 0x803B */ GL_ENUM(GL_ALPHA4) /* 0x803B */ GL_ENUM(GL_ALPHA4_EXT) /* 0x803C */ GL_ENUM(GL_ALPHA8) /* 0x803C */ GL_ENUM(GL_ALPHA8_EXT) /* 0x803D */ GL_ENUM(GL_ALPHA12) /* 0x803D */ GL_ENUM(GL_ALPHA12_EXT) /* 0x803E */ GL_ENUM(GL_ALPHA16) /* 0x803E */ GL_ENUM(GL_ALPHA16_EXT) /* 0x803F */ GL_ENUM(GL_LUMINANCE4) /* 0x803F */ GL_ENUM(GL_LUMINANCE4_EXT) /* 0x8040 */ GL_ENUM(GL_LUMINANCE8) /* 0x8040 */ GL_ENUM(GL_LUMINANCE8_EXT) /* 0x8041 */ GL_ENUM(GL_LUMINANCE12) /* 0x8041 */ GL_ENUM(GL_LUMINANCE12_EXT) /* 0x8042 */ GL_ENUM(GL_LUMINANCE16) /* 0x8042 */ GL_ENUM(GL_LUMINANCE16_EXT) /* 0x8043 */ GL_ENUM(GL_LUMINANCE4_ALPHA4) /* 0x8043 */ GL_ENUM(GL_LUMINANCE4_ALPHA4_EXT) /* 0x8044 */ GL_ENUM(GL_LUMINANCE6_ALPHA2) /* 0x8044 */ GL_ENUM(GL_LUMINANCE6_ALPHA2_EXT) /* 0x8045 */ GL_ENUM(GL_LUMINANCE8_ALPHA8) /* 0x8045 */ GL_ENUM(GL_LUMINANCE8_ALPHA8_EXT) /* 0x8046 */ GL_ENUM(GL_LUMINANCE12_ALPHA4) /* 0x8046 */ GL_ENUM(GL_LUMINANCE12_ALPHA4_EXT) /* 0x8047 */ GL_ENUM(GL_LUMINANCE12_ALPHA12) /* 0x8047 */ GL_ENUM(GL_LUMINANCE12_ALPHA12_EXT) /* 0x8048 */ GL_ENUM(GL_LUMINANCE16_ALPHA16) /* 0x8048 */ GL_ENUM(GL_LUMINANCE16_ALPHA16_EXT) /* 0x8049 */ GL_ENUM(GL_INTENSITY) /* 0x8049 */ GL_ENUM(GL_INTENSITY_EXT) /* 0x804A */ GL_ENUM(GL_INTENSITY4) /* 0x804A */ GL_ENUM(GL_INTENSITY4_EXT) /* 0x804B */ GL_ENUM(GL_INTENSITY8) /* 0x804B */ GL_ENUM(GL_INTENSITY8_EXT) /* 0x804C */ GL_ENUM(GL_INTENSITY12) /* 0x804C */ GL_ENUM(GL_INTENSITY12_EXT) /* 0x804D */ GL_ENUM(GL_INTENSITY16) /* 0x804D */ GL_ENUM(GL_INTENSITY16_EXT) /* 0x804E */ GL_ENUM(GL_RGB2_EXT) /* 0x804F */ GL_ENUM(GL_RGB4) /* 0x804F */ GL_ENUM(GL_RGB4_EXT) /* 0x8050 */ GL_ENUM(GL_RGB5) /* 0x8050 */ GL_ENUM(GL_RGB5_EXT) /* 0x8051 */ GL_ENUM(GL_RGB8) /* 0x8051 */ GL_ENUM(GL_RGB8_EXT) /* 0x8052 */ GL_ENUM(GL_RGB10) /* 0x8052 */ GL_ENUM(GL_RGB10_EXT) /* 0x8053 */ GL_ENUM(GL_RGB12) /* 0x8053 */ GL_ENUM(GL_RGB12_EXT) /* 0x8054 */ GL_ENUM(GL_RGB16) /* 0x8054 */ GL_ENUM(GL_RGB16_EXT) /* 0x8055 */ GL_ENUM(GL_RGBA2) /* 0x8055 */ GL_ENUM(GL_RGBA2_EXT) /* 0x8056 */ GL_ENUM(GL_RGBA4) /* 0x8056 */ GL_ENUM(GL_RGBA4_EXT) /* 0x8057 */ GL_ENUM(GL_RGB5_A1) /* 0x8057 */ GL_ENUM(GL_RGB5_A1_EXT) /* 0x8058 */ GL_ENUM(GL_RGBA8) /* 0x8058 */ GL_ENUM(GL_RGBA8_EXT) /* 0x8059 */ GL_ENUM(GL_RGB10_A2) /* 0x8059 */ GL_ENUM(GL_RGB10_A2_EXT) /* 0x805A */ GL_ENUM(GL_RGBA12) /* 0x805A */ GL_ENUM(GL_RGBA12_EXT) /* 0x805B */ GL_ENUM(GL_RGBA16) /* 0x805B */ GL_ENUM(GL_RGBA16_EXT) /* 0x805C */ GL_ENUM(GL_TEXTURE_RED_SIZE) /* 0x805C */ GL_ENUM(GL_TEXTURE_RED_SIZE_EXT) /* 0x805D */ GL_ENUM(GL_TEXTURE_GREEN_SIZE) /* 0x805D */ GL_ENUM(GL_TEXTURE_GREEN_SIZE_EXT) /* 0x805E */ GL_ENUM(GL_TEXTURE_BLUE_SIZE) /* 0x805E */ GL_ENUM(GL_TEXTURE_BLUE_SIZE_EXT) /* 0x805F */ GL_ENUM(GL_TEXTURE_ALPHA_SIZE) /* 0x805F */ GL_ENUM(GL_TEXTURE_ALPHA_SIZE_EXT) /* 0x8060 */ GL_ENUM(GL_TEXTURE_LUMINANCE_SIZE) /* 0x8060 */ GL_ENUM(GL_TEXTURE_LUMINANCE_SIZE_EXT) /* 0x8061 */ GL_ENUM(GL_TEXTURE_INTENSITY_SIZE) /* 0x8061 */ GL_ENUM(GL_TEXTURE_INTENSITY_SIZE_EXT) /* 0x8062 */ GL_ENUM(GL_REPLACE_EXT) /* 0x8063 */ GL_ENUM(GL_PROXY_TEXTURE_1D) /* 0x8063 */ GL_ENUM(GL_PROXY_TEXTURE_1D_EXT) /* 0x8064 */ GL_ENUM(GL_PROXY_TEXTURE_2D) /* 0x8064 */ GL_ENUM(GL_PROXY_TEXTURE_2D_EXT) /* 0x8065 */ GL_ENUM(GL_TEXTURE_TOO_LARGE_EXT) /* 0x8066 */ GL_ENUM(GL_TEXTURE_PRIORITY) /* 0x8066 */ GL_ENUM(GL_TEXTURE_PRIORITY_EXT) /* 0x8067 */ GL_ENUM(GL_TEXTURE_RESIDENT) /* 0x8067 */ GL_ENUM(GL_TEXTURE_RESIDENT_EXT) /* 0x8068 */ GL_ENUM(GL_TEXTURE_1D_BINDING_EXT) /* 0x8068 */ GL_ENUM(GL_TEXTURE_BINDING_1D) /* 0x8069 */ GL_ENUM(GL_TEXTURE_2D_BINDING_EXT) /* 0x8069 */ GL_ENUM(GL_TEXTURE_BINDING_2D) /* 0x806A */ GL_ENUM(GL_TEXTURE_3D_BINDING_EXT) /* 0x806A */ GL_ENUM(GL_TEXTURE_BINDING_3D) /* 0x806B */ GL_ENUM(GL_PACK_SKIP_IMAGES) /* 0x806B */ GL_ENUM(GL_PACK_SKIP_IMAGES_EXT) /* 0x806C */ GL_ENUM(GL_PACK_IMAGE_HEIGHT) /* 0x806C */ GL_ENUM(GL_PACK_IMAGE_HEIGHT_EXT) /* 0x806D */ GL_ENUM(GL_UNPACK_SKIP_IMAGES) /* 0x806D */ GL_ENUM(GL_UNPACK_SKIP_IMAGES_EXT) /* 0x806E */ GL_ENUM(GL_UNPACK_IMAGE_HEIGHT) /* 0x806E */ GL_ENUM(GL_UNPACK_IMAGE_HEIGHT_EXT) /* 0x806F */ GL_ENUM(GL_TEXTURE_3D) /* 0x806F */ GL_ENUM(GL_TEXTURE_3D_EXT) /* 0x8070 */ GL_ENUM(GL_PROXY_TEXTURE_3D) /* 0x8070 */ GL_ENUM(GL_PROXY_TEXTURE_3D_EXT) /* 0x8071 */ GL_ENUM(GL_TEXTURE_DEPTH) /* 0x8071 */ GL_ENUM(GL_TEXTURE_DEPTH_EXT) /* 0x8072 */ GL_ENUM(GL_TEXTURE_WRAP_R) /* 0x8072 */ GL_ENUM(GL_TEXTURE_WRAP_R_EXT) /* 0x8073 */ GL_ENUM(GL_MAX_3D_TEXTURE_SIZE) /* 0x8073 */ GL_ENUM(GL_MAX_3D_TEXTURE_SIZE_EXT) /* 0x8074 */ GL_ENUM(GL_VERTEX_ARRAY) /* 0x8074 */ GL_ENUM(GL_VERTEX_ARRAY_EXT) /* 0x8075 */ GL_ENUM(GL_NORMAL_ARRAY) /* 0x8075 */ GL_ENUM(GL_NORMAL_ARRAY_EXT) /* 0x8076 */ GL_ENUM(GL_COLOR_ARRAY) /* 0x8076 */ GL_ENUM(GL_COLOR_ARRAY_EXT) /* 0x8077 */ GL_ENUM(GL_INDEX_ARRAY) /* 0x8077 */ GL_ENUM(GL_INDEX_ARRAY_EXT) /* 0x8078 */ GL_ENUM(GL_TEXTURE_COORD_ARRAY) /* 0x8078 */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_EXT) /* 0x8079 */ GL_ENUM(GL_EDGE_FLAG_ARRAY) /* 0x8079 */ GL_ENUM(GL_EDGE_FLAG_ARRAY_EXT) /* 0x807A */ GL_ENUM(GL_VERTEX_ARRAY_SIZE) /* 0x807A */ GL_ENUM(GL_VERTEX_ARRAY_SIZE_EXT) /* 0x807B */ GL_ENUM(GL_VERTEX_ARRAY_TYPE) /* 0x807B */ GL_ENUM(GL_VERTEX_ARRAY_TYPE_EXT) /* 0x807C */ GL_ENUM(GL_VERTEX_ARRAY_STRIDE) /* 0x807C */ GL_ENUM(GL_VERTEX_ARRAY_STRIDE_EXT) /* 0x807D */ GL_ENUM(GL_VERTEX_ARRAY_COUNT_EXT) /* 0x807E */ GL_ENUM(GL_NORMAL_ARRAY_TYPE) /* 0x807E */ GL_ENUM(GL_NORMAL_ARRAY_TYPE_EXT) /* 0x807F */ GL_ENUM(GL_NORMAL_ARRAY_STRIDE) /* 0x807F */ GL_ENUM(GL_NORMAL_ARRAY_STRIDE_EXT) /* 0x8080 */ GL_ENUM(GL_NORMAL_ARRAY_COUNT_EXT) /* 0x8081 */ GL_ENUM(GL_COLOR_ARRAY_SIZE) /* 0x8081 */ GL_ENUM(GL_COLOR_ARRAY_SIZE_EXT) /* 0x8082 */ GL_ENUM(GL_COLOR_ARRAY_TYPE) /* 0x8082 */ GL_ENUM(GL_COLOR_ARRAY_TYPE_EXT) /* 0x8083 */ GL_ENUM(GL_COLOR_ARRAY_STRIDE) /* 0x8083 */ GL_ENUM(GL_COLOR_ARRAY_STRIDE_EXT) /* 0x8084 */ GL_ENUM(GL_COLOR_ARRAY_COUNT_EXT) /* 0x8085 */ GL_ENUM(GL_INDEX_ARRAY_TYPE) /* 0x8085 */ GL_ENUM(GL_INDEX_ARRAY_TYPE_EXT) /* 0x8086 */ GL_ENUM(GL_INDEX_ARRAY_STRIDE) /* 0x8086 */ GL_ENUM(GL_INDEX_ARRAY_STRIDE_EXT) /* 0x8087 */ GL_ENUM(GL_INDEX_ARRAY_COUNT_EXT) /* 0x8088 */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_SIZE) /* 0x8088 */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_SIZE_EXT) /* 0x8089 */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_TYPE) /* 0x8089 */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_TYPE_EXT) /* 0x808A */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_STRIDE) /* 0x808A */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_STRIDE_EXT) /* 0x808B */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_COUNT_EXT) /* 0x808C */ GL_ENUM(GL_EDGE_FLAG_ARRAY_STRIDE) /* 0x808C */ GL_ENUM(GL_EDGE_FLAG_ARRAY_STRIDE_EXT) /* 0x808D */ GL_ENUM(GL_EDGE_FLAG_ARRAY_COUNT_EXT) /* 0x808E */ GL_ENUM(GL_VERTEX_ARRAY_POINTER) /* 0x808E */ GL_ENUM(GL_VERTEX_ARRAY_POINTER_EXT) /* 0x808F */ GL_ENUM(GL_NORMAL_ARRAY_POINTER) /* 0x808F */ GL_ENUM(GL_NORMAL_ARRAY_POINTER_EXT) /* 0x8090 */ GL_ENUM(GL_COLOR_ARRAY_POINTER) /* 0x8090 */ GL_ENUM(GL_COLOR_ARRAY_POINTER_EXT) /* 0x8091 */ GL_ENUM(GL_INDEX_ARRAY_POINTER) /* 0x8091 */ GL_ENUM(GL_INDEX_ARRAY_POINTER_EXT) /* 0x8092 */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_POINTER) /* 0x8092 */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_POINTER_EXT) /* 0x8093 */ GL_ENUM(GL_EDGE_FLAG_ARRAY_POINTER) /* 0x8093 */ GL_ENUM(GL_EDGE_FLAG_ARRAY_POINTER_EXT) /* 0x8094 */ GL_ENUM(GL_INTERLACE_SGIX) /* 0x8095 */ GL_ENUM(GL_DETAIL_TEXTURE_2D_SGIS) /* 0x8096 */ GL_ENUM(GL_DETAIL_TEXTURE_2D_BINDING_SGIS) /* 0x8097 */ GL_ENUM(GL_LINEAR_DETAIL_SGIS) /* 0x8098 */ GL_ENUM(GL_LINEAR_DETAIL_ALPHA_SGIS) /* 0x8099 */ GL_ENUM(GL_LINEAR_DETAIL_COLOR_SGIS) /* 0x809A */ GL_ENUM(GL_DETAIL_TEXTURE_LEVEL_SGIS) /* 0x809B */ GL_ENUM(GL_DETAIL_TEXTURE_MODE_SGIS) /* 0x809C */ GL_ENUM(GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS) /* 0x809D */ GL_ENUM(GL_MULTISAMPLE) /* 0x809D */ GL_ENUM(GL_MULTISAMPLE_ARB) /* 0x809D */ GL_ENUM(GL_MULTISAMPLE_EXT) /* 0x809D */ GL_ENUM(GL_MULTISAMPLE_SGIS) /* 0x809E */ GL_ENUM(GL_SAMPLE_ALPHA_TO_COVERAGE) /* 0x809E */ GL_ENUM(GL_SAMPLE_ALPHA_TO_COVERAGE_ARB) /* 0x809E */ GL_ENUM(GL_SAMPLE_ALPHA_TO_MASK_EXT) /* 0x809E */ GL_ENUM(GL_SAMPLE_ALPHA_TO_MASK_SGIS) /* 0x809F */ GL_ENUM(GL_SAMPLE_ALPHA_TO_ONE) /* 0x809F */ GL_ENUM(GL_SAMPLE_ALPHA_TO_ONE_ARB) /* 0x809F */ GL_ENUM(GL_SAMPLE_ALPHA_TO_ONE_EXT) /* 0x809F */ GL_ENUM(GL_SAMPLE_ALPHA_TO_ONE_SGIS) /* 0x80A0 */ GL_ENUM(GL_SAMPLE_COVERAGE) /* 0x80A0 */ GL_ENUM(GL_SAMPLE_COVERAGE_ARB) /* 0x80A0 */ GL_ENUM(GL_SAMPLE_MASK_EXT) /* 0x80A0 */ GL_ENUM(GL_SAMPLE_MASK_SGIS) /* 0x80A1 */ GL_ENUM(GL_1PASS_EXT) /* 0x80A1 */ GL_ENUM(GL_1PASS_SGIS) /* 0x80A2 */ GL_ENUM(GL_2PASS_0_EXT) /* 0x80A2 */ GL_ENUM(GL_2PASS_0_SGIS) /* 0x80A3 */ GL_ENUM(GL_2PASS_1_EXT) /* 0x80A3 */ GL_ENUM(GL_2PASS_1_SGIS) /* 0x80A4 */ GL_ENUM(GL_4PASS_0_EXT) /* 0x80A4 */ GL_ENUM(GL_4PASS_0_SGIS) /* 0x80A5 */ GL_ENUM(GL_4PASS_1_EXT) /* 0x80A5 */ GL_ENUM(GL_4PASS_1_SGIS) /* 0x80A6 */ GL_ENUM(GL_4PASS_2_EXT) /* 0x80A6 */ GL_ENUM(GL_4PASS_2_SGIS) /* 0x80A7 */ GL_ENUM(GL_4PASS_3_EXT) /* 0x80A7 */ GL_ENUM(GL_4PASS_3_SGIS) /* 0x80A8 */ GL_ENUM(GL_SAMPLE_BUFFERS) /* 0x80A8 */ GL_ENUM(GL_SAMPLE_BUFFERS_ARB) /* 0x80A8 */ GL_ENUM(GL_SAMPLE_BUFFERS_EXT) /* 0x80A8 */ GL_ENUM(GL_SAMPLE_BUFFERS_SGIS) /* 0x80A9 */ GL_ENUM(GL_COVERAGE_SAMPLES_NV) /* 0x80A9 */ GL_ENUM(GL_SAMPLES) /* 0x80A9 */ GL_ENUM(GL_SAMPLES_ARB) /* 0x80A9 */ GL_ENUM(GL_SAMPLES_EXT) /* 0x80A9 */ GL_ENUM(GL_SAMPLES_SGIS) /* 0x80AA */ GL_ENUM(GL_SAMPLE_COVERAGE_VALUE) /* 0x80AA */ GL_ENUM(GL_SAMPLE_COVERAGE_VALUE_ARB) /* 0x80AA */ GL_ENUM(GL_SAMPLE_MASK_VALUE_EXT) /* 0x80AA */ GL_ENUM(GL_SAMPLE_MASK_VALUE_SGIS) /* 0x80AB */ GL_ENUM(GL_SAMPLE_COVERAGE_INVERT) /* 0x80AB */ GL_ENUM(GL_SAMPLE_COVERAGE_INVERT_ARB) /* 0x80AB */ GL_ENUM(GL_SAMPLE_MASK_INVERT_EXT) /* 0x80AB */ GL_ENUM(GL_SAMPLE_MASK_INVERT_SGIS) /* 0x80AC */ GL_ENUM(GL_SAMPLE_PATTERN_EXT) /* 0x80AC */ GL_ENUM(GL_SAMPLE_PATTERN_SGIS) /* 0x80AD */ GL_ENUM(GL_LINEAR_SHARPEN_SGIS) /* 0x80AE */ GL_ENUM(GL_LINEAR_SHARPEN_ALPHA_SGIS) /* 0x80AF */ GL_ENUM(GL_LINEAR_SHARPEN_COLOR_SGIS) /* 0x80B0 */ GL_ENUM(GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS) /* 0x80B1 */ GL_ENUM(GL_COLOR_MATRIX) /* 0x80B1 */ GL_ENUM(GL_COLOR_MATRIX_SGI) /* 0x80B2 */ GL_ENUM(GL_COLOR_MATRIX_STACK_DEPTH) /* 0x80B2 */ GL_ENUM(GL_COLOR_MATRIX_STACK_DEPTH_SGI) /* 0x80B3 */ GL_ENUM(GL_MAX_COLOR_MATRIX_STACK_DEPTH) /* 0x80B3 */ GL_ENUM(GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI) /* 0x80B4 */ GL_ENUM(GL_POST_COLOR_MATRIX_RED_SCALE) /* 0x80B4 */ GL_ENUM(GL_POST_COLOR_MATRIX_RED_SCALE_SGI) /* 0x80B5 */ GL_ENUM(GL_POST_COLOR_MATRIX_GREEN_SCALE) /* 0x80B5 */ GL_ENUM(GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI) /* 0x80B6 */ GL_ENUM(GL_POST_COLOR_MATRIX_BLUE_SCALE) /* 0x80B6 */ GL_ENUM(GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI) /* 0x80B7 */ GL_ENUM(GL_POST_COLOR_MATRIX_ALPHA_SCALE) /* 0x80B7 */ GL_ENUM(GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI) /* 0x80B8 */ GL_ENUM(GL_POST_COLOR_MATRIX_RED_BIAS) /* 0x80B8 */ GL_ENUM(GL_POST_COLOR_MATRIX_RED_BIAS_SGI) /* 0x80B9 */ GL_ENUM(GL_POST_COLOR_MATRIX_GREEN_BIAS) /* 0x80B9 */ GL_ENUM(GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI) /* 0x80BA */ GL_ENUM(GL_POST_COLOR_MATRIX_BLUE_BIAS) /* 0x80BA */ GL_ENUM(GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI) /* 0x80BB */ GL_ENUM(GL_POST_COLOR_MATRIX_ALPHA_BIAS) /* 0x80BB */ GL_ENUM(GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI) /* 0x80BC */ GL_ENUM(GL_TEXTURE_COLOR_TABLE_SGI) /* 0x80BD */ GL_ENUM(GL_PROXY_TEXTURE_COLOR_TABLE_SGI) /* 0x80BE */ GL_ENUM(GL_TEXTURE_ENV_BIAS_SGIX) /* 0x80BF */ GL_ENUM(GL_SHADOW_AMBIENT_SGIX) /* 0x80BF */ GL_ENUM(GL_TEXTURE_COMPARE_FAIL_VALUE_ARB) /* 0x80C8 */ GL_ENUM(GL_BLEND_DST_RGB) /* 0x80C8 */ GL_ENUM(GL_BLEND_DST_RGB_EXT) /* 0x80C9 */ GL_ENUM(GL_BLEND_SRC_RGB) /* 0x80C9 */ GL_ENUM(GL_BLEND_SRC_RGB_EXT) /* 0x80CA */ GL_ENUM(GL_BLEND_DST_ALPHA) /* 0x80CA */ GL_ENUM(GL_BLEND_DST_ALPHA_EXT) /* 0x80CB */ GL_ENUM(GL_BLEND_SRC_ALPHA) /* 0x80CB */ GL_ENUM(GL_BLEND_SRC_ALPHA_EXT) /* 0x80CC */ GL_ENUM(GL_422_EXT) /* 0x80CD */ GL_ENUM(GL_422_REV_EXT) /* 0x80CE */ GL_ENUM(GL_422_AVERAGE_EXT) /* 0x80CF */ GL_ENUM(GL_422_REV_AVERAGE_EXT) /* 0x80D0 */ GL_ENUM(GL_COLOR_TABLE) /* 0x80D0 */ GL_ENUM(GL_COLOR_TABLE_SGI) /* 0x80D1 */ GL_ENUM(GL_POST_CONVOLUTION_COLOR_TABLE) /* 0x80D1 */ GL_ENUM(GL_POST_CONVOLUTION_COLOR_TABLE_SGI) /* 0x80D2 */ GL_ENUM(GL_POST_COLOR_MATRIX_COLOR_TABLE) /* 0x80D2 */ GL_ENUM(GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI) /* 0x80D3 */ GL_ENUM(GL_PROXY_COLOR_TABLE) /* 0x80D3 */ GL_ENUM(GL_PROXY_COLOR_TABLE_SGI) /* 0x80D4 */ GL_ENUM(GL_PROXY_POST_CONVOLUTION_COLOR_TABLE) /* 0x80D4 */ GL_ENUM(GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI) /* 0x80D5 */ GL_ENUM(GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE) /* 0x80D5 */ GL_ENUM(GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI) /* 0x80D6 */ GL_ENUM(GL_COLOR_TABLE_SCALE) /* 0x80D6 */ GL_ENUM(GL_COLOR_TABLE_SCALE_SGI) /* 0x80D7 */ GL_ENUM(GL_COLOR_TABLE_BIAS) /* 0x80D7 */ GL_ENUM(GL_COLOR_TABLE_BIAS_SGI) /* 0x80D8 */ GL_ENUM(GL_COLOR_TABLE_FORMAT) /* 0x80D8 */ GL_ENUM(GL_COLOR_TABLE_FORMAT_SGI) /* 0x80D9 */ GL_ENUM(GL_COLOR_TABLE_WIDTH) /* 0x80D9 */ GL_ENUM(GL_COLOR_TABLE_WIDTH_SGI) /* 0x80DA */ GL_ENUM(GL_COLOR_TABLE_RED_SIZE) /* 0x80DA */ GL_ENUM(GL_COLOR_TABLE_RED_SIZE_SGI) /* 0x80DB */ GL_ENUM(GL_COLOR_TABLE_GREEN_SIZE) /* 0x80DB */ GL_ENUM(GL_COLOR_TABLE_GREEN_SIZE_SGI) /* 0x80DC */ GL_ENUM(GL_COLOR_TABLE_BLUE_SIZE) /* 0x80DC */ GL_ENUM(GL_COLOR_TABLE_BLUE_SIZE_SGI) /* 0x80DD */ GL_ENUM(GL_COLOR_TABLE_ALPHA_SIZE) /* 0x80DD */ GL_ENUM(GL_COLOR_TABLE_ALPHA_SIZE_SGI) /* 0x80DE */ GL_ENUM(GL_COLOR_TABLE_LUMINANCE_SIZE) /* 0x80DE */ GL_ENUM(GL_COLOR_TABLE_LUMINANCE_SIZE_SGI) /* 0x80DF */ GL_ENUM(GL_COLOR_TABLE_INTENSITY_SIZE) /* 0x80DF */ GL_ENUM(GL_COLOR_TABLE_INTENSITY_SIZE_SGI) /* 0x80E0 */ GL_ENUM(GL_BGR) /* 0x80E0 */ GL_ENUM(GL_BGR_EXT) /* 0x80E1 */ GL_ENUM(GL_BGRA) /* 0x80E1 */ GL_ENUM(GL_BGRA_EXT) /* 0x80E2 */ GL_ENUM(GL_COLOR_INDEX1_EXT) /* 0x80E3 */ GL_ENUM(GL_COLOR_INDEX2_EXT) /* 0x80E4 */ GL_ENUM(GL_COLOR_INDEX4_EXT) /* 0x80E5 */ GL_ENUM(GL_COLOR_INDEX8_EXT) /* 0x80E6 */ GL_ENUM(GL_COLOR_INDEX12_EXT) /* 0x80E7 */ GL_ENUM(GL_COLOR_INDEX16_EXT) /* 0x80E8 */ GL_ENUM(GL_MAX_ELEMENTS_VERTICES) /* 0x80E8 */ GL_ENUM(GL_MAX_ELEMENTS_VERTICES_EXT) /* 0x80E9 */ GL_ENUM(GL_MAX_ELEMENTS_INDICES) /* 0x80E9 */ GL_ENUM(GL_MAX_ELEMENTS_INDICES_EXT) /* 0x80EA */ GL_ENUM(GL_PHONG_WIN) /* 0x80EB */ GL_ENUM(GL_PHONG_HINT_WIN) /* 0x80EC */ GL_ENUM(GL_FOG_SPECULAR_TEXTURE_WIN) /* 0x80ED */ GL_ENUM(GL_TEXTURE_INDEX_SIZE_EXT) /* 0x80EE */ GL_ENUM(GL_PARAMETER_BUFFER_ARB) /* 0x80EF */ GL_ENUM(GL_PARAMETER_BUFFER_BINDING_ARB) /* 0x80F0 */ GL_ENUM(GL_CLIP_VOLUME_CLIPPING_HINT_EXT) /* 0x8110 */ GL_ENUM(GL_DUAL_ALPHA4_SGIS) /* 0x8111 */ GL_ENUM(GL_DUAL_ALPHA8_SGIS) /* 0x8112 */ GL_ENUM(GL_DUAL_ALPHA12_SGIS) /* 0x8113 */ GL_ENUM(GL_DUAL_ALPHA16_SGIS) /* 0x8114 */ GL_ENUM(GL_DUAL_LUMINANCE4_SGIS) /* 0x8115 */ GL_ENUM(GL_DUAL_LUMINANCE8_SGIS) /* 0x8116 */ GL_ENUM(GL_DUAL_LUMINANCE12_SGIS) /* 0x8117 */ GL_ENUM(GL_DUAL_LUMINANCE16_SGIS) /* 0x8118 */ GL_ENUM(GL_DUAL_INTENSITY4_SGIS) /* 0x8119 */ GL_ENUM(GL_DUAL_INTENSITY8_SGIS) /* 0x811A */ GL_ENUM(GL_DUAL_INTENSITY12_SGIS) /* 0x811B */ GL_ENUM(GL_DUAL_INTENSITY16_SGIS) /* 0x811C */ GL_ENUM(GL_DUAL_LUMINANCE_ALPHA4_SGIS) /* 0x811D */ GL_ENUM(GL_DUAL_LUMINANCE_ALPHA8_SGIS) /* 0x811E */ GL_ENUM(GL_QUAD_ALPHA4_SGIS) /* 0x811F */ GL_ENUM(GL_QUAD_ALPHA8_SGIS) /* 0x8120 */ GL_ENUM(GL_QUAD_LUMINANCE4_SGIS) /* 0x8121 */ GL_ENUM(GL_QUAD_LUMINANCE8_SGIS) /* 0x8122 */ GL_ENUM(GL_QUAD_INTENSITY4_SGIS) /* 0x8123 */ GL_ENUM(GL_QUAD_INTENSITY8_SGIS) /* 0x8124 */ GL_ENUM(GL_DUAL_TEXTURE_SELECT_SGIS) /* 0x8125 */ GL_ENUM(GL_QUAD_TEXTURE_SELECT_SGIS) /* 0x8126 */ GL_ENUM(GL_POINT_SIZE_MIN) /* 0x8126 */ GL_ENUM(GL_POINT_SIZE_MIN_ARB) /* 0x8126 */ GL_ENUM(GL_POINT_SIZE_MIN_EXT) /* 0x8126 */ GL_ENUM(GL_POINT_SIZE_MIN_SGIS) /* 0x8127 */ GL_ENUM(GL_POINT_SIZE_MAX) /* 0x8127 */ GL_ENUM(GL_POINT_SIZE_MAX_ARB) /* 0x8127 */ GL_ENUM(GL_POINT_SIZE_MAX_EXT) /* 0x8127 */ GL_ENUM(GL_POINT_SIZE_MAX_SGIS) /* 0x8128 */ GL_ENUM(GL_POINT_FADE_THRESHOLD_SIZE) /* 0x8128 */ GL_ENUM(GL_POINT_FADE_THRESHOLD_SIZE_ARB) /* 0x8128 */ GL_ENUM(GL_POINT_FADE_THRESHOLD_SIZE_EXT) /* 0x8128 */ GL_ENUM(GL_POINT_FADE_THRESHOLD_SIZE_SGIS) /* 0x8129 */ GL_ENUM(GL_DISTANCE_ATTENUATION_EXT) /* 0x8129 */ GL_ENUM(GL_DISTANCE_ATTENUATION_SGIS) /* 0x8129 */ GL_ENUM(GL_POINT_DISTANCE_ATTENUATION) /* 0x8129 */ GL_ENUM(GL_POINT_DISTANCE_ATTENUATION_ARB) /* 0x812A */ GL_ENUM(GL_FOG_FUNC_SGIS) /* 0x812B */ GL_ENUM(GL_FOG_FUNC_POINTS_SGIS) /* 0x812C */ GL_ENUM(GL_MAX_FOG_FUNC_POINTS_SGIS) /* 0x812D */ GL_ENUM(GL_CLAMP_TO_BORDER) /* 0x812D */ GL_ENUM(GL_CLAMP_TO_BORDER_ARB) /* 0x812D */ GL_ENUM(GL_CLAMP_TO_BORDER_SGIS) /* 0x812E */ GL_ENUM(GL_TEXTURE_MULTI_BUFFER_HINT_SGIX) /* 0x812F */ GL_ENUM(GL_CLAMP_TO_EDGE) /* 0x812F */ GL_ENUM(GL_CLAMP_TO_EDGE_SGIS) /* 0x8130 */ GL_ENUM(GL_PACK_SKIP_VOLUMES_SGIS) /* 0x8131 */ GL_ENUM(GL_PACK_IMAGE_DEPTH_SGIS) /* 0x8132 */ GL_ENUM(GL_UNPACK_SKIP_VOLUMES_SGIS) /* 0x8133 */ GL_ENUM(GL_UNPACK_IMAGE_DEPTH_SGIS) /* 0x8134 */ GL_ENUM(GL_TEXTURE_4D_SGIS) /* 0x8135 */ GL_ENUM(GL_PROXY_TEXTURE_4D_SGIS) /* 0x8136 */ GL_ENUM(GL_TEXTURE_4DSIZE_SGIS) /* 0x8137 */ GL_ENUM(GL_TEXTURE_WRAP_Q_SGIS) /* 0x8138 */ GL_ENUM(GL_MAX_4D_TEXTURE_SIZE_SGIS) /* 0x8139 */ GL_ENUM(GL_PIXEL_TEX_GEN_SGIX) /* 0x813A */ GL_ENUM(GL_TEXTURE_MIN_LOD) /* 0x813A */ GL_ENUM(GL_TEXTURE_MIN_LOD_SGIS) /* 0x813B */ GL_ENUM(GL_TEXTURE_MAX_LOD) /* 0x813B */ GL_ENUM(GL_TEXTURE_MAX_LOD_SGIS) /* 0x813C */ GL_ENUM(GL_TEXTURE_BASE_LEVEL) /* 0x813C */ GL_ENUM(GL_TEXTURE_BASE_LEVEL_SGIS) /* 0x813D */ GL_ENUM(GL_TEXTURE_MAX_LEVEL) /* 0x813D */ GL_ENUM(GL_TEXTURE_MAX_LEVEL_SGIS) /* 0x813E */ GL_ENUM(GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX) /* 0x813F */ GL_ENUM(GL_PIXEL_TILE_CACHE_INCREMENT_SGIX) /* 0x8140 */ GL_ENUM(GL_PIXEL_TILE_WIDTH_SGIX) /* 0x8141 */ GL_ENUM(GL_PIXEL_TILE_HEIGHT_SGIX) /* 0x8142 */ GL_ENUM(GL_PIXEL_TILE_GRID_WIDTH_SGIX) /* 0x8143 */ GL_ENUM(GL_PIXEL_TILE_GRID_HEIGHT_SGIX) /* 0x8144 */ GL_ENUM(GL_PIXEL_TILE_GRID_DEPTH_SGIX) /* 0x8145 */ GL_ENUM(GL_PIXEL_TILE_CACHE_SIZE_SGIX) /* 0x8146 */ GL_ENUM(GL_FILTER4_SGIS) /* 0x8147 */ GL_ENUM(GL_TEXTURE_FILTER4_SIZE_SGIS) /* 0x8148 */ GL_ENUM(GL_SPRITE_SGIX) /* 0x8149 */ GL_ENUM(GL_SPRITE_MODE_SGIX) /* 0x814A */ GL_ENUM(GL_SPRITE_AXIS_SGIX) /* 0x814B */ GL_ENUM(GL_SPRITE_TRANSLATION_SGIX) /* 0x814C */ GL_ENUM(GL_SPRITE_AXIAL_SGIX) /* 0x814D */ GL_ENUM(GL_SPRITE_OBJECT_ALIGNED_SGIX) /* 0x814E */ GL_ENUM(GL_SPRITE_EYE_ALIGNED_SGIX) /* 0x814F */ GL_ENUM(GL_TEXTURE_4D_BINDING_SGIS) /* 0x8150 */ GL_ENUM(GL_IGNORE_BORDER_HP) /* 0x8151 */ GL_ENUM(GL_CONSTANT_BORDER) /* 0x8151 */ GL_ENUM(GL_CONSTANT_BORDER_HP) /* 0x8153 */ GL_ENUM(GL_REPLICATE_BORDER) /* 0x8153 */ GL_ENUM(GL_REPLICATE_BORDER_HP) /* 0x8154 */ GL_ENUM(GL_CONVOLUTION_BORDER_COLOR) /* 0x8154 */ GL_ENUM(GL_CONVOLUTION_BORDER_COLOR_HP) /* 0x8155 */ GL_ENUM(GL_IMAGE_SCALE_X_HP) /* 0x8156 */ GL_ENUM(GL_IMAGE_SCALE_Y_HP) /* 0x8157 */ GL_ENUM(GL_IMAGE_TRANSLATE_X_HP) /* 0x8158 */ GL_ENUM(GL_IMAGE_TRANSLATE_Y_HP) /* 0x8159 */ GL_ENUM(GL_IMAGE_ROTATE_ANGLE_HP) /* 0x815A */ GL_ENUM(GL_IMAGE_ROTATE_ORIGIN_X_HP) /* 0x815B */ GL_ENUM(GL_IMAGE_ROTATE_ORIGIN_Y_HP) /* 0x815C */ GL_ENUM(GL_IMAGE_MAG_FILTER_HP) /* 0x815D */ GL_ENUM(GL_IMAGE_MIN_FILTER_HP) /* 0x815E */ GL_ENUM(GL_IMAGE_CUBIC_WEIGHT_HP) /* 0x815F */ GL_ENUM(GL_CUBIC_HP) /* 0x8160 */ GL_ENUM(GL_AVERAGE_HP) /* 0x8161 */ GL_ENUM(GL_IMAGE_TRANSFORM_2D_HP) /* 0x8162 */ GL_ENUM(GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP) /* 0x8163 */ GL_ENUM(GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP) /* 0x8165 */ GL_ENUM(GL_OCCLUSION_TEST_HP) /* 0x8166 */ GL_ENUM(GL_OCCLUSION_TEST_RESULT_HP) /* 0x8167 */ GL_ENUM(GL_TEXTURE_LIGHTING_MODE_HP) /* 0x8168 */ GL_ENUM(GL_TEXTURE_POST_SPECULAR_HP) /* 0x8169 */ GL_ENUM(GL_TEXTURE_PRE_SPECULAR_HP) /* 0x8170 */ GL_ENUM(GL_LINEAR_CLIPMAP_LINEAR_SGIX) /* 0x8171 */ GL_ENUM(GL_TEXTURE_CLIPMAP_CENTER_SGIX) /* 0x8172 */ GL_ENUM(GL_TEXTURE_CLIPMAP_FRAME_SGIX) /* 0x8173 */ GL_ENUM(GL_TEXTURE_CLIPMAP_OFFSET_SGIX) /* 0x8174 */ GL_ENUM(GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX) /* 0x8175 */ GL_ENUM(GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX) /* 0x8176 */ GL_ENUM(GL_TEXTURE_CLIPMAP_DEPTH_SGIX) /* 0x8177 */ GL_ENUM(GL_MAX_CLIPMAP_DEPTH_SGIX) /* 0x8178 */ GL_ENUM(GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX) /* 0x8179 */ GL_ENUM(GL_POST_TEXTURE_FILTER_BIAS_SGIX) /* 0x817A */ GL_ENUM(GL_POST_TEXTURE_FILTER_SCALE_SGIX) /* 0x817B */ GL_ENUM(GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX) /* 0x817C */ GL_ENUM(GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX) /* 0x817D */ GL_ENUM(GL_REFERENCE_PLANE_SGIX) /* 0x817E */ GL_ENUM(GL_REFERENCE_PLANE_EQUATION_SGIX) /* 0x817F */ GL_ENUM(GL_IR_INSTRUMENT1_SGIX) /* 0x8180 */ GL_ENUM(GL_INSTRUMENT_BUFFER_POINTER_SGIX) /* 0x8181 */ GL_ENUM(GL_INSTRUMENT_MEASUREMENTS_SGIX) /* 0x8182 */ GL_ENUM(GL_LIST_PRIORITY_SGIX) /* 0x8183 */ GL_ENUM(GL_CALLIGRAPHIC_FRAGMENT_SGIX) /* 0x8184 */ GL_ENUM(GL_PIXEL_TEX_GEN_Q_CEILING_SGIX) /* 0x8185 */ GL_ENUM(GL_PIXEL_TEX_GEN_Q_ROUND_SGIX) /* 0x8186 */ GL_ENUM(GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX) /* 0x8187 */ GL_ENUM(GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX) /* 0x8188 */ GL_ENUM(GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX) /* 0x8189 */ GL_ENUM(GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX) /* 0x818A */ GL_ENUM(GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX) /* 0x818B */ GL_ENUM(GL_FRAMEZOOM_SGIX) /* 0x818C */ GL_ENUM(GL_FRAMEZOOM_FACTOR_SGIX) /* 0x818D */ GL_ENUM(GL_MAX_FRAMEZOOM_FACTOR_SGIX) /* 0x818E */ GL_ENUM(GL_TEXTURE_LOD_BIAS_S_SGIX) /* 0x818F */ GL_ENUM(GL_TEXTURE_LOD_BIAS_T_SGIX) /* 0x8190 */ GL_ENUM(GL_TEXTURE_LOD_BIAS_R_SGIX) /* 0x8191 */ GL_ENUM(GL_GENERATE_MIPMAP) /* 0x8191 */ GL_ENUM(GL_GENERATE_MIPMAP_SGIS) /* 0x8192 */ GL_ENUM(GL_GENERATE_MIPMAP_HINT) /* 0x8192 */ GL_ENUM(GL_GENERATE_MIPMAP_HINT_SGIS) /* 0x8194 */ GL_ENUM(GL_GEOMETRY_DEFORMATION_SGIX) /* 0x8195 */ GL_ENUM(GL_TEXTURE_DEFORMATION_SGIX) /* 0x8196 */ GL_ENUM(GL_DEFORMATIONS_MASK_SGIX) /* 0x8197 */ GL_ENUM(GL_MAX_DEFORMATION_ORDER_SGIX) /* 0x8198 */ GL_ENUM(GL_FOG_OFFSET_SGIX) /* 0x8199 */ GL_ENUM(GL_FOG_OFFSET_VALUE_SGIX) /* 0x819A */ GL_ENUM(GL_TEXTURE_COMPARE_SGIX) /* 0x819B */ GL_ENUM(GL_TEXTURE_COMPARE_OPERATOR_SGIX) /* 0x819C */ GL_ENUM(GL_TEXTURE_LEQUAL_R_SGIX) /* 0x819D */ GL_ENUM(GL_TEXTURE_GEQUAL_R_SGIX) /* 0x81A5 */ GL_ENUM(GL_DEPTH_COMPONENT16) /* 0x81A5 */ GL_ENUM(GL_DEPTH_COMPONENT16_ARB) /* 0x81A5 */ GL_ENUM(GL_DEPTH_COMPONENT16_SGIX) /* 0x81A6 */ GL_ENUM(GL_DEPTH_COMPONENT24) /* 0x81A6 */ GL_ENUM(GL_DEPTH_COMPONENT24_ARB) /* 0x81A6 */ GL_ENUM(GL_DEPTH_COMPONENT24_SGIX) /* 0x81A7 */ GL_ENUM(GL_DEPTH_COMPONENT32) /* 0x81A7 */ GL_ENUM(GL_DEPTH_COMPONENT32_ARB) /* 0x81A7 */ GL_ENUM(GL_DEPTH_COMPONENT32_SGIX) /* 0x81A8 */ GL_ENUM(GL_ARRAY_ELEMENT_LOCK_FIRST_EXT) /* 0x81A9 */ GL_ENUM(GL_ARRAY_ELEMENT_LOCK_COUNT_EXT) /* 0x81AA */ GL_ENUM(GL_CULL_VERTEX_EXT) /* 0x81AB */ GL_ENUM(GL_CULL_VERTEX_EYE_POSITION_EXT) /* 0x81AC */ GL_ENUM(GL_CULL_VERTEX_OBJECT_POSITION_EXT) /* 0x81AD */ GL_ENUM(GL_IUI_V2F_EXT) /* 0x81AE */ GL_ENUM(GL_IUI_V3F_EXT) /* 0x81AF */ GL_ENUM(GL_IUI_N3F_V2F_EXT) /* 0x81B0 */ GL_ENUM(GL_IUI_N3F_V3F_EXT) /* 0x81B1 */ GL_ENUM(GL_T2F_IUI_V2F_EXT) /* 0x81B2 */ GL_ENUM(GL_T2F_IUI_V3F_EXT) /* 0x81B3 */ GL_ENUM(GL_T2F_IUI_N3F_V2F_EXT) /* 0x81B4 */ GL_ENUM(GL_T2F_IUI_N3F_V3F_EXT) /* 0x81B5 */ GL_ENUM(GL_INDEX_TEST_EXT) /* 0x81B6 */ GL_ENUM(GL_INDEX_TEST_FUNC_EXT) /* 0x81B7 */ GL_ENUM(GL_INDEX_TEST_REF_EXT) /* 0x81B8 */ GL_ENUM(GL_INDEX_MATERIAL_EXT) /* 0x81B9 */ GL_ENUM(GL_INDEX_MATERIAL_PARAMETER_EXT) /* 0x81BA */ GL_ENUM(GL_INDEX_MATERIAL_FACE_EXT) /* 0x81BB */ GL_ENUM(GL_YCRCB_422_SGIX) /* 0x81BC */ GL_ENUM(GL_YCRCB_444_SGIX) /* 0x81D4 */ GL_ENUM(GL_WRAP_BORDER_SUN) /* 0x81D5 */ GL_ENUM(GL_UNPACK_CONSTANT_DATA_SUNX) /* 0x81D6 */ GL_ENUM(GL_TEXTURE_CONSTANT_DATA_SUNX) /* 0x81D7 */ GL_ENUM(GL_TRIANGLE_LIST_SUN) /* 0x81D8 */ GL_ENUM(GL_REPLACEMENT_CODE_SUN) /* 0x81D9 */ GL_ENUM(GL_GLOBAL_ALPHA_SUN) /* 0x81DA */ GL_ENUM(GL_GLOBAL_ALPHA_FACTOR_SUN) /* 0x81EF */ GL_ENUM(GL_TEXTURE_COLOR_WRITEMASK_SGIS) /* 0x81F0 */ GL_ENUM(GL_EYE_DISTANCE_TO_POINT_SGIS) /* 0x81F1 */ GL_ENUM(GL_OBJECT_DISTANCE_TO_POINT_SGIS) /* 0x81F2 */ GL_ENUM(GL_EYE_DISTANCE_TO_LINE_SGIS) /* 0x81F3 */ GL_ENUM(GL_OBJECT_DISTANCE_TO_LINE_SGIS) /* 0x81F4 */ GL_ENUM(GL_EYE_POINT_SGIS) /* 0x81F5 */ GL_ENUM(GL_OBJECT_POINT_SGIS) /* 0x81F6 */ GL_ENUM(GL_EYE_LINE_SGIS) /* 0x81F7 */ GL_ENUM(GL_OBJECT_LINE_SGIS) /* 0x81F8 */ GL_ENUM(GL_LIGHT_MODEL_COLOR_CONTROL) /* 0x81F8 */ GL_ENUM(GL_LIGHT_MODEL_COLOR_CONTROL_EXT) /* 0x81F9 */ GL_ENUM(GL_SINGLE_COLOR) /* 0x81F9 */ GL_ENUM(GL_SINGLE_COLOR_EXT) /* 0x81FA */ GL_ENUM(GL_SEPARATE_SPECULAR_COLOR) /* 0x81FA */ GL_ENUM(GL_SEPARATE_SPECULAR_COLOR_EXT) /* 0x81FB */ GL_ENUM(GL_SHARED_TEXTURE_PALETTE_EXT) /* 0x81FC */ GL_ENUM(GL_FOG_SCALE_SGIX) /* 0x81FD */ GL_ENUM(GL_FOG_SCALE_VALUE_SGIX) /* 0x8200 */ GL_ENUM(GL_TEXT_FRAGMENT_SHADER_ATI) /* 0x8210 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) /* 0x8211 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) /* 0x8212 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE) /* 0x8213 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE) /* 0x8214 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE) /* 0x8215 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE) /* 0x8216 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE) /* 0x8217 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE) /* 0x8218 */ GL_ENUM(GL_FRAMEBUFFER_DEFAULT) /* 0x8219 */ GL_ENUM(GL_FRAMEBUFFER_UNDEFINED) /* 0x821A */ GL_ENUM(GL_DEPTH_STENCIL_ATTACHMENT) /* 0x821B */ GL_ENUM(GL_MAJOR_VERSION) /* 0x821C */ GL_ENUM(GL_MINOR_VERSION) /* 0x821D */ GL_ENUM(GL_NUM_EXTENSIONS) /* 0x821E */ GL_ENUM(GL_CONTEXT_FLAGS) /* 0x821F */ GL_ENUM(GL_BUFFER_IMMUTABLE_STORAGE) /* 0x8220 */ GL_ENUM(GL_BUFFER_STORAGE_FLAGS) /* 0x8221 */ GL_ENUM(GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED) /* 0x8222 */ GL_ENUM(GL_INDEX) /* 0x8223 */ GL_ENUM(GL_DEPTH_BUFFER) /* 0x8224 */ GL_ENUM(GL_STENCIL_BUFFER) /* 0x8225 */ GL_ENUM(GL_COMPRESSED_RED) /* 0x8226 */ GL_ENUM(GL_COMPRESSED_RG) /* 0x8227 */ GL_ENUM(GL_RG) /* 0x8228 */ GL_ENUM(GL_RG_INTEGER) /* 0x8229 */ GL_ENUM(GL_R8) /* 0x822A */ GL_ENUM(GL_R16) /* 0x822B */ GL_ENUM(GL_RG8) /* 0x822C */ GL_ENUM(GL_RG16) /* 0x822D */ GL_ENUM(GL_R16F) /* 0x822E */ GL_ENUM(GL_R32F) /* 0x822F */ GL_ENUM(GL_RG16F) /* 0x8230 */ GL_ENUM(GL_RG32F) /* 0x8231 */ GL_ENUM(GL_R8I) /* 0x8232 */ GL_ENUM(GL_R8UI) /* 0x8233 */ GL_ENUM(GL_R16I) /* 0x8234 */ GL_ENUM(GL_R16UI) /* 0x8235 */ GL_ENUM(GL_R32I) /* 0x8236 */ GL_ENUM(GL_R32UI) /* 0x8237 */ GL_ENUM(GL_RG8I) /* 0x8238 */ GL_ENUM(GL_RG8UI) /* 0x8239 */ GL_ENUM(GL_RG16I) /* 0x823A */ GL_ENUM(GL_RG16UI) /* 0x823B */ GL_ENUM(GL_RG32I) /* 0x823C */ GL_ENUM(GL_RG32UI) /* 0x8240 */ GL_ENUM(GL_SYNC_CL_EVENT_ARB) /* 0x8241 */ GL_ENUM(GL_SYNC_CL_EVENT_COMPLETE_ARB) /* 0x8242 */ GL_ENUM(GL_DEBUG_OUTPUT_SYNCHRONOUS) /* 0x8242 */ GL_ENUM(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB) /* 0x8243 */ GL_ENUM(GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH) /* 0x8243 */ GL_ENUM(GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB) /* 0x8244 */ GL_ENUM(GL_DEBUG_CALLBACK_FUNCTION) /* 0x8244 */ GL_ENUM(GL_DEBUG_CALLBACK_FUNCTION_ARB) /* 0x8245 */ GL_ENUM(GL_DEBUG_CALLBACK_USER_PARAM) /* 0x8245 */ GL_ENUM(GL_DEBUG_CALLBACK_USER_PARAM_ARB) /* 0x8246 */ GL_ENUM(GL_DEBUG_SOURCE_API) /* 0x8246 */ GL_ENUM(GL_DEBUG_SOURCE_API_ARB) /* 0x8247 */ GL_ENUM(GL_DEBUG_SOURCE_WINDOW_SYSTEM) /* 0x8247 */ GL_ENUM(GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB) /* 0x8248 */ GL_ENUM(GL_DEBUG_SOURCE_SHADER_COMPILER) /* 0x8248 */ GL_ENUM(GL_DEBUG_SOURCE_SHADER_COMPILER_ARB) /* 0x8249 */ GL_ENUM(GL_DEBUG_SOURCE_THIRD_PARTY) /* 0x8249 */ GL_ENUM(GL_DEBUG_SOURCE_THIRD_PARTY_ARB) /* 0x824A */ GL_ENUM(GL_DEBUG_SOURCE_APPLICATION) /* 0x824A */ GL_ENUM(GL_DEBUG_SOURCE_APPLICATION_ARB) /* 0x824B */ GL_ENUM(GL_DEBUG_SOURCE_OTHER) /* 0x824B */ GL_ENUM(GL_DEBUG_SOURCE_OTHER_ARB) /* 0x824C */ GL_ENUM(GL_DEBUG_TYPE_ERROR) /* 0x824C */ GL_ENUM(GL_DEBUG_TYPE_ERROR_ARB) /* 0x824D */ GL_ENUM(GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR) /* 0x824D */ GL_ENUM(GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB) /* 0x824E */ GL_ENUM(GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR) /* 0x824E */ GL_ENUM(GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB) /* 0x824F */ GL_ENUM(GL_DEBUG_TYPE_PORTABILITY) /* 0x824F */ GL_ENUM(GL_DEBUG_TYPE_PORTABILITY_ARB) /* 0x8250 */ GL_ENUM(GL_DEBUG_TYPE_PERFORMANCE) /* 0x8250 */ GL_ENUM(GL_DEBUG_TYPE_PERFORMANCE_ARB) /* 0x8251 */ GL_ENUM(GL_DEBUG_TYPE_OTHER) /* 0x8251 */ GL_ENUM(GL_DEBUG_TYPE_OTHER_ARB) /* 0x8252 */ GL_ENUM(GL_LOSE_CONTEXT_ON_RESET) /* 0x8252 */ GL_ENUM(GL_LOSE_CONTEXT_ON_RESET_ARB) /* 0x8253 */ GL_ENUM(GL_GUILTY_CONTEXT_RESET) /* 0x8253 */ GL_ENUM(GL_GUILTY_CONTEXT_RESET_ARB) /* 0x8254 */ GL_ENUM(GL_INNOCENT_CONTEXT_RESET) /* 0x8254 */ GL_ENUM(GL_INNOCENT_CONTEXT_RESET_ARB) /* 0x8255 */ GL_ENUM(GL_UNKNOWN_CONTEXT_RESET) /* 0x8255 */ GL_ENUM(GL_UNKNOWN_CONTEXT_RESET_ARB) /* 0x8256 */ GL_ENUM(GL_RESET_NOTIFICATION_STRATEGY) /* 0x8256 */ GL_ENUM(GL_RESET_NOTIFICATION_STRATEGY_ARB) /* 0x8257 */ GL_ENUM(GL_PROGRAM_BINARY_RETRIEVABLE_HINT) /* 0x8258 */ GL_ENUM(GL_PROGRAM_SEPARABLE) /* 0x8259 */ GL_ENUM(GL_ACTIVE_PROGRAM) /* 0x825A */ GL_ENUM(GL_PROGRAM_PIPELINE_BINDING) /* 0x825B */ GL_ENUM(GL_MAX_VIEWPORTS) /* 0x825C */ GL_ENUM(GL_VIEWPORT_SUBPIXEL_BITS) /* 0x825D */ GL_ENUM(GL_VIEWPORT_BOUNDS_RANGE) /* 0x825E */ GL_ENUM(GL_LAYER_PROVOKING_VERTEX) /* 0x825F */ GL_ENUM(GL_VIEWPORT_INDEX_PROVOKING_VERTEX) /* 0x8260 */ GL_ENUM(GL_UNDEFINED_VERTEX) /* 0x8261 */ GL_ENUM(GL_NO_RESET_NOTIFICATION) /* 0x8261 */ GL_ENUM(GL_NO_RESET_NOTIFICATION_ARB) /* 0x8262 */ GL_ENUM(GL_MAX_COMPUTE_SHARED_MEMORY_SIZE) /* 0x8263 */ GL_ENUM(GL_MAX_COMPUTE_UNIFORM_COMPONENTS) /* 0x8264 */ GL_ENUM(GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS) /* 0x8265 */ GL_ENUM(GL_MAX_COMPUTE_ATOMIC_COUNTERS) /* 0x8266 */ GL_ENUM(GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS) /* 0x8267 */ GL_ENUM(GL_COMPUTE_WORK_GROUP_SIZE) /* 0x8268 */ GL_ENUM(GL_DEBUG_TYPE_MARKER) /* 0x8269 */ GL_ENUM(GL_DEBUG_TYPE_PUSH_GROUP) /* 0x826A */ GL_ENUM(GL_DEBUG_TYPE_POP_GROUP) /* 0x826B */ GL_ENUM(GL_DEBUG_SEVERITY_NOTIFICATION) /* 0x826C */ GL_ENUM(GL_MAX_DEBUG_GROUP_STACK_DEPTH) /* 0x826D */ GL_ENUM(GL_DEBUG_GROUP_STACK_DEPTH) /* 0x826E */ GL_ENUM(GL_MAX_UNIFORM_LOCATIONS) /* 0x826F */ GL_ENUM(GL_INTERNALFORMAT_SUPPORTED) /* 0x8270 */ GL_ENUM(GL_INTERNALFORMAT_PREFERRED) /* 0x8271 */ GL_ENUM(GL_INTERNALFORMAT_RED_SIZE) /* 0x8272 */ GL_ENUM(GL_INTERNALFORMAT_GREEN_SIZE) /* 0x8273 */ GL_ENUM(GL_INTERNALFORMAT_BLUE_SIZE) /* 0x8274 */ GL_ENUM(GL_INTERNALFORMAT_ALPHA_SIZE) /* 0x8275 */ GL_ENUM(GL_INTERNALFORMAT_DEPTH_SIZE) /* 0x8276 */ GL_ENUM(GL_INTERNALFORMAT_STENCIL_SIZE) /* 0x8277 */ GL_ENUM(GL_INTERNALFORMAT_SHARED_SIZE) /* 0x8278 */ GL_ENUM(GL_INTERNALFORMAT_RED_TYPE) /* 0x8279 */ GL_ENUM(GL_INTERNALFORMAT_GREEN_TYPE) /* 0x827A */ GL_ENUM(GL_INTERNALFORMAT_BLUE_TYPE) /* 0x827B */ GL_ENUM(GL_INTERNALFORMAT_ALPHA_TYPE) /* 0x827C */ GL_ENUM(GL_INTERNALFORMAT_DEPTH_TYPE) /* 0x827D */ GL_ENUM(GL_INTERNALFORMAT_STENCIL_TYPE) /* 0x827E */ GL_ENUM(GL_MAX_WIDTH) /* 0x827F */ GL_ENUM(GL_MAX_HEIGHT) /* 0x8280 */ GL_ENUM(GL_MAX_DEPTH) /* 0x8281 */ GL_ENUM(GL_MAX_LAYERS) /* 0x8282 */ GL_ENUM(GL_MAX_COMBINED_DIMENSIONS) /* 0x8283 */ GL_ENUM(GL_COLOR_COMPONENTS) /* 0x8284 */ GL_ENUM(GL_DEPTH_COMPONENTS) /* 0x8285 */ GL_ENUM(GL_STENCIL_COMPONENTS) /* 0x8286 */ GL_ENUM(GL_COLOR_RENDERABLE) /* 0x8287 */ GL_ENUM(GL_DEPTH_RENDERABLE) /* 0x8288 */ GL_ENUM(GL_STENCIL_RENDERABLE) /* 0x8289 */ GL_ENUM(GL_FRAMEBUFFER_RENDERABLE) /* 0x828A */ GL_ENUM(GL_FRAMEBUFFER_RENDERABLE_LAYERED) /* 0x828B */ GL_ENUM(GL_FRAMEBUFFER_BLEND) /* 0x828C */ GL_ENUM(GL_READ_PIXELS) /* 0x828D */ GL_ENUM(GL_READ_PIXELS_FORMAT) /* 0x828E */ GL_ENUM(GL_READ_PIXELS_TYPE) /* 0x828F */ GL_ENUM(GL_TEXTURE_IMAGE_FORMAT) /* 0x8290 */ GL_ENUM(GL_TEXTURE_IMAGE_TYPE) /* 0x8291 */ GL_ENUM(GL_GET_TEXTURE_IMAGE_FORMAT) /* 0x8292 */ GL_ENUM(GL_GET_TEXTURE_IMAGE_TYPE) /* 0x8293 */ GL_ENUM(GL_MIPMAP) /* 0x8294 */ GL_ENUM(GL_MANUAL_GENERATE_MIPMAP) /* 0x8295 */ GL_ENUM(GL_AUTO_GENERATE_MIPMAP) /* 0x8296 */ GL_ENUM(GL_COLOR_ENCODING) /* 0x8297 */ GL_ENUM(GL_SRGB_READ) /* 0x8298 */ GL_ENUM(GL_SRGB_WRITE) /* 0x8299 */ GL_ENUM(GL_SRGB_DECODE_ARB) /* 0x829A */ GL_ENUM(GL_FILTER) /* 0x829B */ GL_ENUM(GL_VERTEX_TEXTURE) /* 0x829C */ GL_ENUM(GL_TESS_CONTROL_TEXTURE) /* 0x829D */ GL_ENUM(GL_TESS_EVALUATION_TEXTURE) /* 0x829E */ GL_ENUM(GL_GEOMETRY_TEXTURE) /* 0x829F */ GL_ENUM(GL_FRAGMENT_TEXTURE) /* 0x82A0 */ GL_ENUM(GL_COMPUTE_TEXTURE) /* 0x82A1 */ GL_ENUM(GL_TEXTURE_SHADOW) /* 0x82A2 */ GL_ENUM(GL_TEXTURE_GATHER) /* 0x82A3 */ GL_ENUM(GL_TEXTURE_GATHER_SHADOW) /* 0x82A4 */ GL_ENUM(GL_SHADER_IMAGE_LOAD) /* 0x82A5 */ GL_ENUM(GL_SHADER_IMAGE_STORE) /* 0x82A6 */ GL_ENUM(GL_SHADER_IMAGE_ATOMIC) /* 0x82A7 */ GL_ENUM(GL_IMAGE_TEXEL_SIZE) /* 0x82A8 */ GL_ENUM(GL_IMAGE_COMPATIBILITY_CLASS) /* 0x82A9 */ GL_ENUM(GL_IMAGE_PIXEL_FORMAT) /* 0x82AA */ GL_ENUM(GL_IMAGE_PIXEL_TYPE) /* 0x82AC */ GL_ENUM(GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST) /* 0x82AD */ GL_ENUM(GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST) /* 0x82AE */ GL_ENUM(GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE) /* 0x82AF */ GL_ENUM(GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE) /* 0x82B1 */ GL_ENUM(GL_TEXTURE_COMPRESSED_BLOCK_WIDTH) /* 0x82B2 */ GL_ENUM(GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT) /* 0x82B3 */ GL_ENUM(GL_TEXTURE_COMPRESSED_BLOCK_SIZE) /* 0x82B4 */ GL_ENUM(GL_CLEAR_BUFFER) /* 0x82B5 */ GL_ENUM(GL_TEXTURE_VIEW) /* 0x82B6 */ GL_ENUM(GL_VIEW_COMPATIBILITY_CLASS) /* 0x82B7 */ GL_ENUM(GL_FULL_SUPPORT) /* 0x82B8 */ GL_ENUM(GL_CAVEAT_SUPPORT) /* 0x82B9 */ GL_ENUM(GL_IMAGE_CLASS_4_X_32) /* 0x82BA */ GL_ENUM(GL_IMAGE_CLASS_2_X_32) /* 0x82BB */ GL_ENUM(GL_IMAGE_CLASS_1_X_32) /* 0x82BC */ GL_ENUM(GL_IMAGE_CLASS_4_X_16) /* 0x82BD */ GL_ENUM(GL_IMAGE_CLASS_2_X_16) /* 0x82BE */ GL_ENUM(GL_IMAGE_CLASS_1_X_16) /* 0x82BF */ GL_ENUM(GL_IMAGE_CLASS_4_X_8) /* 0x82C0 */ GL_ENUM(GL_IMAGE_CLASS_2_X_8) /* 0x82C1 */ GL_ENUM(GL_IMAGE_CLASS_1_X_8) /* 0x82C2 */ GL_ENUM(GL_IMAGE_CLASS_11_11_10) /* 0x82C3 */ GL_ENUM(GL_IMAGE_CLASS_10_10_10_2) /* 0x82C4 */ GL_ENUM(GL_VIEW_CLASS_128_BITS) /* 0x82C5 */ GL_ENUM(GL_VIEW_CLASS_96_BITS) /* 0x82C6 */ GL_ENUM(GL_VIEW_CLASS_64_BITS) /* 0x82C7 */ GL_ENUM(GL_VIEW_CLASS_48_BITS) /* 0x82C8 */ GL_ENUM(GL_VIEW_CLASS_32_BITS) /* 0x82C9 */ GL_ENUM(GL_VIEW_CLASS_24_BITS) /* 0x82CA */ GL_ENUM(GL_VIEW_CLASS_16_BITS) /* 0x82CB */ GL_ENUM(GL_VIEW_CLASS_8_BITS) /* 0x82CC */ GL_ENUM(GL_VIEW_CLASS_S3TC_DXT1_RGB) /* 0x82CD */ GL_ENUM(GL_VIEW_CLASS_S3TC_DXT1_RGBA) /* 0x82CE */ GL_ENUM(GL_VIEW_CLASS_S3TC_DXT3_RGBA) /* 0x82CF */ GL_ENUM(GL_VIEW_CLASS_S3TC_DXT5_RGBA) /* 0x82D0 */ GL_ENUM(GL_VIEW_CLASS_RGTC1_RED) /* 0x82D1 */ GL_ENUM(GL_VIEW_CLASS_RGTC2_RG) /* 0x82D2 */ GL_ENUM(GL_VIEW_CLASS_BPTC_UNORM) /* 0x82D3 */ GL_ENUM(GL_VIEW_CLASS_BPTC_FLOAT) /* 0x82D4 */ GL_ENUM(GL_VERTEX_ATTRIB_BINDING) /* 0x82D5 */ GL_ENUM(GL_VERTEX_ATTRIB_RELATIVE_OFFSET) /* 0x82D6 */ GL_ENUM(GL_VERTEX_BINDING_DIVISOR) /* 0x82D7 */ GL_ENUM(GL_VERTEX_BINDING_OFFSET) /* 0x82D8 */ GL_ENUM(GL_VERTEX_BINDING_STRIDE) /* 0x82D9 */ GL_ENUM(GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET) /* 0x82DA */ GL_ENUM(GL_MAX_VERTEX_ATTRIB_BINDINGS) /* 0x82DB */ GL_ENUM(GL_TEXTURE_VIEW_MIN_LEVEL) /* 0x82DC */ GL_ENUM(GL_TEXTURE_VIEW_NUM_LEVELS) /* 0x82DD */ GL_ENUM(GL_TEXTURE_VIEW_MIN_LAYER) /* 0x82DE */ GL_ENUM(GL_TEXTURE_VIEW_NUM_LAYERS) /* 0x82DF */ GL_ENUM(GL_TEXTURE_IMMUTABLE_LEVELS) /* 0x82E0 */ GL_ENUM(GL_BUFFER) /* 0x82E1 */ GL_ENUM(GL_SHADER) /* 0x82E2 */ GL_ENUM(GL_PROGRAM) /* 0x82E3 */ GL_ENUM(GL_QUERY) /* 0x82E4 */ GL_ENUM(GL_PROGRAM_PIPELINE) /* 0x82E5 */ GL_ENUM(GL_MAX_VERTEX_ATTRIB_STRIDE) /* 0x82E6 */ GL_ENUM(GL_SAMPLER) /* 0x82E7 */ GL_ENUM(GL_DISPLAY_LIST) /* 0x82E8 */ GL_ENUM(GL_MAX_LABEL_LENGTH) /* 0x82E9 */ GL_ENUM(GL_NUM_SHADING_LANGUAGE_VERSIONS) /* 0x82EA */ GL_ENUM(GL_QUERY_TARGET) /* 0x82EC */ GL_ENUM(GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB) /* 0x82ED */ GL_ENUM(GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB) /* 0x82EE */ GL_ENUM(GL_VERTICES_SUBMITTED_ARB) /* 0x82EF */ GL_ENUM(GL_PRIMITIVES_SUBMITTED_ARB) /* 0x82F0 */ GL_ENUM(GL_VERTEX_SHADER_INVOCATIONS_ARB) /* 0x82F1 */ GL_ENUM(GL_TESS_CONTROL_SHADER_PATCHES_ARB) /* 0x82F2 */ GL_ENUM(GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB) /* 0x82F3 */ GL_ENUM(GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB) /* 0x82F4 */ GL_ENUM(GL_FRAGMENT_SHADER_INVOCATIONS_ARB) /* 0x82F5 */ GL_ENUM(GL_COMPUTE_SHADER_INVOCATIONS_ARB) /* 0x82F6 */ GL_ENUM(GL_CLIPPING_INPUT_PRIMITIVES_ARB) /* 0x82F7 */ GL_ENUM(GL_CLIPPING_OUTPUT_PRIMITIVES_ARB) /* 0x82F8 */ GL_ENUM(GL_SPARSE_BUFFER_PAGE_SIZE_ARB) /* 0x82F9 */ GL_ENUM(GL_MAX_CULL_DISTANCES) /* 0x82FA */ GL_ENUM(GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES) /* 0x82FB */ GL_ENUM(GL_CONTEXT_RELEASE_BEHAVIOR) /* 0x82FC */ GL_ENUM(GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH) /* 0x8310 */ GL_ENUM(GL_DEPTH_PASS_INSTRUMENT_SGIX) /* 0x8311 */ GL_ENUM(GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX) /* 0x8312 */ GL_ENUM(GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX) /* 0x8316 */ GL_ENUM(GL_CONVOLUTION_HINT_SGIX) /* 0x8318 */ GL_ENUM(GL_YCRCB_SGIX) /* 0x8319 */ GL_ENUM(GL_YCRCBA_SGIX) /* 0x8320 */ GL_ENUM(GL_ALPHA_MIN_SGIX) /* 0x8321 */ GL_ENUM(GL_ALPHA_MAX_SGIX) /* 0x8322 */ GL_ENUM(GL_SCALEBIAS_HINT_SGIX) /* 0x8329 */ GL_ENUM(GL_ASYNC_MARKER_SGIX) /* 0x832B */ GL_ENUM(GL_PIXEL_TEX_GEN_MODE_SGIX) /* 0x832C */ GL_ENUM(GL_ASYNC_HISTOGRAM_SGIX) /* 0x832D */ GL_ENUM(GL_MAX_ASYNC_HISTOGRAM_SGIX) /* 0x8330 */ GL_ENUM(GL_PIXEL_TRANSFORM_2D_EXT) /* 0x8331 */ GL_ENUM(GL_PIXEL_MAG_FILTER_EXT) /* 0x8332 */ GL_ENUM(GL_PIXEL_MIN_FILTER_EXT) /* 0x8333 */ GL_ENUM(GL_PIXEL_CUBIC_WEIGHT_EXT) /* 0x8334 */ GL_ENUM(GL_CUBIC_EXT) /* 0x8335 */ GL_ENUM(GL_AVERAGE_EXT) /* 0x8336 */ GL_ENUM(GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT) /* 0x8337 */ GL_ENUM(GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT) /* 0x8338 */ GL_ENUM(GL_PIXEL_TRANSFORM_2D_MATRIX_EXT) /* 0x8349 */ GL_ENUM(GL_FRAGMENT_MATERIAL_EXT) /* 0x834A */ GL_ENUM(GL_FRAGMENT_NORMAL_EXT) /* 0x834C */ GL_ENUM(GL_FRAGMENT_COLOR_EXT) /* 0x834D */ GL_ENUM(GL_ATTENUATION_EXT) /* 0x834E */ GL_ENUM(GL_SHADOW_ATTENUATION_EXT) /* 0x834F */ GL_ENUM(GL_TEXTURE_APPLICATION_MODE_EXT) /* 0x8350 */ GL_ENUM(GL_TEXTURE_LIGHT_EXT) /* 0x8351 */ GL_ENUM(GL_TEXTURE_MATERIAL_FACE_EXT) /* 0x8352 */ GL_ENUM(GL_TEXTURE_MATERIAL_PARAMETER_EXT) /* 0x8353 */ GL_ENUM(GL_PIXEL_TEXTURE_SGIS) /* 0x8354 */ GL_ENUM(GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS) /* 0x8355 */ GL_ENUM(GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS) /* 0x8356 */ GL_ENUM(GL_PIXEL_GROUP_COLOR_SGIS) /* 0x835C */ GL_ENUM(GL_ASYNC_TEX_IMAGE_SGIX) /* 0x835D */ GL_ENUM(GL_ASYNC_DRAW_PIXELS_SGIX) /* 0x835E */ GL_ENUM(GL_ASYNC_READ_PIXELS_SGIX) /* 0x835F */ GL_ENUM(GL_MAX_ASYNC_TEX_IMAGE_SGIX) /* 0x8360 */ GL_ENUM(GL_MAX_ASYNC_DRAW_PIXELS_SGIX) /* 0x8361 */ GL_ENUM(GL_MAX_ASYNC_READ_PIXELS_SGIX) /* 0x8362 */ GL_ENUM(GL_UNSIGNED_BYTE_2_3_3_REV) /* 0x8363 */ GL_ENUM(GL_UNSIGNED_SHORT_5_6_5) /* 0x8364 */ GL_ENUM(GL_UNSIGNED_SHORT_5_6_5_REV) /* 0x8365 */ GL_ENUM(GL_UNSIGNED_SHORT_4_4_4_4_REV) /* 0x8366 */ GL_ENUM(GL_UNSIGNED_SHORT_1_5_5_5_REV) /* 0x8367 */ GL_ENUM(GL_UNSIGNED_INT_8_8_8_8_REV) /* 0x8368 */ GL_ENUM(GL_UNSIGNED_INT_2_10_10_10_REV) /* 0x8369 */ GL_ENUM(GL_TEXTURE_MAX_CLAMP_S_SGIX) /* 0x836A */ GL_ENUM(GL_TEXTURE_MAX_CLAMP_T_SGIX) /* 0x836B */ GL_ENUM(GL_TEXTURE_MAX_CLAMP_R_SGIX) /* 0x8370 */ GL_ENUM(GL_MIRRORED_REPEAT) /* 0x8370 */ GL_ENUM(GL_MIRRORED_REPEAT_ARB) /* 0x8370 */ GL_ENUM(GL_MIRRORED_REPEAT_IBM) /* 0x83A0 */ GL_ENUM(GL_RGB_S3TC) /* 0x83A1 */ GL_ENUM(GL_RGB4_S3TC) /* 0x83A2 */ GL_ENUM(GL_RGBA_S3TC) /* 0x83A3 */ GL_ENUM(GL_RGBA4_S3TC) /* 0x83A4 */ GL_ENUM(GL_RGBA_DXT5_S3TC) /* 0x83A5 */ GL_ENUM(GL_RGBA4_DXT5_S3TC) /* 0x83EE */ GL_ENUM(GL_VERTEX_PRECLIP_SGIX) /* 0x83EF */ GL_ENUM(GL_VERTEX_PRECLIP_HINT_SGIX) /* 0x83F0 */ GL_ENUM(GL_COMPRESSED_RGB_S3TC_DXT1_EXT) /* 0x83F1 */ GL_ENUM(GL_COMPRESSED_RGBA_S3TC_DXT1_EXT) /* 0x83F2 */ GL_ENUM(GL_COMPRESSED_RGBA_S3TC_DXT3_EXT) /* 0x83F3 */ GL_ENUM(GL_COMPRESSED_RGBA_S3TC_DXT5_EXT) /* 0x83F4 */ GL_ENUM(GL_PARALLEL_ARRAYS_INTEL) /* 0x83F5 */ GL_ENUM(GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL) /* 0x83F6 */ GL_ENUM(GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL) /* 0x83F7 */ GL_ENUM(GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL) /* 0x83F8 */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL) /* 0x83F9 */ GL_ENUM(GL_PERFQUERY_DONOT_FLUSH_INTEL) /* 0x83FA */ GL_ENUM(GL_PERFQUERY_FLUSH_INTEL) /* 0x83FB */ GL_ENUM(GL_PERFQUERY_WAIT_INTEL) /* 0x83FF */ GL_ENUM(GL_TEXTURE_MEMORY_LAYOUT_INTEL) /* 0x8400 */ GL_ENUM(GL_FRAGMENT_LIGHTING_SGIX) /* 0x8401 */ GL_ENUM(GL_FRAGMENT_COLOR_MATERIAL_SGIX) /* 0x8402 */ GL_ENUM(GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX) /* 0x8403 */ GL_ENUM(GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX) /* 0x8404 */ GL_ENUM(GL_MAX_FRAGMENT_LIGHTS_SGIX) /* 0x8405 */ GL_ENUM(GL_MAX_ACTIVE_LIGHTS_SGIX) /* 0x8406 */ GL_ENUM(GL_CURRENT_RASTER_NORMAL_SGIX) /* 0x8407 */ GL_ENUM(GL_LIGHT_ENV_MODE_SGIX) /* 0x8408 */ GL_ENUM(GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX) /* 0x8409 */ GL_ENUM(GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX) /* 0x840A */ GL_ENUM(GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX) /* 0x840B */ GL_ENUM(GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX) /* 0x840C */ GL_ENUM(GL_FRAGMENT_LIGHT0_SGIX) /* 0x840D */ GL_ENUM(GL_FRAGMENT_LIGHT1_SGIX) /* 0x840E */ GL_ENUM(GL_FRAGMENT_LIGHT2_SGIX) /* 0x840F */ GL_ENUM(GL_FRAGMENT_LIGHT3_SGIX) /* 0x8410 */ GL_ENUM(GL_FRAGMENT_LIGHT4_SGIX) /* 0x8411 */ GL_ENUM(GL_FRAGMENT_LIGHT5_SGIX) /* 0x8412 */ GL_ENUM(GL_FRAGMENT_LIGHT6_SGIX) /* 0x8413 */ GL_ENUM(GL_FRAGMENT_LIGHT7_SGIX) /* 0x842C */ GL_ENUM(GL_PACK_RESAMPLE_SGIX) /* 0x842D */ GL_ENUM(GL_UNPACK_RESAMPLE_SGIX) /* 0x842E */ GL_ENUM(GL_RESAMPLE_REPLICATE_SGIX) /* 0x842F */ GL_ENUM(GL_RESAMPLE_ZERO_FILL_SGIX) /* 0x8430 */ GL_ENUM(GL_RESAMPLE_DECIMATE_SGIX) /* 0x8439 */ GL_ENUM(GL_TANGENT_ARRAY_EXT) /* 0x843A */ GL_ENUM(GL_BINORMAL_ARRAY_EXT) /* 0x843B */ GL_ENUM(GL_CURRENT_TANGENT_EXT) /* 0x843C */ GL_ENUM(GL_CURRENT_BINORMAL_EXT) /* 0x843E */ GL_ENUM(GL_TANGENT_ARRAY_TYPE_EXT) /* 0x843F */ GL_ENUM(GL_TANGENT_ARRAY_STRIDE_EXT) /* 0x8440 */ GL_ENUM(GL_BINORMAL_ARRAY_TYPE_EXT) /* 0x8441 */ GL_ENUM(GL_BINORMAL_ARRAY_STRIDE_EXT) /* 0x8442 */ GL_ENUM(GL_TANGENT_ARRAY_POINTER_EXT) /* 0x8443 */ GL_ENUM(GL_BINORMAL_ARRAY_POINTER_EXT) /* 0x8444 */ GL_ENUM(GL_MAP1_TANGENT_EXT) /* 0x8445 */ GL_ENUM(GL_MAP2_TANGENT_EXT) /* 0x8446 */ GL_ENUM(GL_MAP1_BINORMAL_EXT) /* 0x8447 */ GL_ENUM(GL_MAP2_BINORMAL_EXT) /* 0x844D */ GL_ENUM(GL_NEAREST_CLIPMAP_NEAREST_SGIX) /* 0x844E */ GL_ENUM(GL_NEAREST_CLIPMAP_LINEAR_SGIX) /* 0x844F */ GL_ENUM(GL_LINEAR_CLIPMAP_NEAREST_SGIX) /* 0x8450 */ GL_ENUM(GL_FOG_COORDINATE_SOURCE) /* 0x8450 */ GL_ENUM(GL_FOG_COORDINATE_SOURCE_EXT) /* 0x8450 */ GL_ENUM(GL_FOG_COORD_SRC) /* 0x8451 */ GL_ENUM(GL_FOG_COORD) /* 0x8451 */ GL_ENUM(GL_FOG_COORDINATE) /* 0x8451 */ GL_ENUM(GL_FOG_COORDINATE_EXT) /* 0x8452 */ GL_ENUM(GL_FRAGMENT_DEPTH) /* 0x8452 */ GL_ENUM(GL_FRAGMENT_DEPTH_EXT) /* 0x8453 */ GL_ENUM(GL_CURRENT_FOG_COORD) /* 0x8453 */ GL_ENUM(GL_CURRENT_FOG_COORDINATE) /* 0x8453 */ GL_ENUM(GL_CURRENT_FOG_COORDINATE_EXT) /* 0x8454 */ GL_ENUM(GL_FOG_COORDINATE_ARRAY_TYPE) /* 0x8454 */ GL_ENUM(GL_FOG_COORDINATE_ARRAY_TYPE_EXT) /* 0x8454 */ GL_ENUM(GL_FOG_COORD_ARRAY_TYPE) /* 0x8455 */ GL_ENUM(GL_FOG_COORDINATE_ARRAY_STRIDE) /* 0x8455 */ GL_ENUM(GL_FOG_COORDINATE_ARRAY_STRIDE_EXT) /* 0x8455 */ GL_ENUM(GL_FOG_COORD_ARRAY_STRIDE) /* 0x8456 */ GL_ENUM(GL_FOG_COORDINATE_ARRAY_POINTER) /* 0x8456 */ GL_ENUM(GL_FOG_COORDINATE_ARRAY_POINTER_EXT) /* 0x8456 */ GL_ENUM(GL_FOG_COORD_ARRAY_POINTER) /* 0x8457 */ GL_ENUM(GL_FOG_COORDINATE_ARRAY) /* 0x8457 */ GL_ENUM(GL_FOG_COORDINATE_ARRAY_EXT) /* 0x8457 */ GL_ENUM(GL_FOG_COORD_ARRAY) /* 0x8458 */ GL_ENUM(GL_COLOR_SUM) /* 0x8458 */ GL_ENUM(GL_COLOR_SUM_ARB) /* 0x8458 */ GL_ENUM(GL_COLOR_SUM_EXT) /* 0x8459 */ GL_ENUM(GL_CURRENT_SECONDARY_COLOR) /* 0x8459 */ GL_ENUM(GL_CURRENT_SECONDARY_COLOR_EXT) /* 0x845A */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_SIZE) /* 0x845A */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_SIZE_EXT) /* 0x845B */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_TYPE) /* 0x845B */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_TYPE_EXT) /* 0x845C */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_STRIDE) /* 0x845C */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT) /* 0x845D */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_POINTER) /* 0x845D */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_POINTER_EXT) /* 0x845E */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY) /* 0x845E */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_EXT) /* 0x845F */ GL_ENUM(GL_CURRENT_RASTER_SECONDARY_COLOR) /* 0x846D */ GL_ENUM(GL_ALIASED_POINT_SIZE_RANGE) /* 0x846E */ GL_ENUM(GL_ALIASED_LINE_WIDTH_RANGE) /* 0x8490 */ GL_ENUM(GL_SCREEN_COORDINATES_REND) /* 0x8491 */ GL_ENUM(GL_INVERTED_SCREEN_W_REND) /* 0x84C0 */ GL_ENUM(GL_TEXTURE0) /* 0x84C0 */ GL_ENUM(GL_TEXTURE0_ARB) /* 0x84C1 */ GL_ENUM(GL_TEXTURE1) /* 0x84C1 */ GL_ENUM(GL_TEXTURE1_ARB) /* 0x84C2 */ GL_ENUM(GL_TEXTURE2) /* 0x84C2 */ GL_ENUM(GL_TEXTURE2_ARB) /* 0x84C3 */ GL_ENUM(GL_TEXTURE3) /* 0x84C3 */ GL_ENUM(GL_TEXTURE3_ARB) /* 0x84C4 */ GL_ENUM(GL_TEXTURE4) /* 0x84C4 */ GL_ENUM(GL_TEXTURE4_ARB) /* 0x84C5 */ GL_ENUM(GL_TEXTURE5) /* 0x84C5 */ GL_ENUM(GL_TEXTURE5_ARB) /* 0x84C6 */ GL_ENUM(GL_TEXTURE6) /* 0x84C6 */ GL_ENUM(GL_TEXTURE6_ARB) /* 0x84C7 */ GL_ENUM(GL_TEXTURE7) /* 0x84C7 */ GL_ENUM(GL_TEXTURE7_ARB) /* 0x84C8 */ GL_ENUM(GL_TEXTURE8) /* 0x84C8 */ GL_ENUM(GL_TEXTURE8_ARB) /* 0x84C9 */ GL_ENUM(GL_TEXTURE9) /* 0x84C9 */ GL_ENUM(GL_TEXTURE9_ARB) /* 0x84CA */ GL_ENUM(GL_TEXTURE10) /* 0x84CA */ GL_ENUM(GL_TEXTURE10_ARB) /* 0x84CB */ GL_ENUM(GL_TEXTURE11) /* 0x84CB */ GL_ENUM(GL_TEXTURE11_ARB) /* 0x84CC */ GL_ENUM(GL_TEXTURE12) /* 0x84CC */ GL_ENUM(GL_TEXTURE12_ARB) /* 0x84CD */ GL_ENUM(GL_TEXTURE13) /* 0x84CD */ GL_ENUM(GL_TEXTURE13_ARB) /* 0x84CE */ GL_ENUM(GL_TEXTURE14) /* 0x84CE */ GL_ENUM(GL_TEXTURE14_ARB) /* 0x84CF */ GL_ENUM(GL_TEXTURE15) /* 0x84CF */ GL_ENUM(GL_TEXTURE15_ARB) /* 0x84D0 */ GL_ENUM(GL_TEXTURE16) /* 0x84D0 */ GL_ENUM(GL_TEXTURE16_ARB) /* 0x84D1 */ GL_ENUM(GL_TEXTURE17) /* 0x84D1 */ GL_ENUM(GL_TEXTURE17_ARB) /* 0x84D2 */ GL_ENUM(GL_TEXTURE18) /* 0x84D2 */ GL_ENUM(GL_TEXTURE18_ARB) /* 0x84D3 */ GL_ENUM(GL_TEXTURE19) /* 0x84D3 */ GL_ENUM(GL_TEXTURE19_ARB) /* 0x84D4 */ GL_ENUM(GL_TEXTURE20) /* 0x84D4 */ GL_ENUM(GL_TEXTURE20_ARB) /* 0x84D5 */ GL_ENUM(GL_TEXTURE21) /* 0x84D5 */ GL_ENUM(GL_TEXTURE21_ARB) /* 0x84D6 */ GL_ENUM(GL_TEXTURE22) /* 0x84D6 */ GL_ENUM(GL_TEXTURE22_ARB) /* 0x84D7 */ GL_ENUM(GL_TEXTURE23) /* 0x84D7 */ GL_ENUM(GL_TEXTURE23_ARB) /* 0x84D8 */ GL_ENUM(GL_TEXTURE24) /* 0x84D8 */ GL_ENUM(GL_TEXTURE24_ARB) /* 0x84D9 */ GL_ENUM(GL_TEXTURE25) /* 0x84D9 */ GL_ENUM(GL_TEXTURE25_ARB) /* 0x84DA */ GL_ENUM(GL_TEXTURE26) /* 0x84DA */ GL_ENUM(GL_TEXTURE26_ARB) /* 0x84DB */ GL_ENUM(GL_TEXTURE27) /* 0x84DB */ GL_ENUM(GL_TEXTURE27_ARB) /* 0x84DC */ GL_ENUM(GL_TEXTURE28) /* 0x84DC */ GL_ENUM(GL_TEXTURE28_ARB) /* 0x84DD */ GL_ENUM(GL_TEXTURE29) /* 0x84DD */ GL_ENUM(GL_TEXTURE29_ARB) /* 0x84DE */ GL_ENUM(GL_TEXTURE30) /* 0x84DE */ GL_ENUM(GL_TEXTURE30_ARB) /* 0x84DF */ GL_ENUM(GL_TEXTURE31) /* 0x84DF */ GL_ENUM(GL_TEXTURE31_ARB) /* 0x84E0 */ GL_ENUM(GL_ACTIVE_TEXTURE) /* 0x84E0 */ GL_ENUM(GL_ACTIVE_TEXTURE_ARB) /* 0x84E1 */ GL_ENUM(GL_CLIENT_ACTIVE_TEXTURE) /* 0x84E1 */ GL_ENUM(GL_CLIENT_ACTIVE_TEXTURE_ARB) /* 0x84E2 */ GL_ENUM(GL_MAX_TEXTURE_UNITS) /* 0x84E2 */ GL_ENUM(GL_MAX_TEXTURE_UNITS_ARB) /* 0x84E3 */ GL_ENUM(GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV) /* 0x84E3 */ GL_ENUM(GL_TRANSPOSE_MODELVIEW_MATRIX) /* 0x84E3 */ GL_ENUM(GL_TRANSPOSE_MODELVIEW_MATRIX_ARB) /* 0x84E4 */ GL_ENUM(GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV) /* 0x84E4 */ GL_ENUM(GL_TRANSPOSE_PROJECTION_MATRIX) /* 0x84E4 */ GL_ENUM(GL_TRANSPOSE_PROJECTION_MATRIX_ARB) /* 0x84E5 */ GL_ENUM(GL_TRANSPOSE_TEXTURE_MATRIX) /* 0x84E5 */ GL_ENUM(GL_TRANSPOSE_TEXTURE_MATRIX_ARB) /* 0x84E6 */ GL_ENUM(GL_TRANSPOSE_COLOR_MATRIX) /* 0x84E6 */ GL_ENUM(GL_TRANSPOSE_COLOR_MATRIX_ARB) /* 0x84E7 */ GL_ENUM(GL_SUBTRACT) /* 0x84E7 */ GL_ENUM(GL_SUBTRACT_ARB) /* 0x84E8 */ GL_ENUM(GL_MAX_RENDERBUFFER_SIZE) /* 0x84E8 */ GL_ENUM(GL_MAX_RENDERBUFFER_SIZE_EXT) /* 0x84E9 */ GL_ENUM(GL_COMPRESSED_ALPHA) /* 0x84E9 */ GL_ENUM(GL_COMPRESSED_ALPHA_ARB) /* 0x84EA */ GL_ENUM(GL_COMPRESSED_LUMINANCE) /* 0x84EA */ GL_ENUM(GL_COMPRESSED_LUMINANCE_ARB) /* 0x84EB */ GL_ENUM(GL_COMPRESSED_LUMINANCE_ALPHA) /* 0x84EB */ GL_ENUM(GL_COMPRESSED_LUMINANCE_ALPHA_ARB) /* 0x84EC */ GL_ENUM(GL_COMPRESSED_INTENSITY) /* 0x84EC */ GL_ENUM(GL_COMPRESSED_INTENSITY_ARB) /* 0x84ED */ GL_ENUM(GL_COMPRESSED_RGB) /* 0x84ED */ GL_ENUM(GL_COMPRESSED_RGB_ARB) /* 0x84EE */ GL_ENUM(GL_COMPRESSED_RGBA) /* 0x84EE */ GL_ENUM(GL_COMPRESSED_RGBA_ARB) /* 0x84EF */ GL_ENUM(GL_TEXTURE_COMPRESSION_HINT) /* 0x84EF */ GL_ENUM(GL_TEXTURE_COMPRESSION_HINT_ARB) /* 0x84F0 */ GL_ENUM(GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER) /* 0x84F1 */ GL_ENUM(GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER) /* 0x84F2 */ GL_ENUM(GL_ALL_COMPLETED_NV) /* 0x84F3 */ GL_ENUM(GL_FENCE_STATUS_NV) /* 0x84F4 */ GL_ENUM(GL_FENCE_CONDITION_NV) /* 0x84F5 */ GL_ENUM(GL_TEXTURE_RECTANGLE) /* 0x84F5 */ GL_ENUM(GL_TEXTURE_RECTANGLE_ARB) /* 0x84F5 */ GL_ENUM(GL_TEXTURE_RECTANGLE_NV) /* 0x84F6 */ GL_ENUM(GL_TEXTURE_BINDING_RECTANGLE) /* 0x84F6 */ GL_ENUM(GL_TEXTURE_BINDING_RECTANGLE_ARB) /* 0x84F6 */ GL_ENUM(GL_TEXTURE_BINDING_RECTANGLE_NV) /* 0x84F7 */ GL_ENUM(GL_PROXY_TEXTURE_RECTANGLE) /* 0x84F7 */ GL_ENUM(GL_PROXY_TEXTURE_RECTANGLE_ARB) /* 0x84F7 */ GL_ENUM(GL_PROXY_TEXTURE_RECTANGLE_NV) /* 0x84F8 */ GL_ENUM(GL_MAX_RECTANGLE_TEXTURE_SIZE) /* 0x84F8 */ GL_ENUM(GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB) /* 0x84F8 */ GL_ENUM(GL_MAX_RECTANGLE_TEXTURE_SIZE_NV) /* 0x84F9 */ GL_ENUM(GL_DEPTH_STENCIL) /* 0x84F9 */ GL_ENUM(GL_DEPTH_STENCIL_EXT) /* 0x84F9 */ GL_ENUM(GL_DEPTH_STENCIL_NV) /* 0x84FA */ GL_ENUM(GL_UNSIGNED_INT_24_8) /* 0x84FA */ GL_ENUM(GL_UNSIGNED_INT_24_8_EXT) /* 0x84FA */ GL_ENUM(GL_UNSIGNED_INT_24_8_NV) /* 0x84FD */ GL_ENUM(GL_MAX_TEXTURE_LOD_BIAS) /* 0x84FD */ GL_ENUM(GL_MAX_TEXTURE_LOD_BIAS_EXT) /* 0x84FE */ GL_ENUM(GL_TEXTURE_MAX_ANISOTROPY_EXT) /* 0x84FF */ GL_ENUM(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT) /* 0x8500 */ GL_ENUM(GL_TEXTURE_FILTER_CONTROL) /* 0x8500 */ GL_ENUM(GL_TEXTURE_FILTER_CONTROL_EXT) /* 0x8501 */ GL_ENUM(GL_TEXTURE_LOD_BIAS) /* 0x8501 */ GL_ENUM(GL_TEXTURE_LOD_BIAS_EXT) /* 0x8502 */ GL_ENUM(GL_MODELVIEW1_STACK_DEPTH_EXT) /* 0x8503 */ GL_ENUM(GL_COMBINE4_NV) /* 0x8504 */ GL_ENUM(GL_MAX_SHININESS_NV) /* 0x8505 */ GL_ENUM(GL_MAX_SPOT_EXPONENT_NV) /* 0x8506 */ GL_ENUM(GL_MODELVIEW1_MATRIX_EXT) /* 0x8507 */ GL_ENUM(GL_INCR_WRAP) /* 0x8507 */ GL_ENUM(GL_INCR_WRAP_EXT) /* 0x8508 */ GL_ENUM(GL_DECR_WRAP) /* 0x8508 */ GL_ENUM(GL_DECR_WRAP_EXT) /* 0x8509 */ GL_ENUM(GL_VERTEX_WEIGHTING_EXT) /* 0x850A */ GL_ENUM(GL_MODELVIEW1_ARB) /* 0x850A */ GL_ENUM(GL_MODELVIEW1_EXT) /* 0x850B */ GL_ENUM(GL_CURRENT_VERTEX_WEIGHT_EXT) /* 0x850C */ GL_ENUM(GL_VERTEX_WEIGHT_ARRAY_EXT) /* 0x850D */ GL_ENUM(GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT) /* 0x850E */ GL_ENUM(GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT) /* 0x850F */ GL_ENUM(GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT) /* 0x8510 */ GL_ENUM(GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT) /* 0x8511 */ GL_ENUM(GL_NORMAL_MAP) /* 0x8511 */ GL_ENUM(GL_NORMAL_MAP_ARB) /* 0x8511 */ GL_ENUM(GL_NORMAL_MAP_EXT) /* 0x8511 */ GL_ENUM(GL_NORMAL_MAP_NV) /* 0x8512 */ GL_ENUM(GL_REFLECTION_MAP) /* 0x8512 */ GL_ENUM(GL_REFLECTION_MAP_ARB) /* 0x8512 */ GL_ENUM(GL_REFLECTION_MAP_EXT) /* 0x8512 */ GL_ENUM(GL_REFLECTION_MAP_NV) /* 0x8513 */ GL_ENUM(GL_TEXTURE_CUBE_MAP) /* 0x8513 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_ARB) /* 0x8513 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_EXT) /* 0x8514 */ GL_ENUM(GL_TEXTURE_BINDING_CUBE_MAP) /* 0x8514 */ GL_ENUM(GL_TEXTURE_BINDING_CUBE_MAP_ARB) /* 0x8514 */ GL_ENUM(GL_TEXTURE_BINDING_CUBE_MAP_EXT) /* 0x8515 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_POSITIVE_X) /* 0x8515 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB) /* 0x8515 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT) /* 0x8516 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_NEGATIVE_X) /* 0x8516 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB) /* 0x8516 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT) /* 0x8517 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_POSITIVE_Y) /* 0x8517 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB) /* 0x8517 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT) /* 0x8518 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y) /* 0x8518 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB) /* 0x8518 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT) /* 0x8519 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_POSITIVE_Z) /* 0x8519 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB) /* 0x8519 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT) /* 0x851A */ GL_ENUM(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z) /* 0x851A */ GL_ENUM(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB) /* 0x851A */ GL_ENUM(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT) /* 0x851B */ GL_ENUM(GL_PROXY_TEXTURE_CUBE_MAP) /* 0x851B */ GL_ENUM(GL_PROXY_TEXTURE_CUBE_MAP_ARB) /* 0x851B */ GL_ENUM(GL_PROXY_TEXTURE_CUBE_MAP_EXT) /* 0x851C */ GL_ENUM(GL_MAX_CUBE_MAP_TEXTURE_SIZE) /* 0x851C */ GL_ENUM(GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB) /* 0x851C */ GL_ENUM(GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT) /* 0x851D */ GL_ENUM(GL_VERTEX_ARRAY_RANGE_APPLE) /* 0x851D */ GL_ENUM(GL_VERTEX_ARRAY_RANGE_NV) /* 0x851E */ GL_ENUM(GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE) /* 0x851E */ GL_ENUM(GL_VERTEX_ARRAY_RANGE_LENGTH_NV) /* 0x851F */ GL_ENUM(GL_VERTEX_ARRAY_RANGE_VALID_NV) /* 0x851F */ GL_ENUM(GL_VERTEX_ARRAY_STORAGE_HINT_APPLE) /* 0x8520 */ GL_ENUM(GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV) /* 0x8521 */ GL_ENUM(GL_VERTEX_ARRAY_RANGE_POINTER_APPLE) /* 0x8521 */ GL_ENUM(GL_VERTEX_ARRAY_RANGE_POINTER_NV) /* 0x8522 */ GL_ENUM(GL_REGISTER_COMBINERS_NV) /* 0x8523 */ GL_ENUM(GL_VARIABLE_A_NV) /* 0x8524 */ GL_ENUM(GL_VARIABLE_B_NV) /* 0x8525 */ GL_ENUM(GL_VARIABLE_C_NV) /* 0x8526 */ GL_ENUM(GL_VARIABLE_D_NV) /* 0x8527 */ GL_ENUM(GL_VARIABLE_E_NV) /* 0x8528 */ GL_ENUM(GL_VARIABLE_F_NV) /* 0x8529 */ GL_ENUM(GL_VARIABLE_G_NV) /* 0x852A */ GL_ENUM(GL_CONSTANT_COLOR0_NV) /* 0x852B */ GL_ENUM(GL_CONSTANT_COLOR1_NV) /* 0x852C */ GL_ENUM(GL_PRIMARY_COLOR_NV) /* 0x852D */ GL_ENUM(GL_SECONDARY_COLOR_NV) /* 0x852E */ GL_ENUM(GL_SPARE0_NV) /* 0x852F */ GL_ENUM(GL_SPARE1_NV) /* 0x8530 */ GL_ENUM(GL_DISCARD_NV) /* 0x8531 */ GL_ENUM(GL_E_TIMES_F_NV) /* 0x8532 */ GL_ENUM(GL_SPARE0_PLUS_SECONDARY_COLOR_NV) /* 0x8533 */ GL_ENUM(GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV) /* 0x8534 */ GL_ENUM(GL_MULTISAMPLE_FILTER_HINT_NV) /* 0x8535 */ GL_ENUM(GL_PER_STAGE_CONSTANTS_NV) /* 0x8536 */ GL_ENUM(GL_UNSIGNED_IDENTITY_NV) /* 0x8537 */ GL_ENUM(GL_UNSIGNED_INVERT_NV) /* 0x8538 */ GL_ENUM(GL_EXPAND_NORMAL_NV) /* 0x8539 */ GL_ENUM(GL_EXPAND_NEGATE_NV) /* 0x853A */ GL_ENUM(GL_HALF_BIAS_NORMAL_NV) /* 0x853B */ GL_ENUM(GL_HALF_BIAS_NEGATE_NV) /* 0x853C */ GL_ENUM(GL_SIGNED_IDENTITY_NV) /* 0x853D */ GL_ENUM(GL_SIGNED_NEGATE_NV) /* 0x853E */ GL_ENUM(GL_SCALE_BY_TWO_NV) /* 0x853F */ GL_ENUM(GL_SCALE_BY_FOUR_NV) /* 0x8540 */ GL_ENUM(GL_SCALE_BY_ONE_HALF_NV) /* 0x8541 */ GL_ENUM(GL_BIAS_BY_NEGATIVE_ONE_HALF_NV) /* 0x8542 */ GL_ENUM(GL_COMBINER_INPUT_NV) /* 0x8543 */ GL_ENUM(GL_COMBINER_MAPPING_NV) /* 0x8544 */ GL_ENUM(GL_COMBINER_COMPONENT_USAGE_NV) /* 0x8545 */ GL_ENUM(GL_COMBINER_AB_DOT_PRODUCT_NV) /* 0x8546 */ GL_ENUM(GL_COMBINER_CD_DOT_PRODUCT_NV) /* 0x8547 */ GL_ENUM(GL_COMBINER_MUX_SUM_NV) /* 0x8548 */ GL_ENUM(GL_COMBINER_SCALE_NV) /* 0x8549 */ GL_ENUM(GL_COMBINER_BIAS_NV) /* 0x854A */ GL_ENUM(GL_COMBINER_AB_OUTPUT_NV) /* 0x854B */ GL_ENUM(GL_COMBINER_CD_OUTPUT_NV) /* 0x854C */ GL_ENUM(GL_COMBINER_SUM_OUTPUT_NV) /* 0x854D */ GL_ENUM(GL_MAX_GENERAL_COMBINERS_NV) /* 0x854E */ GL_ENUM(GL_NUM_GENERAL_COMBINERS_NV) /* 0x854F */ GL_ENUM(GL_COLOR_SUM_CLAMP_NV) /* 0x8550 */ GL_ENUM(GL_COMBINER0_NV) /* 0x8551 */ GL_ENUM(GL_COMBINER1_NV) /* 0x8552 */ GL_ENUM(GL_COMBINER2_NV) /* 0x8553 */ GL_ENUM(GL_COMBINER3_NV) /* 0x8554 */ GL_ENUM(GL_COMBINER4_NV) /* 0x8555 */ GL_ENUM(GL_COMBINER5_NV) /* 0x8556 */ GL_ENUM(GL_COMBINER6_NV) /* 0x8557 */ GL_ENUM(GL_COMBINER7_NV) /* 0x8558 */ GL_ENUM(GL_PRIMITIVE_RESTART_NV) /* 0x8559 */ GL_ENUM(GL_PRIMITIVE_RESTART_INDEX_NV) /* 0x855A */ GL_ENUM(GL_FOG_DISTANCE_MODE_NV) /* 0x855B */ GL_ENUM(GL_EYE_RADIAL_NV) /* 0x855C */ GL_ENUM(GL_EYE_PLANE_ABSOLUTE_NV) /* 0x855D */ GL_ENUM(GL_EMBOSS_LIGHT_NV) /* 0x855E */ GL_ENUM(GL_EMBOSS_CONSTANT_NV) /* 0x855F */ GL_ENUM(GL_EMBOSS_MAP_NV) /* 0x8560 */ GL_ENUM(GL_RED_MIN_CLAMP_INGR) /* 0x8561 */ GL_ENUM(GL_GREEN_MIN_CLAMP_INGR) /* 0x8562 */ GL_ENUM(GL_BLUE_MIN_CLAMP_INGR) /* 0x8563 */ GL_ENUM(GL_ALPHA_MIN_CLAMP_INGR) /* 0x8564 */ GL_ENUM(GL_RED_MAX_CLAMP_INGR) /* 0x8565 */ GL_ENUM(GL_GREEN_MAX_CLAMP_INGR) /* 0x8566 */ GL_ENUM(GL_BLUE_MAX_CLAMP_INGR) /* 0x8567 */ GL_ENUM(GL_ALPHA_MAX_CLAMP_INGR) /* 0x8568 */ GL_ENUM(GL_INTERLACE_READ_INGR) /* 0x8570 */ GL_ENUM(GL_COMBINE) /* 0x8570 */ GL_ENUM(GL_COMBINE_ARB) /* 0x8570 */ GL_ENUM(GL_COMBINE_EXT) /* 0x8571 */ GL_ENUM(GL_COMBINE_RGB) /* 0x8571 */ GL_ENUM(GL_COMBINE_RGB_ARB) /* 0x8571 */ GL_ENUM(GL_COMBINE_RGB_EXT) /* 0x8572 */ GL_ENUM(GL_COMBINE_ALPHA) /* 0x8572 */ GL_ENUM(GL_COMBINE_ALPHA_ARB) /* 0x8572 */ GL_ENUM(GL_COMBINE_ALPHA_EXT) /* 0x8573 */ GL_ENUM(GL_RGB_SCALE) /* 0x8573 */ GL_ENUM(GL_RGB_SCALE_ARB) /* 0x8573 */ GL_ENUM(GL_RGB_SCALE_EXT) /* 0x8574 */ GL_ENUM(GL_ADD_SIGNED) /* 0x8574 */ GL_ENUM(GL_ADD_SIGNED_ARB) /* 0x8574 */ GL_ENUM(GL_ADD_SIGNED_EXT) /* 0x8575 */ GL_ENUM(GL_INTERPOLATE) /* 0x8575 */ GL_ENUM(GL_INTERPOLATE_ARB) /* 0x8575 */ GL_ENUM(GL_INTERPOLATE_EXT) /* 0x8576 */ GL_ENUM(GL_CONSTANT) /* 0x8576 */ GL_ENUM(GL_CONSTANT_ARB) /* 0x8576 */ GL_ENUM(GL_CONSTANT_EXT) /* 0x8576 */ GL_ENUM(GL_CONSTANT_NV) /* 0x8577 */ GL_ENUM(GL_PRIMARY_COLOR) /* 0x8577 */ GL_ENUM(GL_PRIMARY_COLOR_ARB) /* 0x8577 */ GL_ENUM(GL_PRIMARY_COLOR_EXT) /* 0x8578 */ GL_ENUM(GL_PREVIOUS) /* 0x8578 */ GL_ENUM(GL_PREVIOUS_ARB) /* 0x8578 */ GL_ENUM(GL_PREVIOUS_EXT) /* 0x8580 */ GL_ENUM(GL_SOURCE0_RGB) /* 0x8580 */ GL_ENUM(GL_SOURCE0_RGB_ARB) /* 0x8580 */ GL_ENUM(GL_SOURCE0_RGB_EXT) /* 0x8580 */ GL_ENUM(GL_SRC0_RGB) /* 0x8581 */ GL_ENUM(GL_SOURCE1_RGB) /* 0x8581 */ GL_ENUM(GL_SOURCE1_RGB_ARB) /* 0x8581 */ GL_ENUM(GL_SOURCE1_RGB_EXT) /* 0x8581 */ GL_ENUM(GL_SRC1_RGB) /* 0x8582 */ GL_ENUM(GL_SOURCE2_RGB) /* 0x8582 */ GL_ENUM(GL_SOURCE2_RGB_ARB) /* 0x8582 */ GL_ENUM(GL_SOURCE2_RGB_EXT) /* 0x8582 */ GL_ENUM(GL_SRC2_RGB) /* 0x8583 */ GL_ENUM(GL_SOURCE3_RGB) /* 0x8583 */ GL_ENUM(GL_SOURCE3_RGB_ARB) /* 0x8583 */ GL_ENUM(GL_SOURCE3_RGB_NV) /* 0x8583 */ GL_ENUM(GL_SRC3_RGB) /* 0x8584 */ GL_ENUM(GL_SOURCE4_RGB) /* 0x8584 */ GL_ENUM(GL_SOURCE4_RGB_ARB) /* 0x8584 */ GL_ENUM(GL_SRC4_RGB) /* 0x8585 */ GL_ENUM(GL_SOURCE5_RGB) /* 0x8585 */ GL_ENUM(GL_SOURCE5_RGB_ARB) /* 0x8585 */ GL_ENUM(GL_SRC5_RGB) /* 0x8586 */ GL_ENUM(GL_SOURCE6_RGB) /* 0x8586 */ GL_ENUM(GL_SOURCE6_RGB_ARB) /* 0x8586 */ GL_ENUM(GL_SRC6_RGB) /* 0x8587 */ GL_ENUM(GL_SOURCE7_RGB) /* 0x8587 */ GL_ENUM(GL_SOURCE7_RGB_ARB) /* 0x8587 */ GL_ENUM(GL_SRC7_RGB) /* 0x8588 */ GL_ENUM(GL_SOURCE0_ALPHA) /* 0x8588 */ GL_ENUM(GL_SOURCE0_ALPHA_ARB) /* 0x8588 */ GL_ENUM(GL_SOURCE0_ALPHA_EXT) /* 0x8588 */ GL_ENUM(GL_SRC0_ALPHA) /* 0x8589 */ GL_ENUM(GL_SOURCE1_ALPHA) /* 0x8589 */ GL_ENUM(GL_SOURCE1_ALPHA_ARB) /* 0x8589 */ GL_ENUM(GL_SOURCE1_ALPHA_EXT) /* 0x8589 */ GL_ENUM(GL_SRC1_ALPHA) /* 0x858A */ GL_ENUM(GL_SOURCE2_ALPHA) /* 0x858A */ GL_ENUM(GL_SOURCE2_ALPHA_ARB) /* 0x858A */ GL_ENUM(GL_SOURCE2_ALPHA_EXT) /* 0x858A */ GL_ENUM(GL_SRC2_ALPHA) /* 0x858B */ GL_ENUM(GL_SOURCE3_ALPHA) /* 0x858B */ GL_ENUM(GL_SOURCE3_ALPHA_ARB) /* 0x858B */ GL_ENUM(GL_SOURCE3_ALPHA_NV) /* 0x858B */ GL_ENUM(GL_SRC3_ALPHA) /* 0x858C */ GL_ENUM(GL_SOURCE4_ALPHA) /* 0x858C */ GL_ENUM(GL_SOURCE4_ALPHA_ARB) /* 0x858C */ GL_ENUM(GL_SRC4_ALPHA) /* 0x858D */ GL_ENUM(GL_SOURCE5_ALPHA) /* 0x858D */ GL_ENUM(GL_SOURCE5_ALPHA_ARB) /* 0x858D */ GL_ENUM(GL_SRC5_ALPHA) /* 0x858E */ GL_ENUM(GL_SOURCE6_ALPHA) /* 0x858E */ GL_ENUM(GL_SOURCE6_ALPHA_ARB) /* 0x858E */ GL_ENUM(GL_SRC6_ALPHA) /* 0x858F */ GL_ENUM(GL_SOURCE7_ALPHA) /* 0x858F */ GL_ENUM(GL_SOURCE7_ALPHA_ARB) /* 0x858F */ GL_ENUM(GL_SRC7_ALPHA) /* 0x8590 */ GL_ENUM(GL_OPERAND0_RGB) /* 0x8590 */ GL_ENUM(GL_OPERAND0_RGB_ARB) /* 0x8590 */ GL_ENUM(GL_OPERAND0_RGB_EXT) /* 0x8591 */ GL_ENUM(GL_OPERAND1_RGB) /* 0x8591 */ GL_ENUM(GL_OPERAND1_RGB_ARB) /* 0x8591 */ GL_ENUM(GL_OPERAND1_RGB_EXT) /* 0x8592 */ GL_ENUM(GL_OPERAND2_RGB) /* 0x8592 */ GL_ENUM(GL_OPERAND2_RGB_ARB) /* 0x8592 */ GL_ENUM(GL_OPERAND2_RGB_EXT) /* 0x8593 */ GL_ENUM(GL_OPERAND3_RGB) /* 0x8593 */ GL_ENUM(GL_OPERAND3_RGB_ARB) /* 0x8593 */ GL_ENUM(GL_OPERAND3_RGB_NV) /* 0x8594 */ GL_ENUM(GL_OPERAND4_RGB) /* 0x8594 */ GL_ENUM(GL_OPERAND4_RGB_ARB) /* 0x8595 */ GL_ENUM(GL_OPERAND5_RGB) /* 0x8595 */ GL_ENUM(GL_OPERAND5_RGB_ARB) /* 0x8596 */ GL_ENUM(GL_OPERAND6_RGB) /* 0x8596 */ GL_ENUM(GL_OPERAND6_RGB_ARB) /* 0x8597 */ GL_ENUM(GL_OPERAND7_RGB) /* 0x8597 */ GL_ENUM(GL_OPERAND7_RGB_ARB) /* 0x8598 */ GL_ENUM(GL_OPERAND0_ALPHA) /* 0x8598 */ GL_ENUM(GL_OPERAND0_ALPHA_ARB) /* 0x8598 */ GL_ENUM(GL_OPERAND0_ALPHA_EXT) /* 0x8599 */ GL_ENUM(GL_OPERAND1_ALPHA) /* 0x8599 */ GL_ENUM(GL_OPERAND1_ALPHA_ARB) /* 0x8599 */ GL_ENUM(GL_OPERAND1_ALPHA_EXT) /* 0x859A */ GL_ENUM(GL_OPERAND2_ALPHA) /* 0x859A */ GL_ENUM(GL_OPERAND2_ALPHA_ARB) /* 0x859A */ GL_ENUM(GL_OPERAND2_ALPHA_EXT) /* 0x859B */ GL_ENUM(GL_OPERAND3_ALPHA) /* 0x859B */ GL_ENUM(GL_OPERAND3_ALPHA_ARB) /* 0x859B */ GL_ENUM(GL_OPERAND3_ALPHA_NV) /* 0x859C */ GL_ENUM(GL_OPERAND4_ALPHA) /* 0x859C */ GL_ENUM(GL_OPERAND4_ALPHA_ARB) /* 0x859D */ GL_ENUM(GL_OPERAND5_ALPHA) /* 0x859D */ GL_ENUM(GL_OPERAND5_ALPHA_ARB) /* 0x859E */ GL_ENUM(GL_OPERAND6_ALPHA) /* 0x859E */ GL_ENUM(GL_OPERAND6_ALPHA_ARB) /* 0x859F */ GL_ENUM(GL_OPERAND7_ALPHA) /* 0x859F */ GL_ENUM(GL_OPERAND7_ALPHA_ARB) /* 0x85A0 */ GL_ENUM(GL_PACK_SUBSAMPLE_RATE_SGIX) /* 0x85A1 */ GL_ENUM(GL_UNPACK_SUBSAMPLE_RATE_SGIX) /* 0x85A2 */ GL_ENUM(GL_PIXEL_SUBSAMPLE_4444_SGIX) /* 0x85A3 */ GL_ENUM(GL_PIXEL_SUBSAMPLE_2424_SGIX) /* 0x85A4 */ GL_ENUM(GL_PIXEL_SUBSAMPLE_4242_SGIX) /* 0x85AE */ GL_ENUM(GL_PERTURB_EXT) /* 0x85AF */ GL_ENUM(GL_TEXTURE_NORMAL_EXT) /* 0x85B0 */ GL_ENUM(GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE) /* 0x85B1 */ GL_ENUM(GL_TRANSFORM_HINT_APPLE) /* 0x85B2 */ GL_ENUM(GL_UNPACK_CLIENT_STORAGE_APPLE) /* 0x85B3 */ GL_ENUM(GL_BUFFER_OBJECT_APPLE) /* 0x85B4 */ GL_ENUM(GL_STORAGE_CLIENT_APPLE) /* 0x85B5 */ GL_ENUM(GL_VERTEX_ARRAY_BINDING) /* 0x85B5 */ GL_ENUM(GL_VERTEX_ARRAY_BINDING_APPLE) /* 0x85B7 */ GL_ENUM(GL_TEXTURE_RANGE_LENGTH_APPLE) /* 0x85B8 */ GL_ENUM(GL_TEXTURE_RANGE_POINTER_APPLE) /* 0x85B9 */ GL_ENUM(GL_YCBCR_422_APPLE) /* 0x85BA */ GL_ENUM(GL_UNSIGNED_SHORT_8_8_APPLE) /* 0x85BA */ GL_ENUM(GL_UNSIGNED_SHORT_8_8_MESA) /* 0x85BB */ GL_ENUM(GL_UNSIGNED_SHORT_8_8_REV_APPLE) /* 0x85BB */ GL_ENUM(GL_UNSIGNED_SHORT_8_8_REV_MESA) /* 0x85BC */ GL_ENUM(GL_TEXTURE_STORAGE_HINT_APPLE) /* 0x85BD */ GL_ENUM(GL_STORAGE_PRIVATE_APPLE) /* 0x85BE */ GL_ENUM(GL_STORAGE_CACHED_APPLE) /* 0x85BF */ GL_ENUM(GL_STORAGE_SHARED_APPLE) /* 0x85C0 */ GL_ENUM(GL_REPLACEMENT_CODE_ARRAY_SUN) /* 0x85C1 */ GL_ENUM(GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN) /* 0x85C2 */ GL_ENUM(GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN) /* 0x85C3 */ GL_ENUM(GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN) /* 0x85C4 */ GL_ENUM(GL_R1UI_V3F_SUN) /* 0x85C5 */ GL_ENUM(GL_R1UI_C4UB_V3F_SUN) /* 0x85C6 */ GL_ENUM(GL_R1UI_C3F_V3F_SUN) /* 0x85C7 */ GL_ENUM(GL_R1UI_N3F_V3F_SUN) /* 0x85C8 */ GL_ENUM(GL_R1UI_C4F_N3F_V3F_SUN) /* 0x85C9 */ GL_ENUM(GL_R1UI_T2F_V3F_SUN) /* 0x85CA */ GL_ENUM(GL_R1UI_T2F_N3F_V3F_SUN) /* 0x85CB */ GL_ENUM(GL_R1UI_T2F_C4F_N3F_V3F_SUN) /* 0x85CC */ GL_ENUM(GL_SLICE_ACCUM_SUN) /* 0x8614 */ GL_ENUM(GL_QUAD_MESH_SUN) /* 0x8615 */ GL_ENUM(GL_TRIANGLE_MESH_SUN) /* 0x8620 */ GL_ENUM(GL_VERTEX_PROGRAM_ARB) /* 0x8620 */ GL_ENUM(GL_VERTEX_PROGRAM_NV) /* 0x8621 */ GL_ENUM(GL_VERTEX_STATE_PROGRAM_NV) /* 0x8622 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_ENABLED) /* 0x8622 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB) /* 0x8623 */ GL_ENUM(GL_ATTRIB_ARRAY_SIZE_NV) /* 0x8623 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_SIZE) /* 0x8623 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB) /* 0x8624 */ GL_ENUM(GL_ATTRIB_ARRAY_STRIDE_NV) /* 0x8624 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_STRIDE) /* 0x8624 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB) /* 0x8625 */ GL_ENUM(GL_ATTRIB_ARRAY_TYPE_NV) /* 0x8625 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_TYPE) /* 0x8625 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB) /* 0x8626 */ GL_ENUM(GL_CURRENT_ATTRIB_NV) /* 0x8626 */ GL_ENUM(GL_CURRENT_VERTEX_ATTRIB) /* 0x8626 */ GL_ENUM(GL_CURRENT_VERTEX_ATTRIB_ARB) /* 0x8627 */ GL_ENUM(GL_PROGRAM_LENGTH_ARB) /* 0x8627 */ GL_ENUM(GL_PROGRAM_LENGTH_NV) /* 0x8628 */ GL_ENUM(GL_PROGRAM_STRING_ARB) /* 0x8628 */ GL_ENUM(GL_PROGRAM_STRING_NV) /* 0x8629 */ GL_ENUM(GL_MODELVIEW_PROJECTION_NV) /* 0x862A */ GL_ENUM(GL_IDENTITY_NV) /* 0x862B */ GL_ENUM(GL_INVERSE_NV) /* 0x862C */ GL_ENUM(GL_TRANSPOSE_NV) /* 0x862D */ GL_ENUM(GL_INVERSE_TRANSPOSE_NV) /* 0x862E */ GL_ENUM(GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB) /* 0x862E */ GL_ENUM(GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV) /* 0x862F */ GL_ENUM(GL_MAX_PROGRAM_MATRICES_ARB) /* 0x862F */ GL_ENUM(GL_MAX_TRACK_MATRICES_NV) /* 0x8630 */ GL_ENUM(GL_MATRIX0_NV) /* 0x8631 */ GL_ENUM(GL_MATRIX1_NV) /* 0x8632 */ GL_ENUM(GL_MATRIX2_NV) /* 0x8633 */ GL_ENUM(GL_MATRIX3_NV) /* 0x8634 */ GL_ENUM(GL_MATRIX4_NV) /* 0x8635 */ GL_ENUM(GL_MATRIX5_NV) /* 0x8636 */ GL_ENUM(GL_MATRIX6_NV) /* 0x8637 */ GL_ENUM(GL_MATRIX7_NV) /* 0x8640 */ GL_ENUM(GL_CURRENT_MATRIX_STACK_DEPTH_ARB) /* 0x8640 */ GL_ENUM(GL_CURRENT_MATRIX_STACK_DEPTH_NV) /* 0x8641 */ GL_ENUM(GL_CURRENT_MATRIX_ARB) /* 0x8641 */ GL_ENUM(GL_CURRENT_MATRIX_NV) /* 0x8642 */ GL_ENUM(GL_PROGRAM_POINT_SIZE) /* 0x8642 */ GL_ENUM(GL_PROGRAM_POINT_SIZE_ARB) /* 0x8642 */ GL_ENUM(GL_PROGRAM_POINT_SIZE_EXT) /* 0x8642 */ GL_ENUM(GL_VERTEX_PROGRAM_POINT_SIZE) /* 0x8642 */ GL_ENUM(GL_VERTEX_PROGRAM_POINT_SIZE_ARB) /* 0x8642 */ GL_ENUM(GL_VERTEX_PROGRAM_POINT_SIZE_NV) /* 0x8643 */ GL_ENUM(GL_VERTEX_PROGRAM_TWO_SIDE) /* 0x8643 */ GL_ENUM(GL_VERTEX_PROGRAM_TWO_SIDE_ARB) /* 0x8643 */ GL_ENUM(GL_VERTEX_PROGRAM_TWO_SIDE_NV) /* 0x8644 */ GL_ENUM(GL_PROGRAM_PARAMETER_NV) /* 0x8645 */ GL_ENUM(GL_ATTRIB_ARRAY_POINTER_NV) /* 0x8645 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_POINTER) /* 0x8645 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB) /* 0x8646 */ GL_ENUM(GL_PROGRAM_TARGET_NV) /* 0x8647 */ GL_ENUM(GL_PROGRAM_RESIDENT_NV) /* 0x8648 */ GL_ENUM(GL_TRACK_MATRIX_NV) /* 0x8649 */ GL_ENUM(GL_TRACK_MATRIX_TRANSFORM_NV) /* 0x864A */ GL_ENUM(GL_VERTEX_PROGRAM_BINDING_NV) /* 0x864B */ GL_ENUM(GL_PROGRAM_ERROR_POSITION_ARB) /* 0x864B */ GL_ENUM(GL_PROGRAM_ERROR_POSITION_NV) /* 0x864C */ GL_ENUM(GL_OFFSET_TEXTURE_RECTANGLE_NV) /* 0x864D */ GL_ENUM(GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV) /* 0x864E */ GL_ENUM(GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV) /* 0x864F */ GL_ENUM(GL_DEPTH_CLAMP) /* 0x864F */ GL_ENUM(GL_DEPTH_CLAMP_NV) /* 0x8650 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY0_NV) /* 0x8651 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY1_NV) /* 0x8652 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY2_NV) /* 0x8653 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY3_NV) /* 0x8654 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY4_NV) /* 0x8655 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY5_NV) /* 0x8656 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY6_NV) /* 0x8657 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY7_NV) /* 0x8658 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY8_NV) /* 0x8659 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY9_NV) /* 0x865A */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY10_NV) /* 0x865B */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY11_NV) /* 0x865C */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY12_NV) /* 0x865D */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY13_NV) /* 0x865E */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY14_NV) /* 0x865F */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY15_NV) /* 0x8660 */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB0_4_NV) /* 0x8661 */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB1_4_NV) /* 0x8662 */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB2_4_NV) /* 0x8663 */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB3_4_NV) /* 0x8664 */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB4_4_NV) /* 0x8665 */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB5_4_NV) /* 0x8666 */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB6_4_NV) /* 0x8667 */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB7_4_NV) /* 0x8668 */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB8_4_NV) /* 0x8669 */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB9_4_NV) /* 0x866A */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB10_4_NV) /* 0x866B */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB11_4_NV) /* 0x866C */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB12_4_NV) /* 0x866D */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB13_4_NV) /* 0x866E */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB14_4_NV) /* 0x866F */ GL_ENUM(GL_MAP1_VERTEX_ATTRIB15_4_NV) /* 0x8670 */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB0_4_NV) /* 0x8671 */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB1_4_NV) /* 0x8672 */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB2_4_NV) /* 0x8673 */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB3_4_NV) /* 0x8674 */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB4_4_NV) /* 0x8675 */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB5_4_NV) /* 0x8676 */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB6_4_NV) /* 0x8677 */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB7_4_NV) /* 0x8677 */ GL_ENUM(GL_PROGRAM_BINDING_ARB) /* 0x8677 */ GL_ENUM(GL_PROGRAM_NAME_ARB) /* 0x8678 */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB8_4_NV) /* 0x8679 */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB9_4_NV) /* 0x867A */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB10_4_NV) /* 0x867B */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB11_4_NV) /* 0x867C */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB12_4_NV) /* 0x867D */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB13_4_NV) /* 0x867E */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB14_4_NV) /* 0x867F */ GL_ENUM(GL_MAP2_VERTEX_ATTRIB15_4_NV) /* 0x86A0 */ GL_ENUM(GL_TEXTURE_COMPRESSED_IMAGE_SIZE) /* 0x86A0 */ GL_ENUM(GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB) /* 0x86A1 */ GL_ENUM(GL_TEXTURE_COMPRESSED) /* 0x86A1 */ GL_ENUM(GL_TEXTURE_COMPRESSED_ARB) /* 0x86A2 */ GL_ENUM(GL_NUM_COMPRESSED_TEXTURE_FORMATS) /* 0x86A2 */ GL_ENUM(GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB) /* 0x86A3 */ GL_ENUM(GL_COMPRESSED_TEXTURE_FORMATS) /* 0x86A3 */ GL_ENUM(GL_COMPRESSED_TEXTURE_FORMATS_ARB) /* 0x86A4 */ GL_ENUM(GL_MAX_VERTEX_UNITS_ARB) /* 0x86A5 */ GL_ENUM(GL_ACTIVE_VERTEX_UNITS_ARB) /* 0x86A6 */ GL_ENUM(GL_WEIGHT_SUM_UNITY_ARB) /* 0x86A7 */ GL_ENUM(GL_VERTEX_BLEND_ARB) /* 0x86A8 */ GL_ENUM(GL_CURRENT_WEIGHT_ARB) /* 0x86A9 */ GL_ENUM(GL_WEIGHT_ARRAY_TYPE_ARB) /* 0x86AA */ GL_ENUM(GL_WEIGHT_ARRAY_STRIDE_ARB) /* 0x86AB */ GL_ENUM(GL_WEIGHT_ARRAY_SIZE_ARB) /* 0x86AC */ GL_ENUM(GL_WEIGHT_ARRAY_POINTER_ARB) /* 0x86AD */ GL_ENUM(GL_WEIGHT_ARRAY_ARB) /* 0x86AE */ GL_ENUM(GL_DOT3_RGB) /* 0x86AE */ GL_ENUM(GL_DOT3_RGB_ARB) /* 0x86AF */ GL_ENUM(GL_DOT3_RGBA) /* 0x86AF */ GL_ENUM(GL_DOT3_RGBA_ARB) /* 0x86B0 */ GL_ENUM(GL_COMPRESSED_RGB_FXT1_3DFX) /* 0x86B1 */ GL_ENUM(GL_COMPRESSED_RGBA_FXT1_3DFX) /* 0x86B2 */ GL_ENUM(GL_MULTISAMPLE_3DFX) /* 0x86B3 */ GL_ENUM(GL_SAMPLE_BUFFERS_3DFX) /* 0x86B4 */ GL_ENUM(GL_SAMPLES_3DFX) /* 0x86C0 */ GL_ENUM(GL_EVAL_2D_NV) /* 0x86C1 */ GL_ENUM(GL_EVAL_TRIANGULAR_2D_NV) /* 0x86C2 */ GL_ENUM(GL_MAP_TESSELLATION_NV) /* 0x86C3 */ GL_ENUM(GL_MAP_ATTRIB_U_ORDER_NV) /* 0x86C4 */ GL_ENUM(GL_MAP_ATTRIB_V_ORDER_NV) /* 0x86C5 */ GL_ENUM(GL_EVAL_FRACTIONAL_TESSELLATION_NV) /* 0x86C6 */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB0_NV) /* 0x86C7 */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB1_NV) /* 0x86C8 */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB2_NV) /* 0x86C9 */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB3_NV) /* 0x86CA */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB4_NV) /* 0x86CB */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB5_NV) /* 0x86CC */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB6_NV) /* 0x86CD */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB7_NV) /* 0x86CE */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB8_NV) /* 0x86CF */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB9_NV) /* 0x86D0 */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB10_NV) /* 0x86D1 */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB11_NV) /* 0x86D2 */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB12_NV) /* 0x86D3 */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB13_NV) /* 0x86D4 */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB14_NV) /* 0x86D5 */ GL_ENUM(GL_EVAL_VERTEX_ATTRIB15_NV) /* 0x86D6 */ GL_ENUM(GL_MAX_MAP_TESSELLATION_NV) /* 0x86D7 */ GL_ENUM(GL_MAX_RATIONAL_EVAL_ORDER_NV) /* 0x86D8 */ GL_ENUM(GL_MAX_PROGRAM_PATCH_ATTRIBS_NV) /* 0x86D9 */ GL_ENUM(GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV) /* 0x86DA */ GL_ENUM(GL_UNSIGNED_INT_S8_S8_8_8_NV) /* 0x86DB */ GL_ENUM(GL_UNSIGNED_INT_8_8_S8_S8_REV_NV) /* 0x86DC */ GL_ENUM(GL_DSDT_MAG_INTENSITY_NV) /* 0x86DD */ GL_ENUM(GL_SHADER_CONSISTENT_NV) /* 0x86DE */ GL_ENUM(GL_TEXTURE_SHADER_NV) /* 0x86DF */ GL_ENUM(GL_SHADER_OPERATION_NV) /* 0x86E0 */ GL_ENUM(GL_CULL_MODES_NV) /* 0x86E1 */ GL_ENUM(GL_OFFSET_TEXTURE_2D_MATRIX_NV) /* 0x86E1 */ GL_ENUM(GL_OFFSET_TEXTURE_MATRIX_NV) /* 0x86E2 */ GL_ENUM(GL_OFFSET_TEXTURE_2D_SCALE_NV) /* 0x86E2 */ GL_ENUM(GL_OFFSET_TEXTURE_SCALE_NV) /* 0x86E3 */ GL_ENUM(GL_OFFSET_TEXTURE_2D_BIAS_NV) /* 0x86E3 */ GL_ENUM(GL_OFFSET_TEXTURE_BIAS_NV) /* 0x86E4 */ GL_ENUM(GL_PREVIOUS_TEXTURE_INPUT_NV) /* 0x86E5 */ GL_ENUM(GL_CONST_EYE_NV) /* 0x86E6 */ GL_ENUM(GL_PASS_THROUGH_NV) /* 0x86E7 */ GL_ENUM(GL_CULL_FRAGMENT_NV) /* 0x86E8 */ GL_ENUM(GL_OFFSET_TEXTURE_2D_NV) /* 0x86E9 */ GL_ENUM(GL_DEPENDENT_AR_TEXTURE_2D_NV) /* 0x86EA */ GL_ENUM(GL_DEPENDENT_GB_TEXTURE_2D_NV) /* 0x86EB */ GL_ENUM(GL_SURFACE_STATE_NV) /* 0x86EC */ GL_ENUM(GL_DOT_PRODUCT_NV) /* 0x86ED */ GL_ENUM(GL_DOT_PRODUCT_DEPTH_REPLACE_NV) /* 0x86EE */ GL_ENUM(GL_DOT_PRODUCT_TEXTURE_2D_NV) /* 0x86EF */ GL_ENUM(GL_DOT_PRODUCT_TEXTURE_3D_NV) /* 0x86F0 */ GL_ENUM(GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV) /* 0x86F1 */ GL_ENUM(GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV) /* 0x86F2 */ GL_ENUM(GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV) /* 0x86F3 */ GL_ENUM(GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV) /* 0x86F4 */ GL_ENUM(GL_HILO_NV) /* 0x86F5 */ GL_ENUM(GL_DSDT_NV) /* 0x86F6 */ GL_ENUM(GL_DSDT_MAG_NV) /* 0x86F7 */ GL_ENUM(GL_DSDT_MAG_VIB_NV) /* 0x86F8 */ GL_ENUM(GL_HILO16_NV) /* 0x86F9 */ GL_ENUM(GL_SIGNED_HILO_NV) /* 0x86FA */ GL_ENUM(GL_SIGNED_HILO16_NV) /* 0x86FB */ GL_ENUM(GL_SIGNED_RGBA_NV) /* 0x86FC */ GL_ENUM(GL_SIGNED_RGBA8_NV) /* 0x86FD */ GL_ENUM(GL_SURFACE_REGISTERED_NV) /* 0x86FE */ GL_ENUM(GL_SIGNED_RGB_NV) /* 0x86FF */ GL_ENUM(GL_SIGNED_RGB8_NV) /* 0x8700 */ GL_ENUM(GL_SURFACE_MAPPED_NV) /* 0x8701 */ GL_ENUM(GL_SIGNED_LUMINANCE_NV) /* 0x8702 */ GL_ENUM(GL_SIGNED_LUMINANCE8_NV) /* 0x8703 */ GL_ENUM(GL_SIGNED_LUMINANCE_ALPHA_NV) /* 0x8704 */ GL_ENUM(GL_SIGNED_LUMINANCE8_ALPHA8_NV) /* 0x8705 */ GL_ENUM(GL_SIGNED_ALPHA_NV) /* 0x8706 */ GL_ENUM(GL_SIGNED_ALPHA8_NV) /* 0x8707 */ GL_ENUM(GL_SIGNED_INTENSITY_NV) /* 0x8708 */ GL_ENUM(GL_SIGNED_INTENSITY8_NV) /* 0x8709 */ GL_ENUM(GL_DSDT8_NV) /* 0x870A */ GL_ENUM(GL_DSDT8_MAG8_NV) /* 0x870B */ GL_ENUM(GL_DSDT8_MAG8_INTENSITY8_NV) /* 0x870C */ GL_ENUM(GL_SIGNED_RGB_UNSIGNED_ALPHA_NV) /* 0x870D */ GL_ENUM(GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV) /* 0x870E */ GL_ENUM(GL_HI_SCALE_NV) /* 0x870F */ GL_ENUM(GL_LO_SCALE_NV) /* 0x8710 */ GL_ENUM(GL_DS_SCALE_NV) /* 0x8711 */ GL_ENUM(GL_DT_SCALE_NV) /* 0x8712 */ GL_ENUM(GL_MAGNITUDE_SCALE_NV) /* 0x8713 */ GL_ENUM(GL_VIBRANCE_SCALE_NV) /* 0x8714 */ GL_ENUM(GL_HI_BIAS_NV) /* 0x8715 */ GL_ENUM(GL_LO_BIAS_NV) /* 0x8716 */ GL_ENUM(GL_DS_BIAS_NV) /* 0x8717 */ GL_ENUM(GL_DT_BIAS_NV) /* 0x8718 */ GL_ENUM(GL_MAGNITUDE_BIAS_NV) /* 0x8719 */ GL_ENUM(GL_VIBRANCE_BIAS_NV) /* 0x871A */ GL_ENUM(GL_TEXTURE_BORDER_VALUES_NV) /* 0x871B */ GL_ENUM(GL_TEXTURE_HI_SIZE_NV) /* 0x871C */ GL_ENUM(GL_TEXTURE_LO_SIZE_NV) /* 0x871D */ GL_ENUM(GL_TEXTURE_DS_SIZE_NV) /* 0x871E */ GL_ENUM(GL_TEXTURE_DT_SIZE_NV) /* 0x871F */ GL_ENUM(GL_TEXTURE_MAG_SIZE_NV) /* 0x8722 */ GL_ENUM(GL_MODELVIEW2_ARB) /* 0x8723 */ GL_ENUM(GL_MODELVIEW3_ARB) /* 0x8724 */ GL_ENUM(GL_MODELVIEW4_ARB) /* 0x8725 */ GL_ENUM(GL_MODELVIEW5_ARB) /* 0x8726 */ GL_ENUM(GL_MODELVIEW6_ARB) /* 0x8727 */ GL_ENUM(GL_MODELVIEW7_ARB) /* 0x8728 */ GL_ENUM(GL_MODELVIEW8_ARB) /* 0x8729 */ GL_ENUM(GL_MODELVIEW9_ARB) /* 0x872A */ GL_ENUM(GL_MODELVIEW10_ARB) /* 0x872B */ GL_ENUM(GL_MODELVIEW11_ARB) /* 0x872C */ GL_ENUM(GL_MODELVIEW12_ARB) /* 0x872D */ GL_ENUM(GL_MODELVIEW13_ARB) /* 0x872E */ GL_ENUM(GL_MODELVIEW14_ARB) /* 0x872F */ GL_ENUM(GL_MODELVIEW15_ARB) /* 0x8730 */ GL_ENUM(GL_MODELVIEW16_ARB) /* 0x8731 */ GL_ENUM(GL_MODELVIEW17_ARB) /* 0x8732 */ GL_ENUM(GL_MODELVIEW18_ARB) /* 0x8733 */ GL_ENUM(GL_MODELVIEW19_ARB) /* 0x8734 */ GL_ENUM(GL_MODELVIEW20_ARB) /* 0x8735 */ GL_ENUM(GL_MODELVIEW21_ARB) /* 0x8736 */ GL_ENUM(GL_MODELVIEW22_ARB) /* 0x8737 */ GL_ENUM(GL_MODELVIEW23_ARB) /* 0x8738 */ GL_ENUM(GL_MODELVIEW24_ARB) /* 0x8739 */ GL_ENUM(GL_MODELVIEW25_ARB) /* 0x873A */ GL_ENUM(GL_MODELVIEW26_ARB) /* 0x873B */ GL_ENUM(GL_MODELVIEW27_ARB) /* 0x873C */ GL_ENUM(GL_MODELVIEW28_ARB) /* 0x873D */ GL_ENUM(GL_MODELVIEW29_ARB) /* 0x873E */ GL_ENUM(GL_MODELVIEW30_ARB) /* 0x873F */ GL_ENUM(GL_MODELVIEW31_ARB) /* 0x8740 */ GL_ENUM(GL_DOT3_RGB_EXT) /* 0x8741 */ GL_ENUM(GL_DOT3_RGBA_EXT) /* 0x8741 */ GL_ENUM(GL_PROGRAM_BINARY_LENGTH) /* 0x8742 */ GL_ENUM(GL_MIRROR_CLAMP_ATI) /* 0x8742 */ GL_ENUM(GL_MIRROR_CLAMP_EXT) /* 0x8743 */ GL_ENUM(GL_MIRROR_CLAMP_TO_EDGE) /* 0x8743 */ GL_ENUM(GL_MIRROR_CLAMP_TO_EDGE_ATI) /* 0x8743 */ GL_ENUM(GL_MIRROR_CLAMP_TO_EDGE_EXT) /* 0x8744 */ GL_ENUM(GL_MODULATE_ADD_ATI) /* 0x8745 */ GL_ENUM(GL_MODULATE_SIGNED_ADD_ATI) /* 0x8746 */ GL_ENUM(GL_MODULATE_SUBTRACT_ATI) /* 0x874A */ GL_ENUM(GL_SET_AMD) /* 0x874B */ GL_ENUM(GL_REPLACE_VALUE_AMD) /* 0x874C */ GL_ENUM(GL_STENCIL_OP_VALUE_AMD) /* 0x874D */ GL_ENUM(GL_STENCIL_BACK_OP_VALUE_AMD) /* 0x874E */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_LONG) /* 0x874F */ GL_ENUM(GL_OCCLUSION_QUERY_EVENT_MASK_AMD) /* 0x8750 */ GL_ENUM(GL_DEPTH_STENCIL_MESA) /* 0x8751 */ GL_ENUM(GL_UNSIGNED_INT_24_8_MESA) /* 0x8752 */ GL_ENUM(GL_UNSIGNED_INT_8_24_REV_MESA) /* 0x8753 */ GL_ENUM(GL_UNSIGNED_SHORT_15_1_MESA) /* 0x8754 */ GL_ENUM(GL_UNSIGNED_SHORT_1_15_REV_MESA) /* 0x8755 */ GL_ENUM(GL_TRACE_MASK_MESA) /* 0x8756 */ GL_ENUM(GL_TRACE_NAME_MESA) /* 0x8757 */ GL_ENUM(GL_YCBCR_MESA) /* 0x8758 */ GL_ENUM(GL_PACK_INVERT_MESA) /* 0x8759 */ GL_ENUM(GL_DEBUG_OBJECT_MESA) /* 0x8759 */ GL_ENUM(GL_TEXTURE_1D_STACK_MESAX) /* 0x875A */ GL_ENUM(GL_DEBUG_PRINT_MESA) /* 0x875A */ GL_ENUM(GL_TEXTURE_2D_STACK_MESAX) /* 0x875B */ GL_ENUM(GL_DEBUG_ASSERT_MESA) /* 0x875B */ GL_ENUM(GL_PROXY_TEXTURE_1D_STACK_MESAX) /* 0x875C */ GL_ENUM(GL_PROXY_TEXTURE_2D_STACK_MESAX) /* 0x875D */ GL_ENUM(GL_TEXTURE_1D_STACK_BINDING_MESAX) /* 0x875E */ GL_ENUM(GL_TEXTURE_2D_STACK_BINDING_MESAX) /* 0x8760 */ GL_ENUM(GL_STATIC_ATI) /* 0x8761 */ GL_ENUM(GL_DYNAMIC_ATI) /* 0x8762 */ GL_ENUM(GL_PRESERVE_ATI) /* 0x8763 */ GL_ENUM(GL_DISCARD_ATI) /* 0x8764 */ GL_ENUM(GL_BUFFER_SIZE) /* 0x8764 */ GL_ENUM(GL_BUFFER_SIZE_ARB) /* 0x8764 */ GL_ENUM(GL_OBJECT_BUFFER_SIZE_ATI) /* 0x8765 */ GL_ENUM(GL_BUFFER_USAGE) /* 0x8765 */ GL_ENUM(GL_BUFFER_USAGE_ARB) /* 0x8765 */ GL_ENUM(GL_OBJECT_BUFFER_USAGE_ATI) /* 0x8766 */ GL_ENUM(GL_ARRAY_OBJECT_BUFFER_ATI) /* 0x8767 */ GL_ENUM(GL_ARRAY_OBJECT_OFFSET_ATI) /* 0x8768 */ GL_ENUM(GL_ELEMENT_ARRAY_APPLE) /* 0x8768 */ GL_ENUM(GL_ELEMENT_ARRAY_ATI) /* 0x8769 */ GL_ENUM(GL_ELEMENT_ARRAY_TYPE_APPLE) /* 0x8769 */ GL_ENUM(GL_ELEMENT_ARRAY_TYPE_ATI) /* 0x876A */ GL_ENUM(GL_ELEMENT_ARRAY_POINTER_APPLE) /* 0x876A */ GL_ENUM(GL_ELEMENT_ARRAY_POINTER_ATI) /* 0x876B */ GL_ENUM(GL_MAX_VERTEX_STREAMS_ATI) /* 0x876C */ GL_ENUM(GL_VERTEX_STREAM0_ATI) /* 0x876D */ GL_ENUM(GL_VERTEX_STREAM1_ATI) /* 0x876E */ GL_ENUM(GL_VERTEX_STREAM2_ATI) /* 0x876F */ GL_ENUM(GL_VERTEX_STREAM3_ATI) /* 0x8770 */ GL_ENUM(GL_VERTEX_STREAM4_ATI) /* 0x8771 */ GL_ENUM(GL_VERTEX_STREAM5_ATI) /* 0x8772 */ GL_ENUM(GL_VERTEX_STREAM6_ATI) /* 0x8773 */ GL_ENUM(GL_VERTEX_STREAM7_ATI) /* 0x8774 */ GL_ENUM(GL_VERTEX_SOURCE_ATI) /* 0x8775 */ GL_ENUM(GL_BUMP_ROT_MATRIX_ATI) /* 0x8776 */ GL_ENUM(GL_BUMP_ROT_MATRIX_SIZE_ATI) /* 0x8777 */ GL_ENUM(GL_BUMP_NUM_TEX_UNITS_ATI) /* 0x8778 */ GL_ENUM(GL_BUMP_TEX_UNITS_ATI) /* 0x8779 */ GL_ENUM(GL_DUDV_ATI) /* 0x877A */ GL_ENUM(GL_DU8DV8_ATI) /* 0x877B */ GL_ENUM(GL_BUMP_ENVMAP_ATI) /* 0x877C */ GL_ENUM(GL_BUMP_TARGET_ATI) /* 0x8780 */ GL_ENUM(GL_VERTEX_SHADER_EXT) /* 0x8781 */ GL_ENUM(GL_VERTEX_SHADER_BINDING_EXT) /* 0x8782 */ GL_ENUM(GL_OP_INDEX_EXT) /* 0x8783 */ GL_ENUM(GL_OP_NEGATE_EXT) /* 0x8784 */ GL_ENUM(GL_OP_DOT3_EXT) /* 0x8785 */ GL_ENUM(GL_OP_DOT4_EXT) /* 0x8786 */ GL_ENUM(GL_OP_MUL_EXT) /* 0x8787 */ GL_ENUM(GL_OP_ADD_EXT) /* 0x8788 */ GL_ENUM(GL_OP_MADD_EXT) /* 0x8789 */ GL_ENUM(GL_OP_FRAC_EXT) /* 0x878A */ GL_ENUM(GL_OP_MAX_EXT) /* 0x878B */ GL_ENUM(GL_OP_MIN_EXT) /* 0x878C */ GL_ENUM(GL_OP_SET_GE_EXT) /* 0x878D */ GL_ENUM(GL_OP_SET_LT_EXT) /* 0x878E */ GL_ENUM(GL_OP_CLAMP_EXT) /* 0x878F */ GL_ENUM(GL_OP_FLOOR_EXT) /* 0x8790 */ GL_ENUM(GL_OP_ROUND_EXT) /* 0x8791 */ GL_ENUM(GL_OP_EXP_BASE_2_EXT) /* 0x8792 */ GL_ENUM(GL_OP_LOG_BASE_2_EXT) /* 0x8793 */ GL_ENUM(GL_OP_POWER_EXT) /* 0x8794 */ GL_ENUM(GL_OP_RECIP_EXT) /* 0x8795 */ GL_ENUM(GL_OP_RECIP_SQRT_EXT) /* 0x8796 */ GL_ENUM(GL_OP_SUB_EXT) /* 0x8797 */ GL_ENUM(GL_OP_CROSS_PRODUCT_EXT) /* 0x8798 */ GL_ENUM(GL_OP_MULTIPLY_MATRIX_EXT) /* 0x8799 */ GL_ENUM(GL_OP_MOV_EXT) /* 0x879A */ GL_ENUM(GL_OUTPUT_VERTEX_EXT) /* 0x879B */ GL_ENUM(GL_OUTPUT_COLOR0_EXT) /* 0x879C */ GL_ENUM(GL_OUTPUT_COLOR1_EXT) /* 0x879D */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD0_EXT) /* 0x879E */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD1_EXT) /* 0x879F */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD2_EXT) /* 0x87A0 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD3_EXT) /* 0x87A1 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD4_EXT) /* 0x87A2 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD5_EXT) /* 0x87A3 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD6_EXT) /* 0x87A4 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD7_EXT) /* 0x87A5 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD8_EXT) /* 0x87A6 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD9_EXT) /* 0x87A7 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD10_EXT) /* 0x87A8 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD11_EXT) /* 0x87A9 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD12_EXT) /* 0x87AA */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD13_EXT) /* 0x87AB */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD14_EXT) /* 0x87AC */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD15_EXT) /* 0x87AD */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD16_EXT) /* 0x87AE */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD17_EXT) /* 0x87AF */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD18_EXT) /* 0x87B0 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD19_EXT) /* 0x87B1 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD20_EXT) /* 0x87B2 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD21_EXT) /* 0x87B3 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD22_EXT) /* 0x87B4 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD23_EXT) /* 0x87B5 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD24_EXT) /* 0x87B6 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD25_EXT) /* 0x87B7 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD26_EXT) /* 0x87B8 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD27_EXT) /* 0x87B9 */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD28_EXT) /* 0x87BA */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD29_EXT) /* 0x87BB */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD30_EXT) /* 0x87BC */ GL_ENUM(GL_OUTPUT_TEXTURE_COORD31_EXT) /* 0x87BD */ GL_ENUM(GL_OUTPUT_FOG_EXT) /* 0x87BE */ GL_ENUM(GL_SCALAR_EXT) /* 0x87BF */ GL_ENUM(GL_VECTOR_EXT) /* 0x87C0 */ GL_ENUM(GL_MATRIX_EXT) /* 0x87C1 */ GL_ENUM(GL_VARIANT_EXT) /* 0x87C2 */ GL_ENUM(GL_INVARIANT_EXT) /* 0x87C3 */ GL_ENUM(GL_LOCAL_CONSTANT_EXT) /* 0x87C4 */ GL_ENUM(GL_LOCAL_EXT) /* 0x87C5 */ GL_ENUM(GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT) /* 0x87C6 */ GL_ENUM(GL_MAX_VERTEX_SHADER_VARIANTS_EXT) /* 0x87C7 */ GL_ENUM(GL_MAX_VERTEX_SHADER_INVARIANTS_EXT) /* 0x87C8 */ GL_ENUM(GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT) /* 0x87C9 */ GL_ENUM(GL_MAX_VERTEX_SHADER_LOCALS_EXT) /* 0x87CA */ GL_ENUM(GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT) /* 0x87CB */ GL_ENUM(GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT) /* 0x87CC */ GL_ENUM(GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT) /* 0x87CD */ GL_ENUM(GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT) /* 0x87CE */ GL_ENUM(GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT) /* 0x87CF */ GL_ENUM(GL_VERTEX_SHADER_INSTRUCTIONS_EXT) /* 0x87D0 */ GL_ENUM(GL_VERTEX_SHADER_VARIANTS_EXT) /* 0x87D1 */ GL_ENUM(GL_VERTEX_SHADER_INVARIANTS_EXT) /* 0x87D2 */ GL_ENUM(GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT) /* 0x87D3 */ GL_ENUM(GL_VERTEX_SHADER_LOCALS_EXT) /* 0x87D4 */ GL_ENUM(GL_VERTEX_SHADER_OPTIMIZED_EXT) /* 0x87D5 */ GL_ENUM(GL_X_EXT) /* 0x87D6 */ GL_ENUM(GL_Y_EXT) /* 0x87D7 */ GL_ENUM(GL_Z_EXT) /* 0x87D8 */ GL_ENUM(GL_W_EXT) /* 0x87D9 */ GL_ENUM(GL_NEGATIVE_X_EXT) /* 0x87DA */ GL_ENUM(GL_NEGATIVE_Y_EXT) /* 0x87DB */ GL_ENUM(GL_NEGATIVE_Z_EXT) /* 0x87DC */ GL_ENUM(GL_NEGATIVE_W_EXT) /* 0x87DD */ GL_ENUM(GL_ZERO_EXT) /* 0x87DE */ GL_ENUM(GL_ONE_EXT) /* 0x87DF */ GL_ENUM(GL_NEGATIVE_ONE_EXT) /* 0x87E0 */ GL_ENUM(GL_NORMALIZED_RANGE_EXT) /* 0x87E1 */ GL_ENUM(GL_FULL_RANGE_EXT) /* 0x87E2 */ GL_ENUM(GL_CURRENT_VERTEX_EXT) /* 0x87E3 */ GL_ENUM(GL_MVP_MATRIX_EXT) /* 0x87E4 */ GL_ENUM(GL_VARIANT_VALUE_EXT) /* 0x87E5 */ GL_ENUM(GL_VARIANT_DATATYPE_EXT) /* 0x87E6 */ GL_ENUM(GL_VARIANT_ARRAY_STRIDE_EXT) /* 0x87E7 */ GL_ENUM(GL_VARIANT_ARRAY_TYPE_EXT) /* 0x87E8 */ GL_ENUM(GL_VARIANT_ARRAY_EXT) /* 0x87E9 */ GL_ENUM(GL_VARIANT_ARRAY_POINTER_EXT) /* 0x87EA */ GL_ENUM(GL_INVARIANT_VALUE_EXT) /* 0x87EB */ GL_ENUM(GL_INVARIANT_DATATYPE_EXT) /* 0x87EC */ GL_ENUM(GL_LOCAL_CONSTANT_VALUE_EXT) /* 0x87ED */ GL_ENUM(GL_LOCAL_CONSTANT_DATATYPE_EXT) /* 0x87F0 */ GL_ENUM(GL_PN_TRIANGLES_ATI) /* 0x87F1 */ GL_ENUM(GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI) /* 0x87F2 */ GL_ENUM(GL_PN_TRIANGLES_POINT_MODE_ATI) /* 0x87F3 */ GL_ENUM(GL_PN_TRIANGLES_NORMAL_MODE_ATI) /* 0x87F4 */ GL_ENUM(GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI) /* 0x87F5 */ GL_ENUM(GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI) /* 0x87F6 */ GL_ENUM(GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI) /* 0x87F7 */ GL_ENUM(GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI) /* 0x87F8 */ GL_ENUM(GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI) /* 0x87FB */ GL_ENUM(GL_VBO_FREE_MEMORY_ATI) /* 0x87FC */ GL_ENUM(GL_TEXTURE_FREE_MEMORY_ATI) /* 0x87FD */ GL_ENUM(GL_RENDERBUFFER_FREE_MEMORY_ATI) /* 0x87FE */ GL_ENUM(GL_NUM_PROGRAM_BINARY_FORMATS) /* 0x87FF */ GL_ENUM(GL_PROGRAM_BINARY_FORMATS) /* 0x8800 */ GL_ENUM(GL_STENCIL_BACK_FUNC) /* 0x8800 */ GL_ENUM(GL_STENCIL_BACK_FUNC_ATI) /* 0x8801 */ GL_ENUM(GL_STENCIL_BACK_FAIL) /* 0x8801 */ GL_ENUM(GL_STENCIL_BACK_FAIL_ATI) /* 0x8802 */ GL_ENUM(GL_STENCIL_BACK_PASS_DEPTH_FAIL) /* 0x8802 */ GL_ENUM(GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI) /* 0x8803 */ GL_ENUM(GL_STENCIL_BACK_PASS_DEPTH_PASS) /* 0x8803 */ GL_ENUM(GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI) /* 0x8804 */ GL_ENUM(GL_FRAGMENT_PROGRAM_ARB) /* 0x8805 */ GL_ENUM(GL_PROGRAM_ALU_INSTRUCTIONS_ARB) /* 0x8806 */ GL_ENUM(GL_PROGRAM_TEX_INSTRUCTIONS_ARB) /* 0x8807 */ GL_ENUM(GL_PROGRAM_TEX_INDIRECTIONS_ARB) /* 0x8808 */ GL_ENUM(GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB) /* 0x8809 */ GL_ENUM(GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB) /* 0x880A */ GL_ENUM(GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB) /* 0x880B */ GL_ENUM(GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB) /* 0x880C */ GL_ENUM(GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB) /* 0x880D */ GL_ENUM(GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB) /* 0x880E */ GL_ENUM(GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB) /* 0x880F */ GL_ENUM(GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB) /* 0x8810 */ GL_ENUM(GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB) /* 0x8814 */ GL_ENUM(GL_RGBA32F) /* 0x8814 */ GL_ENUM(GL_RGBA32F_ARB) /* 0x8814 */ GL_ENUM(GL_RGBA_FLOAT32_APPLE) /* 0x8814 */ GL_ENUM(GL_RGBA_FLOAT32_ATI) /* 0x8815 */ GL_ENUM(GL_RGB32F) /* 0x8815 */ GL_ENUM(GL_RGB32F_ARB) /* 0x8815 */ GL_ENUM(GL_RGB_FLOAT32_APPLE) /* 0x8815 */ GL_ENUM(GL_RGB_FLOAT32_ATI) /* 0x8816 */ GL_ENUM(GL_ALPHA32F_ARB) /* 0x8816 */ GL_ENUM(GL_ALPHA_FLOAT32_APPLE) /* 0x8816 */ GL_ENUM(GL_ALPHA_FLOAT32_ATI) /* 0x8817 */ GL_ENUM(GL_INTENSITY32F_ARB) /* 0x8817 */ GL_ENUM(GL_INTENSITY_FLOAT32_APPLE) /* 0x8817 */ GL_ENUM(GL_INTENSITY_FLOAT32_ATI) /* 0x8818 */ GL_ENUM(GL_LUMINANCE32F_ARB) /* 0x8818 */ GL_ENUM(GL_LUMINANCE_FLOAT32_APPLE) /* 0x8818 */ GL_ENUM(GL_LUMINANCE_FLOAT32_ATI) /* 0x8819 */ GL_ENUM(GL_LUMINANCE_ALPHA32F_ARB) /* 0x8819 */ GL_ENUM(GL_LUMINANCE_ALPHA_FLOAT32_APPLE) /* 0x8819 */ GL_ENUM(GL_LUMINANCE_ALPHA_FLOAT32_ATI) /* 0x881A */ GL_ENUM(GL_RGBA16F) /* 0x881A */ GL_ENUM(GL_RGBA16F_ARB) /* 0x881A */ GL_ENUM(GL_RGBA_FLOAT16_APPLE) /* 0x881A */ GL_ENUM(GL_RGBA_FLOAT16_ATI) /* 0x881B */ GL_ENUM(GL_RGB16F) /* 0x881B */ GL_ENUM(GL_RGB16F_ARB) /* 0x881B */ GL_ENUM(GL_RGB_FLOAT16_APPLE) /* 0x881B */ GL_ENUM(GL_RGB_FLOAT16_ATI) /* 0x881C */ GL_ENUM(GL_ALPHA16F_ARB) /* 0x881C */ GL_ENUM(GL_ALPHA_FLOAT16_APPLE) /* 0x881C */ GL_ENUM(GL_ALPHA_FLOAT16_ATI) /* 0x881D */ GL_ENUM(GL_INTENSITY16F_ARB) /* 0x881D */ GL_ENUM(GL_INTENSITY_FLOAT16_APPLE) /* 0x881D */ GL_ENUM(GL_INTENSITY_FLOAT16_ATI) /* 0x881E */ GL_ENUM(GL_LUMINANCE16F_ARB) /* 0x881E */ GL_ENUM(GL_LUMINANCE_FLOAT16_APPLE) /* 0x881E */ GL_ENUM(GL_LUMINANCE_FLOAT16_ATI) /* 0x881F */ GL_ENUM(GL_LUMINANCE_ALPHA16F_ARB) /* 0x881F */ GL_ENUM(GL_LUMINANCE_ALPHA_FLOAT16_APPLE) /* 0x881F */ GL_ENUM(GL_LUMINANCE_ALPHA_FLOAT16_ATI) /* 0x8820 */ GL_ENUM(GL_RGBA_FLOAT_MODE_ARB) /* 0x8820 */ GL_ENUM(GL_RGBA_FLOAT_MODE_ATI) /* 0x8824 */ GL_ENUM(GL_MAX_DRAW_BUFFERS) /* 0x8824 */ GL_ENUM(GL_MAX_DRAW_BUFFERS_ARB) /* 0x8824 */ GL_ENUM(GL_MAX_DRAW_BUFFERS_ATI) /* 0x8825 */ GL_ENUM(GL_DRAW_BUFFER0) /* 0x8825 */ GL_ENUM(GL_DRAW_BUFFER0_ARB) /* 0x8825 */ GL_ENUM(GL_DRAW_BUFFER0_ATI) /* 0x8826 */ GL_ENUM(GL_DRAW_BUFFER1) /* 0x8826 */ GL_ENUM(GL_DRAW_BUFFER1_ARB) /* 0x8826 */ GL_ENUM(GL_DRAW_BUFFER1_ATI) /* 0x8827 */ GL_ENUM(GL_DRAW_BUFFER2) /* 0x8827 */ GL_ENUM(GL_DRAW_BUFFER2_ARB) /* 0x8827 */ GL_ENUM(GL_DRAW_BUFFER2_ATI) /* 0x8828 */ GL_ENUM(GL_DRAW_BUFFER3) /* 0x8828 */ GL_ENUM(GL_DRAW_BUFFER3_ARB) /* 0x8828 */ GL_ENUM(GL_DRAW_BUFFER3_ATI) /* 0x8829 */ GL_ENUM(GL_DRAW_BUFFER4) /* 0x8829 */ GL_ENUM(GL_DRAW_BUFFER4_ARB) /* 0x8829 */ GL_ENUM(GL_DRAW_BUFFER4_ATI) /* 0x882A */ GL_ENUM(GL_DRAW_BUFFER5) /* 0x882A */ GL_ENUM(GL_DRAW_BUFFER5_ARB) /* 0x882A */ GL_ENUM(GL_DRAW_BUFFER5_ATI) /* 0x882B */ GL_ENUM(GL_DRAW_BUFFER6) /* 0x882B */ GL_ENUM(GL_DRAW_BUFFER6_ARB) /* 0x882B */ GL_ENUM(GL_DRAW_BUFFER6_ATI) /* 0x882C */ GL_ENUM(GL_DRAW_BUFFER7) /* 0x882C */ GL_ENUM(GL_DRAW_BUFFER7_ARB) /* 0x882C */ GL_ENUM(GL_DRAW_BUFFER7_ATI) /* 0x882D */ GL_ENUM(GL_DRAW_BUFFER8) /* 0x882D */ GL_ENUM(GL_DRAW_BUFFER8_ARB) /* 0x882D */ GL_ENUM(GL_DRAW_BUFFER8_ATI) /* 0x882E */ GL_ENUM(GL_DRAW_BUFFER9) /* 0x882E */ GL_ENUM(GL_DRAW_BUFFER9_ARB) /* 0x882E */ GL_ENUM(GL_DRAW_BUFFER9_ATI) /* 0x882F */ GL_ENUM(GL_DRAW_BUFFER10) /* 0x882F */ GL_ENUM(GL_DRAW_BUFFER10_ARB) /* 0x882F */ GL_ENUM(GL_DRAW_BUFFER10_ATI) /* 0x8830 */ GL_ENUM(GL_DRAW_BUFFER11) /* 0x8830 */ GL_ENUM(GL_DRAW_BUFFER11_ARB) /* 0x8830 */ GL_ENUM(GL_DRAW_BUFFER11_ATI) /* 0x8831 */ GL_ENUM(GL_DRAW_BUFFER12) /* 0x8831 */ GL_ENUM(GL_DRAW_BUFFER12_ARB) /* 0x8831 */ GL_ENUM(GL_DRAW_BUFFER12_ATI) /* 0x8832 */ GL_ENUM(GL_DRAW_BUFFER13) /* 0x8832 */ GL_ENUM(GL_DRAW_BUFFER13_ARB) /* 0x8832 */ GL_ENUM(GL_DRAW_BUFFER13_ATI) /* 0x8833 */ GL_ENUM(GL_DRAW_BUFFER14) /* 0x8833 */ GL_ENUM(GL_DRAW_BUFFER14_ARB) /* 0x8833 */ GL_ENUM(GL_DRAW_BUFFER14_ATI) /* 0x8834 */ GL_ENUM(GL_DRAW_BUFFER15) /* 0x8834 */ GL_ENUM(GL_DRAW_BUFFER15_ARB) /* 0x8834 */ GL_ENUM(GL_DRAW_BUFFER15_ATI) /* 0x8835 */ GL_ENUM(GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI) /* 0x883D */ GL_ENUM(GL_ALPHA_BLEND_EQUATION_ATI) /* 0x883D */ GL_ENUM(GL_BLEND_EQUATION_ALPHA) /* 0x883D */ GL_ENUM(GL_BLEND_EQUATION_ALPHA_EXT) /* 0x883F */ GL_ENUM(GL_SUBSAMPLE_DISTANCE_AMD) /* 0x8840 */ GL_ENUM(GL_MATRIX_PALETTE_ARB) /* 0x8841 */ GL_ENUM(GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB) /* 0x8842 */ GL_ENUM(GL_MAX_PALETTE_MATRICES_ARB) /* 0x8843 */ GL_ENUM(GL_CURRENT_PALETTE_MATRIX_ARB) /* 0x8844 */ GL_ENUM(GL_MATRIX_INDEX_ARRAY_ARB) /* 0x8845 */ GL_ENUM(GL_CURRENT_MATRIX_INDEX_ARB) /* 0x8846 */ GL_ENUM(GL_MATRIX_INDEX_ARRAY_SIZE_ARB) /* 0x8847 */ GL_ENUM(GL_MATRIX_INDEX_ARRAY_TYPE_ARB) /* 0x8848 */ GL_ENUM(GL_MATRIX_INDEX_ARRAY_STRIDE_ARB) /* 0x8849 */ GL_ENUM(GL_MATRIX_INDEX_ARRAY_POINTER_ARB) /* 0x884A */ GL_ENUM(GL_TEXTURE_DEPTH_SIZE) /* 0x884A */ GL_ENUM(GL_TEXTURE_DEPTH_SIZE_ARB) /* 0x884B */ GL_ENUM(GL_DEPTH_TEXTURE_MODE) /* 0x884B */ GL_ENUM(GL_DEPTH_TEXTURE_MODE_ARB) /* 0x884C */ GL_ENUM(GL_TEXTURE_COMPARE_MODE) /* 0x884C */ GL_ENUM(GL_TEXTURE_COMPARE_MODE_ARB) /* 0x884D */ GL_ENUM(GL_TEXTURE_COMPARE_FUNC) /* 0x884D */ GL_ENUM(GL_TEXTURE_COMPARE_FUNC_ARB) /* 0x884E */ GL_ENUM(GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT) /* 0x884E */ GL_ENUM(GL_COMPARE_REF_TO_TEXTURE) /* 0x884E */ GL_ENUM(GL_COMPARE_R_TO_TEXTURE) /* 0x884E */ GL_ENUM(GL_COMPARE_R_TO_TEXTURE_ARB) /* 0x884F */ GL_ENUM(GL_TEXTURE_CUBE_MAP_SEAMLESS) /* 0x8850 */ GL_ENUM(GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV) /* 0x8851 */ GL_ENUM(GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV) /* 0x8852 */ GL_ENUM(GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV) /* 0x8853 */ GL_ENUM(GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV) /* 0x8854 */ GL_ENUM(GL_OFFSET_HILO_TEXTURE_2D_NV) /* 0x8855 */ GL_ENUM(GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV) /* 0x8856 */ GL_ENUM(GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV) /* 0x8857 */ GL_ENUM(GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV) /* 0x8858 */ GL_ENUM(GL_DEPENDENT_HILO_TEXTURE_2D_NV) /* 0x8859 */ GL_ENUM(GL_DEPENDENT_RGB_TEXTURE_3D_NV) /* 0x885A */ GL_ENUM(GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV) /* 0x885B */ GL_ENUM(GL_DOT_PRODUCT_PASS_THROUGH_NV) /* 0x885C */ GL_ENUM(GL_DOT_PRODUCT_TEXTURE_1D_NV) /* 0x885D */ GL_ENUM(GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV) /* 0x885E */ GL_ENUM(GL_HILO8_NV) /* 0x885F */ GL_ENUM(GL_SIGNED_HILO8_NV) /* 0x8860 */ GL_ENUM(GL_FORCE_BLUE_TO_ONE_NV) /* 0x8861 */ GL_ENUM(GL_POINT_SPRITE) /* 0x8861 */ GL_ENUM(GL_POINT_SPRITE_ARB) /* 0x8861 */ GL_ENUM(GL_POINT_SPRITE_NV) /* 0x8862 */ GL_ENUM(GL_COORD_REPLACE) /* 0x8862 */ GL_ENUM(GL_COORD_REPLACE_ARB) /* 0x8862 */ GL_ENUM(GL_COORD_REPLACE_NV) /* 0x8863 */ GL_ENUM(GL_POINT_SPRITE_R_MODE_NV) /* 0x8864 */ GL_ENUM(GL_PIXEL_COUNTER_BITS_NV) /* 0x8864 */ GL_ENUM(GL_QUERY_COUNTER_BITS) /* 0x8864 */ GL_ENUM(GL_QUERY_COUNTER_BITS_ARB) /* 0x8865 */ GL_ENUM(GL_CURRENT_OCCLUSION_QUERY_ID_NV) /* 0x8865 */ GL_ENUM(GL_CURRENT_QUERY) /* 0x8865 */ GL_ENUM(GL_CURRENT_QUERY_ARB) /* 0x8866 */ GL_ENUM(GL_PIXEL_COUNT_NV) /* 0x8866 */ GL_ENUM(GL_QUERY_RESULT) /* 0x8866 */ GL_ENUM(GL_QUERY_RESULT_ARB) /* 0x8867 */ GL_ENUM(GL_PIXEL_COUNT_AVAILABLE_NV) /* 0x8867 */ GL_ENUM(GL_QUERY_RESULT_AVAILABLE) /* 0x8867 */ GL_ENUM(GL_QUERY_RESULT_AVAILABLE_ARB) /* 0x8868 */ GL_ENUM(GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV) /* 0x8869 */ GL_ENUM(GL_MAX_VERTEX_ATTRIBS) /* 0x8869 */ GL_ENUM(GL_MAX_VERTEX_ATTRIBS_ARB) /* 0x886A */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_NORMALIZED) /* 0x886A */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB) /* 0x886C */ GL_ENUM(GL_MAX_TESS_CONTROL_INPUT_COMPONENTS) /* 0x886D */ GL_ENUM(GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS) /* 0x886E */ GL_ENUM(GL_DEPTH_STENCIL_TO_RGBA_NV) /* 0x886F */ GL_ENUM(GL_DEPTH_STENCIL_TO_BGRA_NV) /* 0x8870 */ GL_ENUM(GL_FRAGMENT_PROGRAM_NV) /* 0x8871 */ GL_ENUM(GL_MAX_TEXTURE_COORDS) /* 0x8871 */ GL_ENUM(GL_MAX_TEXTURE_COORDS_ARB) /* 0x8871 */ GL_ENUM(GL_MAX_TEXTURE_COORDS_NV) /* 0x8872 */ GL_ENUM(GL_MAX_TEXTURE_IMAGE_UNITS) /* 0x8872 */ GL_ENUM(GL_MAX_TEXTURE_IMAGE_UNITS_ARB) /* 0x8872 */ GL_ENUM(GL_MAX_TEXTURE_IMAGE_UNITS_NV) /* 0x8873 */ GL_ENUM(GL_FRAGMENT_PROGRAM_BINDING_NV) /* 0x8874 */ GL_ENUM(GL_PROGRAM_ERROR_STRING_ARB) /* 0x8874 */ GL_ENUM(GL_PROGRAM_ERROR_STRING_NV) /* 0x8875 */ GL_ENUM(GL_PROGRAM_FORMAT_ASCII_ARB) /* 0x8876 */ GL_ENUM(GL_PROGRAM_FORMAT_ARB) /* 0x8878 */ GL_ENUM(GL_WRITE_PIXEL_DATA_RANGE_NV) /* 0x8879 */ GL_ENUM(GL_READ_PIXEL_DATA_RANGE_NV) /* 0x887A */ GL_ENUM(GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV) /* 0x887B */ GL_ENUM(GL_READ_PIXEL_DATA_RANGE_LENGTH_NV) /* 0x887C */ GL_ENUM(GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV) /* 0x887D */ GL_ENUM(GL_READ_PIXEL_DATA_RANGE_POINTER_NV) /* 0x887F */ GL_ENUM(GL_GEOMETRY_SHADER_INVOCATIONS) /* 0x8880 */ GL_ENUM(GL_FLOAT_R_NV) /* 0x8881 */ GL_ENUM(GL_FLOAT_RG_NV) /* 0x8882 */ GL_ENUM(GL_FLOAT_RGB_NV) /* 0x8883 */ GL_ENUM(GL_FLOAT_RGBA_NV) /* 0x8884 */ GL_ENUM(GL_FLOAT_R16_NV) /* 0x8885 */ GL_ENUM(GL_FLOAT_R32_NV) /* 0x8886 */ GL_ENUM(GL_FLOAT_RG16_NV) /* 0x8887 */ GL_ENUM(GL_FLOAT_RG32_NV) /* 0x8888 */ GL_ENUM(GL_FLOAT_RGB16_NV) /* 0x8889 */ GL_ENUM(GL_FLOAT_RGB32_NV) /* 0x888A */ GL_ENUM(GL_FLOAT_RGBA16_NV) /* 0x888B */ GL_ENUM(GL_FLOAT_RGBA32_NV) /* 0x888C */ GL_ENUM(GL_TEXTURE_FLOAT_COMPONENTS_NV) /* 0x888D */ GL_ENUM(GL_FLOAT_CLEAR_COLOR_VALUE_NV) /* 0x888E */ GL_ENUM(GL_FLOAT_RGBA_MODE_NV) /* 0x888F */ GL_ENUM(GL_TEXTURE_UNSIGNED_REMAP_MODE_NV) /* 0x8890 */ GL_ENUM(GL_DEPTH_BOUNDS_TEST_EXT) /* 0x8891 */ GL_ENUM(GL_DEPTH_BOUNDS_EXT) /* 0x8892 */ GL_ENUM(GL_ARRAY_BUFFER) /* 0x8892 */ GL_ENUM(GL_ARRAY_BUFFER_ARB) /* 0x8893 */ GL_ENUM(GL_ELEMENT_ARRAY_BUFFER) /* 0x8893 */ GL_ENUM(GL_ELEMENT_ARRAY_BUFFER_ARB) /* 0x8894 */ GL_ENUM(GL_ARRAY_BUFFER_BINDING) /* 0x8894 */ GL_ENUM(GL_ARRAY_BUFFER_BINDING_ARB) /* 0x8895 */ GL_ENUM(GL_ELEMENT_ARRAY_BUFFER_BINDING) /* 0x8895 */ GL_ENUM(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB) /* 0x8896 */ GL_ENUM(GL_VERTEX_ARRAY_BUFFER_BINDING) /* 0x8896 */ GL_ENUM(GL_VERTEX_ARRAY_BUFFER_BINDING_ARB) /* 0x8897 */ GL_ENUM(GL_NORMAL_ARRAY_BUFFER_BINDING) /* 0x8897 */ GL_ENUM(GL_NORMAL_ARRAY_BUFFER_BINDING_ARB) /* 0x8898 */ GL_ENUM(GL_COLOR_ARRAY_BUFFER_BINDING) /* 0x8898 */ GL_ENUM(GL_COLOR_ARRAY_BUFFER_BINDING_ARB) /* 0x8899 */ GL_ENUM(GL_INDEX_ARRAY_BUFFER_BINDING) /* 0x8899 */ GL_ENUM(GL_INDEX_ARRAY_BUFFER_BINDING_ARB) /* 0x889A */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING) /* 0x889A */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB) /* 0x889B */ GL_ENUM(GL_EDGE_FLAG_ARRAY_BUFFER_BINDING) /* 0x889B */ GL_ENUM(GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB) /* 0x889C */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING) /* 0x889C */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB) /* 0x889D */ GL_ENUM(GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING) /* 0x889D */ GL_ENUM(GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB) /* 0x889D */ GL_ENUM(GL_FOG_COORD_ARRAY_BUFFER_BINDING) /* 0x889E */ GL_ENUM(GL_WEIGHT_ARRAY_BUFFER_BINDING) /* 0x889E */ GL_ENUM(GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB) /* 0x889F */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING) /* 0x889F */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB) /* 0x88A0 */ GL_ENUM(GL_PROGRAM_INSTRUCTIONS_ARB) /* 0x88A1 */ GL_ENUM(GL_MAX_PROGRAM_INSTRUCTIONS_ARB) /* 0x88A2 */ GL_ENUM(GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB) /* 0x88A3 */ GL_ENUM(GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB) /* 0x88A4 */ GL_ENUM(GL_PROGRAM_TEMPORARIES_ARB) /* 0x88A5 */ GL_ENUM(GL_MAX_PROGRAM_TEMPORARIES_ARB) /* 0x88A6 */ GL_ENUM(GL_PROGRAM_NATIVE_TEMPORARIES_ARB) /* 0x88A7 */ GL_ENUM(GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB) /* 0x88A8 */ GL_ENUM(GL_PROGRAM_PARAMETERS_ARB) /* 0x88A9 */ GL_ENUM(GL_MAX_PROGRAM_PARAMETERS_ARB) /* 0x88AA */ GL_ENUM(GL_PROGRAM_NATIVE_PARAMETERS_ARB) /* 0x88AB */ GL_ENUM(GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB) /* 0x88AC */ GL_ENUM(GL_PROGRAM_ATTRIBS_ARB) /* 0x88AD */ GL_ENUM(GL_MAX_PROGRAM_ATTRIBS_ARB) /* 0x88AE */ GL_ENUM(GL_PROGRAM_NATIVE_ATTRIBS_ARB) /* 0x88AF */ GL_ENUM(GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB) /* 0x88B0 */ GL_ENUM(GL_PROGRAM_ADDRESS_REGISTERS_ARB) /* 0x88B1 */ GL_ENUM(GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB) /* 0x88B2 */ GL_ENUM(GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB) /* 0x88B3 */ GL_ENUM(GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB) /* 0x88B4 */ GL_ENUM(GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB) /* 0x88B5 */ GL_ENUM(GL_MAX_PROGRAM_ENV_PARAMETERS_ARB) /* 0x88B6 */ GL_ENUM(GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB) /* 0x88B7 */ GL_ENUM(GL_TRANSPOSE_CURRENT_MATRIX_ARB) /* 0x88B8 */ GL_ENUM(GL_READ_ONLY) /* 0x88B8 */ GL_ENUM(GL_READ_ONLY_ARB) /* 0x88B9 */ GL_ENUM(GL_WRITE_ONLY) /* 0x88B9 */ GL_ENUM(GL_WRITE_ONLY_ARB) /* 0x88BA */ GL_ENUM(GL_READ_WRITE) /* 0x88BA */ GL_ENUM(GL_READ_WRITE_ARB) /* 0x88BB */ GL_ENUM(GL_BUFFER_ACCESS) /* 0x88BB */ GL_ENUM(GL_BUFFER_ACCESS_ARB) /* 0x88BC */ GL_ENUM(GL_BUFFER_MAPPED) /* 0x88BC */ GL_ENUM(GL_BUFFER_MAPPED_ARB) /* 0x88BD */ GL_ENUM(GL_BUFFER_MAP_POINTER) /* 0x88BD */ GL_ENUM(GL_BUFFER_MAP_POINTER_ARB) /* 0x88BE */ GL_ENUM(GL_WRITE_DISCARD_NV) /* 0x88BF */ GL_ENUM(GL_TIME_ELAPSED) /* 0x88BF */ GL_ENUM(GL_TIME_ELAPSED_EXT) /* 0x88C0 */ GL_ENUM(GL_MATRIX0_ARB) /* 0x88C1 */ GL_ENUM(GL_MATRIX1_ARB) /* 0x88C2 */ GL_ENUM(GL_MATRIX2_ARB) /* 0x88C3 */ GL_ENUM(GL_MATRIX3_ARB) /* 0x88C4 */ GL_ENUM(GL_MATRIX4_ARB) /* 0x88C5 */ GL_ENUM(GL_MATRIX5_ARB) /* 0x88C6 */ GL_ENUM(GL_MATRIX6_ARB) /* 0x88C7 */ GL_ENUM(GL_MATRIX7_ARB) /* 0x88C8 */ GL_ENUM(GL_MATRIX8_ARB) /* 0x88C9 */ GL_ENUM(GL_MATRIX9_ARB) /* 0x88CA */ GL_ENUM(GL_MATRIX10_ARB) /* 0x88CB */ GL_ENUM(GL_MATRIX11_ARB) /* 0x88CC */ GL_ENUM(GL_MATRIX12_ARB) /* 0x88CD */ GL_ENUM(GL_MATRIX13_ARB) /* 0x88CE */ GL_ENUM(GL_MATRIX14_ARB) /* 0x88CF */ GL_ENUM(GL_MATRIX15_ARB) /* 0x88D0 */ GL_ENUM(GL_MATRIX16_ARB) /* 0x88D1 */ GL_ENUM(GL_MATRIX17_ARB) /* 0x88D2 */ GL_ENUM(GL_MATRIX18_ARB) /* 0x88D3 */ GL_ENUM(GL_MATRIX19_ARB) /* 0x88D4 */ GL_ENUM(GL_MATRIX20_ARB) /* 0x88D5 */ GL_ENUM(GL_MATRIX21_ARB) /* 0x88D6 */ GL_ENUM(GL_MATRIX22_ARB) /* 0x88D7 */ GL_ENUM(GL_MATRIX23_ARB) /* 0x88D8 */ GL_ENUM(GL_MATRIX24_ARB) /* 0x88D9 */ GL_ENUM(GL_MATRIX25_ARB) /* 0x88DA */ GL_ENUM(GL_MATRIX26_ARB) /* 0x88DB */ GL_ENUM(GL_MATRIX27_ARB) /* 0x88DC */ GL_ENUM(GL_MATRIX28_ARB) /* 0x88DD */ GL_ENUM(GL_MATRIX29_ARB) /* 0x88DE */ GL_ENUM(GL_MATRIX30_ARB) /* 0x88DF */ GL_ENUM(GL_MATRIX31_ARB) /* 0x88E0 */ GL_ENUM(GL_STREAM_DRAW) /* 0x88E0 */ GL_ENUM(GL_STREAM_DRAW_ARB) /* 0x88E1 */ GL_ENUM(GL_STREAM_READ) /* 0x88E1 */ GL_ENUM(GL_STREAM_READ_ARB) /* 0x88E2 */ GL_ENUM(GL_STREAM_COPY) /* 0x88E2 */ GL_ENUM(GL_STREAM_COPY_ARB) /* 0x88E4 */ GL_ENUM(GL_STATIC_DRAW) /* 0x88E4 */ GL_ENUM(GL_STATIC_DRAW_ARB) /* 0x88E5 */ GL_ENUM(GL_STATIC_READ) /* 0x88E5 */ GL_ENUM(GL_STATIC_READ_ARB) /* 0x88E6 */ GL_ENUM(GL_STATIC_COPY) /* 0x88E6 */ GL_ENUM(GL_STATIC_COPY_ARB) /* 0x88E8 */ GL_ENUM(GL_DYNAMIC_DRAW) /* 0x88E8 */ GL_ENUM(GL_DYNAMIC_DRAW_ARB) /* 0x88E9 */ GL_ENUM(GL_DYNAMIC_READ) /* 0x88E9 */ GL_ENUM(GL_DYNAMIC_READ_ARB) /* 0x88EA */ GL_ENUM(GL_DYNAMIC_COPY) /* 0x88EA */ GL_ENUM(GL_DYNAMIC_COPY_ARB) /* 0x88EB */ GL_ENUM(GL_PIXEL_PACK_BUFFER) /* 0x88EB */ GL_ENUM(GL_PIXEL_PACK_BUFFER_ARB) /* 0x88EB */ GL_ENUM(GL_PIXEL_PACK_BUFFER_EXT) /* 0x88EC */ GL_ENUM(GL_PIXEL_UNPACK_BUFFER) /* 0x88EC */ GL_ENUM(GL_PIXEL_UNPACK_BUFFER_ARB) /* 0x88EC */ GL_ENUM(GL_PIXEL_UNPACK_BUFFER_EXT) /* 0x88ED */ GL_ENUM(GL_PIXEL_PACK_BUFFER_BINDING) /* 0x88ED */ GL_ENUM(GL_PIXEL_PACK_BUFFER_BINDING_ARB) /* 0x88ED */ GL_ENUM(GL_PIXEL_PACK_BUFFER_BINDING_EXT) /* 0x88EF */ GL_ENUM(GL_PIXEL_UNPACK_BUFFER_BINDING) /* 0x88EF */ GL_ENUM(GL_PIXEL_UNPACK_BUFFER_BINDING_ARB) /* 0x88EF */ GL_ENUM(GL_PIXEL_UNPACK_BUFFER_BINDING_EXT) /* 0x88F0 */ GL_ENUM(GL_DEPTH24_STENCIL8) /* 0x88F0 */ GL_ENUM(GL_DEPTH24_STENCIL8_EXT) /* 0x88F1 */ GL_ENUM(GL_TEXTURE_STENCIL_SIZE) /* 0x88F1 */ GL_ENUM(GL_TEXTURE_STENCIL_SIZE_EXT) /* 0x88F2 */ GL_ENUM(GL_STENCIL_TAG_BITS_EXT) /* 0x88F3 */ GL_ENUM(GL_STENCIL_CLEAR_TAG_VALUE_EXT) /* 0x88F4 */ GL_ENUM(GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV) /* 0x88F5 */ GL_ENUM(GL_MAX_PROGRAM_CALL_DEPTH_NV) /* 0x88F6 */ GL_ENUM(GL_MAX_PROGRAM_IF_DEPTH_NV) /* 0x88F7 */ GL_ENUM(GL_MAX_PROGRAM_LOOP_DEPTH_NV) /* 0x88F8 */ GL_ENUM(GL_MAX_PROGRAM_LOOP_COUNT_NV) /* 0x88F9 */ GL_ENUM(GL_SRC1_COLOR) /* 0x88FA */ GL_ENUM(GL_ONE_MINUS_SRC1_COLOR) /* 0x88FB */ GL_ENUM(GL_ONE_MINUS_SRC1_ALPHA) /* 0x88FC */ GL_ENUM(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS) /* 0x88FD */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_INTEGER) /* 0x88FD */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT) /* 0x88FD */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV) /* 0x88FE */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_DIVISOR) /* 0x88FE */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB) /* 0x88FF */ GL_ENUM(GL_MAX_ARRAY_TEXTURE_LAYERS) /* 0x88FF */ GL_ENUM(GL_MAX_ARRAY_TEXTURE_LAYERS_EXT) /* 0x8904 */ GL_ENUM(GL_MIN_PROGRAM_TEXEL_OFFSET) /* 0x8904 */ GL_ENUM(GL_MIN_PROGRAM_TEXEL_OFFSET_EXT) /* 0x8904 */ GL_ENUM(GL_MIN_PROGRAM_TEXEL_OFFSET_NV) /* 0x8905 */ GL_ENUM(GL_MAX_PROGRAM_TEXEL_OFFSET) /* 0x8905 */ GL_ENUM(GL_MAX_PROGRAM_TEXEL_OFFSET_EXT) /* 0x8905 */ GL_ENUM(GL_MAX_PROGRAM_TEXEL_OFFSET_NV) /* 0x8906 */ GL_ENUM(GL_PROGRAM_ATTRIB_COMPONENTS_NV) /* 0x8907 */ GL_ENUM(GL_PROGRAM_RESULT_COMPONENTS_NV) /* 0x8908 */ GL_ENUM(GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV) /* 0x8909 */ GL_ENUM(GL_MAX_PROGRAM_RESULT_COMPONENTS_NV) /* 0x8910 */ GL_ENUM(GL_STENCIL_TEST_TWO_SIDE_EXT) /* 0x8911 */ GL_ENUM(GL_ACTIVE_STENCIL_FACE_EXT) /* 0x8912 */ GL_ENUM(GL_MIRROR_CLAMP_TO_BORDER_EXT) /* 0x8914 */ GL_ENUM(GL_SAMPLES_PASSED) /* 0x8914 */ GL_ENUM(GL_SAMPLES_PASSED_ARB) /* 0x8916 */ GL_ENUM(GL_GEOMETRY_VERTICES_OUT) /* 0x8917 */ GL_ENUM(GL_GEOMETRY_INPUT_TYPE) /* 0x8918 */ GL_ENUM(GL_GEOMETRY_OUTPUT_TYPE) /* 0x8919 */ GL_ENUM(GL_SAMPLER_BINDING) /* 0x891A */ GL_ENUM(GL_CLAMP_VERTEX_COLOR) /* 0x891A */ GL_ENUM(GL_CLAMP_VERTEX_COLOR_ARB) /* 0x891B */ GL_ENUM(GL_CLAMP_FRAGMENT_COLOR) /* 0x891B */ GL_ENUM(GL_CLAMP_FRAGMENT_COLOR_ARB) /* 0x891C */ GL_ENUM(GL_CLAMP_READ_COLOR) /* 0x891C */ GL_ENUM(GL_CLAMP_READ_COLOR_ARB) /* 0x891D */ GL_ENUM(GL_FIXED_ONLY) /* 0x891D */ GL_ENUM(GL_FIXED_ONLY_ARB) /* 0x891E */ GL_ENUM(GL_TESS_CONTROL_PROGRAM_NV) /* 0x891F */ GL_ENUM(GL_TESS_EVALUATION_PROGRAM_NV) /* 0x8920 */ GL_ENUM(GL_FRAGMENT_SHADER_ATI) /* 0x8921 */ GL_ENUM(GL_REG_0_ATI) /* 0x8922 */ GL_ENUM(GL_REG_1_ATI) /* 0x8923 */ GL_ENUM(GL_REG_2_ATI) /* 0x8924 */ GL_ENUM(GL_REG_3_ATI) /* 0x8925 */ GL_ENUM(GL_REG_4_ATI) /* 0x8926 */ GL_ENUM(GL_REG_5_ATI) /* 0x8927 */ GL_ENUM(GL_REG_6_ATI) /* 0x8928 */ GL_ENUM(GL_REG_7_ATI) /* 0x8929 */ GL_ENUM(GL_REG_8_ATI) /* 0x892A */ GL_ENUM(GL_REG_9_ATI) /* 0x892B */ GL_ENUM(GL_REG_10_ATI) /* 0x892C */ GL_ENUM(GL_REG_11_ATI) /* 0x892D */ GL_ENUM(GL_REG_12_ATI) /* 0x892E */ GL_ENUM(GL_REG_13_ATI) /* 0x892F */ GL_ENUM(GL_REG_14_ATI) /* 0x8930 */ GL_ENUM(GL_REG_15_ATI) /* 0x8931 */ GL_ENUM(GL_REG_16_ATI) /* 0x8932 */ GL_ENUM(GL_REG_17_ATI) /* 0x8933 */ GL_ENUM(GL_REG_18_ATI) /* 0x8934 */ GL_ENUM(GL_REG_19_ATI) /* 0x8935 */ GL_ENUM(GL_REG_20_ATI) /* 0x8936 */ GL_ENUM(GL_REG_21_ATI) /* 0x8937 */ GL_ENUM(GL_REG_22_ATI) /* 0x8938 */ GL_ENUM(GL_REG_23_ATI) /* 0x8939 */ GL_ENUM(GL_REG_24_ATI) /* 0x893A */ GL_ENUM(GL_REG_25_ATI) /* 0x893B */ GL_ENUM(GL_REG_26_ATI) /* 0x893C */ GL_ENUM(GL_REG_27_ATI) /* 0x893D */ GL_ENUM(GL_REG_28_ATI) /* 0x893E */ GL_ENUM(GL_REG_29_ATI) /* 0x893F */ GL_ENUM(GL_REG_30_ATI) /* 0x8940 */ GL_ENUM(GL_REG_31_ATI) /* 0x8941 */ GL_ENUM(GL_CON_0_ATI) /* 0x8942 */ GL_ENUM(GL_CON_1_ATI) /* 0x8943 */ GL_ENUM(GL_CON_2_ATI) /* 0x8944 */ GL_ENUM(GL_CON_3_ATI) /* 0x8945 */ GL_ENUM(GL_CON_4_ATI) /* 0x8946 */ GL_ENUM(GL_CON_5_ATI) /* 0x8947 */ GL_ENUM(GL_CON_6_ATI) /* 0x8948 */ GL_ENUM(GL_CON_7_ATI) /* 0x8949 */ GL_ENUM(GL_CON_8_ATI) /* 0x894A */ GL_ENUM(GL_CON_9_ATI) /* 0x894B */ GL_ENUM(GL_CON_10_ATI) /* 0x894C */ GL_ENUM(GL_CON_11_ATI) /* 0x894D */ GL_ENUM(GL_CON_12_ATI) /* 0x894E */ GL_ENUM(GL_CON_13_ATI) /* 0x894F */ GL_ENUM(GL_CON_14_ATI) /* 0x8950 */ GL_ENUM(GL_CON_15_ATI) /* 0x8951 */ GL_ENUM(GL_CON_16_ATI) /* 0x8952 */ GL_ENUM(GL_CON_17_ATI) /* 0x8953 */ GL_ENUM(GL_CON_18_ATI) /* 0x8954 */ GL_ENUM(GL_CON_19_ATI) /* 0x8955 */ GL_ENUM(GL_CON_20_ATI) /* 0x8956 */ GL_ENUM(GL_CON_21_ATI) /* 0x8957 */ GL_ENUM(GL_CON_22_ATI) /* 0x8958 */ GL_ENUM(GL_CON_23_ATI) /* 0x8959 */ GL_ENUM(GL_CON_24_ATI) /* 0x895A */ GL_ENUM(GL_CON_25_ATI) /* 0x895B */ GL_ENUM(GL_CON_26_ATI) /* 0x895C */ GL_ENUM(GL_CON_27_ATI) /* 0x895D */ GL_ENUM(GL_CON_28_ATI) /* 0x895E */ GL_ENUM(GL_CON_29_ATI) /* 0x895F */ GL_ENUM(GL_CON_30_ATI) /* 0x8960 */ GL_ENUM(GL_CON_31_ATI) /* 0x8961 */ GL_ENUM(GL_MOV_ATI) /* 0x8963 */ GL_ENUM(GL_ADD_ATI) /* 0x8964 */ GL_ENUM(GL_MUL_ATI) /* 0x8965 */ GL_ENUM(GL_SUB_ATI) /* 0x8966 */ GL_ENUM(GL_DOT3_ATI) /* 0x8967 */ GL_ENUM(GL_DOT4_ATI) /* 0x8968 */ GL_ENUM(GL_MAD_ATI) /* 0x8969 */ GL_ENUM(GL_LERP_ATI) /* 0x896A */ GL_ENUM(GL_CND_ATI) /* 0x896B */ GL_ENUM(GL_CND0_ATI) /* 0x896C */ GL_ENUM(GL_DOT2_ADD_ATI) /* 0x896D */ GL_ENUM(GL_SECONDARY_INTERPOLATOR_ATI) /* 0x896E */ GL_ENUM(GL_NUM_FRAGMENT_REGISTERS_ATI) /* 0x896F */ GL_ENUM(GL_NUM_FRAGMENT_CONSTANTS_ATI) /* 0x8970 */ GL_ENUM(GL_NUM_PASSES_ATI) /* 0x8971 */ GL_ENUM(GL_NUM_INSTRUCTIONS_PER_PASS_ATI) /* 0x8972 */ GL_ENUM(GL_NUM_INSTRUCTIONS_TOTAL_ATI) /* 0x8973 */ GL_ENUM(GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI) /* 0x8974 */ GL_ENUM(GL_NUM_LOOPBACK_COMPONENTS_ATI) /* 0x8975 */ GL_ENUM(GL_COLOR_ALPHA_PAIRING_ATI) /* 0x8976 */ GL_ENUM(GL_SWIZZLE_STR_ATI) /* 0x8977 */ GL_ENUM(GL_SWIZZLE_STQ_ATI) /* 0x8978 */ GL_ENUM(GL_SWIZZLE_STR_DR_ATI) /* 0x8979 */ GL_ENUM(GL_SWIZZLE_STQ_DQ_ATI) /* 0x897A */ GL_ENUM(GL_SWIZZLE_STRQ_ATI) /* 0x897B */ GL_ENUM(GL_SWIZZLE_STRQ_DQ_ATI) /* 0x8980 */ GL_ENUM(GL_INTERLACE_OML) /* 0x8981 */ GL_ENUM(GL_INTERLACE_READ_OML) /* 0x8982 */ GL_ENUM(GL_FORMAT_SUBSAMPLE_24_24_OML) /* 0x8983 */ GL_ENUM(GL_FORMAT_SUBSAMPLE_244_244_OML) /* 0x8984 */ GL_ENUM(GL_PACK_RESAMPLE_OML) /* 0x8985 */ GL_ENUM(GL_UNPACK_RESAMPLE_OML) /* 0x8986 */ GL_ENUM(GL_RESAMPLE_REPLICATE_OML) /* 0x8987 */ GL_ENUM(GL_RESAMPLE_ZERO_FILL_OML) /* 0x8988 */ GL_ENUM(GL_RESAMPLE_AVERAGE_OML) /* 0x8989 */ GL_ENUM(GL_RESAMPLE_DECIMATE_OML) /* 0x8A00 */ GL_ENUM(GL_VERTEX_ATTRIB_MAP1_APPLE) /* 0x8A01 */ GL_ENUM(GL_VERTEX_ATTRIB_MAP2_APPLE) /* 0x8A02 */ GL_ENUM(GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE) /* 0x8A03 */ GL_ENUM(GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE) /* 0x8A04 */ GL_ENUM(GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE) /* 0x8A05 */ GL_ENUM(GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE) /* 0x8A06 */ GL_ENUM(GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE) /* 0x8A07 */ GL_ENUM(GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE) /* 0x8A08 */ GL_ENUM(GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE) /* 0x8A09 */ GL_ENUM(GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE) /* 0x8A0A */ GL_ENUM(GL_DRAW_PIXELS_APPLE) /* 0x8A0B */ GL_ENUM(GL_FENCE_APPLE) /* 0x8A0F */ GL_ENUM(GL_COLOR_FLOAT_APPLE) /* 0x8A11 */ GL_ENUM(GL_UNIFORM_BUFFER) /* 0x8A12 */ GL_ENUM(GL_BUFFER_SERIALIZED_MODIFY_APPLE) /* 0x8A13 */ GL_ENUM(GL_BUFFER_FLUSHING_UNMAP_APPLE) /* 0x8A14 */ GL_ENUM(GL_AUX_DEPTH_STENCIL_APPLE) /* 0x8A15 */ GL_ENUM(GL_PACK_ROW_BYTES_APPLE) /* 0x8A16 */ GL_ENUM(GL_UNPACK_ROW_BYTES_APPLE) /* 0x8A19 */ GL_ENUM(GL_RELEASED_APPLE) /* 0x8A1A */ GL_ENUM(GL_VOLATILE_APPLE) /* 0x8A1B */ GL_ENUM(GL_RETAINED_APPLE) /* 0x8A1C */ GL_ENUM(GL_UNDEFINED_APPLE) /* 0x8A1D */ GL_ENUM(GL_PURGEABLE_APPLE) /* 0x8A1F */ GL_ENUM(GL_RGB_422_APPLE) /* 0x8A28 */ GL_ENUM(GL_UNIFORM_BUFFER_BINDING) /* 0x8A29 */ GL_ENUM(GL_UNIFORM_BUFFER_START) /* 0x8A2A */ GL_ENUM(GL_UNIFORM_BUFFER_SIZE) /* 0x8A2B */ GL_ENUM(GL_MAX_VERTEX_UNIFORM_BLOCKS) /* 0x8A2C */ GL_ENUM(GL_MAX_GEOMETRY_UNIFORM_BLOCKS) /* 0x8A2D */ GL_ENUM(GL_MAX_FRAGMENT_UNIFORM_BLOCKS) /* 0x8A2E */ GL_ENUM(GL_MAX_COMBINED_UNIFORM_BLOCKS) /* 0x8A2F */ GL_ENUM(GL_MAX_UNIFORM_BUFFER_BINDINGS) /* 0x8A30 */ GL_ENUM(GL_MAX_UNIFORM_BLOCK_SIZE) /* 0x8A31 */ GL_ENUM(GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS) /* 0x8A32 */ GL_ENUM(GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS) /* 0x8A33 */ GL_ENUM(GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS) /* 0x8A34 */ GL_ENUM(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT) /* 0x8A35 */ GL_ENUM(GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH) /* 0x8A36 */ GL_ENUM(GL_ACTIVE_UNIFORM_BLOCKS) /* 0x8A37 */ GL_ENUM(GL_UNIFORM_TYPE) /* 0x8A38 */ GL_ENUM(GL_UNIFORM_SIZE) /* 0x8A39 */ GL_ENUM(GL_UNIFORM_NAME_LENGTH) /* 0x8A3A */ GL_ENUM(GL_UNIFORM_BLOCK_INDEX) /* 0x8A3B */ GL_ENUM(GL_UNIFORM_OFFSET) /* 0x8A3C */ GL_ENUM(GL_UNIFORM_ARRAY_STRIDE) /* 0x8A3D */ GL_ENUM(GL_UNIFORM_MATRIX_STRIDE) /* 0x8A3E */ GL_ENUM(GL_UNIFORM_IS_ROW_MAJOR) /* 0x8A3F */ GL_ENUM(GL_UNIFORM_BLOCK_BINDING) /* 0x8A40 */ GL_ENUM(GL_UNIFORM_BLOCK_DATA_SIZE) /* 0x8A41 */ GL_ENUM(GL_UNIFORM_BLOCK_NAME_LENGTH) /* 0x8A42 */ GL_ENUM(GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS) /* 0x8A43 */ GL_ENUM(GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) /* 0x8A44 */ GL_ENUM(GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER) /* 0x8A45 */ GL_ENUM(GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER) /* 0x8A46 */ GL_ENUM(GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER) /* 0x8A48 */ GL_ENUM(GL_TEXTURE_SRGB_DECODE_EXT) /* 0x8A49 */ GL_ENUM(GL_DECODE_EXT) /* 0x8A4A */ GL_ENUM(GL_SKIP_DECODE_EXT) /* 0x8A4F */ GL_ENUM(GL_PROGRAM_PIPELINE_OBJECT_EXT) /* 0x8A51 */ GL_ENUM(GL_RGB_RAW_422_APPLE) /* 0x8B30 */ GL_ENUM(GL_FRAGMENT_SHADER) /* 0x8B30 */ GL_ENUM(GL_FRAGMENT_SHADER_ARB) /* 0x8B31 */ GL_ENUM(GL_VERTEX_SHADER) /* 0x8B31 */ GL_ENUM(GL_VERTEX_SHADER_ARB) /* 0x8B40 */ GL_ENUM(GL_PROGRAM_OBJECT_ARB) /* 0x8B40 */ GL_ENUM(GL_PROGRAM_OBJECT_EXT) /* 0x8B48 */ GL_ENUM(GL_SHADER_OBJECT_ARB) /* 0x8B48 */ GL_ENUM(GL_SHADER_OBJECT_EXT) /* 0x8B49 */ GL_ENUM(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS) /* 0x8B49 */ GL_ENUM(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB) /* 0x8B4A */ GL_ENUM(GL_MAX_VERTEX_UNIFORM_COMPONENTS) /* 0x8B4A */ GL_ENUM(GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB) /* 0x8B4B */ GL_ENUM(GL_MAX_VARYING_COMPONENTS) /* 0x8B4B */ GL_ENUM(GL_MAX_VARYING_COMPONENTS_EXT) /* 0x8B4B */ GL_ENUM(GL_MAX_VARYING_FLOATS) /* 0x8B4B */ GL_ENUM(GL_MAX_VARYING_FLOATS_ARB) /* 0x8B4C */ GL_ENUM(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS) /* 0x8B4C */ GL_ENUM(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB) /* 0x8B4D */ GL_ENUM(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS) /* 0x8B4D */ GL_ENUM(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB) /* 0x8B4E */ GL_ENUM(GL_OBJECT_TYPE_ARB) /* 0x8B4F */ GL_ENUM(GL_OBJECT_SUBTYPE_ARB) /* 0x8B4F */ GL_ENUM(GL_SHADER_TYPE) /* 0x8B50 */ GL_ENUM(GL_FLOAT_VEC2) /* 0x8B50 */ GL_ENUM(GL_FLOAT_VEC2_ARB) /* 0x8B51 */ GL_ENUM(GL_FLOAT_VEC3) /* 0x8B51 */ GL_ENUM(GL_FLOAT_VEC3_ARB) /* 0x8B52 */ GL_ENUM(GL_FLOAT_VEC4) /* 0x8B52 */ GL_ENUM(GL_FLOAT_VEC4_ARB) /* 0x8B53 */ GL_ENUM(GL_INT_VEC2) /* 0x8B53 */ GL_ENUM(GL_INT_VEC2_ARB) /* 0x8B54 */ GL_ENUM(GL_INT_VEC3) /* 0x8B54 */ GL_ENUM(GL_INT_VEC3_ARB) /* 0x8B55 */ GL_ENUM(GL_INT_VEC4) /* 0x8B55 */ GL_ENUM(GL_INT_VEC4_ARB) /* 0x8B56 */ GL_ENUM(GL_BOOL) /* 0x8B56 */ GL_ENUM(GL_BOOL_ARB) /* 0x8B57 */ GL_ENUM(GL_BOOL_VEC2) /* 0x8B57 */ GL_ENUM(GL_BOOL_VEC2_ARB) /* 0x8B58 */ GL_ENUM(GL_BOOL_VEC3) /* 0x8B58 */ GL_ENUM(GL_BOOL_VEC3_ARB) /* 0x8B59 */ GL_ENUM(GL_BOOL_VEC4) /* 0x8B59 */ GL_ENUM(GL_BOOL_VEC4_ARB) /* 0x8B5A */ GL_ENUM(GL_FLOAT_MAT2) /* 0x8B5A */ GL_ENUM(GL_FLOAT_MAT2_ARB) /* 0x8B5B */ GL_ENUM(GL_FLOAT_MAT3) /* 0x8B5B */ GL_ENUM(GL_FLOAT_MAT3_ARB) /* 0x8B5C */ GL_ENUM(GL_FLOAT_MAT4) /* 0x8B5C */ GL_ENUM(GL_FLOAT_MAT4_ARB) /* 0x8B5D */ GL_ENUM(GL_SAMPLER_1D) /* 0x8B5D */ GL_ENUM(GL_SAMPLER_1D_ARB) /* 0x8B5E */ GL_ENUM(GL_SAMPLER_2D) /* 0x8B5E */ GL_ENUM(GL_SAMPLER_2D_ARB) /* 0x8B5F */ GL_ENUM(GL_SAMPLER_3D) /* 0x8B5F */ GL_ENUM(GL_SAMPLER_3D_ARB) /* 0x8B60 */ GL_ENUM(GL_SAMPLER_CUBE) /* 0x8B60 */ GL_ENUM(GL_SAMPLER_CUBE_ARB) /* 0x8B61 */ GL_ENUM(GL_SAMPLER_1D_SHADOW) /* 0x8B61 */ GL_ENUM(GL_SAMPLER_1D_SHADOW_ARB) /* 0x8B62 */ GL_ENUM(GL_SAMPLER_2D_SHADOW) /* 0x8B62 */ GL_ENUM(GL_SAMPLER_2D_SHADOW_ARB) /* 0x8B63 */ GL_ENUM(GL_SAMPLER_2D_RECT) /* 0x8B63 */ GL_ENUM(GL_SAMPLER_2D_RECT_ARB) /* 0x8B64 */ GL_ENUM(GL_SAMPLER_2D_RECT_SHADOW) /* 0x8B64 */ GL_ENUM(GL_SAMPLER_2D_RECT_SHADOW_ARB) /* 0x8B65 */ GL_ENUM(GL_FLOAT_MAT2x3) /* 0x8B66 */ GL_ENUM(GL_FLOAT_MAT2x4) /* 0x8B67 */ GL_ENUM(GL_FLOAT_MAT3x2) /* 0x8B68 */ GL_ENUM(GL_FLOAT_MAT3x4) /* 0x8B69 */ GL_ENUM(GL_FLOAT_MAT4x2) /* 0x8B6A */ GL_ENUM(GL_FLOAT_MAT4x3) /* 0x8B80 */ GL_ENUM(GL_DELETE_STATUS) /* 0x8B80 */ GL_ENUM(GL_OBJECT_DELETE_STATUS_ARB) /* 0x8B81 */ GL_ENUM(GL_COMPILE_STATUS) /* 0x8B81 */ GL_ENUM(GL_OBJECT_COMPILE_STATUS_ARB) /* 0x8B82 */ GL_ENUM(GL_LINK_STATUS) /* 0x8B82 */ GL_ENUM(GL_OBJECT_LINK_STATUS_ARB) /* 0x8B83 */ GL_ENUM(GL_OBJECT_VALIDATE_STATUS_ARB) /* 0x8B83 */ GL_ENUM(GL_VALIDATE_STATUS) /* 0x8B84 */ GL_ENUM(GL_INFO_LOG_LENGTH) /* 0x8B84 */ GL_ENUM(GL_OBJECT_INFO_LOG_LENGTH_ARB) /* 0x8B85 */ GL_ENUM(GL_ATTACHED_SHADERS) /* 0x8B85 */ GL_ENUM(GL_OBJECT_ATTACHED_OBJECTS_ARB) /* 0x8B86 */ GL_ENUM(GL_ACTIVE_UNIFORMS) /* 0x8B86 */ GL_ENUM(GL_OBJECT_ACTIVE_UNIFORMS_ARB) /* 0x8B87 */ GL_ENUM(GL_ACTIVE_UNIFORM_MAX_LENGTH) /* 0x8B87 */ GL_ENUM(GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB) /* 0x8B88 */ GL_ENUM(GL_OBJECT_SHADER_SOURCE_LENGTH_ARB) /* 0x8B88 */ GL_ENUM(GL_SHADER_SOURCE_LENGTH) /* 0x8B89 */ GL_ENUM(GL_ACTIVE_ATTRIBUTES) /* 0x8B89 */ GL_ENUM(GL_OBJECT_ACTIVE_ATTRIBUTES_ARB) /* 0x8B8A */ GL_ENUM(GL_ACTIVE_ATTRIBUTE_MAX_LENGTH) /* 0x8B8A */ GL_ENUM(GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB) /* 0x8B8B */ GL_ENUM(GL_FRAGMENT_SHADER_DERIVATIVE_HINT) /* 0x8B8B */ GL_ENUM(GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB) /* 0x8B8C */ GL_ENUM(GL_SHADING_LANGUAGE_VERSION) /* 0x8B8C */ GL_ENUM(GL_SHADING_LANGUAGE_VERSION_ARB) /* 0x8B8D */ GL_ENUM(GL_ACTIVE_PROGRAM_EXT) /* 0x8B8D */ GL_ENUM(GL_CURRENT_PROGRAM) /* 0x8B90 */ GL_ENUM(GL_PALETTE4_RGB8_OES) /* 0x8B91 */ GL_ENUM(GL_PALETTE4_RGBA8_OES) /* 0x8B92 */ GL_ENUM(GL_PALETTE4_R5_G6_B5_OES) /* 0x8B93 */ GL_ENUM(GL_PALETTE4_RGBA4_OES) /* 0x8B94 */ GL_ENUM(GL_PALETTE4_RGB5_A1_OES) /* 0x8B95 */ GL_ENUM(GL_PALETTE8_RGB8_OES) /* 0x8B96 */ GL_ENUM(GL_PALETTE8_RGBA8_OES) /* 0x8B97 */ GL_ENUM(GL_PALETTE8_R5_G6_B5_OES) /* 0x8B98 */ GL_ENUM(GL_PALETTE8_RGBA4_OES) /* 0x8B99 */ GL_ENUM(GL_PALETTE8_RGB5_A1_OES) /* 0x8B9A */ GL_ENUM(GL_IMPLEMENTATION_COLOR_READ_TYPE) /* 0x8B9A */ GL_ENUM(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES) /* 0x8B9B */ GL_ENUM(GL_IMPLEMENTATION_COLOR_READ_FORMAT) /* 0x8B9B */ GL_ENUM(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES) /* 0x8BB0 */ GL_ENUM(GL_FRAGMENT_PROGRAM_POSITION_MESA) /* 0x8BB1 */ GL_ENUM(GL_FRAGMENT_PROGRAM_CALLBACK_MESA) /* 0x8BB2 */ GL_ENUM(GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA) /* 0x8BB3 */ GL_ENUM(GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA) /* 0x8BB4 */ GL_ENUM(GL_VERTEX_PROGRAM_POSITION_MESA) /* 0x8BB5 */ GL_ENUM(GL_VERTEX_PROGRAM_CALLBACK_MESA) /* 0x8BB6 */ GL_ENUM(GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA) /* 0x8BB7 */ GL_ENUM(GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA) /* 0x8BC0 */ GL_ENUM(GL_COUNTER_TYPE_AMD) /* 0x8BC1 */ GL_ENUM(GL_COUNTER_RANGE_AMD) /* 0x8BC2 */ GL_ENUM(GL_UNSIGNED_INT64_AMD) /* 0x8BC3 */ GL_ENUM(GL_PERCENTAGE_AMD) /* 0x8BC4 */ GL_ENUM(GL_PERFMON_RESULT_AVAILABLE_AMD) /* 0x8BC5 */ GL_ENUM(GL_PERFMON_RESULT_SIZE_AMD) /* 0x8BC6 */ GL_ENUM(GL_PERFMON_RESULT_AMD) /* 0x8C10 */ GL_ENUM(GL_TEXTURE_RED_TYPE) /* 0x8C10 */ GL_ENUM(GL_TEXTURE_RED_TYPE_ARB) /* 0x8C11 */ GL_ENUM(GL_TEXTURE_GREEN_TYPE) /* 0x8C11 */ GL_ENUM(GL_TEXTURE_GREEN_TYPE_ARB) /* 0x8C12 */ GL_ENUM(GL_TEXTURE_BLUE_TYPE) /* 0x8C12 */ GL_ENUM(GL_TEXTURE_BLUE_TYPE_ARB) /* 0x8C13 */ GL_ENUM(GL_TEXTURE_ALPHA_TYPE) /* 0x8C13 */ GL_ENUM(GL_TEXTURE_ALPHA_TYPE_ARB) /* 0x8C14 */ GL_ENUM(GL_TEXTURE_LUMINANCE_TYPE) /* 0x8C14 */ GL_ENUM(GL_TEXTURE_LUMINANCE_TYPE_ARB) /* 0x8C15 */ GL_ENUM(GL_TEXTURE_INTENSITY_TYPE) /* 0x8C15 */ GL_ENUM(GL_TEXTURE_INTENSITY_TYPE_ARB) /* 0x8C16 */ GL_ENUM(GL_TEXTURE_DEPTH_TYPE) /* 0x8C16 */ GL_ENUM(GL_TEXTURE_DEPTH_TYPE_ARB) /* 0x8C17 */ GL_ENUM(GL_UNSIGNED_NORMALIZED) /* 0x8C17 */ GL_ENUM(GL_UNSIGNED_NORMALIZED_ARB) /* 0x8C18 */ GL_ENUM(GL_TEXTURE_1D_ARRAY) /* 0x8C18 */ GL_ENUM(GL_TEXTURE_1D_ARRAY_EXT) /* 0x8C19 */ GL_ENUM(GL_PROXY_TEXTURE_1D_ARRAY) /* 0x8C19 */ GL_ENUM(GL_PROXY_TEXTURE_1D_ARRAY_EXT) /* 0x8C1A */ GL_ENUM(GL_TEXTURE_2D_ARRAY) /* 0x8C1A */ GL_ENUM(GL_TEXTURE_2D_ARRAY_EXT) /* 0x8C1B */ GL_ENUM(GL_PROXY_TEXTURE_2D_ARRAY) /* 0x8C1B */ GL_ENUM(GL_PROXY_TEXTURE_2D_ARRAY_EXT) /* 0x8C1C */ GL_ENUM(GL_TEXTURE_BINDING_1D_ARRAY) /* 0x8C1C */ GL_ENUM(GL_TEXTURE_BINDING_1D_ARRAY_EXT) /* 0x8C1D */ GL_ENUM(GL_TEXTURE_BINDING_2D_ARRAY) /* 0x8C1D */ GL_ENUM(GL_TEXTURE_BINDING_2D_ARRAY_EXT) /* 0x8C26 */ GL_ENUM(GL_GEOMETRY_PROGRAM_NV) /* 0x8C27 */ GL_ENUM(GL_MAX_PROGRAM_OUTPUT_VERTICES_NV) /* 0x8C28 */ GL_ENUM(GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV) /* 0x8C29 */ GL_ENUM(GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS) /* 0x8C29 */ GL_ENUM(GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB) /* 0x8C29 */ GL_ENUM(GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT) /* 0x8C2A */ GL_ENUM(GL_TEXTURE_BUFFER) /* 0x8C2A */ GL_ENUM(GL_TEXTURE_BUFFER_ARB) /* 0x8C2A */ GL_ENUM(GL_TEXTURE_BUFFER_BINDING) /* 0x8C2A */ GL_ENUM(GL_TEXTURE_BUFFER_EXT) /* 0x8C2B */ GL_ENUM(GL_MAX_TEXTURE_BUFFER_SIZE) /* 0x8C2B */ GL_ENUM(GL_MAX_TEXTURE_BUFFER_SIZE_ARB) /* 0x8C2B */ GL_ENUM(GL_MAX_TEXTURE_BUFFER_SIZE_EXT) /* 0x8C2C */ GL_ENUM(GL_TEXTURE_BINDING_BUFFER) /* 0x8C2C */ GL_ENUM(GL_TEXTURE_BINDING_BUFFER_ARB) /* 0x8C2C */ GL_ENUM(GL_TEXTURE_BINDING_BUFFER_EXT) /* 0x8C2D */ GL_ENUM(GL_TEXTURE_BUFFER_DATA_STORE_BINDING) /* 0x8C2D */ GL_ENUM(GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB) /* 0x8C2D */ GL_ENUM(GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT) /* 0x8C2E */ GL_ENUM(GL_TEXTURE_BUFFER_FORMAT) /* 0x8C2E */ GL_ENUM(GL_TEXTURE_BUFFER_FORMAT_ARB) /* 0x8C2E */ GL_ENUM(GL_TEXTURE_BUFFER_FORMAT_EXT) /* 0x8C2F */ GL_ENUM(GL_ANY_SAMPLES_PASSED) /* 0x8C36 */ GL_ENUM(GL_SAMPLE_SHADING) /* 0x8C36 */ GL_ENUM(GL_SAMPLE_SHADING_ARB) /* 0x8C37 */ GL_ENUM(GL_MIN_SAMPLE_SHADING_VALUE) /* 0x8C37 */ GL_ENUM(GL_MIN_SAMPLE_SHADING_VALUE_ARB) /* 0x8C3A */ GL_ENUM(GL_R11F_G11F_B10F) /* 0x8C3A */ GL_ENUM(GL_R11F_G11F_B10F_EXT) /* 0x8C3B */ GL_ENUM(GL_UNSIGNED_INT_10F_11F_11F_REV) /* 0x8C3B */ GL_ENUM(GL_UNSIGNED_INT_10F_11F_11F_REV_EXT) /* 0x8C3C */ GL_ENUM(GL_RGBA_SIGNED_COMPONENTS_EXT) /* 0x8C3D */ GL_ENUM(GL_RGB9_E5) /* 0x8C3D */ GL_ENUM(GL_RGB9_E5_EXT) /* 0x8C3E */ GL_ENUM(GL_UNSIGNED_INT_5_9_9_9_REV) /* 0x8C3E */ GL_ENUM(GL_UNSIGNED_INT_5_9_9_9_REV_EXT) /* 0x8C3F */ GL_ENUM(GL_TEXTURE_SHARED_SIZE) /* 0x8C3F */ GL_ENUM(GL_TEXTURE_SHARED_SIZE_EXT) /* 0x8C40 */ GL_ENUM(GL_SRGB) /* 0x8C40 */ GL_ENUM(GL_SRGB_EXT) /* 0x8C41 */ GL_ENUM(GL_SRGB8) /* 0x8C41 */ GL_ENUM(GL_SRGB8_EXT) /* 0x8C42 */ GL_ENUM(GL_SRGB_ALPHA) /* 0x8C42 */ GL_ENUM(GL_SRGB_ALPHA_EXT) /* 0x8C43 */ GL_ENUM(GL_SRGB8_ALPHA8) /* 0x8C43 */ GL_ENUM(GL_SRGB8_ALPHA8_EXT) /* 0x8C44 */ GL_ENUM(GL_SLUMINANCE_ALPHA) /* 0x8C44 */ GL_ENUM(GL_SLUMINANCE_ALPHA_EXT) /* 0x8C45 */ GL_ENUM(GL_SLUMINANCE8_ALPHA8) /* 0x8C45 */ GL_ENUM(GL_SLUMINANCE8_ALPHA8_EXT) /* 0x8C46 */ GL_ENUM(GL_SLUMINANCE) /* 0x8C46 */ GL_ENUM(GL_SLUMINANCE_EXT) /* 0x8C47 */ GL_ENUM(GL_SLUMINANCE8) /* 0x8C47 */ GL_ENUM(GL_SLUMINANCE8_EXT) /* 0x8C48 */ GL_ENUM(GL_COMPRESSED_SRGB) /* 0x8C48 */ GL_ENUM(GL_COMPRESSED_SRGB_EXT) /* 0x8C49 */ GL_ENUM(GL_COMPRESSED_SRGB_ALPHA) /* 0x8C49 */ GL_ENUM(GL_COMPRESSED_SRGB_ALPHA_EXT) /* 0x8C4A */ GL_ENUM(GL_COMPRESSED_SLUMINANCE) /* 0x8C4A */ GL_ENUM(GL_COMPRESSED_SLUMINANCE_EXT) /* 0x8C4B */ GL_ENUM(GL_COMPRESSED_SLUMINANCE_ALPHA) /* 0x8C4B */ GL_ENUM(GL_COMPRESSED_SLUMINANCE_ALPHA_EXT) /* 0x8C4C */ GL_ENUM(GL_COMPRESSED_SRGB_S3TC_DXT1_EXT) /* 0x8C4D */ GL_ENUM(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT) /* 0x8C4E */ GL_ENUM(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT) /* 0x8C4F */ GL_ENUM(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT) /* 0x8C70 */ GL_ENUM(GL_COMPRESSED_LUMINANCE_LATC1_EXT) /* 0x8C71 */ GL_ENUM(GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT) /* 0x8C72 */ GL_ENUM(GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT) /* 0x8C73 */ GL_ENUM(GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT) /* 0x8C74 */ GL_ENUM(GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV) /* 0x8C75 */ GL_ENUM(GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV) /* 0x8C76 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH) /* 0x8C76 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT) /* 0x8C77 */ GL_ENUM(GL_BACK_PRIMARY_COLOR_NV) /* 0x8C78 */ GL_ENUM(GL_BACK_SECONDARY_COLOR_NV) /* 0x8C79 */ GL_ENUM(GL_TEXTURE_COORD_NV) /* 0x8C7A */ GL_ENUM(GL_CLIP_DISTANCE_NV) /* 0x8C7B */ GL_ENUM(GL_VERTEX_ID_NV) /* 0x8C7C */ GL_ENUM(GL_PRIMITIVE_ID_NV) /* 0x8C7D */ GL_ENUM(GL_GENERIC_ATTRIB_NV) /* 0x8C7E */ GL_ENUM(GL_TRANSFORM_FEEDBACK_ATTRIBS_NV) /* 0x8C7F */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_MODE) /* 0x8C7F */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT) /* 0x8C7F */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV) /* 0x8C80 */ GL_ENUM(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS) /* 0x8C80 */ GL_ENUM(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT) /* 0x8C80 */ GL_ENUM(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV) /* 0x8C81 */ GL_ENUM(GL_ACTIVE_VARYINGS_NV) /* 0x8C82 */ GL_ENUM(GL_ACTIVE_VARYING_MAX_LENGTH_NV) /* 0x8C83 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_VARYINGS) /* 0x8C83 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_VARYINGS_EXT) /* 0x8C83 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_VARYINGS_NV) /* 0x8C84 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_START) /* 0x8C84 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT) /* 0x8C84 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_START_NV) /* 0x8C85 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_SIZE) /* 0x8C85 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT) /* 0x8C85 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV) /* 0x8C86 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_RECORD_NV) /* 0x8C87 */ GL_ENUM(GL_PRIMITIVES_GENERATED) /* 0x8C87 */ GL_ENUM(GL_PRIMITIVES_GENERATED_EXT) /* 0x8C87 */ GL_ENUM(GL_PRIMITIVES_GENERATED_NV) /* 0x8C88 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN) /* 0x8C88 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT) /* 0x8C88 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV) /* 0x8C89 */ GL_ENUM(GL_RASTERIZER_DISCARD) /* 0x8C89 */ GL_ENUM(GL_RASTERIZER_DISCARD_EXT) /* 0x8C89 */ GL_ENUM(GL_RASTERIZER_DISCARD_NV) /* 0x8C8A */ GL_ENUM(GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS) /* 0x8C8A */ GL_ENUM(GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT) /* 0x8C8A */ GL_ENUM(GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV) /* 0x8C8B */ GL_ENUM(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS) /* 0x8C8B */ GL_ENUM(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT) /* 0x8C8B */ GL_ENUM(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV) /* 0x8C8C */ GL_ENUM(GL_INTERLEAVED_ATTRIBS) /* 0x8C8C */ GL_ENUM(GL_INTERLEAVED_ATTRIBS_EXT) /* 0x8C8C */ GL_ENUM(GL_INTERLEAVED_ATTRIBS_NV) /* 0x8C8D */ GL_ENUM(GL_SEPARATE_ATTRIBS) /* 0x8C8D */ GL_ENUM(GL_SEPARATE_ATTRIBS_EXT) /* 0x8C8D */ GL_ENUM(GL_SEPARATE_ATTRIBS_NV) /* 0x8C8E */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER) /* 0x8C8E */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_EXT) /* 0x8C8E */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_NV) /* 0x8C8F */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_BINDING) /* 0x8C8F */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT) /* 0x8C8F */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV) /* 0x8CA0 */ GL_ENUM(GL_POINT_SPRITE_COORD_ORIGIN) /* 0x8CA1 */ GL_ENUM(GL_LOWER_LEFT) /* 0x8CA2 */ GL_ENUM(GL_UPPER_LEFT) /* 0x8CA3 */ GL_ENUM(GL_STENCIL_BACK_REF) /* 0x8CA4 */ GL_ENUM(GL_STENCIL_BACK_VALUE_MASK) /* 0x8CA5 */ GL_ENUM(GL_STENCIL_BACK_WRITEMASK) /* 0x8CA6 */ GL_ENUM(GL_DRAW_FRAMEBUFFER_BINDING) /* 0x8CA6 */ GL_ENUM(GL_DRAW_FRAMEBUFFER_BINDING_EXT) /* 0x8CA6 */ GL_ENUM(GL_FRAMEBUFFER_BINDING) /* 0x8CA6 */ GL_ENUM(GL_FRAMEBUFFER_BINDING_EXT) /* 0x8CA7 */ GL_ENUM(GL_RENDERBUFFER_BINDING) /* 0x8CA7 */ GL_ENUM(GL_RENDERBUFFER_BINDING_EXT) /* 0x8CA8 */ GL_ENUM(GL_READ_FRAMEBUFFER) /* 0x8CA8 */ GL_ENUM(GL_READ_FRAMEBUFFER_EXT) /* 0x8CA9 */ GL_ENUM(GL_DRAW_FRAMEBUFFER) /* 0x8CA9 */ GL_ENUM(GL_DRAW_FRAMEBUFFER_EXT) /* 0x8CAA */ GL_ENUM(GL_READ_FRAMEBUFFER_BINDING) /* 0x8CAA */ GL_ENUM(GL_READ_FRAMEBUFFER_BINDING_EXT) /* 0x8CAB */ GL_ENUM(GL_RENDERBUFFER_COVERAGE_SAMPLES_NV) /* 0x8CAB */ GL_ENUM(GL_RENDERBUFFER_SAMPLES) /* 0x8CAB */ GL_ENUM(GL_RENDERBUFFER_SAMPLES_EXT) /* 0x8CAC */ GL_ENUM(GL_DEPTH_COMPONENT32F) /* 0x8CAD */ GL_ENUM(GL_DEPTH32F_STENCIL8) /* 0x8CD0 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) /* 0x8CD0 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT) /* 0x8CD1 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) /* 0x8CD1 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT) /* 0x8CD2 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL) /* 0x8CD2 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT) /* 0x8CD3 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE) /* 0x8CD3 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT) /* 0x8CD4 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT) /* 0x8CD4 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER) /* 0x8CD4 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT) /* 0x8CD5 */ GL_ENUM(GL_FRAMEBUFFER_COMPLETE) /* 0x8CD5 */ GL_ENUM(GL_FRAMEBUFFER_COMPLETE_EXT) /* 0x8CD6 */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT) /* 0x8CD6 */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT) /* 0x8CD7 */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT) /* 0x8CD7 */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT) /* 0x8CD9 */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT) /* 0x8CDA */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT) /* 0x8CDB */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER) /* 0x8CDB */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT) /* 0x8CDC */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER) /* 0x8CDC */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT) /* 0x8CDD */ GL_ENUM(GL_FRAMEBUFFER_UNSUPPORTED) /* 0x8CDD */ GL_ENUM(GL_FRAMEBUFFER_UNSUPPORTED_EXT) /* 0x8CDF */ GL_ENUM(GL_MAX_COLOR_ATTACHMENTS) /* 0x8CDF */ GL_ENUM(GL_MAX_COLOR_ATTACHMENTS_EXT) /* 0x8CE0 */ GL_ENUM(GL_COLOR_ATTACHMENT0) /* 0x8CE0 */ GL_ENUM(GL_COLOR_ATTACHMENT0_EXT) /* 0x8CE1 */ GL_ENUM(GL_COLOR_ATTACHMENT1) /* 0x8CE1 */ GL_ENUM(GL_COLOR_ATTACHMENT1_EXT) /* 0x8CE2 */ GL_ENUM(GL_COLOR_ATTACHMENT2) /* 0x8CE2 */ GL_ENUM(GL_COLOR_ATTACHMENT2_EXT) /* 0x8CE3 */ GL_ENUM(GL_COLOR_ATTACHMENT3) /* 0x8CE3 */ GL_ENUM(GL_COLOR_ATTACHMENT3_EXT) /* 0x8CE4 */ GL_ENUM(GL_COLOR_ATTACHMENT4) /* 0x8CE4 */ GL_ENUM(GL_COLOR_ATTACHMENT4_EXT) /* 0x8CE5 */ GL_ENUM(GL_COLOR_ATTACHMENT5) /* 0x8CE5 */ GL_ENUM(GL_COLOR_ATTACHMENT5_EXT) /* 0x8CE6 */ GL_ENUM(GL_COLOR_ATTACHMENT6) /* 0x8CE6 */ GL_ENUM(GL_COLOR_ATTACHMENT6_EXT) /* 0x8CE7 */ GL_ENUM(GL_COLOR_ATTACHMENT7) /* 0x8CE7 */ GL_ENUM(GL_COLOR_ATTACHMENT7_EXT) /* 0x8CE8 */ GL_ENUM(GL_COLOR_ATTACHMENT8) /* 0x8CE8 */ GL_ENUM(GL_COLOR_ATTACHMENT8_EXT) /* 0x8CE9 */ GL_ENUM(GL_COLOR_ATTACHMENT9) /* 0x8CE9 */ GL_ENUM(GL_COLOR_ATTACHMENT9_EXT) /* 0x8CEA */ GL_ENUM(GL_COLOR_ATTACHMENT10) /* 0x8CEA */ GL_ENUM(GL_COLOR_ATTACHMENT10_EXT) /* 0x8CEB */ GL_ENUM(GL_COLOR_ATTACHMENT11) /* 0x8CEB */ GL_ENUM(GL_COLOR_ATTACHMENT11_EXT) /* 0x8CEC */ GL_ENUM(GL_COLOR_ATTACHMENT12) /* 0x8CEC */ GL_ENUM(GL_COLOR_ATTACHMENT12_EXT) /* 0x8CED */ GL_ENUM(GL_COLOR_ATTACHMENT13) /* 0x8CED */ GL_ENUM(GL_COLOR_ATTACHMENT13_EXT) /* 0x8CEE */ GL_ENUM(GL_COLOR_ATTACHMENT14) /* 0x8CEE */ GL_ENUM(GL_COLOR_ATTACHMENT14_EXT) /* 0x8CEF */ GL_ENUM(GL_COLOR_ATTACHMENT15) /* 0x8CEF */ GL_ENUM(GL_COLOR_ATTACHMENT15_EXT) /* 0x8CF0 */ GL_ENUM(GL_COLOR_ATTACHMENT16) /* 0x8CF1 */ GL_ENUM(GL_COLOR_ATTACHMENT17) /* 0x8CF2 */ GL_ENUM(GL_COLOR_ATTACHMENT18) /* 0x8CF3 */ GL_ENUM(GL_COLOR_ATTACHMENT19) /* 0x8CF4 */ GL_ENUM(GL_COLOR_ATTACHMENT20) /* 0x8CF5 */ GL_ENUM(GL_COLOR_ATTACHMENT21) /* 0x8CF6 */ GL_ENUM(GL_COLOR_ATTACHMENT22) /* 0x8CF7 */ GL_ENUM(GL_COLOR_ATTACHMENT23) /* 0x8CF8 */ GL_ENUM(GL_COLOR_ATTACHMENT24) /* 0x8CF9 */ GL_ENUM(GL_COLOR_ATTACHMENT25) /* 0x8CFA */ GL_ENUM(GL_COLOR_ATTACHMENT26) /* 0x8CFB */ GL_ENUM(GL_COLOR_ATTACHMENT27) /* 0x8CFC */ GL_ENUM(GL_COLOR_ATTACHMENT28) /* 0x8CFD */ GL_ENUM(GL_COLOR_ATTACHMENT29) /* 0x8CFE */ GL_ENUM(GL_COLOR_ATTACHMENT30) /* 0x8CFF */ GL_ENUM(GL_COLOR_ATTACHMENT31) /* 0x8D00 */ GL_ENUM(GL_DEPTH_ATTACHMENT) /* 0x8D00 */ GL_ENUM(GL_DEPTH_ATTACHMENT_EXT) /* 0x8D20 */ GL_ENUM(GL_STENCIL_ATTACHMENT) /* 0x8D20 */ GL_ENUM(GL_STENCIL_ATTACHMENT_EXT) /* 0x8D40 */ GL_ENUM(GL_FRAMEBUFFER) /* 0x8D40 */ GL_ENUM(GL_FRAMEBUFFER_EXT) /* 0x8D41 */ GL_ENUM(GL_RENDERBUFFER) /* 0x8D41 */ GL_ENUM(GL_RENDERBUFFER_EXT) /* 0x8D42 */ GL_ENUM(GL_RENDERBUFFER_WIDTH) /* 0x8D42 */ GL_ENUM(GL_RENDERBUFFER_WIDTH_EXT) /* 0x8D43 */ GL_ENUM(GL_RENDERBUFFER_HEIGHT) /* 0x8D43 */ GL_ENUM(GL_RENDERBUFFER_HEIGHT_EXT) /* 0x8D44 */ GL_ENUM(GL_RENDERBUFFER_INTERNAL_FORMAT) /* 0x8D44 */ GL_ENUM(GL_RENDERBUFFER_INTERNAL_FORMAT_EXT) /* 0x8D46 */ GL_ENUM(GL_STENCIL_INDEX1) /* 0x8D46 */ GL_ENUM(GL_STENCIL_INDEX1_EXT) /* 0x8D47 */ GL_ENUM(GL_STENCIL_INDEX4) /* 0x8D47 */ GL_ENUM(GL_STENCIL_INDEX4_EXT) /* 0x8D48 */ GL_ENUM(GL_STENCIL_INDEX8) /* 0x8D48 */ GL_ENUM(GL_STENCIL_INDEX8_EXT) /* 0x8D49 */ GL_ENUM(GL_STENCIL_INDEX16) /* 0x8D49 */ GL_ENUM(GL_STENCIL_INDEX16_EXT) /* 0x8D50 */ GL_ENUM(GL_RENDERBUFFER_RED_SIZE) /* 0x8D50 */ GL_ENUM(GL_RENDERBUFFER_RED_SIZE_EXT) /* 0x8D51 */ GL_ENUM(GL_RENDERBUFFER_GREEN_SIZE) /* 0x8D51 */ GL_ENUM(GL_RENDERBUFFER_GREEN_SIZE_EXT) /* 0x8D52 */ GL_ENUM(GL_RENDERBUFFER_BLUE_SIZE) /* 0x8D52 */ GL_ENUM(GL_RENDERBUFFER_BLUE_SIZE_EXT) /* 0x8D53 */ GL_ENUM(GL_RENDERBUFFER_ALPHA_SIZE) /* 0x8D53 */ GL_ENUM(GL_RENDERBUFFER_ALPHA_SIZE_EXT) /* 0x8D54 */ GL_ENUM(GL_RENDERBUFFER_DEPTH_SIZE) /* 0x8D54 */ GL_ENUM(GL_RENDERBUFFER_DEPTH_SIZE_EXT) /* 0x8D55 */ GL_ENUM(GL_RENDERBUFFER_STENCIL_SIZE) /* 0x8D55 */ GL_ENUM(GL_RENDERBUFFER_STENCIL_SIZE_EXT) /* 0x8D56 */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE) /* 0x8D56 */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT) /* 0x8D57 */ GL_ENUM(GL_MAX_SAMPLES) /* 0x8D57 */ GL_ENUM(GL_MAX_SAMPLES_EXT) /* 0x8D62 */ GL_ENUM(GL_RGB565) /* 0x8D69 */ GL_ENUM(GL_PRIMITIVE_RESTART_FIXED_INDEX) /* 0x8D6A */ GL_ENUM(GL_ANY_SAMPLES_PASSED_CONSERVATIVE) /* 0x8D6B */ GL_ENUM(GL_MAX_ELEMENT_INDEX) /* 0x8D70 */ GL_ENUM(GL_RGBA32UI) /* 0x8D70 */ GL_ENUM(GL_RGBA32UI_EXT) /* 0x8D71 */ GL_ENUM(GL_RGB32UI) /* 0x8D71 */ GL_ENUM(GL_RGB32UI_EXT) /* 0x8D72 */ GL_ENUM(GL_ALPHA32UI_EXT) /* 0x8D73 */ GL_ENUM(GL_INTENSITY32UI_EXT) /* 0x8D74 */ GL_ENUM(GL_LUMINANCE32UI_EXT) /* 0x8D75 */ GL_ENUM(GL_LUMINANCE_ALPHA32UI_EXT) /* 0x8D76 */ GL_ENUM(GL_RGBA16UI) /* 0x8D76 */ GL_ENUM(GL_RGBA16UI_EXT) /* 0x8D77 */ GL_ENUM(GL_RGB16UI) /* 0x8D77 */ GL_ENUM(GL_RGB16UI_EXT) /* 0x8D78 */ GL_ENUM(GL_ALPHA16UI_EXT) /* 0x8D79 */ GL_ENUM(GL_INTENSITY16UI_EXT) /* 0x8D7A */ GL_ENUM(GL_LUMINANCE16UI_EXT) /* 0x8D7B */ GL_ENUM(GL_LUMINANCE_ALPHA16UI_EXT) /* 0x8D7C */ GL_ENUM(GL_RGBA8UI) /* 0x8D7C */ GL_ENUM(GL_RGBA8UI_EXT) /* 0x8D7D */ GL_ENUM(GL_RGB8UI) /* 0x8D7D */ GL_ENUM(GL_RGB8UI_EXT) /* 0x8D7E */ GL_ENUM(GL_ALPHA8UI_EXT) /* 0x8D7F */ GL_ENUM(GL_INTENSITY8UI_EXT) /* 0x8D80 */ GL_ENUM(GL_LUMINANCE8UI_EXT) /* 0x8D81 */ GL_ENUM(GL_LUMINANCE_ALPHA8UI_EXT) /* 0x8D82 */ GL_ENUM(GL_RGBA32I) /* 0x8D82 */ GL_ENUM(GL_RGBA32I_EXT) /* 0x8D83 */ GL_ENUM(GL_RGB32I) /* 0x8D83 */ GL_ENUM(GL_RGB32I_EXT) /* 0x8D84 */ GL_ENUM(GL_ALPHA32I_EXT) /* 0x8D85 */ GL_ENUM(GL_INTENSITY32I_EXT) /* 0x8D86 */ GL_ENUM(GL_LUMINANCE32I_EXT) /* 0x8D87 */ GL_ENUM(GL_LUMINANCE_ALPHA32I_EXT) /* 0x8D88 */ GL_ENUM(GL_RGBA16I) /* 0x8D88 */ GL_ENUM(GL_RGBA16I_EXT) /* 0x8D89 */ GL_ENUM(GL_RGB16I) /* 0x8D89 */ GL_ENUM(GL_RGB16I_EXT) /* 0x8D8A */ GL_ENUM(GL_ALPHA16I_EXT) /* 0x8D8B */ GL_ENUM(GL_INTENSITY16I_EXT) /* 0x8D8C */ GL_ENUM(GL_LUMINANCE16I_EXT) /* 0x8D8D */ GL_ENUM(GL_LUMINANCE_ALPHA16I_EXT) /* 0x8D8E */ GL_ENUM(GL_RGBA8I) /* 0x8D8E */ GL_ENUM(GL_RGBA8I_EXT) /* 0x8D8F */ GL_ENUM(GL_RGB8I) /* 0x8D8F */ GL_ENUM(GL_RGB8I_EXT) /* 0x8D90 */ GL_ENUM(GL_ALPHA8I_EXT) /* 0x8D91 */ GL_ENUM(GL_INTENSITY8I_EXT) /* 0x8D92 */ GL_ENUM(GL_LUMINANCE8I_EXT) /* 0x8D93 */ GL_ENUM(GL_LUMINANCE_ALPHA8I_EXT) /* 0x8D94 */ GL_ENUM(GL_RED_INTEGER) /* 0x8D94 */ GL_ENUM(GL_RED_INTEGER_EXT) /* 0x8D95 */ GL_ENUM(GL_GREEN_INTEGER) /* 0x8D95 */ GL_ENUM(GL_GREEN_INTEGER_EXT) /* 0x8D96 */ GL_ENUM(GL_BLUE_INTEGER) /* 0x8D96 */ GL_ENUM(GL_BLUE_INTEGER_EXT) /* 0x8D97 */ GL_ENUM(GL_ALPHA_INTEGER) /* 0x8D97 */ GL_ENUM(GL_ALPHA_INTEGER_EXT) /* 0x8D98 */ GL_ENUM(GL_RGB_INTEGER) /* 0x8D98 */ GL_ENUM(GL_RGB_INTEGER_EXT) /* 0x8D99 */ GL_ENUM(GL_RGBA_INTEGER) /* 0x8D99 */ GL_ENUM(GL_RGBA_INTEGER_EXT) /* 0x8D9A */ GL_ENUM(GL_BGR_INTEGER) /* 0x8D9A */ GL_ENUM(GL_BGR_INTEGER_EXT) /* 0x8D9B */ GL_ENUM(GL_BGRA_INTEGER) /* 0x8D9B */ GL_ENUM(GL_BGRA_INTEGER_EXT) /* 0x8D9C */ GL_ENUM(GL_LUMINANCE_INTEGER_EXT) /* 0x8D9D */ GL_ENUM(GL_LUMINANCE_ALPHA_INTEGER_EXT) /* 0x8D9E */ GL_ENUM(GL_RGBA_INTEGER_MODE_EXT) /* 0x8D9F */ GL_ENUM(GL_INT_2_10_10_10_REV) /* 0x8DA0 */ GL_ENUM(GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV) /* 0x8DA1 */ GL_ENUM(GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV) /* 0x8DA2 */ GL_ENUM(GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV) /* 0x8DA3 */ GL_ENUM(GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV) /* 0x8DA4 */ GL_ENUM(GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV) /* 0x8DA5 */ GL_ENUM(GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV) /* 0x8DA6 */ GL_ENUM(GL_MAX_PROGRAM_GENERIC_RESULTS_NV) /* 0x8DA7 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_LAYERED) /* 0x8DA7 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB) /* 0x8DA7 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT) /* 0x8DA8 */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS) /* 0x8DA8 */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB) /* 0x8DA8 */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT) /* 0x8DA9 */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB) /* 0x8DA9 */ GL_ENUM(GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT) /* 0x8DAA */ GL_ENUM(GL_LAYER_NV) /* 0x8DAB */ GL_ENUM(GL_DEPTH_COMPONENT32F_NV) /* 0x8DAC */ GL_ENUM(GL_DEPTH32F_STENCIL8_NV) /* 0x8DAD */ GL_ENUM(GL_FLOAT_32_UNSIGNED_INT_24_8_REV) /* 0x8DAD */ GL_ENUM(GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV) /* 0x8DAE */ GL_ENUM(GL_SHADER_INCLUDE_ARB) /* 0x8DAF */ GL_ENUM(GL_DEPTH_BUFFER_FLOAT_MODE_NV) /* 0x8DB9 */ GL_ENUM(GL_FRAMEBUFFER_SRGB) /* 0x8DB9 */ GL_ENUM(GL_FRAMEBUFFER_SRGB_EXT) /* 0x8DBA */ GL_ENUM(GL_FRAMEBUFFER_SRGB_CAPABLE_EXT) /* 0x8DBB */ GL_ENUM(GL_COMPRESSED_RED_RGTC1) /* 0x8DBB */ GL_ENUM(GL_COMPRESSED_RED_RGTC1_EXT) /* 0x8DBC */ GL_ENUM(GL_COMPRESSED_SIGNED_RED_RGTC1) /* 0x8DBC */ GL_ENUM(GL_COMPRESSED_SIGNED_RED_RGTC1_EXT) /* 0x8DBD */ GL_ENUM(GL_COMPRESSED_RED_GREEN_RGTC2_EXT) /* 0x8DBD */ GL_ENUM(GL_COMPRESSED_RG_RGTC2) /* 0x8DBE */ GL_ENUM(GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT) /* 0x8DBE */ GL_ENUM(GL_COMPRESSED_SIGNED_RG_RGTC2) /* 0x8DC0 */ GL_ENUM(GL_SAMPLER_1D_ARRAY) /* 0x8DC0 */ GL_ENUM(GL_SAMPLER_1D_ARRAY_EXT) /* 0x8DC1 */ GL_ENUM(GL_SAMPLER_2D_ARRAY) /* 0x8DC1 */ GL_ENUM(GL_SAMPLER_2D_ARRAY_EXT) /* 0x8DC2 */ GL_ENUM(GL_SAMPLER_BUFFER) /* 0x8DC2 */ GL_ENUM(GL_SAMPLER_BUFFER_EXT) /* 0x8DC3 */ GL_ENUM(GL_SAMPLER_1D_ARRAY_SHADOW) /* 0x8DC3 */ GL_ENUM(GL_SAMPLER_1D_ARRAY_SHADOW_EXT) /* 0x8DC4 */ GL_ENUM(GL_SAMPLER_2D_ARRAY_SHADOW) /* 0x8DC4 */ GL_ENUM(GL_SAMPLER_2D_ARRAY_SHADOW_EXT) /* 0x8DC5 */ GL_ENUM(GL_SAMPLER_CUBE_SHADOW) /* 0x8DC5 */ GL_ENUM(GL_SAMPLER_CUBE_SHADOW_EXT) /* 0x8DC6 */ GL_ENUM(GL_UNSIGNED_INT_VEC2) /* 0x8DC6 */ GL_ENUM(GL_UNSIGNED_INT_VEC2_EXT) /* 0x8DC7 */ GL_ENUM(GL_UNSIGNED_INT_VEC3) /* 0x8DC7 */ GL_ENUM(GL_UNSIGNED_INT_VEC3_EXT) /* 0x8DC8 */ GL_ENUM(GL_UNSIGNED_INT_VEC4) /* 0x8DC8 */ GL_ENUM(GL_UNSIGNED_INT_VEC4_EXT) /* 0x8DC9 */ GL_ENUM(GL_INT_SAMPLER_1D) /* 0x8DC9 */ GL_ENUM(GL_INT_SAMPLER_1D_EXT) /* 0x8DCA */ GL_ENUM(GL_INT_SAMPLER_2D) /* 0x8DCA */ GL_ENUM(GL_INT_SAMPLER_2D_EXT) /* 0x8DCB */ GL_ENUM(GL_INT_SAMPLER_3D) /* 0x8DCB */ GL_ENUM(GL_INT_SAMPLER_3D_EXT) /* 0x8DCC */ GL_ENUM(GL_INT_SAMPLER_CUBE) /* 0x8DCC */ GL_ENUM(GL_INT_SAMPLER_CUBE_EXT) /* 0x8DCD */ GL_ENUM(GL_INT_SAMPLER_2D_RECT) /* 0x8DCD */ GL_ENUM(GL_INT_SAMPLER_2D_RECT_EXT) /* 0x8DCE */ GL_ENUM(GL_INT_SAMPLER_1D_ARRAY) /* 0x8DCE */ GL_ENUM(GL_INT_SAMPLER_1D_ARRAY_EXT) /* 0x8DCF */ GL_ENUM(GL_INT_SAMPLER_2D_ARRAY) /* 0x8DCF */ GL_ENUM(GL_INT_SAMPLER_2D_ARRAY_EXT) /* 0x8DD0 */ GL_ENUM(GL_INT_SAMPLER_BUFFER) /* 0x8DD0 */ GL_ENUM(GL_INT_SAMPLER_BUFFER_EXT) /* 0x8DD1 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_1D) /* 0x8DD1 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_1D_EXT) /* 0x8DD2 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_2D) /* 0x8DD2 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_2D_EXT) /* 0x8DD3 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_3D) /* 0x8DD3 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_3D_EXT) /* 0x8DD4 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_CUBE) /* 0x8DD4 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_CUBE_EXT) /* 0x8DD5 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_2D_RECT) /* 0x8DD5 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT) /* 0x8DD6 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_1D_ARRAY) /* 0x8DD6 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT) /* 0x8DD7 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_2D_ARRAY) /* 0x8DD7 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT) /* 0x8DD8 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_BUFFER) /* 0x8DD8 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT) /* 0x8DD9 */ GL_ENUM(GL_GEOMETRY_SHADER) /* 0x8DD9 */ GL_ENUM(GL_GEOMETRY_SHADER_ARB) /* 0x8DD9 */ GL_ENUM(GL_GEOMETRY_SHADER_EXT) /* 0x8DDA */ GL_ENUM(GL_GEOMETRY_VERTICES_OUT_ARB) /* 0x8DDA */ GL_ENUM(GL_GEOMETRY_VERTICES_OUT_EXT) /* 0x8DDB */ GL_ENUM(GL_GEOMETRY_INPUT_TYPE_ARB) /* 0x8DDB */ GL_ENUM(GL_GEOMETRY_INPUT_TYPE_EXT) /* 0x8DDC */ GL_ENUM(GL_GEOMETRY_OUTPUT_TYPE_ARB) /* 0x8DDC */ GL_ENUM(GL_GEOMETRY_OUTPUT_TYPE_EXT) /* 0x8DDD */ GL_ENUM(GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB) /* 0x8DDD */ GL_ENUM(GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT) /* 0x8DDE */ GL_ENUM(GL_MAX_VERTEX_VARYING_COMPONENTS_ARB) /* 0x8DDE */ GL_ENUM(GL_MAX_VERTEX_VARYING_COMPONENTS_EXT) /* 0x8DDF */ GL_ENUM(GL_MAX_GEOMETRY_UNIFORM_COMPONENTS) /* 0x8DDF */ GL_ENUM(GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB) /* 0x8DDF */ GL_ENUM(GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT) /* 0x8DE0 */ GL_ENUM(GL_MAX_GEOMETRY_OUTPUT_VERTICES) /* 0x8DE0 */ GL_ENUM(GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB) /* 0x8DE0 */ GL_ENUM(GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT) /* 0x8DE1 */ GL_ENUM(GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS) /* 0x8DE1 */ GL_ENUM(GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB) /* 0x8DE1 */ GL_ENUM(GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT) /* 0x8DE2 */ GL_ENUM(GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT) /* 0x8DE3 */ GL_ENUM(GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT) /* 0x8DE4 */ GL_ENUM(GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT) /* 0x8DE5 */ GL_ENUM(GL_ACTIVE_SUBROUTINES) /* 0x8DE6 */ GL_ENUM(GL_ACTIVE_SUBROUTINE_UNIFORMS) /* 0x8DE7 */ GL_ENUM(GL_MAX_SUBROUTINES) /* 0x8DE8 */ GL_ENUM(GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS) /* 0x8DE9 */ GL_ENUM(GL_NAMED_STRING_LENGTH_ARB) /* 0x8DEA */ GL_ENUM(GL_NAMED_STRING_TYPE_ARB) /* 0x8DED */ GL_ENUM(GL_MAX_BINDABLE_UNIFORM_SIZE_EXT) /* 0x8DEE */ GL_ENUM(GL_UNIFORM_BUFFER_EXT) /* 0x8DEF */ GL_ENUM(GL_UNIFORM_BUFFER_BINDING_EXT) /* 0x8DF0 */ GL_ENUM(GL_LOW_FLOAT) /* 0x8DF1 */ GL_ENUM(GL_MEDIUM_FLOAT) /* 0x8DF2 */ GL_ENUM(GL_HIGH_FLOAT) /* 0x8DF3 */ GL_ENUM(GL_LOW_INT) /* 0x8DF4 */ GL_ENUM(GL_MEDIUM_INT) /* 0x8DF5 */ GL_ENUM(GL_HIGH_INT) /* 0x8DF8 */ GL_ENUM(GL_SHADER_BINARY_FORMATS) /* 0x8DF9 */ GL_ENUM(GL_NUM_SHADER_BINARY_FORMATS) /* 0x8DFA */ GL_ENUM(GL_SHADER_COMPILER) /* 0x8DFB */ GL_ENUM(GL_MAX_VERTEX_UNIFORM_VECTORS) /* 0x8DFC */ GL_ENUM(GL_MAX_VARYING_VECTORS) /* 0x8DFD */ GL_ENUM(GL_MAX_FRAGMENT_UNIFORM_VECTORS) /* 0x8E10 */ GL_ENUM(GL_RENDERBUFFER_COLOR_SAMPLES_NV) /* 0x8E11 */ GL_ENUM(GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV) /* 0x8E12 */ GL_ENUM(GL_MULTISAMPLE_COVERAGE_MODES_NV) /* 0x8E13 */ GL_ENUM(GL_QUERY_WAIT) /* 0x8E13 */ GL_ENUM(GL_QUERY_WAIT_NV) /* 0x8E14 */ GL_ENUM(GL_QUERY_NO_WAIT) /* 0x8E14 */ GL_ENUM(GL_QUERY_NO_WAIT_NV) /* 0x8E15 */ GL_ENUM(GL_QUERY_BY_REGION_WAIT) /* 0x8E15 */ GL_ENUM(GL_QUERY_BY_REGION_WAIT_NV) /* 0x8E16 */ GL_ENUM(GL_QUERY_BY_REGION_NO_WAIT) /* 0x8E16 */ GL_ENUM(GL_QUERY_BY_REGION_NO_WAIT_NV) /* 0x8E17 */ GL_ENUM(GL_QUERY_WAIT_INVERTED) /* 0x8E18 */ GL_ENUM(GL_QUERY_NO_WAIT_INVERTED) /* 0x8E19 */ GL_ENUM(GL_QUERY_BY_REGION_WAIT_INVERTED) /* 0x8E1A */ GL_ENUM(GL_QUERY_BY_REGION_NO_WAIT_INVERTED) /* 0x8E1B */ GL_ENUM(GL_POLYGON_OFFSET_CLAMP_EXT) /* 0x8E1E */ GL_ENUM(GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS) /* 0x8E1F */ GL_ENUM(GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS) /* 0x8E20 */ GL_ENUM(GL_COLOR_SAMPLES_NV) /* 0x8E22 */ GL_ENUM(GL_TRANSFORM_FEEDBACK) /* 0x8E22 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_NV) /* 0x8E23 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED) /* 0x8E23 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV) /* 0x8E23 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_PAUSED) /* 0x8E24 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_ACTIVE) /* 0x8E24 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE) /* 0x8E24 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV) /* 0x8E25 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BINDING) /* 0x8E25 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BINDING_NV) /* 0x8E26 */ GL_ENUM(GL_FRAME_NV) /* 0x8E27 */ GL_ENUM(GL_FIELDS_NV) /* 0x8E28 */ GL_ENUM(GL_CURRENT_TIME_NV) /* 0x8E28 */ GL_ENUM(GL_TIMESTAMP) /* 0x8E29 */ GL_ENUM(GL_NUM_FILL_STREAMS_NV) /* 0x8E2A */ GL_ENUM(GL_PRESENT_TIME_NV) /* 0x8E2B */ GL_ENUM(GL_PRESENT_DURATION_NV) /* 0x8E2D */ GL_ENUM(GL_PROGRAM_MATRIX_EXT) /* 0x8E2E */ GL_ENUM(GL_TRANSPOSE_PROGRAM_MATRIX_EXT) /* 0x8E2F */ GL_ENUM(GL_PROGRAM_MATRIX_STACK_DEPTH_EXT) /* 0x8E42 */ GL_ENUM(GL_TEXTURE_SWIZZLE_R) /* 0x8E42 */ GL_ENUM(GL_TEXTURE_SWIZZLE_R_EXT) /* 0x8E43 */ GL_ENUM(GL_TEXTURE_SWIZZLE_G) /* 0x8E43 */ GL_ENUM(GL_TEXTURE_SWIZZLE_G_EXT) /* 0x8E44 */ GL_ENUM(GL_TEXTURE_SWIZZLE_B) /* 0x8E44 */ GL_ENUM(GL_TEXTURE_SWIZZLE_B_EXT) /* 0x8E45 */ GL_ENUM(GL_TEXTURE_SWIZZLE_A) /* 0x8E45 */ GL_ENUM(GL_TEXTURE_SWIZZLE_A_EXT) /* 0x8E46 */ GL_ENUM(GL_TEXTURE_SWIZZLE_RGBA) /* 0x8E46 */ GL_ENUM(GL_TEXTURE_SWIZZLE_RGBA_EXT) /* 0x8E47 */ GL_ENUM(GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS) /* 0x8E48 */ GL_ENUM(GL_ACTIVE_SUBROUTINE_MAX_LENGTH) /* 0x8E49 */ GL_ENUM(GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH) /* 0x8E4A */ GL_ENUM(GL_NUM_COMPATIBLE_SUBROUTINES) /* 0x8E4B */ GL_ENUM(GL_COMPATIBLE_SUBROUTINES) /* 0x8E4C */ GL_ENUM(GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION) /* 0x8E4C */ GL_ENUM(GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT) /* 0x8E4D */ GL_ENUM(GL_FIRST_VERTEX_CONVENTION) /* 0x8E4D */ GL_ENUM(GL_FIRST_VERTEX_CONVENTION_EXT) /* 0x8E4E */ GL_ENUM(GL_LAST_VERTEX_CONVENTION) /* 0x8E4E */ GL_ENUM(GL_LAST_VERTEX_CONVENTION_EXT) /* 0x8E4F */ GL_ENUM(GL_PROVOKING_VERTEX) /* 0x8E4F */ GL_ENUM(GL_PROVOKING_VERTEX_EXT) /* 0x8E50 */ GL_ENUM(GL_SAMPLE_LOCATION_NV) /* 0x8E50 */ GL_ENUM(GL_SAMPLE_POSITION) /* 0x8E50 */ GL_ENUM(GL_SAMPLE_POSITION_NV) /* 0x8E51 */ GL_ENUM(GL_SAMPLE_MASK) /* 0x8E51 */ GL_ENUM(GL_SAMPLE_MASK_NV) /* 0x8E52 */ GL_ENUM(GL_SAMPLE_MASK_VALUE) /* 0x8E52 */ GL_ENUM(GL_SAMPLE_MASK_VALUE_NV) /* 0x8E53 */ GL_ENUM(GL_TEXTURE_BINDING_RENDERBUFFER_NV) /* 0x8E54 */ GL_ENUM(GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV) /* 0x8E55 */ GL_ENUM(GL_TEXTURE_RENDERBUFFER_NV) /* 0x8E56 */ GL_ENUM(GL_SAMPLER_RENDERBUFFER_NV) /* 0x8E57 */ GL_ENUM(GL_INT_SAMPLER_RENDERBUFFER_NV) /* 0x8E58 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV) /* 0x8E59 */ GL_ENUM(GL_MAX_SAMPLE_MASK_WORDS) /* 0x8E59 */ GL_ENUM(GL_MAX_SAMPLE_MASK_WORDS_NV) /* 0x8E5A */ GL_ENUM(GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV) /* 0x8E5A */ GL_ENUM(GL_MAX_GEOMETRY_SHADER_INVOCATIONS) /* 0x8E5B */ GL_ENUM(GL_MIN_FRAGMENT_INTERPOLATION_OFFSET) /* 0x8E5B */ GL_ENUM(GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV) /* 0x8E5C */ GL_ENUM(GL_MAX_FRAGMENT_INTERPOLATION_OFFSET) /* 0x8E5C */ GL_ENUM(GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV) /* 0x8E5D */ GL_ENUM(GL_FRAGMENT_INTERPOLATION_OFFSET_BITS) /* 0x8E5D */ GL_ENUM(GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV) /* 0x8E5E */ GL_ENUM(GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET) /* 0x8E5E */ GL_ENUM(GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB) /* 0x8E5E */ GL_ENUM(GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV) /* 0x8E5F */ GL_ENUM(GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET) /* 0x8E5F */ GL_ENUM(GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB) /* 0x8E5F */ GL_ENUM(GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV) /* 0x8E70 */ GL_ENUM(GL_MAX_TRANSFORM_FEEDBACK_BUFFERS) /* 0x8E71 */ GL_ENUM(GL_MAX_VERTEX_STREAMS) /* 0x8E72 */ GL_ENUM(GL_PATCH_VERTICES) /* 0x8E73 */ GL_ENUM(GL_PATCH_DEFAULT_INNER_LEVEL) /* 0x8E74 */ GL_ENUM(GL_PATCH_DEFAULT_OUTER_LEVEL) /* 0x8E75 */ GL_ENUM(GL_TESS_CONTROL_OUTPUT_VERTICES) /* 0x8E76 */ GL_ENUM(GL_TESS_GEN_MODE) /* 0x8E77 */ GL_ENUM(GL_TESS_GEN_SPACING) /* 0x8E78 */ GL_ENUM(GL_TESS_GEN_VERTEX_ORDER) /* 0x8E79 */ GL_ENUM(GL_TESS_GEN_POINT_MODE) /* 0x8E7A */ GL_ENUM(GL_ISOLINES) /* 0x8E7B */ GL_ENUM(GL_FRACTIONAL_ODD) /* 0x8E7C */ GL_ENUM(GL_FRACTIONAL_EVEN) /* 0x8E7D */ GL_ENUM(GL_MAX_PATCH_VERTICES) /* 0x8E7E */ GL_ENUM(GL_MAX_TESS_GEN_LEVEL) /* 0x8E7F */ GL_ENUM(GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS) /* 0x8E80 */ GL_ENUM(GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS) /* 0x8E81 */ GL_ENUM(GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS) /* 0x8E82 */ GL_ENUM(GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS) /* 0x8E83 */ GL_ENUM(GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS) /* 0x8E84 */ GL_ENUM(GL_MAX_TESS_PATCH_COMPONENTS) /* 0x8E85 */ GL_ENUM(GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS) /* 0x8E86 */ GL_ENUM(GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS) /* 0x8E87 */ GL_ENUM(GL_TESS_EVALUATION_SHADER) /* 0x8E88 */ GL_ENUM(GL_TESS_CONTROL_SHADER) /* 0x8E89 */ GL_ENUM(GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS) /* 0x8E8A */ GL_ENUM(GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS) /* 0x8E8C */ GL_ENUM(GL_COMPRESSED_RGBA_BPTC_UNORM) /* 0x8E8C */ GL_ENUM(GL_COMPRESSED_RGBA_BPTC_UNORM_ARB) /* 0x8E8D */ GL_ENUM(GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM) /* 0x8E8D */ GL_ENUM(GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB) /* 0x8E8E */ GL_ENUM(GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT) /* 0x8E8E */ GL_ENUM(GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB) /* 0x8E8F */ GL_ENUM(GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT) /* 0x8E8F */ GL_ENUM(GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB) /* 0x8F1D */ GL_ENUM(GL_BUFFER_GPU_ADDRESS_NV) /* 0x8F1E */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV) /* 0x8F1F */ GL_ENUM(GL_ELEMENT_ARRAY_UNIFIED_NV) /* 0x8F20 */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV) /* 0x8F21 */ GL_ENUM(GL_VERTEX_ARRAY_ADDRESS_NV) /* 0x8F22 */ GL_ENUM(GL_NORMAL_ARRAY_ADDRESS_NV) /* 0x8F23 */ GL_ENUM(GL_COLOR_ARRAY_ADDRESS_NV) /* 0x8F24 */ GL_ENUM(GL_INDEX_ARRAY_ADDRESS_NV) /* 0x8F25 */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_ADDRESS_NV) /* 0x8F26 */ GL_ENUM(GL_EDGE_FLAG_ARRAY_ADDRESS_NV) /* 0x8F27 */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV) /* 0x8F28 */ GL_ENUM(GL_FOG_COORD_ARRAY_ADDRESS_NV) /* 0x8F29 */ GL_ENUM(GL_ELEMENT_ARRAY_ADDRESS_NV) /* 0x8F2A */ GL_ENUM(GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV) /* 0x8F2B */ GL_ENUM(GL_VERTEX_ARRAY_LENGTH_NV) /* 0x8F2C */ GL_ENUM(GL_NORMAL_ARRAY_LENGTH_NV) /* 0x8F2D */ GL_ENUM(GL_COLOR_ARRAY_LENGTH_NV) /* 0x8F2E */ GL_ENUM(GL_INDEX_ARRAY_LENGTH_NV) /* 0x8F2F */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_LENGTH_NV) /* 0x8F30 */ GL_ENUM(GL_EDGE_FLAG_ARRAY_LENGTH_NV) /* 0x8F31 */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_LENGTH_NV) /* 0x8F32 */ GL_ENUM(GL_FOG_COORD_ARRAY_LENGTH_NV) /* 0x8F33 */ GL_ENUM(GL_ELEMENT_ARRAY_LENGTH_NV) /* 0x8F34 */ GL_ENUM(GL_GPU_ADDRESS_NV) /* 0x8F35 */ GL_ENUM(GL_MAX_SHADER_BUFFER_ADDRESS_NV) /* 0x8F36 */ GL_ENUM(GL_COPY_READ_BUFFER) /* 0x8F36 */ GL_ENUM(GL_COPY_READ_BUFFER_BINDING) /* 0x8F37 */ GL_ENUM(GL_COPY_WRITE_BUFFER) /* 0x8F37 */ GL_ENUM(GL_COPY_WRITE_BUFFER_BINDING) /* 0x8F38 */ GL_ENUM(GL_MAX_IMAGE_UNITS) /* 0x8F38 */ GL_ENUM(GL_MAX_IMAGE_UNITS_EXT) /* 0x8F39 */ GL_ENUM(GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS) /* 0x8F39 */ GL_ENUM(GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT) /* 0x8F39 */ GL_ENUM(GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES) /* 0x8F3A */ GL_ENUM(GL_IMAGE_BINDING_NAME) /* 0x8F3A */ GL_ENUM(GL_IMAGE_BINDING_NAME_EXT) /* 0x8F3B */ GL_ENUM(GL_IMAGE_BINDING_LEVEL) /* 0x8F3B */ GL_ENUM(GL_IMAGE_BINDING_LEVEL_EXT) /* 0x8F3C */ GL_ENUM(GL_IMAGE_BINDING_LAYERED) /* 0x8F3C */ GL_ENUM(GL_IMAGE_BINDING_LAYERED_EXT) /* 0x8F3D */ GL_ENUM(GL_IMAGE_BINDING_LAYER) /* 0x8F3D */ GL_ENUM(GL_IMAGE_BINDING_LAYER_EXT) /* 0x8F3E */ GL_ENUM(GL_IMAGE_BINDING_ACCESS) /* 0x8F3E */ GL_ENUM(GL_IMAGE_BINDING_ACCESS_EXT) /* 0x8F3F */ GL_ENUM(GL_DRAW_INDIRECT_BUFFER) /* 0x8F40 */ GL_ENUM(GL_DRAW_INDIRECT_UNIFIED_NV) /* 0x8F41 */ GL_ENUM(GL_DRAW_INDIRECT_ADDRESS_NV) /* 0x8F42 */ GL_ENUM(GL_DRAW_INDIRECT_LENGTH_NV) /* 0x8F43 */ GL_ENUM(GL_DRAW_INDIRECT_BUFFER_BINDING) /* 0x8F44 */ GL_ENUM(GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV) /* 0x8F45 */ GL_ENUM(GL_MAX_PROGRAM_SUBROUTINE_NUM_NV) /* 0x8F46 */ GL_ENUM(GL_DOUBLE_MAT2) /* 0x8F46 */ GL_ENUM(GL_DOUBLE_MAT2_EXT) /* 0x8F47 */ GL_ENUM(GL_DOUBLE_MAT3) /* 0x8F47 */ GL_ENUM(GL_DOUBLE_MAT3_EXT) /* 0x8F48 */ GL_ENUM(GL_DOUBLE_MAT4) /* 0x8F48 */ GL_ENUM(GL_DOUBLE_MAT4_EXT) /* 0x8F49 */ GL_ENUM(GL_DOUBLE_MAT2x3) /* 0x8F49 */ GL_ENUM(GL_DOUBLE_MAT2x3_EXT) /* 0x8F4A */ GL_ENUM(GL_DOUBLE_MAT2x4) /* 0x8F4A */ GL_ENUM(GL_DOUBLE_MAT2x4_EXT) /* 0x8F4B */ GL_ENUM(GL_DOUBLE_MAT3x2) /* 0x8F4B */ GL_ENUM(GL_DOUBLE_MAT3x2_EXT) /* 0x8F4C */ GL_ENUM(GL_DOUBLE_MAT3x4) /* 0x8F4C */ GL_ENUM(GL_DOUBLE_MAT3x4_EXT) /* 0x8F4D */ GL_ENUM(GL_DOUBLE_MAT4x2) /* 0x8F4D */ GL_ENUM(GL_DOUBLE_MAT4x2_EXT) /* 0x8F4E */ GL_ENUM(GL_DOUBLE_MAT4x3) /* 0x8F4E */ GL_ENUM(GL_DOUBLE_MAT4x3_EXT) /* 0x8F4F */ GL_ENUM(GL_VERTEX_BINDING_BUFFER) /* 0x8F90 */ GL_ENUM(GL_RED_SNORM) /* 0x8F91 */ GL_ENUM(GL_RG_SNORM) /* 0x8F92 */ GL_ENUM(GL_RGB_SNORM) /* 0x8F93 */ GL_ENUM(GL_RGBA_SNORM) /* 0x8F94 */ GL_ENUM(GL_R8_SNORM) /* 0x8F95 */ GL_ENUM(GL_RG8_SNORM) /* 0x8F96 */ GL_ENUM(GL_RGB8_SNORM) /* 0x8F97 */ GL_ENUM(GL_RGBA8_SNORM) /* 0x8F98 */ GL_ENUM(GL_R16_SNORM) /* 0x8F99 */ GL_ENUM(GL_RG16_SNORM) /* 0x8F9A */ GL_ENUM(GL_RGB16_SNORM) /* 0x8F9B */ GL_ENUM(GL_RGBA16_SNORM) /* 0x8F9C */ GL_ENUM(GL_SIGNED_NORMALIZED) /* 0x8F9D */ GL_ENUM(GL_PRIMITIVE_RESTART) /* 0x8F9E */ GL_ENUM(GL_PRIMITIVE_RESTART_INDEX) /* 0x8F9F */ GL_ENUM(GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB) /* 0x8FE0 */ GL_ENUM(GL_INT8_NV) /* 0x8FE1 */ GL_ENUM(GL_INT8_VEC2_NV) /* 0x8FE2 */ GL_ENUM(GL_INT8_VEC3_NV) /* 0x8FE3 */ GL_ENUM(GL_INT8_VEC4_NV) /* 0x8FE4 */ GL_ENUM(GL_INT16_NV) /* 0x8FE5 */ GL_ENUM(GL_INT16_VEC2_NV) /* 0x8FE6 */ GL_ENUM(GL_INT16_VEC3_NV) /* 0x8FE7 */ GL_ENUM(GL_INT16_VEC4_NV) /* 0x8FE9 */ GL_ENUM(GL_INT64_VEC2_NV) /* 0x8FEA */ GL_ENUM(GL_INT64_VEC3_NV) /* 0x8FEB */ GL_ENUM(GL_INT64_VEC4_NV) /* 0x8FEC */ GL_ENUM(GL_UNSIGNED_INT8_NV) /* 0x8FED */ GL_ENUM(GL_UNSIGNED_INT8_VEC2_NV) /* 0x8FEE */ GL_ENUM(GL_UNSIGNED_INT8_VEC3_NV) /* 0x8FEF */ GL_ENUM(GL_UNSIGNED_INT8_VEC4_NV) /* 0x8FF0 */ GL_ENUM(GL_UNSIGNED_INT16_NV) /* 0x8FF1 */ GL_ENUM(GL_UNSIGNED_INT16_VEC2_NV) /* 0x8FF2 */ GL_ENUM(GL_UNSIGNED_INT16_VEC3_NV) /* 0x8FF3 */ GL_ENUM(GL_UNSIGNED_INT16_VEC4_NV) /* 0x8FF5 */ GL_ENUM(GL_UNSIGNED_INT64_VEC2_NV) /* 0x8FF6 */ GL_ENUM(GL_UNSIGNED_INT64_VEC3_NV) /* 0x8FF7 */ GL_ENUM(GL_UNSIGNED_INT64_VEC4_NV) /* 0x8FF8 */ GL_ENUM(GL_FLOAT16_NV) /* 0x8FF9 */ GL_ENUM(GL_FLOAT16_VEC2_NV) /* 0x8FFA */ GL_ENUM(GL_FLOAT16_VEC3_NV) /* 0x8FFB */ GL_ENUM(GL_FLOAT16_VEC4_NV) /* 0x8FFC */ GL_ENUM(GL_DOUBLE_VEC2) /* 0x8FFC */ GL_ENUM(GL_DOUBLE_VEC2_EXT) /* 0x8FFD */ GL_ENUM(GL_DOUBLE_VEC3) /* 0x8FFD */ GL_ENUM(GL_DOUBLE_VEC3_EXT) /* 0x8FFE */ GL_ENUM(GL_DOUBLE_VEC4) /* 0x8FFE */ GL_ENUM(GL_DOUBLE_VEC4_EXT) /* 0x9001 */ GL_ENUM(GL_SAMPLER_BUFFER_AMD) /* 0x9002 */ GL_ENUM(GL_INT_SAMPLER_BUFFER_AMD) /* 0x9003 */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD) /* 0x9004 */ GL_ENUM(GL_TESSELLATION_MODE_AMD) /* 0x9005 */ GL_ENUM(GL_TESSELLATION_FACTOR_AMD) /* 0x9006 */ GL_ENUM(GL_DISCRETE_AMD) /* 0x9007 */ GL_ENUM(GL_CONTINUOUS_AMD) /* 0x9009 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_ARRAY) /* 0x9009 */ GL_ENUM(GL_TEXTURE_CUBE_MAP_ARRAY_ARB) /* 0x900A */ GL_ENUM(GL_TEXTURE_BINDING_CUBE_MAP_ARRAY) /* 0x900A */ GL_ENUM(GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB) /* 0x900B */ GL_ENUM(GL_PROXY_TEXTURE_CUBE_MAP_ARRAY) /* 0x900B */ GL_ENUM(GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB) /* 0x900C */ GL_ENUM(GL_SAMPLER_CUBE_MAP_ARRAY) /* 0x900C */ GL_ENUM(GL_SAMPLER_CUBE_MAP_ARRAY_ARB) /* 0x900D */ GL_ENUM(GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW) /* 0x900D */ GL_ENUM(GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB) /* 0x900E */ GL_ENUM(GL_INT_SAMPLER_CUBE_MAP_ARRAY) /* 0x900E */ GL_ENUM(GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB) /* 0x900F */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY) /* 0x900F */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB) /* 0x9010 */ GL_ENUM(GL_ALPHA_SNORM) /* 0x9011 */ GL_ENUM(GL_LUMINANCE_SNORM) /* 0x9012 */ GL_ENUM(GL_LUMINANCE_ALPHA_SNORM) /* 0x9013 */ GL_ENUM(GL_INTENSITY_SNORM) /* 0x9014 */ GL_ENUM(GL_ALPHA8_SNORM) /* 0x9015 */ GL_ENUM(GL_LUMINANCE8_SNORM) /* 0x9016 */ GL_ENUM(GL_LUMINANCE8_ALPHA8_SNORM) /* 0x9017 */ GL_ENUM(GL_INTENSITY8_SNORM) /* 0x9018 */ GL_ENUM(GL_ALPHA16_SNORM) /* 0x9019 */ GL_ENUM(GL_LUMINANCE16_SNORM) /* 0x901A */ GL_ENUM(GL_LUMINANCE16_ALPHA16_SNORM) /* 0x901B */ GL_ENUM(GL_INTENSITY16_SNORM) /* 0x901C */ GL_ENUM(GL_FACTOR_MIN_AMD) /* 0x901D */ GL_ENUM(GL_FACTOR_MAX_AMD) /* 0x901E */ GL_ENUM(GL_DEPTH_CLAMP_NEAR_AMD) /* 0x901F */ GL_ENUM(GL_DEPTH_CLAMP_FAR_AMD) /* 0x9020 */ GL_ENUM(GL_VIDEO_BUFFER_NV) /* 0x9021 */ GL_ENUM(GL_VIDEO_BUFFER_BINDING_NV) /* 0x9022 */ GL_ENUM(GL_FIELD_UPPER_NV) /* 0x9023 */ GL_ENUM(GL_FIELD_LOWER_NV) /* 0x9024 */ GL_ENUM(GL_NUM_VIDEO_CAPTURE_STREAMS_NV) /* 0x9025 */ GL_ENUM(GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV) /* 0x9026 */ GL_ENUM(GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV) /* 0x9027 */ GL_ENUM(GL_LAST_VIDEO_CAPTURE_STATUS_NV) /* 0x9028 */ GL_ENUM(GL_VIDEO_BUFFER_PITCH_NV) /* 0x9029 */ GL_ENUM(GL_VIDEO_COLOR_CONVERSION_MATRIX_NV) /* 0x902A */ GL_ENUM(GL_VIDEO_COLOR_CONVERSION_MAX_NV) /* 0x902B */ GL_ENUM(GL_VIDEO_COLOR_CONVERSION_MIN_NV) /* 0x902C */ GL_ENUM(GL_VIDEO_COLOR_CONVERSION_OFFSET_NV) /* 0x902D */ GL_ENUM(GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV) /* 0x902E */ GL_ENUM(GL_PARTIAL_SUCCESS_NV) /* 0x902F */ GL_ENUM(GL_SUCCESS_NV) /* 0x9030 */ GL_ENUM(GL_FAILURE_NV) /* 0x9031 */ GL_ENUM(GL_YCBYCR8_422_NV) /* 0x9032 */ GL_ENUM(GL_YCBAYCR8A_4224_NV) /* 0x9033 */ GL_ENUM(GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV) /* 0x9034 */ GL_ENUM(GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV) /* 0x9035 */ GL_ENUM(GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV) /* 0x9036 */ GL_ENUM(GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV) /* 0x9037 */ GL_ENUM(GL_Z4Y12Z4CB12Z4CR12_444_NV) /* 0x9038 */ GL_ENUM(GL_VIDEO_CAPTURE_FRAME_WIDTH_NV) /* 0x9039 */ GL_ENUM(GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV) /* 0x903A */ GL_ENUM(GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV) /* 0x903B */ GL_ENUM(GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV) /* 0x903C */ GL_ENUM(GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV) /* 0x9045 */ GL_ENUM(GL_TEXTURE_COVERAGE_SAMPLES_NV) /* 0x9046 */ GL_ENUM(GL_TEXTURE_COLOR_SAMPLES_NV) /* 0x9047 */ GL_ENUM(GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX) /* 0x9048 */ GL_ENUM(GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX) /* 0x9049 */ GL_ENUM(GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX) /* 0x904A */ GL_ENUM(GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX) /* 0x904B */ GL_ENUM(GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX) /* 0x904C */ GL_ENUM(GL_IMAGE_1D) /* 0x904C */ GL_ENUM(GL_IMAGE_1D_EXT) /* 0x904D */ GL_ENUM(GL_IMAGE_2D) /* 0x904D */ GL_ENUM(GL_IMAGE_2D_EXT) /* 0x904E */ GL_ENUM(GL_IMAGE_3D) /* 0x904E */ GL_ENUM(GL_IMAGE_3D_EXT) /* 0x904F */ GL_ENUM(GL_IMAGE_2D_RECT) /* 0x904F */ GL_ENUM(GL_IMAGE_2D_RECT_EXT) /* 0x9050 */ GL_ENUM(GL_IMAGE_CUBE) /* 0x9050 */ GL_ENUM(GL_IMAGE_CUBE_EXT) /* 0x9051 */ GL_ENUM(GL_IMAGE_BUFFER) /* 0x9051 */ GL_ENUM(GL_IMAGE_BUFFER_EXT) /* 0x9052 */ GL_ENUM(GL_IMAGE_1D_ARRAY) /* 0x9052 */ GL_ENUM(GL_IMAGE_1D_ARRAY_EXT) /* 0x9053 */ GL_ENUM(GL_IMAGE_2D_ARRAY) /* 0x9053 */ GL_ENUM(GL_IMAGE_2D_ARRAY_EXT) /* 0x9054 */ GL_ENUM(GL_IMAGE_CUBE_MAP_ARRAY) /* 0x9054 */ GL_ENUM(GL_IMAGE_CUBE_MAP_ARRAY_EXT) /* 0x9055 */ GL_ENUM(GL_IMAGE_2D_MULTISAMPLE) /* 0x9055 */ GL_ENUM(GL_IMAGE_2D_MULTISAMPLE_EXT) /* 0x9056 */ GL_ENUM(GL_IMAGE_2D_MULTISAMPLE_ARRAY) /* 0x9056 */ GL_ENUM(GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT) /* 0x9057 */ GL_ENUM(GL_INT_IMAGE_1D) /* 0x9057 */ GL_ENUM(GL_INT_IMAGE_1D_EXT) /* 0x9058 */ GL_ENUM(GL_INT_IMAGE_2D) /* 0x9058 */ GL_ENUM(GL_INT_IMAGE_2D_EXT) /* 0x9059 */ GL_ENUM(GL_INT_IMAGE_3D) /* 0x9059 */ GL_ENUM(GL_INT_IMAGE_3D_EXT) /* 0x905A */ GL_ENUM(GL_INT_IMAGE_2D_RECT) /* 0x905A */ GL_ENUM(GL_INT_IMAGE_2D_RECT_EXT) /* 0x905B */ GL_ENUM(GL_INT_IMAGE_CUBE) /* 0x905B */ GL_ENUM(GL_INT_IMAGE_CUBE_EXT) /* 0x905C */ GL_ENUM(GL_INT_IMAGE_BUFFER) /* 0x905C */ GL_ENUM(GL_INT_IMAGE_BUFFER_EXT) /* 0x905D */ GL_ENUM(GL_INT_IMAGE_1D_ARRAY) /* 0x905D */ GL_ENUM(GL_INT_IMAGE_1D_ARRAY_EXT) /* 0x905E */ GL_ENUM(GL_INT_IMAGE_2D_ARRAY) /* 0x905E */ GL_ENUM(GL_INT_IMAGE_2D_ARRAY_EXT) /* 0x905F */ GL_ENUM(GL_INT_IMAGE_CUBE_MAP_ARRAY) /* 0x905F */ GL_ENUM(GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT) /* 0x9060 */ GL_ENUM(GL_INT_IMAGE_2D_MULTISAMPLE) /* 0x9060 */ GL_ENUM(GL_INT_IMAGE_2D_MULTISAMPLE_EXT) /* 0x9061 */ GL_ENUM(GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY) /* 0x9061 */ GL_ENUM(GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT) /* 0x9062 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_1D) /* 0x9062 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_1D_EXT) /* 0x9063 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_2D) /* 0x9063 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_2D_EXT) /* 0x9064 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_3D) /* 0x9064 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_3D_EXT) /* 0x9065 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_2D_RECT) /* 0x9065 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT) /* 0x9066 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_CUBE) /* 0x9066 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_CUBE_EXT) /* 0x9067 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_BUFFER) /* 0x9067 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_BUFFER_EXT) /* 0x9068 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_1D_ARRAY) /* 0x9068 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT) /* 0x9069 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_2D_ARRAY) /* 0x9069 */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT) /* 0x906A */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY) /* 0x906A */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT) /* 0x906B */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE) /* 0x906B */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT) /* 0x906C */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY) /* 0x906C */ GL_ENUM(GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT) /* 0x906D */ GL_ENUM(GL_MAX_IMAGE_SAMPLES) /* 0x906D */ GL_ENUM(GL_MAX_IMAGE_SAMPLES_EXT) /* 0x906E */ GL_ENUM(GL_IMAGE_BINDING_FORMAT) /* 0x906E */ GL_ENUM(GL_IMAGE_BINDING_FORMAT_EXT) /* 0x906F */ GL_ENUM(GL_RGB10_A2UI) /* 0x9070 */ GL_ENUM(GL_PATH_FORMAT_SVG_NV) /* 0x9071 */ GL_ENUM(GL_PATH_FORMAT_PS_NV) /* 0x9072 */ GL_ENUM(GL_STANDARD_FONT_NAME_NV) /* 0x9073 */ GL_ENUM(GL_SYSTEM_FONT_NAME_NV) /* 0x9074 */ GL_ENUM(GL_FILE_NAME_NV) /* 0x9075 */ GL_ENUM(GL_PATH_STROKE_WIDTH_NV) /* 0x9076 */ GL_ENUM(GL_PATH_END_CAPS_NV) /* 0x9077 */ GL_ENUM(GL_PATH_INITIAL_END_CAP_NV) /* 0x9078 */ GL_ENUM(GL_PATH_TERMINAL_END_CAP_NV) /* 0x9079 */ GL_ENUM(GL_PATH_JOIN_STYLE_NV) /* 0x907A */ GL_ENUM(GL_PATH_MITER_LIMIT_NV) /* 0x907B */ GL_ENUM(GL_PATH_DASH_CAPS_NV) /* 0x907C */ GL_ENUM(GL_PATH_INITIAL_DASH_CAP_NV) /* 0x907D */ GL_ENUM(GL_PATH_TERMINAL_DASH_CAP_NV) /* 0x907E */ GL_ENUM(GL_PATH_DASH_OFFSET_NV) /* 0x907F */ GL_ENUM(GL_PATH_CLIENT_LENGTH_NV) /* 0x9080 */ GL_ENUM(GL_PATH_FILL_MODE_NV) /* 0x9081 */ GL_ENUM(GL_PATH_FILL_MASK_NV) /* 0x9082 */ GL_ENUM(GL_PATH_FILL_COVER_MODE_NV) /* 0x9083 */ GL_ENUM(GL_PATH_STROKE_COVER_MODE_NV) /* 0x9084 */ GL_ENUM(GL_PATH_STROKE_MASK_NV) /* 0x9085 */ GL_ENUM(GL_PATH_SAMPLE_QUALITY_NV) /* 0x9086 */ GL_ENUM(GL_PATH_STROKE_BOUND_NV) /* 0x9087 */ GL_ENUM(GL_PATH_STROKE_OVERSAMPLE_COUNT_NV) /* 0x9088 */ GL_ENUM(GL_COUNT_UP_NV) /* 0x9089 */ GL_ENUM(GL_COUNT_DOWN_NV) /* 0x908A */ GL_ENUM(GL_PATH_OBJECT_BOUNDING_BOX_NV) /* 0x908B */ GL_ENUM(GL_CONVEX_HULL_NV) /* 0x908C */ GL_ENUM(GL_MULTI_HULLS_NV) /* 0x908D */ GL_ENUM(GL_BOUNDING_BOX_NV) /* 0x908E */ GL_ENUM(GL_TRANSLATE_X_NV) /* 0x908F */ GL_ENUM(GL_TRANSLATE_Y_NV) /* 0x9090 */ GL_ENUM(GL_TRANSLATE_2D_NV) /* 0x9091 */ GL_ENUM(GL_TRANSLATE_3D_NV) /* 0x9092 */ GL_ENUM(GL_AFFINE_2D_NV) /* 0x9093 */ GL_ENUM(GL_PROJECTIVE_2D_NV) /* 0x9094 */ GL_ENUM(GL_AFFINE_3D_NV) /* 0x9095 */ GL_ENUM(GL_PROJECTIVE_3D_NV) /* 0x9096 */ GL_ENUM(GL_TRANSPOSE_AFFINE_2D_NV) /* 0x9097 */ GL_ENUM(GL_TRANSPOSE_PROJECTIVE_2D_NV) /* 0x9098 */ GL_ENUM(GL_TRANSPOSE_AFFINE_3D_NV) /* 0x9099 */ GL_ENUM(GL_TRANSPOSE_PROJECTIVE_3D_NV) /* 0x909A */ GL_ENUM(GL_UTF8_NV) /* 0x909B */ GL_ENUM(GL_UTF16_NV) /* 0x909C */ GL_ENUM(GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV) /* 0x909D */ GL_ENUM(GL_PATH_COMMAND_COUNT_NV) /* 0x909E */ GL_ENUM(GL_PATH_COORD_COUNT_NV) /* 0x909F */ GL_ENUM(GL_PATH_DASH_ARRAY_COUNT_NV) /* 0x90A0 */ GL_ENUM(GL_PATH_COMPUTED_LENGTH_NV) /* 0x90A1 */ GL_ENUM(GL_PATH_FILL_BOUNDING_BOX_NV) /* 0x90A2 */ GL_ENUM(GL_PATH_STROKE_BOUNDING_BOX_NV) /* 0x90A3 */ GL_ENUM(GL_SQUARE_NV) /* 0x90A4 */ GL_ENUM(GL_ROUND_NV) /* 0x90A5 */ GL_ENUM(GL_TRIANGULAR_NV) /* 0x90A6 */ GL_ENUM(GL_BEVEL_NV) /* 0x90A7 */ GL_ENUM(GL_MITER_REVERT_NV) /* 0x90A8 */ GL_ENUM(GL_MITER_TRUNCATE_NV) /* 0x90A9 */ GL_ENUM(GL_SKIP_MISSING_GLYPH_NV) /* 0x90AA */ GL_ENUM(GL_USE_MISSING_GLYPH_NV) /* 0x90AB */ GL_ENUM(GL_PATH_ERROR_POSITION_NV) /* 0x90AC */ GL_ENUM(GL_PATH_FOG_GEN_MODE_NV) /* 0x90AD */ GL_ENUM(GL_ACCUM_ADJACENT_PAIRS_NV) /* 0x90AE */ GL_ENUM(GL_ADJACENT_PAIRS_NV) /* 0x90AF */ GL_ENUM(GL_FIRST_TO_REST_NV) /* 0x90B0 */ GL_ENUM(GL_PATH_GEN_MODE_NV) /* 0x90B1 */ GL_ENUM(GL_PATH_GEN_COEFF_NV) /* 0x90B2 */ GL_ENUM(GL_PATH_GEN_COLOR_FORMAT_NV) /* 0x90B3 */ GL_ENUM(GL_PATH_GEN_COMPONENTS_NV) /* 0x90B4 */ GL_ENUM(GL_PATH_DASH_OFFSET_RESET_NV) /* 0x90B5 */ GL_ENUM(GL_MOVE_TO_RESETS_NV) /* 0x90B6 */ GL_ENUM(GL_MOVE_TO_CONTINUES_NV) /* 0x90B7 */ GL_ENUM(GL_PATH_STENCIL_FUNC_NV) /* 0x90B8 */ GL_ENUM(GL_PATH_STENCIL_REF_NV) /* 0x90B9 */ GL_ENUM(GL_PATH_STENCIL_VALUE_MASK_NV) /* 0x90BA */ GL_ENUM(GL_SCALED_RESOLVE_FASTEST_EXT) /* 0x90BB */ GL_ENUM(GL_SCALED_RESOLVE_NICEST_EXT) /* 0x90BC */ GL_ENUM(GL_MIN_MAP_BUFFER_ALIGNMENT) /* 0x90BD */ GL_ENUM(GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV) /* 0x90BE */ GL_ENUM(GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV) /* 0x90BF */ GL_ENUM(GL_PATH_COVER_DEPTH_FUNC_NV) /* 0x90C7 */ GL_ENUM(GL_IMAGE_FORMAT_COMPATIBILITY_TYPE) /* 0x90C8 */ GL_ENUM(GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE) /* 0x90C9 */ GL_ENUM(GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS) /* 0x90CA */ GL_ENUM(GL_MAX_VERTEX_IMAGE_UNIFORMS) /* 0x90CB */ GL_ENUM(GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS) /* 0x90CC */ GL_ENUM(GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS) /* 0x90CD */ GL_ENUM(GL_MAX_GEOMETRY_IMAGE_UNIFORMS) /* 0x90CE */ GL_ENUM(GL_MAX_FRAGMENT_IMAGE_UNIFORMS) /* 0x90CF */ GL_ENUM(GL_MAX_COMBINED_IMAGE_UNIFORMS) /* 0x90D0 */ GL_ENUM(GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV) /* 0x90D1 */ GL_ENUM(GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV) /* 0x90D2 */ GL_ENUM(GL_SHADER_STORAGE_BUFFER) /* 0x90D3 */ GL_ENUM(GL_SHADER_STORAGE_BUFFER_BINDING) /* 0x90D4 */ GL_ENUM(GL_SHADER_STORAGE_BUFFER_START) /* 0x90D5 */ GL_ENUM(GL_SHADER_STORAGE_BUFFER_SIZE) /* 0x90D6 */ GL_ENUM(GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS) /* 0x90D7 */ GL_ENUM(GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS) /* 0x90D8 */ GL_ENUM(GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS) /* 0x90D9 */ GL_ENUM(GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS) /* 0x90DA */ GL_ENUM(GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS) /* 0x90DB */ GL_ENUM(GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS) /* 0x90DC */ GL_ENUM(GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS) /* 0x90DD */ GL_ENUM(GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS) /* 0x90DE */ GL_ENUM(GL_MAX_SHADER_STORAGE_BLOCK_SIZE) /* 0x90DF */ GL_ENUM(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT) /* 0x90E1 */ GL_ENUM(GL_SYNC_X11_FENCE_EXT) /* 0x90EA */ GL_ENUM(GL_DEPTH_STENCIL_TEXTURE_MODE) /* 0x90EB */ GL_ENUM(GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB) /* 0x90EB */ GL_ENUM(GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS) /* 0x90EC */ GL_ENUM(GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER) /* 0x90ED */ GL_ENUM(GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER) /* 0x90EE */ GL_ENUM(GL_DISPATCH_INDIRECT_BUFFER) /* 0x90EF */ GL_ENUM(GL_DISPATCH_INDIRECT_BUFFER_BINDING) /* 0x90F3 */ GL_ENUM(GL_CONTEXT_ROBUST_ACCESS) /* 0x90FB */ GL_ENUM(GL_COMPUTE_PROGRAM_NV) /* 0x90FC */ GL_ENUM(GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV) /* 0x9100 */ GL_ENUM(GL_TEXTURE_2D_MULTISAMPLE) /* 0x9101 */ GL_ENUM(GL_PROXY_TEXTURE_2D_MULTISAMPLE) /* 0x9102 */ GL_ENUM(GL_TEXTURE_2D_MULTISAMPLE_ARRAY) /* 0x9103 */ GL_ENUM(GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY) /* 0x9104 */ GL_ENUM(GL_TEXTURE_BINDING_2D_MULTISAMPLE) /* 0x9105 */ GL_ENUM(GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY) /* 0x9106 */ GL_ENUM(GL_TEXTURE_SAMPLES) /* 0x9107 */ GL_ENUM(GL_TEXTURE_FIXED_SAMPLE_LOCATIONS) /* 0x9108 */ GL_ENUM(GL_SAMPLER_2D_MULTISAMPLE) /* 0x9109 */ GL_ENUM(GL_INT_SAMPLER_2D_MULTISAMPLE) /* 0x910A */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE) /* 0x910B */ GL_ENUM(GL_SAMPLER_2D_MULTISAMPLE_ARRAY) /* 0x910C */ GL_ENUM(GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY) /* 0x910D */ GL_ENUM(GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY) /* 0x910E */ GL_ENUM(GL_MAX_COLOR_TEXTURE_SAMPLES) /* 0x910F */ GL_ENUM(GL_MAX_DEPTH_TEXTURE_SAMPLES) /* 0x9110 */ GL_ENUM(GL_MAX_INTEGER_SAMPLES) /* 0x9111 */ GL_ENUM(GL_MAX_SERVER_WAIT_TIMEOUT) /* 0x9112 */ GL_ENUM(GL_OBJECT_TYPE) /* 0x9113 */ GL_ENUM(GL_SYNC_CONDITION) /* 0x9114 */ GL_ENUM(GL_SYNC_STATUS) /* 0x9115 */ GL_ENUM(GL_SYNC_FLAGS) /* 0x9116 */ GL_ENUM(GL_SYNC_FENCE) /* 0x9117 */ GL_ENUM(GL_SYNC_GPU_COMMANDS_COMPLETE) /* 0x9118 */ GL_ENUM(GL_UNSIGNALED) /* 0x9119 */ GL_ENUM(GL_SIGNALED) /* 0x911A */ GL_ENUM(GL_ALREADY_SIGNALED) /* 0x911B */ GL_ENUM(GL_TIMEOUT_EXPIRED) /* 0x911C */ GL_ENUM(GL_CONDITION_SATISFIED) /* 0x911D */ GL_ENUM(GL_WAIT_FAILED) /* 0x911F */ GL_ENUM(GL_BUFFER_ACCESS_FLAGS) /* 0x9120 */ GL_ENUM(GL_BUFFER_MAP_LENGTH) /* 0x9121 */ GL_ENUM(GL_BUFFER_MAP_OFFSET) /* 0x9122 */ GL_ENUM(GL_MAX_VERTEX_OUTPUT_COMPONENTS) /* 0x9123 */ GL_ENUM(GL_MAX_GEOMETRY_INPUT_COMPONENTS) /* 0x9124 */ GL_ENUM(GL_MAX_GEOMETRY_OUTPUT_COMPONENTS) /* 0x9125 */ GL_ENUM(GL_MAX_FRAGMENT_INPUT_COMPONENTS) /* 0x9126 */ GL_ENUM(GL_CONTEXT_PROFILE_MASK) /* 0x9127 */ GL_ENUM(GL_UNPACK_COMPRESSED_BLOCK_WIDTH) /* 0x9128 */ GL_ENUM(GL_UNPACK_COMPRESSED_BLOCK_HEIGHT) /* 0x9129 */ GL_ENUM(GL_UNPACK_COMPRESSED_BLOCK_DEPTH) /* 0x912A */ GL_ENUM(GL_UNPACK_COMPRESSED_BLOCK_SIZE) /* 0x912B */ GL_ENUM(GL_PACK_COMPRESSED_BLOCK_WIDTH) /* 0x912C */ GL_ENUM(GL_PACK_COMPRESSED_BLOCK_HEIGHT) /* 0x912D */ GL_ENUM(GL_PACK_COMPRESSED_BLOCK_DEPTH) /* 0x912E */ GL_ENUM(GL_PACK_COMPRESSED_BLOCK_SIZE) /* 0x912F */ GL_ENUM(GL_TEXTURE_IMMUTABLE_FORMAT) /* 0x9143 */ GL_ENUM(GL_MAX_DEBUG_MESSAGE_LENGTH) /* 0x9143 */ GL_ENUM(GL_MAX_DEBUG_MESSAGE_LENGTH_AMD) /* 0x9143 */ GL_ENUM(GL_MAX_DEBUG_MESSAGE_LENGTH_ARB) /* 0x9144 */ GL_ENUM(GL_MAX_DEBUG_LOGGED_MESSAGES) /* 0x9144 */ GL_ENUM(GL_MAX_DEBUG_LOGGED_MESSAGES_AMD) /* 0x9144 */ GL_ENUM(GL_MAX_DEBUG_LOGGED_MESSAGES_ARB) /* 0x9145 */ GL_ENUM(GL_DEBUG_LOGGED_MESSAGES) /* 0x9145 */ GL_ENUM(GL_DEBUG_LOGGED_MESSAGES_AMD) /* 0x9145 */ GL_ENUM(GL_DEBUG_LOGGED_MESSAGES_ARB) /* 0x9146 */ GL_ENUM(GL_DEBUG_SEVERITY_HIGH) /* 0x9146 */ GL_ENUM(GL_DEBUG_SEVERITY_HIGH_AMD) /* 0x9146 */ GL_ENUM(GL_DEBUG_SEVERITY_HIGH_ARB) /* 0x9147 */ GL_ENUM(GL_DEBUG_SEVERITY_MEDIUM) /* 0x9147 */ GL_ENUM(GL_DEBUG_SEVERITY_MEDIUM_AMD) /* 0x9147 */ GL_ENUM(GL_DEBUG_SEVERITY_MEDIUM_ARB) /* 0x9148 */ GL_ENUM(GL_DEBUG_SEVERITY_LOW) /* 0x9148 */ GL_ENUM(GL_DEBUG_SEVERITY_LOW_AMD) /* 0x9148 */ GL_ENUM(GL_DEBUG_SEVERITY_LOW_ARB) /* 0x9149 */ GL_ENUM(GL_DEBUG_CATEGORY_API_ERROR_AMD) /* 0x914A */ GL_ENUM(GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD) /* 0x914B */ GL_ENUM(GL_DEBUG_CATEGORY_DEPRECATION_AMD) /* 0x914C */ GL_ENUM(GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD) /* 0x914D */ GL_ENUM(GL_DEBUG_CATEGORY_PERFORMANCE_AMD) /* 0x914E */ GL_ENUM(GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD) /* 0x914F */ GL_ENUM(GL_DEBUG_CATEGORY_APPLICATION_AMD) /* 0x9150 */ GL_ENUM(GL_DEBUG_CATEGORY_OTHER_AMD) /* 0x9151 */ GL_ENUM(GL_BUFFER_OBJECT_EXT) /* 0x9151 */ GL_ENUM(GL_DATA_BUFFER_AMD) /* 0x9152 */ GL_ENUM(GL_PERFORMANCE_MONITOR_AMD) /* 0x9153 */ GL_ENUM(GL_QUERY_OBJECT_AMD) /* 0x9153 */ GL_ENUM(GL_QUERY_OBJECT_EXT) /* 0x9154 */ GL_ENUM(GL_VERTEX_ARRAY_OBJECT_AMD) /* 0x9154 */ GL_ENUM(GL_VERTEX_ARRAY_OBJECT_EXT) /* 0x9155 */ GL_ENUM(GL_SAMPLER_OBJECT_AMD) /* 0x9160 */ GL_ENUM(GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD) /* 0x9192 */ GL_ENUM(GL_QUERY_BUFFER) /* 0x9192 */ GL_ENUM(GL_QUERY_BUFFER_AMD) /* 0x9193 */ GL_ENUM(GL_QUERY_BUFFER_BINDING) /* 0x9193 */ GL_ENUM(GL_QUERY_BUFFER_BINDING_AMD) /* 0x9194 */ GL_ENUM(GL_QUERY_RESULT_NO_WAIT) /* 0x9194 */ GL_ENUM(GL_QUERY_RESULT_NO_WAIT_AMD) /* 0x9195 */ GL_ENUM(GL_VIRTUAL_PAGE_SIZE_X_AMD) /* 0x9195 */ GL_ENUM(GL_VIRTUAL_PAGE_SIZE_X_ARB) /* 0x9196 */ GL_ENUM(GL_VIRTUAL_PAGE_SIZE_Y_AMD) /* 0x9196 */ GL_ENUM(GL_VIRTUAL_PAGE_SIZE_Y_ARB) /* 0x9197 */ GL_ENUM(GL_VIRTUAL_PAGE_SIZE_Z_AMD) /* 0x9197 */ GL_ENUM(GL_VIRTUAL_PAGE_SIZE_Z_ARB) /* 0x9198 */ GL_ENUM(GL_MAX_SPARSE_TEXTURE_SIZE_AMD) /* 0x9198 */ GL_ENUM(GL_MAX_SPARSE_TEXTURE_SIZE_ARB) /* 0x9199 */ GL_ENUM(GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD) /* 0x9199 */ GL_ENUM(GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB) /* 0x919A */ GL_ENUM(GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS) /* 0x919A */ GL_ENUM(GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB) /* 0x919B */ GL_ENUM(GL_MIN_SPARSE_LEVEL_AMD) /* 0x919B */ GL_ENUM(GL_MIN_SPARSE_LEVEL_ARB) /* 0x919C */ GL_ENUM(GL_MIN_LOD_WARNING_AMD) /* 0x919D */ GL_ENUM(GL_TEXTURE_BUFFER_OFFSET) /* 0x919E */ GL_ENUM(GL_TEXTURE_BUFFER_SIZE) /* 0x919F */ GL_ENUM(GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT) /* 0x91A0 */ GL_ENUM(GL_STREAM_RASTERIZATION_AMD) /* 0x91A4 */ GL_ENUM(GL_VERTEX_ELEMENT_SWIZZLE_AMD) /* 0x91A5 */ GL_ENUM(GL_VERTEX_ID_SWIZZLE_AMD) /* 0x91A6 */ GL_ENUM(GL_TEXTURE_SPARSE_ARB) /* 0x91A7 */ GL_ENUM(GL_VIRTUAL_PAGE_SIZE_INDEX_ARB) /* 0x91A8 */ GL_ENUM(GL_NUM_VIRTUAL_PAGE_SIZES_ARB) /* 0x91A9 */ GL_ENUM(GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB) /* 0x91AA */ GL_ENUM(GL_NUM_SPARSE_LEVELS_ARB) /* 0x91B9 */ GL_ENUM(GL_COMPUTE_SHADER) /* 0x91BB */ GL_ENUM(GL_MAX_COMPUTE_UNIFORM_BLOCKS) /* 0x91BC */ GL_ENUM(GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS) /* 0x91BD */ GL_ENUM(GL_MAX_COMPUTE_IMAGE_UNIFORMS) /* 0x91BE */ GL_ENUM(GL_MAX_COMPUTE_WORK_GROUP_COUNT) /* 0x91BF */ GL_ENUM(GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB) /* 0x91BF */ GL_ENUM(GL_MAX_COMPUTE_WORK_GROUP_SIZE) /* 0x9270 */ GL_ENUM(GL_COMPRESSED_R11_EAC) /* 0x9271 */ GL_ENUM(GL_COMPRESSED_SIGNED_R11_EAC) /* 0x9272 */ GL_ENUM(GL_COMPRESSED_RG11_EAC) /* 0x9273 */ GL_ENUM(GL_COMPRESSED_SIGNED_RG11_EAC) /* 0x9274 */ GL_ENUM(GL_COMPRESSED_RGB8_ETC2) /* 0x9275 */ GL_ENUM(GL_COMPRESSED_SRGB8_ETC2) /* 0x9276 */ GL_ENUM(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2) /* 0x9277 */ GL_ENUM(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2) /* 0x9278 */ GL_ENUM(GL_COMPRESSED_RGBA8_ETC2_EAC) /* 0x9279 */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC) /* 0x9280 */ GL_ENUM(GL_BLEND_PREMULTIPLIED_SRC_NV) /* 0x9281 */ GL_ENUM(GL_BLEND_OVERLAP_NV) /* 0x9282 */ GL_ENUM(GL_UNCORRELATED_NV) /* 0x9283 */ GL_ENUM(GL_DISJOINT_NV) /* 0x9284 */ GL_ENUM(GL_CONJOINT_NV) /* 0x9285 */ GL_ENUM(GL_BLEND_ADVANCED_COHERENT_KHR) /* 0x9285 */ GL_ENUM(GL_BLEND_ADVANCED_COHERENT_NV) /* 0x9286 */ GL_ENUM(GL_SRC_NV) /* 0x9287 */ GL_ENUM(GL_DST_NV) /* 0x9288 */ GL_ENUM(GL_SRC_OVER_NV) /* 0x9289 */ GL_ENUM(GL_DST_OVER_NV) /* 0x928A */ GL_ENUM(GL_SRC_IN_NV) /* 0x928B */ GL_ENUM(GL_DST_IN_NV) /* 0x928C */ GL_ENUM(GL_SRC_OUT_NV) /* 0x928D */ GL_ENUM(GL_DST_OUT_NV) /* 0x928E */ GL_ENUM(GL_SRC_ATOP_NV) /* 0x928F */ GL_ENUM(GL_DST_ATOP_NV) /* 0x9291 */ GL_ENUM(GL_PLUS_NV) /* 0x9292 */ GL_ENUM(GL_PLUS_DARKER_NV) /* 0x9294 */ GL_ENUM(GL_MULTIPLY_KHR) /* 0x9294 */ GL_ENUM(GL_MULTIPLY_NV) /* 0x9295 */ GL_ENUM(GL_SCREEN_KHR) /* 0x9295 */ GL_ENUM(GL_SCREEN_NV) /* 0x9296 */ GL_ENUM(GL_OVERLAY_KHR) /* 0x9296 */ GL_ENUM(GL_OVERLAY_NV) /* 0x9297 */ GL_ENUM(GL_DARKEN_KHR) /* 0x9297 */ GL_ENUM(GL_DARKEN_NV) /* 0x9298 */ GL_ENUM(GL_LIGHTEN_KHR) /* 0x9298 */ GL_ENUM(GL_LIGHTEN_NV) /* 0x9299 */ GL_ENUM(GL_COLORDODGE_KHR) /* 0x9299 */ GL_ENUM(GL_COLORDODGE_NV) /* 0x929A */ GL_ENUM(GL_COLORBURN_KHR) /* 0x929A */ GL_ENUM(GL_COLORBURN_NV) /* 0x929B */ GL_ENUM(GL_HARDLIGHT_KHR) /* 0x929B */ GL_ENUM(GL_HARDLIGHT_NV) /* 0x929C */ GL_ENUM(GL_SOFTLIGHT_KHR) /* 0x929C */ GL_ENUM(GL_SOFTLIGHT_NV) /* 0x929E */ GL_ENUM(GL_DIFFERENCE_KHR) /* 0x929E */ GL_ENUM(GL_DIFFERENCE_NV) /* 0x929F */ GL_ENUM(GL_MINUS_NV) /* 0x92A0 */ GL_ENUM(GL_EXCLUSION_KHR) /* 0x92A0 */ GL_ENUM(GL_EXCLUSION_NV) /* 0x92A1 */ GL_ENUM(GL_CONTRAST_NV) /* 0x92A3 */ GL_ENUM(GL_INVERT_RGB_NV) /* 0x92A4 */ GL_ENUM(GL_LINEARDODGE_NV) /* 0x92A5 */ GL_ENUM(GL_LINEARBURN_NV) /* 0x92A6 */ GL_ENUM(GL_VIVIDLIGHT_NV) /* 0x92A7 */ GL_ENUM(GL_LINEARLIGHT_NV) /* 0x92A8 */ GL_ENUM(GL_PINLIGHT_NV) /* 0x92A9 */ GL_ENUM(GL_HARDMIX_NV) /* 0x92AD */ GL_ENUM(GL_HSL_HUE_KHR) /* 0x92AD */ GL_ENUM(GL_HSL_HUE_NV) /* 0x92AE */ GL_ENUM(GL_HSL_SATURATION_KHR) /* 0x92AE */ GL_ENUM(GL_HSL_SATURATION_NV) /* 0x92AF */ GL_ENUM(GL_HSL_COLOR_KHR) /* 0x92AF */ GL_ENUM(GL_HSL_COLOR_NV) /* 0x92B0 */ GL_ENUM(GL_HSL_LUMINOSITY_KHR) /* 0x92B0 */ GL_ENUM(GL_HSL_LUMINOSITY_NV) /* 0x92B1 */ GL_ENUM(GL_PLUS_CLAMPED_NV) /* 0x92B2 */ GL_ENUM(GL_PLUS_CLAMPED_ALPHA_NV) /* 0x92B3 */ GL_ENUM(GL_MINUS_CLAMPED_NV) /* 0x92B4 */ GL_ENUM(GL_INVERT_OVG_NV) /* 0x92C0 */ GL_ENUM(GL_ATOMIC_COUNTER_BUFFER) /* 0x92C1 */ GL_ENUM(GL_ATOMIC_COUNTER_BUFFER_BINDING) /* 0x92C2 */ GL_ENUM(GL_ATOMIC_COUNTER_BUFFER_START) /* 0x92C3 */ GL_ENUM(GL_ATOMIC_COUNTER_BUFFER_SIZE) /* 0x92C4 */ GL_ENUM(GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE) /* 0x92C5 */ GL_ENUM(GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS) /* 0x92C6 */ GL_ENUM(GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES) /* 0x92C7 */ GL_ENUM(GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER) /* 0x92C8 */ GL_ENUM(GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER) /* 0x92C9 */ GL_ENUM(GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER) /* 0x92CA */ GL_ENUM(GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER) /* 0x92CB */ GL_ENUM(GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER) /* 0x92CC */ GL_ENUM(GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS) /* 0x92CD */ GL_ENUM(GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS) /* 0x92CE */ GL_ENUM(GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS) /* 0x92CF */ GL_ENUM(GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS) /* 0x92D0 */ GL_ENUM(GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS) /* 0x92D1 */ GL_ENUM(GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS) /* 0x92D2 */ GL_ENUM(GL_MAX_VERTEX_ATOMIC_COUNTERS) /* 0x92D3 */ GL_ENUM(GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS) /* 0x92D4 */ GL_ENUM(GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS) /* 0x92D5 */ GL_ENUM(GL_MAX_GEOMETRY_ATOMIC_COUNTERS) /* 0x92D6 */ GL_ENUM(GL_MAX_FRAGMENT_ATOMIC_COUNTERS) /* 0x92D7 */ GL_ENUM(GL_MAX_COMBINED_ATOMIC_COUNTERS) /* 0x92D8 */ GL_ENUM(GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE) /* 0x92D9 */ GL_ENUM(GL_ACTIVE_ATOMIC_COUNTER_BUFFERS) /* 0x92DA */ GL_ENUM(GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX) /* 0x92DB */ GL_ENUM(GL_UNSIGNED_INT_ATOMIC_COUNTER) /* 0x92DC */ GL_ENUM(GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS) /* 0x92DD */ GL_ENUM(GL_FRAGMENT_COVERAGE_TO_COLOR_NV) /* 0x92DE */ GL_ENUM(GL_FRAGMENT_COVERAGE_COLOR_NV) /* 0x92E0 */ GL_ENUM(GL_DEBUG_OUTPUT) /* 0x92E1 */ GL_ENUM(GL_UNIFORM) /* 0x92E2 */ GL_ENUM(GL_UNIFORM_BLOCK) /* 0x92E3 */ GL_ENUM(GL_PROGRAM_INPUT) /* 0x92E4 */ GL_ENUM(GL_PROGRAM_OUTPUT) /* 0x92E5 */ GL_ENUM(GL_BUFFER_VARIABLE) /* 0x92E6 */ GL_ENUM(GL_SHADER_STORAGE_BLOCK) /* 0x92E7 */ GL_ENUM(GL_IS_PER_PATCH) /* 0x92E8 */ GL_ENUM(GL_VERTEX_SUBROUTINE) /* 0x92E9 */ GL_ENUM(GL_TESS_CONTROL_SUBROUTINE) /* 0x92EA */ GL_ENUM(GL_TESS_EVALUATION_SUBROUTINE) /* 0x92EB */ GL_ENUM(GL_GEOMETRY_SUBROUTINE) /* 0x92EC */ GL_ENUM(GL_FRAGMENT_SUBROUTINE) /* 0x92ED */ GL_ENUM(GL_COMPUTE_SUBROUTINE) /* 0x92EE */ GL_ENUM(GL_VERTEX_SUBROUTINE_UNIFORM) /* 0x92EF */ GL_ENUM(GL_TESS_CONTROL_SUBROUTINE_UNIFORM) /* 0x92F0 */ GL_ENUM(GL_TESS_EVALUATION_SUBROUTINE_UNIFORM) /* 0x92F1 */ GL_ENUM(GL_GEOMETRY_SUBROUTINE_UNIFORM) /* 0x92F2 */ GL_ENUM(GL_FRAGMENT_SUBROUTINE_UNIFORM) /* 0x92F3 */ GL_ENUM(GL_COMPUTE_SUBROUTINE_UNIFORM) /* 0x92F4 */ GL_ENUM(GL_TRANSFORM_FEEDBACK_VARYING) /* 0x92F5 */ GL_ENUM(GL_ACTIVE_RESOURCES) /* 0x92F6 */ GL_ENUM(GL_MAX_NAME_LENGTH) /* 0x92F7 */ GL_ENUM(GL_MAX_NUM_ACTIVE_VARIABLES) /* 0x92F8 */ GL_ENUM(GL_MAX_NUM_COMPATIBLE_SUBROUTINES) /* 0x92F9 */ GL_ENUM(GL_NAME_LENGTH) /* 0x92FA */ GL_ENUM(GL_TYPE) /* 0x92FB */ GL_ENUM(GL_ARRAY_SIZE) /* 0x92FC */ GL_ENUM(GL_OFFSET) /* 0x92FD */ GL_ENUM(GL_BLOCK_INDEX) /* 0x92FE */ GL_ENUM(GL_ARRAY_STRIDE) /* 0x92FF */ GL_ENUM(GL_MATRIX_STRIDE) /* 0x9300 */ GL_ENUM(GL_IS_ROW_MAJOR) /* 0x9301 */ GL_ENUM(GL_ATOMIC_COUNTER_BUFFER_INDEX) /* 0x9302 */ GL_ENUM(GL_BUFFER_BINDING) /* 0x9303 */ GL_ENUM(GL_BUFFER_DATA_SIZE) /* 0x9304 */ GL_ENUM(GL_NUM_ACTIVE_VARIABLES) /* 0x9305 */ GL_ENUM(GL_ACTIVE_VARIABLES) /* 0x9306 */ GL_ENUM(GL_REFERENCED_BY_VERTEX_SHADER) /* 0x9307 */ GL_ENUM(GL_REFERENCED_BY_TESS_CONTROL_SHADER) /* 0x9308 */ GL_ENUM(GL_REFERENCED_BY_TESS_EVALUATION_SHADER) /* 0x9309 */ GL_ENUM(GL_REFERENCED_BY_GEOMETRY_SHADER) /* 0x930A */ GL_ENUM(GL_REFERENCED_BY_FRAGMENT_SHADER) /* 0x930B */ GL_ENUM(GL_REFERENCED_BY_COMPUTE_SHADER) /* 0x930C */ GL_ENUM(GL_TOP_LEVEL_ARRAY_SIZE) /* 0x930D */ GL_ENUM(GL_TOP_LEVEL_ARRAY_STRIDE) /* 0x930E */ GL_ENUM(GL_LOCATION) /* 0x930F */ GL_ENUM(GL_LOCATION_INDEX) /* 0x9310 */ GL_ENUM(GL_FRAMEBUFFER_DEFAULT_WIDTH) /* 0x9311 */ GL_ENUM(GL_FRAMEBUFFER_DEFAULT_HEIGHT) /* 0x9312 */ GL_ENUM(GL_FRAMEBUFFER_DEFAULT_LAYERS) /* 0x9313 */ GL_ENUM(GL_FRAMEBUFFER_DEFAULT_SAMPLES) /* 0x9314 */ GL_ENUM(GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS) /* 0x9315 */ GL_ENUM(GL_MAX_FRAMEBUFFER_WIDTH) /* 0x9316 */ GL_ENUM(GL_MAX_FRAMEBUFFER_HEIGHT) /* 0x9317 */ GL_ENUM(GL_MAX_FRAMEBUFFER_LAYERS) /* 0x9318 */ GL_ENUM(GL_MAX_FRAMEBUFFER_SAMPLES) /* 0x9327 */ GL_ENUM(GL_RASTER_MULTISAMPLE_EXT) /* 0x9328 */ GL_ENUM(GL_RASTER_SAMPLES_EXT) /* 0x9329 */ GL_ENUM(GL_MAX_RASTER_SAMPLES_EXT) /* 0x932A */ GL_ENUM(GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT) /* 0x932B */ GL_ENUM(GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT) /* 0x932C */ GL_ENUM(GL_EFFECTIVE_RASTER_SAMPLES_EXT) /* 0x932D */ GL_ENUM(GL_DEPTH_SAMPLES_NV) /* 0x932E */ GL_ENUM(GL_STENCIL_SAMPLES_NV) /* 0x932F */ GL_ENUM(GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV) /* 0x9330 */ GL_ENUM(GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV) /* 0x9331 */ GL_ENUM(GL_COVERAGE_MODULATION_TABLE_NV) /* 0x9332 */ GL_ENUM(GL_COVERAGE_MODULATION_NV) /* 0x9333 */ GL_ENUM(GL_COVERAGE_MODULATION_TABLE_SIZE_NV) /* 0x9339 */ GL_ENUM(GL_WARP_SIZE_NV) /* 0x933A */ GL_ENUM(GL_WARPS_PER_SM_NV) /* 0x933B */ GL_ENUM(GL_SM_COUNT_NV) /* 0x933C */ GL_ENUM(GL_FILL_RECTANGLE_NV) /* 0x933D */ GL_ENUM(GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV) /* 0x933E */ GL_ENUM(GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV) /* 0x933F */ GL_ENUM(GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV) /* 0x9340 */ GL_ENUM(GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV) /* 0x9341 */ GL_ENUM(GL_PROGRAMMABLE_SAMPLE_LOCATION_NV) /* 0x9342 */ GL_ENUM(GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV) /* 0x9343 */ GL_ENUM(GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV) /* 0x9344 */ GL_ENUM(GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB) /* 0x9345 */ GL_ENUM(GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB) /* 0x9346 */ GL_ENUM(GL_CONSERVATIVE_RASTERIZATION_NV) /* 0x9347 */ GL_ENUM(GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV) /* 0x9348 */ GL_ENUM(GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV) /* 0x9349 */ GL_ENUM(GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV) /* 0x934A */ GL_ENUM(GL_LOCATION_COMPONENT) /* 0x934B */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_INDEX) /* 0x934C */ GL_ENUM(GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE) /* 0x935C */ GL_ENUM(GL_CLIP_ORIGIN) /* 0x935D */ GL_ENUM(GL_CLIP_DEPTH_MODE) /* 0x935E */ GL_ENUM(GL_NEGATIVE_ONE_TO_ONE) /* 0x935F */ GL_ENUM(GL_ZERO_TO_ONE) /* 0x9365 */ GL_ENUM(GL_CLEAR_TEXTURE) /* 0x9368 */ GL_ENUM(GL_FONT_GLYPHS_AVAILABLE_NV) /* 0x9369 */ GL_ENUM(GL_FONT_TARGET_UNAVAILABLE_NV) /* 0x936A */ GL_ENUM(GL_FONT_UNAVAILABLE_NV) /* 0x936B */ GL_ENUM(GL_FONT_UNINTELLIGIBLE_NV) /* 0x936C */ GL_ENUM(GL_STANDARD_FONT_FORMAT_NV) /* 0x936D */ GL_ENUM(GL_FRAGMENT_INPUT_NV) /* 0x936E */ GL_ENUM(GL_UNIFORM_BUFFER_UNIFIED_NV) /* 0x936F */ GL_ENUM(GL_UNIFORM_BUFFER_ADDRESS_NV) /* 0x9370 */ GL_ENUM(GL_UNIFORM_BUFFER_LENGTH_NV) /* 0x9371 */ GL_ENUM(GL_MULTISAMPLES_NV) /* 0x9372 */ GL_ENUM(GL_SUPERSAMPLE_SCALE_X_NV) /* 0x9373 */ GL_ENUM(GL_SUPERSAMPLE_SCALE_Y_NV) /* 0x9374 */ GL_ENUM(GL_CONFORMANT_NV) /* 0x9380 */ GL_ENUM(GL_NUM_SAMPLE_COUNTS) /* 0x93B0 */ GL_ENUM(GL_COMPRESSED_RGBA_ASTC_4x4_KHR) /* 0x93B1 */ GL_ENUM(GL_COMPRESSED_RGBA_ASTC_5x4_KHR) /* 0x93B2 */ GL_ENUM(GL_COMPRESSED_RGBA_ASTC_5x5_KHR) /* 0x93B3 */ GL_ENUM(GL_COMPRESSED_RGBA_ASTC_6x5_KHR) /* 0x93B4 */ GL_ENUM(GL_COMPRESSED_RGBA_ASTC_6x6_KHR) /* 0x93B5 */ GL_ENUM(GL_COMPRESSED_RGBA_ASTC_8x5_KHR) /* 0x93B6 */ GL_ENUM(GL_COMPRESSED_RGBA_ASTC_8x6_KHR) /* 0x93B7 */ GL_ENUM(GL_COMPRESSED_RGBA_ASTC_8x8_KHR) /* 0x93B8 */ GL_ENUM(GL_COMPRESSED_RGBA_ASTC_10x5_KHR) /* 0x93B9 */ GL_ENUM(GL_COMPRESSED_RGBA_ASTC_10x6_KHR) /* 0x93BA */ GL_ENUM(GL_COMPRESSED_RGBA_ASTC_10x8_KHR) /* 0x93BB */ GL_ENUM(GL_COMPRESSED_RGBA_ASTC_10x10_KHR) /* 0x93BC */ GL_ENUM(GL_COMPRESSED_RGBA_ASTC_12x10_KHR) /* 0x93BD */ GL_ENUM(GL_COMPRESSED_RGBA_ASTC_12x12_KHR) /* 0x93D0 */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR) /* 0x93D1 */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR) /* 0x93D2 */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR) /* 0x93D3 */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR) /* 0x93D4 */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR) /* 0x93D5 */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR) /* 0x93D6 */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR) /* 0x93D7 */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR) /* 0x93D8 */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR) /* 0x93D9 */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR) /* 0x93DA */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR) /* 0x93DB */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR) /* 0x93DC */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR) /* 0x93DD */ GL_ENUM(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR) /* 0x94F0 */ GL_ENUM(GL_PERFQUERY_COUNTER_EVENT_INTEL) /* 0x94F1 */ GL_ENUM(GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL) /* 0x94F2 */ GL_ENUM(GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL) /* 0x94F3 */ GL_ENUM(GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL) /* 0x94F4 */ GL_ENUM(GL_PERFQUERY_COUNTER_RAW_INTEL) /* 0x94F5 */ GL_ENUM(GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL) /* 0x94F8 */ GL_ENUM(GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL) /* 0x94F9 */ GL_ENUM(GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL) /* 0x94FA */ GL_ENUM(GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL) /* 0x94FB */ GL_ENUM(GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL) /* 0x94FC */ GL_ENUM(GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL) /* 0x94FD */ GL_ENUM(GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL) /* 0x94FE */ GL_ENUM(GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL) /* 0x94FF */ GL_ENUM(GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL) /* 0x9500 */ GL_ENUM(GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL) /* 0x9630 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR) /* 0x9631 */ GL_ENUM(GL_MAX_VIEWS_OVR) /* 0x9632 */ GL_ENUM(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR) /* 0x19262 */ GL_ENUM(GL_RASTER_POSITION_UNCLIPPED_IBM) /* 0x1928A */ GL_ENUM(GL_CULL_VERTEX_IBM) /* 0x19294 */ GL_ENUM(GL_ALL_STATIC_DATA_IBM) /* 0x19295 */ GL_ENUM(GL_STATIC_VERTEX_ARRAY_IBM) /* 0x1929E */ GL_ENUM(GL_VERTEX_ARRAY_LIST_IBM) /* 0x1929F */ GL_ENUM(GL_NORMAL_ARRAY_LIST_IBM) /* 0x192A0 */ GL_ENUM(GL_COLOR_ARRAY_LIST_IBM) /* 0x192A1 */ GL_ENUM(GL_INDEX_ARRAY_LIST_IBM) /* 0x192A2 */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_LIST_IBM) /* 0x192A3 */ GL_ENUM(GL_EDGE_FLAG_ARRAY_LIST_IBM) /* 0x192A4 */ GL_ENUM(GL_FOG_COORDINATE_ARRAY_LIST_IBM) /* 0x192A5 */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_LIST_IBM) /* 0x192A8 */ GL_ENUM(GL_VERTEX_ARRAY_LIST_STRIDE_IBM) /* 0x192A9 */ GL_ENUM(GL_NORMAL_ARRAY_LIST_STRIDE_IBM) /* 0x192AA */ GL_ENUM(GL_COLOR_ARRAY_LIST_STRIDE_IBM) /* 0x192AB */ GL_ENUM(GL_INDEX_ARRAY_LIST_STRIDE_IBM) /* 0x192AC */ GL_ENUM(GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM) /* 0x192AD */ GL_ENUM(GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM) /* 0x192AE */ GL_ENUM(GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM) /* 0x192AF */ GL_ENUM(GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM) /* 0x1A1F8 */ GL_ENUM(GL_PREFER_DOUBLEBUFFER_HINT_PGI) /* 0x1A1FD */ GL_ENUM(GL_CONSERVE_MEMORY_HINT_PGI) /* 0x1A1FE */ GL_ENUM(GL_RECLAIM_MEMORY_HINT_PGI) /* 0x1A202 */ GL_ENUM(GL_NATIVE_GRAPHICS_HANDLE_PGI) /* 0x1A203 */ GL_ENUM(GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI) /* 0x1A204 */ GL_ENUM(GL_NATIVE_GRAPHICS_END_HINT_PGI) /* 0x1A20C */ GL_ENUM(GL_ALWAYS_FAST_HINT_PGI) /* 0x1A20D */ GL_ENUM(GL_ALWAYS_SOFT_HINT_PGI) /* 0x1A20E */ GL_ENUM(GL_ALLOW_DRAW_OBJ_HINT_PGI) /* 0x1A20F */ GL_ENUM(GL_ALLOW_DRAW_WIN_HINT_PGI) /* 0x1A210 */ GL_ENUM(GL_ALLOW_DRAW_FRG_HINT_PGI) /* 0x1A211 */ GL_ENUM(GL_ALLOW_DRAW_MEM_HINT_PGI) /* 0x1A216 */ GL_ENUM(GL_STRICT_DEPTHFUNC_HINT_PGI) /* 0x1A217 */ GL_ENUM(GL_STRICT_LIGHTING_HINT_PGI) /* 0x1A218 */ GL_ENUM(GL_STRICT_SCISSOR_HINT_PGI) /* 0x1A219 */ GL_ENUM(GL_FULL_STIPPLE_HINT_PGI) /* 0x1A220 */ GL_ENUM(GL_CLIP_NEAR_HINT_PGI) /* 0x1A221 */ GL_ENUM(GL_CLIP_FAR_HINT_PGI) /* 0x1A222 */ GL_ENUM(GL_WIDE_LINE_HINT_PGI) /* 0x1A223 */ GL_ENUM(GL_BACK_NORMALS_HINT_PGI) /* 0x1A22A */ GL_ENUM(GL_VERTEX_DATA_HINT_PGI) /* 0x1A22B */ GL_ENUM(GL_VERTEX_CONSISTENT_HINT_PGI) /* 0x1A22C */ GL_ENUM(GL_MATERIAL_SIDE_HINT_PGI) /* 0x1A22D */ GL_ENUM(GL_MAX_VERTEX_HINT_PGI) { 0, 0 } }; #undef GL_ENUM #define num_glenums (sizeof(glenums) / sizeof(glenums[0]) - 1) const char *gl_enum_name(GLenum parm) { static char buf[20]; /* * Do a binary search here. */ int a, b, c; a = 0; b = num_glenums; while (a < b) { c = (a + b) >> 1; /* == ((a + b) / 2) */ if (parm == glenums[c].val) { while (c > 0 && glenums[c - 1].val == parm) --c; return glenums[c].name; } if (parm < glenums[c].val) b = c; else a = c + 1; } /* not found */ sprintf(buf, "0x%04x", parm); return buf; } static int cmp_by_value(const void *_a, const void *_b) { const struct glenum *a = (const struct glenum *)_a; const struct glenum *b = (const struct glenum *)_b; if (a->val < b->val) return -1; if (a->val > b->val) return 1; return 0; } void gl_print_enums(void) { unsigned int i; struct glenum *sorted; sorted = (struct glenum *)malloc(num_glenums * sizeof(*sorted)); for (i = 0; i < num_glenums; i++) sorted[i] = glenums[i]; qsort(sorted, num_glenums, sizeof(*sorted), cmp_by_value); for (i = 0; i < num_glenums; i++) printf("/* 0x%04X */ GL_ENUM(%s)\n", sorted[i].val, sorted[i].name); free(sorted); } GLboolean gl_HasExtension(const char *extName, const GLubyte *_extString) { int namelen; const char *extString = (const char *)_extString; if (extName == NULL || extString == NULL) return GL_FALSE; namelen = strlen(extName); for (;;) { while (*extString == ' ') extString++; if (strncmp(extString, extName, namelen) == 0 && (extString[namelen] == ' ' || extString[namelen] == '\0')) return GL_TRUE; extString = strchr(extString, ' '); if (extString == NULL) break; } return GL_FALSE; } #endif /* ENABLE_OPENGL */ aranym-1.1.0/src/fakeio.cpp0000664000175000017500000000366713454637621013746 0ustar joyjoy/* * fakeio.cpp - memory mapped peripheral emulation code * * Copyright (c) 2001-2005 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "icio.h" #include "parameters.h" #ifdef HW_SIGSEGV # define FakeIOPlace (addr - HWBase + FakeIOBaseHost) #else # define FakeIOPlace Atari2HostAddr(addr) #endif uint8 BASE_IO::handleRead(memptr addr) { return do_get_mem_byte((uint8 *)FakeIOPlace); // fetch from underlying RAM } uint16 BASE_IO::handleReadW(memptr addr) { return (handleRead(addr) << 8) | handleRead(addr+1); } uint32 BASE_IO::handleReadL(memptr addr) { return (handleReadW(addr) << 16) | handleReadW(addr+2); } void BASE_IO::handleWrite(memptr addr, uint8 value) { do_put_mem_byte((uint8 *)FakeIOPlace, value); // store to underlying RAM } void BASE_IO::handleWriteW(memptr addr, uint16 value) { handleWrite(addr, value >> 8); handleWrite(addr+1, value); } void BASE_IO::handleWriteL(memptr addr, uint32 value) { handleWriteW(addr, value >> 16); handleWriteW(addr+2, value); } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/emul_op.cpp0000664000175000017500000001714013454637621014137 0ustar joyjoy/* * emul_op.cpp - 68k opcodes for ARAnyM specific hacking * * Copyright (c) 2001-2006 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * based on Basilisk II (C) 1997-2000 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "main.h" #include "emul_op.h" #include "parameters.h" #include "bootos.h" #include "compiler/compemu.h" #define DEBUG 0 #include "debug.h" /* * Execute EMUL_OP opcode (called by 68k emulator or Illegal Instruction trap handler) */ bool EmulOp(uint16 opcode, M68kRegisters *r) { #define SUPER_ONLY() \ if (!(r->sr & 0x2000)) { Exception(8, 0); return false; } // D(bug("EmulOp %04x\n", opcode)); switch (opcode) { case M68K_EMUL_BREAK: { // Breakpoint SUPER_ONLY(); printf("*** Breakpoint\n"); printf("d0 %08lx d1 %08lx d2 %08lx d3 %08lx\n" "d4 %08lx d5 %08lx d6 %08lx d7 %08lx\n" "a0 %08lx a1 %08lx a2 %08lx a3 %08lx\n" "a4 %08lx a5 %08lx a6 %08lx a7 %08lx\n" "sr %04x\n", (unsigned long)r->d[0], (unsigned long)r->d[1], (unsigned long)r->d[2], (unsigned long)r->d[3], (unsigned long)r->d[4], (unsigned long)r->d[5], (unsigned long)r->d[6], (unsigned long)r->d[7], (unsigned long)r->a[0], (unsigned long)r->a[1], (unsigned long)r->a[2], (unsigned long)r->a[3], (unsigned long)r->a[4], (unsigned long)r->a[5], (unsigned long)r->a[6], (unsigned long)r->a[7], r->sr); QuitEmulator(); return false; } case M68K_EMUL_RESET: // used in Linux/m68k reboot routine SUPER_ONLY(); bootOs->reset(false); // reload linux kernel Reset680x0(); // reset CPU so it fetches correct SP && PC return false; case M68K_EMUL_INIT: SUPER_ONLY(); { ARADATA *ara = getARADATA(); if (ara) ara->setAbase(r->a[0]); if (ReadInt16(m68k_getpc() + 2) == 0x4cdf) // patch in EmuTOS { r->d[0] = 0; } else { r->a[0] = ReadInt32(0x47a); // perform the move.l (0x47a),a0 that we patched out in TOS 4.04 } } break; // VT52 Xconout case M68K_EMUL_OP_PUT_SCRAP: SUPER_ONLY(); { static bool Esc = false; static bool inverse = false; static int params = 0; uae_u8 value = r->d[1]; D(bug("XConout printing '%c' (%d/$%x)", value, value, value)); if (Esc) { if (value == 'p') inverse = true; if (value == 'q') inverse = false; else if (value == 'K') ; /* delete to end of line (I guess) */ else if (value == 'Y') params = 2; Esc = false; } else { if (params > 0) params--; else { if (value == 27) Esc = true; else { fprintf(stdout, "%c", (value == 32 && inverse) ? '_' : value); fflush(stdout); } } } } break; case M68K_EMUL_OP_CPUDEBUG_ON: SUPER_ONLY(); cpu_debugging = true; break; case M68K_EMUL_OP_CPUDEBUG_OFF: SUPER_ONLY(); cpu_debugging = false; break; case M68K_EMUL_OP_MON0: case M68K_EMUL_OP_MON1: case M68K_EMUL_OP_MON2: case M68K_EMUL_OP_MON3: case M68K_EMUL_OP_MON4: case M68K_EMUL_OP_MON5: case M68K_EMUL_OP_MON6: case M68K_EMUL_OP_MON7: case M68K_EMUL_OP_MON8: case M68K_EMUL_OP_MON9: SUPER_ONLY(); fprintf(stderr, "Monitor %08x\n", opcode); fprintf(stderr, "d0 %08lx d1 %08lx d2 %08lx d3 %08lx\n" "d4 %08lx d5 %08lx d6 %08lx d7 %08lx\n" "a0 %08lx a1 %08lx a2 %08lx a3 %08lx\n" "a4 %08lx a5 %08lx a6 %08lx a7 %08lx\n" "sr %04x\n" "pc %08lx instr %08lx\n", (unsigned long)r->d[0], (unsigned long)r->d[1], (unsigned long)r->d[2], (unsigned long)r->d[3], (unsigned long)r->d[4], (unsigned long)r->d[5], (unsigned long)r->d[6], (unsigned long)r->d[7], (unsigned long)r->a[0], (unsigned long)r->a[1], (unsigned long)r->a[2], (unsigned long)r->a[3], (unsigned long)r->a[4], (unsigned long)r->a[5], (unsigned long)r->a[6], (unsigned long)r->a[7], r->sr, (unsigned long)m68k_getpc(), (unsigned long)ReadInt32(m68k_getpc())); break; case M68K_EMUL_OP_MONa: case M68K_EMUL_OP_MONb: case M68K_EMUL_OP_MONc: case M68K_EMUL_OP_MONd: case M68K_EMUL_OP_MONe: SUPER_ONLY(); fprintf(stderr, "Monitor %08x\n", opcode); #ifdef JIT_DEBUG compiler_dumpstate(); #else fprintf(stderr, "d0 %08lx d1 %08lx d2 %08lx d3 %08lx\n" "d4 %08lx d5 %08lx d6 %08lx d7 %08lx\n" "a0 %08lx a1 %08lx a2 %08lx a3 %08lx\n" "a4 %08lx a5 %08lx a6 %08lx a7 %08lx\n" "sr %04x\n" "pc %08lx instr %08lx\n", (unsigned long)r->d[0], (unsigned long)r->d[1], (unsigned long)r->d[2], (unsigned long)r->d[3], (unsigned long)r->d[4], (unsigned long)r->d[5], (unsigned long)r->d[6], (unsigned long)r->d[7], (unsigned long)r->a[0], (unsigned long)r->a[1], (unsigned long)r->a[2], (unsigned long)r->a[3], (unsigned long)r->a[4], (unsigned long)r->a[5], (unsigned long)r->a[6], (unsigned long)r->a[7], r->sr, (unsigned long)m68k_getpc(), (unsigned long)ReadInt32(m68k_getpc())); #endif break; case M68K_EMUL_OP_DEBUGGER: SUPER_ONLY(); #ifdef DEBUGGER activate_debugger(); #endif break; case M68K_EMUL_OP_JIT: #ifdef USE_JIT { int32_t enable = r->d[0]; int32_t state; state = bx_options.jit.jit & 1; #ifdef USE_JIT_FPU state |= (bx_options.jit.jitfpu & 1) << 1; #endif #ifdef JIT_DEBUG state |= (bx_options.jit.jitdebug & 1) << 2; #endif state |= (get_cache_state() & 1) << 3; enable = r->d[0]; if (enable >= 0) { bx_options.jit.jit = enable & 1; #ifdef USE_JIT_FPU bx_options.jit.jitfpu = (enable >> 1) & 1; #endif #ifdef JIT_DEBUG bx_options.jit.jitdebug = (enable >> 2) & 1; #endif set_cache_state((enable >> 3) & 1); /* FIXME: when toggling jitfpu, have to rebuild cpu tables */ } r->d[0] = state; } #else r->d[0] = -1; #endif break; default: printf("FATAL: EMUL_OP called with bogus opcode %08x\n", opcode); printf("d0 %08lx d1 %08lx d2 %08lx d3 %08lx\n" "d4 %08lx d5 %08lx d6 %08lx d7 %08lx\n" "a0 %08lx a1 %08lx a2 %08lx a3 %08lx\n" "a4 %08lx a5 %08lx a6 %08lx a7 %08lx\n" "sr %04x\n", (unsigned long)r->d[0], (unsigned long)r->d[1], (unsigned long)r->d[2], (unsigned long)r->d[3], (unsigned long)r->d[4], (unsigned long)r->d[5], (unsigned long)r->d[6], (unsigned long)r->d[7], (unsigned long)r->a[0], (unsigned long)r->a[1], (unsigned long)r->a[2], (unsigned long)r->a[3], (unsigned long)r->a[4], (unsigned long)r->a[5], (unsigned long)r->a[6], (unsigned long)r->a[7], r->sr); QuitEmulator(); return false; } return true; #undef SUPER_ONLY } aranym-1.1.0/src/dyngl.c0000664000175000017500000000271713454637621013260 0ustar joyjoy/* OpenGL dynamic loader (C) 2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include "SDL_compat.h" #include "SDL_opengl_wrapper.h" #include "dyngl.h" #ifdef __cplusplus extern "C" { #endif /*--- Global variables ---*/ dyngl_funcs gl; /*--- Functions ---*/ int dyngl_load(const char *filename) { int res = 1; if (filename != NULL && strlen(filename)>1) { if (SDL_GL_LoadLibrary(filename)<0) return -1; } else { /* Try to load default */ if (SDL_GL_LoadLibrary(NULL)<0) { return -1; } res = 0; } #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) gl.name = SDL_GL_GetProcAddress(#gl #name); #define GLU_PROC(type, gl, name, export, upper, proto, args, first, ret) #include "../../atari/nfosmesa/glfuncs.h" return res; } #ifdef __cplusplus } #endif aranym-1.1.0/src/dsp_disasm.c0000664000175000017500000017072613454637621014277 0ustar joyjoy/* DSP M56001 emulation Disassembler (C) 2003-2008 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include "dsp_core.h" #include "dsp_cpu.h" #include "dsp_disasm.h" #define DEBUG 0 /* More disasm infos, if wanted */ #define DSP_DISASM_REG_PC 0 /********************************** * Defines **********************************/ #define BITMASK(x) ((1<<(x))-1) /********************************** * Variables **********************************/ /* Current instruction */ static Uint32 cur_inst; /* Previous instruction */ static Uint32 prev_inst_pc = 0x10000; /* Init to an invalid value */ static dsp_core_t *dsp_core; void dsp56k_disasm_init(dsp_core_t *my_dsp_core) { dsp_core = my_dsp_core; } /********************************** * Register change **********************************/ static Uint32 registers_save[64]; static Uint32 registers_changed[64]; #if DSP_DISASM_REG_PC static Uint32 pc_save; #endif static const char *registers_name[64]={ "???","???","???","???", "x0","x1","y0","y1", "a0","b0","a2","b2", "a1","b1","a","b", "r0","r1","r2","r3", "r4","r5","r6","r7", "n0","n1","n2","n3", "n4","n5","n6","n7", "m0","m1","m2","m3", "m4","m5","m6","m7", "???","???","???","???", "???","???","???","???", "???","???","???","???", "???","???","???","???", "???","sr","omr","sp", "ssh","ssl","la","lc" }; void dsp56k_disasm_reg_read(void) { memcpy(registers_save, dsp_core->registers , sizeof(registers_save)); memset(registers_changed, 0, sizeof(registers_changed)); #if DSP_DISASM_REG_PC pc_save = dsp_core->pc; #endif } void dsp56k_disasm_reg_compare(void) { int i; for (i=0;i<64;i++) { if (!registers_changed[i]) { continue; } switch(i) { case DSP_REG_X0: case DSP_REG_X1: case DSP_REG_Y0: case DSP_REG_Y1: case DSP_REG_A0: case DSP_REG_A1: case DSP_REG_B0: case DSP_REG_B1: fprintf(stderr,"Dsp: Reg: %s: 0x%06x -> 0x%06x\n", registers_name[i], registers_save[i] & BITMASK(24), dsp_core->registers[i] & BITMASK(24)); break; case DSP_REG_R0: case DSP_REG_R1: case DSP_REG_R2: case DSP_REG_R3: case DSP_REG_R4: case DSP_REG_R5: case DSP_REG_R6: case DSP_REG_R7: case DSP_REG_M0: case DSP_REG_M1: case DSP_REG_M2: case DSP_REG_M3: case DSP_REG_M4: case DSP_REG_M5: case DSP_REG_M6: case DSP_REG_M7: case DSP_REG_N0: case DSP_REG_N1: case DSP_REG_N2: case DSP_REG_N3: case DSP_REG_N4: case DSP_REG_N5: case DSP_REG_N6: case DSP_REG_N7: case DSP_REG_SR: case DSP_REG_LA: case DSP_REG_LC: fprintf(stderr,"Dsp: Reg: %s: 0x%04x -> 0x%04x\n", registers_name[i], registers_save[i] & BITMASK(16), dsp_core->registers[i] & BITMASK(16)); break; case DSP_REG_A2: case DSP_REG_B2: case DSP_REG_OMR: case DSP_REG_SP: case DSP_REG_SSH: case DSP_REG_SSL: fprintf(stderr,"Dsp: Reg: %s: 0x%02x -> 0x%02x\n", registers_name[i], registers_save[i] & BITMASK(8), dsp_core->registers[i] & BITMASK(8)); break; case DSP_REG_A: case DSP_REG_B: { fprintf(stderr,"Dsp: Reg: %s: 0x%02x:%06x:%06x -> 0x%02x:%06x:%06x\n", registers_name[i], registers_save[DSP_REG_A2+(i & 1)] & BITMASK(8), registers_save[DSP_REG_A1+(i & 1)] & BITMASK(24), registers_save[DSP_REG_A0+(i & 1)] & BITMASK(24), dsp_core->registers[DSP_REG_A2+(i & 1)] & BITMASK(8), dsp_core->registers[DSP_REG_A1+(i & 1)] & BITMASK(24), dsp_core->registers[DSP_REG_A0+(i & 1)] & BITMASK(24) ); } break; } } #if DSP_DISASM_REG_PC if (pc_save != dsp_core->pc) { fprintf(stderr,"Dsp: Reg: pc: 0x%04x -> 0x%04x\n", pc_save, dsp_core->pc); } #endif } /********************************** * Opcode disassembler **********************************/ static Uint32 read_memory(Uint32 currPc); typedef void (*dsp_emul_t)(void); static void opcode8h_0(void); static void opcode8h_1(void); static void opcode8h_4(void); static void opcode8h_6(void); static void opcode8h_8(void); static void opcode8h_a(void); static void opcode8h_b(void); static int dsp_calc_ea(Uint32 ea_mode, char *dest); static void dsp_calc_cc(Uint32 cc_mode, char *dest); static void dsp_undefined(void); /* Instructions without parallel moves */ static void dsp_andi(void); static void dsp_bchg(void); static void dsp_bclr(void); static void dsp_bset(void); static void dsp_btst(void); static void dsp_div(void); static void dsp_do(void); static void dsp_enddo(void); static void dsp_illegal(void); static void dsp_jcc(void); static void dsp_jclr(void); static void dsp_jmp(void); static void dsp_jscc(void); static void dsp_jsclr(void); static void dsp_jset(void); static void dsp_jsr(void); static void dsp_jsset(void); static void dsp_lua(void); static void dsp_movec(void); static void dsp_movem(void); static void dsp_movep(void); static void dsp_nop(void); static void dsp_norm(void); static void dsp_ori(void); static void dsp_rep(void); static void dsp_reset(void); static void dsp_rti(void); static void dsp_rts(void); static void dsp_stop(void); static void dsp_swi(void); static void dsp_tcc(void); static void dsp_wait(void); static void dsp_do_0(void); static void dsp_do_2(void); static void dsp_do_4(void); static void dsp_do_c(void); static void dsp_movec_reg(void); static void dsp_movec_aa(void); static void dsp_movec_ea(void); static void dsp_movec_imm(void); static void dsp_movep_0(void); static void dsp_movep_1(void); static void dsp_movep_2(void); static void dsp_rep_aa(void); static void dsp_rep_imm(void); static void dsp_rep_ea(void); static void dsp_rep_reg(void); /* Parallel moves */ static void dsp_pm(void); static void dsp_pm_0(void); static void dsp_pm_1(void); static void dsp_pm_2(void); static void dsp_pm_4(void); static void dsp_pm_8(void); /* Instructions with parallel moves */ static void dsp_abs(void); static void dsp_adc(void); static void dsp_add(void); static void dsp_addl(void); static void dsp_addr(void); static void dsp_and(void); static void dsp_asl(void); static void dsp_asr(void); static void dsp_clr(void); static void dsp_cmp(void); static void dsp_cmpm(void); static void dsp_eor(void); static void dsp_lsl(void); static void dsp_lsr(void); static void dsp_mac(void); static void dsp_macr(void); static void dsp_move(void); static void dsp_move_nopm(void); static void dsp_mpy(void); static void dsp_mpyr(void); static void dsp_neg(void); static void dsp_not(void); static void dsp_or(void); static void dsp_rnd(void); static void dsp_rol(void); static void dsp_ror(void); static void dsp_sbc(void); static void dsp_sub(void); static void dsp_subl(void); static void dsp_subr(void); static void dsp_tfr(void); static void dsp_tst(void); static dsp_emul_t opcodes8h[16]={ opcode8h_0, opcode8h_1, dsp_tcc, dsp_tcc, opcode8h_4, dsp_movec, opcode8h_6, dsp_movem, opcode8h_8, opcode8h_8, opcode8h_a, opcode8h_b, dsp_jmp, dsp_jsr, dsp_jcc, dsp_jscc }; static dsp_emul_t opcodes_0809[16]={ dsp_move_nopm, dsp_move_nopm, dsp_move_nopm, dsp_move_nopm, dsp_movep, dsp_movep, dsp_movep, dsp_movep, dsp_move_nopm, dsp_move_nopm, dsp_move_nopm, dsp_move_nopm, dsp_movep, dsp_movep, dsp_movep, dsp_movep }; static dsp_emul_t opcodes_0a[32]={ dsp_bclr, dsp_bset, dsp_bclr, dsp_bset, dsp_jclr, dsp_jset, dsp_jclr, dsp_jset, dsp_bclr, dsp_bset, dsp_bclr, dsp_bset, dsp_jclr, dsp_jset, dsp_jclr, dsp_jset, dsp_bclr, dsp_bset, dsp_bclr, dsp_bset, dsp_jclr, dsp_jset, dsp_jclr, dsp_jset, dsp_jclr, dsp_jset, dsp_bclr, dsp_bset, dsp_jmp, dsp_jcc, dsp_undefined, dsp_undefined }; static dsp_emul_t opcodes_0b[32]={ dsp_bchg, dsp_btst, dsp_bchg, dsp_btst, dsp_jsclr, dsp_jsset, dsp_jsclr, dsp_jsset, dsp_bchg, dsp_btst, dsp_bchg, dsp_btst, dsp_jsclr, dsp_jsset, dsp_jsclr, dsp_jsset, dsp_bchg, dsp_btst, dsp_bchg, dsp_btst, dsp_jsclr, dsp_jsset, dsp_jsclr, dsp_jsset, dsp_jsclr, dsp_jsclr, dsp_bchg, dsp_btst, dsp_jsr, dsp_jscc, dsp_undefined, dsp_undefined }; static dsp_emul_t opcodes_alu003f[64]={ /* 0x00 - 0x0f */ dsp_move, dsp_tfr, dsp_addr, dsp_tst, dsp_undefined, dsp_cmp, dsp_subr, dsp_cmpm, dsp_undefined, dsp_tfr, dsp_addr, dsp_tst, dsp_undefined, dsp_cmp, dsp_subr, dsp_cmpm, /* 0x10 - 0x1f */ dsp_add, dsp_rnd, dsp_addl, dsp_clr, dsp_sub, dsp_undefined, dsp_subl, dsp_not, dsp_add, dsp_rnd, dsp_addl, dsp_clr, dsp_sub, dsp_undefined, dsp_subl, dsp_not, /* 0x20 - 0x2f */ dsp_add, dsp_adc, dsp_asr, dsp_lsr, dsp_sub, dsp_sbc, dsp_abs, dsp_ror, dsp_add, dsp_adc, dsp_asr, dsp_lsr, dsp_sub, dsp_sbc, dsp_abs, dsp_ror, /* 0x30 - 0x3f */ dsp_add, dsp_adc, dsp_asl, dsp_lsl, dsp_sub, dsp_sbc, dsp_neg, dsp_rol, dsp_add, dsp_adc, dsp_asl, dsp_lsl, dsp_sub, dsp_sbc, dsp_neg, dsp_rol }; static dsp_emul_t opcodes_alu407f[16]={ dsp_add, dsp_tfr, dsp_or, dsp_eor, dsp_sub, dsp_cmp, dsp_and, dsp_cmpm, dsp_add, dsp_tfr, dsp_or, dsp_eor, dsp_sub, dsp_cmp, dsp_and, dsp_cmpm }; static dsp_emul_t opcodes_alu80ff[4]={ dsp_mpy, dsp_mpyr, dsp_mac, dsp_macr }; static dsp_emul_t opcodes_do[16]={ dsp_do_0, dsp_undefined, dsp_do_2, dsp_undefined, dsp_do_4, dsp_undefined, dsp_do_2, dsp_undefined, dsp_undefined, dsp_undefined, dsp_do_2, dsp_undefined, dsp_do_c, dsp_undefined, dsp_do_2, dsp_undefined }; static dsp_emul_t opcodes_movec[16]={ dsp_undefined, dsp_undefined, dsp_undefined, dsp_undefined, dsp_undefined, dsp_undefined, dsp_undefined, dsp_movec_reg, dsp_undefined, dsp_movec_aa, dsp_undefined, dsp_movec_ea, dsp_undefined, dsp_movec_imm, dsp_undefined, dsp_movec_imm }; static dsp_emul_t opcodes_movep[4]={ dsp_movep_0, dsp_movep_1, dsp_movep_2, dsp_movep_2 }; static dsp_emul_t opcodes_rep[16]={ dsp_undefined, dsp_rep_aa, dsp_undefined, dsp_rep_imm, dsp_undefined, dsp_rep_ea, dsp_undefined, dsp_rep_imm, dsp_undefined, dsp_undefined, dsp_undefined, dsp_rep_imm, dsp_undefined, dsp_rep_reg, dsp_undefined, dsp_rep_imm }; static dsp_emul_t opcodes_parmove[16]={ dsp_pm_0, dsp_pm_1, dsp_pm_2, dsp_pm_2, dsp_pm_4, dsp_pm_4, dsp_pm_4, dsp_pm_4, dsp_pm_8, dsp_pm_8, dsp_pm_8, dsp_pm_8, dsp_pm_8, dsp_pm_8, dsp_pm_8, dsp_pm_8 }; static int registers_tcc[16][2]={ {DSP_REG_B,DSP_REG_A}, {DSP_REG_A,DSP_REG_B}, {DSP_REG_NULL,DSP_REG_NULL}, {DSP_REG_NULL,DSP_REG_NULL}, {DSP_REG_NULL,DSP_REG_NULL}, {DSP_REG_NULL,DSP_REG_NULL}, {DSP_REG_NULL,DSP_REG_NULL}, {DSP_REG_NULL,DSP_REG_NULL}, {DSP_REG_X0,DSP_REG_A}, {DSP_REG_X0,DSP_REG_B}, {DSP_REG_Y0,DSP_REG_A}, {DSP_REG_Y0,DSP_REG_B}, {DSP_REG_X1,DSP_REG_A}, {DSP_REG_X1,DSP_REG_B}, {DSP_REG_Y1,DSP_REG_A}, {DSP_REG_Y1,DSP_REG_B} }; static const char *registers_lmove[8]={ "a10", "b10", "x", "y", "a", "b", "ab", "ba" }; static int disasm_registers_lmove[8][2]={ {DSP_REG_A1,DSP_REG_A0}, /* A10 */ {DSP_REG_B1,DSP_REG_B0}, /* B10 */ {DSP_REG_X1,DSP_REG_X0}, /* X */ {DSP_REG_Y1,DSP_REG_Y0}, /* Y */ {DSP_REG_A,DSP_REG_A}, /* A */ {DSP_REG_B,DSP_REG_B}, /* B */ {DSP_REG_A,DSP_REG_B}, /* AB */ {DSP_REG_B,DSP_REG_A} /* BA */ }; static const char *ea_names[9]={ "(r%d)-n%d", /* 000xxx */ "(r%d)+n%d", /* 001xxx */ "(r%d)-", /* 010xxx */ "(r%d)+", /* 011xxx */ "(r%d)", /* 100xxx */ "(r%d+n%d)", /* 101xxx */ "0x%04x", /* 110000 */ "-(r%d)", /* 111xxx */ "0x%06x" /* 110100 */ }; static const char *cc_name[16]={ "cc", "ge", "ne", "pl", "nn", "ec", "lc", "gt", "cs", "lt", "eq", "mi", "nr", "es", "ls", "le" }; static char parallelmove_name[64]; void dsp56k_disasm(void) { Uint32 value; if (prev_inst_pc == dsp_core->pc){ return; } prev_inst_pc = dsp_core->pc; cur_inst = read_memory(dsp_core->pc); strcpy(parallelmove_name, ""); value = (cur_inst >> 16) & BITMASK(8); if ((value < 0x10) && ((cur_inst & 0xfe4000) != 0x080000)) { opcodes8h[value](); } else { dsp_pm(); value = cur_inst & BITMASK(8); if (value < 0x40) { opcodes_alu003f[value](); } else if (value < 0x80) { value &= BITMASK(4); opcodes_alu407f[value](); } else { value &= BITMASK(2); opcodes_alu80ff[value](); } } } void dsp56k_disasm_force_reg_changed(int num_dsp_reg) { registers_changed[num_dsp_reg]=1; } static Uint32 read_memory(Uint32 currPc) { Uint32 value; if (currPc<0x200) { value = dsp_core->ramint[DSP_SPACE_P][currPc]; } else { value = dsp_core->ram[DSP_SPACE_P][currPc & (DSP_RAMSIZE-1)]; } return value & BITMASK(24); } /********************************** * Conditions code calculation **********************************/ static void dsp_calc_cc(Uint32 cc_mode, char *dest) { strcpy(dest, cc_name[cc_mode & BITMASK(4)]); } /********************************** * Effective address calculation **********************************/ static int dsp_calc_ea(Uint32 ea_mode, char *dest) { int value, retour, numreg; value = (ea_mode >> 3) & BITMASK(3); numreg = ea_mode & BITMASK(3); retour = 0; switch (value) { case 0: /* (Rx)-Nx */ sprintf(dest, ea_names[value], numreg, numreg); registers_changed[DSP_REG_R0+numreg]=1; break; case 1: /* (Rx)+Nx */ sprintf(dest, ea_names[value], numreg, numreg); registers_changed[DSP_REG_R0+numreg]=1; break; case 5: /* (Rx+Nx) */ sprintf(dest, ea_names[value], numreg, numreg); break; case 2: /* (Rx)- */ sprintf(dest, ea_names[value], numreg); registers_changed[DSP_REG_R0+numreg]=1; break; case 3: /* (Rx)+ */ sprintf(dest, ea_names[value], numreg); registers_changed[DSP_REG_R0+numreg]=1; break; case 4: /* (Rx) */ sprintf(dest, ea_names[value], numreg); break; case 7: /* -(Rx) */ sprintf(dest, ea_names[value], numreg); registers_changed[DSP_REG_R0+numreg]=1; break; case 6: switch ((ea_mode >> 2) & 1) { case 0: /* Absolute address */ sprintf(dest, ea_names[value], read_memory(dsp_core->pc+1)); break; case 1: /* Immediate value */ sprintf(dest, ea_names[8], read_memory(dsp_core->pc+1)); retour = 1; break; } break; } return retour; } static void opcode8h_0(void) { Uint32 value; if (cur_inst <= 0x00008c) { switch(cur_inst) { case 0x000000: dsp_nop(); break; case 0x000004: dsp_rti(); break; case 0x000005: dsp_illegal(); break; case 0x000006: dsp_swi(); break; case 0x00000c: dsp_rts(); break; case 0x000084: dsp_reset(); break; case 0x000086: dsp_wait(); break; case 0x000087: dsp_stop(); break; case 0x00008c: dsp_enddo(); break; } } else { value = cur_inst & 0xf8; switch (value) { case 0x0000b8: dsp_andi(); break; case 0x0000f8: dsp_ori(); break; } } } static void opcode8h_1(void) { switch(cur_inst & 0xfff8c7) { case 0x018040: dsp_div(); break; case 0x01c805: dsp_norm(); break; } } static void opcode8h_4(void) { switch((cur_inst>>5) & BITMASK(3)) { case 0: dsp_lua(); break; case 5: dsp_movec(); break; } } static void opcode8h_6(void) { if (cur_inst & (1<<5)) { dsp_rep(); } else { dsp_do(); } } static void opcode8h_8(void) { Uint32 value; value = (cur_inst >> 12) & BITMASK(4); opcodes_0809[value](); } static void opcode8h_a(void) { Uint32 value; value = (cur_inst >> 11) & (BITMASK(2)<<3); value |= (cur_inst >> 5) & BITMASK(3); opcodes_0a[value](); } static void opcode8h_b(void) { Uint32 value; value = (cur_inst >> 11) & (BITMASK(2)<<3); value |= (cur_inst >> 5) & BITMASK(3); opcodes_0b[value](); } /********************************** * Non-parallel moves instructions **********************************/ static void dsp_undefined(void) { fprintf(stderr,"Dsp: 0x%04x: 0x%06x unknown instruction\n",dsp_core->pc, cur_inst); } static void dsp_andi(void) { const char *regname; switch(cur_inst & BITMASK(2)) { case 0: regname="mr"; registers_changed[DSP_REG_SR]=1; break; case 1: regname="ccr"; registers_changed[DSP_REG_SR]=1; break; case 2: regname="omr"; registers_changed[DSP_REG_OMR]=1; break; default: regname="???"; break; } registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: andi #0x%02x,%s\n", dsp_core->pc, (cur_inst>>8) & BITMASK(8), regname ); } static void dsp_bchg(void) { char name[18], addr_name[16]; Uint32 memspace, value, numbit; memspace = (cur_inst>>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); switch((cur_inst>>14) & BITMASK(2)) { case 0: /* bchg #n,x:aa */ /* bchg #n,y:aa */ if (memspace) { sprintf(name,"y:0x%04x",value); } else { sprintf(name,"x:0x%04x",value); } break; case 1: /* bchg #n,x:ea */ /* bchg #n,y:ea */ dsp_calc_ea(value, addr_name); if (memspace) { sprintf(name,"y:%s",addr_name); } else { sprintf(name,"x:%s",addr_name); } break; case 2: /* bchg #n,x:pp */ /* bchg #n,y:pp */ if (memspace) { sprintf(name,"y:0x%04x",value+0xffc0); } else { sprintf(name,"x:0x%04x",value+0xffc0); } break; case 3: /* bchg #n,R */ sprintf(name,"%s",registers_name[value]); registers_changed[value]=1; break; } registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: bchg #%d,%s\n",dsp_core->pc, numbit, name); } static void dsp_bclr(void) { char name[18], addr_name[16]; Uint32 memspace, value, numbit; memspace = (cur_inst>>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); switch((cur_inst>>14) & BITMASK(2)) { case 0: /* bclr #n,x:aa */ /* bclr #n,y:aa */ if (memspace) { sprintf(name,"y:0x%04x",value); } else { sprintf(name,"x:0x%04x",value); } break; case 1: /* bclr #n,x:ea */ /* bclr #n,y:ea */ dsp_calc_ea(value, addr_name); if (memspace) { sprintf(name,"y:%s",addr_name); } else { sprintf(name,"x:%s",addr_name); } break; case 2: /* bclr #n,x:pp */ /* bclr #n,y:pp */ if (memspace) { sprintf(name,"y:0x%04x",value+0xffc0); } else { sprintf(name,"x:0x%04x",value+0xffc0); } break; case 3: /* bclr #n,R */ sprintf(name,"%s",registers_name[value]); registers_changed[value]=1; break; } registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: bclr #%d,%s\n",dsp_core->pc, numbit, name); } static void dsp_bset(void) { char name[18], addr_name[16]; Uint32 memspace, value, numbit; memspace = (cur_inst>>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); switch((cur_inst>>14) & BITMASK(2)) { case 0: /* bset #n,x:aa */ /* bset #n,y:aa */ if (memspace) { sprintf(name,"y:0x%04x",value); } else { sprintf(name,"x:0x%04x",value); } break; case 1: /* bset #n,x:ea */ /* bset #n,y:ea */ dsp_calc_ea(value, addr_name); if (memspace) { sprintf(name,"y:%s",addr_name); } else { sprintf(name,"x:%s",addr_name); } break; case 2: /* bset #n,x:pp */ /* bset #n,y:pp */ if (memspace) { sprintf(name,"y:0x%04x",value+0xffc0); } else { sprintf(name,"x:0x%04x",value+0xffc0); } break; case 3: /* bset #n,R */ sprintf(name,"%s",registers_name[value]); registers_changed[value]=1; break; } registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: bset #%d,%s\n",dsp_core->pc, numbit, name); } static void dsp_btst(void) { char name[18], addr_name[16]; Uint32 memspace, value, numbit; memspace = (cur_inst>>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); switch((cur_inst>>14) & BITMASK(2)) { case 0: /* btst #n,x:aa */ /* btst #n,y:aa */ if (memspace) { sprintf(name,"y:0x%04x",value); } else { sprintf(name,"x:0x%04x",value); } break; case 1: /* btst #n,x:ea */ /* btst #n,y:ea */ dsp_calc_ea(value, addr_name); if (memspace) { sprintf(name,"y:%s",addr_name); } else { sprintf(name,"x:%s",addr_name); } break; case 2: /* btst #n,x:pp */ /* btst #n,y:pp */ if (memspace) { sprintf(name,"y:0x%04x",value+0xffc0); } else { sprintf(name,"x:0x%04x",value+0xffc0); } break; case 3: /* btst #n,R */ sprintf(name,"%s",registers_name[value]); registers_changed[value]=1; break; } registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: btst #%d,%s\n",dsp_core->pc, numbit, name); } static void dsp_div(void) { Uint32 srcreg=DSP_REG_NULL, destreg; switch((cur_inst>>4) & BITMASK(2)) { case 0: srcreg = DSP_REG_X0; break; case 1: srcreg = DSP_REG_Y0; break; case 2: srcreg = DSP_REG_X1; break; case 3: srcreg = DSP_REG_Y1; break; } destreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[destreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: div %s,%s\n",dsp_core->pc, registers_name[srcreg],registers_name[destreg]); } static void dsp_do(void) { Uint32 value; value = (cur_inst>>12) & (BITMASK(2)<<2); value |= (cur_inst>>6) & 1<<1; value |= (cur_inst>>5) & 1; opcodes_do[value](); registers_changed[DSP_REG_LA]=1; registers_changed[DSP_REG_LC]=1; registers_changed[DSP_REG_SR]=1; } static void dsp_do_0(void) { char name[16]; if (cur_inst & (1<<6)) { sprintf(name, "y:0x%04x", (cur_inst>>8) & BITMASK(6)); } else { sprintf(name, "x:0x%04x", (cur_inst>>8) & BITMASK(6)); } fprintf(stderr,"Dsp: 0x%04x: do %s,p:0x%04x\n", dsp_core->pc, name, read_memory(dsp_core->pc+1) ); } static void dsp_do_2(void) { fprintf(stderr,"Dsp: 0x%04x: do #0x%04x,p:0x%04x\n", dsp_core->pc, ((cur_inst>>8) & BITMASK(8))|((cur_inst & BITMASK(4))<<8), read_memory(dsp_core->pc+1) ); } static void dsp_do_4(void) { char addr_name[16], name[18]; Uint32 ea_mode; ea_mode = (cur_inst>>8) & BITMASK(6); dsp_calc_ea(ea_mode, addr_name); if (cur_inst & (1<<6)) { sprintf(name, "y:%s", addr_name); } else { sprintf(name, "x:%s", addr_name); } fprintf(stderr,"Dsp: 0x%04x: do %s,p:0x%04x\n", dsp_core->pc, name, read_memory(dsp_core->pc+1) ); } static void dsp_do_c(void) { fprintf(stderr,"Dsp: 0x%04x: do %s,p:0x%04x\n", dsp_core->pc, registers_name[(cur_inst>>8) & BITMASK(6)], read_memory(dsp_core->pc+1) ); } static void dsp_enddo(void) { fprintf(stderr,"Dsp: 0x%04x: enddo\n",dsp_core->pc); } static void dsp_illegal(void) { fprintf(stderr,"Dsp: 0x%04x: illegal\n",dsp_core->pc); } static void dsp_jcc(void) { char cond_name[18], addr_name[16]; Uint32 cc_code=0; switch((cur_inst >> 16) & BITMASK(8)) { case 0x0a: dsp_calc_ea((cur_inst >>8) & BITMASK(6), addr_name); cc_code=cur_inst & BITMASK(4); break; case 0x0e: sprintf(addr_name, "0x%04x", cur_inst & BITMASK(12)); cc_code=(cur_inst>>12) & BITMASK(4); break; } dsp_calc_cc(cc_code, cond_name); fprintf(stderr,"Dsp: 0x%04x: j%s p:%s\n",dsp_core->pc, cond_name, addr_name); } static void dsp_jclr(void) { char srcname[18], addr_name[16]; Uint32 memspace, value, numbit; memspace = (cur_inst>>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); switch((cur_inst>>14) & BITMASK(2)) { case 0: /* jclr #n,x:aa,p:xx */ /* jclr #n,y:aa,p:xx */ if (memspace) { sprintf(srcname, "y:0x%04x", value); } else { sprintf(srcname, "x:0x%04x", value); } break; case 1: /* jclr #n,x:ea,p:xx */ /* jclr #n,y:ea,p:xx */ dsp_calc_ea(value, addr_name); if (memspace) { sprintf(srcname, "y:%s", addr_name); } else { sprintf(srcname, "x:%s", addr_name); } break; case 2: /* jclr #n,x:pp,p:xx */ /* jclr #n,y:pp,p:xx */ value += 0xffc0; if (memspace) { sprintf(srcname, "y:0x%04x", value); } else { sprintf(srcname, "x:0x%04x", value); } break; case 3: /* jclr #n,R,p:xx */ strcpy(srcname, registers_name[value]); break; } fprintf(stderr,"Dsp: 0x%04x: jclr #%d,%s,p:0x%04x\n", dsp_core->pc, numbit, srcname, read_memory(dsp_core->pc+1) ); } static void dsp_jmp(void) { char dstname[16]; switch((cur_inst >> 16) & BITMASK(8)) { case 0x0a: dsp_calc_ea((cur_inst >>8) & BITMASK(6), dstname); break; case 0x0c: sprintf(dstname, "0x%04x", cur_inst & BITMASK(12)); break; } fprintf(stderr,"Dsp: 0x%04x: jmp p:%s\n",dsp_core->pc, dstname); } static void dsp_jscc(void) { char cond_name[16], addr_name[16]; Uint32 cc_code=0; switch((cur_inst >> 16) & BITMASK(8)) { case 0x0b: dsp_calc_ea((cur_inst >>8) & BITMASK(6), addr_name); cc_code=cur_inst & BITMASK(4); break; case 0x0f: sprintf(addr_name, "0x%04x", cur_inst & BITMASK(12)); cc_code=(cur_inst>>12) & BITMASK(4); break; } dsp_calc_cc(cc_code, cond_name); fprintf(stderr,"Dsp: 0x%04x: js%s p:%s\n",dsp_core->pc, cond_name, addr_name); } static void dsp_jsclr(void) { char srcname[18], addr_name[16]; Uint32 memspace, value, numbit; memspace = (cur_inst>>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); switch((cur_inst>>14) & BITMASK(2)) { case 0: /* jsclr #n,x:aa,p:xx */ /* jsclr #n,y:aa,p:xx */ if (memspace) { sprintf(srcname, "y:0x%04x", value); } else { sprintf(srcname, "x:0x%04x", value); } break; case 1: /* jsclr #n,x:ea,p:xx */ /* jsclr #n,y:ea,p:xx */ dsp_calc_ea(value, addr_name); if (memspace) { sprintf(srcname, "y:%s", addr_name); } else { sprintf(srcname, "x:%s", addr_name); } break; case 2: /* jsclr #n,x:pp,p:xx */ /* jsclr #n,y:pp,p:xx */ value += 0xffc0; if (memspace) { sprintf(srcname, "y:0x%04x", value); } else { sprintf(srcname, "x:0x%04x", value); } break; case 3: /* jsclr #n,R,p:xx */ strcpy(srcname, registers_name[value]); break; } fprintf(stderr,"Dsp: 0x%04x: jsclr #%d,%s,p:0x%04x\n", dsp_core->pc, numbit, srcname, read_memory(dsp_core->pc+1) ); } static void dsp_jset(void) { char srcname[18], addr_name[16]; Uint32 memspace, value, numbit; memspace = (cur_inst>>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); switch((cur_inst>>14) & BITMASK(2)) { case 0: /* jset #n,x:aa,p:xx */ /* jset #n,y:aa,p:xx */ if (memspace) { sprintf(srcname, "y:0x%04x", value); } else { sprintf(srcname, "x:0x%04x", value); } break; case 1: /* jset #n,x:ea,p:xx */ /* jset #n,y:ea,p:xx */ dsp_calc_ea(value, addr_name); if (memspace) { sprintf(srcname, "y:%s", addr_name); } else { sprintf(srcname, "x:%s", addr_name); } break; case 2: /* jset #n,x:pp,p:xx */ /* jset #n,y:pp,p:xx */ value += 0xffc0; if (memspace) { sprintf(srcname, "y:0x%04x", value); } else { sprintf(srcname, "x:0x%04x", value); } break; case 3: /* jset #n,R,p:xx */ strcpy(srcname, registers_name[value]); break; } fprintf(stderr,"Dsp: 0x%04x: jset #%d,%s,p:0x%04x\n", dsp_core->pc, numbit, srcname, read_memory(dsp_core->pc+1) ); } static void dsp_jsr(void) { char dstname[16]; if (((cur_inst>>12) & BITMASK(4))==0) { sprintf(dstname, "0x%04x", cur_inst & BITMASK(12)); } else { dsp_calc_ea((cur_inst>>8) & BITMASK(6),dstname); } fprintf(stderr,"Dsp: 0x%04x: jsr p:%s\n",dsp_core->pc, dstname); } static void dsp_jsset(void) { char srcname[18], addr_name[16]; Uint32 memspace, value, numbit; memspace = (cur_inst>>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); switch((cur_inst>>14) & BITMASK(2)) { case 0: /* jsset #n,x:aa,p:xx */ /* jsset #n,y:aa,p:xx */ if (memspace) { sprintf(srcname, "y:0x%04x", value); } else { sprintf(srcname, "x:0x%04x", value); } break; case 1: /* jsset #n,x:ea,p:xx */ /* jsset #n,y:ea,p:xx */ dsp_calc_ea(value, addr_name); if (memspace) { sprintf(srcname, "y:%s", addr_name); } else { sprintf(srcname, "x:%s", addr_name); } break; case 2: /* jsset #n,x:pp,p:xx */ /* jsset #n,y:pp,p:xx */ value += 0xffc0; if (memspace) { sprintf(srcname, "y:0x%04x", value); } else { sprintf(srcname, "x:0x%04x", value); } break; case 3: /* jsset #n,R,p:xx */ strcpy(srcname, registers_name[value]); break; } fprintf(stderr,"Dsp: 0x%04x: jsset #%d,%s,p:0x%04x\n", dsp_core->pc, numbit, srcname, read_memory(dsp_core->pc+1) ); } static void dsp_lua(void) { char addr_name[16], numreg; dsp_calc_ea((cur_inst>>8) & BITMASK(5), addr_name); numreg = cur_inst & BITMASK(3); registers_changed[DSP_REG_R0+numreg]=1; fprintf(stderr,"Dsp: 0x%04x: lua %s,r%d\n",dsp_core->pc, addr_name, numreg); } static void dsp_movec(void) { Uint32 value; value = (cur_inst>>13) & (1<<3); value |= (cur_inst>>12) & (1<<2); value |= (cur_inst>>6) & (1<<1); value |= (cur_inst>>5) & 1; opcodes_movec[value](); registers_changed[DSP_REG_SR]=1; } static void dsp_movec_reg(void) { Uint32 numreg1, numreg2; /* S1,D2 */ /* S2,D1 */ numreg2 = (cur_inst>>8) & BITMASK(6); numreg1 = (cur_inst & BITMASK(5))|0x20; if (cur_inst & (1<<15)) { /* Write D1 */ fprintf(stderr,"Dsp: 0x%04x: movec %s,%s\n",dsp_core->pc, registers_name[numreg2], registers_name[numreg1]); registers_changed[numreg1]=1; } else { /* Read S1 */ fprintf(stderr,"Dsp: 0x%04x: movec %s,%s\n",dsp_core->pc, registers_name[numreg1], registers_name[numreg2]); registers_changed[numreg2]=1; } } static void dsp_movec_aa(void) { const char *spacename; char srcname[16],dstname[16]; Uint32 numreg, addr; /* x:aa,D1 */ /* S1,x:aa */ /* y:aa,D1 */ /* S1,y:aa */ numreg = (cur_inst & BITMASK(5))|0x20; addr = (cur_inst>>8) & BITMASK(6); if (cur_inst & (1<<6)) { spacename="y"; } else { spacename="x"; } if (cur_inst & (1<<15)) { /* Write D1 */ sprintf(srcname, "%s:<0x%04x", spacename, addr); strcpy(dstname, registers_name[numreg]); } else { /* Read S1 */ strcpy(srcname, registers_name[numreg]); sprintf(dstname, "%s:<0x%04x", spacename, addr); } fprintf(stderr,"Dsp: 0x%04x: movec %s,%s\n",dsp_core->pc, srcname, dstname); } static void dsp_movec_ea(void) { Uint32 numreg; /* #xx,D1 */ numreg = (cur_inst & BITMASK(5))|0x20; registers_changed[numreg]=1; fprintf(stderr,"Dsp: 0x%04x: movec #0x%02x,%s\n",dsp_core->pc, (cur_inst>>8) & BITMASK(8), registers_name[numreg]); } static void dsp_movec_imm(void) { const char *spacename; char srcname[18], dstname[18], addr_name[16]; Uint32 numreg, ea_mode; int retour; /* x:ea,D1 */ /* S1,x:ea */ /* y:ea,D1 */ /* S1,y:ea */ /* #xxxx,D1 */ numreg = (cur_inst & BITMASK(5))|0x20; ea_mode = (cur_inst>>8) & BITMASK(6); retour = dsp_calc_ea(ea_mode, addr_name); if (cur_inst & (1<<6)) { spacename="y"; } else { spacename="x"; } if (cur_inst & (1<<15)) { /* Write D1 */ if (retour) { sprintf(srcname, "#%s", addr_name); } else { sprintf(srcname, "%s:%s", spacename, addr_name); } registers_changed[numreg]=1; strcpy(dstname, registers_name[numreg]); } else { /* Read S1 */ strcpy(srcname, registers_name[numreg]); sprintf(dstname, "%s:%s", spacename, addr_name); } fprintf(stderr,"Dsp: 0x%04x: movec %s,%s\n",dsp_core->pc, srcname, dstname); } static void dsp_movem(void) { char addr_name[16], srcname[18], dstname[18]; Uint32 ea_mode, numreg; if (cur_inst & (1<<14)) { /* S,p:ea */ /* p:ea,D */ ea_mode = (cur_inst>>8) & BITMASK(6); dsp_calc_ea(ea_mode, addr_name); } else { /* S,p:aa */ /* p:aa,D */ sprintf(addr_name, "0x%04x",(cur_inst>>8) & BITMASK(6)); } numreg = cur_inst & BITMASK(6); if (cur_inst & (1<<15)) { /* Write D */ registers_changed[numreg]=1; sprintf(srcname, "p:%s", addr_name); strcpy(dstname, registers_name[numreg]); } else { /* Read S */ strcpy(srcname, registers_name[numreg]); sprintf(dstname, "p:%s", addr_name); } registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: movem %s,%s\n",dsp_core->pc, srcname, dstname); } static void dsp_movep(void) { Uint32 value; value = (cur_inst>>6) & BITMASK(2); opcodes_movep[value](); registers_changed[DSP_REG_SR]=1; } static void dsp_movep_0(void) { char srcname[16]="",dstname[16]=""; Uint32 addr, memspace, numreg; /* S,x:pp */ /* x:pp,D */ /* S,y:pp */ /* y:pp,D */ addr = 0xffc0 + (cur_inst & BITMASK(6)); memspace = (cur_inst>>16) & 1; numreg = (cur_inst>>8) & BITMASK(6); if (cur_inst & (1<<15)) { /* Write pp */ strcpy(srcname, registers_name[numreg]); if (memspace) { sprintf(dstname, "y:0x%04x", addr); } else { sprintf(dstname, "x:0x%04x", addr); } } else { /* Read pp */ if (memspace) { sprintf(srcname, "y:0x%04x", addr); } else { sprintf(srcname, "x:0x%04x", addr); } registers_changed[numreg]=1; strcpy(dstname, registers_name[numreg]); } fprintf(stderr,"Dsp: 0x%04x: movep %s,%s\n",dsp_core->pc, srcname, dstname); } static void dsp_movep_1(void) { char srcname[18]="",dstname[18]="",name[16]=""; Uint32 addr, memspace; /* p:ea,x:pp */ /* x:pp,p:ea */ /* p:ea,y:pp */ /* y:pp,p:ea */ addr = 0xffc0 + (cur_inst & BITMASK(6)); dsp_calc_ea((cur_inst>>8) & BITMASK(6), name); memspace = (cur_inst>>16) & 1; if (cur_inst & (1<<15)) { /* Write pp */ sprintf(srcname, "p:%s", name); if (memspace) { sprintf(dstname, "y:0x%04x", addr); } else { sprintf(dstname, "x:0x%04x", addr); } } else { /* Read pp */ if (memspace) { sprintf(srcname, "y:0x%04x", addr); } else { sprintf(srcname, "x:0x%04x", addr); } sprintf(dstname, "p:%s", name); } fprintf(stderr,"Dsp: 0x%04x: movep %s,%s\n",dsp_core->pc, srcname, dstname); } static void dsp_movep_2(void) { char srcname[18]="",dstname[18]="",name[16]=""; Uint32 addr, memspace, easpace, retour; /* x:ea,x:pp */ /* y:ea,x:pp */ /* #xxxxxx,x:pp */ /* x:pp,x:ea */ /* x:pp,y:ea */ /* x:ea,y:pp */ /* y:ea,y:pp */ /* #xxxxxx,y:pp */ /* y:pp,y:ea */ /* y:pp,x:ea */ addr = 0xffc0 + (cur_inst & BITMASK(6)); retour = dsp_calc_ea((cur_inst>>8) & BITMASK(6), name); memspace = (cur_inst>>16) & 1; easpace = (cur_inst>>6) & 1; if (cur_inst & (1<<15)) { /* Write pp */ if (retour) { sprintf(srcname, "#%s", name); } else { if (easpace) { sprintf(srcname, "y:%s", name); } else { sprintf(srcname, "x:%s", name); } } if (memspace) { sprintf(dstname, "y:0x%04x", addr); } else { sprintf(dstname, "x:0x%04x", addr); } } else { /* Read pp */ if (memspace) { sprintf(srcname, "y:0x%04x", addr); } else { sprintf(srcname, "x:0x%04x", addr); } if (easpace) { sprintf(dstname, "y:%s", name); } else { sprintf(dstname, "x:%s", name); } } fprintf(stderr,"Dsp: 0x%04x: movep %s,%s\n",dsp_core->pc, srcname, dstname); } static void dsp_nop(void) { fprintf(stderr,"Dsp: 0x%04x: nop\n",dsp_core->pc); } static void dsp_norm(void) { Uint32 srcreg, destreg; srcreg = DSP_REG_R0+((cur_inst>>8) & BITMASK(3)); destreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[srcreg]=1; registers_changed[destreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: norm %s,%s\n",dsp_core->pc, registers_name[srcreg], registers_name[destreg]); } static void dsp_ori(void) { const char *regname; switch(cur_inst & BITMASK(2)) { case 0: regname="mr"; registers_changed[DSP_REG_SR]=1; break; case 1: regname="ccr"; registers_changed[DSP_REG_SR]=1; break; case 2: regname="omr"; registers_changed[DSP_REG_OMR]=1; break; default: regname="???"; break; } registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: ori #0x%02x,%s\n", dsp_core->pc, (cur_inst>>8) & BITMASK(8), regname ); } static void dsp_rep(void) { Uint32 value; value = (cur_inst>>12) & (BITMASK(2)<<2); value |= (cur_inst>>6) & (1<<1); value |= (cur_inst>>5) & 1; opcodes_rep[value](); registers_changed[DSP_REG_LC]=1; registers_changed[DSP_REG_SR]=1; } static void dsp_rep_aa(void) { char name[16]; /* x:aa */ /* y:aa */ if (cur_inst & (1<<6)) { sprintf(name, "y:<0x%04x",(cur_inst>>8) & BITMASK(6)); } else { sprintf(name, "x:<0x%04x",(cur_inst>>8) & BITMASK(6)); } fprintf(stderr,"Dsp: 0x%04x: rep %s\n",dsp_core->pc, name); } static void dsp_rep_imm(void) { /* #xxx */ fprintf(stderr,"Dsp: 0x%04x: rep #0x%02x\n",dsp_core->pc, (cur_inst>>8) & BITMASK(8)); } static void dsp_rep_ea(void) { char name[18],addr_name[16]; /* x:ea */ /* y:ea */ dsp_calc_ea((cur_inst>>8) & BITMASK(6), addr_name); if (cur_inst & (1<<6)) { sprintf(name, "y:%s",addr_name); } else { sprintf(name, "x:%s",addr_name); } fprintf(stderr,"Dsp: 0x%04x: rep %s\n",dsp_core->pc, name); } static void dsp_rep_reg(void) { /* R */ fprintf(stderr,"Dsp: 0x%04x: rep %s\n",dsp_core->pc, registers_name[(cur_inst>>8) & BITMASK(6)]); } static void dsp_reset(void) { fprintf(stderr,"Dsp: 0x%04x: reset\n",dsp_core->pc); } static void dsp_rti(void) { registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: rti\n",dsp_core->pc); } static void dsp_rts(void) { registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: rts\n",dsp_core->pc); } static void dsp_stop(void) { fprintf(stderr,"Dsp: 0x%04x: stop\n",dsp_core->pc); } static void dsp_swi(void) { fprintf(stderr,"Dsp: 0x%04x: swi\n",dsp_core->pc); } static void dsp_tcc(void) { char ccname[16]; Uint32 src1reg, dst1reg, src2reg, dst2reg; dsp_calc_cc((cur_inst>>12) & BITMASK(4), ccname); src1reg = registers_tcc[(cur_inst>>3) & BITMASK(4)][0]; dst1reg = registers_tcc[(cur_inst>>3) & BITMASK(4)][1]; registers_changed[dst1reg]=1; if (cur_inst & (1<<16)) { src2reg = DSP_REG_R0+(cur_inst & BITMASK(3)); dst2reg = DSP_REG_R0+((cur_inst>>8) & BITMASK(3)); registers_changed[dst2reg]=1; fprintf(stderr,"Dsp: 0x%04x: t%s %s,%s %s,%s\n", dsp_core->pc, ccname, registers_name[src1reg], registers_name[dst1reg], registers_name[src2reg], registers_name[dst2reg] ); } else { fprintf(stderr,"Dsp: 0x%04x: t%s %s,%s\n", dsp_core->pc, ccname, registers_name[src1reg], registers_name[dst1reg] ); } } static void dsp_wait(void) { fprintf(stderr,"Dsp: 0x%04x: wait\n",dsp_core->pc); } /********************************** * Parallel moves **********************************/ static void dsp_pm(void) { Uint32 value; value = (cur_inst >> 20) & BITMASK(4); opcodes_parmove[value](); } static void dsp_pm_0(void) { char space_name[16], addr_name[16]; Uint32 memspace, numreg1, numreg2; /* 0000 100d 00mm mrrr S,x:ea x0,D 0000 100d 10mm mrrr S,y:ea y0,D */ memspace = (cur_inst>>15) & 1; numreg1 = DSP_REG_A+((cur_inst>>16) & 1); dsp_calc_ea((cur_inst>>8) & BITMASK(6), addr_name); if (memspace) { strcpy(space_name,"y"); numreg2 = DSP_REG_Y0; } else { strcpy(space_name,"x"); numreg2 = DSP_REG_X0; } registers_changed[numreg1]=1; sprintf(parallelmove_name, "%s,%s:%s %s,%s", registers_name[numreg1], space_name, addr_name, registers_name[numreg2], registers_name[numreg1] ); } static void dsp_pm_1(void) { /* 0001 ffdf w0mm mrrr x:ea,D1 S2,D2 S1,x:ea S2,D2 #xxxxxx,D1 S2,D2 0001 deff w1mm mrrr S1,D1 y:ea,D2 S1,D1 S2,y:ea S1,D1 #xxxxxx,D2 */ char addr_name[16]; Uint32 memspace, write_flag, retour, s1reg, s2reg, d1reg, d2reg; memspace = (cur_inst>>14) & 1; write_flag = (cur_inst>>15) & 1; retour = dsp_calc_ea((cur_inst>>8) & BITMASK(6), addr_name); if (memspace==DSP_SPACE_Y) { s2reg = d2reg = DSP_REG_Y0; switch((cur_inst>>16) & BITMASK(2)) { case 0: s2reg = d2reg = DSP_REG_Y0; break; case 1: s2reg = d2reg = DSP_REG_Y1; break; case 2: s2reg = d2reg = DSP_REG_A; break; case 3: s2reg = d2reg = DSP_REG_B; break; } s1reg = DSP_REG_A+((cur_inst>>19) & 1); d1reg = DSP_REG_X0+((cur_inst>>18) & 1); registers_changed[d1reg]=1; if (write_flag) { /* Write D2 */ registers_changed[d2reg]=1; if (retour) { sprintf(parallelmove_name,"%s,%s #%s,%s", registers_name[s1reg], registers_name[d1reg], addr_name, registers_name[d2reg] ); } else { sprintf(parallelmove_name,"%s,%s y:%s,%s", registers_name[s1reg], registers_name[d1reg], addr_name, registers_name[d2reg] ); } } else { /* Read S2 */ sprintf(parallelmove_name,"%s,%s %s,y:%s", registers_name[s1reg], registers_name[d1reg], registers_name[s2reg], addr_name ); } } else { s1reg = d1reg = DSP_REG_X0; switch((cur_inst>>18) & BITMASK(2)) { case 0: s1reg = d1reg = DSP_REG_X0; break; case 1: s1reg = d1reg = DSP_REG_X1; break; case 2: s1reg = d1reg = DSP_REG_A; break; case 3: s1reg = d1reg = DSP_REG_B; break; } s2reg = DSP_REG_A+((cur_inst>>17) & 1); d2reg = DSP_REG_Y0+((cur_inst>>16) & 1); registers_changed[d2reg]=1; if (write_flag) { /* Write D1 */ registers_changed[d1reg]=1; if (retour) { sprintf(parallelmove_name,"#%s,%s %s,%s", addr_name, registers_name[d1reg], registers_name[s2reg], registers_name[d2reg] ); } else { sprintf(parallelmove_name,"x:%s,%s %s,%s", addr_name, registers_name[d1reg], registers_name[s2reg], registers_name[d2reg] ); } } else { /* Read S1 */ sprintf(parallelmove_name,"%s,x:%s %s,%s", registers_name[s1reg], addr_name, registers_name[s2reg], registers_name[d2reg] ); } } } static void dsp_pm_2(void) { char addr_name[16]; Uint32 numreg1, numreg2; /* 0010 0000 0000 0000 nop 0010 0000 010m mrrr R update 0010 00ee eeed dddd S,D 001d dddd iiii iiii #xx,D */ if (((cur_inst >> 8) & 0xffff) == 0x2000) { return; } if (((cur_inst >> 8) & 0xffe0) == 0x2040) { dsp_calc_ea((cur_inst>>8) & BITMASK(5), addr_name); registers_changed[DSP_REG_R0+((cur_inst>>8) & BITMASK(3))]=1; sprintf(parallelmove_name, "%s,r%d",addr_name, (cur_inst>>8) & BITMASK(3)); return; } if (((cur_inst >> 8) & 0xfc00) == 0x2000) { numreg1 = (cur_inst>>13) & BITMASK(5); numreg2 = (cur_inst>>8) & BITMASK(5); registers_changed[numreg2]=1; sprintf(parallelmove_name, "%s,%s", registers_name[numreg1], registers_name[numreg2]); return; } numreg1 = (cur_inst>>16) & BITMASK(5); registers_changed[numreg1]=1; sprintf(parallelmove_name, "#0x%02x,%s", (cur_inst >> 8) & BITMASK(8), registers_name[numreg1]); } static void dsp_pm_4(void) { char addr_name[16]; Uint32 value, retour, ea_mode, memspace; /* 0100 l0ll w0aa aaaa l:aa,D S,l:aa 0100 l0ll w1mm mrrr l:ea,D S,l:ea 01dd 0ddd w0aa aaaa x:aa,D S,x:aa 01dd 0ddd w1mm mrrr x:ea,D S,x:ea #xxxxxx,D 01dd 1ddd w0aa aaaa y:aa,D S,y:aa 01dd 1ddd w1mm mrrr y:ea,D S,y:ea #xxxxxx,D */ value = (cur_inst>>16) & BITMASK(3); value |= (cur_inst>>17) & (BITMASK(2)<<3); ea_mode = (cur_inst>>8) & BITMASK(6); if ((value>>2)==0) { /* L: memory move */ if (cur_inst & (1<<14)) { retour = dsp_calc_ea(ea_mode, addr_name); } else { sprintf(addr_name,"0x%04x", ea_mode); retour = 0; } value = (cur_inst>>16) & BITMASK(2); value |= (cur_inst>>17) & (1<<2); if (cur_inst & (1<<15)) { /* Write D */ registers_changed[disasm_registers_lmove[value][0]]=1; registers_changed[disasm_registers_lmove[value][1]]=1; if (retour) { sprintf(parallelmove_name, "#%s,%s", addr_name, registers_lmove[value]); } else { sprintf(parallelmove_name, "l:%s,%s", addr_name, registers_lmove[value]); } } else { /* Read S */ sprintf(parallelmove_name, "%s,l:%s", registers_lmove[value], addr_name); } return; } memspace = (cur_inst>>19) & 1; if (cur_inst & (1<<14)) { retour = dsp_calc_ea(ea_mode, addr_name); } else { sprintf(addr_name,"0x%04x", ea_mode); retour = 0; } if (memspace) { /* Y: */ if (cur_inst & (1<<15)) { /* Write D */ registers_changed[value]=1; if (retour) { sprintf(parallelmove_name, "#%s,%s", addr_name, registers_name[value]); } else { sprintf(parallelmove_name, "y:%s,%s", addr_name, registers_name[value]); } } else { /* Read S */ sprintf(parallelmove_name, "%s,y:%s", registers_name[value], addr_name); } } else { /* X: */ if (cur_inst & (1<<15)) { /* Write D */ registers_changed[value]=1; if (retour) { sprintf(parallelmove_name, "#%s,%s", addr_name, registers_name[value]); } else { sprintf(parallelmove_name, "x:%s,%s", addr_name, registers_name[value]); } } else { /* Read S */ sprintf(parallelmove_name, "%s,x:%s", registers_name[value], addr_name); } } } static void dsp_pm_8(void) { char addr1_name[16], addr2_name[16]; Uint32 ea_mode1, ea_mode2, numreg1, numreg2; /* 1wmm eeff WrrM MRRR x:ea,D1 y:ea,D2 x:ea,D1 S2,y:ea S1,x:ea y:ea,D2 S1,x:ea S2,y:ea */ numreg1 = DSP_REG_X0; switch((cur_inst>>18) & BITMASK(2)) { case 0: numreg1 = DSP_REG_X0; break; case 1: numreg1 = DSP_REG_X1; break; case 2: numreg1 = DSP_REG_A; break; case 3: numreg1 = DSP_REG_B; break; } numreg2 = DSP_REG_Y0; switch((cur_inst>>16) & BITMASK(2)) { case 0: numreg2 = DSP_REG_Y0; break; case 1: numreg2 = DSP_REG_Y1; break; case 2: numreg2 = DSP_REG_A; break; case 3: numreg2 = DSP_REG_B; break; } ea_mode1 = (cur_inst>>8) & BITMASK(5); if ((ea_mode1>>3) == 0) { ea_mode1 |= (1<<5); } ea_mode2 = (cur_inst>>13) & BITMASK(2); ea_mode2 |= ((cur_inst>>20) & BITMASK(2))<<3; if ((ea_mode1 & (1<<2))==0) { ea_mode2 |= 1<<2; } if ((ea_mode2>>3) == 0) { ea_mode2 |= (1<<5); } dsp_calc_ea(ea_mode1, addr1_name); dsp_calc_ea(ea_mode2, addr2_name); if (cur_inst & (1<<15)) { registers_changed[numreg1]=1; if (cur_inst & (1<<22)) { registers_changed[numreg2]=1; sprintf(parallelmove_name, "x:%s,%s y:%s,%s", addr1_name, registers_name[numreg1], addr2_name, registers_name[numreg2] ); } else { sprintf(parallelmove_name, "x:%s,%s %s,y:%s", addr1_name, registers_name[numreg1], registers_name[numreg2], addr2_name ); } } else { if (cur_inst & (1<<22)) { registers_changed[numreg2]=1; sprintf(parallelmove_name, "%s,x:%s y:%s,%s", registers_name[numreg1], addr1_name, addr2_name, registers_name[numreg2] ); } else { sprintf(parallelmove_name, "%s,x:%s %s,y:%s", registers_name[numreg1], addr1_name, registers_name[numreg2], addr2_name ); } } } /********************************** * Parallel moves ALU instructions **********************************/ static void dsp_abs(void) { Uint32 numreg; numreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: abs %s %s\n", dsp_core->pc, registers_name[numreg], parallelmove_name ); } static void dsp_adc(void) { const char *srcname; Uint32 numreg; if (cur_inst & (1<<4)) { srcname="y"; } else { srcname="x"; } numreg=DSP_REG_A+((cur_inst>>3) & 1); registers_changed[numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: adc %s,%s %s\n", dsp_core->pc, srcname, registers_name[numreg], parallelmove_name ); } static void dsp_add(void) { const char *srcname; Uint32 srcreg, dstreg; srcreg = (cur_inst>>4) & BITMASK(3); dstreg = (cur_inst>>3) & 1; switch(srcreg) { case 1: srcreg = dstreg ^ 1; srcname = registers_name[DSP_REG_A+srcreg]; break; case 2: srcname="x"; break; case 3: srcname="y"; break; case 4: srcname=registers_name[DSP_REG_X0]; break; case 5: srcname=registers_name[DSP_REG_Y0]; break; case 6: srcname=registers_name[DSP_REG_X1]; break; case 7: srcname=registers_name[DSP_REG_Y1]; break; default: srcname="???"; break; } registers_changed[DSP_REG_A+dstreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: add %s,%s %s\n", dsp_core->pc, srcname, registers_name[DSP_REG_A+dstreg], parallelmove_name ); } static void dsp_addl(void) { Uint32 numreg; numreg = (cur_inst>>3) & 1; registers_changed[DSP_REG_A+numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: addl %s,%s %s\n", dsp_core->pc, registers_name[DSP_REG_A+(numreg ^ 1)], registers_name[DSP_REG_A+numreg], parallelmove_name ); } static void dsp_addr(void) { Uint32 numreg; numreg = (cur_inst>>3) & 1; registers_changed[DSP_REG_A+numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: addr %s,%s %s\n", dsp_core->pc, registers_name[DSP_REG_A+(numreg ^ 1)], registers_name[DSP_REG_A+numreg], parallelmove_name ); } static void dsp_and(void) { Uint32 srcreg,dstreg; switch((cur_inst>>4) & BITMASK(2)) { case 1: srcreg=DSP_REG_Y0; break; case 2: srcreg=DSP_REG_X1; break; case 3: srcreg=DSP_REG_Y1; break; case 0: default: srcreg=DSP_REG_X0; } dstreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[dstreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: and %s,%s %s\n", dsp_core->pc, registers_name[srcreg], registers_name[dstreg], parallelmove_name ); } static void dsp_asl(void) { Uint32 numreg; numreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: asl %s %s\n", dsp_core->pc, registers_name[numreg], parallelmove_name ); } static void dsp_asr(void) { Uint32 numreg; numreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: asr %s %s\n", dsp_core->pc, registers_name[numreg], parallelmove_name ); } static void dsp_clr(void) { Uint32 numreg; numreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: clr %s %s\n", dsp_core->pc, registers_name[numreg], parallelmove_name ); } static void dsp_cmp(void) { Uint32 srcreg, dstreg; srcreg = (cur_inst>>4) & BITMASK(3); dstreg = (cur_inst>>3) & 1; switch(srcreg) { case 0: srcreg = DSP_REG_A+(dstreg ^ 1); break; case 4: srcreg = DSP_REG_X0; break; case 5: srcreg = DSP_REG_Y0; break; case 6: srcreg = DSP_REG_X1; break; case 7: srcreg = DSP_REG_Y1; break; } registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: cmp %s,%s %s\n", dsp_core->pc, registers_name[srcreg], registers_name[DSP_REG_A+dstreg], parallelmove_name ); } static void dsp_cmpm(void) { Uint32 srcreg, dstreg; srcreg = (cur_inst>>4) & BITMASK(3); dstreg = (cur_inst>>3) & 1; switch(srcreg) { case 0: srcreg = DSP_REG_A+(dstreg ^ 1); break; case 4: srcreg = DSP_REG_X0; break; case 5: srcreg = DSP_REG_Y0; break; case 6: srcreg = DSP_REG_X1; break; case 7: srcreg = DSP_REG_Y1; break; } registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: cmpm %s,%s %s\n", dsp_core->pc, registers_name[srcreg], registers_name[DSP_REG_A+dstreg], parallelmove_name ); } static void dsp_eor(void) { Uint32 srcreg, dstreg; switch((cur_inst>>4) & BITMASK(2)) { case 1: srcreg=DSP_REG_Y0; break; case 2: srcreg=DSP_REG_X1; break; case 3: srcreg=DSP_REG_Y1; break; case 0: default: srcreg=DSP_REG_X0; } dstreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[dstreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: eor %s,%s %s\n", dsp_core->pc, registers_name[srcreg], registers_name[dstreg], parallelmove_name ); } static void dsp_lsl(void) { Uint32 numreg; numreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: lsl %s %s\n", dsp_core->pc, registers_name[numreg], parallelmove_name ); } static void dsp_lsr(void) { Uint32 numreg; numreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: lsr %s %s\n", dsp_core->pc, registers_name[numreg], parallelmove_name ); } static void dsp_mac(void) { const char *sign_name; Uint32 src1reg=DSP_REG_NULL, src2reg=DSP_REG_NULL, dstreg; if (cur_inst & (1<<2)) { sign_name="-"; } else { sign_name=""; } switch((cur_inst>>4) & BITMASK(3)) { case 0: src1reg = DSP_REG_X0; src2reg = DSP_REG_X0; break; case 1: src1reg = DSP_REG_Y0; src2reg = DSP_REG_Y0; break; case 2: src1reg = DSP_REG_X1; src2reg = DSP_REG_X0; break; case 3: src1reg = DSP_REG_Y1; src2reg = DSP_REG_Y0; break; case 4: src1reg = DSP_REG_X0; src2reg = DSP_REG_Y1; break; case 5: src1reg = DSP_REG_Y0; src2reg = DSP_REG_X0; break; case 6: src1reg = DSP_REG_X1; src2reg = DSP_REG_Y0; break; case 7: src1reg = DSP_REG_Y1; src2reg = DSP_REG_X1; break; } dstreg = (cur_inst>>3) & 1; registers_changed[DSP_REG_A+dstreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: mac %s%s,%s,%s %s\n", dsp_core->pc, sign_name, registers_name[src1reg], registers_name[src2reg], registers_name[DSP_REG_A+dstreg], parallelmove_name ); } static void dsp_macr(void) { const char *sign_name; Uint32 src1reg=DSP_REG_NULL, src2reg=DSP_REG_NULL, dstreg; if (cur_inst & (1<<2)) { sign_name="-"; } else { sign_name=""; } switch((cur_inst>>4) & BITMASK(3)) { case 0: src1reg = DSP_REG_X0; src2reg = DSP_REG_X0; break; case 1: src1reg = DSP_REG_Y0; src2reg = DSP_REG_Y0; break; case 2: src1reg = DSP_REG_X1; src2reg = DSP_REG_X0; break; case 3: src1reg = DSP_REG_Y1; src2reg = DSP_REG_Y0; break; case 4: src1reg = DSP_REG_X0; src2reg = DSP_REG_Y1; break; case 5: src1reg = DSP_REG_Y0; src2reg = DSP_REG_X0; break; case 6: src1reg = DSP_REG_X1; src2reg = DSP_REG_Y0; break; case 7: src1reg = DSP_REG_Y1; src2reg = DSP_REG_X1; break; } dstreg = (cur_inst>>3) & 1; registers_changed[DSP_REG_A+dstreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: macr %s%s,%s,%s %s\n", dsp_core->pc, sign_name, registers_name[src1reg], registers_name[src2reg], registers_name[DSP_REG_A+dstreg], parallelmove_name ); } static void dsp_move(void) { fprintf(stderr,"Dsp: 0x%04x: move %s\n",dsp_core->pc, parallelmove_name); } static void dsp_move_nopm(void) { dsp_pm(); fprintf(stderr,"Dsp: 0x%04x: move %s\n",dsp_core->pc, parallelmove_name); } static void dsp_mpy(void) { const char *sign_name; Uint32 src1reg=DSP_REG_NULL, src2reg=DSP_REG_NULL, dstreg; if (cur_inst & (1<<2)) { sign_name="-"; } else { sign_name=""; } switch((cur_inst>>4) & BITMASK(3)) { case 0: src1reg = DSP_REG_X0; src2reg = DSP_REG_X0; break; case 1: src1reg = DSP_REG_Y0; src2reg = DSP_REG_Y0; break; case 2: src1reg = DSP_REG_X1; src2reg = DSP_REG_X0; break; case 3: src1reg = DSP_REG_Y1; src2reg = DSP_REG_Y0; break; case 4: src1reg = DSP_REG_X0; src2reg = DSP_REG_Y1; break; case 5: src1reg = DSP_REG_Y0; src2reg = DSP_REG_X0; break; case 6: src1reg = DSP_REG_X1; src2reg = DSP_REG_Y0; break; case 7: src1reg = DSP_REG_Y1; src2reg = DSP_REG_X1; break; } dstreg = (cur_inst>>3) & 1; registers_changed[DSP_REG_A+dstreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: mpy %s%s,%s,%s %s\n", dsp_core->pc, sign_name, registers_name[src1reg], registers_name[src2reg], registers_name[DSP_REG_A+dstreg], parallelmove_name ); } static void dsp_mpyr(void) { const char *sign_name; Uint32 src1reg=DSP_REG_NULL, src2reg=DSP_REG_NULL, dstreg; if (cur_inst & (1<<2)) { sign_name="-"; } else { sign_name=""; } switch((cur_inst>>4) & BITMASK(3)) { case 0: src1reg = DSP_REG_X0; src2reg = DSP_REG_X0; break; case 1: src1reg = DSP_REG_Y0; src2reg = DSP_REG_Y0; break; case 2: src1reg = DSP_REG_X1; src2reg = DSP_REG_X0; break; case 3: src1reg = DSP_REG_Y1; src2reg = DSP_REG_Y0; break; case 4: src1reg = DSP_REG_X0; src2reg = DSP_REG_Y1; break; case 5: src1reg = DSP_REG_Y0; src2reg = DSP_REG_X0; break; case 6: src1reg = DSP_REG_X1; src2reg = DSP_REG_Y0; break; case 7: src1reg = DSP_REG_Y1; src2reg = DSP_REG_X1; break; } dstreg = (cur_inst>>3) & 1; registers_changed[DSP_REG_A+dstreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: mpyr %s%s,%s,%s %s\n", dsp_core->pc, sign_name, registers_name[src1reg], registers_name[src2reg], registers_name[DSP_REG_A+dstreg], parallelmove_name ); } static void dsp_neg(void) { Uint32 numreg; numreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: neg %s %s\n", dsp_core->pc, registers_name[numreg], parallelmove_name ); } static void dsp_not(void) { Uint32 numreg; numreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: not %s %s\n", dsp_core->pc, registers_name[numreg], parallelmove_name ); } static void dsp_or(void) { Uint32 srcreg, dstreg; switch((cur_inst>>4) & BITMASK(2)) { case 1: srcreg=DSP_REG_Y0; break; case 2: srcreg=DSP_REG_X1; break; case 3: srcreg=DSP_REG_Y1; break; case 0: default: srcreg=DSP_REG_X0; } dstreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[dstreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: or %s,%s %s\n", dsp_core->pc, registers_name[srcreg], registers_name[dstreg], parallelmove_name ); } static void dsp_rnd(void) { Uint32 numreg; numreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: rnd %s %s\n", dsp_core->pc, registers_name[numreg], parallelmove_name ); } static void dsp_rol(void) { Uint32 numreg; numreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: rol %s %s\n", dsp_core->pc, registers_name[numreg], parallelmove_name ); } static void dsp_ror(void) { Uint32 numreg; numreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: ror %s %s\n", dsp_core->pc, registers_name[numreg], parallelmove_name ); } static void dsp_sbc(void) { const char *srcname; Uint32 numreg; if (cur_inst & (1<<4)) { srcname="y"; } else { srcname="x"; } numreg = DSP_REG_A+((cur_inst>>3) & 1); registers_changed[numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: sbc %s,%s %s\n", dsp_core->pc, srcname, registers_name[numreg], parallelmove_name ); } static void dsp_sub(void) { const char *srcname; Uint32 srcreg, dstreg; srcreg = (cur_inst>>4) & BITMASK(3); dstreg = (cur_inst>>3) & 1; switch(srcreg) { case 1: srcreg = dstreg ^ 1; srcname = registers_name[DSP_REG_A+srcreg]; break; case 2: srcname="x"; break; case 3: srcname="y"; break; case 4: srcname=registers_name[DSP_REG_X0]; break; case 5: srcname=registers_name[DSP_REG_Y0]; break; case 6: srcname=registers_name[DSP_REG_X1]; break; case 7: srcname=registers_name[DSP_REG_Y1]; break; default: srcname="???"; break; } registers_changed[DSP_REG_A+dstreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: sub %s,%s %s\n", dsp_core->pc, srcname, registers_name[DSP_REG_A+dstreg], parallelmove_name ); } static void dsp_subl(void) { Uint32 numreg; numreg = (cur_inst>>3) & 1; registers_changed[DSP_REG_A+numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: subl %s,%s %s\n", dsp_core->pc, registers_name[DSP_REG_A+(numreg ^ 1)], registers_name[DSP_REG_A+numreg], parallelmove_name ); } static void dsp_subr(void) { Uint32 numreg; numreg = (cur_inst>>3) & 1; registers_changed[DSP_REG_A+numreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: subr %s,%s %s\n", dsp_core->pc, registers_name[DSP_REG_A+(numreg ^ 1)], registers_name[DSP_REG_A+numreg], parallelmove_name ); } static void dsp_tfr(void) { Uint32 srcreg, dstreg; srcreg = (cur_inst>>4) & BITMASK(3); dstreg = (cur_inst>>3) & 1; switch(srcreg) { case 4: srcreg = DSP_REG_X0; break; case 5: srcreg = DSP_REG_Y0; break; case 6: srcreg = DSP_REG_X1; break; case 7: srcreg = DSP_REG_Y1; break; case 0: default: srcreg = DSP_REG_A+(dstreg ^ 1); break; } registers_changed[DSP_REG_A+dstreg]=1; registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: tfr %s,%s %s\n", dsp_core->pc, registers_name[srcreg], registers_name[DSP_REG_A+dstreg], parallelmove_name ); } static void dsp_tst(void) { registers_changed[DSP_REG_SR]=1; fprintf(stderr,"Dsp: 0x%04x: tst %s %s\n", dsp_core->pc, registers_name[DSP_REG_A+((cur_inst>>3) & 1)], parallelmove_name ); } aranym-1.1.0/src/dsp_cpu.c0000664000175000017500000034530113454637621013577 0ustar joyjoy/* DSP M56001 emulation Instructions interpreter, execution thread (C) 2003-2008 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "dsp_core.h" #include "dsp_cpu.h" #ifdef DSP_DISASM #include "dsp_disasm.h" #endif #define DEBUG 0 /* More disasm infos, if wanted */ #define DSP_DISASM_INST 0 /* Instructions */ #define DSP_DISASM_REG 0 /* Registers changes */ #define DSP_DISASM_MEM 0 /* Memory changes */ #define DSP_DISASM_INTER 0 /* Interrupts */ #define DSP_DISASM_STATE 0 /* State change */ #define DSP_COUNT_IPS 0 /* Count instruction per seconds */ #if defined(DSP_DISASM) && (DSP_DISASM_MEM==1) # define write_memory(x,y,z) write_memory_disasm(x,y,z) #else # define write_memory(x,y,z) write_memory_raw(x,y,z) #endif /********************************** * Defines **********************************/ #define BITMASK(x) ((1<<(x))-1) #define INTERRUPT_HI 0x0 #define INTERRUPT_SSI 0x1 /********************************** * Variables **********************************/ /* Length of current instruction */ static Uint32 cur_inst_len; /* =0:jump, >0:increment */ /* Current instruction */ static Uint32 cur_inst; /* Parallel move temp data */ typedef union { Uint32 *host_pointer; Uint32 dsp_address; } parmove_dest_u; static Uint32 tmp_parmove_src[2][3]; /* What to read */ static parmove_dest_u tmp_parmove_dest[2][3]; /* Where to write */ static Uint32 tmp_parmove_start[2]; /* From where to read/write */ static Uint32 tmp_parmove_len[2]; /* How many to read/write */ static Uint32 tmp_parmove_type[2]; /* 0=register, 1=memory */ static Uint32 tmp_parmove_space[2]; /* Memory space to write to */ /* PC on Rep instruction ? */ static Uint32 pc_on_rep; /********************************** * Functions **********************************/ typedef void (*dsp_emul_t)(void); static void dsp_postexecute_update_pc(void); static void dsp_postexecute_interrupts(void); static Uint32 dsp_hi_interrupts(void); static Uint32 dsp_ssi_interrupts(void); static void dsp_ccr_extension(Uint32 *reg0, Uint32 *reg1); static void dsp_ccr_unnormalized(Uint32 *reg0, Uint32 *reg1); static void dsp_ccr_negative(Uint32 *reg0); static void dsp_ccr_zero(Uint32 *reg0, Uint32 *reg1, Uint32 *reg2); static inline Uint32 read_memory_p(Uint16 address); static Uint32 read_memory(int space, Uint16 address); static void write_memory_raw(int space, Uint16 address, Uint32 value); #if defined(DSP_DISASM) && (DSP_DISASM_MEM==1) static Uint32 read_memory_disasm(int space, Uint16 address); static void write_memory_disasm(int space, Uint16 address, Uint32 value); #endif static void dsp_stack_push(Uint32 curpc, Uint32 cursr); static void dsp_stack_pop(Uint32 *curpc, Uint32 *cursr); static void opcode8h_0(void); static void opcode8h_1(void); static void opcode8h_4(void); static void opcode8h_6(void); static void opcode8h_8(void); static void opcode8h_a(void); static void opcode8h_b(void); static void dsp_update_rn(Uint32 numreg, Sint16 modifier); static void dsp_update_rn_bitreverse(Uint32 numreg); static void dsp_update_rn_modulo(Uint32 numreg, Sint16 modifier); static int dsp_calc_ea(Uint32 ea_mode, Uint32 *dst_addr); static int dsp_calc_cc(Uint32 cc_code); static void dsp_undefined(void); /* Instructions without parallel moves */ static void dsp_andi(void); static void dsp_bchg(void); static void dsp_bclr(void); static void dsp_bset(void); static void dsp_btst(void); static void dsp_div(void); static void dsp_do(void); static void dsp_enddo(void); static void dsp_illegal(void); static void dsp_jcc(void); static void dsp_jclr(void); static void dsp_jmp(void); static void dsp_jscc(void); static void dsp_jsclr(void); static void dsp_jset(void); static void dsp_jsr(void); static void dsp_jsset(void); static void dsp_lua(void); static void dsp_movec(void); static void dsp_movem(void); static void dsp_movep(void); static void dsp_nop(void); static void dsp_norm(void); static void dsp_ori(void); static void dsp_rep(void); static void dsp_reset(void); static void dsp_rti(void); static void dsp_rts(void); static void dsp_stop(void); static void dsp_swi(void); static void dsp_tcc(void); static void dsp_wait(void); static void dsp_do_ea(void); static void dsp_do_aa(void); static void dsp_do_imm(void); static void dsp_do_reg(void); static void dsp_rep_aa(void); static void dsp_rep_ea(void); static void dsp_rep_imm(void); static void dsp_rep_reg(void); static void dsp_movec_aa(void); static void dsp_movec_ea(void); static void dsp_movec_imm(void); static void dsp_movec_reg(void); static void dsp_movep_0(void); static void dsp_movep_1(void); static void dsp_movep_2(void); /* Parallel move analyzer */ static void dsp_parmove_read(void); static void dsp_parmove_write(void); static int dsp_pm_read_accu24(int numreg, Uint32 *dest); static void dsp_pm_writereg(int numreg, int position); static void dsp_pm_0(void); static void dsp_pm_1(void); static void dsp_pm_2(void); static void dsp_pm_2_2(void); static void dsp_pm_3(void); static void dsp_pm_4(void); static void dsp_pm_4x(int immediat, Uint32 l_addr); static void dsp_pm_5(void); static void dsp_pm_8(void); /* 56bits arithmetic */ static Uint16 dsp_abs56(Uint32 *dest); static Uint16 dsp_asl56(Uint32 *dest); static Uint16 dsp_asr56(Uint32 *dest); static Uint16 dsp_add56(Uint32 *source, Uint32 *dest); static Uint16 dsp_sub56(Uint32 *source, Uint32 *dest); static void dsp_mul56(Uint32 source1, Uint32 source2, Uint32 *dest); static void dsp_rnd56(Uint32 *dest); /* Instructions with parallel moves */ static void dsp_abs(void); static void dsp_adc(void); static void dsp_add(void); static void dsp_addl(void); static void dsp_addr(void); static void dsp_and(void); static void dsp_asl(void); static void dsp_asr(void); static void dsp_clr(void); static void dsp_cmp(void); static void dsp_cmpm(void); static void dsp_eor(void); static void dsp_lsl(void); static void dsp_lsr(void); static void dsp_mac(void); static void dsp_macr(void); static void dsp_move(void); static void dsp_mpy(void); static void dsp_mpyr(void); static void dsp_neg(void); static void dsp_not(void); static void dsp_or(void); static void dsp_rnd(void); static void dsp_rol(void); static void dsp_ror(void); static void dsp_sbc(void); static void dsp_sub(void); static void dsp_subl(void); static void dsp_subr(void); static void dsp_tfr(void); static void dsp_tst(void); static void dsp_move_pm(void); static dsp_emul_t opcodes8h[16]={ opcode8h_0, opcode8h_1, dsp_tcc, dsp_tcc, opcode8h_4, dsp_movec, opcode8h_6, dsp_movem, opcode8h_8, opcode8h_8, opcode8h_a, opcode8h_b, dsp_jmp, dsp_jsr, dsp_jcc, dsp_jscc }; static dsp_emul_t opcodes_0809[16]={ dsp_move_pm, dsp_move_pm, dsp_move_pm, dsp_move_pm, dsp_movep, dsp_movep, dsp_movep, dsp_movep, dsp_move_pm, dsp_move_pm, dsp_move_pm, dsp_move_pm, dsp_movep, dsp_movep, dsp_movep, dsp_movep }; static dsp_emul_t opcodes_0a[32]={ /* 00 000 */ dsp_bclr, /* 00 001 */ dsp_bset, /* 00 010 */ dsp_bclr, /* 00 011 */ dsp_bset, /* 00 100 */ dsp_jclr, /* 00 101 */ dsp_jset, /* 00 110 */ dsp_jclr, /* 00 111 */ dsp_jset, /* 01 000 */ dsp_bclr, /* 01 001 */ dsp_bset, /* 01 010 */ dsp_bclr, /* 01 011 */ dsp_bset, /* 01 100 */ dsp_jclr, /* 01 101 */ dsp_jset, /* 01 110 */ dsp_jclr, /* 01 111 */ dsp_jset, /* 10 000 */ dsp_bclr, /* 10 001 */ dsp_bset, /* 10 010 */ dsp_bclr, /* 10 011 */ dsp_bset, /* 10 100 */ dsp_jclr, /* 10 101 */ dsp_jset, /* 10 110 */ dsp_jclr, /* 10 111 */ dsp_jset, /* 11 000 */ dsp_jclr, /* 11 001 */ dsp_jset, /* 11 010 */ dsp_bclr, /* 11 011 */ dsp_bset, /* 11 100 */ dsp_jmp, /* 11 101 */ dsp_jcc, /* 11 110 */ dsp_undefined, /* 11 111 */ dsp_undefined }; static dsp_emul_t opcodes_0b[32]={ /* 00 000 */ dsp_bchg, /* 00 001 */ dsp_btst, /* 00 010 */ dsp_bchg, /* 00 011 */ dsp_btst, /* 00 100 */ dsp_jsclr, /* 00 101 */ dsp_jsset, /* 00 110 */ dsp_jsclr, /* 00 111 */ dsp_jsset, /* 01 000 */ dsp_bchg, /* 01 001 */ dsp_btst, /* 01 010 */ dsp_bchg, /* 01 011 */ dsp_btst, /* 01 100 */ dsp_jsclr, /* 01 101 */ dsp_jsset, /* 01 110 */ dsp_jsclr, /* 01 111 */ dsp_jsset, /* 10 000 */ dsp_bchg, /* 10 001 */ dsp_btst, /* 10 010 */ dsp_bchg, /* 10 011 */ dsp_btst, /* 10 100 */ dsp_jsclr, /* 10 101 */ dsp_jsset, /* 10 110 */ dsp_jsclr, /* 10 111 */ dsp_jsset, /* 11 000 */ dsp_jsclr, /* 11 001 */ dsp_jsclr, /* 11 010 */ dsp_bchg, /* 11 011 */ dsp_btst, /* 11 100 */ dsp_jsr, /* 11 101 */ dsp_jscc, /* 11 110 */ dsp_undefined, /* 11 111 */ dsp_undefined }; static dsp_emul_t opcodes_parmove[16]={ dsp_pm_0, dsp_pm_1, dsp_pm_2, dsp_pm_3, dsp_pm_4, dsp_pm_5, dsp_pm_5, dsp_pm_5, dsp_pm_8, dsp_pm_8, dsp_pm_8, dsp_pm_8, dsp_pm_8, dsp_pm_8, dsp_pm_8, dsp_pm_8 }; static dsp_emul_t opcodes_alu003f[64]={ /* 0x00 - 0x0f */ dsp_move, dsp_tfr, dsp_addr, dsp_tst, dsp_undefined, dsp_cmp, dsp_subr, dsp_cmpm, dsp_undefined, dsp_tfr, dsp_addr, dsp_tst, dsp_undefined, dsp_cmp, dsp_subr, dsp_cmpm, /* 0x10 - 0x1f */ dsp_add, dsp_rnd, dsp_addl, dsp_clr, dsp_sub, dsp_undefined, dsp_subl, dsp_not, dsp_add, dsp_rnd, dsp_addl, dsp_clr, dsp_sub, dsp_undefined, dsp_subl, dsp_not, /* 0x20 - 0x2f */ dsp_add, dsp_adc, dsp_asr, dsp_lsr, dsp_sub, dsp_sbc, dsp_abs, dsp_ror, dsp_add, dsp_adc, dsp_asr, dsp_lsr, dsp_sub, dsp_sbc, dsp_abs, dsp_ror, /* 0x30 - 0x3f */ dsp_add, dsp_adc, dsp_asl, dsp_lsl, dsp_sub, dsp_sbc, dsp_neg, dsp_rol, dsp_add, dsp_adc, dsp_asl, dsp_lsl, dsp_sub, dsp_sbc, dsp_neg, dsp_rol }; static dsp_emul_t opcodes_alu407f[16]={ dsp_add, dsp_tfr, dsp_or, dsp_eor, dsp_sub, dsp_cmp, dsp_and, dsp_cmpm, dsp_add, dsp_tfr, dsp_or, dsp_eor, dsp_sub, dsp_cmp, dsp_and, dsp_cmpm }; static dsp_emul_t opcodes_alu80ff[4]={ dsp_mpy, dsp_mpyr, dsp_mac, dsp_macr }; static dsp_emul_t opcodes_do[8]={ dsp_do_aa, dsp_do_imm, dsp_do_ea, dsp_do_imm, dsp_undefined, dsp_do_imm, dsp_do_reg, dsp_do_imm }; static dsp_emul_t opcodes_rep[8]={ dsp_rep_aa, dsp_rep_imm, dsp_rep_ea, dsp_rep_imm, dsp_undefined, dsp_rep_imm, dsp_rep_reg, dsp_rep_imm }; static dsp_emul_t opcodes_movec[8]={ dsp_undefined, dsp_undefined, dsp_undefined, dsp_movec_reg, dsp_movec_aa, dsp_movec_ea, dsp_movec_imm, dsp_movec_imm }; static dsp_emul_t opcodes_movep[4]={ dsp_movep_0, dsp_movep_1, dsp_movep_2, dsp_movep_2 }; static int registers_lmove[8][2]={ {DSP_REG_A1,DSP_REG_A0}, /* A10 */ {DSP_REG_B1,DSP_REG_B0}, /* B10 */ {DSP_REG_X1,DSP_REG_X0}, /* X */ {DSP_REG_Y1,DSP_REG_Y0}, /* Y */ {DSP_REG_A,DSP_REG_A}, /* A */ {DSP_REG_B,DSP_REG_B}, /* B */ {DSP_REG_A,DSP_REG_B}, /* AB */ {DSP_REG_B,DSP_REG_A} /* BA */ }; static int registers_tcc[16][2]={ {DSP_REG_B,DSP_REG_A}, {DSP_REG_A,DSP_REG_B}, {DSP_REG_NULL,DSP_REG_NULL}, {DSP_REG_NULL,DSP_REG_NULL}, {DSP_REG_NULL,DSP_REG_NULL}, {DSP_REG_NULL,DSP_REG_NULL}, {DSP_REG_NULL,DSP_REG_NULL}, {DSP_REG_NULL,DSP_REG_NULL}, {DSP_REG_X0,DSP_REG_A}, {DSP_REG_X0,DSP_REG_B}, {DSP_REG_Y0,DSP_REG_A}, {DSP_REG_Y0,DSP_REG_B}, {DSP_REG_X1,DSP_REG_A}, {DSP_REG_X1,DSP_REG_B}, {DSP_REG_Y1,DSP_REG_A}, {DSP_REG_Y1,DSP_REG_B} }; static int registers_mpy[8][2]={ {DSP_REG_X0,DSP_REG_X0}, {DSP_REG_Y0,DSP_REG_Y0}, {DSP_REG_X1,DSP_REG_X0}, {DSP_REG_Y1,DSP_REG_Y0}, {DSP_REG_X0,DSP_REG_Y1}, {DSP_REG_Y0,DSP_REG_X0}, {DSP_REG_X1,DSP_REG_Y0}, {DSP_REG_Y1,DSP_REG_X1} }; static int registers_mask[64]={ 0, 0, 0, 0, 24, 24, 24, 24, 24, 24, 8, 8, 24, 24, 24, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 8, 6, 6, 6, 16, 16 }; /********************************** * Emulator kernel **********************************/ /* Yep, feel lazy, so put it there */ static dsp_core_t *dsp_core; void dsp56k_init_cpu(void *th_dsp_core) { dsp_core = th_dsp_core; } int dsp56k_exec_thread(void *th_dsp_core) { #if DSP_COUNT_IPS Uint32 start_time; Uint32 num_inst; #endif dsp56k_init_cpu(th_dsp_core); #ifdef DSP_DISASM dsp56k_disasm_init(dsp_core); #endif #if DSP_DISASM_STATE fprintf(stderr, "Dsp: WAIT_BOOTSTRAP\n"); #endif dsp_core->pauseThread(dsp_core); #if DSP_COUNT_IPS start_time = SDL_GetTicks(); num_inst = 0; #endif while(dsp_core->running) { dsp56k_execute_instruction(); #if DSP_COUNT_IPS ++num_inst; if ((num_inst & 63) == 0) { /* Evaluate time after instructions have been executed to avoid asking too frequently */ Uint32 cur_time = SDL_GetTicks(); if (cur_time-start_time>1000) { fprintf(stderr, "Dsp: %d i/s\n", (num_inst*1000)/(cur_time-start_time)); start_time=cur_time; num_inst=0; } } #endif } #if DSP_DISASM_STATE fprintf(stderr, "Dsp: SHUTDOWN\n"); #endif return 0; } void dsp56k_execute_instruction(void) { Uint32 value; #ifdef DSP_DISASM #if DSP_DISASM_REG dsp56k_disasm_reg_read(); #endif #if DSP_DISASM_INST dsp56k_disasm(); #endif #endif /* Decode and execute current instruction */ cur_inst = read_memory_p(dsp_core->pc); cur_inst_len = 1; value = (cur_inst >> 16) & BITMASK(8); if ((value < 0x10) && ((cur_inst & 0xfe4000) != 0x080000)) { opcodes8h[value](); } else { dsp_parmove_read(); value = cur_inst & BITMASK(8); if (value < 0x40) { opcodes_alu003f[value](); } else if (value < 0x80) { value &= BITMASK(4); opcodes_alu407f[value](); } else { value &= BITMASK(2); opcodes_alu80ff[value](); } dsp_parmove_write(); } /* Don't update the PC if we are halted */ /*if (dsp_core->state == DSP_RUNNING)*/ { dsp_postexecute_update_pc(); } /* Interrupts ? */ dsp_postexecute_interrupts(); #ifdef DSP_DISASM #if DSP_DISASM_REG dsp56k_disasm_reg_compare(); #endif #endif } /********************************** * Update the PC **********************************/ static void dsp_postexecute_update_pc(void) { /* When running a REP, PC must stay on the current instruction */ if (dsp_core->loop_rep) { /* Is PC on the instruction to repeat ? */ if (pc_on_rep==0) { --dsp_core->registers[DSP_REG_LC]; dsp_core->registers[DSP_REG_LC] &= BITMASK(16); if (dsp_core->registers[DSP_REG_LC] > 0) { cur_inst_len=0; /* Stay on this instruction */ } else { dsp_core->loop_rep = 0; dsp_core->registers[DSP_REG_LC] = dsp_core->registers[DSP_REG_LCSAVE]; } #ifdef DSP_DISASM dsp56k_disasm_force_reg_changed(DSP_REG_LC); #endif } else { /* Init LC at right value */ if (dsp_core->registers[DSP_REG_LC] == 0) { dsp_core->registers[DSP_REG_LC] = 0x010000; #ifdef DSP_DISASM dsp56k_disasm_force_reg_changed(DSP_REG_LC); #endif } pc_on_rep = 0; } } /* Normal execution, go to next instruction */ if (cur_inst_len>0) { dsp_core->pc += cur_inst_len; } /* When running a DO loop, we test the end of loop with the */ /* updated PC, pointing to last instruction of the loop */ if (dsp_core->registers[DSP_REG_SR] & (1<pc == dsp_core->registers[DSP_REG_LA]+1) { --dsp_core->registers[DSP_REG_LC]; dsp_core->registers[DSP_REG_LC] &= BITMASK(16); if (dsp_core->registers[DSP_REG_LC]==0) { /* end of loop */ Uint32 newpc; dsp_stack_pop(&newpc, &dsp_core->registers[DSP_REG_SR]); dsp_stack_pop(&dsp_core->registers[DSP_REG_LA], &dsp_core->registers[DSP_REG_LC]); } else { /* Loop one more time */ dsp_core->pc = dsp_core->stack[0][dsp_core->registers[DSP_REG_SSH]]; } #ifdef DSP_DISASM dsp56k_disasm_force_reg_changed(DSP_REG_LC); #endif } } } /********************************** * Interrupts **********************************/ static void dsp_postexecute_interrupts(void) { Uint32 ipl = -1, ipl_to_raise, value, ipl_hi = -1, ipl_ssi, instr1, instr2; /* REP is not interruptible */ if (dsp_core->loop_rep) { return; } /* A fast interrupt can not be interrupted. */ if (dsp_core->interrupt_state == DSP_INTERRUPT_FAST) { /* Did we execute the 2-inst interrupt of the vector ? */ if (dsp_core->pc >= dsp_core->interrupt_instr_fetch+2) { if (dsp_core->pc == dsp_core->interrupt_instr_fetch+2) { dsp_core->pc = dsp_core->interrupt_save_pc; } dsp_core->interrupt_instr_fetch = -1; dsp_core->interrupt_state = DSP_INTERRUPT_NONE; dsp_core->interrupt_save_pc = -1; } return; } ipl_to_raise = 99; /* Level 3 interruptions */ /* Trace Interruption ? */ if (dsp_core->registers[DSP_REG_SR] & (1<interrupt_instr_fetch = 0x0004; ipl_to_raise = 3; #if DSP_DISASM_INTER fprintf(stderr, "Dsp: Interrupt: Trace\n"); #endif } /* SWI Interruption ? */ else if (dsp_core->swi_inter==1) { /* Raise interrupt p:0x0006 */ dsp_core->swi_inter=0; dsp_core->interrupt_instr_fetch = 0x0006; ipl_to_raise = 3; #if DSP_DISASM_INTER fprintf(stderr, "Dsp: Interrupt: Swi\n"); #endif } /* Level 2 and above interruptions */ else { ipl = (dsp_core->registers[DSP_REG_SR]>>DSP_SR_I0) & BITMASK(2); /* If current ipl level=3, peripheral interruptions are masked */ if (ipl==3) { return; } /* Determine the order of the peripheral interrupt to test . If 2 or more peripharal have the same interrupt level, the order is (high priority : HI, SSI, SCI, LOW priority */ ipl_hi = (dsp_core->periph[DSP_SPACE_X][DSP_IPR]>>10) & BITMASK(2); ipl_ssi = (dsp_core->periph[DSP_SPACE_X][DSP_IPR]>>12) & BITMASK(2); if (ipl_hi >= ipl_ssi) { if (ipl_hi >= ipl) { ipl_to_raise=dsp_hi_interrupts(); } if (ipl_to_raise == 99) { if (ipl_ssi>=ipl) { ipl_to_raise=dsp_ssi_interrupts(); } } } else { if (ipl_ssi>=ipl) { ipl_to_raise=dsp_ssi_interrupts(); } if (ipl_to_raise == 99) { if (ipl_hi>=ipl) { ipl_to_raise=dsp_hi_interrupts(); } } } } /* Do we have to execute an interruption ? */ if (ipl_to_raise != 99) { fprintf(stderr, "Dsp: IPL: %08x IPH_HI: %08x \n", ipl, ipl_hi); /* Read of the 2 vectored instructions to determine if it's a fast or long interrupt */ instr1 = read_memory_p(dsp_core->interrupt_instr_fetch); instr2 = read_memory_p(dsp_core->interrupt_instr_fetch+1); dsp_core->interrupt_state = DSP_INTERRUPT_FAST; if (((instr1 >> 16) & BITMASK(8)) == 0xd) { dsp_core->interrupt_state = DSP_INTERRUPT_LONG; } value = (instr1 >> 11) & (BITMASK(2)<<3); value |= (instr1 >> 5) & BITMASK(3); if (value == 0x1c) { dsp_core->interrupt_state = DSP_INTERRUPT_LONG; } if (((instr2 >> 16) & BITMASK(8)) == 0xd) { dsp_core->interrupt_state = DSP_INTERRUPT_LONG; } value = (instr2 >> 11) & (BITMASK(2)<<3); value |= (instr2 >> 5) & BITMASK(3); if (value == 0x1c) { dsp_core->interrupt_state = DSP_INTERRUPT_LONG; } if (dsp_core->interrupt_state == DSP_INTERRUPT_FAST){ /* Execute a fast interrupt */ dsp_core->interrupt_save_pc = dsp_core->pc; dsp_core->pc = dsp_core->interrupt_instr_fetch; #if DSP_DISASM_INTER fprintf(stderr, "Dsp: Fast Interrupt: %06x\n", dsp_core->pc); #endif } else { /* Execute a long interrupt */ dsp_stack_push(dsp_core->pc, dsp_core->registers[DSP_REG_SR]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ipl_to_raise<pc = dsp_core->interrupt_instr_fetch; dsp_core->interrupt_instr_fetch = -1; dsp_core->interrupt_save_pc = -1; #if DSP_DISASM_INTER fprintf(stderr, "Dsp: Long Interrupt: %06x\n", dsp_core->pc); #endif } } } /* Host interface interrupts */ static Uint32 dsp_hi_interrupts(void) { Uint32 host_hcr = dsp_core->periph[DSP_SPACE_X][DSP_HOST_HCR]; Uint32 host_hsr = dsp_core->periph[DSP_SPACE_X][DSP_HOST_HSR]; Uint32 ipl_hi = (dsp_core->periph[DSP_SPACE_X][DSP_IPR]>>10) & BITMASK(2); /* Host command, interrupt p:((hostport[CPU_HOST_CVR] & 31)<<1) */ if ((host_hcr & (1<lockMutex(dsp_core); dsp_core->periph[DSP_SPACE_X][DSP_HOST_HSR] &= 0xff - (1<hostport[CPU_HOST_CVR] &= 0xff - (1<unlockMutex(dsp_core); dsp_core->interrupt_instr_fetch = dsp_core->hostport[CPU_HOST_CVR] & BITMASK(5); dsp_core->interrupt_instr_fetch *= 2; #if DSP_DISASM_INTER fprintf(stderr, "Dsp: Interrupt: Host command %06x\n", dsp_core->interrupt_instr_fetch); #endif return ipl_hi; } /* Host receive, interrupt p:0x0020 */ if ((host_hcr & (1<lockMutex(dsp_core); dsp_core->periph[DSP_SPACE_X][DSP_HOST_HSR] &= 0xff-(1<unlockMutex(dsp_core); dsp_core->interrupt_instr_fetch = 0x0020; #if DSP_DISASM_INTER fprintf(stderr, "Dsp: Interrupt: Host receive\n"); #endif return ipl_hi; } /* Host transmit, interrupt p:0x0022 */ if ((host_hcr & (1<lockMutex(dsp_core); dsp_core->periph[DSP_SPACE_X][DSP_HOST_HSR] &= 0xff-(1<unlockMutex(dsp_core); dsp_core->interrupt_instr_fetch = 0x0022; #if DSP_DISASM_INTER fprintf(stderr, "Dsp: Interrupt: more Host transmit\n"); #endif return ipl_hi; } return 99; } /* SSI interface interrupts */ static Uint32 dsp_ssi_interrupts(void) { Uint32 ssi_crb = dsp_core->periph[DSP_SPACE_X][DSP_SSI_CRB]; Uint32 ssi_sr = dsp_core->periph[DSP_SPACE_X][DSP_SSI_SR]; Uint32 ipl_ssi = (dsp_core->periph[DSP_SPACE_X][DSP_IPR]>>12) & BITMASK(2); const Uint32 ssi_sr_rdf_roe_mask = (1<periph[DSP_SPACE_X][DSP_SSI_SR] &= 0xff-(1<interrupt_instr_fetch = 0x000e; #if DSP_DISASM_INTER fprintf(stderr, "Dsp: Interrupt: SSI RX data with exception\n"); #endif return ipl_ssi; } /* SSI RX Data Interrupt */ if ((ssi_crb & (1<interrupt_instr_fetch = 0x000c; #if DSP_DISASM_INTER fprintf(stderr, "Dsp: Interrupt: SSI RX data\n"); #endif return ipl_ssi; } /* SSI TX Data with Exception Interrupt */ if ((ssi_crb & (1<periph[DSP_SPACE_X][DSP_SSI_SR] &= 0xff-(1<interrupt_instr_fetch = 0x0012; #if DSP_DISASM_INTER fprintf(stderr, "Dsp: Interrupt: SSI TX data with exception\n"); #endif return ipl_ssi; } /* SSI TX Data Interrupt */ if ((ssi_crb & (1<interrupt_instr_fetch = 0x0010; return ipl_ssi; } return 99; /* ipl_to_raise */ } /********************************** * Set/clear ccr bits **********************************/ /* reg0 has bits 55..48 */ /* reg1 has bits 47..24 */ /* reg2 has bits 23..0 */ static void dsp_ccr_extension(Uint32 *reg0, Uint32 *reg1) { Uint32 scaling, value, numbits; int sr_extension = 1<registers[DSP_REG_SR]>>DSP_SR_S0) & BITMASK(2); value = (*reg0) & 0xff; numbits = 8; switch(scaling) { case 0: value <<=1; value |= ((*reg1)>>23) & 1; numbits=9; break; case 1: break; case 2: value <<=2; value |= ((*reg1)>>22) & 3; numbits=10; break; default: return; break; } if ((value==0) || (value==(Uint32)BITMASK(numbits))) { sr_extension = 0; } dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= sr_extension; } static void dsp_ccr_unnormalized(Uint32 *reg0, Uint32 *reg1) { Uint32 scaling, value; scaling = (dsp_core->registers[DSP_REG_SR]>>DSP_SR_S0) & BITMASK(2); switch(scaling) { case 0: value = ((*reg1)>>22) & 3; break; case 1: value = ((*reg0)<<1) & 2; value |= ((*reg1)>>23) & 1; break; case 2: value = ((*reg1)>>21) & 3; break; default: return; break; } dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= ((value==0) || (value==BITMASK(2)))<registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= (((*reg0)>>7) & 1)<registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= zeroed<ramint[space][address] & BITMASK(24); } if (space==DSP_SPACE_P) { return read_memory_p(address); } /* Internal ROM? */ if ((dsp_core->registers[DSP_REG_OMR] & (1<rom[space][address] & BITMASK(24); } /* Peripheral address ? */ if (address >= 0xffc0) { return dsp_core->periph[space][address-0xffc0] & BITMASK(24); } /* Falcon: External RAM, map X to upper 16K of matching space in Y,P */ if (space == DSP_SPACE_X) { address += DSP_RAMSIZE>>1; } /* Falcon: External RAM, finally map X,Y to P */ return dsp_core->ram[DSP_SPACE_P][address & (DSP_RAMSIZE-1)] & BITMASK(24); } #endif static inline Uint32 read_memory_p(Uint16 address) { /* Internal RAM ? */ if (address<0x200) { return dsp_core->ramint[DSP_SPACE_P][address] & BITMASK(24); } /* External RAM, mask address to available ram size */ return dsp_core->ram[DSP_SPACE_P][address & (DSP_RAMSIZE-1)] & BITMASK(24); } static Uint32 read_memory(int space, Uint16 address) { /* Internal RAM ? */ if (address<0x100) { return dsp_core->ramint[space][address] & BITMASK(24); } if (space==DSP_SPACE_P) { return read_memory_p(address); } /* Internal ROM ?*/ if ((dsp_core->registers[DSP_REG_OMR] & (1<rom[space][address] & BITMASK(24); } /* Peripheral address ? */ if (address >= 0xffc0) { Uint32 value; dsp_core->lockMutex(dsp_core); if ((space==DSP_SPACE_X) && (address==0xffc0+DSP_HOST_HRX)) { dsp_core_hostport_dspread(dsp_core); } value = dsp_core->periph[space][address-0xffc0] & BITMASK(24); dsp_core->unlockMutex(dsp_core); return value; } /* Falcon: External RAM, map X to upper 16K of matching space in Y,P */ if (space == DSP_SPACE_X) { address += DSP_RAMSIZE>>1; } /* Falcon: External RAM, finally map X,Y to P */ return dsp_core->ram[DSP_SPACE_P][address & (DSP_RAMSIZE-1)] & BITMASK(24); } /* Note: MACRO write_memory defined to either write_memory_raw or write_memory_disasm */ static void write_memory_raw(int space, Uint16 address, Uint32 value) { value &= BITMASK(24); /* Internal RAM ? */ if (address<0x100) { dsp_core->ramint[space][address] = value; return; } switch(space) { case DSP_SPACE_X: /* Internal ROM ?*/ if ((dsp_core->registers[DSP_REG_OMR] & (1<= 0xffc0) { dsp_core->lockMutex(dsp_core); switch(address-0xffc0) { case DSP_HOST_HTX: dsp_core->periph[DSP_SPACE_X][DSP_HOST_HTX] = value; dsp_core_hostport_dspwrite(dsp_core); break; case DSP_HOST_HCR: dsp_core->periph[DSP_SPACE_X][DSP_HOST_HCR] = value; /* Set HF3 and HF2 accordingly on the host side */ dsp_core->hostport[CPU_HOST_ISR] &= BITMASK(8)-((1<hostport[CPU_HOST_ISR] |= dsp_core->periph[DSP_SPACE_X][DSP_HOST_HCR] & ((1<periph[DSP_SPACE_X][address-0xffc0] = value; break; } dsp_core->unlockMutex(dsp_core); return; } /* Falcon: External RAM, map X to upper 16K of matching space in Y,P */ address += DSP_RAMSIZE>>1; break; case DSP_SPACE_Y: /* Internal ROM ?*/ if ((dsp_core->registers[DSP_REG_OMR] & (1<= 0xffc0) { dsp_core->periph[DSP_SPACE_Y][address-0xffc0] = value; return; } break; case DSP_SPACE_P: /* Internal RAM ? */ if (address<0x200) { dsp_core->ramint[DSP_SPACE_P][address] = value; return; } break; } /* Falcon: External RAM, map X,Y to P */ dsp_core->ram[DSP_SPACE_P][address & (DSP_RAMSIZE-1)] = value; } #if defined(DSP_DISASM) && (DSP_DISASM_MEM==1) static void write_memory_disasm(int space, Uint16 address, Uint32 value) { Uint32 curvalue; Uint8 space_c = 'p'; value &= BITMASK(24); curvalue = read_memory_disasm(space, address); write_memory_raw(space,address,value); switch(space) { case DSP_SPACE_X: space_c = 'x'; break; case DSP_SPACE_Y: space_c = 'y'; break; default: break; } fprintf(stderr,"Dsp: Mem: %c:0x%04x:0x%06x -> 0x%06x\n", space_c, address, curvalue, read_memory_disasm(space, address)); } #endif /********************************** * Stack push/pop **********************************/ static void dsp_stack_push(Uint32 curpc, Uint32 cursr) { if (dsp_core->registers[DSP_REG_SP]==0x0f) { /* Stack full, raise interrupt */ #if DSP_DISASM_STATE fprintf(stderr, "Dsp: Stack error (overflow)\n"); #endif dsp_core->pauseThread(dsp_core); return; } dsp_core->registers[DSP_REG_SP]++; dsp_core->registers[DSP_REG_SSH]++; dsp_core->registers[DSP_REG_SSL]++; dsp_core->stack[0][dsp_core->registers[DSP_REG_SSH]]=curpc; dsp_core->stack[1][dsp_core->registers[DSP_REG_SSL]]=cursr; } static void dsp_stack_pop(Uint32 *newpc, Uint32 *newsr) { if (dsp_core->registers[DSP_REG_SP]==0x00) { /* Stack empty, raise interrupt */ #if DSP_DISASM_STATE fprintf(stderr, "Dsp: Stack error (underflow)\n"); #endif dsp_core->pauseThread(dsp_core); return; } *newpc = dsp_core->stack[0][dsp_core->registers[DSP_REG_SSH]]; *newsr = dsp_core->stack[1][dsp_core->registers[DSP_REG_SSL]]; --dsp_core->registers[DSP_REG_SP]; --dsp_core->registers[DSP_REG_SSH]; --dsp_core->registers[DSP_REG_SSL]; } /********************************** * Effective address calculation **********************************/ static void dsp_update_rn(Uint32 numreg, Sint16 modifier) { Sint16 value; Uint16 m_reg; m_reg = (Uint16) dsp_core->registers[DSP_REG_M0+numreg]; if (m_reg == 0) { /* Bit reversed carry update */ dsp_update_rn_bitreverse(numreg); } else if ((m_reg>=1) && (m_reg<=32767)) { /* Modulo update */ dsp_update_rn_modulo(numreg, modifier); } else if (m_reg == 65535) { /* Linear addressing mode */ value = (Sint16) dsp_core->registers[DSP_REG_R0+numreg]; value += modifier; dsp_core->registers[DSP_REG_R0+numreg] = ((Uint32) value) & BITMASK(16); } else { /* Undefined */ } } static void dsp_update_rn_bitreverse(Uint32 numreg) { int revbits, i; Uint32 value, r_reg; /* Check how many bits to reverse */ value = dsp_core->registers[DSP_REG_N0+numreg]; for (revbits=0;revbits<16;revbits++) { if (value & (1<registers[DSP_REG_R0+numreg]; value = r_reg & (BITMASK(16)-BITMASK(revbits)); for (i=0;iregisters[DSP_REG_R0+numreg] = value; } static void dsp_update_rn_modulo(Uint32 numreg, Sint16 modifier) { Uint16 bufsize, modulo, lobound, hibound, bufmask; Sint16 r_reg, orig_modifier=modifier; modulo = dsp_core->registers[DSP_REG_M0+numreg]+1; bufsize = 1; bufmask = BITMASK(16); while (bufsize < modulo) { bufsize <<= 1; bufmask <<= 1; } lobound = dsp_core->registers[DSP_REG_R0+numreg] & bufmask; hibound = lobound + modulo - 1; r_reg = (Sint16) dsp_core->registers[DSP_REG_R0+numreg]; if (orig_modifier>modulo) { while (modifier>bufsize) { r_reg += bufsize; modifier -= bufsize; } while (modifier<-bufsize) { r_reg -= bufsize; modifier += bufsize; } } r_reg += modifier; if (orig_modifier!=modulo) { if (r_reg>hibound) { r_reg -= modulo; } else if (r_regregisters[DSP_REG_R0+numreg] = ((Uint32) r_reg) & BITMASK(16); } static int dsp_calc_ea(Uint32 ea_mode, Uint32 *dst_addr) { Uint32 value, numreg, curreg; value = (ea_mode >> 3) & BITMASK(3); numreg = ea_mode & BITMASK(3); switch (value) { case 0: /* (Rx)-Nx */ *dst_addr = dsp_core->registers[DSP_REG_R0+numreg]; dsp_update_rn(numreg, -dsp_core->registers[DSP_REG_N0+numreg]); break; case 1: /* (Rx)+Nx */ *dst_addr = dsp_core->registers[DSP_REG_R0+numreg]; dsp_update_rn(numreg, dsp_core->registers[DSP_REG_N0+numreg]); break; case 2: /* (Rx)- */ *dst_addr = dsp_core->registers[DSP_REG_R0+numreg]; dsp_update_rn(numreg, -1); break; case 3: /* (Rx)+ */ *dst_addr = dsp_core->registers[DSP_REG_R0+numreg]; dsp_update_rn(numreg, +1); break; case 4: /* (Rx) */ *dst_addr = dsp_core->registers[DSP_REG_R0+numreg]; break; case 5: /* (Rx+Nx) */ curreg = dsp_core->registers[DSP_REG_R0+numreg]; dsp_update_rn(numreg, dsp_core->registers[DSP_REG_N0+numreg]); *dst_addr = dsp_core->registers[DSP_REG_R0+numreg]; dsp_core->registers[DSP_REG_R0+numreg] = curreg; break; case 6: /* aa */ *dst_addr = read_memory_p(dsp_core->pc+1); cur_inst_len++; if (numreg != 0) { return 1; /* immediate value */ } break; case 7: /* -(Rx) */ dsp_update_rn(numreg, -1); *dst_addr = dsp_core->registers[DSP_REG_R0+numreg]; break; } /* address */ return 0; } /********************************** * Condition code test **********************************/ #define DSP_SR_NV 8 /* N xor V */ #define DSP_SR_ZUE 9 /* Z or ((not U) and (not E)) */ #define DSP_SR_ZNV 10 /* Z or (N xor V) */ #define CCR_BIT(x,y) \ (((x) >> (y)) & 1) static int cc_code_map[8]={ DSP_SR_C, DSP_SR_NV, DSP_SR_Z, DSP_SR_N, DSP_SR_ZUE, DSP_SR_E, DSP_SR_L, DSP_SR_ZNV }; static int dsp_calc_cc(Uint32 cc_code) { Uint16 value; value = dsp_core->registers[DSP_REG_SR] & BITMASK(8); value |= (CCR_BIT(value,DSP_SR_N) ^ CCR_BIT(value, DSP_SR_V))<>3) & 1); } /********************************** * Highbyte opcodes dispatchers **********************************/ static void opcode8h_0(void) { if (cur_inst <= 0x00008c) { switch(cur_inst) { case 0x000000: dsp_nop(); break; case 0x000004: dsp_rti(); break; case 0x000005: dsp_illegal(); break; case 0x000006: dsp_swi(); break; case 0x00000c: dsp_rts(); break; case 0x000084: dsp_reset(); break; case 0x000086: dsp_wait(); break; case 0x000087: dsp_stop(); break; case 0x00008c: dsp_enddo(); break; } } else { switch (cur_inst & 0xf8) { case 0x0000b8: dsp_andi(); break; case 0x0000f8: dsp_ori(); break; } } } static void opcode8h_1(void) { switch(cur_inst & 0xfff000) { case 0x018000: dsp_div(); break; case 0x01d000: dsp_norm(); break; } } static void opcode8h_4(void) { switch((cur_inst>>5) & BITMASK(3)) { case 0: dsp_lua(); break; case 5: dsp_movec(); break; } } static void opcode8h_6(void) { if (cur_inst & (1<<5)) { dsp_rep(); } else { dsp_do(); } } static void opcode8h_8(void) { Uint32 value; value = (cur_inst >> 12) & BITMASK(4); opcodes_0809[value](); } static void opcode8h_a(void) { Uint32 value; value = (cur_inst >> 11) & (BITMASK(2)<<3); value |= (cur_inst >> 5) & BITMASK(3); opcodes_0a[value](); } static void opcode8h_b(void) { Uint32 value; value = (cur_inst >> 11) & (BITMASK(2)<<3); value |= (cur_inst >> 5) & BITMASK(3); opcodes_0b[value](); } /********************************** * Non-parallel moves instructions **********************************/ static void dsp_undefined(void) { cur_inst_len = 0; fprintf(stderr, "Dsp: 0x%04x: 0x%06x unknown instruction\n",dsp_core->pc, cur_inst); } static void dsp_andi(void) { Uint32 regnum, value; value = (cur_inst >> 8) & BITMASK(8); regnum = cur_inst & BITMASK(2); switch(regnum) { case 0: /* mr */ dsp_core->registers[DSP_REG_SR] &= (value<<8)|BITMASK(8); break; case 1: /* ccr */ dsp_core->registers[DSP_REG_SR] &= (BITMASK(8)<<8)|value; break; case 2: /* omr */ dsp_core->registers[DSP_REG_OMR] &= value; break; } } static void dsp_bchg(void) { Uint32 memspace, addr, value, numreg, newcarry, numbit, srcreg; memspace = (cur_inst>>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); newcarry = 0; switch((cur_inst>>14) & BITMASK(2)) { case 0: /* bchg #n,x:aa */ /* bchg #n,y:aa */ addr = value; value = read_memory(memspace, addr); newcarry = (value>>numbit) & 1; if (newcarry) { value -= (1<>numbit) & 1; if (newcarry) { value -= (1<>numbit) & 1; if (newcarry) { value -= (1<registers[numreg]; newcarry = (value>>numbit) & 1; if (newcarry) { value -= (1<registers[numreg] = value; if (((srcreg==DSP_REG_A) || (srcreg==DSP_REG_B)) && (numbit==23)) { dsp_core->registers[DSP_REG_A2+(srcreg & 1)]= (newcarry ? 0x00 : 0xff); } break; } /* Set carry */ dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); newcarry = 0; switch((cur_inst>>14) & BITMASK(2)) { case 0: /* bclr #n,x:aa */ /* bclr #n,y:aa */ addr = value; value = read_memory(memspace, addr); newcarry = (value>>numbit) & 1; value &= 0xffffffff-(1<>numbit) & 1; value &= 0xffffffff-(1<>numbit) & 1; value &= 0xffffffff-(1<registers[numreg]; newcarry = (value>>numbit) & 1; value &= 0xffffffff-(1<registers[numreg] = value; if (((srcreg==DSP_REG_A) || (srcreg==DSP_REG_B)) && (numbit==23)) { dsp_core->registers[DSP_REG_A2+(srcreg & 1)]=0x00; } break; } /* Set carry */ dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); newcarry = 0; switch((cur_inst>>14) & BITMASK(2)) { case 0: /* bset #n,x:aa */ /* bset #n,y:aa */ addr = value; value = read_memory(memspace, addr); newcarry = (value>>numbit) & 1; value |= (1<>numbit) & 1; value |= (1<>numbit) & 1; value |= (1<registers[numreg]; newcarry = (value>>numbit) & 1; value |= (1<registers[numreg] = value; if (((srcreg==DSP_REG_A) || (srcreg==DSP_REG_B)) && (numbit==23)) { dsp_core->registers[DSP_REG_A2+(srcreg & 1)]=0xff; } break; } /* Set carry */ dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); newcarry = 0; switch((cur_inst>>14) & BITMASK(2)) { case 0: /* btst #n,x:aa */ /* btst #n,y:aa */ addr = value; value = read_memory(memspace, addr); newcarry = (value>>numbit) & 1; break; case 1: /* btst #n,x:ea */ /* btst #n,y:ea */ dsp_calc_ea(value, &addr); value = read_memory(memspace, addr); newcarry = (value>>numbit) & 1; break; case 2: /* btst #n,x:pp */ /* btst #n,y:pp */ addr = 0xffc0 + value; value = read_memory(memspace, addr); newcarry = (value>>numbit) & 1; break; case 3: /* btst #n,R */ numreg = value; if ((numreg==DSP_REG_A) || (numreg==DSP_REG_B)) { numreg = DSP_REG_A1+(numreg & 1); } value = dsp_core->registers[numreg]; newcarry = (value>>numbit) & 1; break; } /* Set carry */ dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<>4) & BITMASK(2)) { case 0: srcreg = DSP_REG_X0; break; case 1: srcreg = DSP_REG_Y0; break; case 2: srcreg = DSP_REG_X1; break; case 3: srcreg = DSP_REG_Y1; break; } destreg = DSP_REG_A+((cur_inst>>3) & 1); source[0] = 0; source[1] = dsp_core->registers[srcreg]; if (source[1] & (1<<23)) { source[0] = 0xff; } source[2] = 0; dest[0] = dsp_core->registers[DSP_REG_A2+(destreg & 1)]; dest[1] = dsp_core->registers[DSP_REG_A1+(destreg & 1)]; dest[2] = dsp_core->registers[DSP_REG_A0+(destreg & 1)]; if (((dest[0]>>7) & 1) ^ ((source[1]>>23) & 1)) { /* D += S */ newsr = dsp_asl56(dest); dsp_add56(source, dest); } else { /* D -= S */ newsr = dsp_asl56(dest); dsp_sub56(source, dest); } dest[2] |= (dsp_core->registers[DSP_REG_SR]>>DSP_SR_C) & 1; dsp_core->registers[DSP_REG_A2+(destreg & 1)] = dest[0]; dsp_core->registers[DSP_REG_A1+(destreg & 1)] = dest[1]; dsp_core->registers[DSP_REG_A0+(destreg & 1)] = dest[2]; dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= (1-((dest[0]>>7) & 1))<registers[DSP_REG_SR] |= newsr & (1<registers[DSP_REG_SR] |= newsr & (1<registers[DSP_REG_LA], dsp_core->registers[DSP_REG_LC]); dsp_core->registers[DSP_REG_LA] = read_memory_p(dsp_core->pc+1) & BITMASK(16); cur_inst_len++; dsp_stack_push(dsp_core->pc+cur_inst_len, dsp_core->registers[DSP_REG_SR]); dsp_core->registers[DSP_REG_SR] |= (1<>14) & BITMASK(2))<<1; value |= (cur_inst>>7) & 1; opcodes_do[value](); } static void dsp_do_aa(void) { Uint32 memspace, addr; /* x:aa */ /* y:aa */ memspace = (cur_inst>>6) & 1; addr = (cur_inst>>8) & BITMASK(6); dsp_core->registers[DSP_REG_LC] = read_memory(memspace, addr) & BITMASK(16); } static void dsp_do_imm(void) { /* #xx */ dsp_core->registers[DSP_REG_LC] = ((cur_inst>>8) & BITMASK(8)) + ((cur_inst & BITMASK(4))<<8); } static void dsp_do_ea(void) { Uint32 memspace, ea_mode, addr; /* x:ea */ /* y:ea */ memspace = (cur_inst>>6) & 1; ea_mode = (cur_inst>>8) & BITMASK(6); dsp_calc_ea(ea_mode, &addr); dsp_core->registers[DSP_REG_LC] = read_memory(memspace, addr) & BITMASK(16); } static void dsp_do_reg(void) { Uint32 numreg; /* S */ numreg = (cur_inst>>8) & BITMASK(6); if ((numreg == DSP_REG_A) || (numreg == DSP_REG_B)) { dsp_pm_read_accu24(numreg, &dsp_core->registers[DSP_REG_LC]); } else { dsp_core->registers[DSP_REG_LC] = dsp_core->registers[numreg]; } dsp_core->registers[DSP_REG_LC] &= BITMASK(16); } static void dsp_enddo(void) { Uint32 newpc; dsp_stack_pop(&newpc, &dsp_core->registers[DSP_REG_SR]); dsp_stack_pop(&dsp_core->registers[DSP_REG_LA], &dsp_core->registers[DSP_REG_LC]); } static void dsp_illegal(void) { /* Raise interrupt p:0x003e */ #if DSP_DISASM_INTER fprintf(stderr, "Dsp: Interrupt: Illegal\n"); #endif } static void dsp_jcc(void) { Uint32 newpc = dsp_core->pc, cc_code; cc_code = 0; switch((cur_inst >> 16) & BITMASK(8)) { case 0x0a: dsp_calc_ea((cur_inst >>8) & BITMASK(6), &newpc); cc_code=cur_inst & BITMASK(4); break; case 0x0e: newpc = cur_inst & BITMASK(12); cc_code=(cur_inst>>12) & BITMASK(4); break; } if (dsp_calc_cc(cc_code)) { dsp_core->pc = newpc; cur_inst_len = 0; } } static void dsp_jclr(void) { Uint32 memspace, addr, value, numreg, newpc, numbit; memspace = (cur_inst>>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); switch((cur_inst>>14) & BITMASK(2)) { case 0: /* jclr #n,x:aa,p:xx */ /* jclr #n,y:aa,p:xx */ addr = value; value = read_memory(memspace, addr); break; case 1: /* jclr #n,x:ea,p:xx */ /* jclr #n,y:ea,p:xx */ dsp_calc_ea(value, &addr); value = read_memory(memspace, addr); break; case 2: /* jclr #n,x:pp,p:xx */ /* jclr #n,y:pp,p:xx */ addr = 0xffc0 + value; value = read_memory(memspace, addr); break; case 3: /* jclr #n,R,p:xx */ numreg = value; if ((numreg==DSP_REG_A) || (numreg==DSP_REG_B)) { numreg = DSP_REG_A1+(numreg & 1); } value = dsp_core->registers[numreg]; addr = 0xffff0000; /* invalid address */ memspace = 0xffff0000; /* invalid memspace */ break; } ++cur_inst_len; if ((value & (1<pc+1); /* Polling loop if jump to same PC as current JCLR instruction */ pollingLoop = (newpc == dsp_core->pc); if (!pollingLoop && (newpcpc)) { /* or if only NOPs from jump address to current JCLR instruction */ pollingLoop = 1; for (i=newpc; ipc; i++) { if (read_memory_p(i) != 0) { pollingLoop=0; break; } } } if (!pollingLoop && (newpc+2 == dsp_core->pc)) { /* or programs that re-set host port operation (Papa was a bladerunner/Eko) */ pollingLoop = (read_memory_p(newpc) == 0x08f4a0) /* movep #0x000001,x:0xffe0 */ && (read_memory_p(newpc+1) == 0x000001); } if (pollingLoop) { /* Are we waiting for host port ? */ if ((memspace==DSP_SPACE_X) && (addr==0xffc0+DSP_HOST_HSR)) { /* Wait for host to write */ if (numbit==DSP_HOST_HSR_HRDF) { #if DSP_DISASM_STATE fprintf(stderr, "Dsp: WAIT_HOSTWRITE\n"); #endif dsp_core->pauseThread(dsp_core); } /* Wait for host to read */ if (numbit==DSP_HOST_HSR_HTDE) { #if DSP_DISASM_STATE fprintf(stderr, "Dsp: WAIT_HOSTREAD\n"); #endif dsp_core->pauseThread(dsp_core); } } } dsp_core->pc = newpc; cur_inst_len = 0; return; } } static void dsp_jmp(void) { Uint32 newpc = dsp_core->pc; switch((cur_inst >> 16) & BITMASK(8)) { case 0x0a: dsp_calc_ea((cur_inst >>8) & BITMASK(6), &newpc); break; case 0x0c: newpc = cur_inst & BITMASK(12); break; } cur_inst_len = 0; /* Infinite loop ? */ if (newpc == dsp_core->pc) { #if DSP_DISASM_STATE fprintf(stderr, "Dsp: JMP instruction, infinite loop\n"); #endif dsp_core->pauseThread(dsp_core); return; } dsp_core->pc = newpc; } static void dsp_jscc(void) { Uint32 newpc = dsp_core->pc, cc_code; cc_code = 0; switch((cur_inst >> 16) & BITMASK(8)) { case 0x0b: dsp_calc_ea((cur_inst >>8) & BITMASK(6), &newpc); cc_code=cur_inst & BITMASK(4); break; case 0x0f: newpc = cur_inst & BITMASK(12); cc_code=(cur_inst>>12) & BITMASK(4); break; } if (dsp_calc_cc(cc_code)) { dsp_stack_push(dsp_core->pc+cur_inst_len, dsp_core->registers[DSP_REG_SR]); dsp_core->pc = newpc; cur_inst_len = 0; } } static void dsp_jsclr(void) { Uint32 memspace, addr, value, numreg, newpc, numbit; memspace = (cur_inst>>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); switch((cur_inst>>14) & BITMASK(2)) { case 0: /* jsclr #n,x:aa,p:xx */ /* jsclr #n,y:aa,p:xx */ addr = value; value = read_memory(memspace, addr); break; case 1: /* jsclr #n,x:ea,p:xx */ /* jsclr #n,y:ea,p:xx */ dsp_calc_ea(value, &addr); value = read_memory(memspace, addr); break; case 2: /* jsclr #n,x:pp,p:xx */ /* jsclr #n,y:pp,p:xx */ addr = 0xffc0 + value; value = read_memory(memspace, addr); break; case 3: /* jsclr #n,R,p:xx */ numreg = value; if ((numreg==DSP_REG_A) || (numreg==DSP_REG_B)) { numreg = DSP_REG_A1+(numreg & 1); } value = dsp_core->registers[numreg]; break; } ++cur_inst_len; if ((value & (1<pc+cur_inst_len, dsp_core->registers[DSP_REG_SR]); newpc = read_memory_p(dsp_core->pc+1); dsp_core->pc = newpc; cur_inst_len = 0; } } static void dsp_jset(void) { Uint32 memspace, addr, value, numreg, numbit; Uint32 newpc; memspace = (cur_inst>>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); switch((cur_inst>>14) & BITMASK(2)) { case 0: /* jset #n,x:aa,p:xx */ /* jset #n,y:aa,p:xx */ addr = value; value = read_memory(memspace, addr); break; case 1: /* jset #n,x:ea,p:xx */ /* jset #n,y:ea,p:xx */ dsp_calc_ea(value, &addr); value = read_memory(memspace, addr); break; case 2: /* jset #n,x:pp,p:xx */ /* jset #n,y:pp,p:xx */ addr = 0xffc0 + value; value = read_memory(memspace, addr); break; case 3: /* jset #n,R,p:xx */ numreg = value; if ((numreg==DSP_REG_A) || (numreg==DSP_REG_B)) { numreg = DSP_REG_A1+(numreg & 1); } value = dsp_core->registers[numreg]; break; } ++cur_inst_len; if (value & (1<pc+1); dsp_core->pc = newpc; cur_inst_len=0; } } static void dsp_jsr(void) { Uint32 newpc; if (((cur_inst>>12) & BITMASK(4))==0) { newpc = cur_inst & BITMASK(12); } else { dsp_calc_ea((cur_inst>>8) & BITMASK(6),&newpc); } if (dsp_core->interrupt_state != DSP_INTERRUPT_LONG){ dsp_stack_push(dsp_core->pc+cur_inst_len, dsp_core->registers[DSP_REG_SR]); } else { dsp_core->interrupt_state = DSP_INTERRUPT_NONE; } dsp_core->pc = newpc; cur_inst_len = 0; } static void dsp_jsset(void) { Uint32 memspace, addr, value, numreg, newpc, numbit; memspace = (cur_inst>>6) & 1; value = (cur_inst>>8) & BITMASK(6); numbit = cur_inst & BITMASK(5); switch((cur_inst>>14) & BITMASK(2)) { case 0: /* jsset #n,x:aa,p:xx */ /* jsset #n,y:aa,p:xx */ addr = value; value = read_memory(memspace, addr); break; case 1: /* jsset #n,x:ea,p:xx */ /* jsset #n,y:ea,p:xx */ dsp_calc_ea(value, &addr); value = read_memory(memspace, addr); break; case 2: /* jsset #n,x:pp,p:xx */ /* jsset #n,y:pp,p:xx */ addr = 0xffc0 + value; value = read_memory(memspace, addr); break; case 3: /* jsset #n,R,p:xx */ numreg = value; if ((numreg==DSP_REG_A) || (numreg==DSP_REG_B)) { numreg = DSP_REG_A1+(numreg & 1); } value = dsp_core->registers[numreg]; break; } ++cur_inst_len; if (value & (1<pc+cur_inst_len, dsp_core->registers[DSP_REG_SR]); newpc = read_memory_p(dsp_core->pc+1); dsp_core->pc = newpc; cur_inst_len = 0; } } static void dsp_lua(void) { Uint32 value, srcreg, dstreg, srcsave, srcnew; srcreg = (cur_inst>>8) & BITMASK(3); srcsave = dsp_core->registers[DSP_REG_R0+srcreg]; dsp_calc_ea((cur_inst>>8) & BITMASK(5), &value); srcnew = dsp_core->registers[DSP_REG_R0+srcreg]; dsp_core->registers[DSP_REG_R0+srcreg] = srcsave; dstreg = cur_inst & BITMASK(3); if (cur_inst & (1<<3)) { dsp_core->registers[DSP_REG_N0+dstreg] = srcnew; } else { dsp_core->registers[DSP_REG_R0+dstreg] = srcnew; } } /* MOVEC instruction parameter encoding xxxxxxx0 x1xxxxxx 1xxxxxxx reg xxxxxxx1 x0xxxxxx 0xxxxxxx aa xxxxxxx1 x1xxxxxx 0xxxxxxx ea xxxxxxx1 xYxxxxxx 1xxxxxxx #xx */ static void dsp_movec(void) { Uint32 value; value = (cur_inst>>14) & 5; value |= (cur_inst>>6)&(1<<1); opcodes_movec[value](); } static void dsp_movec_reg(void) { Uint32 numreg1, numreg2, value; /* S1,D2 */ /* S2,D1 */ numreg2 = (cur_inst>>8) & BITMASK(6); numreg1 = cur_inst & BITMASK(6); if (cur_inst & (1<<15)) { /* Write D1 */ if ((numreg2 == DSP_REG_A) || (numreg2 == DSP_REG_B)) { dsp_pm_read_accu24(numreg2, &dsp_core->registers[numreg1]); } else { dsp_core->registers[numreg1] = dsp_core->registers[numreg2]; } dsp_core->registers[numreg1] &= BITMASK(registers_mask[numreg1]); } else { /* Read S1 */ if ((numreg2 == DSP_REG_A) || (numreg2 == DSP_REG_B)) { value = dsp_core->registers[numreg1]; dsp_core->registers[DSP_REG_A2+(numreg2 & 1)] = 0; if (value & (1<<23)) { dsp_core->registers[DSP_REG_A2+(numreg2 & 1)] = 0xff; } dsp_core->registers[DSP_REG_A1+(numreg2 & 1)] = value & BITMASK(24); dsp_core->registers[DSP_REG_A0+(numreg2 & 1)] = 0; } else { dsp_core->registers[numreg2] = dsp_core->registers[numreg1]; dsp_core->registers[numreg2] &= BITMASK(registers_mask[numreg2]); } } } static void dsp_movec_aa(void) { Uint32 numreg, addr, memspace; /* x:aa,D1 */ /* S1,x:aa */ /* y:aa,D1 */ /* S1,y:aa */ numreg = cur_inst & BITMASK(6); addr = (cur_inst>>8) & BITMASK(6); memspace = (cur_inst>>6) & 1; if (cur_inst & (1<<15)) { /* Write D1 */ dsp_core->registers[numreg] = read_memory(memspace, addr); dsp_core->registers[numreg] &= BITMASK(registers_mask[numreg]); } else { /* Read S1 */ write_memory(memspace, addr, dsp_core->registers[numreg]); } } static void dsp_movec_imm(void) { Uint32 numreg; /* #xx,D1 */ numreg = cur_inst & BITMASK(6); dsp_core->registers[numreg] = (cur_inst>>8) & BITMASK(8); } static void dsp_movec_ea(void) { Uint32 numreg, addr, memspace, ea_mode; int retour; /* x:ea,D1 */ /* S1,x:ea */ /* y:ea,D1 */ /* S1,y:ea */ /* #xxxx,D1 */ numreg = cur_inst & BITMASK(6); ea_mode = (cur_inst>>8) & BITMASK(6); memspace = (cur_inst>>6) & 1; if (cur_inst & (1<<15)) { /* Write D1 */ retour = dsp_calc_ea(ea_mode, &addr); if (retour) { dsp_core->registers[numreg] = addr; } else { dsp_core->registers[numreg] = read_memory(memspace, addr); } dsp_core->registers[numreg] &= BITMASK(registers_mask[numreg]); } else { /* Read S1 */ retour = dsp_calc_ea(ea_mode, &addr); write_memory(memspace, addr, dsp_core->registers[numreg]); } } static void dsp_movem(void) { Uint32 numreg, addr, ea_mode, value; numreg = cur_inst & BITMASK(6); if (cur_inst & (1<<14)) { /* S,p:ea */ /* p:ea,D */ ea_mode = (cur_inst>>8) & BITMASK(6); dsp_calc_ea(ea_mode, &addr); } else { /* S,p:aa */ /* p:aa,D */ addr = (cur_inst>>8) & BITMASK(6); } if (cur_inst & (1<<15)) { /* Write D */ if ((numreg == DSP_REG_A) || (numreg == DSP_REG_B)) { value = read_memory_p(addr); dsp_core->registers[DSP_REG_A2+(numreg & 1)] = 0; if (value & (1<<23)) { dsp_core->registers[DSP_REG_A2+(numreg & 1)] = 0xff; } dsp_core->registers[DSP_REG_A1+(numreg & 1)] = value & BITMASK(24); dsp_core->registers[DSP_REG_A0+(numreg & 1)] = 0; } else { dsp_core->registers[numreg] = read_memory_p(addr); dsp_core->registers[numreg] &= BITMASK(registers_mask[numreg]); } } else { /* Read S */ if ((numreg == DSP_REG_A) || (numreg == DSP_REG_B)) { dsp_pm_read_accu24(numreg, &value); } else { value = dsp_core->registers[numreg]; } write_memory(DSP_SPACE_P, addr, value); } } static void dsp_movep(void) { Uint32 value; value = (cur_inst>>6) & BITMASK(2); opcodes_movep[value](); } static void dsp_movep_0(void) { /* S,x:pp */ /* x:pp,D */ /* S,y:pp */ /* y:pp,D */ Uint32 addr, memspace, numreg, value; addr = 0xffc0 + (cur_inst & BITMASK(6)); memspace = (cur_inst>>16) & 1; numreg = (cur_inst>>8) & BITMASK(6); if (cur_inst & (1<<15)) { /* Write pp */ if ((numreg == DSP_REG_A) || (numreg == DSP_REG_B)) { dsp_pm_read_accu24(numreg, &value); } else { value = dsp_core->registers[numreg]; } write_memory(memspace, addr, value); } else { /* Read pp */ value = read_memory(memspace, addr); if ((numreg == DSP_REG_A) || (numreg == DSP_REG_B)) { dsp_core->registers[DSP_REG_A2+(numreg & 1)] = 0; if (value & (1<<23)) { dsp_core->registers[DSP_REG_A2+(numreg & 1)] = 0xff; } dsp_core->registers[DSP_REG_A1+(numreg & 1)] = value & BITMASK(24); dsp_core->registers[DSP_REG_A0+(numreg & 1)] = 0; } else { dsp_core->registers[numreg] = value; dsp_core->registers[numreg] &= BITMASK(registers_mask[numreg]); } } } static void dsp_movep_1(void) { /* p:ea,x:pp */ /* x:pp,p:ea */ /* p:ea,y:pp */ /* y:pp,p:ea */ Uint32 xyaddr, memspace, paddr; xyaddr = 0xffc0 + (cur_inst & BITMASK(6)); dsp_calc_ea((cur_inst>>8) & BITMASK(6), &paddr); memspace = (cur_inst>>16) & 1; if (cur_inst & (1<<15)) { /* Write pp */ write_memory(memspace, xyaddr, read_memory_p(paddr)); } else { /* Read pp */ write_memory(DSP_SPACE_P, paddr, read_memory(memspace, xyaddr)); } } static void dsp_movep_2(void) { /* x:ea,x:pp */ /* y:ea,x:pp */ /* #xxxxxx,x:pp */ /* x:pp,x:ea */ /* x:pp,y:pp */ /* x:ea,y:pp */ /* y:ea,y:pp */ /* #xxxxxx,y:pp */ /* y:pp,y:ea */ /* y:pp,x:ea */ Uint32 addr, peraddr, easpace, perspace, ea_mode; int retour; peraddr = 0xffc0 + (cur_inst & BITMASK(6)); perspace = (cur_inst>>16) & 1; ea_mode = (cur_inst>>8) & BITMASK(6); easpace = (cur_inst>>6) & 1; retour = dsp_calc_ea(ea_mode, &addr); if (cur_inst & (1<<15)) { /* Write pp */ if (retour) { write_memory(perspace, peraddr, addr); } else { write_memory(perspace, peraddr, read_memory(easpace, addr)); } } else { /* Read pp */ write_memory(easpace, addr, read_memory(perspace, peraddr)); } } static void dsp_norm(void) { Uint32 cursr,cur_e, cur_euz, dest[3], numreg, rreg; Uint16 newsr; cursr = dsp_core->registers[DSP_REG_SR]; cur_e = (cursr>>DSP_SR_E) & 1; /* E */ cur_euz = ~cur_e; /* (not E) and U and (not Z) */ cur_euz &= (cursr>>DSP_SR_U) & 1; cur_euz &= ~((cursr>>DSP_SR_Z) & 1); cur_euz &= 1; numreg = (cur_inst>>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+numreg]; dest[1] = dsp_core->registers[DSP_REG_A1+numreg]; dest[2] = dsp_core->registers[DSP_REG_A0+numreg]; rreg = DSP_REG_R0+((cur_inst>>8) & BITMASK(3)); if (cur_euz) { newsr = dsp_asl56(dest); --dsp_core->registers[rreg]; dsp_core->registers[rreg] &= BITMASK(16); } else if (cur_e) { newsr = dsp_asr56(dest); ++dsp_core->registers[rreg]; dsp_core->registers[rreg] &= BITMASK(16); } else { newsr = 0; } dsp_core->registers[DSP_REG_A2+numreg] = dest[0]; dsp_core->registers[DSP_REG_A1+numreg] = dest[1]; dsp_core->registers[DSP_REG_A0+numreg] = dest[2]; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } static void dsp_ori(void) { Uint32 regnum, value; value = (cur_inst >> 8) & BITMASK(8); regnum = cur_inst & BITMASK(2); switch(regnum) { case 0: /* mr */ dsp_core->registers[DSP_REG_SR] |= value<<8; break; case 1: /* ccr */ dsp_core->registers[DSP_REG_SR] |= value; break; case 2: /* omr */ dsp_core->registers[DSP_REG_OMR] |= value; break; } } /* REP instruction parameter encoding xxxxxxxx 00xxxxxx 0xxxxxxx aa xxxxxxxx 01xxxxxx 0xxxxxxx ea xxxxxxxx YYxxxxxx 1xxxxxxx imm xxxxxxxx 11xxxxxx 0xxxxxxx reg */ static void dsp_rep(void) { Uint32 value; dsp_core->registers[DSP_REG_LCSAVE] = dsp_core->registers[DSP_REG_LC]; value = ((cur_inst>>14) & BITMASK(2))<<1; value |= (cur_inst>>7) & 1; opcodes_rep[value](); pc_on_rep = 1; /* Not decrement LC at first time */ dsp_core->loop_rep = 1; /* We are now running rep */ } static void dsp_rep_aa(void) { /* x:aa */ /* y:aa */ dsp_core->registers[DSP_REG_LC]=read_memory((cur_inst>>6) & 1,(cur_inst>>8) & BITMASK(6)); } static void dsp_rep_imm(void) { /* #xxx */ dsp_core->registers[DSP_REG_LC] = ((cur_inst>>8) & BITMASK(8)) + ((cur_inst & BITMASK(4))<<8); } static void dsp_rep_ea(void) { Uint32 value; /* x:ea */ /* y:ea */ dsp_calc_ea((cur_inst>>8) & BITMASK(6),&value); dsp_core->registers[DSP_REG_LC]= read_memory((cur_inst>>6) & 1, value); } static void dsp_rep_reg(void) { Uint32 numreg; /* R */ numreg = (cur_inst>>8) & BITMASK(6); if ((numreg == DSP_REG_A) || (numreg == DSP_REG_B)) { dsp_pm_read_accu24(numreg, &dsp_core->registers[DSP_REG_LC]); } else { dsp_core->registers[DSP_REG_LC] = dsp_core->registers[numreg]; } dsp_core->registers[DSP_REG_LC] &= BITMASK(16); } static void dsp_reset(void) { /* Reset external peripherals */ } static void dsp_rti(void) { Uint32 newpc = 0, newsr = 0; dsp_stack_pop(&newpc, &newsr); dsp_core->pc = newpc; dsp_core->registers[DSP_REG_SR] = newsr; cur_inst_len = 0; } static void dsp_rts(void) { Uint32 newpc = 0, newsr; dsp_stack_pop(&newpc, &newsr); dsp_core->pc = newpc; cur_inst_len = 0; } static void dsp_stop(void) { #if DSP_DISASM_STATE fprintf(stderr, "Dsp: STOP instruction\n"); #endif dsp_core->pauseThread(dsp_core); } static void dsp_swi(void) { /* Raise interrupt p:0x0006 */ dsp_core->swi_inter = 1; } static void dsp_tcc(void) { Uint32 cc_code, regsrc1, regdest1, value; Uint32 regsrc2, regdest2; cc_code = (cur_inst>>12) & BITMASK(4); if (dsp_calc_cc(cc_code)) { regsrc1 = registers_tcc[(cur_inst>>3) & BITMASK(4)][0]; regdest1 = registers_tcc[(cur_inst>>3) & BITMASK(4)][1]; /* Read S1 */ if ((regsrc1 == DSP_REG_A) || (regsrc1 == DSP_REG_B)) { tmp_parmove_src[0][0]=dsp_core->registers[DSP_REG_A2+(regsrc1 & 1)]; tmp_parmove_src[0][1]=dsp_core->registers[DSP_REG_A1+(regsrc1 & 1)]; tmp_parmove_src[0][2]=dsp_core->registers[DSP_REG_A0+(regsrc1 & 1)]; } else { value = dsp_core->registers[regsrc1]; tmp_parmove_src[0][0]=0; if (value & (1<<23)) { tmp_parmove_src[0][0]=0x0000ff; } tmp_parmove_src[0][1]=value; tmp_parmove_src[0][2]=0; } /* Write D1 */ dsp_core->registers[DSP_REG_A2+(regdest1 & 1)]=tmp_parmove_src[0][0]; dsp_core->registers[DSP_REG_A1+(regdest1 & 1)]=tmp_parmove_src[0][1]; dsp_core->registers[DSP_REG_A0+(regdest1 & 1)]=tmp_parmove_src[0][2]; /* S2,D2 transfer */ if (cur_inst & (1<<16)) { regsrc2 = DSP_REG_R0+((cur_inst>>8) & BITMASK(3)); regdest2 = DSP_REG_R0+(cur_inst & BITMASK(3)); dsp_core->registers[regdest2] = dsp_core->registers[regsrc2]; } } } static void dsp_wait(void) { #if DSP_DISASM_STATE fprintf(stderr, "Dsp: WAIT instruction\n"); #endif dsp_core->pauseThread(dsp_core); } /********************************** * Parallel moves instructions dispatcher **********************************/ static void dsp_parmove_read(void) { Uint32 value; tmp_parmove_len[0] = tmp_parmove_len[1] = 0; /* Calculate needed parallel moves */ value = (cur_inst >> 20) & BITMASK(4); /* Do parallel move read */ opcodes_parmove[value](); } static void dsp_parmove_write(void) { Uint32 i,j; for(i=0;i<2;i++) { if (tmp_parmove_len[i]==0) { continue; } /* Do parallel move write */ for ( j=tmp_parmove_start[i]; jregisters[DSP_REG_SR]>>DSP_SR_S0) & BITMASK(2); numreg &= 1; /* scaling==1 */ value = dsp_core->registers[DSP_REG_A2+numreg] & 0xff; numbits = 8; switch(scaling) { case 0: value <<=1; value |= (dsp_core->registers[DSP_REG_A1+numreg]>>23) & 1; numbits=9; break; case 2: value <<=2; value |= (dsp_core->registers[DSP_REG_A1+numreg]>>22) & 3; numbits=10; break; } if ((value==0) || (value==(Uint32)(BITMASK(numbits)))) { /* No limiting */ *dest=dsp_core->registers[DSP_REG_A1+numreg]; } else if (dsp_core->registers[DSP_REG_A2+numreg] & (1<<7)) { /* Limited to maximum negative value */ *dest=0x00800000; dsp_core->registers[DSP_REG_SR] |= (1<registers[DSP_REG_SR] |= (1<registers[DSP_REG_A2+(numreg & 1)]; tmp_parmove_dest[position][1].host_pointer=&dsp_core->registers[DSP_REG_A1+(numreg & 1)]; tmp_parmove_dest[position][2].host_pointer=&dsp_core->registers[DSP_REG_A0+(numreg & 1)]; tmp_parmove_start[position]=0; tmp_parmove_len[position]=3; } else { tmp_parmove_dest[position][1].host_pointer=&dsp_core->registers[numreg]; tmp_parmove_start[position]=1; tmp_parmove_len[position]=1; } } static void dsp_pm_0(void) { Uint32 memspace, dummy, numreg, value; /* 0000 100d 00mm mrrr S,x:ea x0,D 0000 100d 10mm mrrr S,y:ea y0,D */ memspace = (cur_inst>>15) & 1; numreg = (cur_inst>>16) & 1; dsp_calc_ea((cur_inst>>8) & BITMASK(6), &dummy); /* [A|B] to [x|y]:ea */ dsp_pm_read_accu24(numreg, &tmp_parmove_src[0][1]); tmp_parmove_dest[0][1].dsp_address=dummy; tmp_parmove_start[0] = 1; tmp_parmove_len[0] = 1; tmp_parmove_type[0]=1; tmp_parmove_space[0]=memspace; /* [x|y]0 to [A|B] */ value = dsp_core->registers[DSP_REG_X0+(memspace<<1)]; if (value & (1<<23)) { tmp_parmove_src[1][0]=0x0000ff; } else { tmp_parmove_src[1][0]=0x000000; } tmp_parmove_src[1][1]=value; tmp_parmove_src[1][2]=0x000000; tmp_parmove_dest[1][0].host_pointer=&dsp_core->registers[DSP_REG_A2+numreg]; tmp_parmove_dest[1][1].host_pointer=&dsp_core->registers[DSP_REG_A1+numreg]; tmp_parmove_dest[1][2].host_pointer=&dsp_core->registers[DSP_REG_A0+numreg]; tmp_parmove_start[1]=0; tmp_parmove_len[1]=3; tmp_parmove_type[1]=0; } static void dsp_pm_1(void) { Uint32 memspace, numreg, value, xy_addr, retour; /* 0001 ffdf w0mm mrrr x:ea,D1 S2,D2 S1,x:ea S2,D2 #xxxxxx,D1 S2,D2 0001 deff w1mm mrrr S1,D1 y:ea,D2 S1,D1 S2,y:ea S1,D1 #xxxxxx,D2 */ value = (cur_inst>>8) & BITMASK(6); retour = dsp_calc_ea(value, &xy_addr); memspace = (cur_inst>>14) & 1; numreg = DSP_REG_NULL; if (memspace) { /* Y: */ switch((cur_inst>>16) & BITMASK(2)) { case 0: numreg = DSP_REG_Y0; break; case 1: numreg = DSP_REG_Y1; break; case 2: numreg = DSP_REG_A; break; case 3: numreg = DSP_REG_B; break; } } else { /* X: */ switch((cur_inst>>18) & BITMASK(2)) { case 0: numreg = DSP_REG_X0; break; case 1: numreg = DSP_REG_X1; break; case 2: numreg = DSP_REG_A; break; case 3: numreg = DSP_REG_B; break; } } if (cur_inst & (1<<15)) { /* Write D1 */ if (retour) { value = xy_addr; } else { value = read_memory(memspace, xy_addr); } tmp_parmove_src[0][0]= 0x000000; if (value & (1<<23)) { tmp_parmove_src[0][0]= 0x0000ff; } tmp_parmove_src[0][1]= value & BITMASK(registers_mask[numreg]); tmp_parmove_src[0][2]= 0x000000; dsp_pm_writereg(numreg, 0); tmp_parmove_type[0]=0; } else { /* Read S1 */ if ((numreg==DSP_REG_A) || (numreg==DSP_REG_B)) { dsp_pm_read_accu24(numreg, &tmp_parmove_src[0][1]); } else { tmp_parmove_src[0][1]=dsp_core->registers[numreg]; } tmp_parmove_dest[0][1].dsp_address=xy_addr; tmp_parmove_start[0]=1; tmp_parmove_len[0]=1; tmp_parmove_type[0]=1; tmp_parmove_space[0]=memspace; } /* S2 */ if (memspace) { /* Y: */ numreg = DSP_REG_A + ((cur_inst>>19) & 1); } else { /* X: */ numreg = DSP_REG_A + ((cur_inst>>17) & 1); } dsp_pm_read_accu24(numreg, &tmp_parmove_src[1][1]); /* D2 */ if (memspace) { /* Y: */ numreg = DSP_REG_X0 + ((cur_inst>>18) & 1); } else { /* X: */ numreg = DSP_REG_Y0 + ((cur_inst>>16) & 1); } tmp_parmove_src[1][1] &= BITMASK(registers_mask[numreg]); tmp_parmove_dest[1][1].host_pointer=&dsp_core->registers[numreg]; tmp_parmove_start[1]=1; tmp_parmove_len[1]=1; tmp_parmove_type[1]=0; } static void dsp_pm_2(void) { Uint32 dummy; /* 0010 0000 0000 0000 nop 0010 0000 010m mrrr R update 0010 00ee eeed dddd S,D 001d dddd iiii iiii #xx,D */ if (((cur_inst >> 8) & 0xffff) == 0x2000) { return; } if (((cur_inst >> 8) & 0xffe0) == 0x2040) { dsp_calc_ea((cur_inst>>8) & BITMASK(5), &dummy); return; } if (((cur_inst >> 8) & 0xfc00) == 0x2000) { dsp_pm_2_2(); return; } dsp_pm_3(); } static void dsp_pm_2_2(void) { /* 0010 00ee eeed dddd S,D */ Uint32 srcreg, dstreg; srcreg = (cur_inst >> 13) & BITMASK(5); dstreg = (cur_inst >> 8) & BITMASK(5); tmp_parmove_src[0][0]= tmp_parmove_src[0][1]= tmp_parmove_src[0][2]= 0x000000; if ((srcreg == DSP_REG_A) || (srcreg == DSP_REG_B)) { /* Accu to register or accu: limited 24 bits */ dsp_pm_read_accu24(srcreg, &tmp_parmove_src[0][1]); if (tmp_parmove_src[0][1] & (1<<23)) { tmp_parmove_src[0][0]=0x0000ff; } } else { if ((dstreg == DSP_REG_A) || (dstreg == DSP_REG_B)) { /* Register to accu: sign extended to 56 bits */ tmp_parmove_src[0][1]=dsp_core->registers[srcreg] & BITMASK(registers_mask[srcreg]); if (tmp_parmove_src[0][1] & (1<<23)) { tmp_parmove_src[0][0]=0x0000ff; } } else { /* Register to register: n bits */ tmp_parmove_src[0][1]=dsp_core->registers[srcreg] & BITMASK(registers_mask[srcreg]); } } dsp_pm_writereg(dstreg, 0); tmp_parmove_type[0]=0; } static void dsp_pm_3(void) { Uint32 dest, srcvalue; /* 001d dddd iiii iiii #xx,R */ dest = (cur_inst >> 16) & BITMASK(5); srcvalue = (cur_inst >> 8) & BITMASK(8); switch(dest) { case DSP_REG_X0: case DSP_REG_X1: case DSP_REG_Y0: case DSP_REG_Y1: case DSP_REG_A: case DSP_REG_B: srcvalue <<= 16; break; } tmp_parmove_src[0][0]=0x000000; if ((dest == DSP_REG_A) || (dest == DSP_REG_B)) { if (srcvalue & (1<<23)) { tmp_parmove_src[0][0]=0x0000ff; } } tmp_parmove_src[0][1]=srcvalue & BITMASK(registers_mask[dest]); tmp_parmove_src[0][2]=0x000000; dsp_pm_writereg(dest, 0); tmp_parmove_type[0]=0; } static void dsp_pm_4(void) { Uint32 l_addr, value; int retour; /* 0100 l0ll w0aa aaaa l:aa,D S,l:aa 0100 l0ll w1mm mrrr l:ea,D S,l:ea 01dd 0ddd w0aa aaaa x:aa,D S,x:aa 01dd 0ddd w1mm mrrr x:ea,D S,x:ea #xxxxxx,D 01dd 1ddd w0aa aaaa y:aa,D S,y:aa 01dd 1ddd w1mm mrrr y:ea,D S,y:ea #xxxxxx,D */ value = (cur_inst>>16) & BITMASK(3); value |= (cur_inst>>17) & (BITMASK(2)<<3); if ((value>>2)==0) { value = (cur_inst>>8) & BITMASK(6); if (cur_inst & (1<<14)) { retour = dsp_calc_ea(value, &l_addr); } else { l_addr = value; retour = 0; } dsp_pm_4x(retour, l_addr); return; } dsp_pm_5(); } static void dsp_pm_4x(int immediat, Uint32 l_addr) { Uint32 value, numreg, numreg2; (void) immediat; /* UNUSED */ /* 0100 l0ll w0aa aaaa l:aa,D S,l:aa 0100 l0ll w1mm mrrr l:ea,D S,l:ea */ l_addr &= BITMASK(16); numreg = (cur_inst>>16) & BITMASK(2); numreg |= (cur_inst>>17) & (1<<2); if (cur_inst & (1<<15)) { /* Write D */ /* Sources */ value = read_memory(DSP_SPACE_X,l_addr); tmp_parmove_src[0][0] = (value & (1<<23) ? 0xff : 0); tmp_parmove_src[0][1] = value & BITMASK(registers_mask[registers_lmove[numreg][0]]); tmp_parmove_src[0][2] = 0x000000; value = read_memory(DSP_SPACE_Y,l_addr); if (registers_lmove[numreg][0]==registers_lmove[numreg][1]) { /* Write to 56bit accumulator, setup a single transfer as 56 bit */ tmp_parmove_src[0][2] = value & BITMASK(registers_mask[registers_lmove[numreg][1]]); } else { /* Writes to 24bit registers, setup second 24 bit transfer */ tmp_parmove_src[1][0] = (value & (1<<23) ? 0xff : 0); tmp_parmove_src[1][1] = value & BITMASK(registers_mask[registers_lmove[numreg][1]]); tmp_parmove_src[1][2] = 0x000000; } /* Destinations */ dsp_pm_writereg(registers_lmove[numreg][0], 0); tmp_parmove_type[0]=0; if (registers_lmove[numreg][0]!=registers_lmove[numreg][1]) { /* Two 24 or 56 bits registers */ dsp_pm_writereg(registers_lmove[numreg][1], 1); tmp_parmove_type[1]=0; } } else { /* Read S */ /* Sources */ if (numreg<4) { /* Two 24 bits tranfers */ tmp_parmove_src[0][1] = dsp_core->registers[registers_lmove[numreg][0]]; tmp_parmove_src[1][1] = dsp_core->registers[registers_lmove[numreg][1]]; } else if (numreg<6) { /* Single accumulator transfer */ numreg2 = registers_lmove[numreg][0]; if (dsp_pm_read_accu24(numreg2, &tmp_parmove_src[0][1])) { /* Was limited, set lower part */ tmp_parmove_src[1][1] = (tmp_parmove_src[0][1] & (1<<23) ? 0 : 0xffffff); } else { /* Not limited */ tmp_parmove_src[1][1] = dsp_core->registers[DSP_REG_A0+(numreg2 & 1)]; } } else { /* Two accumulators tranfers */ dsp_pm_read_accu24(registers_lmove[numreg][0], &tmp_parmove_src[0][1]); dsp_pm_read_accu24(registers_lmove[numreg][1], &tmp_parmove_src[1][1]); } /* D1 */ tmp_parmove_dest[0][1].dsp_address=l_addr; tmp_parmove_start[0]=1; tmp_parmove_len[0]=1; tmp_parmove_type[0]=1; tmp_parmove_space[0]=DSP_SPACE_X; /* D2 */ tmp_parmove_dest[1][1].dsp_address=l_addr; tmp_parmove_start[1]=1; tmp_parmove_len[1]=1; tmp_parmove_type[1]=1; tmp_parmove_space[1]=DSP_SPACE_Y; } } static void dsp_pm_5(void) { Uint32 memspace, numreg, value, xy_addr, retour; /* 01dd 0ddd w0aa aaaa x:aa,D S,x:aa 01dd 0ddd w1mm mrrr x:ea,D S,x:ea #xxxxxx,D 01dd 1ddd w0aa aaaa y:aa,D S,y:aa 01dd 1ddd w1mm mrrr y:ea,D S,y:ea #xxxxxx,D */ value = (cur_inst>>8) & BITMASK(6); if (cur_inst & (1<<14)) { retour = dsp_calc_ea(value, &xy_addr); } else { xy_addr = value; retour = 0; } memspace = (cur_inst>>19) & 1; numreg = (cur_inst>>16) & BITMASK(3); numreg |= (cur_inst>>17) & (BITMASK(2)<<3); if (cur_inst & (1<<15)) { /* Write D */ if (retour) { value = xy_addr; } else { value = read_memory(memspace, xy_addr); } tmp_parmove_src[0][0]= 0x000000; if (value & (1<<23)) { tmp_parmove_src[0][0]= 0x0000ff; } tmp_parmove_src[0][1]= value & BITMASK(registers_mask[numreg]); tmp_parmove_src[0][2]= 0x000000; dsp_pm_writereg(numreg, 0); tmp_parmove_type[0]=0; } else { /* Read S */ if ((numreg==DSP_REG_A) || (numreg==DSP_REG_B)) { dsp_pm_read_accu24(numreg, &tmp_parmove_src[0][1]); } else { tmp_parmove_src[0][1]=dsp_core->registers[numreg]; } tmp_parmove_dest[0][1].dsp_address=xy_addr; tmp_parmove_start[0]=1; tmp_parmove_len[0]=1; tmp_parmove_type[0]=1; tmp_parmove_space[0]=memspace; } } static void dsp_pm_8(void) { Uint32 ea1, ea2; Uint32 numreg1, numreg2; Uint32 value, dummy1, dummy2; /* 1wmm eeff WrrM MRRR x:ea,D1 y:ea,D2 x:ea,D1 S2,y:ea S1,x:ea y:ea,D2 S1,x:ea S2,y:ea */ numreg1 = numreg2 = DSP_REG_NULL; ea1 = (cur_inst>>8) & BITMASK(5); if ((ea1>>3) == 0) { ea1 |= (1<<5); } ea2 = (cur_inst>>13) & BITMASK(2); ea2 |= (cur_inst>>17) & (BITMASK(2)<<3); if ((ea1 & (1<<2))==0) { ea2 |= 1<<2; } if ((ea2>>3) == 0) { ea2 |= (1<<5); } dsp_calc_ea(ea1, &dummy1); dsp_calc_ea(ea2, &dummy2); switch((cur_inst>>18) & BITMASK(2)) { case 0: numreg1=DSP_REG_X0; break; case 1: numreg1=DSP_REG_X1; break; case 2: numreg1=DSP_REG_A; break; case 3: numreg1=DSP_REG_B; break; } switch((cur_inst>>16) & BITMASK(2)) { case 0: numreg2=DSP_REG_Y0; break; case 1: numreg2=DSP_REG_Y1; break; case 2: numreg2=DSP_REG_A; break; case 3: numreg2=DSP_REG_B; break; } if (cur_inst & (1<<15)) { /* Write D1 */ value = read_memory(DSP_SPACE_X, dummy1); tmp_parmove_src[0][0]= 0x000000; if (value & (1<<23)) { tmp_parmove_src[0][0]= 0x0000ff; } tmp_parmove_src[0][1]= value & BITMASK(registers_mask[numreg1]); tmp_parmove_src[0][2]= 0x000000; dsp_pm_writereg(numreg1, 0); tmp_parmove_type[0]=0; } else { /* Read S1 */ if ((numreg1==DSP_REG_A) || (numreg1==DSP_REG_B)) { dsp_pm_read_accu24(numreg1, &tmp_parmove_src[0][1]); } else { tmp_parmove_src[0][1]=dsp_core->registers[numreg1]; } tmp_parmove_dest[0][1].dsp_address=dummy1; tmp_parmove_start[0]=1; tmp_parmove_len[0]=1; tmp_parmove_type[0]=1; tmp_parmove_space[0]=DSP_SPACE_X; } if (cur_inst & (1<<22)) { /* Write D2 */ value = read_memory(DSP_SPACE_Y, dummy2); tmp_parmove_src[1][0]= 0x000000; if (value & (1<<23)) { tmp_parmove_src[1][0]= 0x0000ff; } tmp_parmove_src[1][1]= value & BITMASK(registers_mask[numreg2]); tmp_parmove_src[1][2]= 0x000000; dsp_pm_writereg(numreg2, 1); tmp_parmove_type[1]=0; } else { /* Read S2 */ if ((numreg2==DSP_REG_A) || (numreg2==DSP_REG_B)) { dsp_pm_read_accu24(numreg2, &tmp_parmove_src[1][1]); } else { tmp_parmove_src[1][1]=dsp_core->registers[numreg2]; } tmp_parmove_dest[1][1].dsp_address=dummy2; tmp_parmove_start[1]=1; tmp_parmove_len[1]=1; tmp_parmove_type[1]=1; tmp_parmove_space[1]=DSP_SPACE_Y; } } /********************************** * 56bit arithmetic **********************************/ /* source,dest[0] is 55:48 */ /* source,dest[1] is 47:24 */ /* source,dest[2] is 23:00 */ static Uint16 dsp_abs56(Uint32 *dest) { Uint32 zerodest[3]; Uint16 newsr; /* D=|D| */ if (dest[0] & (1<<7)) { zerodest[0] = zerodest[1] = zerodest[2] = 0; newsr = dsp_sub56(dest, zerodest); dest[0] = zerodest[0]; dest[1] = zerodest[1]; dest[2] = zerodest[2]; } else { newsr = 0; } return newsr; } static Uint16 dsp_asl56(Uint32 *dest) { Uint16 overflow, carry; /* Shift left dest 1 bit: D<<=1 */ carry = (dest[0]>>7) & 1; dest[0] <<= 1; dest[0] |= (dest[1]>>23) & 1; dest[0] &= BITMASK(8); dest[1] <<= 1; dest[1] |= (dest[2]>>23) & 1; dest[1] &= BITMASK(24); dest[2] <<= 1; dest[2] &= BITMASK(24); overflow = (carry != ((dest[0]>>7) & 1)); return (overflow<>=1 */ carry = dest[2] & 1; dest[2] >>= 1; dest[2] &= BITMASK(23); dest[2] |= (dest[1] & 1)<<23; dest[1] >>= 1; dest[1] &= BITMASK(23); dest[1] |= (dest[0] & 1)<<23; dest[0] >>= 1; dest[0] &= BITMASK(7); dest[0] |= (dest[0] & (1<<6))<<1; return (carry<>7) & 1; flg_d = (dest[0]>>7) & 1; not_dest[2] = ((Uint32)(~dest[2])) & BITMASK(24); not_dest[1] = ((Uint32)(~dest[1])) & BITMASK(24); not_dest[0] = ((Uint32)(~dest[0])) & BITMASK(8); /* Add source to dest: D = D+S */ dest[2] += source[2]; dest[1] += source[1]+((dest[2]>>24) & 1); dest[0] += source[0]+((dest[1]>>24) & 1); dest[2] &= BITMASK(24); dest[1] &= BITMASK(24); dest[0] &= BITMASK(8); flg_r = (dest[0]>>7) & 1; /*set overflow*/ overflow = (flg_s ^ flg_r) & (flg_d ^ flg_r); /* set carry : carry (for a add) = ~dest < source */ carry = 0; if (not_dest[0] < source[0]) { carry = 1; } else if (not_dest[0] == source[0]) { if (not_dest[1] < source[1]) { carry = 1; } else if (not_dest[1] == source[1]) { if (not_dest[2] < source[2]) { carry = 1; } } } return (overflow<>24) & 1); dest[0] -= source[0]+((dest[1]>>24) & 1); dest[2] &= BITMASK(24); dest[1] &= BITMASK(24); dest[0] &= BITMASK(8); flg_s = (source[0]>>7) & 1; flg_d = (dest_save[0]>>7) & 1; flg_r = (dest[0]>>7) & 1; /*set overflow*/ overflow = (flg_s ^ flg_d) & (flg_r ^ flg_d); /* set carry : carry (for a sub) = dest < source */ carry = 0; if (dest_save[0] < source[0]) { carry = 1; } else if (dest_save[0] == source[0]) { if (dest_save[1] < source[1]) { carry = 1; } else if (dest_save[1] == source[1]) { if (dest_save[2] < source[2]) { carry = 1; } } } return (overflow<>12) & BITMASK(12))*(source2 & BITMASK(12)); /* bits 0-11 * bits 12-23 */ part[2]=(source1 & BITMASK(12))*((source2>>12) & BITMASK(12)); /* bits 12-23 * bits 12-23 */ part[3]=((source1>>12) & BITMASK(12))*((source2>>12) & BITMASK(12)); /* Calc dest 2 */ dest[2] = part[0]; dest[2] += (part[1] & BITMASK(12)) << 12; dest[2] += (part[2] & BITMASK(12)) << 12; /* Calc dest 1 */ dest[1] = (part[1]>>12) & BITMASK(12); dest[1] += (part[2]>>12) & BITMASK(12); dest[1] += part[3]; /* Calc dest 0 */ dest[0] = 0; /* Add carries */ value = (dest[2]>>24) & BITMASK(8); if (value) { dest[1] += value; dest[2] &= BITMASK(24); } value = (dest[1]>>24) & BITMASK(8); if (value) { dest[0] += value; dest[1] &= BITMASK(24); } /* Get rid of extra sign bit */ dsp_asl56(dest); if (negresult) { zerodest[0] = zerodest[1] = zerodest[2] = 0; dsp_sub56(dest, zerodest); dest[0] = zerodest[0]; dest[1] = zerodest[1]; dest[2] = zerodest[2]; } } static void dsp_rnd56(Uint32 *dest) { Uint32 rnd_const[3]; rnd_const[0] = 0; /* Scaling mode S0 */ if (dsp_core->registers[DSP_REG_SR] & (1<registers[DSP_REG_SR] & (1<>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+numreg]; dest[1] = dsp_core->registers[DSP_REG_A1+numreg]; dest[2] = dsp_core->registers[DSP_REG_A0+numreg]; overflowed = ((dest[2]==0) && (dest[1]==0) && (dest[0]==0x80)); dsp_abs56(dest); dsp_core->registers[DSP_REG_A2+numreg] = dest[0]; dsp_core->registers[DSP_REG_A1+numreg] = dest[1]; dsp_core->registers[DSP_REG_A0+numreg] = dest[2]; dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= (overflowed<registers[DSP_REG_SR]>>DSP_SR_C) & 1; destreg = (cur_inst>>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+destreg]; dest[1] = dsp_core->registers[DSP_REG_A1+destreg]; dest[2] = dsp_core->registers[DSP_REG_A0+destreg]; srcreg = (cur_inst>>4) & 1; if (srcreg == 0) { /* X */ source[1] = dsp_core->registers[DSP_REG_X1]; source[2] = dsp_core->registers[DSP_REG_X0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } } else { /* Y */ source[1] = dsp_core->registers[DSP_REG_Y1]; source[2] = dsp_core->registers[DSP_REG_Y0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } } newsr = dsp_add56(source, dest); if (curcarry) { source[0]=0; source[1]=0; source[2]=1; newsr |= dsp_add56(source, dest); } dsp_core->registers[DSP_REG_A2+destreg] = dest[0]; dsp_core->registers[DSP_REG_A1+destreg] = dest[1]; dsp_core->registers[DSP_REG_A0+destreg] = dest[2]; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } static void dsp_add(void) { Uint32 srcreg, destreg, source[3], dest[3]; Uint16 newsr; destreg = (cur_inst>>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+destreg]; dest[1] = dsp_core->registers[DSP_REG_A1+destreg]; dest[2] = dsp_core->registers[DSP_REG_A0+destreg]; srcreg = (cur_inst>>4) & BITMASK(3); switch(srcreg) { case 1: /* A or B */ srcreg = destreg ^ 1; source[0] = dsp_core->registers[DSP_REG_A2+srcreg]; source[1] = dsp_core->registers[DSP_REG_A1+srcreg]; source[2] = dsp_core->registers[DSP_REG_A0+srcreg]; break; case 2: /* X */ source[1] = dsp_core->registers[DSP_REG_X1]; source[2] = dsp_core->registers[DSP_REG_X0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 3: /* Y */ source[1] = dsp_core->registers[DSP_REG_Y1]; source[2] = dsp_core->registers[DSP_REG_Y0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 4: /* X0 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_X0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 5: /* Y0 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_Y0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 6: /* X1 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_X1]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 7: /* Y1 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_Y1]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; default: fprintf(stderr, "Dsp: source register undefined! dsp_cpu.cpp: %d\n", __LINE__); return; } newsr = dsp_add56(source, dest); dsp_core->registers[DSP_REG_A2+destreg] = dest[0]; dsp_core->registers[DSP_REG_A1+destreg] = dest[1]; dsp_core->registers[DSP_REG_A0+destreg] = dest[2]; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } static void dsp_addl(void) { Uint32 numreg, source[3], dest[3]; Uint16 newsr; numreg = (cur_inst>>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+numreg]; dest[1] = dsp_core->registers[DSP_REG_A1+numreg]; dest[2] = dsp_core->registers[DSP_REG_A0+numreg]; newsr = dsp_asl56(dest); source[0] = dsp_core->registers[DSP_REG_A2+(numreg ^ 1)]; source[1] = dsp_core->registers[DSP_REG_A1+(numreg ^ 1)]; source[2] = dsp_core->registers[DSP_REG_A0+(numreg ^ 1)]; newsr |= dsp_add56(source, dest); dsp_core->registers[DSP_REG_A2+numreg] = dest[0]; dsp_core->registers[DSP_REG_A1+numreg] = dest[1]; dsp_core->registers[DSP_REG_A0+numreg] = dest[2]; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } static void dsp_addr(void) { Uint32 numreg, source[3], dest[3]; Uint16 newsr; numreg = (cur_inst>>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+numreg]; dest[1] = dsp_core->registers[DSP_REG_A1+numreg]; dest[2] = dsp_core->registers[DSP_REG_A0+numreg]; newsr = dsp_asr56(dest); source[0] = dsp_core->registers[DSP_REG_A2+(numreg ^ 1)]; source[1] = dsp_core->registers[DSP_REG_A1+(numreg ^ 1)]; source[2] = dsp_core->registers[DSP_REG_A0+(numreg ^ 1)]; newsr |= dsp_add56(source, dest); dsp_core->registers[DSP_REG_A2+numreg] = dest[0]; dsp_core->registers[DSP_REG_A1+numreg] = dest[1]; dsp_core->registers[DSP_REG_A0+numreg] = dest[2]; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } static void dsp_and(void) { Uint32 srcreg, dstreg; switch((cur_inst>>4) & BITMASK(2)) { case 1: srcreg=DSP_REG_Y0; break; case 2: srcreg=DSP_REG_X1; break; case 3: srcreg=DSP_REG_Y1; break; case 0: default: srcreg=DSP_REG_X0; } dstreg = DSP_REG_A1+((cur_inst>>3) & 1); dsp_core->registers[dstreg] &= dsp_core->registers[srcreg]; dsp_core->registers[dstreg] &= BITMASK(24); /* FIXME: useless ? */ dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp_core->registers[dstreg]>>23) & 1)<registers[DSP_REG_SR] |= (dsp_core->registers[dstreg]==0)<>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+numreg]; dest[1] = dsp_core->registers[DSP_REG_A1+numreg]; dest[2] = dsp_core->registers[DSP_REG_A0+numreg]; newsr = dsp_asl56(dest); dsp_core->registers[DSP_REG_A2+numreg] = dest[0]; dsp_core->registers[DSP_REG_A1+numreg] = dest[1]; dsp_core->registers[DSP_REG_A0+numreg] = dest[2]; dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); } static void dsp_asr(void) { Uint32 numreg, newsr, dest[3]; numreg = (cur_inst>>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+numreg]; dest[1] = dsp_core->registers[DSP_REG_A1+numreg]; dest[2] = dsp_core->registers[DSP_REG_A0+numreg]; newsr = dsp_asr56(dest); dsp_core->registers[DSP_REG_A2+numreg] = dest[0]; dsp_core->registers[DSP_REG_A1+numreg] = dest[1]; dsp_core->registers[DSP_REG_A0+numreg] = dest[2]; dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); } static void dsp_clr(void) { Uint32 numreg; numreg = (cur_inst>>3) & 1; dsp_core->registers[DSP_REG_A2+numreg]=0; dsp_core->registers[DSP_REG_A1+numreg]=0; dsp_core->registers[DSP_REG_A0+numreg]=0; dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= (1<>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+destreg]; dest[1] = dsp_core->registers[DSP_REG_A1+destreg]; dest[2] = dsp_core->registers[DSP_REG_A0+destreg]; srcreg = (cur_inst>>4) & BITMASK(3); switch(srcreg) { case 0: /* A or B */ srcreg = destreg ^ 1; source[0] = dsp_core->registers[DSP_REG_A2+srcreg]; source[1] = dsp_core->registers[DSP_REG_A1+srcreg]; source[2] = dsp_core->registers[DSP_REG_A0+srcreg]; break; case 4: /* X0 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_X0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 5: /* Y0 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_Y0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 6: /* X1 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_X1]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 7: /* Y1 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_Y1]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; default: fprintf(stderr, "source register undefined! dsp_cpu.cpp: %d\n", __LINE__); return; } newsr = dsp_sub56(source, dest); dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } static void dsp_cmpm(void) { Uint32 srcreg, destreg, source[3], dest[3]; Uint16 newsr; destreg = (cur_inst>>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+destreg]; dest[1] = dsp_core->registers[DSP_REG_A1+destreg]; dest[2] = dsp_core->registers[DSP_REG_A0+destreg]; dsp_abs56(dest); srcreg = (cur_inst>>4) & BITMASK(3); switch(srcreg) { case 0: /* A or B */ srcreg = destreg ^ 1; source[0] = dsp_core->registers[DSP_REG_A2+srcreg]; source[1] = dsp_core->registers[DSP_REG_A1+srcreg]; source[2] = dsp_core->registers[DSP_REG_A0+srcreg]; break; case 4: /* X0 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_X0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 5: /* Y0 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_Y0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 6: /* X1 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_X1]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 7: /* Y1 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_Y1]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; default: fprintf(stderr, "source register undefined! dsp_cpu.cpp: %d\n", __LINE__); return; } dsp_abs56(source); newsr = dsp_sub56(source, dest); dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } static void dsp_eor(void) { Uint32 srcreg, dstreg; switch((cur_inst>>4) & BITMASK(2)) { case 1: srcreg=DSP_REG_Y0; break; case 2: srcreg=DSP_REG_X1; break; case 3: srcreg=DSP_REG_Y1; break; case 0: default: srcreg=DSP_REG_X0; } dstreg = DSP_REG_A1+((cur_inst>>3) & 1); dsp_core->registers[dstreg] ^= dsp_core->registers[srcreg]; dsp_core->registers[dstreg] &= BITMASK(24); /* FIXME: useless ? */ dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp_core->registers[dstreg]>>23) & 1)<registers[DSP_REG_SR] |= (dsp_core->registers[dstreg]==0)<>3) & 1); newcarry = (dsp_core->registers[numreg]>>23) & 1; dsp_core->registers[numreg] <<= 1; dsp_core->registers[numreg] &= BITMASK(24); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newcarry; dsp_core->registers[DSP_REG_SR] |= ((dsp_core->registers[numreg]>>23) & 1)<registers[DSP_REG_SR] |= (dsp_core->registers[numreg]==0)<>3) & 1); newcarry = dsp_core->registers[numreg] & 1; dsp_core->registers[numreg] >>= 1; /*dsp_core->registers[numreg] &= BITMASK(24);*/ dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newcarry; dsp_core->registers[DSP_REG_SR] |= (dsp_core->registers[numreg]==0)<>4) & BITMASK(3); srcreg1 = registers_mpy[value][0]; srcreg2 = registers_mpy[value][1]; dsp_mul56(dsp_core->registers[srcreg1], dsp_core->registers[srcreg2], source); if (cur_inst & (1<<2)) { dest[0] = dest[1] = dest[2] = 0; dsp_sub56(source, dest); source[0] = dest[0]; source[1] = dest[1]; source[2] = dest[2]; } destreg = (cur_inst>>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+destreg]; dest[1] = dsp_core->registers[DSP_REG_A1+destreg]; dest[2] = dsp_core->registers[DSP_REG_A0+destreg]; newsr = dsp_add56(source, dest); dsp_core->registers[DSP_REG_A2+destreg] = dest[0]; dsp_core->registers[DSP_REG_A1+destreg] = dest[1]; dsp_core->registers[DSP_REG_A0+destreg] = dest[2]; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } static void dsp_macr(void) { Uint32 srcreg1, srcreg2, destreg, value, source[3], dest[3]; Uint16 newsr; value = (cur_inst>>4) & BITMASK(3); srcreg1 = registers_mpy[value][0]; srcreg2 = registers_mpy[value][1]; dsp_mul56(dsp_core->registers[srcreg1], dsp_core->registers[srcreg2], source); if (cur_inst & (1<<2)) { dest[0] = dest[1] = dest[2] = 0; dsp_sub56(source, dest); source[0] = dest[0]; source[1] = dest[1]; source[2] = dest[2]; } destreg = (cur_inst>>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+destreg]; dest[1] = dsp_core->registers[DSP_REG_A1+destreg]; dest[2] = dsp_core->registers[DSP_REG_A0+destreg]; newsr = dsp_add56(source, dest); dsp_rnd56(dest); dsp_core->registers[DSP_REG_A2+destreg] = dest[0]; dsp_core->registers[DSP_REG_A1+destreg] = dest[1]; dsp_core->registers[DSP_REG_A0+destreg] = dest[2]; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } static void dsp_move(void) { /* move instruction inside alu opcodes taken care of by parallel move dispatcher */ } static void dsp_move_pm(void) { /* move instruction outside alu opcodes */ dsp_parmove_read(); dsp_parmove_write(); } static void dsp_mpy(void) { Uint32 srcreg1, srcreg2, destreg, value, dest[3], source[3]; value = (cur_inst>>4) & BITMASK(3); srcreg1 = registers_mpy[value][0]; srcreg2 = registers_mpy[value][1]; dsp_mul56(dsp_core->registers[srcreg1], dsp_core->registers[srcreg2], source); destreg = (cur_inst>>3) & 1; if (cur_inst & (1<<2)) { dest[0] = dest[1] = dest[2] = 0; dsp_sub56(source, dest); dsp_core->registers[DSP_REG_A2+destreg] = dest[0]; dsp_core->registers[DSP_REG_A1+destreg] = dest[1]; dsp_core->registers[DSP_REG_A0+destreg] = dest[2]; } else { dsp_core->registers[DSP_REG_A2+destreg] = source[0]; dsp_core->registers[DSP_REG_A1+destreg] = source[1]; dsp_core->registers[DSP_REG_A0+destreg] = source[2]; } dsp_ccr_extension(&dsp_core->registers[DSP_REG_A2+destreg], &dsp_core->registers[DSP_REG_A1+destreg]); dsp_ccr_unnormalized(&dsp_core->registers[DSP_REG_A2+destreg], &dsp_core->registers[DSP_REG_A1+destreg]); dsp_ccr_negative(&dsp_core->registers[DSP_REG_A2+destreg]); dsp_ccr_zero(&dsp_core->registers[DSP_REG_A2+destreg], &dsp_core->registers[DSP_REG_A1+destreg], &dsp_core->registers[DSP_REG_A0+destreg]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-(1<>4) & BITMASK(3); srcreg1 = registers_mpy[value][0]; srcreg2 = registers_mpy[value][1]; dsp_mul56(dsp_core->registers[srcreg1], dsp_core->registers[srcreg2], source); destreg = (cur_inst>>3) & 1; if (cur_inst & (1<<2)) { dest[0] = dest[1] = dest[2] = 0; dsp_sub56(source, dest); } else { dest[0] = source[0]; dest[1] = source[1]; dest[2] = source[2]; } dsp_rnd56(dest); dsp_core->registers[DSP_REG_A2+destreg] = dest[0]; dsp_core->registers[DSP_REG_A1+destreg] = dest[1]; dsp_core->registers[DSP_REG_A0+destreg] = dest[2]; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-(1<>3) & 1; source[0] = dsp_core->registers[DSP_REG_A2+srcreg]; source[1] = dsp_core->registers[DSP_REG_A1+srcreg]; source[2] = dsp_core->registers[DSP_REG_A0+srcreg]; overflowed = ((source[2]==0) && (source[1]==0) && (source[0]==0x80)); dest[0] = dest[1] = dest[2] = 0; dsp_sub56(source, dest); dsp_core->registers[DSP_REG_A2+srcreg] = dest[0]; dsp_core->registers[DSP_REG_A1+srcreg] = dest[1]; dsp_core->registers[DSP_REG_A0+srcreg] = dest[2]; dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= (overflowed<>3) & 1); dsp_core->registers[dstreg] = ~dsp_core->registers[dstreg]; dsp_core->registers[dstreg] &= BITMASK(24); /* FIXME: useless ? */ dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp_core->registers[dstreg]>>23) & 1)<registers[DSP_REG_SR] |= (dsp_core->registers[dstreg]==0)<>4) & BITMASK(2)) { case 1: srcreg=DSP_REG_Y0; break; case 2: srcreg=DSP_REG_X1; break; case 3: srcreg=DSP_REG_Y1; break; case 0: default: srcreg=DSP_REG_X0; } dstreg = DSP_REG_A1+((cur_inst>>3) & 1); dsp_core->registers[dstreg] |= dsp_core->registers[srcreg]; dsp_core->registers[dstreg] &= BITMASK(24); /* FIXME: useless ? */ dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp_core->registers[dstreg]>>23) & 1)<registers[DSP_REG_SR] |= (dsp_core->registers[dstreg]==0)<>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+numreg]; dest[1] = dsp_core->registers[DSP_REG_A1+numreg]; dest[2] = dsp_core->registers[DSP_REG_A0+numreg]; dsp_rnd56(dest); dsp_core->registers[DSP_REG_A2+numreg] = dest[0]; dsp_core->registers[DSP_REG_A1+numreg] = dest[1]; dsp_core->registers[DSP_REG_A0+numreg] = dest[2]; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); } static void dsp_rol(void) { Uint32 dstreg, newcarry; dstreg = DSP_REG_A1+((cur_inst>>3) & 1); newcarry = (dsp_core->registers[dstreg]>>23) & 1; dsp_core->registers[dstreg] <<= 1; dsp_core->registers[dstreg] |= newcarry; dsp_core->registers[dstreg] &= BITMASK(24); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newcarry; dsp_core->registers[DSP_REG_SR] |= ((dsp_core->registers[dstreg]>>23) & 1)<registers[DSP_REG_SR] |= (dsp_core->registers[dstreg]==0)<>3) & 1); newcarry = dsp_core->registers[dstreg] & 1; dsp_core->registers[dstreg] >>= 1; dsp_core->registers[dstreg] |= newcarry<<23; dsp_core->registers[dstreg] &= BITMASK(24); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newcarry; dsp_core->registers[DSP_REG_SR] |= ((dsp_core->registers[dstreg]>>23) & 1)<registers[DSP_REG_SR] |= (dsp_core->registers[dstreg]==0)<registers[DSP_REG_SR]>>(DSP_SR_C)) & 1; destreg = (cur_inst>>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+destreg]; dest[1] = dsp_core->registers[DSP_REG_A1+destreg]; dest[2] = dsp_core->registers[DSP_REG_A0+destreg]; srcreg = (cur_inst>>4) & 1; if (srcreg == 0) { /* X */ source[1] = dsp_core->registers[DSP_REG_X1]; source[2] = dsp_core->registers[DSP_REG_X0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } } else { /* Y */ source[1] = dsp_core->registers[DSP_REG_Y1]; source[2] = dsp_core->registers[DSP_REG_Y0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } } newsr = dsp_sub56(source, dest); if (curcarry) { source[0]=0; source[1]=0; source[2]=1; newsr |= dsp_sub56(source, dest); } dsp_core->registers[DSP_REG_A2+destreg] = dest[0]; dsp_core->registers[DSP_REG_A1+destreg] = dest[1]; dsp_core->registers[DSP_REG_A0+destreg] = dest[2]; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } static void dsp_sub(void) { Uint32 srcreg, destreg, source[3], dest[3]; Uint16 newsr; destreg = (cur_inst>>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+destreg]; dest[1] = dsp_core->registers[DSP_REG_A1+destreg]; dest[2] = dsp_core->registers[DSP_REG_A0+destreg]; srcreg = (cur_inst>>4) & BITMASK(3); switch(srcreg) { case 1: /* A or B */ srcreg = destreg ^ 1; source[0] = dsp_core->registers[DSP_REG_A2+srcreg]; source[1] = dsp_core->registers[DSP_REG_A1+srcreg]; source[2] = dsp_core->registers[DSP_REG_A0+srcreg]; break; case 2: /* X */ source[1] = dsp_core->registers[DSP_REG_X1]; source[2] = dsp_core->registers[DSP_REG_X0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 3: /* Y */ source[1] = dsp_core->registers[DSP_REG_Y1]; source[2] = dsp_core->registers[DSP_REG_Y0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 4: /* X0 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_X0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 5: /* Y0 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_Y0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 6: /* X1 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_X1]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 7: /* Y1 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_Y1]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; default: fprintf(stderr, "Dsp: source register undefined! dsp_cpu.cpp: %d\n", __LINE__); return; } newsr = dsp_sub56(source, dest); dsp_core->registers[DSP_REG_A2+destreg] = dest[0]; dsp_core->registers[DSP_REG_A1+destreg] = dest[1]; dsp_core->registers[DSP_REG_A0+destreg] = dest[2]; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } static void dsp_subl(void) { Uint32 numreg, source[3], dest[3]; Uint16 newsr; numreg = (cur_inst>>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+numreg]; dest[1] = dsp_core->registers[DSP_REG_A1+numreg]; dest[2] = dsp_core->registers[DSP_REG_A0+numreg]; newsr = dsp_asl56(dest); source[0] = dsp_core->registers[DSP_REG_A2+(numreg ^ 1)]; source[1] = dsp_core->registers[DSP_REG_A1+(numreg ^ 1)]; source[2] = dsp_core->registers[DSP_REG_A0+(numreg ^ 1)]; newsr |= dsp_sub56(source, dest); dsp_core->registers[DSP_REG_A2+numreg] = dest[0]; dsp_core->registers[DSP_REG_A1+numreg] = dest[1]; dsp_core->registers[DSP_REG_A0+numreg] = dest[2]; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } static void dsp_subr(void) { Uint32 numreg, source[3], dest[3]; Uint16 newsr; numreg = (cur_inst>>3) & 1; dest[0] = dsp_core->registers[DSP_REG_A2+numreg]; dest[1] = dsp_core->registers[DSP_REG_A1+numreg]; dest[2] = dsp_core->registers[DSP_REG_A0+numreg]; newsr = dsp_asr56(dest); source[0] = dsp_core->registers[DSP_REG_A2+(numreg ^ 1)]; source[1] = dsp_core->registers[DSP_REG_A1+(numreg ^ 1)]; source[2] = dsp_core->registers[DSP_REG_A0+(numreg ^ 1)]; newsr |= dsp_sub56(source, dest); dsp_core->registers[DSP_REG_A2+numreg] = dest[0]; dsp_core->registers[DSP_REG_A1+numreg] = dest[1]; dsp_core->registers[DSP_REG_A0+numreg] = dest[2]; dsp_ccr_extension(&dest[0], &dest[1]); dsp_ccr_unnormalized(&dest[0], &dest[1]); dsp_ccr_negative(&dest[0]); dsp_ccr_zero(&dest[0], &dest[1], &dest[2]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } static void dsp_tfr(void) { Uint32 srcreg, destreg, source[3]; destreg = (cur_inst>>3) & 1; srcreg = (cur_inst>>4) & BITMASK(3); switch(srcreg) { case 0: /* A or B */ srcreg = destreg ^ 1; source[0] = dsp_core->registers[DSP_REG_A2+srcreg]; source[1] = dsp_core->registers[DSP_REG_A1+srcreg]; source[2] = dsp_core->registers[DSP_REG_A0+srcreg]; break; case 4: /* X0 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_X0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 5: /* Y0 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_Y0]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 6: /* X1 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_X1]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; case 7: /* Y1 */ source[2] = 0; source[1] = dsp_core->registers[DSP_REG_Y1]; source[0] = 0; if (source[1] & (1<<23)) { source[0] = 0x0000ff; } break; default: return; } dsp_core->registers[DSP_REG_A2+destreg] = source[0]; dsp_core->registers[DSP_REG_A1+destreg] = source[1]; dsp_core->registers[DSP_REG_A0+destreg] = source[2]; } static void dsp_tst(void) { Uint32 destreg; destreg = (cur_inst>>3) & 1; dsp_ccr_extension(&dsp_core->registers[DSP_REG_A2+destreg], &dsp_core->registers[DSP_REG_A1+destreg]); dsp_ccr_unnormalized(&dsp_core->registers[DSP_REG_A2+destreg], &dsp_core->registers[DSP_REG_A1+destreg]); dsp_ccr_negative(&dsp_core->registers[DSP_REG_A2+destreg]); dsp_ccr_zero(&dsp_core->registers[DSP_REG_A2+destreg], &dsp_core->registers[DSP_REG_A1+destreg], &dsp_core->registers[DSP_REG_A0+destreg]); dsp_core->registers[DSP_REG_SR] &= BITMASK(16)-(1< DSP glue (C) 2003-2009 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include #include "math.h" #include "dsp_core.h" #include "dsp_cpu.h" #include "SDL_compat.h" /*--- Defines ---*/ #ifndef M_PI #define M_PI 3.141592653589793238462643383279502 #endif #define DEBUG 0 #define UNUSED(x) ((void)(x)) /* More disasm infos, if wanted */ #define DSP_DISASM_HOSTREAD 0 /* Dsp->Host transfer */ #define DSP_DISASM_HOSTWRITE 0 /* Host->Dsp transfer */ #define DSP_DISASM_STATE 0 /* State changes */ /*--- Functions prototypes ---*/ static void lockMutexNull(dsp_core_t *dsp_core); static void lockMutexThread(dsp_core_t *dsp_core); static void unlockMutexNull(dsp_core_t *dsp_core); static void unlockMutexThread(dsp_core_t *dsp_core); static void pauseThreadNull(dsp_core_t *dsp_core); static void pauseThreadThread(dsp_core_t *dsp_core); static void resumeThreadNull(dsp_core_t *dsp_core); static void resumeThreadThread(dsp_core_t *dsp_core); static Uint32 const x_rom[0x100] = { /* mulaw table */ /* M_00 */ 0x7D7C00, /* 8031 */ /* M_01 */ 0x797C00, /* 7775 */ /* M_02 */ 0x757C00, /* 7519 */ /* M_03 */ 0x717C00, /* 7263 */ /* M_04 */ 0x6D7C00, /* 7007 */ /* M_05 */ 0x697C00, /* 6751 */ /* M_06 */ 0x657C00, /* 6495 */ /* M_07 */ 0x617C00, /* 6239 */ /* M_08 */ 0x5D7C00, /* 5983 */ /* M_09 */ 0x597C00, /* 5727 */ /* M_0A */ 0x557C00, /* 5471 */ /* M_0B */ 0x517C00, /* 5215 */ /* M_0C */ 0x4D7C00, /* 4959 */ /* M_0D */ 0x497C00, /* 4703 */ /* M_0E */ 0x457C00, /* 4447 */ /* M_0F */ 0x417C00, /* 4191 */ /* M_10 */ 0x3E7C00, /* 3999 */ /* M_11 */ 0x3C7C00, /* 3871 */ /* M_12 */ 0x3A7C00, /* 3743 */ /* M_13 */ 0x387C00, /* 3615 */ /* M_14 */ 0x367C00, /* 3487 */ /* M_15 */ 0x347C00, /* 3359 */ /* M_16 */ 0x327C00, /* 3231 */ /* M_17 */ 0x307C00, /* 3103 */ /* M_18 */ 0x2E7C00, /* 2975 */ /* M_19 */ 0x2C7C00, /* 2847 */ /* M_1A */ 0x2A7C00, /* 2719 */ /* M_1B */ 0x287C00, /* 2591 */ /* M_1C */ 0x267C00, /* 2463 */ /* M_1D */ 0x247C00, /* 2335 */ /* M_1E */ 0x227C00, /* 2207 */ /* M_1F */ 0x207C00, /* 2079 */ /* M_20 */ 0x1EFC00, /* 1983 */ /* M_21 */ 0x1DFC00, /* 1919 */ /* M_22 */ 0x1CFC00, /* 1855 */ /* M_23 */ 0x1BFC00, /* 1791 */ /* M_24 */ 0x1AFC00, /* 1727 */ /* M_25 */ 0x19FC00, /* 1663 */ /* M_26 */ 0x18FC00, /* 1599 */ /* M_27 */ 0x17FC00, /* 1535 */ /* M_28 */ 0x16FC00, /* 1471 */ /* M_29 */ 0x15FC00, /* 1407 */ /* M_2A */ 0x14FC00, /* 1343 */ /* M_2B */ 0x13FC00, /* 1279 */ /* M_2C */ 0x12FC00, /* 1215 */ /* M_2D */ 0x11FC00, /* 1151 */ /* M_2E */ 0x10FC00, /* 1087 */ /* M_2F */ 0x0FFC00, /* 1023 */ /* M_30 */ 0x0F3C00, /* 975 */ /* M_31 */ 0x0EBC00, /* 943 */ /* M_32 */ 0x0E3C00, /* 911 */ /* M_33 */ 0x0DBC00, /* 879 */ /* M_34 */ 0x0D3C00, /* 847 */ /* M_35 */ 0x0CBC00, /* 815 */ /* M_36 */ 0x0C3C00, /* 783 */ /* M_37 */ 0x0BBC00, /* 751 */ /* M_38 */ 0x0B3C00, /* 719 */ /* M_39 */ 0x0ABC00, /* 687 */ /* M_3A */ 0x0A3C00, /* 655 */ /* M_3B */ 0x09BC00, /* 623 */ /* M_3C */ 0x093C00, /* 591 */ /* M_3D */ 0x08BC00, /* 559 */ /* M_3E */ 0x083C00, /* 527 */ /* M_3F */ 0x07BC00, /* 495 */ /* M_40 */ 0x075C00, /* 471 */ /* M_41 */ 0x071C00, /* 455 */ /* M_42 */ 0x06DC00, /* 439 */ /* M_43 */ 0x069C00, /* 423 */ /* M_44 */ 0x065C00, /* 407 */ /* M_45 */ 0x061C00, /* 391 */ /* M_46 */ 0x05DC00, /* 375 */ /* M_47 */ 0x059C00, /* 359 */ /* M_48 */ 0x055C00, /* 343 */ /* M_49 */ 0x051C00, /* 327 */ /* M_4A */ 0x04DC00, /* 311 */ /* M_4B */ 0x049C00, /* 295 */ /* M_4C */ 0x045C00, /* 279 */ /* M_4D */ 0x041C00, /* 263 */ /* M_4E */ 0x03DC00, /* 247 */ /* M_4F */ 0x039C00, /* 231 */ /* M_50 */ 0x036C00, /* 219 */ /* M_51 */ 0x034C00, /* 211 */ /* M_52 */ 0x032C00, /* 203 */ /* M_53 */ 0x030C00, /* 195 */ /* M_54 */ 0x02EC00, /* 187 */ /* M_55 */ 0x02CC00, /* 179 */ /* M_56 */ 0x02AC00, /* 171 */ /* M_57 */ 0x028C00, /* 163 */ /* M_58 */ 0x026C00, /* 155 */ /* M_59 */ 0x024C00, /* 147 */ /* M_5A */ 0x022C00, /* 139 */ /* M_5B */ 0x020C00, /* 131 */ /* M_5C */ 0x01EC00, /* 123 */ /* M_5D */ 0x01CC00, /* 115 */ /* M_5E */ 0x01AC00, /* 107 */ /* M_5F */ 0x018C00, /* 99 */ /* M_60 */ 0x017400, /* 93 */ /* M_61 */ 0x016400, /* 89 */ /* M_62 */ 0x015400, /* 85 */ /* M_63 */ 0x014400, /* 81 */ /* M_64 */ 0x013400, /* 77 */ /* M_65 */ 0x012400, /* 73 */ /* M_66 */ 0x011400, /* 69 */ /* M_67 */ 0x010400, /* 65 */ /* M_68 */ 0x00F400, /* 61 */ /* M_69 */ 0x00E400, /* 57 */ /* M_6A */ 0x00D400, /* 53 */ /* M_6B */ 0x00C400, /* 49 */ /* M_6C */ 0x00B400, /* 45 */ /* M_6D */ 0x00A400, /* 41 */ /* M_6E */ 0x009400, /* 37 */ /* M_6F */ 0x008400, /* 33 */ /* M_70 */ 0x007800, /* 30 */ /* M_71 */ 0x007000, /* 28 */ /* M_72 */ 0x006800, /* 26 */ /* M_73 */ 0x006000, /* 24 */ /* M_74 */ 0x005800, /* 22 */ /* M_75 */ 0x005000, /* 20 */ /* M_76 */ 0x004800, /* 18 */ /* M_77 */ 0x004000, /* 16 */ /* M_78 */ 0x003800, /* 14 */ /* M_79 */ 0x003000, /* 12 */ /* M_7A */ 0x002800, /* 10 */ /* M_7B */ 0x002000, /* 8 */ /* M_7C */ 0x001800, /* 6 */ /* M_7D */ 0x001000, /* 4 */ /* M_7E */ 0x000800, /* 2 */ /* M_7F */ 0x000000, /* 0 */ /* a-law table */ /* A_80 */ 0x158000, /* 688 */ /* A_81 */ 0x148000, /* 656 */ /* A_82 */ 0x178000, /* 752 */ /* A_83 */ 0x168000, /* 720 */ /* A_84 */ 0x118000, /* 560 */ /* A_85 */ 0x108000, /* 528 */ /* A_86 */ 0x138000, /* 624 */ /* A_87 */ 0x128000, /* 592 */ /* A_88 */ 0x1D8000, /* 944 */ /* A_89 */ 0x1C8000, /* 912 */ /* A_8A */ 0x1F8000, /* 1008 */ /* A_8B */ 0x1E8000, /* 976 */ /* A_8C */ 0x198000, /* 816 */ /* A_8D */ 0x188000, /* 784 */ /* A_8E */ 0x1B8000, /* 880 */ /* A_8F */ 0x1A8000, /* 848 */ /* A_90 */ 0x0AC000, /* 344 */ /* A_91 */ 0x0A4000, /* 328 */ /* A_92 */ 0x0BC000, /* 376 */ /* A_93 */ 0x0B4000, /* 360 */ /* A_94 */ 0x08C000, /* 280 */ /* A_95 */ 0x084000, /* 264 */ /* A_96 */ 0x09C000, /* 312 */ /* A_97 */ 0x094000, /* 296 */ /* A_98 */ 0x0EC000, /* 472 */ /* A_99 */ 0x0E4000, /* 456 */ /* A_9A */ 0x0FC000, /* 504 */ /* A_9B */ 0x0F4000, /* 488 */ /* A_9C */ 0x0CC000, /* 408 */ /* A_9D */ 0x0C4000, /* 392 */ /* A_9E */ 0x0DC000, /* 440 */ /* A_9F */ 0x0D4000, /* 424 */ /* A_A0 */ 0x560000, /* 2752 */ /* A_A1 */ 0x520000, /* 2624 */ /* A_A2 */ 0x5E0000, /* 3008 */ /* A_A3 */ 0x5A0000, /* 2880 */ /* A_A4 */ 0x460000, /* 2240 */ /* A_A5 */ 0x420000, /* 2112 */ /* A_A6 */ 0x4E0000, /* 2496 */ /* A_A7 */ 0x4A0000, /* 2368 */ /* A_A8 */ 0x760000, /* 3776 */ /* A_A9 */ 0x720000, /* 3648 */ /* A_AA */ 0x7E0000, /* 4032 */ /* A_AB */ 0x7A0000, /* 3904 */ /* A_AC */ 0x660000, /* 3264 */ /* A_AD */ 0x620000, /* 3136 */ /* A_AE */ 0x6E0000, /* 3520 */ /* A_AF */ 0x6A0000, /* 3392 */ /* A_B0 */ 0x2B0000, /* 1376 */ /* A_B1 */ 0x290000, /* 1312 */ /* A_B2 */ 0x2F0000, /* 1504 */ /* A_B3 */ 0x2D0000, /* 1440 */ /* A_B4 */ 0x230000, /* 1120 */ /* A_B5 */ 0x210000, /* 1056 */ /* A_B6 */ 0x270000, /* 1248 */ /* A_B7 */ 0x250000, /* 1184 */ /* A_B8 */ 0x3B0000, /* 1888 */ /* A_B9 */ 0x390000, /* 1824 */ /* A_BA */ 0x3F0000, /* 2016 */ /* A_BB */ 0x3D0000, /* 1952 */ /* A_BC */ 0x330000, /* 1632 */ /* A_BD */ 0x310000, /* 1568 */ /* A_BE */ 0x370000, /* 1760 */ /* A_BF */ 0x350000, /* 1696 */ /* A_C0 */ 0x015800, /* 43 */ /* A_C1 */ 0x014800, /* 41 */ /* A_C2 */ 0x017800, /* 47 */ /* A_C3 */ 0x016800, /* 45 */ /* A_C4 */ 0x011800, /* 35 */ /* A_C5 */ 0x010800, /* 33 */ /* A_C6 */ 0x013800, /* 39 */ /* A_C7 */ 0x012800, /* 37 */ /* A_C8 */ 0x01D800, /* 59 */ /* A_C9 */ 0x01C800, /* 57 */ /* A_CA */ 0x01F800, /* 63 */ /* A_CB */ 0x01E800, /* 61 */ /* A_CC */ 0x019800, /* 51 */ /* A_CD */ 0x018800, /* 49 */ /* A_CE */ 0x01B800, /* 55 */ /* A_CF */ 0x01A800, /* 53 */ /* A_D0 */ 0x005800, /* 11 */ /* A_D1 */ 0x004800, /* 9 */ /* A_D2 */ 0x007800, /* 15 */ /* A_D3 */ 0x006800, /* 13 */ /* A_D4 */ 0x001800, /* 3 */ /* A_D5 */ 0x000800, /* 1 */ /* A_D6 */ 0x003800, /* 7 */ /* A_D7 */ 0x002800, /* 5 */ /* A_D8 */ 0x00D800, /* 27 */ /* A_D9 */ 0x00C800, /* 25 */ /* A_DA */ 0x00F800, /* 31 */ /* A_DB */ 0x00E800, /* 29 */ /* A_DC */ 0x009800, /* 19 */ /* A_DD */ 0x008800, /* 17 */ /* A_DE */ 0x00B800, /* 23 */ /* A_DF */ 0x00A800, /* 21 */ /* A_E0 */ 0x056000, /* 172 */ /* A_E1 */ 0x052000, /* 164 */ /* A_E2 */ 0x05E000, /* 188 */ /* A_E3 */ 0x05A000, /* 180 */ /* A_E4 */ 0x046000, /* 140 */ /* A_E5 */ 0x042000, /* 132 */ /* A_E6 */ 0x04E000, /* 156 */ /* A_E7 */ 0x04A000, /* 148 */ /* A_E8 */ 0x076000, /* 236 */ /* A_E9 */ 0x072000, /* 228 */ /* A_EA */ 0x07E000, /* 252 */ /* A_EB */ 0x07A000, /* 244 */ /* A_EC */ 0x066000, /* 204 */ /* A_ED */ 0x062000, /* 196 */ /* A_EE */ 0x06E000, /* 220 */ /* A_EF */ 0x06A000, /* 212 */ /* A_F0 */ 0x02B000, /* 86 */ /* A_F1 */ 0x029000, /* 82 */ /* A_F2 */ 0x02F000, /* 94 */ /* A_F3 */ 0x02D000, /* 90 */ /* A_F4 */ 0x023000, /* 70 */ /* A_F5 */ 0x021000, /* 66 */ /* A_F6 */ 0x027000, /* 78 */ /* A_F7 */ 0x025000, /* 74 */ /* A_F8 */ 0x03B000, /* 118 */ /* A_F9 */ 0x039000, /* 114 */ /* A_FA */ 0x03F000, /* 126 */ /* A_FB */ 0x03D000, /* 122 */ /* A_FC */ 0x033000, /* 102 */ /* A_FD */ 0x031000, /* 98 */ /* A_FE */ 0x037000, /* 110 */ /* A_FF */ 0x035000 /* 106 */ }; /* sin table */ static Uint32 const y_rom[0x100] = { /* S_00 */ 0x000000, /* +0.0000000000 */ /* S_01 */ 0x03242b, /* +0.0245412588 */ /* S_02 */ 0x0647d9, /* +0.0490676165 */ /* S_03 */ 0x096a90, /* +0.0735645294 */ /* S_04 */ 0x0c8bd3, /* +0.0980170965 */ /* S_05 */ 0x0fab27, /* +0.1224106550 */ /* S_06 */ 0x12c810, /* +0.1467304230 */ /* S_07 */ 0x15e214, /* +0.1709618568 */ /* S_08 */ 0x18f8b8, /* +0.1950902939 */ /* S_09 */ 0x1c0b82, /* +0.2191011906 */ /* S_0A */ 0x1f19f9, /* +0.2429801226 */ /* S_0B */ 0x2223a5, /* +0.2667127848 */ /* S_0C */ 0x25280c, /* +0.2902846336 */ /* S_0D */ 0x2826b9, /* +0.3136817217 */ /* S_0E */ 0x2b1f35, /* +0.3368898630 */ /* S_0F */ 0x2e110a, /* +0.3598949909 */ /* S_10 */ 0x30fbc5, /* +0.3826833963 */ /* S_11 */ 0x33def3, /* +0.4052413702 */ /* S_12 */ 0x36ba20, /* +0.4275550842 */ /* S_13 */ 0x398cdd, /* +0.4496113062 */ /* S_14 */ 0x3c56ba, /* +0.4713966846 */ /* S_15 */ 0x3f174a, /* +0.4928982258 */ /* S_16 */ 0x41ce1e, /* +0.5141026974 */ /* S_17 */ 0x447acd, /* +0.5349975824 */ /* S_18 */ 0x471ced, /* +0.5555702448 */ /* S_19 */ 0x49b415, /* +0.5758081675 */ /* S_1A */ 0x4c3fe0, /* +0.5956993103 */ /* S_1B */ 0x4ebfe9, /* +0.6152316332 */ /* S_1C */ 0x5133cd, /* +0.6343933344 */ /* S_1D */ 0x539b2b, /* +0.6531728506 */ /* S_1E */ 0x55f5a5, /* +0.6715589762 */ /* S_1F */ 0x5842dd, /* +0.6895405054 */ /* S_20 */ 0x5a827a, /* +0.7071068287 */ /* S_21 */ 0x5cb421, /* +0.7242470980 */ /* S_22 */ 0x5ed77d, /* +0.7409511805 */ /* S_23 */ 0x60ec38, /* +0.7572088242 */ /* S_24 */ 0x62f202, /* +0.7730104923 */ /* S_25 */ 0x64e889, /* +0.7883464098 */ /* S_26 */ 0x66cf81, /* +0.8032075167 */ /* S_27 */ 0x68a69f, /* +0.8175848722 */ /* S_28 */ 0x6a6d99, /* +0.8314696550 */ /* S_29 */ 0x6c2429, /* +0.8448535204 */ /* S_2A */ 0x6dca0d, /* +0.8577286005 */ /* S_2B */ 0x6f5f03, /* +0.8700870275 */ /* S_2C */ 0x70e2cc, /* +0.8819212914 */ /* S_2D */ 0x72552d, /* +0.8932243586 */ /* S_2E */ 0x73b5ec, /* +0.9039893150 */ /* S_2F */ 0x7504d3, /* +0.9142097235 */ /* S_30 */ 0x7641af, /* +0.9238795042 */ /* S_31 */ 0x776c4f, /* +0.9329928160 */ /* S_32 */ 0x788484, /* +0.9415440559 */ /* S_33 */ 0x798a24, /* +0.9495282173 */ /* S_34 */ 0x7a7d05, /* +0.9569402933 */ /* S_35 */ 0x7b5d04, /* +0.9637761116 */ /* S_36 */ 0x7c29fc, /* +0.9700312614 */ /* S_37 */ 0x7ce3cf, /* +0.9757021666 */ /* S_38 */ 0x7d8a5f, /* +0.9807852507 */ /* S_39 */ 0x7e1d94, /* +0.9852776527 */ /* S_3A */ 0x7e9d56, /* +0.9891765118 */ /* S_3B */ 0x7f0992, /* +0.9924795628 */ /* S_3C */ 0x7f6237, /* +0.9951847792 */ /* S_3D */ 0x7fa737, /* +0.9972904921 */ /* S_3E */ 0x7fd888, /* +0.9987955093 */ /* S_3F */ 0x7ff622, /* +0.9996988773 */ /* S_40 */ 0x7fffff, /* +1.0000000000 */ /* S_41 */ 0x7ff622, /* +0.9996988773 */ /* S_42 */ 0x7fd888, /* +0.9987955093 */ /* S_43 */ 0x7fa737, /* +0.9972904921 */ /* S_44 */ 0x7f6237, /* +0.9951847792 */ /* S_45 */ 0x7f0992, /* +0.9924795628 */ /* S_46 */ 0x7e9d56, /* +0.9891765118 */ /* S_47 */ 0x7e1d94, /* +0.9852776527 */ /* S_48 */ 0x7d8a5f, /* +0.9807852507 */ /* S_49 */ 0x7ce3cf, /* +0.9757021666 */ /* S_4A */ 0x7c29fc, /* +0.9700312614 */ /* S_4B */ 0x7b5d04, /* +0.9637761116 */ /* S_4C */ 0x7a7d05, /* +0.9569402933 */ /* S_4D */ 0x798a24, /* +0.9495282173 */ /* S_4E */ 0x788484, /* +0.9415440559 */ /* S_4F */ 0x776c4f, /* +0.9329928160 */ /* S_50 */ 0x7641af, /* +0.9238795042 */ /* S_51 */ 0x7504d3, /* +0.9142097235 */ /* S_52 */ 0x73b5ec, /* +0.9039893150 */ /* S_53 */ 0x72552d, /* +0.8932243586 */ /* S_54 */ 0x70e2cc, /* +0.8819212914 */ /* S_55 */ 0x6f5f03, /* +0.8700870275 */ /* S_56 */ 0x6dca0d, /* +0.8577286005 */ /* S_57 */ 0x6c2429, /* +0.8448535204 */ /* S_58 */ 0x6a6d99, /* +0.8314696550 */ /* S_59 */ 0x68a69f, /* +0.8175848722 */ /* S_5A */ 0x66cf81, /* +0.8032075167 */ /* S_5B */ 0x64e889, /* +0.7883464098 */ /* S_5C */ 0x62f202, /* +0.7730104923 */ /* S_5D */ 0x60ec38, /* +0.7572088242 */ /* S_5E */ 0x5ed77d, /* +0.7409511805 */ /* S_5F */ 0x5cb421, /* +0.7242470980 */ /* S_60 */ 0x5a827a, /* +0.7071068287 */ /* S_61 */ 0x5842dd, /* +0.6895405054 */ /* S_62 */ 0x55f5a5, /* +0.6715589762 */ /* S_63 */ 0x539b2b, /* +0.6531728506 */ /* S_64 */ 0x5133cd, /* +0.6343933344 */ /* S_65 */ 0x4ebfe9, /* +0.6152316332 */ /* S_66 */ 0x4c3fe0, /* +0.5956993103 */ /* S_67 */ 0x49b415, /* +0.5758081675 */ /* S_68 */ 0x471ced, /* +0.5555702448 */ /* S_69 */ 0x447acd, /* +0.5349975824 */ /* S_6A */ 0x41ce1e, /* +0.5141026974 */ /* S_6B */ 0x3f174a, /* +0.4928982258 */ /* S_6C */ 0x3c56ba, /* +0.4713966846 */ /* S_6D */ 0x398cdd, /* +0.4496113062 */ /* S_6E */ 0x36ba20, /* +0.4275550842 */ /* S_6F */ 0x33def3, /* +0.4052413702 */ /* S_70 */ 0x30fbc5, /* +0.3826833963 */ /* S_71 */ 0x2e110a, /* +0.3598949909 */ /* S_72 */ 0x2b1f35, /* +0.3368898630 */ /* S_73 */ 0x2826b9, /* +0.3136817217 */ /* S_74 */ 0x25280c, /* +0.2902846336 */ /* S_75 */ 0x2223a5, /* +0.2667127848 */ /* S_76 */ 0x1f19f9, /* +0.2429801226 */ /* S_77 */ 0x1c0b82, /* +0.2191011906 */ /* S_78 */ 0x18f8b8, /* +0.1950902939 */ /* S_79 */ 0x15e214, /* +0.1709618568 */ /* S_7A */ 0x12c810, /* +0.1467304230 */ /* S_7B */ 0x0fab27, /* +0.1224106550 */ /* S_7C */ 0x0c8bd3, /* +0.0980170965 */ /* S_7D */ 0x096a90, /* +0.0735645294 */ /* S_7E */ 0x0647d9, /* +0.0490676165 */ /* S_7F */ 0x03242b, /* +0.0245412588 */ /* S_80 */ 0x000000, /* +0.0000000000 */ /* S_81 */ 0xfcdbd5, /* -0.0245412588 */ /* S_82 */ 0xf9b827, /* -0.0490676165 */ /* S_83 */ 0xf69570, /* -0.0735645294 */ /* S_84 */ 0xf3742d, /* -0.0980170965 */ /* S_85 */ 0xf054d9, /* -0.1224106550 */ /* S_86 */ 0xed37f0, /* -0.1467304230 */ /* S_87 */ 0xea1dec, /* -0.1709618568 */ /* S_88 */ 0xe70748, /* -0.1950902939 */ /* S_89 */ 0xe3f47e, /* -0.2191011906 */ /* S_8A */ 0xe0e607, /* -0.2429801226 */ /* S_8B */ 0xdddc5b, /* -0.2667127848 */ /* S_8C */ 0xdad7f4, /* -0.2902846336 */ /* S_8D */ 0xd7d947, /* -0.3136817217 */ /* S_8E */ 0xd4e0cb, /* -0.3368898630 */ /* S_8F */ 0xd1eef6, /* -0.3598949909 */ /* S_90 */ 0xcf043b, /* -0.3826833963 */ /* S_91 */ 0xcc210d, /* -0.4052413702 */ /* S_92 */ 0xc945e0, /* -0.4275550842 */ /* S_93 */ 0xc67323, /* -0.4496113062 */ /* S_94 */ 0xc3a946, /* -0.4713966846 */ /* S_95 */ 0xc0e8b6, /* -0.4928982258 */ /* S_96 */ 0xbe31e2, /* -0.5141026974 */ /* S_97 */ 0xbb8533, /* -0.5349975824 */ /* S_98 */ 0xb8e313, /* -0.5555702448 */ /* S_99 */ 0xb64beb, /* -0.5758081675 */ /* S_9A */ 0xb3c020, /* -0.5956993103 */ /* S_9B */ 0xb14017, /* -0.6152316332 */ /* S_9C */ 0xaecc33, /* -0.6343933344 */ /* S_9D */ 0xac64d5, /* -0.6531728506 */ /* S_9E */ 0xaa0a5b, /* -0.6715589762 */ /* S_9F */ 0xa7bd23, /* -0.6895405054 */ /* S_A0 */ 0xa57d86, /* -0.7071068287 */ /* S_A1 */ 0xa34bdf, /* -0.7242470980 */ /* S_A2 */ 0xa12883, /* -0.7409511805 */ /* S_A3 */ 0x9f13c8, /* -0.7572088242 */ /* S_A4 */ 0x9d0dfe, /* -0.7730104923 */ /* S_A5 */ 0x9b1777, /* -0.7883464098 */ /* S_A6 */ 0x99307f, /* -0.8032075167 */ /* S_A7 */ 0x975961, /* -0.8175848722 */ /* S_A8 */ 0x959267, /* -0.8314696550 */ /* S_A9 */ 0x93dbd7, /* -0.8448535204 */ /* S_AA */ 0x9235f3, /* -0.8577286005 */ /* S_AB */ 0x90a0fd, /* -0.8700870275 */ /* S_AC */ 0x8f1d34, /* -0.8819212914 */ /* S_AD */ 0x8daad3, /* -0.8932243586 */ /* S_AE */ 0x8c4a14, /* -0.9039893150 */ /* S_AF */ 0x8afb2d, /* -0.9142097235 */ /* S_B0 */ 0x89be51, /* -0.9238795042 */ /* S_B1 */ 0x8893b1, /* -0.9329928160 */ /* S_B2 */ 0x877b7c, /* -0.9415440559 */ /* S_B3 */ 0x8675dc, /* -0.9495282173 */ /* S_B4 */ 0x8582fb, /* -0.9569402933 */ /* S_B5 */ 0x84a2fc, /* -0.9637761116 */ /* S_B6 */ 0x83d604, /* -0.9700312614 */ /* S_B7 */ 0x831c31, /* -0.9757021666 */ /* S_B8 */ 0x8275a1, /* -0.9807852507 */ /* S_B9 */ 0x81e26c, /* -0.9852776527 */ /* S_BA */ 0x8162aa, /* -0.9891765118 */ /* S_BB */ 0x80f66e, /* -0.9924795628 */ /* S_BC */ 0x809dc9, /* -0.9951847792 */ /* S_BD */ 0x8058c9, /* -0.9972904921 */ /* S_BE */ 0x802778, /* -0.9987955093 */ /* S_BF */ 0x8009de, /* -0.9996988773 */ /* S_C0 */ 0x800000, /* -1.0000000000 */ /* S_C1 */ 0x8009de, /* -0.9996988773 */ /* S_C2 */ 0x802778, /* -0.9987955093 */ /* S_C3 */ 0x8058c9, /* -0.9972904921 */ /* S_C4 */ 0x809dc9, /* -0.9951847792 */ /* S_C5 */ 0x80f66e, /* -0.9924795628 */ /* S_C6 */ 0x8162aa, /* -0.9891765118 */ /* S_C7 */ 0x81e26c, /* -0.9852776527 */ /* S_C8 */ 0x8275a1, /* -0.9807852507 */ /* S_C9 */ 0x831c31, /* -0.9757021666 */ /* S_CA */ 0x83d604, /* -0.9700312614 */ /* S_CB */ 0x84a2fc, /* -0.9637761116 */ /* S_CC */ 0x8582fb, /* -0.9569402933 */ /* S_CD */ 0x8675dc, /* -0.9495282173 */ /* S_CE */ 0x877b7c, /* -0.9415440559 */ /* S_CF */ 0x8893b1, /* -0.9329928160 */ /* S_D0 */ 0x89be51, /* -0.9238795042 */ /* S_D1 */ 0x8afb2d, /* -0.9142097235 */ /* S_D2 */ 0x8c4a14, /* -0.9039893150 */ /* S_D3 */ 0x8daad3, /* -0.8932243586 */ /* S_D4 */ 0x8f1d34, /* -0.8819212914 */ /* S_D5 */ 0x90a0fd, /* -0.8700870275 */ /* S_D6 */ 0x9235f3, /* -0.8577286005 */ /* S_D7 */ 0x93dbd7, /* -0.8448535204 */ /* S_D8 */ 0x959267, /* -0.8314696550 */ /* S_D9 */ 0x975961, /* -0.8175848722 */ /* S_DA */ 0x99307f, /* -0.8032075167 */ /* S_DB */ 0x9b1777, /* -0.7883464098 */ /* S_DC */ 0x9d0dfe, /* -0.7730104923 */ /* S_DD */ 0x9f13c8, /* -0.7572088242 */ /* S_DE */ 0xa12883, /* -0.7409511805 */ /* S_DF */ 0xa34bdf, /* -0.7242470980 */ /* S_E0 */ 0xa57d86, /* -0.7071068287 */ /* S_E1 */ 0xa7bd23, /* -0.6895405054 */ /* S_E2 */ 0xaa0a5b, /* -0.6715589762 */ /* S_E3 */ 0xac64d5, /* -0.6531728506 */ /* S_E4 */ 0xaecc33, /* -0.6343933344 */ /* S_E5 */ 0xb14017, /* -0.6152316332 */ /* S_E6 */ 0xb3c020, /* -0.5956993103 */ /* S_E7 */ 0xb64beb, /* -0.5758081675 */ /* S_E8 */ 0xb8e313, /* -0.5555702448 */ /* S_E9 */ 0xbb8533, /* -0.5349975824 */ /* S_EA */ 0xbe31e2, /* -0.5141026974 */ /* S_EB */ 0xc0e8b6, /* -0.4928982258 */ /* S_EC */ 0xc3a946, /* -0.4713966846 */ /* S_ED */ 0xc67323, /* -0.4496113062 */ /* S_EE */ 0xc945e0, /* -0.4275550842 */ /* S_EF */ 0xcc210d, /* -0.4052413702 */ /* S_F0 */ 0xcf043b, /* -0.3826833963 */ /* S_F1 */ 0xd1eef6, /* -0.3598949909 */ /* S_F2 */ 0xd4e0cb, /* -0.3368898630 */ /* S_F3 */ 0xd7d947, /* -0.3136817217 */ /* S_F4 */ 0xdad7f4, /* -0.2902846336 */ /* S_F5 */ 0xdddc5b, /* -0.2667127848 */ /* S_F6 */ 0xe0e607, /* -0.2429801226 */ /* S_F7 */ 0xe3f47e, /* -0.2191011906 */ /* S_F8 */ 0xe70748, /* -0.1950902939 */ /* S_F9 */ 0xea1dec, /* -0.1709618568 */ /* S_FA */ 0xed37f0, /* -0.1467304230 */ /* S_FB */ 0xf054d9, /* -0.1224106550 */ /* S_FC */ 0xf3742d, /* -0.0980170965 */ /* S_FD */ 0xf69570, /* -0.0735645294 */ /* S_FE */ 0xf9b827, /* -0.0490676165 */ /* S_FF */ 0xfcdbd5 /* -0.0245412588 */ }; /*--- Functions ---*/ /* Init DSP emulation */ void dsp_core_init(dsp_core_t *dsp_core, int use_thread) { /* int i; */ #if DEBUG fprintf(stderr, "Dsp: core init\n"); #endif memset(dsp_core, 0, sizeof(dsp_core_t)); #if 0 /* Initialize Y:rom[0x0100-0x01ff] with a sin table */ for (i=0;i<256;i++) { float src = (((float) i)*M_PI)/128.0; Sint32 dest = (Sint32) round(sin(src) * 8388608.0); /* 1<<23 */ if (dest>8388607) { dest = 8388607; } else if (dest<-8388608) { dest = -8388608; } dsp_core->rom[DSP_SPACE_Y][0x100+i]=dest & 0x00ffffff; } /* Initialize X:rom[0x0100-0x017f] with a mu-law table */ { const Uint16 mulaw_base[8]={ 0x7d7c, 0x3e7c, 0x1efc, 0x0f3c, 0x075c, 0x036c, 0x0174, 0x0078 }; Uint32 position = 0x0100; Uint32 offset = 0x040000; for(i=0;i<8;i++) { int j; Uint32 value = mulaw_base[i]<<8; for (j=0;j<16;j++) { dsp_core->rom[DSP_SPACE_X][position++]=value; value -= offset; } offset >>= 1; } } /* Initialize X:rom[0x0180-0x01ff] with a a-law table */ { const Sint32 multiply_base[8]={ 0x1580, 0x0ac0, 0x5600, 0x2b00, 0x1580, 0x0058, 0x0560, 0x02b0 }; const Sint32 multiply_col[4]={0x10, 0x01, 0x04, 0x02}; const Sint32 multiply_line[4]={0x40, 0x04, 0x10, 0x08}; const Sint32 base_values[4]={0, -1, 2, 1}; Uint32 pos=0x0180; for (i=0;i<8;i++) { Sint32 alawbase, j; alawbase = multiply_base[i]<<8; for (j=0;j<4;j++) { Sint32 alawbase1, k; alawbase1 = alawbase + ((base_values[j]*multiply_line[i & 3])<<12); for (k=0;k<4;k++) { Sint32 alawbase2; alawbase2 = alawbase1 + ((base_values[k]*multiply_col[i & 3])<<12); dsp_core->rom[DSP_SPACE_X][pos++]=alawbase2; } } } } #else memcpy(&dsp_core->rom[DSP_SPACE_X][0x100], x_rom, sizeof(x_rom)); memcpy(&dsp_core->rom[DSP_SPACE_Y][0x100], y_rom, sizeof(y_rom)); #endif dsp_core->use_thread = use_thread; if (use_thread) { dsp_core->unlockMutex = unlockMutexThread; dsp_core->lockMutex = lockMutexThread; dsp_core->pauseThread = pauseThreadThread; dsp_core->resumeThread = resumeThreadThread; } else { dsp_core->unlockMutex = unlockMutexNull; dsp_core->lockMutex = lockMutexNull; dsp_core->pauseThread = pauseThreadNull; dsp_core->resumeThread = resumeThreadNull; } } /* Shutdown DSP emulation */ void dsp_core_shutdown(dsp_core_t *dsp_core) { #if DEBUG fprintf(stderr, "Dsp: core shutdown\n"); #endif dsp_core->running = 0; if (dsp_core->thread) { dsp_core->resumeThread(dsp_core); SDL_WaitThread(dsp_core->thread, NULL); dsp_core->thread = NULL; } /* Destroy the semaphore */ if (dsp_core->semaphore) { SDL_DestroySemaphore(dsp_core->semaphore); dsp_core->semaphore = NULL; } /* Destroy mutex */ if (dsp_core->mutex) { SDL_DestroyMutex(dsp_core->mutex); dsp_core->mutex = NULL; } } /* Reset */ void dsp_core_reset(dsp_core_t *dsp_core) { int i; #if DEBUG fprintf(stderr, "Dsp: core reset\n"); #endif /* Kill existing thread and semaphore */ dsp_core_shutdown(dsp_core); /* Memory */ memset((void*)dsp_core->periph, 0,sizeof(dsp_core->periph)); memset(dsp_core->stack, 0,sizeof(dsp_core->stack)); memset(dsp_core->registers, 0,sizeof(dsp_core->registers)); dsp_core->bootstrap_pos = 0; /* Registers */ dsp_core->pc = 0x0000; dsp_core->registers[DSP_REG_OMR]=0x02; for (i=0;i<8;i++) { dsp_core->registers[DSP_REG_M0+i]=0x00ffff; } /* Interruptions */ dsp_core->interrupt_state = DSP_INTERRUPT_NONE; dsp_core->interrupt_instr_fetch = -1; dsp_core->interrupt_save_pc = -1; dsp_core->swi_inter = 0; /* host port init, dsp side */ dsp_core->periph[DSP_SPACE_X][DSP_HOST_HSR]=(1<hostport[CPU_HOST_CVR]=0x12; dsp_core->hostport[CPU_HOST_ISR]=(1<hostport[CPU_HOST_IVR]=0x0f; /* Other hardware registers */ dsp_core->periph[DSP_SPACE_X][DSP_IPR]=0; dsp_core->periph[DSP_SPACE_X][DSP_BCR]=0xffff; /* Misc */ dsp_core->loop_rep = 0; #if DEBUG fprintf(stderr, "Dsp: reset done\n"); #endif /* Create thread, semaphore, mutex if needed */ if (dsp_core->use_thread) { if (dsp_core->semaphore == NULL) { dsp_core->semaphore = SDL_CreateSemaphore(0); } if (dsp_core->mutex == NULL) { dsp_core->mutex = SDL_CreateMutex(); } if (dsp_core->thread == NULL) { dsp_core->thread = SDL_CreateNamedThread(dsp56k_exec_thread, "DSP", dsp_core); } } else { dsp56k_init_cpu(dsp_core); } } /* Lock/unlock mutex functions */ static void lockMutexNull(dsp_core_t *dsp_core) { UNUSED(dsp_core); } static void lockMutexThread(dsp_core_t *dsp_core) { SDL_LockMutex(dsp_core->mutex); } static void unlockMutexNull(dsp_core_t *dsp_core) { UNUSED(dsp_core); } static void unlockMutexThread(dsp_core_t *dsp_core) { SDL_UnlockMutex(dsp_core->mutex); } static void pauseThreadNull(dsp_core_t *dsp_core) { UNUSED(dsp_core); } static void pauseThreadThread(dsp_core_t *dsp_core) { SDL_SemWait(dsp_core->semaphore); } static void resumeThreadNull(dsp_core_t *dsp_core) { UNUSED(dsp_core); } static void resumeThreadThread(dsp_core_t *dsp_core) { /* TODO: maybe use a condition variable, to avoid the IF */ if (SDL_SemValue(dsp_core->semaphore)==0) { SDL_SemPost(dsp_core->semaphore); } } /* CPU<->DSP Host interface transfers */ static void dsp_core_hostport_update_trdy(dsp_core_t *dsp_core) { int trdy; /* Clear/set TRDY bit */ dsp_core->hostport[CPU_HOST_ISR] &= 0xff-(1<hostport[CPU_HOST_ISR]>>CPU_HOST_ISR_TXDE) & ~(dsp_core->periph[DSP_SPACE_X][DSP_HOST_HSR]>>DSP_HOST_HSR_HRDF); dsp_core->hostport[CPU_HOST_ISR] |= (trdy & 1)<< CPU_HOST_ISR_TRDY; } /* Host port transfer ? (dsp->host) */ void dsp_core_dsp2host(dsp_core_t *dsp_core) { /* RXDF = 1 ==> host hasn't read the last value yet */ if (dsp_core->hostport[CPU_HOST_ISR] & (1< nothing to transfer from DSP port */ if (dsp_core->periph[DSP_SPACE_X][DSP_HOST_HSR] & (1<hostport[CPU_HOST_RXL] = dsp_core->periph[DSP_SPACE_X][DSP_HOST_HTX]; dsp_core->hostport[CPU_HOST_RXM] = dsp_core->periph[DSP_SPACE_X][DSP_HOST_HTX]>>8; dsp_core->hostport[CPU_HOST_RXH] = dsp_core->periph[DSP_SPACE_X][DSP_HOST_HTX]>>16; /* Set HTDE bit to say that DSP can write */ dsp_core->periph[DSP_SPACE_X][DSP_HOST_HSR] |= 1<hostport[CPU_HOST_ISR] |= 1<H): Transfer 0x%06x, Dsp HTDE=1, Host RXDF=1\n", dsp_core->periph[DSP_SPACE_X][DSP_HOST_HTX]); #endif } /* Host port transfer ? (host->dsp) */ void dsp_core_host2dsp(dsp_core_t *dsp_core) { /* TXDE = 1 ==> nothing to transfer from host port */ if (dsp_core->hostport[CPU_HOST_ISR] & (1< DSP hasn't read the last value yet */ if (dsp_core->periph[DSP_SPACE_X][DSP_HOST_HSR] & (1<periph[DSP_SPACE_X][DSP_HOST_HRX] = dsp_core->hostport[CPU_HOST_TXL]; dsp_core->periph[DSP_SPACE_X][DSP_HOST_HRX] |= dsp_core->hostport[CPU_HOST_TXM]<<8; dsp_core->periph[DSP_SPACE_X][DSP_HOST_HRX] |= dsp_core->hostport[CPU_HOST_TXH]<<16; /* Set HRDF bit to say that DSP can read */ dsp_core->periph[DSP_SPACE_X][DSP_HOST_HSR] |= 1<hostport[CPU_HOST_ISR] |= 1<D): Transfer 0x%06x, Dsp HRDF=1, Host TXDE=1\n", dsp_core->periph[DSP_SPACE_X][DSP_HOST_HRX]); #endif dsp_core_hostport_update_trdy(dsp_core); } void dsp_core_hostport_dspread(dsp_core_t *dsp_core) { /* Clear HRDF bit to say that DSP has read */ dsp_core->periph[DSP_SPACE_X][DSP_HOST_HSR] &= 0xff-(1<D): Dsp HRDF=0\n"); #endif dsp_core_hostport_update_trdy(dsp_core); dsp_core_host2dsp(dsp_core); } void dsp_core_hostport_dspwrite(dsp_core_t *dsp_core) { /* Clear HTDE bit to say that DSP has written */ dsp_core->periph[DSP_SPACE_X][DSP_HOST_HSR] &= 0xff-(1<H): Dsp HTDE=0\n"); #endif dsp_core_dsp2host(dsp_core); } static void dsp_core_hostport_cpuread(dsp_core_t *dsp_core) { /* Clear RXDF bit to say that CPU has read */ dsp_core->hostport[CPU_HOST_ISR] &= 0xff-(1<H): Host RXDF=0\n"); #endif dsp_core_dsp2host(dsp_core); } static void dsp_core_hostport_cpuwrite(dsp_core_t *dsp_core) { /* Clear TXDE to say that CPU has written */ dsp_core->hostport[CPU_HOST_ISR] &= 0xff-(1<D): Host TXDE=0\n"); #endif dsp_core_hostport_update_trdy(dsp_core); dsp_core_host2dsp(dsp_core); } /* Read/writes on host port */ Uint8 dsp_core_read_host(dsp_core_t *dsp_core, int addr) { Uint8 value; dsp_core->lockMutex(dsp_core); value = dsp_core->hostport[addr]; if (addr == CPU_HOST_RXL) { dsp_core_hostport_cpuread(dsp_core); #if DSP_DISASM_STATE fprintf(stderr, "Dsp: WAIT_HOSTREAD done\n"); #endif /* Wake up DSP if it was waiting our read */ dsp_core->resumeThread(dsp_core); } dsp_core->unlockMutex(dsp_core); return value; } void dsp_core_write_host(dsp_core_t *dsp_core, int addr, Uint8 value) { dsp_core->lockMutex(dsp_core); switch(addr) { case CPU_HOST_ICR: dsp_core->hostport[CPU_HOST_ICR]=value & 0xfb; /* Set HF1 and HF0 accordingly on the host side */ dsp_core->periph[DSP_SPACE_X][DSP_HOST_HSR] &= 0xff-((1<periph[DSP_SPACE_X][DSP_HOST_HSR] |= dsp_core->hostport[CPU_HOST_ICR] & ((1<hostport[CPU_HOST_CVR]=value & 0x9f; /* if bit 7=1, host command */ if (value & (1<<7)) { dsp_core->periph[DSP_SPACE_X][DSP_HOST_HSR] |= 1<resumeThread(dsp_core); } break; case CPU_HOST_ISR: case CPU_HOST_TX0: /* Read only */ break; case CPU_HOST_IVR: case CPU_HOST_TXH: case CPU_HOST_TXM: dsp_core->hostport[addr]=value; break; case CPU_HOST_TXL: dsp_core->hostport[CPU_HOST_TXL]=value; if (!dsp_core->running) { dsp_core->ramint[DSP_SPACE_P][dsp_core->bootstrap_pos] = (dsp_core->hostport[CPU_HOST_TXH]<<16) | (dsp_core->hostport[CPU_HOST_TXM]<<8) | dsp_core->hostport[CPU_HOST_TXL]; #if DEBUG fprintf(stderr, "Dsp: bootstrap p:0x%04x = 0x%06x\n", dsp_core->bootstrap_pos, dsp_core->ramint[DSP_SPACE_P][dsp_core->bootstrap_pos]); #endif if (++dsp_core->bootstrap_pos == 0x200) { #if DSP_DISASM_STATE fprintf(stderr, "Dsp: WAIT_BOOTSTRAP done\n"); #endif dsp_core->running = 1; dsp_core->resumeThread(dsp_core); } } else { dsp_core_hostport_cpuwrite(dsp_core); #if DSP_DISASM_STATE fprintf(stderr, "Dsp: WAIT_HOSTWRITE done\n"); #endif /* Wake up DSP if it was waiting our write */ dsp_core->resumeThread(dsp_core); } break; } dsp_core->unlockMutex(dsp_core); } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/dsp.cpp0000664000175000017500000000440613454637621013266 0ustar joyjoy/* DSP M56001 emulation Dummy emulation, Aranym glue (C) 2001-2008 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "dsp.h" #if DSP_EMULATION # include "dsp_cpu.h" #endif #define DEBUG 0 #include "debug.h" DSP::DSP(memptr address, uint32 size) : BASE_IO(address, size) { #if DSP_EMULATION dsp_core_init(&dsp_core, 1 /* use_thread */); #endif } DSP::~DSP(void) { #if DSP_EMULATION dsp_core_shutdown(&dsp_core); #endif } /* Other functions to init/shutdown dsp emulation */ void DSP::reset(void) { #if DSP_EMULATION dsp_core_reset(&dsp_core); #endif } /* Exec some DSP instructions */ void DSP::exec_insts(int num_inst) { #if DSP_EMULATION while (dsp_core.running && (num_inst-->0)) { dsp56k_execute_instruction(); } #endif } /********************************** * Hardware address read/write by CPU **********************************/ uint8 DSP::handleRead(memptr addr) { uint8 value; static uint8 prev_value = 0; static memptr prev_addr=0; #if DSP_EMULATION value = dsp_core_read_host(&dsp_core, addr-getHWoffset()); #else /* this value prevents TOS from hanging in the DSP init code */ value = 0xff; #endif if ((value!=prev_value) || (addr!=prev_addr)) { D(bug("HWget_b(0x%08x)=0x%02x at 0x%08x", addr, value, showPC())); prev_value = value; prev_addr = addr; } return value; } void DSP::handleWrite(memptr addr, uint8 value) { D(bug("HWput_b(0x%08x,0x%02x) at 0x%08x", addr, value, showPC())); #if DSP_EMULATION dsp_core_write_host(&dsp_core, addr-getHWoffset(), value); #endif } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/disasm/0000775000175000017500000000000013454637641013252 5ustar joyjoyaranym-1.1.0/src/disasm/i386.h0000664000175000017500000001160113454637621014111 0ustar joyjoy/* opcode/i386.h -- Intel 80386 opcode macros Copyright (C) 1989-2015 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler, and GDB, the GNU Debugger. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* The SystemV/386 SVR3.2 assembler, and probably all AT&T derived ix86 Unix assemblers, generate floating point instructions with reversed source and destination registers in certain cases. Unfortunately, gcc and possibly many other programs use this reversed syntax, so we're stuck with it. eg. `fsub %st(3),%st' results in st = st - st(3) as expected, but `fsub %st,%st(3)' results in st(3) = st - st(3), rather than the expected st(3) = st(3) - st This happens with all the non-commutative arithmetic floating point operations with two register operands, where the source register is %st, and destination register is %st(i). The affected opcode map is dceX, dcfX, deeX, defX. */ #ifndef OPCODE_I386_H #define OPCODE_I386_H 1 #ifndef SYSV386_COMPAT /* Set non-zero for broken, compatible instructions. Set to zero for non-broken opcodes at your peril. gcc generates SystemV/386 compatible instructions. */ #define SYSV386_COMPAT 1 #endif #ifndef OLDGCC_COMPAT /* Set non-zero to cater for old (<= 2.8.1) versions of gcc that could generate nonsense fsubp, fsubrp, fdivp and fdivrp with operands reversed. */ #define OLDGCC_COMPAT SYSV386_COMPAT #endif #define MOV_AX_DISP32 0xa0 #define POP_SEG_SHORT 0x07 #define JUMP_PC_RELATIVE 0xeb #define INT_OPCODE 0xcd #define INT3_OPCODE 0xcc /* The opcode for the fwait instruction, which disassembler treats as a prefix when it can. */ #define FWAIT_OPCODE 0x9b /* Instruction prefixes. NOTE: For certain SSE* instructions, 0x66,0xf2,0xf3 are treated as part of the opcode. Other prefixes may still appear between them and the 0x0f part of the opcode. */ #define ADDR_PREFIX_OPCODE 0x67 #define DATA_PREFIX_OPCODE 0x66 #define LOCK_PREFIX_OPCODE 0xf0 #define CS_PREFIX_OPCODE 0x2e #define DS_PREFIX_OPCODE 0x3e #define ES_PREFIX_OPCODE 0x26 #define FS_PREFIX_OPCODE 0x64 #define GS_PREFIX_OPCODE 0x65 #define SS_PREFIX_OPCODE 0x36 #define REPNE_PREFIX_OPCODE 0xf2 #define REPE_PREFIX_OPCODE 0xf3 #define XACQUIRE_PREFIX_OPCODE 0xf2 #define XRELEASE_PREFIX_OPCODE 0xf3 #define BND_PREFIX_OPCODE 0xf2 #define TWO_BYTE_OPCODE_ESCAPE 0x0f #define NOP_OPCODE 0x90 /* register numbers */ #define EAX_REG_NUM 0 #define ECX_REG_NUM 1 #define EDX_REG_NUM 2 #define EBX_REG_NUM 3 #define ESP_REG_NUM 4 #define EBP_REG_NUM 5 #define ESI_REG_NUM 6 #define EDI_REG_NUM 7 /* modrm_byte.regmem for twobyte escape */ #define ESCAPE_TO_TWO_BYTE_ADDRESSING ESP_REG_NUM /* index_base_byte.index for no index register addressing */ #define NO_INDEX_REGISTER ESP_REG_NUM /* index_base_byte.base for no base register addressing */ #define NO_BASE_REGISTER EBP_REG_NUM #define NO_BASE_REGISTER_16 6 /* modrm.mode = REGMEM_FIELD_HAS_REG when a register is in there */ #define REGMEM_FIELD_HAS_REG 0x3/* always = 0x3 */ #define REGMEM_FIELD_HAS_MEM (~REGMEM_FIELD_HAS_REG) /* Extract fields from the mod/rm byte. */ #define MODRM_MOD_FIELD(modrm) (((modrm) >> 6) & 3) #define MODRM_REG_FIELD(modrm) (((modrm) >> 3) & 7) #define MODRM_RM_FIELD(modrm) (((modrm) >> 0) & 7) /* Extract fields from the sib byte. */ #define SIB_SCALE_FIELD(sib) (((sib) >> 6) & 3) #define SIB_INDEX_FIELD(sib) (((sib) >> 3) & 7) #define SIB_BASE_FIELD(sib) (((sib) >> 0) & 7) /* x86-64 extension prefix. */ #define REX_OPCODE 0x40 /* Non-zero if OPCODE is the rex prefix. */ #define REX_PREFIX_P(opcode) (((opcode) & 0xf0) == REX_OPCODE) /* Indicates 64 bit operand size. */ #define REX_W 8 /* High extension to reg field of modrm byte. */ #define REX_R 4 /* High extension to SIB index field. */ #define REX_X 2 /* High extension to base field of modrm or SIB, or reg field of opcode. */ #define REX_B 1 /* max operands per insn */ #define MAX_OPERANDS 5 /* max immediates per insn (lcall, ljmp, insertq, extrq) */ #define MAX_IMMEDIATE_OPERANDS 2 /* max memory refs per insn (string ops) */ #define MAX_MEMORY_OPERANDS 2 /* max size of insn mnemonics. */ #define MAX_MNEM_SIZE 20 /* max size of register name in insn mnemonics. */ #define MAX_REG_NAME_SIZE 8 #endif /* OPCODE_I386_H */ aranym-1.1.0/src/disasm/i386-opc.h0000664000175000017500000006025113454637621014675 0ustar joyjoy/* Declarations for Intel 80386 opcode table Copyright (C) 2007-2017 Free Software Foundation, Inc. This file is part of the GNU opcodes library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GAS; see the file COPYING. If not, write to the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include "i386.h" #include #ifndef CHAR_BIT #define CHAR_BIT 8 #endif /* Position of cpu flags bitfield. */ enum { /* i186 or better required */ Cpu186 = 0, /* i286 or better required */ Cpu286, /* i386 or better required */ Cpu386, /* i486 or better required */ Cpu486, /* i585 or better required */ Cpu586, /* i686 or better required */ Cpu686, /* CLFLUSH Instruction support required */ CpuClflush, /* NOP Instruction support required */ CpuNop, /* SYSCALL Instructions support required */ CpuSYSCALL, /* Floating point support required */ Cpu8087, /* i287 support required */ Cpu287, /* i387 support required */ Cpu387, /* i686 and floating point support required */ Cpu687, /* SSE3 and floating point support required */ CpuFISTTP, /* MMX support required */ CpuMMX, /* SSE support required */ CpuSSE, /* SSE2 support required */ CpuSSE2, /* 3dnow! support required */ Cpu3dnow, /* 3dnow! Extensions support required */ Cpu3dnowA, /* SSE3 support required */ CpuSSE3, /* VIA PadLock required */ CpuPadLock, /* AMD Secure Virtual Machine Ext-s required */ CpuSVME, /* VMX Instructions required */ CpuVMX, /* SMX Instructions required */ CpuSMX, /* SSSE3 support required */ CpuSSSE3, /* SSE4a support required */ CpuSSE4a, /* ABM New Instructions required */ CpuABM, /* SSE4.1 support required */ CpuSSE4_1, /* SSE4.2 support required */ CpuSSE4_2, /* AVX support required */ CpuAVX, /* AVX2 support required */ CpuAVX2, /* Intel AVX-512 Foundation Instructions support required */ CpuAVX512F, /* Intel AVX-512 Conflict Detection Instructions support required */ CpuAVX512CD, /* Intel AVX-512 Exponential and Reciprocal Instructions support required */ CpuAVX512ER, /* Intel AVX-512 Prefetch Instructions support required */ CpuAVX512PF, /* Intel AVX-512 VL Instructions support required. */ CpuAVX512VL, /* Intel AVX-512 DQ Instructions support required. */ CpuAVX512DQ, /* Intel AVX-512 BW Instructions support required. */ CpuAVX512BW, /* Intel L1OM support required */ CpuL1OM, /* Intel K1OM support required */ CpuK1OM, /* Intel IAMCU support required */ CpuIAMCU, /* Xsave/xrstor New Instructions support required */ CpuXsave, /* Xsaveopt New Instructions support required */ CpuXsaveopt, /* AES support required */ CpuAES, /* PCLMUL support required */ CpuPCLMUL, /* FMA support required */ CpuFMA, /* FMA4 support required */ CpuFMA4, /* XOP support required */ CpuXOP, /* LWP support required */ CpuLWP, /* BMI support required */ CpuBMI, /* TBM support required */ CpuTBM, /* MOVBE Instruction support required */ CpuMovbe, /* CMPXCHG16B instruction support required. */ CpuCX16, /* EPT Instructions required */ CpuEPT, /* RDTSCP Instruction support required */ CpuRdtscp, /* FSGSBASE Instructions required */ CpuFSGSBase, /* RDRND Instructions required */ CpuRdRnd, /* F16C Instructions required */ CpuF16C, /* Intel BMI2 support required */ CpuBMI2, /* LZCNT support required */ CpuLZCNT, /* HLE support required */ CpuHLE, /* RTM support required */ CpuRTM, /* INVPCID Instructions required */ CpuINVPCID, /* VMFUNC Instruction required */ CpuVMFUNC, /* Intel MPX Instructions required */ CpuMPX, /* 64bit support available, used by -march= in assembler. */ CpuLM, /* RDRSEED instruction required. */ CpuRDSEED, /* Multi-presisionn add-carry instructions are required. */ CpuADX, /* Supports prefetchw and prefetch instructions. */ CpuPRFCHW, /* SMAP instructions required. */ CpuSMAP, /* SHA instructions required. */ CpuSHA, /* VREX support required */ CpuVREX, /* CLFLUSHOPT instruction required */ CpuClflushOpt, /* XSAVES/XRSTORS instruction required */ CpuXSAVES, /* XSAVEC instruction required */ CpuXSAVEC, /* PREFETCHWT1 instruction required */ CpuPREFETCHWT1, /* SE1 instruction required */ CpuSE1, /* CLWB instruction required */ CpuCLWB, /* Intel AVX-512 IFMA Instructions support required. */ CpuAVX512IFMA, /* Intel AVX-512 VBMI Instructions support required. */ CpuAVX512VBMI, /* Intel AVX-512 4FMAPS Instructions support required. */ CpuAVX512_4FMAPS, /* Intel AVX-512 4VNNIW Instructions support required. */ CpuAVX512_4VNNIW, /* Intel AVX-512 VPOPCNTDQ Instructions support required. */ CpuAVX512_VPOPCNTDQ, /* mwaitx instruction required */ CpuMWAITX, /* Clzero instruction required */ CpuCLZERO, /* OSPKE instruction required */ CpuOSPKE, /* RDPID instruction required */ CpuRDPID, /* PTWRITE instruction required */ CpuPTWRITE, /* MMX register support required */ CpuRegMMX, /* XMM register support required */ CpuRegXMM, /* YMM register support required */ CpuRegYMM, /* ZMM register support required */ CpuRegZMM, /* Mask register support required */ CpuRegMask, /* 64bit support required */ Cpu64, /* Not supported in the 64bit mode */ CpuNo64, /* The last bitfield in i386_cpu_flags. */ CpuMax = CpuNo64 }; #define CpuNumOfUints \ (CpuMax / sizeof (unsigned int) / CHAR_BIT + 1) #define CpuNumOfBits \ (CpuNumOfUints * sizeof (unsigned int) * CHAR_BIT) /* If you get a compiler error for zero width of the unused field, comment it out. */ #define CpuUnused (CpuMax + 1) /* We can check if an instruction is available with array instead of bitfield. */ typedef union i386_cpu_flags { struct { unsigned int cpui186:1; unsigned int cpui286:1; unsigned int cpui386:1; unsigned int cpui486:1; unsigned int cpui586:1; unsigned int cpui686:1; unsigned int cpuclflush:1; unsigned int cpunop:1; unsigned int cpusyscall:1; unsigned int cpu8087:1; unsigned int cpu287:1; unsigned int cpu387:1; unsigned int cpu687:1; unsigned int cpufisttp:1; unsigned int cpummx:1; unsigned int cpusse:1; unsigned int cpusse2:1; unsigned int cpua3dnow:1; unsigned int cpua3dnowa:1; unsigned int cpusse3:1; unsigned int cpupadlock:1; unsigned int cpusvme:1; unsigned int cpuvmx:1; unsigned int cpusmx:1; unsigned int cpussse3:1; unsigned int cpusse4a:1; unsigned int cpuabm:1; unsigned int cpusse4_1:1; unsigned int cpusse4_2:1; unsigned int cpuavx:1; unsigned int cpuavx2:1; unsigned int cpuavx512f:1; unsigned int cpuavx512cd:1; unsigned int cpuavx512er:1; unsigned int cpuavx512pf:1; unsigned int cpuavx512vl:1; unsigned int cpuavx512dq:1; unsigned int cpuavx512bw:1; unsigned int cpul1om:1; unsigned int cpuk1om:1; unsigned int cpuiamcu:1; unsigned int cpuxsave:1; unsigned int cpuxsaveopt:1; unsigned int cpuaes:1; unsigned int cpupclmul:1; unsigned int cpufma:1; unsigned int cpufma4:1; unsigned int cpuxop:1; unsigned int cpulwp:1; unsigned int cpubmi:1; unsigned int cputbm:1; unsigned int cpumovbe:1; unsigned int cpucx16:1; unsigned int cpuept:1; unsigned int cpurdtscp:1; unsigned int cpufsgsbase:1; unsigned int cpurdrnd:1; unsigned int cpuf16c:1; unsigned int cpubmi2:1; unsigned int cpulzcnt:1; unsigned int cpuhle:1; unsigned int cpurtm:1; unsigned int cpuinvpcid:1; unsigned int cpuvmfunc:1; unsigned int cpumpx:1; unsigned int cpulm:1; unsigned int cpurdseed:1; unsigned int cpuadx:1; unsigned int cpuprfchw:1; unsigned int cpusmap:1; unsigned int cpusha:1; unsigned int cpuvrex:1; unsigned int cpuclflushopt:1; unsigned int cpuxsaves:1; unsigned int cpuxsavec:1; unsigned int cpuprefetchwt1:1; unsigned int cpuse1:1; unsigned int cpuclwb:1; unsigned int cpuavx512ifma:1; unsigned int cpuavx512vbmi:1; unsigned int cpuavx512_4fmaps:1; unsigned int cpuavx512_4vnniw:1; unsigned int cpuavx512_vpopcntdq:1; unsigned int cpumwaitx:1; unsigned int cpuclzero:1; unsigned int cpuospke:1; unsigned int cpurdpid:1; unsigned int cpuptwrite:1; unsigned int cpuregmmx:1; unsigned int cpuregxmm:1; unsigned int cpuregymm:1; unsigned int cpuregzmm:1; unsigned int cpuregmask:1; unsigned int cpu64:1; unsigned int cpuno64:1; #ifdef CpuUnused unsigned int unused:(CpuNumOfBits - CpuUnused); #endif } bitfield; unsigned int array[CpuNumOfUints]; } i386_cpu_flags; /* Position of opcode_modifier bits. */ enum { /* has direction bit. */ D = 0, /* set if operands can be words or dwords encoded the canonical way */ W, /* Skip the current insn and use the next insn in i386-opc.tbl to swap operand in encoding. */ S, /* insn has a modrm byte. */ Modrm, /* register is in low 3 bits of opcode */ ShortForm, /* special case for jump insns. */ Jump, /* call and jump */ JumpDword, /* loop and jecxz */ JumpByte, /* special case for intersegment leaps/calls */ JumpInterSegment, /* FP insn memory format bit, sized by 0x4 */ FloatMF, /* src/dest swap for floats. */ FloatR, /* has float insn direction bit. */ FloatD, /* needs size prefix if in 32-bit mode */ Size16, /* needs size prefix if in 16-bit mode */ Size32, /* needs size prefix if in 64-bit mode */ Size64, /* check register size. */ CheckRegSize, /* instruction ignores operand size prefix and in Intel mode ignores mnemonic size suffix check. */ IgnoreSize, /* default insn size depends on mode */ DefaultSize, /* b suffix on instruction illegal */ No_bSuf, /* w suffix on instruction illegal */ No_wSuf, /* l suffix on instruction illegal */ No_lSuf, /* s suffix on instruction illegal */ No_sSuf, /* q suffix on instruction illegal */ No_qSuf, /* long double suffix on instruction illegal */ No_ldSuf, /* instruction needs FWAIT */ FWait, /* quick test for string instructions */ IsString, /* quick test if branch instruction is MPX supported */ BNDPrefixOk, /* quick test for lockable instructions */ IsLockable, /* fake an extra reg operand for clr, imul and special register processing for some instructions. */ RegKludge, /* The first operand must be xmm0 */ FirstXmm0, /* An implicit xmm0 as the first operand */ Implicit1stXmm0, /* The HLE prefix is OK: 1. With a LOCK prefix. 2. With or without a LOCK prefix. 3. With a RELEASE (0xf3) prefix. */ #define HLEPrefixNone 0 #define HLEPrefixLock 1 #define HLEPrefixAny 2 #define HLEPrefixRelease 3 HLEPrefixOk, /* An instruction on which a "rep" prefix is acceptable. */ RepPrefixOk, /* Convert to DWORD */ ToDword, /* Convert to QWORD */ ToQword, /* Address prefix changes operand 0 */ AddrPrefixOp0, /* opcode is a prefix */ IsPrefix, /* instruction has extension in 8 bit imm */ ImmExt, /* instruction don't need Rex64 prefix. */ NoRex64, /* instruction require Rex64 prefix. */ Rex64, /* deprecated fp insn, gets a warning */ Ugh, /* insn has VEX prefix: 1: 128bit VEX prefix. 2: 256bit VEX prefix. 3: Scalar VEX prefix. */ #define VEX128 1 #define VEX256 2 #define VEXScalar 3 Vex, /* How to encode VEX.vvvv: 0: VEX.vvvv must be 1111b. 1: VEX.NDS. Register-only source is encoded in VEX.vvvv where the content of source registers will be preserved. VEX.DDS. The second register operand is encoded in VEX.vvvv where the content of first source register will be overwritten by the result. VEX.NDD2. The second destination register operand is encoded in VEX.vvvv for instructions with 2 destination register operands. For assembler, there are no difference between VEX.NDS, VEX.DDS and VEX.NDD2. 2. VEX.NDD. Register destination is encoded in VEX.vvvv for instructions with 1 destination register operand. 3. VEX.LWP. Register destination is encoded in VEX.vvvv and one of the operands can access a memory location. */ #define VEXXDS 1 #define VEXNDD 2 #define VEXLWP 3 VexVVVV, /* How the VEX.W bit is used: 0: Set by the REX.W bit. 1: VEX.W0. Should always be 0. 2: VEX.W1. Should always be 1. */ #define VEXW0 1 #define VEXW1 2 VexW, /* VEX opcode prefix: 0: VEX 0x0F opcode prefix. 1: VEX 0x0F38 opcode prefix. 2: VEX 0x0F3A opcode prefix 3: XOP 0x08 opcode prefix. 4: XOP 0x09 opcode prefix 5: XOP 0x0A opcode prefix. */ #define VEX0F 0 #define VEX0F38 1 #define VEX0F3A 2 #define XOP08 3 #define XOP09 4 #define XOP0A 5 VexOpcode, /* number of VEX source operands: 0: <= 2 source operands. 1: 2 XOP source operands. 2: 3 source operands. */ #define XOP2SOURCES 1 #define VEX3SOURCES 2 VexSources, /* instruction has VEX 8 bit imm */ VexImmExt, /* Instruction with vector SIB byte: 1: 128bit vector register. 2: 256bit vector register. 3: 512bit vector register. */ #define VecSIB128 1 #define VecSIB256 2 #define VecSIB512 3 VecSIB, /* SSE to AVX support required */ SSE2AVX, /* No AVX equivalent */ NoAVX, /* insn has EVEX prefix: 1: 512bit EVEX prefix. 2: 128bit EVEX prefix. 3: 256bit EVEX prefix. 4: Length-ignored (LIG) EVEX prefix. */ #define EVEX512 1 #define EVEX128 2 #define EVEX256 3 #define EVEXLIG 4 EVex, /* AVX512 masking support: 1: Zeroing-masking. 2: Merging-masking. 3: Both zeroing and merging masking. */ #define ZEROING_MASKING 1 #define MERGING_MASKING 2 #define BOTH_MASKING 3 Masking, /* Input element size of vector insn: 0: 32bit. 1: 64bit. */ VecESize, /* Broadcast factor. 0: No broadcast. 1: 1to16 broadcast. 2: 1to8 broadcast. */ #define NO_BROADCAST 0 #define BROADCAST_1TO16 1 #define BROADCAST_1TO8 2 #define BROADCAST_1TO4 3 #define BROADCAST_1TO2 4 Broadcast, /* Static rounding control is supported. */ StaticRounding, /* Supress All Exceptions is supported. */ SAE, /* Copressed Disp8*N attribute. */ Disp8MemShift, /* Default mask isn't allowed. */ NoDefMask, /* The second operand must be a vector register, {x,y,z}mmN, where N is a multiple of 4. It implicitly denotes the register group of {x,y,z}mmN - {x,y,z}mm(N + 3). */ ImplicitQuadGroup, /* Compatible with old (<= 2.8.1) versions of gcc */ OldGcc, /* AT&T mnemonic. */ ATTMnemonic, /* AT&T syntax. */ ATTSyntax, /* Intel syntax. */ IntelSyntax, /* AMD64. */ AMD64, /* Intel64. */ Intel64, /* The last bitfield in i386_opcode_modifier. */ Opcode_Modifier_Max }; typedef struct i386_opcode_modifier { unsigned int d:1; unsigned int w:1; unsigned int s:1; unsigned int modrm:1; unsigned int shortform:1; unsigned int jump:1; unsigned int jumpdword:1; unsigned int jumpbyte:1; unsigned int jumpintersegment:1; unsigned int floatmf:1; unsigned int floatr:1; unsigned int floatd:1; unsigned int size16:1; unsigned int size32:1; unsigned int size64:1; unsigned int checkregsize:1; unsigned int ignoresize:1; unsigned int defaultsize:1; unsigned int no_bsuf:1; unsigned int no_wsuf:1; unsigned int no_lsuf:1; unsigned int no_ssuf:1; unsigned int no_qsuf:1; unsigned int no_ldsuf:1; unsigned int fwait:1; unsigned int isstring:1; unsigned int bndprefixok:1; unsigned int islockable:1; unsigned int regkludge:1; unsigned int firstxmm0:1; unsigned int implicit1stxmm0:1; unsigned int hleprefixok:2; unsigned int repprefixok:1; unsigned int todword:1; unsigned int toqword:1; unsigned int addrprefixop0:1; unsigned int isprefix:1; unsigned int immext:1; unsigned int norex64:1; unsigned int rex64:1; unsigned int ugh:1; unsigned int vex:2; unsigned int vexvvvv:2; unsigned int vexw:2; unsigned int vexopcode:3; unsigned int vexsources:2; unsigned int veximmext:1; unsigned int vecsib:2; unsigned int sse2avx:1; unsigned int noavx:1; unsigned int evex:3; unsigned int masking:2; unsigned int vecesize:1; unsigned int broadcast:3; unsigned int staticrounding:1; unsigned int sae:1; unsigned int disp8memshift:3; unsigned int nodefmask:1; unsigned int implicitquadgroup:1; unsigned int oldgcc:1; unsigned int attmnemonic:1; unsigned int attsyntax:1; unsigned int intelsyntax:1; unsigned int amd64:1; unsigned int intel64:1; } i386_opcode_modifier; /* Position of operand_type bits. */ enum { /* 8bit register */ Reg8 = 0, /* 16bit register */ Reg16, /* 32bit register */ Reg32, /* 64bit register */ Reg64, /* Floating pointer stack register */ FloatReg, /* MMX register */ RegMMX, /* SSE register */ RegXMM, /* AVX registers */ RegYMM, /* AVX512 registers */ RegZMM, /* Vector Mask registers */ RegMask, /* Control register */ Control, /* Debug register */ Debug, /* Test register */ Test, /* 2 bit segment register */ SReg2, /* 3 bit segment register */ SReg3, /* 1 bit immediate */ Imm1, /* 8 bit immediate */ Imm8, /* 8 bit immediate sign extended */ Imm8S, /* 16 bit immediate */ Imm16, /* 32 bit immediate */ Imm32, /* 32 bit immediate sign extended */ Imm32S, /* 64 bit immediate */ Imm64, /* 8bit/16bit/32bit displacements are used in different ways, depending on the instruction. For jumps, they specify the size of the PC relative displacement, for instructions with memory operand, they specify the size of the offset relative to the base register, and for instructions with memory offset such as `mov 1234,%al' they specify the size of the offset relative to the segment base. */ /* 8 bit displacement */ Disp8, /* 16 bit displacement */ Disp16, /* 32 bit displacement */ Disp32, /* 32 bit signed displacement */ Disp32S, /* 64 bit displacement */ Disp64, /* Accumulator %al/%ax/%eax/%rax */ Acc, /* Floating pointer top stack register %st(0) */ FloatAcc, /* Register which can be used for base or index in memory operand. */ BaseIndex, /* Register to hold in/out port addr = dx */ InOutPortReg, /* Register to hold shift count = cl */ ShiftCount, /* Absolute address for jump. */ JumpAbsolute, /* String insn operand with fixed es segment */ EsSeg, /* RegMem is for instructions with a modrm byte where the register destination operand should be encoded in the mod and regmem fields. Normally, it will be encoded in the reg field. We add a RegMem flag to the destination register operand to indicate that it should be encoded in the regmem field. */ RegMem, /* Memory. */ Mem, /* BYTE memory. */ Byte, /* WORD memory. 2 byte */ Word, /* DWORD memory. 4 byte */ Dword, /* FWORD memory. 6 byte */ Fword, /* QWORD memory. 8 byte */ Qword, /* TBYTE memory. 10 byte */ Tbyte, /* XMMWORD memory. */ Xmmword, /* YMMWORD memory. */ Ymmword, /* ZMMWORD memory. */ Zmmword, /* Unspecified memory size. */ Unspecified, /* Any memory size. */ Anysize, /* Vector 4 bit immediate. */ Vec_Imm4, /* Bound register. */ RegBND, /* Vector 8bit displacement */ Vec_Disp8, /* The last bitfield in i386_operand_type. */ OTMax }; #define OTNumOfUints \ (OTMax / sizeof (unsigned int) / CHAR_BIT + 1) #define OTNumOfBits \ (OTNumOfUints * sizeof (unsigned int) * CHAR_BIT) /* If you get a compiler error for zero width of the unused field, comment it out. */ #define OTUnused (OTMax + 1) typedef union i386_operand_type { struct { unsigned int reg8:1; unsigned int reg16:1; unsigned int reg32:1; unsigned int reg64:1; unsigned int floatreg:1; unsigned int regmmx:1; unsigned int regxmm:1; unsigned int regymm:1; unsigned int regzmm:1; unsigned int regmask:1; unsigned int control:1; unsigned int debug:1; unsigned int test:1; unsigned int sreg2:1; unsigned int sreg3:1; unsigned int imm1:1; unsigned int imm8:1; unsigned int imm8s:1; unsigned int imm16:1; unsigned int imm32:1; unsigned int imm32s:1; unsigned int imm64:1; unsigned int disp8:1; unsigned int disp16:1; unsigned int disp32:1; unsigned int disp32s:1; unsigned int disp64:1; unsigned int acc:1; unsigned int floatacc:1; unsigned int baseindex:1; unsigned int inoutportreg:1; unsigned int shiftcount:1; unsigned int jumpabsolute:1; unsigned int esseg:1; unsigned int regmem:1; unsigned int mem:1; unsigned int byte:1; unsigned int word:1; unsigned int dword:1; unsigned int fword:1; unsigned int qword:1; unsigned int tbyte:1; unsigned int xmmword:1; unsigned int ymmword:1; unsigned int zmmword:1; unsigned int unspecified:1; unsigned int anysize:1; unsigned int vec_imm4:1; unsigned int regbnd:1; unsigned int vec_disp8:1; #ifdef OTUnused unsigned int unused:(OTNumOfBits - OTUnused); #endif } bitfield; unsigned int array[OTNumOfUints]; } i386_operand_type; typedef struct insn_template { /* instruction name sans width suffix ("mov" for movl insns) */ const char *name; /* how many operands */ unsigned int operands; /* base_opcode is the fundamental opcode byte without optional prefix(es). */ unsigned int base_opcode; #define Opcode_D 0x2 /* Direction bit: set if Reg --> Regmem; unset if Regmem --> Reg. */ #define Opcode_FloatR 0x8 /* Bit to swap src/dest for float insns. */ #define Opcode_FloatD 0x400 /* Direction bit for float insns. */ /* extension_opcode is the 3 bit extension for group insns. This field is also used to store the 8-bit opcode suffix for the AMD 3DNow! instructions. If this template has no extension opcode (the usual case) use None Instructions */ unsigned int extension_opcode; #define None 0xffff /* If no extension_opcode is possible. */ /* Opcode length. */ unsigned char opcode_length; /* cpu feature flags */ i386_cpu_flags cpu_flags; /* the bits in opcode_modifier are used to generate the final opcode from the base_opcode. These bits also are used to detect alternate forms of the same instruction */ i386_opcode_modifier opcode_modifier; /* operand_types[i] describes the type of operand i. This is made by OR'ing together all of the possible type masks. (e.g. 'operand_types[i] = Reg|Imm' specifies that operand i can be either a register or an immediate operand. */ i386_operand_type operand_types[MAX_OPERANDS]; } insn_template; extern const insn_template i386_optab[]; /* these are for register name --> number & type hash lookup */ typedef struct { const char *reg_name; i386_operand_type reg_type; unsigned char reg_flags; #define RegRex 0x1 /* Extended register. */ #define RegRex64 0x2 /* Extended 8 bit register. */ #define RegVRex 0x4 /* Extended vector register. */ unsigned char reg_num; #define RegRip ((unsigned char ) ~0) #define RegEip (RegRip - 1) /* EIZ and RIZ are fake index registers. */ #define RegEiz (RegEip - 1) #define RegRiz (RegEiz - 1) /* FLAT is a fake segment register (Intel mode). */ #define RegFlat ((unsigned char) ~0) signed char dw2_regnum[2]; #define Dw2Inval (-1) } reg_entry; /* Entries in i386_regtab. */ #define REGNAM_AL 1 #define REGNAM_AX 25 #define REGNAM_EAX 41 extern const reg_entry i386_regtab[]; extern const unsigned int i386_regtab_size; aranym-1.1.0/src/disasm/i386-dis-evex.h0000664000175000017500000025526713454637621015655 0ustar joyjoy#ifdef NEED_OPCODE_TABLE static const struct dis386 evex_table[][256] = { /* EVEX_0F */ { /* 00 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 08 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 10 */ { PREFIX_TABLE (PREFIX_EVEX_0F10) }, { PREFIX_TABLE (PREFIX_EVEX_0F11) }, { PREFIX_TABLE (PREFIX_EVEX_0F12) }, { PREFIX_TABLE (PREFIX_EVEX_0F13) }, { PREFIX_TABLE (PREFIX_EVEX_0F14) }, { PREFIX_TABLE (PREFIX_EVEX_0F15) }, { PREFIX_TABLE (PREFIX_EVEX_0F16) }, { PREFIX_TABLE (PREFIX_EVEX_0F17) }, /* 18 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 20 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 28 */ { PREFIX_TABLE (PREFIX_EVEX_0F28) }, { PREFIX_TABLE (PREFIX_EVEX_0F29) }, { PREFIX_TABLE (PREFIX_EVEX_0F2A) }, { PREFIX_TABLE (PREFIX_EVEX_0F2B) }, { PREFIX_TABLE (PREFIX_EVEX_0F2C) }, { PREFIX_TABLE (PREFIX_EVEX_0F2D) }, { PREFIX_TABLE (PREFIX_EVEX_0F2E) }, { PREFIX_TABLE (PREFIX_EVEX_0F2F) }, /* 30 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 38 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 40 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 48 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 50 */ { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F51) }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F54) }, { PREFIX_TABLE (PREFIX_EVEX_0F55) }, { PREFIX_TABLE (PREFIX_EVEX_0F56) }, { PREFIX_TABLE (PREFIX_EVEX_0F57) }, /* 58 */ { PREFIX_TABLE (PREFIX_EVEX_0F58) }, { PREFIX_TABLE (PREFIX_EVEX_0F59) }, { PREFIX_TABLE (PREFIX_EVEX_0F5A) }, { PREFIX_TABLE (PREFIX_EVEX_0F5B) }, { PREFIX_TABLE (PREFIX_EVEX_0F5C) }, { PREFIX_TABLE (PREFIX_EVEX_0F5D) }, { PREFIX_TABLE (PREFIX_EVEX_0F5E) }, { PREFIX_TABLE (PREFIX_EVEX_0F5F) }, /* 60 */ { PREFIX_TABLE (PREFIX_EVEX_0F60) }, { PREFIX_TABLE (PREFIX_EVEX_0F61) }, { PREFIX_TABLE (PREFIX_EVEX_0F62) }, { PREFIX_TABLE (PREFIX_EVEX_0F63) }, { PREFIX_TABLE (PREFIX_EVEX_0F64) }, { PREFIX_TABLE (PREFIX_EVEX_0F65) }, { PREFIX_TABLE (PREFIX_EVEX_0F66) }, { PREFIX_TABLE (PREFIX_EVEX_0F67) }, /* 68 */ { PREFIX_TABLE (PREFIX_EVEX_0F68) }, { PREFIX_TABLE (PREFIX_EVEX_0F69) }, { PREFIX_TABLE (PREFIX_EVEX_0F6A) }, { PREFIX_TABLE (PREFIX_EVEX_0F6B) }, { PREFIX_TABLE (PREFIX_EVEX_0F6C) }, { PREFIX_TABLE (PREFIX_EVEX_0F6D) }, { PREFIX_TABLE (PREFIX_EVEX_0F6E) }, { PREFIX_TABLE (PREFIX_EVEX_0F6F) }, /* 70 */ { PREFIX_TABLE (PREFIX_EVEX_0F70) }, { REG_TABLE (REG_EVEX_0F71) }, { REG_TABLE (REG_EVEX_0F72) }, { REG_TABLE (REG_EVEX_0F73) }, { PREFIX_TABLE (PREFIX_EVEX_0F74) }, { PREFIX_TABLE (PREFIX_EVEX_0F75) }, { PREFIX_TABLE (PREFIX_EVEX_0F76) }, { Bad_Opcode }, /* 78 */ { PREFIX_TABLE (PREFIX_EVEX_0F78) }, { PREFIX_TABLE (PREFIX_EVEX_0F79) }, { PREFIX_TABLE (PREFIX_EVEX_0F7A) }, { PREFIX_TABLE (PREFIX_EVEX_0F7B) }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F7E) }, { PREFIX_TABLE (PREFIX_EVEX_0F7F) }, /* 80 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 88 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 90 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 98 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* A0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* A8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* B0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* B8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* C0 */ { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0FC2) }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0FC4) }, { PREFIX_TABLE (PREFIX_EVEX_0FC5) }, { PREFIX_TABLE (PREFIX_EVEX_0FC6) }, { Bad_Opcode }, /* C8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* D0 */ { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0FD1) }, { PREFIX_TABLE (PREFIX_EVEX_0FD2) }, { PREFIX_TABLE (PREFIX_EVEX_0FD3) }, { PREFIX_TABLE (PREFIX_EVEX_0FD4) }, { PREFIX_TABLE (PREFIX_EVEX_0FD5) }, { PREFIX_TABLE (PREFIX_EVEX_0FD6) }, { Bad_Opcode }, /* D8 */ { PREFIX_TABLE (PREFIX_EVEX_0FD8) }, { PREFIX_TABLE (PREFIX_EVEX_0FD9) }, { PREFIX_TABLE (PREFIX_EVEX_0FDA) }, { PREFIX_TABLE (PREFIX_EVEX_0FDB) }, { PREFIX_TABLE (PREFIX_EVEX_0FDC) }, { PREFIX_TABLE (PREFIX_EVEX_0FDD) }, { PREFIX_TABLE (PREFIX_EVEX_0FDE) }, { PREFIX_TABLE (PREFIX_EVEX_0FDF) }, /* E0 */ { PREFIX_TABLE (PREFIX_EVEX_0FE0) }, { PREFIX_TABLE (PREFIX_EVEX_0FE1) }, { PREFIX_TABLE (PREFIX_EVEX_0FE2) }, { PREFIX_TABLE (PREFIX_EVEX_0FE3) }, { PREFIX_TABLE (PREFIX_EVEX_0FE4) }, { PREFIX_TABLE (PREFIX_EVEX_0FE5) }, { PREFIX_TABLE (PREFIX_EVEX_0FE6) }, { PREFIX_TABLE (PREFIX_EVEX_0FE7) }, /* E8 */ { PREFIX_TABLE (PREFIX_EVEX_0FE8) }, { PREFIX_TABLE (PREFIX_EVEX_0FE9) }, { PREFIX_TABLE (PREFIX_EVEX_0FEA) }, { PREFIX_TABLE (PREFIX_EVEX_0FEB) }, { PREFIX_TABLE (PREFIX_EVEX_0FEC) }, { PREFIX_TABLE (PREFIX_EVEX_0FED) }, { PREFIX_TABLE (PREFIX_EVEX_0FEE) }, { PREFIX_TABLE (PREFIX_EVEX_0FEF) }, /* F0 */ { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0FF1) }, { PREFIX_TABLE (PREFIX_EVEX_0FF2) }, { PREFIX_TABLE (PREFIX_EVEX_0FF3) }, { PREFIX_TABLE (PREFIX_EVEX_0FF4) }, { PREFIX_TABLE (PREFIX_EVEX_0FF5) }, { PREFIX_TABLE (PREFIX_EVEX_0FF6) }, { Bad_Opcode }, /* F8 */ { PREFIX_TABLE (PREFIX_EVEX_0FF8) }, { PREFIX_TABLE (PREFIX_EVEX_0FF9) }, { PREFIX_TABLE (PREFIX_EVEX_0FFA) }, { PREFIX_TABLE (PREFIX_EVEX_0FFB) }, { PREFIX_TABLE (PREFIX_EVEX_0FFC) }, { PREFIX_TABLE (PREFIX_EVEX_0FFD) }, { PREFIX_TABLE (PREFIX_EVEX_0FFE) }, { Bad_Opcode }, }, /* EVEX_0F38 */ { /* 00 */ { PREFIX_TABLE (PREFIX_EVEX_0F3800) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3804) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 08 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F380B) }, { PREFIX_TABLE (PREFIX_EVEX_0F380C) }, { PREFIX_TABLE (PREFIX_EVEX_0F380D) }, { Bad_Opcode }, { Bad_Opcode }, /* 10 */ { PREFIX_TABLE (PREFIX_EVEX_0F3810) }, { PREFIX_TABLE (PREFIX_EVEX_0F3811) }, { PREFIX_TABLE (PREFIX_EVEX_0F3812) }, { PREFIX_TABLE (PREFIX_EVEX_0F3813) }, { PREFIX_TABLE (PREFIX_EVEX_0F3814) }, { PREFIX_TABLE (PREFIX_EVEX_0F3815) }, { PREFIX_TABLE (PREFIX_EVEX_0F3816) }, { Bad_Opcode }, /* 18 */ { PREFIX_TABLE (PREFIX_EVEX_0F3818) }, { PREFIX_TABLE (PREFIX_EVEX_0F3819) }, { PREFIX_TABLE (PREFIX_EVEX_0F381A) }, { PREFIX_TABLE (PREFIX_EVEX_0F381B) }, { PREFIX_TABLE (PREFIX_EVEX_0F381C) }, { PREFIX_TABLE (PREFIX_EVEX_0F381D) }, { PREFIX_TABLE (PREFIX_EVEX_0F381E) }, { PREFIX_TABLE (PREFIX_EVEX_0F381F) }, /* 20 */ { PREFIX_TABLE (PREFIX_EVEX_0F3820) }, { PREFIX_TABLE (PREFIX_EVEX_0F3821) }, { PREFIX_TABLE (PREFIX_EVEX_0F3822) }, { PREFIX_TABLE (PREFIX_EVEX_0F3823) }, { PREFIX_TABLE (PREFIX_EVEX_0F3824) }, { PREFIX_TABLE (PREFIX_EVEX_0F3825) }, { PREFIX_TABLE (PREFIX_EVEX_0F3826) }, { PREFIX_TABLE (PREFIX_EVEX_0F3827) }, /* 28 */ { PREFIX_TABLE (PREFIX_EVEX_0F3828) }, { PREFIX_TABLE (PREFIX_EVEX_0F3829) }, { PREFIX_TABLE (PREFIX_EVEX_0F382A) }, { PREFIX_TABLE (PREFIX_EVEX_0F382B) }, { PREFIX_TABLE (PREFIX_EVEX_0F382C) }, { PREFIX_TABLE (PREFIX_EVEX_0F382D) }, { Bad_Opcode }, { Bad_Opcode }, /* 30 */ { PREFIX_TABLE (PREFIX_EVEX_0F3830) }, { PREFIX_TABLE (PREFIX_EVEX_0F3831) }, { PREFIX_TABLE (PREFIX_EVEX_0F3832) }, { PREFIX_TABLE (PREFIX_EVEX_0F3833) }, { PREFIX_TABLE (PREFIX_EVEX_0F3834) }, { PREFIX_TABLE (PREFIX_EVEX_0F3835) }, { PREFIX_TABLE (PREFIX_EVEX_0F3836) }, { PREFIX_TABLE (PREFIX_EVEX_0F3837) }, /* 38 */ { PREFIX_TABLE (PREFIX_EVEX_0F3838) }, { PREFIX_TABLE (PREFIX_EVEX_0F3839) }, { PREFIX_TABLE (PREFIX_EVEX_0F383A) }, { PREFIX_TABLE (PREFIX_EVEX_0F383B) }, { PREFIX_TABLE (PREFIX_EVEX_0F383C) }, { PREFIX_TABLE (PREFIX_EVEX_0F383D) }, { PREFIX_TABLE (PREFIX_EVEX_0F383E) }, { PREFIX_TABLE (PREFIX_EVEX_0F383F) }, /* 40 */ { PREFIX_TABLE (PREFIX_EVEX_0F3840) }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3842) }, { PREFIX_TABLE (PREFIX_EVEX_0F3843) }, { PREFIX_TABLE (PREFIX_EVEX_0F3844) }, { PREFIX_TABLE (PREFIX_EVEX_0F3845) }, { PREFIX_TABLE (PREFIX_EVEX_0F3846) }, { PREFIX_TABLE (PREFIX_EVEX_0F3847) }, /* 48 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F384C) }, { PREFIX_TABLE (PREFIX_EVEX_0F384D) }, { PREFIX_TABLE (PREFIX_EVEX_0F384E) }, { PREFIX_TABLE (PREFIX_EVEX_0F384F) }, /* 50 */ { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3852) }, { PREFIX_TABLE (PREFIX_EVEX_0F3853) }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3855) }, { Bad_Opcode }, { Bad_Opcode }, /* 58 */ { PREFIX_TABLE (PREFIX_EVEX_0F3858) }, { PREFIX_TABLE (PREFIX_EVEX_0F3859) }, { PREFIX_TABLE (PREFIX_EVEX_0F385A) }, { PREFIX_TABLE (PREFIX_EVEX_0F385B) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 60 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3864) }, { PREFIX_TABLE (PREFIX_EVEX_0F3865) }, { PREFIX_TABLE (PREFIX_EVEX_0F3866) }, { Bad_Opcode }, /* 68 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 70 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3875) }, { PREFIX_TABLE (PREFIX_EVEX_0F3876) }, { PREFIX_TABLE (PREFIX_EVEX_0F3877) }, /* 78 */ { PREFIX_TABLE (PREFIX_EVEX_0F3878) }, { PREFIX_TABLE (PREFIX_EVEX_0F3879) }, { PREFIX_TABLE (PREFIX_EVEX_0F387A) }, { PREFIX_TABLE (PREFIX_EVEX_0F387B) }, { PREFIX_TABLE (PREFIX_EVEX_0F387C) }, { PREFIX_TABLE (PREFIX_EVEX_0F387D) }, { PREFIX_TABLE (PREFIX_EVEX_0F387E) }, { PREFIX_TABLE (PREFIX_EVEX_0F387F) }, /* 80 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3883) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 88 */ { PREFIX_TABLE (PREFIX_EVEX_0F3888) }, { PREFIX_TABLE (PREFIX_EVEX_0F3889) }, { PREFIX_TABLE (PREFIX_EVEX_0F388A) }, { PREFIX_TABLE (PREFIX_EVEX_0F388B) }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F388D) }, { Bad_Opcode }, { Bad_Opcode }, /* 90 */ { PREFIX_TABLE (PREFIX_EVEX_0F3890) }, { PREFIX_TABLE (PREFIX_EVEX_0F3891) }, { PREFIX_TABLE (PREFIX_EVEX_0F3892) }, { PREFIX_TABLE (PREFIX_EVEX_0F3893) }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3896) }, { PREFIX_TABLE (PREFIX_EVEX_0F3897) }, /* 98 */ { PREFIX_TABLE (PREFIX_EVEX_0F3898) }, { PREFIX_TABLE (PREFIX_EVEX_0F3899) }, { PREFIX_TABLE (PREFIX_EVEX_0F389A) }, { PREFIX_TABLE (PREFIX_EVEX_0F389B) }, { PREFIX_TABLE (PREFIX_EVEX_0F389C) }, { PREFIX_TABLE (PREFIX_EVEX_0F389D) }, { PREFIX_TABLE (PREFIX_EVEX_0F389E) }, { PREFIX_TABLE (PREFIX_EVEX_0F389F) }, /* A0 */ { PREFIX_TABLE (PREFIX_EVEX_0F38A0) }, { PREFIX_TABLE (PREFIX_EVEX_0F38A1) }, { PREFIX_TABLE (PREFIX_EVEX_0F38A2) }, { PREFIX_TABLE (PREFIX_EVEX_0F38A3) }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F38A6) }, { PREFIX_TABLE (PREFIX_EVEX_0F38A7) }, /* A8 */ { PREFIX_TABLE (PREFIX_EVEX_0F38A8) }, { PREFIX_TABLE (PREFIX_EVEX_0F38A9) }, { PREFIX_TABLE (PREFIX_EVEX_0F38AA) }, { PREFIX_TABLE (PREFIX_EVEX_0F38AB) }, { PREFIX_TABLE (PREFIX_EVEX_0F38AC) }, { PREFIX_TABLE (PREFIX_EVEX_0F38AD) }, { PREFIX_TABLE (PREFIX_EVEX_0F38AE) }, { PREFIX_TABLE (PREFIX_EVEX_0F38AF) }, /* B0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F38B4) }, { PREFIX_TABLE (PREFIX_EVEX_0F38B5) }, { PREFIX_TABLE (PREFIX_EVEX_0F38B6) }, { PREFIX_TABLE (PREFIX_EVEX_0F38B7) }, /* B8 */ { PREFIX_TABLE (PREFIX_EVEX_0F38B8) }, { PREFIX_TABLE (PREFIX_EVEX_0F38B9) }, { PREFIX_TABLE (PREFIX_EVEX_0F38BA) }, { PREFIX_TABLE (PREFIX_EVEX_0F38BB) }, { PREFIX_TABLE (PREFIX_EVEX_0F38BC) }, { PREFIX_TABLE (PREFIX_EVEX_0F38BD) }, { PREFIX_TABLE (PREFIX_EVEX_0F38BE) }, { PREFIX_TABLE (PREFIX_EVEX_0F38BF) }, /* C0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F38C4) }, { Bad_Opcode }, { REG_TABLE (REG_EVEX_0F38C6) }, { REG_TABLE (REG_EVEX_0F38C7) }, /* C8 */ { PREFIX_TABLE (PREFIX_EVEX_0F38C8) }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F38CA) }, { PREFIX_TABLE (PREFIX_EVEX_0F38CB) }, { PREFIX_TABLE (PREFIX_EVEX_0F38CC) }, { PREFIX_TABLE (PREFIX_EVEX_0F38CD) }, { Bad_Opcode }, { Bad_Opcode }, /* D0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* D8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* E0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* E8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* F0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* F8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, }, /* EVEX_0F3A */ { /* 00 */ { PREFIX_TABLE (PREFIX_EVEX_0F3A00) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A01) }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3A03) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A04) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A05) }, { Bad_Opcode }, { Bad_Opcode }, /* 08 */ { PREFIX_TABLE (PREFIX_EVEX_0F3A08) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A09) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A0A) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A0B) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3A0F) }, /* 10 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3A14) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A15) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A16) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A17) }, /* 18 */ { PREFIX_TABLE (PREFIX_EVEX_0F3A18) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A19) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A1A) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A1B) }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3A1D) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A1E) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A1F) }, /* 20 */ { PREFIX_TABLE (PREFIX_EVEX_0F3A20) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A21) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A22) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A23) }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3A25) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A26) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A27) }, /* 28 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 30 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 38 */ { PREFIX_TABLE (PREFIX_EVEX_0F3A38) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A39) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A3A) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A3B) }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3A3E) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A3F) }, /* 40 */ { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3A42) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A43) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 48 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 50 */ { PREFIX_TABLE (PREFIX_EVEX_0F3A50) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A51) }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3A54) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A55) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A56) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A57) }, /* 58 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 60 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F3A66) }, { PREFIX_TABLE (PREFIX_EVEX_0F3A67) }, /* 68 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 70 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 78 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 80 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 88 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 90 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 98 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* A0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* A8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* B0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* B8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* C0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* C8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* D0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* D8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* E0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* E8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* F0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* F8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, }, }; #endif /* NEED_OPCODE_TABLE */ #ifdef NEED_REG_TABLE /* REG_EVEX_0F71 */ { { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F71_REG_2) }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F71_REG_4) }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F71_REG_6) }, }, /* REG_EVEX_0F72 */ { { PREFIX_TABLE (PREFIX_EVEX_0F72_REG_0) }, { PREFIX_TABLE (PREFIX_EVEX_0F72_REG_1) }, { PREFIX_TABLE (PREFIX_EVEX_0F72_REG_2) }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F72_REG_4) }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F72_REG_6) }, }, /* REG_EVEX_0F73 */ { { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F73_REG_2) }, { PREFIX_TABLE (PREFIX_EVEX_0F73_REG_3) }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0F73_REG_6) }, { PREFIX_TABLE (PREFIX_EVEX_0F73_REG_7) }, }, /* REG_EVEX_0F38C6 */ { { Bad_Opcode }, { MOD_TABLE (MOD_EVEX_0F38C6_REG_1) }, { MOD_TABLE (MOD_EVEX_0F38C6_REG_2) }, { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE (MOD_EVEX_0F38C6_REG_5) }, { MOD_TABLE (MOD_EVEX_0F38C6_REG_6) }, }, /* REG_EVEX_0F38C7 */ { { Bad_Opcode }, { MOD_TABLE (MOD_EVEX_0F38C7_REG_1) }, { MOD_TABLE (MOD_EVEX_0F38C7_REG_2) }, { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE (MOD_EVEX_0F38C7_REG_5) }, { MOD_TABLE (MOD_EVEX_0F38C7_REG_6) }, }, #endif /* NEED_REG_TABLE */ #ifdef NEED_PREFIX_TABLE /* PREFIX_EVEX_0F10 */ { { VEX_W_TABLE (EVEX_W_0F10_P_0) }, { MOD_TABLE (MOD_EVEX_0F10_PREFIX_1) }, { VEX_W_TABLE (EVEX_W_0F10_P_2) }, { MOD_TABLE (MOD_EVEX_0F10_PREFIX_3) }, }, /* PREFIX_EVEX_0F11 */ { { VEX_W_TABLE (EVEX_W_0F11_P_0) }, { MOD_TABLE (MOD_EVEX_0F11_PREFIX_1) }, { VEX_W_TABLE (EVEX_W_0F11_P_2) }, { MOD_TABLE (MOD_EVEX_0F11_PREFIX_3) }, }, /* PREFIX_EVEX_0F12 */ { { MOD_TABLE (MOD_EVEX_0F12_PREFIX_0) }, { VEX_W_TABLE (EVEX_W_0F12_P_1) }, { VEX_W_TABLE (EVEX_W_0F12_P_2) }, { VEX_W_TABLE (EVEX_W_0F12_P_3) }, }, /* PREFIX_EVEX_0F13 */ { { VEX_W_TABLE (EVEX_W_0F13_P_0) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F13_P_2) }, }, /* PREFIX_EVEX_0F14 */ { { VEX_W_TABLE (EVEX_W_0F14_P_0) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F14_P_2) }, }, /* PREFIX_EVEX_0F15 */ { { VEX_W_TABLE (EVEX_W_0F15_P_0) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F15_P_2) }, }, /* PREFIX_EVEX_0F16 */ { { MOD_TABLE (MOD_EVEX_0F16_PREFIX_0) }, { VEX_W_TABLE (EVEX_W_0F16_P_1) }, { VEX_W_TABLE (EVEX_W_0F16_P_2) }, }, /* PREFIX_EVEX_0F17 */ { { VEX_W_TABLE (EVEX_W_0F17_P_0) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F17_P_2) }, }, /* PREFIX_EVEX_0F28 */ { { VEX_W_TABLE (EVEX_W_0F28_P_0) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F28_P_2) }, }, /* PREFIX_EVEX_0F29 */ { { VEX_W_TABLE (EVEX_W_0F29_P_0) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F29_P_2) }, }, /* PREFIX_EVEX_0F2A */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F2A_P_1) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F2A_P_3) }, }, /* PREFIX_EVEX_0F2B */ { { VEX_W_TABLE (EVEX_W_0F2B_P_0) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F2B_P_2) }, }, /* PREFIX_EVEX_0F2C */ { { Bad_Opcode }, { "vcvttss2si", { Gdq, EXxmm_md, EXxEVexS }, 0 }, { Bad_Opcode }, { "vcvttsd2si", { Gdq, EXxmm_mq, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_0F2D */ { { Bad_Opcode }, { "vcvtss2si", { Gdq, EXxmm_md, EXxEVexR }, 0 }, { Bad_Opcode }, { "vcvtsd2si", { Gdq, EXxmm_mq, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F2E */ { { VEX_W_TABLE (EVEX_W_0F2E_P_0) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F2E_P_2) }, }, /* PREFIX_EVEX_0F2F */ { { VEX_W_TABLE (EVEX_W_0F2F_P_0) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F2F_P_2) }, }, /* PREFIX_EVEX_0F51 */ { { VEX_W_TABLE (EVEX_W_0F51_P_0) }, { VEX_W_TABLE (EVEX_W_0F51_P_1) }, { VEX_W_TABLE (EVEX_W_0F51_P_2) }, { VEX_W_TABLE (EVEX_W_0F51_P_3) }, }, /* PREFIX_EVEX_0F54 */ { { VEX_W_TABLE (EVEX_W_0F54_P_0) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F54_P_2) }, }, /* PREFIX_EVEX_0F55 */ { { VEX_W_TABLE (EVEX_W_0F55_P_0) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F55_P_2) }, }, /* PREFIX_EVEX_0F56 */ { { VEX_W_TABLE (EVEX_W_0F56_P_0) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F56_P_2) }, }, /* PREFIX_EVEX_0F57 */ { { VEX_W_TABLE (EVEX_W_0F57_P_0) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F57_P_2) }, }, /* PREFIX_EVEX_0F58 */ { { VEX_W_TABLE (EVEX_W_0F58_P_0) }, { VEX_W_TABLE (EVEX_W_0F58_P_1) }, { VEX_W_TABLE (EVEX_W_0F58_P_2) }, { VEX_W_TABLE (EVEX_W_0F58_P_3) }, }, /* PREFIX_EVEX_0F59 */ { { VEX_W_TABLE (EVEX_W_0F59_P_0) }, { VEX_W_TABLE (EVEX_W_0F59_P_1) }, { VEX_W_TABLE (EVEX_W_0F59_P_2) }, { VEX_W_TABLE (EVEX_W_0F59_P_3) }, }, /* PREFIX_EVEX_0F5A */ { { VEX_W_TABLE (EVEX_W_0F5A_P_0) }, { VEX_W_TABLE (EVEX_W_0F5A_P_1) }, { VEX_W_TABLE (EVEX_W_0F5A_P_2) }, { VEX_W_TABLE (EVEX_W_0F5A_P_3) }, }, /* PREFIX_EVEX_0F5B */ { { VEX_W_TABLE (EVEX_W_0F5B_P_0) }, { VEX_W_TABLE (EVEX_W_0F5B_P_1) }, { VEX_W_TABLE (EVEX_W_0F5B_P_2) }, }, /* PREFIX_EVEX_0F5C */ { { VEX_W_TABLE (EVEX_W_0F5C_P_0) }, { VEX_W_TABLE (EVEX_W_0F5C_P_1) }, { VEX_W_TABLE (EVEX_W_0F5C_P_2) }, { VEX_W_TABLE (EVEX_W_0F5C_P_3) }, }, /* PREFIX_EVEX_0F5D */ { { VEX_W_TABLE (EVEX_W_0F5D_P_0) }, { VEX_W_TABLE (EVEX_W_0F5D_P_1) }, { VEX_W_TABLE (EVEX_W_0F5D_P_2) }, { VEX_W_TABLE (EVEX_W_0F5D_P_3) }, }, /* PREFIX_EVEX_0F5E */ { { VEX_W_TABLE (EVEX_W_0F5E_P_0) }, { VEX_W_TABLE (EVEX_W_0F5E_P_1) }, { VEX_W_TABLE (EVEX_W_0F5E_P_2) }, { VEX_W_TABLE (EVEX_W_0F5E_P_3) }, }, /* PREFIX_EVEX_0F5F */ { { VEX_W_TABLE (EVEX_W_0F5F_P_0) }, { VEX_W_TABLE (EVEX_W_0F5F_P_1) }, { VEX_W_TABLE (EVEX_W_0F5F_P_2) }, { VEX_W_TABLE (EVEX_W_0F5F_P_3) }, }, /* PREFIX_EVEX_0F60 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpunpcklbw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F61 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpunpcklwd", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F62 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F62_P_2) }, }, /* PREFIX_EVEX_0F63 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpacksswb", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F64 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpcmpgtb", { XMask, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F65 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpcmpgtw", { XMask, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F66 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F66_P_2) }, }, /* PREFIX_EVEX_0F67 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpackuswb", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F68 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpunpckhbw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F69 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpunpckhwd", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F6A */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F6A_P_2) }, }, /* PREFIX_EVEX_0F6B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F6B_P_2) }, }, /* PREFIX_EVEX_0F6C */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F6C_P_2) }, }, /* PREFIX_EVEX_0F6D */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F6D_P_2) }, }, /* PREFIX_EVEX_0F6E */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F6E_P_2) }, }, /* PREFIX_EVEX_0F6F */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F6F_P_1) }, { VEX_W_TABLE (EVEX_W_0F6F_P_2) }, { VEX_W_TABLE (EVEX_W_0F6F_P_3) }, }, /* PREFIX_EVEX_0F70 */ { { Bad_Opcode }, { "vpshufhw", { XM, EXx, Ib }, 0 }, { VEX_W_TABLE (EVEX_W_0F70_P_2) }, { "vpshuflw", { XM, EXx, Ib }, 0 }, }, /* PREFIX_EVEX_0F71_REG_2 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsrlw", { Vex, EXx, Ib }, 0 }, }, /* PREFIX_EVEX_0F71_REG_4 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsraw", { Vex, EXx, Ib }, 0 }, }, /* PREFIX_EVEX_0F71_REG_6 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsllw", { Vex, EXx, Ib }, 0 }, }, /* PREFIX_EVEX_0F72_REG_0 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpror%LW", { Vex, EXx, Ib }, 0 }, }, /* PREFIX_EVEX_0F72_REG_1 */ { { Bad_Opcode }, { Bad_Opcode }, { "vprol%LW", { Vex, EXx, Ib }, 0 }, }, /* PREFIX_EVEX_0F72_REG_2 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F72_R_2_P_2) }, }, /* PREFIX_EVEX_0F72_REG_4 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsra%LW", { Vex, EXx, Ib }, 0 }, }, /* PREFIX_EVEX_0F72_REG_6 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F72_R_6_P_2) }, }, /* PREFIX_EVEX_0F73_REG_2 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F73_R_2_P_2) }, }, /* PREFIX_EVEX_0F73_REG_3 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsrldq", { Vex, EXx, Ib }, 0 }, }, /* PREFIX_EVEX_0F73_REG_6 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F73_R_6_P_2) }, }, /* PREFIX_EVEX_0F73_REG_7 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpslldq", { Vex, EXx, Ib }, 0 }, }, /* PREFIX_EVEX_0F74 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpcmpeqb", { XMask, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F75 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpcmpeqw", { XMask, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F76 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F76_P_2) }, }, /* PREFIX_EVEX_0F78 */ { { VEX_W_TABLE (EVEX_W_0F78_P_0) }, { "vcvttss2usi", { Gdq, EXxmm_md, EXxEVexS }, 0 }, { VEX_W_TABLE (EVEX_W_0F78_P_2) }, { "vcvttsd2usi", { Gdq, EXxmm_mq, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_0F79 */ { { VEX_W_TABLE (EVEX_W_0F79_P_0) }, { "vcvtss2usi", { Gdq, EXxmm_md, EXxEVexR }, 0 }, { VEX_W_TABLE (EVEX_W_0F79_P_2) }, { "vcvtsd2usi", { Gdq, EXxmm_mq, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F7A */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F7A_P_1) }, { VEX_W_TABLE (EVEX_W_0F7A_P_2) }, { VEX_W_TABLE (EVEX_W_0F7A_P_3) }, }, /* PREFIX_EVEX_0F7B */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F7B_P_1) }, { VEX_W_TABLE (EVEX_W_0F7B_P_2) }, { VEX_W_TABLE (EVEX_W_0F7B_P_3) }, }, /* PREFIX_EVEX_0F7E */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F7E_P_1) }, { VEX_W_TABLE (EVEX_W_0F7E_P_2) }, }, /* PREFIX_EVEX_0F7F */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F7F_P_1) }, { VEX_W_TABLE (EVEX_W_0F7F_P_2) }, { VEX_W_TABLE (EVEX_W_0F7F_P_3) }, }, /* PREFIX_EVEX_0FC2 */ { { VEX_W_TABLE (EVEX_W_0FC2_P_0) }, { VEX_W_TABLE (EVEX_W_0FC2_P_1) }, { VEX_W_TABLE (EVEX_W_0FC2_P_2) }, { VEX_W_TABLE (EVEX_W_0FC2_P_3) }, }, /* PREFIX_EVEX_0FC4 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpinsrw", { XM, Vex128, Edw, Ib }, 0 }, }, /* PREFIX_EVEX_0FC5 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpextrw", { Gdq, XS, Ib }, 0 }, }, /* PREFIX_EVEX_0FC6 */ { { VEX_W_TABLE (EVEX_W_0FC6_P_0) }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FC6_P_2) }, }, /* PREFIX_EVEX_0FD1 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsrlw", { XM, Vex, EXxmm }, 0 }, }, /* PREFIX_EVEX_0FD2 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FD2_P_2) }, }, /* PREFIX_EVEX_0FD3 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FD3_P_2) }, }, /* PREFIX_EVEX_0FD4 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FD4_P_2) }, }, /* PREFIX_EVEX_0FD5 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmullw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FD6 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FD6_P_2) }, }, /* PREFIX_EVEX_0FD8 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsubusb", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FD9 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsubusw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FDA */ { { Bad_Opcode }, { Bad_Opcode }, { "vpminub", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FDB */ { { Bad_Opcode }, { Bad_Opcode }, { "vpand%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FDC */ { { Bad_Opcode }, { Bad_Opcode }, { "vpaddusb", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FDD */ { { Bad_Opcode }, { Bad_Opcode }, { "vpaddusw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FDE */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmaxub", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FDF */ { { Bad_Opcode }, { Bad_Opcode }, { "vpandn%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FE0 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpavgb", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FE1 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsraw", { XM, Vex, EXxmm }, 0 }, }, /* PREFIX_EVEX_0FE2 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsra%LW", { XM, Vex, EXxmm }, 0 }, }, /* PREFIX_EVEX_0FE3 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpavgw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FE4 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmulhuw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FE5 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmulhw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FE6 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FE6_P_1) }, { VEX_W_TABLE (EVEX_W_0FE6_P_2) }, { VEX_W_TABLE (EVEX_W_0FE6_P_3) }, }, /* PREFIX_EVEX_0FE7 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FE7_P_2) }, }, /* PREFIX_EVEX_0FE8 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsubsb", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FE9 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsubsw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FEA */ { { Bad_Opcode }, { Bad_Opcode }, { "vpminsw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FEB */ { { Bad_Opcode }, { Bad_Opcode }, { "vpor%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FEC */ { { Bad_Opcode }, { Bad_Opcode }, { "vpaddsb", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FED */ { { Bad_Opcode }, { Bad_Opcode }, { "vpaddsw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FEE */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmaxsw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FEF */ { { Bad_Opcode }, { Bad_Opcode }, { "vpxor%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FF1 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsllw", { XM, Vex, EXxmm }, 0 }, }, /* PREFIX_EVEX_0FF2 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FF2_P_2) }, }, /* PREFIX_EVEX_0FF3 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FF3_P_2) }, }, /* PREFIX_EVEX_0FF4 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FF4_P_2) }, }, /* PREFIX_EVEX_0FF5 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmaddwd", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FF6 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsadbw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FF8 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsubb", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FF9 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsubw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FFA */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FFA_P_2) }, }, /* PREFIX_EVEX_0FFB */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FFB_P_2) }, }, /* PREFIX_EVEX_0FFC */ { { Bad_Opcode }, { Bad_Opcode }, { "vpaddb", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FFD */ { { Bad_Opcode }, { Bad_Opcode }, { "vpaddw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0FFE */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0FFE_P_2) }, }, /* PREFIX_EVEX_0F3800 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpshufb", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3804 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmaddubsw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F380B */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmulhrsw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F380C */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F380C_P_2) }, }, /* PREFIX_EVEX_0F380D */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F380D_P_2) }, }, /* PREFIX_EVEX_0F3810 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3810_P_1) }, { VEX_W_TABLE (EVEX_W_0F3810_P_2) }, }, /* PREFIX_EVEX_0F3811 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3811_P_1) }, { VEX_W_TABLE (EVEX_W_0F3811_P_2) }, }, /* PREFIX_EVEX_0F3812 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3812_P_1) }, { VEX_W_TABLE (EVEX_W_0F3812_P_2) }, }, /* PREFIX_EVEX_0F3813 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3813_P_1) }, { VEX_W_TABLE (EVEX_W_0F3813_P_2) }, }, /* PREFIX_EVEX_0F3814 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3814_P_1) }, { "vprorv%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3815 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3815_P_1) }, { "vprolv%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3816 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpermp%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3818 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3818_P_2) }, }, /* PREFIX_EVEX_0F3819 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3819_P_2) }, }, /* PREFIX_EVEX_0F381A */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F381A_P_2) }, }, /* PREFIX_EVEX_0F381B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F381B_P_2) }, }, /* PREFIX_EVEX_0F381C */ { { Bad_Opcode }, { Bad_Opcode }, { "vpabsb", { XM, EXx }, 0 }, }, /* PREFIX_EVEX_0F381D */ { { Bad_Opcode }, { Bad_Opcode }, { "vpabsw", { XM, EXx }, 0 }, }, /* PREFIX_EVEX_0F381E */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F381E_P_2) }, }, /* PREFIX_EVEX_0F381F */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F381F_P_2) }, }, /* PREFIX_EVEX_0F3820 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3820_P_1) }, { "vpmovsxbw", { XM, EXxmmq }, 0 }, }, /* PREFIX_EVEX_0F3821 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3821_P_1) }, { "vpmovsxbd", { XM, EXxmmqd }, 0 }, }, /* PREFIX_EVEX_0F3822 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3822_P_1) }, { "vpmovsxbq", { XM, EXxmmdw }, 0 }, }, /* PREFIX_EVEX_0F3823 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3823_P_1) }, { "vpmovsxwd", { XM, EXxmmq }, 0 }, }, /* PREFIX_EVEX_0F3824 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3824_P_1) }, { "vpmovsxwq", { XM, EXxmmqd }, 0 }, }, /* PREFIX_EVEX_0F3825 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3825_P_1) }, { VEX_W_TABLE (EVEX_W_0F3825_P_2) }, }, /* PREFIX_EVEX_0F3826 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3826_P_1) }, { VEX_W_TABLE (EVEX_W_0F3826_P_2) }, }, /* PREFIX_EVEX_0F3827 */ { { Bad_Opcode }, { "vptestnm%LW", { XMask, Vex, EXx }, 0 }, { "vptestm%LW", { XMask, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3828 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3828_P_1) }, { VEX_W_TABLE (EVEX_W_0F3828_P_2) }, }, /* PREFIX_EVEX_0F3829 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3829_P_1) }, { VEX_W_TABLE (EVEX_W_0F3829_P_2) }, }, /* PREFIX_EVEX_0F382A */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F382A_P_1) }, { VEX_W_TABLE (EVEX_W_0F382A_P_2) }, }, /* PREFIX_EVEX_0F382B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F382B_P_2) }, }, /* PREFIX_EVEX_0F382C */ { { Bad_Opcode }, { Bad_Opcode }, { "vscalefp%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F382D */ { { Bad_Opcode }, { Bad_Opcode }, { "vscalefs%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F3830 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3830_P_1) }, { "vpmovzxbw", { XM, EXxmmq }, 0 }, }, /* PREFIX_EVEX_0F3831 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3831_P_1) }, { "vpmovzxbd", { XM, EXxmmqd }, 0 }, }, /* PREFIX_EVEX_0F3832 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3832_P_1) }, { "vpmovzxbq", { XM, EXxmmdw }, 0 }, }, /* PREFIX_EVEX_0F3833 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3833_P_1) }, { "vpmovzxwd", { XM, EXxmmq }, 0 }, }, /* PREFIX_EVEX_0F3834 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3834_P_1) }, { "vpmovzxwq", { XM, EXxmmqd }, 0 }, }, /* PREFIX_EVEX_0F3835 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3835_P_1) }, { VEX_W_TABLE (EVEX_W_0F3835_P_2) }, }, /* PREFIX_EVEX_0F3836 */ { { Bad_Opcode }, { Bad_Opcode }, { "vperm%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3837 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3837_P_2) }, }, /* PREFIX_EVEX_0F3838 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3838_P_1) }, { "vpminsb", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3839 */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3839_P_1) }, { "vpmins%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F383A */ { { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F383A_P_1) }, { "vpminuw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F383B */ { { Bad_Opcode }, { Bad_Opcode }, { "vpminu%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F383C */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmaxsb", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F383D */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmaxs%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F383E */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmaxuw", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F383F */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmaxu%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3840 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3840_P_2) }, }, /* PREFIX_EVEX_0F3842 */ { { Bad_Opcode }, { Bad_Opcode }, { "vgetexpp%XW", { XM, EXx, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_0F3843 */ { { Bad_Opcode }, { Bad_Opcode }, { "vgetexps%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_0F3844 */ { { Bad_Opcode }, { Bad_Opcode }, { "vplzcnt%LW", { XM, EXx }, 0 }, }, /* PREFIX_EVEX_0F3845 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsrlv%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3846 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsrav%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3847 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsllv%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F384C */ { { Bad_Opcode }, { Bad_Opcode }, { "vrcp14p%XW", { XM, EXx }, 0 }, }, /* PREFIX_EVEX_0F384D */ { { Bad_Opcode }, { Bad_Opcode }, { "vrcp14s%XW", { XMScalar, VexScalar, EXxmm_mdq }, 0 }, }, /* PREFIX_EVEX_0F384E */ { { Bad_Opcode }, { Bad_Opcode }, { "vrsqrt14p%XW", { XM, EXx }, 0 }, }, /* PREFIX_EVEX_0F384F */ { { Bad_Opcode }, { Bad_Opcode }, { "vrsqrt14s%XW", { XMScalar, VexScalar, EXxmm_mdq }, 0 }, }, /* PREFIX_EVEX_0F3852 */ { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "vp4dpwssd", { XM, Vex, EXxmm }, 0 }, }, /* PREFIX_EVEX_0F3853 */ { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "vp4dpwssds", { XM, Vex, EXxmm }, 0 }, }, /* PREFIX_EVEX_0F3855 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3855_P_2) }, }, /* PREFIX_EVEX_0F3858 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3858_P_2) }, }, /* PREFIX_EVEX_0F3859 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3859_P_2) }, }, /* PREFIX_EVEX_0F385A */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F385A_P_2) }, }, /* PREFIX_EVEX_0F385B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F385B_P_2) }, }, /* PREFIX_EVEX_0F3864 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpblendm%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3865 */ { { Bad_Opcode }, { Bad_Opcode }, { "vblendmp%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3866 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3866_P_2) }, }, /* PREFIX_EVEX_0F3875 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3875_P_2) }, }, /* PREFIX_EVEX_0F3876 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpermi2%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3877 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpermi2p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3878 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3878_P_2) }, }, /* PREFIX_EVEX_0F3879 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3879_P_2) }, }, /* PREFIX_EVEX_0F387A */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F387A_P_2) }, }, /* PREFIX_EVEX_0F387B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F387B_P_2) }, }, /* PREFIX_EVEX_0F387C */ { { Bad_Opcode }, { Bad_Opcode }, { "vpbroadcast%LW", { XM, Rdq }, 0 }, }, /* PREFIX_EVEX_0F387D */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F387D_P_2) }, }, /* PREFIX_EVEX_0F387E */ { { Bad_Opcode }, { Bad_Opcode }, { "vpermt2%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F387F */ { { Bad_Opcode }, { Bad_Opcode }, { "vpermt2p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F3883 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3883_P_2) }, }, /* PREFIX_EVEX_0F3888 */ { { Bad_Opcode }, { Bad_Opcode }, { "vexpandp%XW", { XM, EXEvexXGscat }, 0 }, }, /* PREFIX_EVEX_0F3889 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpexpand%LW", { XM, EXEvexXGscat }, 0 }, }, /* PREFIX_EVEX_0F388A */ { { Bad_Opcode }, { Bad_Opcode }, { "vcompressp%XW", { EXEvexXGscat, XM }, 0 }, }, /* PREFIX_EVEX_0F388B */ { { Bad_Opcode }, { Bad_Opcode }, { "vpcompress%LW", { EXEvexXGscat, XM }, 0 }, }, /* PREFIX_EVEX_0F388D */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F388D_P_2) }, }, /* PREFIX_EVEX_0F3890 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpgatherd%LW", { XM, MVexVSIBDWpX }, 0 }, }, /* PREFIX_EVEX_0F3891 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3891_P_2) }, }, /* PREFIX_EVEX_0F3892 */ { { Bad_Opcode }, { Bad_Opcode }, { "vgatherdp%XW", { XM, MVexVSIBDWpX}, 0 }, }, /* PREFIX_EVEX_0F3893 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3893_P_2) }, }, /* PREFIX_EVEX_0F3896 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmaddsub132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F3897 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsubadd132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F3898 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F3899 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmadd132s%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F389A */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsub132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, { "v4fmaddps", { XM, Vex, Mxmm }, 0 }, }, /* PREFIX_EVEX_0F389B */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsub132s%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexR }, 0 }, { "v4fmaddss", { XMScalar, VexScalar, Mxmm }, 0 }, }, /* PREFIX_EVEX_0F389C */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F389D */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmadd132s%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F389E */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmsub132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F389F */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmsub132s%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38A0 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpscatterd%LW", { MVexVSIBDWpX, XM }, 0 }, }, /* PREFIX_EVEX_0F38A1 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F38A1_P_2) }, }, /* PREFIX_EVEX_0F38A2 */ { { Bad_Opcode }, { Bad_Opcode }, { "vscatterdp%XW", { MVexVSIBDWpX, XM }, 0 }, }, /* PREFIX_EVEX_0F38A3 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F38A3_P_2) }, }, /* PREFIX_EVEX_0F38A6 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmaddsub213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38A7 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsubadd213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38A8 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38A9 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmadd213s%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38AA */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsub213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, { "v4fnmaddps", { XM, Vex, Mxmm }, 0 }, }, /* PREFIX_EVEX_0F38AB */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsub213s%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexR }, 0 }, { "v4fnmaddss", { XMScalar, VexScalar, Mxmm }, 0 }, }, /* PREFIX_EVEX_0F38AC */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38AD */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmadd213s%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38AE */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmsub213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38AF */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmsub213s%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38B4 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmadd52luq", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F38B5 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpmadd52huq", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F38B6 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmaddsub231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38B7 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsubadd231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38B8 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38B9 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmadd231s%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38BA */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38BB */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsub231s%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38BC */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38BD */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmadd231s%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38BE */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38BF */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmsub231s%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_0F38C4 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpconflict%LW", { XM, EXx }, 0 }, }, /* PREFIX_EVEX_0F38C6_REG_1 */ { { Bad_Opcode }, { Bad_Opcode }, { "vgatherpf0dp%XW", { MVexVSIBDWpX }, 0 }, }, /* PREFIX_EVEX_0F38C6_REG_2 */ { { Bad_Opcode }, { Bad_Opcode }, { "vgatherpf1dp%XW", { MVexVSIBDWpX }, 0 }, }, /* PREFIX_EVEX_0F38C6_REG_5 */ { { Bad_Opcode }, { Bad_Opcode }, { "vscatterpf0dp%XW", { MVexVSIBDWpX }, 0 }, }, /* PREFIX_EVEX_0F38C6_REG_6 */ { { Bad_Opcode }, { Bad_Opcode }, { "vscatterpf1dp%XW", { MVexVSIBDWpX }, 0 }, }, /* PREFIX_EVEX_0F38C7_REG_1 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F38C7_R_1_P_2) }, }, /* PREFIX_EVEX_0F38C7_REG_2 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F38C7_R_2_P_2) }, }, /* PREFIX_EVEX_0F38C7_REG_5 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F38C7_R_5_P_2) }, }, /* PREFIX_EVEX_0F38C7_REG_6 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F38C7_R_6_P_2) }, }, /* PREFIX_EVEX_0F38C8 */ { { Bad_Opcode }, { Bad_Opcode }, { "vexp2p%XW", { XM, EXx, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_0F38CA */ { { Bad_Opcode }, { Bad_Opcode }, { "vrcp28p%XW", { XM, EXx, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_0F38CB */ { { Bad_Opcode }, { Bad_Opcode }, { "vrcp28s%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_0F38CC */ { { Bad_Opcode }, { Bad_Opcode }, { "vrsqrt28p%XW", { XM, EXx, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_0F38CD */ { { Bad_Opcode }, { Bad_Opcode }, { "vrsqrt28s%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_0F3A00 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A00_P_2) }, }, /* PREFIX_EVEX_0F3A01 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A01_P_2) }, }, /* PREFIX_EVEX_0F3A03 */ { { Bad_Opcode }, { Bad_Opcode }, { "valign%LW", { XM, Vex, EXx, Ib }, 0 }, }, /* PREFIX_EVEX_0F3A04 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A04_P_2) }, }, /* PREFIX_EVEX_0F3A05 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A05_P_2) }, }, /* PREFIX_EVEX_0F3A08 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A08_P_2) }, }, /* PREFIX_EVEX_0F3A09 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A09_P_2) }, }, /* PREFIX_EVEX_0F3A0A */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A0A_P_2) }, }, /* PREFIX_EVEX_0F3A0B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A0B_P_2) }, }, /* PREFIX_EVEX_0F3A0F */ { { Bad_Opcode }, { Bad_Opcode }, { "vpalignr", { XM, Vex, EXx, Ib }, 0 }, }, /* PREFIX_EVEX_0F3A14 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpextrb", { Edqb, XM, Ib }, 0 }, }, /* PREFIX_EVEX_0F3A15 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpextrw", { Edqw, XM, Ib }, 0 }, }, /* PREFIX_EVEX_0F3A16 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A16_P_2) }, }, /* PREFIX_EVEX_0F3A17 */ { { Bad_Opcode }, { Bad_Opcode }, { "vextractps", { Edqd, XMM, Ib }, 0 }, }, /* PREFIX_EVEX_0F3A18 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A18_P_2) }, }, /* PREFIX_EVEX_0F3A19 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A19_P_2) }, }, /* PREFIX_EVEX_0F3A1A */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A1A_P_2) }, }, /* PREFIX_EVEX_0F3A1B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A1B_P_2) }, }, /* PREFIX_EVEX_0F3A1D */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A1D_P_2) }, }, /* PREFIX_EVEX_0F3A1E */ { { Bad_Opcode }, { Bad_Opcode }, { "vpcmpu%LW", { XMask, Vex, EXx, VPCMP }, 0 }, }, /* PREFIX_EVEX_0F3A1F */ { { Bad_Opcode }, { Bad_Opcode }, { "vpcmp%LW", { XMask, Vex, EXx, VPCMP }, 0 }, }, /* PREFIX_EVEX_0F3A20 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpinsrb", { XM, Vex128, Edb, Ib }, 0 }, }, /* PREFIX_EVEX_0F3A21 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A21_P_2) }, }, /* PREFIX_EVEX_0F3A22 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A22_P_2) }, }, /* PREFIX_EVEX_0F3A23 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A23_P_2) }, }, /* PREFIX_EVEX_0F3A25 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpternlog%LW", { XM, Vex, EXx, Ib }, 0 }, }, /* PREFIX_EVEX_0F3A26 */ { { Bad_Opcode }, { Bad_Opcode }, { "vgetmantp%XW", { XM, EXx, EXxEVexS, Ib }, 0 }, }, /* PREFIX_EVEX_0F3A27 */ { { Bad_Opcode }, { Bad_Opcode }, { "vgetmants%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexS, Ib }, 0 }, }, /* PREFIX_EVEX_0F3A38 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A38_P_2) }, }, /* PREFIX_EVEX_0F3A39 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A39_P_2) }, }, /* PREFIX_EVEX_0F3A3A */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A3A_P_2) }, }, /* PREFIX_EVEX_0F3A3B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A3B_P_2) }, }, /* PREFIX_EVEX_0F3A3E */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A3E_P_2) }, }, /* PREFIX_EVEX_0F3A3F */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A3F_P_2) }, }, /* PREFIX_EVEX_0F3A42 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A42_P_2) }, }, /* PREFIX_EVEX_0F3A43 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A43_P_2) }, }, /* PREFIX_EVEX_0F3A50 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A50_P_2) }, }, /* PREFIX_EVEX_0F3A51 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A51_P_2) }, }, /* PREFIX_EVEX_0F3A54 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfixupimmp%XW", { XM, Vex, EXx, EXxEVexS, Ib }, 0 }, }, /* PREFIX_EVEX_0F3A55 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfixupimms%XW", { XMScalar, VexScalar, EXxmm_mdq, EXxEVexS, Ib }, 0 }, }, /* PREFIX_EVEX_0F3A56 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A56_P_2) }, }, /* PREFIX_EVEX_0F3A57 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A57_P_2) }, }, /* PREFIX_EVEX_0F3A66 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A66_P_2) }, }, /* PREFIX_EVEX_0F3A67 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A67_P_2) }, }, #endif /* NEED_PREFIX_TABLE */ #ifdef NEED_VEX_W_TABLE /* EVEX_W_0F10_P_0 */ { { "vmovups", { XM, EXEvexXNoBcst }, 0 }, }, /* EVEX_W_0F10_P_1_M_0 */ { { "vmovss", { XMScalar, EXdScalar }, 0 }, }, /* EVEX_W_0F10_P_1_M_1 */ { { "vmovss", { XMScalar, VexScalar, EXxmm_md }, 0 }, }, /* EVEX_W_0F10_P_2 */ { { Bad_Opcode }, { "vmovupd", { XM, EXEvexXNoBcst }, 0 }, }, /* EVEX_W_0F10_P_3_M_0 */ { { Bad_Opcode }, { "vmovsd", { XMScalar, EXqScalar }, 0 }, }, /* EVEX_W_0F10_P_3_M_1 */ { { Bad_Opcode }, { "vmovsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, }, /* EVEX_W_0F11_P_0 */ { { "vmovups", { EXxS, XM }, 0 }, }, /* EVEX_W_0F11_P_1_M_0 */ { { "vmovss", { EXdScalarS, XMScalar }, 0 }, }, /* EVEX_W_0F11_P_1_M_1 */ { { "vmovss", { EXxS, Vex, XMScalar }, 0 }, }, /* EVEX_W_0F11_P_2 */ { { Bad_Opcode }, { "vmovupd", { EXxS, XM }, 0 }, }, /* EVEX_W_0F11_P_3_M_0 */ { { Bad_Opcode }, { "vmovsd", { EXqScalarS, XMScalar }, 0 }, }, /* EVEX_W_0F11_P_3_M_1 */ { { Bad_Opcode }, { "vmovsd", { EXxS, Vex, XMScalar }, 0 }, }, /* EVEX_W_0F12_P_0_M_0 */ { { "vmovlps", { XMM, Vex, EXxmm_mq }, 0 }, }, /* EVEX_W_0F12_P_0_M_1 */ { { "vmovhlps", { XMM, Vex, EXxmm_mq }, 0 }, }, /* EVEX_W_0F12_P_1 */ { { "vmovsldup", { XM, EXEvexXNoBcst }, 0 }, }, /* EVEX_W_0F12_P_2 */ { { Bad_Opcode }, { "vmovlpd", { XMM, Vex, EXxmm_mq }, 0 }, }, /* EVEX_W_0F12_P_3 */ { { Bad_Opcode }, { "vmovddup", { XM, EXymmq }, 0 }, }, /* EVEX_W_0F13_P_0 */ { { "vmovlps", { EXxmm_mq, XMM }, 0 }, }, /* EVEX_W_0F13_P_2 */ { { Bad_Opcode }, { "vmovlpd", { EXxmm_mq, XMM }, 0 }, }, /* EVEX_W_0F14_P_0 */ { { "vunpcklps", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F14_P_2 */ { { Bad_Opcode }, { "vunpcklpd", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F15_P_0 */ { { "vunpckhps", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F15_P_2 */ { { Bad_Opcode }, { "vunpckhpd", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F16_P_0_M_0 */ { { "vmovhps", { XMM, Vex, EXxmm_mq }, 0 }, }, /* EVEX_W_0F16_P_0_M_1 */ { { "vmovlhps", { XMM, Vex, EXx }, 0 }, }, /* EVEX_W_0F16_P_1 */ { { "vmovshdup", { XM, EXx }, 0 }, }, /* EVEX_W_0F16_P_2 */ { { Bad_Opcode }, { "vmovhpd", { XMM, Vex, EXxmm_mq }, 0 }, }, /* EVEX_W_0F17_P_0 */ { { "vmovhps", { EXxmm_mq, XMM }, 0 }, }, /* EVEX_W_0F17_P_2 */ { { Bad_Opcode }, { "vmovhpd", { EXxmm_mq, XMM }, 0 }, }, /* EVEX_W_0F28_P_0 */ { { "vmovaps", { XM, EXx }, 0 }, }, /* EVEX_W_0F28_P_2 */ { { Bad_Opcode }, { "vmovapd", { XM, EXx }, 0 }, }, /* EVEX_W_0F29_P_0 */ { { "vmovaps", { EXxS, XM }, 0 }, }, /* EVEX_W_0F29_P_2 */ { { Bad_Opcode }, { "vmovapd", { EXxS, XM }, 0 }, }, /* EVEX_W_0F2A_P_1 */ { { "vcvtsi2ss", { XMScalar, VexScalar, EXxEVexR, Ed }, 0 }, { "vcvtsi2ss", { XMScalar, VexScalar, EXxEVexR, Eq }, 0 }, }, /* EVEX_W_0F2A_P_3 */ { { "vcvtsi2sd", { XMScalar, VexScalar, Ed }, 0 }, { "vcvtsi2sd", { XMScalar, VexScalar, EXxEVexR, Eq }, 0 }, }, /* EVEX_W_0F2B_P_0 */ { { "vmovntps", { EXx, XM }, 0 }, }, /* EVEX_W_0F2B_P_2 */ { { Bad_Opcode }, { "vmovntpd", { EXx, XM }, 0 }, }, /* EVEX_W_0F2E_P_0 */ { { "vucomiss", { XMScalar, EXxmm_md, EXxEVexS }, 0 }, }, /* EVEX_W_0F2E_P_2 */ { { Bad_Opcode }, { "vucomisd", { XMScalar, EXxmm_mq, EXxEVexS }, 0 }, }, /* EVEX_W_0F2F_P_0 */ { { "vcomiss", { XMScalar, EXxmm_md, EXxEVexS }, 0 }, }, /* EVEX_W_0F2F_P_2 */ { { Bad_Opcode }, { "vcomisd", { XMScalar, EXxmm_mq, EXxEVexS }, 0 }, }, /* EVEX_W_0F51_P_0 */ { { "vsqrtps", { XM, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F51_P_1 */ { { "vsqrtss", { XMScalar, VexScalar, EXxmm_md, EXxEVexR }, 0 }, }, /* EVEX_W_0F51_P_2 */ { { Bad_Opcode }, { "vsqrtpd", { XM, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F51_P_3 */ { { Bad_Opcode }, { "vsqrtsd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexR }, 0 }, }, /* EVEX_W_0F54_P_0 */ { { "vandps", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F54_P_2 */ { { Bad_Opcode }, { "vandpd", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F55_P_0 */ { { "vandnps", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F55_P_2 */ { { Bad_Opcode }, { "vandnpd", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F56_P_0 */ { { "vorps", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F56_P_2 */ { { Bad_Opcode }, { "vorpd", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F57_P_0 */ { { "vxorps", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F57_P_2 */ { { Bad_Opcode }, { "vxorpd", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F58_P_0 */ { { "vaddps", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F58_P_1 */ { { "vaddss", { XMScalar, VexScalar, EXxmm_md, EXxEVexR }, 0 }, }, /* EVEX_W_0F58_P_2 */ { { Bad_Opcode }, { "vaddpd", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F58_P_3 */ { { Bad_Opcode }, { "vaddsd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexR }, 0 }, }, /* EVEX_W_0F59_P_0 */ { { "vmulps", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F59_P_1 */ { { "vmulss", { XMScalar, VexScalar, EXxmm_md, EXxEVexR }, 0 }, }, /* EVEX_W_0F59_P_2 */ { { Bad_Opcode }, { "vmulpd", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F59_P_3 */ { { Bad_Opcode }, { "vmulsd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexR }, 0 }, }, /* EVEX_W_0F5A_P_0 */ { { "vcvtps2pd", { XM, EXEvexHalfBcstXmmq, EXxEVexS }, 0 }, }, /* EVEX_W_0F5A_P_1 */ { { "vcvtss2sd", { XMScalar, VexScalar, EXxmm_md, EXxEVexS }, 0 }, }, /* EVEX_W_0F5A_P_2 */ { { Bad_Opcode }, { "vcvtpd2ps%XY", { XMxmmq, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F5A_P_3 */ { { Bad_Opcode }, { "vcvtsd2ss", { XMScalar, VexScalar, EXxmm_mq, EXxEVexR }, 0 }, }, /* EVEX_W_0F5B_P_0 */ { { "vcvtdq2ps", { XM, EXx, EXxEVexR }, 0 }, { "vcvtqq2ps%XY", { XMxmmq, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F5B_P_1 */ { { "vcvttps2dq", { XM, EXx, EXxEVexS }, 0 }, }, /* EVEX_W_0F5B_P_2 */ { { "vcvtps2dq", { XM, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F5C_P_0 */ { { "vsubps", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F5C_P_1 */ { { "vsubss", { XMScalar, VexScalar, EXxmm_md, EXxEVexR }, 0 }, }, /* EVEX_W_0F5C_P_2 */ { { Bad_Opcode }, { "vsubpd", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F5C_P_3 */ { { Bad_Opcode }, { "vsubsd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexR }, 0 }, }, /* EVEX_W_0F5D_P_0 */ { { "vminps", { XM, Vex, EXx, EXxEVexS }, 0 }, }, /* EVEX_W_0F5D_P_1 */ { { "vminss", { XMScalar, VexScalar, EXxmm_md, EXxEVexS }, 0 }, }, /* EVEX_W_0F5D_P_2 */ { { Bad_Opcode }, { "vminpd", { XM, Vex, EXx, EXxEVexS }, 0 }, }, /* EVEX_W_0F5D_P_3 */ { { Bad_Opcode }, { "vminsd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexS }, 0 }, }, /* EVEX_W_0F5E_P_0 */ { { "vdivps", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F5E_P_1 */ { { "vdivss", { XMScalar, VexScalar, EXxmm_md, EXxEVexR }, 0 }, }, /* EVEX_W_0F5E_P_2 */ { { Bad_Opcode }, { "vdivpd", { XM, Vex, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F5E_P_3 */ { { Bad_Opcode }, { "vdivsd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexR }, 0 }, }, /* EVEX_W_0F5F_P_0 */ { { "vmaxps", { XM, Vex, EXx, EXxEVexS }, 0 }, }, /* EVEX_W_0F5F_P_1 */ { { "vmaxss", { XMScalar, VexScalar, EXxmm_md, EXxEVexS }, 0 }, }, /* EVEX_W_0F5F_P_2 */ { { Bad_Opcode }, { "vmaxpd", { XM, Vex, EXx, EXxEVexS }, 0 }, }, /* EVEX_W_0F5F_P_3 */ { { Bad_Opcode }, { "vmaxsd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexS }, 0 }, }, /* EVEX_W_0F62_P_2 */ { { "vpunpckldq", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F66_P_2 */ { { "vpcmpgtd", { XMask, Vex, EXx }, 0 }, }, /* EVEX_W_0F6A_P_2 */ { { "vpunpckhdq", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F6B_P_2 */ { { "vpackssdw", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F6C_P_2 */ { { Bad_Opcode }, { "vpunpcklqdq", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F6D_P_2 */ { { Bad_Opcode }, { "vpunpckhqdq", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F6E_P_2 */ { { "vmovd", { XMScalar, Ed }, 0 }, { "vmovq", { XMScalar, Eq }, 0 }, }, /* EVEX_W_0F6F_P_1 */ { { "vmovdqu32", { XM, EXEvexXNoBcst }, 0 }, { "vmovdqu64", { XM, EXEvexXNoBcst }, 0 }, }, /* EVEX_W_0F6F_P_2 */ { { "vmovdqa32", { XM, EXEvexXNoBcst }, 0 }, { "vmovdqa64", { XM, EXEvexXNoBcst }, 0 }, }, /* EVEX_W_0F6F_P_3 */ { { "vmovdqu8", { XM, EXx }, 0 }, { "vmovdqu16", { XM, EXx }, 0 }, }, /* EVEX_W_0F70_P_2 */ { { "vpshufd", { XM, EXx, Ib }, 0 }, }, /* EVEX_W_0F72_R_2_P_2 */ { { "vpsrld", { Vex, EXx, Ib }, 0 }, }, /* EVEX_W_0F72_R_6_P_2 */ { { "vpslld", { Vex, EXx, Ib }, 0 }, }, /* EVEX_W_0F73_R_2_P_2 */ { { Bad_Opcode }, { "vpsrlq", { Vex, EXx, Ib }, 0 }, }, /* EVEX_W_0F73_R_6_P_2 */ { { Bad_Opcode }, { "vpsllq", { Vex, EXx, Ib }, 0 }, }, /* EVEX_W_0F76_P_2 */ { { "vpcmpeqd", { XMask, Vex, EXx }, 0 }, }, /* EVEX_W_0F78_P_0 */ { { "vcvttps2udq", { XM, EXx, EXxEVexS }, 0 }, { "vcvttpd2udq%XY", { XMxmmq, EXx, EXxEVexS }, 0 }, }, /* EVEX_W_0F78_P_2 */ { { "vcvttps2uqq", { XM, EXEvexHalfBcstXmmq, EXxEVexS }, 0 }, { "vcvttpd2uqq", { XM, EXx, EXxEVexS }, 0 }, }, /* EVEX_W_0F79_P_0 */ { { "vcvtps2udq", { XM, EXx, EXxEVexR }, 0 }, { "vcvtpd2udq%XY", { XMxmmq, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F79_P_2 */ { { "vcvtps2uqq", { XM, EXEvexHalfBcstXmmq, EXxEVexR }, 0 }, { "vcvtpd2uqq", { XM, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F7A_P_1 */ { { "vcvtudq2pd", { XM, EXEvexHalfBcstXmmq }, 0 }, { "vcvtuqq2pd", { XM, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F7A_P_2 */ { { "vcvttps2qq", { XM, EXEvexHalfBcstXmmq, EXxEVexS }, 0 }, { "vcvttpd2qq", { XM, EXx, EXxEVexS }, 0 }, }, /* EVEX_W_0F7A_P_3 */ { { "vcvtudq2ps", { XM, EXx, EXxEVexR }, 0 }, { "vcvtuqq2ps%XY", { XMxmmq, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F7B_P_1 */ { { "vcvtusi2ss", { XMScalar, VexScalar, EXxEVexR, Ed }, 0 }, { "vcvtusi2ss", { XMScalar, VexScalar, EXxEVexR, Eq }, 0 }, }, /* EVEX_W_0F7B_P_2 */ { { "vcvtps2qq", { XM, EXEvexHalfBcstXmmq, EXxEVexR }, 0 }, { "vcvtpd2qq", { XM, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0F7B_P_3 */ { { "vcvtusi2sd", { XMScalar, VexScalar, Ed }, 0 }, { "vcvtusi2sd", { XMScalar, VexScalar, EXxEVexR, Eq }, 0 }, }, /* EVEX_W_0F7E_P_1 */ { { Bad_Opcode }, { "vmovq", { XMScalar, EXxmm_mq }, 0 }, }, /* EVEX_W_0F7E_P_2 */ { { "vmovd", { Ed, XMScalar }, 0 }, { "vmovq", { Eq, XMScalar }, 0 }, }, /* EVEX_W_0F7F_P_1 */ { { "vmovdqu32", { EXxS, XM }, 0 }, { "vmovdqu64", { EXxS, XM }, 0 }, }, /* EVEX_W_0F7F_P_2 */ { { "vmovdqa32", { EXxS, XM }, 0 }, { "vmovdqa64", { EXxS, XM }, 0 }, }, /* EVEX_W_0F7F_P_3 */ { { "vmovdqu8", { EXxS, XM }, 0 }, { "vmovdqu16", { EXxS, XM }, 0 }, }, /* EVEX_W_0FC2_P_0 */ { { "vcmpps", { XMask, Vex, EXx, EXxEVexS, VCMP }, 0 }, }, /* EVEX_W_0FC2_P_1 */ { { "vcmpss", { XMask, VexScalar, EXxmm_md, EXxEVexS, VCMP }, 0 }, }, /* EVEX_W_0FC2_P_2 */ { { Bad_Opcode }, { "vcmppd", { XMask, Vex, EXx, EXxEVexS, VCMP }, 0 }, }, /* EVEX_W_0FC2_P_3 */ { { Bad_Opcode }, { "vcmpsd", { XMask, VexScalar, EXxmm_mq, EXxEVexS, VCMP }, 0 }, }, /* EVEX_W_0FC6_P_0 */ { { "vshufps", { XM, Vex, EXx, Ib }, 0 }, }, /* EVEX_W_0FC6_P_2 */ { { Bad_Opcode }, { "vshufpd", { XM, Vex, EXx, Ib }, 0 }, }, /* EVEX_W_0FD2_P_2 */ { { "vpsrld", { XM, Vex, EXxmm }, 0 }, }, /* EVEX_W_0FD3_P_2 */ { { Bad_Opcode }, { "vpsrlq", { XM, Vex, EXxmm }, 0 }, }, /* EVEX_W_0FD4_P_2 */ { { Bad_Opcode }, { "vpaddq", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0FD6_P_2 */ { { Bad_Opcode }, { "vmovq", { EXxmm_mq, XMScalar }, 0 }, }, /* EVEX_W_0FE6_P_1 */ { { "vcvtdq2pd", { XM, EXEvexHalfBcstXmmq }, 0 }, { "vcvtqq2pd", { XM, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0FE6_P_2 */ { { Bad_Opcode }, { "vcvttpd2dq%XY", { XMxmmq, EXx, EXxEVexS }, 0 }, }, /* EVEX_W_0FE6_P_3 */ { { Bad_Opcode }, { "vcvtpd2dq%XY", { XMxmmq, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_0FE7_P_2 */ { { "vmovntdq", { EXEvexXNoBcst, XM }, 0 }, }, /* EVEX_W_0FF2_P_2 */ { { "vpslld", { XM, Vex, EXxmm }, 0 }, }, /* EVEX_W_0FF3_P_2 */ { { Bad_Opcode }, { "vpsllq", { XM, Vex, EXxmm }, 0 }, }, /* EVEX_W_0FF4_P_2 */ { { Bad_Opcode }, { "vpmuludq", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0FFA_P_2 */ { { "vpsubd", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0FFB_P_2 */ { { Bad_Opcode }, { "vpsubq", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0FFE_P_2 */ { { "vpaddd", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F380C_P_2 */ { { "vpermilps", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F380D_P_2 */ { { Bad_Opcode }, { "vpermilpd", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F3810_P_1 */ { { "vpmovuswb", { EXxmmq, XM }, 0 }, }, /* EVEX_W_0F3810_P_2 */ { { Bad_Opcode }, { "vpsrlvw", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F3811_P_1 */ { { "vpmovusdb", { EXxmmqd, XM }, 0 }, }, /* EVEX_W_0F3811_P_2 */ { { Bad_Opcode }, { "vpsravw", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F3812_P_1 */ { { "vpmovusqb", { EXxmmdw, XM }, 0 }, }, /* EVEX_W_0F3812_P_2 */ { { Bad_Opcode }, { "vpsllvw", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F3813_P_1 */ { { "vpmovusdw", { EXxmmq, XM }, 0 }, }, /* EVEX_W_0F3813_P_2 */ { { "vcvtph2ps", { XM, EXxmmq, EXxEVexS }, 0 }, }, /* EVEX_W_0F3814_P_1 */ { { "vpmovusqw", { EXxmmqd, XM }, 0 }, }, /* EVEX_W_0F3815_P_1 */ { { "vpmovusqd", { EXxmmq, XM }, 0 }, }, /* EVEX_W_0F3818_P_2 */ { { "vbroadcastss", { XM, EXxmm_md }, 0 }, }, /* EVEX_W_0F3819_P_2 */ { { "vbroadcastf32x2", { XM, EXxmm_mq }, 0 }, { "vbroadcastsd", { XM, EXxmm_mq }, 0 }, }, /* EVEX_W_0F381A_P_2 */ { { "vbroadcastf32x4", { XM, EXxmm }, 0 }, { "vbroadcastf64x2", { XM, EXxmm }, 0 }, }, /* EVEX_W_0F381B_P_2 */ { { "vbroadcastf32x8", { XM, EXxmmq }, 0 }, { "vbroadcastf64x4", { XM, EXymm }, 0 }, }, /* EVEX_W_0F381E_P_2 */ { { "vpabsd", { XM, EXx }, 0 }, }, /* EVEX_W_0F381F_P_2 */ { { Bad_Opcode }, { "vpabsq", { XM, EXx }, 0 }, }, /* EVEX_W_0F3820_P_1 */ { { "vpmovswb", { EXxmmq, XM }, 0 }, }, /* EVEX_W_0F3821_P_1 */ { { "vpmovsdb", { EXxmmqd, XM }, 0 }, }, /* EVEX_W_0F3822_P_1 */ { { "vpmovsqb", { EXxmmdw, XM }, 0 }, }, /* EVEX_W_0F3823_P_1 */ { { "vpmovsdw", { EXxmmq, XM }, 0 }, }, /* EVEX_W_0F3824_P_1 */ { { "vpmovsqw", { EXxmmqd, XM }, 0 }, }, /* EVEX_W_0F3825_P_1 */ { { "vpmovsqd", { EXxmmq, XM }, 0 }, }, /* EVEX_W_0F3825_P_2 */ { { "vpmovsxdq", { XM, EXxmmq }, 0 }, }, /* EVEX_W_0F3826_P_1 */ { { "vptestnmb", { XMask, Vex, EXx }, 0 }, { "vptestnmw", { XMask, Vex, EXx }, 0 }, }, /* EVEX_W_0F3826_P_2 */ { { "vptestmb", { XMask, Vex, EXx }, 0 }, { "vptestmw", { XMask, Vex, EXx }, 0 }, }, /* EVEX_W_0F3828_P_1 */ { { "vpmovm2b", { XM, MaskR }, 0 }, { "vpmovm2w", { XM, MaskR }, 0 }, }, /* EVEX_W_0F3828_P_2 */ { { Bad_Opcode }, { "vpmuldq", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F3829_P_1 */ { { "vpmovb2m", { XMask, EXx }, 0 }, { "vpmovw2m", { XMask, EXx }, 0 }, }, /* EVEX_W_0F3829_P_2 */ { { Bad_Opcode }, { "vpcmpeqq", { XMask, Vex, EXx }, 0 }, }, /* EVEX_W_0F382A_P_1 */ { { Bad_Opcode }, { "vpbroadcastmb2q", { XM, MaskR }, 0 }, }, /* EVEX_W_0F382A_P_2 */ { { "vmovntdqa", { XM, EXEvexXNoBcst }, 0 }, }, /* EVEX_W_0F382B_P_2 */ { { "vpackusdw", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F3830_P_1 */ { { "vpmovwb", { EXxmmq, XM }, 0 }, }, /* EVEX_W_0F3831_P_1 */ { { "vpmovdb", { EXxmmqd, XM }, 0 }, }, /* EVEX_W_0F3832_P_1 */ { { "vpmovqb", { EXxmmdw, XM }, 0 }, }, /* EVEX_W_0F3833_P_1 */ { { "vpmovdw", { EXxmmq, XM }, 0 }, }, /* EVEX_W_0F3834_P_1 */ { { "vpmovqw", { EXxmmqd, XM }, 0 }, }, /* EVEX_W_0F3835_P_1 */ { { "vpmovqd", { EXxmmq, XM }, 0 }, }, /* EVEX_W_0F3835_P_2 */ { { "vpmovzxdq", { XM, EXxmmq }, 0 }, }, /* EVEX_W_0F3837_P_2 */ { { Bad_Opcode }, { "vpcmpgtq", { XMask, Vex, EXx }, 0 }, }, /* EVEX_W_0F3838_P_1 */ { { "vpmovm2d", { XM, MaskR }, 0 }, { "vpmovm2q", { XM, MaskR }, 0 }, }, /* EVEX_W_0F3839_P_1 */ { { "vpmovd2m", { XMask, EXx }, 0 }, { "vpmovq2m", { XMask, EXx }, 0 }, }, /* EVEX_W_0F383A_P_1 */ { { "vpbroadcastmw2d", { XM, MaskR }, 0 }, }, /* EVEX_W_0F3840_P_2 */ { { "vpmulld", { XM, Vex, EXx }, 0 }, { "vpmullq", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F3855_P_2 */ { { "vpopcntd", { XM, EXx }, 0 }, { "vpopcntq", { XM, EXx }, 0 }, }, /* EVEX_W_0F3858_P_2 */ { { "vpbroadcastd", { XM, EXxmm_md }, 0 }, }, /* EVEX_W_0F3859_P_2 */ { { "vbroadcasti32x2", { XM, EXxmm_mq }, 0 }, { "vpbroadcastq", { XM, EXxmm_mq }, 0 }, }, /* EVEX_W_0F385A_P_2 */ { { "vbroadcasti32x4", { XM, EXxmm }, 0 }, { "vbroadcasti64x2", { XM, EXxmm }, 0 }, }, /* EVEX_W_0F385B_P_2 */ { { "vbroadcasti32x8", { XM, EXxmmq }, 0 }, { "vbroadcasti64x4", { XM, EXymm }, 0 }, }, /* EVEX_W_0F3866_P_2 */ { { "vpblendmb", { XM, Vex, EXx }, 0 }, { "vpblendmw", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F3875_P_2 */ { { "vpermi2b", { XM, Vex, EXx }, 0 }, { "vpermi2w", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F3878_P_2 */ { { "vpbroadcastb", { XM, EXxmm_mb }, 0 }, }, /* EVEX_W_0F3879_P_2 */ { { "vpbroadcastw", { XM, EXxmm_mw }, 0 }, }, /* EVEX_W_0F387A_P_2 */ { { "vpbroadcastb", { XM, Rd }, 0 }, }, /* EVEX_W_0F387B_P_2 */ { { "vpbroadcastw", { XM, Rd }, 0 }, }, /* EVEX_W_0F387D_P_2 */ { { "vpermt2b", { XM, Vex, EXx }, 0 }, { "vpermt2w", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F3883_P_2 */ { { Bad_Opcode }, { "vpmultishiftqb", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F388D_P_2 */ { { "vpermb", { XM, Vex, EXx }, 0 }, { "vpermw", { XM, Vex, EXx }, 0 }, }, /* EVEX_W_0F3891_P_2 */ { { "vpgatherqd", { XMxmmq, MVexVSIBQDWpX }, 0 }, { "vpgatherqq", { XM, MVexVSIBQWpX }, 0 }, }, /* EVEX_W_0F3893_P_2 */ { { "vgatherqps", { XMxmmq, MVexVSIBQDWpX }, 0 }, { "vgatherqpd", { XM, MVexVSIBQWpX }, 0 }, }, /* EVEX_W_0F38A1_P_2 */ { { "vpscatterqd", { MVexVSIBQDWpX, XMxmmq }, 0 }, { "vpscatterqq", { MVexVSIBQWpX, XM }, 0 }, }, /* EVEX_W_0F38A3_P_2 */ { { "vscatterqps", { MVexVSIBQDWpX, XMxmmq }, 0 }, { "vscatterqpd", { MVexVSIBQWpX, XM }, 0 }, }, /* EVEX_W_0F38C7_R_1_P_2 */ { { "vgatherpf0qps", { MVexVSIBDQWpX }, 0 }, { "vgatherpf0qpd", { MVexVSIBQWpX }, 0 }, }, /* EVEX_W_0F38C7_R_2_P_2 */ { { "vgatherpf1qps", { MVexVSIBDQWpX }, 0 }, { "vgatherpf1qpd", { MVexVSIBQWpX }, 0 }, }, /* EVEX_W_0F38C7_R_5_P_2 */ { { "vscatterpf0qps", { MVexVSIBDQWpX }, 0 }, { "vscatterpf0qpd", { MVexVSIBQWpX }, 0 }, }, /* EVEX_W_0F38C7_R_6_P_2 */ { { "vscatterpf1qps", { MVexVSIBDQWpX }, 0 }, { "vscatterpf1qpd", { MVexVSIBQWpX }, 0 }, }, /* EVEX_W_0F3A00_P_2 */ { { Bad_Opcode }, { "vpermq", { XM, EXx, Ib }, 0 }, }, /* EVEX_W_0F3A01_P_2 */ { { Bad_Opcode }, { "vpermpd", { XM, EXx, Ib }, 0 }, }, /* EVEX_W_0F3A04_P_2 */ { { "vpermilps", { XM, EXx, Ib }, 0 }, }, /* EVEX_W_0F3A05_P_2 */ { { Bad_Opcode }, { "vpermilpd", { XM, EXx, Ib }, 0 }, }, /* EVEX_W_0F3A08_P_2 */ { { "vrndscaleps", { XM, EXx, EXxEVexS, Ib }, 0 }, }, /* EVEX_W_0F3A09_P_2 */ { { Bad_Opcode }, { "vrndscalepd", { XM, EXx, EXxEVexS, Ib }, 0 }, }, /* EVEX_W_0F3A0A_P_2 */ { { "vrndscaless", { XMScalar, VexScalar, EXxmm_md, EXxEVexS, Ib }, 0 }, }, /* EVEX_W_0F3A0B_P_2 */ { { Bad_Opcode }, { "vrndscalesd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexS, Ib }, 0 }, }, /* EVEX_W_0F3A16_P_2 */ { { "vpextrd", { Edqd, XM, Ib }, 0 }, { "vpextrq", { Eq, XM, Ib }, 0 }, }, /* EVEX_W_0F3A18_P_2 */ { { "vinsertf32x4", { XM, Vex, EXxmm, Ib }, 0 }, { "vinsertf64x2", { XM, Vex, EXxmm, Ib }, 0 }, }, /* EVEX_W_0F3A19_P_2 */ { { "vextractf32x4", { EXxmm, XM, Ib }, 0 }, { "vextractf64x2", { EXxmm, XM, Ib }, 0 }, }, /* EVEX_W_0F3A1A_P_2 */ { { "vinsertf32x8", { XM, Vex, EXxmmq, Ib }, 0 }, { "vinsertf64x4", { XM, Vex, EXxmmq, Ib }, 0 }, }, /* EVEX_W_0F3A1B_P_2 */ { { "vextractf32x8", { EXxmmq, XM, Ib }, 0 }, { "vextractf64x4", { EXxmmq, XM, Ib }, 0 }, }, /* EVEX_W_0F3A1D_P_2 */ { { "vcvtps2ph", { EXxmmq, XM, EXxEVexS, Ib }, 0 }, }, /* EVEX_W_0F3A21_P_2 */ { { "vinsertps", { XMM, Vex, EXxmm_md, Ib }, 0 }, }, /* EVEX_W_0F3A22_P_2 */ { { "vpinsrd", { XM, Vex128, Edqd, Ib }, 0 }, { "vpinsrq", { XM, Vex128, Eq, Ib }, 0 }, }, /* EVEX_W_0F3A23_P_2 */ { { "vshuff32x4", { XM, Vex, EXx, Ib }, 0 }, { "vshuff64x2", { XM, Vex, EXx, Ib }, 0 }, }, /* EVEX_W_0F3A38_P_2 */ { { "vinserti32x4", { XM, Vex, EXxmm, Ib }, 0 }, { "vinserti64x2", { XM, Vex, EXxmm, Ib }, 0 }, }, /* EVEX_W_0F3A39_P_2 */ { { "vextracti32x4", { EXxmm, XM, Ib }, 0 }, { "vextracti64x2", { EXxmm, XM, Ib }, 0 }, }, /* EVEX_W_0F3A3A_P_2 */ { { "vinserti32x8", { XM, Vex, EXxmmq, Ib }, 0 }, { "vinserti64x4", { XM, Vex, EXxmmq, Ib }, 0 }, }, /* EVEX_W_0F3A3B_P_2 */ { { "vextracti32x8", { EXxmmq, XM, Ib }, 0 }, { "vextracti64x4", { EXxmmq, XM, Ib }, 0 }, }, /* EVEX_W_0F3A3E_P_2 */ { { "vpcmpub", { XMask, Vex, EXx, Ib }, 0 }, { "vpcmpuw", { XMask, Vex, EXx, Ib }, 0 }, }, /* EVEX_W_0F3A3F_P_2 */ { { "vpcmpb", { XMask, Vex, EXx, Ib }, 0 }, { "vpcmpw", { XMask, Vex, EXx, Ib }, 0 }, }, /* EVEX_W_0F3A42_P_2 */ { { "vdbpsadbw", { XM, Vex, EXx, Ib }, 0 }, }, /* EVEX_W_0F3A43_P_2 */ { { "vshufi32x4", { XM, Vex, EXx, Ib }, 0 }, { "vshufi64x2", { XM, Vex, EXx, Ib }, 0 }, }, /* EVEX_W_0F3A50_P_2 */ { { "vrangeps", { XM, Vex, EXx, EXxEVexS, Ib }, 0 }, { "vrangepd", { XM, Vex, EXx, EXxEVexS, Ib }, 0 }, }, /* EVEX_W_0F3A51_P_2 */ { { "vrangess", { XMScalar, VexScalar, EXxmm_md, EXxEVexS, Ib }, 0 }, { "vrangesd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexS, Ib }, 0 }, }, /* EVEX_W_0F3A56_P_2 */ { { "vreduceps", { XM, EXx, EXxEVexS, Ib }, 0 }, { "vreducepd", { XM, EXx, EXxEVexS, Ib }, 0 }, }, /* EVEX_W_0F3A57_P_2 */ { { "vreducess", { XMScalar, VexScalar, EXxmm_md, EXxEVexS, Ib }, 0 }, { "vreducesd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexS, Ib }, 0 }, }, /* EVEX_W_0F3A66_P_2 */ { { "vfpclassps%XZ", { XMask, EXx, Ib }, 0 }, { "vfpclasspd%XZ", { XMask, EXx, Ib }, 0 }, }, /* EVEX_W_0F3A67_P_2 */ { { "vfpclassss", { XMask, EXxmm_md, Ib }, 0 }, { "vfpclasssd", { XMask, EXxmm_mq, Ib }, 0 }, }, #endif /* NEED_VEX_W_TABLE */ #ifdef NEED_MOD_TABLE { /* MOD_EVEX_0F10_PREFIX_1 */ { VEX_W_TABLE (EVEX_W_0F10_P_1_M_0) }, { VEX_W_TABLE (EVEX_W_0F10_P_1_M_1) }, }, { /* MOD_EVEX_0F10_PREFIX_3 */ { VEX_W_TABLE (EVEX_W_0F10_P_3_M_0) }, { VEX_W_TABLE (EVEX_W_0F10_P_3_M_1) }, }, { /* MOD_EVEX_0F11_PREFIX_1 */ { VEX_W_TABLE (EVEX_W_0F11_P_1_M_0) }, { VEX_W_TABLE (EVEX_W_0F11_P_1_M_1) }, }, { /* MOD_EVEX_0F11_PREFIX_3 */ { VEX_W_TABLE (EVEX_W_0F11_P_3_M_0) }, { VEX_W_TABLE (EVEX_W_0F11_P_3_M_1) }, }, { /* MOD_EVEX_0F12_PREFIX_0 */ { VEX_W_TABLE (EVEX_W_0F12_P_0_M_0) }, { VEX_W_TABLE (EVEX_W_0F12_P_0_M_1) }, }, { /* MOD_EVEX_0F16_PREFIX_0 */ { VEX_W_TABLE (EVEX_W_0F16_P_0_M_0) }, { VEX_W_TABLE (EVEX_W_0F16_P_0_M_1) }, }, { /* MOD_EVEX_0F38C6_REG_1 */ { PREFIX_TABLE (PREFIX_EVEX_0F38C6_REG_1) }, }, { /* MOD_EVEX_0F38C6_REG_2 */ { PREFIX_TABLE (PREFIX_EVEX_0F38C6_REG_2) }, }, { /* MOD_EVEX_0F38C6_REG_5 */ { PREFIX_TABLE (PREFIX_EVEX_0F38C6_REG_5) }, }, { /* MOD_EVEX_0F38C6_REG_6 */ { PREFIX_TABLE (PREFIX_EVEX_0F38C6_REG_6) }, }, { /* MOD_EVEX_0F38C7_REG_1 */ { PREFIX_TABLE (PREFIX_EVEX_0F38C7_REG_1) }, }, { /* MOD_EVEX_0F38C7_REG_2 */ { PREFIX_TABLE (PREFIX_EVEX_0F38C7_REG_2) }, }, { /* MOD_EVEX_0F38C7_REG_5 */ { PREFIX_TABLE (PREFIX_EVEX_0F38C7_REG_5) }, }, { /* MOD_EVEX_0F38C7_REG_6 */ { PREFIX_TABLE (PREFIX_EVEX_0F38C7_REG_6) }, }, #endif /* NEED_MOD_TABLE */ aranym-1.1.0/src/disasm/disasm-x86.h0000664000175000017500000001737513454637621015341 0ustar joyjoy/* Interface between the opcode library and its callers. Copyright (C) 1999-2015 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. Written by Cygnus Support, 1993. The opcode library (libopcodes.a) provides instruction decoders for a large variety of instruction sets, callable with an identical interface, for making instruction-processing programs more independent of the instruction set being processed. */ #ifndef __DISASM_X86_H__ #define __DISASM_X86_H__ 1 #ifdef __cplusplus extern "C" { #endif #include "disasm-bfd.h" #include "i386.h" #if defined(HAVE_SIGSETJMP) #define OPCODES_SIGJMP_BUF sigjmp_buf #define OPCODES_SIGSETJMP(buf) sigsetjmp((buf), 0) #define OPCODES_SIGLONGJMP(buf,val) siglongjmp((buf), (val)) #else #define OPCODES_SIGJMP_BUF jmp_buf #define OPCODES_SIGSETJMP(buf) setjmp(buf) #define OPCODES_SIGLONGJMP(buf,val) longjmp((buf), (val)) #endif enum address_mode { mode_16bit, mode_32bit, mode_64bit }; /* This struct is passed into the instruction decoding routine, and is passed back out into each callback. The various fields are used for conveying information from your main routine into your callbacks, for passing information into the instruction decoders (such as the addresses of the callback functions), or for passing information back from the instruction decoders to their callers. It must be initialized before it is first passed; this can be done by hand, or using one of the initialization macros below. */ enum x86_64_isa { amd64 = 0, intel64 }; #define MAX_CODE_LENGTH 15 struct disassemble_info { fprintf_ftype fprintf_func; void *stream; /* For use by the disassembler. The top 16 bits are reserved for public use (and are documented here). The bottom 16 bits are for the internal use of the disassembler. */ unsigned long flags; /* Set if the disassembler has determined that there are one or more relocations associated with the instruction being disassembled. */ #define INSN_HAS_RELOC (1 << 31) /* Set if the user has requested the disassembly of data as well as code. */ #define DISASSEMBLE_DATA (1 << 30) /* Set if the user has specifically set the machine type encoded in the mach field of this structure. */ #define USER_SPECIFIED_MACHINE_TYPE (1 << 29) /* Function used to get bytes to disassemble. MEMADDR is the address of the stuff to be disassembled, MYADDR is the address to put the bytes in, and LENGTH is the number of bytes to read. INFO is a pointer to this struct. Returns an errno value or 0 for success. */ int (*read_memory_func) (bfd_vma memaddr, bfd_byte *myaddr, size_t length, disassemble_info *dinfo); /* Function which should be called if we get an error that we can't recover from. STATUS is the errno value from read_memory_func and MEMADDR is the address that we were trying to read. INFO is a pointer to this struct. */ void (*memory_error_func) (int status, bfd_vma memaddr, disassemble_info *dinfo); /* Function called to print ADDR. */ void (*print_address_func) (bfd_vma addr, disassemble_info *dinfo); /* These are for buffer_read_memory. */ bfd_byte *buffer; bfd_vma buffer_vma; size_t buffer_length; /* This variable may be set by the instruction decoder. It suggests the number of bytes objdump should display on a single line. If the instruction decoder sets this, it should always set it to the same value in order to get reasonable looking output. */ int bytes_per_line; /* Results from instruction decoders. Not all decoders yet support this information. This info is set each time an instruction is decoded, and is only valid for the last such instruction. To determine whether this decoder supports this information, set insn_info_valid to 0, decode an instruction, then check it. */ char insn_info_valid; /* Branch info has been set. */ char branch_delay_insns; /* How many sequential insn's will run before a branch takes effect. (0 = normal) */ char data_size; /* Size of data reference in insn, in bytes */ enum dis_insn_type insn_type; /* Type of instruction */ bfd_vma target; /* Target address of branch or dref, if known; zero if unknown. */ bfd_vma target2; /* Second target address for dref2 */ /* Command line options specific to the target disassembler. */ const char *disassembler_options; /* If non-zero then try not disassemble beyond this address, even if there are values left in the buffer. This address is the address of the nearest symbol forwards from the start of the disassembly, and it is assumed that it lies on the boundary between instructions. If an instruction spans this address then this is an error in the file being disassembled. */ bfd_vma stop_vma; struct { /* Points to first byte not fetched. */ bfd_byte *max_fetched; bfd_byte the_buffer[MAX_MNEM_SIZE]; bfd_vma insn_start; int orig_sizeflag; OPCODES_SIGJMP_BUF bailout; } dis_private; char *obufp; char obuf[100]; /* Flags for the prefixes for the current instruction. See below. */ int prefixes; /* Flags for prefixes which we somehow handled when printing the current instruction. */ int used_prefixes; enum address_mode address_mode; /* REX prefix the current instruction. See below. */ int rex; /* Bits of REX we've already used. */ int rex_used; /* REX bits in original REX prefix ignored. */ int rex_ignored; char op_out[MAX_OPERANDS][100]; int op_ad, op_index[MAX_OPERANDS]; int two_source_ops; bfd_vma op_address[MAX_OPERANDS]; int op_riprel[MAX_OPERANDS]; char *mnemonicendp; bfd_vma start_pc; char intel_syntax; char intel_mnemonic; char open_char; char close_char; char separator_char; char scale_char; unsigned char *start_codep; unsigned char *insn_codep; unsigned char *codep; unsigned char *end_codep; int last_lock_prefix; int last_repz_prefix; int last_repnz_prefix; int last_data_prefix; int last_addr_prefix; int last_rex_prefix; int last_seg_prefix; int fwait_prefix; /* The active segment register prefix. */ int active_seg_prefix; /* We can up to 14 prefixes since the maximum instruction length is 15bytes. */ int all_prefixes[MAX_CODE_LENGTH - 1]; enum x86_64_isa isa64; const char *const *names64; const char *const *names32; const char *const *names16; const char *const *names8; const char *const *names8rex; const char *const *names_seg; const char *index64; const char *index32; const char *const *index16; const char *const *names_mask; const char *const *names_mm; const char *const *names_bnd; const char *const *names_xmm; const char *const *names_ymm; const char *const *names_zmm; struct { int mod; int reg; int rm; } modrm; unsigned char need_modrm; struct { int scale; int index; int base; } sib; struct { int register_specifier; int length; int prefix; int w; int evex; int r; int v; int mask_register_specifier; int zeroing; int ll; int b; } vex; unsigned char need_vex; unsigned char need_vex_reg; unsigned char vex_w_done; unsigned char vex_imm8; }; #ifdef __cplusplus } #endif #endif /* __DISASM_X86_H__ */ aranym-1.1.0/src/disasm/disasm-x86.cpp0000664000175000017500000001011513454637621015655 0ustar joyjoy/* * disasm-x86.cpp - x86/x86_64 disassembler (using opcodes library) * * Copyright (c) 2017 ARAnyM developer team * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * 2017-01-07 : Initial version - Thorsten Otto * */ #include "sysdeps.h" #include "cpu_emulation.h" #include "disasm-glue.h" #ifdef HAVE_DISASM_X86 /* rest of file */ #ifdef DISASM_USE_OPCODES #include /* * newer versions of dis-asm.h don't declare the * functions :( */ #ifdef __cplusplus extern "C" { #endif extern int print_insn_i386 (bfd_vma, disassemble_info *); #ifdef __cplusplus } #endif #else #include "disasm-x86.h" #include "disasm-builtin.h" #endif /* DISASM_USE_OPCODES */ struct opcodes_info { char linebuf[128]; size_t bufsize; size_t linepos; disassemble_info *opcodes_info; }; static int opcodes_printf(void *info, const char *format, ...) { struct opcodes_info *opcodes_info = (struct opcodes_info *)info; va_list args; int len; size_t remain; va_start(args, format); remain = opcodes_info->bufsize - opcodes_info->linepos - 1; len = vsnprintf(opcodes_info->linebuf + opcodes_info->linepos, remain, format, args); if (len > 0) { if ((size_t)len > remain) len = remain; opcodes_info->linepos += len; } va_end(args); return len; } const uint8 *x86_disasm(const uint8 *ainstr, char *buf, int allbytes) { struct opcodes_info info; disassemble_info ainfo; int len; int i; char *opcode; char *p; const int bytes_per_line = 7; info.linepos = 0; info.bufsize = sizeof(info.linebuf); info.opcodes_info = &ainfo; #ifdef DISASM_USE_OPCODES INIT_DISASSEMBLE_INFO(*info.opcodes_info, &info, opcodes_printf); ainfo.buffer = (bfd_byte *)ainstr; ainfo.buffer_length = 15; // largest instruction size on x86 ainfo.buffer_vma = (uintptr)ainstr; ainfo.arch = bfd_arch_i386; #ifdef CPU_i386 ainfo.mach = bfd_mach_i386_i386; #else ainfo.mach = bfd_mach_x86_64; #endif disassemble_init_for_target(&ainfo); len = print_insn_i386(ainfo.buffer_vma, &ainfo); #endif #ifdef DISASM_USE_BUILTIN x86_disassemble_init(&info.opcodes_info, &info, opcodes_printf); len = x86_print_insn((bfd_vma)ainstr, info.opcodes_info); #endif info.linebuf[info.linepos] = '\0'; #ifdef CPU_i386 sprintf(buf, "[%08lx]", (unsigned long)ainstr); #else sprintf(buf, "[%016llx]", (unsigned long long)ainstr); #endif for (i = 0; i < bytes_per_line && i < len; i++) { sprintf(buf + strlen(buf), " %02x", ainstr[i]); } for (; i < bytes_per_line; i++) strcat(buf, " "); opcode = info.linebuf; if (strncmp(opcode, "addr32", 6) == 0) { opcode += 6; while (*opcode == ' ') opcode++; } p = strchr(opcode, ' '); if (p) { *p++ = '\0'; while (*p == ' ') p++; } sprintf(buf + strlen(buf), " %-10s", opcode); if (p) strcat(buf, p); if (len > bytes_per_line && allbytes) { strcat(buf, "\n"); #ifdef CPU_i386 sprintf(buf + strlen(buf), "[%08lx]", (usigned long)ainstr + bytes_per_line); #else sprintf(buf + strlen(buf), "[%016llx]", (unsigned long long)ainstr + bytes_per_line); #endif for (i = bytes_per_line; i < len; i++) { sprintf(buf + strlen(buf), " %02x", ainstr[i]); } } if (len <= 0) /* make sure we advance in case there was an error */ len = 1; ainstr += len; return ainstr; } #else extern int i_dont_care_that_ISOC_doesnt_like_empty_sourcefiles; #endif /* HAVE_DISASM_X86 */ aranym-1.1.0/src/disasm/disasm-x86-builtin.c0000664000175000017500000132474013454637621016776 0ustar joyjoy/* Print i386 instructions for GDB, the GNU debugger. Copyright (C) 1988-2017 Free Software Foundation, Inc. This file is part of the GNU opcodes library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* 80386 instruction printer by Pace Willisson (pace@prep.ai.mit.edu) July 1988 modified by John Hassey (hassey@dg-rtp.dg.com) x86-64 support added by Jan Hubicka (jh@suse.cz) VIA PadLock support by Michal Ludvig (mludvig@suse.cz). */ /* The main tables describing the instructions is essentially a copy of the "Opcode Map" chapter (Appendix A) of the Intel 80386 Programmers Manual. Usually, there is a capital letter, followed by a small letter. The capital letter tell the addressing mode, and the small letter tells about the operand size. Refer to the Intel manual for details. */ #include "sysdeps.h" #include "disasm-glue.h" #ifdef DISASM_USE_BUILTIN /* rest of file */ #include #include "disasm-x86.h" #include "disasm-builtin.h" #include #include #include #include #include #include #include #ifndef _ #define _(x) x #endif #ifndef UNUSED #define UNUSED(x) ((void)x) #endif #define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0])) /* Note - these macros do NOT work if STR2 is not a constant string. */ #define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1) #define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0) #define INTERNAL_DISASSEMBLER_ERROR _("") /* Flags stored in PREFIXES. */ #define PREFIX_REPZ 1 #define PREFIX_REPNZ 2 #define PREFIX_LOCK 4 #define PREFIX_CS 8 #define PREFIX_SS 0x10 #define PREFIX_DS 0x20 #define PREFIX_ES 0x40 #define PREFIX_FS 0x80 #define PREFIX_GS 0x100 #define PREFIX_DATA 0x200 #define PREFIX_ADDR 0x400 #define PREFIX_FWAIT 0x800 /* * On the 386's of 1988, the maximum length of an instruction is 15 bytes. * (see topic "Redundant prefixes" in the "Differences from 8086" * section of the "Virtual 8086 Mode" chapter.) * 'pc' should be the address of this instruction, it will * be used to print the target address if this is a relative jump or call * The function returns the length of this instruction in bytes. */ struct op { const char *name; unsigned int len; }; /* Mark parts used in the REX prefix. When we are testing for empty prefix (for 8bit register REX extension), just mask it out. Otherwise test for REX bit is excuse for existence of REX only in case value is nonzero. */ #define USED_REX(value) \ { \ if (value) \ { \ if ((info->rex & value)) \ info->rex_used |= (value) | REX_OPCODE; \ } \ else \ info->rex_used |= REX_OPCODE; \ } /* Make sure that bytes from INFO->PRIVATE_DATA->BUFFER (inclusive) to ADDR (exclusive) are valid. Returns 1 for success, longjmps on error. */ #define FETCH_DATA(info, addr) \ ((addr) <= (info)->dis_private.max_fetched \ ? 1 : fetch_data ((info), (addr))) static int fetch_data(disassemble_info *info, bfd_byte *addr) { int status; bfd_vma start = info->dis_private.insn_start + (info->dis_private.max_fetched - info->dis_private.the_buffer); if (addr <= info->dis_private.the_buffer + MAX_MNEM_SIZE) status = (*info->read_memory_func) (start, info->dis_private.max_fetched, addr - info->dis_private.max_fetched, info); else status = -1; if (status != 0) { /* If we did manage to read at least one byte, then print_insn_i386 will do something sensible. Otherwise, print an error. We do that here because this is where we know STATUS. */ if (info->dis_private.max_fetched == info->dis_private.the_buffer) (*info->memory_error_func) (status, start, info); OPCODES_SIGLONGJMP(info->dis_private.bailout, 1); } else { info->dis_private.max_fetched = addr; } return 1; } #ifndef HAVE_STPCPY static char *my_stpcpy(char *dest, const char *src) { size_t len = strlen(src); return (char *)memcpy(dest, src, len + 1) + len; } #undef stpcpy #define stpcpy my_stpcpy #endif static void oappend(disassemble_info *info, const char *s) { info->obufp = stpcpy(info->obufp, s); } /* Like oappend (below), but S is a string starting with '%'. In Intel syntax, the '%' is elided. */ static void oappend_maybe_intel(disassemble_info *info, const char *s) { oappend(info, s + info->intel_syntax); } static void internal_error(disassemble_info *info) { oappend(info, INTERNAL_DISASSEMBLER_ERROR); } /* Possible values for prefix requirement. */ #define PREFIX_IGNORED_SHIFT 16 #define PREFIX_IGNORED_REPZ (PREFIX_REPZ << PREFIX_IGNORED_SHIFT) #define PREFIX_IGNORED_REPNZ (PREFIX_REPNZ << PREFIX_IGNORED_SHIFT) #define PREFIX_IGNORED_DATA (PREFIX_DATA << PREFIX_IGNORED_SHIFT) #define PREFIX_IGNORED_ADDR (PREFIX_ADDR << PREFIX_IGNORED_SHIFT) #define PREFIX_IGNORED_LOCK (PREFIX_LOCK << PREFIX_IGNORED_SHIFT) /* Opcode prefixes. */ #define PREFIX_OPCODE (PREFIX_REPZ | PREFIX_REPNZ | PREFIX_DATA) /* Prefixes ignored. */ #define PREFIX_IGNORED (PREFIX_IGNORED_REPZ | PREFIX_IGNORED_REPNZ | PREFIX_IGNORED_DATA) #define XX { NULL, 0 } #define Bad_Opcode NULL, { XX }, 0 #define Eb { OP_E, b_mode } #define Ebnd { OP_E, bnd_mode } #define EbS { OP_E, b_swap_mode } #define Ev { OP_E, v_mode } #define Ev_bnd { OP_E, v_bnd_mode } #define EvS { OP_E, v_swap_mode } #define Ed { OP_E, d_mode } #define Edq { OP_E, dq_mode } #define Edqw { OP_E, dqw_mode } #define EdqwS { OP_E, dqw_swap_mode } #define Edqb { OP_E, dqb_mode } #define Edb { OP_E, db_mode } #define Edw { OP_E, dw_mode } #define Edqd { OP_E, dqd_mode } #define Eq { OP_E, q_mode } #define indirEv { OP_indirE, indir_v_mode } #define indirEp { OP_indirE, f_mode } #define stackEv { OP_E, stack_v_mode } #define Em { OP_E, m_mode } #define Ew { OP_E, w_mode } #define M { OP_M, 0 } /* lea, lgdt, etc. */ #define Ma { OP_M, a_mode } #define Mb { OP_M, b_mode } #define Md { OP_M, d_mode } #define Mo { OP_M, o_mode } #define Mp { OP_M, f_mode } /* 32 or 48 bit memory operand for LDS, LES etc */ #define Mq { OP_M, q_mode } #define Mx { OP_M, x_mode } #define Mxmm { OP_M, xmm_mode } #define Gb { OP_G, b_mode } #define Gbnd { OP_G, bnd_mode } #define Gv { OP_G, v_mode } #define Gd { OP_G, d_mode } #define Gdq { OP_G, dq_mode } #define Gm { OP_G, m_mode } #define Gw { OP_G, w_mode } #define Rd { OP_R, d_mode } #define Rdq { OP_R, dq_mode } #define Rm { OP_R, m_mode } #define Ib { OP_I, b_mode } #define sIb { OP_sI, b_mode } /* sign extened byte */ #define sIbT { OP_sI, b_T_mode } /* sign extened byte like 'T' */ #define Iv { OP_I, v_mode } #define sIv { OP_sI, v_mode } #define Iq { OP_I, q_mode } #define Iv64 { OP_I64, v_mode } #define Iw { OP_I, w_mode } #define I1 { OP_I, const_1_mode } #define Jb { OP_J, b_mode } #define Jv { OP_J, v_mode } #define Cm { OP_C, m_mode } #define Dm { OP_D, m_mode } #define Td { OP_T, d_mode } #define Skip_MODRM { OP_Skip_MODRM, 0 } #define RMeAX { OP_REG, eAX_reg } #define RMeBX { OP_REG, eBX_reg } #define RMeCX { OP_REG, eCX_reg } #define RMeDX { OP_REG, eDX_reg } #define RMeSP { OP_REG, eSP_reg } #define RMeBP { OP_REG, eBP_reg } #define RMeSI { OP_REG, eSI_reg } #define RMeDI { OP_REG, eDI_reg } #define RMrAX { OP_REG, rAX_reg } #define RMrBX { OP_REG, rBX_reg } #define RMrCX { OP_REG, rCX_reg } #define RMrDX { OP_REG, rDX_reg } #define RMrSP { OP_REG, rSP_reg } #define RMrBP { OP_REG, rBP_reg } #define RMrSI { OP_REG, rSI_reg } #define RMrDI { OP_REG, rDI_reg } #define RMAL { OP_REG, al_reg } #define RMCL { OP_REG, cl_reg } #define RMDL { OP_REG, dl_reg } #define RMBL { OP_REG, bl_reg } #define RMAH { OP_REG, ah_reg } #define RMCH { OP_REG, ch_reg } #define RMDH { OP_REG, dh_reg } #define RMBH { OP_REG, bh_reg } #define RMAX { OP_REG, ax_reg } #define RMDX { OP_REG, dx_reg } #define eAX { OP_IMREG, eAX_reg } #define eBX { OP_IMREG, eBX_reg } #define eCX { OP_IMREG, eCX_reg } #define eDX { OP_IMREG, eDX_reg } #define eSP { OP_IMREG, eSP_reg } #define eBP { OP_IMREG, eBP_reg } #define eSI { OP_IMREG, eSI_reg } #define eDI { OP_IMREG, eDI_reg } #define AL { OP_IMREG, al_reg } #define CL { OP_IMREG, cl_reg } #define DL { OP_IMREG, dl_reg } #define BL { OP_IMREG, bl_reg } #define AH { OP_IMREG, ah_reg } #define CH { OP_IMREG, ch_reg } #define DH { OP_IMREG, dh_reg } #define BH { OP_IMREG, bh_reg } #define AX { OP_IMREG, ax_reg } #define DX { OP_IMREG, dx_reg } #define zAX { OP_IMREG, z_mode_ax_reg } #define indirDX { OP_IMREG, indir_dx_reg } #define Sw { OP_SEG, w_mode } #define Sv { OP_SEG, v_mode } #define Ap { OP_DIR, 0 } #define Ob { OP_OFF64, b_mode } #define Ov { OP_OFF64, v_mode } #define Xb { OP_DSreg, eSI_reg } #define Xv { OP_DSreg, eSI_reg } #define Xz { OP_DSreg, eSI_reg } #define Yb { OP_ESreg, eDI_reg } #define Yv { OP_ESreg, eDI_reg } #define DSBX { OP_DSreg, eBX_reg } #define es { OP_REG, es_reg } #define ss { OP_REG, ss_reg } #define cs { OP_REG, cs_reg } #define ds { OP_REG, ds_reg } #define fs { OP_REG, fs_reg } #define gs { OP_REG, gs_reg } #define MX { OP_MMX, 0 } #define XM { OP_XMM, 0 } #define XMScalar { OP_XMM, scalar_mode } #define XMGatherQ { OP_XMM, vex_vsib_q_w_dq_mode } #define XMM { OP_XMM, xmm_mode } #define XMxmmq { OP_XMM, xmmq_mode } #define EM { OP_EM, v_mode } #define EMS { OP_EM, v_swap_mode } #define EMd { OP_EM, d_mode } #define EMx { OP_EM, x_mode } #define EXw { OP_EX, w_mode } #define EXd { OP_EX, d_mode } #define EXdScalar { OP_EX, d_scalar_mode } #define EXdS { OP_EX, d_swap_mode } #define EXdScalarS { OP_EX, d_scalar_swap_mode } #define EXq { OP_EX, q_mode } #define EXqScalar { OP_EX, q_scalar_mode } #define EXqScalarS { OP_EX, q_scalar_swap_mode } #define EXqS { OP_EX, q_swap_mode } #define EXx { OP_EX, x_mode } #define EXxS { OP_EX, x_swap_mode } #define EXxmm { OP_EX, xmm_mode } #define EXymm { OP_EX, ymm_mode } #define EXxmmq { OP_EX, xmmq_mode } #define EXEvexHalfBcstXmmq { OP_EX, evex_half_bcst_xmmq_mode } #define EXxmm_mb { OP_EX, xmm_mb_mode } #define EXxmm_mw { OP_EX, xmm_mw_mode } #define EXxmm_md { OP_EX, xmm_md_mode } #define EXxmm_mq { OP_EX, xmm_mq_mode } #define EXxmm_mdq { OP_EX, xmm_mdq_mode } #define EXxmmdw { OP_EX, xmmdw_mode } #define EXxmmqd { OP_EX, xmmqd_mode } #define EXymmq { OP_EX, ymmq_mode } #define EXVexWdq { OP_EX, vex_w_dq_mode } #define EXVexWdqScalar { OP_EX, vex_scalar_w_dq_mode } #define EXEvexXGscat { OP_EX, evex_x_gscat_mode } #define EXEvexXNoBcst { OP_EX, evex_x_nobcst_mode } #define MS { OP_MS, v_mode } #define XS { OP_XS, v_mode } #define EMCq { OP_EMC, q_mode } #define MXC { OP_MXC, 0 } #define OPSUF { OP_3DNowSuffix, 0 } #define CMP { CMP_Fixup, 0 } #define XMM0 { XMM_Fixup, 0 } #define FXSAVE { FXSAVE_Fixup, 0 } #define Vex_2src_1 { OP_Vex_2src_1, 0 } #define Vex_2src_2 { OP_Vex_2src_2, 0 } #define Vex { OP_VEX, vex_mode } #define VexScalar { OP_VEX, vex_scalar_mode } #define VexGatherQ { OP_VEX, vex_vsib_q_w_dq_mode } #define Vex128 { OP_VEX, vex128_mode } #define Vex256 { OP_VEX, vex256_mode } #define VexGdq { OP_VEX, dq_mode } #define VexI4 { VEXI4_Fixup, 0} #define EXdVex { OP_EX_Vex, d_mode } #define EXdVexS { OP_EX_Vex, d_swap_mode } #define EXdVexScalarS { OP_EX_Vex, d_scalar_swap_mode } #define EXqVex { OP_EX_Vex, q_mode } #define EXqVexS { OP_EX_Vex, q_swap_mode } #define EXqVexScalarS { OP_EX_Vex, q_scalar_swap_mode } #define EXVexW { OP_EX_VexW, x_mode } #define EXdVexW { OP_EX_VexW, d_mode } #define EXqVexW { OP_EX_VexW, q_mode } #define EXVexImmW { OP_EX_VexImmW, x_mode } #define XMVex { OP_XMM_Vex, 0 } #define XMVexScalar { OP_XMM_Vex, scalar_mode } #define XMVexW { OP_XMM_VexW, 0 } #define XMVexI4 { OP_REG_VexI4, x_mode } #define PCLMUL { PCLMUL_Fixup, 0 } #define VZERO { VZERO_Fixup, 0 } #define VCMP { VCMP_Fixup, 0 } #define VPCMP { VPCMP_Fixup, 0 } #define EXxEVexR { OP_Rounding, evex_rounding_mode } #define EXxEVexS { OP_Rounding, evex_sae_mode } #define XMask { OP_Mask, mask_mode } #define MaskG { OP_G, mask_mode } #define MaskE { OP_E, mask_mode } #define MaskBDE { OP_E, mask_bd_mode } #define MaskR { OP_R, mask_mode } #define MaskVex { OP_VEX, mask_mode } #define MVexVSIBDWpX { OP_M, vex_vsib_d_w_dq_mode } #define MVexVSIBDQWpX { OP_M, vex_vsib_d_w_d_mode } #define MVexVSIBQWpX { OP_M, vex_vsib_q_w_dq_mode } #define MVexVSIBQDWpX { OP_M, vex_vsib_q_w_d_mode } /* Used handle "rep" prefix for string instructions. */ #define Xbr { REP_Fixup, eSI_reg } #define Xvr { REP_Fixup, eSI_reg } #define Ybr { REP_Fixup, eDI_reg } #define Yvr { REP_Fixup, eDI_reg } #define Yzr { REP_Fixup, eDI_reg } #define indirDXr { REP_Fixup, indir_dx_reg } #define ALr { REP_Fixup, al_reg } #define eAXr { REP_Fixup, eAX_reg } /* Used handle HLE prefix for lockable instructions. */ #define Ebh1 { HLE_Fixup1, b_mode } #define Evh1 { HLE_Fixup1, v_mode } #define Ebh2 { HLE_Fixup2, b_mode } #define Evh2 { HLE_Fixup2, v_mode } #define Ebh3 { HLE_Fixup3, b_mode } #define Evh3 { HLE_Fixup3, v_mode } #define BND { BND_Fixup, 0 } #define cond_jump_flag { NULL, cond_jump_mode } #define loop_jcxz_flag { NULL, loop_jcxz_mode } /* bits in sizeflag */ #define SUFFIX_ALWAYS 4 #define AFLAG 2 #define DFLAG 1 enum { /* byte operand */ b_mode = 1, /* byte operand with operand swapped */ b_swap_mode, /* byte operand, sign extend like 'T' suffix */ b_T_mode, /* operand size depends on prefixes */ v_mode, /* operand size depends on prefixes with operand swapped */ v_swap_mode, /* word operand */ w_mode, /* double word operand */ d_mode, /* double word operand with operand swapped */ d_swap_mode, /* quad word operand */ q_mode, /* quad word operand with operand swapped */ q_swap_mode, /* ten-byte operand */ t_mode, /* 16-byte XMM, 32-byte YMM or 64-byte ZMM operand. In EVEX with broadcast enabled. */ x_mode, /* Similar to x_mode, but with different EVEX mem shifts. */ evex_x_gscat_mode, /* Similar to x_mode, but with disabled broadcast. */ evex_x_nobcst_mode, /* Similar to x_mode, but with operands swapped and disabled broadcast in EVEX. */ x_swap_mode, /* 16-byte XMM operand */ xmm_mode, /* XMM, XMM or YMM register operand, or quad word, xmmword or ymmword memory operand (depending on vector length). Broadcast isn't allowed. */ xmmq_mode, /* Same as xmmq_mode, but broadcast is allowed. */ evex_half_bcst_xmmq_mode, /* XMM register or byte memory operand */ xmm_mb_mode, /* XMM register or word memory operand */ xmm_mw_mode, /* XMM register or double word memory operand */ xmm_md_mode, /* XMM register or quad word memory operand */ xmm_mq_mode, /* XMM register or double/quad word memory operand, depending on VEX.W. */ xmm_mdq_mode, /* 16-byte XMM, word, double word or quad word operand. */ xmmdw_mode, /* 16-byte XMM, double word, quad word operand or xmm word operand. */ xmmqd_mode, /* 32-byte YMM operand */ ymm_mode, /* quad word, ymmword or zmmword memory operand. */ ymmq_mode, /* 32-byte YMM or 16-byte word operand */ ymmxmm_mode, /* d_mode in 32bit, q_mode in 64bit mode. */ m_mode, /* pair of v_mode operands */ a_mode, cond_jump_mode, loop_jcxz_mode, v_bnd_mode, /* operand size depends on REX prefixes. */ dq_mode, /* registers like dq_mode, memory like w_mode. */ dqw_mode, dqw_swap_mode, bnd_mode, /* 4- or 6-byte pointer operand */ f_mode, const_1_mode, /* v_mode for indirect branch opcodes. */ indir_v_mode, /* v_mode for stack-related opcodes. */ stack_v_mode, /* non-quad operand size depends on prefixes */ z_mode, /* 16-byte operand */ o_mode, /* registers like dq_mode, memory like b_mode. */ dqb_mode, /* registers like d_mode, memory like b_mode. */ db_mode, /* registers like d_mode, memory like w_mode. */ dw_mode, /* registers like dq_mode, memory like d_mode. */ dqd_mode, /* normal vex mode */ vex_mode, /* 128bit vex mode */ vex128_mode, /* 256bit vex mode */ vex256_mode, /* operand size depends on the VEX.W bit. */ vex_w_dq_mode, /* Similar to vex_w_dq_mode, with VSIB dword indices. */ vex_vsib_d_w_dq_mode, /* Similar to vex_vsib_d_w_dq_mode, with smaller memory. */ vex_vsib_d_w_d_mode, /* Similar to vex_w_dq_mode, with VSIB qword indices. */ vex_vsib_q_w_dq_mode, /* Similar to vex_vsib_q_w_dq_mode, with smaller memory. */ vex_vsib_q_w_d_mode, /* scalar, ignore vector length. */ scalar_mode, /* like d_mode, ignore vector length. */ d_scalar_mode, /* like d_swap_mode, ignore vector length. */ d_scalar_swap_mode, /* like q_mode, ignore vector length. */ q_scalar_mode, /* like q_swap_mode, ignore vector length. */ q_scalar_swap_mode, /* like vex_mode, ignore vector length. */ vex_scalar_mode, /* like vex_w_dq_mode, ignore vector length. */ vex_scalar_w_dq_mode, /* Static rounding. */ evex_rounding_mode, /* Supress all exceptions. */ evex_sae_mode, /* Mask register operand. */ mask_mode, /* Mask register operand. */ mask_bd_mode, es_reg, cs_reg, ss_reg, ds_reg, fs_reg, gs_reg, eAX_reg, eCX_reg, eDX_reg, eBX_reg, eSP_reg, eBP_reg, eSI_reg, eDI_reg, al_reg, cl_reg, dl_reg, bl_reg, ah_reg, ch_reg, dh_reg, bh_reg, ax_reg, cx_reg, dx_reg, bx_reg, sp_reg, bp_reg, si_reg, di_reg, rAX_reg, rCX_reg, rDX_reg, rBX_reg, rSP_reg, rBP_reg, rSI_reg, rDI_reg, z_mode_ax_reg, indir_dx_reg }; enum { FLOATCODE = 1, USE_REG_TABLE, USE_MOD_TABLE, USE_RM_TABLE, USE_PREFIX_TABLE, USE_X86_64_TABLE, USE_3BYTE_TABLE, USE_XOP_8F_TABLE, USE_VEX_C4_TABLE, USE_VEX_C5_TABLE, USE_VEX_LEN_TABLE, USE_VEX_W_TABLE, USE_EVEX_TABLE }; #define FLOAT NULL, { { NULL, FLOATCODE } }, 0 #define DIS386(T, I) NULL, { { NULL, (T) }, { NULL, (I) } }, 0 #define DIS386_PREFIX(T, I, P) NULL, { { NULL, (T) }, { NULL, (I) } }, P #define REG_TABLE(I) DIS386 (USE_REG_TABLE, (I)) #define MOD_TABLE(I) DIS386 (USE_MOD_TABLE, (I)) #define RM_TABLE(I) DIS386 (USE_RM_TABLE, (I)) #define PREFIX_TABLE(I) DIS386 (USE_PREFIX_TABLE, (I)) #define X86_64_TABLE(I) DIS386 (USE_X86_64_TABLE, (I)) #define THREE_BYTE_TABLE(I) DIS386 (USE_3BYTE_TABLE, (I)) #define THREE_BYTE_TABLE_PREFIX(I, P) DIS386_PREFIX (USE_3BYTE_TABLE, (I), P) #define XOP_8F_TABLE(I) DIS386 (USE_XOP_8F_TABLE, (I)) #define VEX_C4_TABLE(I) DIS386 (USE_VEX_C4_TABLE, (I)) #define VEX_C5_TABLE(I) DIS386 (USE_VEX_C5_TABLE, (I)) #define VEX_LEN_TABLE(I) DIS386 (USE_VEX_LEN_TABLE, (I)) #define VEX_W_TABLE(I) DIS386 (USE_VEX_W_TABLE, (I)) #define EVEX_TABLE(I) DIS386 (USE_EVEX_TABLE, (I)) enum { REG_80 = 0, REG_81, REG_83, REG_8F, REG_C0, REG_C1, REG_C6, REG_C7, REG_D0, REG_D1, REG_D2, REG_D3, REG_F6, REG_F7, REG_FE, REG_FF, REG_0F00, REG_0F01, REG_0F0D, REG_0F18, REG_0F71, REG_0F72, REG_0F73, REG_0FA6, REG_0FA7, REG_0FAE, REG_0FBA, REG_0FC7, REG_VEX_0F71, REG_VEX_0F72, REG_VEX_0F73, REG_VEX_0FAE, REG_VEX_0F38F3, REG_XOP_LWPCB, REG_XOP_LWP, REG_XOP_TBM_01, REG_XOP_TBM_02, REG_EVEX_0F71, REG_EVEX_0F72, REG_EVEX_0F73, REG_EVEX_0F38C6, REG_EVEX_0F38C7 }; enum { MOD_8D = 0, MOD_C6_REG_7, MOD_C7_REG_7, MOD_FF_REG_3, MOD_FF_REG_5, MOD_0F01_REG_0, MOD_0F01_REG_1, MOD_0F01_REG_2, MOD_0F01_REG_3, MOD_0F01_REG_5, MOD_0F01_REG_7, MOD_0F12_PREFIX_0, MOD_0F13, MOD_0F16_PREFIX_0, MOD_0F17, MOD_0F18_REG_0, MOD_0F18_REG_1, MOD_0F18_REG_2, MOD_0F18_REG_3, MOD_0F18_REG_4, MOD_0F18_REG_5, MOD_0F18_REG_6, MOD_0F18_REG_7, MOD_0F1A_PREFIX_0, MOD_0F1B_PREFIX_0, MOD_0F1B_PREFIX_1, MOD_0F24, MOD_0F26, MOD_0F2B_PREFIX_0, MOD_0F2B_PREFIX_1, MOD_0F2B_PREFIX_2, MOD_0F2B_PREFIX_3, MOD_0F51, MOD_0F71_REG_2, MOD_0F71_REG_4, MOD_0F71_REG_6, MOD_0F72_REG_2, MOD_0F72_REG_4, MOD_0F72_REG_6, MOD_0F73_REG_2, MOD_0F73_REG_3, MOD_0F73_REG_6, MOD_0F73_REG_7, MOD_0FAE_REG_0, MOD_0FAE_REG_1, MOD_0FAE_REG_2, MOD_0FAE_REG_3, MOD_0FAE_REG_4, MOD_0FAE_REG_5, MOD_0FAE_REG_6, MOD_0FAE_REG_7, MOD_0FB2, MOD_0FB4, MOD_0FB5, MOD_0FC3, MOD_0FC7_REG_3, MOD_0FC7_REG_4, MOD_0FC7_REG_5, MOD_0FC7_REG_6, MOD_0FC7_REG_7, MOD_0FD7, MOD_0FE7_PREFIX_2, MOD_0FF0_PREFIX_3, MOD_0F382A_PREFIX_2, MOD_62_32BIT, MOD_C4_32BIT, MOD_C5_32BIT, MOD_VEX_0F12_PREFIX_0, MOD_VEX_0F13, MOD_VEX_0F16_PREFIX_0, MOD_VEX_0F17, MOD_VEX_0F2B, MOD_VEX_W_0_0F41_P_0_LEN_1, MOD_VEX_W_1_0F41_P_0_LEN_1, MOD_VEX_W_0_0F41_P_2_LEN_1, MOD_VEX_W_1_0F41_P_2_LEN_1, MOD_VEX_W_0_0F42_P_0_LEN_1, MOD_VEX_W_1_0F42_P_0_LEN_1, MOD_VEX_W_0_0F42_P_2_LEN_1, MOD_VEX_W_1_0F42_P_2_LEN_1, MOD_VEX_W_0_0F44_P_0_LEN_1, MOD_VEX_W_1_0F44_P_0_LEN_1, MOD_VEX_W_0_0F44_P_2_LEN_1, MOD_VEX_W_1_0F44_P_2_LEN_1, MOD_VEX_W_0_0F45_P_0_LEN_1, MOD_VEX_W_1_0F45_P_0_LEN_1, MOD_VEX_W_0_0F45_P_2_LEN_1, MOD_VEX_W_1_0F45_P_2_LEN_1, MOD_VEX_W_0_0F46_P_0_LEN_1, MOD_VEX_W_1_0F46_P_0_LEN_1, MOD_VEX_W_0_0F46_P_2_LEN_1, MOD_VEX_W_1_0F46_P_2_LEN_1, MOD_VEX_W_0_0F47_P_0_LEN_1, MOD_VEX_W_1_0F47_P_0_LEN_1, MOD_VEX_W_0_0F47_P_2_LEN_1, MOD_VEX_W_1_0F47_P_2_LEN_1, MOD_VEX_W_0_0F4A_P_0_LEN_1, MOD_VEX_W_1_0F4A_P_0_LEN_1, MOD_VEX_W_0_0F4A_P_2_LEN_1, MOD_VEX_W_1_0F4A_P_2_LEN_1, MOD_VEX_W_0_0F4B_P_0_LEN_1, MOD_VEX_W_1_0F4B_P_0_LEN_1, MOD_VEX_W_0_0F4B_P_2_LEN_1, MOD_VEX_0F50, MOD_VEX_0F71_REG_2, MOD_VEX_0F71_REG_4, MOD_VEX_0F71_REG_6, MOD_VEX_0F72_REG_2, MOD_VEX_0F72_REG_4, MOD_VEX_0F72_REG_6, MOD_VEX_0F73_REG_2, MOD_VEX_0F73_REG_3, MOD_VEX_0F73_REG_6, MOD_VEX_0F73_REG_7, MOD_VEX_W_0_0F91_P_0_LEN_0, MOD_VEX_W_1_0F91_P_0_LEN_0, MOD_VEX_W_0_0F91_P_2_LEN_0, MOD_VEX_W_1_0F91_P_2_LEN_0, MOD_VEX_W_0_0F92_P_0_LEN_0, MOD_VEX_W_0_0F92_P_2_LEN_0, MOD_VEX_W_0_0F92_P_3_LEN_0, MOD_VEX_W_1_0F92_P_3_LEN_0, MOD_VEX_W_0_0F93_P_0_LEN_0, MOD_VEX_W_0_0F93_P_2_LEN_0, MOD_VEX_W_0_0F93_P_3_LEN_0, MOD_VEX_W_1_0F93_P_3_LEN_0, MOD_VEX_W_0_0F98_P_0_LEN_0, MOD_VEX_W_1_0F98_P_0_LEN_0, MOD_VEX_W_0_0F98_P_2_LEN_0, MOD_VEX_W_1_0F98_P_2_LEN_0, MOD_VEX_W_0_0F99_P_0_LEN_0, MOD_VEX_W_1_0F99_P_0_LEN_0, MOD_VEX_W_0_0F99_P_2_LEN_0, MOD_VEX_W_1_0F99_P_2_LEN_0, MOD_VEX_0FAE_REG_2, MOD_VEX_0FAE_REG_3, MOD_VEX_0FD7_PREFIX_2, MOD_VEX_0FE7_PREFIX_2, MOD_VEX_0FF0_PREFIX_3, MOD_VEX_0F381A_PREFIX_2, MOD_VEX_0F382A_PREFIX_2, MOD_VEX_0F382C_PREFIX_2, MOD_VEX_0F382D_PREFIX_2, MOD_VEX_0F382E_PREFIX_2, MOD_VEX_0F382F_PREFIX_2, MOD_VEX_0F385A_PREFIX_2, MOD_VEX_0F388C_PREFIX_2, MOD_VEX_0F388E_PREFIX_2, MOD_VEX_W_0_0F3A30_P_2_LEN_0, MOD_VEX_W_1_0F3A30_P_2_LEN_0, MOD_VEX_W_0_0F3A31_P_2_LEN_0, MOD_VEX_W_1_0F3A31_P_2_LEN_0, MOD_VEX_W_0_0F3A32_P_2_LEN_0, MOD_VEX_W_1_0F3A32_P_2_LEN_0, MOD_VEX_W_0_0F3A33_P_2_LEN_0, MOD_VEX_W_1_0F3A33_P_2_LEN_0, MOD_EVEX_0F10_PREFIX_1, MOD_EVEX_0F10_PREFIX_3, MOD_EVEX_0F11_PREFIX_1, MOD_EVEX_0F11_PREFIX_3, MOD_EVEX_0F12_PREFIX_0, MOD_EVEX_0F16_PREFIX_0, MOD_EVEX_0F38C6_REG_1, MOD_EVEX_0F38C6_REG_2, MOD_EVEX_0F38C6_REG_5, MOD_EVEX_0F38C6_REG_6, MOD_EVEX_0F38C7_REG_1, MOD_EVEX_0F38C7_REG_2, MOD_EVEX_0F38C7_REG_5, MOD_EVEX_0F38C7_REG_6 }; enum { RM_C6_REG_7 = 0, RM_C7_REG_7, RM_0F01_REG_0, RM_0F01_REG_1, RM_0F01_REG_2, RM_0F01_REG_3, RM_0F01_REG_5, RM_0F01_REG_7, RM_0FAE_REG_5, RM_0FAE_REG_6, RM_0FAE_REG_7 }; enum { PREFIX_90 = 0, PREFIX_0F10, PREFIX_0F11, PREFIX_0F12, PREFIX_0F16, PREFIX_0F1A, PREFIX_0F1B, PREFIX_0F2A, PREFIX_0F2B, PREFIX_0F2C, PREFIX_0F2D, PREFIX_0F2E, PREFIX_0F2F, PREFIX_0F51, PREFIX_0F52, PREFIX_0F53, PREFIX_0F58, PREFIX_0F59, PREFIX_0F5A, PREFIX_0F5B, PREFIX_0F5C, PREFIX_0F5D, PREFIX_0F5E, PREFIX_0F5F, PREFIX_0F60, PREFIX_0F61, PREFIX_0F62, PREFIX_0F6C, PREFIX_0F6D, PREFIX_0F6F, PREFIX_0F70, PREFIX_0F73_REG_3, PREFIX_0F73_REG_7, PREFIX_0F78, PREFIX_0F79, PREFIX_0F7C, PREFIX_0F7D, PREFIX_0F7E, PREFIX_0F7F, PREFIX_0FAE_REG_0, PREFIX_0FAE_REG_1, PREFIX_0FAE_REG_2, PREFIX_0FAE_REG_3, PREFIX_MOD_0_0FAE_REG_4, PREFIX_MOD_3_0FAE_REG_4, PREFIX_0FAE_REG_6, PREFIX_0FAE_REG_7, PREFIX_0FB8, PREFIX_0FBC, PREFIX_0FBD, PREFIX_0FC2, PREFIX_MOD_0_0FC3, PREFIX_MOD_0_0FC7_REG_6, PREFIX_MOD_3_0FC7_REG_6, PREFIX_MOD_3_0FC7_REG_7, PREFIX_0FD0, PREFIX_0FD6, PREFIX_0FE6, PREFIX_0FE7, PREFIX_0FF0, PREFIX_0FF7, PREFIX_0F3810, PREFIX_0F3814, PREFIX_0F3815, PREFIX_0F3817, PREFIX_0F3820, PREFIX_0F3821, PREFIX_0F3822, PREFIX_0F3823, PREFIX_0F3824, PREFIX_0F3825, PREFIX_0F3828, PREFIX_0F3829, PREFIX_0F382A, PREFIX_0F382B, PREFIX_0F3830, PREFIX_0F3831, PREFIX_0F3832, PREFIX_0F3833, PREFIX_0F3834, PREFIX_0F3835, PREFIX_0F3837, PREFIX_0F3838, PREFIX_0F3839, PREFIX_0F383A, PREFIX_0F383B, PREFIX_0F383C, PREFIX_0F383D, PREFIX_0F383E, PREFIX_0F383F, PREFIX_0F3840, PREFIX_0F3841, PREFIX_0F3880, PREFIX_0F3881, PREFIX_0F3882, PREFIX_0F38C8, PREFIX_0F38C9, PREFIX_0F38CA, PREFIX_0F38CB, PREFIX_0F38CC, PREFIX_0F38CD, PREFIX_0F38DB, PREFIX_0F38DC, PREFIX_0F38DD, PREFIX_0F38DE, PREFIX_0F38DF, PREFIX_0F38F0, PREFIX_0F38F1, PREFIX_0F38F6, PREFIX_0F3A08, PREFIX_0F3A09, PREFIX_0F3A0A, PREFIX_0F3A0B, PREFIX_0F3A0C, PREFIX_0F3A0D, PREFIX_0F3A0E, PREFIX_0F3A14, PREFIX_0F3A15, PREFIX_0F3A16, PREFIX_0F3A17, PREFIX_0F3A20, PREFIX_0F3A21, PREFIX_0F3A22, PREFIX_0F3A40, PREFIX_0F3A41, PREFIX_0F3A42, PREFIX_0F3A44, PREFIX_0F3A60, PREFIX_0F3A61, PREFIX_0F3A62, PREFIX_0F3A63, PREFIX_0F3ACC, PREFIX_0F3ADF, PREFIX_VEX_0F10, PREFIX_VEX_0F11, PREFIX_VEX_0F12, PREFIX_VEX_0F16, PREFIX_VEX_0F2A, PREFIX_VEX_0F2C, PREFIX_VEX_0F2D, PREFIX_VEX_0F2E, PREFIX_VEX_0F2F, PREFIX_VEX_0F41, PREFIX_VEX_0F42, PREFIX_VEX_0F44, PREFIX_VEX_0F45, PREFIX_VEX_0F46, PREFIX_VEX_0F47, PREFIX_VEX_0F4A, PREFIX_VEX_0F4B, PREFIX_VEX_0F51, PREFIX_VEX_0F52, PREFIX_VEX_0F53, PREFIX_VEX_0F58, PREFIX_VEX_0F59, PREFIX_VEX_0F5A, PREFIX_VEX_0F5B, PREFIX_VEX_0F5C, PREFIX_VEX_0F5D, PREFIX_VEX_0F5E, PREFIX_VEX_0F5F, PREFIX_VEX_0F60, PREFIX_VEX_0F61, PREFIX_VEX_0F62, PREFIX_VEX_0F63, PREFIX_VEX_0F64, PREFIX_VEX_0F65, PREFIX_VEX_0F66, PREFIX_VEX_0F67, PREFIX_VEX_0F68, PREFIX_VEX_0F69, PREFIX_VEX_0F6A, PREFIX_VEX_0F6B, PREFIX_VEX_0F6C, PREFIX_VEX_0F6D, PREFIX_VEX_0F6E, PREFIX_VEX_0F6F, PREFIX_VEX_0F70, PREFIX_VEX_0F71_REG_2, PREFIX_VEX_0F71_REG_4, PREFIX_VEX_0F71_REG_6, PREFIX_VEX_0F72_REG_2, PREFIX_VEX_0F72_REG_4, PREFIX_VEX_0F72_REG_6, PREFIX_VEX_0F73_REG_2, PREFIX_VEX_0F73_REG_3, PREFIX_VEX_0F73_REG_6, PREFIX_VEX_0F73_REG_7, PREFIX_VEX_0F74, PREFIX_VEX_0F75, PREFIX_VEX_0F76, PREFIX_VEX_0F77, PREFIX_VEX_0F7C, PREFIX_VEX_0F7D, PREFIX_VEX_0F7E, PREFIX_VEX_0F7F, PREFIX_VEX_0F90, PREFIX_VEX_0F91, PREFIX_VEX_0F92, PREFIX_VEX_0F93, PREFIX_VEX_0F98, PREFIX_VEX_0F99, PREFIX_VEX_0FC2, PREFIX_VEX_0FC4, PREFIX_VEX_0FC5, PREFIX_VEX_0FD0, PREFIX_VEX_0FD1, PREFIX_VEX_0FD2, PREFIX_VEX_0FD3, PREFIX_VEX_0FD4, PREFIX_VEX_0FD5, PREFIX_VEX_0FD6, PREFIX_VEX_0FD7, PREFIX_VEX_0FD8, PREFIX_VEX_0FD9, PREFIX_VEX_0FDA, PREFIX_VEX_0FDB, PREFIX_VEX_0FDC, PREFIX_VEX_0FDD, PREFIX_VEX_0FDE, PREFIX_VEX_0FDF, PREFIX_VEX_0FE0, PREFIX_VEX_0FE1, PREFIX_VEX_0FE2, PREFIX_VEX_0FE3, PREFIX_VEX_0FE4, PREFIX_VEX_0FE5, PREFIX_VEX_0FE6, PREFIX_VEX_0FE7, PREFIX_VEX_0FE8, PREFIX_VEX_0FE9, PREFIX_VEX_0FEA, PREFIX_VEX_0FEB, PREFIX_VEX_0FEC, PREFIX_VEX_0FED, PREFIX_VEX_0FEE, PREFIX_VEX_0FEF, PREFIX_VEX_0FF0, PREFIX_VEX_0FF1, PREFIX_VEX_0FF2, PREFIX_VEX_0FF3, PREFIX_VEX_0FF4, PREFIX_VEX_0FF5, PREFIX_VEX_0FF6, PREFIX_VEX_0FF7, PREFIX_VEX_0FF8, PREFIX_VEX_0FF9, PREFIX_VEX_0FFA, PREFIX_VEX_0FFB, PREFIX_VEX_0FFC, PREFIX_VEX_0FFD, PREFIX_VEX_0FFE, PREFIX_VEX_0F3800, PREFIX_VEX_0F3801, PREFIX_VEX_0F3802, PREFIX_VEX_0F3803, PREFIX_VEX_0F3804, PREFIX_VEX_0F3805, PREFIX_VEX_0F3806, PREFIX_VEX_0F3807, PREFIX_VEX_0F3808, PREFIX_VEX_0F3809, PREFIX_VEX_0F380A, PREFIX_VEX_0F380B, PREFIX_VEX_0F380C, PREFIX_VEX_0F380D, PREFIX_VEX_0F380E, PREFIX_VEX_0F380F, PREFIX_VEX_0F3813, PREFIX_VEX_0F3816, PREFIX_VEX_0F3817, PREFIX_VEX_0F3818, PREFIX_VEX_0F3819, PREFIX_VEX_0F381A, PREFIX_VEX_0F381C, PREFIX_VEX_0F381D, PREFIX_VEX_0F381E, PREFIX_VEX_0F3820, PREFIX_VEX_0F3821, PREFIX_VEX_0F3822, PREFIX_VEX_0F3823, PREFIX_VEX_0F3824, PREFIX_VEX_0F3825, PREFIX_VEX_0F3828, PREFIX_VEX_0F3829, PREFIX_VEX_0F382A, PREFIX_VEX_0F382B, PREFIX_VEX_0F382C, PREFIX_VEX_0F382D, PREFIX_VEX_0F382E, PREFIX_VEX_0F382F, PREFIX_VEX_0F3830, PREFIX_VEX_0F3831, PREFIX_VEX_0F3832, PREFIX_VEX_0F3833, PREFIX_VEX_0F3834, PREFIX_VEX_0F3835, PREFIX_VEX_0F3836, PREFIX_VEX_0F3837, PREFIX_VEX_0F3838, PREFIX_VEX_0F3839, PREFIX_VEX_0F383A, PREFIX_VEX_0F383B, PREFIX_VEX_0F383C, PREFIX_VEX_0F383D, PREFIX_VEX_0F383E, PREFIX_VEX_0F383F, PREFIX_VEX_0F3840, PREFIX_VEX_0F3841, PREFIX_VEX_0F3845, PREFIX_VEX_0F3846, PREFIX_VEX_0F3847, PREFIX_VEX_0F3858, PREFIX_VEX_0F3859, PREFIX_VEX_0F385A, PREFIX_VEX_0F3878, PREFIX_VEX_0F3879, PREFIX_VEX_0F388C, PREFIX_VEX_0F388E, PREFIX_VEX_0F3890, PREFIX_VEX_0F3891, PREFIX_VEX_0F3892, PREFIX_VEX_0F3893, PREFIX_VEX_0F3896, PREFIX_VEX_0F3897, PREFIX_VEX_0F3898, PREFIX_VEX_0F3899, PREFIX_VEX_0F389A, PREFIX_VEX_0F389B, PREFIX_VEX_0F389C, PREFIX_VEX_0F389D, PREFIX_VEX_0F389E, PREFIX_VEX_0F389F, PREFIX_VEX_0F38A6, PREFIX_VEX_0F38A7, PREFIX_VEX_0F38A8, PREFIX_VEX_0F38A9, PREFIX_VEX_0F38AA, PREFIX_VEX_0F38AB, PREFIX_VEX_0F38AC, PREFIX_VEX_0F38AD, PREFIX_VEX_0F38AE, PREFIX_VEX_0F38AF, PREFIX_VEX_0F38B6, PREFIX_VEX_0F38B7, PREFIX_VEX_0F38B8, PREFIX_VEX_0F38B9, PREFIX_VEX_0F38BA, PREFIX_VEX_0F38BB, PREFIX_VEX_0F38BC, PREFIX_VEX_0F38BD, PREFIX_VEX_0F38BE, PREFIX_VEX_0F38BF, PREFIX_VEX_0F38DB, PREFIX_VEX_0F38DC, PREFIX_VEX_0F38DD, PREFIX_VEX_0F38DE, PREFIX_VEX_0F38DF, PREFIX_VEX_0F38F2, PREFIX_VEX_0F38F3_REG_1, PREFIX_VEX_0F38F3_REG_2, PREFIX_VEX_0F38F3_REG_3, PREFIX_VEX_0F38F5, PREFIX_VEX_0F38F6, PREFIX_VEX_0F38F7, PREFIX_VEX_0F3A00, PREFIX_VEX_0F3A01, PREFIX_VEX_0F3A02, PREFIX_VEX_0F3A04, PREFIX_VEX_0F3A05, PREFIX_VEX_0F3A06, PREFIX_VEX_0F3A08, PREFIX_VEX_0F3A09, PREFIX_VEX_0F3A0A, PREFIX_VEX_0F3A0B, PREFIX_VEX_0F3A0C, PREFIX_VEX_0F3A0D, PREFIX_VEX_0F3A0E, PREFIX_VEX_0F3A0F, PREFIX_VEX_0F3A14, PREFIX_VEX_0F3A15, PREFIX_VEX_0F3A16, PREFIX_VEX_0F3A17, PREFIX_VEX_0F3A18, PREFIX_VEX_0F3A19, PREFIX_VEX_0F3A1D, PREFIX_VEX_0F3A20, PREFIX_VEX_0F3A21, PREFIX_VEX_0F3A22, PREFIX_VEX_0F3A30, PREFIX_VEX_0F3A31, PREFIX_VEX_0F3A32, PREFIX_VEX_0F3A33, PREFIX_VEX_0F3A38, PREFIX_VEX_0F3A39, PREFIX_VEX_0F3A40, PREFIX_VEX_0F3A41, PREFIX_VEX_0F3A42, PREFIX_VEX_0F3A44, PREFIX_VEX_0F3A46, PREFIX_VEX_0F3A48, PREFIX_VEX_0F3A49, PREFIX_VEX_0F3A4A, PREFIX_VEX_0F3A4B, PREFIX_VEX_0F3A4C, PREFIX_VEX_0F3A5C, PREFIX_VEX_0F3A5D, PREFIX_VEX_0F3A5E, PREFIX_VEX_0F3A5F, PREFIX_VEX_0F3A60, PREFIX_VEX_0F3A61, PREFIX_VEX_0F3A62, PREFIX_VEX_0F3A63, PREFIX_VEX_0F3A68, PREFIX_VEX_0F3A69, PREFIX_VEX_0F3A6A, PREFIX_VEX_0F3A6B, PREFIX_VEX_0F3A6C, PREFIX_VEX_0F3A6D, PREFIX_VEX_0F3A6E, PREFIX_VEX_0F3A6F, PREFIX_VEX_0F3A78, PREFIX_VEX_0F3A79, PREFIX_VEX_0F3A7A, PREFIX_VEX_0F3A7B, PREFIX_VEX_0F3A7C, PREFIX_VEX_0F3A7D, PREFIX_VEX_0F3A7E, PREFIX_VEX_0F3A7F, PREFIX_VEX_0F3ADF, PREFIX_VEX_0F3AF0, PREFIX_EVEX_0F10, PREFIX_EVEX_0F11, PREFIX_EVEX_0F12, PREFIX_EVEX_0F13, PREFIX_EVEX_0F14, PREFIX_EVEX_0F15, PREFIX_EVEX_0F16, PREFIX_EVEX_0F17, PREFIX_EVEX_0F28, PREFIX_EVEX_0F29, PREFIX_EVEX_0F2A, PREFIX_EVEX_0F2B, PREFIX_EVEX_0F2C, PREFIX_EVEX_0F2D, PREFIX_EVEX_0F2E, PREFIX_EVEX_0F2F, PREFIX_EVEX_0F51, PREFIX_EVEX_0F54, PREFIX_EVEX_0F55, PREFIX_EVEX_0F56, PREFIX_EVEX_0F57, PREFIX_EVEX_0F58, PREFIX_EVEX_0F59, PREFIX_EVEX_0F5A, PREFIX_EVEX_0F5B, PREFIX_EVEX_0F5C, PREFIX_EVEX_0F5D, PREFIX_EVEX_0F5E, PREFIX_EVEX_0F5F, PREFIX_EVEX_0F60, PREFIX_EVEX_0F61, PREFIX_EVEX_0F62, PREFIX_EVEX_0F63, PREFIX_EVEX_0F64, PREFIX_EVEX_0F65, PREFIX_EVEX_0F66, PREFIX_EVEX_0F67, PREFIX_EVEX_0F68, PREFIX_EVEX_0F69, PREFIX_EVEX_0F6A, PREFIX_EVEX_0F6B, PREFIX_EVEX_0F6C, PREFIX_EVEX_0F6D, PREFIX_EVEX_0F6E, PREFIX_EVEX_0F6F, PREFIX_EVEX_0F70, PREFIX_EVEX_0F71_REG_2, PREFIX_EVEX_0F71_REG_4, PREFIX_EVEX_0F71_REG_6, PREFIX_EVEX_0F72_REG_0, PREFIX_EVEX_0F72_REG_1, PREFIX_EVEX_0F72_REG_2, PREFIX_EVEX_0F72_REG_4, PREFIX_EVEX_0F72_REG_6, PREFIX_EVEX_0F73_REG_2, PREFIX_EVEX_0F73_REG_3, PREFIX_EVEX_0F73_REG_6, PREFIX_EVEX_0F73_REG_7, PREFIX_EVEX_0F74, PREFIX_EVEX_0F75, PREFIX_EVEX_0F76, PREFIX_EVEX_0F78, PREFIX_EVEX_0F79, PREFIX_EVEX_0F7A, PREFIX_EVEX_0F7B, PREFIX_EVEX_0F7E, PREFIX_EVEX_0F7F, PREFIX_EVEX_0FC2, PREFIX_EVEX_0FC4, PREFIX_EVEX_0FC5, PREFIX_EVEX_0FC6, PREFIX_EVEX_0FD1, PREFIX_EVEX_0FD2, PREFIX_EVEX_0FD3, PREFIX_EVEX_0FD4, PREFIX_EVEX_0FD5, PREFIX_EVEX_0FD6, PREFIX_EVEX_0FD8, PREFIX_EVEX_0FD9, PREFIX_EVEX_0FDA, PREFIX_EVEX_0FDB, PREFIX_EVEX_0FDC, PREFIX_EVEX_0FDD, PREFIX_EVEX_0FDE, PREFIX_EVEX_0FDF, PREFIX_EVEX_0FE0, PREFIX_EVEX_0FE1, PREFIX_EVEX_0FE2, PREFIX_EVEX_0FE3, PREFIX_EVEX_0FE4, PREFIX_EVEX_0FE5, PREFIX_EVEX_0FE6, PREFIX_EVEX_0FE7, PREFIX_EVEX_0FE8, PREFIX_EVEX_0FE9, PREFIX_EVEX_0FEA, PREFIX_EVEX_0FEB, PREFIX_EVEX_0FEC, PREFIX_EVEX_0FED, PREFIX_EVEX_0FEE, PREFIX_EVEX_0FEF, PREFIX_EVEX_0FF1, PREFIX_EVEX_0FF2, PREFIX_EVEX_0FF3, PREFIX_EVEX_0FF4, PREFIX_EVEX_0FF5, PREFIX_EVEX_0FF6, PREFIX_EVEX_0FF8, PREFIX_EVEX_0FF9, PREFIX_EVEX_0FFA, PREFIX_EVEX_0FFB, PREFIX_EVEX_0FFC, PREFIX_EVEX_0FFD, PREFIX_EVEX_0FFE, PREFIX_EVEX_0F3800, PREFIX_EVEX_0F3804, PREFIX_EVEX_0F380B, PREFIX_EVEX_0F380C, PREFIX_EVEX_0F380D, PREFIX_EVEX_0F3810, PREFIX_EVEX_0F3811, PREFIX_EVEX_0F3812, PREFIX_EVEX_0F3813, PREFIX_EVEX_0F3814, PREFIX_EVEX_0F3815, PREFIX_EVEX_0F3816, PREFIX_EVEX_0F3818, PREFIX_EVEX_0F3819, PREFIX_EVEX_0F381A, PREFIX_EVEX_0F381B, PREFIX_EVEX_0F381C, PREFIX_EVEX_0F381D, PREFIX_EVEX_0F381E, PREFIX_EVEX_0F381F, PREFIX_EVEX_0F3820, PREFIX_EVEX_0F3821, PREFIX_EVEX_0F3822, PREFIX_EVEX_0F3823, PREFIX_EVEX_0F3824, PREFIX_EVEX_0F3825, PREFIX_EVEX_0F3826, PREFIX_EVEX_0F3827, PREFIX_EVEX_0F3828, PREFIX_EVEX_0F3829, PREFIX_EVEX_0F382A, PREFIX_EVEX_0F382B, PREFIX_EVEX_0F382C, PREFIX_EVEX_0F382D, PREFIX_EVEX_0F3830, PREFIX_EVEX_0F3831, PREFIX_EVEX_0F3832, PREFIX_EVEX_0F3833, PREFIX_EVEX_0F3834, PREFIX_EVEX_0F3835, PREFIX_EVEX_0F3836, PREFIX_EVEX_0F3837, PREFIX_EVEX_0F3838, PREFIX_EVEX_0F3839, PREFIX_EVEX_0F383A, PREFIX_EVEX_0F383B, PREFIX_EVEX_0F383C, PREFIX_EVEX_0F383D, PREFIX_EVEX_0F383E, PREFIX_EVEX_0F383F, PREFIX_EVEX_0F3840, PREFIX_EVEX_0F3842, PREFIX_EVEX_0F3843, PREFIX_EVEX_0F3844, PREFIX_EVEX_0F3845, PREFIX_EVEX_0F3846, PREFIX_EVEX_0F3847, PREFIX_EVEX_0F384C, PREFIX_EVEX_0F384D, PREFIX_EVEX_0F384E, PREFIX_EVEX_0F384F, PREFIX_EVEX_0F3852, PREFIX_EVEX_0F3853, PREFIX_EVEX_0F3855, PREFIX_EVEX_0F3858, PREFIX_EVEX_0F3859, PREFIX_EVEX_0F385A, PREFIX_EVEX_0F385B, PREFIX_EVEX_0F3864, PREFIX_EVEX_0F3865, PREFIX_EVEX_0F3866, PREFIX_EVEX_0F3875, PREFIX_EVEX_0F3876, PREFIX_EVEX_0F3877, PREFIX_EVEX_0F3878, PREFIX_EVEX_0F3879, PREFIX_EVEX_0F387A, PREFIX_EVEX_0F387B, PREFIX_EVEX_0F387C, PREFIX_EVEX_0F387D, PREFIX_EVEX_0F387E, PREFIX_EVEX_0F387F, PREFIX_EVEX_0F3883, PREFIX_EVEX_0F3888, PREFIX_EVEX_0F3889, PREFIX_EVEX_0F388A, PREFIX_EVEX_0F388B, PREFIX_EVEX_0F388D, PREFIX_EVEX_0F3890, PREFIX_EVEX_0F3891, PREFIX_EVEX_0F3892, PREFIX_EVEX_0F3893, PREFIX_EVEX_0F3896, PREFIX_EVEX_0F3897, PREFIX_EVEX_0F3898, PREFIX_EVEX_0F3899, PREFIX_EVEX_0F389A, PREFIX_EVEX_0F389B, PREFIX_EVEX_0F389C, PREFIX_EVEX_0F389D, PREFIX_EVEX_0F389E, PREFIX_EVEX_0F389F, PREFIX_EVEX_0F38A0, PREFIX_EVEX_0F38A1, PREFIX_EVEX_0F38A2, PREFIX_EVEX_0F38A3, PREFIX_EVEX_0F38A6, PREFIX_EVEX_0F38A7, PREFIX_EVEX_0F38A8, PREFIX_EVEX_0F38A9, PREFIX_EVEX_0F38AA, PREFIX_EVEX_0F38AB, PREFIX_EVEX_0F38AC, PREFIX_EVEX_0F38AD, PREFIX_EVEX_0F38AE, PREFIX_EVEX_0F38AF, PREFIX_EVEX_0F38B4, PREFIX_EVEX_0F38B5, PREFIX_EVEX_0F38B6, PREFIX_EVEX_0F38B7, PREFIX_EVEX_0F38B8, PREFIX_EVEX_0F38B9, PREFIX_EVEX_0F38BA, PREFIX_EVEX_0F38BB, PREFIX_EVEX_0F38BC, PREFIX_EVEX_0F38BD, PREFIX_EVEX_0F38BE, PREFIX_EVEX_0F38BF, PREFIX_EVEX_0F38C4, PREFIX_EVEX_0F38C6_REG_1, PREFIX_EVEX_0F38C6_REG_2, PREFIX_EVEX_0F38C6_REG_5, PREFIX_EVEX_0F38C6_REG_6, PREFIX_EVEX_0F38C7_REG_1, PREFIX_EVEX_0F38C7_REG_2, PREFIX_EVEX_0F38C7_REG_5, PREFIX_EVEX_0F38C7_REG_6, PREFIX_EVEX_0F38C8, PREFIX_EVEX_0F38CA, PREFIX_EVEX_0F38CB, PREFIX_EVEX_0F38CC, PREFIX_EVEX_0F38CD, PREFIX_EVEX_0F3A00, PREFIX_EVEX_0F3A01, PREFIX_EVEX_0F3A03, PREFIX_EVEX_0F3A04, PREFIX_EVEX_0F3A05, PREFIX_EVEX_0F3A08, PREFIX_EVEX_0F3A09, PREFIX_EVEX_0F3A0A, PREFIX_EVEX_0F3A0B, PREFIX_EVEX_0F3A0F, PREFIX_EVEX_0F3A14, PREFIX_EVEX_0F3A15, PREFIX_EVEX_0F3A16, PREFIX_EVEX_0F3A17, PREFIX_EVEX_0F3A18, PREFIX_EVEX_0F3A19, PREFIX_EVEX_0F3A1A, PREFIX_EVEX_0F3A1B, PREFIX_EVEX_0F3A1D, PREFIX_EVEX_0F3A1E, PREFIX_EVEX_0F3A1F, PREFIX_EVEX_0F3A20, PREFIX_EVEX_0F3A21, PREFIX_EVEX_0F3A22, PREFIX_EVEX_0F3A23, PREFIX_EVEX_0F3A25, PREFIX_EVEX_0F3A26, PREFIX_EVEX_0F3A27, PREFIX_EVEX_0F3A38, PREFIX_EVEX_0F3A39, PREFIX_EVEX_0F3A3A, PREFIX_EVEX_0F3A3B, PREFIX_EVEX_0F3A3E, PREFIX_EVEX_0F3A3F, PREFIX_EVEX_0F3A42, PREFIX_EVEX_0F3A43, PREFIX_EVEX_0F3A50, PREFIX_EVEX_0F3A51, PREFIX_EVEX_0F3A54, PREFIX_EVEX_0F3A55, PREFIX_EVEX_0F3A56, PREFIX_EVEX_0F3A57, PREFIX_EVEX_0F3A66, PREFIX_EVEX_0F3A67 }; enum { X86_64_06 = 0, X86_64_07, X86_64_0D, X86_64_16, X86_64_17, X86_64_1E, X86_64_1F, X86_64_27, X86_64_2F, X86_64_37, X86_64_3F, X86_64_60, X86_64_61, X86_64_62, X86_64_63, X86_64_6D, X86_64_6F, X86_64_82, X86_64_9A, X86_64_C4, X86_64_C5, X86_64_CE, X86_64_D4, X86_64_D5, X86_64_E8, X86_64_E9, X86_64_EA, X86_64_0F01_REG_0, X86_64_0F01_REG_1, X86_64_0F01_REG_2, X86_64_0F01_REG_3 }; enum { THREE_BYTE_0F38 = 0, THREE_BYTE_0F3A }; enum { XOP_08 = 0, XOP_09, XOP_0A }; enum { VEX_0F = 0, VEX_0F38, VEX_0F3A }; enum { EVEX_0F = 0, EVEX_0F38, EVEX_0F3A }; enum { VEX_LEN_0F10_P_1 = 0, VEX_LEN_0F10_P_3, VEX_LEN_0F11_P_1, VEX_LEN_0F11_P_3, VEX_LEN_0F12_P_0_M_0, VEX_LEN_0F12_P_0_M_1, VEX_LEN_0F12_P_2, VEX_LEN_0F13_M_0, VEX_LEN_0F16_P_0_M_0, VEX_LEN_0F16_P_0_M_1, VEX_LEN_0F16_P_2, VEX_LEN_0F17_M_0, VEX_LEN_0F2A_P_1, VEX_LEN_0F2A_P_3, VEX_LEN_0F2C_P_1, VEX_LEN_0F2C_P_3, VEX_LEN_0F2D_P_1, VEX_LEN_0F2D_P_3, VEX_LEN_0F2E_P_0, VEX_LEN_0F2E_P_2, VEX_LEN_0F2F_P_0, VEX_LEN_0F2F_P_2, VEX_LEN_0F41_P_0, VEX_LEN_0F41_P_2, VEX_LEN_0F42_P_0, VEX_LEN_0F42_P_2, VEX_LEN_0F44_P_0, VEX_LEN_0F44_P_2, VEX_LEN_0F45_P_0, VEX_LEN_0F45_P_2, VEX_LEN_0F46_P_0, VEX_LEN_0F46_P_2, VEX_LEN_0F47_P_0, VEX_LEN_0F47_P_2, VEX_LEN_0F4A_P_0, VEX_LEN_0F4A_P_2, VEX_LEN_0F4B_P_0, VEX_LEN_0F4B_P_2, VEX_LEN_0F51_P_1, VEX_LEN_0F51_P_3, VEX_LEN_0F52_P_1, VEX_LEN_0F53_P_1, VEX_LEN_0F58_P_1, VEX_LEN_0F58_P_3, VEX_LEN_0F59_P_1, VEX_LEN_0F59_P_3, VEX_LEN_0F5A_P_1, VEX_LEN_0F5A_P_3, VEX_LEN_0F5C_P_1, VEX_LEN_0F5C_P_3, VEX_LEN_0F5D_P_1, VEX_LEN_0F5D_P_3, VEX_LEN_0F5E_P_1, VEX_LEN_0F5E_P_3, VEX_LEN_0F5F_P_1, VEX_LEN_0F5F_P_3, VEX_LEN_0F6E_P_2, VEX_LEN_0F7E_P_1, VEX_LEN_0F7E_P_2, VEX_LEN_0F90_P_0, VEX_LEN_0F90_P_2, VEX_LEN_0F91_P_0, VEX_LEN_0F91_P_2, VEX_LEN_0F92_P_0, VEX_LEN_0F92_P_2, VEX_LEN_0F92_P_3, VEX_LEN_0F93_P_0, VEX_LEN_0F93_P_2, VEX_LEN_0F93_P_3, VEX_LEN_0F98_P_0, VEX_LEN_0F98_P_2, VEX_LEN_0F99_P_0, VEX_LEN_0F99_P_2, VEX_LEN_0FAE_R_2_M_0, VEX_LEN_0FAE_R_3_M_0, VEX_LEN_0FC2_P_1, VEX_LEN_0FC2_P_3, VEX_LEN_0FC4_P_2, VEX_LEN_0FC5_P_2, VEX_LEN_0FD6_P_2, VEX_LEN_0FF7_P_2, VEX_LEN_0F3816_P_2, VEX_LEN_0F3819_P_2, VEX_LEN_0F381A_P_2_M_0, VEX_LEN_0F3836_P_2, VEX_LEN_0F3841_P_2, VEX_LEN_0F385A_P_2_M_0, VEX_LEN_0F38DB_P_2, VEX_LEN_0F38DC_P_2, VEX_LEN_0F38DD_P_2, VEX_LEN_0F38DE_P_2, VEX_LEN_0F38DF_P_2, VEX_LEN_0F38F2_P_0, VEX_LEN_0F38F3_R_1_P_0, VEX_LEN_0F38F3_R_2_P_0, VEX_LEN_0F38F3_R_3_P_0, VEX_LEN_0F38F5_P_0, VEX_LEN_0F38F5_P_1, VEX_LEN_0F38F5_P_3, VEX_LEN_0F38F6_P_3, VEX_LEN_0F38F7_P_0, VEX_LEN_0F38F7_P_1, VEX_LEN_0F38F7_P_2, VEX_LEN_0F38F7_P_3, VEX_LEN_0F3A00_P_2, VEX_LEN_0F3A01_P_2, VEX_LEN_0F3A06_P_2, VEX_LEN_0F3A0A_P_2, VEX_LEN_0F3A0B_P_2, VEX_LEN_0F3A14_P_2, VEX_LEN_0F3A15_P_2, VEX_LEN_0F3A16_P_2, VEX_LEN_0F3A17_P_2, VEX_LEN_0F3A18_P_2, VEX_LEN_0F3A19_P_2, VEX_LEN_0F3A20_P_2, VEX_LEN_0F3A21_P_2, VEX_LEN_0F3A22_P_2, VEX_LEN_0F3A30_P_2, VEX_LEN_0F3A31_P_2, VEX_LEN_0F3A32_P_2, VEX_LEN_0F3A33_P_2, VEX_LEN_0F3A38_P_2, VEX_LEN_0F3A39_P_2, VEX_LEN_0F3A41_P_2, VEX_LEN_0F3A44_P_2, VEX_LEN_0F3A46_P_2, VEX_LEN_0F3A60_P_2, VEX_LEN_0F3A61_P_2, VEX_LEN_0F3A62_P_2, VEX_LEN_0F3A63_P_2, VEX_LEN_0F3A6A_P_2, VEX_LEN_0F3A6B_P_2, VEX_LEN_0F3A6E_P_2, VEX_LEN_0F3A6F_P_2, VEX_LEN_0F3A7A_P_2, VEX_LEN_0F3A7B_P_2, VEX_LEN_0F3A7E_P_2, VEX_LEN_0F3A7F_P_2, VEX_LEN_0F3ADF_P_2, VEX_LEN_0F3AF0_P_3, VEX_LEN_0FXOP_08_CC, VEX_LEN_0FXOP_08_CD, VEX_LEN_0FXOP_08_CE, VEX_LEN_0FXOP_08_CF, VEX_LEN_0FXOP_08_EC, VEX_LEN_0FXOP_08_ED, VEX_LEN_0FXOP_08_EE, VEX_LEN_0FXOP_08_EF, VEX_LEN_0FXOP_09_80, VEX_LEN_0FXOP_09_81 }; enum { VEX_W_0F10_P_0 = 0, VEX_W_0F10_P_1, VEX_W_0F10_P_2, VEX_W_0F10_P_3, VEX_W_0F11_P_0, VEX_W_0F11_P_1, VEX_W_0F11_P_2, VEX_W_0F11_P_3, VEX_W_0F12_P_0_M_0, VEX_W_0F12_P_0_M_1, VEX_W_0F12_P_1, VEX_W_0F12_P_2, VEX_W_0F12_P_3, VEX_W_0F13_M_0, VEX_W_0F14, VEX_W_0F15, VEX_W_0F16_P_0_M_0, VEX_W_0F16_P_0_M_1, VEX_W_0F16_P_1, VEX_W_0F16_P_2, VEX_W_0F17_M_0, VEX_W_0F28, VEX_W_0F29, VEX_W_0F2B_M_0, VEX_W_0F2E_P_0, VEX_W_0F2E_P_2, VEX_W_0F2F_P_0, VEX_W_0F2F_P_2, VEX_W_0F41_P_0_LEN_1, VEX_W_0F41_P_2_LEN_1, VEX_W_0F42_P_0_LEN_1, VEX_W_0F42_P_2_LEN_1, VEX_W_0F44_P_0_LEN_0, VEX_W_0F44_P_2_LEN_0, VEX_W_0F45_P_0_LEN_1, VEX_W_0F45_P_2_LEN_1, VEX_W_0F46_P_0_LEN_1, VEX_W_0F46_P_2_LEN_1, VEX_W_0F47_P_0_LEN_1, VEX_W_0F47_P_2_LEN_1, VEX_W_0F4A_P_0_LEN_1, VEX_W_0F4A_P_2_LEN_1, VEX_W_0F4B_P_0_LEN_1, VEX_W_0F4B_P_2_LEN_1, VEX_W_0F50_M_0, VEX_W_0F51_P_0, VEX_W_0F51_P_1, VEX_W_0F51_P_2, VEX_W_0F51_P_3, VEX_W_0F52_P_0, VEX_W_0F52_P_1, VEX_W_0F53_P_0, VEX_W_0F53_P_1, VEX_W_0F58_P_0, VEX_W_0F58_P_1, VEX_W_0F58_P_2, VEX_W_0F58_P_3, VEX_W_0F59_P_0, VEX_W_0F59_P_1, VEX_W_0F59_P_2, VEX_W_0F59_P_3, VEX_W_0F5A_P_0, VEX_W_0F5A_P_1, VEX_W_0F5A_P_3, VEX_W_0F5B_P_0, VEX_W_0F5B_P_1, VEX_W_0F5B_P_2, VEX_W_0F5C_P_0, VEX_W_0F5C_P_1, VEX_W_0F5C_P_2, VEX_W_0F5C_P_3, VEX_W_0F5D_P_0, VEX_W_0F5D_P_1, VEX_W_0F5D_P_2, VEX_W_0F5D_P_3, VEX_W_0F5E_P_0, VEX_W_0F5E_P_1, VEX_W_0F5E_P_2, VEX_W_0F5E_P_3, VEX_W_0F5F_P_0, VEX_W_0F5F_P_1, VEX_W_0F5F_P_2, VEX_W_0F5F_P_3, VEX_W_0F60_P_2, VEX_W_0F61_P_2, VEX_W_0F62_P_2, VEX_W_0F63_P_2, VEX_W_0F64_P_2, VEX_W_0F65_P_2, VEX_W_0F66_P_2, VEX_W_0F67_P_2, VEX_W_0F68_P_2, VEX_W_0F69_P_2, VEX_W_0F6A_P_2, VEX_W_0F6B_P_2, VEX_W_0F6C_P_2, VEX_W_0F6D_P_2, VEX_W_0F6F_P_1, VEX_W_0F6F_P_2, VEX_W_0F70_P_1, VEX_W_0F70_P_2, VEX_W_0F70_P_3, VEX_W_0F71_R_2_P_2, VEX_W_0F71_R_4_P_2, VEX_W_0F71_R_6_P_2, VEX_W_0F72_R_2_P_2, VEX_W_0F72_R_4_P_2, VEX_W_0F72_R_6_P_2, VEX_W_0F73_R_2_P_2, VEX_W_0F73_R_3_P_2, VEX_W_0F73_R_6_P_2, VEX_W_0F73_R_7_P_2, VEX_W_0F74_P_2, VEX_W_0F75_P_2, VEX_W_0F76_P_2, VEX_W_0F77_P_0, VEX_W_0F7C_P_2, VEX_W_0F7C_P_3, VEX_W_0F7D_P_2, VEX_W_0F7D_P_3, VEX_W_0F7E_P_1, VEX_W_0F7F_P_1, VEX_W_0F7F_P_2, VEX_W_0F90_P_0_LEN_0, VEX_W_0F90_P_2_LEN_0, VEX_W_0F91_P_0_LEN_0, VEX_W_0F91_P_2_LEN_0, VEX_W_0F92_P_0_LEN_0, VEX_W_0F92_P_2_LEN_0, VEX_W_0F92_P_3_LEN_0, VEX_W_0F93_P_0_LEN_0, VEX_W_0F93_P_2_LEN_0, VEX_W_0F93_P_3_LEN_0, VEX_W_0F98_P_0_LEN_0, VEX_W_0F98_P_2_LEN_0, VEX_W_0F99_P_0_LEN_0, VEX_W_0F99_P_2_LEN_0, VEX_W_0FAE_R_2_M_0, VEX_W_0FAE_R_3_M_0, VEX_W_0FC2_P_0, VEX_W_0FC2_P_1, VEX_W_0FC2_P_2, VEX_W_0FC2_P_3, VEX_W_0FC4_P_2, VEX_W_0FC5_P_2, VEX_W_0FD0_P_2, VEX_W_0FD0_P_3, VEX_W_0FD1_P_2, VEX_W_0FD2_P_2, VEX_W_0FD3_P_2, VEX_W_0FD4_P_2, VEX_W_0FD5_P_2, VEX_W_0FD6_P_2, VEX_W_0FD7_P_2_M_1, VEX_W_0FD8_P_2, VEX_W_0FD9_P_2, VEX_W_0FDA_P_2, VEX_W_0FDB_P_2, VEX_W_0FDC_P_2, VEX_W_0FDD_P_2, VEX_W_0FDE_P_2, VEX_W_0FDF_P_2, VEX_W_0FE0_P_2, VEX_W_0FE1_P_2, VEX_W_0FE2_P_2, VEX_W_0FE3_P_2, VEX_W_0FE4_P_2, VEX_W_0FE5_P_2, VEX_W_0FE6_P_1, VEX_W_0FE6_P_2, VEX_W_0FE6_P_3, VEX_W_0FE7_P_2_M_0, VEX_W_0FE8_P_2, VEX_W_0FE9_P_2, VEX_W_0FEA_P_2, VEX_W_0FEB_P_2, VEX_W_0FEC_P_2, VEX_W_0FED_P_2, VEX_W_0FEE_P_2, VEX_W_0FEF_P_2, VEX_W_0FF0_P_3_M_0, VEX_W_0FF1_P_2, VEX_W_0FF2_P_2, VEX_W_0FF3_P_2, VEX_W_0FF4_P_2, VEX_W_0FF5_P_2, VEX_W_0FF6_P_2, VEX_W_0FF7_P_2, VEX_W_0FF8_P_2, VEX_W_0FF9_P_2, VEX_W_0FFA_P_2, VEX_W_0FFB_P_2, VEX_W_0FFC_P_2, VEX_W_0FFD_P_2, VEX_W_0FFE_P_2, VEX_W_0F3800_P_2, VEX_W_0F3801_P_2, VEX_W_0F3802_P_2, VEX_W_0F3803_P_2, VEX_W_0F3804_P_2, VEX_W_0F3805_P_2, VEX_W_0F3806_P_2, VEX_W_0F3807_P_2, VEX_W_0F3808_P_2, VEX_W_0F3809_P_2, VEX_W_0F380A_P_2, VEX_W_0F380B_P_2, VEX_W_0F380C_P_2, VEX_W_0F380D_P_2, VEX_W_0F380E_P_2, VEX_W_0F380F_P_2, VEX_W_0F3816_P_2, VEX_W_0F3817_P_2, VEX_W_0F3818_P_2, VEX_W_0F3819_P_2, VEX_W_0F381A_P_2_M_0, VEX_W_0F381C_P_2, VEX_W_0F381D_P_2, VEX_W_0F381E_P_2, VEX_W_0F3820_P_2, VEX_W_0F3821_P_2, VEX_W_0F3822_P_2, VEX_W_0F3823_P_2, VEX_W_0F3824_P_2, VEX_W_0F3825_P_2, VEX_W_0F3828_P_2, VEX_W_0F3829_P_2, VEX_W_0F382A_P_2_M_0, VEX_W_0F382B_P_2, VEX_W_0F382C_P_2_M_0, VEX_W_0F382D_P_2_M_0, VEX_W_0F382E_P_2_M_0, VEX_W_0F382F_P_2_M_0, VEX_W_0F3830_P_2, VEX_W_0F3831_P_2, VEX_W_0F3832_P_2, VEX_W_0F3833_P_2, VEX_W_0F3834_P_2, VEX_W_0F3835_P_2, VEX_W_0F3836_P_2, VEX_W_0F3837_P_2, VEX_W_0F3838_P_2, VEX_W_0F3839_P_2, VEX_W_0F383A_P_2, VEX_W_0F383B_P_2, VEX_W_0F383C_P_2, VEX_W_0F383D_P_2, VEX_W_0F383E_P_2, VEX_W_0F383F_P_2, VEX_W_0F3840_P_2, VEX_W_0F3841_P_2, VEX_W_0F3846_P_2, VEX_W_0F3858_P_2, VEX_W_0F3859_P_2, VEX_W_0F385A_P_2_M_0, VEX_W_0F3878_P_2, VEX_W_0F3879_P_2, VEX_W_0F38DB_P_2, VEX_W_0F38DC_P_2, VEX_W_0F38DD_P_2, VEX_W_0F38DE_P_2, VEX_W_0F38DF_P_2, VEX_W_0F3A00_P_2, VEX_W_0F3A01_P_2, VEX_W_0F3A02_P_2, VEX_W_0F3A04_P_2, VEX_W_0F3A05_P_2, VEX_W_0F3A06_P_2, VEX_W_0F3A08_P_2, VEX_W_0F3A09_P_2, VEX_W_0F3A0A_P_2, VEX_W_0F3A0B_P_2, VEX_W_0F3A0C_P_2, VEX_W_0F3A0D_P_2, VEX_W_0F3A0E_P_2, VEX_W_0F3A0F_P_2, VEX_W_0F3A14_P_2, VEX_W_0F3A15_P_2, VEX_W_0F3A18_P_2, VEX_W_0F3A19_P_2, VEX_W_0F3A20_P_2, VEX_W_0F3A21_P_2, VEX_W_0F3A30_P_2_LEN_0, VEX_W_0F3A31_P_2_LEN_0, VEX_W_0F3A32_P_2_LEN_0, VEX_W_0F3A33_P_2_LEN_0, VEX_W_0F3A38_P_2, VEX_W_0F3A39_P_2, VEX_W_0F3A40_P_2, VEX_W_0F3A41_P_2, VEX_W_0F3A42_P_2, VEX_W_0F3A44_P_2, VEX_W_0F3A46_P_2, VEX_W_0F3A48_P_2, VEX_W_0F3A49_P_2, VEX_W_0F3A4A_P_2, VEX_W_0F3A4B_P_2, VEX_W_0F3A4C_P_2, VEX_W_0F3A60_P_2, VEX_W_0F3A61_P_2, VEX_W_0F3A62_P_2, VEX_W_0F3A63_P_2, VEX_W_0F3ADF_P_2, EVEX_W_0F10_P_0, EVEX_W_0F10_P_1_M_0, EVEX_W_0F10_P_1_M_1, EVEX_W_0F10_P_2, EVEX_W_0F10_P_3_M_0, EVEX_W_0F10_P_3_M_1, EVEX_W_0F11_P_0, EVEX_W_0F11_P_1_M_0, EVEX_W_0F11_P_1_M_1, EVEX_W_0F11_P_2, EVEX_W_0F11_P_3_M_0, EVEX_W_0F11_P_3_M_1, EVEX_W_0F12_P_0_M_0, EVEX_W_0F12_P_0_M_1, EVEX_W_0F12_P_1, EVEX_W_0F12_P_2, EVEX_W_0F12_P_3, EVEX_W_0F13_P_0, EVEX_W_0F13_P_2, EVEX_W_0F14_P_0, EVEX_W_0F14_P_2, EVEX_W_0F15_P_0, EVEX_W_0F15_P_2, EVEX_W_0F16_P_0_M_0, EVEX_W_0F16_P_0_M_1, EVEX_W_0F16_P_1, EVEX_W_0F16_P_2, EVEX_W_0F17_P_0, EVEX_W_0F17_P_2, EVEX_W_0F28_P_0, EVEX_W_0F28_P_2, EVEX_W_0F29_P_0, EVEX_W_0F29_P_2, EVEX_W_0F2A_P_1, EVEX_W_0F2A_P_3, EVEX_W_0F2B_P_0, EVEX_W_0F2B_P_2, EVEX_W_0F2E_P_0, EVEX_W_0F2E_P_2, EVEX_W_0F2F_P_0, EVEX_W_0F2F_P_2, EVEX_W_0F51_P_0, EVEX_W_0F51_P_1, EVEX_W_0F51_P_2, EVEX_W_0F51_P_3, EVEX_W_0F54_P_0, EVEX_W_0F54_P_2, EVEX_W_0F55_P_0, EVEX_W_0F55_P_2, EVEX_W_0F56_P_0, EVEX_W_0F56_P_2, EVEX_W_0F57_P_0, EVEX_W_0F57_P_2, EVEX_W_0F58_P_0, EVEX_W_0F58_P_1, EVEX_W_0F58_P_2, EVEX_W_0F58_P_3, EVEX_W_0F59_P_0, EVEX_W_0F59_P_1, EVEX_W_0F59_P_2, EVEX_W_0F59_P_3, EVEX_W_0F5A_P_0, EVEX_W_0F5A_P_1, EVEX_W_0F5A_P_2, EVEX_W_0F5A_P_3, EVEX_W_0F5B_P_0, EVEX_W_0F5B_P_1, EVEX_W_0F5B_P_2, EVEX_W_0F5C_P_0, EVEX_W_0F5C_P_1, EVEX_W_0F5C_P_2, EVEX_W_0F5C_P_3, EVEX_W_0F5D_P_0, EVEX_W_0F5D_P_1, EVEX_W_0F5D_P_2, EVEX_W_0F5D_P_3, EVEX_W_0F5E_P_0, EVEX_W_0F5E_P_1, EVEX_W_0F5E_P_2, EVEX_W_0F5E_P_3, EVEX_W_0F5F_P_0, EVEX_W_0F5F_P_1, EVEX_W_0F5F_P_2, EVEX_W_0F5F_P_3, EVEX_W_0F62_P_2, EVEX_W_0F66_P_2, EVEX_W_0F6A_P_2, EVEX_W_0F6B_P_2, EVEX_W_0F6C_P_2, EVEX_W_0F6D_P_2, EVEX_W_0F6E_P_2, EVEX_W_0F6F_P_1, EVEX_W_0F6F_P_2, EVEX_W_0F6F_P_3, EVEX_W_0F70_P_2, EVEX_W_0F72_R_2_P_2, EVEX_W_0F72_R_6_P_2, EVEX_W_0F73_R_2_P_2, EVEX_W_0F73_R_6_P_2, EVEX_W_0F76_P_2, EVEX_W_0F78_P_0, EVEX_W_0F78_P_2, EVEX_W_0F79_P_0, EVEX_W_0F79_P_2, EVEX_W_0F7A_P_1, EVEX_W_0F7A_P_2, EVEX_W_0F7A_P_3, EVEX_W_0F7B_P_1, EVEX_W_0F7B_P_2, EVEX_W_0F7B_P_3, EVEX_W_0F7E_P_1, EVEX_W_0F7E_P_2, EVEX_W_0F7F_P_1, EVEX_W_0F7F_P_2, EVEX_W_0F7F_P_3, EVEX_W_0FC2_P_0, EVEX_W_0FC2_P_1, EVEX_W_0FC2_P_2, EVEX_W_0FC2_P_3, EVEX_W_0FC6_P_0, EVEX_W_0FC6_P_2, EVEX_W_0FD2_P_2, EVEX_W_0FD3_P_2, EVEX_W_0FD4_P_2, EVEX_W_0FD6_P_2, EVEX_W_0FE6_P_1, EVEX_W_0FE6_P_2, EVEX_W_0FE6_P_3, EVEX_W_0FE7_P_2, EVEX_W_0FF2_P_2, EVEX_W_0FF3_P_2, EVEX_W_0FF4_P_2, EVEX_W_0FFA_P_2, EVEX_W_0FFB_P_2, EVEX_W_0FFE_P_2, EVEX_W_0F380C_P_2, EVEX_W_0F380D_P_2, EVEX_W_0F3810_P_1, EVEX_W_0F3810_P_2, EVEX_W_0F3811_P_1, EVEX_W_0F3811_P_2, EVEX_W_0F3812_P_1, EVEX_W_0F3812_P_2, EVEX_W_0F3813_P_1, EVEX_W_0F3813_P_2, EVEX_W_0F3814_P_1, EVEX_W_0F3815_P_1, EVEX_W_0F3818_P_2, EVEX_W_0F3819_P_2, EVEX_W_0F381A_P_2, EVEX_W_0F381B_P_2, EVEX_W_0F381E_P_2, EVEX_W_0F381F_P_2, EVEX_W_0F3820_P_1, EVEX_W_0F3821_P_1, EVEX_W_0F3822_P_1, EVEX_W_0F3823_P_1, EVEX_W_0F3824_P_1, EVEX_W_0F3825_P_1, EVEX_W_0F3825_P_2, EVEX_W_0F3826_P_1, EVEX_W_0F3826_P_2, EVEX_W_0F3828_P_1, EVEX_W_0F3828_P_2, EVEX_W_0F3829_P_1, EVEX_W_0F3829_P_2, EVEX_W_0F382A_P_1, EVEX_W_0F382A_P_2, EVEX_W_0F382B_P_2, EVEX_W_0F3830_P_1, EVEX_W_0F3831_P_1, EVEX_W_0F3832_P_1, EVEX_W_0F3833_P_1, EVEX_W_0F3834_P_1, EVEX_W_0F3835_P_1, EVEX_W_0F3835_P_2, EVEX_W_0F3837_P_2, EVEX_W_0F3838_P_1, EVEX_W_0F3839_P_1, EVEX_W_0F383A_P_1, EVEX_W_0F3840_P_2, EVEX_W_0F3855_P_2, EVEX_W_0F3858_P_2, EVEX_W_0F3859_P_2, EVEX_W_0F385A_P_2, EVEX_W_0F385B_P_2, EVEX_W_0F3866_P_2, EVEX_W_0F3875_P_2, EVEX_W_0F3878_P_2, EVEX_W_0F3879_P_2, EVEX_W_0F387A_P_2, EVEX_W_0F387B_P_2, EVEX_W_0F387D_P_2, EVEX_W_0F3883_P_2, EVEX_W_0F388D_P_2, EVEX_W_0F3891_P_2, EVEX_W_0F3893_P_2, EVEX_W_0F38A1_P_2, EVEX_W_0F38A3_P_2, EVEX_W_0F38C7_R_1_P_2, EVEX_W_0F38C7_R_2_P_2, EVEX_W_0F38C7_R_5_P_2, EVEX_W_0F38C7_R_6_P_2, EVEX_W_0F3A00_P_2, EVEX_W_0F3A01_P_2, EVEX_W_0F3A04_P_2, EVEX_W_0F3A05_P_2, EVEX_W_0F3A08_P_2, EVEX_W_0F3A09_P_2, EVEX_W_0F3A0A_P_2, EVEX_W_0F3A0B_P_2, EVEX_W_0F3A16_P_2, EVEX_W_0F3A18_P_2, EVEX_W_0F3A19_P_2, EVEX_W_0F3A1A_P_2, EVEX_W_0F3A1B_P_2, EVEX_W_0F3A1D_P_2, EVEX_W_0F3A21_P_2, EVEX_W_0F3A22_P_2, EVEX_W_0F3A23_P_2, EVEX_W_0F3A38_P_2, EVEX_W_0F3A39_P_2, EVEX_W_0F3A3A_P_2, EVEX_W_0F3A3B_P_2, EVEX_W_0F3A3E_P_2, EVEX_W_0F3A3F_P_2, EVEX_W_0F3A42_P_2, EVEX_W_0F3A43_P_2, EVEX_W_0F3A50_P_2, EVEX_W_0F3A51_P_2, EVEX_W_0F3A56_P_2, EVEX_W_0F3A57_P_2, EVEX_W_0F3A66_P_2, EVEX_W_0F3A67_P_2 }; typedef void (*op_rtn) (disassemble_info *info, int bytemode, int sizeflag); struct dis386 { const char *name; struct { op_rtn rtn; int bytemode; } op[MAX_OPERANDS]; unsigned int prefix_requirement; }; /* If we are accessing mod/rm/reg without need_modrm set, then the values are stale. Hitting this abort likely indicates that you need to update onebyte_has_modrm or twobyte_has_modrm. */ #define MODRM_CHECK(act) if (!info->need_modrm) { internal_error(info); act; } static void swap_operand(disassemble_info *info) { info->mnemonicendp[0] = '.'; info->mnemonicendp[1] = 's'; info->mnemonicendp += 2; } static void append_seg(disassemble_info *info) { /* Only print the active segment register. */ if (!info->active_seg_prefix) return; info->used_prefixes |= info->active_seg_prefix; switch (info->active_seg_prefix) { case PREFIX_CS: oappend_maybe_intel(info, "%cs:"); break; case PREFIX_DS: oappend_maybe_intel(info, "%ds:"); break; case PREFIX_SS: oappend_maybe_intel(info, "%ss:"); break; case PREFIX_ES: oappend_maybe_intel(info, "%es:"); break; case PREFIX_FS: oappend_maybe_intel(info, "%fs:"); break; case PREFIX_GS: oappend_maybe_intel(info, "%gs:"); break; default: break; } } /* Put DISP in BUF as signed hex number. */ static void print_displacement(disassemble_info *info, char *buf, bfd_vma disp) { bfd_signed_vma val = disp; char tmp[30]; int i, j = 0; if (val < 0) { buf[j++] = '-'; val = -disp; /* Check for possible overflow. */ if (val < 0) { switch (info->address_mode) { case mode_64bit: strcpy(buf + j, "0x8000000000000000"); break; case mode_32bit: strcpy(buf + j, "0x80000000"); break; case mode_16bit: strcpy(buf + j, "0x8000"); break; } return; } } buf[j++] = '0'; buf[j++] = 'x'; sprintf(tmp, "%016" PRIx64, (uint64_t)val); for (i = 0; tmp[i] == '0'; i++) continue; if (tmp[i] == '\0') i--; strcpy(buf + j, tmp + i); } static void intel_operand_size(disassemble_info *info, int bytemode, int sizeflag) { if (info->vex.evex && info->vex.b && (bytemode == x_mode || bytemode == evex_half_bcst_xmmq_mode)) { if (info->vex.w) oappend(info, "QWORD PTR "); else oappend(info, "DWORD PTR "); return; } switch (bytemode) { case b_mode: case b_swap_mode: case dqb_mode: case db_mode: oappend(info, "BYTE PTR "); break; case w_mode: case dw_mode: case dqw_mode: case dqw_swap_mode: oappend(info, "WORD PTR "); break; case indir_v_mode: if (info->address_mode == mode_64bit && info->isa64 == intel64) { oappend(info, "QWORD PTR "); break; } /* Fall through. */ case stack_v_mode: if (info->address_mode == mode_64bit && ((sizeflag & DFLAG) || (info->rex & REX_W))) { oappend(info, "QWORD PTR "); break; } /* Fall through. */ case v_mode: case v_swap_mode: case dq_mode: USED_REX(REX_W); if (info->rex & REX_W) oappend(info, "QWORD PTR "); else { if ((sizeflag & DFLAG) || bytemode == dq_mode) oappend(info, "DWORD PTR "); else oappend(info, "WORD PTR "); info->used_prefixes |= (info->prefixes & PREFIX_DATA); } break; case z_mode: if ((info->rex & REX_W) || (sizeflag & DFLAG)) *info->obufp++ = 'D'; oappend(info, "WORD PTR "); if (!(info->rex & REX_W)) info->used_prefixes |= (info->prefixes & PREFIX_DATA); break; case a_mode: if (sizeflag & DFLAG) oappend(info, "QWORD PTR "); else oappend(info, "DWORD PTR "); info->used_prefixes |= (info->prefixes & PREFIX_DATA); break; case d_mode: case d_scalar_mode: case d_scalar_swap_mode: case d_swap_mode: case dqd_mode: oappend(info, "DWORD PTR "); break; case q_mode: case q_scalar_mode: case q_scalar_swap_mode: case q_swap_mode: oappend(info, "QWORD PTR "); break; case m_mode: if (info->address_mode == mode_64bit) oappend(info, "QWORD PTR "); else oappend(info, "DWORD PTR "); break; case f_mode: if (sizeflag & DFLAG) oappend(info, "FWORD PTR "); else oappend(info, "DWORD PTR "); info->used_prefixes |= (info->prefixes & PREFIX_DATA); break; case t_mode: oappend(info, "TBYTE PTR "); break; case x_mode: case x_swap_mode: case evex_x_gscat_mode: case evex_x_nobcst_mode: if (info->need_vex) { switch (info->vex.length) { case 128: oappend(info, "XMMWORD PTR "); break; case 256: oappend(info, "YMMWORD PTR "); break; case 512: oappend(info, "ZMMWORD PTR "); break; default: internal_error(info); return; } } else oappend(info, "XMMWORD PTR "); break; case xmm_mode: oappend(info, "XMMWORD PTR "); break; case ymm_mode: oappend(info, "YMMWORD PTR "); break; case xmmq_mode: case evex_half_bcst_xmmq_mode: if (!info->need_vex) { internal_error(info); return; } switch (info->vex.length) { case 128: oappend(info, "QWORD PTR "); break; case 256: oappend(info, "XMMWORD PTR "); break; case 512: oappend(info, "YMMWORD PTR "); break; default: internal_error(info); return; } break; case xmm_mb_mode: if (!info->need_vex) { internal_error(info); return; } switch (info->vex.length) { case 128: case 256: case 512: oappend(info, "BYTE PTR "); break; default: internal_error(info); return; } break; case xmm_mw_mode: if (!info->need_vex) { internal_error(info); return; } switch (info->vex.length) { case 128: case 256: case 512: oappend(info, "WORD PTR "); break; default: internal_error(info); return; } break; case xmm_md_mode: if (!info->need_vex) { internal_error(info); return; } switch (info->vex.length) { case 128: case 256: case 512: oappend(info, "DWORD PTR "); break; default: internal_error(info); return; } break; case xmm_mq_mode: if (!info->need_vex) { internal_error(info); return; } switch (info->vex.length) { case 128: case 256: case 512: oappend(info, "QWORD PTR "); break; default: internal_error(info); return; } break; case xmmdw_mode: if (!info->need_vex) { internal_error(info); return; } switch (info->vex.length) { case 128: oappend(info, "WORD PTR "); break; case 256: oappend(info, "DWORD PTR "); break; case 512: oappend(info, "QWORD PTR "); break; default: internal_error(info); return; } break; case xmmqd_mode: if (!info->need_vex) { internal_error(info); return; } switch (info->vex.length) { case 128: oappend(info, "DWORD PTR "); break; case 256: oappend(info, "QWORD PTR "); break; case 512: oappend(info, "XMMWORD PTR "); break; default: internal_error(info); return; } break; case ymmq_mode: if (!info->need_vex) { internal_error(info); return; } switch (info->vex.length) { case 128: oappend(info, "QWORD PTR "); break; case 256: oappend(info, "YMMWORD PTR "); break; case 512: oappend(info, "ZMMWORD PTR "); break; default: internal_error(info); return; } break; case ymmxmm_mode: if (!info->need_vex) { internal_error(info); return; } switch (info->vex.length) { case 128: case 256: oappend(info, "XMMWORD PTR "); break; default: internal_error(info); return; } break; case o_mode: oappend(info, "OWORD PTR "); break; case xmm_mdq_mode: case vex_w_dq_mode: case vex_scalar_w_dq_mode: if (!info->need_vex) { internal_error(info); return; } if (info->vex.w) oappend(info, "QWORD PTR "); else oappend(info, "DWORD PTR "); break; case vex_vsib_d_w_dq_mode: case vex_vsib_q_w_dq_mode: if (!info->need_vex) { internal_error(info); return; } if (!info->vex.evex) { if (info->vex.w) oappend(info, "QWORD PTR "); else oappend(info, "DWORD PTR "); } else { switch (info->vex.length) { case 128: oappend(info, "XMMWORD PTR "); break; case 256: oappend(info, "YMMWORD PTR "); break; case 512: oappend(info, "ZMMWORD PTR "); break; default: internal_error(info); return; } } break; case vex_vsib_q_w_d_mode: case vex_vsib_d_w_d_mode: if (!info->need_vex || !info->vex.evex) { internal_error(info); return; } switch (info->vex.length) { case 128: oappend(info, "QWORD PTR "); break; case 256: oappend(info, "XMMWORD PTR "); break; case 512: oappend(info, "YMMWORD PTR "); break; default: internal_error(info); return; } break; case mask_bd_mode: if (!info->need_vex || info->vex.length != 128) { internal_error(info); return; } if (info->vex.w) oappend(info, "DWORD PTR "); else oappend(info, "BYTE PTR "); break; case mask_mode: if (!info->need_vex) { internal_error(info); return; } if (info->vex.w) oappend(info, "QWORD PTR "); else oappend(info, "WORD PTR "); break; case v_bnd_mode: default: break; } } static void print_operand_value(disassemble_info *info, char *buf, int hex, bfd_vma disp) { if (info->address_mode == mode_64bit) { if (hex) { char tmp[30]; int i; buf[0] = '0'; buf[1] = 'x'; sprintf(tmp, "%016" PRIx64, (uint64_t)disp); for (i = 0; tmp[i] == '0' && tmp[i + 1]; i++) ; strcpy(buf + 2, tmp + i); } else { bfd_signed_vma v = disp; char tmp[30]; int i; if (v < 0) { *(buf++) = '-'; v = -disp; /* Check for possible overflow on 0x8000000000000000. */ if (v < 0) { strcpy(buf, "9223372036854775808"); return; } } if (!v) { strcpy(buf, "0"); return; } i = 0; tmp[29] = 0; while (v) { tmp[28 - i] = (v % 10) + '0'; v /= 10; i++; } strcpy(buf, tmp + 29 - i); } } else { if (hex) sprintf(buf, "0x%x", (unsigned int) disp); else sprintf(buf, "%d", (int) disp); } } static bfd_signed_vma xget32(disassemble_info *info) { bfd_signed_vma x = 0; FETCH_DATA(info, info->codep + 4); x = *info->codep++ & (bfd_signed_vma) 0xff; x |= (*info->codep++ & (bfd_signed_vma) 0xff) << 8; x |= (*info->codep++ & (bfd_signed_vma) 0xff) << 16; x |= (*info->codep++ & (bfd_signed_vma) 0xff) << 24; return x; } static bfd_signed_vma xget32s(disassemble_info *info) { bfd_signed_vma x = 0; FETCH_DATA(info, info->codep + 4); x = *info->codep++ & (bfd_signed_vma) 0xff; x |= (*info->codep++ & (bfd_signed_vma) 0xff) << 8; x |= (*info->codep++ & (bfd_signed_vma) 0xff) << 16; x |= (*info->codep++ & (bfd_signed_vma) 0xff) << 24; x = (x ^ ((bfd_signed_vma) 1 << 31)) - ((bfd_signed_vma) 1 << 31); return x; } static bfd_vma xget64(disassemble_info *info) { bfd_vma x; uint32_t a; uint32_t b; FETCH_DATA(info, info->codep + 8); a = *info->codep++ & 0xff; a |= (*info->codep++ & 0xff) << 8; a |= (*info->codep++ & 0xff) << 16; a |= (*info->codep++ & 0xffu) << 24; b = *info->codep++ & 0xff; b |= (*info->codep++ & 0xff) << 8; b |= (*info->codep++ & 0xff) << 16; b |= (*info->codep++ & 0xffu) << 24; x = a + ((bfd_vma) b << 32); return x; } static int xget16(disassemble_info *info) { int x = 0; FETCH_DATA(info, info->codep + 2); x = *info->codep++ & 0xff; x |= (*info->codep++ & 0xff) << 8; return x; } static void set_op(disassemble_info *info, bfd_vma op, int riprel) { info->op_index[info->op_ad] = info->op_ad; if (info->address_mode == mode_64bit) { info->op_address[info->op_ad] = op; info->op_riprel[info->op_ad] = riprel; } else { /* Mask to get a 32-bit address. */ info->op_address[info->op_ad] = op & 0xffffffff; info->op_riprel[info->op_ad] = riprel; } } static void OP_E_register(disassemble_info *info, int bytemode, int sizeflag) { int reg = info->modrm.rm; const char *const *names; USED_REX(REX_B); if ((info->rex & REX_B)) reg += 8; if ((sizeflag & SUFFIX_ALWAYS) && (bytemode == b_swap_mode || bytemode == v_swap_mode || bytemode == dqw_swap_mode)) swap_operand(info); switch (bytemode) { case b_mode: case b_swap_mode: USED_REX(0); if (info->rex) names = info->names8rex; else names = info->names8; break; case w_mode: names = info->names16; break; case d_mode: case dw_mode: case db_mode: names = info->names32; break; case q_mode: names = info->names64; break; case m_mode: case v_bnd_mode: names = info->address_mode == mode_64bit ? info->names64 : info->names32; break; case bnd_mode: names = info->names_bnd; break; case indir_v_mode: if (info->address_mode == mode_64bit && info->isa64 == intel64) { names = info->names64; break; } /* Fall through. */ case stack_v_mode: if (info->address_mode == mode_64bit && ((sizeflag & DFLAG) || (info->rex & REX_W))) { names = info->names64; break; } bytemode = v_mode; /* Fall through. */ case v_mode: case v_swap_mode: case dq_mode: case dqb_mode: case dqd_mode: case dqw_mode: case dqw_swap_mode: USED_REX(REX_W); if (info->rex & REX_W) names = info->names64; else { if ((sizeflag & DFLAG) || (bytemode != v_mode && bytemode != v_swap_mode)) names = info->names32; else names = info->names16; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } break; case mask_bd_mode: case mask_mode: if (reg > 0x7) { oappend(info, "(bad)"); return; } names = info->names_mask; break; case 0: return; default: internal_error(info); return; } oappend(info, names[reg]); } static void BadOp(disassemble_info *info) { /* Throw away prefixes and 1st. opcode byte. */ info->codep = info->insn_codep + 1; oappend(info, "(bad)"); } static void OP_E_memory(disassemble_info *info, int bytemode, int sizeflag) { bfd_vma disp = 0; int add = (info->rex & REX_B) ? 8 : 0; int riprel = 0; int shift; if (info->vex.evex) { /* In EVEX, if operand doesn't allow broadcast, vex.b should be 0. */ if (info->vex.b && bytemode != x_mode && bytemode != xmmq_mode && bytemode != evex_half_bcst_xmmq_mode) { BadOp(info); return; } switch (bytemode) { case dqw_mode: case dw_mode: case dqw_swap_mode: shift = 1; break; case dqb_mode: case db_mode: shift = 0; break; case vex_vsib_d_w_dq_mode: case vex_vsib_d_w_d_mode: case vex_vsib_q_w_dq_mode: case vex_vsib_q_w_d_mode: case evex_x_gscat_mode: case xmm_mdq_mode: shift = info->vex.w ? 3 : 2; break; case x_mode: case evex_half_bcst_xmmq_mode: case xmmq_mode: if (info->vex.b) { shift = info->vex.w ? 3 : 2; break; } /* Fall through. */ case xmmqd_mode: case xmmdw_mode: case ymmq_mode: case evex_x_nobcst_mode: case x_swap_mode: switch (info->vex.length) { case 128: shift = 4; break; case 256: shift = 5; break; case 512: shift = 6; break; default: internal_error(info); return; } break; case ymm_mode: shift = 5; break; case xmm_mode: shift = 4; break; case xmm_mq_mode: case q_mode: case q_scalar_mode: case q_swap_mode: case q_scalar_swap_mode: shift = 3; break; case dqd_mode: case xmm_md_mode: case d_mode: case d_scalar_mode: case d_swap_mode: case d_scalar_swap_mode: shift = 2; break; case xmm_mw_mode: shift = 1; break; case xmm_mb_mode: shift = 0; break; default: internal_error(info); return; } /* Make necessary corrections to shift for modes that need it. For these modes we currently have shift 4, 5 or 6 depending on vex.length (it corresponds to xmmword, ymmword or zmmword operand). We might want to make it 3, 4 or 5 (e.g. for xmmq_mode). In case of broadcast enabled the corrections aren't needed, as element size is always 32 or 64 bits. */ if (!info->vex.b && (bytemode == xmmq_mode || bytemode == evex_half_bcst_xmmq_mode)) shift -= 1; else if (bytemode == xmmqd_mode) shift -= 2; else if (bytemode == xmmdw_mode) shift -= 3; else if (bytemode == ymmq_mode && info->vex.length == 128) shift -= 1; } else shift = 0; USED_REX(REX_B); if (info->intel_syntax) intel_operand_size(info, bytemode, sizeflag); append_seg(info); if ((sizeflag & AFLAG) || info->address_mode == mode_64bit) { /* 32/64 bit address mode */ int havedisp; int havesib; int havebase; int haveindex; int needindex; int base, rbase; int vindex = 0; int scale = 0; int addr32flag = !((sizeflag & AFLAG) || bytemode == v_bnd_mode || bytemode == bnd_mode); const char *const *indexes64 = info->names64; const char *const *indexes32 = info->names32; havesib = 0; havebase = 1; haveindex = 0; base = info->modrm.rm; if (base == 4) { havesib = 1; vindex = info->sib.index; USED_REX(REX_X); if (info->rex & REX_X) vindex += 8; switch (bytemode) { case vex_vsib_d_w_dq_mode: case vex_vsib_d_w_d_mode: case vex_vsib_q_w_dq_mode: case vex_vsib_q_w_d_mode: if (!info->need_vex) { internal_error(info); return; } if (info->vex.evex) { if (!info->vex.v) vindex += 16; } haveindex = 1; switch (info->vex.length) { case 128: indexes64 = indexes32 = info->names_xmm; break; case 256: if (!info->vex.w || bytemode == vex_vsib_q_w_dq_mode || bytemode == vex_vsib_q_w_d_mode) indexes64 = indexes32 = info->names_ymm; else indexes64 = indexes32 = info->names_xmm; break; case 512: if (!info->vex.w || bytemode == vex_vsib_q_w_dq_mode || bytemode == vex_vsib_q_w_d_mode) indexes64 = indexes32 = info->names_zmm; else indexes64 = indexes32 = info->names_ymm; break; default: internal_error(info); return; } break; default: haveindex = vindex != 4; break; } scale = info->sib.scale; base = info->sib.base; info->codep++; } rbase = base + add; switch (info->modrm.mod) { case 0: if (base == 5) { havebase = 0; if (info->address_mode == mode_64bit && !havesib) riprel = 1; disp = xget32s(info); } break; case 1: FETCH_DATA(info, info->codep + 1); disp = *info->codep++; if ((disp & 0x80) != 0) disp -= 0x100; if (info->vex.evex && shift > 0) disp <<= shift; break; case 2: disp = xget32s(info); break; } /* In 32bit mode, we need index register to tell [offset] from [eiz*1 + offset]. */ needindex = (havesib && !havebase && !haveindex && info->address_mode == mode_32bit); havedisp = (havebase || needindex || (havesib && (haveindex || scale != 0))); if (!info->intel_syntax) if (info->modrm.mod != 0 || base == 5) { char scratchbuf[100]; if (havedisp || riprel) print_displacement(info, scratchbuf, disp); else print_operand_value(info, scratchbuf, 1, disp); oappend(info, scratchbuf); if (riprel) { set_op(info, disp, 1); oappend(info, !addr32flag ? "(%rip)" : "(%eip)"); } } if ((havebase || haveindex || riprel) && (bytemode != v_bnd_mode) && (bytemode != bnd_mode)) info->used_prefixes |= PREFIX_ADDR; if (havedisp || (info->intel_syntax && riprel)) { *info->obufp++ = info->open_char; if (info->intel_syntax && riprel) { set_op(info, disp, 1); oappend(info, !addr32flag ? "rip" : "eip"); } *info->obufp = '\0'; if (havebase) oappend(info, info->address_mode == mode_64bit && !addr32flag ? info->names64[rbase] : info->names32[rbase]); if (havesib) { /* ESP/RSP won't allow index. If base isn't ESP/RSP, print index to tell base + index from base. */ if (scale != 0 || needindex || haveindex || (havebase && base != ESP_REG_NUM)) { char scratchbuf[100]; if (!info->intel_syntax || havebase) { *info->obufp++ = info->separator_char; *info->obufp = '\0'; } if (haveindex) oappend(info, info->address_mode == mode_64bit && !addr32flag ? indexes64[vindex] : indexes32[vindex]); else oappend(info, info->address_mode == mode_64bit && !addr32flag ? info->index64 : info->index32); *info->obufp++ = info->scale_char; *info->obufp = '\0'; sprintf(scratchbuf, "%d", 1 << scale); oappend(info, scratchbuf); } } if (info->intel_syntax && (disp || info->modrm.mod != 0 || base == 5)) { char scratchbuf[100]; if (!havedisp || (bfd_signed_vma) disp >= 0) { *info->obufp++ = '+'; *info->obufp = '\0'; } else if (info->modrm.mod != 1 && disp != -disp) { *info->obufp++ = '-'; *info->obufp = '\0'; disp = -(bfd_signed_vma) disp; } if (havedisp) print_displacement(info, scratchbuf, disp); else print_operand_value(info, scratchbuf, 1, disp); oappend(info, scratchbuf); } *info->obufp++ = info->close_char; *info->obufp = '\0'; } else if (info->intel_syntax) { if (info->modrm.mod != 0 || base == 5) { char scratchbuf[100]; if (!info->active_seg_prefix) { oappend(info, info->names_seg[ds_reg - es_reg]); oappend(info, ":"); } print_operand_value(info, scratchbuf, 1, disp); oappend(info, scratchbuf); } } } else { /* 16 bit address mode */ info->used_prefixes |= info->prefixes & PREFIX_ADDR; switch (info->modrm.mod) { case 0: if (info->modrm.rm == 6) { disp = xget16(info); if ((disp & 0x8000) != 0) disp -= 0x10000; } break; case 1: FETCH_DATA(info, info->codep + 1); disp = *info->codep++; if ((disp & 0x80) != 0) disp -= 0x100; break; case 2: disp = xget16(info); if ((disp & 0x8000) != 0) disp -= 0x10000; break; } if (!info->intel_syntax) if (info->modrm.mod != 0 || info->modrm.rm == 6) { char scratchbuf[100]; print_displacement(info, scratchbuf, disp); oappend(info, scratchbuf); } if (info->modrm.mod != 0 || info->modrm.rm != 6) { *info->obufp++ = info->open_char; *info->obufp = '\0'; oappend(info, info->index16[info->modrm.rm]); if (info->intel_syntax && (disp || info->modrm.mod != 0 || info->modrm.rm == 6)) { char scratchbuf[100]; if ((bfd_signed_vma) disp >= 0) { *info->obufp++ = '+'; *info->obufp = '\0'; } else if (info->modrm.mod != 1) { *info->obufp++ = '-'; *info->obufp = '\0'; disp = -(bfd_signed_vma) disp; } print_displacement(info, scratchbuf, disp); oappend(info, scratchbuf); } *info->obufp++ = info->close_char; *info->obufp = '\0'; } else if (info->intel_syntax) { char scratchbuf[100]; if (!info->active_seg_prefix) { oappend(info, info->names_seg[ds_reg - es_reg]); oappend(info, ":"); } print_operand_value(info, scratchbuf, 1, disp & 0xffff); oappend(info, scratchbuf); } } if (info->vex.evex && info->vex.b && (bytemode == x_mode || bytemode == xmmq_mode || bytemode == evex_half_bcst_xmmq_mode)) { if (info->vex.w || bytemode == xmmq_mode || bytemode == evex_half_bcst_xmmq_mode) { switch (info->vex.length) { case 128: oappend(info, "{1to2}"); break; case 256: oappend(info, "{1to4}"); break; case 512: oappend(info, "{1to8}"); break; default: internal_error(info); return; } } else { switch (info->vex.length) { case 128: oappend(info, "{1to4}"); break; case 256: oappend(info, "{1to8}"); break; case 512: oappend(info, "{1to16}"); break; default: internal_error(info); return; } } } } static void OP_E(disassemble_info *info, int bytemode, int sizeflag) { /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; if (info->modrm.mod == 3) OP_E_register(info, bytemode, sizeflag); else OP_E_memory(info, bytemode, sizeflag); } static void OP_G(disassemble_info *info, int bytemode, int sizeflag) { int add = 0; USED_REX(REX_R); if (info->rex & REX_R) add += 8; switch (bytemode) { case b_mode: USED_REX(0); if (info->rex) oappend(info, info->names8rex[info->modrm.reg + add]); else oappend(info, info->names8[info->modrm.reg + add]); break; case w_mode: oappend(info, info->names16[info->modrm.reg + add]); break; case d_mode: case db_mode: case dw_mode: oappend(info, info->names32[info->modrm.reg + add]); break; case q_mode: oappend(info, info->names64[info->modrm.reg + add]); break; case bnd_mode: oappend(info, info->names_bnd[info->modrm.reg]); break; case v_mode: case dq_mode: case dqb_mode: case dqd_mode: case dqw_mode: case dqw_swap_mode: USED_REX(REX_W); if (info->rex & REX_W) oappend(info, info->names64[info->modrm.reg + add]); else { if ((sizeflag & DFLAG) || bytemode != v_mode) oappend(info, info->names32[info->modrm.reg + add]); else oappend(info, info->names16[info->modrm.reg + add]); info->used_prefixes |= (info->prefixes & PREFIX_DATA); } break; case m_mode: if (info->address_mode == mode_64bit) oappend(info, info->names64[info->modrm.reg + add]); else oappend(info, info->names32[info->modrm.reg + add]); break; case mask_bd_mode: case mask_mode: if ((info->modrm.reg + add) > 0x7) { oappend(info, "(bad)"); return; } oappend(info, info->names_mask[info->modrm.reg + add]); break; default: internal_error(info); break; } } static void OP_indirE(disassemble_info *info, int bytemode, int sizeflag) { if (!info->intel_syntax) oappend(info, "*"); OP_E(info, bytemode, sizeflag); } static void OP_Skip_MODRM(disassemble_info *info, int bytemode, int sizeflag) { UNUSED(bytemode); UNUSED(sizeflag); /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; } static void OP_REG(disassemble_info *info, int code, int sizeflag) { const char *s; int add; switch (code) { case es_reg: case ss_reg: case cs_reg: case ds_reg: case fs_reg: case gs_reg: oappend(info, info->names_seg[code - es_reg]); return; } USED_REX(REX_B); if (info->rex & REX_B) add = 8; else add = 0; switch (code) { case ax_reg: case cx_reg: case dx_reg: case bx_reg: case sp_reg: case bp_reg: case si_reg: case di_reg: s = info->names16[code - ax_reg + add]; break; case al_reg: case ah_reg: case cl_reg: case ch_reg: case dl_reg: case dh_reg: case bl_reg: case bh_reg: USED_REX(0); if (info->rex) s = info->names8rex[code - al_reg + add]; else s = info->names8[code - al_reg]; break; case rAX_reg: case rCX_reg: case rDX_reg: case rBX_reg: case rSP_reg: case rBP_reg: case rSI_reg: case rDI_reg: if (info->address_mode == mode_64bit && ((sizeflag & DFLAG) || (info->rex & REX_W))) { s = info->names64[code - rAX_reg + add]; break; } code += eAX_reg - rAX_reg; /* Fall through. */ case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg: case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg: USED_REX(REX_W); if (info->rex & REX_W) s = info->names64[code - eAX_reg + add]; else { if (sizeflag & DFLAG) s = info->names32[code - eAX_reg + add]; else s = info->names16[code - eAX_reg + add]; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } break; default: s = INTERNAL_DISASSEMBLER_ERROR; break; } oappend(info, s); } static void OP_IMREG(disassemble_info *info, int code, int sizeflag) { const char *s; switch (code) { case indir_dx_reg: if (info->intel_syntax) s = "dx"; else s = "(%dx)"; break; case ax_reg: case cx_reg: case dx_reg: case bx_reg: case sp_reg: case bp_reg: case si_reg: case di_reg: s = info->names16[code - ax_reg]; break; case es_reg: case ss_reg: case cs_reg: case ds_reg: case fs_reg: case gs_reg: s = info->names_seg[code - es_reg]; break; case al_reg: case ah_reg: case cl_reg: case ch_reg: case dl_reg: case dh_reg: case bl_reg: case bh_reg: USED_REX(0); if (info->rex) s = info->names8rex[code - al_reg]; else s = info->names8[code - al_reg]; break; case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg: case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg: USED_REX(REX_W); if (info->rex & REX_W) s = info->names64[code - eAX_reg]; else { if (sizeflag & DFLAG) s = info->names32[code - eAX_reg]; else s = info->names16[code - eAX_reg]; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } break; case z_mode_ax_reg: if ((info->rex & REX_W) || (sizeflag & DFLAG)) s = *info->names32; else s = *info->names16; if (!(info->rex & REX_W)) info->used_prefixes |= (info->prefixes & PREFIX_DATA); break; default: s = INTERNAL_DISASSEMBLER_ERROR; break; } oappend(info, s); } static void OP_I(disassemble_info *info, int bytemode, int sizeflag) { bfd_signed_vma op; bfd_signed_vma mask = -1; char scratchbuf[100]; switch (bytemode) { case b_mode: FETCH_DATA(info, info->codep + 1); op = *info->codep++; mask = 0xff; break; case q_mode: if (info->address_mode == mode_64bit) { op = xget32s(info); break; } /* Fall through. */ case v_mode: USED_REX(REX_W); if (info->rex & REX_W) op = xget32s(info); else { if (sizeflag & DFLAG) { op = xget32(info); mask = 0xffffffff; } else { op = xget16(info); mask = 0xfffff; } info->used_prefixes |= (info->prefixes & PREFIX_DATA); } break; case w_mode: mask = 0xfffff; op = xget16(info); break; case const_1_mode: if (info->intel_syntax) oappend(info, "1"); return; default: internal_error(info); return; } op &= mask; scratchbuf[0] = '$'; print_operand_value(info, scratchbuf + 1, 1, op); oappend_maybe_intel(info, scratchbuf); } static void OP_I64(disassemble_info *info, int bytemode, int sizeflag) { bfd_signed_vma op; bfd_signed_vma mask = -1; char scratchbuf[100]; if (info->address_mode != mode_64bit) { OP_I(info, bytemode, sizeflag); return; } switch (bytemode) { case b_mode: FETCH_DATA(info, info->codep + 1); op = *info->codep++; mask = 0xff; break; case v_mode: USED_REX(REX_W); if (info->rex & REX_W) op = xget64(info); else { if (sizeflag & DFLAG) { op = xget32(info); mask = 0xffffffff; } else { op = xget16(info); mask = 0xfffff; } info->used_prefixes |= (info->prefixes & PREFIX_DATA); } break; case w_mode: mask = 0xfffff; op = xget16(info); break; default: internal_error(info); return; } op &= mask; scratchbuf[0] = '$'; print_operand_value(info, scratchbuf + 1, 1, op); oappend_maybe_intel(info, scratchbuf); } static void OP_sI(disassemble_info *info, int bytemode, int sizeflag) { bfd_signed_vma op; char scratchbuf[100]; switch (bytemode) { case b_mode: case b_T_mode: FETCH_DATA(info, info->codep + 1); op = *info->codep++; if ((op & 0x80) != 0) op -= 0x100; if (bytemode == b_T_mode) { if (info->address_mode != mode_64bit || !((sizeflag & DFLAG) || (info->rex & REX_W))) { /* The operand-size prefix is overridden by a REX prefix. */ if ((sizeflag & DFLAG) || (info->rex & REX_W)) op &= 0xffffffff; else op &= 0xffff; } } else { if (!(info->rex & REX_W)) { if (sizeflag & DFLAG) op &= 0xffffffff; else op &= 0xffff; } } break; case v_mode: /* The operand-size prefix is overridden by a REX prefix. */ if ((sizeflag & DFLAG) || (info->rex & REX_W)) op = xget32s(info); else op = xget16(info); break; default: internal_error(info); return; } scratchbuf[0] = '$'; print_operand_value(info, scratchbuf + 1, 1, op); oappend_maybe_intel(info, scratchbuf); } static void OP_J(disassemble_info *info, int bytemode, int sizeflag) { bfd_vma disp; bfd_vma mask = -1; bfd_vma segment = 0; char scratchbuf[100]; switch (bytemode) { case b_mode: FETCH_DATA(info, info->codep + 1); disp = *info->codep++; if ((disp & 0x80) != 0) disp -= 0x100; break; case v_mode: if (info->isa64 == amd64) USED_REX(REX_W); if ((sizeflag & DFLAG) || (info->address_mode == mode_64bit && (info->isa64 != amd64 || (info->rex & REX_W)))) disp = xget32s(info); else { disp = xget16(info); if ((disp & 0x8000) != 0) disp -= 0x10000; /* In 16bit mode, address is wrapped around at 64k within the same segment. Otherwise, a data16 prefix on a jump instruction means that the pc is masked to 16 bits after the displacement is added! */ mask = 0xffff; if ((info->prefixes & PREFIX_DATA) == 0) segment = ((info->start_pc + (info->codep - info->start_codep)) & ~((bfd_vma) 0xffff)); } if (info->address_mode != mode_64bit || (info->isa64 == amd64 && !(info->rex & REX_W))) info->used_prefixes |= (info->prefixes & PREFIX_DATA); break; default: internal_error(info); return; } disp = ((info->start_pc + (info->codep - info->start_codep) + disp) & mask) | segment; set_op(info, disp, 0); print_operand_value(info, scratchbuf, 1, disp); oappend(info, scratchbuf); } static void OP_SEG(disassemble_info *info, int bytemode, int sizeflag) { if (bytemode == w_mode) oappend(info, info->names_seg[info->modrm.reg]); else OP_E(info, info->modrm.mod == 3 ? bytemode : w_mode, sizeflag); } static void OP_DIR(disassemble_info *info, int bytemode, int sizeflag) { int seg; int offset; char scratchbuf[100]; UNUSED(bytemode); if (sizeflag & DFLAG) { offset = xget32(info); seg = xget16(info); } else { offset = xget16(info); seg = xget16(info); } info->used_prefixes |= (info->prefixes & PREFIX_DATA); if (info->intel_syntax) sprintf(scratchbuf, "0x%x:0x%x", seg, offset); else sprintf(scratchbuf, "$0x%x,$0x%x", seg, offset); oappend(info, scratchbuf); } static void OP_OFF(disassemble_info *info, int bytemode, int sizeflag) { bfd_vma off; char scratchbuf[100]; if (info->intel_syntax && (sizeflag & SUFFIX_ALWAYS)) intel_operand_size(info, bytemode, sizeflag); append_seg(info); if ((sizeflag & AFLAG) || info->address_mode == mode_64bit) off = xget32(info); else off = xget16(info); if (info->intel_syntax) { if (!info->active_seg_prefix) { oappend(info, info->names_seg[ds_reg - es_reg]); oappend(info, ":"); } } print_operand_value(info, scratchbuf, 1, off); oappend(info, scratchbuf); } static void OP_OFF64(disassemble_info *info, int bytemode, int sizeflag) { bfd_vma off; char scratchbuf[100]; if (info->address_mode != mode_64bit || (info->prefixes & PREFIX_ADDR)) { OP_OFF(info, bytemode, sizeflag); return; } if (info->intel_syntax && (sizeflag & SUFFIX_ALWAYS)) intel_operand_size(info, bytemode, sizeflag); append_seg(info); off = xget64(info); if (info->intel_syntax) { if (!info->active_seg_prefix) { oappend(info, info->names_seg[ds_reg - es_reg]); oappend(info, ":"); } } print_operand_value(info, scratchbuf, 1, off); oappend(info, scratchbuf); } static void ptr_reg(disassemble_info *info, int code, int sizeflag) { const char *s; *info->obufp++ = info->open_char; info->used_prefixes |= (info->prefixes & PREFIX_ADDR); if (info->address_mode == mode_64bit) { if (!(sizeflag & AFLAG)) s = info->names32[code - eAX_reg]; else s = info->names64[code - eAX_reg]; } else if (sizeflag & AFLAG) s = info->names32[code - eAX_reg]; else s = info->names16[code - eAX_reg]; oappend(info, s); *info->obufp++ = info->close_char; *info->obufp = 0; } static void OP_ESreg(disassemble_info *info, int code, int sizeflag) { if (info->intel_syntax) { switch (info->codep[-1]) { case 0x6d: /* insw/insl */ intel_operand_size(info, z_mode, sizeflag); break; case 0xa5: /* movsw/movsl/movsq */ case 0xa7: /* cmpsw/cmpsl/cmpsq */ case 0xab: /* stosw/stosl */ case 0xaf: /* scasw/scasl */ intel_operand_size(info, v_mode, sizeflag); break; default: intel_operand_size(info, b_mode, sizeflag); break; } } oappend_maybe_intel(info, "%es:"); ptr_reg(info, code, sizeflag); } static void OP_DSreg(disassemble_info *info, int code, int sizeflag) { if (info->intel_syntax) { switch (info->codep[-1]) { case 0x6f: /* outsw/outsl */ intel_operand_size(info, z_mode, sizeflag); break; case 0xa5: /* movsw/movsl/movsq */ case 0xa7: /* cmpsw/cmpsl/cmpsq */ case 0xad: /* lodsw/lodsl/lodsq */ intel_operand_size(info, v_mode, sizeflag); break; default: intel_operand_size(info, b_mode, sizeflag); break; } } /* Set active_seg_prefix to PREFIX_DS if it is unset so that the default segment register DS is printed. */ if (!info->active_seg_prefix) info->active_seg_prefix = PREFIX_DS; append_seg(info); ptr_reg(info, code, sizeflag); } static void OP_C(disassemble_info *info, int bytemode, int sizeflag) { int add; char scratchbuf[100]; UNUSED(bytemode); UNUSED(sizeflag); if (info->rex & REX_R) { USED_REX(REX_R); add = 8; } else if (info->address_mode != mode_64bit && (info->prefixes & PREFIX_LOCK)) { info->all_prefixes[info->last_lock_prefix] = 0; info->used_prefixes |= PREFIX_LOCK; add = 8; } else { add = 0; } sprintf(scratchbuf, "%%cr%d", info->modrm.reg + add); oappend_maybe_intel(info, scratchbuf); } static void OP_D(disassemble_info *info, int bytemode, int sizeflag) { int add; char scratchbuf[100]; UNUSED(bytemode); UNUSED(sizeflag); USED_REX(REX_R); if (info->rex & REX_R) add = 8; else add = 0; if (info->intel_syntax) sprintf(scratchbuf, "db%d", info->modrm.reg + add); else sprintf(scratchbuf, "%%db%d", info->modrm.reg + add); oappend(info, scratchbuf); } static void OP_T(disassemble_info *info, int bytemode, int sizeflag) { char scratchbuf[100]; UNUSED(bytemode); UNUSED(sizeflag); sprintf(scratchbuf, "%%tr%d", info->modrm.reg); oappend_maybe_intel(info, scratchbuf); } static void OP_R(disassemble_info *info, int bytemode, int sizeflag) { /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; OP_E_register(info, bytemode, sizeflag); } static void OP_MMX(disassemble_info *info, int bytemode, int sizeflag) { int reg = info->modrm.reg; const char *const *names; UNUSED(bytemode); UNUSED(sizeflag); info->used_prefixes |= (info->prefixes & PREFIX_DATA); if (info->prefixes & PREFIX_DATA) { names = info->names_xmm; USED_REX(REX_R); if (info->rex & REX_R) reg += 8; } else { names = info->names_mm; } oappend(info, names[reg]); } static void OP_XMM(disassemble_info *info, int bytemode, int sizeflag) { int reg = info->modrm.reg; const char *const *names; UNUSED(sizeflag); USED_REX(REX_R); if (info->rex & REX_R) reg += 8; if (info->vex.evex) { if (!info->vex.r) reg += 16; } if (info->need_vex && bytemode != xmm_mode && bytemode != xmmq_mode && bytemode != evex_half_bcst_xmmq_mode && bytemode != ymm_mode && bytemode != scalar_mode) { switch (info->vex.length) { case 128: names = info->names_xmm; break; case 256: if (info->vex.w || (bytemode != vex_vsib_q_w_dq_mode && bytemode != vex_vsib_q_w_d_mode)) names = info->names_ymm; else names = info->names_xmm; break; case 512: names = info->names_zmm; break; default: internal_error(info); return; } } else if (bytemode == xmmq_mode || bytemode == evex_half_bcst_xmmq_mode) { switch (info->vex.length) { case 128: case 256: names = info->names_xmm; break; case 512: names = info->names_ymm; break; default: internal_error(info); return; } } else if (bytemode == ymm_mode) { names = info->names_ymm; } else { names = info->names_xmm; } oappend(info, names[reg]); } static void OP_EM(disassemble_info *info, int bytemode, int sizeflag) { int reg; const char *const *names; if (info->modrm.mod != 3) { if (info->intel_syntax && (bytemode == v_mode || bytemode == v_swap_mode)) { bytemode = (info->prefixes & PREFIX_DATA) ? x_mode : q_mode; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } OP_E(info, bytemode, sizeflag); return; } if ((sizeflag & SUFFIX_ALWAYS) && bytemode == v_swap_mode) swap_operand(info); /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; info->used_prefixes |= (info->prefixes & PREFIX_DATA); reg = info->modrm.rm; if (info->prefixes & PREFIX_DATA) { names = info->names_xmm; USED_REX(REX_B); if (info->rex & REX_B) reg += 8; } else { names = info->names_mm; } oappend(info, names[reg]); } /* cvt* are the only instructions in sse2 which have both SSE and MMX operands and also have 0x66 prefix in their opcode. 0x66 was originally used to differentiate between SSE and MMX instruction(operands). So we have to handle the cvt* separately using OP_EMC and OP_MXC */ static void OP_EMC(disassemble_info *info, int bytemode, int sizeflag) { if (info->modrm.mod != 3) { if (info->intel_syntax && bytemode == v_mode) { bytemode = (info->prefixes & PREFIX_DATA) ? x_mode : q_mode; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } OP_E(info, bytemode, sizeflag); return; } /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; info->used_prefixes |= (info->prefixes & PREFIX_DATA); oappend(info, info->names_mm[info->modrm.rm]); } static void OP_MXC(disassemble_info *info, int bytemode, int sizeflag) { UNUSED(bytemode); UNUSED(sizeflag); info->used_prefixes |= (info->prefixes & PREFIX_DATA); oappend(info, info->names_mm[info->modrm.reg]); } static void OP_EX(disassemble_info *info, int bytemode, int sizeflag) { int reg; const char *const *names; /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; if (info->modrm.mod != 3) { OP_E_memory(info, bytemode, sizeflag); return; } reg = info->modrm.rm; USED_REX(REX_B); if (info->rex & REX_B) reg += 8; if (info->vex.evex) { USED_REX(REX_X); if ((info->rex & REX_X)) reg += 16; } if ((sizeflag & SUFFIX_ALWAYS) && (bytemode == x_swap_mode || bytemode == d_swap_mode || bytemode == dqw_swap_mode || bytemode == d_scalar_swap_mode || bytemode == q_swap_mode || bytemode == q_scalar_swap_mode)) swap_operand(info); if (info->need_vex && bytemode != xmm_mode && bytemode != xmmdw_mode && bytemode != xmmqd_mode && bytemode != xmm_mb_mode && bytemode != xmm_mw_mode && bytemode != xmm_md_mode && bytemode != xmm_mq_mode && bytemode != xmm_mdq_mode && bytemode != xmmq_mode && bytemode != evex_half_bcst_xmmq_mode && bytemode != ymm_mode && bytemode != d_scalar_mode && bytemode != d_scalar_swap_mode && bytemode != q_scalar_mode && bytemode != q_scalar_swap_mode && bytemode != vex_scalar_w_dq_mode) { switch (info->vex.length) { case 128: names = info->names_xmm; break; case 256: names = info->names_ymm; break; case 512: names = info->names_zmm; break; default: internal_error(info); return; } } else if (bytemode == xmmq_mode || bytemode == evex_half_bcst_xmmq_mode) { switch (info->vex.length) { case 128: case 256: names = info->names_xmm; break; case 512: names = info->names_ymm; break; default: internal_error(info); return; } } else if (bytemode == ymm_mode) { names = info->names_ymm; } else { names = info->names_xmm; } oappend(info, names[reg]); } static void OP_MS(disassemble_info *info, int bytemode, int sizeflag) { if (info->modrm.mod == 3) OP_EM(info, bytemode, sizeflag); else BadOp(info); } static void OP_XS(disassemble_info *info, int bytemode, int sizeflag) { if (info->modrm.mod == 3) OP_EX(info, bytemode, sizeflag); else BadOp(info); } static void OP_M(disassemble_info *info, int bytemode, int sizeflag) { if (info->modrm.mod == 3) /* bad bound,lea,lds,les,lfs,lgs,lss,cmpxchg8b,vmptrst modrm */ BadOp(info); else OP_E(info, bytemode, sizeflag); } static void OP_0f07(disassemble_info *info, int bytemode, int sizeflag) { if (info->modrm.mod != 3 || info->modrm.rm != 0) BadOp(info); else OP_E(info, bytemode, sizeflag); } /* NOP is an alias of "xchg %ax,%ax" in 16bit mode, "xchg %eax,%eax" in 32bit mode and "xchg %rax,%rax" in 64bit mode. */ static void NOP_Fixup1(disassemble_info *info, int bytemode, int sizeflag) { if ((info->prefixes & PREFIX_DATA) != 0 || (info->rex != 0 && info->rex != 0x48 && info->address_mode == mode_64bit)) OP_REG(info, bytemode, sizeflag); else strcpy(info->obuf, "nop"); } static void NOP_Fixup2(disassemble_info *info, int bytemode, int sizeflag) { if ((info->prefixes & PREFIX_DATA) != 0 || (info->rex != 0 && info->rex != 0x48 && info->address_mode == mode_64bit)) OP_IMREG(info, bytemode, sizeflag); } static const char *const Suffix3DNow[] = { /* 00 */ NULL, NULL, NULL, NULL, /* 04 */ NULL, NULL, NULL, NULL, /* 08 */ NULL, NULL, NULL, NULL, /* 0C */ "pi2fw", "pi2fd", NULL, NULL, /* 10 */ NULL, NULL, NULL, NULL, /* 14 */ NULL, NULL, NULL, NULL, /* 18 */ NULL, NULL, NULL, NULL, /* 1C */ "pf2iw", "pf2id", NULL, NULL, /* 20 */ NULL, NULL, NULL, NULL, /* 24 */ NULL, NULL, NULL, NULL, /* 28 */ NULL, NULL, NULL, NULL, /* 2C */ NULL, NULL, NULL, NULL, /* 30 */ NULL, NULL, NULL, NULL, /* 34 */ NULL, NULL, NULL, NULL, /* 38 */ NULL, NULL, NULL, NULL, /* 3C */ NULL, NULL, NULL, NULL, /* 40 */ NULL, NULL, NULL, NULL, /* 44 */ NULL, NULL, NULL, NULL, /* 48 */ NULL, NULL, NULL, NULL, /* 4C */ NULL, NULL, NULL, NULL, /* 50 */ NULL, NULL, NULL, NULL, /* 54 */ NULL, NULL, NULL, NULL, /* 58 */ NULL, NULL, NULL, NULL, /* 5C */ NULL, NULL, NULL, NULL, /* 60 */ NULL, NULL, NULL, NULL, /* 64 */ NULL, NULL, NULL, NULL, /* 68 */ NULL, NULL, NULL, NULL, /* 6C */ NULL, NULL, NULL, NULL, /* 70 */ NULL, NULL, NULL, NULL, /* 74 */ NULL, NULL, NULL, NULL, /* 78 */ NULL, NULL, NULL, NULL, /* 7C */ NULL, NULL, NULL, NULL, /* 80 */ NULL, NULL, NULL, NULL, /* 84 */ NULL, NULL, NULL, NULL, /* 88 */ NULL, NULL, "pfnacc", NULL, /* 8C */ NULL, NULL, "pfpnacc", NULL, /* 90 */ "pfcmpge", NULL, NULL, NULL, /* 94 */ "pfmin", NULL, "pfrcp", "pfrsqrt", /* 98 */ NULL, NULL, "pfsub", NULL, /* 9C */ NULL, NULL, "pfadd", NULL, /* A0 */ "pfcmpgt", NULL, NULL, NULL, /* A4 */ "pfmax", NULL, "pfrcpit1", "pfrsqit1", /* A8 */ NULL, NULL, "pfsubr", NULL, /* AC */ NULL, NULL, "pfacc", NULL, /* B0 */ "pfcmpeq", NULL, NULL, NULL, /* B4 */ "pfmul", NULL, "pfrcpit2", "pmulhrw", /* B8 */ NULL, NULL, NULL, "pswapd", /* BC */ NULL, NULL, NULL, "pavgusb", /* C0 */ NULL, NULL, NULL, NULL, /* C4 */ NULL, NULL, NULL, NULL, /* C8 */ NULL, NULL, NULL, NULL, /* CC */ NULL, NULL, NULL, NULL, /* D0 */ NULL, NULL, NULL, NULL, /* D4 */ NULL, NULL, NULL, NULL, /* D8 */ NULL, NULL, NULL, NULL, /* DC */ NULL, NULL, NULL, NULL, /* E0 */ NULL, NULL, NULL, NULL, /* E4 */ NULL, NULL, NULL, NULL, /* E8 */ NULL, NULL, NULL, NULL, /* EC */ NULL, NULL, NULL, NULL, /* F0 */ NULL, NULL, NULL, NULL, /* F4 */ NULL, NULL, NULL, NULL, /* F8 */ NULL, NULL, NULL, NULL, /* FC */ NULL, NULL, NULL, NULL, }; static void OP_3DNowSuffix(disassemble_info *info, int bytemode, int sizeflag) { const char *mnemonic; UNUSED(bytemode); UNUSED(sizeflag); FETCH_DATA(info, info->codep + 1); /* AMD 3DNow! instructions are specified by an opcode suffix in the place where an 8-bit immediate would normally go. ie. the last byte of the instruction. */ info->obufp = info->mnemonicendp; mnemonic = Suffix3DNow[*info->codep++ & 0xff]; if (mnemonic) { oappend(info, mnemonic); } else { /* Since a variable sized modrm/sib chunk is between the start of the opcode (0x0f0f) and the opcode suffix, we need to do all the modrm processing first, and don't know until now that we have a bad opcode. This necessitates some cleaning up. */ info->op_out[0][0] = '\0'; info->op_out[1][0] = '\0'; BadOp(info); } info->mnemonicendp = info->obufp; } static struct op const simd_cmp_op[] = { { STRING_COMMA_LEN("eq") }, { STRING_COMMA_LEN("lt") }, { STRING_COMMA_LEN("le") }, { STRING_COMMA_LEN("unord") }, { STRING_COMMA_LEN("neq") }, { STRING_COMMA_LEN("nlt") }, { STRING_COMMA_LEN("nle") }, { STRING_COMMA_LEN("ord") } }; static void CMP_Fixup(disassemble_info *info, int bytemode, int sizeflag) { unsigned int cmp_type; char scratchbuf[100]; UNUSED(bytemode); UNUSED(sizeflag); FETCH_DATA(info, info->codep + 1); cmp_type = *info->codep++ & 0xff; if (cmp_type < ARRAY_SIZE(simd_cmp_op)) { char suffix[3]; char *p = info->mnemonicendp - 2; suffix[0] = p[0]; suffix[1] = p[1]; suffix[2] = '\0'; sprintf(p, "%s%s", simd_cmp_op[cmp_type].name, suffix); info->mnemonicendp += simd_cmp_op[cmp_type].len; } else { /* We have a reserved extension byte. Output it directly. */ scratchbuf[0] = '$'; print_operand_value(info, scratchbuf + 1, 1, cmp_type); oappend_maybe_intel(info, scratchbuf); } } static void OP_Mwaitx(disassemble_info *info, int bytemode, int sizeflag) { UNUSED(bytemode); UNUSED(sizeflag); /* mwaitx %eax,%ecx,%ebx */ if (!info->intel_syntax) { const char *const *names = (info->address_mode == mode_64bit ? info->names64 : info->names32); strcpy(info->op_out[0], names[0]); strcpy(info->op_out[1], names[1]); strcpy(info->op_out[2], names[3]); info->two_source_ops = 1; } /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; } static void OP_Mwait(disassemble_info *info, int bytemode, int sizeflag) { UNUSED(bytemode); UNUSED(sizeflag); /* mwait %eax,%ecx */ if (!info->intel_syntax) { const char *const *names = (info->address_mode == mode_64bit ? info->names64 : info->names32); strcpy(info->op_out[0], names[0]); strcpy(info->op_out[1], names[1]); info->two_source_ops = 1; } /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; } static void OP_Monitor(disassemble_info *info, int bytemode, int sizeflag) { UNUSED(bytemode); UNUSED(sizeflag); /* monitor %eax,%ecx,%edx" */ if (!info->intel_syntax) { const char *const *op1_names; const char *const *names = (info->address_mode == mode_64bit ? info->names64 : info->names32); if (!(info->prefixes & PREFIX_ADDR)) { op1_names = (info->address_mode == mode_16bit ? info->names16 : names); } else { /* Remove "addr16/addr32". */ info->all_prefixes[info->last_addr_prefix] = 0; op1_names = (info->address_mode != mode_32bit ? info->names32 : info->names16); info->used_prefixes |= PREFIX_ADDR; } strcpy(info->op_out[0], op1_names[0]); strcpy(info->op_out[1], names[1]); strcpy(info->op_out[2], names[2]); info->two_source_ops = 1; } /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; } /* We use the high bit to indicate different name for the same prefix. */ #define REP_PREFIX (REPE_PREFIX_OPCODE | 0x100) #define XACQUIRE_PREFIX (XACQUIRE_PREFIX_OPCODE | 0x200) #define XRELEASE_PREFIX (XRELEASE_PREFIX_OPCODE | 0x400) #define BND_PREFIX (BND_PREFIX_OPCODE | 0x400) static void REP_Fixup(disassemble_info *info, int bytemode, int sizeflag) { /* The 0xf3 prefix should be displayed as "rep" for ins, outs, movs, lods and stos. */ if (info->prefixes & PREFIX_REPZ) info->all_prefixes[info->last_repz_prefix] = REP_PREFIX; switch (bytemode) { case al_reg: case eAX_reg: case indir_dx_reg: OP_IMREG(info, bytemode, sizeflag); break; case eDI_reg: OP_ESreg(info, bytemode, sizeflag); break; case eSI_reg: OP_DSreg(info, bytemode, sizeflag); break; default: internal_error(info); return; } } /* For BND-prefixed instructions 0xF2 prefix should be displayed as "bnd". */ static void BND_Fixup(disassemble_info *info, int bytemode, int sizeflag) { UNUSED(bytemode); UNUSED(sizeflag); if (info->prefixes & PREFIX_REPNZ) info->all_prefixes[info->last_repnz_prefix] = BND_PREFIX; } /* Similar to OP_E. But the 0xf2/0xf3 prefixes should be displayed as "xacquire"/"xrelease" for memory operand if there is a LOCK prefix. */ static void HLE_Fixup1(disassemble_info *info, int bytemode, int sizeflag) { if (info->modrm.mod != 3 && (info->prefixes & PREFIX_LOCK) != 0) { if (info->prefixes & PREFIX_REPZ) info->all_prefixes[info->last_repz_prefix] = XRELEASE_PREFIX; if (info->prefixes & PREFIX_REPNZ) info->all_prefixes[info->last_repnz_prefix] = XACQUIRE_PREFIX; } OP_E(info, bytemode, sizeflag); } /* Similar to OP_E. But the 0xf2/0xf3 prefixes should be displayed as "xacquire"/"xrelease" for memory operand. No check for LOCK prefix. */ static void HLE_Fixup2(disassemble_info *info, int bytemode, int sizeflag) { if (info->modrm.mod != 3) { if (info->prefixes & PREFIX_REPZ) info->all_prefixes[info->last_repz_prefix] = XRELEASE_PREFIX; if (info->prefixes & PREFIX_REPNZ) info->all_prefixes[info->last_repnz_prefix] = XACQUIRE_PREFIX; } OP_E(info, bytemode, sizeflag); } /* Similar to OP_E. But the 0xf3 prefixes should be displayed as "xrelease" for memory operand. No check for LOCK prefix. */ static void HLE_Fixup3(disassemble_info *info, int bytemode, int sizeflag) { if (info->modrm.mod != 3 && info->last_repz_prefix > info->last_repnz_prefix && (info->prefixes & PREFIX_REPZ) != 0) info->all_prefixes[info->last_repz_prefix] = XRELEASE_PREFIX; OP_E(info, bytemode, sizeflag); } static void CMPXCHG8B_Fixup(disassemble_info *info, int bytemode, int sizeflag) { USED_REX(REX_W); if (info->rex & REX_W) { /* Change cmpxchg8b to cmpxchg16b. */ char *p = info->mnemonicendp - 2; info->mnemonicendp = stpcpy(p, "16b"); bytemode = o_mode; } else if ((info->prefixes & PREFIX_LOCK) != 0) { if (info->prefixes & PREFIX_REPZ) info->all_prefixes[info->last_repz_prefix] = XRELEASE_PREFIX; if (info->prefixes & PREFIX_REPNZ) info->all_prefixes[info->last_repnz_prefix] = XACQUIRE_PREFIX; } OP_M(info, bytemode, sizeflag); } static void XMM_Fixup(disassemble_info *info, int reg, int sizeflag) { const char *const *names; UNUSED(sizeflag); if (info->need_vex) { switch (info->vex.length) { case 128: names = info->names_xmm; break; case 256: names = info->names_ymm; break; default: internal_error(info); return; } } else { names = info->names_xmm; } oappend(info, names[reg]); } static void CRC32_Fixup(disassemble_info *info, int bytemode, int sizeflag) { /* Add proper suffix to "crc32". */ char *p = info->mnemonicendp; switch (bytemode) { case b_mode: if (info->intel_syntax) goto skip; *p++ = 'b'; break; case v_mode: if (info->intel_syntax) goto skip; USED_REX(REX_W); if (info->rex & REX_W) *p++ = 'q'; else { if (sizeflag & DFLAG) *p++ = 'l'; else *p++ = 'w'; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } break; default: internal_error(info); break; } info->mnemonicendp = p; *p = '\0'; skip: if (info->modrm.mod == 3) { int add; /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; USED_REX(REX_B); add = (info->rex & REX_B) ? 8 : 0; if (bytemode == b_mode) { USED_REX(0); if (info->rex) oappend(info, info->names8rex[info->modrm.rm + add]); else oappend(info, info->names8[info->modrm.rm + add]); } else { USED_REX(REX_W); if (info->rex & REX_W) oappend(info, info->names64[info->modrm.rm + add]); else if ((info->prefixes & PREFIX_DATA)) oappend(info, info->names16[info->modrm.rm + add]); else oappend(info, info->names32[info->modrm.rm + add]); } } else { OP_E(info, bytemode, sizeflag); } } static void FXSAVE_Fixup(disassemble_info *info, int bytemode, int sizeflag) { /* Add proper suffix to "fxsave" and "fxrstor". */ USED_REX(REX_W); if (info->rex & REX_W) { char *p = info->mnemonicendp; *p++ = '6'; *p++ = '4'; *p = '\0'; info->mnemonicendp = p; } OP_M(info, bytemode, sizeflag); } /* Display the destination register operand for instructions with VEX. */ static void OP_VEX(disassemble_info *info, int bytemode, int sizeflag) { int reg; const char *const *names; UNUSED(sizeflag); if (!info->need_vex) { internal_error(info); return; } if (!info->need_vex_reg) return; reg = info->vex.register_specifier; if (info->vex.evex) { if (!info->vex.v) reg += 16; } if (bytemode == vex_scalar_mode) { oappend(info, info->names_xmm[reg]); return; } switch (info->vex.length) { case 128: switch (bytemode) { case vex_mode: case vex128_mode: case vex_vsib_q_w_dq_mode: case vex_vsib_q_w_d_mode: names = info->names_xmm; break; case dq_mode: if (info->vex.w) names = info->names64; else names = info->names32; break; case mask_bd_mode: case mask_mode: if (reg > 0x7) { oappend(info, "(bad)"); return; } names = info->names_mask; break; default: internal_error(info); return; } break; case 256: switch (bytemode) { case vex_mode: case vex256_mode: names = info->names_ymm; break; case vex_vsib_q_w_dq_mode: case vex_vsib_q_w_d_mode: names = info->vex.w ? info->names_ymm : info->names_xmm; break; case mask_bd_mode: case mask_mode: if (reg > 0x7) { oappend(info, "(bad)"); return; } names = info->names_mask; break; default: /* See PR binutils/20893 for a reproducer. */ oappend(info, "(bad)"); return; } break; case 512: names = info->names_zmm; break; default: internal_error(info); return; } oappend(info, names[reg]); } /* Get the VEX immediate byte without moving codep. */ static unsigned char get_vex_imm8(disassemble_info *info, int sizeflag, int opnum) { int bytes_before_imm = 0; if (info->modrm.mod != 3) { /* There are SIB/displacement bytes. */ if ((sizeflag & AFLAG) || info->address_mode == mode_64bit) { /* 32/64 bit address mode */ int base = info->modrm.rm; /* Check SIB byte. */ if (base == 4) { FETCH_DATA(info, info->codep + 1); base = *info->codep & 7; /* When decoding the third source, don't increase bytes_before_imm as this has already been incremented by one in OP_E_memory while decoding the second source operand. */ if (opnum == 0) bytes_before_imm++; } /* Don't increase bytes_before_imm when decoding the third source, it has already been incremented by OP_E_memory while decoding the second source operand. */ if (opnum == 0) { switch (info->modrm.mod) { case 0: /* When modrm.rm == 5 or modrm.rm == 4 and base in SIB == 5, there is a 4 byte displacement. */ if (base != 5) /* No displacement. */ break; /* Fall through. */ case 2: /* 4 byte displacement. */ bytes_before_imm += 4; break; case 1: /* 1 byte displacement. */ bytes_before_imm++; break; } } } else { /* 16 bit address mode */ /* Don't increase bytes_before_imm when decoding the third source, it has already been incremented by OP_E_memory while decoding the second source operand. */ if (opnum == 0) { switch (info->modrm.mod) { case 0: /* When modrm.rm == 6, there is a 2 byte displacement. */ if (info->modrm.rm != 6) /* No displacement. */ break; /* Fall through. */ case 2: /* 2 byte displacement. */ bytes_before_imm += 2; break; case 1: /* 1 byte displacement: when decoding the third source, don't increase bytes_before_imm as this has already been incremented by one in OP_E_memory while decoding the second source operand. */ if (opnum == 0) bytes_before_imm++; break; } } } } FETCH_DATA(info, info->codep + bytes_before_imm + 1); return info->codep[bytes_before_imm]; } static void OP_EX_VexReg(disassemble_info *info, int bytemode, int sizeflag, int reg) { const char *const *names; if (reg == -1 && info->modrm.mod != 3) { OP_E_memory(info, bytemode, sizeflag); return; } else { if (reg == -1) { reg = info->modrm.rm; USED_REX(REX_B); if (info->rex & REX_B) reg += 8; } else if (reg > 7 && info->address_mode != mode_64bit) { BadOp(info); } } switch (info->vex.length) { case 128: names = info->names_xmm; break; case 256: names = info->names_ymm; break; default: internal_error(info); return; } oappend(info, names[reg]); } static void OP_EX_VexImmW(disassemble_info *info, int bytemode, int sizeflag) { int reg = -1; char scratchbuf[100]; if (info->vex_w_done == 0) { info->vex_w_done = 1; /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; info->vex_imm8 = get_vex_imm8(info, sizeflag, 0); if (info->vex.w) reg = info->vex_imm8 >> 4; OP_EX_VexReg(info, bytemode, sizeflag, reg); } else if (info->vex_w_done == 1) { info->vex_w_done = 2; if (!info->vex.w) reg = info->vex_imm8 >> 4; OP_EX_VexReg(info, bytemode, sizeflag, reg); } else { /* Output the imm8 directly. */ scratchbuf[0] = '$'; print_operand_value(info, scratchbuf + 1, 1, info->vex_imm8 & 0xf); oappend_maybe_intel(info, scratchbuf); info->codep++; } } static void OP_Vex_2src(disassemble_info *info, int bytemode, int sizeflag) { if (info->modrm.mod == 3) { int reg = info->modrm.rm; USED_REX(REX_B); if (info->rex & REX_B) reg += 8; oappend(info, info->names_xmm[reg]); } else { if (info->intel_syntax && (bytemode == v_mode || bytemode == v_swap_mode)) { bytemode = (info->prefixes & PREFIX_DATA) ? x_mode : q_mode; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } OP_E(info, bytemode, sizeflag); } } static void OP_Vex_2src_1(disassemble_info *info, int bytemode, int sizeflag) { if (info->modrm.mod == 3) { /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; } if (info->vex.w) oappend(info, info->names_xmm[info->vex.register_specifier]); else OP_Vex_2src(info, bytemode, sizeflag); } static void OP_Vex_2src_2(disassemble_info *info, int bytemode, int sizeflag) { if (info->vex.w) OP_Vex_2src(info, bytemode, sizeflag); else oappend(info, info->names_xmm[info->vex.register_specifier]); } static void OP_EX_VexW(disassemble_info *info, int bytemode, int sizeflag) { int reg = -1; if (!info->vex_w_done) { info->vex_w_done = 1; /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; if (info->vex.w) reg = get_vex_imm8(info, sizeflag, 0) >> 4; } else { if (!info->vex.w) reg = get_vex_imm8(info, sizeflag, 1) >> 4; } OP_EX_VexReg(info, bytemode, sizeflag, reg); } static void VEXI4_Fixup(disassemble_info *info, int bytemode, int sizeflag) { UNUSED(bytemode); UNUSED(sizeflag); /* Skip the immediate byte and check for invalid bits. */ FETCH_DATA(info, info->codep + 1); if (*info->codep++ & 0xf) BadOp(info); } static void OP_REG_VexI4(disassemble_info *info, int bytemode, int sizeflag) { int reg; const char *const *names; UNUSED(sizeflag); FETCH_DATA(info, info->codep + 1); reg = *info->codep++; if (bytemode != x_mode) { internal_error(info); return; } if (reg & 0xf) BadOp(info); reg >>= 4; if (reg > 7 && info->address_mode != mode_64bit) BadOp(info); switch (info->vex.length) { case 128: names = info->names_xmm; break; case 256: names = info->names_ymm; break; default: internal_error(info); return; } oappend(info, names[reg]); } static void OP_XMM_VexW(disassemble_info *info, int bytemode, int sizeflag) { /* Turn off the REX.W bit since it is used for swapping operands now. */ info->rex &= ~REX_W; OP_XMM(info, bytemode, sizeflag); } static void OP_EX_Vex(disassemble_info *info, int bytemode, int sizeflag) { if (info->modrm.mod != 3) { if (info->vex.register_specifier != 0) BadOp(info); info->need_vex_reg = 0; } OP_EX(info, bytemode, sizeflag); } static void OP_XMM_Vex(disassemble_info *info, int bytemode, int sizeflag) { if (info->modrm.mod != 3) { if (info->vex.register_specifier != 0) BadOp(info); info->need_vex_reg = 0; } OP_XMM(info, bytemode, sizeflag); } static void VZERO_Fixup(disassemble_info *info, int bytemode, int sizeflag) { UNUSED(bytemode); UNUSED(sizeflag); switch (info->vex.length) { case 128: info->mnemonicendp = stpcpy(info->obuf, "vzeroupper"); break; case 256: info->mnemonicendp = stpcpy(info->obuf, "vzeroall"); break; default: internal_error(info); return; } } static struct op const vex_cmp_op[] = { { STRING_COMMA_LEN("eq") }, { STRING_COMMA_LEN("lt") }, { STRING_COMMA_LEN("le") }, { STRING_COMMA_LEN("unord") }, { STRING_COMMA_LEN("neq") }, { STRING_COMMA_LEN("nlt") }, { STRING_COMMA_LEN("nle") }, { STRING_COMMA_LEN("ord") }, { STRING_COMMA_LEN("eq_uq") }, { STRING_COMMA_LEN("nge") }, { STRING_COMMA_LEN("ngt") }, { STRING_COMMA_LEN("false") }, { STRING_COMMA_LEN("neq_oq") }, { STRING_COMMA_LEN("ge") }, { STRING_COMMA_LEN("gt") }, { STRING_COMMA_LEN("true") }, { STRING_COMMA_LEN("eq_os") }, { STRING_COMMA_LEN("lt_oq") }, { STRING_COMMA_LEN("le_oq") }, { STRING_COMMA_LEN("unord_s") }, { STRING_COMMA_LEN("neq_us") }, { STRING_COMMA_LEN("nlt_uq") }, { STRING_COMMA_LEN("nle_uq") }, { STRING_COMMA_LEN("ord_s") }, { STRING_COMMA_LEN("eq_us") }, { STRING_COMMA_LEN("nge_uq") }, { STRING_COMMA_LEN("ngt_uq") }, { STRING_COMMA_LEN("false_os") }, { STRING_COMMA_LEN("neq_os") }, { STRING_COMMA_LEN("ge_oq") }, { STRING_COMMA_LEN("gt_oq") }, { STRING_COMMA_LEN("true_us") }, }; static void VCMP_Fixup(disassemble_info *info, int bytemode, int sizeflag) { unsigned int cmp_type; char scratchbuf[100]; UNUSED(bytemode); UNUSED(sizeflag); FETCH_DATA(info, info->codep + 1); cmp_type = *info->codep++ & 0xff; if (cmp_type < ARRAY_SIZE(vex_cmp_op)) { char suffix[3]; char *p = info->mnemonicendp - 2; suffix[0] = p[0]; suffix[1] = p[1]; suffix[2] = '\0'; sprintf(p, "%s%s", vex_cmp_op[cmp_type].name, suffix); info->mnemonicendp += vex_cmp_op[cmp_type].len; } else { /* We have a reserved extension byte. Output it directly. */ scratchbuf[0] = '$'; print_operand_value(info, scratchbuf + 1, 1, cmp_type); oappend_maybe_intel(info, scratchbuf); } } static void VPCMP_Fixup(disassemble_info *info, int bytemode, int sizeflag) { unsigned int cmp_type; char scratchbuf[100]; UNUSED(bytemode); UNUSED(sizeflag); if (!info->vex.evex) { internal_error(info); return; } FETCH_DATA(info, info->codep + 1); cmp_type = *info->codep++ & 0xff; /* There are aliases for immediates 0, 1, 2, 4, 5, 6. If it's the case, print suffix, otherwise - print the immediate. */ if (cmp_type < ARRAY_SIZE(simd_cmp_op) && cmp_type != 3 && cmp_type != 7) { char suffix[3]; char *p = info->mnemonicendp - 2; /* vpcmp* can have both one- and two-lettered suffix. */ if (p[0] == 'p') { p++; suffix[0] = p[0]; suffix[1] = '\0'; } else { suffix[0] = p[0]; suffix[1] = p[1]; suffix[2] = '\0'; } sprintf(p, "%s%s", simd_cmp_op[cmp_type].name, suffix); info->mnemonicendp += simd_cmp_op[cmp_type].len; } else { /* We have a reserved extension byte. Output it directly. */ scratchbuf[0] = '$'; print_operand_value(info, scratchbuf + 1, 1, cmp_type); oappend_maybe_intel(info, scratchbuf); } } static const struct op pclmul_op[] = { { STRING_COMMA_LEN("lql") }, { STRING_COMMA_LEN("hql") }, { STRING_COMMA_LEN("lqh") }, { STRING_COMMA_LEN("hqh") } }; static void PCLMUL_Fixup(disassemble_info *info, int bytemode, int sizeflag) { unsigned int pclmul_type; char scratchbuf[100]; UNUSED(bytemode); UNUSED(sizeflag); FETCH_DATA(info, info->codep + 1); pclmul_type = *info->codep++ & 0xff; switch (pclmul_type) { case 0x10: pclmul_type = 2; break; case 0x11: pclmul_type = 3; break; default: break; } if (pclmul_type < ARRAY_SIZE(pclmul_op)) { char suffix[4]; char *p = info->mnemonicendp - 3; suffix[0] = p[0]; suffix[1] = p[1]; suffix[2] = p[2]; suffix[3] = '\0'; sprintf(p, "%s%s", pclmul_op[pclmul_type].name, suffix); info->mnemonicendp += pclmul_op[pclmul_type].len; } else { /* We have a reserved extension byte. Output it directly. */ scratchbuf[0] = '$'; print_operand_value(info, scratchbuf + 1, 1, pclmul_type); oappend_maybe_intel(info, scratchbuf); } } static void MOVBE_Fixup(disassemble_info *info, int bytemode, int sizeflag) { /* Add proper suffix to "movbe". */ char *p = info->mnemonicendp; switch (bytemode) { case v_mode: if (info->intel_syntax) goto skip; USED_REX(REX_W); if (sizeflag & SUFFIX_ALWAYS) { if (info->rex & REX_W) *p++ = 'q'; else { if (sizeflag & DFLAG) *p++ = 'l'; else *p++ = 'w'; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } } break; default: internal_error(info); break; } info->mnemonicendp = p; *p = '\0'; skip: OP_M(info, bytemode, sizeflag); } static void OP_LWPCB_E(disassemble_info *info, int bytemode, int sizeflag) { int reg; const char *const *names; UNUSED(bytemode); UNUSED(sizeflag); /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; if (info->vex.w) names = info->names64; else names = info->names32; reg = info->modrm.rm; USED_REX(REX_B); if (info->rex & REX_B) reg += 8; oappend(info, names[reg]); } static void OP_LWP_E(disassemble_info *info, int bytemode, int sizeflag) { const char *const *names; UNUSED(bytemode); UNUSED(sizeflag); if (info->vex.w) names = info->names64; else names = info->names32; oappend(info, names[info->vex.register_specifier]); } static void OP_Mask(disassemble_info *info, int bytemode, int sizeflag) { UNUSED(sizeflag); if (!info->vex.evex || (bytemode != mask_mode && bytemode != mask_bd_mode)) { internal_error(info); return; } USED_REX(REX_R); if ((info->rex & REX_R) != 0 || !info->vex.r) { BadOp(info); return; } oappend(info, info->names_mask[info->modrm.reg]); } static const char *const names_rounding[] = { "{rn-sae}", "{rd-sae}", "{ru-sae}", "{rz-sae}" }; static void OP_Rounding(disassemble_info *info, int bytemode, int sizeflag) { UNUSED(sizeflag); if (!info->vex.evex || (bytemode != evex_rounding_mode && bytemode != evex_sae_mode)) { internal_error(info); return; } if (info->modrm.mod == 3 && info->vex.b) { switch (bytemode) { case evex_rounding_mode: oappend(info, names_rounding[info->vex.ll]); break; case evex_sae_mode: oappend(info, "{sae}"); break; default: break; } } } /* Upper case letters in the instruction names here are macros. 'A' => print 'b' if no register operands or suffix_always is true 'B' => print 'b' if suffix_always is true 'C' => print 's' or 'l' ('w' or 'd' in Intel mode) depending on operand size prefix 'D' => print 'w' if no register operands or 'w', 'l' or 'q', if suffix_always is true 'E' => print 'e' if 32-bit form of jcxz 'F' => print 'w' or 'l' depending on address size prefix (loop insns) 'G' => print 'w' or 'l' depending on operand size prefix (i/o insns) 'H' => print ",pt" or ",pn" branch hint 'I' => honor following macro letter even in Intel mode (implemented only for some of the macro letters) 'J' => print 'l' 'K' => print 'd' or 'q' if rex prefix is present. 'L' => print 'l' if suffix_always is true 'M' => print 'r' if intel_mnemonic is false. 'N' => print 'n' if instruction has no wait "prefix" 'O' => print 'd' or 'o' (or 'q' in Intel mode) 'P' => print 'w', 'l' or 'q' if instruction has an operand size prefix, or suffix_always is true. print 'q' if rex prefix is present. 'Q' => print 'w', 'l' or 'q' for memory operand or suffix_always is true 'R' => print 'w', 'l' or 'q' ('d' for 'l' and 'e' in Intel mode) 'S' => print 'w', 'l' or 'q' if suffix_always is true 'T' => print 'q' in 64bit mode if instruction has no operand size prefix and behave as 'P' otherwise 'U' => print 'q' in 64bit mode if instruction has no operand size prefix and behave as 'Q' otherwise 'V' => print 'q' in 64bit mode if instruction has no operand size prefix and behave as 'S' otherwise 'W' => print 'b', 'w' or 'l' ('d' in Intel mode) 'X' => print 's', 'd' depending on data16 prefix (for XMM) 'Y' => 'q' if instruction has an REX 64bit overwrite prefix and suffix_always is true. 'Z' => print 'q' in 64bit mode and behave as 'L' otherwise '!' => change condition from true to false or from false to true. '%' => add 1 upper case letter to the macro. '^' => print 'w' or 'l' depending on operand size prefix or suffix_always is true (lcall/ljmp). '@' => print 'q' for Intel64 ISA, 'w' or 'q' for AMD64 ISA depending on operand size prefix. '&' => print 'q' in 64bit mode for Intel64 ISA or if instruction has no operand size prefix for AMD64 ISA, behave as 'P' otherwise 2 upper case letter macros: "XY" => print 'x' or 'y' if suffix_always is true or no register operands and no broadcast. "XZ" => print 'x', 'y', or 'z' if suffix_always is true or no register operands and no broadcast. "XW" => print 's', 'd' depending on the VEX.W bit (for FMA) "LQ" => print 'l' ('d' in Intel mode) or 'q' for memory operand or suffix_always is true "LB" => print "abs" in 64bit mode and behave as 'B' otherwise "LS" => print "abs" in 64bit mode and behave as 'S' otherwise "LV" => print "abs" for 64bit operand and behave as 'S' otherwise "LW" => print 'd', 'q' depending on the VEX.W bit "LP" => print 'w' or 'l' ('d' in Intel mode) if instruction has an operand size prefix, or suffix_always is true. print 'q' if rex prefix is present. Many of the above letters print nothing in Intel mode. See "putop" for the details. Braces '{' and '}', and vertical bars '|', indicate alternative mnemonic strings for AT&T and Intel. */ static const struct dis386 dis386[] = { /* 00 */ { "addB", { Ebh1, Gb }, 0 }, { "addS", { Evh1, Gv }, 0 }, { "addB", { Gb, EbS }, 0 }, { "addS", { Gv, EvS }, 0 }, { "addB", { AL, Ib }, 0 }, { "addS", { eAX, Iv }, 0 }, { X86_64_TABLE(X86_64_06) }, { X86_64_TABLE(X86_64_07) }, /* 08 */ { "orB", { Ebh1, Gb }, 0 }, { "orS", { Evh1, Gv }, 0 }, { "orB", { Gb, EbS }, 0 }, { "orS", { Gv, EvS }, 0 }, { "orB", { AL, Ib }, 0 }, { "orS", { eAX, Iv }, 0 }, { X86_64_TABLE(X86_64_0D) }, { Bad_Opcode }, /* 0x0f extended opcode escape */ /* 10 */ { "adcB", { Ebh1, Gb }, 0 }, { "adcS", { Evh1, Gv }, 0 }, { "adcB", { Gb, EbS }, 0 }, { "adcS", { Gv, EvS }, 0 }, { "adcB", { AL, Ib }, 0 }, { "adcS", { eAX, Iv }, 0 }, { X86_64_TABLE(X86_64_16) }, { X86_64_TABLE(X86_64_17) }, /* 18 */ { "sbbB", { Ebh1, Gb }, 0 }, { "sbbS", { Evh1, Gv }, 0 }, { "sbbB", { Gb, EbS }, 0 }, { "sbbS", { Gv, EvS }, 0 }, { "sbbB", { AL, Ib }, 0 }, { "sbbS", { eAX, Iv }, 0 }, { X86_64_TABLE(X86_64_1E) }, { X86_64_TABLE(X86_64_1F) }, /* 20 */ { "andB", { Ebh1, Gb }, 0 }, { "andS", { Evh1, Gv }, 0 }, { "andB", { Gb, EbS }, 0 }, { "andS", { Gv, EvS }, 0 }, { "andB", { AL, Ib }, 0 }, { "andS", { eAX, Iv }, 0 }, { Bad_Opcode }, /* SEG ES prefix */ { X86_64_TABLE(X86_64_27) }, /* 28 */ { "subB", { Ebh1, Gb }, 0 }, { "subS", { Evh1, Gv }, 0 }, { "subB", { Gb, EbS }, 0 }, { "subS", { Gv, EvS }, 0 }, { "subB", { AL, Ib }, 0 }, { "subS", { eAX, Iv }, 0 }, { Bad_Opcode }, /* SEG CS prefix */ { X86_64_TABLE(X86_64_2F) }, /* 30 */ { "xorB", { Ebh1, Gb }, 0 }, { "xorS", { Evh1, Gv }, 0 }, { "xorB", { Gb, EbS }, 0 }, { "xorS", { Gv, EvS }, 0 }, { "xorB", { AL, Ib }, 0 }, { "xorS", { eAX, Iv }, 0 }, { Bad_Opcode }, /* SEG SS prefix */ { X86_64_TABLE(X86_64_37) }, /* 38 */ { "cmpB", { Eb, Gb }, 0 }, { "cmpS", { Ev, Gv }, 0 }, { "cmpB", { Gb, EbS }, 0 }, { "cmpS", { Gv, EvS }, 0 }, { "cmpB", { AL, Ib }, 0 }, { "cmpS", { eAX, Iv }, 0 }, { Bad_Opcode }, /* SEG DS prefix */ { X86_64_TABLE(X86_64_3F) }, /* 40 */ { "inc{S|}", { RMeAX }, 0 }, { "inc{S|}", { RMeCX }, 0 }, { "inc{S|}", { RMeDX }, 0 }, { "inc{S|}", { RMeBX }, 0 }, { "inc{S|}", { RMeSP }, 0 }, { "inc{S|}", { RMeBP }, 0 }, { "inc{S|}", { RMeSI }, 0 }, { "inc{S|}", { RMeDI }, 0 }, /* 48 */ { "dec{S|}", { RMeAX }, 0 }, { "dec{S|}", { RMeCX }, 0 }, { "dec{S|}", { RMeDX }, 0 }, { "dec{S|}", { RMeBX }, 0 }, { "dec{S|}", { RMeSP }, 0 }, { "dec{S|}", { RMeBP }, 0 }, { "dec{S|}", { RMeSI }, 0 }, { "dec{S|}", { RMeDI }, 0 }, /* 50 */ { "pushV", { RMrAX }, 0 }, { "pushV", { RMrCX }, 0 }, { "pushV", { RMrDX }, 0 }, { "pushV", { RMrBX }, 0 }, { "pushV", { RMrSP }, 0 }, { "pushV", { RMrBP }, 0 }, { "pushV", { RMrSI }, 0 }, { "pushV", { RMrDI }, 0 }, /* 58 */ { "popV", { RMrAX }, 0 }, { "popV", { RMrCX }, 0 }, { "popV", { RMrDX }, 0 }, { "popV", { RMrBX }, 0 }, { "popV", { RMrSP }, 0 }, { "popV", { RMrBP }, 0 }, { "popV", { RMrSI }, 0 }, { "popV", { RMrDI }, 0 }, /* 60 */ { X86_64_TABLE(X86_64_60) }, { X86_64_TABLE(X86_64_61) }, { X86_64_TABLE(X86_64_62) }, { X86_64_TABLE(X86_64_63) }, { Bad_Opcode }, /* seg fs */ { Bad_Opcode }, /* seg gs */ { Bad_Opcode }, /* op size prefix */ { Bad_Opcode }, /* adr size prefix */ /* 68 */ { "pushT", { sIv }, 0 }, { "imulS", { Gv, Ev, Iv }, 0 }, { "pushT", { sIbT }, 0 }, { "imulS", { Gv, Ev, sIb }, 0 }, { "ins{b|}", { Ybr, indirDX }, 0 }, { X86_64_TABLE(X86_64_6D) }, { "outs{b|}", { indirDXr, Xb }, 0 }, { X86_64_TABLE(X86_64_6F) }, /* 70 */ { "joH", { Jb, BND, cond_jump_flag }, 0 }, { "jnoH", { Jb, BND, cond_jump_flag }, 0 }, { "jbH", { Jb, BND, cond_jump_flag }, 0 }, { "jaeH", { Jb, BND, cond_jump_flag }, 0 }, { "jeH", { Jb, BND, cond_jump_flag }, 0 }, { "jneH", { Jb, BND, cond_jump_flag }, 0 }, { "jbeH", { Jb, BND, cond_jump_flag }, 0 }, { "jaH", { Jb, BND, cond_jump_flag }, 0 }, /* 78 */ { "jsH", { Jb, BND, cond_jump_flag }, 0 }, { "jnsH", { Jb, BND, cond_jump_flag }, 0 }, { "jpH", { Jb, BND, cond_jump_flag }, 0 }, { "jnpH", { Jb, BND, cond_jump_flag }, 0 }, { "jlH", { Jb, BND, cond_jump_flag }, 0 }, { "jgeH", { Jb, BND, cond_jump_flag }, 0 }, { "jleH", { Jb, BND, cond_jump_flag }, 0 }, { "jgH", { Jb, BND, cond_jump_flag }, 0 }, /* 80 */ { REG_TABLE(REG_80) }, { REG_TABLE(REG_81) }, { X86_64_TABLE(X86_64_82) }, { REG_TABLE(REG_83) }, { "testB", { Eb, Gb }, 0 }, { "testS", { Ev, Gv }, 0 }, { "xchgB", { Ebh2, Gb }, 0 }, { "xchgS", { Evh2, Gv }, 0 }, /* 88 */ { "movB", { Ebh3, Gb }, 0 }, { "movS", { Evh3, Gv }, 0 }, { "movB", { Gb, EbS }, 0 }, { "movS", { Gv, EvS }, 0 }, { "movD", { Sv, Sw }, 0 }, { MOD_TABLE(MOD_8D) }, { "movD", { Sw, Sv }, 0 }, { REG_TABLE(REG_8F) }, /* 90 */ { PREFIX_TABLE(PREFIX_90) }, { "xchgS", { RMeCX, eAX }, 0 }, { "xchgS", { RMeDX, eAX }, 0 }, { "xchgS", { RMeBX, eAX }, 0 }, { "xchgS", { RMeSP, eAX }, 0 }, { "xchgS", { RMeBP, eAX }, 0 }, { "xchgS", { RMeSI, eAX }, 0 }, { "xchgS", { RMeDI, eAX }, 0 }, /* 98 */ { "cW{t|}R", { XX }, 0 }, { "cR{t|}O", { XX }, 0 }, { X86_64_TABLE(X86_64_9A) }, { Bad_Opcode }, /* fwait */ { "pushfT", { XX }, 0 }, { "popfT", { XX }, 0 }, { "sahf", { XX }, 0 }, { "lahf", { XX }, 0 }, /* a0 */ { "mov%LB", { AL, Ob }, 0 }, { "mov%LS", { eAX, Ov }, 0 }, { "mov%LB", { Ob, AL }, 0 }, { "mov%LS", { Ov, eAX }, 0 }, { "movs{b|}", { Ybr, Xb }, 0 }, { "movs{R|}", { Yvr, Xv }, 0 }, { "cmps{b|}", { Xb, Yb }, 0 }, { "cmps{R|}", { Xv, Yv }, 0 }, /* a8 */ { "testB", { AL, Ib }, 0 }, { "testS", { eAX, Iv }, 0 }, { "stosB", { Ybr, AL }, 0 }, { "stosS", { Yvr, eAX }, 0 }, { "lodsB", { ALr, Xb }, 0 }, { "lodsS", { eAXr, Xv }, 0 }, { "scasB", { AL, Yb }, 0 }, { "scasS", { eAX, Yv }, 0 }, /* b0 */ { "movB", { RMAL, Ib }, 0 }, { "movB", { RMCL, Ib }, 0 }, { "movB", { RMDL, Ib }, 0 }, { "movB", { RMBL, Ib }, 0 }, { "movB", { RMAH, Ib }, 0 }, { "movB", { RMCH, Ib }, 0 }, { "movB", { RMDH, Ib }, 0 }, { "movB", { RMBH, Ib }, 0 }, /* b8 */ { "mov%LV", { RMeAX, Iv64 }, 0 }, { "mov%LV", { RMeCX, Iv64 }, 0 }, { "mov%LV", { RMeDX, Iv64 }, 0 }, { "mov%LV", { RMeBX, Iv64 }, 0 }, { "mov%LV", { RMeSP, Iv64 }, 0 }, { "mov%LV", { RMeBP, Iv64 }, 0 }, { "mov%LV", { RMeSI, Iv64 }, 0 }, { "mov%LV", { RMeDI, Iv64 }, 0 }, /* c0 */ { REG_TABLE(REG_C0) }, { REG_TABLE(REG_C1) }, { "retT", { Iw, BND }, 0 }, { "retT", { BND }, 0 }, { X86_64_TABLE(X86_64_C4) }, { X86_64_TABLE(X86_64_C5) }, { REG_TABLE(REG_C6) }, { REG_TABLE(REG_C7) }, /* c8 */ { "enterT", { Iw, Ib }, 0 }, { "leaveT", { XX }, 0 }, { "Jret{|f}P", { Iw }, 0 }, { "Jret{|f}P", { XX }, 0 }, { "int3", { XX }, 0 }, { "int", { Ib }, 0 }, { X86_64_TABLE(X86_64_CE) }, { "iret%LP", { XX }, 0 }, /* d0 */ { REG_TABLE(REG_D0) }, { REG_TABLE(REG_D1) }, { REG_TABLE(REG_D2) }, { REG_TABLE(REG_D3) }, { X86_64_TABLE(X86_64_D4) }, { X86_64_TABLE(X86_64_D5) }, { Bad_Opcode }, { "xlat", { DSBX }, 0 }, /* d8 */ { FLOAT }, { FLOAT }, { FLOAT }, { FLOAT }, { FLOAT }, { FLOAT }, { FLOAT }, { FLOAT }, /* e0 */ { "loopneFH", { Jb, XX, loop_jcxz_flag }, 0 }, { "loopeFH", { Jb, XX, loop_jcxz_flag }, 0 }, { "loopFH", { Jb, XX, loop_jcxz_flag }, 0 }, { "jEcxzH", { Jb, XX, loop_jcxz_flag }, 0 }, { "inB", { AL, Ib }, 0 }, { "inG", { zAX, Ib }, 0 }, { "outB", { Ib, AL }, 0 }, { "outG", { Ib, zAX }, 0 }, /* e8 */ { X86_64_TABLE(X86_64_E8) }, { X86_64_TABLE(X86_64_E9) }, { X86_64_TABLE(X86_64_EA) }, { "jmp", { Jb, BND }, 0 }, { "inB", { AL, indirDX }, 0 }, { "inG", { zAX, indirDX }, 0 }, { "outB", { indirDX, AL }, 0 }, { "outG", { indirDX, zAX }, 0 }, /* f0 */ { Bad_Opcode }, /* lock prefix */ { "icebp", { XX }, 0 }, { Bad_Opcode }, /* repne */ { Bad_Opcode }, /* repz */ { "hlt", { XX }, 0 }, { "cmc", { XX }, 0 }, { REG_TABLE(REG_F6) }, { REG_TABLE(REG_F7) }, /* f8 */ { "clc", { XX }, 0 }, { "stc", { XX }, 0 }, { "cli", { XX }, 0 }, { "sti", { XX }, 0 }, { "cld", { XX }, 0 }, { "std", { XX }, 0 }, { REG_TABLE(REG_FE) }, { REG_TABLE(REG_FF) }, }; static const struct dis386 dis386_twobyte[] = { /* 00 */ { REG_TABLE(REG_0F00) }, { REG_TABLE(REG_0F01) }, { "larS", { Gv, Ew }, 0 }, { "lslS", { Gv, Ew }, 0 }, { Bad_Opcode }, { "syscall", { XX }, 0 }, { "clts", { XX }, 0 }, { "sysret%LP", { XX }, 0 }, /* 08 */ { "invd", { XX }, 0 }, { "wbinvd", { XX }, 0 }, { Bad_Opcode }, { "ud2", { XX }, 0 }, { Bad_Opcode }, { REG_TABLE(REG_0F0D) }, { "femms", { XX }, 0 }, { "", { MX, EM, OPSUF }, 0 }, /* See OP_3DNowSuffix. */ /* 10 */ { PREFIX_TABLE(PREFIX_0F10) }, { PREFIX_TABLE(PREFIX_0F11) }, { PREFIX_TABLE(PREFIX_0F12) }, { MOD_TABLE(MOD_0F13) }, { "unpcklpX", { XM, EXx }, PREFIX_OPCODE }, { "unpckhpX", { XM, EXx }, PREFIX_OPCODE }, { PREFIX_TABLE(PREFIX_0F16) }, { MOD_TABLE(MOD_0F17) }, /* 18 */ { REG_TABLE(REG_0F18) }, { "nopQ", { Ev }, 0 }, { PREFIX_TABLE(PREFIX_0F1A) }, { PREFIX_TABLE(PREFIX_0F1B) }, { "nopQ", { Ev }, 0 }, { "nopQ", { Ev }, 0 }, { "nopQ", { Ev }, 0 }, { "nopQ", { Ev }, 0 }, /* 20 */ { "movZ", { Rm, Cm }, 0 }, { "movZ", { Rm, Dm }, 0 }, { "movZ", { Cm, Rm }, 0 }, { "movZ", { Dm, Rm }, 0 }, { MOD_TABLE(MOD_0F24) }, { Bad_Opcode }, { MOD_TABLE(MOD_0F26) }, { Bad_Opcode }, /* 28 */ { "movapX", { XM, EXx }, PREFIX_OPCODE }, { "movapX", { EXxS, XM }, PREFIX_OPCODE }, { PREFIX_TABLE(PREFIX_0F2A) }, { PREFIX_TABLE(PREFIX_0F2B) }, { PREFIX_TABLE(PREFIX_0F2C) }, { PREFIX_TABLE(PREFIX_0F2D) }, { PREFIX_TABLE(PREFIX_0F2E) }, { PREFIX_TABLE(PREFIX_0F2F) }, /* 30 */ { "wrmsr", { XX }, 0 }, { "rdtsc", { XX }, 0 }, { "rdmsr", { XX }, 0 }, { "rdpmc", { XX }, 0 }, { "sysenter", { XX }, 0 }, { "sysexit", { XX }, 0 }, { Bad_Opcode }, { "getsec", { XX }, 0 }, /* 38 */ { THREE_BYTE_TABLE_PREFIX(THREE_BYTE_0F38, PREFIX_OPCODE) }, { Bad_Opcode }, { THREE_BYTE_TABLE_PREFIX(THREE_BYTE_0F3A, PREFIX_OPCODE) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 40 */ { "cmovoS", { Gv, Ev }, 0 }, { "cmovnoS", { Gv, Ev }, 0 }, { "cmovbS", { Gv, Ev }, 0 }, { "cmovaeS", { Gv, Ev }, 0 }, { "cmoveS", { Gv, Ev }, 0 }, { "cmovneS", { Gv, Ev }, 0 }, { "cmovbeS", { Gv, Ev }, 0 }, { "cmovaS", { Gv, Ev }, 0 }, /* 48 */ { "cmovsS", { Gv, Ev }, 0 }, { "cmovnsS", { Gv, Ev }, 0 }, { "cmovpS", { Gv, Ev }, 0 }, { "cmovnpS", { Gv, Ev }, 0 }, { "cmovlS", { Gv, Ev }, 0 }, { "cmovgeS", { Gv, Ev }, 0 }, { "cmovleS", { Gv, Ev }, 0 }, { "cmovgS", { Gv, Ev }, 0 }, /* 50 */ { MOD_TABLE(MOD_0F51) }, { PREFIX_TABLE(PREFIX_0F51) }, { PREFIX_TABLE(PREFIX_0F52) }, { PREFIX_TABLE(PREFIX_0F53) }, { "andpX", { XM, EXx }, PREFIX_OPCODE }, { "andnpX", { XM, EXx }, PREFIX_OPCODE }, { "orpX", { XM, EXx }, PREFIX_OPCODE }, { "xorpX", { XM, EXx }, PREFIX_OPCODE }, /* 58 */ { PREFIX_TABLE(PREFIX_0F58) }, { PREFIX_TABLE(PREFIX_0F59) }, { PREFIX_TABLE(PREFIX_0F5A) }, { PREFIX_TABLE(PREFIX_0F5B) }, { PREFIX_TABLE(PREFIX_0F5C) }, { PREFIX_TABLE(PREFIX_0F5D) }, { PREFIX_TABLE(PREFIX_0F5E) }, { PREFIX_TABLE(PREFIX_0F5F) }, /* 60 */ { PREFIX_TABLE(PREFIX_0F60) }, { PREFIX_TABLE(PREFIX_0F61) }, { PREFIX_TABLE(PREFIX_0F62) }, { "packsswb", { MX, EM }, PREFIX_OPCODE }, { "pcmpgtb", { MX, EM }, PREFIX_OPCODE }, { "pcmpgtw", { MX, EM }, PREFIX_OPCODE }, { "pcmpgtd", { MX, EM }, PREFIX_OPCODE }, { "packuswb", { MX, EM }, PREFIX_OPCODE }, /* 68 */ { "punpckhbw", { MX, EM }, PREFIX_OPCODE }, { "punpckhwd", { MX, EM }, PREFIX_OPCODE }, { "punpckhdq", { MX, EM }, PREFIX_OPCODE }, { "packssdw", { MX, EM }, PREFIX_OPCODE }, { PREFIX_TABLE(PREFIX_0F6C) }, { PREFIX_TABLE(PREFIX_0F6D) }, { "movK", { MX, Edq }, PREFIX_OPCODE }, { PREFIX_TABLE(PREFIX_0F6F) }, /* 70 */ { PREFIX_TABLE(PREFIX_0F70) }, { REG_TABLE(REG_0F71) }, { REG_TABLE(REG_0F72) }, { REG_TABLE(REG_0F73) }, { "pcmpeqb", { MX, EM }, PREFIX_OPCODE }, { "pcmpeqw", { MX, EM }, PREFIX_OPCODE }, { "pcmpeqd", { MX, EM }, PREFIX_OPCODE }, { "emms", { XX }, PREFIX_OPCODE }, /* 78 */ { PREFIX_TABLE(PREFIX_0F78) }, { PREFIX_TABLE(PREFIX_0F79) }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_0F7C) }, { PREFIX_TABLE(PREFIX_0F7D) }, { PREFIX_TABLE(PREFIX_0F7E) }, { PREFIX_TABLE(PREFIX_0F7F) }, /* 80 */ { "joH", { Jv, BND, cond_jump_flag }, 0 }, { "jnoH", { Jv, BND, cond_jump_flag }, 0 }, { "jbH", { Jv, BND, cond_jump_flag }, 0 }, { "jaeH", { Jv, BND, cond_jump_flag }, 0 }, { "jeH", { Jv, BND, cond_jump_flag }, 0 }, { "jneH", { Jv, BND, cond_jump_flag }, 0 }, { "jbeH", { Jv, BND, cond_jump_flag }, 0 }, { "jaH", { Jv, BND, cond_jump_flag }, 0 }, /* 88 */ { "jsH", { Jv, BND, cond_jump_flag }, 0 }, { "jnsH", { Jv, BND, cond_jump_flag }, 0 }, { "jpH", { Jv, BND, cond_jump_flag }, 0 }, { "jnpH", { Jv, BND, cond_jump_flag }, 0 }, { "jlH", { Jv, BND, cond_jump_flag }, 0 }, { "jgeH", { Jv, BND, cond_jump_flag }, 0 }, { "jleH", { Jv, BND, cond_jump_flag }, 0 }, { "jgH", { Jv, BND, cond_jump_flag }, 0 }, /* 90 */ { "seto", { Eb }, 0 }, { "setno", { Eb }, 0 }, { "setb", { Eb }, 0 }, { "setae", { Eb }, 0 }, { "sete", { Eb }, 0 }, { "setne", { Eb }, 0 }, { "setbe", { Eb }, 0 }, { "seta", { Eb }, 0 }, /* 98 */ { "sets", { Eb }, 0 }, { "setns", { Eb }, 0 }, { "setp", { Eb }, 0 }, { "setnp", { Eb }, 0 }, { "setl", { Eb }, 0 }, { "setge", { Eb }, 0 }, { "setle", { Eb }, 0 }, { "setg", { Eb }, 0 }, /* a0 */ { "pushT", { fs }, 0 }, { "popT", { fs }, 0 }, { "cpuid", { XX }, 0 }, { "btS", { Ev, Gv }, 0 }, { "shldS", { Ev, Gv, Ib }, 0 }, { "shldS", { Ev, Gv, CL }, 0 }, { REG_TABLE(REG_0FA6) }, { REG_TABLE(REG_0FA7) }, /* a8 */ { "pushT", { gs }, 0 }, { "popT", { gs }, 0 }, { "rsm", { XX }, 0 }, { "btsS", { Evh1, Gv }, 0 }, { "shrdS", { Ev, Gv, Ib }, 0 }, { "shrdS", { Ev, Gv, CL }, 0 }, { REG_TABLE(REG_0FAE) }, { "imulS", { Gv, Ev }, 0 }, /* b0 */ { "cmpxchgB", { Ebh1, Gb }, 0 }, { "cmpxchgS", { Evh1, Gv }, 0 }, { MOD_TABLE(MOD_0FB2) }, { "btrS", { Evh1, Gv }, 0 }, { MOD_TABLE(MOD_0FB4) }, { MOD_TABLE(MOD_0FB5) }, { "movz{bR|x}", { Gv, Eb }, 0 }, { "movz{wR|x}", { Gv, Ew }, 0 }, /* yes, there really is movzww ! */ /* b8 */ { PREFIX_TABLE(PREFIX_0FB8) }, { "ud1", { XX }, 0 }, { REG_TABLE(REG_0FBA) }, { "btcS", { Evh1, Gv }, 0 }, { PREFIX_TABLE(PREFIX_0FBC) }, { PREFIX_TABLE(PREFIX_0FBD) }, { "movs{bR|x}", { Gv, Eb }, 0 }, { "movs{wR|x}", { Gv, Ew }, 0 }, /* yes, there really is movsww ! */ /* c0 */ { "xaddB", { Ebh1, Gb }, 0 }, { "xaddS", { Evh1, Gv }, 0 }, { PREFIX_TABLE(PREFIX_0FC2) }, { MOD_TABLE(MOD_0FC3) }, { "pinsrw", { MX, Edqw, Ib }, PREFIX_OPCODE }, { "pextrw", { Gdq, MS, Ib }, PREFIX_OPCODE }, { "shufpX", { XM, EXx, Ib }, PREFIX_OPCODE }, { REG_TABLE(REG_0FC7) }, /* c8 */ { "bswap", { RMeAX }, 0 }, { "bswap", { RMeCX }, 0 }, { "bswap", { RMeDX }, 0 }, { "bswap", { RMeBX }, 0 }, { "bswap", { RMeSP }, 0 }, { "bswap", { RMeBP }, 0 }, { "bswap", { RMeSI }, 0 }, { "bswap", { RMeDI }, 0 }, /* d0 */ { PREFIX_TABLE(PREFIX_0FD0) }, { "psrlw", { MX, EM }, PREFIX_OPCODE }, { "psrld", { MX, EM }, PREFIX_OPCODE }, { "psrlq", { MX, EM }, PREFIX_OPCODE }, { "paddq", { MX, EM }, PREFIX_OPCODE }, { "pmullw", { MX, EM }, PREFIX_OPCODE }, { PREFIX_TABLE(PREFIX_0FD6) }, { MOD_TABLE(MOD_0FD7) }, /* d8 */ { "psubusb", { MX, EM }, PREFIX_OPCODE }, { "psubusw", { MX, EM }, PREFIX_OPCODE }, { "pminub", { MX, EM }, PREFIX_OPCODE }, { "pand", { MX, EM }, PREFIX_OPCODE }, { "paddusb", { MX, EM }, PREFIX_OPCODE }, { "paddusw", { MX, EM }, PREFIX_OPCODE }, { "pmaxub", { MX, EM }, PREFIX_OPCODE }, { "pandn", { MX, EM }, PREFIX_OPCODE }, /* e0 */ { "pavgb", { MX, EM }, PREFIX_OPCODE }, { "psraw", { MX, EM }, PREFIX_OPCODE }, { "psrad", { MX, EM }, PREFIX_OPCODE }, { "pavgw", { MX, EM }, PREFIX_OPCODE }, { "pmulhuw", { MX, EM }, PREFIX_OPCODE }, { "pmulhw", { MX, EM }, PREFIX_OPCODE }, { PREFIX_TABLE(PREFIX_0FE6) }, { PREFIX_TABLE(PREFIX_0FE7) }, /* e8 */ { "psubsb", { MX, EM }, PREFIX_OPCODE }, { "psubsw", { MX, EM }, PREFIX_OPCODE }, { "pminsw", { MX, EM }, PREFIX_OPCODE }, { "por", { MX, EM }, PREFIX_OPCODE }, { "paddsb", { MX, EM }, PREFIX_OPCODE }, { "paddsw", { MX, EM }, PREFIX_OPCODE }, { "pmaxsw", { MX, EM }, PREFIX_OPCODE }, { "pxor", { MX, EM }, PREFIX_OPCODE }, /* f0 */ { PREFIX_TABLE(PREFIX_0FF0) }, { "psllw", { MX, EM }, PREFIX_OPCODE }, { "pslld", { MX, EM }, PREFIX_OPCODE }, { "psllq", { MX, EM }, PREFIX_OPCODE }, { "pmuludq", { MX, EM }, PREFIX_OPCODE }, { "pmaddwd", { MX, EM }, PREFIX_OPCODE }, { "psadbw", { MX, EM }, PREFIX_OPCODE }, { PREFIX_TABLE(PREFIX_0FF7) }, /* f8 */ { "psubb", { MX, EM }, PREFIX_OPCODE }, { "psubw", { MX, EM }, PREFIX_OPCODE }, { "psubd", { MX, EM }, PREFIX_OPCODE }, { "psubq", { MX, EM }, PREFIX_OPCODE }, { "paddb", { MX, EM }, PREFIX_OPCODE }, { "paddw", { MX, EM }, PREFIX_OPCODE }, { "paddd", { MX, EM }, PREFIX_OPCODE }, { Bad_Opcode }, }; static const unsigned char onebyte_has_modrm[256] = { /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* ---------------------------------------------- */ /* 00 */ 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, /* 00 */ /* 10 */ 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, /* 10 */ /* 20 */ 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, /* 20 */ /* 30 */ 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, /* 30 */ /* 40 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 40 */ /* 50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 50 */ /* 60 */ 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, /* 60 */ /* 70 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 70 */ /* 80 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 80 */ /* 90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 90 */ /* a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* a0 */ /* b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* b0 */ /* c0 */ 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* c0 */ /* d0 */ 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, /* d0 */ /* e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* e0 */ /* f0 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1 /* f0 */ /* ---------------------------------------------- */ /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ }; static const unsigned char twobyte_has_modrm[256] = { /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* ---------------------------------------------- */ /* 00 */ 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, /* 0f */ /* 10 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 1f */ /* 20 */ 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, /* 2f */ /* 30 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, /* 3f */ /* 40 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 4f */ /* 50 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 5f */ /* 60 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 6f */ /* 70 */ 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, /* 7f */ /* 80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 8f */ /* 90 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 9f */ /* a0 */ 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, /* af */ /* b0 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, /* bf */ /* c0 */ 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* cf */ /* d0 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* df */ /* e0 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* ef */ /* f0 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 /* ff */ /* ---------------------------------------------- */ /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ }; static const char *const intel_names64[] = { "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15" }; static const char *const intel_names32[] = { "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d" }; static const char *const intel_names16[] = { "ax", "cx", "dx", "bx", "sp", "bp", "si", "di", "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w" }; static const char *const intel_names8[] = { "al", "cl", "dl", "bl", "ah", "ch", "dh", "bh", }; static const char *const intel_names8rex[] = { "al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil", "r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b" }; static const char *const intel_names_seg[] = { "es", "cs", "ss", "ds", "fs", "gs", "?", "?", }; static const char *intel_index64 = "riz"; static const char *intel_index32 = "eiz"; static const char *const intel_index16[] = { "bx+si", "bx+di", "bp+si", "bp+di", "si", "di", "bp", "bx" }; static const char *const att_names64[] = { "%rax", "%rcx", "%rdx", "%rbx", "%rsp", "%rbp", "%rsi", "%rdi", "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15" }; static const char *const att_names32[] = { "%eax", "%ecx", "%edx", "%ebx", "%esp", "%ebp", "%esi", "%edi", "%r8d", "%r9d", "%r10d", "%r11d", "%r12d", "%r13d", "%r14d", "%r15d" }; static const char *const att_names16[] = { "%ax", "%cx", "%dx", "%bx", "%sp", "%bp", "%si", "%di", "%r8w", "%r9w", "%r10w", "%r11w", "%r12w", "%r13w", "%r14w", "%r15w" }; static const char *const att_names8[] = { "%al", "%cl", "%dl", "%bl", "%ah", "%ch", "%dh", "%bh", }; static const char *const att_names8rex[] = { "%al", "%cl", "%dl", "%bl", "%spl", "%bpl", "%sil", "%dil", "%r8b", "%r9b", "%r10b", "%r11b", "%r12b", "%r13b", "%r14b", "%r15b" }; static const char *const att_names_seg[] = { "%es", "%cs", "%ss", "%ds", "%fs", "%gs", "%?", "%?", }; static const char *att_index64 = "%riz"; static const char *att_index32 = "%eiz"; static const char *const att_index16[] = { "%bx,%si", "%bx,%di", "%bp,%si", "%bp,%di", "%si", "%di", "%bp", "%bx" }; static const char *const intel_names_mm[] = { "mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7" }; static const char *const att_names_mm[] = { "%mm0", "%mm1", "%mm2", "%mm3", "%mm4", "%mm5", "%mm6", "%mm7" }; static const char *const intel_names_bnd[] = { "bnd0", "bnd1", "bnd2", "bnd3" }; static const char *const att_names_bnd[] = { "%bnd0", "%bnd1", "%bnd2", "%bnd3" }; static const char *const intel_names_xmm[] = { "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7", "xmm8", "xmm9", "xmm10", "xmm11", "xmm12", "xmm13", "xmm14", "xmm15", "xmm16", "xmm17", "xmm18", "xmm19", "xmm20", "xmm21", "xmm22", "xmm23", "xmm24", "xmm25", "xmm26", "xmm27", "xmm28", "xmm29", "xmm30", "xmm31" }; static const char *const att_names_xmm[] = { "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6", "%xmm7", "%xmm8", "%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15", "%xmm16", "%xmm17", "%xmm18", "%xmm19", "%xmm20", "%xmm21", "%xmm22", "%xmm23", "%xmm24", "%xmm25", "%xmm26", "%xmm27", "%xmm28", "%xmm29", "%xmm30", "%xmm31" }; static const char *const intel_names_ymm[] = { "ymm0", "ymm1", "ymm2", "ymm3", "ymm4", "ymm5", "ymm6", "ymm7", "ymm8", "ymm9", "ymm10", "ymm11", "ymm12", "ymm13", "ymm14", "ymm15", "ymm16", "ymm17", "ymm18", "ymm19", "ymm20", "ymm21", "ymm22", "ymm23", "ymm24", "ymm25", "ymm26", "ymm27", "ymm28", "ymm29", "ymm30", "ymm31" }; static const char *const att_names_ymm[] = { "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "%ymm16", "%ymm17", "%ymm18", "%ymm19", "%ymm20", "%ymm21", "%ymm22", "%ymm23", "%ymm24", "%ymm25", "%ymm26", "%ymm27", "%ymm28", "%ymm29", "%ymm30", "%ymm31" }; static const char *const intel_names_zmm[] = { "zmm0", "zmm1", "zmm2", "zmm3", "zmm4", "zmm5", "zmm6", "zmm7", "zmm8", "zmm9", "zmm10", "zmm11", "zmm12", "zmm13", "zmm14", "zmm15", "zmm16", "zmm17", "zmm18", "zmm19", "zmm20", "zmm21", "zmm22", "zmm23", "zmm24", "zmm25", "zmm26", "zmm27", "zmm28", "zmm29", "zmm30", "zmm31" }; static const char *const att_names_zmm[] = { "%zmm0", "%zmm1", "%zmm2", "%zmm3", "%zmm4", "%zmm5", "%zmm6", "%zmm7", "%zmm8", "%zmm9", "%zmm10", "%zmm11", "%zmm12", "%zmm13", "%zmm14", "%zmm15", "%zmm16", "%zmm17", "%zmm18", "%zmm19", "%zmm20", "%zmm21", "%zmm22", "%zmm23", "%zmm24", "%zmm25", "%zmm26", "%zmm27", "%zmm28", "%zmm29", "%zmm30", "%zmm31" }; static const char *const intel_names_mask[] = { "k0", "k1", "k2", "k3", "k4", "k5", "k6", "k7" }; static const char *const att_names_mask[] = { "%k0", "%k1", "%k2", "%k3", "%k4", "%k5", "%k6", "%k7" }; static struct dis386 const reg_table[][8] = { /* REG_80 */ { { "addA", { Ebh1, Ib }, 0 }, { "orA", { Ebh1, Ib }, 0 }, { "adcA", { Ebh1, Ib }, 0 }, { "sbbA", { Ebh1, Ib }, 0 }, { "andA", { Ebh1, Ib }, 0 }, { "subA", { Ebh1, Ib }, 0 }, { "xorA", { Ebh1, Ib }, 0 }, { "cmpA", { Eb, Ib }, 0 }, }, /* REG_81 */ { { "addQ", { Evh1, Iv }, 0 }, { "orQ", { Evh1, Iv }, 0 }, { "adcQ", { Evh1, Iv }, 0 }, { "sbbQ", { Evh1, Iv }, 0 }, { "andQ", { Evh1, Iv }, 0 }, { "subQ", { Evh1, Iv }, 0 }, { "xorQ", { Evh1, Iv }, 0 }, { "cmpQ", { Ev, Iv }, 0 }, }, /* REG_83 */ { { "addQ", { Evh1, sIb }, 0 }, { "orQ", { Evh1, sIb }, 0 }, { "adcQ", { Evh1, sIb }, 0 }, { "sbbQ", { Evh1, sIb }, 0 }, { "andQ", { Evh1, sIb }, 0 }, { "subQ", { Evh1, sIb }, 0 }, { "xorQ", { Evh1, sIb }, 0 }, { "cmpQ", { Ev, sIb }, 0 }, }, /* REG_8F */ { { "popU", { stackEv }, 0 }, { XOP_8F_TABLE(XOP_09) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { XOP_8F_TABLE(XOP_09) }, }, /* REG_C0 */ { { "rolA", { Eb, Ib }, 0 }, { "rorA", { Eb, Ib }, 0 }, { "rclA", { Eb, Ib }, 0 }, { "rcrA", { Eb, Ib }, 0 }, { "shlA", { Eb, Ib }, 0 }, { "shrA", { Eb, Ib }, 0 }, { Bad_Opcode }, { "sarA", { Eb, Ib }, 0 }, }, /* REG_C1 */ { { "rolQ", { Ev, Ib }, 0 }, { "rorQ", { Ev, Ib }, 0 }, { "rclQ", { Ev, Ib }, 0 }, { "rcrQ", { Ev, Ib }, 0 }, { "shlQ", { Ev, Ib }, 0 }, { "shrQ", { Ev, Ib }, 0 }, { Bad_Opcode }, { "sarQ", { Ev, Ib }, 0 }, }, /* REG_C6 */ { { "movA", { Ebh3, Ib }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_C6_REG_7) }, }, /* REG_C7 */ { { "movQ", { Evh3, Iv }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_C7_REG_7) }, }, /* REG_D0 */ { { "rolA", { Eb, I1 }, 0 }, { "rorA", { Eb, I1 }, 0 }, { "rclA", { Eb, I1 }, 0 }, { "rcrA", { Eb, I1 }, 0 }, { "shlA", { Eb, I1 }, 0 }, { "shrA", { Eb, I1 }, 0 }, { Bad_Opcode }, { "sarA", { Eb, I1 }, 0 }, }, /* REG_D1 */ { { "rolQ", { Ev, I1 }, 0 }, { "rorQ", { Ev, I1 }, 0 }, { "rclQ", { Ev, I1 }, 0 }, { "rcrQ", { Ev, I1 }, 0 }, { "shlQ", { Ev, I1 }, 0 }, { "shrQ", { Ev, I1 }, 0 }, { Bad_Opcode }, { "sarQ", { Ev, I1 }, 0 }, }, /* REG_D2 */ { { "rolA", { Eb, CL }, 0 }, { "rorA", { Eb, CL }, 0 }, { "rclA", { Eb, CL }, 0 }, { "rcrA", { Eb, CL }, 0 }, { "shlA", { Eb, CL }, 0 }, { "shrA", { Eb, CL }, 0 }, { Bad_Opcode }, { "sarA", { Eb, CL }, 0 }, }, /* REG_D3 */ { { "rolQ", { Ev, CL }, 0 }, { "rorQ", { Ev, CL }, 0 }, { "rclQ", { Ev, CL }, 0 }, { "rcrQ", { Ev, CL }, 0 }, { "shlQ", { Ev, CL }, 0 }, { "shrQ", { Ev, CL }, 0 }, { Bad_Opcode }, { "sarQ", { Ev, CL }, 0 }, }, /* REG_F6 */ { { "testA", { Eb, Ib }, 0 }, { Bad_Opcode }, { "notA", { Ebh1 }, 0 }, { "negA", { Ebh1 }, 0 }, { "mulA", { Eb }, 0 }, /* Don't print the implicit %al register, */ { "imulA", { Eb }, 0 }, /* to distinguish these opcodes from other */ { "divA", { Eb }, 0 }, /* mul/imul opcodes. Do the same for div */ { "idivA", { Eb }, 0 }, /* and idiv for consistency. */ }, /* REG_F7 */ { { "testQ", { Ev, Iv }, 0 }, { Bad_Opcode }, { "notQ", { Evh1 }, 0 }, { "negQ", { Evh1 }, 0 }, { "mulQ", { Ev }, 0 }, /* Don't print the implicit register. */ { "imulQ", { Ev }, 0 }, { "divQ", { Ev }, 0 }, { "idivQ", { Ev }, 0 }, }, /* REG_FE */ { { "incA", { Ebh1 }, 0 }, { "decA", { Ebh1 }, 0 }, }, /* REG_FF */ { { "incQ", { Evh1 }, 0 }, { "decQ", { Evh1 }, 0 }, { "call{&|}", { indirEv, BND }, 0 }, { MOD_TABLE(MOD_FF_REG_3) }, { "jmp{&|}", { indirEv, BND }, 0 }, { MOD_TABLE(MOD_FF_REG_5) }, { "pushU", { stackEv }, 0 }, { Bad_Opcode }, }, /* REG_0F00 */ { { "sldtD", { Sv }, 0 }, { "strD", { Sv }, 0 }, { "lldt", { Ew }, 0 }, { "ltr", { Ew }, 0 }, { "verr", { Ew }, 0 }, { "verw", { Ew }, 0 }, { Bad_Opcode }, { Bad_Opcode }, }, /* REG_0F01 */ { { MOD_TABLE(MOD_0F01_REG_0) }, { MOD_TABLE(MOD_0F01_REG_1) }, { MOD_TABLE(MOD_0F01_REG_2) }, { MOD_TABLE(MOD_0F01_REG_3) }, { "smswD", { Sv }, 0 }, { MOD_TABLE(MOD_0F01_REG_5) }, { "lmsw", { Ew }, 0 }, { MOD_TABLE(MOD_0F01_REG_7) }, }, /* REG_0F0D */ { { "prefetch", { Mb }, 0 }, { "prefetchw", { Mb }, 0 }, { "prefetchwt1", { Mb }, 0 }, { "prefetch", { Mb }, 0 }, { "prefetch", { Mb }, 0 }, { "prefetch", { Mb }, 0 }, { "prefetch", { Mb }, 0 }, { "prefetch", { Mb }, 0 }, }, /* REG_0F18 */ { { MOD_TABLE(MOD_0F18_REG_0) }, { MOD_TABLE(MOD_0F18_REG_1) }, { MOD_TABLE(MOD_0F18_REG_2) }, { MOD_TABLE(MOD_0F18_REG_3) }, { MOD_TABLE(MOD_0F18_REG_4) }, { MOD_TABLE(MOD_0F18_REG_5) }, { MOD_TABLE(MOD_0F18_REG_6) }, { MOD_TABLE(MOD_0F18_REG_7) }, }, /* REG_0F71 */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_0F71_REG_2) }, { Bad_Opcode }, { MOD_TABLE(MOD_0F71_REG_4) }, { Bad_Opcode }, { MOD_TABLE(MOD_0F71_REG_6) }, }, /* REG_0F72 */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_0F72_REG_2) }, { Bad_Opcode }, { MOD_TABLE(MOD_0F72_REG_4) }, { Bad_Opcode }, { MOD_TABLE(MOD_0F72_REG_6) }, }, /* REG_0F73 */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_0F73_REG_2) }, { MOD_TABLE(MOD_0F73_REG_3) }, { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_0F73_REG_6) }, { MOD_TABLE(MOD_0F73_REG_7) }, }, /* REG_0FA6 */ { { "montmul", { { OP_0f07, 0 } }, 0 }, { "xsha1", { { OP_0f07, 0 } }, 0 }, { "xsha256", { { OP_0f07, 0 } }, 0 }, }, /* REG_0FA7 */ { { "xstore-rng", { { OP_0f07, 0 } }, 0 }, { "xcrypt-ecb", { { OP_0f07, 0 } }, 0 }, { "xcrypt-cbc", { { OP_0f07, 0 } }, 0 }, { "xcrypt-ctr", { { OP_0f07, 0 } }, 0 }, { "xcrypt-cfb", { { OP_0f07, 0 } }, 0 }, { "xcrypt-ofb", { { OP_0f07, 0 } }, 0 }, }, /* REG_0FAE */ { { MOD_TABLE(MOD_0FAE_REG_0) }, { MOD_TABLE(MOD_0FAE_REG_1) }, { MOD_TABLE(MOD_0FAE_REG_2) }, { MOD_TABLE(MOD_0FAE_REG_3) }, { MOD_TABLE(MOD_0FAE_REG_4) }, { MOD_TABLE(MOD_0FAE_REG_5) }, { MOD_TABLE(MOD_0FAE_REG_6) }, { MOD_TABLE(MOD_0FAE_REG_7) }, }, /* REG_0FBA */ { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "btQ", { Ev, Ib }, 0 }, { "btsQ", { Evh1, Ib }, 0 }, { "btrQ", { Evh1, Ib }, 0 }, { "btcQ", { Evh1, Ib }, 0 }, }, /* REG_0FC7 */ { { Bad_Opcode }, { "cmpxchg8b", { {CMPXCHG8B_Fixup, q_mode } }, 0 }, { Bad_Opcode }, { MOD_TABLE(MOD_0FC7_REG_3) }, { MOD_TABLE(MOD_0FC7_REG_4) }, { MOD_TABLE(MOD_0FC7_REG_5) }, { MOD_TABLE(MOD_0FC7_REG_6) }, { MOD_TABLE(MOD_0FC7_REG_7) }, }, /* REG_VEX_0F71 */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F71_REG_2) }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F71_REG_4) }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F71_REG_6) }, }, /* REG_VEX_0F72 */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F72_REG_2) }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F72_REG_4) }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F72_REG_6) }, }, /* REG_VEX_0F73 */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F73_REG_2) }, { MOD_TABLE(MOD_VEX_0F73_REG_3) }, { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F73_REG_6) }, { MOD_TABLE(MOD_VEX_0F73_REG_7) }, }, /* REG_VEX_0FAE */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0FAE_REG_2) }, { MOD_TABLE(MOD_VEX_0FAE_REG_3) }, }, /* REG_VEX_0F38F3 */ { { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F38F3_REG_1) }, { PREFIX_TABLE(PREFIX_VEX_0F38F3_REG_2) }, { PREFIX_TABLE(PREFIX_VEX_0F38F3_REG_3) }, }, /* REG_XOP_LWPCB */ { { "llwpcb", { { OP_LWPCB_E, 0 } }, 0 }, { "slwpcb", { { OP_LWPCB_E, 0 } }, 0 }, }, /* REG_XOP_LWP */ { { "lwpins", { { OP_LWP_E, 0 }, Ed, Iq }, 0 }, { "lwpval", { { OP_LWP_E, 0 }, Ed, Iq }, 0 }, }, /* REG_XOP_TBM_01 */ { { Bad_Opcode }, { "blcfill", { { OP_LWP_E, 0 }, Ev }, 0 }, { "blsfill", { { OP_LWP_E, 0 }, Ev }, 0 }, { "blcs", { { OP_LWP_E, 0 }, Ev }, 0 }, { "tzmsk", { { OP_LWP_E, 0 }, Ev }, 0 }, { "blcic", { { OP_LWP_E, 0 }, Ev }, 0 }, { "blsic", { { OP_LWP_E, 0 }, Ev }, 0 }, { "t1mskc", { { OP_LWP_E, 0 }, Ev }, 0 }, }, /* REG_XOP_TBM_02 */ { { Bad_Opcode }, { "blcmsk", { { OP_LWP_E, 0 }, Ev }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "blci", { { OP_LWP_E, 0 }, Ev }, 0 }, }, #define NEED_REG_TABLE #include "i386-dis-evex.h" #undef NEED_REG_TABLE }; static const struct dis386 prefix_table[][4] = { /* PREFIX_90 */ { { "xchgS", { {NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } }, 0 }, { "pause", { XX }, 0 }, { "xchgS", { {NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } }, 0 }, { NULL, { { NULL, 0 } }, PREFIX_IGNORED } }, /* PREFIX_0F10 */ { { "movups", { XM, EXx }, PREFIX_OPCODE }, { "movss", { XM, EXd }, PREFIX_OPCODE }, { "movupd", { XM, EXx }, PREFIX_OPCODE }, { "movsd", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F11 */ { { "movups", { EXxS, XM }, PREFIX_OPCODE }, { "movss", { EXdS, XM }, PREFIX_OPCODE }, { "movupd", { EXxS, XM }, PREFIX_OPCODE }, { "movsd", { EXqS, XM }, PREFIX_OPCODE }, }, /* PREFIX_0F12 */ { { MOD_TABLE(MOD_0F12_PREFIX_0) }, { "movsldup", { XM, EXx }, PREFIX_OPCODE }, { "movlpd", { XM, EXq }, PREFIX_OPCODE }, { "movddup", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F16 */ { { MOD_TABLE(MOD_0F16_PREFIX_0) }, { "movshdup", { XM, EXx }, PREFIX_OPCODE }, { "movhpd", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F1A */ { { MOD_TABLE(MOD_0F1A_PREFIX_0) }, { "bndcl", { Gbnd, Ev_bnd }, 0 }, { "bndmov", { Gbnd, Ebnd }, 0 }, { "bndcu", { Gbnd, Ev_bnd }, 0 }, }, /* PREFIX_0F1B */ { { MOD_TABLE(MOD_0F1B_PREFIX_0) }, { MOD_TABLE(MOD_0F1B_PREFIX_1) }, { "bndmov", { Ebnd, Gbnd }, 0 }, { "bndcn", { Gbnd, Ev_bnd }, 0 }, }, /* PREFIX_0F2A */ { { "cvtpi2ps", { XM, EMCq }, PREFIX_OPCODE }, { "cvtsi2ss%LQ", { XM, Ev }, PREFIX_OPCODE }, { "cvtpi2pd", { XM, EMCq }, PREFIX_OPCODE }, { "cvtsi2sd%LQ", { XM, Ev }, 0 }, }, /* PREFIX_0F2B */ { { MOD_TABLE(MOD_0F2B_PREFIX_0) }, { MOD_TABLE(MOD_0F2B_PREFIX_1) }, { MOD_TABLE(MOD_0F2B_PREFIX_2) }, { MOD_TABLE(MOD_0F2B_PREFIX_3) }, }, /* PREFIX_0F2C */ { { "cvttps2pi", { MXC, EXq }, PREFIX_OPCODE }, { "cvttss2siY", { Gv, EXd }, PREFIX_OPCODE }, { "cvttpd2pi", { MXC, EXx }, PREFIX_OPCODE }, { "cvttsd2siY", { Gv, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F2D */ { { "cvtps2pi", { MXC, EXq }, PREFIX_OPCODE }, { "cvtss2siY", { Gv, EXd }, PREFIX_OPCODE }, { "cvtpd2pi", { MXC, EXx }, PREFIX_OPCODE }, { "cvtsd2siY", { Gv, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F2E */ { { "ucomiss", { XM, EXd }, 0 }, { Bad_Opcode }, { "ucomisd", { XM, EXq }, 0 }, }, /* PREFIX_0F2F */ { { "comiss", { XM, EXd }, 0 }, { Bad_Opcode }, { "comisd", { XM, EXq }, 0 }, }, /* PREFIX_0F51 */ { { "sqrtps", { XM, EXx }, PREFIX_OPCODE }, { "sqrtss", { XM, EXd }, PREFIX_OPCODE }, { "sqrtpd", { XM, EXx }, PREFIX_OPCODE }, { "sqrtsd", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F52 */ { { "rsqrtps", { XM, EXx }, PREFIX_OPCODE }, { "rsqrtss", { XM, EXd }, PREFIX_OPCODE }, }, /* PREFIX_0F53 */ { { "rcpps", { XM, EXx }, PREFIX_OPCODE }, { "rcpss", { XM, EXd }, PREFIX_OPCODE }, }, /* PREFIX_0F58 */ { { "addps", { XM, EXx }, PREFIX_OPCODE }, { "addss", { XM, EXd }, PREFIX_OPCODE }, { "addpd", { XM, EXx }, PREFIX_OPCODE }, { "addsd", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F59 */ { { "mulps", { XM, EXx }, PREFIX_OPCODE }, { "mulss", { XM, EXd }, PREFIX_OPCODE }, { "mulpd", { XM, EXx }, PREFIX_OPCODE }, { "mulsd", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F5A */ { { "cvtps2pd", { XM, EXq }, PREFIX_OPCODE }, { "cvtss2sd", { XM, EXd }, PREFIX_OPCODE }, { "cvtpd2ps", { XM, EXx }, PREFIX_OPCODE }, { "cvtsd2ss", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F5B */ { { "cvtdq2ps", { XM, EXx }, PREFIX_OPCODE }, { "cvttps2dq", { XM, EXx }, PREFIX_OPCODE }, { "cvtps2dq", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F5C */ { { "subps", { XM, EXx }, PREFIX_OPCODE }, { "subss", { XM, EXd }, PREFIX_OPCODE }, { "subpd", { XM, EXx }, PREFIX_OPCODE }, { "subsd", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F5D */ { { "minps", { XM, EXx }, PREFIX_OPCODE }, { "minss", { XM, EXd }, PREFIX_OPCODE }, { "minpd", { XM, EXx }, PREFIX_OPCODE }, { "minsd", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F5E */ { { "divps", { XM, EXx }, PREFIX_OPCODE }, { "divss", { XM, EXd }, PREFIX_OPCODE }, { "divpd", { XM, EXx }, PREFIX_OPCODE }, { "divsd", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F5F */ { { "maxps", { XM, EXx }, PREFIX_OPCODE }, { "maxss", { XM, EXd }, PREFIX_OPCODE }, { "maxpd", { XM, EXx }, PREFIX_OPCODE }, { "maxsd", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F60 */ { { "punpcklbw", { MX, EMd }, PREFIX_OPCODE }, { Bad_Opcode }, { "punpcklbw", { MX, EMx }, PREFIX_OPCODE }, }, /* PREFIX_0F61 */ { { "punpcklwd", { MX, EMd }, PREFIX_OPCODE }, { Bad_Opcode }, { "punpcklwd", { MX, EMx }, PREFIX_OPCODE }, }, /* PREFIX_0F62 */ { { "punpckldq", { MX, EMd }, PREFIX_OPCODE }, { Bad_Opcode }, { "punpckldq", { MX, EMx }, PREFIX_OPCODE }, }, /* PREFIX_0F6C */ { { Bad_Opcode }, { Bad_Opcode }, { "punpcklqdq", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F6D */ { { Bad_Opcode }, { Bad_Opcode }, { "punpckhqdq", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F6F */ { { "movq", { MX, EM }, PREFIX_OPCODE }, { "movdqu", { XM, EXx }, PREFIX_OPCODE }, { "movdqa", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F70 */ { { "pshufw", { MX, EM, Ib }, PREFIX_OPCODE }, { "pshufhw", { XM, EXx, Ib }, PREFIX_OPCODE }, { "pshufd", { XM, EXx, Ib }, PREFIX_OPCODE }, { "pshuflw", { XM, EXx, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F73_REG_3 */ { { Bad_Opcode }, { Bad_Opcode }, { "psrldq", { XS, Ib }, 0 }, }, /* PREFIX_0F73_REG_7 */ { { Bad_Opcode }, { Bad_Opcode }, { "pslldq", { XS, Ib }, 0 }, }, /* PREFIX_0F78 */ { { "vmread", { Em, Gm }, 0 }, { Bad_Opcode }, { "extrq", { XS, Ib, Ib }, 0 }, { "insertq", { XM, XS, Ib, Ib }, 0 }, }, /* PREFIX_0F79 */ { { "vmwrite", { Gm, Em }, 0 }, { Bad_Opcode }, { "extrq", { XM, XS }, 0 }, { "insertq", { XM, XS }, 0 }, }, /* PREFIX_0F7C */ { { Bad_Opcode }, { Bad_Opcode }, { "haddpd", { XM, EXx }, PREFIX_OPCODE }, { "haddps", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F7D */ { { Bad_Opcode }, { Bad_Opcode }, { "hsubpd", { XM, EXx }, PREFIX_OPCODE }, { "hsubps", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F7E */ { { "movK", { Edq, MX }, PREFIX_OPCODE }, { "movq", { XM, EXq }, PREFIX_OPCODE }, { "movK", { Edq, XM }, PREFIX_OPCODE }, }, /* PREFIX_0F7F */ { { "movq", { EMS, MX }, PREFIX_OPCODE }, { "movdqu", { EXxS, XM }, PREFIX_OPCODE }, { "movdqa", { EXxS, XM }, PREFIX_OPCODE }, }, /* PREFIX_0FAE_REG_0 */ { { Bad_Opcode }, { "rdfsbase", { Ev }, 0 }, }, /* PREFIX_0FAE_REG_1 */ { { Bad_Opcode }, { "rdgsbase", { Ev }, 0 }, }, /* PREFIX_0FAE_REG_2 */ { { Bad_Opcode }, { "wrfsbase", { Ev }, 0 }, }, /* PREFIX_0FAE_REG_3 */ { { Bad_Opcode }, { "wrgsbase", { Ev }, 0 }, }, /* PREFIX_MOD_0_0FAE_REG_4 */ { { "xsave", { FXSAVE }, 0 }, { "ptwrite%LQ", { Edq }, 0 }, }, /* PREFIX_MOD_3_0FAE_REG_4 */ { { Bad_Opcode }, { "ptwrite%LQ", { Edq }, 0 }, }, /* PREFIX_0FAE_REG_6 */ { { "xsaveopt", { FXSAVE }, 0 }, { Bad_Opcode }, { "clwb", { Mb }, 0 }, }, /* PREFIX_0FAE_REG_7 */ { { "clflush", { Mb }, 0 }, { Bad_Opcode }, { "clflushopt", { Mb }, 0 }, }, /* PREFIX_0FB8 */ { { Bad_Opcode }, { "popcntS", { Gv, Ev }, 0 }, }, /* PREFIX_0FBC */ { { "bsfS", { Gv, Ev }, 0 }, { "tzcntS", { Gv, Ev }, 0 }, { "bsfS", { Gv, Ev }, 0 }, }, /* PREFIX_0FBD */ { { "bsrS", { Gv, Ev }, 0 }, { "lzcntS", { Gv, Ev }, 0 }, { "bsrS", { Gv, Ev }, 0 }, }, /* PREFIX_0FC2 */ { { "cmpps", { XM, EXx, CMP }, PREFIX_OPCODE }, { "cmpss", { XM, EXd, CMP }, PREFIX_OPCODE }, { "cmppd", { XM, EXx, CMP }, PREFIX_OPCODE }, { "cmpsd", { XM, EXq, CMP }, PREFIX_OPCODE }, }, /* PREFIX_MOD_0_0FC3 */ { { "movntiS", { Ev, Gv }, PREFIX_OPCODE }, }, /* PREFIX_MOD_0_0FC7_REG_6 */ { { "vmptrld", { Mq }, 0 }, { "vmxon", { Mq }, 0 }, { "vmclear", { Mq }, 0 }, }, /* PREFIX_MOD_3_0FC7_REG_6 */ { { "rdrand", { Ev }, 0 }, { Bad_Opcode }, { "rdrand", { Ev }, 0 } }, /* PREFIX_MOD_3_0FC7_REG_7 */ { { "rdseed", { Ev }, 0 }, { "rdpid", { Em }, 0 }, { "rdseed", { Ev }, 0 }, }, /* PREFIX_0FD0 */ { { Bad_Opcode }, { Bad_Opcode }, { "addsubpd", { XM, EXx }, 0 }, { "addsubps", { XM, EXx }, 0 }, }, /* PREFIX_0FD6 */ { { Bad_Opcode }, { "movq2dq", { XM, MS }, 0 }, { "movq", { EXqS, XM }, 0 }, { "movdq2q", { MX, XS }, 0 }, }, /* PREFIX_0FE6 */ { { Bad_Opcode }, { "cvtdq2pd", { XM, EXq }, PREFIX_OPCODE }, { "cvttpd2dq", { XM, EXx }, PREFIX_OPCODE }, { "cvtpd2dq", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0FE7 */ { { "movntq", { Mq, MX }, PREFIX_OPCODE }, { Bad_Opcode }, { MOD_TABLE(MOD_0FE7_PREFIX_2) }, }, /* PREFIX_0FF0 */ { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_0FF0_PREFIX_3) }, }, /* PREFIX_0FF7 */ { { "maskmovq", { MX, MS }, PREFIX_OPCODE }, { Bad_Opcode }, { "maskmovdqu", { XM, XS }, PREFIX_OPCODE }, }, /* PREFIX_0F3810 */ { { Bad_Opcode }, { Bad_Opcode }, { "pblendvb", { XM, EXx, XMM0 }, PREFIX_OPCODE }, }, /* PREFIX_0F3814 */ { { Bad_Opcode }, { Bad_Opcode }, { "blendvps", { XM, EXx, XMM0 }, PREFIX_OPCODE }, }, /* PREFIX_0F3815 */ { { Bad_Opcode }, { Bad_Opcode }, { "blendvpd", { XM, EXx, XMM0 }, PREFIX_OPCODE }, }, /* PREFIX_0F3817 */ { { Bad_Opcode }, { Bad_Opcode }, { "ptest", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F3820 */ { { Bad_Opcode }, { Bad_Opcode }, { "pmovsxbw", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F3821 */ { { Bad_Opcode }, { Bad_Opcode }, { "pmovsxbd", { XM, EXd }, PREFIX_OPCODE }, }, /* PREFIX_0F3822 */ { { Bad_Opcode }, { Bad_Opcode }, { "pmovsxbq", { XM, EXw }, PREFIX_OPCODE }, }, /* PREFIX_0F3823 */ { { Bad_Opcode }, { Bad_Opcode }, { "pmovsxwd", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F3824 */ { { Bad_Opcode }, { Bad_Opcode }, { "pmovsxwq", { XM, EXd }, PREFIX_OPCODE }, }, /* PREFIX_0F3825 */ { { Bad_Opcode }, { Bad_Opcode }, { "pmovsxdq", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F3828 */ { { Bad_Opcode }, { Bad_Opcode }, { "pmuldq", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F3829 */ { { Bad_Opcode }, { Bad_Opcode }, { "pcmpeqq", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F382A */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_0F382A_PREFIX_2) }, }, /* PREFIX_0F382B */ { { Bad_Opcode }, { Bad_Opcode }, { "packusdw", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F3830 */ { { Bad_Opcode }, { Bad_Opcode }, { "pmovzxbw", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F3831 */ { { Bad_Opcode }, { Bad_Opcode }, { "pmovzxbd", { XM, EXd }, PREFIX_OPCODE }, }, /* PREFIX_0F3832 */ { { Bad_Opcode }, { Bad_Opcode }, { "pmovzxbq", { XM, EXw }, PREFIX_OPCODE }, }, /* PREFIX_0F3833 */ { { Bad_Opcode }, { Bad_Opcode }, { "pmovzxwd", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F3834 */ { { Bad_Opcode }, { Bad_Opcode }, { "pmovzxwq", { XM, EXd }, PREFIX_OPCODE }, }, /* PREFIX_0F3835 */ { { Bad_Opcode }, { Bad_Opcode }, { "pmovzxdq", { XM, EXq }, PREFIX_OPCODE }, }, /* PREFIX_0F3837 */ { { Bad_Opcode }, { Bad_Opcode }, { "pcmpgtq", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F3838 */ { { Bad_Opcode }, { Bad_Opcode }, { "pminsb", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F3839 */ { { Bad_Opcode }, { Bad_Opcode }, { "pminsd", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F383A */ { { Bad_Opcode }, { Bad_Opcode }, { "pminuw", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F383B */ { { Bad_Opcode }, { Bad_Opcode }, { "pminud", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F383C */ { { Bad_Opcode }, { Bad_Opcode }, { "pmaxsb", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F383D */ { { Bad_Opcode }, { Bad_Opcode }, { "pmaxsd", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F383E */ { { Bad_Opcode }, { Bad_Opcode }, { "pmaxuw", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F383F */ { { Bad_Opcode }, { Bad_Opcode }, { "pmaxud", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F3840 */ { { Bad_Opcode }, { Bad_Opcode }, { "pmulld", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F3841 */ { { Bad_Opcode }, { Bad_Opcode }, { "phminposuw", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F3880 */ { { Bad_Opcode }, { Bad_Opcode }, { "invept", { Gm, Mo }, PREFIX_OPCODE }, }, /* PREFIX_0F3881 */ { { Bad_Opcode }, { Bad_Opcode }, { "invvpid", { Gm, Mo }, PREFIX_OPCODE }, }, /* PREFIX_0F3882 */ { { Bad_Opcode }, { Bad_Opcode }, { "invpcid", { Gm, M }, PREFIX_OPCODE }, }, /* PREFIX_0F38C8 */ { { "sha1nexte", { XM, EXxmm }, PREFIX_OPCODE }, }, /* PREFIX_0F38C9 */ { { "sha1msg1", { XM, EXxmm }, PREFIX_OPCODE }, }, /* PREFIX_0F38CA */ { { "sha1msg2", { XM, EXxmm }, PREFIX_OPCODE }, }, /* PREFIX_0F38CB */ { { "sha256rnds2", { XM, EXxmm, XMM0 }, PREFIX_OPCODE }, }, /* PREFIX_0F38CC */ { { "sha256msg1", { XM, EXxmm }, PREFIX_OPCODE }, }, /* PREFIX_0F38CD */ { { "sha256msg2", { XM, EXxmm }, PREFIX_OPCODE }, }, /* PREFIX_0F38DB */ { { Bad_Opcode }, { Bad_Opcode }, { "aesimc", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F38DC */ { { Bad_Opcode }, { Bad_Opcode }, { "aesenc", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F38DD */ { { Bad_Opcode }, { Bad_Opcode }, { "aesenclast", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F38DE */ { { Bad_Opcode }, { Bad_Opcode }, { "aesdec", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F38DF */ { { Bad_Opcode }, { Bad_Opcode }, { "aesdeclast", { XM, EXx }, PREFIX_OPCODE }, }, /* PREFIX_0F38F0 */ { { "movbeS", { Gv, { MOVBE_Fixup, v_mode } }, PREFIX_OPCODE }, { Bad_Opcode }, { "movbeS", { Gv, { MOVBE_Fixup, v_mode } }, PREFIX_OPCODE }, { "crc32", { Gdq, { CRC32_Fixup, b_mode } }, PREFIX_OPCODE }, }, /* PREFIX_0F38F1 */ { { "movbeS", { { MOVBE_Fixup, v_mode }, Gv }, PREFIX_OPCODE }, { Bad_Opcode }, { "movbeS", { { MOVBE_Fixup, v_mode }, Gv }, PREFIX_OPCODE }, { "crc32", { Gdq, { CRC32_Fixup, v_mode } }, PREFIX_OPCODE }, }, /* PREFIX_0F38F6 */ { { Bad_Opcode }, { "adoxS", { Gdq, Edq }, PREFIX_OPCODE }, { "adcxS", { Gdq, Edq }, PREFIX_OPCODE }, { Bad_Opcode }, }, /* PREFIX_0F3A08 */ { { Bad_Opcode }, { Bad_Opcode }, { "roundps", { XM, EXx, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A09 */ { { Bad_Opcode }, { Bad_Opcode }, { "roundpd", { XM, EXx, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A0A */ { { Bad_Opcode }, { Bad_Opcode }, { "roundss", { XM, EXd, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A0B */ { { Bad_Opcode }, { Bad_Opcode }, { "roundsd", { XM, EXq, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A0C */ { { Bad_Opcode }, { Bad_Opcode }, { "blendps", { XM, EXx, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A0D */ { { Bad_Opcode }, { Bad_Opcode }, { "blendpd", { XM, EXx, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A0E */ { { Bad_Opcode }, { Bad_Opcode }, { "pblendw", { XM, EXx, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A14 */ { { Bad_Opcode }, { Bad_Opcode }, { "pextrb", { Edqb, XM, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A15 */ { { Bad_Opcode }, { Bad_Opcode }, { "pextrw", { Edqw, XM, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A16 */ { { Bad_Opcode }, { Bad_Opcode }, { "pextrK", { Edq, XM, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A17 */ { { Bad_Opcode }, { Bad_Opcode }, { "extractps", { Edqd, XM, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A20 */ { { Bad_Opcode }, { Bad_Opcode }, { "pinsrb", { XM, Edqb, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A21 */ { { Bad_Opcode }, { Bad_Opcode }, { "insertps", { XM, EXd, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A22 */ { { Bad_Opcode }, { Bad_Opcode }, { "pinsrK", { XM, Edq, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A40 */ { { Bad_Opcode }, { Bad_Opcode }, { "dpps", { XM, EXx, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A41 */ { { Bad_Opcode }, { Bad_Opcode }, { "dppd", { XM, EXx, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A42 */ { { Bad_Opcode }, { Bad_Opcode }, { "mpsadbw", { XM, EXx, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A44 */ { { Bad_Opcode }, { Bad_Opcode }, { "pclmulqdq", { XM, EXx, PCLMUL }, PREFIX_OPCODE }, }, /* PREFIX_0F3A60 */ { { Bad_Opcode }, { Bad_Opcode }, { "pcmpestrm", { XM, EXx, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A61 */ { { Bad_Opcode }, { Bad_Opcode }, { "pcmpestri", { XM, EXx, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A62 */ { { Bad_Opcode }, { Bad_Opcode }, { "pcmpistrm", { XM, EXx, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3A63 */ { { Bad_Opcode }, { Bad_Opcode }, { "pcmpistri", { XM, EXx, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3ACC */ { { "sha1rnds4", { XM, EXxmm, Ib }, PREFIX_OPCODE }, }, /* PREFIX_0F3ADF */ { { Bad_Opcode }, { Bad_Opcode }, { "aeskeygenassist", { XM, EXx, Ib }, PREFIX_OPCODE }, }, /* PREFIX_VEX_0F10 */ { { VEX_W_TABLE(VEX_W_0F10_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0F10_P_1) }, { VEX_W_TABLE(VEX_W_0F10_P_2) }, { VEX_LEN_TABLE(VEX_LEN_0F10_P_3) }, }, /* PREFIX_VEX_0F11 */ { { VEX_W_TABLE(VEX_W_0F11_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0F11_P_1) }, { VEX_W_TABLE(VEX_W_0F11_P_2) }, { VEX_LEN_TABLE(VEX_LEN_0F11_P_3) }, }, /* PREFIX_VEX_0F12 */ { { MOD_TABLE(MOD_VEX_0F12_PREFIX_0) }, { VEX_W_TABLE(VEX_W_0F12_P_1) }, { VEX_LEN_TABLE(VEX_LEN_0F12_P_2) }, { VEX_W_TABLE(VEX_W_0F12_P_3) }, }, /* PREFIX_VEX_0F16 */ { { MOD_TABLE(MOD_VEX_0F16_PREFIX_0) }, { VEX_W_TABLE(VEX_W_0F16_P_1) }, { VEX_LEN_TABLE(VEX_LEN_0F16_P_2) }, }, /* PREFIX_VEX_0F2A */ { { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F2A_P_1) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F2A_P_3) }, }, /* PREFIX_VEX_0F2C */ { { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F2C_P_1) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F2C_P_3) }, }, /* PREFIX_VEX_0F2D */ { { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F2D_P_1) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F2D_P_3) }, }, /* PREFIX_VEX_0F2E */ { { VEX_LEN_TABLE(VEX_LEN_0F2E_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F2E_P_2) }, }, /* PREFIX_VEX_0F2F */ { { VEX_LEN_TABLE(VEX_LEN_0F2F_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F2F_P_2) }, }, /* PREFIX_VEX_0F41 */ { { VEX_LEN_TABLE(VEX_LEN_0F41_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F41_P_2) }, }, /* PREFIX_VEX_0F42 */ { { VEX_LEN_TABLE(VEX_LEN_0F42_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F42_P_2) }, }, /* PREFIX_VEX_0F44 */ { { VEX_LEN_TABLE(VEX_LEN_0F44_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F44_P_2) }, }, /* PREFIX_VEX_0F45 */ { { VEX_LEN_TABLE(VEX_LEN_0F45_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F45_P_2) }, }, /* PREFIX_VEX_0F46 */ { { VEX_LEN_TABLE(VEX_LEN_0F46_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F46_P_2) }, }, /* PREFIX_VEX_0F47 */ { { VEX_LEN_TABLE(VEX_LEN_0F47_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F47_P_2) }, }, /* PREFIX_VEX_0F4A */ { { VEX_LEN_TABLE(VEX_LEN_0F4A_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F4A_P_2) }, }, /* PREFIX_VEX_0F4B */ { { VEX_LEN_TABLE(VEX_LEN_0F4B_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F4B_P_2) }, }, /* PREFIX_VEX_0F51 */ { { VEX_W_TABLE(VEX_W_0F51_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0F51_P_1) }, { VEX_W_TABLE(VEX_W_0F51_P_2) }, { VEX_LEN_TABLE(VEX_LEN_0F51_P_3) }, }, /* PREFIX_VEX_0F52 */ { { VEX_W_TABLE(VEX_W_0F52_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0F52_P_1) }, }, /* PREFIX_VEX_0F53 */ { { VEX_W_TABLE(VEX_W_0F53_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0F53_P_1) }, }, /* PREFIX_VEX_0F58 */ { { VEX_W_TABLE(VEX_W_0F58_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0F58_P_1) }, { VEX_W_TABLE(VEX_W_0F58_P_2) }, { VEX_LEN_TABLE(VEX_LEN_0F58_P_3) }, }, /* PREFIX_VEX_0F59 */ { { VEX_W_TABLE(VEX_W_0F59_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0F59_P_1) }, { VEX_W_TABLE(VEX_W_0F59_P_2) }, { VEX_LEN_TABLE(VEX_LEN_0F59_P_3) }, }, /* PREFIX_VEX_0F5A */ { { VEX_W_TABLE(VEX_W_0F5A_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0F5A_P_1) }, { "vcvtpd2ps%XY", { XMM, EXx }, 0 }, { VEX_LEN_TABLE(VEX_LEN_0F5A_P_3) }, }, /* PREFIX_VEX_0F5B */ { { VEX_W_TABLE(VEX_W_0F5B_P_0) }, { VEX_W_TABLE(VEX_W_0F5B_P_1) }, { VEX_W_TABLE(VEX_W_0F5B_P_2) }, }, /* PREFIX_VEX_0F5C */ { { VEX_W_TABLE(VEX_W_0F5C_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0F5C_P_1) }, { VEX_W_TABLE(VEX_W_0F5C_P_2) }, { VEX_LEN_TABLE(VEX_LEN_0F5C_P_3) }, }, /* PREFIX_VEX_0F5D */ { { VEX_W_TABLE(VEX_W_0F5D_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0F5D_P_1) }, { VEX_W_TABLE(VEX_W_0F5D_P_2) }, { VEX_LEN_TABLE(VEX_LEN_0F5D_P_3) }, }, /* PREFIX_VEX_0F5E */ { { VEX_W_TABLE(VEX_W_0F5E_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0F5E_P_1) }, { VEX_W_TABLE(VEX_W_0F5E_P_2) }, { VEX_LEN_TABLE(VEX_LEN_0F5E_P_3) }, }, /* PREFIX_VEX_0F5F */ { { VEX_W_TABLE(VEX_W_0F5F_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0F5F_P_1) }, { VEX_W_TABLE(VEX_W_0F5F_P_2) }, { VEX_LEN_TABLE(VEX_LEN_0F5F_P_3) }, }, /* PREFIX_VEX_0F60 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F60_P_2) }, }, /* PREFIX_VEX_0F61 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F61_P_2) }, }, /* PREFIX_VEX_0F62 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F62_P_2) }, }, /* PREFIX_VEX_0F63 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F63_P_2) }, }, /* PREFIX_VEX_0F64 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F64_P_2) }, }, /* PREFIX_VEX_0F65 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F65_P_2) }, }, /* PREFIX_VEX_0F66 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F66_P_2) }, }, /* PREFIX_VEX_0F67 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F67_P_2) }, }, /* PREFIX_VEX_0F68 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F68_P_2) }, }, /* PREFIX_VEX_0F69 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F69_P_2) }, }, /* PREFIX_VEX_0F6A */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F6A_P_2) }, }, /* PREFIX_VEX_0F6B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F6B_P_2) }, }, /* PREFIX_VEX_0F6C */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F6C_P_2) }, }, /* PREFIX_VEX_0F6D */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F6D_P_2) }, }, /* PREFIX_VEX_0F6E */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F6E_P_2) }, }, /* PREFIX_VEX_0F6F */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F6F_P_1) }, { VEX_W_TABLE(VEX_W_0F6F_P_2) }, }, /* PREFIX_VEX_0F70 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F70_P_1) }, { VEX_W_TABLE(VEX_W_0F70_P_2) }, { VEX_W_TABLE(VEX_W_0F70_P_3) }, }, /* PREFIX_VEX_0F71_REG_2 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F71_R_2_P_2) }, }, /* PREFIX_VEX_0F71_REG_4 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F71_R_4_P_2) }, }, /* PREFIX_VEX_0F71_REG_6 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F71_R_6_P_2) }, }, /* PREFIX_VEX_0F72_REG_2 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F72_R_2_P_2) }, }, /* PREFIX_VEX_0F72_REG_4 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F72_R_4_P_2) }, }, /* PREFIX_VEX_0F72_REG_6 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F72_R_6_P_2) }, }, /* PREFIX_VEX_0F73_REG_2 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F73_R_2_P_2) }, }, /* PREFIX_VEX_0F73_REG_3 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F73_R_3_P_2) }, }, /* PREFIX_VEX_0F73_REG_6 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F73_R_6_P_2) }, }, /* PREFIX_VEX_0F73_REG_7 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F73_R_7_P_2) }, }, /* PREFIX_VEX_0F74 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F74_P_2) }, }, /* PREFIX_VEX_0F75 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F75_P_2) }, }, /* PREFIX_VEX_0F76 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F76_P_2) }, }, /* PREFIX_VEX_0F77 */ { { VEX_W_TABLE(VEX_W_0F77_P_0) }, }, /* PREFIX_VEX_0F7C */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F7C_P_2) }, { VEX_W_TABLE(VEX_W_0F7C_P_3) }, }, /* PREFIX_VEX_0F7D */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F7D_P_2) }, { VEX_W_TABLE(VEX_W_0F7D_P_3) }, }, /* PREFIX_VEX_0F7E */ { { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F7E_P_1) }, { VEX_LEN_TABLE(VEX_LEN_0F7E_P_2) }, }, /* PREFIX_VEX_0F7F */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F7F_P_1) }, { VEX_W_TABLE(VEX_W_0F7F_P_2) }, }, /* PREFIX_VEX_0F90 */ { { VEX_LEN_TABLE(VEX_LEN_0F90_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F90_P_2) }, }, /* PREFIX_VEX_0F91 */ { { VEX_LEN_TABLE(VEX_LEN_0F91_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F91_P_2) }, }, /* PREFIX_VEX_0F92 */ { { VEX_LEN_TABLE(VEX_LEN_0F92_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F92_P_2) }, { VEX_LEN_TABLE(VEX_LEN_0F92_P_3) }, }, /* PREFIX_VEX_0F93 */ { { VEX_LEN_TABLE(VEX_LEN_0F93_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F93_P_2) }, { VEX_LEN_TABLE(VEX_LEN_0F93_P_3) }, }, /* PREFIX_VEX_0F98 */ { { VEX_LEN_TABLE(VEX_LEN_0F98_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F98_P_2) }, }, /* PREFIX_VEX_0F99 */ { { VEX_LEN_TABLE(VEX_LEN_0F99_P_0) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F99_P_2) }, }, /* PREFIX_VEX_0FC2 */ { { VEX_W_TABLE(VEX_W_0FC2_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0FC2_P_1) }, { VEX_W_TABLE(VEX_W_0FC2_P_2) }, { VEX_LEN_TABLE(VEX_LEN_0FC2_P_3) }, }, /* PREFIX_VEX_0FC4 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0FC4_P_2) }, }, /* PREFIX_VEX_0FC5 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0FC5_P_2) }, }, /* PREFIX_VEX_0FD0 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FD0_P_2) }, { VEX_W_TABLE(VEX_W_0FD0_P_3) }, }, /* PREFIX_VEX_0FD1 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FD1_P_2) }, }, /* PREFIX_VEX_0FD2 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FD2_P_2) }, }, /* PREFIX_VEX_0FD3 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FD3_P_2) }, }, /* PREFIX_VEX_0FD4 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FD4_P_2) }, }, /* PREFIX_VEX_0FD5 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FD5_P_2) }, }, /* PREFIX_VEX_0FD6 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0FD6_P_2) }, }, /* PREFIX_VEX_0FD7 */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0FD7_PREFIX_2) }, }, /* PREFIX_VEX_0FD8 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FD8_P_2) }, }, /* PREFIX_VEX_0FD9 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FD9_P_2) }, }, /* PREFIX_VEX_0FDA */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FDA_P_2) }, }, /* PREFIX_VEX_0FDB */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FDB_P_2) }, }, /* PREFIX_VEX_0FDC */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FDC_P_2) }, }, /* PREFIX_VEX_0FDD */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FDD_P_2) }, }, /* PREFIX_VEX_0FDE */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FDE_P_2) }, }, /* PREFIX_VEX_0FDF */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FDF_P_2) }, }, /* PREFIX_VEX_0FE0 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FE0_P_2) }, }, /* PREFIX_VEX_0FE1 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FE1_P_2) }, }, /* PREFIX_VEX_0FE2 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FE2_P_2) }, }, /* PREFIX_VEX_0FE3 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FE3_P_2) }, }, /* PREFIX_VEX_0FE4 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FE4_P_2) }, }, /* PREFIX_VEX_0FE5 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FE5_P_2) }, }, /* PREFIX_VEX_0FE6 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FE6_P_1) }, { VEX_W_TABLE(VEX_W_0FE6_P_2) }, { VEX_W_TABLE(VEX_W_0FE6_P_3) }, }, /* PREFIX_VEX_0FE7 */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0FE7_PREFIX_2) }, }, /* PREFIX_VEX_0FE8 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FE8_P_2) }, }, /* PREFIX_VEX_0FE9 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FE9_P_2) }, }, /* PREFIX_VEX_0FEA */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FEA_P_2) }, }, /* PREFIX_VEX_0FEB */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FEB_P_2) }, }, /* PREFIX_VEX_0FEC */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FEC_P_2) }, }, /* PREFIX_VEX_0FED */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FED_P_2) }, }, /* PREFIX_VEX_0FEE */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FEE_P_2) }, }, /* PREFIX_VEX_0FEF */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FEF_P_2) }, }, /* PREFIX_VEX_0FF0 */ { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0FF0_PREFIX_3) }, }, /* PREFIX_VEX_0FF1 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FF1_P_2) }, }, /* PREFIX_VEX_0FF2 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FF2_P_2) }, }, /* PREFIX_VEX_0FF3 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FF3_P_2) }, }, /* PREFIX_VEX_0FF4 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FF4_P_2) }, }, /* PREFIX_VEX_0FF5 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FF5_P_2) }, }, /* PREFIX_VEX_0FF6 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FF6_P_2) }, }, /* PREFIX_VEX_0FF7 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0FF7_P_2) }, }, /* PREFIX_VEX_0FF8 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FF8_P_2) }, }, /* PREFIX_VEX_0FF9 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FF9_P_2) }, }, /* PREFIX_VEX_0FFA */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FFA_P_2) }, }, /* PREFIX_VEX_0FFB */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FFB_P_2) }, }, /* PREFIX_VEX_0FFC */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FFC_P_2) }, }, /* PREFIX_VEX_0FFD */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FFD_P_2) }, }, /* PREFIX_VEX_0FFE */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FFE_P_2) }, }, /* PREFIX_VEX_0F3800 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3800_P_2) }, }, /* PREFIX_VEX_0F3801 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3801_P_2) }, }, /* PREFIX_VEX_0F3802 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3802_P_2) }, }, /* PREFIX_VEX_0F3803 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3803_P_2) }, }, /* PREFIX_VEX_0F3804 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3804_P_2) }, }, /* PREFIX_VEX_0F3805 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3805_P_2) }, }, /* PREFIX_VEX_0F3806 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3806_P_2) }, }, /* PREFIX_VEX_0F3807 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3807_P_2) }, }, /* PREFIX_VEX_0F3808 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3808_P_2) }, }, /* PREFIX_VEX_0F3809 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3809_P_2) }, }, /* PREFIX_VEX_0F380A */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F380A_P_2) }, }, /* PREFIX_VEX_0F380B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F380B_P_2) }, }, /* PREFIX_VEX_0F380C */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F380C_P_2) }, }, /* PREFIX_VEX_0F380D */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F380D_P_2) }, }, /* PREFIX_VEX_0F380E */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F380E_P_2) }, }, /* PREFIX_VEX_0F380F */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F380F_P_2) }, }, /* PREFIX_VEX_0F3813 */ { { Bad_Opcode }, { Bad_Opcode }, { "vcvtph2ps", { XM, EXxmmq }, 0 }, }, /* PREFIX_VEX_0F3816 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3816_P_2) }, }, /* PREFIX_VEX_0F3817 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3817_P_2) }, }, /* PREFIX_VEX_0F3818 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3818_P_2) }, }, /* PREFIX_VEX_0F3819 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3819_P_2) }, }, /* PREFIX_VEX_0F381A */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F381A_PREFIX_2) }, }, /* PREFIX_VEX_0F381C */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F381C_P_2) }, }, /* PREFIX_VEX_0F381D */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F381D_P_2) }, }, /* PREFIX_VEX_0F381E */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F381E_P_2) }, }, /* PREFIX_VEX_0F3820 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3820_P_2) }, }, /* PREFIX_VEX_0F3821 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3821_P_2) }, }, /* PREFIX_VEX_0F3822 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3822_P_2) }, }, /* PREFIX_VEX_0F3823 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3823_P_2) }, }, /* PREFIX_VEX_0F3824 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3824_P_2) }, }, /* PREFIX_VEX_0F3825 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3825_P_2) }, }, /* PREFIX_VEX_0F3828 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3828_P_2) }, }, /* PREFIX_VEX_0F3829 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3829_P_2) }, }, /* PREFIX_VEX_0F382A */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F382A_PREFIX_2) }, }, /* PREFIX_VEX_0F382B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F382B_P_2) }, }, /* PREFIX_VEX_0F382C */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F382C_PREFIX_2) }, }, /* PREFIX_VEX_0F382D */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F382D_PREFIX_2) }, }, /* PREFIX_VEX_0F382E */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F382E_PREFIX_2) }, }, /* PREFIX_VEX_0F382F */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F382F_PREFIX_2) }, }, /* PREFIX_VEX_0F3830 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3830_P_2) }, }, /* PREFIX_VEX_0F3831 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3831_P_2) }, }, /* PREFIX_VEX_0F3832 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3832_P_2) }, }, /* PREFIX_VEX_0F3833 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3833_P_2) }, }, /* PREFIX_VEX_0F3834 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3834_P_2) }, }, /* PREFIX_VEX_0F3835 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3835_P_2) }, }, /* PREFIX_VEX_0F3836 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3836_P_2) }, }, /* PREFIX_VEX_0F3837 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3837_P_2) }, }, /* PREFIX_VEX_0F3838 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3838_P_2) }, }, /* PREFIX_VEX_0F3839 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3839_P_2) }, }, /* PREFIX_VEX_0F383A */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F383A_P_2) }, }, /* PREFIX_VEX_0F383B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F383B_P_2) }, }, /* PREFIX_VEX_0F383C */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F383C_P_2) }, }, /* PREFIX_VEX_0F383D */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F383D_P_2) }, }, /* PREFIX_VEX_0F383E */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F383E_P_2) }, }, /* PREFIX_VEX_0F383F */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F383F_P_2) }, }, /* PREFIX_VEX_0F3840 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3840_P_2) }, }, /* PREFIX_VEX_0F3841 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3841_P_2) }, }, /* PREFIX_VEX_0F3845 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsrlv%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F3846 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3846_P_2) }, }, /* PREFIX_VEX_0F3847 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpsllv%LW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F3858 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3858_P_2) }, }, /* PREFIX_VEX_0F3859 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3859_P_2) }, }, /* PREFIX_VEX_0F385A */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F385A_PREFIX_2) }, }, /* PREFIX_VEX_0F3878 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3878_P_2) }, }, /* PREFIX_VEX_0F3879 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3879_P_2) }, }, /* PREFIX_VEX_0F388C */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F388C_PREFIX_2) }, }, /* PREFIX_VEX_0F388E */ { { Bad_Opcode }, { Bad_Opcode }, { MOD_TABLE(MOD_VEX_0F388E_PREFIX_2) }, }, /* PREFIX_VEX_0F3890 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpgatherd%LW", { XM, MVexVSIBDWpX, Vex }, 0 }, }, /* PREFIX_VEX_0F3891 */ { { Bad_Opcode }, { Bad_Opcode }, { "vpgatherq%LW", { XMGatherQ, MVexVSIBQWpX, VexGatherQ }, 0 }, }, /* PREFIX_VEX_0F3892 */ { { Bad_Opcode }, { Bad_Opcode }, { "vgatherdp%XW", { XM, MVexVSIBDWpX, Vex }, 0 }, }, /* PREFIX_VEX_0F3893 */ { { Bad_Opcode }, { Bad_Opcode }, { "vgatherqp%XW", { XMGatherQ, MVexVSIBQWpX, VexGatherQ }, 0 }, }, /* PREFIX_VEX_0F3896 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmaddsub132p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F3897 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsubadd132p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F3898 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmadd132p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F3899 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, }, /* PREFIX_VEX_0F389A */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsub132p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F389B */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, }, /* PREFIX_VEX_0F389C */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmadd132p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F389D */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, }, /* PREFIX_VEX_0F389E */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmsub132p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F389F */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, }, /* PREFIX_VEX_0F38A6 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmaddsub213p%XW", { XM, Vex, EXx }, 0 }, { Bad_Opcode }, }, /* PREFIX_VEX_0F38A7 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsubadd213p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F38A8 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmadd213p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F38A9 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, }, /* PREFIX_VEX_0F38AA */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsub213p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F38AB */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, }, /* PREFIX_VEX_0F38AC */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmadd213p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F38AD */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, }, /* PREFIX_VEX_0F38AE */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmsub213p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F38AF */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, }, /* PREFIX_VEX_0F38B6 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmaddsub231p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F38B7 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsubadd231p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F38B8 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmadd231p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F38B9 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, }, /* PREFIX_VEX_0F38BA */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsub231p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F38BB */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, }, /* PREFIX_VEX_0F38BC */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmadd231p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F38BD */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, }, /* PREFIX_VEX_0F38BE */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmsub231p%XW", { XM, Vex, EXx }, 0 }, }, /* PREFIX_VEX_0F38BF */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, }, /* PREFIX_VEX_0F38DB */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F38DB_P_2) }, }, /* PREFIX_VEX_0F38DC */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F38DC_P_2) }, }, /* PREFIX_VEX_0F38DD */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F38DD_P_2) }, }, /* PREFIX_VEX_0F38DE */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F38DE_P_2) }, }, /* PREFIX_VEX_0F38DF */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F38DF_P_2) }, }, /* PREFIX_VEX_0F38F2 */ { { VEX_LEN_TABLE(VEX_LEN_0F38F2_P_0) }, }, /* PREFIX_VEX_0F38F3_REG_1 */ { { VEX_LEN_TABLE(VEX_LEN_0F38F3_R_1_P_0) }, }, /* PREFIX_VEX_0F38F3_REG_2 */ { { VEX_LEN_TABLE(VEX_LEN_0F38F3_R_2_P_0) }, }, /* PREFIX_VEX_0F38F3_REG_3 */ { { VEX_LEN_TABLE(VEX_LEN_0F38F3_R_3_P_0) }, }, /* PREFIX_VEX_0F38F5 */ { { VEX_LEN_TABLE(VEX_LEN_0F38F5_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0F38F5_P_1) }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F38F5_P_3) }, }, /* PREFIX_VEX_0F38F6 */ { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F38F6_P_3) }, }, /* PREFIX_VEX_0F38F7 */ { { VEX_LEN_TABLE(VEX_LEN_0F38F7_P_0) }, { VEX_LEN_TABLE(VEX_LEN_0F38F7_P_1) }, { VEX_LEN_TABLE(VEX_LEN_0F38F7_P_2) }, { VEX_LEN_TABLE(VEX_LEN_0F38F7_P_3) }, }, /* PREFIX_VEX_0F3A00 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A00_P_2) }, }, /* PREFIX_VEX_0F3A01 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A01_P_2) }, }, /* PREFIX_VEX_0F3A02 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A02_P_2) }, }, /* PREFIX_VEX_0F3A04 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A04_P_2) }, }, /* PREFIX_VEX_0F3A05 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A05_P_2) }, }, /* PREFIX_VEX_0F3A06 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A06_P_2) }, }, /* PREFIX_VEX_0F3A08 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A08_P_2) }, }, /* PREFIX_VEX_0F3A09 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A09_P_2) }, }, /* PREFIX_VEX_0F3A0A */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A0A_P_2) }, }, /* PREFIX_VEX_0F3A0B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A0B_P_2) }, }, /* PREFIX_VEX_0F3A0C */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A0C_P_2) }, }, /* PREFIX_VEX_0F3A0D */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A0D_P_2) }, }, /* PREFIX_VEX_0F3A0E */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A0E_P_2) }, }, /* PREFIX_VEX_0F3A0F */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A0F_P_2) }, }, /* PREFIX_VEX_0F3A14 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A14_P_2) }, }, /* PREFIX_VEX_0F3A15 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A15_P_2) }, }, /* PREFIX_VEX_0F3A16 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A16_P_2) }, }, /* PREFIX_VEX_0F3A17 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A17_P_2) }, }, /* PREFIX_VEX_0F3A18 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A18_P_2) }, }, /* PREFIX_VEX_0F3A19 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A19_P_2) }, }, /* PREFIX_VEX_0F3A1D */ { { Bad_Opcode }, { Bad_Opcode }, { "vcvtps2ph", { EXxmmq, XM, Ib }, 0 }, }, /* PREFIX_VEX_0F3A20 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A20_P_2) }, }, /* PREFIX_VEX_0F3A21 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A21_P_2) }, }, /* PREFIX_VEX_0F3A22 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A22_P_2) }, }, /* PREFIX_VEX_0F3A30 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A30_P_2) }, }, /* PREFIX_VEX_0F3A31 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A31_P_2) }, }, /* PREFIX_VEX_0F3A32 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A32_P_2) }, }, /* PREFIX_VEX_0F3A33 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A33_P_2) }, }, /* PREFIX_VEX_0F3A38 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A38_P_2) }, }, /* PREFIX_VEX_0F3A39 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A39_P_2) }, }, /* PREFIX_VEX_0F3A40 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A40_P_2) }, }, /* PREFIX_VEX_0F3A41 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A41_P_2) }, }, /* PREFIX_VEX_0F3A42 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A42_P_2) }, }, /* PREFIX_VEX_0F3A44 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A44_P_2) }, }, /* PREFIX_VEX_0F3A46 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A46_P_2) }, }, /* PREFIX_VEX_0F3A48 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A48_P_2) }, }, /* PREFIX_VEX_0F3A49 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A49_P_2) }, }, /* PREFIX_VEX_0F3A4A */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A4A_P_2) }, }, /* PREFIX_VEX_0F3A4B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A4B_P_2) }, }, /* PREFIX_VEX_0F3A4C */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A4C_P_2) }, }, /* PREFIX_VEX_0F3A5C */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmaddsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, }, /* PREFIX_VEX_0F3A5D */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmaddsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, }, /* PREFIX_VEX_0F3A5E */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsubaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, }, /* PREFIX_VEX_0F3A5F */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsubaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, }, /* PREFIX_VEX_0F3A60 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A60_P_2) }, { Bad_Opcode }, }, /* PREFIX_VEX_0F3A61 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A61_P_2) }, }, /* PREFIX_VEX_0F3A62 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A62_P_2) }, }, /* PREFIX_VEX_0F3A63 */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A63_P_2) }, }, /* PREFIX_VEX_0F3A68 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, }, /* PREFIX_VEX_0F3A69 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, }, /* PREFIX_VEX_0F3A6A */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A6A_P_2) }, }, /* PREFIX_VEX_0F3A6B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A6B_P_2) }, }, /* PREFIX_VEX_0F3A6C */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, }, /* PREFIX_VEX_0F3A6D */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, }, /* PREFIX_VEX_0F3A6E */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A6E_P_2) }, }, /* PREFIX_VEX_0F3A6F */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A6F_P_2) }, }, /* PREFIX_VEX_0F3A78 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, }, /* PREFIX_VEX_0F3A79 */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, }, /* PREFIX_VEX_0F3A7A */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A7A_P_2) }, }, /* PREFIX_VEX_0F3A7B */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A7B_P_2) }, }, /* PREFIX_VEX_0F3A7C */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, { Bad_Opcode }, }, /* PREFIX_VEX_0F3A7D */ { { Bad_Opcode }, { Bad_Opcode }, { "vfnmsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, }, /* PREFIX_VEX_0F3A7E */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A7E_P_2) }, }, /* PREFIX_VEX_0F3A7F */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3A7F_P_2) }, }, /* PREFIX_VEX_0F3ADF */ { { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3ADF_P_2) }, }, /* PREFIX_VEX_0F3AF0 */ { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0F3AF0_P_3) }, }, #define NEED_PREFIX_TABLE #include "i386-dis-evex.h" #undef NEED_PREFIX_TABLE }; static const struct dis386 x86_64_table[][2] = { /* X86_64_06 */ { { "pushP", { es }, 0 }, }, /* X86_64_07 */ { { "popP", { es }, 0 }, }, /* X86_64_0D */ { { "pushP", { cs }, 0 }, }, /* X86_64_16 */ { { "pushP", { ss }, 0 }, }, /* X86_64_17 */ { { "popP", { ss }, 0 }, }, /* X86_64_1E */ { { "pushP", { ds }, 0 }, }, /* X86_64_1F */ { { "popP", { ds }, 0 }, }, /* X86_64_27 */ { { "daa", { XX }, 0 }, }, /* X86_64_2F */ { { "das", { XX }, 0 }, }, /* X86_64_37 */ { { "aaa", { XX }, 0 }, }, /* X86_64_3F */ { { "aas", { XX }, 0 }, }, /* X86_64_60 */ { { "pushaP", { XX }, 0 }, }, /* X86_64_61 */ { { "popaP", { XX }, 0 }, }, /* X86_64_62 */ { { MOD_TABLE(MOD_62_32BIT) }, { EVEX_TABLE(EVEX_0F) }, }, /* X86_64_63 */ { { "arpl", { Ew, Gw }, 0 }, { "movs{lq|xd}", { Gv, Ed }, 0 }, }, /* X86_64_6D */ { { "ins{R|}", { Yzr, indirDX }, 0 }, { "ins{G|}", { Yzr, indirDX }, 0 }, }, /* X86_64_6F */ { { "outs{R|}", { indirDXr, Xz }, 0 }, { "outs{G|}", { indirDXr, Xz }, 0 }, }, /* X86_64_82 */ { /* Opcode 0x82 is an alias of of opcode 0x80 in 32-bit mode. */ { REG_TABLE(REG_80) }, }, /* X86_64_9A */ { { "Jcall{T|}", { Ap }, 0 }, }, /* X86_64_C4 */ { { MOD_TABLE(MOD_C4_32BIT) }, { VEX_C4_TABLE(VEX_0F) }, }, /* X86_64_C5 */ { { MOD_TABLE(MOD_C5_32BIT) }, { VEX_C5_TABLE(VEX_0F) }, }, /* X86_64_CE */ { { "into", { XX }, 0 }, }, /* X86_64_D4 */ { { "aam", { Ib }, 0 }, }, /* X86_64_D5 */ { { "aad", { Ib }, 0 }, }, /* X86_64_E8 */ { { "callP", { Jv, BND }, 0 }, { "call@", { Jv, BND }, 0 } }, /* X86_64_E9 */ { { "jmpP", { Jv, BND }, 0 }, { "jmp@", { Jv, BND }, 0 } }, /* X86_64_EA */ { { "Jjmp{T|}", { Ap }, 0 }, }, /* X86_64_0F01_REG_0 */ { { "sgdt{Q|IQ}", { M }, 0 }, { "sgdt", { M }, 0 }, }, /* X86_64_0F01_REG_1 */ { { "sidt{Q|IQ}", { M }, 0 }, { "sidt", { M }, 0 }, }, /* X86_64_0F01_REG_2 */ { { "lgdt{Q|Q}", { M }, 0 }, { "lgdt", { M }, 0 }, }, /* X86_64_0F01_REG_3 */ { { "lidt{Q|Q}", { M }, 0 }, { "lidt", { M }, 0 }, }, }; static const struct dis386 three_byte_table[][256] = { /* THREE_BYTE_0F38 */ { /* 00 */ { "pshufb", { MX, EM }, PREFIX_OPCODE }, { "phaddw", { MX, EM }, PREFIX_OPCODE }, { "phaddd", { MX, EM }, PREFIX_OPCODE }, { "phaddsw", { MX, EM }, PREFIX_OPCODE }, { "pmaddubsw", { MX, EM }, PREFIX_OPCODE }, { "phsubw", { MX, EM }, PREFIX_OPCODE }, { "phsubd", { MX, EM }, PREFIX_OPCODE }, { "phsubsw", { MX, EM }, PREFIX_OPCODE }, /* 08 */ { "psignb", { MX, EM }, PREFIX_OPCODE }, { "psignw", { MX, EM }, PREFIX_OPCODE }, { "psignd", { MX, EM }, PREFIX_OPCODE }, { "pmulhrsw", { MX, EM }, PREFIX_OPCODE }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 10 */ { PREFIX_TABLE(PREFIX_0F3810) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_0F3814) }, { PREFIX_TABLE(PREFIX_0F3815) }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_0F3817) }, /* 18 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "pabsb", { MX, EM }, PREFIX_OPCODE }, { "pabsw", { MX, EM }, PREFIX_OPCODE }, { "pabsd", { MX, EM }, PREFIX_OPCODE }, { Bad_Opcode }, /* 20 */ { PREFIX_TABLE(PREFIX_0F3820) }, { PREFIX_TABLE(PREFIX_0F3821) }, { PREFIX_TABLE(PREFIX_0F3822) }, { PREFIX_TABLE(PREFIX_0F3823) }, { PREFIX_TABLE(PREFIX_0F3824) }, { PREFIX_TABLE(PREFIX_0F3825) }, { Bad_Opcode }, { Bad_Opcode }, /* 28 */ { PREFIX_TABLE(PREFIX_0F3828) }, { PREFIX_TABLE(PREFIX_0F3829) }, { PREFIX_TABLE(PREFIX_0F382A) }, { PREFIX_TABLE(PREFIX_0F382B) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 30 */ { PREFIX_TABLE(PREFIX_0F3830) }, { PREFIX_TABLE(PREFIX_0F3831) }, { PREFIX_TABLE(PREFIX_0F3832) }, { PREFIX_TABLE(PREFIX_0F3833) }, { PREFIX_TABLE(PREFIX_0F3834) }, { PREFIX_TABLE(PREFIX_0F3835) }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_0F3837) }, /* 38 */ { PREFIX_TABLE(PREFIX_0F3838) }, { PREFIX_TABLE(PREFIX_0F3839) }, { PREFIX_TABLE(PREFIX_0F383A) }, { PREFIX_TABLE(PREFIX_0F383B) }, { PREFIX_TABLE(PREFIX_0F383C) }, { PREFIX_TABLE(PREFIX_0F383D) }, { PREFIX_TABLE(PREFIX_0F383E) }, { PREFIX_TABLE(PREFIX_0F383F) }, /* 40 */ { PREFIX_TABLE(PREFIX_0F3840) }, { PREFIX_TABLE(PREFIX_0F3841) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 48 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 50 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 58 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 60 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 68 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 70 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 78 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 80 */ { PREFIX_TABLE(PREFIX_0F3880) }, { PREFIX_TABLE(PREFIX_0F3881) }, { PREFIX_TABLE(PREFIX_0F3882) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 88 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 90 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 98 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* a0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* a8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* b0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* b8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c8 */ { PREFIX_TABLE(PREFIX_0F38C8) }, { PREFIX_TABLE(PREFIX_0F38C9) }, { PREFIX_TABLE(PREFIX_0F38CA) }, { PREFIX_TABLE(PREFIX_0F38CB) }, { PREFIX_TABLE(PREFIX_0F38CC) }, { PREFIX_TABLE(PREFIX_0F38CD) }, { Bad_Opcode }, { Bad_Opcode }, /* d0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* d8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_0F38DB) }, { PREFIX_TABLE(PREFIX_0F38DC) }, { PREFIX_TABLE(PREFIX_0F38DD) }, { PREFIX_TABLE(PREFIX_0F38DE) }, { PREFIX_TABLE(PREFIX_0F38DF) }, /* e0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* e8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* f0 */ { PREFIX_TABLE(PREFIX_0F38F0) }, { PREFIX_TABLE(PREFIX_0F38F1) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_0F38F6) }, { Bad_Opcode }, /* f8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, }, /* THREE_BYTE_0F3A */ { /* 00 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 08 */ { PREFIX_TABLE(PREFIX_0F3A08) }, { PREFIX_TABLE(PREFIX_0F3A09) }, { PREFIX_TABLE(PREFIX_0F3A0A) }, { PREFIX_TABLE(PREFIX_0F3A0B) }, { PREFIX_TABLE(PREFIX_0F3A0C) }, { PREFIX_TABLE(PREFIX_0F3A0D) }, { PREFIX_TABLE(PREFIX_0F3A0E) }, { "palignr", { MX, EM, Ib }, PREFIX_OPCODE }, /* 10 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_0F3A14) }, { PREFIX_TABLE(PREFIX_0F3A15) }, { PREFIX_TABLE(PREFIX_0F3A16) }, { PREFIX_TABLE(PREFIX_0F3A17) }, /* 18 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 20 */ { PREFIX_TABLE(PREFIX_0F3A20) }, { PREFIX_TABLE(PREFIX_0F3A21) }, { PREFIX_TABLE(PREFIX_0F3A22) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 28 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 30 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 38 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 40 */ { PREFIX_TABLE(PREFIX_0F3A40) }, { PREFIX_TABLE(PREFIX_0F3A41) }, { PREFIX_TABLE(PREFIX_0F3A42) }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_0F3A44) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 48 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 50 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 58 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 60 */ { PREFIX_TABLE(PREFIX_0F3A60) }, { PREFIX_TABLE(PREFIX_0F3A61) }, { PREFIX_TABLE(PREFIX_0F3A62) }, { PREFIX_TABLE(PREFIX_0F3A63) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 68 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 70 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 78 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 80 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 88 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 90 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 98 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* a0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* a8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* b0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* b8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_0F3ACC) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* d0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* d8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_0F3ADF) }, /* e0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* e8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* f0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* f8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, }, /* THREE_BYTE_0F7A */ { /* 00 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 08 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 10 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 18 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 20 */ { "ptest", { XX }, PREFIX_OPCODE }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 28 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 30 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 38 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 40 */ { Bad_Opcode }, { "phaddbw", { XM, EXq }, PREFIX_OPCODE }, { "phaddbd", { XM, EXq }, PREFIX_OPCODE }, { "phaddbq", { XM, EXq }, PREFIX_OPCODE }, { Bad_Opcode }, { Bad_Opcode }, { "phaddwd", { XM, EXq }, PREFIX_OPCODE }, { "phaddwq", { XM, EXq }, PREFIX_OPCODE }, /* 48 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "phadddq", { XM, EXq }, PREFIX_OPCODE }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 50 */ { Bad_Opcode }, { "phaddubw", { XM, EXq }, PREFIX_OPCODE }, { "phaddubd", { XM, EXq }, PREFIX_OPCODE }, { "phaddubq", { XM, EXq }, PREFIX_OPCODE }, { Bad_Opcode }, { Bad_Opcode }, { "phadduwd", { XM, EXq }, PREFIX_OPCODE }, { "phadduwq", { XM, EXq }, PREFIX_OPCODE }, /* 58 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "phaddudq", { XM, EXq }, PREFIX_OPCODE }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 60 */ { Bad_Opcode }, { "phsubbw", { XM, EXq }, PREFIX_OPCODE }, { "phsubbd", { XM, EXq }, PREFIX_OPCODE }, { "phsubbq", { XM, EXq }, PREFIX_OPCODE }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 68 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 70 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 78 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 80 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 88 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 90 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 98 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* a0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* a8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* b0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* b8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* d0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* d8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* e0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* e8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* f0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* f8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, }, }; static const struct dis386 xop_table[][256] = { /* XOP_08 */ { /* 00 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 08 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 10 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 18 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 20 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 28 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 30 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 38 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 40 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 48 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 50 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 58 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 60 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 68 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 70 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 78 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 80 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "vpmacssww", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, { "vpmacsswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, { "vpmacssdql", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, /* 88 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "vpmacssdd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, { "vpmacssdqh", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, /* 90 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "vpmacsww", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, { "vpmacswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, { "vpmacsdql", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, /* 98 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "vpmacsdd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, { "vpmacsdqh", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, /* a0 */ { Bad_Opcode }, { Bad_Opcode }, { "vpcmov", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, { "vpperm", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { "vpmadcsswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, { Bad_Opcode }, /* a8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* b0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "vpmadcswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, { Bad_Opcode }, /* b8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c0 */ { "vprotb", { XM, Vex_2src_1, Ib }, 0 }, { "vprotw", { XM, Vex_2src_1, Ib }, 0 }, { "vprotd", { XM, Vex_2src_1, Ib }, 0 }, { "vprotq", { XM, Vex_2src_1, Ib }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0FXOP_08_CC) }, { VEX_LEN_TABLE(VEX_LEN_0FXOP_08_CD) }, { VEX_LEN_TABLE(VEX_LEN_0FXOP_08_CE) }, { VEX_LEN_TABLE(VEX_LEN_0FXOP_08_CF) }, /* d0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* d8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* e0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* e8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { VEX_LEN_TABLE(VEX_LEN_0FXOP_08_EC) }, { VEX_LEN_TABLE(VEX_LEN_0FXOP_08_ED) }, { VEX_LEN_TABLE(VEX_LEN_0FXOP_08_EE) }, { VEX_LEN_TABLE(VEX_LEN_0FXOP_08_EF) }, /* f0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* f8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, }, /* XOP_09 */ { /* 00 */ { Bad_Opcode }, { REG_TABLE(REG_XOP_TBM_01) }, { REG_TABLE(REG_XOP_TBM_02) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 08 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 10 */ { Bad_Opcode }, { Bad_Opcode }, { REG_TABLE(REG_XOP_LWPCB) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 18 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 20 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 28 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 30 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 38 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 40 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 48 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 50 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 58 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 60 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 68 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 70 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 78 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 80 */ { VEX_LEN_TABLE(VEX_LEN_0FXOP_09_80) }, { VEX_LEN_TABLE(VEX_LEN_0FXOP_09_81) }, { "vfrczss", { XM, EXd }, 0 }, { "vfrczsd", { XM, EXq }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 88 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 90 */ { "vprotb", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, { "vprotw", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, { "vprotd", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, { "vprotq", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, { "vpshlb", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, { "vpshlw", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, { "vpshld", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, { "vpshlq", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, /* 98 */ { "vpshab", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, { "vpshaw", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, { "vpshad", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, { "vpshaq", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* a0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* a8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* b0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* b8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c0 */ { Bad_Opcode }, { "vphaddbw", { XM, EXxmm }, 0 }, { "vphaddbd", { XM, EXxmm }, 0 }, { "vphaddbq", { XM, EXxmm }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { "vphaddwd", { XM, EXxmm }, 0 }, { "vphaddwq", { XM, EXxmm }, 0 }, /* c8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "vphadddq", { XM, EXxmm }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* d0 */ { Bad_Opcode }, { "vphaddubw", { XM, EXxmm }, 0 }, { "vphaddubd", { XM, EXxmm }, 0 }, { "vphaddubq", { XM, EXxmm }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { "vphadduwd", { XM, EXxmm }, 0 }, { "vphadduwq", { XM, EXxmm }, 0 }, /* d8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "vphaddudq", { XM, EXxmm }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* e0 */ { Bad_Opcode }, { "vphsubbw", { XM, EXxmm }, 0 }, { "vphsubwd", { XM, EXxmm }, 0 }, { "vphsubdq", { XM, EXxmm }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* e8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* f0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* f8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, }, /* XOP_0A */ { /* 00 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 08 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 10 */ { "bextr", { Gv, Ev, Iq }, 0 }, { Bad_Opcode }, { REG_TABLE(REG_XOP_LWP) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 18 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 20 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 28 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 30 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 38 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 40 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 48 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 50 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 58 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 60 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 68 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 70 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 78 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 80 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 88 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 90 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 98 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* a0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* a8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* b0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* b8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* d0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* d8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* e0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* e8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* f0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* f8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, }, }; static const struct dis386 vex_table[][256] = { /* VEX_0F */ { /* 00 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 08 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 10 */ { PREFIX_TABLE(PREFIX_VEX_0F10) }, { PREFIX_TABLE(PREFIX_VEX_0F11) }, { PREFIX_TABLE(PREFIX_VEX_0F12) }, { MOD_TABLE(MOD_VEX_0F13) }, { VEX_W_TABLE(VEX_W_0F14) }, { VEX_W_TABLE(VEX_W_0F15) }, { PREFIX_TABLE(PREFIX_VEX_0F16) }, { MOD_TABLE(MOD_VEX_0F17) }, /* 18 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 20 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 28 */ { VEX_W_TABLE(VEX_W_0F28) }, { VEX_W_TABLE(VEX_W_0F29) }, { PREFIX_TABLE(PREFIX_VEX_0F2A) }, { MOD_TABLE(MOD_VEX_0F2B) }, { PREFIX_TABLE(PREFIX_VEX_0F2C) }, { PREFIX_TABLE(PREFIX_VEX_0F2D) }, { PREFIX_TABLE(PREFIX_VEX_0F2E) }, { PREFIX_TABLE(PREFIX_VEX_0F2F) }, /* 30 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 38 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 40 */ { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F41) }, { PREFIX_TABLE(PREFIX_VEX_0F42) }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F44) }, { PREFIX_TABLE(PREFIX_VEX_0F45) }, { PREFIX_TABLE(PREFIX_VEX_0F46) }, { PREFIX_TABLE(PREFIX_VEX_0F47) }, /* 48 */ { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F4A) }, { PREFIX_TABLE(PREFIX_VEX_0F4B) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 50 */ { MOD_TABLE(MOD_VEX_0F50) }, { PREFIX_TABLE(PREFIX_VEX_0F51) }, { PREFIX_TABLE(PREFIX_VEX_0F52) }, { PREFIX_TABLE(PREFIX_VEX_0F53) }, { "vandpX", { XM, Vex, EXx }, 0 }, { "vandnpX", { XM, Vex, EXx }, 0 }, { "vorpX", { XM, Vex, EXx }, 0 }, { "vxorpX", { XM, Vex, EXx }, 0 }, /* 58 */ { PREFIX_TABLE(PREFIX_VEX_0F58) }, { PREFIX_TABLE(PREFIX_VEX_0F59) }, { PREFIX_TABLE(PREFIX_VEX_0F5A) }, { PREFIX_TABLE(PREFIX_VEX_0F5B) }, { PREFIX_TABLE(PREFIX_VEX_0F5C) }, { PREFIX_TABLE(PREFIX_VEX_0F5D) }, { PREFIX_TABLE(PREFIX_VEX_0F5E) }, { PREFIX_TABLE(PREFIX_VEX_0F5F) }, /* 60 */ { PREFIX_TABLE(PREFIX_VEX_0F60) }, { PREFIX_TABLE(PREFIX_VEX_0F61) }, { PREFIX_TABLE(PREFIX_VEX_0F62) }, { PREFIX_TABLE(PREFIX_VEX_0F63) }, { PREFIX_TABLE(PREFIX_VEX_0F64) }, { PREFIX_TABLE(PREFIX_VEX_0F65) }, { PREFIX_TABLE(PREFIX_VEX_0F66) }, { PREFIX_TABLE(PREFIX_VEX_0F67) }, /* 68 */ { PREFIX_TABLE(PREFIX_VEX_0F68) }, { PREFIX_TABLE(PREFIX_VEX_0F69) }, { PREFIX_TABLE(PREFIX_VEX_0F6A) }, { PREFIX_TABLE(PREFIX_VEX_0F6B) }, { PREFIX_TABLE(PREFIX_VEX_0F6C) }, { PREFIX_TABLE(PREFIX_VEX_0F6D) }, { PREFIX_TABLE(PREFIX_VEX_0F6E) }, { PREFIX_TABLE(PREFIX_VEX_0F6F) }, /* 70 */ { PREFIX_TABLE(PREFIX_VEX_0F70) }, { REG_TABLE(REG_VEX_0F71) }, { REG_TABLE(REG_VEX_0F72) }, { REG_TABLE(REG_VEX_0F73) }, { PREFIX_TABLE(PREFIX_VEX_0F74) }, { PREFIX_TABLE(PREFIX_VEX_0F75) }, { PREFIX_TABLE(PREFIX_VEX_0F76) }, { PREFIX_TABLE(PREFIX_VEX_0F77) }, /* 78 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F7C) }, { PREFIX_TABLE(PREFIX_VEX_0F7D) }, { PREFIX_TABLE(PREFIX_VEX_0F7E) }, { PREFIX_TABLE(PREFIX_VEX_0F7F) }, /* 80 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 88 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 90 */ { PREFIX_TABLE(PREFIX_VEX_0F90) }, { PREFIX_TABLE(PREFIX_VEX_0F91) }, { PREFIX_TABLE(PREFIX_VEX_0F92) }, { PREFIX_TABLE(PREFIX_VEX_0F93) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 98 */ { PREFIX_TABLE(PREFIX_VEX_0F98) }, { PREFIX_TABLE(PREFIX_VEX_0F99) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* a0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* a8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { REG_TABLE(REG_VEX_0FAE) }, { Bad_Opcode }, /* b0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* b8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c0 */ { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0FC2) }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0FC4) }, { PREFIX_TABLE(PREFIX_VEX_0FC5) }, { "vshufpX", { XM, Vex, EXx, Ib }, 0 }, { Bad_Opcode }, /* c8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* d0 */ { PREFIX_TABLE(PREFIX_VEX_0FD0) }, { PREFIX_TABLE(PREFIX_VEX_0FD1) }, { PREFIX_TABLE(PREFIX_VEX_0FD2) }, { PREFIX_TABLE(PREFIX_VEX_0FD3) }, { PREFIX_TABLE(PREFIX_VEX_0FD4) }, { PREFIX_TABLE(PREFIX_VEX_0FD5) }, { PREFIX_TABLE(PREFIX_VEX_0FD6) }, { PREFIX_TABLE(PREFIX_VEX_0FD7) }, /* d8 */ { PREFIX_TABLE(PREFIX_VEX_0FD8) }, { PREFIX_TABLE(PREFIX_VEX_0FD9) }, { PREFIX_TABLE(PREFIX_VEX_0FDA) }, { PREFIX_TABLE(PREFIX_VEX_0FDB) }, { PREFIX_TABLE(PREFIX_VEX_0FDC) }, { PREFIX_TABLE(PREFIX_VEX_0FDD) }, { PREFIX_TABLE(PREFIX_VEX_0FDE) }, { PREFIX_TABLE(PREFIX_VEX_0FDF) }, /* e0 */ { PREFIX_TABLE(PREFIX_VEX_0FE0) }, { PREFIX_TABLE(PREFIX_VEX_0FE1) }, { PREFIX_TABLE(PREFIX_VEX_0FE2) }, { PREFIX_TABLE(PREFIX_VEX_0FE3) }, { PREFIX_TABLE(PREFIX_VEX_0FE4) }, { PREFIX_TABLE(PREFIX_VEX_0FE5) }, { PREFIX_TABLE(PREFIX_VEX_0FE6) }, { PREFIX_TABLE(PREFIX_VEX_0FE7) }, /* e8 */ { PREFIX_TABLE(PREFIX_VEX_0FE8) }, { PREFIX_TABLE(PREFIX_VEX_0FE9) }, { PREFIX_TABLE(PREFIX_VEX_0FEA) }, { PREFIX_TABLE(PREFIX_VEX_0FEB) }, { PREFIX_TABLE(PREFIX_VEX_0FEC) }, { PREFIX_TABLE(PREFIX_VEX_0FED) }, { PREFIX_TABLE(PREFIX_VEX_0FEE) }, { PREFIX_TABLE(PREFIX_VEX_0FEF) }, /* f0 */ { PREFIX_TABLE(PREFIX_VEX_0FF0) }, { PREFIX_TABLE(PREFIX_VEX_0FF1) }, { PREFIX_TABLE(PREFIX_VEX_0FF2) }, { PREFIX_TABLE(PREFIX_VEX_0FF3) }, { PREFIX_TABLE(PREFIX_VEX_0FF4) }, { PREFIX_TABLE(PREFIX_VEX_0FF5) }, { PREFIX_TABLE(PREFIX_VEX_0FF6) }, { PREFIX_TABLE(PREFIX_VEX_0FF7) }, /* f8 */ { PREFIX_TABLE(PREFIX_VEX_0FF8) }, { PREFIX_TABLE(PREFIX_VEX_0FF9) }, { PREFIX_TABLE(PREFIX_VEX_0FFA) }, { PREFIX_TABLE(PREFIX_VEX_0FFB) }, { PREFIX_TABLE(PREFIX_VEX_0FFC) }, { PREFIX_TABLE(PREFIX_VEX_0FFD) }, { PREFIX_TABLE(PREFIX_VEX_0FFE) }, { Bad_Opcode }, }, /* VEX_0F38 */ { /* 00 */ { PREFIX_TABLE(PREFIX_VEX_0F3800) }, { PREFIX_TABLE(PREFIX_VEX_0F3801) }, { PREFIX_TABLE(PREFIX_VEX_0F3802) }, { PREFIX_TABLE(PREFIX_VEX_0F3803) }, { PREFIX_TABLE(PREFIX_VEX_0F3804) }, { PREFIX_TABLE(PREFIX_VEX_0F3805) }, { PREFIX_TABLE(PREFIX_VEX_0F3806) }, { PREFIX_TABLE(PREFIX_VEX_0F3807) }, /* 08 */ { PREFIX_TABLE(PREFIX_VEX_0F3808) }, { PREFIX_TABLE(PREFIX_VEX_0F3809) }, { PREFIX_TABLE(PREFIX_VEX_0F380A) }, { PREFIX_TABLE(PREFIX_VEX_0F380B) }, { PREFIX_TABLE(PREFIX_VEX_0F380C) }, { PREFIX_TABLE(PREFIX_VEX_0F380D) }, { PREFIX_TABLE(PREFIX_VEX_0F380E) }, { PREFIX_TABLE(PREFIX_VEX_0F380F) }, /* 10 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F3813) }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F3816) }, { PREFIX_TABLE(PREFIX_VEX_0F3817) }, /* 18 */ { PREFIX_TABLE(PREFIX_VEX_0F3818) }, { PREFIX_TABLE(PREFIX_VEX_0F3819) }, { PREFIX_TABLE(PREFIX_VEX_0F381A) }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F381C) }, { PREFIX_TABLE(PREFIX_VEX_0F381D) }, { PREFIX_TABLE(PREFIX_VEX_0F381E) }, { Bad_Opcode }, /* 20 */ { PREFIX_TABLE(PREFIX_VEX_0F3820) }, { PREFIX_TABLE(PREFIX_VEX_0F3821) }, { PREFIX_TABLE(PREFIX_VEX_0F3822) }, { PREFIX_TABLE(PREFIX_VEX_0F3823) }, { PREFIX_TABLE(PREFIX_VEX_0F3824) }, { PREFIX_TABLE(PREFIX_VEX_0F3825) }, { Bad_Opcode }, { Bad_Opcode }, /* 28 */ { PREFIX_TABLE(PREFIX_VEX_0F3828) }, { PREFIX_TABLE(PREFIX_VEX_0F3829) }, { PREFIX_TABLE(PREFIX_VEX_0F382A) }, { PREFIX_TABLE(PREFIX_VEX_0F382B) }, { PREFIX_TABLE(PREFIX_VEX_0F382C) }, { PREFIX_TABLE(PREFIX_VEX_0F382D) }, { PREFIX_TABLE(PREFIX_VEX_0F382E) }, { PREFIX_TABLE(PREFIX_VEX_0F382F) }, /* 30 */ { PREFIX_TABLE(PREFIX_VEX_0F3830) }, { PREFIX_TABLE(PREFIX_VEX_0F3831) }, { PREFIX_TABLE(PREFIX_VEX_0F3832) }, { PREFIX_TABLE(PREFIX_VEX_0F3833) }, { PREFIX_TABLE(PREFIX_VEX_0F3834) }, { PREFIX_TABLE(PREFIX_VEX_0F3835) }, { PREFIX_TABLE(PREFIX_VEX_0F3836) }, { PREFIX_TABLE(PREFIX_VEX_0F3837) }, /* 38 */ { PREFIX_TABLE(PREFIX_VEX_0F3838) }, { PREFIX_TABLE(PREFIX_VEX_0F3839) }, { PREFIX_TABLE(PREFIX_VEX_0F383A) }, { PREFIX_TABLE(PREFIX_VEX_0F383B) }, { PREFIX_TABLE(PREFIX_VEX_0F383C) }, { PREFIX_TABLE(PREFIX_VEX_0F383D) }, { PREFIX_TABLE(PREFIX_VEX_0F383E) }, { PREFIX_TABLE(PREFIX_VEX_0F383F) }, /* 40 */ { PREFIX_TABLE(PREFIX_VEX_0F3840) }, { PREFIX_TABLE(PREFIX_VEX_0F3841) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F3845) }, { PREFIX_TABLE(PREFIX_VEX_0F3846) }, { PREFIX_TABLE(PREFIX_VEX_0F3847) }, /* 48 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 50 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 58 */ { PREFIX_TABLE(PREFIX_VEX_0F3858) }, { PREFIX_TABLE(PREFIX_VEX_0F3859) }, { PREFIX_TABLE(PREFIX_VEX_0F385A) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 60 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 68 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 70 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 78 */ { PREFIX_TABLE(PREFIX_VEX_0F3878) }, { PREFIX_TABLE(PREFIX_VEX_0F3879) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 80 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 88 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F388C) }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F388E) }, { Bad_Opcode }, /* 90 */ { PREFIX_TABLE(PREFIX_VEX_0F3890) }, { PREFIX_TABLE(PREFIX_VEX_0F3891) }, { PREFIX_TABLE(PREFIX_VEX_0F3892) }, { PREFIX_TABLE(PREFIX_VEX_0F3893) }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F3896) }, { PREFIX_TABLE(PREFIX_VEX_0F3897) }, /* 98 */ { PREFIX_TABLE(PREFIX_VEX_0F3898) }, { PREFIX_TABLE(PREFIX_VEX_0F3899) }, { PREFIX_TABLE(PREFIX_VEX_0F389A) }, { PREFIX_TABLE(PREFIX_VEX_0F389B) }, { PREFIX_TABLE(PREFIX_VEX_0F389C) }, { PREFIX_TABLE(PREFIX_VEX_0F389D) }, { PREFIX_TABLE(PREFIX_VEX_0F389E) }, { PREFIX_TABLE(PREFIX_VEX_0F389F) }, /* a0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F38A6) }, { PREFIX_TABLE(PREFIX_VEX_0F38A7) }, /* a8 */ { PREFIX_TABLE(PREFIX_VEX_0F38A8) }, { PREFIX_TABLE(PREFIX_VEX_0F38A9) }, { PREFIX_TABLE(PREFIX_VEX_0F38AA) }, { PREFIX_TABLE(PREFIX_VEX_0F38AB) }, { PREFIX_TABLE(PREFIX_VEX_0F38AC) }, { PREFIX_TABLE(PREFIX_VEX_0F38AD) }, { PREFIX_TABLE(PREFIX_VEX_0F38AE) }, { PREFIX_TABLE(PREFIX_VEX_0F38AF) }, /* b0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F38B6) }, { PREFIX_TABLE(PREFIX_VEX_0F38B7) }, /* b8 */ { PREFIX_TABLE(PREFIX_VEX_0F38B8) }, { PREFIX_TABLE(PREFIX_VEX_0F38B9) }, { PREFIX_TABLE(PREFIX_VEX_0F38BA) }, { PREFIX_TABLE(PREFIX_VEX_0F38BB) }, { PREFIX_TABLE(PREFIX_VEX_0F38BC) }, { PREFIX_TABLE(PREFIX_VEX_0F38BD) }, { PREFIX_TABLE(PREFIX_VEX_0F38BE) }, { PREFIX_TABLE(PREFIX_VEX_0F38BF) }, /* c0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* d0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* d8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F38DB) }, { PREFIX_TABLE(PREFIX_VEX_0F38DC) }, { PREFIX_TABLE(PREFIX_VEX_0F38DD) }, { PREFIX_TABLE(PREFIX_VEX_0F38DE) }, { PREFIX_TABLE(PREFIX_VEX_0F38DF) }, /* e0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* e8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* f0 */ { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F38F2) }, { REG_TABLE(REG_VEX_0F38F3) }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F38F5) }, { PREFIX_TABLE(PREFIX_VEX_0F38F6) }, { PREFIX_TABLE(PREFIX_VEX_0F38F7) }, /* f8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, }, /* VEX_0F3A */ { /* 00 */ { PREFIX_TABLE(PREFIX_VEX_0F3A00) }, { PREFIX_TABLE(PREFIX_VEX_0F3A01) }, { PREFIX_TABLE(PREFIX_VEX_0F3A02) }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F3A04) }, { PREFIX_TABLE(PREFIX_VEX_0F3A05) }, { PREFIX_TABLE(PREFIX_VEX_0F3A06) }, { Bad_Opcode }, /* 08 */ { PREFIX_TABLE(PREFIX_VEX_0F3A08) }, { PREFIX_TABLE(PREFIX_VEX_0F3A09) }, { PREFIX_TABLE(PREFIX_VEX_0F3A0A) }, { PREFIX_TABLE(PREFIX_VEX_0F3A0B) }, { PREFIX_TABLE(PREFIX_VEX_0F3A0C) }, { PREFIX_TABLE(PREFIX_VEX_0F3A0D) }, { PREFIX_TABLE(PREFIX_VEX_0F3A0E) }, { PREFIX_TABLE(PREFIX_VEX_0F3A0F) }, /* 10 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F3A14) }, { PREFIX_TABLE(PREFIX_VEX_0F3A15) }, { PREFIX_TABLE(PREFIX_VEX_0F3A16) }, { PREFIX_TABLE(PREFIX_VEX_0F3A17) }, /* 18 */ { PREFIX_TABLE(PREFIX_VEX_0F3A18) }, { PREFIX_TABLE(PREFIX_VEX_0F3A19) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F3A1D) }, { Bad_Opcode }, { Bad_Opcode }, /* 20 */ { PREFIX_TABLE(PREFIX_VEX_0F3A20) }, { PREFIX_TABLE(PREFIX_VEX_0F3A21) }, { PREFIX_TABLE(PREFIX_VEX_0F3A22) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 28 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 30 */ { PREFIX_TABLE(PREFIX_VEX_0F3A30) }, { PREFIX_TABLE(PREFIX_VEX_0F3A31) }, { PREFIX_TABLE(PREFIX_VEX_0F3A32) }, { PREFIX_TABLE(PREFIX_VEX_0F3A33) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 38 */ { PREFIX_TABLE(PREFIX_VEX_0F3A38) }, { PREFIX_TABLE(PREFIX_VEX_0F3A39) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 40 */ { PREFIX_TABLE(PREFIX_VEX_0F3A40) }, { PREFIX_TABLE(PREFIX_VEX_0F3A41) }, { PREFIX_TABLE(PREFIX_VEX_0F3A42) }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F3A44) }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F3A46) }, { Bad_Opcode }, /* 48 */ { PREFIX_TABLE(PREFIX_VEX_0F3A48) }, { PREFIX_TABLE(PREFIX_VEX_0F3A49) }, { PREFIX_TABLE(PREFIX_VEX_0F3A4A) }, { PREFIX_TABLE(PREFIX_VEX_0F3A4B) }, { PREFIX_TABLE(PREFIX_VEX_0F3A4C) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 50 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 58 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F3A5C) }, { PREFIX_TABLE(PREFIX_VEX_0F3A5D) }, { PREFIX_TABLE(PREFIX_VEX_0F3A5E) }, { PREFIX_TABLE(PREFIX_VEX_0F3A5F) }, /* 60 */ { PREFIX_TABLE(PREFIX_VEX_0F3A60) }, { PREFIX_TABLE(PREFIX_VEX_0F3A61) }, { PREFIX_TABLE(PREFIX_VEX_0F3A62) }, { PREFIX_TABLE(PREFIX_VEX_0F3A63) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 68 */ { PREFIX_TABLE(PREFIX_VEX_0F3A68) }, { PREFIX_TABLE(PREFIX_VEX_0F3A69) }, { PREFIX_TABLE(PREFIX_VEX_0F3A6A) }, { PREFIX_TABLE(PREFIX_VEX_0F3A6B) }, { PREFIX_TABLE(PREFIX_VEX_0F3A6C) }, { PREFIX_TABLE(PREFIX_VEX_0F3A6D) }, { PREFIX_TABLE(PREFIX_VEX_0F3A6E) }, { PREFIX_TABLE(PREFIX_VEX_0F3A6F) }, /* 70 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 78 */ { PREFIX_TABLE(PREFIX_VEX_0F3A78) }, { PREFIX_TABLE(PREFIX_VEX_0F3A79) }, { PREFIX_TABLE(PREFIX_VEX_0F3A7A) }, { PREFIX_TABLE(PREFIX_VEX_0F3A7B) }, { PREFIX_TABLE(PREFIX_VEX_0F3A7C) }, { PREFIX_TABLE(PREFIX_VEX_0F3A7D) }, { PREFIX_TABLE(PREFIX_VEX_0F3A7E) }, { PREFIX_TABLE(PREFIX_VEX_0F3A7F) }, /* 80 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 88 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 90 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 98 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* a0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* a8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* b0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* b8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* c8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* d0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* d8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F3ADF) }, /* e0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* e8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* f0 */ { PREFIX_TABLE(PREFIX_VEX_0F3AF0) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* f8 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, }, }; #define NEED_OPCODE_TABLE #include "i386-dis-evex.h" #undef NEED_OPCODE_TABLE static const struct dis386 vex_len_table[][2] = { /* VEX_LEN_0F10_P_1 */ { { VEX_W_TABLE(VEX_W_0F10_P_1) }, { VEX_W_TABLE(VEX_W_0F10_P_1) }, }, /* VEX_LEN_0F10_P_3 */ { { VEX_W_TABLE(VEX_W_0F10_P_3) }, { VEX_W_TABLE(VEX_W_0F10_P_3) }, }, /* VEX_LEN_0F11_P_1 */ { { VEX_W_TABLE(VEX_W_0F11_P_1) }, { VEX_W_TABLE(VEX_W_0F11_P_1) }, }, /* VEX_LEN_0F11_P_3 */ { { VEX_W_TABLE(VEX_W_0F11_P_3) }, { VEX_W_TABLE(VEX_W_0F11_P_3) }, }, /* VEX_LEN_0F12_P_0_M_0 */ { { VEX_W_TABLE(VEX_W_0F12_P_0_M_0) }, }, /* VEX_LEN_0F12_P_0_M_1 */ { { VEX_W_TABLE(VEX_W_0F12_P_0_M_1) }, }, /* VEX_LEN_0F12_P_2 */ { { VEX_W_TABLE(VEX_W_0F12_P_2) }, }, /* VEX_LEN_0F13_M_0 */ { { VEX_W_TABLE(VEX_W_0F13_M_0) }, }, /* VEX_LEN_0F16_P_0_M_0 */ { { VEX_W_TABLE(VEX_W_0F16_P_0_M_0) }, }, /* VEX_LEN_0F16_P_0_M_1 */ { { VEX_W_TABLE(VEX_W_0F16_P_0_M_1) }, }, /* VEX_LEN_0F16_P_2 */ { { VEX_W_TABLE(VEX_W_0F16_P_2) }, }, /* VEX_LEN_0F17_M_0 */ { { VEX_W_TABLE(VEX_W_0F17_M_0) }, }, /* VEX_LEN_0F2A_P_1 */ { { "vcvtsi2ss%LQ", { XMScalar, VexScalar, Ev }, 0 }, { "vcvtsi2ss%LQ", { XMScalar, VexScalar, Ev }, 0 }, }, /* VEX_LEN_0F2A_P_3 */ { { "vcvtsi2sd%LQ", { XMScalar, VexScalar, Ev }, 0 }, { "vcvtsi2sd%LQ", { XMScalar, VexScalar, Ev }, 0 }, }, /* VEX_LEN_0F2C_P_1 */ { { "vcvttss2siY", { Gv, EXdScalar }, 0 }, { "vcvttss2siY", { Gv, EXdScalar }, 0 }, }, /* VEX_LEN_0F2C_P_3 */ { { "vcvttsd2siY", { Gv, EXqScalar }, 0 }, { "vcvttsd2siY", { Gv, EXqScalar }, 0 }, }, /* VEX_LEN_0F2D_P_1 */ { { "vcvtss2siY", { Gv, EXdScalar }, 0 }, { "vcvtss2siY", { Gv, EXdScalar }, 0 }, }, /* VEX_LEN_0F2D_P_3 */ { { "vcvtsd2siY", { Gv, EXqScalar }, 0 }, { "vcvtsd2siY", { Gv, EXqScalar }, 0 }, }, /* VEX_LEN_0F2E_P_0 */ { { VEX_W_TABLE(VEX_W_0F2E_P_0) }, { VEX_W_TABLE(VEX_W_0F2E_P_0) }, }, /* VEX_LEN_0F2E_P_2 */ { { VEX_W_TABLE(VEX_W_0F2E_P_2) }, { VEX_W_TABLE(VEX_W_0F2E_P_2) }, }, /* VEX_LEN_0F2F_P_0 */ { { VEX_W_TABLE(VEX_W_0F2F_P_0) }, { VEX_W_TABLE(VEX_W_0F2F_P_0) }, }, /* VEX_LEN_0F2F_P_2 */ { { VEX_W_TABLE(VEX_W_0F2F_P_2) }, { VEX_W_TABLE(VEX_W_0F2F_P_2) }, }, /* VEX_LEN_0F41_P_0 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F41_P_0_LEN_1) }, }, /* VEX_LEN_0F41_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F41_P_2_LEN_1) }, }, /* VEX_LEN_0F42_P_0 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F42_P_0_LEN_1) }, }, /* VEX_LEN_0F42_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F42_P_2_LEN_1) }, }, /* VEX_LEN_0F44_P_0 */ { { VEX_W_TABLE(VEX_W_0F44_P_0_LEN_0) }, }, /* VEX_LEN_0F44_P_2 */ { { VEX_W_TABLE(VEX_W_0F44_P_2_LEN_0) }, }, /* VEX_LEN_0F45_P_0 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F45_P_0_LEN_1) }, }, /* VEX_LEN_0F45_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F45_P_2_LEN_1) }, }, /* VEX_LEN_0F46_P_0 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F46_P_0_LEN_1) }, }, /* VEX_LEN_0F46_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F46_P_2_LEN_1) }, }, /* VEX_LEN_0F47_P_0 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F47_P_0_LEN_1) }, }, /* VEX_LEN_0F47_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F47_P_2_LEN_1) }, }, /* VEX_LEN_0F4A_P_0 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F4A_P_0_LEN_1) }, }, /* VEX_LEN_0F4A_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F4A_P_2_LEN_1) }, }, /* VEX_LEN_0F4B_P_0 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F4B_P_0_LEN_1) }, }, /* VEX_LEN_0F4B_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F4B_P_2_LEN_1) }, }, /* VEX_LEN_0F51_P_1 */ { { VEX_W_TABLE(VEX_W_0F51_P_1) }, { VEX_W_TABLE(VEX_W_0F51_P_1) }, }, /* VEX_LEN_0F51_P_3 */ { { VEX_W_TABLE(VEX_W_0F51_P_3) }, { VEX_W_TABLE(VEX_W_0F51_P_3) }, }, /* VEX_LEN_0F52_P_1 */ { { VEX_W_TABLE(VEX_W_0F52_P_1) }, { VEX_W_TABLE(VEX_W_0F52_P_1) }, }, /* VEX_LEN_0F53_P_1 */ { { VEX_W_TABLE(VEX_W_0F53_P_1) }, { VEX_W_TABLE(VEX_W_0F53_P_1) }, }, /* VEX_LEN_0F58_P_1 */ { { VEX_W_TABLE(VEX_W_0F58_P_1) }, { VEX_W_TABLE(VEX_W_0F58_P_1) }, }, /* VEX_LEN_0F58_P_3 */ { { VEX_W_TABLE(VEX_W_0F58_P_3) }, { VEX_W_TABLE(VEX_W_0F58_P_3) }, }, /* VEX_LEN_0F59_P_1 */ { { VEX_W_TABLE(VEX_W_0F59_P_1) }, { VEX_W_TABLE(VEX_W_0F59_P_1) }, }, /* VEX_LEN_0F59_P_3 */ { { VEX_W_TABLE(VEX_W_0F59_P_3) }, { VEX_W_TABLE(VEX_W_0F59_P_3) }, }, /* VEX_LEN_0F5A_P_1 */ { { VEX_W_TABLE(VEX_W_0F5A_P_1) }, { VEX_W_TABLE(VEX_W_0F5A_P_1) }, }, /* VEX_LEN_0F5A_P_3 */ { { VEX_W_TABLE(VEX_W_0F5A_P_3) }, { VEX_W_TABLE(VEX_W_0F5A_P_3) }, }, /* VEX_LEN_0F5C_P_1 */ { { VEX_W_TABLE(VEX_W_0F5C_P_1) }, { VEX_W_TABLE(VEX_W_0F5C_P_1) }, }, /* VEX_LEN_0F5C_P_3 */ { { VEX_W_TABLE(VEX_W_0F5C_P_3) }, { VEX_W_TABLE(VEX_W_0F5C_P_3) }, }, /* VEX_LEN_0F5D_P_1 */ { { VEX_W_TABLE(VEX_W_0F5D_P_1) }, { VEX_W_TABLE(VEX_W_0F5D_P_1) }, }, /* VEX_LEN_0F5D_P_3 */ { { VEX_W_TABLE(VEX_W_0F5D_P_3) }, { VEX_W_TABLE(VEX_W_0F5D_P_3) }, }, /* VEX_LEN_0F5E_P_1 */ { { VEX_W_TABLE(VEX_W_0F5E_P_1) }, { VEX_W_TABLE(VEX_W_0F5E_P_1) }, }, /* VEX_LEN_0F5E_P_3 */ { { VEX_W_TABLE(VEX_W_0F5E_P_3) }, { VEX_W_TABLE(VEX_W_0F5E_P_3) }, }, /* VEX_LEN_0F5F_P_1 */ { { VEX_W_TABLE(VEX_W_0F5F_P_1) }, { VEX_W_TABLE(VEX_W_0F5F_P_1) }, }, /* VEX_LEN_0F5F_P_3 */ { { VEX_W_TABLE(VEX_W_0F5F_P_3) }, { VEX_W_TABLE(VEX_W_0F5F_P_3) }, }, /* VEX_LEN_0F6E_P_2 */ { { "vmovK", { XMScalar, Edq }, 0 }, { "vmovK", { XMScalar, Edq }, 0 }, }, /* VEX_LEN_0F7E_P_1 */ { { VEX_W_TABLE(VEX_W_0F7E_P_1) }, { VEX_W_TABLE(VEX_W_0F7E_P_1) }, }, /* VEX_LEN_0F7E_P_2 */ { { "vmovK", { Edq, XMScalar }, 0 }, { "vmovK", { Edq, XMScalar }, 0 }, }, /* VEX_LEN_0F90_P_0 */ { { VEX_W_TABLE(VEX_W_0F90_P_0_LEN_0) }, }, /* VEX_LEN_0F90_P_2 */ { { VEX_W_TABLE(VEX_W_0F90_P_2_LEN_0) }, }, /* VEX_LEN_0F91_P_0 */ { { VEX_W_TABLE(VEX_W_0F91_P_0_LEN_0) }, }, /* VEX_LEN_0F91_P_2 */ { { VEX_W_TABLE(VEX_W_0F91_P_2_LEN_0) }, }, /* VEX_LEN_0F92_P_0 */ { { VEX_W_TABLE(VEX_W_0F92_P_0_LEN_0) }, }, /* VEX_LEN_0F92_P_2 */ { { VEX_W_TABLE(VEX_W_0F92_P_2_LEN_0) }, }, /* VEX_LEN_0F92_P_3 */ { { VEX_W_TABLE(VEX_W_0F92_P_3_LEN_0) }, }, /* VEX_LEN_0F93_P_0 */ { { VEX_W_TABLE(VEX_W_0F93_P_0_LEN_0) }, }, /* VEX_LEN_0F93_P_2 */ { { VEX_W_TABLE(VEX_W_0F93_P_2_LEN_0) }, }, /* VEX_LEN_0F93_P_3 */ { { VEX_W_TABLE(VEX_W_0F93_P_3_LEN_0) }, }, /* VEX_LEN_0F98_P_0 */ { { VEX_W_TABLE(VEX_W_0F98_P_0_LEN_0) }, }, /* VEX_LEN_0F98_P_2 */ { { VEX_W_TABLE(VEX_W_0F98_P_2_LEN_0) }, }, /* VEX_LEN_0F99_P_0 */ { { VEX_W_TABLE(VEX_W_0F99_P_0_LEN_0) }, }, /* VEX_LEN_0F99_P_2 */ { { VEX_W_TABLE(VEX_W_0F99_P_2_LEN_0) }, }, /* VEX_LEN_0FAE_R_2_M_0 */ { { VEX_W_TABLE(VEX_W_0FAE_R_2_M_0) }, }, /* VEX_LEN_0FAE_R_3_M_0 */ { { VEX_W_TABLE(VEX_W_0FAE_R_3_M_0) }, }, /* VEX_LEN_0FC2_P_1 */ { { VEX_W_TABLE(VEX_W_0FC2_P_1) }, { VEX_W_TABLE(VEX_W_0FC2_P_1) }, }, /* VEX_LEN_0FC2_P_3 */ { { VEX_W_TABLE(VEX_W_0FC2_P_3) }, { VEX_W_TABLE(VEX_W_0FC2_P_3) }, }, /* VEX_LEN_0FC4_P_2 */ { { VEX_W_TABLE(VEX_W_0FC4_P_2) }, }, /* VEX_LEN_0FC5_P_2 */ { { VEX_W_TABLE(VEX_W_0FC5_P_2) }, }, /* VEX_LEN_0FD6_P_2 */ { { VEX_W_TABLE(VEX_W_0FD6_P_2) }, { VEX_W_TABLE(VEX_W_0FD6_P_2) }, }, /* VEX_LEN_0FF7_P_2 */ { { VEX_W_TABLE(VEX_W_0FF7_P_2) }, }, /* VEX_LEN_0F3816_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3816_P_2) }, }, /* VEX_LEN_0F3819_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3819_P_2) }, }, /* VEX_LEN_0F381A_P_2_M_0 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F381A_P_2_M_0) }, }, /* VEX_LEN_0F3836_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3836_P_2) }, }, /* VEX_LEN_0F3841_P_2 */ { { VEX_W_TABLE(VEX_W_0F3841_P_2) }, }, /* VEX_LEN_0F385A_P_2_M_0 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F385A_P_2_M_0) }, }, /* VEX_LEN_0F38DB_P_2 */ { { VEX_W_TABLE(VEX_W_0F38DB_P_2) }, }, /* VEX_LEN_0F38DC_P_2 */ { { VEX_W_TABLE(VEX_W_0F38DC_P_2) }, }, /* VEX_LEN_0F38DD_P_2 */ { { VEX_W_TABLE(VEX_W_0F38DD_P_2) }, }, /* VEX_LEN_0F38DE_P_2 */ { { VEX_W_TABLE(VEX_W_0F38DE_P_2) }, }, /* VEX_LEN_0F38DF_P_2 */ { { VEX_W_TABLE(VEX_W_0F38DF_P_2) }, }, /* VEX_LEN_0F38F2_P_0 */ { { "andnS", { Gdq, VexGdq, Edq }, 0 }, }, /* VEX_LEN_0F38F3_R_1_P_0 */ { { "blsrS", { VexGdq, Edq }, 0 }, }, /* VEX_LEN_0F38F3_R_2_P_0 */ { { "blsmskS", { VexGdq, Edq }, 0 }, }, /* VEX_LEN_0F38F3_R_3_P_0 */ { { "blsiS", { VexGdq, Edq }, 0 }, }, /* VEX_LEN_0F38F5_P_0 */ { { "bzhiS", { Gdq, Edq, VexGdq }, 0 }, }, /* VEX_LEN_0F38F5_P_1 */ { { "pextS", { Gdq, VexGdq, Edq }, 0 }, }, /* VEX_LEN_0F38F5_P_3 */ { { "pdepS", { Gdq, VexGdq, Edq }, 0 }, }, /* VEX_LEN_0F38F6_P_3 */ { { "mulxS", { Gdq, VexGdq, Edq }, 0 }, }, /* VEX_LEN_0F38F7_P_0 */ { { "bextrS", { Gdq, Edq, VexGdq }, 0 }, }, /* VEX_LEN_0F38F7_P_1 */ { { "sarxS", { Gdq, Edq, VexGdq }, 0 }, }, /* VEX_LEN_0F38F7_P_2 */ { { "shlxS", { Gdq, Edq, VexGdq }, 0 }, }, /* VEX_LEN_0F38F7_P_3 */ { { "shrxS", { Gdq, Edq, VexGdq }, 0 }, }, /* VEX_LEN_0F3A00_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A00_P_2) }, }, /* VEX_LEN_0F3A01_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A01_P_2) }, }, /* VEX_LEN_0F3A06_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A06_P_2) }, }, /* VEX_LEN_0F3A0A_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A0A_P_2) }, { VEX_W_TABLE(VEX_W_0F3A0A_P_2) }, }, /* VEX_LEN_0F3A0B_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A0B_P_2) }, { VEX_W_TABLE(VEX_W_0F3A0B_P_2) }, }, /* VEX_LEN_0F3A14_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A14_P_2) }, }, /* VEX_LEN_0F3A15_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A15_P_2) }, }, /* VEX_LEN_0F3A16_P_2 */ { { "vpextrK", { Edq, XM, Ib }, 0 }, }, /* VEX_LEN_0F3A17_P_2 */ { { "vextractps", { Edqd, XM, Ib }, 0 }, }, /* VEX_LEN_0F3A18_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A18_P_2) }, }, /* VEX_LEN_0F3A19_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A19_P_2) }, }, /* VEX_LEN_0F3A20_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A20_P_2) }, }, /* VEX_LEN_0F3A21_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A21_P_2) }, }, /* VEX_LEN_0F3A22_P_2 */ { { "vpinsrK", { XM, Vex128, Edq, Ib }, 0 }, }, /* VEX_LEN_0F3A30_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A30_P_2_LEN_0) }, }, /* VEX_LEN_0F3A31_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A31_P_2_LEN_0) }, }, /* VEX_LEN_0F3A32_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A32_P_2_LEN_0) }, }, /* VEX_LEN_0F3A33_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A33_P_2_LEN_0) }, }, /* VEX_LEN_0F3A38_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A38_P_2) }, }, /* VEX_LEN_0F3A39_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A39_P_2) }, }, /* VEX_LEN_0F3A41_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A41_P_2) }, }, /* VEX_LEN_0F3A44_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A44_P_2) }, }, /* VEX_LEN_0F3A46_P_2 */ { { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F3A46_P_2) }, }, /* VEX_LEN_0F3A60_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A60_P_2) }, }, /* VEX_LEN_0F3A61_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A61_P_2) }, }, /* VEX_LEN_0F3A62_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A62_P_2) }, }, /* VEX_LEN_0F3A63_P_2 */ { { VEX_W_TABLE(VEX_W_0F3A63_P_2) }, }, /* VEX_LEN_0F3A6A_P_2 */ { { "vfmaddss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 }, 0 }, }, /* VEX_LEN_0F3A6B_P_2 */ { { "vfmaddsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 }, 0 }, }, /* VEX_LEN_0F3A6E_P_2 */ { { "vfmsubss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 }, 0 }, }, /* VEX_LEN_0F3A6F_P_2 */ { { "vfmsubsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 }, 0 }, }, /* VEX_LEN_0F3A7A_P_2 */ { { "vfnmaddss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 }, 0 }, }, /* VEX_LEN_0F3A7B_P_2 */ { { "vfnmaddsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 }, 0 }, }, /* VEX_LEN_0F3A7E_P_2 */ { { "vfnmsubss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 }, 0 }, }, /* VEX_LEN_0F3A7F_P_2 */ { { "vfnmsubsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 }, 0 }, }, /* VEX_LEN_0F3ADF_P_2 */ { { VEX_W_TABLE(VEX_W_0F3ADF_P_2) }, }, /* VEX_LEN_0F3AF0_P_3 */ { { "rorxS", { Gdq, Edq, Ib }, 0 }, }, /* VEX_LEN_0FXOP_08_CC */ { { "vpcomb", { XM, Vex128, EXx, Ib }, 0 }, }, /* VEX_LEN_0FXOP_08_CD */ { { "vpcomw", { XM, Vex128, EXx, Ib }, 0 }, }, /* VEX_LEN_0FXOP_08_CE */ { { "vpcomd", { XM, Vex128, EXx, Ib }, 0 }, }, /* VEX_LEN_0FXOP_08_CF */ { { "vpcomq", { XM, Vex128, EXx, Ib }, 0 }, }, /* VEX_LEN_0FXOP_08_EC */ { { "vpcomub", { XM, Vex128, EXx, Ib }, 0 }, }, /* VEX_LEN_0FXOP_08_ED */ { { "vpcomuw", { XM, Vex128, EXx, Ib }, 0 }, }, /* VEX_LEN_0FXOP_08_EE */ { { "vpcomud", { XM, Vex128, EXx, Ib }, 0 }, }, /* VEX_LEN_0FXOP_08_EF */ { { "vpcomuq", { XM, Vex128, EXx, Ib }, 0 }, }, /* VEX_LEN_0FXOP_09_80 */ { { "vfrczps", { XM, EXxmm }, 0 }, { "vfrczps", { XM, EXymmq }, 0 }, }, /* VEX_LEN_0FXOP_09_81 */ { { "vfrczpd", { XM, EXxmm }, 0 }, { "vfrczpd", { XM, EXymmq }, 0 }, }, }; static const struct dis386 vex_w_table[][2] = { { /* VEX_W_0F10_P_0 */ { "vmovups", { XM, EXx }, 0 }, }, { /* VEX_W_0F10_P_1 */ { "vmovss", { XMVexScalar, VexScalar, EXdScalar }, 0 }, }, { /* VEX_W_0F10_P_2 */ { "vmovupd", { XM, EXx }, 0 }, }, { /* VEX_W_0F10_P_3 */ { "vmovsd", { XMVexScalar, VexScalar, EXqScalar }, 0 }, }, { /* VEX_W_0F11_P_0 */ { "vmovups", { EXxS, XM }, 0 }, }, { /* VEX_W_0F11_P_1 */ { "vmovss", { EXdVexScalarS, VexScalar, XMScalar }, 0 }, }, { /* VEX_W_0F11_P_2 */ { "vmovupd", { EXxS, XM }, 0 }, }, { /* VEX_W_0F11_P_3 */ { "vmovsd", { EXqVexScalarS, VexScalar, XMScalar }, 0 }, }, { /* VEX_W_0F12_P_0_M_0 */ { "vmovlps", { XM, Vex128, EXq }, 0 }, }, { /* VEX_W_0F12_P_0_M_1 */ { "vmovhlps", { XM, Vex128, EXq }, 0 }, }, { /* VEX_W_0F12_P_1 */ { "vmovsldup", { XM, EXx }, 0 }, }, { /* VEX_W_0F12_P_2 */ { "vmovlpd", { XM, Vex128, EXq }, 0 }, }, { /* VEX_W_0F12_P_3 */ { "vmovddup", { XM, EXymmq }, 0 }, }, { /* VEX_W_0F13_M_0 */ { "vmovlpX", { EXq, XM }, 0 }, }, { /* VEX_W_0F14 */ { "vunpcklpX", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F15 */ { "vunpckhpX", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F16_P_0_M_0 */ { "vmovhps", { XM, Vex128, EXq }, 0 }, }, { /* VEX_W_0F16_P_0_M_1 */ { "vmovlhps", { XM, Vex128, EXq }, 0 }, }, { /* VEX_W_0F16_P_1 */ { "vmovshdup", { XM, EXx }, 0 }, }, { /* VEX_W_0F16_P_2 */ { "vmovhpd", { XM, Vex128, EXq }, 0 }, }, { /* VEX_W_0F17_M_0 */ { "vmovhpX", { EXq, XM }, 0 }, }, { /* VEX_W_0F28 */ { "vmovapX", { XM, EXx }, 0 }, }, { /* VEX_W_0F29 */ { "vmovapX", { EXxS, XM }, 0 }, }, { /* VEX_W_0F2B_M_0 */ { "vmovntpX", { Mx, XM }, 0 }, }, { /* VEX_W_0F2E_P_0 */ { "vucomiss", { XMScalar, EXdScalar }, 0 }, }, { /* VEX_W_0F2E_P_2 */ { "vucomisd", { XMScalar, EXqScalar }, 0 }, }, { /* VEX_W_0F2F_P_0 */ { "vcomiss", { XMScalar, EXdScalar }, 0 }, }, { /* VEX_W_0F2F_P_2 */ { "vcomisd", { XMScalar, EXqScalar }, 0 }, }, { /* VEX_W_0F41_P_0_LEN_1 */ { MOD_TABLE(MOD_VEX_W_0_0F41_P_0_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F41_P_0_LEN_1) }, }, { /* VEX_W_0F41_P_2_LEN_1 */ { MOD_TABLE(MOD_VEX_W_0_0F41_P_2_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F41_P_2_LEN_1) } }, { /* VEX_W_0F42_P_0_LEN_1 */ { MOD_TABLE(MOD_VEX_W_0_0F42_P_0_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F42_P_0_LEN_1) }, }, { /* VEX_W_0F42_P_2_LEN_1 */ { MOD_TABLE(MOD_VEX_W_0_0F42_P_2_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F42_P_2_LEN_1) }, }, { /* VEX_W_0F44_P_0_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F44_P_0_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F44_P_0_LEN_1) }, }, { /* VEX_W_0F44_P_2_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F44_P_2_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F44_P_2_LEN_1) }, }, { /* VEX_W_0F45_P_0_LEN_1 */ { MOD_TABLE(MOD_VEX_W_0_0F45_P_0_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F45_P_0_LEN_1) }, }, { /* VEX_W_0F45_P_2_LEN_1 */ { MOD_TABLE(MOD_VEX_W_0_0F45_P_2_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F45_P_2_LEN_1) }, }, { /* VEX_W_0F46_P_0_LEN_1 */ { MOD_TABLE(MOD_VEX_W_0_0F46_P_0_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F46_P_0_LEN_1) }, }, { /* VEX_W_0F46_P_2_LEN_1 */ { MOD_TABLE(MOD_VEX_W_0_0F46_P_2_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F46_P_2_LEN_1) }, }, { /* VEX_W_0F47_P_0_LEN_1 */ { MOD_TABLE(MOD_VEX_W_0_0F47_P_0_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F47_P_0_LEN_1) }, }, { /* VEX_W_0F47_P_2_LEN_1 */ { MOD_TABLE(MOD_VEX_W_0_0F47_P_2_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F47_P_2_LEN_1) }, }, { /* VEX_W_0F4A_P_0_LEN_1 */ { MOD_TABLE(MOD_VEX_W_0_0F4A_P_0_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F4A_P_0_LEN_1) }, }, { /* VEX_W_0F4A_P_2_LEN_1 */ { MOD_TABLE(MOD_VEX_W_0_0F4A_P_2_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F4A_P_2_LEN_1) }, }, { /* VEX_W_0F4B_P_0_LEN_1 */ { MOD_TABLE(MOD_VEX_W_0_0F4B_P_0_LEN_1) }, { MOD_TABLE(MOD_VEX_W_1_0F4B_P_0_LEN_1) }, }, { /* VEX_W_0F4B_P_2_LEN_1 */ { MOD_TABLE(MOD_VEX_W_0_0F4B_P_2_LEN_1) }, }, { /* VEX_W_0F50_M_0 */ { "vmovmskpX", { Gdq, XS }, 0 }, }, { /* VEX_W_0F51_P_0 */ { "vsqrtps", { XM, EXx }, 0 }, }, { /* VEX_W_0F51_P_1 */ { "vsqrtss", { XMScalar, VexScalar, EXdScalar }, 0 }, }, { /* VEX_W_0F51_P_2 */ { "vsqrtpd", { XM, EXx }, 0 }, }, { /* VEX_W_0F51_P_3 */ { "vsqrtsd", { XMScalar, VexScalar, EXqScalar }, 0 }, }, { /* VEX_W_0F52_P_0 */ { "vrsqrtps", { XM, EXx }, 0 }, }, { /* VEX_W_0F52_P_1 */ { "vrsqrtss", { XMScalar, VexScalar, EXdScalar }, 0 }, }, { /* VEX_W_0F53_P_0 */ { "vrcpps", { XM, EXx }, 0 }, }, { /* VEX_W_0F53_P_1 */ { "vrcpss", { XMScalar, VexScalar, EXdScalar }, 0 }, }, { /* VEX_W_0F58_P_0 */ { "vaddps", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F58_P_1 */ { "vaddss", { XMScalar, VexScalar, EXdScalar }, 0 }, }, { /* VEX_W_0F58_P_2 */ { "vaddpd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F58_P_3 */ { "vaddsd", { XMScalar, VexScalar, EXqScalar }, 0 }, }, { /* VEX_W_0F59_P_0 */ { "vmulps", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F59_P_1 */ { "vmulss", { XMScalar, VexScalar, EXdScalar }, 0 }, }, { /* VEX_W_0F59_P_2 */ { "vmulpd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F59_P_3 */ { "vmulsd", { XMScalar, VexScalar, EXqScalar }, 0 }, }, { /* VEX_W_0F5A_P_0 */ { "vcvtps2pd", { XM, EXxmmq }, 0 }, }, { /* VEX_W_0F5A_P_1 */ { "vcvtss2sd", { XMScalar, VexScalar, EXdScalar }, 0 }, }, { /* VEX_W_0F5A_P_3 */ { "vcvtsd2ss", { XMScalar, VexScalar, EXqScalar }, 0 }, }, { /* VEX_W_0F5B_P_0 */ { "vcvtdq2ps", { XM, EXx }, 0 }, }, { /* VEX_W_0F5B_P_1 */ { "vcvttps2dq", { XM, EXx }, 0 }, }, { /* VEX_W_0F5B_P_2 */ { "vcvtps2dq", { XM, EXx }, 0 }, }, { /* VEX_W_0F5C_P_0 */ { "vsubps", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F5C_P_1 */ { "vsubss", { XMScalar, VexScalar, EXdScalar }, 0 }, }, { /* VEX_W_0F5C_P_2 */ { "vsubpd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F5C_P_3 */ { "vsubsd", { XMScalar, VexScalar, EXqScalar }, 0 }, }, { /* VEX_W_0F5D_P_0 */ { "vminps", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F5D_P_1 */ { "vminss", { XMScalar, VexScalar, EXdScalar }, 0 }, }, { /* VEX_W_0F5D_P_2 */ { "vminpd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F5D_P_3 */ { "vminsd", { XMScalar, VexScalar, EXqScalar }, 0 }, }, { /* VEX_W_0F5E_P_0 */ { "vdivps", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F5E_P_1 */ { "vdivss", { XMScalar, VexScalar, EXdScalar }, 0 }, }, { /* VEX_W_0F5E_P_2 */ { "vdivpd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F5E_P_3 */ { "vdivsd", { XMScalar, VexScalar, EXqScalar }, 0 }, }, { /* VEX_W_0F5F_P_0 */ { "vmaxps", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F5F_P_1 */ { "vmaxss", { XMScalar, VexScalar, EXdScalar }, 0 }, }, { /* VEX_W_0F5F_P_2 */ { "vmaxpd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F5F_P_3 */ { "vmaxsd", { XMScalar, VexScalar, EXqScalar }, 0 }, }, { /* VEX_W_0F60_P_2 */ { "vpunpcklbw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F61_P_2 */ { "vpunpcklwd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F62_P_2 */ { "vpunpckldq", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F63_P_2 */ { "vpacksswb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F64_P_2 */ { "vpcmpgtb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F65_P_2 */ { "vpcmpgtw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F66_P_2 */ { "vpcmpgtd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F67_P_2 */ { "vpackuswb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F68_P_2 */ { "vpunpckhbw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F69_P_2 */ { "vpunpckhwd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F6A_P_2 */ { "vpunpckhdq", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F6B_P_2 */ { "vpackssdw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F6C_P_2 */ { "vpunpcklqdq", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F6D_P_2 */ { "vpunpckhqdq", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F6F_P_1 */ { "vmovdqu", { XM, EXx }, 0 }, }, { /* VEX_W_0F6F_P_2 */ { "vmovdqa", { XM, EXx }, 0 }, }, { /* VEX_W_0F70_P_1 */ { "vpshufhw", { XM, EXx, Ib }, 0 }, }, { /* VEX_W_0F70_P_2 */ { "vpshufd", { XM, EXx, Ib }, 0 }, }, { /* VEX_W_0F70_P_3 */ { "vpshuflw", { XM, EXx, Ib }, 0 }, }, { /* VEX_W_0F71_R_2_P_2 */ { "vpsrlw", { Vex, XS, Ib }, 0 }, }, { /* VEX_W_0F71_R_4_P_2 */ { "vpsraw", { Vex, XS, Ib }, 0 }, }, { /* VEX_W_0F71_R_6_P_2 */ { "vpsllw", { Vex, XS, Ib }, 0 }, }, { /* VEX_W_0F72_R_2_P_2 */ { "vpsrld", { Vex, XS, Ib }, 0 }, }, { /* VEX_W_0F72_R_4_P_2 */ { "vpsrad", { Vex, XS, Ib }, 0 }, }, { /* VEX_W_0F72_R_6_P_2 */ { "vpslld", { Vex, XS, Ib }, 0 }, }, { /* VEX_W_0F73_R_2_P_2 */ { "vpsrlq", { Vex, XS, Ib }, 0 }, }, { /* VEX_W_0F73_R_3_P_2 */ { "vpsrldq", { Vex, XS, Ib }, 0 }, }, { /* VEX_W_0F73_R_6_P_2 */ { "vpsllq", { Vex, XS, Ib }, 0 }, }, { /* VEX_W_0F73_R_7_P_2 */ { "vpslldq", { Vex, XS, Ib }, 0 }, }, { /* VEX_W_0F74_P_2 */ { "vpcmpeqb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F75_P_2 */ { "vpcmpeqw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F76_P_2 */ { "vpcmpeqd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F77_P_0 */ { "", { VZERO }, 0 }, }, { /* VEX_W_0F7C_P_2 */ { "vhaddpd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F7C_P_3 */ { "vhaddps", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F7D_P_2 */ { "vhsubpd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F7D_P_3 */ { "vhsubps", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F7E_P_1 */ { "vmovq", { XMScalar, EXqScalar }, 0 }, }, { /* VEX_W_0F7F_P_1 */ { "vmovdqu", { EXxS, XM }, 0 }, }, { /* VEX_W_0F7F_P_2 */ { "vmovdqa", { EXxS, XM }, 0 }, }, { /* VEX_W_0F90_P_0_LEN_0 */ { "kmovw", { MaskG, MaskE }, 0 }, { "kmovq", { MaskG, MaskE }, 0 }, }, { /* VEX_W_0F90_P_2_LEN_0 */ { "kmovb", { MaskG, MaskBDE }, 0 }, { "kmovd", { MaskG, MaskBDE }, 0 }, }, { /* VEX_W_0F91_P_0_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F91_P_0_LEN_0) }, { MOD_TABLE(MOD_VEX_W_1_0F91_P_0_LEN_0) }, }, { /* VEX_W_0F91_P_2_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F91_P_2_LEN_0) }, { MOD_TABLE(MOD_VEX_W_1_0F91_P_2_LEN_0) }, }, { /* VEX_W_0F92_P_0_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F92_P_0_LEN_0) }, }, { /* VEX_W_0F92_P_2_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F92_P_2_LEN_0) }, }, { /* VEX_W_0F92_P_3_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F92_P_3_LEN_0) }, { MOD_TABLE(MOD_VEX_W_1_0F92_P_3_LEN_0) }, }, { /* VEX_W_0F93_P_0_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F93_P_0_LEN_0) }, }, { /* VEX_W_0F93_P_2_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F93_P_2_LEN_0) }, }, { /* VEX_W_0F93_P_3_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F93_P_3_LEN_0) }, { MOD_TABLE(MOD_VEX_W_1_0F93_P_3_LEN_0) }, }, { /* VEX_W_0F98_P_0_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F98_P_0_LEN_0) }, { MOD_TABLE(MOD_VEX_W_1_0F98_P_0_LEN_0) }, }, { /* VEX_W_0F98_P_2_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F98_P_2_LEN_0) }, { MOD_TABLE(MOD_VEX_W_1_0F98_P_2_LEN_0) }, }, { /* VEX_W_0F99_P_0_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F99_P_0_LEN_0) }, { MOD_TABLE(MOD_VEX_W_1_0F99_P_0_LEN_0) }, }, { /* VEX_W_0F99_P_2_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F99_P_2_LEN_0) }, { MOD_TABLE(MOD_VEX_W_1_0F99_P_2_LEN_0) }, }, { /* VEX_W_0FAE_R_2_M_0 */ { "vldmxcsr", { Md }, 0 }, }, { /* VEX_W_0FAE_R_3_M_0 */ { "vstmxcsr", { Md }, 0 }, }, { /* VEX_W_0FC2_P_0 */ { "vcmpps", { XM, Vex, EXx, VCMP }, 0 }, }, { /* VEX_W_0FC2_P_1 */ { "vcmpss", { XMScalar, VexScalar, EXdScalar, VCMP }, 0 }, }, { /* VEX_W_0FC2_P_2 */ { "vcmppd", { XM, Vex, EXx, VCMP }, 0 }, }, { /* VEX_W_0FC2_P_3 */ { "vcmpsd", { XMScalar, VexScalar, EXqScalar, VCMP }, 0 }, }, { /* VEX_W_0FC4_P_2 */ { "vpinsrw", { XM, Vex128, Edqw, Ib }, 0 }, }, { /* VEX_W_0FC5_P_2 */ { "vpextrw", { Gdq, XS, Ib }, 0 }, }, { /* VEX_W_0FD0_P_2 */ { "vaddsubpd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FD0_P_3 */ { "vaddsubps", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FD1_P_2 */ { "vpsrlw", { XM, Vex, EXxmm }, 0 }, }, { /* VEX_W_0FD2_P_2 */ { "vpsrld", { XM, Vex, EXxmm }, 0 }, }, { /* VEX_W_0FD3_P_2 */ { "vpsrlq", { XM, Vex, EXxmm }, 0 }, }, { /* VEX_W_0FD4_P_2 */ { "vpaddq", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FD5_P_2 */ { "vpmullw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FD6_P_2 */ { "vmovq", { EXqScalarS, XMScalar }, 0 }, }, { /* VEX_W_0FD7_P_2_M_1 */ { "vpmovmskb", { Gdq, XS }, 0 }, }, { /* VEX_W_0FD8_P_2 */ { "vpsubusb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FD9_P_2 */ { "vpsubusw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FDA_P_2 */ { "vpminub", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FDB_P_2 */ { "vpand", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FDC_P_2 */ { "vpaddusb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FDD_P_2 */ { "vpaddusw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FDE_P_2 */ { "vpmaxub", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FDF_P_2 */ { "vpandn", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FE0_P_2 */ { "vpavgb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FE1_P_2 */ { "vpsraw", { XM, Vex, EXxmm }, 0 }, }, { /* VEX_W_0FE2_P_2 */ { "vpsrad", { XM, Vex, EXxmm }, 0 }, }, { /* VEX_W_0FE3_P_2 */ { "vpavgw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FE4_P_2 */ { "vpmulhuw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FE5_P_2 */ { "vpmulhw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FE6_P_1 */ { "vcvtdq2pd", { XM, EXxmmq }, 0 }, }, { /* VEX_W_0FE6_P_2 */ { "vcvttpd2dq%XY", { XMM, EXx }, 0 }, }, { /* VEX_W_0FE6_P_3 */ { "vcvtpd2dq%XY", { XMM, EXx }, 0 }, }, { /* VEX_W_0FE7_P_2_M_0 */ { "vmovntdq", { Mx, XM }, 0 }, }, { /* VEX_W_0FE8_P_2 */ { "vpsubsb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FE9_P_2 */ { "vpsubsw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FEA_P_2 */ { "vpminsw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FEB_P_2 */ { "vpor", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FEC_P_2 */ { "vpaddsb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FED_P_2 */ { "vpaddsw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FEE_P_2 */ { "vpmaxsw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FEF_P_2 */ { "vpxor", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FF0_P_3_M_0 */ { "vlddqu", { XM, M }, 0 }, }, { /* VEX_W_0FF1_P_2 */ { "vpsllw", { XM, Vex, EXxmm }, 0 }, }, { /* VEX_W_0FF2_P_2 */ { "vpslld", { XM, Vex, EXxmm }, 0 }, }, { /* VEX_W_0FF3_P_2 */ { "vpsllq", { XM, Vex, EXxmm }, 0 }, }, { /* VEX_W_0FF4_P_2 */ { "vpmuludq", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FF5_P_2 */ { "vpmaddwd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FF6_P_2 */ { "vpsadbw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FF7_P_2 */ { "vmaskmovdqu", { XM, XS }, 0 }, }, { /* VEX_W_0FF8_P_2 */ { "vpsubb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FF9_P_2 */ { "vpsubw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FFA_P_2 */ { "vpsubd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FFB_P_2 */ { "vpsubq", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FFC_P_2 */ { "vpaddb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FFD_P_2 */ { "vpaddw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0FFE_P_2 */ { "vpaddd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3800_P_2 */ { "vpshufb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3801_P_2 */ { "vphaddw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3802_P_2 */ { "vphaddd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3803_P_2 */ { "vphaddsw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3804_P_2 */ { "vpmaddubsw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3805_P_2 */ { "vphsubw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3806_P_2 */ { "vphsubd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3807_P_2 */ { "vphsubsw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3808_P_2 */ { "vpsignb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3809_P_2 */ { "vpsignw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F380A_P_2 */ { "vpsignd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F380B_P_2 */ { "vpmulhrsw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F380C_P_2 */ { "vpermilps", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F380D_P_2 */ { "vpermilpd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F380E_P_2 */ { "vtestps", { XM, EXx }, 0 }, }, { /* VEX_W_0F380F_P_2 */ { "vtestpd", { XM, EXx }, 0 }, }, { /* VEX_W_0F3816_P_2 */ { "vpermps", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3817_P_2 */ { "vptest", { XM, EXx }, 0 }, }, { /* VEX_W_0F3818_P_2 */ { "vbroadcastss", { XM, EXxmm_md }, 0 }, }, { /* VEX_W_0F3819_P_2 */ { "vbroadcastsd", { XM, EXxmm_mq }, 0 }, }, { /* VEX_W_0F381A_P_2_M_0 */ { "vbroadcastf128", { XM, Mxmm }, 0 }, }, { /* VEX_W_0F381C_P_2 */ { "vpabsb", { XM, EXx }, 0 }, }, { /* VEX_W_0F381D_P_2 */ { "vpabsw", { XM, EXx }, 0 }, }, { /* VEX_W_0F381E_P_2 */ { "vpabsd", { XM, EXx }, 0 }, }, { /* VEX_W_0F3820_P_2 */ { "vpmovsxbw", { XM, EXxmmq }, 0 }, }, { /* VEX_W_0F3821_P_2 */ { "vpmovsxbd", { XM, EXxmmqd }, 0 }, }, { /* VEX_W_0F3822_P_2 */ { "vpmovsxbq", { XM, EXxmmdw }, 0 }, }, { /* VEX_W_0F3823_P_2 */ { "vpmovsxwd", { XM, EXxmmq }, 0 }, }, { /* VEX_W_0F3824_P_2 */ { "vpmovsxwq", { XM, EXxmmqd }, 0 }, }, { /* VEX_W_0F3825_P_2 */ { "vpmovsxdq", { XM, EXxmmq }, 0 }, }, { /* VEX_W_0F3828_P_2 */ { "vpmuldq", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3829_P_2 */ { "vpcmpeqq", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F382A_P_2_M_0 */ { "vmovntdqa", { XM, Mx }, 0 }, }, { /* VEX_W_0F382B_P_2 */ { "vpackusdw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F382C_P_2_M_0 */ { "vmaskmovps", { XM, Vex, Mx }, 0 }, }, { /* VEX_W_0F382D_P_2_M_0 */ { "vmaskmovpd", { XM, Vex, Mx }, 0 }, }, { /* VEX_W_0F382E_P_2_M_0 */ { "vmaskmovps", { Mx, Vex, XM }, 0 }, }, { /* VEX_W_0F382F_P_2_M_0 */ { "vmaskmovpd", { Mx, Vex, XM }, 0 }, }, { /* VEX_W_0F3830_P_2 */ { "vpmovzxbw", { XM, EXxmmq }, 0 }, }, { /* VEX_W_0F3831_P_2 */ { "vpmovzxbd", { XM, EXxmmqd }, 0 }, }, { /* VEX_W_0F3832_P_2 */ { "vpmovzxbq", { XM, EXxmmdw }, 0 }, }, { /* VEX_W_0F3833_P_2 */ { "vpmovzxwd", { XM, EXxmmq }, 0 }, }, { /* VEX_W_0F3834_P_2 */ { "vpmovzxwq", { XM, EXxmmqd }, 0 }, }, { /* VEX_W_0F3835_P_2 */ { "vpmovzxdq", { XM, EXxmmq }, 0 }, }, { /* VEX_W_0F3836_P_2 */ { "vpermd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3837_P_2 */ { "vpcmpgtq", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3838_P_2 */ { "vpminsb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3839_P_2 */ { "vpminsd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F383A_P_2 */ { "vpminuw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F383B_P_2 */ { "vpminud", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F383C_P_2 */ { "vpmaxsb", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F383D_P_2 */ { "vpmaxsd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F383E_P_2 */ { "vpmaxuw", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F383F_P_2 */ { "vpmaxud", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3840_P_2 */ { "vpmulld", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3841_P_2 */ { "vphminposuw", { XM, EXx }, 0 }, }, { /* VEX_W_0F3846_P_2 */ { "vpsravd", { XM, Vex, EXx }, 0 }, }, { /* VEX_W_0F3858_P_2 */ { "vpbroadcastd", { XM, EXxmm_md }, 0 }, }, { /* VEX_W_0F3859_P_2 */ { "vpbroadcastq", { XM, EXxmm_mq }, 0 }, }, { /* VEX_W_0F385A_P_2_M_0 */ { "vbroadcasti128", { XM, Mxmm }, 0 }, }, { /* VEX_W_0F3878_P_2 */ { "vpbroadcastb", { XM, EXxmm_mb }, 0 }, }, { /* VEX_W_0F3879_P_2 */ { "vpbroadcastw", { XM, EXxmm_mw }, 0 }, }, { /* VEX_W_0F38DB_P_2 */ { "vaesimc", { XM, EXx }, 0 }, }, { /* VEX_W_0F38DC_P_2 */ { "vaesenc", { XM, Vex128, EXx }, 0 }, }, { /* VEX_W_0F38DD_P_2 */ { "vaesenclast", { XM, Vex128, EXx }, 0 }, }, { /* VEX_W_0F38DE_P_2 */ { "vaesdec", { XM, Vex128, EXx }, 0 }, }, { /* VEX_W_0F38DF_P_2 */ { "vaesdeclast", { XM, Vex128, EXx }, 0 }, }, { /* VEX_W_0F3A00_P_2 */ { Bad_Opcode }, { "vpermq", { XM, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A01_P_2 */ { Bad_Opcode }, { "vpermpd", { XM, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A02_P_2 */ { "vpblendd", { XM, Vex, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A04_P_2 */ { "vpermilps", { XM, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A05_P_2 */ { "vpermilpd", { XM, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A06_P_2 */ { "vperm2f128", { XM, Vex256, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A08_P_2 */ { "vroundps", { XM, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A09_P_2 */ { "vroundpd", { XM, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A0A_P_2 */ { "vroundss", { XMScalar, VexScalar, EXdScalar, Ib }, 0 }, }, { /* VEX_W_0F3A0B_P_2 */ { "vroundsd", { XMScalar, VexScalar, EXqScalar, Ib }, 0 }, }, { /* VEX_W_0F3A0C_P_2 */ { "vblendps", { XM, Vex, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A0D_P_2 */ { "vblendpd", { XM, Vex, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A0E_P_2 */ { "vpblendw", { XM, Vex, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A0F_P_2 */ { "vpalignr", { XM, Vex, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A14_P_2 */ { "vpextrb", { Edqb, XM, Ib }, 0 }, }, { /* VEX_W_0F3A15_P_2 */ { "vpextrw", { Edqw, XM, Ib }, 0 }, }, { /* VEX_W_0F3A18_P_2 */ { "vinsertf128", { XM, Vex256, EXxmm, Ib }, 0 }, }, { /* VEX_W_0F3A19_P_2 */ { "vextractf128", { EXxmm, XM, Ib }, 0 }, }, { /* VEX_W_0F3A20_P_2 */ { "vpinsrb", { XM, Vex128, Edqb, Ib }, 0 }, }, { /* VEX_W_0F3A21_P_2 */ { "vinsertps", { XM, Vex128, EXd, Ib }, 0 }, }, { /* VEX_W_0F3A30_P_2_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F3A30_P_2_LEN_0) }, { MOD_TABLE(MOD_VEX_W_1_0F3A30_P_2_LEN_0) }, }, { /* VEX_W_0F3A31_P_2_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F3A31_P_2_LEN_0) }, { MOD_TABLE(MOD_VEX_W_1_0F3A31_P_2_LEN_0) }, }, { /* VEX_W_0F3A32_P_2_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F3A32_P_2_LEN_0) }, { MOD_TABLE(MOD_VEX_W_1_0F3A32_P_2_LEN_0) }, }, { /* VEX_W_0F3A33_P_2_LEN_0 */ { MOD_TABLE(MOD_VEX_W_0_0F3A33_P_2_LEN_0) }, { MOD_TABLE(MOD_VEX_W_1_0F3A33_P_2_LEN_0) }, }, { /* VEX_W_0F3A38_P_2 */ { "vinserti128", { XM, Vex256, EXxmm, Ib }, 0 }, }, { /* VEX_W_0F3A39_P_2 */ { "vextracti128", { EXxmm, XM, Ib }, 0 }, }, { /* VEX_W_0F3A40_P_2 */ { "vdpps", { XM, Vex, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A41_P_2 */ { "vdppd", { XM, Vex128, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A42_P_2 */ { "vmpsadbw", { XM, Vex, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A44_P_2 */ { "vpclmulqdq", { XM, Vex128, EXx, PCLMUL }, 0 }, }, { /* VEX_W_0F3A46_P_2 */ { "vperm2i128", { XM, Vex256, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A48_P_2 */ { "vpermil2ps", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW }, 0 }, { "vpermil2ps", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW }, 0 }, }, { /* VEX_W_0F3A49_P_2 */ { "vpermil2pd", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW }, 0 }, { "vpermil2pd", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW }, 0 }, }, { /* VEX_W_0F3A4A_P_2 */ { "vblendvps", { XM, Vex, EXx, XMVexI4 }, 0 }, }, { /* VEX_W_0F3A4B_P_2 */ { "vblendvpd", { XM, Vex, EXx, XMVexI4 }, 0 }, }, { /* VEX_W_0F3A4C_P_2 */ { "vpblendvb", { XM, Vex, EXx, XMVexI4 }, 0 }, }, { /* VEX_W_0F3A60_P_2 */ { "vpcmpestrm", { XM, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A61_P_2 */ { "vpcmpestri", { XM, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A62_P_2 */ { "vpcmpistrm", { XM, EXx, Ib }, 0 }, }, { /* VEX_W_0F3A63_P_2 */ { "vpcmpistri", { XM, EXx, Ib }, 0 }, }, { /* VEX_W_0F3ADF_P_2 */ { "vaeskeygenassist", { XM, EXx, Ib }, 0 }, }, #define NEED_VEX_W_TABLE #include "i386-dis-evex.h" #undef NEED_VEX_W_TABLE }; static const struct dis386 mod_table[][2] = { { /* MOD_8D */ { "leaS", { Gv, M }, 0 }, }, { /* MOD_C6_REG_7 */ { Bad_Opcode }, { RM_TABLE(RM_C6_REG_7) }, }, { /* MOD_C7_REG_7 */ { Bad_Opcode }, { RM_TABLE(RM_C7_REG_7) }, }, { /* MOD_FF_REG_3 */ { "Jcall^", { indirEp }, 0 }, }, { /* MOD_FF_REG_5 */ { "Jjmp^", { indirEp }, 0 }, }, { /* MOD_0F01_REG_0 */ { X86_64_TABLE(X86_64_0F01_REG_0) }, { RM_TABLE(RM_0F01_REG_0) }, }, { /* MOD_0F01_REG_1 */ { X86_64_TABLE(X86_64_0F01_REG_1) }, { RM_TABLE(RM_0F01_REG_1) }, }, { /* MOD_0F01_REG_2 */ { X86_64_TABLE(X86_64_0F01_REG_2) }, { RM_TABLE(RM_0F01_REG_2) }, }, { /* MOD_0F01_REG_3 */ { X86_64_TABLE(X86_64_0F01_REG_3) }, { RM_TABLE(RM_0F01_REG_3) }, }, { /* MOD_0F01_REG_5 */ { Bad_Opcode }, { RM_TABLE(RM_0F01_REG_5) }, }, { /* MOD_0F01_REG_7 */ { "invlpg", { Mb }, 0 }, { RM_TABLE(RM_0F01_REG_7) }, }, { /* MOD_0F12_PREFIX_0 */ { "movlps", { XM, EXq }, PREFIX_OPCODE }, { "movhlps", { XM, EXq }, PREFIX_OPCODE }, }, { /* MOD_0F13 */ { "movlpX", { EXq, XM }, PREFIX_OPCODE }, }, { /* MOD_0F16_PREFIX_0 */ { "movhps", { XM, EXq }, 0 }, { "movlhps", { XM, EXq }, 0 }, }, { /* MOD_0F17 */ { "movhpX", { EXq, XM }, PREFIX_OPCODE }, }, { /* MOD_0F18_REG_0 */ { "prefetchnta", { Mb }, 0 }, }, { /* MOD_0F18_REG_1 */ { "prefetcht0", { Mb }, 0 }, }, { /* MOD_0F18_REG_2 */ { "prefetcht1", { Mb }, 0 }, }, { /* MOD_0F18_REG_3 */ { "prefetcht2", { Mb }, 0 }, }, { /* MOD_0F18_REG_4 */ { "nop/reserved", { Mb }, 0 }, }, { /* MOD_0F18_REG_5 */ { "nop/reserved", { Mb }, 0 }, }, { /* MOD_0F18_REG_6 */ { "nop/reserved", { Mb }, 0 }, }, { /* MOD_0F18_REG_7 */ { "nop/reserved", { Mb }, 0 }, }, { /* MOD_0F1A_PREFIX_0 */ { "bndldx", { Gbnd, Ev_bnd }, 0 }, { "nopQ", { Ev }, 0 }, }, { /* MOD_0F1B_PREFIX_0 */ { "bndstx", { Ev_bnd, Gbnd }, 0 }, { "nopQ", { Ev }, 0 }, }, { /* MOD_0F1B_PREFIX_1 */ { "bndmk", { Gbnd, Ev_bnd }, 0 }, { "nopQ", { Ev }, 0 }, }, { /* MOD_0F24 */ { Bad_Opcode }, { "movL", { Rd, Td }, 0 }, }, { /* MOD_0F26 */ { Bad_Opcode }, { "movL", { Td, Rd }, 0 }, }, { /* MOD_0F2B_PREFIX_0 */ { "movntps", { Mx, XM }, PREFIX_OPCODE }, }, { /* MOD_0F2B_PREFIX_1 */ { "movntss", { Md, XM }, PREFIX_OPCODE }, }, { /* MOD_0F2B_PREFIX_2 */ { "movntpd", { Mx, XM }, PREFIX_OPCODE }, }, { /* MOD_0F2B_PREFIX_3 */ { "movntsd", { Mq, XM }, PREFIX_OPCODE }, }, { /* MOD_0F51 */ { Bad_Opcode }, { "movmskpX", { Gdq, XS }, PREFIX_OPCODE }, }, { /* MOD_0F71_REG_2 */ { Bad_Opcode }, { "psrlw", { MS, Ib }, 0 }, }, { /* MOD_0F71_REG_4 */ { Bad_Opcode }, { "psraw", { MS, Ib }, 0 }, }, { /* MOD_0F71_REG_6 */ { Bad_Opcode }, { "psllw", { MS, Ib }, 0 }, }, { /* MOD_0F72_REG_2 */ { Bad_Opcode }, { "psrld", { MS, Ib }, 0 }, }, { /* MOD_0F72_REG_4 */ { Bad_Opcode }, { "psrad", { MS, Ib }, 0 }, }, { /* MOD_0F72_REG_6 */ { Bad_Opcode }, { "pslld", { MS, Ib }, 0 }, }, { /* MOD_0F73_REG_2 */ { Bad_Opcode }, { "psrlq", { MS, Ib }, 0 }, }, { /* MOD_0F73_REG_3 */ { Bad_Opcode }, { PREFIX_TABLE(PREFIX_0F73_REG_3) }, }, { /* MOD_0F73_REG_6 */ { Bad_Opcode }, { "psllq", { MS, Ib }, 0 }, }, { /* MOD_0F73_REG_7 */ { Bad_Opcode }, { PREFIX_TABLE(PREFIX_0F73_REG_7) }, }, { /* MOD_0FAE_REG_0 */ { "fxsave", { FXSAVE }, 0 }, { PREFIX_TABLE(PREFIX_0FAE_REG_0) }, }, { /* MOD_0FAE_REG_1 */ { "fxrstor", { FXSAVE }, 0 }, { PREFIX_TABLE(PREFIX_0FAE_REG_1) }, }, { /* MOD_0FAE_REG_2 */ { "ldmxcsr", { Md }, 0 }, { PREFIX_TABLE(PREFIX_0FAE_REG_2) }, }, { /* MOD_0FAE_REG_3 */ { "stmxcsr", { Md }, 0 }, { PREFIX_TABLE(PREFIX_0FAE_REG_3) }, }, { /* MOD_0FAE_REG_4 */ { PREFIX_TABLE(PREFIX_MOD_0_0FAE_REG_4) }, { PREFIX_TABLE(PREFIX_MOD_3_0FAE_REG_4) }, }, { /* MOD_0FAE_REG_5 */ { "xrstor", { FXSAVE }, 0 }, { RM_TABLE(RM_0FAE_REG_5) }, }, { /* MOD_0FAE_REG_6 */ { PREFIX_TABLE(PREFIX_0FAE_REG_6) }, { RM_TABLE(RM_0FAE_REG_6) }, }, { /* MOD_0FAE_REG_7 */ { PREFIX_TABLE(PREFIX_0FAE_REG_7) }, { RM_TABLE(RM_0FAE_REG_7) }, }, { /* MOD_0FB2 */ { "lssS", { Gv, Mp }, 0 }, }, { /* MOD_0FB4 */ { "lfsS", { Gv, Mp }, 0 }, }, { /* MOD_0FB5 */ { "lgsS", { Gv, Mp }, 0 }, }, { /* MOD_0FC3 */ { PREFIX_TABLE(PREFIX_MOD_0_0FC3) }, }, { /* MOD_0FC7_REG_3 */ { "xrstors", { FXSAVE }, 0 }, }, { /* MOD_0FC7_REG_4 */ { "xsavec", { FXSAVE }, 0 }, }, { /* MOD_0FC7_REG_5 */ { "xsaves", { FXSAVE }, 0 }, }, { /* MOD_0FC7_REG_6 */ { PREFIX_TABLE(PREFIX_MOD_0_0FC7_REG_6) }, { PREFIX_TABLE(PREFIX_MOD_3_0FC7_REG_6) } }, { /* MOD_0FC7_REG_7 */ { "vmptrst", { Mq }, 0 }, { PREFIX_TABLE(PREFIX_MOD_3_0FC7_REG_7) } }, { /* MOD_0FD7 */ { Bad_Opcode }, { "pmovmskb", { Gdq, MS }, 0 }, }, { /* MOD_0FE7_PREFIX_2 */ { "movntdq", { Mx, XM }, 0 }, }, { /* MOD_0FF0_PREFIX_3 */ { "lddqu", { XM, M }, 0 }, }, { /* MOD_0F382A_PREFIX_2 */ { "movntdqa", { XM, Mx }, 0 }, }, { /* MOD_62_32BIT */ { "bound{S|}", { Gv, Ma }, 0 }, { EVEX_TABLE(EVEX_0F) }, }, { /* MOD_C4_32BIT */ { "lesS", { Gv, Mp }, 0 }, { VEX_C4_TABLE(VEX_0F) }, }, { /* MOD_C5_32BIT */ { "ldsS", { Gv, Mp }, 0 }, { VEX_C5_TABLE(VEX_0F) }, }, { /* MOD_VEX_0F12_PREFIX_0 */ { VEX_LEN_TABLE(VEX_LEN_0F12_P_0_M_0) }, { VEX_LEN_TABLE(VEX_LEN_0F12_P_0_M_1) }, }, { /* MOD_VEX_0F13 */ { VEX_LEN_TABLE(VEX_LEN_0F13_M_0) }, }, { /* MOD_VEX_0F16_PREFIX_0 */ { VEX_LEN_TABLE(VEX_LEN_0F16_P_0_M_0) }, { VEX_LEN_TABLE(VEX_LEN_0F16_P_0_M_1) }, }, { /* MOD_VEX_0F17 */ { VEX_LEN_TABLE(VEX_LEN_0F17_M_0) }, }, { /* MOD_VEX_0F2B */ { VEX_W_TABLE(VEX_W_0F2B_M_0) }, }, { /* MOD_VEX_W_0_0F41_P_0_LEN_1 */ { Bad_Opcode }, { "kandw", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F41_P_0_LEN_1 */ { Bad_Opcode }, { "kandq", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F41_P_2_LEN_1 */ { Bad_Opcode }, { "kandb", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F41_P_2_LEN_1 */ { Bad_Opcode }, { "kandd", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F42_P_0_LEN_1 */ { Bad_Opcode }, { "kandnw", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F42_P_0_LEN_1 */ { Bad_Opcode }, { "kandnq", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F42_P_2_LEN_1 */ { Bad_Opcode }, { "kandnb", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F42_P_2_LEN_1 */ { Bad_Opcode }, { "kandnd", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F44_P_0_LEN_0 */ { Bad_Opcode }, { "knotw", { MaskG, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F44_P_0_LEN_0 */ { Bad_Opcode }, { "knotq", { MaskG, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F44_P_2_LEN_0 */ { Bad_Opcode }, { "knotb", { MaskG, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F44_P_2_LEN_0 */ { Bad_Opcode }, { "knotd", { MaskG, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F45_P_0_LEN_1 */ { Bad_Opcode }, { "korw", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F45_P_0_LEN_1 */ { Bad_Opcode }, { "korq", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F45_P_2_LEN_1 */ { Bad_Opcode }, { "korb", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F45_P_2_LEN_1 */ { Bad_Opcode }, { "kord", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F46_P_0_LEN_1 */ { Bad_Opcode }, { "kxnorw", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F46_P_0_LEN_1 */ { Bad_Opcode }, { "kxnorq", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F46_P_2_LEN_1 */ { Bad_Opcode }, { "kxnorb", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F46_P_2_LEN_1 */ { Bad_Opcode }, { "kxnord", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F47_P_0_LEN_1 */ { Bad_Opcode }, { "kxorw", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F47_P_0_LEN_1 */ { Bad_Opcode }, { "kxorq", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F47_P_2_LEN_1 */ { Bad_Opcode }, { "kxorb", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F47_P_2_LEN_1 */ { Bad_Opcode }, { "kxord", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F4A_P_0_LEN_1 */ { Bad_Opcode }, { "kaddw", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F4A_P_0_LEN_1 */ { Bad_Opcode }, { "kaddq", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F4A_P_2_LEN_1 */ { Bad_Opcode }, { "kaddb", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F4A_P_2_LEN_1 */ { Bad_Opcode }, { "kaddd", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F4B_P_0_LEN_1 */ { Bad_Opcode }, { "kunpckwd", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F4B_P_0_LEN_1 */ { Bad_Opcode }, { "kunpckdq", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F4B_P_2_LEN_1 */ { Bad_Opcode }, { "kunpckbw", { MaskG, MaskVex, MaskR }, 0 }, }, { /* MOD_VEX_0F50 */ { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0F50_M_0) }, }, { /* MOD_VEX_0F71_REG_2 */ { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F71_REG_2) }, }, { /* MOD_VEX_0F71_REG_4 */ { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F71_REG_4) }, }, { /* MOD_VEX_0F71_REG_6 */ { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F71_REG_6) }, }, { /* MOD_VEX_0F72_REG_2 */ { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F72_REG_2) }, }, { /* MOD_VEX_0F72_REG_4 */ { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F72_REG_4) }, }, { /* MOD_VEX_0F72_REG_6 */ { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F72_REG_6) }, }, { /* MOD_VEX_0F73_REG_2 */ { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F73_REG_2) }, }, { /* MOD_VEX_0F73_REG_3 */ { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F73_REG_3) }, }, { /* MOD_VEX_0F73_REG_6 */ { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F73_REG_6) }, }, { /* MOD_VEX_0F73_REG_7 */ { Bad_Opcode }, { PREFIX_TABLE(PREFIX_VEX_0F73_REG_7) }, }, { /* MOD_VEX_W_0_0F91_P_0_LEN_0 */ { "kmovw", { Ew, MaskG }, 0 }, { Bad_Opcode }, }, { /* MOD_VEX_W_0_0F91_P_0_LEN_0 */ { "kmovq", { Eq, MaskG }, 0 }, { Bad_Opcode }, }, { /* MOD_VEX_W_0_0F91_P_2_LEN_0 */ { "kmovb", { Eb, MaskG }, 0 }, { Bad_Opcode }, }, { /* MOD_VEX_W_0_0F91_P_2_LEN_0 */ { "kmovd", { Ed, MaskG }, 0 }, { Bad_Opcode }, }, { /* MOD_VEX_W_0_0F92_P_0_LEN_0 */ { Bad_Opcode }, { "kmovw", { MaskG, Rdq }, 0 }, }, { /* MOD_VEX_W_0_0F92_P_2_LEN_0 */ { Bad_Opcode }, { "kmovb", { MaskG, Rdq }, 0 }, }, { /* MOD_VEX_W_0_0F92_P_3_LEN_0 */ { Bad_Opcode }, { "kmovd", { MaskG, Rdq }, 0 }, }, { /* MOD_VEX_W_1_0F92_P_3_LEN_0 */ { Bad_Opcode }, { "kmovq", { MaskG, Rdq }, 0 }, }, { /* MOD_VEX_W_0_0F93_P_0_LEN_0 */ { Bad_Opcode }, { "kmovw", { Gdq, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F93_P_2_LEN_0 */ { Bad_Opcode }, { "kmovb", { Gdq, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F93_P_3_LEN_0 */ { Bad_Opcode }, { "kmovd", { Gdq, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F93_P_3_LEN_0 */ { Bad_Opcode }, { "kmovq", { Gdq, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F98_P_0_LEN_0 */ { Bad_Opcode }, { "kortestw", { MaskG, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F98_P_0_LEN_0 */ { Bad_Opcode }, { "kortestq", { MaskG, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F98_P_2_LEN_0 */ { Bad_Opcode }, { "kortestb", { MaskG, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F98_P_2_LEN_0 */ { Bad_Opcode }, { "kortestd", { MaskG, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F99_P_0_LEN_0 */ { Bad_Opcode }, { "ktestw", { MaskG, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F99_P_0_LEN_0 */ { Bad_Opcode }, { "ktestq", { MaskG, MaskR }, 0 }, }, { /* MOD_VEX_W_0_0F99_P_2_LEN_0 */ { Bad_Opcode }, { "ktestb", { MaskG, MaskR }, 0 }, }, { /* MOD_VEX_W_1_0F99_P_2_LEN_0 */ { Bad_Opcode }, { "ktestd", { MaskG, MaskR }, 0 }, }, { /* MOD_VEX_0FAE_REG_2 */ { VEX_LEN_TABLE(VEX_LEN_0FAE_R_2_M_0) }, }, { /* MOD_VEX_0FAE_REG_3 */ { VEX_LEN_TABLE(VEX_LEN_0FAE_R_3_M_0) }, }, { /* MOD_VEX_0FD7_PREFIX_2 */ { Bad_Opcode }, { VEX_W_TABLE(VEX_W_0FD7_P_2_M_1) }, }, { /* MOD_VEX_0FE7_PREFIX_2 */ { VEX_W_TABLE(VEX_W_0FE7_P_2_M_0) }, }, { /* MOD_VEX_0FF0_PREFIX_3 */ { VEX_W_TABLE(VEX_W_0FF0_P_3_M_0) }, }, { /* MOD_VEX_0F381A_PREFIX_2 */ { VEX_LEN_TABLE(VEX_LEN_0F381A_P_2_M_0) }, }, { /* MOD_VEX_0F382A_PREFIX_2 */ { VEX_W_TABLE(VEX_W_0F382A_P_2_M_0) }, }, { /* MOD_VEX_0F382C_PREFIX_2 */ { VEX_W_TABLE(VEX_W_0F382C_P_2_M_0) }, }, { /* MOD_VEX_0F382D_PREFIX_2 */ { VEX_W_TABLE(VEX_W_0F382D_P_2_M_0) }, }, { /* MOD_VEX_0F382E_PREFIX_2 */ { VEX_W_TABLE(VEX_W_0F382E_P_2_M_0) }, }, { /* MOD_VEX_0F382F_PREFIX_2 */ { VEX_W_TABLE(VEX_W_0F382F_P_2_M_0) }, }, { /* MOD_VEX_0F385A_PREFIX_2 */ { VEX_LEN_TABLE(VEX_LEN_0F385A_P_2_M_0) }, }, { /* MOD_VEX_0F388C_PREFIX_2 */ { "vpmaskmov%LW", { XM, Vex, Mx }, 0 }, }, { /* MOD_VEX_0F388E_PREFIX_2 */ { "vpmaskmov%LW", { Mx, Vex, XM }, 0 }, }, { /* MOD_VEX_W_0_0F3A30_P_2_LEN_0 */ { Bad_Opcode }, { "kshiftrb", { MaskG, MaskR, Ib }, 0 }, }, { /* MOD_VEX_W_1_0F3A30_P_2_LEN_0 */ { Bad_Opcode }, { "kshiftrw", { MaskG, MaskR, Ib }, 0 }, }, { /* MOD_VEX_W_0_0F3A31_P_2_LEN_0 */ { Bad_Opcode }, { "kshiftrd", { MaskG, MaskR, Ib }, 0 }, }, { /* MOD_VEX_W_1_0F3A31_P_2_LEN_0 */ { Bad_Opcode }, { "kshiftrq", { MaskG, MaskR, Ib }, 0 }, }, { /* MOD_VEX_W_0_0F3A32_P_2_LEN_0 */ { Bad_Opcode }, { "kshiftlb", { MaskG, MaskR, Ib }, 0 }, }, { /* MOD_VEX_W_1_0F3A32_P_2_LEN_0 */ { Bad_Opcode }, { "kshiftlw", { MaskG, MaskR, Ib }, 0 }, }, { /* MOD_VEX_W_0_0F3A33_P_2_LEN_0 */ { Bad_Opcode }, { "kshiftld", { MaskG, MaskR, Ib }, 0 }, }, { /* MOD_VEX_W_1_0F3A33_P_2_LEN_0 */ { Bad_Opcode }, { "kshiftlq", { MaskG, MaskR, Ib }, 0 }, }, #define NEED_MOD_TABLE #include "i386-dis-evex.h" #undef NEED_MOD_TABLE }; static const struct dis386 rm_table[][8] = { { /* RM_C6_REG_7 */ { "xabort", { Skip_MODRM, Ib }, 0 }, }, { /* RM_C7_REG_7 */ { "xbeginT", { Skip_MODRM, Jv }, 0 }, }, { /* RM_0F01_REG_0 */ { Bad_Opcode }, { "vmcall", { Skip_MODRM }, 0 }, { "vmlaunch", { Skip_MODRM }, 0 }, { "vmresume", { Skip_MODRM }, 0 }, { "vmxoff", { Skip_MODRM }, 0 }, }, { /* RM_0F01_REG_1 */ { "monitor", { { OP_Monitor, 0 } }, 0 }, { "mwait", { { OP_Mwait, 0 } }, 0 }, { "clac", { Skip_MODRM }, 0 }, { "stac", { Skip_MODRM }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "encls", { Skip_MODRM }, 0 }, }, { /* RM_0F01_REG_2 */ { "xgetbv", { Skip_MODRM }, 0 }, { "xsetbv", { Skip_MODRM }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { "vmfunc", { Skip_MODRM }, 0 }, { "xend", { Skip_MODRM }, 0 }, { "xtest", { Skip_MODRM }, 0 }, { "enclu", { Skip_MODRM }, 0 }, }, { /* RM_0F01_REG_3 */ { "vmrun", { Skip_MODRM }, 0 }, { "vmmcall", { Skip_MODRM }, 0 }, { "vmload", { Skip_MODRM }, 0 }, { "vmsave", { Skip_MODRM }, 0 }, { "stgi", { Skip_MODRM }, 0 }, { "clgi", { Skip_MODRM }, 0 }, { "skinit", { Skip_MODRM }, 0 }, { "invlpga", { Skip_MODRM }, 0 }, }, { /* RM_0F01_REG_5 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { "rdpkru", { Skip_MODRM }, 0 }, { "wrpkru", { Skip_MODRM }, 0 }, }, { /* RM_0F01_REG_7 */ { "swapgs", { Skip_MODRM }, 0 }, { "rdtscp", { Skip_MODRM }, 0 }, { "monitorx", { { OP_Monitor, 0 } }, 0 }, { "mwaitx", { { OP_Mwaitx, 0 } }, 0 }, { "clzero", { Skip_MODRM }, 0 }, }, { /* RM_0FAE_REG_5 */ { "lfence", { Skip_MODRM }, 0 }, }, { /* RM_0FAE_REG_6 */ { "mfence", { Skip_MODRM }, 0 }, }, { /* RM_0FAE_REG_7 */ { "sfence", { Skip_MODRM }, 0 }, }, }; static int ckprefix(disassemble_info *info) { int newrex, i, length; info->rex = 0; info->rex_ignored = 0; info->prefixes = 0; info->used_prefixes = 0; info->rex_used = 0; info->last_lock_prefix = -1; info->last_repz_prefix = -1; info->last_repnz_prefix = -1; info->last_data_prefix = -1; info->last_addr_prefix = -1; info->last_rex_prefix = -1; info->last_seg_prefix = -1; info->fwait_prefix = -1; info->active_seg_prefix = 0; for (i = 0; i < (int) ARRAY_SIZE(info->all_prefixes); i++) info->all_prefixes[i] = 0; i = 0; length = 0; /* The maximum instruction length is 15bytes. */ while (length < MAX_CODE_LENGTH - 1) { FETCH_DATA(info, info->codep + 1); newrex = 0; switch (*info->codep) { /* REX prefixes family. */ case 0x40: case 0x41: case 0x42: case 0x43: case 0x44: case 0x45: case 0x46: case 0x47: case 0x48: case 0x49: case 0x4a: case 0x4b: case 0x4c: case 0x4d: case 0x4e: case 0x4f: if (info->address_mode == mode_64bit) newrex = *info->codep; else return 1; info->last_rex_prefix = i; break; case REPE_PREFIX_OPCODE: info->prefixes |= PREFIX_REPZ; info->last_repz_prefix = i; break; case REPNE_PREFIX_OPCODE: info->prefixes |= PREFIX_REPNZ; info->last_repnz_prefix = i; break; case LOCK_PREFIX_OPCODE: info->prefixes |= PREFIX_LOCK; info->last_lock_prefix = i; break; case CS_PREFIX_OPCODE: info->prefixes |= PREFIX_CS; info->last_seg_prefix = i; info->active_seg_prefix = PREFIX_CS; break; case SS_PREFIX_OPCODE: info->prefixes |= PREFIX_SS; info->last_seg_prefix = i; info->active_seg_prefix = PREFIX_SS; break; case DS_PREFIX_OPCODE: info->prefixes |= PREFIX_DS; info->last_seg_prefix = i; info->active_seg_prefix = PREFIX_DS; break; case ES_PREFIX_OPCODE: info->prefixes |= PREFIX_ES; info->last_seg_prefix = i; info->active_seg_prefix = PREFIX_ES; break; case FS_PREFIX_OPCODE: info->prefixes |= PREFIX_FS; info->last_seg_prefix = i; info->active_seg_prefix = PREFIX_FS; break; case GS_PREFIX_OPCODE: info->prefixes |= PREFIX_GS; info->last_seg_prefix = i; info->active_seg_prefix = PREFIX_GS; break; case DATA_PREFIX_OPCODE: info->prefixes |= PREFIX_DATA; info->last_data_prefix = i; break; case ADDR_PREFIX_OPCODE: info->prefixes |= PREFIX_ADDR; info->last_addr_prefix = i; break; case FWAIT_OPCODE: /* fwait is really an instruction. If there are prefixes before the fwait, they belong to the fwait, *not* to the following instruction. */ info->fwait_prefix = i; if (info->prefixes || info->rex) { info->prefixes |= PREFIX_FWAIT; info->codep++; /* This ensures that the previous REX prefixes are noticed as unused prefixes, as in the return case below. */ info->rex_used = info->rex; return 1; } info->prefixes = PREFIX_FWAIT; break; default: return 1; } /* Rex is ignored when followed by another prefix. */ if (info->rex) { info->rex_used = info->rex; return 1; } if (*info->codep != FWAIT_OPCODE) info->all_prefixes[i++] = *info->codep; info->rex = newrex; info->codep++; length++; } return 0; } /* Return the name of the prefix byte PREF, or NULL if PREF is not a prefix byte. */ static const char *prefix_name(disassemble_info *info, int pref, int sizeflag) { static const char *const rexes[16] = { "rex", /* 0x40 */ "rex.B", /* 0x41 */ "rex.X", /* 0x42 */ "rex.XB", /* 0x43 */ "rex.R", /* 0x44 */ "rex.RB", /* 0x45 */ "rex.RX", /* 0x46 */ "rex.RXB", /* 0x47 */ "rex.W", /* 0x48 */ "rex.WB", /* 0x49 */ "rex.WX", /* 0x4a */ "rex.WXB", /* 0x4b */ "rex.WR", /* 0x4c */ "rex.WRB", /* 0x4d */ "rex.WRX", /* 0x4e */ "rex.WRXB", /* 0x4f */ }; switch (pref) { /* REX prefixes family. */ case 0x40: case 0x41: case 0x42: case 0x43: case 0x44: case 0x45: case 0x46: case 0x47: case 0x48: case 0x49: case 0x4a: case 0x4b: case 0x4c: case 0x4d: case 0x4e: case 0x4f: return rexes[pref - 0x40]; case REPE_PREFIX_OPCODE: return "repz"; case REPNE_PREFIX_OPCODE: return "repnz"; case LOCK_PREFIX_OPCODE: return "lock"; case CS_PREFIX_OPCODE: return "cs"; case SS_PREFIX_OPCODE: return "ss"; case DS_PREFIX_OPCODE: return "ds"; case ES_PREFIX_OPCODE: return "es"; case FS_PREFIX_OPCODE: return "fs"; case GS_PREFIX_OPCODE: return "gs"; case DATA_PREFIX_OPCODE: return (sizeflag & DFLAG) ? "data16" : "data32"; case ADDR_PREFIX_OPCODE: if (info->address_mode == mode_64bit) return (sizeflag & AFLAG) ? "addr32" : "addr64"; else return (sizeflag & AFLAG) ? "addr16" : "addr32"; case FWAIT_OPCODE: return "fwait"; case REP_PREFIX: return "rep"; case XACQUIRE_PREFIX: return "xacquire"; case XRELEASE_PREFIX: return "xrelease"; case BND_PREFIX: return "bnd"; default: return NULL; } } static const char *const float_mem[] = { /* d8 */ "fadd{s|}", "fmul{s|}", "fcom{s|}", "fcomp{s|}", "fsub{s|}", "fsubr{s|}", "fdiv{s|}", "fdivr{s|}", /* d9 */ "fld{s|}", "(bad)", "fst{s|}", "fstp{s|}", "fldenvIC", "fldcw", "fNstenvIC", "fNstcw", /* da */ "fiadd{l|}", "fimul{l|}", "ficom{l|}", "ficomp{l|}", "fisub{l|}", "fisubr{l|}", "fidiv{l|}", "fidivr{l|}", /* db */ "fild{l|}", "fisttp{l|}", "fist{l|}", "fistp{l|}", "(bad)", "fld{t||t|}", "(bad)", "fstp{t||t|}", /* dc */ "fadd{l|}", "fmul{l|}", "fcom{l|}", "fcomp{l|}", "fsub{l|}", "fsubr{l|}", "fdiv{l|}", "fdivr{l|}", /* dd */ "fld{l|}", "fisttp{ll|}", "fst{l||}", "fstp{l|}", "frstorIC", "(bad)", "fNsaveIC", "fNstsw", /* de */ "fiadd", "fimul", "ficom", "ficomp", "fisub", "fisubr", "fidiv", "fidivr", /* df */ "fild", "fisttp", "fist", "fistp", "fbld", "fild{ll|}", "fbstp", "fistp{ll|}", }; static const unsigned char float_mem_mode[] = { /* d8 */ d_mode, d_mode, d_mode, d_mode, d_mode, d_mode, d_mode, d_mode, /* d9 */ d_mode, 0, d_mode, d_mode, 0, w_mode, 0, w_mode, /* da */ d_mode, d_mode, d_mode, d_mode, d_mode, d_mode, d_mode, d_mode, /* db */ d_mode, d_mode, d_mode, d_mode, 0, t_mode, 0, t_mode, /* dc */ q_mode, q_mode, q_mode, q_mode, q_mode, q_mode, q_mode, q_mode, /* dd */ q_mode, q_mode, q_mode, q_mode, 0, 0, 0, w_mode, /* de */ w_mode, w_mode, w_mode, w_mode, w_mode, w_mode, w_mode, w_mode, /* df */ w_mode, w_mode, w_mode, w_mode, t_mode, q_mode, t_mode, q_mode }; static const char *const fgrps[][8] = { /* Bad opcode 0 */ { "(bad)", "(bad)", "(bad)", "(bad)", "(bad)", "(bad)", "(bad)", "(bad)", }, /* d9_2 1 */ { "fnop", "(bad)", "(bad)", "(bad)", "(bad)", "(bad)", "(bad)", "(bad)", }, /* d9_4 2 */ { "fchs", "fabs", "(bad)", "(bad)", "ftst", "fxam", "(bad)", "(bad)", }, /* d9_5 3 */ { "fld1", "fldl2t", "fldl2e", "fldpi", "fldlg2", "fldln2", "fldz", "(bad)", }, /* d9_6 4 */ { "f2xm1", "fyl2x", "fptan", "fpatan", "fxtract", "fprem1", "fdecstp", "fincstp", }, /* d9_7 5 */ { "fprem", "fyl2xp1", "fsqrt", "fsincos", "frndint", "fscale", "fsin", "fcos", }, /* da_5 6 */ { "(bad)", "fucompp", "(bad)", "(bad)", "(bad)", "(bad)", "(bad)", "(bad)", }, /* db_4 7 */ { "fNeni(8087 only)", "fNdisi(8087 only)", "fNclex", "fNinit", "fNsetpm(287 only)", "frstpm(287 only)", "(bad)", "(bad)", }, /* de_3 8 */ { "(bad)", "fcompp", "(bad)", "(bad)", "(bad)", "(bad)", "(bad)", "(bad)", }, /* df_4 9 */ { "fNstsw", "(bad)", "(bad)", "(bad)", "(bad)", "(bad)", "(bad)", "(bad)", }, }; void x86_disassemble_print_options(FILE *stream) { fprintf(stream, _("\n\ The following i386/x86-64 specific disassembler options are supported for use\n\ with the -M switch (multiple options should be separated by commas):\n")); fprintf(stream, _(" x86-64 Disassemble in 64bit mode\n")); fprintf(stream, _(" i386 Disassemble in 32bit mode\n")); fprintf(stream, _(" i8086 Disassemble in 16bit mode\n")); fprintf(stream, _(" att Display instruction in AT&T syntax\n")); fprintf(stream, _(" intel Display instruction in Intel syntax\n")); fprintf(stream, _(" att-mnemonic\n" " Display instruction in AT&T mnemonic\n")); fprintf(stream, _(" intel-mnemonic\n" " Display instruction in Intel mnemonic\n")); fprintf(stream, _(" addr64 Assume 64bit address size\n")); fprintf(stream, _(" addr32 Assume 32bit address size\n")); fprintf(stream, _(" addr16 Assume 16bit address size\n")); fprintf(stream, _(" data32 Assume 32bit data size\n")); fprintf(stream, _(" data16 Assume 16bit data size\n")); fprintf(stream, _(" suffix Always display instruction suffix in AT&T syntax\n")); fprintf(stream, _(" amd64 Display instruction in AMD64 ISA\n")); fprintf(stream, _(" intel64 Display instruction in Intel64 ISA\n")); } /* Bad opcode. */ static const struct dis386 bad_opcode = { "(bad)", { XX }, 0 }; /* Get a pointer to struct dis386 with a valid name. */ static const struct dis386 *get_valid_dis386(const struct dis386 *dp, disassemble_info *info) { int vindex; int vex_table_index; if (dp->name != NULL) return dp; switch (dp->op[0].bytemode) { case USE_REG_TABLE: dp = ®_table[dp->op[1].bytemode][info->modrm.reg]; break; case USE_MOD_TABLE: vindex = info->modrm.mod == 0x3 ? 1 : 0; dp = &mod_table[dp->op[1].bytemode][vindex]; break; case USE_RM_TABLE: dp = &rm_table[dp->op[1].bytemode][info->modrm.rm]; break; case USE_PREFIX_TABLE: if (info->need_vex) { /* The prefix in VEX is implicit. */ switch (info->vex.prefix) { case 0: vindex = 0; break; case REPE_PREFIX_OPCODE: vindex = 1; break; case DATA_PREFIX_OPCODE: vindex = 2; break; case REPNE_PREFIX_OPCODE: vindex = 3; break; default: internal_error(info); return NULL; } } else { int last_prefix = -1; int prefix = 0; vindex = 0; /* We check PREFIX_REPNZ and PREFIX_REPZ before PREFIX_DATA. When there are multiple PREFIX_REPNZ and PREFIX_REPZ, the last one wins. */ if ((info->prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) != 0) { if (info->last_repz_prefix > info->last_repnz_prefix) { vindex = 1; prefix = PREFIX_REPZ; last_prefix = info->last_repz_prefix; } else { vindex = 3; prefix = PREFIX_REPNZ; last_prefix = info->last_repnz_prefix; } /* Check if prefix should be ignored. */ if ((((prefix_table[dp->op[1].bytemode][vindex].prefix_requirement & PREFIX_IGNORED) >> PREFIX_IGNORED_SHIFT) & prefix) != 0) vindex = 0; } if (vindex == 0 && (info->prefixes & PREFIX_DATA) != 0) { vindex = 2; prefix = PREFIX_DATA; last_prefix = info->last_data_prefix; } if (vindex != 0) { info->used_prefixes |= prefix; info->all_prefixes[last_prefix] = 0; } } dp = &prefix_table[dp->op[1].bytemode][vindex]; break; case USE_X86_64_TABLE: vindex = info->address_mode == mode_64bit ? 1 : 0; dp = &x86_64_table[dp->op[1].bytemode][vindex]; break; case USE_3BYTE_TABLE: FETCH_DATA(info, info->codep + 2); vindex = *info->codep++; dp = &three_byte_table[dp->op[1].bytemode][vindex]; info->end_codep = info->codep; info->modrm.mod = (*info->codep >> 6) & 3; info->modrm.reg = (*info->codep >> 3) & 7; info->modrm.rm = *info->codep & 7; break; case USE_VEX_LEN_TABLE: if (!info->need_vex) { internal_error(info); return NULL; } switch (info->vex.length) { case 128: vindex = 0; break; case 256: vindex = 1; break; default: internal_error(info); return NULL; } dp = &vex_len_table[dp->op[1].bytemode][vindex]; break; case USE_XOP_8F_TABLE: FETCH_DATA(info, info->codep + 3); /* All bits in the REX prefix are ignored. */ info->rex_ignored = info->rex; info->rex = ~(*info->codep >> 5) & 0x7; /* VEX_TABLE_INDEX is the mmmmm part of the XOP byte 1 "RCB.mmmmm". */ switch ((*info->codep & 0x1f)) { default: dp = &bad_opcode; return dp; case 0x8: vex_table_index = XOP_08; break; case 0x9: vex_table_index = XOP_09; break; case 0xa: vex_table_index = XOP_0A; break; } info->codep++; info->vex.w = *info->codep & 0x80; if (info->vex.w && info->address_mode == mode_64bit) info->rex |= REX_W; info->vex.register_specifier = (~(*info->codep >> 3)) & 0xf; if (info->address_mode != mode_64bit) { /* In 16/32-bit mode REX_B is silently ignored. */ info->rex &= ~REX_B; if (info->vex.register_specifier > 0x7) { dp = &bad_opcode; return dp; } } info->vex.length = (*info->codep & 0x4) ? 256 : 128; switch ((*info->codep & 0x3)) { case 0: info->vex.prefix = 0; break; case 1: info->vex.prefix = DATA_PREFIX_OPCODE; break; case 2: info->vex.prefix = REPE_PREFIX_OPCODE; break; case 3: info->vex.prefix = REPNE_PREFIX_OPCODE; break; } info->need_vex = 1; info->need_vex_reg = 1; info->codep++; vindex = *info->codep++; dp = &xop_table[vex_table_index][vindex]; info->end_codep = info->codep; FETCH_DATA(info, info->codep + 1); info->modrm.mod = (*info->codep >> 6) & 3; info->modrm.reg = (*info->codep >> 3) & 7; info->modrm.rm = *info->codep & 7; break; case USE_VEX_C4_TABLE: /* VEX prefix. */ FETCH_DATA(info, info->codep + 3); /* All bits in the REX prefix are ignored. */ info->rex_ignored = info->rex; info->rex = ~(*info->codep >> 5) & 0x7; switch ((*info->codep & 0x1f)) { default: dp = &bad_opcode; return dp; case 0x1: vex_table_index = VEX_0F; break; case 0x2: vex_table_index = VEX_0F38; break; case 0x3: vex_table_index = VEX_0F3A; break; } info->codep++; info->vex.w = *info->codep & 0x80; if (info->address_mode == mode_64bit) { if (info->vex.w) info->rex |= REX_W; info->vex.register_specifier = (~(*info->codep >> 3)) & 0xf; } else { /* For the 3-byte VEX prefix in 32-bit mode, the REX_B bit is ignored, other REX bits are 0 and the highest bit in VEX.vvvv is also ignored. */ info->rex = 0; info->vex.register_specifier = (~(*info->codep >> 3)) & 0x7; } info->vex.length = (*info->codep & 0x4) ? 256 : 128; switch ((*info->codep & 0x3)) { case 0: info->vex.prefix = 0; break; case 1: info->vex.prefix = DATA_PREFIX_OPCODE; break; case 2: info->vex.prefix = REPE_PREFIX_OPCODE; break; case 3: info->vex.prefix = REPNE_PREFIX_OPCODE; break; } info->need_vex = 1; info->need_vex_reg = 1; info->codep++; vindex = *info->codep++; dp = &vex_table[vex_table_index][vindex]; info->end_codep = info->codep; /* There is no MODRM byte for VEX [82|77]. */ if (vindex != 0x77 && vindex != 0x82) { FETCH_DATA(info, info->codep + 1); info->modrm.mod = (*info->codep >> 6) & 3; info->modrm.reg = (*info->codep >> 3) & 7; info->modrm.rm = *info->codep & 7; } break; case USE_VEX_C5_TABLE: /* VEX prefix. */ FETCH_DATA(info, info->codep + 2); /* All bits in the REX prefix are ignored. */ info->rex_ignored = info->rex; info->rex = (*info->codep & 0x80) ? 0 : REX_R; /* For the 2-byte VEX prefix in 32-bit mode, the highest bit in VEX.vvvv is 1. */ info->vex.register_specifier = (~(*info->codep >> 3)) & 0xf; info->vex.w = 0; info->vex.length = (*info->codep & 0x4) ? 256 : 128; switch ((*info->codep & 0x3)) { case 0: info->vex.prefix = 0; break; case 1: info->vex.prefix = DATA_PREFIX_OPCODE; break; case 2: info->vex.prefix = REPE_PREFIX_OPCODE; break; case 3: info->vex.prefix = REPNE_PREFIX_OPCODE; break; } info->need_vex = 1; info->need_vex_reg = 1; info->codep++; vindex = *info->codep++; dp = &vex_table[dp->op[1].bytemode][vindex]; info->end_codep = info->codep; /* There is no MODRM byte for VEX [82|77]. */ if (vindex != 0x77 && vindex != 0x82) { FETCH_DATA(info, info->codep + 1); info->modrm.mod = (*info->codep >> 6) & 3; info->modrm.reg = (*info->codep >> 3) & 7; info->modrm.rm = *info->codep & 7; } break; case USE_VEX_W_TABLE: if (!info->need_vex) { internal_error(info); return NULL; } dp = &vex_w_table[dp->op[1].bytemode][info->vex.w ? 1 : 0]; break; case USE_EVEX_TABLE: info->two_source_ops = 0; /* EVEX prefix. */ info->vex.evex = 1; FETCH_DATA(info, info->codep + 4); /* All bits in the REX prefix are ignored. */ info->rex_ignored = info->rex; /* The first byte after 0x62. */ info->rex = ~(*info->codep >> 5) & 0x7; info->vex.r = *info->codep & 0x10; switch ((*info->codep & 0xf)) { default: return &bad_opcode; case 0x1: vex_table_index = EVEX_0F; break; case 0x2: vex_table_index = EVEX_0F38; break; case 0x3: vex_table_index = EVEX_0F3A; break; } /* The second byte after 0x62. */ info->codep++; info->vex.w = *info->codep & 0x80; if (info->vex.w && info->address_mode == mode_64bit) info->rex |= REX_W; info->vex.register_specifier = (~(*info->codep >> 3)) & 0xf; if (info->address_mode != mode_64bit) { /* In 16/32-bit mode silently ignore following bits. */ info->rex &= ~REX_B; info->vex.r = 1; info->vex.v = 1; info->vex.register_specifier &= 0x7; } /* The U bit. */ if (!(*info->codep & 0x4)) return &bad_opcode; switch ((*info->codep & 0x3)) { case 0: info->vex.prefix = 0; break; case 1: info->vex.prefix = DATA_PREFIX_OPCODE; break; case 2: info->vex.prefix = REPE_PREFIX_OPCODE; break; case 3: info->vex.prefix = REPNE_PREFIX_OPCODE; break; } /* The third byte after 0x62. */ info->codep++; /* Remember the static rounding bits. */ info->vex.ll = (*info->codep >> 5) & 3; info->vex.b = (*info->codep & 0x10) != 0; info->vex.v = *info->codep & 0x8; info->vex.mask_register_specifier = *info->codep & 0x7; info->vex.zeroing = *info->codep & 0x80; info->need_vex = 1; info->need_vex_reg = 1; info->codep++; vindex = *info->codep++; dp = &evex_table[vex_table_index][vindex]; info->end_codep = info->codep; FETCH_DATA(info, info->codep + 1); info->modrm.mod = (*info->codep >> 6) & 3; info->modrm.reg = (*info->codep >> 3) & 7; info->modrm.rm = *info->codep & 7; /* Set vector length. */ if (info->modrm.mod == 3 && info->vex.b) info->vex.length = 512; else { switch (info->vex.ll) { case 0x0: info->vex.length = 128; break; case 0x1: info->vex.length = 256; break; case 0x2: info->vex.length = 512; break; default: return &bad_opcode; } } break; case 0: dp = &bad_opcode; break; default: internal_error(info); return NULL; } if (dp->name != NULL) return dp; else return get_valid_dis386(dp, info); } static void get_sib(disassemble_info *info, int sizeflag) { /* If modrm.mod == 3, operand must be register. */ if (info->need_modrm && ((sizeflag & AFLAG) || info->address_mode == mode_64bit) && info->modrm.mod != 3 && info->modrm.rm == 4) { FETCH_DATA(info, info->codep + 2); info->sib.index = (info->codep[1] >> 3) & 7; info->sib.scale = (info->codep[1] >> 6) & 3; info->sib.base = info->codep[1] & 7; } } /* Capital letters in template are macros. */ static int putop(disassemble_info *info, const char *in_template, int sizeflag) { const char *p; int alt = 0; int cond = 1; unsigned int l = 0, len = 1; char last[4]; #define SAVE_LAST(c) \ if (l < len && l < sizeof (last)) \ { \ last[l++] = c; \ } else \ { \ internal_error(info); \ return -1; \ } for (p = in_template; *p; p++) { switch (*p) { default: *info->obufp++ = *p; break; case '%': len++; break; case '!': cond = 0; break; case '{': alt = 0; if (info->intel_syntax) { while (*++p != '|') if (*p == '}' || *p == '\0') { internal_error(info); return -1; } } /* Fall through. */ case 'I': alt = 1; continue; case '|': while (*++p != '}') { if (*p == '\0') { internal_error(info); return -1; } } break; case '}': break; case 'A': if (info->intel_syntax) break; if (info->modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS)) *info->obufp++ = 'b'; break; case 'B': if (l == 0 && len == 1) { case_B: if (info->intel_syntax) break; if (sizeflag & SUFFIX_ALWAYS) *info->obufp++ = 'b'; } else { if (l != 1 || len != 2 || last[0] != 'L') { SAVE_LAST(*p); break; } if (info->address_mode == mode_64bit && !(info->prefixes & PREFIX_ADDR)) { *info->obufp++ = 'a'; *info->obufp++ = 'b'; *info->obufp++ = 's'; } goto case_B; } break; case 'C': if (info->intel_syntax && !alt) break; if ((info->prefixes & PREFIX_DATA) || (sizeflag & SUFFIX_ALWAYS)) { if (sizeflag & DFLAG) *info->obufp++ = info->intel_syntax ? 'd' : 'l'; else *info->obufp++ = info->intel_syntax ? 'w' : 's'; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } break; case 'D': if (info->intel_syntax || !(sizeflag & SUFFIX_ALWAYS)) break; USED_REX(REX_W); if (info->modrm.mod == 3) { if (info->rex & REX_W) *info->obufp++ = 'q'; else { if (sizeflag & DFLAG) *info->obufp++ = info->intel_syntax ? 'd' : 'l'; else *info->obufp++ = 'w'; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } } else *info->obufp++ = 'w'; break; case 'E': /* For jcxz/jecxz */ if (info->address_mode == mode_64bit) { if (sizeflag & AFLAG) *info->obufp++ = 'r'; else *info->obufp++ = 'e'; } else if (sizeflag & AFLAG) { *info->obufp++ = 'e'; } info->used_prefixes |= (info->prefixes & PREFIX_ADDR); break; case 'F': if (info->intel_syntax) break; if ((info->prefixes & PREFIX_ADDR) || (sizeflag & SUFFIX_ALWAYS)) { if (sizeflag & AFLAG) *info->obufp++ = info->address_mode == mode_64bit ? 'q' : 'l'; else *info->obufp++ = info->address_mode == mode_64bit ? 'l' : 'w'; info->used_prefixes |= (info->prefixes & PREFIX_ADDR); } break; case 'G': if (info->intel_syntax || (info->obufp[-1] != 's' && !(sizeflag & SUFFIX_ALWAYS))) break; if ((info->rex & REX_W) || (sizeflag & DFLAG)) *info->obufp++ = 'l'; else *info->obufp++ = 'w'; if (!(info->rex & REX_W)) info->used_prefixes |= (info->prefixes & PREFIX_DATA); break; case 'H': if (info->intel_syntax) break; if ((info->prefixes & (PREFIX_CS | PREFIX_DS)) == PREFIX_CS || (info->prefixes & (PREFIX_CS | PREFIX_DS)) == PREFIX_DS) { info->used_prefixes |= info->prefixes & (PREFIX_CS | PREFIX_DS); *info->obufp++ = ','; *info->obufp++ = 'p'; if (info->prefixes & PREFIX_DS) *info->obufp++ = 't'; else *info->obufp++ = 'n'; } break; case 'J': if (info->intel_syntax) break; *info->obufp++ = 'l'; break; case 'K': USED_REX(REX_W); if (info->rex & REX_W) *info->obufp++ = 'q'; else *info->obufp++ = 'd'; break; case 'Z': if (l != 0 || len != 1) { if (l != 1 || len != 2 || last[0] != 'X') { SAVE_LAST(*p); break; } if (!info->need_vex || !info->vex.evex) { internal_error(info); return -1; } if (info->intel_syntax || ((info->modrm.mod == 3 || info->vex.b) && !(sizeflag & SUFFIX_ALWAYS))) break; switch (info->vex.length) { case 128: *info->obufp++ = 'x'; break; case 256: *info->obufp++ = 'y'; break; case 512: *info->obufp++ = 'z'; break; default: internal_error(info); return -1; } break; } if (info->intel_syntax) break; if (info->address_mode == mode_64bit && (sizeflag & SUFFIX_ALWAYS)) { *info->obufp++ = 'q'; break; } /* Fall through. */ goto case_L; case 'L': if (l != 0 || len != 1) { SAVE_LAST(*p); break; } case_L: if (info->intel_syntax) break; if (sizeflag & SUFFIX_ALWAYS) *info->obufp++ = 'l'; break; case 'M': if (info->intel_mnemonic != cond) *info->obufp++ = 'r'; break; case 'N': if ((info->prefixes & PREFIX_FWAIT) == 0) *info->obufp++ = 'n'; else info->used_prefixes |= PREFIX_FWAIT; break; case 'O': USED_REX(REX_W); if (info->rex & REX_W) *info->obufp++ = 'o'; else if (info->intel_syntax && (sizeflag & DFLAG)) *info->obufp++ = 'q'; else *info->obufp++ = 'd'; if (!(info->rex & REX_W)) info->used_prefixes |= (info->prefixes & PREFIX_DATA); break; case '&': if (!info->intel_syntax && info->address_mode == mode_64bit && info->isa64 == intel64) { *info->obufp++ = 'q'; break; } /* Fall through. */ case 'T': if (!info->intel_syntax && info->address_mode == mode_64bit && ((sizeflag & DFLAG) || (info->rex & REX_W))) { *info->obufp++ = 'q'; break; } /* Fall through. */ goto case_P; case 'P': if (l == 0 && len == 1) { case_P: if (info->intel_syntax) { if ((info->rex & REX_W) == 0 && (info->prefixes & PREFIX_DATA)) { if ((sizeflag & DFLAG) == 0) *info->obufp++ = 'w'; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } break; } if ((info->prefixes & PREFIX_DATA) || (info->rex & REX_W) || (sizeflag & SUFFIX_ALWAYS)) { USED_REX(REX_W); if (info->rex & REX_W) *info->obufp++ = 'q'; else { if (sizeflag & DFLAG) *info->obufp++ = 'l'; else *info->obufp++ = 'w'; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } } } else { if (l != 1 || len != 2 || last[0] != 'L') { SAVE_LAST(*p); break; } if ((info->prefixes & PREFIX_DATA) || (info->rex & REX_W) || (sizeflag & SUFFIX_ALWAYS)) { USED_REX(REX_W); if (info->rex & REX_W) *info->obufp++ = 'q'; else { if (sizeflag & DFLAG) *info->obufp++ = info->intel_syntax ? 'd' : 'l'; else *info->obufp++ = 'w'; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } } } break; case 'U': if (info->intel_syntax) break; if (info->address_mode == mode_64bit && ((sizeflag & DFLAG) || (info->rex & REX_W))) { if (info->modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS)) *info->obufp++ = 'q'; break; } /* Fall through. */ goto case_Q; case 'Q': if (l == 0 && len == 1) { case_Q: if (info->intel_syntax && !alt) break; USED_REX(REX_W); if (info->modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS)) { if (info->rex & REX_W) *info->obufp++ = 'q'; else { if (sizeflag & DFLAG) *info->obufp++ = info->intel_syntax ? 'd' : 'l'; else *info->obufp++ = 'w'; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } } } else { if (l != 1 || len != 2 || last[0] != 'L') { SAVE_LAST(*p); break; } if (info->intel_syntax || (info->modrm.mod == 3 && !(sizeflag & SUFFIX_ALWAYS))) break; if ((info->rex & REX_W)) { USED_REX(REX_W); *info->obufp++ = 'q'; } else *info->obufp++ = 'l'; } break; case 'R': USED_REX(REX_W); if (info->rex & REX_W) *info->obufp++ = 'q'; else if (sizeflag & DFLAG) { if (info->intel_syntax) *info->obufp++ = 'd'; else *info->obufp++ = 'l'; } else *info->obufp++ = 'w'; if (info->intel_syntax && !p[1] && ((info->rex & REX_W) || (sizeflag & DFLAG))) *info->obufp++ = 'e'; if (!(info->rex & REX_W)) info->used_prefixes |= (info->prefixes & PREFIX_DATA); break; case 'V': if (l == 0 && len == 1) { if (info->intel_syntax) break; if (info->address_mode == mode_64bit && ((sizeflag & DFLAG) || (info->rex & REX_W))) { if (sizeflag & SUFFIX_ALWAYS) *info->obufp++ = 'q'; break; } } else { if (l != 1 || len != 2 || last[0] != 'L') { SAVE_LAST(*p); break; } if (info->rex & REX_W) { *info->obufp++ = 'a'; *info->obufp++ = 'b'; *info->obufp++ = 's'; } } /* Fall through. */ goto case_S; case 'S': if (l == 0 && len == 1) { case_S: if (info->intel_syntax) break; if (sizeflag & SUFFIX_ALWAYS) { if (info->rex & REX_W) *info->obufp++ = 'q'; else { if (sizeflag & DFLAG) *info->obufp++ = 'l'; else *info->obufp++ = 'w'; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } } } else { if (l != 1 || len != 2 || last[0] != 'L') { SAVE_LAST(*p); break; } if (info->address_mode == mode_64bit && !(info->prefixes & PREFIX_ADDR)) { *info->obufp++ = 'a'; *info->obufp++ = 'b'; *info->obufp++ = 's'; } goto case_S; } break; case 'X': if (l != 0 || len != 1) { SAVE_LAST(*p); break; } if (info->need_vex && info->vex.prefix) { if (info->vex.prefix == DATA_PREFIX_OPCODE) *info->obufp++ = 'd'; else *info->obufp++ = 's'; } else { if (info->prefixes & PREFIX_DATA) *info->obufp++ = 'd'; else *info->obufp++ = 's'; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } break; case 'Y': if (l == 0 && len == 1) { if (info->intel_syntax || !(sizeflag & SUFFIX_ALWAYS)) break; if (info->rex & REX_W) { USED_REX(REX_W); *info->obufp++ = 'q'; } break; } else { if (l != 1 || len != 2 || last[0] != 'X') { SAVE_LAST(*p); break; } if (!info->need_vex) { internal_error(info); return -1; } if (info->intel_syntax || ((info->modrm.mod == 3 || info->vex.b) && !(sizeflag & SUFFIX_ALWAYS))) break; switch (info->vex.length) { case 128: *info->obufp++ = 'x'; break; case 256: *info->obufp++ = 'y'; break; case 512: if (!info->vex.evex) default: { internal_error(info); return -1; } break; } } break; case 'W': if (l == 0 && len == 1) { /* operand size flag for cwtl, cbtw */ USED_REX(REX_W); if (info->rex & REX_W) { if (info->intel_syntax) *info->obufp++ = 'd'; else *info->obufp++ = 'l'; } else if (sizeflag & DFLAG) *info->obufp++ = 'w'; else *info->obufp++ = 'b'; if (!(info->rex & REX_W)) info->used_prefixes |= (info->prefixes & PREFIX_DATA); } else { if (l != 1 || len != 2 || (last[0] != 'X' && last[0] != 'L')) { SAVE_LAST(*p); break; } if (!info->need_vex) { internal_error(info); return -1; } if (last[0] == 'X') *info->obufp++ = info->vex.w ? 'd' : 's'; else *info->obufp++ = info->vex.w ? 'q' : 'd'; } break; case '^': if (info->intel_syntax) break; if ((info->prefixes & PREFIX_DATA) || (sizeflag & SUFFIX_ALWAYS)) { if (sizeflag & DFLAG) *info->obufp++ = 'l'; else *info->obufp++ = 'w'; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } break; case '@': if (info->intel_syntax) break; if (info->address_mode == mode_64bit && (info->isa64 == intel64 || ((sizeflag & DFLAG) || (info->rex & REX_W)))) { *info->obufp++ = 'q'; } else if ((info->prefixes & PREFIX_DATA)) { if (!(sizeflag & DFLAG)) *info->obufp++ = 'w'; info->used_prefixes |= (info->prefixes & PREFIX_DATA); } break; } alt = 0; } *info->obufp = 0; info->mnemonicendp = info->obufp; return 0; } #define ST { OP_ST, 0 } #define STi { OP_STi, 0 } #define FGRPd9_2 NULL, { { NULL, 1 } }, 0 #define FGRPd9_4 NULL, { { NULL, 2 } }, 0 #define FGRPd9_5 NULL, { { NULL, 3 } }, 0 #define FGRPd9_6 NULL, { { NULL, 4 } }, 0 #define FGRPd9_7 NULL, { { NULL, 5 } }, 0 #define FGRPda_5 NULL, { { NULL, 6 } }, 0 #define FGRPdb_4 NULL, { { NULL, 7 } }, 0 #define FGRPde_3 NULL, { { NULL, 8 } }, 0 #define FGRPdf_4 NULL, { { NULL, 9 } }, 0 static void OP_ST(disassemble_info *info, int bytemode, int sizeflag) { UNUSED(bytemode); UNUSED(sizeflag); oappend_maybe_intel(info, "%st"); } static void OP_STi(disassemble_info *info, int bytemode, int sizeflag) { char scratchbuf[100]; UNUSED(bytemode); UNUSED(sizeflag); sprintf(scratchbuf, "%%st(%d)", info->modrm.rm); oappend_maybe_intel(info, scratchbuf); } static const struct dis386 float_reg[][8] = { /* d8 */ { { "fadd", { ST, STi }, 0 }, { "fmul", { ST, STi }, 0 }, { "fcom", { STi }, 0 }, { "fcomp", { STi }, 0 }, { "fsub", { ST, STi }, 0 }, { "fsubr", { ST, STi }, 0 }, { "fdiv", { ST, STi }, 0 }, { "fdivr", { ST, STi }, 0 }, }, /* d9 */ { { "fld", { STi }, 0 }, { "fxch", { STi }, 0 }, { FGRPd9_2 }, { Bad_Opcode }, { FGRPd9_4 }, { FGRPd9_5 }, { FGRPd9_6 }, { FGRPd9_7 }, }, /* da */ { { "fcmovb", { ST, STi }, 0 }, { "fcmove", { ST, STi }, 0 }, { "fcmovbe", { ST, STi }, 0 }, { "fcmovu", { ST, STi }, 0 }, { Bad_Opcode }, { FGRPda_5 }, { Bad_Opcode }, { Bad_Opcode }, }, /* db */ { { "fcmovnb", { ST, STi }, 0 }, { "fcmovne", { ST, STi }, 0 }, { "fcmovnbe", { ST, STi }, 0 }, { "fcmovnu", { ST, STi }, 0 }, { FGRPdb_4 }, { "fucomi", { ST, STi }, 0 }, { "fcomi", { ST, STi }, 0 }, { Bad_Opcode }, }, /* dc */ { { "fadd", { STi, ST }, 0 }, { "fmul", { STi, ST }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { "fsub!M", { STi, ST }, 0 }, { "fsubM", { STi, ST }, 0 }, { "fdiv!M", { STi, ST }, 0 }, { "fdivM", { STi, ST }, 0 }, }, /* dd */ { { "ffree", { STi }, 0 }, { Bad_Opcode }, { "fst", { STi }, 0 }, { "fstp", { STi }, 0 }, { "fucom", { STi }, 0 }, { "fucomp", { STi }, 0 }, { Bad_Opcode }, { Bad_Opcode }, }, /* de */ { { "faddp", { STi, ST }, 0 }, { "fmulp", { STi, ST }, 0 }, { Bad_Opcode }, { FGRPde_3 }, { "fsub!Mp", { STi, ST }, 0 }, { "fsubMp", { STi, ST }, 0 }, { "fdiv!Mp", { STi, ST }, 0 }, { "fdivMp", { STi, ST }, 0 }, }, /* df */ { { "ffreep", { STi }, 0 }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { FGRPdf_4 }, { "fucomip", { ST, STi }, 0 }, { "fcomip", { ST, STi }, 0 }, { Bad_Opcode }, }, }; static void dofloat(disassemble_info *info, int sizeflag) { const struct dis386 *dp; unsigned char floatop; floatop = info->codep[-1]; if (info->modrm.mod != 3) { int fp_indx = (floatop - 0xd8) * 8 + info->modrm.reg; if (putop(info, float_mem[fp_indx], sizeflag) < 0) return; info->obufp = info->op_out[0]; info->op_ad = 2; OP_E(info, float_mem_mode[fp_indx], sizeflag); return; } /* Skip mod/rm byte. */ MODRM_CHECK(return); info->codep++; dp = &float_reg[floatop - 0xd8][info->modrm.reg]; if (dp->name == NULL) { if (putop(info, fgrps[dp->op[0].bytemode][info->modrm.rm], sizeflag) < 0) return; /* Instruction fnstsw is only one with strange arg. */ if (floatop == 0xdf && info->codep[-1] == 0xe0) strcpy(info->op_out[0], info->names16[0]); } else { if (putop(info, dp->name, sizeflag) < 0) return; info->obufp = info->op_out[0]; info->op_ad = 2; if (dp->op[0].rtn) (*dp->op[0].rtn) (info, dp->op[0].bytemode, sizeflag); info->obufp = info->op_out[1]; info->op_ad = 1; if (dp->op[1].rtn) (*dp->op[1].rtn) (info, dp->op[1].bytemode, sizeflag); } } static int print_insn(bfd_vma pc, disassemble_info *info) { const struct dis386 *dp; int i; char *op_txt[MAX_OPERANDS]; int needcomma; int sizeflag, orig_sizeflag; int prefix_length; if (info->intel_syntax) { info->names64 = intel_names64; info->names32 = intel_names32; info->names16 = intel_names16; info->names8 = intel_names8; info->names8rex = intel_names8rex; info->names_seg = intel_names_seg; info->names_mm = intel_names_mm; info->names_bnd = intel_names_bnd; info->names_xmm = intel_names_xmm; info->names_ymm = intel_names_ymm; info->names_zmm = intel_names_zmm; info->index64 = intel_index64; info->index32 = intel_index32; info->index16 = intel_index16; info->names_mask = intel_names_mask; info->open_char = '['; info->close_char = ']'; info->separator_char = '+'; info->scale_char = '*'; } else { info->names64 = att_names64; info->names32 = att_names32; info->names16 = att_names16; info->names8 = att_names8; info->names8rex = att_names8rex; info->names_seg = att_names_seg; info->names_mm = att_names_mm; info->names_bnd = att_names_bnd; info->names_xmm = att_names_xmm; info->names_ymm = att_names_ymm; info->names_zmm = att_names_zmm; info->index64 = att_index64; info->index32 = att_index32; info->index16 = att_index16; info->names_mask = att_names_mask; info->open_char = '('; info->close_char = ')'; info->separator_char = ','; info->scale_char = ','; } info->dis_private.max_fetched = info->dis_private.the_buffer; info->dis_private.insn_start = pc; info->obuf[0] = 0; for (i = 0; i < MAX_OPERANDS; ++i) { info->op_out[i][0] = 0; info->op_index[i] = -1; } info->start_pc = pc; info->start_codep = info->dis_private.the_buffer; info->codep = info->dis_private.the_buffer; if (OPCODES_SIGSETJMP(info->dis_private.bailout) != 0) { const char *name; /* Getting here means we tried for data but didn't get it. That means we have an incomplete instruction of some sort. Just print the first byte as a prefix or a .byte pseudo-op. */ if (info->codep > info->dis_private.the_buffer) { name = prefix_name(info, info->dis_private.the_buffer[0], info->dis_private.orig_sizeflag); if (name != NULL) (*info->fprintf_func) (info->stream, "%s", name); else { /* Just print the first byte as a .byte instruction. */ (*info->fprintf_func) (info->stream, ".byte 0x%x", info->dis_private.the_buffer[0]); } return 1; } return -1; } info->obufp = info->obuf; sizeflag = info->dis_private.orig_sizeflag; if (!ckprefix(info) || info->rex_used) { /* Too many prefixes or unused REX prefixes. */ for (i = 0; i < (int) ARRAY_SIZE(info->all_prefixes) && info->all_prefixes[i]; i++) (*info->fprintf_func) (info->stream, "%s%s", i == 0 ? "" : " ", prefix_name(info, info->all_prefixes[i], sizeflag)); return i; } info->insn_codep = info->codep; FETCH_DATA(info, info->codep + 1); info->two_source_ops = (*info->codep == 0x62) || (*info->codep == 0xc8); if (((info->prefixes & PREFIX_FWAIT) && ((*info->codep < 0xd8) || (*info->codep > 0xdf)))) { /* Handle prefixes before fwait. */ for (i = 0; i < info->fwait_prefix && info->all_prefixes[i]; i++) (*info->fprintf_func) (info->stream, "%s ", prefix_name(info, info->all_prefixes[i], sizeflag)); (*info->fprintf_func) (info->stream, "fwait"); return i + 1; } if (*info->codep == 0x0f) { unsigned char threebyte; info->codep++; FETCH_DATA(info, info->codep + 1); threebyte = *info->codep; dp = &dis386_twobyte[threebyte]; info->need_modrm = twobyte_has_modrm[*info->codep]; info->codep++; } else { dp = &dis386[*info->codep]; info->need_modrm = onebyte_has_modrm[*info->codep]; info->codep++; } /* Save sizeflag for printing the extra prefixes later before updating it for mnemonic and operand processing. The prefix names depend only on the address mode. */ orig_sizeflag = sizeflag; if (info->prefixes & PREFIX_ADDR) sizeflag ^= AFLAG; if ((info->prefixes & PREFIX_DATA)) sizeflag ^= DFLAG; info->end_codep = info->codep; if (info->need_modrm) { FETCH_DATA(info, info->codep + 1); info->modrm.mod = (*info->codep >> 6) & 3; info->modrm.reg = (*info->codep >> 3) & 7; info->modrm.rm = *info->codep & 7; } info->need_vex = 0; info->need_vex_reg = 0; info->vex_w_done = 0; info->vex.evex = 0; if (dp->name == NULL && dp->op[0].bytemode == FLOATCODE) { get_sib(info, sizeflag); dofloat(info, sizeflag); } else { dp = get_valid_dis386(dp, info); if (dp != NULL && putop(info, dp->name, sizeflag) == 0) { get_sib(info, sizeflag); for (i = 0; i < MAX_OPERANDS; ++i) { info->obufp = info->op_out[i]; info->op_ad = MAX_OPERANDS - 1 - i; if (dp->op[i].rtn) (*dp->op[i].rtn) (info, dp->op[i].bytemode, sizeflag); /* For EVEX instruction after the last operand masking should be printed. */ if (i == 0 && info->vex.evex) { /* Don't print {%k0}. */ if (info->vex.mask_register_specifier) { oappend(info, "{ "); oappend(info, info->names_mask[info->vex.mask_register_specifier]); oappend(info, " }"); } if (info->vex.zeroing) oappend(info, "{z}"); } } } } /* Check if the REX prefix is used. */ if (info->rex_ignored == 0 && (info->rex ^ info->rex_used) == 0 && info->last_rex_prefix >= 0) info->all_prefixes[info->last_rex_prefix] = 0; /* Check if the SEG prefix is used. */ if ((info->prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS | PREFIX_ES | PREFIX_FS | PREFIX_GS)) != 0 && (info->used_prefixes & info->active_seg_prefix) != 0) info->all_prefixes[info->last_seg_prefix] = 0; /* Check if the ADDR prefix is used. */ if ((info->prefixes & PREFIX_ADDR) != 0 && (info->used_prefixes & PREFIX_ADDR) != 0) info->all_prefixes[info->last_addr_prefix] = 0; /* Check if the DATA prefix is used. */ if ((info->prefixes & PREFIX_DATA) != 0 && (info->used_prefixes & PREFIX_DATA) != 0) info->all_prefixes[info->last_data_prefix] = 0; /* Print the extra prefixes. */ prefix_length = 0; for (i = 0; i < (int) ARRAY_SIZE(info->all_prefixes); i++) { if (info->all_prefixes[i]) { const char *name; name = prefix_name(info, info->all_prefixes[i], orig_sizeflag); if (name == NULL) { internal_error(info); return -1; } prefix_length += strlen(name) + 1; (*info->fprintf_func) (info->stream, "%s ", name); } } /* If the mandatory PREFIX_REPZ/PREFIX_REPNZ/PREFIX_DATA prefix is unused, opcode is invalid. Since the PREFIX_DATA prefix may be used by putop and MMX/SSE operand and may be overriden by the PREFIX_REPZ/PREFIX_REPNZ fix, we check the PREFIX_DATA prefix separately. */ if (dp->prefix_requirement == PREFIX_OPCODE && dp != &bad_opcode && (((info->prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) != 0 && (info->used_prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) == 0) || ((((info->prefixes & (PREFIX_REPZ | PREFIX_REPNZ | PREFIX_DATA)) == PREFIX_DATA) && (info->used_prefixes & PREFIX_DATA) == 0)))) { (*info->fprintf_func) (info->stream, "(bad)"); return info->end_codep - info->dis_private.the_buffer; } /* Check maximum code length. */ if ((info->codep - info->start_codep) > MAX_CODE_LENGTH) { (*info->fprintf_func) (info->stream, "(bad)"); return MAX_CODE_LENGTH; } info->obufp = info->mnemonicendp; for (i = strlen(info->obuf) + prefix_length; i < 6; i++) oappend(info, " "); oappend(info, " "); (*info->fprintf_func) (info->stream, "%s", info->obuf); /* The enter and bound instructions are printed with operands in the same order as the intel book; everything else is printed in reverse order. */ if (info->intel_syntax || info->two_source_ops) { int riprel; for (i = 0; i < MAX_OPERANDS; ++i) op_txt[i] = info->op_out[i]; if (info->intel_syntax && dp && dp->op[2].rtn == OP_Rounding && dp->op[3].rtn == OP_E && dp->op[4].rtn == NULL) { op_txt[2] = info->op_out[3]; op_txt[3] = info->op_out[2]; } for (i = 0; i < (MAX_OPERANDS >> 1); ++i) { info->op_ad = info->op_index[i]; info->op_index[i] = info->op_index[MAX_OPERANDS - 1 - i]; info->op_index[MAX_OPERANDS - 1 - i] = info->op_ad; riprel = info->op_riprel[i]; info->op_riprel[i] = info->op_riprel[MAX_OPERANDS - 1 - i]; info->op_riprel[MAX_OPERANDS - 1 - i] = riprel; } } else { for (i = 0; i < MAX_OPERANDS; ++i) op_txt[MAX_OPERANDS - 1 - i] = info->op_out[i]; } needcomma = 0; for (i = 0; i < MAX_OPERANDS; ++i) { if (*op_txt[i]) { if (needcomma) (*info->fprintf_func) (info->stream, ","); if (info->op_index[i] != -1 && !info->op_riprel[i]) (*info->print_address_func) (info->op_address[info->op_index[i]], info); else (*info->fprintf_func) (info->stream, "%s", op_txt[i]); needcomma = 1; } } for (i = 0; i < MAX_OPERANDS; i++) { if (info->op_index[i] != -1 && info->op_riprel[i]) { (*info->fprintf_func) (info->stream, " # "); (*info->print_address_func) (info->start_pc + (info->codep - info->start_codep) + info->op_address[info->op_index[i]], info); break; } } return info->codep - info->dis_private.the_buffer; } /* Get LENGTH bytes from info's buffer, at target address memaddr. Transfer them to myaddr. */ static int buffer_read_memory(bfd_vma memaddr, bfd_byte *myaddr, size_t length, disassemble_info *info) { size_t opb = 1; size_t end_addr_offset = length / opb; size_t max_addr_offset = info->buffer_length / opb; size_t octets = (memaddr - info->buffer_vma) * opb; if (memaddr < info->buffer_vma || memaddr - info->buffer_vma > max_addr_offset || memaddr - info->buffer_vma + end_addr_offset > max_addr_offset || (info->stop_vma && (memaddr >= info->stop_vma || memaddr + end_addr_offset > info->stop_vma))) /* Out of bounds. Use EIO because GDB uses it. */ return EIO; memcpy(myaddr, info->buffer + octets, length); return 0; } /* Print an error message. We can assume that this is in response to an error return from buffer_read_memory. */ static void perror_memory(int status, bfd_vma memaddr, disassemble_info *info) { if (status != EIO) /* Can't happen. */ info->fprintf_func(info->stream, _("Unknown error %d\n"), status); else { char buf[30]; /* Actually, address between memaddr and memaddr + len was out of bounds. */ sprintf(buf, "%016" PRIx64, (uint64_t)memaddr); info->fprintf_func(info->stream, _("Address 0x%s is out of bounds.\n"), buf); } } void x86_disassemble_set_option(disassemble_info *info, const char *options) { const char *p; for (p = options; p != NULL;) { if (CONST_STRNEQ(p, "amd64")) { info->isa64 = amd64; } else if (CONST_STRNEQ(p, "intel64")) { info->isa64 = intel64; } else if (CONST_STRNEQ(p, "x86-64")) { info->address_mode = mode_64bit; info->dis_private.orig_sizeflag = AFLAG | DFLAG; } else if (CONST_STRNEQ(p, "i386")) { info->address_mode = mode_32bit; info->dis_private.orig_sizeflag = AFLAG | DFLAG; } else if (CONST_STRNEQ(p, "i8086")) { info->address_mode = mode_16bit; info->dis_private.orig_sizeflag = 0; } else if (CONST_STRNEQ(p, "intel")) { info->intel_syntax = 1; if (CONST_STRNEQ(p + 5, "-mnemonic")) info->intel_mnemonic = 1; } else if (CONST_STRNEQ(p, "att")) { info->intel_syntax = 0; if (CONST_STRNEQ(p + 3, "-mnemonic")) info->intel_mnemonic = 0; } else if (CONST_STRNEQ(p, "addr")) { if (info->address_mode == mode_64bit) { if (p[4] == '3' && p[5] == '2') info->dis_private.orig_sizeflag &= ~AFLAG; else if (p[4] == '6' && p[5] == '4') info->dis_private.orig_sizeflag |= AFLAG; } else { if (p[4] == '1' && p[5] == '6') info->dis_private.orig_sizeflag &= ~AFLAG; else if (p[4] == '3' && p[5] == '2') info->dis_private.orig_sizeflag |= AFLAG; } } else if (CONST_STRNEQ(p, "data")) { if (p[4] == '1' && p[5] == '6') info->dis_private.orig_sizeflag &= ~DFLAG; else if (p[4] == '3' && p[5] == '2') info->dis_private.orig_sizeflag |= DFLAG; } else if (CONST_STRNEQ(p, "suffix")) { info->dis_private.orig_sizeflag |= SUFFIX_ALWAYS; } p = strchr(p, ','); if (p != NULL) p++; } } static void generic_print_address(bfd_vma addr, disassemble_info *info) { char buf[30]; if (info->address_mode == mode_64bit) sprintf(buf, "%016" PRIx64, (uint64_t)addr); else sprintf(buf, "%08" PRIx32, (uint32_t)addr); (*info->fprintf_func) (info->stream, "0x%s", buf); } int x86_print_insn(bfd_vma ainst, disassemble_info *info) { info->buffer = (bfd_byte *)ainst; info->buffer_length = 16; info->buffer_vma = (uintptr_t)ainst; return print_insn(ainst, info); } void x86_disassemble_init(disassemble_info **pinfo, void *stream, fprintf_ftype fprintf_func) { disassemble_info *info = *pinfo; if (info == NULL) { info = (disassemble_info *)malloc(sizeof(*info)); *pinfo = info; } memset(info, 0, sizeof(*info)); info->fprintf_func = fprintf_func; info->stream = stream; info->read_memory_func = buffer_read_memory; info->memory_error_func = perror_memory; info->print_address_func = generic_print_address; info->dis_private.orig_sizeflag = AFLAG | DFLAG; #if BFD_ARCH_SIZE >= 64 info->address_mode = mode_64bit; #else info->address_mode = mode_32bit; #endif info->intel_syntax = 0; info->intel_mnemonic = !SYSV386_COMPAT; /* The output looks better if we put 7 bytes on a line, since that puts most long word instructions on a single line. Use 8 bytes for Intel L1OM. */ info->bytes_per_line = 7; } void x86_disassemble_exit(disassemble_info **pinfo) { free(*pinfo); *pinfo = NULL; } #else extern int i_dont_care_that_ISOC_doesnt_like_empty_sourcefiles; #endif /* DISASM_USE_BUILTIN */ aranym-1.1.0/src/disasm/disasm-glue.cpp0000664000175000017500000002770513454637621016201 0ustar joyjoy/* * disasm-glue.cpp - interface to either opcode library or builtin disassemblers * * Copyright (c) 2001-2018 Thorsten Otto of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "memory-uae.h" #include "newcpu.h" #include "m68k.h" #include "cpu_emulation.h" #include "disasm-glue.h" #ifdef HAVE_DISASM_M68K /* rest of file */ /* * kept here rather than in debug.cpp * (which normally is the only place where it is used), * so we can enable a disassembler without debugger support, * and call some functions from gdb. */ m68k_disasm_info disasm_info; #ifdef DISASM_USE_OPCODES #include #include /* * newer versions of dis-asm.h don't declare the * functions :( */ #ifdef __cplusplus extern "C" { #endif extern int print_insn_m68k(bfd_vma, disassemble_info *); #ifdef __cplusplus } #endif /* * on 64-bit hosts, libopcodes prints all addresses with 16 digits, * even if we are disassembling for a 32bit processor */ static void print_32bit_address (bfd_vma addr, struct disassemble_info *info) { (*info->fprintf_func) (info->stream, "0x%08x", (unsigned int)addr); } struct opcodes_info { char linebuf[128]; size_t bufsize; size_t linepos; disassemble_info *opcodes_info; }; static int opcodes_printf(void *info, const char *format, ...) { struct opcodes_info *opcodes_info = (struct opcodes_info *)info; va_list args; int len; size_t remain; va_start(args, format); remain = opcodes_info->bufsize - opcodes_info->linepos - 1; len = vsnprintf(opcodes_info->linebuf + opcodes_info->linepos, remain, format, args); if (len > 0) { if ((size_t)len > remain) len = remain; opcodes_info->linepos += len; } va_end(args); return len; } #else #include "disasm-bfd.h" #include "disasm-builtin.h" #endif /* DISASM_USE_OPCODES */ void m68k_disasm_init(m68k_disasm_info *info, enum m68k_cpu cpu) { /* * we always want disassembly for at least '40, because the BIOS contains * opcodes for it. */ if (cpu < CPU_68040) info->cpu = CPU_68040; else info->cpu = cpu; info->fpu = FPU_68881; info->mmu = cpu >= CPU_68040 ? MMU_68040 : MMU_NONE; info->is_64bit = FALSE; info->memory_vma = m68k_getpc(); info->application_data = NULL; info->opcode[0] = '\0'; info->operands[0] = '\0'; info->comments[0] = '\0'; info->num_oper = 0; info->num_insn_words = 0; info->disasm_data = NULL; #ifdef DISASM_USE_OPCODES { struct opcodes_info *opcodes_info; opcodes_info = (struct opcodes_info *)info->disasm_data; if (opcodes_info == NULL) { opcodes_info = (struct opcodes_info *)calloc(sizeof(*opcodes_info)); opcodes_info->opcodes_info = (struct disassemble_info *)calloc(sizeof(struct disassemble_info), 1); info->disasm_data = opcodes_info; } INIT_DISASSEMBLE_INFO(opcodes_info->opcodes_info, info->disasm_data, (fprintf_ftype)opcodes_printf); opcodes_info->opcodes_info->arch = bfd_arch_m68k; opcodes_info->opcodes_info.buffer = (unsigned char *)phys_get_real_address(0); opcodes_info->opcodes_info.buffer_length = 2; opcodes_info->opcodes_info.buffer_vma = 0; opcodes_info->opcodes_info.print_address_func = print_32bit_address; switch (info->cpu) { case CPU_68000: opcodes_info->opcodes_info->mach = bfd_mach_m68000; break; case CPU_68008: opcodes_info->opcodes_info->mach = bfd_mach_m68008; break; case CPU_68010: opcodes_info->opcodes_info->mach = bfd_mach_m68010; break; case CPU_68020: opcodes_info->opcodes_info->mach = bfd_mach_m68020; break; case CPU_68030: opcodes_info->opcodes_info->mach = bfd_mach_m68030; break; case CPU_68040: opcodes_info->opcodes_info->mach = bfd_mach_m68040; break; case CPU_68060: opcodes_info->opcodes_info->mach = bfd_mach_m68060; break; case CPU_68302: opcodes_info->opcodes_info->mach = bfd_mach_m68000; break; case CPU_68331: case CPU_68332: case CPU_68333: opcodes_info->opcodes_info->mach = bfd_mach_m68020; break; case CPU_CPU32: opcodes_info->opcodes_info->mach = bfd_mach_cpu32; break; case CPU_5200: case CPU_5202: case CPU_5204: case CPU_5206: opcodes_info->opcodes_info->mach = bfd_mach_mcf_isa_c_nodiv; break; case CPU_5206e: opcodes_info->opcodes_info->mach = bfd_mach_mcf_isa_c_mac; break; case CPU_5207: case CPU_5208: opcodes_info->opcodes_info->mach = bfd_mach_mcf_isa_aplus_emac; break; case CPU_521x: opcodes_info->opcodes_info->mach = bfd_mach_mcf_isa_aplus_mac; break; case CPU_5249: opcodes_info->opcodes_info->mach = bfd_mach_mcf_isa_a_mac; break; case CPU_528x: opcodes_info->opcodes_info->mach = bfd_mach_mcf_isa_aplus_emac; break; case CPU_5307: opcodes_info->opcodes_info->mach = bfd_mach_mcf_isa_a_mac; break; case CPU_537x: opcodes_info->opcodes_info->mach = bfd_mach_mcf_isa_a_emac; break; case CPU_5407: opcodes_info->opcodes_info->mach = bfd_mach_mcf_isa_b_mac; break; case CPU_547x: opcodes_info->opcodes_info->mach = bfd_mach_mcf_isa_b_emac; break; case CPU_548x: case CPU_CFV4: case CPU_CFV4e: opcodes_info->opcodes_info->mach = bfd_mach_mcf_isa_b_float_emac; break; default: break; } } #endif } void m68k_disasm_exit(m68k_disasm_info *info) { if (info == NULL) return; if (info->disasm_data != NULL) { free(info->disasm_data); info->disasm_data = NULL; } } int m68k_disasm_insn(m68k_disasm_info *info) { int len; int i; memptr start; info->num_oper = 0; info->opcode[0] = '\0'; info->operands[0] = '\0'; info->comments[0] = '\0'; info->num_insn_words = 0; { SAVE_EXCEPTION; { TRY(prb) { #ifdef DISASM_USE_OPCODES { char *p; struct opcodes_info *opcodes_info = (struct opcodes_info *)info->disasm_data; opcodes_info->linepos = 0; opcodes_info->bufsize = sizeof(opcodes_info->linebuf); opcodes_info->opcodes_info->buffer = phys_get_real_address(info->memory_vma); opcodes_info->opcodes_info->buffer_length = 22; opcodes_info->opcodes_info->buffer_vma = info->memory_vma; len = print_insn_m68k(info->memory_vma, opcodes_info->opcodes_info); opcodes_info->linebuf[opcodes_info->linepos] = '\0'; p = strchr(opcodes_info->linebuf, ' '); if (p != NULL) { *p++ = '\0'; strncpy(info->opcode, opcodes_info->linebuf, sizeof(info->opcode) - 1); /* * how to get the number of operands from libopcodes? * the following doesn't work, because registers * are not data references * FIXME */ if (opcodes_info->opcodes_info->insn_type == dis_dref2) info->num_oper = 2; else info->num_oper = 1; while (*p == ' ') p++; strncpy(info->operands, p, sizeof(info->operands) - 1); /* * on 64-bit hosts, libopcodes prints all addresses with 16 digits, * even if we are disassembling for a 32bit processor */ while ((p = strstr(info->operands, "000000000")) != NULL) memmove(p + 1, p + 9, strlen(p + 9) + 1); while ((p = strstr(info->operands, "fffffffff")) != NULL) memmove(p + 1, p + 9, strlen(p + 9) + 1); } else { strncpy(info->opcode, opcodes_info->linebuf, sizeof(info->opcode) - 1); } } #endif #ifdef DISASM_USE_BUILTIN len = m68k_disasm_builtin(info); #endif info->opcode[sizeof(info->opcode) - 1] = '\0'; info->operands[sizeof(info->operands) - 1] = '\0'; if (len == 0) /* make sure we advance in case there was an error */ len = 2; info->num_insn_words = len / 2; start = info->memory_vma; for (i = 0; i < info->num_insn_words; i++, start += 2) info->insn_words[i] = phys_get_word(start); info->memory_vma = start; } CATCH(prb) { strcpy(info->opcode, ""); len = -1; } } RESTORE_EXCEPTION; } return len; } int m68k_disasm_to_buf(m68k_disasm_info *info, char *buf, int allbytes) { int len; int i; memptr start = info->memory_vma; const int words_per_line = 5; len = m68k_disasm_insn(info); sprintf(buf, "[%08x]", start); for (i = 0; i < words_per_line && i < info->num_insn_words; i++) { sprintf(buf + strlen(buf), " %04x", info->insn_words[i]); } for (; i < words_per_line; i++) strcat(buf, " "); #if 0 { char *p; p = strchr(info->operands, ','); sprintf(buf + strlen(buf), " %d", info->num_oper); if (info->num_oper == 0 && *info->operands != '\0') strcat(buf, "? "); else if (info->num_oper != 0 && *info->operands == '\0') strcat(buf, "? "); else if (p == NULL && info->num_oper == 2) strcat(buf, "? "); else if (p != NULL && info->num_oper == 1) strcat(buf, "! "); else strcat(buf, " "); } #endif sprintf(buf + strlen(buf), " %-10s", info->opcode); strcat(buf, info->operands); if (*info->comments != '\0') { strcat(buf, " ; "); strcat(buf, info->comments); } if (info->num_insn_words > words_per_line && allbytes) { strcat(buf, "\n"); sprintf(buf + strlen(buf), "[%08x]", start + words_per_line * 2); for (i = words_per_line; i < info->num_insn_words; i++) { sprintf(buf + strlen(buf), " %04x", info->insn_words[i]); } } return len; } /* * Utility functions that can be called from GDB. */ memptr gdb_dis(memptr start, unsigned int count) { char buf[256]; memptr save_vma; int size; if (RAMBaseHost == NULL) { fprintf(stderr, "memory not yet initialized\n"); return 0; } if (count == 0) count = 1; save_vma = disasm_info.memory_vma; disasm_info.memory_vma = start; do { size = m68k_disasm_to_buf(&disasm_info, buf, TRUE); puts(buf); --count; } while (size >= 0 && count); start = disasm_info.memory_vma; disasm_info.memory_vma = save_vma; return start; } memptr gdb_pc(void) { return m68k_getpc(); } void gdb_regs(void) { int i; memptr u, s; FILE *f = stdout; for (i = 0; i < 8; i = i + 4) { fprintf(f, "D%d: %04x %04x ", i + 0, (regs.regs[i + 0] >> 16) & 0xffff, regs.regs[i + 0] & 0xffff); fprintf(f, "D%d: %04x %04x ", i + 1, (regs.regs[i + 1] >> 16) & 0xffff, regs.regs[i + 1] & 0xffff); fprintf(f, "D%d: %04x %04x ", i + 2, (regs.regs[i + 2] >> 16) & 0xffff, regs.regs[i + 2] & 0xffff); fprintf(f, "D%d: %04x %04x ", i + 3, (regs.regs[i + 3] >> 16) & 0xffff, regs.regs[i + 3] & 0xffff); fprintf(f, "\n"); } for (i = 0; i < 8; i = i + 4) { fprintf(f, "A%d: %04x %04x ", i + 0, (regs.regs[i + 8] >> 16) & 0xffff, regs.regs[i + 8] & 0xffff); fprintf(f, "A%d: %04x %04x ", i + 1, (regs.regs[i + 9] >> 16) & 0xffff, regs.regs[i + 9] & 0xffff); fprintf(f, "A%d: %04x %04x ", i + 2, (regs.regs[i + 10] >> 16) & 0xffff, regs.regs[i + 10] & 0xffff); fprintf(f, "A%d: %04x %04x ", i + 3, (regs.regs[i + 11] >> 16) & 0xffff, regs.regs[i + 11] & 0xffff); fprintf(f, "\n"); } if (regs.sr & 0x2000) { u = regs.usp; s = regs.isp; fprintf(f, "Supervisor Mode: USP: %08x\n", u); } else { u = regs.usp; s = regs.isp; fprintf(f, "User Mode: SSP: %08x\n", s); } fprintf(f, "SR:%04x ", regs.sr); if (regs.sr & 0x10) fprintf(f, "X"); else fprintf(f, "-"); if (regs.sr & 0x08) fprintf(f, "N"); else fprintf(f, "-"); if (regs.sr & 0x04) fprintf(f, "Z"); else fprintf(f, "-"); if (regs.sr & 0x02) fprintf(f, "V"); else fprintf(f, "-"); if (regs.sr & 0x01) fprintf(f, "C"); else fprintf(f, "-"); fprintf(f, "\n"); } #endif /* HAVE_DISASM_M68K */ aranym-1.1.0/src/disasm/disasm-builtin.h0000664000175000017500000000317513454637621016353 0ustar joyjoy/* * disasm-builtin.h - declaration of internal disassemblers * * Copyright (c) 2001-2018 Thorsten Otto of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifdef __cplusplus extern "C" { #endif /* Method to initialize a disassemble_info struct. This should be called by all applications creating such a struct. */ void arm_disassemble_init(disassemble_info **info, void *stream, fprintf_ftype fprintf_func); void x86_disassemble_init(disassemble_info **info, void *stream, fprintf_ftype fprintf_func); /* Disassemble one instruction at the given target address. Return number of octets processed. */ int arm_print_insn(bfd_vma, disassemble_info *); int x86_print_insn(bfd_vma, disassemble_info *); void x86_disassemble_set_option(disassemble_info *info, const char *options); #ifdef __cplusplus } #endif aranym-1.1.0/src/disasm/disasm-builtin.cpp0000664000175000017500000026537713454637621016724 0ustar joyjoy#include "sysdeps.h" #include #include "memory-uae.h" #include "newcpu.h" #include "m68k.h" #include "cpu_emulation.h" #include "disasm-glue.h" #ifdef DISASM_USE_BUILTIN /* rest of file */ /* opcode overview: BITREV 0000 000 011 000 rrr ORI 0000 000 0ss eee eee BYTEREV 0000 001 011 000 rrr ANDI 0000 001 0ss eee eee FF1 0000 010 011 000 rrr SUBI 0000 010 0ss eee eee RTM 0000 011 011 00d rrr CALLM 0000 011 011 eee eee ADDI 0000 011 0ss eee eee CMP2/CHK2 0000 0ss 011 eee eee BTST 0000 100 000 eee eee BCHG 0000 100 001 eee eee BCLR 0000 100 010 eee eee BSET 0000 100 011 eee eee EORI 0000 101 0ss eee eee CMPI 0000 110 0ss eee eee MOVES 0000 111 0ss eee eee CAS2 0000 1ss 011 111 100 CAS 0000 1ss 011 eee eee MOVEP 0000 rrr 1oo 001 rrr BTST 0000 rrr 100 eee eee BCHG 0000 rrr 101 eee eee BCLR 0000 rrr 110 eee eee BSET 0000 rrr 111 eee eee MOVE 0001 eee eee eee eee MOVE 0010 eee eee eee eee MOVE 0011 eee eee eee eee MOVE SR 0100 000 011 eee eee NEGX 0100 000 0ss eee eee MOVE CCR 0100 001 011 eee eee CLR 0100 001 0ss eee eee MOVE CCR 0100 010 011 eee eee NEG 0100 010 0ss eee eee MOVE SR 0100 011 011 eee eee NOT 0100 011 0ss eee eee LINK.L 0100 100 000 001 rrr NBCD 0100 100 000 eee eee SWAP 0100 100 001 000 rrr BKPT 0100 100 001 001 vvv PEA 0100 100 001 eee eee EXT 0100 100 01s 000 rrr EXTB 0100 100 111 000 rrr HALT 0100 101 011 001 000 PULSE 0100 101 011 001 100 BGND 0100 101 011 111 010 ILLEGAL 0100 101 011 111 100 ; sysV68: swbeg.w SWBEGL 0100 101 011 111 101 ; sysV68 TAS 0100 101 011 eee eee TST 0100 101 0ss eee eee MULS/U 0100 110 000 eee eee DIVS/U 0100 110 001 eee eee SATS 0100 110 010 000 rrr MOVEM 0100 1d0 01s eee eee TRAP 0100 111 001 00v vvv LINK 0100 111 001 010 rrr UNLK 0100 111 001 011 rrr MOVE USP 0100 111 001 10d rrr RESET 0100 111 001 110 000 NOP 0100 111 001 110 001 STOP 0100 111 001 110 010 RTE 0100 111 001 110 011 RTD 0100 111 001 110 100 RTS 0100 111 001 110 101 TRAPV 0100 111 001 110 110 RTR 0100 111 001 110 111 MOVEC 0100 111 001 111 01d JSR 0100 111 010 eee eee JMP 0100 111 011 eee eee LEA 0100 rrr 111 eee eee CHK 0100 rrr ss0 eee eee DBcc 0101 ccc c11 001 rrr TRAPcc 0101 ccc c11 111 sss Scc 0101 ccc c11 eee eee ADDQ 0101 iii 0ss eee eee SUBQ 0101 iii 1ss eee eee BRA 0110 000 0dd ddd ddd BSR 0110 000 1dd ddd ddd Bcc 0110 ccc cdd ddd ddd MVS 0111 rrr 10s eee eee MVZ 0111 rrr 11s eee eee MOVEQ 0111 rrr 0ii iii iii DIVU 1000 rrr 011 eee eee SBCD 1000 rrr 100 00m rrr PACK 1000 rrr 101 00m rrr UNPK 1000 rrr 110 00m rrr DIVS 1000 rrr 111 eee eee OR 1000 rrr ooo eee eee SUBX 1001 rrr 1ss 00m rrr SUB 1001 rrr oss eee eee SUBA 1001 rrr s11 eee eee MOV3Q 1010 iii 101 eee eee MOVCLR 1010 0aa 111 00r rrr MOVACC 1010 0aa 110 00r rrr MOVMACSR 1010 100 100 eee eee MOVACCEXT01 1010 101 110 00r rrr MOVACCEXT23 1010 111 110 00r rrr MOVMACSR 1010 100 110 00r rrr MAC 1010 xxx 0ax 00y yyy LINEA 1010 xxx xxx xxx xxx CMPA 1011 rrr s11 eee eee CMPM 1011 rrr 1ss 001 eee EOR 1011 rrr 1ss eee eee CMP 1011 rrr ooo eee eee MULU 1100 rrr 011 eee eee ABCD 1100 rrr 100 00m rrr EXG 1100 rrr 101 000 rrr EXG 1100 rrr 101 001 rrr EXG 1100 rrr 110 001 rrr MULS 1100 rrr 111 eee eee AND 1100 rrr ooo eee eee ADDX 1101 rrr 1ss 00m rrr ADDA 1101 rrr s11 eee eee ADD 1101 rrr oss eee eee BFTST 1110 100 011 eee eee BFEXTU 1110 100 111 eee eee BFCHG 1110 101 011 eee eee BFEXTS 1110 101 111 eee eee BFCLR 1110 110 011 eee eee BFFFO 1110 110 111 eee eee BFSET 1110 111 011 eee eee BFINS 1110 111 111 eee eee ASR 1110 rrr 0ss i00 eee ASL 1110 rrr 1ss i00 eee LSR 1110 rrr 0ss i01 eee LSL 1110 rrr 1ss i01 eee ROXL 1110 rrr 0ss i10 eee ROXR 1110 rrr 1ss i10 eee ROL 1110 rrr 0ss i11 eee ROR 1110 rrr 1ss i11 eee MOVE16 1111 011 000 100 rrr cpGEN 1111 ppp 000 eee eee cpDBcc 1111 ppp 001 001 rrr cpTRAPcc 1111 ppp 001 111 sss cpScc 1111 ppp 001 eee eee cpBcc 1111 ppp 01s ccc ccc */ #define dstreg(opcode) (((opcode) >> 9) & 7) #define dstmod(opcode) (((opcode) >> 6) & 7) #define srcmod(opcode) (((opcode) >> 3) & 7) #define srcreg(opcode) (((opcode) ) & 7) #define insize(ocpode) (((opcode) >> 6) & 3) #define sputc(c) *(((struct priv_data *)(info->disasm_data))->lp)++ = c #define pcomma(info) sputc(',') #define GETUW(a) ((uae_u16)phys_get_word(a)) #define GETW(a) ((uae_s16)phys_get_word(a)) #define GETL(a) ((uae_s32)phys_get_long(a)) #define GETUL(a) ((uae_u32)phys_get_long(a)) struct priv_data { memptr oldaddr; char *lp; }; #define REG_PC 8 enum fpu_size { FPU_SIZE_LONG = 4, FPU_SIZE_SINGLE, FPU_SIZE_EXTENDED, FPU_SIZE_PACKED, FPU_SIZE_WORD, FPU_SIZE_DOUBLE, FPU_SIZE_BYTE, FPU_SIZE_PACKED_VARIABLE }; static const char *const fpregs[8] = { "fp0","fp1","fp2","fp3","fp4","fp5","fp6","fp7" }; static const char *const fpcregs[3] = { "fpiar", "fpsr", "fpcr" }; #if defined(__WIN32__) || defined(_WIN32) # define NO_LONGDOUBLE_PRINTF #endif #if defined(SIZEOF_LONG_DOUBLE) && defined(SIZEOF_DOUBLE) && (SIZEOF_LONG_DOUBLE == SIZEOF_DOUBLE) /* * Android currently has some functions commented out in the math.h header file, * even if autoconf detects them to be present. */ #undef logl #define logl(x) ((long double)log((double)(x))) #undef powl #define powl(x, y) ((long double)pow((double)(x), (double)(y))) #undef ldexpl #define ldexpl(x, y) ((long double)ldexp((double)(x), y)) #endif /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static const char *const condtable[] = { "t", "f", "hi", "ls", "cc", "cs", "ne", "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le" }; static const char *const pmmucondtable[64] = { "bs", "bc", "ls", "lc", "ss", "sc", "as", "ac", "ws", "wc", "is", "ic", "gs", "gc", "cs", "cc", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??" }; static const char *const cpcondtable[64] = { "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??" }; static const char *const fpucondtable[64] = { "f", "eq", "ogt", "oge", "olt", "ole", "ogl", "or", "un", "ueq", "ugt", "uge", "ult", "ule", "ne", "t", "sf", "seq", "gt", "ge", "lt", "le", "gl", "gle", "ngle","ngl", "nle", "nlt", "nge", "ngt", "sne", "st", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???" }; static const char *const bittable[] = { "btst", "bchg", "bclr", "bset" }; static const char *const immedtable[] = { "ori", "andi", "subi", "addi", "???", "eori", "cmpi", "???" }; static const char *const shfttable[] = { "as", "ls", "rox", "ro" }; static const char *const bitfieldtable[] = { "bftst", "bfextu", "bfchg", "bfexts", "bfclr", "bfffo", "bfset", "bfins" }; /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void ps(m68k_disasm_info *info, const char *str) { register char c; while ((c = *str++) != '\0') { sputc(c); } } /*** ---------------------------------------------------------------------- ***/ static void startoperands(m68k_disasm_info *info) { #if 0 while (((info->lp - info->asmline) % 10) != 0) sputc(' '); #else sputc('\0'); ((struct priv_data *)(info->disasm_data))->lp = info->operands; #endif } /*** ---------------------------------------------------------------------- ***/ static void only_if(m68k_disasm_info *info, const char *cpu) { if (*info->comments == '\0') { strcat(info->comments, cpu); strcat(info->comments, " only"); } } #define only_68020() only_if(info, "68020+") #define only_cf(rev) only_if(info, "ColdFire " rev) /*** ---------------------------------------------------------------------- ***/ static void pudec(m68k_disasm_info *info, uae_u32 x) { char buf[20]; char *cp; cp = buf + sizeof(buf); *--cp = '\0'; if (x != 0) { while (x) { *--cp = (char) (x % 10 + '0'); x /= 10; } } else { *--cp = '0'; } ps(info, cp); } /*** ---------------------------------------------------------------------- ***/ static void psdec(m68k_disasm_info *info, uae_s32 val) { if (val < 0) { sputc('-'); val = -val; } pudec(info, val); } /*** ---------------------------------------------------------------------- ***/ #if 0 static void pfloat(m68k_disasm_info *info, double val) { gcvt(val, 6, ((struct priv_data *)(info->disasm_data))->lp); while (*(((struct priv_data *)(info->disasm_data))->lp) != '\0') (((struct priv_data *)(info->disasm_data))->lp)++; } #endif /*** ---------------------------------------------------------------------- ***/ static void pbyte(m68k_disasm_info *info, unsigned short val) { unsigned short c; val &= 0xff; c = val >> 4; c = c >= 10 ? (c + 'A' - 10) : (c + '0'); sputc(c); c = val & 0x0f; c = c >= 10 ? (c + 'A' - 10) : (c + '0'); sputc(c); } /*** ---------------------------------------------------------------------- ***/ static void p2hex(m68k_disasm_info *info, unsigned short val) { sputc('$'); pbyte(info, val); } /*** ---------------------------------------------------------------------- ***/ static void p4hex0(m68k_disasm_info *info, unsigned short val) { pbyte(info, val >> 8); pbyte(info, val); } /*** ---------------------------------------------------------------------- ***/ static void p4hex(m68k_disasm_info *info, unsigned short val) { sputc('$'); p4hex0(info, val); } /*** ---------------------------------------------------------------------- ***/ static void p8hex(m68k_disasm_info *info, uae_u32 val) { sputc('$'); p4hex0(info, (unsigned short) (val >> 16)); p4hex0(info, (unsigned short) (val)); } /*** ---------------------------------------------------------------------- ***/ static void pcond(m68k_disasm_info *info, int cond) { ps(info, condtable[cond]); } /*** ---------------------------------------------------------------------- ***/ static void odcw(m68k_disasm_info *info, int val) { ps(info, "dc.w"); startoperands(info); p4hex(info, val); info->num_oper = 1; } /*** ---------------------------------------------------------------------- ***/ static void od(m68k_disasm_info *info, int regnum) { sputc('d'); if (regnum >= 0 && regnum <= 7) sputc(regnum + '0'); else sputc('?'); } /*** ---------------------------------------------------------------------- ***/ static void oa(m68k_disasm_info *info, int regnum) { if (regnum == REG_PC) { ps(info, "pc"); } else { sputc('a'); sputc(regnum + '0'); } } /*** ---------------------------------------------------------------------- ***/ static void oad(m68k_disasm_info *info, int regnum) { if (regnum & 0xfff8) oa(info, regnum & 7); else od(info, regnum & 7); } /*** ---------------------------------------------------------------------- ***/ static void oddstreg(m68k_disasm_info *info, int opcode) { od(info, dstreg(opcode)); } /*** ---------------------------------------------------------------------- ***/ static void oai(m68k_disasm_info *info, int regnum) { sputc('('); oa(info, regnum); sputc(')'); } /*** ---------------------------------------------------------------------- ***/ static void oadi(m68k_disasm_info *info, int regnum) { sputc('('); oad(info, regnum); sputc(')'); } /*** ---------------------------------------------------------------------- ***/ static int os(m68k_disasm_info *info, int opcode) { register int size; size = insize(opcode); sputc('.'); sputc(size == 2 ? 'l' : size == 1 ? 'w' : size == 0 ? 'b' : '?'); startoperands(info); return size; } /*** ---------------------------------------------------------------------- ***/ static int os2(m68k_disasm_info *info, int opcode) { register int size; size = (opcode >> 9) & 3; sputc('.'); sputc(size == 3 ? 'l' : size == 2 ? 'w' : size == 1 ? 'b' : '?'); startoperands(info); return size; } /*** ---------------------------------------------------------------------- ***/ static int osa(m68k_disasm_info *info, int opcode, int mask) { sputc('.'); sputc(opcode & mask ? 'l' : 'w'); startoperands(info); return opcode & mask ? 2 : 1; } /*** ---------------------------------------------------------------------- ***/ static float make_single(uae_u32 value) { float frac, result; int sign = (value & 0x80000000) != 0; if ((value & 0x7fffffff) == 0) return sign ? -0.0 : 0.0; if ((value & 0x7f800000) == 0x7f800000) { if ((value & 0x003fffff) == 0) return sign ? -1.0 / 0.0 : 1.0 / 0.0; return sign ? -log(-1) : log(-1); } frac = (float) ((value & 0x7fffff) | 0x800000) / 8388608.0; if (sign) frac = -frac; result = ldexp(frac, (int)((value >> 23) & 0xff) - 127); return result; } static double make_double(uae_u32 wrd1, uae_u32 wrd2) { double frac, result; int sign = (wrd1 & 0x80000000) != 0; if ((wrd1 & 0x7fffffff) == 0 && wrd2 == 0) return sign ? -0.0 : 0.0; if ((wrd1 & 0x7ff00000) == 0x7ff00000) { if ((wrd1 & 0x0007ffff) == 0) return sign ? -1.0 / 0.0 : 1.0 / 0.0; return sign ? -log(-1) : log(-1); } frac = (double) ((wrd1 & 0x000fffff) | 0x100000) / 1048576.0 + (double) wrd2 / 4503599627370496.0; if (wrd1 & 0x80000000) frac = -frac; result = ldexp(frac, (int)((wrd1 >> 20) & 0x7ff) - 1023); return result; } static long double make_extended(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3) { long double frac, result; int sign = (wrd1 & 0x80000000) != 0; uae_u32 exp = (wrd1 >> 16) & 0x7fff; if (exp == 0 && wrd2 == 0 && wrd3 == 0) return sign ? -0.0L : 0.0L; if (exp == 0x7fff) { if ((wrd2 & 0x3fffffff) == 0) return sign ? -1.0L / 0.0L : 1.0L / 0.0L; return sign ? -logl(-1) : logl(-1); } frac = (long double) ((wrd2 & 0x7fffffff) | 0x80000000) / 2147483648.0L + (long double) wrd3 / 9223372036854775808.0L; if (sign) frac = -frac; result = ldexpl(frac, (int)exp - 16383); return result; } static long double make_packed(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3) { long double d; bool sign = (wrd1 & 0x80000000) != 0; bool se = (wrd1 & 0x40000000) != 0; int exp = (wrd1 & 0x0fff0000) >> 16; unsigned int dig; long double pwr; if (exp == 0xfff) { if (wrd2 == 0 && wrd3 == 0) { return sign ? -1.0L / 0.0L : 1.0L / 0.0L; } else { return sign ? -logl(-1) : logl(-1); } } dig = wrd1 & 0x0000000f; if (dig == 0 && wrd2 == 0 && wrd3 == 0) { return sign ? -0.0L : 0.0L; } /* * Convert the bcd exponent to binary by successive adds and * muls. Set the sign according to SE. Subtract 16 to compensate * for the mantissa which is to be interpreted as 17 integer * digits, rather than 1 integer and 16 fraction digits. * Note: this operation can never overflow. */ exp = ((wrd1 >> 24) & 0xf); exp = exp * 10 + ((wrd1 >> 20) & 0xf); exp = exp * 10 + ((wrd1 >> 16) & 0xf); if (se) exp = -exp; /* sub to compensate for shift of mant */ exp = exp - 16; /* * Convert the bcd mantissa to binary by successive * adds and muls. Set the sign according to SM. * The mantissa digits will be converted with the decimal point * assumed following the least-significant digit. * Note: this operation can never overflow. */ d = wrd1 & 0xf; d = d * 10.0L + ((wrd2 >> 28) & 0xf); d = d * 10.0L + ((wrd2 >> 24) & 0xf); d = d * 10.0L + ((wrd2 >> 20) & 0xf); d = d * 10.0L + ((wrd2 >> 16) & 0xf); d = d * 10.0L + ((wrd2 >> 12) & 0xf); d = d * 10.0L + ((wrd2 >> 8) & 0xf); d = d * 10.0L + ((wrd2 >> 4) & 0xf); d = d * 10.0L + ((wrd2 ) & 0xf); d = d * 10.0L + ((wrd3 >> 28) & 0xf); d = d * 10.0L + ((wrd3 >> 24) & 0xf); d = d * 10.0L + ((wrd3 >> 20) & 0xf); d = d * 10.0L + ((wrd3 >> 16) & 0xf); d = d * 10.0L + ((wrd3 >> 12) & 0xf); d = d * 10.0L + ((wrd3 >> 8) & 0xf); d = d * 10.0L + ((wrd3 >> 4) & 0xf); d = d * 10.0L + ((wrd3 ) & 0xf); /* Check the sign of the mant and make the value in fp0 the same sign. */ if (sign) d = -d; /* * Calculate power-of-ten factor from exponent. */ if (exp < 0) { exp = -exp; pwr = powl(10.0L, exp); d = d / pwr; } else { pwr = powl(10.0L, exp); d = d * pwr; } return d; } /*** ---------------------------------------------------------------------- ***/ static void oi(m68k_disasm_info *info, int size, bool immed) { char str[100]; if (immed) sputc('#'); switch (size) { case 2: p8hex(info, GETL(info->memory_vma)); info->memory_vma += 4; break; case 1: p4hex(info, GETUW(info->memory_vma)); info->memory_vma += 2; break; case 0: p2hex(info, (uae_s32) ((signed char) (GETW(info->memory_vma) & 0xff))); info->memory_vma += 2; break; case FPU_SIZE_LONG: psdec(info, GETL(info->memory_vma)); info->memory_vma += 4; break; case FPU_SIZE_SINGLE: sprintf(str, "%.17e", make_single(GETUL(info->memory_vma))); ps(info, str); info->memory_vma += 4; break; case FPU_SIZE_EXTENDED: #ifdef NO_LONGDOUBLE_PRINTF sprintf(str, "%.17e", (double) make_extended(GETUL(info->memory_vma), GETUL(info->memory_vma + 4), GETUL(info->memory_vma + 8))); #else sprintf(str, "%.17Le", make_extended(GETUL(info->memory_vma), GETUL(info->memory_vma + 4), GETUL(info->memory_vma + 8))); #endif ps(info, str); info->memory_vma += 12; break; case FPU_SIZE_PACKED: #ifdef NO_LONGDOUBLE_PRINTF sprintf(str, "%.17e", (double) make_packed(GETUL(info->memory_vma), GETUL(info->memory_vma + 4), GETUL(info->memory_vma + 8))); #else sprintf(str, "%.17Le", make_packed(GETUL(info->memory_vma), GETUL(info->memory_vma + 4), GETUL(info->memory_vma + 8))); #endif ps(info, str); info->memory_vma += 12; break; case FPU_SIZE_WORD: psdec(info, GETW(info->memory_vma)); info->memory_vma += 2; break; case FPU_SIZE_DOUBLE: sprintf(str, "%.17e", make_double(GETUL(info->memory_vma), GETUL(info->memory_vma + 4))); ps(info, str); info->memory_vma += 8; break; case FPU_SIZE_BYTE: psdec(info, (uae_s32) ((signed char) (GETW(info->memory_vma) & 0xff))); info->memory_vma += 2; break; case FPU_SIZE_PACKED_VARIABLE: #ifdef NO_LONGDOUBLE_PRINTF sprintf(str, "%.17e", (double) make_packed(GETUL(info->memory_vma), GETUL(info->memory_vma + 4), GETUL(info->memory_vma + 8))); #else sprintf(str, "%.17Le", make_packed(GETUL(info->memory_vma), GETUL(info->memory_vma + 4), GETUL(info->memory_vma + 8))); #endif ps(info, str); info->memory_vma += 12; break; } } /*** ---------------------------------------------------------------------- ***/ static void pscale(m68k_disasm_info *info, int opcode) { switch (opcode & 0x600) { case 0x0200: ps(info, "*2"); only_68020(); break; case 0x0400: ps(info, "*4"); only_68020(); break; case 0x0600: ps(info, "*8"); only_68020(); break; } } /*** ---------------------------------------------------------------------- ***/ static void doextended(m68k_disasm_info *info, int opcode2, int srcr) { uae_s32 disp; uae_s32 outer; bool con2 = false; int bd = (opcode2 & 0x30) >> 4; bool bs = (opcode2 & 0x80) != 0; int iis; uae_u32 relpc = info->reloffset + ((struct priv_data *)(info->disasm_data))->oldaddr; only_68020(); switch (bd) { case 2: disp = GETW(info->memory_vma); info->memory_vma += 2; break; case 3: disp = GETL(info->memory_vma); info->memory_vma += 4; break; case 1: disp = 0; break; case 0: default: disp = 0; strcat(info->comments, "; reserved BD=0"); break; } switch (opcode2 & 0x47) { case 0x00: /* no memory indirect */ outer = 0; iis = 0; break; case 0x01: /* Indirect Preindexed with Null Outer Displacement */ outer = 0; iis = 1; break; case 0x02: iis = 2; /* Indirect Preindexed with Word Outer Displacement */ outer = GETW(info->memory_vma); info->memory_vma += 2; break; case 0x03: iis = 3; /* Indirect Preindexed with Long Outer Displacement */ outer = GETL(info->memory_vma); info->memory_vma += 4; break; case 0x04: iis = 4; /* reserved */ outer = 0; strcat(info->comments, "; reserved OD=0"); break; case 0x05: iis = 5; /* Indirect Postindexed with Null Outer Displacement */ outer = 0; break; case 0x06: iis = 6; /* Indirect Postindexed with Word Outer Displacement */ outer = GETW(info->memory_vma); info->memory_vma += 2; break; case 0x07: iis = 7; /* Indirect Postindexed with Long Outer Displacement */ outer = GETL(info->memory_vma); info->memory_vma += 4; break; case 0x40: iis = 0; /* no memory indirect */ outer = 0; break; case 0x41: iis = 1; /* Memory Indirect with Null Outer Displacement */ outer = 0; break; case 0x42: iis = 2; /* Memory Indirect with Word Outer Displacement */ outer = GETW(info->memory_vma); info->memory_vma += 2; break; case 0x43: iis = 3; /* Memory Indirect with Long Outer Displacement */ outer = GETL(info->memory_vma); info->memory_vma += 4; break; case 0x44: default: iis = 4; outer = 0; strcat(info->comments, "; reserved OD=0"); break; case 0x45: iis = 5; outer = 0; strcat(info->comments, "; reserved OD=1"); break; case 0x46: iis = 6; outer = GETW(info->memory_vma); info->memory_vma += 2; strcat(info->comments, "; reserved OD=2"); break; case 0x47: iis = 7; outer = GETL(info->memory_vma); info->memory_vma += 4; strcat(info->comments, "; reserved OD=3"); break; } sputc('('); if (iis != 0) sputc('['); if (bd == 3) { if (srcr != REG_PC || (srcr == REG_PC && bs)) p8hex(info, disp); else p8hex(info, relpc + disp); con2 = true; } else if (bd == 2) { if (srcr != REG_PC || (srcr == REG_PC && bs)) p4hex(info, disp); else p8hex(info, relpc + disp); con2 = true; } if (srcr == REG_PC) { if (con2) pcomma(info); if (bs) sputc('z'); oa(info, srcr); con2 = true; } else { if (!bs) { if (con2) pcomma(info); oa(info, srcr); con2 = true; } } if (iis >= 0x4) { sputc(']'); con2 = true; } if ((opcode2 & 0x40) == 0) { if (con2) pcomma(info); oad(info, (opcode2 >> 12) & 0x0f); ps(info, opcode2 & 0x0800 ? ".l" : ".w"); } pscale(info, opcode2); if (iis < 0x4 && iis > 0) { sputc(']'); } if ((opcode2 & 0x03) >= 0x02) { sputc(','); if ((opcode2 & 0x03) >= 0x03) p8hex(info, outer); else p4hex(info, outer); } sputc(')'); } static void doea(m68k_disasm_info *info, int opcode, int size) { register int srcr; register int opcode2; uae_s32 offset; register uae_s32 adr; srcr = srcreg(opcode); switch (srcmod(opcode)) { case 0: /* Datenregister direkt */ od(info, srcr); break; case 1: /* Adressregister direkt */ oa(info, srcr); break; case 2: /* Adressregister indirekt */ oai(info, srcr); break; case 3: /* Adressregister indirekt mit Postinkrement */ oai(info, srcr); sputc('+'); break; case 4: /* Adressregister indirekt mit Predecrement */ sputc('-'); oai(info, srcr); break; case 5: /* Adressregister indirekt mit Offset */ psdec(info, (uae_s32) (GETW(info->memory_vma))); info->memory_vma += 2; oai(info, srcr); break; case 6: /* Adressregister indirekt indiziert mit Offset */ opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; if (opcode2 & 0x100) { doextended(info, opcode2, srcr); } else { offset = opcode2 & 0xff; psdec(info, (uae_s32) (char) offset); sputc('('); oa(info, srcr); pcomma(info); oad(info, (opcode2 >> 12) & 0x0f); ps(info, opcode2 & 0x0800 ? ".l" : ".w"); pscale(info, opcode2); sputc(')'); } break; case 7: switch (srcr) { case 0: /* Absolut kurz */ sputc('('); adr = GETW(info->memory_vma); info->memory_vma += 2; p8hex(info, adr); ps(info, ").w"); break; case 1: /* Absolut lang */ adr = GETL(info->memory_vma); info->memory_vma += 4; p8hex(info, adr); break; case 2: /* PC-relative */ adr = ((struct priv_data *)(info->disasm_data))->oldaddr + GETW(info->memory_vma) + info->reloffset; info->memory_vma += 2; p8hex(info, adr); oai(info, REG_PC); break; case 3: /* PC-relative indiziert */ opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; if (opcode2 & 0x100) { doextended(info, opcode2, REG_PC); } else { adr = (uae_s32)(signed char)(opcode2 & 0xff) + info->reloffset + ((struct priv_data *)(info->disasm_data))->oldaddr; p8hex(info, adr); sputc('('); oa(info, REG_PC); pcomma(info); oad(info, (opcode2 >> 12) & 0x0f); ps(info, opcode2 & 0x0800 ? ".l" : ".w"); pscale(info, opcode2); sputc(')'); } break; case 4: /* immediate */ oi(info, size, true); break; default: ps(info, "???"); break; } } } /*** ---------------------------------------------------------------------- ***/ static void reglist(m68k_disasm_info *info, int regmask) { register int regnum; int liststart; int lastreg; int status; liststart = status = 0; lastreg = 20; for (regnum = 0; regnum < 16; regnum++) { if ((1 << regnum) & regmask) { if (regnum == (lastreg + 1) && regnum != 8) { if (liststart != 0) sputc('-'); liststart = 0; status = 1; lastreg = regnum; } else { if (status != 0) { oad(info, lastreg); status = 0; liststart = 1; } if (liststart != 0) sputc('/'); oad(info, regnum); lastreg = regnum; liststart = 1; } } } if (status != 0) oad(info, lastreg); } /*** ---------------------------------------------------------------------- ***/ static int revbits(int mask, int n) { register int i; register int newmask; for (newmask = 0, i = n; i > 0; i--) { newmask = (newmask << 1) | (mask & 1); mask >>= 1; } return newmask; } /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void group0(m68k_disasm_info *info, int opcode) { unsigned int opcode2; int size; if (opcode & 0x0100) { if (srcmod(opcode) != 1) { /* 0000 rrr 1 xx yyyyyy */ ps(info, bittable[insize(opcode)]); startoperands(info); oddstreg(info, opcode); pcomma(info); doea(info, opcode, 0); info->num_oper = 2; } else { /* 0000 000 1xx 001 yyy */ ps(info, "movep"); ps(info, opcode & 0x0040 ? ".l" : ".w"); startoperands(info); if (opcode & 0x0080) { oddstreg(info, opcode); pcomma(info); psdec(info, GETW(info->memory_vma)); info->memory_vma += 2; oai(info, srcreg(opcode)); } else { psdec(info, GETW(info->memory_vma)); info->memory_vma += 2; oai(info, srcreg(opcode)); pcomma(info); oddstreg(info, opcode); } info->num_oper = 2; } } else { switch (opcode2 = dstreg(opcode)) { case 4: /* 0000 100 0ss yyy yyy */ ps(info, bittable[insize(opcode)]); startoperands(info); sputc('#'); psdec(info, GETW(info->memory_vma)); info->memory_vma += 2; pcomma(info); doea(info, opcode, 0); info->num_oper = 2; break; default: if (insize(opcode) == 3) { switch (opcode2) { case 0: /* 0000 000 011 xxx yyy */ switch (srcmod(opcode)) { case 2: case 5: case 6: case 7: opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; ps(info, opcode2 & 0x0800 ? "chk2.b" : "cmp2.b"); startoperands(info); doea(info, opcode, 0); pcomma(info); oad(info, (opcode2 >> 12) & 0x0f); info->num_oper = 2; only_68020(); break; case 0: ps(info, "bitrev.l"); startoperands(info); od(info, srcreg(opcode)); info->num_oper = 1; only_cf("isa_c"); break; default: odcw(info, opcode); break; } break; case 1: /* 0000 001 011 xxx yyy */ switch (srcmod(opcode)) { case 2: case 5: case 6: case 7: opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; ps(info, opcode2 & 0x0800 ? "chk2.w" : "cmp2.w"); startoperands(info); doea(info, opcode, 0); pcomma(info); oad(info, (opcode2 >> 12) & 0x0f); info->num_oper = 2; only_68020(); break; case 0: ps(info, "byterev.l"); startoperands(info); od(info, srcreg(opcode)); info->num_oper = 1; only_cf("isa_c"); break; default: odcw(info, opcode); break; } break; case 2: /* 0000 010 011 xxx yyy */ switch (srcmod(opcode)) { case 2: case 5: case 6: case 7: opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; ps(info, opcode2 & 0x0800 ? "chk2.l" : "cmpl.w"); startoperands(info); doea(info, opcode, 1); pcomma(info); oad(info, (opcode2 >> 12) & 0x0f); info->num_oper = 2; only_68020(); break; case 0: ps(info, "ff1.l"); startoperands(info); od(info, srcreg(opcode)); info->num_oper = 1; only_cf("isa_c"); break; default: odcw(info, opcode); break; } break; case 3: /* 0000 011 011 xxx yyy */ if ((opcode & 0x0030) == 0) { ps(info, "rtm"); startoperands(info); oad(info, opcode); info->num_oper = 1; only_if(info, "68020"); } else { ps(info, "callm"); startoperands(info); oi(info, 1, true); pcomma(info); doea(info, opcode, 0); info->num_oper = 2; only_if(info, "68020"); } break; case 5: case 6: case 7: /* 0000 101 011 xxx yyy */ /* 0000 110 011 xxx yyy */ /* 0000 111 011 xxx yyy */ if ((opcode & 0x3f) == 0x3c) { unsigned int opcode3; opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; opcode3 = GETUW(info->memory_vma); info->memory_vma += 2; ps(info, "cas2"); os2(info, opcode); od(info, opcode2 & 0x07); sputc(':'); od(info, opcode3 & 0x07); pcomma(info); od(info, (opcode2 >> 6) & 0x07); sputc(':'); od(info, (opcode3 >> 6) & 0x07); pcomma(info); oadi(info, (opcode2 >> 12) & 0x0f); pcomma(info); oadi(info, (opcode3 >> 12) & 0x0f); } else { opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; ps(info, "cas"); os2(info, opcode); od(info, opcode2 & 0x07); pcomma(info); od(info, (opcode2 >> 6) & 0x07); pcomma(info); doea(info, opcode, 0); } only_68020(); info->num_oper = 3; break; default: odcw(info, opcode); break; } } else if (opcode2 == 7) { /* 0000 111 0ss yyy yyy */ ps(info, "moves"); os(info, opcode); opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; if (opcode2 & 0x0800) { oad(info, (opcode2 >> 12) & 0x0f); pcomma(info); doea(info, opcode, 0); } else { doea(info, opcode, 0); pcomma(info); oad(info, (opcode2 >> 12) & 0x0f); } info->num_oper = 2; } else { ps(info, immedtable[opcode2]); size = os(info, opcode); oi(info, size, true); pcomma(info); if ((opcode & 0x003f) == 0x003c) { ps(info, opcode & 0x0040 ? "sr" : "ccr"); } else { doea(info, opcode, size); } info->num_oper = 2; } break; } } } /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void group11(m68k_disasm_info *info, int opcode) { register int size; if ((opcode & 0x0100) != 0 && insize(opcode) != 3) { if (srcmod(opcode) == 1) { ps(info, "cmpm"); os(info, opcode); oai(info, srcreg(opcode)); sputc('+'); pcomma(info); oai(info, dstreg(opcode)); sputc('+'); } else { ps(info, "eor"); size = os(info, opcode); oddstreg(info, opcode); pcomma(info); doea(info, opcode, size); } } else { ps(info, "cmp"); switch (dstmod(opcode)) { case 3: case 7: sputc('a'); size = osa(info, opcode, 0x0100); doea(info, opcode, size); pcomma(info); oa(info, dstreg(opcode)); break; default: size = os(info, opcode); doea(info, opcode, size); pcomma(info); oddstreg(info, opcode); break; } } info->num_oper = 2; } /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void group1(m68k_disasm_info *info, int opcode) { register int size = 0; ps(info, "move"); if (dstmod(opcode) == 1) sputc('a'); sputc('.'); switch (opcode >> 12) { case 1: /* move.b */ sputc('b'); size = 0; break; case 2: /* move.l */ sputc('l'); size = 2; break; case 3: /* move.w */ sputc('w'); size = 1; break; } startoperands(info); doea(info, opcode, size); pcomma(info); doea(info, (dstmod(opcode) << 3) | dstreg(opcode), size); info->num_oper = 2; } /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void group14(m68k_disasm_info *info, int opcode) { register short size; unsigned int opcode2; unsigned int bf; if ((size = insize(opcode)) == 3 && (opcode & 0x0800) == 0) { ps(info, shfttable[(opcode >> 9) & 3]); sputc(opcode & 0x0100 ? 'l' : 'r'); ps(info, ".b"); startoperands(info); doea(info, opcode, size); info->num_oper = 1; } else if (size == 3 && (opcode & 0x0800) != 0) { uae_u16 cmd = (opcode >> 8) & 7; only_68020(); ps(info, bitfieldtable[cmd]); startoperands(info); opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; info->num_oper = 1; if (cmd == 0x7) /* bfins */ { od(info, (opcode2 >> 12) & 0x7); pcomma(info); info->num_oper = 2; } doea(info, opcode, size); sputc('{'); bf = (opcode2 >> 6) & 0x1f; if (opcode2 & 0x800) od(info, bf); else pudec(info, bf); sputc(':'); bf = opcode2 & 0x1f; if (opcode2 & 0x20) { od(info, bf); } else { if (bf == 0) bf = 32; pudec(info, bf); } sputc('}'); if ((opcode & 0x100) && cmd != 0x7) { pcomma(info); od(info, (opcode2 >> 12) & 0x7); info->num_oper = 2; } } else { ps(info, shfttable[(opcode >> 3) & 3]); sputc(opcode & 0x0100 ? 'l' : 'r'); os(info, opcode); if (opcode & 0x0020) { oddstreg(info, opcode); } else { sputc('#'); psdec(info, dstreg(opcode) != 0 ? dstreg(opcode) : 8); } pcomma(info); od(info, srcreg(opcode)); info->num_oper = 2; } } /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void pmmureg(m68k_disasm_info *info, int preg, int num) { switch (preg) { case 0x02: ps(info, "tt0"); break; case 0x03: ps(info, "tt1"); break; case 0x10: ps(info, "tc"); break; case 0x11: ps(info, "drp"); break; case 0x12: ps(info, "srp"); break; case 0x13: ps(info, "crp"); break; case 0x14: ps(info, "cal"); break; case 0x15: ps(info, "val"); break; case 0x16: ps(info, "scc"); break; case 0x17: ps(info, "ac"); break; case 0x18: ps(info, "psr"); break; case 0x19: ps(info, "pcsr"); break; case 0x1c: ps(info, "bad"); sputc(num + '0'); break; case 0x1d: ps(info, "bac"); sputc(num + '0'); break; default: ps(info, "???"); break; } } /*** ---------------------------------------------------------------------- ***/ static void group_pmmu_030(m68k_disasm_info *info, int opcode) { unsigned int opcode2; uae_s32 adr; switch ((opcode >> 6) & 0x07) { case 0: opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; info->reloffset += 2; switch (opcode2 & 0xE000) { case 0x0000: case 0x4000: case 0x6000: { int r; r = (opcode2 >> 10) & 0x1f; ps(info, "pmove"); if (opcode2 & 0x100) ps(info, "fd"); if (r == 0x11 || r == 0x12 || r == 0x13) ps(info, ".q"); else if (r == 0x18) ps(info, ".w"); else ps(info, ".l"); startoperands(info); if (opcode2 & 0x0200) { pmmureg(info, r, (opcode2 >> 2) & 0x07); pcomma(info); doea(info, opcode, 0); } else { doea(info, opcode, 0); pcomma(info); pmmureg(info, r, (opcode2 >> 2) & 0x07); } } info->num_oper = 2; break; case 0x2000: switch (opcode2 & 0x1c00) { case 0x0400: ps(info, "pflusha"); info->num_oper = 0; break; case 0x1000: case 0x1400: case 0x1800: case 0x1c00: ps(info, "pflush"); if (opcode2 & 0x400) sputc('s'); startoperands(info); switch (opcode2 & 0x18) { case 0x10: case 0x18: sputc('#'); p2hex(info, opcode2 & 0x0f); break; case 0x08: od(info, opcode2 & 0x07); break; case 0x00: ps(info, opcode2 & 1 ? "dfc" : "sfc"); break; } pcomma(info); sputc('#'); p2hex(info, (opcode2 >> 5) & 0x07); if (opcode2 & 0x0800) { pcomma(info); info->num_oper = 3; doea(info, opcode, 0); } else { info->num_oper = 2; } break; case 0x0000: if ((opcode2 & 0x01de0) == 0x0000) { ps(info, "pload"); sputc(opcode2 & 0x200 ? 'r' : 'w'); startoperands(info); switch (opcode2 & 0x18) { case 0x10: case 0x18: sputc('#'); p2hex(info, opcode2 & 0x0f); break; case 0x08: od(info, opcode2 & 0x07); break; case 0x00: ps(info, opcode2 & 1 ? "dfc" : "sfc"); break; } pcomma(info); doea(info, opcode, 0); info->num_oper = 2; } else { info->memory_vma -= 2; odcw(info, opcode); } break; case 0x0800: ps(info, "pvalid"); startoperands(info); doea(info, opcode, 1); info->num_oper = 1; break; default: info->memory_vma -= 2; odcw(info, opcode); break; } break; case 0xa000: ps(info, "pflushr"); startoperands(info); doea(info, opcode, 0); info->num_oper = 1; break; case 0x8000: ps(info, "ptest"); sputc(opcode2 & 0x0200 ? 'r' : 'w'); startoperands(info); info->num_oper = 3; switch ((opcode2 >> 3) & 0x03) { case 0x00: if ((opcode2 & 7) == 0) ps(info, "sfc"); else ps(info, "dfc"); break; case 0x01: od(info, opcode2 & 0x07); break; case 0x02: sputc('#'); p2hex(info, opcode2 & 0x07); break; case 0x03: sputc('#'); p2hex(info, opcode2 & 0x0f); break; } pcomma(info); doea(info, opcode, 1); pcomma(info); pudec(info, (opcode2 >> 10) & 0x07); if (opcode2 & 0x100) { pcomma(info); info->num_oper++; oa(info, (opcode2 >> 5) & 7); } break; default: info->memory_vma -= 2; odcw(info, opcode); break; } break; case 1: if (srcmod(opcode) == 1) { opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; info->reloffset += 2; ps(info, "pdb"); /* * The manual states: * "The value of the program counter used in the branch address * calculation is the address of the PDBcc instruction plus two." * I think this is wrong, for other co-pros its the address of the * displacement word. */ adr = ((struct priv_data *)(info->disasm_data))->oldaddr + GETW(info->memory_vma) + info->reloffset; info->memory_vma += 2; ps(info, pmmucondtable[opcode2 & 0x3f]); startoperands(info); od(info, opcode & 0x07); pcomma(info); p8hex(info, adr); info->num_oper = 2; } else if (srcmod(opcode) == 7 && srcreg(opcode) > 1) { opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; info->reloffset += 2; ps(info, "ptrap"); ps(info, pmmucondtable[opcode2 & 0x3f]); switch (srcreg(opcode)) { case 2: startoperands(info); oi(info, 1, true); info->num_oper = 1; break; case 3: startoperands(info); oi(info, 2, true); info->num_oper = 1; break; } } else { opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; info->reloffset += 2; ps(info, "ps"); ps(info, pmmucondtable[opcode2 & 0x3f]); startoperands(info); doea(info, opcode, 1); info->num_oper = 1; } break; case 2: case 3: if (opcode & 0x40) { adr = ((struct priv_data *)(info->disasm_data))->oldaddr + GETL(info->memory_vma) + info->reloffset; info->memory_vma += 4; ps(info, "pb"); ps(info, pmmucondtable[opcode & 0x3f]); ps(info, ".l"); } else { adr = ((struct priv_data *)(info->disasm_data))->oldaddr + GETW(info->memory_vma) + info->reloffset; info->memory_vma += 2; ps(info, "pb"); ps(info, pmmucondtable[opcode & 0x3f]); ps(info, ".w"); } startoperands(info); p8hex(info, adr); info->num_oper = 1; break; case 4: switch (srcmod(opcode)) { case 0: ps(info, "pflushn"); startoperands(info); oai(info, srcreg(opcode)); info->num_oper = 1; break; case 1: ps(info, "pflush"); startoperands(info); oai(info, srcreg(opcode)); info->num_oper = 1; break; case 2: ps(info, "pflushan"); /* conflicts with psave (ax) */ info->num_oper = 0; break; case 3: ps(info, "pflusha"); info->num_oper = 0; break; default: ps(info, "psave"); startoperands(info); doea(info, opcode, 1); info->num_oper = 1; break; } break; case 5: ps(info, "prestore"); startoperands(info); doea(info, opcode, 1); info->num_oper = 1; break; default: odcw(info, opcode); break; } } /*** ---------------------------------------------------------------------- ***/ static void group_pmmu_040(m68k_disasm_info *info, int opcode) { static const char *const caches[4] = { "nc", "dc", "ic", "bc" }; if (opcode & 0x0100) { if ((opcode & 0xd8) == 0x48) { ps(info, "ptest"); sputc(opcode & 0x20 ? 'r' : 'w'); startoperands(info); oai(info, srcreg(opcode)); info->num_oper = 1; } else if ((opcode & 0xc0) == 0) { switch (srcmod(opcode)) { case 0x00: ps(info, "pflushn"); startoperands(info); oai(info, srcreg(opcode)); info->num_oper = 1; break; case 0x01: ps(info, "pflush"); startoperands(info); oai(info, srcreg(opcode)); info->num_oper = 1; break; case 0x02: ps(info, "pflushan"); info->num_oper = 0; break; case 0x03: ps(info, "pflusha"); info->num_oper = 0; break; default: odcw(info, opcode); break; } } else { odcw(info, opcode); } } else { switch (srcmod(opcode)) { case 0x0001: ps(info, "cinvl"); startoperands(info); ps(info, caches[(opcode >> 6) & 3]); pcomma(info); oai(info, srcreg(opcode)); info->num_oper = 2; break; case 0x0002: ps(info, "cinvp"); startoperands(info); ps(info, caches[(opcode >> 6) & 3]); pcomma(info); oai(info, srcreg(opcode)); info->num_oper = 2; break; case 0x0003: ps(info, "cinva"); startoperands(info); ps(info, caches[(opcode >> 6) & 3]); info->num_oper = 1; break; case 0x0005: if (((opcode >> 6) & 3) == 0) { ps(info, "intouch"); startoperands(info); info->num_oper = 1; } else { ps(info, "cpushl"); startoperands(info); ps(info, caches[(opcode >> 6) & 3]); pcomma(info); info->num_oper = 2; } oai(info, srcreg(opcode)); break; case 0x0006: ps(info, "cpushp"); startoperands(info); ps(info, caches[(opcode >> 6) & 3]); pcomma(info); oai(info, srcreg(opcode)); info->num_oper = 2; break; case 0x0007: ps(info, "cpusha"); startoperands(info); ps(info, caches[(opcode >> 6) & 3]); info->num_oper = 1; break; default: odcw(info, opcode); break; } } } /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void pfreg(m68k_disasm_info *info, int reg) { ps(info, fpregs[reg]); } /*** ---------------------------------------------------------------------- ***/ static enum fpu_size print_fpsize(m68k_disasm_info *info, int mask) { enum fpu_size sz; switch (mask) { default: case 0: sputc('l'); sz = FPU_SIZE_LONG; break; case 1: sputc('s'); sz = FPU_SIZE_SINGLE; break; case 2: sputc('x'); sz = FPU_SIZE_EXTENDED; break; case 3: sputc('p'); sz = FPU_SIZE_PACKED; break; case 4: sputc('w'); sz = FPU_SIZE_WORD; break; case 5: sputc('d'); sz = FPU_SIZE_DOUBLE; break; case 6: sputc('b'); sz = FPU_SIZE_BYTE; break; case 7: sputc('p'); sz = FPU_SIZE_PACKED_VARIABLE; break; } return sz; } /*** ---------------------------------------------------------------------- ***/ static void print_freglist(m68k_disasm_info *info, int regmask, int mode, bool cntl) { const char *const * regs; register int regnum; int liststart; int lastreg; int status; int upper; regs = cntl ? fpcregs : fpregs; upper = cntl ? 3 : 8; if (!cntl && mode != 4) { regmask = revbits(regmask, upper); } liststart = status = 0; lastreg = 20; for (regnum = 0; regnum < upper; regnum++) { if ((1 << regnum) & regmask) { if (regnum == (lastreg + 1) && regnum != 8) { if (liststart != 0) sputc('-'); liststart = 0; status = 1; lastreg = regnum; } else { if (status != 0) { ps(info, regs[lastreg]); status = 0; liststart = 1; } if (liststart != 0) sputc('/'); ps(info, regs[regnum]); lastreg = regnum; liststart = 1; } } } if (status != 0) ps(info, regs[lastreg]); } /*** ---------------------------------------------------------------------- ***/ static void fpu_stdgen(m68k_disasm_info *info, unsigned int opcode, unsigned int opcode2, const char *name) { enum fpu_size sz; ps(info, name); info->num_oper = 1; sputc('.'); if ((opcode2 & 0x4000) != 0) { sz = print_fpsize(info, (opcode2 >> 10) & 0x07); startoperands(info); doea(info, opcode, sz); if (((opcode2 >> 3) & 0x0f) == 6) /* fsincos */ { pcomma(info); pfreg(info, (opcode2 >> 0) & 0x07); sputc(':'); pfreg(info, (opcode2 >> 7) & 0x07); info->num_oper = 2; } else if ((opcode2 & 0x3f) != 0x3a) /* ftst */ { pcomma(info); pfreg(info, (opcode2 >> 7) & 0x07); info->num_oper = 2; } } else { sputc('x'); startoperands(info); pfreg(info, (opcode2 >> 10) & 0x07); if (((opcode2 >> 3) & 0x0f) == 6) /* fsincos */ { pcomma(info); pfreg(info, (opcode2 >> 0) & 0x07); sputc(':'); pfreg(info, (opcode2 >> 7) & 0x07); info->num_oper = 2; } else if ((opcode2 & 0x3f) != 0x3a) /* ftst */ { pcomma(info); pfreg(info, (opcode2 >> 7) & 0x07); info->num_oper = 2; } } } /*** ---------------------------------------------------------------------- ***/ static void group_fpu(m68k_disasm_info *info, int opcode) { unsigned int opcode2; uae_s32 adr; enum fpu_size sz; switch ((opcode >> 6) & 0x07) { case 0: opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; info->reloffset += 2; switch ((opcode2 >> 13) & 0x07) { case 0: case 2: if ((opcode & 0x01ff) == 0x0000 && (opcode2 & 0xfc00) == 0x5c00) { ps(info, "fmovecr.x"); startoperands(info); sputc('#'); p2hex(info, opcode2 & 0x7f); pcomma(info); pfreg(info, (opcode2 >> 7) & 7); info->num_oper = 2; switch (opcode2 & 0x7f) { case 0x00: strcpy(info->comments, "pi"); break; case 0x0b: strcpy(info->comments, "log10(2)"); break; case 0x0c: strcpy(info->comments, "e"); break; case 0x0d: strcpy(info->comments, "log2(e)"); break; case 0x0e: strcpy(info->comments, "log10(e)"); break; case 0x0f: strcpy(info->comments, "0.0"); break; case 0x30: strcpy(info->comments, "ln(2)"); break; case 0x31: strcpy(info->comments, "ln(10)"); break; case 0x32: strcpy(info->comments, "10e0"); break; case 0x33: strcpy(info->comments, "10e1"); break; case 0x34: strcpy(info->comments, "10e2"); break; case 0x35: strcpy(info->comments, "10e4"); break; case 0x36: strcpy(info->comments, "10e8"); break; case 0x37: strcpy(info->comments, "10e16"); break; case 0x38: strcpy(info->comments, "10e32"); break; case 0x39: strcpy(info->comments, "10e64"); break; case 0x3a: strcpy(info->comments, "10e128"); break; case 0x3b: strcpy(info->comments, "10e256"); break; case 0x3c: strcpy(info->comments, "10e512"); break; case 0x3d: strcpy(info->comments, "10e1024"); break; case 0x3e: strcpy(info->comments, "10e2048"); break; case 0x3f: strcpy(info->comments, "10e4096"); break; } } else { switch (opcode2 & 0x7f) { case 0x00: fpu_stdgen(info, opcode, opcode2, "fmove"); break; case 0x40: fpu_stdgen(info, opcode, opcode2, "fsmove"); break; case 0x44: fpu_stdgen(info, opcode, opcode2, "fdmove"); break; case 0x01: fpu_stdgen(info, opcode, opcode2, "fint"); break; case 0x02: fpu_stdgen(info, opcode, opcode2, "fsinh"); break; case 0x03: fpu_stdgen(info, opcode, opcode2, "fintrz"); break; case 0x04: fpu_stdgen(info, opcode, opcode2, "fsqrt"); break; case 0x45: fpu_stdgen(info, opcode, opcode2, "fdsqrt"); break; case 0x41: fpu_stdgen(info, opcode, opcode2, "fssqrt"); break; /* 0x05: illegal */ case 0x06: fpu_stdgen(info, opcode, opcode2, "flognp1"); break; case 0x46: fpu_stdgen(info, opcode, opcode2, "fdlognp1"); break; /* 0x07: illegal */ case 0x08: fpu_stdgen(info, opcode, opcode2, "fetoxm1"); break; case 0x09: fpu_stdgen(info, opcode, opcode2, "ftanh"); break; case 0x0a: fpu_stdgen(info, opcode, opcode2, "fatan"); break; /* 0x0b: illegal */ case 0x0c: fpu_stdgen(info, opcode, opcode2, "fasin"); break; case 0x0d: fpu_stdgen(info, opcode, opcode2, "fatanh"); break; case 0x0e: fpu_stdgen(info, opcode, opcode2, "fsin"); break; case 0x0f: fpu_stdgen(info, opcode, opcode2, "ftan"); break; case 0x10: fpu_stdgen(info, opcode, opcode2, "fetox"); break; case 0x11: fpu_stdgen(info, opcode, opcode2, "ftwotox"); break; case 0x12: fpu_stdgen(info, opcode, opcode2, "ftentox"); break; /* 0x13: illegal */ case 0x14: fpu_stdgen(info, opcode, opcode2, "flogn"); break; case 0x15: fpu_stdgen(info, opcode, opcode2, "flog10"); break; case 0x16: fpu_stdgen(info, opcode, opcode2, "flog2"); break; /* 0x17: illegal */ case 0x18: fpu_stdgen(info, opcode, opcode2, "fabs"); break; case 0x58: fpu_stdgen(info, opcode, opcode2, "fsabs"); break; case 0x5c: fpu_stdgen(info, opcode, opcode2, "fdabs"); break; case 0x19: fpu_stdgen(info, opcode, opcode2, "fcosh"); break; case 0x1a: fpu_stdgen(info, opcode, opcode2, "fneg"); break; case 0x5a: fpu_stdgen(info, opcode, opcode2, "fsneg"); break; case 0x5e: fpu_stdgen(info, opcode, opcode2, "fdneg"); break; /* 0x1b: illegal */ case 0x1c: fpu_stdgen(info, opcode, opcode2, "facos"); break; case 0x1d: fpu_stdgen(info, opcode, opcode2, "fcos"); break; case 0x1e: fpu_stdgen(info, opcode, opcode2, "fgetexp"); break; case 0x1f: fpu_stdgen(info, opcode, opcode2, "fgetman"); break; case 0x20: fpu_stdgen(info, opcode, opcode2, "fdiv"); break; case 0x60: fpu_stdgen(info, opcode, opcode2, "fsdiv"); break; case 0x64: fpu_stdgen(info, opcode, opcode2, "fddiv"); break; case 0x21: fpu_stdgen(info, opcode, opcode2, "fmod"); break; case 0x22: fpu_stdgen(info, opcode, opcode2, "fadd"); break; case 0x62: fpu_stdgen(info, opcode, opcode2, "fsadd"); break; case 0x66: fpu_stdgen(info, opcode, opcode2, "fdadd"); break; case 0x23: fpu_stdgen(info, opcode, opcode2, "fmul"); break; case 0x63: fpu_stdgen(info, opcode, opcode2, "fsmul"); break; case 0x67: fpu_stdgen(info, opcode, opcode2, "fdmul"); break; case 0x24: fpu_stdgen(info, opcode, opcode2, "fsgldiv"); break; case 0x25: fpu_stdgen(info, opcode, opcode2, "frem"); break; case 0x26: fpu_stdgen(info, opcode, opcode2, "fscale"); break; case 0x27: fpu_stdgen(info, opcode, opcode2, "fsglmul"); break; case 0x28: fpu_stdgen(info, opcode, opcode2, "fsub"); break; case 0x68: fpu_stdgen(info, opcode, opcode2, "fssub"); break; case 0x6c: fpu_stdgen(info, opcode, opcode2, "fdsub"); break; /* 0x29: illegal */ /* 0x2a: illegal */ /* 0x2b: illegal */ /* 0x2c: illegal */ /* 0x2d: illegal */ /* 0x2d: illegal */ /* 0x2e: illegal */ /* 0x2f: illegal */ case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: fpu_stdgen(info, opcode, opcode2, "fsincos"); break; case 0x38: fpu_stdgen(info, opcode, opcode2, "fcmp"); break; /* 0x39: illegal */ case 0x3a: fpu_stdgen(info, opcode, opcode2, "ftst"); break; /* 0x3b: illegal */ /* 0x3c: illegal */ /* 0x3d: illegal */ /* 0x3e: illegal */ /* 0x3f: illegal */ default: odcw(info, opcode); pcomma(info); p4hex(info, opcode2); info->num_oper = 2; break; } } break; case 3: info->num_oper = 2; /* fmove r ==> m */ ps(info, "fmove."); sz = print_fpsize(info, (opcode2 >> 10) & 0x07); startoperands(info); pfreg(info, (opcode2 >> 7) & 0x07); pcomma(info); doea(info, opcode, sz); if (sz == FPU_SIZE_PACKED_VARIABLE) { sputc('{'); if ((opcode2 & 0x1000) != 0) { od(info, (opcode2 >> 4) & 0x7); } else { sputc('#'); pudec(info, (opcode2 >> 4) & 0x07); } sputc('}'); } break; case 4: case 5: info->num_oper = 2; switch ((opcode2 >> 10) & 0x07) { case 0x01: case 0x02: case 0x04: ps(info, "fmove.l"); break; default: ps(info, "fmovem.l"); break; } /* fmove[m] control reg */ startoperands(info); if ((opcode2 & 0x2000) != 0) { print_freglist(info, (opcode2 >> 10) & 0x07, 4, true); pcomma(info); } doea(info, opcode, FPU_SIZE_LONG); if ((opcode2 & 0x2000) == 0) { pcomma(info); print_freglist(info, (opcode2 >> 10) & 0x07, 4, true); } info->num_oper = 2; break; case 6: case 7: info->num_oper = 2; ps(info, "fmovem.x"); startoperands(info); if ((opcode2 & 0x0800) != 0) { if ((opcode2 & 0x2000) != 0) { od(info, (opcode2 >> 4) & 0x07); pcomma(info); } doea(info, opcode, FPU_SIZE_EXTENDED); if ((opcode2 & 0x2000) == 0) { pcomma(info); od(info, (opcode2 >> 4) & 0x07); } } else { if ((opcode2 & 0x2000) != 0) { print_freglist(info, opcode2 & 0xff, srcmod(opcode), false); pcomma(info); } doea(info, opcode, FPU_SIZE_EXTENDED); if ((opcode2 & 0x2000) == 0) { pcomma(info); print_freglist(info, opcode2 & 0xff, srcmod(opcode), false); } } break; } break; case 1: if (srcmod(opcode) == 1) { opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; info->reloffset += 2; ps(info, "fdb"); /* * The value of the program counter used in the branch * address calculation is the address of the displacement word. */ adr = ((struct priv_data *)(info->disasm_data))->oldaddr + GETW(info->memory_vma) + info->reloffset; info->memory_vma += 2; ps(info, fpucondtable[opcode2 & 0x3f]); startoperands(info); od(info, opcode & 0x07); pcomma(info); p8hex(info, adr); info->num_oper = 2; } else if (srcmod(opcode) == 7 && srcreg(opcode) > 1) { opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; info->reloffset += 2; ps(info, "ftrap"); ps(info, fpucondtable[opcode2 & 0x3f]); switch (srcreg(opcode)) { case 2: startoperands(info); oi(info, 1, true); info->num_oper = 1; break; case 3: startoperands(info); oi(info, 2, true); info->num_oper = 1; break; } } else { opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; info->reloffset += 2; ps(info, "fs"); ps(info, fpucondtable[opcode2 & 0x3f]); startoperands(info); doea(info, opcode, 1); info->num_oper = 1; } break; case 2: case 3: opcode2 = GETUW(info->memory_vma); if (((opcode >> 6) & 0x07) == 2 && (opcode & 0x3f) == 0 && opcode2 == 0) { ps(info, "fnop"); return; } if (opcode & 0x40) { adr = ((struct priv_data *)(info->disasm_data))->oldaddr + GETL(info->memory_vma) + info->reloffset; info->memory_vma += 4; ps(info, "fb"); ps(info, fpucondtable[opcode & 0x3f]); ps(info, ".l"); } else { adr = ((struct priv_data *)(info->disasm_data))->oldaddr + GETW(info->memory_vma) + info->reloffset; info->memory_vma += 2; ps(info, "fb"); ps(info, fpucondtable[opcode & 0x3f]); ps(info, ".w"); } startoperands(info); p8hex(info, adr); info->num_oper = 1; break; case 4: ps(info, "fsave"); startoperands(info); doea(info, opcode, 0); info->num_oper = 1; break; case 5: ps(info, "frestore"); startoperands(info); doea(info, opcode, 0); info->num_oper = 1; break; default: odcw(info, opcode); break; } } /*** ---------------------------------------------------------------------- ***/ static void coprocessor_general(m68k_disasm_info *info, int opcode, const char *prefix) { int adr; unsigned int opcode2; switch ((opcode >> 6) & 0x07) { case 0: opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; info->reloffset += 2; ps(info, prefix); ps(info, "GEN"); startoperands(info); oi(info, 1, true); pcomma(info); doea(info, opcode, 1); info->num_oper = 2; break; case 1: if (srcmod(opcode) == 1) { opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; info->reloffset += 2; ps(info, prefix); ps(info, "DB"); /* * The value of the scan PC is the address of the displacement word. */ adr = ((struct priv_data *)(info->disasm_data))->oldaddr + GETW(info->memory_vma) + info->reloffset; info->memory_vma += 2; ps(info, cpcondtable[opcode2 & 0x3f]); startoperands(info); od(info, opcode & 0x07); pcomma(info); p8hex(info, adr); info->num_oper = 2; } else if (srcmod(opcode) == 7 && srcreg(opcode) > 1) { opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; info->reloffset += 2; ps(info, prefix); ps(info, "TRAP"); ps(info, cpcondtable[opcode2 & 0x3f]); switch (srcreg(opcode)) { case 2: startoperands(info); oi(info, 1, true); info->num_oper = 1; break; case 3: startoperands(info); oi(info, 2, true); info->num_oper = 1; break; } } else { opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; info->reloffset += 2; ps(info, prefix); ps(info, "S"); ps(info, cpcondtable[opcode2 & 0x3f]); startoperands(info); doea(info, opcode, 1); info->num_oper = 1; } break; case 2: adr = ((struct priv_data *)(info->disasm_data))->oldaddr + GETW(info->memory_vma) + info->reloffset; info->memory_vma += 2; ps(info, prefix); ps(info, "B"); ps(info, cpcondtable[opcode & 0x3f]); ps(info, ".w"); startoperands(info); p8hex(info, adr); info->num_oper = 1; break; case 3: adr = ((struct priv_data *)(info->disasm_data))->oldaddr + GETL(info->memory_vma) + info->reloffset; info->memory_vma += 4; ps(info, prefix); ps(info, "B"); ps(info, cpcondtable[opcode & 0x3f]); ps(info, ".l"); startoperands(info); p8hex(info, adr); info->num_oper = 1; break; case 4: case 5: case 6: if (((opcode >> 9) & 0x07) == 5) { ps(info, "wddata"); os(info, opcode); doea(info, opcode, insize(opcode)); info->num_oper = 1; } else { odcw(info, opcode); } break; case 7: if (((opcode >> 9) & 0x07) == 5) { opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; ps(info, "wdebug"); startoperands(info); doea(info, opcode, 2); info->num_oper = 1; } else { odcw(info, opcode); } break; default: odcw(info, opcode); break; } } /*** ---------------------------------------------------------------------- ***/ static void group15(m68k_disasm_info *info, int opcode) { int opcode2; switch ((opcode >> 9) & 0x07) { case 0: /* ID 0: m68851 or 68030 onchip pmmu */ if (info->cpu == CPU_68020 && info->mmu != MMU_NONE) { if ((opcode & 0x01c0) != 0) coprocessor_general(info, opcode, "p"); else group_pmmu_030(info, opcode); } else { group_pmmu_030(info, opcode); } break; case 1: /* ID 1: m68881/2 fpu */ group_fpu(info, opcode); break; case 2: /* ID 2: 68040/60 on chip pmmu */ group_pmmu_040(info, opcode); break; case 3: /* ID 3: move16 */ odcw(info, opcode); break; case 4: /* ID 4: */ if ((opcode & 0x01c0) == 0 && (opcode & 0x003f) == 0 && GETUW(info->memory_vma) == 0x01c0) { ps(info, "lpstop"); info->memory_vma += 2; info->reloffset += 2; startoperands(info); oi(info, 1, true); info->num_oper = 1; } else if ((opcode & 0x01c0) == 0 && (GETUW(info->memory_vma) & 0x8338) == 0x0100) { opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; info->reloffset += 2; ps(info, "tbl"); sputc(opcode2 & 0x0800 ? 's' : 'u'); if (opcode2 & 0x400) sputc('n'); os(info, opcode2); if (srcmod(opcode) == 0) { od(info, srcreg(opcode)); sputc(':'); od(info, srcreg(opcode2)); } else { doea(info, opcode, insize(opcode2)); } pcomma(info); od(info, (opcode2 >> 12) & 7); info->num_oper = 2; } else { coprocessor_general(info, opcode, "lp"); } break; case 5: /* ID 5: ColdFire FPU */ coprocessor_general(info, opcode, "cp5"); break; case 6: /* ID 6: */ coprocessor_general(info, opcode, "cp6"); break; case 7: /* ID 7: */ coprocessor_general(info, opcode, "nf"); break; } } /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void pspreg(m68k_disasm_info *info, int mask) { const char *reg = "???"; switch (mask & 0xfff) { case 0x000: reg = "sfc"; break; case 0x001: reg = "dfc"; break; case 0x002: /* if (info->cpu >= CPU_68020 && info->cpu != CPU_CPU32) */ reg = "cacr"; break; case 0x003: /* if (info->mmu == MMU_68851 || info->cpu == CPU_68030 || info->cpu == CPU_68040 || info->cpu == CPU_68LC040 || info->cpu == CPU_68060) */ reg = "tc"; if (info->cpu >= CPU_CF_FIRST && info->cpu <= CPU_CF_LAST) reg = "asid"; break; case 0x004: /* if (info->cpu == CPU_68040 || info->cpu == CPU_68LC040 || info->cpu == CPU_68060) */ reg = "itt0"; if (info->cpu == CPU_68EC040) reg = "iacr0"; if (info->cpu >= CPU_CF_FIRST && info->cpu <= CPU_CF_LAST) reg = "acr0"; break; case 0x005: /* if (info->cpu == CPU_68040 || info->cpu == CPU_68LC040 || info->cpu == CPU_68060) */ reg = "itt1"; if (info->cpu == CPU_68EC040) reg = "iacr1"; if (info->cpu >= CPU_CF_FIRST && info->cpu <= CPU_CF_LAST) reg = "acr1"; break; case 0x006: /* if (info->cpu == CPU_68040 || info->cpu == CPU_68LC040 || info->cpu == CPU_68060) */ reg = "dtt0"; if (info->cpu == CPU_68EC040) reg = "dacr0"; if (info->cpu >= CPU_CF_FIRST && info->cpu <= CPU_CF_LAST) reg = "acr2"; break; case 0x007: /* if (info->cpu == CPU_68040 || info->cpu == CPU_68LC040 || info->cpu == CPU_68060) */ reg = "dtt1"; if (info->cpu == CPU_68EC040) reg = "dacr1"; if (info->cpu >= CPU_CF_FIRST && info->cpu <= CPU_CF_LAST) reg = "acr3"; break; case 0x008: /* if (info->cpu == CPU_68060) */ reg = "buscr"; if (info->cpu >= CPU_CF_FIRST && info->cpu <= CPU_CF_LAST) reg = "mmubar"; break; case 0x009: reg = "rgpiobar"; break; case 0x00c: reg = "acr4"; break; case 0x00d: reg = "acr5"; break; case 0x00e: reg = "acr6"; break; case 0x00f: reg = "acr7"; break; case 0x800: reg = "usp"; break; case 0x801: reg = "vbr"; break; case 0x802: /* if (info->cpu == CPU_68020 || info->cpu == CPU_68030 || info->cpu == CPU_68EC030) */ reg = "caar"; break; case 0x803: reg = "msp"; break; case 0x804: reg = "isp"; break; case 0x805: /* if (info->mmu == MMU_68851 || info->cpu == CPU_68030 || info->cpu == CPU_68040 || info->cpu == CPU_68LC040) */ reg = "psr"; /* sometimes named mmusr */ break; case 0x806: /* if (info->cpu == CPU_68040 || info->cpu == CPU_68LC040 || info->cpu == CPU_68060) */ reg = "urp"; break; case 0x807: /* if (info->mmu == MMU_68851 || info->cpu == CPU_68030 || info->cpu == CPU_68040 || info->cpu == CPU_68LC040 || info->cpu == CPU_68060) */ reg = "srp"; break; case 0x808: /* if (info->cpu == CPU_68060) */ reg = "pcr"; break; case 0x80e: reg = "sr"; break; case 0x80f: reg = "pc"; break; case 0xc00: reg = "rombar0"; break; case 0xc01: reg = "rombar1"; break; case 0xc04: reg = "rambar0"; break; case 0xc05: reg = "rambar1"; break; case 0xc0c: reg = "mpcr"; break; case 0xc0d: reg = "edrambar"; break; case 0xc0e: reg = "secmbar"; /* sometimes called mbar0 or mbar2 */ break; case 0xc0f: reg = "mbar"; /* sometimes called mbar1 */ break; case 0xd02: reg = "pcr1u0"; break; case 0xd03: reg = "pcr1l0"; break; case 0xd04: reg = "pcr2u0"; break; case 0xd05: reg = "pcr2l0"; break; case 0xd06: reg = "pcr3u0"; break; case 0xd07: reg = "pcr3l0"; break; case 0xd0a: reg = "pcr1u1"; break; case 0xd0b: reg = "pcr1l1"; break; case 0xd0c: reg = "pcr2u1"; break; case 0xd0d: reg = "pcr2l1"; break; case 0xd0e: reg = "pcr3u1"; break; case 0xd0f: reg = "pcr3l1"; break; case 0xffe: reg = "cac"; break; case 0xfff: reg = "mbo"; break; } ps(info, reg); } /*** ---------------------------------------------------------------------- ***/ static void group4(m68k_disasm_info *info, int opcode) { register int mask; register int size; if (opcode & 0x0100) { /* 0100 000 1 ss 000000 */ switch (insize(opcode)) { case 1: case 3: if ((opcode & 0xfff8) == 0x49c0) { ps(info, "extb.l"); startoperands(info); od(info, srcreg(opcode)); info->num_oper = 1; only_68020(); } else { ps(info, "lea.l"); startoperands(info); doea(info, opcode, 2); pcomma(info); oa(info, dstreg(opcode)); info->num_oper = 2; } break; case 2: ps(info, "chk.w"); startoperands(info); doea(info, opcode, 1); pcomma(info); oddstreg(info, opcode); info->num_oper = 2; break; case 0: ps(info, "chk.l"); startoperands(info); doea(info, opcode, 1); pcomma(info); oddstreg(info, opcode); info->num_oper = 2; only_68020(); break; default: odcw(info, opcode); break; } } else { switch (dstreg(opcode)) { case 0: /* move from sr, negx */ if ((size = insize(opcode)) == 3) { /* 0100 000 011 xxxxxx */ ps(info, "move.w"); startoperands(info); ps(info, "sr"); pcomma(info); doea(info, opcode, 1); info->num_oper = 2; } else { ps(info, "negx"); os(info, opcode); doea(info, opcode, size); info->num_oper = 1; } break; case 1: /* clr */ if (insize(opcode) == 3) { /* 0100 001 011 xxxxxx */ /* move.w from ccr, illegal for CPU_68000 */ ps(info, "move.w"); startoperands(info); ps(info, "ccr"); pcomma(info); doea(info, opcode, 1); info->num_oper = 2; } else { ps(info, "clr"); size = os(info, opcode); doea(info, opcode, size); info->num_oper = 1; } break; case 2: /* move to ccr, neg */ if ((size = insize(opcode)) == 3) { /* 0100 010 011 xxxxxx */ ps(info, "move.b"); startoperands(info); doea(info, opcode, 1); pcomma(info); ps(info, "ccr"); info->num_oper = 2; } else { ps(info, "neg"); os(info, opcode); doea(info, opcode, size); info->num_oper = 1; } break; case 3: /* move to sr, not */ if ((size = insize(opcode)) == 3) { ps(info, "move.w"); startoperands(info); doea(info, opcode, 1); pcomma(info); ps(info, "sr"); info->num_oper = 2; } else { ps(info, "not"); os(info, opcode); doea(info, opcode, size); info->num_oper = 1; } break; case 4: /* ext, movem to ram, nbcd, pea, swap */ switch (insize(opcode)) { case 0: /* 0100 100 000 yyyyyy */ if (srcmod(opcode) == 1) { ps(info, "link.l"); startoperands(info); doea(info, opcode, 2); pcomma(info); oi(info, 2, true); info->num_oper = 2; only_68020(); } else { ps(info, "nbcd"); startoperands(info); doea(info, opcode, 0); info->num_oper = 1; } break; case 1: /* 0100 100 001 yyyyyy */ if (srcmod(opcode) != 0) { if (srcmod(opcode) == 1) { ps(info, "bkpt"); startoperands(info); sputc('#'); psdec(info, opcode & 7); } else { ps(info, "pea.l"); startoperands(info); doea(info, opcode, 2); } } else { ps(info, "swap"); startoperands(info); od(info, srcreg(opcode)); } info->num_oper = 1; break; case 2: case 3: /* 0100 100 010 yyyyyy */ /* 0100 100 011 yyyyyy */ if (srcmod(opcode) == 0) { ps(info, "ext"); osa(info, opcode, 0x0040); od(info, srcreg(opcode)); info->num_oper = 1; } else { ps(info, "movem"); size = osa(info, opcode, 0x0040); mask = GETW(info->memory_vma); info->memory_vma += 2; if (srcmod(opcode) == 4) { reglist(info, revbits(mask, 16)); } else { reglist(info, mask); } pcomma(info); doea(info, opcode, size); info->num_oper = 2; } break; } break; case 5: /* illegal, tas, tst */ if ((size = insize(opcode)) == 3) { if (srcmod(opcode) == 7 && srcreg(opcode) > 1) { info->num_oper = 0; switch (srcreg(opcode)) { case 2: ps(info, "bgnd"); only_if(info, "cpu32 & fidoa"); break; case 5: ps(info, "swbeg.l"); only_if(info, "sysV68"); startoperands(info); oi(info, 2, true); info->num_oper = 1; break; case 4: ps(info, "illegal"); break; default: odcw(info, opcode); break; } } else if (srcmod(opcode) == 1) { info->num_oper = 0; switch (srcreg(opcode)) { case 0: ps(info, "halt"); only_if(info, "68060 & ColdFire"); break; case 4: ps(info, "pulse"); only_if(info, "68060 & ColdFire"); break; default: odcw(info, opcode); break; } } else { ps(info, "tas.b"); startoperands(info); doea(info, opcode, 1); info->num_oper = 1; } } else { ps(info, "tst"); os(info, opcode); doea(info, opcode, size); info->num_oper = 1; } break; case 6: if (opcode & 0x0080) { switch (srcmod(opcode)) { case 2: case 3: case 5: case 6: case 7: /* movem from ram */ if (srcmod(opcode) != 7 || srcreg(opcode) <= 1) { ps(info, "movem"); size = osa(info, opcode, 0x0040); mask = GETW(info->memory_vma); info->memory_vma += 2; doea(info, opcode, size); pcomma(info); reglist(info, mask); info->num_oper = 2; } else { odcw(info, opcode); } break; case 0: ps(info, "sats.l"); startoperands(info); od(info, srcreg(opcode)); break; default: odcw(info, opcode); break; } } else { uae_u16 opcode2; uae_u16 dr, dq; only_68020(); opcode2 = GETUW(info->memory_vma); info->memory_vma += 2; dr = srcreg(opcode2); dq = (opcode2 >> 12) & 0x07; ps(info, opcode & 0x0040 ? "div" : "mul"); sputc(opcode2 & 0x0800 ? 's' : 'u'); if (opcode & 0x0040) { if (opcode2 & 0x0400) { /* div 64/32 -> dr/dq */ info->num_oper = 3; ps(info, ".l"); startoperands(info); doea(info, opcode, 2); pcomma(info); od(info, dr); pcomma(info); od(info, dq); } else { /* 32/32 -> dr/dq */ info->num_oper = 3; ps(info, "l.l"); startoperands(info); doea(info, opcode, 2); pcomma(info); od(info, dr); pcomma(info); od(info, dq); if (dr != dq) { if (opcode2 & 0x0800) strcpy(info->comments, "rems.l for ColdFire"); else strcpy(info->comments, "remu.l for ColdFire"); } } } else { if (opcode2 & 0x0400) { /* mul 32*32 -> dh-dl */ info->num_oper = 3; ps(info, ".l"); startoperands(info); doea(info, opcode, 2); pcomma(info); od(info, dr); pcomma(info); od(info, dq); } else { /* 32*32 -> dl */ info->num_oper = 2; ps(info, ".l"); startoperands(info); doea(info, opcode, 2); pcomma(info); od(info, dq); } } } break; case 7: /* jmp, jsr, link, move usp, nop, reset, rte, rtr, rts, stop, trap, trapv, unlk */ switch (dstmod(opcode)) { case 1: switch (srcmod(opcode)) { case 0: case 1: /* 0100 111 001 00 xxxx */ ps(info, "trap"); startoperands(info); sputc('#'); psdec(info, opcode & 0x000f); info->num_oper = 1; break; case 2: /* 0100 111 001 010 xxx */ ps(info, "link"); startoperands(info); oa(info, srcreg(opcode)); pcomma(info); oi(info, 1, true); info->num_oper = 2; break; case 3: /* 0100 111 001 011 xxx */ ps(info, "unlk"); startoperands(info); oa(info, srcreg(opcode)); info->num_oper = 1; break; case 4: /* 0100 111 001 100 xxx */ ps(info, "move.l"); startoperands(info); oa(info, srcreg(opcode)); pcomma(info); ps(info, "usp"); info->num_oper = 2; break; case 5: /* 0100 111 001 101 xxx */ ps(info, "move.l"); startoperands(info); ps(info, "usp"); pcomma(info); oa(info, srcreg(opcode)); info->num_oper = 2; break; case 6: /* 0100 111 001 110 xxx */ switch (srcreg(opcode)) { case 0: ps(info, "reset"); info->num_oper = 0; break; case 1: ps(info, "nop"); info->num_oper = 0; break; case 2: ps(info, "stop"); startoperands(info); sputc('#'); psdec(info, GETW(info->memory_vma)); info->memory_vma += 2; info->num_oper = 1; break; case 3: ps(info, "rte"); info->num_oper = 0; break; case 4: ps(info, "rtd"); startoperands(info); sputc('#'); psdec(info, GETW(info->memory_vma)); info->memory_vma += 2; info->num_oper = 1; break; case 5: ps(info, "rts"); info->num_oper = 0; break; case 6: ps(info, "trapv"); info->num_oper = 0; break; case 7: ps(info, "rtr"); info->num_oper = 0; break; } break; case 7: /* 0100 111 001 111 xxx */ switch (srcreg(opcode)) { default: odcw(info, opcode); break; case 2: if (info->cpu >= CPU_68010) { ps(info, "movec"); startoperands(info); mask = GETUW(info->memory_vma); info->memory_vma += 2; pspreg(info, mask); pcomma(info); oad(info, (mask >> 12) & 0x0f); info->num_oper = 2; only_68020(); } else { odcw(info, opcode); } break; case 3: if (info->cpu >= CPU_68010) { ps(info, "movec"); startoperands(info); mask = GETUW(info->memory_vma); info->memory_vma += 2; oad(info, (mask >> 12) & 0x0f); pcomma(info); pspreg(info, mask); info->num_oper = 2; } else { odcw(info, opcode); } break; } break; } break; case 2: ps(info, "jsr"); startoperands(info); doea(info, opcode, 0); info->num_oper = 1; break; case 3: ps(info, "jmp"); startoperands(info); doea(info, opcode, 0); info->num_oper = 1; break; default: odcw(info, opcode); break; } break; } } } /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void group5(m68k_disasm_info *info, int opcode) { register uae_s32 adr; if (insize(opcode) == 3) { if ((opcode & 0x3f) == 0x3a || (opcode & 0x3f) == 0x3b || (opcode & 0x3f) == 0x3c) { ps(info, "trap"); pcond(info, (opcode >> 8) & 0x000f); if (srcreg(opcode) == 2) { ps(info, ".w"); startoperands(info); oi(info, 1, true); info->num_oper = 1; } else if (srcreg(opcode) == 3) { ps(info, ".l"); startoperands(info); oi(info, 2, true); info->num_oper = 2; } else { info->num_oper = 0; } } else { ps(info, srcmod(opcode) == 1 ? "db" : "s"); pcond(info, (opcode >> 8) & 0x000f); startoperands(info); if (srcmod(opcode) != 1) { doea(info, opcode, 0); info->num_oper = 1; } else { od(info, srcreg(opcode)); pcomma(info); adr = GETW(info->memory_vma) + ((struct priv_data *)(info->disasm_data))->oldaddr + info->reloffset; info->memory_vma += 2; p8hex(info, adr); info->num_oper = 2; } } } else { ps(info, opcode & 0x0100 ? "subq" : "addq"); os(info, opcode); sputc('#'); psdec(info, dstreg(opcode) != 0 ? dstreg(opcode) : 8); pcomma(info); doea(info, opcode, 0); info->num_oper = 2; } } /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void group6(m68k_disasm_info *info, int opcode) { register uae_s32 adr; register int cond; register signed char dist; /* 0110 cccc dddddddd */ switch (cond = (opcode >> 8) & 0x000f) { case 1: ps(info, "bsr"); break; case 0: ps(info, "bra"); break; default: sputc('b'); pcond(info, cond); break; } if ((dist = (signed char) opcode) != 0) { if (dist == -1) { ps(info, ".l"); startoperands(info); adr = GETL(info->memory_vma) + ((struct priv_data *)(info->disasm_data))->oldaddr + info->reloffset; info->memory_vma += 4; p8hex(info, adr); only_68020(); } else { ps(info, ".s"); startoperands(info); adr = dist + ((struct priv_data *)(info->disasm_data))->oldaddr + info->reloffset; p8hex(info, adr); } } else { startoperands(info); adr = GETW(info->memory_vma) + ((struct priv_data *)(info->disasm_data))->oldaddr + info->reloffset; info->memory_vma += 2; p8hex(info, adr); } info->num_oper = 1; } /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void group7(m68k_disasm_info *info, int opcode) { int size; if (opcode & 0x0100) { /* ColdFire only */ only_if(info, "ColdFire"); ps(info, opcode & 0x0080 ? "mvz" : "mvs"); size = opcode & 0x0040 ? 1 : 0; sputc('.'); sputc(size == 0 ? 'b' : 'w'); startoperands(info); doea(info, opcode, size); pcomma(info); oddstreg(info, opcode); } else { ps(info, "moveq.l"); startoperands(info); sputc('#'); psdec(info, (int) ((char) (opcode & 0xff))); pcomma(info); oddstreg(info, opcode); info->num_oper = 2; } } /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void g812(m68k_disasm_info *info, int opcode, const char *andor, const char *muldiv, const char *as) { register int size; info->num_oper = 2; if (dstmod(opcode) == 3) { ps(info, muldiv); ps(info, "u.w"); startoperands(info); doea(info, opcode, 1); pcomma(info); oddstreg(info, opcode); } else if (dstmod(opcode) == 7) { ps(info, muldiv); ps(info, "s.w"); startoperands(info); doea(info, opcode, 1); pcomma(info); oddstreg(info, opcode); } else if (dstmod(opcode) == 4 && ((opcode >> 4) & 3) == 0) { ps(info, as); ps(info, "bcd.b"); startoperands(info); if (srcmod(opcode) != 0) { sputc('-'); oai(info, srcreg(opcode)); pcomma(info); sputc('-'); oai(info, dstreg(opcode)); } else { od(info, srcreg(opcode)); pcomma(info); oddstreg(info, opcode); } } else if ((opcode & 0x01f0) == 0x140 || (opcode & 0x01f0) == 0x180) { ps(info, opcode & 0x08 ? "unpk" : "pack"); startoperands(info); if (opcode & 0x08) { od(info, srcreg(opcode)); pcomma(info); od(info, dstreg(opcode)); } else { sputc('-'); oa(info, srcreg(opcode)); pcomma(info); sputc('-'); oa(info, dstreg(opcode)); } pcomma(info); oi(info, 1, true); info->num_oper = 3; } else { ps(info, andor); size = os(info, opcode); if (opcode & 0x0100) { oddstreg(info, opcode); pcomma(info); doea(info, opcode, size); } else { doea(info, opcode, size); pcomma(info); oddstreg(info, opcode); } } } /*** ---------------------------------------------------------------------- ***/ static void group8(m68k_disasm_info *info, int opcode) { g812(info, opcode, "or", "div", "s"); } /*** ---------------------------------------------------------------------- ***/ static void group12(m68k_disasm_info *info, int opcode) { register int d5; if ((d5 = (opcode >> 3) & 0x003f) == 0x0028) { ps(info, "exg"); startoperands(info); oddstreg(info, opcode); pcomma(info); od(info, srcreg(opcode)); info->num_oper = 2; } else if (d5 == 0x0029) { ps(info, "exg"); startoperands(info); oa(info, dstreg(opcode)); pcomma(info); oa(info, srcreg(opcode)); info->num_oper = 2; } else if (d5 == 0x0031) { ps(info, "exg"); startoperands(info); oddstreg(info, opcode); pcomma(info); oa(info, srcreg(opcode)); info->num_oper = 2; } else if (d5 == 0x0030) { odcw(info, opcode); } else { g812(info, opcode, "and", "mul", "a"); } } /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void g913(m68k_disasm_info *info, int opcode, const char *addsub) { register int size; ps(info, addsub); if ((opcode & 0x0100) != 0 && insize(opcode) != 3 && ((opcode >> 4) & 3) == 0) { /* * 1x01rrr1sseeeeee * ss != 3 * * addx/subx ea */ sputc('x'); os(info, opcode); if (opcode & 0x0008) { sputc('-'); oai(info, srcreg(opcode)); pcomma(info); sputc('-'); oai(info, dstreg(opcode)); } else { od(info, srcreg(opcode)); pcomma(info); oddstreg(info, opcode); } } else { switch (dstmod(opcode)) { case 3: case 7: sputc('a'); size = osa(info, opcode, 0x0100); doea(info, opcode, size); pcomma(info); oa(info, dstreg(opcode)); break; default: size = os(info, opcode); if (opcode & 0x0100) { oddstreg(info, opcode); pcomma(info); doea(info, opcode, size); } else { doea(info, opcode, size); pcomma(info); oddstreg(info, opcode); } break; } } info->num_oper = 2; } /*** ---------------------------------------------------------------------- ***/ static void group9(m68k_disasm_info *info, int opcode) { g913(info, opcode, "sub"); } /*** ---------------------------------------------------------------------- ***/ static void group13(m68k_disasm_info *info, int opcode) { g913(info, opcode, "add"); } /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void pacc(m68k_disasm_info *info, int acc) { ps(info, "acc"); sputc('0' + acc); } static void group10(m68k_disasm_info *info, int iw) { int x; switch ((iw >> 6) & 0x0007) { case 0x00: case 0x01: case 0x02: case 0x03: { uae_u16 opcode2 = GETUW(info->memory_vma); unsigned int acc = ((iw >> 7) & 1) | ((opcode2 >> 3) & 0x02); unsigned int rx, rxa, ry, rya, rw, rwa; uae_u16 mode; info->memory_vma += 2; info->num_oper = 4; mode = (iw >> 3) & 7; rx = ry = rw = -1; rxa = rya = rwa = 0; switch (mode) { case 0: case 1: rx = (iw >> 9) & 7; rxa = (iw >> 6) & 1; ry = (iw & 7); rya = (iw >> 3) & 1; break; case 2: case 3: case 4: case 5: rw = (iw >> 9) & 7; rwa = (iw >> 6) & 1; rx = (opcode2 >> 12) & 7; rxa = (opcode2 >> 15) & 1; ry = (opcode2 & 7); rya = (opcode2 >> 3) & 1; acc ^= 1; /* WTF */ break; } if ((mode == 0 || mode == 1) && (opcode2 & 0x03) == 0x01) ps(info, opcode2 & 0x0100 ? "msaac" : "maaac"); else if ((mode == 0 || mode == 1) && (opcode2 & 0x03) == 0x03) ps(info, opcode2 & 0x0100 ? "mssac" : "masac"); else ps(info, opcode2 & 0x0100 ? "msac" : "mac"); sputc('.'); sputc(opcode2 & 0x0800 ? 'l' : 'w'); startoperands(info); if (rya) oa(info, ry); else od(info, ry); if ((opcode2 & 0x0800) == 0) { sputc('.'); sputc(opcode2 & 0x0040 ? 'u' : 'l'); } pcomma(info); if (rxa) oa(info, rx); else od(info, rx); if ((opcode2 & 0x0800) == 0) { sputc('.'); sputc(opcode2 & 0x0080 ? 'u' : 'l'); } pcomma(info); switch ((opcode2 >> 9) & 3) { case 0x00: ps(info, "0"); break; case 0x01: ps(info, "<<1"); break; case 0x02: ps(info, "??"); break; case 0x03: ps(info, ">>1"); break; } switch (mode) { case 2: case 3: case 4: case 5: pcomma(info); doea(info, iw, 0); if (opcode2 & 0x0020) sputc('&'); pcomma(info); if (rwa) oa(info, rw); else od(info, rw); info->num_oper += 2; break; } pcomma(info); pacc(info, acc); if ((mode == 0 || mode == 1) && ((opcode2 & 0x03) == 0x01 || (opcode2 & 0x03) == 0x03)) { pcomma(info); pacc(info, ((opcode2 >> 2) & 3)); info->num_oper += 1; } } break; case 0x04: if ((iw & 0x0800) == 0) { ps(info, "move.l"); startoperands(info); pacc(info, ((iw >> 9) & 3)); pcomma(info); pacc(info, ((iw) & 3)); info->num_oper = 2; } else { ps(info, "move.l"); startoperands(info); doea(info, iw, 2); pcomma(info); info->num_oper = 2; switch ((iw >> 9) & 3) { case 0x00: ps(info, "macsr"); break; case 0x01: ps(info, "accext01"); break; case 0x02: ps(info, "mask"); break; case 0x03: ps(info, "accext23"); break; } } break; case 0x05: ps(info, "mov3q.l"); startoperands(info); x = dstreg(iw); sputc('#'); psdec(info, x == 0 ? -1 : x); pcomma(info); doea(info, iw, 0); info->num_oper = 2; break; case 0x06: if ((iw & 0x0800) == 0) { ps(info, "move.l"); startoperands(info); pacc(info, ((iw >> 9) & 3)); pcomma(info); oad(info, iw & 0x0f); info->num_oper = 2; } else { ps(info, "move.l"); startoperands(info); switch ((iw >> 9) & 3) { case 0x00: ps(info, "macsr"); break; case 0x01: ps(info, "accext01"); break; case 0x02: ps(info, "mask"); break; case 0x03: ps(info, "accext23"); break; } pcomma(info); oad(info, iw & 0x0f); info->num_oper = 2; } break; case 0x07: if ((iw & 0x0800) == 0) { ps(info, "movclr.l"); startoperands(info); pacc(info, ((iw >> 9) & 3)); pcomma(info); oad(info, iw & 0x0f); info->num_oper = 2; } else { switch ((iw >> 9) & 3) { case 0x00: ps(info, "move.l"); startoperands(info); ps(info, "macsr,ccr"); info->num_oper = 2; break; default: odcw(info, iw); break; } } break; default: odcw(info, iw); break; } } /******************************************************************************/ /*** ---------------------------------------------------------------------- ***/ /******************************************************************************/ static void (*const grphdlrs[])(m68k_disasm_info *, int) = { group0, group1, group1, group1, group4, group5, group6, group7, group8, group9, group10, group11, group12, group13, group14, group15 }; /*** ---------------------------------------------------------------------- ***/ int m68k_disasm_builtin(m68k_disasm_info *info) { register int opcode; register void (*hdlr)(m68k_disasm_info *info, int opcode); unsigned int insn_size; struct priv_data *priv; if (info->disasm_data == NULL) { priv = (struct priv_data *)malloc(sizeof(*priv)); info->disasm_data = priv; } priv = (struct priv_data *)info->disasm_data; priv->oldaddr = info->memory_vma; priv->lp = info->opcode; opcode = GETUW(info->memory_vma); info->memory_vma += 2; info->reloffset = 2; hdlr = grphdlrs[(opcode >> 12) & 15]; (*hdlr)(info, opcode); sputc('\0'); insn_size = (unsigned int)(info->memory_vma - priv->oldaddr); info->memory_vma = priv->oldaddr; return insn_size; } #else extern int i_dont_care_that_ISOC_doesnt_like_empty_sourcefiles; #endif /* DISASM_USE_BUILTIN */ aranym-1.1.0/src/disasm/disasm-bfd.h0000664000175000017500000000632013454637621015433 0ustar joyjoy/* Main header file for the bfd library -- portable access to object files. Copyright (C) 1990-2015 Free Software Foundation, Inc. Contributed by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __BFD_H_SEEN__ #define __BFD_H_SEEN__ 1 #include #ifdef __cplusplus extern "C" { #endif /* The word size used by BFD on the host. This may be 64 with a 32 bit target if the host is 64 bit, or if other 64 bit targets have been selected with --enable-targets, or if --enable-64-bit-bfd. */ #define BFD_ARCH_SIZE 64 /* The word size of the default bfd target. */ #define BFD_DEFAULT_TARGET_SIZE 64 /* Boolean type used in bfd. Too many systems define their own versions of "boolean" for us to safely typedef a "boolean" of our own. Using an enum for "bfd_boolean" has its own set of problems, with strange looking casts required to avoid warnings on some older compilers. Thus we just use an int. General rule: Functions which are bfd_boolean return TRUE on success and FALSE on failure (unless they're a predicate). */ typedef int bfd_boolean; #ifndef FALSE #define FALSE 0 #define TRUE 1 #endif #if BFD_ARCH_SIZE >= 64 typedef uint64_t bfd_vma; typedef int64_t bfd_signed_vma; #else /* Represent a target address. Also used as a generic unsigned type which is guaranteed to be big enough to hold any arithmetic types we need to deal with. */ typedef uint32_t bfd_vma; /* A generic signed type which is guaranteed to be big enough to hold any arithmetic types we need to deal with. Can be assumed to be compatible with bfd_vma in the same way that signed and unsigned ints are compatible (as parameters, in assignment, etc). */ typedef int32_t bfd_signed_vma; #endif typedef unsigned int flagword; /* 32 bits of flags */ typedef unsigned char bfd_byte; enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN }; typedef int (*fprintf_ftype) (void *, const char*, ...) __attribute__((format(printf, 2, 3))); enum dis_insn_type { dis_noninsn, /* Not a valid instruction. */ dis_nonbranch, /* Not a branch instruction. */ dis_branch, /* Unconditional branch. */ dis_condbranch, /* Conditional branch. */ dis_jsr, /* Jump to subroutine. */ dis_condjsr, /* Conditional jump to subroutine. */ dis_dref, /* Data reference instruction. */ dis_dref2 /* Two data references in instruction. */ }; typedef struct disassemble_info disassemble_info; #ifdef __cplusplus } #endif #endif /* __BFD_H_SEEN__ */ aranym-1.1.0/src/disasm/disasm-arm.h0000664000175000017500000001443313454637621015463 0ustar joyjoy/* Interface between the opcode library and its callers. Copyright (C) 1999-2015 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. Written by Cygnus Support, 1993. The opcode library (libopcodes.a) provides instruction decoders for a large variety of instruction sets, callable with an identical interface, for making instruction-processing programs more independent of the instruction set being processed. */ #ifndef __DISASM_ARM_H__ #define __DISASM_ARM_H__ 1 #ifdef __cplusplus extern "C" { #endif #include "disasm-bfd.h" #include "arm.h" /* Cached mapping symbol state. */ enum map_type { MAP_ARM, MAP_THUMB, MAP_DATA }; struct opcode32 { arm_feature_set arch; /* Architecture defining this insn. */ uint32_t value; /* If arch is 0 then value is a sentinel. */ uint32_t mask; /* Recognise insn if (op & mask) == value. */ const char *assembler; /* How to disassemble this insn. */ }; struct opcode16 { arm_feature_set arch; /* Architecture defining this insn. */ uint16_t value, mask; /* Recognise insn if (op & mask) == value. */ const char *assembler; /* How to disassemble this insn. */ }; struct disassemble_info { fprintf_ftype fprintf_func; void *stream; /* Function used to get bytes to disassemble. MEMADDR is the address of the stuff to be disassembled, MYADDR is the address to put the bytes in, and LENGTH is the number of bytes to read. INFO is a pointer to this struct. Returns an errno value or 0 for success. */ int (*read_memory_func) (bfd_vma memaddr, bfd_byte *myaddr, size_t length, disassemble_info *dinfo); /* Function which should be called if we get an error that we can't recover from. STATUS is the errno value from read_memory_func and MEMADDR is the address that we were trying to read. INFO is a pointer to this struct. */ void (*memory_error_func) (int status, bfd_vma memaddr, disassemble_info *dinfo); /* Function called to print ADDR. */ void (*print_address_func) (bfd_vma addr, disassemble_info *dinfo); /* Function called to determine if there is a symbol at the given ADDR. If there is, the function returns 1, otherwise it returns 0. This is used by ports which support an overlay manager where the overlay number is held in the top part of an address. In some circumstances we want to include the overlay number in the address, (normally because there is a symbol associated with that address), but sometimes we want to mask out the overlay bits. */ int (*symbol_at_address_func) (bfd_vma addr, struct disassemble_info *dinfo); /* These are for buffer_read_memory. */ const bfd_byte *buffer; bfd_vma buffer_vma; size_t buffer_length; /* This variable may be set by the instruction decoder. It suggests the number of bytes objdump should display on a single line. If the instruction decoder sets this, it should always set it to the same value in order to get reasonable looking output. */ int bytes_per_line; /* The next two variables control the way objdump displays the raw data. */ /* For example, if bytes_per_line is 8 and bytes_per_chunk is 4, the */ /* output will look like this: 00: 00000000 00000000 with the chunks displayed according to "display_endian". */ int bytes_per_chunk; enum bfd_endian display_endian; /* Command line options specific to the target disassembler. */ const char *disassembler_options; /* Symbol table provided for targets that want to look at it. This is used on Arm to find mapping symbols and determine Arm/Thumb code. */ int symtab_pos; int symtab_size; /* For use by the disassembler. The top 16 bits are reserved for public use (and are documented here). The bottom 16 bits are for the internal use of the disassembler. */ unsigned long flags; /* Set if the disassembler has determined that there are one or more relocations associated with the instruction being disassembled. */ #define INSN_HAS_RELOC (1 << 31) /* Set if the user has requested the disassembly of data as well as code. */ #define DISASSEMBLE_DATA (1 << 30) /* Set if the user has specifically set the machine type encoded in the mach field of this structure. */ #define USER_SPECIFIED_MACHINE_TYPE (1 << 29) /* If non-zero then try not disassemble beyond this address, even if there are values left in the buffer. This address is the address of the nearest symbol forwards from the start of the disassembly, and it is assumed that it lies on the boundary between instructions. If an instruction spans this address then this is an error in the file being disassembled. */ bfd_vma stop_vma; struct { /* The features to use when disassembling optional instructions. */ arm_feature_set features; /* Whether any mapping symbols are present in the provided symbol table. -1 if we do not know yet, otherwise 0 or 1. */ int has_mapping_symbols; /* Track the last type (although this doesn't seem to be useful) */ enum map_type last_type; /* Tracking symbol table information */ int last_mapping_sym; bfd_vma last_mapping_addr; } priv; unsigned int regname_selected; bfd_boolean force_thumb; /* Current IT instruction state. This contains the same state as the IT bits in the CPSR. */ unsigned int ifthen_state; /* IT state for the next instruction. */ unsigned int ifthen_next_state; /* The address of the insn for which the IT state is valid. */ bfd_vma ifthen_address; #define IFTHEN_COND ((info->ifthen_state >> 4) & 0xf) /* Indicates that the current Conditional state is unconditional or outside an IT block. */ #define COND_UNCOND 16 }; #ifdef __cplusplus } #endif #endif /* __DISASM_ARM_H__ */ aranym-1.1.0/src/disasm/disasm-arm.cpp0000664000175000017500000001121513454637621016011 0ustar joyjoy/* * disasm-arm.cpp - arm disassembler (using opcodes library) * * Copyright (c) 2017 ARAnyM developer team * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * 2017-09-10 : Initial version - Thorsten Otto * */ #include "sysdeps.h" #include "cpu_emulation.h" #include "disasm-glue.h" #ifdef HAVE_DISASM_ARM /* rest of file */ #ifdef DISASM_USE_OPCODES #include /* * newer versions of dis-asm.h don't declare the * functions :( */ #ifdef __cplusplus extern "C" { #endif extern int print_insn_little_arm (bfd_vma, disassemble_info *); extern int print_insn_aarch64 (bfd_vma, disassemble_info *); #ifdef __cplusplus } #endif #else #include "disasm/disasm-arm.h" #include "disasm/disasm-builtin.h" #endif /* DISASM_USE_OPCODES */ struct opcodes_info { char linebuf[128]; size_t bufsize; size_t linepos; disassemble_info *opcodes_info; }; static int opcodes_printf(void *info, const char *format, ...) { struct opcodes_info *opcodes_info = (struct opcodes_info *)info; va_list args; int len; size_t remain; va_start(args, format); remain = opcodes_info->bufsize - opcodes_info->linepos - 1; len = vsnprintf(opcodes_info->linebuf + opcodes_info->linepos, remain, format, args); if (len > 0) { if ((size_t)len > remain) len = remain; opcodes_info->linepos += len; } va_end(args); return len; } const uint8 *arm_disasm(const uint8 *ainstr, char *buf, int allbytes) { struct opcodes_info info; disassemble_info ainfo; int len; int i; char *opcode; char *p, *p2; const int bytes_per_line = 12; info.linepos = 0; info.bufsize = sizeof(info.linebuf); info.opcodes_info = &ainfo; #ifdef DISASM_USE_OPCODES INIT_DISASSEMBLE_INFO(info.opcodes_info, &info, opcodes_printf); ainfo.buffer = (bfd_byte *)ainstr; ainfo.buffer_length = 16; ainfo.buffer_vma = (uintptr)ainstr; #ifdef CPU_arm ainfo.arch = bfd_arch_arm; ainfo.mach = bfd_mach_arm_unknown; disassemble_init_for_target(&ainfo); len = print_insn_little_arm(ainfo.buffer_vma, &ainfo); #else ainfo.arch = bfd_arch_aarch64; ainfo.mach = bfd_mach_aarch64; disassemble_init_for_target(&ainfo); len = print_insn_aarch64(ainfo.buffer_vma, &ainfo); #endif #endif #ifdef DISASM_USE_BUILTIN arm_disassemble_init(&info.opcodes_info, &info, opcodes_printf); #ifdef CPU_arm len = arm_print_insn((bfd_vma)ainstr, info.opcodes_info); #else len = aarch64_print_insn((bfd_vma)ainstr, info.opcodes_info); #endif #endif info.linebuf[info.linepos] = '\0'; #ifdef CPU_arm sprintf(buf, "[%08lx]", (unsigned long)ainstr); #else sprintf(buf, "[%016llx]", (unsigned long long)ainstr); #endif for (i = 0; i < bytes_per_line && (i + 4) <= len; i += 4) { sprintf(buf + strlen(buf), " %08x", ((uint32_t)ainstr[i + 0]) | ((uint32_t)ainstr[i + 1] << 8) | ((uint32_t)ainstr[i + 2] << 16) | ((uint32_t)ainstr[i + 3] << 24)); } for (; i < bytes_per_line; i++) strcat(buf, " "); opcode = info.linebuf; p = strchr(opcode, ' '); p2 = strchr(opcode, '\t'); if (p == NULL || p2 < p) p = p2; if (p) { *p++ = '\0'; while (*p == ' ') p++; } sprintf(buf + strlen(buf), " %-10s", opcode); if (p) strcat(buf, p); if (len > bytes_per_line && allbytes) { /* should not happen; arm instructions are always 4 bytes */ strcat(buf, "\n"); #ifdef CPU_arm sprintf(buf + strlen(buf), "[%08lx]", (unsigned long)ainstr + bytes_per_line); #else sprintf(buf + strlen(buf), "[%016llx]", (unsigned long long)ainstr + bytes_per_line); #endif for (i = bytes_per_line; (i + 4) <= len; i += 4) { sprintf(buf + strlen(buf), " %08x", ((uint32_t)ainstr[i + 0]) | ((uint32_t)ainstr[i + 1] << 8) | ((uint32_t)ainstr[i + 2] << 16) | ((uint32_t)ainstr[i + 3] << 24)); } } if (len <= 0) /* make sure we advance in case there was an error */ len = 1; ainstr += len; return ainstr; } #else extern int i_dont_care_that_ISOC_doesnt_like_empty_sourcefiles; #endif /* HAVE_DISASM_ARM */ aranym-1.1.0/src/disasm/disasm-arm-builtin.c0000664000175000017500000072133113454637621017124 0ustar joyjoy/* Instruction printing code for the ARM Copyright (C) 1994-2017 Free Software Foundation, Inc. Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) Modification by James G. Smith (jsmith@cygnus.co.uk) This file is part of libopcodes. This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include "sysdeps.h" #include "disasm-glue.h" #ifdef DISASM_USE_BUILTIN /* rest of file */ #include "disasm-arm.h" #include "disasm-builtin.h" #include #include #include #include #include #include #include #ifndef _ #define _(x) x #endif #ifndef UNUSED #define UNUSED(x) ((void)x) #endif #define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0])) #define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0) #define ISSPACE(c) ((c) == ' ' || (c) == '\t' || (c) == '\n' || (c) == '\r' || (c) == '\v' || (c) == '\f') #define INTERNAL_DISASSEMBLER_ERROR _("") /* FIXME: Belongs in global header. */ #ifndef strneq #define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0) #endif /* print_insn_coprocessor recognizes the following format control codes: %% % %c print condition code (always bits 28-31 in ARM mode) %q print shifter argument %u print condition code (unconditional in ARM mode, UNPREDICTABLE if not AL in Thumb) %A print address for ldc/stc/ldf/stf instruction %B print vstm/vldm register list %I print cirrus signed shift immediate: bits 0..3|4..6 %F print the COUNT field of a LFM/SFM instruction. %P print floating point precision in arithmetic insn %Q print floating point precision in ldf/stf insn %R print floating point rounding mode %c print as a condition code (for vsel) %r print as an ARM register %R as %<>r but r15 is UNPREDICTABLE %ru as %<>r but each u register must be unique. %d print the bitfield in decimal %k print immediate for VFPv3 conversion instruction %x print the bitfield in hex %X print the bitfield as 1 hex digit without leading "0x" %f print a floating point constant if >7 else a floating point register %w print as an iWMMXt width field - [bhwd]ss/us %g print as an iWMMXt 64-bit register %G print as an iWMMXt general purpose or control register %D print as a NEON D register %Q print as a NEON Q register %V print as a NEON D or Q register %E print a quarter-float immediate value %y print a single precision VFP reg. Codes: 0=>Sm, 1=>Sd, 2=>Sn, 3=>multi-list, 4=>Sm pair %z print a double precision VFP reg Codes: 0=>Dm, 1=>Dd, 2=>Dn, 3=>multi-list %'c print specified char iff bitfield is all ones %`c print specified char iff bitfield is all zeroes %?ab... select from array of values in big endian order %L print as an iWMMXt N/M width field. %Z print the Immediate of a WSHUFH instruction. %l like 'A' except use byte offsets for 'B' & 'H' versions. %i print 5-bit immediate in bits 8,3..0 (print "32" when 0) %r print register offset address for wldt/wstr instruction. */ enum opcode_sentinel_enum { SENTINEL_IWMMXT_START = 1, SENTINEL_IWMMXT_END, SENTINEL_GENERIC_START } opcode_sentinels; #define UNDEFINED_INSTRUCTION "\t\t; instruction: %0-31x" #define UNPREDICTABLE_INSTRUCTION "\t; " /* Common coprocessor opcodes shared between Arm and Thumb-2. */ static const struct opcode32 coprocessor_opcodes[] = { /* XScale instructions. */ { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e200010, 0x0fff0ff0, "mia%c\tacc0,%0-3r,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e280010, 0x0fff0ff0, "miaph%c\tacc0,%0-3r,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e2c0010, 0x0ffc0ff0, "mia%17'T%17`B%16'T%16`B%c\tacc0,%0-3r,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0c400000, 0x0ff00fff, "mar%c\tacc0,%12-15r,%16-19r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0c500000, 0x0ff00fff, "mra%c\t%12-15r,%16-19r,acc0" }, /* Intel Wireless MMX technology instructions. */ { ARM_FEATURE_CORE_LOW(0), SENTINEL_IWMMXT_START, 0, "" }, { ARM_FEATURE_COPROC(ARM_CEXT_IWMMXT), 0x0e130130, 0x0f3f0fff, "tandc%22-23w%c\t%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e400010, 0x0ff00f3f, "tbcst%6-7w%c\t%16-19g,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e130170, 0x0f3f0ff8, "textrc%22-23w%c\t%12-15r,#%0-2d" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e100070, 0x0f300ff0, "textrm%3?su%22-23w%c\t%12-15r,%16-19g,#%0-2d" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e600010, 0x0ff00f38, "tinsr%6-7w%c\t%16-19g,%12-15r,#%0-2d" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e000110, 0x0ff00fff, "tmcr%c\t%16-19G,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0c400000, 0x0ff00ff0, "tmcrr%c\t%0-3g,%12-15r,%16-19r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e2c0010, 0x0ffc0e10, "tmia%17?tb%16?tb%c\t%5-8g,%0-3r,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e200010, 0x0fff0e10, "tmia%c\t%5-8g,%0-3r,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e280010, 0x0fff0e10, "tmiaph%c\t%5-8g,%0-3r,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e100030, 0x0f300fff, "tmovmsk%22-23w%c\t%12-15r,%16-19g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e100110, 0x0ff00ff0, "tmrc%c\t%12-15r,%16-19G" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0c500000, 0x0ff00ff0, "tmrrc%c\t%12-15r,%16-19r,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e130150, 0x0f3f0fff, "torc%22-23w%c\t%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e120190, 0x0f3f0fff, "torvsc%22-23w%c\t%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e2001c0, 0x0f300fff, "wabs%22-23w%c\t%12-15g,%16-19g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e0001c0, 0x0f300fff, "wacc%22-23w%c\t%12-15g,%16-19g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e000180, 0x0f000ff0, "wadd%20-23w%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e2001a0, 0x0fb00ff0, "waddbhus%22?ml%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0ea001a0, 0x0ff00ff0, "waddsubhx%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e000020, 0x0f800ff0, "waligni%c\t%12-15g,%16-19g,%0-3g,#%20-22d" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e800020, 0x0fc00ff0, "walignr%20-21d%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e200000, 0x0fe00ff0, "wand%20'n%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e800000, 0x0fa00ff0, "wavg2%22?hb%20'r%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e400000, 0x0fe00ff0, "wavg4%20'r%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e000060, 0x0f300ff0, "wcmpeq%22-23w%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e100060, 0x0f100ff0, "wcmpgt%21?su%22-23w%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0xfc500100, 0xfe500f00, "wldrd\t%12-15g,%r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0xfc100100, 0xfe500f00, "wldrw\t%12-15G,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0c100000, 0x0e100e00, "wldr%L%c\t%12-15g,%l" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e400100, 0x0fc00ff0, "wmac%21?su%20'z%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e800100, 0x0fc00ff0, "wmadd%21?su%20'x%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0ec00100, 0x0fd00ff0, "wmadd%21?sun%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e000160, 0x0f100ff0, "wmax%21?su%22-23w%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e000080, 0x0f100fe0, "wmerge%c\t%12-15g,%16-19g,%0-3g,#%21-23d" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e0000a0, 0x0f800ff0, "wmia%21?tb%20?tb%22'n%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e800120, 0x0f800ff0, "wmiaw%21?tb%20?tb%22'n%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e100160, 0x0f100ff0, "wmin%21?su%22-23w%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e000100, 0x0fc00ff0, "wmul%21?su%20?ml%23'r%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0ed00100, 0x0fd00ff0, "wmul%21?sumr%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0ee000c0, 0x0fe00ff0, "wmulwsm%20`r%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0ec000c0, 0x0fe00ff0, "wmulwum%20`r%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0eb000c0, 0x0ff00ff0, "wmulwl%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e8000a0, 0x0f800ff0, "wqmia%21?tb%20?tb%22'n%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e100080, 0x0fd00ff0, "wqmulm%21'r%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0ec000e0, 0x0fd00ff0, "wqmulwm%21'r%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e000000, 0x0ff00ff0, "wor%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e000080, 0x0f000ff0, "wpack%20-23w%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0xfe300040, 0xff300ef0, "wror%22-23w\t%12-15g,%16-19g,#%i" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e300040, 0x0f300ff0, "wror%22-23w%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e300140, 0x0f300ff0, "wror%22-23wg%c\t%12-15g,%16-19g,%0-3G" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e000120, 0x0fa00ff0, "wsad%22?hb%20'z%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e0001e0, 0x0f000ff0, "wshufh%c\t%12-15g,%16-19g,#%Z" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0xfe100040, 0xff300ef0, "wsll%22-23w\t%12-15g,%16-19g,#%i" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e100040, 0x0f300ff0, "wsll%22-23w%8'g%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e100148, 0x0f300ffc, "wsll%22-23w%8'g%c\t%12-15g,%16-19g,%0-3G" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0xfe000040, 0xff300ef0, "wsra%22-23w\t%12-15g,%16-19g,#%i" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e000040, 0x0f300ff0, "wsra%22-23w%8'g%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e000148, 0x0f300ffc, "wsra%22-23w%8'g%c\t%12-15g,%16-19g,%0-3G" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0xfe200040, 0xff300ef0, "wsrl%22-23w\t%12-15g,%16-19g,#%i" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e200040, 0x0f300ff0, "wsrl%22-23w%8'g%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e200148, 0x0f300ffc, "wsrl%22-23w%8'g%c\t%12-15g,%16-19g,%0-3G" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0xfc400100, 0xfe500f00, "wstrd\t%12-15g,%r" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0xfc000100, 0xfe500f00, "wstrw\t%12-15G,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0c000000, 0x0e100e00, "wstr%L%c\t%12-15g,%l" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e0001a0, 0x0f000ff0, "wsub%20-23w%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0ed001c0, 0x0ff00ff0, "wsubaddhx%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e1001c0, 0x0f300ff0, "wabsdiff%22-23w%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e0000c0, 0x0fd00fff, "wunpckeh%21?sub%c\t%12-15g,%16-19g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e4000c0, 0x0fd00fff, "wunpckeh%21?suh%c\t%12-15g,%16-19g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e8000c0, 0x0fd00fff, "wunpckeh%21?suw%c\t%12-15g,%16-19g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e0000e0, 0x0f100fff, "wunpckel%21?su%22-23w%c\t%12-15g,%16-19g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e1000c0, 0x0f300ff0, "wunpckih%22-23w%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e1000e0, 0x0f300ff0, "wunpckil%22-23w%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_COPROC(ARM_CEXT_XSCALE), 0x0e100000, 0x0ff00ff0, "wxor%c\t%12-15g,%16-19g,%0-3g" }, { ARM_FEATURE_CORE_LOW(0), SENTINEL_IWMMXT_END, 0, "" }, /* Floating point coprocessor (FPA) instructions. */ { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e000100, 0x0ff08f10, "adf%c%P%R\t%12-14f,%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e100100, 0x0ff08f10, "muf%c%P%R\t%12-14f,%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e200100, 0x0ff08f10, "suf%c%P%R\t%12-14f,%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e300100, 0x0ff08f10, "rsf%c%P%R\t%12-14f,%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e400100, 0x0ff08f10, "dvf%c%P%R\t%12-14f,%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e500100, 0x0ff08f10, "rdf%c%P%R\t%12-14f,%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e600100, 0x0ff08f10, "pow%c%P%R\t%12-14f,%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e700100, 0x0ff08f10, "rpw%c%P%R\t%12-14f,%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e800100, 0x0ff08f10, "rmf%c%P%R\t%12-14f,%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e900100, 0x0ff08f10, "fml%c%P%R\t%12-14f,%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0ea00100, 0x0ff08f10, "fdv%c%P%R\t%12-14f,%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0eb00100, 0x0ff08f10, "frd%c%P%R\t%12-14f,%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0ec00100, 0x0ff08f10, "pol%c%P%R\t%12-14f,%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e008100, 0x0ff08f10, "mvf%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e108100, 0x0ff08f10, "mnf%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e208100, 0x0ff08f10, "abs%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e308100, 0x0ff08f10, "rnd%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e408100, 0x0ff08f10, "sqt%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e508100, 0x0ff08f10, "log%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e608100, 0x0ff08f10, "lgn%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e708100, 0x0ff08f10, "exp%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e808100, 0x0ff08f10, "sin%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e908100, 0x0ff08f10, "cos%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0ea08100, 0x0ff08f10, "tan%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0eb08100, 0x0ff08f10, "asn%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0ec08100, 0x0ff08f10, "acs%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0ed08100, 0x0ff08f10, "atn%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0ee08100, 0x0ff08f10, "urd%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0ef08100, 0x0ff08f10, "nrm%c%P%R\t%12-14f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e000110, 0x0ff00f1f, "flt%c%P%R\t%16-18f,%12-15r" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e100110, 0x0fff0f98, "fix%c%R\t%12-15r,%0-2f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e200110, 0x0fff0fff, "wfs%c\t%12-15r" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e300110, 0x0fff0fff, "rfs%c\t%12-15r" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e400110, 0x0fff0fff, "wfc%c\t%12-15r" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e500110, 0x0fff0fff, "rfc%c\t%12-15r" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0e90f110, 0x0ff8fff0, "cmf%c\t%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0eb0f110, 0x0ff8fff0, "cnf%c\t%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0ed0f110, 0x0ff8fff0, "cmfe%c\t%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0ef0f110, 0x0ff8fff0, "cnfe%c\t%16-18f,%0-3f" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0c000100, 0x0e100f00, "stf%c%Q\t%12-14f,%A" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V1), 0x0c100100, 0x0e100f00, "ldf%c%Q\t%12-14f,%A" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V2), 0x0c000200, 0x0e100f00, "sfm%c\t%12-14f,%F,%A" }, { ARM_FEATURE_COPROC(FPU_FPA_EXT_V2), 0x0c100200, 0x0e100f00, "lfm%c\t%12-14f,%F,%A" }, /* ARMv8-M Mainline Security Extensions instructions. */ { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8M_MAIN), 0xec300a00, 0xfff0ffff, "vlldm\t%16-19r" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8M_MAIN), 0xec200a00, 0xfff0ffff, "vlstm\t%16-19r" }, /* Register load/store. */ { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD | FPU_NEON_EXT_V1), 0x0d2d0b00, 0x0fbf0f01, "vpush%c\t%B" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD | FPU_NEON_EXT_V1), 0x0d200b00, 0x0fb00f01, "vstmdb%c\t%16-19r!,%B" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD | FPU_NEON_EXT_V1), 0x0d300b00, 0x0fb00f01, "vldmdb%c\t%16-19r!,%B" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD | FPU_NEON_EXT_V1), 0x0c800b00, 0x0f900f01, "vstmia%c\t%16-19r%21'!,%B" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD | FPU_NEON_EXT_V1), 0x0cbd0b00, 0x0fbf0f01, "vpop%c\t%B" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD | FPU_NEON_EXT_V1), 0x0c900b00, 0x0f900f01, "vldmia%c\t%16-19r%21'!,%B" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD | FPU_NEON_EXT_V1), 0x0d000b00, 0x0f300f00, "vstr%c\t%12-15,22D,%A" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD | FPU_NEON_EXT_V1), 0x0d100b00, 0x0f300f00, "vldr%c\t%12-15,22D,%A" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0d2d0a00, 0x0fbf0f00, "vpush%c\t%y3" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0d200a00, 0x0fb00f00, "vstmdb%c\t%16-19r!,%y3" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0d300a00, 0x0fb00f00, "vldmdb%c\t%16-19r!,%y3" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0c800a00, 0x0f900f00, "vstmia%c\t%16-19r%21'!,%y3" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0cbd0a00, 0x0fbf0f00, "vpop%c\t%y3" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0c900a00, 0x0f900f00, "vldmia%c\t%16-19r%21'!,%y3" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0d000a00, 0x0f300f00, "vstr%c\t%y1,%A" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0d100a00, 0x0f300f00, "vldr%c\t%y1,%A" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0d200b01, 0x0fb00f01, "fstmdbx%c\t%16-19r!,%z3\t;@ Deprecated" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0d300b01, 0x0fb00f01, "fldmdbx%c\t%16-19r!,%z3\t;@ Deprecated" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0c800b01, 0x0f900f01, "fstmiax%c\t%16-19r%21'!,%z3\t;@ Deprecated" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0c900b01, 0x0f900f01, "fldmiax%c\t%16-19r%21'!,%z3\t;@ Deprecated" }, /* Data transfer between ARM and NEON registers. */ { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0x0e800b10, 0x0ff00f70, "vdup%c.32\t%16-19,7D,%12-15r" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0x0e800b30, 0x0ff00f70, "vdup%c.16\t%16-19,7D,%12-15r" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0x0ea00b10, 0x0ff00f70, "vdup%c.32\t%16-19,7Q,%12-15r" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0x0ea00b30, 0x0ff00f70, "vdup%c.16\t%16-19,7Q,%12-15r" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0x0ec00b10, 0x0ff00f70, "vdup%c.8\t%16-19,7D,%12-15r" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0x0ee00b10, 0x0ff00f70, "vdup%c.8\t%16-19,7Q,%12-15r" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0x0c400b10, 0x0ff00fd0, "vmov%c\t%0-3,5D,%12-15r,%16-19r" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0x0c500b10, 0x0ff00fd0, "vmov%c\t%12-15r,%16-19r,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0x0e000b10, 0x0fd00f70, "vmov%c.32\t%16-19,7D[%21d],%12-15r" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0x0e100b10, 0x0f500f70, "vmov%c.32\t%12-15r,%16-19,7D[%21d]" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0x0e000b30, 0x0fd00f30, "vmov%c.16\t%16-19,7D[%6,21d],%12-15r" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0x0e100b30, 0x0f500f30, "vmov%c.%23?us16\t%12-15r,%16-19,7D[%6,21d]" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0x0e400b10, 0x0fd00f10, "vmov%c.8\t%16-19,7D[%5,6,21d],%12-15r" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0x0e500b10, 0x0f500f10, "vmov%c.%23?us8\t%12-15r,%16-19,7D[%5,6,21d]" }, /* Half-precision conversion instructions. */ { ARM_FEATURE_COPROC(FPU_VFP_EXT_ARMV8), 0x0eb20b40, 0x0fbf0f50, "vcvt%7?tb%c.f64.f16\t%z1,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_ARMV8), 0x0eb30b40, 0x0fbf0f50, "vcvt%7?tb%c.f16.f64\t%y1,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_FP16), 0x0eb20a40, 0x0fbf0f50, "vcvt%7?tb%c.f32.f16\t%y1,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_FP16), 0x0eb30a40, 0x0fbf0f50, "vcvt%7?tb%c.f16.f32\t%y1,%y0" }, /* Floating point coprocessor (VFP) instructions. */ { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ee00a10, 0x0fff0fff, "vmsr%c\tfpsid,%12-15r" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ee10a10, 0x0fff0fff, "vmsr%c\tfpscr,%12-15r" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ee60a10, 0x0fff0fff, "vmsr%c\tmvfr1,%12-15r" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ee70a10, 0x0fff0fff, "vmsr%c\tmvfr0,%12-15r" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ee80a10, 0x0fff0fff, "vmsr%c\tfpexc,%12-15r" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ee90a10, 0x0fff0fff, "vmsr%c\tfpinst,%12-15r\t@ Impl def" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0eea0a10, 0x0fff0fff, "vmsr%c\tfpinst2,%12-15r\t@ Impl def" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ef00a10, 0x0fff0fff, "vmrs%c\t%12-15r,fpsid" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ef1fa10, 0x0fffffff, "vmrs%c\tAPSR_nzcv,fpscr" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ef10a10, 0x0fff0fff, "vmrs%c\t%12-15r,fpscr" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ef60a10, 0x0fff0fff, "vmrs%c\t%12-15r,mvfr1" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ef70a10, 0x0fff0fff, "vmrs%c\t%12-15r,mvfr0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ef80a10, 0x0fff0fff, "vmrs%c\t%12-15r,fpexc" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ef90a10, 0x0fff0fff, "vmrs%c\t%12-15r,fpinst\t@ Impl def" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0efa0a10, 0x0fff0fff, "vmrs%c\t%12-15r,fpinst2\t@ Impl def" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0e000b10, 0x0fd00fff, "vmov%c.32\t%z2[%21d],%12-15r" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0e100b10, 0x0fd00fff, "vmov%c.32\t%12-15r,%z2[%21d]" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ee00a10, 0x0ff00fff, "vmsr%c\t,%12-15r" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ef00a10, 0x0ff00fff, "vmrs%c\t%12-15r," }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0e000a10, 0x0ff00f7f, "vmov%c\t%y2,%12-15r" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0e100a10, 0x0ff00f7f, "vmov%c\t%12-15r,%y2" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0eb50a40, 0x0fbf0f70, "vcmp%7'e%c.f32\t%y1,#0.0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0eb50b40, 0x0fbf0f70, "vcmp%7'e%c.f64\t%z1,#0.0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0eb00a40, 0x0fbf0fd0, "vmov%c.f32\t%y1,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0eb00ac0, 0x0fbf0fd0, "vabs%c.f32\t%y1,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0eb00b40, 0x0fbf0fd0, "vmov%c.f64\t%z1,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0eb00bc0, 0x0fbf0fd0, "vabs%c.f64\t%z1,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0eb10a40, 0x0fbf0fd0, "vneg%c.f32\t%y1,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0eb10ac0, 0x0fbf0fd0, "vsqrt%c.f32\t%y1,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0eb10b40, 0x0fbf0fd0, "vneg%c.f64\t%z1,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0eb10bc0, 0x0fbf0fd0, "vsqrt%c.f64\t%z1,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0eb70ac0, 0x0fbf0fd0, "vcvt%c.f64.f32\t%z1,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0eb70bc0, 0x0fbf0fd0, "vcvt%c.f32.f64\t%y1,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0eb80a40, 0x0fbf0f50, "vcvt%c.f32.%7?su32\t%y1,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0eb80b40, 0x0fbf0f50, "vcvt%c.f64.%7?su32\t%z1,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0eb40a40, 0x0fbf0f50, "vcmp%7'e%c.f32\t%y1,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0eb40b40, 0x0fbf0f50, "vcmp%7'e%c.f64\t%z1,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V3xD), 0x0eba0a40, 0x0fbe0f50, "vcvt%c.f32.%16?us%7?31%7?26\t%y1,%y1,#%5,0-3k" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V3), 0x0eba0b40, 0x0fbe0f50, "vcvt%c.f64.%16?us%7?31%7?26\t%z1,%z1,#%5,0-3k" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0ebc0a40, 0x0fbe0f50, "vcvt%7`r%c.%16?su32.f32\t%y1,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0ebc0b40, 0x0fbe0f50, "vcvt%7`r%c.%16?su32.f64\t%y1,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V3xD), 0x0ebe0a40, 0x0fbe0f50, "vcvt%c.%16?us%7?31%7?26.f32\t%y1,%y1,#%5,0-3k" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V3), 0x0ebe0b40, 0x0fbe0f50, "vcvt%c.%16?us%7?31%7?26.f64\t%z1,%z1,#%5,0-3k" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0c500b10, 0x0fb00ff0, "vmov%c\t%12-15r,%16-19r,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V3xD), 0x0eb00a00, 0x0fb00ff0, "vmov%c.f32\t%y1,#%0-3,16-19E" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V3), 0x0eb00b00, 0x0fb00ff0, "vmov%c.f64\t%z1,#%0-3,16-19E" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V2), 0x0c400a10, 0x0ff00fd0, "vmov%c\t%y4,%12-15r,%16-19r" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V2), 0x0c400b10, 0x0ff00fd0, "vmov%c\t%z0,%12-15r,%16-19r" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V2), 0x0c500a10, 0x0ff00fd0, "vmov%c\t%12-15r,%16-19r,%y4" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0e000a00, 0x0fb00f50, "vmla%c.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0e000a40, 0x0fb00f50, "vmls%c.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0e000b00, 0x0fb00f50, "vmla%c.f64\t%z1,%z2,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0e000b40, 0x0fb00f50, "vmls%c.f64\t%z1,%z2,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0e100a00, 0x0fb00f50, "vnmls%c.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0e100a40, 0x0fb00f50, "vnmla%c.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0e100b00, 0x0fb00f50, "vnmls%c.f64\t%z1,%z2,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0e100b40, 0x0fb00f50, "vnmla%c.f64\t%z1,%z2,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0e200a00, 0x0fb00f50, "vmul%c.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0e200a40, 0x0fb00f50, "vnmul%c.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0e200b00, 0x0fb00f50, "vmul%c.f64\t%z1,%z2,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0e200b40, 0x0fb00f50, "vnmul%c.f64\t%z1,%z2,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0e300a00, 0x0fb00f50, "vadd%c.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0e300a40, 0x0fb00f50, "vsub%c.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0e300b00, 0x0fb00f50, "vadd%c.f64\t%z1,%z2,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0e300b40, 0x0fb00f50, "vsub%c.f64\t%z1,%z2,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1xD), 0x0e800a00, 0x0fb00f50, "vdiv%c.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_V1), 0x0e800b00, 0x0fb00f50, "vdiv%c.f64\t%z1,%z2,%z0" }, /* Cirrus coprocessor instructions. */ { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0d100400, 0x0f500f00, "cfldrs%c\tmvf%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0c100400, 0x0f500f00, "cfldrs%c\tmvf%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0d500400, 0x0f500f00, "cfldrd%c\tmvd%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0c500400, 0x0f500f00, "cfldrd%c\tmvd%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0d100500, 0x0f500f00, "cfldr32%c\tmvfx%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0c100500, 0x0f500f00, "cfldr32%c\tmvfx%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0d500500, 0x0f500f00, "cfldr64%c\tmvdx%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0c500500, 0x0f500f00, "cfldr64%c\tmvdx%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0d000400, 0x0f500f00, "cfstrs%c\tmvf%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0c000400, 0x0f500f00, "cfstrs%c\tmvf%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0d400400, 0x0f500f00, "cfstrd%c\tmvd%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0c400400, 0x0f500f00, "cfstrd%c\tmvd%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0d000500, 0x0f500f00, "cfstr32%c\tmvfx%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0c000500, 0x0f500f00, "cfstr32%c\tmvfx%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0d400500, 0x0f500f00, "cfstr64%c\tmvdx%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0c400500, 0x0f500f00, "cfstr64%c\tmvdx%12-15d,%A" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e000450, 0x0ff00ff0, "cfmvsr%c\tmvf%16-19d,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100450, 0x0ff00ff0, "cfmvrs%c\t%12-15r,mvf%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e000410, 0x0ff00ff0, "cfmvdlr%c\tmvd%16-19d,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100410, 0x0ff00ff0, "cfmvrdl%c\t%12-15r,mvd%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e000430, 0x0ff00ff0, "cfmvdhr%c\tmvd%16-19d,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100430, 0x0ff00fff, "cfmvrdh%c\t%12-15r,mvd%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e000510, 0x0ff00fff, "cfmv64lr%c\tmvdx%16-19d,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100510, 0x0ff00fff, "cfmvr64l%c\t%12-15r,mvdx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e000530, 0x0ff00fff, "cfmv64hr%c\tmvdx%16-19d,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100530, 0x0ff00fff, "cfmvr64h%c\t%12-15r,mvdx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e200440, 0x0ff00fff, "cfmval32%c\tmvax%12-15d,mvfx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100440, 0x0ff00fff, "cfmv32al%c\tmvfx%12-15d,mvax%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e200460, 0x0ff00fff, "cfmvam32%c\tmvax%12-15d,mvfx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100460, 0x0ff00fff, "cfmv32am%c\tmvfx%12-15d,mvax%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e200480, 0x0ff00fff, "cfmvah32%c\tmvax%12-15d,mvfx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100480, 0x0ff00fff, "cfmv32ah%c\tmvfx%12-15d,mvax%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e2004a0, 0x0ff00fff, "cfmva32%c\tmvax%12-15d,mvfx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e1004a0, 0x0ff00fff, "cfmv32a%c\tmvfx%12-15d,mvax%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e2004c0, 0x0ff00fff, "cfmva64%c\tmvax%12-15d,mvdx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e1004c0, 0x0ff00fff, "cfmv64a%c\tmvdx%12-15d,mvax%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e2004e0, 0x0fff0fff, "cfmvsc32%c\tdspsc,mvdx%12-15d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e1004e0, 0x0fff0fff, "cfmv32sc%c\tmvdx%12-15d,dspsc" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e000400, 0x0ff00fff, "cfcpys%c\tmvf%12-15d,mvf%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e000420, 0x0ff00fff, "cfcpyd%c\tmvd%12-15d,mvd%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e000460, 0x0ff00fff, "cfcvtsd%c\tmvd%12-15d,mvf%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e000440, 0x0ff00fff, "cfcvtds%c\tmvf%12-15d,mvd%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e000480, 0x0ff00fff, "cfcvt32s%c\tmvf%12-15d,mvfx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e0004a0, 0x0ff00fff, "cfcvt32d%c\tmvd%12-15d,mvfx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e0004c0, 0x0ff00fff, "cfcvt64s%c\tmvf%12-15d,mvdx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e0004e0, 0x0ff00fff, "cfcvt64d%c\tmvd%12-15d,mvdx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100580, 0x0ff00fff, "cfcvts32%c\tmvfx%12-15d,mvf%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e1005a0, 0x0ff00fff, "cfcvtd32%c\tmvfx%12-15d,mvd%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e1005c0, 0x0ff00fff, "cftruncs32%c\tmvfx%12-15d,mvf%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e1005e0, 0x0ff00fff, "cftruncd32%c\tmvfx%12-15d,mvd%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e000550, 0x0ff00ff0, "cfrshl32%c\tmvfx%16-19d,mvfx%0-3d,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e000570, 0x0ff00ff0, "cfrshl64%c\tmvdx%16-19d,mvdx%0-3d,%12-15r" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e000500, 0x0ff00f10, "cfsh32%c\tmvfx%12-15d,mvfx%16-19d,#%I" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e200500, 0x0ff00f10, "cfsh64%c\tmvdx%12-15d,mvdx%16-19d,#%I" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100490, 0x0ff00ff0, "cfcmps%c\t%12-15r,mvf%16-19d,mvf%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e1004b0, 0x0ff00ff0, "cfcmpd%c\t%12-15r,mvd%16-19d,mvd%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100590, 0x0ff00ff0, "cfcmp32%c\t%12-15r,mvfx%16-19d,mvfx%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e1005b0, 0x0ff00ff0, "cfcmp64%c\t%12-15r,mvdx%16-19d,mvdx%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e300400, 0x0ff00fff, "cfabss%c\tmvf%12-15d,mvf%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e300420, 0x0ff00fff, "cfabsd%c\tmvd%12-15d,mvd%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e300440, 0x0ff00fff, "cfnegs%c\tmvf%12-15d,mvf%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e300460, 0x0ff00fff, "cfnegd%c\tmvd%12-15d,mvd%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e300480, 0x0ff00ff0, "cfadds%c\tmvf%12-15d,mvf%16-19d,mvf%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e3004a0, 0x0ff00ff0, "cfaddd%c\tmvd%12-15d,mvd%16-19d,mvd%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e3004c0, 0x0ff00ff0, "cfsubs%c\tmvf%12-15d,mvf%16-19d,mvf%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e3004e0, 0x0ff00ff0, "cfsubd%c\tmvd%12-15d,mvd%16-19d,mvd%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100400, 0x0ff00ff0, "cfmuls%c\tmvf%12-15d,mvf%16-19d,mvf%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100420, 0x0ff00ff0, "cfmuld%c\tmvd%12-15d,mvd%16-19d,mvd%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e300500, 0x0ff00fff, "cfabs32%c\tmvfx%12-15d,mvfx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e300520, 0x0ff00fff, "cfabs64%c\tmvdx%12-15d,mvdx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e300540, 0x0ff00fff, "cfneg32%c\tmvfx%12-15d,mvfx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e300560, 0x0ff00fff, "cfneg64%c\tmvdx%12-15d,mvdx%16-19d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e300580, 0x0ff00ff0, "cfadd32%c\tmvfx%12-15d,mvfx%16-19d,mvfx%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e3005a0, 0x0ff00ff0, "cfadd64%c\tmvdx%12-15d,mvdx%16-19d,mvdx%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e3005c0, 0x0ff00ff0, "cfsub32%c\tmvfx%12-15d,mvfx%16-19d,mvfx%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e3005e0, 0x0ff00ff0, "cfsub64%c\tmvdx%12-15d,mvdx%16-19d,mvdx%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100500, 0x0ff00ff0, "cfmul32%c\tmvfx%12-15d,mvfx%16-19d,mvfx%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100520, 0x0ff00ff0, "cfmul64%c\tmvdx%12-15d,mvdx%16-19d,mvdx%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100540, 0x0ff00ff0, "cfmac32%c\tmvfx%12-15d,mvfx%16-19d,mvfx%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100560, 0x0ff00ff0, "cfmsc32%c\tmvfx%12-15d,mvfx%16-19d,mvfx%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e000600, 0x0ff00f10, "cfmadd32%c\tmvax%5-7d,mvfx%12-15d,mvfx%16-19d,mvfx%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e100600, 0x0ff00f10, "cfmsub32%c\tmvax%5-7d,mvfx%12-15d,mvfx%16-19d,mvfx%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e200600, 0x0ff00f10, "cfmadda32%c\tmvax%5-7d,mvax%12-15d,mvfx%16-19d,mvfx%0-3d" }, { ARM_FEATURE_COPROC(ARM_CEXT_MAVERICK), 0x0e300600, 0x0ff00f10, "cfmsuba32%c\tmvax%5-7d,mvax%12-15d,mvfx%16-19d,mvfx%0-3d" }, /* VFP Fused multiply add instructions. */ { ARM_FEATURE_COPROC(FPU_VFP_EXT_FMA), 0x0ea00a00, 0x0fb00f50, "vfma%c.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_FMA), 0x0ea00b00, 0x0fb00f50, "vfma%c.f64\t%z1,%z2,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_FMA), 0x0ea00a40, 0x0fb00f50, "vfms%c.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_FMA), 0x0ea00b40, 0x0fb00f50, "vfms%c.f64\t%z1,%z2,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_FMA), 0x0e900a40, 0x0fb00f50, "vfnma%c.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_FMA), 0x0e900b40, 0x0fb00f50, "vfnma%c.f64\t%z1,%z2,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_FMA), 0x0e900a00, 0x0fb00f50, "vfnms%c.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_FMA), 0x0e900b00, 0x0fb00f50, "vfnms%c.f64\t%z1,%z2,%z0" }, /* FP v5. */ { ARM_FEATURE_COPROC(FPU_VFP_EXT_ARMV8), 0xfe000a00, 0xff800f50, "vsel%20-21c%u.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_ARMV8), 0xfe000b00, 0xff800f50, "vsel%20-21c%u.f64\t%z1,%z2,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_ARMV8), 0xfe800a00, 0xffb00f50, "vmaxnm%u.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_ARMV8), 0xfe800b00, 0xffb00f50, "vmaxnm%u.f64\t%z1,%z2,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_ARMV8), 0xfe800a40, 0xffb00f50, "vminnm%u.f32\t%y1,%y2,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_ARMV8), 0xfe800b40, 0xffb00f50, "vminnm%u.f64\t%z1,%z2,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_ARMV8), 0xfebc0a40, 0xffbc0f50, "vcvt%16-17?mpna%u.%7?su32.f32\t%y1,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_ARMV8), 0xfebc0b40, 0xffbc0f50, "vcvt%16-17?mpna%u.%7?su32.f64\t%y1,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_ARMV8), 0x0eb60a40, 0x0fbe0f50, "vrint%7,16??xzr%c.f32\t%y1,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_ARMV8), 0x0eb60b40, 0x0fbe0f50, "vrint%7,16??xzr%c.f64\t%z1,%z0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_ARMV8), 0xfeb80a40, 0xffbc0fd0, "vrint%16-17?mpna%u.f32\t%y1,%y0" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_ARMV8), 0xfeb80b40, 0xffbc0fd0, "vrint%16-17?mpna%u.f64\t%z1,%z0" }, /* Generic coprocessor instructions. */ { ARM_FEATURE_CORE_LOW(0), SENTINEL_GENERIC_START, 0, "" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5E), 0x0c400000, 0x0ff00000, "mcrr%c\t%8-11d,%4-7d,%12-15R,%16-19r,cr%0-3d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5E), 0x0c500000, 0x0ff00000, "mrrc%c\t%8-11d,%4-7d,%12-15Ru,%16-19Ru,cr%0-3d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V2), 0x0e000000, 0x0f000010, "cdp%c\t%8-11d,%20-23d,cr%12-15d,cr%16-19d,cr%0-3d,{%5-7d}" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V2), 0x0e10f010, 0x0f10f010, "mrc%c\t%8-11d,%21-23d,APSR_nzcv,cr%16-19d,cr%0-3d,{%5-7d}" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V2), 0x0e100010, 0x0f100010, "mrc%c\t%8-11d,%21-23d,%12-15r,cr%16-19d,cr%0-3d,{%5-7d}" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V2), 0x0e000010, 0x0f100010, "mcr%c\t%8-11d,%21-23d,%12-15R,cr%16-19d,cr%0-3d,{%5-7d}" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V2), 0x0c000000, 0x0e100000, "stc%22'l%c\t%8-11d,cr%12-15d,%A" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V2), 0x0c100000, 0x0e100000, "ldc%22'l%c\t%8-11d,cr%12-15d,%A" }, /* V6 coprocessor instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xfc500000, 0xfff00000, "mrrc2%c\t%8-11d,%4-7d,%12-15Ru,%16-19Ru,cr%0-3d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xfc400000, 0xfff00000, "mcrr2%c\t%8-11d,%4-7d,%12-15R,%16-19R,cr%0-3d" }, /* ARMv8.3 AdvSIMD instructions in the space of coprocessor 8. */ { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8_3A), 0xfc800800, 0xfeb00f10, "vcadd%c.f16\t%12-15,22V,%16-19,7V,%0-3,5V,#%24?29%24'70" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8_3A), 0xfc900800, 0xfeb00f10, "vcadd%c.f32\t%12-15,22V,%16-19,7V,%0-3,5V,#%24?29%24'70" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8_3A), 0xfc200800, 0xff300f10, "vcmla%c.f16\t%12-15,22V,%16-19,7V,%0-3,5V,#%23'90" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8_3A), 0xfd200800, 0xff300f10, "vcmla%c.f16\t%12-15,22V,%16-19,7V,%0-3,5V,#%23?21%23?780" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8_3A), 0xfc300800, 0xff300f10, "vcmla%c.f32\t%12-15,22V,%16-19,7V,%0-3,5V,#%23'90" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8_3A), 0xfd300800, 0xff300f10, "vcmla%c.f32\t%12-15,22V,%16-19,7V,%0-3,5V,#%23?21%23?780" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8_3A), 0xfe000800, 0xfea00f10, "vcmla%c.f16\t%12-15,22V,%16-19,7V,%0-3D[%5?10],#%20'90" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8_3A), 0xfe200800, 0xfea00f10, "vcmla%c.f16\t%12-15,22V,%16-19,7V,%0-3D[%5?10],#%20?21%23?780" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8_3A), 0xfe800800, 0xfea00f10, "vcmla%c.f32\t%12-15,22V,%16-19,7V,%0-3,5D[0],#%20'90" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8_3A), 0xfea00800, 0xfea00f10, "vcmla%c.f32\t%12-15,22V,%16-19,7V,%0-3,5D[0],#%20?21%23?780" }, /* V5 coprocessor instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V5), 0xfc100000, 0xfe100000, "ldc2%22'l%c\t%8-11d,cr%12-15d,%A" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5), 0xfc000000, 0xfe100000, "stc2%22'l%c\t%8-11d,cr%12-15d,%A" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5), 0xfe000000, 0xff000010, "cdp2%c\t%8-11d,%20-23d,cr%12-15d,cr%16-19d,cr%0-3d,{%5-7d}" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5), 0xfe000010, 0xff100010, "mcr2%c\t%8-11d,%21-23d,%12-15R,cr%16-19d,cr%0-3d,{%5-7d}" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5), 0xfe100010, 0xff100010, "mrc2%c\t%8-11d,%21-23d,%12-15r,cr%16-19d,cr%0-3d,{%5-7d}" }, /* ARMv8.2 half-precision Floating point coprocessor 9 (VFP) instructions. cp_num: bit <11:8> == 0b1001. cond: bit <31:28> == 0b1110, otherwise, it's UNPREDICTABLE. */ { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0eb009c0, 0x0fbf0fd0, "vabs%c.f16\t%y1,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0e300900, 0x0fb00f50, "vadd%c.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0eb40940, 0x0fbf0f50, "vcmp%7'e%c.f16\t%y1,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0eb50940, 0x0fbf0f70, "vcmp%7'e%c.f16\t%y1,#0.0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0eba09c0, 0x0fbe0fd0, "vcvt%c.f16.%16?us%7?31%7?26\t%y1,%y1,#%5,0-3k" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0ebe09c0, 0x0fbe0fd0, "vcvt%c.%16?us%7?31%7?26.f16\t%y1,%y1,#%5,0-3k" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0ebc0940, 0x0fbe0f50, "vcvt%7`r%c.%16?su32.f16\t%y1,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0eb80940, 0x0fbf0f50, "vcvt%c.f16.%7?su32\t%y1,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xfebc0940, 0xffbc0f50, "vcvt%16-17?mpna%u.%7?su32.f16\t%y1,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0e800900, 0x0fb00f50, "vdiv%c.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0ea00900, 0x0fb00f50, "vfma%c.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0ea00940, 0x0fb00f50, "vfms%c.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0e900940, 0x0fb00f50, "vfnma%c.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0e900900, 0x0fb00f50, "vfnms%c.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xfeb00ac0, 0xffbf0fd0, "vins.f16\t%y1,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xfeb00a40, 0xffbf0fd0, "vmovx%c.f16\t%y1,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0d100900, 0x0f300f00, "vldr%c.16\t%y1,%A" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0d000900, 0x0f300f00, "vstr%c.16\t%y1,%A" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xfe800900, 0xffb00f50, "vmaxnm%c.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xfe800940, 0xffb00f50, "vminnm%c.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0e000900, 0x0fb00f50, "vmla%c.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0e000940, 0x0fb00f50, "vmls%c.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0e100910, 0x0ff00f7f, "vmov%c.f16\t%12-15r,%y2" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0e000910, 0x0ff00f7f, "vmov%c.f16\t%y2,%12-15r" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xeb00900, 0x0fb00ff0, "vmov%c.f16\t%y1,#%0-3,16-19E" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0e200900, 0x0fb00f50, "vmul%c.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0eb10940, 0x0fbf0fd0, "vneg%c.f16\t%y1,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0e100940, 0x0fb00f50, "vnmla%c.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0e100900, 0x0fb00f50, "vnmls%c.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0e200940, 0x0fb00f50, "vnmul%c.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0eb60940, 0x0fbe0f50, "vrint%7,16??xzr%c.f16\t%y1,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xfeb80940, 0xffbc0fd0, "vrint%16-17?mpna%u.f16\t%y1,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xfe000900, 0xff800f50, "vsel%20-21c%u.f16\t%y1,%y2,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0eb109c0, 0x0fbf0fd0, "vsqrt%c.f16\t%y1,%y0" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0x0e300940, 0x0fb00f50, "vsub%c.f16\t%y1,%y2,%y0" }, /* ARMv8.3 javascript conversion instruction. */ { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8_3A), 0x0eb90bc0, 0x0fbf0fd0, "vjcvt%c.s32.f64\t%y1,%z0" }, { ARM_FEATURE_CORE_LOW(0), 0, 0, 0 } }; /* Neon opcode table: This does not encode the top byte -- that is checked by the print_insn_neon routine, as it depends on whether we are doing thumb32 or arm32 disassembly. */ /* print_insn_neon recognizes the following format control codes: %% % %c print condition code %u print condition code (unconditional in ARM mode, UNPREDICTABLE if not AL in Thumb) %A print v{st,ld}[1234] operands %B print v{st,ld}[1234] any one operands %C print v{st,ld}[1234] single->all operands %D print scalar %E print vmov, vmvn, vorr, vbic encoded constant %F print vtbl,vtbx register list %r print as an ARM register %d print the bitfield in decimal %e print the 2^N - bitfield in decimal %D print as a NEON D register %Q print as a NEON Q register %R print as a NEON D or Q register %Sn print byte scaled width limited by n %Tn print short scaled width limited by n %Un print long scaled width limited by n %'c print specified char iff bitfield is all ones %`c print specified char iff bitfield is all zeroes %?ab... select from array of values in big endian order. */ static const struct opcode32 neon_opcodes[] = { /* Extract. */ { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2b00840, 0xffb00850, "vext%c.8\t%12-15,22R,%16-19,7R,%0-3,5R,#%8-11d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2b00000, 0xffb00810, "vext%c.8\t%12-15,22R,%16-19,7R,%0-3,5R,#%8-11d" }, /* Move data element to all lanes. */ { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b40c00, 0xffb70f90, "vdup%c.32\t%12-15,22R,%0-3,5D[%19d]" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b20c00, 0xffb30f90, "vdup%c.16\t%12-15,22R,%0-3,5D[%18-19d]" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b10c00, 0xffb10f90, "vdup%c.8\t%12-15,22R,%0-3,5D[%17-19d]" }, /* Table lookup. */ { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b00800, 0xffb00c50, "vtbl%c.8\t%12-15,22D,%F,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b00840, 0xffb00c50, "vtbx%c.8\t%12-15,22D,%F,%0-3,5D" }, /* Half-precision conversions. */ { ARM_FEATURE_COPROC(FPU_VFP_EXT_FP16), 0xf3b60600, 0xffbf0fd0, "vcvt%c.f16.f32\t%12-15,22D,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_VFP_EXT_FP16), 0xf3b60700, 0xffbf0fd0, "vcvt%c.f32.f16\t%12-15,22Q,%0-3,5D" }, /* NEON fused multiply add instructions. */ { ARM_FEATURE_COPROC(FPU_NEON_EXT_FMA), 0xf2000c10, 0xffb00f10, "vfma%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf2100c10, 0xffb00f10, "vfma%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_FMA), 0xf2200c10, 0xffb00f10, "vfms%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf2300c10, 0xffb00f10, "vfms%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, /* Two registers,miscellaneous. */ { ARM_FEATURE_COPROC(FPU_NEON_EXT_ARMV8), 0xf3ba0400, 0xffbf0c10, "vrint%7-9?p?m?zaxn%u.f32\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3b60400, 0xffbf0c10, "vrint%7-9?p?m?zaxn%u.f16\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_ARMV8), 0xf3bb0000, 0xffbf0c10, "vcvt%8-9?mpna%u.%7?us32.f32\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3b70000, 0xffbf0c10, "vcvt%8-9?mpna%u.%7?us16.f16\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf3b00300, 0xffbf0fd0, "aese%u.8\t%12-15,22Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf3b00340, 0xffbf0fd0, "aesd%u.8\t%12-15,22Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf3b00380, 0xffbf0fd0, "aesmc%u.8\t%12-15,22Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf3b003c0, 0xffbf0fd0, "aesimc%u.8\t%12-15,22Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf3b902c0, 0xffbf0fd0, "sha1h%u.32\t%12-15,22Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf3ba0380, 0xffbf0fd0, "sha1su1%u.32\t%12-15,22Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf3ba03c0, 0xffbf0fd0, "sha256su0%u.32\t%12-15,22Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2880a10, 0xfebf0fd0, "vmovl%c.%24?us8\t%12-15,22Q,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2900a10, 0xfebf0fd0, "vmovl%c.%24?us16\t%12-15,22Q,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00a10, 0xfebf0fd0, "vmovl%c.%24?us32\t%12-15,22Q,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b00500, 0xffbf0f90, "vcnt%c.8\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b00580, 0xffbf0f90, "vmvn%c\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b20000, 0xffbf0f90, "vswp%c\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b20200, 0xffb30fd0, "vmovn%c.i%18-19T2\t%12-15,22D,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b20240, 0xffb30fd0, "vqmovun%c.s%18-19T2\t%12-15,22D,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b20280, 0xffb30fd0, "vqmovn%c.s%18-19T2\t%12-15,22D,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b202c0, 0xffb30fd0, "vqmovn%c.u%18-19T2\t%12-15,22D,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b20300, 0xffb30fd0, "vshll%c.i%18-19S2\t%12-15,22Q,%0-3,5D,#%18-19S2" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3bb0400, 0xffbf0e90, "vrecpe%c.%8?fu%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3b70400, 0xffbf0e90, "vrecpe%c.%8?fu16\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3bb0480, 0xffbf0e90, "vrsqrte%c.%8?fu%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3b70480, 0xffbf0e90, "vrsqrte%c.%8?fu16\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b00000, 0xffb30f90, "vrev64%c.%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b00080, 0xffb30f90, "vrev32%c.%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b00100, 0xffb30f90, "vrev16%c.%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b00400, 0xffb30f90, "vcls%c.s%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b00480, 0xffb30f90, "vclz%c.i%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b00700, 0xffb30f90, "vqabs%c.s%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b00780, 0xffb30f90, "vqneg%c.s%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b20080, 0xffb30f90, "vtrn%c.%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b20100, 0xffb30f90, "vuzp%c.%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b20180, 0xffb30f90, "vzip%c.%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b10000, 0xffb30b90, "vcgt%c.%10?fs%18-19S2\t%12-15,22R,%0-3,5R,#0" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b10080, 0xffb30b90, "vcge%c.%10?fs%18-19S2\t%12-15,22R,%0-3,5R,#0" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b10100, 0xffb30b90, "vceq%c.%10?fi%18-19S2\t%12-15,22R,%0-3,5R,#0" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b10180, 0xffb30b90, "vcle%c.%10?fs%18-19S2\t%12-15,22R,%0-3,5R,#0" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b10200, 0xffb30b90, "vclt%c.%10?fs%18-19S2\t%12-15,22R,%0-3,5R,#0" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b10300, 0xffb30b90, "vabs%c.%10?fs%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b10380, 0xffb30b90, "vneg%c.%10?fs%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b00200, 0xffb30f10, "vpaddl%c.%7?us%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3b00600, 0xffb30f10, "vpadal%c.%7?us%18-19S2\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3bb0600, 0xffbf0e10, "vcvt%c.%7-8?usff%18-19Sa.%7-8?ffus%18-19Sa\t%12-15,22R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3b70600, 0xffbf0e10, "vcvt%c.%7-8?usff16.%7-8?ffus16\t%12-15,22R,%0-3,5R" }, /* Three registers of the same length. */ { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf2000c40, 0xffb00f50, "sha1c%u.32\t%12-15,22Q,%16-19,7Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf2100c40, 0xffb00f50, "sha1p%u.32\t%12-15,22Q,%16-19,7Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf2200c40, 0xffb00f50, "sha1m%u.32\t%12-15,22Q,%16-19,7Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf2300c40, 0xffb00f50, "sha1su0%u.32\t%12-15,22Q,%16-19,7Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf3000c40, 0xffb00f50, "sha256h%u.32\t%12-15,22Q,%16-19,7Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf3100c40, 0xffb00f50, "sha256h2%u.32\t%12-15,22Q,%16-19,7Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf3200c40, 0xffb00f50, "sha256su1%u.32\t%12-15,22Q,%16-19,7Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_ARMV8), 0xf3000f10, 0xffb00f10, "vmaxnm%u.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3100f10, 0xffb00f10, "vmaxnm%u.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_ARMV8), 0xf3200f10, 0xffb00f10, "vminnm%u.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3300f10, 0xffb00f10, "vminnm%u.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000110, 0xffb00f10, "vand%c\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2100110, 0xffb00f10, "vbic%c\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2200110, 0xffb00f10, "vorr%c\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2300110, 0xffb00f10, "vorn%c\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3000110, 0xffb00f10, "veor%c\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3100110, 0xffb00f10, "vbsl%c\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3200110, 0xffb00f10, "vbit%c\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3300110, 0xffb00f10, "vbif%c\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000d00, 0xffb00f10, "vadd%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf2100d00, 0xffb00f10, "vadd%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000d10, 0xffb00f10, "vmla%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf2100d10, 0xffb00f10, "vmla%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000e00, 0xffb00f10, "vceq%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf2100e00, 0xffb00f10, "vceq%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000f00, 0xffb00f10, "vmax%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf2100f00, 0xffb00f10, "vmax%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000f10, 0xffb00f10, "vrecps%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf2100f10, 0xffb00f10, "vrecps%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2200d00, 0xffb00f10, "vsub%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf2300d00, 0xffb00f10, "vsub%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2200d10, 0xffb00f10, "vmls%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf2300d10, 0xffb00f10, "vmls%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2200f00, 0xffb00f10, "vmin%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf2300f00, 0xffb00f10, "vmin%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2200f10, 0xffb00f10, "vrsqrts%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf2300f10, 0xffb00f10, "vrsqrts%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3000d00, 0xffb00f10, "vpadd%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3100d00, 0xffb00f10, "vpadd%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3000d10, 0xffb00f10, "vmul%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3100d10, 0xffb00f10, "vmul%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3000e00, 0xffb00f10, "vcge%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3100e00, 0xffb00f10, "vcge%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3000e10, 0xffb00f10, "vacge%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3100e10, 0xffb00f10, "vacge%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3000f00, 0xffb00f10, "vpmax%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3100f00, 0xffb00f10, "vpmax%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3200d00, 0xffb00f10, "vabd%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3300d00, 0xffb00f10, "vabd%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3200e00, 0xffb00f10, "vcgt%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3300e00, 0xffb00f10, "vcgt%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3200e10, 0xffb00f10, "vacgt%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3300e10, 0xffb00f10, "vacgt%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3200f00, 0xffb00f10, "vpmin%c.f32\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf3300f00, 0xffb00f10, "vpmin%c.f16\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000800, 0xff800f10, "vadd%c.i%20-21S3\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000810, 0xff800f10, "vtst%c.%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000900, 0xff800f10, "vmla%c.i%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000b00, 0xff800f10, "vqdmulh%c.s%20-21S6\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000b10, 0xff800f10, "vpadd%c.i%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3000800, 0xff800f10, "vsub%c.i%20-21S3\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3000810, 0xff800f10, "vceq%c.i%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3000900, 0xff800f10, "vmls%c.i%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3000b00, 0xff800f10, "vqrdmulh%c.s%20-21S6\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000000, 0xfe800f10, "vhadd%c.%24?us%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000010, 0xfe800f10, "vqadd%c.%24?us%20-21S3\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000100, 0xfe800f10, "vrhadd%c.%24?us%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000200, 0xfe800f10, "vhsub%c.%24?us%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000210, 0xfe800f10, "vqsub%c.%24?us%20-21S3\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000300, 0xfe800f10, "vcgt%c.%24?us%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000310, 0xfe800f10, "vcge%c.%24?us%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000400, 0xfe800f10, "vshl%c.%24?us%20-21S3\t%12-15,22R,%0-3,5R,%16-19,7R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000410, 0xfe800f10, "vqshl%c.%24?us%20-21S3\t%12-15,22R,%0-3,5R,%16-19,7R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000500, 0xfe800f10, "vrshl%c.%24?us%20-21S3\t%12-15,22R,%0-3,5R,%16-19,7R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000510, 0xfe800f10, "vqrshl%c.%24?us%20-21S3\t%12-15,22R,%0-3,5R,%16-19,7R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000600, 0xfe800f10, "vmax%c.%24?us%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000610, 0xfe800f10, "vmin%c.%24?us%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000700, 0xfe800f10, "vabd%c.%24?us%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000710, 0xfe800f10, "vaba%c.%24?us%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000910, 0xfe800f10, "vmul%c.%24?pi%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000a00, 0xfe800f10, "vpmax%c.%24?us%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2000a10, 0xfe800f10, "vpmin%c.%24?us%20-21S2\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_RDMA), 0xf3000b10, 0xff800f10, "vqrdmlah%c.s%20-21S6\t%12-15,22R,%16-19,7R,%0-3,5R" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_RDMA), 0xf3000c10, 0xff800f10, "vqrdmlsh%c.s%20-21S6\t%12-15,22R,%16-19,7R,%0-3,5R" }, /* One register and an immediate value. */ { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800e10, 0xfeb80fb0, "vmov%c.i8\t%12-15,22R,%E" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800e30, 0xfeb80fb0, "vmov%c.i64\t%12-15,22R,%E" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800f10, 0xfeb80fb0, "vmov%c.f32\t%12-15,22R,%E" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800810, 0xfeb80db0, "vmov%c.i16\t%12-15,22R,%E" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800830, 0xfeb80db0, "vmvn%c.i16\t%12-15,22R,%E" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800910, 0xfeb80db0, "vorr%c.i16\t%12-15,22R,%E" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800930, 0xfeb80db0, "vbic%c.i16\t%12-15,22R,%E" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800c10, 0xfeb80eb0, "vmov%c.i32\t%12-15,22R,%E" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800c30, 0xfeb80eb0, "vmvn%c.i32\t%12-15,22R,%E" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800110, 0xfeb809b0, "vorr%c.i32\t%12-15,22R,%E" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800130, 0xfeb809b0, "vbic%c.i32\t%12-15,22R,%E" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800010, 0xfeb808b0, "vmov%c.i32\t%12-15,22R,%E" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800030, 0xfeb808b0, "vmvn%c.i32\t%12-15,22R,%E" }, /* Two registers and a shift amount. */ { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2880810, 0xffb80fd0, "vshrn%c.i16\t%12-15,22D,%0-3,5Q,#%16-18e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2880850, 0xffb80fd0, "vrshrn%c.i16\t%12-15,22D,%0-3,5Q,#%16-18e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2880810, 0xfeb80fd0, "vqshrun%c.s16\t%12-15,22D,%0-3,5Q,#%16-18e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2880850, 0xfeb80fd0, "vqrshrun%c.s16\t%12-15,22D,%0-3,5Q,#%16-18e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2880910, 0xfeb80fd0, "vqshrn%c.%24?us16\t%12-15,22D,%0-3,5Q,#%16-18e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2880950, 0xfeb80fd0, "vqrshrn%c.%24?us16\t%12-15,22D,%0-3,5Q,#%16-18e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2880a10, 0xfeb80fd0, "vshll%c.%24?us8\t%12-15,22Q,%0-3,5D,#%16-18d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2900810, 0xffb00fd0, "vshrn%c.i32\t%12-15,22D,%0-3,5Q,#%16-19e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2900850, 0xffb00fd0, "vrshrn%c.i32\t%12-15,22D,%0-3,5Q,#%16-19e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2880510, 0xffb80f90, "vshl%c.%24?us8\t%12-15,22R,%0-3,5R,#%16-18d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3880410, 0xffb80f90, "vsri%c.8\t%12-15,22R,%0-3,5R,#%16-18e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3880510, 0xffb80f90, "vsli%c.8\t%12-15,22R,%0-3,5R,#%16-18d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3880610, 0xffb80f90, "vqshlu%c.s8\t%12-15,22R,%0-3,5R,#%16-18d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2900810, 0xfeb00fd0, "vqshrun%c.s32\t%12-15,22D,%0-3,5Q,#%16-19e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2900850, 0xfeb00fd0, "vqrshrun%c.s32\t%12-15,22D,%0-3,5Q,#%16-19e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2900910, 0xfeb00fd0, "vqshrn%c.%24?us32\t%12-15,22D,%0-3,5Q,#%16-19e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2900950, 0xfeb00fd0, "vqrshrn%c.%24?us32\t%12-15,22D,%0-3,5Q,#%16-19e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2900a10, 0xfeb00fd0, "vshll%c.%24?us16\t%12-15,22Q,%0-3,5D,#%16-19d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2880010, 0xfeb80f90, "vshr%c.%24?us8\t%12-15,22R,%0-3,5R,#%16-18e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2880110, 0xfeb80f90, "vsra%c.%24?us8\t%12-15,22R,%0-3,5R,#%16-18e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2880210, 0xfeb80f90, "vrshr%c.%24?us8\t%12-15,22R,%0-3,5R,#%16-18e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2880310, 0xfeb80f90, "vrsra%c.%24?us8\t%12-15,22R,%0-3,5R,#%16-18e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2880710, 0xfeb80f90, "vqshl%c.%24?us8\t%12-15,22R,%0-3,5R,#%16-18d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00810, 0xffa00fd0, "vshrn%c.i64\t%12-15,22D,%0-3,5Q,#%16-20e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00850, 0xffa00fd0, "vrshrn%c.i64\t%12-15,22D,%0-3,5Q,#%16-20e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2900510, 0xffb00f90, "vshl%c.%24?us16\t%12-15,22R,%0-3,5R,#%16-19d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3900410, 0xffb00f90, "vsri%c.16\t%12-15,22R,%0-3,5R,#%16-19e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3900510, 0xffb00f90, "vsli%c.16\t%12-15,22R,%0-3,5R,#%16-19d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3900610, 0xffb00f90, "vqshlu%c.s16\t%12-15,22R,%0-3,5R,#%16-19d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00a10, 0xfea00fd0, "vshll%c.%24?us32\t%12-15,22Q,%0-3,5D,#%16-20d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2900010, 0xfeb00f90, "vshr%c.%24?us16\t%12-15,22R,%0-3,5R,#%16-19e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2900110, 0xfeb00f90, "vsra%c.%24?us16\t%12-15,22R,%0-3,5R,#%16-19e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2900210, 0xfeb00f90, "vrshr%c.%24?us16\t%12-15,22R,%0-3,5R,#%16-19e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2900310, 0xfeb00f90, "vrsra%c.%24?us16\t%12-15,22R,%0-3,5R,#%16-19e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2900710, 0xfeb00f90, "vqshl%c.%24?us16\t%12-15,22R,%0-3,5R,#%16-19d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00810, 0xfea00fd0, "vqshrun%c.s64\t%12-15,22D,%0-3,5Q,#%16-20e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00850, 0xfea00fd0, "vqrshrun%c.s64\t%12-15,22D,%0-3,5Q,#%16-20e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00910, 0xfea00fd0, "vqshrn%c.%24?us64\t%12-15,22D,%0-3,5Q,#%16-20e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00950, 0xfea00fd0, "vqrshrn%c.%24?us64\t%12-15,22D,%0-3,5Q,#%16-20e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00510, 0xffa00f90, "vshl%c.%24?us32\t%12-15,22R,%0-3,5R,#%16-20d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3a00410, 0xffa00f90, "vsri%c.32\t%12-15,22R,%0-3,5R,#%16-20e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3a00510, 0xffa00f90, "vsli%c.32\t%12-15,22R,%0-3,5R,#%16-20d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3a00610, 0xffa00f90, "vqshlu%c.s32\t%12-15,22R,%0-3,5R,#%16-20d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00010, 0xfea00f90, "vshr%c.%24?us32\t%12-15,22R,%0-3,5R,#%16-20e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00110, 0xfea00f90, "vsra%c.%24?us32\t%12-15,22R,%0-3,5R,#%16-20e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00210, 0xfea00f90, "vrshr%c.%24?us32\t%12-15,22R,%0-3,5R,#%16-20e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00310, 0xfea00f90, "vrsra%c.%24?us32\t%12-15,22R,%0-3,5R,#%16-20e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00710, 0xfea00f90, "vqshl%c.%24?us32\t%12-15,22R,%0-3,5R,#%16-20d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800590, 0xff800f90, "vshl%c.%24?us64\t%12-15,22R,%0-3,5R,#%16-21d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3800490, 0xff800f90, "vsri%c.64\t%12-15,22R,%0-3,5R,#%16-21e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3800590, 0xff800f90, "vsli%c.64\t%12-15,22R,%0-3,5R,#%16-21d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3800690, 0xff800f90, "vqshlu%c.s64\t%12-15,22R,%0-3,5R,#%16-21d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800090, 0xfe800f90, "vshr%c.%24?us64\t%12-15,22R,%0-3,5R,#%16-21e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800190, 0xfe800f90, "vsra%c.%24?us64\t%12-15,22R,%0-3,5R,#%16-21e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800290, 0xfe800f90, "vrshr%c.%24?us64\t%12-15,22R,%0-3,5R,#%16-21e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800390, 0xfe800f90, "vrsra%c.%24?us64\t%12-15,22R,%0-3,5R,#%16-21e" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800790, 0xfe800f90, "vqshl%c.%24?us64\t%12-15,22R,%0-3,5R,#%16-21d" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2a00e10, 0xfea00e90, "vcvt%c.%24,8?usff32.%24,8?ffus32\t%12-15,22R,%0-3,5R,#%16-20e" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_FP16_INST), 0xf2a00c10, 0xfea00e90, "vcvt%c.%24,8?usff16.%24,8?ffus16\t%12-15,22R,%0-3,5R,#%16-20e" }, /* Three registers of different lengths. */ { ARM_FEATURE_COPROC(FPU_CRYPTO_EXT_ARMV8), 0xf2a00e00, 0xfeb00f50, "vmull%c.p64\t%12-15,22Q,%16-19,7D,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800e00, 0xfea00f50, "vmull%c.p%20S0\t%12-15,22Q,%16-19,7D,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800400, 0xff800f50, "vaddhn%c.i%20-21T2\t%12-15,22D,%16-19,7Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800600, 0xff800f50, "vsubhn%c.i%20-21T2\t%12-15,22D,%16-19,7Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800900, 0xff800f50, "vqdmlal%c.s%20-21S6\t%12-15,22Q,%16-19,7D,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800b00, 0xff800f50, "vqdmlsl%c.s%20-21S6\t%12-15,22Q,%16-19,7D,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800d00, 0xff800f50, "vqdmull%c.s%20-21S6\t%12-15,22Q,%16-19,7D,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3800400, 0xff800f50, "vraddhn%c.i%20-21T2\t%12-15,22D,%16-19,7Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3800600, 0xff800f50, "vrsubhn%c.i%20-21T2\t%12-15,22D,%16-19,7Q,%0-3,5Q" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800000, 0xfe800f50, "vaddl%c.%24?us%20-21S2\t%12-15,22Q,%16-19,7D,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800100, 0xfe800f50, "vaddw%c.%24?us%20-21S2\t%12-15,22Q,%16-19,7Q,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800200, 0xfe800f50, "vsubl%c.%24?us%20-21S2\t%12-15,22Q,%16-19,7D,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800300, 0xfe800f50, "vsubw%c.%24?us%20-21S2\t%12-15,22Q,%16-19,7Q,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800500, 0xfe800f50, "vabal%c.%24?us%20-21S2\t%12-15,22Q,%16-19,7D,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800700, 0xfe800f50, "vabdl%c.%24?us%20-21S2\t%12-15,22Q,%16-19,7D,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800800, 0xfe800f50, "vmlal%c.%24?us%20-21S2\t%12-15,22Q,%16-19,7D,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800a00, 0xfe800f50, "vmlsl%c.%24?us%20-21S2\t%12-15,22Q,%16-19,7D,%0-3,5D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800c00, 0xfe800f50, "vmull%c.%24?us%20-21S2\t%12-15,22Q,%16-19,7D,%0-3,5D" }, /* Two registers and a scalar. */ { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800040, 0xff800f50, "vmla%c.i%20-21S6\t%12-15,22D,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800140, 0xff900f50, "vmla%c.f%20-21Sa\t%12-15,22D,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(ARM_EXT2_FP16_INST), 0xf2900140, 0xffb00f50, "vmla%c.f16\t%12-15,22D,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800340, 0xff800f50, "vqdmlal%c.s%20-21S6\t%12-15,22Q,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800440, 0xff800f50, "vmls%c.i%20-21S6\t%12-15,22D,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800540, 0xff900f50, "vmls%c.f%20-21S6\t%12-15,22D,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(ARM_EXT2_FP16_INST), 0xf2900540, 0xffb00f50, "vmls%c.f16\t%12-15,22D,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800740, 0xff800f50, "vqdmlsl%c.s%20-21S6\t%12-15,22Q,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800840, 0xff800f50, "vmul%c.i%20-21S6\t%12-15,22D,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800940, 0xff900f50, "vmul%c.f%20-21Sa\t%12-15,22D,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(ARM_EXT2_FP16_INST), 0xf2900940, 0xffb00f50, "vmul%c.f16\t%12-15,22D,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800b40, 0xff800f50, "vqdmull%c.s%20-21S6\t%12-15,22Q,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800c40, 0xff800f50, "vqdmulh%c.s%20-21S6\t%12-15,22D,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800d40, 0xff800f50, "vqrdmulh%c.s%20-21S6\t%12-15,22D,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3800040, 0xff800f50, "vmla%c.i%20-21S6\t%12-15,22Q,%16-19,7Q,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3800140, 0xff900f50, "vmla%c.f%20-21Sa\t%12-15,22Q,%16-19,7Q,%D" }, { ARM_FEATURE_COPROC(ARM_EXT2_FP16_INST), 0xf3900140, 0xffb00f50, "vmla%c.f16\t%12-15,22Q,%16-19,7Q,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3800440, 0xff800f50, "vmls%c.i%20-21S6\t%12-15,22Q,%16-19,7Q,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3800540, 0xff900f50, "vmls%c.f%20-21Sa\t%12-15,22Q,%16-19,7Q,%D" }, { ARM_FEATURE_COPROC(ARM_EXT2_FP16_INST), 0xf3900540, 0xffb00f50, "vmls%c.f16\t%12-15,22Q,%16-19,7Q,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3800840, 0xff800f50, "vmul%c.i%20-21S6\t%12-15,22Q,%16-19,7Q,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3800940, 0xff900f50, "vmul%c.f%20-21Sa\t%12-15,22Q,%16-19,7Q,%D" }, { ARM_FEATURE_COPROC(ARM_EXT2_FP16_INST), 0xf3900940, 0xffb00f50, "vmul%c.f16\t%12-15,22Q,%16-19,7Q,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3800c40, 0xff800f50, "vqdmulh%c.s%20-21S6\t%12-15,22Q,%16-19,7Q,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf3800d40, 0xff800f50, "vqrdmulh%c.s%20-21S6\t%12-15,22Q,%16-19,7Q,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800240, 0xfe800f50, "vmlal%c.%24?us%20-21S6\t%12-15,22Q,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800640, 0xfe800f50, "vmlsl%c.%24?us%20-21S6\t%12-15,22Q,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf2800a40, 0xfe800f50, "vmull%c.%24?us%20-21S6\t%12-15,22Q,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_RDMA), 0xf2800e40, 0xff800f50, "vqrdmlah%c.s%20-21S6\t%12-15,22D,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_RDMA), 0xf2800f40, 0xff800f50, "vqrdmlsh%c.s%20-21S6\t%12-15,22D,%16-19,7D,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_RDMA), 0xf3800e40, 0xff800f50, "vqrdmlah%c.s%20-21S6\t%12-15,22Q,%16-19,7Q,%D" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_RDMA), 0xf3800f40, 0xff800f50, "vqrdmlsh%c.s%20-21S6\t%12-15,22Q,%16-19,7Q,%D" }, /* Element and structure load/store. */ { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4a00fc0, 0xffb00fc0, "vld4%c.32\t%C" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4a00c00, 0xffb00f00, "vld1%c.%6-7S2\t%C" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4a00d00, 0xffb00f00, "vld2%c.%6-7S2\t%C" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4a00e00, 0xffb00f00, "vld3%c.%6-7S2\t%C" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4a00f00, 0xffb00f00, "vld4%c.%6-7S2\t%C" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4000200, 0xff900f00, "v%21?ls%21?dt1%c.%6-7S3\t%A" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4000300, 0xff900f00, "v%21?ls%21?dt2%c.%6-7S2\t%A" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4000400, 0xff900f00, "v%21?ls%21?dt3%c.%6-7S2\t%A" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4000500, 0xff900f00, "v%21?ls%21?dt3%c.%6-7S2\t%A" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4000600, 0xff900f00, "v%21?ls%21?dt1%c.%6-7S3\t%A" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4000700, 0xff900f00, "v%21?ls%21?dt1%c.%6-7S3\t%A" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4000800, 0xff900f00, "v%21?ls%21?dt2%c.%6-7S2\t%A" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4000900, 0xff900f00, "v%21?ls%21?dt2%c.%6-7S2\t%A" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4000a00, 0xff900f00, "v%21?ls%21?dt1%c.%6-7S3\t%A" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4000000, 0xff900e00, "v%21?ls%21?dt4%c.%6-7S2\t%A" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4800000, 0xff900300, "v%21?ls%21?dt1%c.%10-11S2\t%B" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4800100, 0xff900300, "v%21?ls%21?dt2%c.%10-11S2\t%B" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4800200, 0xff900300, "v%21?ls%21?dt3%c.%10-11S2\t%B" }, { ARM_FEATURE_COPROC(FPU_NEON_EXT_V1), 0xf4800300, 0xff900300, "v%21?ls%21?dt4%c.%10-11S2\t%B" }, { ARM_FEATURE_CORE_LOW(0), 0, 0, 0 } }; /* Opcode tables: ARM,16-bit Thumb,32-bit Thumb. All three are partially ordered: they must be searched linearly from the top to obtain a correct match. */ /* print_insn_arm recognizes the following format control codes: %% % %a print address for ldr/str instruction %s print address for ldr/str halfword/signextend instruction %S like %s but allow UNPREDICTABLE addressing %b print branch destination %c print condition code (always bits 28-31) %m print register mask for ldm/stm instruction %o print operand2 (immediate or register + shift) %p print 'p' iff bits 12-15 are 15 %t print 't' iff bit 21 set and bit 24 clear %B print arm BLX(1) destination %C print the PSR sub type. %U print barrier type. %P print address for pli instruction. %r print as an ARM register %T print as an ARM register + 1 %R as %r but r15 is UNPREDICTABLE %{r|R}u as %{r|R} but if matches the other %u field then is UNPREDICTABLE %{r|R}U as %{r|R} but if matches the other %U field then is UNPREDICTABLE %d print the bitfield in decimal %W print the bitfield plus one in decimal %x print the bitfield in hex %X print the bitfield as 1 hex digit without leading "0x" %'c print specified char iff bitfield is all ones %`c print specified char iff bitfield is all zeroes %?ab... select from array of values in big endian order %e print arm SMI operand (bits 0..7,8..19). %E print the LSB and WIDTH fields of a BFI or BFC instruction. %V print the 16-bit immediate field of a MOVT or MOVW instruction. %R print the SPSR/CPSR or banked register of an MRS. */ static const struct opcode32 arm_opcodes[] = { /* ARM instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0xe1a00000, 0xffffffff, "nop\t\t\t; (mov r0,r0)" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0xe7f000f0, 0xfff000f0, "udf\t#%e" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T | ARM_EXT_V5), 0x012FFF10, 0x0ffffff0, "bx%c\t%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V2), 0x00000090, 0x0fe000f0, "mul%20's%c\t%16-19R,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V2), 0x00200090, 0x0fe000f0, "mla%20's%c\t%16-19R,%0-3R,%8-11R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V2S), 0x01000090, 0x0fb00ff0, "swp%22'b%c\t%12-15RU,%0-3Ru,[%16-19RuU]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V3M), 0x00800090, 0x0fa000f0, "%22?sumull%20's%c\t%12-15Ru,%16-19Ru,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V3M), 0x00a00090, 0x0fa000f0, "%22?sumlal%20's%c\t%12-15Ru,%16-19Ru,%0-3R,%8-11R" }, /* V8.2 RAS extension instructions. */ { ARM_FEATURE_CORE_HIGH(ARM_EXT2_RAS), 0xe320f010, 0xffffffff, "esb" }, /* V8 instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0x0320f005, 0x0fffffff, "sevl" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe1000070, 0xfff000f0, "hlt\t0x%16-19X%12-15X%8-11X%0-3X" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_ATOMICS), 0x01800e90, 0x0ff00ff0, "stlex%c\t%12-15r,%0-3r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT2_ATOMICS), 0x01900e9f, 0x0ff00fff, "ldaex%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0x01a00e90, 0x0ff00ff0, "stlexd%c\t%12-15r,%0-3r,%0-3T,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0x01b00e9f, 0x0ff00fff, "ldaexd%c\t%12-15r,%12-15T,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT2_ATOMICS), 0x01c00e90, 0x0ff00ff0, "stlexb%c\t%12-15r,%0-3r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT2_ATOMICS), 0x01d00e9f, 0x0ff00fff, "ldaexb%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT2_ATOMICS), 0x01e00e90, 0x0ff00ff0, "stlexh%c\t%12-15r,%0-3r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT2_ATOMICS), 0x01f00e9f, 0x0ff00fff, "ldaexh%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT2_ATOMICS), 0x0180fc90, 0x0ff0fff0, "stl%c\t%0-3r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT2_ATOMICS), 0x01900c9f, 0x0ff00fff, "lda%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT2_ATOMICS), 0x01c0fc90, 0x0ff0fff0, "stlb%c\t%0-3r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT2_ATOMICS), 0x01d00c9f, 0x0ff00fff, "ldab%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT2_ATOMICS), 0x01e0fc90, 0x0ff0fff0, "stlh%c\t%0-3r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT2_ATOMICS), 0x01f00c9f, 0x0ff00fff, "ldah%c\t%12-15r,[%16-19R]" }, /* CRC32 instructions. */ { ARM_FEATURE_COPROC(CRC_EXT_ARMV8), 0xe1000040, 0xfff00ff0, "crc32b\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_COPROC(CRC_EXT_ARMV8), 0xe1200040, 0xfff00ff0, "crc32h\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_COPROC(CRC_EXT_ARMV8), 0xe1400040, 0xfff00ff0, "crc32w\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_COPROC(CRC_EXT_ARMV8), 0xe1000240, 0xfff00ff0, "crc32cb\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_COPROC(CRC_EXT_ARMV8), 0xe1200240, 0xfff00ff0, "crc32ch\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_COPROC(CRC_EXT_ARMV8), 0xe1400240, 0xfff00ff0, "crc32cw\t%12-15R,%16-19R,%0-3R" }, /* Privileged Access Never extension instructions. */ { ARM_FEATURE_CORE_HIGH(ARM_EXT2_PAN), 0xf1100000, 0xfffffdff, "setpan\t#%9-9d" }, /* Virtualization Extension instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_VIRT), 0x0160006e, 0x0fffffff, "eret%c" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_VIRT), 0x01400070, 0x0ff000f0, "hvc%c\t%e" }, /* Integer Divide Extension instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_ADIV), 0x0710f010, 0x0ff0f0f0, "sdiv%c\t%16-19r,%0-3r,%8-11r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_ADIV), 0x0730f010, 0x0ff0f0f0, "udiv%c\t%16-19r,%0-3r,%8-11r" }, /* MP Extension instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_MP), 0xf410f000, 0xfc70f000, "pldw\t%a" }, /* V7 instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V7), 0xf450f000, 0xfd70f000, "pli\t%P" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V7), 0x0320f0f0, 0x0ffffff0, "dbg%c\t#%0-3d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xf57ff051, 0xfffffff3, "dmb\t%U" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xf57ff041, 0xfffffff3, "dsb\t%U" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V7), 0xf57ff050, 0xfffffff0, "dmb\t%U" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V7), 0xf57ff040, 0xfffffff0, "dsb\t%U" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V7), 0xf57ff060, 0xfffffff0, "isb\t%U" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V7), 0x0320f000, 0x0fffffff, "nop%c\t{%0-7d}" }, /* ARM V6T2 instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0x07c0001f, 0x0fe0007f, "bfc%c\t%12-15R,%E" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0x07c00010, 0x0fe00070, "bfi%c\t%12-15R,%0-3r,%E" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0x00600090, 0x0ff000f0, "mls%c\t%16-19R,%0-3R,%8-11R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0x002000b0, 0x0f3000f0, "strht%c\t%12-15R,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0x00300090, 0x0f3000f0, UNDEFINED_INSTRUCTION }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0x00300090, 0x0f300090, "ldr%6's%5?hbt%c\t%12-15R,%S" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V6T2_V8M), 0x03000000, 0x0ff00000, "movw%c\t%12-15R,%V" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V6T2_V8M), 0x03400000, 0x0ff00000, "movt%c\t%12-15R,%V" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0x06ff0f30, 0x0fff0ff0, "rbit%c\t%12-15R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0x07a00050, 0x0fa00070, "%22?usbfx%c\t%12-15r,%0-3r,#%7-11d,#%16-20W" }, /* ARM Security extension instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_SEC), 0x01600070, 0x0ff000f0, "smc%c\t%e" }, /* ARM V6K instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0xf57ff01f, 0xffffffff, "clrex" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0x01d00f9f, 0x0ff00fff, "ldrexb%c\t%12-15R,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0x01b00f9f, 0x0ff00fff, "ldrexd%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0x01f00f9f, 0x0ff00fff, "ldrexh%c\t%12-15R,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0x01c00f90, 0x0ff00ff0, "strexb%c\t%12-15R,%0-3R,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0x01a00f90, 0x0ff00ff0, "strexd%c\t%12-15R,%0-3r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0x01e00f90, 0x0ff00ff0, "strexh%c\t%12-15R,%0-3R,[%16-19R]" }, /* ARM V6K NOP hints. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0x0320f001, 0x0fffffff, "yield%c" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0x0320f002, 0x0fffffff, "wfe%c" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0x0320f003, 0x0fffffff, "wfi%c" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0x0320f004, 0x0fffffff, "sev%c" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0x0320f000, 0x0fffff00, "nop%c\t{%0-7d}" }, /* ARM V6 instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xf1080000, 0xfffffe3f, "cpsie\t%8'a%7'i%6'f" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xf10a0000, 0xfffffe20, "cpsie\t%8'a%7'i%6'f,#%0-4d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xf10C0000, 0xfffffe3f, "cpsid\t%8'a%7'i%6'f" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xf10e0000, 0xfffffe20, "cpsid\t%8'a%7'i%6'f,#%0-4d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xf1000000, 0xfff1fe20, "cps\t#%0-4d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06800010, 0x0ff00ff0, "pkhbt%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06800010, 0x0ff00070, "pkhbt%c\t%12-15R,%16-19R,%0-3R,lsl #%7-11d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06800050, 0x0ff00ff0, "pkhtb%c\t%12-15R,%16-19R,%0-3R,asr #32" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06800050, 0x0ff00070, "pkhtb%c\t%12-15R,%16-19R,%0-3R,asr #%7-11d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x01900f9f, 0x0ff00fff, "ldrex%c\tr%12-15d,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06200f10, 0x0ff00ff0, "qadd16%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06200f90, 0x0ff00ff0, "qadd8%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06200f30, 0x0ff00ff0, "qasx%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06200f70, 0x0ff00ff0, "qsub16%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06200ff0, 0x0ff00ff0, "qsub8%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06200f50, 0x0ff00ff0, "qsax%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06100f10, 0x0ff00ff0, "sadd16%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06100f90, 0x0ff00ff0, "sadd8%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06100f30, 0x0ff00ff0, "sasx%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06300f10, 0x0ff00ff0, "shadd16%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06300f90, 0x0ff00ff0, "shadd8%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06300f30, 0x0ff00ff0, "shasx%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06300f70, 0x0ff00ff0, "shsub16%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06300ff0, 0x0ff00ff0, "shsub8%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06300f50, 0x0ff00ff0, "shsax%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06100f70, 0x0ff00ff0, "ssub16%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06100ff0, 0x0ff00ff0, "ssub8%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06100f50, 0x0ff00ff0, "ssax%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06500f10, 0x0ff00ff0, "uadd16%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06500f90, 0x0ff00ff0, "uadd8%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06500f30, 0x0ff00ff0, "uasx%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06700f10, 0x0ff00ff0, "uhadd16%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06700f90, 0x0ff00ff0, "uhadd8%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06700f30, 0x0ff00ff0, "uhasx%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06700f70, 0x0ff00ff0, "uhsub16%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06700ff0, 0x0ff00ff0, "uhsub8%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06700f50, 0x0ff00ff0, "uhsax%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06600f10, 0x0ff00ff0, "uqadd16%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06600f90, 0x0ff00ff0, "uqadd8%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06600f30, 0x0ff00ff0, "uqasx%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06600f70, 0x0ff00ff0, "uqsub16%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06600ff0, 0x0ff00ff0, "uqsub8%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06600f50, 0x0ff00ff0, "uqsax%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06500f70, 0x0ff00ff0, "usub16%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06500ff0, 0x0ff00ff0, "usub8%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06500f50, 0x0ff00ff0, "usax%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06bf0f30, 0x0fff0ff0, "rev%c\t%12-15R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06bf0fb0, 0x0fff0ff0, "rev16%c\t%12-15R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06ff0fb0, 0x0fff0ff0, "revsh%c\t%12-15R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xf8100a00, 0xfe50ffff, "rfe%23?id%24?ba\t%16-19r%21'!" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06bf0070, 0x0fff0ff0, "sxth%c\t%12-15R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06bf0470, 0x0fff0ff0, "sxth%c\t%12-15R,%0-3R,ror #8" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06bf0870, 0x0fff0ff0, "sxth%c\t%12-15R,%0-3R,ror #16" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06bf0c70, 0x0fff0ff0, "sxth%c\t%12-15R,%0-3R,ror #24" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x068f0070, 0x0fff0ff0, "sxtb16%c\t%12-15R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x068f0470, 0x0fff0ff0, "sxtb16%c\t%12-15R,%0-3R,ror #8" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x068f0870, 0x0fff0ff0, "sxtb16%c\t%12-15R,%0-3R,ror #16" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x068f0c70, 0x0fff0ff0, "sxtb16%c\t%12-15R,%0-3R,ror #24" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06af0070, 0x0fff0ff0, "sxtb%c\t%12-15R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06af0470, 0x0fff0ff0, "sxtb%c\t%12-15R,%0-3R,ror #8" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06af0870, 0x0fff0ff0, "sxtb%c\t%12-15R,%0-3R,ror #16" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06af0c70, 0x0fff0ff0, "sxtb%c\t%12-15R,%0-3R,ror #24" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06ff0070, 0x0fff0ff0, "uxth%c\t%12-15R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06ff0470, 0x0fff0ff0, "uxth%c\t%12-15R,%0-3R,ror #8" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06ff0870, 0x0fff0ff0, "uxth%c\t%12-15R,%0-3R,ror #16" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06ff0c70, 0x0fff0ff0, "uxth%c\t%12-15R,%0-3R,ror #24" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06cf0070, 0x0fff0ff0, "uxtb16%c\t%12-15R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06cf0470, 0x0fff0ff0, "uxtb16%c\t%12-15R,%0-3R,ror #8" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06cf0870, 0x0fff0ff0, "uxtb16%c\t%12-15R,%0-3R,ror #16" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06cf0c70, 0x0fff0ff0, "uxtb16%c\t%12-15R,%0-3R,ror #24" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06ef0070, 0x0fff0ff0, "uxtb%c\t%12-15R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06ef0470, 0x0fff0ff0, "uxtb%c\t%12-15R,%0-3R,ror #8" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06ef0870, 0x0fff0ff0, "uxtb%c\t%12-15R,%0-3R,ror #16" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06ef0c70, 0x0fff0ff0, "uxtb%c\t%12-15R,%0-3R,ror #24" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06b00070, 0x0ff00ff0, "sxtah%c\t%12-15R,%16-19r,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06b00470, 0x0ff00ff0, "sxtah%c\t%12-15R,%16-19r,%0-3R,ror #8" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06b00870, 0x0ff00ff0, "sxtah%c\t%12-15R,%16-19r,%0-3R,ror #16" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06b00c70, 0x0ff00ff0, "sxtah%c\t%12-15R,%16-19r,%0-3R,ror #24" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06800070, 0x0ff00ff0, "sxtab16%c\t%12-15R,%16-19r,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06800470, 0x0ff00ff0, "sxtab16%c\t%12-15R,%16-19r,%0-3R,ror #8" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06800870, 0x0ff00ff0, "sxtab16%c\t%12-15R,%16-19r,%0-3R,ror #16" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06800c70, 0x0ff00ff0, "sxtab16%c\t%12-15R,%16-19r,%0-3R,ror #24" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06a00070, 0x0ff00ff0, "sxtab%c\t%12-15R,%16-19r,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06a00470, 0x0ff00ff0, "sxtab%c\t%12-15R,%16-19r,%0-3R,ror #8" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06a00870, 0x0ff00ff0, "sxtab%c\t%12-15R,%16-19r,%0-3R,ror #16" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06a00c70, 0x0ff00ff0, "sxtab%c\t%12-15R,%16-19r,%0-3R,ror #24" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06f00070, 0x0ff00ff0, "uxtah%c\t%12-15R,%16-19r,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06f00470, 0x0ff00ff0, "uxtah%c\t%12-15R,%16-19r,%0-3R,ror #8" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06f00870, 0x0ff00ff0, "uxtah%c\t%12-15R,%16-19r,%0-3R,ror #16" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06f00c70, 0x0ff00ff0, "uxtah%c\t%12-15R,%16-19r,%0-3R,ror #24" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06c00070, 0x0ff00ff0, "uxtab16%c\t%12-15R,%16-19r,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06c00470, 0x0ff00ff0, "uxtab16%c\t%12-15R,%16-19r,%0-3R,ror #8" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06c00870, 0x0ff00ff0, "uxtab16%c\t%12-15R,%16-19r,%0-3R,ror #16" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06c00c70, 0x0ff00ff0, "uxtab16%c\t%12-15R,%16-19r,%0-3R,ror #24" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06e00070, 0x0ff00ff0, "uxtab%c\t%12-15R,%16-19r,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06e00470, 0x0ff00ff0, "uxtab%c\t%12-15R,%16-19r,%0-3R,ror #8" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06e00870, 0x0ff00ff0, "uxtab%c\t%12-15R,%16-19r,%0-3R,ror #16" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06e00c70, 0x0ff00ff0, "uxtab%c\t%12-15R,%16-19r,%0-3R,ror #24" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06800fb0, 0x0ff00ff0, "sel%c\t%12-15R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xf1010000, 0xfffffc00, "setend\t%9?ble" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x0700f010, 0x0ff0f0d0, "smuad%5'x%c\t%16-19R,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x0700f050, 0x0ff0f0d0, "smusd%5'x%c\t%16-19R,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x07000010, 0x0ff000d0, "smlad%5'x%c\t%16-19R,%0-3R,%8-11R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x07400010, 0x0ff000d0, "smlald%5'x%c\t%12-15Ru,%16-19Ru,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x07000050, 0x0ff000d0, "smlsd%5'x%c\t%16-19R,%0-3R,%8-11R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x07400050, 0x0ff000d0, "smlsld%5'x%c\t%12-15Ru,%16-19Ru,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x0750f010, 0x0ff0f0d0, "smmul%5'r%c\t%16-19R,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x07500010, 0x0ff000d0, "smmla%5'r%c\t%16-19R,%0-3R,%8-11R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x075000d0, 0x0ff000d0, "smmls%5'r%c\t%16-19R,%0-3R,%8-11R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xf84d0500, 0xfe5fffe0, "srs%23?id%24?ba\t%16-19r%21'!,#%0-4d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06a00010, 0x0fe00ff0, "ssat%c\t%12-15R,#%16-20W,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06a00010, 0x0fe00070, "ssat%c\t%12-15R,#%16-20W,%0-3R,lsl #%7-11d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06a00050, 0x0fe00070, "ssat%c\t%12-15R,#%16-20W,%0-3R,asr #%7-11d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06a00f30, 0x0ff00ff0, "ssat16%c\t%12-15r,#%16-19W,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x01800f90, 0x0ff00ff0, "strex%c\t%12-15R,%0-3R,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x00400090, 0x0ff000f0, "umaal%c\t%12-15R,%16-19R,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x0780f010, 0x0ff0f0f0, "usad8%c\t%16-19R,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x07800010, 0x0ff000f0, "usada8%c\t%16-19R,%0-3R,%8-11R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06e00010, 0x0fe00ff0, "usat%c\t%12-15R,#%16-20d,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06e00010, 0x0fe00070, "usat%c\t%12-15R,#%16-20d,%0-3R,lsl #%7-11d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06e00050, 0x0fe00070, "usat%c\t%12-15R,#%16-20d,%0-3R,asr #%7-11d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x06e00f30, 0x0ff00ff0, "usat16%c\t%12-15R,#%16-19d,%0-3R" }, /* V5J instruction. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V5J), 0x012fff20, 0x0ffffff0, "bxj%c\t%0-3R" }, /* V5 Instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V5), 0xe1200070, 0xfff000f0, "bkpt\t0x%16-19X%12-15X%8-11X%0-3X" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5), 0xfa000000, 0xfe000000, "blx\t%B" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5), 0x012fff30, 0x0ffffff0, "blx%c\t%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5), 0x016f0f10, 0x0fff0ff0, "clz%c\t%12-15R,%0-3R" }, /* V5E "El Segundo" Instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V5E), 0x000000d0, 0x0e1000f0, "ldrd%c\t%12-15r,%s" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5E), 0x000000f0, 0x0e1000f0, "strd%c\t%12-15r,%s" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5E), 0xf450f000, 0xfc70f000, "pld\t%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x01000080, 0x0ff000f0, "smlabb%c\t%16-19R,%0-3R,%8-11R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x010000a0, 0x0ff000f0, "smlatb%c\t%16-19R,%0-3R,%8-11R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x010000c0, 0x0ff000f0, "smlabt%c\t%16-19R,%0-3R,%8-11R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x010000e0, 0x0ff000f0, "smlatt%c\t%16-19r,%0-3r,%8-11R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x01200080, 0x0ff000f0, "smlawb%c\t%16-19R,%0-3R,%8-11R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x012000c0, 0x0ff000f0, "smlawt%c\t%16-19R,%0-3r,%8-11R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x01400080, 0x0ff000f0, "smlalbb%c\t%12-15Ru,%16-19Ru,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x014000a0, 0x0ff000f0, "smlaltb%c\t%12-15Ru,%16-19Ru,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x014000c0, 0x0ff000f0, "smlalbt%c\t%12-15Ru,%16-19Ru,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x014000e0, 0x0ff000f0, "smlaltt%c\t%12-15Ru,%16-19Ru,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x01600080, 0x0ff0f0f0, "smulbb%c\t%16-19R,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x016000a0, 0x0ff0f0f0, "smultb%c\t%16-19R,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x016000c0, 0x0ff0f0f0, "smulbt%c\t%16-19R,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x016000e0, 0x0ff0f0f0, "smultt%c\t%16-19R,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x012000a0, 0x0ff0f0f0, "smulwb%c\t%16-19R,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x012000e0, 0x0ff0f0f0, "smulwt%c\t%16-19R,%0-3R,%8-11R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x01000050, 0x0ff00ff0, "qadd%c\t%12-15R,%0-3R,%16-19R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x01400050, 0x0ff00ff0, "qdadd%c\t%12-15R,%0-3R,%16-19R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x01200050, 0x0ff00ff0, "qsub%c\t%12-15R,%0-3R,%16-19R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5ExP), 0x01600050, 0x0ff00ff0, "qdsub%c\t%12-15R,%0-3R,%16-19R" }, /* ARM Instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x052d0004, 0x0fff0fff, "push%c\t{%12-15r}\t\t; (str%c %12-15r,%a)" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x04400000, 0x0e500000, "strb%t%c\t%12-15R,%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x04000000, 0x0e500000, "str%t%c\t%12-15r,%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x06400000, 0x0e500ff0, "strb%t%c\t%12-15R,%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x06000000, 0x0e500ff0, "str%t%c\t%12-15r,%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x04400000, 0x0c500010, "strb%t%c\t%12-15R,%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x04000000, 0x0c500010, "str%t%c\t%12-15r,%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x04400000, 0x0e500000, "strb%c\t%12-15R,%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x06400000, 0x0e500010, "strb%c\t%12-15R,%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x004000b0, 0x0e5000f0, "strh%c\t%12-15R,%s" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x000000b0, 0x0e500ff0, "strh%c\t%12-15R,%s" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00500090, 0x0e5000f0, UNDEFINED_INSTRUCTION }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00500090, 0x0e500090, "ldr%6's%5?hb%c\t%12-15R,%s" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00100090, 0x0e500ff0, UNDEFINED_INSTRUCTION }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00100090, 0x0e500f90, "ldr%6's%5?hb%c\t%12-15R,%s" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x02000000, 0x0fe00000, "and%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00000000, 0x0fe00010, "and%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00000010, 0x0fe00090, "and%20's%c\t%12-15R,%16-19R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x02200000, 0x0fe00000, "eor%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00200000, 0x0fe00010, "eor%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00200010, 0x0fe00090, "eor%20's%c\t%12-15R,%16-19R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x02400000, 0x0fe00000, "sub%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00400000, 0x0fe00010, "sub%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00400010, 0x0fe00090, "sub%20's%c\t%12-15R,%16-19R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x02600000, 0x0fe00000, "rsb%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00600000, 0x0fe00010, "rsb%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00600010, 0x0fe00090, "rsb%20's%c\t%12-15R,%16-19R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x02800000, 0x0fe00000, "add%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00800000, 0x0fe00010, "add%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00800010, 0x0fe00090, "add%20's%c\t%12-15R,%16-19R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x02a00000, 0x0fe00000, "adc%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00a00000, 0x0fe00010, "adc%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00a00010, 0x0fe00090, "adc%20's%c\t%12-15R,%16-19R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x02c00000, 0x0fe00000, "sbc%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00c00000, 0x0fe00010, "sbc%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00c00010, 0x0fe00090, "sbc%20's%c\t%12-15R,%16-19R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x02e00000, 0x0fe00000, "rsc%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00e00000, 0x0fe00010, "rsc%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00e00010, 0x0fe00090, "rsc%20's%c\t%12-15R,%16-19R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_VIRT), 0x0120f200, 0x0fb0f200, "msr%c\t%C,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V3), 0x0120f000, 0x0db0f000, "msr%c\t%C,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V3), 0x01000000, 0x0fb00cff, "mrs%c\t%12-15R,%R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x03000000, 0x0fe00000, "tst%p%c\t%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01000000, 0x0fe00010, "tst%p%c\t%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01000010, 0x0fe00090, "tst%p%c\t%16-19R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x03300000, 0x0ff00000, "teq%p%c\t%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01300000, 0x0ff00010, "teq%p%c\t%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01300010, 0x0ff00010, "teq%p%c\t%16-19R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V5), 0x0130f000, 0x0ff0f010, "bx%c\t%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x03400000, 0x0fe00000, "cmp%p%c\t%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01400000, 0x0fe00010, "cmp%p%c\t%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01400010, 0x0fe00090, "cmp%p%c\t%16-19R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x03600000, 0x0fe00000, "cmn%p%c\t%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01600000, 0x0fe00010, "cmn%p%c\t%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01600010, 0x0fe00090, "cmn%p%c\t%16-19R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x03800000, 0x0fe00000, "orr%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01800000, 0x0fe00010, "orr%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01800010, 0x0fe00090, "orr%20's%c\t%12-15R,%16-19R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x03a00000, 0x0fef0000, "mov%20's%c\t%12-15r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01a00000, 0x0def0ff0, "mov%20's%c\t%12-15r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01a00000, 0x0def0060, "lsl%20's%c\t%12-15R,%q" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01a00020, 0x0def0060, "lsr%20's%c\t%12-15R,%q" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01a00040, 0x0def0060, "asr%20's%c\t%12-15R,%q" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01a00060, 0x0def0ff0, "rrx%20's%c\t%12-15r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01a00060, 0x0def0060, "ror%20's%c\t%12-15R,%q" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x03c00000, 0x0fe00000, "bic%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01c00000, 0x0fe00010, "bic%20's%c\t%12-15r,%16-19r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01c00010, 0x0fe00090, "bic%20's%c\t%12-15R,%16-19R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x03e00000, 0x0fe00000, "mvn%20's%c\t%12-15r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01e00000, 0x0fe00010, "mvn%20's%c\t%12-15r,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x01e00010, 0x0fe00090, "mvn%20's%c\t%12-15R,%o" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x06000010, 0x0e000010, UNDEFINED_INSTRUCTION }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x049d0004, 0x0fff0fff, "pop%c\t{%12-15r}\t\t; (ldr%c %12-15r,%a)" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x04500000, 0x0c500000, "ldrb%t%c\t%12-15R,%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x04300000, 0x0d700000, "ldrt%c\t%12-15R,%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x04100000, 0x0c500000, "ldr%c\t%12-15r,%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d0001, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d0002, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d0004, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d0008, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d0010, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d0020, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d0040, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d0080, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d0100, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d0200, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d0400, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d0800, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d1000, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d2000, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d4000, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d8000, 0x0fffffff, "stmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x092d0000, 0x0fff0000, "push%c\t%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08800000, 0x0ff00000, "stm%c\t%16-19R%21'!,%m%22'^" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08000000, 0x0e100000, "stm%23?id%24?ba%c\t%16-19R%21'!,%m%22'^" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd0001, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd0002, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd0004, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd0008, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd0010, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd0020, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd0040, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd0080, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd0100, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd0200, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd0400, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd0800, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd1000, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd2000, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd4000, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd8000, 0x0fffffff, "ldmfd%c\t%16-19R!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08bd0000, 0x0fff0000, "pop%c\t%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08900000, 0x0f900000, "ldm%c\t%16-19R%21'!,%m%22'^" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x08100000, 0x0e100000, "ldm%23?id%24?ba%c\t%16-19R%21'!,%m%22'^" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x0a000000, 0x0e000000, "b%24'l%c\t%b" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x0f000000, 0x0f000000, "svc%c\t%0-23x" }, /* The rest. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V7), 0x03200000, 0x0fff00ff, "nop%c\t{%0-7d}" UNPREDICTABLE_INSTRUCTION }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00000000, 0x00000000, UNDEFINED_INSTRUCTION }, { ARM_FEATURE_CORE_LOW(0), 0, 0, 0 } }; /* print_insn_thumb16 recognizes the following format control codes: %S print Thumb register (bits 3..5 as high number if bit 6 set) %D print Thumb register (bits 0..2 as high number if bit 7 set) %I print bitfield as a signed decimal (top bit of range being the sign bit) %N print Thumb register mask (with LR) %O print Thumb register mask (with PC) %M print Thumb register mask %b print CZB's 6-bit unsigned branch destination %s print Thumb right-shift immediate (6..10; 0 == 32). %c print the condition code %C print the condition code, or "s" if not conditional %x print warning if conditional an not at end of IT block" %X print "\t; unpredictable " if conditional %I print IT instruction suffix and operands %W print Thumb Writeback indicator for LDMIA %r print bitfield as an ARM register %d print bitfield as a decimal %H print (bitfield * 2) as a decimal %W print (bitfield * 4) as a decimal %a print (bitfield * 4) as a pc-rel offset + decoded symbol %B print Thumb branch destination (signed displacement) %c print bitfield as a condition code %'c print specified char iff bit is one %?ab print a if bit is one else print b. */ static const struct opcode16 thumb_opcodes[] = { /* Thumb instructions. */ /* ARMv8-M Security Extensions instructions. */ { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8M), 0x4784, 0xff87, "blxns\t%3-6r" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8M), 0x4704, 0xff07, "bxns\t%3-6r" }, /* ARM V8 instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xbf50, 0xffff, "sevl%c" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xba80, 0xffc0, "hlt\t%0-5x" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_PAN), 0xb610, 0xfff7, "setpan\t#%3-3d" }, /* ARM V6K no-argument instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0xbf00, 0xffff, "nop%c" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0xbf10, 0xffff, "yield%c" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0xbf20, 0xffff, "wfe%c" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0xbf30, 0xffff, "wfi%c" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0xbf40, 0xffff, "sev%c" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6K), 0xbf00, 0xff0f, "nop%c\t{%4-7d}" }, /* ARM V6T2 instructions. */ { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V6T2_V8M), 0xb900, 0xfd00, "cbnz\t%0-2r,%b%X" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V6T2_V8M), 0xb100, 0xfd00, "cbz\t%0-2r,%b%X" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xbf00, 0xff00, "it%I%X" }, /* ARM V6. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xb660, 0xfff8, "cpsie\t%2'a%1'i%0'f%X" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xb670, 0xfff8, "cpsid\t%2'a%1'i%0'f%X" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0x4600, 0xffc0, "mov%c\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xba00, 0xffc0, "rev%c\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xba40, 0xffc0, "rev16%c\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xbac0, 0xffc0, "revsh%c\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xb650, 0xfff7, "setend\t%3?ble%X" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xb200, 0xffc0, "sxth%c\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xb240, 0xffc0, "sxtb%c\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xb280, 0xffc0, "uxth%c\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6), 0xb2c0, 0xffc0, "uxtb%c\t%0-2r,%3-5r" }, /* ARM V5 ISA extends Thumb. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V5T), 0xbe00, 0xff00, "bkpt\t%0-7x"}, /* Is always unconditional. */ /* This is BLX(2). BLX(1) is a 32-bit instruction. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V5T), 0x4780, 0xff87, "blx%c\t%3-6r%x"}, /* note: 4 bit register number. */ /* ARM V4T ISA (Thumb v1). */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x46C0, 0xFFFF, "nop%c\t\t\t; (mov r8,r8)" }, /* Format 4. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4000, 0xFFC0, "and%C\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4040, 0xFFC0, "eor%C\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4080, 0xFFC0, "lsl%C\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x40C0, 0xFFC0, "lsr%C\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4100, 0xFFC0, "asr%C\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4140, 0xFFC0, "adc%C\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4180, 0xFFC0, "sbc%C\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x41C0, 0xFFC0, "ror%C\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4200, 0xFFC0, "tst%c\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4240, 0xFFC0, "neg%C\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4280, 0xFFC0, "cmp%c\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x42C0, 0xFFC0, "cmn%c\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4300, 0xFFC0, "orr%C\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4340, 0xFFC0, "mul%C\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4380, 0xFFC0, "bic%C\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x43C0, 0xFFC0, "mvn%C\t%0-2r,%3-5r" }, /* format 13 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xB000, 0xFF80, "add%c\tsp,#%0-6W" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xB080, 0xFF80, "sub%c\tsp,#%0-6W" }, /* format 5 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4700, 0xFF80, "bx%c\t%S%x" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4400, 0xFF00, "add%c\t%D,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4500, 0xFF00, "cmp%c\t%D,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4600, 0xFF00, "mov%c\t%D,%S" }, /* format 14 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xB400, 0xFE00, "push%c\t%N" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xBC00, 0xFE00, "pop%c\t%O" }, /* format 2 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x1800, 0xFE00, "add%C\t%0-2r,%3-5r,%6-8r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x1A00, 0xFE00, "sub%C\t%0-2r,%3-5r,%6-8r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x1C00, 0xFE00, "add%C\t%0-2r,%3-5r,#%6-8d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x1E00, 0xFE00, "sub%C\t%0-2r,%3-5r,#%6-8d" }, /* format 8 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x5200, 0xFE00, "strh%c\t%0-2r,[%3-5r,%6-8r]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x5A00, 0xFE00, "ldrh%c\t%0-2r,[%3-5r,%6-8r]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x5600, 0xF600, "ldrs%11?hb%c\t%0-2r,[%3-5r,%6-8r]" }, /* format 7 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x5000, 0xFA00, "str%10'b%c\t%0-2r,[%3-5r,%6-8r]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x5800, 0xFA00, "ldr%10'b%c\t%0-2r,[%3-5r,%6-8r]" }, /* format 1 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x0000, 0xFFC0, "mov%C\t%0-2r,%3-5r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x0000, 0xF800, "lsl%C\t%0-2r,%3-5r,#%6-10d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x0800, 0xF800, "lsr%C\t%0-2r,%3-5r,%s" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x1000, 0xF800, "asr%C\t%0-2r,%3-5r,%s" }, /* format 3 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x2000, 0xF800, "mov%C\t%8-10r,#%0-7d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x2800, 0xF800, "cmp%c\t%8-10r,#%0-7d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x3000, 0xF800, "add%C\t%8-10r,#%0-7d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x3800, 0xF800, "sub%C\t%8-10r,#%0-7d" }, /* format 6 */ /* TODO: Disassemble PC relative "LDR rD,=" */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x4800, 0xF800, "ldr%c\t%8-10r,[pc,#%0-7W]\t; (%0-7a)" }, /* format 9 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x6000, 0xF800, "str%c\t%0-2r,[%3-5r,#%6-10W]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x6800, 0xF800, "ldr%c\t%0-2r,[%3-5r,#%6-10W]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x7000, 0xF800, "strb%c\t%0-2r,[%3-5r,#%6-10d]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x7800, 0xF800, "ldrb%c\t%0-2r,[%3-5r,#%6-10d]" }, /* format 10 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x8000, 0xF800, "strh%c\t%0-2r,[%3-5r,#%6-10H]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x8800, 0xF800, "ldrh%c\t%0-2r,[%3-5r,#%6-10H]" }, /* format 11 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x9000, 0xF800, "str%c\t%8-10r,[sp,#%0-7W]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0x9800, 0xF800, "ldr%c\t%8-10r,[sp,#%0-7W]" }, /* format 12 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xA000, 0xF800, "add%c\t%8-10r,pc,#%0-7W\t; (adr %8-10r,%0-7a)" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xA800, 0xF800, "add%c\t%8-10r,sp,#%0-7W" }, /* format 15 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xC000, 0xF800, "stmia%c\t%8-10r!,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xC800, 0xF800, "ldmia%c\t%8-10r%W,%M" }, /* format 17 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xDF00, 0xFF00, "svc%c\t%0-7d" }, /* format 16 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xDE00, 0xFF00, "udf%c\t#%0-7d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xDE00, 0xFE00, UNDEFINED_INSTRUCTION }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xD000, 0xF000, "b%8-11c.n\t%0-7B%X" }, /* format 18 */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xE000, 0xF800, "b%c.n\t%0-10B%x" }, /* The E800 .. FFFF range is unconditionally redirected to the 32-bit table,because even in pre-V6T2 ISAs,BL and BLX(1) pairs are processed via that table. Thus,we can never encounter a bare "second half of BL/BLX(1)" instruction here. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x0000, 0x0000, UNDEFINED_INSTRUCTION }, { ARM_FEATURE_CORE_LOW(0), 0, 0, 0 } }; /* Thumb32 opcodes use the same table structure as the ARM opcodes. We adopt the convention that hw1 is the high 16 bits of .value and .mask, hw2 the low 16 bits. print_insn_thumb32 recognizes the following format control codes: %% % %I print a 12-bit immediate from hw1[10],hw2[14:12,7:0] %M print a modified 12-bit immediate (same location) %J print a 16-bit immediate from hw1[3:0,10],hw2[14:12,7:0] %K print a 16-bit immediate from hw2[3:0],hw1[3:0],hw2[11:4] %H print a 16-bit immediate from hw2[3:0],hw1[11:0] %S print a possibly-shifted Rm %L print address for a ldrd/strd instruction %a print the address of a plain load/store %w print the width and signedness of a core load/store %m print register mask for ldm/stm %E print the lsb and width fields of a bfc/bfi instruction %F print the lsb and width fields of a sbfx/ubfx instruction %b print a conditional branch offset %B print an unconditional branch offset %s print the shift field of an SSAT instruction %R print the rotation field of an SXT instruction %U print barrier type. %P print address for pli instruction. %c print the condition code %x print warning if conditional an not at end of IT block" %X print "\t; unpredictable " if conditional %d print bitfield in decimal %D print bitfield plus one in decimal %W print bitfield*4 in decimal %r print bitfield as an ARM register %R as %<>r but r15 is UNPREDICTABLE %S as %<>R but r13 is UNPREDICTABLE %c print bitfield as a condition code %'c print specified char iff bitfield is all ones %`c print specified char iff bitfield is all zeroes %?ab... select from array of values in big endian order With one exception at the bottom (done because BL and BLX(1) need to come dead last), this table was machine-sorted first in decreasing order of number of bits set in the mask, then in increasing numeric order of mask, then in increasing numeric order of opcode. This order is not the clearest for a human reader, but is guaranteed never to catch a special-case bit pattern with a more general mask, which is important, because this instruction encoding makes heavy use of special-case bit patterns. */ static const struct opcode32 thumb32_opcodes[] = { /* ARMv8-M and ARMv8-M Security Extensions instructions. */ { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8M), 0xe97fe97f, 0xffffffff, "sg" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8M), 0xe840f000, 0xfff0f0ff, "tt\t%8-11r,%16-19r" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8M), 0xe840f040, 0xfff0f0ff, "ttt\t%8-11r,%16-19r" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8M), 0xe840f080, 0xfff0f0ff, "tta\t%8-11r,%16-19r" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V8M), 0xe840f0c0, 0xfff0f0ff, "ttat\t%8-11r,%16-19r" }, /* ARM V8.2 RAS extension instructions. */ { ARM_FEATURE_CORE_HIGH(ARM_EXT2_RAS), 0xf3af8010, 0xffffffff, "esb" }, /* V8 instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xf3af8005, 0xffffffff, "sevl%c.w" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xf78f8000, 0xfffffffc, "dcps%0-1d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe8c00f8f, 0xfff00fff, "stlb%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe8c00f9f, 0xfff00fff, "stlh%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe8c00faf, 0xfff00fff, "stl%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe8c00fc0, 0xfff00ff0, "stlexb%c\t%0-3r,%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe8c00fd0, 0xfff00ff0, "stlexh%c\t%0-3r,%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe8c00fe0, 0xfff00ff0, "stlex%c\t%0-3r,%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe8c000f0, 0xfff000f0, "stlexd%c\t%0-3r,%12-15r,%8-11r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe8d00f8f, 0xfff00fff, "ldab%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe8d00f9f, 0xfff00fff, "ldah%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe8d00faf, 0xfff00fff, "lda%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe8d00fcf, 0xfff00fff, "ldaexb%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe8d00fdf, 0xfff00fff, "ldaexh%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe8d00fef, 0xfff00fff, "ldaex%c\t%12-15r,[%16-19R]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xe8d000ff, 0xfff000ff, "ldaexd%c\t%12-15r,%8-11r,[%16-19R]" }, /* CRC32 instructions. */ { ARM_FEATURE_COPROC(CRC_EXT_ARMV8), 0xfac0f080, 0xfff0f0f0, "crc32b\t%8-11S,%16-19S,%0-3S" }, { ARM_FEATURE_COPROC(CRC_EXT_ARMV8), 0xfac0f090, 0xfff0f0f0, "crc32h\t%9-11S,%16-19S,%0-3S" }, { ARM_FEATURE_COPROC(CRC_EXT_ARMV8), 0xfac0f0a0, 0xfff0f0f0, "crc32w\t%8-11S,%16-19S,%0-3S" }, { ARM_FEATURE_COPROC(CRC_EXT_ARMV8), 0xfad0f080, 0xfff0f0f0, "crc32cb\t%8-11S,%16-19S,%0-3S" }, { ARM_FEATURE_COPROC(CRC_EXT_ARMV8), 0xfad0f090, 0xfff0f0f0, "crc32ch\t%8-11S,%16-19S,%0-3S" }, { ARM_FEATURE_COPROC(CRC_EXT_ARMV8), 0xfad0f0a0, 0xfff0f0f0, "crc32cw\t%8-11S,%16-19S,%0-3S" }, /* V7 instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V7), 0xf910f000, 0xff70f000, "pli%c\t%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V7), 0xf3af80f0, 0xfffffff0, "dbg%c\t#%0-3d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xf3bf8f51, 0xfffffff3, "dmb%c\t%U" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V8), 0xf3bf8f41, 0xfffffff3, "dsb%c\t%U" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V7), 0xf3bf8f50, 0xfffffff0, "dmb%c\t%U" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V7), 0xf3bf8f40, 0xfffffff0, "dsb%c\t%U" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V7), 0xf3bf8f60, 0xfffffff0, "isb%c\t%U" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_DIV), 0xfb90f0f0, 0xfff0f0f0, "sdiv%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_DIV), 0xfbb0f0f0, 0xfff0f0f0, "udiv%c\t%8-11r,%16-19r,%0-3r" }, /* Virtualization Extension instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_VIRT), 0xf7e08000, 0xfff0f000, "hvc%c\t%V" }, /* We skip ERET as that is SUBS pc,lr,#0. */ /* MP Extension instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_MP), 0xf830f000, 0xff70f000, "pldw%c\t%a" }, /* Security extension instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_SEC), 0xf7f08000, 0xfff0f000, "smc%c\t%K" }, /* Instructions defined in the basic V6T2 set. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3af8000, 0xffffffff, "nop%c.w" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3af8001, 0xffffffff, "yield%c.w" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3af8002, 0xffffffff, "wfe%c.w" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3af8003, 0xffffffff, "wfi%c.w" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3af8004, 0xffffffff, "sev%c.w" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3af8000, 0xffffff00, "nop%c.w\t{%0-7d}" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf7f0a000, 0xfff0f000, "udf%c.w\t%H" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V6T2_V8M), 0xf3bf8f2f, 0xffffffff, "clrex%c" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3af8400, 0xffffff1f, "cpsie.w\t%7'a%6'i%5'f%X" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3af8600, 0xffffff1f, "cpsid.w\t%7'a%6'i%5'f%X" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3c08f00, 0xfff0ffff, "bxj%c\t%16-19r%x" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe810c000, 0xffd0ffff, "rfedb%c\t%16-19r%21'!" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe990c000, 0xffd0ffff, "rfeia%c\t%16-19r%21'!" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3e08000, 0xffe0f000, "mrs%c\t%8-11r,%D" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3af8100, 0xffffffe0, "cps\t#%0-4d%X" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe8d0f000, 0xfff0fff0, "tbb%c\t[%16-19r,%0-3r]%x" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe8d0f010, 0xfff0fff0, "tbh%c\t[%16-19r,%0-3r,lsl #1]%x" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3af8500, 0xffffff00, "cpsie\t%7'a%6'i%5'f,#%0-4d%X" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3af8700, 0xffffff00, "cpsid\t%7'a%6'i%5'f,#%0-4d%X" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3de8f00, 0xffffff00, "subs%c\tpc,lr,#%0-7d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3808000, 0xffe0f000, "msr%c\t%C,%16-19r" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V6T2_V8M), 0xe8500f00, 0xfff00fff, "ldrex%c\t%12-15r,[%16-19r]" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V6T2_V8M), 0xe8d00f4f, 0xfff00fef, "ldrex%4?hb%c\t%12-15r,[%16-19r]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe800c000, 0xffd0ffe0, "srsdb%c\t%16-19r%21'!,#%0-4d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe980c000, 0xffd0ffe0, "srsia%c\t%16-19r%21'!,#%0-4d" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa0ff080, 0xfffff0c0, "sxth%c.w\t%8-11r,%0-3r%R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa1ff080, 0xfffff0c0, "uxth%c.w\t%8-11r,%0-3r%R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa2ff080, 0xfffff0c0, "sxtb16%c\t%8-11r,%0-3r%R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa3ff080, 0xfffff0c0, "uxtb16%c\t%8-11r,%0-3r%R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa4ff080, 0xfffff0c0, "sxtb%c.w\t%8-11r,%0-3r%R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa5ff080, 0xfffff0c0, "uxtb%c.w\t%8-11r,%0-3r%R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V6T2_V8M), 0xe8400000, 0xfff000ff, "strex%c\t%8-11r,%12-15r,[%16-19r]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe8d0007f, 0xfff000ff, "ldrexd%c\t%12-15r,%8-11r,[%16-19r]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa80f000, 0xfff0f0f0, "sadd8%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa80f010, 0xfff0f0f0, "qadd8%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa80f020, 0xfff0f0f0, "shadd8%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa80f040, 0xfff0f0f0, "uadd8%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa80f050, 0xfff0f0f0, "uqadd8%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa80f060, 0xfff0f0f0, "uhadd8%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa80f080, 0xfff0f0f0, "qadd%c\t%8-11r,%0-3r,%16-19r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa80f090, 0xfff0f0f0, "qdadd%c\t%8-11r,%0-3r,%16-19r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa80f0a0, 0xfff0f0f0, "qsub%c\t%8-11r,%0-3r,%16-19r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa80f0b0, 0xfff0f0f0, "qdsub%c\t%8-11r,%0-3r,%16-19r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa90f000, 0xfff0f0f0, "sadd16%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa90f010, 0xfff0f0f0, "qadd16%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa90f020, 0xfff0f0f0, "shadd16%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa90f040, 0xfff0f0f0, "uadd16%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa90f050, 0xfff0f0f0, "uqadd16%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa90f060, 0xfff0f0f0, "uhadd16%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa90f080, 0xfff0f0f0, "rev%c.w\t%8-11r,%16-19r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa90f090, 0xfff0f0f0, "rev16%c.w\t%8-11r,%16-19r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa90f0a0, 0xfff0f0f0, "rbit%c\t%8-11r,%16-19r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa90f0b0, 0xfff0f0f0, "revsh%c.w\t%8-11r,%16-19r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfaa0f000, 0xfff0f0f0, "sasx%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfaa0f010, 0xfff0f0f0, "qasx%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfaa0f020, 0xfff0f0f0, "shasx%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfaa0f040, 0xfff0f0f0, "uasx%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfaa0f050, 0xfff0f0f0, "uqasx%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfaa0f060, 0xfff0f0f0, "uhasx%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfaa0f080, 0xfff0f0f0, "sel%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfab0f080, 0xfff0f0f0, "clz%c\t%8-11r,%16-19r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfac0f000, 0xfff0f0f0, "ssub8%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfac0f010, 0xfff0f0f0, "qsub8%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfac0f020, 0xfff0f0f0, "shsub8%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfac0f040, 0xfff0f0f0, "usub8%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfac0f050, 0xfff0f0f0, "uqsub8%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfac0f060, 0xfff0f0f0, "uhsub8%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfad0f000, 0xfff0f0f0, "ssub16%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfad0f010, 0xfff0f0f0, "qsub16%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfad0f020, 0xfff0f0f0, "shsub16%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfad0f040, 0xfff0f0f0, "usub16%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfad0f050, 0xfff0f0f0, "uqsub16%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfad0f060, 0xfff0f0f0, "uhsub16%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfae0f000, 0xfff0f0f0, "ssax%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfae0f010, 0xfff0f0f0, "qsax%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfae0f020, 0xfff0f0f0, "shsax%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfae0f040, 0xfff0f0f0, "usax%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfae0f050, 0xfff0f0f0, "uqsax%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfae0f060, 0xfff0f0f0, "uhsax%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb00f000, 0xfff0f0f0, "mul%c.w\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb70f000, 0xfff0f0f0, "usad8%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa00f000, 0xffe0f0f0, "lsl%20's%c.w\t%8-11R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa20f000, 0xffe0f0f0, "lsr%20's%c.w\t%8-11R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa40f000, 0xffe0f0f0, "asr%20's%c.w\t%8-11R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa60f000, 0xffe0f0f0, "ror%20's%c.w\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V6T2_V8M), 0xe8c00f40, 0xfff00fe0, "strex%4?hb%c\t%0-3r,%12-15r,[%16-19r]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3200000, 0xfff0f0e0, "ssat16%c\t%8-11r,#%0-4D,%16-19r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3a00000, 0xfff0f0e0, "usat16%c\t%8-11r,#%0-4d,%16-19r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb20f000, 0xfff0f0e0, "smuad%4'x%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb30f000, 0xfff0f0e0, "smulw%4?tb%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb40f000, 0xfff0f0e0, "smusd%4'x%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb50f000, 0xfff0f0e0, "smmul%4'r%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa00f080, 0xfff0f0c0, "sxtah%c\t%8-11r,%16-19r,%0-3r%R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa10f080, 0xfff0f0c0, "uxtah%c\t%8-11r,%16-19r,%0-3r%R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa20f080, 0xfff0f0c0, "sxtab16%c\t%8-11r,%16-19r,%0-3r%R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa30f080, 0xfff0f0c0, "uxtab16%c\t%8-11r,%16-19r,%0-3r%R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa40f080, 0xfff0f0c0, "sxtab%c\t%8-11r,%16-19r,%0-3r%R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfa50f080, 0xfff0f0c0, "uxtab%c\t%8-11r,%16-19r,%0-3r%R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb10f000, 0xfff0f0c0, "smul%5?tb%4?tb%c\t%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf36f0000, 0xffff8020, "bfc%c\t%8-11r,%E" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xea100f00, 0xfff08f00, "tst%c.w\t%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xea900f00, 0xfff08f00, "teq%c\t%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xeb100f00, 0xfff08f00, "cmn%c.w\t%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xebb00f00, 0xfff08f00, "cmp%c.w\t%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf0100f00, 0xfbf08f00, "tst%c.w\t%16-19r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf0900f00, 0xfbf08f00, "teq%c\t%16-19r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf1100f00, 0xfbf08f00, "cmn%c.w\t%16-19r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf1b00f00, 0xfbf08f00, "cmp%c.w\t%16-19r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xea4f0000, 0xffef8000, "mov%20's%c.w\t%8-11r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xea6f0000, 0xffef8000, "mvn%20's%c.w\t%8-11r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe8c00070, 0xfff000f0, "strexd%c\t%0-3r,%12-15r,%8-11r,[%16-19r]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb000000, 0xfff000f0, "mla%c\t%8-11r,%16-19r,%0-3r,%12-15r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb000010, 0xfff000f0, "mls%c\t%8-11r,%16-19r,%0-3r,%12-15r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb700000, 0xfff000f0, "usada8%c\t%8-11R,%16-19R,%0-3R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb800000, 0xfff000f0, "smull%c\t%12-15R,%8-11R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfba00000, 0xfff000f0, "umull%c\t%12-15R,%8-11R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfbc00000, 0xfff000f0, "smlal%c\t%12-15R,%8-11R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfbe00000, 0xfff000f0, "umlal%c\t%12-15R,%8-11R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfbe00060, 0xfff000f0, "umaal%c\t%12-15R,%8-11R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V6T2_V8M), 0xe8500f00, 0xfff00f00, "ldrex%c\t%12-15r,[%16-19r,#%0-7W]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf04f0000, 0xfbef8000, "mov%20's%c.w\t%8-11r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf06f0000, 0xfbef8000, "mvn%20's%c.w\t%8-11r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf810f000, 0xff70f000, "pld%c\t%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb200000, 0xfff000e0, "smlad%4'x%c\t%8-11R,%16-19R,%0-3R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb300000, 0xfff000e0, "smlaw%4?tb%c\t%8-11R,%16-19R,%0-3R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb400000, 0xfff000e0, "smlsd%4'x%c\t%8-11R,%16-19R,%0-3R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb500000, 0xfff000e0, "smmla%4'r%c\t%8-11R,%16-19R,%0-3R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb600000, 0xfff000e0, "smmls%4'r%c\t%8-11R,%16-19R,%0-3R,%12-15R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfbc000c0, 0xfff000e0, "smlald%4'x%c\t%12-15R,%8-11R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfbd000c0, 0xfff000e0, "smlsld%4'x%c\t%12-15R,%8-11R,%16-19R,%0-3R" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xeac00000, 0xfff08030, "pkhbt%c\t%8-11r,%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xeac00020, 0xfff08030, "pkhtb%c\t%8-11r,%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3400000, 0xfff08020, "sbfx%c\t%8-11r,%16-19r,%F" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3c00000, 0xfff08020, "ubfx%c\t%8-11r,%16-19r,%F" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf8000e00, 0xff900f00, "str%wt%c\t%12-15r,%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfb100000, 0xfff000c0, "smla%5?tb%4?tb%c\t%8-11r,%16-19r,%0-3r,%12-15r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xfbc00080, 0xfff000c0, "smlal%5?tb%4?tb%c\t%12-15r,%8-11r,%16-19r,%0-3r" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3600000, 0xfff08020, "bfi%c\t%8-11r,%16-19r,%E" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf8100e00, 0xfe900f00, "ldr%wt%c\t%12-15r,%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3000000, 0xffd08020, "ssat%c\t%8-11r,#%0-4D,%16-19r%s" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3800000, 0xffd08020, "usat%c\t%8-11r,#%0-4d,%16-19r%s" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf2000000, 0xfbf08000, "addw%c\t%8-11r,%16-19r,%I" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V6T2_V8M), 0xf2400000, 0xfbf08000, "movw%c\t%8-11r,%J" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf2a00000, 0xfbf08000, "subw%c\t%8-11r,%16-19r,%I" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V6T2_V8M), 0xf2c00000, 0xfbf08000, "movt%c\t%8-11r,%J" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xea000000, 0xffe08000, "and%20's%c.w\t%8-11r,%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xea200000, 0xffe08000, "bic%20's%c.w\t%8-11r,%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xea400000, 0xffe08000, "orr%20's%c.w\t%8-11r,%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xea600000, 0xffe08000, "orn%20's%c\t%8-11r,%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xea800000, 0xffe08000, "eor%20's%c.w\t%8-11r,%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xeb000000, 0xffe08000, "add%20's%c.w\t%8-11r,%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xeb400000, 0xffe08000, "adc%20's%c.w\t%8-11r,%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xeb600000, 0xffe08000, "sbc%20's%c.w\t%8-11r,%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xeba00000, 0xffe08000, "sub%20's%c.w\t%8-11r,%16-19r,%S" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xebc00000, 0xffe08000, "rsb%20's%c\t%8-11r,%16-19r,%S" }, { ARM_FEATURE_CORE_HIGH(ARM_EXT2_V6T2_V8M), 0xe8400000, 0xfff00000, "strex%c\t%8-11r,%12-15r,[%16-19r,#%0-7W]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf0000000, 0xfbe08000, "and%20's%c.w\t%8-11r,%16-19r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf0200000, 0xfbe08000, "bic%20's%c.w\t%8-11r,%16-19r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf0400000, 0xfbe08000, "orr%20's%c.w\t%8-11r,%16-19r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf0600000, 0xfbe08000, "orn%20's%c\t%8-11r,%16-19r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf0800000, 0xfbe08000, "eor%20's%c.w\t%8-11r,%16-19r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf1000000, 0xfbe08000, "add%20's%c.w\t%8-11r,%16-19r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf1400000, 0xfbe08000, "adc%20's%c.w\t%8-11r,%16-19r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf1600000, 0xfbe08000, "sbc%20's%c.w\t%8-11r,%16-19r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf1a00000, 0xfbe08000, "sub%20's%c.w\t%8-11r,%16-19r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf1c00000, 0xfbe08000, "rsb%20's%c\t%8-11r,%16-19r,%M" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe8800000, 0xffd00000, "stmia%c.w\t%16-19r%21'!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe8900000, 0xffd00000, "ldmia%c.w\t%16-19r%21'!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe9000000, 0xffd00000, "stmdb%c\t%16-19r%21'!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe9100000, 0xffd00000, "ldmdb%c\t%16-19r%21'!,%m" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe9c00000, 0xffd000ff, "strd%c\t%12-15r,%8-11r,[%16-19r]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe9d00000, 0xffd000ff, "ldrd%c\t%12-15r,%8-11r,[%16-19r]" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe9400000, 0xff500000, "strd%c\t%12-15r,%8-11r,[%16-19r,#%23`-%0-7W]%21'!%L" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe9500000, 0xff500000, "ldrd%c\t%12-15r,%8-11r,[%16-19r,#%23`-%0-7W]%21'!%L" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe8600000, 0xff700000, "strd%c\t%12-15r,%8-11r,[%16-19r],#%23`-%0-7W%L" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xe8700000, 0xff700000, "ldrd%c\t%12-15r,%8-11r,[%16-19r],#%23`-%0-7W%L" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf8000000, 0xff100000, "str%w%c.w\t%12-15r,%a" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf8100000, 0xfe100000, "ldr%w%c.w\t%12-15r,%a" }, /* Filter out Bcc with cond=E or F,which are used for other instructions. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3c08000, 0xfbc0d000, "undefined (bcc,cond=0xF)" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf3808000, 0xfbc0d000, "undefined (bcc,cond=0xE)" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf0008000, 0xf800d000, "b%22-25c.w\t%b%X" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V6T2), 0xf0009000, 0xf800d000, "b%c.w\t%B%x" }, /* These have been 32-bit since the invention of Thumb. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xf000c000, 0xf800d001, "blx%c\t%B%x" }, { ARM_FEATURE_CORE_LOW(ARM_EXT_V4T), 0xf000d000, 0xf800d000, "bl%c\t%B%x" }, /* Fallback. */ { ARM_FEATURE_CORE_LOW(ARM_EXT_V1), 0x00000000, 0x00000000, UNDEFINED_INSTRUCTION }, { ARM_FEATURE_CORE_LOW(0), 0, 0, 0 } }; static const char *const arm_conditional[] = { "eq", "ne", "cs", "cc", "mi", "pl", "vs", "vc", "hi", "ls", "ge", "lt", "gt", "le", "al", "", "" }; static const char *const arm_fp_const[] = { "0.0", "1.0", "2.0", "3.0", "4.0", "5.0", "0.5", "10.0" }; static const char *const arm_shift[] = { "lsl", "lsr", "asr", "ror" }; typedef struct { const char *name; const char *description; const char *reg_names[16]; } arm_regname; static arm_regname const regnames[] = { { "raw", "Select raw register names", {"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"} }, { "gcc", "Select register names used by GCC", {"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "sl", "fp", "ip", "sp", "lr", "pc"} }, { "std", "Select register names used in ARM's ISA documentation", {"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "sp", "lr", "pc"} }, { "apcs", "Select register names used in the APCS", {"a1", "a2", "a3", "a4", "v1", "v2", "v3", "v4", "v5", "v6", "sl", "fp", "ip", "sp", "lr", "pc"} }, { "atpcs", "Select register names used in the ATPCS", {"a1", "a2", "a3", "a4", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", "IP", "SP", "LR", "PC"} }, { "special-atpcs", "Select special register names used in the ATPCS", {"a1", "a2", "a3", "a4", "v1", "v2", "v3", "WR", "v5", "SB", "SL", "FP", "IP", "SP", "LR", "PC"} } }; static const char *const iwmmxt_wwnames[] = { "b", "h", "w", "d" }; static const char *const iwmmxt_wwssnames[] = { "b", "bus", "bc", "bss", "h", "hus", "hc", "hss", "w", "wus", "wc", "wss", "d", "dus", "dc", "dss" }; static const char *const iwmmxt_regnames[] = { "wr0", "wr1", "wr2", "wr3", "wr4", "wr5", "wr6", "wr7", "wr8", "wr9", "wr10", "wr11", "wr12", "wr13", "wr14", "wr15" }; static const char *const iwmmxt_cregnames[] = { "wcid", "wcon", "wcssf", "wcasf", "reserved", "reserved", "reserved", "reserved", "wcgr0", "wcgr1", "wcgr2", "wcgr3", "reserved", "reserved", "reserved", "reserved" }; static void oappend(disassemble_info *info, const char *s) { info->fprintf_func(info->stream, "%s", s); } static void internal_error(disassemble_info *info) { oappend(info, INTERNAL_DISASSEMBLER_ERROR); } #define NUM_ARM_REGNAMES ARRAY_SIZE (regnames) #define arm_regnames regnames[info->regname_selected].reg_names /* Decode a bitfield of the form matching regexp (N(-N)?,)*N(-N)?. Returns pointer to following character of the format string and fills in *VALUEP and *WIDTHP with the extracted value and number of bits extracted. WIDTHP can be NULL. */ static const char *arm_decode_bitfield(const char *ptr, uint32_t insn, uint32_t *valuep, int *widthp) { uint32_t value = 0; int width = 0; do { int start, end; int bits; for (start = 0; *ptr >= '0' && *ptr <= '9'; ptr++) start = start * 10 + *ptr - '0'; if (*ptr == '-') for (end = 0, ptr++; *ptr >= '0' && *ptr <= '9'; ptr++) end = end * 10 + *ptr - '0'; else end = start; bits = end - start; if (bits < 0) return NULL; /* should not happen */ value |= ((insn >> start) & ((2ul << bits) - 1)) << width; width += bits + 1; } while (*ptr++ == ','); *valuep = value; if (widthp) *widthp = width; return ptr - 1; } static void arm_decode_shift(disassemble_info *info, int32_t given, fprintf_ftype func, void *stream, bfd_boolean print_shift) { func(stream, "%s", arm_regnames[given & 0xf]); if ((given & 0xff0) != 0) { if ((given & 0x10) == 0) { int amount = (given & 0xf80) >> 7; int shift = (given & 0x60) >> 5; if (amount == 0) { if (shift == 3) { func(stream, ",rrx"); return; } amount = 32; } if (print_shift) func(stream, ",%s #%d", arm_shift[shift], amount); else func(stream, ",#%d", amount); } else if ((given & 0x80) == 0x80) func(stream, "\t; "); else if (print_shift) func(stream, ",%s %s", arm_shift[(given & 0x60) >> 5], arm_regnames[(given & 0xf00) >> 8]); else func(stream, ",%s", arm_regnames[(given & 0xf00) >> 8]); } } #define W_BIT 21 #define I_BIT 22 #define U_BIT 23 #define P_BIT 24 #define WRITEBACK_BIT_SET (given & (1 << W_BIT)) #define IMMEDIATE_BIT_SET (given & (1 << I_BIT)) #define NEGATIVE_BIT_SET ((given & (1 << U_BIT)) == 0) #define PRE_BIT_SET (given & (1 << P_BIT)) /* Print one coprocessor instruction on INFO->STREAM. Return TRUE if the instuction matched, FALSE if this is not a recognised coprocessor instruction. */ static bfd_boolean print_insn_coprocessor(uint32_t pc, disassemble_info *info, int32_t given, bfd_boolean thumb) { const struct opcode32 *insn; void *stream = info->stream; fprintf_ftype func = info->fprintf_func; uint32_t mask; uint32_t value = 0; int cond; int cp_num; arm_feature_set allowed_arches = ARM_ARCH_NONE; ARM_FEATURE_COPY(allowed_arches, info->priv.features); for (insn = coprocessor_opcodes; insn->assembler; insn++) { uint32_t u_reg = 16; bfd_boolean is_unpredictable = FALSE; int32_t value_in_comment = 0; const char *c; if (ARM_FEATURE_ZERO(insn->arch)) { switch (insn->value) { case SENTINEL_IWMMXT_START: #if 0 if (info->disasm->cpu != CPU_ARM_XSCALE && info->disasm->cpu != CPU_ARM_IWMMXT && info->disasm->cpu != CPU_ARM_IWMMXT2) #endif { do insn++; while ((!ARM_FEATURE_ZERO(insn->arch)) && insn->value != SENTINEL_IWMMXT_END); } continue; case SENTINEL_IWMMXT_END: continue; case SENTINEL_GENERIC_START: ARM_FEATURE_COPY(allowed_arches, info->priv.features); continue; default: internal_error(info); return FALSE; } } mask = insn->mask; value = insn->value; cp_num = (given >> 8) & 0xf; if (thumb) { /* The high 4 bits are 0xe for Arm conditional instructions, and 0xe for arm unconditional instructions. The rest of the encoding is the same. */ mask |= 0xf0000000; value |= 0xe0000000; if (info->ifthen_state) cond = IFTHEN_COND; else cond = COND_UNCOND; } else { /* Only match unconditional instuctions against unconditional patterns. */ if ((given & 0xf0000000) == 0xf0000000) { mask |= 0xf0000000; cond = COND_UNCOND; } else { cond = (given >> 28) & 0xf; if (cond == 0xe) cond = COND_UNCOND; } } if ((given & mask) != value) continue; if (!ARM_CPU_HAS_FEATURE(insn->arch, allowed_arches)) continue; if (insn->value == 0xfe000010 /* mcr2 */ || insn->value == 0xfe100010 /* mrc2 */ || insn->value == 0xfc100000 /* ldc2 */ || insn->value == 0xfc000000) /* stc2 */ { if (cp_num == 9 || cp_num == 10 || cp_num == 11) is_unpredictable = TRUE; } else if (insn->value == 0x0e000000 /* cdp */ || insn->value == 0xfe000000 /* cdp2 */ || insn->value == 0x0e000010 /* mcr */ || insn->value == 0x0e100010 /* mrc */ || insn->value == 0x0c100000 /* ldc */ || insn->value == 0x0c000000) /* stc */ { /* Floating-point instructions. */ if (cp_num == 9 || cp_num == 10 || cp_num == 11) continue; } for (c = insn->assembler; *c; c++) { if (*c == '%') { switch (*++c) { case '%': func(stream, "%%"); break; case 'A': { int rn = (given >> 16) & 0xf; uint32_t offset = given & 0xff; func(stream, "[%s", arm_regnames[(given >> 16) & 0xf]); if (PRE_BIT_SET || WRITEBACK_BIT_SET) { /* Not unindexed. The offset is scaled. */ if (cp_num == 9) /* vldr.16/vstr.16 will shift the address left by 1 bit only. */ offset = offset * 2; else offset = offset * 4; if (NEGATIVE_BIT_SET) offset = -offset; if (rn != 15) value_in_comment = offset; } if (PRE_BIT_SET) { if (offset) func(stream, ",#%d]%s", (int) offset, WRITEBACK_BIT_SET ? "!" : ""); else if (NEGATIVE_BIT_SET) func(stream, ",#-0]"); else func(stream, "]"); } else { func(stream, "]"); if (WRITEBACK_BIT_SET) { if (offset) func(stream, ",#%d", (int) offset); else if (NEGATIVE_BIT_SET) func(stream, ",#-0"); } else { func(stream, ",{%s%d}", (NEGATIVE_BIT_SET && !offset) ? "-" : "", (int) offset); value_in_comment = offset; } } if (rn == 15 && (PRE_BIT_SET || WRITEBACK_BIT_SET)) { func(stream, "\t; "); /* For unaligned PCs, apply off-by-alignment correction. */ info->print_address_func(offset + pc + info->bytes_per_chunk * 2 - (pc & 3), info); } } break; case 'B': { int regno = ((given >> 12) & 0xf) | ((given >> (22 - 4)) & 0x10); int offset = (given >> 1) & 0x3f; if (offset == 1) func(stream, "{d%d}", regno); else if (regno + offset > 32) func(stream, "{d%d-}", regno, regno + offset - 1); else func(stream, "{d%d-d%d}", regno, regno + offset - 1); } break; case 'u': if (cond != COND_UNCOND) is_unpredictable = TRUE; /* Fall through. */ case 'c': if (cond != COND_UNCOND && cp_num == 9) is_unpredictable = TRUE; func(stream, "%s", arm_conditional[cond]); break; case 'I': /* Print a Cirrus/DSP shift immediate. */ /* Immediates are 7bit signed ints with bits 0..3 in bits 0..3 of opcode and bits 4..6 in bits 5..7 of opcode. */ { int imm; imm = (given & 0xf) | ((given & 0xe0) >> 1); /* Is ``imm'' a negative number? */ if (imm & 0x40) imm -= 0x80; func(stream, "%d", imm); } break; case 'F': switch (given & 0x00408000) { case 0: func(stream, "4"); break; case 0x8000: func(stream, "1"); break; case 0x00400000: func(stream, "2"); break; default: func(stream, "3"); break; } break; case 'P': switch (given & 0x00080080) { case 0: func(stream, "s"); break; case 0x80: func(stream, "d"); break; case 0x00080000: func(stream, "e"); break; default: func(stream, _("")); break; } break; case 'Q': switch (given & 0x00408000) { case 0: func(stream, "s"); break; case 0x8000: func(stream, "d"); break; case 0x00400000: func(stream, "e"); break; default: func(stream, "p"); break; } break; case 'R': switch (given & 0x60) { case 0: break; case 0x20: func(stream, "p"); break; case 0x40: func(stream, "m"); break; default: func(stream, "z"); break; } break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { int width; c = arm_decode_bitfield(c, given, &value, &width); if (c == NULL) { internal_error(info); return FALSE; } switch (*c) { case 'R': if (value == 15) is_unpredictable = TRUE; /* Fall through. */ case 'r': if (c[1] == 'u') { /* Eat the 'u' character. */ ++c; if (u_reg == value) is_unpredictable = TRUE; u_reg = value; } func(stream, "%s", arm_regnames[value]); break; case 'V': if (given & (1 << 6)) goto Q; /* FALLTHROUGH */ case 'D': func(stream, "d%d", value); break; case 'Q': Q: if (value & 1) func(stream, "", value >> 1); else func(stream, "q%d", value >> 1); break; case 'd': func(stream, "%d", value); value_in_comment = value; break; case 'E': { /* Converts immediate 8 bit back to float value. */ unsigned int floatVal = (value & 0x80) << 24 | (value & 0x3F) << 19 | ((value & 0x40) ? (0xF8 << 22) : (1 << 30)); /* Quarter float have a maximum value of 31.0. Get floating point value multiplied by 1e7. The maximum value stays in limit of a 32-bit int. */ unsigned int decVal = (78125 << (((floatVal >> 23) & 0xFF) - 124)) * (16 + (value & 0xF)); if (!(decVal % 1000000)) func(stream, "%d\t; 0x%08x %c%u.%01u", value, floatVal, value & 0x80 ? '-' : ' ', decVal / 10000000, decVal % 10000000 / 1000000); else if (!(decVal % 10000)) func(stream, "%d\t; 0x%08x %c%u.%03u", value, floatVal, value & 0x80 ? '-' : ' ', decVal / 10000000, decVal % 10000000 / 10000); else func(stream, "%d\t; 0x%08x %c%u.%07u", value, floatVal, value & 0x80 ? '-' : ' ', decVal / 10000000, decVal % 10000000); break; } case 'k': { int from = (given & (1 << 7)) ? 32 : 16; func(stream, "%d", from - value); } break; case 'f': if (value > 7) func(stream, "#%s", arm_fp_const[value & 7]); else func(stream, "f%d", value); break; case 'w': if (width == 2) func(stream, "%s", iwmmxt_wwnames[value]); else func(stream, "%s", iwmmxt_wwssnames[value]); break; case 'g': func(stream, "%s", iwmmxt_regnames[value]); break; case 'G': func(stream, "%s", iwmmxt_cregnames[value]); break; case 'x': func(stream, "0x%lx", (value & 0xffffffffUL)); break; case 'c': switch (value) { case 0: func(stream, "eq"); break; case 1: func(stream, "vs"); break; case 2: func(stream, "ge"); break; case 3: func(stream, "gt"); break; default: func(stream, "??"); break; } break; case '`': c++; if (value == 0) func(stream, "%c", *c); break; case '\'': c++; if (value == (((uint32_t)1 << width) - 1)) func(stream, "%c", *c); break; case '?': func(stream, "%c", c[(1 << width) - (int) value]); c += 1 << width; break; default: internal_error(info); return FALSE; } } break; case 'y': case 'z': { int single = *c++ == 'y'; int regno; switch (*c) { case '4': /* Sm pair */ case '0': /* Sm, Dm */ regno = given & 0x0000000f; if (single) { regno <<= 1; regno += (given >> 5) & 1; } else regno += ((given >> 5) & 1) << 4; break; case '1': /* Sd, Dd */ regno = (given >> 12) & 0x0000000f; if (single) { regno <<= 1; regno += (given >> 22) & 1; } else regno += ((given >> 22) & 1) << 4; break; case '2': /* Sn, Dn */ regno = (given >> 16) & 0x0000000f; if (single) { regno <<= 1; regno += (given >> 7) & 1; } else regno += ((given >> 7) & 1) << 4; break; case '3': /* List */ func(stream, "{"); regno = (given >> 12) & 0x0000000f; if (single) { regno <<= 1; regno += (given >> 22) & 1; } else regno += ((given >> 22) & 1) << 4; break; default: internal_error(info); return FALSE; } func(stream, "%c%d", single ? 's' : 'd', regno); if (*c == '3') { int count = given & 0xff; if (single == 0) count >>= 1; if (--count) { func(stream, "-%c%d", single ? 's' : 'd', regno + count); } func(stream, "}"); } else if (*c == '4') func(stream, ",%c%d", single ? 's' : 'd', regno + 1); } break; case 'L': switch (given & 0x00400100) { case 0x00000000: func(stream, "b"); break; case 0x00400000: func(stream, "h"); break; case 0x00000100: func(stream, "w"); break; case 0x00400100: func(stream, "d"); break; default: break; } break; case 'Z': { /* given (20, 23) | given (0, 3) */ value = ((given >> 16) & 0xf0) | (given & 0xf); func(stream, "%d", (int) value); } break; case 'l': /* This is like the 'A' operator, except that if the width field "M" is zero, then the offset is *not* multiplied by four. */ { int offset = given & 0xff; int multiplier = (given & 0x00000100) ? 4 : 1; func(stream, "[%s", arm_regnames[(given >> 16) & 0xf]); if (multiplier > 1) { value_in_comment = offset * multiplier; if (NEGATIVE_BIT_SET) value_in_comment = -value_in_comment; } if (offset) { if (PRE_BIT_SET) { func(stream, ",#%s%d]%s", NEGATIVE_BIT_SET ? "-" : "", offset * multiplier, WRITEBACK_BIT_SET ? "!" : ""); } else { func(stream, "],#%s%d", NEGATIVE_BIT_SET ? "-" : "", offset * multiplier); } } else { func(stream, "]"); } } break; case 'r': { int imm4 = (given >> 4) & 0xf; int puw_bits = ((given >> 22) & 6) | ((given >> W_BIT) & 1); int ubit = !NEGATIVE_BIT_SET; const char *rm = arm_regnames[given & 0xf]; const char *rn = arm_regnames[(given >> 16) & 0xf]; switch (puw_bits) { case 1: case 3: func(stream, "[%s],%c%s", rn, ubit ? '+' : '-', rm); if (imm4) func(stream, ",lsl #%d", imm4); break; case 4: case 5: case 6: case 7: func(stream, "[%s,%c%s", rn, ubit ? '+' : '-', rm); if (imm4 > 0) func(stream, ",lsl #%d", imm4); func(stream, "]"); if (puw_bits == 5 || puw_bits == 7) func(stream, "!"); break; default: func(stream, "INVALID"); break; } } break; case 'i': { int32_t imm5; imm5 = ((given & 0x100) >> 4) | (given & 0xf); func(stream, "%d", imm5 == 0 ? 32 : imm5); } break; default: internal_error(info); return FALSE; } } else { func(stream, "%c", *c); } } if (value_in_comment > 32 || value_in_comment < -16) func(stream, "\t; 0x%lx", (value_in_comment & 0xffffffffUL)); if (is_unpredictable) func(stream, UNPREDICTABLE_INSTRUCTION); return TRUE; } return FALSE; } /* Decodes and prints ARM addressing modes. Returns the offset used in the address, if any, if it is worthwhile printing the offset as a hexadecimal value in a comment at the end of the line of disassembly. */ static int32_t print_arm_address(uint32_t pc, disassemble_info *info, int32_t given) { void *stream = info->stream; fprintf_ftype func = info->fprintf_func; uint32_t offset = 0; if (((given & 0x000f0000) == 0x000f0000) && ((given & 0x02000000) == 0)) { offset = given & 0xfff; func(stream, "[pc"); if (PRE_BIT_SET) { /* Pre-indexed. Elide offset of positive zero when non-writeback. */ if (WRITEBACK_BIT_SET || NEGATIVE_BIT_SET || offset) func(stream, ",#%s%d", NEGATIVE_BIT_SET ? "-" : "", (int) offset); if (NEGATIVE_BIT_SET) offset = -offset; offset += pc + 8; /* Cope with the possibility of write-back being used. Probably a very dangerous thing for the programmer to do, but who are we to argue ? */ func(stream, "]%s", WRITEBACK_BIT_SET ? "!" : ""); } else /* Post indexed. */ { func(stream, "],#%s%d", NEGATIVE_BIT_SET ? "-" : "", (int) offset); /* Ie ignore the offset. */ offset = pc + 8; } func(stream, "\t; "); info->print_address_func(offset, info); offset = 0; } else { func(stream, "[%s", arm_regnames[(given >> 16) & 0xf]); if (PRE_BIT_SET) { if ((given & 0x02000000) == 0) { /* Elide offset of positive zero when non-writeback. */ offset = given & 0xfff; if (WRITEBACK_BIT_SET || NEGATIVE_BIT_SET || offset) func(stream, ",#%s%d", NEGATIVE_BIT_SET ? "-" : "", (int) offset); } else { func(stream, ",%s", NEGATIVE_BIT_SET ? "-" : ""); arm_decode_shift(info, given, func, stream, TRUE); } func(stream, "]%s", WRITEBACK_BIT_SET ? "!" : ""); } else { if ((given & 0x02000000) == 0) { /* Always show offset. */ offset = given & 0xfff; func(stream, "],#%s%d", NEGATIVE_BIT_SET ? "-" : "", (int) offset); } else { func(stream, "],%s", NEGATIVE_BIT_SET ? "-" : ""); arm_decode_shift(info, given, func, stream, TRUE); } } if (NEGATIVE_BIT_SET) offset = -offset; } return (int32_t) offset; } static float floatformat_to_double(uint32_t value) { float frac, result; int sign = (value & 0x80000000) != 0; if ((value & 0x7fffffff) == 0) return sign ? -0.0 : 0.0; if ((value & 0x7f800000) == 0x7f800000) { if ((value & 0x003fffff) == 0) return sign ? -1.0 / 0.0 : 1.0 / 0.0; return sign ? -log(-1) : log(-1); } frac = (float) ((value & 0x7fffff) | 0x800000) / 8388608.0; if (sign) frac = -frac; result = ldexp(frac, (int)((value >> 23) & 0xff) - 127); return result; } /* Print one neon instruction on INFO->STREAM. Return TRUE if the instuction matched, FALSE if this is not a recognised neon instruction. */ static bfd_boolean print_insn_neon(disassemble_info *info, int32_t given, bfd_boolean thumb) { const struct opcode32 *insn; void *stream = info->stream; fprintf_ftype func = info->fprintf_func; if (thumb) { if ((given & 0xef000000) == 0xef000000) { /* Move bit 28 to bit 24 to translate Thumb2 to ARM encoding. */ uint32_t bit28 = given & (1 << 28); given &= 0x00ffffff; if (bit28) given |= 0xf3000000; else given |= 0xf2000000; } else if ((given & 0xff000000) == 0xf9000000) given ^= 0xf9000000 ^ 0xf4000000; else return FALSE; } for (insn = neon_opcodes; insn->assembler; insn++) { if ((given & insn->mask) == insn->value) { int32_t value_in_comment = 0; bfd_boolean is_unpredictable = FALSE; const char *c; for (c = insn->assembler; *c; c++) { if (*c == '%') { switch (*++c) { case '%': func(stream, "%%"); break; case 'u': if (thumb && info->ifthen_state) is_unpredictable = TRUE; /* Fall through. */ case 'c': if (thumb && info->ifthen_state) func(stream, "%s", arm_conditional[IFTHEN_COND]); break; case 'A': { static const unsigned char enc[16] = { 0x4, 0x14, /* st4 0,1 */ 0x4, /* st1 2 */ 0x4, /* st2 3 */ 0x3, /* st3 4 */ 0x13, /* st3 5 */ 0x3, /* st1 6 */ 0x1, /* st1 7 */ 0x2, /* st2 8 */ 0x12, /* st2 9 */ 0x2, /* st1 10 */ 0, 0, 0, 0, 0 }; int rd = ((given >> 12) & 0xf) | (((given >> 22) & 1) << 4); int rn = ((given >> 16) & 0xf); int rm = ((given >> 0) & 0xf); int align = ((given >> 4) & 0x3); int type = ((given >> 8) & 0xf); int n = enc[type] & 0xf; int stride = (enc[type] >> 4) + 1; int ix; func(stream, "{"); if (stride > 1) for (ix = 0; ix != n; ix++) func(stream, "%sd%d", ix ? "," : "", rd + ix * stride); else if (n == 1) func(stream, "d%d", rd); else func(stream, "d%d-d%d", rd, rd + n - 1); func(stream, "},[%s", arm_regnames[rn]); if (align) func(stream, " :%d", 32 << align); func(stream, "]"); if (rm == 0xd) func(stream, "!"); else if (rm != 0xf) func(stream, ",%s", arm_regnames[rm]); } break; case 'B': { int rd = ((given >> 12) & 0xf) | (((given >> 22) & 1) << 4); int rn = ((given >> 16) & 0xf); int rm = ((given >> 0) & 0xf); int idx_align = ((given >> 4) & 0xf); int align = 0; int size = ((given >> 10) & 0x3); int idx = idx_align >> (size + 1); int length = ((given >> 8) & 3) + 1; int stride = 1; int i; if (length > 1 && size > 0) stride = (idx_align & (1 << size)) ? 2 : 1; switch (length) { case 1: { int amask = (1 << size) - 1; if ((idx_align & (1 << size)) != 0) return FALSE; if (size > 0) { if ((idx_align & amask) == amask) align = 8 << size; else if ((idx_align & amask) != 0) return FALSE; } } break; case 2: if (size == 2 && (idx_align & 2) != 0) return FALSE; align = (idx_align & 1) ? 16 << size : 0; break; case 3: if ((size == 2 && (idx_align & 3) != 0) || (idx_align & 1) != 0) return FALSE; break; case 4: if (size == 2) { if ((idx_align & 3) == 3) return FALSE; align = (idx_align & 3) * 64; } else { align = (idx_align & 1) ? 32 << size : 0; } break; default: internal_error(info); return FALSE; } func(stream, "{"); for (i = 0; i < length; i++) func(stream, "%sd%d[%d]", i == 0 ? "" : ",", rd + i * stride, idx); func(stream, "},[%s", arm_regnames[rn]); if (align) func(stream, " :%d", align); func(stream, "]"); if (rm == 0xd) func(stream, "!"); else if (rm != 0xf) func(stream, ",%s", arm_regnames[rm]); } break; case 'C': { int rd = ((given >> 12) & 0xf) | (((given >> 22) & 1) << 4); int rn = ((given >> 16) & 0xf); int rm = ((given >> 0) & 0xf); int align = ((given >> 4) & 0x1); int size = ((given >> 6) & 0x3); int type = ((given >> 8) & 0x3); int n = type + 1; int stride = ((given >> 5) & 0x1); int ix; if (stride && (n == 1)) n++; else stride++; func(stream, "{"); if (stride > 1) for (ix = 0; ix != n; ix++) func(stream, "%sd%d[]", ix ? "," : "", rd + ix * stride); else if (n == 1) func(stream, "d%d[]", rd); else func(stream, "d%d[]-d%d[]", rd, rd + n - 1); func(stream, "},[%s", arm_regnames[rn]); if (align) { align = (8 * (type + 1)) << size; if (type == 3) align = (size > 1) ? align >> 1 : align; if (type == 2 || (type == 0 && !size)) func(stream, ":", align); else func(stream, ":%d", align); } func(stream, "]"); if (rm == 0xd) func(stream, "!"); else if (rm != 0xf) func(stream, ",%s", arm_regnames[rm]); } break; case 'D': { int raw_reg = (given & 0xf) | ((given >> 1) & 0x10); int size = (given >> 20) & 3; int reg = raw_reg & ((4 << size) - 1); int ix = raw_reg >> size >> 2; func(stream, "d%d[%d]", reg, ix); } break; case 'E': /* Neon encoded constant for mov, mvn, vorr, vbic. */ { int bits = 0; int cmode = (given >> 8) & 0xf; int op = (given >> 5) & 0x1; uint32_t value = 0, hival = 0; unsigned int shift; int size = 0; int isfloat = 0; bits |= ((given >> 24) & 1) << 7; bits |= ((given >> 16) & 7) << 4; bits |= ((given >> 0) & 15) << 0; if (cmode < 8) { shift = (cmode >> 1) & 3; value = (uint32_t) bits << (8 * shift); size = 32; } else if (cmode < 12) { shift = (cmode >> 1) & 1; value = (uint32_t) bits << (8 * shift); size = 16; } else if (cmode < 14) { shift = (cmode & 1) + 1; value = (uint32_t) bits << (8 * shift); value |= ((uint32_t)1 << (8 * shift)) - 1; size = 32; } else if (cmode == 14) { if (op) { /* Bit replication into bytes. */ int ix; uint32_t mask; value = 0; hival = 0; for (ix = 7; ix >= 0; ix--) { mask = ((bits >> ix) & 1) ? 0xff : 0; if (ix <= 3) value = (value << 8) | mask; else hival = (hival << 8) | mask; } size = 64; } else { /* Byte replication. */ value = (uint32_t) bits; size = 8; } } else if (!op) { /* Floating point encoding. */ int tmp; value = (uint32_t) (bits & 0x7f) << 19; value |= (uint32_t) (bits & 0x80) << 24; tmp = bits & 0x40 ? 0x3c : 0x40; value |= (uint32_t) tmp << 24; size = 32; isfloat = 1; } else { func(stream, "", bits, cmode, op); size = 32; break; } switch (size) { case 8: func(stream, "#%d\t; 0x%.2x", value, value); break; case 16: func(stream, "#%d\t; 0x%.4x", value, value); break; case 32: if (isfloat) { double fvalue; fvalue = floatformat_to_double(value); func(stream, "#%.7g\t; 0x%.8x", fvalue, value); } else { func(stream, "#%d\t; 0x%.8x", (int32_t) (((value & 0x80000000L) != 0) ? value | ~0xffffffffL : value), value); } break; case 64: func(stream, "#0x%.8x%.8x", hival, value); break; default: internal_error(info); return FALSE; } } break; case 'F': { int regno = ((given >> 16) & 0xf) | ((given >> (7 - 4)) & 0x10); int num = (given >> 8) & 0x3; if (!num) func(stream, "{d%d}", regno); else if (num + regno >= 32) func(stream, "{d%d-= '0' && *c <= '9') { limit = *c - '0'; } else if (*c >= 'a' && *c <= 'f') { limit = *c - 'a' + 10; } else { internal_error(info); return FALSE; } low = limit >> 2; high = limit & 3; if (value < low || value > high) func(stream, "", base << value); else func(stream, "%d", base << value); } break; case 'R': if (given & (1 << 6)) goto Q; /* FALLTHROUGH */ case 'D': func(stream, "d%d", value); break; case 'Q': Q: if (value & 1) func(stream, "", value >> 1); else func(stream, "q%d", value >> 1); break; case '`': c++; if (value == 0) func(stream, "%c", *c); break; case '\'': c++; if (value == (((uint32_t)1 << width) - 1)) func(stream, "%c", *c); break; case '?': func(stream, "%c", c[(1 << width) - (int) value]); c += 1 << width; break; default: internal_error(info); return FALSE; } } break; default: internal_error(info); return FALSE; } } else { func(stream, "%c", *c); } } if (value_in_comment > 32 || value_in_comment < -16) func(stream, "\t; 0x%x", value_in_comment); if (is_unpredictable) func(stream, UNPREDICTABLE_INSTRUCTION); return TRUE; } } return FALSE; } /* Return the name of a v7A special register. */ static const char *banked_regname(unsigned int reg) { switch (reg) { case 15: return "CPSR"; case 32: return "R8_usr"; case 33: return "R9_usr"; case 34: return "R10_usr"; case 35: return "R11_usr"; case 36: return "R12_usr"; case 37: return "SP_usr"; case 38: return "LR_usr"; case 40: return "R8_fiq"; case 41: return "R9_fiq"; case 42: return "R10_fiq"; case 43: return "R11_fiq"; case 44: return "R12_fiq"; case 45: return "SP_fiq"; case 46: return "LR_fiq"; case 48: return "LR_irq"; case 49: return "SP_irq"; case 50: return "LR_svc"; case 51: return "SP_svc"; case 52: return "LR_abt"; case 53: return "SP_abt"; case 54: return "LR_und"; case 55: return "SP_und"; case 60: return "LR_mon"; case 61: return "SP_mon"; case 62: return "ELR_hyp"; case 63: return "SP_hyp"; case 79: return "SPSR"; case 110: return "SPSR_fiq"; case 112: return "SPSR_irq"; case 114: return "SPSR_svc"; case 116: return "SPSR_abt"; case 118: return "SPSR_und"; case 124: return "SPSR_mon"; case 126: return "SPSR_hyp"; default: return NULL; } } /* Return the name of the DMB/DSB option. */ static const char *data_barrier_option(unsigned int option) { switch (option & 0xf) { case 0xf: return "sy"; case 0xe: return "st"; case 0xd: return "ld"; case 0xb: return "ish"; case 0xa: return "ishst"; case 0x9: return "ishld"; case 0x7: return "un"; case 0x6: return "unst"; case 0x5: return "nshld"; case 0x3: return "osh"; case 0x2: return "oshst"; case 0x1: return "oshld"; default: return NULL; } } /* Print one ARM instruction from PC on INFO->STREAM. */ static void print_insn_arm(uint32_t pc, disassemble_info *info, int32_t given) { const struct opcode32 *insn; void *stream = info->stream; fprintf_ftype func = info->fprintf_func; if (print_insn_coprocessor(pc, info, given, FALSE)) return; if (print_insn_neon(info, given, FALSE)) return; for (insn = arm_opcodes; insn->assembler; insn++) { if ((given & insn->mask) != insn->value) continue; if (!ARM_CPU_HAS_FEATURE(insn->arch, info->priv.features)) continue; /* Special case: an instruction with all bits set in the condition field (0xFnnn_nnnn) is only matched if all those bits are set in insn->mask, or by the catchall at the end of the table. */ if ((given & 0xF0000000) != 0xF0000000 || (insn->mask & 0xF0000000) == 0xF0000000 || (insn->mask == 0 && insn->value == 0)) { uint32_t u_reg = 16; uint32_t U_reg = 16; bfd_boolean is_unpredictable = FALSE; int32_t value_in_comment = 0; const char *c; for (c = insn->assembler; *c; c++) { if (*c == '%') { bfd_boolean allow_unpredictable = FALSE; switch (*++c) { case '%': func(stream, "%%"); break; case 'a': value_in_comment = print_arm_address(pc, info, given); break; case 'P': /* Set P address bit and use normal address printing routine. */ value_in_comment = print_arm_address(pc, info, given | (1 << P_BIT)); break; case 'S': allow_unpredictable = TRUE; /* Fall through. */ case 's': if ((given & 0x004f0000) == 0x004f0000) { /* PC relative with immediate offset. */ uint32_t offset = ((given & 0xf00) >> 4) | (given & 0xf); if (PRE_BIT_SET) { /* Elide positive zero offset. */ if (offset || NEGATIVE_BIT_SET) func(stream, "[pc,#%s%d]\t; ", NEGATIVE_BIT_SET ? "-" : "", (int) offset); else func(stream, "[pc]\t; "); if (NEGATIVE_BIT_SET) offset = -offset; info->print_address_func(offset + pc + 8, info); } else { /* Always show the offset. */ func(stream, "[pc],#%s%d", NEGATIVE_BIT_SET ? "-" : "", (int) offset); if (!allow_unpredictable) is_unpredictable = TRUE; } } else { int offset = ((given & 0xf00) >> 4) | (given & 0xf); func(stream, "[%s", arm_regnames[(given >> 16) & 0xf]); if (PRE_BIT_SET) { if (IMMEDIATE_BIT_SET) { /* Elide offset for non-writeback positive zero. */ if (WRITEBACK_BIT_SET || NEGATIVE_BIT_SET || offset) func(stream, ",#%s%d", NEGATIVE_BIT_SET ? "-" : "", offset); if (NEGATIVE_BIT_SET) offset = -offset; value_in_comment = offset; } else { /* Register Offset or Register Pre-Indexed. */ func(stream, ",%s%s", NEGATIVE_BIT_SET ? "-" : "", arm_regnames[given & 0xf]); /* Writing back to the register that is the source/ destination of the load/store is unpredictable. */ if (!allow_unpredictable && WRITEBACK_BIT_SET && ((given & 0xf) == ((given >> 12) & 0xf))) is_unpredictable = TRUE; } func(stream, "]%s", WRITEBACK_BIT_SET ? "!" : ""); } else { if (IMMEDIATE_BIT_SET) { /* Immediate Post-indexed. */ /* PR 10924: Offset must be printed, even if it is zero. */ func(stream, "],#%s%d", NEGATIVE_BIT_SET ? "-" : "", offset); if (NEGATIVE_BIT_SET) offset = -offset; value_in_comment = offset; } else { /* Register Post-indexed. */ func(stream, "],%s%s", NEGATIVE_BIT_SET ? "-" : "", arm_regnames[given & 0xf]); /* Writing back to the register that is the source/ destination of the load/store is unpredictable. */ if (!allow_unpredictable && (given & 0xf) == ((given >> 12) & 0xf)) is_unpredictable = TRUE; } if (!allow_unpredictable) { /* Writeback is automatically implied by post- addressing. Setting the W bit is unnecessary and ARM specify it as being unpredictable. */ if (WRITEBACK_BIT_SET /* Specifying the PC register as the post-indexed registers is also unpredictable. */ || (!IMMEDIATE_BIT_SET && ((given & 0xf) == 0xf))) is_unpredictable = TRUE; } } } break; case 'b': { uint32_t disp = (((given & 0xffffff) ^ 0x800000) - 0x800000); info->print_address_func(disp * 4 + pc + 8, info); } break; case 'c': if (((given >> 28) & 0xf) != 0xe) func(stream, "%s", arm_conditional[(given >> 28) & 0xf]); break; case 'm': { int started = 0; int reg; func(stream, "{"); for (reg = 0; reg < 16; reg++) if ((given & (1 << reg)) != 0) { if (started) func(stream, ","); started = 1; func(stream, "%s", arm_regnames[reg]); } func(stream, "}"); if (!started) is_unpredictable = TRUE; } break; case 'q': arm_decode_shift(info, given, func, stream, FALSE); break; case 'o': if ((given & 0x02000000) != 0) { unsigned int rotate = (given & 0xf00) >> 7; unsigned int immed = (given & 0xff); unsigned int a, i; a = (((immed << (32 - rotate)) | (immed >> rotate)) & 0xffffffff); /* If there is another encoding with smaller rotate, the rotate should be specified directly. */ for (i = 0; i < 32; i += 2) if ((a << i | a >> (32 - i)) <= 0xff) break; if (i != rotate) func(stream, "#%d,%d", immed, rotate); else func(stream, "#%d", a); value_in_comment = a; } else { arm_decode_shift(info, given, func, stream, TRUE); } break; case 'p': if ((given & 0x0000f000) == 0x0000f000) { arm_feature_set arm_ext_v6 = ARM_FEATURE_CORE_LOW(ARM_EXT_V6); /* The p-variants of tst/cmp/cmn/teq are the pre-V6 mechanism for setting PSR flag bits. They are obsolete in V6 onwards. */ if (!ARM_CPU_HAS_FEATURE(info->priv.features, arm_ext_v6)) func(stream, "p"); else is_unpredictable = TRUE; } break; case 't': if ((given & 0x01200000) == 0x00200000) func(stream, "t"); break; case 'A': { int offset = given & 0xff; value_in_comment = offset * 4; if (NEGATIVE_BIT_SET) value_in_comment = -value_in_comment; func(stream, "[%s", arm_regnames[(given >> 16) & 0xf]); if (PRE_BIT_SET) { if (offset) func(stream, ",#%d]%s", (int) value_in_comment, WRITEBACK_BIT_SET ? "!" : ""); else func(stream, "]"); } else { func(stream, "]"); if (WRITEBACK_BIT_SET) { if (offset) func(stream, ",#%d", (int) value_in_comment); } else { func(stream, ",{%d}", (int) offset); value_in_comment = offset; } } } break; case 'B': /* Print ARM V5 BLX(1) address: pc+25 bits. */ { uint32_t address; uint32_t offset = 0; if (!NEGATIVE_BIT_SET) /* Is signed, hi bits should be ones. */ offset = (-1) ^ 0x00ffffff; /* Offset is (SignExtend(offset field)<<2). */ offset += given & 0x00ffffff; offset <<= 2; address = offset + pc + 8; if (given & 0x01000000) /* H bit allows addressing to 2-byte boundaries. */ address += 2; info->print_address_func(address, info); } break; case 'C': if ((given & 0x02000200) == 0x200) { const char *name; unsigned int sysm = (given & 0x004f0000) >> 16; sysm |= (given & 0x300) >> 4; name = banked_regname(sysm); if (name != NULL) func(stream, "%s", name); else func(stream, "(UNDEF: %u)", sysm); } else { func(stream, "%cPSR_", (given & 0x00400000) ? 'S' : 'C'); if (given & 0x80000) func(stream, "f"); if (given & 0x40000) func(stream, "s"); if (given & 0x20000) func(stream, "x"); if (given & 0x10000) func(stream, "c"); } break; case 'U': if ((given & 0xf0) == 0x60) { switch (given & 0xf) { case 0xf: func(stream, "sy"); break; default: func(stream, "#%d", (int) given & 0xf); break; } } else { const char *opt = data_barrier_option(given & 0xf); if (opt != NULL) func(stream, "%s", opt); else func(stream, "#%d", (int) given & 0xf); } break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { int width; uint32_t value; c = arm_decode_bitfield(c, given, &value, &width); if (c == NULL) { internal_error(info); return; } switch (*c) { case 'R': if (value == 15) is_unpredictable = TRUE; /* Fall through. */ case 'r': case 'T': /* We want register + 1 when decoding T. */ if (*c == 'T') ++value; if (c[1] == 'u') { /* Eat the 'u' character. */ ++c; if (u_reg == value) is_unpredictable = TRUE; u_reg = value; } if (c[1] == 'U') { /* Eat the 'U' character. */ ++c; if (U_reg == value) is_unpredictable = TRUE; U_reg = value; } func(stream, "%s", arm_regnames[value]); break; case 'd': func(stream, "%d", value); value_in_comment = value; break; case 'b': func(stream, "%d", value * 8); value_in_comment = value * 8; break; case 'W': func(stream, "%d", value + 1); value_in_comment = value + 1; break; case 'x': func(stream, "0x%08x", value); /* Some SWI instructions have special meanings. */ if ((given & 0x0fffffff) == 0x0FF00000) func(stream, "\t; IMB"); else if ((given & 0x0fffffff) == 0x0FF00001) func(stream, "\t; IMBRange"); break; case 'X': func(stream, "%01x", value & 0xf); value_in_comment = value; break; case '`': c++; if (value == 0) func(stream, "%c", *c); break; case '\'': c++; if (value == (((uint32_t)1 << width) - 1)) func(stream, "%c", *c); break; case '?': func(stream, "%c", c[(1 << width) - (int) value]); c += 1 << width; break; default: internal_error(info); return; } } break; case 'e': { int imm; imm = (given & 0xf) | ((given & 0xfff00) >> 4); func(stream, "%d", imm); value_in_comment = imm; } break; case 'E': /* LSB and WIDTH fields of BFI or BFC. The machine- language instruction encodes LSB and MSB. */ { int32_t msb = (given & 0x001f0000) >> 16; int32_t lsb = (given & 0x00000f80) >> 7; int32_t w = msb - lsb + 1; if (w > 0) func(stream, "#%u,#%u", lsb, w); else func(stream, "(invalid: %u:%u)", lsb, msb); } break; case 'R': /* Get the PSR/banked register name. */ { const char *name; unsigned int sysm = (given & 0x004f0000) >> 16; sysm |= (given & 0x300) >> 4; name = banked_regname(sysm); if (name != NULL) func(stream, "%s", name); else func(stream, "(UNDEF: %u)", sysm); } break; case 'V': /* 16-bit unsigned immediate from a MOVT or MOVW instruction, encoded in bits 0:11 and 15:19. */ { int32_t hi = (given & 0x000f0000) >> 4; int32_t lo = (given & 0x00000fff); int32_t imm16 = hi | lo; func(stream, "#%u", imm16); value_in_comment = imm16; } break; default: internal_error(info); return; } } else { func(stream, "%c", *c); } } if (value_in_comment > 32 || value_in_comment < -16) func(stream, "\t; 0x%lx", (value_in_comment & 0xffffffffUL)); if (is_unpredictable) func(stream, UNPREDICTABLE_INSTRUCTION); return; } } internal_error(info); } /* Print one 16-bit Thumb instruction from PC on INFO->STREAM. */ static void print_insn_thumb16(uint32_t pc, disassemble_info *info, int32_t given) { const struct opcode16 *insn; void *stream = info->stream; fprintf_ftype func = info->fprintf_func; for (insn = thumb_opcodes; insn->assembler; insn++) { if ((given & insn->mask) == insn->value) { int32_t value_in_comment = 0; const char *c = insn->assembler; for (; *c; c++) { int domaskpc = 0; int domasklr = 0; if (*c != '%') { func(stream, "%c", *c); continue; } switch (*++c) { case '%': func(stream, "%%"); break; case 'c': if (info->ifthen_state) func(stream, "%s", arm_conditional[IFTHEN_COND]); break; case 'C': if (info->ifthen_state) func(stream, "%s", arm_conditional[IFTHEN_COND]); else func(stream, "s"); break; case 'I': { unsigned int tmp; info->ifthen_next_state = given & 0xff; for (tmp = given << 1; tmp & 0xf; tmp <<= 1) func(stream, ((given ^ tmp) & 0x10) ? "e" : "t"); func(stream, "\t%s", arm_conditional[(given >> 4) & 0xf]); } break; case 'x': if (info->ifthen_next_state) func(stream, "\t; unpredictable branch in IT block\n"); break; case 'X': if (info->ifthen_state) func(stream, "\t; unpredictable ", arm_conditional[IFTHEN_COND]); break; case 'S': { int32_t reg; reg = (given >> 3) & 0x7; if (given & (1 << 6)) reg += 8; func(stream, "%s", arm_regnames[reg]); } break; case 'D': { int32_t reg; reg = given & 0x7; if (given & (1 << 7)) reg += 8; func(stream, "%s", arm_regnames[reg]); } break; case 'N': if (given & (1 << 8)) domasklr = 1; /* Fall through. */ case 'O': if (*c == 'O' && (given & (1 << 8))) domaskpc = 1; /* Fall through. */ case 'M': { int started = 0; int reg; func(stream, "{"); /* It would be nice if we could spot ranges, and generate the rS-rE format: */ for (reg = 0; (reg < 8); reg++) { if ((given & (1 << reg)) != 0) { if (started) func(stream, ","); started = 1; func(stream, "%s", arm_regnames[reg]); } } if (domasklr) { if (started) func(stream, ","); started = 1; func(stream, "%s", arm_regnames[14] /* "lr" */ ); } if (domaskpc) { if (started) func(stream, ","); func(stream, "%s", arm_regnames[15] /* "pc" */ ); } func(stream, "}"); } break; case 'W': /* Print writeback indicator for a LDMIA. We are doing a writeback if the base register is not in the register mask. */ if ((given & (1 << ((given & 0x0700) >> 8))) == 0) func(stream, "!"); break; case 'b': /* Print ARM V6T2 CZB address: pc+4+6 bits. */ { uint32_t address = (pc + 4 + ((given & 0x00f8) >> 2) + ((given & 0x0200) >> 3)); info->print_address_func(address, info); } break; case 's': /* Right shift immediate -- bits 6..10; 1-31 print as themselves, 0 prints as 32. */ { int32_t imm = (given & 0x07c0) >> 6; if (imm == 0) imm = 32; func(stream, "#%d", imm); } break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { int bitstart = *c++ - '0'; int bitend = 0; while (*c >= '0' && *c <= '9') bitstart = (bitstart * 10) + *c++ - '0'; switch (*c) { case '-': { uint32_t reg; c++; while (*c >= '0' && *c <= '9') bitend = (bitend * 10) + *c++ - '0'; if (!bitend) { internal_error(info); return; } reg = given >> bitstart; reg &= (2 << (bitend - bitstart)) - 1; switch (*c) { case 'r': func(stream, "%s", arm_regnames[reg]); break; case 'd': func(stream, "%d", (int)reg); value_in_comment = reg; break; case 'H': func(stream, "%d", ((int)reg << 1)); value_in_comment = reg << 1; break; case 'W': func(stream, "%d", ((int)reg << 2)); value_in_comment = reg << 2; break; case 'a': /* PC-relative address -- the bottom two bits of the address are dropped before the calculation. */ info->print_address_func(((pc + 4) & ~3) + (reg << 2), info); value_in_comment = 0; break; case 'x': func(stream, "0x%04x", (int)reg); break; case 'B': reg = ((reg ^ (1 << bitend)) - (1 << bitend)); info->print_address_func(reg * 2 + pc + 4, info); value_in_comment = 0; break; case 'c': func(stream, "%s", arm_conditional[reg]); break; default: internal_error(info); return; } } break; case '\'': c++; if ((given & (1 << bitstart)) != 0) func(stream, "%c", *c); break; case '?': ++c; if ((given & (1 << bitstart)) != 0) func(stream, "%c", *c++); else func(stream, "%c", *++c); break; default: internal_error(info); return; } } break; default: internal_error(info); return; } } if (value_in_comment > 32 || value_in_comment < -16) func(stream, "\t; 0x%x", value_in_comment); return; } } /* No match. */ internal_error(info); } /* Return the name of an V7M special register. */ static const char *psr_name(int regno) { switch (regno) { case 0x0: return "APSR"; case 0x1: return "IAPSR"; case 0x2: return "EAPSR"; case 0x3: return "PSR"; case 0x5: return "IPSR"; case 0x6: return "EPSR"; case 0x7: return "IEPSR"; case 0x8: return "MSP"; case 0x9: return "PSP"; case 0xa: return "MSPLIM"; case 0xb: return "PSPLIM"; case 0x10: return "PRIMASK"; case 0x11: return "BASEPRI"; case 0x12: return "BASEPRI_MAX"; case 0x13: return "FAULTMASK"; case 0x14: return "CONTROL"; case 0x88: return "MSP_NS"; case 0x89: return "PSP_NS"; case 0x8a: return "MSPLIM_NS"; case 0x8b: return "PSPLIM_NS"; case 0x90: return "PRIMASK_NS"; case 0x91: return "BASEPRI_NS"; case 0x93: return "FAULTMASK_NS"; case 0x94: return "CONTROL_NS"; case 0x98: return "SP_NS"; default: return ""; } } /* Print one 32-bit Thumb instruction from PC on INFO->STREAM. */ static void print_insn_thumb32(uint32_t pc, disassemble_info *info, int32_t given) { const struct opcode32 *insn; void *stream = info->stream; fprintf_ftype func = info->fprintf_func; if (print_insn_coprocessor(pc, info, given, TRUE)) return; if (print_insn_neon(info, given, TRUE)) return; for (insn = thumb32_opcodes; insn->assembler; insn++) { if ((given & insn->mask) == insn->value) { bfd_boolean is_unpredictable = FALSE; int32_t value_in_comment = 0; const char *c = insn->assembler; for (; *c; c++) { if (*c != '%') { func(stream, "%c", *c); continue; } switch (*++c) { case '%': func(stream, "%%"); break; case 'c': if (info->ifthen_state) func(stream, "%s", arm_conditional[IFTHEN_COND]); break; case 'x': if (info->ifthen_next_state) func(stream, "\t; unpredictable branch in IT block\n"); break; case 'X': if (info->ifthen_state) func(stream, "\t; unpredictable ", arm_conditional[IFTHEN_COND]); break; case 'I': { unsigned int imm12 = 0; imm12 |= (given & 0x000000ffu); imm12 |= (given & 0x00007000u) >> 4; imm12 |= (given & 0x04000000u) >> 15; func(stream, "#%u", imm12); value_in_comment = imm12; } break; case 'M': { unsigned int bits = 0, imm, imm8, mod; bits |= (given & 0x000000ffu); bits |= (given & 0x00007000u) >> 4; bits |= (given & 0x04000000u) >> 15; imm8 = (bits & 0x0ff); mod = (bits & 0xf00) >> 8; switch (mod) { case 0: imm = imm8; break; case 1: imm = ((imm8 << 16) | imm8); break; case 2: imm = ((imm8 << 24) | (imm8 << 8)); break; case 3: imm = ((imm8 << 24) | (imm8 << 16) | (imm8 << 8) | imm8); break; default: mod = (bits & 0xf80) >> 7; imm8 = (bits & 0x07f) | 0x80; imm = (((imm8 << (32 - mod)) | (imm8 >> mod)) & 0xffffffff); break; } func(stream, "#%u", imm); value_in_comment = imm; } break; case 'J': { unsigned int imm = 0; imm |= (given & 0x000000ffu); imm |= (given & 0x00007000u) >> 4; imm |= (given & 0x04000000u) >> 15; imm |= (given & 0x000f0000u) >> 4; func(stream, "#%u", imm); value_in_comment = imm; } break; case 'K': { unsigned int imm = 0; imm |= (given & 0x000f0000u) >> 16; imm |= (given & 0x00000ff0u) >> 0; imm |= (given & 0x0000000fu) << 12; func(stream, "#%u", imm); value_in_comment = imm; } break; case 'H': { unsigned int imm = 0; imm |= (given & 0x000f0000u) >> 4; imm |= (given & 0x00000fffu) >> 0; func(stream, "#%u", imm); value_in_comment = imm; } break; case 'V': { unsigned int imm = 0; imm |= (given & 0x00000fffu); imm |= (given & 0x000f0000u) >> 4; func(stream, "#%u", imm); value_in_comment = imm; } break; case 'S': { unsigned int reg = (given & 0x0000000fu); unsigned int stp = (given & 0x00000030u) >> 4; unsigned int imm = 0; imm |= (given & 0x000000c0u) >> 6; imm |= (given & 0x00007000u) >> 10; func(stream, "%s", arm_regnames[reg]); switch (stp) { case 0: if (imm > 0) func(stream, ", lsl #%u", imm); break; case 1: if (imm == 0) imm = 32; func(stream, ", lsr #%u", imm); break; case 2: if (imm == 0) imm = 32; func(stream, ", asr #%u", imm); break; case 3: if (imm == 0) func(stream, ", rrx"); else func(stream, ", ror #%u", imm); break; } } break; case 'a': { unsigned int Rn = (given & 0x000f0000) >> 16; unsigned int U = !NEGATIVE_BIT_SET; unsigned int op = (given & 0x00000f00) >> 8; unsigned int i12 = (given & 0x00000fff); unsigned int i8 = (given & 0x000000ff); bfd_boolean writeback = FALSE; bfd_boolean postind = FALSE; uint32_t offset = 0; func(stream, "[%s", arm_regnames[Rn]); if (U) /* 12-bit positive immediate offset. */ { offset = i12; if (Rn != 15) value_in_comment = offset; } else if (Rn == 15) /* 12-bit negative immediate offset. */ { offset = -(int) i12; } else if (op == 0x0) /* Shifted register offset. */ { unsigned int Rm = (i8 & 0x0f); unsigned int sh = (i8 & 0x30) >> 4; func(stream, ",%s", arm_regnames[Rm]); if (sh) func(stream, ",lsl #%u", sh); func(stream, "]"); break; } else { switch (op) { case 0xE: /* 8-bit positive immediate offset. */ offset = i8; break; case 0xC: /* 8-bit negative immediate offset. */ offset = -i8; break; case 0xF: /* 8-bit + preindex with wb. */ offset = i8; writeback = TRUE; break; case 0xD: /* 8-bit - preindex with wb. */ offset = -i8; writeback = TRUE; break; case 0xB: /* 8-bit + postindex. */ offset = i8; postind = TRUE; break; case 0x9: /* 8-bit - postindex. */ offset = -i8; postind = TRUE; break; default: func(stream, ",]"); goto skip; } } if (postind) { func(stream, "],#%d", (int) offset); } else { if (offset) func(stream, ",#%d", (int) offset); func(stream, writeback ? "]!" : "]"); } if (Rn == 15) { func(stream, "\t; "); info->print_address_func(((pc + 4) & ~3) + offset, info); } } skip: break; case 'A': { unsigned int U = !NEGATIVE_BIT_SET; unsigned int writeback = WRITEBACK_BIT_SET; unsigned int Rn = (given & 0x000f0000) >> 16; unsigned int off = (given & 0x000000ff); func(stream, "[%s", arm_regnames[Rn]); if (PRE_BIT_SET) { if (off || !U) { func(stream, ",#%c%u", U ? '+' : '-', off * 4); value_in_comment = (off && U) ? 1 : -1; } func(stream, "]"); if (writeback) func(stream, "!"); } else { func(stream, "],"); if (writeback) { func(stream, "#%c%u", U ? '+' : '-', off * 4); value_in_comment = (off && U) ? 1 : -1; } else { func(stream, "{%u}", off); value_in_comment = off; } } } break; case 'w': { unsigned int Sbit = (given & 0x01000000) >> 24; unsigned int type = (given & 0x00600000) >> 21; switch (type) { case 0: func(stream, Sbit ? "sb" : "b"); break; case 1: func(stream, Sbit ? "sh" : "h"); break; case 2: if (Sbit) func(stream, "??"); break; case 3: func(stream, "??"); break; } } break; case 'm': { int started = 0; int reg; func(stream, "{"); for (reg = 0; reg < 16; reg++) if ((given & (1 << reg)) != 0) { if (started) func(stream, ","); started = 1; func(stream, "%s", arm_regnames[reg]); } func(stream, "}"); } break; case 'E': { unsigned int msb = (given & 0x0000001f); unsigned int lsb = 0; lsb |= (given & 0x000000c0u) >> 6; lsb |= (given & 0x00007000u) >> 10; func(stream, "#%u,#%u", lsb, msb - lsb + 1); } break; case 'F': { unsigned int width = (given & 0x0000001f) + 1; unsigned int lsb = 0; lsb |= (given & 0x000000c0u) >> 6; lsb |= (given & 0x00007000u) >> 10; func(stream, "#%u,#%u", lsb, width); } break; case 'b': { unsigned int S = (given & 0x04000000u) >> 26; unsigned int J1 = (given & 0x00002000u) >> 13; unsigned int J2 = (given & 0x00000800u) >> 11; uint32_t offset = 0; offset |= !S << 20; offset |= J2 << 19; offset |= J1 << 18; offset |= (given & 0x003f0000) >> 4; offset |= (given & 0x000007ff) << 1; offset -= (1 << 20); info->print_address_func(pc + 4 + offset, info); } break; case 'B': { unsigned int S = (given & 0x04000000u) >> 26; unsigned int I1 = (given & 0x00002000u) >> 13; unsigned int I2 = (given & 0x00000800u) >> 11; uint32_t offset = 0; offset |= !S << 24; offset |= !(I1 ^ S) << 23; offset |= !(I2 ^ S) << 22; offset |= (given & 0x03ff0000u) >> 4; offset |= (given & 0x000007ffu) << 1; offset -= (1 << 24); offset += pc + 4; /* BLX target addresses are always word aligned. */ if ((given & 0x00001000u) == 0) offset &= ~2u; info->print_address_func(offset, info); } break; case 's': { unsigned int shift = 0; shift |= (given & 0x000000c0u) >> 6; shift |= (given & 0x00007000u) >> 10; if (WRITEBACK_BIT_SET) func(stream, ",asr #%u", shift); else if (shift) func(stream, ",lsl #%u", shift); /* else print nothing - lsl #0 */ } break; case 'R': { unsigned int rot = (given & 0x00000030) >> 4; if (rot) func(stream, ",ror #%u", rot * 8); } break; case 'U': if ((given & 0xf0) == 0x60) { switch (given & 0xf) { case 0xf: func(stream, "sy"); break; default: func(stream, "#%d", (int) given & 0xf); break; } } else { const char *opt = data_barrier_option(given & 0xf); if (opt != NULL) func(stream, "%s", opt); else func(stream, "#%d", (int) given & 0xf); } break; case 'C': if ((given & 0xff) == 0) { func(stream, "%cPSR_", (given & 0x100000) ? 'S' : 'C'); if (given & 0x800) func(stream, "f"); if (given & 0x400) func(stream, "s"); if (given & 0x200) func(stream, "x"); if (given & 0x100) func(stream, "c"); } else if ((given & 0x20) == 0x20) { char const *name; unsigned int sysm = (given & 0xf00) >> 8; sysm |= (given & 0x30); sysm |= (given & 0x00100000) >> 14; name = banked_regname(sysm); if (name != NULL) func(stream, "%s", name); else func(stream, "(UNDEF: %u)", sysm); } else { func(stream, "%s", psr_name(given & 0xff)); } break; case 'D': if (((given & 0xff) == 0) || ((given & 0x20) == 0x20)) { char const *name; unsigned int sm = (given & 0xf0000) >> 16; sm |= (given & 0x30); sm |= (given & 0x00100000) >> 14; name = banked_regname(sm); if (name != NULL) func(stream, "%s", name); else func(stream, "(UNDEF: %u)", sm); } else { func(stream, "%s", psr_name(given & 0xff)); } break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { int width; uint32_t val; c = arm_decode_bitfield(c, given, &val, &width); if (c == NULL) { internal_error(info); return; } switch (*c) { case 'd': func(stream, "%u", val); value_in_comment = val; break; case 'D': func(stream, "%u", val + 1); value_in_comment = val + 1; break; case 'W': func(stream, "%u", val * 4); value_in_comment = val * 4; break; case 'S': if (val == 13) is_unpredictable = TRUE; /* Fall through. */ case 'R': if (val == 15) is_unpredictable = TRUE; /* Fall through. */ case 'r': func(stream, "%s", arm_regnames[val]); break; case 'c': func(stream, "%s", arm_conditional[val]); break; case '\'': c++; if (val == (((uint32_t)1 << width) - 1)) func(stream, "%c", *c); break; case '`': c++; if (val == 0) func(stream, "%c", *c); break; case '?': func(stream, "%c", c[(1 << width) - (int) val]); c += 1 << width; break; case 'x': func(stream, "0x%lx", val & 0xffffffffUL); break; default: internal_error(info); return; } } break; case 'L': /* PR binutils/12534 If we have a PC relative offset in an LDRD or STRD instructions then display the decoded address. */ if (((given >> 16) & 0xf) == 0xf) { uint32_t offset = (given & 0xff) * 4; if ((given & (1 << 23)) == 0) offset = -offset; func(stream, "\t; "); info->print_address_func((pc & ~3) + 4 + offset, info); } break; default: internal_error(info); return; } } if (value_in_comment > 32 || value_in_comment < -16) func(stream, "\t; 0x%x", value_in_comment); if (is_unpredictable) func(stream, UNPREDICTABLE_INSTRUCTION); return; } } /* No match. */ internal_error(info); } /* Print data bytes on INFO->STREAM. */ static void print_insn_data(uint32_t pc, disassemble_info *info, int32_t given) { UNUSED(pc); switch (info->bytes_per_chunk) { case 1: info->fprintf_func(info->stream, ".byte\t0x%02x", given); break; case 2: info->fprintf_func(info->stream, ".short\t0x%04x", given); break; case 4: info->fprintf_func(info->stream, ".word\t0x%08x", given); break; default: internal_error(info); break; } } /* Disallow mapping symbols ($a, $b, $d, $t etc) from being displayed in symbol relative addresses. Also disallow private symbol, with __tagsym$$ prefix, from ARM RVCT toolchain being displayed. */ #if 0 bfd_boolean arm_symbol_is_valid(asymbol *sym, disassemble_info *info) { const char *name; UNUSED(info); if (sym == NULL) return FALSE; name = bfd_asymbol_name(sym); return name && *name != '$' && strncmp(name, "__tagsym$$", 10); } #endif /* Parse an individual disassembler option. */ static void parse_arm_disassembler_option(disassemble_info *info, const char *option) { if (option == NULL) return; if (CONST_STRNEQ(option, "reg-names-")) { int i; option += 10; for (i = NUM_ARM_REGNAMES; i--;) if (strneq(option, regnames[i].name, strlen(regnames[i].name))) { info->regname_selected = i; break; } if (i < 0) /* XXX - should break 'option' at following delimiter. */ fprintf(stderr, _("Unrecognised register name set: %s\n"), option); } else if (CONST_STRNEQ(option, "force-thumb")) { info->force_thumb = TRUE; } else if (CONST_STRNEQ(option, "no-force-thumb")) { info->force_thumb = FALSE; } else { /* XXX - should break 'option' at following delimiter. */ fprintf(stderr, _("Unrecognised disassembler option: %s\n"), option); } return; } /* Parse the string of disassembler options, spliting it at whitespaces or commas. (Whitespace separators supported for backwards compatibility). */ static void parse_disassembler_options(disassemble_info *info, const char *options) { if (options == NULL) return; while (*options) { parse_arm_disassembler_option(info, options); /* Skip forward to next seperator. */ while ((*options) && (!ISSPACE(*options)) && (*options != ',')) ++options; /* Skip forward past seperators. */ while (ISSPACE(*options) || (*options == ',')) ++options; } } static bfd_boolean mapping_symbol_for_insn(uint32_t pc, disassemble_info *info, enum map_type *map_symbol); /* Search back through the insn stream to determine if this instruction is conditionally executed. */ static void find_ifthen_state(uint32_t pc, disassemble_info *info, bfd_boolean little) { bfd_byte b[2]; unsigned int insn; int status; /* COUNT is twice the number of instructions seen. It will be odd if we just crossed an instruction boundary. */ int count; int it_count; unsigned int seen_it; uint32_t addr; info->ifthen_address = pc; info->ifthen_state = 0; addr = pc; count = 1; it_count = 0; seen_it = 0; /* Scan backwards looking for IT instructions, keeping track of where instruction boundaries are. We don't know if something is actually an IT instruction until we find a definite instruction boundary. */ for (;;) { if (addr == 0 || info->symbol_at_address_func(addr, info)) { /* A symbol must be on an instruction boundary, and will not be within an IT block. */ if (seen_it && (count & 1)) break; return; } addr -= 2; status = info->read_memory_func(addr, b, 2, info); if (status) return; if (little) insn = (b[0]) | (b[1] << 8); else insn = (b[1]) | (b[0] << 8); if (seen_it) { if ((insn & 0xf800) < 0xe800) { /* Addr + 2 is an instruction boundary. See if this matches the expected boundary based on the position of the last IT candidate. */ if (count & 1) break; seen_it = 0; } } if ((insn & 0xff00) == 0xbf00 && (insn & 0xf) != 0) { enum map_type type = MAP_ARM; bfd_boolean found = mapping_symbol_for_insn(addr, info, &type); if (!found || (found && type == MAP_THUMB)) { /* This could be an IT instruction. */ seen_it = insn; it_count = count >> 1; } } if ((insn & 0xf800) >= 0xe800) count++; else count = (count + 2) | 1; /* IT blocks contain at most 4 instructions. */ if (count >= 8 && !seen_it) return; } /* We found an IT instruction. */ info->ifthen_state = (seen_it & 0xe0) | ((seen_it << it_count) & 0x1f); if ((info->ifthen_state & 0xf) == 0) info->ifthen_state = 0; } /* Returns nonzero and sets *MAP_TYPE if the N'th symbol is a mapping symbol. */ #if 0 static int is_mapping_symbol(disassemble_info *info, int n, enum map_type *map_type) { const char *name; if (info->disasm->target == NULL || info->disasm->target->symtab_sorted == NULL) return FALSE; name = info->disasm->target->symtab_sorted[n]->n_un.n_name; if (name != NULL && name[0] == '$' && (name[1] == 'a' || name[1] == 't' || name[1] == 'd') && (name[2] == 0 || name[2] == '.')) { *map_type = name[1] == 'a' ? MAP_ARM : name[1] == 't' ? MAP_THUMB : MAP_DATA; return TRUE; } return FALSE; } #endif /* Try to infer the code type (ARM or Thumb) from a mapping symbol. Returns nonzero if *MAP_TYPE was set. */ #if 0 static int get_map_sym_type(disassemble_info *info, int n, enum map_type *map_type) { /* If the symbol is in a different section, ignore it. */ if (info->section != NULL && info->section != info->symtab[n]->section) return FALSE; return is_mapping_symbol(info, n, map_type); } #endif #if 0 /* Try to infer the code type (ARM or Thumb) from a non-mapping symbol. Returns nonzero if *MAP_TYPE was set. */ static int get_sym_code_type(disassemble_info *info, int n, enum map_type *map_type) { elf_symbol_type *es; unsigned int type; /* If the symbol is in a different section, ignore it. */ if (info->section != NULL && info->section != info->symtab[n]->section) return FALSE; es = *(elf_symbol_type **) (info->symtab + n); type = ELF_ST_TYPE(es->internal_elf_sym.st_info); /* If the symbol has function type then use that. */ if (type == STT_FUNC || type == STT_GNU_IFUNC) { if (ARM_GET_SYM_BRANCH_TYPE(es->internal_elf_sym.st_target_internal) == ST_BRANCH_TO_THUMB) *map_type = MAP_THUMB; else *map_type = MAP_ARM; return TRUE; } return FALSE; } #endif /* Search the mapping symbol state for instruction at pc. This is only applicable for elf target. There is an assumption Here, info->priv contains the correct AND up-to-date information about current scan process. The information will be used to speed this search process. Return TRUE if the mapping state can be determined, and map_symbol will be updated accordingly. Otherwise, return FALSE. */ static bfd_boolean mapping_symbol_for_insn(uint32_t pc, disassemble_info *info, enum map_type *map_symbol) { #if 0 uint32_t addr; int n, start = 0; bfd_boolean found = FALSE; enum map_type type = MAP_ARM; if (info->disasm->target == NULL || info->disasm->target->symtab_sorted == NULL || info->disasm->target->format != elf_target) return FALSE; if (pc == 0) start = 0; else start = info->priv.last_mapping_sym; start = (start == -1) ? 0 : start; addr = info->disasm->target->symtab_sorted[start]->n_value; addr -= info->disasm->loadaddr; if (pc >= addr) { if (get_map_sym_type(info, start, &type)) found = TRUE; } else { for (n = start - 1; n >= 0; n--) { if (get_map_sym_type(info, n, &type)) { found = TRUE; break; } } } /* No mapping symbols were found. A leading $d may be omitted for sections which start with data; but for compatibility with legacy and stripped binaries, only assume the leading $d if there is at least one mapping symbol in the file. */ if (!found && info->priv.has_mapping_symbols == 1) { type = MAP_DATA; found = TRUE; } *map_symbol = type; return found; #else UNUSED(pc); UNUSED(info); *map_symbol = MAP_ARM; return FALSE; #endif } /* Given a bfd_mach_arm_XXX value, this function fills in the fields of the supplied arm_feature_set structure with bitmasks indicating the support base architectures and coprocessor extensions. FIXME: This could more efficiently implemented as a constant array, although it would also be less robust. */ static void select_arm_features(uint32_t mach, arm_feature_set *features) { #undef ARM_SET_FEATURES #define ARM_SET_FEATURES(FSET) \ { \ const arm_feature_set fset = FSET; \ arm_feature_set tmp = ARM_FEATURE (0, 0, FPU_FPA) ; \ ARM_MERGE_FEATURE_SETS (*features, tmp, fset); \ } #if 0 switch (mach) { case CPU_ARMV2: ARM_SET_FEATURES(ARM_ARCH_V2); break; case CPU_ARMV2A: ARM_SET_FEATURES(ARM_ARCH_V2S); break; case CPU_ARMV3: ARM_SET_FEATURES(ARM_ARCH_V3); break; case CPU_ARMV3M: ARM_SET_FEATURES(ARM_ARCH_V3M); break; case CPU_ARMV4: ARM_SET_FEATURES(ARM_ARCH_V4); break; case CPU_ARMV4T: ARM_SET_FEATURES(ARM_ARCH_V4T); break; case CPU_ARMV5: ARM_SET_FEATURES(ARM_ARCH_V5); break; case CPU_ARMV5T: ARM_SET_FEATURES(ARM_ARCH_V5T); break; case CPU_ARMV5TE: ARM_SET_FEATURES(ARM_ARCH_V5TE); break; case CPU_ARM_XSCALE: ARM_SET_FEATURES(ARM_ARCH_XSCALE); break; case CPU_ARM_EP9312: ARM_SET_FEATURES(ARM_FEATURE_LOW(ARM_AEXT_V4T, ARM_CEXT_MAVERICK | FPU_MAVERICK)); break; case CPU_ARM_IWMMXT: ARM_SET_FEATURES(ARM_ARCH_IWMMXT); break; case CPU_ARM_IWMMXT2: ARM_SET_FEATURES(ARM_ARCH_IWMMXT2); break; /* If the machine type is unknown allow all architecture types and all extensions. */ default: ARM_SET_FEATURES(ARM_FEATURE_ALL); break; } #else UNUSED(mach); ARM_SET_FEATURES(ARM_FEATURE_ALL); #endif #undef ARM_SET_FEATURES } /* NOTE: There are no checks in these routines that the relevant number of data bytes exist. */ static int print_insn(uint32_t pc, disassemble_info *info, bfd_boolean little) { bfd_byte b[4]; int32_t given; int status; int is_thumb = FALSE; int is_data = FALSE; int little_code; unsigned int size = 4; void (*printer) (uint32_t, disassemble_info *, int32_t); #if 0 bfd_boolean found = FALSE; #endif if (info->disassembler_options) { parse_disassembler_options(info, info->disassembler_options); /* To avoid repeated parsing of these options, we remove them here. */ info->disassembler_options = NULL; } /* Control which instructions will be disassembled. */ if (info->priv.features.core[0] == 0) { /* Compute the architecture bitmask from the machine number. Note: This assumes that the machine number will not change during disassembly.... */ #if 0 select_arm_features(info->disasm->cpu, &info->priv.features); #else select_arm_features(0, &info->priv.features); #endif info->priv.has_mapping_symbols = -1; info->priv.last_mapping_sym = -1; info->priv.last_mapping_addr = 0; } /* Decide if our code is going to be little-endian, despite what the function argument might say. */ #if 0 little_code = !info->disasm->target || !info->disasm->target->be || little; #else little_code = little; #endif info->symtab_pos = -1; info->symtab_size = 0; #if 0 /* For ELF, consult the symbol table to determine what kind of code or data we have. */ if (info->disasm->target != NULL && info->disasm->target->symtab_sorted != NULL && info->disasm->target->format == elf_target) { uint32_t addr; int n, start; int last_sym = -1; enum map_type type = MAP_ARM; info->symtab_size = info->disasm->target->symcount; /* Start scanning at the start of the function, or wherever we finished last time. */ /* PR 14006. When the address is 0 we are either at the start of the very first function, or else the first function in a new, unlinked executable section (eg because of -ffunction-sections). Either way start scanning from the beginning of the symbol table, not where we left off last time. */ if (pc == 0) { start = 0; } else { start = info->symtab_pos + 1; if (start < info->priv.last_mapping_sym) start = info->priv.last_mapping_sym; } found = FALSE; /* First, look for mapping symbols. */ if (info->priv.has_mapping_symbols != 0) { /* Scan up to the location being disassembled. */ for (n = start; n < info->symtab_size; n++) { addr = info->disasm->target->symtab_sorted[n]->n_value; addr -= info->disasm->loadaddr; if (addr > pc) break; if (get_map_sym_type(info, n, &type)) { last_sym = n; found = TRUE; } } if (!found) { /* No mapping symbol found at this address. Look backwards for a preceding one. */ for (n = start - 1; n >= 0; n--) { if (get_map_sym_type(info, n, &type)) { last_sym = n; found = TRUE; break; } } } if (found) info->priv.has_mapping_symbols = 1; /* No mapping symbols were found. A leading $d may be omitted for sections which start with data; but for compatibility with legacy and stripped binaries, only assume the leading $d if there is at least one mapping symbol in the file. */ if (!found && info->priv.has_mapping_symbols == -1) { /* Look for mapping symbols, in any section. */ for (n = 0; n < info->symtab_size; n++) { if (is_mapping_symbol(info, n, &type)) { info->priv.has_mapping_symbols = 1; break; } } if (info->priv.has_mapping_symbols == -1) info->priv.has_mapping_symbols = 0; } if (!found && info->priv.has_mapping_symbols == 1) { type = MAP_DATA; found = TRUE; } } /* Next search for function symbols to separate ARM from Thumb in binaries without mapping symbols. */ if (!found) { /* Scan up to the location being disassembled. */ for (n = start; n < info->symtab_size; n++) { addr = info->disasm->target->symtab_sorted[n]->n_value; addr -= info->disasm->loadaddr; if (addr > pc) break; if (get_sym_code_type(info, n, &type)) { last_sym = n; found = TRUE; } } if (!found) { /* No mapping symbol found at this address. Look backwards for a preceding one. */ for (n = start - 1; n >= 0; n--) { if (get_sym_code_type(info, n, &type)) { last_sym = n; found = TRUE; break; } } } } info->priv.last_mapping_sym = last_sym; info->priv.last_type = type; is_thumb = info->priv.last_type == MAP_THUMB; is_data = info->priv.last_type == MAP_DATA; /* Look a little bit ahead to see if we should print out two or four bytes of data. If there's a symbol, mapping or otherwise, after two bytes then don't print more. */ if (is_data) { size = 4 - (pc & 3); for (n = last_sym + 1; n < info->symtab_size; n++) { addr = info->disasm->target->symtab_sorted[n]->n_value; addr -= info->disasm->loadaddr; if (addr > pc /* && (info->section == NULL || info->section == info->symtab[n]->section) */) { if (addr - pc < size) size = addr - pc; break; } } /* If the next symbol is after three bytes, we need to print only part of the data, so that we can use either .byte or .short. */ if (size == 3) size = (pc & 1) ? 1 : 2; } } #endif #if 0 if (info->disasm->target != NULL && info->disasm->target->symtab_sorted != NULL) { if (info->disasm->target->format == coff_target) { coff_symbol_type *cs; cs = coffsymbol(*info->symbols); is_thumb = (cs->native->u.syment.n_sclass == C_THUMBEXT || cs->native->u.syment.n_sclass == C_THUMBSTAT || cs->native->u.syment.n_sclass == C_THUMBLABEL || cs->native->u.syment.n_sclass == C_THUMBEXTFUNC || cs->native->u.syment.n_sclass == C_THUMBSTATFUNC); } else if (info->disasm->target->format == elf_target && !found) { /* If no mapping symbol has been found then fall back to the type of the function symbol. */ elf_symbol_type *es; unsigned int type; es = *(elf_symbol_type **) (info->symbols); type = ELF_ST_TYPE(es->internal_elf_sym.st_info); is_thumb = ((ARM_GET_SYM_BRANCH_TYPE(es->internal_elf_sym.st_target_internal) == ST_BRANCH_TO_THUMB) || type == STT_ARM_16BIT); } else if (info->disasm->target->format == mach_o_target) { bfd_mach_o_asymbol *asym = (bfd_mach_o_asymbol *) * info->symbols; is_thumb = (asym->n_desc & BFD_MACH_O_N_ARM_THUMB_DEF); } } #endif if (info->force_thumb) is_thumb = TRUE; if (is_data) info->display_endian = little ? BFD_ENDIAN_LITTLE : BFD_ENDIAN_BIG; else info->display_endian = little_code ? BFD_ENDIAN_LITTLE : BFD_ENDIAN_BIG; info->bytes_per_line = 4; /* PR 10263: Disassemble data if requested to do so by the user. */ if (is_data && ((info->flags & DISASSEMBLE_DATA) == 0)) { int i; /* Size was already set above. */ info->bytes_per_chunk = size; printer = print_insn_data; status = info->read_memory_func(pc, b, size, info); given = 0; if (little) { for (i = size - 1; i >= 0; i--) given = b[i] | (given << 8); } else { for (i = 0; i < (int) size; i++) given = b[i] | (given << 8); } } else if (!is_thumb) { /* In ARM mode endianness is a straightforward issue: the instruction is four bytes long and is either ordered 0123 or 3210. */ printer = print_insn_arm; info->bytes_per_chunk = 4; size = 4; status = info->read_memory_func(pc, b, 4, info); if (little_code) given = (b[0]) | (b[1] << 8) | (b[2] << 16) | (b[3] << 24); else given = (b[3]) | (b[2] << 8) | (b[1] << 16) | (b[0] << 24); } else { /* In Thumb mode we have the additional wrinkle of two instruction lengths. Fortunately, the bits that determine the length of the current instruction are always to be found in the first two bytes. */ printer = print_insn_thumb16; info->bytes_per_chunk = 2; size = 2; status = info->read_memory_func(pc, b, 2, info); if (little_code) given = (b[0]) | (b[1] << 8); else given = (b[1]) | (b[0] << 8); if (!status) { /* These bit patterns signal a four-byte Thumb instruction. */ if ((given & 0xF800) == 0xF800 || (given & 0xF800) == 0xF000 || (given & 0xF800) == 0xE800) { status = info->read_memory_func(pc + 2, b, 2, info); if (little_code) given = (b[0]) | (b[1] << 8) | (given << 16); else given = (b[1]) | (b[0] << 8) | (given << 16); printer = print_insn_thumb32; size = 4; } } if (info->ifthen_address != pc) find_ifthen_state(pc, info, little_code); if (info->ifthen_state) { if ((info->ifthen_state & 0xf) == 0x8) info->ifthen_next_state = 0; else info->ifthen_next_state = (info->ifthen_state & 0xe0) | ((info->ifthen_state & 0xf) << 1); } } if (status) { info->memory_error_func(status, pc, info); return -1; } if (info->flags & INSN_HAS_RELOC) /* If the instruction has a reloc associated with it, then the offset field in the instruction will actually be the addend for the reloc. (We are using REL type relocs). In such cases, we can ignore the pc when computing addresses, since the addend is not currently pc-relative. */ pc = 0; printer(pc, info, given); if (is_thumb) { info->ifthen_state = info->ifthen_next_state; info->ifthen_address += size; } return size; } /* Get LENGTH bytes from info's buffer, at target address memaddr. Transfer them to myaddr. */ static int buffer_read_memory(bfd_vma memaddr, bfd_byte *myaddr, size_t length, disassemble_info *info) { size_t opb = 1; size_t end_addr_offset = length / opb; size_t max_addr_offset = info->buffer_length / opb; size_t octets = (memaddr - info->buffer_vma) * opb; if (memaddr < info->buffer_vma || memaddr - info->buffer_vma > max_addr_offset || memaddr - info->buffer_vma + end_addr_offset > max_addr_offset || (info->stop_vma && (memaddr >= info->stop_vma || memaddr + end_addr_offset > info->stop_vma))) /* Out of bounds. Use EIO because GDB uses it. */ return EIO; memcpy(myaddr, info->buffer + octets, length); return 0; } /* Print an error message. We can assume that this is in response to an error return from buffer_read_memory. */ static void perror_memory(int status, bfd_vma memaddr, disassemble_info *info) { if (status != EIO) { /* Can't happen. */ info->fprintf_func(info->stream, _("Unknown error %d\n"), status); } else { char buf[30]; /* Actually, address between memaddr and memaddr + len was out of bounds. */ sprintf(buf, "%016" PRIx64, (uint64_t)memaddr); info->fprintf_func(info->stream, _("Address 0x%s is out of bounds.\n"), buf); } } void arm_disassemble_set_target(disassemble_info *info, bfd_byte *buffer, size_t buffer_length, bfd_vma vma) { info->buffer = buffer; info->buffer_length = buffer_length; info->buffer_vma = vma; } static void generic_print_address(bfd_vma addr, disassemble_info *info) { (*info->fprintf_func)(info->stream, "0x%08" PRIx32, (uint32_t)addr); } static int generic_symbol_at_address(bfd_vma vma, disassemble_info *info) { UNUSED(vma); UNUSED(info); return FALSE; } int arm_print_insn(bfd_vma ainst, disassemble_info *info) { info->buffer = (bfd_byte *)ainst; info->buffer_length = 16; info->buffer_vma = (uintptr_t)ainst; return print_insn((uint32_t)(uintptr_t)ainst, info, TRUE); } void arm_disassemble_init(disassemble_info **pinfo, void *stream, fprintf_ftype fprintf_func) { disassemble_info *info = *pinfo; if (info == NULL) { info = (disassemble_info *)malloc(sizeof(*info)); *pinfo = info; } memset(info, 0, sizeof(*info)); info->fprintf_func = fprintf_func; info->stream = stream; info->read_memory_func = buffer_read_memory; info->memory_error_func = perror_memory; info->print_address_func = generic_print_address; info->symbol_at_address_func = generic_symbol_at_address; /* Default to GCC register name set. */ info->regname_selected = 1; info->force_thumb = FALSE; } #else extern int i_dont_care_that_ISOC_doesnt_like_empty_sourcefiles; #endif /* DISASM_USE_BUILTIN */ aranym-1.1.0/src/disasm/arm.h0000664000175000017500000004616013454637621014207 0ustar joyjoy/* ARM assembler/disassembler support. Copyright (C) 2004-2017 Free Software Foundation, Inc. This file is part of GDB and GAS. GDB and GAS are free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GDB and GAS are distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GDB or GAS; see the file COPYING3. If not, write to the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* The following bitmasks control CPU extensions: */ #define ARM_EXT_V1 0x00000001 /* All processors (core set). */ #define ARM_EXT_V2 0x00000002 /* Multiply instructions. */ #define ARM_EXT_V2S 0x00000004 /* SWP instructions. */ #define ARM_EXT_V3 0x00000008 /* MSR MRS. */ #define ARM_EXT_V3M 0x00000010 /* Allow long multiplies. */ #define ARM_EXT_V4 0x00000020 /* Allow half word loads. */ #define ARM_EXT_V4T 0x00000040 /* Thumb. */ #define ARM_EXT_V5 0x00000080 /* Allow CLZ, etc. */ #define ARM_EXT_V5T 0x00000100 /* Improved interworking. */ #define ARM_EXT_V5ExP 0x00000200 /* DSP core set. */ #define ARM_EXT_V5E 0x00000400 /* DSP Double transfers. */ #define ARM_EXT_V5J 0x00000800 /* Jazelle extension. */ #define ARM_EXT_V6 0x00001000 /* ARM V6. */ #define ARM_EXT_V6K 0x00002000 /* ARM V6K. */ #define ARM_EXT_V8 0x00004000 /* ARMv8 w/o atomics. */ #define ARM_EXT_V6T2 0x00008000 /* Thumb-2. */ #define ARM_EXT_DIV 0x00010000 /* Integer division. */ /* The 'M' in Arm V7M stands for Microcontroller. On earlier architecture variants it stands for Multiply. */ #define ARM_EXT_V5E_NOTM 0x00020000 /* Arm V5E but not Arm V7M. */ #define ARM_EXT_V6_NOTM 0x00040000 /* Arm V6 but not Arm V7M. */ #define ARM_EXT_V7 0x00080000 /* Arm V7. */ #define ARM_EXT_V7A 0x00100000 /* Arm V7A. */ #define ARM_EXT_V7R 0x00200000 /* Arm V7R. */ #define ARM_EXT_V7M 0x00400000 /* Arm V7M. */ #define ARM_EXT_V6M 0x00800000 /* ARM V6M. */ #define ARM_EXT_BARRIER 0x01000000 /* DSB/DMB/ISB. */ #define ARM_EXT_THUMB_MSR 0x02000000 /* Thumb MSR/MRS. */ #define ARM_EXT_V6_DSP 0x04000000 /* ARM v6 (DSP-related), not in v7-M. */ #define ARM_EXT_MP 0x08000000 /* Multiprocessing Extensions. */ #define ARM_EXT_SEC 0x10000000 /* Security extensions. */ #define ARM_EXT_OS 0x20000000 /* OS Extensions. */ #define ARM_EXT_ADIV 0x40000000 /* Integer divide extensions in ARM state. */ #define ARM_EXT_VIRT 0x80000000 /* Virtualization extensions. */ #define ARM_EXT2_PAN 0x00000001 /* PAN extension. */ #define ARM_EXT2_V8_2A 0x00000002 /* ARM V8.2A. */ #define ARM_EXT2_V8M 0x00000004 /* ARM V8M. */ #define ARM_EXT2_ATOMICS 0x00000008 /* ARMv8 atomics. */ #define ARM_EXT2_V6T2_V8M 0x00000010 /* V8M Baseline from V6T2. */ #define ARM_EXT2_FP16_INST 0x00000020 /* ARM V8.2A FP16 instructions. */ #define ARM_EXT2_V8M_MAIN 0x00000040 /* ARMv8-M Mainline. */ #define ARM_EXT2_RAS 0x00000080 /* RAS extension. */ #define ARM_EXT2_V8_3A 0x00000100 /* ARM V8.3A. */ /* Co-processor space extensions. */ #define ARM_CEXT_XSCALE 0x00000001 /* Allow MIA etc. */ #define ARM_CEXT_MAVERICK 0x00000002 /* Use Cirrus/DSP coprocessor. */ #define ARM_CEXT_IWMMXT 0x00000004 /* Intel Wireless MMX technology coprocessor. */ #define ARM_CEXT_IWMMXT2 0x00000008 /* Intel Wireless MMX technology coprocessor version 2. */ #define FPU_ENDIAN_PURE 0x80000000 /* Pure-endian doubles. */ #define FPU_ENDIAN_BIG 0 /* Double words-big-endian. */ #define FPU_FPA_EXT_V1 0x40000000 /* Base FPA instruction set. */ #define FPU_FPA_EXT_V2 0x20000000 /* LFM/SFM. */ #define FPU_MAVERICK 0x10000000 /* Cirrus Maverick. */ #define FPU_VFP_EXT_V1xD 0x08000000 /* Base VFP instruction set. */ #define FPU_VFP_EXT_V1 0x04000000 /* Double-precision insns. */ #define FPU_VFP_EXT_V2 0x02000000 /* ARM10E VFPr1. */ #define FPU_VFP_EXT_V3xD 0x01000000 /* VFPv3 single-precision. */ #define FPU_VFP_EXT_V3 0x00800000 /* VFPv3 double-precision. */ #define FPU_NEON_EXT_V1 0x00400000 /* Neon (SIMD) insns. */ #define FPU_VFP_EXT_D32 0x00200000 /* Registers D16-D31. */ #define FPU_VFP_EXT_FP16 0x00100000 /* Half-precision extensions. */ #define FPU_NEON_EXT_FMA 0x00080000 /* Neon fused multiply-add */ #define FPU_VFP_EXT_FMA 0x00040000 /* VFP fused multiply-add */ #define FPU_VFP_EXT_ARMV8 0x00020000 /* Double-precision FP for ARMv8. */ #define FPU_NEON_EXT_ARMV8 0x00010000 /* Neon for ARMv8. */ #define FPU_CRYPTO_EXT_ARMV8 0x00008000 /* Crypto for ARMv8. */ #define CRC_EXT_ARMV8 0x00004000 /* CRC32 for ARMv8. */ #define FPU_VFP_EXT_ARMV8xD 0x00002000 /* Single-precision FP for ARMv8. */ #define FPU_NEON_EXT_RDMA 0x00001000 /* v8.1 Adv.SIMD extensions. */ /* Architectures are the sum of the base and extensions. The ARM ARM (rev E) defines the following: ARMv3, ARMv3M, ARMv4xM, ARMv4, ARMv4TxM, ARMv4T, ARMv5xM, ARMv5, ARMv5TxM, ARMv5T, ARMv5TExP, ARMv5TE. To these we add three more to cover cores prior to ARM6. Finally, there are cores which implement further extensions in the co-processor space. */ #define ARM_AEXT_V1 ARM_EXT_V1 #define ARM_AEXT_V2 (ARM_AEXT_V1 | ARM_EXT_V2) #define ARM_AEXT_V2S (ARM_AEXT_V2 | ARM_EXT_V2S) #define ARM_AEXT_V3 (ARM_AEXT_V2S | ARM_EXT_V3) #define ARM_AEXT_V3M (ARM_AEXT_V3 | ARM_EXT_V3M) #define ARM_AEXT_V4xM (ARM_AEXT_V3 | ARM_EXT_V4) #define ARM_AEXT_V4 (ARM_AEXT_V3M | ARM_EXT_V4) #define ARM_AEXT_V4TxM (ARM_AEXT_V4xM | ARM_EXT_V4T) #define ARM_AEXT_V4T (ARM_AEXT_V4 | ARM_EXT_V4T) #define ARM_AEXT_V5xM (ARM_AEXT_V4xM | ARM_EXT_V5) #define ARM_AEXT_V5 (ARM_AEXT_V4 | ARM_EXT_V5) #define ARM_AEXT_V5TxM (ARM_AEXT_V5xM | ARM_EXT_V4T | ARM_EXT_V5T) #define ARM_AEXT_V5T (ARM_AEXT_V5 | ARM_EXT_V4T | ARM_EXT_V5T) #define ARM_AEXT_V5TExP (ARM_AEXT_V5T | ARM_EXT_V5ExP) #define ARM_AEXT_V5TE (ARM_AEXT_V5TExP | ARM_EXT_V5E) #define ARM_AEXT_V5TEJ (ARM_AEXT_V5TE | ARM_EXT_V5J) #define ARM_AEXT_V6 (ARM_AEXT_V5TEJ | ARM_EXT_V6) #define ARM_AEXT_V6K (ARM_AEXT_V6 | ARM_EXT_V6K) #define ARM_AEXT_V6Z (ARM_AEXT_V6K | ARM_EXT_SEC) #define ARM_AEXT_V6KZ (ARM_AEXT_V6K | ARM_EXT_SEC) #define ARM_AEXT_V6T2 (ARM_AEXT_V6 \ | ARM_EXT_V6T2 | ARM_EXT_V6_NOTM | ARM_EXT_THUMB_MSR \ | ARM_EXT_V6_DSP ) #define ARM_AEXT_V6KT2 (ARM_AEXT_V6T2 | ARM_EXT_V6K) #define ARM_AEXT_V6ZT2 (ARM_AEXT_V6T2 | ARM_EXT_SEC) #define ARM_AEXT_V6KZT2 (ARM_AEXT_V6T2 | ARM_EXT_V6K | ARM_EXT_SEC) #define ARM_AEXT_V7_ARM (ARM_AEXT_V6KT2 | ARM_EXT_V7 | ARM_EXT_BARRIER) #define ARM_AEXT_V7A (ARM_AEXT_V7_ARM | ARM_EXT_V7A) #define ARM_AEXT_V7VE (ARM_AEXT_V7A | ARM_EXT_DIV | ARM_EXT_ADIV \ | ARM_EXT_VIRT | ARM_EXT_SEC | ARM_EXT_MP) #define ARM_AEXT_V7R (ARM_AEXT_V7_ARM | ARM_EXT_V7R | ARM_EXT_DIV) #define ARM_AEXT_NOTM \ (ARM_AEXT_V4 | ARM_EXT_V5ExP | ARM_EXT_V5J | ARM_EXT_V6_NOTM \ | ARM_EXT_V6_DSP ) #define ARM_AEXT_V6M_ONLY \ ((ARM_EXT_BARRIER | ARM_EXT_V6M | ARM_EXT_THUMB_MSR) & ~(ARM_AEXT_NOTM)) #define ARM_AEXT_V6M \ ((ARM_AEXT_V6K | ARM_AEXT_V6M_ONLY) & ~(ARM_AEXT_NOTM)) #define ARM_AEXT_V6SM (ARM_AEXT_V6M | ARM_EXT_OS) #define ARM_AEXT_V7M \ ((ARM_AEXT_V7_ARM | ARM_EXT_V6M | ARM_EXT_V7M | ARM_EXT_DIV) \ & ~(ARM_AEXT_NOTM)) #define ARM_AEXT_V7 (ARM_AEXT_V7A & ARM_AEXT_V7R & ARM_AEXT_V7M) #define ARM_AEXT_V7EM \ (ARM_AEXT_V7M | ARM_EXT_V5ExP | ARM_EXT_V6_DSP) #define ARM_AEXT_V8A \ (ARM_AEXT_V7A | ARM_EXT_MP | ARM_EXT_SEC | ARM_EXT_DIV | ARM_EXT_ADIV \ | ARM_EXT_VIRT | ARM_EXT_V8) #define ARM_AEXT2_V8A (ARM_EXT2_V6T2_V8M | ARM_EXT2_ATOMICS) #define ARM_AEXT2_V8_1A (ARM_AEXT2_V8A | ARM_EXT2_PAN) #define ARM_AEXT2_V8_2A (ARM_AEXT2_V8_1A | ARM_EXT2_V8_2A | ARM_EXT2_RAS) #define ARM_AEXT2_V8_3A (ARM_AEXT2_V8_2A | ARM_EXT2_V8_3A) #define ARM_AEXT_V8M_BASE (ARM_AEXT_V6SM | ARM_EXT_DIV) #define ARM_AEXT_V8M_MAIN ARM_AEXT_V7M #define ARM_AEXT_V8M_MAIN_DSP ARM_AEXT_V7EM #define ARM_AEXT2_V8M (ARM_EXT2_V8M | ARM_EXT2_ATOMICS | ARM_EXT2_V6T2_V8M) #define ARM_AEXT2_V8M_MAIN (ARM_AEXT2_V8M | ARM_EXT2_V8M_MAIN) #define ARM_AEXT2_V8M_MAIN_DSP ARM_AEXT2_V8M_MAIN /* Processors with specific extensions in the co-processor space. */ #define ARM_ARCH_XSCALE ARM_FEATURE_LOW (ARM_AEXT_V5TE, ARM_CEXT_XSCALE) #define ARM_ARCH_IWMMXT ARM_FEATURE_LOW (ARM_AEXT_V5TE, ARM_CEXT_XSCALE | ARM_CEXT_IWMMXT) #define ARM_ARCH_IWMMXT2 ARM_FEATURE_LOW (ARM_AEXT_V5TE, ARM_CEXT_XSCALE | ARM_CEXT_IWMMXT | ARM_CEXT_IWMMXT2) #define FPU_VFP_V1xD (FPU_VFP_EXT_V1xD | FPU_ENDIAN_PURE) #define FPU_VFP_V1 (FPU_VFP_V1xD | FPU_VFP_EXT_V1) #define FPU_VFP_V2 (FPU_VFP_V1 | FPU_VFP_EXT_V2) #define FPU_VFP_V3D16 (FPU_VFP_V2 | FPU_VFP_EXT_V3xD | FPU_VFP_EXT_V3) #define FPU_VFP_V3 (FPU_VFP_V3D16 | FPU_VFP_EXT_D32) #define FPU_VFP_V3xD (FPU_VFP_V1xD | FPU_VFP_EXT_V2 | FPU_VFP_EXT_V3xD) #define FPU_VFP_V4D16 (FPU_VFP_V3D16 | FPU_VFP_EXT_FP16 | FPU_VFP_EXT_FMA) #define FPU_VFP_V4 (FPU_VFP_V3 | FPU_VFP_EXT_FP16 | FPU_VFP_EXT_FMA) #define FPU_VFP_V4_SP_D16 (FPU_VFP_V3xD | FPU_VFP_EXT_FP16 | FPU_VFP_EXT_FMA) #define FPU_VFP_V5D16 (FPU_VFP_V4D16 | FPU_VFP_EXT_ARMV8xD | FPU_VFP_EXT_ARMV8) #define FPU_VFP_V5_SP_D16 (FPU_VFP_V4_SP_D16 | FPU_VFP_EXT_ARMV8xD) #define FPU_VFP_ARMV8 (FPU_VFP_V4 | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD) #define FPU_NEON_ARMV8 (FPU_NEON_EXT_V1 | FPU_NEON_EXT_FMA | FPU_NEON_EXT_ARMV8) #define FPU_CRYPTO_ARMV8 (FPU_CRYPTO_EXT_ARMV8) #define FPU_VFP_HARD (FPU_VFP_EXT_V1xD | FPU_VFP_EXT_V1 | FPU_VFP_EXT_V2 \ | FPU_VFP_EXT_V3xD | FPU_VFP_EXT_FMA | FPU_NEON_EXT_FMA \ | FPU_VFP_EXT_V3 | FPU_NEON_EXT_V1 | FPU_VFP_EXT_D32) #define FPU_FPA (FPU_FPA_EXT_V1 | FPU_FPA_EXT_V2) /* Deprecated. */ #define FPU_ARCH_VFP ARM_FEATURE_COPROC (FPU_ENDIAN_PURE) #define FPU_ARCH_FPE ARM_FEATURE_COPROC (FPU_FPA_EXT_V1) #define FPU_ARCH_FPA ARM_FEATURE_COPROC (FPU_FPA) #define FPU_ARCH_VFP_V1xD ARM_FEATURE_COPROC (FPU_VFP_V1xD) #define FPU_ARCH_VFP_V1 ARM_FEATURE_COPROC (FPU_VFP_V1) #define FPU_ARCH_VFP_V2 ARM_FEATURE_COPROC (FPU_VFP_V2) #define FPU_ARCH_VFP_V3D16 ARM_FEATURE_COPROC (FPU_VFP_V3D16) #define FPU_ARCH_VFP_V3D16_FP16 \ ARM_FEATURE_COPROC (FPU_VFP_V3D16 | FPU_VFP_EXT_FP16) #define FPU_ARCH_VFP_V3 ARM_FEATURE_COPROC (FPU_VFP_V3) #define FPU_ARCH_VFP_V3_FP16 ARM_FEATURE_COPROC (FPU_VFP_V3 | FPU_VFP_EXT_FP16) #define FPU_ARCH_VFP_V3xD ARM_FEATURE_COPROC (FPU_VFP_V3xD) #define FPU_ARCH_VFP_V3xD_FP16 ARM_FEATURE_COPROC (FPU_VFP_V3xD \ | FPU_VFP_EXT_FP16) #define FPU_ARCH_NEON_V1 ARM_FEATURE_COPROC (FPU_NEON_EXT_V1) #define FPU_ARCH_VFP_V3_PLUS_NEON_V1 \ ARM_FEATURE_COPROC (FPU_VFP_V3 | FPU_NEON_EXT_V1) #define FPU_ARCH_NEON_FP16 \ ARM_FEATURE_COPROC (FPU_VFP_V3 | FPU_NEON_EXT_V1 | FPU_VFP_EXT_FP16) #define FPU_ARCH_VFP_HARD ARM_FEATURE_COPROC (FPU_VFP_HARD) #define FPU_ARCH_VFP_V4 ARM_FEATURE_COPROC (FPU_VFP_V4) #define FPU_ARCH_VFP_V4D16 ARM_FEATURE_COPROC (FPU_VFP_V4D16) #define FPU_ARCH_VFP_V4_SP_D16 ARM_FEATURE_COPROC (FPU_VFP_V4_SP_D16) #define FPU_ARCH_VFP_V5D16 ARM_FEATURE_COPROC (FPU_VFP_V5D16) #define FPU_ARCH_VFP_V5_SP_D16 ARM_FEATURE_COPROC (FPU_VFP_V5_SP_D16) #define FPU_ARCH_NEON_VFP_V4 \ ARM_FEATURE_COPROC (FPU_VFP_V4 | FPU_NEON_EXT_V1 | FPU_NEON_EXT_FMA) #define FPU_ARCH_VFP_ARMV8 ARM_FEATURE_COPROC (FPU_VFP_ARMV8) #define FPU_ARCH_NEON_VFP_ARMV8 ARM_FEATURE_COPROC (FPU_NEON_ARMV8 \ | FPU_VFP_ARMV8) #define FPU_ARCH_CRYPTO_NEON_VFP_ARMV8 \ ARM_FEATURE_COPROC (FPU_CRYPTO_ARMV8 | FPU_NEON_ARMV8 | FPU_VFP_ARMV8) #define ARCH_CRC_ARMV8 ARM_FEATURE_COPROC (CRC_EXT_ARMV8) #define FPU_ARCH_NEON_VFP_ARMV8_1 \ ARM_FEATURE_COPROC (FPU_NEON_ARMV8 \ | FPU_VFP_ARMV8 \ | FPU_NEON_EXT_RDMA) #define FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_1 \ ARM_FEATURE_COPROC (FPU_CRYPTO_ARMV8 | FPU_NEON_ARMV8 | FPU_VFP_ARMV8 \ | FPU_NEON_EXT_RDMA) #define FPU_ARCH_ENDIAN_PURE ARM_FEATURE_COPROC (FPU_ENDIAN_PURE) #define FPU_ARCH_MAVERICK ARM_FEATURE_COPROC (FPU_MAVERICK) #define ARM_ARCH_V1 ARM_FEATURE_CORE_LOW (ARM_AEXT_V1) #define ARM_ARCH_V2 ARM_FEATURE_CORE_LOW (ARM_AEXT_V2) #define ARM_ARCH_V2S ARM_FEATURE_CORE_LOW (ARM_AEXT_V2S) #define ARM_ARCH_V3 ARM_FEATURE_CORE_LOW (ARM_AEXT_V3) #define ARM_ARCH_V3M ARM_FEATURE_CORE_LOW (ARM_AEXT_V3M) #define ARM_ARCH_V4xM ARM_FEATURE_CORE_LOW (ARM_AEXT_V4xM) #define ARM_ARCH_V4 ARM_FEATURE_CORE_LOW (ARM_AEXT_V4) #define ARM_ARCH_V4TxM ARM_FEATURE_CORE_LOW (ARM_AEXT_V4TxM) #define ARM_ARCH_V4T ARM_FEATURE_CORE_LOW (ARM_AEXT_V4T) #define ARM_ARCH_V5xM ARM_FEATURE_CORE_LOW (ARM_AEXT_V5xM) #define ARM_ARCH_V5 ARM_FEATURE_CORE_LOW (ARM_AEXT_V5) #define ARM_ARCH_V5TxM ARM_FEATURE_CORE_LOW (ARM_AEXT_V5TxM) #define ARM_ARCH_V5T ARM_FEATURE_CORE_LOW (ARM_AEXT_V5T) #define ARM_ARCH_V5TExP ARM_FEATURE_CORE_LOW (ARM_AEXT_V5TExP) #define ARM_ARCH_V5TE ARM_FEATURE_CORE_LOW (ARM_AEXT_V5TE) #define ARM_ARCH_V5TEJ ARM_FEATURE_CORE_LOW (ARM_AEXT_V5TEJ) #define ARM_ARCH_V6 ARM_FEATURE_CORE_LOW (ARM_AEXT_V6) #define ARM_ARCH_V6K ARM_FEATURE_CORE_LOW (ARM_AEXT_V6K) #define ARM_ARCH_V6Z ARM_FEATURE_CORE_LOW (ARM_AEXT_V6Z) #define ARM_ARCH_V6KZ ARM_FEATURE_CORE_LOW (ARM_AEXT_V6KZ) #define ARM_ARCH_V6T2 ARM_FEATURE_CORE (ARM_AEXT_V6T2, ARM_EXT2_V6T2_V8M) #define ARM_ARCH_V6KT2 ARM_FEATURE_CORE (ARM_AEXT_V6KT2, ARM_EXT2_V6T2_V8M) #define ARM_ARCH_V6ZT2 ARM_FEATURE_CORE (ARM_AEXT_V6ZT2, ARM_EXT2_V6T2_V8M) #define ARM_ARCH_V6KZT2 ARM_FEATURE_CORE (ARM_AEXT_V6KZT2, ARM_EXT2_V6T2_V8M) #define ARM_ARCH_V6M ARM_FEATURE_CORE_LOW (ARM_AEXT_V6M) #define ARM_ARCH_V6SM ARM_FEATURE_CORE_LOW (ARM_AEXT_V6SM) #define ARM_ARCH_V7 ARM_FEATURE_CORE (ARM_AEXT_V7, ARM_EXT2_V6T2_V8M) #define ARM_ARCH_V7A ARM_FEATURE_CORE (ARM_AEXT_V7A, ARM_EXT2_V6T2_V8M) #define ARM_ARCH_V7VE ARM_FEATURE_CORE (ARM_AEXT_V7VE, ARM_EXT2_V6T2_V8M) #define ARM_ARCH_V7R ARM_FEATURE_CORE (ARM_AEXT_V7R, ARM_EXT2_V6T2_V8M) #define ARM_ARCH_V7M ARM_FEATURE_CORE (ARM_AEXT_V7M, ARM_EXT2_V6T2_V8M) #define ARM_ARCH_V7EM ARM_FEATURE_CORE (ARM_AEXT_V7EM, ARM_EXT2_V6T2_V8M) #define ARM_ARCH_V8A ARM_FEATURE_CORE (ARM_AEXT_V8A, ARM_AEXT2_V8A) #define ARM_ARCH_V8A_CRC ARM_FEATURE (ARM_AEXT_V8A, ARM_AEXT2_V8A, \ CRC_EXT_ARMV8) #define ARM_ARCH_V8_1A ARM_FEATURE (ARM_AEXT_V8A, ARM_AEXT2_V8_1A, \ CRC_EXT_ARMV8 | FPU_NEON_EXT_RDMA) #define ARM_ARCH_V8_2A ARM_FEATURE (ARM_AEXT_V8A, ARM_AEXT2_V8_2A, \ CRC_EXT_ARMV8 | FPU_NEON_EXT_RDMA) #define ARM_ARCH_V8_3A ARM_FEATURE (ARM_AEXT_V8A, ARM_AEXT2_V8_3A, \ CRC_EXT_ARMV8 | FPU_NEON_EXT_RDMA) #define ARM_ARCH_V8M_BASE ARM_FEATURE_CORE (ARM_AEXT_V8M_BASE, ARM_AEXT2_V8M) #define ARM_ARCH_V8M_MAIN ARM_FEATURE_CORE (ARM_AEXT_V8M_MAIN, \ ARM_AEXT2_V8M_MAIN) #define ARM_ARCH_V8M_MAIN_DSP ARM_FEATURE_CORE (ARM_AEXT_V8M_MAIN_DSP, \ ARM_AEXT2_V8M_MAIN_DSP) /* Some useful combinations: */ #define ARM_ARCH_NONE ARM_FEATURE_LOW (0, 0) #define FPU_NONE ARM_FEATURE_LOW (0, 0) #define ARM_ANY ARM_FEATURE (-1, -1, 0) /* Any basic core. */ #define ARM_FEATURE_ALL ARM_FEATURE (-1, -1, -1)/* All CPU and FPU features. */ #define FPU_ANY_HARD ARM_FEATURE_COPROC (FPU_FPA | FPU_VFP_HARD | FPU_MAVERICK) /* Extensions containing some Thumb-2 instructions. If any is present, Thumb ISA is Thumb-2. */ #define ARM_ARCH_THUMB2 ARM_FEATURE_CORE (ARM_EXT_V6T2 | ARM_EXT_V7 \ | ARM_EXT_DIV | ARM_EXT_V8, \ ARM_EXT2_ATOMICS | ARM_EXT2_V6T2_V8M) /* v7-a+sec. */ #define ARM_ARCH_V7A_SEC \ ARM_FEATURE_CORE (ARM_AEXT_V7A | ARM_EXT_SEC, ARM_EXT2_V6T2_V8M) /* v7-a+mp+sec. */ #define ARM_ARCH_V7A_MP_SEC \ ARM_FEATURE_CORE (ARM_AEXT_V7A | ARM_EXT_MP | ARM_EXT_SEC, ARM_EXT2_V6T2_V8M) /* v7-r+idiv. */ #define ARM_ARCH_V7R_IDIV \ ARM_FEATURE_CORE (ARM_AEXT_V7R | ARM_EXT_ADIV, ARM_EXT2_V6T2_V8M) /* Features that are present in v6M and v6S-M but not other v6 cores. */ #define ARM_ARCH_V6M_ONLY ARM_FEATURE_CORE_LOW (ARM_AEXT_V6M_ONLY) /* v8-a+fp. */ #define ARM_ARCH_V8A_FP \ ARM_FEATURE (ARM_AEXT_V8A, ARM_AEXT2_V8A, FPU_ARCH_VFP_ARMV8) /* v8-a+simd (implies fp). */ #define ARM_ARCH_V8A_SIMD \ ARM_FEATURE (ARM_AEXT_V8A, ARM_AEXT2_V8A, FPU_ARCH_NEON_VFP_ARMV8) /* v8-a+crypto (implies simd+fp). */ #define ARM_ARCH_V8A_CRYPTOV1 \ ARM_FEATURE (ARM_AEXT_V8A, ARM_AEXT2_V8A, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8) /* v8.1-a+fp. */ #define ARM_ARCH_V8_1A_FP \ ARM_FEATURE (ARM_AEXT_V8A, ARM_AEXT2_V8_1A, FPU_ARCH_VFP_ARMV8) /* v8.1-a+simd (implies fp). */ #define ARM_ARCH_V8_1A_SIMD \ ARM_FEATURE (ARM_AEXT_V8A, ARM_AEXT2_V8_1A, FPU_ARCH_NEON_VFP_ARMV8_1) /* v8.1-a+crypto (implies simd+fp). */ #define ARM_ARCH_V8_1A_CRYPTOV1 \ ARM_FEATURE (ARM_AEXT_V8A, ARM_AEXT2_V8_1A, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_1) /* There are too many feature bits to fit in a single word, so use a structure. For simplicity we put all core features in array CORE and everything else in the other. All the bits in element core[0] have been occupied, so new feature should use bit in element core[1] and use macro ARM_FEATURE to initialize the feature set variable. */ typedef struct { uint32_t core[2]; uint32_t coproc; } arm_feature_set; /* Test whether CPU and FEAT have any features in common. */ #define ARM_CPU_HAS_FEATURE(CPU,FEAT) \ (((CPU).core[0] & (FEAT).core[0]) != 0 \ || ((CPU).core[1] & (FEAT).core[1]) != 0 \ || ((CPU).coproc & (FEAT).coproc) != 0) /* Tests whether the features of A are a subset of B. */ #define ARM_FSET_CPU_SUBSET(A,B) \ (((A).core[0] & (B).core[0]) == (A).core[0] \ && ((A).core[1] & (B).core[1]) == (A).core[1] \ && ((A).coproc & (B).coproc) == (A).coproc) #define ARM_CPU_IS_ANY(CPU) \ ((CPU).core[0] == ((arm_feature_set)ARM_ANY).core[0] \ && (CPU).core[1] == ((arm_feature_set)ARM_ANY).core[1]) #define ARM_MERGE_FEATURE_SETS(TARG,F1,F2) \ do { \ (TARG).core[0] = (F1).core[0] | (F2).core[0];\ (TARG).core[1] = (F1).core[1] | (F2).core[1];\ (TARG).coproc = (F1).coproc | (F2).coproc; \ } while (0) #define ARM_CLEAR_FEATURE(TARG,F1,F2) \ do { \ (TARG).core[0] = (F1).core[0] &~ (F2).core[0];\ (TARG).core[1] = (F1).core[1] &~ (F2).core[1];\ (TARG).coproc = (F1).coproc &~ (F2).coproc; \ } while (0) #define ARM_FEATURE_COPY(F1, F2) \ do { \ (F1).core[0] = (F2).core[0]; \ (F1).core[1] = (F2).core[1]; \ (F1).coproc = (F2).coproc; \ } while (0) #define ARM_FEATURE_EQUAL(T1,T2) \ ((T1).core[0] == (T2).core[0] \ && (T1).core[1] == (T2).core[1] \ && (T1).coproc == (T2).coproc) #define ARM_FEATURE_ZERO(T) \ ((T).core[0] == 0 && (T).core[1] == 0 && (T).coproc == 0) #define ARM_FEATURE_CORE_EQUAL(T1, T2) \ ((T1).core[0] == (T2).core[0] && (T1).core[1] == (T2).core[1]) #define ARM_FEATURE_LOW(core, coproc) {{(core), 0}, (coproc)} #define ARM_FEATURE_CORE(core1, core2) {{(core1), (core2)}, 0} #define ARM_FEATURE_CORE_LOW(core) {{(core), 0}, 0} #define ARM_FEATURE_CORE_HIGH(core) {{0, (core)}, 0} #define ARM_FEATURE_COPROC(coproc) {{0, 0}, (coproc)} #define ARM_FEATURE(core1, core2, coproc) {{(core1), (core2)}, (coproc)} aranym-1.1.0/src/disasm-main.cpp0000664000175000017500000003010713454637621014677 0ustar joyjoy#define MAIN #include "disasm-glue.cpp" #ifdef DISASM_USE_BUILTIN #include "disasm-builtin.cpp" #endif #include #include #include #include "vm_alloc.h" #include "vm_alloc.cpp" #ifndef HW_SIGSEGV #include "memory.cpp" #endif struct regstruct regs; struct flag_struct regflags; #ifdef EXCEPTIONS_VIA_LONGJMP JMP_BUF excep_env; #endif JMP_BUF sigsegv_env; int in_handler; void breakpt(void) { } // RAM and ROM pointers memptr RAMBase = 0; // RAM base (Atari address space) gb-- init is important uint8 *RAMBaseHost; // RAM base (host address space) uint32 RAMSize = 0x00e00000; // Size of RAM memptr ROMBase = 0x00e00000; // ROM base (Atari address space) uint8 *ROMBaseHost; // ROM base (host address space) uint32 ROMSize = 0x00100000; // Size of ROM uintptr MEMBaseDiff; // Global offset between a Atari address and its Host equivalent uintptr ROMBaseDiff; uintptr FastRAMBaseDiff; uint32 FastRAMSize; memptr FastRAMBase = 0x01000000; // Fast-RAM base (Atari address space) uint8 *FastRAMBaseHost; // Fast-RAM base (host address space) memptr HWBase = 0x00f00000; // HW base (Atari address space) uint8 *HWBaseHost; // HW base (host address space) uint32 HWSize = 0x00100000; // Size of HW space #ifdef FIXED_VIDEORAM memptr VideoRAMBase = ARANYMVRAMSTART; // VideoRAM base (Atari address space) #else memptr VideoRAMBase; // VideoRAM base (Atari address space) #endif uint8 *VideoRAMBaseHost;// VideoRAM base (host address space) static char const progname[] = "m68kdisasm"; static struct { const char *name; enum m68k_cpu cpu; } const cpu_names[] = { { "68000", CPU_68000 }, { "68008", CPU_68008 }, { "68010", CPU_68010 }, { "68020", CPU_68020 }, { "68030", CPU_68030 }, { "68040", CPU_68040 }, { "68060", CPU_68060 }, { "cpu32", CPU_CPU32 }, { "68302", CPU_68302 }, { "68331", CPU_68331 }, { "68332", CPU_68332 }, { "cf5200", CPU_5200 }, { "cf5202", CPU_5202 }, { "cf5204", CPU_5204 }, { "cf5206", CPU_5206 }, { "cf5206e", CPU_5206e }, { "cf5207", CPU_5207 }, { "cf5208", CPU_5208 }, { "cf521x", CPU_521x }, { "cf5249", CPU_5249 }, { "cf528x", CPU_528x }, { "cf5307", CPU_5307 }, { "cf537x", CPU_537x }, { "cf5407", CPU_5407 }, { "cf547x", CPU_547x }, { "cf548x", CPU_548x }, { "cfv4", CPU_CFV4 }, { "cfv4e", CPU_CFV4e }, { "v4e", CPU_CFV4e }, { "5475", CPU_CFV4e }, { NULL, CPU_AUTO } }; static bool arg_to_cpu(const char *val, enum m68k_cpu *cpu) { size_t i; for (i = 0; cpu_names[i].name != NULL; i++) if (strcasecmp(val, cpu_names[i].name) == 0) { *cpu = cpu_names[i].cpu; return true; } return false; } static void fatal(const char *fmt, ...) { va_list args; va_start(args, fmt); vfprintf(stderr, fmt, args); va_end(args); fputs("\n", stderr); exit(1); } #define OPTION_VMA 256 #define OPTION_CPU 257 static struct option const longopts[] = { { "vma", required_argument, NULL, OPTION_VMA }, { "output", required_argument, NULL, 'o' }, { "cpu", required_argument, NULL, OPTION_CPU }, { NULL, no_argument, NULL, 0 } }; static void print_char(FILE *out, unsigned char c, int last) { if (c >= 20 && c < 0x7f) fprintf(out, "'%c'", c); else fprintf(out, "%u", c); if (last) fputc('\n', out); else fputc(',', out); } #include static void handler(int sig) { (void) sig; exit(2); } #define GETUB(a) ((uae_u8)phys_get_byte(a)) #define GETUW(a) ((uae_u16)phys_get_word(a)) #define GETW(a) ((uae_s16)phys_get_word(a)) #define GETL(a) ((uae_s32)phys_get_long(a)) #define GETUL(a) ((uae_u32)phys_get_long(a)) #define PUTUL(a, v) (phys_put_long(a, v)) static enum m68k_cpu cpu; bool InitMEM() { InitMEMBaseDiff(RAMBaseHost, RAMBase); InitROMBaseDiff(ROMBaseHost, ROMBase); InitFastRAMBaseDiff(FastRAMBaseHost, FastRAMBase); InitVMEMBaseDiff(VideoRAMBaseHost, VideoRAMBase); return true; } uae_u32 HWget_l (uaecptr addr) { BUS_ERROR(addr); return 0; } uae_u16 HWget_w (uaecptr addr) { BUS_ERROR(addr); return 0; } uae_u8 HWget_b (uaecptr addr) { BUS_ERROR(addr); return 0; } void HWput_l (uaecptr addr, uae_u32 value) { (void) value; BUS_ERROR(addr); } void HWput_w (uaecptr addr, uae_u16 value) { (void) value; BUS_ERROR(addr); } void HWput_b (uaecptr addr, uae_u8 value) { (void) value; BUS_ERROR(addr); } void MakeFromSR (void) { regs.t1 = (regs.sr >> 15) & 1; regs.t0 = (regs.sr >> 14) & 1; regs.s = (regs.sr >> 13) & 1; // mmu_set_super(regs.s); regs.m = (regs.sr >> 12) & 1; regs.intmask = (regs.sr >> 8) & 7; SET_XFLG ((regs.sr >> 4) & 1); SET_NFLG ((regs.sr >> 3) & 1); SET_ZFLG ((regs.sr >> 2) & 1); SET_VFLG ((regs.sr >> 1) & 1); SET_CFLG (regs.sr & 1); } int main(int argc, char **argv) { char buf[256]; FILE *fp; VOLATILE uintptr len; int isize; memptr vma = 0; char *VOLATILE outname = 0; FILE *VOLATILE out; int c; int VOLATILE retval = 0; uint8 *dst; regs.sr = 0x2700; MakeFromSR(); /* * we always want disassembly for at least '40, because the BIOS contains * opcodes for it. */ cpu = CPU_68040; while ((c = getopt_long_only(argc, argv, "o", longopts, NULL)) != EOF) { switch (c) { case 'o': outname = optarg; break; case OPTION_VMA: vma = strtoul(optarg, NULL, 0); break; case OPTION_CPU: if (!arg_to_cpu(optarg, &cpu)) { fatal("unknown cpu type %s in %s", optarg, "command line"); return 1; } break; } } if ((argc - optind) != 1) { fprintf(stderr, "%s: invalid number of arguments\n", progname); return 1; } vm_init(); signal(SIGSEGV, handler); if (ROMBaseHost == NULL) { if ((RAMBaseHost = (uint8 *)malloc(RAMSize + ROMSize + HWSize + FastRAMSize)) == NULL) { fatal("Not enough free memory."); exit(1); } ROMBaseHost = (uint8 *)(RAMBaseHost + ROMBase); HWBaseHost = (uint8 *)(RAMBaseHost + HWBase); FastRAMBaseHost = (uint8 *)(RAMBaseHost + FastRAMBase); } if (!InitMEM()) exit(1); fp = fopen(argv[optind], "rb"); if (fp == NULL) { fprintf(stderr, "%s: %s: %s\n", progname, argv[optind], strerror(errno)); return 1; } vma = vma & 0xffffff; len = STRAM_END + ROMSize - vma; { SAVE_EXCEPTION; { TRY(prb) { dst = phys_get_real_address(vma); len = fread(dst, 1, len, fp); } CATCH(prb) { fprintf(stderr, "got M68K exception %d%s\n", int(prb), int(prb) == 2 ? " (Bus Error)" : ""); exit(1); } } RESTORE_EXCEPTION; } fclose(fp); if (outname) { out = fopen(outname, "w"); if (out == NULL) { fprintf(stderr, "%s: %s: %s\n", progname, outname, strerror(errno)); return 1; } } else { out = stdout; } m68k_disasm_init(&disasm_info, cpu); { SAVE_EXCEPTION; { TRY(prb) { if (len > 540 && GETUW(vma) == 100 && GETUW(vma + 512) == 0x601a) { unsigned int i; fprintf(out, "; CPX magic = 0x%04x\n", GETUW(vma)); fprintf(out, "; CPX flags = 0x%04x\n", GETUW(vma + 2)); fprintf(out, "; CPX id = 0x%08x\n", GETUL(vma + 4)); fprintf(out, "; CPX version = 0x%04x\n", GETUW(vma + 8)); fprintf(out, "; CPX i_text = "); for (i = 0; i < 14; i++) print_char(out, GETUB(vma + 10 + i), i == 13); fprintf(out, "; CPX sm_icon = "); for (i = 0; i < 48; i++) fprintf(out, "0x%04x%c", GETUW(vma + 24 + 2 * i), i == 47 ? '\n' : ','); fprintf(out, "; CPX i_color = 0x%04x\n", GETUW(vma + 120)); fprintf(out, "; CPX title_text = "); for (i = 0; i < 18; i++) print_char(out, GETUB(vma + 122 + i), i == 17); fprintf(out, "; CPX t_color = 0x%04x\n", GETUW(vma + 140)); fprintf(out, "; CPX buffer = "); for (i = 0; i < 64; i++) fprintf(out, "0x%02x%c", GETUW(vma + 142 + i), i == 63 ? '\n' : ','); fprintf(out, "\n"); vma += 512; len -= 512; } if (len > 28 && GETUW(vma) == 0x601a) { fprintf(out, "; ph_branch = 0x%04x\n", GETUW(vma)); fprintf(out, "; ph_tlen = 0x%08x\n", GETUL(vma + 2)); fprintf(out, "; ph_dlen = 0x%08x\n", GETUL(vma + 6)); fprintf(out, "; ph_blen = 0x%08x\n", GETUL(vma + 10)); fprintf(out, "; ph_slen = 0x%08x\n", GETUL(vma + 14)); fprintf(out, "; ph_res1 = 0x%08x\n", GETUL(vma + 18)); fprintf(out, "; ph_prgflags = 0x%08x\n", GETUL(vma + 22)); fprintf(out, "; ph_absflag = 0x%04x\n", GETUW(vma + 26)); if (GETUW(vma + 26) == 0) { memptr offset; memptr text_ptr; memptr rel_addr; memptr reloc_ptr, reloc_start; /* find start of relocation data */ offset = GETUL(vma + 2) + GETUL(vma + 6) + GETUL(vma + 14) + 28; /* must be at least starting offset + terminating zero */ if (offset + 5 < len) { reloc_ptr = reloc_start = vma + offset; offset = GETUL(reloc_ptr); reloc_ptr += 4; if (offset != 0) { text_ptr = vma + 28; rel_addr = text_ptr; text_ptr += offset; offset = 0; PUTUL(text_ptr, GETUL(text_ptr) + rel_addr); for (;;) { offset = GETUB(reloc_ptr); reloc_ptr++; if (offset == 0) break; if (offset == 1) { text_ptr += 254; } else { text_ptr += offset; PUTUL(text_ptr, GETUL(text_ptr) + rel_addr); } } } fprintf(out, "; relocations = 0x%08x\n", reloc_ptr - reloc_start); } } fprintf(out, "\n"); if (len > 256 && GETUL(vma + 18) == 0x4d694e54l && /* 'MiNT' extended exec header magic */ ((GETUL(vma + 28) == 0x283a001aL && GETUL(vma + 32) == 0x4efb48faL) || /* Original binutils */ (GETUL(vma + 28) == 0x203a001a && GETUL(vma + 32) == 0x4efb08faL)) && /* binutils >= 2.18-mint-20080209 */ (GETUW(vma + 38) == 0x0108 || /* NMAGIC */ GETUW(vma + 38) == 0x010b)) /* ZMAGIC */ { fprintf(out, "; a_info = 0x%04x\n", GETUW(vma + 36)); fprintf(out, "; a_magic = 0x%04x\n", GETUW(vma + 38)); fprintf(out, "; a_text = 0x%08x\n", GETUL(vma + 40)); fprintf(out, "; a_data = 0x%08x\n", GETUL(vma + 44)); fprintf(out, "; a_bss = 0x%08x\n", GETUL(vma + 48)); fprintf(out, "; a_syms = 0x%08x\n", GETUL(vma + 52)); fprintf(out, "; a_entry = 0x%08x (0x%08x)\n", GETUL(vma + 56), GETUL(vma + 56) + 28); fprintf(out, "; a_trsize = 0x%08x\n", GETUL(vma + 60)); fprintf(out, "; a_drsize = 0x%08x\n", GETUL(vma + 64)); fprintf(out, "\n"); vma += 256; len -= 256; } else { vma += 28; len -= 28; } if (len > 72 && GETUL(vma + 0) == 0x70004afc) { uae_u32 i, funcs; memptr names; fprintf(out, "; slh_magic = 0x%08x\n", GETUL(vma + 0)); fprintf(out, "; slh_name = 0x%08x\n", GETUL(vma + 4)); fprintf(out, "; slh_version = %d\n", GETUL(vma + 8)); fprintf(out, "; slh_flags = 0x%08x\n", GETUL(vma + 12)); fprintf(out, "; slh_init = 0x%08x\n", GETUL(vma + 16)); fprintf(out, "; slh_exit = 0x%08x\n", GETUL(vma + 20)); fprintf(out, "; slh_open = 0x%08x\n", GETUL(vma + 24)); fprintf(out, "; slh_close = 0x%08x\n", GETUL(vma + 28)); names = GETUL(vma + 32); fprintf(out, "; slh_names = 0x%08x\n", names); funcs = GETUL(vma + 68); fprintf(out, "; slb_no_funcs = %d\n", funcs); vma += 72; for (i = 0; i < funcs && len >= 4; i++) { fprintf(out, "; slb_fn%d = 0x%08x", i, GETUL(vma + 0)); if (names) { memptr name = GETUL(names + 4 * i); if (name) fprintf(out, " %s", (const char *)phys_get_real_address(name)); } fprintf(out, "\n"); vma += 4; len -= 4; } if (i != funcs) fprintf(out, "; SLB function table truncated\n"); fprintf(out, "\n"); } } } CATCH(prb) { fprintf(stderr, "got M68K exception %d%s: %08x\n", int(prb), int(prb) == 2 ? " (Bus Error)" : "", regs.mmu_fault_addr); exit(1); } } RESTORE_EXCEPTION; } disasm_info.memory_vma = vma; while (len > 0) { isize = m68k_disasm_to_buf(&disasm_info, buf, TRUE); fputs(buf, out); fputs("\n", out); if (isize < 0) { retval = 1; break; } if ((uintptr)isize > len) break; len -= isize; } fflush(out); if (out != stdout) fclose(out); return retval; } aranym-1.1.0/src/dirty_rects.cpp0000664000175000017500000000617513454637621015040 0ustar joyjoy/* Dirty rectangle markers (C) 2006 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "SDL_compat.h" #include #include "dirty_rects.h" /*--- Constructor/destructor ---*/ DirtyRects::DirtyRects(int width, int height) { dirtyMarker=NULL; resizeDirty(width,height); } DirtyRects::~DirtyRects(void) { if (dirtyMarker) { delete [] dirtyMarker; } } /*--- Public functions ---*/ void DirtyRects::resizeDirty(int width, int height) { if (dirtyMarker) { delete [] dirtyMarker; } areaW = width; areaH = height; dirtyW = width>>4; if (width & 15) { dirtyW++; } dirtyH = height>>4; if (height & 15) { dirtyH++; } dirtyMarker = new Uint8[dirtyW * dirtyH]; /* Will refresh everything */ memset(dirtyMarker, 1, dirtyW * dirtyH); minDirtX = 0; minDirtY = 0; maxDirtX = areaW-1; maxDirtY = areaH-1; } Uint8 *DirtyRects::getDirtyRects(void) { return dirtyMarker; } void DirtyRects::setDirtyRect(int x, int y, int w, int h) { // adjust minDirt and maxDirt points if (x < minDirtX) minDirtX = x & 0xfffffff0; // rounded down to multiple of 16 if (y < minDirtY) minDirtY = y & 0xfffffff0; // rounded down to multiple of 16 if (x+w-1 > maxDirtX) maxDirtX = x+w-1; if (y+h-1 > maxDirtY) maxDirtY = y+h-1; // mark affected area in our marker map as dirty int x2 = x+w; if (x2 & 15) { x2 = (x2|15)+1; } x2>>=4; int y2 = y+h; if (y2 & 15) { y2 = (y2|15)+1; } y2>>=4; int x1 = x>>4, y1 = y>>4; for (y=y1;y=0) && (x=0) && (y>*/ #define ERROR -1 /*---------------------------------------------------------------------/ / / Description: CfgOpts is based on GETOPTS by Bob Stout. It will / process a configuration file based one words and / store it in a structure pointing to physical data / area for each storage item. / i.e. ???.CFG: / Port=1 / work_space=C:\temp / menus=Yes / user=Jeffry Brickley / will write to the following structure: / struct Config_Tag configs[] = { / {"port", Word_Tag, &port_number}, / {"work_space", String_Tag, work_space, sizeof(work_space)}, / {"menus", Bool_Tag, &menu_flag}, / {"user", String_Tag, User_name, sizeof(User_name)}, / {NULL, Error_Tag, NULL} / }; / Note that the structure must always be terminated by a NULL row as / was the same with GETOPTS. This however is slightly more / complicated than scaning the command line (but not by much) for / data as there can be more variety in words than letters and an / number of data items limited only by memory. Currently CfgOpts / is not case sensitive, but this can be changed by replacing all / "strcasecmp" functions with "strcmp" functions. / / Like the original code from which this was taken, this is released / to the Public Domain. I cannot make any guarentees other than these / work for me and I find them usefull. Feel free to pass these on to / a friend, but please do not charge him.... / /---------------------------------------------------------------------*/ #include "sysdeps.h" #include "cfgopts.h" #define DEBUG 0 #include "debug.h" ConfigOptions::ConfigOptions(const char *cfgfile, const char *home, const char *data) { config_file = cfgfile; // prepare home_folder with trailing slash safe_strncpy(home_folder, home, sizeof(home_folder)); int hflen = strlen(home_folder); if (hflen > 0 && home_folder[hflen-1] != '/' && home_folder[hflen-1] != '\\') strcat(home_folder, "/"); // prepare data_folder with trailing slash safe_strncpy(data_folder, data, sizeof(data_folder)); int dflen = strlen(data_folder); if (dflen > 0 && data_folder[dflen-1] != '/' && data_folder[dflen-1] != '\\') strcat(data_folder, "/"); // prepare config_folder with trailing slash safe_strncpy(config_folder, config_file, sizeof(config_folder)); char *slash = strrchr(config_folder, '/'); char *alt_slash = strrchr(config_folder, '\\'); if (slash != NULL) { slash[1] = '\0'; } else if (alt_slash != NULL) { alt_slash[1] = '\0'; } else { config_folder[0] = '\0'; } } char * ConfigOptions::trim(char *buffer) { #define SPACE ' ' #define TABULA '\t' if (buffer != NULL) { int i, linelen = strlen(buffer); for (i = 0; i < linelen; i++) if (buffer[i] != SPACE && buffer[i] != TABULA) break; if (i > 0 && i < linelen) { linelen -= i; memmove(buffer, buffer + i, linelen); /* trim spaces on left */ } for (i = linelen; i > 0; i--) { int j = i-1; if (buffer[j] != SPACE && buffer[j] != TABULA) break; } buffer[i] = '\0'; /* trim spaces on right */ } return buffer; } char * ConfigOptions::strip_comment(char *line) { #define REM1 '#' #define REM2 ';' int i, j; if (line == NULL) return NULL; j = strlen(line); for (i = 0; i < j; i++) if (line[i] == REM1 || line[i] == REM2) { line[i] = '\0'; break; } return line; } /* * FCOPY.C - copy one file to another. Returns the (positive) * number of bytes copied, or -1 if an error occurred. * by: Bob Jarvis */ #define BUFFER_SIZE 1024 /*---------------------------------------------------------------------/ / copy one file to another. /---------------------------------------------------------------------*/ /*>>------[ fcopy() ]-------------[ 08-02-95 14:02PM ]------/ / return value: / long ; Number of bytes copied or -1 on error / parameters: / char *dest ; Destination file name / char *source ; Source file name /-------------------------------------------------------------------<<*/ long ConfigOptions::fcopy(const char *dest, const char *source) { FILE * d, *s; char *buffer; size_t incount, outcount; long totcount = 0L; s = fopen(source, "rb"); if (s == NULL) return -1L; d = fopen(dest, "wb"); if (d == NULL) { fclose(s); return -1L; } buffer = (char *)malloc(BUFFER_SIZE); if (buffer == NULL) { fclose(s); fclose(d); return -1L; } incount = fread(buffer, sizeof(char), BUFFER_SIZE, s); outcount = 0; while (!feof(s)) { totcount += (long)incount; outcount += fwrite(buffer, sizeof(char), incount, d); incount = fread(buffer, sizeof(char), BUFFER_SIZE, s); } totcount += (long)incount; outcount += fwrite(buffer, sizeof(char), incount, d); free(buffer); fclose(s); fclose(d); if (outcount < incount) return -1L; /* disk full? */ return totcount; } void ConfigOptions::expand_path(char *dest, const char *path, unsigned short buf_size) { dest[0] = '\0'; if ( !strlen(path) ) return; size_t prefixLen = 0; if ( path[0] == '~' && (path[1] == '/' || path[1] == '\\') ) { safe_strncpy(dest, home_folder, buf_size); path+=2; } else if (path[0] == '*' && (path[1] == '/' || path[1] == '\\') ) { safe_strncpy(dest, data_folder, buf_size); path+=2; } else if ( path[0] != '/' && path[0] != '\\' && path[1] != ':' ) { safe_strncpy(dest, config_folder, buf_size); } else { safe_strncpy(dest, path, buf_size); return; } prefixLen = strlen( dest ); if ( buf_size >= prefixLen + strlen(path) ) { memmove( dest + prefixLen, path, strlen(path)+1 ); } else { panicbug("Error - config entry size is insufficient"); } } void ConfigOptions::compress_path(char *dest, char *path, unsigned short buf_size) { dest[0] = '\0'; if ( !strlen(path) ) { return; } size_t prefixLen = 0; const char *replacement = NULL; safe_strncpy(dest, config_folder, buf_size); prefixLen = strlen(dest); if (prefixLen && strncmp(path, dest, prefixLen) == 0) { replacement = ""; D(bug("%s matches %.*s", path, prefixLen, dest)); } else { safe_strncpy(dest, data_folder, buf_size); prefixLen = strlen(dest); if (prefixLen && strncmp(path, dest, prefixLen) == 0) { replacement = "*"; --prefixLen; D(bug("%s matches %.*s", path, prefixLen, dest)); } else { safe_strncpy(dest, home_folder, buf_size); prefixLen = strlen(dest); if (prefixLen && strncmp(path, dest, prefixLen) == 0) { replacement = "~"; --prefixLen; D(bug("%s matches %.*s", path, prefixLen, dest)); } } } if (replacement) { int len1 = strlen(replacement); strcpy(dest, replacement); safe_strncpy(dest+len1, path+prefixLen, buf_size - len1); } else { safe_strncpy(dest, path, buf_size); } } bool ConfigOptions::set_config_value(struct Config_Tag *ptr, const char *value) { int temp; if (value == NULL) { if ( ptr->type == Path_Tag || ptr->type == String_Tag ) {/* path or string may be empty */ *(char *)ptr->buf = 0; return true; } return false; } switch ( ptr->type ) /* check type */ { case Bool_Tag: *((bool * )(ptr->buf)) = (!strcasecmp(value, "FALSE") || !strcasecmp(value, "No")) ? false : true; break; case Byte_Tag: sscanf(value, "%d", &temp); *((char *)(ptr->buf)) = (char)temp; break; case Word_Tag: sscanf(value, "%hd", (short *)(ptr->buf)); break; case Int_Tag: sscanf(value, "%d", (int *)(ptr->buf)); break; case Long_Tag: sscanf(value, "%ld", (long *)(ptr->buf)); break; case OctWord_Tag: sscanf(value, "%ho", (short *)(ptr->buf)); break; case OctLong_Tag: sscanf(value, "%lo", (long *)(ptr->buf)); break; case HexWord_Tag: sscanf(value, "%hx", (short *)(ptr->buf)); break; case HexLong_Tag: sscanf(value, "%lx", (long *)(ptr->buf)); break; case Float_Tag: sscanf(value, "%g", (float *)ptr->buf); break; case Double_Tag: sscanf(value, "%lg", (double *)ptr->buf); break; case Char_Tag: *(char *)ptr->buf = *value; break; case Path_Tag: if (ptr->buf_size > 0) { char tmpbuf[MAX_PATH]; safe_strncpy(tmpbuf, value, sizeof(tmpbuf)); expand_path((char *)ptr->buf, tmpbuf, ptr->buf_size); } else { panicbug(">>> Wrong buf_size in Config_Tag struct: directive %s, buf_size %d !!!", ptr->code, ptr->buf_size); } break; case String_Tag: if (ptr->buf_size > 0) { safe_strncpy((char *)ptr->buf, value, ptr->buf_size); } else { panicbug(">>> Wrong buf_size in Config_Tag struct: directive %s, buf_size %d !!!", ptr->code, ptr->buf_size); } break; case Function_Tag: case Error_Tag: default: return false; } return true; } char *ConfigOptions::get_config_value(const struct Config_Tag *ptr, bool type) { char value[40]; char *valuep = NULL; switch ( ptr->type ) { case Bool_Tag: if (type) strcpy(value, "bool"); else strcpy(value, *((bool * )(ptr->buf)) ? "true" : "false"); break; case Byte_Tag: if (type) strcpy(value, "byte"); else sprintf(value, "%d", *((char *)(ptr->buf))); break; case Word_Tag: if (type) strcpy(value, "word"); else sprintf(value, "%d", *((short *)(ptr->buf))); break; case Int_Tag: if (type) strcpy(value, "int"); else sprintf(value, "%d", *((int *)(ptr->buf))); break; case Long_Tag: if (type) strcpy(value, "long"); else sprintf(value, "%ld", *((long *)(ptr->buf))); break; case OctWord_Tag: if (type) strcpy(value, "octword"); else sprintf(value, "%o", *((short *)(ptr->buf))); break; case OctLong_Tag: if (type) strcpy(value, "octlong"); else sprintf(value, "%lo", *((long *)(ptr->buf))); break; case HexWord_Tag: if (type) strcpy(value, "hexword"); else sprintf(value, "%x", *((short *)(ptr->buf))); break; case HexLong_Tag: if (type) strcpy(value, "hexlong"); else sprintf(value, "%lx", *((long *)(ptr->buf))); break; case Float_Tag: if (type) strcpy(value, "float"); else sprintf(value, "%g", *((float *)(ptr->buf))); break; case Double_Tag: if (type) strcpy(value, "double"); else sprintf(value, "%g", *((double *)(ptr->buf))); break; case Char_Tag: if (type) strcpy(value, "char"); else sprintf(value, "%c", *((char *)(ptr->buf))); break; case Path_Tag: if (ptr->buf_size > 0) { char tmpbuf[MAX_PATH]; if (type) { strcpy(value, "path"); } else { compress_path(tmpbuf, (char *)ptr->buf, sizeof(tmpbuf)); valuep = strdup(tmpbuf); } } else { panicbug(">>> Wrong buf_size in Config_Tag struct: directive %s, buf_size %d !!!", ptr->code, ptr->buf_size); } break; case String_Tag: if (ptr->buf_size > 0) { if (type) { strcpy(value, "string"); } else { valuep = strdup((char *)ptr->buf); } } else { panicbug(">>> Wrong buf_size in Config_Tag struct: directive %s, buf_size %d !!!", ptr->code, ptr->buf_size); } break; case Function_Tag: case Error_Tag: default: return NULL; } if (valuep == NULL) valuep = strdup(value); return valuep; } /*---------------------------------------------------------------------/ / reads from an input configuration (INI) file. /---------------------------------------------------------------------*/ /*>>------[ input_config() ]-------------[ 08-02-95 14:02PM ]------/ / return value: / int ; number of records read or -1 on error / parameters: / struct Config_Tag configs[]; Configuration structure / char *header ; INI header name (i.e. "[TEST]") /-------------------------------------------------------------------<<*/ int ConfigOptions::input_config(struct Config_Tag configs[], const char *header) { struct Config_Tag *ptr; int count = 0, lineno = 0; FILE * file; char *fptr, *tok, *next; file = fopen(config_file, "rt"); if ( file == NULL ) return ERROR; /* return error designation. */ if ( header != NULL ) do { fptr = trim(fgets(line, sizeof(line), file)); /* get input line */ } while ( memcmp(line, header, strlen(header)) && !feof(file)); if ( !feof(file) ) do { fptr = trim(fgets(line, sizeof(line), file)); /* get input line */ if ( fptr == NULL ) continue; lineno++; strip_comment(line); if ( line[0] == '[' ) continue; /* next header is the end of our section */ tok = trim(strtok(line, "=\n\r")); /* get first token */ if ( tok != NULL ) { next = trim(strtok(NULL, "\n\r")); /* get actual config information */ for ( ptr = configs; ptr->code; ++ptr ) /* scan for token */ { if ( !strcasecmp( tok , ptr->code ) ) /* got a match? */ { if (!set_config_value(ptr, next)) { if (next == NULL) panicbug(">>> Missing value in Config file %s on line %d !!!", config_file, lineno); else bug("Error in Config file %s on line %d", config_file, lineno); } else { ++count; } } } } } while ( fptr != NULL && line[0] != '['); fclose(file); /* * expand_path() (for converting the relative filenames) * will not be called when the entry is not found in the config file, * so go through the list again and do that now. */ for ( ptr = configs; ptr->code; ++ptr) { if (ptr->type == Path_Tag) { char *path = (char *)ptr->buf; if (path[0] != '\0' && path[0] != '/' && path[0] != '\\' && path[1] != ':' ) { char tmpbuf[MAX_PATH]; safe_strncpy(tmpbuf, path, sizeof(tmpbuf)); expand_path(path, tmpbuf, ptr->buf_size); } } } return count; } int ConfigOptions::process_config(struct Config_Tag *conf, const char *title, bool verbose) { int status = input_config(conf, title); if (status >= 0) { if (verbose) infoprint("%s configuration: found %d valid directives.", title, status); } else { panicbug("Error while reading/processing the '%s' config file.", config_file); } return status; } bool ConfigOptions::write_token(FILE *outfile, struct Config_Tag *ptr) { int temp; bool ret_flag = true; ptr->stat = 1; /* jiz ulozeno do souboru */ fprintf(outfile, "%s = ", ptr->code); switch ( ptr->type ) /* check type */ { case Bool_Tag: fprintf(outfile, "%s\n", *((bool *)(ptr->buf)) ? "Yes" : "No"); break; case Byte_Tag: temp = (int)*((char *)(ptr->buf)); fprintf(outfile, "%hd\n", (short)temp); break; case Word_Tag: fprintf(outfile, "%hd\n", *((short *)(ptr->buf))); break; case Int_Tag: fprintf(outfile, "%d\n", *((int *)(ptr->buf))); break; case Long_Tag: fprintf(outfile, "%ld\n", *((long *)(ptr->buf))); break; case OctWord_Tag: fprintf(outfile, "%ho\n", *((short *)(ptr->buf))); break; case OctLong_Tag: fprintf(outfile, "%lo\n", *((long *)(ptr->buf))); break; case HexWord_Tag: fprintf(outfile, "%hx\n", *((short *)(ptr->buf))); break; case HexLong_Tag: fprintf(outfile, "%lx\n", *((long *)(ptr->buf))); break; case Float_Tag: fprintf(outfile, "%g\n", *((float *)ptr->buf)); break; case Double_Tag: fprintf(outfile, "%g\n", *((double *)ptr->buf)); break; case Char_Tag: fprintf(outfile, "%c\n", *(char *)ptr->buf); break; case Path_Tag: { char tmpbuf[MAX_PATH]; compress_path(tmpbuf, (char *)ptr->buf, sizeof(tmpbuf)); fprintf(outfile, "%s\n", tmpbuf); } break; case String_Tag: fprintf(outfile, "%s\n", (char *)ptr->buf); break; case Error_Tag: case Function_Tag: default: printf("Error in Config structure (Contact author).\n"); ret_flag = false; } return ret_flag; } /*---------------------------------------------------------------------/ / updates an input configuration (INI) file from a structure. /---------------------------------------------------------------------*/ /*>>------[ update_config() ]-------------[ 08-02-95 14:02PM ]------/ / return value: / int ; Number of records read & updated / parameters: / struct Config_Tag configs[]; Configuration structure / char *header ; INI header name (i.e. "[TEST]") /-------------------------------------------------------------------<<*/ int ConfigOptions::update_config(struct Config_Tag configs[], const char *header) { static const char *const tempfilenames[] = { "/tmp/aratemp.$$$", "aratemp.$$$", NULL }; const char *tempfilename; struct Config_Tag *ptr; int count = 0, lineno = 0; FILE * infile, *outfile; char *fptr, *tok; int result = 0; int i; for ( ptr = configs; ptr->buf; ++ptr ) ptr->stat = 0; /* jeste neulozeno do souboru */ outfile = NULL; i = 0; while ((tempfilename = tempfilenames[i++]) != NULL) { outfile = fopen(tempfilename, "w"); if (outfile != NULL) break; } if ( outfile == NULL ) { panicbug("Error: unable to open %s file.", tempfilenames[0]); return ERROR; /* return error designation. */ } infile = fopen(config_file, "r"); if ( infile == NULL ) { /* konfiguracni soubor jeste vubec neexistuje */ if ( header != NULL ) { fprintf(outfile, "%s\n", header); } for ( ptr = configs; ptr->buf; ++ptr ) /* scan for token */ { if ( write_token(outfile, ptr) ) ++count; } fclose(outfile); result = fcopy(config_file, tempfilename); os_remove(tempfilename); if (result < 0) { panicbug("Error %d in fcopy.", result); return result; } return count; } if ( header != NULL ) { /* konfiguracni soubor existuje a je otevren - hledame nasi sekci */ do { fptr = trim(fgets(line, sizeof(line), infile)); /* get input line */ if (feof(infile)) break; fprintf(outfile, "%s", line); } while ( memcmp(line, header, strlen(header))); } if ( feof(infile) ) { /* v jiz existujicim konfiguracnim souboru neni sekce, kterou zapisujeme */ if ( header != NULL ) { fprintf(outfile, "\n%s\n", header); } for ( ptr = configs; ptr->buf; ++ptr ) /* scan for token */ { if ( write_token(outfile, ptr) ) ++count; } } else { /* v jiz existujicim souboru byla nalezena sekce, kterou mame updatovat */ for (;;) { fptr = trim(fgets(line, sizeof(line), infile)); /* get input line */ if ( fptr == NULL ) break; lineno++; if ( line[0] == REM1 || line[0] == REM2 ) { fprintf(outfile, "%s", line); continue; /* skip comments */ } if ( line[0] == '[' || feof(infile) ) { /* konec nasi sekce */ break; /* zbytek konfig. souboru jen opis z puvodniho */ } tok = trim(strtok(line, "=\n\r")); /* get first token */ if ( tok != NULL ) { for ( ptr = configs; ptr->buf; ++ptr ) /* scan for token */ { if ( !strcasecmp( tok , ptr->code ) ) /* got a match? */ { if ( write_token(outfile, ptr) ) { ++count; } } } } } /* nasli jsme zacatek dalsi sekce - tedy zkoncila nase sekce. Nyni je nutne zjistit, ktere radky struktury jsme jeste neupdatovali a ty tam v podstate zapsat jako by konfiguracni soubor ani neexistoval */ for ( ptr = configs; ptr->buf; ++ptr ) { if (ptr->stat == 0) if ( write_token(outfile, ptr) ) ++count; } if ( !feof(infile) && fptr != NULL) fprintf(outfile, "\n%s", line);/* doplnit prvni radku dalsi sekce */ /* zkopirovat zbytek konfiguracniho souboru (cizi sekce) */ for(;;) { fptr = trim(fgets(line, sizeof(line), infile)); /* get input line */ if (feof(infile)) break; fprintf(outfile, "%s", line); } } fclose(infile); fclose(outfile); result = fcopy(config_file, tempfilename); os_remove(tempfilename); if (result < 0) { panicbug("Error %d in fcopy(%s,%s).", result, config_file, tempfilename); return result; } return count; } #ifdef TEST #include bool test1 = true, test2 = false; short test3 = -37; long test4 = 100000L; char test5[80] = "Default string"; struct Config_Tag configs[] = { { "test1", Bool_Tag, &test1 }, /* Valid options */ { "test2", Bool_Tag, &test2 }, { "test3", Word_Tag, &test3 }, { "test4", Long_Tag, &test4 }, { "test5", String_Tag, test5, sizeof(test5) }, { NULL , Error_Tag, NULL }/* Terminating record */ }; #define TFprint(v) ((v) ? "TRUE" : "FALSE") /*---------------------------------------------------------------------/ / test main routine, read/write to a sample INI file. /---------------------------------------------------------------------*/ /*>>------[ main() ]-------------[ 08-02-95 14:02PM ]------/ / return value: / int ; 0 / parameters: / int argc ; number of arguments / char *argv[] ; command line arguments /-------------------------------------------------------------------<<*/ int main(int argc, char *argv[]) { int i; printf("Defaults:\ntest1 = %s\ntest2 = %s\ntest3 = %d\ntest4 = %ld\n" "test5 = \"%s\"\n\n", TFprint(test1), TFprint(test2), test3, test4, test5); printf("input_config() returned %d\n", input_config("test.cfg", configs, "[TEST1]")); printf("Options are now:\ntest1 = %s\ntest2 = %s\ntest3 = %d\n" "test4 = %ld\ntest5 = \"%s\"\n\n", TFprint(test1), TFprint(test2), test3, test4, test5); #ifdef TEST_UPDATE test1 = true; test2 = false; test3 = -37; test4 = 100000L; strcpy(test5, "Default value"); printf("update_config() returned %d\n", update_config("test.cfg", configs, "[TEST2]")); printf("Options are now:\ntest1 = %s\ntest2 = %s\ntest3 = %d\n" "test4 = %ld\ntest5 = \"%s\"\n\n", TFprint(test1), TFprint(test2), test3, test4, test5); #endif /* TEST_UPDATE */ return 0; } #endif /* TEST */ /* vim:ts=4:sw=4: */ aranym-1.1.0/src/cdromtest.cpp0000664000175000017500000001110713454637621014500 0ustar joyjoy#include "sysdeps.h" #include "toserror.h" #include "cpu_emulation.h" #include "parameters.h" #include "nfcdrom_sdl.h" #define DEBUG 1 #include "debug.h" #undef DEBUG #define RAM_SIZE 0x20000 unsigned char atari_mem[RAM_SIZE]; #define Atari2HostAddr(buffer) &atari_mem[buffer] uintptr MEMBaseDiff; uint32 FastRAMSize = 0; memptr RAMBase = 0; uint32 RAMSize = RAM_SIZE; uae_u32 VideoRAMBase = 0; uint8 *RAMBaseHost; uint8 *VideoRAMBaseHost; JMP_BUF excep_env; struct regstruct regs; bx_options_t bx_options; #ifdef NFCDROM_LINUX_SUPPORT # include "nfcdrom_linux.cpp" # undef DEBUG # undef NFCD_NAME #endif #ifdef NFCDROM_WIN32_SUPPORT # include "nfcdrom_win32.cpp" # undef DEBUG # undef NFCD_NAME #endif #include "nfcdrom_sdl.cpp" #undef DEBUG #undef NFCD_NAME #include "nfcdrom.cpp" #undef DEBUG #include "nf_base.cpp" #if defined OS_mingw || defined OS_cygwin #include "Unix/cygwin/win32_supp.cpp" #endif int ndebug::dbprintf(const char *s, ...) { va_list a; int i; va_start(a, s); i = vfprintf(stderr, s, a); i += fprintf(stderr, "\n"); va_end(a); return i; } int ndebug::pdbprintf(const char *s, ...) { va_list a; int i; va_start(a, s); i = vfprintf(stderr, s, a); i += fprintf(stderr, "\n"); va_end(a); return i; } void preset_nfcdroms() { for(int i=0; i < CD_MAX_DRIVES; i++) { bx_options.nfcdroms[i].physdevtohostdev = -1; } } char *safe_strncpy(char *dest, const char *src, size_t size) { if (dest == NULL) return NULL; if (size > 0) { strncpy(dest, src != NULL ? src : "", size); dest[size-1] = '\0'; } return dest; } static void minimum_init(void) { RAMBaseHost = VideoRAMBaseHost = atari_mem; InitMEMBaseDiff(RAMBaseHost, RAMBase); InitVMEMBaseDiff(VideoRAMBaseHost, VideoRAMBase); preset_nfcdroms(); bx_options.nfcdroms[DriveFromLetter('X')].physdevtohostdev = 0; } extern "C" void breakpt(void) { } static int32 params[6]; CdromDriver *driver; static int32 nf_call(int32 cmd, ...) { va_list args; va_start(args, cmd); params[0] = va_arg(args, int32); params[1] = va_arg(args, int32); params[2] = va_arg(args, int32); params[3] = va_arg(args, int32); params[4] = va_arg(args, int32); params[5] = va_arg(args, int32); va_end(args); return driver->dispatch(cmd); } uint32 nf_getparameter(int i) { return params[i]; } #define bos_header_addr 0x10000 #define ext_status_addr 0x10100 #define toc_addr 0x11000 #define msf_addr 0x12000 static void sdl_init(void) { if (SDL_Init(SDL_INIT_CDROM | SDL_INIT_NOPARACHUTE) != 0) { fprintf(stderr, "SDL initialization failed: %s\n", SDL_GetError()); exit(1); } atexit(SDL_Quit); } static metados_bos_header_t *bos_header; static const char *cdrom_driver = NULL; static atari_cdrom_msf_t *atari_msf; int main(int argc, char **argv) { if (argc > 1) cdrom_driver = argv[1]; minimum_init(); TRY(prb) { #if defined NFCDROM_LINUX_SUPPORT if (cdrom_driver == NULL || strcmp("linux", cdrom_driver) == 0) { sdl_init(); driver = new CdromDriverLinux(); } else #elif defined NFCDROM_WIN32_SUPPORT if (cdrom_driver == NULL || strcmp("win32", cdrom_driver) == 0) { driver = new CdromDriverWin32(); } else #endif { if (cdrom_driver != NULL && strcmp(cdrom_driver, "sdl") != 0) fprintf(stderr, "cdrom driver %s not supported, using sdl instead\n", cdrom_driver); sdl_init(); driver = new CdromDriverSdl(); } if (!driver) return 1; bos_header = (metados_bos_header_t *)Atari2HostAddr(bos_header_addr); bos_header->phys_letter = SDL_SwapBE16('X'); nf_call(NFCD_DRIVESMASK); nf_call(NFCD_OPEN, bos_header_addr, ext_status_addr); nf_call(NFCD_STATUS, bos_header_addr, ext_status_addr); nf_call(NFCD_GETTOC, bos_header_addr, (uint32)0, toc_addr); nf_call(NFCD_IOCTL, bos_header_addr, (uint32)ATARI_CDROMSUBCHNL, toc_addr); nf_call(NFCD_DISCINFO, bos_header_addr, toc_addr); memset(Atari2HostAddr(toc_addr), 1, 4); nf_call(NFCD_IOCTL, bos_header_addr, (uint32)ATARI_CDROMPLAYTRKIND, toc_addr); nf_call(NFCD_STATUS, bos_header_addr, ext_status_addr); sleep(10); atari_msf = (atari_cdrom_msf_t *)Atari2HostAddr(msf_addr); atari_msf->cdmsf_min0 = 0; atari_msf->cdmsf_sec0 = 2; atari_msf->cdmsf_frame0 = 0; atari_msf->cdmsf_min1 = 4; atari_msf->cdmsf_sec1 = 0; atari_msf->cdmsf_frame1 = 0; nf_call(NFCD_IOCTL, bos_header_addr, (uint32)ATARI_CDROMPLAYMSF, msf_addr); nf_call(NFCD_STATUS, bos_header_addr, ext_status_addr); sleep(10); nf_call(NFCD_CLOSE, bos_header_addr, ext_status_addr); } CATCH(prb) { fprintf(stderr, "got m68k exception %d: %s addr %08x\n", prb, regs.mmu_ssw & 0x100 ? "read" : "write", regs.mmu_fault_addr); return 1; } delete driver; return 0; } aranym-1.1.0/src/cdrom.cpp0000664000175000017500000011255213454637621013606 0ustar joyjoy///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2002 MandrakeSoft S.A. // // MandrakeSoft S.A. // 43, rue d'Aboukir // 75002 Paris - France // http://www.linux-mandrake.com/ // http://www.mandrakesoft.com/ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // These are the low-level CDROM functions which are called // from 'harddrv.cc'. They effect the OS specific functionality // needed by the CDROM emulation in 'harddrv.cc'. Mostly, just // ioctl() calls and such. Should be fairly easy to add support // for your OS if it is not supported yet. #include "sysdeps.h" #include "emu_bochs.h" #include "cdrom.h" #define DEBUG 0 #include "debug.h" #ifdef SUPPORT_CDROM # include # include # include #define LOG_THIS /* no SMF tricks here, not needed */ extern "C" { #include } #ifdef OS_linux extern "C" { #include #include // I use the framesize in non OS specific code too #define BX_CD_FRAMESIZE CD_FRAMESIZE } #elif defined(__GNU__) || (defined(OS_cygwin) && !defined(_WIN32)) extern "C" { #include #define BX_CD_FRAMESIZE 2048 #define CD_FRAMESIZE 2048 } #elif defined(OS_solaris) extern "C" { #include #include #include #include #define BX_CD_FRAMESIZE CDROM_BLK_2048 } #elif defined(OS_beos) #include "cdrom_beos.h" #define BX_CD_FRAMESIZE 2048 #elif (defined (OS_netbsd) || defined(OS_openbsd) || defined(OS_freebsd)) // OpenBSD pre version 2.7 may require extern "C" { } structure around // all the includes, because the i386 sys/disklabel.h contains code which // c++ considers invalid. #include #include #include #include #ifdef OS_openbsd #include #endif // XXX #define BX_CD_FRAMESIZE 2048 #define CD_FRAMESIZE 2048 #elif defined(OS_irix) #define BX_CD_FRAMESIZE 2048 #define CD_FRAMESIZE 2048 #elif defined(OS_mint) #define BX_CD_FRAMESIZE 2048 #define CD_FRAMESIZE 2048 #elif defined(OS_darwin) // #include // dev/disk.h is deprecated since OS 10.3. Use sys/disk.h instead. #include #include #include #include #include #include #include #include // These definitions were taken from mount_cd9660.c // There are some similar definitions in IOCDTypes.h // however there seems to be some dissagreement in // the definition of CDTOC.length struct _CDMSF { u_char minute; u_char second; u_char frame; }; #define MSF_TO_LBA(msf) \ (((((msf).minute * 60UL) + (msf).second) * 75UL) + (msf).frame - 150) struct _CDTOC_Desc { u_char session; u_char ctrl_adr; /* typed to be machine and compiler independent */ u_char tno; u_char point; struct _CDMSF address; u_char zero; struct _CDMSF p; }; struct _CDTOC { u_short length; /* in native cpu endian */ u_char first_session; u_char last_session; struct _CDTOC_Desc trackdesc[1]; }; static kern_return_t FindEjectableCDMedia( io_iterator_t *mediaIterator, mach_port_t *masterPort ); static kern_return_t GetDeviceFilePath( io_iterator_t mediaIterator, char *deviceFilePath, CFIndex maxPathSize ); static struct _CDTOC * ReadTOC( const char * devpath ); static char CDDevicePath[ MAXPATHLEN ]; #define BX_CD_FRAMESIZE 2048 #define CD_FRAMESIZE 2048 #elif defined(_WIN32) #include #include #include "aspi-win32.h" #include "scsidefs.h" DWORD (*GetASPI32SupportInfo)(void); DWORD (*SendASPI32Command)(LPSRB); BOOL (*GetASPI32Buffer)(PASPI32BUFF); BOOL (*FreeASPI32Buffer)(PASPI32BUFF); BOOL (*TranslateASPI32Address)(PDWORD,PDWORD); DWORD (*GetASPI32DLLVersion)(void); static OSVERSIONINFO osinfo; static BOOL isWindowsXP; static BOOL bHaveDev; static UINT cdromCount = 0; static HINSTANCE hASPI = NULL; #define BX_CD_FRAMESIZE 2048 #define CD_FRAMESIZE 2048 // READ_TOC_EX structure(s) and #defines #define CDROM_READ_TOC_EX_FORMAT_TOC 0x00 #define CDROM_READ_TOC_EX_FORMAT_SESSION 0x01 #define CDROM_READ_TOC_EX_FORMAT_FULL_TOC 0x02 #define CDROM_READ_TOC_EX_FORMAT_PMA 0x03 #define CDROM_READ_TOC_EX_FORMAT_ATIP 0x04 #define CDROM_READ_TOC_EX_FORMAT_CDTEXT 0x05 #define IOCTL_CDROM_BASE FILE_DEVICE_CD_ROM #define IOCTL_CDROM_READ_TOC_EX CTL_CODE(IOCTL_CDROM_BASE, 0x0015, METHOD_BUFFERED, FILE_READ_ACCESS) typedef struct _CDROM_READ_TOC_EX { UCHAR Format : 4; UCHAR Reserved1 : 3; // future expansion UCHAR Msf : 1; UCHAR SessionTrack; UCHAR Reserved2; // future expansion UCHAR Reserved3; // future expansion } CDROM_READ_TOC_EX, *PCDROM_READ_TOC_EX; typedef struct _TRACK_DATA { UCHAR Reserved; UCHAR Control : 4; UCHAR Adr : 4; UCHAR TrackNumber; UCHAR Reserved1; UCHAR Address[4]; } TRACK_DATA, *PTRACK_DATA; typedef struct _CDROM_TOC_SESSION_DATA { // Header UCHAR Length[2]; // add two bytes for this field UCHAR FirstCompleteSession; UCHAR LastCompleteSession; // One track, representing the first track // of the last finished session TRACK_DATA TrackData[1]; } CDROM_TOC_SESSION_DATA, *PCDROM_TOC_SESSION_DATA; // End READ_TOC_EX structure(s) and #defines #else // all others (Irix, Tru64) #include #include #include #define BX_CD_FRAMESIZE 2048 #define CD_FRAMESIZE 2048 #endif #ifdef OS_darwin static kern_return_t FindEjectableCDMedia( io_iterator_t *mediaIterator, mach_port_t *masterPort ) { kern_return_t kernResult; CFMutableDictionaryRef classesToMatch; kernResult = IOMasterPort( bootstrap_port, masterPort ); if ( kernResult != KERN_SUCCESS ) { fprintf ( stderr, "IOMasterPort returned %d\n", kernResult ); return kernResult; } // CD media are instances of class kIOCDMediaClass. classesToMatch = IOServiceMatching( kIOCDMediaClass ); if ( classesToMatch == NULL ) fprintf ( stderr, "IOServiceMatching returned a NULL dictionary.\n" ); else { // Each IOMedia object has a property with key kIOMediaEjectableKey // which is true if the media is indeed ejectable. So add property // to CFDictionary for matching. CFDictionarySetValue( classesToMatch, CFSTR( kIOMediaEjectableKey ), kCFBooleanTrue ); } kernResult = IOServiceGetMatchingServices( *masterPort, classesToMatch, mediaIterator ); if ( (kernResult != KERN_SUCCESS) || (!*mediaIterator) ) fprintf( stderr, "No ejectable CD media found.\n kernResult = %d\n", kernResult ); return kernResult; } static kern_return_t GetDeviceFilePath( io_iterator_t mediaIterator, char *deviceFilePath, CFIndex maxPathSize ) { io_object_t nextMedia; kern_return_t kernResult = KERN_FAILURE; nextMedia = IOIteratorNext( mediaIterator ); if ( !nextMedia ) { *deviceFilePath = '\0'; } else { CFTypeRef deviceFilePathAsCFString; deviceFilePathAsCFString = IORegistryEntryCreateCFProperty( nextMedia, CFSTR( kIOBSDNameKey ), kCFAllocatorDefault, 0 ); *deviceFilePath = '\0'; if ( deviceFilePathAsCFString ) { size_t devPathLength = strlen( _PATH_DEV ); strcpy( deviceFilePath, _PATH_DEV ); if ( CFStringGetCString( (const __CFString *) deviceFilePathAsCFString, deviceFilePath + devPathLength, maxPathSize - devPathLength, kCFStringEncodingASCII ) ) { // fprintf( stderr, "BSD path: %s\n", deviceFilePath ); kernResult = KERN_SUCCESS; } CFRelease( deviceFilePathAsCFString ); } } IOObjectRelease( nextMedia ); return kernResult; } static struct _CDTOC * ReadTOC( const char * devpath ) { struct _CDTOC * toc_p = NULL; io_iterator_t iterator = 0; io_registry_entry_t service = 0; CFDictionaryRef properties = 0; CFDataRef data = 0; mach_port_t port = 0; char * devname; if (( devname = strrchr( devpath, '/' )) != NULL ) { ++devname; } else { devname = (char *) devpath; } if ( IOMasterPort(bootstrap_port, &port ) != KERN_SUCCESS ) { fprintf( stderr, "IOMasterPort failed\n" ); goto Exit; } if ( IOServiceGetMatchingServices( port, IOBSDNameMatching( port, 0, devname ), &iterator ) != KERN_SUCCESS ) { fprintf( stderr, "IOServiceGetMatchingServices failed\n" ); goto Exit; } service = IOIteratorNext( iterator ); IOObjectRelease( iterator ); iterator = 0; while ( service && !IOObjectConformsTo( service, "IOCDMedia" )) { if ( IORegistryEntryGetParentIterator( service, kIOServicePlane, &iterator ) != KERN_SUCCESS ) { fprintf( stderr, "IORegistryEntryGetParentIterator failed\n" ); goto Exit; } IOObjectRelease( service ); service = IOIteratorNext( iterator ); IOObjectRelease( iterator ); } if ( !service ) { fprintf( stderr, "CD media not found\n" ); goto Exit; } if ( IORegistryEntryCreateCFProperties( service, (__CFDictionary **) &properties, kCFAllocatorDefault, kNilOptions ) != KERN_SUCCESS ) { fprintf( stderr, "IORegistryEntryGetParentIterator failed\n" ); goto Exit; } data = (CFDataRef) CFDictionaryGetValue( properties, CFSTR(kIOCDMediaTOCKey) ); if ( data == NULL ) { fprintf( stderr, "CFDictionaryGetValue failed\n" ); goto Exit; } else { CFRange range; CFIndex buflen; buflen = CFDataGetLength( data ) + 1; range = CFRangeMake( 0, buflen ); toc_p = (struct _CDTOC *) malloc( buflen ); if ( toc_p == NULL ) { fprintf( stderr, "Out of memory\n" ); goto Exit; } else { CFDataGetBytes( data, range, (unsigned char *) toc_p ); } /* fprintf( stderr, "Table of contents\n length %d first %d last %d\n", toc_p->length, toc_p->first_session, toc_p->last_session ); */ CFRelease( properties ); } Exit: if ( service ) { IOObjectRelease( service ); } return toc_p; } #endif #ifdef _WIN32 bool ReadCDSector(unsigned int hid, unsigned int tid, unsigned int lun, unsigned long frame, unsigned char *buf, int bufsize) { HANDLE hEventSRB; SRB_ExecSCSICmd srb; DWORD dwStatus; hEventSRB = CreateEvent(NULL, TRUE, FALSE, NULL); memset(&srb,0,sizeof(SRB_ExecSCSICmd)); srb.SRB_Cmd = SC_EXEC_SCSI_CMD; srb.SRB_HaId = hid; srb.SRB_Target = tid; srb.SRB_Lun = lun; srb.SRB_Flags = SRB_DIR_IN | SRB_EVENT_NOTIFY; srb.SRB_SenseLen = SENSE_LEN; srb.SRB_PostProc = hEventSRB; srb.SRB_BufPointer = buf; srb.SRB_BufLen = bufsize; srb.SRB_CDBLen = 10; srb.CDBByte[0] = SCSI_READ10; srb.CDBByte[2] = (unsigned char) (frame>>24); srb.CDBByte[3] = (unsigned char) (frame>>16); srb.CDBByte[4] = (unsigned char) (frame>>8); srb.CDBByte[5] = (unsigned char) (frame); srb.CDBByte[7] = 0; srb.CDBByte[8] = 1; /* read 1 frames */ ResetEvent(hEventSRB); dwStatus = SendASPI32Command((SRB *)&srb); if(dwStatus == SS_PENDING) { WaitForSingleObject(hEventSRB, 100000); } CloseHandle(hEventSRB); return (srb.SRB_TargStat == STATUS_GOOD); } int GetCDCapacity(unsigned int hid, unsigned int tid, unsigned int lun) { HANDLE hEventSRB; SRB_ExecSCSICmd srb; DWORD dwStatus; unsigned char buf[8]; hEventSRB = CreateEvent(NULL, TRUE, FALSE, NULL); memset(&buf, 0, sizeof(buf)); memset(&srb,0,sizeof(SRB_ExecSCSICmd)); srb.SRB_Cmd = SC_EXEC_SCSI_CMD; srb.SRB_HaId = hid; srb.SRB_Target = tid; srb.SRB_Lun = lun; srb.SRB_Flags = SRB_DIR_IN | SRB_EVENT_NOTIFY; srb.SRB_SenseLen = SENSE_LEN; srb.SRB_PostProc = hEventSRB; srb.SRB_BufPointer = (unsigned char *)buf; srb.SRB_BufLen = 8; srb.SRB_CDBLen = 10; srb.CDBByte[0] = SCSI_READCDCAP; srb.CDBByte[2] = 0; srb.CDBByte[3] = 0; srb.CDBByte[4] = 0; srb.CDBByte[5] = 0; srb.CDBByte[8] = 0; ResetEvent(hEventSRB); dwStatus = SendASPI32Command((SRB *)&srb); if(dwStatus == SS_PENDING) { WaitForSingleObject(hEventSRB, 100000); } CloseHandle(hEventSRB); return ((buf[0] << 24) + (buf[1] << 16) + (buf[2] << 8) + buf[3]) * ((buf[4] << 24) + (buf[5] << 16) + (buf[6] << 8) + buf[7]); } #endif cdrom_interface::cdrom_interface(char *dev) { fd = -1; // File descriptor not yet allocated if ( dev == NULL ) path = NULL; else { path = strdup(dev); } using_file=0; #ifdef _WIN32 bUseASPI = FALSE; osinfo.dwOSVersionInfoSize = sizeof(osinfo); GetVersionEx(&osinfo); isWindowsXP = (osinfo.dwMajorVersion >= 5) && (osinfo.dwMinorVersion >= 1); #endif } void cdrom_interface::init(void) { } cdrom_interface::~cdrom_interface(void) { #ifdef _WIN32 #else if (fd >= 0) close(fd); #endif if (path) free(path); } bool cdrom_interface::insert_cdrom(char *dev) { unsigned char buffer[BX_CD_FRAMESIZE]; ssize_t ret; // Load CD-ROM. Returns false if CD is not ready. if (dev != NULL) path = strdup(dev); #ifdef _WIN32 char drive[256]; if ( (path[1] == ':') && (strlen(path) == 2) ) { if(osinfo.dwPlatformId == VER_PLATFORM_WIN32_NT) { // Use direct device access under windows NT/2k/XP // With all the backslashes it's hard to see, but to open D: drive // the name would be: \\.\d: sprintf(drive, "\\\\.\\%s", path); D(bug("Using direct access for cdrom.")); // This trick only works for Win2k and WinNT, so warn the user of that. } else { D(bug("Using ASPI for cdrom. Drive letters are unused yet.")); bUseASPI = TRUE; } } else { strcpy(drive,path); using_file = 1; D(bug("Opening image file as a cd")); } if(bUseASPI) { DWORD d; UINT cdr, cnt, max; UINT i, j, k; SRB_HAInquiry sh; SRB_GDEVBlock sd; if (!hASPI) { hASPI = LoadLibrary("WNASPI32.DLL"); if (hASPI) { SendASPI32Command = (DWORD(*)(LPSRB))GetProcAddress( hASPI, "SendASPI32Command" ); GetASPI32DLLVersion = (DWORD(*)(void))GetProcAddress( hASPI, "GetASPI32DLLVersion" ); GetASPI32SupportInfo = (DWORD(*)(void))GetProcAddress( hASPI, "GetASPI32SupportInfo" ); d = GetASPI32DLLVersion(); } else { panicbug("Could not load ASPI drivers, so cdrom access will fail"); return false; } } cdr = 0; bHaveDev = FALSE; d = GetASPI32SupportInfo(); cnt = LOBYTE(LOWORD(d)); for(i = 0; i < cnt; i++) { memset(&sh, 0, sizeof(sh)); sh.SRB_Cmd = SC_HA_INQUIRY; sh.SRB_HaId = i; SendASPI32Command((LPSRB)&sh); if(sh.SRB_Status != SS_COMP) continue; max = (int)sh.HA_Unique[3]; for(j = 0; j < max; j++) { for(k = 0; k < 8; k++) { memset(&sd, 0, sizeof(sd)); sd.SRB_Cmd = SC_GET_DEV_TYPE; sd.SRB_HaId = i; sd.SRB_Target = j; sd.SRB_Lun = k; SendASPI32Command((LPSRB)&sd); if(sd.SRB_Status == SS_COMP) { if(sd.SRB_DeviceType == DTYPE_CDROM) { cdr++; if(cdr > cdromCount) { hid = i; tid = j; lun = k; cdromCount++; bHaveDev = TRUE; } } } if(bHaveDev) break; } if(bHaveDev) break; } } fd=1; } else { hFile=CreateFile((char *)&drive, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_RANDOM_ACCESS, NULL); if (hFile !=(void *)0xFFFFFFFF) fd=1; if (!using_file) { DWORD lpBytesReturned; DeviceIoControl(hFile, IOCTL_STORAGE_LOAD_MEDIA, NULL, 0, NULL, 0, &lpBytesReturned, NULL); } } #elif defined(OS_darwin) if(strcmp(path, "drive") == 0) { mach_port_t masterPort = 0; io_iterator_t mediaIterator; kern_return_t kernResult; kernResult = FindEjectableCDMedia( &mediaIterator, &masterPort ); if ( kernResult != KERN_SUCCESS ) { return false; } kernResult = GetDeviceFilePath( mediaIterator, CDDevicePath, sizeof( CDDevicePath ) ); if ( kernResult != KERN_SUCCESS ) { return false; } // Here a cdrom was found so see if we can read from it. // At this point a failure will result in panic. if ( strlen( CDDevicePath ) ) { fd = open(CDDevicePath, O_RDONLY); } } else { fd = open(path, O_RDONLY); } #else // all platforms except win32 fd = open(path, O_RDONLY #ifdef O_BINARY | O_BINARY #endif ); #endif if (fd < 0) { bug("open cd failed for %s: %s", path, strerror(errno)); return(false); } // I just see if I can read a sector to verify that a // CD is in the drive and readable. #ifdef _WIN32 if(bUseASPI) { return ReadCDSector(hid, tid, lun, 0, buffer, BX_CD_FRAMESIZE); } else { if (!ReadFile(hFile, (void *) buffer, BX_CD_FRAMESIZE, (unsigned long *) &ret, NULL)) { CloseHandle(hFile); fd = -1; D(bug( "insert_cdrom: read returns error." )); return(false); } } #else // do fstat to determine if it's a file or a device, then set using_file. struct stat stat_buf; ret = fstat (fd, &stat_buf); if (ret) { panicbug("fstat cdrom file returned error: %s", strerror (errno)); } if (S_ISREG (stat_buf.st_mode)) { using_file = 1; } else { using_file = 0; } ret = read(fd, (char*) &buffer, BX_CD_FRAMESIZE); if (ret < 0) { close(fd); fd = -1; D(bug( "insert_cdrom: read returns error: %s", strerror (errno) )); return(false); } #endif return(true); } int cdrom_interface::start_cdrom() { // Spin up the cdrom drive. if (fd >= 0) { #if defined(OS_netbsd) if (ioctl (fd, CDIOCSTART) < 0) D(bug( "start_cdrom: start returns error: %s", strerror (errno) )); return(true); #else return(false); // OS not supported yet, return false always. #endif } return(false); } void cdrom_interface::eject_cdrom() { // Logically eject the CD. I suppose we could stick in // some ioctl() calls to really eject the CD as well. if (fd >= 0) { #if (defined(OS_openbsd) || defined(OS_freebsd) || defined(OS_netbsd)) (void) ioctl (fd, CDIOCALLOW); if (ioctl (fd, CDIOCEJECT) < 0) { D(bug( "eject_cdrom: eject returns error." )); } #endif #ifdef _WIN32 if (using_file == 0) { if(bUseASPI) { } else { DWORD lpBytesReturned; DeviceIoControl(hFile, IOCTL_STORAGE_EJECT_MEDIA, NULL, 0, NULL, 0, &lpBytesReturned, NULL); } } #else /* _WIN32 */ #ifdef OS_linux if (!using_file) ioctl (fd, CDROMEJECT, NULL); #endif close(fd); #endif /* _WIN32 */ fd = -1; } } bool cdrom_interface::read_toc(uint8* buf, int* length, bool msf, int start_track, int format) { unsigned i; // Read CD TOC. Returns false if start track is out of bounds. if (fd < 0) { panicbug("cdrom: read_toc: file not open."); return false; } #if defined(_WIN32) if (!isWindowsXP || using_file) { // This is a hack and works okay if there's one rom track only #else if (using_file) { #endif uint32 blocks; int len = 4; switch (format) { case 0: // From atapi specs : start track can be 0-63, AA if ((start_track > 1) && (start_track != 0xaa)) return false; buf[2] = 1; buf[3] = 1; if (start_track <= 1) { buf[len++] = 0; // Reserved buf[len++] = 0x14; // ADR, control buf[len++] = 1; // Track number buf[len++] = 0; // Reserved // Start address if (msf) { buf[len++] = 0; // reserved buf[len++] = 0; // minute buf[len++] = 2; // second buf[len++] = 0; // frame } else { buf[len++] = 0; buf[len++] = 0; buf[len++] = 0; buf[len++] = 16; // logical sector 0 } } // Lead out track buf[len++] = 0; // Reserved buf[len++] = 0x16; // ADR, control buf[len++] = 0xaa; // Track number buf[len++] = 0; // Reserved blocks = capacity(); // Start address if (msf) { buf[len++] = 0; // reserved buf[len++] = (uint8)(((blocks + 150) / 75) / 60); // minute buf[len++] = (uint8)(((blocks + 150) / 75) % 60); // second buf[len++] = (uint8)((blocks + 150) % 75); // frame; } else { buf[len++] = (blocks >> 24) & 0xff; buf[len++] = (blocks >> 16) & 0xff; buf[len++] = (blocks >> 8) & 0xff; buf[len++] = (blocks >> 0) & 0xff; } buf[0] = ((len-2) >> 8) & 0xff; buf[1] = (len-2) & 0xff; break; case 1: // multi session stuff - emulate a single session only buf[0] = 0; buf[1] = 0x0a; buf[2] = 1; buf[3] = 1; for (i = 0; i < 8; i++) buf[4+i] = 0; len = 12; break; default: panicbug("cdrom: read_toc: unknown format"); return false; } *length = len; return true; } // all these implementations below are the platform-dependent code required // to read the TOC from a physical cdrom. #ifdef _WIN32 if(isWindowsXP) { // This only works with WinXP CDROM_READ_TOC_EX input; memset(&input, 0, sizeof(input)); input.Format = format; input.Msf = msf; input.SessionTrack = start_track; // We have to allocate a chunk of memory to make sure it is aligned on a sector base. UCHAR *data = (UCHAR *) VirtualAlloc(NULL, 2048*2, MEM_COMMIT|MEM_RESERVE, PAGE_READWRITE); unsigned long iBytesReturned; DeviceIoControl(hFile, IOCTL_CDROM_READ_TOC_EX, &input, sizeof(input), data, 804, &iBytesReturned, NULL); // now copy it to the users buffer and free our buffer memcpy(buf, data, iBytesReturned); VirtualFree(data, 0, MEM_RELEASE); *length = iBytesReturned; return true; } return false; #elif (defined(OS_linux) || defined(OS_solaris)) { struct cdrom_tochdr tochdr; if (ioctl(fd, CDROMREADTOCHDR, &tochdr)) panicbug("cdrom: read_toc: READTOCHDR failed."); if ((start_track > tochdr.cdth_trk1) && (start_track != 0xaa)) return false; buf[2] = tochdr.cdth_trk0; buf[3] = tochdr.cdth_trk1; if (start_track < tochdr.cdth_trk0) start_track = tochdr.cdth_trk0; int len = 4; for (int i = start_track; i <= tochdr.cdth_trk1; i++) { struct cdrom_tocentry tocentry; tocentry.cdte_format = (msf) ? CDROM_MSF : CDROM_LBA; tocentry.cdte_track = i; if (ioctl(fd, CDROMREADTOCENTRY, &tocentry)) panicbug("cdrom: read_toc: READTOCENTRY failed."); buf[len++] = 0; // Reserved buf[len++] = (tocentry.cdte_adr << 4) | tocentry.cdte_ctrl ; // ADR, control buf[len++] = i; // Track number buf[len++] = 0; // Reserved // Start address if (msf) { buf[len++] = 0; // reserved buf[len++] = tocentry.cdte_addr.msf.minute; buf[len++] = tocentry.cdte_addr.msf.second; buf[len++] = tocentry.cdte_addr.msf.frame; } else { buf[len++] = (((unsigned)tocentry.cdte_addr.lba) >> 24) & 0xff; buf[len++] = (((unsigned)tocentry.cdte_addr.lba) >> 16) & 0xff; buf[len++] = (((unsigned)tocentry.cdte_addr.lba) >> 8) & 0xff; buf[len++] = (((unsigned)tocentry.cdte_addr.lba) >> 0) & 0xff; } } // Lead out track struct cdrom_tocentry tocentry; tocentry.cdte_format = (msf) ? CDROM_MSF : CDROM_LBA; #ifdef CDROM_LEADOUT tocentry.cdte_track = CDROM_LEADOUT; #else tocentry.cdte_track = 0xaa; #endif if (ioctl(fd, CDROMREADTOCENTRY, &tocentry)) panicbug("cdrom: read_toc: READTOCENTRY lead-out failed."); buf[len++] = 0; // Reserved buf[len++] = (tocentry.cdte_adr << 4) | tocentry.cdte_ctrl ; // ADR, control buf[len++] = 0xaa; // Track number buf[len++] = 0; // Reserved // Start address if (msf) { buf[len++] = 0; // reserved buf[len++] = tocentry.cdte_addr.msf.minute; buf[len++] = tocentry.cdte_addr.msf.second; buf[len++] = tocentry.cdte_addr.msf.frame; } else { buf[len++] = (((unsigned)tocentry.cdte_addr.lba) >> 24) & 0xff; buf[len++] = (((unsigned)tocentry.cdte_addr.lba) >> 16) & 0xff; buf[len++] = (((unsigned)tocentry.cdte_addr.lba) >> 8) & 0xff; buf[len++] = (((unsigned)tocentry.cdte_addr.lba) >> 0) & 0xff; } buf[0] = ((len-2) >> 8) & 0xff; buf[1] = (len-2) & 0xff; *length = len; return true; } #elif (defined(OS_netbsd) || defined(OS_openbsd) || defined(OS_freebsd)) { struct ioc_toc_header h; struct ioc_read_toc_entry t; if (ioctl (fd, CDIOREADTOCHEADER, &h) < 0) panicbug("cdrom: read_toc: READTOCHDR failed."); if ((start_track > h.ending_track) && (start_track != 0xaa)) return false; buf[2] = h.starting_track; buf[3] = h.ending_track; if (start_track < h.starting_track) start_track = h.starting_track; int len = 4; for (int i = start_track; i <= h.ending_track; i++) { struct cd_toc_entry tocentry; t.address_format = (msf) ? CD_MSF_FORMAT : CD_LBA_FORMAT; t.starting_track = i; t.data_len = sizeof(tocentry); t.data = &tocentry; if (ioctl (fd, CDIOREADTOCENTRYS, &t) < 0) panicbug("cdrom: read_toc: READTOCENTRY failed."); buf[len++] = 0; // Reserved buf[len++] = (tocentry.addr_type << 4) | tocentry.control ; // ADR, control buf[len++] = i; // Track number buf[len++] = 0; // Reserved // Start address if (msf) { buf[len++] = 0; // reserved buf[len++] = tocentry.addr.msf.minute; buf[len++] = tocentry.addr.msf.second; buf[len++] = tocentry.addr.msf.frame; } else { buf[len++] = (((unsigned)tocentry.addr.lba) >> 24) & 0xff; buf[len++] = (((unsigned)tocentry.addr.lba) >> 16) & 0xff; buf[len++] = (((unsigned)tocentry.addr.lba) >> 8) & 0xff; buf[len++] = (((unsigned)tocentry.addr.lba) >> 0) & 0xff; } } // Lead out track struct cd_toc_entry tocentry; t.address_format = (msf) ? CD_MSF_FORMAT : CD_LBA_FORMAT; t.starting_track = 0xaa; t.data_len = sizeof(tocentry); t.data = &tocentry; if (ioctl (fd, CDIOREADTOCENTRYS, &t) < 0) panicbug("cdrom: read_toc: READTOCENTRY lead-out failed."); buf[len++] = 0; // Reserved buf[len++] = (tocentry.addr_type << 4) | tocentry.control ; // ADR, control buf[len++] = 0xaa; // Track number buf[len++] = 0; // Reserved // Start address if (msf) { buf[len++] = 0; // reserved buf[len++] = tocentry.addr.msf.minute; buf[len++] = tocentry.addr.msf.second; buf[len++] = tocentry.addr.msf.frame; } else { buf[len++] = (((unsigned)tocentry.addr.lba) >> 24) & 0xff; buf[len++] = (((unsigned)tocentry.addr.lba) >> 16) & 0xff; buf[len++] = (((unsigned)tocentry.addr.lba) >> 8) & 0xff; buf[len++] = (((unsigned)tocentry.addr.lba) >> 0) & 0xff; } buf[0] = ((len-2) >> 8) & 0xff; buf[1] = (len-2) & 0xff; *length = len; return true; } #elif defined(OS_darwin) // Read CD TOC. Returns false if start track is out of bounds. { struct _CDTOC * toc = ReadTOC( CDDevicePath ); if ((start_track > toc->last_session) && (start_track != 0xaa)) return false; buf[2] = toc->first_session; buf[3] = toc->last_session; if (start_track < toc->first_session) start_track = toc->first_session; int len = 4; for (int i = start_track; i <= toc->last_session; i++) { buf[len++] = 0; // Reserved buf[len++] = toc->trackdesc[i].ctrl_adr ; // ADR, control buf[len++] = i; // Track number buf[len++] = 0; // Reserved // Start address if (msf) { buf[len++] = 0; // reserved buf[len++] = toc->trackdesc[i].address.minute; buf[len++] = toc->trackdesc[i].address.second; buf[len++] = toc->trackdesc[i].address.frame; } else { unsigned lba = (unsigned)(MSF_TO_LBA(toc->trackdesc[i].address)); buf[len++] = (lba >> 24) & 0xff; buf[len++] = (lba >> 16) & 0xff; buf[len++] = (lba >> 8) & 0xff; buf[len++] = (lba >> 0) & 0xff; } } // Lead out track buf[len++] = 0; // Reserved buf[len++] = 0x16; // ADR, control buf[len++] = 0xaa; // Track number buf[len++] = 0; // Reserved uint32 blocks = capacity(); // Start address if (msf) { buf[len++] = 0; // reserved buf[len++] = (uint8)(((blocks + 150) / 75) / 60); // minute buf[len++] = (uint8)(((blocks + 150) / 75) % 60); // second buf[len++] = (uint8)((blocks + 150) % 75); // frame; } else { buf[len++] = (blocks >> 24) & 0xff; buf[len++] = (blocks >> 16) & 0xff; buf[len++] = (blocks >> 8) & 0xff; buf[len++] = (blocks >> 0) & 0xff; } buf[0] = ((len-2) >> 8) & 0xff; buf[1] = (len-2) & 0xff; *length = len; return true; } #else bug("read_toc: your OS is not supported yet."); return false; // OS not supported yet, return false always. #endif } uint32 cdrom_interface::capacity() { // Return CD-ROM capacity. I believe you want to return // the number of blocks of capacity the actual media has. #if !defined(_WIN32) // win32 has its own way of doing this if (using_file) { // return length of the image file struct stat stat_buf; int ret = fstat (fd, &stat_buf); if (ret) { panicbug("fstat on cdrom image returned err: %s", strerror(errno)); } if ((stat_buf.st_size % 2048) != 0) { bug("expected cdrom image to be a multiple of 2048 bytes"); } return stat_buf.st_size / 2048; } #endif #ifdef OS_beos return GetNumDeviceBlocks(fd, BX_CD_FRAMESIZE); #elif defined(OS_solaris) { struct stat buf/* = {0}*/; if (fd < 0) { panicbug("cdrom: capacity: file not open."); } if( fstat(fd, &buf) != 0 ) panicbug("cdrom: capacity: stat() failed."); return(buf.st_size); } #elif (defined(OS_netbsd) || defined(OS_openbsd)) { // We just read the disklabel, imagine that... struct disklabel lp; if (fd < 0) panicbug("cdrom: capacity: file not open."); if (ioctl(fd, DIOCGDINFO, &lp) < 0) panicbug("cdrom: ioctl(DIOCGDINFO) failed"); D(bug( "capacity: %u", lp.d_secperunit )); return(lp.d_secperunit); } #elif defined(OS_linux) { // Read the TOC to get the data size, since BLKGETSIZE doesn't work on // non-ATAPI drives. This is based on Keith Jones code below. // 21 June 2001 int i, dtrk_lba, num_sectors; struct cdrom_tochdr td; struct cdrom_tocentry te; if (fd < 0) panicbug("cdrom: capacity: file not open."); if (ioctl(fd, CDROMREADTOCHDR, &td) < 0) panicbug("cdrom: ioctl(CDROMREADTOCHDR) failed"); num_sectors = -1; dtrk_lba = -1; for (i = td.cdth_trk0; i <= td.cdth_trk1; i++) { te.cdte_track = i; te.cdte_format = CDROM_LBA; if (ioctl(fd, CDROMREADTOCENTRY, &te) < 0) panicbug("cdrom: ioctl(CDROMREADTOCENTRY) failed"); if (dtrk_lba != -1) { num_sectors = te.cdte_addr.lba - dtrk_lba; break; } if (te.cdte_ctrl & CDROM_DATA_TRACK) { dtrk_lba = te.cdte_addr.lba; } } if (num_sectors < 0) { if (dtrk_lba != -1) { te.cdte_track = CDROM_LEADOUT; te.cdte_format = CDROM_LBA; if (ioctl(fd, CDROMREADTOCENTRY, &te) < 0) panicbug("cdrom: ioctl(CDROMREADTOCENTRY) failed"); num_sectors = te.cdte_addr.lba - dtrk_lba; } else panicbug("cdrom: no data track found"); } return(num_sectors); } #elif defined(OS_freebsd) { // Read the TOC to get the size of the data track. // Keith Jones , 16 January 2000 #define MAX_TRACKS 100 int i, num_tracks, num_sectors; struct ioc_toc_header td; struct ioc_read_toc_entry rte; struct cd_toc_entry toc_buffer[MAX_TRACKS + 1]; if (fd < 0) panicbug("cdrom: capacity: file not open."); if (ioctl(fd, CDIOREADTOCHEADER, &td) < 0) panicbug("cdrom: ioctl(CDIOREADTOCHEADER) failed"); num_tracks = (td.ending_track - td.starting_track) + 1; if (num_tracks > MAX_TRACKS) panicbug("cdrom: TOC is too large"); rte.address_format = CD_LBA_FORMAT; rte.starting_track = td.starting_track; rte.data_len = (num_tracks + 1) * sizeof(struct cd_toc_entry); rte.data = toc_buffer; if (ioctl(fd, CDIOREADTOCENTRYS, &rte) < 0) panicbug("cdrom: ioctl(CDIOREADTOCENTRYS) failed"); num_sectors = -1; for (i = 0; i < num_tracks; i++) { if (rte.data[i].control & 4) { /* data track */ num_sectors = ntohl(rte.data[i + 1].addr.lba) - ntohl(rte.data[i].addr.lba); break; } } if (num_sectors < 0) panicbug("cdrom: no data track found"); return(num_sectors); } #elif defined(_WIN32) { if(bUseASPI) { return (GetCDCapacity(hid, tid, lun) / 2352); } else if(using_file) { ULARGE_INTEGER FileSize; FileSize.LowPart = GetFileSize(hFile, &FileSize.HighPart); return (FileSize.QuadPart / 2048); } else { /* direct device access */ DWORD SectorsPerCluster; DWORD TotalNumOfClusters; GetDiskFreeSpace( path, &SectorsPerCluster, NULL, NULL, &TotalNumOfClusters); return (TotalNumOfClusters * SectorsPerCluster); } } #elif defined(OS_darwin) // Find the size of the first data track on the cd. This has produced // the same results as the linux version on every cd I have tried, about // 5. The differences here seem to be that the entries in the TOC when // retrieved from the IOKit interface appear in a reversed order when // compared with the linux READTOCENTRY ioctl. { // Return CD-ROM capacity. I believe you want to return // the number of bytes of capacity the actual media has. D(bug( "Capacity" )); struct _CDTOC * toc = ReadTOC( CDDevicePath ); if ( toc == NULL ) { panicbug( "capacity: Failed to read toc" ); } size_t toc_entries = ( toc->length - 2 ) / sizeof( struct _CDTOC_Desc ); D(bug( "reading %d toc entries\n", toc_entries )); int start_sector = -1; int data_track = -1; // Iterate through the list backward. Pick the first data track and // get the address of the immediately previous (or following depending // on how you look at it). The difference in the sector numbers // is returned as the sized of the data track. for ( int i=toc_entries - 1; i>=0; i-- ) { D(bug( "session %d ctl_adr %d tno %d point %d lba %d z %d p lba %d\n", (int)toc->trackdesc[i].session, (int)toc->trackdesc[i].ctrl_adr, (int)toc->trackdesc[i].tno, (int)toc->trackdesc[i].point, MSF_TO_LBA( toc->trackdesc[i].address ), (int)toc->trackdesc[i].zero, MSF_TO_LBA(toc->trackdesc[i].p ))); if ( start_sector != -1 ) { start_sector = MSF_TO_LBA(toc->trackdesc[i].p) - start_sector; break; } if ((toc->trackdesc[i].ctrl_adr >> 4) != 1) continue; if ( toc->trackdesc[i].ctrl_adr & 0x04 ) { data_track = toc->trackdesc[i].point; start_sector = MSF_TO_LBA(toc->trackdesc[i].p); } } free( toc ); if ( start_sector == -1 ) { start_sector = 0; } D(bug("first data track %d data size is %d", data_track, start_sector)); return start_sector; } #else panicbug( "capacity: your OS is not supported yet." ); return(0); #endif } void cdrom_interface::read_block(uint8* buf, int lba) { // Read a single block from the CD #ifdef _WIN32 LARGE_INTEGER pos; #else off_t pos; #endif ssize_t n; #ifdef _WIN32 if(bUseASPI) { ReadCDSector(hid, tid, lun, lba, buf, BX_CD_FRAMESIZE); n = BX_CD_FRAMESIZE; } else { pos.QuadPart = (LONGLONG)lba*BX_CD_FRAMESIZE; pos.LowPart = SetFilePointer(hFile, pos.LowPart, &pos.HighPart, SEEK_SET); if ((pos.LowPart == 0xffffffff) && (GetLastError() != NO_ERROR)) { panicbug("cdrom: read_block: SetFilePointer returned error."); } ReadFile(hFile, (void *) buf, BX_CD_FRAMESIZE, (unsigned long *) &n, NULL); } #elif defined(OS_darwin) #define CD_SEEK_DISTANCE kCDSectorSizeWhole if(using_file) { pos = lseek(fd, lba*BX_CD_FRAMESIZE, SEEK_SET); if (pos < 0) { panicbug("cdrom: read_block: lseek returned error."); } n = read(fd, buf, BX_CD_FRAMESIZE); } else { // This seek will leave us 16 bytes from the start of the data // hence the magic number. pos = lseek(fd, lba*CD_SEEK_DISTANCE + 16, SEEK_SET); if (pos < 0) { panicbug("cdrom: read_block: lseek returned error."); } n = read(fd, buf, CD_FRAMESIZE); } #else pos = lseek(fd, lba*BX_CD_FRAMESIZE, SEEK_SET); if (pos < 0) { panicbug("cdrom: read_block: lseek returned error."); } n = read(fd, (char*) buf, BX_CD_FRAMESIZE); #endif if (n != BX_CD_FRAMESIZE) { panicbug("cdrom: read_block: read returned %d", (int) n); } } #endif /* if SUPPORT_CDROM */ aranym-1.1.0/src/bootos_tos.cpp0000664000175000017500000001646113454637621014676 0ustar joyjoy/* ROM / OS loader, TOS ARAnyM (C) 2005-2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "aramd5.h" #include "bootos_tos.h" #include "romdiff.h" #include "aranym_exception.h" #include "emul_op.h" #define DEBUG 0 #include "debug.h" /* TOS ROM class */ TosBootOs::TosBootOs(void) ARANYM_THROWS(AranymException) { tos_patch(true); } void TosBootOs::reset(bool cold) ARANYM_THROWS(AranymException) { tos_patch(cold); } /*--- Private functions ---*/ void TosBootOs::tos_patch(bool cold) ARANYM_THROWS(AranymException) { if (strlen(bx_options.tos.tos_path) == 0) { throw AranymException("Path to TOS ROM image file undefined"); } load(bx_options.tos.tos_path); init(cold); // check if this is the correct 68040 aware TOS ROM version D(bug("Checking TOS version..")); static unsigned char const TOS404[16] = {0xe5,0xea,0x0f,0x21,0x6f,0xb4,0x46,0xf1,0xc4,0xa4,0xf4,0x76,0xbc,0x5f,0x03,0xd4}; MD5 md5; unsigned char loadedTOS[16]; md5.computeSum(ROMBaseHost, RealROMSize, loadedTOS); if (memcmp(loadedTOS, TOS404, 16) != 0) { throw AranymException("Wrong TOS version. You need the original TOS 4.04."); } // patch it for 68040 compatibility D(bug("Patching TOS 4.04 for 68040 compatibility..")); unsigned int ptr, i; for (i = 0; (ptr=tosdiff[i].start) > 0; i++) memcpy(&ROMBaseHost[ptr], tosdiff[i].patch, tosdiff[i].len); // patch cookies // _MCH ROMBaseHost[0x00416] = bx_options.tos.cookie_mch >> 24; ROMBaseHost[0x00417] = (bx_options.tos.cookie_mch >> 16) & 0xff; ROMBaseHost[0x00418] = (bx_options.tos.cookie_mch >> 8) & 0xff; ROMBaseHost[0x00419] = (bx_options.tos.cookie_mch) & 0xff; // _SND #if DSP_EMULATION ROMBaseHost[0x00437] = 0x0E; /* DSP, XBIOS, DMA8 */ #else ROMBaseHost[0x00437] = 0x06; /* XBIOS, DMA8 */ #endif if (FastRAMSize > 0) { int i; // patch to show FastRAM memory test i = 0x001CC; ROMBaseHost[i++] = 0x4E; ROMBaseHost[i++] = 0xF9; // JMP ROMBaseHost[i++] = 0x00; // Can't use JSR, stack pointer ROMBaseHost[i++] = 0xE7; // is not initialized yet. ROMBaseHost[i++] = 0xFF; ROMBaseHost[i++] = 0x00; // abs.addr = $E7FF00 i = 0x7FF00; uint32 ramtop = (FastRAMBase + FastRAMSize); ROMBaseHost[i++] = 0x21; ROMBaseHost[i++] = 0xFC; // MOVE.L #imm, abs.addr.w ROMBaseHost[i++] = ramtop >> 24; ROMBaseHost[i++] = ramtop >> 16; ROMBaseHost[i++] = ramtop >> 8; ROMBaseHost[i++] = ramtop; ROMBaseHost[i++] = 0x05; ROMBaseHost[i++] = 0xA4; // abs.addr.w = $5A4 - ramtop ROMBaseHost[i++] = 0x4E; ROMBaseHost[i++] = 0xF9; // JMP ROMBaseHost[i++] = 0x00; ROMBaseHost[i++] = 0xE0; ROMBaseHost[i++] = 0x01; ROMBaseHost[i++] = 0xD2; // abs.addr = $E001D2 // Patch to make FastRAM available to GEMDOS i = 0x0096E; ROMBaseHost[i++] = 0x4E; ROMBaseHost[i++] = 0xB9; // JSR ROMBaseHost[i++] = 0x00; ROMBaseHost[i++] = 0xE7; ROMBaseHost[i++] = 0xFF; ROMBaseHost[i++] = 0x0E; // abs.addr = $E7FF0E i = 0x7FF0E; // Declare FastRAM with Maddalt() ROMBaseHost[i++] = 0x2F; ROMBaseHost[i++] = 0x3C; // MOVE.L #imm, -(sp) ROMBaseHost[i++] = FastRAMSize >> 24; ROMBaseHost[i++] = FastRAMSize >> 16; ROMBaseHost[i++] = FastRAMSize >> 8; ROMBaseHost[i++] = FastRAMSize; ROMBaseHost[i++] = 0x2F; ROMBaseHost[i++] = 0x3C; // MOVE.L #imm, -(sp) ROMBaseHost[i++] = FastRAMBase >> 24; ROMBaseHost[i++] = FastRAMBase >> 16; ROMBaseHost[i++] = FastRAMBase >> 8; ROMBaseHost[i++] = FastRAMBase; ROMBaseHost[i++] = 0x3F; ROMBaseHost[i++] = 0x3C; // MOVE.W #imm, -(sp) ROMBaseHost[i++] = 0x00; ROMBaseHost[i++] = 0x14; // imm = $14 - Maddalt() ROMBaseHost[i++] = 0x4E; ROMBaseHost[i++] = 0x41; // TRAP #1 ROMBaseHost[i++] = 0x4F; ROMBaseHost[i++] = 0xEF; // LEA d16(sp), sp ROMBaseHost[i++] = 0x00; ROMBaseHost[i++] = 0x0A; // d16 = $A // Allocate 64k _FRB buffer ROMBaseHost[i++] = 0x42; ROMBaseHost[i++] = 0x67; // CLR.W -(sp) - ST-Ram only ROMBaseHost[i++] = 0x2F; ROMBaseHost[i++] = 0x3C; // MOVE.L #imm, -(sp) ROMBaseHost[i++] = 0x00; ROMBaseHost[i++] = 0x01; ROMBaseHost[i++] = 0x20; ROMBaseHost[i++] = 0x00; // imm = 64k + 8k ROMBaseHost[i++] = 0x3F; ROMBaseHost[i++] = 0x3C; // MOVE.W #imm, -(sp) ROMBaseHost[i++] = 0x00; ROMBaseHost[i++] = 0x44; // imm = $44 - Mxalloc() ROMBaseHost[i++] = 0x4E; ROMBaseHost[i++] = 0x41; // TRAP #1 ROMBaseHost[i++] = 0x50; ROMBaseHost[i++] = 0x4F; // ADDQ.W #8,sp ROMBaseHost[i++] = 0x06; ROMBaseHost[i++] = 0x80; // ADDI.L #imm, d0 ROMBaseHost[i++] = 0x00; ROMBaseHost[i++] = 0x00; ROMBaseHost[i++] = 0x1F; ROMBaseHost[i++] = 0xFF; // imm = 8k - 1 ROMBaseHost[i++] = 0x02; ROMBaseHost[i++] = 0x40; // ANDI.W #imm, d0 ROMBaseHost[i++] = 0xE0; ROMBaseHost[i++] = 0x00; // imm = $E000 - 8k alignment // Store _FRB cookie ROMBaseHost[i++] = 0x20; ROMBaseHost[i++] = 0x78; // MOVEA.L addr.w, a0 ROMBaseHost[i++] = 0x05; ROMBaseHost[i++] = 0xA0; // addr.w = 0x5A0 - cookie jar ROMBaseHost[i++] = 0x51; ROMBaseHost[i++] = 0x48; // SUBQ.W #8,a0 // .find_last_cookie: ROMBaseHost[i++] = 0x50; ROMBaseHost[i++] = 0x48; // ADDQ.W #8,a0 ROMBaseHost[i++] = 0x4A; ROMBaseHost[i++] = 0x90; // TST.L (a0) ROMBaseHost[i++] = 0x66; ROMBaseHost[i++] = 0xFA; // BNE.S .find_last_cookie ROMBaseHost[i++] = 0x20; ROMBaseHost[i++] = 0xFC; // MOVE.L #imm, (a0)+ ROMBaseHost[i++] = 0x5F; ROMBaseHost[i++] = 0x46; ROMBaseHost[i++] = 0x52; ROMBaseHost[i++] = 0x42; // imm = '_FRB' ROMBaseHost[i++] = 0x21; ROMBaseHost[i++] = 0x50; // MOVE.L (a0), 8(a0) ROMBaseHost[i++] = 0x00; ROMBaseHost[i++] = 0x08; // d16 = 8 - copy jar size ROMBaseHost[i++] = 0x20; ROMBaseHost[i++] = 0xC0; // MOVE.L d0,(a0)+ ROMBaseHost[i++] = 0x42; ROMBaseHost[i++] = 0x90; // CLR.L (a0) // Code overwritten by JSR ROMBaseHost[i++] = 0x70; ROMBaseHost[i++] = 0x03; // MOVEQ.L #3,d0 ROMBaseHost[i++] = 0x4E; ROMBaseHost[i++] = 0xB9; // JSR ROMBaseHost[i++] = 0x00; ROMBaseHost[i++] = 0xE0; ROMBaseHost[i++] = 0x0B; ROMBaseHost[i++] = 0xD2; // abs.addr = $E00BD2 ROMBaseHost[i++] = 0x4E; ROMBaseHost[i++] = 0x75; // RTS } // Xconout patch if (bx_options.tos.redirect_CON) { ROMBaseHost[0x8d44] = ROMBaseHost[0x8d50] = M68K_EMUL_OP_PUT_SCRAP >> 8; ROMBaseHost[0x8d45] = ROMBaseHost[0x8d51] = M68K_EMUL_OP_PUT_SCRAP & 0xff; ROMBaseHost[0x8d46] = ROMBaseHost[0x8d52] = 0x4e; // RTS ROMBaseHost[0x8d47] = ROMBaseHost[0x8d53] = 0x75; } else { ROMBaseHost[0x8d44] = 0xc2; ROMBaseHost[0x8d45] = 0x7c; ROMBaseHost[0x8d46] = 0x00; ROMBaseHost[0x8d47] = 0xff; ROMBaseHost[0x8d50] = 0x28; ROMBaseHost[0x8d51] = 0x79; ROMBaseHost[0x8d52] = 0x00; ROMBaseHost[0x8d53] = 0xe4; } infoprint("TOS 4.04 loading... [OK]"); } aranym-1.1.0/src/bootos_linux.cpp0000664000175000017500000005203413454637621015224 0ustar joyjoy/* ROM / OS loader, Linux/m68k ARAnyM (C) 2005-2008 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "bootos_linux.h" #include "aranym_exception.h" #include "emul_op.h" #define DEBUG 0 #include "debug.h" #include "SDL_compat.h" #ifdef ENABLE_LILO #ifdef HAVE_LIBZ #include #endif /* linux specific include files */ //#include #include /* Type for a 16-bit quantity. */ typedef uint16_t Elf32_Half; /* Types for signed and unsigned 32-bit quantities. */ typedef uint32_t Elf32_Word; typedef int32_t Elf32_Sword; /* Types for signed and unsigned 64-bit quantities. */ typedef uint64_t Elf32_Xword; typedef int64_t Elf32_Sxword; /* Type of addresses. */ typedef uint32_t Elf32_Addr; /* Type of file offsets. */ typedef uint32_t Elf32_Off; /* Type for section indices, which are 16-bit quantities. */ typedef uint16_t Elf32_Section; /* Type for version symbol information. */ typedef Elf32_Half Elf32_Versym; /* The ELF file header. This appears at the start of every ELF file. */ #define EI_NIDENT (16) typedef struct { unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */ Elf32_Half e_type; /* Object file type */ Elf32_Half e_machine; /* Architecture */ Elf32_Word e_version; /* Object file version */ Elf32_Addr e_entry; /* Entry point virtual address */ Elf32_Off e_phoff; /* Program header table file offset */ Elf32_Off e_shoff; /* Section header table file offset */ Elf32_Word e_flags; /* Processor-specific flags */ Elf32_Half e_ehsize; /* ELF header size in bytes */ Elf32_Half e_phentsize; /* Program header table entry size */ Elf32_Half e_phnum; /* Program header table entry count */ Elf32_Half e_shentsize; /* Section header table entry size */ Elf32_Half e_shnum; /* Section header table entry count */ Elf32_Half e_shstrndx; /* Section header string table index */ } Elf32_Ehdr; /* Program segment header. */ typedef struct { Elf32_Word p_type; /* Segment type */ Elf32_Off p_offset; /* Segment file offset */ Elf32_Addr p_vaddr; /* Segment virtual address */ Elf32_Addr p_paddr; /* Segment physical address */ Elf32_Word p_filesz; /* Segment size in file */ Elf32_Word p_memsz; /* Segment size in memory */ Elf32_Word p_flags; /* Segment flags */ Elf32_Word p_align; /* Segment alignment */ } Elf32_Phdr; #define EI_MAG0 0 /* File identification byte 0 index */ #define ELFMAG "\177ELF" #define SELFMAG 4 #define ET_EXEC 2 /* Executable file */ #define EM_68K 4 /* Motorola m68k family */ #define EV_CURRENT 1 /* Current version */ /* end of rip from elf.h */ /* #include */ struct bi_record { uint16 tag; /* tag ID */ uint16 size; /* size of record (in bytes) */ uint32 data[0]; /* data */ }; /* * Tag Definitions * * Machine independent tags start counting from 0x0000 * Machine dependent tags start counting from 0x8000 */ #define BI_LAST 0x0000 /* last record (sentinel) */ #define BI_MACHTYPE 0x0001 /* machine type (u_long) */ #define BI_CPUTYPE 0x0002 /* cpu type (u_long) */ #define BI_FPUTYPE 0x0003 /* fpu type (u_long) */ #define BI_MMUTYPE 0x0004 /* mmu type (u_long) */ #define BI_MEMCHUNK 0x0005 /* memory chunk address and size */ /* (struct mem_info) */ #define BI_RAMDISK 0x0006 /* ramdisk address and size */ /* (struct mem_info) */ #define BI_COMMAND_LINE 0x0007 /* kernel command line parameters */ /* (string) */ /* * Atari-specific tags */ #define BI_ATARI_MCH_COOKIE 0x8000 /* _MCH cookie from TOS (u_long) */ #define BI_ATARI_MCH_TYPE 0x8001 /* special machine type (u_long) */ /* mch_type values */ #define ATARI_MACH_AB40 3 /* Afterburner040 on Falcon */ /* #include */ /* * Linux/m68k Architectures */ #define MACH_ATARI 2 /* * CPU, FPU and MMU types * * Note: we may rely on the following equalities: * * CPU_68020 == MMU_68851 * CPU_68030 == MMU_68030 * CPU_68040 == FPU_68040 == MMU_68040 * CPU_68060 == FPU_68060 == MMU_68060 */ #define CPUB_68040 2 #define CPU_68040 (1< 0) { \ bi.memory[bi.num_memory].addr = SDL_SwapBE32(_start); \ bi.memory[bi.num_memory].size = SDL_SwapBE32(_size); \ bi.num_memory++; \ } \ } /*--- Structures ---*/ static union { struct bi_record record; unsigned char fake[MAX_BI_SIZE]; } bi_union; #endif /* Linux/m68k loader class */ LinuxBootOs::LinuxBootOs(void) ARANYM_THROWS(AranymException) { /* RESET + Linux/m68k boot */ ROMBaseHost[0x0000] = 0x4e; /* reset */ ROMBaseHost[0x0001] = 0x70; ROMBaseHost[0x0002] = 0x4e; /* jmp */ ROMBaseHost[0x0003] = 0xf9; if (!halt_on_reboot) { /* set up a minimal OS for successful Linux/m68k reboot */ ROMBaseHost[0x0030] = 0x46; /* move.w #$2700,sr */ ROMBaseHost[0x0031] = 0xfc; ROMBaseHost[0x0032] = 0x27; ROMBaseHost[0x0033] = 0x00; ROMBaseHost[0x0034] = 0x4e; /* reset */ ROMBaseHost[0x0035] = 0x70; ROMBaseHost[0x0036] = M68K_EMUL_RESET >> 8; ROMBaseHost[0x0037] = M68K_EMUL_RESET & 0xff; } else { /* code that shuts ARAnyM down when Linux/m68k tries to reboot */ ROMBaseHost[0x0030] = 0x48; /* pea.l NF_SHUTDOWN(pc) */ ROMBaseHost[0x0031] = 0x7a; ROMBaseHost[0x0032] = 0x00; ROMBaseHost[0x0033] = 0x0c; ROMBaseHost[0x0034] = 0x59; /* subq.l #4,sp */ ROMBaseHost[0x0035] = 0x8f; ROMBaseHost[0x0036] = 0x73; /* NF_ID */ ROMBaseHost[0x0037] = 0x00; ROMBaseHost[0x0038] = 0x2f; /* move.l d0,-(sp) */ ROMBaseHost[0x0039] = 0x00; ROMBaseHost[0x003a] = 0x59; /* subq.l #4,sp */ ROMBaseHost[0x003b] = 0x8f; ROMBaseHost[0x003c] = 0x73; /* NF_CALL */ ROMBaseHost[0x003d] = 0x01; ROMBaseHost[0x003e] = 'N'; /* "NF_SHUTDOWN" */ ROMBaseHost[0x003f] = 'F'; ROMBaseHost[0x0040] = '_'; ROMBaseHost[0x0041] = 'S'; ROMBaseHost[0x0042] = 'H'; ROMBaseHost[0x0043] = 'U'; ROMBaseHost[0x0044] = 'T'; ROMBaseHost[0x0045] = 'D'; ROMBaseHost[0x0046] = 'O'; ROMBaseHost[0x0047] = 'W'; ROMBaseHost[0x0048] = 'N'; ROMBaseHost[0x0049] = 0; } init(true); } LinuxBootOs::~LinuxBootOs(void) { cleanup(); } void LinuxBootOs::reset(bool cold) ARANYM_THROWS(AranymException) { init(cold); } /*--- Private functions ---*/ void LinuxBootOs::cleanup(void) { if (kernel!=NULL) { free(kernel); kernel=NULL; } if (ramdisk!=NULL) { free(ramdisk); ramdisk=NULL; } } void LinuxBootOs::init(bool cold) { kernel=ramdisk=NULL; kernel_length=ramdisk_length=0; bi_size = 0; bi.ramdisk.addr = 0; bi.ramdisk.size = 0; UNUSED(cold); #ifdef ENABLE_LILO /* Load the kernel */ kernel=loadFile(bx_options.lilo.kernel, &kernel_length); if (kernel==NULL) { throw AranymException("ARAnyM LILO: Error loading kernel '%s'", bx_options.lilo.kernel); } /* Load the ramdisk */ if (strlen(bx_options.lilo.ramdisk) > 0) { ramdisk=loadFile(bx_options.lilo.ramdisk, &ramdisk_length); if (ramdisk==NULL) { infoprint("ARAnyM LILO: Error loading ramdisk '%s'", bx_options.lilo.ramdisk); } } memset(RAMBaseHost, 0, RAMSize); memset(FastRAMBaseHost, 0, FastRAMSize); /* Check the kernel */ if (checkKernel()<0) { cleanup(); throw AranymException("ARAnyM LILO: Error setting up kernel"); } /* Kernel and ramdisk copied in Atari RAM, we can free it */ cleanup(); #else throw AranymException("ARAnyM LILO: not compiled in"); #endif /* ENABLE_LILO */ } void *LinuxBootOs::loadFile(const char *filename, unsigned long *length) { void *buffer = NULL; #ifdef ENABLE_LILO #ifdef HAVE_LIBZ unsigned long unc_len; gzFile handle; #else int handle; #endif if (strlen(filename)==0) { D(bug("lilo: empty finename")); return NULL; } /* Try to open the file, libz takes care of non-gzipped files */ #ifdef HAVE_LIBZ handle = gzopen(filename, "rb"); if (handle == NULL) #else handle = open(filename, O_RDONLY); if (handle<0) #endif { D(bug("lilo: unable to open %s", filename)); return NULL; } #ifdef HAVE_LIBZ /* Search the length of the uncompressed stream */ buffer = (char *)malloc(MAXREAD_BLOCK_SIZE); if (buffer==NULL) { D(bug("lilo: unable to allocate %d bytes", MAXREAD_BLOCK_SIZE)); gzclose(handle); return NULL; } *length = 0; unc_len = gzread(handle, buffer, MAXREAD_BLOCK_SIZE); while (unc_len>0) { *length += unc_len; unc_len = gzread(handle, buffer, MAXREAD_BLOCK_SIZE); } // Avoid gzseek, it is often broken with LFS which we enable by // default gzrewind(handle); D(bug("lilo: uncompressing '%s'", filename)); D(bug("lilo: uncompressed length: %lu bytes", *length)); free(buffer); buffer=NULL; #else *length = lseek(handle, 0, SEEK_END); lseek(handle, 0, SEEK_SET); #endif buffer = (char *)malloc(*length); if (buffer==NULL) { D(bug("lilo: unable to allocate %ld bytes", *length)); #ifdef HAVE_LIBZ gzclose(handle); #else close(handle); #endif return NULL; } #ifdef HAVE_LIBZ gzread(handle, buffer, *length); gzclose(handle); #else read(handle, buffer, *length); close(handle); #endif #else UNUSED(filename); UNUSED(length); #endif /* ENABLE_LILO */ return buffer; } int LinuxBootOs::checkKernel(void) { #ifdef ENABLE_LILO Elf32_Ehdr *kexec_elf; /* header of kernel executable */ Elf32_Phdr *kernel_phdrs; Elf32_Addr min_addr=0xffffffff, max_addr=0; Elf32_Addr kernel_size; Elf32_Addr mem_ptr; Elf32_Addr kernel_offset; int i; const char *kname, *kernel_name="vmlinux"; bool load_to_fastram = bx_options.lilo.load_to_fastram && FastRAMSize > 0; kexec_elf = (Elf32_Ehdr *) kernel; if (memcmp( &kexec_elf->e_ident[EI_MAG0], ELFMAG, SELFMAG ) == 0) { if ((SDL_SwapBE16(kexec_elf->e_type) != ET_EXEC) || (SDL_SwapBE16(kexec_elf->e_machine) != EM_68K) || (SDL_SwapBE32(kexec_elf->e_version) != EV_CURRENT)) { bug("lilo: Invalid ELF header contents in kernel"); return -1; } } /*--- Copy the kernel at start of RAM ---*/ /* Load the program headers */ kernel_phdrs = (Elf32_Phdr *) (((char *) kexec_elf) + SDL_SwapBE32(kexec_elf->e_phoff)); /* calculate the total required amount of memory */ D(bug("lilo: kexec_elf->e_phnum=0x%08x",SDL_SwapBE16(kexec_elf->e_phnum))); for (i=0; ie_phnum); i++) { D(bug("lilo: kernel_phdrs[%d].p_vaddr=0x%08x",i,SDL_SwapBE32(kernel_phdrs[i].p_vaddr))); D(bug("lilo: kernel_phdrs[%d].p_offset=0x%08x",i,SDL_SwapBE32(kernel_phdrs[i].p_offset))); D(bug("lilo: kernel_phdrs[%d].p_filesz=0x%08x",i,SDL_SwapBE32(kernel_phdrs[i].p_filesz))); D(bug("lilo: kernel_phdrs[%d].p_memsz=0x%08x",i,SDL_SwapBE32(kernel_phdrs[i].p_memsz))); if (min_addr > SDL_SwapBE32(kernel_phdrs[i].p_vaddr)) { min_addr = SDL_SwapBE32(kernel_phdrs[i].p_vaddr); } if (max_addr < SDL_SwapBE32(kernel_phdrs[i].p_vaddr) + SDL_SwapBE32(kernel_phdrs[i].p_memsz)) { max_addr = SDL_SwapBE32(kernel_phdrs[i].p_vaddr) + SDL_SwapBE32(kernel_phdrs[i].p_memsz); } } /* This is needed for newer linkers that include the header in the first segment. */ D(bug("lilo: min_addr=0x%08x",min_addr)); D(bug("lilo: max_addr=0x%08x",max_addr)); if (min_addr == 0) { D(bug("lilo: new linker")); D(bug("lilo: kernel_phdrs[0].p_vaddr=0x%08x",SDL_SwapBE32(kernel_phdrs[0].p_vaddr))); D(bug("lilo: kernel_phdrs[0].p_offset=0x%08x",SDL_SwapBE32(kernel_phdrs[0].p_offset))); D(bug("lilo: kernel_phdrs[0].p_filesz=0x%08x",SDL_SwapBE32(kernel_phdrs[0].p_filesz))); D(bug("lilo: kernel_phdrs[0].p_memsz=0x%08x",SDL_SwapBE32(kernel_phdrs[0].p_memsz))); min_addr = PAGE_SIZE; /*kernel_phdrs[0].p_vaddr += PAGE_SIZE;*/ kernel_phdrs[0].p_vaddr = SDL_SwapBE32(SDL_SwapBE32(kernel_phdrs[0].p_vaddr) + PAGE_SIZE); /*kernel_phdrs[0].p_offset += PAGE_SIZE;*/ kernel_phdrs[0].p_offset = SDL_SwapBE32(SDL_SwapBE32(kernel_phdrs[0].p_offset) + PAGE_SIZE); /*kernel_phdrs[0].p_filesz -= PAGE_SIZE;*/ kernel_phdrs[0].p_filesz = SDL_SwapBE32(SDL_SwapBE32(kernel_phdrs[0].p_filesz) - PAGE_SIZE); /*kernel_phdrs[0].p_memsz -= PAGE_SIZE;*/ kernel_phdrs[0].p_memsz = SDL_SwapBE32(SDL_SwapBE32(kernel_phdrs[0].p_memsz) - PAGE_SIZE); D(bug("lilo: modified to:")); D(bug("lilo: kernel_phdrs[0].p_vaddr=0x%08x",SDL_SwapBE32(kernel_phdrs[0].p_vaddr))); D(bug("lilo: kernel_phdrs[0].p_offset=0x%08x",SDL_SwapBE32(kernel_phdrs[0].p_offset))); D(bug("lilo: kernel_phdrs[0].p_filesz=0x%08x",SDL_SwapBE32(kernel_phdrs[0].p_filesz))); D(bug("lilo: kernel_phdrs[0].p_memsz=0x%08x",SDL_SwapBE32(kernel_phdrs[0].p_memsz))); } kernel_size = max_addr - min_addr; D(bug("lilo: kernel_size=%u",kernel_size)); if (load_to_fastram) { if (KERNEL_START + kernel_size > FastRAMSize) { bug("lilo: kernel of size %x does not fit in TT-RAM of size %x", kernel_size, FastRAMSize); load_to_fastram = false; } } if (!load_to_fastram) { if (KERNEL_START + kernel_size > RAMSize) { bug("lilo: kernel of size %x does not fit in RAM of size %x", kernel_size, RAMSize); return -1; } } if (load_to_fastram) kernel_offset = FastRAMBase; else kernel_offset = 0; mem_ptr = KERNEL_START; for (i=0; ie_phnum); i++) { Elf32_Word segment_length; Elf32_Addr segment_ptr; Elf32_Off segment_offset; segment_offset = SDL_SwapBE32(kernel_phdrs[i].p_offset); segment_length = SDL_SwapBE32(kernel_phdrs[i].p_filesz); if (segment_offset == 0xffffffffUL) { bug("lilo: Failed to seek to segment %d",i); return -1; } segment_ptr = SDL_SwapBE32(kernel_phdrs[i].p_vaddr) - PAGE_SIZE; if (load_to_fastram) memcpy(FastRAMBaseHost + mem_ptr + segment_ptr, (char *) kexec_elf + segment_offset, segment_length); else memcpy(RAMBaseHost + mem_ptr + segment_ptr, (char *) kexec_elf + segment_offset, segment_length); D(bug("lilo: Copied segment %d: 0x%08x,0x%08x at 0x%08x",i,segment_offset,segment_length,kernel_offset+mem_ptr+segment_ptr)); } /*--- Copy the ramdisk after kernel (and reserved bootinfo) ---*/ if (ramdisk && ramdisk_length) { Elf32_Addr rd_start; Elf32_Word rd_len; Elf32_Off rd_offset; if (load_to_fastram) rd_offset = KERNEL_START + kernel_size + MAX_BI_SIZE; else rd_offset = 0; rd_len = ramdisk_length - RAMDISK_FS_START; if (FastRAMSize > rd_offset + rd_len) { /* Load in FastRAM */ rd_start = FastRAMBase + FastRAMSize - rd_len; memcpy(FastRAMBaseHost + rd_start - FastRAMBase, (unsigned char *)ramdisk + RAMDISK_FS_START, rd_len); } else { /* Load in ST-RAM */ if (load_to_fastram) rd_offset = PAGE_SIZE; else rd_offset = KERNEL_START + kernel_size + MAX_BI_SIZE; if (RAMSize < rd_offset + rd_len) { bug("lilo: not enough memory to load ramdisk of size %u", rd_len); return -1; } rd_start = RAMSize - rd_len; memcpy(RAMBaseHost+rd_start, ((unsigned char *)ramdisk) + RAMDISK_FS_START, rd_len); } bi.ramdisk.addr = SDL_SwapBE32(rd_start); bi.ramdisk.size = SDL_SwapBE32(rd_len); D(bug("lilo: Ramdisk at 0x%08x in RAM, length=0x%08x", rd_start, rd_len)); } else { bi.ramdisk.addr = 0; bi.ramdisk.size = 0; D(bug("lilo: No ramdisk")); } /*--- Create the bootinfo structure ---*/ /* Command line */ kname = kernel_name; if (strncmp( kernel_name, "local:", 6 ) == 0) { kname += 6; } if (strlen(bx_options.lilo.args) > CL_SIZE-1) { bug("lilo: kernel command line too long"); return -1; } strcpy(bi.command_line, bx_options.lilo.args); if (strlen(bi.command_line)+1+strlen(kname)+12 < CL_SIZE-1) { if (*bi.command_line) { strcat( bi.command_line, " " ); } strcat( bi.command_line, "BOOT_IMAGE=" ); strcat( bi.command_line, kname ); } else { bug("lilo: kernel command line too long to include kernel name"); } D(bug("lilo: config_file command line: %s", bx_options.lilo.args )); D(bug("lilo: kernel command line: %s", bi.command_line )); /* Machine type, memory banks */ bi.machtype = SDL_SwapBE32(MACH_ATARI); bi.cputype = SDL_SwapBE32(CPU_68040); bi.fputype = SDL_SwapBE32(FPU_68040); bi.mmutype = SDL_SwapBE32(MMU_68040); bi.mch_cookie = SDL_SwapBE32(0x00030000); bi.mch_type = SDL_SwapBE32(ATARI_MACH_AB40); bi.num_memory=0; /* If loading to FastRAM switch the order of ST and Fast RAM */ if (!load_to_fastram) ADD_CHUNK(0, RAMSize); if (FastRAMSize>0) { ADD_CHUNK(FastRAMBase, FastRAMSize); } if (load_to_fastram) ADD_CHUNK(0, RAMSize); bi.num_memory=SDL_SwapBE32(bi.num_memory); if (!create_bootinfo()) { bug("lilo: Can not create bootinfo structure"); return -1; } /*--- Copy boot info in RAM ---*/ if (load_to_fastram) memcpy(FastRAMBaseHost + KERNEL_START + kernel_size, &bi_union.record, bi_size); else memcpy(RAMBaseHost + KERNEL_START + kernel_size, &bi_union.record, bi_size); D(bug("lilo: bootinfo at 0x%08x", kernel_offset + KERNEL_START + kernel_size)); #if DEBUG for (i=0; i<16; i++) { uint32 *tmp; if (load_to_fastram) tmp = (uint32 *)((unsigned char *)FastRAMBaseHost + KERNEL_START + kernel_size); else tmp = (uint32 *)((unsigned char *)RAMBaseHost + KERNEL_START + kernel_size); D(bug("lilo: bi_union.record[%d]=0x%08x",i, SDL_SwapBE32(tmp[i]))); } #endif /*--- Init SP & PC ---*/ uint32 *tmp = (uint32 *)RAMBaseHost; tmp[0] = SDL_SwapBE32(kernel_offset + KERNEL_START); /* SP */ tmp[1] = SDL_SwapBE32(0x00e00000); /* PC = ROMBase */ ROMBaseHost[4] = (kernel_offset + KERNEL_START) >> 24; ROMBaseHost[5] = (kernel_offset + KERNEL_START) >> 16; ROMBaseHost[6] = (kernel_offset + KERNEL_START) >> 8; ROMBaseHost[7] = (kernel_offset + KERNEL_START) & 0xff; D(bug("lilo: ok")); return 0; #else return -1; #endif /* ENABLE_LILO */ } /* * Create the Bootinfo Structure */ int LinuxBootOs::create_bootinfo(void) { #ifdef ENABLE_LILO unsigned int i; struct bi_record *record; /* Initialization */ bi_size = 0; /* Generic tags */ if (!add_bi_record(BI_MACHTYPE, sizeof(bi.machtype), &bi.machtype)) return(0); if (!add_bi_record(BI_CPUTYPE, sizeof(bi.cputype), &bi.cputype)) return(0); if (!add_bi_record(BI_FPUTYPE, sizeof(bi.fputype), &bi.fputype)) return(0); if (!add_bi_record(BI_MMUTYPE, sizeof(bi.mmutype), &bi.mmutype)) return(0); for (i = 0; i < SDL_SwapBE32(bi.num_memory); i++) { if (!add_bi_record(BI_MEMCHUNK, sizeof(bi.memory[i]), &bi.memory[i])) return(0); } if (SDL_SwapBE32(bi.ramdisk.size)) { if (!add_bi_record(BI_RAMDISK, sizeof(bi.ramdisk), &bi.ramdisk)) return(0); } if (!add_bi_string(BI_COMMAND_LINE, bi.command_line)) return(0); /* Atari tags */ if (!add_bi_record(BI_ATARI_MCH_COOKIE, sizeof(bi.mch_cookie), &bi.mch_cookie)) return(0); if (!add_bi_record(BI_ATARI_MCH_TYPE, sizeof(bi.mch_type), &bi.mch_type)) return(0); /* Trailer */ record = (struct bi_record *)((char *)&bi_union.record+bi_size); record->tag = SDL_SwapBE16(BI_LAST); bi_size += sizeof(bi_union.record.tag); return(1); #else return(0); #endif /* ENABLE_LILO */ } /* * Add a Record to the Bootinfo Structure */ int LinuxBootOs::add_bi_record( unsigned short tag, unsigned short size, const void *data) { #ifdef ENABLE_LILO struct bi_record *record; u_short size2; size2 = (sizeof(struct bi_record)+size+3)&-4; if (bi_size+size2+sizeof(bi_union.record.tag) > MAX_BI_SIZE) { bug("Can't add bootinfo record. Ask a wizard to enlarge me."); return(0); } record = (struct bi_record *)((char *)&bi_union.record+bi_size); record->tag = SDL_SwapBE16(tag); record->size = SDL_SwapBE16(size2); memcpy((char *)record + sizeof(struct bi_record), data, size); bi_size += size2; #else UNUSED(tag); UNUSED(size); UNUSED(data); #endif /* ENABLE_LILO */ return(1); } /* * Add a String Record to the Bootinfo Structure */ int LinuxBootOs::add_bi_string(unsigned short tag, const char *s) { #ifdef ENABLE_LILO return add_bi_record(tag, strlen(s)+1, (void *)s); #else UNUSED(tag); UNUSED(s); return 0; #endif /* ENABLE_LILO */ } aranym-1.1.0/src/bootos_emutos.cpp0000664000175000017500000001055513454637621015403 0ustar joyjoy/* ROM / OS loader, EmuTOS ARAnyM (C) 2005-2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "bootos_emutos.h" #include "aranym_exception.h" #include "emul_op.h" #define DEBUG 0 #include "debug.h" /* EmuTOS ROM class */ EmutosBootOs::EmutosBootOs(void) ARANYM_THROWS(AranymException) { emutos_patch(true); } /*--- Private functions ---*/ void EmutosBootOs::emutos_patch(bool cold) ARANYM_THROWS(AranymException) { if (strlen(bx_options.tos.emutos_path) == 0) throw AranymException("Path to EmuTOS ROM image file undefined"); load(bx_options.tos.emutos_path); init(cold); infoprint("EmuTOS %02x%02x/%02x/%02x loading from '%s'... [OK]", ROMBaseHost[0x1a], ROMBaseHost[0x1b], ROMBaseHost[0x18], ROMBaseHost[0x19], bx_options.tos.emutos_path ); int found = 0; for (int ptr = 0; ptr < 0x10000; ptr += 2) { if (ROMBaseHost[ptr + 0] == 0x3f && /* move.w #-1,-(a7) */ ROMBaseHost[ptr + 1] == 0x3c && ROMBaseHost[ptr + 2] == 0xff && ROMBaseHost[ptr + 3] == 0xff && ROMBaseHost[ptr + 4] == 0x4e && /* jsr _kbshift */ ROMBaseHost[ptr + 5] == 0xb9 && ROMBaseHost[ptr + 6] == 0x00 && ROMBaseHost[ptr + 7] == 0xe0 && ROMBaseHost[ptr + 10] == 0x54 && /* addq.l #2,a7 */ ROMBaseHost[ptr + 11] == 0x8f && ((ROMBaseHost[ptr + 12] == 0x08 && /* btst #3,d0 */ ROMBaseHost[ptr + 13] == 0x00 && ROMBaseHost[ptr + 14] == 0x00 && ROMBaseHost[ptr + 15] == 0x03) || (ROMBaseHost[ptr + 12] == 0x44 && ROMBaseHost[ptr + 13] == 0xc0 && ROMBaseHost[ptr + 14] == 0x6b && ROMBaseHost[ptr + 15] == 0x14))) { D(bug("blkdev_hdv_boot 1 found at %08x", ptr + ROMBase)); ROMBaseHost[ptr + 0] = 0x48; // movem.l d1-d2/a0-a2,-(a7) ROMBaseHost[ptr + 1] = 0xe7; ROMBaseHost[ptr + 2] = 0x60; ROMBaseHost[ptr + 3] = 0xe0; ROMBaseHost[ptr + 4] = 0xa0; // Linea_init ROMBaseHost[ptr + 5] = 0x00; ROMBaseHost[ptr + 6] = M68K_EMUL_INIT >> 8; ROMBaseHost[ptr + 7] = M68K_EMUL_INIT & 0xff; ROMBaseHost[ptr + 8] = 0x4c; // movem.l (a7)+,d1-d2/a0-a2 ROMBaseHost[ptr + 9] = 0xdf; ROMBaseHost[ptr + 10] = 0x07; ROMBaseHost[ptr + 11] = 0x06; ROMBaseHost[ptr + 12] = 0x70; // moveq #0,d0 ROMBaseHost[ptr + 13] = 0x00; ROMBaseHost[ptr + 14] = 0x4e; // nop ROMBaseHost[ptr + 15] = 0x71; found++; } else if ( ROMBaseHost[ptr + 0] == 0x08 && /* btst #1,d0 */ ROMBaseHost[ptr + 1] == 0x00 && ROMBaseHost[ptr + 2] == 0x00 && ROMBaseHost[ptr + 3] == 0x01 && ROMBaseHost[ptr + 4] == 0x67 && /* beq *+6 */ ROMBaseHost[ptr + 5] == 0x06 && ROMBaseHost[ptr + 6] == 0x42 && /* clr.w _bootdev */ ROMBaseHost[ptr + 7] == 0x79 && ROMBaseHost[ptr + 8] == 0x00 && ROMBaseHost[ptr + 9] == 0x00 && ROMBaseHost[ptr + 10] == 0x04 && ROMBaseHost[ptr + 11] == 0x46) { D(bug("blkdev_hdv_boot 2 found at %08x", ptr + ROMBase)); ROMBaseHost[ptr + 0] = 0x48; // movem.l d1-d2/a0-a2,-(a7) ROMBaseHost[ptr + 1] = 0xe7; ROMBaseHost[ptr + 2] = 0x60; ROMBaseHost[ptr + 3] = 0xe0; ROMBaseHost[ptr + 4] = 0xa0; // Linea_init ROMBaseHost[ptr + 5] = 0x00; ROMBaseHost[ptr + 6] = M68K_EMUL_INIT >> 8; ROMBaseHost[ptr + 7] = M68K_EMUL_INIT & 0xff; ROMBaseHost[ptr + 8] = 0x4c; // movem.l (a7)+,d1-d2/a0-a2 ROMBaseHost[ptr + 9] = 0xdf; ROMBaseHost[ptr + 10] = 0x07; ROMBaseHost[ptr + 11] = 0x06; ROMBaseHost[ptr + 12] = 0x70; // moveq #0,d0 ROMBaseHost[ptr + 13] = 0x00; ROMBaseHost[ptr + 14] = 0x4e; // nop ROMBaseHost[ptr + 15] = 0x71; found++; } } if (found == 0) { bug("EmutosBootOs: blkdev_hdv_boot not found!"); } else if (found > 1) { bug("EmutosBootOs: blkdev_hdv_boot found %d times!", found); } } /* vim:ts=4:sw=4 */ aranym-1.1.0/src/bootos.cpp0000664000175000017500000000336513454637621014010 0ustar joyjoy/* ROM / OS loader, base class ARAnyM (C) 2005-2006 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #include "bootos.h" #include "aranym_exception.h" #define DEBUG 0 #include "debug.h" BootOs *bootOs = NULL; void BootOs::init(bool cold) { if (cold) memset(RAMBaseHost, rand(), RAMSize); /* Setting "SP & PC" for CPU with ROM based OS (TOS, EmuTOS) */ for (int i=0; i<8; i++) { RAMBaseHost[i] = ROMBaseHost[i]; } } void BootOs::reset(bool cold) { init(cold); } void BootOs::load(const char *filename) ARANYM_THROWS(AranymException) { D(bug("Reading OS ROM image '%s'", filename)); FILE *f = fopen(filename, "rb"); if (f == NULL) { throw AranymException("OS ROM image '%s' not found.", filename); } /* Both TOS 4.04 and EmuTOS must be 512 KB */ RealROMSize = 512<<10; size_t sizeRead = fread(ROMBaseHost, 1, RealROMSize, f); fclose(f); if (sizeRead != (size_t)RealROMSize) { throw AranymException("OS ROM image '%s' reading error.\nMake sure the file is readable and its size is 524288 bytes (512 kB).", filename); } } /* vim:ts=4:sw=4 */ aranym-1.1.0/src/blitter.cpp0000664000175000017500000007100013454637621014137 0ustar joyjoy/* * blitter.cpp - Atari Blitter emulation code * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * Based on work by Martin Griffiths for the STonX, see below. * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * Blitter Emulator, * Martin Griffiths, 1995/96. * * Here lies the Atari Blitter Emulator - The 'Blitter' chip is found in * the STE/MegaSTE and provides a very fast BitBlit in hardware. * * The hardware registers for this chip lie at addresses $ff8a00 - $ff8a3c, * There seems to be a mirror for $ff8a30 used in TOS 1.02 at $ff7f30. * */ #undef BLITTER_MEMMOVE // when defined it replaces complicated logic of word-by-word copying by simple and fast memmove() #undef BLITTER_SDLBLIT // when defined it accelerates screen to screen blits with host VGA hardware accelerated routines (using SDL_BlitSurface) #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "blitter.h" #include "icio.h" #define DEBUG 0 #include "debug.h" #include "SDL_compat.h" #if DEBUG #define SHOWPARAMS \ { fprintf(stderr,"Source Address:%X\n",source_addr); \ fprintf(stderr," Dest Address:%X\n",dest_addr); \ fprintf(stderr," X count:%X\n",x_count); \ fprintf(stderr," Y count:%X\n",y_count); \ fprintf(stderr,"Words per line:%X\n",x_count ? x_count : 65536); \ fprintf(stderr,"Lines per blok:%X\n",y_count ? y_count : 65536); \ fprintf(stderr," Source X inc:%X\n",source_x_inc); \ fprintf(stderr," Dest X inc:%X\n",dest_x_inc); \ fprintf(stderr," Source Y inc:%X\n",source_y_inc); \ fprintf(stderr," Dest Y inc:%X\n",dest_y_inc); \ fprintf(stderr,"HOP:%2X OP:%X\n",hop,op); \ fprintf(stderr," source SKEW:%X\n",skewreg); \ fprintf(stderr," endmask 1:%X\n",end_mask_1); \ fprintf(stderr," endmask 2:%X\n",end_mask_2); \ fprintf(stderr," endmask 3:%X\n",end_mask_3); \ fprintf(stderr," linenum:%X\n",line_num); \ if (NFSR) fprintf(stderr,"NFSR is Set!\n"); \ if (FXSR) fprintf(stderr,"FXSR is Set!\n"); \ } #endif typedef uint16 UW; typedef uint8 UB; typedef char B; #define ADDR(a) (a) BLITTER::BLITTER(memptr addr, uint32 size) : BASE_IO(addr, size) { reset(); } void BLITTER::reset() { // halftone_ram[16]; end_mask_1 = end_mask_2 = end_mask_3 = 0; NFSR = FXSR = 0; x_count = y_count = 0; hop = op = line_num = skewreg = 0; halftone_curroffset = halftone_direction = 0; source_x_inc = source_y_inc = dest_x_inc = dest_y_inc = 0; source_addr = 0; dest_addr = 0; blit = false; } UW BLITTER::LM_UW(memptr addr) { return ReadAtariInt16(addr); //?? } void BLITTER::SM_UW(memptr addr, UW value) { if (addr <= 0x800 || (addr >= 0x0e00000 && addr < 0x1000000)) { D(bug("Blitter tried to write to %06lx", addr)); return; } WriteAtariInt16(addr, value); //?? } #define HOP_OPS(_fn_name,_op,_do_source_shift,_get_source_data,_shifted_hopd_data, _do_halftone_inc) \ static void _fn_name ( BLITTER& b ) \ { \ register unsigned int skew = (unsigned int) b.skewreg & 15; \ register unsigned int source_buffer=0; \ if (b.hop & 1) { \ if (b.line_num & 0x20) \ b.halftone_curroffset = b.skewreg & 15; \ else \ b.halftone_curroffset = b.line_num & 15; \ if (b.dest_y_inc >= 0) \ b.halftone_direction = 1; \ else \ b.halftone_direction = -1; \ } \ do \ { register UW x,dst_data,opd_data; \ if (b.FXSR) \ { _do_source_shift; \ _get_source_data; \ b.source_addr += b.source_x_inc; \ } \ _do_source_shift; \ _get_source_data; \ dst_data = b.LM_UW(ADDR(b.dest_addr)); \ opd_data = _shifted_hopd_data; \ b.SM_UW(ADDR(b.dest_addr),(dst_data & ~b.end_mask_1) | (_op & b.end_mask_1)); \ for(x=0 ; x= 2) \ { b.dest_addr += b.dest_x_inc; \ _do_source_shift; \ if ( (!b.NFSR) || ((~(0xffff>>skew)) > b.end_mask_3) )\ { b.source_addr += b.source_x_inc; \ _get_source_data; \ } \ dst_data = b.LM_UW(ADDR(b.dest_addr)); \ opd_data = _shifted_hopd_data; \ b.SM_UW(ADDR(b.dest_addr),(((UW)dst_data) & ~b.end_mask_3) | (_op & b.end_mask_3));\ } \ b.source_addr += b.source_y_inc; \ b.dest_addr += b.dest_y_inc; \ _do_halftone_inc; \ (void) opd_data; \ (void) dst_data; \ } while (--b.y_count > 0); \ }; /* * Some macros fixed: * operations, that don't need a source, may not access the source address; * the source address isn't even set up by the BIOS. * This includes all HOP_0 operations (source is all ones), * all HOP_1 operations (source is halftone only), * and operations 0, 5, 10 and 15 */ #define _HOP_0 0xffff #define _HOP_1 b.halftone_ram[b.halftone_curroffset] #define _HOP_2 (source_buffer >> skew) #define _HOP_3 (source_buffer >> skew) & b.halftone_ram[b.halftone_curroffset] #define _HOP_INC b.halftone_curroffset = (b.halftone_curroffset + b.halftone_direction) & 15 #define _SRC_READ_N source_buffer |= ((unsigned int) b.LM_UW(ADDR(b.source_addr)) << 16) #define _SRC_READ_P source_buffer |= ((unsigned int) b.LM_UW(ADDR(b.source_addr))) HOP_OPS(_HOP_0_OP_00_N,(0), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_01_N,(opd_data & dst_data), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_02_N,(opd_data & ~dst_data), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_03_N,(opd_data), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_04_N,(~opd_data & dst_data), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_05_N,(dst_data), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_06_N,(opd_data ^ dst_data), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_07_N,(opd_data | dst_data), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_08_N,(~opd_data & ~dst_data), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_09_N,(~opd_data ^ dst_data), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_10_N,(~dst_data), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_11_N,(opd_data | ~dst_data), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_12_N,(~opd_data), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_13_N,(~opd_data | dst_data), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_14_N,(~opd_data | ~dst_data), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_15_N,(0xffff), source_buffer >>=16, ;, _HOP_0, ;) HOP_OPS(_HOP_1_OP_00_N,(0), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_01_N,(opd_data & dst_data), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_02_N,(opd_data & ~dst_data), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_03_N,(opd_data), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_04_N,(~opd_data & dst_data), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_05_N,(dst_data), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_06_N,(opd_data ^ dst_data), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_07_N,(opd_data | dst_data), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_08_N,(~opd_data & ~dst_data), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_09_N,(~opd_data ^ dst_data), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_10_N,(~dst_data), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_11_N,(opd_data | ~dst_data), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_12_N,(~opd_data), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_13_N,(~opd_data | dst_data), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_14_N,(~opd_data | ~dst_data), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_15_N,(0xffff), source_buffer >>=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_2_OP_00_N,(0), source_buffer >>=16, ;, _HOP_2, ;) HOP_OPS(_HOP_2_OP_01_N,(opd_data & dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_2, ;) HOP_OPS(_HOP_2_OP_02_N,(opd_data & ~dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_2, ;) HOP_OPS(_HOP_2_OP_03_N,(opd_data), source_buffer >>=16, _SRC_READ_N, _HOP_2, ;) HOP_OPS(_HOP_2_OP_04_N,(~opd_data & dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_2, ;) HOP_OPS(_HOP_2_OP_05_N,(dst_data), source_buffer >>=16, ;, _HOP_2, ;) HOP_OPS(_HOP_2_OP_06_N,(opd_data ^ dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_2, ;) HOP_OPS(_HOP_2_OP_07_N,(opd_data | dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_2, ;) HOP_OPS(_HOP_2_OP_08_N,(~opd_data & ~dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_2, ;) HOP_OPS(_HOP_2_OP_09_N,(~opd_data ^ dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_2, ;) HOP_OPS(_HOP_2_OP_10_N,(~dst_data), source_buffer >>=16, ;, _HOP_2, ;) HOP_OPS(_HOP_2_OP_11_N,(opd_data | ~dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_2, ;) HOP_OPS(_HOP_2_OP_12_N,(~opd_data), source_buffer >>=16, _SRC_READ_N, _HOP_2, ;) HOP_OPS(_HOP_2_OP_13_N,(~opd_data | dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_2, ;) HOP_OPS(_HOP_2_OP_14_N,(~opd_data | ~dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_2, ;) HOP_OPS(_HOP_2_OP_15_N,(0xffff), source_buffer >>=16, ;, _HOP_2, ;) HOP_OPS(_HOP_3_OP_00_N,(0), source_buffer >>=16, ;, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_01_N,(opd_data & dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_02_N,(opd_data & ~dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_03_N,(opd_data), source_buffer >>=16, _SRC_READ_N, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_04_N,(~opd_data & dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_05_N,(dst_data), source_buffer >>=16, ;, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_06_N,(opd_data ^ dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_07_N,(opd_data | dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_08_N,(~opd_data & ~dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_09_N,(~opd_data ^ dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_10_N,(~dst_data), source_buffer >>=16, ;, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_11_N,(opd_data | ~dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_12_N,(~opd_data), source_buffer >>=16, _SRC_READ_N, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_13_N,(~opd_data | dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_14_N,(~opd_data | ~dst_data), source_buffer >>=16, _SRC_READ_N, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_15_N,(0xffff), source_buffer >>=16, ;, _HOP_3, _HOP_INC) HOP_OPS(_HOP_0_OP_00_P,(0), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_01_P,(opd_data & dst_data), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_02_P,(opd_data & ~dst_data), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_03_P,(opd_data), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_04_P,(~opd_data & dst_data), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_05_P,(dst_data), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_06_P,(opd_data ^ dst_data), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_07_P,(opd_data | dst_data), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_08_P,(~opd_data & ~dst_data), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_09_P,(~opd_data ^ dst_data), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_10_P,(~dst_data), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_11_P,(opd_data | ~dst_data), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_12_P,(~opd_data), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_13_P,(~opd_data | dst_data), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_14_P,(~opd_data | ~dst_data), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_0_OP_15_P,(0xffff), source_buffer <<=16, ;, _HOP_0, ;) HOP_OPS(_HOP_1_OP_00_P,(0), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_01_P,(opd_data & dst_data), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_02_P,(opd_data & ~dst_data), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_03_P,(opd_data), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_04_P,(~opd_data & dst_data), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_05_P,(dst_data), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_06_P,(opd_data ^ dst_data), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_07_P,(opd_data | dst_data), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_08_P,(~opd_data & ~dst_data), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_09_P,(~opd_data ^ dst_data), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_10_P,(~dst_data), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_11_P,(opd_data | ~dst_data), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_12_P,(~opd_data), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_13_P,(~opd_data | dst_data), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_14_P,(~opd_data | ~dst_data), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_1_OP_15_P,(0xffff), source_buffer <<=16, ;, _HOP_1, _HOP_INC) HOP_OPS(_HOP_2_OP_00_P,(0), source_buffer <<=16, ;, _HOP_2, ;) HOP_OPS(_HOP_2_OP_01_P,(opd_data & dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_2, ;) HOP_OPS(_HOP_2_OP_02_P,(opd_data & ~dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_2, ;) HOP_OPS(_HOP_2_OP_03_P,(opd_data), source_buffer <<=16, _SRC_READ_P, _HOP_2, ;) HOP_OPS(_HOP_2_OP_04_P,(~opd_data & dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_2, ;) HOP_OPS(_HOP_2_OP_05_P,(dst_data), source_buffer <<=16, ;, _HOP_2, ;) HOP_OPS(_HOP_2_OP_06_P,(opd_data ^ dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_2, ;) HOP_OPS(_HOP_2_OP_07_P,(opd_data | dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_2, ;) HOP_OPS(_HOP_2_OP_08_P,(~opd_data & ~dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_2, ;) HOP_OPS(_HOP_2_OP_09_P,(~opd_data ^ dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_2, ;) HOP_OPS(_HOP_2_OP_10_P,(~dst_data), source_buffer <<=16, ;, _HOP_2, ;) HOP_OPS(_HOP_2_OP_11_P,(opd_data | ~dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_2, ;) HOP_OPS(_HOP_2_OP_12_P,(~opd_data), source_buffer <<=16, _SRC_READ_P, _HOP_2, ;) HOP_OPS(_HOP_2_OP_13_P,(~opd_data | dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_2, ;) HOP_OPS(_HOP_2_OP_14_P,(~opd_data | ~dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_2, ;) HOP_OPS(_HOP_2_OP_15_P,(0xffff), source_buffer <<=16, ;, _HOP_2, ;) HOP_OPS(_HOP_3_OP_00_P,(0), source_buffer <<=16, ;, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_01_P,(opd_data & dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_02_P,(opd_data & ~dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_03_P,(opd_data), source_buffer <<=16, _SRC_READ_P, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_04_P,(~opd_data & dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_05_P,(dst_data), source_buffer <<=16, ;, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_06_P,(opd_data ^ dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_07_P,(opd_data | dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_08_P,(~opd_data & ~dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_09_P,(~opd_data ^ dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_10_P,(~dst_data), source_buffer <<=16, ;, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_11_P,(opd_data | ~dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_12_P,(~opd_data), source_buffer <<=16, _SRC_READ_P, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_13_P,(~opd_data | dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_14_P,(~opd_data | ~dst_data), source_buffer <<=16, _SRC_READ_P, _HOP_3, _HOP_INC) HOP_OPS(_HOP_3_OP_15_P,(0xffff), source_buffer <<=16, ;, _HOP_3, _HOP_INC) void _hop_2_op_03_p( BLITTER& b ) { #ifdef BLITTER_MEMMOVE if (getVIDEL ()->getBpp() == 16) { #ifdef BLITTER_SDLBLIT if (b.source_addr >= ARANYMVRAMSTART && b.dest_addr >= ARANYMVRAMSTART) { SDL_Rect src, dest; int src_offset = b.source_addr - ARANYMVRAMSTART; int dest_offset = b.dest_addr - ARANYMVRAMSTART; int VidelScreenWidth = getVIDEL ()->getScreenWidth(); src.x = (src_offset % (2*VidelScreenWidth))/2; src.y = (src_offset / (2*VidelScreenWidth)); src.w = dest.w = b.x_count; src.h = dest.h = b.y_count; dest.x = (dest_offset % (2*VidelScreenWidth))/2; dest.y = (dest_offset / (2*VidelScreenWidth)); SDL_Surface *surf = SDL_GetVideoSurface(); SDL_BlitSurface(surf, &src, surf, &dest); b.source_addr += (((b.x_count-1)*b.source_x_inc)+b.source_y_inc)*b.y_count; b.dest_addr += (((b.x_count-1)*b.dest_x_inc)+b.dest_y_inc)*b.y_count; b.y_count = 0; return; } #endif /* BLITTER_SDLBLIT */ do { memmove(phys_get_real_address(b.dest_addr), phys_get_real_address(b.source_addr), b.x_count*2); b.source_addr += ((b.x_count-1)*b.source_x_inc)+b.source_y_inc; b.dest_addr += ((b.x_count-1)*b.dest_x_inc)+b.dest_y_inc; } while (--b.y_count > 0); } else #endif /* BLITTER_MEMMOVE */ _HOP_2_OP_03_P( b ); } void _hop_2_op_03_n( BLITTER& b ) { #ifdef BLITTER_MEMMOVE if (getVIDEL ()->getBpp() == 16) { b.source_addr += ((b.x_count-1)*b.source_x_inc); b.dest_addr += ((b.x_count-1)*b.dest_x_inc); #ifdef BLITTER_SDLBLIT if (b.source_addr >= ARANYMVRAMSTART && b.dest_addr >= ARANYMVRAMSTART) { b.source_addr += (((b.x_count)*b.source_x_inc)+b.source_y_inc)*b.y_count; b.dest_addr += (((b.x_count-1)*b.dest_x_inc)+b.dest_y_inc)*b.y_count; SDL_Rect src, dest; int src_offset = b.source_addr - ARANYMVRAMSTART; int dest_offset = b.dest_addr - ARANYMVRAMSTART; int VidelScreenWidth = getVIDEL ()->getScreenWidth(); src.x = (src_offset % (2*VidelScreenWidth))/2; src.y = (src_offset / (2*VidelScreenWidth)); src.w = dest.w = b.x_count; src.h = dest.h = b.y_count; dest.x = (dest_offset % (2*VidelScreenWidth))/2; dest.y = (dest_offset / (2*VidelScreenWidth)); SDL_Surface *surf = SDL_GetVideoSurface(); SDL_BlitSurface(surf, &src, surf, &dest); b.y_count = 0; return; } #endif /* BLITTER_SDLBLIT */ do { memmove(phys_get_real_address(b.dest_addr), phys_get_real_address(b.source_addr), b.x_count*2); b.source_addr += ((b.x_count)*b.source_x_inc)+b.source_y_inc; b.dest_addr += ((b.x_count-1)*b.dest_x_inc)+b.dest_y_inc; } while (--b.y_count > 0); } else #endif /* BLITTER_MEMMOVE */ _HOP_2_OP_03_N( b ); } static void (*const do_hop_op_N[4][16])( BLITTER& ) = { { _HOP_0_OP_00_N, _HOP_0_OP_01_N, _HOP_0_OP_02_N, _HOP_0_OP_03_N, _HOP_0_OP_04_N, _HOP_0_OP_05_N, _HOP_0_OP_06_N, _HOP_0_OP_07_N, _HOP_0_OP_08_N, _HOP_0_OP_09_N, _HOP_0_OP_10_N, _HOP_0_OP_11_N, _HOP_0_OP_12_N, _HOP_0_OP_13_N, _HOP_0_OP_14_N, _HOP_0_OP_15_N }, { _HOP_1_OP_00_N, _HOP_1_OP_01_N, _HOP_1_OP_02_N, _HOP_1_OP_03_N, _HOP_1_OP_04_N, _HOP_1_OP_05_N, _HOP_1_OP_06_N, _HOP_1_OP_07_N, _HOP_1_OP_08_N, _HOP_1_OP_09_N, _HOP_1_OP_10_N, _HOP_1_OP_11_N, _HOP_1_OP_12_N, _HOP_1_OP_13_N, _HOP_1_OP_14_N, _HOP_1_OP_15_N }, { _HOP_2_OP_00_N, _HOP_2_OP_01_N, _HOP_2_OP_02_N, _hop_2_op_03_n, _HOP_2_OP_04_N, _HOP_2_OP_05_N, _HOP_2_OP_06_N, _HOP_2_OP_07_N, _HOP_2_OP_08_N, _HOP_2_OP_09_N, _HOP_2_OP_10_N, _HOP_2_OP_11_N, _HOP_2_OP_12_N, _HOP_2_OP_13_N, _HOP_2_OP_14_N, _HOP_2_OP_15_N }, { _HOP_3_OP_00_N, _HOP_3_OP_01_N, _HOP_3_OP_02_N, _HOP_3_OP_03_N, _HOP_3_OP_04_N, _HOP_3_OP_05_N, _HOP_3_OP_06_N, _HOP_3_OP_07_N, _HOP_3_OP_08_N, _HOP_3_OP_09_N, _HOP_3_OP_10_N, _HOP_3_OP_11_N, _HOP_3_OP_12_N, _HOP_3_OP_13_N, _HOP_3_OP_14_N, _HOP_3_OP_15_N } }; static void (*const do_hop_op_P[4][16])( BLITTER& ) = { { _HOP_0_OP_00_P, _HOP_0_OP_01_P, _HOP_0_OP_02_P, _HOP_0_OP_03_P, _HOP_0_OP_04_P, _HOP_0_OP_05_P, _HOP_0_OP_06_P, _HOP_0_OP_07_P, _HOP_0_OP_08_P, _HOP_0_OP_09_P, _HOP_0_OP_10_P, _HOP_0_OP_11_P, _HOP_0_OP_12_P, _HOP_0_OP_13_P, _HOP_0_OP_14_P, _HOP_0_OP_15_P }, { _HOP_1_OP_00_P, _HOP_1_OP_01_P, _HOP_1_OP_02_P, _HOP_1_OP_03_P, _HOP_1_OP_04_P, _HOP_1_OP_05_P, _HOP_1_OP_06_P, _HOP_1_OP_07_P, _HOP_1_OP_08_P, _HOP_1_OP_09_P, _HOP_1_OP_10_P, _HOP_1_OP_11_P, _HOP_1_OP_12_P, _HOP_1_OP_13_P, _HOP_1_OP_14_P, _HOP_1_OP_15_P }, { _HOP_2_OP_00_P, _HOP_2_OP_01_P, _HOP_2_OP_02_P, _hop_2_op_03_p, _HOP_2_OP_04_P, _HOP_2_OP_05_P, _HOP_2_OP_06_P, _HOP_2_OP_07_P, _HOP_2_OP_08_P, _HOP_2_OP_09_P, _HOP_2_OP_10_P, _HOP_2_OP_11_P, _HOP_2_OP_12_P, _HOP_2_OP_13_P, _HOP_2_OP_14_P, _HOP_2_OP_15_P }, { _HOP_3_OP_00_P, _HOP_3_OP_01_P, _HOP_3_OP_02_P, _HOP_3_OP_03_P, _HOP_3_OP_04_P, _HOP_3_OP_05_P, _HOP_3_OP_06_P, _HOP_3_OP_07_P, _HOP_3_OP_08_P, _HOP_3_OP_09_P, _HOP_3_OP_10_P, _HOP_3_OP_11_P, _HOP_3_OP_12_P, _HOP_3_OP_13_P, _HOP_3_OP_14_P, _HOP_3_OP_15_P } }; uint8 BLITTER::handleRead(memptr addr) { addr -= getHWoffset(); D(bug("Blitter read byte from register %x at %06x", addr+getHWoffset(), showPC())); switch(addr) { case 0x3a: return hop; case 0x3b: return op; case 0x3c: return LOAD_B_ff8a3c(); case 0x3d: return skewreg; } panicbug("Blitter tried to read byte from register %x at %06x", addr+getHWoffset(), showPC()); return 0; } uae_u16 BLITTER::handleReadW(uaecptr addr) { addr -= getHWoffset(); D(bug("Blitter read word from register %x at %06x", addr+getHWoffset(), showPC())); if (addr < 0x20) { return halftone_ram[addr / 2]; } switch(addr) { case 0x20: return source_x_inc; case 0x22: return source_y_inc; case 0x24: return (source_addr >> 16) & 0xffff; case 0x26: return (source_addr) & 0xffff; case 0x28: return end_mask_1; case 0x2a: return end_mask_2; case 0x2c: return end_mask_3; case 0x2e: return dest_x_inc; case 0x30: return dest_y_inc; case 0x32: return (dest_addr >> 16) & 0xffff; case 0x34: return (dest_addr) & 0xffff; case 0x36: return x_count; case 0x38: return y_count; case 0x3a: // fallthrough case 0x3c: return BASE_IO::handleReadW(addr+getHWoffset()); } panicbug("Blitter tried to read word from register %x at %06x", addr+getHWoffset(), showPC()); return 0; } uae_u32 BLITTER::handleReadL(uaecptr addr) { addr -= getHWoffset(); D(bug("Blitter read long from register %x at %06x", addr+getHWoffset(), showPC())); if (addr < 0x20) { return BASE_IO::handleReadL(addr+getHWoffset()); } switch(addr) { case 0x24: return source_addr; case 0x32: return dest_addr; } panicbug("Blitter tried to read long word from register %x at %06x", addr+getHWoffset(), showPC()); return 0; } void BLITTER::handleWrite(memptr addr, uint8 value) { addr -= getHWoffset(); D(bug("Blitter write byte $%02x to register %x at %06x", value, addr+getHWoffset(), showPC())); switch(addr) { case 0x3a: STORE_B_ff8a3a(value); break; case 0x3b: STORE_B_ff8a3b(value); break; case 0x3c: STORE_B_ff8a3c(value); break; case 0x3d: STORE_B_ff8a3d(value); break; default: panicbug("Blitter tried to write byte $%02x to register %x at %06x", value, addr+getHWoffset(), showPC()); } if (blit) { Do_Blit(); blit = false; } } void BLITTER::handleWriteW(uaecptr addr, uint16 value) { addr -= getHWoffset(); D(bug("Blitter write word $%04x to register %x at %06x", value, addr+getHWoffset(), showPC())); if (addr < 0x20) { halftone_ram[addr / 2] = value; return; } switch(addr) { case 0x20: source_x_inc = value; break; case 0x22: source_y_inc = value; break; case 0x24: source_addr = (source_addr & 0x0000ffff) | (value << 16); source_addr_backup = source_addr; break; case 0x26: source_addr = (source_addr & 0xffff0000) | (value & 0xfffe); source_addr_backup = source_addr; break; case 0x28: end_mask_1 = value; break; case 0x2a: end_mask_2 = value; break; case 0x2c: end_mask_3 = value; break; case 0x2e: dest_x_inc = value; break; case 0x30: dest_y_inc = value; break; case 0x32: dest_addr = (dest_addr & 0x0000ffff) | (value << 16); dest_addr_backup = dest_addr; break; case 0x34: dest_addr = (dest_addr & 0xffff0000) | (value & 0xfffe); dest_addr_backup = dest_addr; break; case 0x36: x_count = value; break; case 0x38: y_count = value; break; case 0x3a: STORE_B_ff8a3a(value >> 8); STORE_B_ff8a3b(value); break; case 0x3c: STORE_B_ff8a3c(value >> 8); STORE_B_ff8a3d(value); break; default: panicbug("Blitter tried to write word $%04x to register %x at %06x", value, addr+getHWoffset(), showPC()); } if (blit) { Do_Blit(); blit = false; } } void BLITTER::handleWriteL(uaecptr addr, uint32 value) { addr -= getHWoffset(); D(bug("Blitter write long $%08x to register %x at %06x", value, addr+getHWoffset(), showPC())); switch(addr) { case 0x24: D(bug("Blitter sets source to $%08lx at $%08lx", value, showPC())); source_addr = value & 0xfffffffe; source_addr_backup = source_addr; break; case 0x32: D(bug("Blitter sets dest to $%08lx at $%08lx", value, showPC())); dest_addr = value & 0xfffffffe; dest_addr_backup = dest_addr; break; default: BASE_IO::handleWriteL(addr+getHWoffset(), value); break; } } B BLITTER::LOAD_B_ff8a3c(void) { return line_num & 0x3f; } void BLITTER::STORE_B_ff8a3a(B v) { hop = v & 3; /* h/ware reg masks out the top 6 bits! */ } void BLITTER::STORE_B_ff8a3b(B v) { op = v & 15; /* h/ware reg masks out the top 4 bits! */ } void BLITTER::STORE_B_ff8a3c(B v) { // 765_3210 Line-Number line_num = (UB) v & 0x3f; if ((y_count !=0) && (v & 0x80)) /* Busy bit set and lines to blit? */ blit = true; } void BLITTER::STORE_B_ff8a3d(B v) { // 76__3210 Skew NFSR = (v & 0x40) != 0; FXSR = (v & 0x80) != 0; skewreg = (unsigned char) v & 0xcf; /* h/ware reg mask %11001111 !*/ } void BLITTER::Do_Blit(void) { D(bug("Blitter started at %06x", showPC())); #if DEBUG SHOWPARAMS; #endif if (source_addr != source_addr_backup) { D(bug("Blitter starts with obsolete source addr $%08lx, should be $%08lx", source_addr, source_addr_backup)); source_addr = source_addr_backup; } if (dest_addr != dest_addr_backup) { D(bug("Blitter starts with obsolete dest addr $%08lx, should be $%08lx", dest_addr, dest_addr_backup)); dest_addr = dest_addr_backup; } /* * do not check source address if is not used in operation */ if (hop != 0 && /* source is all ones */ hop != 1 && /* source is halftone only */ op != 0 && /* result is all zeroes */ op != 5 && /* result is destination */ op != 10 && /* result is ~destination */ op != 15 && /* result is all ones */ (source_addr <= 0x800 || (source_addr >= 0x0e80000 && source_addr < 0x1000000))) { panicbug("Blitter Source address out of range: $%08x", source_addr); return; } if (dest_addr <= 0x800 || (dest_addr >= 0x0e00000 && dest_addr < 0x1000000)) { panicbug("Blitter Destination address out of range: $%08x", dest_addr); return; } if (source_x_inc < 0) { do_hop_op_N[hop][op]( *this ); } else { do_hop_op_P[hop][op]( *this ); } } aranym-1.1.0/src/audio_dma.cpp0000664000175000017500000003031113454637621014414 0ustar joyjoy/* Audio DMA emulation ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "host.h" #include "audio_dma.h" #include "audio_conv.h" #define DEBUG 0 #include "debug.h" #include "SDL_compat.h" /*--- Defines ---*/ #define CTRL_TIMERA_RECORD_END (1<<11) #define CTRL_TIMERA_PLAYBACK_END (1<<10) #define CTRL_MFPI7_RECORD_END (1<<9) #define CTRL_MFPI7_PLAYBACK_END (1<<8) #define CTRL_RECORD_SELECT (1<<7) #define CTRL_PLAYBACK_SELECT (0<<7) #define CTRL_RECORD_REPEAT (1<<5) #define CTRL_RECORD_ENABLE (1<<4) #define CTRL_PLAYBACK_REPEAT (1<<1) #define CTRL_PLAYBACK_ENABLE (1<<0) #define MODE_MONITOR_TRACK 12 #define MODE_MONITOR_TRACK_MASK 3 #define MODE_MONITOR_TRACK0 (0<0) { int src_len = end_replay-current_replay; int dst_len = dest_len; audioConv->doConversion(Atari2HostAddr(current_replay), &src_len, dest, &dst_len); dest_len -= dst_len; dest += dst_len; current_replay += src_len; /* End of audio frame ? */ if (current_replaycontrol & CTRL_PLAYBACK_ENABLE) { if (getAUDIODMA()->control & CTRL_PLAYBACK_REPEAT) { start_replay = current_replay = getAUDIODMA()->start; end_replay = getAUDIODMA()->end; getAUDIODMA()->start_tic = SDL_GetTicks(); D(bug("audiodma: playback loop: 0x%08x to 0x%08x", start_replay, end_replay)); } else { getAUDIODMA()->control &= ~CTRL_PLAYBACK_ENABLE; playing = SDL_AUDIO_STOPPED; D(bug("audiodma: playback stop")); if (dest_len>0) { memset(dest, 0x80, dest_len); } break; } } /* Need to trigger MFP interrupt ? */ if (getAUDIODMA()->control & CTRL_TIMERA_PLAYBACK_END) { trigger_interrupt = 1; D(bug("audiodma: MFP Timer A interrupt to trigger")); } else if (getAUDIODMA()->control & CTRL_MFPI7_PLAYBACK_END) { trigger_interrupt = 1; D(bug("audiodma: MFP I7 interrupt to trigger")); } } if (trigger_interrupt) { /* Generate MFP interrupt if needed */ if (getAUDIODMA()->control & CTRL_TIMERA_PLAYBACK_END) { getMFP()->IRQ(13, 1); D(bug("audiodma: MFP Timer A interrupt triggered")); } else if (getAUDIODMA()->control & CTRL_MFPI7_PLAYBACK_END) { getMFP()->IRQ(15, 1); D(bug("audiodma: MFP I7 interrupt triggered")); } } } }; /*--- Constructor/destructor of class ---*/ AUDIODMA::AUDIODMA(memptr addr, uint32 size) : BASE_IO(addr, size) { D(bug("audiodma: interface created at 0x%06x", getHWoffset())); freqs[MODE_FREQ0>>MODE_FREQ] = 6146; /* 25.175MHz / (256 * 16) */ freqs[MODE_FREQ1>>MODE_FREQ] = 12292; /* 25.175MHz / (256 * 8) */ freqs[MODE_FREQ2>>MODE_FREQ] = 24585; /* 25.175MHz / (256 * 4) */ freqs[MODE_FREQ3>>MODE_FREQ] = 49170; /* 25.175MHz / (256 * 2) */ SDL_LockAudio(); audioConv = new AudioConv(); SDL_UnlockAudio(); reset(); host->audio.AddCallback(audio_callback, NULL); } AUDIODMA::~AUDIODMA() { D(bug("audiodma: interface destroyed at 0x%06x", getHWoffset())); host->audio.RemoveCallback(audio_callback); SDL_LockAudio(); delete audioConv; audioConv = NULL; SDL_UnlockAudio(); reset(); } /*--- Public functions ---*/ void AUDIODMA::reset() { start_tic = SDL_GetTicks(); start = current = end = control = mode = 0; playing = SDL_AUDIO_STOPPED; start_replay = current_replay = end_replay = 0; D(bug("audiodma: reset")); } uae_u8 AUDIODMA::handleRead(uaecptr addr) { uae_u8 value=0; switch(addr-getHWoffset()) { case 0x00: value = (control>>8) & 0xff; break; case 0x01: value = control & 0xff; break; case 0x03: value = (start>>16) & 0xff; break; case 0x05: value = (start>>8) & 0xff; break; case 0x07: value = start & 0xff; break; case 0x09: updateCurrent(); value = (current>>16) & 0xff; break; case 0x0b: updateCurrent(); value = (current>>8) & 0xff; break; case 0x0d: updateCurrent(); value = current & 0xff; break; case 0x0f: value = (end>>16) & 0xff; break; case 0x11: value = (end>>8) & 0xff; break; case 0x13: value = end & 0xff; break; case 0x20: value = (mode>>8) & 0xff; break; case 0x21: value = mode & 0xff; break; } #if 0 /*DEBUG*/ switch(addr-getHWoffset()) { case 0x00: case 0x01: D(bug("audiodma: control=0x%04x", control)); break; case 0x03: case 0x05: case 0x07: D(bug("audiodma: start=0x%06x", start)); break; case 0x09: case 0x0b: case 0x0d: D(bug("audiodma: current=0x%06x", current)); break; case 0x0f: case 0x11: case 0x13: D(bug("audiodma: end=0x%06x", end)); break; case 0x20: case 0x21: D(bug("audiodma: mode=0x%04x", mode)); break; } #endif return value; } void AUDIODMA::handleWrite(uaecptr addr, uae_u8 value) { switch(addr-getHWoffset()) { case 0x00: control &= 0x00ff; control |= value<<8; updateControl(); break; case 0x01: control &= 0xff00; control |= value; updateControl(); break; case 0x03: if ((control & CTRL_RECORD_SELECT)==CTRL_PLAYBACK_SELECT) { start &= 0x0000ffff; start |= value<<16; } break; case 0x05: if ((control & CTRL_RECORD_SELECT)==CTRL_PLAYBACK_SELECT) { start &= 0x00ff00ff; start |= value<<8; } break; case 0x07: if ((control & CTRL_RECORD_SELECT)==CTRL_PLAYBACK_SELECT) { start &= 0x00ffff00; start |= value; } break; case 0x0f: if ((control & CTRL_RECORD_SELECT)==CTRL_PLAYBACK_SELECT) { end &= 0x0000ffff; end |= value<<16; } break; case 0x11: if ((control & CTRL_RECORD_SELECT)==CTRL_PLAYBACK_SELECT) { end &= 0x00ff00ff; end |= value<<8; } break; case 0x13: if ((control & CTRL_RECORD_SELECT)==CTRL_PLAYBACK_SELECT) { end &= 0x00ffff00; end |= value; } break; case 0x20: mode &= 0x00ff; mode |= value<<8; updateMode(); break; case 0x21: mode &= 0xff00; mode |= value; updateMode(); break; } #if DEBUG switch(addr-getHWoffset()) { case 0x00: case 0x01: D(bug("audiodma: control=0x%04x", control)); if (control & CTRL_TIMERA_RECORD_END) { D(bug("audiodma: Timer A interrupt at end of record")); } if (control & CTRL_TIMERA_PLAYBACK_END) { D(bug("audiodma: Timer A interrupt at end of playback")); } if (control & CTRL_MFPI7_RECORD_END) { D(bug("audiodma: MFP I7 interrupt at end of record")); } if (control & CTRL_MFPI7_PLAYBACK_END) { D(bug("audiodma: MFP I7 interrupt at end of playback")); } if ((control & CTRL_RECORD_SELECT)==CTRL_RECORD_SELECT) { D(bug("audiodma: Select record registers")); } else { D(bug("audiodma: Select playback registers")); } if (control & CTRL_RECORD_REPEAT) { D(bug("audiodma: Record repeat mode")); } if (control & CTRL_RECORD_ENABLE) { D(bug("audiodma: Record mode enabled")); } if (control & CTRL_PLAYBACK_REPEAT) { D(bug("audiodma: Playback repeat mode")); } if (control & CTRL_PLAYBACK_ENABLE) { D(bug("audiodma: Playback mode enabled")); } break; case 0x03: case 0x05: case 0x07: D(bug("audiodma: start=0x%06x", start)); break; case 0x0f: case 0x11: case 0x13: D(bug("audiodma: end=0x%06x", end)); break; case 0x20: case 0x21: D(bug("audiodma: mode=0x%04x", mode)); D(bug("audiodma: Monitor track %d", (mode>>MODE_MONITOR_TRACK) & MODE_MONITOR_TRACK_MASK)); D(bug("audiodma: Play %d tracks", ((mode>>MODE_PLAY_TRACK) & MODE_PLAY_TRACK_MASK)+1)); switch (mode & (MODE_FORMAT_MASK<>MODE_FORMAT)&MODE_FORMAT_MASK)); break; } D(bug("audiodma: %d Hz", freqs[(mode>>MODE_FREQ) & MODE_FREQ_MASK])); break; } #endif } /*--- Private functions ---*/ void AUDIODMA::updateCurrent(void) { int time_elapsed, total_samples, total_duration, sample_size_shift; current = start_replay; if (playing == SDL_AUDIO_PLAYING) { time_elapsed = SDL_GetTicks() - start_tic; switch (mode & (MODE_FORMAT_MASK<>sample_size_shift; total_duration = (total_samples * 1000) / freq; if (total_duration<0) { total_duration = 1; } current += ((time_elapsed * total_samples)/ total_duration)<end_replay) current=end_replay; } } void AUDIODMA::updateControl(void) { SDL_LockAudio(); if ((control & CTRL_PLAYBACK_ENABLE)==CTRL_PLAYBACK_ENABLE) { /* Start replay ? */ if (playing == SDL_AUDIO_STOPPED) { start_replay = current_replay = start; end_replay = end; start_tic = SDL_GetTicks(); playing = SDL_AUDIO_PLAYING; } } else { /* Stop replay ? */ if (playing == SDL_AUDIO_PLAYING) { playing = SDL_AUDIO_STOPPED; } } SDL_UnlockAudio(); } void AUDIODMA::updateMode(void) { int channels, offset, skip, prediv; Uint16 format; SDL_LockAudio(); switch (mode & (MODE_FORMAT_MASK<>MODE_MONITOR_TRACK) & MODE_MONITOR_TRACK_MASK; offset *= ((format & 0xff)>>3)*channels; skip = ((mode>>MODE_PLAY_TRACK) & MODE_PLAY_TRACK_MASK)+1; skip *= ((format & 0xff)>>3)*channels; prediv = getCROSSBAR()->getIntPrediv(); if (prediv == 0) { freq = freqs[(mode>>MODE_FREQ) & MODE_FREQ_MASK]; } else { freq = getCROSSBAR()->getIntFreq() / (256 * (prediv+1)); } D(bug("audiodma: mode: format %s, %d channels, offset %d, skip %d, %d freq", HostAudio::FormatName(format), channels, offset, skip, freq)); audioConv->setConversion(format, channels, freq, offset, skip, host->audio.obtained.format, host->audio.obtained.channels, host->audio.obtained.freq); SDL_UnlockAudio(); } aranym-1.1.0/src/audio_crossbar.cpp0000664000175000017500000002120413454637621015472 0ustar joyjoy/* Audio Crossbar emulation ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "audio_crossbar.h" #define DEBUG 0 #include "debug.h" #include "SDL_compat.h" /*--- Defines ---*/ #define CLK_25M 25175040 #define CLK_32M 32000000 #define CLK_44K 22579200 #define CLOCK_MASK 3 #define CLOCK_25175K 0 #define CLOCK_EXT 1 #define CLOCK_32000K 2 #define OUTPUT_DSP_CONNECT 7 #define OUTPUT_DSP_CLOCK 5 #define OUTPUT_DSP_HANDSHAKE 4 #define OUTPUT_DMA_INPUT 3 #define OUTPUT_DMA_DMAIN (0<>8) & 0xff; break; case 0x01: value = output & 0xff; break; case 0x02: value = (input>>8) & 0xff; break; case 0x03: value = input & 0xff; break; case 0x04: value = extfreqdiv; break; case 0x05: value = intfreqdiv; break; case 0x06: value = rec_tracks & REC_TRACKS_MASK; break; case 0x07: value = in_source & INPUT_SOURCE_MASK; break; case 0x08: value = adc_input & ADC_INPUT_MASK; break; case 0x09: value = gain; break; case 0x0a: value = atten; break; case 0x11: value = gpio_dir & GPIO_DIR_MASK; break; case 0x13: value = gpio_data & GPIO_DATA_MASK; break; } return value; } void CROSSBAR::handleWrite(uaecptr addr, uae_u8 value) { switch(addr-getHWoffset()) { case 0x00: output &= 0x00ff; output |= value<<8; break; case 0x01: output &= 0xff00; output |= value; break; case 0x02: input &= 0x00ff; input |= value<<8; break; case 0x03: input &= 0xff00; input |= value; break; case 0x04: extfreqdiv = value & FREQ_PREDIV_MASK; break; case 0x05: intfreqdiv = value & FREQ_PREDIV_MASK; getAUDIODMA()->updateMode(); break; case 0x06: rec_tracks = value & REC_TRACKS_MASK; break; case 0x07: in_source = value & INPUT_SOURCE_MASK; break; case 0x08: adc_input = value & ADC_INPUT_MASK; break; case 0x09: gain = value & GAIN_MASK; break; case 0x0a: atten = value & ATTEN_MASK; break; case 0x11: gpio_dir = value & GPIO_DIR_MASK; break; case 0x13: gpio_data = value & GPIO_DATA_MASK; break; } #if DEBUG switch(addr-getHWoffset()) { case 0x00: case 0x01: D(bug("crossbar: output=0x%04x", output)); D(bug("crossbar: DSP out: connect=%d, clock=%s, handshake=%d", (output>>OUTPUT_DSP_CONNECT) & 1, freq_names[(output>>OUTPUT_DSP_CLOCK) & CLOCK_MASK], (output>>OUTPUT_DSP_HANDSHAKE) & 1 )); D(bug("crossbar: DMA out: connect=%s, clock=%s, handshake=%d", (output>>OUTPUT_DMA_INPUT) & 1 ? "All" : "DMA in", freq_names[(OUTPUT_DMA_CLOCK>>1) & CLOCK_MASK], (output>>OUTPUT_DMA_HANDSHAKE) & 1 )); D(bug("crossbar: Ext. input: clock=%s, handshake=%d", freq_names[(output>>OUTPUT_EXTIN_CLOCK) & CLOCK_MASK], (output>>OUTPUT_EXTIN_HANDSHAKE) & 1 )); D(bug("crossbar: ADC input: %s", (output>>OUTPUT_ADC_SYNC) & 1 ? "External sync" : "Internal sync" )); break; case 0x02: case 0x03: D(bug("crossbar: input=0x%04x", input)); D(bug("crossbar: DSP in: connect=%d, output=%s, handshake=%d", (input>>INPUT_DSPIN_CONNECT) & 1, out_names[(input>>INPUT_DSPIN_OUTPUT) & INPUT_MASK], (input>>INPUT_DSPIN_HANDSHAKE) & 1 )); D(bug("crossbar: DMA in: connect=%s, clock=%s, handshake=%d", (input>>INPUT_DMAIN) & 1 ? "All" : "DSP out", out_names[(input>>INPUT_DMAIN_OUTPUT) & INPUT_MASK], (input>>INPUT_DMAIN_HANDSHAKE) & 1 )); D(bug("crossbar: Ext. output: clock=%s, handshake=%d", out_names[(input>>INPUT_EXTOUT_OUTPUT) & INPUT_MASK], (input>>INPUT_EXTOUT_HANDSHAKE) & 1 )); D(bug("crossbar: DAC output: %s", out_names[(input>>INPUT_DACOUT_OUTPUT) & INPUT_MASK] )); break; case 0x04: D(bug("crossbar: extfreqdiv=0x%02x", extfreqdiv)); if (extfreqdiv==0) { D(bug("crossbar: STe compatible mode")); } break; case 0x05: D(bug("crossbar: intfreqdiv=0x%02x", intfreqdiv)); if (intfreqdiv==0) { D(bug("crossbar: STe compatible mode")); } break; case 0x06: D(bug("crossbar: rec_tracks=0x%02x", rec_tracks)); D(bug("crossbar: Record %d tracks", rec_tracks+1)); break; case 0x07: D(bug("crossbar: in_source=0x%02x", in_source)); if (in_source & INPUT_SOURCE_ADCDAC) { D(bug("crossbar: ADC/DAC")); } if (in_source & INPUT_SOURCE_MULTIPLEXER) { D(bug("crossbar: Multiplexer")); } break; case 0x08: D(bug("crossbar: adc_input=0x%02x", adc_input)); if ((adc_input & ADC_INPUT_RIGHT)==ADC_INPUT_RIGHT_PSG) { D(bug("crossbar: Right channel PSG")); } else { D(bug("crossbar: Right channel mic")); } if ((adc_input & ADC_INPUT_LEFT)==ADC_INPUT_LEFT_PSG) { D(bug("crossbar: Left channel PSG")); } else { D(bug("crossbar: Left channel mic")); } break; case 0x09: D(bug("crossbar: gain=0x%02x", gain)); D(bug("crossbar: Left=%d, Right=%d", (gain>>GAIN_LEFT) & GAIN_MASK, (gain>>GAIN_RIGHT) & GAIN_MASK)); break; case 0x0a: D(bug("crossbar: attenuation=0x%02x", atten)); D(bug("crossbar: Left=%d, Right=%d", (atten>>ATTEN_LEFT) & ATTEN_MASK, (atten>>ATTEN_RIGHT) & ATTEN_MASK)); break; case 0x11: D(bug("crossbar: gpio_dir=0x%02x", gpio_dir)); for (int i=0;i<3; i++) { D(bug("crossbar: Pin %d: %s", i, ((gpio_dir & (1<>OUTPUT_DMA_CLOCK) & CLOCK_MASK) { case 0: return CLK_25M; /* Falcon clock generator */ case 2: return CLK_32M; } return CLK_44K; /* 44.1 KHz clock generator */ } int CROSSBAR::getIntPrediv(void) { return intfreqdiv; } aranym-1.1.0/src/audio_conv.cpp0000664000175000017500000001221113454637621014617 0ustar joyjoy/* Audio format conversions ARAnyM (C) 2008 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "audio_conv.h" #include "host_audio.h" #define DEBUG 0 #include "debug.h" #define USE_SDL_RATECONVERSION 0 AudioConv::AudioConv(void) : tmpBuf(NULL), srcRate(0), srcChan(0), srcOffset(0), srcSkip(0), dstRate(0), tmpBufLen(0), volume(SDL_MIX_MAXVOLUME) { } AudioConv::~AudioConv() { if (tmpBuf) { free(tmpBuf); tmpBuf=NULL; } } /* SDL 1.2 won't properly convert between different rates so we use it only to convert formats */ void AudioConv::setConversion(Uint16 src_fmt, Uint8 src_chan, int src_rate, int src_offset, int src_skip, Uint16 dst_fmt, Uint8 dst_chan, int dst_rate) { #if SDL_VERSION_ATLEAST(2, 0, 0) && USE_SDL_RATECONVERSION SDL_BuildAudioCVT(&cvt, src_fmt, src_chan, src_rate, dst_fmt, dst_chan, dst_rate); #else SDL_BuildAudioCVT(&cvt, src_fmt, src_chan, dst_rate, dst_fmt, dst_chan, dst_rate); #endif srcRate = src_rate; srcOffset = src_offset; srcSkip = src_skip; srcChan = src_chan; dstRate = dst_rate; D(bug("audio_conv: %s, %d chans, %d Hz to %s, %d chans, %d Hz", HostAudio::FormatName(src_fmt), src_chan, src_rate, HostAudio::FormatName(dst_fmt), dst_chan, dst_rate)); D(bug("audio_conv: offset %d bytes, skip %d bytes in source", src_offset, src_skip)); } int AudioConv::rescaleFreq8(Uint8 *source, int *src_len, Uint8 *dest, int dst_len) { int srcSamplesRead=0, srcBytesRead=0; int dstSamplesWritten=0, dstBytesWritten=0; while ((srcBytesRead<*src_len) && (dstBytesWritten>1; int curOffset = srcOffset>>1; int srcLen = (*src_len)>>1; dst_len >>= 1; while ((srcWordsRead %p, %d", source, *src_len, dest, *dst_len)); #if SDL_VERSION_ATLEAST(2, 0, 0) && USE_SDL_RATECONVERSION /* Calc needed buffer size */ int neededBufSize = *src_len * cvt.len_mult; if (tmpBufLen dstRate) { neededBufSize = (neededBufSize * srcRate) / dstRate; } if (tmpBufLentmpBufLen) { neededBufSize = tmpBufLen; } switch(cvt.src_format & 0xff) { case 8: dstConvertedLen = rescaleFreq8(source, src_len, tmpBuf, tmpLen); break; case 16: dstConvertedLen = rescaleFreq16((Uint16 *) source, src_len, (Uint16 *) tmpBuf, tmpLen); break; } /* Then convert to final format */ cvt.buf = tmpBuf; cvt.len = dstConvertedLen; SDL_ConvertAudio(&cvt); #endif SDL_MixAudio(dest, cvt.buf, cvt.len_cvt, volume); /* Set converted length */ *dst_len = cvt.len_cvt; D(bug("audioconv: to %p, %d -> %p, %d", source, *src_len, dest, *dst_len)); } void AudioConv::setVolume(int newVolume) { volume = newVolume; } aranym-1.1.0/src/ata.cpp0000664000175000017500000037527713454637621013266 0ustar joyjoy///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2002 MandrakeSoft S.A. // // MandrakeSoft S.A. // 43, rue d'Aboukir // 75002 Paris - France // http://www.linux-mandrake.com/ // http://www.mandrakesoft.com/ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // Useful docs: // AT Attachment with Packet Interface // working draft by T13 at www.t13.org #include "sysdeps.h" #include "emu_bochs.h" #include "parameters.h" #include "ata.h" #include "hardware.h" #define DEBUG 0 #include "debug.h" #define INDEX_PULSE_CYCLE 10 #define ATA_DMA 0 #define PACKET_SIZE 12 bx_hard_drive_c bx_hard_drive; #ifdef BX_USE_HD_SMF #define this (&bx_hard_drive) #endif static unsigned max_multiple_sectors = 0; // was 0x3f static unsigned curr_multiple_sectors = 0; // was 0x3f // some packet handling macros #define EXTRACT_FIELD(arr,byte,start,num_bits) (((arr)[(byte)] >> (start)) & ((1 << (num_bits)) - 1)) #define get_packet_field(c,b,s,n) (EXTRACT_FIELD((BX_SELECTED_CONTROLLER((c)).buffer),(b),(s),(n))) #define get_packet_byte(c,b) (BX_SELECTED_CONTROLLER((c)).buffer[(b)]) #define get_packet_word(c,b) (((uint16)BX_SELECTED_CONTROLLER((c)).buffer[(b)] << 8) | BX_SELECTED_CONTROLLER((c)).buffer[(b)+1]) #define BX_CONTROLLER(c,a) (BX_HD_THIS channels[(c)].drives[(a)]).controller #define BX_DRIVE(c,a) (BX_HD_THIS channels[(c)].drives[(a)]) #define BX_DRIVE_IS_PRESENT(c,a) (BX_HD_THIS channels[(c)].drives[(a)].device_type != IDE_NONE) #define BX_DRIVE_IS_HD(c,a) (BX_DRIVE(c, a).device_type == IDE_DISK) #define BX_DRIVE_IS_CD(c,a) (BX_DRIVE(c, a).device_type == IDE_CDROM) #define BX_MASTER_IS_PRESENT(c) BX_DRIVE_IS_PRESENT((c),0) #define BX_SLAVE_IS_PRESENT(c) BX_DRIVE_IS_PRESENT((c),1) #define BX_ANY_IS_PRESENT(c) (BX_MASTER_IS_PRESENT(c) || BX_SLAVE_IS_PRESENT(c)) #define BX_SELECTED_CONTROLLER(c) (BX_CONTROLLER((c),BX_HD_THIS channels[(c)].drive_select)) #define BX_SELECTED_DRIVE(c) (BX_DRIVE((c),BX_HD_THIS channels[(c)].drive_select)) #define BX_MASTER_SELECTED(c) (!BX_HD_THIS channels[(c)].drive_select) #define BX_SLAVE_SELECTED(c) (BX_HD_THIS channels[(c)].drive_select) #define BX_SELECTED_IS_PRESENT(c) (BX_DRIVE_IS_PRESENT((c),BX_SLAVE_SELECTED((c)))) #define BX_SELECTED_IS_HD(c) (BX_DRIVE_IS_HD((c),BX_SLAVE_SELECTED((c)))) #define BX_SELECTED_IS_CD(c) (BX_DRIVE_IS_CD((c),BX_SLAVE_SELECTED((c)))) #define BX_SELECTED_MODEL(c) (BX_SELECTED_DRIVE(c).model_no) #define BX_SELECTED_TYPE_STRING(channel) ((BX_SELECTED_IS_CD(channel)) ? "CD-ROM" : "DISK") #define WRITE_FEATURES(c,a) do { uint8 _a = a; BX_CONTROLLER((c),0).features = _a; BX_CONTROLLER((c),1).features = _a; } while(0) #define WRITE_SECTOR_COUNT(c,a) do { uint8 _a = a; BX_CONTROLLER((c),0).sector_count = _a; BX_CONTROLLER((c),1).sector_count = _a; } while(0) #define WRITE_SECTOR_NUMBER(c,a) do { uint8 _a = a; BX_CONTROLLER((c),0).sector_no = _a; BX_CONTROLLER((c),1).sector_no = _a; } while(0) #define WRITE_CYLINDER_LOW(c,a) do { uint8 _a = a; BX_CONTROLLER((c),0).cylinder_no = (BX_CONTROLLER((c),0).cylinder_no & 0xff00) | _a; BX_CONTROLLER((c),1).cylinder_no = (BX_CONTROLLER((c),1).cylinder_no & 0xff00) | _a; } while(0) #define WRITE_CYLINDER_HIGH(c,a) do { uint16 _a = a; BX_CONTROLLER((c),0).cylinder_no = (_a << 8) | (BX_CONTROLLER((c),0).cylinder_no & 0xff); BX_CONTROLLER((c),1).cylinder_no = (_a << 8) | (BX_CONTROLLER((c),1).cylinder_no & 0xff); } while(0) #define WRITE_HEAD_NO(c,a) do { uint8 _a = a; BX_CONTROLLER((c),0).head_no = _a; BX_CONTROLLER((c),1).head_no = _a; } while(0) #define WRITE_LBA_MODE(c,a) do { uint8 _a = a; BX_CONTROLLER((c),0).lba_mode = _a; BX_CONTROLLER((c),1).lba_mode = _a; } while(0) //static unsigned im_here = 0; bx_hard_drive_c::bx_hard_drive_c(void) { for (Bit8u channel = 0; channel < BX_MAX_ATA_CHANNEL; channel++) { channels[channel].drives[0].hard_drive = new default_image_t(); channels[channel].drives[1].hard_drive = new default_image_t(); } } bx_hard_drive_c::~bx_hard_drive_c(void) { for (Bit8u channel = 0; channel < BX_MAX_ATA_CHANNEL; channel++) { if (channels[channel].drives[0].hard_drive != NULL) /* DT 17.12.2001 21:55 */ { delete channels[channel].drives[0].hard_drive; channels[channel].drives[0].hard_drive = NULL; } if (channels[channel].drives[1].hard_drive != NULL) { delete channels[channel].drives[1].hard_drive; channels[channel].drives[1].hard_drive = NULL; /* DT 17.12.2001 21:56 */ } } } Bit32u fcha2io(Bit32u address) { switch (address) { case 0xf00000: /* data */ return 0x00; case 0xf00005: /* error register */ return 0x01; case 0xf00009: /* sector count */ return 0x02; case 0xf0000d: /* sector number */ return 0x03; case 0xf00011: /* cylinder low */ return 0x04; case 0xf00015: /* cylinder high */ return 0x05; case 0xf00019: /* drive & head */ return 0x06; case 0xf0001d: /* status/command */ return 0x07; case 0xf00039: /* alternate status/data output */ return 0x16; default: return 0xffffffff; } } Bit32u nila2io(Bit32u /*address */ ) { return 0xffffffff; } void bx_hard_drive_c::init(void) { Bit8u channel; for (channel = 0; channel < BX_MAX_ATA_CHANNEL; channel++) { switch (channel) { case 0: BX_HD_THIS channels[channel].addr2io = fcha2io; break; default: BX_HD_THIS channels[channel].addr2io = nila2io; break; } BX_HD_THIS channels[channel].drive_select = 0; } for (channel = 0; channel < BX_MAX_ATA_CHANNEL; channel++) { for (Bit8u device = 0; device < 2; device++) { // Initialize controller state, even if device is not present BX_CONTROLLER(channel, device).status.busy = 0; BX_CONTROLLER(channel, device).status.drive_ready = 1; BX_CONTROLLER(channel, device).status.write_fault = 0; BX_CONTROLLER(channel, device).status.seek_complete = 1; BX_CONTROLLER(channel, device).status.drq = 0; BX_CONTROLLER(channel, device).status.corrected_data = 0; BX_CONTROLLER(channel, device).status.index_pulse = 0; BX_CONTROLLER(channel, device).status.index_pulse_count = 0; BX_CONTROLLER(channel, device).status.err = 0; BX_CONTROLLER(channel, device).error_register = 0x01; // diagnostic code: no error BX_CONTROLLER(channel, device).head_no = 0; BX_CONTROLLER(channel, device).sector_count = 1; BX_CONTROLLER(channel, device).sector_no = 1; BX_CONTROLLER(channel, device).cylinder_no = 0; BX_CONTROLLER(channel, device).current_command = 0x00; BX_CONTROLLER(channel, device).buffer_index = 0; BX_CONTROLLER(channel, device).control.reset = 0; BX_CONTROLLER(channel, device).control.disable_irq = 0; BX_CONTROLLER(channel, device).reset_in_progress = 0; BX_CONTROLLER(channel, device).sectors_per_block = 0x80; BX_CONTROLLER(channel, device).lba_mode = 0; BX_CONTROLLER(channel, device).features = 0; // If not present BX_HD_THIS channels[channel].drives[device].device_type = IDE_NONE; if (!bx_options.atadevice[channel][device].present) { continue; } // Make model string strncpy((char *) BX_HD_THIS channels[channel].drives[device].model_no, bx_options.atadevice[channel][device].model, 40); while (strlen((char *) BX_HD_THIS channels[channel].drives[device].model_no) < 40) { strcat((char *) BX_HD_THIS channels[channel].drives[device].model_no, " "); } if (bx_options.atadevice[channel][device].type == IDE_DISK /*BX_ATA_DEVICE_DISK */ ) { D(bug("Hard-Disk on target %d/%d", channel, device)); BX_HD_THIS channels[channel].drives[device].device_type = IDE_DISK; BX_HD_THIS channels[channel].drives[device].hard_drive->cylinders = bx_options.atadevice[channel][device].cylinders; BX_HD_THIS channels[channel].drives[device].hard_drive->heads = bx_options.atadevice[channel][device].heads; BX_HD_THIS channels[channel].drives[device].hard_drive->sectors = bx_options.atadevice[channel][device].spt; BX_HD_THIS channels[channel].drives[device].hard_drive->byteswap = bx_options.atadevice[channel][device].byteswap; // BX_HD_THIS channels[channel].drives[device].hard_drive->readonly = bx_options.atadevice[channel][device].readonly; /* open hard drive image file */ if ((BX_HD_THIS channels[channel].drives[device].hard_drive-> open(bx_options.atadevice[channel][device].path, bx_options.atadevice[channel][device].readonly)) < 0) { panicbug("could not open hard drive image file '%s'", bx_options.atadevice[channel][device].path); } D(bug("HD on ata%d-%d: '%s', CHS %u/%u/%u, swap %d", channel, device, bx_options.atadevice[channel][device].path, BX_DRIVE(channel, device).hard_drive->cylinders, BX_DRIVE(channel, device).hard_drive->heads, BX_DRIVE(channel, device).hard_drive->sectors, BX_DRIVE(channel, device).hard_drive->byteswap)); } else if (bx_options.atadevice[channel][device].type == IDE_CDROM /* BX_ATA_DEVICE_CDROM */ ) { D(bug("CDROM on target %d/%d", channel, device)); BX_HD_THIS channels[channel].drives[device].device_type = IDE_CDROM; BX_HD_THIS channels[channel].drives[device].cdrom.locked = 0; BX_HD_THIS channels[channel].drives[device].sense.sense_key = SENSE_NONE; BX_HD_THIS channels[channel].drives[device].sense.asc = 0; BX_HD_THIS channels[channel].drives[device].sense.ascq = 0; // Check bit fields BX_CONTROLLER(channel, device).sector_count = 0; BX_CONTROLLER(channel, device).interrupt_reason.c_d = 1; if (BX_CONTROLLER(channel, device).sector_count != 0x01) panicbug("interrupt reason bit field error"); BX_CONTROLLER(channel, device).sector_count = 0; BX_CONTROLLER(channel, device).interrupt_reason.i_o = 1; if (BX_CONTROLLER(channel, device).sector_count != 0x02) panicbug("interrupt reason bit field error"); BX_CONTROLLER(channel, device).sector_count = 0; BX_CONTROLLER(channel, device).interrupt_reason.rel = 1; if (BX_CONTROLLER(channel, device).sector_count != 0x04) panicbug("interrupt reason bit field error"); BX_CONTROLLER(channel, device).sector_count = 0; BX_CONTROLLER(channel, device).interrupt_reason.tag = 3; if (BX_CONTROLLER(channel, device).sector_count != 0x18) panicbug("interrupt reason bit field error"); BX_CONTROLLER(channel, device).sector_count = 0; // allocate low level driver #ifdef LOWLEVEL_CDROM BX_HD_THIS channels[channel].drives[device].cdrom.cd = new LOWLEVEL_CDROM(bx_options.atadevice[channel][device].path); D2(bug("CD on ata%d-%d: '%s'", channel, device, bx_options.atadevice[channel][device].path)); if (bx_options.atadevice[channel][device].status == BX_INSERTED) { if (BX_HD_THIS channels[channel].drives[device].cdrom.cd->insert_cdrom()) { D2(bug("Media present in CD-ROM drive")); BX_HD_THIS channels[channel].drives[device].cdrom.ready = 1; BX_HD_THIS channels[channel].drives[device].cdrom.capacity = BX_HD_THIS channels[channel].drives[device].cdrom.cd->capacity(); } else { D2(bug("Could not locate CD-ROM, continuing with media not present")); BX_HD_THIS channels[channel].drives[device].cdrom.ready = 0; bx_options.atadevice[channel][device].status = BX_EJECTED; } } else { #endif D2(bug("Media not present in CD-ROM drive")); BX_HD_THIS channels[channel].drives[device].cdrom.ready = 0; #ifdef LOWLEVEL_CDROM } #endif } } } } void bx_hard_drive_c::reset(unsigned /*type */ ) { getMFP()->setGPIPbit(0x20, 0x20); // lower the interrupt } #define GOTO_RETURN_VALUE if(io_len==4){\ goto return_value32;\ }\ else if(io_len==2){\ value16=(Bit16u)value32;\ goto return_value16;\ }\ else{\ value8=(Bit8u)value32;\ goto return_value8;\ } // static IO port read callback handler // redirects to non-static class handler to avoid virtual functions Bit32u bx_hard_drive_c::read_handler(void *this_ptr, Bit32u address, unsigned io_len) { #ifndef BX_USE_HD_SMF bx_hard_drive_c *class_ptr = (bx_hard_drive_c *) this_ptr; return (class_ptr->read(address, io_len)); } Bit32u bx_hard_drive_c::read(Bit32u address, unsigned io_len) { #else UNUSED(this_ptr); #endif // !BX_USE_HD_SMF Bit8u value8; Bit16u value16; Bit32u value32; Bit8u channel = BX_MAX_ATA_CHANNEL; Bit32u port = 0xffffffff; for (channel = 0; channel < BX_MAX_ATA_CHANNEL; channel++) { if ((port = BX_HD_THIS channels[channel].addr2io(address)) != 0xffffffff) break; } if (channel == BX_MAX_ATA_CHANNEL) { D(panicbug("Unable to find ATA channel, ioport=0x%08x", address)); return 0; } if (io_len > 1 && port != 0x00) { D(panicbug("non-byte IO read to 0x%08x", (unsigned) address)); } switch (port) { case 0x00: // hard disk data (16bit) (f00000) if (BX_SELECTED_CONTROLLER(channel).status.drq == 0) { D(bug("IO read(0x%08x) with drq == 0: last command was %02xh", address, (unsigned) BX_SELECTED_CONTROLLER(channel).current_command)); return 0; } D(bug("IO read(0x%08x): current command is %02xh", address, (unsigned) BX_SELECTED_CONTROLLER(channel).current_command)); switch (BX_SELECTED_CONTROLLER(channel).current_command) { case 0x20: // READ SECTORS, with retries case 0x21: // READ SECTORS, without retries if (io_len == 1) { panicbug("byte IO read from 0x%08x", (unsigned) address); } if (BX_SELECTED_CONTROLLER(channel).buffer_index >= 512) { D(bug("IO read(0x%08x): buffer_index >= 512", address)); } #ifdef BX_SupportRepeatSpeedups if (BX_HD_THIS devices->bulkIOQuantumsRequested) { unsigned transferLen, uantumsMax; quantumsMax = (512 - BX_SELECTED_CONTROLLER(channel).buffer_index) / io_len; if (quantumsMax == 0) D(panicbug("IO read(0x%08x): not enough space for read", address)); BX_HD_THIS devices->bulkIOQuantumsTransferred = BX_HD_THIS devices->bulkIOQuantumsRequested; if (quantumsMax < BX_HD_THIS devices->bulkIOQuantumsTransferred) BX_HD_THIS devices->bulkIOQuantumsTransferred = quantumsMax; transferLen = io_len * BX_HD_THIS devices->bulkIOQuantumsTransferred; memcpy((Bit8u *) BX_HD_THIS devices->bulkIOHostAddr, &BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index], transferLen); BX_HD_THIS devices->bulkIOHostAddr += transferLen; BX_SELECTED_CONTROLLER(channel).buffer_index += transferLen; value32 = 0; // Value returned not important; } else #endif { value32 = 0L; bool bs = BX_SELECTED_DRIVE(channel).hard_drive->byteswap; /* FALCON disk image (byte swap) */ switch (io_len) { case 4: if (bs) { value32 |= BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 0] << 24; value32 |= BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 1] << 16; value32 |= BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 2] << 8; value32 |= BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 3]; // value32 = ((value32 >> 16) & 0x0000ffff) | ((value32 & 0x0000ffff) << 16); /* FALCON (word swap for long access to data register) */ } else { value32 |= BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 1] << 24; value32 |= BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 0] << 16; value32 |= BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 3] << 8; value32 |= BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 2]; // value32 = ((value32 >> 16) & 0x0000ffff) | ((value32 & 0x0000ffff) << 16); /* FALCON (word swap for long access to data register) */ } break; case 2: if (bs) { value32 |= BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 0] << 8; value32 |= BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 1]; } else { value32 |= BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 1] << 8; value32 |= BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 0]; } break; } BX_SELECTED_CONTROLLER(channel).buffer_index += io_len; } // if buffer completely read if (BX_SELECTED_CONTROLLER(channel).buffer_index >= 512) { // update sector count, sector number, cylinder, // drive, head, status // if there are more sectors, read next one in... // BX_SELECTED_CONTROLLER(channel).buffer_index = 0; increment_address(channel); BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.write_fault = 0; if (bx_options.newHardDriveSupport) BX_SELECTED_CONTROLLER(channel).status.seek_complete = 1; else BX_SELECTED_CONTROLLER(channel).status.seek_complete = 0; BX_SELECTED_CONTROLLER(channel).status.corrected_data = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; if (BX_SELECTED_CONTROLLER(channel).sector_count == 0) { BX_SELECTED_CONTROLLER(channel).status.drq = 0; } else { /* read next one into controller buffer */ off_t logical_sector; off_t ret; BX_SELECTED_CONTROLLER(channel).status.drq = 1; BX_SELECTED_CONTROLLER(channel).status.seek_complete = 1; if (!calculate_logical_address(channel, &logical_sector)) { bug("multi-sector read reached invalid sector %lu, aborting", (unsigned long) logical_sector); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); GOTO_RETURN_VALUE; } ret = BX_SELECTED_DRIVE(channel).hard_drive->lseek(logical_sector * 512, SEEK_SET); if (ret < 0) { bug("could not lseek() hard drive image file"); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); GOTO_RETURN_VALUE; } ret = BX_SELECTED_DRIVE(channel).hard_drive->read((bx_ptr_t) BX_SELECTED_CONTROLLER(channel).buffer, 512); if (ret < 512) { bug("logical sector was %lu", (unsigned long) logical_sector); bug("could not read() hard drive image file at byte %lu", (unsigned long) logical_sector * 512); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); GOTO_RETURN_VALUE; } BX_SELECTED_CONTROLLER(channel).buffer_index = 0; raise_interrupt(channel); } } GOTO_RETURN_VALUE; break; case 0xec: // IDENTIFY DEVICE case 0xa1: // IDENTIFY PACKET DEVICE if (bx_options.newHardDriveSupport) { unsigned index; BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.write_fault = 0; BX_SELECTED_CONTROLLER(channel).status.seek_complete = 1; BX_SELECTED_CONTROLLER(channel).status.corrected_data = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; index = BX_SELECTED_CONTROLLER(channel).buffer_index; value32 = BX_SELECTED_CONTROLLER(channel).buffer[index]; index++; if (io_len >= 2) { value32 |= (BX_SELECTED_CONTROLLER(channel).buffer[index] << 8); index++; } if (io_len == 4) { value32 |= (BX_SELECTED_CONTROLLER(channel).buffer[index] << 16); value32 |= (BX_SELECTED_CONTROLLER(channel).buffer[index + 1] << 24); value32 = ((value32 >> 16) & 0x0000ffff) | ((value32 & 0x0000ffff) << 16); /* FALCON (word swap for long access to data register) */ index += 2; } BX_SELECTED_CONTROLLER(channel).buffer_index = index; if (BX_SELECTED_CONTROLLER(channel).buffer_index >= 512) { BX_SELECTED_CONTROLLER(channel).status.drq = 0; } GOTO_RETURN_VALUE; } else { D(bug("IO read(0x%08x): current command is 0x%02x", address, (unsigned) BX_SELECTED_CONTROLLER(channel).current_command)); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); } break; case 0xa0: { // PACKET COMMAND unsigned index = BX_SELECTED_CONTROLLER(channel).buffer_index; unsigned increment = 0; // Load block if necessary if (index >= 2048) { if (index > 2048) { D(bug("index > 2048 : 0x%x", index)); } switch (BX_SELECTED_DRIVE(channel).atapi.command) { case 0x28: // read (10) case 0xa8: // read (12) #ifdef LOWLEVEL_CDROM BX_SELECTED_DRIVE(channel).cdrom.cd->read_block(BX_SELECTED_CONTROLLER(channel).buffer, BX_SELECTED_DRIVE(channel).cdrom.next_lba); BX_SELECTED_DRIVE(channel).cdrom.next_lba++; BX_SELECTED_DRIVE(channel).cdrom.remaining_blocks--; // one block transfered, start at beginnig index = 0; #else D(panicbug("Read with no LOWLEVEL_CDROM")); #endif break; default: // no need to load a new block break; } } value32 = BX_SELECTED_CONTROLLER(channel).buffer[index + increment]; increment++; if (io_len >= 2) { value32 |= (BX_SELECTED_CONTROLLER(channel).buffer[index + increment] << 8); increment++; } if (io_len == 4) { value32 |= (BX_SELECTED_CONTROLLER(channel).buffer[index + increment] << 16); value32 |= (BX_SELECTED_CONTROLLER(channel).buffer[index + increment + 1] << 24); increment += 2; } BX_SELECTED_CONTROLLER(channel).buffer_index = index + increment; BX_SELECTED_CONTROLLER(channel).drq_index += increment; if (BX_SELECTED_CONTROLLER(channel).drq_index >= (unsigned) BX_SELECTED_DRIVE(channel).atapi.drq_bytes) { BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).drq_index = 0; BX_SELECTED_DRIVE(channel).atapi.total_bytes_remaining -= BX_SELECTED_DRIVE(channel).atapi.drq_bytes; if (BX_SELECTED_DRIVE(channel).atapi.total_bytes_remaining > 0) { // one or more blocks remaining (works only for single block commands) BX_SELECTED_CONTROLLER(channel).interrupt_reason.i_o = 1; BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drq = 1; BX_SELECTED_CONTROLLER(channel).interrupt_reason.c_d = 0; // set new byte count if last block if (BX_SELECTED_DRIVE(channel).atapi.total_bytes_remaining < BX_SELECTED_CONTROLLER(channel).byte_count) { BX_SELECTED_CONTROLLER(channel).byte_count = BX_SELECTED_DRIVE(channel).atapi.total_bytes_remaining; } BX_SELECTED_DRIVE(channel).atapi.drq_bytes = BX_SELECTED_CONTROLLER(channel).byte_count; raise_interrupt(channel); } else { // all bytes read BX_SELECTED_CONTROLLER(channel).interrupt_reason.i_o = 1; BX_SELECTED_CONTROLLER(channel).interrupt_reason.c_d = 1; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).interrupt_reason.rel = 0; BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; raise_interrupt(channel); } } GOTO_RETURN_VALUE; break; } // List all the read operations that are defined in the ATA/ATAPI spec // that we don't support. Commands that are listed here will cause a // BX_ERROR, which is non-fatal, and the command will be aborted. case 0x08: bug("read cmd 0x08 (DEVICE RESET) not supported"); command_aborted(channel, 0x08); break; case 0x10: bug("read cmd 0x10 (RECALIBRATE) not supported"); command_aborted(channel, 0x10); break; case 0x22: bug("read cmd 0x22 (READ LONG) not supported"); command_aborted(channel, 0x22); break; case 0x23: bug("read cmd 0x23 (READ LONG NO RETRY) not supported"); command_aborted(channel, 0x23); break; case 0x24: bug("read cmd 0x24 (READ SECTORS EXT) not supported"); command_aborted(channel, 0x24); break; case 0x25: bug("read cmd 0x25 (READ DMA EXT) not supported"); command_aborted(channel, 0x25); break; case 0x26: bug("read cmd 0x26 (READ DMA QUEUED EXT) not supported"); command_aborted(channel, 0x26); break; case 0x27: bug("read cmd 0x27 (READ NATIVE MAX ADDRESS EXT) not supported"); command_aborted(channel, 0x27); break; case 0x29: bug("read cmd 0x29 (READ MULTIPLE EXT) not supported"); command_aborted(channel, 0x29); break; case 0x2A: bug("read cmd 0x2A (READ STREAM DMA) not supported"); command_aborted(channel, 0x2A); break; case 0x2B: bug("read cmd 0x2B (READ STREAM PIO) not supported"); command_aborted(channel, 0x2B); break; case 0x2F: bug("read cmd 0x2F (READ LOG EXT) not supported"); command_aborted(channel, 0x2F); break; case 0x30: bug("read cmd 0x30 (WRITE SECTORS) not supported"); command_aborted(channel, 0x30); break; case 0x31: bug("read cmd 0x31 (WRITE SECTORS NO RETRY) not supported"); command_aborted(channel, 0x31); break; case 0x32: bug("read cmd 0x32 (WRITE LONG) not supported"); command_aborted(channel, 0x32); break; case 0x33: bug("read cmd 0x33 (WRITE LONG NO RETRY) not supported"); command_aborted(channel, 0x33); break; case 0x34: bug("read cmd 0x34 (WRITE SECTORS EXT) not supported"); command_aborted(channel, 0x34); break; case 0x35: bug("read cmd 0x35 (WRITE DMA EXT) not supported"); command_aborted(channel, 0x35); break; case 0x36: bug("read cmd 0x36 (WRITE DMA QUEUED EXT) not supported"); command_aborted(channel, 0x36); break; case 0x37: bug("read cmd 0x37 (SET MAX ADDRESS EXT) not supported"); command_aborted(channel, 0x37); break; case 0x38: bug("read cmd 0x38 (CFA WRITE SECTORS W/OUT ERASE) not supported"); command_aborted(channel, 0x38); break; case 0x39: bug("read cmd 0x39 (WRITE MULTIPLE EXT) not supported"); command_aborted(channel, 0x39); break; case 0x3A: bug("read cmd 0x3A (WRITE STREAM DMA) not supported"); command_aborted(channel, 0x3A); break; case 0x3B: bug("read cmd 0x3B (WRITE STREAM PIO) not supported"); command_aborted(channel, 0x3B); break; case 0x3F: bug("read cmd 0x3F (WRITE LOG EXT) not supported"); command_aborted(channel, 0x3F); break; case 0x40: bug("read cmd 0x40 (READ VERIFY SECTORS) not supported"); command_aborted(channel, 0x40); break; case 0x41: bug("read cmd 0x41 (READ VERIFY SECTORS NO RETRY) not supported"); command_aborted(channel, 0x41); break; case 0x42: bug("read cmd 0x42 (READ VERIFY SECTORS EXT) not supported"); command_aborted(channel, 0x42); break; case 0x50: bug("read cmd 0x50 (FORMAT TRACK) not supported"); command_aborted(channel, 0x50); break; case 0x51: bug("read cmd 0x51 (CONFIGURE STREAM) not supported"); command_aborted(channel, 0x51); break; case 0x70: bug("read cmd 0x70 (SEEK) not supported"); command_aborted(channel, 0x70); break; case 0x87: bug("read cmd 0x87 (CFA TRANSLATE SECTOR) not supported"); command_aborted(channel, 0x87); break; case 0x90: bug("read cmd 0x90 (EXECUTE DEVICE DIAGNOSTIC) not supported"); command_aborted(channel, 0x90); break; case 0x91: bug("read cmd 0x91 (INITIALIZE DEVICE PARAMETERS) not supported"); command_aborted(channel, 0x91); break; case 0x92: bug("read cmd 0x92 (DOWNLOAD MICROCODE) not supported"); command_aborted(channel, 0x92); break; case 0x94: bug("read cmd 0x94 (STANDBY IMMEDIATE) not supported"); command_aborted(channel, 0x94); break; case 0x95: bug("read cmd 0x95 (IDLE IMMEDIATE) not supported"); command_aborted(channel, 0x95); break; case 0x96: bug("read cmd 0x96 (STANDBY) not supported"); command_aborted(channel, 0x96); break; case 0x97: bug("read cmd 0x97 (IDLE) not supported"); command_aborted(channel, 0x97); break; case 0x98: bug("read cmd 0x98 (CHECK POWER MODE) not supported"); command_aborted(channel, 0x98); break; case 0x99: bug("read cmd 0x99 (SLEEP) not supported"); command_aborted(channel, 0x99); break; case 0xA2: bug("read cmd 0xA2 (SERVICE) not supported"); command_aborted(channel, 0xA2); break; case 0xB0: bug("read cmd 0xB0 (SMART DISABLE OPERATIONS) not supported"); command_aborted(channel, 0xB0); break; case 0xB1: bug("read cmd 0xB1 (DEVICE CONFIGURATION FREEZE LOCK) not supported"); command_aborted(channel, 0xB1); break; case 0xC0: bug("read cmd 0xC0 (CFA ERASE SECTORS) not supported"); command_aborted(channel, 0xC0); break; case 0xC4: bug("read cmd 0xC4 (READ MULTIPLE) not supported"); command_aborted(channel, 0xC4); break; case 0xC5: bug("read cmd 0xC5 (WRITE MULTIPLE) not supported"); command_aborted(channel, 0xC5); break; case 0xC6: bug("read cmd 0xC6 (SET MULTIPLE MODE) not supported"); command_aborted(channel, 0xC6); break; case 0xC7: bug("read cmd 0xC7 (READ DMA QUEUED) not supported"); command_aborted(channel, 0xC7); break; case 0xC8: bug("read cmd 0xC8 (READ DMA) not supported"); command_aborted(channel, 0xC8); break; case 0xC9: bug("read cmd 0xC9 (READ DMA NO RETRY) not supported"); command_aborted(channel, 0xC9); break; case 0xCA: bug("read cmd 0xCA (WRITE DMA) not supported"); command_aborted(channel, 0xCA); break; case 0xCC: bug("read cmd 0xCC (WRITE DMA QUEUED) not supported"); command_aborted(channel, 0xCC); break; case 0xCD: bug("read cmd 0xCD (CFA WRITE MULTIPLE W/OUT ERASE) not supported"); command_aborted(channel, 0xCD); break; case 0xD1: bug("read cmd 0xD1 (CHECK MEDIA CARD TYPE) not supported"); command_aborted(channel, 0xD1); break; case 0xDA: bug("read cmd 0xDA (GET MEDIA STATUS) not supported"); command_aborted(channel, 0xDA); break; case 0xDE: bug("read cmd 0xDE (MEDIA LOCK) not supported"); command_aborted(channel, 0xDE); break; case 0xDF: bug("read cmd 0xDF (MEDIA UNLOCK) not supported"); command_aborted(channel, 0xDF); break; case 0xE0: bug("read cmd 0xE0 (STANDBY IMMEDIATE) not supported"); command_aborted(channel, 0xE0); break; case 0xE1: bug("read cmd 0xE1 (IDLE IMMEDIATE) not supported"); command_aborted(channel, 0xE1); break; case 0xE2: bug("read cmd 0xE2 (STANDBY) not supported"); command_aborted(channel, 0xE2); break; case 0xE3: bug("read cmd 0xE3 (IDLE) not supported"); command_aborted(channel, 0xE3); break; case 0xE4: bug("read cmd 0xE4 (READ BUFFER) not supported"); command_aborted(channel, 0xE4); break; case 0xE5: bug("read cmd 0xE5 (CHECK POWER MODE) not supported"); command_aborted(channel, 0xE5); break; case 0xE6: bug("read cmd 0xE6 (SLEEP) not supported"); command_aborted(channel, 0xE6); break; case 0xE7: bug("read cmd 0xE7 (FLUSH CACHE) not supported"); command_aborted(channel, 0xE7); break; case 0xE8: bug("read cmd 0xE8 (WRITE BUFFER) not supported"); command_aborted(channel, 0xE8); break; case 0xEA: bug("read cmd 0xEA (FLUSH CACHE EXT) not supported"); command_aborted(channel, 0xEA); break; case 0xED: bug("read cmd 0xED (MEDIA EJECT) not supported"); command_aborted(channel, 0xED); break; case 0xEF: bug("read cmd 0xEF (SET FEATURES) not supported"); command_aborted(channel, 0xEF); break; case 0xF1: bug("read cmd 0xF1 (SECURITY SET PASSWORD) not supported"); command_aborted(channel, 0xF1); break; case 0xF2: bug("read cmd 0xF2 (SECURITY UNLOCK) not supported"); command_aborted(channel, 0xF2); break; case 0xF3: bug("read cmd 0xF3 (SECURITY ERASE PREPARE) not supported"); command_aborted(channel, 0xF3); break; case 0xF4: bug("read cmd 0xF4 (SECURITY ERASE UNIT) not supported"); command_aborted(channel, 0xF4); break; case 0xF5: bug("read cmd 0xF5 (SECURITY FREEZE LOCK) not supported"); command_aborted(channel, 0xF5); break; case 0xF6: bug("read cmd 0xF6 (SECURITY DISABLE PASSWORD) not supported"); command_aborted(channel, 0xF6); break; case 0xF8: bug("read cmd 0xF8 (READ NATIVE MAX ADDRESS) not supported"); command_aborted(channel, 0xF8); break; case 0xF9: bug("read cmd 0xF9 (SET MAX ADDRESS) not supported"); command_aborted(channel, 0xF9); break; default: panicbug("IO read(0x%08x): current command is 0x%02x", address, (unsigned) BX_SELECTED_CONTROLLER(channel).current_command); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); } break; case 0x01: // hard disk error register (f00005) BX_SELECTED_CONTROLLER(channel).status.err = 0; value8 = (!BX_SELECTED_IS_PRESENT(channel)) ? 0 : BX_SELECTED_CONTROLLER(channel).error_register; goto return_value8; break; case 0x02: // hard disk sector count / interrupt reason (f00009) value8 = (!BX_SELECTED_IS_PRESENT(channel)) ? 0 : BX_SELECTED_CONTROLLER(channel).sector_count; goto return_value8; break; case 0x03: // sector number (f0000d) value8 = (!BX_SELECTED_IS_PRESENT(channel)) ? 0 : BX_SELECTED_CONTROLLER(channel).sector_no; goto return_value8; case 0x04: // cylinder low (f00011) // -- WARNING : On real hardware the controller registers are shared between drives. // So we must respond even if the select device is not present. Some OS uses this fact // to detect the disks.... minix2 for example value8 = (!BX_ANY_IS_PRESENT(channel)) ? 0 : (BX_SELECTED_CONTROLLER(channel).cylinder_no & 0x00ff); goto return_value8; case 0x05: // cylinder high (f00015) // -- WARNING : On real hardware the controller registers are shared between drives. // So we must respond even if the select device is not present. Some OS uses this fact // to detect the disks.... minix2 for example value8 = (!BX_ANY_IS_PRESENT(channel)) ? 0 : BX_SELECTED_CONTROLLER(channel).cylinder_no >> 8; goto return_value8; case 0x06: // hard disk drive and head register (f00019) // b7 Extended data field for ECC // b6/b5: Used to be sector size. 00=256,01=512,10=1024,11=128 // Since 512 was always used, bit 6 was taken to mean LBA mode: // b6 1=LBA mode, 0=CHS mode // b5 1 // b4: DRV // b3..0 HD3..HD0 value8 = (1 << 7) | ((BX_SELECTED_CONTROLLER(channel).lba_mode > 0) << 6) | (1 << 5) | // 01b = 512 sector size (BX_HD_THIS channels[channel].drive_select << 4) | (BX_SELECTED_CONTROLLER(channel).head_no << 0); goto return_value8; break; //BX_CONTROLLER(channel,0).lba_mode case 0x07: // Hard Disk Status (f0001d) case 0x16: // Hard Disk Alternate Status (f00039) if (!BX_ANY_IS_PRESENT(channel)) { // (mch) Just return zero for these registers value8 = 0; } else { value8 = ((BX_SELECTED_CONTROLLER(channel).status.busy << 7) | (BX_SELECTED_CONTROLLER(channel).status.drive_ready << 6) | (BX_SELECTED_CONTROLLER(channel).status.write_fault << 5) | (BX_SELECTED_CONTROLLER(channel).status.seek_complete << 4) | (BX_SELECTED_CONTROLLER(channel).status.drq << 3) | (BX_SELECTED_CONTROLLER(channel).status.corrected_data << 2) | (BX_SELECTED_CONTROLLER(channel).status.index_pulse << 1) | (BX_SELECTED_CONTROLLER(channel).status.err)); BX_SELECTED_CONTROLLER(channel).status.index_pulse_count++; BX_SELECTED_CONTROLLER(channel).status.index_pulse = 0; if (BX_SELECTED_CONTROLLER(channel).status.index_pulse_count >= INDEX_PULSE_CYCLE) { BX_SELECTED_CONTROLLER(channel).status.index_pulse = 1; BX_SELECTED_CONTROLLER(channel).status.index_pulse_count = 0; } } if (port == 0x07) { getMFP()->setGPIPbit(0x20, 0x20); // lower the interrupt } goto return_value8; break; case 0x17: // Hard Disk Address Register // Obsolete and unsupported register. Not driven by hard // disk controller. Report all 1's. If floppy controller // is handling this address, it will call this function // set/clear D7 (the only bit it handles), then return // the combined value value8 = 0xff; goto return_value8; break; default: switch (address) { case 0xf00008: case 0xf0000c: case 0xf00018: case 0xf00038: /* * silently ignore off-by-1 addresses for secnum/seccount/head/status; * they might be used to detect twisted interface cables * (since EmuTOS 0.9.8) */ break; default: panicbug("hard drive: io read from address 0x%08x unsupported", (unsigned) address); break; } return 0; } panicbug("hard drive: shouldnt get here! PC=%08x", showPC()); return (0); return_value32: D(bug("32-bit read from %04x = %08x {%s}", (unsigned) address, value32, BX_SELECTED_TYPE_STRING(channel))); return value32; return_value16: D(bug("16-bit read from %04x = %04x {%s}", (unsigned) address, value16, BX_SELECTED_TYPE_STRING(channel))); return value16; return_value8: D(bug("8-bit read from %04x = %02x {%s}", (unsigned) address, value8, BX_SELECTED_TYPE_STRING(channel))); return value8; } // static IO port write callback handler // redirects to non-static class handler to avoid virtual functions void bx_hard_drive_c::write_handler(void *this_ptr, Bit32u address, Bit32u value, unsigned io_len) { #ifndef BX_USE_HD_SMF bx_hard_drive_c *class_ptr = (bx_hard_drive_c *) this_ptr; class_ptr->write(address, value, io_len); } void bx_hard_drive_c::write(Bit32u address, Bit32u value, unsigned io_len) { #else UNUSED(this_ptr); #endif // !BX_USE_HD_SMF off_t logical_sector; off_t ret; bool prev_control_reset; Bit8u channel = BX_MAX_ATA_CHANNEL; Bit32u port = 0xffffffff; for (channel = 0; channel < BX_MAX_ATA_CHANNEL; channel++) { if ((port = BX_HD_THIS channels[channel].addr2io(address)) != 0xffffffff) break; } if (channel == BX_MAX_ATA_CHANNEL) { D(panicbug("Unable to find ATA channel, ioport=0x%04x", address)); return; } if (io_len > 1 && port != 0x00) { panicbug("non-byte IO write to %04x", (unsigned) address); } D(bug("IO write to %04x = %02x", (unsigned) address, (unsigned) value)); switch (port) { case 0x00: // hard disk data (16bit) (f00000) if (io_len == 1) { panicbug("byte IO read from %04x", (unsigned) address); } switch (BX_SELECTED_CONTROLLER(channel).current_command) { case 0x30: // WRITE SECTORS if (BX_SELECTED_CONTROLLER(channel).buffer_index >= 512) panicbug("IO write(0x%08x): buffer_index >= 512", address); #ifdef BX_SupportRepeatSpeedups if (BX_HD_THIS devices->bulkIOQuantumsRequested) { unsigned transferLen, quantumsMax; quantumsMax = (512 - BX_SELECTED_CONTROLLER(channel).buffer_index) / io_len; if (quantumsMax == 0) BX_PANIC(("IO write(1f0): not enough space for write")); BX_HD_THIS devices->bulkIOQuantumsTransferred = BX_HD_THIS devices->bulkIOQuantumsRequested; if (quantumsMax < BX_HD_THIS devices->bulkIOQuantumsTransferred) BX_HD_THIS devices->bulkIOQuantumsTransferred = quantumsMax; transferLen = io_len * BX_HD_THIS devices->bulkIOQuantumsTransferred; memcpy(&BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index], (Bit8u *) BX_HD_THIS devices->bulkIOHostAddr, transferLen); BX_HD_THIS devices->bulkIOHostAddr += transferLen; BX_SELECTED_CONTROLLER(channel).buffer_index += transferLen; } else #endif { bool bs = BX_SELECTED_DRIVE(channel).hard_drive->byteswap; /* FALCON disk image (byte swap) */ switch (io_len) { case 4: // value = ((value >> 16) & 0x0000ffff) | ((value & 0x0000ffff) << 16); /* FALCON (word swap for long access to data register) */ if (bs) { BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 0] = (Bit8u) (value >> 24); BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 1] = (Bit8u) (value >> 16); BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 2] = (Bit8u) (value >> 8); BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 3] = (Bit8u) value; } else { BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 1] = (Bit8u) (value >> 24); BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 0] = (Bit8u) (value >> 16); BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 3] = (Bit8u) (value >> 8); BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 2] = (Bit8u) value; } break; case 2: if (bs) { BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 0] = (Bit8u) (value >> 8); BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 1] = (Bit8u) value; } else { BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 1] = (Bit8u) (value >> 8); BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 0] = (Bit8u) value; } break; } BX_SELECTED_CONTROLLER(channel).buffer_index += io_len; } /* if buffer completely writtten */ if (BX_SELECTED_CONTROLLER(channel).buffer_index >= 512) { off_t logical_sector; off_t ret; if (!calculate_logical_address(channel, &logical_sector)) { bug("write reached invalid sector %lu, aborting", (unsigned long) logical_sector); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); return; } ret = BX_SELECTED_DRIVE(channel).hard_drive->lseek(logical_sector * 512, SEEK_SET); if (ret < 0) { bug("could not lseek() hard drive image file at byte %lu", (unsigned long) logical_sector * 512); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); return; } ret = BX_SELECTED_DRIVE(channel).hard_drive->write((bx_ptr_t) BX_SELECTED_CONTROLLER(channel).buffer, 512); if (ret < 512) { bug("could not write() hard drive image file at byte %lu", (unsigned long) logical_sector * 512); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); return; } BX_SELECTED_CONTROLLER(channel).buffer_index = 0; /* update sector count, sector number, cylinder, * drive, head, status * if there are more sectors, read next one in... */ increment_address(channel); /* When the write is complete, controller clears the DRQ bit and * sets the BSY bit. * If at least one more sector is to be written, controller sets DRQ bit, * clears BSY bit, and issues IRQ */ if (BX_SELECTED_CONTROLLER(channel).sector_count != 0) { BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.drq = 1; BX_SELECTED_CONTROLLER(channel).status.corrected_data = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; } else { /* no more sectors to write */ BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; BX_SELECTED_CONTROLLER(channel).status.corrected_data = 0; } raise_interrupt(channel); } break; case 0xa0: // PACKET if (BX_SELECTED_CONTROLLER(channel).buffer_index >= PACKET_SIZE) panicbug("IO write(0x%08x): buffer_index >= PACKET_SIZE", address); BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index] = value; BX_SELECTED_CONTROLLER(channel).buffer[BX_SELECTED_CONTROLLER(channel).buffer_index + 1] = (value >> 8); BX_SELECTED_CONTROLLER(channel).buffer_index += 2; /* if packet completely writtten */ if (BX_SELECTED_CONTROLLER(channel).buffer_index >= PACKET_SIZE) { // complete command received Bit8u atapi_command = BX_SELECTED_CONTROLLER(channel).buffer[0]; switch (atapi_command) { case 0x00: // test unit ready if (BX_SELECTED_DRIVE(channel).cdrom.ready) { atapi_cmd_nop(channel); } else { atapi_cmd_error(channel, SENSE_NOT_READY, ASC_MEDIUM_NOT_PRESENT); } raise_interrupt(channel); break; case 0x03: { // request sense int alloc_length = BX_SELECTED_CONTROLLER(channel).buffer[4]; init_send_atapi_command(channel, atapi_command, 18, alloc_length); // sense data BX_SELECTED_CONTROLLER(channel).buffer[0] = 0x70 | (1 << 7); BX_SELECTED_CONTROLLER(channel).buffer[1] = 0; BX_SELECTED_CONTROLLER(channel).buffer[2] = BX_SELECTED_DRIVE(channel).sense.sense_key; BX_SELECTED_CONTROLLER(channel).buffer[3] = BX_SELECTED_DRIVE(channel).sense.information.arr[0]; BX_SELECTED_CONTROLLER(channel).buffer[4] = BX_SELECTED_DRIVE(channel).sense.information.arr[1]; BX_SELECTED_CONTROLLER(channel).buffer[5] = BX_SELECTED_DRIVE(channel).sense.information.arr[2]; BX_SELECTED_CONTROLLER(channel).buffer[6] = BX_SELECTED_DRIVE(channel).sense.information.arr[3]; BX_SELECTED_CONTROLLER(channel).buffer[7] = 17 - 7; BX_SELECTED_CONTROLLER(channel).buffer[8] = BX_SELECTED_DRIVE(channel).sense.specific_inf.arr[0]; BX_SELECTED_CONTROLLER(channel).buffer[9] = BX_SELECTED_DRIVE(channel).sense.specific_inf.arr[1]; BX_SELECTED_CONTROLLER(channel).buffer[10] = BX_SELECTED_DRIVE(channel).sense.specific_inf.arr[2]; BX_SELECTED_CONTROLLER(channel).buffer[11] = BX_SELECTED_DRIVE(channel).sense.specific_inf.arr[3]; BX_SELECTED_CONTROLLER(channel).buffer[12] = BX_SELECTED_DRIVE(channel).sense.asc; BX_SELECTED_CONTROLLER(channel).buffer[13] = BX_SELECTED_DRIVE(channel).sense.ascq; BX_SELECTED_CONTROLLER(channel).buffer[14] = BX_SELECTED_DRIVE(channel).sense.fruc; BX_SELECTED_CONTROLLER(channel).buffer[15] = BX_SELECTED_DRIVE(channel).sense.key_spec.arr[0]; BX_SELECTED_CONTROLLER(channel).buffer[16] = BX_SELECTED_DRIVE(channel).sense.key_spec.arr[1]; BX_SELECTED_CONTROLLER(channel).buffer[17] = BX_SELECTED_DRIVE(channel).sense.key_spec.arr[2]; ready_to_send_atapi(channel); } break; case 0x1b: { // start stop unit //bool Immed = (BX_SELECTED_CONTROLLER(channel).buffer[1] >> 0) & 1; bool LoEj = (BX_SELECTED_CONTROLLER(channel).buffer[4] >> 1) & 1; bool Start = (BX_SELECTED_CONTROLLER(channel).buffer[4] >> 0) & 1; if (!LoEj && !Start) { // stop the disc panicbug("Stop disc not implemented"); atapi_cmd_nop(channel); raise_interrupt(channel); } else if (!LoEj && Start) { // start (spin up) the disc #ifdef LOWLEVEL_CDROM BX_SELECTED_DRIVE(channel).cdrom.cd->start_cdrom(); #endif panicbug("FIXME: ATAPI start disc not reading TOC"); atapi_cmd_nop(channel); raise_interrupt(channel); } else if (LoEj && !Start) { // Eject the disc atapi_cmd_nop(channel); if (BX_SELECTED_DRIVE(channel).cdrom.ready) { #ifdef LOWLEVEL_CDROM BX_SELECTED_DRIVE(channel).cdrom.cd->eject_cdrom(); #endif BX_SELECTED_DRIVE(channel).cdrom.ready = 0; bx_options.atadevice[channel][BX_SLAVE_SELECTED(channel)].status = BX_EJECTED; } raise_interrupt(channel); } else { // Load the disc // My guess is that this command only closes the tray, that's a no-op for us atapi_cmd_nop(channel); raise_interrupt(channel); } } break; case 0xbd: { // mechanism status uint16 alloc_length = read_16bit(BX_SELECTED_CONTROLLER(channel).buffer + 8); if (alloc_length == 0) panicbug("Zero allocation length to MECHANISM STATUS not impl."); init_send_atapi_command(channel, atapi_command, 8, alloc_length); BX_SELECTED_CONTROLLER(channel).buffer[0] = 0; // reserved for non changers BX_SELECTED_CONTROLLER(channel).buffer[1] = 0; // reserved for non changers BX_SELECTED_CONTROLLER(channel).buffer[2] = 0; // Current LBA (TODO!) BX_SELECTED_CONTROLLER(channel).buffer[3] = 0; // Current LBA (TODO!) BX_SELECTED_CONTROLLER(channel).buffer[4] = 0; // Current LBA (TODO!) BX_SELECTED_CONTROLLER(channel).buffer[5] = 1; // one slot BX_SELECTED_CONTROLLER(channel).buffer[6] = 0; // slot table length BX_SELECTED_CONTROLLER(channel).buffer[7] = 0; // slot table length ready_to_send_atapi(channel); } break; case 0x5a: { // mode sense uint16 alloc_length = read_16bit(BX_SELECTED_CONTROLLER(channel).buffer + 7); Bit8u PC = BX_SELECTED_CONTROLLER(channel).buffer[2] >> 6; Bit8u PageCode = BX_SELECTED_CONTROLLER(channel).buffer[2] & 0x3f; switch (PC) { case 0x0: // current values switch (PageCode) { case 0x01: // error recovery init_send_atapi_command(channel, atapi_command, sizeof(error_recovery_t) + 8, alloc_length); init_mode_sense_single(channel, &BX_SELECTED_DRIVE(channel).cdrom.current.error_recovery, sizeof(error_recovery_t)); ready_to_send_atapi(channel); break; case 0x2a: // CD-ROM capabilities & mech. status init_send_atapi_command(channel, atapi_command, 28, alloc_length); init_mode_sense_single(channel, &BX_SELECTED_CONTROLLER(channel).buffer[8], 28); BX_SELECTED_CONTROLLER(channel).buffer[8] = 0x2a; BX_SELECTED_CONTROLLER(channel).buffer[9] = 0x12; BX_SELECTED_CONTROLLER(channel).buffer[10] = 0x00; BX_SELECTED_CONTROLLER(channel).buffer[11] = 0x00; // Multisession, Mode 2 Form 2, Mode 2 Form 1 BX_SELECTED_CONTROLLER(channel).buffer[12] = 0x70; BX_SELECTED_CONTROLLER(channel).buffer[13] = (3 << 5); BX_SELECTED_CONTROLLER(channel).buffer[14] = (unsigned char) (1 | (BX_SELECTED_DRIVE (channel).cdrom. locked ? (1 << 1) : 0) | (1 << 3) | (1 << 5)); BX_SELECTED_CONTROLLER(channel).buffer[15] = 0x00; BX_SELECTED_CONTROLLER(channel).buffer[16] = (706 >> 8) & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[17] = 706 & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[18] = 0; BX_SELECTED_CONTROLLER(channel).buffer[19] = 2; BX_SELECTED_CONTROLLER(channel).buffer[20] = (512 >> 8) & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[21] = 512 & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[22] = (706 >> 8) & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[23] = 706 & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[24] = 0; BX_SELECTED_CONTROLLER(channel).buffer[25] = 0; BX_SELECTED_CONTROLLER(channel).buffer[26] = 0; BX_SELECTED_CONTROLLER(channel).buffer[27] = 0; ready_to_send_atapi(channel); break; case 0x0d: // CD-ROM case 0x0e: // CD-ROM audio control case 0x3f: // all panicbug("cdrom: MODE SENSE (curr), code=%x", PageCode); atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_INV_FIELD_IN_CMD_PACKET); raise_interrupt(channel); break; default: // not implemeted by this device bug("cdrom: MODE SENSE PC=%x, PageCode=%x," " not implemented by device", PC, PageCode); atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_INV_FIELD_IN_CMD_PACKET); raise_interrupt(channel); break; } break; case 0x1: // changeable values switch (PageCode) { case 0x01: // error recovery case 0x0d: // CD-ROM case 0x0e: // CD-ROM audio control case 0x2a: // CD-ROM capabilities & mech. status case 0x3f: // all panicbug("cdrom: MODE SENSE (chg), code=%x", PageCode); atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_INV_FIELD_IN_CMD_PACKET); raise_interrupt(channel); break; default: // not implemeted by this device bug("cdrom: MODE SENSE PC=%x, PageCode=%x," " not implemented by device", PC, PageCode); atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_INV_FIELD_IN_CMD_PACKET); raise_interrupt(channel); break; } break; case 0x2: // default values switch (PageCode) { case 0x2a: // CD-ROM capabilities & mech. status, copied from current values init_send_atapi_command(channel, atapi_command, 28, alloc_length); init_mode_sense_single(channel, &BX_SELECTED_CONTROLLER(channel).buffer[8], 28); BX_SELECTED_CONTROLLER(channel).buffer[8] = 0x2a; BX_SELECTED_CONTROLLER(channel).buffer[9] = 0x12; BX_SELECTED_CONTROLLER(channel).buffer[10] = 0x00; BX_SELECTED_CONTROLLER(channel).buffer[11] = 0x00; // Multisession, Mode 2 Form 2, Mode 2 Form 1 BX_SELECTED_CONTROLLER(channel).buffer[12] = 0x70; BX_SELECTED_CONTROLLER(channel).buffer[13] = (3 << 5); BX_SELECTED_CONTROLLER(channel).buffer[14] = (unsigned char) (1 | (BX_SELECTED_DRIVE (channel).cdrom. locked ? (1 << 1) : 0) | (1 << 3) | (1 << 5)); BX_SELECTED_CONTROLLER(channel).buffer[15] = 0x00; BX_SELECTED_CONTROLLER(channel).buffer[16] = (706 >> 8) & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[17] = 706 & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[18] = 0; BX_SELECTED_CONTROLLER(channel).buffer[19] = 2; BX_SELECTED_CONTROLLER(channel).buffer[20] = (512 >> 8) & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[21] = 512 & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[22] = (706 >> 8) & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[23] = 706 & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[24] = 0; BX_SELECTED_CONTROLLER(channel).buffer[25] = 0; BX_SELECTED_CONTROLLER(channel).buffer[26] = 0; BX_SELECTED_CONTROLLER(channel).buffer[27] = 0; ready_to_send_atapi(channel); break; case 0x01: // error recovery case 0x0d: // CD-ROM case 0x0e: // CD-ROM audio control case 0x3f: // all panicbug("cdrom: MODE SENSE (dflt), code=%x", PageCode); break; default: // not implemeted by this device bug("cdrom: MODE SENSE PC=%x, PageCode=%x," " not implemented by device", PC, PageCode); atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_INV_FIELD_IN_CMD_PACKET); raise_interrupt(channel); break; } break; case 0x3: // saved values not implemented atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_SAVING_PARAMETERS_NOT_SUPPORTED); raise_interrupt(channel); break; default: panicbug("Should not get here!"); break; } } break; case 0x12: { // inquiry uint8 alloc_length = BX_SELECTED_CONTROLLER(channel).buffer[4]; init_send_atapi_command(channel, atapi_command, 36, alloc_length); BX_SELECTED_CONTROLLER(channel).buffer[0] = 0x05; // CD-ROM BX_SELECTED_CONTROLLER(channel).buffer[1] = 0x80; // Removable BX_SELECTED_CONTROLLER(channel).buffer[2] = 0x00; // ISO, ECMA, ANSI version BX_SELECTED_CONTROLLER(channel).buffer[3] = 0x21; // ATAPI-2, as specified BX_SELECTED_CONTROLLER(channel).buffer[4] = 31; // additional length (total 36) BX_SELECTED_CONTROLLER(channel).buffer[5] = 0x00; // reserved BX_SELECTED_CONTROLLER(channel).buffer[6] = 0x00; // reserved BX_SELECTED_CONTROLLER(channel).buffer[7] = 0x00; // reserved // Vendor ID const char *vendor_id = "VTAB "; int i; for (i = 0; i < 8; i++) BX_SELECTED_CONTROLLER(channel).buffer[8 + i] = vendor_id[i]; // Product ID #ifdef WORDS_BIGENDIAN const char *product_id = "Turbo CD-ROM "; #else const char *product_id = "rbTuCDo OM-R "; #endif for (i = 0; i < 16; i++) BX_SELECTED_CONTROLLER(channel).buffer[16 + i] = product_id[i]; // Product Revision level const char *rev_level = "1.0 "; for (i = 0; i < 4; i++) BX_SELECTED_CONTROLLER(channel).buffer[32 + i] = rev_level[i]; ready_to_send_atapi(channel); } break; case 0x25: { // read cd-rom capacity // no allocation length??? init_send_atapi_command(channel, atapi_command, 8, 8); if (BX_SELECTED_DRIVE(channel).cdrom.ready) { uint32 capacity = BX_SELECTED_DRIVE(channel).cdrom.capacity; BX_SELECTED_CONTROLLER(channel).buffer[0] = (capacity >> 24) & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[1] = (capacity >> 16) & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[2] = (capacity >> 8) & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[3] = (capacity >> 0) & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[4] = (2048 >> 24) & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[5] = (2048 >> 16) & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[6] = (2048 >> 8) & 0xff; BX_SELECTED_CONTROLLER(channel).buffer[7] = (2048 >> 0) & 0xff; ready_to_send_atapi(channel); } else { atapi_cmd_error(channel, SENSE_NOT_READY, ASC_MEDIUM_NOT_PRESENT); raise_interrupt(channel); } } break; case 0xbe: { // read cd if (BX_SELECTED_DRIVE(channel).cdrom.ready) { panicbug("Read CD with CD present not implemented"); atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_INV_FIELD_IN_CMD_PACKET); raise_interrupt(channel); } else { atapi_cmd_error(channel, SENSE_NOT_READY, ASC_MEDIUM_NOT_PRESENT); raise_interrupt(channel); } } break; case 0x43: { // read toc if (BX_SELECTED_DRIVE(channel).cdrom.ready) { #ifdef LOWLEVEL_CDROM bool msf = (BX_SELECTED_CONTROLLER(channel).buffer[1] >> 1) & 1; uint8 starting_track = BX_SELECTED_CONTROLLER(channel).buffer[6]; int toc_length; #endif uint16 alloc_length = read_16bit(BX_SELECTED_CONTROLLER(channel).buffer + 7); uint8 format = (BX_SELECTED_CONTROLLER(channel).buffer[9] >> 6); // Win32: I just read the TOC using Win32's IOCTRL functions (Ben) #if defined(WIN32) #ifdef LOWLEVEL_CDROM switch (format) { case 2: case 3: case 4: if (msf != TRUE) { D(panicbug("READ_TOC_EX: msf not set for format %i", format)); } /* fall through */ case 0: case 1: case 5: if (! (BX_SELECTED_DRIVE(channel).cdrom.cd-> read_toc(BX_SELECTED_CONTROLLER(channel).buffer, &toc_length, msf, starting_track, format))) { atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_INV_FIELD_IN_CMD_PACKET); raise_interrupt(channel); } else { init_send_atapi_command(channel, atapi_command, toc_length, alloc_length); ready_to_send_atapi(channel); } break; default: panicbug("(READ TOC) Format %d not supported", format); } #else panicbug("LOWLEVEL_CDROM not defined"); #endif #else // WIN32 int i; switch (format) { case 0: #ifdef LOWLEVEL_CDROM if (! (BX_SELECTED_DRIVE(channel).cdrom.cd-> read_toc(BX_SELECTED_CONTROLLER(channel).buffer, &toc_length, msf, starting_track, format))) { atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_INV_FIELD_IN_CMD_PACKET); raise_interrupt(channel); } else { init_send_atapi_command(channel, atapi_command, toc_length, alloc_length); ready_to_send_atapi(channel); } #else panicbug("LOWLEVEL_CDROM not defined"); #endif break; case 1: // multi session stuff. we ignore this and emulate a single session only init_send_atapi_command(channel, atapi_command, 12, alloc_length); BX_SELECTED_CONTROLLER(channel).buffer[0] = 0; BX_SELECTED_CONTROLLER(channel).buffer[1] = 0x0a; BX_SELECTED_CONTROLLER(channel).buffer[2] = 1; BX_SELECTED_CONTROLLER(channel).buffer[3] = 1; for (i = 0; i < 8; i++) BX_SELECTED_CONTROLLER(channel).buffer[4 + i] = 0; ready_to_send_atapi(channel); break; case 2: default: panicbug("(READ TOC) Format %d not supported", format); break; } #endif // WIN32 } else { atapi_cmd_error(channel, SENSE_NOT_READY, ASC_MEDIUM_NOT_PRESENT); raise_interrupt(channel); } } break; case 0x28: // read (10) case 0xa8: // read (12) { uint32 transfer_length; if (atapi_command == 0x28) transfer_length = read_16bit(BX_SELECTED_CONTROLLER(channel).buffer + 7); else transfer_length = read_32bit(BX_SELECTED_CONTROLLER(channel).buffer + 6); uint32 lba = read_32bit(BX_SELECTED_CONTROLLER(channel).buffer + 2); if (!BX_SELECTED_DRIVE(channel).cdrom.ready) { atapi_cmd_error(channel, SENSE_NOT_READY, ASC_MEDIUM_NOT_PRESENT); raise_interrupt(channel); break; } // Ben: see comment below if (lba + transfer_length > BX_SELECTED_DRIVE(channel).cdrom.capacity) { transfer_length = (BX_SELECTED_DRIVE(channel).cdrom.capacity - lba); } //if (transfer_length == 0) { if (transfer_length <= 0) { atapi_cmd_nop(channel); raise_interrupt(channel); break; } /* Ben: I commented this out and added the three lines above. I am not sure this is the correct thing to do, but it seems to work. FIXME: I think that if the transfer_length is more than we can transfer, we should return some sort of flag/error/bitrep stating so. I haven't read the atapi specs enough to know what needs to be done though. if (lba + transfer_length > BX_SELECTED_DRIVE(channel).cdrom.capacity) { atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_LOGICAL_BLOCK_OOR); raise_interrupt(channel); break; } */ D(bug("cdrom: READ (%d) LBA=%d LEN=%d", atapi_command == 0x28 ? 10 : 12, lba, transfer_length)); // handle command init_send_atapi_command(channel, atapi_command, transfer_length * 2048, transfer_length * 2048, true); BX_SELECTED_DRIVE(channel).cdrom.remaining_blocks = transfer_length; BX_SELECTED_DRIVE(channel).cdrom.next_lba = lba; ready_to_send_atapi(channel); } break; case 0x2b: { // seek uint32 lba = read_32bit(BX_SELECTED_CONTROLLER(channel).buffer + 2); if (!BX_SELECTED_DRIVE(channel).cdrom.ready) { atapi_cmd_error(channel, SENSE_NOT_READY, ASC_MEDIUM_NOT_PRESENT); raise_interrupt(channel); break; } if (lba > BX_SELECTED_DRIVE(channel).cdrom.capacity) { atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_LOGICAL_BLOCK_OOR); raise_interrupt(channel); break; } atapi_cmd_nop(channel); raise_interrupt(channel); } break; case 0x1e: { // prevent/allow medium removal if (BX_SELECTED_DRIVE(channel).cdrom.ready) { BX_SELECTED_DRIVE(channel).cdrom.locked = BX_SELECTED_CONTROLLER(channel).buffer[4] & 1; atapi_cmd_nop(channel); } else { atapi_cmd_error(channel, SENSE_NOT_READY, ASC_MEDIUM_NOT_PRESENT); } raise_interrupt(channel); } break; case 0x42: { // read sub-channel bool msf = get_packet_field(channel, 1, 1, 1); bool sub_q = get_packet_field(channel, 2, 6, 1); uint8 data_format = get_packet_byte(channel, 3); uint8 track_number = get_packet_byte(channel, 6); uint16 alloc_length = get_packet_word(channel, 7); UNUSED(msf); UNUSED(data_format); UNUSED(track_number); if (!BX_SELECTED_DRIVE(channel).cdrom.ready) { atapi_cmd_error(channel, SENSE_NOT_READY, ASC_MEDIUM_NOT_PRESENT); raise_interrupt(channel); } else { BX_SELECTED_CONTROLLER(channel).buffer[0] = 0; BX_SELECTED_CONTROLLER(channel).buffer[1] = 0; // audio not supported BX_SELECTED_CONTROLLER(channel).buffer[2] = 0; BX_SELECTED_CONTROLLER(channel).buffer[3] = 0; int ret_len = 4; // header size if (sub_q) { // !sub_q == header only panicbug("Read sub-channel with SubQ not implemented"); atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_INV_FIELD_IN_CMD_PACKET); raise_interrupt(channel); } init_send_atapi_command(channel, atapi_command, ret_len, alloc_length); ready_to_send_atapi(channel); } } break; case 0x51: { // read disc info // no-op to keep the Linux CD-ROM driver happy atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_INV_FIELD_IN_CMD_PACKET); raise_interrupt(channel); } break; case 0x55: // mode select case 0xa6: // load/unload cd case 0x4b: // pause/resume case 0x45: // play audio case 0x47: // play audio msf case 0xbc: // play cd case 0xb9: // read cd msf case 0x44: // read header case 0xba: // scan case 0xbb: // set cd speed case 0x4e: // stop play/scan case 0x46: // ??? case 0x4a: // ??? D(bug("ATAPI command 0x%x not implemented yet", atapi_command)); atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_INV_FIELD_IN_CMD_PACKET); raise_interrupt(channel); break; default: panicbug("Unknown ATAPI command 0x%x (%d)", atapi_command, atapi_command); // We'd better signal the error if the user chose to continue atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_INV_FIELD_IN_CMD_PACKET); raise_interrupt(channel); break; } } break; default: panicbug("IO write(0x%08x): current command is %02xh", address, (unsigned) BX_SELECTED_CONTROLLER(channel).current_command); } break; case 0x01: // hard disk write precompensation (f00005) WRITE_FEATURES(channel, value); break; case 0x02: // hard disk sector count (f00009) WRITE_SECTOR_COUNT(channel, value); break; case 0x03: // hard disk sector number (f0000d) WRITE_SECTOR_NUMBER(channel, value); break; case 0x04: // hard disk cylinder low (f00011) WRITE_CYLINDER_LOW(channel, value); break; case 0x05: // hard disk cylinder high (f00015) WRITE_CYLINDER_HIGH(channel, value); break; case 0x06: // hard disk drive and head register (f00019) // b7 Extended data field for ECC // b6/b5: Used to be sector size. 00=256,01=512,10=1024,11=128 // Since 512 was always used, bit 6 was taken to mean LBA mode: // b6 1=LBA mode, 0=CHS mode // b5 1 // b4: DRV // b3..0 HD3..HD0 { if ((value & 0xa0) != 0xa0) { // 1x1xxxxx D(bug("IO write 0x%08x (%02x): not 1x1xxxxxb", address, (unsigned) value)); } #if DEBUG Bit32u drvsel = #endif BX_HD_THIS channels[channel].drive_select = (value >> 4) & 0x01; WRITE_HEAD_NO(channel, value & 0xf); if (BX_SELECTED_CONTROLLER(channel).lba_mode == 0 && ((value >> 6) & 1) == 1) { D(bug("enabling LBA mode")); } WRITE_LBA_MODE(channel, (value >> 6) & 1); if (!BX_SELECTED_IS_PRESENT(channel)) { D(panicbug("device set to %d which does not exist", drvsel)); BX_SELECTED_CONTROLLER(channel).error_register = 0x04; // aborted BX_SELECTED_CONTROLLER(channel).status.err = 1; } break; } case 0x07: // hard disk command (f0001d) // (mch) Writes to the command register with drive_select != 0 // are ignored if no secondary device is present if ((BX_SLAVE_SELECTED(channel)) && (!BX_SLAVE_IS_PRESENT(channel))) break; // Writes to the command register clear the IRQ getMFP()->setGPIPbit(0x20, 0x20); // lower the interrupt if (BX_SELECTED_CONTROLLER(channel).status.busy) panicbug("hard disk: command sent, controller BUSY"); if ((value & 0xf0) == 0x10) value = 0x10; switch (value) { case 0x10: // CALIBRATE DRIVE if (!BX_SELECTED_IS_HD(channel)) { D(bug("calibrate drive issued to non-disk")); } // FIXME Maybe we should signal an error in case of cdrom // if (!BX_SELECTED_IS_PRESENT(channel) || !BX_SELECTED_IS_HD(channel)) if (!BX_SELECTED_IS_PRESENT(channel)) { BX_SELECTED_CONTROLLER(channel).error_register = 0x02; // Track 0 not found BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.seek_complete = 0; BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.err = 1; raise_interrupt(channel); break; } /* move head to cylinder 0, issue IRQ */ BX_SELECTED_CONTROLLER(channel).error_register = 0; BX_SELECTED_CONTROLLER(channel).cylinder_no = 0; BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.seek_complete = 1; BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; raise_interrupt(channel); break; case 0x20: // READ MULTIPLE SECTORS, with retries case 0x21: // READ MULTIPLE SECTORS, without retries /* update sector_no, always points to current sector * after each sector is read to buffer, DRQ bit set and issue IRQ * if interrupt handler transfers all data words into main memory, * and more sectors to read, then set BSY bit again, clear DRQ and * read next sector into buffer * sector count of 0 means 256 sectors */ if (!BX_SELECTED_IS_HD(channel)) { bug("read multiple issued to non-disk"); command_aborted(channel, value); break; } BX_SELECTED_CONTROLLER(channel).current_command = value; // Lose98 accesses 0/0/0 in CHS mode if (!BX_SELECTED_CONTROLLER(channel).lba_mode && !BX_SELECTED_CONTROLLER(channel).head_no && !BX_SELECTED_CONTROLLER(channel).cylinder_no && !BX_SELECTED_CONTROLLER(channel).sector_no) { command_aborted(channel, value); break; } if (!calculate_logical_address(channel, &logical_sector)) { bug("initial read from sector %lu out of bounds, aborting", (unsigned long) logical_sector); command_aborted(channel, value); break; } ret = BX_SELECTED_DRIVE(channel).hard_drive->lseek(logical_sector * 512, SEEK_SET); if (ret < 0) { bug("could not lseek() hard drive image file, aborting"); command_aborted(channel, value); break; } ret = BX_SELECTED_DRIVE(channel).hard_drive->read((bx_ptr_t) BX_SELECTED_CONTROLLER(channel).buffer, 512); if (ret < 512) { bug("logical sector was %lu", (unsigned long) logical_sector); bug("could not read() hard drive image file at byte %lu", (unsigned long) logical_sector * 512); command_aborted(channel, value); break; } BX_SELECTED_CONTROLLER(channel).error_register = 0; BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.seek_complete = 1; BX_SELECTED_CONTROLLER(channel).status.drq = 1; BX_SELECTED_CONTROLLER(channel).status.corrected_data = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; BX_SELECTED_CONTROLLER(channel).buffer_index = 0; raise_interrupt(channel); break; case 0x30: /* WRITE SECTORS, with retries */ /* update sector_no, always points to current sector * after each sector is read to buffer, DRQ bit set and issue IRQ * if interrupt handler transfers all data words into main memory, * and more sectors to read, then set BSY bit again, clear DRQ and * read next sector into buffer * sector count of 0 means 256 sectors */ if (!BX_SELECTED_IS_HD(channel)) panicbug("write multiple issued to non-disk"); if (BX_SELECTED_CONTROLLER(channel).status.busy) { panicbug("write command: BSY bit set"); } BX_SELECTED_CONTROLLER(channel).current_command = value; // implicit seek done :^) BX_SELECTED_CONTROLLER(channel).error_register = 0; BX_SELECTED_CONTROLLER(channel).status.busy = 0; // BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.seek_complete = 1; BX_SELECTED_CONTROLLER(channel).status.drq = 1; BX_SELECTED_CONTROLLER(channel).status.err = 0; BX_SELECTED_CONTROLLER(channel).buffer_index = 0; break; case 0x90: // EXECUTE DEVICE DIAGNOSTIC if (BX_SELECTED_CONTROLLER(channel).status.busy) { panicbug("diagnostic command: BSY bit set"); } if (!BX_SELECTED_IS_HD(channel)) panicbug("drive diagnostics issued to non-disk"); BX_SELECTED_CONTROLLER(channel).error_register = 0x81; // Drive 1 failed, no error on drive 0 // BX_SELECTED_CONTROLLER(channel).status.busy = 0; // not needed BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; break; case 0x91: // INITIALIZE DRIVE PARAMETERS if (BX_SELECTED_CONTROLLER(channel).status.busy) { panicbug("init drive parameters command: BSY bit set"); } if (!BX_SELECTED_IS_HD(channel)) panicbug("initialize drive parameters issued to non-disk"); // sets logical geometry of specified drive D(bug("init drive params: sec=%u, drive sel=%u, head=%u", (unsigned) BX_SELECTED_CONTROLLER(channel).sector_count, (unsigned) BX_HD_THIS channels[channel].drive_select, (unsigned) BX_SELECTED_CONTROLLER(channel).head_no)); if (!BX_SELECTED_IS_PRESENT(channel)) { panicbug("init drive params: disk ata%d-%d not present", channel, BX_SLAVE_SELECTED(channel)); //BX_SELECTED_CONTROLLER(channel).error_register = 0x12; BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; raise_interrupt(channel); break; } if (BX_SELECTED_CONTROLLER(channel).sector_count != BX_SELECTED_DRIVE(channel).hard_drive->sectors) panicbug("init drive params: sector count doesnt match %d != %d", BX_SELECTED_CONTROLLER(channel).sector_count, BX_SELECTED_DRIVE(channel).hard_drive->sectors); if (BX_SELECTED_CONTROLLER(channel).head_no != (BX_SELECTED_DRIVE(channel).hard_drive->heads - 1)) panicbug("init drive params: head number doesn't match %d != %d", BX_SELECTED_CONTROLLER(channel).head_no, BX_SELECTED_DRIVE(channel).hard_drive->heads - 1); BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; raise_interrupt(channel); break; case 0xec: // IDENTIFY DEVICE if (bx_options.newHardDriveSupport) { if (!BX_SELECTED_IS_PRESENT(channel)) { D(bug("disk ata%d-%d not present, aborting", channel, BX_SLAVE_SELECTED(channel))); command_aborted(channel, value); break; } if (BX_SELECTED_IS_CD(channel)) { BX_SELECTED_CONTROLLER(channel).head_no = 0; BX_SELECTED_CONTROLLER(channel).sector_count = 1; BX_SELECTED_CONTROLLER(channel).sector_no = 1; BX_SELECTED_CONTROLLER(channel).cylinder_no = 0xeb14; command_aborted(channel, 0xec); } else { BX_SELECTED_CONTROLLER(channel).current_command = value; BX_SELECTED_CONTROLLER(channel).error_register = 0; // See ATA/ATAPI-4, 8.12 BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.write_fault = 0; BX_SELECTED_CONTROLLER(channel).status.drq = 1; BX_SELECTED_CONTROLLER(channel).status.err = 0; BX_SELECTED_CONTROLLER(channel).status.seek_complete = 1; BX_SELECTED_CONTROLLER(channel).status.corrected_data = 0; BX_SELECTED_CONTROLLER(channel).buffer_index = 0; raise_interrupt(channel); identify_drive(channel); } } else { D(bug("sent IDENTIFY DEVICE (0xec) to old hard drive")); command_aborted(channel, value); } break; case 0xef: // SET FEATURES switch (BX_SELECTED_CONTROLLER(channel).features) { case 0x02: // Enable and case 0x82: // Disable write cache. case 0xAA: // Enable and case 0x55: // Disable look-ahead cache. case 0xCC: // Enable and case 0x66: // Disable reverting to power-on default case 0x03: // Set Transfer Mode D(bug("SET FEATURES subcommand not supported by disk.")); command_aborted(channel, value); break; default: panicbug("SET FEATURES with unknown subcommand: 0x%02x", (unsigned) BX_SELECTED_CONTROLLER(channel).features); // We'd better signal the error if the user chose to continue command_aborted(channel, value); } break; case 0x40: // READ VERIFY SECTORS if (bx_options.newHardDriveSupport) { if (!BX_SELECTED_IS_HD(channel)) panicbug("read verify issued to non-disk"); BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; raise_interrupt(channel); } else { command_aborted(channel, value); } break; case 0xc6: // SET MULTIPLE MODE (mch) if (BX_SELECTED_CONTROLLER(channel).sector_count != 128 && BX_SELECTED_CONTROLLER(channel).sector_count != 64 && BX_SELECTED_CONTROLLER(channel).sector_count != 32 && BX_SELECTED_CONTROLLER(channel).sector_count != 16 && BX_SELECTED_CONTROLLER(channel).sector_count != 8 && BX_SELECTED_CONTROLLER(channel).sector_count != 4 && BX_SELECTED_CONTROLLER(channel).sector_count != 2) command_aborted(channel, value); if (!BX_SELECTED_IS_HD(channel)) panicbug("set multiple mode issued to non-disk"); BX_SELECTED_CONTROLLER(channel).sectors_per_block = BX_SELECTED_CONTROLLER(channel).sector_count; BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.write_fault = 0; BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; break; // ATAPI commands case 0xa1: // IDENTIFY PACKET DEVICE if (BX_SELECTED_IS_CD(channel)) { BX_SELECTED_CONTROLLER(channel).current_command = value; BX_SELECTED_CONTROLLER(channel).error_register = 0; BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.write_fault = 0; BX_SELECTED_CONTROLLER(channel).status.drq = 1; BX_SELECTED_CONTROLLER(channel).status.err = 0; BX_SELECTED_CONTROLLER(channel).status.seek_complete = 1; BX_SELECTED_CONTROLLER(channel).status.corrected_data = 0; BX_SELECTED_CONTROLLER(channel).buffer_index = 0; raise_interrupt(channel); identify_ATAPI_drive(channel); } else { command_aborted(channel, 0xa1); } break; case 0x08: // DEVICE RESET (atapi) if (BX_SELECTED_IS_CD(channel)) { BX_SELECTED_CONTROLLER(channel).status.busy = 1; BX_SELECTED_CONTROLLER(channel).error_register &= ~(1 << 7); // device signature BX_SELECTED_CONTROLLER(channel).head_no = 0; BX_SELECTED_CONTROLLER(channel).sector_count = 1; BX_SELECTED_CONTROLLER(channel).sector_no = 1; BX_SELECTED_CONTROLLER(channel).cylinder_no = 0xeb14; BX_SELECTED_CONTROLLER(channel).status.write_fault = 0; BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.corrected_data = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; BX_SELECTED_CONTROLLER(channel).status.busy = 0; } else { D(bug("ATAPI Device Reset on non-cd device")); command_aborted(channel, 0x08); } break; case 0xa0: // SEND PACKET (atapi) if (BX_SELECTED_IS_CD(channel)) { // PACKET if (BX_SELECTED_CONTROLLER(channel).features & (1 << 0)) panicbug("PACKET-DMA not supported"); if (BX_SELECTED_CONTROLLER(channel).features & (1 << 1)) panicbug("PACKET-overlapped not supported"); // We're already ready! BX_SELECTED_CONTROLLER(channel).sector_count = 1; BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.write_fault = 0; // serv bit?? BX_SELECTED_CONTROLLER(channel).status.drq = 1; BX_SELECTED_CONTROLLER(channel).status.err = 0; // NOTE: no interrupt here BX_SELECTED_CONTROLLER(channel).current_command = value; BX_SELECTED_CONTROLLER(channel).buffer_index = 0; } else { command_aborted(channel, 0xa0); } break; case 0xa2: // SERVICE (atapi), optional if (BX_SELECTED_IS_CD(channel)) { panicbug("ATAPI SERVICE not implemented"); } else { command_aborted(channel, 0xa2); } break; // power management case 0xe5: // CHECK POWER MODE BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.write_fault = 0; BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; BX_SELECTED_CONTROLLER(channel).sector_count = 0xff; // Active or Idle mode raise_interrupt(channel); break; case 0x70: // SEEK (cgs) if (BX_SELECTED_IS_HD(channel)) { D(bug("write cmd 0x70 (SEEK) executing")); if (!calculate_logical_address(channel, &logical_sector)) { panicbug("initial seek to sector %lu out of bounds, aborting", (unsigned long) logical_sector); command_aborted(channel, value); break; } BX_SELECTED_CONTROLLER(channel).error_register = 0; BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.seek_complete = 1; BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.corrected_data = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; BX_SELECTED_CONTROLLER(channel).buffer_index = 0; D(bug("s[0].controller.control.disable_irq = %02x", (BX_HD_THIS channels[channel].drives[0]).controller.control.disable_irq)); D(bug("s[1].controller.control.disable_irq = %02x", (BX_HD_THIS channels[channel].drives[1]).controller.control.disable_irq)); D(bug("SEEK completed. error_register = %02x", BX_SELECTED_CONTROLLER(channel).error_register)); raise_interrupt(channel); D(bug("SEEK interrupt completed")); } else { panicbug("write cmd 0x70 (SEEK) not supported for non-disk"); command_aborted(channel, 0x70); } break; case 0xC8: // READ DMA if (ATA_DMA) { BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.seek_complete = 1; BX_SELECTED_CONTROLLER(channel).status.drq = 1; BX_SELECTED_CONTROLLER(channel).current_command = value; } else { D(panicbug("write cmd 0xC8 (READ DMA) not supported")); command_aborted(channel, 0xC8); } break; case 0xCA: // WRITE DMA if (ATA_DMA) { BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.seek_complete = 1; BX_SELECTED_CONTROLLER(channel).status.drq = 1; BX_SELECTED_CONTROLLER(channel).current_command = value; } else { D(panicbug("write cmd 0xCA (WRITE DMA) not supported")); command_aborted(channel, 0xCA); } break; // List all the write operations that are defined in the ATA/ATAPI spec // that we don't support. Commands that are listed here will cause a // BX_ERROR, which is non-fatal, and the command will be aborted. case 0x22: bug("write cmd 0x22 (READ LONG) not supported"); command_aborted(channel, 0x22); break; case 0x23: bug("write cmd 0x23 (READ LONG NO RETRY) not supported"); command_aborted(channel, 0x23); break; case 0x24: bug("write cmd 0x24 (READ SECTORS EXT) not supported"); command_aborted(channel, 0x24); break; case 0x25: bug("write cmd 0x25 (READ DMA EXT) not supported"); command_aborted(channel, 0x25); break; case 0x26: bug("write cmd 0x26 (READ DMA QUEUED EXT) not supported"); command_aborted(channel, 0x26); break; case 0x27: bug("write cmd 0x27 (READ NATIVE MAX ADDRESS EXT) not supported"); command_aborted(channel, 0x27); break; case 0x29: bug("write cmd 0x29 (READ MULTIPLE EXT) not supported"); command_aborted(channel, 0x29); break; case 0x2A: bug("write cmd 0x2A (READ STREAM DMA) not supported"); command_aborted(channel, 0x2A); break; case 0x2B: bug("write cmd 0x2B (READ STREAM PIO) not supported"); command_aborted(channel, 0x2B); break; case 0x2F: bug("write cmd 0x2F (READ LOG EXT) not supported"); command_aborted(channel, 0x2F); break; case 0x31: bug("write cmd 0x31 (WRITE SECTORS NO RETRY) not supported"); command_aborted(channel, 0x31); break; case 0x32: bug("write cmd 0x32 (WRITE LONG) not supported"); command_aborted(channel, 0x32); break; case 0x33: bug("write cmd 0x33 (WRITE LONG NO RETRY) not supported"); command_aborted(channel, 0x33); break; case 0x34: bug("write cmd 0x34 (WRITE SECTORS EXT) not supported"); command_aborted(channel, 0x34); break; case 0x35: bug("write cmd 0x35 (WRITE DMA EXT) not supported"); command_aborted(channel, 0x35); break; case 0x36: bug("write cmd 0x36 (WRITE DMA QUEUED EXT) not supported"); command_aborted(channel, 0x36); break; case 0x37: bug("write cmd 0x37 (SET MAX ADDRESS EXT) not supported"); command_aborted(channel, 0x37); break; case 0x38: bug("write cmd 0x38 (CFA WRITE SECTORS W/OUT ERASE) not supported"); command_aborted(channel, 0x38); break; case 0x39: bug("write cmd 0x39 (WRITE MULTIPLE EXT) not supported"); command_aborted(channel, 0x39); break; case 0x3A: bug("write cmd 0x3A (WRITE STREAM DMA) not supported"); command_aborted(channel, 0x3A); break; case 0x3B: bug("write cmd 0x3B (WRITE STREAM PIO) not supported"); command_aborted(channel, 0x3B); break; case 0x3F: bug("write cmd 0x3F (WRITE LOG EXT) not supported"); command_aborted(channel, 0x3F); break; case 0x41: bug("write cmd 0x41 (READ VERIFY SECTORS NO RETRY) not supported"); command_aborted(channel, 0x41); break; case 0x42: bug("write cmd 0x42 (READ VERIFY SECTORS EXT) not supported"); command_aborted(channel, 0x42); break; case 0x50: bug("write cmd 0x50 (FORMAT TRACK) not supported"); command_aborted(channel, 0x50); break; case 0x51: bug("write cmd 0x51 (CONFIGURE STREAM) not supported"); command_aborted(channel, 0x51); break; case 0x87: bug("write cmd 0x87 (CFA TRANSLATE SECTOR) not supported"); command_aborted(channel, 0x87); break; case 0x92: bug("write cmd 0x92 (DOWNLOAD MICROCODE) not supported"); command_aborted(channel, 0x92); break; case 0x94: bug("write cmd 0x94 (STANDBY IMMEDIATE) not supported"); command_aborted(channel, 0x94); break; case 0x95: bug("write cmd 0x95 (IDLE IMMEDIATE) not supported"); command_aborted(channel, 0x95); break; case 0x96: bug("write cmd 0x96 (STANDBY) not supported"); command_aborted(channel, 0x96); break; case 0x97: bug("write cmd 0x97 (IDLE) not supported"); command_aborted(channel, 0x97); break; case 0x98: bug("write cmd 0x98 (CHECK POWER MODE) not supported"); command_aborted(channel, 0x98); break; case 0x99: bug("write cmd 0x99 (SLEEP) not supported"); command_aborted(channel, 0x99); break; case 0xB0: bug("write cmd 0xB0 (SMART commands) not supported"); command_aborted(channel, 0xB0); break; case 0xB1: bug("write cmd 0xB1 (DEVICE CONFIGURATION commands) not supported"); command_aborted(channel, 0xB1); break; case 0xC0: bug("write cmd 0xC0 (CFA ERASE SECTORS) not supported"); command_aborted(channel, 0xC0); break; case 0xC4: bug("write cmd 0xC4 (READ MULTIPLE) not supported"); command_aborted(channel, 0xC4); break; case 0xC5: bug("write cmd 0xC5 (WRITE MULTIPLE) not supported"); command_aborted(channel, 0xC5); break; case 0xC7: bug("write cmd 0xC7 (READ DMA QUEUED) not supported"); command_aborted(channel, 0xC7); break; case 0xC9: bug("write cmd 0xC9 (READ DMA NO RETRY) not supported"); command_aborted(channel, 0xC9); break; case 0xCC: bug("write cmd 0xCC (WRITE DMA QUEUED) not supported"); command_aborted(channel, 0xCC); break; case 0xCD: bug("write cmd 0xCD (CFA WRITE MULTIPLE W/OUT ERASE) not supported"); command_aborted(channel, 0xCD); break; case 0xD1: bug("write cmd 0xD1 (CHECK MEDIA CARD TYPE) not supported"); command_aborted(channel, 0xD1); break; case 0xDA: bug("write cmd 0xDA (GET MEDIA STATUS) not supported"); command_aborted(channel, 0xDA); break; case 0xDE: bug("write cmd 0xDE (MEDIA LOCK) not supported"); command_aborted(channel, 0xDE); break; case 0xDF: bug("write cmd 0xDF (MEDIA UNLOCK) not supported"); command_aborted(channel, 0xDF); break; case 0xE0: bug("write cmd 0xE0 (STANDBY IMMEDIATE) not supported"); command_aborted(channel, 0xE0); break; case 0xE1: bug("write cmd 0xE1 (IDLE IMMEDIATE) not supported"); command_aborted(channel, 0xE1); break; case 0xE2: bug("write cmd 0xE2 (STANDBY) not supported"); command_aborted(channel, 0xE2); break; case 0xE3: bug("write cmd 0xE3 (IDLE) not supported"); command_aborted(channel, 0xE3); break; case 0xE4: bug("write cmd 0xE4 (READ BUFFER) not supported"); command_aborted(channel, 0xE4); break; case 0xE6: bug("write cmd 0xE6 (SLEEP) not supported"); command_aborted(channel, 0xE6); break; case 0xE7: bug("write cmd 0xE7 (FLUSH CACHE) not supported"); command_aborted(channel, 0xE7); break; case 0xE8: bug("write cmd 0xE8 (WRITE BUFFER) not supported"); command_aborted(channel, 0xE8); break; case 0xEA: bug("write cmd 0xEA (FLUSH CACHE EXT) not supported"); command_aborted(channel, 0xEA); break; case 0xED: bug("write cmd 0xED (MEDIA EJECT) not supported"); command_aborted(channel, 0xED); break; case 0xF1: bug("write cmd 0xF1 (SECURITY SET PASSWORD) not supported"); command_aborted(channel, 0xF1); break; case 0xF2: bug("write cmd 0xF2 (SECURITY UNLOCK) not supported"); command_aborted(channel, 0xF2); break; case 0xF3: bug("write cmd 0xF3 (SECURITY ERASE PREPARE) not supported"); command_aborted(channel, 0xF3); break; case 0xF4: bug("write cmd 0xF4 (SECURITY ERASE UNIT) not supported"); command_aborted(channel, 0xF4); break; case 0xF5: bug("write cmd 0xF5 (SECURITY FREEZE LOCK) not supported"); command_aborted(channel, 0xF5); break; case 0xF6: bug("write cmd 0xF6 (SECURITY DISABLE PASSWORD) not supported"); command_aborted(channel, 0xF6); break; case 0xF8: bug("write cmd 0xF8 (READ NATIVE MAX ADDRESS) not supported"); command_aborted(channel, 0xF8); break; case 0xF9: bug("write cmd 0xF9 (SET MAX ADDRESS) not supported"); command_aborted(channel, 0xF9); break; default: panicbug("IO write(1f7h): command 0x%02x", (unsigned) value); // if user foolishly decides to continue, abort the command // so that the software knows the drive didn't understand it. command_aborted(channel, value); } break; case 0x16: // hard disk adapter control (f00039) // (mch) Even if device 1 was selected, a write to this register // goes to device 0 (if device 1 is absent) prev_control_reset = BX_SELECTED_CONTROLLER(channel).control.reset; BX_HD_THIS channels[channel].drives[0].controller.control.reset = value & 0x04; BX_HD_THIS channels[channel].drives[1].controller.control.reset = value & 0x04; // CGS: was: BX_SELECTED_CONTROLLER(channel).control.disable_irq = value & 0x02; BX_HD_THIS channels[channel].drives[0].controller.control.disable_irq = value & 0x02; BX_HD_THIS channels[channel].drives[1].controller.control.disable_irq = value & 0x02; D(bug("adpater control reg: reset controller = %d", (unsigned) (BX_SELECTED_CONTROLLER(channel).control.reset) ? 1 : 0)); D(bug("adpater control reg: disable_irq(X) = %d", (unsigned) (BX_SELECTED_CONTROLLER(channel).control.disable_irq) ? 1 : 0)); if (!prev_control_reset && BX_SELECTED_CONTROLLER(channel).control.reset) { // transition from 0 to 1 causes all drives to reset BX_DEBUG(("hard drive: RESET")); // (mch) Set BSY, drive not ready for (int id = 0; id < 2; id++) { BX_CONTROLLER(channel, id).status.busy = 1; BX_CONTROLLER(channel, id).status.drive_ready = 0; BX_CONTROLLER(channel, id).reset_in_progress = 1; BX_CONTROLLER(channel, id).status.write_fault = 0; BX_CONTROLLER(channel, id).status.seek_complete = 1; BX_CONTROLLER(channel, id).status.drq = 0; BX_CONTROLLER(channel, id).status.corrected_data = 0; BX_CONTROLLER(channel, id).status.err = 0; BX_CONTROLLER(channel, id).error_register = 0x01; // diagnostic code: no error BX_CONTROLLER(channel, id).current_command = 0x00; BX_CONTROLLER(channel, id).buffer_index = 0; BX_CONTROLLER(channel, id).sectors_per_block = 0x80; BX_CONTROLLER(channel, id).lba_mode = 0; BX_CONTROLLER(channel, id).control.disable_irq = 0; getMFP()->setGPIPbit(0x20, 0x20); // lower the interrupt } } else if (BX_SELECTED_CONTROLLER(channel).reset_in_progress && !BX_SELECTED_CONTROLLER(channel).control.reset) { // Clear BSY and DRDY D(bug("Reset complete {%s}", BX_SELECTED_TYPE_STRING(channel))); for (int id = 0; id < 2; id++) { BX_CONTROLLER(channel, id).status.busy = 0; BX_CONTROLLER(channel, id).status.drive_ready = 1; BX_CONTROLLER(channel, id).reset_in_progress = 0; // Device signature if (BX_DRIVE_IS_HD(channel, id)) { BX_CONTROLLER(channel, id).head_no = 0; BX_CONTROLLER(channel, id).sector_count = 1; BX_CONTROLLER(channel, id).sector_no = 1; BX_CONTROLLER(channel, id).cylinder_no = 0; } else { BX_CONTROLLER(channel, id).head_no = 0; BX_CONTROLLER(channel, id).sector_count = 1; BX_CONTROLLER(channel, id).sector_no = 1; BX_CONTROLLER(channel, id).cylinder_no = 0xeb14; } } } D(bug("s[0].controller.control.disable_irq = %02x", (BX_HD_THIS channels[channel].drives[0]).controller.control.disable_irq)); D(bug("s[1].controller.control.disable_irq = %02x", (BX_HD_THIS channels[channel].drives[1]).controller.control.disable_irq)); break; default: switch (address) { case 0xf00008: case 0xf0000c: case 0xf00018: case 0xf00038: /* * silently ignore off-by-1 addresses for secnum/seccount/head/status; * they might be used to detect twisted interface cables * (since EmuTOS 0.9.8) */ break; default: panicbug("hard drive: io write to address 0x%08x = %02x", (unsigned) address, (unsigned) value); break; } } } void bx_hard_drive_c::close_harddrive(void) { for (Bit8u channel = 0; channel < BX_MAX_ATA_CHANNEL; channel++) { BX_HD_THIS channels[channel].drives[0].hard_drive->close(); BX_HD_THIS channels[channel].drives[1].hard_drive->close(); } } bool bx_hard_drive_c::calculate_logical_address(Bit8u channel, off_t * sector) { off_t logical_sector; if (BX_SELECTED_CONTROLLER(channel).lba_mode) { logical_sector = ((Bit32u) BX_SELECTED_CONTROLLER(channel).head_no) << 24 | ((Bit32u) BX_SELECTED_CONTROLLER(channel).cylinder_no) << 8 | (Bit32u) BX_SELECTED_CONTROLLER(channel).sector_no; } else logical_sector = ((uint32) BX_SELECTED_CONTROLLER(channel).cylinder_no * BX_SELECTED_DRIVE(channel).hard_drive->heads * BX_SELECTED_DRIVE(channel).hard_drive->sectors) + (Bit32u) (BX_SELECTED_CONTROLLER(channel).head_no * BX_SELECTED_DRIVE(channel).hard_drive->sectors) + (BX_SELECTED_CONTROLLER(channel).sector_no - 1); Bit32u sector_count = (Bit32u) BX_SELECTED_DRIVE(channel).hard_drive->cylinders * (Bit32u) BX_SELECTED_DRIVE(channel).hard_drive->heads * (Bit32u) BX_SELECTED_DRIVE(channel).hard_drive->sectors; *sector = logical_sector; if (logical_sector >= (off_t) sector_count) { bug("calc_log_addr: out of bounds"); return false; } return true; } void bx_hard_drive_c::increment_address(Bit8u channel) { BX_SELECTED_CONTROLLER(channel).sector_count--; if (BX_SELECTED_CONTROLLER(channel).lba_mode) { off_t current_address; calculate_logical_address(channel, ¤t_address); current_address++; BX_SELECTED_CONTROLLER(channel).head_no = (Bit8u) ((current_address >> 24) & 0xf); BX_SELECTED_CONTROLLER(channel).cylinder_no = (Bit16u) ((current_address >> 8) & 0xffff); BX_SELECTED_CONTROLLER(channel).sector_no = (Bit8u) ((current_address) & 0xff); } else { BX_SELECTED_CONTROLLER(channel).sector_no++; if (BX_SELECTED_CONTROLLER(channel).sector_no > BX_SELECTED_DRIVE(channel).hard_drive->sectors || BX_SELECTED_CONTROLLER(channel).sector_no == 0) { BX_SELECTED_CONTROLLER(channel).sector_no = 1; BX_SELECTED_CONTROLLER(channel).head_no++; if (BX_SELECTED_CONTROLLER(channel).head_no >= BX_SELECTED_DRIVE(channel).hard_drive->heads) { BX_SELECTED_CONTROLLER(channel).head_no = 0; BX_SELECTED_CONTROLLER(channel).cylinder_no++; if (BX_SELECTED_CONTROLLER(channel).cylinder_no >= BX_SELECTED_DRIVE(channel).hard_drive->cylinders) BX_SELECTED_CONTROLLER(channel).cylinder_no = BX_SELECTED_DRIVE(channel).hard_drive->cylinders - 1; } } } } void bx_hard_drive_c::identify_ATAPI_drive(Bit8u channel) { unsigned i; BX_SELECTED_DRIVE(channel).id_drive[0] = (2 << 14) | (5 << 8) | (1 << 7) | (2 << 5) | (0 << 0); // Removable CDROM, 50us response, 12 byte packets for (i = 1; i <= 9; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; const char *serial_number = " VT00001\0\0\0\0\0\0\0\0\0\0\0\0"; for (i = 0; i < 10; i++) { BX_SELECTED_DRIVE(channel).id_drive[10 + i] = (serial_number[i * 2] << 8) | serial_number[i * 2 + 1]; } for (i = 20; i <= 22; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; const char *firmware = "ALPHA1 "; for (i = 0; i < strlen(firmware) / 2; i++) { BX_SELECTED_DRIVE(channel).id_drive[23 + i] = (firmware[i * 2] << 8) | firmware[i * 2 + 1]; } for (i = 0; i < strlen((char *) BX_SELECTED_MODEL(channel)) / 2; i++) BX_SELECTED_DRIVE(channel).id_drive[27 + i] = (BX_SELECTED_MODEL(channel)[i * 2] << 8) | BX_SELECTED_MODEL(channel)[i * 2 + 1]; BX_SELECTED_DRIVE(channel).id_drive[47] = 0; BX_SELECTED_DRIVE(channel).id_drive[48] = 1; // 32 bits access BX_SELECTED_DRIVE(channel).id_drive[49] = (1 << 9); // LBA supported BX_SELECTED_DRIVE(channel).id_drive[50] = 0; BX_SELECTED_DRIVE(channel).id_drive[51] = 0; BX_SELECTED_DRIVE(channel).id_drive[52] = 0; BX_SELECTED_DRIVE(channel).id_drive[53] = 3; // words 64-70, 54-58 valid for (i = 54; i <= 62; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; // copied from CFA540A BX_SELECTED_DRIVE(channel).id_drive[63] = 0x0103; // variable (DMA stuff) BX_SELECTED_DRIVE(channel).id_drive[64] = 0x0001; // PIO BX_SELECTED_DRIVE(channel).id_drive[65] = 0x00b4; BX_SELECTED_DRIVE(channel).id_drive[66] = 0x00b4; BX_SELECTED_DRIVE(channel).id_drive[67] = 0x012c; BX_SELECTED_DRIVE(channel).id_drive[68] = 0x00b4; BX_SELECTED_DRIVE(channel).id_drive[69] = 0; BX_SELECTED_DRIVE(channel).id_drive[70] = 0; BX_SELECTED_DRIVE(channel).id_drive[71] = 30; // faked BX_SELECTED_DRIVE(channel).id_drive[72] = 30; // faked BX_SELECTED_DRIVE(channel).id_drive[73] = 0; BX_SELECTED_DRIVE(channel).id_drive[74] = 0; BX_SELECTED_DRIVE(channel).id_drive[75] = 0; for (i = 76; i <= 79; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; BX_SELECTED_DRIVE(channel).id_drive[80] = 0x1e; // supports up to ATA/ATAPI-4 BX_SELECTED_DRIVE(channel).id_drive[81] = 0; BX_SELECTED_DRIVE(channel).id_drive[82] = 0; BX_SELECTED_DRIVE(channel).id_drive[83] = 0; BX_SELECTED_DRIVE(channel).id_drive[84] = 0; BX_SELECTED_DRIVE(channel).id_drive[85] = 0; BX_SELECTED_DRIVE(channel).id_drive[86] = 0; BX_SELECTED_DRIVE(channel).id_drive[87] = 0; BX_SELECTED_DRIVE(channel).id_drive[88] = 0; for (i = 89; i <= 126; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; BX_SELECTED_DRIVE(channel).id_drive[127] = 0; BX_SELECTED_DRIVE(channel).id_drive[128] = 0; for (i = 129; i <= 159; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; for (i = 160; i <= 255; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; // now convert the id_drive array (native 256 word format) to // the controller buffer (512 bytes) Bit16u temp16; for (i = 0; i <= 255; i++) { temp16 = BX_SELECTED_DRIVE(channel).id_drive[i]; BX_SELECTED_CONTROLLER(channel).buffer[i * 2] = temp16 & 0x00ff; BX_SELECTED_CONTROLLER(channel).buffer[i * 2 + 1] = temp16 >> 8; } } void bx_hard_drive_c::identify_drive(Bit8u channel) { unsigned i; Bit32u temp32; Bit16u temp16; #if defined(CONNER_CFA540A) BX_SELECTED_DRIVE(channel).id_drive[0] = 0x0c5a; BX_SELECTED_DRIVE(channel).id_drive[1] = 0x0418; BX_SELECTED_DRIVE(channel).id_drive[2] = 0; BX_SELECTED_DRIVE(channel).id_drive[3] = BX_SELECTED_DRIVE(channel).hard_drive->heads; BX_SELECTED_DRIVE(channel).id_drive[4] = 0x9fb7; BX_SELECTED_DRIVE(channel).id_drive[5] = 0x0289; BX_SELECTED_DRIVE(channel).id_drive[6] = BX_SELECTED_DRIVE(channel).hard_drive->sectors; BX_SELECTED_DRIVE(channel).id_drive[7] = 0x0030; BX_SELECTED_DRIVE(channel).id_drive[8] = 0x000a; BX_SELECTED_DRIVE(channel).id_drive[9] = 0x0000; char *serial_number = " CA00GSQ\0\0\0\0\0\0\0\0\0\0\0\0"; for (i = 0; i < 10; i++) { BX_SELECTED_DRIVE(channel).id_drive[10 + i] = (serial_number[i * 2] << 8) | serial_number[i * 2 + 1]; } BX_SELECTED_DRIVE(channel).id_drive[20] = 3; BX_SELECTED_DRIVE(channel).id_drive[21] = 512; // 512 Sectors = 256kB cache BX_SELECTED_DRIVE(channel).id_drive[22] = 4; char *firmware = "8FT054 "; for (i = 0; i < strlen(firmware) / 2; i++) { BX_SELECTED_DRIVE(channel).id_drive[23 + i] = (firmware[i * 2] << 8) | firmware[i * 2 + 1]; } char *model = "Conner Peripherals 540MB - CFA540A "; for (i = 0; i < strlen(model) / 2; i++) { BX_SELECTED_DRIVE(channel).id_drive[27 + i] = (model[i * 2] << 8) | model[i * 2 + 1]; } BX_SELECTED_DRIVE(channel).id_drive[47] = 0x8080; // multiple mode identification BX_SELECTED_DRIVE(channel).id_drive[48] = 0; BX_SELECTED_DRIVE(channel).id_drive[49] = 0x0f01; BX_SELECTED_DRIVE(channel).id_drive[50] = 0; BX_SELECTED_DRIVE(channel).id_drive[51] = 0; BX_SELECTED_DRIVE(channel).id_drive[52] = 0x0002; BX_SELECTED_DRIVE(channel).id_drive[53] = 0x0003; BX_SELECTED_DRIVE(channel).id_drive[54] = 0x0418; BX_SELECTED_DRIVE(channel).id_drive[55] = BX_SELECTED_DRIVE(channel).hard_drive->heads; BX_SELECTED_DRIVE(channel).id_drive[56] = BX_SELECTED_DRIVE(channel).hard_drive->sectors; BX_SELECTED_DRIVE(channel).id_drive[57] = 0x1e80; BX_SELECTED_DRIVE(channel).id_drive[58] = 0x0010; BX_SELECTED_DRIVE(channel).id_drive[59] = 0x0100 | BX_SELECTED_CONTROLLER(channel).sectors_per_block; BX_SELECTED_DRIVE(channel).id_drive[60] = 0x20e0; BX_SELECTED_DRIVE(channel).id_drive[61] = 0x0010; BX_SELECTED_DRIVE(channel).id_drive[62] = 0; BX_SELECTED_DRIVE(channel).id_drive[63] = 0x0103; // variable (DMA stuff) BX_SELECTED_DRIVE(channel).id_drive[64] = 0x0001; // PIO BX_SELECTED_DRIVE(channel).id_drive[65] = 0x00b4; BX_SELECTED_DRIVE(channel).id_drive[66] = 0x00b4; BX_SELECTED_DRIVE(channel).id_drive[67] = 0x012c; BX_SELECTED_DRIVE(channel).id_drive[68] = 0x00b4; for (i = 69; i <= 79; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; BX_SELECTED_DRIVE(channel).id_drive[80] = 0; BX_SELECTED_DRIVE(channel).id_drive[81] = 0; BX_SELECTED_DRIVE(channel).id_drive[82] = 0; BX_SELECTED_DRIVE(channel).id_drive[83] = 0; BX_SELECTED_DRIVE(channel).id_drive[84] = 0; BX_SELECTED_DRIVE(channel).id_drive[85] = 0; BX_SELECTED_DRIVE(channel).id_drive[86] = 0; BX_SELECTED_DRIVE(channel).id_drive[87] = 0; for (i = 88; i <= 127; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; BX_SELECTED_DRIVE(channel).id_drive[128] = 0x0418; BX_SELECTED_DRIVE(channel).id_drive[129] = 0x103f; BX_SELECTED_DRIVE(channel).id_drive[130] = 0x0418; BX_SELECTED_DRIVE(channel).id_drive[131] = 0x103f; BX_SELECTED_DRIVE(channel).id_drive[132] = 0x0004; BX_SELECTED_DRIVE(channel).id_drive[133] = 0xffff; BX_SELECTED_DRIVE(channel).id_drive[134] = 0; BX_SELECTED_DRIVE(channel).id_drive[135] = 0x5050; for (i = 136; i <= 144; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; BX_SELECTED_DRIVE(channel).id_drive[145] = 0x302e; BX_SELECTED_DRIVE(channel).id_drive[146] = 0x3245; BX_SELECTED_DRIVE(channel).id_drive[147] = 0x2020; BX_SELECTED_DRIVE(channel).id_drive[148] = 0x2020; for (i = 149; i <= 255; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; #else // Identify Drive command return values definition // // This code is rehashed from some that was donated. // I'm using ANSI X3.221-1994, AT Attachment Interface for Disk Drives // and X3T10 2008D Working Draft for ATA-3 // Word 0: general config bit-significant info // Note: bits 1-5 and 8-14 are now "Vendor specific (obsolete)" // bit 15: 0=ATA device // 1=ATAPI device // bit 14: 1=format speed tolerance gap required // bit 13: 1=track offset option available // bit 12: 1=data strobe offset option available // bit 11: 1=rotational speed tolerance is > 0,5% (typo?) // bit 10: 1=disk transfer rate > 10Mbs // bit 9: 1=disk transfer rate > 5Mbs but <= 10Mbs // bit 8: 1=disk transfer rate <= 5Mbs // bit 7: 1=removable cartridge drive // bit 6: 1=fixed drive // bit 5: 1=spindle motor control option implemented // bit 4: 1=head switch time > 15 usec // bit 3: 1=not MFM encoded // bit 2: 1=soft sectored // bit 1: 1=hard sectored // bit 0: 0=reserved BX_SELECTED_DRIVE(channel).id_drive[0] = 0x0040; // Word 1: number of user-addressable cylinders in // default translation mode. If the value in words 60-61 // exceed 16,515,072, this word shall contain 16,383. BX_SELECTED_DRIVE(channel).id_drive[1] = BX_SELECTED_DRIVE(channel).hard_drive->cylinders; // Word 2: reserved BX_SELECTED_DRIVE(channel).id_drive[2] = 0; // Word 3: number of user-addressable heads in default // translation mode BX_SELECTED_DRIVE(channel).id_drive[3] = BX_SELECTED_DRIVE(channel).hard_drive->heads; // Word 4: # unformatted bytes per translated track in default xlate mode // Word 5: # unformatted bytes per sector in default xlated mode // Word 6: # user-addressable sectors per track in default xlate mode // Note: words 4,5 are now "Vendor specific (obsolete)" BX_SELECTED_DRIVE(channel).id_drive[4] = (512 * BX_SELECTED_DRIVE(channel).hard_drive->sectors); BX_SELECTED_DRIVE(channel).id_drive[5] = 512; BX_SELECTED_DRIVE(channel).id_drive[6] = BX_SELECTED_DRIVE(channel).hard_drive->sectors; // Word 7-9: Vendor specific for (i = 7; i <= 9; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; // Word 10-19: Serial number (20 ASCII characters, 0000h=not specified) // This field is right justified and padded with spaces (20h). for (i = 10; i <= 19; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; // Word 20: buffer type // 0000h = not specified // 0001h = single ported single sector buffer which is // not capable of simulataneous data xfers to/from // the host and the disk. // 0002h = dual ported multi-sector buffer capable of // simulatenous data xfers to/from the host and disk. // 0003h = dual ported mutli-sector buffer capable of // simulatenous data xfers with a read caching // capability. // 0004h-ffffh = reserved BX_SELECTED_DRIVE(channel).id_drive[20] = 3; // Word 21: buffer size in 512 byte increments, 0000h = not specified BX_SELECTED_DRIVE(channel).id_drive[21] = 512; // 512 Sectors = 256kB cache // Word 22: # of ECC bytes available on read/write long cmds // 0000h = not specified BX_SELECTED_DRIVE(channel).id_drive[22] = 4; // Word 23..26: Firmware revision (8 ascii chars, 0000h=not specified) // This field is left justified and padded with spaces (20h) for (i = 23; i <= 26; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; // Word 27..46: Model number (40 ascii chars, 0000h=not specified) // This field is left justified and padded with spaces (20h) // for (i=27; i<=46; i++) // BX_SELECTED_DRIVE(channel).id_drive[i] = 0; for (i = 0; i < 20; i++) { BX_SELECTED_DRIVE(channel).id_drive[27 + i] = (BX_SELECTED_MODEL(channel)[i * 2] << 8) | BX_SELECTED_MODEL(channel)[i * 2 + 1]; } // Word 47: 15-8 Vendor unique // 7-0 00h= read/write multiple commands not implemented // xxh= maximum # of sectors that can be transferred // per interrupt on read and write multiple commands BX_SELECTED_DRIVE(channel).id_drive[47] = max_multiple_sectors; // Word 48: 0000h = cannot perform dword IO // 0001h = can perform dword IO BX_SELECTED_DRIVE(channel).id_drive[48] = 1; // Word 49: Capabilities // 15-10: 0 = reserved // 9: 1 = LBA supported // 8: 1 = DMA supported // 7-0: Vendor unique if (ATA_DMA) { BX_SELECTED_DRIVE(channel).id_drive[49] = (1 << 9) | (1 << 8); } else { BX_SELECTED_DRIVE(channel).id_drive[49] = 1 << 9; } // Word 50: Reserved BX_SELECTED_DRIVE(channel).id_drive[50] = 0; // Word 51: 15-8 PIO data transfer cycle timing mode // 7-0 Vendor unique BX_SELECTED_DRIVE(channel).id_drive[51] = 0x200; // Word 52: 15-8 DMA data transfer cycle timing mode // 7-0 Vendor unique BX_SELECTED_DRIVE(channel).id_drive[52] = 0x200; // Word 53: 15-1 Reserved // 0 1=the fields reported in words 54-58 are valid // 0=the fields reported in words 54-58 may be valid BX_SELECTED_DRIVE(channel).id_drive[53] = 0; // Word 54: # of user-addressable cylinders in curr xlate mode // Word 55: # of user-addressable heads in curr xlate mode // Word 56: # of user-addressable sectors/track in curr xlate mode BX_SELECTED_DRIVE(channel).id_drive[54] = BX_SELECTED_DRIVE(channel).hard_drive->cylinders; BX_SELECTED_DRIVE(channel).id_drive[55] = BX_SELECTED_DRIVE(channel).hard_drive->heads; BX_SELECTED_DRIVE(channel).id_drive[56] = BX_SELECTED_DRIVE(channel).hard_drive->sectors; // Word 57-58: Current capacity in sectors // Excludes all sectors used for device specific purposes. temp32 = BX_SELECTED_DRIVE(channel).hard_drive->cylinders * BX_SELECTED_DRIVE(channel).hard_drive->heads * BX_SELECTED_DRIVE(channel).hard_drive->sectors; BX_SELECTED_DRIVE(channel).id_drive[57] = (temp32 & 0xffff); // LSW BX_SELECTED_DRIVE(channel).id_drive[58] = (temp32 >> 16); // MSW // Word 59: 15-9 Reserved // 8 1=multiple sector setting is valid // 7-0 current setting for number of sectors that can be // transferred per interrupt on R/W multiple commands BX_SELECTED_DRIVE(channel).id_drive[59] = 0x0000 | curr_multiple_sectors; // Word 60-61: // If drive supports LBA Mode, these words reflect total # of user // addressable sectors. This value does not depend on the current // drive geometry. If the drive does not support LBA mode, these // words shall be set to 0. Bit32u num_sects = BX_SELECTED_DRIVE(channel).hard_drive->cylinders * BX_SELECTED_DRIVE(channel).hard_drive->heads * BX_SELECTED_DRIVE(channel).hard_drive->sectors; BX_SELECTED_DRIVE(channel).id_drive[60] = num_sects & 0xffff; // LSW BX_SELECTED_DRIVE(channel).id_drive[61] = num_sects >> 16; // MSW // Word 62: 15-8 single word DMA transfer mode active // 7-0 single word DMA transfer modes supported // The low order byte identifies by bit, all the Modes which are // supported e.g., if Mode 0 is supported bit 0 is set. // The high order byte contains a single bit set to indiciate // which mode is active. BX_SELECTED_DRIVE(channel).id_drive[62] = 0x0; // Word 63: 15-8 multiword DMA transfer mode active // 7-0 multiword DMA transfer modes supported // The low order byte identifies by bit, all the Modes which are // supported e.g., if Mode 0 is supported bit 0 is set. // The high order byte contains a single bit set to indiciate // which mode is active. if (ATA_DMA) { BX_SELECTED_DRIVE(channel).id_drive[63] = 0x07; } else { BX_SELECTED_DRIVE(channel).id_drive[63] = 0x0; } // Word 64-79 Reserved for (i = 64; i <= 79; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; // Word 80: 15-5 reserved // 4 supports ATA/ATAPI-4 // 3 supports ATA-3 // 2 supports ATA-2 // 1 supports ATA-1 // 0 reserved BX_SELECTED_DRIVE(channel).id_drive[80] = (1 << 2) | (1 << 1); // Word 81: Minor version number BX_SELECTED_DRIVE(channel).id_drive[81] = 0; // Word 82: 15 obsolete // 14 NOP command supported // 13 READ BUFFER command supported // 12 WRITE BUFFER command supported // 11 obsolete // 10 Host protected area feature set supported // 9 DEVICE RESET command supported // 8 SERVICE interrupt supported // 7 release interrupt supported // 6 look-ahead supported // 5 write cache supported // 4 supports PACKET command feature set // 3 supports power management feature set // 2 supports removable media feature set // 1 supports securite mode feature set // 0 support SMART feature set BX_SELECTED_DRIVE(channel).id_drive[82] = 1 << 14; BX_SELECTED_DRIVE(channel).id_drive[83] = 1 << 14; BX_SELECTED_DRIVE(channel).id_drive[84] = 1 << 14; BX_SELECTED_DRIVE(channel).id_drive[85] = 1 << 14; BX_SELECTED_DRIVE(channel).id_drive[86] = 0; BX_SELECTED_DRIVE(channel).id_drive[87] = 1 << 14; for (i = 88; i <= 127; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; // Word 128-159 Vendor unique for (i = 128; i <= 159; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; // Word 160-255 Reserved for (i = 160; i <= 255; i++) BX_SELECTED_DRIVE(channel).id_drive[i] = 0; #endif D(bug("Drive ID Info. initialized : %04d {%s}", 512, BX_SELECTED_TYPE_STRING(channel))); // now convert the id_drive array (native 256 word format) to // the controller buffer (512 bytes) for (i = 0; i <= 255; i++) { temp16 = BX_SELECTED_DRIVE(channel).id_drive[i]; BX_SELECTED_CONTROLLER(channel).buffer[i * 2] = temp16 & 0x00ff; BX_SELECTED_CONTROLLER(channel).buffer[i * 2 + 1] = temp16 >> 8; } } void bx_hard_drive_c::init_send_atapi_command(Bit8u channel, Bit8u command, int req_length, int alloc_length, bool lazy) { // BX_SELECTED_CONTROLLER(channel).byte_count is a union of BX_SELECTED_CONTROLLER(channel).cylinder_no; // lazy is used to force a data read in the buffer at the next read. if (BX_SELECTED_CONTROLLER(channel).byte_count == 0xffff) BX_SELECTED_CONTROLLER(channel).byte_count = 0xfffe; if ((BX_SELECTED_CONTROLLER(channel).byte_count & 1) && !(alloc_length <= BX_SELECTED_CONTROLLER(channel).byte_count)) { D2(bug("Odd byte count (0x%04x) to ATAPI command 0x%02x, using 0x%04x", BX_SELECTED_CONTROLLER(channel).byte_count, command, BX_SELECTED_CONTROLLER(channel).byte_count - 1)); BX_SELECTED_CONTROLLER(channel).byte_count -= 1; } if (BX_SELECTED_CONTROLLER(channel).byte_count == 0) panicbug(("ATAPI command with zero byte count")); if (alloc_length < 0) panicbug(("Allocation length < 0")); if (alloc_length == 0) alloc_length = BX_SELECTED_CONTROLLER(channel).byte_count; BX_SELECTED_CONTROLLER(channel).interrupt_reason.i_o = 1; BX_SELECTED_CONTROLLER(channel).interrupt_reason.c_d = 0; BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drq = 1; BX_SELECTED_CONTROLLER(channel).status.err = 0; // no bytes transfered yet if (lazy) BX_SELECTED_CONTROLLER(channel).buffer_index = 2048; else BX_SELECTED_CONTROLLER(channel).buffer_index = 0; BX_SELECTED_CONTROLLER(channel).drq_index = 0; if (BX_SELECTED_CONTROLLER(channel).byte_count > req_length) BX_SELECTED_CONTROLLER(channel).byte_count = req_length; if (BX_SELECTED_CONTROLLER(channel).byte_count > alloc_length) BX_SELECTED_CONTROLLER(channel).byte_count = alloc_length; BX_SELECTED_DRIVE(channel).atapi.command = command; BX_SELECTED_DRIVE(channel).atapi.drq_bytes = BX_SELECTED_CONTROLLER(channel).byte_count; BX_SELECTED_DRIVE(channel).atapi.total_bytes_remaining = (req_length < alloc_length) ? req_length : alloc_length; // if (lazy) { // // bias drq_bytes and total_bytes_remaining // BX_SELECTED_DRIVE(channel).atapi.drq_bytes += 2048; // BX_SELECTED_DRIVE(channel).atapi.total_bytes_remaining += 2048; // } } void bx_hard_drive_c::atapi_cmd_error(Bit8u channel, sense_t sense_key, asc_t asc) { D(bug("atapi_cmd_error channel=%02x key=%02x asc=%02x", channel, sense_key, asc)); BX_SELECTED_CONTROLLER(channel).error_register = sense_key << 4; BX_SELECTED_CONTROLLER(channel).interrupt_reason.i_o = 1; BX_SELECTED_CONTROLLER(channel).interrupt_reason.c_d = 1; BX_SELECTED_CONTROLLER(channel).interrupt_reason.rel = 0; BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.write_fault = 0; BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.err = 1; BX_SELECTED_DRIVE(channel).sense.sense_key = sense_key; BX_SELECTED_DRIVE(channel).sense.asc = asc; BX_SELECTED_DRIVE(channel).sense.ascq = 0; } void bx_hard_drive_c::atapi_cmd_nop(Bit8u channel) { BX_SELECTED_CONTROLLER(channel).interrupt_reason.i_o = 1; BX_SELECTED_CONTROLLER(channel).interrupt_reason.c_d = 1; BX_SELECTED_CONTROLLER(channel).interrupt_reason.rel = 0; BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; } void bx_hard_drive_c::init_mode_sense_single(Bit8u channel, const void *src, int size) { // Header BX_SELECTED_CONTROLLER(channel).buffer[0] = (size + 6) >> 8; BX_SELECTED_CONTROLLER(channel).buffer[1] = (size + 6) & 0xff; if (bx_options.atadevice[channel][BX_HD_THIS channels[channel].drive_select].status == BX_INSERTED) BX_SELECTED_CONTROLLER(channel).buffer[2] = 0x12; // media present 120mm CD-ROM (CD-R) data/audio door closed else BX_SELECTED_CONTROLLER(channel).buffer[2] = 0x70; // no media present BX_SELECTED_CONTROLLER(channel).buffer[3] = 0; // reserved BX_SELECTED_CONTROLLER(channel).buffer[4] = 0; // reserved BX_SELECTED_CONTROLLER(channel).buffer[5] = 0; // reserved BX_SELECTED_CONTROLLER(channel).buffer[6] = 0; // reserved BX_SELECTED_CONTROLLER(channel).buffer[7] = 0; // reserved // Data memcpy(BX_SELECTED_CONTROLLER(channel).buffer + 8, src, size); } void bx_hard_drive_c::ready_to_send_atapi(Bit8u channel) { raise_interrupt(channel); } void bx_hard_drive_c::raise_interrupt(Bit8u channel) { D(bug("raise_interrupt called, disable_irq = %02x", BX_SELECTED_CONTROLLER(channel).control.disable_irq)); if (!BX_SELECTED_CONTROLLER(channel).control.disable_irq) { D(bug("raising interrupt")); } else { D(bug("Not raising interrupt")); } if (!BX_SELECTED_CONTROLLER(channel).control.disable_irq) { getMFP()->setGPIPbit(0x20, 0); } } void bx_hard_drive_c::command_aborted(Bit8u channel, unsigned value) { DUNUSED(value); D(bug("aborting on command 0x%02x {%s}", value, BX_SELECTED_TYPE_STRING(channel))); BX_SELECTED_CONTROLLER(channel).current_command = 0; BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.err = 1; BX_SELECTED_CONTROLLER(channel).error_register = 0x04; // command ABORTED BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.seek_complete = 0; BX_SELECTED_CONTROLLER(channel).status.corrected_data = 0; BX_SELECTED_CONTROLLER(channel).buffer_index = 0; raise_interrupt(channel); } Bit32u bx_hard_drive_c::get_device_handle(Bit8u channel, Bit8u device) { D(bug("get_device_handle %d %d", channel, device)); if ((channel < BX_MAX_ATA_CHANNEL) && (device < 2)) { return ((channel * 2) + device); } return BX_MAX_ATA_CHANNEL * 2; } Bit32u bx_hard_drive_c::get_first_cd_handle(void) { for (Bit8u channel = 0; channel < BX_MAX_ATA_CHANNEL; channel++) { if (BX_DRIVE_IS_CD(channel, 0)) return (channel * 2); if (BX_DRIVE_IS_CD(channel, 1)) return ((channel * 2) + 1); } return BX_MAX_ATA_CHANNEL * 2; } unsigned bx_hard_drive_c::get_cd_media_status(Bit32u handle) { if (handle >= BX_MAX_ATA_CHANNEL * 2) return 0; Bit8u channel = handle / 2; Bit8u device = handle % 2; return (BX_HD_THIS channels[channel].drives[device].cdrom.ready); } unsigned bx_hard_drive_c::set_cd_media_status(Bit32u handle, unsigned status) { if (handle >= BX_MAX_ATA_CHANNEL * 2) return 0; Bit8u channel = handle / 2; Bit8u device = handle % 2; // if setting to the current value, nothing to do if (status == BX_HD_THIS channels[channel].drives[device].cdrom.ready) return (status); // return 0 if no cdromd is present if (!BX_DRIVE_IS_CD(channel, device)) return (0); if (status == 0) { // eject cdrom if not locked by guest OS if (BX_HD_THIS channels[channel].drives[device].cdrom.locked) return (1); else { #ifdef LOWLEVEL_CDROM BX_HD_THIS channels[channel].drives[device].cdrom.cd->eject_cdrom(); #endif BX_HD_THIS channels[channel].drives[device].cdrom.ready = 0; bx_options.atadevice[channel][device].status = BX_EJECTED; } } else { // insert cdrom #ifdef LOWLEVEL_CDROM if (BX_HD_THIS channels[channel].drives[device].cdrom.cd-> insert_cdrom(bx_options.atadevice[channel][device].path)) { BX_HD_THIS channels[channel].drives[device].cdrom.ready = 1; BX_HD_THIS channels[channel].drives[device].cdrom.capacity = BX_HD_THIS channels[channel].drives[device].cdrom.cd->capacity(); bx_options.atadevice[channel][device].status = BX_INSERTED; BX_SELECTED_DRIVE(channel).sense.sense_key = SENSE_UNIT_ATTENTION; BX_SELECTED_DRIVE(channel).sense.asc = 0; BX_SELECTED_DRIVE(channel).sense.ascq = 0; raise_interrupt(channel); } else { #endif D(bug("Could not locate CD-ROM, continuing with media not present")); BX_HD_THIS channels[channel].drives[device].cdrom.ready = 0; bx_options.atadevice[channel][device].status = BX_EJECTED; #ifdef LOWLEVEL_CDROM } #endif } return (BX_HD_THIS channels[channel].drives[device].cdrom.ready); } bool bx_hard_drive_c::bmdma_read_sector(Bit8u channel, Bit8u * buffer) { off_t logical_sector; off_t ret; if (BX_SELECTED_CONTROLLER(channel).current_command != 0xC8) { D(panicbug("command 0xC8 (READ DMA) not active")); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); return 0; } if (!calculate_logical_address(channel, &logical_sector)) { D(panicbug("BM-DMA read sector reached invalid sector %lu, aborting", (unsigned long) logical_sector)); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); return 0; } ret = BX_SELECTED_DRIVE(channel).hard_drive->lseek(logical_sector * 512, SEEK_SET); if (ret < 0) { D(panicbug("could not lseek() hard drive image file")); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); return 0; } ret = BX_SELECTED_DRIVE(channel).hard_drive->read((bx_ptr_t) buffer, 512); if (ret < 512) { D(panicbug("logical sector was %lu", (unsigned long) logical_sector)); D(panicbug("could not read() hard drive image file at byte %lu", (unsigned long) logical_sector * 512)); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); return 0; } increment_address(channel); return 1; } bool bx_hard_drive_c::bmdma_write_sector(Bit8u channel, Bit8u * buffer) { off_t logical_sector; off_t ret; if (BX_SELECTED_CONTROLLER(channel).current_command != 0xCA) { D(panicbug("command 0xCA (WRITE DMA) not active")); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); return 0; } if (!calculate_logical_address(channel, &logical_sector)) { D(panicbug("BM-DMA read sector reached invalid sector %lu, aborting", (unsigned long) logical_sector)); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); return 0; } ret = BX_SELECTED_DRIVE(channel).hard_drive->lseek(logical_sector * 512, SEEK_SET); if (ret < 0) { D(panicbug("could not lseek() hard drive image file")); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); return 0; } ret = BX_SELECTED_DRIVE(channel).hard_drive->write((bx_ptr_t) buffer, 512); if (ret < 512) { D(panicbug("could not write() hard drive image file at byte %lu", (unsigned long) logical_sector * 512)); command_aborted(channel, BX_SELECTED_CONTROLLER(channel).current_command); return 0; } increment_address(channel); return 1; } void bx_hard_drive_c::bmdma_complete(Bit8u channel) { BX_SELECTED_CONTROLLER(channel).status.busy = 0; BX_SELECTED_CONTROLLER(channel).status.drive_ready = 1; BX_SELECTED_CONTROLLER(channel).status.write_fault = 0; BX_SELECTED_CONTROLLER(channel).status.seek_complete = 1; BX_SELECTED_CONTROLLER(channel).status.drq = 0; BX_SELECTED_CONTROLLER(channel).status.corrected_data = 0; BX_SELECTED_CONTROLLER(channel).status.err = 0; raise_interrupt(channel); } int default_image_t::open(const char *pathname, bool readonly) { int open_flags = readonly ? O_RDONLY : O_RDWR; #ifdef O_BINARY open_flags |= O_BINARY; #endif fd =::open(pathname, open_flags); if (fd < 0) { return fd; } /* look at size of image file to calculate disk geometry */ struct stat stat_buf; int ret = fstat(fd, &stat_buf); if (ret) { panicbug("fstat() returns error!"); } return fd; } void default_image_t::close() { if (fd > -1) { ::close(fd); } } off_t default_image_t::lseek(off_t offset, int whence) { return::lseek(fd, offset, whence); } ssize_t default_image_t::read(void *buf, size_t count) { return::read(fd, (char *) buf, count); } ssize_t default_image_t::write(const void *buf, size_t count) { return::write(fd, (char *) buf, count); } error_recovery_t::error_recovery_t() { if (sizeof(error_recovery_t) != 8) { panicbug("error_recovery_t has size != 8"); } data[0] = 0x01; data[1] = 0x06; data[2] = 0x00; data[3] = 0x05; // Try to recover 5 times data[4] = 0x00; data[5] = 0x00; data[6] = 0x00; data[7] = 0x00; } uint16 read_16bit(const uint8 * buf) { return (buf[0] << 8) | buf[1]; } uint32 read_32bit(const uint8 * buf) { return (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; } aranym-1.1.0/src/aranym_exception.cpp0000664000175000017500000000217113454637621016042 0ustar joyjoy/* General ARAnyM exception class ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include "aranym_exception.h" AranymException::AranymException(const char *fmt, ...) { va_list argptr; va_start(argptr, fmt); vsnprintf(errMsg, sizeof(errMsg)-1, fmt, argptr); va_end(argptr); errMsg[sizeof(errMsg)-1]='\0'; } AranymException::~AranymException() { } char *AranymException::getErrorMessage(void) { return &errMsg[0]; } aranym-1.1.0/src/aradata.cpp0000664000175000017500000000457013454637621014077 0ustar joyjoy/* * aradata.cpp - ARAnyM special HW registers * * Copyright (c) 2001-2004 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "newcpu.h" #include "memory-uae.h" #include "aradata.h" #include "parameters.h" #define DEBUG 0 #include "debug.h" ARADATA::ARADATA(memptr addr, uint32 size) : BASE_IO(addr, size) { reset(); } int ARADATA::getAtariMouseX() { if (abase) return ReadHWMemInt16(abase - 0x25a); return mouse_x; } int ARADATA::getAtariMouseY() { if (abase) return ReadHWMemInt16(abase - 0x258); return mouse_y; } void ARADATA::reset() { mouseDriver = false; mouse_x = -1; mouse_y = -1; abase = 0; } void ARADATA::setAbase(memptr new_abase) { abase = new_abase; D(bug("ARADATA:: abase=%08x", new_abase)); } uint8 ARADATA::handleRead(memptr addr) { addr -= getHWoffset(); switch(addr) { case 0: return '_'; case 1: return 'A'; case 2: return 'R'; case 3: return 'A'; case 4: return 0; /* VERSION_MAJOR */ case 5: return 0; /* VERSION_MINOR */ case 6: return FastRAMSize >> 24; case 7: return FastRAMSize >> 16; case 8: return FastRAMSize >> 8; case 9: return FastRAMSize; } return 0; } void ARADATA::handleWrite(memptr addr, uint8 value) { addr -= getHWoffset(); switch(addr) { case 14: mouse_x = (mouse_x & 0xff) | (value << 8); break; case 15: mouse_x = (mouse_x & 0xff00) | value; break; case 16: mouse_y = (mouse_y & 0xff) | (value << 8); break; case 17: mouse_y = (mouse_y & 0xff00) | value; break; } mouseDriver = true; } aranym-1.1.0/src/adler32.c0000664000175000017500000000340513454637621013372 0ustar joyjoy/* Adler-32 algorithm implementation to deal with blocks (rows x lines) based on http://en.wikipedia.org/wiki/Adler-32 (C) 2007 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "SDL_compat.h" #ifdef __cplusplus extern "C" { #endif #define MOD_ADLER 65521 /* Calc Adler-32 sum in a rows*lines block rows = number of bytes in a line lines = number of lines pitch = length of a line in bytes (to skip a part) */ Uint32 calc_adler(Uint8 *base, int rows, int lines, int pitch) { Uint32 a = 1, b = 0; int x,y; /* we'll go from 16x16,1bit to 16x16,16bits */ for (y=0;y> 16) * (65536-MOD_ADLER); b = (b & 0xffff) + (b >> 16) * (65536-MOD_ADLER); /* It can be shown that a <= 0x1013a here, so a single subtract will do. */ if (a >= MOD_ADLER) a -= MOD_ADLER; /* It can be shown that b can reach 0xfff87 here. */ b = (b & 0xffff) + (b >> 16) * (65536-MOD_ADLER); if (b >= MOD_ADLER) b -= MOD_ADLER; return (b << 16) | a; } #ifdef __cplusplus } #endif aranym-1.1.0/src/acsifdc.cpp0000664000175000017500000003051513454637621014074 0ustar joyjoy/* * acsifdc.cpp - Atari floppy emulation code * * Copyright (c) 2001-2009 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * The simple FDC emulation was derived from FAST's FDC code. FAST is * an Atari ST emulator written by Joachim Hoenig * (hoenig@informatik.uni-erlangen.de). Bugs are probably implemented by * me (nino@complang.tuwien.ac.at), so don't bother him with questions * regarding this code! */ #include "sysdeps.h" #include #include #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "acsifdc.h" #include "ncr5380.h" #include "parameters.h" #define DEBUG 0 #include "debug.h" /* Defines */ #define REMOUNT_FLOPPY_ON_BOOTSECTOR_READING 1 enum { WD1772_REG_COMMAND=0, WD1772_REG_STATUS=WD1772_REG_COMMAND, WD1772_REG_TRACK, WD1772_REG_SECTOR, WD1772_REG_DATA }; /* Variables */ static NCR5380 ncr5380; static int panic_floppy_error = 0; ACSIFDC::ACSIFDC(memptr addr, uint32 size) : BASE_IO(addr, size) { drive_fd = -1; reset(); } void ACSIFDC::reset() { DMAaddr = 0; floppy_changed = false; head = sides = tracks = spt = secsize = 0; dma_mode = dma_scr = dma_car = dma_sr = 0; fdc_command = fdc_track = fdc_sector = fdc_data = fdc_status = 0; insert_floppy(); } uint16 ACSIFDC::handleReadW(memptr addr) { int value = 0; switch(addr - getHWoffset()) { case 4: value = getDMAData(); break; case 6: value = getDMAStatus(); break; default: value = BASE_IO::handleReadW(addr); } // D(bug("Reading ACSIFDC word data from %04lx = %d ($%02x) at %06x\n", addr, value, value, showPC())); return value; } uint8 ACSIFDC::handleRead(memptr addr) { addr -= getHWoffset(); if (addr >= getHWsize()) return 0; int value = 0; switch(addr) { case 4: value = getDMAData() >> 8; break; case 5: value = getDMAData(); break; case 6: value = getDMAStatus() >> 8; break; case 7: value = getDMAStatus(); break; case 9: value = DMAaddr >> 16; D(bug("reading DMA addr")); break; case 0x0b: value = DMAaddr >> 8; break; case 0x0d: value = DMAaddr; break; case 0x0f: value = 0; break; // missing floppy-control reg emulation } // D(bug("Reading ACSIFDC data from %04lx = %d ($%02x) at %06x\n", addr, value, value, showPC())); return value; } void ACSIFDC::handleWriteW(memptr addr, uint16 value) { switch(addr - getHWoffset()) { case 4: setDMASectorCount(value); break; case 6: setDMAMode(value); break; default: BASE_IO::handleWriteW(addr, value); } } void ACSIFDC::handleWrite(memptr addr, uint8 value) { addr -= getHWoffset(); if (addr >= getHWsize()) return; // D(bug("Writing ACSIFDC data to %04lx = %d ($%02x) at %06x\n", addr, value, value, showPC())); switch(addr) { case 4: setDMASectorCount(value << 8); break; case 5: setDMASectorCount(value); break; case 6: setDMAMode(value << 8); break; case 7: setDMAMode(value); break; case 9: DMAaddr = (DMAaddr & 0x00ffff) | (value << 16); break; case 0x0b: DMAaddr = (DMAaddr & 0xff00ff) | (value << 8); break; case 0x0d: DMAaddr = (DMAaddr & 0xffff00) | value; break; case 0x0f: break; // missing floppy-control reg emulation } } uint16 ACSIFDC::getDMAData() { if (dma_mode & 0x10) { return dma_scr&0xff; } else { if (dma_mode & (1<setGPIPbit(0x20, 0x20); return dma_car&0xff; } else { int wd1772_reg; wd1772_reg = (dma_mode>>DISKDMA_A0) & 3; switch (wd1772_reg) { case WD1772_REG_STATUS: getMFP()->setGPIPbit(0x20, 0x20); if (floppy_changed) { floppy_changed = false; return fdc_status | 0x40; } return fdc_status&0xff; case WD1772_REG_TRACK: return fdc_track&0xff; case WD1772_REG_SECTOR: return fdc_sector&0xff; case WD1772_REG_DATA: return fdc_data&0xff; default: return 0; } } } } uint16 ACSIFDC::getDMAStatus() { return dma_sr; } void ACSIFDC::setDMASectorCount(uint16 vv) { // D(bug("DMA car/scr <- %x (mode=%x)", vv, dma_mode)); if (dma_mode&0x10) { dma_scr = vv; D(bug("scr = %d", dma_scr)); } else { if (dma_mode & (1<setGPIPbit(0x20, 0x20); dma_car = vv; ncr5380.WriteData(dma_mode, dma_car); } else { int wd1772_reg; wd1772_reg = (dma_mode>>DISKDMA_A0) & 3; switch (wd1772_reg) { case WD1772_REG_COMMAND: fdc_command = vv; fdc_exec_command(); break; case WD1772_REG_TRACK: fdc_track = vv; break; case WD1772_REG_SECTOR: fdc_sector = vv; break; case WD1772_REG_DATA: fdc_data = vv; break; } } } } void ACSIFDC::setDMAMode(uint16 vv) { dma_mode = vv; // D(bug("DMA mode <- %04x", dma_mode)); } /*************************************************************************/ // parameters of default floppy (3.5" HD 1.44 MB) #define SECSIZE 512 #define SIDES 2 #define SPT 18 #define TRACKS 80 void ACSIFDC::set_floppy_geometry() { if (drive_fd > 0) { unsigned char buf[512]; bool valid = true; // suppose the bootsector data is valid int sectors = 0; // read bootsector lseek(drive_fd, 0, SEEK_SET); if (read(drive_fd, buf, sizeof(buf)) == sizeof(buf)) { // detect floppy geometry from bootsector data sectors=(buf[20]<<8)|buf[19]; secsize=(buf[12]<<8)|buf[11]; spt=buf[24]; sides=buf[26]; // check validity of data if (secsize <= 0 || sectors <= 0 || spt <=0 || sides <= 0) { // data is obviously invalid (probably unformatted disk) valid = false; } else { tracks = sectors / spt / sides; // check if all sectors are on the tracks if ((sides * spt * tracks) != sectors) valid = false; } } else { panicbug("FDC A: error reading boot sector"); valid = false; } if (! valid) { // bootsector contains invalid data - use our default secsize = SECSIZE; sides = SIDES; // for a 80 track floppy compute the sector per track, otherwise assume HD floppy off_t disk_size = lseek(drive_fd, 0, SEEK_END); size_t bpt = (secsize * sides * TRACKS); spt = ((disk_size / bpt) && !(disk_size % bpt)) ? (disk_size / bpt) : SPT; sectors = spt * sides * TRACKS; } tracks = (sectors / spt / sides); D(bug("FDC A: %d/%d/%d %d bytes/sector", sides,tracks,spt,secsize)); } } void ACSIFDC::remove_floppy() { if (drive_fd >= 0) { close(drive_fd); drive_fd = -1; D(bug("Floppy removed")); } } bool ACSIFDC::insert_floppy() { remove_floppy(); char *path = bx_options.floppy.path; if (strlen(path) == 0) // is path to floppy defined? return false; int status = open(path, O_RDWR #ifdef HAVE_O_FSYNC | O_FSYNC #else # ifdef O_SYNC | O_SYNC # endif #endif #ifdef O_BINARY | O_BINARY #endif ); bool rw = true; if (status < 0) { status = open(path, O_RDONLY #ifdef O_BINARY | O_BINARY #endif ); rw = false; } if (status < 0) { D(bug("Inserting of floppy failed.")); return false; } D(bug("Floppy inserted %s", rw ? "read-write" : "read-only")); DUNUSED(rw); drive_fd = status; set_floppy_geometry(); floppy_changed = true; panic_floppy_error = 0; return true; } bool ACSIFDC::is_floppy_inserted() { return (drive_fd >= 0); } bool ACSIFDC::read_file(int device, long offset, memptr address, int secsize, int count) { if (lseek(device, offset, SEEK_SET) < 0) return false; std::vector buffer(secsize); for(int i=0; i buffer(secsize); for(int i=0; igetFloppyStat(); D(bug("FDC DMA address = %06x, snd = %d", DMAaddr, snd_porta)); actual_side=(~snd_porta)&1; d=(~snd_porta)&6; switch(d) { case 2: case 6: d=0; break; case 4: d=1; // we don't emulate second floppy drive d=-1; break; case 0: d=-1; break; } D(bug("FDC command 0x%04x drive=%d",fdc_command,d)); fdc_status=0; if (fdc_command < 0x80) { if (d>=0) { switch(fdc_command&0xf0) { case 0x00: D(bug("\tFDC RESTORE")); head=0; fdc_track=0; break; case 0x10: D(bug("\tFDC SEEK to %d",fdc_data)); head += fdc_data-fdc_track; fdc_track=fdc_data; if (head<0 || head>=tracks) head=0; break; case 0x30: fdc_track+=dir; /* fall through */ case 0x20: head+=dir; break; case 0x50: fdc_track++; /* fall through */ case 0x40: if (head 0) head--; dir=-1; break; } if (head==0) fdc_status |= 4; if (head != fdc_track && (fdc_command & 4)) fdc_status |= 0x10; if (motor) fdc_status |= 0x20; } else fdc_status |= 0x10; } else if ((fdc_command & 0xf0) == 0xd0) { if (fdc_command == 0xd8) getMFP()->setGPIPbit(0x20, 0); else if (fdc_command == 0xd0) getMFP()->setGPIPbit(0x20, 0x20); } else { if (d>=0) { int record_not_found = 0; offset=secsize * (((spt*sides*head)) + (spt * actual_side) + (fdc_sector-1)); // special hack for 'fixing' dma_scr in Linux where it's often = 20 int newscr = spt - fdc_sector + 1; if (newscr < dma_scr && spt > 1) { D(bug("FDC: Fixed SCR from %d to %d", dma_scr, newscr)); record_not_found = 1; dma_scr = newscr; } switch(fdc_command & 0xf0) { case 0x80: assert(dma_scr == 1); // otherwise the fallthrough will cause problems // fallthrough case 0x90: D(bug("\tFDC READ SECTOR %d to 0x%06lx", dma_scr, DMAaddr)); #if REMOUNT_FLOPPY_ON_BOOTSECTOR_READING // special hack for remounting physical floppy on // bootsector access if (offset == 0 && dma_scr == 1) { D(bug("Remounting floppy - media change requested?")); // reading boot sector might indicate media change test insert_floppy(); } #endif if (read_file(drive_fd, offset, DMAaddr, secsize, dma_scr)) { DMAaddr += dma_scr*secsize; dma_scr=0; dma_sr=1; if (record_not_found) fdc_status |= 0x10; break; } else { if (! panic_floppy_error++) panicbug("Floppy read(%d, %06x, %d) failed.", drive_fd, DMAaddr, dma_scr); } fdc_status |= 0x10; dma_sr=1; break; case 0xa0: assert(dma_scr == 1); // otherwise the fallthrough will cause problems // fallthrough case 0xb0: if (write_file(drive_fd, offset, DMAaddr, secsize, dma_scr)) { DMAaddr += dma_scr*secsize; dma_scr=0; dma_sr=1; if (record_not_found) fdc_status |= 0x10; break; } else { if (! panic_floppy_error++) panicbug("Floppy write(%d, %06x, %d) failed.", drive_fd, DMAaddr, dma_scr); } fdc_status |= 0x10; dma_sr=1; break; case 0xc0: fdc_status |= 0x10; break; case 0xe0: fdc_status |= 0x10; break; case 0xf0: fdc_status |= 0x10; break; } if (head != fdc_track) fdc_status |= 0x10; } else fdc_status |= 0x10; } if (motor) fdc_status |= 0x80; if (!(fdc_status & 1)) getMFP()->setGPIPbit(0x20, 0); } /* vim:ts=4:sw=4: */ aranym-1.1.0/src/acia.cpp0000664000175000017500000000747213454637621013403 0ustar joyjoy/* * acia.cpp - ACIA 6850 emulation code * * Copyright (c) 2001-2006 Petr Stehlik of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "hardware.h" #include "cpu_emulation.h" #include "memory-uae.h" #include "acia.h" #define DEBUG 0 #include "debug.h" ACIA::ACIA(memptr addr, uint32 size) : BASE_IO(addr, size) { D(bug("acia: interface created at 0x%06x", getHWoffset())); reset(); } ACIA::~ACIA() { D(bug("acia: interface destroyed at 0x%06x", getHWoffset())); } void ACIA::reset() { cr = rxdr = txdr = 0; sr = 1<>ACIA_CR_EMIT_INTER) & 0x03)==0x03) { D(bug("%s: emit BREAK", devicename)); } /* Reception control */ if (value & (1< #ifndef HAVE_SIGHANDLER_T typedef void (*sighandler_t)(int); #endif #if defined(OS_freebsd) #include enum { #ifdef CPU_i386 # define CONTEXT_REGS ((uae_u32 *)&CONTEXT_NAME->uc_mcontext.mc_edi) REG_EDI = 0, REG_ESI = 1, REG_EBP = 2, REG_EBX = 4, REG_EDX = 5, REG_ECX = 6, REG_EAX = 7, REG_EIP = 10, REG_EFL = 12, REG_ESP = 13, #endif #if defined(CPU_x86_64) # define CONTEXT_REGS ((uae_u64 *)&CONTEXT_NAME->uc_mcontext.mc_rdi) REG_RDI = 0, REG_RSI = 1, REG_RDX = 2, REG_RCX = 3, REG_R8 = 4, REG_R9 = 5, REG_RAX = 6, REG_RBX = 7, REG_RBP = 8, REG_R10 = 9, REG_R11 = 10, REG_R12 = 11, REG_R13 = 12, REG_R14 = 13, REG_R15 = 14, REG_EFL = 21, REG_RIP = 19, REG_RSP = 22, #endif }; #endif #if defined(OS_openbsd) enum { #ifdef CPU_i386 # define CONTEXT_REGS ((uae_u32 *)&CONTEXT_NAME->sc_edi) REG_EDI = 0, REG_ESI = 1, REG_EBP = 2, REG_EBX = 3, REG_EDX = 4, REG_ECX = 5, REG_EAX = 6, REG_EIP = 7, REG_EFL = 8, REG_ESP = 9, #endif #if defined(CPU_x86_64) # define CONTEXT_REGS ((uae_u64 *)&CONTEXT_NAME->sc_rdi) REG_RDI = 0, REG_RSI = 1, REG_RDX = 2, REG_RCX = 3, REG_R8 = 4, REG_R9 = 5, REG_R10 = 6, REG_R11 = 7, REG_R12 = 8, REG_R13 = 9, REG_R14 = 10, REG_R15 = 11, REG_RBP = 12, REG_RBX = 13, REG_RAX = 14, REG_RIP = 21, REG_EFL = 23, REG_RSP = 24, #endif }; #endif #ifdef CPU_i386 #define REG_RIP REG_EIP #define REG_RAX REG_EAX #define REG_RBX REG_EBX #define REG_RCX REG_ECX #define REG_RDX REG_EDX #define REG_RBP REG_EBP #define REG_RSI REG_ESI #define REG_RDI REG_EDI #define REG_RSP REG_ESP #endif #if defined(CPU_i386) || defined(CPU_x86_64) #define CONTEXT_NAME uap #define CONTEXT_TYPE volatile ucontext_t #define CONTEXT_ATYPE CONTEXT_TYPE * #define CONTEXT_AEFLAGS CONTEXT_REGS[REG_EFL] #define CONTEXT_AEIP CONTEXT_REGS[REG_RIP] #define CONTEXT_AEAX CONTEXT_REGS[REG_RAX] #define CONTEXT_AEBX CONTEXT_REGS[REG_RBX] #define CONTEXT_AECX CONTEXT_REGS[REG_RCX] #define CONTEXT_AEDX CONTEXT_REGS[REG_RDX] #define CONTEXT_AEBP CONTEXT_REGS[REG_RBP] #define CONTEXT_AESI CONTEXT_REGS[REG_RSI] #define CONTEXT_AEDI CONTEXT_REGS[REG_RDI] #endif #include "sigsegv_common_x86.h" static void segfault_vec(int /* sig */, siginfo_t *sip, void *_ucp) { CONTEXT_ATYPE CONTEXT_NAME = (CONTEXT_ATYPE) _ucp; char *fault_addr = (char *)sip->si_addr; memptr addr = (memptr)(uintptr)(fault_addr - fixed_memory_offset); #if DEBUG if (addr >= 0xff000000) addr &= 0x00ffffff; if (addr < 0x00f00000 || addr > 0x00ffffff) // YYY bug("\nsegfault: pc=%08x, " REG_RIP_NAME " =%p, addr=%p (0x%08x)", m68k_getpc(), (void *)CONTEXT_AEIP, fault_addr, addr); if (fault_addr < (char *)(fixed_memory_offset - 0x1000000UL) #ifdef CPU_x86_64 || fault_addr >= ((char *)fixed_memory_offset + 0x100000000UL) #endif ) { #ifdef HAVE_DISASM_X86 if (CONTEXT_AEIP != 0) { char buf[256]; x86_disasm((const uint8 *)CONTEXT_AEIP, buf, 1); panicbug("%s", buf); } #endif // raise(SIGBUS); } #endif if (fault_addr == 0 || CONTEXT_AEIP == 0) { real_segmentationfault(); /* not reached (hopefully) */ return; } handle_access_fault((CONTEXT_ATYPE) CONTEXT_NAME, addr); } void install_sigsegv() { struct sigaction sigsegv_sa; memset(&sigsegv_sa, 0, sizeof(sigsegv_sa)); sigemptyset(&sigsegv_sa.sa_mask); sigsegv_sa.sa_handler = (sighandler_t) segfault_vec; sigsegv_sa.sa_flags = SA_SIGINFO; sigaction(SIGSEGV, &sigsegv_sa, NULL); } void uninstall_sigsegv() { signal(SIGSEGV, SIG_DFL); } aranym-1.1.0/src/Unix/windows_ver.h0000664000175000017500000000043113454637621015430 0ustar joyjoy#if defined(_WIN32) || defined(__CYGWIN__) #define _WIN32_VERSION 0x501 #undef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN 1 #if !defined(__CYGWIN__) #include #endif #include #endif #undef WIN32_LEAN_AND_MEAN /* to avoid redefinition in SDL headers */ aranym-1.1.0/src/Unix/win32_supp.h0000664000175000017500000001354313454637621015103 0ustar joyjoy#ifndef WIN32_SUPP_H #define WIN32_SUPP_H #if defined(_WIN32) || defined(__CYGWIN__) #include "windows_ver.h" #include #ifdef __cplusplus int win32_errno_from_oserr(DWORD oserrno, int deferrno = EINVAL); inline void win32_set_errno(int deferrno = EINVAL) { errno = win32_errno_from_oserr(GetLastError(), deferrno); } const char *win32_errstring(DWORD err); #endif wchar_t *win32_utf8_to_widechar(const char *name); char *win32_widechar_to_utf8(const wchar_t *wname); #endif #if defined _WIN32 #include #include #include #ifdef __cplusplus extern "C" { #endif #ifndef S_IXOTH #define S_IXOTH (S_IXGRP >> 3) /* Execute by others. */ #endif #ifndef S_IWOTH #define S_IWOTH (S_IWGRP >> 3) /* Write by others. */ #endif #ifndef S_IROTH #define S_IROTH (S_IRGRP >> 3) /* Read by others. */ #endif #ifndef S_IXGRP #define S_IXGRP (S_IXUSR >> 3) /* Execute by group. */ #endif #ifndef S_IWGRP #define S_IWGRP (S_IWUSR >> 3) /* Write by group. */ #endif #ifndef S_IRGRP #define S_IRGRP (S_IXUSR >> 3) /* Execute by group. */ #endif #ifndef S_ISVTX #define S_ISVTX 0001000 /* save swapped text even after use */ #endif #ifndef S_ISGID #define S_ISGID 0002000 /* set group id on execution */ #endif #ifndef S_ISUID #define S_ISUID 0004000 /* set user id on execution */ #endif #ifndef S_IFLNK #define S_IFLNK 0xa000 /* symbolic link */ #endif #ifndef S_ISLNK #define S_ISLNK(m) (((m)&_S_IFMT) == S_IFLNK) #endif #ifndef O_NONBLOCK #define O_NONBLOCK 0 #endif #ifndef O_NOCTTY #define O_NOCTTY 0 #endif #ifndef S_IRWXG #define S_IRWXG (S_IRWXU >> 3) #endif #ifndef S_IRWXO #define S_IRWXO (S_IRWXG >> 3) #endif #define _PC_LINK_MAX 2 /* MiNGW headers define FIONREAD, but lack ioctl() */ #undef FIONREAD #ifndef O_BINARY # ifdef _O_BINARY # define O_BINARY _O_BINARY # else # define O_BINARY 0 # endif #endif #ifndef __MINGW_NOTHROW #define __MINGW_NOTHROW #endif #ifndef CC_FOR_BUILD #undef stat #undef wstat #undef fstat #undef truncate #undef ftruncate #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64) #ifdef _USE_32BIT_TIME_T #define stat _stati64 #define wstat _wstati64 #undef _stati64 #else #define stat _stat64 #define wstat _wstat64 #endif #else #ifdef __MINGW64_VERSION_MAJOR #define stat _stat32 #define wstat _wstat32 #else #define stat _stat #define wstat _wstat #endif #endif int win32_stat(const char *file_name, struct stat *buf); #ifndef __WIN32_SUPP_IMPLEMENTATION EXTERN_INLINE int stat(const char *file_name, struct stat *buf) { return win32_stat(file_name, buf); } #endif #define lstat(f, s) win32_lstat(f, s) #define fstat(f, s) win32_fstat(f, s) #define truncate(f, o) win32_truncate(f, o) #define ftruncate(f, o) win32_ftruncate(f, o) int readlink(const char *path, char *buf, size_t bufsiz); int symlink(const char *oldpath, const char *newpath); long pathconf(const char *file_name, int name); int win32_truncate(const char *pathname, off_t len); int win32_ftruncate(int fd, off_t length); int win32_lstat(const char *file_name, struct stat *buf); int win32_fstat(int fd, struct stat *buf); char *win32_realpath(const char *path, char *resolved); #define realpath(path, resolved) win32_realpath(path, resolved) #define HAVE_REALPATH 1 #define opendir win32_opendir #define readdir win32_readdir #define closedir win32_closedir #define rewinddir win32_rewinddir #define telldir win32_telldir #define seekdir win32_seekdir DIR *opendir(const char *szPath); struct dirent *readdir(DIR *_dirp); int closedir(DIR *_dirp); void rewinddir(DIR *_dirp); long telldir(DIR *_dirp); void seekdir(DIR *_dirp, long lPos); int win32_execv(const char *path, char *const *argv); #define open win32_open int __MINGW_NOTHROW open (const char*, int, ...); #define unlink win32_unlink #define os_remove win32_unlink int __MINGW_NOTHROW unlink (const char*); #define rmdir win32_rmdir int __MINGW_NOTHROW rmdir (const char*); #define mkdir win32_mkdir int __MINGW_NOTHROW mkdir (const char*, ...); #define chmod win32_chmod int __MINGW_NOTHROW chmod (const char*, int); #define rename win32_rename int __MINGW_NOTHROW rename(const char*, const char*); #define getcwd win32_getcwd char * __MINGW_NOTHROW getcwd(char*, int); #define statfs win32_statfs struct statfs { long f_type; /* type of filesystem (see below) */ long f_bsize; /* optimal transfer block size */ long f_blocks; /* total data blocks in file system */ long f_bfree; /* free blocks in fs */ long f_bavail; /* free blocks avail to non-superuser */ long f_files; /* total file nodes in file system */ long f_ffree; /* free file nodes in fs */ long f_fsid; /* file system id */ long f_namelen; /* maximum length of filenames */ long f_spare[6]; /* spare for later */ }; int statfs(const char *path, struct statfs *buf); /* linux-compatible values for fs type */ #define MSDOS_SUPER_MAGIC 0x4d44 #define NTFS_SUPER_MAGIC 0x5346544E #ifndef _TIMESPEC_DEFINED #define _TIMESPEC_DEFINED struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* and nanoseconds */ }; struct itimerspec { struct timespec it_interval; /* Timer period */ struct timespec it_value; /* Timer expiration */ }; #endif /* _TIMESPEC_DEFINED */ int win32_futimens(int fd, const struct timespec ts[2]); #define futimens(fd, ts) win32_futimens(fd, ts) #define HAVE_FUTIMENS 1 int win32_futimes(int fd, const struct timeval tv[2]); #define futimes(fd, tv) win32_futimes(fd, tv) #define HAVE_FUTIMES 1 #endif /* CC_FOR_BUILD */ #ifdef __cplusplus } #endif #else #define os_remove remove #endif /* _WIN32 */ #endif aranym-1.1.0/src/Unix/vm_alloc.h0000664000175000017500000000652413454637621014667 0ustar joyjoy/* * vm_alloc.h - Wrapper to various virtual memory allocation schemes * (supports mmap, vm_allocate or fallbacks to malloc) * * Basilisk II (C) 1997-2005 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ // TODO: Win32 VM ? #ifndef VM_ALLOC_H #define VM_ALLOC_H #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_SYS_MMAN_H # include #endif #ifdef HAVE_MACH_VM extern "C" { # include } #endif /* Return value of `vm_acquire' in case of an error. */ #ifdef HAVE_MACH_VM #define VM_MAP_FAILED ((void *)-1) #else #ifdef HAVE_MMAP_VM #define VM_MAP_FAILED ((void *)-1) #else #define VM_MAP_FAILED 0 #endif #endif /* Mapping options. */ #define VM_MAP_SHARED 0x01 #define VM_MAP_PRIVATE 0x02 #define VM_MAP_FIXED 0x04 #define VM_MAP_32BIT 0x08 /* Default mapping options. */ #define VM_MAP_DEFAULT (VM_MAP_PRIVATE) /* Protection bits. */ #ifdef HAVE_MACH_VM #define VM_PAGE_NOACCESS VM_PROT_NONE #define VM_PAGE_READ VM_PROT_READ #define VM_PAGE_WRITE VM_PROT_WRITE #define VM_PAGE_EXECUTE VM_PROT_EXECUTE #else #ifdef HAVE_MMAP_VM #define VM_PAGE_NOACCESS PROT_NONE #define VM_PAGE_READ PROT_READ #define VM_PAGE_WRITE PROT_WRITE #define VM_PAGE_EXECUTE PROT_EXEC #else #define VM_PAGE_NOACCESS 0x0 #define VM_PAGE_READ 0x1 #define VM_PAGE_WRITE 0x2 #define VM_PAGE_EXECUTE 0x4 #endif #endif /* Default protection bits. */ #define VM_PAGE_DEFAULT (VM_PAGE_READ | VM_PAGE_WRITE) /* Initialize the VM system. Returns 0 if successful, -1 for errors. */ extern int vm_init(void); /* Deallocate all internal data used to wrap virtual memory allocators. */ extern void vm_exit(void); /* Allocate zero-filled memory of SIZE bytes. The mapping is private and default protection bits are read / write. The return value is the actual mapping address chosen or VM_MAP_FAILED for errors. */ extern void * vm_acquire(size_t size, int options = VM_MAP_DEFAULT); /* Allocate zero-filled memory at exactly ADDR (which must be page-aligned). */ extern bool vm_acquire_fixed(void * addr, size_t size, int options = VM_MAP_DEFAULT); /* Deallocate any mapping for the region starting at ADDR and extending LEN bytes. Returns 0 if successful, -1 on errors. */ extern int vm_release(void * addr, size_t size); /* Change the memory protection of the region starting at ADDR and extending LEN bytes to PROT. Returns 0 if successful, -1 for errors. */ extern int vm_protect(void * addr, size_t size, int prot); /* * probe for a suitable value of fixed_memory_offset */ void vm_probe_fixed(void); void vm_probe_fixed_hint(void); #endif /* VM_ALLOC_H */ aranym-1.1.0/src/Unix/vm_alloc.cpp0000664000175000017500000003037013454637621015216 0ustar joyjoy/* * vm_alloc.cpp - Wrapper to various virtual memory allocation schemes * (supports mmap, vm_allocate or fallbacks to malloc) * * Copyright (c) 2000-2005 ARAnyM developer team (see AUTHORS) * * Originally derived from Basilisk II (C) 1997-2000 Christian Bauer * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "vm_alloc.h" #if defined(OS_freebsd) && defined(CPU_x86_64) # include #endif # include # include #ifdef HAVE_WIN32_VM #undef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN 1 /* avoid including junk */ #include #undef WIN32_LEAN_AND_MEAN /* to avoid redefinition in SDL headers */ #endif #ifdef HAVE_FCNTL_H /* for O_RDWR - RedHat FC2 need this */ #include #endif #ifdef HAVE_MACH_VM #ifndef HAVE_MACH_TASK_SELF #ifdef HAVE_TASK_SELF #define mach_task_self task_self #else #error "No task_self(), you lose." #endif #endif #endif /* We want MAP_32BIT, if available, for SheepShaver and BasiliskII because the emulated target is 32-bit and this helps to allocate memory so that branches could be resolved more easily (32-bit displacement to code in .text), on AMD64 for example. */ #if !defined(MAP_32BIT) && defined(MAP_LOW32) #define MAP_32BIT MAP_LOW32 #endif #ifndef MAP_32BIT #define MAP_32BIT 0 #endif #ifndef MAP_ANON #define MAP_ANON 0 #endif #ifndef MAP_ANONYMOUS #define MAP_ANONYMOUS 0 #endif #define MAP_EXTRA_FLAGS 0 #ifdef HAVE_MACH_VM #elif defined(HAVE_MMAP_VM) #if defined(__linux__) && defined(CPU_i386) /* Force a reasonnable address below 0x80000000 on x86 so that we don't get addresses above when the program is run on AMD64. NOTE: this is empirically determined on Linux/x86. */ #define MAP_BASE 0x10000000 #else #define MAP_BASE 0x00000000 #endif static char * next_address = (char *)MAP_BASE; static char * next_address_32bit = (char *)MAP_BASE; #endif #ifdef HAVE_MMAP_VM #ifdef HAVE_MMAP_ANON #define map_flags (MAP_ANON | MAP_EXTRA_FLAGS) #define zero_fd -1 #elif defined(HAVE_MMAP_ANONYMOUS) #define map_flags (MAP_ANONYMOUS | MAP_EXTRA_FLAGS) #define zero_fd -1 #else #define map_flags (MAP_EXTRA_FLAGS) static int zero_fd = -1; #endif #endif /* Translate generic VM map flags to host values. */ #ifdef HAVE_MACH_VM #elif defined(HAVE_MMAP_VM) static int translate_map_flags(int vm_flags) { int flags = 0; if (vm_flags & VM_MAP_SHARED) flags |= MAP_SHARED; if (vm_flags & VM_MAP_PRIVATE) flags |= MAP_PRIVATE; if (vm_flags & VM_MAP_FIXED) flags |= MAP_FIXED; if (vm_flags & VM_MAP_32BIT) flags |= MAP_32BIT; return flags; } #endif /* Align ADDR and SIZE to 64K boundaries. */ #ifdef HAVE_WIN32_VM static inline LPVOID align_addr_segment(LPVOID addr) { return (LPVOID)(((DWORD_PTR)addr) & -65536); } static inline DWORD align_size_segment(LPVOID addr, DWORD size) { return size + ((DWORD_PTR)addr - (DWORD_PTR)align_addr_segment(addr)); } #endif /* Translate generic VM prot flags to host values. */ #ifdef HAVE_WIN32_VM static int translate_prot_flags(int prot_flags) { int prot = PAGE_READWRITE; if (prot_flags == (VM_PAGE_EXECUTE | VM_PAGE_READ | VM_PAGE_WRITE)) prot = PAGE_EXECUTE_READWRITE; else if (prot_flags == (VM_PAGE_EXECUTE | VM_PAGE_READ)) prot = PAGE_EXECUTE_READ; else if (prot_flags == (VM_PAGE_READ | VM_PAGE_WRITE)) prot = PAGE_READWRITE; else if (prot_flags == VM_PAGE_READ) prot = PAGE_READONLY; else if (prot_flags == VM_PAGE_NOACCESS) prot = PAGE_NOACCESS; return prot; } #endif /* Initialize the VM system. Returns 0 if successful, -1 for errors. */ int vm_init(void) { #ifdef HAVE_MMAP_VM #ifndef zero_fd zero_fd = open("/dev/zero", O_RDWR); if (zero_fd < 0) return -1; #endif #endif return 0; } /* Deallocate all internal data used to wrap virtual memory allocators. */ void vm_exit(void) { #ifdef HAVE_MMAP_VM #ifndef zero_fd if (zero_fd != -1) { close(zero_fd); zero_fd = -1; } #endif #endif } /* Allocate zero-filled memory of SIZE bytes. The mapping is private and default protection bits are read / write. The return value is the actual mapping address chosen or VM_MAP_FAILED for errors. */ void * vm_acquire(size_t size, int options) { void * addr; // VM_MAP_FIXED are to be used with vm_acquire_fixed() only if (options & VM_MAP_FIXED) return VM_MAP_FAILED; #ifdef HAVE_MACH_VM // vm_allocate() returns a zero-filled memory region if (vm_allocate(mach_task_self(), (vm_address_t *)&addr, size, TRUE) != KERN_SUCCESS) return VM_MAP_FAILED; // Sanity checks for 64-bit platforms if (sizeof(void *) > 4 && (options & VM_MAP_32BIT) && !(((char *)addr + size) <= (char *)0xffffffff)) { vm_release(addr, size); return VM_MAP_FAILED; } #elif defined(HAVE_MMAP_VM) int fd = zero_fd; int the_map_flags = translate_map_flags(options) | map_flags; char **base = (options & VM_MAP_32BIT) ? &next_address_32bit : &next_address; // // FREEBSD has no MAP_32BIT on x64 // Hack to limit allocation to lower 32 Bit #if defined(OS_freebsd) && defined(CPU_x86_64) static int mode32 = 0; static rlimit oldlim; if (!mode32 && (options & VM_MAP_32BIT)) { getrlimit(RLIMIT_DATA, &oldlim); struct rlimit rlim; rlim.rlim_cur = rlim.rlim_max = 0x10000000; setrlimit(RLIMIT_DATA, &rlim); mode32 = 1; } # define RESTORE_MODE if (mode32) { setrlimit(RLIMIT_DATA, &oldlim); mode32 = 0;} #else # define RESTORE_MODE #endif addr = mmap((void *)(*base), size, VM_PAGE_DEFAULT, the_map_flags, fd, 0); RESTORE_MODE; if (addr == (void *)MAP_FAILED) return VM_MAP_FAILED; // Sanity checks for 64-bit platforms if (sizeof(void *) > 4 && (options & VM_MAP_32BIT) && !(((char *)addr + size) <= (char *)0xffffffff)) { vm_release(addr, size); return VM_MAP_FAILED; } *base = (char *)addr + size; #else #ifdef HAVE_WIN32_VM if ((addr = VirtualAlloc(NULL, size, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE)) == NULL) return VM_MAP_FAILED; // Sanity checks for 64-bit platforms if (sizeof(void *) > 4 && (options & VM_MAP_32BIT) && !(((char *)addr + size) <= (char *)0xffffffff)) { vm_release(addr, size); return VM_MAP_FAILED; } #else if ((addr = calloc(size, 1)) == 0) return VM_MAP_FAILED; // Sanity checks for 64-bit platforms if (sizeof(void *) > 4 && (options & VM_MAP_32BIT) && !(((char *)addr + size) <= (char *)0xffffffff)) { free(addr); return VM_MAP_FAILED; } // Omit changes for protections because they are not supported in this mode return addr; #endif #endif // Explicitely protect the newly mapped region here because on some systems, // say MacOS X, mmap() doesn't honour the requested protection flags. if (vm_protect(addr, size, VM_PAGE_DEFAULT) != 0) { vm_release(addr, size); return VM_MAP_FAILED; } return addr; } /* Allocate zero-filled memory at exactly ADDR (which must be page-aligned). Retuns 0 if successful, -1 on errors. */ bool vm_acquire_fixed(void * addr, size_t size, int options) { // Fixed mappings are required to be private if (options & VM_MAP_SHARED) return false; #ifdef HAVE_MACH_VM // vm_allocate() returns a zero-filled memory region if (vm_allocate(mach_task_self(), (vm_address_t *)&addr, size, 0) != KERN_SUCCESS) return false; #elif defined(HAVE_MMAP_VM) const int extra_map_flags = translate_map_flags(options); if (mmap((void *)addr, size, VM_PAGE_DEFAULT, extra_map_flags | map_flags | MAP_FIXED, zero_fd, 0) == MAP_FAILED) return false; #else #ifdef HAVE_WIN32_VM // Windows cannot allocate Low Memory if (addr == NULL) return false; // Allocate a possibly offset region to align on 64K boundaries LPVOID req_addr = align_addr_segment(addr); DWORD req_size = align_size_segment(addr, size); LPVOID ret_addr = VirtualAlloc(req_addr, req_size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); if (ret_addr != req_addr) return false; #else // Unsupported return false; #endif #endif // Explicitely protect the newly mapped region here because on some systems, // say MacOS X, mmap() doesn't honour the requested protection flags. if (vm_protect(addr, size, VM_PAGE_DEFAULT) != 0) return false; return true; } /* Deallocate any mapping for the region starting at ADDR and extending LEN bytes. Returns 0 if successful, -1 on errors. */ int vm_release(void * addr, size_t size) { // Safety check: don't try to release memory that was not allocated if (addr == VM_MAP_FAILED) return 0; #ifdef HAVE_MACH_VM if (vm_deallocate(mach_task_self(), (vm_address_t)addr, size) != KERN_SUCCESS) return -1; #elif defined(HAVE_MMAP_VM) if (munmap((void *)addr, size) != 0) return -1; #else #ifdef HAVE_WIN32_VM if (VirtualFree(align_addr_segment(addr), 0, MEM_RELEASE) == 0) return -1; (void) size; #else free(addr); #endif #endif return 0; } /* Change the memory protection of the region starting at ADDR and extending LEN bytes to PROT. Returns 0 if successful, -1 for errors. */ int vm_protect(void * addr, size_t size, int prot) { #ifdef HAVE_MACH_VM int ret_code = vm_protect(mach_task_self(), (vm_address_t)addr, size, 0, prot); return ret_code == KERN_SUCCESS ? 0 : -1; #elif defined(HAVE_MMAP_VM) int ret_code = mprotect((void *)addr, size, prot); return ret_code == 0 ? 0 : -1; #elif defined(HAVE_WIN32_VM) DWORD old_prot; int ret_code = VirtualProtect(addr, size, translate_prot_flags(prot), &old_prot); return ret_code != 0 ? 0 : -1; #else // Unsupported return -1; #endif } /* Returns the size of a page. */ int vm_get_page_size(void) { #ifdef _WIN32 SYSTEM_INFO si; GetSystemInfo(&si); if (si.dwAllocationGranularity > si.dwPageSize) return si.dwAllocationGranularity; return si.dwPageSize; #else return getpagesize(); #endif } #ifdef CONFIGURE_TEST_VM_MAP /* Tests covered here: - TEST_VM_PROT_* program slices actually succeeds when a crash occurs - TEST_VM_MAP_ANON* program slices succeeds when it could be compiled */ #include void handler(int sig) { exit(2); } int main(void) { vm_init(); signal(SIGSEGV, handler); #define page_align(address) ((char *)((uintptr)(address) & -page_size)) const unsigned long page_size = vm_get_page_size(); const int area_size = 6 * page_size; volatile char * area = (volatile char *) vm_acquire(area_size); volatile char * fault_address = area + (page_size * 7) / 2; #if defined(TEST_VM_MMAP_ANON) || defined(TEST_VM_MMAP_ANONYMOUS) if (area == VM_MAP_FAILED) return 1; if (vm_release((char *)area, area_size) < 0) return 1; return 0; #endif #if defined(TEST_VM_PROT_NONE_READ) || defined(TEST_VM_PROT_NONE_WRITE) if (area == VM_MAP_FAILED) return 0; if (vm_protect(page_align(fault_address), page_size, VM_PAGE_NOACCESS) < 0) return 0; #endif #if defined(TEST_VM_PROT_RDWR_WRITE) if (area == VM_MAP_FAILED) return 1; if (vm_protect(page_align(fault_address), page_size, VM_PAGE_READ) < 0) return 1; if (vm_protect(page_align(fault_address), page_size, VM_PAGE_READ | VM_PAGE_WRITE) < 0) return 1; #endif #if defined(TEST_VM_PROT_READ_WRITE) if (vm_protect(page_align(fault_address), page_size, VM_PAGE_READ) < 0) return 0; #endif #if defined(TEST_VM_PROT_NONE_READ) // this should cause a core dump char foo = *fault_address; // if we get here vm_protect(VM_PAGE_NOACCESS) did not work return 0; #endif #if defined(TEST_VM_PROT_NONE_WRITE) || defined(TEST_VM_PROT_READ_WRITE) // this should cause a core dump *fault_address = 'z'; // if we get here vm_protect(VM_PAGE_READ) did not work return 0; #endif #if defined(TEST_VM_PROT_RDWR_WRITE) // this should not cause a core dump *fault_address = 'z'; return 0; #endif } #endif aranym-1.1.0/src/Unix/vasprintf.c0000664000175000017500000001035513454637621015077 0ustar joyjoy/* Like vsprintf but provides a pointer to malloc'd storage, which must be freed by the caller. Copyright (C) 1994 Free Software Foundation, Inc. This file is part of the libiberty library. Libiberty is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Libiberty is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with libiberty; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "config.h" #include #include #include #include #ifdef __STDC__ #include #else #include #endif #ifdef TEST int global_total_width; #endif #ifndef HAVE_VASPRINTF static int int_vasprintf (char **result, const char *format, va_list *args) { const char *p = format; /* Add one to make sure that it is never zero, which might cause malloc to return NULL. */ int total_width = strlen (format) + 1; va_list ap; memcpy ((PTR) &ap, (PTR) args, sizeof (va_list)); while (*p != '\0') { if (*p++ == '%') { while (strchr ("-+ #0", *p)) ++p; if (*p == '*') { ++p; total_width += abs (va_arg (ap, int)); } else total_width += strtoul (p, (char **)&p, 10); if (*p == '.') { ++p; if (*p == '*') { ++p; total_width += abs (va_arg (ap, int)); } else total_width += strtoul (p, (char **)&p, 10); } while (strchr ("hlL", *p)) ++p; /* Should be big enough for any format specifier except %s and floats. */ total_width += 30; switch (*p) { case 'd': case 'i': case 'o': case 'u': case 'x': case 'X': case 'c': (void) va_arg (ap, int); break; case 'f': case 'e': case 'E': case 'g': case 'G': (void) va_arg (ap, double); /* Since an ieee double can have an exponent of 307, we'll make the buffer wide enough to cover the gross case. */ total_width += 307; break; case 's': total_width += strlen (va_arg (ap, char *)); break; case 'p': case 'n': (void) va_arg (ap, char *); break; } } } #ifdef TEST global_total_width = total_width; #endif *result = malloc (total_width); if (*result != NULL) return vsprintf (*result, format, *args); else return 0; } int vasprintf (char **result, const char *format, va_list args) { return int_vasprintf (result, format, &args); } #else extern int _I_dont_care_that_ISO_C_forbids_an_empty_source_file_; #endif #ifdef TEST void checkit #ifdef __STDC__ (const char* format, ...) #else (va_alist) va_dcl #endif { va_list args; char *result; int ret; #ifdef __STDC__ va_start (args, format); #else char *format; va_start (args); format = va_arg (args, char *); #endif ret = vasprintf (&result, format, args); if (ret >= 0 && strlen (result) < global_total_width) printf ("PASS: "); else printf ("FAIL: "); printf ("%d %s\n", global_total_width, result); } int main () { checkit ("%d", 0x12345678); checkit ("%200d", 5); checkit ("%.300d", 6); checkit ("%100.150d", 7); checkit ("%s", "jjjjjjjjjiiiiiiiiiiiiiiioooooooooooooooooppppppppppppaa\n\ 777777777777777777333333333333366666666666622222222222777777777777733333"); checkit ("%f%s%d%s", 1.0, "foo", 77, "asdjffffffffffffffiiiiiiiiiiixxxxx"); } #endif /* TEST */ aranym-1.1.0/src/Unix/sysdeps.h0000664000175000017500000005015113454637621014560 0ustar joyjoy/* * sysdeps.h - System dependent definitions for Unix * * Copyright (c) 2009 ARAnyM dev team (see AUTHORS) * * Basilisk II (C) 1997-2000 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef SYSDEPS_H #define SYSDEPS_H #if !defined(__STDC__) && !defined(__cplusplus) #error "Your compiler is not ANSI nor ISO. Get a real one." #endif #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifndef STDC_HEADERS #error "You don't have ANSI C header files." #endif #ifdef OS_irix #define OS_INCLUDES_DEFINED #include #include #include #include #include #include #include #include #include #include #endif #if defined(OS_beos) || defined(OS_cygwin) || defined(OS_mingw) #include #include #endif #ifdef MACOSX_support #include #endif /* MACOSX_support */ #ifndef OS_INCLUDES_DEFINED #ifdef OS_mingw #include "windows_ver.h" #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_STAT_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_TYPES_H # include #endif #ifdef HAVE_SYS_MMAN_H # include #endif #ifdef HAVE_SYS_PARAM_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_IOCTL_H # include #endif #ifdef HAVE_SYS_STATVFS_H # include #endif #ifdef HAVE_UTIME_H # include #endif #ifdef HAVE_TERMIOS_H # include #endif #ifdef HAVE_TERMIO_H # include #endif #ifdef HAVE_ALLOCA_H # include #endif #ifdef HAVE_FCNTL_H # include #endif #ifdef TIME_WITH_SYS_TIME # include # include #else # ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif #if HAVE_DIRENT_H # include # define NAMLEN(dirent) strlen((dirent)->d_name) #else # define dirent direct # define NAMLEN(dirent) (dirent)->d_namlen # if HAVE_SYS_NDIR_H # include # endif # if HAVE_SYS_DIR_H # include # endif # if HAVE_NDIR_H # include # endif #endif #endif /* OS_INCLUDES_DEFINE */ extern void install_sigsegv(void); extern void uninstall_sigsegv(void); void real_segmentationfault(void); #if (defined(OS_cygwin) || defined(OS_mingw)) && defined(EXTENDED_SIGSEGV) #ifdef __cplusplus extern "C" #endif void cygwin_mingw_abort(void) __attribute__((__noreturn__)); #define abort() cygwin_mingw_abort() #endif #ifdef HAVE_GETOPT_H # include #else # include "getopt.h" #endif /* Atari and host address space are distinct */ #ifndef DIRECT_ADDRESSING #define DIRECT_ADDRESSING 0 #endif #ifndef FIXED_ADDRESSING #define FIXED_ADDRESSING 0 #endif /* Using 68k emulator */ #define EMULATED_68K 1 /* The m68k emulator uses a prefetch buffer ? */ #define USE_PREFETCH_BUFFER 0 /* Data types */ typedef unsigned char uint8; typedef signed char int8; #if SIZEOF_SHORT == 2 typedef unsigned short uint16; typedef short int16; #elif SIZEOF_INT == 2 typedef unsigned int uint16; typedef int int16; #else #error "No 2 byte type, you lose." #endif #if SIZEOF_INT == 4 typedef unsigned int uint32; typedef int int32; #elif SIZEOF_LONG == 4 typedef unsigned long uint32; typedef long int32; #else #error "No 4 byte type, you lose." #endif #if SIZEOF_LONG == 8 #ifdef OS_darwin #ifndef _UINT64 typedef uint64_t uint64; #define _UINT64 #endif #else typedef unsigned long uint64; #endif typedef long int64; #define VAL64(a) (a ## l) #define UVAL64(a) (a ## ul) #elif SIZEOF_LONG_LONG == 8 typedef unsigned long long uint64; typedef long long int64; #define VAL64(a) (a ## LL) #define UVAL64(a) (a ## uLL) #else #error "No 8 byte type, you lose." #endif #if SIZEOF_VOID_P == 4 typedef uint32 uintptr; typedef int32 intptr; #elif SIZEOF_VOID_P == 8 typedef uint64 uintptr; typedef int64 intptr; #else #error "Unsupported size of pointer" #endif #define memptr uint32 #ifndef HAVE_BOOL # define bool int # define true 1 # define false 0 #endif /* Define codes for all the float formats that we know of. * Though we only handle IEEE format. */ #define UNKNOWN_FLOAT_FORMAT 0 #define IEEE_FLOAT_FORMAT 1 #define VAX_FLOAT_FORMAT 2 #define IBM_FLOAT_FORMAT 3 #define C4X_FLOAT_FORMAT 4 /* UAE CPU data types */ #define uae_s8 int8 #define uae_u8 uint8 #define uae_s16 int16 #define uae_u16 uint16 #define uae_s32 int32 #define uae_u32 uint32 #define uae_s64 int64 #define uae_u64 uint64 typedef uae_u32 uaecptr; typedef char flagtype; #ifdef __cplusplus # if __cplusplus >= 201103L # define ARANYM_NO_THROWS noexcept(true) # define ARANYM_THROWS(a, ...) noexcept(false) # else # define ARANYM_NO_THROWS throw() # define ARANYM_THROWS(a, ...) throw(a ## __VA_ARGS__) # endif #endif /* Bochs data types */ #define Bit8u uint8 #define Bit16u uint16 #define Bit32u uint32 /* Alignment restrictions */ #if defined(CPU_i386) || defined(CPU_powerpc) || defined(CPU_m68k) || defined(CPU_x86_64) # define CPU_CAN_ACCESS_UNALIGNED #endif /* UAE CPU defines */ #ifdef WORDS_BIGENDIAN #ifdef CPU_CAN_ACCESS_UNALIGNED /* Big-endian CPUs which can do unaligned accesses */ static inline uae_u32 do_get_mem_long(uae_u32 *a) {return *a;} static inline uae_u32 do_get_mem_word(uae_u16 *a) {return *a;} static inline void do_put_mem_long(uae_u32 *a, uae_u32 v) {*a = v;} static inline void do_put_mem_word(uae_u16 *a, uae_u32 v) {*a = v;} #else /* CPU_CAN_ACCESS_UNALIGNED */ #if (defined(sgi) && !defined(__GNUC__)) /* The SGI MIPSPro compilers can do unaligned accesses given enough hints. * They will automatically inline these routines. */ #ifdef __cplusplus extern "C" { /* only the C compiler does unaligned accesses */ #endif extern uae_u32 do_get_mem_long(uae_u32 *a); extern uae_u32 do_get_mem_word(uae_u16 *a); extern void do_put_mem_long(uae_u32 *a, uae_u32 v); extern void do_put_mem_word(uae_u16 *a, uae_u32 v); #ifdef __cplusplus } #endif #else /* sgi && !GNUC */ /* Big-endian CPUs which can not do unaligned accesses (this is not the most efficient way to do this...) */ static inline uae_u32 do_get_mem_long(uae_u32 *a) {uint8 *b = (uint8 *)a; return (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];} static inline uae_u32 do_get_mem_word(uae_u16 *a) {uint8 *b = (uint8 *)a; return (b[0] << 8) | b[1];} static inline void do_put_mem_long(uae_u32 *a, uae_u32 v) {uint8 *b = (uint8 *)a; b[0] = v >> 24; b[1] = v >> 16; b[2] = v >> 8; b[3] = v;} static inline void do_put_mem_word(uae_u16 *a, uae_u32 v) {uint8 *b = (uint8 *)a; b[0] = v >> 8; b[1] = v;} #endif /* sgi */ #endif /* CPU_CAN_ACCESS_UNALIGNED */ #else /* WORDS_BIGENDIAN */ #if (defined(X86_ASSEMBLY) || defined(X86_64_ASSEMBLY)) && (defined(__i386__) || defined(__x86_64__)) /* Intel x86 */ #define HAVE_OPTIMIZED_BYTESWAP_32 #ifdef HAVE___BUILTIN_BSWAP32 static inline uae_u32 do_byteswap_32(uae_u32 v) { return __builtin_bswap32(v);} #else static inline uae_u32 do_byteswap_32(uae_u32 v) {__asm__ ("bswap %0" : "=r" (v) : "0" (v) : "cc"); return v;} #endif #define HAVE_OPTIMIZED_BYTESWAP_16 #if defined HAVE___BUILTIN_BSWAP16 static inline uae_u32 do_byteswap_16(uae_u32 v) { return __builtin_bswap16(v);} #elif defined HAVE___BUILTIN_BSWAP32 static inline uae_u32 do_byteswap_16(uae_u32 v) { return __builtin_bswap32(v << 16);} #else #define X86_PPRO_OPT #ifdef X86_PPRO_OPT static inline uae_u32 do_byteswap_16(uae_u32 v) {__asm__ ("bswapl %0" : "=&r" (v) : "0" (v << 16) : "cc"); return v;} #else static inline uae_u32 do_byteswap_16(uae_u32 v) {__asm__ ("rolw $8,%0" : "=r" (v) : "0" (v) : "cc"); return v;} #endif #endif #ifdef HW_SIGSEGV // #define HW_SIGSEGV_SIMPLE_ACCESS 1 #endif #ifdef HW_SIGSEGV_SIMPLE_ACCESS /* * The purpose of this inlines is to simplify * decoding in the segfault handler by forcing * the operands to be in registers. * Experimental and not activated by default. */ static inline uae_u32 __get_mem_long(uae_u32 *a) { uae_u32 v; __asm__ __volatile__ ("movl (%1),%0" : "=r"(v) : "r"(a)); return v; } static inline uae_u16 __get_mem_word(uae_u16 *a) { uae_u16 v; __asm__ __volatile__ ("movw (%1),%0" : "=r"(v) : "r"(a)); return v; } static inline uae_u8 __get_mem_byte(uae_u8 *a) { uae_u8 v; __asm__ __volatile__ ("movb (%1),%0" : "=r"(v) : "r"(a)); return v; } static inline void __put_mem_long(uae_u32 *a, uae_u32 v) { __asm__ __volatile__ ("movl %1,(%0)" : : "r"(a), "r"(v)); } static inline void __put_mem_word(uae_u16 *a, uae_u16 v) { __asm__ __volatile__ ("movw %1,(%0)" : : "r"(a), "r"(v)); } static inline void __put_mem_byte(uae_u8 *a, uae_u8 v) { __asm__ __volatile__ ("movb %1,(%0)" : : "r"(a), "r"(v)); } #else static inline uae_u32 __get_mem_long(uae_u32 *a) { return *a; } static inline uae_u16 __get_mem_word(uae_u16 *a) { return *a; } static inline uae_u8 __get_mem_byte(uae_u8 *a) { return *a; } static inline void __put_mem_long(uae_u32 *a, uae_u32 v) { *a = v; } static inline void __put_mem_word(uae_u16 *a, uae_u16 v) { *a = v; } static inline void __put_mem_byte(uae_u8 *a, uae_u8 v) { *a = v; } #endif static inline uae_u32 do_get_mem_long(uae_u32 *a) { return do_byteswap_32(__get_mem_long(a)); } static inline uae_u32 do_get_mem_word(uae_u16 *a) { return do_byteswap_16(__get_mem_word(a)); } #define do_get_mem_byte(a) ((uae_u32)__get_mem_byte(a)) #define HAVE_GET_WORD_UNSWAPPED static inline uae_u32 do_get_mem_word_unswapped(uae_u16 *a) { return (uae_u32)__get_mem_word(a); } static inline void do_put_mem_long(uae_u32 *a, uae_u32 v) { __put_mem_long(a, do_byteswap_32(v)); } static inline void do_put_mem_word(uae_u16 *a, uae_u32 v) { __put_mem_word(a, do_byteswap_16(v)); } #define do_put_mem_byte(a, v) __put_mem_byte(a, v) #elif defined(ARMV6_ASSEMBLY) && defined(__arm__) // #pragma message "ARM/v6 optimized sysdeps" static inline uae_u32 do_get_mem_long(uae_u32 *a) {uint32 retval; __asm__ ( "rev %0, %0" : "=r" (retval) : "0" (*a) ); return retval;} static inline uae_u32 do_get_mem_word(uae_u16 *a) {uint32 retval; __asm__ ( "revsh %0,%0\n\t" "uxth %0,%0" : "=r" (retval) : "0" (*a) ); return retval;} // ARM v6 and above doesn't support unaligned write, but even in 68k an unaligned access is resulting in a trap static inline void do_put_mem_long(uae_u32 *a, uae_u32 v) {__asm__ ("rev %0,%0" : "=r" (v) : "0" (v) ); *a = v;} static inline void do_put_mem_word(uae_u16 *a, uae_u32 v) {__asm__ ( "revsh %0, %0" : "=r" (v) : "0" (v) ); *a = v;} #define HAVE_OPTIMIZED_BYTESWAP_32 static inline uae_u32 do_byteswap_32(uae_u32 v) {__asm__ ( "rev %0, %0" : "=r" (v) : "0" (v) ); return v;} #define HAVE_OPTIMIZED_BYTESWAP_16 static inline uae_u32 do_byteswap_16(uae_u32 v) {__asm__ ( "revsh %0, %0\n\t" "uxth %0, %0" : "=r" (v) : "0" (v) ); return v;} #define HAVE_GET_WORD_UNSWAPPED #define do_get_mem_word_unswapped(a) ((uae_u32)*((uae_u16 *)(a))) /* ARM v1 to v5 support or cross ARM support */ #elif defined(ARM_ASSEMBLY) && defined(__arm__) // #pragma message "ARM/generic optimized sysdeps" static inline uae_u32 do_get_mem_long(uae_u32 *a) {uint32 retval; __asm__ ( "eor r3, %0, %0, ror #16\n\t" "bic r3,r3, #0x00FF0000\n\t" "mov %0, %0, ror #8\n\t" "eor %0, %0, r3, lsr #8" : "=r" (retval) : "0" (*a) : "r3", "cc"); return retval;} static inline uae_u32 do_get_mem_word(uae_u16 *a) {uint32 retval; __asm__ ( "bic %0, %0, #0xff000000\n\t" "bic %0, %0, #0x00ff0000\n\t" "and r3, %0, #0xff\n\t" "mov %0, %0, lsr #8\n\t" "orr %0, %0, r3, lsl #8" : "=r" (retval) : "0" (*a) : "r3", "cc"); return retval;} // ARM doesn't support unaligned write, but even in 68k an unaligned access is resulting in a trap static inline void do_put_mem_long(uae_u32 *a, uae_u32 v) {__asm__ ( "eor r3, %0, %0, ror #16\n\t" "bic r3,r3, #0x00FF0000\n\t" "mov %0, %0, ror #8\n\t" "eor %0, %0, r3, lsr #8" : "=r" (v) : "0" (v) : "r3", "cc"); *a = v;} static inline void do_put_mem_word(uae_u16 *a, uae_u32 v) {__asm__ ( "and r3, %0, #0xff00\n\t" "mov %0, %0, lsl #8\n\t" "orr %0, %0, r3, lsr #8" : "=r" (v) : "0" (v) : "r3", "cc"); *a = v;} #define HAVE_OPTIMIZED_BYTESWAP_32 static inline uae_u32 do_byteswap_32(uae_u32 v) {__asm__ ( "eor r3, %0, %0, ror #16\n\t" "bic r3,r3, #0x00FF0000\n\t" "mov %0, %0, ror #8\n\t" "eor %0, %0, r3, lsr #8" : "=r" (v) : "0" (v) : "r3", "cc"); return v;} #define HAVE_OPTIMIZED_BYTESWAP_16 static inline uae_u32 do_byteswap_16(uae_u32 v) {__asm__ ( "and r3, %0, #0xff00\n\t" "mov %0, %0, lsl #8\n\t" "orr %0, %0, r3, lsr #8\n\t" "bic %0,%0, #0x00FF0000" : "=r" (v) : "0" (v) : "r3", "cc"); return v;} #define HAVE_GET_WORD_UNSWAPPED #define do_get_mem_word_unswapped(a) ((uae_u32)*((uae_u16 *)(a))) #endif #endif /* WORDS_BIGENDIAN */ #ifndef HAVE_OPTIMIZED_BYTESWAP_32 # ifdef HAVE___BUILTIN_BSWAP32 static inline uae_u32 do_byteswap_32(uae_u32 v) { return __builtin_bswap32(v);} # else static inline uae_u32 do_byteswap_32(uae_u32 v) { return (((v >> 24) & 0xff) | ((v >> 8) & 0xff00) | ((v & 0xff) << 24) | ((v & 0xff00) << 8)); } # endif # ifndef WORDS_BIGENDIAN # if defined(CPU_CAN_ACCESS_UNALIGNED) /* Other little-endian CPUs which can do unaligned accesses */ static inline uae_u32 do_get_mem_long(uae_u32 *a) { return do_byteswap_32(*a);} static inline void do_put_mem_long(uae_u32 *a, uae_u32 v) {*a = do_byteswap_32(v);} # else /* Other little-endian CPUs which can not do unaligned accesses (this needs optimization) */ static inline uae_u32 do_get_mem_long(uae_u32 *a) {uint8 *b = (uint8 *)a; return (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];} static inline void do_put_mem_long(uae_u32 *a, uae_u32 v) {uint8 *b = (uint8 *)a; b[0] = v >> 24; b[1] = v >> 16; b[2] = v >> 8; b[3] = v;} # endif # endif #endif #ifndef HAVE_OPTIMIZED_BYTESWAP_16 #if defined HAVE___BUILTIN_BSWAP16 static inline uae_u32 do_byteswap_16(uae_u32 v) { return __builtin_bswap16(v);} #else static inline uae_u32 do_byteswap_16(uae_u32 v) { return (((v >> 8) & 0xff) | ((v & 0xff) << 8)); } #endif #ifndef WORDS_BIGENDIAN #if defined(CPU_CAN_ACCESS_UNALIGNED) /* Other little-endian CPUs which can do unaligned accesses */ static inline uae_u32 do_get_mem_word(uae_u16 *a) {return do_byteswap_16(*a);} static inline void do_put_mem_word(uae_u16 *a, uae_u32 v) {*a = do_byteswap_16(v);} #else /* Other little-endian CPUs which can not do unaligned accesses (this needs optimization) */ static inline uae_u32 do_get_mem_word(uae_u16 *a) {uint8 *b = (uint8 *)a; return (b[0] << 8) | b[1];} static inline void do_put_mem_word(uae_u16 *a, uae_u32 v) {uint8 *b = (uint8 *)a; b[0] = v >> 8; b[1] = v;} #endif #endif #endif #ifndef do_get_mem_byte #define do_get_mem_byte(a) ((uae_u32)*((uae_u8 *)(a))) #endif #ifndef do_put_mem_byte #define do_put_mem_byte(a, v) (*(uae_u8 *)(a) = (v)) #endif #define call_mem_get_func(func, addr) ((*func)(addr)) #define call_mem_put_func(func, addr, v) ((*func)(addr, v)) #define CPU_EMU_SIZE 0 #undef NO_INLINE_MEMORY_ACCESS #undef MD_HAVE_MEM_1_FUNCS #ifndef REGPARAM # define REGPARAM #endif #define REGPARAM2 #undef NOT_MALLOC #undef KNOWN_ALLOC #if DIRECT_ADDRESSING || FIXED_ADDRESSING # define KNOWN_ALLOC 1 #else # define KNOWN_ALLOC 0 #endif #ifndef HAVE_STRDUP extern "C" char *strdup(const char *s); #endif #ifdef OS_mingw #include #include /* FIXME: O_SYNC not defined in mingw, is there a replacement value ? * Does it make floppy working even without it ? */ #define O_SYNC 0 /* FIXME: These are not defined in my current mingw setup, is it * available in more uptodates mingw packages ? I took these from * the wine project */ #ifndef FILE_DEVICE_MASS_STORAGE # define FILE_DEVICE_MASS_STORAGE 0x0000002d #endif #ifndef IOCTL_STORAGE_BASE # define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE #endif #ifndef IOCTL_STORAGE_EJECT_MEDIA # define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS) #endif #ifndef HAVE_GETTIMEOFDAY extern "C" void gettimeofday(struct timeval *p, void *tz /*IGNORED*/); #endif #endif /* OS_mingw */ #ifndef HAVE_STRCHR # define strchr index # define strrchr rindex char *strchr (), *strrchr (); #endif #ifndef HAVE_MEMCPY # ifndef HAVE_BCOPY # error "no working memcpy()" # endif # define memcpy(d, s, n) bcopy ((s), (d), (n)) # define memmove(d, s, n) bcopy ((s), (d), (n)) #endif #ifndef HAVE_USLEEP # define usleep(microseconds) SDL_Delay((microseconds) / 1000) #endif #ifdef MACOSX_support extern CFBundleRef mainBundle; #endif /* MACOSX_support */ #ifndef HAVE_SIGSETJMP # include # define sigsetjmp(a, b) setjmp(a) # define siglongjmp(a, b) longjmp(a, b) typedef jmp_buf sigjmp_buf; #endif #ifdef HW_SIGSEGV # define SETJMP(a) sigsetjmp(a, 1) # define LONGJMP(a,b) siglongjmp(a, b) # define JMP_BUF sigjmp_buf #else # define SETJMP(a) setjmp(a) # define LONGJMP(a,b) longjmp(a,b) # define JMP_BUF jmp_buf #endif #ifndef __GNUC_PREREQ # ifdef __GNUC__ # define __GNUC_PREREQ(maj, min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) # else # define __GNUC_PREREQ(maj, min) 0 # endif #endif #ifndef __always_inline # if __GNUC_PREREQ(3, 2) # define __always_inline __inline __attribute__ ((__always_inline__)) # else # define __always_inline __inline # endif #endif #ifndef __attribute_noinline__ # if __GNUC_PREREQ(3,1) # define __attribute_noinline__ __attribute__ ((__noinline__)) # else # define __attribute_noinline__ /* Ignore */ # endif #endif #if defined __cplusplus #define EXTERN_INLINE extern inline #elif defined __GNUC_STDC_INLINE__ #define EXTERN_INLINE extern __inline __attribute__((__gnu_inline__)) #else #define EXTERN_INLINE extern __inline #endif #if __GNUC__ < 3 # define __builtin_expect(foo,bar) (foo) #endif #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #define ALWAYS_INLINE inline __attribute__((always_inline)) #ifndef __attribute__ # if !__GNUC_PREREQ(2, 0) # define __attribute__(xyz) /* Ignore */ # endif #endif #ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 #endif #ifndef EXIT_FAILURE # define EXIT_FAILURE 1 #endif #include "win32_supp.h" #endif /* SYSDEPS_H */ aranym-1.1.0/src/Unix/solaris/0000775000175000017500000000000013454637641014371 5ustar joyjoyaranym-1.1.0/src/Unix/solaris/which_sparc0000775000175000017500000000434413454637621016614 0ustar joyjoy#!/bin/sh # which_sparc # # This script generates a program that tests for a SPARC processor class # Program returns: # 0 unknown SPARC processor # 8 SPARC V8 `compliant' processor (umul instruction is legal) # 9 SPARC V9 `compliant' processor (popc instruction is legal) # # The script prints: # "unknown SPARC architecture" # SPARC_V8 # SPARC_V9 # # I hope this works for other machines and OS. Tested machines are: # Sun Ultra 10 (Solaris 7), SPARC Station 5 (Solaris 2.5.1) # # Gwenole Beauchesne # gb@dial.oleane.com CC=gcc PROG=./conftest SOURCE=./conftest.c if [ ! -x $PROG ]; then cat > $SOURCE << EOF #include #include typedef unsigned int uint32; typedef uint32 (*sparc_code_func)(void); #define SPARC_UNKNOWN 0 #define SPARC_V8 8 #define SPARC_V9 9 #define MAX_CODE_SIZE 16 struct sparc_code_struct { int version; uint32 code[MAX_CODE_SIZE]; struct sparc_code_struct * next; }; typedef struct sparc_code_struct sparc_code_struct; static sparc_code_struct *current_test_code; static sparc_code_struct unknown_sparc_code = { SPARC_UNKNOWN, { 0x81C3E008, /* retl */ 0x01000000 /* nop */ } }; static sparc_code_struct sparc_v9_code = { SPARC_V9, { 0x81C3E008, /* retl */ 0x81702007 /* popc 7, %g0 */ } }; static sparc_code_struct sparc_v8_code = { SPARC_V8, { 0x90102002, /* mov 2, %o0 */ 0x81C3E008, /* retl */ 0x90520008 /* umul %o0, %o0, %o0 */ } }; static void test_sparc_code(int unused_int) { sparc_code_struct *tested_code = current_test_code; if (current_test_code == NULL) exit(SPARC_UNKNOWN); signal(SIGILL, test_sparc_code); current_test_code = current_test_code->next; (void) ((sparc_code_func)(tested_code->code))(); exit(tested_code->version); } int main(void) { sparc_v9_code.next = &sparc_v8_code; sparc_v8_code.next = &unknown_sparc_code; unknown_sparc_code.next = NULL; signal(SIGILL, test_sparc_code); current_test_code = &sparc_v9_code; raise(SIGILL); return 0; } EOF $CC -o $PROG $SOURCE if [ $? -ne 0 ]; then echo "Error: could not compile the test program" exit 1 fi fi $PROG case $? in 0) echo "unknown SPARC architecture";; 8) echo "SPARC_V8";; 9) echo "SPARC_V9";; esac rm -f $PROG rm -f $SOURCE exit 0 aranym-1.1.0/src/Unix/solaris/sigsegv_solaris_x86.cpp0000664000175000017500000000615613454637621021013 0ustar joyjoy/* * sigsegv_solaris_x86.cpp - x86/x86_64 Solaris SIGSEGV handler * * Copyright (c) 2006 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Bernie Meyer's UAE-JIT and Gwenole Beauchesne's Basilisk II-JIT * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "cpu_emulation.h" #define DEBUG 0 #include "debug.h" #include #include #include #include #ifndef HAVE_SIGHANDLER_T typedef void (*sighandler_t)(int); #endif #ifdef CPU_i386 #undef REG_RIP #undef REG_RAX #undef REG_RBX #undef REG_RCX #undef REG_RDX #undef REG_RBP #undef REG_RSI #undef REG_RDI #undef REG_RSP #undef REG_EFL #define REG_RIP EIP #define REG_RAX EAX #define REG_RBX EBX #define REG_RCX ECX #define REG_RDX EDX #define REG_RBP EBP #define REG_RSI ESI #define REG_RDI EDI #define REG_RSP ESP #define REG_EFL EFL #endif #ifdef CPU_x86_64 #define REG_EFL REG_RFL #endif #if defined(CPU_i386) || defined(CPU_x86_64) #define CONTEXT_NAME ucp #define CONTEXT_TYPE ucontext_t #define CONTEXT_ATYPE CONTEXT_TYPE * #define CONTEXT_REGS CONTEXT_NAME->uc_mcontext.gregs #define CONTEXT_AEFLAGS CONTEXT_REGS[REG_EFL] #define CONTEXT_AEIP CONTEXT_REGS[REG_RIP] #define CONTEXT_AEAX CONTEXT_REGS[REG_RAX] #define CONTEXT_AEBX CONTEXT_REGS[REG_RBX] #define CONTEXT_AECX CONTEXT_REGS[REG_RCX] #define CONTEXT_AEDX CONTEXT_REGS[REG_RDX] #define CONTEXT_AEBP CONTEXT_REGS[REG_RBP] #define CONTEXT_AESI CONTEXT_REGS[REG_RSI] #define CONTEXT_AEDI CONTEXT_REGS[REG_RDI] #endif #include "sigsegv_common_x86.h" static void segfault_vec(int /* sig */, siginfo_t *sip, void *_ucp) { CONTEXT_ATYPE CONTEXT_NAME = (CONTEXT_ATYPE) _ucp; char *fault_addr = (char *)sip->si_addr; memptr addr = (memptr)(uintptr)(fault_addr - fixed_memory_offset); if (fault_addr == 0 || CONTEXT_AEIP == 0) { real_segmentationfault(); /* not reached (hopefully) */ return; } handle_access_fault(CONTEXT_NAME, addr); } void install_sigsegv() { struct sigaction act; struct sigaction *oact = (struct sigaction*)malloc(sizeof(struct sigaction)); memset(&act, 0, sizeof(act)); if (oact == NULL) { panicbug("Not enough memory"); exit(EXIT_FAILURE); } act.sa_sigaction = segfault_vec; sigemptyset (&act.sa_mask); act.sa_flags = SA_SIGINFO; sigaction(SIGSEGV, &act, oact); } void uninstall_sigsegv() { signal(SIGSEGV, SIG_DFL); } aranym-1.1.0/src/Unix/sigsegv_common_x86.h0000664000175000017500000012755213454637621016624 0ustar joyjoy#include "disasm-glue.h" /* for debug output only */ #ifdef CPU_i386 #define REG_RIP_NAME "eip" #endif #ifdef CPU_x86_64 #define REG_RIP_NAME "rip" #endif enum transfer_type_t { TYPE_UNKNOWN, TYPE_LOAD, TYPE_STORE }; #ifdef USE_JIT extern void compiler_status(); # ifdef JIT_DEBUG extern void compiler_dumpstate(); # endif #endif int in_handler = 0; // #define HW_SIGSEGV_STATISTICS 1 #ifdef HW_SIGSEGV_STATISTICS static unsigned long x86_opcodes[256]; #endif enum instruction_t { INSTR_UNKNOWN, INSTR_MOVZX8, INSTR_MOVZX16, INSTR_MOVSX8, INSTR_MOVSX16, #ifdef CPU_x86_64 INSTR_MOVSX32, #endif INSTR_MOV8, INSTR_MOV32, INSTR_MOVIMM8, INSTR_MOVIMM32, INSTR_ORMEM, INSTR_ADDIMM8, INSTR_ORIMM8, INSTR_ANDIMM8, INSTR_SUBIMM8, INSTR_XORIMM8, INSTR_CMPIMM8, INSTR_ADDIMM32, INSTR_ORIMM32, INSTR_ANDIMM32, INSTR_SUBIMM32, INSTR_XORIMM32, INSTR_CMPIMM32, INSTR_ADDLIMM8, INSTR_ORLIMM8, INSTR_ANDLIMM8, INSTR_SUBLIMM8, INSTR_XORLIMM8, INSTR_CMPLIMM8, INSTR_ANDMEM, INSTR_ADDMEM, INSTR_SUBMEM, INSTR_CMPMEM, INSTR_DIV8, INSTR_IDIV8, INSTR_MUL8, INSTR_IMUL8, INSTR_NEGMEM, INSTR_NOTMEM, INSTR_TESTIMM8, INSTR_XORMEM }; static inline int get_instr_size_add(const uint8 *p) { int mod = (p[0] & 0xC0); int rm = p[0] & 7; int offset = 0; // ModR/M Byte switch (mod) { case 0: // [reg] if (rm == 5) return 4; // disp32 break; case 0x40: // disp8[reg] offset = 1; break; case 0x80: // disp32[reg] offset = 4; break; case 0xc0: // register return 0; } // SIB Byte if (rm == 4) { if (mod == 0 && (p[1] & 7) == 5) offset = 5; // disp32[index] else offset++; } return offset; } /* MJ - AF and OF not tested, also CF for 32 bit */ static inline void set_byte_eflags(int i, CONTEXT_ATYPE CONTEXT_NAME) { if ((i > 255) || (i < 0)) CONTEXT_AEFLAGS |= 0x1; // CF else CONTEXT_AEFLAGS &= ~0x1; if (i > 127) CONTEXT_AEFLAGS |= 0x80; // SF else CONTEXT_AEFLAGS &= ~0x80; if ((i % 2) == 0) CONTEXT_AEFLAGS |= 0x4; // PF else CONTEXT_AEFLAGS &= ~0x4; if (i == 0) CONTEXT_AEFLAGS |= 0x40; // ZF else CONTEXT_AEFLAGS &= ~0x40; } /* MJ - AF and OF not tested, also CF for 32 bit */ static inline void set_word_eflags(int i, CONTEXT_ATYPE CONTEXT_NAME) { if ((i > 65535) || (i < 0)) CONTEXT_AEFLAGS |= 0x1; // CF else CONTEXT_AEFLAGS &= ~0x1; if (i > 32767) CONTEXT_AEFLAGS |= 0x80; // SF else CONTEXT_AEFLAGS &= ~0x80; if ((i % 2) == 0) CONTEXT_AEFLAGS |= 0x4; // PF else CONTEXT_AEFLAGS &= ~0x4; if (i == 0) CONTEXT_AEFLAGS |= 0x40; // ZF else CONTEXT_AEFLAGS &= ~0x40; } /* MJ - AF and OF not tested, also CF for 32 bit */ static inline void set_long_eflags(int i, CONTEXT_ATYPE CONTEXT_NAME) { if (i > 2147483647) CONTEXT_AEFLAGS |= 0x80; // SF else CONTEXT_AEFLAGS &= ~0x80; if ((i % 2) == 0) CONTEXT_AEFLAGS |= 0x4; // PF else CONTEXT_AEFLAGS &= ~0x4; if (i == 0) CONTEXT_AEFLAGS |= 0x40; // ZF else CONTEXT_AEFLAGS &= ~0x40; } static #if DEBUG __attribute_noinline__ #else inline #endif void unknown_instruction() { #ifdef USE_JIT compiler_status(); # ifdef JIT_DEBUG compiler_dumpstate(); # endif #endif abort(); } /** Opcode register id list: 8 Bit 0: AL 1: CL 2: DL 3: BL 4: AH (SPL, if REX) 5: CH (BPL, if REX) 6: DH (SIL, if REX) 7: BH (DIL, if REX) 8: R8L 9: R9L 10: R10L 11: R11L 12: R12L 13: R13L 14: R14L 15: R15L 16 Bit: 0: AX 1: CX 2: DX 3: BX 4: SP 5: BP 6: SI 7: DI 8: R8W 9: R9W 10: R10W 11: R11W 12: R12W 13: R13W 14: R14W 15: R15W 32 Bit: 0: EAX 1: ECX 2: EDX 3: EBX 4: ESP 5: EBP 6: ESI 7: EDI 8: R8D 9: R9D 10: R10D 11: R11D 12: R12D 13: R13D 14: R14D 15: R15D **/ #ifdef NO_NESTED_SIGSEGV static __attribute_noinline__ void handle_access_fault2(CONTEXT_ATYPE CONTEXT_NAME, memptr faultaddr) #else static __attribute_noinline__ void handle_access_fault(CONTEXT_ATYPE CONTEXT_NAME, memptr faultaddr) #endif { memptr addr = faultaddr; const uint8 *ainstr = (const uint8 *)CONTEXT_AEIP; const uint8 *addr_instr = ainstr; int reg = -1; int len = 0; transfer_type_t transfer_type = TYPE_UNKNOWN; int size = 4; uae_u32 imm = 0; int pom1, pom2; instruction_t instruction = INSTR_UNKNOWN; volatile void *preg; static const int x86_reg_map[] = { REG_RAX, REG_RCX, REG_RDX, REG_RBX, REG_RSP, REG_RBP, REG_RSI, REG_RDI, #ifdef CPU_x86_64 REG_R8, REG_R9, REG_R10, REG_R11, REG_R12, REG_R13, REG_R14, REG_R15, #endif }; if (in_handler > 0) { panicbug("Segmentation fault in handler :-(, faultaddr=0x%08x", faultaddr); abort(); } in_handler += 1; #ifdef USE_JIT /* does not compile with default configure */ D(compiler_status()); #endif D(bug("[%08x] BUS ERROR fault address is %08x", m68k_getpc(), addr)); #ifdef HW_SIGSEGV /* segment override not handled */ #if DEBUG if (addr_instr[0] == 0x2e || addr_instr[0] == 0x3e || addr_instr[0] == 0x26 || addr_instr[0] == 0x64 || addr_instr[0] == 0x65 || addr_instr[0] == 0x36) { D(panicbug("segment override prefix")); addr_instr++; len++; } #endif if (addr_instr[0] == 0x67) { // address size override prefix #ifdef CPU_i386 D(panicbug("address size override prefix in 32bit-mode")); #endif addr_instr++; // Skip prefix, seems to be enough len++; } if (addr_instr[0] == 0x66) { // operand size override prefix addr_instr++; len++; size = 2; D(bug("Word instr:")); } if (addr_instr[0] == 0xf0) { // lock prefix addr_instr++; len++; D(bug("Lock:")); } /* Repeat prefix not handled */ if (addr_instr[0] == 0xf3 || addr_instr[0] == 0xf2) { panicbug("repeat prefix"); addr_instr++; len++; } #ifdef CPU_x86_64 // REX prefix struct rex_t { unsigned char W; unsigned char R; unsigned char X; unsigned char B; }; rex_t rex = { 0, 0, 0, 0 }; bool has_rex = false; if ((*addr_instr & 0xf0) == 0x40) { has_rex = true; const unsigned char b = *addr_instr; rex.W = b & (1 << 3); rex.R = b & (1 << 2); rex.X = b & (1 << 1); rex.B = b & (1 << 0); addr_instr++; len++; if (rex.W) size = 8; } #endif #ifdef HW_SIGSEGV_STATISTICS x86_opcodes[addr_instr[0]]++; #endif switch (addr_instr[0]) { case 0x00: D(bug("ADD m8, r8")); size = 1; transfer_type = TYPE_STORE; instruction = INSTR_ADDMEM; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x01: if (size == 8) { D(bug("ADD m64, r64")); } else if (size == 2) { D(bug("ADD m16, r16")); } else /* if (size == 4) */ { D(bug("ADD m32, r32")); } instruction = INSTR_ADDMEM; transfer_type = TYPE_STORE; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x02: D(bug("ADD r8, m8")); size = 1; transfer_type = TYPE_LOAD; instruction = INSTR_ADDMEM; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x03: if (size == 8) { D(bug("ADD r64, m64")); } else if (size == 2) { D(bug("ADD r16, m16")); } else if (size == 4) { D(bug("ADD r32, m32")); } instruction = INSTR_ADDMEM; transfer_type = TYPE_LOAD; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x28: D(bug("SUB m8, r8")); size = 1; transfer_type = TYPE_STORE; instruction = INSTR_SUBMEM; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x29: if (size == 8) { D(bug("SUB m64, r64")); } else if (size == 2) { D(bug("SUB m16, r16")); } else /* if (size == 4) */ { D(bug("SUB m32, r32")); } instruction = INSTR_SUBMEM; transfer_type = TYPE_STORE; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x2A: D(bug("SUB r8, m8")); size = 1; transfer_type = TYPE_LOAD; instruction = INSTR_SUBMEM; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x2b: if (size == 8) { D(bug("SUB r64, m64")); } else if (size == 2) { D(bug("SUB r16, m16")); } else if (size == 4) { D(bug("SUB r32, m32")); } instruction = INSTR_SUBMEM; transfer_type = TYPE_LOAD; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x08: D(bug("OR m8, r8")); size = 1; transfer_type = TYPE_STORE; instruction = INSTR_ORMEM; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x09: if (size == 8) { D(bug("OR m64, r64")); } else if (size == 2) { D(bug("OR m16, r16")); } else /* if (size == 4) */ { D(bug("OR m32, r32")); } instruction = INSTR_ORMEM; transfer_type = TYPE_STORE; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x0a: D(bug("OR r8, m8")); size = 1; transfer_type = TYPE_LOAD; instruction = INSTR_ORMEM; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x0b: if (size == 8) { D(bug("OR r64, m64")); } else if (size == 2) { D(bug("OR r16, m16")); } else if (size == 4) { D(bug("OR r32, m32")); } instruction = INSTR_ORMEM; transfer_type = TYPE_LOAD; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x0f: switch (addr_instr[1]) { case 0xb6: D(bug("MOVZX r32, m8")); transfer_type = TYPE_LOAD; instruction = INSTR_MOVZX8; reg = (addr_instr[2] >> 3 ) & 7; len += 3 + get_instr_size_add(addr_instr + 2); break; case 0xb7: D(bug("MOVZX r32, m16")); size = 2; transfer_type = TYPE_LOAD; instruction = INSTR_MOVZX16; reg = (addr_instr[2] >> 3 ) & 7; len += 3 + get_instr_size_add(addr_instr + 2); break; case 0xbe: D(bug("MOVSX r32, m8")); transfer_type = TYPE_LOAD; instruction = INSTR_MOVSX8; reg = (addr_instr[2] >> 3 ) & 7; len += 3 + get_instr_size_add(addr_instr + 2); break; case 0xbf: D(bug("MOVSX r32, m16")); transfer_type = TYPE_LOAD; instruction = INSTR_MOVSX16; reg = (addr_instr[2] >> 3 ) & 7; len += 3 + get_instr_size_add(addr_instr + 2); break; #ifdef CPU_x86_64 case 0x63: D(bug("MOVSX r64, m32")); transfer_type = TYPE_LOAD; instruction = INSTR_MOVSX32; reg = (addr_instr[2] >> 3 ) & 7; len += 3 + get_instr_size_add(addr_instr + 2); break; #endif default: instruction = INSTR_UNKNOWN; panicbug("MOVSX - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); break; } break; case 0x20: D(bug("AND m8, r8")); size = 1; transfer_type = TYPE_STORE; instruction = INSTR_ANDMEM; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x21: if (size == 8) { D(bug("AND m64, r64")); } else if (size == 2) { D(bug("AND m16, r16")); } else /* if (size == 4) */ { D(bug("AND m32, r32")); } instruction = INSTR_ANDMEM; transfer_type = TYPE_STORE; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x22: D(bug("AND r8, m8")); size = 1; transfer_type = TYPE_LOAD; instruction = INSTR_ANDMEM; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x23: if (size == 8) { D(bug("AND r64, m64")); } else if (size == 2) { D(bug("AND r16, m16")); } else /* if (size == 4) */ { D(bug("AND r32, m32")); } instruction = INSTR_ANDMEM; transfer_type = TYPE_STORE; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x30: D(bug("XOR m8, r8")); size = 1; transfer_type = TYPE_STORE; instruction = INSTR_XORMEM; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x31: if (size == 8) { D(bug("XOR m64, r64")); } else if (size == 2) { D(bug("XOR m16, r16")); } else /* if (size == 4) */ { D(bug("XOR m32, r32")); } instruction = INSTR_XORMEM; transfer_type = TYPE_STORE; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x32: D(bug("XOR r8,m8")); size = 1; transfer_type = TYPE_LOAD; instruction = INSTR_XORMEM; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x33: if (size == 8) { D(bug("XOR r64, m64")); } else if (size == 2) { D(bug("XOR r16, m16")); } else /* if (size == 4) */ { D(bug("XOR r32, m32")); } instruction = INSTR_XORMEM; transfer_type = TYPE_LOAD; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x38: D(bug("CMP m8, r8")); size = 1; transfer_type = TYPE_STORE; instruction = INSTR_CMPMEM; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x39: if (size == 8) { D(bug("CMP m64, r64")); } else if (size == 2) { D(bug("CMP m16, r16")); } else /* if (size == 4) */ { D(bug("CMP m32, r32")); } transfer_type = TYPE_STORE; instruction = INSTR_CMPMEM; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x3a: D(bug("CMP r8, m8")); size = 1; transfer_type = TYPE_LOAD; instruction = INSTR_CMPMEM; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x3b: if (size == 8) { D(bug("CMP r64, m64")); } else if (size == 2) { D(bug("CMP r16, m16")); } else /* if (size == 4) */ { D(bug("CMP r32, m32")); } transfer_type = TYPE_LOAD; instruction = INSTR_CMPMEM; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x80: size = 1; transfer_type = TYPE_STORE; switch ((addr_instr[1] >> 3) & 7) { case 0: D(bug("ADD m8, imm8")); instruction = INSTR_ADDIMM8; break; case 1: D(bug("OR m8, imm8")); instruction = INSTR_ORIMM8; break; case 4: D(bug("AND m8, imm8")); instruction = INSTR_ANDIMM8; break; case 5: D(bug("SUB m8, imm8")); instruction = INSTR_SUBIMM8; break; case 6: D(bug("XOR m8, imm8")); instruction = INSTR_XORIMM8; break; case 7: D(bug("CMP m8, imm8")); instruction = INSTR_CMPIMM8; break; case 2: /* ADC */ case 3: /* SBB */ default: instruction = INSTR_UNKNOWN; panicbug("ADD m8, imm8 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); break; } len += 2 + get_instr_size_add(addr_instr + 1); imm = *((uae_u8 *)(ainstr + len)); len++; break; case 0x81: transfer_type = TYPE_STORE; switch ((addr_instr[1] >> 3) & 7) { case 0: D(bug("ADD m32, imm32")); instruction = INSTR_ADDIMM32; break; case 1: D(bug("OR m32, imm32")); instruction = INSTR_ORIMM32; break; case 4: D(bug("AND m32, imm32")); instruction = INSTR_ANDIMM32; break; case 5: D(bug("SUB m32, imm32")); instruction = INSTR_SUBIMM32; break; case 6: D(bug("XOR m32, imm32")); instruction = INSTR_XORIMM32; break; case 7: D(bug("CMP m32, imm32")); instruction = INSTR_CMPIMM32; break; case 2: /* ADC */ case 3: /* SBB */ default: instruction = INSTR_UNKNOWN; panicbug("ADD m32, imm32 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); break; } len += 2 + get_instr_size_add(addr_instr + 1); if (size == 2) { imm = *((uae_u16 *)(ainstr + len)); len += 2; } else { imm = *((uae_u32 *)(ainstr + len)); len += 4; } break; case 0x83: transfer_type = TYPE_STORE; switch ((addr_instr[1] >> 3) & 7) { case 0: D(bug("ADDL m32, imm8")); instruction = INSTR_ADDLIMM8; break; case 1: D(bug("ORL m32, imm8")); instruction = INSTR_ORLIMM8; break; case 4: D(bug("ANDL m32, imm8")); instruction = INSTR_ANDLIMM8; break; case 5: D(bug("SUBL m32, imm8")); instruction = INSTR_SUBLIMM8; break; case 6: D(bug("XORL m32, imm8")); instruction = INSTR_XORLIMM8; break; case 7: D(bug("CMPL m32, imm8")); instruction = INSTR_CMPLIMM8; break; case 2: /* ADC */ case 3: /* SBB */ default: instruction = INSTR_UNKNOWN; panicbug("ADD m8, imm8 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); break; } len += 2 + get_instr_size_add(addr_instr + 1); imm = *((uae_s8 *)(ainstr + len)); len++; break; case 0x88: D(bug("MOV m8, r8")); size = 1; transfer_type = TYPE_STORE; instruction = INSTR_MOV8; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x89: D(bug("MOV m32, r32")); transfer_type = TYPE_STORE; instruction = INSTR_MOV32; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x8a: D(bug("MOV r8, m8")); size = 1; transfer_type = TYPE_LOAD; instruction = INSTR_MOV8; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0x8b: D(bug("MOV r32, m32")); transfer_type = TYPE_LOAD; instruction = INSTR_MOV32; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); break; case 0xc6: D(bug("MOV m8, imm8")); size = 1; transfer_type = TYPE_STORE; instruction = INSTR_MOVIMM8; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); imm = *((uae_u8 *)(ainstr + len)); len++; break; case 0xc7: D(bug("MOV m32, imm32")); transfer_type = TYPE_STORE; instruction = INSTR_MOVIMM32; reg = (addr_instr[1] >> 3) & 7; len += 2 + get_instr_size_add(addr_instr + 1); if (size == 2) { imm = *((uae_u16 *)(ainstr + len)); len += 2; } else { imm = *((uae_u32 *)(ainstr + len)); len += 4; } break; case 0xf6: size = 1; /* fall through */ case 0xf7: len += 2 + get_instr_size_add(addr_instr + 1); switch ((addr_instr[1] >> 3) & 7) { case 0: D(bug("TEST m8, imm8")); transfer_type = TYPE_STORE; instruction = INSTR_TESTIMM8; imm = *((uae_u8 *)(ainstr + len)); len++; break; case 2: D(bug("NOT m8")); transfer_type = TYPE_STORE; instruction = INSTR_NOTMEM; break; case 3: D(bug("NEG m8")); transfer_type = TYPE_STORE; instruction = INSTR_NEGMEM; break; case 4: D(bug("MUL m8")); transfer_type = TYPE_LOAD; instruction = INSTR_MUL8; reg = 0; /* always EAX */ break; case 5: D(bug("IMUL m8")); transfer_type = TYPE_LOAD; instruction = INSTR_IMUL8; reg = 0; /* always EAX */ break; case 6: D(bug("DIV m8")); transfer_type = TYPE_LOAD; instruction = INSTR_DIV8; reg = 0; /* always EAX */ break; case 7: D(bug("IDIV m8")); transfer_type = TYPE_LOAD; instruction = INSTR_IDIV8; reg = 0; /* always EAX */ break; default: instruction = INSTR_UNKNOWN; panicbug("TEST m8, imm8 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); break; } break; default: instruction = INSTR_UNKNOWN; panicbug("unsupported instruction: i[0-6]=%02x %02x %02x %02x %02x %02x %02x", addr_instr[0], addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); break; } #if DEBUG { const uint8 *a = ainstr; int i; char scratch[1024]; strcpy(scratch, "instruction is"); for (i = 0; i < len && i < 7; i++) sprintf(scratch + strlen(scratch), " %02x", a[i]); if (i > 7) strcat(scratch, "..."); sprintf(scratch + strlen(scratch), ", len %d", len); D(bug("%s", scratch)); } #ifdef HAVE_DISASM_X86 { char buf[256]; x86_disasm(ainstr, buf, 1); bug("%s", buf); } #endif #endif if (addr >= 0xff000000) addr &= 0x00ffffff; if ((addr < 0x00f00000) || (addr > 0x00ffffff)) goto buserr; #ifdef CPU_x86_64 if (rex.R) { reg += 8; D2(bug("Extended register %d", reg)); } #endif if (reg >= 0) { // Get register pointer if (size == 1) { if ( #ifdef CPU_x86_64 has_rex || #endif reg < 4) { preg = &(CONTEXT_REGS[x86_reg_map[reg]]); } else { preg = (uae_u8*)(&(CONTEXT_REGS[x86_reg_map[reg - 4]])) + 1; // AH, BH, CH, DH } } else { preg = &(CONTEXT_REGS[x86_reg_map[reg]]); } } else { preg = NULL; } D2(bug("Register %d, place %08x, address %08x", reg, (unsigned int)((const char *)preg - (const char *)CONTEXT_REGS), addr)); if (transfer_type == TYPE_LOAD) { D(bug("LOAD instruction %X", instruction)); switch (instruction) { case INSTR_MOVZX16: #ifdef CPU_x86_64 if (rex.W) *((uae_u64 *)preg) = (uae_u16)SDL_SwapBE16(HWget_w(addr)); else #endif *((uae_u32 *)preg) = (uae_u16)SDL_SwapBE16(HWget_w(addr)); break; case INSTR_MOV8: *((uae_u8 *)preg) = HWget_b(addr); break; case INSTR_MOV32: #ifdef CPU_x86_64 if (size == 8) { /* TODO: needs HWget_q */ panicbug("MOV r64, m32 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 4) *((uae_u32 *)preg) = SDL_SwapBE32(HWget_l(addr)); else *((uae_u16 *)preg) = SDL_SwapBE16(HWget_w(addr)); break; case INSTR_ORMEM: #ifdef CPU_x86_64 if (size == 8) { /* TODO: needs HWget_q */ panicbug("OR r64, m64 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 1) { *((uae_u8 *)preg) |= HWget_b(addr); set_byte_eflags(*((uae_u8 *)preg), CONTEXT_NAME); } else if (size == 2) { *((uae_u16 *)preg) |= SDL_SwapBE16(HWget_w(addr)); set_word_eflags(*((uae_u16 *)preg), CONTEXT_NAME); } else /* if (size == 4) */ { *((uae_u32 *)preg) |= SDL_SwapBE32(HWget_l(addr)); set_long_eflags(*((uae_u32 *)preg), CONTEXT_NAME); } break; case INSTR_ANDMEM: #ifdef CPU_x86_64 if (size == 8) { /* TODO: needs HWget_q */ panicbug("AND r64, m64 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 1) { *((uae_u8 *)preg) &= HWget_b(addr); set_byte_eflags(*((uae_u8 *)preg), CONTEXT_NAME); } else if (size == 2) { *((uae_u16 *)preg) &= SDL_SwapBE16(HWget_w(addr)); set_word_eflags(*((uae_u16 *)preg), CONTEXT_NAME); } else /* if (size == 4) */ { *((uae_u32 *)preg) &= SDL_SwapBE32(HWget_l(addr)); set_long_eflags(*((uae_u32 *)preg), CONTEXT_NAME); } break; case INSTR_XORMEM: #ifdef CPU_x86_64 if (size == 8) { /* TODO: needs HWget_q */ panicbug("XOR r64, m64 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 1) { *((uae_u8 *)preg) ^= HWget_b(addr); set_byte_eflags(*((uae_u8 *)preg), CONTEXT_NAME); } else if (size == 2) { *((uae_u16 *)preg) ^= SDL_SwapBE16(HWget_w(addr)); set_word_eflags(*((uae_u16 *)preg), CONTEXT_NAME); } else /* if (size == 4) */ { *((uae_u32 *)preg) ^= SDL_SwapBE32(HWget_l(addr)); set_long_eflags(*((uae_u32 *)preg), CONTEXT_NAME); } break; case INSTR_MOVZX8: #ifdef CPU_x86_64 if (rex.W) *((uae_u64 *)preg) = (uae_u8)HWget_b(addr); else #endif if (size == 4) *((uae_u32 *)preg) = (uae_u8)HWget_b(addr); else *((uae_u16 *)preg) = (uae_u8)HWget_b(addr); break; case INSTR_MOVSX8: #ifdef CPU_x86_64 if (rex.W) *((uae_s64 *)preg) = (uae_s8)HWget_b(addr); else #endif if (size == 4) *((uae_s32 *)preg) = (uae_s8)HWget_b(addr); else *((uae_s16 *)preg) = (uae_s8)HWget_b(addr); break; case INSTR_MOVSX16: #ifdef CPU_x86_64 if (rex.W) *((uae_s64 *)preg) = (uae_s16)SDL_SwapBE16(HWget_w(addr)); else #endif *((uae_s32 *)preg) = (uae_s16)SDL_SwapBE16(HWget_w(addr)); break; #ifdef CPU_x86_64 case INSTR_MOVSX32: *((uae_s64 *)preg) = (uae_s32)SDL_SwapBE32(HWget_l(addr)); break; #endif case INSTR_ADDMEM: #ifdef CPU_x86_64 if (size == 8) { /* TODO: needs HWget_q */ panicbug("ADD r64, m64 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 1) { *((uae_u8 *)preg) += HWget_b(addr); set_byte_eflags(*((uae_u8 *)preg), CONTEXT_NAME); } else if (size == 2) { *((uae_u16 *)preg) += SDL_SwapBE16(HWget_w(addr)); set_byte_eflags(*((uae_u16 *)preg), CONTEXT_NAME); } else /* if (size == 4) */ { *((uae_u32 *)preg) += SDL_SwapBE32(HWget_l(addr)); set_byte_eflags(*((uae_u32 *)preg), CONTEXT_NAME); } break; case INSTR_SUBMEM: #ifdef CPU_x86_64 if (size == 8) { /* TODO: needs HWget_q */ panicbug("SUB r64, m64 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 1) { *((uae_u8 *)preg) -= HWget_b(addr); set_byte_eflags(*((uae_u8 *)preg), CONTEXT_NAME); } else if (size == 2) { *((uae_u16 *)preg) -= SDL_SwapBE16(HWget_w(addr)); set_word_eflags(*((uae_u16 *)preg), CONTEXT_NAME); } else /* if (size == 4) */ { *((uae_u32 *)preg) -= SDL_SwapBE32(HWget_l(addr)); set_long_eflags(*((uae_u32 *)preg), CONTEXT_NAME); } break; case INSTR_CMPMEM: #ifdef CPU_x86_64 if (size == 8) { /* TODO: needs HWget_q */ panicbug("CMP r64, m64 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 1) { imm = *((uae_u8 *)preg); imm -= HWget_b(addr); set_byte_eflags(imm, CONTEXT_NAME); } else if (size == 2) { imm = *((uae_u16 *)preg); imm -= SDL_SwapBE16(HWget_w(addr)); set_word_eflags(imm, CONTEXT_NAME); } else /* if (size == 4) */ { imm = *((uae_u32 *)preg); imm -= SDL_SwapBE32(HWget_l(addr)); set_long_eflags(imm, CONTEXT_NAME); } break; case INSTR_DIV8: pom1 = CONTEXT_AEAX & 0xffffUL; pom2 = HWget_b(addr); CONTEXT_AEAX = (CONTEXT_AEAX & ~0xffffUL) + ((pom1 % pom2) << 8) + (pom1 / pom2); break; case INSTR_IDIV8: pom1 = CONTEXT_AEAX & 0xffffUL; pom2 = HWget_b(addr); CONTEXT_AEAX = (CONTEXT_AEAX & ~0xffffUL) + (((uae_s8)pom1 % (uae_s8)pom2) << 8) + ((uae_s8)pom1 / (uae_s8)pom2); break; case INSTR_MUL8: pom1 = CONTEXT_AEAX & 0xff; pom2 = HWget_b(addr); CONTEXT_AEAX = (CONTEXT_AEAX & ~0xffffUL) + pom1 * pom2; if ((CONTEXT_AEAX & 0xff00) == 0) CONTEXT_AEFLAGS &= ~0x401; // CF + OF else CONTEXT_AEFLAGS |= 0x401; break; case INSTR_IMUL8: pom1 = CONTEXT_AEAX & 0xff; pom2 = HWget_b(addr); CONTEXT_AEAX = (CONTEXT_AEAX & ~0xffffUL) + (uae_s8)pom1 * (uae_s8)pom2; if ((CONTEXT_AEAX & 0xff00) == 0) CONTEXT_AEFLAGS &= ~0x401; // CF + OF else CONTEXT_AEFLAGS |= 0x401; break; default: D2(panicbug("Unknown load instruction %X", instruction)); abort(); } } else { D(bug("WRITE instruction %X", instruction)); switch (instruction) { case INSTR_MOV8: D2(bug("MOV value = $%x", *((uae_u8 *)preg))); HWput_b(addr, *((uae_u8 *)preg)); break; case INSTR_MOV32: #ifdef CPU_x86_64 if (rex.W) { /* TODO: needs HWput_q */ panicbug("MOV m32, r64 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 4) HWput_l(addr, SDL_SwapBE32(*((uae_u32 *)preg))); else HWput_w(addr, SDL_SwapBE16(*((uae_u16 *)preg))); break; case INSTR_ANDMEM: imm = HWget_b(addr); imm &= *((uae_u8 *)preg); HWput_b(addr, imm); set_byte_eflags(imm, CONTEXT_NAME); break; case INSTR_ADDMEM: #ifdef CPU_x86_64 if (size == 8) { /* TODO: needs HWput_q */ panicbug("ADD m64, r64 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 1) { imm = HWget_b(addr); imm += *((uae_u8 *)preg); HWput_b(addr, imm); set_byte_eflags(imm, CONTEXT_NAME); } else if (size == 2) { imm = SDL_SwapBE16(HWget_w(addr)); imm += *((uae_u16 *)preg); HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(SDL_SwapBE16(imm), CONTEXT_NAME); } else /* if (size == 4) */ { imm = SDL_SwapBE32(HWget_l(addr)); imm += *((uae_u32 *)preg); HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } break; case INSTR_SUBMEM: #ifdef CPU_x86_64 if (size == 8) { /* TODO: needs HWput_q */ panicbug("SUB m64, r64 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 1) { imm = HWget_b(addr); imm -= *((uae_u8 *)preg); HWput_b(addr, imm); set_byte_eflags(imm, CONTEXT_NAME); } else if (size == 2) { imm = SDL_SwapBE16(HWget_w(addr)); imm -= *((uae_u16 *)preg); HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(imm, CONTEXT_NAME); } else /* if (size == 4) */ { imm = SDL_SwapBE32(HWget_l(addr)); imm -= *((uae_u32 *)preg); HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } break; case INSTR_CMPMEM: #ifdef CPU_x86_64 if (size == 8) { /* TODO: needs HWget_q */ panicbug("CMP m64, r64 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 1) { imm = HWget_b(addr); imm -= *((uae_u8 *)preg); set_byte_eflags(imm, CONTEXT_NAME); } else if (size == 2) { imm = SDL_SwapBE16(HWget_w(addr)); imm -= *((uae_u16 *)preg); set_word_eflags(imm, CONTEXT_NAME); } else /* if (size == 4) */ { imm = SDL_SwapBE32(HWget_l(addr)); imm -= *((uae_u32 *)preg); set_long_eflags(imm, CONTEXT_NAME); } break; case INSTR_XORMEM: #ifdef CPU_x86_64 if (size == 8) { /* TODO: needs HWput_q */ panicbug("XOR m64, r64 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 1) { imm = HWget_b(addr); imm ^= *((uae_u8 *)preg); HWput_b(addr, imm); set_byte_eflags(imm, CONTEXT_NAME); } else if (size == 2) { imm = SDL_SwapBE16(HWget_w(addr)); imm ^= *((uae_u16 *)preg); HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(imm, CONTEXT_NAME); } else /* if (size == 4) */ { imm = SDL_SwapBE32(HWget_l(addr)); imm ^= *((uae_u32 *)preg); HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } break; case INSTR_ORMEM: #ifdef CPU_x86_64 if (size == 8) { /* TODO: needs HWput_q */ panicbug("OR m64, r64 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 1) { imm = HWget_b(addr); imm |= *((uae_u8 *)preg); HWput_b(addr, imm); set_byte_eflags(imm, CONTEXT_NAME); } else if (size == 2) { imm = SDL_SwapBE16(HWget_w(addr)); imm |= *((uae_u16 *)preg); HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(imm, CONTEXT_NAME); } else /* if (size == 4) */ { imm = SDL_SwapBE32(HWget_l(addr)); imm |= *((uae_u32 *)preg); HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } break; case INSTR_ADDIMM8: imm += HWget_b(addr); HWput_b(addr, imm); set_byte_eflags(imm, CONTEXT_NAME); break; case INSTR_ORIMM8: imm |= HWget_b(addr); HWput_b(addr, imm); set_byte_eflags(imm, CONTEXT_NAME); break; case INSTR_ANDIMM8: imm &= HWget_b(addr); HWput_b(addr, imm); set_byte_eflags(imm, CONTEXT_NAME); break; case INSTR_SUBIMM8: imm = HWget_b(addr) - imm; HWput_b(addr, imm); set_byte_eflags(imm, CONTEXT_NAME); break; case INSTR_XORIMM8: imm ^= HWget_b(addr); HWput_b(addr, imm); set_byte_eflags(imm, CONTEXT_NAME); break; case INSTR_CMPIMM8: imm = HWget_b(addr) - imm; set_byte_eflags(imm, CONTEXT_NAME); break; case INSTR_ADDIMM32: #ifdef CPU_x86_64 if (rex.W) { /* TODO: needs HWput_q */ panicbug("ADD m64, imm32 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 4) { imm += SDL_SwapBE32(HWget_l(addr)); HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } else { imm += SDL_SwapBE16(HWget_w(addr)); HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(imm, CONTEXT_NAME); } break; case INSTR_ORIMM32: #ifdef CPU_x86_64 if (rex.W) { /* TODO: needs HWput_q */ panicbug("OR m64, imm32 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 4) { imm |= SDL_SwapBE32(HWget_l(addr)); HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } else { imm |= SDL_SwapBE16(HWget_w(addr)); HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(imm, CONTEXT_NAME); } break; case INSTR_ANDIMM32: #ifdef CPU_x86_64 if (rex.W) { /* TODO: needs HWput_q */ panicbug("AND m64, imm32 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 4) { imm &= SDL_SwapBE32(HWget_l(addr)); HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } else { imm &= SDL_SwapBE16(HWget_w(addr)); HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(imm, CONTEXT_NAME); } break; case INSTR_SUBIMM32: #ifdef CPU_x86_64 if (rex.W) { /* TODO: needs HWput_q */ panicbug("SUB m64, imm32 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 4) { imm = SDL_SwapBE32(HWget_l(addr)) - imm; HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } else { imm = SDL_SwapBE16(HWget_w(addr)) - imm; HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(imm, CONTEXT_NAME); } break; case INSTR_XORIMM32: #ifdef CPU_x86_64 if (rex.W) { /* TODO: needs HWput_q */ panicbug("XOR m64, imm32 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 4) { imm ^= SDL_SwapBE32(HWget_l(addr)); HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } else { imm ^= SDL_SwapBE16(HWget_w(addr)); HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(imm, CONTEXT_NAME); } break; case INSTR_CMPIMM32: #ifdef CPU_x86_64 if (rex.W) { /* TODO: needs HWput_q */ panicbug("CMP m64, imm32 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 4) { imm = SDL_SwapBE32(HWget_l(addr)) - imm; set_long_eflags(imm, CONTEXT_NAME); } else { imm = SDL_SwapBE16(HWget_w(addr)) - imm; set_word_eflags(imm, CONTEXT_NAME); } break; case INSTR_ADDLIMM8: #ifdef CPU_x86_64 if (rex.W) { /* TODO: needs HWput_q */ panicbug("ADDL m64, imm8 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 4) { imm += (uae_s32)SDL_SwapBE32(HWget_l(addr)); HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } else { imm += (uae_s16)SDL_SwapBE16(HWget_w(addr)); HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(imm, CONTEXT_NAME); } break; case INSTR_ORLIMM8: #ifdef CPU_x86_64 if (rex.W) { /* TODO: needs HWput_q */ panicbug("ORL m64, imm8 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 4) { imm |= (uae_s32)SDL_SwapBE32(HWget_l(addr)); HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } else { imm |= (uae_s16)SDL_SwapBE16(HWget_w(addr)); HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(imm, CONTEXT_NAME); } break; case INSTR_ANDLIMM8: #ifdef CPU_x86_64 if (rex.W) { /* TODO: needs HWput_q */ panicbug("ANDL m64, imm8 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 4) { imm &= (uae_s32)SDL_SwapBE32(HWget_l(addr)); HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } else { imm &= (uae_s16)SDL_SwapBE16(HWget_w(addr)); HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(imm, CONTEXT_NAME); } break; case INSTR_SUBLIMM8: #ifdef CPU_x86_64 if (rex.W) { /* TODO: needs HWput_q */ panicbug("SUBL m64, imm8 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 4) { imm = (uae_s32)SDL_SwapBE32(HWget_l(addr)) - imm; HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } else { imm = (uae_s16)SDL_SwapBE16(HWget_w(addr)) - imm; HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(imm, CONTEXT_NAME); } break; case INSTR_XORLIMM8: #ifdef CPU_x86_64 if (rex.W) { /* TODO: needs HWput_q */ panicbug("ANDL m64, imm8 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 4) { imm ^= (uae_s32)SDL_SwapBE32(HWget_l(addr)); HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } else { imm ^= (uae_s16)SDL_SwapBE16(HWget_w(addr)); HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(imm, CONTEXT_NAME); } break; case INSTR_CMPLIMM8: #ifdef CPU_x86_64 if (rex.W) { /* TODO: needs HWput_q */ panicbug("CMP m64, imm8 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 4) { imm = (uae_s32)SDL_SwapBE32(HWget_l(addr)) - imm; set_long_eflags(imm, CONTEXT_NAME); } else { imm = (uae_s16)SDL_SwapBE16(HWget_w(addr)) - imm; set_word_eflags(imm, CONTEXT_NAME); } break; case INSTR_MOVIMM8: HWput_b(addr, (uae_u8)imm); break; case INSTR_MOVIMM32: if (size == 2) HWput_w(addr, (uae_u16)SDL_SwapBE16(imm)); else HWput_l(addr, (uae_u32)SDL_SwapBE32(imm)); break; case INSTR_TESTIMM8: imm &= HWget_b(addr); set_byte_eflags(imm, CONTEXT_NAME); break; case INSTR_NOTMEM: #ifdef CPU_x86_64 if (size == 8) { /* TODO: needs HWput_q */ panicbug("NOT m64 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 1) { HWput_b(addr, ~(uae_u8)HWget_b(addr)); } else if (size == 2) { HWput_w(addr, SDL_SwapBE16(~(uae_u16)SDL_SwapBE16(HWget_w(addr)))); } else /* if (size == 4) */ { HWput_l(addr, SDL_SwapBE32(~(uae_u32)SDL_SwapBE32(HWget_l(addr)))); } /* eflags not affected */ break; case INSTR_NEGMEM: #ifdef CPU_x86_64 if (size == 8) { /* TODO: needs HWput_q */ panicbug("NEG m64 - unsupported mode: i[1-6]=%02x %02x %02x %02x %02x %02x", addr_instr[1], addr_instr[2], addr_instr[3], addr_instr[4], addr_instr[5], addr_instr[6]); unknown_instruction(); } else #endif if (size == 1) { imm = ~(uae_u8)HWget_b(addr) + 1; HWput_b(addr, imm); set_byte_eflags(imm, CONTEXT_NAME); } else if (size == 2) { imm = ~(uae_u16)SDL_SwapBE16(HWget_w(addr)) + 1; HWput_w(addr, SDL_SwapBE16(imm)); set_word_eflags(imm, CONTEXT_NAME); } else /* if (size == 4) */ { imm = ~(uae_u32)SDL_SwapBE32(HWget_l(addr)) + 1; HWput_l(addr, SDL_SwapBE32(imm)); set_long_eflags(imm, CONTEXT_NAME); } if (imm == 0) CONTEXT_AEFLAGS &= ~0x1; else CONTEXT_AEFLAGS |= 0x1; break; default: abort(); } } D(bug("Access handled")); CONTEXT_AEIP += len; #ifdef CPU_x86_64 D2(bug("Next instruction on 0x%016lx", (uintptr)CONTEXT_AEIP)); #else D2(bug("Next instruction on 0x%08x", (uintptr)CONTEXT_AEIP)); #endif in_handler -= 1; return; buserr: #endif /* HW_SIGSEGV */ BUS_ERROR(addr); } #ifdef NO_NESTED_SIGSEGV JMP_BUF sigsegv_env; static void __attribute__((__noreturn__)) atari_bus_fault(void) { breakpt(); THROW(2); } static __attribute_noinline__ void handle_access_fault(CONTEXT_ATYPE CONTEXT_NAME, volatile memptr faultaddr) { if (SETJMP(sigsegv_env) != 0) { /* * we get back here by a LONGJMP in BUS_ERROR, * triggered by one of the HWget_x/HWput_x calls * in the handler above */ D(bug("Atari bus error (%s)", (regs.mmu_fault_addr < 0x00f00000) || (regs.mmu_fault_addr > 0x00ffffff) ? "mem" : "hw")); CONTEXT_AEIP = (uintptr)atari_bus_fault; return; } handle_access_fault2(CONTEXT_NAME, faultaddr); } #endif /* NO_NESTED_SIGSEGV */ aranym-1.1.0/src/Unix/parameters_unix.cpp0000664000175000017500000000036313454637621016627 0ustar joyjoy/* MJ 2001 */ #include "sysdeps.h" #include "tools.h" #include "parameters.h" #define DEBUG 0 #include "debug.h" # include int get_geometry(const char *dev_path, geo_type geo) { DUNUSED(dev_path); DUNUSED(geo); return -1; } aranym-1.1.0/src/Unix/main_unix.cpp0000664000175000017500000003743513454637621015422 0ustar joyjoy/* * main_unix.cpp - Startup code for Unix * * Copyright (c) 2000-2006 ARAnyM developer team (see AUTHORS) * * Authors: * MJ Milan Jurik * Joy Petr Stehlik * * Originally derived from Basilisk II (C) 1997-2000 Christian Bauer * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #if defined _WIN32 || defined(OS_cygwin) # define SDL_MAIN_HANDLED #endif #include "sysdeps.h" #include "cpu_emulation.h" #include "main.h" #include "input.h" #include "vm_alloc.h" #include "hardware.h" #include "parameters.h" #include "newcpu.h" #if defined _WIN32 || defined(OS_cygwin) #include "win32_supp.h" #endif #ifdef SDL_GUI #include "sdlgui.h" #include "dlgAlert.h" #endif #define USE_VALGRIND 0 #if USE_VALGRIND #include #endif #ifdef HAVE_INTTYPES_H #include #endif #define DEBUG 0 #include "debug.h" # include # include # include # include #include "version_date.h" #include "version.h" #ifdef VERSION_DATE #define CVS_DATE "git " VERSION_DATE #else #define CVS_DATE "git" #endif #define str(x) _stringify (x) #define _stringify(x) #x #define VERSION_STRING NAME_STRING " " str (VER_MAJOR) "." str (VER_MINOR) "." str (VER_MICRO) VER_STATUS char const name_string[] = NAME_STRING; char const version_string[] = VERSION_STRING; #ifndef HAVE_SIGHANDLER_T typedef void (*sighandler_t)(int); #endif #ifdef OS_darwin extern void refreshMenuKeys(); #endif #ifndef HAVE_STRDUP extern "C" char *strdup(const char *s) { char *n = (char *)malloc(strlen(s) + 1); strcpy(n, s); return n; } #endif #ifdef OS_mingw # ifndef HAVE_GETTIMEOFDAY extern "C" void gettimeofday(struct timeval *p, void *tz /*IGNORED*/) { union { long long ns100; FILETIME ft; } _now; GetSystemTimeAsFileTime(&(_now.ft)); p->tv_usec=(long)((_now.ns100/10LL)%1000000LL); p->tv_sec=(long)((_now.ns100-(116444736000000000LL))/10000000LL); } # endif #endif void real_segmentationfault(void) { grabMouse(SDL_FALSE); panicbug("Gotcha! Illegal memory access. Atari PC = $%x", (unsigned)showPC()); #ifdef FULL_HISTORY ndebug::showHistory(20, false); m68k_dumpstate (stderr, NULL); #else panicbug("If the Full History was enabled you would see the last 20 instructions here."); #endif exit(EXIT_FAILURE); } #ifdef OS_irix void segmentationfault() #else void segmentationfault(int) #endif { real_segmentationfault(); } #if FIXED_ADDRESSING bool allocate_all_memory(uintptr fmemory, bool quiet) #else bool allocate_all_memory(bool quiet) #endif { UNUSED(quiet); #if DIRECT_ADDRESSING || FIXED_ADDRESSING #if FIXED_ADDRESSING if (vm_acquire_fixed((void *)fmemory, RAMSize + ROMSize + HWSize + FastRAMSize + RAMEnd) == false) { if (!quiet) panicbug("Not enough free memory (ST-RAM 0x%08x + TT-RAM 0x%08x).", RAMSize, FastRAMSize); return false; } RAMBaseHost = (uint8 *)fmemory; ROMBaseHost = RAMBaseHost + ROMBase; HWBaseHost = RAMBaseHost + HWBase; FastRAMBaseHost = RAMBaseHost + FastRAMBase; # ifdef EXTENDED_SIGSEGV if (vm_acquire_fixed((void *)(fmemory + ~0xffffffL), RAMSize + ROMSize + HWSize) == false) { if (!quiet) panicbug("Not enough free memory (protected mirror RAM 0x%08x-0x%08x).", (unsigned int)(fmemory + ~0xffffffL), (unsigned int)(fmemory + ~0xffffffL + RAMSize + ROMSize + HWSize)); return false; } # ifdef HW_SIGSEGV if ((FakeIOBaseHost = (uint8 *)vm_acquire(0x00100000)) == VM_MAP_FAILED) { if (!quiet) panicbug("Not enough free memory (Shadow IO)."); return false; } # endif /* HW_SISEGV */ # endif /* EXTENDED_SIGSEGV */ #else RAMBaseHost = (uint8*)vm_acquire(RAMSize + ROMSize + HWSize + FastRAMSize + RAMEnd); if (RAMBaseHost == VM_MAP_FAILED) { if (!quiet) panicbug("Not enough free memory (ST-RAM 0x%08x + TT-RAM 0x%08x).", RAMSize, FastRAMSize); return false; } ROMBaseHost = RAMBaseHost + ROMBase; HWBaseHost = RAMBaseHost + HWBase; FastRAMBaseHost = RAMBaseHost + FastRAMBase; #endif InitMEM(); D(bug("ST-RAM at %p - %p (0x%08x - 0x%08x)", RAMBaseHost, RAMBaseHost + RAMSize, RAMBase, RAMBase + RAMSize)); D(bug("TOS ROM at %p - %p (0x%08x - 0x%08x)", ROMBaseHost, ROMBaseHost + ROMSize, ROMBase, ROMBase + ROMSize)); D(bug("HW space at %p - %p (0x%08x - 0x%08x)", HWBaseHost, HWBaseHost + HWSize, HWBase, HWBase + HWSize)); D(bug("TT-RAM at %p - %p (0x%08x - 0x%08x)", FastRAMBaseHost, FastRAMBaseHost + FastRAMSize, FastRAMBase, FastRAMBase + FastRAMSize)); if (VideoRAMBaseHost) { D(bug("Video-RAM at %p - %p (0x%08x - 0x%08x)", VideoRAMBaseHost, VideoRAMBaseHost + ARANYMVRAMSIZE, VideoRAMBase, VideoRAMBase + ARANYMVRAMSIZE)); } # ifdef EXTENDED_SIGSEGV # ifdef HW_SIGSEGV D(bug("FakeIOspace %p", FakeIOBaseHost)); # endif # ifdef RAMENDNEEDED D(bug("RAMEnd needed")); # endif # endif /* EXTENDED_SIGSEGV */ #endif /* DIRECT_ADDRESSING || FIXED_ADDRESSING */ return true; } void release_all_memory(void) { #if DIRECT_ADDRESSING || FIXED_ADDRESSING if (RAMBaseHost != VM_MAP_FAILED && RAMBaseHost != NULL) { #ifdef RAMENDNEEDED vm_release(RAMBaseHost + RAMSize + ROMSize + HWSize + FastRAMSize, RAMEnd); #endif vm_release(RAMBaseHost, RAMSize); #if FIXED_ADDRESSING && defined(EXTENDED_SIGSEGV) void *mirror = (void *)(RAMBaseHost + ~0xffffffL); vm_release(mirror, RAMSize + ROMSize + HWSize); #ifdef HW_SIGSEGV vm_release((void *)FakeIOBaseHost, 0x00100000); #endif #endif } RAMBaseHost = NULL; #ifdef HW_SIGSEGV FakeIOBaseHost = NULL; #endif if (ROMBaseHost != VM_MAP_FAILED && ROMBaseHost != NULL) { vm_release(ROMBaseHost, ROMSize); } ROMBaseHost = NULL; if (HWBaseHost != VM_MAP_FAILED && HWBaseHost != NULL) { vm_release(HWBaseHost, HWSize); } HWBaseHost = NULL; if (FastRAMBaseHost != VM_MAP_FAILED && FastRAMBaseHost != NULL) { vm_release(FastRAMBaseHost, FastRAMSize); } FastRAMBaseHost = NULL; #else free(RAMBaseHost); RAMBaseHost = NULL; #endif } #ifndef EXTENDED_SIGSEGV void install_sigsegv() { signal(SIGSEGV, segmentationfault); } void uninstall_sigsegv() { signal(SIGSEGV, SIG_DFL); } #endif static bool install_signal_handler(bool quiet) { if (!quiet) { #ifdef HAVE_SIGACTION { struct sigaction sa; memset(&sa, 0, sizeof(sa)); sigemptyset(&sa.sa_mask); sa.sa_handler = (void (*)(int))setactvdebug; sa.sa_flags = 0; sigaction(SIGINT, &sa, NULL); } #else signal(SIGINT, (void (*)(int))setactvdebug); #endif } #ifdef EXTENDED_SIGSEGV if (vm_protect(ROMBaseHost, ROMSize, VM_PAGE_READ)) { if (!quiet) panicbug("Couldn't protect ROM"); return false; } D(bug("Protected ROM at %p - %p (0x%08x - 0x%08x)", ROMBaseHost, ROMBaseHost + ROMSize, ROMBase, ROMBase + ROMSize)); #if USE_VALGRIND VALGRIND_MAKE_MEM_DEFINED(ROMBaseHost, ROMSize); #endif # ifdef RAMENDNEEDED if (vm_protect(ROMBaseHost + ROMSize + HWSize + FastRAMSize, RAMEnd, VM_PAGE_NOACCESS)) { if (!quiet) panicbug("Couldn't protect RAMEnd"); return false; } D(bug("Protected RAMEnd at %p - %p (0x%08x - 0x%08x)", ROMBaseHost + ROMSize + HWSize + FastRAMSize, ROMBaseHost + ROMSize + HWSize + FastRAMSize + RAMEnd, ROMBase + ROMSize + HWSize + FastRAMSize, ROMBase + ROMSize + HWSize + FastRAMSize + RAMEnd)); #if USE_VALGRIND VALGRIND_MAKE_MEM_DEFINED(ROMBaseHost + ROMSize + HWSize + FastRAMSize, RAMEnd); #endif # endif # ifdef HW_SIGSEGV if (vm_protect(HWBaseHost, HWSize, VM_PAGE_NOACCESS)) { if (!quiet) panicbug("Couldn't set HW address space"); return false; } D(bug("Protected HW space at %p - %p (0x%08x - 0x%08x)", HWBaseHost, HWBaseHost + HWSize, HWBase, HWBase + HWSize)); if (vm_protect(RAMBaseHost + ~0xffffffUL, 0x1000000, VM_PAGE_NOACCESS)) { if (!quiet) panicbug("Couldn't set mirror address space"); return false; } D(bug("Protected mirror space at %p - %p (0x%08x - 0x%08x)", RAMBaseHost + ~0xffffffUL, RAMBaseHost + ~0xffffffUL + RAMSize + ROMSize + HWSize, RAMBase + ~0xffffffU, RAMBase + ~0xffffffU + RAMSize + ROMSize + HWSize)); #if USE_VALGRIND VALGRIND_MAKE_MEM_DEFINED(HWBaseHost, HWSize); VALGRIND_MAKE_MEM_DEFINED(RAMBaseHost + ~0xffffffUL, 0x1000000); #endif # endif /* HW_SIGSEGV */ #ifdef HAVE_SBRK D(bug("Program break %p", sbrk(0))); #endif #endif /* EXTENDED_SIGSEGV */ return true; } static void remove_signal_handler() { uninstall_sigsegv(); D(bug("Sigsegv handler removed")); } #if FIXED_ADDRESSING #include static volatile int try_gotsig; static sigjmp_buf seg_jmpbuf; #ifdef OS_irix static void try_segfault() #else static void try_segfault(int) #endif { try_gotsig = 1; siglongjmp(seg_jmpbuf, 1); } static void try_release(uintptr addr, size_t size) { if (RAMBaseHost != VM_MAP_FAILED) { # ifdef EXTENDED_SIGSEGV /* release mirror RAM */ void *mirror = (void *)(addr + ~0xffffffL); if (mirror != 0 && mirror != VM_MAP_FAILED) vm_release(mirror, RAMSize + ROMSize + HWSize); # ifdef HW_SIGSEGV vm_release((void *)FakeIOBaseHost, 0x00100000); # endif #endif vm_release((void *)addr, size); } } static bool try_acquire(uintptr addr, size_t ttram_size) { size_t const stram_size = RAMSize + ROMSize + HWSize; size_t try_size = stram_size + ttram_size + RAMEnd; bool const quiet = true; FastRAMSize = ttram_size; #ifdef HW_SIGSEGV FakeIOBaseHost = (uint8 *)VM_MAP_FAILED; #endif RAMBaseHost = (uint8 *)VM_MAP_FAILED; try_gotsig = 0; if (sigsetjmp(seg_jmpbuf, 1) != 0) { printf("got segfault\n"); fflush(stdout); try_release(addr, try_size); return false; } signal(SIGSEGV, (void (*)(int))try_segfault); #ifdef SIGBUS signal(SIGBUS, (void (*)(int))try_segfault); #endif if (allocate_all_memory(addr, quiet) == false) { try_release(addr, try_size); return false; } if (install_signal_handler(quiet) == false) { try_release(addr, try_size); return false; } try_release(addr, try_size); if (try_gotsig) return false; return true; } void vm_probe_fixed(void) { // This might need tweaking // 0x01000000 gives SIGSEGV without being catched by handler on linux uintptr_t const probestart = 0x04000000; uintptr_t const probeend = 0xfff00000; size_t const step = 0x00100000; size_t const mapsize = (probeend - probestart) / step; size_t const reserved = RAMSize + ROMSize + HWSize + RAMEnd; size_t ttram_size = 0; size_t best_size = 0; uintptr best_addr = 0; uintptr addr; signed char *maptab; size_t i, j; maptab = new signed char[mapsize]; memset(maptab, 0, mapsize); vm_init(); /* no install_sigsegv() here; catch segfaults seperately */ printf("probing available memory ranges (this may take a while)\n"); /* * try to blacklist ranges of already existing mappings * that might overlap. Attempting to use them * might result in un-catchable segmentation faults */ { FILE *fp = fopen("/proc/self/maps", "r"); if (fp != NULL) { char buf[1024]; uintptr_t lower, upper; while (fgets(buf, sizeof(buf), fp) != NULL) { if (sscanf(buf, "%" SCNxPTR "-%" SCNxPTR, &lower, &upper) == 2) { lower = lower & ~(step - 1); upper = (upper + step - 1) & ~(step - 1); if (lower < probeend) { if (lower >= reserved) addr = lower - reserved; else addr = lower; for (; addr < (upper + reserved) && addr < probeend; addr += step) { if (addr >= probestart) { i = (addr - probestart) / step; if (i < mapsize) { // printf("will skip 0x%08" PRIxPTR "-0x%08" PRIxPTR "\n", addr, addr + step); maptab[i] = -1; } } } } } } fclose(fp); } } fflush(stdout); for (addr = probestart; addr < probeend; addr += step) { i = (addr - probestart) / step;; if (maptab[i] >= 0 && try_acquire(addr, ttram_size)) maptab[i] = 1; } for (i = 0; i < mapsize; i++) { if (maptab[i] > 0) { for (j = i + 1; j < mapsize; j++) if (maptab[j] <= 0) break; size_t size = (j - i) * step; addr = probestart + i * step; size_t ttram_size; if (size > reserved) ttram_size = size - reserved; else ttram_size = 0; if (ttram_size > best_size) { best_addr = addr; best_size = ttram_size; } printf("available: 0x%08x - 0x%08x (%uMB TT-RAM)\n", (unsigned int)addr, (unsigned int)(addr + size), (unsigned int)(ttram_size / 0x00100000)); i = j - 1; } } if (best_addr) guialert("suggested --fixedmem setting: 0x%08x (%uMB TT-RAM)", (unsigned int)best_addr, (unsigned int)(best_size / 0x00100000)); else guialert("no suitable address to allow TT-RAM found!"); delete [] maptab; } #endif void vm_probe_fixed_hint(void) { #if FIXED_ADDRESSING /* * give a hint for the command line option if memory allocation fails * (with FIXED_ADDRESSING, this is usually not caused by missing memory, * but overlapping of virtual addresses due to the --fixedmem setting) */ guialert("failed to acquire virtual memory at 0x%08x\n" "try running 'aranym --probe-fixed'", (unsigned int) fixed_memory_offset); #endif } #if !defined(OS_darwin) && !defined(_WIN32) && !defined(__CYGWIN__) void guialert(const char *fmt, ...) { va_list args; va_start(args, fmt); vfprintf(stderr, fmt, args); fputs("\n", stderr); va_end(args); #ifdef SDL_GUI char *buf = NULL; va_start(args, fmt); int ret = vasprintf(&buf, fmt, args); va_end(args); if (ret >= 0) { startupGUI = true; startupAlert = buf; } #else // FIXME: assuming some unix; use external tool to display alert #endif } #endif /* we don't link to SDL_main */ #undef main #if defined(__MACOS__) || defined(__MACOSX__) /* on macOS, the systems entry point is in SDLMain.M */ #define main SDL_main #endif /* * Main program */ int main(int argc, char **argv) { #if defined _WIN32 || defined(OS_cygwin) SDL_SetMainReady(); #endif // Initialize variables RAMBaseHost = NULL; ROMBaseHost = NULL; HWBaseHost = NULL; FastRAMBaseHost = NULL; // remember program name program_name = argv[0]; #ifdef DEBUGGER ndebug::init(); #endif // display version string on console (help when users provide debug info) infoprint("%s", version_string); // parse command line switches if (!decode_switches(argc, argv)) exit(EXIT_FAILURE); #if DIRECT_ADDRESSING || FIXED_ADDRESSING // Initialize VM system vm_init(); #endif #if FIXED_ADDRESSING if (!allocate_all_memory(fixed_memory_offset, false)) #else if (!allocate_all_memory(false)) #endif { vm_probe_fixed_hint(); QuitEmulator(); } // Initialize everything D(bug("Initializing All Modules...")); if (!InitAll()) QuitEmulator(); D(bug("Initialization complete")); install_sigsegv(); D(bug("Sigsegv handler installed")); if (!install_signal_handler(false)) { vm_probe_fixed_hint(); QuitEmulator(); } #ifdef OS_darwin refreshMenuKeys(); #endif // Start 68k and jump to ROM boot routine D(bug("Starting emulation...")); Start680x0(); // returning from emulation after the NMI remove_signal_handler(); QuitEmulator(exit_val); return exit_val; } /* * Quit emulator */ void QuitEmulator(int exitcode) { D(bug("QuitEmulator")); #if EMULATED_68K // Exit 680x0 emulation Exit680x0(); #endif ExitAll(); // Free ROM/RAM areas release_all_memory(); // Exit VM wrappers vm_exit(); exit(exitcode); // the Quit is real } aranym-1.1.0/src/Unix/linux/0000775000175000017500000000000013454637641014054 5ustar joyjoyaranym-1.1.0/src/Unix/linux/sigsegv_linux_x86.cpp0000664000175000017500000000721113454637621020152 0ustar joyjoy/* * sigsegv_linux_x86.cpp - x86/x86_64 Linux SIGSEGV handler * * Copyright (c) 2001-2005 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Bernie Meyer's UAE-JIT and Gwenole Beauchesne's Basilisk II-JIT * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * 2013-06-16 : Adapted to 64 Bit Linux - Jens Heitmann * 2014-07-05 : Merged with 64bit version, * lots of fixes - Thorsten Otto * */ #include "sysdeps.h" #include "cpu_emulation.h" #define DEBUG 0 #include "debug.h" #include #ifdef CPU_i386 #define REG_RIP REG_EIP #define REG_RAX REG_EAX #define REG_RBX REG_EBX #define REG_RCX REG_ECX #define REG_RDX REG_EDX #define REG_RBP REG_EBP #define REG_RSI REG_ESI #define REG_RDI REG_EDI #define REG_RSP REG_ESP #endif #if defined(CPU_i386) || defined(CPU_x86_64) #define CONTEXT_NAME ucp #define CONTEXT_TYPE volatile ucontext_t #define CONTEXT_ATYPE CONTEXT_TYPE * #define CONTEXT_REGS CONTEXT_NAME->uc_mcontext.gregs #define CONTEXT_AEFLAGS CONTEXT_REGS[REG_EFL] #define CONTEXT_AEIP CONTEXT_REGS[REG_RIP] #define CONTEXT_AEAX CONTEXT_REGS[REG_RAX] #define CONTEXT_AEBX CONTEXT_REGS[REG_RBX] #define CONTEXT_AECX CONTEXT_REGS[REG_RCX] #define CONTEXT_AEDX CONTEXT_REGS[REG_RDX] #define CONTEXT_AEBP CONTEXT_REGS[REG_RBP] #define CONTEXT_AESI CONTEXT_REGS[REG_RSI] #define CONTEXT_AEDI CONTEXT_REGS[REG_RDI] #endif #include "sigsegv_common_x86.h" static void segfault_vec(int /* sig */, siginfo_t *sip, void *_ucp) { CONTEXT_ATYPE CONTEXT_NAME = (CONTEXT_ATYPE) _ucp; uintptr faultaddr = (uintptr)sip->si_addr; /* CONTEXT_REGS[REG_CR2] */ memptr addr = (memptr)(faultaddr - fixed_memory_offset); #if DEBUG if (addr >= 0xff000000) addr &= 0x00ffffff; if (addr < 0x00f00000 || addr > 0x00ffffff) // YYY bug("\nsegfault: pc=%08x, " REG_RIP_NAME " =%p, addr=%p (0x%08x)", m68k_getpc(), (void *)CONTEXT_AEIP, sip->si_addr, addr); if (faultaddr < (uintptr)(fixed_memory_offset - 0x1000000UL) #ifdef CPU_x86_64 || faultaddr >= ((uintptr)fixed_memory_offset + 0x100000000UL) #endif ) { #ifdef HAVE_DISASM_X86 if (CONTEXT_AEIP != 0) { char buf[256]; x86_disasm((const uint8 *)CONTEXT_AEIP, buf, 1); panicbug("%s", buf); } #endif // raise(SIGBUS); } #endif if (faultaddr == 0 || CONTEXT_AEIP == 0) { real_segmentationfault(); /* not reached (hopefully) */ return; } handle_access_fault(CONTEXT_NAME, addr); } void install_sigsegv() { struct sigaction act; memset(&act, 0, sizeof(act)); sigemptyset(&act.sa_mask); act.sa_sigaction = segfault_vec; act.sa_flags = SA_SIGINFO; sigaction(SIGSEGV, &act, NULL); #if defined(CPU_x86_64) /* XXX is this really neccessary? */ sigaction(SIGILL, &act, NULL); #endif } void uninstall_sigsegv() { signal(SIGSEGV, SIG_DFL); #ifdef HW_SIGSEGV_STATISTICS for (unsigned int i = 0; i < 256; i++) if (x86_opcodes[i] != 0) bug("opcodes: %02x = %lu", i, x86_opcodes[i]); #endif } aranym-1.1.0/src/Unix/linux/sigsegv_linux_arm.cpp0000664000175000017500000002035713454637621020312 0ustar joyjoy/* * sigsegv_linux_arm.cpp - x86_64 Linux SIGSEGV handler * * Copyright (c) 2014 Jens Heitmann ARAnyM dev team (see AUTHORS) * * Inspired by Bernie Meyer's UAE-JIT and Gwenole Beauchesne's Basilisk II-JIT * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #include "sysdeps.h" #include "cpu_emulation.h" #include "disasm-glue.h" #define DEBUG 0 #include "debug.h" #ifdef USE_JIT extern void compiler_status(); # ifdef JIT_DEBUG extern void compiler_dumpstate(); # endif #endif enum transfer_type_t { TYPE_UNKNOWN, TYPE_LOAD, TYPE_STORE }; enum type_size_t { SIZE_UNKNOWN, SIZE_BYTE, SIZE_WORD, SIZE_INT }; #include #ifndef HAVE_SIGHANDLER_T typedef void (*sighandler_t)(int); #endif int in_handler = 0; enum { ARM_REG_R0 = 0, ARM_REG_R1 = 1, ARM_REG_R2 = 2, ARM_REG_R3 = 3, ARM_REG_R4 = 4, ARM_REG_R5 = 5, ARM_REG_R6 = 6, ARM_REG_R7 = 7, ARM_REG_R8 = 8, ARM_REG_R9 = 9, ARM_REG_R10 = 10, ARM_REG_SL = ARM_REG_R10, ARM_REG_R11 = 11, ARM_REG_FP = ARM_REG_R11, ARM_REG_R12 = 12, ARM_REG_IP = ARM_REG_R12, ARM_REG_R13 = 13, ARM_REG_SP = ARM_REG_R13, ARM_REG_R14 = 14, ARM_REG_LR = ARM_REG_R14, ARM_REG_R15 = 15, ARM_REG_PC = ARM_REG_R15, ARM_REG_CPSR = 16, ARM_REG_NUM }; static const char *const reg_names[] = { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "sl", "fp", "ip", "sp", "lr", "pc", "cpsr" }; static inline void unknown_instruction(const unsigned long *pregs) { uint32_t *pc = (uint32_t *)pregs[ARM_REG_PC]; const uint32 instr = pc[0]; panicbug("Unknown instruction %08x!", instr); #ifdef HAVE_DISASM_ARM { char buf[256]; const uint8 *ainstr = (const uint8 *)pc; arm_disasm(ainstr, buf, 1); panicbug("%s", buf); } #endif for (int i = 0; i < ARM_REG_NUM; i++) { bug("%s : %08lx", reg_names[i], pregs[i]); } #ifdef USE_JIT compiler_status(); # ifdef JIT_DEBUG compiler_dumpstate(); # endif #endif abort(); } #ifdef NO_NESTED_SIGSEGV static __attribute_noinline__ void handle_arm_instruction2(unsigned long *pregs, memptr faultaddr) #else static __attribute_noinline__ void handle_arm_instruction(unsigned long *pregs, memptr faultaddr) #endif { memptr addr = faultaddr; uint32_t *pc = (uint32_t *)pregs[ARM_REG_PC]; const uint32_t opcode = pc[0]; D(bug("PC: %p [%08x] %08x", pc, opcode, faultaddr)); if (in_handler > 0) { panicbug("Segmentation fault in handler :-(, faultaddr=0x%08x", faultaddr); abort(); } in_handler += 1; #ifdef USE_JIT /* does not compile with default configure */ D(compiler_status()); #endif D(bug("BUS ERROR fault address is %08x", addr)); D(bug("PC %08x", m68k_getpc())); #ifdef HW_SIGSEGV transfer_type_t transfer_type = TYPE_UNKNOWN; int transfer_size = SIZE_UNKNOWN; enum { SIGNED, UNSIGNED }; int style = UNSIGNED; // Handle load/store instructions only switch ((opcode >> 25) & 7) { case 0: // Halfword and Signed Data Transfer (LDRH, STRH, LDRSB, LDRSH) // Determine transfer size (S/H bits) switch ((opcode >> 5) & 3) { case 0: // SWP instruction panicbug("FIXME: SWP Instruction"); unknown_instruction(pregs); break; case 1: // Unsigned halfwords (LDRH/STRH) transfer_size = SIZE_WORD; break; case 2: // Signed byte (LDRSB) style = SIGNED; transfer_size = SIZE_BYTE; break; case 3: // Signed halfwords (LDRSH) style = SIGNED; transfer_size = SIZE_WORD; break; } break; case 2: // Single Data Transfer (LDR, STR immediate) case 3: // Single Data Transfer (LDR, STR register) style = UNSIGNED; // Determine transfer size (B bit) if (((opcode >> 22) & 1) == 1) transfer_size = SIZE_BYTE; else transfer_size = SIZE_INT; break; case 4: // LDM/STM case 5: // B case 6: // LDC/STC case 7: // CDP default: panicbug("FIXME: support load/store multiple?"); unknown_instruction(pregs); break; } // Check for invalid transfer size (SWP instruction?) if (transfer_size == SIZE_UNKNOWN) { panicbug("Invalid transfer size"); unknown_instruction(pregs); } // Determine transfer type (L bit) if (((opcode >> 20) & 1) == 1) transfer_type = TYPE_LOAD; else transfer_type = TYPE_STORE; int rt = (opcode >> 12) & 0xf; #if DEBUG bug("%s %s register %s", transfer_size == SIZE_BYTE ? "byte" : transfer_size == SIZE_WORD ? "word" : transfer_size == SIZE_INT ? "long" : "unknown", transfer_type == TYPE_LOAD ? "load to" : "store from", reg_names[rt]); #ifdef HAVE_DISASM_ARM { char buf[256]; arm_disasm((const uint8_t *)pc, buf, 1); bug("%s", buf); } #endif // for (int i = 0; i < ARM_REG_NUM; i++) { // bug("%s : %08lx", reg_names[i], pregs[i]); // } #endif if (addr >= 0xff000000) addr &= 0x00ffffff; if ((addr < 0x00f00000) || (addr > 0x00ffffff)) goto buserr; if (transfer_type == TYPE_LOAD) { switch(transfer_size) { case SIZE_BYTE: pregs[rt] = style == SIGNED ? (uae_s8)HWget_b(addr) : (uae_u8)HWget_b(addr); break; case SIZE_WORD: pregs[rt] = do_byteswap_16(style == SIGNED ? (uae_s16)HWget_w(addr) : (uae_u16)HWget_w(addr)); break; case SIZE_INT: pregs[rt] = do_byteswap_32(HWget_l(addr)); break; } } else { switch(transfer_size) { case SIZE_BYTE: HWput_b(addr, pregs[rt]); break; case SIZE_WORD: HWput_w(addr, do_byteswap_16(pregs[rt])); break; case SIZE_INT: HWput_l(addr, do_byteswap_32(pregs[rt])); break; } } pregs[ARM_REG_PC] += 4; D(bug("processed: %08lx", pregs[ARM_REG_PC])); in_handler--; return; buserr: #endif /* HW_SIGSEGV */ BUS_ERROR(addr); } #ifdef NO_NESTED_SIGSEGV JMP_BUF sigsegv_env; static void __attribute__((__noreturn__)) atari_bus_fault(void) { breakpt(); THROW(2); } static __attribute_noinline__ void handle_arm_instruction(unsigned long *pregs, volatile memptr faultaddr) { if (SETJMP(sigsegv_env) != 0) { /* * we get back here by a LONGJMP in BUS_ERROR, * triggered by one of the HWget_x/HWput_x calls * in the handler above */ D(bug("Atari bus error (%s)", (regs.mmu_fault_addr < 0x00f00000) || (regs.mmu_fault_addr > 0x00ffffff) ? "mem" : "hw")); pregs[ARM_REG_PC] = (uintptr)atari_bus_fault; return; } handle_arm_instruction2(pregs, faultaddr); } #endif /* NO_NESTED_SIGSEGV */ static void segfault_vec(int /*sig*/, siginfo_t *sip, void *uc) { mcontext_t *context = &(((ucontext_t *)uc)->uc_mcontext); unsigned long *regs = &context->arm_r0; uintptr faultaddr = (uintptr)sip->si_addr; memptr addr = (memptr)(faultaddr - fixed_memory_offset); #if DEBUG if (addr >= 0xff000000) addr &= 0x00ffffff; if (addr < 0x00f00000 || addr > 0x00ffffff) bug("segfault: m68k pc=%08x, arm PC=%08lx, addr=%08x (0x%08x)", m68k_getpc(), regs[ARM_REG_PC], faultaddr, addr); if (faultaddr < (uintptr)(fixed_memory_offset - 0x1000000UL) #ifdef CPU_aarch64 || faultaddr >= ((uintptr)fixed_memory_offset + 0x100000000UL) #endif ) { #ifdef HAVE_DISASM_ARM if (regs[ARM_REG_PC] != 0) { char buf[256]; arm_disasm((const uint8 *)regs[ARM_REG_PC], buf, 1); panicbug("%s", buf); } #endif // raise(SIGBUS); } #endif if (faultaddr == 0 || regs[ARM_REG_PC] == 0) { real_segmentationfault(); /* not reached (hopefully) */ return; } handle_arm_instruction(regs, addr); } void install_sigsegv() { struct sigaction sigsegv_sa; memset(&sigsegv_sa, 0, sizeof(sigsegv_sa)); sigemptyset(&sigsegv_sa.sa_mask); sigsegv_sa.sa_handler = (sighandler_t) segfault_vec; sigsegv_sa.sa_flags = SA_SIGINFO; sigaction(SIGSEGV, &sigsegv_sa, NULL); D(bug("Installed sigsegv handler")); } void uninstall_sigsegv() { signal(SIGSEGV, SIG_DFL); } aranym-1.1.0/src/Unix/linux/parameters_linux.cpp0000664000175000017500000000433513454637621020145 0ustar joyjoy/* MJ 2001 */ #include "sysdeps.h" #include "tools.h" #include "parameters.h" #include #include #include /* * avoid an undefined reference when compiling against * older glibc ABI, and using _FORTIFY_SOURCE */ #if defined(FD_SETSIZE) && defined(__NFDBITS) long int __fdelt_chk(long int d) { if (d < 0 || d >= FD_SETSIZE) abort(); return d / __NFDBITS; } #endif int get_geometry(const char *dev_path, geo_type geo) { int fd; int par = -1; struct hd_geometry g; struct stat s; fd = open (dev_path, O_RDONLY); if (fd < 0) return -1; switch (geo) { case geoCylinders: if (strstr(dev_path, "/dev/") == dev_path) { if (ioctl(fd, HDIO_GETGEO, &g)) break; else { par = g.cylinders; break; } } else if (fstat(fd, &s) == 0) { if (s.st_size%(16*63*512*2)) break; par = s.st_size/(16*63*512); if (par > 1024) { par = -1; break; } break; } else break; case geoHeads: if (strstr(dev_path, "/dev/") == dev_path) { if (ioctl(fd, HDIO_GETGEO, &g)) break; else { par = g.heads; break; } } else if (fstat(fd, &s) == 0) { if (s.st_size%(16*63*512*2)) break; par = s.st_size/(16*63*512); if (par > 1024) { par = -1; break; } par = 16; break; } else break; case geoSpt: if (strstr(dev_path, "/dev/") == dev_path) { if (ioctl(fd, HDIO_GETGEO, &g)) break; else { par = g.sectors; break; } } else if (fstat(fd, &s) == 0) { if (s.st_size%(16*63*512*2)) break; par = s.st_size/(16*63*512); if (par > 1024) { par = -1; break; } par = 63; break; } else break; case geoByteswap: break; } close(fd); return par; } aranym-1.1.0/src/Unix/linux/ethernet_linux.h0000664000175000017500000000114513454637621017261 0ustar joyjoy/** * Ethernet TUN/TAP driver * * Standa (c) 2004-2005 * * GPL */ #ifndef _ETHERNET_LINUX_H #define _ETHERNET_LINUX_H #include "ethernet.h" class TunTapEthernetHandler : public ETHERNETDriver::Handler { int fd; // the /dev/net/tun driver (TAP) int tapOpenOld(char *dev); int tapOpen(char *dev); public: TunTapEthernetHandler(int eth_idx); virtual ~TunTapEthernetHandler(); virtual bool open(); virtual void close(); virtual int recv(uint8 *buf, int len); virtual int send(const uint8 *buf, int len); }; #define ETHERNET_HANDLER_CLASSNAME TunTapEthernetHandler #endif // _ETHERNET_LINUX_H aranym-1.1.0/src/Unix/linux/ethernet_linux.cpp0000664000175000017500000001273713454637621017625 0ustar joyjoy/** * Ethernet Emulation using tuntap driver in Linux * * Standa and Joy of ARAnyM team (c) 2004-2008 * * GPL */ #include "cpu_emulation.h" #include "main.h" #include "ethernet_linux.h" #define DEBUG 0 #include "debug.h" #include #include // waitpid() #include #include #if defined(HAVE_LINUX_IF_H) && defined(HAVE_LINUX_IF_TUN_H) #ifdef HAVE_SYS_SOCKET_H #include #endif #include #include #endif #if defined(HAVE_NET_IF_H) && defined(HAVE_NET_IF_TUN_H) #include #include #endif #if 0 # if defined(__FreeBSD__) || defined(sgi) # include # endif #endif #include /**************************** * Configuration zone begins */ #define TAP_INIT "aratapif" #define TAP_MTU "1500" /* * Configuration zone ends **************************/ TunTapEthernetHandler::TunTapEthernetHandler(int eth_idx) : Handler(eth_idx), fd(-1) { } TunTapEthernetHandler::~TunTapEthernetHandler() { close(); } bool TunTapEthernetHandler::open() { // int nonblock = 1; char *type = bx_options.ethernet[ethX].type; char *devName = bx_options.ethernet[ethX].tunnel; close(); if (strcmp(type, "none") == 0 || strlen(type) == 0) { return false; } // get the tunnel nif name if provided if (strlen(devName) == 0) { D(bug("TunTap(%d): tunnel name undefined", ethX)); return false; } D(bug("TunTap(%d): open('%s')", ethX, devName)); fd = tapOpen( devName ); if (fd < 0) { panicbug("TunTap(%d): NO_NET_DRIVER_WARN '%s': %s", ethX, devName, strerror(errno)); return false; } // if 'bridge' mode then we are done if ( strstr(bx_options.ethernet[ethX].type, "bridge") != NULL ) return true; int pid = fork(); if (pid < 0) { panicbug("TunTap(%d): ERROR: fork() failed. Ethernet disabled!", ethX); close(); return false; } if (pid == 0) { // the arguments _need_ to be placed into the child process // memory (otherwise this does not work here) char *args[] = { (char*)TAP_INIT, bx_options.ethernet[ethX].tunnel, bx_options.ethernet[ethX].ip_host, bx_options.ethernet[ethX].ip_atari, bx_options.ethernet[ethX].netmask, (char*)TAP_MTU, NULL }; int result; result = execvp( TAP_INIT, args ); _exit(result); } D(bug("TunTap(%d): waiting for " TAP_INIT " at pid %d", ethX, pid)); int status; waitpid(pid, &status, 0); bool failed = true; if (WIFEXITED(status)) { int err = WEXITSTATUS(status); if (err == 255) { panicbug("TunTap(%d): ERROR: " TAP_INIT " not found. Ethernet disabled!", ethX); } else if (err != 0) { panicbug("TunTap(%d): ERROR: " TAP_INIT " failed (code %d). Ethernet disabled!", ethX, err); } else { failed = false; D(bug("TunTap(%d): " TAP_INIT " initialized OK", ethX)); } } else { panicbug("TunTap(%d): ERROR: " TAP_INIT " could not be started. Ethernet disabled!", ethX); } // Close /dev/net/tun device if exec failed if (failed) { close(); return false; } // Set nonblocking I/O //ioctl(fd, FIONBIO, &nonblock); return true; } void TunTapEthernetHandler::close() { D(bug("TunTap(%d): close", ethX)); // Close /dev/net/tun device if (fd > 0) { ::close(fd); fd = -1; } } int TunTapEthernetHandler::recv(uint8 *buf, int len) { #if 0 // Wait for packets to arrive int res; do { struct pollfd pf = {fd, POLLIN, 0}; res = poll(&pf, 1, -1); } while (res <= 0) // Read the packets #endif return read(fd, buf, len); } int TunTapEthernetHandler::send(const uint8 *buf, int len) { int res = write(fd, buf, len); if (res < 0) { D(bug("TunTap(%d): WARNING: Couldn't transmit packet", ethX)); } return res; } /* * Allocate ETHERNETDriver TAP device, returns opened fd. * Stores dev name in the first arg(must be large enough). */ int TunTapEthernetHandler::tapOpenOld(char *dev) { char tapname[sizeof(bx_options.ethernet[0].tunnel) + 5]; int i, fd; if( *dev ) { snprintf(tapname, sizeof(tapname), "/dev/%s", dev); tapname[sizeof(tapname)-1] = '\0'; D(bug("TunTap(%d): tapOpenOld %s", ethX, tapname)); return ::open(tapname, O_RDWR); } for(i=0; i < 255; i++) { sprintf(tapname, "/dev/tap%d", i); /* Open device */ if( (fd=::open(tapname, O_RDWR)) > 0 ) { sprintf(dev, "tap%d",i); D(bug("TunTap(%d): tapOpenOld %s", ethX, dev)); return fd; } } return -1; } #ifdef HAVE_LINUX_IF_TUN_H /* New driver support */ #include /* pre 2.4.6 compatibility */ #define OTUNSETNOCSUM (('T'<< 8) | 200) #define OTUNSETDEBUG (('T'<< 8) | 201) #define OTUNSETIFF (('T'<< 8) | 202) #define OTUNSETPERSIST (('T'<< 8) | 203) #define OTUNSETOWNER (('T'<< 8) | 204) int TunTapEthernetHandler::tapOpen(char *dev) { struct ifreq ifr; if( (fd = ::open("/dev/net/tun", O_RDWR)) < 0 ) { panicbug("TunTap(%d): Error opening /dev/net/tun. Check if module is loaded and privileges are OK", ethX); return tapOpenOld(dev); } memset(&ifr, 0, sizeof(ifr)); ifr.ifr_flags = IFF_TAP | IFF_NO_PI; if( *dev ) strncpy(ifr.ifr_name, dev, IFNAMSIZ); if (ioctl(fd, TUNSETIFF, (void *) &ifr) < 0) { if (errno != EBADFD) goto failed; /* Try old ioctl */ if (ioctl(fd, OTUNSETIFF, (void *) &ifr) < 0) goto failed; } strcpy(dev, ifr.ifr_name); D(bug("TunTap(%d): if opened %s", ethX, dev)); return fd; failed: close(); return -1; } #else int TunTapEthernetHandler::tapOpen(char *dev) { return tapOpenOld(dev); } #endif /* New driver support */ aranym-1.1.0/src/Unix/irix/0000775000175000017500000000000013454637641013670 5ustar joyjoyaranym-1.1.0/src/Unix/irix/unaligned.c0000664000175000017500000000276113454637621016006 0ustar joyjoy/* * Irix/unaligned.c - Optimized unaligned access for Irix * * Basilisk II (C) 1997-2002 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #if (defined(sgi) && !defined(__GNUC__)) #include "sysdeps.h" /* Tell the compiler to pack data on 1-byte boundaries * (i.e. arbitrary alignment). Requires SGI MIPSPro compilers. */ #pragma pack(1) typedef struct _ual32 { uae_u32 v; } ual32_t; typedef struct _ual16 { uae_u16 v; } ual16_t; #pragma pack(0) /* The compiler is smart enough to inline these when you build with "-ipa" */ uae_u32 do_get_mem_long(uae_u32 *a) {return ((ual32_t *)a)->v;} uae_u32 do_get_mem_word(uae_u16 *a) {return ((ual16_t *)a)->v;} void do_put_mem_long(uae_u32 *a, uae_u32 v) {((ual32_t *)a)->v = v;} void do_put_mem_word(uae_u16 *a, uae_u32 v) {((ual16_t *)a)->v = v;} #endif /* sgi */ aranym-1.1.0/src/Unix/host_filesys_unix.cpp0000664000175000017500000000416113454637621017177 0ustar joyjoy/* Host filesystem, Unix systems ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "tools.h" #include "parameters.h" #include "host_filesys.h" #define DEBUG 0 #include "debug.h" #include /* * Get the path to a user home folder. */ char *HostFilesys::getHomeFolder(char *buffer, unsigned int bufsize) { buffer[0] = '\0'; // last resort - current folder // Unix-like systems define HOME variable as the user home folder char *home = getenv("HOME"); if ( home ) strncpy( buffer, home, bufsize ); return buffer; } /* * Get the path to folder with user-specific files (configuration, NVRAM) */ char *HostFilesys::getConfFolder(char *buffer, unsigned int bufsize) { // local cache static char path[512] = ""; if (strlen(path) == 0) { char *home = HostFilesys::getHomeFolder(path, 512); int homelen = strlen(home); if (homelen > 0) { unsigned int len = strlen(ARANYMHOME); if ((homelen + 1 + len + 1) < bufsize) { if (homelen) strcat(path, DIRSEPARATOR); strcat(path, ARANYMHOME); } } } return safe_strncpy(buffer, path, bufsize); } char *HostFilesys::getDataFolder(char *buffer, unsigned int bufsize) { // data folder is defined at configure time in ARANYM_DATADIR (using --datadir) return safe_strncpy(buffer, ARANYM_DATADIR, bufsize); } int HostFilesys::makeDir(char *filename, int perm) { #ifdef OS_mingw (void) perm; return mkdir(filename); #else return mkdir(filename, perm); #endif } aranym-1.1.0/src/Unix/host_clock_unix.cpp0000664000175000017500000000176013454637621016616 0ustar joyjoy/* Host clock for timers, Unix systems ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "host_clock_unix.h" #include /*--- Private stuff ---*/ float HostClockUnix::getCurTime(void) { struct timeval tv; gettimeofday(&tv, NULL); return ((tv.tv_sec * 1000.0) + (tv.tv_usec / 1000.0)); } aranym-1.1.0/src/Unix/getopt_init.c0000664000175000017500000000552113454637621015407 0ustar joyjoy/* Perform additional initialization for getopt functions in GNU libc. Copyright (C) 1997, 1998, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifdef USE_NONOPTION_FLAGS /* Attention: this file is *not* necessary when the GNU getopt functions are used outside the GNU libc. Some additional functionality of the getopt functions in GNU libc require this additional work. */ #include #include #include #include #include /* Variable to synchronize work. */ char *__getopt_nonoption_flags; /* Remove the environment variable "__GNU_nonoption_argv_flags_" if it is still available. If the getopt functions are also used in the application it does not exist anymore since it was saved for the use in getopt. */ void __getopt_clean_environment (char **env) { /* Bash 2.0 puts a special variable in the environment for each command it runs, specifying which ARGV elements are the results of file name wildcard expansion and therefore should not be considered as options. */ static const char envvar_tail[] = "_GNU_nonoption_argv_flags_="; char var[50]; char *cp, **ep; size_t len; /* Construct the "__GNU_nonoption_argv_flags_=" string. We must not use `sprintf'. */ cp = memcpy (&var[sizeof (var) - sizeof (envvar_tail)], envvar_tail, sizeof (envvar_tail)); cp = _itoa_word (__getpid (), cp, 10, 0); /* Note: we omit adding the leading '_' since we explicitly test for it before calling strncmp. */ len = (var + sizeof (var) - 1) - cp; for (ep = env; *ep != NULL; ++ep) if ((*ep)[0] == '_' && __builtin_expect (strncmp (*ep + 1, cp, len) == 0, 0)) { /* Found it. Store this pointer and move later ones back. */ char **dp = ep; __getopt_nonoption_flags = &(*ep)[len]; do dp[0] = dp[1]; while (*dp++); /* Continue the loop in case the name appears again. */ } } #endif /* USE_NONOPTION_FLAGS */ aranym-1.1.0/src/Unix/getopt1.c0000664000175000017500000001140713454637621014445 0ustar joyjoy/* getopt_long and getopt_long_only entry points for GNU getopt. Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifdef HAVE_CONFIG_H #include #endif #include "getopt.h" #if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ #ifndef const #define const #endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 #if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 #include #if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION #define ELIDE_CODE #endif #endif #ifndef ELIDE_CODE /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ #include #endif #ifndef NULL #define NULL 0 #endif int getopt_long (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 0); } /* Like getopt_long, but '-' as well as '--' can indicate a long option. If an option that starts with '-' (not '--') doesn't match a long option, but does match a short option, it is parsed as a short option instead. */ int getopt_long_only (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 1); } #endif /* Not ELIDE_CODE. */ #ifdef TEST #include int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; int option_index = 0; static struct option long_options[] = { {"add", 1, 0, 0}, {"append", 0, 0, 0}, {"delete", 1, 0, 0}, {"verbose", 0, 0, 0}, {"create", 0, 0, 0}, {"file", 1, 0, 0}, {0, 0, 0, 0} }; c = getopt_long (argc, argv, "abc:d:0123456789", long_options, &option_index); if (c == -1) break; switch (c) { case 0: printf ("option %s", long_options[option_index].name); if (optarg) printf (" with arg %s", optarg); printf ("\n"); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case 'd': printf ("option d with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ aranym-1.1.0/src/Unix/getopt.h0000664000175000017500000001476613454637621014404 0ustar joyjoy/* Declarations for getopt. Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _GETOPT_H #ifndef __need_getopt # define _GETOPT_H 1 #endif /* If __GNU_LIBRARY__ is not already defined, either we are being used standalone, or this is the first header included in the source file. If we are being used with glibc, we need to include , but that does not exist if we are standalone. So: if __GNU_LIBRARY__ is not defined, include , which will pull in for us if it's from glibc. (Why ctype.h? It's guaranteed to exist and it doesn't flood the namespace with stuff the way some other headers do.) */ #if !defined __GNU_LIBRARY__ # include #endif #ifdef __cplusplus extern "C" { #endif /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ extern char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ extern int optind; /* Callers store zero here to inhibit the error message `getopt' prints for unrecognized options. */ extern int opterr; /* Set to an option character which was unrecognized. */ extern int optopt; #ifndef __need_getopt /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of `struct option' terminated by an element containing a name which is zero. The field `has_arg' is: no_argument (or 0) if the option does not take an argument, required_argument (or 1) if the option requires an argument, optional_argument (or 2) if the option takes an optional argument. If the field `flag' is not NULL, it points to a variable that is set to the value given in the field `val' when the option is found, but left unchanged if the option is not found. To have a long-named option do something other than set an `int' to a compiled-in constant, such as set a value from `optarg', set the option's `flag' field to zero and its `val' field to a nonzero value (the equivalent single-letter option character, if there is one). For long options that have a zero `flag' field, `getopt' returns the contents of the `val' field. */ struct option { # if (defined __STDC__ && __STDC__) || defined __cplusplus const char *name; # else char *name; # endif /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; int *flag; int val; }; /* Names for the values of the `has_arg' field of `struct option'. */ # define no_argument 0 # define required_argument 1 # define optional_argument 2 #endif /* need getopt */ /* Get definitions and prototypes for functions to process the arguments in ARGV (ARGC of them, minus the program name) for options given in OPTS. Return the option character from OPTS just read. Return -1 when there are no more options. For unrecognized options, or options missing arguments, `optopt' is set to the option letter, and '?' is returned. The OPTS string is a list of characters which are recognized option letters, optionally followed by colons, specifying that that letter takes an argument, to be placed in `optarg'. If a letter in OPTS is followed by two colons, its argument is optional. This behavior is specific to the GNU `getopt'. The argument `--' causes premature termination of argument scanning, explicitly telling `getopt' that there are no more options. If OPTS begins with `--', then non-option arguments are treated as arguments to the option '\0'. This behavior is specific to the GNU `getopt'. */ #if (defined __STDC__ && __STDC__) || defined __cplusplus #if 0 // MJ # ifdef __GNU_LIBRARY__ /* Many other libraries have conflicting prototypes for getopt, with differences in the consts, in stdlib.h. To avoid compilation errors, only prototype getopt for the GNU C library. */ extern int getopt (int ___argc, char *const *___argv, const char *__shortopts); # else /* not __GNU_LIBRARY__ */ extern int getopt (); # endif /* __GNU_LIBRARY__ */ #endif # ifndef __need_getopt extern int getopt_long (int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind); extern int getopt_long_only (int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind); /* Internal only. Users should not call this directly. */ extern int _getopt_internal (int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only); # endif #else /* not __STDC__ */ extern int getopt (); # ifndef __need_getopt extern int getopt_long (); extern int getopt_long_only (); extern int _getopt_internal (); # endif #endif /* __STDC__ */ #ifdef __cplusplus } #endif /* Make sure we later can get all the definitions and declarations. */ #undef __need_getopt #endif /* getopt.h */ aranym-1.1.0/src/Unix/getopt.c0000664000175000017500000012003113454637621014356 0ustar joyjoy/* Getopt for GNU. NOTE: getopt is now part of the C library, so if you don't know what "Keep this file name-space clean" means, talk to drepper@gnu.org before changing it! Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* This tells Alpha OSF/1 not to define a getopt prototype in . Ditto for AIX 3.2 and . */ #ifndef _NO_PROTO # define _NO_PROTO #endif #ifdef HAVE_CONFIG_H # include #endif #if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ # ifndef const # define const # endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 #if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 # include # if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION # define ELIDE_CODE # endif #endif #ifndef ELIDE_CODE /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ /* Don't include stdlib.h for non-GNU C libraries because some of them contain conflicting prototypes for getopt. */ # include # include #endif /* GNU C library. */ #ifdef VMS # include # if HAVE_STRING_H - 0 # include # endif #endif #ifndef _ /* This is for other GNU distributions with internationalized messages. */ # if (defined(HAVE_LIBINTL_H) && ENABLE_NLS) || defined _LIBC # include # ifndef _ # define _(msgid) gettext (msgid) # endif # else # define _(msgid) (msgid) # endif # if defined _LIBC && defined USE_IN_LIBIO # include # endif #endif /* This version of `getopt' appears to the caller like standard Unix `getopt' but it behaves differently for the user, since it allows the user to intersperse the options with the other arguments. As `getopt' works, it permutes the elements of ARGV so that, when it is done, all the options precede everything else. Thus all application programs are extended to handle flexible argument order. Setting the environment variable POSIXLY_CORRECT disables permutation. Then the behavior is completely standard. GNU application programs can use a third alternative mode in which they can distinguish the relative order of options and other arguments. */ #include "getopt.h" /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ /* 1003.2 says this must be 1 before any call. */ int optind = 1; /* Formerly, initialization of getopt depended on optind==0, which causes problems with re-calling getopt as programs generally don't know that. */ int __getopt_initialized; /* The next char to be scanned in the option-element in which the last option character we returned was found. This allows us to pick up the scan where we left off. If this is zero, or a null string, it means resume the scan by advancing to the next ARGV-element. */ static char *nextchar; /* Callers store zero here to inhibit the error message for unrecognized options. */ int opterr = 1; /* Set to an option character which was unrecognized. This must be initialized on some systems to avoid linking in the system's own getopt implementation. */ int optopt = '?'; /* Describe how to deal with options that follow non-option ARGV-elements. If the caller did not specify anything, the default is REQUIRE_ORDER if the environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what Unix does. This mode of operation is selected by either setting the environment variable POSIXLY_CORRECT, or using `+' as the first character of the list of option characters. PERMUTE is the default. We permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other ARGV-elements in any order and that care about the ordering of the two. We describe each non-option ARGV-element as if it were the argument of an option with character code 1. Using `-' as the first character of the list of option characters selects this mode of operation. The special argument `--' forces an end of option-scanning regardless of the value of `ordering'. In the case of RETURN_IN_ORDER, only `--' can cause `getopt' to return -1 with `optind' != ARGC. */ static enum { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER } ordering; /* Value of POSIXLY_CORRECT environment variable. */ static char *posixly_correct; #ifdef __GNU_LIBRARY__ /* We want to avoid inclusion of string.h with non-GNU libraries because there are many ways it can cause trouble. On some systems, it contains special magic macros that don't work in GCC. */ # include # define my_index strchr #else # if HAVE_STRING_H # include # else # include # endif /* Avoid depending on library functions or files whose names are inconsistent. */ #ifndef getenv extern char *getenv (); #endif static char * my_index (str, chr) const char *str; int chr; { while (*str) { if (*str == chr) return (char *) str; str++; } return 0; } /* If using GCC, we can safely declare strlen this way. If not using GCC, it is ok not to declare it. */ #ifdef __GNUC__ /* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. That was relevant to code that was here before. */ # if (!defined __STDC__ || !__STDC__) && !defined strlen /* gcc with -traditional declares the built-in strlen to return int, and has done so at least since version 2.4.5. -- rms. */ extern int strlen (const char *); # endif /* not __STDC__ */ #endif /* __GNUC__ */ #endif /* not __GNU_LIBRARY__ */ /* Handle permutation of arguments. */ /* Describe the part of ARGV that contains non-options that have been skipped. `first_nonopt' is the index in ARGV of the first of them; `last_nonopt' is the index after the last of them. */ static int first_nonopt; static int last_nonopt; #ifdef _LIBC /* Stored original parameters. XXX This is no good solution. We should rather copy the args so that we can compare them later. But we must not use malloc(3). */ extern int __libc_argc; extern char **__libc_argv; /* Bash 2.0 gives us an environment variable containing flags indicating ARGV elements that should not be considered arguments. */ # ifdef USE_NONOPTION_FLAGS /* Defined in getopt_init.c */ extern char *__getopt_nonoption_flags; static int nonoption_flags_max_len; static int nonoption_flags_len; # endif # ifdef USE_NONOPTION_FLAGS # define SWAP_FLAGS(ch1, ch2) \ if (nonoption_flags_len > 0) \ { \ char __tmp = __getopt_nonoption_flags[ch1]; \ __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ __getopt_nonoption_flags[ch2] = __tmp; \ } # else # define SWAP_FLAGS(ch1, ch2) # endif #else /* !_LIBC */ # define SWAP_FLAGS(ch1, ch2) #endif /* _LIBC */ /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) which contains all the non-options that have been skipped so far. The other is elements [last_nonopt,optind), which contains all the options processed since those non-options were skipped. `first_nonopt' and `last_nonopt' are relocated so that they describe the new indices of the non-options in ARGV after they are moved. */ #if defined __STDC__ && __STDC__ static void exchange (char **); #endif static void exchange (argv) char **argv; { int bottom = first_nonopt; int middle = last_nonopt; int top = optind; char *tem; /* Exchange the shorter segment with the far end of the longer segment. That puts the shorter segment into the right place. It leaves the longer segment in the right place overall, but it consists of two parts that need to be swapped next. */ #if defined _LIBC && defined USE_NONOPTION_FLAGS /* First make sure the handling of the `__getopt_nonoption_flags' string can work normally. Our top argument must be in the range of the string. */ if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) { /* We must extend the array. The user plays games with us and presents new arguments. */ char *new_str = malloc (top + 1); if (new_str == NULL) nonoption_flags_len = nonoption_flags_max_len = 0; else { memset (__mempcpy (new_str, __getopt_nonoption_flags, nonoption_flags_max_len), '\0', top + 1 - nonoption_flags_max_len); nonoption_flags_max_len = top + 1; __getopt_nonoption_flags = new_str; } } #endif while (top > middle && middle > bottom) { if (top - middle > middle - bottom) { /* Bottom segment is the short one. */ int len = middle - bottom; register int i; /* Swap it with the top part of the top segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[top - (middle - bottom) + i]; argv[top - (middle - bottom) + i] = tem; SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); } /* Exclude the moved bottom segment from further swapping. */ top -= len; } else { /* Top segment is the short one. */ int len = top - middle; register int i; /* Swap it with the bottom part of the bottom segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[middle + i]; argv[middle + i] = tem; SWAP_FLAGS (bottom + i, middle + i); } /* Exclude the moved top segment from further swapping. */ bottom += len; } } /* Update records for the slots the non-options now occupy. */ first_nonopt += (optind - last_nonopt); last_nonopt = optind; } /* Initialize the internal data when the first call is made. */ #if defined __STDC__ && __STDC__ static const char *_getopt_initialize (int, char *const *, const char *); #endif static const char * _getopt_initialize (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { /* Start processing options with ARGV-element 1 (since ARGV-element 0 is the program name); the sequence of previously skipped non-option ARGV-elements is empty. */ first_nonopt = last_nonopt = optind; nextchar = NULL; posixly_correct = getenv ("POSIXLY_CORRECT"); /* Determine how to handle the ordering of options and nonoptions. */ if (optstring[0] == '-') { ordering = RETURN_IN_ORDER; ++optstring; } else if (optstring[0] == '+') { ordering = REQUIRE_ORDER; ++optstring; } else if (posixly_correct != NULL) ordering = REQUIRE_ORDER; else ordering = PERMUTE; #if defined _LIBC && defined USE_NONOPTION_FLAGS if (posixly_correct == NULL && argc == __libc_argc && argv == __libc_argv) { if (nonoption_flags_max_len == 0) { if (__getopt_nonoption_flags == NULL || __getopt_nonoption_flags[0] == '\0') nonoption_flags_max_len = -1; else { const char *orig_str = __getopt_nonoption_flags; int len = nonoption_flags_max_len = strlen (orig_str); if (nonoption_flags_max_len < argc) nonoption_flags_max_len = argc; __getopt_nonoption_flags = (char *) malloc (nonoption_flags_max_len); if (__getopt_nonoption_flags == NULL) nonoption_flags_max_len = -1; else memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), '\0', nonoption_flags_max_len - len); } } nonoption_flags_len = nonoption_flags_max_len; } else nonoption_flags_len = 0; #else (void)argc; (void)argv; #endif return optstring; } /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. If an element of ARGV starts with '-', and is not exactly "-" or "--", then it is an option element. The characters of this element (aside from the initial '-') are option characters. If `getopt' is called repeatedly, it returns successively each of the option characters from each of the option elements. If `getopt' finds another option character, it returns that character, updating `optind' and `nextchar' so that the next call to `getopt' can resume the scan with the following option character or ARGV-element. If there are no more option characters, `getopt' returns -1. Then `optind' is the index in ARGV of the first ARGV-element that is not an option. (The ARGV-elements have been permuted so that those that are not options now come last.) OPTSTRING is a string containing the legitimate option characters. If an option character is seen that is not listed in OPTSTRING, return '?' after printing an error message. If you set `opterr' to zero, the error message is suppressed but we still return '?'. If a char in OPTSTRING is followed by a colon, that means it wants an arg, so the following text in the same ARGV-element, or the text of the following ARGV-element, is returned in `optarg'. Two colons mean an option that wants an optional arg; if there is text in the current ARGV-element, it is returned in `optarg', otherwise `optarg' is set to zero. If OPTSTRING starts with `-' or `+', it requests different methods of handling the non-option ARGV-elements. See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. Long-named options begin with `--' instead of `-'. Their names may be abbreviated as long as the abbreviation is unique or is an exact match for some defined option. If they have an argument, it follows the option name in the same ARGV-element, separated from the option name by a `=', or else the in next ARGV-element. When `getopt' finds a long-named option, it returns 0 if that option's `flag' field is nonzero, the value of the option's `val' field if the `flag' field is zero. The elements of ARGV aren't really const, because we permute them. But we pretend they're const in the prototype to be compatible with other systems. LONGOPTS is a vector of `struct option' terminated by an element containing a name which is zero. LONGIND returns the index in LONGOPT of the long-named option found. It is only valid when a long-named option has been found by the most recent call. If LONG_ONLY is nonzero, '-' as well as '--' can introduce long-named options. */ int _getopt_internal (argc, argv, optstring, longopts, longind, long_only) int argc; char *const *argv; const char *optstring; const struct option *longopts; int *longind; int long_only; { int print_errors = opterr; if (optstring[0] == ':') print_errors = 0; if (argc < 1) return -1; optarg = NULL; if (optind == 0 || !__getopt_initialized) { if (optind == 0) optind = 1; /* Don't scan ARGV[0], the program name. */ optstring = _getopt_initialize (argc, argv, optstring); __getopt_initialized = 1; } /* Test whether ARGV[optind] points to a non-option argument. Either it does not have option syntax, or there is an environment flag from the shell indicating it is not an option. The later information is only used when the used in the GNU libc. */ #if defined _LIBC && defined USE_NONOPTION_FLAGS # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ || (optind < nonoption_flags_len \ && __getopt_nonoption_flags[optind] == '1')) #else # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') #endif if (nextchar == NULL || *nextchar == '\0') { /* Advance to the next ARGV-element. */ /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been moved back by the user (who may also have changed the arguments). */ if (last_nonopt > optind) last_nonopt = optind; if (first_nonopt > optind) first_nonopt = optind; if (ordering == PERMUTE) { /* If we have just processed some options following some non-options, exchange them so that the options come first. */ if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (last_nonopt != optind) first_nonopt = optind; /* Skip any additional non-options and extend the range of non-options previously skipped. */ while (optind < argc && NONOPTION_P) optind++; last_nonopt = optind; } /* The special ARGV-element `--' means premature end of options. Skip it like a null option, then exchange with previous non-options as if it were an option, then skip everything else like a non-option. */ if (optind != argc && !strcmp (argv[optind], "--")) { optind++; if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (first_nonopt == last_nonopt) first_nonopt = optind; last_nonopt = argc; optind = argc; } /* If we have done all the ARGV-elements, stop the scan and back over any non-options that we skipped and permuted. */ if (optind == argc) { /* Set the next-arg-index to point at the non-options that we previously skipped, so the caller will digest them. */ if (first_nonopt != last_nonopt) optind = first_nonopt; return -1; } /* If we have come to a non-option and did not permute it, either stop the scan or describe it to the caller and pass it by. */ if (NONOPTION_P) { if (ordering == REQUIRE_ORDER) return -1; optarg = argv[optind++]; return 1; } /* We have found another option-ARGV-element. Skip the initial punctuation. */ nextchar = (argv[optind] + 1 + (longopts != NULL && argv[optind][1] == '-')); } /* Decode the current option-ARGV-element. */ /* Check whether the ARGV-element is a long option. If long_only and the ARGV-element has the form "-f", where f is a valid short option, don't consider it an abbreviated form of a long option that starts with f. Otherwise there would be no way to give the -f short option. On the other hand, if there's a long option "fubar" and the ARGV-element is "-fu", do consider that an abbreviation of the long option, just like "--fu", and not "-f" with arg "u". This distinction seems to be the most useful approach. */ if (longopts != NULL && (argv[optind][1] == '-' || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = -1; int option_index; for (nameend = nextchar; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if ((unsigned int) (nameend - nextchar) == (unsigned int) strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else if (long_only || pfound->has_arg != p->has_arg || pfound->flag != p->flag || pfound->val != p->val) /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"), argv[0], argv[optind]) >= 0) { if (_IO_fwide (stderr, 0) > 0) __fwprintf (stderr, L"%s", buf); else fputs (buf, stderr); free (buf); } #else fprintf (stderr, _("%s: option `%s' is ambiguous\n"), argv[0], argv[optind]); #endif } nextchar += strlen (nextchar); optind++; optopt = 0; return '?'; } if (pfound != NULL) { option_index = indfound; optind++; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; int n; #endif if (argv[optind - 1][1] == '-') { /* --option */ #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("\ %s: option `--%s' doesn't allow an argument\n"), argv[0], pfound->name); #else fprintf (stderr, _("\ %s: option `--%s' doesn't allow an argument\n"), argv[0], pfound->name); #endif } else { /* +option or -option */ #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("\ %s: option `%c%s' doesn't allow an argument\n"), argv[0], argv[optind - 1][0], pfound->name); #else fprintf (stderr, _("\ %s: option `%c%s' doesn't allow an argument\n"), argv[0], argv[optind - 1][0], pfound->name); #endif } #if defined _LIBC && defined USE_IN_LIBIO if (n >= 0) { if (_IO_fwide (stderr, 0) > 0) __fwprintf (stderr, L"%s", buf); else fputs (buf, stderr); free (buf); } #endif } nextchar += strlen (nextchar); optopt = pfound->val; return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("\ %s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]) >= 0) { if (_IO_fwide (stderr, 0) > 0) __fwprintf (stderr, L"%s", buf); else fputs (buf, stderr); free (buf); } #else fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); #endif } nextchar += strlen (nextchar); optopt = pfound->val; return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } /* Can't find it as a long option. If this is not getopt_long_only, or the option starts with '--' or is not a valid short option, then it's an error. Otherwise interpret it as a short option. */ if (!long_only || argv[optind][1] == '-' || my_index (optstring, *nextchar) == NULL) { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; int n; #endif if (argv[optind][1] == '-') { /* --option */ #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"), argv[0], nextchar); #else fprintf (stderr, _("%s: unrecognized option `--%s'\n"), argv[0], nextchar); #endif } else { /* +option or -option */ #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"), argv[0], argv[optind][0], nextchar); #else fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), argv[0], argv[optind][0], nextchar); #endif } #if defined _LIBC && defined USE_IN_LIBIO if (n >= 0) { if (_IO_fwide (stderr, 0) > 0) __fwprintf (stderr, L"%s", buf); else fputs (buf, stderr); free (buf); } #endif } nextchar = (char *) ""; optind++; optopt = 0; return '?'; } } /* Look at and handle the next short option-character. */ { char c = *nextchar++; char *temp = my_index (optstring, c); /* Increment `optind' when we start to process its last character. */ if (*nextchar == '\0') ++optind; if (temp == NULL || c == ':') { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; int n; #endif if (posixly_correct) { /* 1003.2 specifies the format of this message. */ #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("%s: illegal option -- %c\n"), argv[0], c); #else fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c); #endif } else { #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("%s: invalid option -- %c\n"), argv[0], c); #else fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c); #endif } #if defined _LIBC && defined USE_IN_LIBIO if (n >= 0) { if (_IO_fwide (stderr, 0) > 0) __fwprintf (stderr, L"%s", buf); else fputs (buf, stderr); free (buf); } #endif } optopt = c; return '?'; } /* Convenience. Treat POSIX -W foo same as long option --foo */ if (temp[0] == 'W' && temp[1] == ';') { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = 0; int option_index; /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (print_errors) { /* 1003.2 specifies the format of this message. */ #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("%s: option requires an argument -- %c\n"), argv[0], c) >= 0) { if (_IO_fwide (stderr, 0) > 0) __fwprintf (stderr, L"%s", buf); else fputs (buf, stderr); free (buf); } #else fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); #endif } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; return c; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; /* optarg is now the argument, see if it's in the table of longopts. */ for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if ((unsigned int) (nameend - nextchar) == strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"), argv[0], argv[optind]) >= 0) { if (_IO_fwide (stderr, 0) > 0) __fwprintf (stderr, L"%s", buf); else fputs (buf, stderr); free (buf); } #else fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), argv[0], argv[optind]); #endif } nextchar += strlen (nextchar); optind++; return '?'; } if (pfound != NULL) { option_index = indfound; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("\ %s: option `-W %s' doesn't allow an argument\n"), argv[0], pfound->name) >= 0) { if (_IO_fwide (stderr, 0) > 0) __fwprintf (stderr, L"%s", buf); else fputs (buf, stderr); free (buf); } #else fprintf (stderr, _("\ %s: option `-W %s' doesn't allow an argument\n"), argv[0], pfound->name); #endif } nextchar += strlen (nextchar); return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("\ %s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]) >= 0) { if (_IO_fwide (stderr, 0) > 0) __fwprintf (stderr, L"%s", buf); else fputs (buf, stderr); free (buf); } #else fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); #endif } nextchar += strlen (nextchar); return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } nextchar = NULL; return 'W'; /* Let the application handle it. */ } if (temp[1] == ':') { if (temp[2] == ':') { /* This is an option that accepts an argument optionally. */ if (*nextchar != '\0') { optarg = nextchar; optind++; } else optarg = NULL; nextchar = NULL; } else { /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (print_errors) { /* 1003.2 specifies the format of this message. */ #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("\ %s: option requires an argument -- %c\n"), argv[0], c) >= 0) { if (_IO_fwide (stderr, 0) > 0) __fwprintf (stderr, L"%s", buf); else fputs (buf, stderr); free (buf); } #else fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); #endif } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; nextchar = NULL; } } return c; } } int getopt (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { return _getopt_internal (argc, argv, optstring, (const struct option *) 0, (int *) 0, 0); } #endif /* Not ELIDE_CODE. */ #ifdef TEST /* Compile with -DTEST to make an executable for use in testing the above definition of `getopt'. */ int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; c = getopt (argc, argv, "abc:d:0123456789"); if (c == -1) break; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ aranym-1.1.0/src/Unix/darwin/0000775000175000017500000000000013454637641014201 5ustar joyjoyaranym-1.1.0/src/Unix/darwin/sigsegv_darwin_x86.cpp0000664000175000017500000005372513454637621020437 0ustar joyjoy/* * sigsegv_darwin_x86.cpp - x86 Darwin SIGSEGV handler * * Copyright (c) 2006 Milan Jurik of ARAnyM dev team (see AUTHORS) * * Inspired by Bernie Meyer's UAE-JIT and Gwenole Beauchesne's Basilisk II-JIT * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Last modified: 2013-06-16 Jens Heitmann * */ #include "sysdeps.h" #include "cpu_emulation.h" #include "memory-uae.h" #define DEBUG 0 #include "debug.h" // // // Darwin segmentation violation handler // based on the code of Basilisk II // #include // Address type typedef char * sigsegv_address_t; // SIGSEGV handler return state enum sigsegv_return_t { SIGSEGV_RETURN_SUCCESS, SIGSEGV_RETURN_FAILURE, // SIGSEGV_RETURN_SKIP_INSTRUCTION, }; // Define an address that is bound to be invalid for a program counter const sigsegv_address_t SIGSEGV_INVALID_PC = (sigsegv_address_t)(-1); extern "C" { #include #include #ifdef CPU_i386 # undef MACH_EXCEPTION_CODES # define MACH_EXCEPTION_CODES 0 # define MACH_EXCEPTION_DATA_T exception_data_t # define MACH_EXCEPTION_DATA_TYPE_T exception_data_type_t # define MACH_EXC_SERVER exc_server # define CATCH_MACH_EXCEPTION_RAISE catch_exception_raise # define MACH_EXCEPTION_RAISE exception_raise # define MACH_EXCEPTION_RAISE_STATE exception_raise_state # define MACH_EXCEPTION_RAISE_STATE_IDENTITY exception_raise_state_identity #else # define MACH_EXCEPTION_DATA_T mach_exception_data_t # define MACH_EXCEPTION_DATA_TYPE_T mach_exception_data_type_t # define MACH_EXC_SERVER mach_exc_server # define CATCH_MACH_EXCEPTION_RAISE catch_mach_exception_raise # define MACH_EXCEPTION_RAISE mach_exception_raise # define MACH_EXCEPTION_RAISE_STATE mach_exception_raise_state # define MACH_EXCEPTION_RAISE_STATE_IDENTITY mach_exception_raise_state_identity #endif // Extern declarations of mach functions // dependend on the underlying architecture this are extern declarations // for "mach" or "non mach" function names. 64 Bit requieres "mach_xxx" // functions // extern boolean_t MACH_EXC_SERVER(mach_msg_header_t *, mach_msg_header_t *); extern kern_return_t CATCH_MACH_EXCEPTION_RAISE(mach_port_t, mach_port_t, mach_port_t, exception_type_t, MACH_EXCEPTION_DATA_T, mach_msg_type_number_t); extern kern_return_t MACH_EXCEPTION_RAISE(mach_port_t, mach_port_t, mach_port_t, exception_type_t, MACH_EXCEPTION_DATA_T, mach_msg_type_number_t); extern kern_return_t MACH_EXCEPTION_RAISE_STATE(mach_port_t, exception_type_t, MACH_EXCEPTION_DATA_T, mach_msg_type_number_t, thread_state_flavor_t *, thread_state_t, mach_msg_type_number_t, thread_state_t, mach_msg_type_number_t *); extern kern_return_t MACH_EXCEPTION_RAISE_STATE_IDENTITY(mach_port_t, mach_port_t, mach_port_t, exception_type_t, MACH_EXCEPTION_DATA_T, mach_msg_type_number_t, thread_state_flavor_t *, thread_state_t, mach_msg_type_number_t, thread_state_t, mach_msg_type_number_t *); extern kern_return_t catch_mach_exception_raise_state(mach_port_t, exception_type_t, MACH_EXCEPTION_DATA_T, mach_msg_type_number_t, int *, thread_state_t, mach_msg_type_number_t, thread_state_t, mach_msg_type_number_t *); extern kern_return_t catch_mach_exception_raise_state_identity(mach_port_t, mach_port_t, mach_port_t, exception_type_t, MACH_EXCEPTION_DATA_T, mach_msg_type_number_t, int *, thread_state_t, mach_msg_type_number_t, thread_state_t, mach_msg_type_number_t *); } // Could make this dynamic by looking for a result of MIG_ARRAY_TOO_LARGE #define HANDLER_COUNT 64 // structure to tuck away existing exception handlers typedef struct _ExceptionPorts { mach_msg_type_number_t maskCount; exception_mask_t masks[HANDLER_COUNT]; exception_handler_t handlers[HANDLER_COUNT]; exception_behavior_t behaviors[HANDLER_COUNT]; thread_state_flavor_t flavors[HANDLER_COUNT]; } ExceptionPorts; #ifdef CPU_i386 # define STATE_REGISTER_TYPE uint32 # ifdef i386_SAVED_STATE # define SIGSEGV_THREAD_STATE_TYPE struct i386_saved_state # define SIGSEGV_THREAD_STATE_FLAVOR i386_SAVED_STATE # define SIGSEGV_THREAD_STATE_COUNT i386_SAVED_STATE_COUNT # define SIGSEGV_REGISTER_FILE ((unsigned long *)&state->edi) /* EDI is the first GPR we consider */ # else # ifdef x86_THREAD_STATE32 /* MacOS X 10.5 or newer introduces the new names and deprecates the old ones */ # define SIGSEGV_THREAD_STATE_TYPE x86_thread_state32_t # define SIGSEGV_THREAD_STATE_FLAVOR x86_THREAD_STATE32 # define SIGSEGV_THREAD_STATE_COUNT x86_THREAD_STATE32_COUNT # define SIGSEGV_REGISTER_FILE ((unsigned long *)&state->__eax) /* EAX is the first GPR we consider */ # define SIGSEGV_FAULT_INSTRUCTION state->__eip # else /* MacOS X 10.4 and below */ # define SIGSEGV_THREAD_STATE_TYPE struct i386_thread_state # define SIGSEGV_THREAD_STATE_FLAVOR i386_THREAD_STATE # define SIGSEGV_THREAD_STATE_COUNT i386_THREAD_STATE_COUNT # define SIGSEGV_REGISTER_FILE ((unsigned long *)&state->eax) /* EAX is the first GPR we consider */ # define SIGSEGV_FAULT_INSTRUCTION state->eip # endif # endif #endif #ifdef CPU_x86_64 # define STATE_REGISTER_TYPE uint64 # ifdef x86_THREAD_STATE64 # define SIGSEGV_THREAD_STATE_TYPE x86_thread_state64_t # define SIGSEGV_THREAD_STATE_FLAVOR x86_THREAD_STATE64 # define SIGSEGV_THREAD_STATE_COUNT x86_THREAD_STATE64_COUNT # define SIGSEGV_REGISTER_FILE ((unsigned long *)&state->__rax) /* EAX is the first GPR we consider */ # define SIGSEGV_FAULT_INSTRUCTION state->__rip # endif #endif #define SIGSEGV_ERROR_CODE KERN_INVALID_ADDRESS #define SIGSEGV_ERROR_CODE2 KERN_PROTECTION_FAILURE #define SIGSEGV_FAULT_ADDRESS code[1] enum { #ifdef CPU_i386 #ifdef i386_SAVED_STATE // same as FreeBSD (in Open Darwin 8.0.1) REG_RIP = 10, REG_RAX = 7, REG_RCX = 6, REG_RDX = 5, REG_RBX = 4, REG_RSP = 13, REG_RBP = 2, REG_RSI = 1, REG_RDI = 0 #else // new layout (MacOS X 10.4.4 for x86) REG_RIP = 10, REG_RAX = 0, REG_RCX = 2, REG_RDX = 3, REG_RBX = 1, REG_RSP = 7, REG_RBP = 6, REG_RSI = 5, REG_RDI = 4 #endif #else #ifdef CPU_x86_64 REG_R8 = 8, REG_R9 = 9, REG_R10 = 10, REG_R11 = 11, REG_R12 = 12, REG_R13 = 13, REG_R14 = 14, REG_R15 = 15, REG_RDI = 4, REG_RSI = 5, REG_RBP = 6, REG_RBX = 1, REG_RDX = 3, REG_RAX = 0, REG_RCX = 2, REG_RSP = 7, REG_RIP = 16 #endif #endif }; // Type of a SIGSEGV handler. Returns boolean expressing successful operation typedef sigsegv_return_t (*sigsegv_fault_handler_t)(sigsegv_address_t fault_address, sigsegv_address_t instruction_address, SIGSEGV_THREAD_STATE_TYPE *state ); // Install a SIGSEGV handler. Returns boolean expressing success extern bool sigsegv_install_handler(sigsegv_fault_handler_t handler); // exception handler thread static pthread_t exc_thread; static mach_port_t _exceptionPort = MACH_PORT_NULL; // place where old exception handler info is stored static ExceptionPorts ports; // User's SIGSEGV handler static sigsegv_fault_handler_t sigsegv_fault_handler = 0; #define MACH_CHECK_ERROR(name,ret) \ if (ret != KERN_SUCCESS) { \ mach_error(#name, ret); \ exit (1); \ } #define MSG_SIZE 512 static char msgbuf[MSG_SIZE]; static char replybuf[MSG_SIZE]; #define CONTEXT_NAME state #define CONTEXT_TYPE SIGSEGV_THREAD_STATE_TYPE #define CONTEXT_ATYPE CONTEXT_TYPE * #define CONTEXT_REGS SIGSEGV_REGISTER_FILE #define CONTEXT_AEIP CONTEXT_REGS[REG_RIP] #define CONTEXT_AEAX CONTEXT_REGS[REG_RAX] #define CONTEXT_AEBX CONTEXT_REGS[REG_RBX] #define CONTEXT_AECX CONTEXT_REGS[REG_RCX] #define CONTEXT_AEDX CONTEXT_REGS[REG_RDX] #define CONTEXT_AEBP CONTEXT_REGS[REG_RBP] #define CONTEXT_AESI CONTEXT_REGS[REG_RSI] #define CONTEXT_AEDI CONTEXT_REGS[REG_RDI] #ifdef CPU_x86_64 #define CONTEXT_AEFLAGS CONTEXT_NAME->__rflags #else #ifdef x86_THREAD_STATE32 #define CONTEXT_AEFLAGS CONTEXT_NAME->__eflags #else #define CONTEXT_AEFLAGS CONTEXT_NAME->eflags #endif #endif #if defined(CPU_i386) || defined(CPU_x86_64) #include "sigsegv_common_x86.h" static sigsegv_return_t sigsegv_handler(sigsegv_address_t fault_address, sigsegv_address_t /* fault_instruction */, SIGSEGV_THREAD_STATE_TYPE *state) { memptr addr = (memptr)(uintptr)((char *)fault_address - fixed_memory_offset); #if DEBUG if (addr >= 0xff000000) addr &= 0x00ffffff; if (addr < 0x00f00000 || addr > 0x00ffffff) // YYY bug("\nsegfault: pc=%08x, " REG_RIP_NAME " =%p, addr=%p (0x%08x)", m68k_getpc(), (void *)CONTEXT_AEIP, fault_address, addr); if (fault_address < (uintptr)(fixed_memory_offset - 0x1000000UL) #ifdef CPU_x86_64 || fault_address >= ((uintptr)fixed_memory_offset + 0x100000000UL) #endif ) { #ifdef HAVE_DISASM_X86 if (CONTEXT_AEIP != 0) { char buf[256]; x86_disasm((const uint8 *)CONTEXT_AEIP, buf, 1); panicbug("%s", buf); } #endif // raise(SIGBUS); } #endif if (fault_address == 0 || CONTEXT_AEIP == 0) { real_segmentationfault(); /* not reached (hopefully) */ return SIGSEGV_RETURN_FAILURE; } handle_access_fault((CONTEXT_ATYPE) CONTEXT_NAME, addr); return SIGSEGV_RETURN_SUCCESS; } #endif /* CPU_i386 || CPU_x86_64 */ /* * SIGSEGV global handler */ // This function handles the badaccess to memory. // It is called from the signal handler or the exception handler. static bool handle_badaccess(mach_port_t thread, MACH_EXCEPTION_DATA_T code, SIGSEGV_THREAD_STATE_TYPE *state) { // We must match the initial count when writing back the CPU state registers kern_return_t krc; mach_msg_type_number_t count; D2(panicbug("handle badaccess")); count = SIGSEGV_THREAD_STATE_COUNT; krc = thread_get_state(thread, SIGSEGV_THREAD_STATE_FLAVOR, (thread_state_t)state, &count); MACH_CHECK_ERROR (thread_get_state, krc); sigsegv_address_t fault_address = (sigsegv_address_t)SIGSEGV_FAULT_ADDRESS; sigsegv_address_t fault_instruction = (sigsegv_address_t)SIGSEGV_FAULT_INSTRUCTION; D2(panicbug("code:%lx %lx %lx %lx", (long)code[0], (long)code[1], (long)code[2], (long)code[3])); D2(panicbug("regs eax:%lx", CONTEXT_AEAX)); D2(panicbug("regs ebx:%lx", CONTEXT_AEBX)); D2(panicbug("regs ecx:%lx", CONTEXT_AECX)); D2(panicbug("regs edx:%lx", CONTEXT_AEDX)); D2(panicbug("regs ebp:%lx", CONTEXT_AEBP)); D2(panicbug("regs esi:%lx", CONTEXT_AESI)); D2(panicbug("regs edi:%lx", CONTEXT_AEDI)); D2(panicbug("regs eip:%lx", CONTEXT_AEIP)); D2(panicbug("regs eflags:%lx", CONTEXT_AEFLAGS)); // Call user's handler if (sigsegv_fault_handler(fault_address, fault_instruction, state) == SIGSEGV_RETURN_SUCCESS) { D2(panicbug("esi:%lx", CONTEXT_AESI)); krc = thread_set_state(thread, SIGSEGV_THREAD_STATE_FLAVOR, (thread_state_t)state, count); MACH_CHECK_ERROR (thread_set_state, krc); D(panicbug("return from handle bad access with true")); return true; } D(panicbug("return from handle bad access with false")); return false; } /* * We need to forward all exceptions that we do not handle. * This is important, there are many exceptions that may be * handled by other exception handlers. For example debuggers * use exceptions and the exception handler is in another * process in such a case. (Timothy J. Wood states in his * message to the list that he based this code on that from * gdb for Darwin.) */ static inline kern_return_t forward_exception(mach_port_t thread_port, mach_port_t task_port, exception_type_t exception_type, MACH_EXCEPTION_DATA_T exception_data, mach_msg_type_number_t data_count, ExceptionPorts *oldExceptionPorts) { kern_return_t kret; unsigned int portIndex; mach_port_t port; exception_behavior_t behavior; thread_state_flavor_t flavor; thread_state_data_t thread_state; mach_msg_type_number_t thread_state_count; D(panicbug("forward_exception\n")); for (portIndex = 0; portIndex < oldExceptionPorts->maskCount; portIndex++) { if (oldExceptionPorts->masks[portIndex] & (1 << exception_type)) { // This handler wants the exception break; } } if (portIndex >= oldExceptionPorts->maskCount) { panicbug("No handler for exception_type = %d. Not fowarding\n", exception_type); return KERN_FAILURE; } port = oldExceptionPorts->handlers[portIndex]; behavior = oldExceptionPorts->behaviors[portIndex]; flavor = oldExceptionPorts->flavors[portIndex]; if (flavor && !VALID_THREAD_STATE_FLAVOR(flavor)) { fprintf(stderr, "Invalid thread_state flavor = %d. Not forwarding\n", flavor); return KERN_FAILURE; } /* fprintf(stderr, "forwarding exception, port = 0x%x, behaviour = %d, flavor = %d\n", port, behavior, flavor); */ if (behavior != EXCEPTION_DEFAULT) { thread_state_count = THREAD_STATE_MAX; kret = thread_get_state (thread_port, flavor, (natural_t *)&thread_state, &thread_state_count); MACH_CHECK_ERROR (thread_get_state, kret); } switch (behavior) { case EXCEPTION_DEFAULT: // fprintf(stderr, "forwarding to exception_raise\n"); kret = MACH_EXCEPTION_RAISE(port, thread_port, task_port, exception_type, exception_data, data_count); MACH_CHECK_ERROR (MACH_EXCEPTION_RAISE, kret); break; case EXCEPTION_STATE: // fprintf(stderr, "forwarding to exception_raise_state\n"); kret = MACH_EXCEPTION_RAISE_STATE(port, exception_type, exception_data, data_count, &flavor, (natural_t *)&thread_state, thread_state_count, (natural_t *)&thread_state, &thread_state_count); MACH_CHECK_ERROR (MACH_EXCEPTION_RAISE_STATE, kret); break; case EXCEPTION_STATE_IDENTITY: // fprintf(stderr, "forwarding to exception_raise_state_identity\n"); kret = MACH_EXCEPTION_RAISE_STATE_IDENTITY(port, thread_port, task_port, exception_type, exception_data, data_count, &flavor, (natural_t *)&thread_state, thread_state_count, (natural_t *)&thread_state, &thread_state_count); MACH_CHECK_ERROR (MACH_EXCEPTION_RAISE_STATE_IDENTITY, kret); break; default: panicbug("forward_exception got unknown behavior"); kret = KERN_FAILURE; break; } if (behavior != EXCEPTION_DEFAULT) { kret = thread_set_state (thread_port, flavor, (natural_t *)&thread_state, thread_state_count); MACH_CHECK_ERROR (thread_set_state, kret); } return kret; } /* * This is the code that actually handles the exception. * It is called by exc_server. For Darwin 5 Apple changed * this a bit from how this family of functions worked in * Mach. If you are familiar with that it is a little * different. The main variation that concerns us here is * that code is an array of exception specific codes and * codeCount is a count of the number of codes in the code * array. In typical Mach all exceptions have a code * and sub-code. It happens to be the case that for a * EXC_BAD_ACCESS exception the first entry is the type of * bad access that occurred and the second entry is the * faulting address so these entries correspond exactly to * how the code and sub-code are used on Mach. * * This is a MIG interface. No code in Basilisk II should * call this directley. This has to have external C * linkage because that is what exc_server expects. */ __attribute__ ((visibility("default"))) kern_return_t CATCH_MACH_EXCEPTION_RAISE(mach_port_t exception_port, mach_port_t thread, mach_port_t task, exception_type_t exception, MACH_EXCEPTION_DATA_T code, mach_msg_type_number_t codeCount) { SIGSEGV_THREAD_STATE_TYPE state; kern_return_t krc; D(panicbug("catch_exception_raise: %d", exception)); if (exception == EXC_BAD_ACCESS) { switch (code[0]) { case KERN_PROTECTION_FAILURE: case KERN_INVALID_ADDRESS: if (handle_badaccess(thread, code, &state)) return KERN_SUCCESS; break; } } // In Mach we do not need to remove the exception handler. // If we forward the exception, eventually some exception handler // will take care of this exception. krc = forward_exception(thread, task, exception, code, codeCount, &ports); return krc; } /* XXX: borrowed from launchd and gdb */ kern_return_t catch_mach_exception_raise_state(mach_port_t exception_port, exception_type_t exception, MACH_EXCEPTION_DATA_T code, mach_msg_type_number_t code_count, int *flavor, thread_state_t old_state, mach_msg_type_number_t old_state_count, thread_state_t new_state, mach_msg_type_number_t *new_state_count) { memcpy(new_state, old_state, old_state_count * sizeof(old_state[0])); *new_state_count = old_state_count; return KERN_SUCCESS; } /* XXX: borrowed from launchd and gdb */ kern_return_t catch_mach_exception_raise_state_identity(mach_port_t exception_port, mach_port_t thread_port, mach_port_t task_port, exception_type_t exception, MACH_EXCEPTION_DATA_T code, mach_msg_type_number_t code_count, int *flavor, thread_state_t old_state, mach_msg_type_number_t old_state_count, thread_state_t new_state, mach_msg_type_number_t *new_state_count) { kern_return_t kret; memcpy(new_state, old_state, old_state_count * sizeof(old_state[0])); *new_state_count = old_state_count; kret = mach_port_deallocate(mach_task_self(), task_port); MACH_CHECK_ERROR(mach_port_deallocate, kret); kret = mach_port_deallocate(mach_task_self(), thread_port); MACH_CHECK_ERROR(mach_port_deallocate, kret); return KERN_SUCCESS; } /* * This is the entry point for the exception handler thread. The job * of this thread is to wait for exception messages on the exception * port that was setup beforehand and to pass them on to exc_server. * exc_server is a MIG generated function that is a part of Mach. * Its job is to decide what to do with the exception message. In our * case exc_server calls catch_exception_raise on our behalf. After * exc_server returns, it is our responsibility to send the reply. */ static void * handleExceptions(void * /*priv*/) { D(panicbug("handleExceptions\n")); mach_msg_header_t *msg, *reply; kern_return_t krc; msg = (mach_msg_header_t *)msgbuf; reply = (mach_msg_header_t *)replybuf; for (;;) { krc = mach_msg(msg, MACH_RCV_MSG, MSG_SIZE, MSG_SIZE, _exceptionPort, 0, MACH_PORT_NULL); MACH_CHECK_ERROR(mach_msg, krc); if (!MACH_EXC_SERVER(msg, reply)) { fprintf(stderr, "exc_server hated the message\n"); exit(1); } krc = mach_msg(reply, MACH_SEND_MSG, reply->msgh_size, 0, msg->msgh_local_port, 0, MACH_PORT_NULL); if (krc != KERN_SUCCESS) { fprintf(stderr, "Error sending message to original reply port, krc = %d, %s", krc, mach_error_string(krc)); exit(1); } } } static bool sigsegv_do_install_handler(sigsegv_fault_handler_t handler) { D(panicbug("sigsegv_do_install_handler\n")); // //Except for the exception port functions, this should be //pretty much stock Mach. If later you choose to support //other Mach's besides Darwin, just check for __MACH__ //here and __APPLE__ where the actual differences are. // if (sigsegv_fault_handler != NULL) { sigsegv_fault_handler = handler; return true; } kern_return_t krc; // create the the exception port krc = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &_exceptionPort); if (krc != KERN_SUCCESS) { mach_error("mach_port_allocate", krc); return false; } // add a port send right krc = mach_port_insert_right(mach_task_self(), _exceptionPort, _exceptionPort, MACH_MSG_TYPE_MAKE_SEND); if (krc != KERN_SUCCESS) { mach_error("mach_port_insert_right", krc); return false; } // get the old exception ports ports.maskCount = sizeof (ports.masks) / sizeof (ports.masks[0]); krc = thread_get_exception_ports(mach_thread_self(), EXC_MASK_BAD_ACCESS, ports.masks, &ports.maskCount, ports.handlers, ports.behaviors, ports.flavors); if (krc != KERN_SUCCESS) { mach_error("thread_get_exception_ports", krc); return false; } // set the new exception port // // We could have used EXCEPTION_STATE_IDENTITY instead of // EXCEPTION_DEFAULT to get the thread state in the initial // message, but it turns out that in the common case this is not // neccessary. If we need it we can later ask for it from the // suspended thread. // // Even with THREAD_STATE_NONE, Darwin provides the program // counter in the thread state. The comments in the header file // seem to imply that you can count on the GPR's on an exception // as well but just to be safe I use MACHINE_THREAD_STATE because // you have to ask for all of the GPR's anyway just to get the // program counter. In any case because of update effective // address from immediate and update address from effective // addresses of ra and rb modes (as good an name as any for these // addressing modes) used in PPC instructions, you will need the // GPR state anyway. krc = thread_set_exception_ports(mach_thread_self(), EXC_MASK_BAD_ACCESS, _exceptionPort, EXCEPTION_DEFAULT | MACH_EXCEPTION_CODES, SIGSEGV_THREAD_STATE_FLAVOR); if (krc != KERN_SUCCESS) { mach_error("thread_set_exception_ports", krc); return false; } // create the exception handler thread if (pthread_create(&exc_thread, NULL, &handleExceptions, NULL) != 0) { panicbug("creation of exception thread failed\n"); return false; } // do not care about the exception thread any longer, let is run standalone (void)pthread_detach(exc_thread); D(panicbug("Sigsegv installed\n")); sigsegv_fault_handler = handler; return true; } void install_sigsegv() { sigsegv_do_install_handler(sigsegv_handler); } void uninstall_sigsegv() { /* TODO */ } aranym-1.1.0/src/Unix/darwin/ethernet_darwin.h0000664000175000017500000000317113454637621017534 0ustar joyjoy/* * ethernet_darwin.h - Darwin Ethernet support (via TUN/TAP driver) * * Copyright (c) 2007 ARAnyM dev team (see AUTHORS) * * Inspired by Bernie Meyer's UAE-JIT and Gwenole Beauchesne's Basilisk II-JIT * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Last modified: 2007-08-09 Jens Heitmann * */ #ifndef _ETHERNET_DARWIN_H #define _ETHERNET_DARWIN_H #include "ethernet.h" class TunTapEthernetHandler : public ETHERNETDriver::Handler { int fd; // the /dev/net/tun driver (TAP) int tapOpenOld(char *dev); int tapOpen(char *dev); public: TunTapEthernetHandler(int eth_idx); virtual ~TunTapEthernetHandler(); virtual bool open(); virtual void close(); virtual int recv(uint8 *buf, int len); virtual int send(const uint8 *buf, int len); }; #define ETHERNET_HANDLER_CLASSNAME TunTapEthernetHandler #endif // _ETHERNET_DARWIN_H aranym-1.1.0/src/Unix/darwin/ethernet_darwin.cpp0000664000175000017500000001676113454637621020100 0ustar joyjoy/* * ethernet_darwin.cpp - Darwin Ethernet support (via TUN/TAP driver) * * Copyright (c) 2007 ARAnyM dev team (see AUTHORS) * * Inspired by Bernie Meyer's UAE-JIT and Gwenole Beauchesne's Basilisk II-JIT * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Last modified: 2007-08-22 Jens Heitmann * */ #if defined(OS_darwin) #include "cpu_emulation.h" #include "main.h" #include "host.h" // for the HostScreen #include "ethernet_darwin.h" #include "host.h" #define DEBUG 1 #include "debug.h" #include // waitpid() #include #include #include #include #include #include #include #include /**************************** * Configuration zone begins */ #define TAP_SHELL "/bin/sh" #define TAP_INIT "aratapif.sh" #define TAP_MTU "1500" /* * Configuration zone ends **************************/ static OSStatus authStatus; static AuthorizationRef authorizationRef; static bool fullscreen; static int openAuthorizationContext() { if (authorizationRef == NULL) { AuthorizationFlags authFlags = kAuthorizationFlagDefaults;// 1 authStatus = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment,// 3 authFlags, &authorizationRef);// 4 if (authStatus != errAuthorizationSuccess) return authStatus; fullscreen = bx_options.video.fullscreen; if ( fullscreen ) host->video->toggleFullScreen(); AuthorizationItem authItems = {kAuthorizationRightExecute, 0,// 5 NULL, 0};// 6 AuthorizationRights authRights = {1, &authItems};// 7 authFlags = kAuthorizationFlagDefaults |// 8 kAuthorizationFlagInteractionAllowed |// 9 kAuthorizationFlagPreAuthorize |// 10 kAuthorizationFlagExtendRights;// 11 authStatus = AuthorizationCopyRights (authorizationRef, &authRights, NULL, authFlags, NULL );// 12 return authStatus; } else return authStatus; } static void closeAuthorizationContext() { if (authorizationRef) { AuthorizationFree (authorizationRef, kAuthorizationFlagDefaults);// 17 authorizationRef = NULL; if ( fullscreen ) { host->video->toggleFullScreen(); } } } static int executeScriptAsRoot(char *application, char *args[]) { OSStatus execStatus; char app[MAXPATHLEN]; /* CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle()); CFURLGetFileSystemRepresentation(url, true, (UInt8 *)app, MAXPATHLEN); printf("TunTap: Binary directory '%s'\n", app); CFRelease(url);*/ //Host::getDataFolder(app, sizeof(app)); Host::getConfFolder(app, sizeof(app)); strcat(app, DIRSEPARATOR); strcat(app, application); args[0] = app; FILE *authCommunicationsPipe = NULL; char execReadBuffer[128]; AuthorizationFlags authFlags = kAuthorizationFlagDefaults;// 13 execStatus = AuthorizationExecuteWithPrivileges// 14 (authorizationRef, TAP_SHELL, authFlags, args,// 15 &authCommunicationsPipe);// 16 if (execStatus == errAuthorizationSuccess) for(;;) { int bytesRead = read (fileno (authCommunicationsPipe), execReadBuffer, sizeof (execReadBuffer)); if (bytesRead < 1) break; write (fileno (stdout), execReadBuffer, bytesRead); } return execStatus; } TunTapEthernetHandler::TunTapEthernetHandler(int eth_idx) : Handler(eth_idx), fd(-1) { } TunTapEthernetHandler::~TunTapEthernetHandler() { close(); } bool TunTapEthernetHandler::open() { // int nonblock = 1; char *type = bx_options.ethernet[ethX].type; char *devName = bx_options.ethernet[ethX].tunnel; close(); if ( strlen(type) == 0 || strcmp(bx_options.ethernet[ethX].type, "none") == 0 ) { if (ethX == MAX_ETH - 1) closeAuthorizationContext(); return false; } // if 'bridge' mode then we are done if ( strstr(bx_options.ethernet[ethX].type, "bridge") != NULL ) { panicbug("TunTap(%d): Bridge mode currently not supported '%s'", ethX, devName); if (ethX == MAX_ETH - 1) closeAuthorizationContext(); return false; } // get the tunnel nif name if provided if (strlen(devName) == 0) { D(bug("TunTap(%d): tunnel name undefined", ethX)); if (ethX == MAX_ETH - 1) closeAuthorizationContext(); return false; } D(bug("TunTap(%d): open('%s')", ethX, devName)); fd = tapOpen( devName ); if (fd < 0) { panicbug("TunTap(%d): NO_NET_DRIVER_WARN '%s': %s", ethX, devName, strerror(errno)); if (ethX == MAX_ETH - 1) closeAuthorizationContext(); return false; } int auth = openAuthorizationContext(); if (auth) { close(); panicbug("TunTap(%d): Authorization failed'%s'", ethX, devName); return false; } bool failed = true; { // the arguments _need_ to be placed into the child process // memory (otherwise this does not work here) char *args[] = { NULL, // replaced with application support shell script bx_options.ethernet[ethX].tunnel, bx_options.ethernet[ethX].ip_host, bx_options.ethernet[ethX].ip_atari, bx_options.ethernet[ethX].netmask, (char *)TAP_MTU, NULL }; int result = executeScriptAsRoot( (char *)TAP_INIT, args ); if (result != 0) { panicbug("TunTap(%d): ERROR: "TAP_INIT" failed (code %d). Ethernet disabled!", ethX, result); } else { failed = false; D(bug("TunTap(%d): "TAP_INIT" initialized OK", ethX)); } } // Close /dev/net/tun device if exec failed if (failed) { close(); if (ethX == MAX_ETH - 1) closeAuthorizationContext(); return false; } // Set nonblocking I/O //ioctl(fd, FIONBIO, &nonblock); if (ethX == MAX_ETH - 1) closeAuthorizationContext(); return true; } void TunTapEthernetHandler::close() { D(bug("TunTap(%d): close", ethX)); // Close /dev/net/tun device if (fd > 0) { ::close(fd); fd = -1; } } int TunTapEthernetHandler::recv(uint8 *buf, int len) { return read(fd, buf, len); } int TunTapEthernetHandler::send(const uint8 *buf, int len) { int res = write(fd, buf, len); if (res < 0) D(bug("TunTap(%d): WARNING: Couldn't transmit packet", ethX)); return res; } /* * Allocate ETHERNETDriver TAP device, returns opened fd. * Stores dev name in the first arg(must be large enough). */ int TunTapEthernetHandler::tapOpenOld(char *dev) { char tapname[sizeof(bx_options.ethernet[0].tunnel) + 5]; int i, fd; if( *dev ) { snprintf(tapname, sizeof(tapname), "/dev/%s", dev); tapname[sizeof(tapname)-1] = '\0'; D(bug("TunTap(%d): tapOpenOld %s", ethX, tapname)); fd=::open(tapname, O_RDWR); if (fd > 0) return fd; } for(i=0; i < 255; i++) { sprintf(tapname, "/dev/tap%d", i); /* Open device */ if( (fd=::open(tapname, O_RDWR)) > 0 ) { sprintf(dev, "tap%d",i); D(bug("TunTap(%d): tapOpenOld %s", ethX, dev)); return fd; } } return -1; } int TunTapEthernetHandler::tapOpen(char *dev) { return tapOpenOld(dev); } #endif /* OS_darwin? */ aranym-1.1.0/src/Unix/darwin/clipbrd_darwin.M0000664000175000017500000000615713454637621017311 0ustar joyjoy/* clipbrd_darwin.cpp - Darwin/Mac OS X clipbrd interaction. Copied and adapted to Aranym needs from SDL_Clipboard prototype. Copyright (C) 2009 Philipp Donze of ARAnyM Team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #if defined(OS_darwin) #include "sysdeps.h" #include #include "SDL_compat.h" #include "clipbrd.h" #include "maptab.h" #define DEBUG 0 #include "debug.h" int init_aclip() { return 0; } int filter_aclip(const SDL_Event *event) { return 1; } char *read_aclip(size_t *len) { char* clip_buf = NULL; int clip_len = 0; D(bug("read_aclip: getting string data")); NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; NSPasteboard* paste_board = [NSPasteboard generalPasteboard]; NSString* type_available = [paste_board availableTypeFromArray: [NSArray arrayWithObject:NSStringPboardType]]; NSString* pasteboard_string = [paste_board stringForType: NSStringPboardType]; clip_len = pasteboard_string == nil ? 0 : [pasteboard_string length]; if(clip_len > 0) { // Load unicode characters into buffer unichar *utf16_str = new unichar[clip_len]; [pasteboard_string getCharacters:utf16_str]; // Convert unicode string to standard Atari character map clip_buf = new char[clip_len + 1]; char *dst = clip_buf; for (int pos = 0; pos < clip_len; pos++) { unsigned short ch = utf16_str[pos]; unsigned short c = utf16_to_atari[ch]; if (c >= 0x100) { charset_conv_error(ch); *dst++ = '?'; } else { *dst++ = c; } } *dst = '\0'; clip_len = dst - clip_buf; delete [] utf16_str; } [pool release]; // should be [pool drain] for >=10.4 *len = clip_len; D(bug("read_aclip: clip_len %lu", (unsigned long)clip_len)); return clip_buf; } void write_aclip(char* clip_buf, size_t clip_len) { D(bug("write_aclip: writing raw data %p %d", clip_buf, clip_len)); // Convert Atari string to unicode unichar *utf16_str = new unichar[clip_len]; for(int pos = 0; pos < clip_len; pos++) { unsigned char ch = *clip_buf++; utf16_str[pos] = atari_to_utf16[ch]; } // Write string to Mac OS X clipboard NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; NSPasteboard* paste_board = [NSPasteboard generalPasteboard]; [paste_board declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil]; [paste_board setString:[[NSString alloc] initWithCharacters:utf16_str length:clip_len] forType:NSStringPboardType]; [pool release]; // should be [pool drain] for >=10.4 delete [] utf16_str; } #endif aranym-1.1.0/src/Unix/darwin/busybee112-glossy.xcf0000664000175000017500000057173013454637621020116 0ustar joyjoygimp xcf fileBB&RumpfBBBBBdBBB*BBBBAABBBBdB,BBBBB Glossy-Kantef€4€4€BC?BC?4C?4selection_to_pathBxAAAAAAAAAAAAAAAAAAABHABHABHABHABHABHABABABApBApBApBApBApBApBABABABABABABApBApBApBApBApBApBBHBBHBBHBBHBBHBBHBBdBBdBBdBBdBBdBBdBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBdBBdBBdBBdBBdBBdBBHBBHBBHBBHBBHBBHBApBApBApBApBApBApBABABABABABABApBApBApBApBApBApBABABABHABHABHABHABHABHA BABABABBBBBBABABABAAAAAA$gimp-image-grid(style intersections) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) M$<B ilcn wk"$ Reflexion3      N  f r    ??? ??????!?%?)?,?0?4?8?;    ??? ??????!?%?)?,?0?4?8?;???C?G?J?N?R?V?Y?]?a?e?h?l?p?t?w?{??????????????????????????????????????C?G?J?N?R?V?Y?]?a?e?h?l?p?t?w?{???????????????????????????????????@@Reflexion Maske  e }A {_**************"""""""77777777777777)))))))))))))))))))))777777777777777777777777777777777770000000)))))))0000000777777777777777777777777777777777770000000"""""""0000000000000077777777777777777777777777777777777"""""""@@obere Plastikkante     0(H**************"""""""77777777777777))))))))))))))**************"""""""77777777777777))))))))))))))**************"""""""77777777777777))))))))))))))**************"""""""77777777777777)))))))))))))))))))))777777777777777777777777777777777770000000))))))))))))))777777777777777777777777777777777770000000))))))))))))))777777777777777777777777777777777770000000))))))))))))))777777777777777777777777777777777770000000)))))))0000000777777777777777777777777777777777770000000"""""""0000000777777777777777777777777777777777770000000"""""""0000000777777777777777777777777777777777770000000"""""""0000000777777777777777777777777777777777770000000"""""""0000000000000077777777777777777777777777777777777"""""""0000000000000077777777777777777777777777777777777"""""""0000000000000077777777777777777777777777777777777"""""""0000000000000077777777777777777777777777777777777"""""""@@obere Plastikkante Maske  T l$0 !~"Z#F**************"""""""77777777777777)))))))))))))))))))777777777777777777777777777777777770000000)))))))0000000777777777777777777777777777777777770000000"""""""))0000000000000077777777777777777777777777777777777"""""""@@ Kajal-Glossy     $%%M,9FNM`p7:Ո2;:875 4 3 1 0/.,+*)('&%$#"!   !"#$$%&''())*++,,;:875 4 3 1 0/.,+*)('&%$#"!   !"#$$%&''())*++,,;:875 4 3 1 0/.,+*)('&%$#"!   !"#$$%&''())*++,,:976 4 3 2 0 / . - + * ) ( ' & %  $ !"#  !"#"  !#$%! !"#$%'   !"#%&'(  !"$%&')*  !#$%&()*+  "#$%'()+,-  "#$&'(*+,-/  "#$&'(*+,./0  "#%&')*+-./02  "#%&')*+-./123  "#%&')*,-.01245  "#%&()*,-.012456  "#%&()*,-/0134578  "#%&')*,-/01345789  "#$&')*,-/0134678:;  !#$&')*,-/0134678:;<  !#$&')*,-/0134678:;=> !"$%'(*+-.0134679:;=>? !"$%'(*+-.0134679:;=>?A  "#%&(*+-.0134678:;=>@AB  !#%&()+,./124578:;=>@ABD !#$&')+,./124578:;=>@ABDE !"$%')*,-/024578:;=>?ABDEG  "#%'(*+-/0235689;<>?ABDEGHt ,&!!$'*-/ 2 468:< t ,&!!$'*-/ 2 468:< t ,&!!$'*-/ 2 468:< t , & !                                    !  !" #   !"#$ %  !!""#$%& '  !!"##$%&'( )  !!""##$$%%&&''(()* +  !""#$$%%&&''(())**+, -  !""#$$%&&''(())**++,-. /  !!"#$$%&&''())**++,,--./0 1 !""#$%%&''())*++,,--..//012 3 !"##$%&''())*++,,-..//0011234 5 !"#$%%&'(()*++,--..//011223456 7 !"#$%%&'())*+,,-../0011223344556678 9 !"#$%&&'()*++,-../001223344556677889: ; !"#$%&&'()*+,,-.//01223345566778899::;< = !"#$%%&'()*+,--./0112334556778899::;;<<=> ? !"#$%&'()*+,-../01223455677899::;;<<==>>?@ A !"#$%&'()*+,-.//0123345667899::;<<==>>??@AB C !#$%&'()*+,-.//012345567889::;<<==>??@@AABCD E !"#$%&'()+,--./012345667899:;<<=>>??@AABBCCDEF G!#$%&'()*+,-./01234567789:;;<==>??@AABBCCDDEEFFGGH I#$%&()*+,-./01234567789:;<<=>??@AABCCDDEEFFGGHHIJK%&'()*+-./01234567789:;<==>?@AABCCDEEFFGGHHIIJJKLM&')*+,-./0123456789:;<=>>?@ABBCDEEFFGHHIIJJKKLLMNO()*+-./0123456789:;<=>??@ABCCDEFFGHHIJJKKLLMMNNOPQ)+,-./023456789:;<=>?@@ABCDEEFGHHIJJKKLMMNNOOPPQRS+,-/012345689:;<=>??@ABCDEFFGHIIJKKLMMNOOPPQQRSTU-./013456789:;<=>?@ABCDEFGGHIJKKLMMNOOPPQRRSSTUVW./12345789:;<=>?@ABCDEFGHHIJKLLMNOOPQQRRSSTTUUVVWWXY012356789:<=>?@ABCDEFGHHIJKLMMNOPPQRRSTTUUVVWWXXYYZ[1345679:;<=>?@ACDEFGGHIJKLMNOOPQRRSTTUVVWWXXYYZZ[[\]345789:;=>?@ABCDEFGHIJKLMNOPPQRSSTUVVWXXYYZZ[[\\]]^_56789;<=>?ABCDEFGHIJKLMNOPQQRSTUUVWWXYYZ[[\\]]^^_`a679:;<=?@ABCDEGHIJKLMNOPQQRSTUVVWXYYZ[[\]]^^__``abc89:;=>?@ACDEFGHIJKLMNOPQRSTUVWWXYZ[[\]]^^_``aabbcde9:<=>?ABCDEGHIJKLMNOPQRSTUVWXXYZ[\\]^^_``aabccdefg;<=?@ABCEFGHIJLMNOPQRSTUVWXYYZ[\]]^_``abbccddeeffgghi<>?@ACDEFGIJKLMNOQRSTUVWXYYZ[\]^__`abbcddeeffgghhiijk>?@BCDEGHIJKMNOPQRSTUVWXYZ[\]^_``abccdeefgghhiijjkklm?ABCDFGHIKLMNOQRSTUVWXYZ[\]^_`aabcdeefgghiijjkkllmmnoABCEFGIJKLMOPQRSTVWXYZ[\]^_`abbcdeffghiijjkllmmnnoopqBDEFHIJKMNOPQSTUVWXY[\]^_`aabcdefgghijjkllmnnooppqqrsDEFHIJLMNOQRSTUWXYZ[\]^_`abcdefghiijkllmnnoopqqrrstuEGHIKLMNPQRSUVWXY[\]^_`abcdefghijjklmmnoppqqrssttuvwGHIKLMOPQSTUVWYZ[\]^`abcdefghijjklmnoopqqrssttuuvvwwxxyHIKLNOPQSTUWXYZ[]^_`abcdfghiijklmnoppqrsstuuvvwwxxyyz{IKLNOPRSTVWXY[\]^_abcdefghijklmnopqqrstuuvwwxxyyzz{{|}? 4,&!!$'*-/2 4 68:<> ? 4,&!!$'*-/2 4 68:<> ? 4,&!!$'*-/2 4 68:<> ? 4 , & !                                       !  ##"!  %%$#"!  ''&%$#"!  ))('&%$#"!!  ++*)('&%$#"!  --,+*)('&%$#""!  //.-,+*)('&%$$#""!  110/.-,+*)(''&&%$$#"!!  33210/.-,+*))(''&%%$#""! 5543210/.-,,++*))(''&%$##"! 776543210//..--,++*)(('&%%$#"! 99876543210/..-,,+*))('&%%$#"! ;;:98765432100/..-,++*)('&&%$#"! ==<;:987654332210//.-,,+*)('&&%$#"! ??>=<;:9876554332110/.--,+*)('&%%$#"! AA@?>=<;:9877655432210/..-,+*)('&%$#"! CCBA@?>=<;::9987665433210//.-,+*)('&%$#"! EEDCBA@?>==<<;::988765543210//.-,+*)('&%$#! GGFEDCBA@??>>=<<;:998766543210/.--,+)('&%$#"! IIHGFEDCBA@??>==<;;:98776543210/.-,+*)('&%$#!KKJIHGFEDCBAA@??>=<<;:98776543210/.-,+*)(&%$#MMLKJIHGFEDCCBAA@?>==<;:98776543210/.-+*)('&%OONMLKJIHGFFEEDCBBA@?>>=<;:9876543210/.-,+*)'&QQPONMLKJIHHGFFEDCCBA@??>=<;:9876543210/.-+*)(SSRQPONMLKKJJIHHGFEEDCBA@@?>=<;:987654320/.-,+)UUTSRQPONMMLKKJIIHGFFEDCBA@??>=<;:986543210/-,+WWVUTSRQPPOONMMLKKJIHGGFEDCBA@?>=<;:987654310/.-YYXWVUTSRQPOONMLLKJIHHGFEDCBA@?>=<;:98754321/.[[ZYXWVUTSRRQPPONMMLKJIHHGFEDCBA@?>=<:987653210]]\[ZYXWVUTTSRRQPOONMLKJIHGGFEDCA@?>=<;:9765431__^]\[ZYXWVVUTSSRQPPONMLKJIHGFEDCBA@?>=;:987543aa`_^]\[ZYYXWWVUUTSRQQPONMLKJIHGFEDCBA?>=<;98765ccba`_^]\[[ZYYXWVVUTSRQQPONMLKJIHGEDCBA@?=<;:976eedcba`_^^]]\[[ZYXWWVUTSRQPONMLKJIHGFEDCA@?>=;:98ggfedcbaa``_^^]\\[ZYXXWVUTSRQPONMLKJIHGEDCBA?>=<:9iihgfedcba``_^]]\[ZYYXWVUTSRQPONMLJIHGFECBA@?=<;kkjihgfedcbba`__^]\[ZYYXWVUTSRQONMLKJIGFEDCA@?>oonmlkjihggfeedcbaa`_^]\[ZYXWVUTSRQONMLKIHGFDCBA?qqponmlkjjiihgffedcbba`_^]\[ZYXWVTSRQPOMLKJIGFECBAssrqponmllkjjihggfedcbaa`_^]\[YXWVUTSQPONMKJIHFEDBuutsrqpoonnmllkjiihgfedcba`_^]\[ZYXWUTSRQONMLJIHFEDwwvutsrqqpponmmlkjjihgfedcba`_^]\[YXWVUSRQPNMLKIHGEyyxwvutsrqqpoonmlkjjihgfedcba`^]\[ZYWVUTSQPOMLKIHG{{zyxwvutssrqpponmlkjiihgfdcba`_^][ZYXWUTSQPONLKIH}}|{zyxwvuutsrqqponmlkjihgfedcba_^]\[YXWVTSRPONLKI=;:87 5 4 3 10/.,+*)('&%$#"!   !"#$$%&''())*++,,=;:87 5 4 3 10/.,+*)('&%$#"!   !"#$$%&''())*++,,=;:87 5 4 3 10/.,+*)('&%$#"!   !"#$$%&''())*++,,<:97 6 4 3 2 0 / . - + * ) ( ' &  %"! $#"!  #%$#!  "'%$#"! !('&%#"!   *)'&%$"!  +*)(&%$#!  -,+)('%$#"  /-,+*('&$#"  0/.,+*('&$#"  20/.-+*)'&%#"  321/.-+*)'&%#"  54210.-,*)'&%#"  654210.-,*)(&%#"  8754310/-,*)(&%#"  98754310/-,*)'&%#"  ;:8764310/-,*)'&$#"  <;:8764310/-,*)'&$#!  >=;:8764310/-,*)'&$#!  ?>=;:9764310.-+*('%$"! A?>=;:9764310.-+*('%$"! BA@>=;:8764310.-+*(&%#"  DBA@>=;:875421/.,+)(&%#!  EDBA@>=;:875421/.,+)'&$#! GEDBA?>=;:875420/-,*)'%$"! HGEDBA?><;9865320/-+*('%#"  -..//00 1 1 2 2 3 3 4 4 4 5 5666777888999::::;;;;;<<<<<<===================-..//00 1 1 2 2 3 3 4 4 4 5 5666777888999::::;;;;;<<<<<<===================-..//00 1 1 2 2 3 3 4 4 4 5 5666777888999::::;;;;;<<<<<<===================  !#%&()+-.0135689;<>?ABDEGHI !#$&')+,./134679:<>?ABDEGHIK  "$%')*,-/124579:<=?@BCEFHIKL  !#%&(*+-/023578:;=?@BCEFHIKLN !#$&()+-.0135689;=>@ACDFHIKLNO   "$%')*,./134679;<>?ACDFGIJLMOP   !#%&(*+-/024579:<=?ABDEGIJLMOPR  !"$&')+-.023578:;=?@BCEGHJKMNPQS   "#%'(*,./134689;=>@ACEFHIKMNPQST  !#$&()+-/024579:<>?ACDFGIKLNOQSTV   "$%')+,.013568:<=?ABDEGIJLMOQRTUW  !#%&(*,-/124689;=>@BCEGHJKMOPRSUWX   "$%')+-.023579:<>?ACDFHIKMNPQSUVXY  !#%&(*,-/13468:;=?@BDEGIJLNOQSTVWY[   "$&')+-.024579;<>@ACEGHJLMOQRTUWYZ\  !#%&(*,./13568:<=?ACDFHIKMNPRSUWXZ[]  "$&')+-/024679;=>@BDEGIJLNOQSTVXY[]^ !#%&(*,./13578:<>?ACEFHJKMOQRTVWY[\^_  "$%')+-/024679;=?@BDFGIKLNPRSUWXZ\]_a !#%&(*,./13578:<>?ACEGHJLMOQSTVXY[]^`b  "#%')+-.024679;=?@BDFGIKMNPRTUWY[\^`ac !"$&(*,-/13578:<>@ACEGHJLNOQSUVXZ\]_abd !#%')+,.024679;=?@BDFHIKMOPRTVWY[]^`bce  "$&()+-/13568:<>?ACEGHJLNPQSUWXZ\^_acdf !#%'(*,.023579;=>@BDFHIKMOQRTVXY[]_`bdfg  "$%')+-/12468:<=?ACEGHJLNPQSUWYZ\^`acegh  "$&(*,./13579;<>@BDFGIKMOQRTVXY[]_abdfhi !#%')+,.024689;=?ACEFHJLNPQSUWYZ\^`acegij  "$&')+-/13568:<>@BCEGIKMOPRTVXY[]_abdfhik !"$&(*,.023579;=?ABDFHJLMOQSUWXZ\^`bcegijl !#%')+-.02468:<=?ACEGIKLNPRTVWY[]_abdfhjkm  "$&')+-/13579:<>@BDFHIKMOQSUVXZ\^`acegijln  "$&(*,.023579;=?ACEFHJLNPRSUWY[]_`bdfhjkmo !#%')+,.02468:<>?ACEGIKMOPRTVXZ\]_acegijlnp  !#%')+-/13579:<>@BDFHJKMOQSUWY[\^`bdfgikmoq  "$&(*,./13579;=?ACEFHJLNPRTVWY[]_acefhjlnpq !#$&(*,.02468:<=?ACEGIKMOQRTVXZ\^`bcegikmopr !#%')+-/12468:<>@BDFHJKMOQSUWY[]^`bdfhjlmoqs  "#%')+-/13579;=?ABDFHJLNPRTVXY[]_acegijlnprt  "$&(*,.023579;=?ACEGIKMOPRTVXZ\^`bdegikmoqsu  "$&(*,.02468:<>@BCEGIKMOQSUWY[]^`bdfhjlnpqsu !#%')+-/12468:<>@BDFHJLNPRSUWY[]_acegijlnprtv !#%')+-/13579;=?ACDFHJLNPRTVXZ\^`acegikmoqsuw  "$&(*+-/13579;=?ACEGIKMOQSTVXZ\^`bdfhjlnoqsuw  "$&(*,.02468:<>?ACEGIKMOQSUWY[]_acdfhjlnprtvx  "$&(*,.02468:<>@BDFHJLNPQSUWY[]_acegikmoqstvx !#%')+-/12468:<>@BDFHJLNPRTVXZ\^`bcegikmoqsuwy !#%')+-/13579;=?ACEGHJLNPRTVXZ\^`bdfhjlnprtuwy !#%')+-/13579;=?ACEGIKMOQSUWY[]^`bdfhjlnprtvxz  "$&(*+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqrtvxz  "$&(*,.02468:<>@BDFGIKMOQSUWY[]_acegikmoqsuwy{  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`acegikmoqsuwy{  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxy{ !"$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz| !#%')+-/13579;=?ACEGIJLNPRTVXZ\^`bdfhjlnprtvxz| !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmnprtvxz| !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}KLNOPRSUVWXZ[\]_`abcefghijklmnopqrrstuvvwxxyzz{{||}}~LNOQRSUVWYZ[]^_`acdefghjklmnopqrsstuvwwxyzz{||}}~~NOQRSUVWYZ[]^_abcdeghijklmnopqrstuvwxyyz{||}}~OQRSUVXYZ\]^`abcefghiklmnopqrstuvwxyzz{|}}~PRSUVXYZ\]^`abdefgijklmopqrstuvwxyz{{|}~RSUVXYZ\]_`acdeghijkmnopqrtuvwxyz{{|}~SUVXYZ\]_`acdeghiklmnoqrstuvwxyz{|}~UVWYZ\]_`acdfghjklmopqrsuvwxyz{|}~VWYZ\]_`bcdfghjklnopqstuvwyz{|}~WYZ\]_`acdfgijkmnoqrstuwxyz{|}XZ[]^`acdfgijkmnoqrsuvwxy{|}~Z[]^`acdfgijkmnpqrtuvwyz{|}[]^`acdfgijkmnpqrtuvxyz{}~\^_abdeghjkmnpqrtuwxyz|}~]_abdeghjkmnpqrtuwxy{|}_`bceghjkmnpqrtuwxy{|~`acefhiklnoqrtuwxz{|~acdfgiklnoqrtuwxz{|~bdegijlmoqrtuwxy{|~ceghjkmoprsuvxy{|~efhikmnpqsuvxy{|~fgiklnoqstvwyz|~ghjlmoqrtuwyz|}hjkmoprsuwxz{}iklnpqsuvxy{}~jlmoqrtvwy{|~kmnprtuwyz|}lnoqsuvxz{}moprtvwy{|~npqsuwxz|}oqrtvxy{}prsuwyz|~qstvxz{}rsuwy{|~rtvxz{}suwy{|~tvxz{}uwyz|~vwy{}vxz|~wy{}xz|}xz|~y{}z|}z|~{}{}|~|~}}}~~~~}|{zyxxwvvutsrrqponmlkjihgfecba`_]\[ZXWVUSRPONLK~}|{zzyxwwvutssrqponmlkjhgfedca`_^][ZYWVUSRQONL~}}||{zyyxwvutsrqponmlkjihgedcba_^][ZYWVUSRQONр~}}|{zzyxwvutsrqponmlkihgfecba`^]\ZYXVUSRQOσ~}|{{zyxwvutsrqpomlkjigfedba`^]\ZYXVUSRPԂ~}|{{zyxwvutrqponmkjihgedca`_]\ZYXVUSR҅~}|{zyxwvutsrqonmlkihgedca`_]\ZYXVUS҇~}|{zyxwvusrqpomlkjhgfdca`_]\ZYWVUЊ~}|{zywvutsqponlkjhgfdcb`_]\ZYWVЌ}|{zyxwutsrqonmkjigfdca`_]\ZYWЎ~}|{yxwvusrqonmkjigfdca`^][ZXΑ}|{zywvutrqpnmkjigfdca`^][Z̔~}{zyxvutrqpnmkjigfdca`^][ѓ~}|zyxwutrqpnmkjhgedba_^\ϖ}|{yxwutrqpnmkjhgedba_]Ϙ~|{yxwutrqpnmkjhgecb`_Ϛ~|{zxwutrqonlkihfeca`͝~|{zxwutrqonlkigfdca͟~|{yxwutrqomljigedbˢ~|{yxvusrpomkjhgecˤ~|{yxvusqpnmkihfeΤ~|zywvtsqonlkigfΦ}|zywutrqomljhg̩}{zxwusrpomkjh̫~}{yxvusqpnlki̭~|{ywvtrqomljʰ}|zywutrpnmkʲ}{zxvusqonlͲ~|{ywvtrpom˵}|zxwusqpn˷}{yxvtrqo˹~|zywusrpɼ}{zxvtsqɾ~|{ywusr}{zxvtr~|{ywus}{zxvt~|zywu}{ywv~|zxv}{yw}|zx~|zx}{y}|z~|z}{}{~|~|}}}~~~-..//001 1 2 2 3 3 4 4 4 5 5 666777888999::::;;;;;<<<<<<========>==========-..//001 1 2 2 3 3 4 4 4 5 5 666777888999::::;;;;;<<<<<<========>==========-..//001 1 2 2 3 3 4 4 4 5 5 666777888999::::;;;;;<<<<<<========>==========IHGEDBA?><;9865310.-+)(&%#!  KIHGEDBA?><:976431/.,+)'&$#! LKIHFECB@?=<:975421/-,*)'%$"  NLKIHFECB@?=;:875320/-+*(&%#!  ONLKIHFDCA@>=;9865310.-+)(&$#! POMLJIGFDCA?><;976431/.,*)'%$"   RPOMLJIGEDBA?=<:975420/-+*(&%#!   SQPNMKJHGECB@?=;:875320.-+)'&$"!  TSQPNMKIHFECA@>=;986431/.,*('%#"   VTSQONLKIGFDCA?><:975420/-+)(&$#!  WUTRQOMLJIGEDBA?=<:865310.,+)'%$"   XWUSRPOMKJHGECB@>=;986421/-,*(&%#!  YXVUSQPNMKIHFDCA?><:975320.-+)'%$"   [YWVTSQONLJIGEDB@?=;:86431/-,*(&%#!  \ZYWUTRQOMLJHGECA@><;975420.-+)'&$"   ][ZXWUSRPNMKIHFDCA?=<:86531/.,*(&%#!  ^][YXVTSQONLJIGEDB@>=;976420/-+)'&$"  _^\[YWVTRQOMKJHFECA?><:87531/.,*(&%#! a_]\ZXWUSRPNLKIGFDB@?=;976420/-+)'%$"  b`^][YXVTSQOMLJHGECA?><:87531/.,*(&%#! ca`^\[YWUTRPNMKIGFDB@?=;976420.-+)'%#"  dba_]\ZXVUSQONLJHGECA@><:87531/-,*(&$"! ecb`^][YWVTRPOMKIHFDB@?=;976420.,+)'%#! fdca_^\ZXWUSQPNLJHGECA?><:86531/-+)(&$"  gfdb`_][YXVTRQOMKIHFDB@>=;975320.,*('%#! hgeca`^\ZYWUSQPNLJHGECA?=<:86421/-+)'%$"  ihfdba_][YXVTRQOMKIGFDB@><;97531/.,*(&$"  jigeca`^\ZYWUSQPNLJHFECA?=;986420.,+)'%#! kihfdba_][YXVTRPOMKIGECB@><:86531/-+)'&$"  ljigecb`^\ZXWUSQOMLJHFDBA?=;975320.,*(&$"! mkjhfdba_][YWVTRPNLKIGECA?=<:86420.-+)'%#! nljigeca`^\ZXVUSQOMKIHFDB@><:97531/-+)'&$"  omkjhfdb`_][YWUSRPNLJHFECA?=;975320.,*(&$"  pnljigeca_]\ZXVTRPOMKIGECA?><:86420.,+)'%#! qomkigfdb`^\[YWUSQOMKJHFDB@><:97531/-+)'%#!  qpnljhfeca_][YWVTRPNLJHFECA?=;97531/.,*(&$"  rpomkigecb`^\ZXVTRQOMKIGECA?=<:86420.,*(&$#! sqomljhfdb`^][YWUSQOMKJHFDB@><:86421/-+)'%#! trpnljigeca_][YXVTRPNLJHFDBA?=;97531/-+)'%#"  usqomkigedb`^\ZXVTRPOMKIGECA?=;975320.,*(&$"  usqpnljhfdb`^][YWUSQOMKIGECB@><:86420.,*(&$"  vtrpnljigeca_][YWUSRPNLJHFDB@><:86421/-+)'%#! wusqomkigeca`^\ZXVTRPNLJHFDCA?=;97531/-+)'%#! wusqonljhfdb`^\ZXVTSQOMKIGECA?=;97531/-+*(&$"  xvtrpnljhfdca_][YWUSQOMKIGECA?><:86420.,*(&$"  xvtsqomkigeca_][YWUSQPNLJHFDB@><:86420.,*(&$"  ywusqomkigecb`^\ZXVTRPNLJHFDB@><:86421/-+)'%#! ywutrpnljhfdb`^\ZXVTRPNLJHGECA?=;97531/-+)'%#! zxvtrpnljhfdb`^][YWUSQOMKIGECA?=;97531/-+)'%#! zxvtrqomkigeca_][YWUSQOMKIGECA?=;97531/-+*(&$"  {ywusqomkigeca_][YWUSQOMKIGFDB@><:86420.,*(&$"  {ywusqomkigeca`^\ZXVTRPNLJHFDB@><:86420.,*(&$"  {yxvtrpnljhfdb`^\ZXVTRPNLJHFDB@><:86420.,*(&$"  |zxvtrpnljhfdb`^\ZXVTRPNLJHFDB@><:86420.,*(&$"! |zxvtrpnljhfdb`^\ZXVTRPNLJIGECA?=;97531/-+)'%#! |zxvtrpnmkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! ===================<<<<<<;;;;;::::999888777666 5 5 4 4 4 3 3 2 2 1 100//..-===================<<<<<<;;;;;::::999888777666 5 5 4 4 4 3 3 2 2 1 100//..-===================<<<<<<;;;;;::::999888777666 5 5 4 4 4 3 3 2 2 1 100//..- !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmnprtvxz| !#%')+-/13579;=?ACEGIJLNPRTVXZ\^`bdfhjlnprtvxz| !"$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxy{  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`acegikmoqsuwy{  "$&(*,.02468:<>@BDFGIKMOQSUWY[]_acegikmoqsuwy{  "$&(*+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqrtvxz !#%')+-/13579;=?ACEGIKMOQSUWY[]^`bdfhjlnprtvxz !#%')+-/13579;=?ACEGHJLNPRTVXZ\^`bdfhjlnprtuwy !#%')+-/12468:<>@BDFHJLNPRTVXZ\^`bcegikmoqsuwy  "$&(*,.02468:<>@BDFHJLNPQSUWY[]_acegikmoqstvx  "$&(*,.02468:<>?ACEGIKMOQSUWY[]_acdfhjlnprtvx  "$&(*+-/13579;=?ACEGIKMOQSTVXZ\^`bdfhjlnoqsuw !#%')+-/13579;=?ACDFHJLNPRTVXZ\^`acegikmoqsuw !#%')+-/12468:<>@BDFHJLNPRSUWY[]_acegijlnprtv  "$&(*,.02468:<>@BCEGIKMOQSUWY[]^`bdfhjlnpqsu  "$&(*,.023579;=?ACEGIKMOPRTVXZ\^`bdegikmoqsu  "#%')+-/13579;=?ABDFHJLNPRTVXY[]_acegijlnprt !#%')+-/12468:<>@BDFHJKMOQSUWY[]^`bdfhjlmoqs !#$&(*,.02468:<=?ACEGIKMOQRTVXZ\^`bcegikmopr  "$&(*,./13579;=?ACEFHJLNPRTVWY[]_acefhjlnpq  !#%')+-/13579:<>@BDFHJKMOQSUWY[\^`bdfgikmoq !#%')+,.02468:<>?ACEGIKMOPRTVXZ\]_acegijlnp  "$&(*,.023579;=?ACEFHJLNPRSUWY[]_`bdfhjkmo  "$&')+-/13579:<>@BDFHIKMOQSUVXZ\^`acegijln !#%')+-.02468:<=?ACEGIKLNPRTVWY[]_abdfhjkm !"$&(*,.023579;=?ABDFHJLMOQSUWXZ\^`bcegijl  "$&')+-/13568:<>@BCEGIKMOPRTVXY[]_abdfhik !#%')+,.024689;=?ACEFHJLNPQSUWYZ\^`acegij  "$&(*,./13579;<>@BDFGIKMOQRTVXY[]_abdfhi  "$%')+-/12468:<=?ACEGHJLNPQSUWYZ\^`acegh !#%'(*,.023579;=>@BDFHIKMOQRTVXY[]_`bdfg  "$&()+-/13568:<>?ACEGHJLNPQSUWXZ\^_acdf !#%')+,.024679;=?@BDFHIKMOPRTVWY[]^`bce !"$&(*,-/13578:<>@ACEGHJLNOQSUVXZ\]_abd  "#%')+-.024679;=?@BDFGIKMNPRTUWY[\^`ac !#%&(*,./13578:<>?ACEGHJLMOQSTVXY[]^`b  "$%')+-/024679;=?@BDFGIKLNPRSUWXZ\]_a !#%&(*,./13578:<>?ACEFHJKMOQRTVWY[\^_  "$&')+-/024679;=>@BDEGIJLNOQSTVXY[]^  !#%&(*,./13568:<=?ACDFHIKMNPRSUWXZ[]   "$&')+-.024579;<>@ACEGHJLMOQRTUWYZ\  !#%&(*,-/13468:;=?@BDEGIJLNOQSTVWY[   "$%')+-.023579:<>?ACDFHIKMNPQSUVXY  !#%&(*,-/124689;=>@BCEGHJKMOPRSUWX   "$%')+,.013568:<=?ABDEGIJLMOQRTUW  !#$&()+-/024579:<>?ACDFGIKLNOQSTV   "#%'(*,./134689;=>@ACEFHIKMNPQST  !"$&')+-.023578:;=?@BCEGHJKMNPQS   !#%&(*+-/024579:<=?ABDEGIJLMOPR   "$%')*,./134679;<>?ACDFGIJLMOP !#$&()+-.0135689;=>@ACDFHIKLNO  !#%&(*+-/023578:;=?@BCEFHIKLN  "$%')*,-/124579:<=?@BCEFHIKL !#$&')+,./134679:<>?ABDEGHIK  !#%&()+-.0135689;<>?ABDEGHI~~~}}}|~|~{}{}z|~z|}y{}xz|~xz|}wy{}vxz|~vwy{}uwyz|~tvxz{}suwy{|~rtvxz{}rsuwy{|~qstvxz{}prsuwyz|~oqrtvxy{}npqsuwxz|}moprtvwy{|~lnoqsuvxz{}kmnprtuwyz|}jlmoqrtvwy{|~iklnpqsuvxy{}~hjkmoprsuwxz{}ghjlmoqrtuwyz|}fgiklnoqstvwyz|~efhikmnpqsuvxy{|~ceghjkmoprsuvxy{|~bdegijlmoqrtuwxy{|~acdfgiklnoqrtuwxz{|~`acefhiklnoqrtuwxz{|~_`bceghjkmnpqrtuwxy{|~]_abdeghjkmnpqrtuwxy{|}\^_abdeghjkmnpqrtuwxyz|}~[]^`acdfgijkmnpqrtuvxyz{}~Z[]^`acdfgijkmnpqrtuvwyz{|}XZ[]^`acdfgijkmnoqrsuvwxy{|}~WYZ\]_`acdfgijkmnoqrstuwxyz{|}VWYZ\]_`bcdfghjklnopqstuvwyz{|}~UVWYZ\]_`acdfghjklmopqrsuvwxyz{|}~SUVXYZ\]_`acdeghiklmnoqrstuvwxyz{|}~RSUVXYZ\]_`acdeghijkmnopqrtuvwxyz{{|}~PRSUVXYZ\]^`abdefgijklmopqrstuvwxyz{{|}~OQRSUVXYZ\]^`abcefghiklmnopqrstuvwxyzz{|}}~NOQRSUVWYZ[]^_abcdeghijklmnopqrstuvwxyyz{||}}~LNOQRSUVWYZ[]^_`acdefghjklmnopqrsstuvwwxyzz{||}}~~KLNOPRSUVWXZ[\]_`abcefghijklmnopqrrstuvvwxxyzz{{||}}~~~~}}}~|~|}{}{~|z}|z}{y~|zx}|zx}{yw~|zxv}{ywv~|zywu}{zxvt~|{ywus}{zxvtrɾ~|{ywusrɼ}{zxvtsq˹~|zywusrp˷}{yxvtrqo˵}|zxwusqpnͲ~|{ywvtrpomʲ}{zxvusqonlʰ}|zywutrpnmk̭~|{ywvtrqomlj̫~}{yxvusqpnlki̩}{zxwusrpomkjhΦ}|zywutrqomljhgΤ~|zywvtsqonlkigfˤ~|{yxvusqpnmkihfeˢ~|{yxvusrpomkjhgec͟~|{yxwutrqomljigedb͝~|{zxwutrqonlkigfdcaϚ~|{zxwutrqonlkihfeca`Ϙ~|{yxwutrqpnmkjhgecb`_ϖ}|{yxwutrqpnmkjhgedba_]ѓ~}|zyxwutrqpnmkjhgedba_^\̔~}{zyxvutrqpnmkjigfdca`^][Α}|{zywvutrqpnmkjigfdca`^][ZЎ~}|{yxwvusrqonmkjigfdca`^][ZXЌ}|{zyxwutsrqonmkjigfdca`_]\ZYWЊ~}|{zywvutsqponlkjhgfdcb`_]\ZYWV҇~}|{zyxwvusrqpomlkjhgfdca`_]\ZYWVU҅~}|{zyxwvutsrqonmlkihgedca`_]\ZYXVUSԂ~}|{{zyxwvutrqponmkjihgedca`_]\ZYXVUSRσ~}|{{zyxwvutsrqpomlkjigfedba`^]\ZYXVUSRPр~}}|{zzyxwvutsrqponmlkihgfecba`^]\ZYXVUSRQO~}}||{zyyxwvutsrqponmlkjihgedcba_^][ZYWVUSRQON~}|{zzyxwwvutssrqponmlkjhgfedca`_^][ZYWVUSRQONL~}|{zyxxwvvutsrrqponmlkjihgfecba`_]\[ZXWVUSRPONLK>==========<=======<<<<<<;;;;;::::9998887776665 5 4 4 4 3 3 2 2 1 1 00//..->==========<=======<<<<<<;;;;;::::9998887776665 5 4 4 4 3 3 2 2 1 1 00//..->==========<=======<<<<<<;;;;;::::9998887776665 5 4 4 4 3 3 2 2 1 1 00//..-}{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! |zxvtrpnmkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! |zxvtrpnljhfdb`^\ZXVTRPNLJIGECA?=;97531/-+)'%#! |zxvtrpnljhfdb`^\ZXVTRPNLJHFDB@><:86420.,*(&$"! {yxvtrpnljhfdb`^\ZXVTRPNLJHFDB@><:86420.,*(&$"  {ywusqomkigeca`^\ZXVTRPNLJHFDB@><:86420.,*(&$"  {ywusqomkigeca_][YWUSQOMKIGFDB@><:86420.,*(&$"  zxvtrqomkigeca_][YWUSQOMKIGECA?=;97531/-+*(&$"  zxvtrpnljhfdb`^][YWUSQOMKIGECA?=;97531/-+)'%#! ywutrpnljhfdb`^\ZXVTRPNLJHGECA?=;97531/-+)'%#! ywusqomkigecb`^\ZXVTRPNLJHFDB@><:86421/-+)'%#! xvtsqomkigeca_][YWUSQPNLJHFDB@><:86420.,*(&$"  xvtrpnljhfdca_][YWUSQOMKIGECA?><:86420.,*(&$"  wusqonljhfdb`^\ZXVTSQOMKIGECA?=;97531/-+*(&$"  wusqomkigeca`^\ZXVTRPNLJHFDCA?=;97531/-+)'%#! vtrpnljigeca_][YWUSRPNLJHFDB@><:86421/-+)'%#! usqpnljhfdb`^][YWUSQOMKIGECB@><:86420.,*(&$"  usqomkigedb`^\ZXVTRPOMKIGECA?=;975320.,*(&$"  trpnljigeca_][YXVTRPNLJHFDBA?=;97531/-+)'%#"  sqomljhfdb`^][YWUSQOMKJHFDB@><:86421/-+)'%#! rpomkigecb`^\ZXVTRQOMKIGECA?=<:86420.,*(&$#! qpnljhfeca_][YWVTRPNLJHFECA?=;97531/.,*(&$"  qomkigfdb`^\[YWUSQOMKJHFDB@><:97531/-+)'%#!  pnljigeca_]\ZXVTRPOMKIGECA?><:86420.,+)'%#! omkjhfdb`_][YWUSRPNLJHFECA?=;975320.,*(&$"  nljigeca`^\ZXVUSQOMKIHFDB@><:97531/-+)'&$"  mkjhfdba_][YWVTRPNLKIGECA?=<:86420.-+)'%#! ljigecb`^\ZXWUSQOMLJHFDBA?=;975320.,*(&$"! kihfdba_][YXVTRPOMKIGECB@><:86531/-+)'&$"  jigeca`^\ZYWUSQPNLJHFECA?=;986420.,+)'%#! ihfdba_][YXVTRQOMKIGFDB@><;97531/.,*(&$"  hgeca`^\ZYWUSQPNLJHGECA?=<:86421/-+)'%$"  gfdb`_][YXVTRQOMKIHFDB@>=;975320.,*('%#! fdca_^\ZXWUSQPNLJHGECA?><:86531/-+)(&$"  ecb`^][YWVTRPOMKIHFDB@?=;976420.,+)'%#! dba_]\ZXVUSQONLJHGECA@><:87531/-,*(&$"! ca`^\[YWUTRPNMKIGFDB@?=;976420.-+)'%#"  b`^][YXVTSQOMLJHGECA?><:87531/.,*(&%#! a_]\ZXWUSRPNLKIGFDB@?=;976420/-+)'%$"  _^\[YWVTRQOMKJHFECA?><:87531/.,*(&%#! ^][YXVTSQONLJIGEDB@>=;976420/-+)'&$"  ][ZXWUSRPNMKIHFDCA?=<:86531/.,*(&%#!  \ZYWUTRQOMLJHGECA@><;975420.-+)'&$"   [YWVTSQONLJIGEDB@?=;:86431/-,*(&%#!  YXVUSQPNMKIHFDCA?><:975320.-+)'%$"   XWUSRPOMKJHGECB@>=;986421/-,*(&%#!  WUTRQOMLJIGEDBA?=<:865310.,+)'%$"   VTSQONLKIGFDCA?><:975420/-+)(&$#!  TSQPNMKIHFECA@>=;986431/.,*('%#"   SQPNMKJHGECB@?=;:875320.-+)'&$"!  RPOMLJIGEDBA?=<:975420/-+*(&%#!   POMLJIGFDCA?><;976431/.,*)'%$"   ONLKIHFDCA@>=;9865310.-+)(&$#! NLKIHFECB@?=;:875320/-+*(&%#!  LKIHFECB@?=<:975421/-,*)'%$"  KIHGEDBA?><:976431/.,+)'&$#! IHGEDBA?><;9865310.-+)(&%#!  ,,++*))(''&%$$#"!   !"#$%&'()*+,./01 3 4 5 78:;=,,++*))(''&%$$#"!   !"#$%&'()*+,./01 3 4 5 78:;=,,++*))(''&%$$#"!   !"#$%&'()*+,./01 3 4 5 78:;=  "#%'(*+-/0235689;<>?ABDEGH !"$%')*,-/024578:;=>?ABDEG !#$&')+,./124578:;=>@ABDE  !#%&()+,./124578:;=>@ABD  "#%&(*+-.0134678:;=>@AB !"$%'(*+-.0134679:;=>?A !"$%'(*+-.0134679:;=>?  !#$&')*,-/0134678:;=>  !#$&')*,-/0134678:;<  "#$&')*,-/0134678:;  "#%&')*,-/01345789  "#%&()*,-/0134578  "#%&()*,-.012456  "#%&')*,-.01245  "#%&')*+-./123  "#%&')*+-./02  "#$&'(*+,./0  "#$&'(*+,-/  "#$%'()+,-  !#$%&()*+  !"$%&')*   !"#%&'(! !"#$%'"  !#$%#  !"#$ !"%  & ' ( ) * + - . / 0 2 3 4 6 79:< =<:86 4 2/-*'$!!&,4 ? =<:86 4 2/-*'$!!&,4 ? =<:86 4 2/-*'$!!&,4 ?IKLNOPRSTVWXY[\]^_abcdefghijklmnopqqrstuuvwwxxyyzz{{|}HIKLNOPQSTUWXYZ[]^_`abcdfghiijklmnoppqrsstuuvvwwxxyyz{GHIKLMOPQSTUVWYZ[\]^`abcdefghijjklmnoopqqrssttuuvvwwxxyEGHIKLMNPQRSUVWXY[\]^_`abcdefghijjklmmnoppqqrssttuvwDEFHIJLMNOQRSTUWXYZ[\]^_`abcdefghiijkllmnnoopqqrrstuBDEFHIJKMNOPQSTUVWXY[\]^_`aabcdefgghijjkllmnnooppqqrsABCEFGIJKLMOPQRSTVWXYZ[\]^_`abbcdeffghiijjkllmmnnoopq?ABCDFGHIKLMNOQRSTUVWXYZ[\]^_`aabcdeefgghiijjkkllmmno>?@BCDEGHIJKMNOPQRSTUVWXYZ[\]^_``abccdeefgghhiijjkklm<>?@ACDEFGIJKLMNOQRSTUVWXYYZ[\]^__`abbcddeeffgghhiijk;<=?@ABCEFGHIJLMNOPQRSTUVWXYYZ[\]]^_``abbccddeeffgghi9:<=>?ABCDEGHIJKLMNOPQRSTUVWXXYZ[\\]^^_``aabccdefg89:;=>?@ACDEFGHIJKLMNOPQRSTUVWWXYZ[[\]]^^_``aabbcde679:;<=?@ABCDEGHIJKLMNOPQQRSTUVVWXYYZ[[\]]^^__``abc56789;<=>?ABCDEFGHIJKLMNOPQQRSTUUVWWXYYZ[[\\]]^^_`a345789:;=>?@ABCDEFGHIJKLMNOPPQRSSTUVVWXXYYZZ[[\\]]^_1345679:;<=>?@ACDEFGGHIJKLMNOOPQRRSTTUVVWWXXYYZZ[[\]012356789:<=>?@ABCDEFGHHIJKLMMNOPPQRRSTTUUVVWWXXYYZ[./12345789:;<=>?@ABCDEFGHHIJKLLMNOOPQQRRSSTTUUVVWWXY-./013456789:;<=>?@ABCDEFGGHIJKKLMMNOOPPQRRSSTUVW+,-/012345689:;<=>??@ABCDEFFGHIIJKKLMMNOOPPQQRSTU)+,-./023456789:;<=>?@@ABCDEEFGHHIJJKKLMMNNOOPPQRS()*+-./0123456789:;<=>??@ABCCDEFFGHHIJJKKLLMMNNOPQ&')*+,-./0123456789:;<=>>?@ABBCDEEFFGHHIIJJKKLLMNO%&'()*+-./01234567789:;<==>?@AABCCDEEFFGGHHIIJJKLM#$%&()*+,-./01234567789:;<<=>??@AABCCDDEEFFGGHHIJK!#$%&'()*+,-./01234567789:;;<==>??@AABBCCDDEEFFGGH I !"#$%&'()+,--./012345667899:;<<=>>??@AABBCCDEF G !#$%&'()*+,-.//012345567889::;<<==>??@@AABCD E !"#$%&'()*+,-.//0123345667899::;<<==>>??@AB C !"#$%&'()*+,-../01223455677899::;;<<==>>?@ A !"#$%%&'()*+,--./0112334556778899::;;<<=> ? !"#$%&&'()*+,,-.//01223345566778899::;< = !"#$%&&'()*++,-../001223344556677889: ; !"#$%%&'())*+,,-../0011223344556678 9 !"#$%%&'(()*++,--..//011223456 7 !"##$%&''())*++,,-..//0011234 5 !""#$%%&''())*++,,--..//012 3  !!"#$$%&&''())**++,,--./0 1  !""#$$%&&''(())**++,-. /  !""#$$%%&&''(())**+, -  !!""##$$%%&&''(()* +  !!"##$%&'( )  !!""#$%& '   !"#$ %  !" #  !                                 ! & , 4 ? ;:864 2 /-*'$!!&, t ;:864 2 /-*'$!!&, t ;:864 2 /-*'$!!&, t}|{zyxwvuutsrqqponmlkjihgfedcba_^]\[YXWVTSRPONLKI{{zyxwvutssrqpponmlkjiihgfdcba`_^][ZYXWUTSQPONLKIHyyxwvutsrqqpoonmlkjjihgfedcba`^]\[ZYWVUTSQPOMLKIHGwwvutsrqqpponmmlkjjihgfedcba`_^]\[YXWVUSRQPNMLKIHGEuutsrqpoonnmllkjiihgfedcba`_^]\[ZYXWUTSRQONMLJIHFEDssrqponmllkjjihggfedcbaa`_^]\[YXWVUTSQPONMKJIHFEDBqqponmlkjjiihgffedcbba`_^]\[ZYXWVTSRQPOMLKJIGFECBAoonmlkjihggfeedcbaa`_^]\[ZYXWVUTSRQONMLKIHGFDCBA?mmlkjihgfeedccba``_^]\[ZYXWVUTSRQPONMKJIHGEDCB@?>kkjihgfedcbba`__^]\[ZYYXWVUTSRQONMLKJIGFEDCA@?>=<:9eedcba`_^^]]\[[ZYXWWVUTSRQPONMLKJIHGFEDCA@?>=;:98ccba`_^]\[[ZYYXWVVUTSRQQPONMLKJIHGEDCBA@?=<;:976aa`_^]\[ZYYXWWVUUTSRQQPONMLKJIHGFEDCBA?>=<;98765__^]\[ZYXWVVUTSSRQPPONMLKJIHGFEDCBA@?>=;:987543]]\[ZYXWVUTTSRRQPOONMLKJIHGGFEDCA@?>=<;:9765431[[ZYXWVUTSRRQPPONMMLKJIHHGFEDCBA@?>=<:987653210YYXWVUTSRQPOONMLLKJIHHGFEDCBA@?>=<;:98754321/.WWVUTSRQPPOONMMLKKJIHGGFEDCBA@?>=<;:987654310/.-UUTSRQPONMMLKKJIIHGFFEDCBA@??>=<;:986543210/-,+SSRQPONMLKKJJIHHGFEEDCBA@@?>=<;:987654320/.-,+)QQPONMLKJIHHGFFEDCCBA@??>=<;:9876543210/.-+*)(OONMLKJIHGFFEEDCBBA@?>>=<;:9876543210/.-,+*)'&MMLKJIHGFEDCCBAA@?>==<;:98776543210/.-+*)('&%KKJIHGFEDCBAA@??>=<<;:98776543210/.-,+*)(&%$#IIHGFEDCBA@??>==<;;:98776543210/.-,+*)('&%$#!GGFEDCBA@??>>=<<;:998766543210/.--,+)('&%$#"! EEDCBA@?>==<<;::988765543210//.-,+*)('&%$#! CCBA@?>=<;::9987665433210//.-,+*)('&%$#"! AA@?>=<;:9877655432210/..-,+*)('&%$#"! ??>=<;:9876554332110/.--,+*)('&%%$#"! ==<;:987654332210//.-,,+*)('&&%$#"! ;;:98765432100/..-,++*)('&&%$#"! 99876543210/..-,,+*))('&%%$#"! 776543210//..--,++*)(('&%%$#"! 5543210/.-,,++*))(''&%$##"! 33210/.-,+*))(''&%%$#""! 110/.-,+*)(''&&%$$#"!!  //.-,+*)('&%$$#""!  --,+*)('&%$#""!  ++*)('&%$#"!  ))('&%$#"!!  ''&%$#"!  %%$#"!  ##"!  ! !                                         ! & , t,,++*))(''&%$$#"!   !"#$%&'()*+,./0 1 3 4 578:;,,++*))(''&%$$#"!   !"#$%&'()*+,./0 1 3 4 578:;,,++*))(''&%$$#"!   !"#$%&'()*+,./0 1 3 4 578:;HGEDBA?><;9865320/-+*('%#"  GEDBA?>=;:875420/-,*)'%$"! EDBA@>=;:875421/.,+)'&$#! DBA@>=;:875421/.,+)(&%#!  BA@>=;:8764310.-+*(&%#"  A?>=;:9764310.-+*('%$"! ?>=;:9764310.-+*('%$"! >=;:8764310/-,*)'&$#!  <;:8764310/-,*)'&$#!  ;:8764310/-,*)'&$#"  98754310/-,*)'&%#"  8754310/-,*)(&%#"  654210.-,*)(&%#"  54210.-,*)'&%#"  321/.-+*)'&%#"  20/.-+*)'&%#"  0/.,+*('&$#"  /-,+*('&$#"  -,+)('%$#"  +*)(&%$#!  *)'&%$"!  ('&%#"!   '%$#"! !%$#!  "#"!  #"! $  % & ' ( ) * + - . / 0 2 3 4 679:@@Kajal-Glossy Maske 0|**************"""""""77777775 f2 :.^+!f'6t#Bt%Fg' .Op/ *:K[k})))))))777777777777777777777777777762ьT/] +o-'ΈC#đf [)ۺxW6¡_?&scSB2"@@iiKajal     *iiii        )))))))                                                               )))))))                                                               )))))))                                                        8888888888888[======! " " " " " "                                   ! " " " " " "  %              !!!!!!          !%              !!!!!!          !%              !!!!!!          !%              !!!!!!               !                                                                                                                                                          # # # # # # !!!!!!       !!!!!!!        !!!!!!       !!!!!!!        !!!!!!       !!!!!!!        !!!!!!       !!!!!!!        44qqinnerer SchattenL     .qqBqq(0:F]  2  $%$  1":NX[XN:"0:ef;/ NͶN! / %X͚Y% / &\՟\& / &\ס]' / &]ء]' / &]ء]' / &]ء]' / &]ء]' / &]ء]' / &\֠\& / %YΚY% / OηO! /:ef;0":NX[XN:"!%&%!   #     "  $%%&&%$    $'"":NX\\]]\YN:"":NX]!:e🚈f;:e! NͶN!  N! %X͚Y%  %X &\՟\&  &\      &\ס]'  &\  $%%&&%$    &]ء]'  &]":NX\\]]\YN:"  &]ء]'  &]:ef;  &]ء]'  &] NͶN!   &]ء]'  &] %X͚Y%   &]ء]'  &] &[Ӟ[&  ']֠]'  '] %X͚Y%    -_О_- /c OηO!   $%%&&'-AgмgA-)/Gu:ef;":NX\\]]_gu砞ug_^du":NX\\]]\YN:":eug_]]_gu!%&&''&%! NϼgB.(''(.Ag     %XϞ`.  ._ &\ՠ]( )^ &\ס]'  0c &]ء]'   $'/Gu &]ء]' ":NX]cuï &]ء]' :eØud^ &]ء]'  NޯvH0* &]ء]'  %X٥d0 &\֠]'  '\֡_* %YО_- /cО`. OмgA-)/GuмgA-):e⠞ug_^duïug_^":NX\\]]_guØud^`gu!%&&''(.AgޯvH0*.Ag   ._٥d0._)^֡_*)^   0cО`.._  $%%&&'/GuмgA-(-Ag":NX\\]]^cuïug_^_gu:e㥯Øud^`guug_^ NޯvH0*.AgϼgB.* %X٥d0._Ϟ`. '\֡_*)^֡_* @ @ @f      $%%&&%$   ":NX\\]]\YN:" :ef;  NͶN!   %X͚Y%   '\Ӟ\'  /c ϝ_-   $'/Gu мgA-'$  ":NX]cuï ۠ug_\YN:":eØud^] ]_guf; NޯvH0(' '(.AgͶN!  %X٥d0 ._͚Y%  '\֡^(   (]՟\& /cΚY%   &\ס]' /GuηO!   &]ء]' cuïf;  &]ء]' Øud]YN:"  &]ء]' ޯvH0(%!  &]ء]' ٥d0   &]ء]' ֡^(  ']֠\& ΚY%   -_ΚY% ηO!    $&-AgηO! ïf; ":NX\_guf;Øud]YN:" :eug_\YN:"ޯvH0(%!  NϼgB.(%!٥d0   %XϞ`. آ^(  '\ԟ^)ء]'   -_Ϟ`. ء]'    $&-AgмgA-'$  ء]'  ":NX\_guug_\YN:"ء]'  :eug_^_guf;ء]'   NϼgB.).AgͶN! ء]'   %XϞ`.._͚Y% ֠]'   '\ԟ^))^Ӟ[& О_- E -_Ϟ`.._͚Y% мgA-'$    $&-AgмgA-(-AgηO! ug_\YN:"":NX\_guug_^_guf;`guf;:eug_^_guug_\YN:".AgͶN!  NϼgB.).AgϼgB.(%!._͚Y%  %XϞ`.._Ϟ`. )^ՠ]'  '\ԟ](  '\ԟ]( 0cؤc/ -_͚Y%  %X͚Y% /GuݯuG/)-AgηO!  OηO! duØud^`guf;:ef;֤ïug_\YN:"":NX[XN:"ϼgB.(%!!%&%!Ϟ`.   ԟ^)  Ϟ`.   мgA-'&&%$   뤯ïug_]]\YN:" duØud^`guf; 0GvޯvH0*.AgͶN!  0d٥d0._͚Y%  *_أ`*)^ՠ]'   @ @ @ /cО`.0cإd0   $'/GuмgA-)/GuݯuG/) ":NX]cuï頞ug_^duØud_ :eØud^]]_guï  NޯvH0(''(.Ag  %X٥d0  ._  '\֡^(  '\ /cΚY%  %X  $'/GuηO!  O":NX]cuïf;:eï:eØud]YN:"":NX]cuØud_ NޯvH0(%!!%(0GvޯvH0* %X٥d0  0d٥d0 &\֡^(  *_֡_* &\ΚY%   .`О`. &]ηO!    $&-AgмgA-) &]ïf; ":NX\_guug_^ &]Øud]YN:" :eug_^_gu &]ޯvH0(%!  NϼgB.).Ag &]٥d0   %XϞ`.._ &]آ^(  '\ԟ](  (] &]ء]'   -_͚Y%  &\ &]ء]'    $&-AgηO!  &] &]ء]'  ":NX\_guf; &] &]ء]'  :eug_\YN:" &] &]ء]'   NϼgB.(%! &] &]ء]'   %XϞ`.  &] &]ء]'   '\ԟ^) &\ &]ء]'  -_Ϟ`.  %Y &]ء]'   $&-AgмgA-'$   O &]ء]' ":NX\_guug_\YN:":e &]ء]' :eug_^_guf;":NX] &]ء]'  NϼgB.).AgͶN! !%( &]ء]'  %XϞ`.._͚Y%   &\֠]'  '\ԟ^))^Ӟ[&  %YО_-  -_Ϟ`.._͚Y%  OмgA-'&&'-AgмgA-(-AgηO! :eug_]]_guug_^_guf;":NX\_gu㠞ug_^_guug_\YN:"!%'.AgϼgB.).AgϼgB.(%! ._Ϟ`.._Ϟ`.  '\ԟ](  '\ԟ](  %X͚Y%  %X͚Y%  OηO!  OηO! :e韚f;:ef;":NX\\]]\YN:"":NX[XN:"!%&&''&%!!%&%!        a a a0d٥d00cؤc/ /GuݯuG/)/GuݯuG/'$  duØud_duØud]YN:"饯ïïf;ͶN! ͚Y%  Ӟ[& ͚Y%  ηO! ï f;duØud^] ]\YN:"0GvޯvH0(' '&%!0d٥d0  *_֡_* 0dО`.   /GuмgA-'&&%$  duïug_]]\YN:"Øud^`gu៚f;ޯvH0*.AgͶN! ٥d0._͚Y% آ^(  (] Ӟ[& ء]'  &\͚Y% ء]'  &]ηO! ء]'  &]ïf;ء]'  &]Øud^]]\YN:"ء]'  &]ޯvH0(''&%!ء]'  &]٥d0   ء]'  &]֡_*ء]'  &]О`.   ء]'  &]мgA-'&&%$  ء]'  &]ïug_]]\YN:"cuء]'  &]Øud^`guӟf;0Gvء]'  &]ޯvH0*.AgͶN! 0dء]'  &]٥d0._͚Y%  (]֠\&  &]آ^(  (]Ӟ[&  %YΚY%  &]ء]'  &\͚Y%  OηO!  &]ء]'  &]ηO! :ef; &]ء]'  &]ïf;":NX[XN:" &]ء]'  &]Øud]YN:"!%&%! &]ء]'  &]ޯvH0(%!   &]ء]'  &]٥d0  &\֠\&  &\֡^(  %YΚY%  %YΚY%  OηO!  OηO! :ef;:ef;":NX[XN:"":NX[XN:"!%&%!!%&%!     88Rumpf     BBi`BJQPX $.*%"###### # # # # $$$$ % % % % %& &&& $.)% " " " "### # # # # $ $ $ $ % % % % % && & &  $Y[\^_`aabbccdefi.[\]^_`abbccdefi)]^_`abbccdcdg%^_`aabccd dcb#_`abbccd dcb#abcdeddedcb#bcd edcb"cdedc#eccdefedc"edccddeef fed#edde fed#edde fed#fddefed#gddefe#iddefe$defe$defe$eddef$hddef%def%def%def%eddef%hccde f&cde f&bcde f&cbbcde f&faabbccddef $ . #(,035664.'")#*1794+$ %$,4JU`js||tkbYPF=".7CO\gr|vmcZPG"/9FTanyvmdZQ"/:HWfsvlcZ",9IYiw}tkb"&5HZkzĿ{sj"-EZl{Ľyq"&BXk{ƿw#">Viz|# ;Rfwľ#5Mbs#-F\n}$%@Vhw$9Oao|$3GYgt$+?P_kv$ "7HVbmv%.?MXcmv}&'6COZclt{%-:FPZcksy%%1=GQZbjqw| =:852 0/-++('%$#"!      =:85200- +*( '% $ # " !         g=a`_f:a`_]\\8ba`^]\\a5ba_^^]]^i2cbba`__^^i0cbaa``__`/dccba`d-dcba`bi+dcbac*dcbah(dcbab'edcbabi%edcbag$e dcba`c#edcba`d" edcbae!f edcbag f edcbhf edcbhf edcbif edcbhfedcbfedcbdfedce = ; 8)! 54,$ 3>5-&  1H?7/)$  /QH@92-)&$"  -ZQIA;62/-+)'$! ,bYRJD?;85420-*&" *iaYSMHD@><;9630,'"(ohaZUPLIGECB?=961,'! 'unhb\XTQOMLJHEB?;61+%&{tnhd_\YWVUSQNKHD?;5/(!$ytokgdb`_][YWTQMHD?92+##~zurnljhgfdb`]YVQMHB<5.%"⇃|xvtrqpnmkhfb_ZVQLF?80'!዇}|zyywvtqolhd_ZUPIB;2) }{xurmid_YSME=5+銉{wsnic]WPH@6, 蔓}xsnhb[SKB8-!睜}xrle^VNE:/"ݛ|vpibZQG<0"ܞztme]TI>1"ۢ~wpi`VK?1!'''((()) ) **++,,--.//01122334678:;<<='' ' ( ( ()))**++,,,-.//01123435678:;<<='abccdef'`abbccddef'd``abccdef(_`abccdef(^_abbccdef(h^_`abbcdef)^_`abbccddef)a^_`abbccddef)i^_`abbccddef*_`abbccddef*d_``abccdef+`abbccdef+d``abbccdef,`abbccdef,d`abbccddef-abccdef,iabbcde.caabbcde/abcde/haabccdde0baabcde1abcde1faabccde2caabccde3abcde4abcde4iaabbcd5iaabbccdd6iaabbccdd6ibbcd8ibccd:dccdd:edd<edd<fd=i')4>HQZbiou{& !+5?HQYahnty~&#-7@IRZahntz' &/9BJSZbhou|' )2;DMU\dkrx( $-6?HPX_gnv}( )2;DLT\dlt|( &/8@IQYbjrz) $-5>GOW`hqy)!+3GQZdnx/ #.8BKU_is}0'1;EOYcnx0*4?IS]hr|1 "-7BLWalv2$/:EPZepz3&1=HS^it~3(3?KVamw4*5AMYep6+7DP\h7,9FS_8-;HU9 .-ٯ{rg[L<(ٴ¾}sgZJ8#ظ¾~sgXF0seT@'~qaN6ÿ|n\F,yiU;#½ucL0 þp[A'ľ{iQ4ľu_D&ýkR2»v^?$붽jN-ҳžtY8 ꯷ü}dE(ҫnQ-꧰üuY4꣫ǿ|a?랧ºiJ+院ĽpR.锝ƾuW2뎘y]9 ꈒ}cC&ꂌhK+{lP,tƿnS0kwĽpV7bo{pY>#Weq}ýp[A$KYfr~þnZA#=KYfs~þ{lY@"+;JXeq}ýwiW@$)9GUco{ľ~reT@'$3BP^kwĿxm`Q@, +:IXfs~yqg[N?0$"0@Q_my꿽zri`UJ=1)'7HWer}yrjaYOE:1),NZfqzzrjbZRJB:2+'$-:HU_irz쑏~xqiaYRJC<4-'#)2=JU]fmsw{~~{wrmg`YQJC<5.(")/9EOUZ`fjlnonmkhd`[UOHB;5.("!'-/5>HMQTWYYXVSPLHD?93-("&*+.3:?@?>=<;:73/*% * $#"!#&))(&" 0 @@Busybee-Farbe-Kopie     jj4jPpxw~`**************"""""""                      # # # # # # #       **************"""""""                             # # # # # # #              **************"""""""        i i i i i i i i i i i i i i i i i i i i i i# i# i# i# i# i# i# i i i i i i i i i i i i i i $ # # # # # # * 1 1 1 1 1 1 18888881 # # # # # # )))))))                            #******)))))))                                   # * * * * * * )))))))                            i i i i i i i iiiiiiiiiiiiii#i *i *i *i *i *i *i  8888881******?888888#                                          """""""                                          """"""" i i i i i i i i i i i i i i i i i i i i iiiiiiii                     """""""18888881888888?888888?888888        8888888 " " " " " " "                     """""""       8888888                            """""""ii ii ii ii ii ii ii 8888888i ii ii ii ii ii ii iiiiiiiii ii ii ii ii ii ii iii ii ii ii ii ii ii  iii iii iii iii iii iii iii"""""""******       8888888       *******@@Glossy     V`~`f`r))vx%7d?KX;:875 4 3 1 0/.,+*)('&%$#"!   !"#$$%&''())*++,,;:875 4 3 1 0/.,+*)('&%$#"!   !"#$$%&''())*++,,;:875 4 3 1 0/.,+*)('&%$#"!   !"#$$%&''())*++,,:976 4 3 2 0 / . - + * ) ( ' & %  $ !"#  !"#"  !#$%! !"#$%'   !"#%&'(  !"$%&')*  !#$%&()*+  "#$%'()+,-  "#$&'(*+,-/  "#$&'(*+,./0  "#%&')*+-./02  "#%&')*+-./123  "#%&')*,-.01245  "#%&()*,-.012456  "#%&()*,-/0134578  "#%&')*,-/01345789  "#$&')*,-/0134678:;  !#$&')*,-/0134678:;<  !#$&')*,-/0134678:;=> !"$%'(*+-.0134679:;=>? !"$%'(*+-.0134679:;=>?A  "#%&(*+-.0134678:;=>@AB  !#%&()+,./124578:;=>@ABD !#$&')+,./124578:;=>@ABDE !"$%')*,-/024578:;=>?ABDEG  "#%'(*+-/0235689;<>?ABDEGHt ,&!!$'*-/ 2 468:< t ,&!!$'*-/ 2 468:< t ,&!!$'*-/ 2 468:< t , & !                                    !  !" #   !"#$ %  !!""#$%& '  !!"##$%&'( )  !!""##$$%%&&''(()* +  !""#$$%%&&''(())**+, -  !""#$$%&&''(())**++,-. /  !!"#$$%&&''())**++,,--./0 1 !""#$%%&''())*++,,--..//012 3 !"##$%&''())*++,,-..//0011234 5 !"#$%%&'(()*++,--..//011223456 7 !"#$%%&'())*+,,-../0011223344556678 9 !"#$%&&'()*++,-../001223344556677889: ; !"#$%&&'()*+,,-.//01223345566778899::;< = !"#$%%&'()*+,--./0112334556778899::;;<<=> ? !"#$%&'()*+,-../01223455677899::;;<<==>>?@ A !"#$%&'()*+,-.//0123345667899::;<<==>>??@AB C !#$%&'()*+,-.//012345567889::;<<==>??@@AABCD E !"#$%&'()+,--./012345667899:;<<=>>??@AABBCCDEF G!#$%&'()*+,-./01234567789:;;<==>??@AABBCCDDEEFFGGH I#$%&()*+,-./01234567789:;<<=>??@AABCCDDEEFFGGHHIJK%&'()*+-./01234567789:;<==>?@AABCCDEEFFGGHHIIJJKLM&')*+,-./0123456789:;<=>>?@ABBCDEEFFGHHIIJJKKLLMNO()*+-./0123456789:;<=>??@ABCCDEFFGHHIJJKKLLMMNNOPQ)+,-./023456789:;<=>?@@ABCDEEFGHHIJJKKLMMNNOOPPQRS+,-/012345689:;<=>??@ABCDEFFGHIIJKKLMMNOOPPQQRSTU-./013456789:;<=>?@ABCDEFGGHIJKKLMMNOOPPQRRSSTUVW./12345789:;<=>?@ABCDEFGHHIJKLLMNOOPQQRRSSTTUUVVWWXY012356789:<=>?@ABCDEFGHHIJKLMMNOPPQRRSTTUUVVWWXXYYZ[1345679:;<=>?@ACDEFGGHIJKLMNOOPQRRSTTUVVWWXXYYZZ[[\]345789:;=>?@ABCDEFGHIJKLMNOPPQRSSTUVVWXXYYZZ[[\\]]^_56789;<=>?ABCDEFGHIJKLMNOPQQRSTUUVWWXYYZ[[\\]]^^_`a679:;<=?@ABCDEGHIJKLMNOPQQRSTUVVWXYYZ[[\]]^^__``abc89:;=>?@ACDEFGHIJKLMNOPQRSTUVWWXYZ[[\]]^^_``aabbcde9:<=>?ABCDEGHIJKLMNOPQRSTUVWXXYZ[\\]^^_``aabccdefg;<=?@ABCEFGHIJLMNOPQRSTUVWXYYZ[\]]^_``abbccddeeffgghi<>?@ACDEFGIJKLMNOQRSTUVWXYYZ[\]^__`abbcddeeffgghhiijk>?@BCDEGHIJKMNOPQRSTUVWXYZ[\]^_``abccdeefgghhiijjkklm?ABCDFGHIKLMNOQRSTUVWXYZ[\]^_`aabcdeefgghiijjkkllmmnoABCEFGIJKLMOPQRSTVWXYZ[\]^_`abbcdeffghiijjkllmmnnoopqBDEFHIJKMNOPQSTUVWXY[\]^_`aabcdefgghijjkllmnnooppqqrsDEFHIJLMNOQRSTUWXYZ[\]^_`abcdefghiijkllmnnoopqqrrstuEGHIKLMNPQRSUVWXY[\]^_`abcdefghijjklmmnoppqqrssttuvwGHIKLMOPQSTUVWYZ[\]^`abcdefghijjklmnoopqqrssttuuvvwwxxyHIKLNOPQSTUWXYZ[]^_`abcdfghiijklmnoppqrsstuuvvwwxxyyz{IKLNOPRSTVWXY[\]^_abcdefghijklmnopqqrstuuvwwxxyyzz{{|}? 4,&!!$'*-/2 4 68:<> ? 4,&!!$'*-/2 4 68:<> ? 4,&!!$'*-/2 4 68:<> ? 4 , & !                                       !  ##"!  %%$#"!  ''&%$#"!  ))('&%$#"!!  ++*)('&%$#"!  --,+*)('&%$#""!  //.-,+*)('&%$$#""!  110/.-,+*)(''&&%$$#"!!  33210/.-,+*))(''&%%$#""! 5543210/.-,,++*))(''&%$##"! 776543210//..--,++*)(('&%%$#"! 99876543210/..-,,+*))('&%%$#"! ;;:98765432100/..-,++*)('&&%$#"! ==<;:987654332210//.-,,+*)('&&%$#"! ??>=<;:9876554332110/.--,+*)('&%%$#"! AA@?>=<;:9877655432210/..-,+*)('&%$#"! CCBA@?>=<;::9987665433210//.-,+*)('&%$#"! EEDCBA@?>==<<;::988765543210//.-,+*)('&%$#! GGFEDCBA@??>>=<<;:998766543210/.--,+)('&%$#"! IIHGFEDCBA@??>==<;;:98776543210/.-,+*)('&%$#!KKJIHGFEDCBAA@??>=<<;:98776543210/.-,+*)(&%$#MMLKJIHGFEDCCBAA@?>==<;:98776543210/.-+*)('&%OONMLKJIHGFFEEDCBBA@?>>=<;:9876543210/.-,+*)'&QQPONMLKJIHHGFFEDCCBA@??>=<;:9876543210/.-+*)(SSRQPONMLKKJJIHHGFEEDCBA@@?>=<;:987654320/.-,+)UUTSRQPONMMLKKJIIHGFFEDCBA@??>=<;:986543210/-,+WWVUTSRQPPOONMMLKKJIHGGFEDCBA@?>=<;:987654310/.-YYXWVUTSRQPOONMLLKJIHHGFEDCBA@?>=<;:98754321/.[[ZYXWVUTSRRQPPONMMLKJIHHGFEDCBA@?>=<:987653210]]\[ZYXWVUTTSRRQPOONMLKJIHGGFEDCA@?>=<;:9765431__^]\[ZYXWVVUTSSRQPPONMLKJIHGFEDCBA@?>=;:987543aa`_^]\[ZYYXWWVUUTSRQQPONMLKJIHGFEDCBA?>=<;98765ccba`_^]\[[ZYYXWVVUTSRQQPONMLKJIHGEDCBA@?=<;:976eedcba`_^^]]\[[ZYXWWVUTSRQPONMLKJIHGFEDCA@?>=;:98ggfedcbaa``_^^]\\[ZYXXWVUTSRQPONMLKJIHGEDCBA?>=<:9iihgfedcba``_^]]\[ZYYXWVUTSRQPONMLJIHGFECBA@?=<;kkjihgfedcbba`__^]\[ZYYXWVUTSRQONMLKJIGFEDCA@?>oonmlkjihggfeedcbaa`_^]\[ZYXWVUTSRQONMLKIHGFDCBA?qqponmlkjjiihgffedcbba`_^]\[ZYXWVTSRQPOMLKJIGFECBAssrqponmllkjjihggfedcbaa`_^]\[YXWVUTSQPONMKJIHFEDBuutsrqpoonnmllkjiihgfedcba`_^]\[ZYXWUTSRQONMLJIHFEDwwvutsrqqpponmmlkjjihgfedcba`_^]\[YXWVUSRQPNMLKIHGEyyxwvutsrqqpoonmlkjjihgfedcba`^]\[ZYWVUTSQPOMLKIHG{{zyxwvutssrqpponmlkjiihgfdcba`_^][ZYXWUTSQPONLKIH}}|{zyxwvuutsrqqponmlkjihgfedcba_^]\[YXWVTSRPONLKI=;:87 5 4 3 10/.,+*)('&%$#"!   !"#$$%&''())*++,,=;:87 5 4 3 10/.,+*)('&%$#"!   !"#$$%&''())*++,,=;:87 5 4 3 10/.,+*)('&%$#"!   !"#$$%&''())*++,,<:97 6 4 3 2 0 / . - + * ) ( ' &  %"! $#"!  #%$#!  "'%$#"! !('&%#"!   *)'&%$"!  +*)(&%$#!  -,+)('%$#"  /-,+*('&$#"  0/.,+*('&$#"  20/.-+*)'&%#"  321/.-+*)'&%#"  54210.-,*)'&%#"  654210.-,*)(&%#"  8754310/-,*)(&%#"  98754310/-,*)'&%#"  ;:8764310/-,*)'&$#"  <;:8764310/-,*)'&$#!  >=;:8764310/-,*)'&$#!  ?>=;:9764310.-+*('%$"! A?>=;:9764310.-+*('%$"! BA@>=;:8764310.-+*(&%#"  DBA@>=;:875421/.,+)(&%#!  EDBA@>=;:875421/.,+)'&$#! GEDBA?>=;:875420/-,*)'%$"! HGEDBA?><;9865320/-+*('%#"  -..//00 1 1 2 2 3 3 4 4 4 5 5666777888999::::;;;;;<<<<<<===================-..//00 1 1 2 2 3 3 4 4 4 5 5666777888999::::;;;;;<<<<<<===================-..//00 1 1 2 2 3 3 4 4 4 5 5666777888999::::;;;;;<<<<<<===================  !#%&()+-.0135689;<>?ABDEGHI !#$&')+,./134679:<>?ABDEGHIK  "$%')*,-/124579:<=?@BCEFHIKL  !#%&(*+-/023578:;=?@BCEFHIKLN !#$&()+-.0135689;=>@ACDFHIKLNO   "$%')*,./134679;<>?ACDFGIJLMOP   !#%&(*+-/024579:<=?ABDEGIJLMOPR  !"$&')+-.023578:;=?@BCEGHJKMNPQS   "#%'(*,./134689;=>@ACEFHIKMNPQST  !#$&()+-/024579:<>?ACDFGIKLNOQSTV   "$%')+,.013568:<=?ABDEGIJLMOQRTUW  !#%&(*,-/124689;=>@BCEGHJKMOPRSUWX   "$%')+-.023579:<>?ACDFHIKMNPQSUVXY  !#%&(*,-/13468:;=?@BDEGIJLNOQSTVWY[   "$&')+-.024579;<>@ACEGHJLMOQRTUWYZ\  !#%&(*,./13568:<=?ACDFHIKMNPRSUWXZ[]  "$&')+-/024679;=>@BDEGIJLNOQSTVXY[]^ !#%&(*,./13578:<>?ACEFHJKMOQRTVWY[\^_  "$%')+-/024679;=?@BDFGIKLNPRSUWXZ\]_a !#%&(*,./13578:<>?ACEGHJLMOQSTVXY[]^`b  "#%')+-.024679;=?@BDFGIKMNPRTUWY[\^`ac !"$&(*,-/13578:<>@ACEGHJLNOQSUVXZ\]_abd !#%')+,.024679;=?@BDFHIKMOPRTVWY[]^`bce  "$&()+-/13568:<>?ACEGHJLNPQSUWXZ\^_acdf !#%'(*,.023579;=>@BDFHIKMOQRTVXY[]_`bdfg  "$%')+-/12468:<=?ACEGHJLNPQSUWYZ\^`acegh  "$&(*,./13579;<>@BDFGIKMOQRTVXY[]_abdfhi !#%')+,.024689;=?ACEFHJLNPQSUWYZ\^`acegij  "$&')+-/13568:<>@BCEGIKMOPRTVXY[]_abdfhik !"$&(*,.023579;=?ABDFHJLMOQSUWXZ\^`bcegijl !#%')+-.02468:<=?ACEGIKLNPRTVWY[]_abdfhjkm  "$&')+-/13579:<>@BDFHIKMOQSUVXZ\^`acegijln  "$&(*,.023579;=?ACEFHJLNPRSUWY[]_`bdfhjkmo !#%')+,.02468:<>?ACEGIKMOPRTVXZ\]_acegijlnp  !#%')+-/13579:<>@BDFHJKMOQSUWY[\^`bdfgikmoq  "$&(*,./13579;=?ACEFHJLNPRTVWY[]_acefhjlnpq !#$&(*,.02468:<=?ACEGIKMOQRTVXZ\^`bcegikmopr !#%')+-/12468:<>@BDFHJKMOQSUWY[]^`bdfhjlmoqs  "#%')+-/13579;=?ABDFHJLNPRTVXY[]_acegijlnprt  "$&(*,.023579;=?ACEGIKMOPRTVXZ\^`bdegikmoqsu  "$&(*,.02468:<>@BCEGIKMOQSUWY[]^`bdfhjlnpqsu !#%')+-/12468:<>@BDFHJLNPRSUWY[]_acegijlnprtv !#%')+-/13579;=?ACDFHJLNPRTVXZ\^`acegikmoqsuw  "$&(*+-/13579;=?ACEGIKMOQSTVXZ\^`bdfhjlnoqsuw  "$&(*,.02468:<>?ACEGIKMOQSUWY[]_acdfhjlnprtvx  "$&(*,.02468:<>@BDFHJLNPQSUWY[]_acegikmoqstvx !#%')+-/12468:<>@BDFHJLNPRTVXZ\^`bcegikmoqsuwy !#%')+-/13579;=?ACEGHJLNPRTVXZ\^`bdfhjlnprtuwy !#%')+-/13579;=?ACEGIKMOQSUWY[]^`bdfhjlnprtvxz  "$&(*+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqrtvxz  "$&(*,.02468:<>@BDFGIKMOQSUWY[]_acegikmoqsuwy{  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`acegikmoqsuwy{  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxy{ !"$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz| !#%')+-/13579;=?ACEGIJLNPRTVXZ\^`bdfhjlnprtvxz| !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmnprtvxz| !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}KLNOPRSUVWXZ[\]_`abcefghijklmnopqrrstuvvwxxyzz{{||}}~LNOQRSUVWYZ[]^_`acdefghjklmnopqrsstuvwwxyzz{||}}~~NOQRSUVWYZ[]^_abcdeghijklmnopqrstuvwxyyz{||}}~OQRSUVXYZ\]^`abcefghiklmnopqrstuvwxyzz{|}}~PRSUVXYZ\]^`abdefgijklmopqrstuvwxyz{{|}~RSUVXYZ\]_`acdeghijkmnopqrtuvwxyz{{|}~SUVXYZ\]_`acdeghiklmnoqrstuvwxyz{|}~UVWYZ\]_`acdfghjklmopqrsuvwxyz{|}~VWYZ\]_`bcdfghjklnopqstuvwyz{|}~WYZ\]_`acdfgijkmnoqrstuwxyz{|}XZ[]^`acdfgijkmnoqrsuvwxy{|}~Z[]^`acdfgijkmnpqrtuvwyz{|}[]^`acdfgijkmnpqrtuvxyz{}~\^_abdeghjkmnpqrtuwxyz|}~]_abdeghjkmnpqrtuwxy{|}_`bceghjkmnpqrtuwxy{|~`acefhiklnoqrtuwxz{|~acdfgiklnoqrtuwxz{|~bdegijlmoqrtuwxy{|~ceghjkmoprsuvxy{|~efhikmnpqsuvxy{|~fgiklnoqstvwyz|~ghjlmoqrtuwyz|}hjkmoprsuwxz{}iklnpqsuvxy{}~jlmoqrtvwy{|~kmnprtuwyz|}lnoqsuvxz{}moprtvwy{|~npqsuwxz|}oqrtvxy{}prsuwyz|~qstvxz{}rsuwy{|~rtvxz{}suwy{|~tvxz{}uwyz|~vwy{}vxz|~wy{}xz|}xz|~y{}z|}z|~{}{}|~|~}}}~~~~}|{zyxxwvvutsrrqponmlkjihgfecba`_]\[ZXWVUSRPONLK~}|{zzyxwwvutssrqponmlkjhgfedca`_^][ZYWVUSRQONL~}}||{zyyxwvutsrqponmlkjihgedcba_^][ZYWVUSRQONр~}}|{zzyxwvutsrqponmlkihgfecba`^]\ZYXVUSRQOσ~}|{{zyxwvutsrqpomlkjigfedba`^]\ZYXVUSRPԂ~}|{{zyxwvutrqponmkjihgedca`_]\ZYXVUSR҅~}|{zyxwvutsrqonmlkihgedca`_]\ZYXVUS҇~}|{zyxwvusrqpomlkjhgfdca`_]\ZYWVUЊ~}|{zywvutsqponlkjhgfdcb`_]\ZYWVЌ}|{zyxwutsrqonmkjigfdca`_]\ZYWЎ~}|{yxwvusrqonmkjigfdca`^][ZXΑ}|{zywvutrqpnmkjigfdca`^][Z̔~}{zyxvutrqpnmkjigfdca`^][ѓ~}|zyxwutrqpnmkjhgedba_^\ϖ}|{yxwutrqpnmkjhgedba_]Ϙ~|{yxwutrqpnmkjhgecb`_Ϛ~|{zxwutrqonlkihfeca`͝~|{zxwutrqonlkigfdca͟~|{yxwutrqomljigedbˢ~|{yxvusrpomkjhgecˤ~|{yxvusqpnmkihfeΤ~|zywvtsqonlkigfΦ}|zywutrqomljhg̩}{zxwusrpomkjh̫~}{yxvusqpnlki̭~|{ywvtrqomljʰ}|zywutrpnmkʲ}{zxvusqonlͲ~|{ywvtrpom˵}|zxwusqpn˷}{yxvtrqo˹~|zywusrpɼ}{zxvtsqɾ~|{ywusr}{zxvtr~|{ywus}{zxvt~|zywu}{ywv~|zxv}{yw}|zx~|zx}{y}|z~|z}{}{~|~|}}}~~~-..//001 1 2 2 3 3 4 4 4 5 5 666777888999::::;;;;;<<<<<<========>==========-..//001 1 2 2 3 3 4 4 4 5 5 666777888999::::;;;;;<<<<<<========>==========-..//001 1 2 2 3 3 4 4 4 5 5 666777888999::::;;;;;<<<<<<========>==========IHGEDBA?><;9865310.-+)(&%#!  KIHGEDBA?><:976431/.,+)'&$#! LKIHFECB@?=<:975421/-,*)'%$"  NLKIHFECB@?=;:875320/-+*(&%#!  ONLKIHFDCA@>=;9865310.-+)(&$#! POMLJIGFDCA?><;976431/.,*)'%$"   RPOMLJIGEDBA?=<:975420/-+*(&%#!   SQPNMKJHGECB@?=;:875320.-+)'&$"!  TSQPNMKIHFECA@>=;986431/.,*('%#"   VTSQONLKIGFDCA?><:975420/-+)(&$#!  WUTRQOMLJIGEDBA?=<:865310.,+)'%$"   XWUSRPOMKJHGECB@>=;986421/-,*(&%#!  YXVUSQPNMKIHFDCA?><:975320.-+)'%$"   [YWVTSQONLJIGEDB@?=;:86431/-,*(&%#!  \ZYWUTRQOMLJHGECA@><;975420.-+)'&$"   ][ZXWUSRPNMKIHFDCA?=<:86531/.,*(&%#!  ^][YXVTSQONLJIGEDB@>=;976420/-+)'&$"  _^\[YWVTRQOMKJHFECA?><:87531/.,*(&%#! a_]\ZXWUSRPNLKIGFDB@?=;976420/-+)'%$"  b`^][YXVTSQOMLJHGECA?><:87531/.,*(&%#! ca`^\[YWUTRPNMKIGFDB@?=;976420.-+)'%#"  dba_]\ZXVUSQONLJHGECA@><:87531/-,*(&$"! ecb`^][YWVTRPOMKIHFDB@?=;976420.,+)'%#! fdca_^\ZXWUSQPNLJHGECA?><:86531/-+)(&$"  gfdb`_][YXVTRQOMKIHFDB@>=;975320.,*('%#! hgeca`^\ZYWUSQPNLJHGECA?=<:86421/-+)'%$"  ihfdba_][YXVTRQOMKIGFDB@><;97531/.,*(&$"  jigeca`^\ZYWUSQPNLJHFECA?=;986420.,+)'%#! kihfdba_][YXVTRPOMKIGECB@><:86531/-+)'&$"  ljigecb`^\ZXWUSQOMLJHFDBA?=;975320.,*(&$"! mkjhfdba_][YWVTRPNLKIGECA?=<:86420.-+)'%#! nljigeca`^\ZXVUSQOMKIHFDB@><:97531/-+)'&$"  omkjhfdb`_][YWUSRPNLJHFECA?=;975320.,*(&$"  pnljigeca_]\ZXVTRPOMKIGECA?><:86420.,+)'%#! qomkigfdb`^\[YWUSQOMKJHFDB@><:97531/-+)'%#!  qpnljhfeca_][YWVTRPNLJHFECA?=;97531/.,*(&$"  rpomkigecb`^\ZXVTRQOMKIGECA?=<:86420.,*(&$#! sqomljhfdb`^][YWUSQOMKJHFDB@><:86421/-+)'%#! trpnljigeca_][YXVTRPNLJHFDBA?=;97531/-+)'%#"  usqomkigedb`^\ZXVTRPOMKIGECA?=;975320.,*(&$"  usqpnljhfdb`^][YWUSQOMKIGECB@><:86420.,*(&$"  vtrpnljigeca_][YWUSRPNLJHFDB@><:86421/-+)'%#! wusqomkigeca`^\ZXVTRPNLJHFDCA?=;97531/-+)'%#! wusqonljhfdb`^\ZXVTSQOMKIGECA?=;97531/-+*(&$"  xvtrpnljhfdca_][YWUSQOMKIGECA?><:86420.,*(&$"  xvtsqomkigeca_][YWUSQPNLJHFDB@><:86420.,*(&$"  ywusqomkigecb`^\ZXVTRPNLJHFDB@><:86421/-+)'%#! ywutrpnljhfdb`^\ZXVTRPNLJHGECA?=;97531/-+)'%#! zxvtrpnljhfdb`^][YWUSQOMKIGECA?=;97531/-+)'%#! zxvtrqomkigeca_][YWUSQOMKIGECA?=;97531/-+*(&$"  {ywusqomkigeca_][YWUSQOMKIGFDB@><:86420.,*(&$"  {ywusqomkigeca`^\ZXVTRPNLJHFDB@><:86420.,*(&$"  {yxvtrpnljhfdb`^\ZXVTRPNLJHFDB@><:86420.,*(&$"  |zxvtrpnljhfdb`^\ZXVTRPNLJHFDB@><:86420.,*(&$"! |zxvtrpnljhfdb`^\ZXVTRPNLJIGECA?=;97531/-+)'%#! |zxvtrpnmkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! ===================<<<<<<;;;;;::::999888777666 5 5 4 4 4 3 3 2 2 1 100//..-===================<<<<<<;;;;;::::999888777666 5 5 4 4 4 3 3 2 2 1 100//..-===================<<<<<<;;;;;::::999888777666 5 5 4 4 4 3 3 2 2 1 100//..- !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmnprtvxz| !#%')+-/13579;=?ACEGIJLNPRTVXZ\^`bdfhjlnprtvxz| !"$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxy{  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`acegikmoqsuwy{  "$&(*,.02468:<>@BDFGIKMOQSUWY[]_acegikmoqsuwy{  "$&(*+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqrtvxz !#%')+-/13579;=?ACEGIKMOQSUWY[]^`bdfhjlnprtvxz !#%')+-/13579;=?ACEGHJLNPRTVXZ\^`bdfhjlnprtuwy !#%')+-/12468:<>@BDFHJLNPRTVXZ\^`bcegikmoqsuwy  "$&(*,.02468:<>@BDFHJLNPQSUWY[]_acegikmoqstvx  "$&(*,.02468:<>?ACEGIKMOQSUWY[]_acdfhjlnprtvx  "$&(*+-/13579;=?ACEGIKMOQSTVXZ\^`bdfhjlnoqsuw !#%')+-/13579;=?ACDFHJLNPRTVXZ\^`acegikmoqsuw !#%')+-/12468:<>@BDFHJLNPRSUWY[]_acegijlnprtv  "$&(*,.02468:<>@BCEGIKMOQSUWY[]^`bdfhjlnpqsu  "$&(*,.023579;=?ACEGIKMOPRTVXZ\^`bdegikmoqsu  "#%')+-/13579;=?ABDFHJLNPRTVXY[]_acegijlnprt !#%')+-/12468:<>@BDFHJKMOQSUWY[]^`bdfhjlmoqs !#$&(*,.02468:<=?ACEGIKMOQRTVXZ\^`bcegikmopr  "$&(*,./13579;=?ACEFHJLNPRTVWY[]_acefhjlnpq  !#%')+-/13579:<>@BDFHJKMOQSUWY[\^`bdfgikmoq !#%')+,.02468:<>?ACEGIKMOPRTVXZ\]_acegijlnp  "$&(*,.023579;=?ACEFHJLNPRSUWY[]_`bdfhjkmo  "$&')+-/13579:<>@BDFHIKMOQSUVXZ\^`acegijln !#%')+-.02468:<=?ACEGIKLNPRTVWY[]_abdfhjkm !"$&(*,.023579;=?ABDFHJLMOQSUWXZ\^`bcegijl  "$&')+-/13568:<>@BCEGIKMOPRTVXY[]_abdfhik !#%')+,.024689;=?ACEFHJLNPQSUWYZ\^`acegij  "$&(*,./13579;<>@BDFGIKMOQRTVXY[]_abdfhi  "$%')+-/12468:<=?ACEGHJLNPQSUWYZ\^`acegh !#%'(*,.023579;=>@BDFHIKMOQRTVXY[]_`bdfg  "$&()+-/13568:<>?ACEGHJLNPQSUWXZ\^_acdf !#%')+,.024679;=?@BDFHIKMOPRTVWY[]^`bce !"$&(*,-/13578:<>@ACEGHJLNOQSUVXZ\]_abd  "#%')+-.024679;=?@BDFGIKMNPRTUWY[\^`ac !#%&(*,./13578:<>?ACEGHJLMOQSTVXY[]^`b  "$%')+-/024679;=?@BDFGIKLNPRSUWXZ\]_a !#%&(*,./13578:<>?ACEFHJKMOQRTVWY[\^_  "$&')+-/024679;=>@BDEGIJLNOQSTVXY[]^  !#%&(*,./13568:<=?ACDFHIKMNPRSUWXZ[]   "$&')+-.024579;<>@ACEGHJLMOQRTUWYZ\  !#%&(*,-/13468:;=?@BDEGIJLNOQSTVWY[   "$%')+-.023579:<>?ACDFHIKMNPQSUVXY  !#%&(*,-/124689;=>@BCEGHJKMOPRSUWX   "$%')+,.013568:<=?ABDEGIJLMOQRTUW  !#$&()+-/024579:<>?ACDFGIKLNOQSTV   "#%'(*,./134689;=>@ACEFHIKMNPQST  !"$&')+-.023578:;=?@BCEGHJKMNPQS   !#%&(*+-/024579:<=?ABDEGIJLMOPR   "$%')*,./134679;<>?ACDFGIJLMOP !#$&()+-.0135689;=>@ACDFHIKLNO  !#%&(*+-/023578:;=?@BCEFHIKLN  "$%')*,-/124579:<=?@BCEFHIKL !#$&')+,./134679:<>?ABDEGHIK  !#%&()+-.0135689;<>?ABDEGHI~~~}}}|~|~{}{}z|~z|}y{}xz|~xz|}wy{}vxz|~vwy{}uwyz|~tvxz{}suwy{|~rtvxz{}rsuwy{|~qstvxz{}prsuwyz|~oqrtvxy{}npqsuwxz|}moprtvwy{|~lnoqsuvxz{}kmnprtuwyz|}jlmoqrtvwy{|~iklnpqsuvxy{}~hjkmoprsuwxz{}ghjlmoqrtuwyz|}fgiklnoqstvwyz|~efhikmnpqsuvxy{|~ceghjkmoprsuvxy{|~bdegijlmoqrtuwxy{|~acdfgiklnoqrtuwxz{|~`acefhiklnoqrtuwxz{|~_`bceghjkmnpqrtuwxy{|~]_abdeghjkmnpqrtuwxy{|}\^_abdeghjkmnpqrtuwxyz|}~[]^`acdfgijkmnpqrtuvxyz{}~Z[]^`acdfgijkmnpqrtuvwyz{|}XZ[]^`acdfgijkmnoqrsuvwxy{|}~WYZ\]_`acdfgijkmnoqrstuwxyz{|}VWYZ\]_`bcdfghjklnopqstuvwyz{|}~UVWYZ\]_`acdfghjklmopqrsuvwxyz{|}~SUVXYZ\]_`acdeghiklmnoqrstuvwxyz{|}~RSUVXYZ\]_`acdeghijkmnopqrtuvwxyz{{|}~PRSUVXYZ\]^`abdefgijklmopqrstuvwxyz{{|}~OQRSUVXYZ\]^`abcefghiklmnopqrstuvwxyzz{|}}~NOQRSUVWYZ[]^_abcdeghijklmnopqrstuvwxyyz{||}}~LNOQRSUVWYZ[]^_`acdefghjklmnopqrsstuvwwxyzz{||}}~~KLNOPRSUVWXZ[\]_`abcefghijklmnopqrrstuvvwxxyzz{{||}}~~~~}}}~|~|}{}{~|z}|z}{y~|zx}|zx}{yw~|zxv}{ywv~|zywu}{zxvt~|{ywus}{zxvtrɾ~|{ywusrɼ}{zxvtsq˹~|zywusrp˷}{yxvtrqo˵}|zxwusqpnͲ~|{ywvtrpomʲ}{zxvusqonlʰ}|zywutrpnmk̭~|{ywvtrqomlj̫~}{yxvusqpnlki̩}{zxwusrpomkjhΦ}|zywutrqomljhgΤ~|zywvtsqonlkigfˤ~|{yxvusqpnmkihfeˢ~|{yxvusrpomkjhgec͟~|{yxwutrqomljigedb͝~|{zxwutrqonlkigfdcaϚ~|{zxwutrqonlkihfeca`Ϙ~|{yxwutrqpnmkjhgecb`_ϖ}|{yxwutrqpnmkjhgedba_]ѓ~}|zyxwutrqpnmkjhgedba_^\̔~}{zyxvutrqpnmkjigfdca`^][Α}|{zywvutrqpnmkjigfdca`^][ZЎ~}|{yxwvusrqonmkjigfdca`^][ZXЌ}|{zyxwutsrqonmkjigfdca`_]\ZYWЊ~}|{zywvutsqponlkjhgfdcb`_]\ZYWV҇~}|{zyxwvusrqpomlkjhgfdca`_]\ZYWVU҅~}|{zyxwvutsrqonmlkihgedca`_]\ZYXVUSԂ~}|{{zyxwvutrqponmkjihgedca`_]\ZYXVUSRσ~}|{{zyxwvutsrqpomlkjigfedba`^]\ZYXVUSRPр~}}|{zzyxwvutsrqponmlkihgfecba`^]\ZYXVUSRQO~}}||{zyyxwvutsrqponmlkjihgedcba_^][ZYWVUSRQON~}|{zzyxwwvutssrqponmlkjhgfedca`_^][ZYWVUSRQONL~}|{zyxxwvvutsrrqponmlkjihgfecba`_]\[ZXWVUSRPONLK>==========<=======<<<<<<;;;;;::::9998887776665 5 4 4 4 3 3 2 2 1 1 00//..->==========<=======<<<<<<;;;;;::::9998887776665 5 4 4 4 3 3 2 2 1 1 00//..->==========<=======<<<<<<;;;;;::::9998887776665 5 4 4 4 3 3 2 2 1 1 00//..-}{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! }{ywusqomkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! |zxvtrpnmkigeca_][YWUSQOMKIGECA?=;97531/-+)'%#! |zxvtrpnljhfdb`^\ZXVTRPNLJIGECA?=;97531/-+)'%#! |zxvtrpnljhfdb`^\ZXVTRPNLJHFDB@><:86420.,*(&$"! {yxvtrpnljhfdb`^\ZXVTRPNLJHFDB@><:86420.,*(&$"  {ywusqomkigeca`^\ZXVTRPNLJHFDB@><:86420.,*(&$"  {ywusqomkigeca_][YWUSQOMKIGFDB@><:86420.,*(&$"  zxvtrqomkigeca_][YWUSQOMKIGECA?=;97531/-+*(&$"  zxvtrpnljhfdb`^][YWUSQOMKIGECA?=;97531/-+)'%#! ywutrpnljhfdb`^\ZXVTRPNLJHGECA?=;97531/-+)'%#! ywusqomkigecb`^\ZXVTRPNLJHFDB@><:86421/-+)'%#! xvtsqomkigeca_][YWUSQPNLJHFDB@><:86420.,*(&$"  xvtrpnljhfdca_][YWUSQOMKIGECA?><:86420.,*(&$"  wusqonljhfdb`^\ZXVTSQOMKIGECA?=;97531/-+*(&$"  wusqomkigeca`^\ZXVTRPNLJHFDCA?=;97531/-+)'%#! vtrpnljigeca_][YWUSRPNLJHFDB@><:86421/-+)'%#! usqpnljhfdb`^][YWUSQOMKIGECB@><:86420.,*(&$"  usqomkigedb`^\ZXVTRPOMKIGECA?=;975320.,*(&$"  trpnljigeca_][YXVTRPNLJHFDBA?=;97531/-+)'%#"  sqomljhfdb`^][YWUSQOMKJHFDB@><:86421/-+)'%#! rpomkigecb`^\ZXVTRQOMKIGECA?=<:86420.,*(&$#! qpnljhfeca_][YWVTRPNLJHFECA?=;97531/.,*(&$"  qomkigfdb`^\[YWUSQOMKJHFDB@><:97531/-+)'%#!  pnljigeca_]\ZXVTRPOMKIGECA?><:86420.,+)'%#! omkjhfdb`_][YWUSRPNLJHFECA?=;975320.,*(&$"  nljigeca`^\ZXVUSQOMKIHFDB@><:97531/-+)'&$"  mkjhfdba_][YWVTRPNLKIGECA?=<:86420.-+)'%#! ljigecb`^\ZXWUSQOMLJHFDBA?=;975320.,*(&$"! kihfdba_][YXVTRPOMKIGECB@><:86531/-+)'&$"  jigeca`^\ZYWUSQPNLJHFECA?=;986420.,+)'%#! ihfdba_][YXVTRQOMKIGFDB@><;97531/.,*(&$"  hgeca`^\ZYWUSQPNLJHGECA?=<:86421/-+)'%$"  gfdb`_][YXVTRQOMKIHFDB@>=;975320.,*('%#! fdca_^\ZXWUSQPNLJHGECA?><:86531/-+)(&$"  ecb`^][YWVTRPOMKIHFDB@?=;976420.,+)'%#! dba_]\ZXVUSQONLJHGECA@><:87531/-,*(&$"! ca`^\[YWUTRPNMKIGFDB@?=;976420.-+)'%#"  b`^][YXVTSQOMLJHGECA?><:87531/.,*(&%#! a_]\ZXWUSRPNLKIGFDB@?=;976420/-+)'%$"  _^\[YWVTRQOMKJHFECA?><:87531/.,*(&%#! ^][YXVTSQONLJIGEDB@>=;976420/-+)'&$"  ][ZXWUSRPNMKIHFDCA?=<:86531/.,*(&%#!  \ZYWUTRQOMLJHGECA@><;975420.-+)'&$"   [YWVTSQONLJIGEDB@?=;:86431/-,*(&%#!  YXVUSQPNMKIHFDCA?><:975320.-+)'%$"   XWUSRPOMKJHGECB@>=;986421/-,*(&%#!  WUTRQOMLJIGEDBA?=<:865310.,+)'%$"   VTSQONLKIGFDCA?><:975420/-+)(&$#!  TSQPNMKIHFECA@>=;986431/.,*('%#"   SQPNMKJHGECB@?=;:875320.-+)'&$"!  RPOMLJIGEDBA?=<:975420/-+*(&%#!   POMLJIGFDCA?><;976431/.,*)'%$"   ONLKIHFDCA@>=;9865310.-+)(&$#! NLKIHFECB@?=;:875320/-+*(&%#!  LKIHFECB@?=<:975421/-,*)'%$"  KIHGEDBA?><:976431/.,+)'&$#! IHGEDBA?><;9865310.-+)(&%#!  ,,++*))(''&%$$#"!   !"#$%&'()*+,./01 3 4 5 78:;=,,++*))(''&%$$#"!   !"#$%&'()*+,./01 3 4 5 78:;=,,++*))(''&%$$#"!   !"#$%&'()*+,./01 3 4 5 78:;=  "#%'(*+-/0235689;<>?ABDEGH !"$%')*,-/024578:;=>?ABDEG !#$&')+,./124578:;=>@ABDE  !#%&()+,./124578:;=>@ABD  "#%&(*+-.0134678:;=>@AB !"$%'(*+-.0134679:;=>?A !"$%'(*+-.0134679:;=>?  !#$&')*,-/0134678:;=>  !#$&')*,-/0134678:;<  "#$&')*,-/0134678:;  "#%&')*,-/01345789  "#%&()*,-/0134578  "#%&()*,-.012456  "#%&')*,-.01245  "#%&')*+-./123  "#%&')*+-./02  "#$&'(*+,./0  "#$&'(*+,-/  "#$%'()+,-  !#$%&()*+  !"$%&')*   !"#%&'(! !"#$%'"  !#$%#  !"#$ !"%  & ' ( ) * + - . / 0 2 3 4 6 79:< =<:86 4 2/-*'$!!&,4 ? =<:86 4 2/-*'$!!&,4 ? =<:86 4 2/-*'$!!&,4 ?IKLNOPRSTVWXY[\]^_abcdefghijklmnopqqrstuuvwwxxyyzz{{|}HIKLNOPQSTUWXYZ[]^_`abcdfghiijklmnoppqrsstuuvvwwxxyyz{GHIKLMOPQSTUVWYZ[\]^`abcdefghijjklmnoopqqrssttuuvvwwxxyEGHIKLMNPQRSUVWXY[\]^_`abcdefghijjklmmnoppqqrssttuvwDEFHIJLMNOQRSTUWXYZ[\]^_`abcdefghiijkllmnnoopqqrrstuBDEFHIJKMNOPQSTUVWXY[\]^_`aabcdefgghijjkllmnnooppqqrsABCEFGIJKLMOPQRSTVWXYZ[\]^_`abbcdeffghiijjkllmmnnoopq?ABCDFGHIKLMNOQRSTUVWXYZ[\]^_`aabcdeefgghiijjkkllmmno>?@BCDEGHIJKMNOPQRSTUVWXYZ[\]^_``abccdeefgghhiijjkklm<>?@ACDEFGIJKLMNOQRSTUVWXYYZ[\]^__`abbcddeeffgghhiijk;<=?@ABCEFGHIJLMNOPQRSTUVWXYYZ[\]]^_``abbccddeeffgghi9:<=>?ABCDEGHIJKLMNOPQRSTUVWXXYZ[\\]^^_``aabccdefg89:;=>?@ACDEFGHIJKLMNOPQRSTUVWWXYZ[[\]]^^_``aabbcde679:;<=?@ABCDEGHIJKLMNOPQQRSTUVVWXYYZ[[\]]^^__``abc56789;<=>?ABCDEFGHIJKLMNOPQQRSTUUVWWXYYZ[[\\]]^^_`a345789:;=>?@ABCDEFGHIJKLMNOPPQRSSTUVVWXXYYZZ[[\\]]^_1345679:;<=>?@ACDEFGGHIJKLMNOOPQRRSTTUVVWWXXYYZZ[[\]012356789:<=>?@ABCDEFGHHIJKLMMNOPPQRRSTTUUVVWWXXYYZ[./12345789:;<=>?@ABCDEFGHHIJKLLMNOOPQQRRSSTTUUVVWWXY-./013456789:;<=>?@ABCDEFGGHIJKKLMMNOOPPQRRSSTUVW+,-/012345689:;<=>??@ABCDEFFGHIIJKKLMMNOOPPQQRSTU)+,-./023456789:;<=>?@@ABCDEEFGHHIJJKKLMMNNOOPPQRS()*+-./0123456789:;<=>??@ABCCDEFFGHHIJJKKLLMMNNOPQ&')*+,-./0123456789:;<=>>?@ABBCDEEFFGHHIIJJKKLLMNO%&'()*+-./01234567789:;<==>?@AABCCDEEFFGGHHIIJJKLM#$%&()*+,-./01234567789:;<<=>??@AABCCDDEEFFGGHHIJK!#$%&'()*+,-./01234567789:;;<==>??@AABBCCDDEEFFGGH I !"#$%&'()+,--./012345667899:;<<=>>??@AABBCCDEF G !#$%&'()*+,-.//012345567889::;<<==>??@@AABCD E !"#$%&'()*+,-.//0123345667899::;<<==>>??@AB C !"#$%&'()*+,-../01223455677899::;;<<==>>?@ A !"#$%%&'()*+,--./0112334556778899::;;<<=> ? !"#$%&&'()*+,,-.//01223345566778899::;< = !"#$%&&'()*++,-../001223344556677889: ; !"#$%%&'())*+,,-../0011223344556678 9 !"#$%%&'(()*++,--..//011223456 7 !"##$%&''())*++,,-..//0011234 5 !""#$%%&''())*++,,--..//012 3  !!"#$$%&&''())**++,,--./0 1  !""#$$%&&''(())**++,-. /  !""#$$%%&&''(())**+, -  !!""##$$%%&&''(()* +  !!"##$%&'( )  !!""#$%& '   !"#$ %  !" #  !                                 ! & , 4 ? ;:864 2 /-*'$!!&, t ;:864 2 /-*'$!!&, t ;:864 2 /-*'$!!&, t}|{zyxwvuutsrqqponmlkjihgfedcba_^]\[YXWVTSRPONLKI{{zyxwvutssrqpponmlkjiihgfdcba`_^][ZYXWUTSQPONLKIHyyxwvutsrqqpoonmlkjjihgfedcba`^]\[ZYWVUTSQPOMLKIHGwwvutsrqqpponmmlkjjihgfedcba`_^]\[YXWVUSRQPNMLKIHGEuutsrqpoonnmllkjiihgfedcba`_^]\[ZYXWUTSRQONMLJIHFEDssrqponmllkjjihggfedcbaa`_^]\[YXWVUTSQPONMKJIHFEDBqqponmlkjjiihgffedcbba`_^]\[ZYXWVTSRQPOMLKJIGFECBAoonmlkjihggfeedcbaa`_^]\[ZYXWVUTSRQONMLKIHGFDCBA?mmlkjihgfeedccba``_^]\[ZYXWVUTSRQPONMKJIHGEDCB@?>kkjihgfedcbba`__^]\[ZYYXWVUTSRQONMLKJIGFEDCA@?>=<:9eedcba`_^^]]\[[ZYXWWVUTSRQPONMLKJIHGFEDCA@?>=;:98ccba`_^]\[[ZYYXWVVUTSRQQPONMLKJIHGEDCBA@?=<;:976aa`_^]\[ZYYXWWVUUTSRQQPONMLKJIHGFEDCBA?>=<;98765__^]\[ZYXWVVUTSSRQPPONMLKJIHGFEDCBA@?>=;:987543]]\[ZYXWVUTTSRRQPOONMLKJIHGGFEDCA@?>=<;:9765431[[ZYXWVUTSRRQPPONMMLKJIHHGFEDCBA@?>=<:987653210YYXWVUTSRQPOONMLLKJIHHGFEDCBA@?>=<;:98754321/.WWVUTSRQPPOONMMLKKJIHGGFEDCBA@?>=<;:987654310/.-UUTSRQPONMMLKKJIIHGFFEDCBA@??>=<;:986543210/-,+SSRQPONMLKKJJIHHGFEEDCBA@@?>=<;:987654320/.-,+)QQPONMLKJIHHGFFEDCCBA@??>=<;:9876543210/.-+*)(OONMLKJIHGFFEEDCBBA@?>>=<;:9876543210/.-,+*)'&MMLKJIHGFEDCCBAA@?>==<;:98776543210/.-+*)('&%KKJIHGFEDCBAA@??>=<<;:98776543210/.-,+*)(&%$#IIHGFEDCBA@??>==<;;:98776543210/.-,+*)('&%$#!GGFEDCBA@??>>=<<;:998766543210/.--,+)('&%$#"! EEDCBA@?>==<<;::988765543210//.-,+*)('&%$#! CCBA@?>=<;::9987665433210//.-,+*)('&%$#"! AA@?>=<;:9877655432210/..-,+*)('&%$#"! ??>=<;:9876554332110/.--,+*)('&%%$#"! ==<;:987654332210//.-,,+*)('&&%$#"! ;;:98765432100/..-,++*)('&&%$#"! 99876543210/..-,,+*))('&%%$#"! 776543210//..--,++*)(('&%%$#"! 5543210/.-,,++*))(''&%$##"! 33210/.-,+*))(''&%%$#""! 110/.-,+*)(''&&%$$#"!!  //.-,+*)('&%$$#""!  --,+*)('&%$#""!  ++*)('&%$#"!  ))('&%$#"!!  ''&%$#"!  %%$#"!  ##"!  ! !                                         ! & , t,,++*))(''&%$$#"!   !"#$%&'()*+,./0 1 3 4 578:;,,++*))(''&%$$#"!   !"#$%&'()*+,./0 1 3 4 578:;,,++*))(''&%$$#"!   !"#$%&'()*+,./0 1 3 4 578:;HGEDBA?><;9865320/-+*('%#"  GEDBA?>=;:875420/-,*)'%$"! EDBA@>=;:875421/.,+)'&$#! DBA@>=;:875421/.,+)(&%#!  BA@>=;:8764310.-+*(&%#"  A?>=;:9764310.-+*('%$"! ?>=;:9764310.-+*('%$"! >=;:8764310/-,*)'&$#!  <;:8764310/-,*)'&$#!  ;:8764310/-,*)'&$#"  98754310/-,*)'&%#"  8754310/-,*)(&%#"  654210.-,*)(&%#"  54210.-,*)'&%#"  321/.-+*)'&%#"  20/.-+*)'&%#"  0/.,+*('&$#"  /-,+*('&$#"  -,+)('%$#"  +*)(&%$#!  *)'&%$"!  ('&%#"!   '%$#"! !%$#!  "#"!  #"! $  % & ' ( ) * + - . / 0 2 3 4 679:@@ Glossy Maske `accaRaVaZa^abafajanaravbccccc**************"""""""77777775 f2 :.^+!f'6t#Bt%Fg' .Op/ *:K[k})))))))777777777777777777777777777762ьT/] +o-'ΈC#đf [)ۺxW6¡_?&scSB2"@@ Glossy-Kante     dpididfhi$E                     ! " #$%% & ' ( )*+ , - . /01 2 3 4 5678 8 9 : ;< > ? @ A B D E F G HJ K L M NOPP Q R S TUV W X Y Z[\ ] ^ _ `abc c d e fg i j k l m o p q r su v w x yz{ | } ~                  ??????????????                     !" $ % & ' ( * + , - .0 1 2 3 456 7 8 9 :;< = > ? @AB C D E FG I J K LM O P Q R S U V W X Y[ \ ] ^ _`a b c d efg h i j klm n o p qr t u v w x z { | } ~                K???????????????????????????????????~?z?w?s?o?l?h?d?a?]?Y?V?R?N?K?G?C?@?.  )>Shx򏋄xhS>) 3Mg𴳱gM4 $ ,HlҶnK/ "6O ,IlԸrQ5" -D_ ,IlּzZ@."!+;So ,Il¥hP@50--/5>Ne ,Ilʱ}hZQLJJLQYg{ ,Hlzrnmmnry -Il.Jl   !3Mm !+;So $')++,-/3;H[r )4Shx쐎~{z3Mg볰{nhhq $Shx  -=LYagiklnry )4O_oO          $')++,+*'$   )4. *>Thx򏋄xhT>* "6OiiO6"  -C_}ȿ}_D- ):RoªoR;) #-:LdйdL:-# +7DRdzǮzdRD7+ >O_oӿo_O?. Tj}Ͽ}jT>* jƹhM4}¯xY<$ ҾbB( ɭgE* βjG+ дkH, ѵlI, ѵlI, &ҵlI, &ҵlI, &ҵlI, &ҵlI, &ҵlI, &ҵlI, &ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, 'ѵlI, 'дkH, 'βjG+ 'ɭgE* 'ҾbB( '¯xY<$ 'ƹhM4 Ͽ}jT>*  ӿo_O?.  ǮzdRD7+  кdL:-# !ëoR;) !ñ}_D- !ƹjO6" !п}jU?*!qaQ@/ !̳iWH;.! !ŪpXE7+! !æjR?1& !ŪpXE7+! !̳iWH;.! !qaQ@/ *>Tj}  "6Oj  -C_}  ):Ro  #-:Ld  +7DRdz  .>O_o  )>Tj} 3Mh  $Tj}Ͽ}jU?-  -? .>O_oӿo_O?/!!. +7DRdzǮzdRD7+  #-:LdйdL:-#   ):RoªoR;)   -C_}ȿ}_D-  "6OiiO6" *>Thx򏋄xhT>* -=LYagikklkigaYM>.  )4* !ƹhM4!¯xY<$ !ҾbB( !ɭgE* !βjG+ !дkH, !ѵlI- !ҶnK/(ԸrP5! (ּzY?+ (¥gN;.# (ʱ{eSD7+ 'o_O?. 'п}jT>* 'ƹhM4'¯xY<$ 'ҾbB( 'ɭgE* 'βjG+ 'дkH, 'ѵlI, 'ѵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, .ҵlI, &ҵlI, &ҵlI, &ҵlI, &ҵlI, &ҵlI, &ҵlI, &ҵlI,  ѵlI, дkH, βjG+ ɭgE* ҾbB( }¯xY<$ iƹhM4ThxϿ}jT>* >MYagiklnryӿo_O?. *4NeйdL:-#  !+;SoªoR;)  -D_}ȿ}_D-  "6OiiO6"  *>Thx򏋄xhT>* -=LYagikklkigaYM>.  )4<%  NZentx}<% JR\djnu<%  HLRX^em<%  FEHLQYd<%  %D>=?DMZ<% ,C9559BR<%  3F9426?O<%  #9<%  &A<%  *H<%  .M<%  .P<%  .Q<%  .P<%  .N<%  +I<%  (D<%  &?<%  %<;%  $;;$  #77#  !2FVblqtvvwwxyz~}umcWF3!  ,=KW_egiijklmpvrjbXL=, &3@JQVXYZ[\^`fnsf]ULA4& )45*  &,03456792)"   (5GD3&   .B}vneZK9)  )>rjbYM?/"  '5*  &<[KA80(  '2(!       %%  -, '92  7" 9#  ;$  ;%  %<% ,=' 2B/   "6  #9 $;  %;  %<%  %<, %<2  %<7"  %<9#  %<;$  %<;%  %<<%  %<<%  %<<%  %<<%  %<<%  %<<%  %<<%  %<<%  %<<%  %<<%  %<<%  %<<%  %<<%  %<<%  %<<%  %<<%  %<<%  %<{yyz~<%  %GOXceYOG>5**45*  '/7@JYZJ@7/' &,0345679NN>2)"  !"#$$&(,3>ON>2)"  &3DD3&  '3DD3&  )9KZdmruvvvwwwwwwwwwwwwwwwwwwvvurmeZK9)  )9KZdmruvvvwwwwwwwwwwwwwwwwwwvvurmeZK9)  !/?MX`ehiiijjjjjjjjjjjjjjjjjjiihe`XM?/"  "/?MX`ehiiijjjjjjjjjjjjjjjjjjiihe`XM?/"  '4AJRVXYZZZZZZZZZZZZZZZZZZZZZYXVRKA4'  '4AJRVXYZZZZZZZZZZZZZZZZZZZZZYXVRKA4'  *4/tmp/ifchk 2>/dev/null IF="" while read -r line do case "$line" in en[0-9]*\:*) IF=`expr "$line" : '\(en[0-9]*\):.*'` ;; *inet*[0-9]*.[0-9]*.[0-9]*.[0-9]*) if [ "$IF" != "" ] then FW_INTERFACE=$IF break; fi ;; *) IF="" ;; esac done < /tmp/ifchk echo $FW_INTERFACE - $ADDR fi if [ "$NAMESERVER" == "" ] then while read -r line do dnsserver=`expr "$line" : 'nameserver.\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]\).*'` if [ "$dnsserver" != "" ] then NAMESERVER=$dnsserver fi done < /etc/resolv.conf fi # no need to change anything below this line echo "Interface: " $FW_INTERFACE echo "Nameserver: " $NAMESERVER # bring the interface up /sbin/ifconfig $DEVICE $IP_HOST netmask $NETMASK mtu $MTU up # enable forwarding sysctl -w 'net.inet.ip.forwarding=1' # delete old rules /sbin/ipfw delete $IPFW_RULENUM # install the firewall nat rules /sbin/ipfw add $IPFW_RULENUM divert $FWNATD_PORT all from $IP_ATARI to any out via $FW_INTERFACE /sbin/ipfw add $IPFW_RULENUM divert $FWNATD_PORT all from any to any in via $FW_INTERFACE # kill an old natd if necessary if test -f /var/run/natd_fw.pid; then kill -9 `cat /var/run/natd_fw.pid` fi # start natd /usr/sbin/natd -p $FWNATD_PORT -n $FW_INTERFACE -use_sockets -same_ports sleep 1 cat /var/run/natd.pid > /var/run/natd_fw.pid if test -n $DNS_FORWARD; then # delete old DNS forwarding rules /sbin/ipfw delete $DNSFW_RULENUM # install new rules /sbin/ipfw add $DNSFW_RULENUM divert $DNSFWNATD_PORT udp from $IP_ATARI to $IP_HOST 53 in via $DEVICE /sbin/ipfw add $DNSFW_RULENUM divert $DNSFWNATD_PORT udp from any 53 to $IP_ATARI out via $DEVICE # kill an old natd if necessary if test -f /var/run/natd_dnsfw.pid; then kill -9 `cat /var/run/natd_dnsfw.pid` fi sleep 5 # start natd for forwarding /usr/sbin/natd -p $DNSFWNATD_PORT -n $DEVICE -redirect_port udp $NAMESERVER:53 $IP_HOST:53 sleep 1 cat /var/run/natd.pid > /var/run/natd_dnsfw.pid fi exit 0 aranym-1.1.0/src/Unix/darwin/aranym2.icns0000664000175000017500000007444713454637621016446 0ustar joyjoyicnsy'it329Շ UUƍԃ qqԍUqU⪪UԪƢ U@+UU U@ @UUUU@UUՀ ƪԃ ƅ ԪƪԪƪUU**q +UqU@ՀUUqƪժƀƀqU UUU@ƪƪԪƪUƍԪUq8UUUU8U+@U*8UU@UUqUUU@ UUUUUqU@Հ8qƪUժƀ UUU@ƪƪԪƪժՀU ƪy /fgZns|fgq~trt Ndatcvnlvjrypvpes& HLgeut}|{}o30gfm}vz~n||9%ji~{t}}ziwmkwB-Ealg~|{|yzy{lM 1Fhhd{{{|tqw|TWpo~w|rovwlmn{V ~`jowuyUUqqUF xvx ՗@+WTx}}~|ƪX!Ŵ~/XĻ{q[\w`\@X|yâxh@sGox|çrԍX[ųʼ\p{}ǽ9̮ûX}|˶ʽwȾEY?ȳƳ޽֗~»ĻWȋՀY(jºϺĘκGúǶśdCvz8U*YlƵĴԢ¢ܳٓ~ģoJowg< ժՀZoԾžʳӾܼʸ٤]NFf`{Bo qUƪ jòLȼމޮ㿠īǻm˷9|aJvA@jVs8 [nļͲܠƭĿ}n=_~yt|gnbNш9|U\|ƺx˴ղݿ׺̳ıƿyWyDžEZnzzj\pn)~bmO~qnZktxηԢĹƻ˽]EĵjFlxp^<΋zZ|px\gR]x[+kГӞưƽT&Ȃ%wncNlb}DdLu{Vq[t`ȥû̵2˅F¿;v~8RMϿc\HZs]xwQgh}7\c|,[TmqOJ)t};XoQ;и!cL-tKqpKjx`HH{JQ{~[|İʾFǬ9ֵ1ƃT?pT&%S~ ܫBʆhMfQeCiǶüƽ3qthik.h~pF̡[ڷ/;dosfPz60.GotsW:\jzvyƹ{[8?ډ?wuYj>ς(g[\g~E!Ų6hH>]p/řƙjoq[ɣ\ί,cXWҼ8pZ.D;Z kjzlvWYoNd˺ƿǽDZȲǺsqY®¿״͐|ǿXȍqՀYk¹˵˜ƻҚŲE²dFx{qqcYmƶüʕǶͨՎz qKqnI ժՀZvֿ«ů׵ױԴdzף^QNpcOm qUƪ[yϞֺƸnǶ<j±SvJEt^s [sƻȭϖॿ֬|t=f~ynuhS֎M!~\Ƶwȿ˦бϳ|e~ȔQ`t~͆u]rtǝ5mwYqZrsŮ̘ͺŸ}]DŻmTuwg=Ћ}fsgpXb]lύИŴķüZ(Ɋ, pgPrfKeQ}[zª\øbʦ#3΍NE}=VLпlcRau^}SknA`h\srƼX_-I`N8ϳ!oS;uSqtUsfJMT[[zȲĻJȢ9Դ8ĉYE|e&(IkWv{dKwtZi5;|su`~Á\AUH\p(݉ ձKˊoXkWѾlLmıý?vznoq:uwP̡[۷2Qsw|oUF91LyxbεA!r^4C;_wsmoZazNgǶȽȷBUrxpzWcͱX^QVL>SZlo_jr[sÿ9w?ض*:UC-߬IŻWujj[on*°L˝UF>IOMeZnst&r{ǼGငv{8qRɹlfM/rksmmu̻Acxˬi1Ǫ@lqjbmw}~ȿ;߷pkBwmI|A}~{y6ĺJ~Y#f|Ż{u~xyļ0®י~[|rrsuj*߮~\xnWgö$򮷵P|ľ»źȺ}ծ¶w 󩠑~~|Շ UUƍԃ qqԍUqU⪪UԪƢ U@+UU U@ @UUUU@UUՀ ƪԃ ƅ ԪƪԪƪUqq檁 GGq8䪁 Gq䪁qqq䪁U@Հq䪁UUqƪq䪁ժq䪁ƀ䪁ƀq檁突突U@誁ƪƪԪƪݪUƍԪUq+*Kƺrqq檁+UkU媁 BUUUUq䪁qqq䪁U@Հq䪁8qƪq䪁Uժq䪁ƀ䪁媁 檁突U@誁ƪƪԪƪݪժՀUݪ ƪݪڪ {tѪffrYYbtjff~˪ztUj_Zrg^eoclz{dXy}ª&~c`posttqrzuw{xtpuzwqsrvbw0u{lk|ntp}suu{yzwytuv~qjpqysbprw9worr|n~svwsxyxowz{pj}{tdm{ql_ja[jBĩv}nuvtq{xwz}vtzsvnom}lol{rgooxnqvt^Mpol`kowi}|{~|{}|xzutz~xwvqvzxsquzunou~rifns{Tljutjzwu}xyz{zzu~wwtxx{wurn|{~ythsuwriajlacazrUV{m~rzv{{v}u}|{uw~zxky~rtowwsoo{wwTYr}bhiqqqzVywt}xwr~zu~{~z{~~{{~}}~{y~z|xvtffhtuwɈU@+W|rx}x{v|{~ywu{~~w|xu}zxstklifl{|ˮqƇ8u~|yvx{x}||u|x~~zsrppvxqztƺüyqWzzzz}z~~}~v{zuxtyxwzu|wopg\q@tywy{Ey}y{vs{~«x~L dcyzqԍXe}p}q~sux{ov{}||y{{xvʽ}xq}PxƼ{qWlxsyu~txxz~òqXhoouxywȽ^ǽqYýyâ|e˶QŇqՀXoĿÌѻ/ɼXCwsqqcYmĶǹylWFeoƔJ ժՀZ{δwu}Ű ǤՠåŗMMFmaKu qUƪ[wykǂöȹìԿ\,dLpF@nZk [p}˹ɍĸԍȳŚxdc8_fwll`Sӆv|{Ey\dѼɼʸvsnZwOjppvl`llΗ0gwSmZx`nϬʹoP;ľgLpr\;́uwUÁsgjR[y]l~{೽ELJ'tgjHg|[zB^yK|Zl\V,ʂNŽ?:LA̺^[J\r\w{Ghl@`g~\woKM-| ?]q:}.Ʋ]Rˆ8mPl}hNm~dzEKX^}[@6ɧ8ȁWɣ:%s]0=ķZ rpj fS_sP]YMs|o|LVٱy{ɭU\IJC~9JLij^hj{RnSe5Υ';SI$ժCQnbn[f{gv~&|LNE=CMzMeTdrnyuwGz:sJijhdN,ncveeqzpAXhh0ƫ>opi_fm;߫ba=vkEt8zxs6PO^o~||x0Ņk_}wsg*ۡqUpVb}$򤧬Iz}½ſzН~ 󦡓t8mk@q(s2*;63˖Nwю^~Bՙ:(o T&(ڵO彃2 mX}@Ƒ<<aranym-1.1.0/src/Unix/darwin/aranym.xcodeproj/0000775000175000017500000000000013454637621017462 5ustar joyjoyaranym-1.1.0/src/Unix/darwin/aranym.xcodeproj/project.pbxproj0000664000175000017500000045525213454637621022553 0ustar joyjoy// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 42; objects = { /* Begin PBXContainerItemProxy section */ F8E9A77E0D312740001E4457 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = F8E9A7530D31273D001E4457 /* MacAranym.pbproj */; proxyType = 2; remoteGlobalIDString = 17B8490A0C724AD6009D5C48; remoteInfo = MacAranym; }; F8E9A7800D312740001E4457 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = F8E9A7530D31273D001E4457 /* MacAranym.pbproj */; proxyType = 2; remoteGlobalIDString = 1715C87C0C725FC7000A9FC0; remoteInfo = "MacAranym MMU"; }; F8E9A78E0D312740001E4457 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = F8E9A7560D31273D001E4457 /* MacAranym.xcodeproj */; proxyType = 2; remoteGlobalIDString = 8D1107320486CEB800E47090; remoteInfo = MacAranym; }; F8E9A7900D312740001E4457 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = F8E9A7560D31273D001E4457 /* MacAranym.xcodeproj */; proxyType = 2; remoteGlobalIDString = 17BCD7E90B20F65000432CE1; remoteInfo = "MacAranym MMU"; }; F8E9A7920D312740001E4457 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = F8E9A7560D31273D001E4457 /* MacAranym.xcodeproj */; proxyType = 2; remoteGlobalIDString = B439AC9B0C5B2FD00046EFC9; remoteInfo = "MacAranym JIT IEEE"; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ F83E65B60D09FFF5004FF434 /* aranym.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = aranym.app; sourceTree = BUILT_PRODUCTS_DIR; }; F8433E730C66278D005E7B99 /* SDL_image.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL_image.framework; path = /Library/Frameworks/SDL_image.framework; sourceTree = ""; }; F8433E740C66278D005E7B99 /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = /Library/Frameworks/SDL.framework; sourceTree = ""; }; F84341010C664F5D005E7B99 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; F84341050C664F6F005E7B99 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; F843410C0C664FD8005E7B99 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; F8E9A42B0D312731001E4457 /* acinclude.m4 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = acinclude.m4; path = ../../../acinclude.m4; sourceTree = SOURCE_ROOT; }; F8E9A42C0D312731001E4457 /* aclocal.m4 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = aclocal.m4; path = ../../../aclocal.m4; sourceTree = SOURCE_ROOT; }; F8E9A42D0D312731001E4457 /* aranym.desktop */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = aranym.desktop; path = ../../../aranym.desktop; sourceTree = SOURCE_ROOT; }; F8E9A42E0D312731001E4457 /* aranym.spec */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = aranym.spec; path = ../../../aranym.spec; sourceTree = SOURCE_ROOT; }; F8E9A4300D312731001E4457 /* CONFIGVARS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = CONFIGVARS; path = ../../../atari/CONFIGVARS; sourceTree = SOURCE_ROOT; }; F8E9A4320D312731001E4457 /* bdconfig.sys */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = bdconfig.sys; path = ../../../atari/hostfs/bdconfig.sys; sourceTree = SOURCE_ROOT; }; F8E9A4330D312731001E4457 /* hostfs_nfapi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = hostfs_nfapi.h; path = ../../../atari/hostfs/hostfs_nfapi.h; sourceTree = SOURCE_ROOT; }; F8E9A4340D312731001E4457 /* make.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = make.sh; path = ../../../atari/hostfs/make.sh; sourceTree = SOURCE_ROOT; }; F8E9A4360D312731001E4457 /* BINFILES */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = BINFILES; path = ../../../atari/hostfs/metados/BINFILES; sourceTree = SOURCE_ROOT; }; F8E9A4370D312731001E4457 /* debug.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = debug.c; path = ../../../atari/hostfs/metados/debug.c; sourceTree = SOURCE_ROOT; }; F8E9A4380D312731001E4457 /* debug.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = debug.h; path = ../../../atari/hostfs/metados/debug.h; sourceTree = SOURCE_ROOT; }; F8E9A4390D312731001E4457 /* dosdir.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = dosdir.c; path = ../../../atari/hostfs/metados/dosdir.c; sourceTree = SOURCE_ROOT; }; F8E9A43A0D312731001E4457 /* dosdir.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dosdir.h; path = ../../../atari/hostfs/metados/dosdir.h; sourceTree = SOURCE_ROOT; }; F8E9A43B0D312731001E4457 /* dosfile.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = dosfile.c; path = ../../../atari/hostfs/metados/dosfile.c; sourceTree = SOURCE_ROOT; }; F8E9A43C0D312731001E4457 /* dosfile.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dosfile.h; path = ../../../atari/hostfs/metados/dosfile.h; sourceTree = SOURCE_ROOT; }; F8E9A43D0D312731001E4457 /* EXTRAFILES */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = EXTRAFILES; path = ../../../atari/hostfs/metados/EXTRAFILES; sourceTree = SOURCE_ROOT; }; F8E9A43E0D312731001E4457 /* filesys.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = filesys.c; path = ../../../atari/hostfs/metados/filesys.c; sourceTree = SOURCE_ROOT; }; F8E9A43F0D312731001E4457 /* filesys.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = filesys.h; path = ../../../atari/hostfs/metados/filesys.h; sourceTree = SOURCE_ROOT; }; F8E9A4400D312731001E4457 /* global.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = global.h; path = ../../../atari/hostfs/metados/global.h; sourceTree = SOURCE_ROOT; }; F8E9A4410D312731001E4457 /* k_fds.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = k_fds.c; path = ../../../atari/hostfs/metados/k_fds.c; sourceTree = SOURCE_ROOT; }; F8E9A4420D312731001E4457 /* k_fds.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = k_fds.h; path = ../../../atari/hostfs/metados/k_fds.h; sourceTree = SOURCE_ROOT; }; F8E9A4430D312731001E4457 /* kerinfo.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = kerinfo.h; path = ../../../atari/hostfs/metados/kerinfo.h; sourceTree = SOURCE_ROOT; }; F8E9A4440D312731001E4457 /* main.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = main.c; path = ../../../atari/hostfs/metados/main.c; sourceTree = SOURCE_ROOT; }; F8E9A4450D312731001E4457 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../../atari/hostfs/metados/Makefile; sourceTree = SOURCE_ROOT; }; F8E9A4460D312731001E4457 /* Makefile.xfso */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.xfso; path = ../../../atari/hostfs/metados/Makefile.xfso; sourceTree = SOURCE_ROOT; }; F8E9A4470D312731001E4457 /* mdglue.S */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.asm; name = mdglue.S; path = ../../../atari/hostfs/metados/mdglue.S; sourceTree = SOURCE_ROOT; }; F8E9A4480D312731001E4457 /* mintfake.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = mintfake.h; path = ../../../atari/hostfs/metados/mintfake.h; sourceTree = SOURCE_ROOT; }; F8E9A4490D312731001E4457 /* mintproc.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = mintproc.c; path = ../../../atari/hostfs/metados/mintproc.c; sourceTree = SOURCE_ROOT; }; F8E9A44A0D312731001E4457 /* mintproc.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = mintproc.h; path = ../../../atari/hostfs/metados/mintproc.h; sourceTree = SOURCE_ROOT; }; F8E9A44B0D312731001E4457 /* MISCFILES */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = MISCFILES; path = ../../../atari/hostfs/metados/MISCFILES; sourceTree = SOURCE_ROOT; }; F8E9A44C0D312731001E4457 /* SRCFILES */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = SRCFILES; path = ../../../atari/hostfs/metados/SRCFILES; sourceTree = SOURCE_ROOT; }; F8E9A44D0D312731001E4457 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = README; path = ../../../atari/hostfs/README; sourceTree = SOURCE_ROOT; }; F8E9A44E0D312731001E4457 /* mmusetup.cnf */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = mmusetup.cnf; path = ../../../atari/mmusetup.cnf; sourceTree = SOURCE_ROOT; }; F8E9A4500D312731001E4457 /* BINFILES */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = BINFILES; path = ../../../atari/natfeat/BINFILES; sourceTree = SOURCE_ROOT; }; F8E9A4510D312731001E4457 /* EXTRAFILES */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = EXTRAFILES; path = ../../../atari/natfeat/EXTRAFILES; sourceTree = SOURCE_ROOT; }; F8E9A4520D312731001E4457 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../../atari/natfeat/Makefile; sourceTree = SOURCE_ROOT; }; F8E9A4530D312731001E4457 /* MISCFILES */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = MISCFILES; path = ../../../atari/natfeat/MISCFILES; sourceTree = SOURCE_ROOT; }; F8E9A4540D312731001E4457 /* natfeat.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = natfeat.c; path = ../../../atari/natfeat/natfeat.c; sourceTree = SOURCE_ROOT; }; F8E9A4550D312731001E4457 /* nf_ops.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nf_ops.h; path = ../../../atari/natfeat/nf_ops.h; sourceTree = SOURCE_ROOT; }; F8E9A4560D312731001E4457 /* SRCFILES */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = SRCFILES; path = ../../../atari/natfeat/SRCFILES; sourceTree = SOURCE_ROOT; }; F8E9A4590D312731001E4457 /* ethernet_nfapi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ethernet_nfapi.h; path = ../../../atari/network/ethernet/ethernet_nfapi.h; sourceTree = SOURCE_ROOT; }; F8E9A45B0D312732001E4457 /* eth0-config.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = "eth0-config.sh"; path = "../../../atari/network/ethernet/nfeth-config/eth0-config.sh"; sourceTree = SOURCE_ROOT; }; F8E9A45C0D312732001E4457 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.make; name = Makefile; path = "../../../atari/network/ethernet/nfeth-config/Makefile"; sourceTree = SOURCE_ROOT; }; F8E9A45D0D312732001E4457 /* nfeth-config.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "nfeth-config.c"; path = "../../../atari/network/ethernet/nfeth-config/nfeth-config.c"; sourceTree = SOURCE_ROOT; }; F8E9A45E0D312732001E4457 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = README; path = ../../../atari/network/ethernet/README; sourceTree = SOURCE_ROOT; }; F8E9A4600D312732001E4457 /* atari_nfeth.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = atari_nfeth.c; path = "../../../atari/network/linux-m68k/atari_nfeth.c"; sourceTree = SOURCE_ROOT; }; F8E9A4610D312732001E4457 /* linux-2.4.27-atari-natfeats.diff */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = "linux-2.4.27-atari-natfeats.diff"; path = "../../../atari/network/linux-m68k/linux-2.4.27-atari-natfeats.diff"; sourceTree = SOURCE_ROOT; }; F8E9A4620D312732001E4457 /* natfeat.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = natfeat.c; path = "../../../atari/network/linux-m68k/natfeat.c"; sourceTree = SOURCE_ROOT; }; F8E9A4630D312732001E4457 /* natfeat.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = natfeat.h; path = "../../../atari/network/linux-m68k/natfeat.h"; sourceTree = SOURCE_ROOT; }; F8E9A4640D312732001E4457 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = README; path = "../../../atari/network/linux-m68k/README"; sourceTree = SOURCE_ROOT; }; F8E9A4650D312732001E4457 /* newdesk.inf */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = newdesk.inf; path = ../../../atari/newdesk.inf; sourceTree = SOURCE_ROOT; }; F8E9A4670D312732001E4457 /* entry.S */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.asm; name = entry.S; path = ../../../atari/nfcdrom/entry.S; sourceTree = SOURCE_ROOT; }; F8E9A4680D312732001E4457 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../../atari/nfcdrom/Makefile; sourceTree = SOURCE_ROOT; }; F8E9A4690D312732001E4457 /* metados.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = metados.h; path = ../../../atari/nfcdrom/metados.h; sourceTree = SOURCE_ROOT; }; F8E9A46A0D312732001E4457 /* metados_bos.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = metados_bos.h; path = ../../../atari/nfcdrom/metados_bos.h; sourceTree = SOURCE_ROOT; }; F8E9A46B0D312732001E4457 /* nfcdrom.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = nfcdrom.c; path = ../../../atari/nfcdrom/nfcdrom.c; sourceTree = SOURCE_ROOT; }; F8E9A46C0D312732001E4457 /* nfcdrom_nfapi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfcdrom_nfapi.h; path = ../../../atari/nfcdrom/nfcdrom_nfapi.h; sourceTree = SOURCE_ROOT; }; F8E9A46E0D312732001E4457 /* entry.S */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.asm; name = entry.S; path = ../../../atari/nfjpeg/entry.S; sourceTree = SOURCE_ROOT; }; F8E9A46F0D312732001E4457 /* jpgdh.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = jpgdh.h; path = ../../../atari/nfjpeg/jpgdh.h; sourceTree = SOURCE_ROOT; }; F8E9A4700D312732001E4457 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../../atari/nfjpeg/Makefile; sourceTree = SOURCE_ROOT; }; F8E9A4710D312732001E4457 /* nfjpeg.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = nfjpeg.c; path = ../../../atari/nfjpeg/nfjpeg.c; sourceTree = SOURCE_ROOT; }; F8E9A4720D312732001E4457 /* nfjpeg_functions.S */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.asm; name = nfjpeg_functions.S; path = ../../../atari/nfjpeg/nfjpeg_functions.S; sourceTree = SOURCE_ROOT; }; F8E9A4730D312732001E4457 /* nfjpeg_nfapi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfjpeg_nfapi.h; path = ../../../atari/nfjpeg/nfjpeg_nfapi.h; sourceTree = SOURCE_ROOT; }; F8E9A4750D312732001E4457 /* enum-gen.pl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "enum-gen.pl"; path = "../../../atari/nfosmesa/enum-gen.pl"; sourceTree = SOURCE_ROOT; }; F8E9A4760D312732001E4457 /* enum-gl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "enum-gl.h"; path = "../../../atari/nfosmesa/enum-gl.h"; sourceTree = SOURCE_ROOT; }; F8E9A4770D312732001E4457 /* enum-glext.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "enum-glext.h"; path = "../../../atari/nfosmesa/enum-glext.h"; sourceTree = SOURCE_ROOT; }; F8E9A4780D312732001E4457 /* enum-misc.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "enum-misc.h"; path = "../../../atari/nfosmesa/enum-misc.h"; sourceTree = SOURCE_ROOT; }; F8E9A4790D312732001E4457 /* enum-osmesa.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "enum-osmesa.h"; path = "../../../atari/nfosmesa/enum-osmesa.h"; sourceTree = SOURCE_ROOT; }; F8E9A47A0D312732001E4457 /* lib-gen.pl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "lib-gen.pl"; path = "../../../atari/nfosmesa/lib-gen.pl"; sourceTree = SOURCE_ROOT; }; F8E9A47B0D312732001E4457 /* lib-gl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "lib-gl.c"; path = "../../../atari/nfosmesa/lib-gl.c"; sourceTree = SOURCE_ROOT; }; F8E9A47C0D312732001E4457 /* lib-glext.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "lib-glext.c"; path = "../../../atari/nfosmesa/lib-glext.c"; sourceTree = SOURCE_ROOT; }; F8E9A47D0D312732001E4457 /* lib-misc.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "lib-misc.c"; path = "../../../atari/nfosmesa/lib-misc.c"; sourceTree = SOURCE_ROOT; }; F8E9A47E0D312732001E4457 /* lib-misc.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "lib-misc.h"; path = "../../../atari/nfosmesa/lib-misc.h"; sourceTree = SOURCE_ROOT; }; F8E9A47F0D312732001E4457 /* lib-oldmesa.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "lib-oldmesa.c"; path = "../../../atari/nfosmesa/lib-oldmesa.c"; sourceTree = SOURCE_ROOT; }; F8E9A4800D312732001E4457 /* lib-oldmesa.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "lib-oldmesa.h"; path = "../../../atari/nfosmesa/lib-oldmesa.h"; sourceTree = SOURCE_ROOT; }; F8E9A4810D312732001E4457 /* lib-osmesa.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "lib-osmesa.c"; path = "../../../atari/nfosmesa/lib-osmesa.c"; sourceTree = SOURCE_ROOT; }; F8E9A4820D312732001E4457 /* lib-osmesa.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "lib-osmesa.h"; path = "../../../atari/nfosmesa/lib-osmesa.h"; sourceTree = SOURCE_ROOT; }; F8E9A4830D312732001E4457 /* link-gl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "link-gl.h"; path = "../../../atari/nfosmesa/link-gl.h"; sourceTree = SOURCE_ROOT; }; F8E9A4840D312732001E4457 /* link-glext.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "link-glext.h"; path = "../../../atari/nfosmesa/link-glext.h"; sourceTree = SOURCE_ROOT; }; F8E9A4850D312732001E4457 /* link-oldmesa.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "link-oldmesa.h"; path = "../../../atari/nfosmesa/link-oldmesa.h"; sourceTree = SOURCE_ROOT; }; F8E9A4860D312732001E4457 /* link-osmesa.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "link-osmesa.h"; path = "../../../atari/nfosmesa/link-osmesa.h"; sourceTree = SOURCE_ROOT; }; F8E9A4870D312732001E4457 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../../atari/nfosmesa/Makefile; sourceTree = SOURCE_ROOT; }; F8E9A4880D312732001E4457 /* nfosmesa.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = nfosmesa.c; path = ../../../atari/nfosmesa/nfosmesa.c; sourceTree = SOURCE_ROOT; }; F8E9A4890D312732001E4457 /* nfosmesa_nfapi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfosmesa_nfapi.h; path = ../../../atari/nfosmesa/nfosmesa_nfapi.h; sourceTree = SOURCE_ROOT; }; F8E9A48B0D312732001E4457 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../../atari/nfosmesa.xdd/Makefile; sourceTree = SOURCE_ROOT; }; F8E9A48C0D312732001E4457 /* nfosmesa.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = nfosmesa.c; path = ../../../atari/nfosmesa.xdd/nfosmesa.c; sourceTree = SOURCE_ROOT; }; F8E9A48E0D312733001E4457 /* entry.S */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.asm; name = entry.S; path = ../../../atari/nfpci/entry.S; sourceTree = SOURCE_ROOT; }; F8E9A48F0D312733001E4457 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../../atari/nfpci/Makefile; sourceTree = SOURCE_ROOT; }; F8E9A4900D312733001E4457 /* nfpci.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = nfpci.c; path = ../../../atari/nfpci/nfpci.c; sourceTree = SOURCE_ROOT; }; F8E9A4910D312733001E4457 /* nfpci.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfpci.h; path = ../../../atari/nfpci/nfpci.h; sourceTree = SOURCE_ROOT; }; F8E9A4920D312733001E4457 /* nfpci_bios.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfpci_bios.h; path = ../../../atari/nfpci/nfpci_bios.h; sourceTree = SOURCE_ROOT; }; F8E9A4930D312733001E4457 /* nfpci_bios.S */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.asm; name = nfpci_bios.S; path = ../../../atari/nfpci/nfpci_bios.S; sourceTree = SOURCE_ROOT; }; F8E9A4940D312733001E4457 /* nfpci_cookie.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = nfpci_cookie.c; path = ../../../atari/nfpci/nfpci_cookie.c; sourceTree = SOURCE_ROOT; }; F8E9A4950D312733001E4457 /* nfpci_cookie.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfpci_cookie.h; path = ../../../atari/nfpci/nfpci_cookie.h; sourceTree = SOURCE_ROOT; }; F8E9A4960D312733001E4457 /* nfpci_nfapi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfpci_nfapi.h; path = ../../../atari/nfpci/nfpci_nfapi.h; sourceTree = SOURCE_ROOT; }; F8E9A4970D312733001E4457 /* nfpci_xbios.S */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.asm; name = nfpci_xbios.S; path = ../../../atari/nfpci/nfpci_xbios.S; sourceTree = SOURCE_ROOT; }; F8E9A4990D312733001E4457 /* entry.S */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.asm; name = entry.S; path = ../../../atari/nfstderr/entry.S; sourceTree = SOURCE_ROOT; }; F8E9A49A0D312733001E4457 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../../atari/nfstderr/Makefile; sourceTree = SOURCE_ROOT; }; F8E9A49B0D312733001E4457 /* metados.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = metados.h; path = ../../../atari/nfstderr/metados.h; sourceTree = SOURCE_ROOT; }; F8E9A49C0D312733001E4457 /* metados_bos.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = metados_bos.h; path = ../../../atari/nfstderr/metados_bos.h; sourceTree = SOURCE_ROOT; }; F8E9A49D0D312733001E4457 /* nfstderrbos.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = nfstderrbos.c; path = ../../../atari/nfstderr/nfstderrbos.c; sourceTree = SOURCE_ROOT; }; F8E9A49F0D312733001E4457 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = README; path = ../../../atari/sound/README; sourceTree = SOURCE_ROOT; }; F8E9A4A00D312733001E4457 /* zmagxsnd.l */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.lex; name = zmagxsnd.l; path = ../../../atari/sound/zmagxsnd.l; sourceTree = SOURCE_ROOT; }; F8E9A4A30D312733001E4457 /* bosmeta.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = bosmeta.c; path = ../../../atari/tools/devdos/bosmeta.c; sourceTree = SOURCE_ROOT; }; F8E9A4A40D312733001E4457 /* bosmeta.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = bosmeta.h; path = ../../../atari/tools/devdos/bosmeta.h; sourceTree = SOURCE_ROOT; }; F8E9A4A50D312733001E4457 /* ctype.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = ctype.c; path = ../../../atari/tools/devdos/ctype.c; sourceTree = SOURCE_ROOT; }; F8E9A4A60D312733001E4457 /* dosdir.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = dosdir.c; path = ../../../atari/tools/devdos/dosdir.c; sourceTree = SOURCE_ROOT; }; F8E9A4A70D312733001E4457 /* dosdir.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dosdir.h; path = ../../../atari/tools/devdos/dosdir.h; sourceTree = SOURCE_ROOT; }; F8E9A4A80D312733001E4457 /* dosfile.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = dosfile.c; path = ../../../atari/tools/devdos/dosfile.c; sourceTree = SOURCE_ROOT; }; F8E9A4A90D312733001E4457 /* dosfile.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dosfile.h; path = ../../../atari/tools/devdos/dosfile.h; sourceTree = SOURCE_ROOT; }; F8E9A4AA0D312733001E4457 /* dosfsfn.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = dosfsfn.c; path = ../../../atari/tools/devdos/dosfsfn.c; sourceTree = SOURCE_ROOT; }; F8E9A4AB0D312733001E4457 /* emu_tos.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = emu_tos.h; path = ../../../atari/tools/devdos/emu_tos.h; sourceTree = SOURCE_ROOT; }; F8E9A4AC0D312733001E4457 /* list.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = list.h; path = ../../../atari/tools/devdos/list.h; sourceTree = SOURCE_ROOT; }; F8E9A4AD0D312733001E4457 /* main.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = main.c; path = ../../../atari/tools/devdos/main.c; sourceTree = SOURCE_ROOT; }; F8E9A4AE0D312733001E4457 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../../atari/tools/devdos/Makefile; sourceTree = SOURCE_ROOT; }; F8E9A4AF0D312733001E4457 /* mdglue.S */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.asm; name = mdglue.S; path = ../../../atari/tools/devdos/mdglue.S; sourceTree = SOURCE_ROOT; }; F8E9A4B00D312733001E4457 /* metados.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = metados.h; path = ../../../atari/tools/devdos/metados.h; sourceTree = SOURCE_ROOT; }; F8E9A4B10D312733001E4457 /* mintfake.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = mintfake.h; path = ../../../atari/tools/devdos/mintfake.h; sourceTree = SOURCE_ROOT; }; F8E9A4B20D312733001E4457 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = README; path = ../../../atari/tools/devdos/README; sourceTree = SOURCE_ROOT; }; F8E9A4B30D312733001E4457 /* utility.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = utility.c; path = ../../../atari/tools/devdos/utility.c; sourceTree = SOURCE_ROOT; }; F8E9A4B40D312733001E4457 /* utility.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = utility.h; path = ../../../atari/tools/devdos/utility.h; sourceTree = SOURCE_ROOT; }; F8E9A4B50D312733001E4457 /* pc101us.kbd.bz2 */ = {isa = PBXFileReference; lastKnownFileType = file; name = pc101us.kbd.bz2; path = ../../../atari/tools/pc101us.kbd.bz2; sourceTree = SOURCE_ROOT; }; F8E9A4B60D312733001E4457 /* pcpatch.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = pcpatch.c; path = ../../../atari/tools/pcpatch.c; sourceTree = SOURCE_ROOT; }; F8E9A4B70D312733001E4457 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = README; path = ../../../atari/tools/README; sourceTree = SOURCE_ROOT; }; F8E9A4B80D312733001E4457 /* AUTHORS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = AUTHORS; path = ../../../AUTHORS; sourceTree = SOURCE_ROOT; }; F8E9A4B90D312733001E4457 /* autogen.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = autogen.sh; path = ../../../autogen.sh; sourceTree = SOURCE_ROOT; }; F8E9A4BA0D312733001E4457 /* BUGS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = BUGS; path = ../../../BUGS; sourceTree = SOURCE_ROOT; }; F8E9A4BB0D312733001E4457 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = ChangeLog; path = ../../../ChangeLog; sourceTree = SOURCE_ROOT; }; F8E9A4BC0D312733001E4457 /* config_i386.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = config_i386.h; path = ../../../config_i386.h; sourceTree = SOURCE_ROOT; }; F8E9A4BD0D312733001E4457 /* config_i386.log */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = config_i386.log; path = ../../../config_i386.log; sourceTree = SOURCE_ROOT; }; F8E9A4BE0D312733001E4457 /* config_ppc.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = config_ppc.h; path = ../../../config_ppc.h; sourceTree = SOURCE_ROOT; }; F8E9A4BF0D312733001E4457 /* config_ppc.log */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = config_ppc.log; path = ../../../config_ppc.log; sourceTree = SOURCE_ROOT; }; F8E9A4C00D312733001E4457 /* config.guess */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = config.guess; path = ../../../config.guess; sourceTree = SOURCE_ROOT; }; F8E9A4C10D312733001E4457 /* config.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = config.h; path = ../../../config.h; sourceTree = SOURCE_ROOT; }; F8E9A4C20D312733001E4457 /* config.h.in */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = config.h.in; path = ../../../config.h.in; sourceTree = SOURCE_ROOT; }; F8E9A4C30D312733001E4457 /* config.status */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = config.status; path = ../../../config.status; sourceTree = SOURCE_ROOT; }; F8E9A4C40D312733001E4457 /* config.sub */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = config.sub; path = ../../../config.sub; sourceTree = SOURCE_ROOT; }; F8E9A4C50D312733001E4457 /* configure_i386 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = configure_i386; path = ../../../configure_i386; sourceTree = SOURCE_ROOT; }; F8E9A4C60D312733001E4457 /* configure_ppc */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = configure_ppc; path = ../../../configure_ppc; sourceTree = SOURCE_ROOT; }; F8E9A4C70D312733001E4457 /* configure.ac */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = configure.ac; path = ../../../configure.ac; sourceTree = SOURCE_ROOT; }; F8E9A4C80D312733001E4457 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = COPYING; path = ../../../COPYING; sourceTree = SOURCE_ROOT; }; F8E9A4CA0D312733001E4457 /* Entries */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Entries; path = ../../../CVS/Entries; sourceTree = SOURCE_ROOT; }; F8E9A4CB0D312733001E4457 /* Repository */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Repository; path = ../../../CVS/Repository; sourceTree = SOURCE_ROOT; }; F8E9A4CC0D312733001E4457 /* Root */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Root; path = ../../../CVS/Root; sourceTree = SOURCE_ROOT; }; F8E9A4CD0D312733001E4457 /* Template */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Template; path = ../../../CVS/Template; sourceTree = SOURCE_ROOT; }; F8E9A4CF0D312733001E4457 /* logo.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = logo.bmp; path = ../../../data/logo.bmp; sourceTree = SOURCE_ROOT; }; F8E9A4D00D312733001E4457 /* wm_icon.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = wm_icon.bmp; path = ../../../data/wm_icon.bmp; sourceTree = SOURCE_ROOT; }; F8E9A4D10D312733001E4457 /* depend_i386 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = depend_i386; path = ../../../depend_i386; sourceTree = SOURCE_ROOT; }; F8E9A4D20D312733001E4457 /* depend_powerpc */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = depend_powerpc; path = ../../../depend_powerpc; sourceTree = SOURCE_ROOT; }; F8E9A4D40D312733001E4457 /* aranym-jit.1 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.man; name = "aranym-jit.1"; path = "../../../doc/aranym-jit.1"; sourceTree = SOURCE_ROOT; }; F8E9A4D50D312733001E4457 /* aranym-mmu.1 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.man; name = "aranym-mmu.1"; path = "../../../doc/aranym-mmu.1"; sourceTree = SOURCE_ROOT; }; F8E9A4D60D312733001E4457 /* aranym.1 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.man; name = aranym.1; path = ../../../doc/aranym.1; sourceTree = SOURCE_ROOT; }; F8E9A4D70D312733001E4457 /* aratapif.1 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.man; name = aratapif.1; path = ../../../doc/aratapif.1; sourceTree = SOURCE_ROOT; }; F8E9A4D80D312733001E4457 /* config */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = config; path = ../../../doc/config; sourceTree = SOURCE_ROOT; }; F8E9A4D90D312733001E4457 /* emulop.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = emulop.txt; path = ../../../doc/emulop.txt; sourceTree = SOURCE_ROOT; }; F8E9A4DA0D312733001E4457 /* hguide.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = hguide.txt; path = ../../../doc/hguide.txt; sourceTree = SOURCE_ROOT; }; F8E9A4DB0D312733001E4457 /* FAQ */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = FAQ; path = ../../../FAQ; sourceTree = SOURCE_ROOT; }; F8E9A4DC0D312733001E4457 /* INSTALL */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = INSTALL; path = ../../../INSTALL; sourceTree = SOURCE_ROOT; }; F8E9A4DD0D312733001E4457 /* install-sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = "install-sh"; path = "../../../install-sh"; sourceTree = SOURCE_ROOT; }; F8E9A4DE0D312733001E4457 /* Makefile_i386 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile_i386; path = ../../../Makefile_i386; sourceTree = SOURCE_ROOT; }; F8E9A4DF0D312733001E4457 /* Makefile_ppc */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile_ppc; path = ../../../Makefile_ppc; sourceTree = SOURCE_ROOT; }; F8E9A4E00D312733001E4457 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.in; path = ../../../Makefile.in; sourceTree = SOURCE_ROOT; }; F8E9A4E10D312733001E4457 /* mkinstalldirs */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = mkinstalldirs; path = ../../../mkinstalldirs; sourceTree = SOURCE_ROOT; }; F8E9A4E20D312734001E4457 /* NEWS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = NEWS; path = ../../../NEWS; sourceTree = SOURCE_ROOT; }; F8E9A4E30D312734001E4457 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = README; path = ../../../README; sourceTree = SOURCE_ROOT; }; F8E9A4E50D312734001E4457 /* acia.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = acia.cpp; path = ../../acia.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4E60D312734001E4457 /* acsifdc.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = acsifdc.cpp; path = ../../acsifdc.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4E70D312734001E4457 /* adler32.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = adler32.c; path = ../../adler32.c; sourceTree = SOURCE_ROOT; }; F8E9A4E80D312734001E4457 /* aradata.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = aradata.cpp; path = ../../aradata.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4E90D312734001E4457 /* aranym_exception.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = aranym_exception.cpp; path = ../../aranym_exception.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4EA0D312734001E4457 /* ata.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = ata.cpp; path = ../../ata.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4EB0D312734001E4457 /* audio_crossbar.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = audio_crossbar.cpp; path = ../../audio_crossbar.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4EC0D312734001E4457 /* audio_dma.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = audio_dma.cpp; path = ../../audio_dma.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4ED0D312734001E4457 /* blitter.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = blitter.cpp; path = ../../blitter.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4EE0D312734001E4457 /* bootos.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = bootos.cpp; path = ../../bootos.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4EF0D312734001E4457 /* bootos_emutos.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = bootos_emutos.cpp; path = ../../bootos_emutos.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4F00D312734001E4457 /* bootos_linux.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = bootos_linux.cpp; path = ../../bootos_linux.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4F10D312734001E4457 /* bootos_tos.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = bootos_tos.cpp; path = ../../bootos_tos.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4F20D312734001E4457 /* cdrom.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = cdrom.cpp; path = ../../cdrom.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4F30D312734001E4457 /* cfgopts.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = cfgopts.cpp; path = ../../cfgopts.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4F40D312734001E4457 /* dirty_rects.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dirty_rects.cpp; path = ../../dirty_rects.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4F50D312734001E4457 /* dsp.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dsp.cpp; path = ../../dsp.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4F60D312734001E4457 /* dsp_cpu.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dsp_cpu.cpp; path = ../../dsp_cpu.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4F70D312734001E4457 /* dsp_disasm.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dsp_disasm.cpp; path = ../../dsp_disasm.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4F80D312734001E4457 /* dyngl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = dyngl.c; path = ../../dyngl.c; sourceTree = SOURCE_ROOT; }; F8E9A4F90D312734001E4457 /* dyngl_gl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = dyngl_gl.c; path = ../../dyngl_gl.c; sourceTree = SOURCE_ROOT; }; F8E9A4FA0D312734001E4457 /* dyngl_glext.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = dyngl_glext.c; path = ../../dyngl_glext.c; sourceTree = SOURCE_ROOT; }; F8E9A4FB0D312734001E4457 /* emul_op.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = emul_op.cpp; path = ../../emul_op.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4FC0D312734001E4457 /* fakeio.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = fakeio.cpp; path = ../../fakeio.cpp; sourceTree = SOURCE_ROOT; }; F8E9A4FE0D312734001E4457 /* aranym.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = aranym.icns; path = "../../gui-osx/aranym.icns"; sourceTree = SOURCE_ROOT; }; F8E9A5000D312734001E4457 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/aranym.nib; sourceTree = ""; }; F8E9A5010D312734001E4457 /* German */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = German; path = German.lproj/aranym.nib; sourceTree = ""; }; F8E9A5020D312734001E4457 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; name = Info.plist; path = "../../gui-osx/Info.plist"; sourceTree = SOURCE_ROOT; }; F8E9A5030D312734001E4457 /* SDLMain.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = SDLMain.h; path = "../../gui-osx/SDLMain.h"; sourceTree = SOURCE_ROOT; }; F8E9A5040D312734001E4457 /* SDLMain.m */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.objc; name = SDLMain.m; path = "../../gui-osx/SDLMain.m"; sourceTree = SOURCE_ROOT; }; F8E9A5060D312734001E4457 /* dialog.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dialog.cpp; path = "../../gui-sdl/dialog.cpp"; sourceTree = SOURCE_ROOT; }; F8E9A5070D312734001E4457 /* dialog.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dialog.h; path = "../../gui-sdl/dialog.h"; sourceTree = SOURCE_ROOT; }; F8E9A5080D312734001E4457 /* dlgAlert.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dlgAlert.cpp; path = "../../gui-sdl/dlgAlert.cpp"; sourceTree = SOURCE_ROOT; }; F8E9A5090D312734001E4457 /* dlgAlert.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dlgAlert.h; path = "../../gui-sdl/dlgAlert.h"; sourceTree = SOURCE_ROOT; }; F8E9A50A0D312734001E4457 /* dlgDisk.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dlgDisk.cpp; path = "../../gui-sdl/dlgDisk.cpp"; sourceTree = SOURCE_ROOT; }; F8E9A50B0D312734001E4457 /* dlgDisk.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dlgDisk.h; path = "../../gui-sdl/dlgDisk.h"; sourceTree = SOURCE_ROOT; }; F8E9A50C0D312734001E4457 /* dlgFileSelect.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dlgFileSelect.cpp; path = "../../gui-sdl/dlgFileSelect.cpp"; sourceTree = SOURCE_ROOT; }; F8E9A50D0D312734001E4457 /* dlgFileSelect.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dlgFileSelect.h; path = "../../gui-sdl/dlgFileSelect.h"; sourceTree = SOURCE_ROOT; }; F8E9A50E0D312734001E4457 /* dlgHotkeys.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dlgHotkeys.cpp; path = "../../gui-sdl/dlgHotkeys.cpp"; sourceTree = SOURCE_ROOT; }; F8E9A50F0D312734001E4457 /* dlgHotkeys.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dlgHotkeys.h; path = "../../gui-sdl/dlgHotkeys.h"; sourceTree = SOURCE_ROOT; }; F8E9A5100D312734001E4457 /* dlgKeyboard.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dlgKeyboard.cpp; path = "../../gui-sdl/dlgKeyboard.cpp"; sourceTree = SOURCE_ROOT; }; F8E9A5110D312734001E4457 /* dlgKeyboard.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dlgKeyboard.h; path = "../../gui-sdl/dlgKeyboard.h"; sourceTree = SOURCE_ROOT; }; F8E9A5120D312734001E4457 /* dlgKeypress.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dlgKeypress.cpp; path = "../../gui-sdl/dlgKeypress.cpp"; sourceTree = SOURCE_ROOT; }; F8E9A5130D312734001E4457 /* dlgKeypress.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dlgKeypress.h; path = "../../gui-sdl/dlgKeypress.h"; sourceTree = SOURCE_ROOT; }; F8E9A5140D312734001E4457 /* dlgMain.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dlgMain.cpp; path = "../../gui-sdl/dlgMain.cpp"; sourceTree = SOURCE_ROOT; }; F8E9A5150D312734001E4457 /* dlgMain.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dlgMain.h; path = "../../gui-sdl/dlgMain.h"; sourceTree = SOURCE_ROOT; }; F8E9A5160D312734001E4457 /* dlgNetwork.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dlgNetwork.cpp; path = "../../gui-sdl/dlgNetwork.cpp"; sourceTree = SOURCE_ROOT; }; F8E9A5170D312734001E4457 /* dlgNetwork.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dlgNetwork.h; path = "../../gui-sdl/dlgNetwork.h"; sourceTree = SOURCE_ROOT; }; F8E9A5180D312734001E4457 /* dlgOs.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dlgOs.cpp; path = "../../gui-sdl/dlgOs.cpp"; sourceTree = SOURCE_ROOT; }; F8E9A5190D312734001E4457 /* dlgOs.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dlgOs.h; path = "../../gui-sdl/dlgOs.h"; sourceTree = SOURCE_ROOT; }; F8E9A51A0D312734001E4457 /* dlgVideo.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dlgVideo.cpp; path = "../../gui-sdl/dlgVideo.cpp"; sourceTree = SOURCE_ROOT; }; F8E9A51B0D312734001E4457 /* dlgVideo.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dlgVideo.h; path = "../../gui-sdl/dlgVideo.h"; sourceTree = SOURCE_ROOT; }; F8E9A51C0D312734001E4457 /* file.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = file.cpp; path = "../../gui-sdl/file.cpp"; sourceTree = SOURCE_ROOT; }; F8E9A51D0D312734001E4457 /* file.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = file.h; path = "../../gui-sdl/file.h"; sourceTree = SOURCE_ROOT; }; F8E9A51E0D312734001E4457 /* font.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = font.h; path = "../../gui-sdl/font.h"; sourceTree = SOURCE_ROOT; }; F8E9A51F0D312734001E4457 /* sdlgui.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = sdlgui.cpp; path = "../../gui-sdl/sdlgui.cpp"; sourceTree = SOURCE_ROOT; }; F8E9A5200D312734001E4457 /* sdlgui.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = sdlgui.h; path = "../../gui-sdl/sdlgui.h"; sourceTree = SOURCE_ROOT; }; F8E9A5210D312734001E4457 /* hardware.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = hardware.cpp; path = ../../hardware.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5220D312734001E4457 /* host.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = host.cpp; path = ../../host.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5230D312734001E4457 /* host_audio.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = host_audio.cpp; path = ../../host_audio.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5240D312734001E4457 /* host_clock.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = host_clock.cpp; path = ../../host_clock.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5250D312734001E4457 /* host_surface.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = host_surface.cpp; path = ../../host_surface.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5260D312734001E4457 /* host_surface_opengl.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = host_surface_opengl.cpp; path = ../../host_surface_opengl.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5270D312734001E4457 /* hostscreen.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = hostscreen.cpp; path = ../../hostscreen.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5280D312734001E4457 /* hostscreen_opengl.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = hostscreen_opengl.cpp; path = ../../hostscreen_opengl.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5290D312734001E4457 /* ide.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = ide.cpp; path = ../../ide.cpp; sourceTree = SOURCE_ROOT; }; F8E9A52A0D312734001E4457 /* identify.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = identify.cpp; path = ../../identify.cpp; sourceTree = SOURCE_ROOT; }; F8E9A52B0D312734001E4457 /* ikbd.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = ikbd.cpp; path = ../../ikbd.cpp; sourceTree = SOURCE_ROOT; }; F8E9A52D0D312734001E4457 /* acia.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = acia.h; path = ../../include/acia.h; sourceTree = SOURCE_ROOT; }; F8E9A52E0D312734001E4457 /* acsifdc.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = acsifdc.h; path = ../../include/acsifdc.h; sourceTree = SOURCE_ROOT; }; F8E9A52F0D312734001E4457 /* adler32.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = adler32.h; path = ../../include/adler32.h; sourceTree = SOURCE_ROOT; }; F8E9A5300D312734001E4457 /* aradata.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = aradata.h; path = ../../include/aradata.h; sourceTree = SOURCE_ROOT; }; F8E9A5310D312734001E4457 /* aramd5.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = aramd5.h; path = ../../include/aramd5.h; sourceTree = SOURCE_ROOT; }; F8E9A5320D312734001E4457 /* aranym_exception.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = aranym_exception.h; path = ../../include/aranym_exception.h; sourceTree = SOURCE_ROOT; }; F8E9A5330D312734001E4457 /* aspi-win32.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "aspi-win32.h"; path = "../../include/aspi-win32.h"; sourceTree = SOURCE_ROOT; }; F8E9A5340D312734001E4457 /* ata.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ata.h; path = ../../include/ata.h; sourceTree = SOURCE_ROOT; }; F8E9A5350D312734001E4457 /* audio_crossbar.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = audio_crossbar.h; path = ../../include/audio_crossbar.h; sourceTree = SOURCE_ROOT; }; F8E9A5360D312734001E4457 /* audio_dma.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = audio_dma.h; path = ../../include/audio_dma.h; sourceTree = SOURCE_ROOT; }; F8E9A5370D312734001E4457 /* blitter.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = blitter.h; path = ../../include/blitter.h; sourceTree = SOURCE_ROOT; }; F8E9A5380D312734001E4457 /* bootos.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = bootos.h; path = ../../include/bootos.h; sourceTree = SOURCE_ROOT; }; F8E9A5390D312734001E4457 /* bootos_emutos.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = bootos_emutos.h; path = ../../include/bootos_emutos.h; sourceTree = SOURCE_ROOT; }; F8E9A53A0D312734001E4457 /* bootos_linux.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = bootos_linux.h; path = ../../include/bootos_linux.h; sourceTree = SOURCE_ROOT; }; F8E9A53B0D312734001E4457 /* bootos_tos.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = bootos_tos.h; path = ../../include/bootos_tos.h; sourceTree = SOURCE_ROOT; }; F8E9A53C0D312734001E4457 /* cdrom.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = cdrom.h; path = ../../include/cdrom.h; sourceTree = SOURCE_ROOT; }; F8E9A53D0D312734001E4457 /* cfgopts.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = cfgopts.h; path = ../../include/cfgopts.h; sourceTree = SOURCE_ROOT; }; F8E9A53E0D312734001E4457 /* debug.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = debug.h; path = ../../include/debug.h; sourceTree = SOURCE_ROOT; }; F8E9A53F0D312734001E4457 /* dirty_rects.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dirty_rects.h; path = ../../include/dirty_rects.h; sourceTree = SOURCE_ROOT; }; F8E9A5400D312735001E4457 /* dsp.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dsp.h; path = ../../include/dsp.h; sourceTree = SOURCE_ROOT; }; F8E9A5410D312735001E4457 /* dsp_cpu.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dsp_cpu.h; path = ../../include/dsp_cpu.h; sourceTree = SOURCE_ROOT; }; F8E9A5420D312735001E4457 /* dsp_disasm.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dsp_disasm.h; path = ../../include/dsp_disasm.h; sourceTree = SOURCE_ROOT; }; F8E9A5430D312735001E4457 /* dyngl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dyngl.h; path = ../../include/dyngl.h; sourceTree = SOURCE_ROOT; }; F8E9A5440D312735001E4457 /* dyngl_gl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dyngl_gl.h; path = ../../include/dyngl_gl.h; sourceTree = SOURCE_ROOT; }; F8E9A5450D312735001E4457 /* dyngl_glext.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dyngl_glext.h; path = ../../include/dyngl_glext.h; sourceTree = SOURCE_ROOT; }; F8E9A5460D312735001E4457 /* emu_bochs.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = emu_bochs.h; path = ../../include/emu_bochs.h; sourceTree = SOURCE_ROOT; }; F8E9A5470D312735001E4457 /* emul_op.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = emul_op.h; path = ../../include/emul_op.h; sourceTree = SOURCE_ROOT; }; F8E9A5480D312735001E4457 /* hardware.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = hardware.h; path = ../../include/hardware.h; sourceTree = SOURCE_ROOT; }; F8E9A5490D312735001E4457 /* host.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = host.h; path = ../../include/host.h; sourceTree = SOURCE_ROOT; }; F8E9A54A0D312735001E4457 /* host_audio.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = host_audio.h; path = ../../include/host_audio.h; sourceTree = SOURCE_ROOT; }; F8E9A54B0D312735001E4457 /* host_clock.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = host_clock.h; path = ../../include/host_clock.h; sourceTree = SOURCE_ROOT; }; F8E9A54C0D312735001E4457 /* host_clock_unix.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = host_clock_unix.h; path = ../../include/host_clock_unix.h; sourceTree = SOURCE_ROOT; }; F8E9A54D0D312735001E4457 /* host_filesys.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = host_filesys.h; path = ../../include/host_filesys.h; sourceTree = SOURCE_ROOT; }; F8E9A54E0D312735001E4457 /* host_surface.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = host_surface.h; path = ../../include/host_surface.h; sourceTree = SOURCE_ROOT; }; F8E9A54F0D312735001E4457 /* host_surface_opengl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = host_surface_opengl.h; path = ../../include/host_surface_opengl.h; sourceTree = SOURCE_ROOT; }; F8E9A5500D312735001E4457 /* hostscreen.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = hostscreen.h; path = ../../include/hostscreen.h; sourceTree = SOURCE_ROOT; }; F8E9A5510D312735001E4457 /* hostscreen_opengl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = hostscreen_opengl.h; path = ../../include/hostscreen_opengl.h; sourceTree = SOURCE_ROOT; }; F8E9A5520D312735001E4457 /* icio.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = icio.h; path = ../../include/icio.h; sourceTree = SOURCE_ROOT; }; F8E9A5530D312735001E4457 /* ide.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ide.h; path = ../../include/ide.h; sourceTree = SOURCE_ROOT; }; F8E9A5540D312735001E4457 /* identify.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = identify.h; path = ../../include/identify.h; sourceTree = SOURCE_ROOT; }; F8E9A5550D312735001E4457 /* ikbd.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ikbd.h; path = ../../include/ikbd.h; sourceTree = SOURCE_ROOT; }; F8E9A5560D312735001E4457 /* input.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = input.h; path = ../../include/input.h; sourceTree = SOURCE_ROOT; }; F8E9A5570D312735001E4457 /* logo.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = logo.h; path = ../../include/logo.h; sourceTree = SOURCE_ROOT; }; F8E9A5580D312735001E4457 /* main.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = main.h; path = ../../include/main.h; sourceTree = SOURCE_ROOT; }; F8E9A5590D312735001E4457 /* mfp.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = mfp.h; path = ../../include/mfp.h; sourceTree = SOURCE_ROOT; }; F8E9A55A0D312735001E4457 /* midi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = midi.h; path = ../../include/midi.h; sourceTree = SOURCE_ROOT; }; F8E9A55B0D312735001E4457 /* midi_file.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = midi_file.h; path = ../../include/midi_file.h; sourceTree = SOURCE_ROOT; }; F8E9A55C0D312735001E4457 /* midi_sequencer.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = midi_sequencer.h; path = ../../include/midi_sequencer.h; sourceTree = SOURCE_ROOT; }; F8E9A55D0D312735001E4457 /* mmu.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = mmu.h; path = ../../include/mmu.h; sourceTree = SOURCE_ROOT; }; F8E9A55E0D312735001E4457 /* natfeats.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = natfeats.h; path = ../../include/natfeats.h; sourceTree = SOURCE_ROOT; }; F8E9A55F0D312735001E4457 /* ncr5380.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ncr5380.h; path = ../../include/ncr5380.h; sourceTree = SOURCE_ROOT; }; F8E9A5600D312735001E4457 /* ndebug.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ndebug.h; path = ../../include/ndebug.h; sourceTree = SOURCE_ROOT; }; F8E9A5610D312735001E4457 /* parallel.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = parallel.h; path = ../../include/parallel.h; sourceTree = SOURCE_ROOT; }; F8E9A5620D312735001E4457 /* parallel_file.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = parallel_file.h; path = ../../include/parallel_file.h; sourceTree = SOURCE_ROOT; }; F8E9A5630D312735001E4457 /* parallel_parport.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = parallel_parport.h; path = ../../include/parallel_parport.h; sourceTree = SOURCE_ROOT; }; F8E9A5640D312735001E4457 /* parallel_x86.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = parallel_x86.h; path = ../../include/parallel_x86.h; sourceTree = SOURCE_ROOT; }; F8E9A5650D312735001E4457 /* parameters.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = parameters.h; path = ../../include/parameters.h; sourceTree = SOURCE_ROOT; }; F8E9A5660D312735001E4457 /* romdiff.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = romdiff.h; path = ../../include/romdiff.h; sourceTree = SOURCE_ROOT; }; F8E9A5670D312735001E4457 /* rtc.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = rtc.h; path = ../../include/rtc.h; sourceTree = SOURCE_ROOT; }; F8E9A5680D312735001E4457 /* scsidefs.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = scsidefs.h; path = ../../include/scsidefs.h; sourceTree = SOURCE_ROOT; }; F8E9A5690D312735001E4457 /* tools.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = tools.h; path = ../../include/tools.h; sourceTree = SOURCE_ROOT; }; F8E9A56A0D312735001E4457 /* toserror.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = toserror.h; path = ../../include/toserror.h; sourceTree = SOURCE_ROOT; }; F8E9A56B0D312735001E4457 /* version.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = version.h; path = ../../include/version.h; sourceTree = SOURCE_ROOT; }; F8E9A56D0D312735001E4457 /* videl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = videl.h; path = ../../include/videl.h; sourceTree = SOURCE_ROOT; }; F8E9A56E0D312735001E4457 /* videl_zoom.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = videl_zoom.h; path = ../../include/videl_zoom.h; sourceTree = SOURCE_ROOT; }; F8E9A56F0D312735001E4457 /* yamaha.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = yamaha.h; path = ../../include/yamaha.h; sourceTree = SOURCE_ROOT; }; F8E9A5700D312735001E4457 /* input.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = input.cpp; path = ../../input.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5710D312735001E4457 /* logo.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = logo.cpp; path = ../../logo.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5720D312735001E4457 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = ../../main.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5730D312735001E4457 /* md5.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = md5.cpp; path = ../../md5.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5740D312735001E4457 /* mfp.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = mfp.cpp; path = ../../mfp.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5750D312735001E4457 /* midi.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = midi.cpp; path = ../../midi.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5760D312735001E4457 /* midi_file.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = midi_file.cpp; path = ../../midi_file.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5770D312735001E4457 /* midi_sequencer.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = midi_sequencer.cpp; path = ../../midi_sequencer.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5780D312735001E4457 /* mmu.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = mmu.cpp; path = ../../mmu.cpp; sourceTree = SOURCE_ROOT; }; F8E9A57A0D312735001E4457 /* atari_example.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = atari_example.c; path = ../../natfeat/atari_example.c; sourceTree = SOURCE_ROOT; }; F8E9A57B0D312735001E4457 /* atari_example_gfa.lst */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = atari_example_gfa.lst; path = ../../natfeat/atari_example_gfa.lst; sourceTree = SOURCE_ROOT; }; F8E9A57C0D312735001E4457 /* atari_rootsec.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = atari_rootsec.h; path = ../../natfeat/atari_rootsec.h; sourceTree = SOURCE_ROOT; }; F8E9A57D0D312735001E4457 /* debugprintf.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = debugprintf.cpp; path = ../../natfeat/debugprintf.cpp; sourceTree = SOURCE_ROOT; }; F8E9A57E0D312735001E4457 /* debugprintf.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = debugprintf.h; path = ../../natfeat/debugprintf.h; sourceTree = SOURCE_ROOT; }; F8E9A5800D312735001E4457 /* attic.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = attic.txt; path = ../../natfeat/doc/attic.txt; sourceTree = SOURCE_ROOT; }; F8E9A5810D312735001E4457 /* call68k.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = call68k.txt; path = ../../natfeat/doc/call68k.txt; sourceTree = SOURCE_ROOT; }; F8E9A5820D312735001E4457 /* native.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = native.txt; path = ../../natfeat/doc/native.txt; sourceTree = SOURCE_ROOT; }; F8E9A5830D312735001E4457 /* nf.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nf.h; path = ../../natfeat/doc/nf.h; sourceTree = SOURCE_ROOT; }; F8E9A5840D312735001E4457 /* sample.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = sample.c; path = ../../natfeat/doc/sample.c; sourceTree = SOURCE_ROOT; }; F8E9A5850D312735001E4457 /* ethernet.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = ethernet.cpp; path = ../../natfeat/ethernet.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5860D312735001E4457 /* ethernet.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ethernet.h; path = ../../natfeat/ethernet.h; sourceTree = SOURCE_ROOT; }; F8E9A5870D312735001E4457 /* fvdidrv_nfapi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = fvdidrv_nfapi.h; path = ../../natfeat/fvdidrv_nfapi.h; sourceTree = SOURCE_ROOT; }; F8E9A5880D312735001E4457 /* hostfs.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = hostfs.cpp; path = ../../natfeat/hostfs.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5890D312735001E4457 /* hostfs.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = hostfs.h; path = ../../natfeat/hostfs.h; sourceTree = SOURCE_ROOT; }; F8E9A58A0D312735001E4457 /* nf_base.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nf_base.cpp; path = ../../natfeat/nf_base.cpp; sourceTree = SOURCE_ROOT; }; F8E9A58B0D312735001E4457 /* nf_base.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nf_base.h; path = ../../natfeat/nf_base.h; sourceTree = SOURCE_ROOT; }; F8E9A58C0D312735001E4457 /* nf_basicset.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nf_basicset.cpp; path = ../../natfeat/nf_basicset.cpp; sourceTree = SOURCE_ROOT; }; F8E9A58D0D312735001E4457 /* nf_basicset.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nf_basicset.h; path = ../../natfeat/nf_basicset.h; sourceTree = SOURCE_ROOT; }; F8E9A58E0D312735001E4457 /* nf_objs.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nf_objs.cpp; path = ../../natfeat/nf_objs.cpp; sourceTree = SOURCE_ROOT; }; F8E9A58F0D312735001E4457 /* nf_objs.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nf_objs.h; path = ../../natfeat/nf_objs.h; sourceTree = SOURCE_ROOT; }; F8E9A5900D312735001E4457 /* nfaudio.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nfaudio.cpp; path = ../../natfeat/nfaudio.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5910D312735001E4457 /* nfaudio.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfaudio.h; path = ../../natfeat/nfaudio.h; sourceTree = SOURCE_ROOT; }; F8E9A5920D312735001E4457 /* nfbootstrap.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nfbootstrap.cpp; path = ../../natfeat/nfbootstrap.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5930D312735001E4457 /* nfbootstrap.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfbootstrap.h; path = ../../natfeat/nfbootstrap.h; sourceTree = SOURCE_ROOT; }; F8E9A5940D312735001E4457 /* nfcdrom.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nfcdrom.cpp; path = ../../natfeat/nfcdrom.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5950D312735001E4457 /* nfcdrom.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfcdrom.h; path = ../../natfeat/nfcdrom.h; sourceTree = SOURCE_ROOT; }; F8E9A5960D312735001E4457 /* nfcdrom_linux.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nfcdrom_linux.cpp; path = ../../natfeat/nfcdrom_linux.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5970D312735001E4457 /* nfcdrom_linux.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfcdrom_linux.h; path = ../../natfeat/nfcdrom_linux.h; sourceTree = SOURCE_ROOT; }; F8E9A5980D312735001E4457 /* nfclipbrd.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nfclipbrd.cpp; path = ../../natfeat/nfclipbrd.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5990D312735001E4457 /* nfclipbrd.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfclipbrd.h; path = ../../natfeat/nfclipbrd.h; sourceTree = SOURCE_ROOT; }; F8E9A59A0D312735001E4457 /* nfclipbrd_nfapi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfclipbrd_nfapi.h; path = ../../natfeat/nfclipbrd_nfapi.h; sourceTree = SOURCE_ROOT; }; F8E9A59B0D312735001E4457 /* nfjpeg.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nfjpeg.cpp; path = ../../natfeat/nfjpeg.cpp; sourceTree = SOURCE_ROOT; }; F8E9A59C0D312735001E4457 /* nfjpeg.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfjpeg.h; path = ../../natfeat/nfjpeg.h; sourceTree = SOURCE_ROOT; }; F8E9A59E0D312735001E4457 /* call-gen.pl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "call-gen.pl"; path = "../../natfeat/nfosmesa/call-gen.pl"; sourceTree = SOURCE_ROOT; }; F8E9A59F0D312735001E4457 /* call-gl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "call-gl.c"; path = "../../natfeat/nfosmesa/call-gl.c"; sourceTree = SOURCE_ROOT; }; F8E9A5A00D312735001E4457 /* call-glext.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "call-glext.c"; path = "../../natfeat/nfosmesa/call-glext.c"; sourceTree = SOURCE_ROOT; }; F8E9A5A10D312736001E4457 /* dispatch-gen.pl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "dispatch-gen.pl"; path = "../../natfeat/nfosmesa/dispatch-gen.pl"; sourceTree = SOURCE_ROOT; }; F8E9A5A20D312736001E4457 /* dispatch-gl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "dispatch-gl.c"; path = "../../natfeat/nfosmesa/dispatch-gl.c"; sourceTree = SOURCE_ROOT; }; F8E9A5A30D312736001E4457 /* dispatch-glext.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "dispatch-glext.c"; path = "../../natfeat/nfosmesa/dispatch-glext.c"; sourceTree = SOURCE_ROOT; }; F8E9A5A40D312736001E4457 /* dispatch-osmesa.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "dispatch-osmesa.c"; path = "../../natfeat/nfosmesa/dispatch-osmesa.c"; sourceTree = SOURCE_ROOT; }; F8E9A5A50D312736001E4457 /* load-gen.pl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "load-gen.pl"; path = "../../natfeat/nfosmesa/load-gen.pl"; sourceTree = SOURCE_ROOT; }; F8E9A5A60D312736001E4457 /* load-gl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "load-gl.c"; path = "../../natfeat/nfosmesa/load-gl.c"; sourceTree = SOURCE_ROOT; }; F8E9A5A70D312736001E4457 /* load-glext.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "load-glext.c"; path = "../../natfeat/nfosmesa/load-glext.c"; sourceTree = SOURCE_ROOT; }; F8E9A5A80D312736001E4457 /* pointers-gen.pl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "pointers-gen.pl"; path = "../../natfeat/nfosmesa/pointers-gen.pl"; sourceTree = SOURCE_ROOT; }; F8E9A5A90D312736001E4457 /* pointers-gl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "pointers-gl.h"; path = "../../natfeat/nfosmesa/pointers-gl.h"; sourceTree = SOURCE_ROOT; }; F8E9A5AA0D312736001E4457 /* pointers-glext.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "pointers-glext.h"; path = "../../natfeat/nfosmesa/pointers-glext.h"; sourceTree = SOURCE_ROOT; }; F8E9A5AB0D312736001E4457 /* pointers-osmesa.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "pointers-osmesa.h"; path = "../../natfeat/nfosmesa/pointers-osmesa.h"; sourceTree = SOURCE_ROOT; }; F8E9A5AC0D312736001E4457 /* proto-gen.pl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "proto-gen.pl"; path = "../../natfeat/nfosmesa/proto-gen.pl"; sourceTree = SOURCE_ROOT; }; F8E9A5AD0D312736001E4457 /* proto-gl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "proto-gl.h"; path = "../../natfeat/nfosmesa/proto-gl.h"; sourceTree = SOURCE_ROOT; }; F8E9A5AE0D312736001E4457 /* proto-glext.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = "proto-glext.h"; path = "../../natfeat/nfosmesa/proto-glext.h"; sourceTree = SOURCE_ROOT; }; F8E9A5AF0D312736001E4457 /* unload-gen.pl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "unload-gen.pl"; path = "../../natfeat/nfosmesa/unload-gen.pl"; sourceTree = SOURCE_ROOT; }; F8E9A5B00D312736001E4457 /* unload-gl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "unload-gl.c"; path = "../../natfeat/nfosmesa/unload-gl.c"; sourceTree = SOURCE_ROOT; }; F8E9A5B10D312736001E4457 /* unload-glext.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = "unload-glext.c"; path = "../../natfeat/nfosmesa/unload-glext.c"; sourceTree = SOURCE_ROOT; }; F8E9A5B20D312737001E4457 /* nfosmesa.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nfosmesa.cpp; path = ../../natfeat/nfosmesa.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5B30D312737001E4457 /* nfosmesa.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfosmesa.h; path = ../../natfeat/nfosmesa.h; sourceTree = SOURCE_ROOT; }; F8E9A5B40D312737001E4457 /* nfpci.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nfpci.cpp; path = ../../natfeat/nfpci.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5B50D312737001E4457 /* nfpci.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfpci.h; path = ../../natfeat/nfpci.h; sourceTree = SOURCE_ROOT; }; F8E9A5B60D312737001E4457 /* nfpci_linux.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nfpci_linux.cpp; path = ../../natfeat/nfpci_linux.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5B70D312737001E4457 /* nfpci_linux.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfpci_linux.h; path = ../../natfeat/nfpci_linux.h; sourceTree = SOURCE_ROOT; }; F8E9A5B80D312737001E4457 /* nfvdi.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nfvdi.cpp; path = ../../natfeat/nfvdi.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5B90D312737001E4457 /* nfvdi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfvdi.h; path = ../../natfeat/nfvdi.h; sourceTree = SOURCE_ROOT; }; F8E9A5BA0D312737001E4457 /* nfvdi_opengl.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nfvdi_opengl.cpp; path = ../../natfeat/nfvdi_opengl.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5BB0D312737001E4457 /* nfvdi_opengl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfvdi_opengl.h; path = ../../natfeat/nfvdi_opengl.h; sourceTree = SOURCE_ROOT; }; F8E9A5BC0D312737001E4457 /* nfvdi_soft.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = nfvdi_soft.cpp; path = ../../natfeat/nfvdi_soft.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5BD0D312737001E4457 /* nfvdi_soft.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = nfvdi_soft.h; path = ../../natfeat/nfvdi_soft.h; sourceTree = SOURCE_ROOT; }; F8E9A5BE0D312737001E4457 /* xhdi.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = xhdi.cpp; path = ../../natfeat/xhdi.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5BF0D312737001E4457 /* xhdi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = xhdi.h; path = ../../natfeat/xhdi.h; sourceTree = SOURCE_ROOT; }; F8E9A5C00D312737001E4457 /* natfeats.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = natfeats.cpp; path = ../../natfeats.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5C10D312737001E4457 /* ncr5380.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = ncr5380.cpp; path = ../../ncr5380.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5C20D312737001E4457 /* ndebug.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = ndebug.cpp; path = ../../ndebug.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5C30D312737001E4457 /* parallel.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = parallel.cpp; path = ../../parallel.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5C40D312737001E4457 /* parallel_file.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = parallel_file.cpp; path = ../../parallel_file.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5C50D312737001E4457 /* parallel_parport.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = parallel_parport.cpp; path = ../../parallel_parport.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5C60D312737001E4457 /* parallel_x86.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = parallel_x86.cpp; path = ../../parallel_x86.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5C70D312737001E4457 /* parameters.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = parameters.cpp; path = ../../parameters.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5C80D312737001E4457 /* romdiff.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = romdiff.cpp; path = ../../romdiff.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5C90D312737001E4457 /* rtc.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = rtc.cpp; path = ../../rtc.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5CA0D312737001E4457 /* template.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = template.cpp; path = ../../template.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5CB0D312737001E4457 /* tools.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = tools.cpp; path = ../../tools.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5CD0D312737001E4457 /* aranym_glue.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = aranym_glue.cpp; path = ../../uae_cpu/aranym_glue.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5CE0D312737001E4457 /* build68k.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = build68k.c; path = ../../uae_cpu/build68k.c; sourceTree = SOURCE_ROOT; }; F8E9A5D00D312737001E4457 /* codegen_x86.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = codegen_x86.cpp; path = ../../uae_cpu/compiler/codegen_x86.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5D10D312737001E4457 /* codegen_x86.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = codegen_x86.h; path = ../../uae_cpu/compiler/codegen_x86.h; sourceTree = SOURCE_ROOT; }; F8E9A5D20D312737001E4457 /* compemu.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = compemu.h; path = ../../uae_cpu/compiler/compemu.h; sourceTree = SOURCE_ROOT; }; F8E9A5D30D312737001E4457 /* compemu_fpp.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = compemu_fpp.cpp; path = ../../uae_cpu/compiler/compemu_fpp.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5D40D312737001E4457 /* compemu_support.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = compemu_support.cpp; path = ../../uae_cpu/compiler/compemu_support.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5D50D312737001E4457 /* flags_x86.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = flags_x86.h; path = ../../uae_cpu/compiler/flags_x86.h; sourceTree = SOURCE_ROOT; }; F8E9A5D60D312737001E4457 /* gencomp.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = gencomp.c; path = ../../uae_cpu/compiler/gencomp.c; sourceTree = SOURCE_ROOT; }; F8E9A5D70D312737001E4457 /* test_codegen_x86.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = test_codegen_x86.cpp; path = ../../uae_cpu/compiler/test_codegen_x86.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5D80D312737001E4457 /* cpu_emulation.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = cpu_emulation.h; path = ../../uae_cpu/cpu_emulation.h; sourceTree = SOURCE_ROOT; }; F8E9A5D90D312737001E4457 /* cpummu.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = cpummu.cpp; path = ../../uae_cpu/cpummu.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5DA0D312737001E4457 /* cpummu.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = cpummu.h; path = ../../uae_cpu/cpummu.h; sourceTree = SOURCE_ROOT; }; F8E9A5DB0D312737001E4457 /* cpuopti.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = cpuopti.c; path = ../../uae_cpu/cpuopti.c; sourceTree = SOURCE_ROOT; }; F8E9A5DC0D312737001E4457 /* debug.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = debug.cpp; path = ../../uae_cpu/debug.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5DE0D312737001E4457 /* core.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = core.h; path = ../../uae_cpu/fpu/core.h; sourceTree = SOURCE_ROOT; }; F8E9A5DF0D312737001E4457 /* exceptions.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = exceptions.cpp; path = ../../uae_cpu/fpu/exceptions.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5E00D312737001E4457 /* exceptions.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = exceptions.h; path = ../../uae_cpu/fpu/exceptions.h; sourceTree = SOURCE_ROOT; }; F8E9A5E10D312737001E4457 /* flags.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = flags.cpp; path = ../../uae_cpu/fpu/flags.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5E20D312737001E4457 /* flags.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = flags.h; path = ../../uae_cpu/fpu/flags.h; sourceTree = SOURCE_ROOT; }; F8E9A5E30D312737001E4457 /* fpu.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = fpu.h; path = ../../uae_cpu/fpu/fpu.h; sourceTree = SOURCE_ROOT; }; F8E9A5E40D312737001E4457 /* fpu_ieee.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = fpu_ieee.cpp; path = ../../uae_cpu/fpu/fpu_ieee.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5E50D312737001E4457 /* fpu_ieee.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = fpu_ieee.h; path = ../../uae_cpu/fpu/fpu_ieee.h; sourceTree = SOURCE_ROOT; }; F8E9A5E60D312737001E4457 /* fpu_uae.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = fpu_uae.cpp; path = ../../uae_cpu/fpu/fpu_uae.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5E70D312738001E4457 /* fpu_uae.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = fpu_uae.h; path = ../../uae_cpu/fpu/fpu_uae.h; sourceTree = SOURCE_ROOT; }; F8E9A5E80D312738001E4457 /* fpu_x86.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = fpu_x86.cpp; path = ../../uae_cpu/fpu/fpu_x86.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5E90D312738001E4457 /* fpu_x86.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = fpu_x86.h; path = ../../uae_cpu/fpu/fpu_x86.h; sourceTree = SOURCE_ROOT; }; F8E9A5EA0D312738001E4457 /* fpu_x86_asm.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = fpu_x86_asm.h; path = ../../uae_cpu/fpu/fpu_x86_asm.h; sourceTree = SOURCE_ROOT; }; F8E9A5EB0D312738001E4457 /* impl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = impl.h; path = ../../uae_cpu/fpu/impl.h; sourceTree = SOURCE_ROOT; }; F8E9A5EC0D312738001E4457 /* mathlib.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = mathlib.cpp; path = ../../uae_cpu/fpu/mathlib.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5ED0D312738001E4457 /* mathlib.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = mathlib.h; path = ../../uae_cpu/fpu/mathlib.h; sourceTree = SOURCE_ROOT; }; F8E9A5EE0D312738001E4457 /* rounding.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = rounding.cpp; path = ../../uae_cpu/fpu/rounding.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5EF0D312738001E4457 /* rounding.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = rounding.h; path = ../../uae_cpu/fpu/rounding.h; sourceTree = SOURCE_ROOT; }; F8E9A5F00D312738001E4457 /* types.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = types.h; path = ../../uae_cpu/fpu/types.h; sourceTree = SOURCE_ROOT; }; F8E9A5F10D312738001E4457 /* gencpu.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = gencpu.c; path = ../../uae_cpu/gencpu.c; sourceTree = SOURCE_ROOT; }; F8E9A5F20D312738001E4457 /* m68k.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = m68k.h; path = ../../uae_cpu/m68k.h; sourceTree = SOURCE_ROOT; }; F8E9A5F30D312738001E4457 /* memory.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = memory.cpp; path = ../../uae_cpu/memory.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5F40D312738001E4457 /* memory.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = memory.h; path = ../../uae_cpu/memory.h; sourceTree = SOURCE_ROOT; }; F8E9A5F50D312738001E4457 /* newcpu.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = newcpu.cpp; path = ../../uae_cpu/newcpu.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5F60D312738001E4457 /* newcpu.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = newcpu.h; path = ../../uae_cpu/newcpu.h; sourceTree = SOURCE_ROOT; }; F8E9A5F70D312738001E4457 /* noflags.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = noflags.h; path = ../../uae_cpu/noflags.h; sourceTree = SOURCE_ROOT; }; F8E9A5F80D312738001E4457 /* readcpu.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = readcpu.cpp; path = ../../uae_cpu/readcpu.cpp; sourceTree = SOURCE_ROOT; }; F8E9A5F90D312738001E4457 /* readcpu.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = readcpu.h; path = ../../uae_cpu/readcpu.h; sourceTree = SOURCE_ROOT; }; F8E9A5FA0D312738001E4457 /* registers.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = registers.h; path = ../../uae_cpu/registers.h; sourceTree = SOURCE_ROOT; }; F8E9A5FB0D312738001E4457 /* spcflags.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = spcflags.h; path = ../../uae_cpu/spcflags.h; sourceTree = SOURCE_ROOT; }; F8E9A5FC0D312738001E4457 /* table68k */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = table68k; path = ../../uae_cpu/table68k; sourceTree = SOURCE_ROOT; }; F8E9A5FE0D312738001E4457 /* .cvsignore */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = .cvsignore; path = ../.cvsignore; sourceTree = SOURCE_ROOT; }; F8E9A5FF0D312738001E4457 /* ansidecl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ansidecl.h; path = ../ansidecl.h; sourceTree = SOURCE_ROOT; }; F8E9A6000D312738001E4457 /* aratapif.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = aratapif.c; path = ../aratapif.c; sourceTree = SOURCE_ROOT; }; F8E9A6020D312738001E4457 /* cdrom_beos.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = cdrom_beos.cpp; path = ../beos/cdrom_beos.cpp; sourceTree = SOURCE_ROOT; }; F8E9A6030D312738001E4457 /* cdrom_beos.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = cdrom_beos.h; path = ../beos/cdrom_beos.h; sourceTree = SOURCE_ROOT; }; F8E9A6050D312738001E4457 /* clipbrd_cygwin.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = clipbrd_cygwin.cpp; path = ../cygwin/clipbrd_cygwin.cpp; sourceTree = SOURCE_ROOT; }; F8E9A6060D312738001E4457 /* ethernet_cygwin.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = ethernet_cygwin.cpp; path = ../cygwin/ethernet_cygwin.cpp; sourceTree = SOURCE_ROOT; }; F8E9A6070D312738001E4457 /* ethernet_cygwin.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ethernet_cygwin.h; path = ../cygwin/ethernet_cygwin.h; sourceTree = SOURCE_ROOT; }; F8E9A6080D312738001E4457 /* parameters_cygwin.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = parameters_cygwin.cpp; path = ../cygwin/parameters_cygwin.cpp; sourceTree = SOURCE_ROOT; }; F8E9A6090D312738001E4457 /* sigsegv_cygwin.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = sigsegv_cygwin.cpp; path = ../cygwin/sigsegv_cygwin.cpp; sourceTree = SOURCE_ROOT; }; F8E9A60A0D312738001E4457 /* tools_cygwin.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = tools_cygwin.cpp; path = ../cygwin/tools_cygwin.cpp; sourceTree = SOURCE_ROOT; }; F8E9A60D0D312738001E4457 /* aranym.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = aranym.icns; sourceTree = SOURCE_ROOT; }; F8E9A6110D312738001E4457 /* aranym2.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = aranym2.icns; sourceTree = SOURCE_ROOT; }; F8E9A6150D312738001E4457 /* aratapif.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = aratapif.sh; sourceTree = SOURCE_ROOT; }; F8E9A6190D312738001E4457 /* categories.pbxbtree */ = {isa = PBXFileReference; lastKnownFileType = file; name = categories.pbxbtree; path = build/aranym.build/aranym.pbxindex/categories.pbxbtree; sourceTree = SOURCE_ROOT; }; F8E9A61A0D312738001E4457 /* cdecls.pbxbtree */ = {isa = PBXFileReference; lastKnownFileType = file; name = cdecls.pbxbtree; path = build/aranym.build/aranym.pbxindex/cdecls.pbxbtree; sourceTree = SOURCE_ROOT; }; F8E9A61B0D312738001E4457 /* decls.pbxbtree */ = {isa = PBXFileReference; lastKnownFileType = file; name = decls.pbxbtree; path = build/aranym.build/aranym.pbxindex/decls.pbxbtree; sourceTree = SOURCE_ROOT; }; F8E9A61C0D312738001E4457 /* files.pbxbtree */ = {isa = PBXFileReference; lastKnownFileType = file; name = files.pbxbtree; path = build/aranym.build/aranym.pbxindex/files.pbxbtree; sourceTree = SOURCE_ROOT; }; F8E9A61D0D312738001E4457 /* imports.pbxbtree */ = {isa = PBXFileReference; lastKnownFileType = file; name = imports.pbxbtree; path = build/aranym.build/aranym.pbxindex/imports.pbxbtree; sourceTree = SOURCE_ROOT; }; F8E9A61E0D312738001E4457 /* pbxindex.header */ = {isa = PBXFileReference; lastKnownFileType = file; name = pbxindex.header; path = build/aranym.build/aranym.pbxindex/pbxindex.header; sourceTree = SOURCE_ROOT; }; F8E9A61F0D312738001E4457 /* protocols.pbxbtree */ = {isa = PBXFileReference; lastKnownFileType = file; name = protocols.pbxbtree; path = build/aranym.build/aranym.pbxindex/protocols.pbxbtree; sourceTree = SOURCE_ROOT; }; F8E9A6200D312738001E4457 /* refs.pbxbtree */ = {isa = PBXFileReference; lastKnownFileType = file; name = refs.pbxbtree; path = build/aranym.build/aranym.pbxindex/refs.pbxbtree; sourceTree = SOURCE_ROOT; }; F8E9A6220D312738001E4457 /* control */ = {isa = PBXFileReference; lastKnownFileType = file; name = control; path = build/aranym.build/aranym.pbxindex/strings.pbxstrings/control; sourceTree = SOURCE_ROOT; }; F8E9A6230D312738001E4457 /* strings */ = {isa = PBXFileReference; lastKnownFileType = file; name = strings; path = build/aranym.build/aranym.pbxindex/strings.pbxstrings/strings; sourceTree = SOURCE_ROOT; }; F8E9A6240D312738001E4457 /* subclasses.pbxbtree */ = {isa = PBXFileReference; lastKnownFileType = file; name = subclasses.pbxbtree; path = build/aranym.build/aranym.pbxindex/subclasses.pbxbtree; sourceTree = SOURCE_ROOT; }; F8E9A6250D312738001E4457 /* symbols0.pbxsymbols */ = {isa = PBXFileReference; lastKnownFileType = file; name = symbols0.pbxsymbols; path = build/aranym.build/aranym.pbxindex/symbols0.pbxsymbols; sourceTree = SOURCE_ROOT; }; F8E9A62A0D312738001E4457 /* BUILDING_LEOPARD.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = BUILDING_LEOPARD.txt; sourceTree = SOURCE_ROOT; }; F8E9A62B0D312738001E4457 /* busybee.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = busybee.icns; sourceTree = SOURCE_ROOT; }; F8E9A62C0D312738001E4457 /* busybee112-glossy.xcf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "busybee112-glossy.xcf"; sourceTree = SOURCE_ROOT; }; F8E9A6300D312738001E4457 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/aranym.nib; sourceTree = ""; }; F8E9A6310D312738001E4457 /* ethernet_darwin.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = ethernet_darwin.cpp; sourceTree = SOURCE_ROOT; }; F8E9A6320D312738001E4457 /* ethernet_darwin.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ethernet_darwin.h; sourceTree = SOURCE_ROOT; }; F8E9A64E0D312739001E4457 /* German */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = German; path = German.lproj/aranym.nib; sourceTree = ""; }; F8E9A6500D312739001E4457 /* German */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.plist.strings; name = German; path = German.lproj/InfoPlist.strings; sourceTree = ""; }; F8E9A6510D312739001E4457 /* host_filesys_darwin.M */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.objcpp; path = host_filesys_darwin.M; sourceTree = SOURCE_ROOT; }; F8E9A6520D312739001E4457 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = Info.plist; sourceTree = SOURCE_ROOT; }; F8E9A6530D312739001E4457 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = SOURCE_ROOT; }; F8E9A73C0D31273D001E4457 /* parameters_darwin.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = parameters_darwin.cpp; sourceTree = SOURCE_ROOT; }; F8E9A73D0D31273D001E4457 /* PkgInfo */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = PkgInfo; sourceTree = SOURCE_ROOT; }; F8E9A73E0D31273D001E4457 /* README_ethernet.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = README_ethernet.txt; sourceTree = SOURCE_ROOT; }; F8E9A73F0D31273D001E4457 /* sdl.m4 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = sdl.m4; sourceTree = SOURCE_ROOT; }; F8E9A7400D31273D001E4457 /* SDLHotkeysRefresh.M */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.objcpp; path = SDLHotkeysRefresh.M; sourceTree = SOURCE_ROOT; }; F8E9A7410D31273D001E4457 /* SDLMain.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = SDLMain.h; sourceTree = SOURCE_ROOT; }; F8E9A7420D31273D001E4457 /* SDLMain.M */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.objcpp; path = SDLMain.M; sourceTree = SOURCE_ROOT; }; F8E9A7430D31273D001E4457 /* sigsegv_darwin_x86.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = sigsegv_darwin_x86.cpp; sourceTree = SOURCE_ROOT; }; F8E9A7440D31273D001E4457 /* getopt.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = getopt.c; path = ../getopt.c; sourceTree = SOURCE_ROOT; }; F8E9A7450D31273D001E4457 /* getopt.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = getopt.h; path = ../getopt.h; sourceTree = SOURCE_ROOT; }; F8E9A7460D31273D001E4457 /* getopt1.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = getopt1.c; path = ../getopt1.c; sourceTree = SOURCE_ROOT; }; F8E9A7470D31273D001E4457 /* getopt_init.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = getopt_init.c; path = ../getopt_init.c; sourceTree = SOURCE_ROOT; }; F8E9A7480D31273D001E4457 /* host_clock_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = host_clock_unix.cpp; path = ../host_clock_unix.cpp; sourceTree = SOURCE_ROOT; }; F8E9A7490D31273D001E4457 /* host_filesys_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = host_filesys_unix.cpp; path = ../host_filesys_unix.cpp; sourceTree = SOURCE_ROOT; }; F8E9A74B0D31273D001E4457 /* unaligned.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = unaligned.c; path = ../irix/unaligned.c; sourceTree = SOURCE_ROOT; }; F8E9A74D0D31273D001E4457 /* ethernet_linux.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = ethernet_linux.cpp; path = ../linux/ethernet_linux.cpp; sourceTree = SOURCE_ROOT; }; F8E9A74E0D31273D001E4457 /* ethernet_linux.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ethernet_linux.h; path = ../linux/ethernet_linux.h; sourceTree = SOURCE_ROOT; }; F8E9A74F0D31273D001E4457 /* parameters_linux.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = parameters_linux.cpp; path = ../linux/parameters_linux.cpp; sourceTree = SOURCE_ROOT; }; F8E9A7500D31273D001E4457 /* sigsegv_linux_x86.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = sigsegv_linux_x86.cpp; path = ../linux/sigsegv_linux_x86.cpp; sourceTree = SOURCE_ROOT; }; F8E9A7520D31273D001E4457 /* .cvsignore */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = .cvsignore; path = ../MacOSX/.cvsignore; sourceTree = SOURCE_ROOT; }; F8E9A7530D31273D001E4457 /* MacAranym.pbproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MacAranym.pbproj; path = ../MacOSX/MacAranym.pbproj; sourceTree = SOURCE_ROOT; }; F8E9A7560D31273D001E4457 /* MacAranym.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MacAranym.xcodeproj; path = ../MacOSX/MacAranym.xcodeproj; sourceTree = SOURCE_ROOT; }; F8E9A7590D31273D001E4457 /* parameters_MacOSX.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = parameters_MacOSX.cpp; path = ../MacOSX/parameters_MacOSX.cpp; sourceTree = SOURCE_ROOT; }; F8E9A75A0D31273D001E4457 /* README.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = README.rtf; path = ../MacOSX/README.rtf; sourceTree = SOURCE_ROOT; }; F8E9A75B0D31273D001E4457 /* README_Xcode.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = README_Xcode.rtf; path = ../MacOSX/README_Xcode.rtf; sourceTree = SOURCE_ROOT; }; F8E9A75C0D31273D001E4457 /* main_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = main_unix.cpp; path = ../main_unix.cpp; sourceTree = SOURCE_ROOT; }; F8E9A75D0D31273D001E4457 /* parameters_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = parameters_unix.cpp; path = ../parameters_unix.cpp; sourceTree = SOURCE_ROOT; }; F8E9A75F0D31273D001E4457 /* sigsegv_solaris_x86.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = sigsegv_solaris_x86.cpp; path = ../solaris/sigsegv_solaris_x86.cpp; sourceTree = SOURCE_ROOT; }; F8E9A7600D31273D001E4457 /* which_sparc */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = which_sparc; path = ../solaris/which_sparc; sourceTree = SOURCE_ROOT; }; F8E9A7610D31273D001E4457 /* sysdeps.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = sysdeps.h; path = ../sysdeps.h; sourceTree = SOURCE_ROOT; }; F8E9A7620D31273D001E4457 /* vasprintf.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = vasprintf.c; path = ../vasprintf.c; sourceTree = SOURCE_ROOT; }; F8E9A7630D31273D001E4457 /* vm_alloc.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = vm_alloc.cpp; path = ../vm_alloc.cpp; sourceTree = SOURCE_ROOT; }; F8E9A7640D31273D001E4457 /* vm_alloc.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = vm_alloc.h; path = ../vm_alloc.h; sourceTree = SOURCE_ROOT; }; F8E9A7660D31273D001E4457 /* sigsegv_xbsd.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = sigsegv_xbsd.cpp; path = ../xbsd/sigsegv_xbsd.cpp; sourceTree = SOURCE_ROOT; }; F8E9A7670D31273D001E4457 /* videl.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = videl.cpp; path = ../../videl.cpp; sourceTree = SOURCE_ROOT; }; F8E9A7680D31273D001E4457 /* videl_zoom.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = videl_zoom.cpp; path = ../../videl_zoom.cpp; sourceTree = SOURCE_ROOT; }; F8E9A7690D31273D001E4457 /* yamaha.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = yamaha.cpp; path = ../../yamaha.cpp; sourceTree = SOURCE_ROOT; }; F8E9A76A0D31273D001E4457 /* TODO */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = TODO; path = ../../../TODO; sourceTree = SOURCE_ROOT; }; F8E9A76C0D31273D001E4457 /* arabridge */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = arabridge; path = ../../../tools/arabridge; sourceTree = SOURCE_ROOT; }; F8E9A76D0D31273D001E4457 /* build-cygwin.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = "build-cygwin.sh"; path = "../../../tools/build-cygwin.sh"; sourceTree = SOURCE_ROOT; }; F8E9A76E0D31273D001E4457 /* dyngl_c.pl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = dyngl_c.pl; path = ../../../tools/dyngl_c.pl; sourceTree = SOURCE_ROOT; }; F8E9A76F0D31273D001E4457 /* dyngl_h.pl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = dyngl_h.pl; path = ../../../tools/dyngl_h.pl; sourceTree = SOURCE_ROOT; }; F8E9A7700D31273D001E4457 /* export */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = export; path = ../../../tools/export; sourceTree = SOURCE_ROOT; }; F8E9A7710D31273D001E4457 /* floppy.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = floppy.sh; path = ../../../tools/floppy.sh; sourceTree = SOURCE_ROOT; }; F8E9A7720D31273D001E4457 /* memory.h.patch */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = memory.h.patch; path = ../../../tools/memory.h.patch; sourceTree = SOURCE_ROOT; }; F8E9A7730D31273D001E4457 /* romdiff.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = romdiff.c; path = ../../../tools/romdiff.c; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ F843404A0C66492F005E7B99 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ F87BDEEC0488FB4800F69266 = { isa = PBXGroup; children = ( F8E9A42B0D312731001E4457 /* acinclude.m4 */, F8E9A42C0D312731001E4457 /* aclocal.m4 */, F8E9A42D0D312731001E4457 /* aranym.desktop */, F8E9A42E0D312731001E4457 /* aranym.spec */, F8E9A42F0D312731001E4457 /* atari */, F8E9A4B80D312733001E4457 /* AUTHORS */, F8E9A4B90D312733001E4457 /* autogen.sh */, F8E9A4BA0D312733001E4457 /* BUGS */, F8E9A4BB0D312733001E4457 /* ChangeLog */, F8E9A4BC0D312733001E4457 /* config_i386.h */, F8E9A4BD0D312733001E4457 /* config_i386.log */, F8E9A4BE0D312733001E4457 /* config_ppc.h */, F8E9A4BF0D312733001E4457 /* config_ppc.log */, F8E9A4C00D312733001E4457 /* config.guess */, F8E9A4C10D312733001E4457 /* config.h */, F8E9A4C20D312733001E4457 /* config.h.in */, F8E9A4C30D312733001E4457 /* config.status */, F8E9A4C40D312733001E4457 /* config.sub */, F8E9A4C50D312733001E4457 /* configure_i386 */, F8E9A4C60D312733001E4457 /* configure_ppc */, F8E9A4C70D312733001E4457 /* configure.ac */, F8E9A4C80D312733001E4457 /* COPYING */, F8E9A4C90D312733001E4457 /* CVS */, F8E9A4CE0D312733001E4457 /* data */, F8E9A4D10D312733001E4457 /* depend_i386 */, F8E9A4D20D312733001E4457 /* depend_powerpc */, F8E9A4D30D312733001E4457 /* doc */, F8E9A4DB0D312733001E4457 /* FAQ */, F8E9A4DC0D312733001E4457 /* INSTALL */, F8E9A4DD0D312733001E4457 /* install-sh */, F8E9A4DE0D312733001E4457 /* Makefile_i386 */, F8E9A4DF0D312733001E4457 /* Makefile_ppc */, F8E9A4E00D312733001E4457 /* Makefile.in */, F8E9A4E10D312733001E4457 /* mkinstalldirs */, F8E9A4E20D312734001E4457 /* NEWS */, F8E9A4E30D312734001E4457 /* README */, F8E9A4E40D312734001E4457 /* src */, F8E9A76A0D31273D001E4457 /* TODO */, F8E9A76B0D31273D001E4457 /* tools */, F843410C0C664FD8005E7B99 /* CoreFoundation.framework */, F84341050C664F6F005E7B99 /* IOKit.framework */, F84341010C664F5D005E7B99 /* AppKit.framework */, F8433E730C66278D005E7B99 /* SDL_image.framework */, F8433E740C66278D005E7B99 /* SDL.framework */, F83E65B60D09FFF5004FF434 /* aranym.app */, ); sourceTree = ""; }; F8E9A42F0D312731001E4457 /* atari */ = { isa = PBXGroup; children = ( F8E9A4300D312731001E4457 /* CONFIGVARS */, F8E9A4310D312731001E4457 /* hostfs */, F8E9A44E0D312731001E4457 /* mmusetup.cnf */, F8E9A44F0D312731001E4457 /* natfeat */, F8E9A4570D312731001E4457 /* network */, F8E9A4650D312732001E4457 /* newdesk.inf */, F8E9A4660D312732001E4457 /* nfcdrom */, F8E9A46D0D312732001E4457 /* nfjpeg */, F8E9A4740D312732001E4457 /* nfosmesa */, F8E9A48A0D312732001E4457 /* nfosmesa.xdd */, F8E9A48D0D312733001E4457 /* nfpci */, F8E9A4980D312733001E4457 /* nfstderr */, F8E9A49E0D312733001E4457 /* sound */, F8E9A4A10D312733001E4457 /* tools */, ); name = atari; path = ../../../atari; sourceTree = SOURCE_ROOT; }; F8E9A4310D312731001E4457 /* hostfs */ = { isa = PBXGroup; children = ( F8E9A4320D312731001E4457 /* bdconfig.sys */, F8E9A4330D312731001E4457 /* hostfs_nfapi.h */, F8E9A4340D312731001E4457 /* make.sh */, F8E9A4350D312731001E4457 /* metados */, F8E9A44D0D312731001E4457 /* README */, ); name = hostfs; path = ../../../atari/hostfs; sourceTree = SOURCE_ROOT; }; F8E9A4350D312731001E4457 /* metados */ = { isa = PBXGroup; children = ( F8E9A4360D312731001E4457 /* BINFILES */, F8E9A4370D312731001E4457 /* debug.c */, F8E9A4380D312731001E4457 /* debug.h */, F8E9A4390D312731001E4457 /* dosdir.c */, F8E9A43A0D312731001E4457 /* dosdir.h */, F8E9A43B0D312731001E4457 /* dosfile.c */, F8E9A43C0D312731001E4457 /* dosfile.h */, F8E9A43D0D312731001E4457 /* EXTRAFILES */, F8E9A43E0D312731001E4457 /* filesys.c */, F8E9A43F0D312731001E4457 /* filesys.h */, F8E9A4400D312731001E4457 /* global.h */, F8E9A4410D312731001E4457 /* k_fds.c */, F8E9A4420D312731001E4457 /* k_fds.h */, F8E9A4430D312731001E4457 /* kerinfo.h */, F8E9A4440D312731001E4457 /* main.c */, F8E9A4450D312731001E4457 /* Makefile */, F8E9A4460D312731001E4457 /* Makefile.xfso */, F8E9A4470D312731001E4457 /* mdglue.S */, F8E9A4480D312731001E4457 /* mintfake.h */, F8E9A4490D312731001E4457 /* mintproc.c */, F8E9A44A0D312731001E4457 /* mintproc.h */, F8E9A44B0D312731001E4457 /* MISCFILES */, F8E9A44C0D312731001E4457 /* SRCFILES */, ); name = metados; path = ../../../atari/hostfs/metados; sourceTree = SOURCE_ROOT; }; F8E9A44F0D312731001E4457 /* natfeat */ = { isa = PBXGroup; children = ( F8E9A4500D312731001E4457 /* BINFILES */, F8E9A4510D312731001E4457 /* EXTRAFILES */, F8E9A4520D312731001E4457 /* Makefile */, F8E9A4530D312731001E4457 /* MISCFILES */, F8E9A4540D312731001E4457 /* natfeat.c */, F8E9A4550D312731001E4457 /* nf_ops.h */, F8E9A4560D312731001E4457 /* SRCFILES */, ); name = natfeat; path = ../../../atari/natfeat; sourceTree = SOURCE_ROOT; }; F8E9A4570D312731001E4457 /* network */ = { isa = PBXGroup; children = ( F8E9A4580D312731001E4457 /* ethernet */, F8E9A45F0D312732001E4457 /* linux-m68k */, ); name = network; path = ../../../atari/network; sourceTree = SOURCE_ROOT; }; F8E9A4580D312731001E4457 /* ethernet */ = { isa = PBXGroup; children = ( F8E9A4590D312731001E4457 /* ethernet_nfapi.h */, F8E9A45A0D312732001E4457 /* nfeth-config */, F8E9A45E0D312732001E4457 /* README */, ); name = ethernet; path = ../../../atari/network/ethernet; sourceTree = SOURCE_ROOT; }; F8E9A45A0D312732001E4457 /* nfeth-config */ = { isa = PBXGroup; children = ( F8E9A45B0D312732001E4457 /* eth0-config.sh */, F8E9A45C0D312732001E4457 /* Makefile */, F8E9A45D0D312732001E4457 /* nfeth-config.c */, ); name = "nfeth-config"; path = "../../../atari/network/ethernet/nfeth-config"; sourceTree = SOURCE_ROOT; }; F8E9A45F0D312732001E4457 /* linux-m68k */ = { isa = PBXGroup; children = ( F8E9A4600D312732001E4457 /* atari_nfeth.c */, F8E9A4610D312732001E4457 /* linux-2.4.27-atari-natfeats.diff */, F8E9A4620D312732001E4457 /* natfeat.c */, F8E9A4630D312732001E4457 /* natfeat.h */, F8E9A4640D312732001E4457 /* README */, ); name = "linux-m68k"; path = "../../../atari/network/linux-m68k"; sourceTree = SOURCE_ROOT; }; F8E9A4660D312732001E4457 /* nfcdrom */ = { isa = PBXGroup; children = ( F8E9A4670D312732001E4457 /* entry.S */, F8E9A4680D312732001E4457 /* Makefile */, F8E9A4690D312732001E4457 /* metados.h */, F8E9A46A0D312732001E4457 /* metados_bos.h */, F8E9A46B0D312732001E4457 /* nfcdrom.c */, F8E9A46C0D312732001E4457 /* nfcdrom_nfapi.h */, ); name = nfcdrom; path = ../../../atari/nfcdrom; sourceTree = SOURCE_ROOT; }; F8E9A46D0D312732001E4457 /* nfjpeg */ = { isa = PBXGroup; children = ( F8E9A46E0D312732001E4457 /* entry.S */, F8E9A46F0D312732001E4457 /* jpgdh.h */, F8E9A4700D312732001E4457 /* Makefile */, F8E9A4710D312732001E4457 /* nfjpeg.c */, F8E9A4720D312732001E4457 /* nfjpeg_functions.S */, F8E9A4730D312732001E4457 /* nfjpeg_nfapi.h */, ); name = nfjpeg; path = ../../../atari/nfjpeg; sourceTree = SOURCE_ROOT; }; F8E9A4740D312732001E4457 /* nfosmesa */ = { isa = PBXGroup; children = ( F8E9A4750D312732001E4457 /* enum-gen.pl */, F8E9A4760D312732001E4457 /* enum-gl.h */, F8E9A4770D312732001E4457 /* enum-glext.h */, F8E9A4780D312732001E4457 /* enum-misc.h */, F8E9A4790D312732001E4457 /* enum-osmesa.h */, F8E9A47A0D312732001E4457 /* lib-gen.pl */, F8E9A47B0D312732001E4457 /* lib-gl.c */, F8E9A47C0D312732001E4457 /* lib-glext.c */, F8E9A47D0D312732001E4457 /* lib-misc.c */, F8E9A47E0D312732001E4457 /* lib-misc.h */, F8E9A47F0D312732001E4457 /* lib-oldmesa.c */, F8E9A4800D312732001E4457 /* lib-oldmesa.h */, F8E9A4810D312732001E4457 /* lib-osmesa.c */, F8E9A4820D312732001E4457 /* lib-osmesa.h */, F8E9A4830D312732001E4457 /* link-gl.h */, F8E9A4840D312732001E4457 /* link-glext.h */, F8E9A4850D312732001E4457 /* link-oldmesa.h */, F8E9A4860D312732001E4457 /* link-osmesa.h */, F8E9A4870D312732001E4457 /* Makefile */, F8E9A4880D312732001E4457 /* nfosmesa.c */, F8E9A4890D312732001E4457 /* nfosmesa_nfapi.h */, ); name = nfosmesa; path = ../../../atari/nfosmesa; sourceTree = SOURCE_ROOT; }; F8E9A48A0D312732001E4457 /* nfosmesa.xdd */ = { isa = PBXGroup; children = ( F8E9A48B0D312732001E4457 /* Makefile */, F8E9A48C0D312732001E4457 /* nfosmesa.c */, ); name = nfosmesa.xdd; path = ../../../atari/nfosmesa.xdd; sourceTree = SOURCE_ROOT; }; F8E9A48D0D312733001E4457 /* nfpci */ = { isa = PBXGroup; children = ( F8E9A48E0D312733001E4457 /* entry.S */, F8E9A48F0D312733001E4457 /* Makefile */, F8E9A4900D312733001E4457 /* nfpci.c */, F8E9A4910D312733001E4457 /* nfpci.h */, F8E9A4920D312733001E4457 /* nfpci_bios.h */, F8E9A4930D312733001E4457 /* nfpci_bios.S */, F8E9A4940D312733001E4457 /* nfpci_cookie.c */, F8E9A4950D312733001E4457 /* nfpci_cookie.h */, F8E9A4960D312733001E4457 /* nfpci_nfapi.h */, F8E9A4970D312733001E4457 /* nfpci_xbios.S */, ); name = nfpci; path = ../../../atari/nfpci; sourceTree = SOURCE_ROOT; }; F8E9A4980D312733001E4457 /* nfstderr */ = { isa = PBXGroup; children = ( F8E9A4990D312733001E4457 /* entry.S */, F8E9A49A0D312733001E4457 /* Makefile */, F8E9A49B0D312733001E4457 /* metados.h */, F8E9A49C0D312733001E4457 /* metados_bos.h */, F8E9A49D0D312733001E4457 /* nfstderrbos.c */, ); name = nfstderr; path = ../../../atari/nfstderr; sourceTree = SOURCE_ROOT; }; F8E9A49E0D312733001E4457 /* sound */ = { isa = PBXGroup; children = ( F8E9A49F0D312733001E4457 /* README */, F8E9A4A00D312733001E4457 /* zmagxsnd.l */, ); name = sound; path = ../../../atari/sound; sourceTree = SOURCE_ROOT; }; F8E9A4A10D312733001E4457 /* tools */ = { isa = PBXGroup; children = ( F8E9A4A20D312733001E4457 /* devdos */, F8E9A4B50D312733001E4457 /* pc101us.kbd.bz2 */, F8E9A4B60D312733001E4457 /* pcpatch.c */, F8E9A4B70D312733001E4457 /* README */, ); name = tools; path = ../../../atari/tools; sourceTree = SOURCE_ROOT; }; F8E9A4A20D312733001E4457 /* devdos */ = { isa = PBXGroup; children = ( F8E9A4A30D312733001E4457 /* bosmeta.c */, F8E9A4A40D312733001E4457 /* bosmeta.h */, F8E9A4A50D312733001E4457 /* ctype.c */, F8E9A4A60D312733001E4457 /* dosdir.c */, F8E9A4A70D312733001E4457 /* dosdir.h */, F8E9A4A80D312733001E4457 /* dosfile.c */, F8E9A4A90D312733001E4457 /* dosfile.h */, F8E9A4AA0D312733001E4457 /* dosfsfn.c */, F8E9A4AB0D312733001E4457 /* emu_tos.h */, F8E9A4AC0D312733001E4457 /* list.h */, F8E9A4AD0D312733001E4457 /* main.c */, F8E9A4AE0D312733001E4457 /* Makefile */, F8E9A4AF0D312733001E4457 /* mdglue.S */, F8E9A4B00D312733001E4457 /* metados.h */, F8E9A4B10D312733001E4457 /* mintfake.h */, F8E9A4B20D312733001E4457 /* README */, F8E9A4B30D312733001E4457 /* utility.c */, F8E9A4B40D312733001E4457 /* utility.h */, ); name = devdos; path = ../../../atari/tools/devdos; sourceTree = SOURCE_ROOT; }; F8E9A4C90D312733001E4457 /* CVS */ = { isa = PBXGroup; children = ( F8E9A4CA0D312733001E4457 /* Entries */, F8E9A4CB0D312733001E4457 /* Repository */, F8E9A4CC0D312733001E4457 /* Root */, F8E9A4CD0D312733001E4457 /* Template */, ); name = CVS; path = ../../../CVS; sourceTree = SOURCE_ROOT; }; F8E9A4CE0D312733001E4457 /* data */ = { isa = PBXGroup; children = ( F8E9A4CF0D312733001E4457 /* logo.bmp */, F8E9A4D00D312733001E4457 /* wm_icon.bmp */, ); name = data; path = ../../../data; sourceTree = SOURCE_ROOT; }; F8E9A4D30D312733001E4457 /* doc */ = { isa = PBXGroup; children = ( F8E9A4D40D312733001E4457 /* aranym-jit.1 */, F8E9A4D50D312733001E4457 /* aranym-mmu.1 */, F8E9A4D60D312733001E4457 /* aranym.1 */, F8E9A4D70D312733001E4457 /* aratapif.1 */, F8E9A4D80D312733001E4457 /* config */, F8E9A4D90D312733001E4457 /* emulop.txt */, F8E9A4DA0D312733001E4457 /* hguide.txt */, ); name = doc; path = ../../../doc; sourceTree = SOURCE_ROOT; }; F8E9A4E40D312734001E4457 /* src */ = { isa = PBXGroup; children = ( F8E9A4E50D312734001E4457 /* acia.cpp */, F8E9A4E60D312734001E4457 /* acsifdc.cpp */, F8E9A4E70D312734001E4457 /* adler32.c */, F8E9A4E80D312734001E4457 /* aradata.cpp */, F8E9A4E90D312734001E4457 /* aranym_exception.cpp */, F8E9A4EA0D312734001E4457 /* ata.cpp */, F8E9A4EB0D312734001E4457 /* audio_crossbar.cpp */, F8E9A4EC0D312734001E4457 /* audio_dma.cpp */, F8E9A4ED0D312734001E4457 /* blitter.cpp */, F8E9A4EE0D312734001E4457 /* bootos.cpp */, F8E9A4EF0D312734001E4457 /* bootos_emutos.cpp */, F8E9A4F00D312734001E4457 /* bootos_linux.cpp */, F8E9A4F10D312734001E4457 /* bootos_tos.cpp */, F8E9A4F20D312734001E4457 /* cdrom.cpp */, F8E9A4F30D312734001E4457 /* cfgopts.cpp */, F8E9A4F40D312734001E4457 /* dirty_rects.cpp */, F8E9A4F50D312734001E4457 /* dsp.cpp */, F8E9A4F60D312734001E4457 /* dsp_cpu.cpp */, F8E9A4F70D312734001E4457 /* dsp_disasm.cpp */, F8E9A4F80D312734001E4457 /* dyngl.c */, F8E9A4F90D312734001E4457 /* dyngl_gl.c */, F8E9A4FA0D312734001E4457 /* dyngl_glext.c */, F8E9A4FB0D312734001E4457 /* emul_op.cpp */, F8E9A4FC0D312734001E4457 /* fakeio.cpp */, F8E9A4FD0D312734001E4457 /* gui-osx */, F8E9A5050D312734001E4457 /* gui-sdl */, F8E9A5210D312734001E4457 /* hardware.cpp */, F8E9A5220D312734001E4457 /* host.cpp */, F8E9A5230D312734001E4457 /* host_audio.cpp */, F8E9A5240D312734001E4457 /* host_clock.cpp */, F8E9A5250D312734001E4457 /* host_surface.cpp */, F8E9A5260D312734001E4457 /* host_surface_opengl.cpp */, F8E9A5270D312734001E4457 /* hostscreen.cpp */, F8E9A5280D312734001E4457 /* hostscreen_opengl.cpp */, F8E9A5290D312734001E4457 /* ide.cpp */, F8E9A52A0D312734001E4457 /* identify.cpp */, F8E9A52B0D312734001E4457 /* ikbd.cpp */, F8E9A52C0D312734001E4457 /* include */, F8E9A5700D312735001E4457 /* input.cpp */, F8E9A5710D312735001E4457 /* logo.cpp */, F8E9A5720D312735001E4457 /* main.cpp */, F8E9A5730D312735001E4457 /* md5.cpp */, F8E9A5740D312735001E4457 /* mfp.cpp */, F8E9A5750D312735001E4457 /* midi.cpp */, F8E9A5760D312735001E4457 /* midi_file.cpp */, F8E9A5770D312735001E4457 /* midi_sequencer.cpp */, F8E9A5780D312735001E4457 /* mmu.cpp */, F8E9A5790D312735001E4457 /* natfeat */, F8E9A5C00D312737001E4457 /* natfeats.cpp */, F8E9A5C10D312737001E4457 /* ncr5380.cpp */, F8E9A5C20D312737001E4457 /* ndebug.cpp */, F8E9A5C30D312737001E4457 /* parallel.cpp */, F8E9A5C40D312737001E4457 /* parallel_file.cpp */, F8E9A5C50D312737001E4457 /* parallel_parport.cpp */, F8E9A5C60D312737001E4457 /* parallel_x86.cpp */, F8E9A5C70D312737001E4457 /* parameters.cpp */, F8E9A5C80D312737001E4457 /* romdiff.cpp */, F8E9A5C90D312737001E4457 /* rtc.cpp */, F8E9A5CA0D312737001E4457 /* template.cpp */, F8E9A5CB0D312737001E4457 /* tools.cpp */, F8E9A5CC0D312737001E4457 /* uae_cpu */, F8E9A5FD0D312738001E4457 /* Unix */, F8E9A7670D31273D001E4457 /* videl.cpp */, F8E9A7680D31273D001E4457 /* videl_zoom.cpp */, F8E9A7690D31273D001E4457 /* yamaha.cpp */, ); name = src; path = ../..; sourceTree = SOURCE_ROOT; }; F8E9A4FD0D312734001E4457 /* gui-osx */ = { isa = PBXGroup; children = ( F8E9A4FE0D312734001E4457 /* aranym.icns */, F8E9A4FF0D312734001E4457 /* aranym.nib */, F8E9A5020D312734001E4457 /* Info.plist */, F8E9A5030D312734001E4457 /* SDLMain.h */, F8E9A5040D312734001E4457 /* SDLMain.m */, ); name = "gui-osx"; path = "../../gui-osx"; sourceTree = SOURCE_ROOT; }; F8E9A5050D312734001E4457 /* gui-sdl */ = { isa = PBXGroup; children = ( F8E9A5060D312734001E4457 /* dialog.cpp */, F8E9A5070D312734001E4457 /* dialog.h */, F8E9A5080D312734001E4457 /* dlgAlert.cpp */, F8E9A5090D312734001E4457 /* dlgAlert.h */, F8E9A50A0D312734001E4457 /* dlgDisk.cpp */, F8E9A50B0D312734001E4457 /* dlgDisk.h */, F8E9A50C0D312734001E4457 /* dlgFileSelect.cpp */, F8E9A50D0D312734001E4457 /* dlgFileSelect.h */, F8E9A50E0D312734001E4457 /* dlgHotkeys.cpp */, F8E9A50F0D312734001E4457 /* dlgHotkeys.h */, F8E9A5100D312734001E4457 /* dlgKeyboard.cpp */, F8E9A5110D312734001E4457 /* dlgKeyboard.h */, F8E9A5120D312734001E4457 /* dlgKeypress.cpp */, F8E9A5130D312734001E4457 /* dlgKeypress.h */, F8E9A5140D312734001E4457 /* dlgMain.cpp */, F8E9A5150D312734001E4457 /* dlgMain.h */, F8E9A5160D312734001E4457 /* dlgNetwork.cpp */, F8E9A5170D312734001E4457 /* dlgNetwork.h */, F8E9A5180D312734001E4457 /* dlgOs.cpp */, F8E9A5190D312734001E4457 /* dlgOs.h */, F8E9A51A0D312734001E4457 /* dlgVideo.cpp */, F8E9A51B0D312734001E4457 /* dlgVideo.h */, F8E9A51C0D312734001E4457 /* file.cpp */, F8E9A51D0D312734001E4457 /* file.h */, F8E9A51E0D312734001E4457 /* font.h */, F8E9A51F0D312734001E4457 /* sdlgui.cpp */, F8E9A5200D312734001E4457 /* sdlgui.h */, ); name = "gui-sdl"; path = "../../gui-sdl"; sourceTree = SOURCE_ROOT; }; F8E9A52C0D312734001E4457 /* include */ = { isa = PBXGroup; children = ( F8E9A52D0D312734001E4457 /* acia.h */, F8E9A52E0D312734001E4457 /* acsifdc.h */, F8E9A52F0D312734001E4457 /* adler32.h */, F8E9A5300D312734001E4457 /* aradata.h */, F8E9A5310D312734001E4457 /* aramd5.h */, F8E9A5320D312734001E4457 /* aranym_exception.h */, F8E9A5330D312734001E4457 /* aspi-win32.h */, F8E9A5340D312734001E4457 /* ata.h */, F8E9A5350D312734001E4457 /* audio_crossbar.h */, F8E9A5360D312734001E4457 /* audio_dma.h */, F8E9A5370D312734001E4457 /* blitter.h */, F8E9A5380D312734001E4457 /* bootos.h */, F8E9A5390D312734001E4457 /* bootos_emutos.h */, F8E9A53A0D312734001E4457 /* bootos_linux.h */, F8E9A53B0D312734001E4457 /* bootos_tos.h */, F8E9A53C0D312734001E4457 /* cdrom.h */, F8E9A53D0D312734001E4457 /* cfgopts.h */, F8E9A53E0D312734001E4457 /* debug.h */, F8E9A53F0D312734001E4457 /* dirty_rects.h */, F8E9A5400D312735001E4457 /* dsp.h */, F8E9A5410D312735001E4457 /* dsp_cpu.h */, F8E9A5420D312735001E4457 /* dsp_disasm.h */, F8E9A5430D312735001E4457 /* dyngl.h */, F8E9A5440D312735001E4457 /* dyngl_gl.h */, F8E9A5450D312735001E4457 /* dyngl_glext.h */, F8E9A5460D312735001E4457 /* emu_bochs.h */, F8E9A5470D312735001E4457 /* emul_op.h */, F8E9A5480D312735001E4457 /* hardware.h */, F8E9A5490D312735001E4457 /* host.h */, F8E9A54A0D312735001E4457 /* host_audio.h */, F8E9A54B0D312735001E4457 /* host_clock.h */, F8E9A54C0D312735001E4457 /* host_clock_unix.h */, F8E9A54D0D312735001E4457 /* host_filesys.h */, F8E9A54E0D312735001E4457 /* host_surface.h */, F8E9A54F0D312735001E4457 /* host_surface_opengl.h */, F8E9A5500D312735001E4457 /* hostscreen.h */, F8E9A5510D312735001E4457 /* hostscreen_opengl.h */, F8E9A5520D312735001E4457 /* icio.h */, F8E9A5530D312735001E4457 /* ide.h */, F8E9A5540D312735001E4457 /* identify.h */, F8E9A5550D312735001E4457 /* ikbd.h */, F8E9A5560D312735001E4457 /* input.h */, F8E9A5570D312735001E4457 /* logo.h */, F8E9A5580D312735001E4457 /* main.h */, F8E9A5590D312735001E4457 /* mfp.h */, F8E9A55A0D312735001E4457 /* midi.h */, F8E9A55B0D312735001E4457 /* midi_file.h */, F8E9A55C0D312735001E4457 /* midi_sequencer.h */, F8E9A55D0D312735001E4457 /* mmu.h */, F8E9A55E0D312735001E4457 /* natfeats.h */, F8E9A55F0D312735001E4457 /* ncr5380.h */, F8E9A5600D312735001E4457 /* ndebug.h */, F8E9A5610D312735001E4457 /* parallel.h */, F8E9A5620D312735001E4457 /* parallel_file.h */, F8E9A5630D312735001E4457 /* parallel_parport.h */, F8E9A5640D312735001E4457 /* parallel_x86.h */, F8E9A5650D312735001E4457 /* parameters.h */, F8E9A5660D312735001E4457 /* romdiff.h */, F8E9A5670D312735001E4457 /* rtc.h */, F8E9A5680D312735001E4457 /* scsidefs.h */, F8E9A5690D312735001E4457 /* tools.h */, F8E9A56A0D312735001E4457 /* toserror.h */, F8E9A56B0D312735001E4457 /* version.h */, F8E9A56D0D312735001E4457 /* videl.h */, F8E9A56E0D312735001E4457 /* videl_zoom.h */, F8E9A56F0D312735001E4457 /* yamaha.h */, ); name = include; path = ../../include; sourceTree = SOURCE_ROOT; }; F8E9A5790D312735001E4457 /* natfeat */ = { isa = PBXGroup; children = ( F8E9A57A0D312735001E4457 /* atari_example.c */, F8E9A57B0D312735001E4457 /* atari_example_gfa.lst */, F8E9A57C0D312735001E4457 /* atari_rootsec.h */, F8E9A57D0D312735001E4457 /* debugprintf.cpp */, F8E9A57E0D312735001E4457 /* debugprintf.h */, F8E9A57F0D312735001E4457 /* doc */, F8E9A5850D312735001E4457 /* ethernet.cpp */, F8E9A5860D312735001E4457 /* ethernet.h */, F8E9A5870D312735001E4457 /* fvdidrv_nfapi.h */, F8E9A5880D312735001E4457 /* hostfs.cpp */, F8E9A5890D312735001E4457 /* hostfs.h */, F8E9A58A0D312735001E4457 /* nf_base.cpp */, F8E9A58B0D312735001E4457 /* nf_base.h */, F8E9A58C0D312735001E4457 /* nf_basicset.cpp */, F8E9A58D0D312735001E4457 /* nf_basicset.h */, F8E9A58E0D312735001E4457 /* nf_objs.cpp */, F8E9A58F0D312735001E4457 /* nf_objs.h */, F8E9A5900D312735001E4457 /* nfaudio.cpp */, F8E9A5910D312735001E4457 /* nfaudio.h */, F8E9A5920D312735001E4457 /* nfbootstrap.cpp */, F8E9A5930D312735001E4457 /* nfbootstrap.h */, F8E9A5940D312735001E4457 /* nfcdrom.cpp */, F8E9A5950D312735001E4457 /* nfcdrom.h */, F8E9A5960D312735001E4457 /* nfcdrom_linux.cpp */, F8E9A5970D312735001E4457 /* nfcdrom_linux.h */, F8E9A5980D312735001E4457 /* nfclipbrd.cpp */, F8E9A5990D312735001E4457 /* nfclipbrd.h */, F8E9A59A0D312735001E4457 /* nfclipbrd_nfapi.h */, F8E9A59B0D312735001E4457 /* nfjpeg.cpp */, F8E9A59C0D312735001E4457 /* nfjpeg.h */, F8E9A59D0D312735001E4457 /* nfosmesa */, F8E9A5B20D312737001E4457 /* nfosmesa.cpp */, F8E9A5B30D312737001E4457 /* nfosmesa.h */, F8E9A5B40D312737001E4457 /* nfpci.cpp */, F8E9A5B50D312737001E4457 /* nfpci.h */, F8E9A5B60D312737001E4457 /* nfpci_linux.cpp */, F8E9A5B70D312737001E4457 /* nfpci_linux.h */, F8E9A5B80D312737001E4457 /* nfvdi.cpp */, F8E9A5B90D312737001E4457 /* nfvdi.h */, F8E9A5BA0D312737001E4457 /* nfvdi_opengl.cpp */, F8E9A5BB0D312737001E4457 /* nfvdi_opengl.h */, F8E9A5BC0D312737001E4457 /* nfvdi_soft.cpp */, F8E9A5BD0D312737001E4457 /* nfvdi_soft.h */, F8E9A5BE0D312737001E4457 /* xhdi.cpp */, F8E9A5BF0D312737001E4457 /* xhdi.h */, ); name = natfeat; path = ../../natfeat; sourceTree = SOURCE_ROOT; }; F8E9A57F0D312735001E4457 /* doc */ = { isa = PBXGroup; children = ( F8E9A5800D312735001E4457 /* attic.txt */, F8E9A5810D312735001E4457 /* call68k.txt */, F8E9A5820D312735001E4457 /* native.txt */, F8E9A5830D312735001E4457 /* nf.h */, F8E9A5840D312735001E4457 /* sample.c */, ); name = doc; path = ../../natfeat/doc; sourceTree = SOURCE_ROOT; }; F8E9A59D0D312735001E4457 /* nfosmesa */ = { isa = PBXGroup; children = ( F8E9A59E0D312735001E4457 /* call-gen.pl */, F8E9A59F0D312735001E4457 /* call-gl.c */, F8E9A5A00D312735001E4457 /* call-glext.c */, F8E9A5A10D312736001E4457 /* dispatch-gen.pl */, F8E9A5A20D312736001E4457 /* dispatch-gl.c */, F8E9A5A30D312736001E4457 /* dispatch-glext.c */, F8E9A5A40D312736001E4457 /* dispatch-osmesa.c */, F8E9A5A50D312736001E4457 /* load-gen.pl */, F8E9A5A60D312736001E4457 /* load-gl.c */, F8E9A5A70D312736001E4457 /* load-glext.c */, F8E9A5A80D312736001E4457 /* pointers-gen.pl */, F8E9A5A90D312736001E4457 /* pointers-gl.h */, F8E9A5AA0D312736001E4457 /* pointers-glext.h */, F8E9A5AB0D312736001E4457 /* pointers-osmesa.h */, F8E9A5AC0D312736001E4457 /* proto-gen.pl */, F8E9A5AD0D312736001E4457 /* proto-gl.h */, F8E9A5AE0D312736001E4457 /* proto-glext.h */, F8E9A5AF0D312736001E4457 /* unload-gen.pl */, F8E9A5B00D312736001E4457 /* unload-gl.c */, F8E9A5B10D312736001E4457 /* unload-glext.c */, ); name = nfosmesa; path = ../../natfeat/nfosmesa; sourceTree = SOURCE_ROOT; }; F8E9A5CC0D312737001E4457 /* uae_cpu */ = { isa = PBXGroup; children = ( F8E9A5CD0D312737001E4457 /* aranym_glue.cpp */, F8E9A5CE0D312737001E4457 /* build68k.c */, F8E9A5CF0D312737001E4457 /* compiler */, F8E9A5D80D312737001E4457 /* cpu_emulation.h */, F8E9A5D90D312737001E4457 /* cpummu.cpp */, F8E9A5DA0D312737001E4457 /* cpummu.h */, F8E9A5DB0D312737001E4457 /* cpuopti.c */, F8E9A5DC0D312737001E4457 /* debug.cpp */, F8E9A5DD0D312737001E4457 /* fpu */, F8E9A5F10D312738001E4457 /* gencpu.c */, F8E9A5F20D312738001E4457 /* m68k.h */, F8E9A5F30D312738001E4457 /* memory.cpp */, F8E9A5F40D312738001E4457 /* memory.h */, F8E9A5F50D312738001E4457 /* newcpu.cpp */, F8E9A5F60D312738001E4457 /* newcpu.h */, F8E9A5F70D312738001E4457 /* noflags.h */, F8E9A5F80D312738001E4457 /* readcpu.cpp */, F8E9A5F90D312738001E4457 /* readcpu.h */, F8E9A5FA0D312738001E4457 /* registers.h */, F8E9A5FB0D312738001E4457 /* spcflags.h */, F8E9A5FC0D312738001E4457 /* table68k */, ); name = uae_cpu; path = ../../uae_cpu; sourceTree = SOURCE_ROOT; }; F8E9A5CF0D312737001E4457 /* compiler */ = { isa = PBXGroup; children = ( F8E9A5D00D312737001E4457 /* codegen_x86.cpp */, F8E9A5D10D312737001E4457 /* codegen_x86.h */, F8E9A5D20D312737001E4457 /* compemu.h */, F8E9A5D30D312737001E4457 /* compemu_fpp.cpp */, F8E9A5D40D312737001E4457 /* compemu_support.cpp */, F8E9A5D50D312737001E4457 /* flags_x86.h */, F8E9A5D60D312737001E4457 /* gencomp.c */, F8E9A5D70D312737001E4457 /* test_codegen_x86.cpp */, ); name = compiler; path = ../../uae_cpu/compiler; sourceTree = SOURCE_ROOT; }; F8E9A5DD0D312737001E4457 /* fpu */ = { isa = PBXGroup; children = ( F8E9A5DE0D312737001E4457 /* core.h */, F8E9A5DF0D312737001E4457 /* exceptions.cpp */, F8E9A5E00D312737001E4457 /* exceptions.h */, F8E9A5E10D312737001E4457 /* flags.cpp */, F8E9A5E20D312737001E4457 /* flags.h */, F8E9A5E30D312737001E4457 /* fpu.h */, F8E9A5E40D312737001E4457 /* fpu_ieee.cpp */, F8E9A5E50D312737001E4457 /* fpu_ieee.h */, F8E9A5E60D312737001E4457 /* fpu_uae.cpp */, F8E9A5E70D312738001E4457 /* fpu_uae.h */, F8E9A5E80D312738001E4457 /* fpu_x86.cpp */, F8E9A5E90D312738001E4457 /* fpu_x86.h */, F8E9A5EA0D312738001E4457 /* fpu_x86_asm.h */, F8E9A5EB0D312738001E4457 /* impl.h */, F8E9A5EC0D312738001E4457 /* mathlib.cpp */, F8E9A5ED0D312738001E4457 /* mathlib.h */, F8E9A5EE0D312738001E4457 /* rounding.cpp */, F8E9A5EF0D312738001E4457 /* rounding.h */, F8E9A5F00D312738001E4457 /* types.h */, ); name = fpu; path = ../../uae_cpu/fpu; sourceTree = SOURCE_ROOT; }; F8E9A5FD0D312738001E4457 /* Unix */ = { isa = PBXGroup; children = ( F8E9A5FE0D312738001E4457 /* .cvsignore */, F8E9A5FF0D312738001E4457 /* ansidecl.h */, F8E9A6000D312738001E4457 /* aratapif.c */, F8E9A6010D312738001E4457 /* beos */, F8E9A6040D312738001E4457 /* cygwin */, F8E9A60B0D312738001E4457 /* darwin */, F8E9A7440D31273D001E4457 /* getopt.c */, F8E9A7450D31273D001E4457 /* getopt.h */, F8E9A7460D31273D001E4457 /* getopt1.c */, F8E9A7470D31273D001E4457 /* getopt_init.c */, F8E9A7480D31273D001E4457 /* host_clock_unix.cpp */, F8E9A7490D31273D001E4457 /* host_filesys_unix.cpp */, F8E9A74A0D31273D001E4457 /* irix */, F8E9A74C0D31273D001E4457 /* linux */, F8E9A7510D31273D001E4457 /* MacOSX */, F8E9A75C0D31273D001E4457 /* main_unix.cpp */, F8E9A75D0D31273D001E4457 /* parameters_unix.cpp */, F8E9A75E0D31273D001E4457 /* solaris */, F8E9A7610D31273D001E4457 /* sysdeps.h */, F8E9A7620D31273D001E4457 /* vasprintf.c */, F8E9A7630D31273D001E4457 /* vm_alloc.cpp */, F8E9A7640D31273D001E4457 /* vm_alloc.h */, F8E9A7650D31273D001E4457 /* xbsd */, ); name = Unix; path = ..; sourceTree = SOURCE_ROOT; }; F8E9A6010D312738001E4457 /* beos */ = { isa = PBXGroup; children = ( F8E9A6020D312738001E4457 /* cdrom_beos.cpp */, F8E9A6030D312738001E4457 /* cdrom_beos.h */, ); name = beos; path = ../beos; sourceTree = SOURCE_ROOT; }; F8E9A6040D312738001E4457 /* cygwin */ = { isa = PBXGroup; children = ( F8E9A6050D312738001E4457 /* clipbrd_cygwin.cpp */, F8E9A6060D312738001E4457 /* ethernet_cygwin.cpp */, F8E9A6070D312738001E4457 /* ethernet_cygwin.h */, F8E9A6080D312738001E4457 /* parameters_cygwin.cpp */, F8E9A6090D312738001E4457 /* sigsegv_cygwin.cpp */, F8E9A60A0D312738001E4457 /* tools_cygwin.cpp */, ); name = cygwin; path = ../cygwin; sourceTree = SOURCE_ROOT; }; F8E9A60B0D312738001E4457 /* darwin */ = { isa = PBXGroup; children = ( F8E9A60D0D312738001E4457 /* aranym.icns */, F8E9A6110D312738001E4457 /* aranym2.icns */, F8E9A6150D312738001E4457 /* aratapif.sh */, F8E9A6160D312738001E4457 /* build */, F8E9A62A0D312738001E4457 /* BUILDING_LEOPARD.txt */, F8E9A62B0D312738001E4457 /* busybee.icns */, F8E9A62C0D312738001E4457 /* busybee112-glossy.xcf */, F8E9A62F0D312738001E4457 /* aranym.nib */, F8E9A6310D312738001E4457 /* ethernet_darwin.cpp */, F8E9A6320D312738001E4457 /* ethernet_darwin.h */, F8E9A64F0D312739001E4457 /* InfoPlist.strings */, F8E9A6510D312739001E4457 /* host_filesys_darwin.M */, F8E9A6520D312739001E4457 /* Info.plist */, F8E9A6530D312739001E4457 /* Makefile */, F8E9A73C0D31273D001E4457 /* parameters_darwin.cpp */, F8E9A73D0D31273D001E4457 /* PkgInfo */, F8E9A73E0D31273D001E4457 /* README_ethernet.txt */, F8E9A73F0D31273D001E4457 /* sdl.m4 */, F8E9A7400D31273D001E4457 /* SDLHotkeysRefresh.M */, F8E9A7410D31273D001E4457 /* SDLMain.h */, F8E9A7420D31273D001E4457 /* SDLMain.M */, F8E9A7430D31273D001E4457 /* sigsegv_darwin_x86.cpp */, ); name = darwin; sourceTree = SOURCE_ROOT; }; F8E9A6160D312738001E4457 /* build */ = { isa = PBXGroup; children = ( F8E9A6170D312738001E4457 /* aranym.build */, ); path = build; sourceTree = SOURCE_ROOT; }; F8E9A6170D312738001E4457 /* aranym.build */ = { isa = PBXGroup; children = ( F8E9A6180D312738001E4457 /* aranym.pbxindex */, F8E9A6260D312738001E4457 /* Development */, ); name = aranym.build; path = build/aranym.build; sourceTree = SOURCE_ROOT; }; F8E9A6180D312738001E4457 /* aranym.pbxindex */ = { isa = PBXGroup; children = ( F8E9A6190D312738001E4457 /* categories.pbxbtree */, F8E9A61A0D312738001E4457 /* cdecls.pbxbtree */, F8E9A61B0D312738001E4457 /* decls.pbxbtree */, F8E9A61C0D312738001E4457 /* files.pbxbtree */, F8E9A61D0D312738001E4457 /* imports.pbxbtree */, F8E9A61E0D312738001E4457 /* pbxindex.header */, F8E9A61F0D312738001E4457 /* protocols.pbxbtree */, F8E9A6200D312738001E4457 /* refs.pbxbtree */, F8E9A6210D312738001E4457 /* strings.pbxstrings */, F8E9A6240D312738001E4457 /* subclasses.pbxbtree */, F8E9A6250D312738001E4457 /* symbols0.pbxsymbols */, ); name = aranym.pbxindex; path = build/aranym.build/aranym.pbxindex; sourceTree = SOURCE_ROOT; }; F8E9A6210D312738001E4457 /* strings.pbxstrings */ = { isa = PBXGroup; children = ( F8E9A6220D312738001E4457 /* control */, F8E9A6230D312738001E4457 /* strings */, ); name = strings.pbxstrings; path = build/aranym.build/aranym.pbxindex/strings.pbxstrings; sourceTree = SOURCE_ROOT; }; F8E9A6260D312738001E4457 /* Development */ = { isa = PBXGroup; children = ( F8E9A6270D312738001E4457 /* ARAnyM.build */, ); name = Development; path = build/aranym.build/Development; sourceTree = SOURCE_ROOT; }; F8E9A6270D312738001E4457 /* ARAnyM.build */ = { isa = PBXGroup; children = ( ); name = ARAnyM.build; path = build/aranym.build/Development/ARAnyM.build; sourceTree = SOURCE_ROOT; }; F8E9A74A0D31273D001E4457 /* irix */ = { isa = PBXGroup; children = ( F8E9A74B0D31273D001E4457 /* unaligned.c */, ); name = irix; path = ../irix; sourceTree = SOURCE_ROOT; }; F8E9A74C0D31273D001E4457 /* linux */ = { isa = PBXGroup; children = ( F8E9A74D0D31273D001E4457 /* ethernet_linux.cpp */, F8E9A74E0D31273D001E4457 /* ethernet_linux.h */, F8E9A74F0D31273D001E4457 /* parameters_linux.cpp */, F8E9A7500D31273D001E4457 /* sigsegv_linux_x86.cpp */, ); name = linux; path = ../linux; sourceTree = SOURCE_ROOT; }; F8E9A7510D31273D001E4457 /* MacOSX */ = { isa = PBXGroup; children = ( F8E9A7520D31273D001E4457 /* .cvsignore */, F8E9A7530D31273D001E4457 /* MacAranym.pbproj */, F8E9A7560D31273D001E4457 /* MacAranym.xcodeproj */, F8E9A7590D31273D001E4457 /* parameters_MacOSX.cpp */, F8E9A75A0D31273D001E4457 /* README.rtf */, F8E9A75B0D31273D001E4457 /* README_Xcode.rtf */, ); name = MacOSX; path = ../MacOSX; sourceTree = SOURCE_ROOT; }; F8E9A75E0D31273D001E4457 /* solaris */ = { isa = PBXGroup; children = ( F8E9A75F0D31273D001E4457 /* sigsegv_solaris_x86.cpp */, F8E9A7600D31273D001E4457 /* which_sparc */, ); name = solaris; path = ../solaris; sourceTree = SOURCE_ROOT; }; F8E9A7650D31273D001E4457 /* xbsd */ = { isa = PBXGroup; children = ( F8E9A7660D31273D001E4457 /* sigsegv_xbsd.cpp */, ); name = xbsd; path = ../xbsd; sourceTree = SOURCE_ROOT; }; F8E9A76B0D31273D001E4457 /* tools */ = { isa = PBXGroup; children = ( F8E9A76C0D31273D001E4457 /* arabridge */, F8E9A76D0D31273D001E4457 /* build-cygwin.sh */, F8E9A76E0D31273D001E4457 /* dyngl_c.pl */, F8E9A76F0D31273D001E4457 /* dyngl_h.pl */, F8E9A7700D31273D001E4457 /* export */, F8E9A7710D31273D001E4457 /* floppy.sh */, F8E9A7720D31273D001E4457 /* memory.h.patch */, F8E9A7730D31273D001E4457 /* romdiff.c */, ); name = tools; path = ../../../tools; sourceTree = SOURCE_ROOT; }; F8E9A7790D312740001E4457 /* Products */ = { isa = PBXGroup; children = ( F8E9A77F0D312740001E4457 /* MacAranym.app */, F8E9A7810D312740001E4457 /* MacAranym MMU.app */, ); name = Products; sourceTree = ""; }; F8E9A7880D312740001E4457 /* Products */ = { isa = PBXGroup; children = ( F8E9A78F0D312740001E4457 /* MacAranym.app */, F8E9A7910D312740001E4457 /* MacAranym MMU.app */, F8E9A7930D312740001E4457 /* MacAranym JIT IEEE.app */, ); name = Products; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ F843404B0C66492F005E7B99 /* ARAnyM */ = { isa = PBXNativeTarget; buildConfigurationList = F843404F0C664932005E7B99 /* Build configuration list for PBXNativeTarget "ARAnyM" */; buildPhases = ( F84340E10C6649D1005E7B99 /* ShellScript */, F84340480C66492F005E7B99 /* Resources */, F84340490C66492F005E7B99 /* Sources */, F843404A0C66492F005E7B99 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = ARAnyM; productName = ARAnyM2; productReference = F83E65B60D09FFF5004FF434 /* aranym.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ F87BDEF00488FB4800F69266 /* Project object */ = { isa = PBXProject; buildConfigurationList = F8AF4E660AA07D6C00D25DCD /* Build configuration list for PBXProject "aranym" */; hasScannedForEncodings = 1; mainGroup = F87BDEEC0488FB4800F69266; productRefGroup = F87BDEEC0488FB4800F69266; projectDirPath = ""; projectReferences = ( { ProductGroup = F8E9A7790D312740001E4457 /* Products */; ProjectRef = F8E9A7530D31273D001E4457 /* MacAranym.pbproj */; }, { ProductGroup = F8E9A7880D312740001E4457 /* Products */; ProjectRef = F8E9A7560D31273D001E4457 /* MacAranym.xcodeproj */; }, ); targets = ( F843404B0C66492F005E7B99 /* ARAnyM */, ); }; /* End PBXProject section */ /* Begin PBXReferenceProxy section */ F8E9A77F0D312740001E4457 /* MacAranym.app */ = { isa = PBXReferenceProxy; fileType = wrapper.application; path = MacAranym.app; remoteRef = F8E9A77E0D312740001E4457 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; F8E9A7810D312740001E4457 /* MacAranym MMU.app */ = { isa = PBXReferenceProxy; fileType = wrapper.application; path = "MacAranym MMU.app"; remoteRef = F8E9A7800D312740001E4457 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; F8E9A78F0D312740001E4457 /* MacAranym.app */ = { isa = PBXReferenceProxy; fileType = wrapper.application; path = MacAranym.app; remoteRef = F8E9A78E0D312740001E4457 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; F8E9A7910D312740001E4457 /* MacAranym MMU.app */ = { isa = PBXReferenceProxy; fileType = wrapper.application; path = "MacAranym MMU.app"; remoteRef = F8E9A7900D312740001E4457 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; F8E9A7930D312740001E4457 /* MacAranym JIT IEEE.app */ = { isa = PBXReferenceProxy; fileType = wrapper.application; path = "MacAranym JIT IEEE.app"; remoteRef = F8E9A7920D312740001E4457 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ F84340480C66492F005E7B99 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ F84340E10C6649D1005E7B99 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "cd $PROJECT_DIR\nmake\n"; }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ F84340490C66492F005E7B99 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ F8E9A4FF0D312734001E4457 /* aranym.nib */ = { isa = PBXVariantGroup; children = ( F8E9A5000D312734001E4457 /* English */, F8E9A5010D312734001E4457 /* German */, ); name = aranym.nib; path = "../../gui-osx"; sourceTree = SOURCE_ROOT; }; F8E9A62F0D312738001E4457 /* aranym.nib */ = { isa = PBXVariantGroup; children = ( F8E9A6300D312738001E4457 /* English */, F8E9A64E0D312739001E4457 /* German */, ); name = aranym.nib; sourceTree = SOURCE_ROOT; }; F8E9A64F0D312739001E4457 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( F8E9A6500D312739001E4457 /* German */, ); name = InfoPlist.strings; sourceTree = SOURCE_ROOT; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ F84340500C664932005E7B99 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)"; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_MODEL_TUNING = G4; GCC_OPTIMIZATION_LEVEL = 3; PRODUCT_NAME = aranym; }; name = Development; }; F84340510C664932005E7B99 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)"; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_MODEL_TUNING = G4; GCC_OPTIMIZATION_LEVEL = 3; PRODUCT_NAME = aranym; }; name = Deployment; }; F8AF4E670AA07D6C00D25DCD /* Development */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = ( ppc, i386, ); CURRENT_PROJECT_VERSION = 0.9.6; HEADER_SEARCH_PATHS = ( "$(inherited)", /Library/Frameworks/SDL_image.framework/Headers, /Library/Frameworks/SDL.framework/Headers, /usr/X11R6/include, ); MACOSX_DEPLOYMENT_TARGET = 10.3; SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; USER_HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../../uae_cpu $(PROJECT_DIR)/../../include"; }; name = Development; }; F8AF4E680AA07D6C00D25DCD /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = ( ppc, i386, ); CURRENT_PROJECT_VERSION = 0.9.6; HEADER_SEARCH_PATHS = ( "$(inherited)", /Library/Frameworks/SDL_image.framework/Headers, /Library/Frameworks/SDL.framework/Headers, /usr/X11R6/include, ); MACOSX_DEPLOYMENT_TARGET = 10.3; SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; USER_HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../../uae_cpu $(PROJECT_DIR)/../../include"; }; name = Deployment; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ F843404F0C664932005E7B99 /* Build configuration list for PBXNativeTarget "ARAnyM" */ = { isa = XCConfigurationList; buildConfigurations = ( F84340500C664932005E7B99 /* Development */, F84340510C664932005E7B99 /* Deployment */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Development; }; F8AF4E660AA07D6C00D25DCD /* Build configuration list for PBXProject "aranym" */ = { isa = XCConfigurationList; buildConfigurations = ( F8AF4E670AA07D6C00D25DCD /* Development */, F8AF4E680AA07D6C00D25DCD /* Deployment */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Development; }; /* End XCConfigurationList section */ }; rootObject = F87BDEF00488FB4800F69266 /* Project object */; } aranym-1.1.0/src/Unix/darwin/aranym.icns0000664000175000017500000012601213454637621016346 0ustar joyjoyicns ics#H?<?<is32Ͷ濃xɻ߿ŶŶᵡպШ㭉ǚ䶆ƨ濃xɼ߿ŵᵠչЧ㮌ǜ䶆ƨ濃xij̹ܿ䪿ᯔհʝ㩈–䶆ƨs8mk -FeI-Fd:}ab"Юy@Ӵa=!عgA$OpH'  ICN#????il32骏ȸ몉}|µ'³ȹ߻~|Ыÿ}vz߷ҭ꼓ՠƪ導̪ğ ٶ 㾹̔骏ȸ몉̾~̾%̾ƹ߻Ы?㷭ҬN꼔աƪ少̪Ġ ٴ 㿻̔骏ñ몉ȶzurptŶ{yxwuuy{}'Ŷ~}}|{|߶į}}~{||}~߷С}~߰<̡浍*Йƪ⧌̪缗 ө 㻸̔l8mk %>\]$ 4Mlی' 4Mk# 4Mkv3MkQq%oI@'rr@ӳO>ԶkG(ھnG* YھuO0 ,ƥ|Q0 ͬX7Jb?#3)ich#H??????????ih32 9 Ͻ㪝ȸ䪘ȶ}|Ⱦ}}̼ ̂*Ǿۂ̼ Ɓ,̀,]Ȫ»ä¿~Ԁڪ}|㵧ż}yuszȪm~||}ಲͲƁ ŠЪ$఍܉ śȍթ|Ȓᴍ||ƕġֹ̚ȟ ᾲƢ齪Ȧ Ͼ㪝ȸ䪘ȶ~Ǿ!̾&ɺ̂ ŻۂʻƁ ̀,:ȫĢԀGڪ㷧+}|ɪsಱϲԁ(ŠЪ$ᱏ܉ĜȍөȒ᳐ƕâ̚շȟ ὰƢ鿬Ȧ ̹ઝðyw䪘­|xtsrpu}zyxxwutsrqquތŴ|{{zzyxvuwx{¯~~|{ zz}̂ ̾}|}ׂ ȴ}~Ɓ,~}}~}}~̀|}~ ]ȩ|~ÚҀڤ㵞|z~Ȣ_஥̩Ɓ(潔Ъ$ۥ܉꺓ȍ͞~Ȓܨ}}ƕ꺗̚Ϊȟ ޲Ƣ麪Ȧh8mk =*&FiB*Kva8iB 8V/*Kv*8i*P: _?=gp/%l[a ֧v8IT!Ɨ\8Y἗P*ћl,רqH =ϨhA=Ƣh8SƗW) &it32Ggٴ Ȳjydmr|dgtr˸npguken{ ԟx~}}{r{|x%ȴypyzkuwplwyds|'|swpzpnzfp}mi-㳤m}vrrxrkz|vayv}7ȴ{v|wu|tpt=ν~|}stgmfwhn~qWqBؽxsvvmw}tgvbg|lwGȸ~xwr{lji|w^v~yaOͪ|{zv}}sxTs{zs~yjvbܻY̋z~zujq׵^Զ~}~u|v{ױ~fͯ~³}gj’xpȫiqkb[wrȹzpʮwm\e|dξjvbcx QƦ|ȹsǣǺt|zǻuȺŹuYv~¨nǸaGf<}Ӿ6͍đĹñ|gcmmykwx{~|¿ȮǮuҹ@ibhPx~ʼ԰¾Y~xZgzScw~||ɼǾ˰ՠ̶qΙ|ztfAY{r|}~_ʼľԛԲ߳°¿r{em{Vq}xEx{xǶ¬ûϹҾgϹ?UXw]LoK~xԀȻöζğmatq_Xw|c]YvyöӲжӦMVʣRzi\vte\}mIvyÀ®νȽִïʼ\dJPI˻xorV}nbHq~Ty恏γϣļòrg<]HvnbcijczO~VzǺզ۹ӑȼhtMabtzec~ǏVi}mZr|A|`abrþּ̭Ĺϸk`§UuџK:Zwm_q\}=WbMmyu{>^j|~nYqu\^wΰ¬ye]}n]ȥ`v{apotrP}{zz[kUrɹµҵC9^}]AeLs{]Zxdxn}}U{¢ĻRH2Z_z٫V`]Mcx} |}}uTeѿ·өk\ķ^E:ǭA_dd}hesg{zyⳡiS+}aRǴ`}XhnKfkkvrވr\ʭ^GKڷC2mtQJ^f}?YmЂRʱl`\`oIֻ+9@xAh]uRfem½ý̂RijC'P{b_Υbżeqb{y{kAaX{P`]sj{Qҳf.zuT0FG~{\C2gU]~Y~vU}Qȸ@kw$a>qX_}ne@dT^hR ̓]޳bZϦblbyl5^:jj8wU_ju]cƾXM=yrw0ҜoyjO{U–80i\fb|΂UνG}pxm]{ũ~V^v|um{ifgsrrm5𻼻hlmvF,b6T2n`o~}΂n<{܂/̵p{^bw؁*ڴYa{¿̂'n|¿!׳uÿڂ賶ʂȁ̳㲷 궳Ƃ Ɓӆװ ðfs^eiqZ]~jg{ȴfye\i_{Zb|m їlxypqqvwutuogupw}psjx%ưl{cjmu^hkd`}knwXgpwz'{wne{tg}aumrcbnZdrttsa]|-߫w]yzyxnhsce|lf^zm{pjUumiqy7įtyw{~ux}wyr~w{xpzw~nyhsnhhupsticvh=ƶoxwixun~q{|ritbcs}Xtp^}W{j\bs|fMgBնxl|ymzwnvtfs|v}_lpee|uu|^hneXzjtuW\qwblvG¯~yryo}plxjdw~ewwa}htw[{s[~[qlS|jrmT}Oě|~|~~}}~wz{}w}qzzo}x}k|j}tlgmmerukTx~pvx}tyqsxkzumut_zzhg{obmhY{{gwQϮYyr~o{rxu~n{yl}xm|vlf~okwogwd{YparȦ|^˯~ppzury}osowziy|kgzknkazjdniŠ~xfĢ|{|}~~~~}{{{}vz|vzzmzzyiýfjqq|p~pvxpwtm}}p~qwn{~gzxdzp]~̺~{nzxpkruqqw|uopvpq{{sqtmzkzlv{dqvZλqBnjfj|nvx}}|z{~}~}}~{~}yz|}{m~do}^{o|r}n~pwzvsnm~}p~mz~ukiuh~Ĵo~Ǻ6oq|lm}srmottii~|uiǾƻ5m~g~n}s}uypnjrs~hbž ĸ~E|}|~|{~~|}|{~{~zx qY-m~j}l}kp|twyt{rEϯV|WIg<~{mnm}ko~mv{u q%yi[]txpwi}jk~h|lc~İ_|8jfkWxۇ}{y{z|~}~|yvQyy`h}W^wāyf}h}vwcyƖ}usfH_qxhvj~_}ƛgpfrzsQzK~zxyyǷǺYů5VXz~uaRvN}xԆd_zora[sykeY}y•>RƟYpyZyu]]~uLvˆaϳĻQ}fISI̷ogrVieQyZy扒cc>`Fqd_cbmgY_ jx[oJ^`rwb^v˔Wkwsk^wIghhzȯY\~PtʗF:\{e~_oVA\Bt}okz}yB_ʤfobYۖ;bKor|pxBbps_wy`{bi}\_nU[q{grnjmRepVY92c~]8`PutVWw\w|xU~NG5VZyסR[\Kavs~xUYıvŜhYcH|9=e_azjaody}y䴢}^T*}[R{YyWinIdnkwQߋiX}_A}Nɣ>6ntRE_h=[g҂Si_[_jIʲ*mx|܂;+G/xhG}΂7իi{PzqxV}ځ2Li0b;w{ڂ/ƫdyTc|sz؁*֩N^v}̂'ez!Ҫjڂ槨ʂȁŪफ 갮Ƃ ƁЅt8mk@8qU8FqU8FUcqԛU8FUcqU8FUcqU8FUcqU8FUcqU8FUcqU8FUcqU8FUcqU8FUcqF8FUcq*8FUcqc8FUcqU8FUcqF8FUcq*8FUcqc8FUcqF8Fcq**FcqU*c*FUU*UcUUUFF**cUF**ccFF**ccFF**ccFF**cUF**8UԪc**ԸU*FƸcF*cԸqcF**ԸcF8UԸcUF**ԸcUF*UԸcUF*8ԸcUF*qƸcUF*UԸqcF**ԸcF8cԸcUF*FԸcUF**ԸcUF*cԸcUF*FԸcUF**ԸcUF*UԸcF**ԸcUF*cԸcUF*FԸcUF**ԸcUF*cԸcF*FԸcUF*8ԸcUF*qԸcUF*UԸcF**ccUF**FUF*aranym-1.1.0/src/Unix/darwin/SDLMain.h0000664000175000017500000000106713454637621015603 0ustar joyjoy// SDLMain.m - main entry point for our Cocoa-ized SDL app #import @interface SDLMain : NSObject { } - (BOOL) application: (NSApplication *) theApplication openFile: (NSString *) filename; - (void) applicationDidFinishLaunching: (NSNotification *) aNotificaton; - (NSApplicationTerminateReply) applicationShouldTerminate: (NSApplication *) sender; - (IBAction) showPrefs: (id) sender; - (IBAction) makeFullscreen: (id) sender; - (IBAction) makeScreenshot: (id) sender; - (IBAction) reboot: (id) sender; - (IBAction) debug: (id) sender; @end aranym-1.1.0/src/Unix/darwin/SDLMain.M0000664000175000017500000001442313454637621015550 0ustar joyjoy// SDLMain.M - main entry point for a Cocoa-ized SDL app #import "SDL_compat.h" #import "SDLMain.h" #import /* for MAXPATHLEN */ #import #import "host.h" #define UNUSED(param) ((void)param) static int gArgc; static char **gArgv; static bool gFinderLaunch; static bool gCalledAppMainline(false); static char* gConfigFile(NULL); // The main class of the application, the application's delegate. @implementation SDLMain // Catch document open requests. // Files are added to gArgv, so to the app, they'll look like command line arguments. // This message may be received multiple times to open several docs on launch. // This message is ignored once the app's mainline has been called. - (BOOL) application: (NSApplication *) theApplication openFile: (NSString *) filename { UNUSED(theApplication); size_t filenamelen; const char* configfile; char** argv; if (gCalledAppMainline) // The pplication has already been started, ignore this document. return(false); if (!gFinderLaunch) // Command line arguments have been passed. return(false); // The gFinderLaunch is set, thus argv was " -psn " and gArgv now is "". // As there is space left in original agrv to now hold " -c ". BOOL isDir; NSFileManager* fileManager = [NSFileManager defaultManager]; if ([fileManager fileExistsAtPath: filename isDirectory: &isDir]) { if (isDir) { NSString* configfilename; configfilename = [filename stringByAppendingPathComponent: @ARANYMCONFIG]; if ([fileManager fileExistsAtPath: configfilename]) { filename = configfilename; } else { [configfilename release]; configfilename = [filename stringByAppendingPathComponent: @"config"]; if ([fileManager fileExistsAtPath: configfilename]) { filename = configfilename; } else { [configfilename release]; return(false); } } } // Allocate memory to keep the config file name. configfile = [filename UTF8String]; filenamelen = SDL_strlen(configfile) + 1; gConfigFile = (char *)SDL_malloc(filenamelen); if (gConfigFile == NULL) return(false); SDL_strlcpy(gConfigFile, configfile, filenamelen); // Allocate memory to hold the new argument pointers. argv = (char**)SDL_malloc(4 * sizeof(char*)); if (argv == NULL) { SDL_free(gConfigFile); gConfigFile = NULL; return(false); } // Build the " -c " arguments. argv[0] = gArgv[0]; argv[1] = "-c"; argv[2] = gConfigFile; argv[3] = NULL; // Set the new into the global arguments. gArgv = argv; gArgc = 3; // ARAnyM can only handle a single config file, thus this flag is set to ignore further files. gCalledAppMainline = true; } return(true); } // Called when the internal event loop has just started running. - (void) applicationDidFinishLaunching: (NSNotification *) aNotification { UNUSED(aNotification); int status; // Remember that application has started. gCalledAppMainline = true; SDL_SetMainReady(); // Hand over to main application code. status = SDL_main(gArgc, gArgv); // Terminate the application. //[NSApp terminate: NSApp]; //[NSApp stop: self]; // Release fake arguments again. if (gConfigFile != NULL) { SDL_free(gArgv); SDL_free(gConfigFile); } // We're done, thank you for playing. exit(status); } // Called when the application should terminate. - (NSApplicationTerminateReply) applicationShouldTerminate: (NSApplication *) theApplication { UNUSED(theApplication); // Post a SDL_QUIT event SDL_Event event; event.type = SDL_QUIT; SDL_PushEvent(&event); // Cancel the termination, as the SDL_QUIT signal will finally lead to an exit() call. return(NSTerminateCancel); } // The user selected the "Preferencs..." menu entry. - (IBAction) showPrefs: (id) sender { UNUSED(sender); SDL_Event event; event.type = SDL_KEYDOWN; event.key.keysym.sym = bx_options.hotkeys.setup.sym; event.key.keysym.mod = bx_options.hotkeys.setup.mod; SDL_PushEvent(&event); } // The user selected the "Fullscreen" menu entry. - (IBAction) makeFullscreen: (id) sender { UNUSED(sender); SDL_Event event; event.type = SDL_KEYDOWN; event.key.keysym.sym = bx_options.hotkeys.fullscreen.sym; event.key.keysym.mod = bx_options.hotkeys.fullscreen.mod; SDL_PushEvent(&event); } // The user selected the "Screenshot" menu entry. - (IBAction) makeScreenshot: (id) sender { UNUSED(sender); SDL_Event event; event.type = SDL_KEYDOWN; event.key.keysym.sym = bx_options.hotkeys.screenshot.sym; event.key.keysym.mod = bx_options.hotkeys.screenshot.mod; SDL_PushEvent(&event); } // The user selected the "Reboot" menu entry */ - (IBAction) reboot: (id) sender { UNUSED(sender); SDL_Event event; event.type = SDL_KEYDOWN; event.key.keysym.sym = bx_options.hotkeys.reboot.sym; event.key.keysym.mod = bx_options.hotkeys.reboot.mod; SDL_PushEvent(&event); } // The user selected the "Debug" menu entry. - (IBAction) debug: (id) sender { UNUSED(sender); SDL_Event event; event.type = SDL_KEYDOWN; event.key.keysym.sym = bx_options.hotkeys.debug.sym; event.key.keysym.mod = bx_options.hotkeys.debug.mod; SDL_PushEvent(&event); } @end #ifdef main #undef main #endif static int IsRootCwd(void) { char buf[MAXPATHLEN]; char *cwd = getcwd(buf, sizeof (buf)); return cwd != NULL && strcmp(cwd, "/") == 0; } static int IsFinderLaunch(int argc, char **argv) { /* -psn_XXX is passed if we are launched from Finder, SOMETIMES */ if ( (argc >= 2) && (strncmp(argv[1], "-psn", 4) == 0) ) { return 1; } else if ((argc == 1) && IsRootCwd()) { /* we might still be launched from the Finder; on 10.9+, you might not get the -psn command line anymore. If there's no command line, and if our current working directory is "/", it might as well be a Finder launch. */ return 1; } return 0; /* not a Finder launch. */ } // Main entry point to executable. int main (int argc, char **argv) { // Copy the arguments into a global variable. // This is passed if we are launched by double-clicking. if (IsFinderLaunch(argc, argv)) { gArgc = 1; gArgv = argv; gArgv[1] = NULL; gFinderLaunch = true; } else { gArgc = argc; gArgv = argv; gFinderLaunch = false; } NSApplicationMain(argc, const_cast(argv)); return(0); } aranym-1.1.0/src/Unix/darwin/SDLHotkeysRefresh.M0000664000175000017500000000400513454637621017624 0ustar joyjoy// // NSMenuUpdate.mm // MacAranym // // Created by Jens Heitmann on 14.08.07. // Copyright 2007 __MyCompanyName__. All rights reserved. // #import "SDL_compat.h" #import "SDLMain.h" #import /* for MAXPATHLEN */ #import #import "parameters.h" /* Menu item tag */ #define PREFERENCES_MENUITEM_TAG 1 #define QUIT_MENUITEM_TAG 2 #define REBOOT_MENUITEM_TAG 3 #define SCREENSHOT_MENUITEM_TAG 4 #define FULLSCREEN_MENUITEM_TAG 5 #define DEBUG_MENUITEM_TAG 6 /* Map SDL Modifier Mask into MAC Modifier Mask */ static unsigned int getRefreshModifier(SDL_Keymod mods) { unsigned int mask = 0; if (mods & (KMOD_LSHIFT|KMOD_RSHIFT)) mask |= NSShiftKeyMask; if (mods & (KMOD_LCTRL|KMOD_RCTRL)) mask |= NSControlKeyMask; if (mods & (KMOD_LALT|KMOD_RALT)) mask |= NSAlternateKeyMask; if (mods & (KMOD_LGUI|KMOD_RGUI)) mask |= NSCommandKeyMask; return mask; } /* Update key combination in a menu entry */ static void refreshMenuItem(bx_hotkey keysym, int itemTag) { NSMenu *menu = [[NSApplication sharedApplication] mainMenu]; int numberOfItems = [menu numberOfItems]; for (int i = 0; i < numberOfItems; i++) { NSMenuItem *popupmenu = [menu itemAtIndex:i]; NSMenuItem *menuitem = [[popupmenu submenu]itemWithTag:itemTag]; if (menuitem != NULL) { [menuitem setKeyEquivalent: [NSString stringWithCString:(const char *)SDL_GetKeyName(keysym.sym) encoding: NSUTF8StringEncoding]]; [menuitem setKeyEquivalentModifierMask: getRefreshModifier(keysym.mod)]; [menu itemChanged:menuitem]; return; } } } /* Refresh all menu items associated with hotkeys */ void refreshMenuKeys() { refreshMenuItem(bx_options.hotkeys.setup, PREFERENCES_MENUITEM_TAG); refreshMenuItem(bx_options.hotkeys.quit, QUIT_MENUITEM_TAG); refreshMenuItem(bx_options.hotkeys.warmreboot, REBOOT_MENUITEM_TAG); refreshMenuItem(bx_options.hotkeys.screenshot, SCREENSHOT_MENUITEM_TAG); refreshMenuItem(bx_options.hotkeys.fullscreen, FULLSCREEN_MENUITEM_TAG); refreshMenuItem(bx_options.hotkeys.debug, DEBUG_MENUITEM_TAG); } aranym-1.1.0/src/Unix/darwin/README_ethernet.txt0000664000175000017500000000754113454637621017602 0ustar joyjoySetting up ethernet on the MAC (0.9.5 beta) =========================================== 1. Install TUN/TAP driver ------------------------- Download the tuntap driver from http://www-user.rhrk.uni-kl.de/~nissler/tuntap/ unpack the binary version and use the tuntap_installer. (If you don't want to use the installer there is a description how you can install the drivers manually at the end of this document) 2. Prepare aratapif.sh ---------------------- Edit the aratapif.sh and modify the following parameters to your requirements. FW_INTERFACE : the interface which is your normal MAC network device may be en0 for a wired RJ45 and en1 for a WLAN connection NAMESERVER : Point this to your normal name server Copy the file into the directory where your "config" file is located. 3. Configuring MacAranym ------------------------ Configure your MacAranym config file and modify the ETH0 section [ETH0] Type = ptp Tunnel = tap0 HostIP = 192.168.1.8 AtariIP = 192.168.1.9 Netmask = 255.255.255.0 MAC = 00:41:45:54:48:30 Set the HostIP and AtariIP to a network that is outside of your normal network range. i.E. if your default network is 172.16.1.xxx than you may use i.e. 192.168.1.x, or if your normal network is 192.168.1.x you may use i.e. 172.16.1.xxx addresses. If you want to disable ethernet, set "Type=none". 4. Prepare Guest OS side ------------------------ Edit the /etc/resolv.conf in the ATARI file system and point it to your host system (in the above example to 192.168.1.8) 5. Testing the connection ------------------------- Boot up MacAranym. After startup open a terminal window on Mac side and try to send a ping to the Guest IP address, i.E. $ ping 192.168.1.9 6. Joy your Ethernet connection ------------------------------- ;-) Troubleshooting --------------- If the device /dev/tap0 does not having the correct access flags modify the file /Library/StartupItems/tap/tap and add a chmod to the StartService section. After that it should look like the one below: StartService () { ConsoleMessage "Initializing tap devices" if [ -d /Library/Extensions/tap.kext ]; then kextload /Library/Extensions/tap.kext chmod a+rw /dev/tap0 fi } Manuall installation (Experts) ------------------------------ If you don't like to use the installer for the TUNTAP extension you can install them manually. 1. download the binary TUNTAP package for your system (panther/tiger). 2. unpack the archive to a temporary folder 3. right click the package tap_kext.pkg and select "Show package contents" 4. Go into the folder "Contents" and unpack the file Archive.pax.gz by using a right click and selection "Open with ..." -> "BOMArchiveHelper" 5. Enter the directory Archive/Library/Extensions and copy tap.kext to a folder that you like 6. do steps 3 to 5 also with tun_kext.pkg and get tun.kext from it. 7. create a file i.E. load.sh in your destination directory where you have put tun.kext and tap.kext with the following content: #!/bin/sh chown -R root:wheel tun.kext chown -R root:wheel tap.kext kextload tap.kext kextload tun.kext chmod a+rw /dev/tap[0-9]* 8. for unloading the device drivers from the kernel you need another script (i.E. unload.sh) with the following content: #!/bin/sh /sbin/ipfw delete 00200 # kill an old natd if necessary if test -f /var/run/natd_fw.pid; then kill -9 `cat /var/run/natd_fw.pid` fi # kill an old natd if necessary if test -f /var/run/natd_dnsfw.pid; then kill -9 `cat /var/run/natd_dnsfw.pid` fi kextunload tap.kext kextunload tun.kext 9. Loading the drivers before starting MacAranym Open a terminal and change to the directory in which you have placed your files. $ cd mytuntapfolder Start the load script with sudo $ sudo ./load.sh when prompted for the password use your user password. 9. for unloading the drivers after finishing MacAranym execute: $ sudo ./unload.sh aranym-1.1.0/src/Unix/darwin/PkgInfo0000664000175000017500000000001013454637621015446 0ustar joyjoyAPPL????aranym-1.1.0/src/Unix/darwin/Makefile0000664000175000017500000001516713454637621015651 0ustar joyjoy # Define here the relative path from this file to the folder containing the autogen.sh script. builddir = ../../.. # Define here the relative path from the the folder containing the autogen.sh script to the folder containing the sdl.m4 file. sdlm4dir = src/Unix/darwin # Configure the aranym ppc binary. CONFIGURE_OPTIONS_ppc = --host=powerpc-apple-darwin8.10.0 --enable-fullmmu --enable-opengl --enable-fpe=uae --enable-nfjpeg --enable-nfosmesa --enable-ethernet=yes --enable-vblupdates=yes # Configure the aranym x86 binary. CONFIGURE_OPTIONS_i386 = --host=i386-apple-darwin8.10.0 --enable-opengl --enable-jit-compiler --enable-nfjpeg --enable-nfosmesa --enable-ethernet=yes --enable-vblupdates=yes # This flag is needed to by the autogen.sh script. ACLOCAL_FLAGS = "-I $(sdlm4dir)/" .PHONY: universal i386 ppc clean clean_i386 clean_ppc touch # The universal target builds the x86 executable, then the ppc executable and finally merges both into an universal binary which is then put into the application bundle. universal: $(builddir)/depend_i386 $(builddir)/depend_powerpc $(MAKE) -C $(builddir) -f Makefile_i386 aranym_i386 $(MAKE) -C $(builddir) -f Makefile_ppc aranym_powerpc # create the universal binary from the ppc and i386 versions lipo -create $(builddir)/aranym_powerpc $(builddir)/aranym_i386 -output $(builddir)/aranym # now just build the bundle containing the just build universal binary $(MAKE) -C $(builddir) -f Makefile_ppc rm -rf ARAnyM.app mv $(builddir)/ARAnyM.app . # The i386 target builds the x86 executable and puts it into the application bundle. i386: $(builddir)/depend_i386 $(MAKE) -C $(builddir) -f Makefile_i386 aranym_i386 cp -p $(builddir)/aranym_i386 $(builddir)/aranym $(MAKE) -C $(builddir) -f Makefile_i386 rm -rf ARAnyM.app mv $(builddir)/ARAnyM.app . # The ppc target builds the powerpc executable and puts it into the application bundle. ppc: $(builddir)/depend_powerpc $(MAKE) -C $(builddir) -f Makefile_ppc aranym_powerpc cp -p $(builddir)/aranym_powerpc $(builddir)/aranym $(MAKE) -C $(builddir) -f Makefile_ppc rm -rf ARAnyM.app mv $(builddir)/ARAnyM.app . # The depend target builds both dependencies for x86 and powerpc. depend: depend_i386 depend_ppc # The depend_i386 target builds only the dependencies for x86. depend_i386: $(builddir)/depend_i386 # The depend_ppc target builds only the dependencies for powerpc. depend_ppc: $(builddir)/depend_powerpc # The clean target removes all build files. clean: clean_i386 clean_ppc # The clean_i386 target removes all build files related to the x86 binary and the application bundle. clean_i386: if test -f $(builddir)/Makefile_i386; then \ $(MAKE) -C $(builddir) -f Makefile_i386 clean; \ fi # The clean_ppc target removes all build files related to the ppc binary and the application bundle. clean_ppc: if test -f $(builddir)/Makefile_ppc; then \ $(MAKE) -C $(builddir) -f Makefile_ppc clean; \ fi # The clean target removes all build files. distclean: distclean_i386 distclean_ppc # The clean_i386 target removes all build files related to the x86 binary and the application bundle. distclean_i386: if test -f $(builddir)/Makefile_i386; then \ $(MAKE) -C $(builddir) -f Makefile_i386 distclean; \ rm -f $(builddir)/Makefile_i386; \ fi rm -f $(builddir)/configure_i386 rm -f $(builddir)/config_i386.h rm -f $(builddir)/config_tmp.h # The clean_ppc target removes all build files related to the ppc binary and the application bundle. distclean_ppc: if test -f $(builddir)/Makefile_ppc; then \ $(MAKE) -C $(builddir) -f Makefile_ppc distclean; \ rm -f $(builddir)/Makefile_ppc; \ fi rm -f $(builddir)/configure_ppc rm -f $(builddir)/config_ppc.h rm -f $(builddir)/config_tmp.h # This target touches both makefiles to avoid another configure run if something has been changed in the Makefile.in file. touch: touch $(builddir)/Makefile_i386 touch $(builddir)/Makefile_ppc # This target combines both configurations into one config_tmp.h file. $(builddir)/config_tmp.h: echo "#ifndef CONFIG_H" > $@ echo " #define CONFIG_H" >> $@ echo " #if CPU_powerpc" >> $@ echo " #include \"config_ppc.h\"" >> $@ echo " #elif CPU_i386" >> $@ echo " #include \"config_i386.h\"" >> $@ echo " #else" >> $@ echo " #error Unsupported CPU type" >> $@ echo " #endif" >> $@ echo "#endif" >> $@ # This target calls autogen.sh, configure and make depend and renames the generic config* files as config*_i386* to avoid overwriting if configuration for the ppc binary is done. $(builddir)/config_i386.h: $(builddir)/configure.ac $(builddir)/autogen.sh $(builddir)/acinclude.m4 sdl.m4 $(builddir)/config.guess cd $(builddir)/; NO_CONFIGURE=yes ACLOCAL_FLAGS=$(ACLOCAL_FLAGS) ./autogen.sh; cd $(builddir)/; ./configure $(CONFIGURE_OPTIONS_i386) mv $(builddir)/configure $(builddir)/configure_i386 mv $(builddir)/config.log $(builddir)/config_i386.log mv $(builddir)/config.h $(builddir)/config_i386.h # This target calls autogen.sh, configure and make depend and renames the generic config* files as config*_ppc* to avoid overwriting if configuration for the x86 binary is done. $(builddir)/config_ppc.h: $(builddir)/configure.ac $(builddir)/autogen.sh $(builddir)/acinclude.m4 sdl.m4 $(builddir)/config.guess cd $(builddir)/; NO_CONFIGURE=yes ACLOCAL_FLAGS=$(ACLOCAL_FLAGS) ./autogen.sh; cd $(builddir)/; ./configure $(CONFIGURE_OPTIONS_ppc) mv $(builddir)/configure $(builddir)/configure_ppc mv $(builddir)/config.log $(builddir)/config_ppc.log #mv $(builddir)/config.h $(builddir)/config_ppc.h # 10.3.9 compatibility: cat $(builddir)/config.h | sed 's/#define HAVE_SYS_STATVFS_H 1/\/* #undef HAVE_SYS_STATVFS_H *\//' > $(builddir)/config_ppc.h rm -f $(builddir)/config.h # This target calls make to buid the dependency file for x86. $(builddir)/depend_i386: $(builddir)/Makefile_i386 $(builddir)/config_tmp.h cp $(builddir)/config_tmp.h $(builddir)/config.h $(MAKE) -C $(builddir) -f Makefile_i386 depend # This target calls make to buid the dependency file for powerpc. $(builddir)/depend_powerpc: $(builddir)/Makefile_ppc $(builddir)/config_tmp.h cp $(builddir)/config_tmp.h $(builddir)/config.h $(MAKE) -C $(builddir) -f Makefile_ppc depend # After a configuration for x86 this target renames the created Makefile to Makefile_i386 $(builddir)/Makefile_i386: $(builddir)/config_i386.h $(builddir)/Makefile.in mv $(builddir)/Makefile $(builddir)/Makefile_i386 touch $(builddir)/Makefile_i386 # After a configuration for ppc this target renames the created Makefile to Makefile_ppc $(builddir)/Makefile_ppc: $(builddir)/config_ppc.h $(builddir)/Makefile.in mv $(builddir)/Makefile $(builddir)/Makefile_ppc touch $(builddir)/Makefile_ppc aranym-1.1.0/src/Unix/darwin/MachUser.c0000664000175000017500000000234513454637621016056 0ustar joyjoy/* * MachUser.c - wrapper for mach_excUser.c * * Copyright (c) 2013 ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Last modified: 2013-06-16 Jens Heitmann * */ /* * * This is only a wrapper file, because generated code is x86_64 bit only and * will not build on a 32 bit target * */ #ifdef CPU_x86_64 // mach_excUser.c is generated by gen_machfiles for 64 bit targets #include "mach_excUser.c" #endif aranym-1.1.0/src/Unix/darwin/MachServer.c0000664000175000017500000000235613454637621016410 0ustar joyjoy/* * MachServer.c - wrapper for mach_excServer.c * * Copyright (c) 2013 ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Last modified: 2013-06-16 Jens Heitmann * */ /* * * This is only a wrapper file, because generated code is x86_64 bit only and * will not build on a 32 bit target * */ #ifdef CPU_x86_64 // mach_excServer.c is generated by gen_machfiles for 64 bit targets #include "mach_excServer.c" #endif aranym-1.1.0/src/Unix/darwin/Info.plist0000664000175000017500000000421613454637621016152 0ustar joyjoy NSAppleScriptEnabled CFBundleDevelopmentRegion English CFBundleDisplayName Atari Running on Any Machine CFBundleDocumentTypes CFBundleTypeExtensions ARAnyMCFG amcfg config CFBundleTypeName ARAnyM Configuration CFBundleTypeRole Editor LSIsAppleDefaultForType LSTypeIsPackage CFBundleTypeExtensions ARAnyMVM amvm aranym CFBundleTypeIconFile busybee.icns CFBundleTypeName ARAnyM Virtual Machine CFBundleTypeRole Editor LSIsAppleDefaultForType LSTypeIsPackage CFBundleExecutable aranym CFBundleGetInfoString 0.9.6, https://aranym.github.io/, released in 2007-12 CFBundleIconFile busybee.icns CFBundleIdentifier org.aranym CFBundleInfoDictionaryVersion 6.0 CFBundleName ARAnyM CFBundlePackageType APPL CFBundleShortVersionString 0.9.6 CFBundleSignature ???? CFBundleVersion 0.9.6 LSHasLocalizedDisplayName NSAppleScriptEnabled NSHumanReadableCopyright GNU General Public License, Version 2 NSMainNibFile aranym NSPrincipalClass NSApplication aranym-1.1.0/src/Unix/darwin/German.lproj/0000775000175000017500000000000013454637621016535 5ustar joyjoyaranym-1.1.0/src/Unix/darwin/German.lproj/aranym.nib/0000775000175000017500000000000013454637621020573 5ustar joyjoyaranym-1.1.0/src/Unix/darwin/German.lproj/aranym.nib/objects.nib0000664000175000017500000000530713454637621022723 0ustar joyjoy streamtyped@NSIBObjectDataNSObjectNSCustomObject)@@NSMutableStringNSString+ NSApplicationi!NSMenui@@@ DarstellungNSMutableArrayNSArray NSMenuItem i@@IIi@@@@:i@BildschirmfüllendNSCustomResource)NSImageNSMenuCheckmarkNSMenuMixedStateSDLMainARAnyMsubmenuAction:ARAnyM Über ARAnyMEinstellungen...@ARAnyM ausblendenAndere ausblendenAlle einblenden@ARAnyM beenden _NSAppleMenuAblageAblageĠOpen…oĠ Open Recent Open Recent̠ Clear Menu_NSRecentDocumentsMenu Emulation EmulationԠBildschirmfotoԠDebugԠ@ԠNeustartFensterFensterIm Dock ablegenࠂAlle nach vorn bringen_NSWindowsMenu _NSMainMenu DarstellungSDLMain«ԖʖԖޖ–ޫĖԖĖ NSFontManagerԖ̖Җҫ 1111넙SDLMain File's Ownerㄙ NSMenuItem1NSMenu NSMenuItem턙 Font Managerބ NSMenuItem1MainMenu NSMutableSetNSSetINSNibOutletConnectorNSNibConnector@@@넙delegateNSNibControlConnector넙 showPrefs:넙quit:넙delegate넙delegateorderFrontStandardAboutPanel:慄arrangeInFront:ㅄperformMiniaturize:넙makeFullscreen:hide:hideOtherApplications:unhideAllApplications: terminate:υclearRecentDocuments:넙reboot:넙debug:넙makeScreenshot:3@i+9 ._ʁǁ F,ā G&K%ҁ́`ԁ*ށρH:فׁ8^IJ܁ہ0(IBCocoaFrameworkaranym-1.1.0/src/Unix/darwin/German.lproj/aranym.nib/keyedobjects.nib0000664000175000017500000001605713454637621023751 0ustar joyjoybplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver ]IB.objectdata 159@CFJNbjmnosx   &'189n:n?DEIJNOT\`abfgklpquvz  m$--.5>GHJnzmy      !"#$%&'()*+,-./012369?_NSMutableStringXNSStringXNSObject:;ABB?^NSCustomObject6D8_IBCocoaFrameworkGHIZNS.objects:;KLLM?\NSMutableSetUNSSetGOaPQRSTUVWXYZ[\]^_` 4?ACEGLNPRTY^b0cdefgh0]NSDestinationWNSLabelXNSSource 23l WSDLMainXdelegate:;pqqr?_NSNibOutletConnector^NSNibConnectorcdefuvw yz{|}~VNSMenu]NSMnemonicLoc_NSKeyEquivModMaskWNSTitleYNSOnImageZNSKeyEquiv\NSMixedImageUNSTag|VNSName[NSMenuItems"12#_Einstellungen...P2^NSResourceNameWNSImage_NSMenuCheckmark:;?_NSCustomResource_%NSCustomResource2_NSMenuMixedState:;?ZNSMenuItemZshowPrefs::;r?_NSNibControlConnectorcdefv 3yz{|}~YNSSubmenuXNSAction !|{2|VARAnyM^submenuAction:Gawʀ$&')+-.0yz|}~%kber ARAnyMyz{|}~]NSIsSeparator yz{|}~(_ARAnyM ausblendenyz{|}~*_Andere ausblendenyz{|}~,_Alle einblendenyz{|}~܀ yz{|}~/^ARAnyM beenden:; ?^NSMutableArrayWNSArray\_NSAppleMenu:; yy?Uquit:cdefh >5|6=27WFensterGa8:;0yz{|}~!59_Im Dock ablegenyz{|}(~\NSIsDisabled5  yz{|}~35<_Alle nach vorn bringen^_NSWindowsMenucdef<h @cde0AvÀB$_orderFrontStandardAboutPanel:deFvD;_arrangeInFront:deKvF8_performMiniaturize:cdefQvS KHyz{|}~UV[IJ|]_i2joBildschirmfllend_makeFullscreen:decvƀM'Uhide:dehvǀO)_hideOtherApplications:demvȀQ+_unhideAllApplications:dervʀS.Zterminate:dewvyXUyz{|}~{|VW|wy2xZClear Menu68_clearRecentDocuments:cdefv ]Zyz{|}~[\|2XNeustartWreboot:cdefv a_yz{|}~[`UDebugVdebug:cdefv ecyz{|}~[d^Bildschirmfoto_makeScreenshot:23gG!Uf{w.ySƀI kz.V:c+5n$qZt;f_)U8H[-}&'[DarstellungGaSH0yz{|}~nlmVAblage|o2pGaӀqt0yz{|}~nrseOpen &Qoyz{|}~{ nVuv[Open Recent6 8GayU0__NSRecentDocumentsMenuyz{|}~܀[ Gaπk}0yz{|}~',[~YEmulationG/ac_zZ0yz{|}~U8=Iyz{|}~AF5[_NSMainMenu:;I  ?GK!000{U[t5[kn[n5[V5I}Gof0.. 85&fG{|}~T111168\File's Owner[NSMenuItem1\Font Manager68XMainMenuG᠀G᠀G3SUZVT0_WQXP\w{[`fRy^]S.YU4A)NtqC?&^nEG +R}VPbk' [8-UYTH$_c5fLI.Zz;:G3€ÀĀŀƀǀȀɀʀˀ̀+9._F,G&K%`*H:8^IJ0(G4a0G7᠀G:᠀:;=>>?^NSIBObjectData#,1:LQVdf \n .HTblsuwy{} %*9BUW`klnw~ $&(09BI`o /6BDFHJ]^kz|~$+CTVXZ\ "$&(*,Chvxz|~  & ( * , . 0 2 D i k m o q s u v      * , . 0 2 : C J L N P R s u w y { }    * ; = ? A C T V X Z \ |       # % ' ) N ` m o q s y  # % ' ) + - / @ B D F H S \ t v $&(*,.028?PRTVX}   !#%')+-/13579;=?ACEGIKW`ceg13579;=?AMVXadfh  (*,.02[]_acegik  "$&(*,.02468:<>@BDFHJLNPYlnprtvxz|~^`bdfhjlnprtvxz|~   #&)+.1368;>ADGJMPYZ\efhqrt}?aranym-1.1.0/src/Unix/darwin/German.lproj/aranym.nib/info.nib0000664000175000017500000000114413454637621022220 0ustar joyjoy IBDocumentLocation 236 348 356 240 0 0 1680 1028 IBEditorPositions 29 69 984 395 44 0 0 1680 1028 IBFramework Version 446.1 IBOldestOS 1 IBOpenObjects 29 IBSystem Version 8R2218 aranym-1.1.0/src/Unix/darwin/German.lproj/aranym.nib/classes.nib0000664000175000017500000000073613454637621022730 0ustar joyjoy{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { debug = id; makeFullscreen = id; makeScreenshot = id; quit = id; reboot = id; showPrefs = id; }; CLASS = SDLMain; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }aranym-1.1.0/src/Unix/darwin/German.lproj/InfoPlist.strings0000664000175000017500000000251413454637621022061 0ustar joyjoy/* Localized versions of Info.plist keys */ CFBundleName = "ARAnyM"; /* This is for the localized "short" name in the app menu bar */ CFBundleDisplayName = "Atari Running on Any Machine"; /* This is for the localized "long" name in Finder, etc */ CFBundleShortVersionString = "0.9.5"; CFBundleGetInfoString = "ARAnyM Version 0.9.5 beta, http://aranym.org/, freigegeben am 14. Juli 2007" NSHumanReadableCopyright = "GNU General Public License, Version 2"; /* Localizations for the type names */ "ARAnyM Configuration" = "ARAanyM-Konfiguration"; "ARAnyM Virtual Machine" = "virtuelle Machine fr ARAnyM"; /* Help book localization */ CFBundleHelpBookName = "ARAnyM Hilfe"; aranym-1.1.0/src/Unix/darwin/English.lproj/0000775000175000017500000000000013454637621016715 5ustar joyjoyaranym-1.1.0/src/Unix/darwin/English.lproj/aranym.nib/0000775000175000017500000000000013454637621020753 5ustar joyjoyaranym-1.1.0/src/Unix/darwin/English.lproj/aranym.nib/objects.nib0000664000175000017500000000525313454637621023103 0ustar joyjoy streamtyped@NSIBObjectDataNSObjectNSCustomObject)@@NSString+ NSApplicationi! NSMenuItemNSMenui@@@ EmulationNSMutableArrayNSArray i@@IIi@@@@:i@DebugNSCustomResource)NSImageNSMenuCheckmarkNSMenuMixedState@Reboot ScreenshotARAnyM About ARAnyMPreferences...@ Hide OthersShow All@ Quit ARAnyM _NSAppleMenu Hide ARAnyMNSMutableString Open Recent_NSRecentDocumentsMenu Clear MenuSDLMainȟARAnyMsubmenuAction:ȟFileØFileϟOpen…oϟ Open RecentǒȟViewViewٟ FullscreenȟWindowØWindowMinimize@Bring All to Front_NSWindowsMenu _NSMainMenu Emulation˖ȖȖȖȖזSDLMain͖Ֆٖ NSFontManagerȕޖϖȖϖ NSMenuItem1111넘SDLMain턘 Font ManagerȄØMainMenuØ File's Owner NSMutableSetNSSetINSNibControlConnectorNSNibConnector@@@hideOtherApplications:hide:unhideAllApplications:NSNibOutletConnector넘delegate넘 showPrefs:넘quit:넘delegateorderFrontStandardAboutPanel:넘makeFullscreen:ㅄØperformMiniaturize:慄ØarrangeInFront:넘quit:넘quit:ȕdelegateٕdelegatedelegateØclearRecentDocuments:넘debug:넘makeScreenshot: terminate:넘reboot:7@i4%ρD?& 23*6܁/"]WҁLZBՁN[ׁ1́C9@$^ .ف0:ǁU,SOށ8>:8V9A5P \YX_ØIBCocoaFrameworkaranym-1.1.0/src/Unix/darwin/English.lproj/aranym.nib/keyedobjects.nib0000664000175000017500000001627513454637621024133 0ustar joyjoybplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver ]IB.objectdata 156<@DHLdl| !"',-2:>?@DKPQTX_`chqrtz!!"&)./459:?@Cgi!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWZ]`U$null  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRootր؀ـ ׀_234[NSClassName]NSApplication789:X$classesZ$classname:;^NSCustomObjectXNSObject=>?YNS.string_IBCocoaFramework78ABBC;_NSMutableStringXNSStringEFGZNS.objects78IJJK;\NSMutableSetUNSSetEMcNOPQRSTUVWXYZ[\]^_`ab  %):<>CHLU\6efg0ijk]NSDestinationWNSLabelXNSSource mnopqrstuvwxyz{VNSMenu]NSMnemonicLoc_NSKeyEquivModMaskWNSTitleYNSOnImageZNSKeyEquiv\NSMixedImage  p}~VNSName[NSMenuItems.78/[Hide OthersP2^NSResourceNameWNSImage_NSMenuCheckmark78;_NSCustomResource_%NSCustomResource2_NSMenuMixedState78;ZNSMenuItem_hideOtherApplications:78;_NSNibControlConnector^NSNibConnectorefg0jmnopqrstuvxyz{ [Hide ARAnyMUhide:efg0jmnopqrstuvxyz{ XShow All_unhideAllApplications:efg0!#$23"WSDLMainXdelegate78ţ;_NSNibOutletConnectorefgjʀ!(&mnopqrstuvxyz{UNSTag '^Preferences...ZshowPrefs:efgjڀ!9*mnopqrsuvtxyz{YNSSubmenuXNSAction+ ,-p}~]~8^VARAnyM^submenuAction:Eck0&2 346mnpqrstuxyz{ 1\About ARAnyMmnopqrstuvyxyz{]NSIsSeparator  mnopqrstuvyxyz{  mnopqrstuvxyz{ 5[Quit ARAnyM78;^NSMutableArrayWNSArray\_NSAppleMenu78 mm;Uquit:efg$t!;$ efg0)j=0_orderFrontStandardAboutPanel:efg/j1!B?mnopqrs3uv4xyz{9@Ap~;=Y8ZZFullscreen_makeFullscreen:fgAjCGDmnpqrsEuFxyz{EFp}~LMOPS8QXMinimize=R?_performMiniaturize:fgUjWKImnopqrsEuvZxyz{EJ_Bring All to Front=a?_arrangeInFront:efgejg!TMmnopqrsuvEkxyz{p+ENOVWindow=q?EucCwWDRI6mnopqrsEuvyxyz{E ^_NSWindowsMenuefgj![Vmnopqrsuv3xyz{+@WXTViewEc1?6efg0ހ$+Ecg*_qVM6mnopqrsuvxyz{+b`aTFilep~c8d=?Eceh6mnopqrsuvxz{bfgeOpen &Qomnopqrsuvxyz{ɀbkij[Open Recentp}~πlp8m=?EcԀn6mnopqrsuvxyz{koZClear Menu__NSRecentDocumentsMenumnopqrsuvxyz{+trsYEmulationp~u8vEcwy{|6mnopqrsuvxyz{txUDebugmnopqrsuvxyz{tzZScreenshotmnopqrsuvyxyz{t mnopqrsuvxyz{t}VReboot[_NSMainMenuefg03$@efg0E$Efg#jԀn='?_clearRecentDocuments:efg+j!wVdebug:efg1j!y_makeScreenshot:fg6j4Zterminate:efg<j!|Wreboot:23BEDf!wtg3CW1.Ekyn3tR q*&_M4@D!{Ibwk?2+Ee0 Vh|78h;Ejf!ttEttE0tE3t00gttt k qE*++ ++ VEt E_th@ Mb +btEf.024!+EfT1111\Font Manager=?XMainMenu=?\File's OwnerEfEfEf7CZRVNWSw1a0]_WkO[b.U3TP^gYXQt\E`D&bU%> I)R?|e{hV_C 3\4<@0q:kMLH*t En+2yw!Ef7     €ÀĀŀƀǀȀɀʀˀ̀̀΀πЀрҀӀԀՀ4%D?&23*6/]WLZBN[1C9@^.0:U,SO8>:8V9A5P\YXEXc6E[fE^f78abb;^NSIBObjectData#,1:LQVdf#n$2@Zft~ 13<CU^grsu~ !*,.02SZh|1:AThuwy{  13579;=IO`bdfh&(*,.SY[]_acegv    / 1 3 5 7 9 ; = ? A ^ ` b d f h j w         ( 1 8 G O \ e j p         ! , > K M O Q n p r t v x z   - / @ B D F H q s u w y { }     . 0 2 4 6 8 : < > C L O Q S d f h j l u !#%')46_acegikmo{)+-/13579CPRTV_hjlnpr@BDFHJLNUartvxz!#%'2CEGIKS\^`i NPRTVXZ\^`bdfhjlnprtvxz|~ !"$-.09  #  !#&),/258;>ADFHJMPRTWZ\_bdgjmpsuxz|caranym-1.1.0/src/Unix/darwin/English.lproj/aranym.nib/info.nib0000664000175000017500000000107013454637621022376 0ustar joyjoy IBDocumentLocation 214 537 356 240 0 0 1680 1028 IBEditorPositions 29 263 953 328 44 0 0 1680 1028 IBFramework Version 446.1 IBOpenObjects 29 IBSystem Version 8R2218 aranym-1.1.0/src/Unix/darwin/English.lproj/aranym.nib/classes.nib0000664000175000017500000000073613454637621023110 0ustar joyjoy{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { debug = id; makeFullscreen = id; makeScreenshot = id; quit = id; reboot = id; showPrefs = id; }; CLASS = SDLMain; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }aranym-1.1.0/src/Unix/darwin/BUILDING_LEOPARD.txt0000664000175000017500000000047613454637621017312 0ustar joyjoyLeopard (MacOSX 10.5) requires a small patch to enable the Makefile build. The Linker will try to link with crt1.10.5 which is not available in the 10.4u SDK. This requires the creation of a symbolic link sudo ln -s /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/crt1.o /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/crt1.10.5.o aranym-1.1.0/src/Unix/cygwin/0000775000175000017500000000000013454637641014215 5ustar joyjoyaranym-1.1.0/src/Unix/cygwin/win32_supp.cpp0000664000175000017500000005434413454637621016742 0ustar joyjoy/* Various posix emulation function and utilities for cygwin/win32 ARAnyM (C) 2014 ARAnyM developer team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #define __WIN32_SUPP_IMPLEMENTATION #include "sysdeps.h" #include "maptab.h" #include #include "win32_supp.h" #define DEBUG 0 #include "debug.h" #if defined(_WIN32) || defined(__CYGWIN__) #define ISSLASH(C) ((C) == '/' || (C) == '\\') #ifndef ERROR_MEDIA_CHECK # define ERROR_MEDIA_CHECK 679 #endif /* ERROR_MEDIA_CHECK */ struct errentry { DWORD oscode; /* OS return value */ int errnocode; /* unix error code */ }; static struct errentry errtable[] = { { ERROR_INVALID_FUNCTION, EINVAL }, { ERROR_FILE_NOT_FOUND, ENOENT }, { ERROR_PATH_NOT_FOUND, ENOENT }, { ERROR_TOO_MANY_OPEN_FILES, EMFILE }, { ERROR_ACCESS_DENIED, EACCES }, { ERROR_INVALID_HANDLE, EBADF }, { ERROR_ARENA_TRASHED, ENOMEM }, { ERROR_NOT_ENOUGH_MEMORY, ENOMEM }, { ERROR_OUTOFMEMORY, ENOMEM }, { ERROR_INVALID_BLOCK, ENOMEM }, { ERROR_BAD_ENVIRONMENT, E2BIG }, { ERROR_BAD_FORMAT, ENOEXEC }, { ERROR_INVALID_ACCESS, EINVAL }, { ERROR_INVALID_DATA, EINVAL }, { ERROR_INVALID_DRIVE, ENOENT }, { ERROR_CURRENT_DIRECTORY, EACCES }, { ERROR_NOT_SAME_DEVICE, EXDEV }, { ERROR_NO_MORE_FILES, ENOENT }, { ERROR_LOCK_VIOLATION, EACCES }, { ERROR_BAD_NETPATH, ENOENT }, { ERROR_NETWORK_ACCESS_DENIED, EACCES }, { ERROR_BAD_NET_NAME, ENOENT }, { ERROR_FILE_EXISTS, EEXIST }, { ERROR_CANNOT_MAKE, EACCES }, { ERROR_FAIL_I24, EACCES }, { ERROR_INVALID_PARAMETER, EINVAL }, { ERROR_NO_PROC_SLOTS, EAGAIN }, { ERROR_DRIVE_LOCKED, EACCES }, { ERROR_BROKEN_PIPE, EPIPE }, { ERROR_DISK_FULL, ENOSPC }, { ERROR_HANDLE_DISK_FULL, ENOSPC }, { ERROR_INVALID_TARGET_HANDLE, EBADF }, { ERROR_INVALID_HANDLE, EINVAL }, { ERROR_WAIT_NO_CHILDREN, ECHILD }, { ERROR_CHILD_NOT_COMPLETE, ECHILD }, { ERROR_DIRECT_ACCESS_HANDLE, EBADF }, { ERROR_NEGATIVE_SEEK, EINVAL }, { ERROR_SEEK_ON_DEVICE, EACCES }, { ERROR_DIR_NOT_EMPTY, ENOTEMPTY }, { ERROR_NOT_LOCKED, EACCES }, { ERROR_BAD_PATHNAME, ENOENT }, { ERROR_MAX_THRDS_REACHED, EAGAIN }, { ERROR_LOCK_FAILED, EACCES }, { ERROR_ALREADY_EXISTS, EEXIST }, { ERROR_DUP_NAME, EEXIST }, { ERROR_FILENAME_EXCED_RANGE, ENOENT }, { ERROR_NESTING_NOT_ALLOWED, EAGAIN }, { ERROR_NOT_ENOUGH_QUOTA, ENOMEM }, { ERROR_NOT_SUPPORTED, ENOSYS }, { ERROR_BAD_UNIT, ENXIO }, { ERROR_NOT_DOS_DISK, ENXIO }, { ERROR_NOT_READY, EBUSY }, { ERROR_BAD_COMMAND, ENOSYS }, { ERROR_CRC, EIO }, { ERROR_BAD_LENGTH, ERANGE }, { ERROR_SEEK, EIO }, { ERROR_SECTOR_NOT_FOUND, EIO }, { ERROR_OUT_OF_PAPER, EIO }, { ERROR_READ_FAULT, EIO }, { ERROR_GEN_FAILURE, EBUSY }, { ERROR_SHARING_VIOLATION, EBUSY }, { ERROR_LOCK_VIOLATION, EBUSY }, { ERROR_WRONG_DISK, EBUSY }, { ERROR_MEDIA_CHECK, EAGAIN }, { ERROR_MEDIA_CHANGED, EAGAIN }, }; #define MIN_EXEC_ERROR ERROR_INVALID_STARTING_CODESEG #define MAX_EXEC_ERROR ERROR_INFLOOP_IN_RELOC_CHAIN #define MIN_EACCES_RANGE ERROR_WRITE_PROTECT #define MAX_EACCES_RANGE ERROR_SHARING_BUFFER_EXCEEDED int win32_errno_from_oserr(DWORD oserrno, int deferrno) { unsigned int i; for (i = 0; i < sizeof(errtable) / sizeof(errtable[0]); ++i) { if (oserrno == errtable[i].oscode) { return errtable[i].errnocode; } } if (oserrno >= MIN_EACCES_RANGE && oserrno <= MAX_EACCES_RANGE) return EACCES; if (oserrno >= MIN_EXEC_ERROR && oserrno <= MAX_EXEC_ERROR) return ENOEXEC; return deferrno; } const char *win32_errstring(DWORD err) { static char buf[2048]; size_t len; buf[0] = 0; FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, 0, buf, sizeof(buf) / sizeof(buf[0]), NULL); len = strlen(buf); while (len && (buf[len - 1] == '\n' || buf[len - 1] == '\r')) buf[--len] = '\0'; return buf; } extern "C" int vasprintf(char **, const char *, va_list); void guialert(const char *fmt, ...) { va_list args; char *buf = NULL; int ret; va_start(args, fmt); vfprintf(stderr, fmt, args); fputs("\n", stderr); va_end(args); va_start(args, fmt); ret = vasprintf(&buf, fmt, args); va_end(args); if (ret >= 0) { MessageBoxA(NULL, buf, "ARAnyM: error", MB_ICONSTOP); free(buf); } } wchar_t *win32_utf8_to_widechar(const char *name) { size_t len; unsigned short ch; unsigned char c; wchar_t *wname, *dst; const char *src; if (name == NULL) return NULL; len = strlen(name); wname = (wchar_t *)malloc((len + 1) * sizeof(*wname)); if (wname == NULL) return NULL; dst = wname; src = name; while (*src) { c = *src++; ch = c; if (ch < 0x80) { } else if ((ch & 0xe0) == 0xc0) { ch = ((ch & 0x1f) << 6) | (src[1] & 0x3f); } else { ch = ((((ch & 0x0f) << 6) | (src[1] & 0x3f)) << 6) | (src[2] & 0x3f); } *dst++ = ch; } *dst = 0; return wname; } char *win32_widechar_to_utf8(const wchar_t *wname) { unsigned short ch; char *name, *dst; const wchar_t *src; size_t len; if (wname == NULL) return NULL; len = wcslen(wname); name = (char *)malloc((len * 3 + 1) * sizeof(*name)); if (name == NULL) return NULL; dst = name; src = wname; while (*src) { ch = *src++; if (ch < 0x80) { *dst++ = ch; } else if (ch < 0x800) { *dst++ = ((ch >> 6) & 0x3f) | 0xc0; *dst++ = (ch & 0x3f) | 0x80; } else { *dst++ = ((ch >> 12) & 0x0f) | 0xe0; *dst++ = ((ch >> 6) & 0x3f) | 0x80; *dst++ = (ch & 0x3f) | 0x80; } } *dst++ = 0; name = (char *)realloc(name, (dst - name) * sizeof(*name)); return name; } #ifdef _WIN32 #undef stat #undef wstat #undef fstat #undef lstat #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64) #ifdef _USE_32BIT_TIME_T #define stat _stati64 #define wstat _wstati64 #define fstat _fstati64 #undef _stati64 #else #define stat _stat64 #define wstat _wstat64 #define fstat _fstat64 #endif #else #ifdef __MINGW64_VERSION_MAJOR #define stat _stat32 #define wstat _wstat32 #define fstat _fstat32 #else #define stat _stat #define wstat _wstat #define fstat _fstat #endif #endif extern "C" int readlink(const char *path, char *buf, size_t bufsiz) { UNUSED(path); UNUSED(buf); UNUSED(bufsiz); errno = ENOSYS; return -1; } extern "C" int symlink(const char *oldpath, const char *newpath) { UNUSED(oldpath); UNUSED(newpath); errno = ENOSYS; return -1; } extern "C" long pathconf(const char *file_name, int name) { UNUSED(file_name); if (name == _PC_LINK_MAX) return 0x7fffffffL; errno = ENOSYS; return -1; } extern "C" int win32_truncate(const char *pathname, off_t len) { int ret, err; wchar_t *wname = win32_utf8_to_widechar(pathname); int fd = _wopen(wname, _O_BINARY | _O_RDWR); free(wname); if (fd == -1) return fd; ret = win32_ftruncate(fd, len); err = errno; _close(fd); errno = err; return ret; } extern "C" int win32_ftruncate(int fd, off_t length) { /* * _chsize_s is not declared in MinGW32 headers, and missing in import libraries * it is also not available in Windows XP msvcrt.dll */ return _chsize(fd, length); } static int orig_stat(const char *filename, struct stat *buf) { wchar_t *wname = win32_utf8_to_widechar(filename); int res = wstat(wname, buf); free(wname); return res; } static int orig_lstat(const char *filename, struct stat *buf) { return orig_stat(filename, buf); } extern "C" int win32_fstat(int fd, struct stat *st) { return fstat(fd, st); } extern "C" int win32_stat(const char *name, struct stat *st) { int result = orig_lstat(name, st); if (result == -1 && errno == ENOENT) { /* Due to mingw's oddities, there are some directories (like c:\) where stat() only succeeds with a trailing slash, and other directories (like c:\windows) where stat() only succeeds without a trailing slash. But we want the two to be synonymous, since chdir() manages either style. Likewise, Mingw also reports ENOENT for names longer than PATH_MAX, when we want ENAMETOOLONG, and for stat("file/"), when we want ENOTDIR. Fortunately, mingw PATH_MAX is small enough for stack allocation. */ char fixed_name[PATH_MAX + 1] = {0}; size_t len = strlen(name); bool check_dir = false; if (PATH_MAX <= len) errno = ENAMETOOLONG; else if (len) { strcpy(fixed_name, name); if (ISSLASH(fixed_name[len - 1])) { check_dir = true; while (len && ISSLASH(fixed_name[len - 1])) fixed_name[--len] = '\0'; if (!len) fixed_name[0] = '/'; } else fixed_name[len++] = '/'; result = orig_stat(fixed_name, st); if (result == 0 && check_dir && !S_ISDIR(st->st_mode)) { result = -1; errno = ENOTDIR; } } } D(bug("stat %s: %d", name, result)); return result; } extern "C" int win32_lstat(const char *file, struct stat *sbuf) { size_t len; int lstat_result = win32_stat(file, sbuf); if (lstat_result == 0) { len = strlen(file); if (ISSLASH(file[len - 1]) && !S_ISDIR(sbuf->st_mode)) { /* At this point, a trailing slash is only permitted on symlink-to-dir; but it should have found information on the directory, not the symlink. Call stat() to get info about the link's referent. Our replacement stat guarantees valid results, even if the symlink is not pointing to a directory. */ if (!S_ISLNK(sbuf->st_mode)) { errno = ENOTDIR; lstat_result = -1; } else { lstat_result = win32_stat(file, sbuf); } } } D(bug("lstat %s: %d", file, lstat_result)); return lstat_result; } extern "C" int win32_futimes(int fd, const struct timeval tv[2]) { struct timespec ts[2]; ts[0].tv_sec = tv[0].tv_sec; ts[0].tv_nsec = tv[0].tv_usec * 1000; ts[1].tv_sec = tv[1].tv_sec; ts[1].tv_nsec = tv[1].tv_usec * 1000; return futimens(fd, ts); } extern "C" int win32_futimens(int fd, const struct timespec ts[2]) { FILETIME ac, mod; ULARGE_INTEGER i; HANDLE h; /* 100ns difference between Windows and UNIX timebase. */ #define FACTOR (0x19db1ded53e8000ULL) #define set_filetime(ft, t) \ i.QuadPart = (t.tv_sec * 1000000000ULL + t.tv_nsec) / 100UL + FACTOR; \ ft.dwLowDateTime = i.u.LowPart; \ ft.dwHighDateTime = i.u.HighPart set_filetime(ac, ts[0]); set_filetime(mod, ts[1]); #undef set_filetime h = (HANDLE)_get_osfhandle(fd); if (!SetFileTime(h, NULL, &ac, &mod)) { errno = win32_errno_from_oserr(GetLastError()); return -1; } return 0; } /** * @author Prof. A Olowofoyeku (The African Chief) * @author Frank Heckenbach * @see http://gd.tuwien.ac.at/gnu/mingw/os-hacks.h */ extern "C" int statfs(const char *path, struct statfs *buf) { wchar_t tmp[MAX_PATH]; wchar_t resolved_path[MAX_PATH]; int retval = 0; struct stat s; DWORD sectors_per_cluster; DWORD bytes_per_sector; DWORD f_bavail; DWORD f_blocks; DWORD fsid; DWORD namelen; errno = 0; wchar_t *wpath = win32_utf8_to_widechar(path); GetFullPathNameW(wpath, MAX_PATH, resolved_path, NULL); free(wpath); /* * Some broken programs (like TeraDesk) seem to call * Dfree() on the filename instead of the directory name */ if (wstat(resolved_path, &s) == 0 && !S_ISDIR(s.st_mode)) { wchar_t *p = wcsrchr(resolved_path, '\\'); if (*p) *p = '\0'; } if (!GetDiskFreeSpaceW(resolved_path, §ors_per_cluster, &bytes_per_sector, &f_bavail, &f_blocks)) { win32_set_errno(ENOENT); retval = -1; } else { buf->f_bavail = f_bavail; buf->f_blocks = f_blocks; buf->f_bsize = sectors_per_cluster * bytes_per_sector; buf->f_files = buf->f_blocks; buf->f_ffree = buf->f_bavail; buf->f_bfree = buf->f_bavail; } if (wcschr(resolved_path, ':') != NULL) resolved_path[3] = '\0'; /* we want only the root */ /* get the FS volume information */ if (GetVolumeInformationW (resolved_path, NULL, 0, &fsid, &namelen, NULL, tmp, MAX_PATH)) { buf->f_fsid = fsid; buf->f_namelen = namelen; if (wcsicmp(L"NTFS", tmp) == 0) { buf->f_type = NTFS_SUPER_MAGIC; } else { buf->f_type = MSDOS_SUPER_MAGIC; } } else { win32_set_errno(ENOENT); retval = -1; } return retval; } extern "C" char *win32_realpath(const char *path, char *resolved) { int path_max = PATH_MAX; wchar_t *tmp = (wchar_t *)malloc(path_max * sizeof(*tmp)); wchar_t *wpath = win32_utf8_to_widechar(path); if (GetFullPathNameW(wpath, path_max, tmp, NULL) == 0) { resolved = NULL; } else { char *utf8 = win32_widechar_to_utf8(tmp); if (resolved == NULL) { resolved = utf8; } else { strcpy(resolved, utf8); free(utf8); } } free(tmp); return resolved; } extern "C" int win32_open(const char *pathname, int flags, ...) { wchar_t *wname; int res; mode_t m = 0; if (flags & O_CREAT) { va_list args; va_start(args, flags); m = va_arg(args, int); va_end(args); } wname = win32_utf8_to_widechar(pathname); res = _wopen(wname, flags, m); free(wname); return res; } extern "C" int win32_unlink(const char *pathname) { wchar_t *wname; int res; wname = win32_utf8_to_widechar(pathname); res = _wunlink(wname); free(wname); return res; } extern "C" int win32_rmdir(const char *pathname) { wchar_t *wname; int res; wname = win32_utf8_to_widechar(pathname); res = _wrmdir(wname); free(wname); return res; } extern "C" int win32_mkdir(const char *pathname, ...) { wchar_t *wname; int res; wname = win32_utf8_to_widechar(pathname); res = _wmkdir(wname); free(wname); return res; } extern "C" int win32_chmod(const char *pathname, int mode) { wchar_t *wname; int res; wname = win32_utf8_to_widechar(pathname); res = _wchmod(wname, mode); free(wname); return res; } extern "C" int win32_rename(const char *oldpath, const char *newpath) { wchar_t *woldpath, *wnewpath; int res; woldpath = win32_utf8_to_widechar(oldpath); wnewpath = win32_utf8_to_widechar(newpath); res = _wrename(woldpath, wnewpath); free(wnewpath); free(woldpath); return res; } extern "C" char *win32_getcwd(char *buf, int size) { wchar_t wbuf[MAX_PATH]; char *name; if (!buf) { errno = EFAULT; return NULL; } if (_wgetcwd(wbuf, MAX_PATH) == NULL) return NULL; name = win32_widechar_to_utf8(wbuf); strncpy(buf, name, size); free(name); return buf; } /* * dirent.c * Borrowed from MinGW, modified to work with utf8 filenames. * Note that the routines work with a _WDIR structure, but return a DIR *. * If you expect you can peek in the DIR structure, you loose. */ #define SUFFIX L"*" #define SLASH L"\\" /* * opendir * * Returns a pointer to a DIR structure appropriately filled in to begin * searching a directory. */ DIR *win32_opendir(const char *szPath) { _WDIR *nd; unsigned int rc; wchar_t szFullPath[MAX_PATH]; errno = 0; if (!szPath) { errno = EFAULT; return (DIR *) 0; } if (szPath[0] == '\0') { errno = ENOTDIR; return (DIR *) 0; } /* Attempt to determine if the given path really is a directory. */ rc = GetFileAttributes(szPath); if (rc == INVALID_FILE_ATTRIBUTES) { /* call GetLastError for more error info */ win32_set_errno(ENOENT); return (DIR *) 0; } if (!(rc & FILE_ATTRIBUTE_DIRECTORY)) { /* Error, entry exists but not a directory. */ errno = ENOTDIR; return (DIR *) 0; } /* Make an absolute pathname. */ wchar_t *wpath = win32_utf8_to_widechar(szPath); GetFullPathNameW(wpath, MAX_PATH, szFullPath, NULL); free(wpath); /* Allocate enough space to store DIR structure and the complete * directory path given. */ nd = (_WDIR *) malloc(sizeof(*nd) + (wcslen(szFullPath) + wcslen(SLASH) + wcslen(SUFFIX) + 1) * sizeof(nd->dd_name[0])); if (!nd) { /* Error, out of memory. */ errno = ENOMEM; return (DIR *) 0; } /* Create the search expression. */ wcscpy(nd->dd_name, szFullPath); /* Add on a slash if the path does not end with one. */ if (nd->dd_name[0] != '\0' && nd->dd_name[wcslen(nd->dd_name) - 1] != '/' && nd->dd_name[wcslen(nd->dd_name) - 1] != '\\') { wcscat(nd->dd_name, SLASH); } /* Add on the search pattern */ wcscat(nd->dd_name, SUFFIX); /* Initialize handle to -1 so that a premature closedir doesn't try * to call _findclose on it. */ nd->dd_handle = -1; /* Initialize the status. */ nd->dd_stat = 0; /* Initialize the dirent structure. ino and reclen are invalid under * Win32, and name simply points at the appropriate part of the * findfirst_t structure. */ nd->dd_dir.d_ino = 0; nd->dd_dir.d_reclen = 0; nd->dd_dir.d_namlen = 0; nd->dd_dir.d_name[0] = 0; return (DIR *)nd; } /* * readdir * * Return a pointer to a dirent structure filled with the information on the * next entry in the directory. */ struct dirent *win32_readdir(DIR *_dirp) { _WDIR *dirp = (_WDIR *)_dirp; errno = 0; /* Check for valid DIR struct. */ if (!dirp) { errno = EFAULT; return (struct dirent *) 0; } if (dirp->dd_stat < 0) { /* We have already returned all files in the directory * (or the structure has an invalid dd_stat). */ return (struct dirent *) 0; } else if (dirp->dd_stat == 0) { /* We haven't started the search yet. */ /* Start the search */ dirp->dd_handle = _wfindfirst(dirp->dd_name, &(dirp->dd_dta)); if (dirp->dd_handle == -1) { /* Whoops! Seems there are no files in that * directory. */ dirp->dd_stat = -1; } else { dirp->dd_stat = 1; } } else { /* Get the next search entry. */ if (_wfindnext(dirp->dd_handle, &(dirp->dd_dta))) { /* We are off the end or otherwise error. _findnext sets errno to ENOENT if no more file Undo this. */ DWORD winerr = GetLastError(); if (winerr == ERROR_NO_MORE_FILES) errno = 0; _findclose(dirp->dd_handle); dirp->dd_handle = -1; dirp->dd_stat = -1; } else { /* Update the status to indicate the correct * number. */ dirp->dd_stat++; } } if (dirp->dd_stat > 0) { /* Successfully got an entry. Everything about the file is * already appropriately filled in except the length of the * file name. */ /* * convert the name from widechar to utf8 and copy it, * This is safe because dirent and _wdirent are identical * except for dd_name, which is the last field */ char *name = win32_widechar_to_utf8(dirp->dd_dta.name); dirp->dd_dir.d_namlen = strlen(name); strcpy((char *)dirp->dd_dir.d_name, name); free(name); return (struct dirent *) &dirp->dd_dir; } return (struct dirent *) 0; } /* * closedir * * Frees up resources allocated by opendir. */ int win32_closedir(DIR *_dirp) { _WDIR *dirp = (_WDIR *)_dirp; int rc; errno = 0; rc = 0; if (!dirp) { errno = EFAULT; return -1; } if (dirp->dd_handle != -1) { rc = _findclose(dirp->dd_handle); } /* Delete the dir structure. */ free(dirp); return rc; } /* * rewinddir * * Return to the beginning of the directory "stream". We simply call findclose * and then reset things like an opendir. */ void win32_rewinddir(DIR *_dirp) { _WDIR *dirp = (_WDIR *)_dirp; errno = 0; if (!dirp) { errno = EFAULT; return; } if (dirp->dd_handle != -1) { _findclose(dirp->dd_handle); } dirp->dd_handle = -1; dirp->dd_stat = 0; } /* * telldir * * Returns the "position" in the "directory stream" which can be used with * seekdir to go back to an old entry. We simply return the value in stat. */ long win32_telldir(DIR *_dirp) { _WDIR *dirp = (_WDIR *)_dirp; errno = 0; if (!dirp) { errno = EFAULT; return -1; } return dirp->dd_stat; } /* * seekdir * * Seek to an entry previously returned by telldir. We rewind the directory * and call readdir repeatedly until either dd_stat is the position number * or -1 (off the end). This is not perfect, in that the directory may * have changed while we weren't looking. But that is probably the case with * any such system. */ void win32_seekdir(DIR *_dirp, long lPos) { _WDIR *dirp = (_WDIR *)_dirp; errno = 0; if (!dirp) { errno = EFAULT; return; } if (lPos < -1) { /* Seeking to an invalid position. */ errno = EINVAL; return; } else if (lPos == -1) { /* Seek past end. */ if (dirp->dd_handle != -1) { _findclose(dirp->dd_handle); } dirp->dd_handle = -1; dirp->dd_stat = -1; } else { /* Rewind and read forward to the appropriate index. */ win32_rewinddir((DIR *)dirp); while ((dirp->dd_stat < lPos) && win32_readdir((DIR *)dirp)) ; } } int win32_execv(const char *path, char *const *argv) { wchar_t *wpath = win32_utf8_to_widechar(path); size_t len; const char *cp; const char *const *p; char *buf; wchar_t *wbuf; int ret; len = 0; p = argv; while ((cp = *p) != NULL) { len += strlen(cp) + 1; if (*cp == '\0' || strchr(cp, ' ') != NULL) len += 2; p++; } buf = (char *)malloc(len); if (buf == NULL) return ENOMEM; p = argv; *buf = '\0'; while ((cp = *p) != NULL) { if (*cp == '\0' || strchr(cp, ' ') != NULL) { strcat(buf, "\""); strcat(buf, cp); strcat(buf, "\""); } else { strcat(buf, cp); } p++; if (*p != NULL) strcat(buf, " "); } wbuf = win32_utf8_to_widechar(buf); free(buf); { STARTUPINFOW StartupInfo; PROCESS_INFORMATION ProcessInformation; StartupInfo.cb = sizeof(StartupInfo); GetStartupInfoW(&StartupInfo); StartupInfo.wShowWindow = SW_SHOWNORMAL; StartupInfo.dwFlags = STARTF_USESHOWWINDOW; if (CreateProcessW( wpath, /* pointer to name of executable module */ wbuf, /* pointer to command line string */ NULL, /* pointer to process security attributes */ NULL, /* pointer to thread security attributes */ FALSE, /* handle inheritance flag */ 0, /* creation flags */ NULL, /* pointer to new environment block */ NULL, /* pointer to current directory name */ & StartupInfo, /* pointer to STARTUPINFO */ & ProcessInformation /* pointer to PROCESS_INFORMATION */ )) { ret = ProcessInformation.dwProcessId; CloseHandle(ProcessInformation.hThread); /* maybe needed later, when we wait for it */ CloseHandle(ProcessInformation.hProcess); } else { ret = -win32_errno_from_oserr(GetLastError(), ENOENT); } } free(wbuf); free(wpath); return ret; } #endif /* _WIN32 */ #endif /* _WIN32 || __CYGWIN__ */ aranym-1.1.0/src/Unix/cygwin/tools_cygwin.cpp0000664000175000017500000000106613454637621017442 0ustar joyjoy#include "sysdeps.h" #ifdef OS_cygwin #include "tools.h" #include #include char *cygwin_path_to_win32(char *path, size_t size) { char winpath[1024]; /* FIXME: this can fail if result exceeds MAX_PATH */ #if defined(CYGWIN_VERSION_CYGWIN_CONV) && CYGWIN_VERSION_DLL_COMBINED >= CYGWIN_VERSION_CYGWIN_CONV cygwin_conv_path(CCP_POSIX_TO_WIN_A | CCP_ABSOLUTE, path, winpath, sizeof(winpath)); #else cygwin_conv_to_full_win32_path(path, winpath); #endif safe_strncpy(path, winpath, size); return path; } #endif /* OS_cygwin */ aranym-1.1.0/src/Unix/cygwin/sigsegv_cygwin.cpp0000664000175000017500000001320613454637621017750 0ustar joyjoy#include "sysdeps.h" #include "cpu_emulation.h" #define DEBUG 0 #include "debug.h" /******************************************************************************/ #if defined(OS_cygwin) || defined(OS_mingw) #undef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN 1 /* avoid including junk */ #include #include #undef WIN32_LEAN_AND_MEAN /* to avoid redefinition in SDL headers */ #ifdef CPU_i386 #define CONTEXT_NAME ContextRecord #define CONTEXT_TYPE CONTEXT #define CONTEXT_ATYPE CONTEXT_TYPE * #define CONTEXT_REGS (&CONTEXT_NAME->Edi) #define REG_RIP 7 #define REG_RAX 5 #define REG_RBX 2 #define REG_RCX 4 #define REG_RDX 3 #define REG_RBP 6 #define REG_RSI 1 #define REG_RDI 0 #define REG_RSP 10 #endif #ifdef CPU_x86_64 #define CONTEXT_NAME ContextRecord #define CONTEXT_TYPE CONTEXT #define CONTEXT_ATYPE CONTEXT_TYPE * #define CONTEXT_REGS (&CONTEXT_NAME->Rax) #define REG_RIP 16 #define REG_RAX 0 #define REG_RBX 3 #define REG_RCX 1 #define REG_RDX 2 #define REG_RBP 5 #define REG_RSI 6 #define REG_RDI 7 #define REG_RSP 4 #define REG_R8 8 #define REG_R9 9 #define REG_R10 10 #define REG_R11 11 #define REG_R12 12 #define REG_R13 13 #define REG_R14 14 #define REG_R15 15 #endif #if defined(CPU_i386) || defined(CPU_x86_64) #define CONTEXT_AEFLAGS (CONTEXT_NAME->EFlags) #define CONTEXT_AEIP CONTEXT_REGS[REG_RIP] #define CONTEXT_AEAX CONTEXT_REGS[REG_RAX] #define CONTEXT_AEBX CONTEXT_REGS[REG_RBX] #define CONTEXT_AECX CONTEXT_REGS[REG_RCX] #define CONTEXT_AEDX CONTEXT_REGS[REG_RDX] #define CONTEXT_AEBP CONTEXT_REGS[REG_RBP] #define CONTEXT_AESI CONTEXT_REGS[REG_RSI] #define CONTEXT_AEDI CONTEXT_REGS[REG_RDI] #endif #include "sigsegv_common_x86.h" static int main_exception_filter_installed = 0; static LONG WINAPI main_exception_filter (EXCEPTION_POINTERS *ExceptionInfo) { if (ExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION) { CONTEXT_ATYPE CONTEXT_NAME = ExceptionInfo->ContextRecord; char *fault_addr = (char *)ExceptionInfo->ExceptionRecord->ExceptionInformation[1]; memptr addr = (memptr)(uintptr)(fault_addr - fixed_memory_offset); #if DEBUG if (addr >= 0xff000000) addr &= 0x00ffffff; if (addr < 0x00f00000 || addr > 0x00ffffff) // YYY bug("\nsegfault: pc=%08x, " REG_RIP_NAME " =%p, addr=%p (0x%08x)", m68k_getpc(), (void *)CONTEXT_AEIP, fault_addr, addr); if (fault_addr < (char *)(fixed_memory_offset - 0x1000000UL) #ifdef CPU_x86_64 || fault_addr >= ((char *)fixed_memory_offset + 0x100000000UL) #endif ) { #ifdef HAVE_DISASM_X86 if (CONTEXT_AEIP != 0) { char buf[256]; x86_disasm((const uint8 *)CONTEXT_AEIP, buf, 1); panicbug("%s", buf); } #endif // raise(SIGBUS); } #endif if (fault_addr == 0 || CONTEXT_AEIP == 0) { real_segmentationfault(); /* not reached (hopefully) */ return EXCEPTION_CONTINUE_SEARCH; } handle_access_fault(CONTEXT_NAME, addr); return EXCEPTION_CONTINUE_EXECUTION; } return EXCEPTION_CONTINUE_SEARCH; } #ifdef OS_cygwin /* In Cygwin programs, SetUnhandledExceptionFilter has no effect because Cygwin installs a global exception handler. We have to dig deep in order to install our main_exception_filter. */ /* Data structures for the current thread's exception handler chain. On the x86 Windows uses register fs, offset 0 to point to the current exception handler; Cygwin mucks with it, so we must do the same... :-/ */ /* Magic taken from winsup/cygwin/include/exceptions.h. */ struct exception_list { struct exception_list *prev; int (*handler) (EXCEPTION_RECORD *, void *, CONTEXT *, void *); }; typedef struct exception_list exception_list; /* Magic taken from winsup/cygwin/exceptions.cc. */ __asm__ (".equ __except_list,0"); extern exception_list *_except_list __asm__ ("%fs:__except_list"); /* For debugging. _except_list is not otherwise accessible from gdb. */ static exception_list * __attribute__((used)) debug_get_except_list () { return _except_list; } /* Cygwin's original exception handler. */ static int (*cygwin_exception_handler) (EXCEPTION_RECORD *, void *, CONTEXT *, void *); /* Our exception handler. */ static int aranym_exception_handler (EXCEPTION_RECORD *exception, void *frame, CONTEXT *context, void *dispatch) { EXCEPTION_POINTERS ExceptionInfo; ExceptionInfo.ExceptionRecord = exception; ExceptionInfo.ContextRecord = context; if (main_exception_filter (&ExceptionInfo) == EXCEPTION_CONTINUE_SEARCH) return cygwin_exception_handler (exception, frame, context, dispatch); else return 0; } static void do_install_main_exception_filter () { /* We cannot insert any handler into the chain, because such handlers must lie on the stack (?). Instead, we have to replace(!) Cygwin's global exception handler. */ cygwin_exception_handler = _except_list->handler; _except_list->handler = aranym_exception_handler; } #endif /* OS_cygwin */ #ifdef OS_mingw static void do_install_main_exception_filter () { SetUnhandledExceptionFilter(main_exception_filter); } #endif static void install_main_exception_filter () { if (!main_exception_filter_installed) { do_install_main_exception_filter (); main_exception_filter_installed = 1; } } static void uninstall_main_exception_filter () { if (main_exception_filter_installed) { #ifdef OS_cygwin _except_list->handler = cygwin_exception_handler; #endif #ifdef OS_mingw SetUnhandledExceptionFilter(NULL); #endif main_exception_filter_installed = 0; } } void uninstall_sigsegv () { uninstall_main_exception_filter(); } void cygwin_mingw_abort() { uninstall_sigsegv(); #undef abort abort(); } void install_sigsegv () { install_main_exception_filter (); } #endif /* OS_cygwin */ aranym-1.1.0/src/Unix/cygwin/parameters_cygwin.cpp0000664000175000017500000000551713454637621020452 0ustar joyjoy/* * parameters_cygwin.cpp - parameters specific for Cygwin build * * Copyright (c) 2001-2010 ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdeps.h" #include "tools.h" #include "parameters.h" #include "host_filesys.h" #include "win32_supp.h" #define DEBUG 0 #include "debug.h" # include # include #define ARADATA "aranym" int get_geometry(const char *dev_path, geo_type geo) { (void)dev_path; (void)geo; return -1; } /* * Get the path to a user home folder. */ char *HostFilesys::getHomeFolder(char *buffer, unsigned int bufsize) { wchar_t szPath[MAX_PATH]; if (SUCCEEDED(::SHGetFolderPathW(NULL, CSIDL_PROFILE, NULL, 0, szPath))) { char *path = win32_widechar_to_utf8(szPath); safe_strncpy(buffer, path, bufsize); free(path); strd2upath(buffer, buffer); } else { buffer[0] = '\0'; // last resort - current folder } return buffer; } /* * Get the path to folder with user-specific files (configuration, NVRAM) */ char *HostFilesys::getConfFolder(char *buffer, unsigned int bufsize) { HostFilesys::getHomeFolder(buffer, bufsize); return addFilename(buffer, ARANYMHOME, bufsize); } char *HostFilesys::getDataFolder(char *buffer, unsigned int bufsize) { // data folder is where the program resides static char *real_program_name; if (real_program_name == NULL) { wchar_t name[4096]; GetModuleFileNameW(GetModuleHandle(NULL), name, sizeof(name) / sizeof(name[0])); real_program_name = win32_widechar_to_utf8(name); } safe_strncpy(buffer, real_program_name, bufsize); // strip out filename and separator from the path char *ptr = strrchr(buffer, '/'); // first try Unix separator char *ptr2 = strrchr(buffer, '\\'); // then DOS sep. if (ptr2 > ptr) ptr = ptr2; if (ptr != NULL) ptr[0] = '\0'; else buffer[0] = '\0'; // last resort - current folder return addFilename(buffer, ARADATA, bufsize); } int HostFilesys::makeDir(char *filename, int perm) { #ifdef OS_mingw (void) perm; return mkdir(filename); #else return mkdir(filename, perm); #endif } aranym-1.1.0/src/Unix/cygwin/ethernet_cygwin.h0000664000175000017500000000127613454637621017570 0ustar joyjoy/** * Ethernet Win32-Tap driver * * Standa (c) 2004-2005 * * GPL */ #ifndef _ETHERNET_CYGWIN_H #define _ETHERNET_CYGWIN_H #include "ethernet.h" #include "windows_ver.h" class WinTapEthernetHandler : public ETHERNETDriver::Handler { OVERLAPPED read_overlapped; OVERLAPPED write_overlapped; HANDLE device_handle; char *device; char *iface; int device_total_in; int device_total_out; public: WinTapEthernetHandler(int eth_idx); virtual ~WinTapEthernetHandler(); virtual bool open(); virtual void close(); virtual int recv(uint8 *buf, int len); virtual int send(const uint8 *buf, int len); }; #define ETHERNET_HANDLER_CLASSNAME WinTapEthernetHandler #endif // _ETHERNET_CYGWIN_H aranym-1.1.0/src/Unix/cygwin/ethernet_cygwin.cpp0000664000175000017500000002465013454637621020124 0ustar joyjoy/* device.c -- Interaction with Windows tap driver in a Cygwin environment Copyright (C) 2002-2004 Ivo Timmermans , 2002-2004 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "cpu_emulation.h" #include "main.h" #include "ethernet_cygwin.h" #define DEBUG 0 #include "debug.h" #include #ifdef HAVE_SYS_SOCKET_H #include #endif #include #define MTU 1500 //============= // TAP IOCTLs //============= #define TAP_CONTROL_CODE(request,method) \ CTL_CODE (FILE_DEVICE_UNKNOWN, request, method, FILE_ANY_ACCESS) #define TAP_IOCTL_GET_MAC TAP_CONTROL_CODE (1, METHOD_BUFFERED) #define TAP_IOCTL_GET_VERSION TAP_CONTROL_CODE (2, METHOD_BUFFERED) #define TAP_IOCTL_GET_MTU TAP_CONTROL_CODE (3, METHOD_BUFFERED) #define TAP_IOCTL_GET_INFO TAP_CONTROL_CODE (4, METHOD_BUFFERED) #define TAP_IOCTL_CONFIG_POINT_TO_POINT TAP_CONTROL_CODE (5, METHOD_BUFFERED) #define TAP_IOCTL_SET_MEDIA_STATUS TAP_CONTROL_CODE (6, METHOD_BUFFERED) #define TAP_IOCTL_CONFIG_DHCP_MASQ TAP_CONTROL_CODE (7, METHOD_BUFFERED) #define TAP_IOCTL_GET_LOG_LINE TAP_CONTROL_CODE (8, METHOD_BUFFERED) #define TAP_IOCTL_CONFIG_DHCP_SET_OPT TAP_CONTROL_CODE (9, METHOD_BUFFERED) //================= // Registry keys //================= #define ADAPTER_KEY "SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}" #define NETWORK_CONNECTIONS_KEY "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}" //====================== // Filesystem prefixes //====================== #define USERMODEDEVICEDIR "\\\\.\\Global\\" #define SYSDEVICEDIR "\\Device\\" #define USERDEVICEDIR "\\DosDevices\\Global\\" #define TAPSUFFIX ".tap" //========================================================= // TAP_COMPONENT_ID -- This string defines the TAP driver // type -- different component IDs can reside in the system // simultaneously. //========================================================= #define TAP_COMPONENT_ID "tap0801" static char *winerror(int err) { static char buf[1024], *newline; if (!FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buf, sizeof(buf), NULL)) { strncpy(buf, "(unable to format errormessage)", sizeof(buf)); } if((newline = strchr(buf, '\r'))) *newline = '\0'; return buf; } WinTapEthernetHandler::WinTapEthernetHandler(int eth_idx) : ETHERNETDriver::Handler(eth_idx) { device_handle = INVALID_HANDLE_VALUE; device = NULL; iface = NULL; device_total_in = 0; device_total_out = 0; } WinTapEthernetHandler::~WinTapEthernetHandler() { close(); } bool is_tap_win32_dev(const char *guid) { HKEY netcard_key; LONG status; DWORD len; int i = 0; status = RegOpenKeyEx( HKEY_LOCAL_MACHINE, ADAPTER_KEY, 0, KEY_READ, &netcard_key); if (status != ERROR_SUCCESS) { D(bug("WinTap: Error opening registry key: %s", ADAPTER_KEY)); return false; } while (true) { char enum_name[256]; char unit_string[256]; HKEY unit_key; char component_id_string[] = "ComponentId"; char component_id[256]; char net_cfg_instance_id_string[] = "NetCfgInstanceId"; char net_cfg_instance_id[256]; DWORD data_type; len = sizeof (enum_name); status = RegEnumKeyEx( netcard_key, i, enum_name, &len, NULL, NULL, NULL, NULL); if (status == ERROR_NO_MORE_ITEMS) break; else if (status != ERROR_SUCCESS) { D(bug("WinTap: Error enumerating registry subkeys of key: %s", ADAPTER_KEY)); return false; } snprintf (unit_string, sizeof(unit_string), "%s\\%s", ADAPTER_KEY, enum_name); status = RegOpenKeyEx( HKEY_LOCAL_MACHINE, unit_string, 0, KEY_READ, &unit_key); if (status != ERROR_SUCCESS) { D(bug("WinTap: Error opening registry key: %s", unit_string)); return false; } else { len = sizeof (component_id); status = RegQueryValueEx( unit_key, component_id_string, NULL, &data_type, (BYTE*)component_id, &len); if (!(status != ERROR_SUCCESS || data_type != REG_SZ)) { len = sizeof (net_cfg_instance_id); status = RegQueryValueEx( unit_key, net_cfg_instance_id_string, NULL, &data_type, (BYTE*)net_cfg_instance_id, &len); if (status == ERROR_SUCCESS && data_type == REG_SZ) { if (!strcmp (net_cfg_instance_id, guid)) { RegCloseKey (unit_key); RegCloseKey (netcard_key); return true; } } } RegCloseKey (unit_key); } ++i; } RegCloseKey (netcard_key); return false; } int get_device_guid( char *name, int name_size, char *actual_name, int actual_name_size) { LONG status; HKEY control_net_key; DWORD len; int i = 0; int stop = 0; status = RegOpenKeyEx( HKEY_LOCAL_MACHINE, NETWORK_CONNECTIONS_KEY, 0, KEY_READ, &control_net_key); if (status != ERROR_SUCCESS) { D(bug("WinTap: Error opening registry key: %s", NETWORK_CONNECTIONS_KEY)); return -1; } while (!stop) { char enum_name[256]; char connection_string[256]; HKEY connection_key; char name_data[256]; DWORD name_type; const char name_string[] = "Name"; len = sizeof (enum_name); status = RegEnumKeyEx( control_net_key, i, enum_name, &len, NULL, NULL, NULL, NULL); if (status == ERROR_NO_MORE_ITEMS) break; else if (status != ERROR_SUCCESS) { D(bug("WinTap: Error enumerating registry subkeys of key: %s", NETWORK_CONNECTIONS_KEY)); return -1; } snprintf(connection_string, sizeof(connection_string), "%s\\%s\\Connection", NETWORK_CONNECTIONS_KEY, enum_name); status = RegOpenKeyEx( HKEY_LOCAL_MACHINE, connection_string, 0, KEY_READ, &connection_key); if (status == ERROR_SUCCESS) { len = sizeof (name_data); status = RegQueryValueEx( connection_key, name_string, NULL, &name_type, (BYTE*)name_data, &len); if (status != ERROR_SUCCESS || name_type != REG_SZ) { D(bug("WinTap: Error opening registry key: %s\\%s\\%s", NETWORK_CONNECTIONS_KEY, connection_string, name_string)); return -1; } else { if (is_tap_win32_dev(enum_name)) { D(bug("WinTap: found TAP device named \"%s\" ~ \"%s\"", name_data, actual_name)); snprintf(name, name_size, "%s", enum_name); if (actual_name) { if (strcmp(actual_name, "") != 0) { if (strcmp(name_data, actual_name) != 0) { RegCloseKey (connection_key); ++i; continue; } } else { snprintf(actual_name, actual_name_size, "%s", name_data); } } stop = 1; } } RegCloseKey (connection_key); } ++i; } RegCloseKey (control_net_key); if (stop == 0) return -1; return 0; } bool WinTapEthernetHandler::open() { char *type = bx_options.ethernet[ethX].type; char device_path[256]; char device_guid[0x100]; char name_buffer[0x100]; close(); if (strcmp(type, "none") == 0 || strlen(type) == 0) { return false; } if ( strlen(bx_options.ethernet[ethX].tunnel) == 0) { D(bug("WinTap(%d): tunnel name undefined", ethX)); return false; } safe_strncpy(name_buffer, bx_options.ethernet[ethX].tunnel, sizeof(name_buffer)); if ( get_device_guid(device_guid, sizeof(device_guid), name_buffer, sizeof(name_buffer)) < 0 ) { panicbug("WinTap: ERROR: Could not find Windows tap device: %s", winerror(GetLastError())); return false; } /* * Open Windows TAP-Win32 adapter */ snprintf (device_path, sizeof(device_path), "%s%s%s", USERMODEDEVICEDIR, device_guid, TAPSUFFIX); device_handle = CreateFile(device_path, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED, 0); if (device_handle == INVALID_HANDLE_VALUE) { panicbug("WinTap: ERROR: Could not open (%s) Windows tap device: %s", device_path, winerror(GetLastError())); return false; } device = strdup(device_path); read_overlapped.Offset = 0; read_overlapped.OffsetHigh = 0; read_overlapped.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); write_overlapped.Offset = 0; write_overlapped.OffsetHigh = 0; write_overlapped.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); D(bug("WinTap: tap device open %s [handle=%p]", device_path, (void*)device_handle)); return true; } void WinTapEthernetHandler::close() { if (device_handle != INVALID_HANDLE_VALUE) { CloseHandle(device_handle); device_handle = INVALID_HANDLE_VALUE; } free(device); device = NULL; } int WinTapEthernetHandler::recv(uint8 *buf, int len) { DWORD lenin; D(bug("WinTap: Read packet from %s", device)); BOOL result = ReadFile(device_handle, buf, len, &lenin, &read_overlapped); if (!result) { DWORD error = GetLastError(); switch (error) { case ERROR_IO_PENDING: WaitForSingleObject(read_overlapped.hEvent, INFINITE); result = GetOverlappedResult( device_handle, &read_overlapped, &lenin, 0 ); if ( result ) break; /* fallthrough */ default: D(bug("WinTap: Error while reading from %s: %s", device, winerror(GetLastError()))); return -1; } } device_total_in += lenin; D(bug("WinTap: Read packet done (len %d)", (int)lenin)); return lenin; } int WinTapEthernetHandler::send(const uint8 *buf, int len) { DWORD lenout; D(bug("WinTap: Writing packet of %d bytes to %s", len, device)); BOOL result = WriteFile (device_handle, buf, len, &lenout, &write_overlapped); if (!result) { DWORD error = GetLastError(); switch (error) { case ERROR_IO_PENDING: WaitForSingleObject(write_overlapped.hEvent, INFINITE); break; default: D(bug("WinTap: Error while writing to %s: %s", device, winerror(GetLastError()))); return -1; } } device_total_out += lenout; D(bug("WinTap: Writing packet done")); return lenout; } aranym-1.1.0/src/Unix/cygwin/clipbrd_cygwin.cpp0000664000175000017500000000513613454637621017723 0ustar joyjoy/* clipbrd_cygwin.cpp - Windows clipbrd interaction. Copyright (C) 2006 Standa Opichal of ARAnyM Team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "sysdeps.h" #if defined(OS_cygwin) || defined(OS_mingw) #include "SDL_compat.h" #include "win32_supp.h" #include "clipbrd.h" #include "host.h" #include "maptab.h" #define DEBUG 0 #include "debug.h" int init_aclip() { return 0; } int filter_aclip(const SDL_Event *event) { (void) event; return 1; } void write_aclip(char *src, size_t len) { HGLOBAL clipdata; unsigned short *dst; unsigned short ch; clipdata = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, sizeof(unsigned short) * (len + 1)); if (!clipdata) return; dst = (unsigned short *)GlobalLock(clipdata); if (!dst) return; size_t count = len; while ( count > 0) { ch = (unsigned char)*src++; if (ch == 0) break; ch = atari_to_utf16[ch]; *dst++ = ch; count--; } *dst = 0; GlobalUnlock(clipdata); if (OpenClipboard(NULL)) { EmptyClipboard(); SetClipboardData(CF_UNICODETEXT, clipdata); CloseClipboard(); } else { GlobalFree(clipdata); D(bug("OpenClipboard failed: %s", win32_errstring(GetLastError()))); } } char * read_aclip( size_t *dstlen) { if (OpenClipboard(NULL)) { HANDLE hData = GetClipboardData( CF_UNICODETEXT ); if (hData) { unsigned short *src = (unsigned short *)GlobalLock( hData ); size_t len = GlobalSize(hData) / sizeof(unsigned short); char *data = new char[len + 1]; char *dst = data; while (len) { unsigned short ch = *src++; if (ch == 0) break; unsigned short c = utf16_to_atari[ch]; if (c >= 0x100) { charset_conv_error(ch); *dst++ = '?'; } else { *dst++ = c; } len--; } *dst = '\0'; *dstlen = dst - data; GlobalUnlock( hData ); CloseClipboard(); return data; } } else { D(bug("OpenClipboard failed: %s", win32_errstring(GetLastError()))); } return NULL; } #endif aranym-1.1.0/src/Unix/cygwin/aranym.rc0000664000175000017500000000202013454637621016022 0ustar joyjoy#ifndef ORC_INVOKED #include #endif #include "version_date.h" #include "version.h" #define str(x) _stringify (x) #define _stringify(x) #x #undef VERSION_STRING #define VERSION_STRING str (VER_MAJOR) "." str (VER_MINOR) "." str (VER_MICRO) VER_STATUS 1 ICON "aranym.ico" 1 VERSIONINFO FILEVERSION VER_MAJOR, VER_MINOR, VER_MICRO, 0 PRODUCTVERSION VER_MAJOR, VER_MINOR, VER_MICRO, 0 FILEOS VOS_DOS_WINDOWS32 FILETYPE VFT_APP { BLOCK "StringFileInfo" { BLOCK "040904E4" { VALUE "CompanyName", "ARAnyM developer team\000\000" VALUE "FileDescription", "Atari Running on Any Machine\000" VALUE "FileVersion", VERSION_STRING "\000" VALUE "InternalName", NAME_STRING "\000" VALUE "LegalCopyright", "Copyright \251 1996-2015 ARAnyM developer team\000" VALUE "OriginalFilename", "ARANYM.EXE\000" VALUE "ProductName", NAME_STRING "\000" VALUE "ProductVersion", VERSION_STRING "\000" } } BLOCK "VarFileInfo" { VALUE "Translation", 0x409, 1252 } } aranym-1.1.0/src/Unix/cygwin/aranym.ico0000664000175000017500000001027613454637621016204 0ustar joyjoy  ( @ UW$' , . . , * + + $ NbTD72 . / 2 :FOJ &[ 0\/ ) + + + + ) ChG+$JL[$(% , (* , + + + , , ) Xn(p ѣ05K'+ + &+ , + + + , + &- ) I*V> = & ) /. * * ) H@p&J#% &y~" p' ) * * & d W=o#,&"! ] Y"R") * : * o%;' * $* ) , +% $% {* IG S(B/2( - )  % ( V \%a0( '. /} " C" C"( ' *! ]* K' [' - , ' +%( $ !" + + + "/) =1; 2+ , * ( y$ b ++ "+ + 232+ 0* ) ! V! k$B+ ) + + . 2 / + ,' #){* s) !! ;@#( "y* * -+ + - 3 % + + '- "+ ^# `= >+ #.+ ) , + / 9* $ . ' !& y7*z ;  T% a * ) + - + 7; 80 * + + #Q ( I' $! m%' "F9VU& ' ) % " y& ' ) x) .  % }$\*^ q!G' .#% }( %.' * #( "p$ Z,# - '+ + * $ #& y + - * ) Vg" /?d"1 ) + 0) ,* * p' 3+ m|N#4, +$ w #, " wu% }* Xɨ<o3מ- 0 & * #+ * .( %s|H$ ' + / 0 /& -Dp<:Cs%ݝ/y"Q=3- % KP%))$7B8% & \1&[ ' Ec]-?4!` %bd U`@!  'oaranym-1.1.0/src/Unix/clipbrd_x11.cpp0000664000175000017500000001655113454637621015537 0ustar joyjoy/* clipbrd_x11.cpp - X11 clipbrd interaction. Copyright (C) 2009 Petr Stehlik of ARAnyM dev team Based on (copied from) SDL_Clipboard.c that should eventually replace our hackish implementation. http://playcontrol.net/ewing/jibberjabber/SDL_ClipboardPrototype.html This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "sysdeps.h" #include #include #include "SDL_compat.h" #include "SDL_syswm.h" #include "clipbrd.h" #include "host.h" #include "maptab.h" #define DEBUG 0 #include "debug.h" #if defined(__unix__) \ || defined (_BSD_SOURCE) || defined (_SYSV_SOURCE) \ || defined (__FreeBSD__) || defined (__MACH__) \ || defined (__OpenBSD__) || defined (__NetBSD__) \ || defined (__bsdi__) || defined (__svr4__) \ || defined (bsdi) || defined (__SVR4) \ && !defined(__QNXNTO__) \ && !defined(OSX_SCRAP) \ && !defined(DONT_USE_X11_SCRAP) #define X11_SCRAP #endif #ifdef X11_SCRAP typedef Atom scrap_type; static Display *SDL_Display; static Window SDL_window; #if SDL_VERSION_ATLEAST(2, 0, 0) #define Lock_Display() #define Unlock_Display() #else static void (*Lock_Display)(void); static void (*Unlock_Display)(void); #endif int init_aclip() { SDL_SysWMinfo info; int retval; retval = -1; SDL_VERSION(&info.version); #if SDL_VERSION_ATLEAST(2, 0, 0) if ( SDL_GetWindowWMInfo(host->video->Window(), &info) ) #else if ( SDL_GetWMInfo(&info) ) #endif { /* Save the information for later use */ if ( info.subsystem == SDL_SYSWM_X11 ) { SDL_Display = info.info.x11.display; SDL_window = info.info.x11.window; #if !SDL_VERSION_ATLEAST(2, 0, 0) Lock_Display = info.info.x11.lock_func; Unlock_Display = info.info.x11.unlock_func; #endif /* Enable the special window hook events */ SDL_EventState(SDL_SYSWMEVENT, SDL_ENABLE); retval = 0; } else { SDL_SetError("SDL is not running on X11"); } } return retval; } void write_aclip(char *src, size_t srclen) { Lock_Display(); unsigned short ch; size_t count = srclen; unsigned char *buf = new unsigned char[srclen * 3 + 1]; unsigned char *dst = buf; while ( count > 0) { ch = (unsigned char)*src++; if (ch == 0) break; ch = atari_to_utf16[ch]; if (ch < 0x80) { *dst++ = ch; } else if (ch < 0x800) { *dst++ = ((ch >> 6) & 0x3f) | 0xc0; *dst++ = (ch & 0x3f) | 0x80; } else { *dst++ = ((ch >> 12) & 0x0f) | 0xe0; *dst++ = ((ch >> 6) & 0x3f) | 0x80; *dst++ = (ch & 0x3f) | 0x80; } count--; } XChangeProperty(SDL_Display, DefaultRootWindow(SDL_Display), XA_CUT_BUFFER0, XA_STRING, 8, PropModeReplace, buf, dst - buf); if (XGetSelectionOwner(SDL_Display, XA_PRIMARY) != SDL_window) { XSetSelectionOwner(SDL_Display, XA_PRIMARY, SDL_window, CurrentTime); if (XGetSelectionOwner(SDL_Display, XA_PRIMARY) == SDL_window) XStoreBytes(SDL_Display, (char *)buf, dst - buf); } delete [] buf; Unlock_Display(); } char * read_aclip(size_t *dstlen) { char *dst = NULL; *dstlen = 0; Window owner; Atom selection; Atom seln_type; int seln_format; unsigned long nbytes; unsigned long overflow; Lock_Display(); owner = XGetSelectionOwner(SDL_Display, XA_PRIMARY); Unlock_Display(); if ( (owner == None) || (owner == SDL_window) ) { owner = DefaultRootWindow(SDL_Display); selection = XA_CUT_BUFFER0; } else { owner = SDL_window; Lock_Display(); selection = XInternAtom(SDL_Display, "SDL_SELECTION", False); XConvertSelection(SDL_Display, XA_PRIMARY, XA_STRING, selection, owner, CurrentTime); Unlock_Display(); } unsigned char *psrc; Lock_Display(); if ( XGetWindowProperty(SDL_Display, owner, selection, 0, INT_MAX/4, False, XA_STRING, &seln_type, &seln_format, &nbytes, &overflow, &psrc) == Success ) { if ( seln_type == XA_STRING ) { char *buf = new char[nbytes + 1]; dst = buf; unsigned short ch; unsigned short c; size_t bytes; const unsigned char *src = psrc; while ( nbytes > 0 ) { c = *src; ch = c; if (ch < 0x80) { bytes = 1; } else if ((ch & 0xe0) == 0xc0 || nbytes < 3) { ch = ((ch & 0x1f) << 6) | (src[1] & 0x3f); bytes = 2; } else { ch = ((((ch & 0x0f) << 6) | (src[1] & 0x3f)) << 6) | (src[2] & 0x3f); bytes = 3; } c = utf16_to_atari[ch]; if (c >= 0x100) { charset_conv_error(ch); *buf++ = '?'; } else { *buf++ = c; } src += bytes; nbytes -= bytes; } *buf = '\0'; *dstlen = buf - dst; } XFree(psrc); } Unlock_Display(); return dst; } /* The system message filter function -- handle clipboard messages */ int filter_aclip(const SDL_Event *event) { /* Post all non-window manager specific events */ if ( !SDL_window || event->type != SDL_SYSWMEVENT ) { return 1; } /* Handle window-manager specific clipboard events */ #if SDL_VERSION_ATLEAST(2, 0, 0) XEvent *xevent = &event->syswm.msg->msg.x11.event; #else XEvent *xevent = &event->syswm.msg->event.xevent; #endif switch (event->type) { /* Copy the selection from XA_CUT_BUFFER0 to the requested property */ case SelectionRequest: { XSelectionRequestEvent *req; XEvent sevent; int seln_format; unsigned long nbytes; unsigned long overflow; unsigned char *seln_data; req = &xevent->xselectionrequest; sevent.xselection.type = SelectionNotify; sevent.xselection.display = req->display; sevent.xselection.selection = req->selection; sevent.xselection.target = None; sevent.xselection.property = None; sevent.xselection.requestor = req->requestor; sevent.xselection.time = req->time; if ( XGetWindowProperty(SDL_Display, DefaultRootWindow(SDL_Display), XA_CUT_BUFFER0, 0, INT_MAX/4, False, req->target, &sevent.xselection.target, &seln_format, &nbytes, &overflow, &seln_data) == Success ) { if ( sevent.xselection.target == req->target ) { if ( sevent.xselection.target == XA_STRING ) { if ( seln_data[nbytes-1] == '\0' ) --nbytes; } XChangeProperty(SDL_Display, req->requestor, req->property, sevent.xselection.target, seln_format, PropModeReplace, seln_data, nbytes); sevent.xselection.property = req->property; } XFree(seln_data); } XSendEvent(SDL_Display, req->requestor, False, 0, &sevent); } break; } /* Post the event for X11 clipboard reading above */ return 1; } #else /* X11_SCRAP */ int init_aclip() { return -1; } void write_aclip(char *src, size_t srclen) { } char * read_aclip(size_t *dstlen) { return NULL; } int filter_aclip(const SDL_Event *event) { return 1; } #endif /* X11_SCRAP */ // don't remove this modeline with intended formatting for vim:ts=4:sw=4: aranym-1.1.0/src/Unix/clipbrd.h0000664000175000017500000000020613454637621014501 0ustar joyjoyint init_aclip(); void write_aclip(char *data, size_t len); char * read_aclip(size_t *len); int filter_aclip(const SDL_Event *event); aranym-1.1.0/src/Unix/beos/0000775000175000017500000000000013454637641013645 5ustar joyjoyaranym-1.1.0/src/Unix/beos/sigsegv_beos_x86.cpp0000664000175000017500000001344313454637621017540 0ustar joyjoy/* * sigsegv_beos_x86.cpp - x86/x86_64 BeOS/Haiku SIGSEGV handler * * Copyright (c) 2018 Thorsten Otto of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * 2013-06-16 : Adapted to 64 Bit Linux - Jens Heitmann * 2014-07-05 : Merged with 64bit version, * lots of fixes - Thorsten Otto * */ #include "sysdeps.h" #include "cpu_emulation.h" #define DEBUG 1 #include "debug.h" #if defined(__BEOS__) || defined(__HAIKU__) #include #ifdef CPU_i386 #define CONTEXT_REGS (&CONTEXT_NAME->uc_mcontext.eip) #define REG_EFL (offsetof(mcontext_t, eflags) / sizeof(CONTEXT_NAME->uc_mcontext.eip)) #define REG_RIP (offsetof(mcontext_t, eip) / sizeof(CONTEXT_NAME->uc_mcontext.eip)) #define REG_RAX (offsetof(mcontext_t, eax) / sizeof(CONTEXT_NAME->uc_mcontext.eip)) #define REG_RBX (offsetof(mcontext_t, ebx) / sizeof(CONTEXT_NAME->uc_mcontext.eip)) #define REG_RCX (offsetof(mcontext_t, ecx) / sizeof(CONTEXT_NAME->uc_mcontext.eip)) #define REG_RDX (offsetof(mcontext_t, edx) / sizeof(CONTEXT_NAME->uc_mcontext.eip)) #define REG_RBP (offsetof(mcontext_t, ebp) / sizeof(CONTEXT_NAME->uc_mcontext.eip)) #define REG_RSI (offsetof(mcontext_t, esi) / sizeof(CONTEXT_NAME->uc_mcontext.eip)) #define REG_RDI (offsetof(mcontext_t, edi) / sizeof(CONTEXT_NAME->uc_mcontext.eip)) #define REG_RSP (offsetof(mcontext_t, esp) / sizeof(CONTEXT_NAME->uc_mcontext.eip)) #endif #if defined(CPU_x86_64) #define CONTEXT_REGS (&CONTEXT_NAME->uc_mcontext.rax) #define REG_EFL (offsetof(mcontext_t, rflags) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_RIP (offsetof(mcontext_t, rip) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_RAX (offsetof(mcontext_t, rax) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_RBX (offsetof(mcontext_t, rbx) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_RCX (offsetof(mcontext_t, rcx) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_RDX (offsetof(mcontext_t, rdx) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_RBP (offsetof(mcontext_t, rbp) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_RSI (offsetof(mcontext_t, rsi) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_RDI (offsetof(mcontext_t, rdi) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_RSP (offsetof(mcontext_t, rsp) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_R8 (offsetof(mcontext_t, r8) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_R9 (offsetof(mcontext_t, r9) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_R10 (offsetof(mcontext_t, r10) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_R11 (offsetof(mcontext_t, r11) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_R12 (offsetof(mcontext_t, r12) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_R13 (offsetof(mcontext_t, r13) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_R14 (offsetof(mcontext_t, r14) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #define REG_R15 (offsetof(mcontext_t, r15) / sizeof(CONTEXT_NAME->uc_mcontext.rax)) #endif #if defined(CPU_i386) || defined(CPU_x86_64) #define CONTEXT_NAME ucp #define CONTEXT_TYPE volatile ucontext_t #define CONTEXT_ATYPE CONTEXT_TYPE * #define CONTEXT_AEFLAGS CONTEXT_REGS[REG_EFL] #define CONTEXT_AEIP CONTEXT_REGS[REG_RIP] #define CONTEXT_AEAX CONTEXT_REGS[REG_RAX] #define CONTEXT_AEBX CONTEXT_REGS[REG_RBX] #define CONTEXT_AECX CONTEXT_REGS[REG_RCX] #define CONTEXT_AEDX CONTEXT_REGS[REG_RDX] #define CONTEXT_AEBP CONTEXT_REGS[REG_RBP] #define CONTEXT_AESI CONTEXT_REGS[REG_RSI] #define CONTEXT_AEDI CONTEXT_REGS[REG_RDI] #endif #include "sigsegv_common_x86.h" static void segfault_vec(int /* sig */, siginfo_t *sip, void *_ucp) { CONTEXT_ATYPE CONTEXT_NAME = (CONTEXT_ATYPE) _ucp; uintptr faultaddr = (uintptr)sip->si_addr; /* CONTEXT_REGS[REG_CR2] */ memptr addr = (memptr)(faultaddr - fixed_memory_offset); #if DEBUG if (addr >= 0xff000000) addr &= 0x00ffffff; if (addr < 0x00f00000 || addr > 0x00ffffff) // YYY bug("\nsegfault: pc=%08x, " REG_RIP_NAME " =%p, addr=%p (0x%08x)", m68k_getpc(), (void *)CONTEXT_AEIP, sip->si_addr, addr); if (faultaddr < (uintptr)(fixed_memory_offset - 0x1000000UL) #ifdef CPU_x86_64 || faultaddr >= ((uintptr)fixed_memory_offset + 0x100000000UL) #endif ) { #ifdef HAVE_DISASM_X86 if (CONTEXT_AEIP != 0) { char buf[256]; x86_disasm((const uint8 *)CONTEXT_AEIP, buf, 1); panicbug("%s", buf); } #endif // raise(SIGBUS); } #endif if (faultaddr == 0 || CONTEXT_AEIP == 0) { real_segmentationfault(); /* not reached (hopefully) */ return; } handle_access_fault(CONTEXT_NAME, addr); } void install_sigsegv() { struct sigaction act; memset(&act, 0, sizeof(act)); sigemptyset(&act.sa_mask); act.sa_sigaction = segfault_vec; act.sa_flags = SA_SIGINFO; sigaction(SIGSEGV, &act, NULL); #if defined(CPU_x86_64) /* XXX is this really neccessary? */ sigaction(SIGILL, &act, NULL); #endif } void uninstall_sigsegv() { signal(SIGSEGV, SIG_DFL); #ifdef HW_SIGSEGV_STATISTICS for (unsigned int i = 0; i < 256; i++) if (x86_opcodes[i] != 0) bug("opcodes: %02x = %lu", i, x86_opcodes[i]); #endif } #endif aranym-1.1.0/src/Unix/beos/clipbrd_beos.cpp0000664000175000017500000000400013454637621016770 0ustar joyjoy/* clipbrd_beos.cpp - BeOS clipbrd interaction. Copyright (C) 2011 Franois Revol This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "sysdeps.h" #if defined(OS_beos) #include #include #include #include #include "SDL_compat.h" #include "clipbrd.h" #define DEBUG 0 #include "debug.h" int init_aclip() { return 0; } int filter_aclip(const SDL_Event *event) { UNUSED(event); return 1; } void write_aclip(char *data, size_t len) { BMessage *clip = NULL; fprintf(stderr, "%s()\n", __FUNCTION__); if (be_clipboard->Lock()) { be_clipboard->Clear(); clip = be_clipboard->Data(); if (clip) { BString text(data, len); text.RemoveAll("\r"); clip->AddData("text/plain", B_MIME_TYPE, text.String(), text.Length()); be_clipboard->Commit(); } be_clipboard->Unlock(); } } char * read_aclip( size_t *len) { const char *text; ssize_t textLen; BMessage *clip = NULL; char *data = NULL; fprintf(stderr, "%s()\n", __FUNCTION__); if (be_clipboard->Lock()) { clip = be_clipboard->Data(); if (clip && clip->FindData("text/plain", B_MIME_TYPE, (const void **)&text, &textLen) == B_OK) { BString t(text, textLen); t.ReplaceAll("\n", "\r\n"); *len = t.Length(); data = new char[*len]; memcpy( data, t.String(), *len); } be_clipboard->Unlock(); } return data; } #endif aranym-1.1.0/src/Unix/beos/cdrom_beos.h0000664000175000017500000000030713454637621016130 0ustar joyjoy#ifndef CDROM_BEOS_H #define CDROM_BEOS_H #include //for off_t off_t GetNumDeviceBlocks(int fd, int block_size); int GetLogicalBlockSize(int fd); int GetDeviceBlockSize(int fd); #endif aranym-1.1.0/src/Unix/beos/cdrom_beos.cpp0000664000175000017500000000220113454637621016456 0ustar joyjoy#include #include #include #include #include "cdrom_beos.h" int GetLogicalBlockSize(int fd) { partition_info p_info; if (ioctl(fd, B_GET_PARTITION_INFO, &p_info) == B_NO_ERROR) { //dprintf("GetLogicalBlockSize: ioctl suceed\n"); return p_info.logical_block_size; } else //dprintf("GetLogicalBlockSize = ioctl returned error\n"); return 0; } int GetDeviceBlockSize(int fd) { struct stat st; device_geometry dg; if (ioctl(fd, B_GET_GEOMETRY, &dg) < 0) { if (fstat(fd, &st) < 0 || S_ISDIR(st.st_mode)) return 0; return 512; /* just assume it's a plain old file or something */ } return dg.bytes_per_sector; } off_t GetNumDeviceBlocks(int fd, int block_size) { struct stat st; device_geometry dg; if (ioctl(fd, B_GET_GEOMETRY, &dg) >= 0) { return (off_t)dg.cylinder_count * (off_t)dg.sectors_per_track * (off_t)dg.head_count; } /* if the ioctl fails, try just stat'ing in case it's a regular file */ if (fstat(fd, &st) < 0) return 0; return st.st_size / block_size; } aranym-1.1.0/src/Unix/beos/aranym.rdef0000664000175000017500000001477713454637621016014 0ustar joyjoy/* * Copyright 2010 François Revol * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ resource(1, "BEOS:APP_FLAGS") (#'APPF') $"09000000"; resource vector_icon { $"6E6369660404015F0500020106033E40000000000000003E4000484000484000" $"0019007FBF0446A8FF0B0135020012023E30000000000000003F70004A100047" $"C00000FFFFFFFF4F5502043C22C3DE22B86F22223C22B86F22C3DE3C56B86F56" $"C3DE56563C56C3DE56B86F0A04342D342F362F362D0A0436313633383338310A" $"0436333635383538330A04383138333A333A310A04383338353A353A330A0434" $"353437363736350A0432353237343734350A0432373239343934370A04343734" $"39363936370A042E332E35303530330A043639363B383B38390A04383738393A" $"393A370A043A353A373C373C350A043C333C353E353E330A043C313C333E333E" $"310A043C353C373E373E350A043A373A393C393C370A043839383B3A3B3A390A" $"04363B363D383D383B0A04343B343D363D363B0A04323B323D343D343B0A0432" $"3D323F343F343D0A04303D303F323F323D0A04303F30413241323F0A042E3F2E" $"413041303F0A042E412E43304330410A042E432E45304530430A042E452E4730" $"4730450A0430473049324932470A0432473249344934470A0434453447364736" $"450A0436433645384538430A04384138433A433A410A04384538473A473A450A" $"0436473649384938470A043A3F3A413C413C3F0A043A3D3A3F3C3F3C3D0A0438" $"3D383F3A3F3A3D0A043C3D3C3F3E3F3E3D0A043A3B3A3D3C3D3C3B0A043C393C" $"3B3E3B3E390A043E393E3B403B40390A043E3B3E3D403D403B0A043E373E3940" $"3940370A044039403B423B42390A043E313E33403340310A043E2F3E31403140" $"2F0A04402F40314231422F0A04402D402F422F422D0A04422D422F442F442D0A" $"04442D442F462F462D0A04462D462F482F482D0A04482F48314A314A2F0A0448" $"3148334A334A310A0446334635483548330A04483548374A374A350A04443544" $"37463746350A0446374639483948370A0442374239443944370A04423B423D44" $"3D443B0A04443B443D463D463B0A04463D463F483F483D0A04443D443F463F46" $"3D0A04423D423F443F443D0A04403D403F423F423D0A043E3D3E3F403F403D0A" $"043E3F3E414041403F0A043E413E43404340410A043E433E45404540430A043E" $"453E47404740450A043C433C453E453E430A043C413C433E433E410A04403F40" $"414241423F0A0442414243444344410A0444414443464346410A044641464348" $"4348410A04484148434A434A410A0442434245444544430A0442454247444744" $"450A0442474249444944470A0444434445464546430A0446454647484748450A" $"0446474649484948470A04484548474A474A45060A0001000240000000000000" $"00003E00004680004A50000A0101001001178300040A020100000A02010002BF" $"89D8000000000000BF89D84B4C4E4B4C4E0A00540102030405060708090A0B0C" $"0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C" $"2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C" $"4D4E4F50515253542021200A03540102030405060708090A0B0C0D0E0F101112" $"131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132" $"333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152" $"535420201F" }; resource(101, "BEOS:L:STD_ICON") #'ICON' array { $"FFFFFFFFFFFFFFFFFFFF1D15AF0704020104D50F661C3FFFFFFFFFFFFFFFFFFF" $"FFFFFFFFFFFFFFFF1AAE0227DE2703293D000028DDB31D3F3FFFFFFFFFFFFFFF" $"FFFFFFFFFFFFFF0F26D5B3B427DE2703283D290029038C3F3F3F3FFFFFFFFFFF" $"FFFFFFFFFF1CD5DC168C0BDD00290227DE022702280129671D1F1D1FFFFFFFFF" $"FFFFFFFF1A258E60133D292928DE2802270428DE28290029671EB3191FFFFFFF" $"FFFFFF1C278D3F090029283D27DE28022703283D27292801016687041C1FFFFF" $"FFFFFFD5B41ED5002901B4DADE2928DE022905601A1A1C18002960B4031FFFFF" $"FFFF0FDC60080028DE2908122829290229D5673F131012111103D466000CFFFF" $"FF1C288DAE002828DE292929D508DE28D61A3F12280000293F0E018DD5011CFF" $"FF0CDDAD00283D2729DE29031B3F11261A3F122929DE29281F0D00D58D000AFF" $"1E01DCD500000C1CDD0000291E1F12011B1127022801091DDD012829AE04011D" $"1529DD012802D50E28B5120EAE0D0A123FD50028010E13AE8E072929B4080113" $"0C02273D27DE022701163F1E29000F1F17AE02280718873D1CAE2929DD09000C" $"07290228DE290C1E28113F1929113F18291614281FD6B51E28290327DED500D6" $"04002803283DAE3FDE292903873F1528181D1D19042929D53D2702DE27DD3304" $"020029DE282908AE01D5AF113F12D5AEB519180C0B11D4003D28DE2802D5293D" $"03290128DE28290005601F1A1804AE1F031612DE1E1F19D5290227DE28052903" $"D5000028DE280103603F120129131F1B401C1B1D1B1B1E1C032829DE28D50003" $"D43D0128DE29081A1F10270328010E3F28121F1EDE282903282928DE03D52906" $"8D270129DE01CE1F123D282901B512AE0A1818AE0A0CAE0F15D50228DD09010B" $"1B8C280028010C1C2801283DD56710291E3F0D011C3F1E181C0A2829D4D70113" $"3F1E8D2929000B1CDD2929033F0A2904603F8E29193F1101292929DD0C29001E" $"FF3F3FD43D00AE1F01000B1C28151629DE1C17291C0BD51A1D0A29AEDE020BFF" $"FF3F3F3FDD3305AE1414111010870B2801B50A273FD6D53F1404D5B402001CFF" $"FFFF60403FD50000183FAE011CB50029280229DE18D5081729038D01000DFFFF" $"FFFFFFD48D400A29292928DE2929280327DE2903273D2700DD11042904FFFFFF" $"FFFFFF1D02D46610270029DE29280227DE290327DE2900D48E0201011C1FFFFF" $"FFFFFFFF1B02018E87D403282929DE2828DE29292905ADB40300021AFEFFFFFF" $"FFFFFFFFFF1C070005AE8ED4D5DE02270227DD08B40CD50000061CFFFFFFFFFF" $"FFFFFFFFFFFFFF0F00000308D5B505D504DDD509052900000F1FFFFFFFFFFFFF" $"FFFFFFFFFFFFFFFF1B0D0200000001020101000000010D1BFFFFFFFFFFFFFFFF" $"FFFFFFFFFFFFFFFFFFFF1E150D0805020204080D151EFFFFFFFFFFFFFFFFFFFF" }; resource(101, "BEOS:M:STD_ICON") #'MICN' array { $"FFFFFFFF19AE073D02D5AD3FFFFFFFFF" $"FFFF1EAEAEB4283D2701298D3FFFFFFF" $"FFFFB4150428032702273D283F8D1DFF" $"FFAE873D281129DE29171515D5AE0DFF" $"1AD4DE022802870567A83D2816D50561" $"0DDD01AE0508160B87020511D401D58F" $"052803B40B1D041A0ED5110F0A27D5DF" $"0102288E03D51B0A1716D50527DE2803" $"0228DE2916120C1A87131E162903DD33" $"D5293D8710280413AE18D6B5D529D503" $"60DE2915290287041ED51E110A29D5AF" $"FF1A29110A870C09B50A871110D5021A" $"FF18863D0FDD0A2902270909DDD60DFF" $"FFFF09AED5DE292802273DD406071FFF" $"FFFFFF0C05D5D5DE04D5D53D0DFFFFFF" $"FFFFFFFF1A0D050302050D1AFFFFFFFF" }; resource(1, "BEOS:APP_SIG") (#'MIMS') "application/x-vnd.ARAnyM"; resource(1, "BEOS:FILE_TYPES") message { "types" = "application/x-atarist-rom", "types" = "application/x-atarist-disk" }; aranym-1.1.0/src/Unix/aratapif.c0000664000175000017500000001115213454637621014646 0ustar joyjoy/* * ARAnyM ethernet networking: ifconfig * * made by extreme stripping of unnecessary code in standard ifconfig * * Standa and Joy of ARAnyM team in 03/2003 (C) 2003-2007 * */ /* * ifconfig This file contains an implementation of the command * that either displays or sets the characteristics of * one or more of the system's networking interfaces. * * Author: Fred N. van Kempen, * and others. Copyright 1993 MicroWalt Corporation * * This program is free software; you can redistribute it * and/or modify it under the terms of the GNU General * Public License as published by the Free Software * Foundation; either version 2 of the License, or (at * your option) any later version. * * Patched to support 'add' and 'del' keywords for INET(4) addresses * by Mrs. Brisby * * {1.34} - 19980630 - Arnaldo Carvalho de Melo * - gettext instead of catgets for i18n * 10/1998 - Andi Kleen. Use interface list primitives. * 20001008 - Bernd Eckenfels, Patch from RH for setting mtu * (default AF was wrong) * 20010404 - Arnaldo Carvalho de Melo, use setlocale */ #ifdef __linux__ #include "linux/libcwrap.h" #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static int skfd; /* Like strncpy but make sure the resulting string is always 0 terminated. */ static char *safe_strncpy(char *dst, const char *src, size_t size) { dst[size-1] = '\0'; return strncpy(dst,src,size-1); } static int set_ip_using(const char *name, unsigned long c, const char *ip, const char *text) { struct ifreq ifr; struct sockaddr_in sin; char host[128]; memset(&ifr, 0, sizeof(ifr)); safe_strncpy(ifr.ifr_name, name, IFNAMSIZ); memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; safe_strncpy(host, ip, (sizeof host)); if (! inet_aton(host, &sin.sin_addr)) { fprintf(stderr, "%s '%s' invalid\n", text, ip); return 1; } if (c == SIOCSIFADDR) memcpy(&ifr.ifr_addr, &sin, sizeof(struct sockaddr)); else if (c == SIOCSIFDSTADDR) memcpy(&ifr.ifr_dstaddr, &sin, sizeof(struct sockaddr)); else if (c == SIOCSIFNETMASK) #ifdef OS_darwin memcpy(&ifr.ifr_addr, &sin, sizeof(struct sockaddr)); #else memcpy(&ifr.ifr_netmask, &sin, sizeof(struct sockaddr)); #endif else return 2; if (ioctl(skfd, c, &ifr) < 0) { perror(text); return -1; } return 0; } int set_mtu(const char *name, int mtu_size) { struct ifreq ifr; memset(&ifr, 0, sizeof(ifr)); safe_strncpy(ifr.ifr_name, name, IFNAMSIZ); ifr.ifr_mtu = mtu_size; if (ioctl(skfd, SIOCSIFMTU, &ifr) < 0) { perror("SIOCSIFMTU"); return -1; } return 0; } /* Set a certain interface flag. */ static int set_flag(const char *name, short flag) { struct ifreq ifr; memset(&ifr, 0, sizeof(ifr)); safe_strncpy(ifr.ifr_name, name, IFNAMSIZ); if (ioctl (skfd, SIOCGIFFLAGS, &ifr) < 0) { perror("SIOCGIFFLAGS"); return -1; } ifr.ifr_flags |= flag; if (ioctl(skfd, SIOCSIFFLAGS, &ifr) < 0) { perror("SIOCSIFFLAGS"); return -2; } return 0; } int main(int argc, char **argv) { const char *device; if (argc != 6) { fprintf(stderr, "Usage: %s tap_device host_IP atari_IP netmask mtu_size\n", argv[0]); return -1; } device = argv[1]; /* Make sure this is a tap device - don't allow messing with other * interfaces. Poor security is better than none. */ if (strncmp(device, "tap", 3)) { fprintf(stderr, "%s designed for tap devices only\n", argv[0]); } /* Create a channel to the NET kernel. */ if ((skfd = socket (AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket"); return 1; } /* Set Host IP */ if (set_ip_using(device, SIOCSIFADDR, argv[2], "host_IP")) { return 2; } /* Set Atari IP */ if (set_ip_using(device, SIOCSIFDSTADDR, argv[3], "atari_IP")) { return 3; } /* Set Netmask */ if (set_ip_using(device, SIOCSIFNETMASK, argv[4], "netmask")) { return 4; } /* Set MTU */ if (set_mtu(device, atoi(argv[5]))) { return 5; } /* Set Point-to-point flag and put it up */ if (set_flag(device, IFF_UP | IFF_RUNNING | IFF_POINTOPOINT)) { return 6; } return 0; } aranym-1.1.0/src/Unix/ansidecl.h0000664000175000017500000001231513454637621014650 0ustar joyjoy/* ANSI and traditional C compatability macros Copyright 1991, 1992, 1996 Free Software Foundation, Inc. This file is part of the GNU C Library. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* ANSI and traditional C compatibility macros ANSI C is assumed if __STDC__ is #defined. Macro ANSI C definition Traditional C definition ----- ---- - ---------- ----------- - ---------- PTR `void *' `char *' LONG_DOUBLE `long double' `double' VOLATILE `volatile' `' SIGNED `signed' `' PTRCONST `void *const' `char *' ANSI_PROTOTYPES 1 not defined CONST is also defined, but is obsolete. Just use const. obsolete -- DEFUN (name, arglist, args) Defines function NAME. ARGLIST lists the arguments, separated by commas and enclosed in parentheses. ARGLIST becomes the argument list in traditional C. ARGS list the arguments with their types. It becomes a prototype in ANSI C, and the type declarations in traditional C. Arguments should be separated with `AND'. For functions with a variable number of arguments, the last thing listed should be `DOTS'. obsolete -- DEFUN_VOID (name) Defines a function NAME, which takes no arguments. obsolete -- EXFUN (name, (prototype)) -- obsolete. Replaced by PARAMS. Do not use; will disappear someday soon. Was used in external function declarations. In ANSI C it is `NAME PROTOTYPE' (so PROTOTYPE should be enclosed in parentheses). In traditional C it is `NAME()'. For a function that takes no arguments, PROTOTYPE should be `(void)'. obsolete -- PROTO (type, name, (prototype) -- obsolete. This one has also been replaced by PARAMS. Do not use. PARAMS ((args)) We could use the EXFUN macro to handle prototype declarations, but the name is misleading and the result is ugly. So we just define a simple macro to handle the parameter lists, as in: static int foo PARAMS ((int, char)); This produces: `static int foo();' or `static int foo (int, char);' EXFUN would have done it like this: static int EXFUN (foo, (int, char)); but the function is not external...and it's hard to visually parse the function name out of the mess. EXFUN should be considered obsolete; new code should be written to use PARAMS. DOTS is also obsolete. Examples: extern int printf PARAMS ((const char *format, ...)); */ #ifndef _ANSIDECL_H #define _ANSIDECL_H 1 /* Every source file includes this file, so they will all get the switch for lint. */ /* LINTLIBRARY */ #if defined (__STDC__) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(_WIN32) /* All known AIX compilers implement these things (but don't always define __STDC__). The RISC/OS MIPS compiler defines these things in SVR4 mode, but does not define __STDC__. */ #define PTR void * #define PTRCONST void *CONST #define LONG_DOUBLE long double #define AND , #define NOARGS void #define VOLATILE volatile #define SIGNED signed #define PARAMS(paramlist) paramlist #define ANSI_PROTOTYPES 1 #define VPARAMS(ARGS) ARGS #define VA_START(va_list,var) va_start(va_list,var) /* These are obsolete. Do not use. */ #define CONST const #define DOTS , ... #define PROTO(type, name, arglist) type name arglist #define EXFUN(name, proto) name proto #define DEFUN(name, arglist, args) name(args) #define DEFUN_VOID(name) name(void) #else /* Not ANSI C. */ #define PTR char * #define PTRCONST PTR #define LONG_DOUBLE double #define AND ; #define NOARGS #ifndef const /* some systems define it in header files for non-ansi mode */ #define const #endif #define VOLATILE #define SIGNED #define PARAMS(paramlist) () #define VPARAMS(ARGS) (va_alist) va_dcl #define VA_START(va_list,var) va_start(va_list) /* These are obsolete. Do not use. */ #define CONST #define DOTS #define PROTO(type, name, arglist) type name () #define EXFUN(name, proto) name() #define DEFUN(name, arglist, args) name arglist args; #define DEFUN_VOID(name) name() #endif /* ANSI C. */ #endif /* ansidecl.h */ aranym-1.1.0/src/Unix/MacOSX/0000775000175000017500000000000013454637641014007 5ustar joyjoyaranym-1.1.0/src/Unix/MacOSX/scripts/0000775000175000017500000000000013454637621015474 5ustar joyjoyaranym-1.1.0/src/Unix/MacOSX/scripts/set_version.sh0000775000175000017500000000236013454637621020374 0ustar joyjoy#!/bin/sh if [ ! -f "$DERIVED_FILE_DIR/aranym_version" ]; then mkdir -p "$DERIVED_FILE_DIR" || exit 1 cd "$DERIVED_FILE_DIR" || exit 1 cat > aranym_version.c < #include "version_date.h" #include "version.h" #define str(x) _stringify (x) #define _stringify(x) #x #define VERSION_STRING NAME_STRING " " str (VER_MAJOR) "." str (VER_MINOR) "." str (VER_MICRO) VER_STATUS int main() { puts(VERSION_STRING); return 0; } EOF gcc -o aranym_version aranym_version.c "-I$SOURCE_DIR/include" "-I$DERIVED_FILES_DIR" || exit 1 fi "$DERIVED_FILE_DIR/aranym_version" || exit 1 VERSION=`"$DERIVED_FILE_DIR/aranym_version" | awk '{FS=" "}{print $2}'` echo "Setting Aranym version in info.plist to $VERSION" PLIST=$TARGET_BUILD_DIR/$INFOPLIST_PATH PLIST_NEW=$PLIST.new PLIST_OLD=$PLIST.old echo "Modifying $PLIST" if [ -f "$PLIST" ]; then cat "$PLIST" | sed "s/\#\#VERSION\#\#/$VERSION/" > "$PLIST_NEW" || exit 1 if [ -f "$PLIST_NEW" ]; then #mv "$PLIST" "$PLIST_OLD" mv "$PLIST_NEW" "$PLIST" else echo "Error: Update failed" echo " PLIST file: $PLIST" echo " VERSION: $VERSION" exit 1 fi else echo "Error: unable to update version description in PLIST: " echo " missing $PLIST" exit 1 fi aranym-1.1.0/src/Unix/MacOSX/scripts/set_rpath.sh0000775000175000017500000000161113454637621020023 0ustar joyjoy# Fix up dynamic libraries cd "$TARGET_BUILD_DIR/$EXECUTABLE_FOLDER_PATH" ls -al test -x "$EXECUTABLE_NAME" || exit 1 # Fixup libmpfr if test -f libmpfr.dylib -a -f libgmp.dylib; then for i in "" .10; do install_name_tool -change /opt/local/lib/libgmp${i}.dylib @executable_path/libgmp.dylib libmpfr.dylib || exit 1 done fi # Fixup executable if test -f libgmp.dylib; then for i in "" .10; do install_name_tool -change /opt/local/lib/libgmp${i}.dylib @executable_path/libgmp.dylib "$EXECUTABLE_NAME" || exit 1 done fi if test -f libmpfr.dylib; then for i in "" .4; do install_name_tool -change /opt/local/lib/libmpfr${i}.dylib @executable_path/libmpfr.dylib "$EXECUTABLE_NAME" || exit 1 done fi if test -f libjpeg.dylib; then for i in "" .7 .8 .9; do install_name_tool -change /opt/local/lib/libjpeg${i}.dylib @executable_path/libjpeg.dylib "$EXECUTABLE_NAME" || exit 1 done fi exit 0 aranym-1.1.0/src/Unix/MacOSX/scripts/gen_machfiles.sh0000775000175000017500000000107713454637621020624 0ustar joyjoy#!/bin/sh ########################## GENERATE MACH FILES FROM SYSTEM DEFS ########################## set -x if [[ $ARCHS =~ (^| )x86_64($| ) && ! -f $BUILD_DIR/mach_excServer.c ]]; then pushd "$BUILD_DIR" DEFS_FILE=/usr/include/mach/mach_exc.defs if [[ ! -f $DEFS_FILE ]]; then # # In XCode 5 SDK is located inside the XCode Application package, and if # the command line tools are not installed. To install command line tools # execute xcode-select --install # DEFS_FILE=$SDK_DIR/usr/include/mach/mach_exc.defs fi mig -arch x86_64 -v $DEFS_FILE popd fi aranym-1.1.0/src/Unix/MacOSX/scripts/gen_diskimage.sh0000775000175000017500000000122313454637621020617 0ustar joyjoy#!/bin/sh VERSION=`"$CONFIGURATION_TEMP_DIR/MacAranym.build/DerivedSources/aranym_version" | awk '{FS=" "}{print $2}'` cd "$TARGET_BUILD_DIR/aranym-xxx-macosx/DOC" echo "Processing text files..." DATE=`date '+%Y\/%m\/%d'` mv COPYING .. cat README.rtf \ | sed "s/(\*VERSION\*)/$VERSION/g" \ | sed "s/(\*DATE\*)/$DATE/g" \ > ../README.rtf rm README.rtf cd "$TARGET_BUILD_DIR/aranym-xxx-macosx" VERSION=`echo "-$VERSION" | sed 's/ //g;s/-//g'` DMGNAME=$TARGET_BUILD_DIR/aranym-$VERSION-macosx-`echo $ARCHS | tr " " "_"`.dmg echo "Building disk image $DMGNAME..." hdiutil create "$DMGNAME" -ov -volname "MacAranym $VERSION" -srcfolder . -format UDZO exit $?aranym-1.1.0/src/Unix/MacOSX/scripts/gen_cpu.sh0000775000175000017500000000436213454637621017460 0ustar joyjoy#!/bin/sh ########################## BUILD CPU EMULATION CORE ########################## mkdir -p "$DERIVED_FILES_DIR" && cd "$DERIVED_FILES_DIR" || exit 1 MISSING_FILE_CNT=`ls cpuemu.cpp cpudefs.cpp cputbl.h cpustbl.cpp cpufunctbl.cpp 2>&1 1>/dev/null | wc -l` rsync -pogt --stats cpuemu*.cpp cpudefs.cpp cputbl.h cpustbl*.cpp cpufunctbl*.cpp config*.h "$BUILD_DIR" > rsync_output.txt 2>/dev/null RET=$? #cat rsync_output.txt TRANSFERRED=`cat rsync_output.txt | grep "transferred:" | awk '{print $5}'` echo "$TRANSFERRED files transferred. RSYNC return code=$RET $MISSING_FILE_CNT file(s) are missing." if [ "$RET" -eq 0 -a "$TRANSFERRED" -eq 0 -a "$MISSING_FILE_CNT" -eq 0 ]; then echo "Sources up-to-date. Skipping generation of CPU emulation core" exit 0 fi # remove old files rm -f "$DERIVED_FILES_DIR"/cpu*.* case $TARGET_NAME in *JIT*) IS_JIT_COMPILE="+" JIT_ADDITIONAL_FILES="compemu.cpp compstbl.cpp comptbl.h" JIT_TARGET=./compemu.cpp echo "JIT CPU generation: $JIT_ADDITIONAL_FILES" ;; *) echo "no JIT CPU generation" IS_JIT_COMPILE="-" JIT_ADDITIONAL_FILES= ;; esac for ARCH in $ARCHS ; do CPU_TYPE=$(eval echo $(echo \$CPU_TYPE_$ARCH)) echo ; echo "Building CPU emulation core for $ARCH" cd "$DERIVED_FILES_DIR" make -f "Makefile_$ARCH" version_date.h || exit 1 cd src/uae_cpu test -d compiler || mkdir compiler make cpuemu.cpp $JIT_TARGET || exit 1 mv cpuemu.cpp "$DERIVED_FILES_DIR/cpuemu_$ARCH.cpp" mv cpudefs.cpp cputbl.h cpustbl*.cpp $JIT_ADDITIONAL_FILES "$DERIVED_FILES_DIR" cat >> "$DERIVED_FILES_DIR/cpuemu.cpp" << EOF #ifdef $CPU_TYPE #include "cpuemu_$ARCH.cpp" #endif EOF mv cpufunctbl.cpp "$DERIVED_FILES_DIR/cpufunctbl_$ARCH.cpp" cat >> "$DERIVED_FILES_DIR/cpufunctbl.cpp" << EOF #ifdef $CPU_TYPE #include "cpufunctbl_$ARCH.cpp" #endif EOF done if [ x$IS_JIT_COMPILE = 'x+' ]; then echo "Building cpustbl_nf.cpp" cat << EOF > "$DERIVED_FILES_DIR/cpustbl_nf.cpp" #define NOFLAGS #include "cpustbl.cpp" EOF echo "Building cpuemu_nf.cpp" cat << EOF > "$DERIVED_FILES_DIR/cpuemu_nf.cpp" #define NOFLAGS #include "cpuemu.cpp" EOF fi cd "$DERIVED_FILES_DIR" rsync -pogt cpuemu*.cpp cpudefs.cpp cputbl.h cpustbl*.cpp cpufunctbl*.cpp $JIT_ADDITIONAL_FILES version_date.h "$BUILD_DIR" || exit 1 exit 0 aranym-1.1.0/src/Unix/MacOSX/scripts/externalScript.sh0000775000175000017500000000140313454637621021040 0ustar joyjoy#! /bin/sh # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # ACTIONS # These are implemented as functions, and just called by the # short MAIN section below buildAction () { echo "Building..." # Now do build steps. } cleanAction () { echo "Cleaning..." # Do your clean steps here. cd "$BUILD_DIR" || exit 1 rm -f cpuemu*.cpp cpudefs.cpp cputbl.h cpustbl*.cpp cpufunctbl*.cpp config*.h compemu.cpp compstbl.cpp comptbl.h } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # MAIN echo "Running with ACTION=${ACTION}" case $ACTION in # NOTE: for some reason, it gets set to "" rather than "build" when # doing a build. "") buildAction ;; "clean") cleanAction ;; esac exit 0 aranym-1.1.0/src/Unix/MacOSX/scripts/configure.sh0000775000175000017500000001257713454637621020030 0ustar joyjoy#!/bin/sh # Check whether DEVELOPER_SDK_DIR is set if [ "$DEVELOPER_SDK_DIR"x = "x" ]; then DEVELOPER_SDK_DIR=/Developer/SDKs echo "Set DEVELOPER_SDK_DIR to $DEVELOPER_SDK_DIR" else echo "DEVELOPER_SDK_DIR is $DEVELOPER_SDK_DIR" fi #################### CONFIGURE SYSTEM ################ # Check if configure script has to be run echo "Checking configure options: $CONFIGURE_OPTIONS" # collect current configuration (CONFIGURE_OPTIONS and COMPILE_DEFS_xyz) OPTIONS_FILE_CUR=$BUILD_DIR/configure_options echo "" > "$OPTIONS_FILE_CUR" for ARCH in $ARCHS ; do COMPILE_DEFS=$(eval echo $(echo \$COMPILE_DEFS_$ARCH)) echo "$COMPILE_DEFS" >> "$OPTIONS_FILE_CUR" done echo "$CONFIGURE_OPTIONS" >> "$OPTIONS_FILE_CUR" echo `ls -lT "$SOURCE_DIR/../configure.ac"` >> "$OPTIONS_FILE_CUR" FILE_CONTENT_CUR=`cat "$OPTIONS_FILE_CUR" 2>/dev/null` # collect content of previous script execution OPTIONS_FILE_OLD=$DERIVED_FILES_DIR/configure_options FILE_CONTENT_OLD=`cat "$OPTIONS_FILE_OLD" 2>/dev/null` if [ \( -f "$OPTIONS_FILE_OLD" \) -a \( "$FILE_CONTENT_OLD" == "$FILE_CONTENT_CUR" \) ]; then echo "Configuration still up-to-date. Skipping reconfiguration." rsync -pogt "$DERIVED_FILES_DIR/"config*.h "$BUILD_DIR/" || ( rm "$OPTIONS_FILE" ; exit 1 ) exit 0 fi echo "Running configure script for the following architectures $ARCHS" # generate a fresh options file OPTIONS_FILE="$OPTIONS_FILE_OLD" echo "" > "$OPTIONS_FILE" # Check if PROJECT_DIR variable is set (Xcode 2.x) if [ -z "$PROJECT_DIR" ]; then echo '$PROJECT_DIR WAS NOT DECLARED. SETTING VARIABLE:' old_dir=$PWD cd "$BUILD_DIR/.." export PROJECT_DIR="$PWD" cd $old_dir echo " \$PROJECT_DIR = $PROJECT_DIR" echo fi # Make sure autoconf can be found ( autoconf --version ) > /dev/null 2>&1 || { echo "autoconf not found: appending /opt search locations to PATH (e.g. if MacPorts is used)" export PATH="$PATH:/opt/local/bin:/opt/local/sbin" } # Make sure other AC macros can be found if [ -d /usr/X11/share/aclocal ]; then export ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I /usr/X11/share/aclocal" fi if [ -d /opt/share/aclocal ]; then export ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I /opt/share/aclocal" fi # Make sure SDL.framework can be found export LDFLAGS="-F$PROJECT_DIR" export DYLD_FRAMEWORK_PATH=$PROJECT_DIR if [ ! -d "$DERIVED_FILES_DIR" ]; then echo "Creating $DERIVED_FILES_DIR" mkdir -p "$DERIVED_FILES_DIR" fi cd "$SOURCE_DIR/.." # Remove old files rm -rf Makefile autom4te.cache aclocal.m4 config.h config.log config.status src/uae_cpu/*.o src/uae_cpu/build68k src/uae_cpu/gencpu src/uae_cpu/gencomp version_date.h 2>/dev/null # Generate configure script if [ -f autogen.sh ]; then export NO_CONFIGURE=yes echo "Calling autogen.sh to prepare configure script" ./autogen.sh || exit 1 fi # # set up links to external dependencies (mpfr, gmp, jpeg) # from either MacPorts or Homebrew # if test ! -d "$SOURCE_ROOT/external"; then mkdir "$SOURCE_ROOT/external" if test -f /opt/local/include/gmp.h; then ln -s /opt/local/include "$SOURCE_ROOT/external/include" ln -s /opt/local/lib "$SOURCE_ROOT/external/lib" elif test -f /usr/local/include/gmp.h; then ln -s /usr/local/include "$SOURCE_ROOT/external/include" ln -s /usr/local/lib "$SOURCE_ROOT/external/lib" else echo "warning: gmp.h not found; install it using MacPorts" >&2 fi fi # Configure system for all build architectures cd "$DERIVED_FILES_DIR" echo "" > "config_tmp.h" for ARCH in $ARCHS ; do CPU_TYPE=$(eval echo $(echo \$CPU_TYPE_$ARCH)) COMPILE_DEFS=$(eval echo $(echo \$COMPILE_DEFS_$ARCH)) echo ; echo "Running configure for architecture $ARCH / $CPU_TYPE" echo "Current COMPILE_DEFS=$COMPILE_DEFS" "$SOURCE_DIR/../configure" $CONFIGURE_OPTIONS --disable-dependency-tracking --disable-maintainer-mode --host=$ARCH-apple-$OSTYPE || exit 1 if [ "$ARCH" = "ppc" -a "$SDK_NAME" = "macosx10.3.9" ]; then # 10.3.9 compatibility: echo "Special handling of PPC 10.3.9 build" cat config.h | sed 's/#define HAVE_SYS_STATVFS_H 1/\/* #undef HAVE_SYS_STATVFS_H *\//' > config_$ARCH.h rm config.h else mv config.h config_$ARCH.h fi cat >> "config_tmp.h" << EOF #ifdef $CPU_TYPE #include "config_$ARCH.h" #endif EOF # Check whether the COMPILE_DEFS flag is still up-to-date DEFS="`sed -n -e 's/DEFS = \(.*\)/ \1/p' -e 's/DEFINES = \(.*\)/ \1/p' Makefile | sed 's/ -D/ /g'`" echo $COMPILE_DEFS | sed 's/ /\ /g' | sort > "defs_xcode.txt" echo $DEFS | sed 's/ /\ /g' | sort > "defs_make.txt" diff -u "defs_xcode.txt" "defs_make.txt" > "defs_delta.txt" if [ `wc -l < "defs_delta.txt"` -gt 0 ]; then echo "error: Invalid COMPILE_DEFS_$ARCH set in the target build setting." echo "Please add the following flags:" grep -e "^+[^+]" "defs_delta.txt" | sed 's/+//' echo echo "Please remove the following flags:" grep -e "^-[^-]" "defs_delta.txt" | sed 's/-//' echo echo "Reminder: the following definitions are active for this target & architecture ($ARCH)" set | grep "COMPILE_DEF" exit 2 fi mv Makefile "Makefile_$ARCH" echo "$COMPILE_DEFS" >> "$OPTIONS_FILE" done mv config_tmp.h config.h echo am--refresh:: > Makefile # Remember configure options for next script execution echo "$CONFIGURE_OPTIONS" >> "$OPTIONS_FILE" # Remember configure.ac timestamp echo `ls -lT "$SOURCE_DIR/../configure.ac"` >> "$OPTIONS_FILE" echo "Configuration generated:" cp config*.h "$BUILD_DIR/" || exit 1 exit 0 aranym-1.1.0/src/Unix/MacOSX/parameters_MacOSX.cpp0000664000175000017500000000257713454637621020041 0ustar joyjoy/* MJ 2001 */ #include #include "sysdeps.h" #include "parameters.h" #include "tools.h" #include "host_filesys.h" #include extern char gAranymFilesDirectory[MAXPATHLEN]; int get_geometry(const char *dev_path, geo_type geo) { return -1; } /* * Get the path to a user home folder. */ char *HostFilesys::getHomeFolder(char *buffer, unsigned int bufsize) { buffer[0] = '\0'; // last resort - current folder // Unix-like systems define HOME variable as the user home folder char *home = getenv("HOME"); if (home) strncpy(buffer, home, bufsize); return buffer; } /* * Get the path to folder with user-specific files (configuration, NVRAM) */ char *HostFilesys::getConfFolder(char *buffer, unsigned int bufsize) { //printf("Conf folder ---------> %s\n", gAranymFilesDirectory); return safe_strncpy(buffer, gAranymFilesDirectory, bufsize); } char *HostFilesys::getDataFolder(char *buffer, unsigned int bufsize) { UInt8 main_bundle_loc[MAXPATHLEN]; CFURLRef url = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle()); CFURLGetFileSystemRepresentation(url, true, main_bundle_loc, sizeof(main_bundle_loc)); CFRelease(url); //printf("Data folder ---------> %s\n", main_bundle_loc); return safe_strncpy(buffer, (char*)main_bundle_loc, bufsize); } int HostFilesys::makeDir(char *filename, int perm) { return mkdir(filename, perm); } aranym-1.1.0/src/Unix/MacOSX/fd_trans.h0000664000175000017500000000060013454637621015752 0ustar joyjoy/* * fd_trans.h * Used to transfer a file descriptor between two Unix processes * * Inspired by Amit Singhs description in the "Mac OS X manual": * http://topiks.org/mac-os-x/0321278542/ch09lev1sec11.html * */ #ifdef __cplusplus extern "C" { #endif int fd_receive(int sockfd, pid_t from); void fd_send(int fd); int fd_setup_server(void); #ifdef __cplusplus } #endif aranym-1.1.0/src/Unix/MacOSX/fd_trans.c0000664000175000017500000001331213454637621015751 0ustar joyjoy/* * fd_trans.c * Used to transfer a file descriptor between two Unix processes * * Inspired by Amit Singhs description in the "Mac OS X manual": * http://topiks.org/mac-os-x/0321278542/ch09lev1sec11.html * */ #include #include #include #include #include #include #include #include #include #include #include "fd_trans.h" #define SOCKET_PATH "/tmp/fd_trans_socket" #define MSG_CONTROL_SIZE CMSG_SPACE(sizeof(int)) static int fd_receive_using_sockfd(int *fd, int sockfd) { ssize_t ret; u_char c; int errcond = 0; struct iovec iovec[1]; struct msghdr msg; struct cmsghdr *cmsghdrp; union { struct cmsghdr cmsghdr; u_char msg_control[MSG_CONTROL_SIZE]; } cmsghdr_msg_control; iovec[0].iov_base = (void*)&c; iovec[0].iov_len = 1; msg.msg_name = NULL; msg.msg_namelen = 0; msg.msg_iov = iovec; msg.msg_iovlen = 1; msg.msg_control = (void*)cmsghdr_msg_control.msg_control; msg.msg_controllen = sizeof(cmsghdr_msg_control.msg_control); msg.msg_flags = 0; if ((ret = recvmsg(sockfd, &msg, 0)) <= 0) { perror("recvmsg"); *fd = -1; return (int)ret; } cmsghdrp = CMSG_FIRSTHDR(&msg); if (cmsghdrp == NULL) { *fd = -1; return (int)ret; } if (cmsghdrp->cmsg_len != CMSG_LEN(sizeof(int))) errcond++; if (cmsghdrp->cmsg_level != SOL_SOCKET) errcond++; if (cmsghdrp->cmsg_type != SCM_RIGHTS) errcond++; if (errcond) { fprintf(stderr, "receiver: %d errors in received message\n", errcond); *fd = -1; } else *fd = *((int *)CMSG_DATA(cmsghdrp)); return (int)ret; } int fd_setup_server(void) { int sockfd; socklen_t len; struct sockaddr_un server_unix_addr; const char *name = SOCKET_PATH; if ((sockfd = socket(AF_LOCAL, SOCK_STREAM, 0)) < 0) { perror("socket"); return sockfd; } unlink(name); bzero((char *)&server_unix_addr, sizeof(server_unix_addr)); server_unix_addr.sun_family = AF_LOCAL; strcpy(server_unix_addr.sun_path, name); len = (socklen_t)strlen(name) + 1; len += sizeof(server_unix_addr.sun_family); if (bind(sockfd, (struct sockaddr *)&server_unix_addr, len) < 0) { close(sockfd); return -1; } return sockfd; } static int fd_send_using_sockfd(int fd, int sockfd) { ssize_t ret; struct iovec iovec[1]; struct msghdr msg; struct cmsghdr *cmsghdrp; union { struct cmsghdr cmsghdr; u_char msg_control[MSG_CONTROL_SIZE]; } cmsghdr_msg_control; iovec[0].iov_base = ""; iovec[0].iov_len = 1; msg.msg_name = NULL; // address (optional) msg.msg_namelen = 0; // size of address msg.msg_iov = iovec; // scatter/gather array msg.msg_iovlen = 1; // members in msg.msg_iov msg.msg_control = (void*)cmsghdr_msg_control.msg_control; // ancillary data // ancillary data buffer length msg.msg_controllen = sizeof(cmsghdr_msg_control.msg_control); msg.msg_flags = 0; // flags on received message // CMSG_FIRSTHDR() returns a pointer to the first cmsghdr structure in // the ancillary data associated with the given msghdr structure cmsghdrp = CMSG_FIRSTHDR(&msg); cmsghdrp->cmsg_len = CMSG_LEN(sizeof(int)); // data byte count cmsghdrp->cmsg_level = SOL_SOCKET; // originating protocol cmsghdrp->cmsg_type = SCM_RIGHTS; // protocol-specified type // CMSG_DATA() returns a pointer to the data array associated with // the cmsghdr structure pointed to by cmsghdrp *((int *)CMSG_DATA(cmsghdrp)) = fd; if ((ret = sendmsg(sockfd, &msg, 0)) < 0) { perror("sendmsg"); return (int)ret; } return 0; } void fd_send(int fd) { int sockfd, len; struct sockaddr_un server_unix_addr; bzero((char *)&server_unix_addr, sizeof(server_unix_addr)); strcpy(server_unix_addr.sun_path, SOCKET_PATH); server_unix_addr.sun_family = AF_LOCAL; len = strlen(SOCKET_PATH) + 1; len += sizeof(server_unix_addr.sun_family); if ((sockfd = socket(AF_LOCAL, SOCK_STREAM, 0)) < 0) { perror("socket"); return; } int i, ret = -1; for(i=1; i<3 && ret<0; i++) { ret = connect(sockfd, (struct sockaddr *)&server_unix_addr, len); if (ret < 0) { perror("sender: connect"); sleep(1); } } if (ret >= 0) { // Send file descriptor message if ((fd_send_using_sockfd(fd, sockfd) < 0)) fprintf(stderr, "sender: failed to send file descriptor (fd = %d)\n", fd); } else { perror("sender: connect"); } sleep(1); close(sockfd); } int fd_receive(int sockfd, pid_t from) { int fd = -1; int status; fd_set readfds; struct timeval timeout; // Wait until a connection is established listen(sockfd, 0); for (;;) { struct sockaddr_un cl_un; socklen_t cl_un_len = sizeof(cl_un); FD_ZERO(&readfds); FD_SET(sockfd, &readfds); timeout.tv_sec = 1; timeout.tv_usec = 0; if (select(sockfd + 1, &readfds, NULL, NULL, &timeout) >= 0 && FD_ISSET(sockfd, &readfds)) { int csockfd = accept(sockfd, (struct sockaddr *)&cl_un, &cl_un_len); if (csockfd < 0) { perror("accept"); } else { int ret = fd_receive_using_sockfd(&fd, csockfd); if (ret < 0) fprintf(stderr, "receiver: failed to receive file descriptor\n"); break; } } if (waitpid(from, &status, WNOHANG) > 0 && WIFEXITED(status)) { fprintf(stderr, "accept: child process died\n"); break; } } return fd; } aranym-1.1.0/src/Unix/MacOSX/ethernet_macosx.h0000664000175000017500000000315513454637621017352 0ustar joyjoy/* * ethernet_macosx.h - Mac OS X Ethernet support (via Berkley Packet Filter device) * * Copyright (c) 2007 ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #ifndef _ETHERNET_MACOSX_H #define _ETHERNET_MACOSX_H #include #include "ethernet.h" class BPFEthernetHandler : public ETHERNETDriver::Handler { bool debug; int fd; int buf_len; struct bpf_hdr* bpf_buf; // variables used for looping over multiple packets int read_len; struct bpf_hdr* bpf_packet; void reset_read_pos(); public: BPFEthernetHandler(int eth_idx); virtual ~BPFEthernetHandler(); virtual bool open(); virtual void close(); virtual int recv(uint8 *buf, int len); virtual int send(const uint8 *buf, int len); }; #define ETHERNET_HANDLER_CLASSNAME BPFEthernetHandler #endif // _ETHERNET_MACOSX_H aranym-1.1.0/src/Unix/MacOSX/ethernet_macosx.cpp0000664000175000017500000004037213454637621017707 0ustar joyjoy/* * ethernet_macosx.cpp - Mac OS X Ethernet support (via Berkley Packet Filter device) * * Copyright (c) 2007 ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #include "cpu_emulation.h" #if defined(OS_darwin) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "main.h" #include "ethernet_macosx.h" #define DEBUG 0 #include "debug.h" #include "fd_trans.h" #define ETH_HELPER "bpf_helper" // BPF filter program to ensure only ethernet packets are processed which are for configured MAC static struct bpf_insn bpf_filter_mac_insn[] = { BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 0), // ld P[0:4] BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0xAAAAAAAA, 0, 3), // jeq destMAC, CONT, NOK BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 4), // CONT:ld P[4:2] BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0xAAAA, 0, 1), // jeq destMAC, OK, NOK BPF_STMT(BPF_RET+BPF_K, (u_int)-1), // OK: ret -1 BPF_STMT(BPF_RET+BPF_K, 0), // NOK: ret 0 }; static struct bpf_program bpf_filter_mac = {sizeof(bpf_filter_mac_insn)/sizeof(struct bpf_insn), &bpf_filter_mac_insn[0]}; // BPF filter program to process multicast ethernet and configured MAC address packets static struct bpf_insn bpf_filter_mcast_insn[] = { BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 0), // ld P[0:4] BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0xAAAAAAAA, 0, 2), // jeq destMAC, CONT, NOK1 BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 4), // CONT:ld P[4:2] BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0xAAAA, 2, 0), // jeq destMAC, OK, NOK1 BPF_STMT(BPF_LD+BPF_B+BPF_ABS, 0), // NOK1:ld P[0:1] BPF_JUMP(BPF_JMP|BPF_JSET|BPF_K, 0x01, 0, 1), // if (A & 1) OK else NOK2 BPF_STMT(BPF_RET+BPF_K, (u_int)-1), // OK: ret -1 BPF_STMT(BPF_RET+BPF_K, 0), // NOK2:ret 0 }; static struct bpf_program bpf_filter_mcast = {sizeof(bpf_filter_mcast_insn)/sizeof(struct bpf_insn), &bpf_filter_mcast_insn[0]}; // BPF filter program to process ethernet packets if the configured IP address matches static struct bpf_insn bpf_filter_ip_insn[] = { // Check ethernet protocol (IP and ARP supported) BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12), // ld P[12:2] BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x0800, 3, 0), // jeq IP_Type, CONT_IP, CONT BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x0806, 0, 5), // CONT: jeq IP_Type, CONT_ARP, NOK // Load IP address from offset 38 BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 38), // CONT_ARP:ld P[38:4] BPF_JUMP(BPF_JMP+BPF_JA, 1, 1, 1), // jmp COMPARE // Load IP address from offset 30 BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 30), // CONT_IP: ld P[30:4] // Compare value with expected dest IP address BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0xAAAAAAAA, 0, 1), // COMPARE: jeq destIP, OK, NOK BPF_STMT(BPF_RET+BPF_K, (u_int)-1), // OK: ret -1 BPF_STMT(BPF_RET+BPF_K, 0), // NOK: ret 0 }; static struct bpf_program bpf_filter_ip = {sizeof(bpf_filter_ip_insn)/sizeof(struct bpf_insn), &bpf_filter_ip_insn[0]}; // Ethernet frame struct ethernet_frame { unsigned char dst_addr[ 6 ]; unsigned char src_addr[ 6 ]; unsigned char type[2]; unsigned char payload; }; // ARP packet structure struct arp_packet { unsigned char hardware_type[2]; unsigned char proto_type[2]; unsigned char hardware_addr_length; unsigned char proto_addr_length; unsigned char opcode[2]; unsigned char src_mac[6]; unsigned char src_ip[4]; unsigned char dst_mac[6]; unsigned char dst_ip[4]; }; // IP packet structure struct ip_packet { unsigned char version_hdr_len; unsigned char services; unsigned char tot_len[2]; unsigned char ident[2]; unsigned char flags_frag_offset[2]; unsigned char ttl; unsigned char proto_type; unsigned char hdr_chksum[2]; unsigned char src_ip[4]; unsigned char dst_ip[4]; unsigned char data; }; static void dump_frame(const char *prefix, struct ethernet_frame *frame) { unsigned short int frame_type = (frame->type[0]<<8)|frame->type[1]; bug(" %s: %02x:%02x:%02x:%02x:%02x:%02x > %02x:%02x:%02x:%02x:%02x:%02x (Type %04x)", prefix, frame->src_addr[0], frame->src_addr[1], frame->src_addr[2], frame->src_addr[3], frame->src_addr[4], frame->src_addr[5], frame->dst_addr[0], frame->dst_addr[1], frame->dst_addr[2], frame->dst_addr[3], frame->dst_addr[4], frame->dst_addr[5], frame_type); if (frame_type == 0x0806) { struct arp_packet* arp = (struct arp_packet*) &frame->payload; bug(" %s: ARP packet %d.%d.%d.%d > %d.%d.%d.%d (Type %04x)", prefix, arp->src_ip[0], arp->src_ip[1], arp->src_ip[2], arp->src_ip[3], arp->dst_ip[0], arp->dst_ip[1], arp->dst_ip[2], arp->dst_ip[3], (arp->proto_type[0]<<8)|arp->proto_type[1]); } else if (frame_type == 0x0800) { struct ip_packet* ip = (struct ip_packet*) &frame->payload; int tot_len = (ip->tot_len[0]<<8) + ip->tot_len[1]; bug(" %s: IP packet %d.%d.%d.%d > %d.%d.%d.%d (Type %04x Total %02x%02x = %d, Payload=%d)", prefix, ip->src_ip[0], ip->src_ip[1], ip->src_ip[2], ip->src_ip[3], ip->dst_ip[0], ip->dst_ip[1], ip->dst_ip[2], ip->dst_ip[3], ip->proto_type, ip->tot_len[0], ip->tot_len[1], tot_len, tot_len - (int)sizeof(ip_packet)+1); // for (unsigned char *ptr=&ip->data; ptr<(unsigned char*)&ip->data+tot_len; ptr++) // bug(">%*s\n", tot_len-(sizeof(ip_packet)-1), &ip->data); } } static void dump_bpf_buf(const char *prefix, bpf_hdr* bpf_buf) { if (bpf_buf->bh_datalen > 0) { bug(" %s: %d bytes in buf:", prefix, bpf_buf->bh_datalen); dump_frame(prefix, (struct ethernet_frame*)((char*)bpf_buf + bpf_buf->bh_hdrlen)); } } void BPFEthernetHandler::reset_read_pos() { read_len = 0; bpf_packet = NULL; } bool BPFEthernetHandler::open() { // int nonblock = 1; char *type = bx_options.ethernet[ethX].type; char *dev_name = bx_options.ethernet[ethX].tunnel; close(); if (strcmp(type, "none") == 0 || strlen(type) == 0) { return false; } debug = (strstr(type, "debug") != NULL); if (debug || DEBUG) { D(bug("BPF(%d): debug mode=%d", ethX, debug)); } if (debug) { D(bug("BPF(%d): open() type=%s", ethX, type)); } if (strstr(type, "bridge") == NULL ) { panicbug("BPF(%d): unsupported type '%s'", ethX, type); return false; } int sockfd; if ((sockfd = fd_setup_server()) < 0) { fprintf(stderr, "receiver: failed to create socket.\n"); return false; } /****************************************************** Fork child process to get an open BPF file descriptor ******************************************************/ char exe_path[2048]; CFURLRef url = CFBundleCopyExecutableURL(CFBundleGetMainBundle()); CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url); CFURLGetFileSystemRepresentation(url2, true, (UInt8 *)exe_path, sizeof(exe_path)); CFRelease(url2); CFRelease(url); addFilename(exe_path, ETH_HELPER, sizeof(exe_path)); if (debug) { D(bug("BPF(%d): starting helper from <%s>", ethX, exe_path)); } pid_t pid = fork(); if (pid < 0) { panicbug("BPF(%d): ERROR: fork() failed. Ethernet disabled!", ethX); ::close(sockfd); return false; } else if (pid == 0) { if (debug) { D(bug("BPF(%d): "ETH_HELPER" child running", ethX)); } int result = execl(exe_path, exe_path, NULL); _exit(result); } if (debug) { D(bug("BPF(%d): waiting for "ETH_HELPER" (PID %d) to send file descriptor", ethX, pid)); } fd = fd_receive(sockfd, pid); ::close(sockfd); if (fd < 0) { panicbug("BPF(%d): failed receiving file descriptor from "ETH_HELPER".", ethX); return false; } if (debug) { D(bug("BPF(%d): got file descriptor %d", ethX, fd)); } /****************************************************** Configure BPF device ******************************************************/ // associate with specified interface struct ifreq ifr; memset(&ifr, 0, sizeof(ifr)); safe_strncpy(ifr.ifr_name, dev_name, IFNAMSIZ); if (debug) { D(bug("BPF(%d): connecting with device %s", ethX, dev_name)); } if(ioctl(fd, BIOCSETIF, &ifr) > 0) { panicbug("BPF(%d): Failed associating to %s: %s", ethX, dev_name, strerror(errno)); close(); return false; } // activate immediate mode int immediate = 1; if (debug) { D(bug("BPF(%d): enabling immediate mode", ethX)); } if(ioctl(fd, BIOCIMMEDIATE, &immediate) == -1) { panicbug("BPF(%d): Unable to set immediate mode: %s", ethX, strerror(errno)); close(); return false; } // request buffer length if(ioctl(fd, BIOCGBLEN, &buf_len) == -1) { panicbug("BPF(%d): Unable to get buffer length: %s", ethX, strerror(errno)); close(); return false; } if (debug) { D(bug("BPF(%d): buf_len=%d", ethX, buf_len)); } bpf_buf = (struct bpf_hdr*) malloc(buf_len); // activate promiscuous mode if (debug) { D(bug("BPF(%d): enabling promiscuous mode", ethX)); } int promiscuous = 1; if(ioctl(fd, BIOCPROMISC, &promiscuous) == -1) { panicbug("BPF(%d): Unable to set promiscuous mode: %s", ethX, strerror(errno)); #if 0 close(); return false; #endif } // activate "header complete" mode if (debug) { D(bug("BPF(%d): enabling header complete mode", ethX)); } int complete = 1; if(ioctl(fd, BIOCGHDRCMPLT, &complete) == -1) { panicbug("BPF(%d): Unable to set header complete mode: %s", ethX, strerror(errno)); close(); return false; } // disable "see sent" mode if (debug) { D(bug("BPF(%d): disabling see sent mode", ethX)); } int seesent = 1; if(ioctl(fd, BIOCSSEESENT, &seesent) == -1) { panicbug("BPF(%d): Unable to disable see sent mode: %s", ethX, strerror(errno)); close(); return false; } if (strstr(type, "nofilter") == NULL) { // convert and validate MAC address from configuration // default MAC Address is just made up uint8 mac_addr[6] = {'\0','A','E','T','H', '0'+ethX }; // convert user-defined MAC Address from string to 6 bytes array char *mac_text = bx_options.ethernet[ethX].mac_addr; bool format_OK = false; if (strlen(mac_text) == 2*6+5 && (mac_text[2] == ':' || mac_text[2] == '-')) { mac_text[2] = mac_text[5] = mac_text[8] = mac_text[11] = mac_text[14] = ':'; int md[6] = {0, 0, 0, 0, 0, 0}; int matched = sscanf(mac_text, "%02x:%02x:%02x:%02x:%02x:%02x", &md[0], &md[1], &md[2], &md[3], &md[4], &md[5]); if (matched == 6) { for(int i=0; i<6; i++) mac_addr[i] = md[i]; format_OK = true; } } if (!format_OK) { panicbug("BPF(%d): Invalid MAC address: %s", ethX, mac_text); close(); return false; } // convert and validate specified IP address uint8 ip_addr[4]; if (!inet_pton(AF_INET, bx_options.ethernet[ethX].ip_atari, ip_addr)) { panicbug("BPF(%d): Invalid IP address specified: %s", ethX, bx_options.ethernet[ethX].ip_atari); close(); return false; } // modify filter program to use specified IP address if (debug) { D(bug("BPF(%d): setting filter program for MAC address %s", ethX, mac_text)); } // Select filter program according to chosen options struct bpf_program *filter; if (strstr(type, "mcast")) { filter = &bpf_filter_mcast; // patch filter instructions to detect valid MAC address filter->bf_insns[1].k = (mac_addr[0]<<24) | (mac_addr[1]<<16) | (mac_addr[2]<<8) | mac_addr[3]; filter->bf_insns[3].k = (mac_addr[4]<<8) | mac_addr[5]; } else if (strstr(type, "ip")) { filter = &bpf_filter_ip; // patch filter instructions to detect valid IP address filter->bf_insns[6].k = (ip_addr[0]<<24) | (ip_addr[1]<<16) | (ip_addr[2]<<8) | ip_addr[3]; } else { filter = &bpf_filter_mac; // patch filter instructions to detect valid MAC address filter->bf_insns[1].k = (mac_addr[0]<<24) | (mac_addr[1]<<16) | (mac_addr[2]<<8) | mac_addr[3]; filter->bf_insns[3].k = (mac_addr[4]<<8) | mac_addr[5]; } // Enable filter program if(ioctl(fd, BIOCSETF, filter) == -1) { panicbug("BPF(%d): Unable to load filter program: %s", ethX, strerror(errno)); close(); return false; } if (debug) { D(bug("BPF(%d): filter program load", ethX)); } } else { if (debug) { D(bug("BPF(%d): filter program skipped", ethX)); } } // Reset bpf buffer read position (for handling multi packet) reset_read_pos(); return true; } void BPFEthernetHandler::close() { if (debug) { D(bug("BPF(%d): close", ethX)); } reset_read_pos(); if (fd > 0) { ::close(fd); fd = -1; } free(bpf_buf); bpf_buf = NULL; debug = false; } int BPFEthernetHandler::recv(uint8 *buf, int len) { if (debug) { D(bug("BPF(%d): recv(len=%d)", ethX, len)); } // No more cached packet in memory? if (bpf_packet == NULL) { // Read a packet from the ethernet device, timeout after 2s // Initialize the file descriptor set. fd_set set; struct timeval timeout; FD_ZERO (&set); FD_SET (fd, &set); // Initialize the timeout data structure. timeout.tv_sec = 2; timeout.tv_usec = 0; // select returns 0 if timeout, 1 if input available, -1 if error. if (select(FD_SETSIZE, &set, NULL, NULL, &timeout) == 1) { // Read from BPF device read_len = read(fd, bpf_buf, buf_len); if (debug) { D(bug("BPF(%d): %d bytes read => %d data bytes", ethX, read_len, bpf_buf->bh_datalen)); } if (read_len > 0) { bpf_packet = bpf_buf; if (BPF_WORDALIGN(bpf_buf->bh_hdrlen + bpf_buf->bh_caplen) < read_len) { if (debug) { D(bug("BPF(%d): More than one packet received by BPF\n" " read_len = %d\n" " bh_hdrlen=%d\n" " bh_datalen=%d\n" " bh_caplen=%d\n" ,ethX, read_len, bpf_buf->bh_hdrlen, bpf_buf->bh_datalen, bpf_buf->bh_caplen)); } } } } } else { if (debug) { D(bug("BPF(%d): using cached %d data bytes from previous read", ethX, read_len)); } } char *ptr = (char *)bpf_packet; if (bpf_packet && (ptr < ((char *)bpf_buf + read_len))) { char *frame_start = ptr + bpf_packet->bh_hdrlen; int frame_len = bpf_packet->bh_caplen; ptr += BPF_WORDALIGN(bpf_packet->bh_hdrlen + bpf_packet->bh_caplen); // Copy valid frame data if (frame_len <= len) { if (debug) { D(bug("BPF(%d): frame length %d bytes", ethX, frame_len)); dump_bpf_buf("recv", bpf_packet); } memcpy(buf, frame_start, frame_len); } else { bug("BPF(%d): Host side received %d bytes of data but only %d bytes expected by guest.\n" "There are probably multiple packets in the received %d bytes.\n" "Packet discarded!", ethX, frame_len, len, read_len); bug("BPF(%d): read_len = %d\n" " bh_hdrlen=%d\n" " bh_datalen=%d\n" " bh_caplen=%d\n" ,ethX, read_len, bpf_packet->bh_hdrlen, bpf_packet->bh_datalen, bpf_packet->bh_caplen); frame_len = 0; } if (ptr < ((char *)bpf_buf + read_len)) bpf_packet = (struct bpf_hdr*)ptr; else bpf_packet = NULL; return frame_len; } return 0; } int BPFEthernetHandler::send(const uint8 *buf, int len) { if (debug) { D(bug("BPF(%d): send(len=%d)", ethX, len)); } int res = -1; if (len > 0) { if (debug) { D(bug("BPF(%d): send(len=%d)", ethX, len)); dump_frame("send", (struct ethernet_frame*) buf); } res = write(fd, buf, len); if (res < 0) { if (debug) { D(bug("BPF(%d): WARNING: Couldn't transmit packet", ethX)); } } } return res; } BPFEthernetHandler::BPFEthernetHandler(int eth_idx) : Handler(eth_idx), debug(false), fd(-1), buf_len(0), bpf_buf(NULL), read_len(0), bpf_packet(NULL) { } BPFEthernetHandler::~BPFEthernetHandler() { close(); } #endif /* OS_darwin? */ aranym-1.1.0/src/Unix/MacOSX/bpf_helper.c0000664000175000017500000001156013454637621016262 0ustar joyjoy/* * bpf_helper.c - ethernet driver support tool (enabling Berkley Packet Filter access) * * Copyright (c) 2009 ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #include #include #include #include #include #include #include #include "fd_trans.h" #ifdef OS_darwin #include #include static int fix_permissions(const char* filename) { printf("fix_permissions(%s)\n", filename); OSStatus err_status = noErr; AuthorizationFlags auth_flags = kAuthorizationFlagDefaults; AuthorizationRef auth_ref; err_status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, auth_flags, &auth_ref); if (err_status != errAuthorizationSuccess) return 0; printf("Getting authorizsation for root execution...\n"); AuthorizationItem auth_items = { kAuthorizationRightExecute, 0, NULL, 0 }; AuthorizationRights auth_rights = { 1, &auth_items }; auth_flags = kAuthorizationFlagDefaults | kAuthorizationFlagInteractionAllowed | kAuthorizationFlagPreAuthorize | kAuthorizationFlagExtendRights; err_status = AuthorizationCopyRights(auth_ref, &auth_rights, NULL, auth_flags, NULL); if (err_status == errAuthorizationSuccess) { char fn_copy[strlen(filename)+1]; strcpy(fn_copy, filename); char *exec_args[3] = {"root:admin", fn_copy, NULL}; printf("Executing chown %s %s\n", exec_args[0], exec_args[1]); err_status = AuthorizationExecuteWithPrivileges(auth_ref, "/usr/sbin/chown", kAuthorizationFlagDefaults, exec_args, NULL); if (err_status != errAuthorizationSuccess) { fprintf(stderr, "Error while executing chown: %d\n", (int)err_status); } else { int child; if (wait(&child) < 0 || !WIFEXITED(child) || WEXITSTATUS(child) != 0) { fprintf(stderr, "Executing chown failed: %d\n", (int)WEXITSTATUS(child)); err_status = errAuthorizationToolExecuteFailure; } else { exec_args[0] = "ug+s,g+x"; exec_args[1] = fn_copy; exec_args[2] = NULL; printf("Executing chmod %s %s\n", exec_args[0], exec_args[1]); err_status = AuthorizationExecuteWithPrivileges(auth_ref, "/bin/chmod", kAuthorizationFlagDefaults, exec_args, NULL); if (err_status != errAuthorizationSuccess) { fprintf(stderr, "Error while executing chmod: %d\n", (int)err_status); } else { if (wait(&child) < 0 || !WIFEXITED(child) || WEXITSTATUS(child) != 0) { fprintf(stderr, "Executing chmod failed: %d\n", (int)WEXITSTATUS(child)); err_status = errAuthorizationToolExecuteFailure; } } } } } AuthorizationFree(auth_ref, kAuthorizationFlagDefaults); return err_status == noErr; } #else static int fix_permissions(const char* filename) { fprintf(stderr, "This tool must be run as root. Please fix the permissions manually:\n" " chown root %s\n" " chmod u+s %s\n", filename, filename); return 0; } #endif int main(int argc, char **argv) { char *exec_name = argv[0]; char bpf_dev[14]; int bpf; int i; int exit_code = 0; // check if we are running as root user if(geteuid() != 0) { printf("%s: Running as user %d instead of root. Fixing permissions.\n", exec_name, geteuid()); // try fixing the permissions if (fix_permissions(argv[0])) { printf("%s: Permissions fixed. Restarting.\n", exec_name); int ret = execvp(argv[0], argv); _exit(ret); } fprintf(stderr, "%s: Unable to fix permissions.\n", exec_name); exit_code = 2; bpf = -1; } else { // try opening the next free BPF device for(i=0; i <= 99; i++) { sprintf(bpf_dev, "/dev/bpf%d", i); bpf=open(bpf_dev, O_RDWR); if (bpf > 0) { fprintf(stderr, "%s: %s opened\n", exec_name, bpf_dev); break; } else if (errno == ENOENT) { break; } else { fprintf(stderr, "%s: opening %s failed. %s\n", exec_name, bpf_dev, strerror(errno)); } } if (bpf < 0) { fprintf(stderr, "%s: Unable to open any bpf device. Giving up.\n", exec_name); exit_code = 1; } else { fd_send(bpf); } } printf("%s: done\n", exec_name); return exit_code; } aranym-1.1.0/src/Unix/MacOSX/README_ethernet.rtf0000664000175000017500000001050213454637621017353 0ustar joyjoy{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf370 {\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fmodern\fcharset0 CourierNewPSMT;\f2\fmodern\fcharset0 CourierNewPS-BoldMT; \f3\fmodern\fcharset0 Courier;} {\colortbl;\red255\green255\blue255;} {\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}} {\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} \paperw12240\paperh15840\vieww15600\viewh19600\viewkind0 \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802 \f0\b\fs24 \cf0 Enabling basic ethernet in MacAranym\ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802 \b0 \cf0 \ If MacAranym was compiled using the option \f1 --enable-bpf-ethernet \f0 , it uses the Mac OS X built-in Berkley Packet Filter to enable ethernet access from within the emulated environment. Therefore you won't need to install any other additional drivers for using ethernet in MacAranym. \ \ When starting MacAranym with configured ethernet support (i.e. ethernet type \f1 bridge \f0 ), a helper tool called "bpf_helper" is started to open a /dev/bpf* device which then gives access to the network layer. \ To do this, the tool requires root privileges and therefore will ask you for an administrator password when it is run for the first time.\ \ The current implementation has the following limitations:\ \pard\tx220\tx720\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\li720\fi-720 \ls1\ilvl0\cf0 {\listtext \'95 }No \f1 tunnel \f0 mode (=only \f1 bridge \f0 mode) is supported. I.e. MacAranym is directly connected to the same network of your host.\ {\listtext \'95 }All packets sent by MacAranym have the same MAC address as the hosts underlying network card, even though something different is configured.\ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802 \cf0 \ To enable ethernet, you'll have modify the config file as follows:\ \pard\tx460\tx460\pardeftab720\li800\fi-240 \f1 \cf0 [ETH0]\ Type = \f2\b bridge \f1\b0 \ Tunnel = en1\ HostIP = 192.168.0.1\ AtariIP = 192.168.0.40\ MAC = 00:41:45:54:48:30\ \pard\tx1040\pardeftab720\fi560 \f3\fs26 \cf0 \ \f1\fs24 Type\ \pard\pardeftab720\li1320\fi-183 \f0 \cf0 Use \f1 bridge \f0 to enable ethernet (any other value will disable Ethernet!). By default this mode will enable the MAC address based packet filter.\ Add the keyword \f1 debug \f0 to enable debugging. Start MacAranym from within the Terminal application to see packets sent/received.\ Add the keyword \f1 nofilter \f0 to disable the built-in filter completely. This is for assistance during debugging. It is not recommended to keep this mode enabled as this results in memory leakage under MiNT.\ Add the keyword \f1 mcast \f0 to enable multi-cast MAC filtering. This mode will pass multi-cast packets to the Atari side.\ Add the keyword \f1 ip \f0 to enable IP based filtering. This mode will pass ARP and IP packets to the Atari side. \ \ The keywords \f1 nofilter \f0 , \f1 mcast \f0 and \f1 ip \f0 are all affecting the packet filtering method and therefore cannot be combined.\ \pard\tx1040\pardeftab720\fi560 \cf0 \ \f1 Tunnel\ \f0 Connected network device of your Mac: en0 for Ethernet/wired connection, en1 for Wireless/AirPort connection\ \f1 HostIP\ \f0 Router giving access to the internet. Check your network settings if you are not sure.\ \f1 AtariIP\ \f0 An unused IP address which can be used by MacAranym for sending/receiving IP packets.\ \f1 MAC\ \f0 MAC address used for by MacAranym when sending packets.\ \pard\pardeftab720 \f1 \cf0 \ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802 \f0 \cf0 If you don't have a working and up-to-date Atari/ARAnyM setup yet, then go download {\field{\*\fldinst{HYPERLINK "https://aranym.github.io/afros.html"}}{\fldrslt AFROS}} now. It will let you boot directly to the desktop. With a slight modification of the ethernet configuration (=set your DNS server in \f1 /etc/resolv.conf \f0 ), you are quickly up and running and able to browse the internet with Highwire!\ \ Enjoy!\ \ Philipp\ } aranym-1.1.0/src/Unix/MacOSX/README_Xcode.rtf0000664000175000017500000003257013454637621016610 0ustar joyjoy{\rtf1\ansi\ansicpg1252\cocoartf1561 {\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 Monaco;\f2\fnil\fcharset0 LucidaGrande; } {\colortbl;\red255\green255\blue255;\red35\green110\blue37;} {\*\expandedcolortbl;;\csgenericrgb\c13725\c43137\c14510;} {\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}} {\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} \vieww18280\viewh15180\viewkind0 \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \f0\b\fs28 \cf0 New Xcode project for building universal binaries\ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \b0\fs24 \cf0 \ Finally I'm committing the Xcode 2.4.1 project I'm using to build Universal binaries of MacAranym. Currently it's not tested if it's working with version before 2.4.1.\ \ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \b \cf0 What's the difference? \b0 \ What's the difference between this project and the two other projects targeted for Mac OS X?\ \ \pard\tx480\tx960\tx1440\tx1920\tx2400\tx2880\tx3360\tx3840\tx4320\tx4800\tx5280\tx5760\tx6240\tx6720\tx7200\tx7680\tx8160\tx8640\tx9120\tx9600\tx10080\tx10560\tx11040\tx11520\tx12000\tx12480\tx12960\tx13440\tx13920\tx14400\tx14880\tx15360\tx15840\tx16320\tx16800\tx17280\tx17760\tx18240\tx18720\tx19200\tx19680\tx20160\tx20640\tx21120\tx21600\tx22080\tx22560\tx23040\tx23520\tx24000\tx24480\tx24960\tx25440\tx25920\tx26400\tx26880\tx27360\tx27840\tx28320\tx28800\tx29280\tx29760\tx30240\tx30720\tx31200\tx31680\tx32160\tx32640\tx33120\tx33600\tx34080\tx34560\tx35040\tx35520\tx36000\tx36480\tx36960\tx37440\tx37920\tx38400\tx38880\tx39360\tx39840\tx40320\tx40800\tx41280\tx41760\tx42240\tx42720\tx43200\tx43680\tx44160\tx44640\tx45120\tx45600\tx46080\tx46560\tx47040\tx47520\tx48000\pardirnatural\partightenfactor0 \f1\fs20 \cf0 \CocoaLigature0 src/MacOSX/MacAranym.pbproj \f2\fs24 \CocoaLigature1 \ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \f0 \cf0 is an old Project Builder/Xcode 1.5 project which is hard to maintain, because such an old version of Xcode only runs on Mac OS 10.3.x. Even though this project has been used by Fran\'e7ois LeCoat to build several releases of MacAranym, its existence in CVS has been neglected for a long time and it has hardly been updated. Therefore new Mac OS X developers willing to build MacAranym as a first challenge had to update the project/fix many errors message coming from the build scripts and the outdated project file.\ Lately I have fixed the biggest issues, but several others are still existing: the build scripts are rather awkward, e.g. every time the project is built, the configure-script is executed and all sources are recompiled. Further it was not possible to modify the build scripts to produce Universal Binaries while maintaining compatibility to Xcode 1.5.\ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \f2 \cf0 \ \pard\tx480\tx960\tx1440\tx1920\tx2400\tx2880\tx3360\tx3840\tx4320\tx4800\tx5280\tx5760\tx6240\tx6720\tx7200\tx7680\tx8160\tx8640\tx9120\tx9600\tx10080\tx10560\tx11040\tx11520\tx12000\tx12480\tx12960\tx13440\tx13920\tx14400\tx14880\tx15360\tx15840\tx16320\tx16800\tx17280\tx17760\tx18240\tx18720\tx19200\tx19680\tx20160\tx20640\tx21120\tx21600\tx22080\tx22560\tx23040\tx23520\tx24000\tx24480\tx24960\tx25440\tx25920\tx26400\tx26880\tx27360\tx27840\tx28320\tx28800\tx29280\tx29760\tx30240\tx30720\tx31200\tx31680\tx32160\tx32640\tx33120\tx33600\tx34080\tx34560\tx35040\tx35520\tx36000\tx36480\tx36960\tx37440\tx37920\tx38400\tx38880\tx39360\tx39840\tx40320\tx40800\tx41280\tx41760\tx42240\tx42720\tx43200\tx43680\tx44160\tx44640\tx45120\tx45600\tx46080\tx46560\tx47040\tx47520\tx48000\pardirnatural\partightenfactor0 \f1\fs20 \cf0 \CocoaLigature0 src/Unix/darwin\cf2 /* \f2\fs24 \cf0 \CocoaLigature1 \ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \f0 \cf0 is a simple Makefile based project and can be used from the command line and included as external target into Xcode. The biggest advantage of this type of project is that it's not necessary to synchronize it with the Linux/cygwin developments as it's using the same build system and scripts. But it's default behavior is not what you would expect from any of the latest MacAranym releases: it's placing the configuration files into the \f1\fs20 \CocoaLigature0 ~/Library/Preferences \f0\fs24 \CocoaLigature1 folder and names the files \f1\fs20 \CocoaLigature0 org.atari.aranym.config \f0\fs24 \CocoaLigature1 , \f1\fs20 \CocoaLigature0 org.atari.aranym.nvram \f0\fs24 \CocoaLigature1 and \f1\fs20 \CocoaLigature0 org.atari.aranym.keymap \f0\fs24 \CocoaLigature1 . Further it's reading data files (like ROM) from the \f1\fs20 \CocoaLigature0 ~/Library/Application Support/Aranym \f0\fs24 \CocoaLigature1 folder. One would say this is great as it follows Apple guide lines, but it's a real pain as there is no complete configuration GUI, so you still have to edit the config file from time to time. And in this case it's a tedious to search for this \f1\fs20 \CocoaLigature0 org.atari.aranym.config \f0\fs24 \CocoaLigature1 configuration file in the Preferences folder. \f2 \ \f0 \ \ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \b \cf0 What's new? \b0 \ As I still prefer IDEs, I've decided to create a new project for Xcode 2.x which allows creation of Universal Binaries and which is more convenient for developing purposes. It's advantages are:\ \pard\tx285\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\li280\fi-280\partightenfactor0 \cf0 - Only three targets: MacAranym, MacAranym MMU and Packaging.\ - The build script is intelligent enough to execute configure only if you've changed the configure flags (using the build variable CONFIGURE_OPTIONS which can be set in the project properties)\ - The script generates CPU source files which can be used for building Universal Binaries. This needed some adaption all over ARAnyMs source code to make more cross-compilable.\ - It's currently maintained :-)\ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \cf0 \ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \b \cf0 \ Let's build\ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \b0 \cf0 As you've probably already discovered, the new MacAranym project file is located at \f1\fs20 \CocoaLigature0 src/Unix/MacOSX/MacAranym.xcodeproj \f0\fs24 \CocoaLigature1 .\ Hopefully you've already installed Xcode. If not, you can download the latest version free of charge (but only after registration) from Apples Developer Page at {\field{\*\fldinst{HYPERLINK "https://developer.apple.com/download/"}}{\fldrslt https://developer.apple.com/download/}}.\ As you read this file I'm supposing you've already downloaded the ARAnyM source code from CVS or as a tarball.\ \ Then you're missing additional dependencies:\ \pard\tx220\tx720\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\li720\fi-720\partightenfactor0 \ls1\ilvl0\cf0 {\listtext \uc0\u8226 }SDL library can be found at {\field{\*\fldinst{HYPERLINK "https://www.libsdl.org"}}{\fldrslt https://www.libsdl.org}} and the version 1.2 can be downloaded here {\field{\*\fldinst{HYPERLINK "https://www.libsdl.org/download-1.2.php"}}{\fldrslt https://www.libsdl.org/download-1.2.php}}, and version 2.x here {\field{\*\fldinst{HYPERLINK "https://www.libsdl.org/download-1.2.php"}}{\fldrslt https://www.libsdl.org/download-2.0.php}}.\uc0\u8232 Copy the \f1\fs20 \CocoaLigature0 SDL.framework \f0\fs24 \CocoaLigature1 and \f1\fs20 \CocoaLigature0 SDL2.framework \f0\fs24 \CocoaLigature1 folders into the project folder (src/Unix/MacOSX/) .\ {\listtext \uc0\u8226 }SDL_image 1.2 is a SDL project ({\field{\*\fldinst{HYPERLINK "https://www.libsdl.org/projects/SDL_image/"}}{\fldrslt https://www.libsdl.org/projects/SDL_image/}}) and the version 1.2 can be downloaded here: {\field{\*\fldinst{HYPERLINK "https://www.libsdl.org/projects/SDL_image/release-1.2.html"}}{\fldrslt https://www.libsdl.org/projects/SDL_image/release-1.2.html}}\uc0\u8232 Copy the \f1\fs20 \CocoaLigature0 SDL_image.framework \f0\fs24 \CocoaLigature1 and \f1\fs20 \CocoaLigature0 SDL2_image.framework \f0\fs24 \CocoaLigature1 folders into the project folder beside the SDL.framework.\ {\listtext \uc0\u8226 }At least since Xcode 6 you need to install "automake" and "autoconf\'93, as it is not delivered as part of the tool suite. \uc0\u8232 The easiest way is to use MacPorts ({\field{\*\fldinst{HYPERLINK "https://www.macports.org"}}{\fldrslt https://www.macports.org}}) or Homebrew ({\field{\*\fldinst{HYPERLINK "https://brew.sh"}}{\fldrslt https://brew.sh}}). After installing one of them you can use for MacPorts the command \'84sudo port install automake autoconf" or for Homebrew \'84brew install automake\'93 (MacPorts is preferred, since the binaries provided by Homebrew are not universal, and you may not be able to link the i386 version).\ {\listtext \uc0\u8226 }Similarly, you need to install a jpeg library. For MacPorts use the command \'84sudo port install jpeg +universal" or for Homebrew \'84brew install jpeg\'93.\ {\listtext \uc0\u8226 }Further X11 is not included anymore as of OS X 10.6, but sadly SDL still has some references to X11 includes. This is why you have to install XQuartz ({\field{\*\fldinst{HYPERLINK "https://www.xquartz.org"}}{\fldrslt https://www.xquartz.org}}) to be able to compile on the latest systems.\ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \cf0 \ That's it you can start up Xcode with \f1\fs20 \CocoaLigature0 MacAranym.xcodeproj \f0\fs24 \CocoaLigature1 and select a target (e.g. MacAranym, MacAranym or a full package) and a build style (Debug for native architecture with all symbols for debugging or Release for universal binaries).\ \ \ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \b \cf0 Enabling \b0 \b native OSMesa software OpenGL rendering (NFOSMESA) \b0 \ \pard\tx280\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \cf0 This feature enables a substantial OpenGL acceleration for Atari applications using the \f1\fs20 osmesa.ldg \f0\fs24 or \f1\fs20 tiny.ldg \f0\fs24 . as OpenGL framework.\ \pard\tx280\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\li560\fi-560\partightenfactor0 \cf0 1. Download Mesa GL from its website {\field{\*\fldinst{HYPERLINK "http://mesa3d.org/"}}{\fldrslt http://mesa3d.org}}.\ 2. Compile it using the command \f1\fs20 make darwin-fat-all \f0\fs24 .\ 3. Add its \f1\fs20 include \f0\fs24 path to Xcodes "Header Search Paths", add \f1\fs20 --enable-nfosmesa \f0\fs24 to the CONFIGURE_OPTIONS build variable and (re-)build MacAranym.\ 4. Copy the \f1\fs20 libGL.1.dylib \f0\fs24 and \f1\fs20 libOSMesa.6.dylib \f0\fs24 from Mesa GL \f1\fs20 lib \f0\fs24 directory into \f1\fs20 MacAranym.app/Contents/MacOS/ \f0\fs24 .\ 5. Modify your configuration file as below:\ \f1\fs20 [NFOSMESA]\ ChannelSize = 0\ LibGL = libGL.1.dylib\ LibOSMesa = libOSMesa.6.dylib \f2\fs24 \ \f0 6. Install \f1\fs20 osmesa.ldg \f0\fs24 and \f1\fs20 nfosmesa.xdd \f0\fs24 in your Aranym Atari environment/applications replacing the old dynamic libraries.\ 7. Enjoy accelerated Atari OpenGL rendering. \f2 \ \f0 \ \ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \b \cf0 Enabling \b0 \b MPFR FPU emulation \b0 \ \pard\tx280\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \cf0 This feature enables the use of the more accurate (but less performant) MPFR library for the FPU emulation.\ \pard\tx280\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\li560\fi-560\partightenfactor0 \cf0 1. Install MPFR using MacPorts ({\field{\*\fldinst{HYPERLINK "http://www.macports.org"}}{\fldrslt http://www.macports.org}}): (this will also install necessary dependencies)\ \f1\fs20 sudo port install mpfr +universal\ \f0\fs24 2. Edit the MacAranym target: removing the \f1\fs20 fpu_uae.cpp \f0\fs24 file and adding the \f1\fs20 fpu_mpfr.cpp \f0\fs24 to the "Compile Sources" phase\ 3. Edit the targets "Build Settings":\ -Modify the CONFIGURE_OPTIONS_TARGET setting \f1\fs20 --enable-fpe="mpfr" \f0\fs24 \ -Modify the COMPILE_DEFS setting, replacing FPU_UAE by FPU_MPFR\ -Add path " \f1\fs20 /opt/local/lib \f0\fs24 " to the "Library Search Paths" setting\ -Add path " \f1\fs20 /opt/local/include \f0\fs24 " to the "Header Search Paths" setting\ -Add path " \f1\fs20 -L/opt/local/lib -lmpfr -lgmp \f0\fs24 " to the "Other Linker Flags" setting\ \ \ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \cf0 2017/07/03\ }aranym-1.1.0/src/Unix/MacOSX/README.rtf0000664000175000017500000001003713454637621015460 0ustar joyjoy{\rtf1\ansi\ansicpg1252\cocoartf1561 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} {\*\expandedcolortbl;;} {\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1} {\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}} {\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}} \viewkind0 \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \f0\b\fs24 \cf0 MacAranym (*VERSION*)\ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \b0 \cf0 \ This is MacAranym, ARAnyM for Mac OS X. ARAnyM is \'a9 ARAnyM development team (see {\field{\*\fldinst{HYPERLINK "DOC/AUTHORS"}}{\fldrslt DOC/AUTHORS}}) and is distributed under the terms of GPL (see COPYING). \ Support for Universal Binaries (compatible with PowerPC and Intel platform) has been dropped since Mac OS X 10.7 when the PowerPC emulation has disappeared from OS X.\ \ Please note that ARAnyM for Mac OS X does not support JIT compiler for CPU on the PowerPC architecture. This is not an intention but rather lack of resources. Our main aim is to build a complete distribution installable on any computer and running on a Linux kernel so while we spend a lot of time with debugging this Mac OS X version it's not our primary target.\ \ Please read the README and NEWS files in the DOC folder. Some interesting technical information can also be found in the BUGS and TODO files.\ \ In this package you'll find six binaries:\ \pard\tx220\tx720\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\li720\fi-720\partightenfactor0 \ls1\ilvl0\cf0 {\listtext \uc0\u8226 }MacAranym: standard version without MMU emulation\ {\listtext \uc0\u8226 }MacAranym MMU: MMU enhanced version (good for running FreeMiNT with memory protection or Linux-m68k)\ {\listtext \uc0\u8226 }MacAranym JIT: JIT compiler enabled version (Intel only, will not run on PowerPC based Macs)\ \pard\tx220\tx720\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\li720\fi-720\partightenfactor0 \ls2\ilvl0\cf0 {\listtext \uc0\u8226 }MacAranym SDL2: same as MacAranym, but using SDL2 library\ {\listtext \uc0\u8226 }MacAranym MMU SDL2: same as MacAranym MMU, but using SDL2 library\ {\listtext \uc0\u8226 }MacAranym JIT SDL2: same as MacAranym JIT, but using SDL2 library\ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 \cf0 \ MacAranym is looking for its configuration in two different locations. First it tries to load configuration from "Aranym_files" folder in the application directory, if this fails it's trying to locate an "Aranym_files" folder in the users "Documents" folder. The configuration file "config" is a plain text file and can be edited freely with any suitable text editor (TextEdit, for example). A commented template of the config file is in DOC\\config file.\ \ If you don't have a working and up-to-date Atari/ARAnyM setup yet then go download the {\field{\*\fldinst{HYPERLINK "http://aranym.github.io/afros.html"}}{\fldrslt AFROS}} 8.12 now. It will let you boot directly to the desktop.\ \ Online documentation can be found in the ARAnyM wiki at {\field{\*\fldinst{HYPERLINK "https://github.com/aranym/aranym/wiki"}}{\fldrslt https://github.com/aranym/aranym/wiki}}.\ Enjoy!\ \ Your ARAnyM team\ (*DATE*)\ \ \pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\partightenfactor0 {\field{\*\fldinst{HYPERLINK "https://aranym.github.io//"}}{\fldrslt \cf0 https://aranym.github.io/}}\ }aranym-1.1.0/src/Unix/MacOSX/MacAranym.xcodeproj/0000775000175000017500000000000013454637621017651 5ustar joyjoyaranym-1.1.0/src/Unix/MacOSX/MacAranym.xcodeproj/xcshareddata/0000775000175000017500000000000013454637621022304 5ustar joyjoyaranym-1.1.0/src/Unix/MacOSX/MacAranym.xcodeproj/xcshareddata/xcschemes/0000775000175000017500000000000013454637621024266 5ustar joyjoyaranym-1.1.0/src/Unix/MacOSX/MacAranym.xcodeproj/xcshareddata/xcschemes/bpf_helper.xcscheme0000664000175000017500000000643613454637621030126 0ustar joyjoy aranym-1.1.0/src/Unix/MacOSX/MacAranym.xcodeproj/xcshareddata/xcschemes/Packaging.xcscheme0000664000175000017500000000473113454637621027700 0ustar joyjoy aranym-1.1.0/src/Unix/MacOSX/MacAranym.xcodeproj/xcshareddata/xcschemes/MacAranym.xcscheme0000664000175000017500000000644613454637621027671 0ustar joyjoy aranym-1.1.0/src/Unix/MacOSX/MacAranym.xcodeproj/xcshareddata/xcschemes/MacAranym MMU.xcscheme0000664000175000017500000000650613454637621030305 0ustar joyjoy aranym-1.1.0/src/Unix/MacOSX/MacAranym.xcodeproj/xcshareddata/xcschemes/MacAranym MMU+MPFR.xcscheme0000664000175000017500000000655613454637621031052 0ustar joyjoy aranym-1.1.0/src/Unix/MacOSX/MacAranym.xcodeproj/xcshareddata/xcschemes/MacAranym JIT.xcscheme0000664000175000017500000000650613454637621030275 0ustar joyjoy aranym-1.1.0/src/Unix/MacOSX/MacAranym.xcodeproj/project.pbxproj0000664000175000017500000102716413454637621022740 0ustar joyjoy// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 45; objects = { /* Begin PBXAggregateTarget section */ 17AAB2A90B20A8150016FB8D /* Packaging */ = { isa = PBXAggregateTarget; buildConfigurationList = 17AAB2AA0B20A8330016FB8D /* Build configuration list for PBXAggregateTarget "Packaging" */; buildPhases = ( 17BCD8A20B20FFC200432CE1 /* CopyFiles */, B4E213CC0C5BA71A00138A7F /* CopyFiles */, 17AAB2A80B20A8150016FB8D /* Script: Create Diskimage */, ); dependencies = ( 17D10CA80C401D940083E7F2 /* PBXTargetDependency */, 17B1145F151E696B00E4EB0F /* PBXTargetDependency */, 17D10CAA0C401D940083E7F2 /* PBXTargetDependency */, 8CB53CB3203F110B0005E5AD /* PBXTargetDependency */, 8CB53CB5203F11100005E5AD /* PBXTargetDependency */, 8CB53CB7203F11160005E5AD /* PBXTargetDependency */, ); name = Packaging; productName = "Build Release Package"; }; /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ 002F39FA09D0881F00EBEB88 /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; }; 002F3A0009D0884600EBEB88 /* SDL.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 002F3A0009D0884600EBEB89 /* SDL2.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = 8CB53CBC203F1EAD0005E5AD /* SDL2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 002F3A0009D0884600EBEB8A /* SDL2_image.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = 8CB53CBE203F1EBA0005E5AD /* SDL2_image.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 170539151555D457006A6DDE /* libgmp.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 170539131555D457006A6DDE /* libgmp.dylib */; }; 170539161555D457006A6DDE /* libmpfr.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 170539141555D457006A6DDE /* libmpfr.dylib */; }; 1705391A1555D5DC006A6DDE /* libgmp.dylib in Copy Executables */ = {isa = PBXBuildFile; fileRef = 170539131555D457006A6DDE /* libgmp.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 1705391B1555D5DC006A6DDE /* libmpfr.dylib in Copy Executables */ = {isa = PBXBuildFile; fileRef = 170539141555D457006A6DDE /* libmpfr.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 1705391C1555D5DC006A6DDE /* libjpeg.dylib in Copy Executables */ = {isa = PBXBuildFile; fileRef = 170539181555D457006A6DDE /* libjpeg.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 170C2B880BB872920026484E /* dyngl.c in Sources */ = {isa = PBXBuildFile; fileRef = 170C2B850BB872920026484E /* dyngl.c */; }; 170C2B8B0BB872920026484E /* dyngl.c in Sources */ = {isa = PBXBuildFile; fileRef = 170C2B850BB872920026484E /* dyngl.c */; }; 170C2BA10BB873470026484E /* cpummu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DC30A652B51009733EB /* cpummu.cpp */; }; 1717653C15AA2D6B002F920C /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B4640D4B0C7C2E0F0000572B /* Security.framework */; }; 1717E85B151680B900D416FA /* dlgUsb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1717E85A151680B900D416FA /* dlgUsb.cpp */; }; 1717E85C151680B900D416FA /* dlgUsb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1717E85A151680B900D416FA /* dlgUsb.cpp */; }; 1717E85D151680B900D416FA /* dlgUsb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1717E85A151680B900D416FA /* dlgUsb.cpp */; }; 171B2BD50C4017C9007D8975 /* dlgOs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 171B2BD30C4017C9007D8975 /* dlgOs.cpp */; }; 171B2BD60C4017C9007D8975 /* dlgVideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 171B2BD40C4017C9007D8975 /* dlgVideo.cpp */; }; 171B2BD70C4017C9007D8975 /* dlgOs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 171B2BD30C4017C9007D8975 /* dlgOs.cpp */; }; 171B2BD80C4017C9007D8975 /* dlgVideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 171B2BD40C4017C9007D8975 /* dlgVideo.cpp */; }; 1730EDFD160F9BDF002EC84E /* README_ethernet.rtf in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17E78DBF15AA3E0B006C560E /* README_ethernet.rtf */; }; 1732BC82124540FF00272489 /* scc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1732BC81124540FF00272489 /* scc.cpp */; }; 1732BC83124540FF00272489 /* scc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1732BC81124540FF00272489 /* scc.cpp */; }; 1732BC84124540FF00272489 /* scc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1732BC81124540FF00272489 /* scc.cpp */; }; 1732BC881245412B00272489 /* serial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1732BC861245412B00272489 /* serial.cpp */; }; 1732BC891245412B00272489 /* serial_port.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1732BC871245412B00272489 /* serial_port.cpp */; }; 1732BC8A1245412B00272489 /* serial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1732BC861245412B00272489 /* serial.cpp */; }; 1732BC8B1245412B00272489 /* serial_port.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1732BC871245412B00272489 /* serial_port.cpp */; }; 1732BC8C1245412B00272489 /* serial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1732BC861245412B00272489 /* serial.cpp */; }; 1732BC8D1245412B00272489 /* serial_port.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1732BC871245412B00272489 /* serial_port.cpp */; }; 173598C013F1EE7400F84DB3 /* cpustbl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17AC409D13F1D403003B4FAD /* cpustbl.cpp */; }; 173598C113F1EE7800F84DB3 /* cpuemu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17AC409C13F1D403003B4FAD /* cpuemu.cpp */; }; 173598C213F1EE7800F84DB3 /* cpudefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17AC409A13F1D403003B4FAD /* cpudefs.cpp */; }; 173598C413F1EFE400F84DB3 /* cpuemu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17AC409C13F1D403003B4FAD /* cpuemu.cpp */; }; 173598C513F1F01D00F84DB3 /* cpudefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17AC409A13F1D403003B4FAD /* cpudefs.cpp */; }; 173598C613F1F02500F84DB3 /* cpustbl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17AC409D13F1D403003B4FAD /* cpustbl.cpp */; }; 173598F613F1F65100F84DB3 /* compemu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 173598F213F1F61300F84DB3 /* compemu.cpp */; }; 173598F713F1F65100F84DB3 /* compstbl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 173598F313F1F61300F84DB3 /* compstbl.cpp */; }; 173598F813F1F65100F84DB3 /* cpuemu_nf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 173598F413F1F61300F84DB3 /* cpuemu_nf.cpp */; }; 173598F913F1F65100F84DB3 /* cpustbl_nf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 173598F513F1F61300F84DB3 /* cpustbl_nf.cpp */; }; 1736B1070C70ED5900C56FAF /* aranym.icns in Resources */ = {isa = PBXBuildFile; fileRef = 1736B0FD0C70ED5900C56FAF /* aranym.icns */; }; 1736B10B0C70ED5900C56FAF /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 1736B1020C70ED5900C56FAF /* SDLMain.m */; }; 1736B10C0C70ED5900C56FAF /* aranym.icns in Resources */ = {isa = PBXBuildFile; fileRef = 1736B0FD0C70ED5900C56FAF /* aranym.icns */; }; 1736B1100C70ED5900C56FAF /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 1736B1020C70ED5900C56FAF /* SDLMain.m */; }; 1736B1110C70ED5900C56FAF /* aranym.icns in Resources */ = {isa = PBXBuildFile; fileRef = 1736B0FD0C70ED5900C56FAF /* aranym.icns */; }; 1736B1150C70ED5900C56FAF /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 1736B1020C70ED5900C56FAF /* SDLMain.m */; }; 17398E120B21048100A9B4DB /* README.rtf in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17398E110B21048100A9B4DB /* README.rtf */; }; 17473D1A15AA07FD00CAEA47 /* ethernet_macosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17473D1515AA07FD00CAEA47 /* ethernet_macosx.cpp */; }; 17473D1B15AA07FD00CAEA47 /* fd_trans.c in Sources */ = {isa = PBXBuildFile; fileRef = 17473D1715AA07FD00CAEA47 /* fd_trans.c */; }; 17473D2F15AA0A2700CAEA47 /* bpf_helper.c in Sources */ = {isa = PBXBuildFile; fileRef = 17473D1415AA07FD00CAEA47 /* bpf_helper.c */; }; 17473D3715AA0A9600CAEA47 /* bpf_helper in Copy Executables */ = {isa = PBXBuildFile; fileRef = 17473D2515AA0A1100CAEA47 /* bpf_helper */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 17473D3F15AA104900CAEA47 /* bpf_helper in Copy Executables */ = {isa = PBXBuildFile; fileRef = 17473D2515AA0A1100CAEA47 /* bpf_helper */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 17473D4115AA107800CAEA47 /* bpf_helper in Copy Executables */ = {isa = PBXBuildFile; fileRef = 17473D2515AA0A1100CAEA47 /* bpf_helper */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 17473D4415AA112F00CAEA47 /* bpf_helper in Copy Executables */ = {isa = PBXBuildFile; fileRef = 17473D2515AA0A1100CAEA47 /* bpf_helper */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 175822820A6554CE00EEE78F /* parameters_MacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E420A652B51009733EB /* parameters_MacOSX.cpp */; }; 1758228C0A6555CC00EEE78F /* main_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E7C0A652B52009733EB /* main_unix.cpp */; }; 175909560CA453990089CF9F /* dirty_rects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 175909550CA453990089CF9F /* dirty_rects.cpp */; }; 175909570CA453990089CF9F /* dirty_rects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 175909550CA453990089CF9F /* dirty_rects.cpp */; }; 175909580CA453990089CF9F /* dirty_rects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 175909550CA453990089CF9F /* dirty_rects.cpp */; }; 17590BC30CA458410089CF9F /* nfjpeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D850A652B51009733EB /* nfjpeg.cpp */; }; 17590BC40CA458440089CF9F /* nfjpeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D850A652B51009733EB /* nfjpeg.cpp */; }; 17590BC50CA458470089CF9F /* nfjpeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D850A652B51009733EB /* nfjpeg.cpp */; }; 17648A1A154F377A005C21BC /* fpu_uae.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DD00A652B51009733EB /* fpu_uae.cpp */; }; 1778A4651555A8A70005B336 /* cpustbl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17AC409D13F1D403003B4FAD /* cpustbl.cpp */; }; 1778A4661555A8A70005B336 /* cpuemu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17AC409C13F1D403003B4FAD /* cpuemu.cpp */; }; 1778A4671555A8A70005B336 /* cpudefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17AC409A13F1D403003B4FAD /* cpudefs.cpp */; }; 1778A4681555A8A70005B336 /* ethernet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D6F0A652B51009733EB /* ethernet.cpp */; }; 1778A4691555A8A70005B336 /* ethernet_darwin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B4A9E9C10C5B33AC00C156C3 /* ethernet_darwin.cpp */; }; 1778A46A1555A8A70005B336 /* parameters_MacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E420A652B51009733EB /* parameters_MacOSX.cpp */; }; 1778A46B1555A8A70005B336 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D5E0A652B50009733EB /* main.cpp */; }; 1778A46C1555A8A70005B336 /* vm_alloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E870A652B52009733EB /* vm_alloc.cpp */; }; 1778A46D1555A8A70005B336 /* host_clock_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E170A652B51009733EB /* host_clock_unix.cpp */; }; 1778A46E1555A8A70005B336 /* acia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD30A652B50009733EB /* acia.cpp */; }; 1778A46F1555A8A70005B336 /* acsifdc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD40A652B50009733EB /* acsifdc.cpp */; }; 1778A4701555A8A70005B336 /* aradata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD50A652B50009733EB /* aradata.cpp */; }; 1778A4711555A8A70005B336 /* aranym_exception.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD60A652B50009733EB /* aranym_exception.cpp */; }; 1778A4721555A8A70005B336 /* ata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD70A652B50009733EB /* ata.cpp */; }; 1778A4731555A8A70005B336 /* audio_dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD90A652B50009733EB /* audio_dma.cpp */; }; 1778A4741555A8A70005B336 /* audio_crossbar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD80A652B50009733EB /* audio_crossbar.cpp */; }; 1778A4751555A8A70005B336 /* blitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDA0A652B50009733EB /* blitter.cpp */; }; 1778A4761555A8A70005B336 /* bootos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDE0A652B50009733EB /* bootos.cpp */; }; 1778A4771555A8A70005B336 /* bootos_emutos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDB0A652B50009733EB /* bootos_emutos.cpp */; }; 1778A4781555A8A70005B336 /* bootos_linux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDC0A652B50009733EB /* bootos_linux.cpp */; }; 1778A4791555A8A70005B336 /* bootos_tos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDD0A652B50009733EB /* bootos_tos.cpp */; }; 1778A47A1555A8A70005B336 /* cdrom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDF0A652B50009733EB /* cdrom.cpp */; }; 1778A47B1555A8A70005B336 /* cfgopts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CE00A652B50009733EB /* cfgopts.cpp */; }; 1778A47C1555A8A70005B336 /* dsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CE90A652B50009733EB /* dsp.cpp */; }; 1778A47D1555A8A70005B336 /* emul_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEA0A652B50009733EB /* emul_op.cpp */; }; 1778A47E1555A8A70005B336 /* natfeats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAA0A652B51009733EB /* natfeats.cpp */; }; 1778A47F1555A8A70005B336 /* fakeio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEB0A652B50009733EB /* fakeio.cpp */; }; 1778A4801555A8A70005B336 /* hardware.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF90A652B50009733EB /* hardware.cpp */; }; 1778A4811555A8A70005B336 /* host.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFC0A652B50009733EB /* host.cpp */; }; 1778A4821555A8A70005B336 /* host_audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFA0A652B50009733EB /* host_audio.cpp */; }; 1778A4831555A8A70005B336 /* host_clock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFB0A652B50009733EB /* host_clock.cpp */; }; 1778A4841555A8A70005B336 /* hostscreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFD0A652B50009733EB /* hostscreen.cpp */; }; 1778A4851555A8A70005B336 /* ide.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFE0A652B50009733EB /* ide.cpp */; }; 1778A4861555A8A70005B336 /* identify.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFF0A652B50009733EB /* identify.cpp */; }; 1778A4871555A8A70005B336 /* ikbd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D000A652B50009733EB /* ikbd.cpp */; }; 1778A4881555A8A70005B336 /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D390A652B50009733EB /* input.cpp */; }; 1778A4891555A8A70005B336 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D5F0A652B50009733EB /* md5.cpp */; }; 1778A48A1555A8A70005B336 /* mfp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D600A652B50009733EB /* mfp.cpp */; }; 1778A48B1555A8A70005B336 /* midi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D610A652B50009733EB /* midi.cpp */; }; 1778A48C1555A8A70005B336 /* mmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D620A652B51009733EB /* mmu.cpp */; }; 1778A48D1555A8A70005B336 /* ndebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAC0A652B51009733EB /* ndebug.cpp */; }; 1778A48E1555A8A70005B336 /* ncr5380.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAB0A652B51009733EB /* ncr5380.cpp */; }; 1778A48F1555A8A70005B336 /* parallel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB00A652B51009733EB /* parallel.cpp */; }; 1778A4901555A8A70005B336 /* parallel_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAD0A652B51009733EB /* parallel_file.cpp */; }; 1778A4911555A8A70005B336 /* parameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB10A652B51009733EB /* parameters.cpp */; }; 1778A4921555A8A70005B336 /* romdiff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB20A652B51009733EB /* romdiff.cpp */; }; 1778A4931555A8A70005B336 /* rtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB30A652B51009733EB /* rtc.cpp */; }; 1778A4941555A8A70005B336 /* tools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB50A652B51009733EB /* tools.cpp */; }; 1778A4951555A8A70005B336 /* videl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E8B0A652B52009733EB /* videl.cpp */; }; 1778A4961555A8A70005B336 /* yamaha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E8C0A652B52009733EB /* yamaha.cpp */; }; 1778A4971555A8A70005B336 /* nf_base.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D740A652B51009733EB /* nf_base.cpp */; }; 1778A4981555A8A70005B336 /* nf_objs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D780A652B51009733EB /* nf_objs.cpp */; }; 1778A4991555A8A70005B336 /* xhdi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA80A652B51009733EB /* xhdi.cpp */; }; 1778A49A1555A8A70005B336 /* nfaudio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D7A0A652B51009733EB /* nfaudio.cpp */; }; 1778A49B1555A8A70005B336 /* nfbootstrap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D7C0A652B51009733EB /* nfbootstrap.cpp */; }; 1778A49C1555A8A70005B336 /* nfclipbrd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D820A652B51009733EB /* nfclipbrd.cpp */; }; 1778A49D1555A8A70005B336 /* nf_basicset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D760A652B51009733EB /* nf_basicset.cpp */; }; 1778A49E1555A8A70005B336 /* debugprintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D670A652B51009733EB /* debugprintf.cpp */; }; 1778A49F1555A8A70005B336 /* nfvdi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA20A652B51009733EB /* nfvdi.cpp */; }; 1778A4A01555A8A70005B336 /* nfvdi_soft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA60A652B51009733EB /* nfvdi_soft.cpp */; }; 1778A4A11555A8A70005B336 /* nfcdrom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D7E0A652B51009733EB /* nfcdrom.cpp */; }; 1778A4A21555A8A70005B336 /* hostfs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D720A652B51009733EB /* hostfs.cpp */; }; 1778A4A31555A8A70005B336 /* aranym_glue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB70A652B51009733EB /* aranym_glue.cpp */; }; 1778A4A41555A8A70005B336 /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DDD0A652B51009733EB /* memory.cpp */; }; 1778A4A51555A8A70005B336 /* newcpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DDF0A652B51009733EB /* newcpu.cpp */; }; 1778A4A61555A8A70005B336 /* readcpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DE20A652B51009733EB /* readcpu.cpp */; }; 1778A4A71555A8A70005B336 /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DC60A652B51009733EB /* debug.cpp */; }; 1778A4A81555A8A70005B336 /* sdlgui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF70A652B50009733EB /* sdlgui.cpp */; }; 1778A4A91555A8A70005B336 /* dlgFileSelect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF00A652B50009733EB /* dlgFileSelect.cpp */; }; 1778A4AA1555A8A70005B336 /* file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF40A652B50009733EB /* file.cpp */; }; 1778A4AB1555A8A70005B336 /* dlgMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF30A652B50009733EB /* dlgMain.cpp */; }; 1778A4AC1555A8A70005B336 /* dlgKeyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF20A652B50009733EB /* dlgKeyboard.cpp */; }; 1778A4AD1555A8A70005B336 /* dlgHotkeys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF10A652B50009733EB /* dlgHotkeys.cpp */; }; 1778A4AE1555A8A70005B336 /* dlgAlert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEE0A652B50009733EB /* dlgAlert.cpp */; }; 1778A4AF1555A8A70005B336 /* main_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E7C0A652B52009733EB /* main_unix.cpp */; }; 1778A4B01555A8A70005B336 /* dlgDisk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEF0A652B50009733EB /* dlgDisk.cpp */; }; 1778A4B11555A8A70005B336 /* cpummu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DC30A652B51009733EB /* cpummu.cpp */; }; 1778A4B21555A8A70005B336 /* midi_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17D5D2580AC70DBD003D0FE9 /* midi_file.cpp */; }; 1778A4B31555A8A70005B336 /* nfvdi_opengl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA40A652B51009733EB /* nfvdi_opengl.cpp */; }; 1778A4B41555A8A70005B336 /* dyngl.c in Sources */ = {isa = PBXBuildFile; fileRef = 170C2B850BB872920026484E /* dyngl.c */; }; 1778A4B51555A8A70005B336 /* dlgOs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 171B2BD30C4017C9007D8975 /* dlgOs.cpp */; }; 1778A4B61555A8A70005B336 /* dlgVideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 171B2BD40C4017C9007D8975 /* dlgVideo.cpp */; }; 1778A4B71555A8A70005B336 /* dlgNetwork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B491646E0C5406D900CFB5B0 /* dlgNetwork.cpp */; }; 1778A4B81555A8A70005B336 /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 1736B1020C70ED5900C56FAF /* SDLMain.m */; }; 1778A4B91555A8A70005B336 /* SDLHotkeysRefresh.M in Sources */ = {isa = PBXBuildFile; fileRef = F83B575D0C8B143300BA68D4 /* SDLHotkeysRefresh.M */; }; 1778A4BA1555A8A70005B336 /* videl_zoom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F83B576C0C8B1F0100BA68D4 /* videl_zoom.cpp */; }; 1778A4BB1555A8A70005B336 /* dirty_rects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 175909550CA453990089CF9F /* dirty_rects.cpp */; }; 1778A4BC1555A8A70005B336 /* nfjpeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D850A652B51009733EB /* nfjpeg.cpp */; }; 1778A4BD1555A8A70005B336 /* logo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17C0AFFC0CBB0A85000D2916 /* logo.cpp */; }; 1778A4BE1555A8A70005B336 /* dialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B00D07443D0017F23B /* dialog.cpp */; }; 1778A4BF1555A8A70005B336 /* host_surface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B50D07447F0017F23B /* host_surface.cpp */; }; 1778A4C01555A8A70005B336 /* host_surface_opengl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B60D07447F0017F23B /* host_surface_opengl.cpp */; }; 1778A4C11555A8A70005B336 /* hostscreen_opengl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B70D07447F0017F23B /* hostscreen_opengl.cpp */; }; 1778A4C21555A8A70005B336 /* dlgKeypress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01C40D0744D30017F23B /* dlgKeypress.cpp */; }; 1778A4C31555A8A70005B336 /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = B471E7C00D2A88750021DFA7 /* adler32.c */; }; 1778A4C41555A8A70005B336 /* dlgPartition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B475E5A60D4FA41500C8607E /* dlgPartition.cpp */; }; 1778A4C51555A8A70005B336 /* dsp_core.c in Sources */ = {isa = PBXBuildFile; fileRef = 17EC07DF0ECB762900100ED7 /* dsp_core.c */; }; 1778A4C61555A8A70005B336 /* dsp_cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 17EC07E00ECB762900100ED7 /* dsp_cpu.c */; }; 1778A4C71555A8A70005B336 /* dsp_disasm.c in Sources */ = {isa = PBXBuildFile; fileRef = 17EC07E10ECB762900100ED7 /* dsp_disasm.c */; }; 1778A4C81555A8A70005B336 /* audio_conv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17EC08D20ECB829E00100ED7 /* audio_conv.cpp */; }; 1778A4C91555A8A70005B336 /* joypads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17EC080A0ECB774200100ED7 /* joypads.cpp */; }; 1778A4CA1555A8A70005B336 /* clipbrd_darwin.M in Sources */ = {isa = PBXBuildFile; fileRef = 17F10C631066C16500BDE380 /* clipbrd_darwin.M */; }; 1778A4CB1555A8A70005B336 /* scc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1732BC81124540FF00272489 /* scc.cpp */; }; 1778A4CC1555A8A70005B336 /* serial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1732BC861245412B00272489 /* serial.cpp */; }; 1778A4CD1555A8A70005B336 /* serial_port.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1732BC871245412B00272489 /* serial_port.cpp */; }; 1778A4CE1555A8A70005B336 /* dlgUsb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1717E85A151680B900D416FA /* dlgUsb.cpp */; }; 1778A4D01555A8A70005B336 /* SDL_image.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B2B51A0C41781B00595D44 /* SDL_image.framework */; }; 1778A4D11555A8A70005B336 /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; }; 1778A4D21555A8A70005B336 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; 1778A4D31555A8A70005B336 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 177990510A6538B5009733EB /* IOKit.framework */; }; 1778A4D41555A8A70005B336 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17AAB1190B206BF20016FB8D /* OpenGL.framework */; }; 1778A4D51555A8A70005B336 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B4640D4B0C7C2E0F0000572B /* Security.framework */; }; 1778A4D71555A8A70005B336 /* logo.bmp in Resources */ = {isa = PBXBuildFile; fileRef = B449DA000D2A9212005F0CC6 /* logo.bmp */; }; 1778A4D81555A8A70005B336 /* aranym.icns in Resources */ = {isa = PBXBuildFile; fileRef = 1736B0FD0C70ED5900C56FAF /* aranym.icns */; }; 1778A4D91555A8A70005B336 /* aranym.nib in Resources */ = {isa = PBXBuildFile; fileRef = B428FAF50C7BA7100039CA66 /* aranym.nib */; }; 1778A4DB1555A8A70005B336 /* SDL_image.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = 17B2B51A0C41781B00595D44 /* SDL_image.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 1778A4DC1555A8A70005B336 /* SDL.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 1778A4E61555AA530005B336 /* fpu_mpfr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 171A3F0E154F2765005F6C9D /* fpu_mpfr.cpp */; }; 17798F050A652EF1009733EB /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D5E0A652B50009733EB /* main.cpp */; }; 17798F0C0A652F24009733EB /* vm_alloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E870A652B52009733EB /* vm_alloc.cpp */; }; 17798F0D0A652F2F009733EB /* host_clock_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E170A652B51009733EB /* host_clock_unix.cpp */; }; 17798F0E0A652F35009733EB /* acia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD30A652B50009733EB /* acia.cpp */; }; 17798F110A652F58009733EB /* acsifdc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD40A652B50009733EB /* acsifdc.cpp */; }; 17798F120A652F5F009733EB /* aradata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD50A652B50009733EB /* aradata.cpp */; }; 17798F130A652F64009733EB /* aranym_exception.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD60A652B50009733EB /* aranym_exception.cpp */; }; 17798F150A652F74009733EB /* ata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD70A652B50009733EB /* ata.cpp */; }; 17798F160A652F7F009733EB /* audio_dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD90A652B50009733EB /* audio_dma.cpp */; }; 17798F170A652F80009733EB /* audio_crossbar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD80A652B50009733EB /* audio_crossbar.cpp */; }; 17798F180A652F84009733EB /* blitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDA0A652B50009733EB /* blitter.cpp */; }; 17798F190A652F87009733EB /* bootos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDE0A652B50009733EB /* bootos.cpp */; }; 17798F1A0A652F89009733EB /* bootos_emutos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDB0A652B50009733EB /* bootos_emutos.cpp */; }; 17798F1B0A652F89009733EB /* bootos_linux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDC0A652B50009733EB /* bootos_linux.cpp */; }; 17798F1C0A652F8A009733EB /* bootos_tos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDD0A652B50009733EB /* bootos_tos.cpp */; }; 17798F1D0A652F8E009733EB /* cdrom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDF0A652B50009733EB /* cdrom.cpp */; }; 17798F1E0A652F91009733EB /* cfgopts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CE00A652B50009733EB /* cfgopts.cpp */; }; 17798F1F0A652F99009733EB /* dsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CE90A652B50009733EB /* dsp.cpp */; }; 17798F200A652F9C009733EB /* emul_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEA0A652B50009733EB /* emul_op.cpp */; }; 17798F210A652FA6009733EB /* natfeats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAA0A652B51009733EB /* natfeats.cpp */; }; 17798F220A652FB3009733EB /* fakeio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEB0A652B50009733EB /* fakeio.cpp */; }; 17798F230A652FB6009733EB /* hardware.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF90A652B50009733EB /* hardware.cpp */; }; 17798F240A652FB9009733EB /* host.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFC0A652B50009733EB /* host.cpp */; }; 17798F250A652FBD009733EB /* host_audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFA0A652B50009733EB /* host_audio.cpp */; }; 17798F260A652FBE009733EB /* host_clock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFB0A652B50009733EB /* host_clock.cpp */; }; 17798F270A652FC1009733EB /* hostscreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFD0A652B50009733EB /* hostscreen.cpp */; }; 17798F280A652FC4009733EB /* ide.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFE0A652B50009733EB /* ide.cpp */; }; 17798F290A652FC8009733EB /* identify.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFF0A652B50009733EB /* identify.cpp */; }; 17798F2A0A652FCD009733EB /* ikbd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D000A652B50009733EB /* ikbd.cpp */; }; 17798F2B0A652FD1009733EB /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D390A652B50009733EB /* input.cpp */; }; 17798F2C0A652FD5009733EB /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D5F0A652B50009733EB /* md5.cpp */; }; 17798F2D0A652FD8009733EB /* mfp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D600A652B50009733EB /* mfp.cpp */; }; 17798F2E0A652FDB009733EB /* midi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D610A652B50009733EB /* midi.cpp */; }; 17798F2F0A652FDF009733EB /* mmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D620A652B51009733EB /* mmu.cpp */; }; 17798F300A652FE2009733EB /* ndebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAC0A652B51009733EB /* ndebug.cpp */; }; 17798F310A652FE4009733EB /* ncr5380.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAB0A652B51009733EB /* ncr5380.cpp */; }; 17798F320A652FEA009733EB /* parallel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB00A652B51009733EB /* parallel.cpp */; }; 17798F330A652FEC009733EB /* parallel_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAD0A652B51009733EB /* parallel_file.cpp */; }; 17798F340A652FF1009733EB /* parameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB10A652B51009733EB /* parameters.cpp */; }; 17798F350A652FF6009733EB /* romdiff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB20A652B51009733EB /* romdiff.cpp */; }; 17798F360A652FFB009733EB /* rtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB30A652B51009733EB /* rtc.cpp */; }; 17798F370A652FFE009733EB /* tools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB50A652B51009733EB /* tools.cpp */; }; 17798F380A653000009733EB /* videl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E8B0A652B52009733EB /* videl.cpp */; }; 17798F390A653004009733EB /* yamaha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E8C0A652B52009733EB /* yamaha.cpp */; }; 17798F3A0A65300A009733EB /* nf_base.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D740A652B51009733EB /* nf_base.cpp */; }; 17798F3B0A65300C009733EB /* nf_objs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D780A652B51009733EB /* nf_objs.cpp */; }; 17798F3C0A653013009733EB /* xhdi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA80A652B51009733EB /* xhdi.cpp */; }; 17798F3D0A653017009733EB /* nfaudio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D7A0A652B51009733EB /* nfaudio.cpp */; }; 17798F3E0A65301A009733EB /* nfbootstrap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D7C0A652B51009733EB /* nfbootstrap.cpp */; }; 17798F3F0A65301E009733EB /* nfclipbrd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D820A652B51009733EB /* nfclipbrd.cpp */; }; 17798F400A653026009733EB /* nf_basicset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D760A652B51009733EB /* nf_basicset.cpp */; }; 17798F410A653032009733EB /* debugprintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D670A652B51009733EB /* debugprintf.cpp */; }; 17798F420A653038009733EB /* nfvdi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA20A652B51009733EB /* nfvdi.cpp */; }; 17798F430A65303B009733EB /* nfvdi_soft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA60A652B51009733EB /* nfvdi_soft.cpp */; }; 17798F450A653062009733EB /* nfcdrom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D7E0A652B51009733EB /* nfcdrom.cpp */; }; 17798F470A653093009733EB /* hostfs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D720A652B51009733EB /* hostfs.cpp */; }; 17798F480A6530AC009733EB /* aranym_glue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB70A652B51009733EB /* aranym_glue.cpp */; }; 17798F490A6530B5009733EB /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DDD0A652B51009733EB /* memory.cpp */; }; 17798F4A0A6530B9009733EB /* newcpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DDF0A652B51009733EB /* newcpu.cpp */; }; 17798F4B0A6530C0009733EB /* readcpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DE20A652B51009733EB /* readcpu.cpp */; }; 17798F540A653123009733EB /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DC60A652B51009733EB /* debug.cpp */; }; 17798F570A653142009733EB /* sdlgui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF70A652B50009733EB /* sdlgui.cpp */; }; 17798F580A65314F009733EB /* dlgFileSelect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF00A652B50009733EB /* dlgFileSelect.cpp */; }; 17798F590A653154009733EB /* file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF40A652B50009733EB /* file.cpp */; }; 17798F5A0A653157009733EB /* dlgMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF30A652B50009733EB /* dlgMain.cpp */; }; 17798F5B0A65315D009733EB /* dlgDisk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEF0A652B50009733EB /* dlgDisk.cpp */; }; 17798F5C0A653161009733EB /* dlgKeyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF20A652B50009733EB /* dlgKeyboard.cpp */; }; 17798F5D0A653163009733EB /* dlgHotkeys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF10A652B50009733EB /* dlgHotkeys.cpp */; }; 17798F5E0A653166009733EB /* dlgAlert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEE0A652B50009733EB /* dlgAlert.cpp */; }; 177990520A6538B5009733EB /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 177990510A6538B5009733EB /* IOKit.framework */; }; 177A4E0615AA29AC00780D11 /* ethernet_macosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17473D1515AA07FD00CAEA47 /* ethernet_macosx.cpp */; }; 177A4E0815AA29AD00780D11 /* ethernet_macosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17473D1515AA07FD00CAEA47 /* ethernet_macosx.cpp */; }; 177A4E0915AA29AE00780D11 /* ethernet_macosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17473D1515AA07FD00CAEA47 /* ethernet_macosx.cpp */; }; 177A4E0A15AA29BE00780D11 /* fd_trans.c in Sources */ = {isa = PBXBuildFile; fileRef = 17473D1715AA07FD00CAEA47 /* fd_trans.c */; }; 177A4E0B15AA29BF00780D11 /* fd_trans.c in Sources */ = {isa = PBXBuildFile; fileRef = 17473D1715AA07FD00CAEA47 /* fd_trans.c */; }; 177A4E0C15AA29C000780D11 /* fd_trans.c in Sources */ = {isa = PBXBuildFile; fileRef = 17473D1715AA07FD00CAEA47 /* fd_trans.c */; }; 17AAB12C0B206BF20016FB8D /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17AAB1190B206BF20016FB8D /* OpenGL.framework */; }; 17AAB1320B206C0E0016FB8D /* nfvdi_opengl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA40A652B51009733EB /* nfvdi_opengl.cpp */; }; 17AC409E13F1D42F003B4FAD /* cpudefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17AC409A13F1D403003B4FAD /* cpudefs.cpp */; }; 17AC409F13F1D434003B4FAD /* cpuemu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17AC409C13F1D403003B4FAD /* cpuemu.cpp */; }; 17AC40A013F1D436003B4FAD /* cpustbl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17AC409D13F1D403003B4FAD /* cpustbl.cpp */; }; 17B1146E151E6A4500E4EB0F /* MacAranym JIT.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = B439AC9B0C5B2FD00046EFC9 /* MacAranym JIT.app */; }; 17BCD7DC0B20F64F00432CE1 /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; }; 17BCD7DD0B20F64F00432CE1 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; 17BCD7DE0B20F64F00432CE1 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 177990510A6538B5009733EB /* IOKit.framework */; }; 17BCD7DF0B20F64F00432CE1 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17AAB1190B206BF20016FB8D /* OpenGL.framework */; }; 17BCD7E40B20F64F00432CE1 /* SDL.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 17BCD7F10B20F6BF00432CE1 /* parameters_MacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E420A652B51009733EB /* parameters_MacOSX.cpp */; }; 17BCD7F20B20F6BF00432CE1 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D5E0A652B50009733EB /* main.cpp */; }; 17BCD7F30B20F6BF00432CE1 /* vm_alloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E870A652B52009733EB /* vm_alloc.cpp */; }; 17BCD7F40B20F6BF00432CE1 /* host_clock_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E170A652B51009733EB /* host_clock_unix.cpp */; }; 17BCD7F50B20F6BF00432CE1 /* acia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD30A652B50009733EB /* acia.cpp */; }; 17BCD7F60B20F6BF00432CE1 /* acsifdc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD40A652B50009733EB /* acsifdc.cpp */; }; 17BCD7F70B20F6BF00432CE1 /* aradata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD50A652B50009733EB /* aradata.cpp */; }; 17BCD7F80B20F6BF00432CE1 /* aranym_exception.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD60A652B50009733EB /* aranym_exception.cpp */; }; 17BCD7F90B20F6BF00432CE1 /* ata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD70A652B50009733EB /* ata.cpp */; }; 17BCD7FA0B20F6BF00432CE1 /* audio_dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD90A652B50009733EB /* audio_dma.cpp */; }; 17BCD7FB0B20F6BF00432CE1 /* audio_crossbar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD80A652B50009733EB /* audio_crossbar.cpp */; }; 17BCD7FC0B20F6BF00432CE1 /* blitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDA0A652B50009733EB /* blitter.cpp */; }; 17BCD7FD0B20F6BF00432CE1 /* bootos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDE0A652B50009733EB /* bootos.cpp */; }; 17BCD7FE0B20F6BF00432CE1 /* bootos_emutos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDB0A652B50009733EB /* bootos_emutos.cpp */; }; 17BCD7FF0B20F6BF00432CE1 /* bootos_linux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDC0A652B50009733EB /* bootos_linux.cpp */; }; 17BCD8000B20F6BF00432CE1 /* bootos_tos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDD0A652B50009733EB /* bootos_tos.cpp */; }; 17BCD8010B20F6BF00432CE1 /* cdrom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDF0A652B50009733EB /* cdrom.cpp */; }; 17BCD8020B20F6BF00432CE1 /* cfgopts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CE00A652B50009733EB /* cfgopts.cpp */; }; 17BCD8030B20F6BF00432CE1 /* dsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CE90A652B50009733EB /* dsp.cpp */; }; 17BCD8040B20F6BF00432CE1 /* emul_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEA0A652B50009733EB /* emul_op.cpp */; }; 17BCD8050B20F6BF00432CE1 /* natfeats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAA0A652B51009733EB /* natfeats.cpp */; }; 17BCD8060B20F6BF00432CE1 /* fakeio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEB0A652B50009733EB /* fakeio.cpp */; }; 17BCD8070B20F6BF00432CE1 /* hardware.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF90A652B50009733EB /* hardware.cpp */; }; 17BCD8080B20F6BF00432CE1 /* host.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFC0A652B50009733EB /* host.cpp */; }; 17BCD8090B20F6BF00432CE1 /* host_audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFA0A652B50009733EB /* host_audio.cpp */; }; 17BCD80A0B20F6BF00432CE1 /* host_clock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFB0A652B50009733EB /* host_clock.cpp */; }; 17BCD80B0B20F6BF00432CE1 /* hostscreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFD0A652B50009733EB /* hostscreen.cpp */; }; 17BCD80C0B20F6BF00432CE1 /* ide.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFE0A652B50009733EB /* ide.cpp */; }; 17BCD80D0B20F6BF00432CE1 /* identify.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFF0A652B50009733EB /* identify.cpp */; }; 17BCD80E0B20F6BF00432CE1 /* ikbd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D000A652B50009733EB /* ikbd.cpp */; }; 17BCD80F0B20F6BF00432CE1 /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D390A652B50009733EB /* input.cpp */; }; 17BCD8100B20F6BF00432CE1 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D5F0A652B50009733EB /* md5.cpp */; }; 17BCD8110B20F6BF00432CE1 /* mfp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D600A652B50009733EB /* mfp.cpp */; }; 17BCD8120B20F6BF00432CE1 /* midi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D610A652B50009733EB /* midi.cpp */; }; 17BCD8130B20F6BF00432CE1 /* mmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D620A652B51009733EB /* mmu.cpp */; }; 17BCD8140B20F6BF00432CE1 /* ndebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAC0A652B51009733EB /* ndebug.cpp */; }; 17BCD8150B20F6BF00432CE1 /* ncr5380.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAB0A652B51009733EB /* ncr5380.cpp */; }; 17BCD8160B20F6BF00432CE1 /* parallel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB00A652B51009733EB /* parallel.cpp */; }; 17BCD8170B20F6BF00432CE1 /* parallel_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAD0A652B51009733EB /* parallel_file.cpp */; }; 17BCD8180B20F6BF00432CE1 /* parameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB10A652B51009733EB /* parameters.cpp */; }; 17BCD8190B20F6BF00432CE1 /* romdiff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB20A652B51009733EB /* romdiff.cpp */; }; 17BCD81A0B20F6BF00432CE1 /* rtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB30A652B51009733EB /* rtc.cpp */; }; 17BCD81B0B20F6BF00432CE1 /* tools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB50A652B51009733EB /* tools.cpp */; }; 17BCD81C0B20F6BF00432CE1 /* videl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E8B0A652B52009733EB /* videl.cpp */; }; 17BCD81D0B20F6BF00432CE1 /* yamaha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E8C0A652B52009733EB /* yamaha.cpp */; }; 17BCD81E0B20F6BF00432CE1 /* nf_base.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D740A652B51009733EB /* nf_base.cpp */; }; 17BCD81F0B20F6BF00432CE1 /* nf_objs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D780A652B51009733EB /* nf_objs.cpp */; }; 17BCD8200B20F6BF00432CE1 /* xhdi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA80A652B51009733EB /* xhdi.cpp */; }; 17BCD8210B20F6BF00432CE1 /* nfaudio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D7A0A652B51009733EB /* nfaudio.cpp */; }; 17BCD8220B20F6BF00432CE1 /* nfbootstrap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D7C0A652B51009733EB /* nfbootstrap.cpp */; }; 17BCD8230B20F6BF00432CE1 /* nfclipbrd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D820A652B51009733EB /* nfclipbrd.cpp */; }; 17BCD8240B20F6BF00432CE1 /* nf_basicset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D760A652B51009733EB /* nf_basicset.cpp */; }; 17BCD8250B20F6BF00432CE1 /* debugprintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D670A652B51009733EB /* debugprintf.cpp */; }; 17BCD8260B20F6BF00432CE1 /* nfvdi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA20A652B51009733EB /* nfvdi.cpp */; }; 17BCD8270B20F6BF00432CE1 /* nfvdi_soft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA60A652B51009733EB /* nfvdi_soft.cpp */; }; 17BCD8280B20F6BF00432CE1 /* nfcdrom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D7E0A652B51009733EB /* nfcdrom.cpp */; }; 17BCD8290B20F6BF00432CE1 /* hostfs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D720A652B51009733EB /* hostfs.cpp */; }; 17BCD82A0B20F6BF00432CE1 /* aranym_glue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB70A652B51009733EB /* aranym_glue.cpp */; }; 17BCD82B0B20F6BF00432CE1 /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DDD0A652B51009733EB /* memory.cpp */; }; 17BCD82C0B20F6BF00432CE1 /* newcpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DDF0A652B51009733EB /* newcpu.cpp */; }; 17BCD82D0B20F6BF00432CE1 /* readcpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DE20A652B51009733EB /* readcpu.cpp */; }; 17BCD8310B20F6BF00432CE1 /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DC60A652B51009733EB /* debug.cpp */; }; 17BCD8330B20F6BF00432CE1 /* sdlgui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF70A652B50009733EB /* sdlgui.cpp */; }; 17BCD8340B20F6BF00432CE1 /* dlgFileSelect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF00A652B50009733EB /* dlgFileSelect.cpp */; }; 17BCD8350B20F6BF00432CE1 /* file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF40A652B50009733EB /* file.cpp */; }; 17BCD8360B20F6BF00432CE1 /* dlgMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF30A652B50009733EB /* dlgMain.cpp */; }; 17BCD8370B20F6BF00432CE1 /* dlgKeyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF20A652B50009733EB /* dlgKeyboard.cpp */; }; 17BCD8380B20F6BF00432CE1 /* dlgHotkeys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF10A652B50009733EB /* dlgHotkeys.cpp */; }; 17BCD8390B20F6BF00432CE1 /* dlgAlert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEE0A652B50009733EB /* dlgAlert.cpp */; }; 17BCD83A0B20F6BF00432CE1 /* main_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E7C0A652B52009733EB /* main_unix.cpp */; }; 17BCD83B0B20F6BF00432CE1 /* dlgDisk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEF0A652B50009733EB /* dlgDisk.cpp */; }; 17BCD83C0B20F6BF00432CE1 /* cpummu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DC30A652B51009733EB /* cpummu.cpp */; }; 17BCD83D0B20F6BF00432CE1 /* midi_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17D5D2580AC70DBD003D0FE9 /* midi_file.cpp */; }; 17BCD83F0B20F6BF00432CE1 /* nfvdi_opengl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA40A652B51009733EB /* nfvdi_opengl.cpp */; }; 17BCD8B80B21004100432CE1 /* AUTHORS in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17BCD8B00B21004100432CE1 /* AUTHORS */; }; 17BCD8B90B21004100432CE1 /* BUGS in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17BCD8B10B21004100432CE1 /* BUGS */; }; 17BCD8BA0B21004100432CE1 /* ChangeLog in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17BCD8B20B21004100432CE1 /* ChangeLog */; }; 17BCD8BB0B21004100432CE1 /* COPYING in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17BCD8B30B21004100432CE1 /* COPYING */; }; 17BCD8BC0B21004100432CE1 /* FAQ in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17BCD8B40B21004100432CE1 /* FAQ */; }; 17BCD8BD0B21004100432CE1 /* NEWS in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17BCD8B50B21004100432CE1 /* NEWS */; }; 17BCD8BE0B21004100432CE1 /* README.md in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17BCD8B60B21004100432CE1 /* README.md */; }; 17BCD8BF0B21004100432CE1 /* TODO in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17BCD8B70B21004100432CE1 /* TODO */; }; 17BCD8C90B21010C00432CE1 /* config in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17BCD8C80B21010C00432CE1 /* config */; }; 17C0AFFD0CBB0A85000D2916 /* logo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17C0AFFC0CBB0A85000D2916 /* logo.cpp */; }; 17C0AFFE0CBB0A85000D2916 /* logo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17C0AFFC0CBB0A85000D2916 /* logo.cpp */; }; 17C0AFFF0CBB0A85000D2916 /* logo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17C0AFFC0CBB0A85000D2916 /* logo.cpp */; }; 17CDFE620B2196CD001BABB0 /* fpu_uae.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DD00A652B51009733EB /* fpu_uae.cpp */; }; 17D5D2590AC70DBD003D0FE9 /* midi_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17D5D2580AC70DBD003D0FE9 /* midi_file.cpp */; }; 17DA987515BC88EF00D0B5E4 /* fd_trans.c in Sources */ = {isa = PBXBuildFile; fileRef = 17473D1715AA07FD00CAEA47 /* fd_trans.c */; }; 17EC07E30ECB762900100ED7 /* dsp_core.c in Sources */ = {isa = PBXBuildFile; fileRef = 17EC07DF0ECB762900100ED7 /* dsp_core.c */; }; 17EC07E40ECB762900100ED7 /* dsp_cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 17EC07E00ECB762900100ED7 /* dsp_cpu.c */; }; 17EC07E70ECB762900100ED7 /* dsp_core.c in Sources */ = {isa = PBXBuildFile; fileRef = 17EC07DF0ECB762900100ED7 /* dsp_core.c */; }; 17EC07E80ECB762900100ED7 /* dsp_cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 17EC07E00ECB762900100ED7 /* dsp_cpu.c */; }; 17EC07E90ECB762900100ED7 /* dsp_disasm.c in Sources */ = {isa = PBXBuildFile; fileRef = 17EC07E10ECB762900100ED7 /* dsp_disasm.c */; }; 17EC07EB0ECB762900100ED7 /* dsp_core.c in Sources */ = {isa = PBXBuildFile; fileRef = 17EC07DF0ECB762900100ED7 /* dsp_core.c */; }; 17EC07EC0ECB762900100ED7 /* dsp_cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 17EC07E00ECB762900100ED7 /* dsp_cpu.c */; }; 17EC07ED0ECB762900100ED7 /* dsp_disasm.c in Sources */ = {isa = PBXBuildFile; fileRef = 17EC07E10ECB762900100ED7 /* dsp_disasm.c */; }; 17EC08D30ECB829E00100ED7 /* audio_conv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17EC08D20ECB829E00100ED7 /* audio_conv.cpp */; }; 17EC08D40ECB829E00100ED7 /* audio_conv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17EC08D20ECB829E00100ED7 /* audio_conv.cpp */; }; 17EC08D50ECB829E00100ED7 /* audio_conv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17EC08D20ECB829E00100ED7 /* audio_conv.cpp */; }; 17EC08D70ECB82B200100ED7 /* joypads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17EC080A0ECB774200100ED7 /* joypads.cpp */; }; 17EC08D80ECB82B700100ED7 /* joypads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17EC080A0ECB774200100ED7 /* joypads.cpp */; }; 17EC08D90ECB82BA00100ED7 /* joypads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17EC080A0ECB774200100ED7 /* joypads.cpp */; }; 17F10C641066C16500BDE380 /* clipbrd_darwin.M in Sources */ = {isa = PBXBuildFile; fileRef = 17F10C631066C16500BDE380 /* clipbrd_darwin.M */; }; 17F10C651066C16500BDE380 /* clipbrd_darwin.M in Sources */ = {isa = PBXBuildFile; fileRef = 17F10C631066C16500BDE380 /* clipbrd_darwin.M */; }; 17F10C661066C16500BDE380 /* clipbrd_darwin.M in Sources */ = {isa = PBXBuildFile; fileRef = 17F10C631066C16500BDE380 /* clipbrd_darwin.M */; }; 3424B2BE1F52C91100E0EFC3 /* libjpeg.dylib in Copy Executables */ = {isa = PBXBuildFile; fileRef = 170539181555D457006A6DDE /* libjpeg.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 3424B2BF1F52C91100E0EFC3 /* libjpeg.dylib in Copy Executables */ = {isa = PBXBuildFile; fileRef = 170539181555D457006A6DDE /* libjpeg.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 3424B2C01F52C91100E0EFC3 /* libjpeg.dylib in Copy Executables */ = {isa = PBXBuildFile; fileRef = 170539181555D457006A6DDE /* libjpeg.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 347084D81F52D105001D466A /* sdl_bmp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3424B2C11F52CF7300E0EFC3 /* sdl_bmp.cpp */; }; 347084D91F52D106001D466A /* sdl_bmp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3424B2C11F52CF7300E0EFC3 /* sdl_bmp.cpp */; }; 347084DA1F52D107001D466A /* sdl_bmp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3424B2C11F52CF7300E0EFC3 /* sdl_bmp.cpp */; }; 347084DB1F52D107001D466A /* sdl_bmp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3424B2C11F52CF7300E0EFC3 /* sdl_bmp.cpp */; }; 8C54C7DD20B45A2D007744DD /* disasm-x86-builtin.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C54C7D920B4597B007744DD /* disasm-x86-builtin.c */; }; 8C54C7DE20B45A41007744DD /* disasm-x86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C54C7DB20B459A0007744DD /* disasm-x86.cpp */; }; 8C54C7DF20B45A64007744DD /* disasm-x86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C54C7DB20B459A0007744DD /* disasm-x86.cpp */; }; 8C54C7E020B45A71007744DD /* disasm-x86-builtin.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C54C7D920B4597B007744DD /* disasm-x86-builtin.c */; }; 8C54C7E120B45A8B007744DD /* disasm-x86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C54C7DB20B459A0007744DD /* disasm-x86.cpp */; }; 8C54C7E220B45A8B007744DD /* disasm-x86-builtin.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C54C7D920B4597B007744DD /* disasm-x86-builtin.c */; }; 8C54C7E320B45AAC007744DD /* disasm-x86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C54C7DB20B459A0007744DD /* disasm-x86.cpp */; }; 8C54C7E420B45AAC007744DD /* disasm-x86-builtin.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C54C7D920B4597B007744DD /* disasm-x86-builtin.c */; }; 8C5BB711205DBC76000B8CFC /* logo.bmp in Resources */ = {isa = PBXBuildFile; fileRef = B449DA000D2A9212005F0CC6 /* logo.bmp */; }; 8C5BB712205DBC76000B8CFC /* aranym.icns in Resources */ = {isa = PBXBuildFile; fileRef = 1736B0FD0C70ED5900C56FAF /* aranym.icns */; }; 8C5BB713205DBC76000B8CFC /* aranym.nib in Resources */ = {isa = PBXBuildFile; fileRef = B428FAF50C7BA7100039CA66 /* aranym.nib */; }; 8C5BB714205DBC76000B8CFC /* logo.bmp in Resources */ = {isa = PBXBuildFile; fileRef = B449DA000D2A9212005F0CC6 /* logo.bmp */; }; 8C5BB715205DBC76000B8CFC /* aranym.icns in Resources */ = {isa = PBXBuildFile; fileRef = 1736B0FD0C70ED5900C56FAF /* aranym.icns */; }; 8C5BB716205DBC76000B8CFC /* aranym.nib in Resources */ = {isa = PBXBuildFile; fileRef = B428FAF50C7BA7100039CA66 /* aranym.nib */; }; 8C5BB717205DBC76000B8CFC /* logo.bmp in Resources */ = {isa = PBXBuildFile; fileRef = B449DA000D2A9212005F0CC6 /* logo.bmp */; }; 8C5BB718205DBC76000B8CFC /* aranym.icns in Resources */ = {isa = PBXBuildFile; fileRef = 1736B0FD0C70ED5900C56FAF /* aranym.icns */; }; 8C5BB719205DBC76000B8CFC /* aranym.nib in Resources */ = {isa = PBXBuildFile; fileRef = B428FAF50C7BA7100039CA66 /* aranym.nib */; }; 8C5BB71B205DBCFD000B8CFC /* nf_hostexec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C5BB71A205DBCFD000B8CFC /* nf_hostexec.cpp */; }; 8C5BB71C205DBCFD000B8CFC /* nf_hostexec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C5BB71A205DBCFD000B8CFC /* nf_hostexec.cpp */; }; 8C5BB71D205DBCFD000B8CFC /* nf_hostexec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C5BB71A205DBCFD000B8CFC /* nf_hostexec.cpp */; }; 8C5BB71E205DBCFD000B8CFC /* nf_hostexec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C5BB71A205DBCFD000B8CFC /* nf_hostexec.cpp */; }; 8C5BB721205DBE45000B8CFC /* nf_scsidrv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C5BB720205DBE44000B8CFC /* nf_scsidrv.cpp */; }; 8C5BB722205DBE45000B8CFC /* nf_scsidrv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C5BB720205DBE44000B8CFC /* nf_scsidrv.cpp */; }; 8C5BB723205DBE45000B8CFC /* nf_scsidrv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C5BB720205DBE44000B8CFC /* nf_scsidrv.cpp */; }; 8C5BB724205DBE45000B8CFC /* nf_scsidrv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C5BB720205DBE44000B8CFC /* nf_scsidrv.cpp */; }; 8CB53CB9203F14300005E5AD /* MacAranym SDL2.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8CB53C74203F0D530005E5AD /* MacAranym SDL2.app */; }; 8CB53CBA203F143C0005E5AD /* MacAranym JIT SDL2.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8CB53C89203F0D670005E5AD /* MacAranym JIT SDL2.app */; }; 8CB53CBB203F14480005E5AD /* MacAranym MMU SDL2.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8CB53C9E203F0D780005E5AD /* MacAranym MMU SDL2.app */; }; 8CB53CBD203F1EAD0005E5AD /* SDL2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8CB53CBC203F1EAD0005E5AD /* SDL2.framework */; }; 8CB53CBF203F1EBB0005E5AD /* SDL2_image.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8CB53CBE203F1EBA0005E5AD /* SDL2_image.framework */; }; 8CB53CC0203F24F80005E5AD /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; 8CB53CC1203F24F80005E5AD /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 177990510A6538B5009733EB /* IOKit.framework */; }; 8CB53CC2203F24F80005E5AD /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17AAB1190B206BF20016FB8D /* OpenGL.framework */; }; 8CB53CC3203F24F80005E5AD /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B4640D4B0C7C2E0F0000572B /* Security.framework */; }; 8CB53CC4203F24F80005E5AD /* SDL2_image.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8CB53CBE203F1EBA0005E5AD /* SDL2_image.framework */; }; 8CB53CC5203F24F80005E5AD /* SDL2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8CB53CBC203F1EAD0005E5AD /* SDL2.framework */; }; 8CB53CC6203F24F80005E5AD /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; 8CB53CC7203F24F80005E5AD /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 177990510A6538B5009733EB /* IOKit.framework */; }; 8CB53CC8203F24F80005E5AD /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17AAB1190B206BF20016FB8D /* OpenGL.framework */; }; 8CB53CC9203F24F80005E5AD /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B4640D4B0C7C2E0F0000572B /* Security.framework */; }; 8CB53CCA203F24F80005E5AD /* SDL2_image.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8CB53CBE203F1EBA0005E5AD /* SDL2_image.framework */; }; 8CB53CCB203F24F80005E5AD /* SDL2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8CB53CBC203F1EAD0005E5AD /* SDL2.framework */; }; 8CB53CCC203F24F80005E5AD /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; 8CB53CCD203F24F80005E5AD /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 177990510A6538B5009733EB /* IOKit.framework */; }; 8CB53CCE203F24F80005E5AD /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17AAB1190B206BF20016FB8D /* OpenGL.framework */; }; 8CB53CCF203F24F80005E5AD /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B4640D4B0C7C2E0F0000572B /* Security.framework */; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; B426E0F119D88567003EEB83 /* disasm-builtin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B426E0EF19D88567003EEB83 /* disasm-builtin.cpp */; }; B426E0F219D88567003EEB83 /* disasm-builtin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B426E0EF19D88567003EEB83 /* disasm-builtin.cpp */; }; B426E0F319D88567003EEB83 /* disasm-builtin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B426E0EF19D88567003EEB83 /* disasm-builtin.cpp */; }; B426E0F419D88567003EEB83 /* disasm-builtin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B426E0EF19D88567003EEB83 /* disasm-builtin.cpp */; }; B426E0F519D88567003EEB83 /* disasm-glue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B426E0F019D88567003EEB83 /* disasm-glue.cpp */; }; B426E0F619D88567003EEB83 /* disasm-glue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B426E0F019D88567003EEB83 /* disasm-glue.cpp */; }; B426E0F719D88567003EEB83 /* disasm-glue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B426E0F019D88567003EEB83 /* disasm-glue.cpp */; }; B426E0F819D88567003EEB83 /* disasm-glue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B426E0F019D88567003EEB83 /* disasm-glue.cpp */; }; B428FAF70C7BA7100039CA66 /* aranym.nib in Resources */ = {isa = PBXBuildFile; fileRef = B428FAF50C7BA7100039CA66 /* aranym.nib */; }; B428FAF80C7BA7100039CA66 /* aranym.nib in Resources */ = {isa = PBXBuildFile; fileRef = B428FAF50C7BA7100039CA66 /* aranym.nib */; }; B428FAF90C7BA7100039CA66 /* aranym.nib in Resources */ = {isa = PBXBuildFile; fileRef = B428FAF50C7BA7100039CA66 /* aranym.nib */; }; B439AC360C5B2FD00046EFC9 /* parameters_MacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E420A652B51009733EB /* parameters_MacOSX.cpp */; }; B439AC370C5B2FD00046EFC9 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D5E0A652B50009733EB /* main.cpp */; }; B439AC380C5B2FD00046EFC9 /* compemu_support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DBE0A652B51009733EB /* compemu_support.cpp */; }; B439AC390C5B2FD00046EFC9 /* vm_alloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E870A652B52009733EB /* vm_alloc.cpp */; }; B439AC3A0C5B2FD00046EFC9 /* host_clock_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E170A652B51009733EB /* host_clock_unix.cpp */; }; B439AC3B0C5B2FD00046EFC9 /* acia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD30A652B50009733EB /* acia.cpp */; }; B439AC3C0C5B2FD00046EFC9 /* acsifdc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD40A652B50009733EB /* acsifdc.cpp */; }; B439AC3D0C5B2FD00046EFC9 /* aradata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD50A652B50009733EB /* aradata.cpp */; }; B439AC3E0C5B2FD00046EFC9 /* aranym_exception.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD60A652B50009733EB /* aranym_exception.cpp */; }; B439AC3F0C5B2FD00046EFC9 /* ata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD70A652B50009733EB /* ata.cpp */; }; B439AC400C5B2FD00046EFC9 /* audio_dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD90A652B50009733EB /* audio_dma.cpp */; }; B439AC410C5B2FD00046EFC9 /* audio_crossbar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CD80A652B50009733EB /* audio_crossbar.cpp */; }; B439AC420C5B2FD00046EFC9 /* blitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDA0A652B50009733EB /* blitter.cpp */; }; B439AC430C5B2FD00046EFC9 /* bootos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDE0A652B50009733EB /* bootos.cpp */; }; B439AC440C5B2FD00046EFC9 /* bootos_emutos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDB0A652B50009733EB /* bootos_emutos.cpp */; }; B439AC450C5B2FD00046EFC9 /* bootos_linux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDC0A652B50009733EB /* bootos_linux.cpp */; }; B439AC460C5B2FD00046EFC9 /* bootos_tos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDD0A652B50009733EB /* bootos_tos.cpp */; }; B439AC480C5B2FD00046EFC9 /* cdrom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CDF0A652B50009733EB /* cdrom.cpp */; }; B439AC490C5B2FD00046EFC9 /* cfgopts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CE00A652B50009733EB /* cfgopts.cpp */; }; B439AC4A0C5B2FD00046EFC9 /* dsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CE90A652B50009733EB /* dsp.cpp */; }; B439AC4B0C5B2FD00046EFC9 /* emul_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEA0A652B50009733EB /* emul_op.cpp */; }; B439AC4C0C5B2FD00046EFC9 /* natfeats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAA0A652B51009733EB /* natfeats.cpp */; }; B439AC4D0C5B2FD00046EFC9 /* fakeio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEB0A652B50009733EB /* fakeio.cpp */; }; B439AC4E0C5B2FD00046EFC9 /* hardware.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF90A652B50009733EB /* hardware.cpp */; }; B439AC4F0C5B2FD00046EFC9 /* host.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFC0A652B50009733EB /* host.cpp */; }; B439AC500C5B2FD00046EFC9 /* host_audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFA0A652B50009733EB /* host_audio.cpp */; }; B439AC510C5B2FD00046EFC9 /* host_clock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFB0A652B50009733EB /* host_clock.cpp */; }; B439AC520C5B2FD00046EFC9 /* hostscreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFD0A652B50009733EB /* hostscreen.cpp */; }; B439AC530C5B2FD00046EFC9 /* ide.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFE0A652B50009733EB /* ide.cpp */; }; B439AC540C5B2FD00046EFC9 /* identify.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CFF0A652B50009733EB /* identify.cpp */; }; B439AC550C5B2FD00046EFC9 /* ikbd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D000A652B50009733EB /* ikbd.cpp */; }; B439AC560C5B2FD00046EFC9 /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D390A652B50009733EB /* input.cpp */; }; B439AC570C5B2FD00046EFC9 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D5F0A652B50009733EB /* md5.cpp */; }; B439AC580C5B2FD00046EFC9 /* mfp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D600A652B50009733EB /* mfp.cpp */; }; B439AC590C5B2FD00046EFC9 /* midi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D610A652B50009733EB /* midi.cpp */; }; B439AC5A0C5B2FD00046EFC9 /* mmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D620A652B51009733EB /* mmu.cpp */; }; B439AC5B0C5B2FD00046EFC9 /* ndebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAC0A652B51009733EB /* ndebug.cpp */; }; B439AC5C0C5B2FD00046EFC9 /* ncr5380.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAB0A652B51009733EB /* ncr5380.cpp */; }; B439AC5D0C5B2FD00046EFC9 /* parallel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB00A652B51009733EB /* parallel.cpp */; }; B439AC5E0C5B2FD00046EFC9 /* parallel_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DAD0A652B51009733EB /* parallel_file.cpp */; }; B439AC5F0C5B2FD00046EFC9 /* parameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB10A652B51009733EB /* parameters.cpp */; }; B439AC600C5B2FD00046EFC9 /* romdiff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB20A652B51009733EB /* romdiff.cpp */; }; B439AC610C5B2FD00046EFC9 /* rtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB30A652B51009733EB /* rtc.cpp */; }; B439AC620C5B2FD00046EFC9 /* tools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB50A652B51009733EB /* tools.cpp */; }; B439AC630C5B2FD00046EFC9 /* videl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E8B0A652B52009733EB /* videl.cpp */; }; B439AC640C5B2FD00046EFC9 /* yamaha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E8C0A652B52009733EB /* yamaha.cpp */; }; B439AC650C5B2FD00046EFC9 /* nf_base.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D740A652B51009733EB /* nf_base.cpp */; }; B439AC660C5B2FD00046EFC9 /* nf_objs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D780A652B51009733EB /* nf_objs.cpp */; }; B439AC670C5B2FD00046EFC9 /* xhdi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA80A652B51009733EB /* xhdi.cpp */; }; B439AC680C5B2FD00046EFC9 /* nfaudio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D7A0A652B51009733EB /* nfaudio.cpp */; }; B439AC690C5B2FD00046EFC9 /* nfbootstrap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D7C0A652B51009733EB /* nfbootstrap.cpp */; }; B439AC6A0C5B2FD00046EFC9 /* nfclipbrd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D820A652B51009733EB /* nfclipbrd.cpp */; }; B439AC6B0C5B2FD00046EFC9 /* nf_basicset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D760A652B51009733EB /* nf_basicset.cpp */; }; B439AC6C0C5B2FD00046EFC9 /* debugprintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D670A652B51009733EB /* debugprintf.cpp */; }; B439AC6D0C5B2FD00046EFC9 /* nfvdi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA20A652B51009733EB /* nfvdi.cpp */; }; B439AC6E0C5B2FD00046EFC9 /* nfvdi_soft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA60A652B51009733EB /* nfvdi_soft.cpp */; }; B439AC6F0C5B2FD00046EFC9 /* nfcdrom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D7E0A652B51009733EB /* nfcdrom.cpp */; }; B439AC700C5B2FD00046EFC9 /* hostfs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D720A652B51009733EB /* hostfs.cpp */; }; B439AC710C5B2FD00046EFC9 /* aranym_glue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DB70A652B51009733EB /* aranym_glue.cpp */; }; B439AC720C5B2FD00046EFC9 /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DDD0A652B51009733EB /* memory.cpp */; }; B439AC730C5B2FD00046EFC9 /* newcpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DDF0A652B51009733EB /* newcpu.cpp */; }; B439AC740C5B2FD00046EFC9 /* readcpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DE20A652B51009733EB /* readcpu.cpp */; }; B439AC770C5B2FD00046EFC9 /* sdlgui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF70A652B50009733EB /* sdlgui.cpp */; }; B439AC780C5B2FD00046EFC9 /* dlgFileSelect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF00A652B50009733EB /* dlgFileSelect.cpp */; }; B439AC790C5B2FD00046EFC9 /* file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF40A652B50009733EB /* file.cpp */; }; B439AC7A0C5B2FD00046EFC9 /* dlgMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF30A652B50009733EB /* dlgMain.cpp */; }; B439AC7B0C5B2FD00046EFC9 /* dlgDisk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEF0A652B50009733EB /* dlgDisk.cpp */; }; B439AC7C0C5B2FD00046EFC9 /* dlgKeyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF20A652B50009733EB /* dlgKeyboard.cpp */; }; B439AC7D0C5B2FD00046EFC9 /* dlgHotkeys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CF10A652B50009733EB /* dlgHotkeys.cpp */; }; B439AC7E0C5B2FD00046EFC9 /* dlgAlert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798CEE0A652B50009733EB /* dlgAlert.cpp */; }; B439AC7F0C5B2FD00046EFC9 /* main_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798E7C0A652B52009733EB /* main_unix.cpp */; }; B439AC800C5B2FD00046EFC9 /* midi_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17D5D2580AC70DBD003D0FE9 /* midi_file.cpp */; }; B439AC810C5B2FD00046EFC9 /* nfvdi_opengl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DA40A652B51009733EB /* nfvdi_opengl.cpp */; }; B439AC840C5B2FD00046EFC9 /* dyngl.c in Sources */ = {isa = PBXBuildFile; fileRef = 170C2B850BB872920026484E /* dyngl.c */; }; B439AC850C5B2FD00046EFC9 /* cpummu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DC30A652B51009733EB /* cpummu.cpp */; }; B439AC860C5B2FD00046EFC9 /* dlgOs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 171B2BD30C4017C9007D8975 /* dlgOs.cpp */; }; B439AC870C5B2FD00046EFC9 /* dlgVideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 171B2BD40C4017C9007D8975 /* dlgVideo.cpp */; }; B439AC880C5B2FD00046EFC9 /* sigsegv_darwin_x86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B4F337B90C480C4A00B3A0A9 /* sigsegv_darwin_x86.cpp */; }; B439AC8B0C5B2FD00046EFC9 /* dlgNetwork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B491646E0C5406D900CFB5B0 /* dlgNetwork.cpp */; }; B439AC8E0C5B2FD00046EFC9 /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; }; B439AC8F0C5B2FD00046EFC9 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; B439AC900C5B2FD00046EFC9 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 177990510A6538B5009733EB /* IOKit.framework */; }; B439AC910C5B2FD00046EFC9 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17AAB1190B206BF20016FB8D /* OpenGL.framework */; }; B439AC960C5B2FD00046EFC9 /* SDL.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; B439AC9E0C5B30040046EFC9 /* fpu_ieee.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DCE0A652B51009733EB /* fpu_ieee.cpp */; }; B43DC1970C635DFA0014243B /* compemu_fpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DBD0A652B51009733EB /* compemu_fpp.cpp */; }; B442F1A1193C9BC100D515B8 /* nfcdrom_sdl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B442F19F193C9BC100D515B8 /* nfcdrom_sdl.cpp */; }; B442F1A2193C9BC100D515B8 /* nfcdrom_sdl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B442F19F193C9BC100D515B8 /* nfcdrom_sdl.cpp */; }; B442F1A3193C9BC100D515B8 /* nfcdrom_sdl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B442F19F193C9BC100D515B8 /* nfcdrom_sdl.cpp */; }; B442F1A4193C9BC100D515B8 /* nfcdrom_sdl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B442F19F193C9BC100D515B8 /* nfcdrom_sdl.cpp */; }; B449D9E00D2A8D37005F0CC6 /* SDL_image.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B2B51A0C41781B00595D44 /* SDL_image.framework */; }; B449D9EA0D2A8DD5005F0CC6 /* SDL_image.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = 17B2B51A0C41781B00595D44 /* SDL_image.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; B449D9F30D2A8E68005F0CC6 /* SDL_image.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B2B51A0C41781B00595D44 /* SDL_image.framework */; }; B449D9F40D2A8E6F005F0CC6 /* SDL_image.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = 17B2B51A0C41781B00595D44 /* SDL_image.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; B449D9F50D2A8E78005F0CC6 /* SDL_image.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B2B51A0C41781B00595D44 /* SDL_image.framework */; }; B449D9F60D2A8E86005F0CC6 /* SDL_image.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = 17B2B51A0C41781B00595D44 /* SDL_image.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; B449DA010D2A9222005F0CC6 /* logo.bmp in Resources */ = {isa = PBXBuildFile; fileRef = B449DA000D2A9212005F0CC6 /* logo.bmp */; }; B449DA020D2A922C005F0CC6 /* logo.bmp in Resources */ = {isa = PBXBuildFile; fileRef = B449DA000D2A9212005F0CC6 /* logo.bmp */; }; B449DA030D2A9234005F0CC6 /* logo.bmp in Resources */ = {isa = PBXBuildFile; fileRef = B449DA000D2A9212005F0CC6 /* logo.bmp */; }; B44B01B10D07443D0017F23B /* dialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B00D07443D0017F23B /* dialog.cpp */; }; B44B01B20D07443D0017F23B /* dialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B00D07443D0017F23B /* dialog.cpp */; }; B44B01B30D07443D0017F23B /* dialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B00D07443D0017F23B /* dialog.cpp */; }; B44B01B80D07447F0017F23B /* host_surface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B50D07447F0017F23B /* host_surface.cpp */; }; B44B01B90D07447F0017F23B /* host_surface_opengl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B60D07447F0017F23B /* host_surface_opengl.cpp */; }; B44B01BA0D07447F0017F23B /* hostscreen_opengl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B70D07447F0017F23B /* hostscreen_opengl.cpp */; }; B44B01BB0D07447F0017F23B /* host_surface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B50D07447F0017F23B /* host_surface.cpp */; }; B44B01BC0D07447F0017F23B /* host_surface_opengl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B60D07447F0017F23B /* host_surface_opengl.cpp */; }; B44B01BD0D07447F0017F23B /* hostscreen_opengl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B70D07447F0017F23B /* hostscreen_opengl.cpp */; }; B44B01BE0D07447F0017F23B /* host_surface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B50D07447F0017F23B /* host_surface.cpp */; }; B44B01BF0D07447F0017F23B /* host_surface_opengl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B60D07447F0017F23B /* host_surface_opengl.cpp */; }; B44B01C00D07447F0017F23B /* hostscreen_opengl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01B70D07447F0017F23B /* hostscreen_opengl.cpp */; }; B44B01C50D0744D30017F23B /* dlgKeypress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01C40D0744D30017F23B /* dlgKeypress.cpp */; }; B44B01C60D0744D30017F23B /* dlgKeypress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01C40D0744D30017F23B /* dlgKeypress.cpp */; }; B44B01C70D0744D30017F23B /* dlgKeypress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B44B01C40D0744D30017F23B /* dlgKeypress.cpp */; }; B4640D4C0C7C2E0F0000572B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B4640D4B0C7C2E0F0000572B /* Security.framework */; }; B4640D4D0C7C2E0F0000572B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B4640D4B0C7C2E0F0000572B /* Security.framework */; }; B4640D4E0C7C2E0F0000572B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B4640D4B0C7C2E0F0000572B /* Security.framework */; }; B471E7C10D2A88750021DFA7 /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = B471E7C00D2A88750021DFA7 /* adler32.c */; }; B471E7C20D2A88750021DFA7 /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = B471E7C00D2A88750021DFA7 /* adler32.c */; }; B471E7C30D2A88750021DFA7 /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = B471E7C00D2A88750021DFA7 /* adler32.c */; }; B475E5A70D4FA41500C8607E /* dlgPartition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B475E5A60D4FA41500C8607E /* dlgPartition.cpp */; }; B475E5A80D4FA41500C8607E /* dlgPartition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B475E5A60D4FA41500C8607E /* dlgPartition.cpp */; }; B475E5A90D4FA41500C8607E /* dlgPartition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B475E5A60D4FA41500C8607E /* dlgPartition.cpp */; }; B49164700C5406D900CFB5B0 /* dlgNetwork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B491646E0C5406D900CFB5B0 /* dlgNetwork.cpp */; }; B49164710C5406D900CFB5B0 /* dlgNetwork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B491646E0C5406D900CFB5B0 /* dlgNetwork.cpp */; }; B4A1F1440D2AB709004220C2 /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798DC60A652B51009733EB /* debug.cpp */; }; B4A9E9C50C5B33AC00C156C3 /* ethernet_darwin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B4A9E9C10C5B33AC00C156C3 /* ethernet_darwin.cpp */; }; B4A9EBEE0C5B374A00C156C3 /* ethernet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D6F0A652B51009733EB /* ethernet.cpp */; }; B4A9EC060C5B3C1400C156C3 /* ethernet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D6F0A652B51009733EB /* ethernet.cpp */; }; B4A9EC070C5B3C1400C156C3 /* ethernet_darwin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B4A9E9C10C5B33AC00C156C3 /* ethernet_darwin.cpp */; }; B4A9EC080C5B3C3900C156C3 /* ethernet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D6F0A652B51009733EB /* ethernet.cpp */; }; B4A9EC090C5B3C3900C156C3 /* ethernet_darwin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B4A9E9C10C5B33AC00C156C3 /* ethernet_darwin.cpp */; }; B4C7EE951768552800B63B96 /* MachServer.c in Sources */ = {isa = PBXBuildFile; fileRef = B4C7EE931768552800B63B96 /* MachServer.c */; }; B4C7EE961768552800B63B96 /* MachUser.c in Sources */ = {isa = PBXBuildFile; fileRef = B4C7EE941768552800B63B96 /* MachUser.c */; }; B4E213CE0C5BA74600138A7F /* MacAranym MMU.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17BCD7E90B20F65000432CE1 /* MacAranym MMU.app */; }; B4E213CF0C5BA74600138A7F /* MacAranym.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8D1107320486CEB800E47090 /* MacAranym.app */; }; CBBC87021B5F97DE00C0DABF /* glenums.c in Sources */ = {isa = PBXBuildFile; fileRef = CBBC87011B5F97DE00C0DABF /* glenums.c */; }; CBBC87031B5F97DE00C0DABF /* glenums.c in Sources */ = {isa = PBXBuildFile; fileRef = CBBC87011B5F97DE00C0DABF /* glenums.c */; }; CBBC87041B5F97DE00C0DABF /* glenums.c in Sources */ = {isa = PBXBuildFile; fileRef = CBBC87011B5F97DE00C0DABF /* glenums.c */; }; CBBC87051B5F97DE00C0DABF /* glenums.c in Sources */ = {isa = PBXBuildFile; fileRef = CBBC87011B5F97DE00C0DABF /* glenums.c */; }; CBCE37AF1B05B76100A19E4D /* maptab.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBCE37AE1B05B76100A19E4D /* maptab.cpp */; }; CBCE37B01B05B76100A19E4D /* maptab.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBCE37AE1B05B76100A19E4D /* maptab.cpp */; }; CBCE37B11B05B76100A19E4D /* maptab.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBCE37AE1B05B76100A19E4D /* maptab.cpp */; }; CBCE37B21B05B76100A19E4D /* maptab.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBCE37AE1B05B76100A19E4D /* maptab.cpp */; }; CBD0F4951B5CFDD60081A555 /* osmesa_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBD0F4941B5CFDD60081A555 /* osmesa_context.cpp */; }; CBD0F4961B5CFDD60081A555 /* osmesa_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBD0F4941B5CFDD60081A555 /* osmesa_context.cpp */; }; CBD0F4971B5CFDD60081A555 /* osmesa_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBD0F4941B5CFDD60081A555 /* osmesa_context.cpp */; }; CBD0F4981B5CFDD60081A555 /* osmesa_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBD0F4941B5CFDD60081A555 /* osmesa_context.cpp */; }; CBD862F01B2D8FA0003357BC /* nfosmesa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D9C0A652B51009733EB /* nfosmesa.cpp */; }; CBD862F11B2D8FA1003357BC /* nfosmesa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D9C0A652B51009733EB /* nfosmesa.cpp */; }; CBD862F21B2D8FA3003357BC /* nfosmesa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D9C0A652B51009733EB /* nfosmesa.cpp */; }; CBD862F31B2D8FA4003357BC /* nfosmesa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17798D9C0A652B51009733EB /* nfosmesa.cpp */; }; CBEA27B31AF6527500B12FC5 /* dlgHostfs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBEA27B21AF6527500B12FC5 /* dlgHostfs.cpp */; }; CBEA27B41AF6527500B12FC5 /* dlgHostfs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBEA27B21AF6527500B12FC5 /* dlgHostfs.cpp */; }; CBEA27B51AF6527500B12FC5 /* dlgHostfs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBEA27B21AF6527500B12FC5 /* dlgHostfs.cpp */; }; CBEA27B61AF6527500B12FC5 /* dlgHostfs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBEA27B21AF6527500B12FC5 /* dlgHostfs.cpp */; }; CBEA27C01AF65A6900B12FC5 /* cpufunctbl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBEA27BF1AF65A6900B12FC5 /* cpufunctbl.cpp */; }; CBEA27C11AF65A6900B12FC5 /* cpufunctbl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBEA27BF1AF65A6900B12FC5 /* cpufunctbl.cpp */; }; CBEA27C21AF65A6900B12FC5 /* cpufunctbl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBEA27BF1AF65A6900B12FC5 /* cpufunctbl.cpp */; }; CBEA27C31AF65A6900B12FC5 /* cpufunctbl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CBEA27BF1AF65A6900B12FC5 /* cpufunctbl.cpp */; }; F83B575E0C8B143300BA68D4 /* SDLHotkeysRefresh.M in Sources */ = {isa = PBXBuildFile; fileRef = F83B575D0C8B143300BA68D4 /* SDLHotkeysRefresh.M */; }; F83B575F0C8B143300BA68D4 /* SDLHotkeysRefresh.M in Sources */ = {isa = PBXBuildFile; fileRef = F83B575D0C8B143300BA68D4 /* SDLHotkeysRefresh.M */; }; F83B57600C8B143300BA68D4 /* SDLHotkeysRefresh.M in Sources */ = {isa = PBXBuildFile; fileRef = F83B575D0C8B143300BA68D4 /* SDLHotkeysRefresh.M */; }; F83B576D0C8B1F0100BA68D4 /* videl_zoom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F83B576C0C8B1F0100BA68D4 /* videl_zoom.cpp */; }; F83B576E0C8B1F0100BA68D4 /* videl_zoom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F83B576C0C8B1F0100BA68D4 /* videl_zoom.cpp */; }; F83B576F0C8B1F0100BA68D4 /* videl_zoom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F83B576C0C8B1F0100BA68D4 /* videl_zoom.cpp */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ 17473D3315AA0A5D00CAEA47 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 17473D2415AA0A1100CAEA47; remoteInfo = bpf_helper; }; 17473D3815AA0FF400CAEA47 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 17473D2415AA0A1100CAEA47; remoteInfo = bpf_helper; }; 17473D3A15AA0FF800CAEA47 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 17473D2415AA0A1100CAEA47; remoteInfo = bpf_helper; }; 17473D3C15AA0FFA00CAEA47 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 17473D2415AA0A1100CAEA47; remoteInfo = bpf_helper; }; 17B1145E151E696B00E4EB0F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = B439AC2F0C5B2FD00046EFC9; remoteInfo = "MacAranym JIT IEEE"; }; 17D10CA70C401D940083E7F2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 8D1107260486CEB800E47090; remoteInfo = MacAranym; }; 17D10CA90C401D940083E7F2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 17BCD7880B20F64F00432CE1; remoteInfo = "MacAranym MMU"; }; 8CB53CB2203F110B0005E5AD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 8CB53C73203F0D530005E5AD; remoteInfo = "MacAranym SDL2"; }; 8CB53CB4203F11100005E5AD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 8CB53C88203F0D670005E5AD; remoteInfo = "MacAranym JIT SDL2"; }; 8CB53CB6203F11160005E5AD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 8CB53C9D203F0D780005E5AD; remoteInfo = "MacAranym MMU SDL2"; }; 8CB53CD0203F260F0005E5AD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 17473D2415AA0A1100CAEA47; remoteInfo = bpf_helper; }; 8CB53CD2203F26160005E5AD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = CB4679531AFA78430090A72D; remoteInfo = ExternalScript; }; 8CB53CD4203F261F0005E5AD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 17473D2415AA0A1100CAEA47; remoteInfo = bpf_helper; }; 8CB53CD6203F26270005E5AD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = CB4679531AFA78430090A72D; remoteInfo = ExternalScript; }; 8CB53CD8203F26320005E5AD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 17473D2415AA0A1100CAEA47; remoteInfo = bpf_helper; }; 8CB53CDA203F26380005E5AD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = CB4679531AFA78430090A72D; remoteInfo = ExternalScript; }; CB4679581AFA79440090A72D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = CB4679531AFA78430090A72D; remoteInfo = ExternalScript; }; CB46795A1AFA79700090A72D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = CB4679531AFA78430090A72D; remoteInfo = ExternalScript; }; CB46795C1AFA79AC0090A72D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = CB4679531AFA78430090A72D; remoteInfo = ExternalScript; }; CB46795E1AFA79C10090A72D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = CB4679531AFA78430090A72D; remoteInfo = ExternalScript; }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ 002F39FD09D0883400EBEB88 /* Copy Frameworks into .app bundle */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( B449D9F60D2A8E86005F0CC6 /* SDL_image.framework in Copy Frameworks into .app bundle */, 002F3A0009D0884600EBEB88 /* SDL.framework in Copy Frameworks into .app bundle */, ); name = "Copy Frameworks into .app bundle"; runOnlyForDeploymentPostprocessing = 0; }; 170539191555D5BF006A6DDE /* Copy Executables */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 6; files = ( 17473D4415AA112F00CAEA47 /* bpf_helper in Copy Executables */, 1705391A1555D5DC006A6DDE /* libgmp.dylib in Copy Executables */, 1705391B1555D5DC006A6DDE /* libmpfr.dylib in Copy Executables */, 3424B2C01F52C91100E0EFC3 /* libjpeg.dylib in Copy Executables */, ); name = "Copy Executables"; runOnlyForDeploymentPostprocessing = 0; }; 17473D2315AA0A1100CAEA47 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = /usr/share/man/man1/; dstSubfolderSpec = 0; files = ( ); runOnlyForDeploymentPostprocessing = 1; }; 17473D3515AA0A7500CAEA47 /* Copy Executables */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 6; files = ( 17473D3715AA0A9600CAEA47 /* bpf_helper in Copy Executables */, 1705391C1555D5DC006A6DDE /* libjpeg.dylib in Copy Executables */, ); name = "Copy Executables"; runOnlyForDeploymentPostprocessing = 0; }; 17473D3E15AA103E00CAEA47 /* Copy Executables */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 6; files = ( 17473D3F15AA104900CAEA47 /* bpf_helper in Copy Executables */, 3424B2BE1F52C91100E0EFC3 /* libjpeg.dylib in Copy Executables */, ); name = "Copy Executables"; runOnlyForDeploymentPostprocessing = 0; }; 17473D4015AA106700CAEA47 /* Copy Executables */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 6; files = ( 17473D4115AA107800CAEA47 /* bpf_helper in Copy Executables */, 3424B2BF1F52C91100E0EFC3 /* libjpeg.dylib in Copy Executables */, ); name = "Copy Executables"; runOnlyForDeploymentPostprocessing = 0; }; 1778A4DA1555A8A70005B336 /* Copy Frameworks into .app bundle */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( 1778A4DB1555A8A70005B336 /* SDL_image.framework in Copy Frameworks into .app bundle */, 1778A4DC1555A8A70005B336 /* SDL.framework in Copy Frameworks into .app bundle */, ); name = "Copy Frameworks into .app bundle"; runOnlyForDeploymentPostprocessing = 0; }; 17BCD7E30B20F64F00432CE1 /* Copy Frameworks into .app bundle */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( B449D9EA0D2A8DD5005F0CC6 /* SDL_image.framework in Copy Frameworks into .app bundle */, 17BCD7E40B20F64F00432CE1 /* SDL.framework in Copy Frameworks into .app bundle */, ); name = "Copy Frameworks into .app bundle"; runOnlyForDeploymentPostprocessing = 0; }; 17BCD8A20B20FFC200432CE1 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "aranym-xxx-macosx/DOC"; dstSubfolderSpec = 16; files = ( 17BCD8B80B21004100432CE1 /* AUTHORS in CopyFiles */, 17BCD8B90B21004100432CE1 /* BUGS in CopyFiles */, 17BCD8BA0B21004100432CE1 /* ChangeLog in CopyFiles */, 17BCD8BB0B21004100432CE1 /* COPYING in CopyFiles */, 17BCD8BC0B21004100432CE1 /* FAQ in CopyFiles */, 17BCD8BD0B21004100432CE1 /* NEWS in CopyFiles */, 17BCD8BE0B21004100432CE1 /* README.md in CopyFiles */, 17BCD8BF0B21004100432CE1 /* TODO in CopyFiles */, 17BCD8C90B21010C00432CE1 /* config in CopyFiles */, 17398E120B21048100A9B4DB /* README.rtf in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; B439AC950C5B2FD00046EFC9 /* Copy Frameworks into .app bundle */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( B449D9F40D2A8E6F005F0CC6 /* SDL_image.framework in Copy Frameworks into .app bundle */, B439AC960C5B2FD00046EFC9 /* SDL.framework in Copy Frameworks into .app bundle */, ); name = "Copy Frameworks into .app bundle"; runOnlyForDeploymentPostprocessing = 0; }; B439AC950C5B2FD00046EFCA /* Copy Frameworks into .app bundle */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( 002F3A0009D0884600EBEB8A /* SDL2_image.framework in Copy Frameworks into .app bundle */, 002F3A0009D0884600EBEB89 /* SDL2.framework in Copy Frameworks into .app bundle */, ); name = "Copy Frameworks into .app bundle"; runOnlyForDeploymentPostprocessing = 0; }; B4E213CC0C5BA71A00138A7F /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "aranym-xxx-macosx"; dstSubfolderSpec = 16; files = ( 8CB53CBB203F14480005E5AD /* MacAranym MMU SDL2.app in CopyFiles */, 8CB53CBA203F143C0005E5AD /* MacAranym JIT SDL2.app in CopyFiles */, 8CB53CB9203F14300005E5AD /* MacAranym SDL2.app in CopyFiles */, 1730EDFD160F9BDF002EC84E /* README_ethernet.rtf in CopyFiles */, B4E213CE0C5BA74600138A7F /* MacAranym MMU.app in CopyFiles */, B4E213CF0C5BA74600138A7F /* MacAranym.app in CopyFiles */, 17B1146E151E6A4500E4EB0F /* MacAranym JIT.app in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ 002F39F909D0881F00EBEB88 /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SDL.framework; sourceTree = ""; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 170539131555D457006A6DDE /* libgmp.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libgmp.dylib; path = external/lib/libgmp.dylib; sourceTree = SOURCE_ROOT; }; 170539141555D457006A6DDE /* libmpfr.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libmpfr.dylib; path = external/lib/libmpfr.dylib; sourceTree = SOURCE_ROOT; }; 170539181555D457006A6DDE /* libjpeg.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libjpeg.dylib; path = external/lib/libjpeg.dylib; sourceTree = SOURCE_ROOT; }; 170C2B850BB872920026484E /* dyngl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = dyngl.c; path = ../../dyngl.c; sourceTree = SOURCE_ROOT; }; 1717E85A151680B900D416FA /* dlgUsb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dlgUsb.cpp; sourceTree = ""; }; 171A3F0E154F2765005F6C9D /* fpu_mpfr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fpu_mpfr.cpp; sourceTree = ""; }; 171B2BD30C4017C9007D8975 /* dlgOs.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = dlgOs.cpp; sourceTree = ""; }; 171B2BD40C4017C9007D8975 /* dlgVideo.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = dlgVideo.cpp; sourceTree = ""; }; 1732BC81124540FF00272489 /* scc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = scc.cpp; path = ../../scc.cpp; sourceTree = SOURCE_ROOT; }; 1732BC861245412B00272489 /* serial.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = serial.cpp; path = ../../serial.cpp; sourceTree = SOURCE_ROOT; }; 1732BC871245412B00272489 /* serial_port.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = serial_port.cpp; path = ../../serial_port.cpp; sourceTree = SOURCE_ROOT; }; 1732BC8E1245415900272489 /* adler32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = adler32.h; sourceTree = ""; }; 1732BC8F1245415900272489 /* audio_conv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_conv.h; sourceTree = ""; }; 1732BC941245415900272489 /* dirty_rects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dirty_rects.h; sourceTree = ""; usesTabs = 1; }; 1732BC951245415900272489 /* dyngl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dyngl.h; sourceTree = ""; }; 1732BC981245415900272489 /* host_surface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = host_surface.h; sourceTree = ""; }; 1732BC991245415900272489 /* host_surface_opengl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = host_surface_opengl.h; sourceTree = ""; }; 1732BC9A1245415900272489 /* hostscreen_opengl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hostscreen_opengl.h; sourceTree = ""; }; 1732BC9B1245415900272489 /* logo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = logo.h; sourceTree = ""; }; 1732BC9C1245415900272489 /* midi_file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = midi_file.h; sourceTree = ""; }; 1732BC9D1245415900272489 /* midi_sequencer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = midi_sequencer.h; sourceTree = ""; }; 1732BC9E1245415900272489 /* scc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scc.h; sourceTree = ""; }; 1732BC9F1245415900272489 /* serial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = serial.h; sourceTree = ""; }; 1732BCA01245415900272489 /* serial_port.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = serial_port.h; sourceTree = ""; }; 1732BCA11245415900272489 /* videl_zoom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = videl_zoom.h; sourceTree = ""; }; 173598B713F1E97B00F84DB3 /* config_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = config_i386.h; path = ../config_i386.h; sourceTree = BUILT_PRODUCTS_DIR; }; 173598B813F1E97B00F84DB3 /* cpuemu_i386.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cpuemu_i386.cpp; path = ../cpuemu_i386.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 173598F213F1F61300F84DB3 /* compemu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = compemu.cpp; path = ../compemu.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 173598F313F1F61300F84DB3 /* compstbl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = compstbl.cpp; path = ../compstbl.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 173598F413F1F61300F84DB3 /* cpuemu_nf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cpuemu_nf.cpp; path = ../cpuemu_nf.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 173598F513F1F61300F84DB3 /* cpustbl_nf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cpustbl_nf.cpp; path = ../cpustbl_nf.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 173598FF13F1F7AE00F84DB3 /* gen_diskimage.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = gen_diskimage.sh; path = scripts/gen_diskimage.sh; sourceTree = ""; }; 1736B0FD0C70ED5900C56FAF /* aranym.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = aranym.icns; sourceTree = ""; }; 1736B1000C70ED5900C56FAF /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 1736B1010C70ED5900C56FAF /* SDLMain.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = SDLMain.h; sourceTree = ""; }; 1736B1020C70ED5900C56FAF /* SDLMain.m */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.objc; path = SDLMain.m; sourceTree = ""; }; 17398E110B21048100A9B4DB /* README.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = README.rtf; sourceTree = ""; }; 1743987C0B320B480011038E /* README_Xcode.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = README_Xcode.rtf; sourceTree = ""; }; 17473D1415AA07FD00CAEA47 /* bpf_helper.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = bpf_helper.c; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.c; }; 17473D1515AA07FD00CAEA47 /* ethernet_macosx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ethernet_macosx.cpp; sourceTree = ""; }; 17473D1615AA07FD00CAEA47 /* ethernet_macosx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ethernet_macosx.h; sourceTree = ""; }; 17473D1715AA07FD00CAEA47 /* fd_trans.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fd_trans.c; sourceTree = ""; }; 17473D1815AA07FD00CAEA47 /* fd_trans.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fd_trans.h; sourceTree = ""; }; 17473D2515AA0A1100CAEA47 /* bpf_helper */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = bpf_helper; sourceTree = BUILT_PRODUCTS_DIR; }; 175909550CA453990089CF9F /* dirty_rects.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dirty_rects.cpp; path = ../../dirty_rects.cpp; sourceTree = SOURCE_ROOT; usesTabs = 1; }; 1759CCF319845F2600C4500E /* m4 */ = {isa = PBXFileReference; lastKnownFileType = folder; name = m4; path = ../../../m4; sourceTree = ""; }; 1765B6ED0C91C0B000DD682B /* libOSMesa.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libOSMesa.6.dylib; path = MesaGL/lib/libOSMesa.6.dylib; sourceTree = ""; }; 1765B6EE0C91C0BB00DD682B /* tap.kext */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.kernel-extension"; name = tap.kext; path = tuntap/tap.kext; sourceTree = ""; }; 1765B6EF0C91C0BB00DD682B /* tun.kext */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.kernel-extension"; name = tun.kext; path = tuntap/tun.kext; sourceTree = ""; }; 1778A4E21555A8A70005B336 /* MacAranym MMU MPFR.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "MacAranym MMU MPFR.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 17798CD30A652B50009733EB /* acia.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = acia.cpp; path = ../../acia.cpp; sourceTree = SOURCE_ROOT; }; 17798CD40A652B50009733EB /* acsifdc.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = acsifdc.cpp; path = ../../acsifdc.cpp; sourceTree = SOURCE_ROOT; }; 17798CD50A652B50009733EB /* aradata.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = aradata.cpp; path = ../../aradata.cpp; sourceTree = SOURCE_ROOT; }; 17798CD60A652B50009733EB /* aranym_exception.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = aranym_exception.cpp; path = ../../aranym_exception.cpp; sourceTree = SOURCE_ROOT; }; 17798CD70A652B50009733EB /* ata.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = ata.cpp; path = ../../ata.cpp; sourceTree = SOURCE_ROOT; }; 17798CD80A652B50009733EB /* audio_crossbar.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = audio_crossbar.cpp; path = ../../audio_crossbar.cpp; sourceTree = SOURCE_ROOT; }; 17798CD90A652B50009733EB /* audio_dma.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = audio_dma.cpp; path = ../../audio_dma.cpp; sourceTree = SOURCE_ROOT; }; 17798CDA0A652B50009733EB /* blitter.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = blitter.cpp; path = ../../blitter.cpp; sourceTree = SOURCE_ROOT; }; 17798CDB0A652B50009733EB /* bootos_emutos.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = bootos_emutos.cpp; path = ../../bootos_emutos.cpp; sourceTree = SOURCE_ROOT; }; 17798CDC0A652B50009733EB /* bootos_linux.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = bootos_linux.cpp; path = ../../bootos_linux.cpp; sourceTree = SOURCE_ROOT; }; 17798CDD0A652B50009733EB /* bootos_tos.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = bootos_tos.cpp; path = ../../bootos_tos.cpp; sourceTree = SOURCE_ROOT; }; 17798CDE0A652B50009733EB /* bootos.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = bootos.cpp; path = ../../bootos.cpp; sourceTree = SOURCE_ROOT; }; 17798CDF0A652B50009733EB /* cdrom.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = cdrom.cpp; path = ../../cdrom.cpp; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; 17798CE00A652B50009733EB /* cfgopts.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = cfgopts.cpp; path = ../../cfgopts.cpp; sourceTree = SOURCE_ROOT; }; 17798CE90A652B50009733EB /* dsp.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dsp.cpp; path = ../../dsp.cpp; sourceTree = SOURCE_ROOT; }; 17798CEA0A652B50009733EB /* emul_op.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = emul_op.cpp; path = ../../emul_op.cpp; sourceTree = SOURCE_ROOT; }; 17798CEB0A652B50009733EB /* fakeio.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = fakeio.cpp; path = ../../fakeio.cpp; sourceTree = SOURCE_ROOT; }; 17798CEE0A652B50009733EB /* dlgAlert.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = dlgAlert.cpp; sourceTree = ""; }; 17798CEF0A652B50009733EB /* dlgDisk.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = dlgDisk.cpp; sourceTree = ""; }; 17798CF00A652B50009733EB /* dlgFileSelect.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = dlgFileSelect.cpp; sourceTree = ""; }; 17798CF10A652B50009733EB /* dlgHotkeys.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = dlgHotkeys.cpp; sourceTree = ""; }; 17798CF20A652B50009733EB /* dlgKeyboard.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = dlgKeyboard.cpp; sourceTree = ""; }; 17798CF30A652B50009733EB /* dlgMain.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = dlgMain.cpp; sourceTree = ""; }; 17798CF40A652B50009733EB /* file.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = file.cpp; sourceTree = ""; }; 17798CF50A652B50009733EB /* file.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = file.h; sourceTree = ""; }; 17798CF70A652B50009733EB /* sdlgui.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = sdlgui.cpp; sourceTree = ""; }; 17798CF80A652B50009733EB /* sdlgui.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = sdlgui.h; sourceTree = ""; }; 17798CF90A652B50009733EB /* hardware.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = hardware.cpp; path = ../../hardware.cpp; sourceTree = SOURCE_ROOT; }; 17798CFA0A652B50009733EB /* host_audio.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = host_audio.cpp; path = ../../host_audio.cpp; sourceTree = SOURCE_ROOT; }; 17798CFB0A652B50009733EB /* host_clock.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = host_clock.cpp; path = ../../host_clock.cpp; sourceTree = SOURCE_ROOT; }; 17798CFC0A652B50009733EB /* host.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = host.cpp; path = ../../host.cpp; sourceTree = SOURCE_ROOT; }; 17798CFD0A652B50009733EB /* hostscreen.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = hostscreen.cpp; path = ../../hostscreen.cpp; sourceTree = SOURCE_ROOT; }; 17798CFE0A652B50009733EB /* ide.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = ide.cpp; path = ../../ide.cpp; sourceTree = SOURCE_ROOT; }; 17798CFF0A652B50009733EB /* identify.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = identify.cpp; path = ../../identify.cpp; sourceTree = SOURCE_ROOT; }; 17798D000A652B50009733EB /* ikbd.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = ikbd.cpp; path = ../../ikbd.cpp; sourceTree = SOURCE_ROOT; }; 17798D020A652B50009733EB /* acia.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = acia.h; sourceTree = ""; }; 17798D030A652B50009733EB /* acsifdc.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = acsifdc.h; sourceTree = ""; }; 17798D040A652B50009733EB /* aradata.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = aradata.h; sourceTree = ""; }; 17798D050A652B50009733EB /* aramd5.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = aramd5.h; sourceTree = ""; }; 17798D060A652B50009733EB /* aranym_exception.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = aranym_exception.h; sourceTree = ""; }; 17798D070A652B50009733EB /* aspi-win32.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "aspi-win32.h"; sourceTree = ""; }; 17798D080A652B50009733EB /* ata.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ata.h; sourceTree = ""; }; 17798D090A652B50009733EB /* audio_crossbar.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = audio_crossbar.h; sourceTree = ""; }; 17798D0A0A652B50009733EB /* audio_dma.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = audio_dma.h; sourceTree = ""; }; 17798D0B0A652B50009733EB /* blitter.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = blitter.h; sourceTree = ""; }; 17798D0C0A652B50009733EB /* bootos.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = bootos.h; sourceTree = ""; }; 17798D0D0A652B50009733EB /* bootos_emutos.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = bootos_emutos.h; sourceTree = ""; }; 17798D0E0A652B50009733EB /* bootos_linux.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = bootos_linux.h; sourceTree = ""; }; 17798D0F0A652B50009733EB /* bootos_tos.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = bootos_tos.h; sourceTree = ""; }; 17798D100A652B50009733EB /* cdrom.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; 17798D110A652B50009733EB /* cfgopts.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = cfgopts.h; sourceTree = ""; }; 17798D120A652B50009733EB /* debug.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; 17798D130A652B50009733EB /* dsp.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = dsp.h; sourceTree = ""; }; 17798D140A652B50009733EB /* dsp_cpu.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = dsp_cpu.h; sourceTree = ""; }; 17798D150A652B50009733EB /* dsp_disasm.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = dsp_disasm.h; sourceTree = ""; }; 17798D160A652B50009733EB /* emu_bochs.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = emu_bochs.h; sourceTree = ""; }; 17798D170A652B50009733EB /* emul_op.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = emul_op.h; sourceTree = ""; }; 17798D190A652B50009733EB /* hardware.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = hardware.h; sourceTree = ""; }; 17798D1A0A652B50009733EB /* host.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = host.h; sourceTree = ""; }; 17798D1B0A652B50009733EB /* host_audio.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = host_audio.h; sourceTree = ""; }; 17798D1C0A652B50009733EB /* host_clock.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = host_clock.h; sourceTree = ""; }; 17798D1D0A652B50009733EB /* host_clock_unix.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = host_clock_unix.h; sourceTree = ""; }; 17798D1E0A652B50009733EB /* host_filesys.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = host_filesys.h; sourceTree = ""; }; 17798D1F0A652B50009733EB /* hostscreen.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = hostscreen.h; sourceTree = ""; }; 17798D200A652B50009733EB /* icio.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = icio.h; sourceTree = ""; }; 17798D210A652B50009733EB /* ide.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ide.h; sourceTree = ""; }; 17798D220A652B50009733EB /* identify.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = identify.h; sourceTree = ""; }; 17798D230A652B50009733EB /* ikbd.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ikbd.h; sourceTree = ""; }; 17798D240A652B50009733EB /* input.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = input.h; sourceTree = ""; }; 17798D250A652B50009733EB /* main.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; 17798D260A652B50009733EB /* mfp.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = mfp.h; sourceTree = ""; }; 17798D270A652B50009733EB /* midi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = midi.h; sourceTree = ""; }; 17798D280A652B50009733EB /* mmu.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = mmu.h; sourceTree = ""; }; 17798D290A652B50009733EB /* natfeats.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = natfeats.h; sourceTree = ""; }; 17798D2A0A652B50009733EB /* ncr5380.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ncr5380.h; sourceTree = ""; }; 17798D2B0A652B50009733EB /* ndebug.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ndebug.h; sourceTree = ""; }; 17798D2C0A652B50009733EB /* parallel.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = parallel.h; sourceTree = ""; }; 17798D2D0A652B50009733EB /* parallel_file.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = parallel_file.h; sourceTree = ""; }; 17798D2E0A652B50009733EB /* parallel_parport.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = parallel_parport.h; sourceTree = ""; }; 17798D2F0A652B50009733EB /* parallel_x86.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = parallel_x86.h; sourceTree = ""; }; 17798D300A652B50009733EB /* parameters.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = parameters.h; sourceTree = ""; }; 17798D310A652B50009733EB /* romdiff.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = romdiff.h; sourceTree = ""; }; 17798D320A652B50009733EB /* rtc.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = rtc.h; sourceTree = ""; }; 17798D330A652B50009733EB /* scsidefs.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = scsidefs.h; sourceTree = ""; }; 17798D340A652B50009733EB /* tools.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = tools.h; sourceTree = ""; }; 17798D350A652B50009733EB /* toserror.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = toserror.h; sourceTree = ""; }; 17798D360A652B50009733EB /* version.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; 17798D370A652B50009733EB /* videl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = videl.h; sourceTree = ""; }; 17798D380A652B50009733EB /* yamaha.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = yamaha.h; sourceTree = ""; }; 17798D390A652B50009733EB /* input.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = input.cpp; path = ../../input.cpp; sourceTree = SOURCE_ROOT; }; 17798D5E0A652B50009733EB /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = ../../main.cpp; sourceTree = SOURCE_ROOT; }; 17798D5F0A652B50009733EB /* md5.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = md5.cpp; path = ../../md5.cpp; sourceTree = SOURCE_ROOT; }; 17798D600A652B50009733EB /* mfp.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = mfp.cpp; path = ../../mfp.cpp; sourceTree = SOURCE_ROOT; }; 17798D610A652B50009733EB /* midi.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = midi.cpp; path = ../../midi.cpp; sourceTree = SOURCE_ROOT; }; 17798D620A652B51009733EB /* mmu.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = mmu.cpp; path = ../../mmu.cpp; sourceTree = SOURCE_ROOT; }; 17798D640A652B51009733EB /* atari_example.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = atari_example.c; sourceTree = ""; }; 17798D650A652B51009733EB /* atari_example_gfa.lst */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = atari_example_gfa.lst; sourceTree = ""; }; 17798D660A652B51009733EB /* atari_rootsec.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = atari_rootsec.h; sourceTree = ""; }; 17798D670A652B51009733EB /* debugprintf.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = debugprintf.cpp; sourceTree = ""; }; 17798D680A652B51009733EB /* debugprintf.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = debugprintf.h; sourceTree = ""; }; 17798D6A0A652B51009733EB /* attic.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = attic.txt; sourceTree = ""; }; 17798D6B0A652B51009733EB /* call68k.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = call68k.txt; sourceTree = ""; }; 17798D6C0A652B51009733EB /* native.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = native.txt; sourceTree = ""; }; 17798D6D0A652B51009733EB /* nf.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nf.h; sourceTree = ""; }; 17798D6E0A652B51009733EB /* sample.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = sample.c; sourceTree = ""; }; 17798D6F0A652B51009733EB /* ethernet.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = ethernet.cpp; sourceTree = ""; }; 17798D700A652B51009733EB /* ethernet.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ethernet.h; sourceTree = ""; }; 17798D710A652B51009733EB /* fvdidrv_nfapi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = fvdidrv_nfapi.h; sourceTree = ""; }; 17798D720A652B51009733EB /* hostfs.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = hostfs.cpp; sourceTree = ""; }; 17798D730A652B51009733EB /* hostfs.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = hostfs.h; sourceTree = ""; }; 17798D740A652B51009733EB /* nf_base.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nf_base.cpp; sourceTree = ""; }; 17798D750A652B51009733EB /* nf_base.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nf_base.h; sourceTree = ""; }; 17798D760A652B51009733EB /* nf_basicset.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nf_basicset.cpp; sourceTree = ""; }; 17798D770A652B51009733EB /* nf_basicset.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nf_basicset.h; sourceTree = ""; }; 17798D780A652B51009733EB /* nf_objs.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nf_objs.cpp; sourceTree = ""; }; 17798D790A652B51009733EB /* nf_objs.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nf_objs.h; sourceTree = ""; }; 17798D7A0A652B51009733EB /* nfaudio.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nfaudio.cpp; sourceTree = ""; }; 17798D7B0A652B51009733EB /* nfaudio.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nfaudio.h; sourceTree = ""; }; 17798D7C0A652B51009733EB /* nfbootstrap.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nfbootstrap.cpp; sourceTree = ""; }; 17798D7D0A652B51009733EB /* nfbootstrap.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nfbootstrap.h; sourceTree = ""; }; 17798D7E0A652B51009733EB /* nfcdrom.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nfcdrom.cpp; sourceTree = ""; }; 17798D7F0A652B51009733EB /* nfcdrom.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nfcdrom.h; sourceTree = ""; }; 17798D800A652B51009733EB /* nfcdrom_linux.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nfcdrom_linux.cpp; sourceTree = ""; }; 17798D810A652B51009733EB /* nfcdrom_linux.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nfcdrom_linux.h; sourceTree = ""; }; 17798D820A652B51009733EB /* nfclipbrd.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nfclipbrd.cpp; sourceTree = ""; }; 17798D830A652B51009733EB /* nfclipbrd.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nfclipbrd.h; sourceTree = ""; }; 17798D840A652B51009733EB /* nfclipbrd_nfapi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nfclipbrd_nfapi.h; sourceTree = ""; }; 17798D850A652B51009733EB /* nfjpeg.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nfjpeg.cpp; sourceTree = ""; }; 17798D860A652B51009733EB /* nfjpeg.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nfjpeg.h; sourceTree = ""; }; 17798D890A652B51009733EB /* call-gl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "call-gl.c"; sourceTree = ""; }; 17798D8C0A652B51009733EB /* dispatch-gl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "dispatch-gl.c"; sourceTree = ""; }; 17798D9C0A652B51009733EB /* nfosmesa.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nfosmesa.cpp; sourceTree = ""; }; 17798D9D0A652B51009733EB /* nfosmesa.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nfosmesa.h; sourceTree = ""; }; 17798D9E0A652B51009733EB /* nfpci.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nfpci.cpp; sourceTree = ""; }; 17798D9F0A652B51009733EB /* nfpci.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nfpci.h; sourceTree = ""; }; 17798DA00A652B51009733EB /* nfpci_linux.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nfpci_linux.cpp; sourceTree = ""; }; 17798DA10A652B51009733EB /* nfpci_linux.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nfpci_linux.h; sourceTree = ""; }; 17798DA20A652B51009733EB /* nfvdi.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nfvdi.cpp; sourceTree = ""; }; 17798DA30A652B51009733EB /* nfvdi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nfvdi.h; sourceTree = ""; }; 17798DA40A652B51009733EB /* nfvdi_opengl.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nfvdi_opengl.cpp; sourceTree = ""; }; 17798DA50A652B51009733EB /* nfvdi_opengl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nfvdi_opengl.h; sourceTree = ""; }; 17798DA60A652B51009733EB /* nfvdi_soft.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = nfvdi_soft.cpp; sourceTree = ""; usesTabs = 1; }; 17798DA70A652B51009733EB /* nfvdi_soft.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = nfvdi_soft.h; sourceTree = ""; }; 17798DA80A652B51009733EB /* xhdi.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = xhdi.cpp; sourceTree = ""; }; 17798DA90A652B51009733EB /* xhdi.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = xhdi.h; sourceTree = ""; }; 17798DAA0A652B51009733EB /* natfeats.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = natfeats.cpp; path = ../../natfeats.cpp; sourceTree = SOURCE_ROOT; }; 17798DAB0A652B51009733EB /* ncr5380.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = ncr5380.cpp; path = ../../ncr5380.cpp; sourceTree = SOURCE_ROOT; }; 17798DAC0A652B51009733EB /* ndebug.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = ndebug.cpp; path = ../../ndebug.cpp; sourceTree = SOURCE_ROOT; }; 17798DAD0A652B51009733EB /* parallel_file.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = parallel_file.cpp; path = ../../parallel_file.cpp; sourceTree = SOURCE_ROOT; }; 17798DAE0A652B51009733EB /* parallel_parport.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = parallel_parport.cpp; path = ../../parallel_parport.cpp; sourceTree = SOURCE_ROOT; }; 17798DAF0A652B51009733EB /* parallel_x86.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = parallel_x86.cpp; path = ../../parallel_x86.cpp; sourceTree = SOURCE_ROOT; }; 17798DB00A652B51009733EB /* parallel.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = parallel.cpp; path = ../../parallel.cpp; sourceTree = SOURCE_ROOT; }; 17798DB10A652B51009733EB /* parameters.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = parameters.cpp; path = ../../parameters.cpp; sourceTree = SOURCE_ROOT; }; 17798DB20A652B51009733EB /* romdiff.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = romdiff.cpp; path = ../../romdiff.cpp; sourceTree = SOURCE_ROOT; }; 17798DB30A652B51009733EB /* rtc.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = rtc.cpp; path = ../../rtc.cpp; sourceTree = SOURCE_ROOT; }; 17798DB50A652B51009733EB /* tools.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = tools.cpp; path = ../../tools.cpp; sourceTree = SOURCE_ROOT; }; 17798DB70A652B51009733EB /* aranym_glue.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = aranym_glue.cpp; sourceTree = ""; }; 17798DB80A652B51009733EB /* build68k.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = build68k.c; sourceTree = ""; }; 17798DBA0A652B51009733EB /* codegen_x86.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = codegen_x86.cpp; sourceTree = ""; }; 17798DBB0A652B51009733EB /* codegen_x86.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = codegen_x86.h; sourceTree = ""; }; 17798DBC0A652B51009733EB /* compemu.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = compemu.h; sourceTree = ""; }; 17798DBD0A652B51009733EB /* compemu_fpp.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = compemu_fpp.cpp; sourceTree = ""; }; 17798DBE0A652B51009733EB /* compemu_support.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = compemu_support.cpp; sourceTree = ""; }; 17798DBF0A652B51009733EB /* flags_x86.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = flags_x86.h; sourceTree = ""; }; 17798DC00A652B51009733EB /* gencomp.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = gencomp.c; sourceTree = ""; }; 17798DC10A652B51009733EB /* test_codegen_x86.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = test_codegen_x86.cpp; sourceTree = ""; }; 17798DC20A652B51009733EB /* cpu_emulation.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = cpu_emulation.h; sourceTree = ""; }; 17798DC30A652B51009733EB /* cpummu.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = cpummu.cpp; sourceTree = ""; }; 17798DC40A652B51009733EB /* cpummu.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = cpummu.h; sourceTree = ""; }; 17798DC60A652B51009733EB /* debug.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = debug.cpp; sourceTree = ""; }; 17798DC80A652B51009733EB /* core.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = core.h; sourceTree = ""; }; 17798DC90A652B51009733EB /* exceptions.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = exceptions.cpp; sourceTree = ""; }; 17798DCA0A652B51009733EB /* exceptions.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = exceptions.h; sourceTree = ""; }; 17798DCB0A652B51009733EB /* flags.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = flags.cpp; sourceTree = ""; }; 17798DCC0A652B51009733EB /* flags.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = flags.h; sourceTree = ""; }; 17798DCD0A652B51009733EB /* fpu.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = fpu.h; sourceTree = ""; }; 17798DCE0A652B51009733EB /* fpu_ieee.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = fpu_ieee.cpp; sourceTree = ""; }; 17798DCF0A652B51009733EB /* fpu_ieee.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = fpu_ieee.h; sourceTree = ""; }; 17798DD00A652B51009733EB /* fpu_uae.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = fpu_uae.cpp; sourceTree = ""; }; 17798DD10A652B51009733EB /* fpu_uae.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = fpu_uae.h; sourceTree = ""; }; 17798DD20A652B51009733EB /* fpu_x86.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = fpu_x86.cpp; sourceTree = ""; }; 17798DD30A652B51009733EB /* fpu_x86.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = fpu_x86.h; sourceTree = ""; }; 17798DD40A652B51009733EB /* fpu_x86_asm.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = fpu_x86_asm.h; sourceTree = ""; }; 17798DD50A652B51009733EB /* impl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = impl.h; sourceTree = ""; }; 17798DD60A652B51009733EB /* mathlib.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = mathlib.cpp; sourceTree = ""; }; 17798DD70A652B51009733EB /* mathlib.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = mathlib.h; sourceTree = ""; }; 17798DD80A652B51009733EB /* rounding.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = rounding.cpp; sourceTree = ""; }; 17798DD90A652B51009733EB /* rounding.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = rounding.h; sourceTree = ""; }; 17798DDA0A652B51009733EB /* types.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; 17798DDB0A652B51009733EB /* gencpu.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = gencpu.c; sourceTree = ""; }; 17798DDC0A652B51009733EB /* m68k.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = m68k.h; sourceTree = ""; }; 17798DDD0A652B51009733EB /* memory.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = memory.cpp; sourceTree = ""; }; 17798DDF0A652B51009733EB /* newcpu.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = newcpu.cpp; sourceTree = ""; }; 17798DE00A652B51009733EB /* newcpu.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = newcpu.h; sourceTree = ""; }; 17798DE10A652B51009733EB /* noflags.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = noflags.h; sourceTree = ""; }; 17798DE20A652B51009733EB /* readcpu.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = readcpu.cpp; sourceTree = ""; }; 17798DE30A652B51009733EB /* readcpu.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = readcpu.h; sourceTree = ""; }; 17798DE40A652B51009733EB /* registers.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = registers.h; sourceTree = ""; }; 17798DE50A652B51009733EB /* spcflags.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = spcflags.h; sourceTree = ""; }; 17798DE60A652B51009733EB /* table68k */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = table68k; sourceTree = ""; }; 17798DEA0A652B51009733EB /* ansidecl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ansidecl.h; sourceTree = ""; }; 17798DEB0A652B51009733EB /* aratapif.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = aratapif.c; sourceTree = ""; }; 17798DEC0A652B51009733EB /* autogen.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = autogen.sh; path = ../../../autogen.sh; sourceTree = SOURCE_ROOT; }; 17798DF60A652B51009733EB /* config.guess */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = config.guess; path = ../../../config.guess; sourceTree = SOURCE_ROOT; }; 17798DFD0A652B51009733EB /* configure.ac */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 4; lastKnownFileType = text; name = configure.ac; path = ../../../configure.ac; sourceTree = SOURCE_ROOT; tabWidth = 4; usesTabs = 0; }; 17798E130A652B51009733EB /* getopt.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = getopt.c; sourceTree = ""; }; 17798E140A652B51009733EB /* getopt.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; 17798E150A652B51009733EB /* getopt1.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = getopt1.c; sourceTree = ""; }; 17798E160A652B51009733EB /* getopt_init.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = getopt_init.c; sourceTree = ""; }; 17798E170A652B51009733EB /* host_clock_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = host_clock_unix.cpp; sourceTree = ""; }; 17798E180A652B51009733EB /* host_filesys_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = host_filesys_unix.cpp; sourceTree = ""; }; 17798E190A652B51009733EB /* install-sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = "install-sh"; path = "../../install-sh"; sourceTree = ""; }; 17798E420A652B51009733EB /* parameters_MacOSX.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = parameters_MacOSX.cpp; sourceTree = ""; }; 17798E7C0A652B52009733EB /* main_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = main_unix.cpp; sourceTree = ""; }; 17798E7F0A652B52009733EB /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.in; path = ../../Makefile.in; sourceTree = ""; }; 17798E820A652B52009733EB /* parameters_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = parameters_unix.cpp; sourceTree = ""; }; 17798E850A652B52009733EB /* sysdeps.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = sysdeps.h; sourceTree = ""; }; 17798E860A652B52009733EB /* vasprintf.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = vasprintf.c; sourceTree = ""; }; 17798E870A652B52009733EB /* vm_alloc.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; path = vm_alloc.cpp; sourceTree = ""; }; 17798E880A652B52009733EB /* vm_alloc.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = vm_alloc.h; sourceTree = ""; }; 17798E8B0A652B52009733EB /* videl.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = videl.cpp; path = ../../videl.cpp; sourceTree = SOURCE_ROOT; }; 17798E8C0A652B52009733EB /* yamaha.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = yamaha.cpp; path = ../../yamaha.cpp; sourceTree = SOURCE_ROOT; }; 177990510A6538B5009733EB /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; 17A2B1960C66113000180C55 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.make; name = Makefile; path = darwin/Makefile; sourceTree = ""; }; 17AAB1190B206BF20016FB8D /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; 17AC403013F1C81F003B4FAD /* configure.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = configure.sh; path = scripts/configure.sh; sourceTree = ""; }; 17AC403113F1C81F003B4FAD /* gen_cpu.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = gen_cpu.sh; path = scripts/gen_cpu.sh; sourceTree = ""; }; 17AC403213F1C81F003B4FAD /* set_version.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = set_version.sh; path = scripts/set_version.sh; sourceTree = ""; }; 17AC408513F1CFA1003B4FAD /* configure */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = configure; path = ../../../configure; sourceTree = SOURCE_ROOT; }; 17AC409713F1D403003B4FAD /* cputbl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cputbl.h; path = ../cputbl.h; sourceTree = BUILT_PRODUCTS_DIR; }; 17AC409813F1D403003B4FAD /* config_ppc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = config_ppc.h; path = ../config_ppc.h; sourceTree = BUILT_PRODUCTS_DIR; }; 17AC409913F1D403003B4FAD /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = config.h; path = ../config.h; sourceTree = BUILT_PRODUCTS_DIR; }; 17AC409A13F1D403003B4FAD /* cpudefs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cpudefs.cpp; path = ../cpudefs.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 17AC409B13F1D403003B4FAD /* cpuemu_ppc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cpuemu_ppc.cpp; path = ../cpuemu_ppc.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 17AC409C13F1D403003B4FAD /* cpuemu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cpuemu.cpp; path = ../cpuemu.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 17AC409D13F1D403003B4FAD /* cpustbl.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = cpustbl.cpp; path = ../cpustbl.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 17AC413213F1C81F003B4FAD /* set_rpath.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = set_rpath.sh; path = scripts/set_rpath.sh; sourceTree = ""; }; 17B276EE0A9F52CF00DD6223 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ChangeLog; path = ../../../ChangeLog; sourceTree = SOURCE_ROOT; }; 17B2B51A0C41781B00595D44 /* SDL_image.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SDL_image.framework; sourceTree = ""; }; 17B2B78C0C41785800595D44 /* libGL.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libGL.1.dylib; path = MesaGL/lib/libGL.1.dylib; sourceTree = ""; }; 17B2B78D0C41785800595D44 /* libOSMesa.7.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libOSMesa.7.dylib; path = MesaGL/lib/libOSMesa.7.dylib; sourceTree = ""; }; 17BCD7E90B20F65000432CE1 /* MacAranym MMU.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "MacAranym MMU.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 17BCD8B00B21004100432CE1 /* AUTHORS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = AUTHORS; path = ../../../AUTHORS; sourceTree = SOURCE_ROOT; }; 17BCD8B10B21004100432CE1 /* BUGS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = BUGS; path = ../../../BUGS; sourceTree = SOURCE_ROOT; }; 17BCD8B20B21004100432CE1 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = ChangeLog; path = ../../../ChangeLog; sourceTree = SOURCE_ROOT; }; 17BCD8B30B21004100432CE1 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = COPYING; path = ../../../COPYING; sourceTree = SOURCE_ROOT; }; 17BCD8B40B21004100432CE1 /* FAQ */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = FAQ; path = ../../../FAQ; sourceTree = SOURCE_ROOT; }; 17BCD8B50B21004100432CE1 /* NEWS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = NEWS; path = ../../../NEWS; sourceTree = SOURCE_ROOT; }; 17BCD8B60B21004100432CE1 /* README.md */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = README.md; path = ../../../README.md; sourceTree = SOURCE_ROOT; }; 17BCD8B70B21004100432CE1 /* TODO */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = TODO; path = ../../../TODO; sourceTree = SOURCE_ROOT; }; 17BCD8C80B21010C00432CE1 /* config */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = config; path = ../../../doc/config; sourceTree = SOURCE_ROOT; }; 17C0AFFC0CBB0A85000D2916 /* logo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = logo.cpp; path = ../../logo.cpp; sourceTree = SOURCE_ROOT; }; 17D5D2580AC70DBD003D0FE9 /* midi_file.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = midi_file.cpp; path = ../../midi_file.cpp; sourceTree = SOURCE_ROOT; }; 17D5D25B0AC70DC6003D0FE9 /* midi_sequencer.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = midi_sequencer.cpp; path = ../../midi_sequencer.cpp; sourceTree = SOURCE_ROOT; }; 17DA987115BC87FD00D0B5E4 /* config_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = config_x86_64.h; path = ../config_x86_64.h; sourceTree = BUILT_PRODUCTS_DIR; }; 17DA987215BC87FD00D0B5E4 /* cpuemu_x86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cpuemu_x86_64.cpp; path = ../cpuemu_x86_64.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 17DA987315BC87FD00D0B5E4 /* version_date.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = version_date.h; path = ../version_date.h; sourceTree = BUILT_PRODUCTS_DIR; }; 17E683EA0C90E38900A8BE0B /* INSTALL */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = INSTALL; path = ../../../INSTALL; sourceTree = SOURCE_ROOT; }; 17E699AC13F3395A00C3B36D /* comptbl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = comptbl.h; path = "../../../../MacAranym-emezrpltlxmgkfflpajbibwufhej/Build/Products/comptbl.h"; sourceTree = BUILT_PRODUCTS_DIR; }; 17E78DBF15AA3E0B006C560E /* README_ethernet.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = README_ethernet.rtf; sourceTree = ""; }; 17EC07DF0ECB762900100ED7 /* dsp_core.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = dsp_core.c; path = ../../dsp_core.c; sourceTree = SOURCE_ROOT; }; 17EC07E00ECB762900100ED7 /* dsp_cpu.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = dsp_cpu.c; path = ../../dsp_cpu.c; sourceTree = SOURCE_ROOT; }; 17EC07E10ECB762900100ED7 /* dsp_disasm.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = dsp_disasm.c; path = ../../dsp_disasm.c; sourceTree = SOURCE_ROOT; }; 17EC07E20ECB762900100ED7 /* dsp.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = dsp.cpp; path = ../../dsp.cpp; sourceTree = SOURCE_ROOT; }; 17EC08040ECB76EF00100ED7 /* dsp_core.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = dsp_core.h; sourceTree = ""; }; 17EC08050ECB76FD00100ED7 /* joypads.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = joypads.h; sourceTree = ""; }; 17EC080A0ECB774200100ED7 /* joypads.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = joypads.cpp; path = ../../joypads.cpp; sourceTree = ""; }; 17EC08D20ECB829E00100ED7 /* audio_conv.cpp */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.cpp.cpp; name = audio_conv.cpp; path = ../../audio_conv.cpp; sourceTree = ""; }; 17F10C631066C16500BDE380 /* clipbrd_darwin.M */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = clipbrd_darwin.M; path = darwin/clipbrd_darwin.M; sourceTree = ""; }; 17FFD47E106953D40084B493 /* clipbrd_x11.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = clipbrd_x11.cpp; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 3424B2C11F52CF7300E0EFC3 /* sdl_bmp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = sdl_bmp.cpp; path = ../../sdl_bmp.cpp; sourceTree = ""; }; 8C54C7D920B4597B007744DD /* disasm-x86-builtin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "disasm-x86-builtin.c"; path = "../../disasm/disasm-x86-builtin.c"; sourceTree = ""; }; 8C54C7DB20B459A0007744DD /* disasm-x86.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "disasm-x86.cpp"; path = "../../disasm/disasm-x86.cpp"; sourceTree = ""; }; 8C5BB71A205DBCFD000B8CFC /* nf_hostexec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nf_hostexec.cpp; sourceTree = ""; }; 8C5BB71F205DBD31000B8CFC /* nf_hostexec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nf_hostexec.h; sourceTree = ""; }; 8C5BB720205DBE44000B8CFC /* nf_scsidrv.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nf_scsidrv.cpp; sourceTree = ""; }; 8C5BB725205DBE5B000B8CFC /* nf_scsidrv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nf_scsidrv.h; sourceTree = ""; }; 8CB53C74203F0D530005E5AD /* MacAranym SDL2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "MacAranym SDL2.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 8CB53C89203F0D670005E5AD /* MacAranym JIT SDL2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "MacAranym JIT SDL2.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 8CB53C9E203F0D780005E5AD /* MacAranym MMU SDL2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "MacAranym MMU SDL2.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 8CB53CBC203F1EAD0005E5AD /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SDL2.framework; sourceTree = ""; }; 8CB53CBE203F1EBA0005E5AD /* SDL2_image.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SDL2_image.framework; sourceTree = ""; }; 8D1107320486CEB800E47090 /* MacAranym.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MacAranym.app; sourceTree = BUILT_PRODUCTS_DIR; }; B426E0EF19D88567003EEB83 /* disasm-builtin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "disasm-builtin.cpp"; path = "../../disasm/disasm-builtin.cpp"; sourceTree = ""; }; B426E0F019D88567003EEB83 /* disasm-glue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "disasm-glue.cpp"; path = "../../disasm/disasm-glue.cpp"; sourceTree = ""; }; B428FAF60C7BA7100039CA66 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/aranym.nib; sourceTree = ""; }; B439AC9B0C5B2FD00046EFC9 /* MacAranym JIT.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "MacAranym JIT.app"; sourceTree = BUILT_PRODUCTS_DIR; }; B4420ED71A0AAC240063F8A9 /* memory-uae.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "memory-uae.h"; sourceTree = ""; }; B442F19F193C9BC100D515B8 /* nfcdrom_sdl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nfcdrom_sdl.cpp; sourceTree = ""; }; B442F1A0193C9BC100D515B8 /* nfcdrom_sdl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nfcdrom_sdl.h; sourceTree = ""; }; B449DA000D2A9212005F0CC6 /* logo.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = logo.bmp; path = ../../../data/logo.bmp; sourceTree = SOURCE_ROOT; }; B44B01B00D07443D0017F23B /* dialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dialog.cpp; sourceTree = ""; }; B44B01B50D07447F0017F23B /* host_surface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = host_surface.cpp; path = ../../host_surface.cpp; sourceTree = SOURCE_ROOT; }; B44B01B60D07447F0017F23B /* host_surface_opengl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = host_surface_opengl.cpp; path = ../../host_surface_opengl.cpp; sourceTree = SOURCE_ROOT; }; B44B01B70D07447F0017F23B /* hostscreen_opengl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = hostscreen_opengl.cpp; path = ../../hostscreen_opengl.cpp; sourceTree = SOURCE_ROOT; }; B44B01C40D0744D30017F23B /* dlgKeypress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dlgKeypress.cpp; sourceTree = ""; }; B4640D4B0C7C2E0F0000572B /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = ""; }; B471E7C00D2A88750021DFA7 /* adler32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = adler32.c; path = ../../adler32.c; sourceTree = SOURCE_ROOT; }; B47270880C6BB5D600A1379D /* aratapif.sh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; name = aratapif.sh; path = darwin/aratapif.sh; sourceTree = ""; }; B47270900C6BB62700A1379D /* README_ethernet.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README_ethernet.txt; path = darwin/README_ethernet.txt; sourceTree = ""; }; B472BB88176907CB00611354 /* gen_machfiles.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = gen_machfiles.sh; path = scripts/gen_machfiles.sh; sourceTree = ""; }; B472BB8B17690B2D00611354 /* mach_exc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mach_exc.h; path = ../mach_exc.h; sourceTree = BUILT_PRODUCTS_DIR; }; B472BB8C17690B2D00611354 /* mach_excServer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = mach_excServer.c; path = ../mach_excServer.c; sourceTree = BUILT_PRODUCTS_DIR; }; B472BB8D17690B2D00611354 /* mach_excUser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = mach_excUser.c; path = ../mach_excUser.c; sourceTree = BUILT_PRODUCTS_DIR; }; B475E5A60D4FA41500C8607E /* dlgPartition.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dlgPartition.cpp; sourceTree = ""; }; B476BEC619F3BDB60088926C /* sigsegv_common_x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sigsegv_common_x86.h; sourceTree = ""; }; B4844A650C7BA1A0003FE2D2 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = darwin/English.lproj/aranym.nib; sourceTree = ""; }; B4844A660C7BA1B4003FE2D2 /* German */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = German; path = darwin/German.lproj/aranym.nib; sourceTree = ""; }; B4844A6B0C7BA262003FE2D2 /* aranym.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = aranym.icns; path = darwin/aranym.icns; sourceTree = ""; }; B4844A6C0C7BA262003FE2D2 /* aranym2.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = aranym2.icns; path = darwin/aranym2.icns; sourceTree = ""; }; B4844A6D0C7BA262003FE2D2 /* busybee.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = busybee.icns; path = darwin/busybee.icns; sourceTree = ""; }; B4844A6F0C7BA262003FE2D2 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; name = Info.plist; path = darwin/Info.plist; sourceTree = ""; }; B4844A710C7BA262003FE2D2 /* PkgInfo */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = PkgInfo; path = darwin/PkgInfo; sourceTree = ""; }; B4844A730C7BA262003FE2D2 /* SDLMain.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SDLMain.h; path = darwin/SDLMain.h; sourceTree = ""; }; B4844A740C7BA262003FE2D2 /* SDLMain.M */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = SDLMain.M; path = darwin/SDLMain.M; sourceTree = ""; }; B491646E0C5406D900CFB5B0 /* dlgNetwork.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = dlgNetwork.cpp; sourceTree = ""; }; B49A2412193CBE9600B73091 /* compemu_midfunc_x86.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = compemu_midfunc_x86.cpp; sourceTree = ""; }; B49A2413193CBE9600B73091 /* compemu_midfunc_x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compemu_midfunc_x86.h; sourceTree = ""; }; B4A9E9C10C5B33AC00C156C3 /* ethernet_darwin.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ethernet_darwin.cpp; path = darwin/ethernet_darwin.cpp; sourceTree = ""; }; B4A9E9C20C5B33AC00C156C3 /* ethernet_darwin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ethernet_darwin.h; path = darwin/ethernet_darwin.h; sourceTree = ""; }; B4C7EE931768552800B63B96 /* MachServer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MachServer.c; path = darwin/MachServer.c; sourceTree = ""; }; B4C7EE941768552800B63B96 /* MachUser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MachUser.c; path = darwin/MachUser.c; sourceTree = ""; }; B4C86DDB0C823CCA0077FB6E /* German */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = German; path = German.lproj/aranym.nib; sourceTree = ""; }; B4F337B90C480C4A00B3A0A9 /* sigsegv_darwin_x86.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = sigsegv_darwin_x86.cpp; path = darwin/sigsegv_darwin_x86.cpp; sourceTree = ""; usesTabs = 1; }; CB2C9D411B14E27200EC7BFA /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Makefile.am; path = ../../../Makefile.am; sourceTree = SOURCE_ROOT; }; CB4679571AFA788C0090A72D /* externalScript.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = externalScript.sh; path = scripts/externalScript.sh; sourceTree = ""; }; CBBC87001B5F97C000C0DABF /* glenums.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glenums.h; sourceTree = ""; }; CBBC87011B5F97DE00C0DABF /* glenums.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = glenums.c; path = ../../glenums.c; sourceTree = SOURCE_ROOT; }; CBCE37AD1B05B70200A19E4D /* maptab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = maptab.h; sourceTree = ""; }; CBCE37AE1B05B76100A19E4D /* maptab.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = maptab.cpp; sourceTree = ""; }; CBD0F45C1B5CF72F0081A555 /* disasm-glue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "disasm-glue.h"; sourceTree = ""; }; CBD0F45D1B5CF7450081A555 /* SDL_compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_compat.h; sourceTree = ""; }; CBD0F45E1B5CF7530081A555 /* SDL_opengl_wrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_opengl_wrapper.h; sourceTree = ""; }; CBD0F4931B5CFDC10081A555 /* verify.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = verify.h; sourceTree = ""; }; CBD0F4941B5CFDD60081A555 /* osmesa_context.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = osmesa_context.cpp; sourceTree = ""; }; CBD0F4991B5CFDE50081A555 /* osmesa_context.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osmesa_context.h; sourceTree = ""; }; CBEA27B21AF6527500B12FC5 /* dlgHostfs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dlgHostfs.cpp; sourceTree = ""; }; CBEA27BF1AF65A6900B12FC5 /* cpufunctbl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cpufunctbl.cpp; path = ../cpufunctbl.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; CBEA27C41AF65B2200B12FC5 /* cpufunctbl_i386.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cpufunctbl_i386.cpp; path = ../cpufunctbl_i386.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; CBEA27C51AF65B2200B12FC5 /* cpufunctbl_x86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cpufunctbl_x86_64.cpp; path = ../cpufunctbl_x86_64.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; CBEA27C81AF65EB200B12FC5 /* cpufunctbl_pcc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cpufunctbl_pcc.cpp; path = ../cpufunctbl_pcc.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; F83B575D0C8B143300BA68D4 /* SDLHotkeysRefresh.M */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = SDLHotkeysRefresh.M; path = darwin/SDLHotkeysRefresh.M; sourceTree = ""; }; F83B576C0C8B1F0100BA68D4 /* videl_zoom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = videl_zoom.cpp; path = ../../videl_zoom.cpp; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 17473D2215AA0A1100CAEA47 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 1717653C15AA2D6B002F920C /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 1778A4CF1555A8A70005B336 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 1778A4D01555A8A70005B336 /* SDL_image.framework in Frameworks */, 1778A4D11555A8A70005B336 /* SDL.framework in Frameworks */, 1778A4D21555A8A70005B336 /* Cocoa.framework in Frameworks */, 1778A4D31555A8A70005B336 /* IOKit.framework in Frameworks */, 1778A4D41555A8A70005B336 /* OpenGL.framework in Frameworks */, 1778A4D51555A8A70005B336 /* Security.framework in Frameworks */, 170539151555D457006A6DDE /* libgmp.dylib in Frameworks */, 170539161555D457006A6DDE /* libmpfr.dylib in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 17BCD7DB0B20F64F00432CE1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( B449D9E00D2A8D37005F0CC6 /* SDL_image.framework in Frameworks */, 17BCD7DC0B20F64F00432CE1 /* SDL.framework in Frameworks */, 17BCD7DD0B20F64F00432CE1 /* Cocoa.framework in Frameworks */, 17BCD7DE0B20F64F00432CE1 /* IOKit.framework in Frameworks */, 17BCD7DF0B20F64F00432CE1 /* OpenGL.framework in Frameworks */, B4640D4D0C7C2E0F0000572B /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 8CB53C71203F0D530005E5AD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 8CB53CBF203F1EBB0005E5AD /* SDL2_image.framework in Frameworks */, 8CB53CBD203F1EAD0005E5AD /* SDL2.framework in Frameworks */, 8CB53CC0203F24F80005E5AD /* Cocoa.framework in Frameworks */, 8CB53CC1203F24F80005E5AD /* IOKit.framework in Frameworks */, 8CB53CC2203F24F80005E5AD /* OpenGL.framework in Frameworks */, 8CB53CC3203F24F80005E5AD /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 8CB53C86203F0D670005E5AD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 8CB53CC4203F24F80005E5AD /* SDL2_image.framework in Frameworks */, 8CB53CC5203F24F80005E5AD /* SDL2.framework in Frameworks */, 8CB53CC6203F24F80005E5AD /* Cocoa.framework in Frameworks */, 8CB53CC7203F24F80005E5AD /* IOKit.framework in Frameworks */, 8CB53CC8203F24F80005E5AD /* OpenGL.framework in Frameworks */, 8CB53CC9203F24F80005E5AD /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 8CB53C9B203F0D780005E5AD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 8CB53CCA203F24F80005E5AD /* SDL2_image.framework in Frameworks */, 8CB53CCB203F24F80005E5AD /* SDL2.framework in Frameworks */, 8CB53CCC203F24F80005E5AD /* Cocoa.framework in Frameworks */, 8CB53CCD203F24F80005E5AD /* IOKit.framework in Frameworks */, 8CB53CCE203F24F80005E5AD /* OpenGL.framework in Frameworks */, 8CB53CCF203F24F80005E5AD /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 8D11072E0486CEB800E47090 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( B449D9F50D2A8E78005F0CC6 /* SDL_image.framework in Frameworks */, 002F39FA09D0881F00EBEB88 /* SDL.framework in Frameworks */, 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, 177990520A6538B5009733EB /* IOKit.framework in Frameworks */, 17AAB12C0B206BF20016FB8D /* OpenGL.framework in Frameworks */, B4640D4E0C7C2E0F0000572B /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; B439AC8D0C5B2FD00046EFC9 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( B449D9F30D2A8E68005F0CC6 /* SDL_image.framework in Frameworks */, B439AC8E0C5B2FD00046EFC9 /* SDL.framework in Frameworks */, B439AC8F0C5B2FD00046EFC9 /* Cocoa.framework in Frameworks */, B439AC900C5B2FD00046EFC9 /* IOKit.framework in Frameworks */, B439AC910C5B2FD00046EFC9 /* OpenGL.framework in Frameworks */, B4640D4C0C7C2E0F0000572B /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( B4640D4B0C7C2E0F0000572B /* Security.framework */, 29B97324FDCFA39411CA2CEA /* AppKit.framework */, 29B97325FDCFA39411CA2CEA /* Foundation.framework */, 17AAB1190B206BF20016FB8D /* OpenGL.framework */, 177990510A6538B5009733EB /* IOKit.framework */, 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, ); name = "Linked Frameworks"; sourceTree = ""; }; 1736B0FC0C70ED5900C56FAF /* gui-osx */ = { isa = PBXGroup; children = ( B428FAF50C7BA7100039CA66 /* aranym.nib */, 1736B0FD0C70ED5900C56FAF /* aranym.icns */, 1736B1000C70ED5900C56FAF /* Info.plist */, 1736B1010C70ED5900C56FAF /* SDLMain.h */, 1736B1020C70ED5900C56FAF /* SDLMain.m */, ); name = "gui-osx"; path = "../../gui-osx"; sourceTree = SOURCE_ROOT; }; 1765B70F0C91C19F00DD682B /* OSMesa */ = { isa = PBXGroup; children = ( 1765B6ED0C91C0B000DD682B /* libOSMesa.6.dylib */, 17B2B78D0C41785800595D44 /* libOSMesa.7.dylib */, 17B2B78C0C41785800595D44 /* libGL.1.dylib */, ); name = OSMesa; sourceTree = ""; }; 1765B7100C91C1B300DD682B /* TunTap */ = { isa = PBXGroup; children = ( 1765B6EE0C91C0BB00DD682B /* tap.kext */, 1765B6EF0C91C0BB00DD682B /* tun.kext */, ); name = TunTap; sourceTree = ""; }; 17798CD20A652B3B009733EB /* Aranym Sources */ = { isa = PBXGroup; children = ( 17798D010A652B50009733EB /* include */, 1736B0FC0C70ED5900C56FAF /* gui-osx */, 17798CED0A652B50009733EB /* gui-sdl */, 17798D630A652B51009733EB /* natfeat */, 17798DB60A652B51009733EB /* uae_cpu */, 17798DE70A652B51009733EB /* Unix */, 17798CD30A652B50009733EB /* acia.cpp */, 17798CD40A652B50009733EB /* acsifdc.cpp */, B471E7C00D2A88750021DFA7 /* adler32.c */, 17798CD50A652B50009733EB /* aradata.cpp */, 17798CD60A652B50009733EB /* aranym_exception.cpp */, 17798CD70A652B50009733EB /* ata.cpp */, 17EC08D20ECB829E00100ED7 /* audio_conv.cpp */, 17798CD80A652B50009733EB /* audio_crossbar.cpp */, 17798CD90A652B50009733EB /* audio_dma.cpp */, 17798CDA0A652B50009733EB /* blitter.cpp */, 17798CDB0A652B50009733EB /* bootos_emutos.cpp */, 17798CDC0A652B50009733EB /* bootos_linux.cpp */, 17798CDD0A652B50009733EB /* bootos_tos.cpp */, 17798CDE0A652B50009733EB /* bootos.cpp */, 17798CDF0A652B50009733EB /* cdrom.cpp */, 17798CE00A652B50009733EB /* cfgopts.cpp */, 175909550CA453990089CF9F /* dirty_rects.cpp */, B426E0EF19D88567003EEB83 /* disasm-builtin.cpp */, B426E0F019D88567003EEB83 /* disasm-glue.cpp */, 8C54C7DB20B459A0007744DD /* disasm-x86.cpp */, 8C54C7D920B4597B007744DD /* disasm-x86-builtin.c */, 17798CE90A652B50009733EB /* dsp.cpp */, 17EC07DF0ECB762900100ED7 /* dsp_core.c */, 17EC07E00ECB762900100ED7 /* dsp_cpu.c */, 17EC07E10ECB762900100ED7 /* dsp_disasm.c */, 17EC07E20ECB762900100ED7 /* dsp.cpp */, 170C2B850BB872920026484E /* dyngl.c */, 17798CEA0A652B50009733EB /* emul_op.cpp */, 17798CEB0A652B50009733EB /* fakeio.cpp */, CBBC87011B5F97DE00C0DABF /* glenums.c */, 17798CF90A652B50009733EB /* hardware.cpp */, 17798CFC0A652B50009733EB /* host.cpp */, 17798CFA0A652B50009733EB /* host_audio.cpp */, 17798CFB0A652B50009733EB /* host_clock.cpp */, B44B01B50D07447F0017F23B /* host_surface.cpp */, B44B01B60D07447F0017F23B /* host_surface_opengl.cpp */, 17798CFD0A652B50009733EB /* hostscreen.cpp */, B44B01B70D07447F0017F23B /* hostscreen_opengl.cpp */, 17798CFE0A652B50009733EB /* ide.cpp */, 17798CFF0A652B50009733EB /* identify.cpp */, 17798D000A652B50009733EB /* ikbd.cpp */, 17798D390A652B50009733EB /* input.cpp */, 17EC080A0ECB774200100ED7 /* joypads.cpp */, 17C0AFFC0CBB0A85000D2916 /* logo.cpp */, 17798D5E0A652B50009733EB /* main.cpp */, 17798D5F0A652B50009733EB /* md5.cpp */, 17798D600A652B50009733EB /* mfp.cpp */, 17D5D2580AC70DBD003D0FE9 /* midi_file.cpp */, 17D5D25B0AC70DC6003D0FE9 /* midi_sequencer.cpp */, 17798D610A652B50009733EB /* midi.cpp */, 17798D620A652B51009733EB /* mmu.cpp */, 17798DAA0A652B51009733EB /* natfeats.cpp */, 17798DAB0A652B51009733EB /* ncr5380.cpp */, 17798DAC0A652B51009733EB /* ndebug.cpp */, 17798DAD0A652B51009733EB /* parallel_file.cpp */, 17798DAE0A652B51009733EB /* parallel_parport.cpp */, 17798DAF0A652B51009733EB /* parallel_x86.cpp */, 17798DB00A652B51009733EB /* parallel.cpp */, 17798DB10A652B51009733EB /* parameters.cpp */, 17798DB20A652B51009733EB /* romdiff.cpp */, 17798DB30A652B51009733EB /* rtc.cpp */, 1732BC81124540FF00272489 /* scc.cpp */, 3424B2C11F52CF7300E0EFC3 /* sdl_bmp.cpp */, 1732BC861245412B00272489 /* serial.cpp */, 1732BC871245412B00272489 /* serial_port.cpp */, 17798DB50A652B51009733EB /* tools.cpp */, 17798E8B0A652B52009733EB /* videl.cpp */, F83B576C0C8B1F0100BA68D4 /* videl_zoom.cpp */, 17798E8C0A652B52009733EB /* yamaha.cpp */, ); name = "Aranym Sources"; sourceTree = ""; }; 17798CED0A652B50009733EB /* gui-sdl */ = { isa = PBXGroup; children = ( CBEA27B21AF6527500B12FC5 /* dlgHostfs.cpp */, B44B01B00D07443D0017F23B /* dialog.cpp */, 17798CEE0A652B50009733EB /* dlgAlert.cpp */, 17798CEF0A652B50009733EB /* dlgDisk.cpp */, 17798CF00A652B50009733EB /* dlgFileSelect.cpp */, 17798CF10A652B50009733EB /* dlgHotkeys.cpp */, 17798CF20A652B50009733EB /* dlgKeyboard.cpp */, B44B01C40D0744D30017F23B /* dlgKeypress.cpp */, 17798CF30A652B50009733EB /* dlgMain.cpp */, B491646E0C5406D900CFB5B0 /* dlgNetwork.cpp */, 171B2BD30C4017C9007D8975 /* dlgOs.cpp */, B475E5A60D4FA41500C8607E /* dlgPartition.cpp */, 1717E85A151680B900D416FA /* dlgUsb.cpp */, 171B2BD40C4017C9007D8975 /* dlgVideo.cpp */, 17798CF40A652B50009733EB /* file.cpp */, 17798CF50A652B50009733EB /* file.h */, 17798CF70A652B50009733EB /* sdlgui.cpp */, 17798CF80A652B50009733EB /* sdlgui.h */, ); name = "gui-sdl"; path = "../../gui-sdl"; sourceTree = SOURCE_ROOT; }; 17798D010A652B50009733EB /* include */ = { isa = PBXGroup; children = ( CBD0F45E1B5CF7530081A555 /* SDL_opengl_wrapper.h */, CBD0F45D1B5CF7450081A555 /* SDL_compat.h */, CBD0F45C1B5CF72F0081A555 /* disasm-glue.h */, 17798D020A652B50009733EB /* acia.h */, 17798D030A652B50009733EB /* acsifdc.h */, 1732BC8E1245415900272489 /* adler32.h */, 17798D040A652B50009733EB /* aradata.h */, 17798D050A652B50009733EB /* aramd5.h */, 17798D060A652B50009733EB /* aranym_exception.h */, 17798D070A652B50009733EB /* aspi-win32.h */, 17798D080A652B50009733EB /* ata.h */, 1732BC8F1245415900272489 /* audio_conv.h */, 17798D090A652B50009733EB /* audio_crossbar.h */, 17798D0A0A652B50009733EB /* audio_dma.h */, 17798D0B0A652B50009733EB /* blitter.h */, 17798D0C0A652B50009733EB /* bootos.h */, 17798D0D0A652B50009733EB /* bootos_emutos.h */, 17798D0E0A652B50009733EB /* bootos_linux.h */, 17798D0F0A652B50009733EB /* bootos_tos.h */, 17798D100A652B50009733EB /* cdrom.h */, 17798D110A652B50009733EB /* cfgopts.h */, 17798D120A652B50009733EB /* debug.h */, 1732BC941245415900272489 /* dirty_rects.h */, 17798D130A652B50009733EB /* dsp.h */, 17EC08040ECB76EF00100ED7 /* dsp_core.h */, 17798D140A652B50009733EB /* dsp_cpu.h */, 17798D150A652B50009733EB /* dsp_disasm.h */, 1732BC951245415900272489 /* dyngl.h */, 17798D160A652B50009733EB /* emu_bochs.h */, 17798D170A652B50009733EB /* emul_op.h */, CBBC87001B5F97C000C0DABF /* glenums.h */, 17798D190A652B50009733EB /* hardware.h */, 17798D1A0A652B50009733EB /* host.h */, 17798D1B0A652B50009733EB /* host_audio.h */, 17798D1C0A652B50009733EB /* host_clock.h */, 17798D1D0A652B50009733EB /* host_clock_unix.h */, 17798D1E0A652B50009733EB /* host_filesys.h */, 1732BC981245415900272489 /* host_surface.h */, 1732BC991245415900272489 /* host_surface_opengl.h */, 1732BC9A1245415900272489 /* hostscreen_opengl.h */, 17798D1F0A652B50009733EB /* hostscreen.h */, 17798D200A652B50009733EB /* icio.h */, 17798D210A652B50009733EB /* ide.h */, 1732BC9B1245415900272489 /* logo.h */, 1732BC9C1245415900272489 /* midi_file.h */, 1732BC9D1245415900272489 /* midi_sequencer.h */, 17798D220A652B50009733EB /* identify.h */, 17798D230A652B50009733EB /* ikbd.h */, 17798D240A652B50009733EB /* input.h */, 17EC08050ECB76FD00100ED7 /* joypads.h */, 17798D250A652B50009733EB /* main.h */, 17798D260A652B50009733EB /* mfp.h */, 17798D270A652B50009733EB /* midi.h */, 17798D280A652B50009733EB /* mmu.h */, 17798D290A652B50009733EB /* natfeats.h */, 17798D2A0A652B50009733EB /* ncr5380.h */, 17798D2B0A652B50009733EB /* ndebug.h */, 17798D2C0A652B50009733EB /* parallel.h */, 17798D2D0A652B50009733EB /* parallel_file.h */, 17798D2E0A652B50009733EB /* parallel_parport.h */, 17798D2F0A652B50009733EB /* parallel_x86.h */, 17798D300A652B50009733EB /* parameters.h */, 17798D310A652B50009733EB /* romdiff.h */, 17798D320A652B50009733EB /* rtc.h */, 17798D330A652B50009733EB /* scsidefs.h */, 1732BC9E1245415900272489 /* scc.h */, 1732BC9F1245415900272489 /* serial.h */, 1732BCA01245415900272489 /* serial_port.h */, 17798D340A652B50009733EB /* tools.h */, 17798D350A652B50009733EB /* toserror.h */, 17798D360A652B50009733EB /* version.h */, CBD0F4931B5CFDC10081A555 /* verify.h */, 17798D370A652B50009733EB /* videl.h */, 1732BCA11245415900272489 /* videl_zoom.h */, 17798D380A652B50009733EB /* yamaha.h */, ); name = include; path = ../../include; sourceTree = SOURCE_ROOT; }; 17798D630A652B51009733EB /* natfeat */ = { isa = PBXGroup; children = ( CBD0F4991B5CFDE50081A555 /* osmesa_context.h */, CBD0F4941B5CFDD60081A555 /* osmesa_context.cpp */, 17798D650A652B51009733EB /* atari_example_gfa.lst */, 17798D640A652B51009733EB /* atari_example.c */, 17798D660A652B51009733EB /* atari_rootsec.h */, 17798D670A652B51009733EB /* debugprintf.cpp */, 17798D680A652B51009733EB /* debugprintf.h */, 17798D690A652B51009733EB /* doc */, 17798D6F0A652B51009733EB /* ethernet.cpp */, 17798D700A652B51009733EB /* ethernet.h */, 17798D710A652B51009733EB /* fvdidrv_nfapi.h */, 17798D720A652B51009733EB /* hostfs.cpp */, 17798D730A652B51009733EB /* hostfs.h */, CBCE37AE1B05B76100A19E4D /* maptab.cpp */, CBCE37AD1B05B70200A19E4D /* maptab.h */, 17798D740A652B51009733EB /* nf_base.cpp */, 17798D750A652B51009733EB /* nf_base.h */, 17798D760A652B51009733EB /* nf_basicset.cpp */, 17798D770A652B51009733EB /* nf_basicset.h */, 17798D780A652B51009733EB /* nf_objs.cpp */, 17798D790A652B51009733EB /* nf_objs.h */, 17798D7A0A652B51009733EB /* nfaudio.cpp */, 17798D7B0A652B51009733EB /* nfaudio.h */, 17798D7C0A652B51009733EB /* nfbootstrap.cpp */, 17798D7D0A652B51009733EB /* nfbootstrap.h */, 17798D800A652B51009733EB /* nfcdrom_linux.cpp */, 17798D810A652B51009733EB /* nfcdrom_linux.h */, B442F19F193C9BC100D515B8 /* nfcdrom_sdl.cpp */, B442F1A0193C9BC100D515B8 /* nfcdrom_sdl.h */, 17798D7E0A652B51009733EB /* nfcdrom.cpp */, 17798D7F0A652B51009733EB /* nfcdrom.h */, 17798D840A652B51009733EB /* nfclipbrd_nfapi.h */, 17798D820A652B51009733EB /* nfclipbrd.cpp */, 17798D830A652B51009733EB /* nfclipbrd.h */, 8C5BB71A205DBCFD000B8CFC /* nf_hostexec.cpp */, 8C5BB71F205DBD31000B8CFC /* nf_hostexec.h */, 17798D850A652B51009733EB /* nfjpeg.cpp */, 17798D860A652B51009733EB /* nfjpeg.h */, 17798D870A652B51009733EB /* nfosmesa */, 17798D9C0A652B51009733EB /* nfosmesa.cpp */, 17798D9D0A652B51009733EB /* nfosmesa.h */, 17798DA00A652B51009733EB /* nfpci_linux.cpp */, 17798DA10A652B51009733EB /* nfpci_linux.h */, 17798D9E0A652B51009733EB /* nfpci.cpp */, 17798D9F0A652B51009733EB /* nfpci.h */, 8C5BB720205DBE44000B8CFC /* nf_scsidrv.cpp */, 8C5BB725205DBE5B000B8CFC /* nf_scsidrv.h */, 17798DA40A652B51009733EB /* nfvdi_opengl.cpp */, 17798DA50A652B51009733EB /* nfvdi_opengl.h */, 17798DA60A652B51009733EB /* nfvdi_soft.cpp */, 17798DA70A652B51009733EB /* nfvdi_soft.h */, 17798DA20A652B51009733EB /* nfvdi.cpp */, 17798DA30A652B51009733EB /* nfvdi.h */, 17798DA80A652B51009733EB /* xhdi.cpp */, 17798DA90A652B51009733EB /* xhdi.h */, ); name = natfeat; path = ../../natfeat; sourceTree = SOURCE_ROOT; }; 17798D690A652B51009733EB /* doc */ = { isa = PBXGroup; children = ( 17798D6A0A652B51009733EB /* attic.txt */, 17798D6B0A652B51009733EB /* call68k.txt */, 17798D6C0A652B51009733EB /* native.txt */, 17798D6D0A652B51009733EB /* nf.h */, 17798D6E0A652B51009733EB /* sample.c */, ); path = doc; sourceTree = ""; }; 17798D870A652B51009733EB /* nfosmesa */ = { isa = PBXGroup; children = ( 17798D890A652B51009733EB /* call-gl.c */, 17798D8C0A652B51009733EB /* dispatch-gl.c */, ); path = nfosmesa; sourceTree = ""; }; 17798DB60A652B51009733EB /* uae_cpu */ = { isa = PBXGroup; children = ( 17798DB90A652B51009733EB /* compiler */, 17798DC70A652B51009733EB /* fpu */, 17798DB70A652B51009733EB /* aranym_glue.cpp */, 17798DB80A652B51009733EB /* build68k.c */, 17798DC20A652B51009733EB /* cpu_emulation.h */, 17798DC30A652B51009733EB /* cpummu.cpp */, 17798DC40A652B51009733EB /* cpummu.h */, 17798DC60A652B51009733EB /* debug.cpp */, 17798DDB0A652B51009733EB /* gencpu.c */, 17798DDC0A652B51009733EB /* m68k.h */, 17798DDD0A652B51009733EB /* memory.cpp */, B4420ED71A0AAC240063F8A9 /* memory-uae.h */, 17798DDF0A652B51009733EB /* newcpu.cpp */, 17798DE00A652B51009733EB /* newcpu.h */, 17798DE10A652B51009733EB /* noflags.h */, 17798DE20A652B51009733EB /* readcpu.cpp */, 17798DE30A652B51009733EB /* readcpu.h */, 17798DE40A652B51009733EB /* registers.h */, 17798DE50A652B51009733EB /* spcflags.h */, 17798DE60A652B51009733EB /* table68k */, ); name = uae_cpu; path = ../../uae_cpu; sourceTree = SOURCE_ROOT; }; 17798DB90A652B51009733EB /* compiler */ = { isa = PBXGroup; children = ( 17798DBA0A652B51009733EB /* codegen_x86.cpp */, 17798DBB0A652B51009733EB /* codegen_x86.h */, 17798DBC0A652B51009733EB /* compemu.h */, 17798DBD0A652B51009733EB /* compemu_fpp.cpp */, B49A2412193CBE9600B73091 /* compemu_midfunc_x86.cpp */, B49A2413193CBE9600B73091 /* compemu_midfunc_x86.h */, 17798DBE0A652B51009733EB /* compemu_support.cpp */, 17798DBF0A652B51009733EB /* flags_x86.h */, 17798DC00A652B51009733EB /* gencomp.c */, 17798DC10A652B51009733EB /* test_codegen_x86.cpp */, ); path = compiler; sourceTree = ""; }; 17798DC70A652B51009733EB /* fpu */ = { isa = PBXGroup; children = ( 17798DC80A652B51009733EB /* core.h */, 17798DC90A652B51009733EB /* exceptions.cpp */, 17798DCA0A652B51009733EB /* exceptions.h */, 17798DCB0A652B51009733EB /* flags.cpp */, 17798DCC0A652B51009733EB /* flags.h */, 17798DCD0A652B51009733EB /* fpu.h */, 17798DCE0A652B51009733EB /* fpu_ieee.cpp */, 17798DCF0A652B51009733EB /* fpu_ieee.h */, 171A3F0E154F2765005F6C9D /* fpu_mpfr.cpp */, 17798DD00A652B51009733EB /* fpu_uae.cpp */, 17798DD10A652B51009733EB /* fpu_uae.h */, 17798DD20A652B51009733EB /* fpu_x86.cpp */, 17798DD30A652B51009733EB /* fpu_x86.h */, 17798DD40A652B51009733EB /* fpu_x86_asm.h */, 17798DD50A652B51009733EB /* impl.h */, 17798DD60A652B51009733EB /* mathlib.cpp */, 17798DD70A652B51009733EB /* mathlib.h */, 17798DD80A652B51009733EB /* rounding.cpp */, 17798DD90A652B51009733EB /* rounding.h */, 17798DDA0A652B51009733EB /* types.h */, ); path = fpu; sourceTree = ""; }; 17798DE70A652B51009733EB /* Unix */ = { isa = PBXGroup; children = ( B41C696D0C536D910013E498 /* darwin */, 17798E210A652B51009733EB /* MacOSX */, 17798DEA0A652B51009733EB /* ansidecl.h */, 17798DEB0A652B51009733EB /* aratapif.c */, 17FFD47E106953D40084B493 /* clipbrd_x11.cpp */, 17798E130A652B51009733EB /* getopt.c */, 17798E140A652B51009733EB /* getopt.h */, 17798E150A652B51009733EB /* getopt1.c */, 17798E160A652B51009733EB /* getopt_init.c */, 17798E170A652B51009733EB /* host_clock_unix.cpp */, 17798E180A652B51009733EB /* host_filesys_unix.cpp */, 17798E190A652B51009733EB /* install-sh */, 17798E7C0A652B52009733EB /* main_unix.cpp */, 17798E7F0A652B52009733EB /* Makefile.in */, 17798E820A652B52009733EB /* parameters_unix.cpp */, B476BEC619F3BDB60088926C /* sigsegv_common_x86.h */, 17798E850A652B52009733EB /* sysdeps.h */, 17798E860A652B52009733EB /* vasprintf.c */, 17798E870A652B52009733EB /* vm_alloc.cpp */, 17798E880A652B52009733EB /* vm_alloc.h */, ); name = Unix; path = ..; sourceTree = SOURCE_ROOT; }; 17798E210A652B51009733EB /* MacOSX */ = { isa = PBXGroup; children = ( 17473D1415AA07FD00CAEA47 /* bpf_helper.c */, 17473D1515AA07FD00CAEA47 /* ethernet_macosx.cpp */, 17473D1615AA07FD00CAEA47 /* ethernet_macosx.h */, 17473D1715AA07FD00CAEA47 /* fd_trans.c */, 17473D1815AA07FD00CAEA47 /* fd_trans.h */, 17798E420A652B51009733EB /* parameters_MacOSX.cpp */, ); path = MacOSX; sourceTree = ""; }; 17AC405D13F1C973003B4FAD /* Build Scripts */ = { isa = PBXGroup; children = ( CB4679571AFA788C0090A72D /* externalScript.sh */, 17AC403013F1C81F003B4FAD /* configure.sh */, 17AC403113F1C81F003B4FAD /* gen_cpu.sh */, 173598FF13F1F7AE00F84DB3 /* gen_diskimage.sh */, B472BB88176907CB00611354 /* gen_machfiles.sh */, 17AC413213F1C81F003B4FAD /* set_rpath.sh */, 17AC403213F1C81F003B4FAD /* set_version.sh */, 17AC409013F1D216003B4FAD /* Unix */, ); name = "Build Scripts"; sourceTree = ""; }; 17AC409013F1D216003B4FAD /* Unix */ = { isa = PBXGroup; children = ( CB2C9D411B14E27200EC7BFA /* Makefile.am */, 1759CCF319845F2600C4500E /* m4 */, 17798DEC0A652B51009733EB /* autogen.sh */, 17798DFD0A652B51009733EB /* configure.ac */, 17AC408513F1CFA1003B4FAD /* configure */, 17798DF60A652B51009733EB /* config.guess */, ); name = Unix; sourceTree = ""; }; 17AC409213F1D3B2003B4FAD /* Generated Sources */ = { isa = PBXGroup; children = ( CBEA27C81AF65EB200B12FC5 /* cpufunctbl_pcc.cpp */, CBEA27C41AF65B2200B12FC5 /* cpufunctbl_i386.cpp */, CBEA27C51AF65B2200B12FC5 /* cpufunctbl_x86_64.cpp */, CBEA27BF1AF65A6900B12FC5 /* cpufunctbl.cpp */, 17AC409913F1D403003B4FAD /* config.h */, 17AC409813F1D403003B4FAD /* config_ppc.h */, 173598B713F1E97B00F84DB3 /* config_i386.h */, 17DA987115BC87FD00D0B5E4 /* config_x86_64.h */, 17DA987315BC87FD00D0B5E4 /* version_date.h */, 17AC409713F1D403003B4FAD /* cputbl.h */, 17AC409A13F1D403003B4FAD /* cpudefs.cpp */, 17AC409D13F1D403003B4FAD /* cpustbl.cpp */, 17AC409C13F1D403003B4FAD /* cpuemu.cpp */, 17AC409B13F1D403003B4FAD /* cpuemu_ppc.cpp */, 173598B813F1E97B00F84DB3 /* cpuemu_i386.cpp */, 17DA987215BC87FD00D0B5E4 /* cpuemu_x86_64.cpp */, 173598F413F1F61300F84DB3 /* cpuemu_nf.cpp */, 173598F513F1F61300F84DB3 /* cpustbl_nf.cpp */, 17E699AC13F3395A00C3B36D /* comptbl.h */, 173598F213F1F61300F84DB3 /* compemu.cpp */, 173598F313F1F61300F84DB3 /* compstbl.cpp */, B472BB8B17690B2D00611354 /* mach_exc.h */, B472BB8C17690B2D00611354 /* mach_excServer.c */, B472BB8D17690B2D00611354 /* mach_excUser.c */, ); name = "Generated Sources"; sourceTree = ""; }; 17BCD8A60B20FFDF00432CE1 /* Documentation */ = { isa = PBXGroup; children = ( 17398E110B21048100A9B4DB /* README.rtf */, 17BCD8B00B21004100432CE1 /* AUTHORS */, 17BCD8B10B21004100432CE1 /* BUGS */, 17BCD8B20B21004100432CE1 /* ChangeLog */, 17BCD8B30B21004100432CE1 /* COPYING */, 17BCD8B40B21004100432CE1 /* FAQ */, 17E683EA0C90E38900A8BE0B /* INSTALL */, 17BCD8B50B21004100432CE1 /* NEWS */, 17BCD8B60B21004100432CE1 /* README.md */, 17BCD8B70B21004100432CE1 /* TODO */, 17BCD8C80B21010C00432CE1 /* config */, ); name = Documentation; sourceTree = ""; }; 17E05B5715599D4A00201A9C /* MPFR */ = { isa = PBXGroup; children = ( 170539131555D457006A6DDE /* libgmp.dylib */, 170539141555D457006A6DDE /* libmpfr.dylib */, 170539181555D457006A6DDE /* libjpeg.dylib */, ); name = MPFR; sourceTree = ""; }; 19C28FACFE9D520D11CA2CBB /* Products */ = { isa = PBXGroup; children = ( 8D1107320486CEB800E47090 /* MacAranym.app */, 17BCD7E90B20F65000432CE1 /* MacAranym MMU.app */, B439AC9B0C5B2FD00046EFC9 /* MacAranym JIT.app */, 1778A4E21555A8A70005B336 /* MacAranym MMU MPFR.app */, 17473D2515AA0A1100CAEA47 /* bpf_helper */, 8CB53C74203F0D530005E5AD /* MacAranym SDL2.app */, 8CB53C89203F0D670005E5AD /* MacAranym JIT SDL2.app */, 8CB53C9E203F0D780005E5AD /* MacAranym MMU SDL2.app */, ); name = Products; sourceTree = ""; }; 29B97314FDCFA39411CA2CEA /* MacAranym */ = { isa = PBXGroup; children = ( 17BCD8A60B20FFDF00432CE1 /* Documentation */, 17798CD20A652B3B009733EB /* Aranym Sources */, 17AC405D13F1C973003B4FAD /* Build Scripts */, 17AC409213F1D3B2003B4FAD /* Generated Sources */, 29B97323FDCFA39411CA2CEA /* Frameworks & Libraries */, 19C28FACFE9D520D11CA2CBB /* Products */, 17B276EE0A9F52CF00DD6223 /* ChangeLog */, B449DA000D2A9212005F0CC6 /* logo.bmp */, 1743987C0B320B480011038E /* README_Xcode.rtf */, 17E78DBF15AA3E0B006C560E /* README_ethernet.rtf */, ); name = MacAranym; sourceTree = ""; usesTabs = 1; }; 29B97323FDCFA39411CA2CEA /* Frameworks & Libraries */ = { isa = PBXGroup; children = ( 8CB53CBE203F1EBA0005E5AD /* SDL2_image.framework */, 8CB53CBC203F1EAD0005E5AD /* SDL2.framework */, 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, 002F39F909D0881F00EBEB88 /* SDL.framework */, 17B2B51A0C41781B00595D44 /* SDL_image.framework */, 17E05B5715599D4A00201A9C /* MPFR */, 1765B70F0C91C19F00DD682B /* OSMesa */, 1765B7100C91C1B300DD682B /* TunTap */, ); name = "Frameworks & Libraries"; sourceTree = ""; }; B41C696D0C536D910013E498 /* darwin */ = { isa = PBXGroup; children = ( B4844A6B0C7BA262003FE2D2 /* aranym.icns */, B4844A6C0C7BA262003FE2D2 /* aranym2.icns */, B4844A6D0C7BA262003FE2D2 /* busybee.icns */, 17F10C631066C16500BDE380 /* clipbrd_darwin.M */, B4844A6F0C7BA262003FE2D2 /* Info.plist */, B4844A710C7BA262003FE2D2 /* PkgInfo */, B4C7EE931768552800B63B96 /* MachServer.c */, B4C7EE941768552800B63B96 /* MachUser.c */, F83B575D0C8B143300BA68D4 /* SDLHotkeysRefresh.M */, B4844A730C7BA262003FE2D2 /* SDLMain.h */, B4844A740C7BA262003FE2D2 /* SDLMain.M */, B4844A640C7BA1A0003FE2D2 /* aranym.nib */, B47270880C6BB5D600A1379D /* aratapif.sh */, 17A2B1960C66113000180C55 /* Makefile */, B4A9E9C10C5B33AC00C156C3 /* ethernet_darwin.cpp */, B4A9E9C20C5B33AC00C156C3 /* ethernet_darwin.h */, B4F337B90C480C4A00B3A0A9 /* sigsegv_darwin_x86.cpp */, B47270900C6BB62700A1379D /* README_ethernet.txt */, ); name = darwin; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXLegacyTarget section */ CB4679531AFA78430090A72D /* ExternalScript */ = { isa = PBXLegacyTarget; buildArgumentsString = "\"$(PROJECT_DIR)/scripts/externalScript.sh\""; buildConfigurationList = CB4679561AFA78630090A72D /* Build configuration list for PBXLegacyTarget "ExternalScript" */; buildPhases = ( ); buildToolPath = /bin/sh; dependencies = ( ); name = ExternalScript; passBuildSettingsInEnvironment = 1; productName = ExternalScript; }; /* End PBXLegacyTarget section */ /* Begin PBXNativeTarget section */ 17473D2415AA0A1100CAEA47 /* bpf_helper */ = { isa = PBXNativeTarget; buildConfigurationList = 17473D2C15AA0A1100CAEA47 /* Build configuration list for PBXNativeTarget "bpf_helper" */; buildPhases = ( 17473D2115AA0A1100CAEA47 /* Sources */, 17473D2215AA0A1100CAEA47 /* Frameworks */, 17473D2315AA0A1100CAEA47 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); name = bpf_helper; productName = bpf_helper; productReference = 17473D2515AA0A1100CAEA47 /* bpf_helper */; productType = "com.apple.product-type.tool"; }; 1778A4601555A8A70005B336 /* MacAranym MMU+MPFR */ = { isa = PBXNativeTarget; buildConfigurationList = 1778A4DE1555A8A70005B336 /* Build configuration list for PBXNativeTarget "MacAranym MMU+MPFR" */; buildPhases = ( 1778A4611555A8A70005B336 /* Script: Run configure */, 1778A4621555A8A70005B336 /* Script: Build CPU source files */, 1778A4631555A8A70005B336 /* Sources */, 1778A4CF1555A8A70005B336 /* Frameworks */, 1778A4D61555A8A70005B336 /* Resources */, 1778A4DA1555A8A70005B336 /* Copy Frameworks into .app bundle */, 170539191555D5BF006A6DDE /* Copy Executables */, 1705391C1555DAEF006A6DDE /* Script: Fixup dynamic library loading */, 1778A4DD1555A8A70005B336 /* Script: Set correct ARAnyM version */, ); buildRules = ( ); dependencies = ( CB46795F1AFA79C10090A72D /* PBXTargetDependency */, 17473D3915AA0FF400CAEA47 /* PBXTargetDependency */, ); name = "MacAranym MMU+MPFR"; productInstallPath = "$(HOME)/Applications"; productName = MacAranym; productReference = 1778A4E21555A8A70005B336 /* MacAranym MMU MPFR.app */; productType = "com.apple.product-type.application"; }; 17BCD7880B20F64F00432CE1 /* MacAranym MMU */ = { isa = PBXNativeTarget; buildConfigurationList = 17BCD7E50B20F64F00432CE1 /* Build configuration list for PBXNativeTarget "MacAranym MMU" */; buildPhases = ( 1778A4611555A8A70005B336 /* Script: Run configure */, 1778A4621555A8A70005B336 /* Script: Build CPU source files */, 17BCD78B0B20F64F00432CE1 /* Sources */, 17BCD7DB0B20F64F00432CE1 /* Frameworks */, 17BCD7E00B20F64F00432CE1 /* Resources */, 17BCD7E30B20F64F00432CE1 /* Copy Frameworks into .app bundle */, 17473D3E15AA103E00CAEA47 /* Copy Executables */, 1705391C1555DAEF006A6DDE /* Script: Fixup dynamic library loading */, 1778A4DD1555A8A70005B336 /* Script: Set correct ARAnyM version */, ); buildRules = ( ); dependencies = ( CB46795B1AFA79700090A72D /* PBXTargetDependency */, 17473D3D15AA0FFA00CAEA47 /* PBXTargetDependency */, ); name = "MacAranym MMU"; productInstallPath = "$(HOME)/Applications"; productName = MacAranym; productReference = 17BCD7E90B20F65000432CE1 /* MacAranym MMU.app */; productType = "com.apple.product-type.application"; }; 8CB53C73203F0D530005E5AD /* MacAranym SDL2 */ = { isa = PBXNativeTarget; buildConfigurationList = 8CB53C84203F0D540005E5AD /* Build configuration list for PBXNativeTarget "MacAranym SDL2" */; buildPhases = ( 1778A4611555A8A70005B336 /* Script: Run configure */, 1778A4621555A8A70005B336 /* Script: Build CPU source files */, 8D11072C0486CEB800E47090 /* Sources */, 8CB53C71203F0D530005E5AD /* Frameworks */, 8CB53C72203F0D530005E5AD /* Resources */, B439AC950C5B2FD00046EFCA /* Copy Frameworks into .app bundle */, 17473D3515AA0A7500CAEA47 /* Copy Executables */, 1705391C1555DAEF006A6DDE /* Script: Fixup dynamic library loading */, 1778A4DD1555A8A70005B336 /* Script: Set correct ARAnyM version */, ); buildRules = ( ); dependencies = ( 8CB53CD3203F26160005E5AD /* PBXTargetDependency */, 8CB53CD1203F260F0005E5AD /* PBXTargetDependency */, ); name = "MacAranym SDL2"; productInstallPath = "$(HOME)/Applications"; productName = "MacAranym SDL2"; productReference = 8CB53C74203F0D530005E5AD /* MacAranym SDL2.app */; productType = "com.apple.product-type.application"; }; 8CB53C88203F0D670005E5AD /* MacAranym JIT SDL2 */ = { isa = PBXNativeTarget; buildConfigurationList = 8CB53C97203F0D680005E5AD /* Build configuration list for PBXNativeTarget "MacAranym JIT SDL2" */; buildPhases = ( 1778A4611555A8A70005B336 /* Script: Run configure */, 1778A4621555A8A70005B336 /* Script: Build CPU source files */, B472BB871768FBBA00611354 /* Build Mach Support files */, B439AC320C5B2FD00046EFC9 /* Sources */, 8CB53C86203F0D670005E5AD /* Frameworks */, 8CB53C87203F0D670005E5AD /* Resources */, B439AC950C5B2FD00046EFCA /* Copy Frameworks into .app bundle */, 17473D3515AA0A7500CAEA47 /* Copy Executables */, 1705391C1555DAEF006A6DDE /* Script: Fixup dynamic library loading */, 1778A4DD1555A8A70005B336 /* Script: Set correct ARAnyM version */, ); buildRules = ( ); dependencies = ( 8CB53CD7203F26270005E5AD /* PBXTargetDependency */, 8CB53CD5203F261F0005E5AD /* PBXTargetDependency */, ); name = "MacAranym JIT SDL2"; productInstallPath = "$(HOME)/Applications"; productName = "MacAranym JIT SDL2"; productReference = 8CB53C89203F0D670005E5AD /* MacAranym JIT SDL2.app */; productType = "com.apple.product-type.application"; }; 8CB53C9D203F0D780005E5AD /* MacAranym MMU SDL2 */ = { isa = PBXNativeTarget; buildConfigurationList = 8CB53CAC203F0D780005E5AD /* Build configuration list for PBXNativeTarget "MacAranym MMU SDL2" */; buildPhases = ( 1778A4611555A8A70005B336 /* Script: Run configure */, 1778A4621555A8A70005B336 /* Script: Build CPU source files */, 17BCD78B0B20F64F00432CE1 /* Sources */, 8CB53C9B203F0D780005E5AD /* Frameworks */, 8CB53C9C203F0D780005E5AD /* Resources */, B439AC950C5B2FD00046EFCA /* Copy Frameworks into .app bundle */, 17473D3515AA0A7500CAEA47 /* Copy Executables */, 1705391C1555DAEF006A6DDE /* Script: Fixup dynamic library loading */, 1778A4DD1555A8A70005B336 /* Script: Set correct ARAnyM version */, ); buildRules = ( ); dependencies = ( 8CB53CDB203F26380005E5AD /* PBXTargetDependency */, 8CB53CD9203F26320005E5AD /* PBXTargetDependency */, ); name = "MacAranym MMU SDL2"; productInstallPath = "$(HOME)/Applications"; productName = "MacAranym MMU SDL2"; productReference = 8CB53C9E203F0D780005E5AD /* MacAranym MMU SDL2.app */; productType = "com.apple.product-type.application"; }; 8D1107260486CEB800E47090 /* MacAranym */ = { isa = PBXNativeTarget; buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "MacAranym" */; buildPhases = ( 1778A4611555A8A70005B336 /* Script: Run configure */, 1778A4621555A8A70005B336 /* Script: Build CPU source files */, 8D11072C0486CEB800E47090 /* Sources */, 8D11072E0486CEB800E47090 /* Frameworks */, 8D1107290486CEB800E47090 /* Resources */, 002F39FD09D0883400EBEB88 /* Copy Frameworks into .app bundle */, 17473D3515AA0A7500CAEA47 /* Copy Executables */, 1705391C1555DAEF006A6DDE /* Script: Fixup dynamic library loading */, 1778A4DD1555A8A70005B336 /* Script: Set correct ARAnyM version */, ); buildRules = ( ); dependencies = ( CB4679591AFA79440090A72D /* PBXTargetDependency */, 17473D3415AA0A5D00CAEA47 /* PBXTargetDependency */, ); name = MacAranym; productInstallPath = "$(HOME)/Applications"; productName = MacAranym; productReference = 8D1107320486CEB800E47090 /* MacAranym.app */; productType = "com.apple.product-type.application"; }; B439AC2F0C5B2FD00046EFC9 /* MacAranym JIT */ = { isa = PBXNativeTarget; buildConfigurationList = B439AC970C5B2FD00046EFC9 /* Build configuration list for PBXNativeTarget "MacAranym JIT" */; buildPhases = ( 1778A4611555A8A70005B336 /* Script: Run configure */, 1778A4621555A8A70005B336 /* Script: Build CPU source files */, B472BB871768FBBA00611354 /* Build Mach Support files */, B439AC320C5B2FD00046EFC9 /* Sources */, B439AC8D0C5B2FD00046EFC9 /* Frameworks */, B439AC920C5B2FD00046EFC9 /* Resources */, B439AC950C5B2FD00046EFC9 /* Copy Frameworks into .app bundle */, 17473D4015AA106700CAEA47 /* Copy Executables */, 1705391C1555DAEF006A6DDE /* Script: Fixup dynamic library loading */, 1778A4DD1555A8A70005B336 /* Script: Set correct ARAnyM version */, ); buildRules = ( ); dependencies = ( CB46795D1AFA79AC0090A72D /* PBXTargetDependency */, 17473D3B15AA0FF800CAEA47 /* PBXTargetDependency */, ); name = "MacAranym JIT"; productInstallPath = "$(HOME)/Applications"; productName = MacAranym; productReference = B439AC9B0C5B2FD00046EFC9 /* MacAranym JIT.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; attributes = { LastUpgradeCheck = 0920; TargetAttributes = { 8CB53C73203F0D530005E5AD = { CreatedOnToolsVersion = 9.2; }; 8CB53C88203F0D670005E5AD = { CreatedOnToolsVersion = 9.2; }; 8CB53C9D203F0D780005E5AD = { CreatedOnToolsVersion = 9.2; }; }; }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MacAranym" */; compatibilityVersion = "Xcode 3.1"; developmentRegion = English; hasScannedForEncodings = 1; knownRegions = ( en, Base, ); mainGroup = 29B97314FDCFA39411CA2CEA /* MacAranym */; projectDirPath = ""; projectRoot = ../../..; targets = ( 17473D2415AA0A1100CAEA47 /* bpf_helper */, 8D1107260486CEB800E47090 /* MacAranym */, 17BCD7880B20F64F00432CE1 /* MacAranym MMU */, B439AC2F0C5B2FD00046EFC9 /* MacAranym JIT */, 1778A4601555A8A70005B336 /* MacAranym MMU+MPFR */, 17AAB2A90B20A8150016FB8D /* Packaging */, CB4679531AFA78430090A72D /* ExternalScript */, 8CB53C73203F0D530005E5AD /* MacAranym SDL2 */, 8CB53C88203F0D670005E5AD /* MacAranym JIT SDL2 */, 8CB53C9D203F0D780005E5AD /* MacAranym MMU SDL2 */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 1778A4D61555A8A70005B336 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 1778A4D71555A8A70005B336 /* logo.bmp in Resources */, 1778A4D81555A8A70005B336 /* aranym.icns in Resources */, 1778A4D91555A8A70005B336 /* aranym.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 17BCD7E00B20F64F00432CE1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( B449DA030D2A9234005F0CC6 /* logo.bmp in Resources */, 1736B10C0C70ED5900C56FAF /* aranym.icns in Resources */, B428FAF80C7BA7100039CA66 /* aranym.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 8CB53C72203F0D530005E5AD /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 8C5BB711205DBC76000B8CFC /* logo.bmp in Resources */, 8C5BB712205DBC76000B8CFC /* aranym.icns in Resources */, 8C5BB713205DBC76000B8CFC /* aranym.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 8CB53C87203F0D670005E5AD /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 8C5BB714205DBC76000B8CFC /* logo.bmp in Resources */, 8C5BB715205DBC76000B8CFC /* aranym.icns in Resources */, 8C5BB716205DBC76000B8CFC /* aranym.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 8CB53C9C203F0D780005E5AD /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 8C5BB717205DBC76000B8CFC /* logo.bmp in Resources */, 8C5BB718205DBC76000B8CFC /* aranym.icns in Resources */, 8C5BB719205DBC76000B8CFC /* aranym.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 8D1107290486CEB800E47090 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( B449DA010D2A9222005F0CC6 /* logo.bmp in Resources */, 1736B1070C70ED5900C56FAF /* aranym.icns in Resources */, B428FAF90C7BA7100039CA66 /* aranym.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; B439AC920C5B2FD00046EFC9 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( B449DA020D2A922C005F0CC6 /* logo.bmp in Resources */, 1736B1110C70ED5900C56FAF /* aranym.icns in Resources */, B428FAF70C7BA7100039CA66 /* aranym.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ 1705391C1555DAEF006A6DDE /* Script: Fixup dynamic library loading */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); name = "Script: Fixup dynamic library loading"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = ". \"$PROJECT_DIR/scripts/set_rpath.sh\"\nexit $?"; showEnvVarsInLog = 0; }; 1778A4611555A8A70005B336 /* Script: Run configure */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); name = "Script: Run configure"; outputPaths = ( "$(DERIVED_FILES_DIR)/Makefile", "$(DERIVED_FILES_DIR)/config.h", "$(DERIVED_FILES_DIR)/configure_options", "$(DERIVED_FILES_DIR)/config_i386.h", "$(DERIVED_FILES_DIR)/config_ppc.h", "$(DERIVED_FILES_DIR)/config_x86_64.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = ". \"$PROJECT_DIR/scripts/configure.sh\"\nexit $?"; showEnvVarsInLog = 0; }; 1778A4621555A8A70005B336 /* Script: Build CPU source files */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; comments = "Build source files for CPU emulation."; files = ( ); inputPaths = ( "$(SOURCE_DIR)/uae_cpu/build68k.c", "$(SOURCE_DIR)/uae_cpu/table68k", "$(DERIVED_FILES_DIR)/config_i386.h", "$(DERIVED_FILES_DIR)/config_ppc.h", ); name = "Script: Build CPU source files"; outputPaths = ( "$(DERIVED_FILE_DIR)/cpustbl.cpp", "$(DERIVED_FILE_DIR)/cpuemu.cpp", "$(DERIVED_FILE_DIR)/cpufunctbl.cpp", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = ". \"$PROJECT_DIR/scripts/gen_cpu.sh\"\nexit $?"; showEnvVarsInLog = 0; }; 1778A4DD1555A8A70005B336 /* Script: Set correct ARAnyM version */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( "$(TARGET_BUILD_DIR)/$(INFOPLIST_PATH)", ); name = "Script: Set correct ARAnyM version"; outputPaths = ( "$(DERIVED_FILE_DIR)/aranym_version", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = ". \"$PROJECT_DIR/scripts/set_version.sh\"\nexit $?"; showEnvVarsInLog = 0; }; 17AAB2A80B20A8150016FB8D /* Script: Create Diskimage */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 12; files = ( ); inputPaths = ( ); name = "Script: Create Diskimage"; outputPaths = ( "$(TARGET_BUILD_DIR)/aranym-*-macosx-*.dmg", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = ". \"$PROJECT_DIR/scripts/gen_diskimage.sh\"\nexit $?"; showEnvVarsInLog = 0; }; B472BB871768FBBA00611354 /* Build Mach Support files */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); name = "Build Mach Support files"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = ". \"$PROJECT_DIR/scripts/gen_machfiles.sh\"\nexit $?"; }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 17473D2115AA0A1100CAEA47 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 17DA987515BC88EF00D0B5E4 /* fd_trans.c in Sources */, 17473D2F15AA0A2700CAEA47 /* bpf_helper.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 1778A4631555A8A70005B336 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 8C54C7E320B45AAC007744DD /* disasm-x86.cpp in Sources */, 8C54C7E420B45AAC007744DD /* disasm-x86-builtin.c in Sources */, 1778A4E61555AA530005B336 /* fpu_mpfr.cpp in Sources */, 1778A4651555A8A70005B336 /* cpustbl.cpp in Sources */, 1778A4661555A8A70005B336 /* cpuemu.cpp in Sources */, 1778A4671555A8A70005B336 /* cpudefs.cpp in Sources */, 1778A4681555A8A70005B336 /* ethernet.cpp in Sources */, 1778A4691555A8A70005B336 /* ethernet_darwin.cpp in Sources */, 1778A46A1555A8A70005B336 /* parameters_MacOSX.cpp in Sources */, 1778A46B1555A8A70005B336 /* main.cpp in Sources */, 1778A46C1555A8A70005B336 /* vm_alloc.cpp in Sources */, 1778A46D1555A8A70005B336 /* host_clock_unix.cpp in Sources */, 1778A46E1555A8A70005B336 /* acia.cpp in Sources */, 1778A46F1555A8A70005B336 /* acsifdc.cpp in Sources */, 1778A4701555A8A70005B336 /* aradata.cpp in Sources */, 1778A4711555A8A70005B336 /* aranym_exception.cpp in Sources */, 1778A4721555A8A70005B336 /* ata.cpp in Sources */, 1778A4731555A8A70005B336 /* audio_dma.cpp in Sources */, 1778A4741555A8A70005B336 /* audio_crossbar.cpp in Sources */, 1778A4751555A8A70005B336 /* blitter.cpp in Sources */, 1778A4761555A8A70005B336 /* bootos.cpp in Sources */, 1778A4771555A8A70005B336 /* bootos_emutos.cpp in Sources */, 1778A4781555A8A70005B336 /* bootos_linux.cpp in Sources */, 1778A4791555A8A70005B336 /* bootos_tos.cpp in Sources */, 1778A47A1555A8A70005B336 /* cdrom.cpp in Sources */, 1778A47B1555A8A70005B336 /* cfgopts.cpp in Sources */, 1778A47C1555A8A70005B336 /* dsp.cpp in Sources */, 1778A47D1555A8A70005B336 /* emul_op.cpp in Sources */, 1778A47E1555A8A70005B336 /* natfeats.cpp in Sources */, 1778A47F1555A8A70005B336 /* fakeio.cpp in Sources */, 1778A4801555A8A70005B336 /* hardware.cpp in Sources */, 1778A4811555A8A70005B336 /* host.cpp in Sources */, 1778A4821555A8A70005B336 /* host_audio.cpp in Sources */, 1778A4831555A8A70005B336 /* host_clock.cpp in Sources */, 1778A4841555A8A70005B336 /* hostscreen.cpp in Sources */, 1778A4851555A8A70005B336 /* ide.cpp in Sources */, 1778A4861555A8A70005B336 /* identify.cpp in Sources */, 1778A4871555A8A70005B336 /* ikbd.cpp in Sources */, 1778A4881555A8A70005B336 /* input.cpp in Sources */, 1778A4891555A8A70005B336 /* md5.cpp in Sources */, 1778A48A1555A8A70005B336 /* mfp.cpp in Sources */, 1778A48B1555A8A70005B336 /* midi.cpp in Sources */, 1778A48C1555A8A70005B336 /* mmu.cpp in Sources */, 1778A48D1555A8A70005B336 /* ndebug.cpp in Sources */, 1778A48E1555A8A70005B336 /* ncr5380.cpp in Sources */, 347084DB1F52D107001D466A /* sdl_bmp.cpp in Sources */, 1778A48F1555A8A70005B336 /* parallel.cpp in Sources */, 1778A4901555A8A70005B336 /* parallel_file.cpp in Sources */, 1778A4911555A8A70005B336 /* parameters.cpp in Sources */, 1778A4921555A8A70005B336 /* romdiff.cpp in Sources */, B426E0F419D88567003EEB83 /* disasm-builtin.cpp in Sources */, 1778A4931555A8A70005B336 /* rtc.cpp in Sources */, 1778A4941555A8A70005B336 /* tools.cpp in Sources */, 1778A4951555A8A70005B336 /* videl.cpp in Sources */, 1778A4961555A8A70005B336 /* yamaha.cpp in Sources */, 1778A4971555A8A70005B336 /* nf_base.cpp in Sources */, 1778A4981555A8A70005B336 /* nf_objs.cpp in Sources */, 1778A4991555A8A70005B336 /* xhdi.cpp in Sources */, 1778A49A1555A8A70005B336 /* nfaudio.cpp in Sources */, 1778A49B1555A8A70005B336 /* nfbootstrap.cpp in Sources */, 1778A49C1555A8A70005B336 /* nfclipbrd.cpp in Sources */, 1778A49D1555A8A70005B336 /* nf_basicset.cpp in Sources */, 1778A49E1555A8A70005B336 /* debugprintf.cpp in Sources */, 1778A49F1555A8A70005B336 /* nfvdi.cpp in Sources */, 1778A4A01555A8A70005B336 /* nfvdi_soft.cpp in Sources */, 1778A4A11555A8A70005B336 /* nfcdrom.cpp in Sources */, 1778A4A21555A8A70005B336 /* hostfs.cpp in Sources */, 1778A4A31555A8A70005B336 /* aranym_glue.cpp in Sources */, 1778A4A41555A8A70005B336 /* memory.cpp in Sources */, B442F1A4193C9BC100D515B8 /* nfcdrom_sdl.cpp in Sources */, 1778A4A51555A8A70005B336 /* newcpu.cpp in Sources */, 1778A4A61555A8A70005B336 /* readcpu.cpp in Sources */, 1778A4A71555A8A70005B336 /* debug.cpp in Sources */, 1778A4A81555A8A70005B336 /* sdlgui.cpp in Sources */, 1778A4A91555A8A70005B336 /* dlgFileSelect.cpp in Sources */, 1778A4AA1555A8A70005B336 /* file.cpp in Sources */, 1778A4AB1555A8A70005B336 /* dlgMain.cpp in Sources */, 1778A4AC1555A8A70005B336 /* dlgKeyboard.cpp in Sources */, B426E0F819D88567003EEB83 /* disasm-glue.cpp in Sources */, 1778A4AD1555A8A70005B336 /* dlgHotkeys.cpp in Sources */, 1778A4AE1555A8A70005B336 /* dlgAlert.cpp in Sources */, 1778A4AF1555A8A70005B336 /* main_unix.cpp in Sources */, 1778A4B01555A8A70005B336 /* dlgDisk.cpp in Sources */, 1778A4B11555A8A70005B336 /* cpummu.cpp in Sources */, 1778A4B21555A8A70005B336 /* midi_file.cpp in Sources */, 1778A4B31555A8A70005B336 /* nfvdi_opengl.cpp in Sources */, 1778A4B41555A8A70005B336 /* dyngl.c in Sources */, 1778A4B51555A8A70005B336 /* dlgOs.cpp in Sources */, 1778A4B61555A8A70005B336 /* dlgVideo.cpp in Sources */, 1778A4B71555A8A70005B336 /* dlgNetwork.cpp in Sources */, 1778A4B81555A8A70005B336 /* SDLMain.m in Sources */, 1778A4B91555A8A70005B336 /* SDLHotkeysRefresh.M in Sources */, 1778A4BA1555A8A70005B336 /* videl_zoom.cpp in Sources */, 1778A4BB1555A8A70005B336 /* dirty_rects.cpp in Sources */, 1778A4BC1555A8A70005B336 /* nfjpeg.cpp in Sources */, 1778A4BD1555A8A70005B336 /* logo.cpp in Sources */, 1778A4BE1555A8A70005B336 /* dialog.cpp in Sources */, 8C5BB724205DBE45000B8CFC /* nf_scsidrv.cpp in Sources */, 1778A4BF1555A8A70005B336 /* host_surface.cpp in Sources */, 1778A4C01555A8A70005B336 /* host_surface_opengl.cpp in Sources */, 1778A4C11555A8A70005B336 /* hostscreen_opengl.cpp in Sources */, 1778A4C21555A8A70005B336 /* dlgKeypress.cpp in Sources */, 1778A4C31555A8A70005B336 /* adler32.c in Sources */, 1778A4C41555A8A70005B336 /* dlgPartition.cpp in Sources */, 1778A4C51555A8A70005B336 /* dsp_core.c in Sources */, 1778A4C61555A8A70005B336 /* dsp_cpu.c in Sources */, 1778A4C71555A8A70005B336 /* dsp_disasm.c in Sources */, 1778A4C81555A8A70005B336 /* audio_conv.cpp in Sources */, 1778A4C91555A8A70005B336 /* joypads.cpp in Sources */, 1778A4CA1555A8A70005B336 /* clipbrd_darwin.M in Sources */, 1778A4CB1555A8A70005B336 /* scc.cpp in Sources */, 1778A4CC1555A8A70005B336 /* serial.cpp in Sources */, 1778A4CD1555A8A70005B336 /* serial_port.cpp in Sources */, 8C5BB71E205DBCFD000B8CFC /* nf_hostexec.cpp in Sources */, 1778A4CE1555A8A70005B336 /* dlgUsb.cpp in Sources */, 177A4E0915AA29AE00780D11 /* ethernet_macosx.cpp in Sources */, 177A4E0C15AA29C000780D11 /* fd_trans.c in Sources */, CBEA27B61AF6527500B12FC5 /* dlgHostfs.cpp in Sources */, CBEA27C31AF65A6900B12FC5 /* cpufunctbl.cpp in Sources */, CBCE37B21B05B76100A19E4D /* maptab.cpp in Sources */, CBD862F31B2D8FA4003357BC /* nfosmesa.cpp in Sources */, CBD0F4981B5CFDD60081A555 /* osmesa_context.cpp in Sources */, CBBC87051B5F97DE00C0DABF /* glenums.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 17BCD78B0B20F64F00432CE1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 8C54C7E020B45A71007744DD /* disasm-x86-builtin.c in Sources */, 8C54C7DF20B45A64007744DD /* disasm-x86.cpp in Sources */, 17648A1A154F377A005C21BC /* fpu_uae.cpp in Sources */, 173598C013F1EE7400F84DB3 /* cpustbl.cpp in Sources */, 173598C113F1EE7800F84DB3 /* cpuemu.cpp in Sources */, 173598C213F1EE7800F84DB3 /* cpudefs.cpp in Sources */, B4A9EC080C5B3C3900C156C3 /* ethernet.cpp in Sources */, B4A9EC090C5B3C3900C156C3 /* ethernet_darwin.cpp in Sources */, 17BCD7F10B20F6BF00432CE1 /* parameters_MacOSX.cpp in Sources */, 17BCD7F20B20F6BF00432CE1 /* main.cpp in Sources */, 17BCD7F30B20F6BF00432CE1 /* vm_alloc.cpp in Sources */, 17BCD7F40B20F6BF00432CE1 /* host_clock_unix.cpp in Sources */, 17BCD7F50B20F6BF00432CE1 /* acia.cpp in Sources */, 17BCD7F60B20F6BF00432CE1 /* acsifdc.cpp in Sources */, 17BCD7F70B20F6BF00432CE1 /* aradata.cpp in Sources */, 17BCD7F80B20F6BF00432CE1 /* aranym_exception.cpp in Sources */, 17BCD7F90B20F6BF00432CE1 /* ata.cpp in Sources */, 17BCD7FA0B20F6BF00432CE1 /* audio_dma.cpp in Sources */, 17BCD7FB0B20F6BF00432CE1 /* audio_crossbar.cpp in Sources */, 17BCD7FC0B20F6BF00432CE1 /* blitter.cpp in Sources */, 17BCD7FD0B20F6BF00432CE1 /* bootos.cpp in Sources */, 17BCD7FE0B20F6BF00432CE1 /* bootos_emutos.cpp in Sources */, 17BCD7FF0B20F6BF00432CE1 /* bootos_linux.cpp in Sources */, 17BCD8000B20F6BF00432CE1 /* bootos_tos.cpp in Sources */, 17BCD8010B20F6BF00432CE1 /* cdrom.cpp in Sources */, 17BCD8020B20F6BF00432CE1 /* cfgopts.cpp in Sources */, 17BCD8030B20F6BF00432CE1 /* dsp.cpp in Sources */, 17BCD8040B20F6BF00432CE1 /* emul_op.cpp in Sources */, 17BCD8050B20F6BF00432CE1 /* natfeats.cpp in Sources */, 17BCD8060B20F6BF00432CE1 /* fakeio.cpp in Sources */, 17BCD8070B20F6BF00432CE1 /* hardware.cpp in Sources */, 17BCD8080B20F6BF00432CE1 /* host.cpp in Sources */, 17BCD8090B20F6BF00432CE1 /* host_audio.cpp in Sources */, 17BCD80A0B20F6BF00432CE1 /* host_clock.cpp in Sources */, 17BCD80B0B20F6BF00432CE1 /* hostscreen.cpp in Sources */, 17BCD80C0B20F6BF00432CE1 /* ide.cpp in Sources */, 17BCD80D0B20F6BF00432CE1 /* identify.cpp in Sources */, 17BCD80E0B20F6BF00432CE1 /* ikbd.cpp in Sources */, 17BCD80F0B20F6BF00432CE1 /* input.cpp in Sources */, 17BCD8100B20F6BF00432CE1 /* md5.cpp in Sources */, 17BCD8110B20F6BF00432CE1 /* mfp.cpp in Sources */, 17BCD8120B20F6BF00432CE1 /* midi.cpp in Sources */, 17BCD8130B20F6BF00432CE1 /* mmu.cpp in Sources */, 17BCD8140B20F6BF00432CE1 /* ndebug.cpp in Sources */, 17BCD8150B20F6BF00432CE1 /* ncr5380.cpp in Sources */, 347084D91F52D106001D466A /* sdl_bmp.cpp in Sources */, 17BCD8160B20F6BF00432CE1 /* parallel.cpp in Sources */, 17BCD8170B20F6BF00432CE1 /* parallel_file.cpp in Sources */, 17BCD8180B20F6BF00432CE1 /* parameters.cpp in Sources */, 17BCD8190B20F6BF00432CE1 /* romdiff.cpp in Sources */, B426E0F219D88567003EEB83 /* disasm-builtin.cpp in Sources */, 17BCD81A0B20F6BF00432CE1 /* rtc.cpp in Sources */, 17BCD81B0B20F6BF00432CE1 /* tools.cpp in Sources */, 17BCD81C0B20F6BF00432CE1 /* videl.cpp in Sources */, 17BCD81D0B20F6BF00432CE1 /* yamaha.cpp in Sources */, 17BCD81E0B20F6BF00432CE1 /* nf_base.cpp in Sources */, 17BCD81F0B20F6BF00432CE1 /* nf_objs.cpp in Sources */, 17BCD8200B20F6BF00432CE1 /* xhdi.cpp in Sources */, 17BCD8210B20F6BF00432CE1 /* nfaudio.cpp in Sources */, 17BCD8220B20F6BF00432CE1 /* nfbootstrap.cpp in Sources */, 17BCD8230B20F6BF00432CE1 /* nfclipbrd.cpp in Sources */, 17BCD8240B20F6BF00432CE1 /* nf_basicset.cpp in Sources */, 17BCD8250B20F6BF00432CE1 /* debugprintf.cpp in Sources */, 17BCD8260B20F6BF00432CE1 /* nfvdi.cpp in Sources */, 17BCD8270B20F6BF00432CE1 /* nfvdi_soft.cpp in Sources */, 17BCD8280B20F6BF00432CE1 /* nfcdrom.cpp in Sources */, 17BCD8290B20F6BF00432CE1 /* hostfs.cpp in Sources */, 17BCD82A0B20F6BF00432CE1 /* aranym_glue.cpp in Sources */, 17BCD82B0B20F6BF00432CE1 /* memory.cpp in Sources */, B442F1A2193C9BC100D515B8 /* nfcdrom_sdl.cpp in Sources */, 17BCD82C0B20F6BF00432CE1 /* newcpu.cpp in Sources */, 17BCD82D0B20F6BF00432CE1 /* readcpu.cpp in Sources */, 17BCD8310B20F6BF00432CE1 /* debug.cpp in Sources */, 17BCD8330B20F6BF00432CE1 /* sdlgui.cpp in Sources */, 17BCD8340B20F6BF00432CE1 /* dlgFileSelect.cpp in Sources */, 17BCD8350B20F6BF00432CE1 /* file.cpp in Sources */, 17BCD8360B20F6BF00432CE1 /* dlgMain.cpp in Sources */, 17BCD8370B20F6BF00432CE1 /* dlgKeyboard.cpp in Sources */, B426E0F619D88567003EEB83 /* disasm-glue.cpp in Sources */, 17BCD8380B20F6BF00432CE1 /* dlgHotkeys.cpp in Sources */, 17BCD8390B20F6BF00432CE1 /* dlgAlert.cpp in Sources */, 17BCD83A0B20F6BF00432CE1 /* main_unix.cpp in Sources */, 17BCD83B0B20F6BF00432CE1 /* dlgDisk.cpp in Sources */, 17BCD83C0B20F6BF00432CE1 /* cpummu.cpp in Sources */, 17BCD83D0B20F6BF00432CE1 /* midi_file.cpp in Sources */, 17BCD83F0B20F6BF00432CE1 /* nfvdi_opengl.cpp in Sources */, 170C2B8B0BB872920026484E /* dyngl.c in Sources */, 171B2BD70C4017C9007D8975 /* dlgOs.cpp in Sources */, 171B2BD80C4017C9007D8975 /* dlgVideo.cpp in Sources */, B49164700C5406D900CFB5B0 /* dlgNetwork.cpp in Sources */, 1736B1100C70ED5900C56FAF /* SDLMain.m in Sources */, F83B575F0C8B143300BA68D4 /* SDLHotkeysRefresh.M in Sources */, F83B576E0C8B1F0100BA68D4 /* videl_zoom.cpp in Sources */, 175909570CA453990089CF9F /* dirty_rects.cpp in Sources */, 17590BC40CA458440089CF9F /* nfjpeg.cpp in Sources */, 17C0AFFE0CBB0A85000D2916 /* logo.cpp in Sources */, B44B01B20D07443D0017F23B /* dialog.cpp in Sources */, 8C5BB722205DBE45000B8CFC /* nf_scsidrv.cpp in Sources */, B44B01BB0D07447F0017F23B /* host_surface.cpp in Sources */, B44B01BC0D07447F0017F23B /* host_surface_opengl.cpp in Sources */, B44B01BD0D07447F0017F23B /* hostscreen_opengl.cpp in Sources */, B44B01C60D0744D30017F23B /* dlgKeypress.cpp in Sources */, B471E7C20D2A88750021DFA7 /* adler32.c in Sources */, B475E5A80D4FA41500C8607E /* dlgPartition.cpp in Sources */, 17EC07E70ECB762900100ED7 /* dsp_core.c in Sources */, 17EC07E80ECB762900100ED7 /* dsp_cpu.c in Sources */, 17EC07E90ECB762900100ED7 /* dsp_disasm.c in Sources */, 17EC08D40ECB829E00100ED7 /* audio_conv.cpp in Sources */, 17EC08D80ECB82B700100ED7 /* joypads.cpp in Sources */, 17F10C651066C16500BDE380 /* clipbrd_darwin.M in Sources */, 1732BC83124540FF00272489 /* scc.cpp in Sources */, 1732BC8A1245412B00272489 /* serial.cpp in Sources */, 1732BC8B1245412B00272489 /* serial_port.cpp in Sources */, 8C5BB71C205DBCFD000B8CFC /* nf_hostexec.cpp in Sources */, 1717E85C151680B900D416FA /* dlgUsb.cpp in Sources */, 177A4E0615AA29AC00780D11 /* ethernet_macosx.cpp in Sources */, 177A4E0A15AA29BE00780D11 /* fd_trans.c in Sources */, CBEA27B41AF6527500B12FC5 /* dlgHostfs.cpp in Sources */, CBEA27C11AF65A6900B12FC5 /* cpufunctbl.cpp in Sources */, CBCE37B11B05B76100A19E4D /* maptab.cpp in Sources */, CBD862F11B2D8FA1003357BC /* nfosmesa.cpp in Sources */, CBD0F4971B5CFDD60081A555 /* osmesa_context.cpp in Sources */, CBBC87041B5F97DE00C0DABF /* glenums.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 8D11072C0486CEB800E47090 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 8C54C7DE20B45A41007744DD /* disasm-x86.cpp in Sources */, 8C54C7DD20B45A2D007744DD /* disasm-x86-builtin.c in Sources */, 17AC409E13F1D42F003B4FAD /* cpudefs.cpp in Sources */, 17AC40A013F1D436003B4FAD /* cpustbl.cpp in Sources */, 17AC409F13F1D434003B4FAD /* cpuemu.cpp in Sources */, B4A9EC060C5B3C1400C156C3 /* ethernet.cpp in Sources */, B4A9EC070C5B3C1400C156C3 /* ethernet_darwin.cpp in Sources */, 175822820A6554CE00EEE78F /* parameters_MacOSX.cpp in Sources */, 17798F050A652EF1009733EB /* main.cpp in Sources */, 17798F0C0A652F24009733EB /* vm_alloc.cpp in Sources */, 17798F0D0A652F2F009733EB /* host_clock_unix.cpp in Sources */, 17798F0E0A652F35009733EB /* acia.cpp in Sources */, 17798F110A652F58009733EB /* acsifdc.cpp in Sources */, 17798F120A652F5F009733EB /* aradata.cpp in Sources */, 17798F130A652F64009733EB /* aranym_exception.cpp in Sources */, 17798F150A652F74009733EB /* ata.cpp in Sources */, 8C5BB71B205DBCFD000B8CFC /* nf_hostexec.cpp in Sources */, 17798F160A652F7F009733EB /* audio_dma.cpp in Sources */, B442F1A1193C9BC100D515B8 /* nfcdrom_sdl.cpp in Sources */, 17798F170A652F80009733EB /* audio_crossbar.cpp in Sources */, 17798F180A652F84009733EB /* blitter.cpp in Sources */, 17798F190A652F87009733EB /* bootos.cpp in Sources */, 17798F1A0A652F89009733EB /* bootos_emutos.cpp in Sources */, 17798F1B0A652F89009733EB /* bootos_linux.cpp in Sources */, 17798F1C0A652F8A009733EB /* bootos_tos.cpp in Sources */, 17798F1D0A652F8E009733EB /* cdrom.cpp in Sources */, 17798F1E0A652F91009733EB /* cfgopts.cpp in Sources */, 17798F1F0A652F99009733EB /* dsp.cpp in Sources */, 17798F200A652F9C009733EB /* emul_op.cpp in Sources */, 17798F210A652FA6009733EB /* natfeats.cpp in Sources */, 17798F220A652FB3009733EB /* fakeio.cpp in Sources */, 17798F230A652FB6009733EB /* hardware.cpp in Sources */, 17798F240A652FB9009733EB /* host.cpp in Sources */, 17798F250A652FBD009733EB /* host_audio.cpp in Sources */, 8C5BB721205DBE45000B8CFC /* nf_scsidrv.cpp in Sources */, 17798F260A652FBE009733EB /* host_clock.cpp in Sources */, 17798F270A652FC1009733EB /* hostscreen.cpp in Sources */, 17798F280A652FC4009733EB /* ide.cpp in Sources */, 17798F290A652FC8009733EB /* identify.cpp in Sources */, 17798F2A0A652FCD009733EB /* ikbd.cpp in Sources */, 17798F2B0A652FD1009733EB /* input.cpp in Sources */, 17798F2C0A652FD5009733EB /* md5.cpp in Sources */, B426E0F119D88567003EEB83 /* disasm-builtin.cpp in Sources */, 17798F2D0A652FD8009733EB /* mfp.cpp in Sources */, 17798F2E0A652FDB009733EB /* midi.cpp in Sources */, 17798F2F0A652FDF009733EB /* mmu.cpp in Sources */, 17798F300A652FE2009733EB /* ndebug.cpp in Sources */, 17798F310A652FE4009733EB /* ncr5380.cpp in Sources */, 17798F320A652FEA009733EB /* parallel.cpp in Sources */, 17798F330A652FEC009733EB /* parallel_file.cpp in Sources */, 17798F340A652FF1009733EB /* parameters.cpp in Sources */, 17798F350A652FF6009733EB /* romdiff.cpp in Sources */, 17798F360A652FFB009733EB /* rtc.cpp in Sources */, 17798F370A652FFE009733EB /* tools.cpp in Sources */, 17798F380A653000009733EB /* videl.cpp in Sources */, 17798F390A653004009733EB /* yamaha.cpp in Sources */, 17798F3A0A65300A009733EB /* nf_base.cpp in Sources */, 17798F3B0A65300C009733EB /* nf_objs.cpp in Sources */, 17798F3C0A653013009733EB /* xhdi.cpp in Sources */, 17798F3D0A653017009733EB /* nfaudio.cpp in Sources */, 17798F3E0A65301A009733EB /* nfbootstrap.cpp in Sources */, 17798F3F0A65301E009733EB /* nfclipbrd.cpp in Sources */, 17798F400A653026009733EB /* nf_basicset.cpp in Sources */, 17798F410A653032009733EB /* debugprintf.cpp in Sources */, 17798F420A653038009733EB /* nfvdi.cpp in Sources */, 347084D81F52D105001D466A /* sdl_bmp.cpp in Sources */, 17798F430A65303B009733EB /* nfvdi_soft.cpp in Sources */, 17798F450A653062009733EB /* nfcdrom.cpp in Sources */, 17798F470A653093009733EB /* hostfs.cpp in Sources */, 17798F480A6530AC009733EB /* aranym_glue.cpp in Sources */, 17798F490A6530B5009733EB /* memory.cpp in Sources */, B426E0F519D88567003EEB83 /* disasm-glue.cpp in Sources */, 17798F4A0A6530B9009733EB /* newcpu.cpp in Sources */, 17798F4B0A6530C0009733EB /* readcpu.cpp in Sources */, 17798F540A653123009733EB /* debug.cpp in Sources */, 17798F570A653142009733EB /* sdlgui.cpp in Sources */, 17798F580A65314F009733EB /* dlgFileSelect.cpp in Sources */, 17798F590A653154009733EB /* file.cpp in Sources */, 17798F5A0A653157009733EB /* dlgMain.cpp in Sources */, 17798F5B0A65315D009733EB /* dlgDisk.cpp in Sources */, 17798F5C0A653161009733EB /* dlgKeyboard.cpp in Sources */, 17798F5D0A653163009733EB /* dlgHotkeys.cpp in Sources */, 17798F5E0A653166009733EB /* dlgAlert.cpp in Sources */, 1758228C0A6555CC00EEE78F /* main_unix.cpp in Sources */, 17D5D2590AC70DBD003D0FE9 /* midi_file.cpp in Sources */, 17AAB1320B206C0E0016FB8D /* nfvdi_opengl.cpp in Sources */, 17CDFE620B2196CD001BABB0 /* fpu_uae.cpp in Sources */, 170C2B880BB872920026484E /* dyngl.c in Sources */, 170C2BA10BB873470026484E /* cpummu.cpp in Sources */, 171B2BD50C4017C9007D8975 /* dlgOs.cpp in Sources */, 171B2BD60C4017C9007D8975 /* dlgVideo.cpp in Sources */, B49164710C5406D900CFB5B0 /* dlgNetwork.cpp in Sources */, 1736B10B0C70ED5900C56FAF /* SDLMain.m in Sources */, F83B575E0C8B143300BA68D4 /* SDLHotkeysRefresh.M in Sources */, F83B576D0C8B1F0100BA68D4 /* videl_zoom.cpp in Sources */, 175909560CA453990089CF9F /* dirty_rects.cpp in Sources */, 17590BC30CA458410089CF9F /* nfjpeg.cpp in Sources */, 17C0AFFD0CBB0A85000D2916 /* logo.cpp in Sources */, B44B01B10D07443D0017F23B /* dialog.cpp in Sources */, B44B01B80D07447F0017F23B /* host_surface.cpp in Sources */, B44B01B90D07447F0017F23B /* host_surface_opengl.cpp in Sources */, B44B01BA0D07447F0017F23B /* hostscreen_opengl.cpp in Sources */, B44B01C50D0744D30017F23B /* dlgKeypress.cpp in Sources */, B471E7C30D2A88750021DFA7 /* adler32.c in Sources */, B475E5A70D4FA41500C8607E /* dlgPartition.cpp in Sources */, 17EC07E30ECB762900100ED7 /* dsp_core.c in Sources */, 17EC07E40ECB762900100ED7 /* dsp_cpu.c in Sources */, 17EC08D30ECB829E00100ED7 /* audio_conv.cpp in Sources */, 17EC08D70ECB82B200100ED7 /* joypads.cpp in Sources */, 17F10C641066C16500BDE380 /* clipbrd_darwin.M in Sources */, 1732BC82124540FF00272489 /* scc.cpp in Sources */, 1732BC881245412B00272489 /* serial.cpp in Sources */, 1732BC891245412B00272489 /* serial_port.cpp in Sources */, 1717E85B151680B900D416FA /* dlgUsb.cpp in Sources */, 17473D1A15AA07FD00CAEA47 /* ethernet_macosx.cpp in Sources */, 17473D1B15AA07FD00CAEA47 /* fd_trans.c in Sources */, CBEA27B31AF6527500B12FC5 /* dlgHostfs.cpp in Sources */, CBEA27C01AF65A6900B12FC5 /* cpufunctbl.cpp in Sources */, CBCE37B01B05B76100A19E4D /* maptab.cpp in Sources */, CBD862F01B2D8FA0003357BC /* nfosmesa.cpp in Sources */, CBD0F4961B5CFDD60081A555 /* osmesa_context.cpp in Sources */, CBBC87031B5F97DE00C0DABF /* glenums.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; B439AC320C5B2FD00046EFC9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 8C54C7E120B45A8B007744DD /* disasm-x86.cpp in Sources */, 8C54C7E220B45A8B007744DD /* disasm-x86-builtin.c in Sources */, 173598C413F1EFE400F84DB3 /* cpuemu.cpp in Sources */, 173598C513F1F01D00F84DB3 /* cpudefs.cpp in Sources */, 8C5BB723205DBE45000B8CFC /* nf_scsidrv.cpp in Sources */, 173598C613F1F02500F84DB3 /* cpustbl.cpp in Sources */, 173598F613F1F65100F84DB3 /* compemu.cpp in Sources */, 173598F713F1F65100F84DB3 /* compstbl.cpp in Sources */, 173598F813F1F65100F84DB3 /* cpuemu_nf.cpp in Sources */, 173598F913F1F65100F84DB3 /* cpustbl_nf.cpp in Sources */, B4A1F1440D2AB709004220C2 /* debug.cpp in Sources */, B4A9EBEE0C5B374A00C156C3 /* ethernet.cpp in Sources */, B439AC9E0C5B30040046EFC9 /* fpu_ieee.cpp in Sources */, B439AC360C5B2FD00046EFC9 /* parameters_MacOSX.cpp in Sources */, B439AC370C5B2FD00046EFC9 /* main.cpp in Sources */, B439AC380C5B2FD00046EFC9 /* compemu_support.cpp in Sources */, B43DC1970C635DFA0014243B /* compemu_fpp.cpp in Sources */, B439AC390C5B2FD00046EFC9 /* vm_alloc.cpp in Sources */, B439AC3A0C5B2FD00046EFC9 /* host_clock_unix.cpp in Sources */, B439AC3B0C5B2FD00046EFC9 /* acia.cpp in Sources */, B439AC3C0C5B2FD00046EFC9 /* acsifdc.cpp in Sources */, B439AC3D0C5B2FD00046EFC9 /* aradata.cpp in Sources */, B442F1A3193C9BC100D515B8 /* nfcdrom_sdl.cpp in Sources */, B439AC3E0C5B2FD00046EFC9 /* aranym_exception.cpp in Sources */, B439AC3F0C5B2FD00046EFC9 /* ata.cpp in Sources */, B439AC400C5B2FD00046EFC9 /* audio_dma.cpp in Sources */, B439AC410C5B2FD00046EFC9 /* audio_crossbar.cpp in Sources */, B439AC420C5B2FD00046EFC9 /* blitter.cpp in Sources */, B439AC430C5B2FD00046EFC9 /* bootos.cpp in Sources */, B439AC440C5B2FD00046EFC9 /* bootos_emutos.cpp in Sources */, B439AC450C5B2FD00046EFC9 /* bootos_linux.cpp in Sources */, B439AC460C5B2FD00046EFC9 /* bootos_tos.cpp in Sources */, B439AC480C5B2FD00046EFC9 /* cdrom.cpp in Sources */, B439AC490C5B2FD00046EFC9 /* cfgopts.cpp in Sources */, B439AC4A0C5B2FD00046EFC9 /* dsp.cpp in Sources */, B439AC4B0C5B2FD00046EFC9 /* emul_op.cpp in Sources */, B439AC4C0C5B2FD00046EFC9 /* natfeats.cpp in Sources */, B439AC4D0C5B2FD00046EFC9 /* fakeio.cpp in Sources */, B439AC4E0C5B2FD00046EFC9 /* hardware.cpp in Sources */, B439AC4F0C5B2FD00046EFC9 /* host.cpp in Sources */, B439AC500C5B2FD00046EFC9 /* host_audio.cpp in Sources */, B439AC510C5B2FD00046EFC9 /* host_clock.cpp in Sources */, B439AC520C5B2FD00046EFC9 /* hostscreen.cpp in Sources */, B439AC530C5B2FD00046EFC9 /* ide.cpp in Sources */, B439AC540C5B2FD00046EFC9 /* identify.cpp in Sources */, B439AC550C5B2FD00046EFC9 /* ikbd.cpp in Sources */, B439AC560C5B2FD00046EFC9 /* input.cpp in Sources */, B439AC570C5B2FD00046EFC9 /* md5.cpp in Sources */, B439AC580C5B2FD00046EFC9 /* mfp.cpp in Sources */, B439AC590C5B2FD00046EFC9 /* midi.cpp in Sources */, B439AC5A0C5B2FD00046EFC9 /* mmu.cpp in Sources */, B439AC5B0C5B2FD00046EFC9 /* ndebug.cpp in Sources */, B439AC5C0C5B2FD00046EFC9 /* ncr5380.cpp in Sources */, B439AC5D0C5B2FD00046EFC9 /* parallel.cpp in Sources */, B439AC5E0C5B2FD00046EFC9 /* parallel_file.cpp in Sources */, B439AC5F0C5B2FD00046EFC9 /* parameters.cpp in Sources */, B439AC600C5B2FD00046EFC9 /* romdiff.cpp in Sources */, B439AC610C5B2FD00046EFC9 /* rtc.cpp in Sources */, B439AC620C5B2FD00046EFC9 /* tools.cpp in Sources */, B439AC630C5B2FD00046EFC9 /* videl.cpp in Sources */, B439AC640C5B2FD00046EFC9 /* yamaha.cpp in Sources */, B439AC650C5B2FD00046EFC9 /* nf_base.cpp in Sources */, B439AC660C5B2FD00046EFC9 /* nf_objs.cpp in Sources */, B439AC670C5B2FD00046EFC9 /* xhdi.cpp in Sources */, B439AC680C5B2FD00046EFC9 /* nfaudio.cpp in Sources */, B439AC690C5B2FD00046EFC9 /* nfbootstrap.cpp in Sources */, B439AC6A0C5B2FD00046EFC9 /* nfclipbrd.cpp in Sources */, B439AC6B0C5B2FD00046EFC9 /* nf_basicset.cpp in Sources */, B439AC6C0C5B2FD00046EFC9 /* debugprintf.cpp in Sources */, B439AC6D0C5B2FD00046EFC9 /* nfvdi.cpp in Sources */, B426E0F319D88567003EEB83 /* disasm-builtin.cpp in Sources */, B439AC6E0C5B2FD00046EFC9 /* nfvdi_soft.cpp in Sources */, B439AC6F0C5B2FD00046EFC9 /* nfcdrom.cpp in Sources */, B439AC700C5B2FD00046EFC9 /* hostfs.cpp in Sources */, B439AC710C5B2FD00046EFC9 /* aranym_glue.cpp in Sources */, B439AC720C5B2FD00046EFC9 /* memory.cpp in Sources */, B439AC730C5B2FD00046EFC9 /* newcpu.cpp in Sources */, B439AC740C5B2FD00046EFC9 /* readcpu.cpp in Sources */, B439AC770C5B2FD00046EFC9 /* sdlgui.cpp in Sources */, B439AC780C5B2FD00046EFC9 /* dlgFileSelect.cpp in Sources */, B439AC790C5B2FD00046EFC9 /* file.cpp in Sources */, B439AC7A0C5B2FD00046EFC9 /* dlgMain.cpp in Sources */, B439AC7B0C5B2FD00046EFC9 /* dlgDisk.cpp in Sources */, B439AC7C0C5B2FD00046EFC9 /* dlgKeyboard.cpp in Sources */, B439AC7D0C5B2FD00046EFC9 /* dlgHotkeys.cpp in Sources */, B439AC7E0C5B2FD00046EFC9 /* dlgAlert.cpp in Sources */, B439AC7F0C5B2FD00046EFC9 /* main_unix.cpp in Sources */, B439AC800C5B2FD00046EFC9 /* midi_file.cpp in Sources */, B439AC810C5B2FD00046EFC9 /* nfvdi_opengl.cpp in Sources */, B439AC840C5B2FD00046EFC9 /* dyngl.c in Sources */, B439AC850C5B2FD00046EFC9 /* cpummu.cpp in Sources */, B439AC860C5B2FD00046EFC9 /* dlgOs.cpp in Sources */, B439AC870C5B2FD00046EFC9 /* dlgVideo.cpp in Sources */, B439AC880C5B2FD00046EFC9 /* sigsegv_darwin_x86.cpp in Sources */, B439AC8B0C5B2FD00046EFC9 /* dlgNetwork.cpp in Sources */, B4A9E9C50C5B33AC00C156C3 /* ethernet_darwin.cpp in Sources */, 347084DA1F52D107001D466A /* sdl_bmp.cpp in Sources */, 1736B1150C70ED5900C56FAF /* SDLMain.m in Sources */, F83B57600C8B143300BA68D4 /* SDLHotkeysRefresh.M in Sources */, F83B576F0C8B1F0100BA68D4 /* videl_zoom.cpp in Sources */, 175909580CA453990089CF9F /* dirty_rects.cpp in Sources */, 8C5BB71D205DBCFD000B8CFC /* nf_hostexec.cpp in Sources */, 17590BC50CA458470089CF9F /* nfjpeg.cpp in Sources */, 17C0AFFF0CBB0A85000D2916 /* logo.cpp in Sources */, B44B01B30D07443D0017F23B /* dialog.cpp in Sources */, B44B01BE0D07447F0017F23B /* host_surface.cpp in Sources */, B44B01BF0D07447F0017F23B /* host_surface_opengl.cpp in Sources */, B44B01C00D07447F0017F23B /* hostscreen_opengl.cpp in Sources */, B44B01C70D0744D30017F23B /* dlgKeypress.cpp in Sources */, B471E7C10D2A88750021DFA7 /* adler32.c in Sources */, B475E5A90D4FA41500C8607E /* dlgPartition.cpp in Sources */, 17EC07EB0ECB762900100ED7 /* dsp_core.c in Sources */, 17EC07EC0ECB762900100ED7 /* dsp_cpu.c in Sources */, 17EC07ED0ECB762900100ED7 /* dsp_disasm.c in Sources */, 17EC08D50ECB829E00100ED7 /* audio_conv.cpp in Sources */, 17EC08D90ECB82BA00100ED7 /* joypads.cpp in Sources */, 17F10C661066C16500BDE380 /* clipbrd_darwin.M in Sources */, 1732BC84124540FF00272489 /* scc.cpp in Sources */, 1732BC8C1245412B00272489 /* serial.cpp in Sources */, B426E0F719D88567003EEB83 /* disasm-glue.cpp in Sources */, 1732BC8D1245412B00272489 /* serial_port.cpp in Sources */, 1717E85D151680B900D416FA /* dlgUsb.cpp in Sources */, 177A4E0815AA29AD00780D11 /* ethernet_macosx.cpp in Sources */, 177A4E0B15AA29BF00780D11 /* fd_trans.c in Sources */, B4C7EE951768552800B63B96 /* MachServer.c in Sources */, B4C7EE961768552800B63B96 /* MachUser.c in Sources */, CBEA27B51AF6527500B12FC5 /* dlgHostfs.cpp in Sources */, CBEA27C21AF65A6900B12FC5 /* cpufunctbl.cpp in Sources */, CBCE37AF1B05B76100A19E4D /* maptab.cpp in Sources */, CBD862F21B2D8FA3003357BC /* nfosmesa.cpp in Sources */, CBD0F4951B5CFDD60081A555 /* osmesa_context.cpp in Sources */, CBBC87021B5F97DE00C0DABF /* glenums.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ 17473D3415AA0A5D00CAEA47 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 17473D2415AA0A1100CAEA47 /* bpf_helper */; targetProxy = 17473D3315AA0A5D00CAEA47 /* PBXContainerItemProxy */; }; 17473D3915AA0FF400CAEA47 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 17473D2415AA0A1100CAEA47 /* bpf_helper */; targetProxy = 17473D3815AA0FF400CAEA47 /* PBXContainerItemProxy */; }; 17473D3B15AA0FF800CAEA47 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 17473D2415AA0A1100CAEA47 /* bpf_helper */; targetProxy = 17473D3A15AA0FF800CAEA47 /* PBXContainerItemProxy */; }; 17473D3D15AA0FFA00CAEA47 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 17473D2415AA0A1100CAEA47 /* bpf_helper */; targetProxy = 17473D3C15AA0FFA00CAEA47 /* PBXContainerItemProxy */; }; 17B1145F151E696B00E4EB0F /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = B439AC2F0C5B2FD00046EFC9 /* MacAranym JIT */; targetProxy = 17B1145E151E696B00E4EB0F /* PBXContainerItemProxy */; }; 17D10CA80C401D940083E7F2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 8D1107260486CEB800E47090 /* MacAranym */; targetProxy = 17D10CA70C401D940083E7F2 /* PBXContainerItemProxy */; }; 17D10CAA0C401D940083E7F2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 17BCD7880B20F64F00432CE1 /* MacAranym MMU */; targetProxy = 17D10CA90C401D940083E7F2 /* PBXContainerItemProxy */; }; 8CB53CB3203F110B0005E5AD /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 8CB53C73203F0D530005E5AD /* MacAranym SDL2 */; targetProxy = 8CB53CB2203F110B0005E5AD /* PBXContainerItemProxy */; }; 8CB53CB5203F11100005E5AD /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 8CB53C88203F0D670005E5AD /* MacAranym JIT SDL2 */; targetProxy = 8CB53CB4203F11100005E5AD /* PBXContainerItemProxy */; }; 8CB53CB7203F11160005E5AD /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 8CB53C9D203F0D780005E5AD /* MacAranym MMU SDL2 */; targetProxy = 8CB53CB6203F11160005E5AD /* PBXContainerItemProxy */; }; 8CB53CD1203F260F0005E5AD /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 17473D2415AA0A1100CAEA47 /* bpf_helper */; targetProxy = 8CB53CD0203F260F0005E5AD /* PBXContainerItemProxy */; }; 8CB53CD3203F26160005E5AD /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = CB4679531AFA78430090A72D /* ExternalScript */; targetProxy = 8CB53CD2203F26160005E5AD /* PBXContainerItemProxy */; }; 8CB53CD5203F261F0005E5AD /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 17473D2415AA0A1100CAEA47 /* bpf_helper */; targetProxy = 8CB53CD4203F261F0005E5AD /* PBXContainerItemProxy */; }; 8CB53CD7203F26270005E5AD /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = CB4679531AFA78430090A72D /* ExternalScript */; targetProxy = 8CB53CD6203F26270005E5AD /* PBXContainerItemProxy */; }; 8CB53CD9203F26320005E5AD /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 17473D2415AA0A1100CAEA47 /* bpf_helper */; targetProxy = 8CB53CD8203F26320005E5AD /* PBXContainerItemProxy */; }; 8CB53CDB203F26380005E5AD /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = CB4679531AFA78430090A72D /* ExternalScript */; targetProxy = 8CB53CDA203F26380005E5AD /* PBXContainerItemProxy */; }; CB4679591AFA79440090A72D /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = CB4679531AFA78430090A72D /* ExternalScript */; targetProxy = CB4679581AFA79440090A72D /* PBXContainerItemProxy */; }; CB46795B1AFA79700090A72D /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = CB4679531AFA78430090A72D /* ExternalScript */; targetProxy = CB46795A1AFA79700090A72D /* PBXContainerItemProxy */; }; CB46795D1AFA79AC0090A72D /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = CB4679531AFA78430090A72D /* ExternalScript */; targetProxy = CB46795C1AFA79AC0090A72D /* PBXContainerItemProxy */; }; CB46795F1AFA79C10090A72D /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = CB4679531AFA78430090A72D /* ExternalScript */; targetProxy = CB46795E1AFA79C10090A72D /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ B428FAF50C7BA7100039CA66 /* aranym.nib */ = { isa = PBXVariantGroup; children = ( B428FAF60C7BA7100039CA66 /* English */, B4C86DDB0C823CCA0077FB6E /* German */, ); name = aranym.nib; sourceTree = ""; }; B4844A640C7BA1A0003FE2D2 /* aranym.nib */ = { isa = PBXVariantGroup; children = ( B4844A650C7BA1A0003FE2D2 /* English */, B4844A660C7BA1B4003FE2D2 /* German */, ); name = aranym.nib; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 1706B5030ABCB72B006CB74B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { COMPILE_DEFS_BASE = "$(inherited) DIRECT_ADDRESSING FPU_UAE"; CONFIGURE_OPTIONS_TARGET = "--enable-fpe=uae --disable-fullmmu"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(COMPILE_DEFS_$(arch))"; INFOPLIST_FILE = "../../gui-osx/Info.plist"; PRODUCT_BUNDLE_IDENTIFIER = org.aranym.MacAranym; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; }; 1706B5050ABCB72B006CB74B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; COMPILE_DEFS_BASE = "HAVE_CONFIG_H OS_darwin _GNU_SOURCE ENABLE_EXCLUSIVE_SPCFLAGS"; COMPILE_DEFS_i386 = "CPU_i386 X86_ASSEMBLY $(COMPILE_DEFS_BASE) OPTIMIZED_FLAGS REGPARAM=\"__attribute__((regparm(3)))\" SAHF_SETO_PROFITABLE UNALIGNED_PROFITABLE"; COMPILE_DEFS_ppc = "CPU_powerpc $(COMPILE_DEFS_BASE)"; COMPILE_DEFS_x86_64 = "CPU_x86_64 X86_64_ASSEMBLY OPTIMIZED_FLAGS UNALIGNED_PROFITABLE $(COMPILE_DEFS_BASE)"; CONFIGURE_OPTIONS = "$(CONFIGURE_OPTIONS_BASE) $(CONFIGURE_OPTIONS_TARGET)"; CONFIGURE_OPTIONS_BASE = "--with-classicconfig --enable-ctrlkey=ctrl --enable-bpf-ethernet"; CONFIGURE_OPTIONS_TARGET = ""; COPY_PHASE_STRIP = NO; CPU_TYPE_i386 = CPU_i386; CPU_TYPE_ppc = CPU_powerpc; CPU_TYPE_x86_64 = CPU_x86_64; CURRENT_PROJECT_VERSION = "##VERSION##"; ENABLE_STRICT_OBJC_MSGSEND = YES; FRAMEWORK_SEARCH_PATHS = ( ., "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)\""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 3; GCC_UNROLL_LOOPS = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; HEADER_SEARCH_PATHS = ( SDL.framework/Headers, SDL_image.framework/Headers, MesaGL/include, /Library/Frameworks/SDL.framework/Headers, /Library/Frameworks/SDL_image.framework/Headers, /usr/X11R6/include, external/include, ); LD_RUNPATH_SEARCH_PATHS = "@executable_path/../Frameworks/"; LIBRARY_SEARCH_PATHS = external/lib; MACOSX_DEPLOYMENT_TARGET = 10.5; OTHER_LDFLAGS = ( "-Lexternal/lib", "-ljpeg", ); SOURCE_DIR = "$(PROJECT_DIR)/../.."; USER_HEADER_SEARCH_PATHS = "$(BUILD_DIR) $(SOURCE_DIR)/darwin $(PROJECT_TEMP_DIR) $(SOURCE_DIR)/include $(srcdir) $(SOURCE_DIR)/natfeat $(SOURCE_DIR)/uae_cpu $(SOURCE_DIR)/gui-sdl $(SOURCE_DIR)/Unix"; VALID_ARCHS = "ppc i386 x86_64"; }; name = Release; }; 17473D2D15AA0A1100CAEA47 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(USER_LIBRARY_DIR)/Frameworks", ); GCC_PREPROCESSOR_DEFINITIONS = OS_darwin; LD_RUNPATH_SEARCH_PATHS = ""; OTHER_LDFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; USER_HEADER_SEARCH_PATHS = "$(BUILD_DIR) $(SOURCE_DIR)/darwin $(PROJECT_TEMP_DIR) $(SOURCE_DIR)/include $(srcdir) $(SOURCE_DIR)/natfeat $(SOURCE_DIR)/uae_cpu $(SOURCE_DIR)/gui-sdl $(SOURCE_DIR)/Unix"; }; name = Debug; }; 17473D2E15AA0A1100CAEA47 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(USER_LIBRARY_DIR)/Frameworks", ); GCC_PREPROCESSOR_DEFINITIONS = OS_darwin; LD_RUNPATH_SEARCH_PATHS = ""; OTHER_LDFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; USER_HEADER_SEARCH_PATHS = "$(BUILD_DIR) $(SOURCE_DIR)/darwin $(PROJECT_TEMP_DIR) $(SOURCE_DIR)/include $(srcdir) $(SOURCE_DIR)/natfeat $(SOURCE_DIR)/uae_cpu $(SOURCE_DIR)/gui-sdl $(SOURCE_DIR)/Unix"; }; name = Release; }; 1778A4DF1555A8A70005B336 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { COMPILE_DEFS_BASE = "$(inherited) DIRECT_ADDRESSING FPU_MPFR"; CONFIGURE_OPTIONS_TARGET = "--enable-fpe=mpfr --enable-fullmmu --enable-lilo"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(COMPILE_DEFS_$(arch))"; HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "../../gui-osx/Info.plist"; OTHER_LDFLAGS = ( "$(inherited)", "-lz", "-lmpfr", "-lgmp", ); PRODUCT_BUNDLE_IDENTIFIER = org.aranym.MacAranym; PRODUCT_NAME = "MacAranym MMU MPFR"; }; name = Debug; }; 1778A4E01555A8A70005B336 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { COMPILE_DEFS_BASE = "$(inherited) DIRECT_ADDRESSING FPU_MPFR"; CONFIGURE_OPTIONS_TARGET = "--enable-fpe=mpfr --enable-fullmmu --enable-lilo"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(COMPILE_DEFS_$(arch))"; HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "../../gui-osx/Info.plist"; OTHER_LDFLAGS = ( "$(inherited)", "-lz", "-lmpfr", "-lgmp", ); PRODUCT_BUNDLE_IDENTIFIER = org.aranym.MacAranym; PRODUCT_NAME = "MacAranym MMU MPFR"; }; name = Release; }; 17AAB2AB0B20A8330016FB8D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { PRODUCT_NAME = Packaging; }; name = Debug; }; 17AAB2AC0B20A8330016FB8D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { PRODUCT_NAME = Packaging; }; name = Release; }; 17BCD7E60B20F64F00432CE1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { COMPILE_DEFS_BASE = "$(inherited) DIRECT_ADDRESSING FPU_UAE"; CONFIGURE_OPTIONS_TARGET = "--enable-fpe=uae --enable-fullmmu --enable-lilo"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(COMPILE_DEFS_$(arch))"; INFOPLIST_FILE = "../../gui-osx/Info.plist"; OTHER_LDFLAGS = ( "$(inherited)", "-lz", ); PRODUCT_BUNDLE_IDENTIFIER = org.aranym.MacAranym; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; }; 17BCD7E70B20F64F00432CE1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { COMPILE_DEFS_BASE = "$(inherited) DIRECT_ADDRESSING FPU_UAE"; CONFIGURE_OPTIONS_TARGET = "--enable-fpe=uae --enable-fullmmu --enable-lilo"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(COMPILE_DEFS_$(arch))"; INFOPLIST_FILE = "../../gui-osx/Info.plist"; OTHER_LDFLAGS = ( "$(inherited)", "-lz", ); PRODUCT_BUNDLE_IDENTIFIER = org.aranym.MacAranym; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; }; 17E8B5B50ABC88C600BBFD59 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { COMPILE_DEFS_BASE = "$(inherited) DIRECT_ADDRESSING FPU_UAE"; CONFIGURE_OPTIONS_TARGET = "--enable-fpe=uae --disable-fullmmu"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(COMPILE_DEFS_$(arch))"; INFOPLIST_FILE = "../../gui-osx/Info.plist"; PRODUCT_BUNDLE_IDENTIFIER = org.aranym.MacAranym; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; }; 17E8B5B60ABC88C600BBFD59 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; COMPILE_DEFS_BASE = "HAVE_CONFIG_H OS_darwin _GNU_SOURCE ENABLE_EXCLUSIVE_SPCFLAGS"; COMPILE_DEFS_i386 = "CPU_i386 X86_ASSEMBLY $(COMPILE_DEFS_BASE) OPTIMIZED_FLAGS REGPARAM=\"__attribute__((regparm(3)))\" SAHF_SETO_PROFITABLE UNALIGNED_PROFITABLE"; COMPILE_DEFS_ppc = "CPU_powerpc $(COMPILE_DEFS_BASE)"; COMPILE_DEFS_x86_64 = "CPU_x86_64 X86_64_ASSEMBLY OPTIMIZED_FLAGS UNALIGNED_PROFITABLE $(COMPILE_DEFS_BASE)"; CONFIGURE_OPTIONS = "$(CONFIGURE_OPTIONS_BASE) $(CONFIGURE_OPTIONS_TARGET)"; CONFIGURE_OPTIONS_BASE = "--with-classicconfig --enable-ctrlkey=ctrl --enable-bpf-ethernet --enable-full-debug --enable-fullhistory"; CONFIGURE_OPTIONS_TARGET = ""; COPY_PHASE_STRIP = NO; CPU_TYPE_i386 = CPU_i386; CPU_TYPE_ppc = CPU_powerpc; CPU_TYPE_x86_64 = CPU_x86_64; CURRENT_PROJECT_VERSION = "##VERSION##"; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; FRAMEWORK_SEARCH_PATHS = ( ., "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)\""; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 3; GCC_UNROLL_LOOPS = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; HEADER_SEARCH_PATHS = ( SDL.framework/Headers, SDL_image.framework/Headers, MesaGL/include, /Library/Frameworks/SDL.framework/Headers, /Library/Frameworks/SDL_image.framework/Headers, /usr/X11R6/include, external/include, ); LD_RUNPATH_SEARCH_PATHS = "@executable_path/../Frameworks/"; LIBRARY_SEARCH_PATHS = external/lib; MACOSX_DEPLOYMENT_TARGET = 10.5; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "-Lexternal/lib", "-ljpeg", ); SOURCE_DIR = "$(PROJECT_DIR)/../.."; USER_HEADER_SEARCH_PATHS = "$(BUILD_DIR) $(SOURCE_DIR)/darwin $(PROJECT_TEMP_DIR) $(SOURCE_DIR)/include $(srcdir) $(SOURCE_DIR)/natfeat $(SOURCE_DIR)/uae_cpu $(SOURCE_DIR)/gui-sdl $(SOURCE_DIR)/Unix"; VALID_ARCHS = "ppc i386 x86_64"; }; name = Debug; }; 8CB53C82203F0D540005E5AD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { COMPILE_DEFS_BASE = "$(inherited) DIRECT_ADDRESSING FPU_UAE"; CONFIGURE_OPTIONS_TARGET = "--enable-fpe=uae --disable-fullmmu"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(COMPILE_DEFS_$(arch))"; HEADER_SEARCH_PATHS = ( SDL2.framework/Headers, SDL2_image.framework/Headers, MesaGL/include, /Library/Frameworks/SDL2.framework/Headers, /Library/Frameworks/SDL2_image.framework/Headers, /usr/X11R6/include, external/include, ); INFOPLIST_FILE = "../../gui-osx/Info.plist"; MACOSX_DEPLOYMENT_TARGET = 10.6; PRODUCT_BUNDLE_IDENTIFIER = org.aranym.MacAranym; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; }; 8CB53C83203F0D540005E5AD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { COMPILE_DEFS_BASE = "$(inherited) DIRECT_ADDRESSING FPU_UAE"; CONFIGURE_OPTIONS_TARGET = "--enable-fpe=uae --disable-fullmmu"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(COMPILE_DEFS_$(arch))"; HEADER_SEARCH_PATHS = ( SDL2.framework/Headers, SDL2_image.framework/Headers, MesaGL/include, /Library/Frameworks/SDL2.framework/Headers, /Library/Frameworks/SDL2_image.framework/Headers, /usr/X11R6/include, external/include, ); INFOPLIST_FILE = "../../gui-osx/Info.plist"; MACOSX_DEPLOYMENT_TARGET = 10.6; PRODUCT_BUNDLE_IDENTIFIER = org.aranym.MacAranym; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; }; 8CB53C98203F0D680005E5AD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; COMPILE_DEFS_BASE = "$(inherited) FPU_IEEE FIXED_ADDRESSING FMEMORY=0x51000000 USE_JIT=1 USE_JIT_FPU=1"; CONFIGURE_OPTIONS_TARGET = "--enable-fpe=ieee --enable-jit-compiler --enable-jit-fpu"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(COMPILE_DEFS_$(arch))"; HEADER_SEARCH_PATHS = ( SDL2.framework/Headers, SDL2_image.framework/Headers, MesaGL/include, /Library/Frameworks/SDL2.framework/Headers, /Library/Frameworks/SDL2_image.framework/Headers, /usr/X11R6/include, external/include, ); INFOPLIST_FILE = "../../gui-osx/Info.plist"; MACOSX_DEPLOYMENT_TARGET = 10.6; "OTHER_LDFLAGS[arch=x86_64]" = ( "$(inherited)", "-pagezero_size", 0x2000, ); PRODUCT_BUNDLE_IDENTIFIER = org.aranym.MacAranym; PRODUCT_NAME = "$(TARGET_NAME)"; VALID_ARCHS = "i386 x86_64"; }; name = Debug; }; 8CB53C99203F0D680005E5AD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; COMPILE_DEFS_BASE = "$(inherited) FPU_IEEE FIXED_ADDRESSING FMEMORY=0x51000000 USE_JIT=1 USE_JIT_FPU=1"; CONFIGURE_OPTIONS_TARGET = "--enable-fpe=ieee --enable-jit-compiler --enable-jit-fpu"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(COMPILE_DEFS_$(arch))"; HEADER_SEARCH_PATHS = ( SDL2.framework/Headers, SDL2_image.framework/Headers, MesaGL/include, /Library/Frameworks/SDL2.framework/Headers, /Library/Frameworks/SDL2_image.framework/Headers, /usr/X11R6/include, external/include, ); INFOPLIST_FILE = "../../gui-osx/Info.plist"; MACOSX_DEPLOYMENT_TARGET = 10.6; "OTHER_LDFLAGS[arch=x86_64]" = ( "$(inherited)", "-pagezero_size", 0x2000, ); PRODUCT_BUNDLE_IDENTIFIER = org.aranym.MacAranym; PRODUCT_NAME = "$(TARGET_NAME)"; VALID_ARCHS = "i386 x86_64"; }; name = Release; }; 8CB53CAD203F0D780005E5AD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { COMPILE_DEFS_BASE = "$(inherited) DIRECT_ADDRESSING FPU_UAE"; CONFIGURE_OPTIONS_TARGET = "--enable-fpe=uae --enable-fullmmu --enable-lilo"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(COMPILE_DEFS_$(arch))"; HEADER_SEARCH_PATHS = ( SDL2.framework/Headers, SDL2_image.framework/Headers, MesaGL/include, /Library/Frameworks/SDL2.framework/Headers, /Library/Frameworks/SDL2_image.framework/Headers, /usr/X11R6/include, external/include, ); INFOPLIST_FILE = "../../gui-osx/Info.plist"; MACOSX_DEPLOYMENT_TARGET = 10.6; OTHER_LDFLAGS = ( "$(inherited)", "-lz", ); PRODUCT_BUNDLE_IDENTIFIER = org.aranym.MacAranym; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; }; 8CB53CAE203F0D780005E5AD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { COMPILE_DEFS_BASE = "$(inherited) DIRECT_ADDRESSING FPU_UAE"; CONFIGURE_OPTIONS_TARGET = "--enable-fpe=uae --enable-fullmmu --enable-lilo"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(COMPILE_DEFS_$(arch))"; HEADER_SEARCH_PATHS = ( SDL2.framework/Headers, SDL2_image.framework/Headers, MesaGL/include, /Library/Frameworks/SDL2.framework/Headers, /Library/Frameworks/SDL2_image.framework/Headers, /usr/X11R6/include, external/include, ); INFOPLIST_FILE = "../../gui-osx/Info.plist"; MACOSX_DEPLOYMENT_TARGET = 10.6; OTHER_LDFLAGS = ( "$(inherited)", "-lz", ); PRODUCT_BUNDLE_IDENTIFIER = org.aranym.MacAranym; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; }; B439AC980C5B2FD00046EFC9 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; COMPILE_DEFS_BASE = "$(inherited) FPU_IEEE FIXED_ADDRESSING FMEMORY=0x51000000 USE_JIT=1 USE_JIT_FPU=1"; CONFIGURE_OPTIONS_TARGET = "--enable-fpe=ieee --enable-jit-compiler --enable-jit-fpu"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(COMPILE_DEFS_$(arch))"; INFOPLIST_FILE = "../../gui-osx/Info.plist"; "OTHER_LDFLAGS[arch=x86_64]" = ( "$(inherited)", "-pagezero_size", 0x2000, ); PRODUCT_BUNDLE_IDENTIFIER = org.aranym.MacAranym; PRODUCT_NAME = "$(TARGET_NAME)"; VALID_ARCHS = "i386 x86_64"; }; name = Debug; }; B439AC990C5B2FD00046EFC9 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; COMPILE_DEFS_BASE = "$(inherited) FPU_IEEE FIXED_ADDRESSING FMEMORY=0x51000000 USE_JIT=1 USE_JIT_FPU=1"; CONFIGURE_OPTIONS_TARGET = "--enable-fpe=ieee --enable-jit-compiler --enable-jit-fpu"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(COMPILE_DEFS_$(arch))"; INFOPLIST_FILE = "../../gui-osx/Info.plist"; "OTHER_LDFLAGS[arch=x86_64]" = ( "$(inherited)", "-pagezero_size", 0x2000, ); PRODUCT_BUNDLE_IDENTIFIER = org.aranym.MacAranym; PRODUCT_NAME = "$(TARGET_NAME)"; VALID_ARCHS = "i386 x86_64"; }; name = Release; }; CB4679541AFA78440090A72D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; PRODUCT_NAME = ExternalScript; }; name = Debug; }; CB4679551AFA78440090A72D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_ENABLE_FIX_AND_CONTINUE = NO; PRODUCT_NAME = ExternalScript; ZERO_LINK = NO; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 17473D2C15AA0A1100CAEA47 /* Build configuration list for PBXNativeTarget "bpf_helper" */ = { isa = XCConfigurationList; buildConfigurations = ( 17473D2D15AA0A1100CAEA47 /* Debug */, 17473D2E15AA0A1100CAEA47 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 1778A4DE1555A8A70005B336 /* Build configuration list for PBXNativeTarget "MacAranym MMU+MPFR" */ = { isa = XCConfigurationList; buildConfigurations = ( 1778A4DF1555A8A70005B336 /* Debug */, 1778A4E01555A8A70005B336 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 17AAB2AA0B20A8330016FB8D /* Build configuration list for PBXAggregateTarget "Packaging" */ = { isa = XCConfigurationList; buildConfigurations = ( 17AAB2AB0B20A8330016FB8D /* Debug */, 17AAB2AC0B20A8330016FB8D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 17BCD7E50B20F64F00432CE1 /* Build configuration list for PBXNativeTarget "MacAranym MMU" */ = { isa = XCConfigurationList; buildConfigurations = ( 17BCD7E60B20F64F00432CE1 /* Debug */, 17BCD7E70B20F64F00432CE1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 8CB53C84203F0D540005E5AD /* Build configuration list for PBXNativeTarget "MacAranym SDL2" */ = { isa = XCConfigurationList; buildConfigurations = ( 8CB53C82203F0D540005E5AD /* Debug */, 8CB53C83203F0D540005E5AD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 8CB53C97203F0D680005E5AD /* Build configuration list for PBXNativeTarget "MacAranym JIT SDL2" */ = { isa = XCConfigurationList; buildConfigurations = ( 8CB53C98203F0D680005E5AD /* Debug */, 8CB53C99203F0D680005E5AD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 8CB53CAC203F0D780005E5AD /* Build configuration list for PBXNativeTarget "MacAranym MMU SDL2" */ = { isa = XCConfigurationList; buildConfigurations = ( 8CB53CAD203F0D780005E5AD /* Debug */, 8CB53CAE203F0D780005E5AD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; B439AC970C5B2FD00046EFC9 /* Build configuration list for PBXNativeTarget "MacAranym JIT" */ = { isa = XCConfigurationList; buildConfigurations = ( B439AC980C5B2FD00046EFC9 /* Debug */, B439AC990C5B2FD00046EFC9 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "MacAranym" */ = { isa = XCConfigurationList; buildConfigurations = ( 17E8B5B50ABC88C600BBFD59 /* Debug */, 1706B5030ABCB72B006CB74B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MacAranym" */ = { isa = XCConfigurationList; buildConfigurations = ( 17E8B5B60ABC88C600BBFD59 /* Debug */, 1706B5050ABCB72B006CB74B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; CB4679561AFA78630090A72D /* Build configuration list for PBXLegacyTarget "ExternalScript" */ = { isa = XCConfigurationList; buildConfigurations = ( CB4679541AFA78440090A72D /* Debug */, CB4679551AFA78440090A72D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; } aranym-1.1.0/src/Unix/MacOSX/MacAranym.pbproj/0000775000175000017500000000000013454637621017150 5ustar joyjoyaranym-1.1.0/src/Unix/MacOSX/MacAranym.pbproj/project.pbxproj0000664000175000017500000043750013454637621022235 0ustar joyjoy// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 39; objects = { 1058C7A1FEA54F0111CA2CBB = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; refType = 0; sourceTree = ""; }; //100 //101 //102 //103 //104 //170 //171 //172 //173 //174 1715C8160C725FC7000A9FC0 = { buildPhases = ( 1715C8170C725FC7000A9FC0, 1715C8180C725FC7000A9FC0, 1715C8190C725FC7000A9FC0, 1715C8700C725FC7000A9FC0, 1715C8730C725FC7000A9FC0, 1715C87A0C725FC7000A9FC0, ); buildRules = ( ); buildSettings = { COMPILE_DEFS = "$(COMPILE_DEFS_COMMON) DIRECT_ADDRESSING FPU_UAE"; CONFIGURE_OPTIONS = "$(CONFIGURE_OPTIONS_COMMON) --enable-fpe=uae --enable-fullmmu --enable-lilo"; INFOPLIST_FILE = "../../gui-osx/Info.plist"; OTHER_LDFLAGS = "-lz"; PRODUCT_NAME = "MacAranym MMU"; }; dependencies = ( ); isa = PBXNativeTarget; name = "MacAranym MMU"; productName = MacAranym2; productReference = 1715C87C0C725FC7000A9FC0; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable MacAranym2 CFBundleIdentifier com.yourcompany.MacAranym2 CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType APPL CFBundleSignature ???? CFBundleVersion 1.0 "; productType = "com.apple.product-type.application"; }; 1715C8170C725FC7000A9FC0 = { buildActionMask = 2147483647; files = ( ); inputPaths = ( ); isa = PBXShellScriptBuildPhase; outputPaths = ( "$(DERIVED_FILES_DIR)/Makefile", "$(DERIVED_FILES_DIR)/config.h", "$(DERIVED_FILES_DIR)/config_i386.h", "$(DERIVED_FILES_DIR)/config_ppc.h", "$(TARGET_TEMP_DIR)/configure_options", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "#################### CONFIGURE SYSTEM ################\n# Check if configure script has to be run\necho \"Checking configure options: $CONFIGURE_OPTIONS\"\nOPTIONS_FILE=$TARGET_TEMP_DIR/configure_options\nFILE_CONTENT=`cat \"$OPTIONS_FILE\" 2>/dev/null`\nif [ \\( -f \"$OPTIONS_FILE\" \\) -a \\( \"$FILE_CONTENT\" == \"$CONFIGURE_OPTIONS\" \\) ]; then\n\techo \"config.h still valid\"\t\n\texit 0\nfi\n\necho \"Running configure script\"\n\n# Check if PROJECT_DIR variable is set (Xcode 2.x)\nif [ -z \"$PROJECT_DIR\" ]; then\n\techo '$PROJECT_DIR was not declared. Setting variable:'\n\told_dir=$PWD\n\tcd \"$BUILD_DIR/..\"\n\texport PROJECT_DIR=\"$PWD\"\n\tcd $old_dir\n\techo \"\t\\$PROJECT_DIR = $PROJECT_DIR\"\n\techo\nfi\n\n# Make sure makedepend can be found\nexport PATH=\"$PATH:/usr/X11R6/bin\"\n\n# Make sure SDL.m4 can be found\nexport ACLOCAL_FLAGS=\"-I $PROJECT_DIR/../darwin\"\n\n# Make sure SDL.framework can be found\nexport LDFLAGS=-F$PROJECT_DIR\nexport DYLD_FRAMEWORK_PATH=$PROJECT_DIR\n\nmkdir -p \"$DERIVED_FILES_DIR\"\n\n\ncd \"$SOURCE_DIR/Unix\"\n\n# Remove old files\nrm -rf Makefile autom4te.cache aclocal.m4 config.h config.log 2>/dev/null\n\n# Configure system for all build architectures\nif [ -f autogen.sh ]; then\n\trm -f config.h.in 2>/dev/null\n\tCONFIG_EXEC=./autogen.sh\nelse\n\tCONFIG_EXEC=./configure\nfi\n\"$CONFIG_EXEC\" $CONFIGURE_OPTIONS || exit 1\n\n# Modify config.h\nif [ $NATIVE_ARCH == ppc ]; then\n\tcat config.h | sed 's/CPU_TYPE \"powerpc\"/CPU_TYPE \"i386\"/' \\\n\t\t| sed 's/#define WORDS_BIGENDIAN 1/\\/* #undef WORDS_BIGENDIAN *\\//' > config_i386.h\n\t# 10.3.9 compatibility:\n\tcat config.h | sed 's/#define HAVE_SYS_STATVFS_H 1/\\/* #undef HAVE_SYS_STATVFS_H *\\//' > config_ppc.h\n\trm config.h\nelse\n\tcat config.h | sed 's/CPU_TYPE \"i386\"/CPU_TYPE \"powerpc\"/' \\\n\t\t| sed 's/\\/* #undef WORDS_BIGENDIAN *\\//#define WORDS_BIGENDIAN 1/' \\\n\t\t| sed 's/#define HAVE_SYS_STATVFS_H 1/\\/* #undef HAVE_SYS_STATVFS_H *\\//' > config_ppc.h\n\tmv config.h config_$NATIVE_ARCH.h\nfi\n\ncat << EOF > config.h\n#ifdef CPU_i386\n#include \"config_i386.h\"\n#endif\n#ifdef CPU_powerpc\n#include \"config_ppc.h\"\n#endif\nEOF\n\nmv config.h config_ppc.h config_i386.h Makefile \"$DERIVED_FILES_DIR\"\n\n# Remember configure options for next script execution\nmkdir -p \"$TARGET_TEMP_DIR\" 2>/dev/null\necho \"$CONFIGURE_OPTIONS\" > \"$OPTIONS_FILE\"\nexit 0\n"; }; 1715C8180C725FC7000A9FC0 = { buildActionMask = 2147483647; files = ( ); inputPaths = ( "$(SOURCE_DIR)/uae_cpu/build68k.c", "$(SOURCE_DIR)/uae_cpu/table68k", "$(DERIVED_FILES_DIR)/config_i386.h", "$(DERIVED_FILES_DIR)/config_ppc.h", ); isa = PBXShellScriptBuildPhase; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "########################## BUILD CPU EMULATION CORE ##########################\n\nmkdir -p \"$DERIVED_FILES_DIR\" && cd \"$DERIVED_FILES_DIR\" || exit 1\nTRANSFERRED=`rsync -pogt --stats cpudefs.cpp cpuemu.cpp cpuemu_*.cpp cputbl.h cpustbl.cpp Makefile config*.h \"$PROJECT_TEMP_DIR\" 2>/dev/null 1>rsync_output.txt`\nRET=$?\nTRANSFERRED=`cat rsync_output.txt| grep \"transferred:\" | awk '{print $5}'`\nrm rsync_output.txt\necho \"$TRANSFERRED files transferred. (Return code $RET)\"\nif [ \"$RET\" -eq 0 -a \"$TRANSFERRED\" -eq 0 ]; then\n\texit 0\nfi\n\necho ; echo \"Building CPU definition...\"\n\ncd \"$TEMP_FILES_DIR\" \ngcc -o build68k \"$SOURCE_DIR/uae_cpu/build68k.c\" && \\\n\t(./build68k < \"$SOURCE_DIR/uae_cpu/table68k\" > \"$DERIVED_FILES_DIR/cpudefs.cpp\") || exit 1\n\nfor CURRENT_ARCH in $ARCHS ; do\n\techo ; echo \"Building CPU emulation core... $CURRENT_ARCH\"\n\tg++ `echo \"-DCPU_$CURRENT_ARCH\" | sed s/ppc/powerpc/` \"-I$DERIVED_FILES_DIR\" \"-I$SOURCE_DIR/Unix\" \"-I$SOURCE_DIR/uae_cpu\" -o gencpu \\\n\t\t\"$SOURCE_DIR/uae_cpu/gencpu.c\" \"$SOURCE_DIR/uae_cpu/readcpu.cpp\" \"$DERIVED_FILES_DIR/cpudefs.cpp\" && \\\n\t\t./gencpu || exit 1\n\tmv cpuemu.cpp \"$DERIVED_FILES_DIR/cpuemu_$CURRENT_ARCH.cpp\"\ndone\nmv cpustbl.cpp cputbl.h \"$DERIVED_FILES_DIR\" || exit 1\n\ncat << EOF > \"$DERIVED_FILES_DIR/cpuemu.cpp\"\n#ifdef CPU_i386\n#include \"cpuemu_i386.cpp\"\n#endif\n#ifdef CPU_powerpc\n#include \"cpuemu_ppc.cpp\"\n#endif\nEOF\n\ncd \"$DERIVED_FILES_DIR\"\nmkdir -p \"$PROJECT_TEMP_DIR\"\nrsync -pogt cpudefs.cpp cpuemu.cpp cpuemu_*.cpp cputbl.h cpustbl.cpp Makefile config*.h \"$PROJECT_TEMP_DIR\"\n"; }; 1715C8190C725FC7000A9FC0 = { buildActionMask = 2147483647; files = ( 1715C81A0C725FC7000A9FC0, 1715C81B0C725FC7000A9FC0, 1715C81C0C725FC7000A9FC0, 1715C81D0C725FC7000A9FC0, 1715C81E0C725FC7000A9FC0, 1715C81F0C725FC7000A9FC0, 1715C8200C725FC7000A9FC0, 1715C8210C725FC7000A9FC0, 1715C8220C725FC7000A9FC0, 1715C8230C725FC7000A9FC0, 1715C8240C725FC7000A9FC0, 1715C8250C725FC7000A9FC0, 1715C8260C725FC7000A9FC0, 1715C8270C725FC7000A9FC0, 1715C8280C725FC7000A9FC0, 1715C8290C725FC7000A9FC0, 1715C82A0C725FC7000A9FC0, 1715C82B0C725FC7000A9FC0, 1715C82C0C725FC7000A9FC0, 1715C82D0C725FC7000A9FC0, 1715C82E0C725FC7000A9FC0, 1715C82F0C725FC7000A9FC0, 1715C8300C725FC7000A9FC0, 1715C8310C725FC7000A9FC0, 1715C8320C725FC7000A9FC0, 1715C8330C725FC7000A9FC0, 1715C8340C725FC7000A9FC0, 1715C8350C725FC7000A9FC0, 1715C8360C725FC7000A9FC0, 1715C8370C725FC7000A9FC0, 1715C8380C725FC7000A9FC0, 1715C8390C725FC7000A9FC0, 1715C83A0C725FC7000A9FC0, 1715C83B0C725FC7000A9FC0, 1715C83C0C725FC7000A9FC0, 1715C83D0C725FC7000A9FC0, 1715C83E0C725FC7000A9FC0, 1715C83F0C725FC7000A9FC0, 1715C8400C725FC7000A9FC0, 1715C8410C725FC7000A9FC0, 1715C8420C725FC7000A9FC0, 1715C8430C725FC7000A9FC0, 1715C8440C725FC7000A9FC0, 1715C8450C725FC7000A9FC0, 1715C8460C725FC7000A9FC0, 1715C8470C725FC7000A9FC0, 1715C8480C725FC7000A9FC0, 1715C8490C725FC7000A9FC0, 1715C84A0C725FC7000A9FC0, 1715C84B0C725FC7000A9FC0, 1715C84C0C725FC7000A9FC0, 1715C84D0C725FC7000A9FC0, 1715C84E0C725FC7000A9FC0, 1715C84F0C725FC7000A9FC0, 1715C8500C725FC7000A9FC0, 1715C8510C725FC7000A9FC0, 1715C8520C725FC7000A9FC0, 1715C8530C725FC7000A9FC0, 1715C8540C725FC7000A9FC0, 1715C8550C725FC7000A9FC0, 1715C8560C725FC7000A9FC0, 1715C8570C725FC7000A9FC0, 1715C8580C725FC7000A9FC0, 1715C8590C725FC7000A9FC0, 1715C85A0C725FC7000A9FC0, 1715C85B0C725FC7000A9FC0, 1715C85C0C725FC7000A9FC0, 1715C85D0C725FC7000A9FC0, 1715C85E0C725FC7000A9FC0, 1715C85F0C725FC7000A9FC0, 1715C8600C725FC7000A9FC0, 1715C8610C725FC7000A9FC0, 1715C8620C725FC7000A9FC0, 1715C8630C725FC7000A9FC0, 1715C8640C725FC7000A9FC0, 1715C8650C725FC7000A9FC0, 1715C8660C725FC7000A9FC0, 1715C8670C725FC7000A9FC0, 1715C8680C725FC7000A9FC0, 1715C8690C725FC7000A9FC0, 1715C86A0C725FC7000A9FC0, 1715C86B0C725FC7000A9FC0, 1715C86F0C725FC7000A9FC0, 173558A90C7261210058A4BD, 173558AB0C7261210058A4BD, 173558AC0C7261210058A4BD, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 1715C81A0C725FC7000A9FC0 = { fileRef = 17B847BF0C7244D6009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C81B0C725FC7000A9FC0 = { fileRef = 17B847C30C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C81C0C725FC7000A9FC0 = { fileRef = 17B847C80C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C81D0C725FC7000A9FC0 = { fileRef = 17B847CE0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C81E0C725FC7000A9FC0 = { fileRef = 17786E690C7243E0009ABEA7; isa = PBXBuildFile; settings = { }; }; 1715C81F0C725FC7000A9FC0 = { fileRef = 17B847EA0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8200C725FC7000A9FC0 = { fileRef = 17B847E00C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8210C725FC7000A9FC0 = { fileRef = 17B847BE0C7244D6009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8220C725FC7000A9FC0 = { fileRef = 17B847CA0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8230C725FC7000A9FC0 = { fileRef = 17B847CC0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8240C725FC7000A9FC0 = { fileRef = 17B847CD0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8250C725FC7000A9FC0 = { fileRef = 17B847E90C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8260C725FC7000A9FC0 = { fileRef = 17B847C70C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8270C725FC7000A9FC0 = { fileRef = 17B847C20C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8280C725FC7000A9FC0 = { fileRef = 17B847E80C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8290C725FC7000A9FC0 = { fileRef = 17786E750C7243E0009ABEA7; isa = PBXBuildFile; settings = { }; }; 1715C82A0C725FC7000A9FC0 = { fileRef = 17786E780C7243E0009ABEA7; isa = PBXBuildFile; settings = { }; }; 1715C82B0C725FC7000A9FC0 = { fileRef = 1754E9B30C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 1715C82C0C725FC7000A9FC0 = { fileRef = 1754E9A10C724346001FB099; isa = PBXBuildFile; settings = { }; }; 1715C82D0C725FC7000A9FC0 = { fileRef = 1754E9A20C724346001FB099; isa = PBXBuildFile; settings = { }; }; 1715C82E0C725FC7000A9FC0 = { fileRef = 1754E9A30C724346001FB099; isa = PBXBuildFile; settings = { }; }; 1715C82F0C725FC7000A9FC0 = { fileRef = 1754E9A40C724346001FB099; isa = PBXBuildFile; settings = { }; }; 1715C8300C725FC7000A9FC0 = { fileRef = 1754E9A50C724346001FB099; isa = PBXBuildFile; settings = { }; }; 1715C8310C725FC7000A9FC0 = { fileRef = 1754E9A60C724346001FB099; isa = PBXBuildFile; settings = { }; }; 1715C8320C725FC7000A9FC0 = { fileRef = 1754E9A70C724346001FB099; isa = PBXBuildFile; settings = { }; }; 1715C8330C725FC7000A9FC0 = { fileRef = 1754E9A80C724346001FB099; isa = PBXBuildFile; settings = { }; }; 1715C8340C725FC7000A9FC0 = { fileRef = 1754E9A90C724346001FB099; isa = PBXBuildFile; settings = { }; }; 1715C8350C725FC7000A9FC0 = { fileRef = 17B847D70C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8360C725FC7000A9FC0 = { fileRef = 17B847E70C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8370C725FC7000A9FC0 = { fileRef = 17B847DE0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8380C725FC7000A9FC0 = { fileRef = 1754E9BB0C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 1715C8390C725FC7000A9FC0 = { fileRef = 17987EE50C72445B00B5D640; isa = PBXBuildFile; settings = { }; }; 1715C83A0C725FC7000A9FC0 = { fileRef = 17B847DF0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C83B0C725FC7000A9FC0 = { fileRef = 1754E9AA0C724346001FB099; isa = PBXBuildFile; settings = { }; }; 1715C83C0C725FC7000A9FC0 = { fileRef = 17786E820C7243E0009ABEA7; isa = PBXBuildFile; settings = { }; }; 1715C83D0C725FC7000A9FC0 = { fileRef = 17B847DC0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C83E0C725FC7000A9FC0 = { fileRef = 17B847B80C7244D6009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C83F0C725FC7000A9FC0 = { fileRef = 17B847C60C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8400C725FC7000A9FC0 = { fileRef = 17B847CF0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8410C725FC7000A9FC0 = { fileRef = 17786EB00C724419009ABEA7; isa = PBXBuildFile; settings = { }; }; 1715C8420C725FC7000A9FC0 = { fileRef = 1754E9BE0C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 1715C8430C725FC7000A9FC0 = { fileRef = 17B847E10C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8440C725FC7000A9FC0 = { fileRef = 17B847C90C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8450C725FC7000A9FC0 = { fileRef = 17B847E50C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8460C725FC7000A9FC0 = { fileRef = 17B847D60C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8470C725FC7000A9FC0 = { fileRef = 17B847E60C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8480C725FC7000A9FC0 = { fileRef = 17B847DA0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8490C725FC7000A9FC0 = { fileRef = 17786EBA0C724419009ABEA7; isa = PBXBuildFile; settings = { }; }; 1715C84A0C725FC7000A9FC0 = { fileRef = 17B847D90C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C84B0C725FC7000A9FC0 = { fileRef = 17786E8F0C7243E0009ABEA7; isa = PBXBuildFile; settings = { }; }; 1715C84C0C725FC7000A9FC0 = { fileRef = 17B847D80C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C84D0C725FC7000A9FC0 = { fileRef = 17B847BD0C7244D6009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C84E0C725FC7000A9FC0 = { fileRef = 17B847BC0C7244D6009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C84F0C725FC7000A9FC0 = { fileRef = 17B847E20C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8500C725FC7000A9FC0 = { fileRef = 17B847D50C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8510C725FC7000A9FC0 = { fileRef = 17B847D40C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8520C725FC7000A9FC0 = { fileRef = 17B847D30C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8530C725FC7000A9FC0 = { fileRef = 17786E910C7243E0009ABEA7; isa = PBXBuildFile; settings = { }; }; 1715C8540C725FC7000A9FC0 = { fileRef = 1754E9C00C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 1715C8550C725FC7000A9FC0 = { fileRef = 1754E9C20C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 1715C8560C725FC7000A9FC0 = { fileRef = 1754E9C40C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 1715C8570C725FC7000A9FC0 = { fileRef = 1754E9C60C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 1715C8580C725FC7000A9FC0 = { fileRef = 1754E9C80C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 1715C8590C725FC7000A9FC0 = { fileRef = 1754E9CA0C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 1715C85A0C725FC7000A9FC0 = { fileRef = 1754E9CE0C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 1715C85B0C725FC7000A9FC0 = { fileRef = 1754E9EE0C72435C001FB099; isa = PBXBuildFile; settings = { }; }; 1715C85C0C725FC7000A9FC0 = { fileRef = 1754E9F00C72435C001FB099; isa = PBXBuildFile; settings = { }; }; 1715C85D0C725FC7000A9FC0 = { fileRef = 1754E9F20C72435C001FB099; isa = PBXBuildFile; settings = { }; }; 1715C85E0C725FC7000A9FC0 = { fileRef = 17B847D20C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C85F0C725FC7000A9FC0 = { fileRef = 17B847D10C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8600C725FC7000A9FC0 = { fileRef = 17B847BB0C7244D6009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8610C725FC7000A9FC0 = { fileRef = 17B8478B0C724490009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8620C725FC7000A9FC0 = { fileRef = 17786E940C7243E0009ABEA7; isa = PBXBuildFile; settings = { }; }; 1715C8630C725FC7000A9FC0 = { fileRef = 17B847BA0C7244D6009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8640C725FC7000A9FC0 = { fileRef = 17B847C10C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8650C725FC7000A9FC0 = { fileRef = 1754E9AD0C724346001FB099; isa = PBXBuildFile; settings = { }; }; 1715C8660C725FC7000A9FC0 = { fileRef = 172EF0D00C7242EE00EAB011; isa = PBXBuildFile; settings = { }; }; 1715C8670C725FC7000A9FC0 = { fileRef = 17B847DD0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8680C725FC7000A9FC0 = { fileRef = 17B847E40C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8690C725FC7000A9FC0 = { fileRef = 17786EC40C724419009ABEA7; isa = PBXBuildFile; settings = { }; }; 1715C86A0C725FC7000A9FC0 = { fileRef = 1754E9F40C72435C001FB099; isa = PBXBuildFile; settings = { }; }; 1715C86B0C725FC7000A9FC0 = { fileRef = 17B847DB0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C86F0C725FC7000A9FC0 = { fileRef = 17B847CB0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8700C725FC7000A9FC0 = { buildActionMask = 2147483647; files = ( 1715C8710C725FC7000A9FC0, 1715C8720C725FC7000A9FC0, ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 1715C8710C725FC7000A9FC0 = { fileRef = 17B848A80C724639009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8720C725FC7000A9FC0 = { fileRef = 17B848A50C72462D009D5C48; isa = PBXBuildFile; settings = { }; }; 1715C8730C725FC7000A9FC0 = { buildActionMask = 2147483647; files = ( 1715C8740C725FC7000A9FC0, 1715C8750C725FC7000A9FC0, 1715C8760C725FC7000A9FC0, 1715C8770C725FC7000A9FC0, 1715C8780C725FC7000A9FC0, 1715C8790C725FC7000A9FC0, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 1715C8740C725FC7000A9FC0 = { fileRef = 172EEC660C7241A500EAB011; isa = PBXBuildFile; settings = { }; }; 1715C8750C725FC7000A9FC0 = { fileRef = 29B97324FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 1715C8760C725FC7000A9FC0 = { fileRef = 1058C7A1FEA54F0111CA2CBB; isa = PBXBuildFile; settings = { }; }; 1715C8770C725FC7000A9FC0 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 1715C8780C725FC7000A9FC0 = { fileRef = F580C4E205A71FBF01DAC342; isa = PBXBuildFile; settings = { }; }; 1715C8790C725FC7000A9FC0 = { fileRef = F5A145AF05A7EA78017C0BEF; isa = PBXBuildFile; settings = { }; }; 1715C87A0C725FC7000A9FC0 = { buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( 1715C87B0C725FC7000A9FC0, ); isa = PBXCopyFilesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 1715C87B0C725FC7000A9FC0 = { fileRef = 172EEC660C7241A500EAB011; isa = PBXBuildFile; settings = { }; }; 1715C87C0C725FC7000A9FC0 = { explicitFileType = wrapper.application; includeInIndex = 0; isa = PBXFileReference; path = "MacAranym MMU.app"; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 1715C87E0C725FC7000A9FC0 = { isa = PBXFileReference; lastKnownFileType = text.xml; lineEnding = 0; name = "Info copy.plist"; path = "../../gui-osx/Info copy.plist"; refType = 2; sourceTree = SOURCE_ROOT; }; 172EEC660C7241A500EAB011 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SDL.framework; refType = 2; sourceTree = SOURCE_ROOT; }; 172EF0CA0C7242EE00EAB011 = { children = ( 172EF0CB0C7242EE00EAB011, 172EF0CC0C7242EE00EAB011, 172EF0CE0C7242EE00EAB011, 172EF0CF0C7242EE00EAB011, 172EF0D00C7242EE00EAB011, 1715C87E0C725FC7000A9FC0, ); isa = PBXGroup; name = "gui-osx"; path = "/Volumes/System/AranymProject/aranym/src/gui-osx"; refType = 0; sourceTree = ""; }; 172EF0CB0C7242EE00EAB011 = { isa = PBXFileReference; lastKnownFileType = image.icns; name = aranym.icns; path = "../../gui-osx/aranym.icns"; refType = 2; sourceTree = SOURCE_ROOT; }; 172EF0CC0C7242EE00EAB011 = { children = ( 172EF0CD0C7242EE00EAB011, ); isa = PBXVariantGroup; name = aranym.nib; path = "../../gui-osx"; refType = 2; sourceTree = SOURCE_ROOT; }; 172EF0CD0C7242EE00EAB011 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/aranym.nib; refType = 4; sourceTree = ""; }; 172EF0CE0C7242EE00EAB011 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.xml; lineEnding = 0; name = Info.plist; path = "../../gui-osx/Info.plist"; refType = 2; sourceTree = SOURCE_ROOT; }; 172EF0CF0C7242EE00EAB011 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = SDLMain.h; path = "../../gui-osx/SDLMain.h"; refType = 2; sourceTree = SOURCE_ROOT; }; 172EF0D00C7242EE00EAB011 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = SDLMain.m; path = "../../gui-osx/SDLMain.m"; refType = 2; sourceTree = SOURCE_ROOT; }; 173558A10C7261050058A4BD = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = config.h; path = build/MacAranym.build/config.h; refType = 2; sourceTree = SOURCE_ROOT; }; 173558A20C72610F0058A4BD = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = config_i386.h; path = build/MacAranym.build/config_i386.h; refType = 2; sourceTree = SOURCE_ROOT; }; 173558A30C72610F0058A4BD = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = config_ppc.h; path = build/MacAranym.build/config_ppc.h; refType = 2; sourceTree = SOURCE_ROOT; }; 173558A40C7261150058A4BD = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.make; name = Makefile; path = build/MacAranym.build/Makefile; refType = 2; sourceTree = SOURCE_ROOT; }; 173558A50C7261210058A4BD = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = cpudefs.cpp; path = build/MacAranym.build/cpudefs.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 173558A60C7261210058A4BD = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = cpuemu_ppc.cpp; path = build/MacAranym.build/cpuemu_ppc.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 173558A70C7261210058A4BD = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = cpuemu.cpp; path = build/MacAranym.build/cpuemu.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 173558A80C7261210058A4BD = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = cpustbl.cpp; path = build/MacAranym.build/cpustbl.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 173558A90C7261210058A4BD = { fileRef = 173558A50C7261210058A4BD; isa = PBXBuildFile; settings = { }; }; 173558AB0C7261210058A4BD = { fileRef = 173558A70C7261210058A4BD; isa = PBXBuildFile; settings = { }; }; 173558AC0C7261210058A4BD = { fileRef = 173558A80C7261210058A4BD; isa = PBXBuildFile; settings = { }; }; 173558AD0C7261210058A4BD = { fileRef = 173558A50C7261210058A4BD; isa = PBXBuildFile; settings = { }; }; 173558AF0C7261210058A4BD = { fileRef = 173558A70C7261210058A4BD; isa = PBXBuildFile; settings = { }; }; 173558B00C7261210058A4BD = { fileRef = 173558A80C7261210058A4BD; isa = PBXBuildFile; settings = { }; }; 173558B10C7261290058A4BD = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = cputbl.h; path = build/MacAranym.build/cputbl.h; refType = 2; sourceTree = SOURCE_ROOT; }; 173558B70C7264020058A4BD = { buildActionMask = 2147483647; files = ( ); inputPaths = ( ); isa = PBXShellScriptBuildPhase; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "#################### CREATE DISK IMAGE ################\ncd \"$TARGET_BUILD_DIR/aranym-xxx-macosx/DOC\"\necho \"Processing text files...\"\nDATE=`date '+%Y\\/%m\\/%d'`\nmv COPYING ..\ncat README.rtf \\\n\t| sed \"s/(\\*VERSION\\*)/$CURRENT_PROJECT_VERSION/g\" \\\n\t| sed \"s/(\\*DATE\\*)/$DATE/g\" \\\n\t> ../README.rtf\nrm README.rtf\n\ncd \"$TARGET_BUILD_DIR/aranym-xxx-macosx\"\nVERSION=`echo \"-$CURRENT_PROJECT_VERSION\" | sed 's/ //g;s/-//g'`\nDMGNAME=$TARGET_BUILD_DIR/aranym-$VERSION-macosx.dmg\necho \"Building disk image $DMGNAME...\"\nhdiutil create $DMGNAME -ov -volname \"MacAranym $CURRENT_PROJECT_VERSION\" -srcfolder . -format UDZO\nexit $?"; }; 173558B80C7264020058A4BD = { buildPhases = ( 173558BD0C7264210058A4BD, 173558CC0C7264970058A4BD, 173558B70C7264020058A4BD, ); buildSettings = { OTHER_CFLAGS = ""; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Packaging; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; }; dependencies = ( 173558BA0C72640D0058A4BD, 173558BC0C72640D0058A4BD, ); isa = PBXAggregateTarget; name = Packaging; productName = Packaging; }; 173558B90C72640D0058A4BD = { containerPortal = 29B97313FDCFA39411CA2CEA; isa = PBXContainerItemProxy; proxyType = 1; remoteGlobalIDString = 17B849090C724AD6009D5C48; remoteInfo = MacAranym; }; 173558BA0C72640D0058A4BD = { isa = PBXTargetDependency; target = 17B849090C724AD6009D5C48; targetProxy = 173558B90C72640D0058A4BD; }; 173558BB0C72640D0058A4BD = { containerPortal = 29B97313FDCFA39411CA2CEA; isa = PBXContainerItemProxy; proxyType = 1; remoteGlobalIDString = 1715C8160C725FC7000A9FC0; remoteInfo = "MacAranym MMU"; }; 173558BC0C72640D0058A4BD = { isa = PBXTargetDependency; target = 1715C8160C725FC7000A9FC0; targetProxy = 173558BB0C72640D0058A4BD; }; 173558BD0C7264210058A4BD = { buildActionMask = 2147483647; dstPath = "aranym-xxx-macosx/DOC"; dstSubfolderSpec = 16; files = ( 173558BF0C7264540058A4BD, 173558C00C7264540058A4BD, 173558C10C7264540058A4BD, 173558C20C7264540058A4BD, 173558C30C7264540058A4BD, 173558C40C7264540058A4BD, 173558C50C7264540058A4BD, 173558C80C7264540058A4BD, 173558CA0C7264750058A4BD, 173558C60C7264540058A4BD, 173558C70C7264540058A4BD, 173558C90C7264630058A4BD, ); isa = PBXCopyFilesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 173558BF0C7264540058A4BD = { fileRef = 17B847FB0C7245A5009D5C48; isa = PBXBuildFile; settings = { }; }; 173558C00C7264540058A4BD = { fileRef = 17B847FC0C7245A5009D5C48; isa = PBXBuildFile; settings = { }; }; 173558C10C7264540058A4BD = { fileRef = 17B847FD0C7245A5009D5C48; isa = PBXBuildFile; settings = { }; }; 173558C20C7264540058A4BD = { fileRef = 17B847FE0C7245A5009D5C48; isa = PBXBuildFile; settings = { }; }; 173558C30C7264540058A4BD = { fileRef = 17B847FF0C7245A6009D5C48; isa = PBXBuildFile; settings = { }; }; 173558C40C7264540058A4BD = { fileRef = 17B848000C7245A6009D5C48; isa = PBXBuildFile; settings = { }; }; 173558C50C7264540058A4BD = { fileRef = 17B848010C7245A6009D5C48; isa = PBXBuildFile; settings = { }; }; 173558C60C7264540058A4BD = { fileRef = 17B848020C7245A6009D5C48; isa = PBXBuildFile; settings = { }; }; 173558C70C7264540058A4BD = { fileRef = 17B847FA0C72458F009D5C48; isa = PBXBuildFile; settings = { }; }; 173558C80C7264540058A4BD = { fileRef = 17B848030C7245A6009D5C48; isa = PBXBuildFile; settings = { }; }; 173558C90C7264630058A4BD = { fileRef = 17987EEC0C72445B00B5D640; isa = PBXBuildFile; settings = { }; }; 173558CA0C7264750058A4BD = { fileRef = 17B848040C7245BE009D5C48; isa = PBXBuildFile; settings = { }; }; 173558CC0C7264970058A4BD = { buildActionMask = 2147483647; dstPath = "aranym-xxx-macosx"; dstSubfolderSpec = 16; files = ( 173558CF0C7265030058A4BD, 173558CD0C7264BD0058A4BD, 173558D00C7265180058A4BD, 173558D10C7265180058A4BD, ); isa = PBXCopyFilesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 173558CD0C7264BD0058A4BD = { fileRef = 17987EEC0C72445B00B5D640; isa = PBXBuildFile; settings = { }; }; 173558CF0C7265030058A4BD = { fileRef = 17987EE10C72445B00B5D640; isa = PBXBuildFile; settings = { }; }; 173558D00C7265180058A4BD = { fileRef = 17B8490A0C724AD6009D5C48; isa = PBXBuildFile; settings = { }; }; 173558D10C7265180058A4BD = { fileRef = 1715C87C0C725FC7000A9FC0; isa = PBXBuildFile; settings = { }; }; 173558D30C7265FC0058A4BD = { buildSettings = { COMPILE_DEFS_COMMON = "HAVE_CONFIG_H OS_darwin CPU_powerpc MACOSX_support DIRSEPARATOR=\\\"/\\\" _GNU_SOURCE ENABLE_EXCLUSIVE_SPCFLAGS _REENTRANT _THREAD_SAFE ENABLE_VBL_UPDATES ENABLE_TUNTAP"; CONFIGURE_OPTIONS_COMMON = "--with-classicconfig --enable-opengl --enable-ethernet=no --enable-vblupdates=yes"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = "0.9.5 beta+cvs"; FRAMEWORK_SEARCH_PATHS = ". \"$(SRCROOT)\""; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = "$(COMPILE_DEFS)"; HEADER_SEARCH_PATHS = SDL.framework/Headers; LIBRARY_STYLE = DYNAMIC; MACOSX_DEPLOYMENT_TARGET = 10.3; OTHER_CPLUSPLUSFLAGS = "-I$(SOURCE_DIR)/darwin -I$(PROJECT_TEMP_DIR) -I$(SOURCE_DIR)/include -I$(srcdir) $-I(SOURCE_DIR)/natfeat -I$(SOURCE_DIR)/uae_cpu -I$(SOURCE_DIR)/gui-sdl"; PREBINDING = NO; SOURCE_DIR = "$(SOURCE_ROOT)/../.."; USER_HEADER_SEARCH_PATHS = "$(SOURCE_DIR)/darwin $(PROJECT_TEMP_DIR) $(SOURCE_DIR)/include $(srcdir) $(SOURCE_DIR)/natfeat $(SOURCE_DIR)/uae_cpu $(SOURCE_DIR)/gui-sdl"; ZERO_LINK = YES; }; isa = PBXBuildStyle; name = Debug; }; 1754E9630C724311001FB099 = { children = ( 1754E9640C724325001FB099, 172EF0CA0C7242EE00EAB011, 1754E9A00C724346001FB099, 1754E9AF0C72435B001FB099, 17786E680C7243E0009ABEA7, 17786E990C724402009ABEA7, 17B847BF0C7244D6009D5C48, 17B847C30C7244D7009D5C48, 17B847C80C7244D7009D5C48, 17B847CE0C7244D7009D5C48, 17B847EA0C7244D7009D5C48, 17B847E00C7244D7009D5C48, 17B847BE0C7244D6009D5C48, 17B847CA0C7244D7009D5C48, 17B847CC0C7244D7009D5C48, 17B847CD0C7244D7009D5C48, 17B847E90C7244D7009D5C48, 17B847C70C7244D7009D5C48, 17B847C20C7244D7009D5C48, 17B847E80C7244D7009D5C48, 17B847D70C7244D7009D5C48, 17B847E70C7244D7009D5C48, 17B847EB0C7244D7009D5C48, 17B847CB0C7244D7009D5C48, 17B847D00C7244D7009D5C48, 17B847B90C7244D6009D5C48, 17B847DE0C7244D7009D5C48, 17B847DF0C7244D7009D5C48, 17B847DC0C7244D7009D5C48, 17B847B80C7244D6009D5C48, 17B847C60C7244D7009D5C48, 17B847CF0C7244D7009D5C48, 17B847E10C7244D7009D5C48, 17B847C90C7244D7009D5C48, 17B847E50C7244D7009D5C48, 17B847D60C7244D7009D5C48, 17B847E60C7244D7009D5C48, 17B847DA0C7244D7009D5C48, 17B847D90C7244D7009D5C48, 17B847D80C7244D7009D5C48, 17B847BD0C7244D6009D5C48, 17B847BC0C7244D6009D5C48, 17B847E30C7244D7009D5C48, 17B847E20C7244D7009D5C48, 17B847D50C7244D7009D5C48, 17B847D40C7244D7009D5C48, 17B847D30C7244D7009D5C48, 17B847D20C7244D7009D5C48, 17B847D10C7244D7009D5C48, 17B847C50C7244D7009D5C48, 17B847C40C7244D7009D5C48, 17B847BB0C7244D6009D5C48, 17B847BA0C7244D6009D5C48, 17B847C10C7244D7009D5C48, 17B847C00C7244D7009D5C48, 17B847DD0C7244D7009D5C48, 17B847E40C7244D7009D5C48, 17B847DB0C7244D7009D5C48, ); isa = PBXGroup; name = "Aranym Sources"; refType = 4; sourceTree = ""; }; 1754E9640C724325001FB099 = { children = ( 1754E9650C724325001FB099, 1754E9660C724325001FB099, 1754E9670C724325001FB099, 1754E9680C724325001FB099, 1754E9690C724325001FB099, 1754E96A0C724325001FB099, 1754E96B0C724325001FB099, 1754E96C0C724325001FB099, 1754E96D0C724325001FB099, 1754E96E0C724325001FB099, 1754E96F0C724325001FB099, 1754E9700C724325001FB099, 1754E9710C724325001FB099, 1754E9720C724325001FB099, 1754E9730C724325001FB099, 1754E9740C724325001FB099, 1754E9750C724325001FB099, 1754E9760C724325001FB099, 1754E9770C724325001FB099, 1754E9780C724325001FB099, 1754E9790C724325001FB099, 1754E97A0C724325001FB099, 1754E97B0C724325001FB099, 1754E97C0C724325001FB099, 1754E97D0C724325001FB099, 1754E97E0C724325001FB099, 1754E97F0C724325001FB099, 1754E9800C724325001FB099, 1754E9810C724325001FB099, 1754E9820C724325001FB099, 1754E9830C724325001FB099, 1754E9840C724325001FB099, 1754E9850C724325001FB099, 1754E9860C724325001FB099, 1754E9870C724325001FB099, 1754E9880C724325001FB099, 1754E9890C724325001FB099, 1754E98A0C724325001FB099, 1754E98B0C724325001FB099, 1754E98C0C724325001FB099, 1754E98D0C724325001FB099, 1754E98E0C724325001FB099, 1754E98F0C724325001FB099, 1754E9900C724325001FB099, 1754E9910C724325001FB099, 1754E9920C724325001FB099, 1754E9930C724325001FB099, 1754E9940C724325001FB099, 1754E9950C724325001FB099, 1754E9960C724325001FB099, 1754E9970C724325001FB099, 1754E9980C724325001FB099, 1754E9990C724325001FB099, 1754E99A0C724325001FB099, 1754E99B0C724325001FB099, 1754E99C0C724325001FB099, 1754E99D0C724325001FB099, 1754E99E0C724325001FB099, 1754E99F0C724325001FB099, ); isa = PBXGroup; name = include; path = /Volumes/System/AranymProject/aranym/src/include; refType = 0; sourceTree = ""; }; 1754E9650C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = acia.h; path = ../../include/acia.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9660C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = acsifdc.h; path = ../../include/acsifdc.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9670C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = aradata.h; path = ../../include/aradata.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9680C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = aramd5.h; path = ../../include/aramd5.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9690C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = aranym_exception.h; path = ../../include/aranym_exception.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E96A0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = "aspi-win32.h"; path = "../../include/aspi-win32.h"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E96B0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = ata.h; path = ../../include/ata.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E96C0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = audio_crossbar.h; path = ../../include/audio_crossbar.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E96D0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = audio_dma.h; path = ../../include/audio_dma.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E96E0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = blitter.h; path = ../../include/blitter.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E96F0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = bootos.h; path = ../../include/bootos.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9700C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = bootos_emutos.h; path = ../../include/bootos_emutos.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9710C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = bootos_linux.h; path = ../../include/bootos_linux.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9720C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = bootos_tos.h; path = ../../include/bootos_tos.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9730C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = cdrom.h; path = ../../include/cdrom.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9740C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = cfgopts.h; path = ../../include/cfgopts.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9750C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = debug.h; path = ../../include/debug.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9760C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = dsp.h; path = ../../include/dsp.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9770C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = dsp_cpu.h; path = ../../include/dsp_cpu.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9780C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = dsp_disasm.h; path = ../../include/dsp_disasm.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9790C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = dyngl.h; path = ../../include/dyngl.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E97A0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = dyngl_gl.h; path = ../../include/dyngl_gl.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E97B0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = dyngl_glext.h; path = ../../include/dyngl_glext.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E97C0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = emu_bochs.h; path = ../../include/emu_bochs.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E97D0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = emul_op.h; path = ../../include/emul_op.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E97E0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = hardware.h; path = ../../include/hardware.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E97F0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = host.h; path = ../../include/host.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9800C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = host_audio.h; path = ../../include/host_audio.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9810C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = host_clock.h; path = ../../include/host_clock.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9820C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = host_clock_unix.h; path = ../../include/host_clock_unix.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9830C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = host_filesys.h; path = ../../include/host_filesys.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9840C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = hostscreen.h; path = ../../include/hostscreen.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9850C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = icio.h; path = ../../include/icio.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9860C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = ide.h; path = ../../include/ide.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9870C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = identify.h; path = ../../include/identify.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9880C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = ikbd.h; path = ../../include/ikbd.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9890C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = input.h; path = ../../include/input.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E98A0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = main.h; path = ../../include/main.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E98B0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = mfp.h; path = ../../include/mfp.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E98C0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = midi.h; path = ../../include/midi.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E98D0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = midi_file.h; path = ../../include/midi_file.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E98E0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = midi_sequencer.h; path = ../../include/midi_sequencer.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E98F0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = mmu.h; path = ../../include/mmu.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9900C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = natfeats.h; path = ../../include/natfeats.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9910C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = ncr5380.h; path = ../../include/ncr5380.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9920C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = ndebug.h; path = ../../include/ndebug.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9930C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = parallel.h; path = ../../include/parallel.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9940C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = parallel_file.h; path = ../../include/parallel_file.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9950C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = parallel_parport.h; path = ../../include/parallel_parport.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9960C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = parallel_x86.h; path = ../../include/parallel_x86.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9970C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = parameters.h; path = ../../include/parameters.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9980C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = romdiff.h; path = ../../include/romdiff.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9990C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = rtc.h; path = ../../include/rtc.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E99A0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = scsidefs.h; path = ../../include/scsidefs.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E99B0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = tools.h; path = ../../include/tools.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E99C0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = toserror.h; path = ../../include/toserror.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E99D0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = version.h; path = ../../include/version.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E99E0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = videl.h; path = ../../include/videl.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E99F0C724325001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = yamaha.h; path = ../../include/yamaha.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9A00C724346001FB099 = { children = ( 1754E9A10C724346001FB099, 1754E9A20C724346001FB099, 1754E9A30C724346001FB099, 1754E9A40C724346001FB099, 1754E9A50C724346001FB099, 1754E9A60C724346001FB099, 1754E9A70C724346001FB099, 1754E9A80C724346001FB099, 1754E9A90C724346001FB099, 1754E9AA0C724346001FB099, 1754E9AB0C724346001FB099, 1754E9AC0C724346001FB099, 1754E9AD0C724346001FB099, 1754E9AE0C724346001FB099, ); isa = PBXGroup; name = "gui-sdl"; path = "/Volumes/System/AranymProject/aranym/src/gui-sdl"; refType = 0; sourceTree = ""; }; 1754E9A10C724346001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = dlgAlert.cpp; path = "../../gui-sdl/dlgAlert.cpp"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9A20C724346001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = dlgDisk.cpp; path = "../../gui-sdl/dlgDisk.cpp"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9A30C724346001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = dlgFileSelect.cpp; path = "../../gui-sdl/dlgFileSelect.cpp"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9A40C724346001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = dlgHotkeys.cpp; path = "../../gui-sdl/dlgHotkeys.cpp"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9A50C724346001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = dlgKeyboard.cpp; path = "../../gui-sdl/dlgKeyboard.cpp"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9A60C724346001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = dlgMain.cpp; path = "../../gui-sdl/dlgMain.cpp"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9A70C724346001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = dlgNetwork.cpp; path = "../../gui-sdl/dlgNetwork.cpp"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9A80C724346001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = dlgOs.cpp; path = "../../gui-sdl/dlgOs.cpp"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9A90C724346001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = dlgVideo.cpp; path = "../../gui-sdl/dlgVideo.cpp"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9AA0C724346001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = file.cpp; path = "../../gui-sdl/file.cpp"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9AB0C724346001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = file.h; path = "../../gui-sdl/file.h"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9AC0C724346001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = font8.h; path = "../../gui-sdl/font8.h"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9AD0C724346001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = sdlgui.cpp; path = "../../gui-sdl/sdlgui.cpp"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9AE0C724346001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = sdlgui.h; path = "../../gui-sdl/sdlgui.h"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9AF0C72435B001FB099 = { children = ( 1754E9B00C72435B001FB099, 1754E9B10C72435B001FB099, 1754E9B20C72435B001FB099, 1754E9B30C72435B001FB099, 1754E9B40C72435B001FB099, 1754E9B50C72435B001FB099, 1754E9BB0C72435B001FB099, 1754E9BC0C72435B001FB099, 1754E9BD0C72435B001FB099, 1754E9BE0C72435B001FB099, 1754E9BF0C72435B001FB099, 1754E9C00C72435B001FB099, 1754E9C10C72435B001FB099, 1754E9C20C72435B001FB099, 1754E9C30C72435B001FB099, 1754E9C40C72435B001FB099, 1754E9C50C72435B001FB099, 1754E9C60C72435B001FB099, 1754E9C70C72435B001FB099, 1754E9C80C72435B001FB099, 1754E9C90C72435B001FB099, 1754E9CA0C72435B001FB099, 1754E9CB0C72435B001FB099, 1754E9CC0C72435B001FB099, 1754E9CD0C72435B001FB099, 1754E9CE0C72435B001FB099, 1754E9CF0C72435B001FB099, 1754E9D00C72435B001FB099, 1754E9D10C72435B001FB099, 1754E9D20C72435B001FB099, 1754E9D30C72435B001FB099, 1754E9E80C72435C001FB099, 1754E9E90C72435C001FB099, 1754E9EA0C72435C001FB099, 1754E9EB0C72435C001FB099, 1754E9EC0C72435C001FB099, 1754E9ED0C72435C001FB099, 1754E9EE0C72435C001FB099, 1754E9EF0C72435C001FB099, 1754E9F00C72435C001FB099, 1754E9F10C72435C001FB099, 1754E9F20C72435C001FB099, 1754E9F30C72435C001FB099, 1754E9F40C72435C001FB099, 1754E9F50C72435C001FB099, ); isa = PBXGroup; name = natfeat; path = /Volumes/System/AranymProject/aranym/src/natfeat; refType = 0; sourceTree = ""; }; 1754E9B00C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = atari_example.c; path = ../../natfeat/atari_example.c; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9B10C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; lineEnding = 0; name = atari_example_gfa.lst; path = ../../natfeat/atari_example_gfa.lst; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9B20C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = atari_rootsec.h; path = ../../natfeat/atari_rootsec.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9B30C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = debugprintf.cpp; path = ../../natfeat/debugprintf.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9B40C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = debugprintf.h; path = ../../natfeat/debugprintf.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9B50C72435B001FB099 = { children = ( 1754E9B60C72435B001FB099, 1754E9B70C72435B001FB099, 1754E9B80C72435B001FB099, 1754E9B90C72435B001FB099, 1754E9BA0C72435B001FB099, ); isa = PBXGroup; path = doc; refType = 4; sourceTree = ""; }; 1754E9B60C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; lineEnding = 0; name = attic.txt; path = ../../natfeat/doc/attic.txt; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9B70C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; lineEnding = 0; name = call68k.txt; path = ../../natfeat/doc/call68k.txt; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9B80C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; lineEnding = 0; name = native.txt; path = ../../natfeat/doc/native.txt; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9B90C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nf.h; path = ../../natfeat/doc/nf.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9BA0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = sample.c; path = ../../natfeat/doc/sample.c; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9BB0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = ethernet.cpp; path = ../../natfeat/ethernet.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9BC0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = ethernet.h; path = ../../natfeat/ethernet.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9BD0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = fvdidrv_nfapi.h; path = ../../natfeat/fvdidrv_nfapi.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9BE0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = hostfs.cpp; path = ../../natfeat/hostfs.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9BF0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = hostfs.h; path = ../../natfeat/hostfs.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9C00C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nf_base.cpp; path = ../../natfeat/nf_base.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9C10C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nf_base.h; path = ../../natfeat/nf_base.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9C20C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nf_basicset.cpp; path = ../../natfeat/nf_basicset.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9C30C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nf_basicset.h; path = ../../natfeat/nf_basicset.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9C40C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nf_objs.cpp; path = ../../natfeat/nf_objs.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9C50C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nf_objs.h; path = ../../natfeat/nf_objs.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9C60C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nfaudio.cpp; path = ../../natfeat/nfaudio.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9C70C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nfaudio.h; path = ../../natfeat/nfaudio.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9C80C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nfbootstrap.cpp; path = ../../natfeat/nfbootstrap.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9C90C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nfbootstrap.h; path = ../../natfeat/nfbootstrap.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9CA0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nfcdrom.cpp; path = ../../natfeat/nfcdrom.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9CB0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nfcdrom.h; path = ../../natfeat/nfcdrom.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9CC0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nfcdrom_linux.cpp; path = ../../natfeat/nfcdrom_linux.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9CD0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nfcdrom_linux.h; path = ../../natfeat/nfcdrom_linux.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9CE0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nfclipbrd.cpp; path = ../../natfeat/nfclipbrd.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9CF0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nfclipbrd.h; path = ../../natfeat/nfclipbrd.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9D00C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nfclipbrd_nfapi.h; path = ../../natfeat/nfclipbrd_nfapi.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9D10C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nfjpeg.cpp; path = ../../natfeat/nfjpeg.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9D20C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nfjpeg.h; path = ../../natfeat/nfjpeg.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9D30C72435B001FB099 = { children = ( 1754E9D40C72435B001FB099, 1754E9D50C72435B001FB099, 1754E9D60C72435B001FB099, 1754E9D70C72435B001FB099, 1754E9D80C72435B001FB099, 1754E9D90C72435B001FB099, 1754E9DA0C72435B001FB099, 1754E9DB0C72435B001FB099, 1754E9DC0C72435B001FB099, 1754E9DD0C72435B001FB099, 1754E9DE0C72435B001FB099, 1754E9DF0C72435B001FB099, 1754E9E00C72435B001FB099, 1754E9E10C72435B001FB099, 1754E9E20C72435B001FB099, 1754E9E30C72435B001FB099, 1754E9E40C72435B001FB099, 1754E9E50C72435B001FB099, 1754E9E60C72435B001FB099, 1754E9E70C72435C001FB099, ); isa = PBXGroup; path = nfosmesa; refType = 4; sourceTree = ""; }; 1754E9D40C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.script.perl; lineEnding = 0; name = "call-gen.pl"; path = "../../natfeat/nfosmesa/call-gen.pl"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9D50C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = "call-gl.c"; path = "../../natfeat/nfosmesa/call-gl.c"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9D60C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = "call-glext.c"; path = "../../natfeat/nfosmesa/call-glext.c"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9D70C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.script.perl; lineEnding = 0; name = "dispatch-gen.pl"; path = "../../natfeat/nfosmesa/dispatch-gen.pl"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9D80C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = "dispatch-gl.c"; path = "../../natfeat/nfosmesa/dispatch-gl.c"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9D90C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = "dispatch-glext.c"; path = "../../natfeat/nfosmesa/dispatch-glext.c"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9DA0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = "dispatch-osmesa.c"; path = "../../natfeat/nfosmesa/dispatch-osmesa.c"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9DB0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.script.perl; lineEnding = 0; name = "load-gen.pl"; path = "../../natfeat/nfosmesa/load-gen.pl"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9DC0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = "load-gl.c"; path = "../../natfeat/nfosmesa/load-gl.c"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9DD0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = "load-glext.c"; path = "../../natfeat/nfosmesa/load-glext.c"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9DE0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.script.perl; lineEnding = 0; name = "pointers-gen.pl"; path = "../../natfeat/nfosmesa/pointers-gen.pl"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9DF0C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = "pointers-gl.h"; path = "../../natfeat/nfosmesa/pointers-gl.h"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9E00C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = "pointers-glext.h"; path = "../../natfeat/nfosmesa/pointers-glext.h"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9E10C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = "pointers-osmesa.h"; path = "../../natfeat/nfosmesa/pointers-osmesa.h"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9E20C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.script.perl; lineEnding = 0; name = "proto-gen.pl"; path = "../../natfeat/nfosmesa/proto-gen.pl"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9E30C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = "proto-gl.h"; path = "../../natfeat/nfosmesa/proto-gl.h"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9E40C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = "proto-glext.h"; path = "../../natfeat/nfosmesa/proto-glext.h"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9E50C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.script.perl; lineEnding = 0; name = "unload-gen.pl"; path = "../../natfeat/nfosmesa/unload-gen.pl"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9E60C72435B001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = "unload-gl.c"; path = "../../natfeat/nfosmesa/unload-gl.c"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9E70C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = "unload-glext.c"; path = "../../natfeat/nfosmesa/unload-glext.c"; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9E80C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nfosmesa.cpp; path = ../../natfeat/nfosmesa.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9E90C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nfosmesa.h; path = ../../natfeat/nfosmesa.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9EA0C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nfpci.cpp; path = ../../natfeat/nfpci.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9EB0C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nfpci.h; path = ../../natfeat/nfpci.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9EC0C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nfpci_linux.cpp; path = ../../natfeat/nfpci_linux.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9ED0C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nfpci_linux.h; path = ../../natfeat/nfpci_linux.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9EE0C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nfvdi.cpp; path = ../../natfeat/nfvdi.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9EF0C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nfvdi.h; path = ../../natfeat/nfvdi.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9F00C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nfvdi_opengl.cpp; path = ../../natfeat/nfvdi_opengl.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9F10C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nfvdi_opengl.h; path = ../../natfeat/nfvdi_opengl.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9F20C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = nfvdi_soft.cpp; path = ../../natfeat/nfvdi_soft.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9F30C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = nfvdi_soft.h; path = ../../natfeat/nfvdi_soft.h; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9F40C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = xhdi.cpp; path = ../../natfeat/xhdi.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 1754E9F50C72435C001FB099 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = xhdi.h; path = ../../natfeat/xhdi.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E680C7243E0009ABEA7 = { children = ( 17786E690C7243E0009ABEA7, 17786E6A0C7243E0009ABEA7, 17786E6B0C7243E0009ABEA7, 17786E740C7243E0009ABEA7, 17786E750C7243E0009ABEA7, 17786E760C7243E0009ABEA7, 17786E770C7243E0009ABEA7, 17786E780C7243E0009ABEA7, 17786E790C7243E0009ABEA7, 17786E8D0C7243E0009ABEA7, 17786E8E0C7243E0009ABEA7, 17786E8F0C7243E0009ABEA7, 17786E900C7243E0009ABEA7, 17786E910C7243E0009ABEA7, 17786E920C7243E0009ABEA7, 17786E930C7243E0009ABEA7, 17786E940C7243E0009ABEA7, 17786E950C7243E0009ABEA7, 17786E960C7243E0009ABEA7, 17786E970C7243E0009ABEA7, 17786E980C7243E0009ABEA7, ); isa = PBXGroup; name = uae_cpu; path = /Volumes/System/AranymProject/aranym/src/uae_cpu; refType = 0; sourceTree = ""; }; 17786E690C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = aranym_glue.cpp; path = ../../uae_cpu/aranym_glue.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E6A0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = build68k.c; path = ../../uae_cpu/build68k.c; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E6B0C7243E0009ABEA7 = { children = ( 17786E6C0C7243E0009ABEA7, 17786E6D0C7243E0009ABEA7, 17786E6E0C7243E0009ABEA7, 17786E6F0C7243E0009ABEA7, 17786E700C7243E0009ABEA7, 17786E710C7243E0009ABEA7, 17786E720C7243E0009ABEA7, 17786E730C7243E0009ABEA7, ); isa = PBXGroup; path = compiler; refType = 4; sourceTree = ""; }; 17786E6C0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = codegen_x86.cpp; path = ../../uae_cpu/compiler/codegen_x86.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E6D0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = codegen_x86.h; path = ../../uae_cpu/compiler/codegen_x86.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E6E0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = compemu.h; path = ../../uae_cpu/compiler/compemu.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E6F0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = compemu_fpp.cpp; path = ../../uae_cpu/compiler/compemu_fpp.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E700C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = compemu_support.cpp; path = ../../uae_cpu/compiler/compemu_support.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E710C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = flags_x86.h; path = ../../uae_cpu/compiler/flags_x86.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E720C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = gencomp.c; path = ../../uae_cpu/compiler/gencomp.c; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E730C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = test_codegen_x86.cpp; path = ../../uae_cpu/compiler/test_codegen_x86.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E740C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = cpu_emulation.h; path = ../../uae_cpu/cpu_emulation.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E750C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = cpummu.cpp; path = ../../uae_cpu/cpummu.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E760C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = cpummu.h; path = ../../uae_cpu/cpummu.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E770C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = cpuopti.c; path = ../../uae_cpu/cpuopti.c; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E780C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = debug.cpp; path = ../../uae_cpu/debug.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E790C7243E0009ABEA7 = { children = ( 17786E7A0C7243E0009ABEA7, 17786E7B0C7243E0009ABEA7, 17786E7C0C7243E0009ABEA7, 17786E7D0C7243E0009ABEA7, 17786E7E0C7243E0009ABEA7, 17786E7F0C7243E0009ABEA7, 17786E800C7243E0009ABEA7, 17786E810C7243E0009ABEA7, 17786E820C7243E0009ABEA7, 17786E830C7243E0009ABEA7, 17786E840C7243E0009ABEA7, 17786E850C7243E0009ABEA7, 17786E860C7243E0009ABEA7, 17786E870C7243E0009ABEA7, 17786E880C7243E0009ABEA7, 17786E890C7243E0009ABEA7, 17786E8A0C7243E0009ABEA7, 17786E8B0C7243E0009ABEA7, 17786E8C0C7243E0009ABEA7, ); isa = PBXGroup; path = fpu; refType = 4; sourceTree = ""; }; 17786E7A0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = core.h; path = ../../uae_cpu/fpu/core.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E7B0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = exceptions.cpp; path = ../../uae_cpu/fpu/exceptions.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E7C0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = exceptions.h; path = ../../uae_cpu/fpu/exceptions.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E7D0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = flags.cpp; path = ../../uae_cpu/fpu/flags.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E7E0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = flags.h; path = ../../uae_cpu/fpu/flags.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E7F0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = fpu.h; path = ../../uae_cpu/fpu/fpu.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E800C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = fpu_ieee.cpp; path = ../../uae_cpu/fpu/fpu_ieee.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E810C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = fpu_ieee.h; path = ../../uae_cpu/fpu/fpu_ieee.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E820C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = fpu_uae.cpp; path = ../../uae_cpu/fpu/fpu_uae.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E830C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = fpu_uae.h; path = ../../uae_cpu/fpu/fpu_uae.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E840C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = fpu_x86.cpp; path = ../../uae_cpu/fpu/fpu_x86.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E850C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = fpu_x86.h; path = ../../uae_cpu/fpu/fpu_x86.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E860C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = fpu_x86_asm.h; path = ../../uae_cpu/fpu/fpu_x86_asm.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E870C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = impl.h; path = ../../uae_cpu/fpu/impl.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E880C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = mathlib.cpp; path = ../../uae_cpu/fpu/mathlib.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E890C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = mathlib.h; path = ../../uae_cpu/fpu/mathlib.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E8A0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = rounding.cpp; path = ../../uae_cpu/fpu/rounding.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E8B0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = rounding.h; path = ../../uae_cpu/fpu/rounding.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E8C0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = types.h; path = ../../uae_cpu/fpu/types.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E8D0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = gencpu.c; path = ../../uae_cpu/gencpu.c; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E8E0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = m68k.h; path = ../../uae_cpu/m68k.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E8F0C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = memory.cpp; path = ../../uae_cpu/memory.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E900C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = memory.h; path = ../../uae_cpu/memory.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E910C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = newcpu.cpp; path = ../../uae_cpu/newcpu.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E920C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = newcpu.h; path = ../../uae_cpu/newcpu.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E930C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = noflags.h; path = ../../uae_cpu/noflags.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E940C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = readcpu.cpp; path = ../../uae_cpu/readcpu.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E950C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = readcpu.h; path = ../../uae_cpu/readcpu.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E960C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = registers.h; path = ../../uae_cpu/registers.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E970C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = spcflags.h; path = ../../uae_cpu/spcflags.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E980C7243E0009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; name = table68k; path = ../../uae_cpu/table68k; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E990C724402009ABEA7 = { children = ( 17786E9F0C724419009ABEA7, 17786EA50C724419009ABEA7, 17987EDE0C72445B00B5D640, 17786EB30C724419009ABEA7, 17786EB50C724419009ABEA7, 17B847880C724481009D5C48, 17786EBF0C724419009ABEA7, 17786EC60C724419009ABEA7, 17786E9A0C724419009ABEA7, 17786E9B0C724419009ABEA7, 17786E9C0C724419009ABEA7, 17786E9D0C724419009ABEA7, 17786E9E0C724419009ABEA7, 17786EA20C724419009ABEA7, 17786EA30C724419009ABEA7, 17786EA40C724419009ABEA7, 17786EAC0C724419009ABEA7, 17786EAD0C724419009ABEA7, 17786EAE0C724419009ABEA7, 17786EAF0C724419009ABEA7, 17786EB00C724419009ABEA7, 17786EB10C724419009ABEA7, 17786EB20C724419009ABEA7, 17786EBA0C724419009ABEA7, 17786EBB0C724419009ABEA7, 17786EBC0C724419009ABEA7, 17786EBD0C724419009ABEA7, 17786EBE0C724419009ABEA7, 17786EC20C724419009ABEA7, 17786EC30C724419009ABEA7, 17786EC40C724419009ABEA7, 17786EC50C724419009ABEA7, ); isa = PBXGroup; name = Unix; refType = 4; sourceTree = ""; }; 17786E9A0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; lineEnding = 0; name = acinclude.m4; path = ../acinclude.m4; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E9B0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; lineEnding = 0; name = aclocal.m4; path = ../aclocal.m4; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E9C0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = ansidecl.h; path = ../ansidecl.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E9D0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = aratapif.c; path = ../aratapif.c; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E9E0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.script.sh; lineEnding = 0; name = autogen.sh; path = ../autogen.sh; refType = 2; sourceTree = SOURCE_ROOT; }; 17786E9F0C724419009ABEA7 = { children = ( 17786EA00C724419009ABEA7, 17786EA10C724419009ABEA7, ); isa = PBXGroup; name = beos; path = /Volumes/System/AranymProject/aranym/src/Unix/beos; refType = 0; sourceTree = ""; }; 17786EA00C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = cdrom_beos.cpp; path = ../beos/cdrom_beos.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EA10C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = cdrom_beos.h; path = ../beos/cdrom_beos.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EA20C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.script.sh; lineEnding = 0; name = config.guess; path = ../config.guess; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EA30C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; lineEnding = 0; name = config.h.in; path = ../config.h.in; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EA40C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; name = configure.ac; path = ../configure.ac; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EA50C724419009ABEA7 = { children = ( 17786EA60C724419009ABEA7, 17786EA70C724419009ABEA7, 17786EA80C724419009ABEA7, 17786EA90C724419009ABEA7, 17786EAA0C724419009ABEA7, 17786EAB0C724419009ABEA7, ); isa = PBXGroup; name = cygwin; path = /Volumes/System/AranymProject/aranym/src/Unix/cygwin; refType = 0; sourceTree = ""; }; 17786EA60C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = clipbrd_cygwin.cpp; path = ../cygwin/clipbrd_cygwin.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EA70C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = ethernet_cygwin.cpp; path = ../cygwin/ethernet_cygwin.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EA80C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = ethernet_cygwin.h; path = ../cygwin/ethernet_cygwin.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EA90C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = parameters_cygwin.cpp; path = ../cygwin/parameters_cygwin.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EAA0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = sigsegv_cygwin.cpp; path = ../cygwin/sigsegv_cygwin.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EAB0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = tools_cygwin.cpp; path = ../cygwin/tools_cygwin.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EAC0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = getopt_init.c; path = ../getopt_init.c; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EAD0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = getopt.c; path = ../getopt.c; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EAE0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = getopt.h; path = ../getopt.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EAF0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = getopt1.c; path = ../getopt1.c; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EB00C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = host_clock_unix.cpp; path = ../host_clock_unix.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EB10C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = host_filesys_unix.cpp; path = ../host_filesys_unix.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EB20C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.script.sh; name = "install-sh"; path = "../install-sh"; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EB30C724419009ABEA7 = { children = ( 17786EB40C724419009ABEA7, ); isa = PBXGroup; name = irix; path = /Volumes/System/AranymProject/aranym/src/Unix/irix; refType = 0; sourceTree = ""; }; 17786EB40C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = unaligned.c; path = ../irix/unaligned.c; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EB50C724419009ABEA7 = { children = ( 17786EB60C724419009ABEA7, 17786EB70C724419009ABEA7, 17786EB80C724419009ABEA7, 17786EB90C724419009ABEA7, ); isa = PBXGroup; name = linux; path = /Volumes/System/AranymProject/aranym/src/Unix/linux; refType = 0; sourceTree = ""; }; 17786EB60C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = ethernet_linux.cpp; path = ../linux/ethernet_linux.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EB70C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = ethernet_linux.h; path = ../linux/ethernet_linux.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EB80C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = parameters_linux.cpp; path = ../linux/parameters_linux.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EB90C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = sigsegv_linux_x86.cpp; path = ../linux/sigsegv_linux_x86.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EBA0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = main_unix.cpp; path = ../main_unix.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EBB0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; lineEnding = 0; name = Makefile.in; path = ../Makefile.in; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EBC0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.script.sh; name = missing; path = ../missing; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EBD0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.script.sh; name = mkinstalldirs; path = ../mkinstalldirs; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EBE0C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = parameters_unix.cpp; path = ../parameters_unix.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EBF0C724419009ABEA7 = { children = ( 17786EC00C724419009ABEA7, 17786EC10C724419009ABEA7, ); isa = PBXGroup; name = solaris; path = /Volumes/System/AranymProject/aranym/src/Unix/solaris; refType = 0; sourceTree = ""; }; 17786EC00C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = sigsegv_solaris_x86.cpp; path = ../solaris/sigsegv_solaris_x86.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EC10C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.script.sh; name = which_sparc; path = ../solaris/which_sparc; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EC20C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = sysdeps.h; path = ../sysdeps.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EC30C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = vasprintf.c; path = ../vasprintf.c; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EC40C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = vm_alloc.cpp; path = ../vm_alloc.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EC50C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = vm_alloc.h; path = ../vm_alloc.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17786EC60C724419009ABEA7 = { children = ( 17786EC70C724419009ABEA7, ); isa = PBXGroup; name = xbsd; path = /Volumes/System/AranymProject/aranym/src/Unix/xbsd; refType = 0; sourceTree = ""; }; 17786EC70C724419009ABEA7 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = sigsegv_xbsd.cpp; path = ../xbsd/sigsegv_xbsd.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 178478B10C726AD5006A1906 = { fileRef = 17B847BF0C7244D6009D5C48; isa = PBXBuildFile; settings = { }; }; 17987EDE0C72445B00B5D640 = { children = ( 17987EDF0C72445B00B5D640, 17987EE00C72445B00B5D640, 17987EE10C72445B00B5D640, 17987EE20C72445B00B5D640, 17987EE50C72445B00B5D640, 17987EE60C72445B00B5D640, 17987EE90C72445B00B5D640, 17987EEA0C72445B00B5D640, 17987EEC0C72445B00B5D640, 17987EED0C72445B00B5D640, 17987EF00C72445B00B5D640, ); isa = PBXGroup; name = darwin; path = /Volumes/System/AranymProject/aranym/src/Unix/darwin; refType = 0; sourceTree = ""; }; 17987EDF0C72445B00B5D640 = { isa = PBXFileReference; lastKnownFileType = image.icns; name = aranym.icns; path = ../darwin/aranym.icns; refType = 2; sourceTree = SOURCE_ROOT; }; 17987EE00C72445B00B5D640 = { isa = PBXFileReference; lastKnownFileType = image.icns; name = aranym2.icns; path = ../darwin/aranym2.icns; refType = 2; sourceTree = SOURCE_ROOT; }; 17987EE10C72445B00B5D640 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.script.sh; lineEnding = 0; name = aratapif.sh; path = ../darwin/aratapif.sh; refType = 2; sourceTree = SOURCE_ROOT; }; 17987EE20C72445B00B5D640 = { isa = PBXFileReference; lastKnownFileType = image.icns; name = busybee.icns; path = ../darwin/busybee.icns; refType = 2; sourceTree = SOURCE_ROOT; }; 17987EE50C72445B00B5D640 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = ethernet_darwin.cpp; path = ../darwin/ethernet_darwin.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17987EE60C72445B00B5D640 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = ethernet_darwin.h; path = ../darwin/ethernet_darwin.h; refType = 2; sourceTree = SOURCE_ROOT; }; 17987EE90C72445B00B5D640 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.make; name = Makefile; path = ../darwin/Makefile; refType = 2; sourceTree = SOURCE_ROOT; }; 17987EEA0C72445B00B5D640 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; name = parameters_darwin.M; path = ../darwin/parameters_darwin.M; refType = 2; sourceTree = SOURCE_ROOT; }; 17987EEC0C72445B00B5D640 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; lineEnding = 0; name = README_ethernet.txt; path = ../darwin/README_ethernet.txt; refType = 2; sourceTree = SOURCE_ROOT; }; 17987EED0C72445B00B5D640 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; lineEnding = 0; name = sdl.m4; path = ../darwin/sdl.m4; refType = 2; sourceTree = SOURCE_ROOT; }; 17987EF00C72445B00B5D640 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = sigsegv_darwin_x86.cpp; path = ../darwin/sigsegv_darwin_x86.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847880C724481009D5C48 = { children = ( 17B8478B0C724490009D5C48, 17B8478C0C724490009D5C48, 17B8478D0C724490009D5C48, 17B8478E0C724490009D5C48, ); isa = PBXGroup; name = MacOSX; refType = 4; sourceTree = ""; }; 17B8478B0C724490009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = parameters_MacOSX.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B8478C0C724490009D5C48 = { isa = PBXFileReference; lastKnownFileType = text.rtf; lineEnding = 0; path = README_Xcode.rtf; refType = 2; sourceTree = SOURCE_ROOT; }; 17B8478D0C724490009D5C48 = { isa = PBXFileReference; lastKnownFileType = text.rtf; lineEnding = 0; path = README.rtf; refType = 2; sourceTree = SOURCE_ROOT; }; 17B8478E0C724490009D5C48 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SDL.framework; refType = 4; sourceTree = ""; }; 17B847B80C7244D6009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = host.cpp; path = ../../host.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847B90C7244D6009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = dyngl_glext.c; path = ../../dyngl_glext.c; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847BA0C7244D6009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = romdiff.cpp; path = ../../romdiff.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847BB0C7244D6009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = parameters.cpp; path = ../../parameters.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847BC0C7244D6009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = midi_file.cpp; path = ../../midi_file.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847BD0C7244D6009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = midi.cpp; path = ../../midi.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847BE0C7244D6009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = audio_dma.cpp; path = ../../audio_dma.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847BF0C7244D6009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = acia.cpp; path = ../../acia.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847C00C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = template.cpp; path = ../../template.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847C10C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = rtc.cpp; path = ../../rtc.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847C20C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = cdrom.cpp; path = ../../cdrom.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847C30C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = acsifdc.cpp; path = ../../acsifdc.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847C40C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = parallel_x86.cpp; path = ../../parallel_x86.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847C50C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = parallel_parport.cpp; path = ../../parallel_parport.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847C60C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = host_audio.cpp; path = ../../host_audio.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847C70C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = bootos_tos.cpp; path = ../../bootos_tos.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847C80C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = aradata.cpp; path = ../../aradata.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847C90C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = ide.cpp; path = ../../ide.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847CA0C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = blitter.cpp; path = ../../blitter.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847CB0C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = dyngl.c; path = ../../dyngl.c; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847CC0C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = bootos.cpp; path = ../../bootos.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847CD0C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = bootos_emutos.cpp; path = ../../bootos_emutos.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847CE0C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = aranym_exception.cpp; path = ../../aranym_exception.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847CF0C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = host_clock.cpp; path = ../../host_clock.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847D00C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; name = dyngl_gl.c; path = ../../dyngl_gl.c; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847D10C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = parallel_file.cpp; path = ../../parallel_file.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847D20C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = parallel.cpp; path = ../../parallel.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847D30C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = ndebug.cpp; path = ../../ndebug.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847D40C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = ncr5380.cpp; path = ../../ncr5380.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847D50C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = natfeats.cpp; path = ../../natfeats.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847D60C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = ikbd.cpp; path = ../../ikbd.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847D70C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = dsp.cpp; path = ../../dsp.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847D80C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = mfp.cpp; path = ../../mfp.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847D90C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = md5.cpp; path = ../../md5.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847DA0C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = main.cpp; path = ../../main.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847DB0C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = yamaha.cpp; path = ../../yamaha.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847DC0C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = hardware.cpp; path = ../../hardware.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847DD0C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = tools.cpp; path = ../../tools.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847DE0C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = emul_op.cpp; path = ../../emul_op.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847DF0C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = fakeio.cpp; path = ../../fakeio.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847E00C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = audio_crossbar.cpp; path = ../../audio_crossbar.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847E10C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = hostscreen.cpp; path = ../../hostscreen.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847E20C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = mmu.cpp; path = ../../mmu.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847E30C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = midi_sequencer.cpp; path = ../../midi_sequencer.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847E40C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = videl.cpp; path = ../../videl.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847E50C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = identify.cpp; path = ../../identify.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847E60C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = input.cpp; path = ../../input.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847E70C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = dsp_cpu.cpp; path = ../../dsp_cpu.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847E80C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = cfgopts.cpp; path = ../../cfgopts.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847E90C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = bootos_linux.cpp; path = ../../bootos_linux.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847EA0C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = ata.cpp; path = ../../ata.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847EB0C7244D7009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = dsp_disasm.cpp; path = ../../dsp_disasm.cpp; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847F80C72455B009D5C48 = { children = ( 173558A10C7261050058A4BD, 173558A20C72610F0058A4BD, 173558A30C72610F0058A4BD, 173558A40C7261150058A4BD, 173558A50C7261210058A4BD, 173558A60C7261210058A4BD, 173558A70C7261210058A4BD, 173558A80C7261210058A4BD, 173558B10C7261290058A4BD, ); isa = PBXGroup; name = "Generated Sources"; refType = 4; sourceTree = ""; }; 17B847F90C72456C009D5C48 = { children = ( 17B847FA0C72458F009D5C48, 17B847FB0C7245A5009D5C48, 17B847FC0C7245A5009D5C48, 17B847FD0C7245A5009D5C48, 17B847FE0C7245A5009D5C48, 17B847FF0C7245A6009D5C48, 17B848000C7245A6009D5C48, 17B848010C7245A6009D5C48, 17B848020C7245A6009D5C48, 17B848030C7245A6009D5C48, 17B848040C7245BE009D5C48, ); isa = PBXGroup; name = Documentation; refType = 4; sourceTree = ""; }; 17B847FA0C72458F009D5C48 = { isa = PBXFileReference; lastKnownFileType = text.rtf; lineEnding = 0; path = README.rtf; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847FB0C7245A5009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; name = AUTHORS; path = ../../../AUTHORS; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847FC0C7245A5009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; name = BUGS; path = ../../../BUGS; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847FD0C7245A5009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; name = ChangeLog; path = ../../../ChangeLog; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847FE0C7245A5009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; name = COPYING; path = ../../../COPYING; refType = 2; sourceTree = SOURCE_ROOT; }; 17B847FF0C7245A6009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; name = FAQ; path = ../../../FAQ; refType = 2; sourceTree = SOURCE_ROOT; }; 17B848000C7245A6009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; name = INSTALL; path = ../../../INSTALL; refType = 2; sourceTree = SOURCE_ROOT; }; 17B848010C7245A6009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; name = NEWS; path = ../../../NEWS; refType = 2; sourceTree = SOURCE_ROOT; }; 17B848020C7245A6009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; name = README; path = ../../../README; refType = 2; sourceTree = SOURCE_ROOT; }; 17B848030C7245A6009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; name = TODO; path = ../../../TODO; refType = 2; sourceTree = SOURCE_ROOT; }; 17B848040C7245BE009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; name = config; path = ../../../doc/config; refType = 2; sourceTree = SOURCE_ROOT; }; 17B848050C7245D7009D5C48 = { children = ( 17B848A50C72462D009D5C48, 17B848A60C72462D009D5C48, 17B848A80C724639009D5C48, ); isa = PBXGroup; name = Resources; refType = 4; sourceTree = ""; }; 17B848060C7245E4009D5C48 = { children = ( 29B97323FDCFA39411CA2CEA, 172EEC660C7241A500EAB011, ); isa = PBXGroup; name = "Frameworks & Libraries"; refType = 4; sourceTree = ""; }; 17B848A40C724604009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text; name = ChangeLog; path = ../../../ChangeLog; refType = 2; sourceTree = SOURCE_ROOT; }; 17B848A50C72462D009D5C48 = { isa = PBXFileReference; lastKnownFileType = image.icns; name = aranym.icns; path = "../../gui-osx/aranym.icns"; refType = 2; sourceTree = SOURCE_ROOT; }; 17B848A60C72462D009D5C48 = { fileEncoding = 5; isa = PBXFileReference; lastKnownFileType = text.xml; lineEnding = 0; name = Info.plist; path = "../../gui-osx/Info.plist"; refType = 2; sourceTree = SOURCE_ROOT; }; 17B848A80C724639009D5C48 = { children = ( 17B848A90C724639009D5C48, ); isa = PBXVariantGroup; name = aranym.nib; path = "../../gui-osx/English.lproj"; refType = 2; sourceTree = SOURCE_ROOT; }; 17B848A90C724639009D5C48 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = aranym.nib; refType = 4; sourceTree = ""; }; 17B849060C724AD6009D5C48 = { buildActionMask = 2147483647; files = ( 17B849930C725F78009D5C48, 17B849940C725F78009D5C48, ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 17B849070C724AD6009D5C48 = { buildActionMask = 2147483647; files = ( 17B8491C0C7255F9009D5C48, 17B8491D0C7255F9009D5C48, 17B8491E0C7255F9009D5C48, 17B8491F0C7255F9009D5C48, 17B849200C7255F9009D5C48, 17B849210C7255F9009D5C48, 17B849220C7255F9009D5C48, 17B849230C7255F9009D5C48, 17B849240C7255F9009D5C48, 17B849250C7255F9009D5C48, 17B849260C7255F9009D5C48, 17B849270C7255F9009D5C48, 17B849280C7255F9009D5C48, 17B849290C7255F9009D5C48, 17B8492A0C7255F9009D5C48, 17B8492B0C7255F9009D5C48, 17B8492C0C7255F9009D5C48, 17B8492D0C7255F9009D5C48, 17B8492E0C7255F9009D5C48, 17B8492F0C7255F9009D5C48, 17B849300C7255F9009D5C48, 17B849310C7255F9009D5C48, 17B849320C7255F9009D5C48, 17B849330C7255F9009D5C48, 17B849340C7255F9009D5C48, 17B849350C7255F9009D5C48, 17B849360C7255F9009D5C48, 17B849370C7255F9009D5C48, 17B849380C7255F9009D5C48, 17B849390C7255F9009D5C48, 17B8493A0C7255F9009D5C48, 17B8493B0C7255F9009D5C48, 17B8493C0C7255F9009D5C48, 17B8493D0C7255F9009D5C48, 17B8493E0C7255F9009D5C48, 17B8493F0C7255F9009D5C48, 17B849400C7255F9009D5C48, 17B849410C7255F9009D5C48, 17B849420C7255F9009D5C48, 17B849430C7255F9009D5C48, 17B849440C7255F9009D5C48, 17B849450C7255F9009D5C48, 17B849460C7255F9009D5C48, 17B849470C7255F9009D5C48, 17B849480C7255F9009D5C48, 17B849490C7255F9009D5C48, 17B8494A0C7255F9009D5C48, 17B8494B0C7255F9009D5C48, 17B8494C0C7255F9009D5C48, 17B8494D0C7255F9009D5C48, 17B8494E0C7255F9009D5C48, 17B8494F0C7255F9009D5C48, 17B849500C7255F9009D5C48, 17B849510C7255F9009D5C48, 17B849520C7255F9009D5C48, 17B849530C7255F9009D5C48, 17B849540C7255F9009D5C48, 17B849550C7255F9009D5C48, 17B849560C7255F9009D5C48, 17B849570C7255F9009D5C48, 17B849580C7255F9009D5C48, 17B849590C7255F9009D5C48, 17B8495A0C7255F9009D5C48, 17B8495B0C7255F9009D5C48, 17B8495C0C7255F9009D5C48, 17B8495D0C7255F9009D5C48, 17B8495E0C7255F9009D5C48, 17B8495F0C7255F9009D5C48, 17B849600C7255F9009D5C48, 17B849610C7255F9009D5C48, 17B849620C7255F9009D5C48, 17B849630C7255F9009D5C48, 17B849640C7255F9009D5C48, 17B849650C7255F9009D5C48, 17B849660C7255F9009D5C48, 17B849670C7255F9009D5C48, 17B849680C7255F9009D5C48, 17B849690C7255F9009D5C48, 17B8496A0C7255F9009D5C48, 17B8496B0C7255F9009D5C48, 17B8496C0C7255F9009D5C48, 17B849880C725E8A009D5C48, 173558AD0C7261210058A4BD, 173558AF0C7261210058A4BD, 173558B00C7261210058A4BD, 178478B10C726AD5006A1906, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 17B849080C724AD6009D5C48 = { buildActionMask = 2147483647; files = ( 17B849790C725E25009D5C48, 17B8497B0C725E3C009D5C48, 17B8497C0C725E3D009D5C48, 17B8497D0C725E3D009D5C48, 17B8497E0C725E3E009D5C48, 17B8497F0C725E3E009D5C48, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 17B849090C724AD6009D5C48 = { buildPhases = ( 17B8490D0C724CF1009D5C48, 17B849140C7250C8009D5C48, 17B849070C724AD6009D5C48, 17B849060C724AD6009D5C48, 17B849080C724AD6009D5C48, 17B8498F0C725F2A009D5C48, ); buildRules = ( ); buildSettings = { COMPILE_DEFS = "$(COMPILE_DEFS_COMMON) DIRECT_ADDRESSING FPU_UAE"; CONFIGURE_OPTIONS = "$(CONFIGURE_OPTIONS_COMMON) --enable-fpe=uae --disable-fullmmu"; INFOPLIST_FILE = "../../gui-osx/Info.plist"; PRODUCT_NAME = MacAranym; }; dependencies = ( ); isa = PBXNativeTarget; name = MacAranym; productName = MacAranym2; productReference = 17B8490A0C724AD6009D5C48; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable MacAranym2 CFBundleIdentifier com.yourcompany.MacAranym2 CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType APPL CFBundleSignature ???? CFBundleVersion 1.0 "; productType = "com.apple.product-type.application"; }; 17B8490A0C724AD6009D5C48 = { explicitFileType = wrapper.application; includeInIndex = 0; isa = PBXFileReference; path = MacAranym.app; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 17B8490D0C724CF1009D5C48 = { buildActionMask = 2147483647; files = ( ); inputPaths = ( ); isa = PBXShellScriptBuildPhase; outputPaths = ( "$(DERIVED_FILES_DIR)/Makefile", "$(DERIVED_FILES_DIR)/config.h", "$(DERIVED_FILES_DIR)/config_i386.h", "$(DERIVED_FILES_DIR)/config_ppc.h", "$(TARGET_TEMP_DIR)/configure_options", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "#################### CONFIGURE SYSTEM ################\n# Check if configure script has to be run\necho \"Checking configure options: $CONFIGURE_OPTIONS\"\nOPTIONS_FILE=$TARGET_TEMP_DIR/configure_options\nFILE_CONTENT=`cat \"$OPTIONS_FILE\" 2>/dev/null`\nif [ \\( -f \"$OPTIONS_FILE\" \\) -a \\( \"$FILE_CONTENT\" == \"$CONFIGURE_OPTIONS\" \\) ]; then\n\techo \"config.h still valid\"\t\n\texit 0\nfi\n\necho \"Running configure script\"\n\n# Check if PROJECT_DIR variable is set (Xcode 2.x)\nif [ -z \"$PROJECT_DIR\" ]; then\n\techo '$PROJECT_DIR was not declared. Setting variable:'\n\told_dir=$PWD\n\tcd \"$BUILD_DIR/..\"\n\texport PROJECT_DIR=\"$PWD\"\n\tcd $old_dir\n\techo \"\t\\$PROJECT_DIR = $PROJECT_DIR\"\n\techo\nfi\n\n# Make sure makedepend can be found\nexport PATH=\"$PATH:/usr/X11R6/bin\"\n\n# Make sure SDL.m4 can be found\nexport ACLOCAL_FLAGS=\"-I $PROJECT_DIR/../darwin\"\n\n# Make sure SDL.framework can be found\nexport LDFLAGS=-F$PROJECT_DIR\nexport DYLD_FRAMEWORK_PATH=$PROJECT_DIR\n\nmkdir -p \"$DERIVED_FILES_DIR\"\n\n\ncd \"$SOURCE_DIR/Unix\"\n\n# Remove old files\nrm -rf Makefile autom4te.cache aclocal.m4 config.h config.log 2>/dev/null\n\n# Configure system for all build architectures\nif [ -f autogen.sh ]; then\n\trm -f config.h.in 2>/dev/null\n\tCONFIG_EXEC=./autogen.sh\nelse\n\tCONFIG_EXEC=./configure\nfi\n\"$CONFIG_EXEC\" $CONFIGURE_OPTIONS || exit 1\n\n# Modify config.h\nif [ $NATIVE_ARCH == ppc ]; then\n\tcat config.h | sed 's/CPU_TYPE \"powerpc\"/CPU_TYPE \"i386\"/' \\\n\t\t| sed 's/#define WORDS_BIGENDIAN 1/\\/* #undef WORDS_BIGENDIAN *\\//' > config_i386.h\n\t# 10.3.9 compatibility:\n\tcat config.h | sed 's/#define HAVE_SYS_STATVFS_H 1/\\/* #undef HAVE_SYS_STATVFS_H *\\//' > config_ppc.h\n\trm config.h\nelse\n\tcat config.h | sed 's/CPU_TYPE \"i386\"/CPU_TYPE \"powerpc\"/' \\\n\t\t| sed 's/\\/* #undef WORDS_BIGENDIAN *\\//#define WORDS_BIGENDIAN 1/' \\\n\t\t| sed 's/#define HAVE_SYS_STATVFS_H 1/\\/* #undef HAVE_SYS_STATVFS_H *\\//' > config_ppc.h\n\tmv config.h config_$NATIVE_ARCH.h\nfi\n\ncat << EOF > config.h\n#ifdef CPU_i386\n#include \"config_i386.h\"\n#endif\n#ifdef CPU_powerpc\n#include \"config_ppc.h\"\n#endif\nEOF\n\nmv config.h config_ppc.h config_i386.h Makefile \"$DERIVED_FILES_DIR\"\n\n# Remember configure options for next script execution\nmkdir -p \"$TARGET_TEMP_DIR\" 2>/dev/null\necho \"$CONFIGURE_OPTIONS\" > \"$OPTIONS_FILE\"\nexit 0\n"; }; 17B849140C7250C8009D5C48 = { buildActionMask = 2147483647; files = ( ); inputPaths = ( "$(SOURCE_DIR)/uae_cpu/build68k.c", "$(SOURCE_DIR)/uae_cpu/table68k", "$(DERIVED_FILES_DIR)/config_i386.h", "$(DERIVED_FILES_DIR)/config_ppc.h", ); isa = PBXShellScriptBuildPhase; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "########################## BUILD CPU EMULATION CORE ##########################\n\nmkdir -p \"$DERIVED_FILES_DIR\" && cd \"$DERIVED_FILES_DIR\" || exit 1\nTRANSFERRED=`rsync -pogt --stats cpudefs.cpp cpuemu.cpp cpuemu_*.cpp cputbl.h cpustbl.cpp Makefile config*.h \"$PROJECT_TEMP_DIR\" 2>/dev/null 1>rsync_output.txt`\nRET=$?\nTRANSFERRED=`cat rsync_output.txt| grep \"transferred:\" | awk '{print $5}'`\nrm rsync_output.txt\necho \"$TRANSFERRED files transferred. (Return code $RET)\"\nif [ \"$RET\" -eq 0 -a \"$TRANSFERRED\" -eq 0 ]; then\n\texit 0\nfi\n\necho ; echo \"Building CPU definition...\"\n\ncd \"$TEMP_FILES_DIR\" \ngcc -o build68k \"$SOURCE_DIR/uae_cpu/build68k.c\" && \\\n\t(./build68k < \"$SOURCE_DIR/uae_cpu/table68k\" > \"$DERIVED_FILES_DIR/cpudefs.cpp\") || exit 1\n\nfor CURRENT_ARCH in $ARCHS ; do\n\techo ; echo \"Building CPU emulation core... $CURRENT_ARCH\"\n\tg++ `echo \"-DCPU_$CURRENT_ARCH\" | sed s/ppc/powerpc/` \"-I$DERIVED_FILES_DIR\" \"-I$SOURCE_DIR/Unix\" \"-I$SOURCE_DIR/uae_cpu\" -o gencpu \\\n\t\t\"$SOURCE_DIR/uae_cpu/gencpu.c\" \"$SOURCE_DIR/uae_cpu/readcpu.cpp\" \"$DERIVED_FILES_DIR/cpudefs.cpp\" && \\\n\t\t./gencpu || exit 1\n\tmv cpuemu.cpp \"$DERIVED_FILES_DIR/cpuemu_$CURRENT_ARCH.cpp\"\ndone\nmv cpustbl.cpp cputbl.h \"$DERIVED_FILES_DIR\" || exit 1\n\ncat << EOF > \"$DERIVED_FILES_DIR/cpuemu.cpp\"\n#ifdef CPU_i386\n#include \"cpuemu_i386.cpp\"\n#endif\n#ifdef CPU_powerpc\n#include \"cpuemu_ppc.cpp\"\n#endif\nEOF\n\ncd \"$DERIVED_FILES_DIR\"\nmkdir -p \"$PROJECT_TEMP_DIR\"\nrsync -pogt cpudefs.cpp cpuemu.cpp cpuemu_*.cpp cputbl.h cpustbl.cpp Makefile config*.h \"$PROJECT_TEMP_DIR\"\n"; }; 17B8491C0C7255F9009D5C48 = { fileRef = 17B847C30C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B8491D0C7255F9009D5C48 = { fileRef = 17B847C80C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B8491E0C7255F9009D5C48 = { fileRef = 17B847CE0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B8491F0C7255F9009D5C48 = { fileRef = 17786E690C7243E0009ABEA7; isa = PBXBuildFile; settings = { }; }; 17B849200C7255F9009D5C48 = { fileRef = 17B847EA0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849210C7255F9009D5C48 = { fileRef = 17B847E00C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849220C7255F9009D5C48 = { fileRef = 17B847BE0C7244D6009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849230C7255F9009D5C48 = { fileRef = 17B847CA0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849240C7255F9009D5C48 = { fileRef = 17B847CC0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849250C7255F9009D5C48 = { fileRef = 17B847CD0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849260C7255F9009D5C48 = { fileRef = 17B847E90C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849270C7255F9009D5C48 = { fileRef = 17B847C70C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849280C7255F9009D5C48 = { fileRef = 17B847C20C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849290C7255F9009D5C48 = { fileRef = 17B847E80C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B8492A0C7255F9009D5C48 = { fileRef = 17786E750C7243E0009ABEA7; isa = PBXBuildFile; settings = { }; }; 17B8492B0C7255F9009D5C48 = { fileRef = 17786E780C7243E0009ABEA7; isa = PBXBuildFile; settings = { }; }; 17B8492C0C7255F9009D5C48 = { fileRef = 1754E9B30C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 17B8492D0C7255F9009D5C48 = { fileRef = 1754E9A10C724346001FB099; isa = PBXBuildFile; settings = { }; }; 17B8492E0C7255F9009D5C48 = { fileRef = 1754E9A20C724346001FB099; isa = PBXBuildFile; settings = { }; }; 17B8492F0C7255F9009D5C48 = { fileRef = 1754E9A30C724346001FB099; isa = PBXBuildFile; settings = { }; }; 17B849300C7255F9009D5C48 = { fileRef = 1754E9A40C724346001FB099; isa = PBXBuildFile; settings = { }; }; 17B849310C7255F9009D5C48 = { fileRef = 1754E9A50C724346001FB099; isa = PBXBuildFile; settings = { }; }; 17B849320C7255F9009D5C48 = { fileRef = 1754E9A60C724346001FB099; isa = PBXBuildFile; settings = { }; }; 17B849330C7255F9009D5C48 = { fileRef = 1754E9A70C724346001FB099; isa = PBXBuildFile; settings = { }; }; 17B849340C7255F9009D5C48 = { fileRef = 1754E9A80C724346001FB099; isa = PBXBuildFile; settings = { }; }; 17B849350C7255F9009D5C48 = { fileRef = 1754E9A90C724346001FB099; isa = PBXBuildFile; settings = { }; }; 17B849360C7255F9009D5C48 = { fileRef = 17B847D70C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849370C7255F9009D5C48 = { fileRef = 17B847E70C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849380C7255F9009D5C48 = { fileRef = 17B847DE0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849390C7255F9009D5C48 = { fileRef = 1754E9BB0C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 17B8493A0C7255F9009D5C48 = { fileRef = 17987EE50C72445B00B5D640; isa = PBXBuildFile; settings = { }; }; 17B8493B0C7255F9009D5C48 = { fileRef = 17B847DF0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B8493C0C7255F9009D5C48 = { fileRef = 1754E9AA0C724346001FB099; isa = PBXBuildFile; settings = { }; }; 17B8493D0C7255F9009D5C48 = { fileRef = 17786E820C7243E0009ABEA7; isa = PBXBuildFile; settings = { }; }; 17B8493E0C7255F9009D5C48 = { fileRef = 17B847DC0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B8493F0C7255F9009D5C48 = { fileRef = 17B847B80C7244D6009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849400C7255F9009D5C48 = { fileRef = 17B847C60C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849410C7255F9009D5C48 = { fileRef = 17B847CF0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849420C7255F9009D5C48 = { fileRef = 17786EB00C724419009ABEA7; isa = PBXBuildFile; settings = { }; }; 17B849430C7255F9009D5C48 = { fileRef = 1754E9BE0C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 17B849440C7255F9009D5C48 = { fileRef = 17B847E10C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849450C7255F9009D5C48 = { fileRef = 17B847C90C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849460C7255F9009D5C48 = { fileRef = 17B847E50C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849470C7255F9009D5C48 = { fileRef = 17B847D60C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849480C7255F9009D5C48 = { fileRef = 17B847E60C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849490C7255F9009D5C48 = { fileRef = 17B847DA0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B8494A0C7255F9009D5C48 = { fileRef = 17786EBA0C724419009ABEA7; isa = PBXBuildFile; settings = { }; }; 17B8494B0C7255F9009D5C48 = { fileRef = 17B847D90C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B8494C0C7255F9009D5C48 = { fileRef = 17786E8F0C7243E0009ABEA7; isa = PBXBuildFile; settings = { }; }; 17B8494D0C7255F9009D5C48 = { fileRef = 17B847D80C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B8494E0C7255F9009D5C48 = { fileRef = 17B847BD0C7244D6009D5C48; isa = PBXBuildFile; settings = { }; }; 17B8494F0C7255F9009D5C48 = { fileRef = 17B847BC0C7244D6009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849500C7255F9009D5C48 = { fileRef = 17B847E20C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849510C7255F9009D5C48 = { fileRef = 17B847D50C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849520C7255F9009D5C48 = { fileRef = 17B847D40C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849530C7255F9009D5C48 = { fileRef = 17B847D30C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849540C7255F9009D5C48 = { fileRef = 17786E910C7243E0009ABEA7; isa = PBXBuildFile; settings = { }; }; 17B849550C7255F9009D5C48 = { fileRef = 1754E9C00C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 17B849560C7255F9009D5C48 = { fileRef = 1754E9C20C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 17B849570C7255F9009D5C48 = { fileRef = 1754E9C40C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 17B849580C7255F9009D5C48 = { fileRef = 1754E9C60C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 17B849590C7255F9009D5C48 = { fileRef = 1754E9C80C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 17B8495A0C7255F9009D5C48 = { fileRef = 1754E9CA0C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 17B8495B0C7255F9009D5C48 = { fileRef = 1754E9CE0C72435B001FB099; isa = PBXBuildFile; settings = { }; }; 17B8495C0C7255F9009D5C48 = { fileRef = 1754E9EE0C72435C001FB099; isa = PBXBuildFile; settings = { }; }; 17B8495D0C7255F9009D5C48 = { fileRef = 1754E9F00C72435C001FB099; isa = PBXBuildFile; settings = { }; }; 17B8495E0C7255F9009D5C48 = { fileRef = 1754E9F20C72435C001FB099; isa = PBXBuildFile; settings = { }; }; 17B8495F0C7255F9009D5C48 = { fileRef = 17B847D20C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849600C7255F9009D5C48 = { fileRef = 17B847D10C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849610C7255F9009D5C48 = { fileRef = 17B847BB0C7244D6009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849620C7255F9009D5C48 = { fileRef = 17B8478B0C724490009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849630C7255F9009D5C48 = { fileRef = 17786E940C7243E0009ABEA7; isa = PBXBuildFile; settings = { }; }; 17B849640C7255F9009D5C48 = { fileRef = 17B847BA0C7244D6009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849650C7255F9009D5C48 = { fileRef = 17B847C10C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849660C7255F9009D5C48 = { fileRef = 1754E9AD0C724346001FB099; isa = PBXBuildFile; settings = { }; }; 17B849670C7255F9009D5C48 = { fileRef = 172EF0D00C7242EE00EAB011; isa = PBXBuildFile; settings = { }; }; 17B849680C7255F9009D5C48 = { fileRef = 17B847DD0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849690C7255F9009D5C48 = { fileRef = 17B847E40C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B8496A0C7255F9009D5C48 = { fileRef = 17786EC40C724419009ABEA7; isa = PBXBuildFile; settings = { }; }; 17B8496B0C7255F9009D5C48 = { fileRef = 1754E9F40C72435C001FB099; isa = PBXBuildFile; settings = { }; }; 17B8496C0C7255F9009D5C48 = { fileRef = 17B847DB0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849790C725E25009D5C48 = { fileRef = 172EEC660C7241A500EAB011; isa = PBXBuildFile; settings = { }; }; 17B8497A0C725E30009D5C48 = { fileRef = 172EEC660C7241A500EAB011; isa = PBXBuildFile; settings = { }; }; 17B8497B0C725E3C009D5C48 = { fileRef = 29B97324FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 17B8497C0C725E3D009D5C48 = { fileRef = 1058C7A1FEA54F0111CA2CBB; isa = PBXBuildFile; settings = { }; }; 17B8497D0C725E3D009D5C48 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 17B8497E0C725E3E009D5C48 = { fileRef = F580C4E205A71FBF01DAC342; isa = PBXBuildFile; settings = { }; }; 17B8497F0C725E3E009D5C48 = { fileRef = F5A145AF05A7EA78017C0BEF; isa = PBXBuildFile; settings = { }; }; 17B849880C725E8A009D5C48 = { fileRef = 17B847CB0C7244D7009D5C48; isa = PBXBuildFile; settings = { }; }; 17B8498F0C725F2A009D5C48 = { buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( 17B8497A0C725E30009D5C48, ); isa = PBXCopyFilesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 17B849930C725F78009D5C48 = { fileRef = 17B848A80C724639009D5C48; isa = PBXBuildFile; settings = { }; }; 17B849940C725F78009D5C48 = { fileRef = 17B848A50C72462D009D5C48; isa = PBXBuildFile; settings = { }; }; //170 //171 //172 //173 //174 //190 //191 //192 //193 //194 19C28FACFE9D520D11CA2CBB = { children = ( 17B8490A0C724AD6009D5C48, 1715C87C0C725FC7000A9FC0, ); isa = PBXGroup; name = Products; refType = 4; sourceTree = ""; }; //190 //191 //192 //193 //194 //290 //291 //292 //293 //294 29B97313FDCFA39411CA2CEA = { buildSettings = { }; buildStyles = ( 4A9504CDFFE6A4B311CA0CBA, 173558D30C7265FC0058A4BD, ); hasScannedForEncodings = 1; isa = PBXProject; knownRegions = ( English, Japanese, French, German, Italian, ); mainGroup = 29B97314FDCFA39411CA2CEA; projectDirPath = ""; targets = ( 17B849090C724AD6009D5C48, 1715C8160C725FC7000A9FC0, 173558B80C7264020058A4BD, ); }; 29B97314FDCFA39411CA2CEA = { children = ( 17B847F90C72456C009D5C48, 1754E9630C724311001FB099, 17B847F80C72455B009D5C48, 17B848050C7245D7009D5C48, 17B848060C7245E4009D5C48, 19C28FACFE9D520D11CA2CBB, 17B848A40C724604009D5C48, ); isa = PBXGroup; name = Aranym; path = ""; refType = 4; sourceTree = ""; }; 29B97323FDCFA39411CA2CEA = { children = ( 29B97324FDCFA39411CA2CEA, 29B97325FDCFA39411CA2CEA, F5A145AF05A7EA78017C0BEF, F580C4E205A71FBF01DAC342, 1058C7A1FEA54F0111CA2CBB, ); isa = PBXGroup; name = "Linked Frameworks"; path = ""; refType = 4; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; refType = 0; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; refType = 0; sourceTree = ""; }; //290 //291 //292 //293 //294 //4A0 //4A1 //4A2 //4A3 //4A4 4A9504CDFFE6A4B311CA0CBA = { buildSettings = { COMPILE_DEFS_COMMON = "HAVE_CONFIG_H OS_darwin CPU_powerpc MACOSX_support DIRSEPARATOR=\\\"/\\\" _GNU_SOURCE ENABLE_EXCLUSIVE_SPCFLAGS _REENTRANT _THREAD_SAFE ENABLE_VBL_UPDATES ENABLE_TUNTAP"; CONFIGURE_OPTIONS_COMMON = "--with-classicconfig --enable-opengl --enable-ethernet=no --enable-vblupdates=yes"; CURRENT_PROJECT_VERSION = "0.9.5 beta+cvs"; FRAMEWORK_SEARCH_PATHS = ". \"$(SRCROOT)\""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 3; GCC_PREPROCESSOR_DEFINITIONS = "$(COMPILE_DEFS)"; HEADER_SEARCH_PATHS = SDL.framework/Headers; LIBRARY_STYLE = DYNAMIC; MACOSX_DEPLOYMENT_TARGET = 10.3; OTHER_CPLUSPLUSFLAGS = "-I$(SOURCE_DIR)/darwin -I$(PROJECT_TEMP_DIR) -I$(SOURCE_DIR)/include -I$(srcdir) $-I(SOURCE_DIR)/natfeat -I$(SOURCE_DIR)/uae_cpu -I$(SOURCE_DIR)/gui-sdl"; PREBINDING = NO; SOURCE_DIR = "$(SOURCE_ROOT)/../.."; }; isa = PBXBuildStyle; name = Release; }; //4A0 //4A1 //4A2 //4A3 //4A4 //F50 //F51 //F52 //F53 //F54 F580C4E205A71FBF01DAC342 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; refType = 0; sourceTree = ""; }; F5A145AF05A7EA78017C0BEF = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; refType = 0; sourceTree = ""; }; }; rootObject = 29B97313FDCFA39411CA2CEA; } aranym-1.1.0/src/Makefile.am0000664000175000017500000003750013454637621014031 0ustar joyjoySUBDIRS = uae_cpu AM_CPPFLAGS = $(DEFINES) \ -I$(srcdir)/include \ -I$(srcdir)/Unix \ -I$(builddir) \ -I$(srcdir)/natfeat \ -I$(builddir)/uae_cpu \ -I$(srcdir)/uae_cpu if OS_TYPE_beos AM_CPPFLAGS += -I$(srcdir)/Unix/beos endif if SDL_GUI AM_CPPFLAGS += -I$(srcdir)/gui-sdl endif CFLAGS_NOWARN = $(DBGSP) $(ARCHFLAGS) $(SDL_CFLAGS) $(ZLIB_CFLAGS) $(DISASM_CFLAGS) AM_CFLAGS = $(CFLAGS_NOWARN) $(WFLAGS) AM_CXXFLAGS = $(CFLAGS_NOWARN) $(WFLAGS) AM_LDFLAGS = $(ARCHFLAGS) LIBS = @LIBS@ $(SDL_LIBS) $(JPEG_LIBS) $(ZLIB_LIBS) $(DISASM_LIBS) BEOS_RESOURCES = $(srcdir)/Unix/beos/aranym.rdef BUNDLE_RESOURCES = \ $(srcdir)/Unix/darwin/busybee.icns \ $(top_srcdir)/data/logo.bmp BUNDLE_LOCALIZATON_FOLDERS = \ $(srcdir)/Unix/darwin/*.lproj BUNDLE_CONTENTS = \ $(srcdir)/Unix/darwin/Info.plist \ $(srcdir)/Unix/darwin/PkgInfo BUNDLE_FRAMEWORKS = /Library/Frameworks/SDL.framework /Library/Frameworks/SDL_image.framework APP = aranym APP_ARCH = aranym_$(ARCH) APP_STATIC = aranym_static APP_LIB = libaranym.a APP_BUNDLE = ARAnyM.app bin_PROGRAMS = aranym noinst_LIBRARIES = libaranym.a if NEED_ARATAPIF bin_PROGRAMS += aratapif endif if OS_TYPE_darwin bin_SCRIPTS = $(APP_BUNDLE) endif EXTRA_DIST = ## Files aranym_SOURCES = \ Unix/sysdeps.h \ main.cpp \ Unix/main_unix.cpp \ Unix/vm_alloc.cpp Unix/vm_alloc.h \ Unix/host_clock_unix.cpp \ Unix/vasprintf.c Unix/ansidecl.h \ acia.cpp \ acsifdc.cpp \ adler32.c \ aradata.cpp \ aranym_exception.cpp \ ata.cpp \ audio_conv.cpp \ audio_dma.cpp \ audio_crossbar.cpp \ blitter.cpp \ bootos.cpp \ bootos_tos.cpp \ bootos_emutos.cpp \ bootos_linux.cpp \ cdrom.cpp \ cfgopts.cpp \ dirty_rects.cpp \ dsp.cpp \ disasm/disasm-builtin.h \ disasm/disasm-bfd.h \ disasm/disasm-glue.cpp \ disasm/disasm-builtin.cpp \ disasm/disasm-x86.cpp \ disasm/disasm-arm.cpp \ disasm/disasm-arm.h \ disasm/arm.h \ disasm/disasm-arm-builtin.c \ disasm/disasm-x86.h \ disasm/i386.h \ disasm/i386-opc.h \ disasm/i386-dis-evex.h \ disasm/disasm-x86-builtin.c \ emul_op.cpp \ glenums.c \ natfeats.cpp \ fakeio.cpp \ hardware.cpp \ host.cpp \ host_audio.cpp \ host_clock.cpp \ hostscreen.cpp \ hostscreen_opengl.cpp \ host_surface.cpp \ host_surface_opengl.cpp \ ide.cpp \ identify.cpp \ ikbd.cpp \ input.cpp \ joypads.cpp \ logo.cpp \ sdl_bmp.cpp \ md5.cpp \ mfp.cpp \ midi.cpp \ midi_file.cpp \ mmu.cpp \ ndebug.cpp \ ncr5380.cpp \ parallel.cpp \ parallel_file.cpp \ parameters.cpp \ romdiff.cpp \ rtc.cpp \ serial.cpp \ scc.cpp \ tools.cpp \ videl.cpp \ videl_zoom.cpp \ yamaha.cpp \ natfeat/nf_base.cpp natfeat/nf_base.h \ natfeat/nf_objs.cpp natfeat/nf_objs.h \ natfeat/xhdi.cpp natfeat/xhdi.h natfeat/atari_rootsec.h \ natfeat/nfaudio.cpp natfeat/nfaudio.h \ natfeat/nfbootstrap.cpp natfeat/nfbootstrap.h \ natfeat/nf_basicset.cpp natfeat/nf_basicset.h \ natfeat/debugprintf.cpp natfeat/debugprintf.h \ natfeat/maptab.cpp natfeat/maptab.h \ natfeat/nf_scsidrv.cpp natfeat/nf_scsidrv.h \ natfeat/nf_hostexec.cpp natfeat/nf_hostexec.h \ uae_cpu/cpu_emulation.h \ uae_cpu/aranym_glue.cpp \ uae_cpu/memory.cpp uae_cpu/memory-uae.h \ uae_cpu/newcpu.cpp uae_cpu/newcpu.h uae_cpu/noflags.h uae_cpu/registers.h uae_cpu/spcflags.h \ uae_cpu/readcpua.cpp uae_cpu/readcpu.h \ uae_cpu/cpummu.cpp uae_cpu/cpummu.h \ uae_cpu/fpu/core.h \ uae_cpu/fpu/fpu.h \ uae_cpu/fpu/impl.h \ uae_cpu/fpu/types.h \ $(empty) # these are included elsehere and not compiled separately EXTRA_DIST += \ uae_cpu/fpu/exceptions.cpp uae_cpu/fpu/exceptions.h \ uae_cpu/fpu/flags.cpp uae_cpu/fpu/flags.h \ uae_cpu/fpu/mathlib.cpp uae_cpu/fpu/mathlib.h \ uae_cpu/fpu/rounding.cpp uae_cpu/fpu/rounding.h \ $(empty) # # put the objects of generated sources in a convenience library, # so that we can define separate CFLAGS for them # (we want to omit the warning flags) # libaranym_a_SOURCES = \ uae_cpu/cpudefsa.cpp \ uae_cpu/cpustbla.cpp \ uae_cpu/cpufunctbla.cpp \ uae_cpu/cpuemu1.cpp \ uae_cpu/cpuemu2.cpp \ uae_cpu/cpuemu3.cpp \ uae_cpu/cpuemu4.cpp \ uae_cpu/cpuemu5.cpp \ uae_cpu/cpuemu6.cpp \ uae_cpu/cpuemu7.cpp \ uae_cpu/cpuemu8.cpp \ $(empty) libaranym_a_CFLAGS = $(CFLAGS_NOWARN) libaranym_a_CXXFLAGS = $(CFLAGS_NOWARN) aranym_LDADD = libaranym.a if SDL_GUI aranym_SOURCES += \ gui-sdl/sdlgui.cpp gui-sdl/sdlgui.h \ gui-sdl/sdlgui.rsc gui-sdl/sdlgui.rso gui-sdl/sdlgui.sdl \ gui-sdl/dialog.cpp gui-sdl/dialog.h \ gui-sdl/file.cpp gui-sdl/file.h \ gui-sdl/dlgMain.cpp gui-sdl/dlgMain.h \ gui-sdl/font.h gui-sdl/aranym.fnt \ gui-sdl/dlgAlert.cpp gui-sdl/dlgAlert.h \ gui-sdl/dlgDisk.cpp gui-sdl/dlgDisk.h \ gui-sdl/dlgFileSelect.cpp gui-sdl/dlgFileSelect.h \ gui-sdl/dlgHostfs.cpp gui-sdl/dlgHostfs.h \ gui-sdl/dlgHotkeys.cpp gui-sdl/dlgHotkeys.h \ gui-sdl/dlgKeyboard.cpp gui-sdl/dlgKeyboard.h \ gui-sdl/dlgKeypress.cpp gui-sdl/dlgKeypress.h \ gui-sdl/dlgNetwork.cpp gui-sdl/dlgNetwork.h \ gui-sdl/dlgOs.cpp gui-sdl/dlgOs.h \ gui-sdl/dlgPartition.cpp gui-sdl/dlgPartition.h \ gui-sdl/dlgUsb.cpp gui-sdl/dlgUsb.h \ gui-sdl/dlgVideo.cpp gui-sdl/dlgVideo.h \ $(empty) endif if NEED_GETOPT aranym_SOURCES += Unix/getopt_init.c Unix/getopt1.c Unix/getopt.c Unix/getopt.h endif if USE_DEBUGGER aranym_SOURCES += uae_cpu/debug.cpp endif if CPU_TYPE_x86 WIN32_RC_OBJS = aranym_rc_i386.o else if CPU_TYPE_x86_64 WIN32_RC_OBJS = aranym_rc_x86_64.o else endif endif if OS_TYPE_linux aranym_SOURCES += midi_sequencer.cpp Unix/linux/parameters_linux.cpp Unix/linux/ethernet_linux.cpp Unix/linux/ethernet_linux.h Unix/host_filesys_unix.cpp else if OS_TYPE_cygwin aranym_SOURCES += Unix/cygwin/parameters_cygwin.cpp Unix/cygwin/tools_cygwin.cpp Unix/cygwin/ethernet_cygwin.cpp Unix/cygwin/ethernet_cygwin.h Unix/cygwin/win32_supp.cpp Unix/win32_supp.h Unix/windows_ver.h aranym_LDADD += $(WIN32_RC_OBJS) else if OS_TYPE_mingw aranym_SOURCES += Unix/cygwin/parameters_cygwin.cpp Unix/cygwin/tools_cygwin.cpp Unix/cygwin/ethernet_cygwin.cpp Unix/cygwin/ethernet_cygwin.h Unix/cygwin/win32_supp.cpp Unix/win32_supp.h Unix/windows_ver.h aranym_LDADD += $(WIN32_RC_OBJS) else if OS_TYPE_irix aranym_SOURCES += Unix/parameters_unix.cpp Unix/irix/unaligned.c Unix/host_filesys_unix.cpp else if OS_TYPE_darwin if WITH_FINK aranym_SOURCES += \ Unix/parameters_unix.cpp \ Unix/host_filesys_unix.cpp \ Unix/darwin/ethernet_darwin.cpp Unix/darwin/ethernet_darwin.h \ Unix/darwin/SDLMain.M Unix/darwin/SDLMain.h \ Unix/darwin/SDLHotkeysRefresh.M \ $(empty) else aranym_SOURCES += \ gui-osx/SDLMain.m gui-osx/SDLMain.h \ Unix/MacOSX/parameters_MacOSX.cpp \ Unix/darwin/ethernet_darwin.cpp Unix/darwin/ethernet_darwin.h \ Unix/darwin/SDLHotkeysRefresh.M \ Unix/MacOSX/fd_trans.c Unix/MacOSX/fd_trans.h \ Unix/MacOSX/ethernet_macosx.cpp Unix/MacOSX/ethernet_macosx.h \ Unix/darwin/MachServer.c \ Unix/darwin/MachUser.c \ $(empty) endif else if OS_TYPE_beos aranym_SOURCES += Unix/parameters_unix.cpp Unix/host_filesys_unix.cpp Unix/beos/cdrom_beos.cpp Unix/beos/cdrom_beos.h else aranym_SOURCES += Unix/parameters_unix.cpp Unix/host_filesys_unix.cpp endif endif endif endif endif endif if USE_JIT aranym_SOURCES += \ uae_cpu/compiler/compemu.h \ uae_cpu/compiler/flags_arm.h \ uae_cpu/compiler/flags_x86.h \ uae_cpu/compiler/compemu_support.cpp \ $(empty) libaranym_a_SOURCES += \ uae_cpu/compiler/compstbla.cpp \ uae_cpu/cpustbl_nf.cpp \ uae_cpu/compiler/compemu1.cpp \ uae_cpu/compiler/compemu2.cpp \ uae_cpu/compiler/compemu3.cpp \ uae_cpu/compiler/compemu4.cpp \ uae_cpu/compiler/compemu5.cpp \ uae_cpu/compiler/compemu6.cpp \ uae_cpu/compiler/compemu7.cpp \ uae_cpu/compiler/compemu8.cpp \ uae_cpu/cpuemu1_nf.cpp \ uae_cpu/cpuemu2_nf.cpp \ uae_cpu/cpuemu3_nf.cpp \ uae_cpu/cpuemu4_nf.cpp \ uae_cpu/cpuemu5_nf.cpp \ uae_cpu/cpuemu6_nf.cpp \ uae_cpu/cpuemu7_nf.cpp \ uae_cpu/cpuemu8_nf.cpp \ $(empty) if USE_JIT_FPU aranym_SOURCES += uae_cpu/compiler/compemu_fpp.cpp endif endif if FPU_IEEE aranym_SOURCES += uae_cpu/fpu/fpu_ieee.cpp uae_cpu/fpu/fpu_ieee.h endif if FPU_X86 aranym_SOURCES += uae_cpu/fpu/fpu_x86.cpp uae_cpu/fpu/fpu_x86.h uae_cpu/fpu/fpu_x86_asm.h endif if FPU_UAE aranym_SOURCES += uae_cpu/fpu/fpu_uae.cpp uae_cpu/fpu/fpu_uae.h endif if FPU_MPFR aranym_SOURCES += uae_cpu/fpu/fpu_mpfr.cpp endif if NFCDROM_SUPPORT aranym_SOURCES += natfeat/nfcdrom.cpp natfeat/nfcdrom.h natfeat/nfcdrom_atari.h aranym_SOURCES += natfeat/nfcdrom_sdl.cpp natfeat/nfcdrom_sdl.h if OS_TYPE_linux aranym_SOURCES += natfeat/nfcdrom_linux.cpp natfeat/nfcdrom_linux.h endif if OS_TYPE_cygwin aranym_SOURCES += natfeat/nfcdrom_win32.cpp natfeat/nfcdrom_win32.h endif if OS_TYPE_mingw aranym_SOURCES += natfeat/nfcdrom_win32.cpp natfeat/nfcdrom_win32.h endif endif if WANT_DSP aranym_SOURCES += dsp_core.c dsp_cpu.c if WANT_DSP_DISASM aranym_SOURCES += dsp_disasm.c endif endif if NFPCI_SUPPORT aranym_SOURCES += natfeat/nfpci.cpp natfeat/nfpci.h endif if NFPCI_LINUX_SUPPORT aranym_SOURCES += natfeat/nfpci_linux.cpp natfeat/nfpci_linux.h endif if ETHERNET_SUPPORT aranym_SOURCES += natfeat/ethernet.cpp natfeat/ethernet.h endif if HOSTFS_SUPPORT aranym_SOURCES += natfeat/hostfs.cpp natfeat/hostfs.h endif if NFCLIPBRD_SUPPORT aranym_SOURCES += natfeat/nfclipbrd.cpp natfeat/nfclipbrd.h natfeat/nfclipbrd_nfapi.h if OS_TYPE_cygwin aranym_SOURCES += Unix/cygwin/clipbrd_cygwin.cpp else if OS_TYPE_mingw aranym_SOURCES += Unix/cygwin/clipbrd_cygwin.cpp else if OS_TYPE_darwin aranym_SOURCES += Unix/darwin/clipbrd_darwin.M else if OS_TYPE_beos aranym_SOURCES += Unix/beos/clipbrd_beos.cpp else aranym_SOURCES += Unix/clipbrd_x11.cpp Unix/clipbrd.h endif endif endif endif endif if EXTENDED_SIGSEGV if OS_TYPE_linux if CPU_TYPE_x86 aranym_SOURCES += Unix/linux/sigsegv_linux_x86.cpp Unix/sigsegv_common_x86.h endif if CPU_TYPE_x86_64 aranym_SOURCES += Unix/linux/sigsegv_linux_x86.cpp Unix/sigsegv_common_x86.h endif if CPU_TYPE_arm aranym_SOURCES += Unix/linux/sigsegv_linux_arm.cpp endif endif if OS_TYPE_openbsd if CPU_TYPE_x86 aranym_SOURCES += Unix/xbsd/sigsegv_xbsd.cpp endif if CPU_TYPE_x86_64 aranym_SOURCES += Unix/xbsd/sigsegv_xbsd.cpp endif endif if OS_TYPE_netbsd if CPU_TYPE_x86 aranym_SOURCES += Unix/xbsd/sigsegv_xbsd.cpp endif endif if OS_TYPE_freebsd if CPU_TYPE_x86 aranym_SOURCES += Unix/xbsd/sigsegv_xbsd.cpp endif if CPU_TYPE_x86_64 aranym_SOURCES += Unix/xbsd/sigsegv_xbsd.cpp endif endif if OS_TYPE_darwin if CPU_TYPE_x86 aranym_SOURCES += Unix/darwin/sigsegv_darwin_x86.cpp endif if CPU_TYPE_x86_64 aranym_SOURCES += Unix/darwin/sigsegv_darwin_x86.cpp endif endif if OS_TYPE_cygwin if CPU_TYPE_x86 aranym_SOURCES += Unix/cygwin/sigsegv_cygwin.cpp endif endif if OS_TYPE_mingw if CPU_TYPE_x86 aranym_SOURCES += Unix/cygwin/sigsegv_cygwin.cpp endif endif if OS_TYPE_solaris if CPU_TYPE_x86 aranym_SOURCES += Unix/solaris/sigsegv_solaris_x86.cpp endif if CPU_TYPE_x86_64 aranym_SOURCES += Unix/solaris/sigsegv_solaris_x86.cpp endif endif if OS_TYPE_beos if CPU_TYPE_x86 aranym_SOURCES += Unix/beos/sigsegv_beos_x86.cpp endif if CPU_TYPE_x86_64 aranym_SOURCES += Unix/beos/sigsegv_beos_x86.cpp endif endif endif if ENABLE_OPENGL aranym_SOURCES += dyngl.c endif if USBHOST_SUPPORT aranym_SOURCES += natfeat/usbhost.cpp natfeat/usbhost.h endif if NFOSMESA_SUPPORT aranym_SOURCES += \ natfeat/nfosmesa.cpp natfeat/nfosmesa.h \ natfeat/osmesa_context.cpp natfeat/osmesa_context.h endif if NFJPEG_SUPPORT aranym_SOURCES += natfeat/nfjpeg.cpp natfeat/nfjpeg.h endif if NFVDI_SUPPORT aranym_SOURCES += natfeat/nfvdi.cpp natfeat/nfvdi.h natfeat/nfvdi_soft.cpp natfeat/nfvdi_soft.h natfeat/fvdidrv_nfapi.h if ENABLE_OPENGL aranym_SOURCES += natfeat/nfvdi_opengl.cpp natfeat/nfvdi_opengl.h endif endif if ENABLE_PARALLELX86 if OS_TYPE_linux if CPU_TYPE_x86 aranym_SOURCES += parallel_x86.cpp endif endif endif if ENABLE_PARALLELPARPORT if OS_TYPE_linux aranym_SOURCES += parallel_parport.cpp endif endif if ENABLE_SERIALUNIX aranym_SOURCES += serial_port.cpp endif aranym_rc_i386.o: $(srcdir)/Unix/cygwin/aranym.rc $(WINDRES) -o $@ --output-format coff --target pe-i386 $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $< aranym_rc_x86_64.o: $(srcdir)/Unix/cygwin/aranym.rc $(WINDRES) -o $@ --output-format coff --target pe-x86-64 $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $< aratapif_SOURCES = Unix/aratapif.c # previously, the executables where built in the top level # directory, and some external build scripts (e.g. rpm) excpect # them there. Remove this copy once the scripts have been updated aranym$(EXEEXT): $(aranym_OBJECTS) $(aranym_DEPENDENCIES) $(EXTRA_aranym_DEPENDENCIES) @rm -f $@ $(AM_V_CXXLD)$(CXXLINK) $(aranym_OBJECTS) $(aranym_LDADD) $(LIBS) if OS_TYPE_beos $(BEOS_RC) -o $(APP).rsrc $(BEOS_RESOURCES) $(BEOS_XRES) -o $(APP) $(APP).rsrc versfile="$(srcdir)/include/version.h"; \ major=`sed -n -e 's/#define[ \\t]*VER_MAJOR[ \\t]*\\([0-9]*\\)/\\1/p' $$versfile`; \ minor=`sed -n -e 's/#define[ \\t]*VER_MINOR[ \\t]*\\([0-9]*\\)/\\1/p' $$versfile`; \ micro=`sed -n -e 's/#define[ \\t]*VER_MICRO[ \\t]*\\([0-9]*\\)/\\1/p' $$versfile`; \ $(BEOS_SETVERSION) $(APP) \ -app $$major $$minor $$micro d 0 \ -short "$(APP) $(PACKAGE_VERSION)" \ -long "$(APP) $(PACKAGE_VERSION)" endif rm -f ../$@ cp $@ ../$@ # previously, the executables where built in the top level # directory, and some external build scripts (e.g. rpm) excpect # them there. Remove this copy once the scripts have been updated aratapif$(EXEEXT): $(aratapif_OBJECTS) $(aratapif_DEPENDENCIES) $(EXTRA_aratapif_DEPENDENCIES) @rm -f $@ $(AM_V_CCLD)$(LINK) $(aratapif_OBJECTS) $(aratapif_LDADD) $(LIBS) rm -f ../$@ cp $@ ../$@ install-exec-hook: if USE_JIT cd "$(DESTDIR)$(bindir)" && mv aranym$(EXEEXT) aranym-jit$(EXEEXT) endif if FULLMMU cd "$(DESTDIR)$(bindir)" && mv aranym$(EXEEXT) aranym-mmu$(EXEEXT) endif $(APP_BUNDLE): $(APP) rm -rf $(APP_BUNDLE) mkdir -p $(APP_BUNDLE)/Contents cp -r $(BUNDLE_CONTENTS) $(APP_BUNDLE)/Contents mkdir -p $(APP_BUNDLE)/Contents/MacOS cp $(APP) $(APP_BUNDLE)/Contents/MacOS mkdir -p $(APP_BUNDLE)/Contents/Resources mkdir -p $(APP_BUNDLE)/Contents/Frameworks for fwFolder in $(BUNDLE_FRAMEWORKS); do \ if test -d $$fwFolder; then \ cp -rp $$fwFolder $(APP_BUNDLE)/Contents/Frameworks/; \ fi; \ done cp -r $(BUNDLE_RESOURCES) $(APP_BUNDLE)/Contents/Resources for locFolder in $(BUNDLE_LOCALIZATON_FOLDERS); do \ cp -R $$locFolder $(APP_BUNDLE)/Contents/Resources/; \ done find $(APP_BUNDLE)/Contents/Resources -type d -and \( -name CVS -or -name \*~.nib \) -or -name \*~ -or -name \*.bak | xargs rm -rf EXTRA_DIST += \ include \ natfeat/doc \ natfeat/atari_example.c \ natfeat/atari_example_gfa.lst \ natfeat/nfosmesa/call-gl.c \ natfeat/nfosmesa/dispatch-gl.c \ natfeat/nfosmesa/paramcount-gl.c \ $(BEOS_RESOURCES) \ Unix/solaris/which_sparc \ Unix/cygwin/aranym.ico \ Unix/cygwin/aranym.rc \ Unix/MacOSX/MacAranym.xcodeproj \ Unix/MacOSX/scripts \ Unix/MacOSX/README.rtf \ Unix/MacOSX/README_Xcode.rtf \ Unix/MacOSX/README_ethernet.rtf \ Unix/MacOSX/bpf_helper.c \ gui-sdl/genmaptab.c \ gui-sdl/fntconv.c \ $(srcdir)/gui-osx/*.lproj \ gui-osx/Info.plist \ gui-osx/aranym.icns \ Unix/darwin/aranym.xcodeproj \ Unix/darwin/aranym.icns \ Unix/darwin/aranym2.icns \ Unix/darwin/busybee.icns \ Unix/darwin/busybee112-glossy.xcf \ Unix/darwin/aratapif.sh \ $(srcdir)/Unix/darwin/*.lproj \ Unix/darwin/Info.plist \ Unix/darwin/BUILDING_LEOPARD.txt \ Unix/darwin/README_ethernet.txt \ disasm-main.cpp \ cdromtest.cpp \ $(empty) # For tests m68kdisasm: disasm-main.cpp disasm-glue.cpp disasm-builtin.cpp $(AM_V_CXXLD)$(CXX) $(LDFLAGS) $(AM_CPPFLAGS) $(CXXFLAGS) $(DEFAULT_INCLUDES) $(CPPFLAGS) $(DEFS) $(WFLAGS) $(CFLAGS) $(SDL_CFLAGS) $(ARCHFLAGS) -o $@ $(srcdir)/disasm-main.cpp $(DISASM_LIBS) cdromtest: $(srcdir)/cdromtest.cpp $(srcdir)/natfeat/nfcdrom.cpp $(srcdir)/natfeat/nfcdrom_sdl.cpp $(srcdir)/natfeat/nfcdrom_linux.cpp $(srcdir)/natfeat/nfcdrom_win32.cpp $(AM_V_CC)$(CXX) $(LDFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(DEFS) $(WFLAGS) $(CFLAGS) $(ARCHFLAGS) -o $@ $(srcdir)/cdromtest.cpp $(LIBS) CLEANFILES = cdromtest$(EXEEXT) m68kdisasm$(EXEEXT) aranym-1.1.0/m4/0000775000175000017500000000000013454637621011521 5ustar joyjoyaranym-1.1.0/m4/util.m40000664000175000017500000000052613454637621012743 0ustar joyjoydnl Define a macro that translates a yesno-variable into a C macro definition dnl to be put into the config.h file dnl $1 -- the macro to define dnl $2 -- the value to translate dnl $3 -- template name AC_DEFUN([AC_TRANSLATE_DEFINE], [ if [[ "x$2" = "xyes" -o "x$2" = "xguessing yes" ]]; then AC_DEFINE([$1], 1, [$3]) fi ]) aranym-1.1.0/m4/tm_gmtoff.m40000664000175000017500000000020713454637621013744 0ustar joyjoy AC_DEFUN([gl_TM_GMTOFF], [ AC_CHECK_MEMBERS([struct tm.tm_gmtoff], [], [], [#include ]) ]) aranym-1.1.0/m4/stat-time.m40000664000175000017500000000305513454637621013675 0ustar joyjoy# Checks for stat-related time functions. # Borrowed from gnulib module of coreutils AC_DEFUN([gl_STAT_TIME], [ AC_CHECK_HEADERS([sys/time.h]) AC_CHECK_MEMBERS([struct stat.st_atim.tv_nsec], [AC_CACHE_CHECK([whether struct stat.st_atim is of type struct timespec], [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include #include #if HAVE_SYS_TIME_H # include #endif #include struct timespec ts; struct stat st; ]], [[ st.st_atim = ts; ]])], [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes], [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no])]) if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then AC_DEFINE([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC], [1], [Define to 1 if the type of the st_atim member of a struct stat is struct timespec.]) fi], [AC_CHECK_MEMBERS([struct stat.st_atimespec.tv_nsec], [], [AC_CHECK_MEMBERS([struct stat.st_atimensec], [], [AC_CHECK_MEMBERS([struct stat.st_atim.st__tim.tv_nsec], [], [], [#include #include ])], [#include #include ])], [#include #include ])], [#include #include ]) ]) aranym-1.1.0/m4/sdl2.m40000664000175000017500000002321113454637621012626 0ustar joyjoy# Configure paths for SDL # Sam Lantinga 9/21/99 # stolen from Manish Singh # stolen back from Frank Belew # stolen from Manish Singh # Shamelessly stolen from Owen Taylor # serial 1 dnl AM_PATH_SDL2([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) dnl Test for SDL2, and define SDL2_CFLAGS and SDL2_LIBS dnl AC_DEFUN([AM_PATH_SDL2], [dnl dnl Get the cflags and libraries from the sdl2-config script dnl AC_ARG_WITH(sdl2-prefix,[AC_HELP_STRING([--with-sdl2-prefix=PFX], [Prefix where SDL2 is installed (optional)])], sdl2_prefix="$withval", sdl2_prefix="") AC_ARG_WITH(sdl2-exec-prefix,[AC_HELP_STRING([--with-sdl2-exec-prefix=PFX], [Exec prefix where SDL2 is installed (optional)])], sdl2_exec_prefix="$withval", sdl2_exec_prefix="") AC_ARG_ENABLE(sdltest, [AC_HELP_STRING([--disable-sdltest], [Do not try to compile and run a test SDL program])], , enable_sdltest=yes) min_sdl2_version=ifelse([$1], ,2.0.0,$1) if test "x$sdl2_prefix$sdl2_exec_prefix" = x ; then PKG_CHECK_MODULES([SDL2], [sdl2 >= $min_sdl2_version], [sdl2_pc=yes], [sdl2_pc=no]) if test "x$sdl2_pc" = xyes ; then # # sdl2.pc fails to add -I{includedir}/directfb to cflags if SDL2 was # configured with --enable-directfb; we may have to add it ourselves # case `$PKG_CONFIG --libs --static sdl2` in *-ldirectfb*) SDL2_CFLAGS="$SDL2_CFLAGS -I`$PKG_CONFIG --variable=includedir sdl2`/directfb" ;; esac fi else sdl2_pc=no fi if test "x$sdl2_pc" = xyes ; then no_sdl2="" SDL2_CONFIG="$PKG_CONFIG sdl2" sdl2_version=`$PKG_CONFIG --modversion sdl2` else as_save_PATH="$PATH" if test "x$prefix" != xNONE && test "$cross_compiling" != yes; then PATH="$prefix/bin:$prefix/usr/bin:$PATH" fi # # provide some defaults on cygwin, # where we use the MinGW version of the SDL library, # to simplify standard configuration. # But only if the user did not override it. # case $host in *-*-cygwin*) MINGW_ROOT=$prefix/i686-w64-mingw32/sys-root/mingw if test -d "$MINGW_ROOT"; then if test "$sdl2_prefix" = "" ; then sdl2_prefix="$MINGW_ROOT" sdl2_exec_prefix="$MINGW_ROOT/bin" fi fi ;; esac if test x$sdl2_exec_prefix != x ; then sdl2_config_args="$sdl2_config_args --exec-prefix=$sdl2_exec_prefix" PATH="$sdl2_exec_prefix:$PATH" fi if test x$sdl2_prefix != x ; then sdl2_config_args="$sdl2_config_args --prefix=$sdl2_prefix" PATH="$sdl2_prefix/bin:$PATH" fi if test x${SDL2_CONFIG+set} != xset ; then AC_PATH_PROG(SDL2_CONFIG, sdl2-config, no, [$PATH]) else test -f "$SDL2_CONFIG" || SDL2_CONFIG=no fi PATH="$as_save_PATH" no_sdl2="" if test "$SDL2_CONFIG" = "no" ; then no_sdl2=yes else SDL2_CFLAGS=`$SDL2_CONFIG $sdl2_config_args --cflags` SDL2_LIBS=`$SDL2_CONFIG $sdl2_config_args --libs` sdl2_version=`$SDL2_CONFIG $sdl2_config_args --version` # # sdl2-config fails to add -I{includedir}/directfb to cflags if SDL2 was # configured with --enable-directfb; we may have to add it ourselves # case `$SDL2_CONFIG $sdl2_config_args --static-libs` in *-ldirectfb*) SDL2_CFLAGS="$SDL2_CFLAGS -I`$SDL2_CONFIG $sdl2_config_args --prefix`/include/directfb" ;; esac fi fi case $host in *-*-cygwin*) # switches that must be removed for the mixed cygwin/MinGW32 platform # also replaces -L... -lSDL by the absolute pathname of the library, # because the -L points to mingw libraries instead of cygwin libraries nosdlswitch='s/-Dmain=SDL_main//; s=-I/usr/include.*/SDL='-I${includedir}/SDL'=; s=-I/mingw/include.*/SDL='-I${includedir}/SDL'=; s/-DWIN32//; s/-Uunix//; s/-mno-cygwin//; s/-lmingw32//; s/-lSDL2main//; s/-mwindows//; s/-mms-bitfields//; s=-L\([[^ ]]*\).*-l\(SDL[[^ ]]*\)=\1/lib\2.dll.a=; ' SDL2_CFLAGS=`echo $SDL2_CFLAGS | sed -e "$nosdlswitch"` SDL2_LIBS=`echo $SDL2_LIBS | sed -e "$nosdlswitch"` enable_sdltest=no ;; *-*-mingw*) # switches that must be removed because we dont link SDLmain nosdlswitch='s/-Dmain=SDL_main//; s=-I/usr/include.*/SDL='-I${includedir}/SDL'=; s=-I/mingw/include.*/SDL='-I${includedir}/SDL'=; s/-DWIN32//; s/-Uunix//; s/-lmingw32//; s/-lSDL2main//; s/-mwindows//; ' SDL2_CFLAGS=`echo $SDL2_CFLAGS | sed -e "$nosdlswitch"` SDL2_LIBS=`echo $SDL2_LIBS | sed -e "$nosdlswitch"` enable_sdltest=no ;; esac # remove -L/usr/lib{32,64} from SDL_LIBS; this is # a default search directory anyways, # and will cause trouble when compiling in 32-bit mode # on 64-bit machines SDL2_LIBS=`echo $SDL2_LIBS | sed -e 's,-L/usr/lib[[2346]]* ,,'` if test "$no_sdl2" != yes ; then if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL2_CFLAGS" eval CFLAGS=\"$CFLAGS\" eval CFLAGS=\"$CFLAGS\" CXXFLAGS="$CXXFLAGS $SDL2_CFLAGS" eval CXXFLAGS=\"$CXXFLAGS\" eval CXXFLAGS=\"$CXXFLAGS\" LIBS="$LIBS $SDL2_LIBS" sdl2_major_version=`echo $sdl2_version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` sdl2_minor_version=`echo $sdl2_version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` sdl2_micro_version=`echo $sdl2_version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` dnl dnl Now check if the installed SDL is sufficiently new. (Also sanity dnl checks the results of sdl2-config to some extent dnl rm -f conf.sdltest AC_TRY_RUN([ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl2_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl2_version"); exit(1); } if (($sdl2_major_version > major) || (($sdl2_major_version == major) && ($sdl2_minor_version > minor)) || (($sdl2_major_version == major) && ($sdl2_minor_version == minor) && ($sdl2_micro_version >= micro))) { return 0; } else { printf("\n*** 'sdl2-config --version' returned %d.%d.%d, but the minimum version\n", $sdl2_major_version, $sdl2_minor_version, $sdl2_micro_version); printf("*** of SDL required is %d.%d.%d. If sdl2-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl2-config was wrong, set the environment variable SDL2_CONFIG\n"); printf("*** to point to the correct copy of sdl2-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } ],, no_sdl2=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi AC_MSG_CHECKING(for SDL2 - version >= $min_sdl2_version) if test "x$no_sdl2" = x ; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi if test "x$no_sdl2" = x ; then ifelse([$2], , :, [$2]) else if test "$SDL2_CONFIG" = "no" ; then echo "*** The sdl2-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL2_CONFIG environment variable to the" echo "*** full path to sdl2-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL2 test program, checking why..." CFLAGS="$CFLAGS $SDL2_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL2_CFLAGS" LIBS="$LIBS $SDL2_LIBS" AC_TRY_LINK([ #include #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main ], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl2-config script: $SDL2_CONFIG" ]) CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi SDL2_CFLAGS="" SDL2_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(SDL2_CFLAGS) AC_SUBST(SDL2_LIBS) rm -f conf.sdltest ]) aranym-1.1.0/m4/sdl.m40000664000175000017500000002041513454637621012547 0ustar joyjoy# Configure paths for SDL # Sam Lantinga 9/21/99 # stolen from Manish Singh # stolen back from Frank Belew # stolen from Manish Singh # Shamelessly stolen from Owen Taylor # serial 1 dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS dnl AC_DEFUN([AM_PATH_SDL], [dnl dnl Get the cflags and libraries from the sdl-config script dnl AC_ARG_WITH(sdl-prefix,[AC_HELP_STRING([--with-sdl-prefix=PFX], [Prefix where SDL is installed (optional)])], sdl_prefix="$withval", sdl_prefix="") AC_ARG_WITH(sdl-exec-prefix,[AC_HELP_STRING([--with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)])], sdl_exec_prefix="$withval", sdl_exec_prefix="") AC_ARG_ENABLE(sdltest, [AC_HELP_STRING([--disable-sdltest], [Do not try to compile and run a test SDL program])], , enable_sdltest=yes) as_save_PATH="$PATH" if test "x$prefix" != xNONE; then PATH="$prefix/bin:$prefix/usr/bin:$PATH" fi # # provide some defaults on cygwin, # where we use the MinGW version of the SDL library, # to simplify standard configuration. # But only if the user did not override it. # case $host in *-*-cygwin*) MINGW_ROOT=$prefix/i686-w64-mingw32/sys-root/mingw if test -d "$MINGW_ROOT"; then if test "$sdl_prefix" = "" ; then sdl_prefix="$MINGW_ROOT" sdl_exec_prefix="$MINGW_ROOT/bin" fi fi ;; esac if test x$sdl_exec_prefix != x ; then sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix" PATH="$sdl_exec_prefix:$PATH" fi if test x$sdl_prefix != x ; then sdl_config_args="$sdl_config_args --prefix=$sdl_prefix" PATH="$sdl_prefix/bin:$PATH" fi if test x${SDL_CONFIG+set} != xset ; then AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH]) else test -f "$SDL_CONFIG" || SDL_CONFIG=no fi PATH="$as_save_PATH" min_sdl_version=ifelse([$1], ,0.11.0,$1) AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) no_sdl="" if test "$SDL_CONFIG" = "no" ; then no_sdl=yes else SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags` SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs` case $host in *-*-cygwin*) # switches that must be removed for the mixed cygwin/MinGW32 platform # also replaces -L... -lSDL by the absolute pathname of the library, # because the -L points to mingw libraries instead of cygwin libraries nosdlswitch='s/-Dmain=SDL_main//; s=-I/usr/include.*/SDL='-I${includedir}/SDL'=; s=-I/mingw/include.*/SDL='-I${includedir}/SDL'=; s/-DWIN32//; s/-Uunix//; s/-mno-cygwin//; s/-lmingw32//; s/-lSDLmain//; s/-mwindows//; s/-mms-bitfields//; s=-L\([[^ ]]*\).*-l\(SDL[[^ ]]*\)=\1/lib\2.dll.a=; ' SDL_CFLAGS=`echo $SDL_CFLAGS | sed -e "$nosdlswitch"` SDL_LIBS=`echo $SDL_LIBS | sed -e "$nosdlswitch"` enable_sdltest=no ;; *-*-mingw*) # switches that must be removed because we dont link SDLmain nosdlswitch='s/-Dmain=SDL_main//; s=-I/usr/include.*/SDL='-I${includedir}/SDL'=; s=-I/mingw/include.*/SDL='-I${includedir}/SDL'=; s/-DWIN32//; s/-Uunix//; s/-lmingw32//; s/-lSDLmain//; s/-mwindows//; ' SDL_CFLAGS=`echo $SDL_CFLAGS | sed -e "$nosdlswitch"` SDL_LIBS=`echo $SDL_LIBS | sed -e "$nosdlswitch"` enable_sdltest=no ;; esac # remove -L/usr/lib{32,64} from SDL_LIBS; this is # a default search directory anyways, # and will cause trouble when compiling in 32-bit mode # on 64-bit machines SDL_LIBS=`echo $SDL_LIBS | sed -e 's,-L/usr/lib[[2346]]* ,,'` sdl_version=`$SDL_CONFIG $sdl_config_args --version` sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL_CFLAGS" eval CFLAGS=\"$CFLAGS\" eval CFLAGS=\"$CFLAGS\" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" eval CXXFLAGS=\"$CXXFLAGS\" eval CXXFLAGS=\"$CXXFLAGS\" LIBS="$LIBS $SDL_LIBS" dnl dnl Now check if the installed SDL is sufficiently new. (Also sanity dnl checks the results of sdl-config to some extent dnl rm -f conf.sdltest AC_TRY_RUN([ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); printf("*** to point to the correct copy of sdl-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } ],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$SDL_CONFIG" = "no" ; then echo "*** The sdl-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL_CONFIG environment variable to the" echo "*** full path to sdl-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" AC_TRY_LINK([ #include #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main ], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CFLAGS="" SDL_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(SDL_CFLAGS) AC_SUBST(SDL_LIBS) rm -f conf.sdltest ]) aranym-1.1.0/m4/maintainer.m40000664000175000017500000000317013454637621014113 0ustar joyjoy# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless 'enable' is passed literally. # For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], am_maintainer_other[ make rules and dependencies not useful (and sometimes confusing) to the casual installer])], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) aranym-1.1.0/m4/framework.m40000664000175000017500000000331413454637621013761 0ustar joyjoydnl Function to check for Mac OS X frameworks (stolen from Basilisk) dnl ARANYM_CHECK_FRAMEWORK($1=NAME, $2=INCLUDES) AC_DEFUN([ARANYM_CHECK_FRAMEWORK], [ AS_VAR_PUSHDEF([ac_Framework], [aranym_cv_have_framework_$1])dnl AC_CACHE_CHECK([whether compiler supports framework $1], ac_Framework, [ saved_LIBS="$LIBS" LIBS="$LIBS -framework $1" AC_TRY_LINK( [$2], [], [AS_VAR_SET(ac_Framework, yes); $1_LIBS=" -framework $1"], [AS_VAR_SET(ac_Framework, no)] ) LIBS="$saved_LIBS" ]) AS_IF([test AS_VAR_GET(ac_Framework) = yes], [AC_DEFINE(AS_TR_CPP(HAVE_FRAMEWORK_$1), 1, [Define if framework $1 is available.])] ) have_framework_$1=AS_VAR_GET(ac_Framework) AS_VAR_POPDEF([ac_Framework])dnl ]) dnl Find location of an existing Mac OS X framework dnl ARANYM_CHECK_FRAMEWORK_LOCATION($1=NAME) AC_DEFUN([ARANYM_CHECK_FRAMEWORK_LOCATION], [ AS_VAR_PUSHDEF([ac_Framework_Location], [aranym_cv_$1_location])dnl AC_CACHE_CHECK([location of $1 framework], ac_Framework_Location, [ AS_VAR_SET(ac_Framework_Location, "") echo "#error dummy" > conftest.c pos_locations=`$CC -v conftest.c -framework $1 2>&1 | grep -e "> search" -A 999 | grep -e "End of " -B 999 | grep -e "^ "` rm -f conftest.c for pos_location in $FRAMEWORK_SEARCH_PATHS $pos_locations ; do pos_location="`echo $pos_location | sed 's/^"//' | sed 's/"$//'`" framework_loc="$pos_location/$1.framework" if test -d "$framework_loc" ; then AS_VAR_SET(ac_Framework_Location, "$framework_loc") break; fi done ]) if test -z AS_VAR_GET(ac_Framework_Location) ; then AC_MSG_ERROR([$1 framework not found]) fi $1_LOCATION=AS_VAR_GET(ac_Framework_Location) AS_VAR_POPDEF([ac_Framework_Location])dnl ]) aranym-1.1.0/m4/float.m40000664000175000017500000001140713454637621013073 0ustar joyjoydnl Utility macro used by next two tests. dnl AC_EXAMINE_OBJECT(C source code, dnl commands examining object file, dnl [commands to run if compile failed]): dnl dnl Compile the source code to an object file; then convert it into a dnl printable representation. All unprintable characters and dnl asterisks (*) are replaced by dots (.). All white space is dnl deleted. Newlines (ASCII 0x10) in the input are preserved in the dnl output, but runs of newlines are compressed to a single newline. dnl Finally, line breaks are forcibly inserted so that no line is dnl longer than 80 columns and the file ends with a newline. The dnl result of all this processing is in the file conftest.dmp, which dnl may be examined by the commands in the second argument. dnl AC_DEFUN([gcc_AC_EXAMINE_OBJECT], [AC_LANG_SAVE AC_LANG_C dnl Next bit cribbed from AC_TRY_COMPILE. cat > conftest.$ac_ext < conftest.dmp $2 ifelse($3, , , else $3 )dnl fi rm -rf conftest* AC_LANG_RESTORE]) dnl Floating point format probe. dnl The basic concept is the same as the above: grep the object dnl file for an interesting string. We have to watch out for dnl rounding changing the values in the object, however; this is dnl handled by ignoring the least significant byte of the float. dnl dnl Does not know about VAX G-float or C4x idiosyncratic format. dnl It does know about PDP-10 idiosyncratic format, but this is dnl not presently supported by GCC. S/390 "binary floating point" dnl is in fact IEEE (but maybe we should have that in EBCDIC as well dnl as ASCII?) AC_DEFUN([gcc_AC_C_FLOAT_FORMAT], [AC_CACHE_CHECK(floating point format, ac_cv_c_float_format, [gcc_AC_EXAMINE_OBJECT( [/* This will not work unless sizeof(double) == 8. */ extern char sizeof_double_must_be_8 [sizeof(double) == 8 ? 1 : -1]; /* This structure must have no internal padding. */ struct possibility { char prefix[8]; double candidate; char postfix[8]; }; #define C(cand) { "\nformat:", cand, ":tamrof\n" } struct possibility table [] = { C( 3.25724264705901305206e+01), /* @@IEEEFP - IEEE 754 */ C( 3.53802595280598432000e+18), /* D__float - VAX */ C( 5.32201830133125317057e-19), /* D.PDP-10 - PDP-10 - the dot is 0x13a */ C( 1.77977764695171661377e+10), /* IBMHEXFP - s/390 format, ascii */ C(-5.22995989424860458374e+10) /* IBMHEXFP - s/390 format, EBCDIC */ };], [if grep 'format:.@IEEEF.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (big-endian)' elif grep 'format:.I@@PFE.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (big-endian)' elif grep 'format:.FEEEI@.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (little-endian)' elif grep 'format:.EFP@@I.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (little-endian)' elif grep 'format:.__floa.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='VAX D-float' elif grep 'format:..PDP-1.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='PDP-10' elif grep 'format:.BMHEXF.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IBM 370 hex' else AC_MSG_ERROR(Unknown floating point format) fi], [AC_MSG_ERROR(compile failed)]) ]) # IEEE is the default format. If the float endianness isn't the same # as the integer endianness, we have to set FLOAT_WORDS_BIG_ENDIAN # (which is a tristate: yes, no, default). This is only an issue with # IEEE; the other formats are only supported by a few machines each, # all with the same endianness. format=IEEE_FLOAT_FORMAT fbigend= case $ac_cv_c_float_format in 'IEEE (big-endian)' ) if test $ac_cv_c_bigendian = no; then fbigend=1 fi if test $ac_cv_c_bigendian = universal; then fbigend=WORDS_BIGENDIAN fi ;; 'IEEE (little-endian)' ) if test $ac_cv_c_bigendian = yes; then fbigend=0 fi if test $ac_cv_c_bigendian = universal; then fbigend='!WORDS_BIGENDIAN' fi ;; 'VAX D-float' ) format=VAX_FLOAT_FORMAT ;; 'PDP-10' ) format=PDP10_FLOAT_FORMAT ;; 'IBM 370 hex' ) format=IBM_FLOAT_FORMAT ;; esac AC_DEFINE_UNQUOTED(HOST_FLOAT_FORMAT, $format, [Define to the floating point format of the host machine.]) if test -n "$fbigend"; then AC_DEFINE_UNQUOTED(HOST_FLOAT_WORDS_BIG_ENDIAN, $fbigend, [Define to 1 if the host machine stores floating point numbers in memory with the word containing the sign bit at the lowest address, or to 0 if it does it the other way around. This macro should not be defined if the ordering is the same as for multi-word integers.]) fi ]) aranym-1.1.0/m4/cxxbool.m40000664000175000017500000000100713454637621013437 0ustar joyjoydnl Check whether the compiler recognizes bool AC_DEFUN([AC_CXX_BOOL], [AC_CACHE_CHECK(whether the compiler recognizes bool as a built-in type, ac_cv_cxx_bool, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ int f(int x){return 1;} int f(char x){return 1;} int f(bool x){return 1;} ],[bool b = true; return f(b);], ac_cv_cxx_bool=yes, ac_cv_cxx_bool=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_bool" = yes; then AC_DEFINE(HAVE_BOOL,,[define if bool is a built-in type]) fi ]) aranym-1.1.0/m4/ax_prog_cxx_for_build.m40000664000175000017500000000674213454637621016342 0ustar joyjoy# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_prog_cxx_for_build.html # =========================================================================== # # SYNOPSIS # # AX_PROG_CXX_FOR_BUILD # # DESCRIPTION # # This macro searches for a C++ compiler that generates native # executables, that is a C++ compiler that surely is not a cross-compiler. # This can be useful if you have to generate source code at compile-time # like for example GCC does. # # The macro sets the CXX_FOR_BUILD and CXXCPP_FOR_BUILD macros to anything # needed to compile or link (CXX_FOR_BUILD) and preprocess # (CXXCPP_FOR_BUILD). The value of these variables can be overridden by # the user by specifying a compiler with an environment variable (like you # do for standard CXX). # # LICENSE # # Copyright (c) 2008 Paolo Bonzini # Copyright (c) 2012 Avionic Design GmbH # # Based on the AX_PROG_CC_FOR_BUILD macro by Paolo Bonzini. # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 2 AU_ALIAS([AC_PROG_CXX_FOR_BUILD], [AX_PROG_CXX_FOR_BUILD]) AC_DEFUN([AX_PROG_CXX_FOR_BUILD], [dnl AC_REQUIRE([AX_PROG_CC_FOR_BUILD])dnl AC_REQUIRE([AC_PROG_CXX])dnl AC_REQUIRE([AC_PROG_CXXCPP])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl dnl Use the standard macros, but make them use other variable names dnl pushdef([ac_cv_prog_CXXCPP], ac_cv_build_prog_CXXCPP)dnl pushdef([ac_cv_prog_gxx], ac_cv_build_prog_gxx)dnl pushdef([ac_cv_prog_cxx_works], ac_cv_build_prog_cxx_works)dnl pushdef([ac_cv_prog_cxx_cross], ac_cv_build_prog_cxx_cross)dnl pushdef([ac_cv_prog_cxx_g], ac_cv_build_prog_cxx_g)dnl pushdef([CXX], CXX_FOR_BUILD)dnl pushdef([CXXCPP], CXXCPP_FOR_BUILD)dnl pushdef([CXXFLAGS], CXXFLAGS_FOR_BUILD)dnl pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl pushdef([CXXCPPFLAGS], CXXCPPFLAGS_FOR_BUILD)dnl pushdef([host], build)dnl pushdef([host_alias], build_alias)dnl pushdef([host_cpu], build_cpu)dnl pushdef([host_vendor], build_vendor)dnl pushdef([host_os], build_os)dnl pushdef([ac_cv_host], ac_cv_build)dnl pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl pushdef([ac_cv_host_os], ac_cv_build_os)dnl pushdef([ac_cxxcpp], ac_build_cxxcpp)dnl pushdef([ac_compile], ac_build_compile)dnl pushdef([ac_link], ac_build_link)dnl save_cross_compiling=$cross_compiling save_ac_tool_prefix=$ac_tool_prefix cross_compiling=no ac_tool_prefix= AC_PROG_CXX AC_PROG_CXXCPP ac_tool_prefix=$save_ac_tool_prefix cross_compiling=$save_cross_compiling dnl Restore the old definitions dnl popdef([ac_link])dnl popdef([ac_compile])dnl popdef([ac_cxxcpp])dnl popdef([ac_cv_host_os])dnl popdef([ac_cv_host_vendor])dnl popdef([ac_cv_host_cpu])dnl popdef([ac_cv_host_alias])dnl popdef([ac_cv_host])dnl popdef([host_os])dnl popdef([host_vendor])dnl popdef([host_cpu])dnl popdef([host_alias])dnl popdef([host])dnl popdef([CXXCPPFLAGS])dnl popdef([CPPFLAGS])dnl popdef([CXXFLAGS])dnl popdef([CXXCPP])dnl popdef([CXX])dnl popdef([ac_cv_prog_cxx_g])dnl popdef([ac_cv_prog_cxx_cross])dnl popdef([ac_cv_prog_cxx_works])dnl popdef([ac_cv_prog_gxx])dnl popdef([ac_cv_prog_CXXCPP])dnl dnl Finally, set Makefile variables dnl AC_SUBST([CXXFLAGS_FOR_BUILD])dnl AC_SUBST([CXXCPPFLAGS_FOR_BUILD])dnl ]) aranym-1.1.0/m4/ax_prog_cc_for_build.m40000664000175000017500000000770213454637621016122 0ustar joyjoy# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html # =========================================================================== # # SYNOPSIS # # AX_PROG_CC_FOR_BUILD # # DESCRIPTION # # This macro searches for a C compiler that generates native executables, # that is a C compiler that surely is not a cross-compiler. This can be # useful if you have to generate source code at compile-time like for # example GCC does. # # The macro sets the CC_FOR_BUILD and CPP_FOR_BUILD macros to anything # needed to compile or link (CC_FOR_BUILD) and preprocess (CPP_FOR_BUILD). # The value of these variables can be overridden by the user by specifying # a compiler with an environment variable (like you do for standard CC). # # It also sets BUILD_EXEEXT and BUILD_OBJEXT to the executable and object # file extensions for the build platform, and GCC_FOR_BUILD to `yes' if # the compiler we found is GCC. All these variables but GCC_FOR_BUILD are # substituted in the Makefile. # # LICENSE # # Copyright (c) 2008 Paolo Bonzini # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 8 AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD]) AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_CPP])dnl AC_REQUIRE([AC_EXEEXT])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl dnl Use the standard macros, but make them use other variable names dnl pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl pushdef([ac_cv_objext], ac_cv_build_objext)dnl pushdef([ac_exeext], ac_build_exeext)dnl pushdef([ac_objext], ac_build_objext)dnl pushdef([CC], CC_FOR_BUILD)dnl pushdef([CPP], CPP_FOR_BUILD)dnl pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl pushdef([host], build)dnl pushdef([host_alias], build_alias)dnl pushdef([host_cpu], build_cpu)dnl pushdef([host_vendor], build_vendor)dnl pushdef([host_os], build_os)dnl pushdef([ac_cv_host], ac_cv_build)dnl pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl pushdef([ac_cv_host_os], ac_cv_build_os)dnl pushdef([ac_cpp], ac_build_cpp)dnl pushdef([ac_compile], ac_build_compile)dnl pushdef([ac_link], ac_build_link)dnl save_cross_compiling=$cross_compiling save_ac_tool_prefix=$ac_tool_prefix cross_compiling=no ac_tool_prefix= AC_PROG_CC AC_PROG_CPP AC_EXEEXT ac_tool_prefix=$save_ac_tool_prefix cross_compiling=$save_cross_compiling dnl Restore the old definitions dnl popdef([ac_link])dnl popdef([ac_compile])dnl popdef([ac_cpp])dnl popdef([ac_cv_host_os])dnl popdef([ac_cv_host_vendor])dnl popdef([ac_cv_host_cpu])dnl popdef([ac_cv_host_alias])dnl popdef([ac_cv_host])dnl popdef([host_os])dnl popdef([host_vendor])dnl popdef([host_cpu])dnl popdef([host_alias])dnl popdef([host])dnl popdef([LDFLAGS])dnl popdef([CPPFLAGS])dnl popdef([CFLAGS])dnl popdef([CPP])dnl popdef([CC])dnl popdef([ac_objext])dnl popdef([ac_exeext])dnl popdef([ac_cv_objext])dnl popdef([ac_cv_exeext])dnl popdef([ac_cv_prog_cc_g])dnl popdef([ac_cv_prog_cc_cross])dnl popdef([ac_cv_prog_cc_works])dnl popdef([ac_cv_prog_gcc])dnl popdef([ac_cv_prog_CPP])dnl dnl Finally, set Makefile variables dnl BUILD_EXEEXT=$ac_build_exeext BUILD_OBJEXT=$ac_build_objext AC_SUBST(BUILD_EXEEXT)dnl AC_SUBST(BUILD_OBJEXT)dnl AC_SUBST([CFLAGS_FOR_BUILD])dnl AC_SUBST([CPPFLAGS_FOR_BUILD])dnl AC_SUBST([LDFLAGS_FOR_BUILD])dnl ]) aranym-1.1.0/install-sh0000775000175000017500000003253713454637621013217 0ustar joyjoy#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: aranym-1.1.0/doc/0000775000175000017500000000000013454637641011750 5ustar joyjoyaranym-1.1.0/doc/Makefile.in0000664000175000017500000004012313454637625014017 0ustar joyjoy# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @NEED_ARATAPIF_TRUE@am__append_1 = aratapif.1 subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_prog_cc_for_build.m4 \ $(top_srcdir)/m4/ax_prog_cxx_for_build.m4 \ $(top_srcdir)/m4/cxxbool.m4 $(top_srcdir)/m4/float.m4 \ $(top_srcdir)/m4/framework.m4 $(top_srcdir)/m4/maintainer.m4 \ $(top_srcdir)/m4/sdl.m4 $(top_srcdir)/m4/sdl2.m4 \ $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \ $(top_srcdir)/m4/util.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man1_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ARCH = @ARCH@ ARCHFLAGS = @ARCHFLAGS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BEOS_RC = @BEOS_RC@ BEOS_SETVERSION = @BEOS_SETVERSION@ BEOS_XRES = @BEOS_XRES@ BUILD_EXEEXT = @BUILD_EXEEXT@ BUILD_OBJEXT = @BUILD_OBJEXT@ BUNDLE_FRAMEWORKS = @BUNDLE_FRAMEWORKS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ CPP_FOR_BUILD = @CPP_FOR_BUILD@ CPU_TYPE = @CPU_TYPE@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXCPPFLAGS_FOR_BUILD = @CXXCPPFLAGS_FOR_BUILD@ CXXCPP_FOR_BUILD = @CXXCPP_FOR_BUILD@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@ CXX_FOR_BUILD = @CXX_FOR_BUILD@ CYGPATH_W = @CYGPATH_W@ DBGSP = @DBGSP@ DEFINES = @DEFINES@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DISASM_CFLAGS = @DISASM_CFLAGS@ DISASM_LIBS = @DISASM_LIBS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GENCOMP_ARCH = @GENCOMP_ARCH@ GL_CFLAGS = @GL_CFLAGS@ GL_LIBS = @GL_LIBS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ JPEG_LIBS = @JPEG_LIBS@ LDFLAGS = @LDFLAGS@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ LIBUSB_LIBS = @LIBUSB_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJC = @OBJC@ OBJCDEPMODE = @OBJCDEPMODE@ OBJCFLAGS = @OBJCFLAGS@ OBJEXT = @OBJEXT@ OSMESA_CFLAGS = @OSMESA_CFLAGS@ OSMESA_LIBS = @OSMESA_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SDL2_CFLAGS = @SDL2_CFLAGS@ SDL2_CONFIG = @SDL2_CONFIG@ SDL2_LIBS = @SDL2_LIBS@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TARGET = @TARGET@ VERSION = @VERSION@ WFLAGS = @WFLAGS@ WINDRES = @WINDRES@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_CXX_FOR_BUILD = @ac_ct_CXX_FOR_BUILD@ ac_ct_OBJC = @ac_ct_OBJC@ ac_ct_WINDRES = @ac_ct_WINDRES@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ man1dir = $(mandir)/man1 man1_MANS = aranym.1 aranym-mmu.1 aranym-jit.1 $(am__append_1) EXTRA_DIST = aranym.1 aranym-mmu.1 aranym-jit.1 aratapif.1 config emulop.txt hguide.txt all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-man1: $(man1_MANS) @$(NORMAL_INSTALL) @list1='$(man1_MANS)'; \ list2=''; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-man1 install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am uninstall-man \ uninstall-man1 .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: aranym-1.1.0/doc/scsi-driver.txt0000664000175000017500000000465713454637621014755 0ustar joyjoyARAnyM provides a host component implementation of the SCSI Driver for ARAnyM (Linux only). The SCSI Driver standard is an open software interface for the Atari and was initiated by Steffen Engel. Please refer to src/natfeat/nf_scsidrv.c and http://hddriver.seimet.de/en/downloads.html for further information. The SCSI Driver for ARAnyM implements a SCSI Driver on top of the Linux SG 3 driver interface. With the SCSI Driver software running within ARAnyM can access all devices supported by the Linux SG driver. The ARAnyM user needs the proper Linux permissions to access these devices. Depending on the Linux distribution one may have to belong to the groups 'disk' and 'cdrom', for instance. The SCSI Driver for ARAnyM implements the SCSI Driver interface version 1.01. It consists of two software components: 1. Native SCSI Driver host implementation, which for Linux is provided by ARAnyM. It maps SCSI Driver calls to Linux SG driver calls. In order to run the SCSI Driver stub for TOS on other platforms than Linux, this is the code that has to be ported. 2. SCSI Driver stub for TOS, HAT_SCSI.PRG. This component runs on TOS and uses ARAnyM's NatFeats interface to call the host driver. The stub is independent of the host platform ARAnyM is running on. HAT_SCSI can be downloaded from http://hddriver.seimet.de/en/downloads.html. The NatFeats-based interface between the TOS stub and the host driver implementation consists of 6 calls (NatFeats sub-ids): 1. SCSI_INTERFACE_VERSION Returns the driver interface version number. (Note that this is not the same as the SCSI Driver version.) Only if the host implementation and the TOS stub interface version match, the stub can be installed. The format of the version string is MAJOR.MINOR, coded as a 16 bit value. 0x0105, for instance, means version 1.05. 2. SCSI_INTERFACE_FEATURES Returns the host's bus features, which depend on the host system, and the bus name. For Linux the bus name is "Linux Generic SCSI". 3. SCSI_INQUIRE_BUS, SCSI_OPEN, SCSI_CHECK_DEV The host implementations of the corresponding SCSI Driver calls. 4. SCSI_INOUT The host implementation of the SCSI Driver's In() and Out() calls. Except for the data flow direction flag both calls are identical, so that they can be mapped to the same interface call. All SCSI Driver calls not listed above are implemented by the TOS stub. Please refer to the source code (ARAnyM part and TOS stub) for details. Uwe.Seimet aranym-1.1.0/doc/hguide.txt0000664000175000017500000002211113454637621013751 0ustar joyjoy1st step to Hacker's Guide -------------------------- 0) Content ---------- 1) Types 2) Interaction with memory 3) Exceptions 4) HW emulation 5) Emulated opcode 6) Native features 7) Sources 8) debuggers 9) Checking memory boundary 10) Threads and interrupts 1) Types -------- In "sysdeps.h" there are declared platform independent integer types: int8 - signed 8 bit uint8 - unsigned 8 bit int16 - signed 16 bit uint16 - unsigned 16 bit int32 - signed 32 bit uint32 - unsigned 32 bit int64 - signed 64 bit uint64 - unsigned 64 bit uintptr - unsigned type with size of (void *) intptr - signed type with size of (void *) memptr - this type represents Atari's pointer For compatibility between ARAnyM and UAE CPU there are declared also these types: uae_s8 ~ int8 uae_u8 ~ uint8 uae_s16 ~ int16 uae_u16 ~ uint16 uae_s32 ~ int32 uae_u32 ~ uint32 uae_s64 ~ int64 uae_u64 ~ uint64 uaecptr - this type represents Atari's pointer These types are only for interaction with CPU core. It is better to use uintXX/intXX types than uae_XXX types. For compatibility between ARAnyM and Bochs IDE emulation there are declared also these types: Bit8u ~ uint8 Bit16u ~ uint16 Bit32u ~ uint32 These types are only for internal IDE emulation, not for ARAnyM. 2) Interaction with memory -------------------------- For interaction with memory there are six functions declared in "cpu_emulation.h", three for reading, three for writing: uint32 ReadAtariInt32(uint32 addr) uint16 ReadAtariInt16(uint32 addr) uint8 ReadAtariInt8(uint32 addr) void WriteAtariInt32(uint32 addr, uint32 l) void WriteAtariInt16(uint32 addr, uint16 w) void WriteAtariInt8(uint32 addr, uint8 b) These functions have direct access to memory space. They ignore all settings of CPU (inclusive of MMU). All functions for an emulation of HW (DMA) in ARAnyM must become only physical addresses, not logical. For all emulations of SW, there are another six functions declared in the same place: uint32 ReadInt32(uint32 addr) uint16 ReadInt16(uint32 addr) uint8 ReadInt8(uint32 addr) void WriteInt32(uint32 addr, uint32 l) void WriteInt16(uint32 addr, uint16 w) void WriteInt8(uint32 addr, uint8 b) If you want to use underlying memory (memory allocated in HW I/O address space), you can use special, quick functions (they don't make any checking): uint32 ReadHWMemInt32(uint32 addr) uint16 ReadHWMemInt16(uint32 addr) uint8 ReadHWMemInt8(uint32 addr) void WriteHWMemInt32(uint32 addr, uint32 l) void WriteHWMemInt16(uint32 addr, uint16 w) void WriteHWMemInt8(uint32 addr, uint8 b) If you want make some large operations in ST-RAM or FastRAM, you can use two functions for address validation: The 1st is for non-MMU access: bool ValidAtariAddr(uint32 addr, bool write, uint32 len) You can use ReadHWMemIntXX and WriteHWMemIntXX after this function for ST-RAM and FastRAM with no problems. It doesn't check HW registers! The 2nd is for MMU access: bool ValidAddr(uint32 addr, bool write, uint32 len) This function is secure only for len = 1, 2 or 4! 3) Exceptions ------------- If you want to generate some Exception, it can be done with this sample code: regs.mmu_fault_addr = addr; THROW(No. of Exception); If you need to generate bus error, use macro BUS_ERROR(fault_address) defined in cpu_emulation.h 4) HW emulation --------------- In ARAnyM there are two possibilities how to emulate HW - old, classic, Motorola's - to use HW address space mapped to RAM address space and the second, which needs special drivers - to use emulated opcode. For the second possibility look at sections 5th and 6th of these guide. If you want to write new emulated "HW" from original Atari computers for ARAnyM you must use older (but better) access for it - mapped address space. For inspiration look at "hardware.cpp" and e.g. "mmu.cpp". 5) Emulated opcode ------------------ For implementation of ARAnyM's specific HW, which cannot be supported by any emulator of Atari computer, you can use one opcode from 0x71XX. Look at "emul_op.cpp". 6) Native features ------------------ HW (or better functions) which are "emulator-independent" can use Native features. In progress. 7) Sources -------------- CPU: BasiliskII (CVS 28.1.2006) AmigaXL (Amithlon, AmigaOSXL) (14.9.2002) hatari (CVS 2.2.2002) UAE 0.8.22 MMU patch 2 against 0.8.20 IDE: Bochs (CVS 29.4.2005) 8) debuggers ------------ ARAnyM has four different debuggers: a) uae - based on UAE's debugger, most portable b) ndebug c) mon - based on BasiliskII's monitor, it isn't included in ARAnyM's sources, you could download it from CVS anoncvs@down.physik.uni-mainz.de:/cvs You can select a debugger with ./configure script. There are some functions and macros defined in debug.h for debugger output. 9) Checking memory boundary --------------------------- There are many possibilities in ARAnyM how it checks memory boundary. You can choose one before a compilation process (configure script, parameter --enable-addr-check). The most stupid solution is no check memory boundary. It removes all checks of memory boundary, also ROM space can be rewritten. The second possibility is full checking. Before every access to Atari memory it is used an inlined function check_ram_boundary() (uae_cpu/memory.h). This function checks if desired address and operation (R/W) is correct. If not then Bus error is generated. The third, default, is page check. It is inspired (I think, Johan?) ATC (Motorola's TLB). If desired address is in the same memory page as previous used one then check_ram_boundary() isn't needed and the operation is correct. There are three page buffers - for PC, read and write operation. The fourth can be used only on some platforms (today x86 Linux only). check_ram_boundary() is removed and host's segmentation fault signal is used for checking memory boundary. On some processor it can be quicker than the previous possibility. The fifth is combination of the third and the fourth possibility. The sixth is special possibility, there is sigsegv handler used also for handling access to HW pace. It isn't completely committed today. It is used for JIT compiler mainly. 10) Threads and interrupts -------------------------- I tried several different models of threading in ARAnyM. Although they always worked OK in Linux there often were problems in non-Linux operating systems so the current (0.6.2+?) ARAnyM internals are based on the following model: - CPU MC68040 emulation runs in the main thread. The main() function first calls main.cpp:InitAll(), then Start680x0() (which starts the CPU emulation loop) and when the CPU emulation ends it calls main.cpp:ExitAll() and quits. So not only MC68040 emulation runs in the main thread but also all the EmulOp and Native Features, hardware emulation and VIDEL/fVDI screen output. - Then there is a SDL timer thread that runs with 10 ms resolution (wish it was 5 ms but unfortunately SDL is internally locked to 10 ms resolution). It calls the main.cpp:my_callback_function() that in turn calls TriggerInternalIRQ(). This Trigger does one simple and quick thing: it sets SPCFLAG_INTERNAL_IRQ for the CPU. That's all it does and the timer function then ends. It's a very short function (takes only a few CPU cycles) and so it could be called from a real timer interrupt (is there such available?), preferably running at 200 Hz. - There is also a SDL_GUI thread but this one is running only if the GUI is active. The SDL_GUI thread ensures that the active GUI does not stop the emulation - ARAnyM continues running in background! This is an unusual behaviour and was implemented because I wanted to keep the Atari time in sync. We basically don't have a Hibernate option for the Atari so I had to let the CPU running (including all interrupts and stuff). If I didn't do that the Atari time would be delayed. This allows for very cool effects (imagine Lines.app running in TOS and the GUI dialog above it). If we went for GUI translucence it would be astonishing :-) All the user interactivity and interrupt emulation now relies on the CPU: When the SPCFLAG_INTERNAL_IRQ is set we have to wait until CPU emulation calls SERVE_INTERNAL_IRQ() (which normally happens in m68k_do_specialties() after processing each instruction). This function calls external function main.cpp:invoke200HzInterrupt() (as you see from the name I wish it was called 200 times per second). The invoke200HzInterrupt() then does a whole bunch of things including: - emulates 200 Hz MFP TimerC interrupt (calls mfp.IRQ(5)) - emulates VBL (calls TriggerVBL()) - updates screen (VIDEL emulation) (calls videl.renderScreen()) - process user input: keyboard and mouse events (calls check_event()) - shows visual activity indicator (calls heartBeat()) As you see from the model once the heart beat stops you can no longer expect ARAnyM to follow your keyboard or mouse commands. It also means it's essential to have the CPU emulation correct, not falling into any neverending loops or traps. Luckily we have just implemented solutions for the double bus fault as well as bus error loops so we should be on the safe side now. aranym-1.1.0/doc/emulop.txt0000664000175000017500000000123113454637621014005 0ustar joyjoy$7101 M68K_EMUL_BREAK Breakpoint If Monitor is supported then, before ARAnyM ends, Monitor is started $712a M68K_EMUL_OP_PUT_SCRAP VT52 Xconout > console VT52 emulation, char is in D1 $7135 M68K_EMUL_OP_DEBUGUTIL Text > console Write text from stack on console. String in ANSI C form (ended with 0). $7139 M68K_EMUL_OP_CPUDEBUG_ON $713a M68K_EMUL_OP_CPUDEBUG_OFF For changing of internal ARAnyM variable - cpu_debugging. Can be used for debugging CPU internals. $71f0-9 M68K_EMUL_OP_MONx $71fa-e M68K_EMUL_OP_MONx Print CPU state on console. The second set has some enhancements for JIT compiler $71ff M68K_EMUL_OP_DEBUGGER Activate ARAnyM debugger aranym-1.1.0/doc/config0000664000175000017500000001502213454637621013136 0ustar joyjoy# example of ARAnyM config file (by default stored in $HOME/.aranym/config) [GLOBAL] # FastRAM size in megabytes. FastRAM = 0 # Atari floppy device (GEMDOS A:) is mapped to host floppy block device Floppy = /dev/fd0 # location of TOS 4.04 ROM image (can be full path, relative to config file or relative to HOME directory) TOS = ROM # location of EmuTOS (can be full path, relative to config file or relative to HOME directory) EmuTOS = emutos-aranym.img # location of FreeMiNT kernel (full path) Bootstrap = # FreeMiNT configuration BootstrapArgs = # default boot drive for FreeMiNT BootDrive = # UTC (GMT) or localtime? Set GMT for Linux-m68k or FreeMiNT with timezones GMTime = No # Hotkeys: invoke certain ARAnyM functions by pressing a key combination # Format: function = key code : modifiers combination [HOTKEYS] # open up the SETUP GUI Setup = Pause # quit ARAnyM immediately Quit = LS+Pause # reboot ARAnyM (like pressing the Reset button on a real machine) Reboot = LC+Pause # free mouse and keyboard focus - mouse can leave the ARAnyM window Ungrab = LS+LC+LA+Escape # call the internal debugger (if compiled in) Debug = LA+Pause # make a copy of the screen to file in BMP format in current directory Screenshot = PrintScreen # switch ARAnyM to fullscreen (or back to a window mode) Fullscreen = ScrollLock [STARTUP] # grab mouse at ARAnyM startup GrabMouse = Yes # start ARAnyM with debugger Debugger = No [IKBD] # if enabled (set to Yes) then mouse wheel sends Eiffel scancodes # if disabled (set to No) then mouse wheel simulates Up/Down arrow keys WheelEiffel = No # AltGr key is the Alt key on the right of Space Bar on PC102+ keyboards # if enabled then the AltGr key sends same scancode as on Milan computer # if disabled then the AltGr key behaves just like the normal Alt key AltGr = Yes [JIT] # enable JIT compiler JIT = Yes # enable JIT compiler for FPU (if JIT compiler is enabled) JITFPU = Yes # size of cache for compiled code JITCacheSize = 8192 # enable lazy flush (invalidation) of JIT cache JITLazyFlush = 1 # disable compiling of certain instructions (16-bit mask) JITBlackList = # ??? JITInline = No [VIDEO] # start ARAnyM in fullscreen FullScreen = No # set the booting color depth (-1 = follow NVRAM setting) BootColorDepth = -1 # VIDEL generated screen copied to host screen at 50/VidelRefresh (50/2 = 25 Hz) VidelRefresh = 2 # set the connected monitor (-1 = follow NVRAM setting) VidelMonitor = -1 [TOS] # patch TOS _MCH cookie value (50000 means ARAnyM - 30000 would mean Falcon) Cookie_MCH = 50000 # redirect TOS bconout characters to the host console window RedirConsole = No # IDE Devices configuration # update the Cylinders/Heads/SectorsPerTrack according to your drive geometry! # Range: IDE0-IDE1 [IDE0] Present = Yes IsCDROM = No ByteSwap = No ReadOnly = No Path = ~/.aranym/diskImageC Cylinders = 2100 Heads = 16 SectorsPerTrack = 63 ModelName = Master # Direct partitions configuration # Range: PARTITION0-PARTITION7 is mapped to SCSI0-SCSI7 [PARTITION0] Path = Present = No PartID = BGM ByteSwap = No ReadOnly = No # HostFS access with hostfs.xfs # Format: GEMDOS drive = host path # Range: A-Z [HOSTFS] A = B = C = D = E = F = G = [OPENGL] # Enable OpenGL rendering for the atari screen # (ARAnyM must be compiled with OpenGL support) Enabled = No # Use linear filtering on the atari screen Filtered = No # If you don't want to use default GL library, set this value to your # favorite libGL file. Library = # Networking (FreeMiNT with aranym.xif) # Range: ETH0-ETH3 [ETH0] # Type: ptp or bridge Type = ptp # host tunnel device name Tunnel = tap0 HostIP = 192.168.0.1 AtariIP = 192.168.0.2 Netmask = 255.255.255.0 # enter your desired MAC Address here in the format "aa:bb:cc:dd:ee:ff" MAC = [LILO] # Full path to a (optionally gzipped) kernel image Kernel = linux.bin # Command line to pass to the kernel Args = root=/dev/ram video=atafb:vga16 load_ramdisk=1 # Full path to a (optionally gzipped) ramdisk file Ramdisk = root.bin [MIDI] # Type of MIDI port emulation: # none -> No output # file -> Output to file # sequencer -> Use /dev/sequencer device under Linux Type = file # Output to file, filename File = /tmp/aranym-midi.bin # Output to Linux /dev/sequencer device Sequencer = /dev/sequencer [CDROMS] # MetaDOS physical device letter = SDL CD-ROM drive number # Range: A-Z A = 2 W = 1 Z = 0 [AUTOZOOM] # Automatically resize the atari screen to the host screen size Enabled = No # Use integer coefficients to resize the atari screen IntegerCoefs = No # Use a fixed host screen size whenever the Atari screen size changes # If in fullscreen, you can set FixedSize=Yes Width=0 and Height=0 # to use current host video mode FixedSize = No # Width of host screen if fixed size Width = 800 # Height of host sceren if fixed size Height = 600 [NFOSMESA] # Channel size (16 if you are using libOSMesa16, or 32 for libOSMesa32) ChannelSize = 0 # Library to load for standard OpenGL functions (not needed for libOSMesa[16,32]) LibGL = libGL.so # Library to load for OSMesa rendering functions LibOSMesa = libOSMesa.so [PARALLEL] # Type of parallel port emulation: # file -> Output to file # x86 -> Hardware access under Linux/X86 # parport -> Use /dev/parport device under Linux Type = file # Output to file: filename, stdout, or stderr File = stderr # File = stdout # File = stderr # Linux parport device for Type=parport Parport = /dev/parport0 [NATFEATS] # CD-ROM driver to use # linux -> Use Linux ioctls() for CD-ROM access (audio and data) # sdl -> Use SDL functions for CD-ROM access (audio only) CDROM = sdl # CDROM = linux # VDI renderer to use # soft -> Standard software renderer # opengl -> Hardware accelerated renderer Vdi = soft # Vdi = opengl [NFVDI] # Tell Aranym whether to use host mouse cursor, or standard Atari cursor UseHostMouseCursor = No [AUDIO] # Host audio device settings # Frequency Frequency = 22050 # Number of channels (2 for stereo, 1 for mono) Channels = 2 # Bits per channel (8 or 16) Bits = 16 # Size of buffer in samples Samples = 1024 [JOYSTICKS] # Joysticks settings # = Ikbd0 = -1 Ikbd1 = 0 JoypadA = -1 JoypadB = -1 # For host -> Joypad button mapping: # A B C Pause Option 0 1 2 3 4/L 5 6/R 7/X 8/Y 9/Z * # JoypadAButtons = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 JoypadBButtons = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # Example for Saitek P990, only KP2,5,0 not available #JoypadAButtons = 9 3 0 13 12 14 6 15 7 4 16 5 8 2 1 10 11 [SERIAL] # SCC emulation: Linux serial port device driver Serport = /dev/ttyS0 aranym-1.1.0/doc/aratapif.10000664000175000017500000000253613454637621013625 0ustar joyjoy.\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH ARATAPIF 1 "April 11, 2003" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME ARanyM \- Atari Running on Any Machine \- aratapif .SH SYNOPSIS .B aratapif tap_device host_IP atari_IP netmask mtu_size .br .SH DESCRIPTION This manual page documents briefly the .B aratapif program. This manual page was written for the Debian GNU/Linux distribution because the original program does not have a manual page. .PP .B aratapif is used for setting up the network device in ARAnyM. It's basically stripped down version of standard ifconfig command that works on the TAP device only and so it's safe to setuid root. .SH AUTHOR This manual page was written by Anton\['i]n Kr\['a]l , for the Debian GNU/Linux system (but may be used by others). aranym-1.1.0/doc/aranym.10000664000175000017500000000611713454637621013324 0ustar joyjoy.\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH ARANYM 1 "January 29, 2008" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME ARAnyM \- Atari Running on Any Machine .SH SYNOPSIS .B aranym .RI [ options ] .br .SH DESCRIPTION .PP .\" TeX users may be more comfortable with the \fB\fP and .\" \fI\fP escape sequences to invode bold face and italics, .\" respectively. The main goal of the \fBARAnyM\fP project is to create a virtual machine that would allow everyone to install, use and improve Atari ST/TT/Falcon/clones operating systems and their applications. .SH OPTIONS These programs follow the usual GNU command line syntax, with long options starting with two dashes (`-'). A summary of options is included below. For more information see project documentation. .TP .B \-a, \-\-floppy NAME floppy image file NAME .TP .B \-N, \-\-nomouse don't grab mouse at startup .TP .B \-f, \-\-fullscreen start in fullscreen .TP .B \-v, \-\-refresh VIDEL refresh rate in VBL (default 2) .TP .B \-r, \-\-resolution boot in X color depth [1,2,4,8,16] .TP .B \-m, \-\-monitor attached monitor: 0 = VGA, 1 = TV .TP .B \-d, \-\-disk CHAR:ROOTPATH METADOS filesystem assignment e.g. d:/atari/d_drive .TP .B \-c, \-\-config FILE read different configuration file .TP .B \-s, \-\-save save configuration file .TP .B \-h, \-\-help display this help and exit .TP .B \-V, \-\-version output version information and exit .TP .B \-F, \-\-fastram SIZE FastRAM size (in MB) .TP .B \-D, \-\-debug start debugger (if compiled in) .TP .B \-e, \-\-emutos prefer EmuTOS for booting (normally prefers TOS) .TP .B \-l, \-\-lilo boot linux kernel directly .TP .B \-S, \-\-swap-ide swap IDE drives for this session .TP .B \-G, \-\-gui open up SETUP GUI at ARAnyM startup .TP .B \-P position ARAnyM window on screen (enter coordinates for upper left corner) .TP .B \-k pre-set selected keyboard layout and system language into NVRAM (CC is ISO country code) .TP .B \-H, \-\-halt halt ARAnyM when linux-m68k guest system tries to reboot .SH SEE ALSO .BR /usr/share/doc/aranym .br Directory with further reading. .br .BR /usr/share/aranym .br Directory with some useful tools and utilities. .br .BR https://aranym.github.io/ .br Project web page. .SH NOTE .br For proper use of this package you will need image of Atari Falcon TOS ROM image file or you can use open source ROM image from EmuTOS project at http://emutos.sf.net .SH AUTHOR This manual page was written by Antonin Kral , for the Debian GNU/Linux system (but may be used by others). aranym-1.1.0/doc/aranym-mmu.10000664000175000017500000000220113454637621014106 0ustar joyjoy.\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH ARANYM-MMU 1 "September 22, 2006" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME ARAnyM \- Atari Running on Any Machine with 68040 MMU enabled .SH SYNOPSIS .B aranym .RI [ options ] .br .SH DESCRIPTION This is version of aranym built with full 68040 MMU and integrated Linux loader (LILO) for booting Linux-m68k. For more information about ARAnyM, please, have a look at aranym(1). .SH AUTHOR This manual page was written by Anton\['i]n Kr\['a]l , for the Debian GNU/Linux system (but may be used by others). aranym-1.1.0/doc/aranym-jit.10000664000175000017500000000220413454637621014101 0ustar joyjoy.\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH ARANYM-JIT 1 "September 22, 2006" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME ARAnyM \- Atari Running on Any Machine \- JIT enabled .SH SYNOPSIS .B aranym .RI [ options ] .br .SH DESCRIPTION This is version of aranym built with support for JIT (Just In Time) CPU compiler that makes ARAnyM about 10 times faster. For more information about ARAnyM, please, have a look at aranym(1). .SH AUTHOR This manual page was written by Anton\['i]n Kr\['a]l , for the Debian GNU/Linux system (but may be used by others). aranym-1.1.0/doc/Makefile.am0000664000175000017500000000032113454637621013776 0ustar joyjoyman1dir = $(mandir)/man1 man1_MANS = aranym.1 aranym-mmu.1 aranym-jit.1 if NEED_ARATAPIF man1_MANS += aratapif.1 endif EXTRA_DIST = aranym.1 aranym-mmu.1 aranym-jit.1 aratapif.1 config emulop.txt hguide.txt aranym-1.1.0/data/0000775000175000017500000000000013454637621012112 5ustar joyjoyaranym-1.1.0/data/wm_icon.bmp0000664000175000017500000000606613454637621014255 0ustar joyjoyBM6 6(    񪪪lll???$$$###>>>jjjkkk  hhh|||QC:_H>X=3O2(I-#F,"J/%T;1R?6/*%xxx6662*%sbq`VFa6(D4/08L$g=-VGcRB92111p̗XH3+///.) [/!jVkZ 1nA3񿤹p(% 1(,0///0/) yE2k H.͏u}VG'+ /&, 0///0.&/*`0 n&&&Z1&}mfXA843 @&L3)YC9I m ttt]*H0+}wuvsfekXPaLK6B'V?5'q;(}bTO3vmfQK&3 !Ḳ"p]UYB8iTKjQ81+^^^ǀZ ud\7$9gSJ?#{u$*  Z,~]Lއ]/7xg_- ) J9;{y sc[ePHR>)$!‚md ! 4wf^}/ / f[[xgegRQſſn\Xr`Xo]Zzib{XA7f9&R=3```M:( 10XA:w$%( ~x'~4 3 2"4* I!U9-444X4& 7/04 5 "//4O1#* 7/59%&?$|jc0- ÿ@/1/, //. M/" # 4/" R:.nhJ1-pqQ90sa^p][mZVo\TV?5,2//- P2$ (// vn9 #8="#Y@4+ * 0// W6' 999 .'2zjb! L3)\F=+ 1-> `?0444fff" =! 5.11 yso\U0$H68½2saZ"\0gJ;^^^ \" ( *# O7-oi' ePMwqpiieffRIM4+2 xppygfO82!P:^I>9V'tc[;#y(%2bMF7#,"oW("mecd'iJ$ /'// ;"{I6٪oooS((cB92.4wf_6#//3E,"¿%uC/"""I ǁaQOL#3%.0///1+ #%(+о鲖4ipOי 42///0.- 1 ' ԳX2]118걌ҡwRB4  */353)-᭏xvCB"fCG+[$B81( My~ge/ 8I =()\fB쩥jgg999*!YB;qgƩaranym-1.1.0/data/logo.bmp0000664000175000017500000341006613454637621013564 0ustar joyjoyBM66(  ųwww[[[LLL777$$$++++++(((,,,%%%444IIIWWWuuuҾyyy^^^NNN:::%%%  ###666LLL[[[tttٽ|||WWW>>>### 999QQQwwwΦWWW222,,,RRRxxx滻bbb444 ---YYY꼼WWW)))"""PPP֣nnn999 222eee֛^^^&&&VVVᦦiii,,,!!!\\\zzz:::///nnn覦]]]PPP䚚LLL >>>ڑFFF===蘘DDD555񣣣OOOCCCiiiZZZ܋111###{{{TTTCCC㋋+++zzzbbbQQQEEE444򍍍)))|||}}}lllnnn \\\dddPPP```NNN___OOOjjjVVVwwwbbb     pppοȸɹ°ij!!!                                                                                                                      ! !!                   ɹ;ykabXe[sj±Ƶ;zqJ?e;.`3%_2$`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%c7*lC7yUJul{r~[PkC7d8+`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%a4&b6)c7*^3%a6)d7*a4&`3%`3%`3%`3%`3%`3%`3%`3%`3%`3%a5'i>2{WL888 " '7B BBBBBBBBBBBBBBBBBBB ><BBBBBBBBBBBBBBBBA8*2 4 +9A BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBA;3 9 3 ;A BBBBBBBBBBBB ;%   %,=T$d4&h7)f5'T&:$    )=B BBBBBBBBBBBA 7" '''ȫuODg;-a3%_/!_/!_/!_/!_/!_/!_/!_/!_/!_/!_/!_/!_0"h;-pH<~uijyqiB8\- e5&wG8~M?}M?sB4c3%c7+bXȸsjkA5e8+_0"_/!_/!_/!_/!_/!_/!_/!_/!_/!_/!_/!_/!b4&k@3\RÓtkj<.se~pzmzlzlzlzlzlzlzlzlzlzlzlzlzlzl|n~q^OM AwF8~p}ozlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzlzl|nxj`Rn`~pzlzlzlzlzlzlzlzlzlzlzl{m~qoamA4YYY  ( 9 }K<}oq|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|npsdo`~p}n|n|n|n|n|n|n|n|n|n|n|n|n|n|nprUFHIUFqp|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n~osVGP SCpp|n|n|n|n|n|n|n|n|n|n|n~osbSA  ( 6 a/ ZKyjɖۨ߫ݩ˘zkM><! # L eVq~o|n|n|n|n|n|n|n|n|n|n|nprPB2  GGG֮j>1fX~~~~~~~~~~~~tn@2vnťa7.Z([Mtԣ칪MM赧ʚwiuE6[.!}tdZk:,t~~~~~~~~~~~~dWwPE幥g;.|۱ت㲤㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥Ᵽ鸪꼰VHT"ϣ֪߯㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥Ᵽѥ͢٫Ᵽ㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㲤㳥乬{nqJ?Ƕ  , EeV嵨ᆵⱣ㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥تʠΣ٫㲤㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥Ᵽ뺫繬wF8h5&ݰӧᱣ㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥Ᵽӧ˟yiʞ౤Ᵽ㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥ⲤⲤ蹫cT" '0[(k\ӢĵȜ{uyǛwiJ "  0 iZ溭ᱤⲣ㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥㳥Ᵽ᳥߰xG9nnn{WMbSⷫʟʞϢϢϢϢϢϢϢϢϢϢϢϢΡ͠ⶩd7*lcL QCțŶ趨kbbYc[rhƚô緩qcT#h^ÿڨW&䷪Ρ͡ϢϢϢϢϢϢϢϢϢϢϢϢʞʟᶪYKtl᪓i9+ңʜ;-)0%!5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%3'$B3.͞Ӣyl۩pf#5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%&kRL︨mc3'$5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%4($8*'ңj<.(((# .Q {m´դS@93'#5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%%+!ʛ1'#5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%3'#J93اʙ|o߭f]"5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%$x\TؤɚڨoUM3'#5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%3'$P=8ثzA  * ; ~J;˜ȹԥe\B2.R>9Ƹzk>   ! H y٫S?93'$5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%5(%3'#lSKoa-ɹg?2rdXD=yn鷩sB4mcĿf[M tg赦kb;-)ZE>ėƸU#mc{WMp?1津|r_IBk]}ZO淣Z,ylmSKK94̟ƗѠ{oUN}֤h7)\WV& 1b-ǸÖ-"e\߮糤YD>]GAǚəɛ ~ܷҲৗ@1- Х˒>kG,  , GfW꺬ﻬj`$ 񿱄RB'  & Mxܭ =/*n_6  <<<̽jA6RDôqWObKDǸ\NlE;͘zqGzmƸėA1-tǸvOij\1&XJǷhPI{^V~N?^Tÿ{WLW&ƙ³L:5d[봥֤˜ pf鳣ުz]Uӡq@1rUL  )6r>.͟ȸs #ôy﹪;,(si鳤ܨ}r⯤עڪإQ>9&Ð֯鸞֚~bbAH&z/]C+  .R |nõاO<7<.*򾯶vA  (M u۬* N<6𽮞l\7  sssǁ^Sc2#դ8+'빫wi]1#ݳL\Oõ~ŶaSX,#⯗O ug<.*ϟ_-|t޶O!rB4嵨۩ݪ污ukQ=8ɜީz]U֣b1"   , < RCݯh^@0,դŶ}pFwG9컭ϟ Ǚץ곤g^dLEö~,gM绱Q>9&խ븟֙zxWW44`B-%0 A h1Ǹ”(ؤ`/!!  (M u۬* N<6𽮞l]7  """١~L ~q趨1&" Ǜǖ]-˼lD8d3%ګ㯡"ୟܭg5'|YOԕwoX&ŕɝ 9,(zmW)Μw> dWƷx&߫͝쵥\F@ݪϟnaᬝ{^V֣`0!$   - EhZ뺭hOH_HB鴥l^KDGpcȹuk5(%氡ș”괤I83)泥թD+`n\켰Q>9&ʡɐ}pCVޗsﲑдտ鱔ҎjoHY.T7ǚƸ~s jaxF7# (M u۬* N<6𽮞l]7  [[[﹥T&]OǷiQJuk赧p?0i_И{rF~qɺiOHdLEȸtL xSHo>0紦wlqWOƷXJg?5˼½}YMJzȹoTMYD>쵦̜ޫ%uǸQ@i8*ﻬ{^V֣`0!#  # .S{mõ٨H72bYᲥXI> 5;=T ŵ]G@mSL쵥ҢգbNei#n\켯Q>9&Ѩv*pmy"0E!_9~WyĭҜ𻮈h^w[S󿯄RC( (M u۬* N<6𽮞l]7  mF:n>/津|qiQIƶYLmG=¾㻦P"PB~RD_6.Ƕij^2'YKŶjQJvᯡk:+g]俬]1%a0!Ԧﺪ6)%rh籢ݪiPIȸ{9uD6{^V֣a0!$ ' 2a,ȹ( {pƷѣxD48+ ' 5n;,ۭ岣't㯟⭟w}_Vƹqj$ m+h$ n\켯Q>9&ҧy{2`$ QLOSYds. C ^9ւ[릀̪ʜ⮟jQJpVO򾯈VG+  (M u۬* N<6𽮞l]7  _YWѲU#֧:-)wi^3&zVKY'ʜ4($2&#ﺫ˝Y'md⯘P uh;.* ܬ|V&تD PBᄚ˜  Țإ봤cZ-# 붧ةc2#0QB{^VԢd1"1    -6t?0ΠǷs #ɹe0 3(  + ? ]NԢӢ쵥mTL=.*͠{:!\b*e"o\켯Q>9&ԧyr.T C ?CFKNPSW`r 2@mBϘҜ֢K;6rXP򾯇UF+  (M u۬* N<6𽮞l]7  woe5'k]ŶR?9 ɜŕ],إCnaʻe\d[ʻoaNԕwoX&ƖȜ XC=ƷgY]1%òȏpfArfɺpf4($䰠șÕ괣E50VG= DO@{^VҡX%90 %#$$$$$$$$$%+ 3 ATEޯ²f\A1-צĵqU ." + L h# |md[E50鳣Ėș寠4(% ̞渭WBYQ"S"b o]켯Q>9&ԧyn,N <57:<?BFM Y" k)v!;~nథŗ-# rXP󾯅TF% (M u۬* N<6𽮞l]7   DM=iaxn津n=.kaò\1'qA2涨ϟ Ξ涨rB4oH@xSHo>/給wloewG8xSIɹnF:S!•ĵVA;lSL쵥ӢӡbYɺzmD^1#IO@{^VҡrB3b/ k8)i7(h7(i7(i7(i7(i7(i7(i7(i7(i7(i7(i7(j7(d/dU뺬붨eMF`IC鵦k]E+   $0?Up:Č}鵨F62bY봥٦ǘ qgƹvedO B M a p]켯Q>9&ԧyl+K 9134569?L ^% kM0Św rXP𾰑UA8  (M u۬* N<6𽮞l]7  . c/џmSLŶWIoH?ÿɊi_N ĵN;6N;6ĴO xij]2'XJŶkRK ƚ˛[*v߷Q#l<.ౣ⯠"u㮟䯟~sC3.˞Y'pH=}t\/"O@{^V”쵥ܫެެଞଞଞଞଞଞଞଞଞଞଞଞޫެئC2.bZݰUF= / %   (3<BMg3c;m㶚˜Ҡޫ貢qgT@:³ĕt0S@ 9J ap]켯Q>9&ԧyk+I 6./014:H W hZCҨkarXP溯oO D  (M u۬* N<6𽮞l]7   +G{m:,(>/+tf^3%߰G_QƸzozoǸ^PV)!尙Pug<.*@1-񾰥vhW)Ҡ|? _Qĵ~ӢӢ봤lSL ѡ꺬xI:\0(f<0O@{^Voe|uvuuuuuuuuuuuuuu{v' {qƷ̠wC3@ <2 /5=DOh2]8kʥӸ՘t$ݪΝ괤ZE?ܫݰK4WH55J ap]켯Q>9&ԧyk+J 6.-.18GVi!hV൪칪nTLqVOؤȴápF0 Q+  (M u۬* N<6𽮞l]7  !6 ZKƷrWO ʞĔ]-;lD8d3$ت⯠ !⯡רd3$]S֖xpX&ŕɝ v[SŶTGjC9Ϳ`VGsɺ{]UC4/鳣ĖșҢkbf]h_h_h_h_h_h_h_h_h_h_h_h_h_g^d\qgoe vkȹm`G ŴjA5O@{^V%|o6#PO C BEPg1\8m̨Ȧ䩛iPIVB<쵥̜͞iaf^h_h_h_h_h_h_h_h_h_h_h_h_h_g^d[ukg^ yökX_N 9/5J ap]켯Q>9&ԧyk+J 6./29JUo*zi꽱ެM;5qVOט~]5|#F# (M u۬* N<6𽮞k]7   0 o;,ᯡwxn岤m<.oeΛvF}pɹiPHjQJɹ}pM ÿxTJo>/給wm{ݫh7(mcña8*\+ϡ>/+bY뵥鶧츪츪츪츪츪츪츪츪츪츪츪赦ܨଝ˺tYQXC=ŵPf\˻jA5O@{^V^HB泥m*cs2[ Tc+ U0fǢåəᮠ0$!pg鲣}’綨鸫跩跩跩跩跩跩跩跩跩跩跩鹫岤ܧ䯠ɷbKElRJŷ{n)S? 2-5J ap]켯Q>9&ԧyk+I 5.2< M Xy6{÷ʛ1%"qVOכҳ׌dEe5 .N rܭ* N<6𾯚hY: -R|ݭ"oVNŵUGnF=T'OA}N@f=6]1&XJŶkRJ&ఢxV&ۮGzJ<뺭Ң 鶧j\e4%yH:yH:yH:yH:yH:yH:yH:yH:yH:yH:yH:yI:sB4n=.v񼬎mc!ᯠ߰l;-c90Ƿ˼h?3O@{^V^HB߬ئyiK+45N)׀YǡaoBz^ܲÖ ƘᰣgVA)S?S>T>T>T>T>T>T>T>T>S>S>K5L6|{^V0$!鶧Ӧ@(VE 5/.5K ap]켯Q>9&ԧyk+I 63> P [C,ǚŷzqWPإᨌܵ򵒿jB*L' 9Ku㲤0%!XD=ôhZ; .  % ; hYƷ[E?A2-򾯡rdS#lakA5W&ɚ5)%8+'ȚW%uODbWL vh<.*_HBƷcU`5*Ŵ˕vm@ l_ȹxn#㰡קZ)-H\/"mE9pI=nG;nG;oH9&ԧyk+K < A Q `T?ԧ´pfrWP೨rUe9mڻَgAa3 - < SEᯡ֥;-)춧ҢtA21!  1|H9𽭓pf ΠV$N @ m`ɺg^h_ɺk^? L X&ŕɜ sitD5{YN̾uPEO ƶaJCT@:óėT"U'Ŵ;k`Ae3%ة붧0%!rWOȹvHulnE8~N@{^Vz]TⰣԤɷسomMM,2r$hi#r-- AřO<6gOGŶq,d$ S#F B B C B D K a*fI3ܯட!f\ƹ}mg"Q < 2/..5K ap]켯Q>9&ԧym,S M!Se fS೧sXPrXP纮cF)7M-uSЫ\4vA"( 6|I:⳥춨G61bJD²ӥg3$*  /^*˚ɜ {p䲣n>/0p@2嵧Р  Ӣ㴦n>/0o>0岤yo ̟ǗZ({ỦV(h7)ܭ败* ndɺviI |Ϳ}YML ~ǸhOH3'$ӥ`/ oJ>̾AOA{^VK:4գɐֻơ}\Y9:x) m!e b"]! X Z# i,u%T9ܱܪ|qķraaO < 31127F Yu1Ö´UA;D4/ʜz6UC 3//..5K ap]켯Q>9&ԧxq.h+]l' ve뽱ᮠS?:rXP麮eL{(n%iv'?bBnŢtK, K(! 2uA1ܭT@:z]Uƶɚ['(  )DvhB3.pVNŶ|K=9ĵP=7T@;Ŷ|7~N@ƶoUNF61reX+ԥAYK ƘTF\2*ñڧH h[ȸ~s Ƙ𿰁RCR$)+QB{^V3'$ԡǐnkJI(/q$h c!_" Y! T O JIP d(q#mYyԣ巫U@TF 4.-0< R eyhƹpfӣ㵩S9&ԧyr/dw4y¶͞6)%rXP꺮bJo$c']" ^do!4S3]۶ڻև^8_MMt=+Ҧ²dLEoeȸQ'  4 VFĵy]UD4/𽮎_QRBĵ|q~sô~O?bS?1-~`WĵQCmG=¾Ĉf\D{nɹf]0%!뷧٪e4%wRIĿ伨U(vG8踪֦jaɺuhD|3 QB{^V6*&ܩɗ܎mi?D!{) m!e b"\" W Q M GD@>AM a# v+zŸsWO@1,С|;"QA 208M \\G躯ɚ xmŸrabP ; 1///..5K ap]켯Q>9&ըw`{;$–Ÿ}rXP뻮aJe V" M Q Y ^!ck~+ G&tS~ϩpT&M+ƙôvYQuȹtG&  / k7'ܪ~ɛĕ̝߬! xn %㯠ɚŕŘ اd3$qgŴh?2X&ɛG61fNGǸM zq;sMBZ(˞F50I72ƙU#}ZOuuu 2 QB{^V]GA踬xB*m' b# Y! T O J GD@>;88>N!`?'Ф8+'z]TƸwi& N= 8GX?'ӥ칪6)%\F?õr.S@ 3////..5K ap]켯Q>9&ԧ}lJ5͠ĵshrXP컮_J^N CDKP V ]! bhw'B"iIuǢȏ}g^ Ķte> $ ,N w㲤+!yn۩﹩lSKqWOiPIrWO﹩ݫvk,"崦tV&ܳLtD6涩٧|qȸl^MkaE}pɺcZا涨tC5\1(MMM 2 QB{^V{p滲iP*j+W NIEC?<:87545= T#bZE纮˜ }iV\P! KWo)|ŸoTL%⯡ۭH1WG5/////..5K ap]켯Q>9&̝զx[SS?: rXP^JZI <;ADIO U \! ags%;`@oœƩ䬝ujϟgX9 $  # 9 cTǸcLEqWOò!ݪݬئ±lSLeMGǷ_Rc9.ǷΚ}t? gYǸu ӣ뺬zJ ZL´}rȹgYG --- 1 RCtXQ(ᱤƖ=f% Q E@=<:86543125A X" i!wfŹrh!߭ޱK6_j-dm[öw}fS^N 90/////..5K ap]켯Q>9&Ƙᮟ⯠XC=xmѠrXP^JXE 659<?DHM U [" a!gq"8a?pȟǧڝy)ޫYJ3"  1 wC4븪wlH72ȷ;.)yo汢}賤ujC3/ȶB3.xm鷨p@2]R{VKK |ǸkRJ?0,Т_..k;,ݮ沣'aKDƷM i` ,TF񾯃d[ pf뼰]EcO @;976533221005E [v1”ôYD=Q>8Řx6]P:೧ڨuYQƸvk& R > 2//////..5K ap]켯Q>9"봤ئ:-) ~sIJyrXP^IVC 42469;@CGM S Z! b!i!}, DqG͔~ڥ;,(굦䵧L9<.*ŗ$%ԣvrXP^IS@ 2033469=>AFM X! i*}- 2r[ݯƘ Q>8ݭr>/+  ( @qc´K94  ɛ踪uE7(yI;뺬ŗL:5ônaY-תC QDǙ |屡춧ukôZKHį ! :M>ǕÐÑÑÑđĒŒőywȏ}єӞӧөөөѥӡڢݩƙ]G@̠ǔw3Q =32211100/////2< T"cfSĖܪﺫg] ɛ躯[E[L70///////..5K ap]켯Q>9 B2-֥깬q͚zrXP^ITA 1-0223369;>F U" l( ,s]ⸯРfNGóҤe1")  3QB³d[|^VʺrdBP CuhɻwZSe\³}N@rLBǍlcBviɺmcڨ취̝ z]TɹrD}tq%0 J W&V$V$V$V$V$V$V$V$V$V$V$V$V$U$U$U$V%X&['^(a*e,i-m/q1v4|7:<99J"pJyЪؿըզgNGwݫC,Q= 211110////////4B Y! n& tƸ|_V.# ᮟ뷨lbƹzje Q < 2////////..5K ap]켯Q>9aIB紥湭aOw6ў}rXP^ITA 1../012336=I _% q#gQᷭܩ)}_WƷșZ'( / f3#֤,!鵧ϡ]+h?3si[.!_-ѣ败(ԣa0!vmȸmE9S!ÖĴS?9ZF?ɸA2-<.*Ρ[*mc_VS ! & ) ) ) ) ) ) ) ) ) ) ) ( ( *,/26:?CI N U ]# e& n) t'|'8`:qѩߺҌoɚ߭(md絧O:Q> 2000//////////06I\~:!̟A1-pVNƴ.# N;6Ƙw3TB 3/////////..5K ap]켯Q>9cZڮ]I]x6֦|rXP^ITA 1.////0136A W"g_Hߴ㰢7)&pfȹO &  +J q鷩4'$xôWIS%E YKĶu3'$긪}pW(޶O o?0㳦߬G61 ̝zL>sG=ʺLA=                ! &+17? G Q [# c k0X6n˦ɥ܆dlDMqW뾳eNFbZXBR? 1./////////////1:P"_U@䷪Ң D40ڨ೧O9XI7//////////..5K ap]켯Q>9 ynĶΡL6ej$ @*դ|rXP^ITA 1.////..2> R"`T>ۯ뷩F50ǘ5)%wǸqE% "7 ^OǷkRKWB<ǷyI{rƄbXL {ŵT?:jQJƷ\Nd<1ʻОy? aTŶ|pfɹpca1#@2,    %+29BL U _g~, Q0gŠͨ܄d_=C >,eIiQJbZ캬XBR> 0.//////////////3> W"fraĸzos÷n[`O :1./////////..5K ap]켯Q>9"Ÿ=%\a(e% @)֤|rXP^ITA 1./////29M \L4֪WB< ə Ŷse?%   1 r?/津~s Ԥᱤl<.iB8˼羫V)o>0㴦Ң }r峤n=.bXÿ]RHwɹvZQR?9Ĵd2#jaA-%            #&(,04 8 > D J R Z# d(m( u&/ P+݃`ֱkjGI%3/ ,=|빬>/+lc趨P:O= 0.//////////////04D [s.ĶcKDeMFĶp+S? 2///////////..5K ap]켯Q>9<.)ԣtv1WN!J Y@)פ|rXP^ITA 1.////19L YB*ФfNF|ᮠߨ~ѡdV7$ .U#بi`ʻj\H ҝx? l^ʻh_רX'`5(],ѣ<.)ޫ⳥wE8f<2A'      '4 6 7 9 :<>@BEHLOSY]d j#r'{+ / 2 >^4iȣ޶jnEM!6 18CX<{µ}qzpⰡG0M; /.///////////////07L ]E-֪紥,!* 泥֩C+VF 5////////////..5K ap]켯Q>9[F?岤躮q`l% VH:@ T@)ץ|rXP^ITA 1.///18JX<#ʝõwZR{p㰥Ѧ̰ܡwm* ߬컭WH3"   & =l^ĵS@:7*&ǚW%cY̽rK?W%ǚ6*&S@:ĵj]\/"ڬF |L>Ο wƷeWQ ?       , [*eVk\hXhXhXiXiYiYiYjYjYkYkZlZmZn[o[p[q[r\t\u\w]Ȇlڞ沝­˹¿»º¹°ܼܫ۞ёzƒjw^qWt]{erȖ巬yϝv7L8..////////////////1; S"baN쾲bO\M 80////////////..5K ap]켯Q>9{^UܱaLeTE 62> TA)ץ|rXP^ITA 1.//07IWy5ėŷh^od}mԫÞ⫞aX>/+붧嵧~J:.!   1M=󿰋ka~OAW+#޳IOAjazJ9vlĶϣP:_S A 5/0= TA)ץ|rXP^ITA 1-/06GVs.ķujbYµ×N'HnI̮ě䰢aJCS?9۫o<,,  / b.О—fNGȹ~qG{ʍlcF~qȹfNFϟ^-zr˼sL@PŶ\F@/$ 뷨ԧk6%B2            )QA뻭uA1-T@;UA9ŷÖ?'[P ? 40./> UA)ץ|rXP^IT@ 1-05E Uo)wķurVNʠL+,/ 1 P*jɠ䯢D3/iPIôѣe1")  *Gzl<.*ެګf5'qJ?ò^3'f5&ګެ9,(ylW*๥S&j9*ޯ岣&￲XHI= "   3i1Ξݮ*ݭH1P= 0.///////////////////09O!^P:೨٨ Ο測WAYK70//////////////..5K ap]켯Q>99,(Рövw3YM < 3/..0> UA)ץ|rXP^IT@ 1.4C Ul& oöaICѧM1v%m-g'j% x'?zMܞѩܩ+!aYǸǘX$(  6 YJƷsXPsiȹcUKץAbTȹtjpVNƷXKg?5̽ԣ@ [Mõd[ȹ|n[D+   4 IN;ᴧட$VB<örf$ K 7/.////////////////////2= U"em\övsiŸuddP ; 1///////////////..5K ap]켯Q>9XC=㰢躯udm' VJ92///.0> UA)ץ|rXP^ITA 13A T g!vfŗ R>8׬Q8ja(T S Y! e% v) 6`2ˏwܳ͝siǸ}O &  0 n:+ᮠyD3.Z'ofÿzVKQE50w௠k:+g]ÆcYE~qɺbYC3.˞s3I4 #         +E VgV ΟದM6TB 3.//////////////////////4C Y q+|ŷnSLUA;´Ôt/SA 3////////////////..5K ap]켯Q>9w[Rﻭ߲cPeUF 71////.0> UA)ץ|rXP^ITA 5> R dm[콱ѡC3.궧ݲV@dY$J DFLT c% t+3 O ‰t弲xǹqE&  -Q{߮$Ö컭wG9Q&ḣN wG9뺬Ř ۫|V&ųe9shõѥS=`S B 51/////.0> UA)ץ|rXP^IUD @ P beR躮ܪ(6)%Ⱑⶪ`KcT! C <;?DIQ _$ s-3 Gzwl •ĵqb= $  % ; fXƷ\G@tYQʺxi?$ϖxoBugʺw[SYD>ƷgY^2&ñ۱JwG9鸫֥vlƸra\H 1% !                " # % (2F]{4–µeLEcYõ“t0R@ 3/////////////////////////1;R"`\H黯ș yµjW_O :1/////////////////..5J a p]켯Q>9|ŸƘC+\Q ? 40//////.0> UA)ץ|rXP]IXN S!]\Hⶪ屢7*&'ڨ躮fScT A 6469=AFN \# r/2 IÕaXӢdU8$  1{G8qg%岣զe1!- Ǹh>2_-Ҥ紤(newG8xSIΗzq? h[ȹ~s\E?õo,N9 *% # # " ! ! ! !   ! ! ! " # $ &'),.3? W$j J/ѧ귩9,(h^Ρ>&VF 6///////////////////////////2@ X! i"yiƹoenTLŸzm( S> 3//////////////////..5I ` r_뼯M;64($͝÷zx4YN < 3////////.0> UA)ץ|rXP]Ib d*^R=ܯ취F50С뽱n\cR @ 532368;?DK Y" q/1 P+ʟcKD,!ᮟ컭UF2" . ]*ʙʝ }rŷ^O5$ ۬C YKŶu ƚ˛\*~vͿxSGL ǸiOH#⯡ۯH1TC0)'&&% $ $ $ # $ $ $ % &'(*+-/25:AO j+}(bI߶ӣ!tķ˟C+YK81////////////////////////////5G Zw3ėVB<3'#鶨ӦA)VE 5////////////////////.4G ]n[R?9R>8ᮠ뽱wfo)WK :2/////////.0> UA)ץ|rXP컮\Hh#fJ3ժWB< ėwfg!SA 4//122579=AIX" q/.Y8Ҫ븪G51@1,취㳥{H8.   (CvhB2.O=7ĵ~N * ń`VK |ƶT@:>/+wjX*⽪[/#e4%ت츩J83 ĖfS^M 6-*)))(((''((()*+-/147:>CIS c'~23pY丮{gOGӣ÷~;!XL:1/////////////////////////////08N!]K3ۯ㰢9+'Ϡ鼰]I[L80////////////////////.2C W[F|_VrWO߲fRg!UF71//////////.0> UA)ץ|rXP컮]JXB*ХfMF öok& TC 5//./123358;?HW" q.-cGܲ஠.#T@:۬p;,+  2TE´rh Ԥ涨vC3. 徫W+ n=/㳥ץriôTFpJAÿ֫H {L>蹫糤S?:÷~ol% S ? 2-,,++****++,-./1358;?CHNT \" h' y, 4 Z/Œ|泧e\ ]G@´ܯn\q,WK : 2///////////////////////////////2< S"bbN绰ܪE4/'Ƙude!P < 2/////////////////////.1> T?(ңΡ nd´ըV@`S C 50///////////.0> UA)ץ|rXPK5l(Ȝõx[Svķwo)UE 50////./22357:>F W" r--oW亯СlSKĴСb.& - X$ÕC3/~sǸl^; ' ӡ}@ h[ȹtF40U#}˛~uDSE嶩𻬁bY N;6̝tu-XF 720///.--..//013579<?CHN S Y! b$ h$p#4\:hė嬞TB<<.*{^V巪sI2aSG81/////////////////////////////////4A V g!gU幮給uYQYD=ե{kl' QA 4//////////////////////./8M c uc÷xm6)&~ŸǚD-]Q ? 40////////////.0> T@(ץ|rXP沤bOsŷg^wlŷs.VF60//////./122468<EW#q+0 zf쿵cZǷŕX'# " 5K<꺬٨1%"ndƷP *   ¾}YNM ~Ʒlc4($ܪ蹫wG9iA7ʻĖxoEvF8Тȹ]G@ 7*&oe긫㷬tbw,[L <6332221122234579;=@DHMR X _# g% l"w'?jJv Îۥ/$!:,(]GAh_嵨öة~mR0,vlッᴨlZi$ SD 50////////////////////////3A Vw3”xn,!5)%g^߮uz7YN = 3//////////////.0= RB+ܩxdMF䭞Řޮx[SkaĶĖy5WH70/////////./22357<E X$r) 4v÷{px[S񿱳r6, AeU۩XC=wmŶʜa,- b9,\+ɝŶujYD>ܫ_ROşzQ"]+wj踪õ—h__IBN<7WC=sXPv䲥µŖYAo$^ O!A:7665665666789;=?BEHM Q W ]" d% j$q#1S3_ЬɌ{eNGdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFdMFhPIrXQqWP|_Wlcyoʞ㴧컭դseQD,h$ WR E 93/////////////////////////////////////06B U! _A(r測￱e\^HAN<6YD>x\Tz嵨P9aR C 60/////////////////////////08K Z~;!¶ةyox\TgOHlSLh_}౤÷͟cNl& UJ:2///////////////./;N}=&ԣWBԧ͛I /FaS涨򾯠{pP=8'kRKɛǸ“b./! 111ڵY-!_.ƸǙiPI% Q>9{q嶨\OL yβmF:FuD6wiҢô³߯}hT;i^%O C =;::999999:;<=?ACFIM Q V [" b$ i& n#x(B!iIqα{إܬ᳨湮齳뾳쾳´ー캭綨ᰢԢƓojWU@?'k)[TO D ; 50///////////////////////////////////////05? Q"Zl& U?oԤ꺭ᄆᄆݬ|bNs0XO @ 50///////////////////////////2: M Zt0lYƕⱣ鸫٧{hU};#\R E 81////////////////./7J c" ud޵￲ᷫv|lϨ㵪ț@(WL 91//////////////.02335:E \&p$C$ė漲黰躯纯溯㷭ްש֚֡֙֙֙՛ة丮꼱鸫⵨i[-    /? zE5ѣz٪ƷఢqbU!." JJJղa6)R!pbᲤŶרzѤ𾰺sC5Nxɺxf=1Nb0"{K==<=<<<==>?ABEGJM Q U Z! `# g& m%s$3T4}]ɧѶ㳜⧎Ֆ}łgrUoToTmTlSkSiRiRiRhRgRgRgRfRfRfRfRfRfQfQfQfQfQeQfRcO^I^JYDR/>+  ddd׽zUJI p?1k]}ԣڨԣqc~N@R g?4ȸh^mG;a6*]2$^3%_WvH9o,a'S L FCBAAA@@@@ABBCEGHKNR U Z! _# f% l& p${* C"gFl׳޻hf;C42/,{)w'r%n#k"i!fdcba__^^]^]\\[[[ZYWTSQ N I C = 941//..///////////////////////////////////////////15< G P TW\` \WTO G = 61////////////////////////////////27@ J R UWYXUSO G > 710////////////////////17D N T]_``````````_^Y^" a'Y]_``````````````_^UOG : 2////////////////////1224:D U#c#n"{*. 2 5 <^2nͧߺj9~_E# ! -1>T"c1#i7(b0!N7 ,&  rMAU'U$b0"g6'b1"Y(V(lD:wȸijһi1W" O L HFEEEDDDDEEEFGIJMO R U Y! ^" c$ j' o&t&4T3yY|wrPK(2/y0r-k*e(`&\%Y$V"R!R P N M L L K J J I I I H G G G G F E C A ? < :7521/...//////////////////////////////////////////////./159> C G G G C > 951/./////////////////////////////////026;@ C E D A = 952/.//////////////////////16< B G I J J J J J J J J J J I G E C C E G I J J J J J J J J J J J J J I I G C < 61/////////////////////.02249@I T! \$c(k*s.{.. CvS܃X~M1   %( ( ( ' &    tjmdtjͿf3S N MKKJIIHHHHHIIJKM N Q S V Y! ^" b$ i& n' q%|, D#eEއgάֳh_>8w'o' g' ^# X! R M H EB@=<;988776555444443332110/....../////////////////////////////////////////////////.///1244421//..///////////////////////////////////./0123210//..////////////////////////012455555555555543223455555555555555554310///////////////////////./1236:?DI P W! `$ j& q"2bAyԭk}A %   rD2TQ Q O N N M LLKLKLLM N O P S U W Z! ]" b$ h% m( p%w'6S3tTuڶ˩{[P/. n"i% `$ W PJFA>;976432100///........-.......////////////////////////////////////////////////////////...........//////////////////////////////////////..........///////////////////////////.........................................//////////////////////////122459=AHOX c$ j!y(T3nɤ(A ' aPW U T T S R Q Q P P P P P P Q R S T V X [" ^# b$ g& l( p' t&.D#cCׂb¢xrRF%w'm#f& ]" V P JEA=;975433210000/..////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////...........///////..............///////////////////////////////.022359<BGN V b$ i!u%L+e3G +&&&\" Z! Y W V U U T T S S S S T U V W X Z! \" _# b$ g% k( p( s'y) 9T4qQnέߺpeE:t%k$d$ \" T NHDA>;976432220100////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////.022368<@FM U _# g#s$C"yZˣ=K - OOO̷`# ^" ]" [" Z! Y! Y X X W W W W X X Y! [! \" ^" `# d% g& j' o) s' v'1F%bB~^yٷԲއg[:4p"j% b% Y R L GB>;:865433201110////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////13368;@ELT ]# f#n!;sSزJ%P 0 d$ b$ a# `# ^" ]" ]" \" [! [! [! [! [! \" \" ^" _# a# b$ e% g& k' o) s) u'}, <U5oO݈h¢˪~^Q1}, o#i& _# W Q JEB?;9764432121000///////..............................//////////////////////////////.........///////////////////////////////////////////////////////////////////////////////////////////////////////////////.........///////////////////////////////.......02247:>CJR \" f$ n"6kKὸR,S 1w:"g% e% d% c$ b# a$ `# `# _# _# _# `# `# a# b$ c$ e% f% i& l' o( s) u( z* 5J*bBzZt̬ã|uTG&z)m$f% ]" U N ID@=;976432231110//............................................////////////////........................////////////////////////////////////////////////////////////////////////////////////////////////........................////////////////.............../11369<BHP Z" d$ l 2dD|۴^7W 3bMk' i& g& g& f% e% d% c% c% c% c$ d$ d$ e% f% g& i& k' m( p) s* u( y) 2B"X8nNׄd~ֵvmM?s$k$d% [" S MGC@=:765332211100/............-------------------------...........////////////............----............////////////////////////////////////////////////////////////////////////////////////////////...........-----............////////////............----.-.11368<AGO X! c$ k!~. _?xױd;8754322110000.....----,,,++++++++++++++++++++++++++++++,,,----.....//////.....----,,,++++++++++,,,----.....//////////////////////////////////////////////////////////////////////////////////////.....---,,,,++++++++++,,,---......//////.....----,,,+++++++++++,.0147:?FM V a$ j!y) U5qΨlC^5|2v+ u+ t* r* r) q) q) p) p) p) p) p) q) r* t* u* v+ x* z+ /8F&W7hHyYߍmӳѯكcU5- n#h% ^# V OID@=:8654222210010.....---,+++*******))))))))))))))))))*******++,,----....////.....---,+++************+++,---.....////////////////////////////////////////////////////////////////////////////////////....---,,+++************+++,---.....////....----,+++***********+*+./0359=ELT `# i!v&Q1n˥nF_5W>{,z, x, w+ v+ u+ u* t* t* t* t* u+ v+ v+ x+ x* z* |- 19E%S3aAqQӂbv¢ڹͬ|\O.|+ m$g& ]" T NHC?<97654321111000/....--,,++**))))(((((((((((((((((((((((())))**+++,---....//....---,+++**))))(((())))**++,,--....///////////////////////////////////////////////////////////////////////////////////....---,++***))))(((())))**++,---.....//....---,+++**))))(((())))***-/0268>DL T `$ h"t%O.lȣmD]40}- |, {, z, y, y, y, x, x, x, x+ y+ y+ z+ |, /4=G'R2]=kK{[ތlɩƦxXI)x(m$e% \! S L GB><9765321211000//....--,++**)(((''''&&&&&&&&&&&&&&&&&&&&&'''((())*++,--..........--,++**)(((''''''''((()**+,,--....//////////////////////////////////////////////////////////////////////////////////....--,++*)))((''''''''((()**++,--..........--,++**)(((''''''''((())*,/0369>EKT `# h"t%M-iǢjA[ 3MMMȍ=940.}- |- |, |, {, |, |, }- ~.14:A!I)R2\:86544321111000//...--,++*)(('&&%% % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % %%&&'(()*+++--........--,++*)(('&&%% %% % %% %&''())*++,--.../////////////////////////////////////////////////////////////////////////////////....--+++*)(''&&%% %% % %% %&''())*++---........--,++*)(('&&%% %% % %% %&''(()),//258>CK T _$ g"r#L+fǣe;854323469<A!G'M-T4]=gGrR_ߎn~ã׷ypO?t$k%b$ X Q KE@=:7643222121000///....-,++*)('&%% $ $ # # " " " " " " " " " " " " " " " " " " " " " " # # # $ % %&'()*++,--......--,++*)('&%% $ $ # # # # # # $ $ % %&'()*++,--../////////////////////////////////////////////////////////////////////////////////...--,++*)('&%% $ # # # # # # # $ $ % &&'()*++,--......--,++*)('&%% $ # # # # # # # $ $ % &&'()),//249=DL T _# g"u&M,eǢ_7V 1 lR2N.J*G'D$C#A!@ @ @ A!C#F&I)M-R2X8_?hHrR|\ىiwɪ޽vkJ:r#j% a$ X P JD@<97653221111100////...--++*)('&$ $ # " " !                        ! ! " " # $ $ &'()*++--......-,++*)('&$ $ # " ! !     ! ! " # $ $ %'()*++,-...////////////////////////////////////////////////////////////////////////////////...-,++*)''% $ # # " ! !     ! " " # $ % &'()*+,--......-,++*)('%$ $ # " ! !     ! " " # $ % &'())+/0259<DLT _# g"u&K*hɤȽV/Q / !!!޻^>Z:W7S3Q1O/M-L,L,L,M-O/Q1T4X8]=cCjJqQzZֆfrаthG9r$j% `$ V O HC@<97643221111000/////..--,+*)('%$ # " !                               ! " # $ % '()*+,--....--,+*)('%$ # " !           ! " # $ %'()*+,--..////////////////////////////////////////////////////////////////////////////////..--,+*)(&% $ # " !           ! " # $ &'()*+,-.....--,+*)('% $ # " !           ! " # $ &'()*+00369<EL S _$ h"s#K*jʤN(M ,bbblLgGcC`@]=[;Y9X8X8X8Y9Z:\<`@cChHnNtT|\ՅeozƦ׷qcC7q#h% `# V N HB><97443222111000//////..--++)('&$ " !                                   ! " $ %'()*+,--..--,+*)('%$ " !               ! # $ %'()*+,-..///////////////////////////////////////////////////////////////////////////////...-,+*)('% # " !               ! # $ &')*+,--....-,+*)('%$ " !               ! # $ %'(**,/0479=DLS ^# g"s$N-mͧ޸D I )яtsSoOlLhHfFeEdDcCcCdDfFhHjJnNsSxX~^ֆfޏoyͭݽ޻pcC5o"h% ^# U M GB>;86543221111000//////...-,+*)(&% # !                                     ! # $ &()*+,--..--,+*)(&$ # !                 ! # $ &()*+,-..///////////////////////////////////////////////////////////////////////////////...-,+*)'&$ " !                 ! # % &()*+,-...--,+*)'&$ # !                 ! # $ &()*+-0147:<DK T `# h"t%P/pЪҪ8E % 鿮_{[xXtTrRqQoOoNoOoOpPsSvVyY}]҂b؈hpxƦӴݺma@3p$h% ^" T LGA=:75442221110000///////...-,+*('%$ "               ! # % '()++------++)('% # !                 " # % '(*+,-...//////////////////////////////////////////////////////////////////////////////...-++)(&% # !                ! " $ %')*+,--..--++)('% # !                 " # %'(*++-0148:=DLT _# h"u%T3rԮÚ+ A KKKڊjׇgӃcЀ`~^|\{[zZzZzZ{[}]_Ӄcׇg܌lry̬ں۸o`@3o#h% ]" T M FA<975432200111000////////...-,*(' % # "          # $ &()*+,-----+*(' % # "           ! " $ &()*+-...//////////////////////////////////////////////////////////////////////////////..-,+)(' %# !           ! # % '(*+,--.--,+*)'&$ "            ! " $ &()++,.1157:=DL U a$ i"x(V6wٲ"=  颅rߏo܌lىiׇgֆfՅeՅeօeֆf؈hڊjݍmqv|ǧӳ۹m_?2n#h& ]" T LE@=975432121110000/////////..-,."        ! # %')*+,----,-#       " $ &')*+,-..//////////////////////////////////////////////////////////////////////////////..-,,$                 " $ &()*+-----,,& !                 " $ &()*+--.1258:>DLU a# i!z) ]<|ut9  ˹~zwtrqߏoߏopprtw|Ĥήٹ۹n`?1o#h& \" S LE@;975322112000000//////////..-,N,[>{P6{P6yO5yO5wN4vN4uN4tM4tM4sL3rL3rK3qK2qK2pJ2pJ1pJ1pI1oI0oI1oI0nH0nH0nH0nH0mG/mG/mG/mG/lF.lF.lF.lF-lF.kE-lF-lE,zO3K.    ! # % '(*+,----, M*xK-mB(kA'kA'jA'h@&h@&g?&f>%f>%e=$d=$d=$c<$c<#c<#b<#b<#oE(;!     ! # %')*+,-..//////////////////////////////////////////////////////////////////////////////..-+& F X+R' Q' P& O& N% M$ L$ L$ K$ J# J# I" H" H" H" H!H"N% &    ! $ &')*+,----,& =P"JIHGFEDDCBBAA@AA@G(    ! $ %')*+,--/2247:@EL V a$ j!}- aA^e4DDD}{{zz{}~¢˫Դ߿ܹm`?1o#g% \" S KD?;854322210110000///////////..-,jB,ӗk]\\[[[ZZYYYXXWWW~V~V}U}U}U|T|S{S{RzRzRyQyQxPxPxPwOwOwOvNuNɇYsJ0    " % &()+,----,h>%yNjCjCiBiBiBhAhAh@g?g@g?f>f>f>e=e=e;754321110010000////////////...-,a;&^tQtQsPsPsPrOrOrOqNqNpMpMpMoLoLoLnKnKmJmJmJlIlIlIkHkHjGjGjGiFiFiFhEhEhEgDgDvNe@)    " $ %')*+,--,+_8 kD^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6X5e=L-    " $ &()*,-.../////////////////////////////////////////////////////////////////////////////..-+" T)s;i5i5h4h4h4g3g3g3f2f2f2f2e1e1e1d0 f1 m5,    " % &(*+,----+" Fe-])])\(\(\(\(['['['Z&Z&Z&Y%Y%Y%Y%X$b(0     " $ &()*,-..../3347;@GO Y! e$ l 9yZ޹?F # LLLť¢ãǧ̬Ҳظ߿߽rdD6p#g% \" R JD>:8532110100/0000//////.........-,+a;&^uRtQtQsPsPsPrOrOqNqNqNpMpMpMoLoLnLnKnKmJmJmJlIlIlIkHkHjGjGjGiFiFiFhEhEhEgDwOfA*    ! # % ')*+,,,,+_8 lE^;^;^;]:]:]:\9\9[8[8[8Z7Z7Z7Y6Y6Y6e=L-    " # &')*+,-.........//////////////////////////////////////////..................//////////..-+" T)t<i5i5i5h4h4h4g3g3g3f2f2f2f2e1e1e1e1 m4,    " $ &()+,----+" Gf.])])])\(\(\(['['['['Z&Z&Z&Y%Y%Y%Z%b)/    ! # %')*+,-...-/2158;@GO Z! f$ n!@ ށbßŜ+ >  ٿ˫ɩǧĤ㢢ãƦȨ˫ϯԴٹuhH7p#h% ]" S JC>:743211101010000////...........--+*a<'_uRuRtQtQtQsPsPrOrOrOqNqNpMpMpMoLoLoLnKnKnKmJmJlIlIlIkHkHkHjGjGjGiFiFhEhEhEwOfA*    ! # % '()*++++*_8!lE_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6f>L-    ! # % '()++,-...........///////////////////////////////////.........................//////...-+" T)t<j6i5i5i5h4h4h4h4g3g3g3f2f2f2e1e1g2m5+    " $ &()+,----+" Gg/^*])])])\(\(\(\(['['['Z&Z&Z&Z&Y%Z%d)/   ! # % '()++,-...-/1147;AGO [" f#o!H'kΨ}v8 յҲϯή̬˫˫ʪ˫̬ήаӳֶۻxlL:q#h% ]# S JC>:642200111001000///........-----,++)`;&_vSuRuRtQtQtQsPsPrOrOrOqNqNqNpMpMoLoLoLnKnKnKmJmJlIlIlIkHkHkHjGjGiFiFiFhEhExPeA*    ! # $ %((**+++)_8!mF_<_<_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Z6f>M.    ! # $ &()*++,------........//////////////////////////////........--------------........///...-*" U*t<j6j6i5i5i5h4h4h4h4g3g3g3f2f2f2e1f2n6+    " $ &()+,----+" Gg.^*^*])])])\(\(\(\(['['['Z&Z&Z&Z&Y%d)/    " $ &()*++,----,.1136;@HQ \# g"s$R2uر\b2 jjj޿ۻٹ׷յԴӳӳԴյֶظۻ޾{oO=r$i% ^# S JC=96421100/000/0000/......----,,,,,++*)`;&_vSvSuRuRtQtQtQsPsPrOrOrOqNqNqNpMpMoLoLoLnKnKnKmJmJlIlIlIkHkHkHjGjGjGiFiFhExPgB+     " $ %'())***(_8!nF`=_<_<_<^;^;]:]:]:\9\9\9[8[8Z7Z7Z7g?M.    ! " $ &'()*+++,,,,----......////////////////////////////.....-----,,,,,,,,,,,,----......//...-*" U*u=j6j6j6i5i5i5h4h4h4h4g3g3g3f2f2f2g2n5+    " $ &()+,----+" Gg/^*^*^*])])])\(\(\(\(['['['Z&Z&Z&[&d)/    ! # % &()*+++,,,,,.0046;AHR ^$ h!x(\<}d;P +޾ݽܼۻۻݽ޾ã~tSA t%i% ^# S JC>9542100000/00000//.....---,,+++++**))(`<'`vSvSvSuRuRtQtQtQsPsPsPrOrOqNqNqNpMpMpMoLoLnKnKnKmJmJmJlIlIkHkHkHjGjGjGiFiFyQgB*     " # % &'(())((^8"nG`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7g@N/      " # % &'())**+++++,,---...../////////////////////////.....---,,,+++++****+++++,,---.........-*" U*u=k7j6j6j6j6i5i5i5h4h4h4g3g3g3f2f2h3o6+    " $ &()+,----+" Gh0 _+^*^*^*])])])])\(\(\(['['['['Z&[&e+/     " $ % &())***+++++.0137;AJS _$ i!/gG¬E E ! ***ǧxWG&v&j$ `# T KC=863210//0/0//0000/.....--,,+++***))((''_;'awTvSvSvSuRuRtQtQtQsPsPsPrOrOqNqNqNpMpMpMoLoLnKnKnKmJmJmJlIlIkHkHkHjGjGjGiFyQhC+     ! # $ % %'''''&^8"oH`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8h@N.      ! # $ % &''()))****++,,---....////////////////////////....---,+++***))))))))***+++,---......--*" U*v>k7k7k7j6j6j6i5i5i5h4h4h4g3g3g3f2g3o7+    " $ &()+,----+" Gh0 _+_+^*^*^*^*])])])\(\(\(['['['['Z&e+/    ! # $ % &'())))*****./047<CKU a$ k!6tTǝ) ;  ʪ}]L+w&k$a$ T KD=8521000//00010000//....--,++**)))(((''&%  _;'awTwTvSvSvSuRuRuRtQtQsPsPsPrOrOrOqNqNqNpMpMoLoLoLnKnKnKmJmJlIlIlIkHkHjGjGjGyQhC+     ! " # $ $ % &&&%$ ^8"oHa>a>`=`=_<_<_<^;^;^;]:]:]:\9\9\9[8hAP/      ! " # $ % % &'''((()))*++,---....//////////////////////....---,+***))((((''(((()))*++,---.....--*" U*w>l8k7k7k7j6j6j6i5i5i5h4h4h4h4g3g3h3o7+    " $ &()+,----+" Hi1 _+_+_+^*^*^*^*])])])\(\(\(\(['['\'e+/     ! # # $ % &''((())***./138=DM W c$ m!@݁bȣsm4 ϯ׃cS2z) l$b$ U L D=95310//////000000///...--,++*))((''&&%% $ $  ^;'bxUwTwTwTvSvSuRuRuRtQtQsPsPsPrOrOrOqNqNpMpMpMoLoLoLnKnKmJmJmJlIlIlIkHkHkHjGzRiD,      ! " # # $ $ $ $ $ $ ^8"pIa>a>a>`=`=`=_<_<^;^;^;]:]:]:\9\9\9hAP0       ! " # # $ $ % %&&&''(()**+,---...//////////////////////...--,++**))('''&&&&&&'''(()*+++---....--*" V*w>l8l8k7k7k7j6j6j6i5i5i5h4h4h4h4g3i4p7+    " $ &()+,----+" Hi1 `, _+_+_+^*^*^*^*])])])\(\(\(\(['\'f,/      ! " # $ $ % %&&''(())*./149>EO Z" e#p"K*qְrHV ,ZZZа܈hW7~, l#c% V M D=95210/////0/00/00///...--,++*)(('&%% $ $ # # " "  ^<(‰bxUxUwTwTwTvSvSvSuRuRtQtQtQsPsPrOrOrOqNqNqNpMpMoLoLoLnKnKnKmJmJmJlIlIkHkHkHzRjD,        ! ! ! " " " " " " ]8"pIb?a>a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9iBQ0        ! ! " " " # # $ $ $ %&&'(()++,,-....////////////////////...---+++))('&&%$ $ $ $ $ $ $ $ %&&'(()++,--....-,*" V+x@l8l8l8k7k7k7j6j6j6i5i5i5i5h4h4h4h4p8,    " $ &()+,----+" H i1 `, `, _+_+_+_+^*^*^*])])])\(\(\(\(['f,/       ! " " # # $ $ % %&'(((*./25:?GQ ]# g"v&Y9̰I#F" ֵnaA1n#e% X MD>8420//.////00/000////...-,++*)('&% $ # # " " " ! !  ];'ÊcyVxUxUwTwTwTvSvSvSuRuRtQtQtQsPsPrPrOrOqNqNqNpMpMpMoLoLnKnKnKmJmJmJlIlIkHkH{SjD,                   ]8"qJb?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:]9iBS1            ! ! ! " " # # $ $ %''))*+,--...////////////////////...--++*)('&&% $ # # " " " " " " # # $ $ %''))*+,--...-,*" V+x@m9l8l8l8k7k7k7j6j6j6j6i5i5i5h4h4j5p8,    " $ &()+,----+" H j2 `, `, `, `, _+_+_+^*^*^*])])])])\(\(](f,.         ! " " " # # $ % &'((+./26;@IS `# i!|+ hH̢(9  000طthH6o#f% Y! O F=8520/...///0/0000////...--,+*)('% $ # " "        ];(ÊcyVyVxUxUxUwTwTvSvSvSuRuRtQtQtQsPsPsPrOrOrOqNqNpMpMpMoLoLoLnKnKmJmJmJlIlIlI{SlE-                   \8"rJc@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:jBS1                   ! " # $ % &(()++,--..////////////////////..--,+*)('&$ # # " !         ! " # $ % &'()++,--..-,*" W,x@m9m9l8l8l8k7k7k7k7j6j6j6i5i5i5h4j5q9,    " $ &()+,----+" H j2 a- `, `, `, `, _+_+_+^*^*^*^*])])])\(](h-.             " " # $ % '((+./36<CJV c$ j 5yYrj1 ݽynN=q#g% [! P G?8410...././//0/00/////...-,+*)('&$ " !          [;(ŌdzWyVyVxUxUxUwTwTvSvSvSuRuRuRtQtQsPsPsPrOrOqNqNqNpMpMpMoLoLnKnKnKmJmJmJlIlI{TmE-                  [8#rKc@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:jCU2                     ! " # $ &'()+,--..////////////////////..--++*)(&$ # " !             ! " # % &()*++--.--,*" W+yAm9m9m9l8l8l8l8k7k7j6j6j6j6i5i5i5j5q9,    " $ &()+,----+" I j2 a- a- `, `, `, `, _+_+_+^*^*^*])])])])\(h-.              " " $ &'(),/048=DN X! e$ n!C"iӬh>P '¢wWC#s$i% ]# Q G?:51/.----../0/000//////...-,+*)'&$ # !           [;(ŌdzWzWyVyVxUxUxUwTwTwTvSvSuRuRuRtQtQtQsPsPrOrOrOqNqNpMpMpMoLoLoLnKnKnKmJmJlI|TnF-                 Z8#sKdAc@c@c@b?b?a>a>a>`=`=`=_<_<^;^;^;kCU2                      " # % &()*+,-...///////////////////..-,+*)('% # "                 " # % &()*+,----,*" W+yAn:n:m9m9m9l8l8l8k7k7k7j6j6j6i5i5k6r9,    " $ &()+,----+" I k3 a- a- a- a- `, `, `, _+_+_+^*^*^*^*])])^)h..           ! # $ &())-/159>FP[" g#s$S3z⾣=@  Ŧ~^M,y(j$_# R I@841/-,--...///0000//////..-,+*)('% # !            Z;(ƍezWzWzWyVyVxUxUxUwTwTwTvSvSuRuRuRtQtQtQsPsPrOrOrOqNqNqNpMpMoLoLoLnKnKnKmJmJ|UoF.               Z8#sKdAdAc@c@b?b?b?a>a>a>`=`=`=_<_<_<^;kDW2                       " $ %')*+,-...//////////////////...-,+*('&$ "                  ! " $ &')*+,----,*! X,zBn:n:n:m9m9m9l8l8l8k7k7k7j6j6j6i5j6s:-    " $ &()+,----+" I k3 b. a- a- a- a- `, `, `, _+_+_+_+^*^*^*])^)i..         ! # % &()*.026:AIR _# h!z* fFy5 ʪ؅eV5|+ l#b% T I@:40..,,---..000000///////..-,+*)'&$ "        Z:(Ǎe{XzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRuRtQtQtQsPsPsPrOrOqNqNqNpMpMpMoLoLnKnKnKmJ}UpG.!          Z8#tMdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_EM X e$ n!C"mرϯI"B ӳrjI8o#f% Y! M C;51-+,+,,,-../0000/////////..-*+@!C%?">![>Z>Z=Z=Y=Y=Y(08865321/.-,+++ ++ +  S3 W9xN2yN2xM1yN1yM1yM1yM1zM1yL0yM0yL0yL/yL/yK/yK.xK.xJ.Q3T0, 6 54 2 1 / . - + * * ) ( ( ( ( ) - #    " # %')*+,-..//////////////////..-,)3: 6 4 3 1 / - , * )''%%%%%%)     " # %')*+,---,*! X-{Co;o;o;n:n:n:n:m9m9l8l8l8l8k7k7k7l7t;-    " $ &()+,----+! I!m4 c/ c/ b. b. b. a- a- a- `, `, `, `, _+_+_+^*_*h/6                 ! !     ! " % &(*++/136:?GO [" g#s$V6Ù"5 TTT׷zqQAs%i% [! O E;51.-**,+,--///0000/////////..-# ,|[ʓmcccbbbaa```___^^ҕl`A,             I)}VrNqLpLoKoKoKnKnJmImImIlHlHlGkGkGkFyQK.     S/pHb>a=a=`<`<`;_;_;_:^:^:]9]9]9\8\8\8i@W4    ! # % '(*+,-..//////////////////..-,Z0V-K'K'J&J&J&I&~I%~I%~I%}H$~H$}G#|G#|G#|F"{F"|F"O&D$    ! # % ')*+,---,*! X-{Cp<o;o;o;n:n:n:m9m9m9m9l8l8l8k7k7l8s;-    " $ &()+,----+! J! m5c/ c/ c/ b. b. b. a- a- a- a- `, `, `, _+_+_+^*]*_+a+`*`*`*_)_)_)^)^(](](\'\']'\&[&[&[&a(S"    " $ &()*+,0237;AHR _# i!~- mM[[ * ۺ{[M,x'j% ^# Q F<61.++**++,.../0000//////////..,# ,}[̕nedddccbbbaaa``__ӗmdC/   " $ % & ' ( ( ( ( ) ) ) ) ) ) ))))))))))( ( ' & N,~WtOqMqMqMpLpLoKoKoKnJnJnImImImHlHmHzQN0   ! # $ & ' ' ( ( ' ' W2pHc>b>b=b=a=a<`<`;`;_;_:_:^:^9^9]8\8jAV3    " % &()+,-..//////////////////..-,Y0W/L(K'L'K'J&K'J&J%J%I%~I$~I$~H$}H#}H#}G#|G"P'B$    # % &(*+,---,*! Y-{Cp<p<o;o;o;n:n:n:n:m9m9m9l8l8l8k7m8u<-    " $ &()+,----+! J! n6d0 c/ c/ c/ b. b. b. a- a- a- `, `, `, `, _+_+_+^*`+b,a,`+`*`+`*_)_*_)^(^(^(](]'](]'\&\&b)T#    " $ &()*+,.1258<CKU b# l!=cΨԲK$A AAA޾ťԃcV5~, l$a$ S H>72.+***++,--//0000///////////.-,# ,yXƏjaa```___^^]]]\\\ˑicC/    ! # % &()*+,,-------------------,+*O.yTpLnKmJmJlIlIlIkHkHkHjGjGjGiFiFhEiEvOM0    ! # $ &()*+++**W2mF_<_<_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Y6f>T2    " $ &(*+,-../////////////////...-+W0T-~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#yE"yE"yE"yE!M&A#    " $ &(*+,---,*! Y-|Dq=p<p<p<o;o;o;n:n:n:m9m9m9l8l8l8m8u<-    " $ &')*,,--,+! J" n5d0 d0 c/ c/ c/ b. b. b. a- a- a- a- `, `, `, _+_+_+^*^*^*^*])])])\(\(\(\(['['['Z&Z&Z&Z&Y%_(R"    ! $ %')*+,-/2369>EM X e#p"Q0yĚ!3 ʪދkbB3n#d% V J@82-**)***,,..//000////////////.-,# ,yYƐkbaa```___^^]]]\\͒jcC/    ! # %'(*+,--..................--,+P.zTpLnKnKmJmJmJlIlIkHkHkHjGjGjGiFiFiFvON0    ! # % &()*++++*W2mF`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7g?T2    " $ &()+,-..//////////.........-,+W0U.~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"N&@"    " $ &()+,---,*! Y.|Dq=q=p<p<p<o;o;o;n:n:n:m9m9m9l8l8n9u<-    ! # %')*+,,,,+! K" o7d0 d0 d0 c/ c/ c/ b. b. b. b. a- a- a- `, `, `, _+_+_+_+^*^*^*])])])])\(\(\(['['['Z&Z&Z&Z&_(R"    ! $ % ')*+,--0236:@GP ]# g!{* gGހVW & 888ͭqkK<r$g% Y! L A92.+))))**+,..//00/////////////..," ,zYǐkbbaaa``___^^^]]]͒jcC/   ! # % ')*+,-....................--+P-zTqMoLnKnKmJmJmJlIlIlIkHkHjGjGjGiFjFxPM0    ! # % &()*++++*X3nG`=`=_<_<_<^;^;^;]:]:]:\9\9[8[8[8Z7h@T3    " $ &(*+,-..//////...........--,+*W/U.K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"O'A#    " $ &()+,---,*! Z.~Fq=q=q=p<p<p<o;o;o;n:n:n:m9m9m9l8n9v=-   ! # % &(*+++++* J" o7e1d0 d0 d0 c/ c/ c/ c/ b. b. b. a- a- a- `, `, `, `, _+_+_+^*^*^*^*])])])\(\(\(['['['['Z&Z&a)R"    ! $ % ')*+,...2247;AJU a$ i8~_̦ͨC> ҲxvVH'v&j% ]" O D:4.*))))**,--.///00/////////////..," ,zYǑlbbbaaa``___^^^]]͓kcC/   ! $ %')*+-.../////////////////..-,Q.{UqMoLnKnKnKmJmJmJlIlIlIkHkHjGjGjGjFxPN1    ! # $ &()**++**X2nGa>`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8h@T3    " $ &(*+,-..////........------,++)W/V/K(K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#O'A#    ! $ &()+,---,*! Y.~Fr>q=q=q=p<p<p<o;o;o;n:n:n:m9m9m9n9v=-    # $ &')*++++) J" o7e1e1d0 d0 d0 c/ c/ c/ c/ b. b. b. a- a- a- `, `, `, `, _+_+_+^*^*^*])])])])\(\(\(['['['['Z&`)S#    ! $ &')*+,.../2258=CLW d# p"L,wr/ 888յ~^S2|* m$a$ R G<4.*)('()*++...//00//////////////..," ,{ZǑlccbbaaa```__^^^]ΓlcD0   ! $ &()*,-..//////////////////..-,Q.{VrNoLoLoLnKnKmJmJmJlIlIlIkHkHkHjGkGxQN1    ! " $ &'())***)W3oHa>a>`=`=`=_<_<^;^;^;]:]:]:\9\9\9[8hAU4    # % '()+,-.../.......---,,,,,+++)(W/W/L)K(K(K(~J'~J'~J'}I&}I&|H%|H%|H%|H%{G${G$zF#zF#P(A#   ! $ &()+,---,*! Z/~Er>r>q=q=q=p<p<p<p<o;o;o;n:n:n:m9o:w>-    " $ % &())**))J" p8e1e1e1e1d0 d0 d0 c/ c/ c/ b. b. b. a- a- a- `, `, `, `, _+_+_+^*^*^*^*])])])\(\(\(\(['['['a)S#    " $ &()*+-..//0236:?FN \" f!x(eEmDM ٹ¢؆f_>2o$d% V I>6/+)'''()*,,-.//00///////////////..," ,{Zɒmcccbbaaa```__^^^ΔlcD0   ! $ &()*,-..//////////////////..-,Q.|VrNpMoLoLoLnKnKnKmJmJlIlIlIkHkHkHjGyQP2      " # % &'())))(W3pHb?a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9iAV4    ! # % '(*+,-........---,,,+++++**)('V0W0L)L)K(K(K(~J'~J'~J'}I&}I&}I&|H%|H%{G${G${G${G#P(A#   ! $ &()+,---,*! Z/G r>r>r>q=q=q=p<p<p<o;o;o;o;n:n:n:o:w>-    ! " $ %'(()))'J" q8f2e1e1e1d0 d0 d0 d0 c/ c/ c/ b. b. b. a- a- a- a- `, `, `, _+_+_+_+^*^*^*])])])\(\(\(\(['['a*S#    " $ &()+,-..//.1247:AIS a$ i8_Ψ޸27 >>>ۻǧniJ<r%h& Y M@80+('''')**,-.//00////////////////..," ,|[ɒmdcccbbbaa```___^ϕmdD0   ! $ &()*,-..//////////////////..-,Q.|VsOpMpMpMoLoLnKnKnKmJmJmJlIlIkHkHlHyRP2      " # $ % &''((''W3pHc?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9iBV4    " # %')*+,-.......--,,+++****))(('&V0X1L)L)L)K(K(K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G$Q)A#   ! $ &()+,---,*! Z/G s?s?r>r>r>q=q=q=p<p<p<o;o;o;n:n:p;w>-     ! # $ % '''''&J" q8f2f2e1e1e1e1d0 d0 d0 c/ c/ c/ b. b. b. b. a- a- a- `, `, `, `, _+_+_+^*^*^*])])])])\(\(\(['a*T$    ! # % '(*+,-..////1258<CL X d# o!O.|m`( ߿ʪusSG'x(k% ^# P D91,)'&&&')*+,..//00////////////////..," ,|[ɓndddccbbbaa```___ϕmdD0   ! $ &()*,-..///////////////////..-R/}WsOqNpMpMpMoLoLnKnKnKmJmJmJlIlIkHlHzRP2       ! " # $ % %&&&&% V3qIb?b?b?a>a>`=`=`=_<_<_<^;^;]:]:]:\9jBX5     " $ &()*+,-......---,++**)))((''&%$ V/X1M*L)L)L)K(K(K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G$Q)A$   ! $ &()+,---,*! [/G!s?s?s?r>r>r>q=q=q=p<p<p<o;o;o;n:p;x@-     ! # $ % %&&&% I" r9f2f2f2f2e1e1e1d0 d0 d0 c/ c/ c/ b. b. b. b. a- a- a- `, `, `, _+_+_+_+^*^*^*])])])])\(\(\(a*T$    ! # %')*+,-../////236:>DO ]" f!{+ iHܳN&@HHHή{|]T4}, m$a$ T G;3,(&%%&'()*,-.//00/////////////////..," ,|[ʓnedddcccbbaaa``__ЖndD0   ! $ &()*,-..///////////////////..-R/}XsPqNqNpMpMpMoLoLoLnKnKmJmJmJlIlIlIzRR3        ! " # # $ $ % % $ $ V3qJc@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:jBX5    " # %'(*+,--.....--,+++))((''&&&%% $ # V0Y2M*M*M*L)L)L)K(K(K(~J'~J'}I&}I&}I&|H%|H%|H%Q*A$   ! $ &()+,---,*! [/H!t@s?s?s?r>r>r>q=q=q=p<p<p<o;o;o;p;x@-      ! " # $ $ $ $ # I" r9g3f2f2f2f2e1e1e1d0 d0 d0 d0 c/ c/ c/ b. b. b. a- a- a- `, `, `, `, _+_+_+^*^*^*^*])])])\(\(b+T%   ! # $ &')*+,-..////.0337<@HT `# j =fذx- ѱԄd`?5p%f% W J>5-)&$$ $ &((++,../00//////////////////..," ,|\ʔoeedddcccbbaaa```ЖndE1   ! $ &()*,-..///////////////////..-R0~XtPrOqNqNpMpMpMoLoLoLnKnKnKmJmJlImIzSS3         ! ! " " " # # " "  U2qJc@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:jCZ6   ! # $ &()*+,-.....---++**)('&&% % $ $ # # " ! U0Y2N+M*M*M*L)L)L)K(K(~J'~J'~J'}I&}I&}I&|H%|H%R*B$   ! $ &()+,---,*! \0H!t@t@s?s?s?r>r>r>q=q=q=p<p<p<o;o;q<y@,       ! " " " " " I# s:g3g3g3f2f2f2e1e1e1d0 d0 d0 c/ c/ c/ c/ b. b. b. a- a- a- a- `, `, `, _+_+_+^*^*^*^*])])])\(b+U%    " $ %'(*+,--../////.1348=CLW d"s$V5pFK ZZZӳ݌lkK?t&i& [" N A7/)'% $ # % &()+,-./000//////////////////..," ,}\˔ofeeeddcccbbbaa``їodE1   ! $ &()*,-..///////////////////..-S0YtQrOrOqNqNqNpMpMoMoLoLnKnKnKmJmJmI{ST4!            !   !   T2rKdAc@c@b?b?b?b?a>a>`=`=`=_<_<_<^;^;jCZ6  ! " $ &'()++,-.....--,+*)('&& $ $ # # " ! !     T/Z3N+N+M*M*M*L)L)L)K(K(K(~J'~J'~J'}I&}I&}I&R*B$   ! $ &()+,---,*! [0I"t@t@t@s?s?s?r>r>r>q=q=q=q=p<p<p<q<zA-             H" t;h4g3g3g3f2f2f2e1e1e1d0 d0 d0 d0 c/ c/ c/ b. b. b. b. a- a- a- `, `, `, _+_+_+_+^*^*^*])])])b+V%  ! " # % &()*+,-...///////2359?FP ]" g /uUǡ۵+ 2׷ĤrtTL,z) l% `# R E9/*&$ # # $ &&(*,--./00///////////////////..,",}]˕offeeeddcccbbaaa`җoeE1   ! $ &()*,-..///////////////////...S0YuQrOrOrOqNqNqNpMpMoLoLoLnKnKnKmJnJ{TU4!                  T2sKeAdAc@c@c@b?b?a>a>a>`=`=`=_<_<_<^;kD\7 ! # $ % '()*+,--....--,+*)('&% $ # " !         S/[3O,N+N+M*M*M*L)L)L)K(K(K(~J'~J'~J'}I&}I&S+B$   ! $ &()+,---,*! [0I"uAt@t@t@t@s?s?r>r>r>q=q=q=q=p<p<q=zA,            H" t;h4h4g3g3g3f2f2f2e1e1e1e1d0 d0 d0 c/ c/ c/ b. b. b. a- a- a- a- `, `, `, _+_+_+_+^*^*^*])])c,V&!  " # $ &')*++,-...//////.1336;AIT b# l E$taX nnnظƦy|\X80o$d% U I<3+&$ " " # $ &(**,../00////////////////////..,",}]̖pgffeeedddccbbbaaҘpeE1   ! $ &()*,-..///////////////////...T0ZuQsPsPrOrOqNqNqNpMpMpMoLoLnKnKnKmJ|UV5!                  S2tLeBdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_r>r>q=q=q=p<r={B,          H" v<h4h4h4g3g3g3f2f2f2f2e1e1e1d0 d0 d0 c/ c/ c/ c/ b. b. b. a- a- a- `, `, `, `, _+_+_+^*^*^*])b,W&#  $ %&((**+,--..////////.2348=DMY! d!v'a@ϥ@7  ںɩԄdcC9s&i& [! N @5-($ " ! " # % &)++,../00////////////////////..,",~^̕pggffeeedddccbbbaӘpeF2   ! $ &()*,-..///////////////////...T0ZvRsPsPsPrOrOqNqNqNpMpMpMoLoLoLnKoK|UW5!                  R2tLeBeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_r>r>q=q=q=r={B,        G" v<i5h4h4h4g3g3g3f2f2f2f2e1e1e1d0 d0 d0 c/ c/ c/ c/ b. b. b. a- a- a- `, `, `, `, _+_+_+^*^*^*c,W&% " &''))+++--...//////////2369?GQ ^# h8cرxd% ۻ̬ۊjmME%w'l& _# Q D8/($ " !  " $ %')*--.//0/////////////////////..,",~^͗qgggfffeedddccbbbӘpeF2   ! $ &()*,-..////////////////////..U0[vRtQsPsPsPrOrOrOqNqNpMpMpMoLoLnKoK}VX6"                 R2uMfBeBeBdAdAc@c@c@b?b?b?a>a>`=`=`=_r>r>q=q=s>{B,     G" v<i5i5h4h4h4g3g3g3f2f2f2f2e1e1e1d0 d0 d0 c/ c/ c/ c/ b. b. b. a- a- a- `, `, `, `, _+_+_+^*^*c-X''# '())++,---.../////////.0237<BK V c# p"T4O'<ܼήpuUQ1~.o&d% U H;1*% "   ! " $ &(*+,./00//////////////////////..,",^͗qhgggfffeeeddcccbԙqfF2   ! $ &()*,-..////////////////////..U1[vStQtQtQsPsPrOrOrOqNqNqNpMpMoLoLoL}VY6" !          Q2uMgCeBeBeBdAdAdAc@c@b?b?b?a>a>a>`=`=mFa9!())*++,--......--+*)('% # !       Q/]5P-P-O,O,O,N+N+N+M*M*M*L)L)L)K(K(K(T-C%   ! $ &()+,---,* ]2K%vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=s>|C, F" x>i5i5i5i5h4h4h4g3g3g3f2f2f2e1e1e1d0 d0 d0 d0 c/ c/ c/ b. b. b. a- a- a- `, `, `, `, _+_+_+^*c,X')% ))*+++---...///////////.1358=EN \" f /tU˥o' ݽаv|\]=6r%h& Z! L ?4+&!    ! # %')+,../0///////////////////////..,",_ΗrhhgggfffeedddcccԙrfF2   ! $ &()*,-../////////////////////.Z5!ɏf][ZZZYYY~X~X}W}W}W|V|V{U|UʍbZ6" R3ŅXrKrKqJpJpJoIoInHnGnHmGlFlFkEkEkEjDxNh?%)**++,---......-,,#    K+_7Q.P-P-O,O,O,N+N+N+M*M*M*L)L)L)K(K(U.C%   ! $ &()+,---,* ]2K%wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>s?}D$      H# Ft<s;s:s:r:q9q9p9o8o8o7n7n6m6m5l5l5l5k4k4k4j3 j3 j3 i2 i2 i2 h1 h1 h1 g0 g0 g0 g0 f/ e.f/ k1^**& *+++,---....///////////./236:@HS a# l G'{\3@;;;ܼа{҂bfFB!x(m' _# Q D8-&"     ! $ &(*,-.//0///////////////////////..,",_Θrihhhggfffeeeddcc՚sfF2   ! $ &()*,-../////////////////////.P-mLcDaCaCaBaBaB`B`B_A_A_A^@^@^?]?]?]?fFY6"( 432 0 . - , + ) ( ' & & & & & &  N0_?U8T7T7T6T6T6S5S5S5S4S4R4R4R4Q3Q3Q3\:Y3+++,,--........-,)39 4 3 2 / . , * ) ' &% $# " "!! V2\5Q.Q.P-P-P-O,O,O,N+N+M*M*M*L)L)L)K(V.C&   ! $ &()+,---,* ^2L%wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>t?zB3                  A d3Z.[-Z-Z-[-[-Z,[-[,Z,Z,[,Z+ Z+ Z+ Y* Z* Z* Y* Y* Y* X) X) X) X) W( W( W( W' V' V' V' U&U&U&U&U%Y(Q#+(++,,---..../////////////.1237<CL Y! d!y) hHÚw( ݽұ¢؈hoOM-}, o& d% V H;0(#      " $ ')+,-./0////////////////////////..,",`Ϙsiihhhgggffeeeddd՚sfG3   ! $ &()*,-..///////////////////////-) ) ) ( ( ' ' ' & ' & & & % % $ $ "  d=(XoLnKnKnKmJmJlIlIlIkHkHjGjGjGiFiFjFxPR3    " # $ $ % & & & & *,,,----.........-+e;"e>Y6X5X5W4W4W4V3V3V3V2U2U2T1T1T1S0S0R/Q/R/Q.Q.Q.P-P-P-O,O,O,N+N+M*M*M*L)L)L)V.C&   ! $ &()+,---,* ]2L&xD!wC wC wC vBvBvBuAuAt@t@t@t@s?s?s?r>q>q>q=q=q=p<p<p<o;o;o;n:n:n:m9m9m9m9l8m8x>3   ! " $ $ & '' '((((((((((((((((((((()()+,,----.....////////////////2359>GR _# j>nd;CgggݽѱĤݍmuUY94s&i& [! M@3*$     ! # &(*,-../0////////////////////////..,",`ϙtjiiihhgggfffeedd֛sfG3   ! $ &()*,-..//////////////////////0,( ) ) ) ) ( ( ( ( ( ( ' ' ' & & % $  hA*]tPtOsOsOsNrNrNrMqMqMpLpLpKoKoKoJoJUU6"  ! # $ % & ' ' ' ( ' *-----......//...-+g=#jA]9]8\8\8\7[6[7[6Z5Z6Y5Y4Y4X4X4X3W2X3T1Q/R/Q.Q.Q.P-P-P-O,O,O,N+N+N+M*M*M*L)W/D&   ! $ &()+,---,* ^3L&xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>v@xAv@v@v@v?u?u?t>t>t>s=s=s=s<r<r<q;r;~B5     ! # % & '( ()))))********************-----......////////////////.0336;AJW c"t%_?ʢ{(ݽҲťs|\aB>v'm' `# R E8-%!      ! $ ')*,-./0/////////////////////////..,",aЙtjjiihhhgggffeeee֜tgG3   ! $ &()*,-../////////////////////////..........---,,+*g@)YoLoLoLnKnKnKmJmJlIlIlIkHkHkHjGjGjFyQU5"    ! # $ &()*++,-------.......////..-+e;"f@Y6Y6Y6X5X5W4W4W4V3V3V3U2U2U2T1T1T1S0S0S0R/R/Q.Q.Q.P-P-P-O,O,O,N+N+N+M*M*M*W/D&   ! $ &()+,---,* ^3N'xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=q=p<p<p<o;o;o;n:n:n:m9m9m9m9x?4     ! # $ &()*+,,---------------------------.......//////////////////.1348>EO ]" g8gj@CܼѱƦvсaiII(|+ p' e% W J<0(!      ! " % (*+-//0//////////////////////////..,",`КuŽkjjjiihhhggfffeeלtgG3   ! $ &()*,-..////////////////////////////..........--+*g@)YpMoLoLoLnKnKnKmJmJmJlIlIkHkHkHjGjGzRT5"    ! # % &()*+,------......../////..-+e;"f@Z7Y6Y6Y6X5X5X5W4W4W4V3V3V3U2U2T1T1T1S0S0S0R/R/R/Q.Q.Q.P-P-P-O,O,O,N+N+M*M*X0D&   ! $ &()+,---,* ^3N'yE"xD!xD!xD!xD!wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=q=q=p<p<o<o;o;o;n:n:n:m9n9y@4     ! # $ &()*+,,-------------------------......../////////////////////236:@IU b" p#W6ͥ| '///ۻѱƦyՅenNS32s'j' [! N A4+$       ! $ '(*,-.00//////////////////////////..,",aКuŽkŽkjjiiihhhggfffeםugH4   ! $ &()*,-..////////////////////////////////.......-,+hA*ZpMpMoLoLoLnKnKnKmJmJlIlIlIkHkHkHjGzRU5#    ! # % &()*+,------......../////..-+e<"g@Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3V3U2U2T1T1T1S0S0S0R/R/R/Q.Q.Q.P-P-P-O,O,N+N+N+N*X0D&   ! $ &()+,---,* _4N'yE"yE"xD!xD!xD!wC wC wC vBvBvBvBuAuAt@t@t@t@s?s?r>r>r>r>q=q=p<p<p<p<o;o;o;n:n:n:n9y@4     ! # $ &()*+,,-------------------------........////////////////////.0247<DN [" f3݀`ܶj@BۻѱƦ|ڊjuU\<;v( n( a# T F9.&       " %')+-//0///////////////////////////..,",aћvŽkŽkŽkjjjiihhhgggff؝ugH4   ! $ &()*,-..//////////////////////////////////////..-+hA*ZqNpMpMpMoLoLnKnKnKmJmJmJlIlIkHkHlH{SU5#    ! # $ &()*++,--------......///...-+e<"hA[8Z7Z7Z7Y6Y6Y6X5X5W4W4W4V3V3V3U2U2U2T1T1T1S0S0R/R/R/Q.Q.Q.P-P-P-O,O,O,N+N+X1D&   ! $ &()+,---,* _4O(zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=q=p<p<p<o;o;o;n:n:o:z@4     " $ &')*++,,--------------------------........///////////////////.1359?HS a" n!R1ʢz$iiiںаƦ~ݍmyYcCF&|+ q' f% X L >2(!        # &)*,-./////////////////////////////..,",bћvÏlŽkŽkŽkjjjiihhhgggfٞvhH4   ! $ &()*,-..//////////////////////////////////////..-,iB*[qNqNpMpMpMoLoLoLnKnKmJmJmJlIlIlIkH{SU6#    ! " $ &'()*+++,,,,----......//...-+e<#hA[8[8Z7Z7Z7Y6Y6Y6X5X5W4W4W4V3V3V3U2U2U2T1T1T1S0S0R/R/R/Q.Q.Q.P-P-P-O,O,O,N+Y1D'   ! $ &()+,---,* _4O(zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=q=p<p<p<o;o;o;n:o:{A4     " # % &()*++,+++++++++++++++++,,,,,,,-----.....///////////////////.0236<CL Z" f 0|[۵d;>  ظϯƦߏo}]iIO.1t' k' ]" P C6,$        ! $ '),-./0////////////////////////////..,",bҜwÏlÏlÏlŽkŽkŽkjjiiihhgggٞvhH4   ! $ &()*,-..//////////////////////////////////////..-,iA*[rOqNqNqNpMpMoLoLoLnKnKnKmJmJlIlIlI{SV7#      " $ % &'()***++++,,,---.........-+e<#iB\9[8[8Z7Z7Z7Y6Y6Y6X5X5X5W4W4V3V3V3U2U2U2T1T1T1S0S0S0R/R/R/Q.Q.P-P-P-O,O,O,Y1D'   ! $ &()+,---,* _4P)zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=q=p<p<p<o;o;o;o;{A4      " $ & '())*********************+++++++,---......//////////////////.1359?GR `" m!N-Ús!޾ֶήťrсamMW79w(n( b$ V I;0&      # %)*,./0/////////////////////////////..,",cҜwĐmÏlÏlÏlŽkŽkjjjiiihhggڟwhI5   ! $ &()*,-..//////////////////////////////////////..-,jB+\rOrOqNqNqNpMpMoLoLoLnKnKnKmJmJlIlI|UW7#      ! # $ % &'(()))***+++,,---.......-+f=#iB\9\9[8[8Z7Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3U2U2U2T1T1T1S0S0S0R/R/R/Q.Q.Q.P-P-O,O,Z3E'   ! $ &()+,---,* `4P){G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=q=p<p<p<p<o;p<{B4      ! # $ %''(())))))))))))))))))))))****+++,,--.....///////////////////236;BL Y e /yYٲ]48 CCCۻյͭĤtՅerR]=A {+ q( g& Z! N @4)!      ! % ')+,./0/////////////////////////////..,",cӝxĐmĐmĐmÏlÏlŽkŽkŽkjjiiihhhڟwhI5   ! $ &()*,-..//////////////////////////////////////..-,jB+\sPrOrOqNqNqNpMpMpMoLoLnKnKnKmJmJmJ|UX7$      ! " # $ % %&''((()))**++,---.....--+f=#jC\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3V3U2U2T1T1T1S0S0S0R/R/R/Q.Q.Q.P-P-P-Z2E'   ! $ &()+,---,* `5Q*{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAt@t@t@t@s?s?r>r>r>r>q=q=q=p<p<p<p;|B4      ! # $ % &'''''''''''''''''''((((((())***++,--....///////////////////1348>FQ _" l N.hںԴ˫ãvֆfuUaAJ*0t( k( `# S F9-$      " %(*,.//0/////////////////////////////..,",cӝxőnĐmĐmÏlÏlÏlŽkŽkŽkjjjiihh۠xhI5   ! $ &()*,-..//////////////////////////////////////...,jC+\sPrOrOrOqNqNqNpMpMpMoLoLnKnKnKmJmJ}UX7$       ! " # # $ $ %%&&''(())*+++---....--+f=$jC]:\9\9\9[8[8[8Z7Z7Z7Y6Y6X5X5X5W4W4W4V3V3V3U2U2U2T1T1T1S0S0R/R/R/Q.Q.Q.P-P-[3E'   ! $ &()+,---,* `5Q*|H%{G${G${G$zF#zF#zF#yE"yE"xD!xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=q=p<p<q=|B4       ! " # $ $ %% &&&&&&&&&&&&&&&&%%&&&'''(())*+,,--...////////////////////236;BLX! d/zZ۴N&2ݽ׷ѱʪ¢wىixXfFQ15w( p( d% X K >2(     # '),-.00//////////////////////////////..,!,dԝxőnőnĐmĐmĐmÏlÏlŽkŽkŽkjjjiih۠xiI5   ! $ &()*,-..//////////////////////////////////////...,kC,^sPsPsPrOrOqNqNqNpMpMpMoLoLnKnKnKmJ}VZ8%        ! ! " # # # $ $ $ $ %&&'(()++,--....--+g>$kD]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6Y6X5X5W4W4W4V3V3V3U2U2U2T1T1S0S0S0R/R/R/Q.Q.Q.P-[4E(   ! $ &()+,---,* a5Q*|H%|H%{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAt@t@t@t@s?s?r?r>r>r>q=q=q=p<q=}C4       ! ! " # # # # # # # # # # # # # # # # # # # # # $ $ $ % %& &'(()*++,--...//////////////////.0248>FQ _" k P/z\ ,,,߿ںյϯɩwڊjzZjJW7=y* s( i& ]" P D7,#    " % )*,./0///////////////////////////////..,!,d՞yƒoőnőnĐmĐmĐmÏlÏlÏlŽkŽkjjjiiۡyiI5   ! $ &()*,-..//////////////////////////////////////...-kC,^tQsPsPsPrOrOrOqNqNpMpMpMoLoLoLnKnK~VZ8$           ! ! ! ! " " # # $ $ %''))++,--...--+g=$kD^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6X5X5X5W4W4V3V3V3U2U2U2T1T1T1S0S0R/R/R/Q.Q.Q.\4E(   ! $ &()+,---,* a6R+|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=q=q<}D4           ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! " " # # $ $ % &'()*++--...////////////////////236:BKY! d/^Ҝ<)߿ۻظӳͭƦxیl}]mM[;D$. t) l( a# V J=1&     # &)+-./0///////////////////////////////..,!,e՞yƒoőnőnőnĐmĐmĐmÏlÏlÏlŽkŽkjjjiܡziJ6   ! $ &()*,-..///////////////////////////////////////..-lC,^tQtQsPsPsPrOrOrOqNqNpMpMpMoLoLoLnK~W\9%                 ! ! " # $ % &())++,--..--+g>%lE^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6X5X5W4W4W4V3V3V3U2U2U2T1T1T1S0S0S0R/R/Q.Q.]5F(   ! $ &()+,---,* a6R+}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=r>~D3                                 ! " # $ $ &'()*+,--...//////////////////.1337>FQ `" lQ1݉aL}}}߿޾ۻٹԴаʪťx܌l~^pP_?K*2v( p) f% Z! O B5+!     $ '*,.//////////////////////////////////..,!,e֟zƒoƒoƒoőnőnőnĐmĐmÏlÏlÏlŽkŽkŽkjjݢziJ6   ! $ &()*,-..///////////////////////////////////////..-lD,_uRtQtQtQsPsPrOrOrOqNqNqNpMpMoLoLoL~W]:%                    ! " # % &()*+,--..--+g>%lE_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3V3U2U2T1T1T1S0S0S0R/R/R/]5F(   ! $ &()+,---,* a6S,}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"xD!xD!xD!xD!wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=r=E3                                  ! " # $ &'()*+,-...///////////////////.2369BKY e1cݹ'!$$$ںܼܼܼܼۻٹ׷յѱͭȨ¢xݍmЀ`qQbBP08z* s) j' _# T G;/%    " % (+-./0////////////////////////////////..,!,e֟zǓpƒoƒoƒoőnőnőnĐmĐmÏlÏlÏlŽkŽkŽkjݣ{jJ6   ! $ &()*,-..///////////////////////////////////////...mD-_uRuRtQtQtQsPsPrOrOrOqNqNqNpMpMoLoLX]:%                      ! " # % '()*+,-----+h>%lE_<_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3V3U2U2T1T1T1S0S0S0R/R/^6F(   ! $ &()+,---,* a6S-~J'}I&}I&}I&|H%|H%|H%{G${G$zF#zF#zF#yE"yE"yE"yE"xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@t@s?s?r>r>r>r>~E3                                ! # % &()*+,-...///////////////////.0247=FQ `! n!X7lC<յ׷׷׷ֶյӳѱͭɩťxݍmЀ`sSdDT4>|, u) m( c$ X M A4*     $ (*,-/0/////////////////////////////////..,!,fנ{ǓpǓpǓpƒoƒoőnőnőnĐmĐmĐmÏlÏlŽkŽkÎkݣ{jJ6   ! $ &()*,-..////////////////////////////////////////..mD-`vSuRuRuRtQtQsPsPsPrOrOqNqNqNpMpMpMX_;&                      ! " $ %')*+,-----+h?%mG_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Z7Y6Y6Y6X5X5W4W4W4V3V3V3U2U2U2T1T1T1S0S0S/^6F)   ! $ &()+,---,*b7S-~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>s?F3            ! # % '()*,,-..////////////////////.1369BLX! d4jluuuаѱѱѱаϯͭʩƦ¢w܌lсatTfFW7C#/w) p) g& \" Q F:.$    ! % )*-./0/////////////////////////////////..,!,fנ{ȔqǓpǓpǓpƒoƒoőnőnőnĐmĐmĐmÏlÏlŽkŽkޤ|jK6   ! $ &()*,-..////////////////////////////////////////..mE-`vSvSuRuRtQtQtQsPsPsPrOrOqNqNqNpMpMY_;& !                 ! # % '()+,-----+h?&mG`=_<_<_<^;^;^;]:]:]:\9\9[8[8[8Z7Z7Z7Y6Y6X5X5X5W4W4W4V3V3V3U2U2U2T1T1T1S0S0^6F)   ! $ &()+,---,*b7U.~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?s>F3        " $ &')*+,-../////////////////////0247=GR `!q$_?ƠM$,ɪ˫˫˫˫ʪȨť¢~u܌lсauUhHY9H'3x) s* j' `# V K?3)   # ')+./0//////////////////////////////////..,!,gء|ȔqȔqǓpǓpǓpƒoƒoƒoőnőnĐmĐmĐmÏlÏlÏlޤ|jK7   ! $ &()*,-..////////////////////////////////////////.-tJ1ϔj[[[ZZZ~Y~Y}X}X}W|W|W|V{V{V{Uʍbb>'       " $ &()*+,----+h?&nH`=`=`=_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6X5X5X5W4W4V3V3V3V3U2U2T1T1T1S0_7G)   ! $ &()+,---,*c7U.K(K(~J'~J'~J'}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?t@G.                                    ! # %'(*+,-../////////////////////.1369BLZ! e<vsR ĤťƦťťã}tۋkсavVhH[;L,8z* u* m( d% Z! P D9-#    ! $ (*,./0//////////////////////////////////..,!,gآ|ɕrȔqȔqǓpǓpǓpƒoƒoƒoőnőnőnĐmĐmÏlÏlߥ}jJ7   ! $ &()*,-../////////////////////////////////////////.h@*zVkKjJjIjJiIiIhHhHhHhGgGgGfFfFfEeEeErN]9$ + * (&%$"!          " # %')*+,----+h?&oHa>`=`=_<_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3U2U2U2T1T1T1_7G)   ! $ &()+,---,*c8U.K(K(K(~J'~J'}I&}I&}I&|H%|H%|H%|H%{G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?t@F6                                           ! " % &(*+,-../////////////////////.0247=GS a u&lKկȌ/ {{{ѻ{sڊjЀ`uUiI]=N.<|, w* p) g& ^" T I>2(   " %)+-/0///////////////////////////////////..,!,hآ}ɕrɕrȔqȔqȔqǓpǓpǓpƒoƒoőnőnőnĐmĐmĐmߥ}kK7   ! $ &()*,-..//////////////////////////////////////////.////.----,,,+++*+))[7#yTkIjIiHiHiGhGhGgFgFgEfEfEfDeDeDdCdCsM[:%   ! # % '(*+,----*i@&oHa>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3V3U2U2T1T1`8G)   ! $ &()+,---,*c7V/L)K(K(K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAt@t@t@t@s?n<l:l;l;l:k:k:k9j9j9j9i8i8i8i7h7h7h6g6g6g5f5f5f4e4f4e3d3e3d3d2d2c2c1c1c1b0b0b0h3Z,      " $ &()*,-..//////////////////////.136;BM [! gD$rI:***yqىiЀ`vVjJ]=P0@ .w* r* j& a# X N C8,#     # '*-./////////////////////////////////////..,!,h٣}ɕrɕrɕrȔqȔqȔqǓpǓpƒoƒoƒoőnőnőnĐmĐm~kK7   ! $ &')*,-..//////////////////////////////////////////0*& ' ' ' ' & & & & & % % % % $ $ # " _:%ŊaxSxRwRvQwQvQuPuPuPuOtOsNtNsNrMrMrLXb@)    " % &(*+,---,*i@&pIb?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3V3U2U2U2`8G*   ! $ &()*+,--,*c8V/L)L)K(K(K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"xD!xD!xD!xD!wC wC vC vBvBvBuAuAuAt@t@s?xB|DzCyBzByBxAxAxAw@w@w@v?v?v?u>u>u>t=t=t=s<s<s<r;r;r;q:q9q:p9p8p9o8n7n7n7n7m6u:c1    " $ &()*+-..//////////////////////.0239?GT bz) yXj|vߏoׇg~^tTjJ_?R2B"1y* t* l( d% [! R H=2'     $(+,./////////////////////////////////////..,!,h٣}ʖsʖsɕrɕrȔqȔqȔqǓpǓpǓpƒoƒoőnőnőnđn~lL8   ! # % ')*+-...////////////////////////////////////////////........-----,++*_:$ZqOpMpMpMoLoLoLnKnKmJmJmJlIlIlIkHkH{S]<'    " $ &()*+,--,*i@'pIb?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9[8[8[8Z7Z7Z7Y6Y6Y6X5X5W4W4W4V3V3V3U2U2a9G*   ! # % ')*+,--,*c8W0M*L)L)K(K(K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=q=p<p<p<o;o;o;n:n:n:m9m9m9l9l8l8l8k7k7k7j6j6j6i5i5i5h4h4h4g3o7^.    ! $ %')*+,..///////////////////////.135;CN]! jQ1I!&̹ztݍmՅe}]tTjJ^>S3E%4y* u+ o) g& _# V MB7,"       # &)+-/0////////////////////////////////////..,!,hڤʖsʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoƒoƒoőnƑnkL8    ! # % '(*+,-........////////////////////////////////////////...........--,+`;%[qNqNpMpMpMoLoLoLnKnKmJmJmJlIlIlIkH{S]<'    " $ &')*+,,,,*j@'qJb?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6X5X5X5W4W4V3V3V3V3a9H*   ! # % '(*+,,,,*d9W0M*M*L)L)L)K(K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=q=p<p<p<o;o;o;n:n:n:m9m9m9l8l8l8l8k7k7k7j6j6j6i5i5i5h4h4h4o8^.    ! $ % ')*+,..////////////////////////0348>HV b3j݌dF ==={wqۋkԄd|\rRiI_?S3G'6{+ w+ q) j& b$ Y! P G<1'      $ (+-///////////////////////////////////////..,!,iڤ~˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoƒoƒoƑnlL8   ! # $ &()*,--...........//////////////////////////////////////////......-,+`:%[sOqNqNqNpMpMoLoLoLnKnKnKmJmJlIlIlI{S]<'    ! # %'(*++,,+*iA(qJc@b?b?b?a>a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3b:H*   ! # % '()+++++)d9X1M*M*M*L)L)L)K(K(K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>r>q=q=p<p<p<p<o;o;o;n:n:n:m9m9m9l8l8l8k7k7k7j6j6j6i5i5i5i5h4p8_/    ! $ % ')*+,..////////////////////////.136<DO _!o!_>Ыճx ~{wsގn؈hсazZqQhH^>T4H(9|, x+ s* l' e% ]" U KA6,#       ! % (+./0/////////////////////////////////////..,!,iۥ˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoƒoƒolL8    " $ &')*+,,----..........///////////////////////////////////////////...-,`;%[sOrOqNqNqNpMpMoLoLoLnKnKnKmJmJmJlI|T^<'    ! # $ &()*++++)jA(rKc@c@c@b?b?a>a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4W4V3b;H*    " $ &')*+++*)d9X1N+M*M*M*L)L)L)K(K(K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#yE"yE"yE"xD!xD!xD!xD!wC wC vBvBvBvBuAuAt@t@t@s?s?s?r>r>r>q=q=q=q=p<p<p<o;o;o;n:n:n:m9m9m9l8l8l8k7k7k7j6j6j6i5i5i5h4p8_/    ! $ %')*+,..////////////////////////.0249@JX! d>Z1+yz{zxvtpڊjՅe_xXpPgG^>S3H(;~- y* t* n( h& `# X O F;2'       # '*,.///////////////////////////////////////..,!,jۥ̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoǒo㨀lL8    " # % &()*++,,,,-----......///////////////////////////////////////////..-,a;%\sPrOrOqNqNqNpMpMoLoLoLnKnKnKmJmJlI}U^=(    ! # $ &'()****(iA(rKdAc@c@b?b?b?a>a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4W4b;H*    " # % &()***)(d9Y2N+N+M*M*M*L)L)L)K(K(K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G$zF#zF#zF#zF#yE"yE"xE"xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@t@s?s?r>r>r>r>q=q=p<p<p<p<o;o;o;n:n:n:m9m9m9l8l8l8k7k7k7j6j6j6i5i5i5p9_/    " $ &()*+-..//////////////////////////136<ER _x(wUwP bbb竓sttsqߏoۋkׇg҂b|\vVnNfF^>T4I)<.y+ u+ o( i& b$ Z! S JA5,#         $ (+-.///////////////////////////////////////..,!,jܦ̘u̘u˗t˗t˗tʖsʖsʖsɕrɕrȔqȔqȔqǓpǓpǓp㩀lL9     " $ % '())**+++++,,---.....//////////////////////////////////////////..-,a;&\tPsPrOrOrOqNqNpMpMpMoLoLnKnKnKmJmJ}U^=(     " $ % &'())))'jA)sLdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Z7Y6Y6Y6X5X5W4W4cr>r>q=q=q=p<p<p<o;o;o;n:n:n:m9m9m9l8l8l8k7k7k7k7j6j6j6i5q9`0     " $ &()+,-../////////////////////////.035:AL[! hN-Ä*ۍmݍmݍmݍmݍmڊjׇgӃc_yYsSlLeE\a>a>`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Z7Y6Y6X5X5X5X5dr>r>q=q=q=p<p<p<o;o;o;n:n:n:m9m9m9l8l8l8k7k7k7j6j6j6j6q9`0    ! # % &(*+,-..///////////////////////////137=GU a3nd<,ֆfֆfׇgֆfՅe҂b_{[vVpPjJcC[;R2H(<0z+ w+ r* m( f% _# X Q H?5-#       # '*-.////////////////////////////////////////..,!,kݦ͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔq䪂lM9     ! # $ % &''((()))**++,---....////////////////////////////////////////...,b<&]uRsPsPsPrOrOrOqNqNpMpMpMoLoLoLnKnK~V`=(     ! " # $ % %&&&&$ iA)tMeBeBdAdAdAc@c@b?b?b?a>a>a>`=`=`=_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6X5X5dr>r>q=q=q=p<p<p<o;o;o;o;n:n:n:m9m9m9l8l8l8k7k7k7j6j6q:a1    ! # %')*+,-..//////////////////////////.135;BN ] o"fEڵR ⵣ_Ѐ`Ѐ`_}]{[wWsSnNhHaAY9P0G'=1{+ x+ s* n( g& b$ [! S LD:1'      % ),-/////////////////////////////////////////..,!,kݧ͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrɕrȔqȔq媂lM9      ! " # $ % %&&''(())*++,--....////////////////////////////////////////..--b<'^uRtQtQsPsPrOrOrOqNqNqNpMpMoLoLoLnK~Wa?)      ! " # $ $ $ $ $ $ # iA)uNeBeBeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6X5e=H+      ! " # $ $ $ $ " d:[4P-O,O,O,N+N+N+M*M*M*L)L)L)K(K(K(~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=q=p<p<p<o<o;o;n:n:n:n:m9m9m9l8l8l8k7k7k7j6q:b1    " $ &')*+,-..////////////////////////////248?IW dB!DŽ+FFFяuyYyYyYxXvVsSoOjJeE^>W7O/F&<0{+ x, t* o( j' c$ ]" W O G>5,#       ! &*,./////////////////////////////////////////..,!,lާΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrɔq櫃lN:       ! " # # $ $ %% &&'()*++,--....////////////////////////////////////////..-b<'^uRtQtQtQsPsPsPrOrOqNqNqNpMpMpMoLoLWb>)        ! " " " " # # " ! iA)uNfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6e=H+       ! " " " " ! d: \5P-P-P-O,O,O,N+N+M*M*M*L)L)L)K(K(K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAt@t@t@t@s?s?r>r>r>r>q=q=q=p<p<p<o;o;o;n:n:n:m9m9m9l8l8l8k7k7k7q:b1   " $ %'(*+,--..///////////////////////////.136<EQ _|+ bc;* qQrRsSrRqQnNkKgGaA\r>r>q=q=q=p<p<p<o;o;o;n:n:n:m9m9m9l8l8l8k7k7r;b2  ! # % &()*+,-.../////////////////////////////249AL[! jY8ҭ|NkKlLlLkKiIfFbB^>Y9S3K+D$:/|, y, t+ p) k( g& a$ Z! T N F=5,#       % )+.//////////////////////////////////////////..,!,mިϛxΚwΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕr笄lN:           ! ! " # $ % &())++,-...////////////////////////////////////////..-c='`wSuRuRtQtQtQsPsPsPrOrOqNqNqNpMpMpMXd@*                  hA)vOgDfCfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9[8[8[8Z7Z7Z7f>H+           c: ]5Q.Q.P-P-P-O,O,O,N+N+N+M*M*M*L)L)K(K(K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=q=p<p<p<o;o;o;n:n:n:m9m9m9l8l8l8l8r;c3!  " # $ &'))++,-.../////////////////////////////147=GT b;}&ҥdDeEeEcCaA^>[;V6P0J*B"9/{+ y, u+ q) m' h& b$ \" W P IA90(    ! &*,.//////////////////////////////////////////..,!,mߩϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖs笄lM:            ! " # % &()*++--..////////////////////////////////////////...d=(`wSvSuRuRuRtQtQsPsPsPrOrOrOqNqNpMpMYe@*                   hA*wPgDgDfCfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7g?H+         b: ]6Q.Q.Q.P-P-P-O,O,O,N+N+N+M*M*M*L)L)L)K(K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=q=p<p<p<o;o;o;n:n:n:m9m9m9m9l8l8r;c2#  $ % &'()++,--...////////////////////////////.035;CO ]w&zXY1#CCC{a^>^>^>\r>r>q>q=q=p<p<p<p<o;o;o;n:n:n:m9m9m9l8s<d3% &''))*++--...///////////////////////////////238?JY gT3ϪܒlB W8W7X8W7U5R2O/I)D$>6~. {, y, v+ r) n( i' e% `# Z! U O H@80(     % *,.///////////////////////////////////////////..,!,n઄МyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗t譅lN:        ! " $ &'(*+,-...////////////////////////////////////////..e=(axUwTvSvSvSuRuRtQtQtQsPsPrOrOrOqNqNZfA+                gA+xPhEhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?a>a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8h@H+  c:!_7R/R/R/Q.Q.Q.P-P-P-O,O,O,N+N+M*M*M*L)L)L)K(K(K(~J'~J'~J'}I&}I&|I&|H%|H%|H%{G${G${G$zF#zF#yE"yE"yE"xD!xD!xD!xD!wC wC vBvBvBvBuAuAt@t@t@s?s?s?r>r>r>q=q=q=q=p<p<p<o;o;o;n:n:n:m9m9m9s<e4'" '(()+++---...///////////////////////////////136;ES `7̬m ǽP0Q1Q1O/M-J*F&A!<3~- {, y, u+ q) n( k' f% `# [" V P JC<4,$     " &*-.///////////////////////////////////////////..,!,n᪅ѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t鮆lN:      ! # % &()++,...////////////////////////////////////////..e>(bxUwTwTvSvSvSuRuRtQtQtQsPsPsPrOrOqNZhB+!          fA*yQiFhEhEgDgDgDfCfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9\9hAH, b:!_7S0R/R/R/Q.Q.Q.P-P-P-O,O,O,N+N+N+M*M*L)L)L)K(K(K(~J'~J'~J'}I&}I&}I&|H%|H%|H%{G${G${G$zF#zF#zF#yE"yE"yE"xD!xD!xD!wC wC wC vBvBvBuAuAuAt@t@t@s?s?s?r>r>r>q=q=q=p<p<p<o;o;o;n:n:n:m9m9s=f4)$ ()**++,--...////////////////////////////////0249BM \t%zWDǜI)J*I)H(F&B">91|, {, x, u+ r) n( k' f% b$ ]" X S M F?80(     # (+-////////////////////////////////////////////..,!,o᪅ѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u̘u찈gJ8      " $ &()*+,-../////////////////////////////////////////.jB+̓j\[[[ZZ~Y}Y}Y}X|W|W|V|V{V{V{UȌbjD,       iD,ƒXqLqKpKpKoJoJnInInHmHlGlGlGkFkFkFjEkEfAa>b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9jBC)           g>#h=Y4Y4X3X3X3W2W2W1V1V1U0U0T0T/S.S.S.R-R-R-Q,Q,Q+P+P+O*O*O*N)N)N)M(M(M(L'L'L'K&K&J%J%J%I$I$I$~H#}G"~H"}G"|F!}F!|F!{E {E {E zDzDzDyCyCyCxBxBxBwAwAwAv@v@v@u?u?u?t>t>t>s=yAk8*% **+++---....////////////////////////////////.137>HX gU4ԯzS/NNNr[C#C#C#A!>:4/|, z, w, u+ r* n( k' g& b$ ^# Y! T O IB;3,%      % ),.0///////////////////////////////////////////..,!,o⫆Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u͘u鮆lO;                     ! $ %')*+,-../////////////////////////////////////////.c<'[pOpOoNoNoNnMnMnLmLmLlKlKlKkJkJkJjIyTe@)&%#"              a?(pLaAaAa@`@a@`?`?`?_>_>_>^=^=^=]<]<\;[;_=c@b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9iBH,    ]7Y4N-~M,~M,~M,~L+~L+}L+}L+}K+|K*|K*|J*|J)|J){I({I({I({I'zH'zH'yG&yG&yG&xF%xF%xF%wE$wE$wE$vD#vD#vD#uC"uC"uC"tB!tB!tB!sA!sA!sA r@sA r@q?r@q?q?q?p>p>p>o=o=o=n<n<n<n<m;m;m;l:l:l:k9k9k9j8j8j8i7i7i7h6h6i7m9b2+' ++,,---..../////////////////////////////////.035;ER _6U E'<<;950}- {, z-w+ u+ q) n( j' g& c$ _# Z! V P KD>7/(!     ! &*-/////////////////////////////////////////////..,!,p⫆Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘uΚvneihghgggffeeedddccΘsqP:    # %'(*+,-..//////////////////////////////////////////-15 33322211100 000/..Y5"uPhGgFgFfEfFeEeEeEdCdDcCcCcCbBbBbBbBkHD*   !"$&')*+,--.--,d=&qIb?b?b?a>a>a>`=`=`=_<_<^;^;^;]:]:]:]:V5Q2R2R2R2Q2Q2Q1Q1Q1P0P0P0O/O/~O/~N.~N.O/R03    "#%'(*++,--.................................................--.-..--.----...++,,---......///////////////////////////////////249AM [v&Z(̄45430~.|, {, y, w+ t* r) n( k' h& d$ `# [! W R M G@:3,%    " '+-/////////////////////////////////////////////..,!,p㬇Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙vʖt֟{ুݥܤܤ~ۣ}ۣ}ۣ}ڢ|ڢ|١{١{ء{ؠzؠzןyןy֟y֞x]E    # $ &(*+,-..//////////////////////////////////////////1* #% % % $ $ $$ $ # # # # " ""! [7#ȍc|V{UzUzUyTyTySxSxSxRwRwQvQvQvPuOvPYC)  ! " ! " ! `:#sKc@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:\9ac=c=ba>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4W4X4]72    ! # % &()*+,,,---------------------------------------------------------------.-........//////////////////////////////////////024;DR ^<Ӌe6ppp|h|-|- |-{-z,y, w+ v+ s* q) n( j' h& e$ a# ]" Y U P KE?92,%      & +,.0////////////////////////////////////////////..,!,Ñq㭈ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoƒo媂yV@    ! # %')*+,-.........////////////////////////////////////........------,++*\7#[tPrOrOqNqNqNpMpMoLoLoLnKnKnKmJmJnJyRD*    ! # % &()*+++*)d<%sKdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4Y5]71    ! # % &()*+,,---------------------------------------------------...................../////////////////////////////////////////148@M [z'i[>>>R8z,z,z, x, x+ v+ t* r* p) m( j' g& d% a# ]" Y! U Q M GB<5/)!     " '+.//////////////////////////////////////////////.-,!,Òq䭈Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrȔqȔqȔqǓpǓpǓp媂yW@    " % &()*+,--...........////////////////////////////////........------,++*\8$\tPsPrOrOqNqNqNpMpMpMoLoLnLnKnKmJnKzSD*   ! " $ &()*+++*)e=&sLdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9[8[8[8Z7Z7Z7Y6Y6Y6X5X5W4Y5^81    ! # % &()*++,------------------------------------------------.................../////////////////////////////////////////////.036=HWifBׅ1 y/x, w, w+ v+ u+ s* r) o( m( j' g% e% a$ ^" Z! V S N ID>82,&     $ )+.//////////////////////////////////////////////.-,!-Ēq䮉Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrȔqȔqȔqǓpǓp櫃yW@    " $ %'()*+,,------.......//////////////////////////////......-------,,+*)\8$\tQsPsPrOrOrOqNqNpMpMpMoLoLoLnKnKnKzSD*    " $ &'(*****)e=%tMeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6X5X5Z6^80    " $ &')**+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------........./////////////////////////////////////////////////////////25:DR _G&̧Z4u+ u+ u+ u* t* r* p) n( l( j& g& d$ a# ]" Z! V S O JE@;5.("    &*-///////////////////////////////////////////////..-!-Òq寉ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔq櫃yWA    ! # $ &(()+++,,,,,---.......///////////////////////////......----,,,+++*))[8#]uRtQsPsPrOrOrOqNqNqNpMpMoLoLoLnKoL{TC*    " # % '()))))(e>&tMeBeBdAdAdAc@c@b?b?b?a>a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5Z6_90    " $ % '())++++++++++++++++++++++++++++++++++++++,,,++,,,,-----....../////////////////////////////////////////////////////////.148@N Z/~шc1äs* s* s* r* q) o) n( l( i' g& d% a# ^" \! W S P LGB=82+%      '+.///////////////////////////////////////////////..-!-ēr寉ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͚w͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔq笄yWA     " $ % &'()**+++++,,,--.....//////////////////////////.....---,,+++++**))'[8$^uQtQtQsPsPrOrOrOqNqNqNpMpMoLoLoLoL{TD*     " $ % '((((('d=&uNfCeBeBdAdAdAc@c@c@b?b?a>a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6Z7_91    ! # $ %'())*****************************************++++++,,---...../////////////////////////////////////////////////////////.036=IXn |WPkkknp) p) p) p) n( l( k' i& f% d$ a# ^" [" W T Q M HC?94.)"     " (,.///////////////////////////////////////////////..-!-ēr氊ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsʖsɕrɕrȔq笄yWA    ! " $ % &'(())***++++,---....////////////////////////....---,++++***))(('&Z8$^vStQtQtQsPsPsPrOrOqNqNqNpMpMpMoLpM|UC*    ! # $ % &''''&d=&uNfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Y6Y6[7_:0     " # $ % &'()))))))))))))))))))))))))))))))))))))))))))***++++,---....//////////////////////////////////////////////////////////25:DT cW5w%???[Fn( n( m( m( l' j' h& f% d$ a# ^" [! X T R N JEA<61+&     # ),////////////////////////////////////////////////..-".œs氊֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕr譅yWA     ! " # $ %&''(((()**+++---....//////////////////////....--,+++**))(((''&%$  Z8$^vSuRtQtQtQsPsPsPrOrOqNqNqNpMpMpMpM}VD+     ! # $ % % %%% $ d>'vOfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Z7[7`:1     " # $ % %&'''''''''''''''''''''''''''''''''''''''''((()))**+++,--..../////////////////////////////////////////////////////////148AN [;ÞI$v8l' l' k' j' i& g& e% c$ a# ^" [! X U R N JFB=83.("    %*.////////////////////////////////////////////////..-".Ŕs籋֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕr鮅yXB     ! " # $ $ % & &&''(()**++,--...//////////////////////...---,++*)((''&&&% $ $ #  Y7$_wSuRuRuRtQtQsPsPsPrOrOrOqNqNqNpMqN}VC+      ! " # $ # # # " c='wOgDfCfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7\8`:0      ! " # # $ $ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % &&&&''(()*++,---...////////////////////////////////////////////////////////.036>JX* wtO!j& j& j' i& h& g& e% c$ `# ^" [! X U S O KGD?;60+%    ! (,.////////////////////////////////////////////////..-".Ŕt籌ף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖs鮅yXB       ! " " # $ $ $ % &&'())*++,--...////////////////////....--+++))(''%% % $ $ # " " !  X7$`wSvSuRuRuRtQtQsPsPsPrOrOrOqNqNpMqN~WC+       ! " " " !   c='xPgDgDfCfCfCeBeBeBdAdAdAc@c@b?b?b?a>a>a>`=`=`=_<_<^;^;^;]:]:]:\9\9\9[8[8Z7\8a;0       ! " " # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ % % &&'())+++--...//////////////////////////////////////////////////////////25;FUlwRߝ{9κh& h& g& f% e% d$ b$ `# ]" [! X U S P LIEA<83-(#     # (-.////////////////////////////////////////////////..."/ƕt豌ףף֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsꯆyXB         ! ! " " # # $ % &'()*+,--...////////////////////...--,++)((&%$ $ # # " ! !    W7$`xTvSvSvSuRuRtQtQtQsPsPrOrOrOqNqNrO~WC+              b='xPhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?a>a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8]9a;0          ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! " " # # $ $ &&(()++,--...////////////////////////////////////////////////////////.149BQ_T1ĩYf% f% e% d$ c$ a$ _# ]" Z! X U S P M IFB>950+&     %*-/////////////////////////////////////////////////...#/ƕt貍ؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tꯆzXB            ! " # $ $ &'()*+,--..////////////////////...-,++))'&% # # " !        V7%`xTwTvSvSvSuRuRtQtQtQsPsPrPrOrOqNrOXC+           a='yQhEhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8]9ba>a>`=`=_<_<_<^;^;^;]:]:]:\9\9^9ba>a>`=`=_<_<_<^;^;^;]:]:\9\9^;c=/                                                    " $ % '()*+,-..//////////////////////////////////////////////////////////14:DTjYpLo9$_# _" ^" ]" [" Y! W U S Q N KGEA=951,(#     # ),///////////////////////////////////////////////////..$0Ȗv鳎٥ؤؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ў{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u챉zXB        " $ %'(*+,-...///////////////////..-,+*)'%$ " !        S6$ĊcyVxUxUwTwTvSvSvSuRuRtQtQtQsPsPsPsPYC+_=({SiFiFiFhEhEhEgDgDfCfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:^:c>/          " $ &()*+,-../////////////////////////////////////////////////////////.047@O_]8ӑp.^# ]" \" [! [! Y! W U S P N KHEB>;73.*&!     $ *-////////////////////////////////////////////////////.$1ȗv괏٥٥٥ؤؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘uzYC       ! # $ &()*+--..//////////////////...-,*)('% # !       R6$ĊczVxUxUxUwTwTwTvSvSuRuRuRtQtQtQsPtQYB+^='{SjGiFiFiFhEhEhEgDgDgDfCfCeBeBeBdAdAdAc@c@b?b?b?a>a>a>`=`=`=_<_<_<^;^;]:]:_;c>/       ! # % &()+,-...////////////////////////////////////////////////////////.036>KXB׸봙G[! [! Z! Y X V T S Q N KHFB?;840,(#      &+.////////////////////////////////////////////////////."2ުʢ︒﷑﷑쵎촎⫆Ϝyӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚw͙v͙v͙vqR=      " $ &()*+,-..//////////////////...,."  G. ȍezWyVxUxUxUwTwTwTvSvSuRuRuRtQtQtQtQ[7$W7%~UjGjGiFiFiFhEhEhEgDgDgDfCfCeBeBeBdAdAdAc@c@c@b?b?a>a>a>`=`=`=_<_<^;^;^;]:_;e?#       " $ &()*+-...//////////////////////////////////////////////////////////25;HT- dïY Y X W V T S P N KIFC@=952.)% !      (,./////////////////////////////////////////////////////% 1y]oefeeedddcccbbab~ay^k٤ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v讇bJ!.////0000011112239$+    ! # %'(*+,-..//////////////////..-,& 6 F'@">"=!; 9764311//.--,^?,a{WyVyVyVxUxUwTwTwTvSvSvSuRuRtQtQuR~XR6$ (()))*******++**) gC-yRkHjGjGjGiFiFiFhEhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;`=% $ % % % % % & & & & & & ' ' & ' ' ' ' & & & & & & & & & & & & & & & % & & % % % % % % % % % % % $% % $% %%&&*     " $ %')*+,-../////////////////////////////////////////////////////////.149DRrr0 yyyW W V U S R P N KIFCA=:73/+'#     " ),///////////////////////////////////////////////////////.#!"!!!    hF3Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw̘u͙vќxҝyҜxќxЛwћwКwϚvϚvΙuΙuΙu͘t͘t̗s̗s̗s˖r鮅`G   ! # % '(*+,-..//////////////////..-,kD.ҙqbaa```_^_^]]\]\\[~Z|YzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRuRtQtQsPtQuQvRuQuQuQtPtPsOsOsOrNrNrNqMqMpLpLpLnJlIkHkHkHjGjGjGiFiFiFhEhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;]:^;_;_;_:_:^:]:]9]9\8\8[8[8[7Z6Z6Z6Y5Y5Y5X4X4W4W3W3V2V2V2U1U1U1T0T0S/S/S/R.R.R.Q-Q-Q-P,P,P,O+O+N+N*N*M*M)M)L)L(L(K'K'L'T,A$    ! # %'(*+,-../////////////////////////////////////////////////////////.037AOcwPM)\\\viU U T S Q P M KIFDA>:741,)% !     # *-//////////////////////////////////////////////////////0.) ( ) ) ) ( ( ( ( ( ' ' ' ' & & % # pL7Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚw͙vҝyנ|՟{՟zԟzԞzӝyӞyӝxҜxҜxћwћwћwКvКvϚuϙuϙu찇_F    " $ &()+,-..//////////////////..-,jD-ԛsdcbbbaa```___^^]]][zX{XzWzWzWyVyVxUxUxUwTwTwTvSvSuRuRuRsQxTyTxSxSwSwRvRvQvQuQuPuPtOtOsOsNsNrNrMrNoKkHlIkHkHkHjGjGiFiFiFhEhEhEgDgDgDfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;a=a=a=`<`;`<_;_:_:^:^9^9]8]8]8\7\7[7[6[6Z5Z5Z5Y4X4X4X3X3W3W2V2V2U1U1U1T0T0T/S/S/S.R.R.Q-Q-Q-P,P,P+O+O+O*N*N*M)M)M)L(M(V-@#     # % '(*+,-..///////////////////////////////////////////////////////////25>KYY4jH;;;\MS S R P O M KHFDA><851.*'"      %+./////////////////////////////////////////////////////////...........--,,+* sN9ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrɕrȔqȔqǓpǓp䪂[D    " $ &()*+-...////////////////...-+hB,Ζo`__^^^]]]\\~[~[~[}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVxUxUxUwTwTvTvSvSuRuRuRtQtQsPsPsPrOrOrOqNqNpMpMpMoLoLoLnKnKmJmJmJlIlIlIkHkHkHjGjGiFiFiFhEhEhEgDgDfCfCfCeBeBeBdAdAdAc@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3U2U2U2T1T1T1S0S0S0R/R/Q.Q.Q.P-P-P-O,O,O,N+N+N+M*M*M*L)L)L)K(K(K(~J'~J'~J'S+?"    # $ '(*+,-..///////////////////////////////////////////////////////////14;HSAʆf)"""nC2Q P P N MJHFDA><963/,(%     &,.////////////////////////////////////////////////////////////..........--,* tO9֡~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔq䪂\E    ! # % '(*+,-....................-,+hB-Ζoa`___^^]]]\\\~[~[}Z}Z}Z|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTwTwTvSvSvSuRuRtQtQtQsPsPrOrOrOqNqNqNpMpMoLoLoLnKnKnKmJmJlIlIlIkHkHkHjGjGjGiFiFhEhEhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?a>a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3V3U2U2T1T1T1S0S0S0R/R/R/Q.Q.Q.P-P-P-O,O,O,N+N+M*M*M*L)L)L)K(K(K(~J'K'T,?"    " $ &(*+,-..//////////////////////////////////////////////////////////.049EP, ãߥ=\-O N M LJHFDA?<:730-*&#      '-//////////////////////////////////////////////////////////////////.......,+ tO9֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔq櫃\E    # % &()++,-..................--++gB-ϗpa``___^^]]]\\\~[~[}Z}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRuRtQtQtQsPsPrOrOrOqNqNqNpMpMpMoLoLnKnKnKmJmJmJlIlIkHkHkHjGjGjGiFiFiFhEhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Z7Y6Y6X5X5X5W4W4W4V3V3V3U2U2T1T1T1S0S0S0R/R/R/Q.Q.Q.P-P-P-O,O,O,N+N+M*M*M*L)L)L)K(K(K(K'T-?"    " $ &(*+,-..//////////////////////////////////////////////////////////.037@Os饁R MMLKIHFDA?=:741.+($       " )-///////////////////////////////////////////////////////////////////////..-+ uO:ףբա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrȔq櫃\E    " # %'))++,,,---------------,,,+*gB-ϗpaa``___^^^]]\\\~[~[~[}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVxUxUxUwTwTvSvSvSuRuRtQtQtQsPsPsPrOrOrOqNqNpMpMpMoLoLoLnKnKmJmJmJlIlIlIkHkHjGjGjGiFiFiFhEhEhEgDgDfCfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9[8[8[8Z7Z7Z7Y6Y6Y6X5X5W4W4W4V3V3V3U2U2U2T1T1T1S0S0R/R/R/Q.Q.Q.P-P-P-O,O,O,N+N+N+M*M*M*L)L)K(K(L(T-?"    # $ '(*+,-..////////////////////////////////////////////////////////////26>LdՆ`hJJJHGECA?=:852/,)&"      # *.///////////////////////////////////////////////////////////////////////..-, uO:֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsʖsɕrɕr欄\E    ! # $ &()**+++++++++++++++++++++*)gB-Иqbaa``___^^^]]\\\~[~[~[}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUxUwTwTvSvSvSuRuRuRtQtQsPsPsPrOrOrOqNqNpMpMpMoLoLnKnKnKmJmJmJlIlIlIkHkHjGjGjGiFiFiFhEhEgDgDgDfCfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Z7Y6Y6Y6X5X5W4W4W4V3V3V3U2U2U2T1T1T1S0S0R/R/R/Q.Q.Q.P-P-P-O,O,O,N+N+N+M*M*L)L)L)K(L(U.@#    ! # % '(*+,-..///////////////////////////////////////////////////////////.15<IYlE/ HHHFECA?<:8520,*&#        % +.///////////////////////////////////////////////////////////////////////..-,uO:ؤ֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʗtʖsʖsɕr笄]F    " # % &(()********************))(gB-Иqcaaa```__^^^]]]\\\~[~[}Z}Z}Z|Y|Y{X{X{XzWzWyVyVyVxUxUxUwTwTwTvSvSuRuRuRtQtQtQsPsPrOrOrOqNqNqNpMpMoLoLoLnKnKnKmJmJlIlIlIkHkHkHjGjGiFiFiFhEhEhEgDgDgDfCfCeBeBeBdAdAdAc@c@b?b?b?a>a>a>`=`=`=_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3V3U2U2T1T1T1S0S0S0R/R/R/Q.Q.Q.P-P-P-O,O,N+N+N+M*M*M*L)L)L)U.A#    ! $ %')*+,-..///////////////////////////////////////////////////////////.039ERT.D!GFFDBA><:8630-+(%!     ',////////////////////////////////////////////////////////////////////////..-,vP;أף֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖs筄]F    ! " $ % &'(())))))))))))))))))(('' fB.ҙrcbaaa```__^^^]]]\\~[~[~[}Z}Z}Z|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTwTwTvSvSuRuRuRtQtQtQsPsPrOrOrOqNqNqNpMpMoLoLoLnKnKnKmJmJlIlIlIkHkHkHjGjGiFiFiFhEhEhEgDgDgDfCfCeBeBeBdAdAdAc@c@b?b?b?a>a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3V3U2U2T1T1T1S0S0S0R/R/R/Q.Q.Q.P-P-O,O,O,N+N+N+M*M*M*L)M)V/A$    " $ &()*+-...///////////////////////////////////////////////////////////.038CM>]:qqqEDCB@><:8531.+)&"      (-////////////////////////////////////////////////////////////////////////...,vP;ؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖs讅]F     ! # # % %&''''''''''''''''''''&&% fB.ҙrcbbbaa```___^^]]]\\\~[~[}Z}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRuRtQtQtQsPsPsPrOrOqNqNqNpMpMpMoLoLnKnKnKmJmJmJlIlIkHkHkHjGjGjGiFiFiFhEhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Z7Y6Y6X5X5X5W4W4W4V3V3V3U2U2U2T1T1T1S0S0R/R/R/Q.Q.Q.P-P-P-O,O,O,N+N+M*M*M*M*V/C$   ! # $ &()++-.../////////////////////////////////////////////////////////////26@J- ӻrP WWWoeBBA?><:8631/,)'$       ).////////////////////////////////////////////////////////////////////////...,wQ;٤ؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗t鮆]G      ! " # $ $ % % % % % % % % % % % % % % % % % % % %% $ $  fC.Ӛsdcbbbaa```___^^^]]\\\~[~[}Z}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRuRtQtQtQsPsPsPrOrOqNqNqNpMpMpMoLoLnKnKnKmJmJmJlIlIkHkHkHjGjGjGiFiFiFhEhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3V3U2U2U2T1T1S0S0S0R/R/R/Q.Q.Q.P-P-P-O,O,O,N+N+M*M*N*V/D$    " # %'(*+,-...////////////////////////////////////////////////////////////.15=Iu΋l.CCC}bV@@?=;:8641/,*($ "     # *.////////////////////////////////////////////////////////////////////////...-wQ;٥ؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗tꯇ]G       ! " " # # # # # # # # # # # # # # # # # # # # # # " eB.ԛsdccbbbaaa``___^^]]]\\\~[~[}Z}Z}Z|Y|Y|Y{X{XzXzWzWyVyVyVxUxUxUwTwTvSvSvSuRuRtQtQtQsPsPsPrOrOqNqNqNpMpMpMoLoLnLnKnKmJmJmJlIlIlIkHkHjGjGjGiFiFiFhEhEhEgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Z7Y6Y6X5X5X5W4W4W4V3V3V3U2U2U2T1T1T1S0S0R/R/R/Q.Q.Q.P-P-P-O,O,O,N+N+M*N*W0E%   ! # $ &()*+,-../////////////////////////////////////////////////////////////.04:Ff⢂ݡ<333lOC>>=;98631/-*(%#       $ +//////////////////////////////////////////////////////////////////////////..-wQ<ڦإؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘uꯇ^G         ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !  dB.ԛtddcccbbaaa```__^^^]]\\\~[~[~[}Z}Z|Y|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTwTwTvSvSuRuRuRtQtQsPsPsPrOrOrOqNqNpMpMpMoLoLoLnKnKnKmJmJlIlIlIkHkHkHjGjGiFiFiFhEhEhEgDgDgDfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6X5X5X5W4W4V3V3V3U2U2U2T1T1T1S0S0S0R/R/R/Q.Q.P-P-P-O,O,O,N+N+N+W0F& ! # $ %'()++--../////////////////////////////////////////////////////////////.038D[ԋh洚I[:-=<;97531/-+)&# !        &,//////////////////////////////////////////////////////////////////////////..-xQ<ڦ٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u밈^G                               cB.՜ueddcccbbaaa``___^^^]]]\\~[~[~[}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVxUxUxUwTwTvSvSvSuRuRuRtQtQsPsPsPrOrOrOqNqNpMpMpMoLoLoLnKnKmJmJmJlIlIlIkHkHjGjGjGiFiFiFhEhEhEgDgDfCfCfCeBeBeBdAdAdAc@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3U2U2U2T1T1T1S0S0S0R/R/Q.Q.Q.P-P-P-O,O,O,N+O+X1G'! # $ % '()*+,--..///////////////////////////////////////////////////////////////27AQ vP˶Z N- :997531/-+)'$ "         '-//////////////////////////////////////////////////////////////////////////..-xQ<ۧ٥٥٥ؤؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u밈^H                             cB/֜ufeddcccbbaaa```___^^]]]\\\~[~[}Z}Z}Z|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTwTwTvSvSvSuRuRtQtQtQsPsPrOrOrOqNqNqNpMpMoLoLoLnKnKnKmJmJlIlIlIkHkHkHjGjGjGiFiFhEhEhEgDgDgDfCfCeBeBeBdAdAdAc@c@c@b?b?a>a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3V3U2U2T1T1T1S0S0S0R/R/R/Q.Q.Q.P-P-P-O,O,O,X1I'$ % &'()*++--...///////////////////////////////////////////////////////////////16?K c>jD"986531/-+*(%"          )-//////////////////////////////////////////////////////////////////////////...yR<ڦڦ٥٥٥ؤؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v챈^H                           bB/םvfeeddcccbbbaa```___^^]]]\\\~[~[}Z}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRuRtQtQtQsPsPrOrOrOqNqNqNpMpMpMoLoLnKnKnKmJmJmJlIlIkHkHkHjGjGjGiFiFiFhEhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5W4W4W4V3V3V3U2U2T1T1T1S0S0S0R/R/R/Q.Q.Q.P-P-P-O,P,X1J'&&'()*++,--..///////////////////////////////////////////////////////////////.05=E P,x) 876431/-+)(% # !        *.///////////////////////////////////////////////////////////////////////////..yQ<ۧڦڦڦ٥٥ؤؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΛxΚwΚw͙v챉_H     aA.םvgeeedddccbbbaaa``___^^^]]\\\~[~[}Z}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVxUxUxUwTwTvSvSvSuRuRtQtQtQsPsPsPrOrOqNqNqNpMpMpMoLoLoLnKnKmJmJmJlIlIlIkHkHjGjGjGiFiFiFhEhEhEgDgDfCfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9[8[8[8Z7Z7Z7Y6Y6Y6X5X5W4W4W4V3V3V3U2U2U2T1T1T1S0S0R/R/R/Q.Q.Q.P-P-P-P,Y2L)'(()*++,--...///////////////////////////////////////////////////////////////.04:B A855431/-+*(&# !         " *////////////////////////////////////////////////////////////////////////////..zS=ܧۧڦڦڦ٥٥٥ؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw_H aB/؞wfffeedddccbbbaaa``___^^^]]\\\~[~[~[}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUxUwTwTvSvSvSuRuRuRtQtQsPsPsPrOrOrOqNqNpMpMpMoLoLoLnKnKmJmJmJlIlIlIkHkHjGjGjGiFiFiFhEhEgDgDgDfCfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Z7Y6Y6Y6X5X5W4W4W4V3V3V3U2U2U2T1T1T1S0S0R/R/R/Q.Q.Q.P-P-Q-Y2M(())*++,--....///////////////////////////////////////////////////////////////./38?5H%3320/-+*(&$ !          $ ,/////////////////////////////////////////////////////////////////////////////.[CԪ︒︒︒쵏쵏쵏봎봎곍㭈Ҟ|Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚw{ZEaB/ӚtјrИrИqϗqϗqΖp͖o͖o̔n̔n˔nʓmʓmɒlɒlɒl˓lŒg^__^^^]]]\\~[~[~[}Z}Z}Z|YzX_Ċcbaaa``__^^^]\\\[[[zUrOsPsPrOrOrOqNqNqNpMpMoLoLoLnKnKnKmJkIsNzRxQwQwPvPuOuOtNtNtNsMsMsLrLrLqKqKqKqKiEcAdAdAdAc@c@b?b?b?a>a>a>`=`=`=_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Y6Y6X5X5X5W4V3]7a9_9_8^8^8]7]7\6\6[5[5Z4Z4Z4Y3Y3X3X2c8R,**+++,--....//////////////////////////////////////////////////////////////////27=)U1Ž110.-+*(&$ "           %-/////////////////////////////////////////////////////////////////////////////.oI4Ԣonmnmmllllkkjjjiifoؤա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛx밈dL  ! ! ! " " " ## # # # # $ $ $ $ $ $ # $ # # # # # # # # # # # # $ $ $ %  [>,atVsUsUsUrTrTrTqSqSqSqRqRqRpQpQoQoQkNuUb`__^^^]]]\\~[~[~[}Z}Z}Z~[mNdGgIgIfHfHfHfGfGeGeGeGdFdFdFdEdEcDcD_BjJwSsPsPsPrOrOrOqNqNqNpMpMoLoLoLnKnKnKoLbBW;ZhDeBdAdAdAc@c@b?b?b?a>a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8[8Z7Z7Y6Y6Y6X5X5X5Y5|M.rF*uH*vH*uH*uH*vH*uG)vG)vG)uG(vG(vF(uF'uF(uF'uE&uE'uE'M+J&+++,---.....//////////////////////////////////////////////////////////////////16;u!c@!//.,+*(&% "           &-///////////////////////////////////////////////////////////////////////////////,' ' ' & & & & % % % $ $ $ $ # # " ! `?-ףա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxЛx˘uȕsʗtɖtɖsȕsȔrȕrǔrǔqƓqƓqƓqŒpŒoŒođođnĐoÐnÐnmmmllkkkjjjiiihhggמwaC/! " # # # # # " ];'͕oa`___^^]]]\\\~[~[}Z[ŌeD,  " # $ $ $ $ "  iC,_tQtQsPsPrPrOrOqNqNqNpMpMpMoLoLnKnK~VN2!  ! " # $ $ $ $ " qG-tMeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Z7Y6Y6X5Y5c<;"   " # $ % & & ' ' ' *,,,----.....//////////////////////////////////////////////////////////////////.059jɰrQ'.-,+)(&$ # !         (.//////////////////////////////////////////////////////////////////////////////0+& ' ' ' ' & & & & & % % % % $ $ # " b@.﷑ףա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМy͙wԟ{ܤڣ~ڣ~٢}٢}آ}ء|ء|נ{נ{֠{֟z՟z՟zԞyԞyӝxӝxӜwҜwҜwқvћvћvњuКuЙuϙtϙtϘsΗsΗs͗r͖q͖q̕q̕p̕qꬂgG3 ! " # $ $ $ $ # _;(ϗpa``___^^]]]\\\~[~[[ǍfE-  ! # $ $ % % $ #  kD-`tQtQtQsPsPsPrOrOqNqNqNpMpMpMoLoLoLVP3"  " # $ % % % % " rG-uMfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8Z7Z7Z7Y6Y6Y6c<<#   ! # $ % & ' ( ( ) ( +----.......///////////////////////////////////////////////////////////////////.048`껠^-qqq,+*)(&$ " !          )//////////////////////////////////////////////////////////////////////////////////.........-----++* gD1ؤ֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoƒoƒoőnőnĐmĐmĐmÏlÏlÏlŽkŽkjjݣ{eF2    ! # $ &()*+++**c>*͖oba``___^^^]]]\\~[\ƍfI0!    " $ &')**++*)nF/_uRuRtQtQsPsPsPrOrOrOqNqNpMpMpMoLoLWS5#    " $ &'(**++*(tI/tMfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Y6Z7d=?%   ! # $ &()*+,-----........./////////////////////////////////////////////////////////////////////./36X 䮒͋j4```wp**)'&$ " !           +////////////////////////////////////////////////////////////////////////////////////...........--,+ hE1﷑ؤ֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ў{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrȔqȔqȔqǓpǓpǓpƒoƒoŒoőnőnĐmĐmĐmÏlÏlÏlŽkŽkŽkݣ{eF3    ! # $ &()*++++*c?*ϗpbaa```__^^^]]]\\\ƍfJ1!    ! # $ &()*++++)nF/auRuRuRtQtQsPsPsPrOrOrOqNqNpMpMpMoLWS6#    " $ &()*++++(tI/uNgDfCfCeBeBeBdAdAdAc@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9\9[8[8Z7Z7Z7Z7d=@%    ! # % '(*+,--.........../////////////////////////////////////////////////////////////////////////25R ैԕv<PPPve_)('&$ # !           ,////////////////////////////////////////////////////////////////////////////////////////////....-,+hE1﷑٥֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoƒoƒoőnőnőnĐmĐmÏlÏlÏlŽkÏlޤ|dF3    " $ &()*++++*c?+ϗpcbaa```___^^]]]\]ǎgJ1!    ! # $ &()*++++)nG/`vSvSuRuRtQtQtQsPsPrOrOrOqNqNqNpMpMXS6#    " $ &()*++++(uJ/uNgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8[8Z7[7e>A%    " $ &()*+--..../////////////////////////////////////////////////////////////////////////////////14Nڜ}ޢECCCcRJ'&%$ " !            -//////////////////////////////////////////////////////////////////////////////////////////////...-,iE1︒٥ף֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoƒoƒoőnőnőnĐmĐmÏlÏlÏlÏlߤ|eF3    " $ &'(**++**c?+Иqcbaaa```__^^^]]]]ǏhK1!    ! # % &()**++*)nG0avSvSuRuRuRtQtQtQsPsPrOrOrOqNqNqNpMYT6$    " $ &'(**++*(uJ/vOgDgDgDfCfCeBeBeBdAdAdAc@c@c@b?b?a>a>a>`=`=`=_<_<_<^;^;]:]:]:\9\9\9[8[8[8[8e>A&    " $ &()+,-..///////////////////////////////////////////////////////////////////////////////////.13Iӓs䬐L555UB;&% # "             .///////////////////////////////////////////////////////////////////////////////////////////////..-,iE1ڦףף֢֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoƒoƒoőnőnőnĐmĐmÏlÏlĐlߤ|eF3    ! # % '()****)c?+Иqcbbbaa```___^^]]^ǏhK1!    ! # $ &'()***)(nG/‰bwTvSvSvSuRuRtQtQtQsPsPrOrOrOqNqNqNYT6$    " # % &())***'uJ0vOhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9[8[8[8e>B&    ! # % '(*+,-..///////////////////////////////////////////////////////////////////////////////////.02Dόj붜S ***K81$ # "             .0//////////////////////////////////////////////////////////////////////////////////////////////..-,jF2ڦؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrȔqȔqȔqǓpǓpǓpƒoƒoőnőnőnĐmĐmĐmĐl}eG4     " $ %&(()))(c@+љrdcbbbaaa``___^^^^ȐiL2"     ! " $ % &'()))('nG0ŠbwTwTvSvSvSuRuRtQtQtQsPsPsPrOrOqNqNZS6$     " $ % &(())(& uK0wPhEhEhEgDgDfCfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9\9[8\8f?C'    ! # %')*+,-..///////////////////////////////////////////////////////////////////////////////////./1@ȄbY ###A.'" !             .0//////////////////////////////////////////////////////////////////////////////////////////////...-jF2ۦؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoƒoƒoőnőnĐmĐmđm}eG4    ! # $ % '''('' b?+љrecccbbaa```___^^_ɐiM2"      " # $ % &''(''&mG0ÊcxUwTwTvSvSvSuRuRuRtQtQsPsPsPrOrOrOZT6$    ! # $ %'''''% uJ0xPiFhEhEgDgDgDfCfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:]:\9\9\9\9f?D'    " $ &()*+,-..///////////////////////////////////////////////////////////////////////////////////..1>}[ī] ;(!!             .0//////////////////////////////////////////////////////////////////////////////////////////////...-jF3ۧ٥ؤؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoƒoƒoőnőnőnőm~eG4     ! # $ % % &&&% b?,Қsedcccbbaaa```__^_ɐjN2"      ! # # $ % %&&&% $  mG0ĊcxUxUwTwTwTvSvSuRuRuRtQtQtQsPsPrOrO[T6$     ! # $ % %&&&# uK1xQiFiFhEhEhEgDgDfCfCfCeBeBeBdAdAdAc@c@b?b?b?a>a>a>`=`=_<_<_<^;^;^;]:]:]:\9]:g@E'   ! # % &()+,-...///////////////////////////////////////////////////////////////////////////////////..0;yVʲb9'             /0//////////////////////////////////////////////////////////////////////////////////////////////...-jF3ۧ٥٥ؤؤףףף֢֢֢ա~ա~ԡ~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoƒoƒoőnőnőn~eG5      ! " # $ $ $ $ $  a?,Ӛteddcccbbaaa```___ɑjO3#       ! " # $ $ $ $ $ $ "  mG0ŌdxUxUxUwTwTwTvSvSuRuRuRtQtQsPsPsPsP[T7%      ! " # $ $ $ $ " uK0yRiFiFiFhEhEhEgDgDgDfCfCeBeBeBdAdAdAc@c@b?b?b?a>a>a>`=`=`=_<_<_<^;^;]:]:]:]:g@F(   ! # %'(*+,-../////////////////////////////////////////////////////////////////////////////////////./9uRйh3"              /0///////////////////////////////////////////////////////////////////////////////////////////////..-kG3ܨ٥٥٥ؤؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoƒoƒoőnƒneG5       ! " " " " " a?,Ӛtfeddcccbbbaa```_`ʑkP3#        ! ! " " " " " "   lG0ŌdyVyVxUxUwTwTwTvSvSvSuRuRtQtQtQsPsP\T7%       ! " " " "  uK1yRjGjGiFiFiFhEhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;]:^:hAG)   ! # $ &')*+,-../////////////////////////////////////////////////////////////////////////////////////./7rOտl0              /0///////////////////////////////////////////////////////////////////////////////////////////////..-kG3ܨڦڦ٥٥ؤؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɖsɕrɕrȔqȔqȔqǓpǓpǓpƒoƒoƒo㨀eH5            `>+Ԝufeedddccbbbaa````ʒkQ4#                 lG0ǍeyVyVyVxUxUwTwTwTvSvSvSuRuRtQtQtQtP\T7%             uK1zSjGjGjGiFiFiFhEhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_<^;^;^;^;hBI) ! " $ %'))++,-../////////////////////////////////////////////////////////////////////////////////////./7pMq"4%            .0///////////////////////////////////////////////////////////////////////////////////////////////...lG3ݩڦڦڦ٥٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoǒp㨀eG5           `?+՜ugfeedddcccbbaaa`aʒkR5#                 kG1ǍezWyVyVyVxUxUxUwTwTvSvSvSuRuRuRtQtQ\T7%           tK1zSkHjGjGjGiFiFiFhEhEhEgDgDfCfCfCeBeBeBdAdAc@c@c@b?b?b?a>a>a>`=`=_<_<_<^;^;_;hBJ*" # $ % '()*+,-.../////////////////////////////////////////////////////////////////////////////////////./8nKs#4%            .0///////////////////////////////////////////////////////////////////////////////////////////////...mG3ݩۧڦڦڦ٥٥ؤؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʗtʖsʖsɕrɕrȔqȔqȔqǓpǓpǓpǓo䩁eG5         _?,֝vgfeeedddccbbbaaaa˓lS5#                 jG1ȎgzWzWyVyVyVxUxUxUwTwTwTvSvSuRuRuRtQ]T7&           tK2{TkHkHkHjGjGiFiFiFhEhEhEgDgDgDfCfCeBeBeBdAdAdAc@c@b?b?b?a>a>a>`=`=`=_<_<^;_,֝vhfffeeeddcccbbbab˓lU6#                 jG1ɏg{XzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRuR]T7&       tK2|TlIkHkHkHjGjGjGiFiFhEhEhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=_<_<_,מvhgfffeeeddcccbbab˔mV6$             iG1ʏg{X{XzWzWzWyVyVxUxUxUwTwTwTvSvSuRuR^T8% tK2|UlIlIkHkHkHjGjGiFiFiFhEhEhEgDgDgDfCfCeBeBeBdAdAdAc@c@b?b?b?a>a>a>`=`=`=_<`,؞wigggffeeedddccbbc˔mW7$ !          hF1ːh|Y{X{XzWzWzWyVyVyVxUxUwTwTwTvSvSvS_T8&sL2}UmJlIlIkHkHkHjGjGjGiFiFiFhEhEgDgDgDfCfCfCeBeBdAdAdAc@c@c@b?b?b?a>a>`=`=`=`,љsϘrΗqΗq͖p̕p̕p˔o˔o˔nʓnʓnɒmȒlȒlȑlʒmޣyV6# cC/Βj|Y|Y{X{XzXzWzWyVyVyVxUxUxUwTwTvSvSĉaM3# yQ6Ɋ^wQvQvPvPuOtOtOsNsNsMrMrMqLqLqKpKpJpJoIoInInHnHmHlGlGkFkFkFjEjEjDiDiDiChCiCsJT0**++,,--....//////////////////////////////////////////////////////////////////////////////////////.01<tQw%111`XU       " % #  *//////////////////////////////////////////////////////////////////////////////////////////////////.iD1߫ʘxȗwȗvǖvǖvƕuƕuƕuŔtŔtŔtēsēsÓsÒrÒr‘q‘q‘qp‘ppopoonnnmmmlllkkhÑpҝzϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕr䩂iK9                 Y<*i}]|\|\{[{[{[zZzZzZzZzZxYyYyXxXxXxXaX7% , + * ( & % # " !  jH3ʐh}Z|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTwTwT_X;(                kF.oLbBaBaAaAaA`@`@`@_?_?_?^>^>^>]=^=]=\<\<\<\;[;[;[;Z:Z:Z9Y9Y9Y9X8X8X8W7W7W7W7a>N+++,,---.....///////////////////////////////////////////////////////////////////////////////////////02?yUu$===qjh         # '% )///////////////////////////////////////////////////////////////////////////////////////////////////-0100///..-----,,,,,,,,,,,,,,,,,,,,,++*) {U?겋ϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrʖslhjjjiiihhhggfffeeeљslK6     " # %'()*****)xP9ǐk~\}\}\|[|[|Z{Z{Z{YzYzYyXyXyXxWxWwVuTyW~[}Z}Z|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTwTwTqOmLoNoMnMnMnMmLmKmLlKlJlJkJkJjIjIjIlJqM8!     " $ %'()**+++,,,,,,,,,,,,,,,,,,,,,,,+,,,---.....////////////////////////////////////////////////////////////////////////////////////////12Aǀ]r!KKK}         % (& './/////////////////////////////////////////////////////////////////////////////////////////////////1* "#####""""""!!!!!!!!!!!!!!!!!!!!!!! yS=ϛxϛxϛxΚwΚw͚w͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrǓqћwء{ןz֟y՞y՞x՝xԝwԝwӜvӜvқvқuқuњuњtљtЙsЙsﱆrP;  !!!!W>{ŎiĎičhčhÍgÌgÌg‹f‹f‹feedddccc^|Z}Z}Z|Y|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTvS|XZY~Y~X~X}W}W|W{V{V{UzUzUyTyTySxS{UY5  ! " # $ $ % % % % % % % % % % % % % % % % % % % % % & % *.----....../////////////////////////////////////////////////////////////////////////////////////////14ĖdԽp ZZZ         &*(  %-////////////////////////////////////////////////////////////////////////////////////////////////////.......--------------------------,,++) }V@쳌МyϛxϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoƒoƒoőnőnőnĐmĐmÏlÏlÏlÏkޤ|pN:    ! # $ &')**++*(~U<Қsbbbaa```___^^]]]\\\~[~[}Z}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRuRtQtQtQsPsPrOrOrOqNqNqNsOyS8"    " # % &()*++,,-----------------------.-............////////////////////////////////////////////////////////////////////////////////////./24Iюl϶lkkk        ! '+*   # -/////////////////////////////////////////////////////////////////////////////////////////////////////.......--------------------------,++) ~W@촍МyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpǓpƒoƒoőnőnőnĐmĐmĐmÏlÏlߤ|oN:    # $ &()**+++(~U<Қscbbbaa```___^^]]]\\\~[~[}Z}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRuRtQtQtQsPsPsPrOrOqNqNtPyS8!    " # % '()*+,,----------......................................//////////////////////////////////////////////////////////////////////////.026MՓqʰhzzz         " (,+!   ! ,////////////////////////////////////////////////////////////////////////////////////////////////////........--------------------------,++) ~W@ѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoƒoƒoőnőnĐmĐmĐmÏl}pO:    " $ &()**+++(~U<ӛtcccbbaaa``___^^^]]\\\~[~[~[}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVxUxUxUwTwTvSvSvSuRuRuRtQtQsPsPsPrOrOrOtPzT9"    " # % '()*+,,--------............................................///////////////////////////////////////////////////////////////////////038S ܛ{b        # )-,#  *////////////////////////////////////////////////////////////////////////////////////////////////////......--------,,,,,,,,,,,,,,,,,,,,++*) ~WAѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoƒoőnőnőnĐmĐmĐm}pO:    " $ %'()****(~U<ӛtdccbbbaaa```__^^^]]]\\~[~[~[}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVxUxUxUwTwTwTvSvSuRuRuRtQtQsPsPsPrOrOuQzT9"    ! # % &()*++,,-------.........////..........----------------......./////////////////////////////////////////////////////////////////////149Y ⥆^        % *..%  (.//////////////////////////////////////////////////////////////////////////////////////////////////......----,,,,++,+++++++++++++++++++**( ~WAҞ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoƒoƒoőnőnőnĐm~oO:    ! # $ &())**)(~V=Ԝuddcccbbbaa```___^^]]]\\\~[~[}Z}Z}Z|Y|Y{X{X{XzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRuRtQtQtQsPsPrOuQ{U:"    ! # $ &'())+++,,,,-----......//////.......---,,,,,,++,,,,,,---......////////////////////////////////////////////////////////////////////15;_箐뱔Z      &+/0' '-/////////////////////////////////////////////////////////////////////////////////////////////////.....---,,+++++**********************))'  ~XAﶏҞ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoƒoƒoőnőnőn~pO;     " # % '(((((' ~V=՜ueddcccbbaaa```__^^^]]]\\~\~[~[}Z}Z}Z|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTwTwTvSvSuRuRuRtQtQtQsPsPuR{U:#     ! " $ % &'())**+++++,,---.....//////....---,,,+++++****+++++,,---...../////////////////////////////////////////////////////////////////.026<g䨉U     '-11)&,////////////////////////////////////////////////////////////////////////////////////////////////....---,+++****))))))((((((((((((((()(('& ~WAӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsʖsɕrɕrȔqȔqȔqǓpǓpǓpƒoƒoőnőn⨀pO;    ! # $ % &''''% ~V>՜veedddccbbbaa```___^^]]]\\\~[~[~[}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRuRtQtQtQsPvR|V;#      " # $ % &'(()))****+++,---....///.....---,+++***)))))))****+++,---....////////////////////////////////////////////////////////////////.037>qƫޠN   ! '-23+ # ,///////////////////////////////////////////////////////////////////////////////////////////////....--,+++**))(((('''''''''''''''''''''&&$ }XAӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsʖsɕrɕrȔqȔqȔqǓpǓpǓpƒoƒoƒo⨀pO;     ! " $ $ % %&%$ ~V>֞veeedddccbbbaaa``___^^^]]\\\~[~[}Z}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUxUwTwTvSvSvSuRuRtQtQtQvR|V<$      ! # # $ % %&&''(()))**++,---....//....---+++**)(((((''(((())**+++,--....////////////////////////////////////////////////////////////////039@|%ҺؖtI($"   ! ).34. ! +///////////////////////////////////////////////////////////////////////////////////////////////...---,++*)((''&&&& % %%%%%%%%%%%%%%%%%% $ % $ # }XBӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoƒo㩁pP;      " # $ # $ $ "  ~V>֞vffeedddcccbbaaa```__^^^]]]\\~[~[~[}Z}Z|Y|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTwTwTvSvSuRuRuRtQwS|W=$       ! " # # $ $ $ %&&&''(()*++,---........--,++*))((''&&&&&&&&''(()*++,---...////////////////////////////////////////////////////////////////14:B. ЈeC:75   " )0450  )./////////////////////////////////////////////////////////////////////////////////////////////....--+++))(''%% $ $ $ $ # # # # # # # # # # # # # # # # # # # # # " " |XBԠ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒo䩁pP<       ! " " " " !  }V>؟wfffeedddcccbbaaa```__^^^]]]\\~[~[~[}Z}Z}Z|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTwTwTvSvSuRuRuRwS}X>$        ! ! " " " # # # $ $ % &&'()*++,--.......--,++*)(('&%% $ $ $ $ $ $ $ $ % &''())++,--...////////////////////////////////////////////////////////////////25<D9{W< QOM   $ *0672!   (-/////////////////////////////////////////////////////////////////////////////////////////////...--,++)((&& $ $ # " " " ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !    |XBԠ}Ԡ}Ԡ}ӟ|ӟ|ҟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓp䩁pP<             }V>؟xgfffeeedddccbbbaa```___^^]]]\\\~[~[}Z}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRxT}X?%             ! ! ! " " # $ % &'())*+,--......--,+*)('&% $ # # # " " ! ! " " " # $ $ & &())++,--...///////////////////////////////////////////////////////////////26?G F!pK8 ***][Z  $ *1794$   &,/////////////////////////////////////////////////////////////////////////////////////////////...-,++))'&% $ # " !                            {WBա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓp媂pP<           }V>٠xggfffeeeddcccbbbaa```___^^]]]\\\~[~[}Z}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUwTwTwTvSvSvSxT~Y@&                   ! " # $ % &()*++,-.....--,++)('&% $ # " !         ! " # $ % &())++,-...//////////////////////////////////////////////////////////////027AJ V1c>4 ???trq   $ ,28;7' $ +/////////////////////////////////////////////////////////////////////////////////////////////..--,+*)(&$ # " !                              {XBա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrȔqȔqȔq嫂pP<         |V>ڠyhgggffeeedddccbbbaaa``___^^^]]]\\~[~[}Z}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVxUxUxUwTwTvSvSyU~YB&                     ! " # % &')*+,--....--+*)('&$ # " !             ! " # $ &()*+,--..//////////////////////////////////////////////////////////////148CP f@U// NNN    %,39<9*" *.////////////////////////////////////////////////////////////////////////////////////////////..-,+*)('% $ "                                zXB֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrɕrȔq櫃pP<     |V?ۡyhhgggfffeedddcccbbaaa``___^^^]]\\\~[~[~[}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVxUxUxUwTwTvSyUZC'                     ! " $ % '()*+--...--,+*)(&% # !                 " # % '()*+,-..//////////////////////////////////////////////////////////////14:FWxRH#+hhh    &,4:=;. ).////////////////////////////////////////////////////////////////////////////////////////////..-,+*)(&$ "             zXC֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrɕr櫃pQ<{V?ܢzihhgggfffeedddccbbbaaa```__^^^]]]\\~[~[~[}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVxUxUxUwTwTyVZE'                      ! # $ &()*+,--..--,+*)'%$ "                   # $ &')*+,-..//////////////////////////////////////////////////////////////24<H`׍g<(    '.5;?=1   '-///////////////////////////////////////////////////////////////////////////////////////////...-,+)(&% # !        yXCף֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕr謄pQ< {W?ܢziihhhggfffeeeddcccbbaaa```___^^]]]\\\~[~[}Z}Z}Z|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTzVZE(!                 ! # %'(*+,--..--+*)(&$ # !              ! # % '()+,-...////////////////////////////////////////////////////////////026>Il|υ/ &    (.5<@?4   % ,///////////////////////////////////////////////////////////////////////////////////////////...-/   }ZEڬ﷐촍볍볍곌게﵍ߨ̙vϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsʖs찇eI6\Cڠy٠xٟxמwמw֝w՝v՝vԜuԛuӛuҚtҚtҚsљrљrИrԚsŎj`baaa```__^^^]]]\\|Yc͒iɏgȏgǎgǍfƍfŌeČeċdËdÊdŠcbbbaaËcΓi@#     ! # $ &()++-----,-!      " $ &()*+-...////////////////////////////////////////////////////////////127AKz#Ѻw"$    ! (.7=BA7 # +.//////////////////////////////////////////////////////////////////////////////////////////..--$ ;X8'Q2"O1"M0"L0"J/!H.!G.!E-!D- C, B, @+@+ ?+?+?+>*>*>*=*>*>*=*>*=)=)=)=)=)=)=)=)=)=)>)>)>)6( pQ=jy^y^y]y]x]x]x]x\w\x\w[w[x[w[wZwZvZpVfע~ќyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsᨁ^G*5#6$6$6$7$7$7$7$7$7$8$8$8$8$8$9$9$0"lK7uXiNhMhMhMhLhLhLhLhLhKgKgKgJgJgJfJfJ`FuVgcbbaa```___^^]]]]_jMY?]C]B]B]B]A]A]A]A]A\@]@\@\?\?[?[?\@^AQ08@$>#>#<":!9!8 7 6443332349""    " $ &')*+,----,' 9 F%@">!=!; 9865421000/006#    " $ %')*+,-..////////////////////////////////////////////////////////////138BN. ˭j!$""   " (/7>CC:$  ! ).//////////////////////////////////////////////////////////////////////////////////////////..-, uO;խﺕ﹔﹔﹔춑춑쵑뵐봐봐곏곏鳎鲎鲎貍豍豍籌氋氋毊寊寊寊ȝcG6 gE1ѝzМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsȔr͙uԜwԝyӝxӜwӜwқwқvћvКuКuКuϙtϙtϘtΘsΘs͗rϙs橀K2# nI3֜ucbbbaaa``___^^^]]ϔlP5& V;ːf}Y}X|X|W|W{V{VzUzVzUyTyTxSxSxSwRyS[E*    ! # %')*+,----+oE,}TmImHlHlHkGkFkFkFjEjEiEiEiDhChCgChCuLM/    ! # %'(*+,-..///////////////////////////////////////////////////////////024:EP>뱑]<;;   " (08>DE=)  '-//////////////////////////////////////////////////////////////////////////////////////////..-, qK8Ϩ췓췓췓춒붒붒굑굑굑괐鴐鴐賏賏賏粎粎籍汍汌尌尌尋䯋䯋䮊㮊㮊⭉⭈⬈ᬈᬈ⬈ěiK9   " $ % & & ' ' & % pK7Ҟ{МyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tɖsΙuќwКvКvϚvΙuΙuΘt͘t͘t̗s̗s̖r˖r˖r˕qʕqʕq̕q~Q6'  ! # $ % & & ' ' & %  vN7Ԝtcccbbaaa```__^^^]ΓkY=*   ! " $ % & ' ' ' ' $ V;Ǎe{W{WzVzVzVyUyUxTxTxTwSwSwSvRvRvRwRYA(    ! # % '(*+,----+lB*{SkHkGkGjFjFjFiEiEiEhDhDgCgCgCfBfBfBsJK.     # $ '(*+,-..///////////////////////////////////////////////////////////025<ITP+ߚxQ ZYY   # )08?EG@- %,//////////////////////////////////////////////////////////////////////////////////////////..-, oK7ʣ鵒糐沏沏沏屎屎屎䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊᭊଉଉଉ߫߫ުުުݩݩݩܨܨܨۧۧڦۧhJ9    ! # % &()*++++* sM8Ҟ{ѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoƒoƒoőnőnőnĐmƒnڡzQ6'    ! # % &()*+++*)wO8Ԝtdcccbbaaa```__^^^͓k[>+   ! " $ &()*++++(U:bxUwTwTwTvSvSuRuRuRtQtQtQsPsPrOrOtP}V@'    " % &()+,---,+jA)xQiFhEhEhEgDgDgDfCfCeBeBeBdAdAdAc@dApII,    " $ &()+,-...//////////////////////////////////////////////////////////136>L[gAЇcG000xww    # )18@FHC2  # +./////////////////////////////////////////////////////////////////////////////////////////..-, nK7ˤ굒糐糐沏沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋ᭊᭊᭊଉଉଉ߫߫߫ުުݩݩݩܨܨܨۧۧܨhK9    ! # %'(*++,,++ sN8ӟ|ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoƒoƒoőnőnőnƑnۢ{P7'    ! # $ &()*++++)xP9՝uddcccbbbaa```___^Δl\>+    ! # %'(*+++,+)V:cxUxUwTwTwTvSvSvSuRuRtQtQtQsPsPsPtP~W@'    " $ &()*+,,,,+kB*yRiFiFiFhEhEgDgDgDfCfCfCeBeBdAdAdAd@qII,    " $ &')*+,-........../////////////////////////////////////////////////0148AOcXtO=PPP    # *19AGJF6 ! )./////////////////////////////////////////////////////////////////////////////////////////..-, oK7ʤ궓贑糐糐糐沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋ᭊᭊᭊଉଉଉ߫߫ުުުݩݩݩܨܨܨۧܨgJ9    ! $ & ')*+,--,+ tN8ӟ|Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoƒoƒoőnőnǒoۢ{P7'   ! # % &()*++++)xP9՝veddcccbbbaa```___Δl\>+    " $ &()*+,-,,)U:ŠcyVxUxUwTwTwTvSvSvSuRuRtQtQtQsPsPtQ~W@'    " $ %')*+,,++*jB)yRjGiFiFiFhEhEgDgDgDfCfCfCeBeBdAdAeAqII,    " # %'()++,-............/////////////////////////////////////////////.024:CQqq]76ooo     $ *19AHKH:  '-/////////////////////////////////////////////////////////////////////////////////////////..-, oK8̥붓贑贑糐糐糐沏沏沏屎屎屎䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊᭊଉଉ߫߫߫ުުުݩݩݩܨܨݨhK9   ! $ &()++----, tN8Ԡ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrȔqȔqȔqǓpǓpǓpƒoƒoőnǓoܣ|P7(    " $ &')**++*)xQ9֝veedddccbbbaaa``__ϕm]>,    " $ &()+,----*V;ŠcyVyVxUxUxUwTwTvSvSvSuRuRuRtQtQsPuQX@'    ! # % '()**+++)kB*ySjGjGiFiFiFhEhEhEgDgDfCfCfCeBeBeBeArJJ-    ! # % &()*++,,------........///////////////////////////////////////////125;FR) I$1     $ *2:BHMK>%   % ,.////////////////////////////////////////////////////////////////////////////////////////..-, oK8̥뷔贑贑贑糐糐糐沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊᭊଉଉ߫߫߫ުުުݩݩݩܨݩgK9   ! $ &()+,----,uO9Ԡ}ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrȔqȔqȔqǓpǓpǓpƒoƒoȓpܣ|P7(    ! # % &())***(xQ9מwfeedddcccbbaaa```ϕm^?,    ! # % '(*+,----*V;ËdyVyVyVxUxUxUwTwTvSvSvSuRuRuRtQtQuRYA(     ! # $ &'()***)(jB*zSjGjGjGiFiFiFhEhEhEgDgDfCfCfCeBeBeBrJJ-    ! " $ &'()*+++,,,,,----......//////////////////////////////////////////136=JT8̪Ѝ6,     $ +2:BIN M B+  # *-////////////////////////////////////////////////////////////////////////////////////////..-, oL8̦뷔鵒鵒贑贑糐糐糐沏沏沏屎屎屎䰍䰍㯌㯌㯌㯌⮋⮋ᭊᭊᭊଉଉଉ߫߫ުުުݩݩݩݩhK:   ! $ &()+,----,uO9﷐Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoȔpݤ}P6(    ! # $ % '(()(('xQ:מwffeeeddcccbbaaa``Жn^?,    ! # % ')*+,----*W<ËdzWzWyVyVxUxUxUwTwTwTvSvSuRuRuRtQvSYA(     ! " $ % &'()))(' jC+{SkHkHjGjGiFiFiFhEhEhEgDgDgDfCfCeBfCsKJ.      " $ % &'())**++++++,,---.....////////////////////////////////////////0148@MYL)Թ{&(///    % +2:BJO O G1 ! )-////////////////////////////////////////////////////////////////////////////////////////..-, oL8ͧ츕鵒鵒鵒贑贑糐糐糐沏沏沏屎屎屎䰍䰍䰍㯌㯌⮋⮋⮋ᭊᭊᭊଉଉଉ߫߫ުުުݩݩުhK:   ! $ &()+,----,uO:﷐ա~ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚw͚w͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpȔqݤ}P7(    ! # $ % &''''& xQ:؟xfffeeeddcccbbaaa`Жo`@-    " $ &')*+,----*W<ČezWzWzWyVyVxUxUxUwTwTwTvSvSvSuRuRvRZB)      " # $ % &'''''&jB+|TkHkHkHjGjGjGiFiFhEhEhEgDgDgDfCfCfCsLK.      " # $ % &'(())))***+++,---.....///////////////////////////////////////0249BP`d>j&  SSS    %+3;CJP Q J5  ',////////////////////////////////////////////////////////////////////////////////////////..-, pL8ͧ츕궓鵒鵒鵒贑贑贑糐糐糐沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋ᭊᭊᭊଉଉଉ߫߫߫ުުުުhL:   ! $ &()+,-----vP:ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsʖsɕrɕrȔqȔqȔqǓpɕqޥ~P6(     " # # % %&&&%  wQ:؟xggffeeedddccbbbaaЗo`@-   ! # $ &()*,-----*W=Če{XzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRwSZC)      ! " # $ % &%&&&$ jC+|TlIkHkHkHjGjGjGiFiFiFhEhEgDgDgDfCgDtLL/      ! " # $ % &&'''(()()***++,--....///////////////////////////////////////126<ESk~XZ" ///zzz     &,3;BKQ S N ;  % +.///////////////////////////////////////////////////////////////////////////////////////..-, pL8Ψ궓궓鵒鵒鵒贑贑贑糐糐糐沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊଉଉଉ߫߫߫ުު߫hL:   ! $ &()+,-----vP:֢Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqɕqߥ~P7)      ! " # # $ $ $ #  wQ:٠yggfffeeedddccbbbaЗpbA-   " $ %'(*+,-----+X=ōf{X{X{XzWzWyVyVyVxUxUxUwTwTvSvSvSwS[D*      ! ! " " # $ $ $ $ $ # jC+}UlIlIlIkHkHjGjGjGiFiFiFhEhEgDgDgDgDtLM/       ! " " # $ $ % %%&&''(())*++,--..../////////////////////////////////////0236=HU{&w҈bK SSS     &,2;CKR U P A&   " )-///////////////////////////////////////////////////////////////////////////////////////..-, pL8Ψ궓궓궓鵒鵒鵒贑贑贑糐糐糐沏沏沏屎屎䰍䰍䰍㯌㯌㯌⮋⮋ᭊᭊᭊଉଉଉ߫߫߫ު߫›hL:   ! $ &()+,-----vP;֢ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsʖsɕrɕrȔqȔqʕrߥ~P7(      ! ! " " " " ! wQ:ڡyhgggffeeedddccbbbЗpbA-  ! # $ &()*+,--..-+X=ōf|Y{X{XzWzWzWyVyVyVxUxUxUwTwTvSvSxU[E*        ! " " " " # # " ! iB+}VmJlIlIlIkHkHjGjGjGiFiFiFhEhEgDgDhEtMN/        ! " " " # # # $ $ $ % %&''()*++,--.../////////////////////////////////////0149@LX3nG@ www    &,3;CKR V S E,  ',.//////////////////////////////////////////////////////////////////////////////////////..-, pL9ϩ뷔뷔궓궓궓鵒鵒鵒贑贑糐糐糐沏沏沏屎屎屎䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊᭊଉଉ߫߫߫ૈ›iL;   ! $ &()+,--..-wP:ףա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrɕrʖrP7)            wQ:ڡzhhgggfffeedddcccbјqdB. ! # $ &'(*++--...-+Y=Ŏg|Y|Y{X{X{XzWzWyVyVyVxUxUxUwTwTwTxT\G*                  iC+~VmJmJlIlIlIkHkHkHjGjGiFiFiFhEhEhEhEuNO0             ! ! ! " " # # $ %&'()*++--.../////////////////////////////////////125:CP \F%ԳU/7    ! &,3;CLS W V J2 &,.//////////////////////////////////////////////////////////////////////////////////////..-, pL9ϩ뷔뷔뷔궓궓궓鵒鵒贑贑贑糐糐糐沏沏沏屎屎屎䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊᭊଉଉଉ߫ଉÛiL;   ! $ &()+,--..-wQ;ף֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕr˖sO7)            vQ:ܢzihhgggfffeedddcccјqeB.! # $ % '()*+,--....+Y=Ǝh}Z|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTwTyU\H+                  hC+~WnKmJmJlIlIlIkHkHkHjGjGiFiFiFhEhEhEuNP0                  ! ! " # $ &'()*+,--...////////////////////////////////////125;ESc_;ԕ;2,,,     ! &-3;CLS X X O 8  # *.//////////////////////////////////////////////////////////////////////////////////////..-, pM9Ъ츕츕뷔뷔궓궓궓鵒鵒鵒贑贑紑糐糐沏沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋ᭊᭊᭊଉଉଉଉĜiM;   ! $ &()+,-....xQ;ף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕr˗sᨀP7)         vQ;ݣ{iihhhggfffeeeddccљrgC/ # $ &'()*++--.....,Y>Ǝg}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUwTyU]I+                  hC,WnKnKmJmJmJlIlIkHkHkHjGjGjGiFiFiFiEvOR1                      ! # $ %'()*+,-...///////////////////////////////////0138>HWn|Wѵ~'. VVV     ! &-4;DL T Y Z! R ?#    (-./////////////////////////////////////////////////////////////////////////////////////..-, pM9Ъﻗ츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑贑糐糐糐沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋ᭊᭊᭊଉଉᭊĜiM;   ! $ &()+,-....xQ;ؤ֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖs˗tᨁO7)      uQ;ݣ|jiihhhggfffeeedddљrhD/ %&'()*++,--.....,Y>Ǐi}Z}Z}Z|Y|Y{X{X{XzWzWzWyVyVyVxUxUyV]J,                 gC,XnKnKnKmJmJmJlIlIkHkHkHjGjGjGiFiFiGvOS1                       ! # $ &'(*+,-...///////////////////////////////////1249@LZ) ui* ...     ! '-4<CL T Z! \" W E* &,./////////////////////////////////////////////////////////////////////////////////////..-, qM9Ъﻘ츕츕츕뷔뷔궓궓궓鵒鵒鵒贑贑贑糐糐糐沏沏沏屎屎䰍䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊᭊᭊŝjM;   ! $ &()+,-....xQ;ؤףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖs̘t⨁O7( tQ;ޤ|jjiiihhgggfffeeddҚsiD/'())*++,--......,Z?ǐi~[~[}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUzW]K, !                gC-XoLnKnKnKmJmJmJlIlIlIkHkHjGjGjGiFjGwPT1                       ! # % '()*+,-..///////////////////////////////////135:CP \:ޙtV & [[[     " '-3<DL T Z! ]# Z J 0 $ *./////////////////////////////////////////////////////////////////////////////////////..-, qM9ѫﻘ츕츕츕뷔뷔뷔궓궓궓鵒鵒贑贑贑糐糐糐沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊ⮊ŝjM;   ! $ &()+,-....yQ;٥ףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ў{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗t̘u⩂O7)tQ;ߥ}jjjiihhhgggffeeedҚsjE/())*++,--.......,Z?Ȑj~[~[~[}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVzW^M- !          gC-YoLoLoLnKnKmJmJmJlIlIlIkHkHjGjGjGjGwPU3!                 " $ &()*+,-..//////////////////////////////////0147<FT aQ/ֳzSH!      " (-4;DL T [! _# ]" Q 8   ! (-.////////////////////////////////////////////////////////////////////////////////////..-, qM9ѫ츕츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑糐糐糐沏沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋ᭊ⮋ƞjM<   ! $ &()+,-.... [Cө︒쵎쵎봎볍볍곌게게鲋અΚxѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t͙u笅B-!yU>٠y؟xןxןx֝w՝w՝vԜuԜvӛuқtҚtњsљsЙsИrЙr譂sL5**+++,--.....//.,dGݡxŎhčgčgčfÌfÌf‹e‹dŠddccbbbaŠcіkI* kF/Ԓf~W}V}V|V{U{U{TzSzSySyRxRxQwQwQvPwQć[U2       ! # % '(*+,-..//////////////////////////////////0248?IWklH[5=      # (-4<DLU [! a# `# U ?#    '+.////////////////////////////////////////////////////////////////////////////////////..-, qM:Ҭ츕츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑糐糐糐沏沏沏屎屎屎䰍䰍䰍㯌㯌⮋⮋⮋⮋ƞjM<   ! $ &()+,-....jE1Ȗvfeeeddcccccbbb~a~a~az^iע~ҞzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u͙uߦaE3+++,,,,----....//#iI5apSpTpSoSoSoRoRoRnQoQnQnQnQmPmPmPmO|\_;(+++,---.....////-!tL4tSfHfHeHeHeGdGdGdFdFcFbEcEbEbDbDaDbDhJS2 -9764210.-,++***** ]<(eEY(VnJmImImIlHlHlHkGkGjFjFjFiEiEiDhDhDpI]<     " $ &()*+,../////////////////////////////////1248>GV bJ(̧h- \\\      # (.4;CL T \" c$ f% a$ S :   &+.///////////////////////////////////////////////////////////////////////////////////..-, qN:ԭﻘﻘ츕츕츕뷔뷔뷔궓궓궓鵒鵒贑贑贑糐糐糐沏沏沏屎屎屎䰍䰍㯌㯌䰍ǠkN<   ! $ &')*+--............-------,++* nI5쵎Ԡ}Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoƒoƒoǒoޥ}W;+    ! # % '()*+,----..........////////////.........-----++)~S9ÌdyVyVxUxUxUwTwTwTvSvSuRuRuRtQtQsPtQ[K/    ! # % &()*+++*)e>'zSjGjGiFiFiFhEhEhEgDgDgDfCfCeBeBeBdAmGZ:     ! $ %')*+,..////////////////////////////////0125:@KXlfD׊cT )       $ (.4;CKT \" c$ g& e% Y! B&  # *-////////////////////////////////////////////////////////.................//////////..-, rN:ԭﻘﻘﻘ츕츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑糐糐糐沏沏沏屎屎屎䰍䰍㯌䰍ȡkN=    ! # % ')*+,-............-------,,+* nJ6쵎Ԡ}ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoƒoǓpޥ}W;+    ! $ % '(*+,-............////////////////...........--,)~S9ČeyVyVyVxUxUxUwTwTvTvSvSuRuRuRtQtQtQ[K/    ! # % '()*++++*e>'{TkHjGjGiFiFiFhEhEhEgDgDfCfCfCeBeBeBmGZ;     ! # % ')*+,..////////////////////////////////0236<CO ]z( ciBE # 0..       $ ).4;CKS \" d% i& h& ^" I. ! (,.///////////////////////////////////////////////////........................///////..-, rN;կﻘﻘﻘ츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑贑糐糐沏沏沏屎屎屎䰍䰍屍ȡlN=    ! # %'(*+,---.....------------,,+* nJ6Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoȓpV;+    " # &()*+--.../////////////////////////////////....-,*~T:ŌezWzWyVyVxUxUxUwTwTwTvSvSvSuRuRtQuR[J/    ! # % '()*++++)f?({TkHkHjGjGjGiFiFhEhEhEgDgDgDfCfCfCeBnH[:     ! # % ')*+,..////////////////////////////////1248>GT `9ԤG#<   dcc       $ ).4;BKS \" d$ j& j' c$ Q 6   % +./////////////////////////////////////////////////.........-----------.........////..-, rN;կﻘﻘﻘ츕츕츕뷔뷔궓궓궓鵒鵒鵒贑贑糐糐糐沏沏沏屎屎屎䰍屎ɡlN=    ! # $ &()*++,,---------------,,,++* nJ5ա~Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpȔpV<+    " $ &')*,-../////////////////////////////////////...-*~T:ōfzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRuRuR\K/    ! # $ &()*++++)f?(|UkHkHkHjGjGjGiFiFiFhEhEgDgDgDfCfCfCnH[;     ! $ &')*+,..///////////////////////////////02359@JY dM-ɤϮ, 6 :::      $ ).4:BKS \" d% k' m( g% X ?"   # )-.//////////////////////////////////////////////......-----,,,,,,,,,,,----......///..-, sO;կﻘﻘﻘ츖츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑贑糐糐糐沏沏屎屎屎屎ɢmO=    ! # $ &'()*+++,,,,,,,,,,,,,,,++++*) nJ6﷐ա~Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpɔqV<+    " $ &')*,-..//////////////////////////////////////..-+T:ōf{XzWzWzWyVyVxUxUxUwTwTwTvSvSvSuRvS\K0    ! # $ &'()****)f>(|UlIkHkHkHjGjGjGiFiFhEhEhEgDgDgDfCfCnH[;     " $ &()*+-..///////////////////////////////0137;CN \p"jIstl3ppp       % ).4:BJR [! d$ k' n) k' ]" G*  ! ',./////////////////////////////////////////////.....---,,,+++++++++++++,,---.........-, sO;֯ﻘﻘﻘ츕츕츕뷔뷔궓궓궓鵒鵒鵒贑贑贑糐糐糐沏沏沏屎沏ʢmO=     " # % &'())********************))( nJ6﷐֢Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsʖsɕrɕrɕrȔqȔqɕqᧀW<,    " $ &()+,-..//////////////////////////////////////..-+T:Ǝg{X{XzWzWzWyVyVyVxUxUxUwTwTvSvSvSvS]L0       " $ % &'()))('e?(}VlIlIlIkHkHjGjGjGiFiFiFhEhEgDgDgDfCoI\<     " $ &()+,-..///////////////////////////////1148>FS _.jֆ^U-        ! % ).4:AJR [! c$ k' o) n( c$ O 3   % *-.///////////////////////////////////////////.....--,,+++****))))****+++,,---.......-- sO<֯ﻘﻘﻘ츕츕츕뷔뷔뷔궓궓鵒鵒鵒贑贑贑糐糐糐沏沏屎沏ʣnP=      " # $ % &'(())))))))))))))))))))((' mJ6֢ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrȔqȔqʕrᧀW<,    " $ &()+,-..//////////////////////////////////////..-+T:Ǝg|Y{X{X{XzWzWyVyVyVxUxUxUwTwTvSvSwT]M0       " # $ % &''((''e?(}VmJlIlIlIkHkHjGjGjGiFiFiFhEhEhEgDgDoI\<    ! # % '(*+,-..//////////////////////////////0135:@IV c>_8G 'YWV       ! %).4:AIR Z! c$ k' p) p) i& W =   " (,.///////////////////////////////////////////....--,++**)))(((((((()))**++,---.......- sO<ױﻘﻘﻘ츕츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑糐糐糐沏沏糐ʣoP>      ! " # $ % %&&''''''''''''''''''''&&%mJ6ףա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrʕr⨁W<,    " $ &()+,-..//////////////////////////////////////..-+U;Ǐh|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTwTwTwT^N1!      ! " # $ % %&&&&% e?)~WmJmJlIlIlIkHkHkHjGjGiFiFiFhEhEhEgDpJ]=    " # %')*+,-..//////////////////////////////1247;CN [ kY8Ы™<> ! +++       ! % ).4:AIQ Y! c$ k' q) t* m( ]" E)  &+-///////////////////////////////////////////...--,++*))((''&&&&&&'''())*+++---......- tO<ױﻘﻘﻘ츕츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑糐糐糐沏糐ˤpQ?       ! " # $ $ $ % % %%%%%%%%%%%%%%%%%%% % $ $ lJ7ף֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrʖs⨁W<,    " $ &()+,-..//////////////////////////////////////..-+U;Ǐh}Z|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTwTxU^O1!       " " # $ $ $ $ $ $ $ d?)WnKmJmJlIlIlIkHkHkHjGjGiFiFiFhEhEhEpJ]=   ! # $ &()*+,-../////////////////////////////01258=ER _w'xV}$9 hhh        ! %).4:@IQ Y! b$ k' r) u* q) d% N 2   $ )-./////////////////////////////////////////...--,++*)(''&%%$ $ $ $ $ $ % %&&'()**+,--......- tP<رﻘﻘﻘ츕츕츕뷔뷔궓궓궓鵒鵒鵒贑贑贑糐糐贐ˤqQ?        ! ! " " " # # # # # # # # # # # # # # # # # # # # # # # " kJ7ؤ֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsʖs˖s㩂W=,    " $ &()+,-..//////////////////////////////////////...+V<Ȑi}Z}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUwTxU_P2!        ! ! " " " # # " "  d?)XnKnKmJmJmJlIlIkHkHkHjGjGjGiFiFiFhEqK^>   " $ %'(*+,--../////////////////////////////0235:AIV c9xnb5       ! &).39@HP X! a# j' r) v+ u+ j' V <   ! ',./////////////////////////////////////////...--++*)('&% $ $ # # " " " " " # # $ % &''))*+,--.....- tP<زŸﻘﻘﻘ츕츕츕뷔뷔궓궓궓鵒鵒鵒贑贑贑糐贑̥qQ>            ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !  kJ6ؤף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖs˗t㩂X=,    " $ &()+,-..///////////////////////////////////////..,V<ɑj}Z}Z}Z|Y|Y|Y{X{XzXzWzWyVyVyVxUxUyU_Q3!            ! ! ! !   d?)YoLnKnKmJmJmJlIlIlIkHkHjGjGjGiFiFiFpK_>  " # % &()*+,-...////////////////////////////01247<CM [! hO.kDO. [XW         " &*.39@GO X a# i' q) w+ w+ o( _# E)  % *-.///////////////////////////////////////...--,+*)('%$ # # " !        ! " # $ % &'(*++,-.....- uP<زŸﻙﻘﻘ츕츕츕뷔뷔뷔궓궓궓鵒鵒贑贑贑贑̥sR?                                     jI6٤ףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗t̗t䪃W=,    " $ &()+,-..///////////////////////////////////////..,W=ɑj~[~[}Z}Z|Y|Y|Y{X{X{XzWzWzWyVyVxUyV`R3!                 c?)YoLoLnKnKnKmJmJlIlIlIkHkHkHjGjGiFiFrL^>" " $ % &')*++,-...////////////////////////////01359>FQ ` r$mK޹ɤF"C (---          " &*.39?GO W _# i& q) x, y, t* f& O 2  " (,.///////////////////////////////////////...-,+*)('&$ # " !            ! " $ % &()*++--..... uP=ٳŸﻘﻘﻘ츕츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑鵒̥tR?                                     iI6٥ףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗t̘u䪃X=-    " $ &()+,-..///////////////////////////////////////..,W=ɒk~[~[~[}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVyV`S4"                 c?)ZoLoLoLnKnKmJmJmJlIlIlIkHkHjGjGjGiFrL_?$$ % &'()*+,--...////////////////////////////1236:@IV c3n(>! ppp          " &*.39?FN V _# h& q) x+ {-x, l' X =!   &+.///////////////////////////////////////...-,+*)'&$ # !               ! " # % &()*+,-..... vP<ٳàﻘﻘﻘ츕츕츕뷔뷔뷔궓궓궓鵒鵒鵒鵒ͦuS@                                     iI7٥ؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t͘u嫄X=-    " $ &()+,-..///////////////////////////////////////..-W=ʒk\\~[~[}Z}Z}Z|Y|Y{X{X{XzWzWzWyVzWaT4!                 b?)ZpMoLoLoLnKnKnKmJmJlIlIlIkHkHkHjGjGrM`?&&''))*++--...////////////////////////////01258<CM \! gI(ng9 ,'%         " &*.39?EM U ^" g& p) w, |-{-r) `# G+  $ (-.//////////////////////////////////////..-,+*)('% # !                 ! " $ &')*+,-..... vP=ڳàﻘﻘﻘ츕츕뷔뷔뷔궓궓궓鵒鵒궓ͦvS@                  gI7ڦؤؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u͙u嬄X=-    " $ &()+,-..///////////////////////////////////////..-W=ʓl\\\~[~[}Z}Z}Z|Y|Y|Y{X{XzWzWzWzWaV5#                 a?*[pMpMpMoLoLnKnKnKmJmJmJlIlIkHkHkHjGrM`@( (())*+,---...////////////////////////////01359>GR _ s%eDӭiBS3 rom         # &*.38>EMU ]" f& o( w, }.}-w+ h& Q 5   '+../////////////////////////////////////..-,+*)'&$ "               ! # % '()*,--.... wQ=ڴġﻘﻘﻘ츕츕츕뷔뷔뷔궓궓鵒궓ΧwT@!          gI7ڦ٥ؤؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΛxΚwΚw͙v͙v͙v̘uΚv欅X=-    " $ &()+,-..////////////////////////////////////////.-W=ʓl]\\\~[~[}Z}Z}Z|Y|Y|Y{X{X{XzW{XaW5# !          a?*[qNpMpMpMoLoLoLnKnKmJmJmJlIlIlIkHkHsMa@*! ))*+++---...////////////////////////////01247;AKW c3gD!G, FFF         # '*.38>DLT [! e$ n( w, ~..|-o) Z! ?#   $ )-./////////////////////////////////////..--+       " $ &()*+,-.... XCسְկկկԮԮӮӭӭҬҬҬѫѫѫЪϪϩϩΩΩ̧̦̦ͨͧͧ˥˥˥ʤʤɣɣɣɣxUA fI7Ԩ﷐봎봎볍곍곍鲌豌豌豋簋簋鱋ܦМyҞ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙vΙv筅Y>.    " $ &()+,-..////////////////////////////////////////.-aDݢxÍgÍgŒf‹f‹feedddccbbbaaԘmV5" dA,ӓf}V}V|V{U{UzTzTzTySySxRxRwRwQwQvPuP~VjG+" **++,---....////////////////////////////01258=DN ]" iG&'A%        # '*.38>DKS [! d% m( v+ ~.1/u* c$ I-  ! '+./////////////////////////////////////..-*+=!@$<";!9 7 5320/.,,,,,,2%     " # %')*+,-....nJ7Ὓبצצ֥֥եեեեԤԤԣӢӣҢҢҢҡѡѡРРРϟϟϟΞϞΞΞ~Ν͝~͝~͝}̝}̜}̝~ۮvR> 755310.-++*)((''''''''''''&&&&&&&'''(dG6џ}ponnnmmmmmllkkkjjgŔsףӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚw͙v͙vϛw筆Y>.    " $ &()+,-../////////////////////////////////////////-xO6]oPnOoOnOnOnNmNmNlMlMlMkLkLkKjKjKjKtSX6#" 1 / . , + * ( ' % % # # " " " " #  [;'oMbCaBaB`B`B`A_A`A_@_@_@_?^?^?]>^>]>dCV8,% ++,,---....////////////////////////////01146:?HR `!s$dCͧދce< UPM     ! # '*.38=CKR Z! c$ l' u* }.53y+ k' T 9    &*-.////////////////////////////////////..-.幜ܼ˭ʫʪʫɪɪɪɩȧȨǧǧǧǦƤƤ徊jU   ! # % '(*+,-.../..+ * * ) ) ( ( ( ' ' ' & ' & & & & & & & & & & & & & & & & & & & & & & % $ # `Jˤ䰎䰎㰍㰍⯍⯌⯌ᮌ஋ᮋୋ߭߬߬߫ޫݪޫݪݩݪܩ۩ܩۨۨڧڧڧ٦٦٦إإإפפyYD   ! " # $ % % % % " aIӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚwϚw讇Y>.    " $ &()+,-..///////////////////////////////////////////-*++* *)))((( ( ( ( ' ' & $ pH1bwUvTvTvSuSuStRtRtRsQsQsPrPrPqOqOrOYM2    ! " $ % & & ' ( ( (()+,,,---...../////////////////////////////01357<BKX d3f׻\7R5!!!      ! $ '*.37=CIQ Y b# k' t* |- 7;/q( ^# C'  " (,.////////////////////////////////////..-.Ǫݼݼܻܺܺۺ۹۹۸ڷڷڷٶٷصٳϐoZ    # % &(*+,-..//1* #$$ $$$######"#"""""""""""""""""""""!!fO﹔︓︓쵐뵐쵐봏괏괏곎Ϥ^I  !!!!!aIӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwЛx讇Y>.    " $ &')*,-..//////////////////////////////////////////0* & ' ( ' ' ' ' & & & & & & % % $ $ " vM5Еl\\[[[ZZZ~Y~Y}X}X}X|W|W{V|WʌcP3" ! " # % % & & & & ' -----....../////////////////////////////012369>EO ^" jI)ӯ:G.nnn    ! $ '*.27<BIP X `$ i& r) {, 8C#6x* f% N 2   % *-.///////////////////////////////////.-,-鼠бббϰϯϯϯήήέ̫̬ͬͬͬͫÊjU    " $ &(*+,-../////........-..----------------------,,+* dMҪ궓鵒鵒鵒贑贑贑糐糐糐沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋ᭊᭊᭊଉଉଉ߫߫߫ުުުݩݩÛ}\G    ! # $ &()*++++(dLԠ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwЛx鯈Y>/    ! # %()*+,-..////////////////////////////////////////////..........---,,+*tK3ōfzWzWzWyVyVyVxUxUwTwTwTvSvSvSuRuRuR]P3"    ! # % &()*++,-------.......//////////////////////////////01247;@JU a!u&hGͧ}v!C' =52    ! $ (*.27<BHO V _# h& q* y+ 6F&@ .o' Y ="    # ),.///////////////////////////////////.-,-齡вбббаϯϯϯήήέ̫̬ͬͬͬƊjV    " $ &(*+,-..///////...............................--+* eNҫ궓궓鵒鵒鵒贑贑贑糐糐糐沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊଉଉଉ߫߫߫ުުުݩÜ~]H    ! # %'(*++,,+)eLԠ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxМy鯈Y?/   ! # % ')*+,-.........///////////////////////////////////////...........--+*tL3ōf{XzWzWzWyVyVyVxUxUxUwTwTvSvSvSuRvS]P3"    ! # % &()*++,------......../////////////////////////////011368<CM [! e6isM\=      " $ (+.27<BHO V ^" g& p( x* 5H(K+6u( c$ H,  '*-.//////////////////////////////////.-,-齢вввбббϯϯϯήήή̫ͬͬͬƊjW    " $ &(*+,-../////////////..........................-,* eMӬ뷔궓궓궓鵒鵒贑贑贑糐糐糐沏沏沏屎屎屎䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊᭊଉଉ߫߫߫ުުުÜ~]H   ! # % ')*+,,,,)eLա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ў{ѝzѝzМyМyМyϛxѝy갈Y>.    # % &()++,-............/////////////////////////////////////////......-,*uL4Ǝg{X{X{XzWzWzWyVyVxUxUxUwTwTwTvSvSvS^Q4#    ! # % &()*++,------......../////////////////////////////01236:?GQ _" m!P/⿩I'N6 \\\     " % (+.27;AGN U ]" e% o( w* 3G'Q1D$}, k& T 7    # ),.//////////////////////////////////..,-齢ѴвввбббϯϯϯήήήͭͬάNJjW    " $ &(*+,-../////////////////////////////////////..-,+ eNӬ뷔뷔궓궓궓鵒鵒鵒贑贑糐糐糐沏沏沏屎屎䰍䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊᭊଉଉ߫߫߫ުުŝ~]H   ! $ % ')*+,--,*eLա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyѝy갉Z?/    " $ &'(*++,-------.......///////////////////////////////////////////...-+uL4Ǝg|Y{X{X{XzWzWyVyVyVxUxUxUwTwTvSvSwT^Q4#    ! # $ &')*++,,,------.......///////////////////////////011358<BJW c y) oOϩ, G.5,(     " % (+.26;@FMT [" d% m( u) 0E%S3P06r' ^# C(  &+-./////////////////////////////////..-.龣ѴѴвввбббϰϯϯήήήͭͬȋkW    # % '(*+,-..//////////////////////////////////////..-+ eNԭ츔뷔뷔궓궓궓鵒鵒鵒贑贑贑糐糐沏沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋ᭊᭊᭊଉଉଉ߫߫߫ŝ~]H   ! # &()*+,--,*eL֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyҞz뱉Y?/    ! # % &')**++,,,,,---......///////////////////////////////////////////..-+vM5Ǐh|Y|Y{X{X{XzWzWzWyVyVxUxUxUwTwTwTwT_Q5#    ! " $ &'())++++,,,,-----.....//////////////////////////01246:?FO \" g;qۃ]gB& }{      # % (+.26;@FL S Z! c$ l( t) .C#T4X8D$z+ h% O 3   # (,./////////////////////////////////..-.龣ѴѴѴгввбббϰϯϯήήήήNjkW    ! # % ')*+,-..//////////////////////////////////////..-+ eNԭ츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑糐糐糐沏沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋ᭊᭊᭊଉଉଉ߫߫ŝ~]H   ! # &()*+---,*fM֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzҞz뱊Y?/    ! " $ % &())***++++,,,--.....//////////////////////////////////////////..-+vM4Ǐh}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUwTwTxU_R5#     ! " # % &'(()***+++++,,---.....////////////////////////011347;AIT a"p#W6ȶU2T; QQQ     ! # %(*.26:@EKR Y! a$ j' s) {, ?U5]=T45p&[! ?%   &*-.////////////////////////////////..-.龣ҵѴѴѴѳвввббаϯϯϯήίɌlX    " $ &')*+,-..//////////////////////////////////////..-+ fNծ츕츕츕뷔뷔궔궓궓鵒鵒鵒贑贑贑糐糐糐沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊଉଉଉ߫ƞ~^I   ! # &()*+---,*fMף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzӞ{벊Y?/    ! # $ % &'(())****+++,---..../////////////////////////////////////////..-,vM5Ȑi}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVxUxUxUxU`S5#      " # $ % &''(()))****++,,--.....///////////////////////012458>DM Y! e 0zYױ4K3 7,(      ! # &(+-26:?DJQ X `# h& q) y* ;S3`@_?D$x) e$ K /   # (,.////////////////////////////////..-.鿥ҵҵѴѴѴѳвввбббϯϯϯήʌlY   ! # $ &()*,--..//////////////////////////////////////..-+ fNծ츕츕츕뷔뷔궓궓궓鵒鵒鵒贑贑贑糐糐糐沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊᭊଉଉƞ~^I   ! # &()*+---,*gNףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{Ӟ{쳋Z?/     ! " # $ %&''((()))*+++---.../////////////////////////////////////////..-,wM5Ȑi~[}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVxUxUyU`T6$      ! " # $ $ %&&''((()))**++,--....//////////////////////011247:@HR `# k D#{emF,       ! $ &)+.16:>DJP W ^" g& p) x* 7P0aAeEV63l%W ;!   &*-.///////////////////////////////..- .鿥ӶҵҵѴѴѴѳвввбббϯϯЯʍlY   " $ %'(*+,-..///////////////////////////////////////..-+ fO֯츕츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑糐糐糐沏沏沏屎屎屎䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊᭊଉǟ^J   ! # &()*+---,*fMؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ԟ|Y?0      ! " # # $ % & &&''(()*+++---...////////////////////////////////////////...,wN6ɑj~[~[}Z}Z}Z|Y|Y{X{X{XzWzWzWyVyVxUyVˆaT6$       ! " # # # $ $ % % &&&'(())*++,--..../////////////////////011368<CL W d"w'dCʼ]:Y@%  ZZZ       ! $ &)+.16:>CIO V ]" f% n) v) 3M-aAjJdDD#u(b# H,  $ (+-///////////////////////////////..- .鿥ӷҶҵҵҵѴѴѴвввбббϯϯˎmY  ! # $ &()*+,-..///////////////////////////////////////..-+ fO֯츕츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑糐糐糐沏沏沏屎屎屎䰍䰍䰍㯌㯌⮋⮋⮋ᭊᭊᭊǟ^I   ! # &()*+---,*gNؤףףף֢֢֢ա~ա~ԡ~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{ԟ|Y?0       ! " " # $ $ $ % %&'(()*++,-...////////////////////////////////////////...,wN6ɑj~[~[~[}Z}Z}Z|Y|Y{X{X{XzWzWzWyVyVyV‰aU7$        ! ! ! " " # # # $ $ % % &''()*++,--...////////////////////011247:?GO ]# h 9hߺ7N7 G<7        " $ &)+.159>CHN U \! d$ m( u) 0H(^>kKlLX82k$T 9    ! &*-.//////////////////////////////... /ӷӷӷҵҵҵѴѴѴгввбббаˏnY ! # $ &'))++--..///////////////////////////////////////..-+ fO֯츕츕츕뷔뷔궓궓궓鵒鵒鵒贑贑贑糐糐糐沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋⮋ᭊȠ^J   ! # &()*+---,*gNؤؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ԡ}Y@0          ! ! " # # # $ % &'))*+,--...///////////////////////////////////////...-xO7ɑk\\~[~[}Z}Z}Z|Y|Y|Y{X{XzWzWzWyVzW‰bW7$             ! ! ! " " # # $ % &'()*++---..////////////////////112358<BKU b" p"S3gp J/         ! " $ ')+.159=BHN S [! b$ k' s) |, B"[;lLrRhHB"s%`# E*  # ),../////////////////////////////... 0ԸӷӷӷҵҵҵѴѴѴгввббѲ̐nY! # $ % '()*+,--..///////////////////////////////////////..-+ gOװ츕츕츕뷔뷔궓궓궓鵒鵒鵒贑贑贑糐糐糐沏沏屎屎屎䰍䰍䰍㯌㯌㯌⮋⮋⮋Ƞ_J   ! # &()*+---,*gN٥ؤؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ա}ﴍY?0            ! " # $ % &'()*+,-...////////////////////////////////////////..-xO7ʓl\\\~[~[}Z}Z}Z|Y|Y|Y{X{XzWzWzWzWÉbX8%                   ! " # $ %'()*++--...//////////////////011246:?FO [" h!~- tTϩƼ\:[C(fff        ! # % ')+.158=AGLR Y `$ i& q) y* <X8kKvVsSZ90i#R 6     &*-.//////////////////////////////..!0ԸԸӷӷӷҵҵҵѴѴѴѳвввб͑n[$ % &'()*++--...///////////////////////////////////////..-+ gOװﻘ츕츕츕뷔뷔뷔궓궓궓鵒鵒贑贑贑糐糐糐沏沏沏屎屎䰍䰍䰍㯌㯌㯌⮋⮋ɡ_J   ! # &()*+---,*hO٥٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ՠ}﵍Y?0             ! " # $ &')*++--..////////////////////////////////////////..-yO6ʓl]\\\~[~[~[}Z}Z|Y|Y|Y{X{X{XzW{XÊcY8%                     " " $ %'()*+,-...//////////////////002358<BIS _# n"F%w7Q;"  WKG       ! # % ')+.158=AFKQ X _# g& p) w) 7S3iIwWyYlLC#r%_" C)  # (+-./////////////////////////////..!0ԸԸԸӷӷӷҶҵҵҵѴѴѳввв͒o[% ''()*++,--...///////////////////////////////////////..-+ gPرﻘﻘ츕츕츕뷔뷔뷔궓궓鵒鵒鵒贑贑贑糐糐糐沏沏沏屎屎屎䰍䰍㯌㯌㯌⮋ɡ_K   ! # &()*+---,*hOڦ٥٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}֡~﵍Y?0           " # % &()*+,-..////////////////////////////////////////..-yO7˓l]]]\\~[~[~[}Z}Z|Y|Y|Y{X{X{X{XÊdZ9%                      ! " $ &')*+,-.../////////////////0112469>EN Y! d!z+ hHdq K3         " # %'*,.158<AEJQ W ^" f% n( u) 2M-eEvV~^wW[9/h#P 5    &)-./////////////////////////////.."1պԸԸԸӷӷӷҶҵҵѴѴѴѴввΓp['(()*++,--...////////////////////////////////////////..-+ gPزﻘﻘ츕츕츕뷔뷔뷔궓궓궓鵒鵒贑贑贑糐糐糐沏沏沏屎屎䰍䰍䰍㯌㯌㯌ʢ_J   ! # &()*+---,*hOڦڦ٥٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}֢~Y@0         " $ &'(*+,-../////////////////////////////////////////.-yO7̔m^]]]\\~[~[~[}Z}Z|Y|Y|Y{X{X|XÊc[9&                      ! # $ &()*,,-../////////////////112468<AHR `# i;kܷ⽹X6\E+'     ! " $ %(*,.158<@EJP U \" d% l' t) ~.G&aAuUсaЀ`pPC"q%]" B(  " (+-./////////////////////////////.!1©պպԹԸԸԸӷӷӶҵҵҵѴѴѴѳΔp[()**++,--....////////////////////////////////////////..-+ hPٲﻘﻘﻘ츕츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑贑糐糐沏沏沏屎屎屎䰍䰍䰍㯌ʢ`K   ! # &()*+---,*hOڦڦڦ٥٥٥ؤؤؤףף֢֢֢ա~ա~עY@0      ! # % '()+,-...////////////////////////////////////////.-zP8̔m^^]]]\\\~[~[}Z}Z}Z|Y|Y{X|YČe\:& !                 " $ &')*+,-..////////////////0112469>DL W d#t&Y85S=%ynj     ! # $ &(*,.158<?DIO T [! b$ j' r) z+ ?[;rRсaֆf}]\Z?Y>Y>Y>X=X=X=W$G)E(D(C'A&@&>%=%=$;$:$:#9#9#9#9#:#=&8!     " % &()+,-..///////////////101356:>DLW d$ q#P0ְO.\F- I93   ! " $ % '(*,.147;?CGMR X `# g& o) v) 3N.hH}]ۋkݍm҂b_?/g"O 5   $ (,..////////////////////////////0.0,,----.....//////////////////////////////////////////..-+ hQڳﻘﻘﻘ츕츕츕뷔뷔궓궓궓鵒鵒鵒贑贑贑糐糐糐沏沏屎屎屎屎̤`L   ! # &()*+---,*iPܨۧۧۧڦڦڦ٥٥إؤؤףףף֢֢ӟ}ި殈孈孇䭇䬆䬆㬆㫅⫅⪅᪄᪄੃ਃਃߨߧߧqQ<    ! # % ')*+,-..//////////////////////////////////////////1% mF/ךo__^^]]]\\\[[ZZZ~Y~YĈ`rO     " $ &()*,-..//////////////0112358<@HQ ]" h!0sSß~/S>'  ! " # $ %')*,/147;>BGL R W ^" e% m( t) ~.F&cCyYڊjqݍmxWF&q$\! B)  ! &*-.//////////////////////////////,++++++* * * * * * ) ) ) ) * ) +----.......///////////////////////////////////////////..-+ hQ۴ﻘﻘﻘ츕츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑糐糐糐沏沏沏屎屎ͥ`L   ! # &()*+----*jP›ܨܨܨۧۧڦڦڦ٥٥٥ؤؤؤףף֢բ٤ۦڥڥ٤٤أأأע~ע~ע~֡}֡}֠}ՠ|ՠ|ԟ{ՠ{jK8    # $ &(*+,-..///////////////////////////////////////////-,,,,,,,+++++***)('oH1̒j~Z~Z~Z}Y}Y|Y|X|X{W{W{WzVzVyVyUyUxT[lK      " $ &')*+,..//////////////1013569>CK V c$ n!J)wnLiM5! ppp' " " # % &')+,/147;>BFKQ V \" c$ k' s) {+ >\DKU b# m!D#pܶl|* S=(;;;" # $ % &'(*+-/147:=AEIN T Y! `# g& o( u) 1L,gG_q||ݍmiH3g!Q 7    " (+-.///////////////////////////////////////.........//////////////////////////////////////////////////////..-+ iQܵﻘﻘﻘ츕츕츕뷔뷔궓궓궓鵒鵒鵒贑贑贑糐糐糐沏ΦaL    " $ &()+,----*jQĝުݩݩܨܨܨۧۧۧڦڦڦ٥٥ؤؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzќyhJ8   ! # $ &(*++,-............//////////////////////////////////////////.....-,+oH0Ȑi}Z|Y|Y|Y{X{XzWzWzWyVyVyVxUxUwTwTwTZkK     # %'(*+,..////////////0012358;?GP \" g"y) dCݸ^=cN5" UD=# % %&')*+-/146:=@DIM R W ^" e% m( t) }- C#`@yYݍm|y҂bN-t%_! E,   $ ),../////////////////////////////////////////////////////////////////////////////////////////////////////..-+ iRݶﻘﻘﻘ츕츕츕뷔뷔뷔궓궓궓鵒鵒贑贑贑糐糐糐ΦbM    " $ &(*+,----*kRĝުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzҝzhJ8    " $ &'()*+,,-----........///////////////////////////////////////////...-+pH1ɐi}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVxUxUxUwT[kK     # % '(*+,..///////////0112347:>CKU b$ m!>gԯ9YE .  $ %&'()*,-/146:<?DHM Q V ]" d$ k' r) y) ;X8rRىizsoO6h!T 9"   ! &*-./////////////////////////////////////////////////////////////////////////////////////////////////////..-+ iRݶﻘﻘﻘ츕츕츕뷔뷔뷔궓궓鵒鵒鵒贑贑贑糐糐ϧbM    # % '(*+,----*kRŞުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzҞzﴍhJ8    ! # % &()**++,,,,,----.....///////////////////////////////////////////..-+pH1ɑj~[}Z}Z|Y|Y|Y{X{X{XzWzWyVyVyVxUxUxU[kL      # $ '(*+,..///////////0112467<AGP [! g#x) aAxWp"T=( >) &''(**,.02479<?CHKP U [! b$ i& p) v) 4O/jJ҂bvׇgU4v'`!H.   $ (+..////////////////////////////////////////////////////////////////////////////////////////////////////..-+ jSݶﻘﻘﻘ츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑贑ϧbM   ! # %')*+,----+kRŞ߫ުުުݩݩݩܨܨܨۧۧڦڦڦ٥٥٥ؤؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ӟ{ﴍhJ8     " $ % &'()**+++++,,----....//////////////////////////////////////////..-+pI1ʒk~[~[}Z}Z}Z|Y|Y{X{X{XzWzWzWyVyVyVxU]kL     # $ '(*+,..//////////0112357:>CKU a$ l!;߅eϪĞK+_L 5# ''()*+-.02479<@CFKP T Z! `# g& n( u) ~.F&cC{[qyvU<j!V <$    &),..///////////////////////////////////////////////////////////////////////////////////////////////////..-, jS޷ﻘﻘﻘ츕츕츕뷔뷔뷔궓궓궓鵒鵒鵒贑贑ϨcM    " $ &')*+,----+kSƞ߫߫߫ުުݩݩݩܨܨܨۧۧۧڦڦ٥٥٥ؤؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{ӟ{hJ8    ! # $ % &'(()))***++,,---..../////////////////////////////////////////..-+pH1ʒk\~[~[}Z}Z}Z|Y|Y{X{X{XzWzWzWyVyVxU]lL      # $ '(*+,../////////01012368;AGO \" g#w'\BFJO S X ^" e% l' s) z+ =Z:sSۋkߏo]=z) b!K 1   " '*-.///////////////////////////////////////////////////////////////////////////////////////////////////..-, jS޷ﻘﻘﻘ츕츕츕뷔뷔궓궓궓鵒鵒鵒贑ШcN    " $ &()*,-----+kSƟଉ߫߫߫ުުުݩݩܩܨܨۧۧۧڦڦڦ٥٥ؤؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|hK9     ! " $ $ &&'((()))**++,---.../////////////////////////////////////////..-+qI2˒k\\~[~[~[}Z}Z|Y|Y|Y{X{X{XzWzWyVyV^lL      # $ '(*+,../////////0012357:>DL T b$ l!;܁b˧֯`?hR<(  wq)***,-/02469;>BEIN R W ]" c$ j' q) w) 5R2kKՅez~^B"l!Y! @'   $ (,..//////////////////////////////////////////////////////////////////////////////////////////////////..., kT߸ﻘﻘﻘ츕츕츕뷔뷔궓궓궓鵒鵒鵒ЩdN   " # %'(*+,-----+lSƟଉଉ߫߫߫ުުުݩݩܨܨܨۧۧۧڦڦڦ٥٥ؤؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ԟ|hK9     ! " # $ $ %%&''(())**+,--....////////////////////////////////////////..-+qI2˓l\\\~[~[}Z}Z}Z|Y|Y|Y{X{XzWzWzWyV^mM      # $ '(*+,..////////00123469<BHQ [! g#x( Z::\J 4# ???***,,./12469;>ADHM Q V [! a$ h& o( u) /H(cC}]svgG/d!O 5     & ),.//////////////////////////////////////////////////////////////////////////////////////////////////..., kT߸Ÿﻘﻘﻘ츕츕츕뷔뷔궓궓궓鵒鵒ѩdN  ! # $ &()*+,--..-,lSǠᭊଉଉ߫߫߫ުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥ؤؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ԟ|hK9       ! ! # # $ $ % % &&'()*++,--...////////////////////////////////////////..-+qJ2˓l]\\\~[~[~[}Z}Z|Y|Y|Y{X{X{XzWzW^mM      # $ '(*+,..///////01112358:>ELU c$ k <ہaƣsRr$VB. m[T*+,-.013569;>AEHLP U Z! _# f% m( t) {+ >Z:sS܌l׈hM,q#]! D+  " &+-.//////////////////////////////////////////////////////////////////////////////////////////////////..- kTŸŸﻘﻘﻘ츕츕츕뷔뷔뷔궓궓궓ѩeO ! # $ &'()++,-...-,mTǠᭊᭊଉଉଉ߫߫ުުުݩݩݩܨܨܨۧۧڦڦڦ٥٥٥ؤؤؤףף֢֢֢ա~ա~ա~Ԡ}ա}hK9        ! ! ! " " # $ % &'()*++,--...///////////////////////////////////////..-+qJ2̔m]]]\\~[~[~[}Z}Z}Z|Y|Y{X{X{XzW_nN     # $ '(*+,..///////01113469=BHQ \" h#x([:G&aO :(  ++++,--/013579;>ADGKO S X ]" d$ j' r) w) 6Q1kKԄdz~sR6h S :"    $ (+../////////////////////////////////////////////////////////////////////////////////////////////////..- kTàŸŸﻘﻘﻘ츕츕츕뷔뷔뷔궓궓ҪeO! # $ % '()*+,--....,mTȡᭊᭊᭊଉଉ߫߫߫ުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}ՠ}hK:            ! " # $ % '())++,-...///////////////////////////////////////..-+qJ2͔m^]]]\\~[~[~[}Z}Z|Y|Y|Y{X{X{X_nN      # $ '(*+,..//////01112357:?EM U b$ l!=ځaƢc|+ ZH3# `KB--./023579;>@CGJN R W \" b$ h& p( u) /G'bB{[sqZ9w(`!I 0    ! % ),..////////////////////////////////////////////////////////////////////////////////////////////////..- lTààŸŸŸﻘﻘﻘ츕츕뷔뷔뷔궓ҪfP# % &&()*++--.....,mTȡ⮋ᭊᭊᭊଉଉଉ߫߫ޫުުݩݩݩܨܨܨۧۧڦڦڦ٥٥٥ؤؤؤףף֢֢֢ա~ա~֡~hK:            ! " # % &()*+,-...///////////////////////////////////////..-+rJ3͕n^^^]]\\\~[~[}Z}Z}Z|Y|Y|Y{X`oO     # $ '(*+,../////010113569>BIR ]" h#y* ^=ğV5gT?- -./0123579;=@CFIM R V [! `# g% m( t* {+ =Y9rRیlĤ_Ak!X ?'  # (*-.////////////////////////////////////////////////////////////////////////////////////////////////..- lTàààŸŸﻘﻘﻘ츕츕츕뷔뷔ҫfP% &'()*++,--.....-nTɢ⮋⮋ᭊᭊᭊଉଉଉ߫߫߫ުުުݩݩܨܨܨۧۧۧڦڦ٥٥٥ؤؤؤףףף֢֢ա~֢~hK:           ! " $ %'(*+,,-..///////////////////////////////////////..-+rJ3Ζo_^^]]]\\\~[~[}Z}Z}Z|Y|Y|Y`oO      # $ '(*+,../////00122458;@FM W d$ n"A ݃cǤq4^M 8(  W@7//0134579;=@CFIM P U Y! _# e% k' r) w) 4P0iI҂byǧƦ{iH- d O 6   $ )+..////////////////////////////////////////////////////////////////////////////////////////////////.- lTġàààŸŸŸﻘﻘﻘ츕츕츕뷔ӬgP& ())*++,--......-mTɢ㯌⮋⮋⮋ᭊᭊᭊଉଉ߫߫߫ުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤףףף֢֢֢hK:        ! # $ &()*+,-..///////////////////////////////////////..-+rK3Ζo__^^^]]\\\~[~[~[}Z}Z|Y|YaoO      # $ '(*+,..////00112357:>BJS ]" i#z* bAͨcBm XE2#  ¿001234679;=@BEHLP T X ]" c$ i' o) v* ~.E%`@xXqǧ˫ťߍmO.q#] E,     %*,..///////////////////////////////////////////////////////////////////////////////////////////////.- mUġġàààŸŸŸﻘﻘﻘ츕츕츕ӬhP ())*++,--.......-nUɣ㯌㯌⮋⮋⮋ᭊᭊᭊଉଉ߫߫߫ުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤףףף֢ףhK9      " # %'(*+,-..///////////////////////////////////////..-+rK3ϗp`__^^^]]]\\~[~[~[}Z}Z|YapP      # $ '(*+,..///010123469<AFN X e$ o"B"f˨}>aQ =, W?512245689;=?BEHKO S W [! a# g& m( t* z* ;V6oO؈hĤήͭyX:h U <%  " '*-..///////////////////////////////////////////////////////////////////////////////////////////////-z`߹޸޸޷ݷݷܶܵܵ۵۴۴ڴڳڳٲٲٲرױױְְְկկծԭԮӭӬӬҬҫҫѫѪşu[)*+++,--.....//.,|`ǠƠƠşşŞĞĝĝÝÜܛ›š괏إܨܨܨۧۧڦڦڦ٥٥٥ؤؤؤףףף[B2    ! " % &()+,-..///////////////////////////////////////..-+sK4ϗp``___^^]]]\\\~[~[}Z}ZbpP      # $ '(*+,..///11122367:>CKS _# j#~- fFկoNs%\I6' 2234568:;=?BDGJN R U Z! _# e% k' r* w) 2L,eE~^vͭҲ̬za@y)b K 3     $ (+..///////////////////////////////////////////////////////////////////////////////////////////////.}WB˫”x”wwwwvvvuvuuutttsssrrrrrqqqqpppopooonȠyS?*++,---.....////-XBǙyihhhgggfffeeededd{aÓt尌ݩܨܨܨۧۧۧڦڦ٥٥٥ؤؤؤףؤ{[F)7&8&8&8&8&8&9&9&9&9&9&:&:&:&:&;&<'A+#     " $ &()*+,...//////////////////////////////////////..-+sK4Иq```__^^^]]]\\~[~[~[}ZbqQ      # $ '(*+,.../010123479<@GP Y! f$ q#H'k̩G&dV A1#  V<2335678:;=?ADGJM Q T Y ^" c$ i& o( u* }, A![;tTݍmɩԴԴʪ܉iI(n"[ C+     % ),..///////////////////////////////////////////////////////////////////////////////////////////////1& # .,,----.....//////1% ZDǟݩݩܨܨܨۧۧۧڦڦڦ٥٥ؤؤؤףա~ۦ⪅⬇⫆᫆᫆અ੄੄ߩߩިާާݦݦܦܥ੃J1#    " $ &')*+,...//////////////////////////////////////..-+sL4Иqa```___^^]]]\\\~[~[cqQ      # $ '(*+,...011112458;>DLU a$ j"1mMٳxW{* ^L :+ 445678:;=?ADGILP S X \! a$ g& m( s* x* 7R2jJ҂b{ĤҲظԴĤtT5g S :$  ! &*,..///////////////////////////////////////////////////////////////////////////////////////////////+( ) ) ) ) ) ) ( ( ( ( ( ( ( ' ' ' ' ' ' ' ' ' ' ' ' ( ( ( ( ( ( ( ( ( ' ( ( ' *----.......///////0,) * * * ) ) ) ) ) ( ( ( ( ' ' ' & $ aJŝުݩݩܨܨܨۧۧۧڦڦڦ٥٥ؤؤؤ֣ۦީܧݧܦۦۦۥڥڥ٤٤٤أأآ~ע~ע~ܥ歇E.!    ! # % '(*+,-..//////////////////////////////////////..-+sL4љraaa``___^^^]]\\\~[cqQ      # % '(*+,..0111122579=BHQ [! h$ s%O.qҮN-iX E4& aF<55689:<=?ACFIKO R V [! _# e% j' q) v* /F&`@xXpήظۻӳy^=w'a K 3   # (*-..///////////////////////////////////////////////////////////////////////////////////////////..............-----------------------------..........////////////..........----,+) cKĝުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝz֡}੄D-     " $ &()+,-...////////////////////////////////////..--+sL4љrbaaa```__^^^]]]\\crR      # %'(*+,-/011123468;@FM W c$ l"7wW۵݀_/aQ >/"  66789:<>?ACFHKN R U Y! ^" c$ h& n( u* z+ <V6nNֆf~Ȩֶ߿ܼή܈hG&m!Z C+     $ (+../////////////////////////////////////////////////////////////////////////////////............................................................//////////////////..........--,* cKƟߪުުݩݩݩܨܨܨۧۧڦڦڦ٥٥٥ؤؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{֡}᪄C-     " $ &()*+,-........................................-,*tL5Қsbbaaa```__^^^]]]\ŠdrR      # %')*+,.001112457:>CIR ^" i$v'W7zٴU4l [ I8*  mSI789:;<=?ACEHKN Q T X ]" a$ f& l( s* w* 2K+cC{[tҲݽۻɩuU5fS ;%    & ),../////////////////////////////////////////////////////////////////////////////.......................................................//////////////////////////////////...-,+ dLƞ߫߫ުުݩݩݩܨܨܨۧۧۧڦڦ٥٥٥ؤؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{ע~᪄C-     " # %'(*+,---....................................--,+*sM5Ӛscbbbaa```___^^]]]ŠdsS      ! # % ')*+,//01123569<@GO X e% o#>}]۵e4cT B3& !!!889:;<>?ACEGJM P S W [! `# e% j' p) v* }, @ Y9qQىi˫ںظ{_>w'a K 4   " '),../////////////////////////////////////////////////////////////////////////.........-------------........../////////////////////////////////////////////////////////////...-+ dLƟ߫߫ުުުުݩݩܨܨܨۧۧڦڦڦ٥٥٥ؤؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{ע~⫅C-!   ! " % &()*++,,------------------------------------,,++)sM6ӛtccbbbaa```___^^^]ËesS      ! $ %')*+-//0123457;>DKT `# i"}, dDY8o!^!L <." {cY99:<=>?ACEGJL O S U Y! ^" c$ h& n( t* y* 5N.fF~^vãԴӳlJ(n![ D,     # '*-..///////////////////////////////////////////////////////////////////////......----,,,,,,,,,,,,----......///////////////////////////////////////////////////////////////..-+ cLǠଉ߫߫߫ުުުݩݩܨܨܨۧۧۧڦڦ٥٥٥ؤؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|أ⪅C-!    " $ %'()*+++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,++++*)sM6Ԝtdccbbbaa```___^^]ËetT     " $ &()*,./01233579<AHQ Z! g% r#F%hĢܶi9eW F6*  ***9:;<=>@ACEGILN R T X ]" a$ e% k' q) w* ~.C#[;rRۋkͭݽͭyY8gU =&   $ (*-.//////////////////////////////////////////////////////////////////////.....---,,++++++**++++++,,---.....//////////////////////////////////////////////////////////////..-, dMǠଉଉ߫߫߫ުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥إؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|أ㬆B-!    ! # $ %'())****************************************))'sM6Ԝuddcccbbaaa``___^^ÌftT     " $ &()+-.00123469<@FM V c$ l"3mM_>r$`!O ?1&  {s;;<=>@ACEGIKN Q T X [! _# d% i' o) u* z* 8Q1hH_wĤ׷߿ƦeD{* b O 7!  ! %)+..////////////////////////////////////////////////////////////////////....---,,+++***))))))****+++,---..../////////////////////////////////////////////////////////////..-, dMȡᭊଉଉ߫߫߫ުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}أ㬆B-!     " # $ %&'(())))))))))))))))))))))))))))))))))))))(('& sL6֝vdddcccbbaaa``___^ČftT    ! # % '(*,-//112357:>CJS ]" h$w'T4tϬڴk;gY! H9-"  EEED <=>?@BCDGIKM P S V Z! ^# b$ g& m( r* w* /E%]=tT܌lϯ߿ۻsR1q#] G/    ! & ),..///////////////////////////////////////////////////////////////////...---,++**)))((((((((())**++,---.../////////////////////////////////////////////////////////////..-, eMȡᭊᭊଉଉଉ߫߫ުުުݩݩݩܨܨܨۧۧڦڦڦ٥٥٥ؤؤؤףף֢֢֢ա~ա~ա~Ԡ}٤䬇B,!     ! # $ $ &&''''''''''''''''''''''''''''''''''''''''&&%  sM7֝veeddcccbbaaa```__čguU    " $ &'(+-../024479<AHP Y e% n"=|\aAu&b!Q B4) ==>?@BCDFHKM P R U Y ]" `# e% j' p) v* {+ ;R2iIЀ`xťظԴׂb?iX @*   " &),../////////////////////////////////////////////////////////////////...---+++*))('''&&&&&&''(())*+++---...////////////////////////////////////////////////////////////..-,eNɢ⭊ᭊᭊଉଉଉ߫߫߫ުުݩݩݩܨܨܨۧۧۧڦڦ٥٥٥ؤؤؤףף֢֢֢ա~ա~ա~٤䭇B-!      ! " # $ $ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % $ #  sM7מweeeddcccbbaaa```_čguV   ! # $ &'*+,..012568;?ELU a$ j#}- bB}۶ֲj>i\! K<0%  hhhX7*>?@ABCEFHJLO R T W [! _# c$ h& n( s* w* 1G'^>tT܌lϯͭqP1eR :%   # '*-..////////////////////////////////////////////////////////////////...--,++*)('&&%% $ $ $ $ $ $ % %&''()**+,--...////////////////////////////////////////////////////////////...,eNɢ⮋⮋ᭊᭊଉଉଉ߫߫߫ުުުݩݩܨܨܨۧۧۧڦڦڦ٥٥ؤؤؤףףף֢֢ա~ա~ڥ孈B-!       ! " " # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # " " rL7מwfeeedddccbbbaaa``čhvV   " $ %&)+,-.0023589>BIR \" h% s$I(iĢbAw(c!T E7,"   ??@ABCEFHJLN Q S V Z! ]" b# f% k' q) v* {+ ;S3iIЀ`xĤٹť|]tTۋkϯݽoL+o!] G0    % )+.../////////////////////////////////////////////////////////////...--++*('&% $ # " !        ! ! " # $ % &'(*++,-...////////////////////////////////////////////////////////////..-fNʣ㯌⮋⮋⮋ᭊᭊᭊଉଉ߫߫߫ުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤףףף֢֢ۦ殈A."                                                   qL7٠xgfffeedddcccbbaaaŎiwV#" $ $ &(*+,,./02367;?EKT `# j$y) Z:xϬcBx( e!W G:/&  !!!AABCDEFHJKN P R T X [! _# c$ g% l( q* w* {+ ;S3hH_vĤظֶ_;hX @+    ! % ),../////////////////////////////////////////////////////////////..--,+*)('% # " !             ! " $ % &()*++--..////////////////////////////////////////////////////////////..-gOʣ㯌㯌⮋⮋⮋ᭊᭊᭊଉଉଉ߫߫ުުުݩݩݩܨܨۨۧۧڦڦڦ٥٥٥ؤؤףףף֢ۦ篊A-!                                                 qM7ڠxggfffeedddcccbbaaƏiwW$$ % &'*++-.//1147:=BJQ [" g% r%D#؁aͪg?l!_# O B6,#   BBCDEFHIKM O R T W Z! ]" a# f% j' o( t* x* 1G']=sSڊjͭϯpO0eS ;'  ! &),..////////////////////////////////////////////////////////////..-,+*)('% $ " !               ! " # % '()*+,-..////////////////////////////////////////////////////////////...gOˤ䰍㯌㯌㯌⮋⮋ᭊᭊᭊଉଉଉ߫߫߫ުުݩݩݩܨܨܨۧۧۧڦڦ٥٥٥ؤؤؤףףܧ築A-"                                              oM7ۡyhggfffeeeddcccbbbƏixX&&&()*+-,./02459<@GN W c$ m"3nMݹbAy) e"X J=2)   SSSV/ CCEFGHIKM O Q S V Y \! _# d$ h& l( r) w+ |, ;Q2gG}]tֶȨ`?x(a M 6#    " '),..///////////////////////////////////////////////////////////..-,+*)'&$ " !                 ! " $ &')*+,-../////////////////////////////////////////////////////////////..gOˤ䰍䰍㯌㯌㯌⮋⮋ᭊᭊᭊଉଉଉ߫߫߫ުުުݩݩܨܨܨۧۧڦڦڦڦ٥٥ؤؤؤףܧ簊A-!   oM8ۡyhhgggffeeeddcccbbƏjxX('(*++,...01257:>DLT _# j$y( U5qʩţ߅e@m"a# R D9/&  CDEFGHIKM N Q S U W [! ^" a$ f% j' o( t+ y* 1F&[;qQׇg~˫߿sQ/p"^ I 2    # '+-..//////////////////////////////////////////////////////////..-,+*('%# !             ! # % '()+,-...////////////////////////////////////////////////////////////.-gO̥屎䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊᭊଉଉ߫߫߫ުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤݧ谋A-!oM8ݢzihhgggfffeedddcccƐkyX*(*+,-,../12369=BHP [! h% q#B"~^_?z* g#Z! L?4,$   ~aUEEFGHIKLN P R T W Z! ]" `# d% h& m( r) w+ |, :P0eEzZqԴܼއgC"kZ D.     $ '*-../////////////////////////////////////////////////////////.--/"       " $ &()*+,-../////////////////////////////////////////////////////////////- sXşşĞĞÝÝݜœ›뵐ڧުݩݩݩܨܨۧۧۧڦڦڦ٥٥ؤؤݨ벍1!rP:՝vԜuԛuӛuҚtҚtҚsЙrЙrϘrϗqΗqΗq͖p͖p̕o̕oڡxc+ +,,,.../02358<@GNW c% m#3kKٵڂb>n"b# S G<2*"   (((G FGGHIKLN P R T V X! [" _# c$ f% k' o) u+ x* 0E%Y9nNԄd{ǧֶܼzY7gW ?*    $(+-..///////////////////////////////////////////////////////..-,& 6K/!F)D)C)A'?'=&;&:%8%7$6$5$4#4#4#4#5#<('    " $ %')*+,-../////////////////////////////////////////////////////////////-YBبssrrrrqqqpppoononiəy䯋ުުݩݩݩܨܨܨۧۧڦڦڦ٥٥٥ݨ宊S<-***+++++,,,,,,,,,,,,,,,,,,+,,+,++++++++++++++++****+++++, fG3arUrUrTqTrTqSqTqSqSqSpSpRpRoQoQoQnPwXeI,% ,---.//01247:?DKU `# k$x(V6pƥٵ~]=z* h#[" NB8/'   FGGHJKLN O Q S U X Z! ]" a# d% i& m' r* w+ {+ 8N.bBwWݍmϯаlL. dR <'   ! % (+-..//////////////////////////////////////////////////////..., qQ@׺ӶԶӶҵҵҵҴѳҳҳѲҲѱѰѰѱ|_N    ! # % ')*+,-..//////////////////////////////////////////////////////////////0* $$$$###"""!!!!! xT?Ş߫ުުݩݩݩܨܨܨۧۧڦڦڦ٥٥٥ףף٤ؤ٤ؤףף֢֢֢ա~ա~ա}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzќyМyМyϛxϛxϛxΚwΚwΙv͙v͙v̘u̘u̘u˗t˗tʖsʖsʖrɕrɕrɕrȔqȔqǓpǓpǓpƒoƒoƒnőnőnŐmĐmĐmŐmޣ|W;* ! " " # # # % ,.-..../01226:=BJQ \" g% s%C"_|]=n#c$ U I>4,%    iiikG9GHIJKLM O Q S U W Z! \" `# c$ g% k' p) u* x* /B"V6jJЀ`v¢ظɩ~_>x'a N 7$    % (*.../////////////////////////////////////////////////////..-,qQ@ݿݾܾܽܽܽۼۻۼۻۺۺڹڸ۹|`N     # % '(*+,-..//////////////////////////////////////////////////////////////0* & ' ' ' ' ' ' & & & & % % % % $ # " }WBŞ߫ޫުުݩݩݩܨܨܨۧۧڦڦڦ٥إإ᫇䭈㬈⬇⬇᫆᪆᪆અ੅ߩߨߨިݧݧݧܦܦܥۥۥڤڤڣ٣~٣~آ~آ}آ}ס|ס|נ|֠{֠{՟z՟z՞zԞyԞyӝyӝxӝxҜwҜwқwћvћvКuЙuЙuϙtϘtΘtΗsΗs͗r̖rΗs諂[>- " # $ % & & ' ' & ( ..../.0001268<AGO X e% m"5lLشүx\;z* i$\" P E:2*$    HIIJKLM O Q R T V X [! ^" a$ e% i' m( r) w+ z+ 6K+_?sS؈h~˫߿£tS2q"_ K 4!   ! %(+...////////////////////////////////////////////////////..-, nN>ֺӷӷҵҵҵѴѴѴгвввббааx\L    " $ &(*+,-../////////////////////////////////////////////////////////////////........-..--,,+* [DŞ߬߫߫ުުުݩݩܨܨܨۧۧۧڦڦ٥٥٥ؤؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpǓpƒoƒoőnőnőnĐmĐmĐmĐmݣ|[?-    ! # % '()++,---.././//0/01358;>DLU `# k${* Y9sƥxX<o#d$ V KA7/("   IJJKLM O P R T U X Z! ]" `# c$ g% k' p) t* x+ .?T4fF{[qҲlG'm \ G1   " & *,..////////////////////////////////////////////////////..-, nN>׻ӷӷӷҵҵҵѴѴѴѳввбббѱx\L    # $ &(*+,-..///////////////////////////////////////////////////////////////////...........--+* [DŞᬉ߫߫߫ުުުݩݩܨܨܨۧۧۧڦڦڦ٥٥ؤؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsʖsɕrɕrȔqȔqȔqǓpǓpǓpƒoƒoőnőnőnĐmĐmőnݣ|[?-    " # %')*+,--..//////00013569>CJR ]" h$ t%H'كcɧrW7y) j$^# Q G=5-'!   XXXiB2JKKLM O P R S U W Y! \" _# b$ e% i& m( r) v+ z* 3G'Z:nNӃcyĤٺݽقb?jZ D.    ! &),..///////////////////////////////////////////////////..-, nN>׻ԸӷӷӷҶҵҵѴѴѴѳвввбѲx\L    " $ &(*+,-../////////////////////////////////////////////////////////////////////////......-,+ [EƟଉଉ߫߫߫ުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoƒoƒoőnőnĐmőnޤ}\>-    " $ &()*+,-./0/000000112468<AHP Y! f% n"9sSڷtS:p$f% X M C:2,&    KKLM M O P Q S T V X [! ^" `# c$ g& k' o( t* x+ }- ;O/bBvVۋk̬ٸyX6gX A,     " &),..//////////////////////////////////////////////////..-, nN>׻ԸԸӷӷӷҶҵҵҵѴѴѴвввѲx]M    # % '(*+,-../////////////////////////////////////////////////////////////////////////////...-+ [EƟ⭊ଉଉଉ߫߫ުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤףףף֢֢֢ա~ա~ԡ~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoƒoƒoőnőnƒnޤ}\?.     # $ &(*+,-..00001000011357;@EM V b$ l$._?wʩmU4z* k% _# T I@80*$    LLM N O P Q S T U X Z! \" _# b$ e% i& m( q) v+ y+ 1D$V6iI}]rҲԳoN0eU >*     ! %)+...////////////////////////////////////////////////..., nN>ؽԹԸԸԸӷӷӶҵҵҵѴѴѴгвѳy]L    ! # % ')*+,-..//////////////////////////////////////////////////////////////////////////////..-, \EǠ⭊ᭊଉଉଉ߫߫߫ުުݩݩݩܨܨܨۧۧۧڦڦ٥٥٥ؤؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqǓpǓpƒoƒoƒoőnƒoߥ~\?-    ! # %'(*+,-./00000//1013469>DKT `# j$ w&R1iִoO9p$f% Z! O F=5.)$    XXXoH8M M N O P Q S T U W Y! [" ^" a# d$ g& k' o( s* x+ {+ 7J*]=pPԄdzĤٹήfF|+ cS <(    " &)+..////////////////////////////////////////////////..-, nN?ؽպԹԸԸԸӷӷӷҵҵҵѴѴѴгѳy]M    " # %')*+,-..//////////////////////////////////////////////////////////////////////////////..-, \Fȡ⮋ᭊᭊଉଉଉ߫߫߫ުުުݩݩܨܨܨۧۧۧڦڦڦ٥٥ؤؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɖsɕrɕrȔqȔqȔqǓpǓpƒoƒoƒoǒoߥ~^@.    ! $ %')*+,.//000000/012358<BIQ \" h% q#A zZ޺އgR1y) m% `$ U LC;4-(#     M N N O P Q R T U V X Z! ]" _# b$ e% i& l( q) u+ y* .?Q1cCvVۋk˫߿ʪ~_>w&aP :'    # &)+-.////////////////////////////////////////////////.-- nO?پպպչԸԸԸӷӷӷҶҵҵѴѴѴҴz^M    " $ &()*+,-..//////////////////////////////////////////////////////////////////////////////..-, \Fȡ㮋⮋ᭊᭊᭊଉଉ߫߫߫ުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsʖsɕrɕrɕrȔqȔqǓpǓpǓpƒoǓp_@/    " $ &()*+-.//00//00002347;AGO Y! e% n#5jJѯ̫|kK8p$h& \" Q H@81,'"     N N O P Q R S T V X Y! \" ^" a$ d$ g& j' n( r* w+ z+ 3E%W7jJ}]qѱƦxW6t$`N 8%     # &),-.///////////////////////////////////////////////..- nO?پֻպպչԸԸԸӷӷӷҶҵҵѴѴҵ{^M   ! # % '()+,-...//////////////////////////////////////////////////////////////////////////////..., ]Fɢ㯋⮋⮋ᭊᭊᭊଉଉ߫߫߫ުުުݩݩܨܨܨۧۧۧڦڦڦ٥٥ؤؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrɕrȔqȔqȔqǓpǓpǓpǓp`A/   ! # % '()*,.///0////001147:>EM V b$ l#}+ \71+&"     jjj~[LO O P Q R S T U W Y [! ]" `# b$ f% h& l( p) u+ x+ |, 9K,]=pPӃcxֶ£sR0r"_ L 6$    # &),..//////////////////////////////////////////////..- nP@پֻֻպպպԸԸԸӷӷӷӶҵҵҵҵ|_O   " $ &')*+,-..///////////////////////////////////////////////////////////////////////////////...,]Fɢ䯌⯌⮋⮋ᭊᭊᭊଉଉଉ߫߫ުުުݩݩݩܨܨܨۧۧڦڦڦ٥٥٥ؤؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqǓpǓpɔqঀaA/   " $ &')*+-.//0/////002369=CK S _# j% v&N.܅e¢ugG7q%i& ]" S KC<60+&"      V&P P Q R S T U W X Z! \" _# a# d% g% k' n( r* v+ y* /@ Q1cCuUىi}ǧۻnL+o!^ K 5#    " &),-..////////////////////////////////////////////..- oO@ڿֻֻֻպպպԹԸԸԸӷӷӶҵҵӶ}_O  " # % '()*+,-..///////////////////////////////////////////////////////////////////////////////...-]Gɢ㯌㯌⮋⮋⮋ᭊᭊᭊଉଉଉ߫߫ުުުݩݩݩܨܨܨۧۧڦڦڦ٥٥٥ؤؤؤףף֢֢֢ա~ա~ա~Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrɕrȔqȔqȔqȔqীbB0  " # % '()+---..//////01348<BHR [" g% r#@zZ׵ճ|\M-y) n& c$ Y! P HA;4.*&"      þP Q Q R S T U V X Y! [! ^" `# b$ e% h& k' p) s* x+ {+ 4F&W7hH{[ߏo̬jG&m ]J 4"   ! &),...///////////////////////////////////////////..- oP@׽ֻֻֻֻպպԹԸԸԸӷӷӷҵӶ~_N! " # $ &()*++--..////////////////////////////////////////////////////////////////////////////////..-]Gʣ䰍㯌㯌㯌⮋⮋ᭊᭊᭊଉଉଉ߫߫߫ުުުݩݩܨܨܨۧۧۧڦڦڦ٥٥ؤؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u˗t˗t˗tʖsʖsʖsɕrɕrȔqȔqɕrਁcC/ " # % &((*,-.-...////00147:@GO Y! g& n"5kK~ͬocC7r&j' _# V N F?93.*&"      yQ R R S T U V W Y Z! ]" _# a$ d$ g& j' m( q) u+ y+ }, :K+[;mMЀ`tѱ߆fD#l] I 3"    " &),-.///////////////////////////////////////////... oP@׽׽ֻֻּպպպչԸԸԸӷӷӷӶ`P" $ % &'()++,-...////////////////////////////////////////////////////////////////////////////////..-^Gʣ屍䰍㯌㯌㯌⮋⮋⮋ᭊᭊଉଉଉ߫߫߫ުުުݩݩܨܨܨۧۧۧڦڦ٥٥٥ؤؤؤףףף֢֢ա~ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzѝzМyМyМyϛxϛxΚwΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsɕrɕrɕrȔqɕrᨁeC0" $ % &')*+,-./...././0235:?EM X c$ m#. _?s˫yYK+z* o' e% [! S KD>73-*&"       LJIrH7R S S T T V W Y Z! \" ^" `# b$ e% h& k' o( s* w+ y+ /?P0`@rRՅexֶۃbA k\ H 3!    ! %)*-../////////////////////////////////////////... pP@׽׽׽ֻֻֻּպպպԸԸԸӷӷԸЀaO$ &''))*+,--...////////////////////////////////////////////////////////////////////////////////..-^Gˤ屎䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊᭊଉଉ߫߫߫ުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚwΚw͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsɕrɕrʖrᨁfD1% &&'(*+,-....././//1259=DKT `$ k$x'R1߉iܺމiaA7s&l' a# X P IB<72-*&"       R S S T T U W X Y! [! ]" _" a# d$ f% j' l( p) t* x, {+ 3D$T4eEwWيj}Ʀںفa@k\ H 3!   " &)+-../////////////////////////////////////////.. pPAؾ׽׽׽׼ֻֻֻպպպԸԸԸӷԸ҂aP&'(()*++--.../////////////////////////////////////////////////////////////////////////////////...^Gˤ屎䱎䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊᭊଉଉ߫߫߫ުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͙v͙v͙v̘u̘u̘u˗t˗tʖsʖsʖsɕrʖsᩂgD1 &'()*,+,.-----/../0247<BJR ^# h% t%F%{[ض{tTJ*z+ p' g% ^" U N GA;61-*&#       ǶS T T T U V X Y Z! \" ^" `# c$ e% g& j' n( q) v+ y+ |, 8I)Y9iI{[ގnʪ޾߼_>j[ H 3!   ! %)+-..////////////////////////////////////////.. pPAؾؾ׽׽׽ֻֻֻּպպպԸԸԸԸ҃bP(())*+,---...//////////////////////////////////////////////////////////////////////////////////..^H̥屎屎屎䰍䰍㯌㯌㯌⮋⮋⮋ᭊᭊᭊଉଉ߫߫߫ުުުݩݩݩܨܨۧۧۧڦڦڦ٥٥٥ؤؤףףף֢֢֢ա~ա~Ԡ}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{Ҟ{ѝzѝzМyМyМyϛxϛxϛxΚwΚw͚w͙v͙v̘u̘u̘u˗t˗t˗tʖsʖsʖsᩂiE1 (()*+,,,,-----...0137;@HQ \! h& p#=tSϮѱ؅e_?8t'm( c$ Z! S LF@:61-*&$ !    uT T T U V W X Z! [! ]" _# a# c$ f% i& l' o( s* v+ y+ .=L-]=mM_rͭ޼~^=i[ H 3"    ! % (*-..////////////////////////////////////////. rQAٿڿٿؾؾؾ׼׼׼׼ֺֻֻչֺԄcP))*+++,--....//////////////////////////////////////////////////////////////////////////////////.-`Hͦ贐沏沏沏屎屎屎䰍䰍䰍㯌㯌㮋⮋⮋⭊ᭊᭊଉଉଈ߫߫ުުުީݩݩܨܨܨۧۧڦڦڦ٥٥٥ؤؤףףף֢֢֢~ա~ա~ա}Ԡ}Ԡ}ӟ|ӟ|ӟ|Ҟ{Ҟ{ҞzѝzѝzМyМyМyϛxϛxϛwΚwΚwΚv͙v͙v̘u̘u̘t˗t̘u㪄jE1))+,,---,--,-.-./1369?GP Y! f% n#5fFzŤurRJ*|+ q( i' `# X Q JE?:61-*'$ !     SLIxN=T U U V W X Z! [! ]" ^" `# b$ d% g& j' m( p) t* w+ z+ 2A!P0`@qQӃcvѱ߻~^>j[ H 4"     $ (*-..///////////////////////////////////////.{[Jo\*+++,---....////////////////////////////////////////////////////////////////////////////////////- kRʤʤɣɢɢȢȡǡǠǠƠşƟŞĞĞĝÝݜœ›︑﷐﷐쵎쵎촍볍볌게게鲋鱊鱊谊谉簉篈毈毈宇宇孆䬆䬅㬅㫅㫄㫅uN8 *+,,,,---,,,-.../258?EN W c$ m$. ]=pɩӁa^>9u'o( f% ]" V O ID>:52.+(%#      (])U V V W X Y! Z! \" ]" _# a$ c$ f% h& k' n( q) u+ y, {+ 5E%T4dDtTևgyӴ޻ـ`?k\ I5#     $ '*+...//////////////////////////////////////! G*gU^M~]L}\L}\L|\K|\L|\K|\K|\K{\K{[J{[J{[K{ZJ{ZJ{[J|[JfSM0" +,,,---....//////////////////////////////////////////////////////////////////////////////////////" P/YCtO:tN:sM:sM9sM9sM9rM9rM9qM9qL8qL8qL8pL8qL8pK7pK7pK7oK7oK7oK7oJ7oK7oJ7oJ6oJ6nJ6nJ6nJ6nI5nI6nI6mI5mI5mI5mH5mI5mH4mH4mH4lH4lH4lH4lG3lH4lG3lG3lG3kG3kG3kG3kF2kG3kF2jF2jF2jF2jF2jF2jE1jE1iE1iE1iE1iE1iD1iE1hD0hD0hD0hD0hD0hC/hC/hC/gC/gC/hD/pJ5C$! ,,---,--,,,,--.0148<DM U a$ l$y)T3݇g޻׷qoOL,~. r( k' b$ [" T N HC>:62.+)&$ !     U V V W X Y Z! [! \" ^" `# b$ d% g& i& l( o) s* v+ y+ }, 9H(W7gGxXڊj|ã׷߼ـ`@k\ J 5$     # '),-../////////////////////////////////////4" 2----......///////////////////////////////////////////////////////////////////////////////////////4   !2------,-,+,-,..037<BJT _# i$v&J)~^ճ£_]=;w( q( h& `# Y R MHB>:63/,)'% #      V V W X Y Y! [! \" ^" _# a$ c$ e% g& j' m( p) t* w+ z+ .<K+Z:jJ{[܌lťع݄dC"l^ L 6%    # &)+-..//////////////////////////////////////.......----------------.......//////////////////////////////////////////////////////////////////////////////////////////.......--------,---------------------------------------------------------------.../-,--,,+,-,,.015;AIR ^# j% s$C"wV̬ϯnnNM-0t( m( e% ^" W Q L GB>:63/-*)&$ "    tjeoaW W X X Y! Z! [! ]" ^" `# b$ d$ f% h& k' n( q) t* x, z+ 1@ N.]=mM}]ߏoȨۻfF%n _M 8&     " %)+-..///////////////////////////////////////..........................//////////////////////////////////////////////////////////////////////////////////////////////..........................................................................-....----,,+,++,,-/15:@HQ \! g% q#<oO|Ʀܻ}}]_?>z* r) k' c$ \" V P KFB>;641.+)'&# "  N>8wJ9W X X Y! Z! [! \" ]" _# a# c$ d% g& i& l( o( r) v+ y, {+ 3B"P0_?oOЀ`qɩܼjJ)p"_O :(     ! % (*-..//////////////////////////////////////////...................////////////////////////////////////////////////////////////////////////////////////////////////////.......................................................................///...--,,,+,,*,-.148?GP [! g% o#6gGwɩތlnNQ02v( p) h& a# [! U P KFB>;742/-+)'%# 1^(X X Y! Z! [! \" ]" ^" `# b$ c$ e% h& j& m( p) s* v+ y, |, 6E%S3aAqQ҂bsʪݽnP.r#`Q <*    $ (*,-.///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0///-.--,+++**,,.049>EO Y e% n#1a@pյz}]`@B"|, t) m( g% `# Y! T O JFB?;8530.,*)'&X Y Y! Z! Z! [! \" ^" _# a# b$ d$ f& h& k' n( p) s* w, y+ }- 8F&T4cCsSӃcu̬޾¢tU4v%bS ?,    # '*+-..//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000///..-,,+*****+-.37=EN W d% m#- Y8iڸĤۊjoOT47x) r) k' e% ^# Y T O KGC?<9641/-+*)Y Y! Z! Z! [! \" ]" ^" `# a$ c$ e% g& i& k' n( q) t* w, z+ .:I)V6dDuUՅev̬߿Ʀy]=z) dV B/    " &)+-..////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////00///./--,+******++/26<CLV b$ l${* S3لdԳϰy~^cCH(0v) p) j' c$ ]" X S O KGC@=:7531/-,yY! Z! Z! [! \" ]" ^" _# `# b$ c$ e% g& i& l' o( r) u+ x, z+ /<J*X8gGuUֆfvͭ߿ʪfE. fX E1!     " %(*,..//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////00///..--,+**))))*,.15<CK U a$ k$x(N-_ϯں܋kqQX8={+ u* o) h& b$ ]" X S O KGDA><97421/s`Xo`Z! Z! [! [! \" ]" ^" _# a$ b$ d$ f% h& j' m( o) r* v+ y, {+ 0>K+Y9gGvVֆfxͭ߿ϮnM3hZH5$       $ '*,...///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////00//..--,++*))(()*+-05:BKU a$ j$x'J)zZɩ˫x_eEN.6y* s* m( g& b$ \" W S O KHEB?<:8642Y@6~R@[! [! [! \" ]" ^" _# `# b$ c$ e% f& h& k' m( p) s* v+ y, {+ 1?L,Y9hHwWևgx̬߿ճxX<k]L 8'     # '),-.//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////00//..-,++*)))''()*-04:AJT `# k% t%E$vVĥյ܌ltT\<:86I+r@,[! [! \" ]" ]" ^" _# a# a$ c$ e% g& i& k' n( p) s* w+ y, {+ 3@ M-Z:hHxXևgw̬޾ܹۂbF$n!`P <*    " %(+,..////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0/..--,+*)(('('')*,/49@JS _# j% t%B!rR{ȨyсajJT4>|, v* q) k' f% a# \" X T Q M JGDB?=;:?d.[! \" \" ]" ^" _# `# a$ c$ d$ f% h& i& l' n( q) t* w+ z, |+ 4A!M-Z:hHwWׇgw˫ܼmP.t%bS @.    ! $ '*,...////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0/./.-,++*)('''&'()+/38@IS ^# i% r#?pPwҲގnxXbBM-7z+ u+ p) j' f% a# \" X T Q N KHFCA?=<\" \" \" ]" ]" ^" _# `# a$ c$ d% f% h& j' l( n( q) t* w, z, |, 4A!M-Z:hHwWֆfvɩۻ¢w]=|+ eW E2"     # ')+-...////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0///.-,,+*)(''&&&&')*.29@HS ^# i% s$=kKuݼܼǧ{ՅeoO[;F&2y+ u* o) j' e% a# \" X U R O LJGECA?ĸü\" \" ]" ]" ^" _# `# a# b$ c$ e% g& h& j& m( o) q) t+ w+ z, |+ 4A!M-Z:hHvVՅeuǧٹʩkJ3h[J 7&     " %(*,.../////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0///.--,++*)('&&%%&&(+-28?HQ ]# h% r$;jJsٸѱq}]hHU5B"/y+ t* o( j' e% a$ ]" Y! V S P M KIGECƱ]" ]" ]" ^" ^" _# `# a$ b$ d$ e% g& i& k' m( o( q) t* w, y, |, 4A!M-Y9gGuUԄdsƦַӱyY?m _P <+    $ '*+-..///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0//..--,+*)('&%% $ % $ &')-27?HQ ]# i% r$:hHqֶڻƦ~ىiuUbBP0=~.x+ s* o( j' f% a$ ^" Z! W T R O M JHG]" ]" ^" ^" _# `# `# a$ c$ d% e% g& h& j' m( o) r) u* x, z+ |, 4A!M,Y9fFtT҃crãԴܹgM,t$bT B0     # &)*,.//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0/./.-,++))(&%% $ $ # $ % '),17>HR ]" i% r$8fFnӳѱvӃcoO]=L,:}- x+ s* o( j' f% b$ ^# [! X U S Q N LJv]" ^" ^" ^" _# `# a# b$ c$ d% f% g& i& k' m( o) r) t* w, y, |, 4@ K+X8eErRсapбv]<- fY H6&     " $ (*+.../////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0//...-,**)(&%% $ # " # # $ &),17>HR ]" h% q$9eEmѱںǧߏo|\jJY9I)7|, x+ s* o( k' f& c$ _# \" Z! W T R P N pd}^" ^" ^" _# _# `# a# b$ c$ e% f% h& i& k' m( o) r) t* w+ z, |, 3?K+W7cCqQ_ގn}ή޾ʪnN8j]N ;*    # &)+,...//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0///.-++*)('%$ # " " " " # $ &(+17?HR ^# i% q$9dDmήѱzڊjvVfFV6G'6{, x, t* o) l' g& d% `# ^" [! X V T R fYv^" ^" _# _# _# `# a$ b$ c$ d% f% g& i& k( m( p) r) t* w, z+ |+ 2>J*U5aAoO|\ۋkzʪںմفaH'r#aT B0"     ! %(*+-..///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////..,+**((&$ # # " ! ! ! " $ % (,17?IS ^# i& r$9eEkͮۻȨtԄdsScCT4E%5|, x+ t* p) l( i& e% b$ _# ]" Z! X V bS}o^" ^" _# _# `# `# a$ c$ d$ e% f% g& i& k' n( o) r) t* w, z, {, 1<H(S3_?mMzZ؈hwƦֶr[:}, fZ H 7'     # &)*-...///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////..-,+*)'&% $ # !     ! " $(,17?IS ^# j% r$:dEkʫӳ¢pЀ`pPaAR2D$5{, y, u+ q) m( j' g% d$ a$ ^" \" Z! ^Ozl^" _# _# _# `# a# b$ b$ d$ e% f% h& i& k( m( o) r) t* v, y, {+ /:F&Q1]=iIwWՅes¢ѲǧpO:l _P >-     ! % '*+-..///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////...-,+*)'&%# # !       " $ '+18@IS _# j% s$:gGߋkʪۻ˫|ۋk}]mM^>Q1D$6|- y, v+ r) n( k' h& e% c$ `# ^" \Jzk_# _# _# `# `# a# a$ c$ d$ e% f% h& i& k' m( o( q) t* v+ y, {+ .8D$N.[;gGtS҂bp~̬ܼӲ܄dM,v&cW F4%      " &)*,.../////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////.-,++*('%$ # !        ! $ ',18@JU `# j% t%=gGߋkɩԴƦx؈hzZlL^>P0D$6}-z, v+ s* p) m( i& g& e$ b$ [I|n_# _# _# `# `# a# b$ c$ d$ e% f% h& i& k' m( o( q) s* v+ x, z+ }- 6A!L,X8dDpP}]ۋkzȨַ߽wcC3i\N <,      $ ')+-...//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0/..--,+))'&%# !         ! # '+19AKU a$ k% v'>hHmȨ޾ϯuֆfxXkK^>Q1D$8~.{, x, t* q) n( l' i& g& bOs_# _# `# `# `# a$ b$ c$ d$ e% f% h& i& k' m( o( q) s* v+ x, z, |, 3>J*U5`@mMzZׇgu¢ѱʪ{ZE$s$bU D4%    " %(*,-.../////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////.--,**)(&$" "           # ',2:CLV b% l% v&A!jJlǧٹ˫rՅexXjJ^>R2F&:0{, y, u+ r* p) m( k' dRw_# _# `# `# a# a$ b$ c$ d% e% f& g& i& j' l' n( p) s* u+ x, z, |+ 1;F&Q1]=hHuU҂bq˫ٺطp]HR \" h& p%~- N-sSqƦֶܼʪ{ߏoԄdyYnNdDZ:Q1H(?6~.|- xí`# `# `# `# a# a$ b$ c$ c$ d% e% f& h& i& k' l( n( p) r) t* w+ y, z+ .7B"L,V6bBmMzZֆft˫ظӴq`?4k^R A2#      $ &(*,-...////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0//.-,,*)('%# "           $ )/7@JS ^# j& q%0R1tTrťܼ߿ӳȨ{pՅe{[pPfF]=T4L,D$<5ͺ`# `# `# `# a# a$ b$ b$ c$ d$ e% f% g& i& j' l( n( p) q) s* v+ x, z, |, 2=G'R2\0"     ! $ ()+-...////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////..-+*)('%# !       " (/6?HR \" g& o& y)?`@~^wťظٹϯƦwߏoֆf~^vVpPwZhW`# `# `# `# `# a# a$ b$ c$ c$ d% e% f% h& i& k' l' n( p) q) s* v+ x, y+ |, 1:E%N/Y9cCnNzZՅer~ãаۻϯwmL@u&dYK <-      ! % ')+--..////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0//..-,+*)('% # !       $ *19AK T _# j& q&|+ D#eEЁaxťظٹϯƦ{rڊjӃc|\ёwt_# _# `# `# `# `# a$ b$ b$ c$ d% e% f% g& h& j& k' m( n( p) s* u+ w+ y, z+ ~- 4>H(R2[;gGqQ}]؈htťѱܼܼǧla@9p"aV I9+     ! $ &)+,-.../////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0..-,+*)(&$ "        &+3;DMW a# k' r&~, I(hHсazĤ׷ٹаǧ}vߏo؈h਒_# _# _# _# `# `# `# a$ b$ c$ c$ d% e% f& g& i& j' l' n( o( q) s* u+ x, y+ {+ /6@ J*T4^>hHtT_ڊjvƦѱۻյكcX74m!`U G8)      ! $ ')*,--..////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0//.-++*)'&# "        " '-6>GP Z! d% m' s&0N-kKӃczĤֶٹѱɩzt쿭пb(_# _# _# _# `# `# a# a$ b$ c$ d$ d% f% g& h& i& k' l( n( p) r) t* v+ x+ y+ |, 08B"L,V6`@jJuUЀ`܌lwťаںϯ{[Q00l _T F7*       $ &(+,--..///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0//.--,+*(&%# !           # )08@IS \" f% n' u'5Q1nNՅe|ãյںҲʪãvB._# _# _# _# _# `# `# a# a$ b$ c$ d$ e% f% g& h& j& k' l( n( p) r* t* v+ x+ z+ |, 19D$M.W7aAkKvVЁa܌lwĤήظۻɩzvUN,.j_T E7*      # % (*+--..///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0//.-,,*)(&% " !               % ,3;DM U _# i' p' x( 8W7pPֆf}ãյۻԴͭƦbQ_# _# _# _# _# _# `# `# a# b$ b$ c$ d$ e% f% g% i& j' k' m( o( p) r) t* w+ x, z+ }- 2;D$N.W7bBlLvVЀ`܋kw̬յ޾յťuqQK*~- j^TF 7+     " % ')+,-.../////////////////////////////////////////////////////////////////////////////////////////////////////////////////////--,+*)'% # !                " (.6>FP X b$ k' r' y* >Z:rR؈h}¢ӳݽֶϯɩ¢Ī{^" ^" ^" ^" _# _# _# `# `# a# a$ b$ c$ d$ e% f% g& i& j& k' m( n( p) r* u+ w+ x+ z+ }- 2;E%N.W7aAkKuUЀ`ڊjtȨѱںݽѱspOJ).k _U G:,    ! $ &(*,-...//////////////////////////////////////////////////////////////////////////////////////////////////////////////0/.-,+*)(&$ #                   $ *19AJR [! d% m( s' }, A!^>tTڊj}ҲٹҲ̬ƦƱ_# ^" ^" ^" ^" ^" _# _# `# `# a# a$ b$ c$ d% e% f& g& h& j' l' m( o) q) s* t+ w+ x+ z+ }- 2:D$M-V6`@iIsS}]؈hr|ĤͭյܼظͭqoOL+0l!aW I</"       " % ')+,-..///////////////////////////////////////////////////////////////////////////////////////////////////////////.--++*)'% # !               ! &-4<DM U ^# g% o( t'/F&aAvVڊj~ѱ߿ֶܼѱvC/^" ^" ^" ^" ^" ^" _# _# _# `# a# a# b$ c$ d$ e% f% g& i& j' k' m( o( p) r* u* w+ x+ z+ |- 19B"L,U5^>gGqQ{[ՅeߏoyȨϯֶۻۻԴɩqqQN-2o#bYL >1%     ! $ &(*,--.///////////////////////////////////////////////////////////////////////////////////////////////////////.-,+*)'& $ "              # *08?HO X `# i' q( w' 2K+cCwWۋk~ϯݽ߿ݿo_]" ]" ]" ]" ]" ^" ^" ^" _# _# `# `# a# b$ c$ d$ e% f% g& h& j' k' m( o( p) r) t* v+ x+ y+ |, 07@ I)R2[;dDnNwWсaۊjt~ɩаյٹۻܼںֶаƦruTS27r$e[P C6)      " $ ')+,--..////////////////////////////////////////////////////////////////////////////////////////////////.-,++)(&% "              &-3;CJS Z! c$ k' r) w( 6N.eFyY܌l}ήۻ]" ]" ]" ]" ]" ]" ]" ^" ^" ^" _# `# `# a# b$ b$ d$ d$ f% g& h& j' k' m( n( p) r* t* v+ x+ y+ {+ /5=G'P0X8`@jJsS|\Յeߏox¢ȨήҲԴյյѱ˫¢szYX7;x( i _U H;.#       # %')+,-..///////////////////////////////////////////////////////////////////////////////////////////.-,,+)'&$"            # )07>FN U ]" f% n( t( z* 9R2gGzZ܌l}̬ٹp=(\" \" \" \" \" \" ]" ]" ]" ^" ^" _# `# `# a$ b$ c$ d$ e% f% h& i& j' l' m( o) q) s* u+ w+ x+ z+ }- 29B"K+T4\ELS Z! b$ j' q) v( ~- @V6hH{[܍m|ȨԴ[! [! [! [! [! [! [! [! \" \" \" ]" ]" ^" _# `# a# a# b$ c$ d$ e% f% h& i' k' l' n( o) q) s* u+ w+ x* z+ }- 18@ I)Q1X8`@hHpPyYЁaىiqxx؈hrQW6>|, n"d ZP D8-"       " % ()+,--.////////////////////////////////////////////////////////////////////////..-,+)('% $ "            " '-3:AHO V ]" d% l( s) w) /D#X8kK{[܌l|ƦҲ޾yJ8[! Z! Z! Z! Z! Z! [! [! [! [" \" \" ]" ]" ^" _" _# `# a$ b$ c$ e% f% g& h& j' k' m( n( p) r) s* v+ w+ x* z+ ~.29A I(Q1X8`@hHpPxX_ׇgߎnu|y܌lzZbAI(4u'i!b!XMB5+!      ! $ '(*,--.////////////////////////////////////////////////////////////////./..,++)('% " !            % *07=DKR X _" g% n( s* x) 1F%Z:kK{[ڋkzĤаۻ}Z! Z! Z! Z! Z! Z! Z! Z! Z! Z! [! [" [! \" \" ]" ^" _" _# `# a$ b$ c$ d% f% g& h& j' l' m( o( q) r* t* v* w* y* z+ ~.28@ H(P0W7^>fFmMuU|\Ӄcىipw}xގnЀ`lLU4?/r%h"`!W L A6+!       ! # % ')+,--../////////////////////////////////////////////////////////..-,+)('%$ !            # (.3:@GN T [! a$ h& o) u* y* 3H(Z:kK{[ڊjx¢ͭٹ¼n;'Y! Y! Y Y Y Y Y! Y! Y! Z! Z! Z! [! [! \" \" ]" ^" _# _# a# a$ c$ d$ e% f% g& i& j' k' m( o) p) r* t* v+ w* x* z+ }- 17>F&M-T4[;bBiIpPwW}]Ԅdڊjpuy|{tގnӃcuUa@L+:|, q%h"_! W MA7,#       ! $ %(*+,--./////////////////////////////////////////////////...-,+)('& # "            ! &+17=CJQ V ]" c$ j' p) u* z* 5H([;jJzZىiw˫ֶwiY X X X X X X X X X Y Y Y! Z! Z! [! \! \" ]" ]" _" _# `# a$ b$ c% d% f% g& i& j' k' m( n( p) r* t* u* w* x* y* |, /4:B!I)P0V6]=cCjJpPvV|\҂bׇf܌lߏortwwvspۋjӃcyYkKY8F%7{, q%i#a" Y O E;1'      ! # %()*,--..////////////////////////////////////////..--,*)(&% " !          % )/4:@FL S X ^# e% k' q) v* {* 7J*Z:jJyY؈hvȨӳݽɷj8$X X W W W W W W X X X X Y Y Y Z! Z! [! \" \" ]" ^" _# `# a$ b$ c$ d% f% g& h& i' k' m( n( o) q) s* u* v* w* y* {+ }.16<B"I)P0V6\6,$       ! $ '()+,-..////00000000000/0////..-,,+)(&%# !            ! &+/4:@EKQ V \" a$ g& m( s* w* |, 9K+Z:iHwWՅer~¢ֶͭ˺i:&V V V U U U U U U U U V V V W W X X X Y! Z! [! [! \" ]" ^" ^# `# a# b$ c$ d% e% f& h& i& k' l( m( o) p) r) t* t* v* w* x* z* |, /27<A!G'L,Q1V6[;^>bBfFhHkKmMnNnNoOnNkKhHcC^>T3H'=3~- w* r( m' f& _# X P H@7/(         " %'(*+,../000110100/..-,+)('%# !             % ).28<BHMR X ]" c$ h& n( t* x* |, 9J*Z:gGvUӃcp|ɩӳܼ~rU U U T T T T T T T T T T U U U U V V W W X Y! Y! Z! [! [" ]" ^" ^# `# a# b$ c$ d$ e% f% g& i& j' k' m( n( p) q) s* t* u* v) w) x* z+ |, /15:>B"G'K+N.R2V6X8[;]<]=^>^>^>\6/(         ! " $ $ % % &$ % $ # "              # '+05:?EIOT Y! ^# d% i& o( t+ x* }- :J*X8fFtTсaݍmzƦϯٹvJ9T T T T T S S S S S S S T S T T T U U V V V W X X Y! Z! [! \" ]" ]" ^" _# `# a$ b$ d$ e% f% g& h& i' k' l( m( o( p) q) s* t* t) u) v) w) y* z+ |- .137:<@ C"E%H'J*K+L,L,L,L,I)G'D$?82.}-z- w+ t* p) k' g& b$ ]" X R MGA;5/)#        " &).37<AFLP V Z! `# e% j' o) t+ x+ }, 9J*W7eEqQ~^ۋkw¢̬յ޾V! T S S R S R R R R R R R S S S S S T T T U U V V V W W X Y! Z! [! \! ]" ^" ^" `# `# a# b$ d% d% f% g% h& i& j' k' m( n( o) p) q) r) s* t) u) u) v) x* y* z+ |, }- ~/0134566676542.~.~.|-z, x, v+ s* q) n( k' h& d$ `# \" X T P K GC>:51-($!                           $ ),05:>CHMR V [" `# e% j' p) u+ x+ }, 9H(V6cCpP|\؈htȨѱں݋hZS R R R Q Q Q Q Q Q Q Q Q Q Q Q Q R R R S S S T T T U V V W X X Y! Z! [! [! \" ]" ^" _# `# a# b$ c$ d$ e% f% g& h& i& j' k' l' m( n( o( p) q) r) s) s) t) t) u) u) v* w* x* x* y* y+ z+ z+ z, z, {, {-{-z,y, x, x+ v+ u+ t* r* p) o( l' k' h& e% c$ `# ^" [! Y U R O LIFC?<:7420,*(&$ " !                       # '*.27;@DJN S W \" a$ f% k' p) u+ y+ |- 8G'T4aAnNzZֆfq}Ĥͭյݽ̼oD3Q Q P P P P P O O O O O O O P P P P P P Q Q Q R S R S S T U U V V W X X Y Z! Z! \! \" ]" ^" _# _# `# a$ b$ c$ d% d% f% f% h& h& i& j' k' k' l( m( n( o) o) p( q) q) r* r* r) s* s* s* t* s* t* t* s* s* r* r) r) p) p) o( n( m( l' j' h& g& e% d% b# `# ^" \" Z! X V T R P N KIGECA?=;9865310/--+**)('&%% $ # " ! !                 ! % ),049=BFKO T Y ]" b# g& k' p) u+ y+ |, 7F&S3_?lLwW҂bގnyɩѱٹX(P P O O N N N N N N M N N N N N N N N N O O O P P P Q Q R R S S T T U U V W W X X Y! Z! [! [! \" ]" ]" ^" ^" _# `# a$ b$ b$ c$ d% d% e% f% f% g& g& h& i& i& i& j& j' j' k' k' k' k' k' k' k' k' k' k' j' j' i& h& h& g& f% e% d% c$ b$ a# _# _# \! [" Z! X W V T R Q O NLJHGECB@?=;:9754320/.,+*)(& $ # "                 $ '+.26:?CHLQ U Y! ^" b$ g% k' p) u+ y, |, 5D$Q1]=iIuU_ۋkuĤͭյܼvjO N N N M M M M LLLLLLLLLLLM L M M M N N N O O P P P Q Q R R R S S T T U U V V W W X X Y! Y! Z! [! [! \" \" ]" ^" ^" ^" _# `# `# `# `# a$ a$ b$ b$ c$ b$ b$ c$ c$ c$ c$ b$ b$ b$ b$ b$ b$ a$ a# `# _# _# ^" ]" \" [! Z! Z! X W V V T S R P O N LKIHGEDBA?=<;9865310.,+*)'%# " !               " &),048<@DIM Q U Z! ^" b$ g& k' p) u* x, |, 4B"N.Z:eEqQ}]ׇgr{ɩа׷߿~[LN M M LLKKKKJJJJJJJJJJJKKKKKKLLLLM M N N N O O P P P Q R Q R R S S S T T U U V V V W W W W W X X! X! Y Y Y Y! Z! Z! Z! Z! Z! Z! Z! Z! Z! Y! Y! Y! Y! Y X X X W V V U T S S R Q P P N M L KJHGFEDB@?><:9865320/-,*)'& $ "                 ! $ '+.169>AFJN R V Z! ^# c$ g& l' p) t+ x, {, 2@ L,X8cCnNyYԄdݍmxĤ˫ӳںƶmE6LKKJJJJIIIIIHHHHHHHHHHHIIIIJJJIKKKKLLLL L M M M N N N O O O P P P P P Q Q Q Q R R R R R R R R R R R R S R R R R Q Q Q Q P P O O ON M M LKKJIHGFDDCA@?><<:9765310/-,*)'&$ # !               # &),/37:?CFJO S V Z! _" c$ g& k' o) t* x, {+ 1>J*U5`@kKvV_ڊjs|ƦήԴۻb8'JJIIHHHGGGGFFFFFFFFFFFFFFFFGGGGGGGHHHHHIIIIJJJJJJKJKKKKK LLLLLKKKK L L L K KKJJJJIIHHHGFFEEDCBAA@>>=<;:98644310..++)('%$ " !                ! $ '+-148<?CGKO S W [! ^# c$ g& k' o) t* x+ z, .;G'R2]=hHqQ|\ֆfߏoxɩаֶݽX.IHHGGFFFEEEEEDDDDDDDDDCDDDDDDDDDDDEEEEEEEEEEEEEEFEEFEEFEFEEEEEEDEEDCCDCBCABAA@@?>==<;::9767543310/.-,*)('%% # !                     # &)+/269=@DGLO S W Z! ^# c$ f& k' n( r* w+ z, ~- 8D$N.Y9dDnNwWЀ`ڊjs|Ĥ˫ѱظ޾򣌃T)GFFEEEDDDCCBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@@@@@@@@????>>>===<<;;;:98987665432110/.-,,*)(''%$ # "                 ! $ '*,036:=ADILP S W [! ^" c$ f% k' o( r* v+ z, |, 5A!K+V6`@jJsS}]ֆfގnwť̬Ҳظ޾롋R(EEDDCCBBBAAA@@@@??????>>>>>>>>>>>>>>=========<<<<<;;;;;;::999888876655443221100..-,++*)(''&% $ " !                       " % (*-147:>AEHLP S V [! ^# b$ f% i' n( r) u+ y, {, 1=G'R2[;eEoOxXсaڊjrzƦ̬Ҳظ޾Q)DCBBAA@@@??>>>=====<<<<<;;;;;;::::::99999888888777766655544332221000/..--,+**)(('&% $ $ # ! !                      ! # &)+.158:>BEIL P S W Z! ^" b$ e% i& m( p) t* x, {, .9D$N.W7aAjJsS|\Ԅd܌lu}Ʀ̬ҲظݽS-BA@@??>>===<<<;;;:::999998888777777666655554443332211100//..--,+++**)((''&%$ $ # " ! !                        " % '*,.258;?BEHLP S V Z! ]" a# e% i& l' p) s* w+ z, }- 5@ J*S3\>==<<;;:::9988877766665555444433322111001//0..--,,,++**))((('&&% $ # # " !                         ! # &(*,0369<?CFILP S V Z! ^" a# d$ h& l' o( r* v+ y, |, 1<E%O/X8`@hHrRyYсaىiqxƦ˫аյںgH;>==<;;::99887766655444433222211110///...--,,,++***))(('&&%% $ $ # " ! !                            ! # &)+-0369<?BEHLO S V Y! \" `# c$ g% j' n( q) t* x, {, ~.7@ I)R2[;cCkKsS{[ӃcۋkryĤʪήپƻz`U<;:::988766554433222111000//...--,,,++***))(((''&& %% # # " " !  !                            " $ &)+.0369<?BEHKN R U X \" _# c$ f% j& m( p) t* w+ z, |, 1<D$M-U5^>fEnMuU}]Ԅdۋkry¢սҎyqD 987766544432211100//...--,,++****))(('''&%% $ $ # " " !                               " %')+.1369<?BEHKO R T X [! _# b$ e% h& l( o( r* u+ y, {, ~.6?H(P0X8`@gGoNvV}]Ԅdۋkrx~ӿ꩚_B67665443221100//..--,+++***))((''&&%%$ $ # # " ! !                                # %'*+.1469<?AEHKN Q T W [! ]" a# d% g& j' n( q) t* w+ z, |- 09B"I)Q1Y9aAhHoOwW}]Ԅdڊjqw}i`8 4432110//.--,,++***))((''&&%$$ # # # " ! !                                ! # %(*,.1469<?BDHJM Q T V Y! ]" _# c$ f% i& l' o) r) u+ x, {-}- 2<C#K+S3Z:bBhHoOvV}]ӃcىiߏouߡY?42110/..--,+***))(('&&&% $ $ # # " " ! !                                 ! # %(*,.1469;>ADGJM P S V X [! _" a$ e% h& k' m( q) s* v+ y, {-~.5=D$L,S3Z:aAhHoOuU{[сaەyò¿rj@$/..-,+***)((''&%% $ $ # # " ! !                                 ! $ &(*,.1368;>ADGIL O R T W Z! ]" a# c$ f% i& l' n( r) t* w+ z,|- ~.5=E%L,S3Y9`@fFmMvWڦ㭉kWN1 ,+***)(''&&% $ # # " " !                                   ! $ &(*,.0368;>@CFHKN Q T V Y \" _" b$ d$ g& j& m( p) r* u+ w, z,|- /5=D$J*Q1X8^>Njsᾰ䤘\G>**)(''&%$ $ # " ! !                                   " # &(*,.0358:=@BEGJM P S U W Z! ]" `# c$ e% h& k' m( p) r* u+ w, z-|-.5<C#I)nTҫјZG?''%% $ # # " ! !                                 ! # %'*+.02579<?ADFILO Q T V Y \! ^" a# c$ f% h& k' m( p) r* u+ w, z,|-~.3^DŜכYG@$ # # " !                                " # %()+-02479<>ACFHKM P S T W Z! \" _# a# d$ f% h& k' m( p) r) t+ w+ y, S:ؠbRL*                                ! # %')+-/1368;=?BDGILN Q S U W Z! \" _# a# d$ f% h& k' m( o) s-aK뵮wkf<,%                           ! # $')*,.1358:<>ACEHJLO Q S U X Z! ]" _" a# d$ f% h& z>&ucʰɕZNI'                      ! " $&(*,.02469;=@BDFHJM O R T U X Z! \" ^" e)ZH|TIE%                    ! " $ &(*+-/13579<>@BDFIKM O Q T U \'~Q@t˷¿ULH'                   " # %')*,.02468:<>@BDFHKM X)|UF~ͽʝjca;2/                  ! # $ &(*+-/12468:<>@BDa;,j^佻hda=74                " # %'(*+-/12568> _@3g]ǻŝxutROM.*(             " $ %'(*+-3 K1&kTLwp¾ĪgedB@?'%$            ! " %>*!XD=xha~ήzyy_^^FEE000       ! /"B5/UHCl`[yuŶzzzkkkYYYLLLFFF?>>655.--)((#!!"#$ "&" .)'3.+=85E@=LFDTNK_YWpji{yaranym-1.1.0/contrib/0000775000175000017500000000000013454637621012641 5ustar joyjoyaranym-1.1.0/contrib/icon-48.png0000664000175000017500000001226613454637621014537 0ustar joyjoyPNG  IHDR00WtEXtSoftwareAdobe ImageReadyqe<XIDATxڬZ չ=]t>0lYѸAC\a70hD .(F[ @dPewhpCJMWW/L}d*t-S1(Ou@SГ>^bÑJ u'orìdqF֬VWmv0; wfߗYLS/ Ɲ xveX oz6]CT_2y](JƥPV-wnF3z@qH LQ${XSZhDȓgF5OG6bo"iV,kҌ:-@֎Pxŕo/=}Uu@bx$er#~cv#iOXܽ`2Zۘ3ayȥ*}O( ?DZԤjD]q^j%g( j"3F-tZ*e%1M6K)_V~n3fL,D^ ?ؑp^ "tvFg6ߝw8O,BR  o>A>?8޼4w'C#7dy31UFSЛLpx\8vp:?"[~U܆~=fנO>67ԟӕ86g_|˫taA}r/ #- ., w.ǗҾh?7K(eAcap80r5HēR$uxs!kG/zxpHW7ޅ 2(|'&MF}R'hyh-HIJ1ldxr<cprkU|igf;X:Pqmw pR@6~W@*êXe#0pP,jyޖ[n<*gQ Z f|Bwp8R}y}pxPs[a"+Y9iIrqzT(e+F[lڸY7w1; 4{ _7 v=% Zp6hU9O;Ǩ]UA`b A†c $!I &< "uعi7e_x⅕+Fs )244VJӍe×%lr&8ɶ~C&EJ HPXy%@4ɂL&lkCCaY~?"n-q<\xc BDd,&niuz6ef,7J_M1x"gq0iZÁv"JXY a9DE`tQ{h'rr$eMqYqHj+D!.JvDKϹ+8Sw.| .Rs OТAzPΥsYݓ"5#,-ſ|ӁW͔>ƧHs&?ocHeaa$}=X/ѥ -?@ a=Vg}*!Ql_mD66&#~U^XYR y,ᰴt*Bo銁V #R>1 mU\CVg3a$uU؆01;aF(ty =eIkɢ$p]Xh>3nLf/EonTҎ! aêg\r&7~}-)^s&V.@2◉-r ]gsc . "t-ޚ&X\C7̤z+Cc&`訉p")k@0|Πǘa }z (G 4Ba硸l0Zx}0É0]խn4^$.4ǼB8 lNO{XqJ ܽ%B?^>:@.z8kO˛5gx6}R6Z=gRxG |PcOJA\*GAWVmyz®)O&@<48L*X{Pm¤A!6x=?<`jNYuU; Op/kV$Z3C<inE h,h&-gIr$|lZ8)p[a9M0} q<LS_H IbZ!<hm%%I,$DR̶]4ۺdљ jc؍?bB^%JLnh8Kvh: ;\<}D^CY7ȧX,m fruIbhly#SjBJΠ CAB̸u\>t3:ï$&փ3_KȓSC H9%bhwaeOn1-i6MGȏZ j~A)v-vGuQH;Z;($yFj+ g]Gh'E69!¡Jb^6|"Uy)&dW 瀯p(-G9,e8<>I?)&{AdDiM7<;}rJ 5K۴a$ů.8 f̣EXčL|_x VDjן KKJ!ctn]ЈcswK>k7z'\m^ ;a1^blZ$$r"e XҰ^ FG2x]k9 ];xv @D,L'2^X'&#CPKZ%(&T}`~*#@D-եOU㈷JmTaI| 6xe(w`ۖ @ۭza0؟})sїH-o =C'hyGVνi~Nu,j>[ObUlެ9jߏ'H Z*C.6lJLZaE!8*^F}Jq-ԯ U<(Y!:8z2p+acdǗ)BpS &cW YL@?CH$l, o͏Bc,6f\r_t˹#9LsAT{731dwg4r@ǰ H+V|$?)ZX+,:b,Z]|t /=0ck0oޑzdhutBr\xZHJnhndc{G>$0IdP>Dp,&chC:|dw>rgГCO jMW " 0eY, ~ 96ԚS,K7@y9^JnX]cOk"q?:&-?f;٩7<\|YlWE|tD1yx!|,ɯJÐQVĘ8yZ/2I* e7fzO;Xsw~XOސ7 ;oE_? k W$v8=yTHDz!@pcYp)֬|ԋ.wzw6B T띡|b?kt|VW@]7F,j)xWknFn6=N[xCߣT3d~+5ޅ62$u5\H lc~"gdr4-hw75<3n|C{y'5kǿV@k9:˦^y O9hi MMHDn3%zʦsQX\\*c|~MWrUGO=\r2Oz<. *wV7i0KbJ$cKN>6t%I?Pcܗq{sr2?Br.bT t/F wӫGaٿ@Qu(1.N P~Q'^۸_,IENDB`aranym-1.1.0/contrib/icon-32.png0000664000175000017500000000572713454637621014534 0ustar joyjoyPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe< yIDATxڌW xT=ol,I&6IQYLV* AkU)~( h4,"ŐYJȞ$373{P|˽94qÁd` x`3ΎqZF35& 2"Fܐi.;'&>\ּٜ$B(h3F%dnraڽ YЇ~`^md_(b6xH-Z!`7m)x_ .Z7\;cFeg.PiuwAph'|[fVƺJ{&e=7Qy4>epqDۮ73 b",h|֎&0NNkh!8^ FG%(\-pw >AnU>G&bn{zd}wb-7cp '_%@"ãL)`)BeHkomuy-pGn[RKލiu8Wt}nsrRt$Lk4c~B^,6!e^Fz|$L&zveܣYc,#.q 3odG+L4A(w$(MҼ<%f-yB6v06eziaސ& *iXƤؓ/7` TF!bjtJb{3&2}Z7Kt4$PN ֈ2=J1S` c"|fK7BS M 3] }L|t赶1tB>&,@d09v}:b[T1ζ* ?!I+Dg@p1;vBSoԠxT 2Bw 8b3N Njqؿhys`^A:Gk$>*zbSX4 ng#*s8ZkJP~r篆5V*g4T 2T_bLgn;JW)s;0QdD֠ %u@Mep1mJ8tBك qrPӏϡ~A6jsBT96F7T f=t&RX"rBeq|Mp N4Wخ7HCd] & ɩ)Qzzl ľ 3z^^G: v[j1 )Y1yOይ} O8"id86) ASO:E'O H .qn'n+*8E:n'`DB$q۷c096/E@`ʁf\CAuvs;7%5ODwoՎS1*!hmPV 1qN![&F܃R&t;H)LD.8$rXͭvb7z GCA8m0ݑB( ܄!1JJGo<ny8a$*ND/ OĀ!Y8:"-gvO\$\`1% Hf\@^p 4!8yp'\2tpu6 n$b05W >$%QsaEj3ذ(gPj`yBuO==LR֟ez~Y^3VR۽6wQIFa!q8FTxYS)& 834Q_l5yĶ{{L!$47pD>+;X^UX3T.NX7qaҼ8c=ˊ ˡ&zZzj.!6-~h:sŷ( z'BFCepb,v#=u68Pk5Aٮ jp ܞy J=Me(CӅ]f>)j5z"jJA_+c&  $&2JeF,&a~nƪk^ D)Ʀh7e\O8C&1a2ݺф:3W19^mfL%e;Snc뎰%!bb7 HMyAØ>}Sd;EZ'&c[f*F"1}fsɳ F͜;/=$1JE 5qB<ϓhȄyZhDOprJU{gӷV*=B/oɋ62{Tò53\R8]Ԃb5_\6) dM-P'mNpK[ I ==I.s)Nn X-Sp1r7K5Ux%{ݟ\ %9 CsAu$:vq0P3s~iu ,aOlScT\x z]Dtb%ygBpp8BB᫓(Ο>ڿ4BR/[HY FbZtҩND0 Z_-1CGk*.޾_?'0N'ԊۑNǘ^N F]H '_0 F IENDB`aranym-1.1.0/contrib/aranym.desktop0000664000175000017500000000026513454637621015526 0ustar joyjoy[Desktop Entry] Encoding=UTF-8 Name=ARAnyM Comment=Virtual Machine for Atari 32-bit applications Exec=aranym Icon=aranym Terminal=false Type=Application Categories=System;Emulator; aranym-1.1.0/contrib/aranym-mmu.desktop0000664000175000017500000000031013454637621016311 0ustar joyjoy[Desktop Entry] Encoding=UTF-8 Name=ARAnyM MMU Comment=Virtual Machine with MMU for FreeMiNT and Linux-m68k Exec=aranym-mmu Icon=aranym-mmu Terminal=false Type=Application Categories=System;Emulator; aranym-1.1.0/contrib/aranym-jit.desktop0000664000175000017500000000030713454637621016307 0ustar joyjoy[Desktop Entry] Encoding=UTF-8 Name=ARAnyM JIT Comment=Virtual Machine with JIT CPU compiler for max speed Exec=aranym-jit Icon=aranym-jit Terminal=false Type=Application Categories=System;Emulator; aranym-1.1.0/configure.ac0000664000175000017500000022617513454637621013504 0ustar joyjoydnl Process this file with autoconf to produce a configure script. dnl Written in 1999 by Christian Bauer et al. dnl Adapted for ARAnyM by Milan Jurik dnl Adapted to automake by Thorsten Otto m4_define(ARANYM_VERSION, m4_esyscmd([sed -n -e 's/#define.*VER_MAJOR.*\([0-9][0-9]*\).*$/\1./p s/#define.*VER_MINOR.*\([0-9][0.9]*\).*$/\1./p s/#define.*VER_MICRO.*\([0-9][0-9]*\).*$/\1/p' src/include/version.h | tr -d '\n'])) AC_INIT(aranym, ARANYM_VERSION, [aranym@googlegroups.com],,[https://github.com/aranym/aranym]) AC_PREREQ(2.52) AC_CONFIG_HEADER(config.h) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([.]) AC_CONFIG_SRCDIR([src/hostscreen.cpp]) dnl Define list of provided Native Features PROVIDES_NF="audio bootstrap xhdi" dnl Canonical system information. AC_CANONICAL_HOST AM_INIT_AUTOMAKE(check-news m4_esyscmd([case `automake --version | head -n 1` in *1.10*);; *) echo subdir-objects color-tests;; esac])) AM_MAINTAINER_MODE([disable]) dnl Silent rules # Support silent build rules, requires at least automake-1.11. Disable # by either passing --disable-silent-rules to configure or passing V=1 # to make m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) AH_TOP([ #ifndef __ARANYM_CONFIG_H__ #define __ARANYM_CONFIG_H__ #if defined(__linux__) && !defined(__ANDROID__) #include "linux/libcwrap.h" #endif #ifndef _FORTIFY_SOURCE # define _FORTIFY_SOURCE 2 #endif ]) dnl Options. AC_ARG_ENABLE(nat-debug, [AC_HELP_STRING([--enable-nat-debug], [enable native debugger support (default=yes)])], [WANT_NATDEBUG=$enableval], [WANT_NATDEBUG=yes]) AC_ARG_ENABLE(full-debug, [AC_HELP_STRING([--enable-full-debug], [enable full debug outputs (default=no)])], [WANT_FULLDEBUG=$enableval], [WANT_FULLDEBUG=no]) AC_ARG_ENABLE(debug, [AC_HELP_STRING([--enable-debug=which], [specify wether to use internal debugger (default=no)])], [ case "$enableval" in default | yes | uae | ndebug) USE_DEBUGGER=yes;; no) USE_DEBUGGER="no";; *) AC_MSG_ERROR([--enable-debug takes only one of the following values: default, uae, ndebug, no]);; esac ], [USE_DEBUGGER=no ]) AC_ARG_ENABLE(fullhistory, [AC_HELP_STRING([--enable-fullhistory], [enable full history for debugger (default=no)])], [WANT_HISTORY=$enableval], [WANT_HISTORY=no]) AC_ARG_ENABLE(flightrecorder, [AC_HELP_STRING([--enable-flightrecorder], [enable CPU flight recorder (default=no)])], [WANT_FLIGHTRECORDER=$enableval], [WANT_FLIGHTRECORDER=no]) AC_ARG_ENABLE(fullmmu, [AC_HELP_STRING([--enable-fullmmu], [enable full 68040 MMU (default=no)])], [WANT_MMU=$enableval], [WANT_MMU=no]) AC_ARG_ENABLE(atc, [AC_HELP_STRING([--enable-atc=ATC], [select type of ATC for MMU (default=full)])], [ case "$enableval" in full) ATC_TYPE="full";; small) ATC_type="small";; no) ATC_TYPE="no";; *) AC_MSG_ERROR([--enable-atc takes only one of the following values: full, small, no]);; esac ], [ATC_TYPE=full]) AC_ARG_ENABLE(realstop, [AC_HELP_STRING([--enable-realstop], [enable real STOP instruction (default=yes)])], [WANT_REALSTOP=$enableval], [WANT_REALSTOP=yes]) AC_ARG_ENABLE(dsp, [AC_HELP_STRING([--enable-dsp], [enable DSP 56001 (default=yes)])], [WANT_DSP=$enableval], [WANT_DSP=yes]) AC_ARG_ENABLE(dsp-disasm, [AC_HELP_STRING([--enable-dsp-disasm], [enable DSP 56001 disassembler (default=no)])], [WANT_DSP_DISASM=$enableval], [WANT_DSP_DISASM=no]) AC_ARG_ENABLE(protect2k, [AC_HELP_STRING([--enable-protect2k], [enable first 2kB of RAM Super protection (default=yes)])], [WANT_PROTECT2K=$enableval], [WANT_PROTECT2K=yes]) AC_ARG_ENABLE(fixedfastram, [AC_HELP_STRING([--enable-fixedfastram=X], [use fixed size FastRAM of X MB (default=no)])], [WANT_FIXEDFASTRAM=$enableval], [WANT_FIXEDFASTRAM=no]) AC_ARG_ENABLE(fixedvideoram, [AC_HELP_STRING([--enable-fixedvideoram], [use fixed start of VideoRAM (default=no)])], [WANT_FIXEDVIDEORAM=$enableval], [WANT_FIXEDVIDEORAM=no]) AC_ARG_ENABLE(blitmemmove, [AC_HELP_STRING([--enable-blitmemmove], [enable Blitter memmove rout (default=no)])], [WANT_BLITMEMMOVE=$enableval], [WANT_BLITMEMMOVE=no]) AC_ARG_ENABLE(blitsdlblit, [AC_HELP_STRING([--enable-blitsdlblit], [enable SDL blitting routine EXPERIMENTAL UNSUPPORTED BUGGY (default=no)])], [WANT_BLITSDLBLIT=$enableval], [WANT_BLITSDLBLIT=no]) AC_ARG_ENABLE(hostfs, [AC_HELP_STRING([--enable-hostfs], [enable hostfs support (default=yes)])], [WANT_HOSTFS=$enableval], [WANT_HOSTFS=yes]) AC_ARG_ENABLE(ctrlkey, [AC_HELP_STRING([--enable-ctrlkey=WHICH], [specify which key to use for control key emulation (default=both)])], [ case "$enableval" in dnl default is both ctrl) CONTROL_KEY="ctrl";; meta) CONTROL_KEY="meta";; both) CONTROL_KEY="both";; *) AC_MSG_ERROR([--enable-ctrlkey takes only one of the following values: ctrl, meta, both]);; esac ], [ CONTROL_KEY="both" ]) AC_ARG_ENABLE(gui, [AC_HELP_STRING([--enable-gui], [enable GUI (default=yes)])], [WANT_SDLGUI=$enableval], [WANT_SDLGUI=yes]) AC_ARG_ENABLE(opengl, [AC_HELP_STRING([--enable-opengl], [enable OpenGL (default=yes)])], [WANT_OPENGL=$enableval], [WANT_OPENGL=yes]) AC_ARG_WITH(mesa-headers, [AC_HELP_STRING([--with-mesa-headers], [Path to Mesa header files])], [WITH_MESAINC=$withval], [WITH_MESAINC=no]) AC_ARG_ENABLE(nfpci, [AC_HELP_STRING([--enable-nfpci], [enable NatFeat PCI (default=no)])], [WANT_NFPCI=$enableval], [WANT_NFPCI=no]) AC_ARG_ENABLE(usbhost, [AC_HELP_STRING([--enable-usbhost], [enable NatFeat USB (default=no)])], [WANT_USBHOST=$enableval], [WANT_USBHOST=no]) AC_ARG_ENABLE(nfosmesa, [AC_HELP_STRING([--enable-nfosmesa], [enable NatFeat OSMesa (default=no)])], [WANT_NFOSMESA=$enableval], [WANT_NFOSMESA=no]) AC_ARG_ENABLE(nfjpeg, [AC_HELP_STRING([--enable-nfjpeg], [enable NatFeat JPEG (default=yes)])], [WANT_NFJPEG=$enableval], [WANT_NFJPEG=yes]) AC_ARG_ENABLE(nfclipbrd, [AC_HELP_STRING([--enable-nfclipbrd], [enable NatFeat Clipboard (default=yes)])], [WANT_NFCLIPBRD=$enableval], [WANT_NFCLIPBRD=yes]) AC_ARG_ENABLE(nfvdi, [AC_HELP_STRING([--enable-nfvdi], [enable NatFeat VDI (default=yes)])], [WANT_NFVDI=$enableval], [WANT_NFVDI=yes]) AC_ARG_ENABLE(scsi, [AC_HELP_STRING([--enable-nfscsi], [enable NatFeat SCSI (default=yes)])], [WANT_NFSCSI=$enableval], [WANT_NFSCSI=yes]) AC_ARG_ENABLE(nfexec, [AC_HELP_STRING([--enable-nfexec], [enable NatFeat host file execution (default=yes)])], [WANT_NFEXEC=$enableval], [WANT_NFEXEC=yes]) AC_ARG_ENABLE(ata-cdrom, [AC_HELP_STRING([--enable-ata-cdrom], [enable ATA CD-ROM emulation (default=yes)])], [WANT_CDROM=$enableval], [WANT_CDROM=yes]) AC_ARG_ENABLE(epslimiter, [AC_HELP_STRING([--enable-epslimiter], [enable Exception per second limiter (default=no)])], [WANT_EPSLIMITER=$enableval], [WANT_EPSLIMITER=no]) AC_ARG_ENABLE(lilo, [AC_HELP_STRING([--enable-lilo], [enable Linux-m68k loader (default=no)])], WANT_LILO="$enableval", WANT_LILO="no") AC_ARG_ENABLE(rtctimer, [AC_HELP_STRING([--enable-rtctimer], [enable Linux /dev/rtc as source timer (default=yes)])], WANT_RTCTIMER="$enableval", WANT_RTCTIMER="yes") AC_ARG_ENABLE(parallelx86, [AC_HELP_STRING([--enable-parallelx86], [enable Linux X86 hw access for parallel port (default=no)])], [WANT_PARALLELX86=$enableval], [WANT_PARALLELX86=no]) AC_ARG_ENABLE(parport, [AC_HELP_STRING([--enable-parport], [enable Linux /dev/parport access for parallel port (default=yes)])], [WANT_PARALLELPARPORT=$enableval], [WANT_PARALLELPARPORT=yes]) AC_ARG_ENABLE(serialport, [AC_HELP_STRING([--enable-serialport], [enable Unix /dev/ttySn serial port support (default=yes)])], [WANT_UNIXSERIALPORT=$enableval], [WANT_UNIXSERIALPORT=yes]) AC_ARG_WITH(fink, [AC_HELP_STRING([--with-fink], [Use Fink suite to build Aranym on MacOSX (default=no)])], [WITH_FINK=$withval], [WITH_FINK=no]) AC_ARG_WITH(classicconfig, [AC_HELP_STRING([--with-classicconfig], [Use Classic config names on MacOSX (default=no)])], [WITH_CLASSIC_CONFIG=$withval], [WITH_CLASSIC_CONFIG=no]) dnl FPU emulation core. if [[ "x$WANT_MMU" = "xyes" ]]; then SUGGESTED_AUTO_FPE_CORE_TEST_ORDER="mpfr ieee uae" else SUGGESTED_AUTO_FPE_CORE_TEST_ORDER="ieee uae" fi AC_ARG_ENABLE(fpe, [AC_HELP_STRING([--enable-fpe=FPE], [specify which fpu emulator to use (default=auto)])], [ case "$enableval" in dnl default is always ieee, if architecture has this fp format auto) FPE_CORE_TEST_ORDER=$SUGGESTED_AUTO_FPE_CORE_TEST_ORDER;; ieee) FPE_CORE_TEST_ORDER="ieee";; uae) FPE_CORE_TEST_ORDER="uae";; x86) FPE_CORE_TEST_ORDER="x86";; mpfr) FPE_CORE_TEST_ORDER="mpfr";; *) AC_MSG_ERROR([--enable-fpe takes only one of the following values: auto, uae, x86, ieee, mpfr]);; esac ], [ FPE_CORE_TEST_ORDER=$SUGGESTED_AUTO_FPE_CORE_TEST_ORDER ]) dnl Addressing modes. AC_ARG_ENABLE(addressing, [AC_HELP_STRING([--enable-addressing=AM], [specify the addressing mode to use (default=fastest)])], [ case "$enableval" in direct) ADDRESSING_TEST_ORDER="direct";; normal) ADDRESSING_TEST_ORDER="normal";; fixed) ADDRESSING_TEST_ORDER="fixed";; *) AC_MSG_ERROR([--enable-addressing takes only one of the following values: direct, fixed, normal]);; esac ], [ ADDRESSING_TEST_ORDER="direct normal" ]) AC_ARG_ENABLE(addr-check, [AC_HELP_STRING([--enable-addr-check=AM], [specify the memory check to use (default=page)])], [ case "$enableval" in no) MEMORY_CHECK="no";; full) MEMORY_CHECK="full";; page) MEMORY_CHECK="page";; hwsp) MEMORY_CHECK="hwsp";; pagehwsp) MEMORY_CHECK="pagehwsp";; sseg) MEMORY_CHECK="sseg";; *) AC_MSG_ERROR([--enable-addr-check takes only one of the following values: no, full, page, hwsp, pagehwsp, sseg]);; esac ], [ MEMORY_CHECK="page" ]) dnl Experimental hacks around spcflags handling. AC_ARG_ENABLE(spcflags-excl, [AC_HELP_STRING([--enable-spcflags-excl], [enable exclusive spcflags handling (default=no)])], [WANT_SPCFLAGS_EXCL=$enableval], [WANT_SPCFLAGS_EXCL=no]) dnl JIT compiler options. AC_ARG_ENABLE(jit-compiler, [AC_HELP_STRING([--enable-jit-compiler], [enable JIT compiler (default=no)])], [WANT_JIT=$enableval], [WANT_JIT=no]) AC_ARG_ENABLE(jit2, [AC_HELP_STRING([--enable-jit2], [enable JIT (v2) compiler (experimental/ARM only) (default=no)])], [WANT_JIT2=$enableval], [WANT_JIT2=no]) AC_ARG_ENABLE(jit-fpu, [AC_HELP_STRING([--enable-jit-fpu], [enable JIT compiler for FPU instructions (default=no)])], [WANT_JIT_FPU=$enableval], [WANT_JIT_FPU=no]) AC_ARG_ENABLE(jit-debug, [AC_HELP_STRING([--enable-jit-debug], [activate native code disassemblers (default=no)])], [WANT_JIT_DEBUG=$enableval], [WANT_JIT_DEBUG=no]) AC_ARG_ENABLE(ethernet, [AC_HELP_STRING([--enable-ethernet], [enable ethernet card emulation (default=yes)])], [WANT_ETHERNET=$enableval], [WANT_ETHERNET=yes]) AC_ARG_ENABLE(bpf-ethernet, [AC_HELP_STRING([--enable-bpf-ethernet], [enable ethernet card emulation using BPF (default=no)])], [WANT_BFP_ETHERNET=$enableval], [WANT_BFP_ETHERNET=no]) AC_ARG_ENABLE(cxx-exceptions, [AC_HELP_STRING([--enable-cxx-exceptions], [enable the use of C++ try/catch instead of setjmp/longjmp (default=yes)])], [WANT_CXX_EXCEPTIONS=$enableval], [WANT_CXX_EXCEPTIONS=yes]) dnl Host OS type (host is build if not cross-compiling). ANDROID_OS=no case "$host_os" in *android*) OS_TYPE=linux ANDROID_OS=yes LIBS="$LIBS -lgnustl_static -llog" ;; linux*) OS_TYPE=linux;; openbsd*) OS_TYPE=openbsd CFLAGS="$CFLAGS -I/usr/local/include" LIBS="$LIBS -L/usr/local/lib" ;; netbsd*) OS_TYPE=netbsd;; freebsd*|kfreebsd*-gnu) OS_TYPE=freebsd;; solaris*) OS_TYPE=solaris;; darwin*) OS_TYPE=darwin;; cygwin*) OS_TYPE=cygwin;; irix*) OS_TYPE=irix;; mint*) OS_TYPE=mint;; beos*|haiku*) OS_TYPE=beos;; mingw*) OS_TYPE=mingw;; *) OS_TYPE=unknown;; esac AM_CONDITIONAL([OS_TYPE_linux], test "$OS_TYPE" = "linux") AM_CONDITIONAL([OS_TYPE_openbsd], test "$OS_TYPE" = "openbsd") AM_CONDITIONAL([OS_TYPE_netbsd], test "$OS_TYPE" = "netbsd") AM_CONDITIONAL([OS_TYPE_freebsd], test "$OS_TYPE" = "freebsd") AM_CONDITIONAL([OS_TYPE_solaris], test "$OS_TYPE" = "solaris") AM_CONDITIONAL([OS_TYPE_darwin], test "$OS_TYPE" = "darwin") AM_CONDITIONAL([OS_TYPE_cygwin], test "$OS_TYPE" = "cygwin") AM_CONDITIONAL([OS_TYPE_irix], test "$OS_TYPE" = "irix") AM_CONDITIONAL([OS_TYPE_mint], test "$OS_TYPE" = "mint") AM_CONDITIONAL([OS_TYPE_beos], test "$OS_TYPE" = "beos") AM_CONDITIONAL([OS_TYPE_mingw], test "$OS_TYPE" = "mingw") AM_CONDITIONAL([OS_TYPE_unknown], test "$OS_TYPE" = "unknown") AM_CONDITIONAL([ANDROID_OS], test "$ANDROID_OS" = "yes") AM_CONDITIONAL([WITH_FINK], test "$WITH_FINK" = "yes") if test "$OS_TYPE" = "unknown"; then OS_TYPE=`echo $host_os | sed -e 's/-/_/g' | sed -e 's/\./_/g'` fi # # provide some defaults on cygwin, # where we use the MinGW version of the SDL library, # to simplify standard configuration. # But only if the user did not override it. # if test "$OS_TYPE" = "cygwin"; then if test "$prefix" = NONE; then prefix=/usr fi fi DEFINES="$DEFINES -DOS_$OS_TYPE" AC_DEFINE_UNQUOTED([OS_TYPE], "$OS_TYPE", [Define OS type]) if test "$OS_TYPE" = "darwin"; then # Make sure MPFR (and other 3rd party libs installed by MacPorts) are found # Note that the order of these flags may be different # in the Xcode project, which is important atleast for the # SDL framework because we want to use the headers from # the official build rather than the ones from MacPorts, # which are only suitable for a single target architecture LDFLAGS="$LDFLAGS -L/opt/local/lib" CPPFLAGS="$CPPFLAGS -I/opt/local/include" # SOURCE_ROOT is set when running from Xcode project if test "$XCODE_VERSION_ACTUAL" != "" -a "$SOURCE_ROOT" != ""; then LDFLAGS="$LDFLAGS -L$SOURCE_ROOT/external/lib" CPPFLAGS="$CPPFLAGS -I$SOURCE_ROOT/external/include" fi fi dnl Target CPU type. ARCHFLAGS= HAVE_I386=false HAVE_ARM=false HAVE_SPARC=false HAVE_POWERPC=false HAVE_X86_64=false case "$host_cpu" in i386* | i486* | i586* | i686* | i786* ) CPU_TYPE=i386 HAVE_I386=true if [[ "x$OS_TYPE" = "xdarwin" ]]; then ARCHFLAGS="-arch i386" if [[ "x$DEVELOPER_SDK_DIR" = "x" ]]; then DEVELOPER_SDK_DIR=/Developer/SDKs fi if [[ ! -d "$DEVELOPER_SDK_DIR" ]]; then AC_MSG_ERROR([Cannot find SDKs directory at $DEVELOPER_SDK_DIR]) fi case "$host_os" in darwin8* | darwin9* ) ISYSROOT="-mmacosx-version-min=10.4 -isysroot $DEVELOPER_SDK_DIR/MacOSX10.4u.sdk";; darwin10* ) ISYSROOT="-mmacosx-version-min=10.4 -isysroot $DEVELOPER_SDK_DIR/MacOSX10.5.sdk";; darwin11* | darwin12* ) ISYSROOT="-mmacosx-version-min=10.5";; darwin13* ) ISYSROOT="-mmacosx-version-min=10.7";; darwin14* ) ISYSROOT="-mmacosx-version-min=10.10";; darwin15* ) ISYSROOT="-mmacosx-version-min=10.10";; darwin16* ) ISYSROOT="-mmacosx-version-min=10.10";; darwin17* ) ISYSROOT="-mmacosx-version-min=10.13";; *) AC_MSG_ERROR([Sorry, unknown Darwin version: $host_os]) ;; esac dnl Add the ARCHFLAGS here to let configure check for the target and not host capabilities. CPPFLAGS="$CPPFLAGS $ISYSROOT $ARCHFLAGS" LDFLAGS="$LDFLAGS $ISYSROOT $ARCHFLAGS" fi ;; sparc* ) CPU_TYPE=sparc HAVE_SPARC=true;; arm* ) CPU_TYPE=arm HAVE_ARM=true CFLAGS="$CFLAGS -ffast-math" CXXFLAGS="$CXXFLAGS -ffast-math" ;; powerpc* ) CPU_TYPE=powerpc HAVE_POWERPC=true if [[ "x$OS_TYPE" = "xdarwin" ]]; then ARCHFLAGS="-arch ppc" ISYSROOT="-mmacosx-version-min=10.3" dnl Add the ARCHFLAGS here to let configure check for the target and not host capabilities. CPPFLAGS="$CPPFLAGS $ISYSROOT $ARCHFLAGS" LDFLAGS="$LDFLAGS $ISYSROOT $ARCHFLAGS" fi ;; x86_64* ) CPU_TYPE=x86_64 HAVE_X86_64=true;; *) CPU_TYPE=unknown;; esac AM_CONDITIONAL([CPU_TYPE_x86], test "$CPU_TYPE" = "i386") AM_CONDITIONAL([CPU_TYPE_x86_64], test "$CPU_TYPE" = "x86_64") AM_CONDITIONAL([CPU_TYPE_sparc], test "$CPU_TYPE" = "sparc") AM_CONDITIONAL([CPU_TYPE_arm], test "$CPU_TYPE" = "arm") AM_CONDITIONAL([CPU_TYPE_powerpc], test "$CPU_TYPE" = "powerpc") AM_CONDITIONAL([CPU_TYPE_unknown], test "$CPU_TYPE" = "unknown") if test "$CPU_TYPE" = "unknown"; then CPU_TYPE=`echo $host_cpu | sed -e 's/-/_/g'` fi DEFINES="$DEFINES -DCPU_$CPU_TYPE" AC_DEFINE_UNQUOTED([CPU_TYPE], "$CPU_TYPE", [Define CPU type]) dnl Checks for programs. AC_PROG_CC AC_PROG_CC_C_O AC_PROG_OBJC AC_PROG_CPP AC_PROG_CXX AC_PROG_CXXCPP AX_PROG_CC_FOR_BUILD AX_PROG_CXX_FOR_BUILD AC_PROG_MAKE_SET AC_PROG_INSTALL AC_PROG_MKDIR_P AC_PROG_RANLIB AC_PATH_PROG(PERL, perl) AC_CHECK_TOOLS(WINDRES, [windres], :) PKG_PROG_PKG_CONFIG m4_ifndef([PKG_CHECK_MODULES], [AC_DEFUN([PKG_CHECK_MODULES], [true])]) dnl Checks for header files. AC_HEADER_STDC AC_HEADER_DIRENT AC_CHECK_HEADERS(unistd.h fcntl.h sys/mman.h mach/mach.h sys/ioctl.h) AC_CHECK_HEADERS(getopt.h) AC_CHECK_HEADERS(termios.h termio.h alloca.h sys/statfs.h sys/statvfs.h) AC_CHECK_HEADERS(sys/types.h sys/stat.h sys/vfs.h utime.h sys/param.h) AC_CHECK_HEADERS(sys/mount.h types.h stat.h ext2fs/ext2_fs.h) AC_CHECK_HEADERS(sys/socket.h) AC_CHECK_HEADERS(linux/if.h linux/if_tun.h net/if.h net/if_tun.h, [], [], [ #ifdef HAVE_SYS_SOCKET_H #include #endif ]) AC_CHECK_HEADERS(net/bpf.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_BIGENDIAN AC_C_CONST AC_C_INLINE AC_C_VOLATILE AC_CHECK_SIZEOF(short, 2) AC_CHECK_SIZEOF(int, 4) AC_CHECK_SIZEOF(long, 4) AC_CHECK_SIZEOF(long long, 8) AC_CHECK_SIZEOF(float, 4) AC_CHECK_SIZEOF(double, 8) AC_CHECK_SIZEOF(long double, 12) AC_CHECK_SIZEOF(void *, 4) AC_TYPE_OFF_T AC_CHECK_TYPE(loff_t, off_t) AC_TYPE_SIZE_T AC_CHECK_TYPE(ssize_t, size_t) AC_TYPE_SIGNAL AC_HEADER_TIME AC_STRUCT_TM AC_SYS_LARGEFILE gl_TM_GMTOFF gl_STAT_TIME AC_CXX_BOOL dnl Checks for libraries AC_CHECK_LIB(m, sin, [LIBS="$LIBS -lm"]) dnl Checks for library functions. AC_CHECK_FUNCS(strdup) AC_CHECK_FUNCS(sigaction signal sigsetjmp) AC_CHECK_FUNCS(mmap mprotect munmap) AC_CHECK_FUNCS(vm_allocate vm_deallocate vm_protect sbrk) AC_CHECK_FUNCS(strchr memcpy bcopy) AC_CHECK_FUNCS(usleep gettimeofday) AC_CHECK_FUNCS(fseeko fsync futimes futimens link readlink symlink lstat truncate pathconf) AC_CHECK_FUNCS(canonicalize_file_name realpath) AC_CACHE_CHECK([whether sigsetjmp is supported], ac_cv_have_sigsetjmp, [ AC_TRY_LINK([ #include #include ], [ sigjmp_buf b; sigsetjmp(b, 1); siglongjmp(b, 1); ], ac_cv_have_sigsetjmp=yes, ac_cv_have_sigsetjmp=no ) ]) if test "$ac_cv_have_sigsetjmp" = "yes"; then AC_DEFINE([HAVE_SIGSETJMP], 1) fi dnl Darwin seems to define mach_task_self() instead of task_self(). AC_CHECK_FUNCS(mach_task_self task_self) AC_DEFINE([DIRSEPARATOR], "/", [Default directory separator]) AH_TEMPLATE([ARANYMHOME], [Default ARAnyM directory]) AH_TEMPLATE([HAVE_O_FSYNC], [Define if you want to use FreeBSD's imitation of O_SYNC]) AH_TEMPLATE([ARANYMCONFIG], [Default ARAnyM config file]) AH_TEMPLATE([ARANYMNVRAM], [Default ARAnyM NVRAM file]) AH_TEMPLATE([ARANYMKEYMAP], [Default ARAnyM keymap]) AH_TEMPLATE([HAVE_LIBUDEV], [Define if you have and libraries]) if test "$OS_TYPE" = "linux"; then AC_CHECK_HEADERS([libudev.h]) if test "$ac_cv_header_libudev_h" = yes; then AC_CHECK_LIB(udev, udev_monitor_new_from_netlink, [LIBS="$LIBS -ludev"]) if test $ac_cv_lib_udev_udev_monitor_new_from_netlink = yes; then AC_DEFINE([HAVE_LIBUDEV]) fi fi fi case "$host_os" in linux*) ;; cygwin*|mingw*) AC_DEFINE([ARANYMHOME], "aranym") ;; solaris*) AC_DEFINE([_XOPEN_SOURCE], 500, [Define if needed]) AC_DEFINE([_POSIX_C_SOURCE], 199506L, [Define if needed]) DEFINES="$DEFINES -DBSD_COMP -D__EXTENSIONS__" ;; freebsd*|kfreebsd*-gnu) AC_DEFINE([HAVE_O_FSYNC], 1) ;; darwin*) AC_DEFINE([HAVE_O_FSYNC], 1) if test "x$WITH_FINK" = "xyes"; then AC_DEFINE([ARANYMHOME], "aranym") else AC_DEFINE([ARANYMHOME], "ARAnyM") if test "x$WITH_CLASSIC_CONFIG" = "xyes"; then echo "Using classic config" AC_DEFINE([ARANYMCONFIG], "config") AC_DEFINE([ARANYMNVRAM], "nvram") AC_DEFINE([ARANYMKEYMAP], "keymap") else echo "Using preference files" AC_DEFINE([ARANYMCONFIG], "org.aranym.amcfg") AC_DEFINE([ARANYMNVRAM], "org.aranym.nvram") AC_DEFINE([ARANYMKEYMAP], "org.aranym.keymap") fi BUNDLE_FRAMEWORKS= dnl Empty list of frameworks to bundle dnl Check for some important frameworks ARANYM_CHECK_FRAMEWORK(AppKit, []) ARANYM_CHECK_FRAMEWORK(CoreFoundation, [#include ]) ARANYM_CHECK_FRAMEWORK(IOKit, [#include ]) ARANYM_CHECK_FRAMEWORK(Security, [#include ]) dnl We (Mac OS X target) don't want to use PKG_CONFIG even if it exists (e.g. in /opt) PKG_CONFIG="" fi ;; beos*|haiku*) dnl Find tools needed to add resources AC_PATH_PROG(BEOS_XRES, xres, [AC_MSG_ERROR([xres not found.])]) AC_PATH_PROG(BEOS_RC, rc, [AC_MSG_ERROR([rc not found.])]) AC_PATH_PROG(BEOS_SETVERSION, setversion, [AC_MSG_ERROR([setversion not found.])]) WANT_UNIXSERIALPORT=no ac_cv_tun_tap_support=no ;; *) ;; esac dnl Check that the host supports TUN/TAP devices AC_CACHE_CHECK([whether TUN/TAP is supported], ac_cv_tun_tap_support, [ AC_TRY_COMPILE([ #if defined(HAVE_LINUX_IF_H) && defined(HAVE_LINUX_IF_TUN_H) #ifdef HAVE_SYS_SOCKET_H #include #endif #include #include #endif #if defined(HAVE_NET_IF_H) && defined(HAVE_NET_IF_TUN_H) #include #include #endif ], [ struct ifreq ifr; memset(&ifr, 0, sizeof(ifr)); ifr.ifr_flags = IFF_TAP | IFF_NO_PI; ], ac_cv_tun_tap_support=yes, ac_cv_tun_tap_support=no ) ]) dnl Check that the host supports BPF devices AC_CACHE_CHECK([whether BPF is supported], ac_cv_bpf_support, [ AC_TRY_COMPILE([ #if defined(HAVE_NET_BPF_H) #include #endif ], [ struct bpf_program filter; ], ac_cv_bpf_support=yes, ac_cv_bpf_support=no ) ]) dnl Various checks if the system supports vm_allocate() and the like functions. have_mach_vm=no if [[ "x$ac_cv_func_vm_allocate" = "xyes" -a "x$ac_cv_func_vm_deallocate" = "xyes" -a \ "x$ac_cv_func_vm_protect" = "xyes" ]]; then have_mach_vm=yes fi AC_TRANSLATE_DEFINE(HAVE_MACH_VM, $have_mach_vm, [Define if your system has a working vm_allocate()-based memory allocator.]) case "$host_os" in darwin*) OSdarwinReq="#define OS_darwin";; *) OSdarwinReq= ;; esac dnl Check that vm_allocate(), vm_protect() work if [[ "x$have_mach_vm" = "xyes" ]]; then AC_CACHE_CHECK([whether vm_protect works], ac_cv_vm_protect_works, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_cv_vm_protect_works=yes dnl First the tests that should segfault for test_def in NONE_READ NONE_WRITE READ_WRITE; do AC_TRY_RUN([ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_$test_def $OSdarwinReq #include "$srcdir/src/Unix/vm_alloc.cpp" ], ac_cv_vm_protect_works=no, rm -f core, dnl When cross-compiling, do not assume anything ac_cv_vm_protect_works="guessing no" ) done AC_TRY_RUN([ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_RDWR_WRITE $OSdarwinReq #include "$srcdir/src/Unix/vm_alloc.cpp" ], , ac_cv_vm_protect_works=no, dnl When cross-compiling, do not assume anything ac_cv_vm_protect_works="guessing no" ) AC_LANG_RESTORE ] ) dnl Remove support for vm_allocate() if vm_protect() does not work if [[ "x$have_mach_vm" = "xyes" ]]; then case $ac_cv_vm_protect_works in *yes) have_mach_vm=yes;; *no) have_mach_vm=no;; esac fi AC_TRANSLATE_DEFINE(HAVE_MACH_VM, $have_mach_vm, [Define if your system has a working vm_allocate()-based memory allocator.]) fi dnl HAVE_MACH_VM dnl Various checks if the system supports mmap() and the like functions. dnl ... and Mach memory allocators are not supported have_mmap_vm=no if [[ "x$ac_cv_func_mmap" = "xyes" -a "x$ac_cv_func_munmap" = "xyes" -a \ "x$ac_cv_func_mprotect" = "xyes" ]]; then if [[ "x$have_mach_vm" = "xno" ]]; then have_mmap_vm=yes fi fi AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, $have_mmap_vm, [Define if your system has a working mmap()-based memory allocator.]) dnl Check that mmap() and associated functions work. if [[ "x$have_mmap_vm" = "xyes" ]]; then dnl Check if we have a working anonymous mmap() AC_CACHE_CHECK([whether mmap supports MAP_ANON], ac_cv_mmap_anon, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_RUN([ #define HAVE_MMAP_ANON #define CONFIGURE_TEST_VM_MAP #define TEST_VM_MMAP_ANON #include "$srcdir/src/Unix/vm_alloc.cpp" ], ac_cv_mmap_anon=yes, ac_cv_mmap_anon=no, dnl When cross-compiling, do not assume anything. ac_cv_mmap_anon="guessing no" ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(HAVE_MMAP_ANON, $ac_cv_mmap_anon, [Define if defines MAP_ANON and mmap()'ing with MAP_ANON works.]) AC_CACHE_CHECK([whether mmap supports MAP_ANONYMOUS], ac_cv_mmap_anonymous, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_RUN([ #define HAVE_MMAP_ANONYMOUS #define CONFIGURE_TEST_VM_MAP #define TEST_VM_MMAP_ANON #include "$srcdir/src/Unix/vm_alloc.cpp" ], ac_cv_mmap_anonymous=yes, ac_cv_mmap_anonymous=no, dnl When cross-compiling, do not assume anything. ac_cv_mmap_anonymous="guessing no" ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(HAVE_MMAP_ANONYMOUS, $ac_cv_mmap_anonymous, [Define if defines MAP_ANONYMOUS and mmap()'ing with MAP_ANONYMOUS works.]) AC_CACHE_CHECK([whether mprotect works], ac_cv_mprotect_works, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_cv_mprotect_works=yes dnl First the tests that should segfault for test_def in NONE_READ NONE_WRITE READ_WRITE; do AC_TRY_RUN([ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_$test_def #include "$srcdir/src/Unix/vm_alloc.cpp" ], ac_cv_mprotect_works=no, rm -f core, dnl When cross-compiling, do not assume anything ac_cv_mprotect_works="guessing no" ) done AC_TRY_RUN([ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_RDWR_WRITE #include "$srcdir/src/Unix/vm_alloc.cpp" ], , ac_cv_mprotect_works=no, dnl When cross-compiling, do not assume anything ac_cv_mprotect_works="guessing no" ) AC_LANG_RESTORE ] ) dnl Remove support for mmap() if mprotect() does not work if [[ "x$have_mmap_vm" = "xyes" ]]; then case $ac_cv_mprotect_works in *yes) have_mmap_vm=yes;; *no) have_mmap_vm=no;; esac fi AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, $have_mmap_vm, [Define if your system has a working mmap()-based memory allocator.]) fi dnl HAVE_MMAP_VM AH_TEMPLATE(HAVE_WIN32_VM, [Define if your system has a working VirtualAlloc()-based memory allocator.]) if test "$OS_TYPE" = mingw; then AC_DEFINE([HAVE_WIN32_VM]) if $HAVE_I386; then LDFLAGS="$LDFLAGS -Wl,--large-address-aware" fi fi dnl Check signal handlers need to be reinstalled AC_CACHE_CHECK([whether signal handlers need to be reinstalled], ac_cv_signal_need_reinstall, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_RUN([ #include #ifdef HAVE_UNISTD_H #include #endif #include static int handled_signal = 0; RETSIGTYPE sigusr1_handler(int) { handled_signal++; } int main(void) { /* returns 0 if signals need not to be reinstalled */ signal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1); exit(handled_signal == 2); } ], ac_cv_signal_need_reinstall=yes, ac_cv_signal_need_reinstall=no, dnl When cross-compiling, do not assume anything. ac_cv_signal_need_reinstall="guessing yes" ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(SIGNAL_NEED_REINSTALL, $ac_cv_signal_need_reinstall, [Define if your system requires signals to be reinstalled.]) dnl Check if sigaction handlers need to be reinstalled AC_CACHE_CHECK([whether sigaction handlers need to be reinstalled], ac_cv_sigaction_need_reinstall, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_RUN([ #include #ifdef HAVE_UNISTD_H #include #endif #include static int handled_signal = 0; RETSIGTYPE sigusr1_handler(int) { handled_signal++; } typedef RETSIGTYPE (*signal_handler)(int); static signal_handler mysignal(int sig, signal_handler handler) { struct sigaction old_sa; struct sigaction new_sa; new_sa.sa_handler = handler; return ((sigaction(sig,&new_sa,&old_sa) < 0) ? SIG_IGN : old_sa.sa_handler); } int main(void) { /* returns 0 if signals need not to be reinstalled */ mysignal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1); exit(handled_signal == 2); } ], ac_cv_sigaction_need_reinstall=yes, ac_cv_sigaction_need_reinstall=no, dnl When cross-compiling, do not assume anything. ac_cv_sigaction_need_reinstall="guessing yes" ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(SIGACTION_NEED_REINSTALL, $ac_cv_sigaction_need_reinstall, [Define if your system requires sigactions to be reinstalled.]) dnl Check if we have vasprintf (_GNU_SOURCE) AC_CACHE_CHECK([for vasprintf], ac_cv_have_vasprintf, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ #define _GNU_SOURCE #include #include ], [ va_list a; vasprintf(NULL, NULL, a); ], [ac_cv_have_vasprintf=yes], [ac_cv_have_vasprintf=no] ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(HAVE_VASPRINTF, $ac_cv_have_vasprintf, [Define if your system supports vasprintf function with GNU SOURCEs]) if [[ "x$ac_cv_have_vasprintf" = "xyes" ]]; then DEFINES="$DEFINES -D_GNU_SOURCE" fi AC_CACHE_CHECK([for sighandler_t], ac_cv_have_sighandler_t, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ #define _GNU_SOURCE #include #include ], [ signal(0, (sighandler_t)NULL); ], [ac_cv_have_sighandler_t=yes], [ac_cv_have_sighandler_t=no] ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(HAVE_SIGHANDLER_T, $ac_cv_have_sighandler_t, [Define if doesn't define sighandler_t]) dnl Check if we have getopt_long AC_CACHE_CHECK([for getopt_long], ac_cv_have_getopt_long, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ #define _GNU_SOURCE #include #include ], [ getopt_long(0, NULL, NULL, NULL, NULL); ], [ac_cv_have_getopt_long=yes], [ac_cv_have_getopt_long=no] ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(HAVE_GETOPT_H, $ac_cv_have_getopt_long) AM_CONDITIONAL([NEED_GETOPT], test "$ac_cv_have_getopt_long" = "no") dnl Check if we have __builtin_bswap16/32 AC_CACHE_CHECK([for __builtin_bswap16], ac_cv_have___builtin_bswap16, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ #include #include unsigned short v; ], [ v = __builtin_bswap16(v); ], [ac_cv_have___builtin_bswap16=yes], [ac_cv_have___builtin_bswap16=no] ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(HAVE___BUILTIN_BSWAP16, $ac_cv_have___builtin_bswap16, [Define if your compiler supports __builtin_bswap16]) AC_CACHE_CHECK([for __builtin_bswap32], ac_cv_have___builtin_bswap32, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ #include #include unsigned int v; ], [ v = __builtin_bswap32(v); ], [ac_cv_have___builtin_bswap32=yes], [ac_cv_have___builtin_bswap32=no] ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(HAVE___BUILTIN_BSWAP32, $ac_cv_have___builtin_bswap32, [Define if your compiler supports __builtin_bswap32]) AH_TEMPLATE([MAP_META_TO_CONTROL], [Define if you want to map the meta key to the emulated control key]) AH_TEMPLATE([MAP_CONTROL_TO_CONTROL], [Define if you want to map the control key to the emulated control key]) case $CONTROL_KEY in meta) AC_DEFINE([MAP_META_TO_CONTROL], 1) ;; both) AC_DEFINE([MAP_META_TO_CONTROL], 1) AC_DEFINE([MAP_CONTROL_TO_CONTROL], 1) ;; ctrl) AC_DEFINE([MAP_CONTROL_TO_CONTROL], 1) ;; esac if [[ "x$WANT_JIT" = "xyes" ]]; then WANT_EXSIGSEGV=yes MEMORY_CHECK=sseg fi AH_TEMPLATE([ARAM_PAGE_CHECK], [Define if you want to try out a different memory check]) AH_TEMPLATE([NOCHECKBOUNDARY], [Define if you don't want to use check memory boundary]) AH_TEMPLATE([EXTENDED_SIGSEGV], [Define if you want to use extended segfault handler]) AH_TEMPLATE([RAMENDNEEDED], [Define if you want protect end of memory]) AH_TEMPLATE([HW_SIGSEGV], [Define if you want to use extended segfault handler also for HW space]) case $MEMORY_CHECK in no) AC_DEFINE([NOCHECKBOUNDARY], 1) ;; page) AC_DEFINE([ARAM_PAGE_CHECK], 1) ;; hwsp) ADDRESSING_TEST_ORDER="fixed" WANT_EXSIGSEGV="yes" AC_DEFINE([NOCHECKBOUNDARY], 1) AC_DEFINE([EXTENDED_SIGSEGV], 1) AC_DEFINE([RAMENDNEEDED]) ;; pagehwsp) ADDRESSING_TEST_ORDER="fixed" WANT_EXSIGSEGV="yes" AC_DEFINE([ARAM_PAGE_CHECK], 1) AC_DEFINE([NOCHECKBOUNDARY], 1) AC_DEFINE([EXTENDED_SIGSEGV], 1) AC_DEFINE([RAMENDNEEDED], 1) ;; sseg) ADDRESSING_TEST_ORDER="fixed" WANT_EXSIGSEGV="yes" AC_DEFINE([NOCHECKBOUNDARY], 1) AC_DEFINE([RAMENDNEEDED], 1) AC_DEFINE([EXTENDED_SIGSEGV], 1) AC_DEFINE([HW_SIGSEGV], 1) ;; *) ;; esac dnl Full opcode's history if [[ "x$WANT_HISTORY" = "xyes" ]]; then AC_DEFINE([FULL_HISTORY], 1, [Define if you want to use full history]) fi dnl CPU flight recorder if [[ "x$WANT_FLIGHTRECORDER" = "xyes" ]]; then AC_DEFINE([FLIGHT_RECORDER], 1, [Define if you want to use CPU flight recorder]) fi dnl ATA CD-ROM emulation if [[ "x$WANT_CDROM" = "xyes" ]]; then AC_DEFINE([SUPPORT_CDROM], 1, [Define if you want to use ATA CD-ROM emulation]) fi dnl Full MMU if [[ "x$WANT_MMU" = "xyes" ]]; then AC_DEFINE([FULLMMU], 1, [Define if using full MMU]) fi AM_CONDITIONAL([FULLMMU], test "$WANT_MMU" = "yes") dnl Small ATC if [[ "x$ATC_TYPE" = "xsmall" ]]; then AC_DEFINE([SMALL_ATC], 1, [Define if using only small ATC]) fi dnl Full ATC if [[ "x$ATC_TYPE" = "xno" ]]; then AC_DEFINE([DISABLE_ATC], 1, [Define if not using full ATC]) fi dnl DSP if [[ "x$WANT_DSP" = "xyes" ]]; then AC_DEFINE([DSP_EMULATION], 1, [Define if using DSP]) dnl DSP disassembler if [[ "x$WANT_DSP_DISASM" = "xyes" ]]; then AC_DEFINE([DSP_DISASM], 1, [Define if DSP disassembly]) fi fi AM_CONDITIONAL([WANT_DSP], test "$WANT_DSP" = "yes") AM_CONDITIONAL([WANT_DSP_DISASM], test "$WANT_DSP_DISASM" = "yes") AH_TEMPLATE([FIXED_VIDEORAM], [Define if you want fixed position of VideoRAM]) AH_TEMPLATE([PROTECT2K], [Define if you want to protect first 2kB of RAM against user mode access]) dnl protect first 2kB of RAM if [[ "x$WANT_PROTECT2K" != "xno" ]]; then AC_DEFINE([PROTECT2K], 1, [Define if you want to protect first 2kB of RAM against user mode access]) fi dnl fixed size FastRAM if [[ "x$WANT_FIXEDFASTRAM" != "xno" ]]; then AC_DEFINE_UNQUOTED([FixedSizeFastRAM], $WANT_FIXEDFASTRAM, [Define if you want FastRAM of fixed size]) fi dnl fixed start of VideoRAM if [[ "x$WANT_FIXEDVIDEORAM" = "xyes" ]]; then AC_DEFINE([FIXED_VIDEORAM], 1) else if [[ "x$WANT_MMU" = "xyes" ]]; then AC_MSG_WARN([Protection of first 2kB RAM enabled as well - won't hurt]) AC_DEFINE([PROTECT2K], 1) fi if [[ "x$WANT_BLITSDLBLIT" = "xyes" ]]; then AC_MSG_WARN([Blitter SDL surface blitting support needs fixed position of VideoRAM]) AC_DEFINE([FIXED_VIDEORAM], 1) WANT_FIXEDVIDEORAM="yes" fi fi dnl Full STOP instruction if [[ "x$WANT_REALSTOP" = "xyes" ]]; then AC_DEFINE([ENABLE_REALSTOP], 1, [Define if you want real STOP instruction implementation]) WANT_SPCFLAGS_EXCL=yes fi dnl Blitter memmove acceleration if [[ "x$WANT_BLITMEMMOVE" = "xyes" ]]; then AC_DEFINE([BLITTER_MEMMOVE], 1, [Define if you want accelerated blitter output]) fi if [[ "x$WANT_BLITSDLBLIT" = "xyes" ]]; then AC_MSG_WARN([Blitter SDL surface blitting support needs fixed position of VideoRAM]) AC_DEFINE([FIXED_VIDEORAM], 1) WANT_FIXEDVIDEORAM="yes" fi dnl Blitter SDL surface blitting if [[ "x$WANT_BLITSDLBLIT" = "xyes" ]]; then AC_DEFINE([BLITTER_SDLBLIT], 1, [Define if you want even more accelerated blitter output]) AC_DEFINE([BLITTER_MEMMOVE], 1, [Define if you want accelerated blitter output]) dnl required for the SDLBLIT fi AH_TEMPLATE([ETHERNET_SUPPORT], [Define if you want to use ethernet card emulation]) dnl Ethernet card emulation HAVE_ETHERNET=no NEED_ARATAPIF=no if [[ "x$WANT_ETHERNET" = "xyes" ]]; then if [[ "x$ac_cv_tun_tap_support" = "xyes" ]]; then AC_DEFINE([ETHERNET_SUPPORT], 1) NEED_ARATAPIF="yes" HAVE_ETHERNET="yes" elif test "x$OS_TYPE" = "xcygwin" && ( $HAVE_I386 || $HAVE_X86_64 ); then AC_DEFINE([ETHERNET_SUPPORT], 1) HAVE_ETHERNET="yes" elif [[ "x$OS_TYPE" = "xdarwin" ]]; then AC_DEFINE([ETHERNET_SUPPORT], 1) if [[ "x$WANT_BFP_ETHERNET" = "xyes" ]]; then AC_TRANSLATE_DEFINE(ENABLE_BPF, $ac_cv_bpf_support, [Define if your system supports BPF devices.]) else AC_MSG_WARN([Ethernet won't work without TunTap driver for Mac OS X. See http://tuntaposx.sourceforge.net/]) fi HAVE_ETHERNET="yes" else AC_MSG_WARN([Ethernet interface not supported on your system]) fi fi AM_CONDITIONAL([NEED_ARATAPIF], test "$NEED_ARATAPIF" = "yes") AM_CONDITIONAL([ETHERNET_SUPPORT], test "$HAVE_ETHERNET" = "yes") if [[ "x$HAVE_ETHERNET" = "xyes" ]]; then PROVIDES_NF="$PROVIDES_NF ethernet" fi dnl Support for direct access to host's fs if [[ "x$WANT_HOSTFS" = "xyes" ]]; then AC_DEFINE([HOSTFS_SUPPORT], 1, [Define if you want to use direct access to host's fs]) PROVIDES_NF="$PROVIDES_NF hostfs" fi AM_CONDITIONAL([HOSTFS_SUPPORT], test "$WANT_HOSTFS" = "yes") dnl SDL GUI if test "x$WANT_SDLGUI" = "xyes" ; then AC_DEFINE([SDL_GUI], 1, [Define if you want to build SDL GUI]) fi AM_CONDITIONAL([SDL_GUI], test "$WANT_SDLGUI" = yes) dnl C++ exceptions if [[ "x$WANT_EXSIGSEGV" = "xyes" ]]; then WANT_CXX_EXCEPTIONS="no" fi if [[ "x$WANT_CXX_EXCEPTIONS" = "xno" ]]; then AC_DEFINE(EXCEPTIONS_VIA_LONGJMP, 1, [Define if you want to use setjmp/longjmp instead of C++ exceptions]) fi AH_TEMPLATE(NO_NESTED_SIGSEGV, [Define if OS needs to cleanly exit sigsegv handler]) dnl Extended signal segmentation fault handler dnl if you add support for os/cpu combinations here, dnl don't forget to update the list of source files dnl in src/Makefile.am, inside "if EXTENDED_SIGSEGV" if [[ "x$WANT_EXSIGSEGV" = "xyes" ]]; then case "$host_os" in linux*) case "$CPU_TYPE" in i386) AC_DEFINE(NO_NESTED_SIGSEGV, 1) ;; x86_64) AC_DEFINE(NO_NESTED_SIGSEGV, 1) ;; arm) CFLAGS="$CFLAGS -marm" CXXFLAGS="$CXXFLAGS -marm" AC_DEFINE(NO_NESTED_SIGSEGV, 1) ;; *) AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) ;; esac ;; openbsd*) case "$CPU_TYPE" in i386) AC_DEFINE(NO_NESTED_SIGSEGV, 1) ;; x86_64) AC_DEFINE(NO_NESTED_SIGSEGV, 1) ;; *) AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) ;; esac ;; darwin*) if [[ "x$CPU_TYPE" = "powerpc" ]]; then AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) else AC_DEFINE(NO_NESTED_SIGSEGV, 1) fi ;; netbsd*) if $HAVE_I386 || $HAVE_X86_64; then : else AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) fi ;; freebsd*|kfreebsd*-gnu) case "$CPU_TYPE" in i386) AC_DEFINE(NO_NESTED_SIGSEGV, 1) ;; x86_64) AC_DEFINE(NO_NESTED_SIGSEGV, 1) dnl FreeBSD is using clang which requires additional options, may be to be set in dnl general for clang in the future case "$host_os" in freebsd*) CFLAGS="$CFLAGS -mstackrealign" CXXFLAGS="$CXXFLAGS -mstackrealign" ;; *) : ;; esac ;; *) AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) ;; esac ;; cygwin*|mingw*) if $HAVE_I386 || $HAVE_X86_64; then AC_DEFINE(NO_NESTED_SIGSEGV, 1) else AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) fi ;; solaris*) case "$CPU_TYPE" in i386) ;; x86_64) ;; *) AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) ;; esac ;; beos* | haiku*) case "$CPU_TYPE" in i386) AC_DEFINE(NO_NESTED_SIGSEGV, 1) ;; x86_64) AC_DEFINE(NO_NESTED_SIGSEGV, 1) ;; *) AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) ;; esac dnl disabled for now: compiles, but panics kernel :( AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) ;; *) AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) ;; esac fi AM_CONDITIONAL([EXTENDED_SIGSEGV], test "$WANT_EXSIGSEGV" = yes) dnl Determine the addressing mode to use ADDRESSING_MODE="" AC_MSG_CHECKING([for the addressing mode to use]) for am in $ADDRESSING_TEST_ORDER; do case $am in direct) if [[ "x$HAVE_MMAP_VM" = "xno" -a "x$HAVE_MACH_VM" = "xno" ]]; then continue fi dnl Problems with Solaris if [[ "x$OS_TYPE" = "xsolaris" ]]; then continue fi ADDRESSING_MODE="direct" DEFINES="$DEFINES -DDIRECT_ADDRESSING" break ;; fixed) if [[ "x$HAVE_MMAP_VM" = "xno" -a "x$HAVE_MACH_VM" = "xno" ]]; then continue fi if test "$OS_TYPE" = "linux" && ( $HAVE_I386 || $HAVE_X86_64 || $HAVE_ARM ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if test "$OS_TYPE" = "freebsd" && ( $HAVE_I386 || $HAVE_X86_64 ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if test "$OS_TYPE" = "openbsd" && ( $HAVE_I386 || $HAVE_X86_64 ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if test "$OS_TYPE" = "darwin" && ( $HAVE_I386 || $HAVE_X86_64 ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if test "$OS_TYPE" = "cygwin" && ( $HAVE_I386 || $HAVE_X86_64 ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if test "$OS_TYPE" = "mingw" && ( $HAVE_I386 || $HAVE_X86_64 ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if test "$OS_TYPE" = "solaris" && ( $HAVE_I386 || $HAVE_X86_64 ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if test "$OS_TYPE" = "beos" && ( $HAVE_I386 || $HAVE_X86_64 ); then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi ;; normal) ADDRESSING_MODE="normal" DEFINES="$DEFINES -DNORMAL_ADDRESSING" break ;; *) AC_MSG_ERROR([Internal configure.in script error for $am addressing mode]) esac done AC_MSG_RESULT($ADDRESSING_MODE) if [[ "x$ADDRESSING_MODE" = "x" ]]; then AC_MSG_ERROR([Sorry, no suitable addressing mode in $ADDRESSING_TEST_ORDER]) fi dnl Check for GAS. HAVE_GAS=no AC_MSG_CHECKING(for GAS .p2align feature) cat >conftest.S << EOF .text .p2align 5 EOF if $CC conftest.S -c -o conftest.o >/dev/null 2>&1 ; then HAVE_GAS=yes; fi AC_MSG_RESULT($HAVE_GAS) dnl (gb) Do not merge constants since it breaks fpu/fpu_x86.cpp. dnl As of 2001/08/02, this affects the following compilers: dnl Official: probably gcc-3.1 (mainline CVS) dnl Mandrake: gcc-2.96 >= 0.59mdk, gcc-3.0.1 >= 0.1mdk dnl Red Hat : gcc-2.96 >= 89, gcc-3.0 >= 1 if [[ "x$GCC" = "xyes" -a "x$FPE_CORE" = "xx86" ]]; then SAVED_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-merge-constants" AC_CACHE_CHECK([whether GCC supports constants merging], ac_cv_gcc_constants_merging, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([],[],[ac_cv_gcc_constants_merging=yes],[ac_cv_gcc_constants_merging=no]) AC_LANG_RESTORE ]) if [[ "x$ac_cv_gcc_constants_merging" != "xyes" ]]; then CXXFLAGS="$SAVED_CXXFLAGS" fi fi dnl Select appropriate CPU source and REGPARAM define. ASM_OPTIMIZATIONS=none dnl gb-- JITSRCS and GENJITSRCS will be emptied later if the JIT is not available dnl gb-- Other platforms should define their own set of noflags file variants CAN_JIT=no JITSRCS= GENJITSRCS="compemu1.cpp compemu2.cpp compemu3.cpp compemu4.cpp compemu5.cpp compemu6.cpp compemu7.cpp compemu8.cpp" GENCOMP_ARCH= AH_TEMPLATE([HAVE_CFLAG_NO_REDZONE], [define if your compiler understand -mno-red-zone]) if test "$GCC" = yes && $HAVE_I386; then dnl i386 CPU DEFINES="$DEFINES -DUNALIGNED_PROFITABLE -DREGPARAM=\"__attribute__((regparm(3)))\"" if [[ "x$HAVE_GAS" = "xyes" ]]; then ASM_OPTIMIZATIONS=i386 DEFINES="$DEFINES -DX86_ASSEMBLY -DOPTIMIZED_FLAGS -DSAHF_SETO_PROFITABLE" CAN_JIT=yes GENCOMP_ARCH=x86 fi elif test "$GCC" = yes && $HAVE_X86_64; then dnl x86-64 CPU DEFINES="$DEFINES -DUNALIGNED_PROFITABLE" if [[ "x$HAVE_GAS" = "xyes" ]]; then ASM_OPTIMIZATIONS="x86-64" DEFINES="$DEFINES -DX86_64_ASSEMBLY -DOPTIMIZED_FLAGS" CAN_JIT=yes GENCOMP_ARCH=x86 SAVED_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -mno-red-zone" AC_CACHE_CHECK([whether GCC supports -mno-red-zone], ac_cv_gcc_no_red_zone, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([],[],[ac_cv_gcc_no_red_zone=yes],[ac_cv_gcc_no_red_zone=no]) AC_LANG_RESTORE ]) CXXFLAGS="$SAVED_CXXFLAGS" if [[ "x$ac_cv_gcc_no_red_zone" = "xyes" ]]; then AC_DEFINE([HAVE_CFLAG_NO_REDZONE], 1) fi fi elif test "$GCC" = yes && $HAVE_SPARC; then dnl SPARC CPU case "$host_os" in solaris*) AC_MSG_CHECKING(SPARC CPU architecture) SPARC_TYPE=`solaris/which_sparc` AC_MSG_RESULT($SPARC_TYPE) case "$SPARC_TYPE" in SPARC_V8) ASM_OPTIMIZATIONS="SPARC V8 architecture" DEFINES="$DEFINES -DSPARC_V8_ASSEMBLY" dnl -DOPTIMIZED_FLAGS" CFLAGS="$CFLAGS -Wa,-Av8" CXXFLAGS="$CXXFLAGS -Wa,-Av8" ;; SPARC_V9) ASM_OPTIMIZATIONS="SPARC V9 architecture" DEFINES="$DEFINES -DSPARC_V9_ASSEMBLY" dnl -DOPTIMIZED_FLAGS" CFLAGS="$CFLAGS -Wa,-Av9" CXXFLAGS="$CXXFLAGS -Wa,-Av9" ;; esac ;; esac elif test "$GCC" = yes && $HAVE_ARM; then dnl ARM CPU if [[ "x$HAVE_GAS" = "xyes" ]]; then case "$host_cpu" in armv6*|armv7*|armv8*|armv9*) ASM_OPTIMIZATIONS="ARM/V6 architecture w optimized flags" DEFINES="$DEFINES -DARMV6_ASSEMBLY -DARM_ASSEMBLY -DOPTIMIZED_FLAGS" CFLAGS="$CFLAGS -march=armv6" CXXFLAGS="$CXXFLAGS -march=armv6" ;; *) dnl Hack until we find a better way case "$host_os" in *-androideabi) ASM_OPTIMIZATIONS="ARM/V6 architecture w optimized flags" DEFINES="$DEFINES -DARMV6_ASSEMBLY -DARM_ASSEMBLY -DOPTIMIZED_FLAGS" ;; *) ASM_OPTIMIZATIONS="ARM/generic w optimized flags" DEFINES="$DEFINES -DARM_ASSEMBLY -DOPTIMIZED_FLAGS" ;; esac ;; esac GENCOMP_ARCH=arm CAN_JIT=yes fi fi dnl Check for JIT Version 2 if [[ "x$WANT_JIT2" = "xyes" ]]; then if $HAVE_ARM; then DEFINES="$DEFINES -DUSE_JIT2=1" else AC_MSG_ERROR([JIT Version 2 is only available for ARM]) fi fi AM_CONDITIONAL([GENCOMP_ARCH_X86], test "$GENCOMP_ARCH" = "x86") AM_CONDITIONAL([GENCOMP_ARCH_ARM], test "$GENCOMP_ARCH" = "arm") dnl JIT sources if available if [[ "x$WANT_JIT" = "xyes" -a "x$CAN_JIT" = "xyes" ]]; then if [[ "x$WANT_MMU" = "xyes" ]]; then AC_MSG_ERROR([MMU&JIT in combination are not supported]) fi JITSRCS="$JITSRCS uae_cpu/compiler/compemu_support.cpp" DEFINES="$DEFINES -DUSE_JIT=1" dnl JIT is buggy with strict-aliasing, it seems (FIXME!) CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" if [[ "x$WANT_JIT_DEBUG" = "xyes" ]]; then DEFINES="$DEFINES -DJIT_DEBUG=1" fi if [[ "x$WANT_JIT_FPU" = "xyes" ]]; then DEFINES="$DEFINES -DUSE_JIT_FPU=1" fi if test "$OS_TYPE" != darwin && $HAVE_X86_64; then # Force text address; needed at least on ArchLinux # where it is otherwise set to a high memory address # which is not in the range for the JIT addressing scheme LDFLAGS="$LDFLAGS -Wl,-Ttext-segment=0x10000000" fi else WANT_JIT=no WANT_JIT_FPU=no WANT_JIT_DEBUG=no JITSRCS="" GENJITSRCS="" fi AM_CONDITIONAL([USE_JIT], test "$WANT_JIT" = "yes") AM_CONDITIONAL([USE_JIT_FPU], test "$WANT_JIT_FPU" = "yes") AM_CONDITIONAL([USE_JIT2], test "$WANT_JIT2" = "yes") dnl Select appropriate FPU source. gcc_AC_C_FLOAT_FORMAT AC_CHECK_HEADERS(ieee754.h ieeefp.h floatingpoint.h nan.h math.h) if [[ "x$WANT_JIT_FPU" = "xyes" -a "x$FPE_CORE_TEST_ORDER" != "xieee" ]]; then dnl AC_MSG_WARN([Sorry, JIT-FPU supports only the "ieee" FPE implementation]) FPE_CORE_TEST_ORDER="ieee" dnl Restore previous variables. FPE_CORE_STR and FPUSRCS are overwritten fi AH_TEMPLATE([USES_FPU_CORE], [FPU core]) for fpe in $FPE_CORE_TEST_ORDER; do case $fpe in ieee) case $ac_cv_c_float_format in IEEE*) FPE_CORE="IEEE fpu core" AC_DEFINE([USES_FPU_CORE], "IEEE") DEFINES="$DEFINES -DFPU_IEEE" dnl Math functions not mandated by C99 standard AC_CHECK_FUNCS(isnanl isinfl) dnl Math functions required by C99 standard, but probably not dnl implemented everywhere. In that case, we fall back to the dnl regular variant for doubles. AC_CHECK_FUNCS(logl log10l expl powl exp2l pow2l exp10l pow10l fabsl sqrtl log1pl expm1l exp2 pow2) AC_CHECK_FUNCS(sinl cosl tanl sinhl coshl tanhl) AC_CHECK_FUNCS(asinl acosl atanl asinhl acoshl atanhl) AC_CHECK_FUNCS(floorl ceill truncl roundl) case $CPU_TYPE in alpha) dnl Maybe -mieee-with-inexact CXXFLAGS="$CXXFLAGS -mieee" LDFLAGS="$LDFLAGS -mieee" break ;; *) ;; esac break ;; esac ;; x86) if test ":$GCC:$HAVE_I386:$HAVE_GAS:" = ":yes:true:yes:" -o ":$GCC:$HAVE_X86_64:$HAVE_GAS:" = ":yes:true:yes:"; then FPE_CORE="i387 fpu core" DEFINES="$DEFINES -DFPU_X86" break fi ;; uae) FPE_CORE="uae fpu core" AC_DEFINE([USES_FPU_CORE], "UAE") DEFINES="$DEFINES -DFPU_UAE" break ;; mpfr) AC_CHECK_LIB(mpfr, mpfr_set_zero, [LIBS="$LIBS -lmpfr -lgmp"], [], [-lgmp]) if test $ac_cv_lib_mpfr_mpfr_set_zero = yes; then FPE_CORE="mpfr fpu core" AC_DEFINE([USES_FPU_CORE], "MPFR") DEFINES="$DEFINES -DFPU_MPFR" break fi ;; *) AC_MSG_ERROR([Internal configure.in script error for $fpe fpu core]) ;; esac done if [[ "x$FPE_CORE" = "x" ]]; then AC_MSG_ERROR([Sorry, no suitable FPU core found in $FPE_CORE_TEST_ORDER]) fi AM_CONDITIONAL([FPU_IEEE], test "$fpe" = "ieee") AM_CONDITIONAL([FPU_X86], test "$fpe" = "x86") AM_CONDITIONAL([FPU_UAE], test "$fpe" = "uae") AM_CONDITIONAL([FPU_MPFR], test "$fpe" = "mpfr") dnl Check for certain math functions AC_CHECK_FUNCS(atanh) AC_CHECK_FUNCS(isnan isinf finite isnormal signbit) AH_TEMPLATE([DEBUGGER], [Define if using some internal debugger]) dnl Select debugger if [[ "x$WANT_JIT" = "xno" ]]; then dnl new debugger if [[ "$USE_DEBUGGER" = "yes" ]]; then AC_DEFINE([DEBUGGER], 1) fi else if [[ "$USE_DEBUGGER" = "yes" ]]; then AC_MSG_WARN([interactive debugger not usable with JIT]) USE_DEBUGGER=no fi fi AM_CONDITIONAL([USE_DEBUGGER], test "$USE_DEBUGGER" = yes) AH_TEMPLATE([DISASM_USE_OPCODES],[Define if using the opcodes library for disassembly]) AH_TEMPLATE([DISASM_USE_BUILTIN],[Define if using the builtin disassembler]) AC_ARG_WITH(opcodes, [AC_HELP_STRING(--with-opcodes=DIR, [specify the directory where the opcodes library is located])], with_opcodes=$withval, with_opcodes=) AC_ARG_ENABLE(disasm, [AC_HELP_STRING(--enable-disasm=builtin|opcodes, [Specify which library to use for disassembly @<:@none@:>@])], enable_disasm=$enableval, enable_disasm=no; enable_disasm_defaulted=yes) case "$enable_disasm" in no|builtin|opcodes) ;; yes|auto) enable_disasm=auto ;; *) AC_MSG_ERROR([unknown disassembler $enable_disasm]) ;; esac # check wether we need disassembly support, and which one DISASM_CFLAGS= DISASM_LIBS= if test "$USE_DEBUGGER" != no -o "$WANT_HISTORY" = yes; then if test "$enable_disasm" = no; then if test "$enable_disasm_defaulted" = "yes"; then if test "$with_opcodes" != ""; then enable_disasm=opcodes else enable_disasm=auto fi else AC_MSG_WARN([you have requested debug support but disabled disassembly. The debugger needs some disassembling support.]) fi fi fi if test "$enable_disasm" = auto -o "$enable_disasm" = opcodes; then CPPFLAGS_save="$CPPFLAGS" LIBS_save="$LIBS" if test "$with_opcodes" != ""; then if test -f "$with_opcodes/build-dir/bfd/bfd.h" ; then OPCODES_CFLAGS="-I$with_opcodes/build-dir/bfd -I$with_opcodes/build-dir/libiberty -I$with_opcodes/build-dir/opcodes" OPCODES_LIBS="-L$with_opcodes/build-dir/bfd -L$with_opcodes/build-dir/libiberty -L$with_opcodes/build-dir/opcodes" else OPCODES_CFLAGS="-I$with_opcodes/include" OPCODES_LIBS="-L$with_opcodes/lib" fi CPPFLAGS="$CPPFLAGS $OPCODES_CFLAGS" fi OPCODES_LIBS="$OPCODES_LIBS -lopcodes -lbfd -lz -ldl" found=no AC_CHECK_HEADERS(bfd.h,found=yes,found=no) AC_CHECK_HEADERS(dis-asm.h,found=yes,found=no) CPPFLAGS="$CPPFLAGS_save" AC_CHECK_LIB([opcodes], print_insn_m68k, found=yes, [unset ac_cv_lib_opcodes_print_insn_m68k OPCODES_LIBS="$OPCODES_LIBS -liberty" AC_CHECK_LIB([opcodes], print_insn_m68k, found=yes, found=no, [$OPCODES_LIBS])], [$OPCODES_LIBS]) LIBS="$LIBS_save" AC_MSG_CHECKING([for opcodes usability]) if test "$found" = "yes"; then AC_DEFINE(DISASM_USE_OPCODES) DISASM_CFLAGS="$OPCODES_CFLAGS" DISASM_LIBS="$OPCODES_LIBS" AC_MSG_RESULT($found) if test "$with_opcodes" != ""; then DISASM_LIBS="$DISASM_LIBS -Wl,-rpath,$with_opcodes/lib" fi enable_disasm=opcodes else AC_MSG_RESULT($found) if test "$enable_disasm" = "opcodes"; then AC_MSG_NOTICE([ Required libraries not found. You may have to specify the path to the correct directory. If your system isn't m68k-based, the libraries may be installed in some unusual place (maybe something like /usr/$host/m68k-unknown-linux-gnu). In the meantime, i will use the builtin support. ]) fi enable_disasm=auto fi fi if test "$enable_disasm" = auto -o "$enable_disasm" = builtin; then AC_DEFINE(DISASM_USE_BUILTIN) enable_disasm=builtin fi AC_SUBST(DISASM_CFLAGS) AC_SUBST(DISASM_LIBS) AM_CONDITIONAL(DISASM_USE_BUILTIN, test "$enable_disasm" = "builtin") AM_CONDITIONAL(DISASM_USE_OPCODES, test "$enable_disasm" = "opcodes") dnl Exclusive spcflags handling if [[ "x$WANT_SPCFLAGS_EXCL" = "xyes" ]]; then DEFINES="$DEFINES -DENABLE_EXCLUSIVE_SPCFLAGS" fi dnl UAE CPU sources for all architectures. CPUSRCS="$CPUSRCS $JITSRCS" GENCPUSRCS="$GENCPUSRCS cpudefs.cpp cpustbl.cpp cpufunctbl.cpp $GENJITSRCS" dnl Remove the "-g" option if set for GCC. if [[ "x$GCC" = "xyes" ]]; then if test "$ac_test_CFLAGS" != set; then CFLAGS=`echo $CFLAGS | sed -e 's/-g\b//g'` fi if test "$ac_test_CXXFLAGS" != set; then CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-g\b//g'` fi fi if [[ "x$WANT_NATDEBUG" = "xyes" ]]; then DBGSP="-g" WFLAGS="" if [[ "x$GCC" = "xyes" ]]; then WFLAGS="$WFLAGS -W -Wall -Wundef" fi else DBGSP="" WFLAGS="" fi if [[ "x$WANT_FULLDEBUG" = "xyes" ]]; then CFLAGS="$CFLAGS -DWHOLEDEBUG" CXXFLAGS="$CXXFLAGS -DWHOLEDEBUG" fi dnl Remove the "-O2" option if set for GCC and set the "-O3" option. dnl Do this only if it was defaulted by configure if [[ "x$GCC" = "xyes" ]]; then if test "$ac_test_CFLAGS" != set; then CFLAGS=`echo $CFLAGS | sed -e 's/-O2//g'` CFLAGS="-O3 $CFLAGS" fi if test "$ac_test_CXXFLAGS" != set; then CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-O2//g'` CXXFLAGS="-O3 $CXXFLAGS" fi fi dnl Or if we have -Ofast if [[ "x$HAVE_OFAST" = "xyes" ]]; then CFLAGS="`echo $CFLAGS | sed -e 's/-g//g'` -Ofast" CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-g//g'` -Ofast" CXXFLAGS="-LANG:std $CXXFLAGS" LDFLAGS="$LDFLAGS -ipa" fi dnl Check for SDL and/or SDL2 m4_define(use_sdl2_default, yes) m4_case(use_sdl2_default, yes, [AC_ARG_ENABLE(sdl2, [AC_HELP_STRING([--disable-sdl2], [disable use of SDL2 even if available (default=no)])], , [enable_sdl2=auto])], [AC_ARG_ENABLE(sdl2, [AC_HELP_STRING([--enable-sdl2], [use SDL2 if available (default=no)])], , [enable_sdl2=no])]) SDL_CFLAGS= SDL_LIBS= no_sdl=yes no_sdl2=yes if test "$OS_TYPE" == darwin -a "$WITH_FINK" = no; then ARANYM_CHECK_FRAMEWORK(SDL, []) if test "$have_framework_SDL" = yes ; then ARANYM_CHECK_FRAMEWORK_LOCATION(SDL) sdl_version="`defaults read $SDL_LOCATION/Resources/Info.plist CFBundleShortVersionString`" # SDL 1.2.15 has still 1.2.14 in the Info.plist file if test "$sdl_version" = "1.2.14"; then if test `defaults read $SDL_LOCATION/Resources/Info.plist BuildMachineOSBuild` = "12F2518"; then sdl_version=1.2.15 fi fi no_sdl=no fi if test "$enable_sdl2" != no; then ARANYM_CHECK_FRAMEWORK(SDL2, []) if test "$have_framework_SDL2" = yes ; then ARANYM_CHECK_FRAMEWORK_LOCATION(SDL2) sdl2_version="`defaults read $SDL2_LOCATION/Resources/Info.plist CFBundleShortVersionString`" no_sdl2=no fi fi else dnl Try macro from sdl.m4 and sdl2.m4 AM_PATH_SDL(1.2.12) if test "$enable_sdl2" != no; then AM_PATH_SDL2(2.0.3) fi fi if test "$no_sdl" = yes -a "$no_sdl2" = yes; then AC_MSG_ERROR([*** neither SDL nor SDL2 found! ***]) else AS_CASE("$host", [arm*-*-linux*],[on_rpi=`awk -v r=0 '/^Hardware@<:@ \t@:>@+:@<:@ \t@:>@+BCM2708/ { ++r;} /^Serial@<:@ \t@:>@+:/ { ++r; } END { print ((r > 1) ? "yes" : "no");}' /proc/cpuinfo`], [on_rpi="no"]) if test "$on_rpi" = yes; then AC_DEFINE(USE_FIXED_CONSOLE_FBVIDEOMODE, 1, [Define if console framebuffer does not support changing host video mode]) fi fi if test "$no_sdl2" = yes -a "$enable_sdl2" = yes; then AC_MSG_ERROR([*** SDL2 was requested, but was not found ***]) fi if test "$no_sdl2" != yes -a "$enable_sdl2" != no; then enable_sdl2=yes fi if test "$have_framework_SDL" = yes -o "$have_framework_SDL2" = yes; then if test "$enable_sdl2" = yes; then SDL_CFLAGS="-I$SDL2_LOCATION/Headers" BUNDLE_FRAMEWORKS="$BUNDLE_FRAMEWORKS $SDL2_LOCATION" SDL_LIBS="$SDL2_LIBS" sdl_version="$sdl2_version" else SDL_CFLAGS="-I$SDL_LOCATION/Headers" BUNDLE_FRAMEWORKS="$BUNDLE_FRAMEWORKS $SDL_LOCATION" fi else if test "$enable_sdl2" = yes; then SDL_CFLAGS="$SDL2_CFLAGS" SDL_LIBS="$SDL2_LIBS" sdl_version="$sdl2_version" fi fi AM_CONDITIONAL([ENABLE_SDL2], test "$enable_sdl2" = yes) # # SDL2 on macOS needs 10.6 or above if test "$enable_sdl2" = yes -a "$OS_TYPE" == darwin; then export MACOSX_DEPLOYMENT_TARGET=10.6 fi dnl Check for jpeg library have_jpeglib_h=no have_jpeglib_lib=no AC_CHECK_HEADERS(jpeglib.h, have_jpeglib_h=yes) if test "$have_jpeglib_h" = yes; then AC_CHECK_LIB(jpeg, jpeg_CreateDecompress, have_jpeglib_lib=yes) fi if test "$have_jpeglib_h" = yes -a "$have_jpeglib_lib" = yes; then AC_DEFINE(HAVE_JPEGLIB, 1, [Define if you have jpeglib]) JPEG_LIBS="-ljpeg" fi AC_SUBST([JPEG_LIBS]) if test "$have_jpeglib_lib" = no; then dnl Check for SDL_Image if test "$enable_sdl2" = yes; then ARANYM_CHECK_FRAMEWORK(SDL2_image, []) else ARANYM_CHECK_FRAMEWORK(SDL_image, []) fi if test "$have_framework_SDL2_image" = yes ; then ARANYM_CHECK_FRAMEWORK_LOCATION(SDL2_image) SDL_CFLAGS="$SDL_CFLAGS -I$SDL2_image_LOCATION/Headers" BUNDLE_FRAMEWORKS="$BUNDLE_FRAMEWORKS $SDL2_image_LOCATION" have_sdlimage_lib=yes have_sdlimage_h=yes elif test "$have_framework_SDL_image" = yes ; then ARANYM_CHECK_FRAMEWORK_LOCATION(SDL_image) CPPFLAGS="$CPPFLAGS -I$SDL_image_LOCATION/Headers" BUNDLE_FRAMEWORKS="$BUNDLE_FRAMEWORKS $SDL_image_LOCATION" have_sdlimage_lib=yes have_sdlimage_h=yes else tmp_cflags="$CFLAGS" tmp_cppflags="$CPPFLAGS" tmp_ldflags="$LDFLAGS" CFLAGS="$CFLAGS $SDL_CFLAGS" CPPFLAGS="$CPPFLAGS $SDL_CFLAGS" LDFLAGS="$LDFLAGS $SDL_LIBS" case "$host" in # the mixed environment on cygwin usually # causes link tests against SDL fail here, # just assume it is present *-*-cygwin*) have_sdlimage_lib=yes have_sdlimage_h=yes if test "$enable_sdl2" = yes; then SDL_LIBS="$SDL_LIBS `echo $SDL_LIBS | sed -e 's/SDL2.dll/SDL2_image.dll/'`" else SDL_LIBS="$SDL_LIBS `echo $SDL_LIBS | sed -e 's/SDL.dll/SDL_image.dll/'`" fi ;; *-*-mingw*) have_sdlimage_lib=yes have_sdlimage_h=yes if test "$enable_sdl2" = yes; then SDL_LIBS="$SDL_LIBS -lSDL2_image" else SDL_LIBS="$SDL_LIBS -lSDL_image" fi ;; *) AC_CHECK_HEADER(SDL_image.h, have_sdlimage_h=yes, havesdlimage_h=no) AC_CHECK_LIB(SDL_image, IMG_isJPG, have_sdlimage_lib=yes, have_sdlimage_lib=no) if test "$have_sdlimage_h" = yes -a "$have_sdlimage_lib" = yes; then if test "$enable_sdl2" = yes; then SDL_LIBS="$SDL_LIBS -lSDL2_image" else SDL_LIBS="$SDL_LIBS -lSDL_image" fi fi ;; esac CFLAGS="$tmp_cflags" CPPFLAGS="$tmp_cppflags" LDFLAGS="$tmp_ldflags" fi if test "$have_sdlimage_h" = yes -a "$have_sdlimage_lib" = yes; then AC_DEFINE(HAVE_SDL_IMAGE, 1, [Define if you have SDL_image]) fi fi dnl Add OpenGL ? if test "x$WANT_OPENGL" = "xyes"; then have_opengl="no" if test "x$PKG_CONFIG" != "x"; then PKG_CHECK_MODULES([GL], [gl], have_opengl="yes", have_opengl="no") fi if test "x$GL_LIBS" = "x"; then case "$host" in *-*-cygwin* | *-*-mingw*) GL_LIBS="-lopengl32" ;; *-*-darwin*) GL_LIBS="-Wl,-framework,OpenGL" ;; *) GL_LIBS="-lGL" ;; esac fi case "$host" in # the mixed environment on cygwin usually # causes link tests against SDL fail here, # just assume it is present *-*-cygwin* | *-*-mingw*) have_opengl=yes ;; esac AC_MSG_CHECKING(for OpenGL support) tmp_cflags="$CFLAGS" tmp_libs="$LIBS" if test "$have_opengl" = no; then CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS $GL_LIBS" AC_TRY_COMPILE([ #include "SDL_opengl.h" ],[],[have_opengl="yes"]) fi AC_MSG_RESULT($have_opengl) CFLAGS="$tmp_cflags" LIBS="$tmp_libs" if test "x$have_opengl" = "xyes"; then AC_DEFINE([ENABLE_OPENGL], 1, [Define if OpenGL enabled]) else WANT_OPENGL="no" fi fi AM_CONDITIONAL([ENABLE_OPENGL], test "$WANT_OPENGL" = yes) dnl Check for zlib if [[ "x$WANT_LILO" = "xyes" ]]; then have_zlib=no # Search using pkg-config if test "x$PKG_CONFIG" != "x"; then PKG_CHECK_MODULES([ZLIB], [zlib], [have_zlib=yes], [have_zlib=no]) fi # Fallback to autoconf (helps in Ubuntu 10.04 LTS) if test "$have_zlib" = "no"; then AC_CHECK_LIB(z, gzopen, [have_zlib=yes], [have_zlib=no]) fi if test "$have_zlib" = "yes"; then AC_DEFINE([HAVE_LIBZ], 1, [Define if zlib enabled]) fi else have_zlib="not required" fi dnl Check for libusb-1.0 WITH_USBHOST="no" if test "x$WANT_USBHOST" = "xyes"; then # Search using pkg-config if test "x$PKG_CONFIG" != "x"; then PKG_CHECK_MODULES([LIBUSB], [libusb-1.0], [WITH_USBHOST="yes"], [WITH_USBHOST="no"]) fi # Search the library and headers directly if test "x$WITH_USBHOST" = "xno"; then AC_CHECK_HEADER(libusb-1.0/libusb.h, [WITH_USBHOST="yes"], [WITH_USBHOST="no"]) if test "x$WITH_USBHOST" = "xyes"; then AC_CHECK_LIB(usb-1.0, libusb_init, [], [WITH_USBHOST="no"]) LIBUSB_LIBS="-lusb-1.0" fi fi if test "x$WITH_USBHOST" = "xno"; then AC_MSG_WARN([libusb is missing, USB NF disabled]) fi fi dnl Linux loader if [[ "x$WANT_LILO" = "xyes" ]]; then if [[ "x$WANT_MMU" = "xyes" ]]; then AC_DEFINE([ENABLE_LILO], 1, [Define if lilo enabled]) else AC_MSG_ERROR([Linux kernel requires functional MMU emulation]) fi fi dnl Natfeat CD-ROM driver AH_TEMPLATE([NFCDROM_SUPPORT], [Define if you want to use host CD-ROM driver]) NFCDROM_DRIVER="" case "$host_os" in linux*) if [[ "$ANDROID_OS" != "yes" ]]; then AC_DEFINE([NFCDROM_LINUX_SUPPORT], 1, [Define if you want to use Linux support as CD-ROM driver]) NFCDROM_DRIVER="linux" fi ;; mingw*|cygwin*) AC_DEFINE([NFCDROM_WIN32_SUPPORT], 1, [Define if you want to use Win32 support as CD-ROM driver]) NFCDROM_DRIVER="win32" ;; esac if test "$enable_sdl2" != yes; then test "$NFCDROM_DRIVER" != "" && NFCDROM_DRIVER="${NFCDROM_DRIVER}," NFCDROM_DRIVER="${NFCDROM_DRIVER}sdl" fi if test "$NFCDROM_DRIVER" != ""; then AC_DEFINE([NFCDROM_SUPPORT], 1) else NFCDROM_DRIVER=no fi PROVIDES_NF="$PROVIDES_NF cdrom($NFCDROM_DRIVER)" AM_CONDITIONAL([NFCDROM_SUPPORT], test "$NFCDROM_DRIVER" != "no") dnl Natfeat PCI driver if [[ "x$WANT_NFPCI" = "xyes" ]]; then case "$host_os" in linux*) AC_DEFINE([NFPCI_SUPPORT], 1, [Define if you want to use host PCI driver]) AC_DEFINE([NFPCI_LINUX_SUPPORT], 1, [Define if you want to use Linux PCI driver]) PROVIDES_NF="$PROVIDES_NF pci" ;; *) AC_MSG_ERROR([*** NatFeats PCI not supported by this OS ***]) WANT_NFPCI="no" ;; esac fi AM_CONDITIONAL([NFPCI_SUPPORT], test "$WANT_NFPCI" = "yes") AM_CONDITIONAL([NFPCI_LINUX_SUPPORT], test "$WANT_NFPCI" = "yes" -a "$OS_TYPE" = "linux") dnl Natfeat USB driver if [[ "x$WANT_USBHOST" = "xyes" -a "x$WITH_USBHOST" = "xyes" ]]; then AC_DEFINE([USBHOST_SUPPORT], 1, [Define if you want to use host USB driver]) LIBS="$LIBS $LIBUSB_LIBS" PROVIDES_NF="$PROVIDES_NF usb" else WANT_USBHOST=no fi AM_CONDITIONAL([USBHOST_SUPPORT], test "$WANT_USBHOST" = yes) dnl Natfeat SCSI driver AH_TEMPLATE([NFSCSI_SUPPORT], [Define if you want to use host SCSI driver]) if [[ "x$WANT_NFSCSI" = "xyes" ]]; then case "$host_os" in linux*) AC_CHECK_HEADERS(scsi/sg.h) if test "$ac_cv_header_scsi_sg_h" != yes; then WANT_NFSCSI=no fi ;; *) WANT_NFSCSI=no ;; esac if test "$WANT_NFSCSI" = "no"; then AC_MSG_WARN([*** NatFeats SCSI not supported by this OS ***]) else AC_DEFINE([NFSCSI_SUPPORT], 1) PROVIDES_NF="$PROVIDES_NF scsi" fi fi dnl Natfeat OSMesa driver AH_TEMPLATE([NFOSMESA_SUPPORT], [Define if you want to use host OSMesa driver]) if test "x$WANT_NFOSMESA" = "xyes"; then have_osmesa=no if test "x$PKG_CONFIG" != "x"; then PKG_CHECK_MODULES([OSMESA], [osmesa], have_osmesa=yes, :) fi if test "$have_osmesa" = "no"; then have_osmesa=yes AC_CHECK_HEADERS(GL/osmesa.h) fi if test "$have_osmesa" = "yes"; then CPPFLAGS="$CPPFLAGS $OSMESA_CFLAGS" AC_DEFINE([NFOSMESA_SUPPORT], 1) else WANT_NFOSMESA="no" fi fi AM_CONDITIONAL([NFOSMESA_SUPPORT], test "$WANT_NFOSMESA" = yes) if [[ "x$WANT_NFOSMESA" = "xyes" ]]; then PROVIDES_NF="$PROVIDES_NF osmesa" fi dnl Natfeat JPEG decoder AH_TEMPLATE([NFJPEG_SUPPORT], [Define if you want to use host JPEG decoder]) if [[ "x$WANT_NFJPEG" = "xyes" ]]; then if test "$have_jpeglib_lib" = "yes"; then AC_DEFINE([NFJPEG_SUPPORT]) PROVIDES_NF="$PROVIDES_NF jpeg" elif test "$have_sdlimage_h" = "yes" -a "$have_sdlimage_lib" = "yes"; then AC_DEFINE([NFJPEG_SUPPORT]) PROVIDES_NF="$PROVIDES_NF jpeg" else WANT_NFJPEG="no" AC_MSG_WARN([no jpeg library found, JPEG NF disabled]) fi fi AM_CONDITIONAL([NFJPEG_SUPPORT], test "$WANT_NFJPEG" = yes) dnl Natfeat VDI driver if [[ "x$WANT_NFVDI" = "xyes" ]]; then AC_DEFINE([NFVDI_SUPPORT], 1, [Define if you want to use NF VDI driver]) NFVDI_DRIVER="sw" if [[ "x$WANT_OPENGL" = "xyes" ]]; then NFVDI_DRIVER="opengl,$NFVDI_DRIVER" fi PROVIDES_NF="$PROVIDES_NF vdi($NFVDI_DRIVER)" fi AM_CONDITIONAL([NFVDI_SUPPORT], test "$WANT_NFVDI" = "yes") dnl Natfeat Clipboard driver AH_TEMPLATE([NFCLIPBRD_SUPPORT], [Define if you want to use Clipboard]) if [[ "x$WANT_NFCLIPBRD" = "xyes" ]]; then case $OS_TYPE in cygwin | mingw) AC_DEFINE([NFCLIPBRD_SUPPORT], 1) ;; darwin) AC_DEFINE([NFCLIPBRD_SUPPORT], 1) # X-Headers are not always available on macOS tmp_cppflags="$CPPFLAGS" # not nice to hardcode the path here, # but it is also hardcoded in the XCode project CPPFLAGS="$CPPFLAGS -I/usr/X11R6/include" AC_CHECK_HEADERS(X11/Xlib.h) CPPFLAGS="$tmp_cppflags" ;; beos | haiku) AC_DEFINE([NFCLIPBRD_SUPPORT], 1) LIBS="$LIBS -lbe" ;; *) AC_CHECK_LIB(X11, XOpenDisplay,[SDL_LIBS="$SDL_LIBS -lX11"],,[-L/usr/X11R6/lib]) if [[ "x$ac_cv_lib_X11_XOpenDisplay" = "xyes" ]]; then AC_DEFINE([NFCLIPBRD_SUPPORT], 1) else AC_MSG_ERROR([Sorry, NatFeat Clipboard not implemented on your platform yet]) WANT_NFCLIPBRD="no" fi ;; esac fi AM_CONDITIONAL([NFCLIPBRD_SUPPORT], test "$WANT_NFCLIPBRD" = yes) dnl Natfeat host exec driver if [[ "$WANT_NFEXEC" = yes -a "$WANT_HOSTFS" != yes ]]; then AC_MSG_WARN([NF exec disabled due to lack of support from HOSTFS]) WANT_NFEXEC=no fi if [[ "$WANT_NFEXEC" = yes ]]; then AC_DEFINE([NFEXEC_SUPPORT], 1, [Define if you want to use NF host exec driver]) PROVIDES_NF="$PROVIDES_NF exec" fi AM_CONDITIONAL([NFEXEC_SUPPORT], test "$WANT_NFEXEC" = "yes") if [[ "x$WANT_NFCLIPBRD" = "xyes" ]]; then PROVIDES_NF="$PROVIDES_NF clipboard" fi dnl Exception per second limiter if [[ "x$WANT_EPSLIMITER" = "xyes" ]]; then AC_DEFINE([ENABLE_EPSLIMITER], 1, [Define if you want to use EPS limiter]) fi dnl Linux /dev/rtc source timer if test "x$WANT_RTCTIMER" = "xyes" ; then if test "x$OS_TYPE" = "xlinux"; then AC_DEFINE([RTC_TIMER], 1, [Define if you want to use Linux /dev/rtc as source timer]) else WANT_RTCTIMER="no" fi fi dnl Linux/X86 hardware access for parallel port if test "x$WANT_PARALLELX86" = "xyes" ; then if test "x$OS_TYPE" = "xlinux" && $HAVE_I386; then AC_DEFINE([ENABLE_PARALLELX86], 1, [Define if you want to use Linux/X86 hardware access for parallel port]) else WANT_PARALLELX86="no" fi fi AM_CONDITIONAL([ENABLE_PARALLELX86], test "$WANT_PARALLELX86" = yes) dnl Linux /dev/parport access for parallel port if test "x$WANT_PARALLELPARPORT" = "xyes" ; then if test "x$OS_TYPE" = "xlinux"; then AC_DEFINE([ENABLE_PARALLELPARPORT], 1, [Define if you want to use Linux /dev/parport access for parallel port]) else WANT_PARALLELPARPORT="no" fi fi AM_CONDITIONAL([ENABLE_PARALLELPARPORT], test "$WANT_PARALLELPARPORT" = yes) dnl Linux /dev/sequencer MIDI support if test "x$OS_TYPE" = "xlinux"; then AC_DEFINE([ENABLE_MIDI_SEQUENCER], 1, [Define if you want to use Linux /dev/sequencer support]) fi dnl Serial port support if test "x$WANT_UNIXSERIALPORT" = "xyes" ; then if test "x$ac_cv_header_termios_h" = "xyes" -a "x$ac_cv_header_sys_ioctl_h" = "xyes"; then AC_DEFINE([ENABLE_SERIALUNIX], 1, [Define if you want to use /dev/ttyXXX access for serial port]) else WANT_UNIXSERIALPORT="no" fi fi AM_CONDITIONAL([ENABLE_SERIALUNIX], test "$WANT_UNIXSERIALPORT" = yes) AC_DEFINE_UNQUOTED([PROVIDES_NATFEATS], "$PROVIDES_NF", [List of Native Features]) dnl Data directory APP=aranym case "$host_os" in darwin*) if test "x$WITH_FINK" = "xyes"; then TARGET="\$(APP)" else TARGET="\$(APP_BUNDLE)" fi ARANYM_DATADIR="\"\\\"\${datadir}/\${APP}\\\"\"" ;; mingw*) TARGET="\$(APP)" ARANYM_DATADIR="\"\\\"./\${APP}\\\"\"" ;; *) TARGET="\$(APP)" ARANYM_DATADIR="\"\\\"\${datadir}/\${APP}\\\"\"" ;; esac CFLAGS="$CFLAGS -DARANYM_DATADIR=$ARANYM_DATADIR" CXXFLAGS="$CXXFLAGS -DARANYM_DATADIR=$ARANYM_DATADIR" dnl Remove the ARCHFLAGS again as they must be handled separately inside the Makefile. if [[ "x$ARCHFLAGS" != "x" ]]; then CPPFLAGS=`echo $CPPFLAGS | sed -e "s:$ARCHFLAGS::g"` LDFLAGS=`echo $LDFLAGS | sed -e "s:$ARCHFLAGS::g"` fi AH_BOTTOM([ #endif /* __ARANYM_CONFIG_H__ */ ]) dnl Generate Makefile. ARCH="$CPU_TYPE" AC_SUBST(ARCH) AC_SUBST(WFLAGS) AC_SUBST(DEFINES) AC_SUBST(DBGSP) AC_SUBST(TARGET) AC_SUBST(CPU_TYPE) AC_SUBST(ARCHFLAGS) AC_SUBST(SDL_CFLAGS) AC_SUBST(SDL_LIBS) AC_SUBST(BUNDLE_FRAMEWORKS) AC_SUBST(ZLIB_CFLAGS) AC_SUBST(ZLIB_LIBS) AC_SUBST(GENCOMP_ARCH) AC_SUBST(CXX_FOR_BUILD) AC_SUBST(CC_FOR_BUILD) AC_SUBST(CFLAGS_FOR_BUILD) AC_SUBST(CXXFLAGS_FOR_BUILD) AC_SUBST(LDFLAGS_FOR_BUILD) if test "$am__include" = "include"; then am__include=-include; fi AC_CONFIG_FILES([ Makefile src/Makefile src/uae_cpu/Makefile doc/Makefile ]) AC_OUTPUT dnl Print summary. echo echo "ARAnyM configuration summary:" echo echo "SDL version ................... ........ : $sdl_version" echo "Use exclusive spcflags handling ........ : $WANT_SPCFLAGS_EXCL" echo "Use JIT compiler ....................... : $WANT_JIT" echo "Use JIT compiler for FPU instructions .. : $WANT_JIT_FPU" echo "JIT debug mode ......................... : $WANT_JIT_DEBUG" echo "Floating-Point emulation core .......... : $FPE_CORE" echo "Assembly optimizations ................. : $ASM_OPTIMIZATIONS" echo "Addressing mode ........................ : $ADDRESSING_MODE" ATC_TYPE_MSG= if [[ "x$WANT_MMU" = "xyes" ]]; then case "$ATC_TYPE" in full) ATC_TYPE_MSG=" (with ATC)";; small) ATC_TYPE_MSG=" (with small ATC)";; no) ATC_TYPE_MSG=" (without ATC)";; esac fi echo "Full MMU support ....................... : $WANT_MMU$ATC_TYPE_MSG" echo "Linux /dev/rtc source timer ............ : $WANT_RTCTIMER" echo "Real STOP implementation ............... : $WANT_REALSTOP" echo "DSP 56001 support ...................... : $WANT_DSP" echo "DSP 56001 disassembly support .......... : $WANT_DSP_DISASM" echo "Debugger ............................... : $USE_DEBUGGER" echo "Check memory ........................... : $MEMORY_CHECK" echo "First 2kB of RAM Supervisor protected... : $WANT_PROTECT2K" echo "FastRAM fixed size ..................... : $WANT_FIXEDFASTRAM" echo "Fixed position of VideoRAM ............. : $WANT_FIXEDVIDEORAM" echo "Blitter memmove acceleration ........... : $WANT_BLITMEMMOVE" echo "Blitter SDL blit acceleration .......... : $WANT_BLITSDLBLIT" echo "Support for hostfs ..................... : $WANT_HOSTFS" echo "Support for ethernet ................... : $HAVE_ETHERNET" echo "GUI .................................... : $WANT_SDLGUI" echo "OpenGL ................................. : $WANT_OPENGL" echo "Linux-m68k loader ...................... : $WANT_LILO" echo "Zlib ................................... : $have_zlib" echo "libusb-1.0.............................. : $WITH_USBHOST" echo "NatFeat CD-ROM driver .................. : $NFCDROM_DRIVER" echo "NatFeat PCI driver ..................... : $WANT_NFPCI" echo "NatFeat USB driver ..................... : $WANT_USBHOST" echo "NatFeat OSMesa driver .................. : $WANT_NFOSMESA" echo "NatFeat JPEG decoder ................... : $WANT_NFJPEG" echo "NatFeat Clipboard ...................... : $WANT_NFCLIPBRD" echo "NatFeat VDI driver ..................... : $WANT_NFVDI" echo "NatFeat SCSI driver .................... : $WANT_NFSCSI" echo "NatFeat host exec driver ............... : $WANT_NFEXEC" echo "Exception per second limiter ........... : $WANT_EPSLIMITER" echo "Linux/X86 h/w access for parallel port.. : $WANT_PARALLELX86" echo "Linux /dev/parport for parallel port.... : $WANT_PARALLELPARPORT" echo "Unix /dev/ttySn for serial port......... : $WANT_UNIXSERIALPORT" echo "Use C++ exceptions for m68k exceptions.. : $WANT_CXX_EXCEPTIONS" echo echo "Configuration done. Now type \"make\" (or \"gmake\")." aranym-1.1.0/config.sub0000775000175000017500000010724313454637621013173 0ustar joyjoy#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2017 Free Software Foundation, Inc. timestamp='2017-04-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia16 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pru \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | wasm32 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pru-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | wasm32-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; asmjs) basic_machine=asmjs-unknown ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; e500v[12]) basic_machine=powerpc-unknown os=$os"spe" ;; e500v[12]-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` os=$os"spe" ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; nsx-tandem) basic_machine=nsx-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; wasm32) basic_machine=wasm32-unknown ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -ios) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; pru-*) os=-elf ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: aranym-1.1.0/config.guess0000775000175000017500000012710413454637621013526 0ustar joyjoy#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2017 Free Software Foundation, Inc. timestamp='2017-05-27' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac case "${UNAME_MACHINE}" in i?86) test -z "$VENDOR" && VENDOR=pc ;; *) test -z "$VENDOR" && VENDOR=unknown ;; esac test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || \ echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "${UNAME_MACHINE_ARCH}" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-${VENDOR}-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-${VENDOR}-openbsd${UNAME_RELEASE} exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo ${UNAME_MACHINE_ARCH}-${VENDOR}-libertybsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-${VENDOR}-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-${VENDOR}-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-${VENDOR}-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-${VENDOR}-mirbsd${UNAME_RELEASE} exit ;; *:Sortix:*:*) echo ${UNAME_MACHINE}-${VENDOR}-sortix exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-${VENDOR}-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-${VENDOR}-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-${VENDOR}-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-${VENDOR}-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-${VENDOR}-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-${VENDOR}-osf1mk else echo ${UNAME_MACHINE}-${VENDOR}-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-${VENDOR}-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-${VENDOR}-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac echo ${UNAME_PROCESSOR}-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-${VENDOR}-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-${VENDOR}-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-${VENDOR}-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-${VENDOR}-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-${VENDOR}-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-${VENDOR}-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-${VENDOR}-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; e2k:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; k1om:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux-${LIBC}"; exit; } ;; mips64el:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; openrisc*:Linux:*:*) echo or1k-${VENDOR}-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-${VENDOR}-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-${VENDOR}-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-${VENDOR}-linux-${LIBC} ;; PA8*) echo hppa2.0-${VENDOR}-linux-${LIBC} ;; *) echo hppa-${VENDOR}-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-${VENDOR}-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-${VENDOR}-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-${VENDOR}-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-${VENDOR}-linux-${LIBC} exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-${VENDOR}-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-${VENDOR}-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-${VENDOR}-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-${VENDOR}-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-${VENDOR}-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-${VENDOR}-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-*:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-*:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; NSX-*:NONSTOP_KERNEL:*:*) echo nsx-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-${VENDOR}-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-${VENDOR}-tops10 exit ;; *:TENEX:*:*) echo pdp10-${VENDOR}-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-${VENDOR}-tops20 exit ;; *:ITS:*:*) echo pdp10-${VENDOR}-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-${VENDOR}-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-${VENDOR}-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-${VENDOR}-onefs exit ;; esac cat >&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: aranym-1.1.0/atari/0000775000175000017500000000000013454637621012301 5ustar joyjoyaranym-1.1.0/atari/usbhost/0000775000175000017500000000000013454637621013770 5ustar joyjoyaranym-1.1.0/atari/usbhost/usbhost_nfapi.h0000664000175000017500000000237713454637621017016 0ustar joyjoy/* NatFeat USB Host chip emulator ARAnyM (C) 2011-2014 David Gálvez This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _USBHOST_NFAPI_H #define _USBHOST_NFAPI_H /* if you change anything in the enum {} below you have to increase this ARAUSBHOST_NFAPI_VERSION! */ #define USBHOST_NFAPI_VERSION 0x00000003 enum { GET_VERSION = 0, /* no parameters, return NFAPI_VERSION in d0 */ USBHOST_INTLEVEL, USBHOST_RH_PORT_STATUS, USBHOST_LOWLEVEL_INIT, USBHOST_LOWLEVEL_STOP, USBHOST_SUBMIT_CONTROL_MSG, USBHOST_SUBMIT_INT_MSG, USBHOST_SUBMIT_BULK_MSG }; #define USBHOST(a) (nfUsbHostID + a) #endif /* _USBHOST_NFAPI_H */ aranym-1.1.0/atari/usbhost/usb_defs.h0000664000175000017500000001751513454637621015744 0ustar joyjoy/* * (C) Copyright 2001 * Denis Peter, MPL AG Switzerland * * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * * Note: Part of this code has been derived from linux * */ #ifndef _USB_DEFS_H_ #define _USB_DEFS_H_ /* USB constants */ /* Device and/or Interface Class codes */ #define USB_CLASS_PER_INTERFACE 0 /* for DeviceClass */ #define USB_CLASS_AUDIO 1 #define USB_CLASS_COMM 2 #define USB_CLASS_HID 3 #define USB_CLASS_PRINTER 7 #define USB_CLASS_MASS_STORAGE 8 #define USB_CLASS_HUB 9 #define USB_CLASS_DATA 10 #define USB_CLASS_VENDOR_SPEC 0xff /* some HID sub classes */ #define USB_SUB_HID_NONE 0 #define USB_SUB_HID_BOOT 1 /* some UID Protocols */ #define USB_PROT_HID_NONE 0 #define USB_PROT_HID_KEYBOARD 1 #define USB_PROT_HID_MOUSE 2 /* Sub STORAGE Classes */ #define US_SC_RBC 1 /* Typically, flash devices */ #define US_SC_8020 2 /* CD-ROM */ #define US_SC_QIC 3 /* QIC-157 Tapes */ #define US_SC_UFI 4 /* Floppy */ #define US_SC_8070 5 /* Removable media */ #define US_SC_SCSI 6 /* Transparent */ #define US_SC_MIN US_SC_RBC #define US_SC_MAX US_SC_SCSI /* STORAGE Protocols */ #define US_PR_CB 1 /* Control/Bulk w/o interrupt */ #define US_PR_CBI 0 /* Control/Bulk/Interrupt */ #define US_PR_BULK 0x50 /* bulk only */ /* USB types */ #define USB_TYPE_STANDARD (0x00 << 5) #define USB_TYPE_CLASS (0x01 << 5) #define USB_TYPE_VENDOR (0x02 << 5) #define USB_TYPE_RESERVED (0x03 << 5) /* USB recipients */ #define USB_RECIP_DEVICE 0x00 #define USB_RECIP_INTERFACE 0x01 #define USB_RECIP_ENDPOINT 0x02 #define USB_RECIP_OTHER 0x03 /* USB directions */ #define USB_DIR_OUT 0 #define USB_DIR_IN 0x80 /* USB device speeds */ #define USB_SPEED_FULL 0x0 /* 12Mbps */ #define USB_SPEED_LOW 0x1 /* 1.5Mbps */ #define USB_SPEED_HIGH 0x2 /* 480Mbps */ #define USB_SPEED_RESERVED 0x3 /* Descriptor types */ #define USB_DT_DEVICE 0x01 #define USB_DT_CONFIG 0x02 #define USB_DT_STRING 0x03 #define USB_DT_INTERFACE 0x04 #define USB_DT_ENDPOINT 0x05 #define USB_DT_HID (USB_TYPE_CLASS | 0x01) #define USB_DT_REPORT (USB_TYPE_CLASS | 0x02) #define USB_DT_PHYSICAL (USB_TYPE_CLASS | 0x03) #define USB_DT_HUB (USB_TYPE_CLASS | 0x09) /* Descriptor sizes per descriptor type */ #define USB_DT_DEVICE_SIZE 18 #define USB_DT_CONFIG_SIZE 9 #define USB_DT_INTERFACE_SIZE 9 #define USB_DT_ENDPOINT_SIZE 7 #define USB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */ #define USB_DT_HUB_NONVAR_SIZE 7 #define USB_DT_HID_SIZE 9 /* Endpoints */ #define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */ #define USB_ENDPOINT_DIR_MASK 0x80 #define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */ #define USB_ENDPOINT_XFER_CONTROL 0 #define USB_ENDPOINT_XFER_ISOC 1 #define USB_ENDPOINT_XFER_BULK 2 #define USB_ENDPOINT_XFER_INT 3 /* USB Packet IDs (PIDs) */ #define USB_PID_UNDEF_0 0xf0 #define USB_PID_OUT 0xe1 #define USB_PID_ACK 0xd2 #define USB_PID_DATA0 0xc3 #define USB_PID_UNDEF_4 0xb4 #define USB_PID_SOF 0xa5 #define USB_PID_UNDEF_6 0x96 #define USB_PID_UNDEF_7 0x87 #define USB_PID_UNDEF_8 0x78 #define USB_PID_IN 0x69 #define USB_PID_NAK 0x5a #define USB_PID_DATA1 0x4b #define USB_PID_PREAMBLE 0x3c #define USB_PID_SETUP 0x2d #define USB_PID_STALL 0x1e #define USB_PID_UNDEF_F 0x0f /* Standard requests */ #define USB_REQ_GET_STATUS 0x00 #define USB_REQ_CLEAR_FEATURE 0x01 #define USB_REQ_SET_FEATURE 0x03 #define USB_REQ_SET_ADDRESS 0x05 #define USB_REQ_GET_DESCRIPTOR 0x06 #define USB_REQ_SET_DESCRIPTOR 0x07 #define USB_REQ_GET_CONFIGURATION 0x08 #define USB_REQ_SET_CONFIGURATION 0x09 #define USB_REQ_GET_INTERFACE 0x0A #define USB_REQ_SET_INTERFACE 0x0B #define USB_REQ_SYNCH_FRAME 0x0C /* HID requests */ #define USB_REQ_GET_REPORT 0x01 #define USB_REQ_GET_IDLE 0x02 #define USB_REQ_GET_PROTOCOL 0x03 #define USB_REQ_SET_REPORT 0x09 #define USB_REQ_SET_IDLE 0x0A #define USB_REQ_SET_PROTOCOL 0x0B /* "pipe" definitions */ #define PIPE_ISOCHRONOUS 0 #define PIPE_INTERRUPT 1 #define PIPE_CONTROL 2 #define PIPE_BULK 3 #define PIPE_DEVEP_MASK 0x0007ff00 #define USB_ISOCHRONOUS 0 #define USB_INTERRUPT 1 #define USB_CONTROL 2 #define USB_BULK 3 /* USB-status codes: */ #define USB_ST_ACTIVE 0x1 /* TD is active */ #define USB_ST_STALLED 0x2 /* TD is stalled */ #define USB_ST_BUF_ERR 0x4 /* buffer error */ #define USB_ST_BABBLE_DET 0x8 /* Babble detected */ #define USB_ST_NAK_REC 0x10 /* NAK Received*/ #define USB_ST_CRC_ERR 0x20 /* CRC/timeout Error */ #define USB_ST_BIT_ERR 0x40 /* Bitstuff error */ #define USB_ST_NOT_PROC 0x80000000L /* Not yet processed */ /************************************************************************* * Hub defines */ /* * Hub request types */ #define USB_RT_HUB (USB_TYPE_CLASS | USB_RECIP_DEVICE) #define USB_RT_PORT (USB_TYPE_CLASS | USB_RECIP_OTHER) /* * Hub Class feature numbers */ #define C_HUB_LOCAL_POWER 0 #define C_HUB_OVER_CURRENT 1 /* * Port feature numbers */ #define USB_PORT_FEAT_CONNECTION 0 #define USB_PORT_FEAT_ENABLE 1 #define USB_PORT_FEAT_SUSPEND 2 #define USB_PORT_FEAT_OVER_CURRENT 3 #define USB_PORT_FEAT_RESET 4 #define USB_PORT_FEAT_POWER 8 #define USB_PORT_FEAT_LOWSPEED 9 #define USB_PORT_FEAT_HIGHSPEED 10 #define USB_PORT_FEAT_C_CONNECTION 16 #define USB_PORT_FEAT_C_ENABLE 17 #define USB_PORT_FEAT_C_SUSPEND 18 #define USB_PORT_FEAT_C_OVER_CURRENT 19 #define USB_PORT_FEAT_C_RESET 20 /* wPortStatus bits */ #define USB_PORT_STAT_CONNECTION 0x0001 #define USB_PORT_STAT_ENABLE 0x0002 #define USB_PORT_STAT_SUSPEND 0x0004 #define USB_PORT_STAT_OVERCURRENT 0x0008 #define USB_PORT_STAT_RESET 0x0010 #define USB_PORT_STAT_POWER 0x0100 #define USB_PORT_STAT_LOW_SPEED 0x0200 #define USB_PORT_STAT_HIGH_SPEED 0x0400 /* support for EHCI */ #define USB_PORT_STAT_SPEED \ (USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED) /* wPortChange bits */ #define USB_PORT_STAT_C_CONNECTION 0x0001 #define USB_PORT_STAT_C_ENABLE 0x0002 #define USB_PORT_STAT_C_SUSPEND 0x0004 #define USB_PORT_STAT_C_OVERCURRENT 0x0008 #define USB_PORT_STAT_C_RESET 0x0010 /* wHubCharacteristics (masks) */ #define HUB_CHAR_LPSM 0x0003 #define HUB_CHAR_COMPOUND 0x0004 #define HUB_CHAR_OCPM 0x0018 /* *Hub Status & Hub Change bit masks */ #define HUB_STATUS_LOCAL_POWER 0x0001 #define HUB_STATUS_OVERCURRENT 0x0002 #define HUB_CHANGE_LOCAL_POWER 0x0001 #define HUB_CHANGE_OVERCURRENT 0x0002 #endif /*_USB_DEFS_H_ */ aranym-1.1.0/atari/usbhost/usb.h0000664000175000017500000002036513454637621014740 0ustar joyjoy/* * Modified for Aranym Native Features by David Gálvez 2010-2014 * Modified from u-boot sources for Atari by Didier Mequignon 2009 * * * (C) Copyright 2001 * Denis Peter, MPL AG Switzerland * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * * Note: Part of this code has been derived from linux * */ #ifndef _USB_H_ #define _USB_H_ #include "../../atari/usbhost/usb_defs.h" /* Everything is aribtrary */ #define USB_ALTSETTINGALLOC 4 #define USB_MAXALTSETTING 128 /* Hard limit */ #define USB_MAX_DEVICE 32 #define USB_MAXCONFIG 8 #define USB_MAXINTERFACES 8 #define USB_MAXENDPOINTS 16 #define USB_MAXCHILDREN 8 /* This is arbitrary */ #define USB_MAX_HUB 16 #define USB_CNTL_TIMEOUT 100 /* 100ms timeout */ /* String descriptor */ struct usb_string_descriptor { uint8 bLength; uint8 bDescriptorType; uint16 wData[1]; } __attribute__ ((packed)); /* device request (setup) */ struct devrequest { uint8 requesttype; uint8 request; uint16 value; uint16 index; uint16 length; } __attribute__ ((packed)); /* All standard descriptors have these 2 fields in common */ struct usb_descriptor_header { uint8 bLength; uint8 bDescriptorType; } __attribute__ ((packed)); /* Device descriptor */ struct usb_device_descriptor { uint8 bLength; uint8 bDescriptorType; uint16 bcdUSB; uint8 bDeviceClass; uint8 bDeviceSubClass; uint8 bDeviceProtocol; uint8 bMaxPacketSize0; uint16 idVendor; uint16 idProduct; uint16 bcdDevice; uint8 iManufacturer; uint8 iProduct; uint8 iSerialNumber; uint8 bNumConfigurations; } __attribute__ ((packed)); /* Endpoint descriptor */ struct usb_endpoint_descriptor { uint8 bLength; uint8 bDescriptorType; uint8 bEndpointAddress; uint8 bmAttributes; uint16 wMaxPacketSize; uint8 bInterval; uint8 bRefresh; uint8 bSynchAddress; } __attribute__ ((packed)) __attribute__ ((aligned(2))); /* Interface descriptor */ struct usb_interface_descriptor { uint8 bLength; uint8 bDescriptorType; uint8 bInterfaceNumber; uint8 bAlternateSetting; uint8 bNumEndpoints; uint8 bInterfaceClass; uint8 bInterfaceSubClass; uint8 bInterfaceProtocol; uint8 iInterface; uint8 no_of_ep; uint8 num_altsetting; uint8 act_altsetting; struct usb_endpoint_descriptor ep_desc[USB_MAXENDPOINTS]; } __attribute__ ((packed)); /* Configuration descriptor information.. */ struct usb_config_descriptor { uint8 bLength; uint8 bDescriptorType; uint16 wTotalLength; uint8 bNumInterfaces; uint8 bConfigurationValue; uint8 iConfiguration; uint8 bmAttributes; uint8 MaxPower; uint8 no_of_if; /* number of interfaces */ struct usb_interface_descriptor if_desc[USB_MAXINTERFACES]; } __attribute__ ((packed)); enum { /* Maximum packet size; encoded as 0,1,2,3 = 8,16,32,64 */ PACKET_SIZE_8 = 0, PACKET_SIZE_16 = 1, PACKET_SIZE_32 = 2, PACKET_SIZE_64 = 3, }; /* * Calling this entity a "pipe" is glorifying it. A USB pipe * is something embarrassingly simple: it basically consists * of the following information: * - device number (7 bits) * - endpoint number (4 bits) * - current Data0/1 state (1 bit) * - direction (1 bit) * - speed (2 bits) * - max packet size (2 bits: 8, 16, 32 or 64) * - pipe type (2 bits: control, interrupt, bulk, isochronous) * * That's 18 bits. Really. Nothing more. And the USB people have * documented these eighteen bits as some kind of glorious * virtual data structure. * * Let's not fall in that trap. We'll just encode it as a simple * unsigned int. The encoding is: * * - max size: bits 0-1 (00 = 8, 01 = 16, 10 = 32, 11 = 64) * - direction: bit 7 (0 = Host-to-Device [Out], * (1 = Device-to-Host [In]) * - device: bits 8-14 * - endpoint: bits 15-18 * - Data0/1: bit 19 * - speed: bit 26 (0 = Full, 1 = Low Speed, 2 = High) * - pipe type: bits 30-31 (00 = isochronous, 01 = interrupt, * 10 = control, 11 = bulk) * * Why? Because it's arbitrary, and whatever encoding we select is really * up to us. This one happens to share a lot of bit positions with the UHCI * specification, so that much of the uhci driver can just mask the bits * appropriately. */ /* Create various pipes... */ #define create_pipe(dev,endpoint) \ (((dev)->devnum << 8) | (endpoint << 15) | \ ((dev)->speed << 26) | (dev)->maxpacketsize) #define default_pipe(dev) ((dev)->speed << 26) #define usb_sndctrlpipe(dev, endpoint) ((PIPE_CONTROL << 30) | \ create_pipe(dev, endpoint)) #define usb_rcvctrlpipe(dev, endpoint) ((PIPE_CONTROL << 30) | \ create_pipe(dev, endpoint) | \ USB_DIR_IN) #define usb_sndisocpipe(dev, endpoint) ((PIPE_ISOCHRONOUS << 30) | \ create_pipe(dev, endpoint)) #define usb_rcvisocpipe(dev, endpoint) ((PIPE_ISOCHRONOUS << 30) | \ create_pipe(dev, endpoint) | \ USB_DIR_IN) #define usb_sndbulkpipe(dev, endpoint) ((PIPE_BULK << 30) | \ create_pipe(dev, endpoint)) #define usb_rcvbulkpipe(dev, endpoint) ((PIPE_BULK << 30) | \ create_pipe(dev, endpoint) | \ USB_DIR_IN) #define usb_sndintpipe(dev, endpoint) ((PIPE_INTERRUPT << 30) | \ create_pipe(dev, endpoint)) #define usb_rcvintpipe(dev, endpoint) ((PIPE_INTERRUPT << 30) | \ create_pipe(dev, endpoint) | \ USB_DIR_IN) #define usb_snddefctrl(dev) ((PIPE_CONTROL << 30) | \ default_pipe(dev)) #define usb_rcvdefctrl(dev) ((PIPE_CONTROL << 30) | \ default_pipe(dev) | \ USB_DIR_IN) /* The D0/D1 toggle bits */ #define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> ep) & 1) #define usb_dotoggle(dev, ep, out) ((dev)->toggle[out] ^= (1 << ep)) #define usb_settoggle(dev, ep, out, bit) ((dev)->toggle[out] = \ ((dev)->toggle[out] & \ ~(1 << ep)) | ((bit) << ep)) /* Endpoint halt control/status */ #define usb_endpoint_out(ep_dir) (((ep_dir >> 7) & 1) ^ 1) #define usb_endpoint_halt(dev, ep, out) ((dev)->halted[out] |= (1 << (ep))) #define usb_endpoint_running(dev, ep, out) ((dev)->halted[out] &= ~(1 << (ep))) #define usb_endpoint_halted(dev, ep, out) ((dev)->halted[out] & (1 << (ep))) #define usb_packetid(pipe) (((pipe) & USB_DIR_IN) ? USB_PID_IN : \ USB_PID_OUT) #define usb_pipeout(pipe) ((((pipe) >> 7) & 1) ^ 1) #define usb_pipein(pipe) (((pipe) >> 7) & 1) #define usb_pipedevice(pipe) (((pipe) >> 8) & 0x7f) #define usb_pipe_endpdev(pipe) (((pipe) >> 8) & 0x7ff) #define usb_pipeendpoint(pipe) (((pipe) >> 15) & 0xf) #define usb_pipedata(pipe) (((pipe) >> 19) & 1) #define usb_pipespeed(pipe) (((pipe) >> 26) & 3) #define usb_pipeslow(pipe) (usb_pipespeed(pipe) == USB_SPEED_LOW) #define usb_pipetype(pipe) (((pipe) >> 30) & 3) #define usb_pipeisoc(pipe) (usb_pipetype((pipe)) == PIPE_ISOCHRONOUS) #define usb_pipeint(pipe) (usb_pipetype((pipe)) == PIPE_INTERRUPT) #define usb_pipecontrol(pipe) (usb_pipetype((pipe)) == PIPE_CONTROL) #define usb_pipebulk(pipe) (usb_pipetype((pipe)) == PIPE_BULK) /************************************************************************* * Hub Stuff */ struct usb_port_status { uint16 wPortStatus; uint16 wPortChange; } __attribute__ ((packed)); struct usb_hub_status { uint16 wHubStatus; uint16 wHubChange; } __attribute__ ((packed)); /* Hub descriptor */ struct usb_hub_descriptor { uint8 bLength; uint8 bDescriptorType; uint8 bNbrPorts; uint16 wHubCharacteristics; uint8 bPwrOn2PwrGood; uint8 bHubContrCurrent; uint8 DeviceRemovable[(USB_MAXCHILDREN+1+7)/8]; uint8 PortPowerCtrlMask[(USB_MAXCHILDREN+1+7)/8]; /* DeviceRemovable and PortPwrCtrlMask want to be variable-length bitmaps that hold max 255 entries. (bit0 is ignored) */ } __attribute__ ((packed)); struct usb_hub_device { struct usb_device *pusb_dev; struct usb_hub_descriptor desc; }; #endif /*_USB_H_ */ aranym-1.1.0/atari/tools/0000775000175000017500000000000013454637621013441 5ustar joyjoyaranym-1.1.0/atari/tools/stripex.c0000664000175000017500000002350413454637621015307 0ustar joyjoy/* * stripex.c * strip symbol table and GNU binutils aexec header from TOS executables. * Needed e.g. for SLB shared library files or CPX modules to get the header back * to the start of the text segment. * * BUGS: * - relocation table is not checked for validity. If it is corrupted, * this program might crash and/or create corrupted output files. * Should rarely be a problem, since the kernel does not check the table either. */ #include #include #include #include #include #include #ifndef O_BINARY # ifdef _O_BINARY # define O_BINARY _O_BINARY # else # define O_BINARY 0 # endif #endif #define NEWBUFSIZ 16384L static unsigned char mybuf[NEWBUFSIZ]; static int verbose; static char tmpname[1024]; #if defined(__atarist__) && defined(__GNUC__) long _stksize = 30000; #endif struct aexec { short a_magic; /* magic number */ unsigned long a_text; /* size of text segment */ unsigned long a_data; /* size of initialized data */ unsigned long a_bss; /* size of uninitialized data */ unsigned long a_syms; /* size of symbol table */ unsigned long a_AZero1; /* always zero */ unsigned long a_AZero2; /* always zero */ unsigned short a_isreloc; /* is reloc info present */ }; #define CMAGIC 0x601A /* contiguous text */ #define SIZEOF_SHORT 2 #define SIZEOF_LONG 4 #define SIZEOF_AEXEC (SIZEOF_SHORT + (6 * SIZEOF_LONG) + SIZEOF_SHORT) #define SIZEOF_BINUTILS_AEXEC 228 static char *f_basename(char *name) { char *p1, *p2; p1 = strrchr(name, '/'); p2 = strrchr(name, '\\'); if (p1 == NULL || p2 > p1) p1 = p2; if (p1 == NULL) p1 = name; else p1++; return p1; } static unsigned short read_beword(const unsigned char *p) { return (p[0] << 8) | p[1]; } static unsigned long read_belong(const unsigned char *p) { return ((unsigned long)read_beword(p) << 16) | read_beword(p + 2); } static void write_beword(unsigned char *p, unsigned short v) { p[0] = (v >> 8) & 0xff; p[1] = (v ) & 0xff; } static void write_belong(unsigned char *p, unsigned long v) { p[0] = (unsigned char)((v >> 24) & 0xff); p[1] = (unsigned char)((v >> 16) & 0xff); p[2] = (unsigned char)((v >> 8) & 0xff); p[3] = (unsigned char)((v ) & 0xff); } /* * read header -- return -1 on error */ static int read_head(int fd, struct aexec *a) { unsigned char buf[SIZEOF_AEXEC]; if (read(fd, buf, SIZEOF_AEXEC) != SIZEOF_AEXEC) return -1; a->a_magic = read_beword(buf); a->a_text = read_belong(buf + 2); a->a_data = read_belong(buf + 6); a->a_bss = read_belong(buf + 10); a->a_syms = read_belong(buf + 14); a->a_AZero1 = read_belong(buf + 18); a->a_AZero2 = read_belong(buf + 22); a->a_isreloc = read_beword(buf + 26); return SIZEOF_AEXEC; } static int write_head(int fd, const struct aexec *a) { unsigned char buf[SIZEOF_AEXEC]; write_beword(buf, a->a_magic); write_belong(buf + 2, a->a_text); write_belong(buf + 6, a->a_data); write_belong(buf + 10, a->a_bss); write_belong(buf + 14, a->a_syms); write_belong(buf + 18, a->a_AZero1); write_belong(buf + 22, a->a_AZero2); write_beword(buf + 26, a->a_isreloc); if (write(fd, buf, SIZEOF_AEXEC) != SIZEOF_AEXEC) return -1; return SIZEOF_AEXEC; } /* * copy from, to in NEWBUFSIZ chunks upto bytes or EOF whichever occurs first * returns # of bytes copied */ static long copy(int from, int to, long bytes) { register long todo; long done = 0L; long remaining = bytes; long actual; while (done != bytes) { todo = (remaining > NEWBUFSIZ) ? NEWBUFSIZ : remaining; if ((actual = read(from, mybuf, todo)) != todo) { if (actual < 0) { fprintf(stderr, "Error Reading\n"); return -done; } } if (write(to, mybuf, actual) != actual) { fprintf(stderr, "Error Writing\n"); return -done; } done += actual; if (actual != todo) /* eof reached */ return done; remaining -= actual; } return done; } static int relocate(const char *name, int fd, long reloc_pos) { if (lseek(fd, reloc_pos, SEEK_SET) != reloc_pos) { perror(name); return 0; } if (read(fd, mybuf, SIZEOF_LONG) != SIZEOF_LONG) { perror(name); return 0; } write_belong(mybuf, read_belong(mybuf) - SIZEOF_BINUTILS_AEXEC); if (lseek(fd, reloc_pos, SEEK_SET) != reloc_pos) { perror(name); return 0; } if (write(fd, mybuf, SIZEOF_LONG) != SIZEOF_LONG) { perror(name); return 0; } return 1; } /* copy TOS relocation table from `from` to `to`. Copy bytes until NUL byte or first 4 bytes if == 0l. returns length of relocation table or -1 in case of an error */ static long copy_relocs(const char *name, int from, int to) { long res = 0; long bytes; long rbytes = 0; long first_relo; long reloc_pos; res = read(from, mybuf, SIZEOF_LONG); if (res != 0 && res != SIZEOF_LONG) { fprintf(stderr, "Error reading\n"); return -1; } if (res == 0) { /* I think empty relocation tables are allowed, but could cause trouble with certain programs */ fprintf(stderr, "Warning: %s: No relocation table\n", name); return 0; } first_relo = read_belong(mybuf); if (first_relo != 0) { first_relo -= SIZEOF_BINUTILS_AEXEC; write_belong(mybuf, first_relo); } if (write(to, mybuf, res) != res) { fprintf(stderr, "%s: Error writing\n", name); return -1; } rbytes = SIZEOF_LONG; if (first_relo == 0) return rbytes; /* This is a clean version of an empty relocation table */ reloc_pos = SIZEOF_AEXEC + first_relo; if (relocate(name, to, reloc_pos) == 0) return -1; for (;;) { lseek(to, 0l, SEEK_END); if ((bytes = read(from, mybuf, 1)) < 0) { fprintf(stderr, "%s: Error reading\n", name); return -1; } if (bytes == 0) { fprintf(stderr, "Warning: %s: Unterminated relocation table\n", name); return rbytes; } if (write(to, mybuf, bytes) != bytes) { fprintf(stderr, "%s: Error writing\n", name); return -1; } rbytes += bytes; if (mybuf[0] == 0) break; if (mybuf[0] == 1) { reloc_pos += 254; } else { reloc_pos += mybuf[0]; if (relocate(name, to, reloc_pos) == 0) return -1; } } return rbytes; } static int strip(const char *name) { register int fd; register int tfd; register long count, rbytes, sbytes; struct aexec ahead; unsigned char buf[2 * SIZEOF_LONG]; long magic1, magic2; if ((fd = open(name, O_RDONLY | O_BINARY, 0755)) < 0) { perror(name); return 1; } if ((tfd = open(tmpname, O_RDWR | O_BINARY | O_TRUNC | O_CREAT, 0755)) < 0) { perror(tmpname); close(fd); return 1; } if (read_head(fd, &ahead) < 0 || read(fd, buf, (2 * SIZEOF_LONG)) != (2 * SIZEOF_LONG)) { perror(name); close(tfd); close(fd); return 1; } if (ahead.a_magic != CMAGIC) { fprintf(stderr, "%s: Bad Magic number\n", name); close(tfd); close(fd); return 1; } magic1 = read_belong(buf); magic2 = read_belong(buf + SIZEOF_LONG); if (!((magic1 == 0x283a001aL && magic2 == 0x4efb48faL) || /* Original binutils */ (magic1 == 0x203a001aL && magic2 == 0x4efb08faL))) /* binutils >= 2.18-mint-20080209 */ { fprintf(stderr, "%s: no aexec header\n", name); close(tfd); close(fd); return 1; } sbytes = ahead.a_syms; if (verbose) { printf("%s: text=0x%lx, data=0x%lx, syms=0x%lx\n", name, ahead.a_text, ahead.a_data, ahead.a_syms); } ahead.a_syms = 0; ahead.a_text -= SIZEOF_BINUTILS_AEXEC; if (ahead.a_AZero1 == 0x4d694e54l) /* 'MiNT' extended exec header magic */ ahead.a_AZero1 = 0; if (write_head(tfd, &ahead) < 0) { close(tfd); close(fd); return 1; } if (lseek(fd, SIZEOF_BINUTILS_AEXEC - (2 * SIZEOF_LONG), SEEK_CUR) < 0) { fprintf(stderr, "%s: seek error\n", name); close(tfd); close(fd); return 1; } if (verbose) { printf("%s: skipped 0x%x bytes aexec header\n", name, SIZEOF_BINUTILS_AEXEC); } count = ahead.a_text + ahead.a_data; if (copy(fd, tfd, count) != count) { close(tfd); close(fd); return 1; } if (verbose) { printf("%s: copied 0x%lx bytes text+data\n", name, count); } if (lseek(fd, sbytes, SEEK_CUR) < 0) { fprintf(stderr, "%s: seek error\n", name); close(tfd); close(fd); return 1; } if (sbytes != 0 && verbose) { printf("%s: skipped 0x%lx bytes symbols\n", name, sbytes); } rbytes = 0; if (ahead.a_isreloc == 0) { if ((rbytes = copy_relocs(name, fd, tfd)) < 0) { close(tfd); close(fd); return 1; } if (verbose) { printf("%s: copied 0x%lx bytes relocation table\n", name, rbytes); } } if (verbose) { unsigned long pos, size; pos = lseek(fd, 0L, SEEK_CUR); lseek(fd, 0L, SEEK_END); size = lseek(fd, 0L, SEEK_CUR); lseek(fd, pos, SEEK_SET); if (size > pos) { printf("%s: skipped 0x%lx bytes trailer\n", name, size - pos); } } close(tfd); close(fd); if (rename(tmpname, name) == 0) return 0; /* try to rename it */ if ((fd = open(name, O_WRONLY | O_BINARY | O_TRUNC | O_CREAT, 0755)) < 0) { perror(name); return 1; } if ((tfd = open(tmpname, O_RDONLY | O_BINARY, 0755)) < 0) { perror(tmpname); close(fd); return 1; } count = SIZEOF_AEXEC + ahead.a_text + ahead.a_data + rbytes; if (copy(tfd, fd, count) != count) { close(tfd); close(fd); return 1; } close(tfd); close(fd); return 0; } static void usage(const char *s) { fprintf(stderr, "%s", s); fprintf(stderr, "Usage: stripex files ...\n"); fprintf(stderr, "strip GNU-binutils aexec header from executables\n"); exit(1); } int main(int argc, char **argv) { int status = 0; verbose = 0; /* process arguments */ while (argv++, --argc) { if ('-' != **argv) break; (*argv)++; switch (**argv) { case 'v': verbose = 1; break; default: usage(""); break; } } if (argc < 1) { usage(""); } do { const char *filename = *argv++; char *base; strcpy(tmpname, filename); base = f_basename(tmpname); strcpy(base, "STXXXXXX"); mktemp(tmpname); status |= strip(filename); unlink(tmpname); } while (--argc > 0); return status; } aranym-1.1.0/atari/tools/pcpatch.c0000664000175000017500000000754613454637621015243 0ustar joyjoy#include #include /* A part of Fopen/Fcreate routine... (adding #100 to the file handle for in mem data) L2334: move.l a5,4(a4) ; 294D0004 clr.l (a4) ; 4294 addq #1,10(a5) ; 526D000A moveq #100,d0 ; 7064 add d4,d0 ; D044 L2348: addq #6,a7 ; 5C4F movem.l (a7)+,d3-d4/a3-a5 ; 4CDF3818 rts ; 4E75 */ unsigned char moveq100[] = { 0x29, 0x4d, 0x00, 0x04, 0x42, 0x94, 0x52, 0x6d, 0x00, 0x0a, 0x70, 0x64, 0xd0, 0x44, 0x5c, 0x4f, 0x4c, 0xdf, 0x38, 0x18, 0x4e, 0x75, }; /* A parts of Fread/Fdatime/Fseek/Fclose routines... (fh #100..#140) L2356: movem.l d3-d4/a2-a4,-(a7) ; 48E71838 move d0,d3 ; 3600 movea.l a0,a2 ; 2448 move.l d1,d4 ; 2801 cmp #100,d0 ; B07C0064 blt.s L2378 ; 6D06 cmp #140,d0 ; B07C008C blt.s L2392 ; 6D0E L2378: move.l d4,d1 ; 2204 movea.l a2,a0 ; 204A move d3,d0 ; 3003 jsr L173498 ; 4EB90002A5BA bra.s L2456 ; 6040 L2392: sub #100,d3 ; 967C0064 move d3,d0 ; 3003 lsl #3,d0 ; E748 lea U223702,a3 ; 47F9000369D6 adda d0,a3 ; D6C0 */ unsigned char cmp100140[] = { 0xb0, 0x7c, 0x00, 0x64, 0x6d, 0x06, 0xb0, 0x7c, 0x00, 0x8c, }; unsigned char sub100d3[] = { 0x96, 0x7c, 0x00, 0x64, 0x30, 0x03, }; FILE *fh; unsigned char patchBuffer[2]; int getByte( unsigned char *buff ) { return fread( (void*)buff, 1, 1, fh ) == -1 ? -1 : 1; } int findPart( unsigned char *buffer, size_t len ) { unsigned char charBuffer[2]; int idx = 0; int total = 0; while ( getByte( charBuffer ) > 0 ) { if ( idx >= len ) return 1; if ( *charBuffer != buffer[idx] ) idx = 0; else idx++; if ( total++ > 2000 ) return 0; } return 0; } int main() { char *result = NULL; fh = fopen ("PC.PRG", "rb+"); if ( !fh ) { result = "PC.PRG not found in current directory"; goto finalize; } if ( fseek( fh, 2000, SEEK_SET ) < 0 ) { result = "PC.PRG cannot seek to 2000 (too short file?)"; goto finalize; } if ( ! findPart( moveq100, sizeof( moveq100 ) / sizeof( *moveq100 ) ) ) { result = "findPart(moveq100) failed"; goto finalize; } *patchBuffer = 200; fseek( fh, -12, SEEK_CUR ); fwrite( patchBuffer, 1, 1, fh ); while ( 1 ) { if ( ! findPart( cmp100140, sizeof( cmp100140 ) / sizeof( *cmp100140 ) ) ) { result = "findPart(cmp100140) failed"; break; } *patchBuffer = 200; fseek( fh, -8, SEEK_CUR ); fwrite( patchBuffer, 1, 1, fh ); *patchBuffer = 240; fseek( fh, 5, SEEK_CUR ); fwrite( patchBuffer, 1, 1, fh ); if ( ! findPart( sub100d3, sizeof( sub100d3 ) / sizeof( *sub100d3 ) ) ) { result = "findPart(sub100d3) failed"; break; } *patchBuffer = 200; fseek( fh, -4, SEEK_CUR ); fwrite( patchBuffer, 1, 1, fh ); } finalize: fclose( fh ); if ( result == NULL ) { printf( "PureC was patched successfully.\n" ); } else { printf( "Error patching PureC: %s\n", result ); } puts("Press [Return] to quit."); getchar(); return 0; } aranym-1.1.0/atari/tools/pc101us.kbd.bz20000664000175000017500000000042313454637621016012 0ustar joyjoyBZh91AY&SYF@v`F4h24h5$  ʠ4d`hi 220` ,1x=pcQń0@@?CQ%zH@LIK: !@PW($E@!YLb4&u%Jd `d[B0EH@^QO48ӹtw>a3߇~ k.p!aranym-1.1.0/atari/tools/devdos/0000775000175000017500000000000013454637621014725 5ustar joyjoyaranym-1.1.0/atari/tools/devdos/utility.h0000664000175000017500000000471313454637621016606 0ustar joyjoy#ifndef UTILITY_H #define UTILITY_H /* * fVDI utility function declarations * * Copyright 2003, Johan Klockars * This software is licensed under the GNU General Public License. * Please, see LICENSE.TXT for further information. */ long init_utility(void); /* * Memory access */ long get_protected_l(long addr); void set_protected_l(long addr, long value); long get_l(long addr); void set_l(long addr, long value); /* * Cookie and XBRA access */ long get_cookie(const unsigned char *cname, long super); long set_cookie(const unsigned char *name, long value); long remove_xbra(long vector, const unsigned char *name); void check_cookies(void); /* * Memory pool allocation (from set of same sized blocks) */ long initialize_pool(long size, long n); char *allocate_block(long size); void free_block(void *addr); /* * Memory/string operations */ void *memchr(const void *s, long c, size_t n); char *memrchr(const void *s, long c, size_t n); void *memcpy(void *dest, const void *src, size_t n); void *memmove(void *dest, const void *src, long n); void *memset(void *s, int c, size_t n); char *strdup(const char *s); char *strncpy(char *dest, const char *src, size_t n); long strncmp(const char *s1, const char *s2, size_t n); char *strcat(char *dest, const char *src); char *strchr(const char *s, long c); char *strrchr(const char *s, long c); char *strupr(char *s); void qsort(void *base, long nmemb, long size, long (*compar)(const void *, const void *)); /* * Character numerics */ long numeric(long ch); long check_base(char ch, long base); long atol(const char *text); void ltoa(char *buf, long n, unsigned long base); void ultoa(char *buf, unsigned long un, unsigned long base); long str2long(const unsigned char *text); /* * General memory allocation */ void *fmalloc(long size, long type); void *malloc(long size); void *realloc(void *addr, long new_size); long free(void *addr); long free_all(void); void allocate(long amount); /* * ctype.h */ int tolower (int c); int toupper (int c); /* * Text output */ long puts(const char *text); void error(const char *text1, const char *text2); #define puts_nl(text) { puts(text); puts("\x0a\x0d"); } long sprintf(char *str, const char *format, ...); long vsprintf(char *str, const char *format, va_list args); /* * Maths */ short Isin(short angle); short Icos(short angle); #define ABS(x) (((x) >= 0) ? (x) : -(x)) #define MIN(x,y) (((x) < (y)) ? (x) : (y)) #define MAX(x,y) ((x) > (y) ? (x) : (y)) #endif aranym-1.1.0/atari/tools/devdos/utility.c0000664000175000017500000006411113454637621016577 0ustar joyjoy/* * fVDI utility functions * * Copyright 1997-2003, Johan Klockars * This software is licensed under the GNU General Public License. * Please, see LICENSE.TXT for further information. */ #include #include /* for size_t */ #include #include "utility.h" /* just forwards */ static inline void copymem(const void *s, void *d, long n); static inline void setmem(void *d, long v, long n); static inline void copy(const char *src, char *dest); static inline void cat(const char *src, char *dest); short debug = 0; char silentx[10] = "\0\0\0\0"; /* * Global variables */ typedef struct _Circle { struct _Circle *prev; struct _Circle *next; long size; } Circle; short Falcon = 0; short TT = 0; long cpu = 0; long fpu = 0; long frb = 0; long video = 0; long nvdi = 0; long eddi = 0; long mint = 0; long magic = 0; short mxalloc = 0; /* BEG: from ctype.c */ #define _ctype _mint_ctype extern unsigned char _mint_ctype[256]; # define _CTc 0x01 /* control character */ # define _CTd 0x02 /* numeric digit */ # define _CTu 0x04 /* upper case */ # define _CTl 0x08 /* lower case */ # define _CTs 0x10 /* whitespace */ # define _CTp 0x20 /* punctuation */ # define _CTx 0x40 /* hexadecimal */ # define isalnum(c) ( _ctype[(unsigned char)(c)] & (_CTu|_CTl|_CTd)) # define isalpha(c) ( _ctype[(unsigned char)(c)] & (_CTu|_CTl)) # define isascii(c) (!((c) & ~0x7f)) # define iscntrl(c) ( _ctype[(unsigned char)(c)] & _CTc) # define isdigit(c) ( _ctype[(unsigned char)(c)] & _CTd) # define isgraph(c) (!(_ctype[(unsigned char)(c)] & (_CTc|_CTs)) && (_ctype[(unsigned char)(c)])) # define islower(c) ( _ctype[(unsigned char)(c)] & _CTl) # define isprint(c) (!(_ctype[(unsigned char)(c)] & _CTc) && (_ctype[(unsigned char)(c)])) # define ispunct(c) ( _ctype[(unsigned char)(c)] & _CTp) # define isspace(c) ( _ctype[(unsigned char)(c)] & _CTs) # define isupper(c) ( _ctype[(unsigned char)(c)] & _CTu) # define isxdigit(c) ( _ctype[(unsigned char)(c)] & _CTx) # define iswhite(c) (isspace (c)) # define isodigit(c) ((c) >= '0' && (c) <= '7') # define iscymf(c) (isalpha(c) || ((c) == '_')) # define iscym(c) (isalnum(c) || ((c) == '_')) # define _toupper(c) ((c) ^ 0x20) # define _tolower(c) ((c) ^ 0x20) # define _toascii(c) ((c) & 0x7f) int tolower (int c) { return (isupper (c) ? _tolower (c) : c); } int toupper (int c) { return (islower (c) ? _toupper (c) : c); } /* END: from ctype.c */ char * strupr (char *s) { char c; char *old = s; while ((c = *s) != 0) { if (islower (c)) *s = _toupper(c); s++; } return old; } /* * Turn string (max four characters) into a long */ long str2long(const unsigned char *text) { long v; v = 0; while (*text) { v <<= 8; v += *text++; } return v; } long get_l(long addr) { return *(long *)addr; } /* * Get a long value after switching to supervisor mode */ long get_protected_l(long addr) { long oldstack, v; oldstack = (long)Super(0L); v = *(long *)addr; Super((void *)oldstack); return v; } void set_l(long addr, long value) { *(long *)addr = value; } static inline void copymem(const void *s, void *d, long n) { const char *src = (const char *)s; char *dest = (char *)d; for(n = n - 1; n >= 0; n--) *dest++ = *src++; } static void copymem_aligned(const void *s, void *d, long n) { const long *src = (const long *)s; long *dest = (long *)d; long n4; for(n4 = (n >> 2) - 1; n4 >= 0; n4--) *dest++ = *src++; if (n & 3) { const char *s1 = (const char *)src; char *d1 = (char *)dest; switch(n & 3) { case 3: *d1++ = *s1++; case 2: *d1++ = *s1++; case 1: *d1++ = *s1++; break; } } } void *memcpy(void *dest, const void *src, size_t n) { if (n > 3) { if (!((long)dest & 1)) { if (!((long)src & 1)) { copymem_aligned(src, dest, n); return dest; } } else if ((long)src & 1) { *((char *)dest)++ = *((const char *)src)++; copymem_aligned(src, dest, n - 1); return (char *)dest - 1; } } copymem(src, dest, n); return dest; } void *memmove(void *dest, const void *src, long n) { const char *s1; char *d1; if (((long)dest >= (long)src + n) || ((long)dest + n <= (long)src)) return memcpy(dest, src, n); if ((long)dest < (long)src) { s1 = (const char *)src; d1 = (char *)dest; for(n--; n >= 0; n--) *d1++ = *s1++; } else { s1 = (const char *)src + n; d1 = (char *)dest + n; for(n--; n >= 0; n--) *(--d1) = *(--s1); } return dest; } static inline void setmem(void *d, long v, long n) { char *dest; dest = (char *)d; for(n = n - 1; n >= 0; n--) *dest++ = (char)v; } static void setmem_aligned(void *d, long v, long n) { long *dest; long n4; dest = (long *)d; for(n4 = (n >> 2) - 1; n4 >= 0; n4--) *dest++ = v; if (n & 3) { char *d1 = (char *)dest; switch(n & 3) { case 3: *d1++ = (char)(v >> 24); case 2: *d1++ = (char)(v >> 16); case 1: *d1++ = (char)(v >> 8); break; } } } /* This function needs an 'int' parameter * to be compatible with gcc's built-in * version. * For module use, a separate version will * be needed since they can't be guaranteed * to have the same size for 'int'. */ void *memset(void *s, int c, size_t n) { if ((n > 3) && !((long)s & 1)) { unsigned long v; v = ((unsigned short)c << 8) | (unsigned short)c; v = (v << 16) | v; setmem_aligned(s, v, n); } else setmem(s, c, n); return s; } long strlen(const char *s) { const char *p = s; while (*p++) ; return (long)(p - s) - 1; } int strcmp(const char *s1, const char *s2) { char c1; do { if (!(c1 = *s1++)) { s2++; break; } } while (c1 == *s2++); return (long)(c1 - s2[-1]); } long strncmp(const char *s1, const char *s2, size_t n) { char c1; long ns; /* size_t can't be negative */ ns = n; for(ns--; ns >= 0; ns--) { if (!(c1 = *s1++)) { s2++; break; } if (c1 != *s2++) break; } if (ns < 0) return 0L; return (long)(c1 - s2[-1]); } int memcmp(const void *s1, const void *s2, size_t n) { const char *s1c, *s2c; long ns; /* size_t can't be negative */ ns = n; s1c = (const char *)s1; s2c = (const char *)s2; for(ns--; ns >= 0; ns--) { if (*s1c++ != *s2c++) return (long)(s1c[-1] - s2c[-1]); } return 0L; } static inline void copy(const char *src, char *dest) { while ( (*dest++ = *src++) ) ; } char *strcpy(char *dest, const char *src) { copy(src, dest); return dest; } char *strncpy(char *dest, const char *src, size_t n) { char c1, *d; long ns; d = dest; ns = n; for(ns--; ns >= 0; ns--) { c1 = *src++; *dest++ = c1; if (!c1) break; } for(ns--; ns >= 0; ns--) *dest++ = 0; return d; } char *strdup(const char *s) { char *d; if ((d = (char *)malloc(strlen(s) + 1))) strcpy(d, s); return d; } static inline void cat(const char *src, char *dest) { while(*dest++) ; copy(src, dest - 1); } char *strcat(char *dest, const char *src) { cat(src, dest); return dest; } char *strchr(const char *s, long c) { char ch, c1; if (!c) return (char *)s + strlen(s); c1 = c; while(ch = *s++) { if (ch == c1) return (char *)s - 1; } return 0; } char *strrchr(const char *s, long c) { char *found, ch, c1; if (!c) return (char *)s + strlen(s); c1 = c; found = 0; while(ch = *s++) { if (ch == c1) found = (char *)s; } if (found) return found - 1; return 0; } void *memchr(const void *s, long c, size_t n) { char ch, c1; char *m; long ns; m = (char *)s; c1 = c; ns = n; for(ns--; ns >= 0; ns--) { ch = *m++; if (ch == c1) return (char *)m - 1; } return 0; } char *memrchr(const void *s, long c, size_t n) { char ch, c1; const char *m; long ns; m = (const char *)s + n; c1 = c; ns = n; for(ns--; ns >= 0; ns--) { ch = *--m; if (ch == c1) return (void *)m; } return 0; } long numeric(long ch) { if ((ch >= '0') && (ch <= '9')) return 1; return 0; } long check_base(char ch, long base) { if (numeric(ch) && (ch < '0' + base)) return ch - '0'; if ((ch >= 'a') && (ch <= 'z')) ch -= 'a' - 'A'; if ((ch >= 'A') && (ch < 'A' + base - 10)) return ch - 'A' + 10; return -1; } long atol(const char *text) { long n; int minus, base, ch; while(isspace(*text)) text++; minus = 0; if (*text == '-') { minus = 1; text++; } base = 10; if (*text == '$') { base = 16; text++; } else if (*text == '%') { base = 2; text++; } n = 0; while ((ch = check_base(*text++, base)) >= 0) n = n * base + ch; if (minus) n = -n; return n; } void ultoa(char *buf, unsigned long un, unsigned long base) { char *tmp, ch; tmp = buf; do { ch = un % base; un = un / base; if (ch <= 9) ch += '0'; else ch += 'a' - 10; *tmp++ = ch; } while (un); *tmp = '\0'; while (tmp > buf) { ch = *buf; *buf++ = *--tmp; *tmp = ch; } } void ltoa(char *buf, long n, unsigned long base) { unsigned long un; char *tmp, ch; un = n; if ((base == 10) && (n < 0)) { *buf++ = '-'; un = -n; } tmp = buf; do { ch = un % base; un = un / base; if (ch <= 9) ch += '0'; else ch += 'a' - 10; *tmp++ = ch; } while (un); *tmp = '\0'; while (tmp > buf) { ch = *buf; *buf++ = *--tmp; *tmp = ch; } } /* Mostly complete, but only simple things tested */ long sprintf(char *str, const char *format, ...) { long r; va_list args; va_start(args, format); r = vsprintf( str, format, args); va_end(args); return r; } /* Mostly complete, but only simple things tested */ long vsprintf(char *str, const char *format, va_list args) { int mode = 0; char *s, *text, ch; long val_l = 0; int base = 10; int field = 0; int precision = 0; int opts = 0; s = str; while ( (ch = *format++) ) { if (mode) { switch(ch) { case 's': text = va_arg(args, char *); while ((*str++ = *text++)) ; str--; mode = 0; break; case 'c': *str++ = va_arg(args, int); /* char promoted to int */ mode = 0; break; case 'p': opts |= 16; mode = 4; case 'x': case 'X': base = 16; if (opts & 16) { *str++ = '0'; *str++ = 'x'; } case 'o': if (base == 10) { base = 8; if (opts & 16) { *str++ = '0'; } } case 'u': opts |= 32; /* Unsigned conversion */ case 'd': case 'i': if (!(opts & 0x0100) && (opts & 1) && !(opts & 8)) { precision = field; field = 0; } switch (mode) { case 4: val_l = va_arg(args, long); break; case 3: if (opts & 32) val_l = va_arg(args, unsigned char); else val_l = va_arg(args, signed char); break; case 2: if (opts & 32) val_l = va_arg(args, unsigned short); else val_l = va_arg(args, short); break; case 1: if (opts & 32) val_l = va_arg(args, unsigned int); else val_l = va_arg(args, int); break; default: break; } if (!(opts & 32)) { if (val_l > 0) { if (opts & 4) *str++ = '+'; else if (opts & 2) *str++ = ' '; } else if (val_l < 0) { *str++ = '-'; val_l = -val_l; } } if (val_l || !(opts & 0x0100) || (precision != 0)) ultoa(str, val_l, base); val_l = strlen(str); if (val_l < precision) { memmove(str + precision - val_l, str, val_l + 1); memset(str, '0', precision - val_l); } str += strlen(str); mode = 0; break; case '%': *str++ = '%'; mode = 0; break; case 'h': opts |= 0x8000; if (mode == 1) mode = 2; else if (mode == 2) mode = 3; else opts |= 0x4000; break; case 'z': case 't': case 'l': opts |= 0x8000; if (mode == 1) mode = 4; else opts |= 0x4000; break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (mode == 1) { ch -= '0'; if (!ch && !(opts & 0x8000)) { if (!(opts & 1)) opts |= 1; /* Zero padding */ else opts |= 0x4000; } else { opts |= 0x8000; if (opts & 0x0100) { if (!(opts & 0x0200)) { opts |= 0x0400; precision = precision * 10 + ch; } else opts |= 0x4000; } else if (!(opts & 0x0800)) { opts |= 0x0400; field = field * 10 + ch; } else opts |= 0x4000; } } else opts |= 0x4000; break; case '*': if (mode == 1) { if (opts & 0x0100) { if (!(opts & 0x0600)) { opts |= 0x0200; precision = va_arg(args, int); if (precision < 0) precision = 0; } else opts |= 0x4000; } else if (!(opts & 0x8c00)) { opts |= 0x8800; field = va_arg(args, int); if (field < 0) { opts |= 8; field = -field; } } else opts |= 0x4000; } else opts |= 0x4000; break; case ' ': if (!(opts & 0x8002)) { opts |= 2; /* Space in front of positive numbers */ } else opts |= 0x4000; break; case '+': if (!(opts & 0x8004)) { opts |= 4; /* Sign in front of all numbers */ } else opts |= 0x4000; break; case '-': if (!(opts & 0x8008)) { opts |= 8; /* Left justified field */ } else opts |= 0x4000; break; case '#': if (!(opts & 0x8010)) { opts |= 16; /* 0x/0 in front of hexadecimal/octal numbers */ } else opts |= 0x4000; break; case '.': if (!(opts & 0x0100) && (mode == 1)) { opts &= ~0x0400; opts |= 0x8100; precision = 0; } else opts |= 0x4000; break; default: opts |= 0x4000; break; } if (opts & 0x4000) { *str++ = '%'; *str++ = '?'; mode = 0; } if ((mode == 0) && (field > str - s)) { val_l = field - (str - s); if (opts & 8) { memset(str, ' ', val_l); } else { memmove(s + val_l, s, str - s); memset(s, ' ', val_l); } str += val_l; } } else if (ch == '%') { mode = 1; base = 10; opts = 0; field = 0; precision = 0; s = str; } else { *str++ = ch; } } *str = 0; return strlen(s); } void qsort(void *base, long nmemb, long size, long (*compar)(const void *, const void *)) { static long incs[16] = { 1391376, 463792, 198768, 86961, 33936, 13776, 4592, 1968, 861, 336, 112, 48, 21, 7, 3, 1 }; long i, j, k, h, j_size, h_size; short n; char buf[16], *v, *p1, *p2, *cbase; v = buf; if (size > sizeof(buf)) { v = malloc(size); if (!v) /* Can't sort? */ return; } cbase = (char *)base; for(k = 0; k < 16; k++) { h = incs[k]; h_size = h * size; for(i = h; i < nmemb; i++) { j = i; j_size = j * size; p1 = v; p2 = cbase + j_size; for(n = size - 1; n >= 0; n--) *p1++ = *p2++; while ((j >= h) && (compar(v, cbase + j_size - h_size) < 0)) { p1 = cbase + j_size; p2 = p1 - h_size; for(n = size - 1; n >= 0; n--) *p1++ = *p2++; j -= h; j_size -= h_size; } p1 = cbase + j_size; p2 = v; for(n = size - 1; n >= 0; n--) *p1++ = *p2++; } } if (size > sizeof(buf)) free(v); } void *fmalloc(long size, long type) { Circle *new; if (mint | magic) { if (!(type & 0xfff8)) /* Simple type? */ type |= 0x4030; /* Keep around, supervisor accessible */ new = (Circle *)Mxalloc(size + sizeof(Circle), type); } else { type &= 3; if (mxalloc) /* Alternative if possible */ new = (Circle *)Mxalloc(size + sizeof(Circle), type); else new = (Circle *)Malloc(size + sizeof(Circle)); } if ((long)new > 0) { if ((debug > 2) && !(silentx[0] & 0x01)) { char buffer[10]; ltoa(buffer, (long)new, 16); puts("Allocation at $"); puts(buffer); puts(", "); ltoa(buffer, size, 10); puts(buffer); puts_nl(" bytes"); } new->size = size + sizeof(Circle); *(long *)&new[1] = size; return (void *)&new[1]; } else return new; } #if 0 static short block_space[] = {32, 76, 156, 316, 1008, 2028, 4068, 8148, 16308}; #else static short block_space[] = {16, 48, 112, 240, 496, 1008, 2028, 4068, 8148, 16308}; #endif static char *block_free[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; #if 0 static char *block_used[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; #else #if 0 static Circle block_used[] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}; #else static Circle *block_used[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; #endif #endif static short free_blocks[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static short used_blocks[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static short allocated = 0; #define ADDR_NOT_OK 0xfc000003 void allocate(long amount) { const int sizes = sizeof(block_space) / sizeof(block_space[0]); char *buf; Circle *link, *last; int i; amount &= ~0x0fL; if (!amount) return; buf = fmalloc(amount * 1024, 3); if (!buf) return; if ((debug > 2) && !(silentx[0] & 0x02)) { puts(" Malloc at "); ltoa(buf, (long)buf, 16); puts(buf); puts("\x0a\x0d"); } last = (Circle *)block_free[sizes - 1]; for(i = 0; i < amount; i += 16) { link = (Circle *)&buf[i * 1024L]; link->next = last; link->prev = 0; link->size = sizes - 1; last = link; } block_free[sizes - 1] = (char *)last; free_blocks[sizes - 1] += amount >> 4; allocated += amount >> 4; } #define OS_MARGIN 64 #define MIN_BLOCK 32 #define LINK_SIZE (sizeof(Circle)) #define MIN_KB_BLOCK void *malloc(long size) { int m, n; const int sizes = sizeof(block_space) / sizeof(block_space[0]); char *block, buf[10]; Circle *link, *next; if ( (size > 16 * 1024 - OS_MARGIN - LINK_SIZE)) return fmalloc(size, 3); /* This will always break eventually thanks to the if-statement above */ for(n = 0; n < sizes; n++) { if (size <= block_space[n]) break; } if ((debug > 2) && !(silentx[0] & 0x02)) { ltoa(buf, n, 10); puts("Alloc: Need block of size "); puts(buf); puts("/"); ltoa(buf, size, 10); puts(buf); puts("\x0a\x0d"); } if (!block_free[n]) { for(m = n + 1; m < sizes; m++) { if (block_free[m]) break; } if (m >= sizes) { m = sizes - 1; block_free[m] = fmalloc(16 * 1024 - OS_MARGIN, 3); if (!block_free[m]) return 0; if ((debug > 2) && !(silentx[0] & 0x02)) { puts(" Malloc at "); ltoa(buf, (long)block_free[m], 16); puts(buf); puts("\x0a\x0d"); } link = (Circle *)block_free[m]; link->next = 0; link->prev = 0; link->size = m; free_blocks[m]++; allocated++; } for(; m > n; m--) { if ((debug > 2) && !(silentx[0] & 0x02)) { puts(" Splitting\x0a\x0d"); } block_free[m - 1] = block_free[m]; link = (Circle *)block_free[m]; block_free[m] = (char *)link->next; free_blocks[m]--; next = (Circle *)(block_free[m - 1] + block_space[m - 1] + LINK_SIZE); link->next = next; link->prev = 0; link->size = m - 1; free_blocks[m - 1]++; link = next; link->next = 0; link->prev = 0; link->size = m - 1; free_blocks[m - 1]++; } } else { if ((debug > 2) && !(silentx[0] & 0x02)) { puts(" Available\x0a\x0d"); } } block = block_free[n]; block_free[n] = (char *)((Circle *)block)->next; if ((debug > 2) && !(silentx[0] & 0x02)) { puts(" Allocating at "); ltoa(buf, (long)block, 16); puts(buf); puts(" (next at "); ltoa(buf, (long)block_free[n], 16); puts(buf); puts(")\x0a\x0d"); } ((Circle *)block)->size = (((Circle *)block)->size & 0xffff) + (size << 16); if (1 ) { Circle *new = (Circle *)block; if (block_used[n]) { new->prev = block_used[n]->prev; new->next = block_used[n]; block_used[n]->prev->next = new; block_used[n]->prev = new; } else { block_used[n] = new; new->prev = new; new->next = new; } } free_blocks[n]--; used_blocks[n]++; *(long *)(block + sizeof(Circle)) = block_space[n]; return block + sizeof(Circle); } void *realloc(void *addr, long new_size) { Circle *current; long old_size; void *new; if (!addr) return malloc(new_size); if (!new_size) { free(addr); return 0; } new = malloc(new_size); if ((long)new <= 0) return 0; current = &((Circle *)addr)[-1]; #if 0 if (current->prev) #else if ((long)current->prev & 1) #endif old_size = current->size - sizeof(Circle); else old_size = current->size >> 16; copymem_aligned(addr, new, old_size < new_size ? old_size : new_size); free(addr); if ((debug > 2) && !(silentx[0] & 0x01)) { char buffer[10]; puts("Reallocation from size "); ltoa(buffer, old_size, 10); puts(buffer); puts(" at $"); ltoa(buffer, (long)addr, 16); puts(buffer); puts(" to "); ltoa(buffer, new_size, 10); puts_nl(buffer); } return new; } long free(void *addr) { Circle *current; long size, ret; if (!addr) return 0; current = &((Circle *)addr)[-1]; if (!((long)current->prev & 1)) { size = current->size & 0xffff; if (((debug > 2) && !(silentx[0] & 0x02)) || (unsigned int)size >= sizeof(block_space) / sizeof(block_space[0]) || !(current->size >> 16)) { char buf[10]; puts("Freeing at "); ltoa(buf, (long)current, 16); puts(buf); #if 1 puts(" ("); ltoa(buf, (long)current->size, 16); puts(buf); puts(" ,"); ltoa(buf, (long)current->prev, 16); puts(buf); puts(" ,"); ltoa(buf, (long)current->next, 16); puts(buf); puts(")"); #endif puts("\x0a\x0d"); } if (1) { if (block_used[size] == current) { block_used[size] = current->next; if (current->next == current->prev) block_used[size] = 0; } current->prev->next = current->next; current->next->prev = current->prev; } current->next = (Circle *)block_free[size]; block_free[size] = (char *)current; free_blocks[size]++; used_blocks[size]--; return 0; } else { if ((debug > 2) && !(silentx[0] & 0x01)) { char buf[10]; puts("Standard free at "); ltoa(buf, (long)current, 16); puts(buf); puts("\x0a\x0d"); } } size = current->size; if ((debug > 2) && !(silentx[0] & 0x01)) { char buffer[10]; ltoa(buffer, (long)current, 16); puts("Freeing at $"); puts_nl(buffer); } ret = Mfree(current); if (ret) return ret; else return size; } long puts(const char *text) { #if 0 nfCall((nf_print_id, text)); #endif return 1; } long init_utility(void) { long tmp; tmp = (long)Mxalloc(10, 3); /* Try allocating a little memory */ if (tmp == -32) mxalloc = 0; else if (tmp < 0) return 0; /* Should not happen */ else { mxalloc = 1; Mfree((void *)tmp); } return 1; } aranym-1.1.0/atari/tools/devdos/mintfake.h0000664000175000017500000000245513454637621016702 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * This is the FreeMiNT configuration file modified for * the ARAnyM HOSTFS.DOS MetaDOS driver * * 2002 STan */ #ifndef _mintfake_h_ #define _mintfake_h_ # ifndef ARAnyM_MetaDOS # define ARAnyM_MetaDOS # endif /* MetaDOS function header macros to let the functions create also metados independent */ # define MetaDOSFile void *devMD, char *pathNameMD, void *fpMD, long retMD, int opcodeMD, # define MetaDOSDir void *devMD, char *pathNameMD, DIR *dirMD, long retMD, int opcodeMD, # define MetaDOSDTA0 void *devMD, char *pathNameMD, void *dtaMD, long retMD, int opcodeMD # define MetaDOSDTA0pass devMD, pathNameMD, dtaMD, retMD, opcodeMD # define MetaDOSDTA MetaDOSDTA0, /* disable some defines from the sys/mint/ *.h */ #ifdef O_GLOBAL # undef O_GLOBAL #endif /* rollback the settings from the FreeMiNT CVS's sys/mint/config.h) */ #ifdef CREATE_PIPES # undef CREATE_PIPES #endif #ifdef SYSUPDATE_DAEMON # undef SYSUPDATE_DAEMON #endif #ifdef OLDSOCKDEVEMU # undef OLDSOCKDEVEMU #endif #ifdef WITH_KERNFS # undef WITH_KERNFS #endif # define WITH_KERNFS 0 #ifdef DEV_RANDOM # undef DEV_RANDOM #endif #ifdef PATH_MAX # undef PATH_MAX #endif # define PATH_MAX 1024 #ifdef SPRINTF_MAX # undef SPRINTF_MAX #endif # define SPRINTF_MAX 128 #endif /* _mintfake_h_ */ aranym-1.1.0/atari/tools/devdos/metados.h0000664000175000017500000001275013454637621016537 0ustar joyjoy/* Metados Copyright (C) 2002 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _METADOS_H #define _METADOS_H #include /* for trap_14_xxx macros */ #ifndef OSBIND_CLOBBER_LIST #define OSBIND_CLOBBER_LIST "d0", "d1", "d2", "a0", "a1", "a2", "memory" #endif #ifndef trap_14_wwllw #define trap_14_wwllw(n, a, b, c, d) \ __extension__ \ ({ \ register long retvalue __asm__("d0"); \ short _a = (short)(a); \ long _b = (long) (b); \ long _c = (long) (c); \ short _d = (short)(d); \ \ __asm__ volatile \ ("\ movw %5,sp@-; \ movl %4,sp@-; \ movl %3,sp@-; \ movw %2,sp@-; \ movw %1,sp@-; \ trap #14; \ lea sp@(14),sp " \ : "=r"(retvalue) /* outputs */ \ : "g"(n), \ "r"(_a), "r"(_b), "r"(_c), "r"(_d) /* inputs */ \ : __CLOBBER_RETURN("d0") \ "d1", "d2", "a0", "a1", "a2", "memory" \ ); \ retvalue; \ }) #endif #ifndef trap_14_wwlwl #define trap_14_wwlwl(n,a,b,c,d) \ __extension__ \ ({ \ register long retvalue __asm__("d0"); \ short _a = (short)(a); \ long _b = (long)(b); \ short _c = (short)(c); \ long _d = (long)(d); \ \ __asm__ volatile ( \ "movl %5,sp@-\n\t" \ "movw %4,sp@-\n\t" \ "movl %3,sp@-\n\t" \ "movw %2,sp@-\n\t" \ "movw %1,sp@-\n\t" \ "trap #14\n\t" \ "lea sp@(14),sp" \ : "=r"(retvalue) \ : "g"(n), "r"(_a), "r"(_b), "r"(_c), "r"(_d) \ : OSBIND_CLOBBER_LIST \ ); \ retvalue; \ }) #endif /*--- Functions prototypes ---*/ #define Metainit(buffer) \ (void)trap_14_wl((short)0x30,(long)buffer) #define Metaopen(drive,buffer) \ (long)trap_14_wwl((short)0x31,(short)drive,(long)buffer) #define Metaclose(drive) \ (void)trap_14_ww((short)0x32,(short)drive) #define Metaread(drive,buffer,first_block,nb_blocks) \ (long)trap_14_wwllw((short)0x33,(short)drive,(long)buffer,(long)first_block,(short)nb_blocks) #define Metawrite(drive,buffer,first_block,nb_blocks) \ (long)trap_14_wwllw((short)0x34,(short)drive,(long)buffer,(long)first_block,(short)nb_blocks) #define Metaseek(drive,dummy,offset) \ (long)trap_14_wwll((short)0x35,(short)(drive),(long)(dummy),(long)(offset)) #define Metastatus(void) \ (long)trap_14_wl((short)0x36,(long)(buffer)) #define Metaioctl(drive,magic,opcode,buffer) \ (long)trap_14_wwlwl((short)(0x37),(short)(drive),(long)(magic),(short)(opcode),(long)(buffer)) #define Metastartaudio(drive,dummy,metatracks_t_p) \ (long)trap_14_wwwl((short)(0x3b),(short)(drive),(short)(dummy),(long)(metatracks_t_p)) #define Metastopaudio(drive) \ (long)trap_14_ww((short)(0x3c),(short)(drive)) #define Metasetsongtime(drive,dummy,start,end) \ (long)trap_14_wwwll((short)(0x3d),(short)(drive),(short)(dummy),(long)(start),(long)(end)) #define Metagettoc(drive,dummy,metatocentry_t_p) \ (long)trap_14_wwwl((short)(0x3e),(short)(drive),(short)(dummy),(long)(metatocentry_t_p)) #define Metadiscinfo(drive,metadiscinfo_t_p) \ (long)trap_14_wwl((short)(0x3f),(short)(drive),(long)(metadiscinfo_t_p)) #define METADOS_IOCTL_MAGIC (((unsigned long)'F'<<24)|((unsigned long)'C'<<16)|('T'<<8)|'L') /* bos_info_t returning ioctl */ #define METADOS_IOCTL_BOSINFO (('B'<<8)|'I') /*--- Types ---*/ typedef struct { unsigned short version; unsigned long magic; char *log2phys; } __attribute__((packed)) metainfo_t; typedef struct { unsigned long drives_map; char *version; unsigned long reserved; metainfo_t *info; } __attribute__((packed)) metainit_t; typedef struct { char *name; unsigned long reserved[3]; } __attribute__((packed)) metaopen_t; typedef struct { char ext_status[32]; } __attribute__((packed)) metastatus_t; typedef struct { unsigned char count; unsigned char first; } __attribute__((packed)) metatracks_t; typedef struct { /* TOC entry for MetaGetToc() function */ unsigned char track; unsigned char minute; unsigned char second; unsigned char frame; } __attribute__((packed)) metatocentry_t; typedef struct { unsigned char reserved; unsigned char minute; unsigned char second; unsigned char frame; } __attribute__((packed)) metadisc_msf_t; typedef struct { /* Discinfo for MetaDiscInfo() function */ unsigned char disctype, first, last, current; metadisc_msf_t relative; metadisc_msf_t absolute; metadisc_msf_t end; unsigned char index, reserved1[3]; unsigned long reserved2[123]; } __attribute__((packed)) metadiscinfo_t; /* METADOS_IOCTL_BOSINFO ioctl() .bos driver info */ /** the devide is a character device (all the block values in API are * meant as byte values for these */ #define BOS_INFO_ISTTY 0x00001UL /** the device will not be visible in the x:\dev nor in x:\dev\bos */ #define BOS_INFO_BOSHIDDEN 0x10000UL /** the device will not be visible in the x:\dev but will be in x:\dev\bos */ #define BOS_INFO_DEVHIDDEN 0x20000UL typedef struct { unsigned long flags; } __attribute__((packed)) bos_info_t; #endif /* _METADOS_H */ aranym-1.1.0/atari/tools/devdos/mdglue.S0000664000175000017500000002131313454637621016326 0ustar joyjoy// // 2001 STanda // // The basic file layout was taken from Julian Reschke's Cookies // .globl _init .globl _sys_d_free, _sys_f_sfirst, _sys_f_snext, _sys_f_open .globl _sys_f_close, _sys_d_atime, _sys_f_write, _sys_f_read .globl _sys_f_attrib, _sys_f_create, _sys_f_seek, _sys_f_cntl .globl _sys_d_create, _sys_d_delete, _sys_f_rename .globl _sys_d_getpath, _sys_d_dsetpath .globl _sys_d_pathconf, _sys_f_xattr, _sys_d_opendir, _sys_d_readdir .globl _sys_d_closedir, _sys_d_xreaddir, _sys_d_rewinddir .globl _sys_d_readlabel, _sys_d_delete .globl _DriverName, _ShowBanner, _InitDevice .macro PRINT value // nf_call( nf_get_id(NF_STDERR), value); #if 0 move.l #s_stderr,-(sp) move.l #0,-(sp) dc.w 0x7300 lea 8(sp),sp move.l \value,-(sp) move.l #s_frm,-(sp) move.l d0,-(sp) move.l #0,-(sp) dc.w 0x7301 lea 16(sp),sp #endif .endm PRINT #if 1 #define SREGS movem.l a0-a6/d1-d7,-(sp) #define RREGS movem.l (sp)+,a0-a6/d1-d7 #else #define SREGS #define RREGS #endif .macro SSTCK framereg move.l sp,temp // store the old stack to the new one (do not touch regs) move.l #stack,sp move.l temp,-(sp) SREGS move.l temp,\framereg .endm SSTCK .macro RSTCK RREGS move.l (sp),sp .endm RSTCK // // Call to the MetaDOS C function implementation macro // .macro MDBSR framereg,label move.w 4(\framereg),-(sp) move.l (\framereg),-(sp) move.l a5,-(sp) move.l a4,-(sp) move.l a3,-(sp) bsr \label lea 18(sp),sp .endm MDBSR .text _init: bsr _ShowBanner move.l #functionTable+12,d0 move.l #_DriverName,d1 rts initfun: movem.l a0-a6/d1-d7,-(sp) PRINT #1 move.l d1,-(sp) // BetaDOS's dosDevID + some weird word / MetaDOS pure crap move.w d0,-(sp) // bosDevID 16bit move.w #0,-(sp) // pad for gcc (long) bsr _InitDevice addq #8,sp movem.l (sp)+,a0-a6/d1-d7 // d1: filename conversion // Bit 0: 0 = force upper case // Bit 1: 0 = fully expand // Bit 2: 0 = critical error handler reports EWRPRO moveq #5,d1 rts functionTable: dc.l 0x4d414749 // 'MAGI' dc.l 0x434d4554 // 'CMET' dc.l 349 dc.l initfun dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 // 49 dc.l -1, -1, -1, -1 dc.l wrap_dfree // 54 dc.l -1 dc.l -1 dc.l wrap_dcreate // 57 dc.l wrap_ddelete // 58 dc.l -1 // 59 // wrap_dsetpath dc.l wrap_fcreate // 60 dc.l wrap_fopen // 61 dc.l wrap_fclose // 62 dc.l wrap_fread // 63 dc.l wrap_fwrite // 64 dc.l wrap_fdelete // 65 dc.l wrap_fseek // 66 dc.l wrap_fattrib // 67 dc.l -1 dc.l -1 // 69 dc.l -1 dc.l -1 // 71 // Dgetpath dc.l -1, -1, -1 // 74 dc.l -1, -1, -1 dc.l wrap_fsfirst // 78 dc.l wrap_fsnext // 79 dc.l -1, -1, -1, -1, -1 // 84 dc.l -1 dc.l wrap_frename // 86 dc.l wrap_fdatime // 87 dc.l -1, -1 // 89 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 99 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 109 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 119 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 129 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 139 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 149 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 159 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 169 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 179 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 189 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 199 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 209 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 219 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 229 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 239 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 249 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 259 dc.l -1 // 260 // wrap_fcntl dc.l -1, -1, -1, -1 // 264 dc.l -1, -1, -1, -1, -1 // 269 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 279 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 289 dc.l -1, -1 dc.l wrap_dpathconf // 292 dc.l -1, -1 // 294 dc.l -1 dc.l wrap_dopendir // 296 dc.l wrap_dreaddir // 297 dc.l wrap_drewinddir // 298 dc.l wrap_dclosedir // 299 dc.l wrap_fxattr // 300 dc.l -1, -1, -1, -1 // 304 dc.l -1, -1, -1, -1, -1 // 309 dc.l -1, -1, -1, -1, -1 // 314 dc.l -1, -1, -1, -1, -1 // 319 dc.l -1, -1 dc.l wrap_dxreaddir // 322 dc.l -1, -1 dc.l -1, -1, -1, -1, -1 // 329 dc.l -1, -1, -1, -1, -1 // 334 dc.l -1, -1, -1 dc.l wrap_dreadlabel // 338 dc.l -1 // 339 dc.l -1, -1, -1, -1, -1 // 344 dc.l -1, -1, -1, -1, -1 // 349 wrap_dfree: PRINT #54 SSTCK a0 move.w 10(a0),-(sp) // drive # move.l 6(a0),-(sp) // diskinfo * MDBSR a0,_sys_d_free lea 6(sp),sp RSTCK rts wrap_dcreate: PRINT #57 SSTCK a0 move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_d_create lea 4(sp),sp RSTCK rts wrap_ddelete: PRINT #58 SSTCK a0 move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_d_delete lea 4(sp),sp RSTCK rts wrap_dsetpath: PRINT #59 SSTCK a0 move.l a4,-(sp) // name - 6(a0) or a4 MD //REM MDBSR a0,_sys_d_dsetpath lea 4(sp),sp RSTCK rts wrap_fcreate: PRINT #60 SSTCK a0 move.w 10(a0),-(sp) // attr move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_f_create lea 6(sp),sp RSTCK rts wrap_fopen: PRINT #61 SSTCK a0 move.w 10(a0),-(sp) // mode move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_f_open lea 6(sp),sp RSTCK cmp.l #0,d0 bmi fopen_error move.l #0,d0 // reset the fs to 0 (MetaDOS requires this) fopen_error: rts wrap_fclose: PRINT #62 SSTCK a0 move.w 6(a0),-(sp) // handle MDBSR a0,_sys_f_close lea 2(sp),sp RSTCK rts wrap_fread: PRINT #63 SSTCK a0 move.l 12(a0),-(sp) // buffer move.l 8(a0),-(sp) // count move.w 6(a0),-(sp) // handle MDBSR a0,_sys_f_read lea 10(sp),sp RSTCK rts wrap_fwrite: PRINT #64 SSTCK a0 move.l 12(a0),-(sp) // buffer move.l 8(a0),-(sp) // count move.w 6(a0),-(sp) // handle MDBSR a0,_sys_f_write lea 10(sp),sp RSTCK rts wrap_fdelete: PRINT #65 SSTCK a0 move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_f_delete lea 4(sp),sp RSTCK rts wrap_fseek: PRINT #66 SSTCK a0 move.w 12(a0),-(sp) // mode move.w 10(a0),-(sp) // handle move.l 6(a0),-(sp) // count MDBSR a0,_sys_f_seek lea 8(sp),sp RSTCK rts wrap_fattrib: PRINT #67 SSTCK a0 move.w 12(a0),-(sp) // attrib move.w 10(a0),-(sp) // flag move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_f_attrib lea 8(sp),sp RSTCK rts wrap_fsfirst: PRINT #78 SSTCK a0 move.w 10(a0),-(sp) // flags move.l a4,-(sp) // name/mask - 6(a0) or a4 MD MDBSR a0,_sys_f_sfirst lea 6(sp),sp RSTCK rts wrap_fsnext: PRINT #79 SSTCK a0 MDBSR a0,_sys_f_snext RSTCK rts wrap_frename: PRINT #86 SSTCK a0 move.l 12(a0),-(sp) // newname move.l a4,-(sp) // oldname - 8(a0) or a4 MD (yes 8(a0)!!!) move.w 6(a0),-(sp) // reserved MDBSR a0,_sys_f_rename lea 10(sp),sp RSTCK rts wrap_fdatime: PRINT #87 SSTCK a0 move.w 12(a0),-(sp) // flag move.w 10(a0),-(sp) // handle move.l 6(a0),-(sp) // timeptr MDBSR a0,_sys_f_datime MDBSR a0,_sys_f_datime lea 8(sp),sp RSTCK rts wrap_fcntl: PRINT #260 SSTCK a0 move.w 12(a0),-(sp) // cmd move.l 8(a0),-(sp) // argument move.w 6(a0),-(sp) // handle //REM MDBSR a0,_sys_f_cntl lea 8(sp),sp RSTCK rts wrap_dpathconf: PRINT #292 SSTCK a0 move.w 10(a0),-(sp) // mode move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_d_pathconf lea 6(sp),sp RSTCK rts wrap_dopendir: PRINT #296 SSTCK a0 move.w 10(a0),-(sp) // flag move.l a4,-(sp) // name 6(a0) or a4 MD MDBSR a0,_sys_d_opendir lea 6(sp),sp RSTCK rts wrap_dreaddir: PRINT #297 SSTCK a0 move.l 12(a0),-(sp) // buffer move.l 8(a0),-(sp) // dirhandle move.w 6(a0),-(sp) // len MDBSR a0,_sys_d_readdir lea 10(sp),sp RSTCK rts wrap_drewinddir: PRINT #298 SSTCK a0 move.l 6(a0),-(sp) // dirhandle MDBSR a0,_sys_d_rewind lea 4(sp),sp RSTCK rts wrap_dclosedir: PRINT #299 SSTCK a0 move.l 6(a0),-(sp) // dirhandle MDBSR a0,_sys_d_closedir lea 4(sp),sp RSTCK rts wrap_fxattr: PRINT #300 SSTCK a0 move.l 12(a0),-(sp) // xattr* move.l a4,-(sp) // name 8(a0) or a4 MD move.w 6(a0),-(sp) // flag MDBSR a0,_sys_f_xattr lea 10(sp),sp RSTCK rts wrap_dxreaddir: PRINT #322 SSTCK a0 move.l 20(a0),-(sp) // xret* move.l 16(a0),-(sp) // xattr* move.l 12(a0),-(sp) // buffer move.l 8(a0),-(sp) // dirhandle move.w 6(a0),-(sp) // len MDBSR a0,_sys_d_xreaddir lea 18(sp),sp RSTCK rts wrap_dreadlabel: PRINT #338 SSTCK a0 move.w 14(a0),-(sp) // len move.l 10(a0),-(sp) // buffer move.l a4,-(sp) // pathname 6(a0) or a4 MD MDBSR a0,_sys_d_readlabel lea 10(sp),sp RSTCK rts s_frm: .ascii "DEV: %ld\n\0" s_stderr: .ascii "DEBUGPRINTF\0" .bss temp: ds.l 1 ds.b 8192 stack: aranym-1.1.0/atari/tools/devdos/main.c0000664000175000017500000000350313454637621016016 0ustar joyjoy/* * The ARAnyM BetaDOS driver. * * 2001/2002 STan * * Based on: * @(#)cookiefs/dosmain.c * * Copyright (c) Julian F. Reschke, 28. November 1995 * All rights reserved. * **/ #include #include #include #include #include "mintfake.h" #define DEVNAME "DEV.DOS Filesystem" #define VERSION "0.1" #if 0 #include "nfd.h" #define TRACE(x) NFD(x) #define DEBUG(x) NFD(x) #else #define TRACE(x) #define DEBUG(x) #endif char DriverName[] = DEVNAME" "VERSION; long ldp; void __CDECL ShowBanner( void ); void* __CDECL InitDevice( long bosDevID, long dosDevID ); unsigned long get_cookie (unsigned long tag); /* Diverse Utility-Funktionen */ static int Bconws( char *str ) { int cnt = 0; while (*str) { cnt++; if (*str == '\n') { Bconout (2, '\r'); cnt++; } Bconout (2, *str++); } return cnt; } void __CDECL ShowBanner( void ) { Bconws ( "\n\033p "DEVNAME" "VERSION" \033q " "\nCopyright (c) ARAnyM Development Team, "__DATE__"\n" ); } struct cookie { long tag; long value; }; unsigned long get_cookie (unsigned long tag) { struct cookie *cookie = *(struct cookie **)0x5a0; if (!cookie) return 0; while (cookie->tag) { if (cookie->tag == tag) return cookie->value; cookie++; } return 0; } /* FIXME: from bosmeta.c */ int bosfs_initialize(); void* __CDECL InitDevice( long bosDevID, long dosDevID ) { if (get_cookie(0x4D694E54L /*'MiNT'*/)) { return (void*)-1; } /* * We _must_ use the bosDevID to define the drive letter here * because MetaDOS (in contrary to BetaDOS) does not provide * the dosDevID */ DEBUG(("InitDevice: [dosDev=%ld, bosDev=%ld]", dosDevID, bosDevID )); if ( bosfs_initialize() < 0 ) { return (void*)-1; } return &ldp; } aranym-1.1.0/atari/tools/devdos/list.h0000664000175000017500000001274113454637621016056 0ustar joyjoy/* * Double linked list implementation * Copyright (c) 2006 windom authors (see AUTHORS file) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Taken from: * WinDom: a high level GEM library * Copyright (c) 1997-2006 windom authors (see AUTHORS file) * */ #ifndef __WINDOM_LIST__ #define __WINDOM_LIST__ /* __BEGIN_DECLS */ /** @addtogroup List * @{ */ /** element used to link structures each others * * This data shall be set at the very first place of the structure * if you want all the macro to work correctly. */ typedef struct Linkable { struct Linkable *next; /**< pointer to previous structure in the list */ struct Linkable *prev; /**< pointer to next structure in the list */ } LINKABLE; /** definition of a list of linked structures * * This is the starting point of the list of your elements. * This data point to both the first and the last element * of the list. * */ typedef struct { LINKABLE head; /**< first element of the list: this is a dummy element */ LINKABLE tail; /**< last element of the list: this is a dummy element */ } LIST; /** this is a zero-ed LIST data * * Warning: such list won't be reconized as an empty list. * You should call listInit() to properly initialise/zero/empty a list. */ #define listEmptyListInitializer() {{NULL,NULL},{NULL,NULL}} /** Initialisation of an empty LIST * * @param list the LIST data to initialise * * Initialises a list : \a list will be set as an * empty list. */ static inline void listInit( LIST *list ) { list->head.next = &list->tail; list->head.prev = (LINKABLE*)0L; list->tail.next = (LINKABLE*)0L; list->tail.prev = &list->head; } /** Insert the \a entry before \a iter * * @param iter is an element of the chained list * @param entry is a new element to insert in the list * */ static inline void listInsert( LINKABLE *iter, LINKABLE *entry ) { entry->next = iter; entry->prev = iter->prev; iter->prev->next = entry; iter->prev = entry; } /** Insert the \a entry after \a iter * * @param iter is an element of the chained list * @param entry is a new element to insert in the list * */ static inline void listAppend( LINKABLE *iter, LINKABLE *entry ) { entry->next = iter->next; entry->prev = iter; iter->next->prev = entry; iter->next = entry; } /** remove \a iter from the list * * @param iter is the element of the chained list to remove * */ static inline LINKABLE *listRemove( LINKABLE *iter ) { iter->prev->next = iter->next; iter->next->prev = iter->prev; return iter; } LIST *createList( void ); LIST *listSplice( LIST *list, LINKABLE *first, LINKABLE *pastLast ); /** usefull macro to parse all elements of a list. * * @param type is the type of the structure (to cast the \a i data) * @param i is the data to use in for loop. This data should be of the * \a type type. * @param list is the list to parse. * * This macro is based on a real \c for instruction, so you may leave * this loop by using the \c break instruction. * * Very important: the first data of the \a type structure must be a LINKABLE data. * * @par Exemple of use: * @code typedef struct { LINKABLE link; int other_datas; } ELT; LIST *list; ELT *e; (...) listForEach( ELT*, e, list) { int found; if (e->other_datas) found = do_stuff(e); else found = do_other_stuff(e); if (found) break; } @endcode * */ #define listForEach( type, i, list ) \ if ( list ) for( i=(type)(list)->head.next; \ ((LINKABLE*)i) != &(list)->tail; \ i=(type)((LINKABLE*)i)->next ) /** return the very first LINKABLE object of the list (before the first element linked) */ #define listRewind( list ) &((list)->head) /** return the very last LINKABLE object of the list (after the last element linked) */ #define listEnd( list ) &((list)->tail) /** return the next element on list. If the end of the list is reached (that is if the next * element is the very last LINKABLE object of the list) */ #define listNext( iter ) ((!((LINKABLE*)iter)->next->next) ? NULL : (((LINKABLE*)iter)->next)) /** return the previous element on list. If the begin of the list is reached (that is if the previous * element is the very first LINKABLE object of the list) */ #define listPrev( iter ) ((!((LINKABLE*)iter)->prev->prev) ? NULL : (((LINKABLE*)iter)->prev)) /** return if the list is empty or not */ #define listIsEmpty(list) ( ((list)->head.next) == (&(list)->tail)) /** return the first linked element of the list (the LINKABLE object right after listRewind), * or NULL if the list is empty */ #define listFirst(list) ( ((list)->head.next) == (&(list)->tail) ? NULL : ((list)->head.next)) #define listLast(list) ( ((list)->tail.prev) == (&(list)->head) ? NULL : ((list)->tail.prev)) typedef struct LinkablePtr { LINKABLE iter; void *value; } LINKABLEPTR; /** @} */ /* __END_DECLS */ #endif /* __WINDOM_LIST__ */ aranym-1.1.0/atari/tools/devdos/emu_tos.h0000664000175000017500000000540613454637621016556 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ # ifndef _mint_emu_tos_h # define _mint_emu_tos_h # ifdef __KERNEL__ # include "ktypes.h" # else # include # endif # define TOS_NAMELEN 13 struct dtabuf { ushort index; /* index into arrays in the PROC struct */ long magic; # define SVALID 0x1234fedcL /* magic for a valid search */ # define EVALID 0x5678ba90L /* magic for an exhausted search */ char dta_pat[TOS_NAMELEN+1]; /* pointer to pattern, if necessary */ char dta_sattrib; /* attributes being searched for */ /* this stuff is returned to the user */ char dta_attrib; ushort dta_time; ushort dta_date; ulong dta_size; char dta_name[TOS_NAMELEN+1]; }; /* defines for TOS attribute bytes */ # define FA_RDONLY 0x01 # define FA_HIDDEN 0x02 # define FA_SYSTEM 0x04 # define FA_LABEL 0x08 # define FA_DIR 0x10 # define FA_CHANGED 0x20 # ifdef __KERNEL__ # define FA_VFAT 0x0f /* VFAT entry */ # define FA_SYMLINK 0x40 /* symbolic link */ # endif /* Codes used with Cursconf() */ # define CURS_HIDE 0 # define CURS_SHOW 1 # define CURS_BLINK 2 # define CURS_NOBLINK 3 # define CURS_SETRATE 4 # define CURS_GETRATE 5 /* structure used to hold i/o buffers */ typedef struct io_rec { char *bufaddr; short buflen; volatile short head; volatile short tail; short low_water; short hi_water; } IOREC_T; /* Bconmap struct, * returned by Bconmap (-2) */ typedef struct { struct { long bconstat; long bconin; long bcostat; long bconout; long rsconf; IOREC_T *iorec; } *maptab; short maptabsize; } BCONMAP2_T; struct kbdvbase { long midivec; long vkbderr; long vmiderr; long statvec; long mousevec; long clockvec; long joyvec; long midisys; long ikbdsys; short drvstat; /* Non-zero if a packet is currently transmitted. */ }; typedef struct kbdvbase KBDVEC; # endif /* _mint_emu_tos_h */ aranym-1.1.0/atari/tools/devdos/dosfsfn.c0000664000175000017500000002210113454637621016527 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * 2002 STanda * * Based on: * dosdir.c,v 1.11 2001/10/23 09:09:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. * * * Copyright 1990,1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corporation. * All rights reserved. * */ /* DOS directory functions */ #include #include #include #include #include #include "bosmeta.h" #include "list.h" #include "dosdir.h" #include "emu_tos.h" #include "mintfake.h" #if 0 #include "nfd.h" #define TRACE(x) NFD(x) #define DEBUG(x) NFD(x) #else #define TRACE(x) #define DEBUG(x) #endif #define TOS_SEARCH 0x01 #define E_OK 0 #define NUM_SEARCH 10 static struct { DIR dirh; unsigned long srchtim; } search_dirs[NUM_SEARCH]; static inline void release_cookie( FCOOKIE **dir) { /* dummy as there is no dup_cookie in the path2cookie() */ } /* * returns 1 if the given name contains a wildcard character */ static int has_wild (const char *name) { char c; while ((c = *name++) != 0) if (c == '*' || c == '?') return 1; return 0; } /* * void copy8_3(dest, src): convert a file name (src) into DOS 8.3 format * (in dest). Note the following things: * if a field has less than the required number of characters, it is * padded with blanks * a '*' means to pad the rest of the field with '?' characters * special things to watch for: * "." and ".." are more or less left alone * "*.*" is recognized as a special pattern, for which dest is set * to just "*" * Long names are truncated. Any extensions after the first one are * ignored, i.e. foo.bar.c -> foo.bar, foo.c.bar->foo.c. */ static void copy8_3 (char *dest, const char *src) { char fill = ' ', c; int i; if (src[0] == '.') { if (src[1] == 0) { strcpy (dest, ". . "); return; } if (src[1] == '.' && src[2] == 0) { strcpy (dest, ".. . "); return; } } if (src[0] == '*' && src[1] == '.' && src[2] == '*' && src[3] == 0) { dest[0] = '*'; dest[1] = 0; return; } for (i = 0; i < 8; i++) { c = *src++; if (!c || c == '.') break; if (c == '*') fill = c = '?'; *dest++ = toupper((int)c & 0xff); } while (i++ < 8) *dest++ = fill; *dest++ = '.'; i = 0; fill = ' '; while (c && c != '.') c = *src++; if (c) { for( ;i < 3; i++) { c = *src++; if (!c || c == '.') break; if (c == '*') c = fill = '?'; *dest++ = toupper((int)c & 0xff); } } while (i++ < 3) *dest++ = fill; *dest = 0; } /* * int pat_match(name, patrn): returns 1 if "name" matches the template in * "patrn", 0 if not. "patrn" is assumed to have been expanded in 8.3 * format by copy8_3; "name" need not be. Any '?' characters in patrn * will match any character in name. Note that if "patrn" has a '*' as * the first character, it will always match; this will happen only if * the original pattern (before copy8_3 was applied) was "*.*". * * BUGS: acts a lot like the silly TOS pattern matcher. */ static int pat_match (const char *name, const char *template) { char expname [TOS_NAMELEN+1]; register char *s; register char c; if (*template == '*') return 1; copy8_3 (expname, name); s = expname; while ((c = *template++) != 0) { if (c != *s && c != '?') return 0; s++; } return 1; } /* * Fsfirst/next are actually implemented in terms of opendir/readdir/closedir. */ long __CDECL sys_f_sfirst (MetaDOSDTA const char *path, int attrib) { static short initialized = 0; char *s, *slash; FCOOKIE *dir, *newdir; struct dtabuf *dta = (struct dtabuf*)dtaMD; long r; int i, havelabel; char temp1[PATH_MAX]; TRACE(("Fsfirst(%s, %x)", path, attrib)); if ( !initialized ) { initialized = 1; for (i = 0; i < NUM_SEARCH; i++) { search_dirs[i].dirh.list = NULL; search_dirs[i].dirh.current = NULL; search_dirs[i].srchtim = 0; } } r = path2cookie (path, temp1, &dir); if (r) { DEBUG(("Fsfirst(%s): path2cookie returned %ld", path, r)); return r; } /* we need to split the last name (which may be a pattern) off from * the rest of the path, even if FS_KNOPARSE is true */ slash = 0; s = temp1; while (*s) { if (*s == '\\') slash = s; s++; } if (slash) { *slash++ = 0; /* slash now points to a name or pattern */ r = name2cookie (dir->folder, temp1, &newdir); release_cookie (&dir); if (r) { DEBUG(("Fsfirst(%s): lookup returned %ld", path, r)); return r; } dir = newdir; } else slash = temp1; /* BUG? what if there really is an empty file name? */ if (!*slash) { DEBUG(("Fsfirst: empty pattern")); return -ENOENT; } /* copy the pattern over into dta_pat into TOS 8.3 form * remember that "slash" now points at the pattern * (it follows the last, if any) */ copy8_3 (dta->dta_pat, slash); /* if (attrib & FA_LABEL), read the volume label * * BUG: the label date and time are wrong. ISO/IEC 9293 14.3.3 allows this. * The Desktop set also date and time to 0 when formatting a floppy disk. */ havelabel = 0; if (attrib & FA_LABEL) { r = sys_dl_readlabel (dta->dta_name, TOS_NAMELEN+1); dta->dta_attrib = FA_LABEL; dta->dta_time = dta->dta_date = 0; dta->dta_size = 0; dta->magic = EVALID; if (r == E_OK && !pat_match (dta->dta_name, dta->dta_pat)) r = -ENOENT; if ((attrib & (FA_DIR|FA_LABEL)) == FA_LABEL) return r; else if (r == E_OK) havelabel = 1; } DEBUG(("Fsfirst(): havelabel = %d",havelabel)); if (!havelabel && has_wild (slash) == 0) { struct xattr xattr; /* no wild cards in pattern */ r = name2cookie (dir->folder, slash, &newdir); if (r == E_OK) { r = getxattr (newdir, &xattr); release_cookie (&newdir); } release_cookie (&dir); if (r) { DEBUG(("Fsfirst(%s): couldn't get file attributes",path)); return r; } dta->magic = EVALID; dta->dta_attrib = xattr.attr; dta->dta_size = xattr.size; strncpy (dta->dta_name, slash, TOS_NAMELEN-1); dta->dta_name[TOS_NAMELEN-1] = 0; return E_OK; } /* There is a wild card. Try to find a slot for an opendir/readdir * search. NOTE: we also come here if we were asked to search for * volume labels and found one. */ for (i = 0; i < NUM_SEARCH; i++) if (! search_dirs[i].dirh.list) break; if (i == NUM_SEARCH) { int oldest = 0; DEBUG(("Fsfirst(%s): having to re-use a directory slot!", path)); for (i = 1; i < NUM_SEARCH; i++) if ( search_dirs[i].srchtim < search_dirs[oldest].srchtim ) oldest = i; /* OK, close this directory for re-use */ i = oldest; sys_dl_closedir (&search_dirs[i].dirh); /* invalidate re-used DTA */ dta->magic = EVALID; } r = sys_dl_opendir (&search_dirs[i].dirh, dir->folder, TOS_SEARCH); DEBUG(("Fsfirst opendir(%s, %d) -> %d", dir->name, i, r)); if (r != E_OK) { DEBUG(("Fsfirst(%s): couldn't open directory (error %ld)", path, r)); release_cookie(&dir); return r; } /* set up the DTA for Fsnext */ dta->index = i; dta->magic = SVALID; dta->dta_sattrib = attrib; /* OK, now basically just do Fsnext, except that instead of ENMFILES we * return ENOENT. * NOTE: If we already have found a volume label from the search above, * then we skip the sys_f_snext and just return that. */ if (havelabel) return E_OK; r = sys_f_snext(MetaDOSDTA0pass); if (r == ENMFILES) r = -ENOENT; if (r) TRACE(("Fsfirst: returning %ld", r)); /* release_cookie isn't necessary, since &dir is now stored in the * DIRH structure and will be released when the search is completed */ return r; } /* * Counter for Fsfirst/Fsnext, so that we know which search slots are * least recently used. This is updated once per second by the code * in timeout.c. * * BUG: 1/second is pretty low granularity */ long __CDECL sys_f_snext (MetaDOSDTA0) { DIR *dirh; struct dtabuf *dta = (struct dtabuf*)dtaMD; short attr; TRACE (("Fsnext")); if (dta->magic == EVALID) { DEBUG (("Fsnext(%lx): DTA marked a failing search", dta)); return -ENMFILES; } if (dta->magic != SVALID) { DEBUG (("Fsnext(%lx): dta incorrectly set up", dta)); return -ENOSYS; } /* get the slot pointer */ search_dirs[ dta->index ].srchtim++; dirh = &search_dirs[ dta->index ].dirh; /* BUG: sys_f_snext and readdir should check for disk media changes */ for(;;) { char buf[TOS_NAMELEN+1]; long r = sys_dl_readdir( dirh, buf, TOS_NAMELEN+1); if (r == EBADARG) { DEBUG(("Fsnext: name too long")); continue; /* TOS programs never see these names */ } if (r != E_OK) { sys_dl_closedir (dirh); dta->magic = EVALID; if (r != ENMFILES) DEBUG(("Fsnext: returning %ld", r)); return r; } if (!pat_match (buf, dta->dta_pat)) continue; /* different patterns */ attr = dirh->current->attr; /* silly TOS rules for matching attributes */ if (attr == 0) break; if (attr & (FA_CHANGED|FA_RDONLY)) break; if (attr & dta->dta_sattrib) break; } dta->dta_attrib = attr; dta->dta_size = 0; strncpy (dta->dta_name, dirh->current->name, TOS_NAMELEN-1); /* convert to upper characters (we are in TOS domain) */ strupr (dta->dta_name); DEBUG(("Fsnext: %s\n", dta->dta_name)); return E_OK; } aranym-1.1.0/atari/tools/devdos/dosfile.h0000664000175000017500000000146713454637621016533 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * dosfile.h,v 1.7 2001/06/13 20:21:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ # ifndef _dosfile_h # define _dosfile_h # include "mintfake.h" long __CDECL sys_f_open (MetaDOSFile const char *name, short mode); long __CDECL sys_f_create (MetaDOSFile const char *name, short attrib); long __CDECL sys_f_close (MetaDOSFile short fd); long __CDECL sys_f_read (MetaDOSFile short fd, long count, char *buf); long __CDECL sys_f_write (MetaDOSFile short fd, long count, const char *buf); long __CDECL sys_f_seek (MetaDOSFile long place, short fd, short how); long __CDECL sys_f_datime (MetaDOSFile unsigned short *timeptr, short fd, short wflag); # endif /* _dosfile_h */ aranym-1.1.0/atari/tools/devdos/dosfile.c0000664000175000017500000001301513454637621016516 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * dosfile.c,v 1.20 2001/06/13 20:21:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. * * * Copyright 1990,1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corporation. * All rights reserved. * */ /* DOS file handling routines */ #include #include #include # include "dosfile.h" # include "bosmeta.h" # include "metados.h" #if 0 #include "nfd.h" #define TRACE(x) NFD(x) #define DEBUG(x) NFD(x) #else #define TRACE(x) #define DEBUG(x) #endif typedef struct { FCOOKIE *fc; unsigned long offset; } FILEPTR; static inline long do_open( FILEPTR *f, FCOOKIE *fc, short mode) { metaopen_t metaopen; long ret = Metaopen(fc->bos_dev, &metaopen); if ( ret ) return ret; /* store the FCOOKIE* */ f->fc = fc; f->offset = 0; return 0; } static inline long do_close( FILEPTR *f) { Metaclose(f->fc->bos_dev); f->fc = NULL; return 0; } static inline long tty_read( FILEPTR *f, char *buf, long count) { return Metaread(f->fc->bos_dev, buf, 0, count); } static inline long tty_write( FILEPTR *f, const char *buf, long count) { return Metawrite(f->fc->bos_dev, buf, 0, count); } #define BLOCK_SIZE 2048 static inline long block_read( FILEPTR *f, char *buf, long count) { unsigned long boffset = f->offset / BLOCK_SIZE; unsigned long bcount = ( count + BLOCK_SIZE - 1) / BLOCK_SIZE; DEBUG(("block_read: '%s'\n", f->fc->name)); if ( (f->offset % BLOCK_SIZE) == 0 && (count % BLOCK_SIZE) == 0) { long ret = Metaread(f->fc->bos_dev, buf, boffset, bcount); if ( ret < 0 ) return ret; f->offset += ret * BLOCK_SIZE; return ret; } else { char *buffer = malloc( bcount * BLOCK_SIZE); long ret = Metaread(f->fc->bos_dev, buffer, boffset, bcount); if ( ret < 0 ) { free(buffer); return ret; } count = (ret * BLOCK_SIZE < count) ? ret * BLOCK_SIZE : count; memcpy( buf, &buffer[f->offset - (boffset * BLOCK_SIZE)], count); free( buffer); return ret; } } static inline long block_write( FILEPTR *f, const char *buf, long count) { unsigned long boffset = f->offset / BLOCK_SIZE; unsigned long bcount = ( count + BLOCK_SIZE - 1) / BLOCK_SIZE; DEBUG(("block_write: '%s'\n", f->fc->name)); if ( (f->offset % BLOCK_SIZE) == 0 && (count % BLOCK_SIZE) == 0) { long ret = Metawrite(f->fc->bos_dev, buf, boffset, bcount); if ( ret < 0 ) return ret; return count; } else { char *buffer = malloc( bcount * BLOCK_SIZE); long ret = Metaread(f->fc->bos_dev, buffer, boffset, bcount); if ( ret < 0 ) { free(buffer); return ret; } count = (ret * BLOCK_SIZE < count) ? ret * BLOCK_SIZE : count; memcpy( &buffer[f->offset - (boffset * BLOCK_SIZE)], buf, count); ret = Metawrite(f->fc->bos_dev, buffer, boffset, bcount); free(buffer); if ( ret < 0 ) return ret; return count; } } static inline long do_lseek( FILEPTR *f, long place, short how) { switch (how) { case 0: /* whence = SEEK_SET; */ f->offset = place; break; case 1: /* whence = SEEK_CUR; */ f->offset += place; break; case 2: /* whence = SEEK_END; */ /* FIXME? How to find the size of a device? */ default: ; } return -ENOSYS; } long __CDECL sys_f_open (MetaDOSFile const char *name, short mode) { FILEPTR *fp = (FILEPTR*)fpMD; FCOOKIE *fc; long ret = path2cookie( name, NULL, &fc); if (ret) return ret; #if 0 /* make sure the mode is legal */ mode &= O_USER; /* note: file mode 3 is reserved for the kernel; * for users, transmogrify it into O_RDWR (mode 2) */ if ((mode & O_RWMODE) == O_EXEC) mode = (mode & ~O_RWMODE) | O_RDWR; #endif return do_open (fp, fc, mode); } long __CDECL sys_f_create (MetaDOSFile const char *name, short attrib) { FILEPTR *fp = (FILEPTR*)fpMD; FCOOKIE *fc; long ret = path2cookie( name, NULL, &fc); if (ret) return ret; return do_open (fp, fc, 1); // return EPERM; } long __CDECL sys_f_close (MetaDOSFile short fd) { FILEPTR *fp = (FILEPTR*)fpMD; return do_close (fp); } long __CDECL sys_f_read (MetaDOSFile short fd, long count, char *buf) { FILEPTR *f = (FILEPTR*)fpMD; DEBUG(("f_read: '%s' %lx\n", f->fc->name, f->fc->bos_info_flags)); if (is_terminal (f->fc)) return tty_read (f, buf, count); DEBUG(("f_read: block '%s'\n", f->fc->name)); return block_read (f, buf, count); } long __CDECL sys_f_write (MetaDOSFile short fd, long count, const char *buf) { long r; FILEPTR *f = (FILEPTR*)fpMD; if (is_terminal (f->fc)) return tty_write (f, buf, count); /* Prevent broken device drivers from wiping the disk. * We return a zero rather than a negative error code * to help programs those don't handle GEMDOS errors * returned by Fwrite() */ if (count <= 0) return 0; #if 0 /* it would be faster to do this in the device driver, but this * way the drivers are easier to write */ if (f->flags & O_APPEND) { r = do_lseek (f, 0L, SEEK_END); /* ignore errors from unseekable files (e.g. pipes) */ if (r == EACCES) r = 0; } else #endif r = 0; if (r < 0) return r; return block_write (f, buf, count); } long __CDECL sys_f_seek (MetaDOSFile long place, short fd, short how) { FILEPTR *f = (FILEPTR*)fpMD; if (is_terminal (f->fc)) return 0; return do_lseek (f, place, how); } long __CDECL sys_f_datime (MetaDOSFile unsigned short *timeptr, short fd, short wflag) { FILEPTR *f = (FILEPTR*)fpMD; /* some programs use Fdatime to test for TTY devices */ if (is_terminal (f->fc)) return EACCES; return EACCES; //FIXME: xdd_datime (f, timeptr, wflag); } aranym-1.1.0/atari/tools/devdos/dosdir.h0000664000175000017500000000346713454637621016374 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * dosdir.h,v 1.2 2001/06/13 20:21:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ # ifndef _dosdir_h # define _dosdir_h # include "mintfake.h" /* local interpretation of the 'struct dirent' */ typedef struct { LIST *list; FCOOKIE *current; short mode; } DIR; long __CDECL sys_dl_opendir (DIR *dirh, LIST *list, int flag); long __CDECL sys_dl_readdir (DIR *dirh, char *buf, int len); long __CDECL sys_dl_closedir (DIR *dirh); long __CDECL sys_dl_readlabel (char *buf, int buflen); long __CDECL sys_d_free (MetaDOSDir long *buf, int d); long __CDECL sys_d_create (MetaDOSDir const char *path); long __CDECL sys_d_delete (MetaDOSDir const char *path); long __CDECL sys_f_sfirst (MetaDOSDTA const char *path, int attrib); long __CDECL sys_f_snext (MetaDOSDTA0); long __CDECL sys_f_attrib (MetaDOSFile const char *name, int rwflag, int attr); long __CDECL sys_f_delete (MetaDOSFile const char *name); long __CDECL sys_f_rename (MetaDOSFile int junk, const char *old, const char *new); long __CDECL sys_d_pathconf (MetaDOSDir const char *name, int which); long __CDECL sys_d_opendir (MetaDOSDir const char *path, int flags); long __CDECL sys_d_readdir (MetaDOSDir int len, long handle, char *buf); long __CDECL sys_d_xreaddir (MetaDOSDir int len, long handle, char *buf, struct xattr *xattr, long *xret); long __CDECL sys_d_rewind (MetaDOSDir long handle); long __CDECL sys_d_closedir (MetaDOSDir long handle); long __CDECL sys_f_xattr (MetaDOSFile int flag, const char *name, struct xattr *xattr); long __CDECL sys_d_readlabel (MetaDOSDir const char *path, char *label, int maxlen); long __CDECL sys_d_writelabel (MetaDOSDir const char *path, const char *label); # endif /* _dosdir_h */ aranym-1.1.0/atari/tools/devdos/dosdir.c0000664000175000017500000001071713454637621016363 0ustar joyjoy#include #include #include #include #include "bosmeta.h" #include "list.h" #include "dosdir.h" #if 0 #include "nfd.h" #define TRACE(x) NFD(x) #define DEBUG(x) NFD(x) #else #define TRACE(x) #define DEBUG(x) #endif long __CDECL sys_dl_opendir (DIR *dirh, LIST *list, int flag) { DEBUG(("dl_opendir: %lx list=%lx\n", dirh, list)); dirh->list = list; dirh->mode = flag; dirh->current = (FCOOKIE*)listRewind(dirh->list); return 0; } long __CDECL sys_dl_readdir (DIR *dirh, char *buf, int len) { dirh->current = (FCOOKIE *)listNext((LINKABLE*)dirh->current); DEBUG(("dl_readdir: %lx list=%lx: len %d, '%s'\n", dirh, dirh->list, len, dirh->current ? dirh->current->name : "ENMFILES")); if (!dirh->current) return -ENMFILES; /* Insert file index if needed */ if (!dirh->mode) { *(long*)buf = (long)dirh->current; buf += 4; len -= 4; } if ( len <= 0 ) return -ERANGE; strncpy(buf, dirh->current->name, len-1); return 0; } long __CDECL sys_dl_closedir (DIR *dirh) { DEBUG(("dl_closedir: %lx list=%lx\n", dirh, dirh->list)); dirh->list = NULL; dirh->current = NULL; return 0; } long __CDECL sys_dl_readlabel (char *buf, int buflen) { strncpy(buf, "nfstderr", buflen-1); return 0; } long __CDECL sys_d_free (MetaDOSDir long *buf, int d) { #if 1 return -ENOSYS; #else PROC *p = curproc; fcookie *dir = 0; d = (int)tolower(pathNameMD[0])-'a'; dir = &p->p_cwd->root[d]; #endif } long __CDECL sys_d_create (MetaDOSDir const char *path) { return -EACCES; } long __CDECL sys_d_delete (MetaDOSDir const char *path) { return -EACCES; } long __CDECL sys_f_xattr (MetaDOSFile int flag, const char *name, struct xattr *xattr) { FCOOKIE *fc; long r = path2cookie (name, NULL, &fc); if (r) { DEBUG(("Fattrib(%s): error %ld", name, r)); return r; } return getxattr( fc, xattr); } long __CDECL sys_f_attrib (MetaDOSFile const char *name, int rwflag, int attr) { FCOOKIE *fc; long r = path2cookie (name, NULL, &fc); if (r) { DEBUG(("Fattrib(%s): error %ld", name, r)); return r; } return fc->attr; } long __CDECL sys_f_delete (MetaDOSFile const char *name) { return -EACCES; } long __CDECL sys_f_rename (MetaDOSFile int junk, const char *old, const char *new) { return -EACCES; } /* * GEMDOS extension: Dpathconf(name, which) * * returns information about filesystem-imposed limits; "name" is the name * of a file or directory about which the limit information is requested; * "which" is the limit requested, as follows: * -1 max. value of "which" allowed * 0 internal limit on open files, if any * 1 max. number of links to a file {LINK_MAX} * 2 max. path name length {PATH_MAX} * 3 max. file name length {NAME_MAX} * 4 no. of bytes in atomic write to FIFO {PIPE_BUF} * 5 file name truncation rules * 6 file name case translation rules * * unlimited values are returned as 0x7fffffffL * * see also Sysconf() in dos.c */ long __CDECL sys_d_pathconf (MetaDOSDir const char *name, int which) { /* FIXME? now from cookfs */ switch (which) { case -1: return 7; case 0: return 0x7fffffffL; case 1: return 1; case 2: return PATH_MAX; case 3: return PATH_MAX; case 4: return 0; case 5: return 0; case 6: return 0; case 7: return 0x00800000L; default: return -ENOSYS; } } long __CDECL sys_d_opendir (MetaDOSDir const char *name, int flag) { DIR *dirh = (DIR *) dirMD; FCOOKIE *fc; long r = path2cookie( name, NULL, &fc); if (r) { DEBUG(("Dopendir(%s): path2cookie returned %ld", name, r)); return r; } r = sys_dl_opendir( dirh, fc->folder, flag); if (r) return r; return (long)dirh; } long __CDECL sys_d_readdir (MetaDOSDir int len, long handle, char *buf) { DIR *dirh = (DIR *) dirMD; return sys_dl_readdir( dirh, buf, len); } long __CDECL sys_d_xreaddir (MetaDOSDir int len, long handle, char *buf, struct xattr *xattr, long *xret) { DIR *dirh = (DIR *) dirMD; long ret = sys_dl_readdir( dirh, buf, len); if ( ret ) return ret; *xret = getxattr( dirh->current, xattr); return 0; } long __CDECL sys_d_rewind (MetaDOSDir long handle) { DIR *dirh = (DIR *) dirMD; dirh->current = (FCOOKIE *)listRewind(dirh->list); return 0; } long __CDECL sys_d_closedir (MetaDOSDir long handle) { return sys_dl_closedir( (DIR*)dirMD); } long __CDECL sys_d_readlabel (MetaDOSDir const char *name, char *buf, int buflen) { return sys_dl_readlabel(buf, buflen); } long __CDECL sys_d_writelabel (MetaDOSDir const char *name, const char *label) { return -ENOSYS; } aranym-1.1.0/atari/tools/devdos/ctype.c0000664000175000017500000000703413454637621016221 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * begin: 2000-04-17 * last change: 2000-04-17 * * Author: Frank Naumann * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * changes since last version: * * known bugs: * * todo: * * optimizations: * */ # define _CTc 0x01 /* control character */ # define _CTd 0x02 /* numeric digit */ # define _CTu 0x04 /* upper case */ # define _CTl 0x08 /* lower case */ # define _CTs 0x10 /* whitespace */ # define _CTp 0x20 /* punctuation */ # define _CTx 0x40 /* hexadecimal */ unsigned char _mint_ctype[256] = { _CTc, _CTc, _CTc, _CTc, /* 0x00..0x03 */ _CTc, _CTc, _CTc, _CTc, /* 0x04..0x07 */ _CTc, _CTc|_CTs, _CTc|_CTs, _CTc|_CTs, /* 0x08..0x0B */ _CTc|_CTs, _CTc|_CTs, _CTc, _CTc, /* 0x0C..0x0F */ _CTc, _CTc, _CTc, _CTc, /* 0x10..0x13 */ _CTc, _CTc, _CTc, _CTc, /* 0x14..0x17 */ _CTc, _CTc, _CTc, _CTc, /* 0x18..0x1B */ _CTc, _CTc, _CTc, _CTc, /* 0x1C..0x1F */ _CTs, _CTp, _CTp, _CTp, /* 0x20..0x23 */ _CTp, _CTp, _CTp, _CTp, /* 0x24..0x27 */ _CTp, _CTp, _CTp, _CTp, /* 0x28..0x2B */ _CTp, _CTp, _CTp, _CTp, /* 0x2C..0x2F */ _CTd|_CTx, _CTd|_CTx, _CTd|_CTx, _CTd|_CTx, /* 0x30..0x33 */ _CTd|_CTx, _CTd|_CTx, _CTd|_CTx, _CTd|_CTx, /* 0x34..0x37 */ _CTd|_CTx, _CTd|_CTx, _CTp, _CTp, /* 0x38..0x3B */ _CTp, _CTp, _CTp, _CTp, /* 0x3C..0x3F */ _CTp, _CTu|_CTx, _CTu|_CTx, _CTu|_CTx, /* 0x40..0x43 */ _CTu|_CTx, _CTu|_CTx, _CTu|_CTx, _CTu, /* 0x44..0x47 */ _CTu, _CTu, _CTu, _CTu, /* 0x48..0x4B */ _CTu, _CTu, _CTu, _CTu, /* 0x4C..0x4F */ _CTu, _CTu, _CTu, _CTu, /* 0x50..0x53 */ _CTu, _CTu, _CTu, _CTu, /* 0x54..0x57 */ _CTu, _CTu, _CTu, _CTp, /* 0x58..0x5B */ _CTp, _CTp, _CTp, _CTp, /* 0x5C..0x5F */ _CTp, _CTl|_CTx, _CTl|_CTx, _CTl|_CTx, /* 0x60..0x63 */ _CTl|_CTx, _CTl|_CTx, _CTl|_CTx, _CTl, /* 0x64..0x67 */ _CTl, _CTl, _CTl, _CTl, /* 0x68..0x6B */ _CTl, _CTl, _CTl, _CTl, /* 0x6C..0x6F */ _CTl, _CTl, _CTl, _CTl, /* 0x70..0x73 */ _CTl, _CTl, _CTl, _CTl, /* 0x74..0x77 */ _CTl, _CTl, _CTl, _CTp, /* 0x78..0x7B */ _CTp, _CTp, _CTp, _CTc, /* 0x7C..0x7F */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x80..0x8F */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x90..0x9F */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xA0..0xAF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xB0..0xBF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xC0..0xCF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xD0..0xDF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xE0..0xEF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /* 0xF0..0xFF */ }; aranym-1.1.0/atari/tools/devdos/bosmeta.h0000664000175000017500000000345713454637621016541 0ustar joyjoy/* * Copyright (c) 2005 STanda Opichal * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #ifndef ___bosmeta_h__ #define ___bosmeta_h__ #include "list.h" #include "metados.h" typedef struct { LINKABLE item; char *name; short attr; LIST *folder; /* BOS device entries */ short bos_dev; unsigned long bos_info_flags; } FCOOKIE; /* old stat structure */ struct xattr { unsigned short mode; long index; unsigned short dev; unsigned short rdev; unsigned short nlink; unsigned short uid; unsigned short gid; long size; long blksize; long nblocks; unsigned short mtime, mdate; unsigned short atime, adate; unsigned short ctime, cdate; short attr; short reserved2; long reserved3[2]; }; static inline long is_terminal( FCOOKIE *fc) { return fc->bos_info_flags & BOS_INFO_ISTTY; } long bosfs_initialize(void); long getxattr (FCOOKIE *fc, struct xattr *res); long name2cookie (LIST *folder, const char *name, FCOOKIE **res); long relpath2cookie (FCOOKIE *dir, const char *path, char *lastname, FCOOKIE **res); long path2cookie (const char *path, char *lastname, FCOOKIE **res); #endif /* ___bosmeta_h__ */ aranym-1.1.0/atari/tools/devdos/bosmeta.c0000664000175000017500000001554213454637621016532 0ustar joyjoy#include #include #include #include #include #include "bosmeta.h" #include "dosdir.h" #if 0 #include "nfd.h" #define TRACE(x) NFD(x) #define DEBUG(x) NFD(x) #else #define TRACE(x) #define DEBUG(x) #endif /* x:\dev\phys folder lists respectively */ LIST root; static LIST root_dev; static LIST root_dev_phys; /* cookie release/dup */ static void release_cookie( FCOOKIE *fc); static void release_folder( LIST *f) { LINKABLE *fc = listFirst(f); while (fc) { FCOOKIE *trash = (FCOOKIE*)fc; fc = listNext(fc); release_cookie( trash); } } static void release_cookie( FCOOKIE *fc) { release_folder( fc->folder); free( fc->name); free( fc); } static FCOOKIE *dup_cookie( FCOOKIE *s) { FCOOKIE *fc; fc = malloc(sizeof(FCOOKIE)); fc->name = strdup(s->name); fc->attr = s->attr; fc->folder = s->folder; fc->bos_dev = s->bos_dev; fc->bos_info_flags = s->bos_info_flags; return fc; } long bosfs_initialize(void) { int i; metainit_t metainit={0,0,0,0}; FCOOKIE *fc; Metainit(&metainit); TRACE(("MetaDOS version=%s, drives=%x\n", metainit.version, metainit.drives_map)); if (metainit.version == NULL) { DEBUG(("MetaDOS not installed\n")); return -1; } if (metainit.drives_map == 0) { DEBUG(("No MetaDOS devices present\n")); return -1; } listInit( &root); { /* create the x:\dev folder */ fc = malloc(sizeof(FCOOKIE)); fc->name = strdup("dev"); fc->attr = FA_DIR; fc->folder = &root_dev; fc->bos_dev = 0; /* add it to the folder */ listInsert( root.head.next, (LINKABLE*)fc); } listInit( &root_dev); { /* create the x:\dev\phys folder */ fc = malloc(sizeof(FCOOKIE)); fc->name = strdup("bos"); fc->attr = FA_DIR; fc->folder = &root_dev_phys; fc->bos_dev = 0; /* add it to the folder */ listInsert( root_dev.head.next, (LINKABLE*)fc); } listInit( &root_dev_phys); for (i='A'; i<='Z'; i++) if (metainit.drives_map & (1<<(i-'A'))) { metaopen_t metaopen; int handle; char name[] = "A"; name[0] = i; fc = malloc(sizeof(FCOOKIE)); fc->name = strdup(name); fc->attr = 0; fc->folder = NULL; fc->bos_dev = i; fc->bos_info_flags = BOS_INFO_DEVHIDDEN; /* by default hide from U:\dev */ DEBUG(("dev: %s->%s\n", name, fc->name)); /* attempt to get the bos_info */ handle = Metaopen(i, &metaopen); if (handle == 0) { bos_info_t info; if ( ! Metaioctl(i, METADOS_IOCTL_MAGIC, METADOS_IOCTL_BOSINFO, &info)) { DEBUG(("ioctl: %s->%s %lx\n", name, fc->name, info.flags)); fc->bos_info_flags = info.flags; } Metaclose(i); DEBUG(("dev: %s->%s %lx\n", name, fc->name, fc->bos_info_flags)); /* the BOSINFO states that the device should not be visible * in x:\dev\bos nor in x:\dev\bos */ if ( fc->bos_info_flags & BOS_INFO_BOSHIDDEN ) { release_cookie( fc ); continue; } /* insert the devices that have a decent name also to u:\dev */ if ( ! (fc->bos_info_flags & BOS_INFO_DEVHIDDEN) && *metaopen.name ) { FCOOKIE *cfc = dup_cookie(fc); free( cfc->name); cfc->name = strdup(metaopen.name); listInsert( &root_dev.tail, (LINKABLE*)cfc); } } /* add it to the folder */ listInsert( root_dev_phys.head.next, (LINKABLE*)fc); } return 0; } long getxattr (FCOOKIE *fc, struct xattr *res) { res->mode = 0666; res->mode |= fc->attr & FA_DIR ? (S_IFDIR|0111) : 0; res->index = (long)fc; res->dev = (long)&root; res->rdev = (long)&root; res->nlink = 1; res->uid = 0; res->gid = 0; res->size = 0; res->blksize = 512; res->nblocks = ( res->size + res->blksize - 1) >> 9; // FIXME! res->mtime = 0; res->mdate = 0; res->atime = 0; res->adate = 0; res->ctime = 0; res->cdate = 0; res->attr = fc->attr; res->reserved2 = 0; res->reserved3[0] = 0; res->reserved3[1] = 0; return 0; } long name2cookie (LIST *folder, const char *name, FCOOKIE **res) { char lowname[32]; FCOOKIE* fc; DEBUG(( "name2cookie: name=%s\n", name)); /* look for 'name' in the folder */ listForEach( FCOOKIE*, fc, folder) { char *c = lowname; char *f = fc->name; while ( (*c++ = tolower(*f++)) ) ; DEBUG(( "name2cookie: fc->name=%s\n", fc->name)); if ( ! strcmp( lowname, name) ) { *res = fc; return 0; } } return -ENOENT; } /* * routines for parsing path names */ /* * relpath2cookie converts a TOS file name into a file cookie representing * the directory the file resides in, and a character string representing * the name of the file in that directory. The character string is * copied into the "lastname" array. If lastname is NULL, then the cookie * returned actually represents the file, instead of just the directory * the file is in. * * note that lastname, if non-null, should be big enough to contain all the * characters in "path", since if the file system doesn't want the kernel * to do path name parsing we may end up just copying path to lastname * and returning the current or root directory, as appropriate * * "dir" is the directory relative to which the search should start. * if you just want the current directory, use path2cookie instead. * */ # define DIRSEP(p) (((p) == '\\') || ((p) == '/')) long relpath2cookie (FCOOKIE *dir, const char *path, char *lastname, FCOOKIE **res) { long r = 0; short do_last = (lastname == NULL); char temp[PATH_MAX]; if ( ! lastname ) lastname = temp; DEBUG(( "relpath2cookie: dir=%s path=%s\n", dir->name, path)); /* first, check for a drive letter */ if (path[1] == ':') { char c = tolower ((int)path[0] & 0xff); if (c >= 'a' && c <= 'z') path += 2; else if (c >= '1' && c <= '6') path += 2; } while (*path) { /* now we must have a directory, since there are more things * in the path */ if ( ! (dir->attr & FA_DIR) ) return -ENOTDIR; /* skip slashes */ while (DIRSEP (*path)) path++; /* if there's nothing left in the path, we can break here */ if (!*path) { *res = dir; *lastname = '\0'; return 0; } /* next, peel off the next name in the path */ { register int len; register char c, *s; len = 0; s = lastname; c = *path; while (c && !DIRSEP (c)) { if (len++ < PATH_MAX) *s++ = tolower(c); c = *++path; } *s = 0; } /* if there are no more names in the path, and we don't want * to actually look up the last name, then we're done */ if (!do_last && !*path) { *res = dir; return 0; } r = name2cookie (dir->folder, lastname, res); if (r) { if (r == -ENOENT && *path) { /* the "file" we didn't find was treated as a directory */ return -ENOTDIR; } return r; } dir = *res; } return 0; } long path2cookie (const char *path, char *lastname, FCOOKIE **res) { static FCOOKIE rootfc; long r; rootfc.name = "devdir:"; // FIXME: DEBUG! rootfc.attr = FA_DIR; rootfc.folder = &root; rootfc.bos_dev = 0; r = relpath2cookie ( &rootfc, path, lastname, res); DEBUG(( "path2cookie: r=%d\n", r)); return r; } aranym-1.1.0/atari/tools/devdos/README0000664000175000017500000000254513454637621015613 0ustar joyjoyBetaDOS x:\dev filesystem driver ================================ The dev.dos is a driver that creates the u:\dev folder known from the FreeMiNT and MagiC environment. The motivation is to create identical environment by which any HW dependent access is encapsulated. That approach is present in UNIX-like environments and is present in FreeMiNT as its fundamental concept. The aim is to make developers provide special driver for any HW (or NF which is considered to be OS only acces feature) they create. Such driver would make it possible to create an equivalent on another machine with the same interface and would automaticaly impose some level of reusability. So for TOS environments one would create BetaDOS .BOS device driver and for FreeMiNT .XDD device driver. This dev.dos driver automatically scans any .BOS driver loaded by BetaDOS and creates appropriate x:\dev\bos folder entry for each. It also asks the particular .BOS driver for an information whether it should also be placed into the x:\dev under its name. (FIXME: provide another ioctl() to provide better name?). Just install it to the bdconfig.sys e.g. as: ... *BOS, \auto\nfstderr.bos, E *DOS, c:\auto\dev.dos, X:2 ... And you will get: X:\dev\bos\E X:\dev\nfstderr Ehere the nfstderr is actually like a hardlink to the bos\E entry. More documentation to come on this topic. Best Regards STanda aranym-1.1.0/atari/tools/devdos/Makefile0000664000175000017500000000073113454637621016366 0ustar joyjoy TARGET = dev.dos COBJS = bosmeta.c dosdir.c dosfile.c dosfsfn.c main.c utility.c ctype.c SOBJS = mdglue.S include ../../CONFIGVARS CFLAGS = -mshort $(OPTS) $(WARN) $(GENERAL) LDFLAGS = -nostdlib -Wl,--entry -Wl,_init -lgcc COBJECTS = $(COBJS:.c=.o) SOBJECTS = $(SOBJS:.S=.o) all: $(TARGET) $(TARGET): $(COBJECTS) $(SOBJECTS) ${CC} -o $@ $(COBJECTS) $(SOBJECTS) $(GENERAL) ${CFLAGS} ${LDFLAGS} ${STRIP} $(TARGET) clean: rm -f $(SOBJECTS) $(COBJECTS) $(TARGET) aranym-1.1.0/atari/tools/README0000664000175000017500000000073613454637621014327 0ustar joyjoyThese are the first basic tools for Aranym: - CLOCKY.PRG that write actual mouse position to $f9000e/$f90010 (It was faster to implement it into Clocky (TM) than to write a new TSR). Clocky by default do not alter the keyboard layout now. Get full Clocky 3.0 distribution at http://joy.atari.org/ - there's a nice editor of keyboard layout. - PCPATCH.PRG that patches PureC (PC.PRG) to be able to compile projects and files from the BetaDOS driven filesystem. Petr aranym-1.1.0/atari/sound/0000775000175000017500000000000013454637621013431 5ustar joyjoyaranym-1.1.0/atari/sound/zmagxsnd.l0000664000175000017500000032370013454637621015446 0ustar joyjoy ILABEL TOS.Q DEBUG EQU 0;0-1-2 GSXB EQU 1;cookie VERSION EQU $0061;$0063 max pour 0.99 INC EQU ADDQ #1, DEC EQU SUBQ #1, TAILLE_BUFFER EQU 256*4;8192*4 TAILLE_BUFFER_SDL EQU 1024*4 TAILLE_SOUND_HEADER EQU 64 NB_BUFFERS EQU 5 MAX_TAB EQU 8 LTATTEN EQU 0 RTATTEN EQU 1 LTGAIN EQU 2 RTGAIN EQU 3 ADDERIN EQU 4 ADCINPUT EQU 5 SETPRESCALE EQU 6 SETSMPFREQ EQU 7 ;>>> SDL <<< SDL_MIX_MAXVOLUME EQU 128 ;Audio format flags AUDIO_U8 EQU $0008 ;Unsigned 8-bit samples AUDIO_S8 EQU $8008 ;Signed 8-bit samples AUDIO_U16LSB EQU $0010 ;Unsigned 16-bit sample Intel AUDIO_S16LSB EQU $8010 ;Signed 16-bit samples Intel AUDIO_U16MSB EQU $1010 ;Unsigned 16-bit sample Motorola AUDIO_S16MSN EQU $9010 ;Signed 16-bit samples Motorola ;current audio state SDL_AUDIO_STOPPED EQU 0 SDL_AUDIO_PLAYING EQU 1 SDL_AUDIO_PAUSED EQU 2 ;Aranym audio functions OpenAudio EQU 1 CloseAudio EQU 2 PauseAudio EQU 3 AudioStatus EQU 4 AudioVolume EQU 5 LockAudio EQU 6 UnlockAudio EQU 7 GetAudioFreq EQU 8 GetAudioLen EQU 9 ;>>> MacOS <<< ;flags gestalt gestaltStereoCapability EQU 0 gestaltStereoMixing EQU 1 gestaltSoundIOMgrPresent EQU 3 gestaltBuiltInSoundInput EQU 4 gestaltHasSoundInputDevice EQU 5 gestaltPlayAndRecord EQU 6 gestalt16BitSoundIO EQU 7 gestaltStereoInput EQU 8 gestaltLineLevelInput EQU 9 gestaltSndPlayDoubleBuffer EQU 10 gestaltMultiChannels EQU 11 gestalt16BitAudioSupport EQU 12 ;Get&Set Sound Information Selectors siActiveChannels EQU 'chac' ;active channels siActiveLevels EQU 'lmac' ;active meter levels siAGCOnOff EQU 'agc ' ;automatic gain control state siAsync EQU 'asyn' ;asynchronous capability siAVDisplayBehavior EQU 'avdb' siChannelAvailable EQU 'chav' ;number of channels available siCompressionAvailable EQU 'cmav' ;compression types available siCompressionChannels EQU 'cpct' ;compressor's number of channels siCompressionFactor EQU 'cmfa' ;current compression factor siCompressionHeader EQU 'cmhd' ;return compression header siCompressionNames EQU 'cnam' ;compression type names available siCompressionParams EQU 'evaw' ;compression parameters siCompressionSampleRate EQU 'cprt' ;compressor's sample rate siCompressionType EQU 'comp' ;current compression type siContinuous EQU 'cont' ;continous recording siDecompressionParams EQU 'wave' ;decompression parameters siDeviceBufferInfo EQU 'dbin' ;size of interrupt buffer siDeviceConnected EQU 'dcon' ;input device connection status siDeviceIcon EQU 'icon' ;input device icon siDeviceName EQU 'name' ;input device name siEQSpectrumBands EQU 'eqsb' ;number of spectrum bands siEQSpectrumLevels EQU 'eqlv' ;gets spectum meter levels siEQSpectrumOnOff EQU 'eqlo' ;turn on/off spectum meter levels siEQSpectrumResolution EQU 'eqrs' ;set the resolution of the FFT, 0 = low res (<=16 bands), 1 = high res (16-64 bands) siEQToneControlGain EQU 'eqtg' ;set the bass and treble gain siEQToneControlOnOff EQU 'eqtc' ;turn on equalizer attenuation siHardwareBalance EQU 'hbal' siHardwareBalanceSteps EQU 'hbls' siHardwareBass EQU 'hbas' siHardwareBassSteps EQU 'hbst' siHardwareBusy EQU 'hwbs' ;sound hardware is in use siHardwareFormat EQU 'hwfm' ;get hardware format siHardwareMute EQU 'hmut' ;mute state of all hardware siHardwareMuteNoPrefs EQU 'hmnp' ;mute state of all hardware, but don't store in prefs siHardwareTreble EQU 'htrb' siHardwareTrebleSteps EQU 'hwts' siHardwareVolume EQU 'hvol' ;volume level of all hardware siHardwareVolumeSteps EQU 'hstp' ;number of volume steps for hardware siHeadphoneMute EQU 'pmut' ;mute state of headphones siHeadphoneVolume EQU 'pvol' ;volume level of headphones siHeadphoneVolumeSteps EQU 'hdst' ;number of volume steps for headphones siInputAvailable EQU 'inav' ;input sources available siInputGain EQU 'gain' ;input gain siInputSource EQU 'sour' ;input source selector siInputSourceNames EQU 'snam' ;input source names siLevelMeterOnOff EQU 'lmet' ;level meter state siModemGain EQU 'mgai' ;modem input gain siMonitorAvailable EQU 'mnav' siMonitorSource EQU 'mons' siNumberChannels EQU 'chan' ;current number of channels siOptionsDialog EQU 'optd' ;display options dialog siOSTypeInputSource EQU 'inpt' ;input source by OSType siOSTypeInputAvailable EQU 'inav' ;list of available input source OSTypes siOutputDeviceName EQU 'onam' ;output device name siPlayThruOnOff EQU 'plth' ;playthrough state siPostMixerSoundComponent EQU 'psmx' ;install post-mixer effect siPreMixerSoundComponent EQU 'prmx' ;install pre-mixer effect siQuality EQU 'qual' ;quality setting siRateMultiplier EQU 'rmul' ;throttle rate setting siRecordingQuality EQU 'qual' ;recording quality siSampleRate EQU 'srat' ;current sample rate siSampleRateAvailable EQU 'srav' ;sample rates available siSampleSize EQU 'ssiz' ;current sample size siSampleSizeAvailable EQU 'ssav' ;sample sizes available siSetupCDAudio EQU 'sucd' ;setup sound hardware for CD audio siSetupModemAudio EQU 'sumd' ;setup sound hardware for modem audio siSlopeAndIntercept EQU 'flap' ;floating point variables for conversion siSoundClock EQU 'sclk' siUseThisSoundClock EQU 'sclc' ;sdev uses this to tell the mixer to use his sound clock siSpeakerMute EQU 'smut' ;mute state of all built-in speaker siSpeakerVolume EQU 'svol' ;volume level of built-in speaker siSSpCPULoadLimit EQU '3dll' siSSpLocalization EQU '3dif' siSSpSpeakerSetup EQU '3dst' siStereoInputGain EQU 'sgai' ;stereo input gain siSubwooferMute EQU 'bmut' ;mute state of sub-woofer siTerminalType EQU 'ttyp' ;usb terminal type siTwosComplementOnOff EQU 'twos' ;two's complement state siVendorProduct EQU 'vpro' ;vendor and product ID siVolume EQU 'volu' ;volume level of source siVoxRecordInfo EQU 'voxr' ;VOX record parameters siVoxStopInfo EQU 'voxs' ;VOX stop parameters siWideStereo EQU 'wide' ;wide stereo setting siSupportedExtendedFlags EQU 'exfl' ;which flags are supported in Extended sound data structures siRateConverterRollOffSlope EQU 'rcdb' ;the roll-off slope for the rate converter's filter, in whole dB ; as a long this value is a long whose range is from 20 (worst quality/fastest performance) ; to 90 (best quality/slowest performance) siOutputLatency EQU 'olte' ;latency of sound output component ;commandes de SNDDOCOMMAND ou SNDDOIMMEDIATE NULLCMD EQU 0 ;do nothing QUIETCMD EQU 3 ;stop a sound that is playing FLUSHCMD EQU 4 ;flush a sound channel REINITCMD EQU 5 ;reinitialize a sound channel WAITCMD EQU 10 ;suspend processing in a channel PAUSECMD EQU 11 ;pause processing in a channel RESUMECMD EQU 12 ;resume processing in a channel CALLBACKCMD EQU 13 ;execute a callback procedure SYNCCMD EQU 14 ;synchronize channels AVAILABLECMD EQU 24 ;see if initialization options are supported VERSIONCMD EQU 25 ;determine version TOTALLOADCMD EQU 26 ;report total CPU load LOADCMD EQU 27 ;report CPU load for a new channel FREQDURATIONCMD EQU 40 ;play a note for a duration RESTCMD EQU 41 ;rest a channel for a duration FREQCMD EQU 42 ;change the pitch of a sound AMPCMD EQU 43 ;change the amplitude of a sound TIMBRECMD EQU 44 ;change the timbre of a sound GETAMPCMD EQU 45 ;get the amplitude of a sound VOLUMECMD EQU 46 ;set volume GETVOLUMECMD EQU 47 ;get volume WAVETABLECMD EQU 60 ;install a wave table as a voice SOUND_CMD EQU 80 ;install a sampled sound as a voice BUFFERCMD EQU 81 ;play a sampled sound RATECMD EQU 82 ;set the pitch of a sampled sound GETRATECMD EQU 85 ;get the pitch of a sampled sound ;CONST 1 de SNDNEWCHANNEL SQUAREWAVESYNTH EQU 1 WAVETABLESYNTH EQU 3 SAMPLEDSYNTH EQU 5 ;CONST 2 de SNDNEWCHANNEL INITCHANLEFT EQU 2 INITCHANRIGHT EQU 3 WAVEINITCHANNEL0 EQU 4 WAVEINITCHANNEL1 EQU 5 WAVEINITCHANNEL2 EQU 6 WAVEINITCHANNEL3 EQU 7 INITMONO EQU $80 INITSTEREO EQU $C0 INITMACE3 EQU $300 INITMACE6 EQU $400 INITNOINTERP EQU 4 INITNODROP EQU 8 ;structure SNDCHANNEL NEXTCHAN EQU 0;SndChannelPtr FIRSTMOD EQU 4 CALLBACK EQU 8;SndCallBackProcPtr USERINFO EQU 12 WAIT EQU 16 CMDINPROGRESS EQU 20;SndCommand FLAGS EQU 24 QLENGTH EQU 26 QHEAD EQU 28 QTAIL EQU 30 QUEUE EQU 32;SndCommand [128] ;structure INPARAMPTR _INREFNUM EQU 0; --> reference number of a sound input device _COUNTREC EQU 4; <--> number of bytes of recording _MILLISECONDS EQU 8; <--> number of milliseconds of recording _BUFFERLENGTH EQU 12; --> length of the buffer beginning at bufferPtr _BUFFERPTR EQU 16; --> pointer to a buffer for sampled-sound data _COMPLEXIONROUTINE EQU 20; --> pointer to a completion routine _INTERRUPTROUTINE EQU 24; --> pointer to an interrupt routine _USERLONG EQU 28; --> free for application's use _ERRORREC EQU 32; <-- word 1 during record, 0 if finished, < 0 if error VECT_TIMER_A EQU $134 VECT_IO7 EQU $13C MEMVALID EQU $420 RESVALID EQU $426 RESVECTOR EQU $42A PROC_TYPE EQU $59E _COOKIE EQU $5A0 ;Le cookie 'McSn' (sous n'importe quel version TOS) est une garantie, ;qu'on peut jouer des sons 12.5 KHz 8Bit Mono par les fonctions son ;XBIOS Falcon. ;Pour plus d'informations, il faut tester le cookie McSn: ; ; struct McSnCookie ; { ; short vers; Version en code BCD ; short size; Taille de la structure ; ; short play; Possibilits de lecture ; short record; Possibilits d'enregistrement ; short dsp; Y'a-t-il un DSP? ; short pint; Playing: Interrupt possible pour fin de Frame? ; short rint; Recording: Interrupt possible pour fin de Frame? ; ; long res1; rserv....... ; long res2; ; long res3; ; long res4; ; }; ; ;Valeurs pour play & record: ; #define ST 0 ; #define TT 1 ; #define FALCON 2 ; ;Valeurs pour play: ; ST -> 12.5 Khz, 8 Bit Mono! ; TT -> Frquences STE/TT, 8 Bit Stereo ; FALCON -> Frquences FALCON, 16 Bit Stereo ; ;Et pour record: ; ST -> Pas de possibilits d'enregistrement ; TT -> Pas de possibilits d'enregistrement ; FALCON -> Frquences FALCON, 16 Bit Stereo ; ;Voil quoi devraient resembler les tests pour play & record: ; if play >= FALCON then [Possibilits FALCON prsentes] ;Pour dsp, pint & rint: ; if pint!=0 then setinterrupt marche por la lecture. ;Sur tous le Macintosh avec MagiCMac: play = FALCON, ;sans regarder quelles possibilits sonores du Macintosh (mono/stereo ..), TIMER_OUTPUT:MACRO $\1,$\2,$\3,$\4 MOVE \1,-(SP);mode: B0:mono(0)/stro(1) B1:8 bits(0)/16 bits(1) ; B6:rptition non(0)/oui(1) MOVE \2,-(SP);frquence PEA \3;adresse chantillons MOVE.L \4,-(SP);longueur BSR TIMER_OUTPUT_ LEA 12(SP),SP ENDM DEBUT: MOVE.L 4(SP),A5;Dbut de la basepage MOVE.L $C(A5),D0 ADD.L $14(A5),D0 ADD.L $1C(A5),D0 ADD.L #256,D0 SETBLOCK D0,(A5) MOVE.L #"MgSn",D0 BSR GET_COOKIE BPL.S \1;dja install BSR INIT BMI.S \1;erreur KEEPPROC #0,#FIN-DEBUT+$200;programme rsidant \1:IFNE 0,DEBUG PRINTLINE DEBUG1 CONIN_WE ENDIF TERM RTS AFF_INFO: MOVEM.L D0-D2/A0-A2,-(SP) LINK A6,#-4 PRINTLINE MESS1 LEA -4(A6),A0 CLR.L (A0) MOVEQ #VERSION/256,D0 MOVEQ #2,D1 BSR CONV_DECI MOVE.B #".",-2(A6) PRINTLINE -4(A6) LEA -4(A6),A0 CLR.L (A0) MOVEQ #VERSION & 255,D0 MOVEQ #2,D1 BSR CONV_DECI_SIMPLE PRINTLINE -4(A6) PRINTLINE MESS2 TST D_MAC BNE \1;MagiCMac TST D_SDL BEQ \1 PRINTLINE MESS8 TST.L NFID_AUDIO BEQ \1;<> NATFEAT PRINTLINE MESS8B SUPEXEC SDL_VERSION MOVE D0,D2 LEA -4(A6),A0 CLR.L (A0) MOVEQ #0,D0 MOVE D2,D0 LSR #8,D0 MOVEQ #2,D1 BSR CONV_DECI MOVE.B #".",-2(A6) PRINTLINE -4(A6) LEA -4(A6),A0 CLR.L (A0) MOVEQ #0,D0 MOVE.B D2,D0 MOVEQ #2,D1 BSR CONV_DECI_SIMPLE PRINTLINE -4(A6) \1:UNLK A6 MOVEM.L (SP)+,D0-D2/A0-A2 RTS AFF_NUMVERSION: MOVEM.L D0-D1/A0,-(SP) SWAP D0 MOVE D0,D1 MOVE D1,D0 LSR #8,D0 AND #$F,D0 OR #$30,D0 CONOUT D0 CONOUT #"." MOVE D1,D0 LSR #4,D0 AND #$F,D0 OR #$30,D0 CONOUT D0 MOVEQ #$F,D0 AND D1,D0 OR #$30,D0 CONOUT D0 MOVEM.L (SP)+,D0-D1/A0 RTS AFF_NOM_LISTE:;index dans D0, chane dans A0 MOVEM.L D0-D1/A0-A1,-(SP) MOVE D0,D1 MOVE.L A0,A1 CONOUT #13 CONOUT #10 CONOUT #"<" OR #$30,D1 CONOUT D1 CONOUT #">" CONOUT #" " PRINTLINE (A1) CONOUT #" " MOVEM.L (SP)+,D0-D1/A0-A1 RTS CONV_CAR:;MAC => Atari MOVE.L A0,-(SP) LEA TAB_CAR_MAC,A0 \2:TST.B (A0)+ BEQ.S \1 CMP.B (A0)+,D0 BNE.S \2 MOVE.B -2(A0),D0 \1:MOVE.L (SP)+,A0 RTS CONV_CHAINE:;chane dans A0 MOVEM.L D0/D1/A0,-(SP) MOVE #255,D1 \1:MOVE.B (A0),D0 BSR CONV_CAR MOVE.B D0,(A0)+ DBEQ D1,\1 MOVEM.L (SP)+,D0/D1/A0 RTS INIT: MOVEM.L D0-D2/A0-A2/A5,-(SP) CLR D_MAC CLR D_TT CLR D_SDL MOVE.L #"_MCH",D0 BSR GET_COOKIE BMI.S \38 MOVE.L D0,A0 MOVE (A0),D0;donne cookie CMP #2,D0;TT SEQ.B D0 EXT.W D0 MOVE D0,D_TT \38:MOVE.L #"PSND",D0;carte son HADES BSR GET_COOKIE SPL.B D0 AND #1,D0;flag carte son HADES MOVE D0,INFOS_COOKIE+10;slot MOVE.L #"MgMc",D0 BSR GET_COOKIE BMI \39;<> MagiCMac ST.B D_MAC MOVE.L D0,A0 MOVE.L (A0),D0;donne cookie BEQ \1 MOVE.L D0,A2 MOVE.L $10(A2),MODEMAC MOVE.L $14(A2),MODEATARI MOVE.L $18(A2),GETBASEMODE MOVE.L $28(A2),CALLMACCONTEXT MOVE.L $2C(A2),ATARIZEROPAGE IFNE 0,DEBUG PRINTLINE DEBUG3 ENDIF LEA INFOS_SON_MAC,A0 MOVE.L #"snd ",D0 BSR GESTALT BEQ.S \5 PRINTLINE ERR2;pas de son MAC BRA \6 \5:IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) LINK A6,#-6 CLR -2(A6) LEA -6(A6),A0 MOVE.L INFOS_SON_MAC,D0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE -6(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF MOVE.L INFOS_SON_MAC,D0 BTST #gestaltStereoCapability,D0 BNE.S \28 PRINTLINE ERR8;pas de lecture stro BRA \6 \28:BTST #gestalt16BitSoundIO,D0 BNE.S \29 PRINTLINE ERR9;pas de sons 16 bits BRA \6 \29:IFNE 0,DEBUG PRINTLINE DEBUG4 ENDIF LEA CHANNEL,A0 MOVE #128,QTAIL(A0) PEA (A0) LEA (SP),A0 MOVE.L A0,SNDCHANNELPTR2 MOVE.L #INITSTEREO,INITSND LEA CALLBACK16,A0 MOVE.L A0,SNDCALLBACKPROCPTR LEA SNDNEWCHANNEL,A0 BSR CALLMACFUNCTION ADDQ #4,SP BEQ \4 PRINTLINE ERR1;canal ne peut pas etre ouvert \6:CONIN_WE CONOUT #13 CONOUT #10 CONOUT #10 BRA \1 \39:SUPEXEC TEST_SDL_ARANYM CLR D_OPEN_SDL \4:MOVE.L #"MgSn",D0 BSR INIT_COOKIE BPL.S \3 \1:MOVEQ #-1,D0;erreur BRA \2 \3:MOVE.L D0,A0 LEA INFOS_COOKIE,A5 MOVE.L A5,(A0) MOVE.L #"McSn",D0 BSR INIT_COOKIE BMI.S \9;erreur MOVE.L D0,A0 LEA STRUCT_MCSN,A1 MOVE.L A1,(A0) \9:IFNE 0,DEBUG PRINTLINE DEBUG5 ENDIF IFNE 0,GSXB MOVE.L #"GSXB",D0 BSR GET_COOKIE BPL.S \12 MOVE.L #"GSXB",D0 BSR INIT_COOKIE \12: ENDIF MOVEQ #6+32,D1;tendu, 16-bit DMA & 8-bit DMA MOVE.L #"_SND",D0 BSR GET_COOKIE BMI.S \34;pas trouv MOVE.L D0,A0 MOVEQ #9,D0 AND.L (A0),D0;conserve bit PSG & DSP OR.L D0,D1 BRA.S \35 \34:MOVE.L #"_SND",D0 BSR INIT_COOKIE BMI.S \11;erreur \10:MOVE.L D0,A0 ; Bit 0: PSG soundchip ; Bit 1: 8-bit DMA ; Bit 2: 16-bit DMA ; Bit 3: DSP ; Bit 4: Matrix ; Bit 5: tendu \35:MOVE.L D1,(A0) IFNE 0,DEBUG PRINTLINE DEBUG2 ENDIF \11:TST D_MAC BEQ \36;<> MagiCMac LEA DET_FIN_SON,A0 MOVE.L $34(A2),-4(A0);MACAPPSWITCH MOVE.L A0,$34(A2) LEA TAB_BUFFERS,A2 MOVE #NB_BUFFERS-1,D2 \7:LEA TAILLE_SOUND_HEADER(A2),A0 MOVE.L A0,(A2)+;buffer samplePtr MOVE.L #2,(A2)+;numChannels CLR.L (A2)+;frquence * 65536 CLR.L (A2)+;loopStart CLR.L (A2)+;loopEnd MOVE #$FF00,(A2)+;encode (extSH), baseFrequency MOVE.L #TAILLE_BUFFER/4,(A2)+;numFrames CLR.L (A2)+;AIFFSampleRate sur 80 bits CLR.L (A2)+ CLR (A2)+ CLR.L (A2)+;markerChunk CLR.L (A2)+;instrumentChunks CLR.L (A2)+;AESRecording MOVE #16,(A2)+;sampleSize CLR (A2)+;futurUse1 CLR.L (A2)+;futurUse2 CLR.L (A2)+;futurUse3 CLR.L (A2)+;futurUse4 ADD.L #TAILLE_BUFFER,A2 DBRA D2,\7 LEA TAILLE_SOUND_HEADER(A2),A0 MOVE.L A0,(A2)+;buffer samplePtr MOVE.L #2,(A2)+;numChannels CLR.L (A2)+;frquence * 65536 CLR.L (A2)+;loopStart CLR.L (A2)+;loopEnd MOVE #$FF00,(A2)+;encode (extSH), baseFrequency MOVE.L #TAILLE_BUFFER/4,(A2)+;numFrames CLR.L (A2)+;AIFFSampleRate sur 80 bits CLR.L (A2)+ CLR (A2)+ CLR.L (A2)+;markerChunk CLR.L (A2)+;instrumentChunks CLR.L (A2)+;AESRecording MOVE #16,(A2)+;sampleSize CLR (A2)+;futurUse1 CLR.L (A2)+;futurUse2 CLR.L (A2)+;futurUse3 CLR.L (A2)+;futurUse4 MOVE.L #(TAILLE_BUFFER/4)-1,D1;numFrames -1 \8:CLR.L (A2)+;init buffer arrt son SUBQ.L #1,D1 BPL.S \8 BSR RAZ_BUFFERS \36:BSR INIT_DET BSR AFF_INFO TST D_MAC BEQ \16;<> MagiCMac IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG50 MOVEM.L (SP)+,D0/A0 ENDIF PRINTLINE MESS3 LEA SNDSOUNDMANAGERVERSION,A0 BSR CALLMACFUNCTION BSR AFF_NUMVERSION CLR NB_INDEV MOVE.L INFOS_SON_MAC,D0 ; BTST #gestaltSoundIOMgrPresent,D0 BTST #gestaltHasSoundInputDevice,D0 BNE.S \26 PRINTLINE ERR7;no input device BRA \16 \26:BTST #gestaltStereoInput,D0 BNE.S \27 PRINTLINE ERR10;pas d'enregistrement stro BRA \16 \27:IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG126 MOVEM.L (SP)+,D0/A0 ENDIF PRINTLINE MESS4 LEA SPBVERSION,A0 BSR CALLMACFUNCTION BSR AFF_NUMVERSION PRINTLINE MESS5 MOVE #1,COUNT MOVEQ #MAX_TAB-1,D1 \13:IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG124 MOVEM.L (SP)+,D0/A0 ENDIF LEA SPBGETINDEXEDDEVICE,A0 BSR CALLMACFUNCTION BNE \14 LEA DEVICENAME,A1 MOVEQ #0,D0 MOVE.B (A1)+,D0;format pascal CLR.B (A1,D0);fin chane MOVE.L A1,A0 BSR CONV_CHAINE MOVE COUNT,D0 BSR AFF_NOM_LISTE INC COUNT DBRA D1,\13 \14:MOVE COUNT,D0 DEC D0 MOVE D0,NB_INDEV BEQ.S \17 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG125 MOVEM.L (SP)+,D0/A0 ENDIF LEA SPBOPENDEVICE,A0 BSR CALLMACFUNCTION BEQ \15 \18:CLR NB_INDEV \17:PRINTLINE ERR3;erreur ouverture BRA \16 \22:PRINTLINE ERR4;pas de source BRA.S \25 \23:PRINTLINE ERR5;pas de stro BRA.S \25 \24:PRINTLINE ERR6;pas de 16 bits \25:IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG127 MOVEM.L (SP)+,D0/A0 ENDIF LEA SPBCLOSEDEVICE,A0 BSR CALLMACFUNCTION BRA \18 \15:IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG120 PRINTLINE DEBUG160 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siDeviceName,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \18;erreur PRINTLINE MESS6 LEA INFODATA,A0 MOVEQ #0,D0 MOVE.B (A0)+,D0;format pascal CLR.B (A0,D0);fin chane BSR CONV_CHAINE PRINTLINE (A0) IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG150 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siInputSource,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \22;erreur MOVE INFODATA,D0 MOVE D0,INSOURCE MOVE D0,4(A5) IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG159 MOVEM.L (SP)+,D0/A0 ENDIF CLR NB_SOURCES LEA TAB_SOURCENAME,A2 CLR.B (A2);fin tableau MOVE.L #siInputSourceNames,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \30;erreur LEA INFODATA,A0 MOVE.L (A0),A0;Handle MOVE.L (A0),A1 MOVE (A1)+,D1 MOVE D1,NB_SOURCES MOVE D1,2(A5) DEC D1 BMI \30 PRINTLINE MESS7 MOVEQ #1,D3 CMP #MAX_TAB,D1 BCS.S \31 MOVEQ #MAX_TAB,D1 \31:MOVEQ #0,D2 MOVE.B (A1)+,D2;format pascal MOVE.L A2,A0 MOVE D2,D0 DEC D0 BMI.S \32 MOVE.L A2,A0 \33:MOVE.B (A1)+,(A2)+ DBRA D0,\33 CLR.B (A2)+ BSR CONV_CHAINE MOVE D3,D0 BSR AFF_NOM_LISTE CMP INSOURCE,D3 BNE.S \32 CONOUT #"<" CONOUT #"-" \32:INC D3 DBRA D1,\31 CLR.B (A2);fin tableau \30:IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG151 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siAsync,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \25;erreur TST INFODATA BEQ \25;<> asynchronous IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG152 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siNumberChannels,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \23;erreur CMP #2,INFODATA BCS \23 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG153 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siSampleSize,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \24;erreur CMP #16,INFODATA BCS \24 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG154 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siSampleRateAvailable,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \25 LEA INFODATA,A0 MOVE (A0)+,D0;count CMP #16,D0 BCS.S \19 MOVEQ #16,D0 \19:MOVE D0,NB_FREQ_REC BNE.S \20;liste frquences enregistrement supportes MOVEQ #2,D0;mini et maxi frquences enregistrement supports \20:MOVE.L (A0),A0;Handle MOVE.L (A0),A0 LEA TAB_FREQ_REC,A1 DEC D0 \21:MOVE.L (A0)+,(A1)+ DBRA D0,\21 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG121 PRINTLINE DEBUG152 MOVEM.L (SP)+,D0/A0 ENDIF MOVE #2,INFODATA;2 voies MOVE.L #siNumberChannels,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \25;erreur IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG153 MOVEM.L (SP)+,D0/A0 ENDIF MOVE #16,INFODATA;16 bits MOVE.L #siSampleSize,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \25;erreur IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG155 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #"NONE",INFODATA MOVE.L #siCompressionType,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \25;erreur IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG156 MOVEM.L (SP)+,D0/A0 ENDIF MOVE #1,INFODATA;chantillons signs MOVE.L #siTwosComplementOnOff,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \25;erreur IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG157 MOVEM.L (SP)+,D0/A0 ENDIF MOVE #7,INFODATA MOVE.L #siPlayThruOnOff,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \25;erreur SOUNDCMD #-1,#LTGAIN;init GAINS SOUNDCMD #-1,#RTGAIN \16:TST NB_INDEV BNE.S \37 CLR STRUCT_MCSN+6;record ST (impossible) \37:CONOUT #13 CONOUT #10 CONOUT #10 MOVEQ #0,D0 \2:MOVEM.L (SP)+,D0-D2/A0-A2/A5 RTS INIT_DET: MOVEM.L D0-D2/A0-A2,-(SP) CLR NB_INDEV CLR FLAG_ARRET MOVEQ #2,D0 MOVE D0,NB_VOIES MOVE D0,OCT_ECH;8 bits stro CLR PRESCALE CLR PRESCALE_STE CLR HORLOGE CLR HORLOGE2 CLR NB_TRACKS CLR NB_TRACKS_REC CLR TRACK CLR.L INTH_ADDR;routine appele en fin lecture buffer DMA CLR.L INTH_ADDR_REC;routine appele en fin enregistrement buffer DMA CLR CAUSE_INTER;setinterrupt CLR D_TIMER_A CLR D_IO7 CLR COUNT_TIMER_A CLR D_INIT_TIMER_A SETEXEC DET_BIOS,#45;TRAP #13 MOVE.L D0,DET_BIOS-4 SETEXEC DET_XBIOS,#46;TRAP #14 MOVE.L D0,DET_XBIOS-4 MOVEM.L (SP)+,D0-D2/A0-A2 RTS DC.L "XBRA" DC.L "MgSn" DC.L 0 CALLBACK16_SDL: MOVEM.L D0-A6,-(SP) MOVE D_INTEL_SDL,-(SP) TST D_OPEN_SDL BEQ \1 BTST #0,STATUS+1 BEQ.S \78;arrt lecture BSR SDL_AUDIOSTATUS CMP #SDL_AUDIO_PLAYING,D0 BEQ.S \71 \78:AND #$FFFC,STATUS;arrt lecture DMA BSR SDL_CLOSEAUDIO CLR D_OPEN_SDL BRA \1 \71:BTST #0,STATUS+1 BEQ \1;arrt lecture BSR SDL_LOCKAUDIO BSR SDL_GETAUDIOLEN MOVE.L D0,D3;taille buffer cible LEA TAB_BUFFERS,A2;cible dbut MOVE.L A2,A1;adresse chantillons cible ADD.L D3,A1;adresse de fin cible MOVE.L ADR,A0;adresse source MOVE.L ADR_FIN,A6;fin source => changement de buffer D2D MOVE.L FREQUENCE,D6;frquence source MOVE.L FREQ_LECT,D7;frquence cible CMP.L D6,D7 BEQ \8;frquences identiques => pas de rchantillonnage CMP #2,NB_VOIES BEQ \45;stro CMP #2,OCT_ECH BEQ \58;16 bits mono ;8 bits mono ADD TRACK,A0 MOVE NB_TRACKS,A5 CMP.L D6,D7 BCS \35;diminution de la longueur ;cas ou frquence cible > frquence source ; => augmentation de la longueur MOVEQ #0,D0 MOVE.L D6,D1;frquence source LSR.L #1,D1 ROXR.L #1,D0 MOVE.L D7,D2;rapport = frquence source * 2^31 / frquence cible JSR DIV64_32S ADD.L D0,D0;*2 => 2^31 sinon pb signe MOVEQ #0,D1 MOVE NB_TRACKS,D1;0-3 INC D1 JSR MUL32_32 MOVE.L D0,D1;pas MOVEQ #0,D2 MOVEQ #0,D3 \33:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 MOVE.B (A3)+,D6;chantillon 8 bits x(n) ASL #8,D6 MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \32 ADD A5,A3 MOVE.B (A3)+,D7;chantillon 8 bits mono x(n+1) ASL #8,D7 MULS D0,D7 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 ADD.L D7,D6 ADD.L D6,D6 SWAP D6 \32:CMP.L A6,A3 BCC.S \31;fin buffer \34:TST (SP) BPL.S \59 ROR #8,D6;format Intel \59:MOVE D6,(A2)+;lecture en 16 bits stro MOVE D6,(A2)+ MOVEQ #0,D0 ADD.L D1,D2;pas ADDX.L D0,D3 CMP.L A1,A2 BCS.S \33 BRA \6 \31:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 ADD TRACK,A0 MOVE.L ADR_FIN,A6 BRA.S \34 ;cas ou frquence cible < frquence source ; => diminution de la longueur \35:MOVEQ #0,D0 MOVE.L D6,D1;frquence source MOVE.L D7,D2 ASL.L #8,D2;rapport = frquence source * 2^31 / frquence cible * 2^8 JSR DIV64_32S MOVE.L D0,D1 ASL.L #8,D0 ROL.L #8,D1 AND.L #$FF,D1;poids fort JSR MUL64_TRACKS MOVE.L D0,A4;poids faible MOVEQ #0,D2 MOVEQ #0,D3 \37:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 MOVE.B (A3)+,D6;chantillon 8 bits mono x(n) ASL #8,D6 MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \38 ADD A5,A3 MOVE.B (A3)+,D7;chantillon 8 bits mono x(n+1) ASL #8,D7 MULS D0,D7 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 ADD.L D7,D6 ADD.L D6,D6 SWAP D6 \38:CMP.L A6,A3 BCC.S \39;fin buffer \36:TST (SP) BPL.S \60 ROR #8,D6;format Intel \60:MOVE D6,(A2)+;lecture en 16 bits stro MOVE D6,(A2)+ ADD.L A4,D2;pas ADDX.L D1,D3 CMP.L A1,A2 BCS.S \37 BRA \6 \39:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 ADD TRACK,A0 MOVE.L ADR_FIN,A6 BRA \36 ;pas de rchantillonnage \8:LSR.L #2,D3;/4 CMP #2,NB_VOIES BEQ \44;stro CMP #2,OCT_ECH BEQ \43;16 bits mono ADD TRACK,A0 MOVE NB_TRACKS,A5 TST (SP) BMI \61;format Intel BRA \40 \41:CMP.L A6,A0 BCC.S \42;fin de buffer MOVE.B (A0)+,D6 ADD A5,A0 ASL #8,D6 MOVE D6,(A2)+;lecture en 16 bits stro MOVE D6,(A2)+ \40:SUBQ.L #1,D3 BPL.S \41 BRA \6 \42:MOVE.L A0,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 ADD TRACK,A0 MOVE.L ADR_FIN,A6 BRA.S \41 \76:CMP.L A6,A0 BCC.S \77;fin de buffer MOVE.B (A0)+,D6 ADD A5,A0 ASL #8,D6 ROR #8,D6;format Intel MOVE D6,(A2)+;lecture en 16 bits stro MOVE D6,(A2)+ \61:SUBQ.L #1,D3 BPL.S \76 BRA \6 \77:MOVE.L A0,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 ADD TRACK,A0 MOVE.L ADR_FIN,A6 BRA.S \76 ;8 bits stro \45:CMP #4,OCT_ECH BEQ \17;16 bits stro MOVE TRACK,D1 ADD D1,A0 ADD D1,A0 MOVE NB_TRACKS,A5 ADD A5,A5 CMP.L D6,D7 BCS \46;diminution de la longueur ;cas ou frquence cible > frquence source ; => augmentation de la longueur MOVEQ #0,D0 MOVE.L D6,D1;frquence source LSR.L #1,D1 ROXR.L #1,D0 MOVE.L D7,D2;rapport = frquence source * 2^31 / frquence cible JSR DIV64_32S ADD.L D0,D0;*2 => 2^31 sinon pb signe MOVEQ #0,D1 MOVE NB_TRACKS,D1 INC D1 JSR MUL32_32 MOVE.L D0,D1 MOVEQ #0,D2 MOVEQ #0,D3 \49:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 MOVE.B (A3)+,D6;chantillon 8 bits voie gauche x(n) MOVE.B (A3)+,D4;chantillon 8 bits voie droite x(n) ASL #8,D6 ASL #8,D4 MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \50 ADD A5,A3 MOVE.B (A3)+,D7;chantillon 8 bits voie gauche x(n+1) MOVE.B (A3)+,D5;chantillon 8 bits voie droite x(n+1) ASL #8,D7 ASL #8,D5 MULS D0,D7 MULS D0,D5 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 MULS D0,D4 ADD.L D7,D6 ADD.L D5,D4 ADD.L D6,D6 ADD.L D4,D4 SWAP D6 SWAP D4 \50:CMP.L A6,A3 BCC.S \48;fin buffer \47:TST (SP) BPL.S \62 ROR #8,D6;format Intel ROR #8,D4 \62:MOVE D6,(A2)+;lecture en 16 bits stro MOVE D4,(A2)+ MOVEQ #0,D0 ADD.L D1,D2;pas ADDX.L D0,D3 CMP.L A1,A2 BCS.S \49 BRA \6 \48:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #1,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \47 ;cas ou frquence cible < frquence source ; => diminution de la longueur \46:MOVEQ #0,D0 MOVE.L D6,D1;frquence source MOVE.L D7,D2 ASL.L #8,D2;rapport = frquence source * 2^31 / frquence cible * 2^8 JSR DIV64_32S MOVE.L D0,D1 ASL.L #8,D0 ROL.L #8,D1 AND.L #$FF,D1;poids fort JSR MUL64_TRACKS MOVE.L D0,A4;poids faible MOVEQ #0,D2 MOVEQ #0,D3 \53:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 MOVE.B (A3)+,D6;chantillon 8 bits voie gauche x(n) MOVE.B (A3)+,D4;chantillon 8 bits voie droite x(n) ASL #8,D6 ASL #8,D4 MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \54 ADD A5,A3 MOVE.B (A3)+,D7;chantillon 8 bits voie gauche x(n+1) MOVE.B (A3)+,D5;chantillon 8 bits voie droite x(n+1) ASL #8,D7 ASL #8,D5 MULS D0,D7 MULS D0,D5 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 MULS D0,D4 ADD.L D7,D6 ADD.L D5,D4 ADD.L D6,D6 ADD.L D4,D4 SWAP D6 SWAP D4 \54:CMP.L A6,A3 BCC.S \52;fin buffer \51:TST (SP) BPL.S \63 ROR #8,D6;format Intel ROR #8,D4 \63:MOVE D6,(A2)+;lecture en 16 bits stro MOVE D4,(A2)+ ADD.L A4,D2;pas ADDX.L D1,D3 CMP.L A1,A2 BCS.S \53 BRA \6 \52:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #1,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA \51 ;pas de rchantillonnage \44:CMP #4,OCT_ECH BEQ \27;16 bits stro MOVE TRACK,D1 ADD D1,A0 ADD D1,A0 MOVE NB_TRACKS,A5 ADD A5,A5 TST (SP) BMI \64;format Intel BRA \56 \55:CMP.L A6,A0 BCC.S \57;fin de buffer MOVE.B (A0)+,D6 MOVE.B (A0)+,D4 ADD A5,A0 ASL #8,D6 ASL #8,D4 MOVE D6,(A2)+;lecture en 16 bits stro MOVE D4,(A2)+ \56:SUBQ.L #1,D3 BPL.S \55 BRA \6 \57:MOVE.L A0,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #1,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \55 \74:CMP.L A6,A0 BCC.S \75;fin de buffer MOVE.B (A0)+,D6 MOVE.B (A0)+,D4 ADD A5,A0 ASL #8,D6 ASL #8,D4 ROR #8,D6;format Intel ROR #8,D4 MOVE D6,(A2)+;lecture en 16 bits stro MOVE D4,(A2)+ \64:SUBQ.L #1,D3 BPL.S \74 BRA \6 \75:MOVE.L A0,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #1,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \74 ;16 bits mono \58:MOVE TRACK,D1 ADD D1,A0 ADD D1,A0 MOVE NB_TRACKS,A5 ADD A5,A5 CMP.L D6,D7 BCS \22;diminution de la longueur ;cas ou frquence cible > frquence source ; => augmentation de la longueur MOVEQ #0,D0 MOVE.L D6,D1;frquence source LSR.L #1,D1 ROXR.L #1,D0 MOVE.L D7,D2;rapport = frquence source * 2^31 / frquence cible JSR DIV64_32S ADD.L D0,D0;*2 => 2^31 sinon pb signe MOVEQ #0,D1 MOVE NB_TRACKS,D1 INC D1 JSR MUL32_32 MOVE.L D0,D1 MOVEQ #0,D2 MOVEQ #0,D3 \19:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 MOVE (A3)+,D6;chantillon 16 bits x(n) MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \20 ADD A5,A3 MOVE (A3)+,D7;chantillon 16 bits mono x(n+1) MULS D0,D7 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 ADD.L D7,D6 ADD.L D6,D6 SWAP D6 \20:CMP.L A6,A3 BCC.S \21;fin buffer \18:TST (SP) BPL.S \65 ROR #8,D6;format Intel \65:MOVE D6,(A2)+;lecture en 16 bits stro MOVE D6,(A2)+ MOVEQ #0,D0 ADD.L D1,D2;pas ADDX.L D0,D3 CMP.L A1,A2 BCS.S \19 BRA \6 \21:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #1,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \18 ;cas ou frquence cible < frquence source ; => diminution de la longueur \22:MOVEQ #0,D0 MOVE.L D6,D1;frquence source MOVE.L D7,D2 ASL.L #8,D2;rapport = frquence source * 2^31 / frquence cible * 2^8 JSR DIV64_32S MOVE.L D0,D1 ASL.L #8,D0 ROL.L #8,D1 AND.L #$FF,D1;poids fort JSR MUL64_TRACKS MOVE.L D0,A4;poids faible MOVEQ #0,D2 MOVEQ #0,D3 \23:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 MOVE (A3)+,D6;chantillon 16 bits mono x(n) MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \24 ADD A5,A3 MOVE (A3)+,D7;chantillon 16 bits mono x(n+1) MULS D0,D7 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 ADD.L D7,D6 ADD.L D6,D6 SWAP D6 \24:CMP.L A6,A3 BCC.S \25;fin buffer \26:TST (SP) BPL.S \66 ROR #8,D6;format Intel \66:MOVE D6,(A2)+;lecture en 16 bits streo MOVE D6,(A2)+ ADD.L A4,D2;pas ADDX.L D1,D3 CMP.L A1,A2 BCS.S \23 BRA \6 \25:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #1,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA \26 ;pas de rchantillonnage \43:MOVE TRACK,D1 ADD D1,A0 ADD D1,A0 MOVE NB_TRACKS,A5 ADD A5,A5 BRA.S \28 \29:CMP.L A6,A0 BCC.S \30;fin de buffer MOVE (A0)+,D6 ADD A5,A0 TST (SP) BPL.S \67 ROR #8,D6;format Intel \67:MOVE D6,(A2)+;lecture en 16 bits streo MOVE D6,(A2)+ \28:SUBQ.L #1,D3 BPL.S \29 BRA \6 \30:MOVE.L A0,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #1,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \29 ;16 bits stro \17:MOVE TRACK,D1 ASL #2,D1 ADD D1,A0 MOVE NB_TRACKS,D1 ASL #2,D1 MOVE D1,A5 CMP.L D6,D7 BCS \11;diminution de la longueur ;cas ou frquence cible > frquence source ; => augmentation de la longueur MOVEQ #0,D0 MOVE.L D6,D1;frquence source LSR.L #1,D1 ROXR.L #1,D0 MOVE.L D7,D2;rapport = frquence source * 2^31 / frquence cible JSR DIV64_32S ADD.L D0,D0;*2 => 2^31 sinon pb signe MOVEQ #0,D1 MOVE NB_TRACKS,D1 INC D1 JSR MUL32_32 MOVE.L D0,D1 MOVEQ #0,D2 MOVEQ #0,D3 \9:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 MOVE (A3)+,D6;chantillon 16 bits voie gauche x(n) MOVE (A3)+,D4;chantillon 16 bits voie droite x(n) MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \10 ADD A5,A3 MOVE (A3)+,D7;chantillon 16 bits voie gauche x(n+1) MOVE (A3)+,D5;chantillon 16 bits voie droite x(n+1) MULS D0,D7 MULS D0,D5 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 MULS D0,D4 ADD.L D7,D6 ADD.L D5,D4 ADD.L D6,D6 ADD.L D4,D4 SWAP D6 SWAP D4 \10:CMP.L A6,A3 BCC.S \12;fin buffer \16:TST (SP) BPL.S \68 ROR #8,D6;format Intel ROR #8,D4 \68:MOVE D6,(A2)+;lecture en 16 bits stro MOVE D4,(A2)+ MOVEQ #0,D0 ADD.L D1,D2;pas ADDX.L D0,D3 CMP.L A1,A2 BCS.S \9 BRA \6 \12:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #2,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \16 ;cas ou frquence cible < frquence source ; => diminution de la longueur \11:MOVEQ #0,D0 MOVE.L D6,D1;frquence source MOVE.L D7,D2 ASL.L #8,D2;rapport = frquence source * 2^31 / frquence cible * 2^8 JSR DIV64_32S MOVE.L D0,D1 ASL.L #8,D0 ROL.L #8,D1 AND.L #$FF,D1;poids fort JSR MUL64_TRACKS MOVE.L D0,A4;poids faible MOVEQ #0,D2 MOVEQ #0,D3 \13:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 MOVE (A3)+,D6;chantillon 16 bits voie gauche x(n) MOVE (A3)+,D4;chantillon 16 bits voie droite x(n) MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \14 ADD A5,A3 MOVE (A3)+,D7;chantillon 16 bits voie gauche x(n+1) MOVE (A3)+,D5;chantillon 16 bits voie droite x(n+1) MULS D0,D7 MULS D0,D5 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 MULS D0,D4 ADD.L D7,D6 ADD.L D5,D4 ADD.L D6,D6 ADD.L D4,D4 SWAP D6 SWAP D4 \14:CMP.L A6,A3 BCC.S \15;fin buffer \3:TST (SP) BPL.S \69 ROR #8,D6;format Intel ROR #8,D4 \69:MOVE D6,(A2)+;lecture en 16 bits stro MOVE D4,(A2)+ ADD.L A4,D2;pas ADDX.L D1,D3 CMP.L A1,A2 BCS.S \13 BRA \6 \15:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #2,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA \3 ;pas de rchantillonnage \27:MOVE TRACK,D1 ASL #2,D1 ADD D1,A0 MOVE NB_TRACKS,D1 ASL #2,D1 MOVE D1,A5 TST (SP) BMI.S \72;format Intel BRA.S \4 \2:CMP.L A6,A0 BCC.S \7;fin de buffer MOVE.L (A0)+,(A2)+;lecture en 16 bits str ADD A5,A0 \4:SUBQ.L #1,D3 BPL.S \2 BRA \6 \7:MOVE.L A0,ADR BTST #1,STATUS+1 BEQ.S \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #2,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \2 \70:CMP.L A6,A0 BCC.S \73;fin de buffer MOVEM (A0)+,D4/D6 ADD A5,A0 ROR #8,D4;format Intel ROR #8,D6 MOVE D4,(A2)+;lecture en 16 bits stro MOVE D6,(A2)+ \72:SUBQ.L #1,D3 BPL.S \70 BRA.S \6 \73:MOVE.L A0,ADR BTST #1,STATUS+1 BEQ.S \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #2,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \70 \5:AND #$FFFC,STATUS;arrt lecture DMA BSR SDL_UNLOCKAUDIO MOVEQ #0,D0 BSR ENDSOUND BSR SDL_CLOSEAUDIO CLR D_OPEN_SDL MOVE.L ADR_FIN,ADR ADDQ.L #1,COMPT_BLOC BRA.S \1 \6:MOVE.L A0,ADR ADDQ.L #1,COMPT_BLOC BSR SDL_UNLOCKAUDIO \1:ADDQ #2,SP MOVEM.L (SP)+,D0-A6 RTE CONV_ECH:;D0: source, D1: fin source, D2: index bloc cible MOVEM.L D1-D6/A0-A2,-(SP) MOVE.L D0,A1;source dbut MOVE.L D1,D4;fin source CMP #NB_BUFFERS,D2 BHI.S \5 SUB.L A1,D4;taille en octets BGT.S \6 \5:MOVEQ #0,D0;plus d'chantillons BRA \1 \6:MOVEQ #0,D0 MOVE D2,D0;index bloc cible MOVE.L #TAILLE_BUFFER+TAILLE_SOUND_HEADER,D1 BSR MUL32_32 MOVE.L D0,D6;offset bloc cible LEA TAB_BUFFERS,A2 MOVEQ #0,D5 MOVE OCT_ECH,D5 MOVE.L D4,D0 MOVE NB_TRACKS,D1 INC D1 MULU D5,D1 BSR DIV32_32 MOVE.L D0,D4;nbre chantillons CMP.L #TAILLE_BUFFER/4,D4 BLE.S \7 ;taille des chantillons suprieure la taille du bloc MOVE.L #TAILLE_BUFFER/4,D4 MOVE.L D4,D0 MOVE NB_TRACKS,D1 INC D1 MULU D5,D1 BSR MUL32_32;nbre d'octets max par buffer ADD.L A1,D0;+ dbut buffer DMA MOVE.L D0,ADR_SUITE BRA.S \8 \7:CLR.L ADR_SUITE \8:MOVE.L D4,D0;nbre d'chantillons 16 bits stro MOVE.L D0,22(A2,D6.L);numSamples MOVE.L (A2,D6.L),A0;cible MOVE OCT_ECH,D2 SUBQ #2,D2 BEQ.S \3;8 bits stro ou 16 bits mono SUBQ #2,D2 BEQ.S \4;16 bits stro ;8 bits mono BSR CONV_MONO_8 BRA.S \2 ;8 bits stro \3:CMP #1,NB_VOIES BEQ.S \9 BSR CONV_STEREO_8 BRA.S \2 ;16 bits mono \9:BSR CONV_MONO_16 BRA.S \2 ;16 bits stro \4:BSR CONV_STEREO_16 \2:SUB.L A1,D0;adresse fin - adresse dbut = offset DMA \1:MOVEM.L (SP)+,D1-D6/A0-A2 RTS CONV_MONO_8: MOVEM.L D1-D2/A0-A1,-(SP) ADD TRACK,A1 MOVE NB_TRACKS,D1 BRA.S \2 \1:MOVE.B (A1)+,D2 ASL #8,D2 MOVE D2,(A0)+ MOVE D2,(A0)+ ADD D1,A1 \2:SUBQ.L #1,D0 BPL.S \1 MOVE.L A1,D0 MOVEM.L (SP)+,D1-D2/A0-A1 RTS CONV_STEREO_8: MOVEM.L D1-D3/A0-A1,-(SP) MOVE TRACK,D1 ADD D1,D1 ADD D1,A1 MOVE NB_TRACKS,D1 ADD D1,D1 BRA.S \2 \1:MOVE.B (A1)+,D2 ASL #8,D2 MOVE.B (A1)+,D3 ASL #8,D3 MOVE D2,(A0)+ MOVE D3,(A0)+ ADD D1,A1 \2:SUBQ.L #1,D0 BPL.S \1 MOVE.L A1,D0 MOVEM.L (SP)+,D1-D3/A0-A1 RTS CONV_MONO_16: MOVEM.L D1-D2/A0-A1,-(SP) MOVE TRACK,D1 ADD D1,D1 ADD D1,A1 MOVE NB_TRACKS,D1 ADD D1,D1 BRA.S \2 \1:MOVE.B (A1)+,D2 MOVE D2,(A0)+ MOVE D2,(A0)+ ADD D1,A1 \2:SUBQ.L #1,D0 BPL.S \1 MOVE.L A1,D0 MOVEM.L (SP)+,D1-D2/A0-A1 RTS CONV_STEREO_16: MOVEM.L D1/A0-A1,-(SP) MOVE TRACK,D1 ASL #2,D1 ADD D1,A1 MOVE NB_TRACKS,D1 ASL #2,D1 BRA.S \2 \1:MOVE.L (A1)+,(A0)+ ADD D1,A1 \2:SUBQ.L #1,D0 BPL.S \1 MOVE.L A1,D0 MOVEM.L (SP)+,D1/A0-A1 RTS RECH_FREQ_REC:;frquence demande dans D0 ;au retour frquence approche dans D0 au format MAC (frequence * 65536) MOVEM.L D1-D3/A0-A1,-(SP) LEA TAB_FREQ_REC,A0 MOVE NB_FREQ_REC,D1 BNE.S \4;liste frquences enregistrement supportes ;mini et maxi frquences enregistrement supports CMP (A0),D0 BCC.S \2 MOVE.L (A0),D0;mini BRA.S \1 \2:CMP 4(A0),D0 BCS.S \3 MOVE.L 4(A0),D0;maxi BRA.S \1 \3:SWAP D0 CLR D0 BRA.S \1 \4:DEC D1 MOVEQ #-1,D3;mini MOVE.L A0,A1 \5:MOVEQ #0,D2 MOVE (A0),D2 SUB.L D0,D2;recherche frquence approche parmi ceux disponibles BPL.S \7 NEG.L D2 \7:CMP.L D3,D2 BCC.S \6 MOVE.L D2,D3 MOVE.L A0,A1 \6:ADDQ #4,A0 DBRA D1,\5 MOVE.L (A1),D0 \1:MOVEM.L (SP)+,D1-D3/A0-A1 RTS SWAP_ADR_REC: MOVE.L D0,-(SP) MOVEQ #0,D0 MOVE STATUS,D0 LSR #2,D0 BSR ENDSOUND_REC TST D_SETBUFF_REC BEQ.S \1;pas de nouvelle adresse => bouclage DMA MOVE.L NEW_ADR_DEBUT_REC,ADR_DEBUT_REC;prise en compte des nouvelles adresses DMA de SETBUFFER MOVE.L NEW_ADR_FIN_REC,ADR_FIN_REC CLR D_SETBUFF_REC MOVE.L #-1,COMPT_BLOC_REC;compteur buffer MAC \1:MOVE.L (SP)+,D0 RTS INTER_REC:;sous MACOS, A1: buffer, D1.L: taille buffer MOVEM.L D0-A6,-(SP) BTST #2,STATUS+1 BEQ \1;arrt enregistrement MOVE.L D1,D3;taille MOVE.L A1,A0;adresse chantillons source ADD.L D3,A1;adresse de fin source MOVE.L ADR_REC,A2;adresse cible MOVE TRACK,D0 ASL #2,D0 ADD D0,A2 MOVE NB_TRACKS_REC,D0 ASL #2,D0 MOVE D0,A5 MOVE.L ADR_FIN_REC,A6 MOVEQ #0,D6 MOVE FREQ_REC,D6;frquence source format MAC poids fort MOVE.L FREQUENCE,D7;frquence cible CMP.L D6,D7 BEQ \8;frquences identiques => pas de rchantillonnage BCS \11;diminution de la longueur ;cas ou frquence cible > frquence source ; => augmentation de la longueur MOVEQ #0,D0 MOVE.L D6,D1;frquence source LSR.L #1,D1 ROXR.L #1,D0 MOVE.L D7,D2;rapport = frquence source * 2^31 / frquence cible JSR DIV64_32S MOVE.L D0,D1 ADD.L D1,D1;*2 => 2^31 sinon pb signe MOVEQ #0,D2 MOVEQ #0,D3 \9:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 MOVE (A3)+,D6;chantillon 16 bits voie gauche x(n) MOVE (A3)+,D4;chantillon 16 bits voie droite x(n) CMP.L A1,A3 BCC \6 MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \10 MOVE (A3)+,D7;chantillon 16 bits voie gauche x(n+1) MOVE (A3)+,D5;chantillon 16 bits voie droite x(n+1) MULS D0,D7 MULS D0,D5 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 MULS D0,D4 ADD.L D7,D6 ADD.L D5,D4 ADD.L D6,D6 ADD.L D4,D4 SWAP D6 SWAP D4 \10:CMP.L A6,A2 BCC.S \12;fin buffer \16:MOVE D6,(A2)+;enregistrement en 16 bits stro MOVE D4,(A2)+ ADD A5,A2 MOVEQ #0,D0 ADD.L D1,D2;pas ADDX.L D0,D3 CMP.L A1,A3 BCS.S \9 BRA \6 \12:MOVE.L A2,ADR_REC BTST #3,STATUS+1 BEQ \5;enregistrement sans rptition BSR SWAP_ADR_REC MOVE.L ADR_DEBUT_REC,A2 MOVE TRACK,D0 ASL #2,D0 ADD D0,A2 MOVE.L ADR_FIN_REC,A6 BRA.S \16 ;cas ou frquence cible < frquence source ; => diminution de la longueur \11:MOVEQ #0,D0 MOVE.L D6,D1;frquence source MOVE.L D7,D2 ASL.L #8,D2;rapport = frquence source * 2^31 / frquence cible * 2^8 JSR DIV64_32S MOVE.L D0,D1 ASL.L #8,D0 MOVE.L D0,A4;poids faible ROL.L #8,D1 AND.L #$FF,D1;poids fort MOVEQ #0,D2 MOVEQ #0,D3 \13:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 MOVE (A3)+,D6;chantillon 16 bits voie gauche x(n) MOVE (A3)+,D4;chantillon 16 bits voie droite x(n) CMP.L A1,A3 BCC \6 MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \14 MOVE (A3)+,D7;chantillon 16 bits voie gauche x(n+1) MOVE (A3)+,D5;chantillon 16 bits voie droite x(n+1) MULS D0,D7 MULS D0,D5 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 MULS D0,D4 ADD.L D7,D6 ADD.L D5,D4 ADD.L D6,D6 ADD.L D4,D4 SWAP D6 SWAP D4 \14:CMP.L A6,A2 BCC.S \15;fin buffer \3:MOVE D6,(A2)+;enregistrement en 16 bits stro MOVE D4,(A2)+ ADD A5,A2 ADD.L A4,D2;pas ADDX.L D1,D3 CMP.L A1,A3 BCS.S \13 BRA \6 \15:MOVE.L A2,ADR_REC BTST #3,STATUS+1 BEQ \5;enregistrement sans rptition BSR SWAP_ADR_REC MOVE.L ADR_DEBUT_REC,A2 MOVE TRACK,D0 ASL #2,D0 ADD D0,A2 MOVE.L ADR_FIN_REC,A6 BRA \3 ;pas de rchantillonnage \8:LSR.L #2,D3;/4 BRA \4 \5:AND #$FFF3,STATUS;arrt enregistrement DMA MOVE.L RETOUR,-(SP) MOVEQ #0,D0 BSR ENDSOUND_REC BSR SPBSTOPRECORDING MOVE.L (SP)+,RETOUR MOVE.L ADR_FIN_REC,A2 BRA.S \6 \2:CMP.L A6,A2 BCC.S \7;fin de buffer MOVE.L (A0)+,(A2)+;enregistrement en 16 bits stro ADD A5,A2 \4:SUBQ.L #1,D3 BPL.S \2 BRA.S \6 \7:MOVE.L A2,ADR_REC BTST #3,STATUS+1 BEQ.S \5;enregistrement sans rptition BSR SWAP_ADR_REC MOVE.L ADR_DEBUT_REC,A2 MOVE TRACK,D0 ASL #2,D0 ADD D0,A2 MOVE.L ADR_FIN_REC,A6 BRA.S \2 \6:MOVE.L A2,ADR_REC ADDQ.L #1,COMPT_BLOC_REC \1:MOVEM.L (SP)+,D0-A6 RTS SWAP_ADR: MOVE.L D0,-(SP) MOVEQ #3,D0 AND STATUS,D0 BSR ENDSOUND TST D_SETBUFF BEQ.S \1;pas de nouvelle adresse => bouclage DMA MOVE.L NEW_ADR_DEBUT,ADR_DEBUT;prise en compte des nouvelles adresses DMA de SETBUFFER MOVE.L NEW_ADR_FIN,ADR_FIN CLR D_SETBUFF MOVE.L #-1,COMPT_BLOC;compteur buffer MAC/SDL \1:MOVE.L (SP)+,D0 RTS CALLBACK16:;sous MACOS MOVEM.L D3/A2-A4,-(SP) MOVE.L $18(SP),A4;structure channel MOVE.L $14(SP),A2 MOVE 2(A2),D0;index buffer BGE.S \2 AND #$FFFC,STATUS;arrt lecture DMA BRA \1 \2:BTST #0,STATUS+1 BEQ \6;arrt lecture BTST #1,STATUS+1 BEQ.S \4;lecture sans rptition ;rptition lecture DMA MOVE.L ADR_SUITE,D0 BNE.S \5;suite du buffer DMA BSR SWAP_ADR MOVE.L ADR_DEBUT,D0 MOVE.L D0,ADR_SUITE BRA.S \5 ;lecture DMA sans rptition \4:MOVE.L ADR_SUITE,D0 BEQ.S \6;plus d'autre chantillon => arrt lecture \5:TST.L D0 BMI \1;invalide MOVE.L ADR_FIN,D1 MOVE 2(A2),D2;index buffer BSR CONV_ECH BEQ.S \6;plus aucun chantillon => arrt lecture ADDQ.L #1,COMPT_BLOC;compteur buffer MAC MOVEQ #0,D0 MOVE 2(A2),D0;index buffer MOVE.L #TAILLE_BUFFER+TAILLE_SOUND_HEADER,D1 BSR MUL32_32 MOVE.L D0,D2 MOVE.L A4,A0;channel MOVEQ #BUFFERCMD,D0;joue le son MOVEQ #0,D1 ADD.L #TAB_BUFFERS,D2;buffer BSR MACSNDCMD MOVE.L A4,A0;channel MOVEQ #CALLBACKCMD,D0 MOVE 2(A2),D1;index MOVEQ #0,D2 BSR MACSNDCMD BRA.S \1 ;arrt lecture \6:TST.L COMPT_BLOC BPL.S \3 CLR.L COMPT_BLOC \3:CLR.L ADR_SUITE MOVE.L A4,A0;channel MOVEQ #BUFFERCMD,D0;joue le son MOVEQ #0,D1 MOVE.L #TAB_BUFFERS+((TAILLE_BUFFER+TAILLE_SOUND_HEADER)*NB_BUFFERS),D2;buffer vide arrt son BSR MACSNDCMD MOVE.L A4,A0;channel MOVEQ #CALLBACKCMD,D0 MOVEQ #-1,D1 MOVEQ #0,D2 BSR MACSNDCMD MOVEQ #0,D0 BSR ENDSOUND \1:MOVEM.L (SP)+,D3/A2-A4 DC.L $4E740008;RTD #8 CALCUL_FREQ: MOVEM.L D1/A0,-(SP) MOVEQ #0,D0 MOVE PRESCALE,D1 BEQ.S \2 CMP #11,D1 BHI.S \2 DEC D1;0-10 TST HORLOGE BEQ.S \3 ADDQ #3,D1 ADDQ #8,D1 TST HORLOGE2 BEQ.S \3 ADDQ #3,D1 ADDQ #8,D1 \3:ADD D1,D1 LEA TAB_NUM_FREQ_FALCON,A0 MOVE (A0,D1),D0 BRA.S \1 \2:MOVE PRESCALE_STE,D1 AND #3,D1 ADD D1,D1 LEA TAB_NUM_FREQ_STE,A0 MOVE (A0,D1),D0 \1:MOVEM.L (SP)+,D1/A0 RTS _SETEXEC: CMP #77,D0;timer A BNE.S \2 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG23 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L A0,VECT_TIMER_A MOVEQ #0,D0 BRA.S \1 \2:CMP #79,D0;IO7 BNE.S \3 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG23 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L A0,VECT_IO7 MOVEQ #0,D0 BRA.S \1 \3:MOVEQ #1,D0 \1:RTS _MFPINT: CMP #13,D0;timer A BNE.S \2 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG22 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L A0,VECT_TIMER_A MOVEQ #0,D0 BRA.S \1 \2:CMP #15,D0;IO7 BNE.S \3 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG22 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L A0,VECT_IO7 MOVEQ #0,D0 BRA.S \1 \3:MOVEQ #1,D0 \1:RTS _JDISINT: CMP #13,D0;timer A BNE.S \2 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG19 MOVEM.L (SP)+,D0/A0 ENDIF CLR D_TIMER_A MOVEQ #0,D0 BRA.S \1 \2:CMP #15,D0;IO7 BNE.S \3 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG19 MOVEM.L (SP)+,D0/A0 ENDIF CLR D_IO7 MOVEQ #0,D0 BRA.S \1 \3:MOVEQ #1,D0 \1:RTS _JENABINT: CMP #13,D0;timer A BNE.S \2 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG20 MOVEM.L (SP)+,D0/A0 ENDIF ST.B D_TIMER_A MOVEQ #0,D0 BRA.S \1 \2:CMP #15,D0;IO7 BNE.S \3 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG20 MOVEM.L (SP)+,D0/A0 ENDIF ST.B D_IO7 MOVEQ #0,D0 BRA.S \1 \3:MOVEQ #1,D0 \1:RTS _XBTIMER: TST D0 BNE.S \1;<> timer A IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG21 MOVEM.L (SP)+,D0/A0 ENDIF TST D1 BNE.S \2;<> arrt CLR COUNT_TIMER_A CLR D_INIT_TIMER_A CLR.L VECT_TIMER_A MOVEQ #0,D0 BRA.S \1 \2:CMP #8,D1 BNE.S \1;<> event count mode AND #$FF,D2 MOVE D2,COUNT_TIMER_A;data = nbre de rptitions MOVE D2,D_INIT_TIMER_A MOVE.L A0,VECT_TIMER_A MOVEQ #0,D0 \1:RTS _LOCKSND: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG6 MOVEM.L (SP)+,D0/A0 ENDIF TST D_SND_LOCK BEQ.S \1 MOVEQ #-$80,D0;erreur BRA.S \2 \1:MOVEQ #1,D0 MOVE D0,D_SND_LOCK \2:RTS _UNLOCKSND: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG7 MOVEM.L (SP)+,D0/A0 ENDIF TST D_SND_LOCK BNE.S \1 MOVE.L #$FFFFFF7F,D0 BRA.S \2 \1:MOVEQ #0,D0 MOVE D0,D_SND_LOCK \2:RTS _SOUNDCMD: IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) LINK A6,#-6 CLR -2(A6) LEA -6(A6),A0 MOVE D1,-(SP) AND.L #$FFFF,D0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE DEBUG8 PRINTLINE -6(A6) CONOUT #" " MOVEQ #0,D0 MOVE (SP)+,D0 LEA -6(A6),A0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE -6(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF MOVEM.L D3-D4,-(SP) CMP #LTATTEN,D0;mode BEQ.S \10 CMP #RTATTEN,D0 BEQ.S \7 CMP #LTGAIN,D0 BEQ \16 CMP #RTGAIN,D0 BEQ \17 CMP #ADDERIN,D0 BEQ \15 CMP #ADCINPUT,D0 BEQ \20 CMP #SETPRESCALE,D0 BEQ \4 CMP #SETSMPFREQ,D0 BEQ \11;SETSMPFREQ valid par bit 5 du cookie '_SND' CMP #8,D0 BEQ \13;SETFMT8BITS valid par bit 5 du cookie '_SND' CMP #9,D0 BEQ \14;SETFMT16BITS valid par bit 5 du cookie '_SND' ;10: SETFMT24BITS, 11: SETFMT32BITS 12-25: ATTCONTROLS ;valids par bit 5 du cookie '_SND' BRA \2;non reconnu ;ltatten \10:LEA VOLUMES,A0 TST D1;data voie gauche BPL.S \9 MOVE (A0),D0;valeur courante BRA \6 \9:MOVE #255,D4 SUB D1,D4;data voie gauche MOVE D4,(A0) BRA.S \8 ;rtatten \7:LEA VOLUMES,A0 TST D1;data voie droite BPL.S \5 MOVE 2(A0),D0;valeur courante BRA.S \6 \5:MOVE #255,D4 SUB D1,D4;data voie droite MOVE D4,2(A0) \8:TST D_MAC BNE.S \34;MagiCMac MOVE (A0)+,D2;voie gauche ADD (A0),D2;voie droite LSR #1,D2 TST D_SDL BNE.S \35 NEG D2 ADD #255,D2 LSR #6,D2;4 niveaux MOVE D2,VOLUME;3-2-1-0 MOVE D4,D0 BRA.S \6 \35:MOVE D2,D0 LSR #1,D0;0-127 BSR SDL_AUDIOVOLUME BRA.S \6 \34:MOVE 2(A0),D2;voie droite SWAP D2 MOVE (A0),D2;voie gauche IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG104 MOVEM.L (SP)+,D0/A0 ENDIF LEA CHANNEL,A0 MOVEQ #VOLUMECMD,D0 MOVEQ #0,D1 BSR ISNDCMD MOVE D4,D0 \6:NEG D0 ADD #255,D0 AND #$F0,D0 BRA \1 ;ltgain \16:LEA GAINS,A0 TST D1;data voie gauche BMI.S \18 MOVE D1,D4 MOVE D4,(A0);voie gauche BRA \21 ;rtgain \17:LEA GAINS,A0 TST D1;data voie droite BPL \19 \18:MOVE D0,-(SP);mode MOVEQ #0,D0 MOVEQ #0,D1 TST NB_INDEV BEQ.S \25 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG120 PRINTLINE DEBUG158 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siStereoInputGain,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION2 MOVEM.L INFODATA,D0-D1 MOVE #255,D3 MOVE.L #$10000,D4 SUB.L D4,D0 BPL.S \22 MOVEQ #0,D0 \22:LSR.L #7,D0;/128 CMP D3,D0 BCS.S \23 MOVE D3,D0 \23:SUB.L D4,D1 BPL.S \24 MOVEQ #0,D1 \24:LSR.L #7,D1;/128 CMP D3,D1 BCS.S \25 MOVE D3,D1 \25:LEA GAINS,A0 MOVEM D0-D1,(A0) CMP #LTGAIN,(SP)+ BEQ \1 EXG D0,D1 BRA \1 \19:MOVE D1,D4 MOVE D4,2(A0);voie droite \21:MOVE D0,-(SP);mode MOVEQ #0,D0 MOVEQ #0,D1 TST NB_INDEV BEQ.S \25 MOVEM (A0),D0-D1 ASL.L #7,D0;*128 ASL.L #7,D1 ADD.L #$10000,D0 ADD.L #$10000,D1 MOVEM.L D0-D1,INFODATA IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG121 PRINTLINE DEBUG158 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siStereoInputGain,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION2 ADDQ #2,SP MOVEQ #0,D0 MOVE D4,D0 BRA \1 ;adderin \15:TST NB_INDEV BEQ \30 TST D1;data BPL.S \31 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG120 PRINTLINE DEBUG157 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siPlayThruOnOff,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION2 BNE.S \30;erreur BRA.S \32 \31:MOVEQ #0,D0 BTST #0,D1;ADC sur DAC (B0) BEQ.S \33 MOVEQ #7,D0 \33:MOVE D0,INFODATA IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG121 PRINTLINE DEBUG157 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siPlayThruOnOff,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION2 BNE.S \30;erreur \32:MOVE INFODATA,D0 BNE.S \30 MOVEQ #2,D0;Matrice BRA \1 \30:MOVEQ #3,D0;ADC (B0) et Matrice (B1) BRA \1 ;adcinput \20:TST NB_INDEV BEQ \27 TST D1;data BPL.S \26 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG120 PRINTLINE DEBUG150 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siInputSource,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION2 BNE.S \27;erreur BRA.S \28 \26:MOVE INFOS_COOKIE+4,INSOURCE MOVEQ #1,D0 AND #3,D1;data BNE.S \29 MOVE INSOURCE,D0 \29:MOVE D0,INFODATA IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG121 PRINTLINE DEBUG150 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siInputSource,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION2 BNE.S \27;erreur \28:MOVE INFODATA,D0 CMP INSOURCE,D0 BEQ.S \27 MOVEQ #3,D0;ADC input sur PSG BRA.S \1 \27:MOVEQ #0,D0;ADC input sur microphone BRA.S \1 ;prescale \4:TST D1;data BMI.S \3 MOVE D1,PRESCALE_STE BSR CALCUL_FREQ MOVE.L D0,FREQUENCE \3:MOVEQ #0,D0 MOVE PRESCALE_STE,D0 BRA.S \1 ;setsmpfreq \11:CMP #-1,D1;data BEQ.S \12 MOVEQ #0,D0 MOVE D1,D0 MOVE.L D0,FREQUENCE \12:MOVE.L FREQUENCE,D0 BRA.S \1 ;setfmt8bits \13:MOVEQ #1,D0;signed BRA.S \1 ;setfmt16bits \14:MOVEQ #5,D0;signed motorola big endian BRA.S \1 \2:MOVEQ #0,D0 \1:MOVEM.L (SP)+,D3-D4 RTS _SETBUFFER: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG9 MOVEM.L (SP)+,D0/A0 ENDIF TST D0 BNE \8;enregistrement MOVEQ #1,D0 AND STATUS,D0 MOVE D0,D_SETBUFF BNE.S \5;DMA en activit CLR.L ADR_SUITE MOVE.L D1,ADR_DEBUT;dmarrage MOVE.L D1,ADR_FIN BRA.S \6 \5:MOVE.L D1,NEW_ADR_DEBUT;pour prise en compte au changement de buffer DMA MOVE.L D1,NEW_ADR_FIN \6:MOVE.L D2,D0 SUB.L D1,D0 TST.L D0 BGT.S \2 \3:MOVEQ #1,D0;erreur BRA \1 \2:IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) LINK A6,#-12 CLR -2(A6) LEA -12(A6),A0 MOVE.L D1,D0 MOVEQ #10,D1 BSR CONV_DECI PRINTLINE DEBUG112 PRINTLINE -12(A6) CLR -2(A6) LEA -12(A6),A0 MOVEQ #10,D1 MOVE.L D2,D0 BSR CONV_DECI PRINTLINE DEBUG113 PRINTLINE -12(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF MOVEQ #1,D0 AND STATUS,D0 BNE.S \4;lecture DMA en activit MOVE.L D2,ADR_FIN BRA \7 \4:MOVE.L D2,NEW_ADR_FIN BRA \7 \8:TST NB_INDEV BEQ \3;erreur CMP #1,D0;enregistrement BNE \3;erreur MOVEQ #4,D0 AND STATUS,D0 MOVE D0,D_SETBUFF_REC BNE.S \9;DMA en activit MOVE.L D1,ADR_DEBUT_REC;dmarrage MOVE.L D1,ADR_FIN_REC BRA.S \10 \9:MOVE.L D1,NEW_ADR_DEBUT_REC;pour prise en compte au changement de buffer DMA MOVE.L D1,NEW_ADR_FIN_REC \10:MOVE.L D2,D0 SUB.L D1,D0 TST.L D0 BLE \3;erreur IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) LINK A6,#-12 CLR -2(A6) LEA -12(A6),A0 MOVE.L D1,D0 MOVEQ #10,D1 BSR CONV_DECI PRINTLINE DEBUG112 PRINTLINE -12(A6) CLR -2(A6) LEA -12(A6),A0 MOVEQ #10,D1 MOVE.L D2,D0 BSR CONV_DECI PRINTLINE DEBUG113 PRINTLINE -12(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF MOVEQ #4,D0 AND STATUS,D0 BNE.S \12;enregistrement DMA en activit MOVE.L D2,ADR_FIN_REC BRA.S \7 \12:MOVE.L D2,NEW_ADR_FIN_REC \7:MOVEQ #0,D0;OK \1:RTS _SETMODE: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG11 MOVEM.L (SP)+,D0/A0 ENDIF TST D0 BEQ.S \6;8 bits stro CMP #1,D0 BEQ.S \5;16 bits stro CMP #2,D0 BEQ.S \4;8 bits mono CMP #3,D0 BEQ.S \3;16 bits mono, n'existe pas avec le XBIOS du FALCON MOVEQ #1,D0;erreur BRA.S \1 \6:MOVEQ #2,D0 MOVE D0,NB_VOIES MOVE D0,OCT_ECH;8 bits stro => 2 octets/chantillon BRA.S \2 \5:MOVE #2,NB_VOIES MOVE #4,OCT_ECH;16 bits stro => 4 octets/chantillons BRA.S \2 \4:MOVEQ #1,D0 MOVE D0,NB_VOIES MOVE D0,OCT_ECH;8 bits mono => 1 octet/chantillon BRA.S \2 \3:MOVE #1,NB_VOIES MOVE #2,OCT_ECH;16 bits mono => 2 octets/chantillon \2:MOVEQ #0,D0;OK \1:RTS _SETTRACKS: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG17 MOVEM.L (SP)+,D0/A0 ENDIF AND #3,D0 MOVE D0,NB_TRACKS AND #3,D1 MOVE D1,NB_TRACKS_REC MOVEQ #0,D0;OK RTS _SETMONTRACKS: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG17 MOVEM.L (SP)+,D0/A0 ENDIF AND #3,D0 MOVE D0,TRACK MOVEQ #0,D0;OK RTS _SETINTERRUPT: IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) LINK A6,#-6 CLR -2(A6) LEA -6(A6),A0 MOVE D1,-(SP) AND.L #$FFFF,D0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE DEBUG15 PRINTLINE -6(A6) CONOUT #" " MOVEQ #0,D0 MOVE (SP)+,D0 LEA -6(A6),A0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE -6(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF CMP #2,D0;src_inter valid par bit 5 du cookie '_SND' et le cookie 'GSXB' BNE.S \4 CLR CAUSE_INTER TST D1;cause BEQ.S \2;disable interrupt CMP #1,D1 BEQ.S \5;int_addr called on eof DAC interrupts CMP #2,D1 BEQ.S \7;int_addr called on eof ADC interrupts CMP #3,D1 BEQ.S \3;int_addr called on eof DAC/ADC interrupts \8:MOVEQ #1,D0;erreur BRA.S \1 \4:BHI.S \8;erreur CMP #3,D1 BHI.S \8;erreur MOVE D1,CAUSE_INTER TST D0;src_inter BEQ.S \6;timer A BSET #7,CAUSE_INTER;mfp BRA.S \6 \5:MOVE.L D2,INTH_ADDR BRA.S \6 \2:MOVEQ #0,D2 \3:MOVE.L D2,INTH_ADDR \7:MOVE.L D2,INTH_ADDR_REC \6:MOVEQ #0,D0;OK \1:RTS _BUFFOPER: MOVEM.L D3-D4/A3,-(SP) IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) LINK A6,#-6 CLR -2(A6) LEA -6(A6),A0 MOVE D1,-(SP) AND.L #$FFFF,D0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE DEBUG10 PRINTLINE -6(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF TST D0;mode BPL \6 IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) PRINTLINE DEBUG111 LINK A6,#-6 CLR -2(A6) LEA -6(A6),A0 MOVEQ #5,D1 MOVEQ #0,D0 MOVE STATUS,D0 BSR CONV_DECI PRINTLINE -6(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF MOVEQ #0,D0 MOVE STATUS,D0;tat BRA \1 \6:TST NB_INDEV BEQ \5;test lecture MOVE D0,-(SP) BTST #2,D0;enregistrement DMA BEQ \11 ;enregistrement DMA BTST #2,STATUS+1;enregistrement DMA BNE \10;DMA dja en marche CLR.L COMPT_BLOC_REC;compteur buffer MAC IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG121 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L FREQUENCE,D0 BSR RECH_FREQ_REC MOVE.L D0,FREQ_REC MOVE.L D0,INFODATA MOVE.L #siSampleRate,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION2 BNE \10;erreur IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG122 MOVEM.L (SP)+,D0/A0 ENDIF LEA INPARAMPTR,A1 MOVE.L ADR_DEBUT_REC,ADR_REC MOVE.L INREFNUM,_INREFNUM(A1) CLR.L _COUNTREC(A1) CLR.L _MILLISECONDS(A1) CLR.L _BUFFERLENGTH(A1) CLR.L _BUFFERPTR(A1) CLR.L _COMPLEXIONROUTINE(A1) LEA INTER_REC,A0 MOVE.L A0,_INTERRUPTROUTINE(A1) CLR.L _USERLONG(A1) LEA SPBRECORD,A0 BSR CALLMACFUNCTION2 BNE.S \10;erreur MOVEQ #$C,D0 AND (SP),D0 AND #$FFF3,STATUS OR D0,STATUS;enregistrement DMA BRA.S \10 \11:BTST #2,STATUS+1;enregistrement DMA BEQ.S \10;DMA dj l'arrt AND #$FFF3,STATUS;arrt enregistrement DMA CLR D_SETBUFF_REC BSR STOP_RECORD \10:MOVE (SP)+,D0 \5:BTST #0,D0;lecture DMA BEQ \3;demande DMA l'arrt ;lecture DMA BTST #0,STATUS+1 BNE \8;DMA dja en marche MOVEQ #3,D1 AND D0,D1 AND #$FFFC,STATUS OR D1,STATUS CLR.L COMPT_BLOC;compteur buffer MAC/SDL TST D_MAC BNE \12;MagiCMac TST D_SDL BEQ.S \19 TST D_OPEN_SDL BNE \3 CLR D_INTEL_SDL MOVE.L FREQUENCE,D0 MOVE #AUDIO_S16MSN,D1 MOVEQ #2,D2;stro MOVE #TAILLE_BUFFER_SDL/4,D3 LEA TAB_BUFFERS,A0 BSR SDL_OPENAUDIO BMI \3;erreur CMP #AUDIO_S16MSN,D0 BEQ.S \18 CMP #AUDIO_S16LSB,D0 BNE \3;erreur ST.B D_INTEL_SDL \18:ST.B D_OPEN_SDL BSR SDL_GETAUDIOFREQ MOVE.L D0,FREQ_LECT MOVE.L ADR_DEBUT,ADR SETEXEC CALLBACK16_SDL,#29;INT5 MOVE.L D0,CALLBACK16_SDL-4 MOVEQ #0,D0 BSR SDL_PAUSEAUDIO;lance la lecture BRA \2 \19:MOVEQ #0,D1 CMP #2,NB_VOIES BEQ.S \14;stro CMP #2,OCT_ECH BEQ.S \16;16 bits mono BRA.S \15;8 bits mono \14:BSET #0,D1;stro CMP #4,OCT_ECH BNE.S \15 \16:BSET #1,D1;16 bits \15:MOVE.L FREQUENCE,D2 BTST #1,D0;rptition BEQ.S \13 BSET #6,D1;rptition \13:MOVE.L ADR_DEBUT,A0 MOVE.L ADR_FIN,D0 SUB.L A0,D0 TIMER_OUTPUT D1,D2,(A0),D0 BRA \2 \12:MOVE.L #-1,ADR_SUITE;invalide BSR STOP_SOUND IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) PRINTLINE DEBUG112 LINK A6,#-12 CLR -2(A6) LEA -12(A6),A0 MOVEQ #10,D1 MOVE.L ADR_DEBUT,D0 BSR CONV_DECI PRINTLINE -12(A6) PRINTLINE DEBUG113 CLR -2(A6) LEA -12(A6),A0 MOVEQ #10,D1 MOVE.L ADR_FIN,D0 BSR CONV_DECI PRINTLINE -12(A6) PRINTLINE DEBUG114 CLR -2(A6) LEA -12(A6),A0 MOVEQ #10,D1 MOVE.L FREQUENCE,D0 BSR CONV_DECI PRINTLINE -12(A6) PRINTLINE DEBUG115 CLR -2(A6) LEA -6(A6),A0 MOVEQ #5,D1 MOVEQ #0,D0 MOVE OCT_ECH,D0 BSR CONV_DECI PRINTLINE -6(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF LEA TAB_BUFFERS,A3 MOVE.L ADR_DEBUT,D4 MOVEQ #0,D3;index bloc \4:CMP #1,D3 BCS.S \9;1er bloc vide MOVE.L D4,D0;offset bloc MOVE.L ADR_FIN,D1 MOVE D3,D2;index bloc cible BSR CONV_ECH BEQ \7;plus d'chantillons ADD.L D0,D4 \9:MOVE.L FREQUENCE,D1 SWAP D1 MOVE.L D1,8(A3);frquence * 65536 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG102 MOVEM.L (SP)+,D0/A0 ENDIF LEA CHANNEL,A0 MOVEQ #BUFFERCMD,D0;joue le son MOVEQ #0,D1 MOVE.L A3,D2;buffer BSR SNDCMD IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG103 MOVEM.L (SP)+,D0/A0 ENDIF LEA CHANNEL,A0 MOVEQ #CALLBACKCMD,D0 MOVE D3,D1;index bloc MOVEQ #0,D2 BSR SNDCMD ADD.L #TAILLE_BUFFER+TAILLE_SOUND_HEADER,A3 INC D3 CMP #NB_BUFFERS,D3 BCS \4 MOVE.L FREQUENCE,D1 SWAP D1 MOVE.L D1,8(A3);frquence * 65536 buffer vide arrt son BRA.S \2 \7:TST D3 BNE.S \2 AND #$FFFC,STATUS;arrt lecture DMA si plus d'chantillons au 1er bloc BRA.S \2 ;DMA l'arrt \3:AND #$FFFC,STATUS;arrt lecture DMA TST D_MAC BEQ.S \17;<> MagiCMac BTST #1,D0 BNE.S \2;DMA en rptition \17:CLR D_SETBUFF BSR STOP_SOUND \2:IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG110 MOVEM.L (SP)+,D0/A0 ENDIF \8:MOVEQ #0,D0;OK \1:MOVEM.L (SP)+,D3-D4/A3 RTS _GPIO: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG16 MOVEM.L (SP)+,D0/A0 ENDIF CMP #1,D0;mode: lecture BNE.S \2 MOVEQ #1,D0 AND.B HORLOGE2,D0;GPIO0=0 44.1KHz BSET #1,D0;GPIO1=1 Quartz BRA.S \1 \2:CMP #2,D0;mode: criture BNE.S \1 BTST #0,D1;data B0: 0: horloge 22.5792 Mhz pour 44.1KHz, 1: horloge 24,576 MHz pour 48KHZ SNE.B HORLOGE2 \1:MOVEQ #0,D0;OK RTS _DEVCONNECT: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG12 MOVEM.L (SP)+,D0/A0 ENDIF TST D0 BEQ.S \4;source = restitution DMA TST NB_INDEV BEQ.S \3;erreur CMP #3,D0 BEQ.S \4;source = ADC CMP #2,D2;srcclk BCS.S \3;horloge 25.175 Mhz (0) ou horloge externe (1) MOVE D2,HORLOGE MOVE 4(SP),PRESCALE BSR CALCUL_FREQ MOVE.L D0,FREQUENCE BRA.S \3 \4:CMP #2,D2;srcclk BCS.S \2;horloge 25.175 Mhz (0) ou horloge externe (1) ;horloge 32 MHz \3:MOVEQ #1,D0;erreur BRA.S \1 \2:MOVE D2,HORLOGE MOVE 4(SP),PRESCALE BSR CALCUL_FREQ MOVE.L D0,FREQUENCE IFNE 0,DEBUG MOVEM.L D1/A0,-(SP) LINK A6,#-6 CLR -2(A6) LEA -6(A6),A0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE -6(A6) UNLK A6 MOVEM.L (SP)+,D1/A0 ENDIF MOVEQ #0,D0;OK \1:RTS _SNDSTATUS: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG13 MOVEM.L (SP)+,D0/A0 ENDIF TST D0 BEQ \1;status CMP #1,D0 BEQ.S \2;reset CMP #2,D0 BEQ \3;resolutions valid par bit 5 du cookie '_SND' CMP #3,D0 BEQ \6;MasterMix ;4: record sources, 5: duplex CMP #8,D0 BEQ \4;format8bits valid par bit 5 du cookie '_SND' CMP #9,D0 BEQ \5;format16bits valid par bit 5 du cookie '_SND' ;10: format24bits, 11: format32bits MOVEQ #0,D0 BRA \1 ;reset \2:BTST #2,STATUS+1;enregistrement DMA BEQ.S \7 BSR STOP_RECORD \7:CLR STATUS CLR D_SETBUFF CLR D_SETBUFF_REC BSR STOP_SOUND MOVEQ #LTATTEN,D0;mode MOVEQ #0,D1;data BSR _SOUNDCMD MOVEQ #RTATTEN,D0;mode MOVEQ #0,D1;data BSR _SOUNDCMD MOVEQ #LTGAIN,D0;mode MOVEQ #0,D1;data BSR _SOUNDCMD MOVEQ #RTGAIN,D0;mode MOVEQ #0,D1;data BSR _SOUNDCMD MOVEQ #ADDERIN,D0;mode MOVEQ #1,D1;data BSR _SOUNDCMD MOVEQ #ADCINPUT,D0;mode MOVEQ #0,D1;data BSR _SOUNDCMD CLR.L ADR_SUITE CLR.L ADR_FIN CLR.L ADR_DEBUT CLR.L NEW_ADR_DEBUT CLR.L NEW_ADR_FIN CLR.L ADR_FIN_REC CLR.L ADR_DEBUT_REC CLR.L NEW_ADR_DEBUT_REC CLR.L NEW_ADR_FIN_REC CLR PRESCALE CLR PRESCALE_STE CLR HORLOGE CLR HORLOGE2 CLR NB_TRACKS CLR NB_TRACKS_REC CLR TRACK CLR.L COMPT_BLOC;compteur buffer MAC MOVEQ #2,D0 MOVE D0,NB_VOIES MOVE D0,OCT_ECH;8 bits stro CLR.L INTH_ADDR;routine appele en fin lecture buffer DMA CLR.L INTH_ADDR_REC;routine appele en fin enregistrement buffer DMA CLR CAUSE_INTER;setinterrupt MOVEQ #0,D0 BRA.S \1 ;resolutions \3:MOVEQ #3,D0;8 & 16 bits BRA.S \1 ;MasterMix \6:MOVEQ #3,D0;DAC & ADC BRA.S \1 ;format8bits \4:MOVEQ #1,D0;signed BRA.S \1 ;format16bits \5:MOVEQ #5,D0;signed motorola big endian \1:RTS _BUFFPTR: MOVE.L D3,-(SP) IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG14 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L D0,A0 BTST #0,STATUS+1 BEQ \2;lecture DMA l'arrt TST D_MAC BNE.S \11;MagiCMac MOVE.L #TAILLE_BUFFER_SDL/4,D3 TST D_SDL BNE.S \12 MOVE.L ADRESSE,D1;adresse courante DMA (interruption timer A) BRA \4 \11:MOVE.L #TAILLE_BUFFER/4,D3 \12:MOVE.L D3,D1 MOVE.L COMPT_BLOC,D0;compteur buffer MAC/SDL SUBQ.L #1,D0 BPL.S \5 MOVEQ #0,D0 \5:MOVE.L D0,D2 BSR MUL32_32;offset buffer XBIOS en chantillons MOVE NB_TRACKS,D1 INC D1 MULU OCT_ECH,D1 BSR MUL32_32;nbre d'octets lecture DMA XBIOS MOVE.L D0,D1 ADD.L ADR_DEBUT,D1;+ adresse DMA dbut => adresse courante DMA BTST #1,STATUS+1 BEQ.S \4;pas de rptition MOVE.L ADR_FIN,D0 CMP.L D0,D1 BLE.S \4 SUB.L ADR_DEBUT,D1;dpassement + taille bloc SUBQ.L #1,D3 AND.L D3,D2;masque ASL.L #2,D2;COMPT_BLOC * 4 SUB.L D2,D1;vite de retourner la valeur prcdente en cas de bouclage DMA sur un petit buffer BPL.S \6 ADD.L D2,D1 \6:SUB.L ADR_DEBUT,D0;taille du bloc DMA EXG.L D0,D1 MOVEQ #0,D2;dpassement/taille bloc DMA <=> ADR_FIN - ADR_DEBUT DC.L $4C410402;DIVU.L D1,D2:D0;reste dans D2 MOVE.L D2,D1 ADD.L ADR_DEBUT,D1;adresse courante DMA \4:ADDQ.L #4,D1;pour GEMJing CMP.L ADR_FIN,D1 BLE.S \3 MOVE.L ADR_FIN,D1 BRA.S \1 \3:CMP.L ADR_DEBUT,D1 BGE.S \1 \2:MOVE.L ADR_DEBUT,D1 \1:MOVE.L D1,(A0)+;pointeur lecture TST NB_INDEV BEQ.S \8;pas d'enregistrement BTST #2,STATUS+1 BEQ.S \8;enregistrement DMA l'arrt MOVE.L ADR_REC,D1 BTST #3,STATUS+1 BEQ.S \10;pas de rptition MOVE.L COMPT_BLOC_REC,D2;compteur buffer MAC AND.L #(TAILLE_BUFFER/4)-1,D2 ASL.L #2,D2;COMPT_BLOC * 4 SUB.L D2,D1;vite de retourner la valeur prcdente en cas de bouclage DMA sur un petit buffer BPL.S \10 ADD.L D2,D1 \10:ADDQ.L #4,D1 CMP.L ADR_FIN_REC,D1 BLE.S \9 MOVE.L ADR_FIN_REC,D1 BRA.S \7 \9:CMP.L ADR_DEBUT_REC,D1 BGE.S \7 \8:MOVE.L ADR_DEBUT_REC,D1 \7:MOVE.L D1,(A0);pointeur enregistrement IFNE 0,DEBUG LINK A6,#-10 MOVEM.L D1/A0,-(SP) CLR -2(A6) MOVE.L -4(A0),D0 SUB.L ADR_DEBUT,D0 LEA -10(A6),A0 MOVEQ #9,D1 BSR CONV_DECI PRINTLINE DEBUG117 PRINTLINE -10(A6) MOVE.L ADR_FIN,D0 SUB.L ADR_DEBUT,D0 LEA -10(A6),A0 MOVEQ #9,D1 BSR CONV_DECI PRINTLINE -10(A6) MOVE.L COMPT_BLOC,D0 LEA -6(A6),A0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE -6(A6) MOVEM.L (SP),D1/A0 MOVE.L D1,D0 SUB.L ADR_DEBUT_REC,D0 LEA -10(A6),A0 MOVEQ #9,D1 BSR CONV_DECI PRINTLINE -10(A6) MOVE.L ADR_FIN_REC,D0 SUB.L ADR_DEBUT_REC,D0 LEA -10(A6),A0 MOVEQ #9,D1 BSR CONV_DECI PRINTLINE -10(A6) MOVE.L COMPT_BLOC_REC,D0 LEA -6(A6),A0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE -6(A6) LEA -6(A6),A0 MOVEQ #5,D1 MOVEQ #0,D0 MOVE STATUS,D0 BSR CONV_DECI PRINTLINE DEBUG116 PRINTLINE -6(A6) MOVEM.L (SP)+,D1/A0 UNLK A6 ENDIF MOVE.L (SP)+,D3 MOVEQ #0,D0;OK RTS DC.L "XBRA" DC.L "MgSn" DC.L 0 DET_BIOS: MOVE.L USP,A0 BTST #5,(SP);appel en superviseur BEQ.S \2 LEA 6(SP),A0 TST PROC_TYPE BEQ.S \2 TST (A0)+;mot supplmentaire sur la pile si > 68000 \2:MOVE (A0)+,D0;fonction CMP #5,D0;setexec BNE.S \1 MOVE (A0)+,D0;num MOVE.L (A0),A0;vector BSR _SETEXEC BNE.S \1 TST D_MAC BEQ.S \1 RTE \1:MOVE.L DET_BIOS-4,-(SP) RTS DC.L "XBRA" DC.L "MgSn" DC.L 0 DET_XBIOS: MOVE.L USP,A0 BTST #5,(SP);appel en superviseur BEQ.S \14 LEA 6(SP),A0 TST PROC_TYPE BEQ.S \14 TST (A0)+;mot supplmentaire sur la pile si > 68000 \14:MOVE (A0)+,D0;fonction CMP #$D,D0;MFPINT BNE.S \22 MOVE (A0)+,D0;num MOVE.L (A0),A0;vector BSR _MFPINT BNE \13 BRA.S \23 \22:CMP #$1A,D0;JDISINT BNE.S \19 MOVE (A0),D0;num BSR _JDISINT BNE \13 BRA.S \23 \19:CMP #$1B,D0;JENABINT BNE.S \20 MOVE (A0),D0;num BSR _JENABINT BNE \13 BRA.S \23 \20:CMP #$1F,D0;XBTIMER BNE.S \21 MOVEM (A0),D0-D2;timer, control, data MOVE.L 6(A0),A0;vector BSR _XBTIMER BNE \13 \23:TST D_MAC BNE \1;MagiCMac TST D_TT BNE \13;routine d'origine bra \1 TST D_SND_LOCK BNE \1 BRA \13 \21:CMP #$80,D0;LOCKSND BCS \13 CMP #$8D,D0;BUFFPTR BHI \13 MOVE D0,D1 SUB #$80,D1 ADD D1,D1 MOVE \3(PC,D1),D1 JMP \3(PC,D1) \3:DC.W \4-\3;$80 LOCKSND DC.W \5-\3;$81 UNLOCKSND DC.W \6-\3;$82 SOUNDCMD DC.W \7-\3;$83 SETBUFFER DC.W \8-\3;$84 SETMODE DC.W \17-\3;$85 SETTRACKS DC.W \18-\3;$86 SETMONTRACKS DC.W \15-\3;$87 SETINTERRUPT DC.W \9-\3;$88 BUFFOPER DC.W \2-\3;$89 /DSPTRISTATE DC.W \16-\3;$8A GPIO DC.W \10-\3;$8B DEVCONNECT DC.W \11-\3;$8C SNDSTATUS DC.W \12-\3;$8D BUFFPTR \4:BSR _LOCKSND BRA \1 \5:BSR _UNLOCKSND BRA.S \1 \6:MOVEM (A0),D0-D1;mode, data BSR _SOUNDCMD BRA.S \1 \7:MOVE (A0)+,D0;reg MOVEM.L (A0),D1-D2;begaddr, endaddr BSR _SETBUFFER BRA.S \1 \8:MOVE (A0),D0;mode BSR _SETMODE BRA.S \1 \17:MOVEM (A0),D0-D1;playtracks, rectracks BSR _SETTRACKS BRA.S \1 \18:MOVE (A0),D0;track BSR _SETMONTRACKS BRA.S \1 \15:MOVE (A0)+,D0;src_inter MOVE (A0)+,D1;cause MOVE.L (A0)+,D2;int_adr BSR _SETINTERRUPT BRA.S \1 \9:MOVE (A0),D0;mode BSR _BUFFOPER BRA.S \1 \16:MOVEM (A0),D0-D1;mode, data BSR _GPIO BRA.S \1 \10:SUBQ #4,SP MOVE (A0)+,D0;src MOVE (A0)+,D1;dest MOVE (A0)+,D2;srcclk MOVE (A0)+,2(SP);prescale MOVE (A0),(SP);protocol MOVE (SP),-(SP) MOVE 4(SP),-(SP) BSR _DEVCONNECT ADDQ #8,SP BRA.S \1 \11:MOVE (A0),D0;reset BSR _SNDSTATUS BRA.S \1 \12:MOVE.L (A0),D0 BSR _BUFFPTR BRA.S \1 \2:MOVEQ #0,D0 \1:RTE \13:MOVE.L DET_XBIOS-4,-(SP) RTS RAZ_BUFFERS: MOVEM.L D0-D1/A0,-(SP) LEA TAB_BUFFERS,A0 MOVEQ #NB_BUFFERS-1,D1 \1:LEA TAILLE_SOUND_HEADER(A0),A0 MOVE.L #(TAILLE_BUFFER/4)-1,D0 \2:CLR.L (A0)+ DBRA D0,\2 DBRA D1,\1 MOVEM.L (SP)+,D0-D1/A0 RTS STOP_SOUND: TST D_MAC BNE.S \2;MagiCMac TST D_SDL BNE.S \1 BSR FIN_IRQ_PSG BRA.S \1 \2:IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG100 MOVEM.L (SP)+,D0/A0 ENDIF LEA CHANNEL,A0 MOVEQ #FLUSHCMD,D0;nettoyage canal MOVEQ #0,D1 MOVEQ #0,D2 BSR ISNDCMD IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG101 MOVEM.L (SP)+,D0/A0 ENDIF LEA CHANNEL,A0 MOVEQ #QUIETCMD,D0;arrt son MOVEQ #0,D1 MOVEQ #0,D2 BSR ISNDCMD BSR RAZ_BUFFERS \1:RTS STOP_RECORD: TST NB_INDEV BEQ.S \1 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG123 MOVEM.L (SP)+,D0/A0 ENDIF LEA SPBSTOPRECORDING,A0 BSR CALLMACFUNCTION2 \1:RTS DC.L "XBRA" DC.L "MgSn" DC.L 0 DET_FIN_SON: CMP #2,D0 BNE.S \1 MOVEM.L D0-D7/A0-A6,-(SP) LEA CHANNEL,A0 MOVE.L A0,SNDCHANNELPTR LEA SNDDISPOSECHANNEL,A0 BSR CALLMACFUNCTION2 MOVEM.L (SP)+,D0-D7/A0-A6 \2:TST.L DET_FIN_SON-4 BEQ.S \1 MOVE.L DET_FIN_SON-4,-(SP) \1:RTS INIT_COOKIE:;nom dans D0.L ;retourne le pointeur sur donne cookie dans D0 ou < 0 si erreur MOVEM.L D1-A1/A6,-(SP) MOVE.L D0,D7 BSR GET_COOKIE BPL \1;existe dja SUB.L A6,A6 SUPER 1 TST.L D0 BMI.S \8;mode superviseur SUPER 0 MOVE.L D0,A6;sauve SSP \8:MOVE.L _COOKIE,D0 BEQ \2;le Cookie Jar n'existe pas TOS < 1.6 MOVE.L D0,A0 MOVEQ #1,D0;compteur nombre de cookies \3:TST.L (A0) BEQ.S \4;dernier cookie ADDQ #8,A0 INC D0 BRA.S \3 \4:CMP.L 4(A0),D0 BCC.S \5;plus de place CLR.L 8(A0);id dernier cookie MOVE.L 4(A0),12(A0);dplace data dernier cookie (nombre max de cookie) MOVE.L D7,(A0)+;installe nouveau cookie MOVE.L A0,D7 CLR.L (A0);contenu initialis 0 BRA \9 \5:MOVE.L 4(A0),D1;taille BEQ \10;erreur MOVE.L D1,D2 ASL.L #4,D2;double la taille (en octets) MOVE.L D2,D0 BSR MALLOC_D0 BMI \10;erreur MOVE.L _COOKIE,A0 MOVE.L D0,A1 MOVE.L D1,D2 ADD.L D1,D1 SUBQ.L #2,D2;recopie BMI.S \7 \6:MOVE.L (A0)+,(A1)+;id MOVE.L (A0)+,(A1)+;contenu SUBQ.L #1,D2 BPL.S \6 BRA.S \7 \2:MOVEQ #64,D0 BSR MALLOC_D0;rserve la place pour 8 cookie si le Cookie Jar n'existe pas BMI.S \10;erreur MOVE.L D0,_COOKIE LEA DET_RESET,A0 MOVE.L RESVECTOR,-4(A0) MOVE.L RESVALID,SAUVE_RESVALID MOVE.L A0,RESVECTOR;dtourne reset pour raz vecteur Cookie Jar MOVE.L #$31415926,RESVALID MOVE.L D0,A1 MOVEQ #8,D1 \7:MOVE.L D7,(A1)+;installe nouveau cookie MOVE.L A1,D7 CLR.L (A1)+;contenu initialis 0 CLR.L (A1)+;id dernier cookie MOVE.L D1,(A1);taille BRA.S \9 \10:MOVEQ #-1,D7;erreur \9:MOVE.L A6,D0 BEQ.S \11 SUPER (A6) \11:MOVE.L D7,D0 \1:MOVEM.L (SP)+,D1-A1/A6 RTS GET_COOKIE:;nom dans D0.L, au retour si < 0 pas de cookie ;retourne le pointeur sur donne cookie dans D0 MOVEM.L D1-A1/A6,-(SP) MOVE.L D0,D6 SUB.L A6,A6 SUPER 1 TST.L D0 BMI.S \5;mode superviseur SUPER 0 MOVE.L D0,A6;sauve SSP \5:MOVEQ #0,D7 MOVE.L _COOKIE,D0 BEQ.S \1 MOVE.L D0,A0 \2:TST.L (A0) BEQ.S \1 CMP.L (A0),D6 BNE.S \3 MOVE.L A0,D7 ADDQ #4,D7 BRA.S \1 \3:ADDQ #8,A0 BRA.S \2 \1:MOVE.L A6,D0 BEQ.S \4 SUPER (A6) \4:MOVEQ #-1,D6 MOVE.L D7,D0 BEQ.S \6 MOVEQ #0,D6 \6:TST D6 MOVEM.L (SP)+,D1-A1/A6 RTS DC.L "XBRA" DC.L "MgSn" DC.L 0;adresse de retour DET_RESET: CLR.L _COOKIE;vecteur Cookie Jar MOVE.L SAUVE_RESVALID,RESVALID MOVE.L DET_RESET-4,RESVECTOR JMP (A6) MALLOC_D0: MOVE.L A0,-(SP) MOVE.L D0,-(SP) MALLOC #-1 MOVE.L (SP)+,A0 CMP.L D0,A0 BCS.S \1 \3:MOVEQ #-39,D0 BRA.S \2 \1:MALLOC A0 TST.L D0 BLE.S \3 \2:MOVE.L (SP)+,A0 TST.L D0 RTS CONV_DECI:;A0:pointeur cible chane ASCII, D0:valeur sur 32 bits, D1:nombre de chiffres BSR CONV_DECI_SIMPLE DEC D1 BEQ.S \1 SWAP D0 TST D0 BNE.S \3;dpassement MOVEQ #0,D0 \2:CMP.B #"0",(A0,D0) BNE.S \1 MOVE.B #" ",(A0,D0);enlve les zros inutiles INC D0 CMP D1,D0 BNE.S \2 BRA.S \1 \3:MOVE.B #"?",(A0,D1) DBRA D1,\3 \1:RTS CONV_DECI_SIMPLE:;A0:pointeur cible chane ASCII, D0:valeur sur 32 bits, D1:nombre de chiffres MOVE D1,-(SP) DEC D1 MOVE.L D0,-(SP) \1:MOVEQ #0,D0 MOVE (SP),D0 DIVU #10,D0;poids fort /10 MOVE D0,(SP);rsultat poids fort MOVE 2(SP),D0 DIVU #10,D0;((reste * 65536) + poids faible)/10 MOVE D0,2(SP);rsultat poids faible SWAP D0 OR #$30,D0 MOVE.B D0,(A0,D1) DBRA D1,\1 ADDQ.L #4,SP MOVE (SP)+,D1 RTS CALLMACFUNCTION: MOVEM.L A0/A2/A6,-(SP) MOVE.L A0,A2;fonction SUPER 0;superviseur MOVE.L D0,A6;sauve SSP MOVE.L A2,A0 BSR CALLMACFUNCTION2 SUPER (A6);utilisateur MOVEM.L (SP)+,A0/A2/A6 MOVE.L RETOUR,D0 RTS CALLMACFUNCTION2: MOVEM.L D1-A6,-(SP) MOVE.L A0,A2 MOVE.L MODEMAC,A0 JSR (A0) MOVE.L A2,-(SP) MOVE.L CALLMACCONTEXT,A0 JSR (A0) ADDQ #4,SP MOVE.L MODEATARI,A0 JSR (A0) MOVEM.L (SP)+,D1-A6 MOVE.L RETOUR,D0 RTS GESTALT: MOVEM.L D0-A6,-(SP) MOVE.L D0,D4;selector MOVE.L A0,A2;response SUPER 0 MOVE.L D0,D3 MOVE.L MODEMAC,A0 JSR (A0) MOVE.L A2,A0 MOVE.L D4,D0 MOVE.L A0,A1 DC.W $A1AD;Gestalt MOVE.L A0,(A1) MOVE D0,D4 MOVE.L MODEATARI,A0 JSR (A0) MOVE.L D3,A0 SUPER (A0) MOVE D4,D0 MOVEM.L (SP)+,D0-A6 RTS ENDSOUND: MOVEM.L D0-A6,-(SP) TST CAUSE_INTER BEQ \2 BMI.S \3;mfp BTST #0,CAUSE_INTER+1 BEQ \1;<> lecture TST D_TIMER_A BEQ \1 DEC COUNT_TIMER_A BGT \1 MOVE D_INIT_TIMER_A,COUNT_TIMER_A TST D_MAC BEQ.S \7 MOVE.L MODEATARI,A0 JSR (A0);passe en mode ATARI \7:MOVE.L VECT_TIMER_A,D0 BEQ.S \4 MOVE.L D0,A0 BRA.S \5 \3:BTST #0,CAUSE_INTER+1 BEQ.S \1;<> lecture TST D_IO7 BEQ.S \1 TST D_MAC BEQ.S \8 MOVE.L MODEATARI,A0 JSR (A0);passe en mode ATARI \8:MOVE.L VECT_IO7,D0 BEQ.S \4 MOVE.L D0,A0 \5:TST PROC_TYPE BEQ.S \6 CLR -(SP);format si > 68000 \6:PEA \4(PC);adresse de retour MOVE SR,-(SP) JMP (A0) \2:TST.L INTH_ADDR BLE.S \1 TST D_MAC BEQ.S \9 MOVE D0,-(SP);status MOVE.L MODEATARI,A0 JSR (A0);passe en mode ATARI MOVEQ #0,D0 MOVE (SP)+,D0;status \9:MOVE.L INTH_ADDR,A0 JSR (A0) \4:TST D_MAC BEQ.S \1 MOVE.L MODEMAC,A0 JSR (A0);repasse en mode MAC \1:MOVEM.L (SP)+,D0-A6 RTS ENDSOUND_REC: MOVEM.L D0-A6,-(SP) TST CAUSE_INTER BEQ.S \2 BMI.S \3;mfp BTST #1,CAUSE_INTER+1 BEQ \1;<> enregistrement TST D_TIMER_A BEQ \1 DEC COUNT_TIMER_A BGT \1 MOVE D_INIT_TIMER_A,COUNT_TIMER_A MOVE.L MODEATARI,A0 JSR (A0);passe en mode ATARI MOVE.L VECT_TIMER_A,D0 BEQ.S \4 MOVE.L D0,A0 BRA.S \5 \3:BTST #1,CAUSE_INTER+1 BEQ.S \1;<> enregistrement TST D_IO7 BEQ.S \1 MOVE.L MODEATARI,A0 JSR (A0);passe en mode ATARI MOVE.L VECT_IO7,D0 BEQ.S \4 MOVE.L D0,A0 \5:TST PROC_TYPE BEQ.S \6 CLR -(SP);format si > 68000 \6:PEA \4(PC);adresse de retour MOVE SR,-(SP) JMP (A0) \2:TST.L INTH_ADDR_REC BLE.S \1 MOVE D0,-(SP);status MOVE.L MODEATARI,A0 JSR (A0);passe en mode ATARI MOVE.L INTH_ADDR_REC,A0 MOVEQ #0,D0 MOVE (SP)+,D0;status BSET #7,D0;enregistrement JSR (A0) \4:MOVE.L MODEMAC,A0 JSR (A0);repasse en mode MAC \1:MOVEM.L (SP)+,D0-A6 RTS ISNDCMD: MOVE.L D2,-(SP);param2 MOVE D1,-(SP);param1 MOVE D0,-(SP);cmd MOVE.L A0,SNDCHANNELPTR LEA (SP),A0 MOVE.L A0,SNDCOMMAND LEA SNDDOIMMEDIATE,A0 BSR CALLMACFUNCTION2 ADDQ #8,SP RTS SNDCMD: MOVE.L D2,-(SP);param2 MOVE D1,-(SP);param1 MOVE D0,-(SP);cmd MOVE.L A0,SNDCHANNELPTR LEA (SP),A0 MOVE.L A0,SNDCOMMAND LEA SNDDOCOMMAND,A0 BSR CALLMACFUNCTION2 ADDQ #8,SP RTS MACSNDCMD: MOVE.L D2,-(SP);param2 MOVE D1,-(SP);param1 MOVE D0,-(SP);cmd MOVE.L A0,SNDCHANNELPTR MOVE.L SP,SNDCOMMAND BSR SNDDOCOMMAND MOVE.L RETOUR,D0 BEQ.S \1 AND #$FFFC,STATUS;arrt lecture DMA \1:ADDQ #8,SP RTS SPBVERSION: MOVEM.L D0-A6,-(SP) CLR.L -(SP) MOVE.L #$00000014,D0 DC.W $A800;SPBVersion MOVE.L (SP)+,RETOUR;NumVersion MOVEM.L (SP)+,D0-A6 RTS SPBGETINDEXEDDEVICE: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE COUNT,-(SP) PEA DEVICENAME PEA DEVICEICONHANDLE MOVE.L #$05140014,D0 DC.W $A800;SPBGetIndexedDevice MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SPBOPENDEVICE: MOVEM.L D0-A6,-(SP) CLR -(SP) PEA NUL;deviceName: defaut MOVE #1,-(SP);siWritePermission PEA INREFNUM MOVE.L #$05180014,D0 DC.W $A800 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SPBCLOSEDEVICE: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L INREFNUM,-(SP) MOVE.L #$021C0014,D0 DC.W $A800 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SPBRECORD: MOVEM.L D0-A6,-(SP) CLR -(SP) PEA INPARAMPTR MOVE #-1,-(SP);asynchFlag: asynchronous MOVE.L #$03200014,D0 DC.W $A800 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SPBSTOPRECORDING: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L INREFNUM,-(SP) MOVE.L #$02300014,D0 DC.W $A800 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SPBGETDEVICEINFO: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L INREFNUM,-(SP) MOVE.L INFOTYPE,-(SP) PEA INFODATA MOVE.L #$06380014,D0 DC.W $A800 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SPBSETDEVICEINFO: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L INREFNUM,-(SP) MOVE.L INFOTYPE,-(SP) PEA INFODATA MOVE.L #$063C0014,D0 DC.W $A800 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SNDSOUNDMANAGERVERSION: MOVEM.L D0-A6,-(SP) CLR.L -(SP) MOVE.L #$000C0008,D0;SndSoundManagerVersion DC.W $A800 MOVE.L (SP)+,RETOUR;NumVersion MOVEM.L (SP)+,D0-A6 RTS SNDDISPOSECHANNEL: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L SNDCHANNELPTR,-(SP) MOVE.B #1,-(SP);quietNow DC.W $A801 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SNDDOCOMMAND: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L SNDCHANNELPTR,-(SP) MOVE.L SNDCOMMAND,-(SP) MOVE #1,-(SP);noWait DC.W $A803 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SNDDOIMMEDIATE: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L SNDCHANNELPTR,-(SP) MOVE.L SNDCOMMAND,-(SP) DC.W $A804 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SNDNEWCHANNEL: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L SNDCHANNELPTR2,-(SP) MOVE #SAMPLEDSYNTH,-(SP);synth MOVE.L INITSND,-(SP);init MOVE.L SNDCALLBACKPROCPTR,-(SP);userRoutine DC.W $A807 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS DIV32_32:;divise D0 par D1 => D0 en 32 bits DC.L $4C410000;DIVU.L D1,D0;sans reste RTS MUL32_32:;multiplie D0 par D1 => D0 en 32 bits DC.L $4C010000;MULU.L D1,D0 RTS MUL32_64:;multiplie D0 par D1 en 32 bits ; => rsultat en 64 bits: poids faible dans D0, poids fort dans D1 MOVE.L D2,-(SP) DC.L $4C010402;MULU.L D1,D2:D0 MOVE.L D2,D1;poids fort MOVE.L (SP)+,D2 RTS DIV64_32S:;divise D1-D0 en 64 bits (poids fort dans D1) par D2 en 32 bits signs ; => rsultat dans D0 en 32 bits, reste dans D1 en 32 bits DC.L $4C420C01;DIVS.L D2,D1:D0 RTS MUL64_TRACKS: MOVE D2,-(SP) MOVE NB_TRACKS,D2 BRA.S \1 \2:ADD.L D0,D0 ADDX.L D1,D1 \1:DBRA D2,\2 MOVE (SP)+,D2 RTS TEST_SDL_ARANYM: MOVEQ #0,D0 MOVE SR,-(SP) OR #$700,SR LEA \1(PC),A0 MOVE.L 16,A1;instruction illegale MOVE.L A0,16 MOVE.L SP,A2 CLR.L NFID_AUDIO PEA NFNAME_AUDIO CLR.L -(SP) DC.W $7300;NATFEAT_ID MOVE.L D0,NFID_AUDIO BNE.S \2 CLR.L -(SP) DC.W $712C \2:MOVEQ #-1,D0 \1:MOVE.L A1,16 MOVE.L A2,SP MOVE (SP)+,SR MOVE D0,D_SDL RTS SDL_VERSION: MOVEM.L D1-A6,-(SP) MOVE.L NFID_AUDIO,D0 BEQ.S \1 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL ADDQ #8,SP \1:MOVEM.L (SP)+,D1-A6 RTS SDL_OPENAUDIO: MOVEM.L D2-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 PEA (A0);buffer AND.L #$FFFF,D3 MOVE.L D3,-(SP);nb samples AND.L #$FFFF,D2 MOVE.L D2,-(SP);channels AND.L #$FFFF,D1 MOVE.L D1,-(SP);format MOVE.L D0,-(SP);frequency MOVEQ #OpenAudio,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL LEA 28(SP),SP BRA.S \1 \2:PEA (A0);buffer MOVE D3,-(SP);nb samples MOVE D2,-(SP);channels MOVE D1,-(SP);format MOVE.L D0,-(SP);frequency MOVE.L #OpenAudio,-(SP) DC.W $712C LEA 14(SP),SP \1:MOVEM.L (SP)+,D2-A6 TST.L D0 RTS SDL_CLOSEAUDIO: MOVEM.L D0-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 MOVEQ #CloseAudio,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL ADDQ #8,SP BRA.S \1 \2:MOVE.L #CloseAudio,-(SP) DC.W $712C \1:MOVEM.L (SP)+,D0-A6 RTS SDL_PAUSEAUDIO: MOVEM.L D1-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 EXT.L D0 MOVE.L D0,-(SP);pause_on MOVEQ #PauseAudio,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL LEA 12(SP),SP BRA.S \1 \2:MOVE D0,-(SP);pause_on MOVE.L #PauseAudio,-(SP) DC.W $712C ADDQ #2,SP \1:MOVEM.L (SP)+,D1-A6 RTS SDL_AUDIOSTATUS: MOVEM.L D1-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 MOVEQ #AudioStatus,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL ADDQ #8,SP BRA.S \1 \2:MOVE.L #AudioStatus,-(SP) DC.W $712C \1:MOVEM.L (SP)+,D1-A6 RTS SDL_AUDIOVOLUME: MOVEM.L D1-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 EXT.L D0 MOVE.L D0,-(SP);volume MOVEQ #AudioVolume,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL LEA 12(SP),SP BRA.S \1 \2:MOVE D0,-(SP);volume MOVE.L #AudioVolume,-(SP) DC.W $712C ADDQ #2,SP \1:MOVEM.L (SP)+,D1-A6 RTS SDL_LOCKAUDIO: MOVEM.L D0-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 MOVEQ #LockAudio,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL ADDQ #8,SP BRA.S \1 \2:MOVE.L #LockAudio,-(SP) DC.W $712C \1:MOVEM.L (SP)+,D0-A6 RTS SDL_UNLOCKAUDIO: MOVEM.L D0-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 MOVEQ #UnlockAudio,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL ADDQ #8,SP BRA.S \1 \2:MOVE.L #UnlockAudio,-(SP) DC.W $712C \1:MOVEM.L (SP)+,D0-A6 RTS SDL_GETAUDIOFREQ: MOVEM.L D1-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 MOVEQ #GetAudioFreq,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL ADDQ #8,SP BRA.S \1 \2:MOVE.L #GetAudioFreq,-(SP) DC.W $712C;fonctions audio Aranym \1:MOVEM.L (SP)+,D1-A6 RTS SDL_GETAUDIOLEN: MOVEM.L D1-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 MOVEQ #GetAudioLen,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL ADDQ #8,SP BRA.S \1 \2:MOVE.L #GetAudioLen,-(SP) DC.W $712C \1:MOVEM.L (SP)+,D1-A6 RTS TIMER_OUTPUT_: MOVEM.L D0-A6,-(SP) MOVE.L #"hade",D0 BSR GET_COOKIE SPL.B D7 EXT.W D7 SWAP D7;flag HADES MOVE INFOS_COOKIE+10,D0;slot SNE.B D7 EXT.W D7;MV16/PSOUND SUB.L A6,A6 SUPER 1 TST.L D0 BMI.S \4;superviseur SUPER 0 MOVE.L D0,A6;sauve SSP \4:LEA COMPTEUR_PSG,A0 MOVE.L 64(SP),D0 MOVE.L D0,(A0)+;compteur initialis longueur MOVE.L 68(SP),(A0);adresse chantillons CLR FLAG_ARRET MOVE SR,-(SP) OR #$700,SR;interdit IRQ BSR ARRET_PSG MOVE 76(SP),D0;mode: B0:mono(0)/stro(1) ; B1:8 bits(0)/16 bits(1) B6:rptition non(0)/oui(1) BTST #6,D0;rptition BEQ.S \2 AND #3,D0 BSET #2,D0 \2:LEA TAB_PSG2,A0 TST D7 BMI.S \3;carte son HADES LEA TAB_PSG,A0 \3:ASL #2,D0 MOVE.L (A0,D0),A0 LEA SAUVE_IRQ_TIMER_A,A1 LEA $134,A2;vecteur MFP TST D_TT BEQ.S \7 LEA $174,A2;vecteur MFP TT \7:MOVE.L (A2),(A1);sauve vecteur MOVE.L A0,(A2);nouveau vecteur LEA $FFFA0000,A0;port cartouche => MV16 TST.L D7 BPL.S \5;<> HADES LEA ROPOCOP_HADES,A0 MOVE INFOS_COOKIE+10,D0;slot AND #3,D0 ASL #2,D0;*4 MOVE.L (A0,D0),A0 \5:MOVE.L A0,ADR_CARTOUCHE MOVE 74(SP),D0;no frquence LEA $FFFFFA01,A0;MFP TST D_TT BEQ.S \6 LEA $FFFFFA81,A0;MFP TT \6:MOVE.L A0,ADR_MFP BSR INIT_TIMER_A BCLR #3,$16(A0);VR automatic end of interrupt BSET #5,6(A0);IERA BSET #5,$12(A0);IMRA autorisation IRQ timer A BCLR #5,$E(A0);ISRA pas d'IRQ en service MOVE (SP)+,SR MOVE.L A6,D0 BEQ.S \1 SUPER (A6) \1:MOVEM.L (SP)+,D0-A6 RTS INIT_TIMER_A:;D0: no freq 0-7 ou freq si >7 MOVEM.L D0-D2/A0-A2,-(SP) MOVE D0,-(SP) MOVE.L ADR_MFP,A0;MFP 68901 BCLR #5,$12(A0);IMRA masque timer A BCLR #5,6(A0);IERA inhibe timer A BCLR #5,$A(A0);IPRA pas pending BCLR #5,$E(A0);ISRA pas d'IRQ en service CLR.B $18(A0);TACR stoppe timer A MOVE (SP)+,D0 MOVE.L #614400,D2;2.4576 MHz /4 DIVU D0,D2;/frquence BVS.S \2 MOVE.L D2,D1 CLR D1 SWAP D1 ADD.L D1,D1;reste *2 DIVU D0,D1 ADD D1,D2 CMP #255,D2 BCS.S \1 \2:MOVEQ #-1,D2 \1:MOVE.B D2,$1E(A0);TADR valeur initiale timer A MOVE.B #1,$18(A0);TACR prdiv /4 ;temps en uS = (TADR*4)/2.4576 MOVEM.L (SP)+,D0-D2/A0-A2 RTS ARRET_PSG: MOVEM.L D0-D1/A0,-(SP) LEA $FFFF8800,A0;circuit sonore PSG YAMAHA MOVEQ #0,D0 MOVEQ #5,D1 \1:MOVEP D0,0(A0);priode canaux 1 3 ADD #$100,D0 DBRA D1,\1 MOVE #$7FF,D0 MOVEP D0,0(A0);arrt canaux & port B en sortie MOVEM.L (SP)+,D0-D1/A0 RTS FIN_IRQ_PSG: TST FLAG_ARRET BMI.S \1 MOVEM.L D0/A0/A1,-(SP) MOVE SR,-(SP) OR #$700,SR;interdit IRQ MOVE.L ADR_MFP,A0;MFP 68901 BSET #3,$16(A0);VR software end of interrupt BCLR #5,$12(A0);IMRA masque timer A BCLR #5,6(A0);IERA inhibe timer A BCLR #5,$A(A0);IPRA pas pending BCLR #5,$E(A0);ISRA pas d'IRQ en service CLR.B $18(A0);TACR stoppe timer A MOVE.L SAUVE_IRQ_TIMER_A,A0 LEA $134,A1;vecteur MFP TST D_TT BEQ.S \3 LEA $174,A1;vecteur MFP TT \3:MOVE.L A0,(A1) BSR ARRET_PSG MOVE #-1,FLAG_ARRET;arrt ou fin BTST #0,STATUS+1;lecture DMA BEQ.S \2;arrt dja demand AND #$FFFC,STATUS;arrt lecture DMA MOVEQ #0,D0 BSR ENDSOUND \2:MOVE (SP)+,SR MOVEM.L (SP)+,D0/A0/A1 \1:RTS IRQ_PSG2_STEREO16_REP: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #4,(A0)+;compteur BPL.S I15 BRA I10;swap IRQ_PSG2_MONO16_REP: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I17 BRA I10;swap IRQ_PSG2_STEREO16: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #4,(A0)+;compteur BPL.S I15 BSR FIN_IRQ_PSG BRA I6 I15:ADDQ.L #4,(A0);adresse MOVE 4(A0),-(SP);volume MOVE.L (A0),A0;adresse MOVE -(A0),D0;chantillons EXT.L D0 MOVE -(A0),D1 EXT.L D1 ADD.L D1,D0 ASR.L #4,D0;moyenne sur 12 bits MOVE (SP)+,D1;volume ASR D1,D0 AND #(4095*2),D0 BCHG #12,D0;non sign MOVE.L ADR_CARTOUCHE,A0;MV16 utilise sur 12 bits MOVE.B (A0,D0),D1 ; 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 ;---------------------------------------------------- ;$FA # # # D D D D D D D D C C C C # ;---------------------------------------------------- ; | | | | | | ; < N/A > < volume data 8-bits > < channel> LEA $FFFF8800,A0;PSG YAMAHA port // MOVE.B #15,(A0);port B LSR #5,D0;8 bits MOVE.B D0,2(A0) MOVEM.L (SP)+,D0/D1/A0 RTE IRQ_PSG2_MONO16: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I17 BSR FIN_IRQ_PSG BRA I6 I17:ADDQ.L #2,(A0);adresse MOVE 4(A0),D1;volume MOVE.L (A0),A0;adresse MOVE -(A0),D0;chantillon ASR #3,D0;sur 12 bits ASR D1,D0;volume AND #(4095*2),D0 BCHG #12,D0;non sign MOVE.L ADR_CARTOUCHE,A0;MV16 utilise sur 12 bits MOVE.B (A0,D0),D1 ; 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 ;---------------------------------------------------- ;$FA # # # D D D D D D D D C C C C # ;---------------------------------------------------- ; | | | | | | ; < N/A > < volume data 8-bits > < channel> LEA $FFFF8800,A0;PSG YAMAHA port // MOVE.B #15,(A0);port B LSR #5,D0;8 bits MOVE.B D0,2(A0) MOVEM.L (SP)+,D0/D1/A0 RTE IRQ_PSG2_STEREO_REP: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I9 BRA.S I10;swap IRQ_PSG2_MONO_REP: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #1,(A0)+;compteur BPL.S I7 I10:BSR SWAP_ADR MOVE.L ADR_DEBUT,D0 MOVE.L D0,(A0);adresse NEG.L D0 ADD.L ADR_FIN,D0 MOVE.L D0,-(A0);compteur BRA.S I6 IRQ_PSG2_STEREO: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I9 BSR FIN_IRQ_PSG BRA.S I6 I9:ADDQ.L #2,(A0);adresse MOVE 4(A0),-(SP);volume MOVE.L (A0),A0;adresse MOVE.B -(A0),D0;chantillons EXT.W D0 MOVE.B -(A0),D1 EXT.W D1 ADD D1,D0 ASR #1,D0;moyenne AND #255,D0;8 bits MOVE (SP)+,D1;volume BRA.S I8 IRQ_PSG2_MONO: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #1,(A0)+;compteur BPL.S I7 BSR FIN_IRQ_PSG BRA.S I6 I7:ADDQ.L #1,(A0);adresse MOVE 4(A0),D1;volume MOVE.L (A0),A0;adresse MOVEQ #0,D0 MOVE.B -(A0),D0;chantillon I8:ASR.B D1,D0;volume BCHG #7,D0;non sign LEA $FFFF8800,A0;PSG YAMAHA port // MOVE.B #15,(A0);port B MOVE.B D0,2(A0) MOVE.L ADR_CARTOUCHE,A0;MV16 voie 1 ASL #5,D0 MOVE.B (A0,D0),D0 ; 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 ;---------------------------------------------------- ;$FA # # # D D D D D D D D C C C C # ;---------------------------------------------------- ; | | | | | | ; < N/A > < volume data 8-bits > < channel> I6:MOVEM.L (SP)+,D0/D1/A0 RTE IRQ_PSG_STEREO16_REP: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #4,(A0)+;compteur BPL.S I14 BRA I5;swap IRQ_PSG_MONO16_REP: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I16 BRA I5;swap IRQ_PSG_STEREO16: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #4,(A0)+;compteur BPL.S I14 BSR FIN_IRQ_PSG BRA I1 I14:ADDQ.L #4,(A0);adresse MOVE.L (A0)+,A1 MOVE -(A1),D0;chantillons EXT.L D0 MOVE -(A1),D1 EXT.L D1 ADD.L D1,D0 MOVEQ #9,D1 ASR.L D1,D0;moyenne AND #255,D0;8 bits MOVE (A0),D1;volume BRA I3 IRQ_PSG_MONO16: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I16 BSR FIN_IRQ_PSG BRA I1 I16:ADDQ.L #2,(A0);adresse MOVE.L (A0)+,A1 MOVE (A0),D1;volume MOVE -(A1),D0;chantillon BRA.S I3 IRQ_PSG_STEREO_REP: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I4 BRA.S I5;swap IRQ_PSG_MONO_REP: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #1,(A0)+;compteur BPL.S I2 I5:BSR SWAP_ADR MOVE.L ADR_DEBUT,D0 MOVE.L D0,(A0);adresse NEG.L D0 ADD.L ADR_FIN,D0 MOVE.L D0,-(A0);compteur BRA.S I1 IRQ_PSG_STEREO: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I4 BSR FIN_IRQ_PSG BRA.S I1 I4:ADDQ.L #2,(A0);adresse MOVE.L (A0)+,A1 MOVE.B -(A1),D0;chantillons EXT.W D0 MOVE.B -(A1),D0 EXT.W D1 ADD D1,D0 ASR #1,D0;moyenne AND #255,D0;8 bits MOVE (A0),D1;volume BRA.S I3 IRQ_PSG_MONO: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #1,(A0)+;compteur BPL.S I2 BSR FIN_IRQ_PSG BRA.S I1 I2:ADDQ.L #1,(A0);adresse MOVE.L (A0)+,A1 MOVE (A0),D1;volume MOVEQ #0,D0 MOVE.B -(A1),D0;chantillon I3:ASR.B D1,D0 ASL #2,D0 LEA $FFFF8800,A0;PSG YAMAHA LEA TAB_VOL+1(PC,D0),A1 MOVEQ #8,D0 MOVE.B D0,(A0);volume 1 MOVE.B (A1)+,2(A0);MOVEP inexistant sur 060 INC D0 MOVE.B D0,(A0);volume 2 MOVE.B (A1)+,2(A0) INC D0 MOVE.B D0,(A0);volume 3 MOVE.B (A1),2(A0) I1:MOVEM.L (SP)+,D0/D1/A0/A1 RTE DATA COMPTEUR_PSG:DC.L 0; ADRESSE:DC.L 0 ; ne pas changer l'ordre VOLUME:DC.W 0 ; TAB_VOL: DC.L $C0B09,$C0B09,$D0808,$B0B0B,$D0905,$C0B08,$D0902,$D0806,$C0B07,$D0707,$C0B06,$C0A09,$B0B0A,$C0B02,$C0B00,$C0A08 DC.L $D0604,$D0505,$D0504,$C0909,$D0403,$B0B09,$C0A05,$B0A0A,$C0908,$B0B08,$C0A00,$C0A00,$C0907,$B0B07,$C0906,$B0B06 DC.L $B0A09,$B0B05,$A0A0A,$B0B02,$B0A08,$C0707,$C0804,$C0706,$B0909,$C0606,$A0A09,$C0703,$B0A05,$B0908,$B0A03,$A0A08 DC.L $B0A00,$B0907,$B0808,$A0A07,$A0909,$C0101,$A0A06,$B0807,$A0A05,$A0908,$A0A02,$A0A01,$A0A00,$90909,$A0808,$B0801 DC.L $A0906,$B0704,$A0905,$90908,$A0903,$A0806,$A0900,$90907,$90808,$A0804,$90906,$A0801,$90905,$90807,$80808,$90902 DC.L $90806,$90900,$90707,$80807,$90706,$90802,$80806,$90606,$80707,$80804,$80706,$80802,$70707,$80606,$80704,$70706 DC.L $80605,$80604,$70606,$70704,$80504,$60606,$70604,$70505,$60605,$60604,$60505,$60602,$60504,$50505,$60502,$50504 DC.L $50404,$50502,$40404,$40403,$40402,$40303,$30303,$30302,$30202,$20202,$20201,$10101,$20100,$10100,$10000,$00000 DC.L $E0D0C,$F0300,$F0300,$F0300,$F0300,$F0300,$F0300,$E0D0B,$E0D0B,$E0D0B,$E0D0B,$E0D0B,$E0D0B,$E0D0B,$E0D0A,$E0D0A DC.L $E0D0A,$E0D0A,$E0C0C,$E0D00,$D0D0D,$D0D0D,$D0D0D,$D0D0D,$D0D0D,$D0D0D,$E0C0B,$E0C0B,$E0C0B,$E0C0B,$E0C0B,$E0C0B DC.L $E0C0B,$E0C0B,$E0C0A,$E0C0A,$E0C0A,$E0C0A,$D0D0C,$D0D0C,$E0C09,$E0C09,$E0C05,$E0C00,$E0C00,$E0B0B,$E0B0B,$E0B0B DC.L $E0B0B,$E0B0A,$E0B0A,$E0B0A,$D0D0B,$D0D0B,$D0D0B,$E0B09,$E0B09,$E0B09,$D0C0C,$D0D0A,$E0B07,$E0B00,$E0B00,$D0D09 DC.L $D0D09,$E0A09,$D0D08,$D0D07,$D0D04,$D0D00,$E0A04,$E0909,$E0909,$D0C0B,$E0908,$E0908,$E0907,$E0808,$E0901,$C0C0C DC.L $D0C0A,$E0806,$E0707,$E0800,$E0705,$E0606,$D0C09,$E0505,$E0404,$D0C08,$D0B0B,$E0000,$D0C06,$D0C05,$D0C02,$C0C0B DC.L $C0C0B,$D0B0A,$D0B0A,$D0B0A,$D0B0A,$C0C0A,$C0C0A,$C0C0A,$D0B09,$D0B09,$D0A0A,$D0A0A,$D0A0A,$C0C09,$C0C09,$C0C09 DC.L $D0B06,$C0B0B,$C0C08,$D0B00,$D0B00,$C0C07,$C0C06,$C0C05,$C0C03,$C0C01,$C0B0A,$D0A05,$D0A04,$D0A02,$D0908,$D0908 TAB_PSG: DC.L IRQ_PSG_MONO,IRQ_PSG_STEREO,IRQ_PSG_MONO16,IRQ_PSG_STEREO16 DC.L IRQ_PSG_MONO_REP,IRQ_PSG_STEREO_REP,IRQ_PSG_MONO16_REP,IRQ_PSG_STEREO16_REP TAB_PSG2: DC.L IRQ_PSG2_MONO,IRQ_PSG2_STEREO,IRQ_PSG2_MONO16,IRQ_PSG2_STEREO16 DC.L IRQ_PSG2_MONO_REP,IRQ_PSG2_STEREO_REP,IRQ_PSG2_MONO16_REP,IRQ_PSG2_STEREO16_REP ROPOCOP_HADES:DC.L $FFFA0000,$FF7A0000,$FF7C0000,$FF7E0000 STRUCT_MCSN: DC.W 256 DC.W 30 DC.W 2;play FALCON DC.W 2;record FALCON DC.W 0;short dsp; Is the DSP there? DC.W 1;Playing: Interrupt possible with frame-end? DC.W 1;Recording: Interrupt possible with frame-end? DC.L 22579200,0,0,0;rserve TAB_NUM_FREQ_FALCON: ;frquences internes DC.W 49170,33800,24585,20770,16940,16940,12292,12292,9834,9834,8195; 25,175 MHz ;frquences via horloge externe DC.W 44100,29400,22050,17640,14700,14700,11025,11025,8820,8820,7350; 22,5792 MHz DC.W 48000,32000,24000,19200,16000,16000,12000,12000,9600,9600,8000; 24,576 MHz TAB_NUM_FREQ_STE:DC.W 6250,12500,25000,50000 VOLUMES:DC.W 255,255 GAINS:DC.W 0,0 INFOS_COOKIE: DC.W VERSION DC.W 0;NB_SOURCES DC.W 0;INSOURCE DC.L TAB_SOURCENAME DC.W 0;SLOT NFNAME_AUDIO:DC.B "AUDIO",0 NUL:DC.B 0 MESS1:DC.B 13,10,10,27,"p MagiCMac Sound Driver XBIOS v",0 MESS2:DC.B " ",27,"q installed",13,10,"Didier MEQUIGNON November 2002",0 MESS3:DC.B 13,10,"MacOS Sound Manager v",0 MESS4:DC.B 13,10,"MacOS Sound Input Manager v",0 MESS5:DC.B 13,10,"Input Devices:",0 MESS6:DC.B 13,10,"Current Input Device: ",0 MESS7:DC.B 13,10,"Input Sources:",0 MESS8:DC.B 13,10,"Aranym detected, use SDL Sound",0 MESS8B:DC.B ", v",0 ERR1:DC.B 13,10,"Channel XBIOS cannot be open !",0 ERR2:DC.B 13,10,"MAC without sound !",0 ERR3:DC.B 13,10,"Impossible to open input device !",0 ERR4:DC.B 13,10,"No input source...",0 ERR5:DC.B 13,10,"No stereo input...",0 ERR6:DC.B 13,10,"No 16-bits input...",0 ERR7:DC.B 13,10,"No input device !",0 ERR8:DC.B 13,10,"Hardware cannot play stereo sounds !",0 ERR9:DC.B 13,10,"Hardware cannot handle 16-bits sounds !",0 ERR10:DC.B 13,10,"Hardware cannot record stereo sounds !",0 DEBUG1: IFNE 0,DEBUG DC.B 13,10,"Driver non install",0 ENDIF DEBUG2: IFNE 0,DEBUG DC.B 13,10,"Cookie _SND initialis",0 ENDIF DEBUG3: IFNE 0,DEBUG DC.B 13,10,"Attributs MacOS tests",13,10," GestaltSoundAttr:",0 ENDIF DEBUG4: IFNE 0,DEBUG DC.B 13,10,"Cration canal audio",0 ENDIF DEBUG5: IFNE 0,DEBUG DC.B 13,10,"Cookie MgSn cr",0 ENDIF DEBUG6: IFNE 0,DEBUG DC.B 13,10,"LOCKSND ",0 ENDIF DEBUG7: IFNE 0,DEBUG DC.B 13,10,"UNLOCKSND ",0 ENDIF DEBUG8: IFNE 0,DEBUG DC.B 13,10,"SOUNDCMD ",0 ENDIF DEBUG9: IFNE 0,DEBUG DC.B 13,10,"SETBUFFER ",0 ENDIF DEBUG10: IFNE 0,DEBUG DC.B 13,10,"BUFFOPER ",0 ENDIF DEBUG11: IFNE 0,DEBUG DC.B 13,10,"SETMODE ",0 ENDIF DEBUG12: IFNE 0,DEBUG DC.B 13,10,"DEVCONNECT ",0 ENDIF DEBUG13: IFNE 0,DEBUG DC.B 13,10,"SNDSTATUS ",0 ENDIF DEBUG14: IFNE 0,DEBUG DC.B 13,10,"BUFFPTR ",0 ENDIF DEBUG15: IFNE 0,DEBUG DC.B 13,10,"SETINTERRUPT",0 ENDIF DEBUG16: IFNE 0,DEBUG DC.B 13,10,"GPIO ",0 ENDIF DEBUG17: IFNE 0,DEBUG DC.B 13,10,"SETTRACKS ",0 ENDIF DEBUG18: IFNE 0,DEBUG DC.B 13,10,"SETMONTRACKS",0 ENDIF DEBUG19: IFNE 0,DEBUG DC.B 13,10,"JDISINT ",0 ENDIF DEBUG20: IFNE 0,DEBUG DC.B 13,10,"JENABINT ",0 ENDIF DEBUG21: IFNE 0,DEBUG DC.B 13,10,"XBTIMER ",0 ENDIF DEBUG22: IFNE 0,DEBUG DC.B 13,10,"MFPINT ",0 ENDIF DEBUG23: IFNE 0,DEBUG DC.B 13,10,"SETEXEC ",0 ENDIF DEBUG50: IFNE 0,DEBUG DC.B 13,10," SndSoundManagerVersion",0 ENDIF DEBUG100: IFNE 0,DEBUG DC.B 13,10," flushcmd",0 ENDIF DEBUG101: IFNE 0,DEBUG DC.B 13,10," quietcmd",0 ENDIF DEBUG102: IFNE 0,DEBUG DC.B 13,10," buffercmd",0 ENDIF DEBUG103: IFNE 0,DEBUG DC.B 13,10," callbackcmd",0 ENDIF DEBUG104: IFNE 0,DEBUG DC.B 13,10," volumecmd",0 ENDIF DEBUG110: IFNE 0,DEBUG DC.B 13,10," fin BUFFOPER",0 ENDIF DEBUG111: IFNE 0,DEBUG DC.B 13,10," status BUFFOPER:",0 ENDIF DEBUG112: IFNE 0,DEBUG DC.B 13,10," adresse dbut DMA:",0 ENDIF DEBUG113: IFNE 0,DEBUG DC.B 13,10," adresse fin DMA:",0 ENDIF DEBUG114: IFNE 0,DEBUG DC.B 13,10," frquence:",0 ENDIF DEBUG115: IFNE 0,DEBUG DC.B 13,10," octets/chantillon:",0 ENDIF DEBUG116: IFNE 0,DEBUG DC.B " status DMA:",0 ENDIF DEBUG117: IFNE 0,DEBUG DC.B 13,10," compteur DMA:",0 ENDIF DEBUG120: IFNE 0,DEBUG DC.B 13,10," SPBGetDeviceInfo",0 ENDIF DEBUG121: IFNE 0,DEBUG DC.B 13,10," SPBSetDeviceInfo",0 ENDIF DEBUG122: IFNE 0,DEBUG DC.B 13,10," SPBRecord",0 ENDIF DEBUG123: IFNE 0,DEBUG DC.B 13,10," SPBStopRecording",0 ENDIF DEBUG124: IFNE 0,DEBUG DC.B 13,10," SPBGetIndexedDevice",0 ENDIF DEBUG125: IFNE 0,DEBUG DC.B 13,10," SPBOpenDevice",0 ENDIF DEBUG126: IFNE 0,DEBUG DC.B 13,10," SPBVersion",0 ENDIF DEBUG127: IFNE 0,DEBUG DC.B 13,10," SPBCloseDevice",0 ENDIF DEBUG150: IFNE 0,DEBUG DC.B 13,10," siInputSource",0 ENDIF DEBUG151: IFNE 0,DEBUG DC.B 13,10," siAsync",0 ENDIF DEBUG152: IFNE 0,DEBUG DC.B 13,10," siNumberChannels",0 ENDIF DEBUG153: IFNE 0,DEBUG DC.B 13,10," siSampleSize",0 ENDIF DEBUG154: IFNE 0,DEBUG DC.B 13,10," siSampleRateAvailable",0 ENDIF DEBUG155: IFNE 0,DEBUG DC.B 13,10," siCompressionType",0 ENDIF DEBUG156: IFNE 0,DEBUG DC.B 13,10," siTwosComplementOnOff",0 ENDIF DEBUG157: IFNE 0,DEBUG DC.B 13,10," siPlayThruOnOff",0 ENDIF DEBUG158: IFNE 0,DEBUG DC.B 13,10," siStereoInputGain",0 ENDIF DEBUG159: IFNE 0,DEBUG DC.B 13,10," siInputSourceNames",0 ENDIF DEBUG160: IFNE 0,DEBUG DC.B 13,10," siDeviceName",0 ENDIF TAB_CAR_MAC:DC.B "",0 ALIGN.W BSS D_MAC:DS.W 1 D_TT:DS.W 1 D_SDL:DS.W 1 D_OPEN_SDL:DS.W 1 D_INTEL_SDL:DS.W 1 NFID_AUDIO:DS.L 1 FLAG_ARRET:DS.W 1 SAUVE_IRQ_TIMER_A:DS.L 1 ADR_CARTOUCHE:DS.L 1 ADR_MFP:DS.L 1 SAUVE_RESVALID:DS.L 1 RETOUR:DS.L 1 COUNT:DS.W 1 HORLOGE:DS.W 1 HORLOGE2:DS.W 1 PRESCALE:DS.W 1 PRESCALE_STE:DS.W 1 STATUS:DS.W 1 ADR:DS.L 1 ADR_DEBUT:DS.L 1 NEW_ADR_DEBUT:DS.L 1 ADR_FIN:DS.L 1 NEW_ADR_FIN:DS.L 1 ADR_REC:DS.L 1 ADR_DEBUT_REC:DS.L 1 NEW_ADR_DEBUT_REC:DS.L 1 ADR_FIN_REC:DS.L 1 NEW_ADR_FIN_REC:DS.L 1 ADR_SUITE:DS.L 1 COMPT_BLOC:DS.L 1 COMPT_BLOC_REC:DS.L 1 FREQUENCE:DS.L 1 FREQ_LECT:DS.L 1 OCT_ECH:DS.W 1 NB_VOIES:DS.W 1 NB_TRACKS:DS.W 1 NB_TRACKS_REC:DS.W 1 NB_INDEV:DS.W 1 NB_SOURCES:DS.W 1 INSOURCE:DS.W 1 NB_FREQ_REC:DS.W 1 FREQ_REC:DS.L 1 TAB_FREQ_REC:DS.L 16 TRACK:DS.W 1 INTH_ADDR:DS.L 1 INTH_ADDR_REC:DS.L 1 CAUSE_INTER:DS.W 1 COUNT_TIMER_A:DS.W 1 D_INIT_TIMER_A:DS.W 1 D_TIMER_A:DS.W 1 D_IO7:DS.W 1 D_SND_LOCK:DS.W 1 D_SETBUFF:DS.W 1 D_SETBUFF_REC:DS.W 1 MODEMAC:DS.L 1 MODEATARI:DS.L 1 GETBASEMODE:DS.L 1 CALLMACCONTEXT:DS.L 1 ATARIZEROPAGE:DS.L 1 INPARAMPTR:DS.L 9 INREFNUM:DS.L 1 INFOTYPE:DS.L 1 DEVICEICONHANDLE:DS.L 1 INFODATA:DS.L 8 RECORDINGSTATUS:DS.W 1 METERLEVEL:DS.W 1 TOTALSAMPLESTORECORD:DS.L 1 NUMBEROFSAMPLESRECORDED:DS.L 1 TOTALMSECSTORECORD:DS.L 1 NUMBEROFSECSRECORDED:DS.L 1 SNDCHANNELPTR:DS.L 1 SNDCHANNELPTR2:DS.L 1 INITSND:DS.L 1 SNDCOMMAND:DS.L 1 SNDCALLBACKPROCPTR:DS.L 1 INFOS_SON_MAC:DS.L 1 CHANNEL:DS.L 9+(128*2);2 paramtres par SndCommand DEVICENAME:DS.B 256 TAB_BUFFERS:DS.B (TAILLE_BUFFER+TAILLE_SOUND_HEADER)*(NB_BUFFERS+1) TAB_SOURCENAME:DS.B (256*MAX_TAB)+1 FIN: END aranym-1.1.0/atari/sound/README0000664000175000017500000000514513454637621014316 0ustar joyjoy********************************************************************** * MagiCMac Sound driver v0.96 * Didier MEQUIGNON * 2002 April * ********************************************************************** Features: --------- Emulation of Falcon's XBIOS, there are no matrix like the falcon in the MacOS system nevertheless it's possible to : - Play samples in 8/16 bits mono and stereo (with/without D2D). - Record 16 bits samples in stereo like the Falcon (with/without D2D). - Select the input source (the current input source when MagiCMac is started or the number one). - Connnect or remove the audio source to the audio output. - Set the level output on the two channels. - Set the gain input on the two channels. - Emulation on the selection of tracks (1 to 4). - FDI external clock selection compatible. - Extended functions added like the GSXB/MilanBlaster drivers, for example it's possible to choice the true frequency. The bit 5 of the _SND cookie is set. 24/32 bits and mixer are not supported, and only Mororola format is supported. With the CPX, you can change the audio source. Special Futures: ---------------- - This driver can runs on Hades ! The output is the YAMAHA or the MV16/PSOUND card. In this case audio input functions are removed. The Timer A of the MFP2 is used. - This driver can run on Aranym ! The driver use SDL calls inside Aranym. Record isn't possible. Install: -------- Under MagiCMac, just copy ZMAGXSND.PRG in the AUTO folder and restart MagiCMac, you can select the input audio source with the CPX. Under Hades, if you want the MV16 (on the Ropocop), PSOUND (// port), or the YAMAHA (internal) output, you need to select to select the audio output with the CPX. Under Aranym, just copy ZMAGXSND.PRG in the AUTO folder. You need Aranym 0.1.7 or more. Copying: -------- This program and sources are free. Problems: --------- Please contact me: didier.mequignon@wanadoo.fr List of sound XBIOS functions supported: ---------------------------------------- Locksound() XBIOS Function 128. Unlocksound() XBIOS Function 129. Soundcmd() XBIOS Function 130. Setbuffer() XBIOS Function 131. Setmode() XBIOS Function 132. Settracks() XBIOS Function 133. Setmontracks() XBIOS Function 134. Setinterrupt() XBIOS Function 135. Buffoper() XBIOS Function 136. Gpio() XBIOS Function 138. Just used for clock selection. Devconnect() XBIOS Function 139. Sndstatus() XBIOS Function 140. Buffptr() XBIOS Function 141. Some functions are not 100% compatible with GSXB/MilanBlaster because the way under MacOS with sound devices is different. aranym-1.1.0/atari/nfstderr/0000775000175000017500000000000013454637621014130 5ustar joyjoyaranym-1.1.0/atari/nfstderr/nfstderrbos.c0000664000175000017500000001520313454637621016630 0ustar joyjoy/* NatFeat host NF_STDERR /dev/nfstderr, MetaDOS BOS driver ARAnyM (C) 2005 STanda Opichal This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Include ---*/ #include #include #include "../natfeat/nf_ops.h" #include "metados_bos.h" /*--- Defines ---*/ #undef ENOSYS #define ENOSYS -32 #ifndef DEV_CONSOLE #define DEV_CONSOLE 2 #endif #define DRIVER_NAME "ARAnyM NF_STDERR driver" #define VERSION "v0.1" static const char device_name[METADOS_BOSDEVICE_NAMELEN]={ "nfstderr" }; /*--- Functions prototypes ---*/ void *init_driver(void); metados_bosheader_t *asm_init_devices(void); long asm_xopen(metaopen_t *metaopen); long asm_xclose(void); long asm_xread(void *buffer, unsigned long first, unsigned short length); long asm_xwrite(void *buffer, unsigned long first, unsigned short length); long asm_xseek(unsigned long offset); long asm_xstatus(metastatus_t *ext_status); long asm_xioctl(unsigned long magic, unsigned short opcode, void *buffer); long xopen(metados_bosheader_t *device, metaopen_t *metaopen); long xclose(metados_bosheader_t *device); long xread(metados_bosheader_t *device, void *buffer, unsigned long first, unsigned long length); long xwrite(metados_bosheader_t *device, void *buffer, unsigned long first, unsigned long length); long xseek(metados_bosheader_t *device, unsigned long offset); long xstatus(metados_bosheader_t *device, metastatus_t *ext_status); long xioctl(metados_bosheader_t *device, unsigned long magic, unsigned long opcode, void *buffer); metados_bosheader_t *init_devices(unsigned long phys_letter, unsigned long phys_channel); static void press_any_key(void); /*--- Local variables ---*/ unsigned long nf_stderr_id = 0; long __CDECL (*nf_call)(long id, ...) = 0UL; static metados_bosheader_t * (*device_init_f)(void)=asm_init_devices; /*--- Functions ---*/ void *init_driver(void) { const struct nf_ops *nf_ops; Cconws( "\033p " DRIVER_NAME " " VERSION " \033q\r\n" "Copyright (c) ARAnyM Development Team, " __DATE__ "\r\n" ); /* Init the ID to 0 */ nf_stderr_id = 0; nf_ops = nf_init(); if ( ! nf_ops ) { Cconws("__NF cookie not present on this system\r\n"); press_any_key(); return &device_init_f; } nf_stderr_id = nf_ops->get_id("NF_STDERR"); if (nf_stderr_id == 0) { Cconws("NF_STDERR function not present on this system\r\n"); press_any_key(); return &device_init_f; } /* store the nf_call pointer for faster calls */ nf_call = nf_ops->call; return &device_init_f; } static void press_any_key(void) { Cconws("- Press any key to continue -\r\n"); Crawcin(); } metados_bosheader_t *init_devices(unsigned long phys_letter, unsigned long phys_channel) { unsigned char *newdevice; metados_bosheader_t *DefaultDevice; metados_bosfunctions_t *DefaultFunctions; if (nf_stderr_id == 0) { Cconws(" ARAnyM NF_STDERR device driver unavailable\r\n"); return (metados_bosheader_t *)-39; } newdevice = (unsigned char *)Malloc(sizeof(metados_bosheader_t)+sizeof(metados_bosfunctions_t)); if (newdevice == NULL) { return (metados_bosheader_t *)-39; } DefaultDevice = (metados_bosheader_t *) newdevice; DefaultFunctions = (metados_bosfunctions_t *) (newdevice + sizeof(metados_bosheader_t)); DefaultDevice->next=NULL; DefaultDevice->attrib=0; DefaultDevice->phys_letter=phys_letter; DefaultDevice->dma_channel=phys_channel; DefaultDevice->functions=DefaultFunctions; DefaultDevice->functions->init=(long (*)(metainit_t *metainit)) 0xffffffffUL; DefaultDevice->functions->open=asm_xopen; DefaultDevice->functions->close=asm_xclose; DefaultDevice->functions->read=asm_xread; DefaultDevice->functions->write=asm_xwrite; DefaultDevice->functions->seek=asm_xseek; DefaultDevice->functions->status=asm_xstatus; DefaultDevice->functions->ioctl=asm_xioctl; DefaultDevice->functions->function08=(long (*)(void)) 0xffffffffUL; DefaultDevice->functions->function09=(long (*)(void)) 0xffffffffUL; DefaultDevice->functions->function0a=(long (*)(void)) 0xffffffffUL; DefaultDevice->functions->startaudio=(void*)0xffffffffUL; DefaultDevice->functions->stopaudio=(void*)0xffffffffUL; DefaultDevice->functions->setsongtime=(void*)0xffffffffUL; DefaultDevice->functions->gettoc=(void*)0xffffffffUL; DefaultDevice->functions->discinfo=(void*)0xffffffffUL; DefaultDevice->status=0; strncpy(DefaultDevice->name, device_name, METADOS_BOSDEVICE_NAMELEN); return DefaultDevice; } long xopen(metados_bosheader_t *device, metaopen_t *metaopen) { metaopen->name = device->name; metaopen->reserved[0] = metaopen->reserved[1] = metaopen->reserved[2] = 0; return 0; } long xclose(metados_bosheader_t *device) { return 0; } long xread(metados_bosheader_t *device, void *buffer, unsigned long first, unsigned long length) { return 0; } long xwrite(metados_bosheader_t *device, void *buf, unsigned long first, unsigned long length) { char outb[2] = { '\0', '\0' }; long nwrite = 0; /** * WARNING: this driver doesn't expect the incomming data first/length * to be in bytes and NOT blocks of 2048 bytes as specified in the * .BOS API specification. * * This is to me an acceptable hack to create .BOS character device * drivers for BetaDOS. **/ unsigned long bytes = length; while (bytes > 0) { /* call host os to print the data */ /* byte by byte because of NF_STDERR operates with * char* as with a string and not a byte array * ('\0' would terminate the output) **/ outb[0] = ((char*)buf)[nwrite]; nf_call(nf_stderr_id, outb); nwrite++; bytes--; } return nwrite; } long xseek(metados_bosheader_t *device, unsigned long offset) { return 0; } long xstatus(metados_bosheader_t *device, metastatus_t *extended_status) { if (extended_status != NULL) { memset(extended_status, 0, sizeof(metastatus_t)); } return 0; } long xioctl(metados_bosheader_t *device, unsigned long magic, unsigned long opcode, void *buffer) { if (magic != METADOS_IOCTL_MAGIC) { return ENOSYS; } switch (opcode) { case METADOS_IOCTL_BOSINFO: /* this device is character device */ ((bos_info_t*)buffer)->flags = BOS_INFO_ISTTY; return 0; } return ENOSYS; } aranym-1.1.0/atari/nfstderr/metados_bos.h0000664000175000017500000000403513454637621016602 0ustar joyjoy/* MetaDOS BOS driver definitions ARAnyM (C) 2003 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _METADOS_BOS_H #define _METADOS_BOS_H #include "metados.h" #define METADOS_BOSDEVICE_NAMELEN 32 typedef struct { long (*init)(metainit_t *metainit); long (*open)(metaopen_t *metaopen); long (*close)(void); long (*read)(void *buffer, unsigned long first, unsigned short length); long (*write)(void *buffer, unsigned long first, unsigned short length); long (*seek)(unsigned long offset); long (*status)(metastatus_t *extended_status); long (*ioctl)(unsigned long magic, unsigned short opcode, void *buffer); long (*function08)(void); long (*function09)(void); long (*function0a)(void); long (*startaudio)(unsigned short dummy, metatracks_t *tracks); long (*stopaudio)(void); long (*setsongtime)(unsigned short dummy, unsigned long start_msf, unsigned long end_msf); long (*gettoc)(unsigned short dummy, metatocentry_t *tocheader); long (*discinfo)(metadiscinfo_t *discinfo); } __attribute__((packed)) metados_bosfunctions_t; typedef struct { void *next; unsigned long attrib; unsigned short phys_letter; unsigned short dma_channel; unsigned short sub_device; metados_bosfunctions_t *functions; unsigned short status; unsigned long reserved[2]; char name[METADOS_BOSDEVICE_NAMELEN]; } __attribute__((packed)) metados_bosheader_t; #endif /* _METADOS_BOS_H */ aranym-1.1.0/atari/nfstderr/metados.h0000664000175000017500000001275013454637621015742 0ustar joyjoy/* Metados Copyright (C) 2002 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _METADOS_H #define _METADOS_H #include /* for trap_14_xxx macros */ #ifndef OSBIND_CLOBBER_LIST #define OSBIND_CLOBBER_LIST "d0", "d1", "d2", "a0", "a1", "a2", "memory" #endif #ifndef trap_14_wwllw #define trap_14_wwllw(n, a, b, c, d) \ __extension__ \ ({ \ register long retvalue __asm__("d0"); \ short _a = (short)(a); \ long _b = (long) (b); \ long _c = (long) (c); \ short _d = (short)(d); \ \ __asm__ volatile \ ("\ movw %5,sp@-; \ movl %4,sp@-; \ movl %3,sp@-; \ movw %2,sp@-; \ movw %1,sp@-; \ trap #14; \ lea sp@(14),sp " \ : "=r"(retvalue) /* outputs */ \ : "g"(n), \ "r"(_a), "r"(_b), "r"(_c), "r"(_d) /* inputs */ \ : __CLOBBER_RETURN("d0") \ "d1", "d2", "a0", "a1", "a2", "memory" \ ); \ retvalue; \ }) #endif #ifndef trap_14_wwlwl #define trap_14_wwlwl(n,a,b,c,d) \ __extension__ \ ({ \ register long retvalue __asm__("d0"); \ short _a = (short)(a); \ long _b = (long)(b); \ short _c = (short)(c); \ long _d = (long)(d); \ \ __asm__ volatile ( \ "movl %5,sp@-\n\t" \ "movw %4,sp@-\n\t" \ "movl %3,sp@-\n\t" \ "movw %2,sp@-\n\t" \ "movw %1,sp@-\n\t" \ "trap #14\n\t" \ "lea sp@(14),sp" \ : "=r"(retvalue) \ : "g"(n), "r"(_a), "r"(_b), "r"(_c), "r"(_d) \ : OSBIND_CLOBBER_LIST \ ); \ retvalue; \ }) #endif /*--- Functions prototypes ---*/ #define Metainit(buffer) \ (void)trap_14_wl((short)0x30,(long)buffer) #define Metaopen(drive,buffer) \ (long)trap_14_wwl((short)0x31,(short)drive,(long)buffer) #define Metaclose(drive) \ (void)trap_14_ww((short)0x32,(short)drive) #define Metaread(drive,buffer,first_block,nb_blocks) \ (long)trap_14_wwllw((short)0x33,(short)drive,(long)buffer,(long)first_block,(short)nb_blocks) #define Metawrite(drive,buffer,first_block,nb_blocks) \ (long)trap_14_wwllw((short)0x34,(short)drive,(long)buffer,(long)first_block,(short)nb_blocks) #define Metaseek(drive,dummy,offset) \ (long)trap_14_wwll((short)0x35,(short)(drive),(long)(dummy),(long)(offset)) #define Metastatus(void) \ (long)trap_14_wl((short)0x36,(long)(buffer)) #define Metaioctl(drive,magic,opcode,buffer) \ (long)trap_14_wwlwl((short)(0x37),(short)(drive),(long)(magic),(short)(opcode),(long)(buffer)) #define Metastartaudio(drive,dummy,metatracks_t_p) \ (long)trap_14_wwwl((short)(0x3b),(short)(drive),(short)(dummy),(long)(metatracks_t_p)) #define Metastopaudio(drive) \ (long)trap_14_ww((short)(0x3c),(short)(drive)) #define Metasetsongtime(drive,dummy,start,end) \ (long)trap_14_wwwll((short)(0x3d),(short)(drive),(short)(dummy),(long)(start),(long)(end)) #define Metagettoc(drive,dummy,metatocentry_t_p) \ (long)trap_14_wwwl((short)(0x3e),(short)(drive),(short)(dummy),(long)(metatocentry_t_p)) #define Metadiscinfo(drive,metadiscinfo_t_p) \ (long)trap_14_wwl((short)(0x3f),(short)(drive),(long)(metadiscinfo_t_p)) #define METADOS_IOCTL_MAGIC (((unsigned long)'F'<<24)|((unsigned long)'C'<<16)|('T'<<8)|'L') /* bos_info_t returning ioctl */ #define METADOS_IOCTL_BOSINFO (('B'<<8)|'I') /*--- Types ---*/ typedef struct { unsigned short version; unsigned long magic; char *log2phys; } __attribute__((packed)) metainfo_t; typedef struct { unsigned long drives_map; char *version; unsigned long reserved; metainfo_t *info; } __attribute__((packed)) metainit_t; typedef struct { char *name; unsigned long reserved[3]; } __attribute__((packed)) metaopen_t; typedef struct { char ext_status[32]; } __attribute__((packed)) metastatus_t; typedef struct { unsigned char count; unsigned char first; } __attribute__((packed)) metatracks_t; typedef struct { /* TOC entry for MetaGetToc() function */ unsigned char track; unsigned char minute; unsigned char second; unsigned char frame; } __attribute__((packed)) metatocentry_t; typedef struct { unsigned char reserved; unsigned char minute; unsigned char second; unsigned char frame; } __attribute__((packed)) metadisc_msf_t; typedef struct { /* Discinfo for MetaDiscInfo() function */ unsigned char disctype, first, last, current; metadisc_msf_t relative; metadisc_msf_t absolute; metadisc_msf_t end; unsigned char index, reserved1[3]; unsigned long reserved2[123]; } __attribute__((packed)) metadiscinfo_t; /* METADOS_IOCTL_BOSINFO ioctl() .bos driver info */ /** the devide is a character device (all the block values in API are * meant as byte values for these */ #define BOS_INFO_ISTTY 0x00001UL /** the device will not be visible in the x:\dev nor in x:\dev\bos */ #define BOS_INFO_BOSHIDDEN 0x10000UL /** the device will not be visible in the x:\dev but will be in x:\dev\bos */ #define BOS_INFO_DEVHIDDEN 0x20000UL typedef struct { unsigned long flags; } __attribute__((packed)) bos_info_t; #endif /* _METADOS_H */ aranym-1.1.0/atari/nfstderr/entry.S0000664000175000017500000001253713454637621015425 0ustar joyjoy/* NatFeat NF_STDERR /dev/nfstderr, MetaDOS BOS driver ARAnyM (C) 2005 STanda Opichal This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ .text .globl _asm_init_devices, _init_devices .globl _asm_xopen, _xopen .globl _asm_xclose, _xclose .globl _asm_xread, _xread .globl _asm_xwrite, _xwrite .globl _asm_xseek, _xseek .globl _asm_xstatus, _xstatus .globl _asm_xioctl, _xioctl .globl _asm_xstartaudio, _xstartaudio .globl _asm_xstopaudio, _xstopaudio .globl _asm_xsetsongtime, _xsetsongtime .globl _asm_xgettoc, _xgettoc .globl _asm_xdiscinfo, _xdiscinfo /*--- Function to create a bos header ---*/ _asm_init_devices: /* Input: d0.w physical drive letter d1.w dma channel Forward: 0(sp) physical drive letter 4(sp) dma channel */ andl #0xffff,d1 movl d1,sp@- andl #0xffff,d0 movl d0,sp@- bsr _init_devices addql #8,sp rts /*--- MetaDOS BOS functions frontends ---*/ _asm_xopen: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) metaopen_t *metaopen Forward: 0(sp) metados_bosheader_t *device 4(sp) metaopen_t *metaopen */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _xopen addql #8,sp rts _asm_xclose: /* Input: a0 metados_bosheader_t *device 0(sp) return address Forward: 0(sp) metados_bosheader_t *device */ movl a0,sp@- bsr _xclose addql #4,sp rts _asm_xread: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned short length Forward: 0(sp) metados_bosheader_t *device 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned long length */ movl sp,a1 clrl d0 movw 12(a1),d0 movl d0,sp@- movl 8(a1),sp@- movl 4(a1),sp@- movl a0,sp@- bsr _xread lea sp@(16),sp rts _asm_xwrite: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned short length Forward: 0(sp) metados_bosheader_t *device 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned long length */ movl sp,a1 clrl d0 movw 12(a1),d0 movl d0,sp@- movl 8(a1),sp@- movl 4(a1),sp@- movl a0,sp@- bsr _xwrite lea sp@(16),sp rts _asm_xseek: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unsigned long offset Forward: 0(sp) metados_bosheader_t *device 4(sp) unsigned long offset */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _xseek addql #8,sp rts _asm_xstatus: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) metados_bosstatus_t *extended_status; Forward: 0(sp) metados_bosheader_t *device 4(sp) metados_bosstatus_t *extended_status; */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _xstatus addql #8,sp rts _asm_xioctl: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unsigned long magic 8(sp) unsigned short opcode 10(sp) void *buffer; Forward: 0(sp) metados_bosheader_t *device 4(sp) unsigned long magic 8(sp) unsigned long opcode 12(sp) void *buffer; */ movl sp,a1 movl 10(a1),sp@- clrl d0 movw 8(a1),d0 movl d0,sp@- movl 4(a1),sp@- movl a0,sp@- bsr _xioctl lea sp@(16),sp rts #if 0 _asm_xstartaudio: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unknown parameter 6(sp) unsigned char *tracks Forward: 0(sp) metados_bosheader_t *device 4(sp) unknown parameter 8(sp) unsigned char *tracks */ movl sp,a1 movl 6(a1),sp@- clrl d0 movw 4(a1),d0 movl d0,sp@- movl a0,sp@- bsr _xstartaudio lea sp@(12),sp rts _asm_xstopaudio: /* Input: a0 metados_bosheader_t *device 0(sp) return address Forward: 0(sp) metados_bosheader_t *device */ movl a0,sp@- bsr _xstopaudio addql #4,sp rts _asm_xsetsongtime: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unknown parameter 6(sp) start_msf 10(sp) end_msf Forward: 0(sp) metados_bosheader_t *device 4(sp) unknown parameter 8(sp) start_msf 12(sp) end_msf */ movl sp,a1 movl 10(a1),sp@- movl 6(a1),sp@- clrl d0 movw 4(a1),d0 movl d0,sp@- movl a0,sp@- bsr _xsetsongtime lea sp@(16),sp rts _asm_xgettoc: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) dummy 6(sp) toc_header_t *toc_header Forward: 0(sp) metados_bosheader_t *device 4(sp) dummy 8(sp) toc_header_t *toc_header */ movl sp,a1 movl 6(a1),sp@- clrl d0 movw 4(a1),d0 movl d0,sp@- movl a0,sp@- bsr _xgettoc lea sp@(12),sp rts _asm_xdiscinfo: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) metados_bosdiscinfo_t *discinfo Forward: 0(sp) metados_bosheader_t *device 4(sp) metados_bosdiscinfo_t *discinfo */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _xdiscinfo addql #8,sp rts #endif aranym-1.1.0/atari/nfstderr/Makefile0000664000175000017500000000113013454637621015563 0ustar joyjoy TARGET = nfstderr.bos TARGET1 = print.prg COBJS = nfstderrbos.c ../natfeat/natfeat.c ../nfpci/nfpci_cookie.c SOBJS = entry.S ../natfeat/natfeat_asm.S include ../CONFIGVARS CFLAGS = $(OPTS) $(WARN) $(GENERAL) LDFLAGS = -nostdlib -Wl,--entry -Wl,_init_driver -lc -lgcc COBJECTS = $(COBJS:.c=.o) SOBJECTS = $(SOBJS:.S=.o) all: $(TARGET) $(TARGET): $(COBJECTS) $(SOBJECTS) ${CC} -o $@ $(COBJECTS) $(SOBJECTS) $(GENERAL) ${CFLAGS} ${LDFLAGS} ${STRIP} $(TARGET) $(TARGET1): print.o ${CC} -o $@ print.o $(GENERAL) ${CFLAGS} ${STRIP} $(TARGET1) clean: rm -f $(SOBJECTS) $(COBJECTS) $(TARGET) aranym-1.1.0/atari/nfpci/0000775000175000017500000000000013454637621013400 5ustar joyjoyaranym-1.1.0/atari/nfpci/nfpci_xbios.S0000664000175000017500000002147413454637621016037 0ustar joyjoy/* NatFeat host PCI driver, XPCI cookie via XBIOS ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ .globl _pcixbios_find_device, _pcixbios_find_classcode .globl _pcixbios_read_config_byte, _pcixbios_read_config_word .globl _pcixbios_read_config_long, _pcixbios_read_config_byte_fast .globl _pcixbios_read_config_word_fast, _pcixbios_read_config_long_fast .globl _pcixbios_write_config_byte, _pcixbios_write_config_word .globl _pcixbios_write_config_long, _pcixbios_hook_interrupt .globl _pcixbios_unhook_interrupt, _pcixbios_special_cycle .globl _pcixbios_get_routing, _pcixbios_set_interrupt .globl _pcixbios_get_resource, _pcixbios_get_card_used .globl _pcixbios_set_card_used, _pcixbios_read_mem_byte .globl _pcixbios_read_mem_word, _pcixbios_read_mem_long .globl _pcixbios_read_mem_byte_fast, _pcixbios_read_mem_word_fast .globl _pcixbios_read_mem_long_fast, _pcixbios_write_mem_byte .globl _pcixbios_write_mem_word, _pcixbios_write_mem_long .globl _pcixbios_read_io_byte, _pcixbios_read_io_word .globl _pcixbios_read_io_long, _pcixbios_read_io_byte_fast .globl _pcixbios_read_io_word_fast, _pcixbios_read_io_long_fast .globl _pcixbios_write_io_byte, _pcixbios_write_io_word .globl _pcixbios_write_io_long, _pcixbios_get_machine_id .globl _pcixbios_get_pagesize, _pcixbios_virt_to_bus .globl _pcixbios_bus_to_virt, _pcixbios_virt_to_phys .globl _pcixbios_phys_to_virt .globl _pcixbios_oldtrap, _pcixbios_newtrap .text .even .ascii "XBRA" .ascii "XPCI" _pcixbios_oldtrap: .long 0 _pcixbios_newtrap: lea sp@(8),a0 btst #5,sp@ bnes supervisor_mode movl usp,a0 supervisor_mode: movw a0@+,d0 subw #300,d0 bmis old_xbios cmpw #42,d0 bhis old_xbios jsr @(pcixbios_function_table,d0:w:4)@(0) rte old_xbios: jmp @(_pcixbios_oldtrap)@(0) /* XBIOS functions */ _pcixbios_find_device: moveql #0,d0 movw a0@(4),d0 movl d0,sp@- movl a0@,sp@- bsr _find_device addql #8,sp rts _pcixbios_find_classcode: moveql #0,d0 movw a0@(4),d0 movl d0,sp@- movl a0@,sp@- bsr _find_classcode addql #8,sp rts _pcixbios_read_config_byte: moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@(6),sp@- movl a0@,sp@- bsr _read_config_byte lea sp@(12),sp rts _pcixbios_read_config_word: moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@(6),sp@- movl a0@,sp@- bsr _read_config_word lea sp@(12),sp rts _pcixbios_read_config_long: moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@(6),sp@- movl a0@,sp@- bsr _read_config_long lea sp@(12),sp rts _pcixbios_read_config_byte_fast: moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@,sp@- bsr _read_config_byte_fast addql #8,sp rts _pcixbios_read_config_word_fast: moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@,sp@- bsr _read_config_word_fast addql #8,sp rts _pcixbios_read_config_long_fast: moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@,sp@- bsr _read_config_long_fast addql #8,sp rts _pcixbios_write_config_byte: moveql #0,d0 movb a0@(7),d0 movl d0,sp@- moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@,sp@- bsr _write_config_byte lea sp@(12),sp rts _pcixbios_write_config_word: moveql #0,d0 movw a0@(6),d0 movl d0,sp@- moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@,sp@- bsr _write_config_word lea sp@(12),sp rts _pcixbios_write_config_long: movl a0@(6),sp@- moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@,sp@- bsr _write_config_long lea sp@(12),sp rts _pcixbios_hook_interrupt: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _hook_interrupt lea sp@(12),sp rts _pcixbios_unhook_interrupt: movl a0@,sp@- bsr _unhook_interrupt addql #4,sp rts _pcixbios_special_cycle: movl a0@(4),sp@- moveql #0,d0 movw a0@,d0 movl d0,sp@- bsr _special_cycle addql #8,sp rts _pcixbios_get_routing: movel #0xfffffff8,d0 /* PCI_GENERAL_ERROR */ rts _pcixbios_set_interrupt: movel #0xfffffff8,d0 /* PCI_GENERAL_ERROR */ rts _pcixbios_get_resource: movl a0@,sp@- bsr _get_resource addql #4,sp rts _pcixbios_get_card_used: movl a0@(4),sp@- movl a0@,sp@- bsr _get_card_used addql #8,sp rts _pcixbios_set_card_used: movl a0@(4),sp@- movl a0@,sp@- bsr _set_card_used addql #8,sp rts _pcixbios_read_mem_byte: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _read_mem_byte lea sp@(12),sp rts _pcixbios_read_mem_word: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _read_mem_word lea sp@(12),sp rts _pcixbios_read_mem_long: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _read_mem_long lea sp@(12),sp rts _pcixbios_read_mem_byte_fast: movl a0@(4),sp@- movl a0@,sp@- bsr _read_mem_byte_fast addql #8,sp rts _pcixbios_read_mem_word_fast: movl a0@(4),sp@- movl a0@,sp@- bsr _read_mem_word_fast addql #8,sp rts _pcixbios_read_mem_long_fast: movl a0@(4),sp@- movl a0@,sp@- bsr _read_mem_long_fast addql #8,sp rts _pcixbios_write_mem_byte: movw a0@(8),d0 andl #0xff,d0 movl d0,sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _write_mem_byte lea sp@(12),sp rts _pcixbios_write_mem_word: moveql #0,d0 movw a0@(8),d0 movl d0,sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _write_mem_word lea sp@(12),sp rts _pcixbios_write_mem_long: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _write_mem_long lea sp@(12),sp rts _pcixbios_read_io_byte: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _read_io_byte lea sp@(12),sp rts _pcixbios_read_io_word: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _read_io_word lea sp@(12),sp rts _pcixbios_read_io_long: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _read_io_long lea sp@(12),sp rts _pcixbios_read_io_byte_fast: movl a0@(4),sp@- movl a0@,sp@- bsr _read_io_byte_fast addql #8,sp rts _pcixbios_read_io_word_fast: movl a0@(4),sp@- movl a0@,sp@- bsr _read_io_word_fast addql #8,sp rts _pcixbios_read_io_long_fast: movl a0@(4),sp@- movl a0@,sp@- bsr _read_io_long_fast addql #8,sp rts _pcixbios_write_io_byte: movw a0@(8),d0 andl #0xff,d0 movl d0,sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _write_io_byte lea sp@(12),sp rts _pcixbios_write_io_word: moveql #0,d0 movw a0@(8),d0 movl d0,sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _write_io_word lea sp@(12),sp rts _pcixbios_write_io_long: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _write_io_long lea sp@(12),sp rts _pcixbios_get_machine_id: bsr _get_machine_id rts _pcixbios_get_pagesize: bsr _get_pagesize rts _pcixbios_virt_to_bus: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _virt_to_bus lea sp@(12),sp rts _pcixbios_bus_to_virt: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _bus_to_virt lea sp@(12),sp rts _pcixbios_virt_to_phys: movl a0@(4),sp@- movl a0@,sp@- bsr _bus_to_virt addql #8,sp rts _pcixbios_phys_to_virt: movl a0@(4),sp@- movl a0@,sp@- bsr _bus_to_virt addql #8,sp rts .data pcixbios_function_table: .long _pcixbios_find_device .long _pcixbios_find_classcode .long _pcixbios_read_config_byte .long _pcixbios_read_config_word .long _pcixbios_read_config_long .long _pcixbios_read_config_byte_fast .long _pcixbios_read_config_word_fast .long _pcixbios_read_config_long_fast .long _pcixbios_write_config_byte .long _pcixbios_write_config_word .long _pcixbios_write_config_long .long _pcixbios_hook_interrupt .long _pcixbios_unhook_interrupt .long _pcixbios_special_cycle .long _pcixbios_get_routing .long _pcixbios_set_interrupt .long _pcixbios_get_resource .long _pcixbios_get_card_used .long _pcixbios_set_card_used .long _pcixbios_read_mem_byte .long _pcixbios_read_mem_word .long _pcixbios_read_mem_long .long _pcixbios_read_mem_byte_fast .long _pcixbios_read_mem_word_fast .long _pcixbios_read_mem_long_fast .long _pcixbios_write_mem_byte .long _pcixbios_write_mem_word .long _pcixbios_write_mem_long .long _pcixbios_read_io_byte .long _pcixbios_read_io_word .long _pcixbios_read_io_long .long _pcixbios_read_io_byte_fast .long _pcixbios_read_io_word_fast .long _pcixbios_read_io_long_fast .long _pcixbios_write_io_byte .long _pcixbios_write_io_word .long _pcixbios_write_io_long .long _pcixbios_get_machine_id .long _pcixbios_get_pagesize .long _pcixbios_virt_to_bus .long _pcixbios_bus_to_virt .long _pcixbios_virt_to_phys .long _pcixbios_phys_to_virt aranym-1.1.0/atari/nfpci/nfpci_nfapi.h0000664000175000017500000000400413454637621016023 0ustar joyjoy/* NatFeat host PCI access ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFPCI_NFAPI_H #define NFPCI_NFAPI_H /* if you change anything in the enum {} below you have to increase this ARANFPCI_NFAPI_VERSION! */ #define ARANFPCI_NFAPI_VERSION 0x00000000 enum { GET_VERSION = 0, /* no parameters, return NFAPI_VERSION in d0 */ NFPCI_FIND_DEVICE, NFPCI_FIND_CLASSCODE, NFPCI_READ_CONFIG_BYTE, NFPCI_READ_CONFIG_WORD, NFPCI_READ_CONFIG_LONG, NFPCI_READ_CONFIG_BYTE_FAST, NFPCI_READ_CONFIG_WORD_FAST, NFPCI_READ_CONFIG_LONG_FAST, NFPCI_WRITE_CONFIG_BYTE, NFPCI_WRITE_CONFIG_WORD, NFPCI_WRITE_CONFIG_LONG, NFPCI_HOOK_INTERRUPT, NFPCI_UNHOOK_INTERRUPT, NFPCI_SPECIAL_CYCLE, NFPCI_GET_RESOURCE, NFPCI_GET_CARD_USED, NFPCI_SET_CARD_USED, NFPCI_READ_MEM_BYTE, NFPCI_READ_MEM_WORD, NFPCI_READ_MEM_LONG, NFPCI_READ_MEM_BYTE_FAST, NFPCI_READ_MEM_WORD_FAST, NFPCI_READ_MEM_LONG_FAST, NFPCI_WRITE_MEM_BYTE, NFPCI_WRITE_MEM_WORD, NFPCI_WRITE_MEM_LONG, NFPCI_READ_IO_BYTE, NFPCI_READ_IO_WORD, NFPCI_READ_IO_LONG, NFPCI_READ_IO_BYTE_FAST, NFPCI_READ_IO_WORD_FAST, NFPCI_READ_IO_LONG_FAST, NFPCI_WRITE_IO_BYTE, NFPCI_WRITE_IO_WORD, NFPCI_WRITE_IO_LONG, NFPCI_GET_MACHINE_ID, NFPCI_GET_PAGESIZE, NFPCI_VIRT_TO_BUS, NFPCI_BUS_TO_VIRT, NFPCI_VIRT_TO_PHYS, NFPCI_PHYS_TO_VIRT }; #define NFPCI(a) (nfPciId + a) #endif /* NFCDROM_NFAPI_H */ aranym-1.1.0/atari/nfpci/nfpci_cookie.h0000664000175000017500000000171313454637621016203 0ustar joyjoy/* NatFeat host PCI driver, cookie management ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFPCI_COOKIE_H #define NFPCI_COOKIE_H int cookie_present(unsigned long cookie, unsigned long *value); int cookie_add(unsigned long cookie, unsigned long value); #endif /* NFPCI_COOKIE_H */ aranym-1.1.0/atari/nfpci/nfpci_cookie.c0000664000175000017500000000421513454637621016176 0ustar joyjoy/* NatFeat host PCI driver, cookie management ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Includes ---*/ #include #include #include #include /*--- Defines ---*/ #ifndef C_NULL #define C_NULL 0x4e554c4cL #endif /*--- Functions ---*/ static unsigned long *read_cookie_jar_pointer(void) { unsigned long *cookie_jar; void *old_stack=NULL; int super_flag; /* Check if already in supervisor mode */ super_flag = (int) Super((void *)1); if (!super_flag) { old_stack=(void *)Super(NULL); } cookie_jar= (unsigned long *) *_p_cookies; if (!super_flag) { Super(old_stack); } return (cookie_jar); } int cookie_present(unsigned long cookie, unsigned long *value) { unsigned long *cookie_jar; cookie_jar = read_cookie_jar_pointer(); if (cookie_jar == NULL) { return 0; } while (*cookie_jar != 0) { if (*cookie_jar == cookie) { if (value) *value = cookie_jar[1]; return 1; } cookie_jar+=2; } return 0; } int cookie_add(unsigned long cookie, unsigned long value) { unsigned long *cookie_jar; unsigned long count; cookie_jar = read_cookie_jar_pointer(); if (cookie_jar == NULL) { return 0; } count=0; while (*cookie_jar != 0) { cookie_jar += 2; count++; } /* Is there enough space ? */ if (cookie_jar[1]>count) { cookie_jar[2] = 0; cookie_jar[3] = cookie_jar[1]; cookie_jar[0] = cookie; cookie_jar[1] = value; return 1; } /* Not enough space in cookie jar */ return 0; } aranym-1.1.0/atari/nfpci/nfpci_bios.h0000664000175000017500000001120313454637621015661 0ustar joyjoy/* NatFeat host PCI driver, _PCI cookie functions ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFPCI_BIOS_H #define NFPCI_BIOS_H long pcibios_find_device(unsigned long device_vendor_id, unsigned short index); long pcibios_find_classcode(unsigned long class_code, unsigned short index); long pcibios_read_config_byte(unsigned long device_handle, void *data, unsigned char num_register); long pcibios_read_config_word(unsigned long device_handle, void *data, unsigned char num_register); long pcibios_read_config_long(unsigned long device_handle, void *data, unsigned char num_register); unsigned char pcibios_read_config_byte_fast(unsigned long device_handle, unsigned char num_register); unsigned short pcibios_read_config_word_fast(unsigned long device_handle, unsigned char num_register); unsigned long pcibios_read_config_long_fast(unsigned long device_handle, unsigned char num_register); long pcibios_write_config_byte(unsigned long device_handle, unsigned char num_register, unsigned char value); long pcibios_write_config_word(unsigned long device_handle, unsigned char num_register, unsigned short value); long pcibios_write_config_long(unsigned long device_handle, unsigned char num_register, unsigned long value); long pcibios_hook_interrupt(unsigned long device_handle, void (*data)(), unsigned long parameter); long pcibios_unhook_interrupt(unsigned long device_handle); long pcibios_special_cycle(unsigned char num_bus, unsigned long data); long pcibios_get_routing(void); /* unimplemented */ long pcibios_set_interrupt(void); /* unimplemented */ long pcibios_get_resource(unsigned long device_handle); long pcibios_get_card_used(unsigned long device_handle, unsigned long *callback); long pcibios_set_card_used(unsigned long device_handle, unsigned long callback); long pcibios_read_mem_byte(unsigned long device_handle, unsigned long pci_address, unsigned char *data); long pcibios_read_mem_word(unsigned long device_handle, unsigned long pci_address, unsigned short *data); long pcibios_read_mem_long(unsigned long device_handle, unsigned long pci_address, unsigned long *data); unsigned char pcibios_read_mem_byte_fast(unsigned long device_handle, unsigned long pci_address); unsigned short pcibios_read_mem_word_fast(unsigned long device_handle, unsigned long pci_address); unsigned long pcibios_read_mem_long_fast(unsigned long device_handle, unsigned long pci_address); long pcibios_write_mem_byte(unsigned long device_handle, unsigned long pci_address, unsigned char value); long pcibios_write_mem_word(unsigned long device_handle, unsigned long pci_address, unsigned short value); long pcibios_write_mem_long(unsigned long device_handle, unsigned long pci_address, unsigned long value); long pcibios_read_io_byte(unsigned long device_handle, unsigned long pci_address, unsigned char *data); long pcibios_read_io_word(unsigned long device_handle, unsigned long pci_address, unsigned short *data); long pcibios_read_io_long(unsigned long device_handle, unsigned long pci_address, unsigned long *data); unsigned char pcibios_read_io_byte_fast(unsigned long device_handle, unsigned long pci_address); unsigned short pcibios_read_io_word_fast(unsigned long device_handle, unsigned long pci_address); unsigned long pcibios_read_io_long_fast(unsigned long device_handle, unsigned long pci_address); long pcibios_write_io_byte(unsigned long device_handle, unsigned long pci_address, unsigned char value); long pcibios_write_io_word(unsigned long device_handle, unsigned long pci_address, unsigned short value); long pcibios_write_io_long(unsigned long device_handle, unsigned long pci_address, unsigned long value); long pcibios_get_machine_id(void); unsigned long pcibios_get_pagesize(void); long pcibios_virt_to_bus(unsigned long device_handle, void *virt_cpu_address, void *data); long pcibios_bus_to_virt(unsigned long device_handle, unsigned long pci_address, void *data); long pcibios_virt_to_phys(void *virt_cpu_address, void *data); long pcibios_phys_to_virt(void *phys_cpu_address, void *data); #endif /* NFPCI_BIOS_H */ aranym-1.1.0/atari/nfpci/nfpci_bios.S0000664000175000017500000001477613454637621015656 0ustar joyjoy/* NatFeat host PCI driver, _PCI cookie with function pointers ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ .globl _pcibios_find_device, _pcibios_find_classcode .globl _pcibios_read_config_byte, _pcibios_read_config_word .globl _pcibios_read_config_long, _pcibios_read_config_byte_fast .globl _pcibios_read_config_word_fast, _pcibios_read_config_long_fast .globl _pcibios_write_config_byte, _pcibios_write_config_word .globl _pcibios_write_config_long, _pcibios_hook_interrupt .globl _pcibios_unhook_interrupt, _pcibios_special_cycle .globl _pcibios_get_routing, _pcibios_set_interrupt .globl _pcibios_get_resource, _pcibios_get_card_used .globl _pcibios_set_card_used, _pcibios_read_mem_byte .globl _pcibios_read_mem_word, _pcibios_read_mem_long .globl _pcibios_read_mem_byte_fast, _pcibios_read_mem_word_fast .globl _pcibios_read_mem_long_fast, _pcibios_write_mem_byte .globl _pcibios_write_mem_word, _pcibios_write_mem_long .globl _pcibios_read_io_byte, _pcibios_read_io_word .globl _pcibios_read_io_long, _pcibios_read_io_byte_fast .globl _pcibios_read_io_word_fast, _pcibios_read_io_long_fast .globl _pcibios_write_io_byte, _pcibios_write_io_word .globl _pcibios_write_io_long, _pcibios_get_machine_id .globl _pcibios_get_pagesize, _pcibios_virt_to_bus .globl _pcibios_bus_to_virt, _pcibios_virt_to_phys .globl _pcibios_phys_to_virt .text _pcibios_find_device: andl #0xffff,d1 movl d1,sp@- movl d0,sp@- bsr _find_device addql #8,sp rts _pcibios_find_classcode: andl #0xffff,d1 movl d1,sp@- movl d0,sp@- bsr _find_classcode addql #8,sp rts _pcibios_read_config_byte: andl #0xff,d1 movl d1,sp@- movl a0,sp@- movl d0,sp@- bsr _read_config_byte lea sp@(12),sp rts _pcibios_read_config_word: andl #0xff,d1 movl d1,sp@- movl a0,sp@- movl d0,sp@- bsr _read_config_word lea sp@(12),sp rts _pcibios_read_config_long: andl #0xff,d1 movl d1,sp@- movl a0,sp@- movl d0,sp@- bsr _read_config_long lea sp@(12),sp rts _pcibios_read_config_byte_fast: andl #0xff,d1 movl d1,sp@- movl d0,sp@- bsr _read_config_byte_fast addql #8,sp rts _pcibios_read_config_word_fast: andl #0xff,d1 movl d1,sp@- movl d0,sp@- bsr _read_config_word_fast addql #8,sp rts _pcibios_read_config_long_fast: andl #0xff,d1 movl d1,sp@- movl d0,sp@- bsr _read_config_long_fast addql #8,sp rts _pcibios_write_config_byte: andl #0xff,d2 movl d2,sp@- andl #0xff,d1 movl d1,sp@- movl d0,sp@- bsr _write_config_byte lea sp@(12),sp rts _pcibios_write_config_word: andl #0xffff,d2 movl d2,sp@- andl #0xff,d1 movl d1,sp@- movl d0,sp@- bsr _write_config_word lea sp@(12),sp rts _pcibios_write_config_long: movl d2,sp@- andl #0xff,d1 movl d1,sp@- movl d0,sp@- bsr _write_config_long lea sp@(12),sp rts _pcibios_hook_interrupt: movl a1,sp@- movl a0,sp@- movl d0,sp@- bsr _hook_interrupt lea sp@(12),sp rts _pcibios_unhook_interrupt: movl d0,sp@- bsr _unhook_interrupt addql #4,sp rts _pcibios_special_cycle: movl d1,sp@- andl #0xff,d0 movl d0,sp@- bsr _special_cycle addql #8,sp rts _pcibios_get_routing: movel #0xfffffff8,d0 /* PCI_GENERAL_ERROR */ rts _pcibios_set_interrupt: movel #0xfffffff8,d0 /* PCI_GENERAL_ERROR */ rts _pcibios_get_resource: movl d0,sp@- bsr _get_resource addql #4,sp rts _pcibios_get_card_used: movl a0,sp@- movl d0,sp@- bsr _get_card_used addql #8,sp rts _pcibios_set_card_used: movl a0,sp@- movl d0,sp@- bsr _set_card_used addql #8,sp rts _pcibios_read_mem_byte: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _read_mem_byte lea sp@(12),sp rts _pcibios_read_mem_word: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _read_mem_word lea sp@(12),sp rts _pcibios_read_mem_long: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _read_mem_long lea sp@(12),sp rts _pcibios_read_mem_byte_fast: movl d1,sp@- movl d0,sp@- bsr _read_mem_byte_fast addql #8,sp rts _pcibios_read_mem_word_fast: movl d1,sp@- movl d0,sp@- bsr _read_mem_word_fast addql #8,sp rts _pcibios_read_mem_long_fast: movl d1,sp@- movl d0,sp@- bsr _read_mem_long_fast addql #8,sp rts _pcibios_write_mem_byte: andl #0xff,d2 movl d2,sp@- movl d1,sp@- movl d0,sp@- bsr _write_mem_byte lea sp@(12),sp rts _pcibios_write_mem_word: andl #0xffff,d2 movl d2,sp@- movl d1,sp@- movl d0,sp@- bsr _write_mem_word lea sp@(12),sp rts _pcibios_write_mem_long: movl d2,sp@- movl d1,sp@- movl d0,sp@- bsr _write_mem_long lea sp@(12),sp rts _pcibios_read_io_byte: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _read_io_byte lea sp@(12),sp rts _pcibios_read_io_word: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _read_io_word lea sp@(12),sp rts _pcibios_read_io_long: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _read_io_long lea sp@(12),sp rts _pcibios_read_io_byte_fast: movl d1,sp@- movl d0,sp@- bsr _read_io_byte_fast addql #8,sp rts _pcibios_read_io_word_fast: movl d1,sp@- movl d0,sp@- bsr _read_io_word_fast addql #8,sp rts _pcibios_read_io_long_fast: movl d1,sp@- movl d0,sp@- bsr _read_io_long_fast addql #8,sp rts _pcibios_write_io_byte: andl #0xff,d2 movl d2,sp@- movl d1,sp@- movl d0,sp@- bsr _write_io_byte lea sp@(12),sp rts _pcibios_write_io_word: andl #0xffff,d2 movl d2,sp@- movl d1,sp@- movl d0,sp@- bsr _write_io_word lea sp@(12),sp rts _pcibios_write_io_long: movl d2,sp@- movl d1,sp@- movl d0,sp@- bsr _write_io_long lea sp@(12),sp rts _pcibios_get_machine_id: bsr _get_machine_id rts _pcibios_get_pagesize: bsr _get_pagesize rts _pcibios_virt_to_bus: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _virt_to_bus lea sp@(12),sp rts _pcibios_bus_to_virt: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _bus_to_virt lea sp@(12),sp rts _pcibios_virt_to_phys: movl a0,sp@- movl d0,sp@- bsr _bus_to_virt addql #8,sp rts _pcibios_phys_to_virt: movl a0,sp@- movl d0,sp@- bsr _bus_to_virt addql #8,sp rts aranym-1.1.0/atari/nfpci/nfpci.h0000664000175000017500000001043513454637621014653 0ustar joyjoy/* NatFeat host PCI driver ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFPCI_H #define NFPCI_H /* Functions called by each PCIBIOS backend (_PCI via cookie, XPCI via Xbios */ long find_device(unsigned long device_vendor_id, unsigned long index); long find_classcode(unsigned long class_code, unsigned long index); long read_config_byte(unsigned long device_handle, void *data, unsigned long num_register); long read_config_word(unsigned long device_handle, void *data, unsigned long num_register); long read_config_long(unsigned long device_handle, void *data, unsigned long num_register); unsigned char read_config_byte_fast(unsigned long device_handle, unsigned long num_register); unsigned short read_config_word_fast(unsigned long device_handle, unsigned long num_register); unsigned long read_config_long_fast(unsigned long device_handle, unsigned long num_register); long write_config_byte(unsigned long device_handle, unsigned long num_register, unsigned long value); long write_config_word(unsigned long device_handle, unsigned long num_register, unsigned long value); long write_config_long(unsigned long device_handle, unsigned long num_register, unsigned long value); long hook_interrupt(unsigned long device_handle, void (*data)(), unsigned long parameter); long unhook_interrupt(unsigned long device_handle); long special_cycle(unsigned long num_bus, unsigned long data); /* get_routing */ /* set_interrupt */ long get_resource(unsigned long device_handle); long get_card_used(unsigned long device_handle, unsigned long *callback); long set_card_used(unsigned long device_handle, unsigned long callback); long read_mem_byte(unsigned long device_handle, unsigned long pci_address, unsigned char *data); long read_mem_word(unsigned long device_handle, unsigned long pci_address, unsigned short *data); long read_mem_long(unsigned long device_handle, unsigned long pci_address, unsigned long *data); unsigned char read_mem_byte_fast(unsigned long device_handle, unsigned long pci_address); unsigned short read_mem_word_fast(unsigned long device_handle, unsigned long pci_address); unsigned long read_mem_long_fast(unsigned long device_handle, unsigned long pci_address); long write_mem_byte(unsigned long device_handle, unsigned long pci_address, unsigned long value); long write_mem_word(unsigned long device_handle, unsigned long pci_address, unsigned long value); long write_mem_long(unsigned long device_handle, unsigned long pci_address, unsigned long value); long read_io_byte(unsigned long device_handle, unsigned long pci_address, unsigned char *data); long read_io_word(unsigned long device_handle, unsigned long pci_address, unsigned short *data); long read_io_long(unsigned long device_handle, unsigned long pci_address, unsigned long *data); unsigned char read_io_byte_fast(unsigned long device_handle, unsigned long pci_address); unsigned short read_io_word_fast(unsigned long device_handle, unsigned long pci_address); unsigned long read_io_long_fast(unsigned long device_handle, unsigned long pci_address); long write_io_byte(unsigned long device_handle, unsigned long pci_address, unsigned long value); long write_io_word(unsigned long device_handle, unsigned long pci_address, unsigned long value); long write_io_long(unsigned long device_handle, unsigned long pci_address, unsigned long value); long get_machine_id(void); unsigned long get_pagesize(void); long virt_to_bus(unsigned long device_handle, void *virt_cpu_address, void *data); long bus_to_virt(unsigned long device_handle, unsigned long pci_address, void *data); long virt_to_phys(void *virt_cpu_address, void *data); long phys_to_virt(void *phys_cpu_address, void *data); #endif /* NFPCI_H */ aranym-1.1.0/atari/nfpci/nfpci.c0000664000175000017500000002776013454637621014657 0ustar joyjoy/* NatFeat host PCI driver ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Include ---*/ #include #include #include #include #include "../natfeat/nf_ops.h" #include "nfpci_nfapi.h" #include "nfpci.h" #include "nfpci_bios.h" #include "nfpci_cookie.h" /*--- Defines ---*/ #ifndef C_XPCI #define C_XPCI 0x58504349L #endif #ifndef C__PCI #define C__PCI 0x5f504349L #endif #ifndef VEC_XBIOS #define VEC_XBIOS 0x2e #endif #ifndef DEV_CONSOLE #define DEV_CONSOLE 2 #endif #define DRIVER_NAME "ARAnyM host PCI driver" #define VERSION "v0.4" /*--- Types ---*/ typedef void (*pcibios_routine_t)(void); typedef struct { unsigned long *subcookie; unsigned long version; pcibios_routine_t routines[43]; } __attribute__((packed)) pcibios_cookie_t; /*--- Local variables ---*/ static unsigned long nfPciId; static pcibios_cookie_t pcibios_cookie={ 0, 0x00010000, { (pcibios_routine_t) pcibios_find_device, (pcibios_routine_t) pcibios_find_classcode, (pcibios_routine_t) pcibios_read_config_byte, (pcibios_routine_t) pcibios_read_config_word, (pcibios_routine_t) pcibios_read_config_long, (pcibios_routine_t) pcibios_read_config_byte_fast, (pcibios_routine_t) pcibios_read_config_word_fast, (pcibios_routine_t) pcibios_read_config_long_fast, (pcibios_routine_t) pcibios_write_config_byte, (pcibios_routine_t) pcibios_write_config_word, (pcibios_routine_t) pcibios_write_config_long, (pcibios_routine_t) pcibios_hook_interrupt, (pcibios_routine_t) pcibios_unhook_interrupt, (pcibios_routine_t) pcibios_special_cycle, (pcibios_routine_t) pcibios_get_routing, /* unimplemented */ (pcibios_routine_t) pcibios_set_interrupt, /* unimplemented */ (pcibios_routine_t) pcibios_get_resource, (pcibios_routine_t) pcibios_get_card_used, (pcibios_routine_t) pcibios_set_card_used, (pcibios_routine_t) pcibios_read_mem_byte, (pcibios_routine_t) pcibios_read_mem_word, (pcibios_routine_t) pcibios_read_mem_long, (pcibios_routine_t) pcibios_read_mem_byte_fast, (pcibios_routine_t) pcibios_read_mem_word_fast, (pcibios_routine_t) pcibios_read_mem_long_fast, (pcibios_routine_t) pcibios_write_mem_byte, (pcibios_routine_t) pcibios_write_mem_word, (pcibios_routine_t) pcibios_write_mem_long, (pcibios_routine_t) pcibios_read_io_byte, (pcibios_routine_t) pcibios_read_io_word, (pcibios_routine_t) pcibios_read_io_long, (pcibios_routine_t) pcibios_read_io_byte_fast, (pcibios_routine_t) pcibios_read_io_word_fast, (pcibios_routine_t) pcibios_read_io_long_fast, (pcibios_routine_t) pcibios_write_io_byte, (pcibios_routine_t) pcibios_write_io_word, (pcibios_routine_t) pcibios_write_io_long, (pcibios_routine_t) pcibios_get_machine_id, (pcibios_routine_t) pcibios_get_pagesize, (pcibios_routine_t) pcibios_virt_to_bus, (pcibios_routine_t) pcibios_bus_to_virt, (pcibios_routine_t) pcibios_virt_to_phys, (pcibios_routine_t) pcibios_phys_to_virt } }; /*--- External variables ---*/ extern void pcixbios_newtrap(void); extern void (*pcixbios_oldtrap)(void); /*--- Functions prototypes ---*/ static const struct nf_ops *nfOps; static void install_pci_bios(void); static void install_pci_xbios(void); static void press_any_key(void); /*--- Functions ---*/ void install_driver(unsigned long resident_length) { Cconws( "\033p " DRIVER_NAME " " VERSION " \033q\r\n" "Copyright (c) ARAnyM Development Team, " __DATE__ "\r\n" ); /* Check if a PCI driver is not already installed */ if (cookie_present(C_XPCI, NULL)) { Cconws("A XPCI driver is already installed on this system\r\n"); press_any_key(); return; } if (cookie_present(C__PCI, NULL)) { Cconws("A _PCI driver is already installed on this system\r\n"); press_any_key(); return; } /* Check if NF is present for PCI */ nfOps = nf_init(); if (!nfOps) { Cconws("Native Features not present on this system\r\n"); press_any_key(); return; } nfPciId = nfOps->get_id("PCI"); if (nfPciId==0) { Cconws("NF PCI functions not present on this system\r\n"); press_any_key(); return; } /* Cookie with structure that holds function pointers */ install_pci_bios(); /* XBIOS functions */ install_pci_xbios(); Ptermres(resident_length, 0); for(;;); /* Never ending loop, should not go there */ } static void press_any_key(void) { Cconws("- Press any key to continue -\r\n"); Crawcin(); } static void install_pci_bios(void) { /* Add our cookie */ cookie_add(C__PCI, (unsigned long)&pcibios_cookie); } static void install_pci_xbios(void) { /* Read old XBIOS trap handler, and install ours */ pcixbios_oldtrap = Setexc(VEC_XBIOS, pcixbios_newtrap); cookie_add(C_XPCI, 0); } /* NF PCI functions */ long find_device(unsigned long device_vendor_id, unsigned long index) { return nfOps->call(NFPCI(NFPCI_FIND_DEVICE), device_vendor_id, index); } long find_classcode(unsigned long class_code, unsigned long index) { return nfOps->call(NFPCI(NFPCI_FIND_CLASSCODE), class_code, index); } long read_config_byte(unsigned long device_handle, void *data, unsigned long num_register) { return nfOps->call(NFPCI(NFPCI_READ_CONFIG_BYTE), device_handle, data, num_register); } long read_config_word(unsigned long device_handle, void *data, unsigned long num_register) { return nfOps->call(NFPCI(NFPCI_READ_CONFIG_WORD), device_handle, data, num_register); } long read_config_long(unsigned long device_handle, void *data, unsigned long num_register) { return nfOps->call(NFPCI(NFPCI_READ_CONFIG_LONG), device_handle, data, num_register); } unsigned char read_config_byte_fast(unsigned long device_handle, unsigned long num_register) { return nfOps->call(NFPCI(NFPCI_READ_CONFIG_BYTE_FAST), device_handle, num_register); } unsigned short read_config_word_fast(unsigned long device_handle, unsigned long num_register) { return nfOps->call(NFPCI(NFPCI_READ_CONFIG_WORD_FAST), device_handle, num_register); } unsigned long read_config_long_fast(unsigned long device_handle, unsigned long num_register) { return nfOps->call(NFPCI(NFPCI_READ_CONFIG_LONG_FAST), device_handle, num_register); } long write_config_byte(unsigned long device_handle, unsigned long num_register, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_CONFIG_BYTE), device_handle, num_register, value); } long write_config_word(unsigned long device_handle, unsigned long num_register, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_CONFIG_WORD), device_handle, num_register, value); } long write_config_long(unsigned long device_handle, unsigned long num_register, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_CONFIG_LONG), device_handle, num_register, value); } long hook_interrupt(unsigned long device_handle, void (*data)(), unsigned long parameter) { return nfOps->call(NFPCI(NFPCI_HOOK_INTERRUPT), device_handle, data, parameter); } long unhook_interrupt(unsigned long device_handle) { return nfOps->call(NFPCI(NFPCI_UNHOOK_INTERRUPT), device_handle); } long special_cycle(unsigned long num_bus, unsigned long data) { return nfOps->call(NFPCI(NFPCI_SPECIAL_CYCLE), num_bus, data); } /* get_routing */ /* set_interrupt */ long get_resource(unsigned long device_handle) { return nfOps->call(NFPCI(NFPCI_GET_RESOURCE), device_handle); } long get_card_used(unsigned long device_handle, unsigned long *callback) { return nfOps->call(NFPCI(NFPCI_GET_CARD_USED), device_handle, callback); } long set_card_used(unsigned long device_handle, unsigned long callback) { return nfOps->call(NFPCI(NFPCI_SET_CARD_USED), device_handle, callback); } long read_mem_byte(unsigned long device_handle, unsigned long pci_address, unsigned char *data) { return nfOps->call(NFPCI(NFPCI_READ_MEM_BYTE), device_handle, pci_address, data); } long read_mem_word(unsigned long device_handle, unsigned long pci_address, unsigned short *data) { return nfOps->call(NFPCI(NFPCI_READ_MEM_WORD), device_handle, pci_address, data); } long read_mem_long(unsigned long device_handle, unsigned long pci_address, unsigned long *data) { return nfOps->call(NFPCI(NFPCI_READ_MEM_LONG), device_handle, pci_address, data); } unsigned char read_mem_byte_fast(unsigned long device_handle, unsigned long pci_address) { return nfOps->call(NFPCI(NFPCI_READ_MEM_BYTE_FAST), device_handle, pci_address); } unsigned short read_mem_word_fast(unsigned long device_handle, unsigned long pci_address) { return nfOps->call(NFPCI(NFPCI_READ_MEM_WORD_FAST), device_handle, pci_address); } unsigned long read_mem_long_fast(unsigned long device_handle, unsigned long pci_address) { return nfOps->call(NFPCI(NFPCI_READ_MEM_LONG_FAST), device_handle, pci_address); } long write_mem_byte(unsigned long device_handle, unsigned long pci_address, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_MEM_BYTE), device_handle, pci_address, value); } long write_mem_word(unsigned long device_handle, unsigned long pci_address, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_MEM_WORD), device_handle, pci_address, value); } long write_mem_long(unsigned long device_handle, unsigned long pci_address, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_MEM_LONG), device_handle, pci_address, value); } long read_io_byte(unsigned long device_handle, unsigned long pci_address, unsigned char *data) { return nfOps->call(NFPCI(NFPCI_READ_IO_BYTE), device_handle, pci_address, data); } long read_io_word(unsigned long device_handle, unsigned long pci_address, unsigned short *data) { return nfOps->call(NFPCI(NFPCI_READ_IO_WORD), device_handle, pci_address, data); } long read_io_long(unsigned long device_handle, unsigned long pci_address, unsigned long *data) { return nfOps->call(NFPCI(NFPCI_READ_IO_LONG), device_handle, pci_address, data); } unsigned char read_io_byte_fast(unsigned long device_handle, unsigned long pci_address) { return nfOps->call(NFPCI(NFPCI_READ_IO_BYTE_FAST), device_handle, pci_address); } unsigned short read_io_word_fast(unsigned long device_handle, unsigned long pci_address) { return nfOps->call(NFPCI(NFPCI_READ_IO_WORD_FAST), device_handle, pci_address); } unsigned long read_io_long_fast(unsigned long device_handle, unsigned long pci_address) { return nfOps->call(NFPCI(NFPCI_READ_IO_LONG_FAST), device_handle, pci_address); } long write_io_byte(unsigned long device_handle, unsigned long pci_address, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_IO_BYTE), device_handle, pci_address, value); } long write_io_word(unsigned long device_handle, unsigned long pci_address, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_IO_WORD), device_handle, pci_address, value); } long write_io_long(unsigned long device_handle, unsigned long pci_address, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_IO_LONG), device_handle, pci_address, value); } long get_machine_id(void) { return nfOps->call(NFPCI(NFPCI_GET_MACHINE_ID)); } unsigned long get_pagesize(void) { return nfOps->call(NFPCI(NFPCI_GET_PAGESIZE)); } long virt_to_bus(unsigned long device_handle, void *virt_cpu_address, void *data) { return nfOps->call(NFPCI(NFPCI_VIRT_TO_BUS), device_handle, virt_cpu_address, data); } long bus_to_virt(unsigned long device_handle, unsigned long pci_address, void *data) { return nfOps->call(NFPCI(NFPCI_BUS_TO_VIRT), device_handle, pci_address, data); } long virt_to_phys(void *virt_cpu_address, void *data) { return nfOps->call(NFPCI(NFPCI_VIRT_TO_PHYS), virt_cpu_address, data); } long phys_to_virt(void *phys_cpu_address, void *data) { return nfOps->call(NFPCI(NFPCI_PHYS_TO_VIRT), phys_cpu_address, data); } aranym-1.1.0/atari/nfpci/entry.S0000664000175000017500000000221313454637621014663 0ustar joyjoy/* NatFeat host PCI driver ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ .globl _init_driver, _install_driver .text /* Calculate length to keep resident */ _init_driver: movl sp@(4),a0 /* Read basepage pointer */ movl #0x100.w,d0 /* Length of basepage */ addl a0@(12),d0 /* Add TEXT length */ addl a0@(20),d0 /* Add DATA length */ addl a0@(28),d0 /* Add BSS length */ movl d0,sp@- bsr _install_driver addql #4,sp clrw sp@- /* If any error, quit program */ trap #1 aranym-1.1.0/atari/nfpci/Makefile0000664000175000017500000000077213454637621015046 0ustar joyjoy TARGET = nfpci.prg COBJS = nfpci.c nfpci_cookie.c ../natfeat/natfeat.c SOBJS = entry.S nfpci_bios.S nfpci_xbios.S ../natfeat/natfeat_asm.S include ../CONFIGVARS CFLAGS = -O2 -fomit-frame-pointer -Wall ASFLAGS = -m68020 LDFLAGS = -nostdlib -Wl,--entry -Wl,_init_driver -lgcc -lc COBJECTS = $(COBJS:.c=.o) SOBJECTS = $(SOBJS:.S=.o) all: $(TARGET) $(TARGET): $(COBJECTS) $(SOBJECTS) ${CC} -o $@ $(COBJECTS) $(SOBJECTS) ${LDFLAGS} ${STRIP} $(TARGET) clean: rm -f $(COBJECTS) $(SOBJECTS) $(TARGET) aranym-1.1.0/atari/nfosmesa/0000775000175000017500000000000013454637621014114 5ustar joyjoyaranym-1.1.0/atari/nfosmesa/versinfo.h0000664000175000017500000000377213454637621016131 0ustar joyjoy#if defined(__TOS__) && !defined(__mc68000__) # define __mc68000__ 1 #endif #if defined(__COLDFIRE__) && !defined(__mcoldfire__) # define __mcoldfire__ 1 #endif #if (defined(__68881__) || defined(_M68881) || defined(__M68881__)) && !defined(__HAVE_68881__) # define __HAVE_68881__ 1 #endif /* Note: PureC until version 2.50 does not define any symbol when using -2 or better, you will have to do that in the Project/Makefile */ #if (defined(mc68020) || defined(__68020__) || defined(__M68020__)) && !defined(__mc68020__) # define __mc68020__ 1 #endif #if (defined(mc68030) || defined(__68030__) || defined(__M68030__)) && !defined(__mc68030__) # define __mc68030__ 1 #endif #if (defined(mc68040) || defined(__68040__) || defined(__M68040__)) && !defined(__mc68040__) # define __mc68040__ 1 #endif #if (defined(mc68060) || defined(__68060__) || defined(__M68060__)) && !defined(__mc68060__) # define __mc68060__ 1 #endif #if defined(__mcoldfire__) #define ASCII_ARCH_TARGET "coldfire" #elif defined(__mc68060__) #ifdef __mc68020__ #define ASCII_ARCH_TARGET "m68020-060" #else #define ASCII_ARCH_TARGET "m68060" #endif #elif defined(__mc68040__) #define ASCII_ARCH_TARGET "m68040" #elif defined(__mc68030__) #ifdef __HAVE_68881__ #define ASCII_ARCH_TARGET "m68030+881" #else #define ASCII_ARCH_TARGET "m68030" #endif #elif defined(__mc68020__) #define ASCII_ARCH_TARGET "m68020" #elif defined(__mc68010__) #define ASCII_ARCH_TARGET "m68010" #elif defined(__mc68000__) #define ASCII_ARCH_TARGET "m68000" #else #define ASCII_ARCH_TARGET "unknown 68k" #endif #if defined __GNUC__ # define ASCII_COMPILER "GNU-C " __STRINGIFY(__GNUC__) "." __STRINGIFY(__GNUC_MINOR__) "." __STRINGIFY(__GNUC_PATCHLEVEL__) #elif defined (__AHCC__) # define ASCII_COMPILER "AHCC " __STRINGIFY(__AHCC__) #elif defined (__PUREC__) # define ASCII_COMPILER "Pure-C " __STRINGIFY(__PUREC__) #elif defined (__SOZOBONX__) # define ASCII_COMPILER "Sozobon " __STRINGIFY(__SOZOBONX__) #else # define ASCII_COMPILER "unknown compiler" #endif aranym-1.1.0/atari/nfosmesa/tinygl_loadslb.c0000664000175000017500000007261413454637621017300 0ustar joyjoy/* Bindings of tiny_gl.slb * Compile this module and link it with the application client */ #include #include #include #define NFOSMESA_NO_MANGLE #include #include #ifndef TRUE # define TRUE 1 # define FALSE 0 #endif #ifdef __PUREC__ #pragma warn -stv #endif struct _gl_tiny gl; static SLB_HANDLE gl_slb; static SLB_EXEC gl_exec; static struct gl_public *gl_pub; /* * The "nwords" argument should actually only be a "short". * MagiC will expect it that way, with the actual arguments * following. * However, a "short" in the actual function definition * will be treated as promoted to int. * So we pass a long instead, with the upper half * set to 1 + nwords to account for the extra space. * This also has the benefit of keeping the stack longword aligned. */ #undef SLB_NWORDS #define SLB_NWORDS(_nwords) ((((long)(_nwords) + 1l) << 16) | (long)(_nwords)) #undef SLB_NARGS #define SLB_NARGS(_nargs) SLB_NWORDS(_nargs * 2) #undef glClearDepth #undef glFrustum #undef glOrtho #undef gluLookAt static void APIENTRY exec_information(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1 /* */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glBegin(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2 /* NFOSMESA_GLBEGIN */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glClear(GLbitfield mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 3 /* NFOSMESA_GLCLEAR */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 4 /* NFOSMESA_GLCLEARCOLOR */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor3f(GLfloat red, GLfloat green, GLfloat blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 5 /* NFOSMESA_GLCOLOR3F */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glDisable(GLenum cap) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 6 /* NFOSMESA_GLDISABLE */, SLB_NARGS(2), gl_pub, &cap); } static void APIENTRY exec_glEnable(GLenum cap) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 7 /* NFOSMESA_GLENABLE */, SLB_NARGS(2), gl_pub, &cap); } static void APIENTRY exec_glEnd(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 8 /* NFOSMESA_GLEND */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glLightfv(GLenum light, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 9 /* NFOSMESA_GLLIGHTFV */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glLoadIdentity(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 10 /* NFOSMESA_GLLOADIDENTITY */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 11 /* NFOSMESA_GLMATERIALFV */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glMatrixMode(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 12 /* NFOSMESA_GLMATRIXMODE */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)right; (void)bottom; (void)top; (void)near_val; (void)far_val; (*exec)(gl_slb, 13 /* NFOSMESA_GLORTHOF */, SLB_NARGS(2), gl_pub, &left); } static void APIENTRY exec_glPopMatrix(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 14 /* NFOSMESA_GLPOPMATRIX */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glPushMatrix(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 15 /* NFOSMESA_GLPUSHMATRIX */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 16 /* NFOSMESA_GLROTATEF */, SLB_NARGS(2), gl_pub, &angle); } static void APIENTRY exec_glTexEnvi(GLenum target, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 17 /* NFOSMESA_GLTEXENVI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexParameteri(GLenum target, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 18 /* NFOSMESA_GLTEXPARAMETERI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTranslatef(GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 19 /* NFOSMESA_GLTRANSLATEF */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex2f(GLfloat x, GLfloat y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 20 /* NFOSMESA_GLVERTEX2F */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex3f(GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 21 /* NFOSMESA_GLVERTEX3F */, SLB_NARGS(2), gl_pub, &x); } static void * APIENTRY exec_OSMesaCreateLDG(GLenum format, GLenum type, GLint width, GLint height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)width; (void)height; return (void *)(*exec)(gl_slb, 22 /* */, SLB_NARGS(2), gl_pub, &format); } static void APIENTRY exec_OSMesaDestroyLDG(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 23 /* */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glArrayElement(GLint i) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 24 /* NFOSMESA_GLARRAYELEMENT */, SLB_NARGS(2), gl_pub, &i); } static void APIENTRY exec_glBindTexture(GLenum target, GLuint texture) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)texture; (*exec)(gl_slb, 25 /* NFOSMESA_GLBINDTEXTURE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCallList(GLuint list) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 26 /* NFOSMESA_GLCALLLIST */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_glClearDepthf(GLfloat d) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 27 /* NFOSMESA_GLCLEARDEPTHF */, SLB_NARGS(2), gl_pub, &d); } static void APIENTRY exec_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 28 /* NFOSMESA_GLCOLOR4F */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor3fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 29 /* NFOSMESA_GLCOLOR3FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor4fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 30 /* NFOSMESA_GLCOLOR4FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColorMaterial(GLenum face, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 31 /* NFOSMESA_GLCOLORMATERIAL */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 32 /* NFOSMESA_GLCOLORPOINTER */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glCullFace(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 33 /* NFOSMESA_GLCULLFACE */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDeleteTextures(GLsizei n, const GLuint *textures) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)textures; (*exec)(gl_slb, 34 /* NFOSMESA_GLDELETETEXTURES */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDisableClientState(GLenum array) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 35 /* NFOSMESA_GLDISABLECLIENTSTATE */, SLB_NARGS(2), gl_pub, &array); } static void APIENTRY exec_glEnableClientState(GLenum array) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 36 /* NFOSMESA_GLENABLECLIENTSTATE */, SLB_NARGS(2), gl_pub, &array); } static void APIENTRY exec_glEndList(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 37 /* NFOSMESA_GLENDLIST */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glEdgeFlag(GLboolean32 flag) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 38 /* NFOSMESA_GLEDGEFLAG */, SLB_NARGS(2), gl_pub, &flag); } static void APIENTRY exec_glFlush(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 39 /* NFOSMESA_GLFLUSH */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glFrontFace(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 40 /* NFOSMESA_GLFRONTFACE */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)right; (void)bottom; (void)top; (void)near_val; (void)far_val; (*exec)(gl_slb, 41 /* NFOSMESA_GLFRUSTUMF */, SLB_NARGS(2), gl_pub, &left); } static GLuint APIENTRY exec_glGenLists(GLsizei range) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLuint)(*exec)(gl_slb, 42 /* NFOSMESA_GLGENLISTS */, SLB_NARGS(2), gl_pub, &range); } static void APIENTRY exec_glGenTextures(GLsizei n, GLuint *textures) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)textures; (*exec)(gl_slb, 43 /* NFOSMESA_GLGENTEXTURES */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGetFloatv(GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 44 /* NFOSMESA_GLGETFLOATV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetIntegerv(GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 45 /* NFOSMESA_GLGETINTEGERV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glHint(GLenum target, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 46 /* NFOSMESA_GLHINT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glInitNames(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 47 /* NFOSMESA_GLINITNAMES */, SLB_NARGS(2), gl_pub, NULL); } static GLboolean APIENTRY exec_glIsList(GLuint list) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 48 /* NFOSMESA_GLISLIST */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_glLightf(GLenum light, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 49 /* NFOSMESA_GLLIGHTF */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glLightModeli(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 50 /* NFOSMESA_GLLIGHTMODELI */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glLightModelfv(GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 51 /* NFOSMESA_GLLIGHTMODELFV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glLoadMatrixf(const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 52 /* NFOSMESA_GLLOADMATRIXF */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glLoadName(GLuint name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 53 /* NFOSMESA_GLLOADNAME */, SLB_NARGS(2), gl_pub, &name); } static void APIENTRY exec_glMaterialf(GLenum face, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 54 /* NFOSMESA_GLMATERIALF */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glMultMatrixf(const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 55 /* NFOSMESA_GLMULTMATRIXF */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glNewList(GLuint list, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 56 /* NFOSMESA_GLNEWLIST */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ny; (void)nz; (*exec)(gl_slb, 57 /* NFOSMESA_GLNORMAL3F */, SLB_NARGS(2), gl_pub, &nx); } static void APIENTRY exec_glNormal3fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 58 /* NFOSMESA_GLNORMAL3FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)pointer; (*exec)(gl_slb, 59 /* NFOSMESA_GLNORMALPOINTER */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glPixelStorei(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 60 /* NFOSMESA_GLPIXELSTOREI */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPolygonMode(GLenum face, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 61 /* NFOSMESA_GLPOLYGONMODE */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glPolygonOffset(GLfloat factor, GLfloat units) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)units; (*exec)(gl_slb, 62 /* NFOSMESA_GLPOLYGONOFFSET */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glPopName(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 63 /* NFOSMESA_GLPOPNAME */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glPushName(GLuint name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 64 /* NFOSMESA_GLPUSHNAME */, SLB_NARGS(2), gl_pub, &name); } static GLint APIENTRY exec_glRenderMode(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLint)(*exec)(gl_slb, 65 /* NFOSMESA_GLRENDERMODE */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glSelectBuffer(GLsizei size, GLuint *buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (*exec)(gl_slb, 66 /* NFOSMESA_GLSELECTBUFFER */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glScalef(GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 67 /* NFOSMESA_GLSCALEF */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glShadeModel(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 68 /* NFOSMESA_GLSHADEMODEL */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glTexCoord2f(GLfloat s, GLfloat t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (*exec)(gl_slb, 69 /* NFOSMESA_GLTEXCOORD2F */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (void)q; (*exec)(gl_slb, 70 /* NFOSMESA_GLTEXCOORD4F */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord2fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 71 /* NFOSMESA_GLTEXCOORD2FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 72 /* NFOSMESA_GLTEXCOORDPOINTER */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)width; (void)height; (void)border; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 73 /* NFOSMESA_GLTEXIMAGE2D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 74 /* NFOSMESA_GLVERTEX4F */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex3fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 75 /* NFOSMESA_GLVERTEX3FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 76 /* NFOSMESA_GLVERTEXPOINTER */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glViewport(GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)width; (void)height; (*exec)(gl_slb, 77 /* NFOSMESA_GLVIEWPORT */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_swapbuffer(void *buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 78 /* NFOSMESA_TINYGLSWAPBUFFER */, SLB_NARGS(2), gl_pub, &buffer); } static GLsizei APIENTRY exec_max_width(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLsizei)(*exec)(gl_slb, 79 /* */, SLB_NARGS(2), gl_pub, NULL); } static GLsizei APIENTRY exec_max_height(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLsizei)(*exec)(gl_slb, 80 /* */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glDeleteLists(GLuint list, GLsizei range) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)range; (*exec)(gl_slb, 81 /* NFOSMESA_GLDELETELISTS */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_gluLookAtf(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)eyeY; (void)eyeZ; (void)centerX; (void)centerY; (void)centerZ; (void)upX; (void)upY; (void)upZ; (*exec)(gl_slb, 82 /* NFOSMESA_GLULOOKATF */, SLB_NARGS(2), gl_pub, &eyeX); } static void APIENTRY exec_exception_error(void (CALLBACK *exception)(GLenum param) ) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 83 /* */, SLB_NARGS(2), gl_pub, &exception); } static void slb_init_tiny_gl(void) { struct _gl_tiny *glp = ≷ glp->information = exec_information; glp->Begin = exec_glBegin; glp->Clear = exec_glClear; glp->ClearColor = exec_glClearColor; glp->Color3f = exec_glColor3f; glp->Disable = exec_glDisable; glp->Enable = exec_glEnable; glp->End = exec_glEnd; glp->Lightfv = exec_glLightfv; glp->LoadIdentity = exec_glLoadIdentity; glp->Materialfv = exec_glMaterialfv; glp->MatrixMode = exec_glMatrixMode; glp->Orthof = exec_glOrthof; glp->PopMatrix = exec_glPopMatrix; glp->PushMatrix = exec_glPushMatrix; glp->Rotatef = exec_glRotatef; glp->TexEnvi = exec_glTexEnvi; glp->TexParameteri = exec_glTexParameteri; glp->Translatef = exec_glTranslatef; glp->Vertex2f = exec_glVertex2f; glp->Vertex3f = exec_glVertex3f; glp->OSMesaCreateLDG = exec_OSMesaCreateLDG; glp->OSMesaDestroyLDG = exec_OSMesaDestroyLDG; glp->ArrayElement = exec_glArrayElement; glp->BindTexture = exec_glBindTexture; glp->CallList = exec_glCallList; glp->ClearDepthf = exec_glClearDepthf; glp->Color4f = exec_glColor4f; glp->Color3fv = exec_glColor3fv; glp->Color4fv = exec_glColor4fv; glp->ColorMaterial = exec_glColorMaterial; glp->ColorPointer = exec_glColorPointer; glp->CullFace = exec_glCullFace; glp->DeleteTextures = exec_glDeleteTextures; glp->DisableClientState = exec_glDisableClientState; glp->EnableClientState = exec_glEnableClientState; glp->EndList = exec_glEndList; glp->EdgeFlag = exec_glEdgeFlag; glp->Flush = exec_glFlush; glp->FrontFace = exec_glFrontFace; glp->Frustumf = exec_glFrustumf; glp->GenLists = exec_glGenLists; glp->GenTextures = exec_glGenTextures; glp->GetFloatv = exec_glGetFloatv; glp->GetIntegerv = exec_glGetIntegerv; glp->Hint = exec_glHint; glp->InitNames = exec_glInitNames; glp->IsList = exec_glIsList; glp->Lightf = exec_glLightf; glp->LightModeli = exec_glLightModeli; glp->LightModelfv = exec_glLightModelfv; glp->LoadMatrixf = exec_glLoadMatrixf; glp->LoadName = exec_glLoadName; glp->Materialf = exec_glMaterialf; glp->MultMatrixf = exec_glMultMatrixf; glp->NewList = exec_glNewList; glp->Normal3f = exec_glNormal3f; glp->Normal3fv = exec_glNormal3fv; glp->NormalPointer = exec_glNormalPointer; glp->PixelStorei = exec_glPixelStorei; glp->PolygonMode = exec_glPolygonMode; glp->PolygonOffset = exec_glPolygonOffset; glp->PopName = exec_glPopName; glp->PushName = exec_glPushName; glp->RenderMode = exec_glRenderMode; glp->SelectBuffer = exec_glSelectBuffer; glp->Scalef = exec_glScalef; glp->ShadeModel = exec_glShadeModel; glp->TexCoord2f = exec_glTexCoord2f; glp->TexCoord4f = exec_glTexCoord4f; glp->TexCoord2fv = exec_glTexCoord2fv; glp->TexCoordPointer = exec_glTexCoordPointer; glp->TexImage2D = exec_glTexImage2D; glp->Vertex4f = exec_glVertex4f; glp->Vertex3fv = exec_glVertex3fv; glp->VertexPointer = exec_glVertexPointer; glp->Viewport = exec_glViewport; glp->swapbuffer = exec_swapbuffer; glp->max_width = exec_max_width; glp->max_height = exec_max_height; glp->DeleteLists = exec_glDeleteLists; glp->gluLookAtf = exec_gluLookAtf; glp->exception_error = exec_exception_error; } struct gl_public *slb_load_tiny_gl(const char *path) { long ret; size_t len; struct gl_public *pub = NULL; /* * Slbopen() checks the name of the file with the * compiled-in library name, so there is no way * to pass an alternative filename here */ ret = Slbopen("tiny_gl.slb", path, 4 /* ARANFOSMESA_NFAPI_VERSION */, &gl_slb, &gl_exec); if (ret >= 0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *))gl_exec; len = (*exec)(gl_slb, 0, SLB_NARGS(1), NULL); pub = gl_pub = (struct gl_public *)calloc(1, len); if (pub) { pub->m_alloc = malloc; pub->m_free = free; pub->libhandle = gl_slb; pub->libexec = gl_exec; (*exec)(gl_slb, 0, SLB_NARGS(1), pub); slb_init_tiny_gl(); } } return pub; } void slb_unload_tiny_gl(struct gl_public *pub) { if (pub != NULL) { if (pub->libhandle != NULL) { Slbclose(pub->libhandle); gl_slb = 0; } pub->m_free(pub); } } aranym-1.1.0/atari/nfosmesa/tinygl_load.c0000664000175000017500000003011513454637621016565 0ustar joyjoy/* Bindings of tiny_gl.ldg * Compile this module and link it with the application client */ #include #include #include #define NFOSMESA_NO_MANGLE #include #ifndef TRUE # define TRUE 1 # define FALSE 0 #endif struct _gl_tiny gl; #define GL_CHECK(x) if (x == 0) result = FALSE int ldg_init_tiny_gl(LDG *lib) { int result = TRUE; struct _gl_tiny *glp = ≷ #undef glClearDepth #undef glFrustum #undef glOrtho #undef gluLookAt glp->information = (void APIENTRY (*)(void)) ldg_find("information", lib); GL_CHECK(glp->information); glp->Begin = (void APIENTRY (*)(GLenum mode)) ldg_find("glBegin", lib); GL_CHECK(glp->Begin); glp->Clear = (void APIENTRY (*)(GLbitfield mask)) ldg_find("glClear", lib); GL_CHECK(glp->Clear); glp->ClearColor = (void APIENTRY (*)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)) ldg_find("glClearColor", lib); GL_CHECK(glp->ClearColor); glp->Color3f = (void APIENTRY (*)(GLfloat red, GLfloat green, GLfloat blue)) ldg_find("glColor3f", lib); GL_CHECK(glp->Color3f); glp->Disable = (void APIENTRY (*)(GLenum cap)) ldg_find("glDisable", lib); GL_CHECK(glp->Disable); glp->Enable = (void APIENTRY (*)(GLenum cap)) ldg_find("glEnable", lib); GL_CHECK(glp->Enable); glp->End = (void APIENTRY (*)(void)) ldg_find("glEnd", lib); GL_CHECK(glp->End); glp->Lightfv = (void APIENTRY (*)(GLenum light, GLenum pname, const GLfloat *params)) ldg_find("glLightfv", lib); GL_CHECK(glp->Lightfv); glp->LoadIdentity = (void APIENTRY (*)(void)) ldg_find("glLoadIdentity", lib); GL_CHECK(glp->LoadIdentity); glp->Materialfv = (void APIENTRY (*)(GLenum face, GLenum pname, const GLfloat *params)) ldg_find("glMaterialfv", lib); GL_CHECK(glp->Materialfv); glp->MatrixMode = (void APIENTRY (*)(GLenum mode)) ldg_find("glMatrixMode", lib); GL_CHECK(glp->MatrixMode); glp->Orthof = (void APIENTRY (*)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val)) ldg_find("glOrtho", lib); GL_CHECK(glp->Orthof); glp->PopMatrix = (void APIENTRY (*)(void)) ldg_find("glPopMatrix", lib); GL_CHECK(glp->PopMatrix); glp->PushMatrix = (void APIENTRY (*)(void)) ldg_find("glPushMatrix", lib); GL_CHECK(glp->PushMatrix); glp->Rotatef = (void APIENTRY (*)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glRotatef", lib); GL_CHECK(glp->Rotatef); glp->TexEnvi = (void APIENTRY (*)(GLenum target, GLenum pname, GLint param)) ldg_find("glTexEnvi", lib); GL_CHECK(glp->TexEnvi); glp->TexParameteri = (void APIENTRY (*)(GLenum target, GLenum pname, GLint param)) ldg_find("glTexParameteri", lib); GL_CHECK(glp->TexParameteri); glp->Translatef = (void APIENTRY (*)(GLfloat x, GLfloat y, GLfloat z)) ldg_find("glTranslatef", lib); GL_CHECK(glp->Translatef); glp->Vertex2f = (void APIENTRY (*)(GLfloat x, GLfloat y)) ldg_find("glVertex2f", lib); GL_CHECK(glp->Vertex2f); glp->Vertex3f = (void APIENTRY (*)(GLfloat x, GLfloat y, GLfloat z)) ldg_find("glVertex3f", lib); GL_CHECK(glp->Vertex3f); glp->OSMesaCreateLDG = (void * APIENTRY (*)(GLenum format, GLenum type, GLint width, GLint height)) ldg_find("OSMesaCreateLDG", lib); GL_CHECK(glp->OSMesaCreateLDG); glp->OSMesaDestroyLDG = (void APIENTRY (*)(void)) ldg_find("OSMesaDestroyLDG", lib); GL_CHECK(glp->OSMesaDestroyLDG); glp->ArrayElement = (void APIENTRY (*)(GLint i)) ldg_find("glArrayElement", lib); GL_CHECK(glp->ArrayElement); glp->BindTexture = (void APIENTRY (*)(GLenum target, GLuint texture)) ldg_find("glBindTexture", lib); GL_CHECK(glp->BindTexture); glp->CallList = (void APIENTRY (*)(GLuint list)) ldg_find("glCallList", lib); GL_CHECK(glp->CallList); glp->ClearDepthf = (void APIENTRY (*)(GLfloat d)) ldg_find("glClearDepth", lib); GL_CHECK(glp->ClearDepthf); glp->Color4f = (void APIENTRY (*)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) ldg_find("glColor4f", lib); GL_CHECK(glp->Color4f); glp->Color3fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glColor3fv", lib); GL_CHECK(glp->Color3fv); glp->Color4fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glColor4fv", lib); GL_CHECK(glp->Color4fv); glp->ColorMaterial = (void APIENTRY (*)(GLenum face, GLenum mode)) ldg_find("glColorMaterial", lib); GL_CHECK(glp->ColorMaterial); glp->ColorPointer = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) ldg_find("glColorPointer", lib); GL_CHECK(glp->ColorPointer); glp->CullFace = (void APIENTRY (*)(GLenum mode)) ldg_find("glCullFace", lib); GL_CHECK(glp->CullFace); glp->DeleteTextures = (void APIENTRY (*)(GLsizei n, const GLuint *textures)) ldg_find("glDeleteTextures", lib); GL_CHECK(glp->DeleteTextures); glp->DisableClientState = (void APIENTRY (*)(GLenum array)) ldg_find("glDisableClientState", lib); GL_CHECK(glp->DisableClientState); glp->EnableClientState = (void APIENTRY (*)(GLenum array)) ldg_find("glEnableClientState", lib); GL_CHECK(glp->EnableClientState); glp->EndList = (void APIENTRY (*)(void)) ldg_find("glEndList", lib); GL_CHECK(glp->EndList); glp->EdgeFlag = (void APIENTRY (*)(GLboolean32 flag)) ldg_find("glEdgeFlag", lib); GL_CHECK(glp->EdgeFlag); glp->Flush = (void APIENTRY (*)(void)) ldg_find("glFlush", lib); GL_CHECK(glp->Flush); glp->FrontFace = (void APIENTRY (*)(GLenum mode)) ldg_find("glFrontFace", lib); GL_CHECK(glp->FrontFace); glp->Frustumf = (void APIENTRY (*)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val)) ldg_find("glFrustum", lib); GL_CHECK(glp->Frustumf); glp->GenLists = (GLuint APIENTRY (*)(GLsizei range)) ldg_find("glGenLists", lib); GL_CHECK(glp->GenLists); glp->GenTextures = (void APIENTRY (*)(GLsizei n, GLuint *textures)) ldg_find("glGenTextures", lib); GL_CHECK(glp->GenTextures); glp->GetFloatv = (void APIENTRY (*)(GLenum pname, GLfloat *params)) ldg_find("glGetFloatv", lib); GL_CHECK(glp->GetFloatv); glp->GetIntegerv = (void APIENTRY (*)(GLenum pname, GLint *params)) ldg_find("glGetIntegerv", lib); GL_CHECK(glp->GetIntegerv); glp->Hint = (void APIENTRY (*)(GLenum target, GLenum mode)) ldg_find("glHint", lib); GL_CHECK(glp->Hint); glp->InitNames = (void APIENTRY (*)(void)) ldg_find("glInitNames", lib); GL_CHECK(glp->InitNames); glp->IsList = (GLboolean APIENTRY (*)(GLuint list)) ldg_find("glIsList", lib); GL_CHECK(glp->IsList); glp->Lightf = (void APIENTRY (*)(GLenum light, GLenum pname, GLfloat param)) ldg_find("glLightf", lib); GL_CHECK(glp->Lightf); glp->LightModeli = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glLightModeli", lib); GL_CHECK(glp->LightModeli); glp->LightModelfv = (void APIENTRY (*)(GLenum pname, const GLfloat *params)) ldg_find("glLightModelfv", lib); GL_CHECK(glp->LightModelfv); glp->LoadMatrixf = (void APIENTRY (*)(const GLfloat *m)) ldg_find("glLoadMatrixf", lib); GL_CHECK(glp->LoadMatrixf); glp->LoadName = (void APIENTRY (*)(GLuint name)) ldg_find("glLoadName", lib); GL_CHECK(glp->LoadName); glp->Materialf = (void APIENTRY (*)(GLenum face, GLenum pname, GLfloat param)) ldg_find("glMaterialf", lib); GL_CHECK(glp->Materialf); glp->MultMatrixf = (void APIENTRY (*)(const GLfloat *m)) ldg_find("glMultMatrixf", lib); GL_CHECK(glp->MultMatrixf); glp->NewList = (void APIENTRY (*)(GLuint list, GLenum mode)) ldg_find("glNewList", lib); GL_CHECK(glp->NewList); glp->Normal3f = (void APIENTRY (*)(GLfloat nx, GLfloat ny, GLfloat nz)) ldg_find("glNormal3f", lib); GL_CHECK(glp->Normal3f); glp->Normal3fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glNormal3fv", lib); GL_CHECK(glp->Normal3fv); glp->NormalPointer = (void APIENTRY (*)(GLenum type, GLsizei stride, const GLvoid *pointer)) ldg_find("glNormalPointer", lib); GL_CHECK(glp->NormalPointer); glp->PixelStorei = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glPixelStorei", lib); GL_CHECK(glp->PixelStorei); glp->PolygonMode = (void APIENTRY (*)(GLenum face, GLenum mode)) ldg_find("glPolygonMode", lib); GL_CHECK(glp->PolygonMode); glp->PolygonOffset = (void APIENTRY (*)(GLfloat factor, GLfloat units)) ldg_find("glPolygonOffset", lib); GL_CHECK(glp->PolygonOffset); glp->PopName = (void APIENTRY (*)(void)) ldg_find("glPopName", lib); GL_CHECK(glp->PopName); glp->PushName = (void APIENTRY (*)(GLuint name)) ldg_find("glPushName", lib); GL_CHECK(glp->PushName); glp->RenderMode = (GLint APIENTRY (*)(GLenum mode)) ldg_find("glRenderMode", lib); GL_CHECK(glp->RenderMode); glp->SelectBuffer = (void APIENTRY (*)(GLsizei size, GLuint *buffer)) ldg_find("glSelectBuffer", lib); GL_CHECK(glp->SelectBuffer); glp->Scalef = (void APIENTRY (*)(GLfloat x, GLfloat y, GLfloat z)) ldg_find("glScalef", lib); GL_CHECK(glp->Scalef); glp->ShadeModel = (void APIENTRY (*)(GLenum mode)) ldg_find("glShadeModel", lib); GL_CHECK(glp->ShadeModel); glp->TexCoord2f = (void APIENTRY (*)(GLfloat s, GLfloat t)) ldg_find("glTexCoord2f", lib); GL_CHECK(glp->TexCoord2f); glp->TexCoord4f = (void APIENTRY (*)(GLfloat s, GLfloat t, GLfloat r, GLfloat q)) ldg_find("glTexCoord4f", lib); GL_CHECK(glp->TexCoord4f); glp->TexCoord2fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glTexCoord2fv", lib); GL_CHECK(glp->TexCoord2fv); glp->TexCoordPointer = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) ldg_find("glTexCoordPointer", lib); GL_CHECK(glp->TexCoordPointer); glp->TexImage2D = (void APIENTRY (*)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)) ldg_find("glTexImage2D", lib); GL_CHECK(glp->TexImage2D); glp->Vertex4f = (void APIENTRY (*)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glVertex4f", lib); GL_CHECK(glp->Vertex4f); glp->Vertex3fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glVertex3fv", lib); GL_CHECK(glp->Vertex3fv); glp->VertexPointer = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) ldg_find("glVertexPointer", lib); GL_CHECK(glp->VertexPointer); glp->Viewport = (void APIENTRY (*)(GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glViewport", lib); GL_CHECK(glp->Viewport); glp->swapbuffer = (void APIENTRY (*)(void *buffer)) ldg_find("swapbuffer", lib); GL_CHECK(glp->swapbuffer); glp->max_width = (GLsizei APIENTRY (*)(void)) ldg_find("max_width", lib); GL_CHECK(glp->max_width); glp->max_height = (GLsizei APIENTRY (*)(void)) ldg_find("max_height", lib); GL_CHECK(glp->max_height); glp->DeleteLists = (void APIENTRY (*)(GLuint list, GLsizei range)) ldg_find("glDeleteLists", lib); GL_CHECK(glp->DeleteLists); glp->gluLookAtf = (void APIENTRY (*)(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ)) ldg_find("gluLookAt", lib); GL_CHECK(glp->gluLookAtf); glp->exception_error = (void APIENTRY (*)(void (CALLBACK *exception)(GLenum param) )) ldg_find("exception_error", lib); GL_CHECK(glp->exception_error); return result; } #undef GL_CHECK struct gl_public *ldg_load_tiny_gl(const char *libname, _WORD *gl) { LDG *lib; struct gl_public *pub = NULL; size_t len; if (libname == NULL) libname = "tiny_gl.ldg"; if (gl == NULL) gl = ldg_global; lib = ldg_open(libname, gl); if (lib != NULL) { long APIENTRY (*glInit)(void *) = (long APIENTRY (*)(void *))ldg_find("glInit", lib); if (glInit) { len = (*glInit)(NULL); } else { len = sizeof(*pub); } pub = (struct gl_public *)calloc(1, len); if (pub) { pub->m_alloc = malloc; pub->m_free = free; if (glInit) (*glInit)(pub); pub->libhandle = lib; ldg_init_tiny_gl(lib); } else { ldg_close(lib, gl); } } return pub; } void ldg_unload_tiny_gl(struct gl_public *pub, _WORD *gl) { if (pub != NULL) { if (pub->libhandle != NULL) { if (gl == NULL) gl = ldg_global; ldg_close((LDG *)pub->libhandle, gl); } pub->m_free(pub); } } #ifdef TEST #include int main(void) { struct gl_public *pub; pub = ldg_load_tiny_gl(0, 0); if (pub == NULL) pub = ldg_load_tiny_gl("c:/gemsys/ldg/tin_gl.ldg", 0); if (pub == NULL) { fprintf(stderr, "tiny_gl.ldg not found\n"); return 1; } printf("%s: %lx\n", "glBegin", gl.Begin); printf("%s: %lx\n", "glOrthof", gl.Orthof); ldg_unload_tiny_gl(pub, NULL); return 0; } #endif aranym-1.1.0/atari/nfosmesa/tiny_gl_slb.c0000664000175000017500000001536313454637621016575 0ustar joyjoy#ifndef __GNUC__ #error "this file is for GNU-C only" #endif #include #include "nfosmesa_nfapi.h" #define NFOSMESA_NO_MANGLE #define TINYGL_ONLY #include #include "lib-osmesa.h" #include "lib-oldmesa.h" #include "lib-misc.h" #define __CDECL typedef long __CDECL (*SLB_LFUNC)(BASEPAGE *pd, long fn, long nargs, ...); #ifndef __STRINGIFY #define __STRINGIFY(x) __STRINGIFY1(x) #define __STRINGIFY1(x) #x #endif /* generate the prototypes */ #define varargs(proto...) proto #undef NOTHING #undef AND #define NOTHING #define AND , #define GL_PROC(type, ret, name, f, desc, proto, args) static type __CDECL slb_ ## f(BASEPAGE *base, long fn, long nwords, gl_private *private, void *first_param); #include "link-tinygl.h" static long __CDECL slb_libinit(BASEPAGE *base, long fn, long nwords, gl_private *private); /* The file header of a shared library */ struct slb_head { long slh_magic; /* Magic value (0x70004afc) */ const char *slh_name; /* Name of the library */ long slh_version; /* Version number */ long slh_flags; /* Flags, currently 0L and unused */ long __CDECL (*slh_slb_init)(void); /* Pointer to init()-function */ void __CDECL (*slh_slb_exit)(void); /* Pointer to exit()-function */ long __CDECL (*slh_slb_open)(BASEPAGE *b); /* Pointer to open()-function */ long __CDECL (*slh_slb_close)(BASEPAGE *b); /* Pointer to close()-function */ const char *const *slh_names; /* Pointer to functions names, or 0L */ void *sl_next; /* used by MetaDOS loader */ long slh_reserved[7]; /* Currently 0L and unused */ long slh_no_funcs; /* Number of functions */ SLB_LFUNC slh_functions[NUM_TINYGL_PROCS + 1]; /* The function pointers */ }; static char const slh_name[]; static char const *const slh_names[]; static long __CDECL slb_init(void); static void __CDECL slb_exit(void); static long __CDECL slb_open(BASEPAGE *bp); static long __CDECL slb_close(BASEPAGE *bp); /* * The file header of a shared library * * This replaces the startup code, and must be the first thing in this file, * and also in the resulting executable. * Make sure your binutils put this into the text section. */ struct slb_head const _start = { 0x70004afc, slh_name, ARANFOSMESA_NFAPI_VERSION, 0, slb_init, slb_exit, slb_open, slb_close, slh_names, 0, { 0, 0, 0, 0, 0, 0, 0 }, NUM_TINYGL_PROCS + 1, { (SLB_LFUNC)slb_libinit, /* generate the function table */ #define GL_PROC(type, ret, name, f, desc, proto, args) (SLB_LFUNC)slb_ ## f, #include "link-tinygl.h" } }; static char const slh_name[] = "tiny_gl.slb"; #define unused __attribute__((__unused__)) static long __CDECL slb_libinit(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private) { internal_glInit(private); return sizeof(*private); } /* generate the function names */ static char const *const slh_names[] = { "glInit", /* slb_libinit */ #define GL_PROC(type, ret, name, f, desc, proto, args) name, #include "link-tinygl.h" 0 }; /* generate the wrapper functions */ #define voidf /**/ #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) #define GL_GETSTRING(type, gl, name, export, upper, proto, args, first, ret) #define GL_GETSTRINGI(type, gl, name, export, upper, proto, args, first, ret) #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) \ static type __CDECL slb_ ## gl ## name(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) \ { \ ret (*HostCall_p)(NFOSMESA_GL ## upper, private->cur_context, first_param); \ } #define GLU_PROC(type, gl, name, export, upper, proto, args, first, ret) \ static type __CDECL slb_ ## gl ## name(BASEPAGE *bp unused, long fn unused, long nwords unused, gl_private *private, void *first_param) \ { \ ret (*HostCall_p)(NFOSMESA_GLU ## upper, private->cur_context, first_param); \ } #include "glfuncs.h" /* entry points of TinyGL functions */ static void *__CDECL slb_OSMesaCreateLDG(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { GLenum *args = (GLenum *)first_param; return internal_OSMesaCreateLDG(private, args[0], args[1], args[2], args[3]); } static void __CDECL slb_OSMesaDestroyLDG(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param unused) { internal_OSMesaDestroyLDG(private); } static GLsizei __CDECL slb_max_width(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param unused) { return internal_max_width(private); } static GLsizei __CDECL slb_max_height(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param unused) { return internal_max_height(private); } static void __CDECL slb_gluLookAtf(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { (*HostCall_p)(NFOSMESA_GLULOOKATF, private->cur_context, first_param); } static void __CDECL slb_glFrustumf(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { (*HostCall_p)(NFOSMESA_GLFRUSTUMF, private->cur_context, first_param); } static void __CDECL slb_glOrthof(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { (*HostCall_p)(NFOSMESA_GLORTHOF, private->cur_context, first_param); } static void __CDECL slb_tinyglexception_error(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { void CALLBACK (*exception)(GLenum param) = *((void CALLBACK (**)(GLenum))first_param); internal_tinyglexception_error(private, exception); } static void __CDECL slb_tinyglswapbuffer(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { void *buf = *((void **)first_param); internal_tinyglswapbuffer(private, buf); } static void __CDECL slb_tinyglinformation(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private unused, void *first_param unused) { tinyglinformation(); } int err_old_nfapi(void) { /* not an error for TinyGL; the 83 functions should always be present */ return 0; } /* * these are not optional and cannot be set * to zero in the header, even if they * currently don't do anything */ static long __CDECL slb_init(void) { return 0; } static void __CDECL slb_exit(void) { } static long __CDECL slb_open(BASEPAGE *pd) { (void) pd; return 0; } static long __CDECL slb_close(BASEPAGE *pd) { (void) pd; return 0; } #include "versinfo.h" void APIENTRY tinyglinformation(void) { (void) Cconws("TinyGL NFOSMesa API Version " __STRINGIFY(ARANFOSMESA_NFAPI_VERSION) " " ASCII_ARCH_TARGET " " ASCII_COMPILER "\r\n"); } aranym-1.1.0/atari/nfosmesa/slb/0000775000175000017500000000000013454637621014674 5ustar joyjoyaranym-1.1.0/atari/nfosmesa/slb/tiny_gl.h0000664000175000017500000014503713454637621016524 0ustar joyjoy#ifndef __SLB_TINY_GL_H__ #define __SLB_TINY_GL_H__ #ifndef __TINY_GL_H__ # define __TINY_GL_H__ 1 #endif #include #include #include #if !defined(__MSHORT__) && (defined(__PUREC__) && __PUREC__ < 0x400) # define __MSHORT__ 1 #endif #if (!defined(__PUREC__) || !defined(__MSHORT__) || defined(__GEMLIB__)) && !defined(__USE_GEMLIB) #define __USE_GEMLIB 1 #endif #ifndef _WORD # if defined(__GEMLIB__) || defined(__USE_GEMLIB) # define _WORD short # else # define _WORD int # endif #endif #ifdef __cplusplus extern "C" { #endif /* * load & initialize TinyGL */ struct gl_public *slb_load_tiny_gl(const char *path); /* * unload TinyGL */ void slb_unload_tiny_gl(struct gl_public *pub); #ifdef __cplusplus } #endif #if !defined(__MSHORT__) && (defined(__PUREC__) && __PUREC__ < 0x400) # define __MSHORT__ 1 #endif #ifdef __cplusplus extern "C" { #endif #ifndef APIENTRY #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) #define APIENTRY __stdcall #elif defined(__PUREC__) #define APIENTRY __CDECL #else #define APIENTRY #endif #endif #ifndef CALLBACK #define CALLBACK APIENTRY #endif #ifndef GLAPIENTRY #define GLAPIENTRY APIENTRY #endif #ifndef APIENTRYP #define APIENTRYP APIENTRY * #endif #ifndef GLAPI #define GLAPI extern #endif #if !defined(__CDECL) #if defined(__PUREC__) #define __CDECL cdecl #else #define __CDECL #endif #endif #ifndef GL_VERSION_1_1 #define GL_VERSION_1_1 1 #ifdef __MSHORT__ typedef long GLint; /* 4-byte signed */ typedef unsigned long GLuint; /* 4-byte unsigned */ typedef unsigned long GLenum; /* 4-byte unsigned */ typedef unsigned long GLbitfield; /* 4-byte unsigned */ typedef long GLsizei; #else typedef int GLint; /* 4-byte signed */ typedef unsigned int GLuint; /* 4-byte unsigned */ typedef unsigned int GLenum; /* 4-byte unsigned */ typedef unsigned int GLbitfield; /* 4-byte unsigned */ typedef int GLsizei; #endif typedef unsigned char GLboolean; typedef signed char GLbyte; /* 1-byte signed */ typedef unsigned char GLubyte; /* 1-byte unsigned */ typedef short GLshort; /* 2-byte signed */ typedef unsigned short GLushort; /* 2-byte unsigned */ typedef float GLfloat; /* single precision float */ typedef float GLclampf; /* single precision float in [0, 1] */ typedef double GLdouble; /* double precision float */ typedef double GLclampd; /* double precision float in [0, 1] */ typedef void GLvoid; /* Boolean values */ #define GL_FALSE 0 #define GL_TRUE 1 /* Data types */ #define GL_BYTE 0x1400 #define GL_UNSIGNED_BYTE 0x1401 #define GL_SHORT 0x1402 #define GL_UNSIGNED_SHORT 0x1403 #define GL_INT 0x1404 #define GL_UNSIGNED_INT 0x1405 #define GL_FLOAT 0x1406 #define GL_DOUBLE 0x140A #define GL_2_BYTES 0x1407 #define GL_3_BYTES 0x1408 #define GL_4_BYTES 0x1409 /* Primitives */ #define GL_LINES 0x0001 #define GL_POINTS 0x0000 #define GL_LINE_STRIP 0x0003 #define GL_LINE_LOOP 0x0002 #define GL_TRIANGLES 0x0004 #define GL_TRIANGLE_STRIP 0x0005 #define GL_TRIANGLE_FAN 0x0006 #define GL_QUADS 0x0007 #define GL_QUAD_STRIP 0x0008 #define GL_POLYGON 0x0009 #define GL_EDGE_FLAG 0x0B43 /* Vertex Arrays */ #define GL_VERTEX_ARRAY 0x8074 #define GL_NORMAL_ARRAY 0x8075 #define GL_COLOR_ARRAY 0x8076 #define GL_INDEX_ARRAY 0x8077 #define GL_TEXTURE_COORD_ARRAY 0x8078 #define GL_EDGE_FLAG_ARRAY 0x8079 #define GL_VERTEX_ARRAY_SIZE 0x807A #define GL_VERTEX_ARRAY_TYPE 0x807B #define GL_VERTEX_ARRAY_STRIDE 0x807C #define GL_VERTEX_ARRAY_COUNT 0x807D #define GL_NORMAL_ARRAY_TYPE 0x807E #define GL_NORMAL_ARRAY_STRIDE 0x807F #define GL_NORMAL_ARRAY_COUNT 0x8080 #define GL_COLOR_ARRAY_SIZE 0x8081 #define GL_COLOR_ARRAY_TYPE 0x8082 #define GL_COLOR_ARRAY_STRIDE 0x8083 #define GL_COLOR_ARRAY_COUNT 0x8084 #define GL_INDEX_ARRAY_TYPE 0x8085 #define GL_INDEX_ARRAY_STRIDE 0x8086 #define GL_INDEX_ARRAY_COUNT 0x8087 #define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 #define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 #define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A #define GL_TEXTURE_COORD_ARRAY_COUNT 0x808B #define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C #define GL_EDGE_FLAG_ARRAY_COUNT 0x808D #define GL_VERTEX_ARRAY_POINTER 0x808E #define GL_NORMAL_ARRAY_POINTER 0x808F #define GL_COLOR_ARRAY_POINTER 0x8090 #define GL_INDEX_ARRAY_POINTER 0x8091 #define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 #define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 #define GL_V2F 0x2A20 #define GL_V3F 0x2A21 #define GL_C4UB_V2F 0x2A22 #define GL_C4UB_V3F 0x2A23 #define GL_C3F_V3F 0x2A24 #define GL_N3F_V3F 0x2A25 #define GL_C4F_N3F_V3F 0x2A26 #define GL_T2F_V3F 0x2A27 #define GL_T4F_V4F 0x2A28 #define GL_T2F_C4UB_V3F 0x2A29 #define GL_T2F_C3F_V3F 0x2A2A #define GL_T2F_N3F_V3F 0x2A2B #define GL_T2F_C4F_N3F_V3F 0x2A2C #define GL_T4F_C4F_N3F_V4F 0x2A2D /* Matrix Mode */ #define GL_MATRIX_MODE 0x0BA0 #define GL_MODELVIEW 0x1700 #define GL_PROJECTION 0x1701 #define GL_TEXTURE 0x1702 /* Points */ #define GL_POINT_SMOOTH 0x0B10 #define GL_POINT_SIZE 0x0B11 #define GL_POINT_SIZE_GRANULARITY 0x0B13 #define GL_POINT_SIZE_RANGE 0x0B12 /* Lines */ #define GL_LINE_SMOOTH 0x0B20 #define GL_LINE_STIPPLE 0x0B24 #define GL_LINE_STIPPLE_PATTERN 0x0B25 #define GL_LINE_STIPPLE_REPEAT 0x0B26 #define GL_LINE_WIDTH 0x0B21 #define GL_LINE_WIDTH_GRANULARITY 0x0B23 #define GL_LINE_WIDTH_RANGE 0x0B22 /* Polygons */ #define GL_POINT 0x1B00 #define GL_LINE 0x1B01 #define GL_FILL 0x1B02 #define GL_CCW 0x0901 #define GL_CW 0x0900 #define GL_FRONT 0x0404 #define GL_BACK 0x0405 #define GL_CULL_FACE 0x0B44 #define GL_CULL_FACE_MODE 0x0B45 #define GL_POLYGON_SMOOTH 0x0B41 #define GL_POLYGON_STIPPLE 0x0B42 #define GL_FRONT_FACE 0x0B46 #define GL_POLYGON_MODE 0x0B40 #define GL_POLYGON_OFFSET_FACTOR 0x8038 #define GL_POLYGON_OFFSET_UNITS 0x2A00 #define GL_POLYGON_OFFSET_POINT 0x2A01 #define GL_POLYGON_OFFSET_LINE 0x2A02 #define GL_POLYGON_OFFSET_FILL 0x8037 /* Display Lists */ #define GL_COMPILE 0x1300 #define GL_COMPILE_AND_EXECUTE 0x1301 #define GL_LIST_BASE 0x0B32 #define GL_LIST_INDEX 0x0B33 #define GL_LIST_MODE 0x0B30 /* Depth buffer */ #define GL_NEVER 0x0200 #define GL_LESS 0x0201 #define GL_GEQUAL 0x0206 #define GL_LEQUAL 0x0203 #define GL_GREATER 0x0204 #define GL_NOTEQUAL 0x0205 #define GL_EQUAL 0x0202 #define GL_ALWAYS 0x0207 #define GL_DEPTH_TEST 0x0B71 #define GL_DEPTH_BITS 0x0D56 #define GL_DEPTH_CLEAR_VALUE 0x0B73 #define GL_DEPTH_FUNC 0x0B74 #define GL_DEPTH_RANGE 0x0B70 #define GL_DEPTH_WRITEMASK 0x0B72 #define GL_DEPTH_COMPONENT 0x1902 /* Lighting */ #define GL_LIGHTING 0x0B50 #define GL_LIGHT0 0x4000 #define GL_LIGHT1 0x4001 #define GL_LIGHT2 0x4002 #define GL_LIGHT3 0x4003 #define GL_LIGHT4 0x4004 #define GL_LIGHT5 0x4005 #define GL_LIGHT6 0x4006 #define GL_LIGHT7 0x4007 #define GL_SPOT_EXPONENT 0x1205 #define GL_SPOT_CUTOFF 0x1206 #define GL_CONSTANT_ATTENUATION 0x1207 #define GL_LINEAR_ATTENUATION 0x1208 #define GL_QUADRATIC_ATTENUATION 0x1209 #define GL_AMBIENT 0x1200 #define GL_DIFFUSE 0x1201 #define GL_SPECULAR 0x1202 #define GL_SHININESS 0x1601 #define GL_EMISSION 0x1600 #define GL_POSITION 0x1203 #define GL_SPOT_DIRECTION 0x1204 #define GL_AMBIENT_AND_DIFFUSE 0x1602 #define GL_COLOR_INDEXES 0x1603 #define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 #define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 #define GL_LIGHT_MODEL_AMBIENT 0x0B53 #define GL_FRONT_AND_BACK 0x0408 #define GL_SHADE_MODEL 0x0B54 #define GL_FLAT 0x1D00 #define GL_SMOOTH 0x1D01 #define GL_COLOR_MATERIAL 0x0B57 #define GL_COLOR_MATERIAL_FACE 0x0B55 #define GL_COLOR_MATERIAL_PARAMETER 0x0B56 #define GL_NORMALIZE 0x0BA1 /* User clipping planes */ #define GL_CLIP_PLANE0 0x3000 #define GL_CLIP_PLANE1 0x3001 #define GL_CLIP_PLANE2 0x3002 #define GL_CLIP_PLANE3 0x3003 #define GL_CLIP_PLANE4 0x3004 #define GL_CLIP_PLANE5 0x3005 /* Accumulation buffer */ #define GL_ACCUM_RED_BITS 0x0D58 #define GL_ACCUM_GREEN_BITS 0x0D59 #define GL_ACCUM_BLUE_BITS 0x0D5A #define GL_ACCUM_ALPHA_BITS 0x0D5B #define GL_ACCUM_CLEAR_VALUE 0x0B80 #define GL_ACCUM 0x0100 #define GL_ADD 0x0104 #define GL_LOAD 0x0101 #define GL_MULT 0x0103 #define GL_RETURN 0x0102 /* Alpha testing */ #define GL_ALPHA_TEST 0x0BC0 #define GL_ALPHA_TEST_REF 0x0BC2 #define GL_ALPHA_TEST_FUNC 0x0BC1 /* Blending */ #define GL_BLEND 0x0BE2 #define GL_BLEND_SRC 0x0BE1 #define GL_BLEND_DST 0x0BE0 #define GL_ZERO 0 #define GL_ONE 1 #define GL_SRC_COLOR 0x0300 #define GL_ONE_MINUS_SRC_COLOR 0x0301 #define GL_DST_COLOR 0x0306 #define GL_ONE_MINUS_DST_COLOR 0x0307 #define GL_SRC_ALPHA 0x0302 #define GL_ONE_MINUS_SRC_ALPHA 0x0303 #define GL_DST_ALPHA 0x0304 #define GL_ONE_MINUS_DST_ALPHA 0x0305 #define GL_SRC_ALPHA_SATURATE 0x0308 #define GL_CONSTANT_COLOR 0x8001 #define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 #define GL_CONSTANT_ALPHA 0x8003 #define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 /* Render Mode */ #define GL_FEEDBACK 0x1C01 #define GL_RENDER 0x1C00 #define GL_SELECT 0x1C02 /* Feedback */ #define GL_2D 0x0600 #define GL_3D 0x0601 #define GL_3D_COLOR 0x0602 #define GL_3D_COLOR_TEXTURE 0x0603 #define GL_4D_COLOR_TEXTURE 0x0604 #define GL_POINT_TOKEN 0x0701 #define GL_LINE_TOKEN 0x0702 #define GL_LINE_RESET_TOKEN 0x0707 #define GL_POLYGON_TOKEN 0x0703 #define GL_BITMAP_TOKEN 0x0704 #define GL_DRAW_PIXEL_TOKEN 0x0705 #define GL_COPY_PIXEL_TOKEN 0x0706 #define GL_PASS_THROUGH_TOKEN 0x0700 #define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 #define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 #define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 /* Fog */ #define GL_FOG 0x0B60 #define GL_FOG_MODE 0x0B65 #define GL_FOG_DENSITY 0x0B62 #define GL_FOG_COLOR 0x0B66 #define GL_FOG_INDEX 0x0B61 #define GL_FOG_START 0x0B63 #define GL_FOG_END 0x0B64 #define GL_LINEAR 0x2601 #define GL_EXP 0x0800 #define GL_EXP2 0x0801 /* Logic Ops */ #define GL_LOGIC_OP 0x0BF1 #define GL_INDEX_LOGIC_OP 0x0BF1 #define GL_COLOR_LOGIC_OP 0x0BF2 #define GL_LOGIC_OP_MODE 0x0BF0 #define GL_CLEAR 0x1500 #define GL_SET 0x150F #define GL_COPY 0x1503 #define GL_COPY_INVERTED 0x150C #define GL_NOOP 0x1505 #define GL_INVERT 0x150A #define GL_AND 0x1501 #define GL_NAND 0x150E #define GL_OR 0x1507 #define GL_NOR 0x1508 #define GL_XOR 0x1506 #define GL_EQUIV 0x1509 #define GL_AND_REVERSE 0x1502 #define GL_AND_INVERTED 0x1504 #define GL_OR_REVERSE 0x150B #define GL_OR_INVERTED 0x150D /* Stencil */ #define GL_STENCIL_TEST 0x0B90 #define GL_STENCIL_WRITEMASK 0x0B98 #define GL_STENCIL_BITS 0x0D57 #define GL_STENCIL_FUNC 0x0B92 #define GL_STENCIL_VALUE_MASK 0x0B93 #define GL_STENCIL_REF 0x0B97 #define GL_STENCIL_FAIL 0x0B94 #define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 #define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 #define GL_STENCIL_CLEAR_VALUE 0x0B91 #define GL_STENCIL_INDEX 0x1901 #define GL_KEEP 0x1E00 #define GL_REPLACE 0x1E01 #define GL_INCR 0x1E02 #define GL_DECR 0x1E03 /* Buffers, Pixel Drawing/Reading */ #define GL_NONE 0 #define GL_LEFT 0x0406 #define GL_RIGHT 0x0407 #define GL_FRONT_LEFT 0x0400 #define GL_FRONT_RIGHT 0x0401 #define GL_BACK_LEFT 0x0402 #define GL_BACK_RIGHT 0x0403 #define GL_AUX0 0x0409 #define GL_AUX1 0x040A #define GL_AUX2 0x040B #define GL_AUX3 0x040C #define GL_COLOR_INDEX 0x1900 #define GL_RED 0x1903 #define GL_GREEN 0x1904 #define GL_BLUE 0x1905 #define GL_ALPHA 0x1906 #define GL_LUMINANCE 0x1909 #define GL_LUMINANCE_ALPHA 0x190A #define GL_ALPHA_BITS 0x0D55 #define GL_RED_BITS 0x0D52 #define GL_GREEN_BITS 0x0D53 #define GL_BLUE_BITS 0x0D54 #define GL_INDEX_BITS 0x0D51 #define GL_SUBPIXEL_BITS 0x0D50 #define GL_AUX_BUFFERS 0x0C00 #define GL_READ_BUFFER 0x0C02 #define GL_DRAW_BUFFER 0x0C01 #define GL_DOUBLEBUFFER 0x0C32 #define GL_STEREO 0x0C33 #define GL_BITMAP 0x1A00 #define GL_COLOR 0x1800 #define GL_DEPTH 0x1801 #define GL_STENCIL 0x1802 #define GL_DITHER 0x0BD0 #define GL_RGB 0x1907 #define GL_RGBA 0x1908 /* Implementation limits */ #define GL_MAX_LIST_NESTING 0x0B31 #define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 #define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 #define GL_MAX_NAME_STACK_DEPTH 0x0D37 #define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 #define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 #define GL_MAX_EVAL_ORDER 0x0D30 #define GL_MAX_LIGHTS 0x0D31 #define GL_MAX_CLIP_PLANES 0x0D32 #define GL_MAX_TEXTURE_SIZE 0x0D33 #define GL_MAX_PIXEL_MAP_TABLE 0x0D34 #define GL_MAX_VIEWPORT_DIMS 0x0D3A #define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B #define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 /* Gets */ #define GL_ATTRIB_STACK_DEPTH 0x0BB0 #define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 #define GL_COLOR_CLEAR_VALUE 0x0C22 #define GL_COLOR_WRITEMASK 0x0C23 #define GL_CURRENT_INDEX 0x0B01 #define GL_CURRENT_COLOR 0x0B00 #define GL_CURRENT_NORMAL 0x0B02 #define GL_CURRENT_RASTER_COLOR 0x0B04 #define GL_CURRENT_RASTER_DISTANCE 0x0B09 #define GL_CURRENT_RASTER_INDEX 0x0B05 #define GL_CURRENT_RASTER_POSITION 0x0B07 #define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 #define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 #define GL_CURRENT_TEXTURE_COORDS 0x0B03 #define GL_INDEX_CLEAR_VALUE 0x0C20 #define GL_INDEX_MODE 0x0C30 #define GL_INDEX_WRITEMASK 0x0C21 #define GL_MODELVIEW_MATRIX 0x0BA6 #define GL_MODELVIEW_STACK_DEPTH 0x0BA3 #define GL_NAME_STACK_DEPTH 0x0D70 #define GL_PROJECTION_MATRIX 0x0BA7 #define GL_PROJECTION_STACK_DEPTH 0x0BA4 #define GL_RENDER_MODE 0x0C40 #define GL_RGBA_MODE 0x0C31 #define GL_TEXTURE_MATRIX 0x0BA8 #define GL_TEXTURE_STACK_DEPTH 0x0BA5 #define GL_VIEWPORT 0x0BA2 #define GL_COLOR_MATRIX 0x80B1 #define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 /* Evaluators */ #define GL_AUTO_NORMAL 0x0D80 #define GL_MAP1_COLOR_4 0x0D90 #define GL_MAP1_GRID_DOMAIN 0x0DD0 #define GL_MAP1_GRID_SEGMENTS 0x0DD1 #define GL_MAP1_INDEX 0x0D91 #define GL_MAP1_NORMAL 0x0D92 #define GL_MAP1_TEXTURE_COORD_1 0x0D93 #define GL_MAP1_TEXTURE_COORD_2 0x0D94 #define GL_MAP1_TEXTURE_COORD_3 0x0D95 #define GL_MAP1_TEXTURE_COORD_4 0x0D96 #define GL_MAP1_VERTEX_3 0x0D97 #define GL_MAP1_VERTEX_4 0x0D98 #define GL_MAP2_COLOR_4 0x0DB0 #define GL_MAP2_GRID_DOMAIN 0x0DD2 #define GL_MAP2_GRID_SEGMENTS 0x0DD3 #define GL_MAP2_INDEX 0x0DB1 #define GL_MAP2_NORMAL 0x0DB2 #define GL_MAP2_TEXTURE_COORD_1 0x0DB3 #define GL_MAP2_TEXTURE_COORD_2 0x0DB4 #define GL_MAP2_TEXTURE_COORD_3 0x0DB5 #define GL_MAP2_TEXTURE_COORD_4 0x0DB6 #define GL_MAP2_VERTEX_3 0x0DB7 #define GL_MAP2_VERTEX_4 0x0DB8 #define GL_COEFF 0x0A00 #define GL_DOMAIN 0x0A02 #define GL_ORDER 0x0A01 /* Hints */ #define GL_FOG_HINT 0x0C54 #define GL_LINE_SMOOTH_HINT 0x0C52 #define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 #define GL_POINT_SMOOTH_HINT 0x0C51 #define GL_POLYGON_SMOOTH_HINT 0x0C53 #define GL_DONT_CARE 0x1100 #define GL_FASTEST 0x1101 #define GL_NICEST 0x1102 /* Scissor box */ #define GL_SCISSOR_TEST 0x0C11 #define GL_SCISSOR_BOX 0x0C10 /* Pixel Mode / Transfer */ #define GL_MAP_COLOR 0x0D10 #define GL_MAP_STENCIL 0x0D11 #define GL_INDEX_SHIFT 0x0D12 #define GL_INDEX_OFFSET 0x0D13 #define GL_RED_SCALE 0x0D14 #define GL_RED_BIAS 0x0D15 #define GL_GREEN_SCALE 0x0D18 #define GL_GREEN_BIAS 0x0D19 #define GL_BLUE_SCALE 0x0D1A #define GL_BLUE_BIAS 0x0D1B #define GL_ALPHA_SCALE 0x0D1C #define GL_ALPHA_BIAS 0x0D1D #define GL_DEPTH_SCALE 0x0D1E #define GL_DEPTH_BIAS 0x0D1F #define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 #define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 #define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 #define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 #define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 #define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 #define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 #define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 #define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 #define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 #define GL_PIXEL_MAP_S_TO_S 0x0C71 #define GL_PIXEL_MAP_I_TO_I 0x0C70 #define GL_PIXEL_MAP_I_TO_R 0x0C72 #define GL_PIXEL_MAP_I_TO_G 0x0C73 #define GL_PIXEL_MAP_I_TO_B 0x0C74 #define GL_PIXEL_MAP_I_TO_A 0x0C75 #define GL_PIXEL_MAP_R_TO_R 0x0C76 #define GL_PIXEL_MAP_G_TO_G 0x0C77 #define GL_PIXEL_MAP_B_TO_B 0x0C78 #define GL_PIXEL_MAP_A_TO_A 0x0C79 #define GL_PACK_ALIGNMENT 0x0D05 #define GL_PACK_LSB_FIRST 0x0D01 #define GL_PACK_ROW_LENGTH 0x0D02 #define GL_PACK_SKIP_PIXELS 0x0D04 #define GL_PACK_SKIP_ROWS 0x0D03 #define GL_PACK_SWAP_BYTES 0x0D00 #define GL_UNPACK_ALIGNMENT 0x0CF5 #define GL_UNPACK_LSB_FIRST 0x0CF1 #define GL_UNPACK_ROW_LENGTH 0x0CF2 #define GL_UNPACK_SKIP_PIXELS 0x0CF4 #define GL_UNPACK_SKIP_ROWS 0x0CF3 #define GL_UNPACK_SWAP_BYTES 0x0CF0 #define GL_ZOOM_X 0x0D16 #define GL_ZOOM_Y 0x0D17 /* Texture mapping */ #define GL_TEXTURE_ENV 0x2300 #define GL_TEXTURE_ENV_MODE 0x2200 #define GL_TEXTURE_1D 0x0DE0 #define GL_TEXTURE_2D 0x0DE1 #define GL_TEXTURE_WRAP_S 0x2802 #define GL_TEXTURE_WRAP_T 0x2803 #define GL_TEXTURE_MAG_FILTER 0x2800 #define GL_TEXTURE_MIN_FILTER 0x2801 #define GL_TEXTURE_ENV_COLOR 0x2201 #define GL_TEXTURE_GEN_S 0x0C60 #define GL_TEXTURE_GEN_T 0x0C61 #define GL_TEXTURE_GEN_MODE 0x2500 #define GL_TEXTURE_BORDER_COLOR 0x1004 #define GL_TEXTURE_WIDTH 0x1000 #define GL_TEXTURE_HEIGHT 0x1001 #define GL_TEXTURE_BORDER 0x1005 #define GL_TEXTURE_COMPONENTS 0x1003 #define GL_TEXTURE_RED_SIZE 0x805C #define GL_TEXTURE_GREEN_SIZE 0x805D #define GL_TEXTURE_BLUE_SIZE 0x805E #define GL_TEXTURE_ALPHA_SIZE 0x805F #define GL_TEXTURE_LUMINANCE_SIZE 0x8060 #define GL_TEXTURE_INTENSITY_SIZE 0x8061 #define GL_NEAREST_MIPMAP_NEAREST 0x2700 #define GL_NEAREST_MIPMAP_LINEAR 0x2702 #define GL_LINEAR_MIPMAP_NEAREST 0x2701 #define GL_LINEAR_MIPMAP_LINEAR 0x2703 #define GL_OBJECT_LINEAR 0x2401 #define GL_OBJECT_PLANE 0x2501 #define GL_EYE_LINEAR 0x2400 #define GL_EYE_PLANE 0x2502 #define GL_SPHERE_MAP 0x2402 #define GL_DECAL 0x2101 #define GL_MODULATE 0x2100 #define GL_NEAREST 0x2600 #define GL_REPEAT 0x2901 #define GL_CLAMP 0x2900 #define GL_S 0x2000 #define GL_T 0x2001 #define GL_R 0x2002 #define GL_Q 0x2003 #define GL_TEXTURE_GEN_R 0x0C62 #define GL_TEXTURE_GEN_Q 0x0C63 #define GL_PROXY_TEXTURE_1D 0x8063 #define GL_PROXY_TEXTURE_2D 0x8064 #define GL_TEXTURE_PRIORITY 0x8066 #define GL_TEXTURE_RESIDENT 0x8067 #define GL_TEXTURE_BINDING_1D 0x8068 #define GL_TEXTURE_BINDING_2D 0x8069 /* Internal texture formats */ #define GL_ALPHA4 0x803B #define GL_ALPHA8 0x803C #define GL_ALPHA12 0x803D #define GL_ALPHA16 0x803E #define GL_LUMINANCE4 0x803F #define GL_LUMINANCE8 0x8040 #define GL_LUMINANCE12 0x8041 #define GL_LUMINANCE16 0x8042 #define GL_LUMINANCE4_ALPHA4 0x8043 #define GL_LUMINANCE6_ALPHA2 0x8044 #define GL_LUMINANCE8_ALPHA8 0x8045 #define GL_LUMINANCE12_ALPHA4 0x8046 #define GL_LUMINANCE12_ALPHA12 0x8047 #define GL_LUMINANCE16_ALPHA16 0x8048 #define GL_INTENSITY 0x8049 #define GL_INTENSITY4 0x804A #define GL_INTENSITY8 0x804B #define GL_INTENSITY12 0x804C #define GL_INTENSITY16 0x804D #define GL_R3_G3_B2 0x2A10 #define GL_RGB4 0x804F #define GL_RGB5 0x8050 #define GL_RGB8 0x8051 #define GL_RGB10 0x8052 #define GL_RGB12 0x8053 #define GL_RGB16 0x8054 #define GL_RGBA2 0x8055 #define GL_RGBA4 0x8056 #define GL_RGB5_A1 0x8057 #define GL_RGBA8 0x8058 #define GL_RGB10_A2 0x8059 #define GL_RGBA12 0x805A #define GL_RGBA16 0x805B /* Utility */ #define GL_VENDOR 0x1F00 #define GL_RENDERER 0x1F01 #define GL_VERSION 0x1F02 #define GL_EXTENSIONS 0x1F03 /* Errors */ #define GL_NO_ERROR 0 #define GL_INVALID_VALUE 0x0501 #define GL_INVALID_ENUM 0x0500 #define GL_INVALID_OPERATION 0x0502 #define GL_STACK_OVERFLOW 0x0503 #define GL_STACK_UNDERFLOW 0x0504 #define GL_OUT_OF_MEMORY 0x0505 /* * 1.0 Extensions */ /* GL_EXT_blend_minmax and GL_EXT_blend_color */ #define GL_CONSTANT_COLOR_EXT 0x8001 #define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 #define GL_CONSTANT_ALPHA_EXT 0x8003 #define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 #define GL_BLEND_EQUATION_EXT 0x8009 #define GL_MIN_EXT 0x8007 #define GL_MAX_EXT 0x8008 #define GL_FUNC_ADD_EXT 0x8006 #define GL_FUNC_SUBTRACT_EXT 0x800A #define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B #define GL_BLEND_COLOR_EXT 0x8005 /* GL_EXT_polygon_offset */ #define GL_POLYGON_OFFSET_EXT 0x8037 #define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 #define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 /* GL_EXT_vertex_array */ #define GL_VERTEX_ARRAY_EXT 0x8074 #define GL_NORMAL_ARRAY_EXT 0x8075 #define GL_COLOR_ARRAY_EXT 0x8076 #define GL_INDEX_ARRAY_EXT 0x8077 #define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 #define GL_EDGE_FLAG_ARRAY_EXT 0x8079 #define GL_VERTEX_ARRAY_SIZE_EXT 0x807A #define GL_VERTEX_ARRAY_TYPE_EXT 0x807B #define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C #define GL_VERTEX_ARRAY_COUNT_EXT 0x807D #define GL_NORMAL_ARRAY_TYPE_EXT 0x807E #define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F #define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 #define GL_COLOR_ARRAY_SIZE_EXT 0x8081 #define GL_COLOR_ARRAY_TYPE_EXT 0x8082 #define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 #define GL_COLOR_ARRAY_COUNT_EXT 0x8084 #define GL_INDEX_ARRAY_TYPE_EXT 0x8085 #define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 #define GL_INDEX_ARRAY_COUNT_EXT 0x8087 #define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 #define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 #define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A #define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B #define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C #define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D #define GL_VERTEX_ARRAY_POINTER_EXT 0x808E #define GL_NORMAL_ARRAY_POINTER_EXT 0x808F #define GL_COLOR_ARRAY_POINTER_EXT 0x8090 #define GL_INDEX_ARRAY_POINTER_EXT 0x8091 #define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 #define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 /* GL_EXT_texture_object */ #define GL_TEXTURE_PRIORITY_EXT 0x8066 #define GL_TEXTURE_RESIDENT_EXT 0x8067 #define GL_TEXTURE_1D_BINDING_EXT 0x8068 #define GL_TEXTURE_2D_BINDING_EXT 0x8069 /* GL_EXT_texture3D */ #define GL_PACK_SKIP_IMAGES_EXT 0x806B #define GL_PACK_IMAGE_HEIGHT_EXT 0x806C #define GL_UNPACK_SKIP_IMAGES_EXT 0x806D #define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E #define GL_TEXTURE_3D_EXT 0x806F #define GL_PROXY_TEXTURE_3D_EXT 0x8070 #define GL_TEXTURE_DEPTH_EXT 0x8071 #define GL_TEXTURE_WRAP_R_EXT 0x8072 #define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 #define GL_TEXTURE_3D_BINDING_EXT 0x806A /* GL_EXT_paletted_texture */ #define GL_TABLE_TOO_LARGE_EXT 0x8031 #define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 #define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 #define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA #define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB #define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC #define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD #define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE #define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF #define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED #define GL_COLOR_INDEX1_EXT 0x80E2 #define GL_COLOR_INDEX2_EXT 0x80E3 #define GL_COLOR_INDEX4_EXT 0x80E4 #define GL_COLOR_INDEX8_EXT 0x80E5 #define GL_COLOR_INDEX12_EXT 0x80E6 #define GL_COLOR_INDEX16_EXT 0x80E7 /* GL_EXT_shared_texture_palette */ #define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB #if 0 /* GL_SGIS_texture_lod */ #define GL_TEXTURE_MIN_LOD_SGIS 0x813A #define GL_TEXTURE_MAX_LOD_SGIS 0x813B #define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C #define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D #endif /* GL_EXT_point_parameters */ #define GL_POINT_SIZE_MIN_EXT 0x8126 #define GL_POINT_SIZE_MAX_EXT 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 #define GL_DISTANCE_ATTENUATION_EXT 0x8129 #define GL_CURRENT_BIT 0x00000001L #define GL_POINT_BIT 0x00000002L #define GL_LINE_BIT 0x00000004L #define GL_POLYGON_BIT 0x00000008L #define GL_POLYGON_STIPPLE_BIT 0x00000010L #define GL_PIXEL_MODE_BIT 0x00000020L #define GL_LIGHTING_BIT 0x00000040L #define GL_FOG_BIT 0x00000080L #define GL_DEPTH_BUFFER_BIT 0x00000100L #define GL_ACCUM_BUFFER_BIT 0x00000200L #define GL_STENCIL_BUFFER_BIT 0x00000400L #define GL_VIEWPORT_BIT 0x00000800L #define GL_TRANSFORM_BIT 0x00001000L #define GL_ENABLE_BIT 0x00002000L #define GL_COLOR_BUFFER_BIT 0x00004000L #define GL_HINT_BIT 0x00008000L #define GL_EVAL_BIT 0x00010000L #define GL_LIST_BIT 0x00020000L #define GL_TEXTURE_BIT 0x00040000L #define GL_SCISSOR_BIT 0x00080000L #define GL_ALL_ATTRIB_BITS 0x000fffffL #define GL_CLIENT_PIXEL_STORE_BIT 0x00000001L #define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002L #define GL_CLIENT_ALL_ATTRIB_BITS 0x0000FFFFL GLAPI void GLAPIENTRY glEnable(GLenum cap); GLAPI void GLAPIENTRY glDisable(GLenum cap); GLAPI void GLAPIENTRY glShadeModel(GLenum mode); GLAPI void GLAPIENTRY glCullFace(GLenum mode); GLAPI void GLAPIENTRY glPolygonMode(GLenum face, GLenum mode); GLAPI void GLAPIENTRY glBegin(GLenum mode); GLAPI void GLAPIENTRY glEnd(void); GLAPI void GLAPIENTRY glVertex2f(GLfloat x, GLfloat y); GLAPI void GLAPIENTRY glVertex2d(GLdouble x, GLdouble y); GLAPI void GLAPIENTRY glVertex2fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex2dv(const GLdouble *v); GLAPI void GLAPIENTRY glVertex3f(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glVertex3d(GLdouble x, GLdouble y, GLdouble z); GLAPI void GLAPIENTRY glVertex3fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex3dv(const GLdouble *v); GLAPI void GLAPIENTRY glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void GLAPIENTRY glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void GLAPIENTRY glVertex4fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex4dv(const GLdouble *v); GLAPI void GLAPIENTRY glColor3f(GLfloat red, GLfloat green, GLfloat blue); GLAPI void GLAPIENTRY glColor3d(GLdouble red, GLdouble green, GLdouble blue); GLAPI void GLAPIENTRY glColor3fv(const GLfloat *v); GLAPI void GLAPIENTRY glColor3dv(const GLdouble *v); GLAPI void GLAPIENTRY glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); GLAPI void GLAPIENTRY glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); GLAPI void GLAPIENTRY glColor4fv(const GLfloat *v); GLAPI void GLAPIENTRY glColor4dv(const GLdouble *v); GLAPI void GLAPIENTRY glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); GLAPI void GLAPIENTRY glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); GLAPI void GLAPIENTRY glNormal3fv(const GLfloat *v); GLAPI void GLAPIENTRY glNormal3dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord1f(GLfloat s); GLAPI void GLAPIENTRY glTexCoord1d(GLdouble s); GLAPI void GLAPIENTRY glTexCoord1fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord1dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord2f(GLfloat s, GLfloat t); GLAPI void GLAPIENTRY glTexCoord2d(GLdouble s, GLdouble t); GLAPI void GLAPIENTRY glTexCoord2fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord2dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); GLAPI void GLAPIENTRY glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); GLAPI void GLAPIENTRY glTexCoord3fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord3dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); GLAPI void GLAPIENTRY glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); GLAPI void GLAPIENTRY glTexCoord4fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord4dv(const GLdouble *v); GLAPI void GLAPIENTRY glEdgeFlag(GLboolean flag); /* matrix */ GLAPI void GLAPIENTRY glMatrixMode(GLenum mode); GLAPI void GLAPIENTRY glLoadMatrixf(const GLfloat *m); GLAPI void GLAPIENTRY glLoadIdentity(void); GLAPI void GLAPIENTRY glMultMatrixf(const GLfloat *m); GLAPI void GLAPIENTRY glPushMatrix(void); GLAPI void GLAPIENTRY glPopMatrix(void); GLAPI void GLAPIENTRY glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glTranslatef(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glScalef(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glViewport(GLint x, GLint y, GLint width, GLint height); GLAPI void GLAPIENTRY glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val); GLAPI void GLAPIENTRY glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val); /* lists */ GLAPI GLuint GLAPIENTRY glGenLists(GLsizei range); GLAPI GLboolean GLAPIENTRY glIsList(GLuint list); GLAPI void GLAPIENTRY glNewList(GLuint list, GLenum mode); GLAPI void GLAPIENTRY glEndList(void); GLAPI void GLAPIENTRY glCallList(GLuint list); GLAPI void GLAPIENTRY glDeleteLists(GLuint list, GLsizei range); /* clear */ GLAPI void GLAPIENTRY glClear(GLbitfield mask); GLAPI void GLAPIENTRY glClearColor(GLfloat r, GLfloat g, GLfloat b, GLfloat a); GLAPI void GLAPIENTRY glClearDepth(GLdouble depth); GLAPI void GLAPIENTRY glClearDepthf(GLfloat depth); /* selection */ GLAPI GLint GLAPIENTRY glRenderMode(GLenum mode); GLAPI void GLAPIENTRY glSelectBuffer(GLsizei size, GLuint *buf); GLAPI void GLAPIENTRY glInitNames(void); GLAPI void GLAPIENTRY glPushName(GLuint name); GLAPI void GLAPIENTRY glPopName(void); GLAPI void GLAPIENTRY glLoadName(GLuint name); /* textures */ GLAPI void GLAPIENTRY glGenTextures(GLsizei n, GLuint *textures); GLAPI void GLAPIENTRY glDeleteTextures(GLsizei n, const GLuint *textures); GLAPI void GLAPIENTRY glBindTexture(GLenum target, GLuint texture); GLAPI void GLAPIENTRY glTexImage2D(GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); GLAPI void GLAPIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param); GLAPI void GLAPIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param); GLAPI void GLAPIENTRY glPixelStorei(GLenum pname, GLint param); /* lighting */ GLAPI void GLAPIENTRY glMaterialfv(GLenum face, GLenum pname, const GLfloat *v); GLAPI void GLAPIENTRY glMaterialf(GLenum mode, GLenum pname, GLfloat v); GLAPI void GLAPIENTRY glColorMaterial(GLenum face, GLenum mode); GLAPI void GLAPIENTRY glLightfv(GLenum light, GLenum pname, const GLfloat *v); GLAPI void GLAPIENTRY glLightf(GLenum light, GLenum pname, GLfloat v); GLAPI void GLAPIENTRY glLightModeli(GLenum pname, GLint param); GLAPI void GLAPIENTRY glLightModelfv(GLenum pname, const GLfloat *param); /* misc */ GLAPI void GLAPIENTRY glFlush(void); GLAPI void GLAPIENTRY glHint(GLenum target, GLenum mode); GLAPI void GLAPIENTRY glGetIntegerv(GLenum pname, GLint *params); GLAPI void GLAPIENTRY glGetFloatv(GLenum pname, GLfloat *v); GLAPI void GLAPIENTRY glFrontFace(GLenum mode); /* opengl 1.2 arrays */ GLAPI void GLAPIENTRY glEnableClientState(GLenum array); GLAPI void GLAPIENTRY glDisableClientState(GLenum array); GLAPI void GLAPIENTRY glArrayElement(GLint i); GLAPI void GLAPIENTRY glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); /* opengl 1.2 polygon offset */ GLAPI void GLAPIENTRY glPolygonOffset(GLfloat factor, GLfloat units); #endif /* GL_VERSION_1_1 */ #ifndef GL_VERSION_1_5 #ifndef __GLintptr_defined #include #ifdef __APPLE__ typedef intptr_t GLsizeiptr; typedef intptr_t GLintptr; #else typedef ptrdiff_t GLsizeiptr; typedef ptrdiff_t GLintptr; #endif #define __GLintptr_defined #endif #endif #ifdef __NFOSMESA_H__ #include #endif #ifndef GL_VERSION_2_0 #define GL_VERSION_2_0 1 typedef char GLchar; #endif #ifndef GL_ARB_vertex_buffer_object #define GL_ARB_vertex_buffer_object 1 #ifdef __APPLE__ typedef intptr_t GLsizeiptrARB; typedef intptr_t GLintptrARB; #else typedef ptrdiff_t GLsizeiptrARB; typedef ptrdiff_t GLintptrARB; #endif #endif #ifndef GL_NV_half_float #define GL_NV_half_float 1 typedef unsigned short GLhalfNV; #endif #ifndef GL_NV_vdpau_interop #define GL_NV_vdpau_interop 1 typedef GLintptr GLvdpauSurfaceNV; #endif #ifndef GL_ARB_cl_event #define GL_ARB_cl_event 1 #ifdef __PUREC__ struct _cl_context { int dummy; }; struct _cl_event { int dummy; }; #else struct _cl_context; struct _cl_event; #endif #endif #if !defined(GL_ARB_sync) && !defined(__TINY_GL_H__) #define GL_ARB_sync 1 #if defined(__GNUC__) || (defined(LLONG_MAX) && LLONG_MAX > 2147483647L) typedef int64_t GLint64; typedef uint64_t GLuint64; #else typedef struct { long hi; unsigned long lo; } GLint64; typedef struct { unsigned long hi; unsigned long lo; } GLuint64; #endif #ifdef __PUREC__ struct __GLsync { int dummy; }; #endif typedef struct __GLsync *GLsync; #endif #if !defined(GL_EXT_timer_query) && !defined(__TINY_GL_H__) #define GL_EXT_timer_query 1 typedef GLint64 GLint64EXT; typedef GLuint64 GLuint64EXT; #endif #ifndef GL_OES_fixed_point #define GL_OES_fixed_point 1 typedef GLint GLfixed; #endif #ifndef GL_ARB_shader_objects #define GL_ARB_shader_objects 1 typedef char GLcharARB; #ifdef __APPLE__ typedef void *GLhandleARB; #else typedef GLuint GLhandleARB; #endif #endif #ifndef GL_KHR_debug #define GL_KHR_debug 1 typedef void CALLBACK (*GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message, const void *userParam); #endif #ifndef GL_ARB_debug_output #define GL_ARB_debug_output 1 typedef void CALLBACK (*GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message, const void *userParam); #endif #ifndef GL_AMD_debug_output #define GL_AMD_debug_output typedef void CALLBACK (*GLDEBUGPROCAMD)(GLuint id,GLenum category, GLenum severity, GLsizei length, const GLchar *message, void *userParam); #endif #ifndef GL_MESA_program_debug #define GL_MESA_program_debug 1 typedef void CALLBACK (*GLprogramcallbackMESA)(GLenum target, GLvoid *data); #endif #ifndef GL_EXT_external_buffer #define GL_EXT_external_buffer 1 typedef void *GLeglClientBufferEXT; #endif #ifndef GL_NV_draw_vulkan_image #define GL_NV_draw_vulkan_image 1 typedef void (APIENTRY *GLVULKANPROCNV)(void); #endif /* * Mesa Off-Screen rendering interface. * * Copyright (C) 1999-2005 Brian Paul All Rights Reserved. * */ #define OSMESA_VERSION_NUMBER(major, minor, patch) ((major) * 10000 + (minor) * 100 + patch) #define OSMESA_VERSION OSMESA_VERSION_NUMBER(OSMESA_MAJOR_VERSION, OSMESA_MINOR_VERSION, OSMESA_PATCH_VERSION) #if !defined(OSMESA_MAJOR_VERSION) #define OSMESA_MAJOR_VERSION 6 #define OSMESA_MINOR_VERSION 3 #define OSMESA_PATCH_VERSION 0 /* * Values for the format parameter of OSMesaCreateLDG() * Mesa_gl.ldg version 0.8 (Mesa 2.6) */ #define OSMESA_COLOR_INDEX GL_COLOR_INDEX #define OSMESA_RGBA GL_RGBA #define OSMESA_BGRA 0x1 #define OSMESA_ARGB 0x2 #define OSMESA_RGB GL_RGB #define OSMESA_BGR 0x4 #define OSMESA_RGB_565 0x5 #define VDI_ARGB 0x8 #define VDI_RGB 0xf #define DIRECT_VDI_ARGB 0x10 /* * OSMesaPixelStore() parameters: */ #define OSMESA_ROW_LENGTH 0x10 #define OSMESA_Y_UP 0x11 /* * Accepted by OSMesaGetIntegerv: */ #define OSMESA_WIDTH 0x20 #define OSMESA_HEIGHT 0x21 #define OSMESA_FORMAT 0x22 #define OSMESA_TYPE 0x23 #define OSMESA_MAX_WIDTH 0x24 /* new in 4.0 */ #define OSMESA_MAX_HEIGHT 0x25 /* new in 4.0 */ #ifdef __PUREC__ struct osmesa_context { int dummy; }; #endif typedef struct osmesa_context *OSMesaContext; typedef void (APIENTRY *OSMESAproc)(void); GLAPI OSMesaContext GLAPIENTRY OSMesaCreateContext( GLenum format, OSMesaContext sharelist ); GLAPI OSMesaContext GLAPIENTRY OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist); GLAPI void GLAPIENTRY OSMesaDestroyContext( OSMesaContext ctx ); GLAPI GLboolean GLAPIENTRY OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height ); GLAPI OSMesaContext GLAPIENTRY OSMesaGetCurrentContext( void ); GLAPI void GLAPIENTRY OSMesaPixelStore( GLint pname, GLint value ); GLAPI void GLAPIENTRY OSMesaGetIntegerv( GLint pname, GLint *value ); GLAPI GLboolean GLAPIENTRY OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void **buffer ); GLAPI GLboolean GLAPIENTRY OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *format, void **buffer ); GLAPI OSMESAproc GLAPIENTRY OSMesaGetProcAddress( const char *funcName ); GLAPI void GLAPIENTRY OSMesaColorClamp(GLboolean enable); GLAPI void GLAPIENTRY OSMesaPostprocess(OSMesaContext osmesa, const char *filter, GLuint enable_value); #elif OSMESA_VERSION < OSMESA_VERSION_NUMBER(6, 3, 0) typedef void (APIENTRY *OSMESAproc)(void); #endif /* * integral types that need to be promoted to * 32bit type when passed by value */ #ifndef GL_nfosmesa_short_promotions #define GL_nfosmesa_short_promotions 1 #ifdef __MSHORT__ typedef long GLshort32; typedef unsigned long GLushort32; typedef unsigned long GLboolean32; typedef long GLchar32; typedef unsigned long GLubyte32; typedef signed long GLbyte32; typedef unsigned long GLhalfNV32; #else typedef GLshort GLshort32; typedef GLushort GLushort32; typedef GLboolean GLboolean32; typedef GLchar GLchar32; typedef GLubyte GLubyte32; typedef GLbyte GLbyte32; typedef GLhalfNV GLhalfNV32; #endif #endif /* * Atari-specific structure for the shared libraries */ struct gl_public { void *libhandle; void *libexec; void *(*m_alloc)(size_t); void (*m_free)(void *); }; #ifdef __cplusplus } #endif #undef glClearDepth #undef glFrustum #undef glOrtho #undef gluLookAt /* * old LDG functions */ #ifdef __cplusplus extern "C" { #endif GLAPI void *GLAPIENTRY OSMesaCreateLDG(GLenum format, GLenum type, GLint width, GLint height); GLAPI void GLAPIENTRY OSMesaDestroyLDG(void); GLAPI GLsizei GLAPIENTRY max_width(void); GLAPI GLsizei GLAPIENTRY max_height(void); GLAPI void GLAPIENTRY swapbuffer(void *buf); GLAPI void GLAPIENTRY exception_error(void CALLBACK (*exception)(GLenum param)); GLAPI void GLAPIENTRY tinyglinformation(void); GLAPI void GLAPIENTRY glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); GLAPI void GLAPIENTRY glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); GLAPI void GLAPIENTRY glClearDepthf(GLfloat depth); GLAPI void GLAPIENTRY gluLookAtf(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ); struct _gl_tiny { void APIENTRY (*information)(void); void APIENTRY (*Begin)(GLenum mode); void APIENTRY (*Clear)(GLbitfield mask); void APIENTRY (*ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); void APIENTRY (*Color3f)(GLfloat red, GLfloat green, GLfloat blue); void APIENTRY (*Disable)(GLenum cap); void APIENTRY (*Enable)(GLenum cap); void APIENTRY (*End)(void); void APIENTRY (*Lightfv)(GLenum light, GLenum pname, const GLfloat *params); void APIENTRY (*LoadIdentity)(void); void APIENTRY (*Materialfv)(GLenum face, GLenum pname, const GLfloat *params); void APIENTRY (*MatrixMode)(GLenum mode); void APIENTRY (*Orthof)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); void APIENTRY (*PopMatrix)(void); void APIENTRY (*PushMatrix)(void); void APIENTRY (*Rotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); void APIENTRY (*TexEnvi)(GLenum target, GLenum pname, GLint param); void APIENTRY (*TexParameteri)(GLenum target, GLenum pname, GLint param); void APIENTRY (*Translatef)(GLfloat x, GLfloat y, GLfloat z); void APIENTRY (*Vertex2f)(GLfloat x, GLfloat y); void APIENTRY (*Vertex3f)(GLfloat x, GLfloat y, GLfloat z); void * APIENTRY (*OSMesaCreateLDG)(GLenum format, GLenum type, GLint width, GLint height); void APIENTRY (*OSMesaDestroyLDG)(void); void APIENTRY (*ArrayElement)(GLint i); void APIENTRY (*BindTexture)(GLenum target, GLuint texture); void APIENTRY (*CallList)(GLuint list); void APIENTRY (*ClearDepthf)(GLfloat d); void APIENTRY (*Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void APIENTRY (*Color3fv)(const GLfloat *v); void APIENTRY (*Color4fv)(const GLfloat *v); void APIENTRY (*ColorMaterial)(GLenum face, GLenum mode); void APIENTRY (*ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); void APIENTRY (*CullFace)(GLenum mode); void APIENTRY (*DeleteTextures)(GLsizei n, const GLuint *textures); void APIENTRY (*DisableClientState)(GLenum array); void APIENTRY (*EnableClientState)(GLenum array); void APIENTRY (*EndList)(void); void APIENTRY (*EdgeFlag)(GLboolean32 flag); void APIENTRY (*Flush)(void); void APIENTRY (*FrontFace)(GLenum mode); void APIENTRY (*Frustumf)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); GLuint APIENTRY (*GenLists)(GLsizei range); void APIENTRY (*GenTextures)(GLsizei n, GLuint *textures); void APIENTRY (*GetFloatv)(GLenum pname, GLfloat *params); void APIENTRY (*GetIntegerv)(GLenum pname, GLint *params); void APIENTRY (*Hint)(GLenum target, GLenum mode); void APIENTRY (*InitNames)(void); GLboolean APIENTRY (*IsList)(GLuint list); void APIENTRY (*Lightf)(GLenum light, GLenum pname, GLfloat param); void APIENTRY (*LightModeli)(GLenum pname, GLint param); void APIENTRY (*LightModelfv)(GLenum pname, const GLfloat *params); void APIENTRY (*LoadMatrixf)(const GLfloat *m); void APIENTRY (*LoadName)(GLuint name); void APIENTRY (*Materialf)(GLenum face, GLenum pname, GLfloat param); void APIENTRY (*MultMatrixf)(const GLfloat *m); void APIENTRY (*NewList)(GLuint list, GLenum mode); void APIENTRY (*Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz); void APIENTRY (*Normal3fv)(const GLfloat *v); void APIENTRY (*NormalPointer)(GLenum type, GLsizei stride, const GLvoid *pointer); void APIENTRY (*PixelStorei)(GLenum pname, GLint param); void APIENTRY (*PolygonMode)(GLenum face, GLenum mode); void APIENTRY (*PolygonOffset)(GLfloat factor, GLfloat units); void APIENTRY (*PopName)(void); void APIENTRY (*PushName)(GLuint name); GLint APIENTRY (*RenderMode)(GLenum mode); void APIENTRY (*SelectBuffer)(GLsizei size, GLuint *buffer); void APIENTRY (*Scalef)(GLfloat x, GLfloat y, GLfloat z); void APIENTRY (*ShadeModel)(GLenum mode); void APIENTRY (*TexCoord2f)(GLfloat s, GLfloat t); void APIENTRY (*TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q); void APIENTRY (*TexCoord2fv)(const GLfloat *v); void APIENTRY (*TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); void APIENTRY (*TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); void APIENTRY (*Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); void APIENTRY (*Vertex3fv)(const GLfloat *v); void APIENTRY (*VertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); void APIENTRY (*Viewport)(GLint x, GLint y, GLsizei width, GLsizei height); void APIENTRY (*swapbuffer)(void *buffer); GLsizei APIENTRY (*max_width)(void); GLsizei APIENTRY (*max_height)(void); void APIENTRY (*DeleteLists)(GLuint list, GLsizei range); void APIENTRY (*gluLookAtf)(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ); void APIENTRY (*exception_error)(void (CALLBACK *exception)(GLenum param) ); }; extern struct _gl_tiny gl; #ifdef __cplusplus } #endif #ifndef NFOSMESA_NO_MANGLE #undef information #define information (gl.information) #undef glBegin #define glBegin (gl.Begin) #undef glClear #define glClear (gl.Clear) #undef glClearColor #define glClearColor (gl.ClearColor) #undef glColor3f #define glColor3f (gl.Color3f) #undef glDisable #define glDisable (gl.Disable) #undef glEnable #define glEnable (gl.Enable) #undef glEnd #define glEnd (gl.End) #undef glLightfv #define glLightfv (gl.Lightfv) #undef glLoadIdentity #define glLoadIdentity (gl.LoadIdentity) #undef glMaterialfv #define glMaterialfv (gl.Materialfv) #undef glMatrixMode #define glMatrixMode (gl.MatrixMode) #undef glOrthof #define glOrthof (gl.Orthof) #undef glPopMatrix #define glPopMatrix (gl.PopMatrix) #undef glPushMatrix #define glPushMatrix (gl.PushMatrix) #undef glRotatef #define glRotatef (gl.Rotatef) #undef glTexEnvi #define glTexEnvi (gl.TexEnvi) #undef glTexParameteri #define glTexParameteri (gl.TexParameteri) #undef glTranslatef #define glTranslatef (gl.Translatef) #undef glVertex2f #define glVertex2f (gl.Vertex2f) #undef glVertex3f #define glVertex3f (gl.Vertex3f) #undef OSMesaCreateLDG #define OSMesaCreateLDG (gl.OSMesaCreateLDG) #undef OSMesaDestroyLDG #define OSMesaDestroyLDG (gl.OSMesaDestroyLDG) #undef glArrayElement #define glArrayElement (gl.ArrayElement) #undef glBindTexture #define glBindTexture (gl.BindTexture) #undef glCallList #define glCallList (gl.CallList) #undef glClearDepthf #define glClearDepthf (gl.ClearDepthf) #undef glColor4f #define glColor4f (gl.Color4f) #undef glColor3fv #define glColor3fv (gl.Color3fv) #undef glColor4fv #define glColor4fv (gl.Color4fv) #undef glColorMaterial #define glColorMaterial (gl.ColorMaterial) #undef glColorPointer #define glColorPointer (gl.ColorPointer) #undef glCullFace #define glCullFace (gl.CullFace) #undef glDeleteTextures #define glDeleteTextures (gl.DeleteTextures) #undef glDisableClientState #define glDisableClientState (gl.DisableClientState) #undef glEnableClientState #define glEnableClientState (gl.EnableClientState) #undef glEndList #define glEndList (gl.EndList) #undef glEdgeFlag #define glEdgeFlag (gl.EdgeFlag) #undef glFlush #define glFlush (gl.Flush) #undef glFrontFace #define glFrontFace (gl.FrontFace) #undef glFrustumf #define glFrustumf (gl.Frustumf) #undef glGenLists #define glGenLists (gl.GenLists) #undef glGenTextures #define glGenTextures (gl.GenTextures) #undef glGetFloatv #define glGetFloatv (gl.GetFloatv) #undef glGetIntegerv #define glGetIntegerv (gl.GetIntegerv) #undef glHint #define glHint (gl.Hint) #undef glInitNames #define glInitNames (gl.InitNames) #undef glIsList #define glIsList (gl.IsList) #undef glLightf #define glLightf (gl.Lightf) #undef glLightModeli #define glLightModeli (gl.LightModeli) #undef glLightModelfv #define glLightModelfv (gl.LightModelfv) #undef glLoadMatrixf #define glLoadMatrixf (gl.LoadMatrixf) #undef glLoadName #define glLoadName (gl.LoadName) #undef glMaterialf #define glMaterialf (gl.Materialf) #undef glMultMatrixf #define glMultMatrixf (gl.MultMatrixf) #undef glNewList #define glNewList (gl.NewList) #undef glNormal3f #define glNormal3f (gl.Normal3f) #undef glNormal3fv #define glNormal3fv (gl.Normal3fv) #undef glNormalPointer #define glNormalPointer (gl.NormalPointer) #undef glPixelStorei #define glPixelStorei (gl.PixelStorei) #undef glPolygonMode #define glPolygonMode (gl.PolygonMode) #undef glPolygonOffset #define glPolygonOffset (gl.PolygonOffset) #undef glPopName #define glPopName (gl.PopName) #undef glPushName #define glPushName (gl.PushName) #undef glRenderMode #define glRenderMode (gl.RenderMode) #undef glSelectBuffer #define glSelectBuffer (gl.SelectBuffer) #undef glScalef #define glScalef (gl.Scalef) #undef glShadeModel #define glShadeModel (gl.ShadeModel) #undef glTexCoord2f #define glTexCoord2f (gl.TexCoord2f) #undef glTexCoord4f #define glTexCoord4f (gl.TexCoord4f) #undef glTexCoord2fv #define glTexCoord2fv (gl.TexCoord2fv) #undef glTexCoordPointer #define glTexCoordPointer (gl.TexCoordPointer) #undef glTexImage2D #define glTexImage2D (gl.TexImage2D) #undef glVertex4f #define glVertex4f (gl.Vertex4f) #undef glVertex3fv #define glVertex3fv (gl.Vertex3fv) #undef glVertexPointer #define glVertexPointer (gl.VertexPointer) #undef glViewport #define glViewport (gl.Viewport) #undef swapbuffer #define swapbuffer (gl.swapbuffer) #undef max_width #define max_width (gl.max_width) #undef max_height #define max_height (gl.max_height) #undef glDeleteLists #define glDeleteLists (gl.DeleteLists) #undef gluLookAtf #define gluLookAtf (gl.gluLookAtf) #undef exception_error #define exception_error (gl.exception_error) #endif /* * Functions exported from TinyGL that take float arguments, * and conflict with OpenGL functions of the same name */ #undef glFrustum #define glFrustum glFrustumf #undef glClearDepth #define glClearDepth glClearDepthf #undef glOrtho #define glOrtho glOrthof #undef gluLookAt #define gluLookAt gluLookAtf /* fix bad name */ #undef information #define tinyglinformation gl.information /* * no-ops in TinyGL */ #undef glFinish #define glFinish() /* fix bad name */ #undef information #define tinyglinformation gl.information /* * Functions from OpenGL that are not implemented in TinyGL */ #define glPointSize(size) glPointSize_not_supported_by_tinygl() #define glLineWidth(width) glLineWidth_not_supported_by_tinygl() #define glDepthFunc(func) glDepthFunc_not_supported_by_tinygl() #define glBlendFunc(sfactor, dfactor) glBlendFunc_not_supported_by_tinygl() #define glTexEnvf(target, pname, param) glTexEnvf_not_supported_by_tinygl() #define glVertex2i(x, y) glVertex2i_not_supported_by_tinygl() #define glDepthMask(flag) glDepthMask_not_supported_by_tinygl() #define glFogi(pname, param) glFogi_not_supported_by_tinygl() #define glFogf(pname, param) glFogf_not_supported_by_tinygl() #define glFogiv(pname, params) glFogiv_not_supported_by_tinygl() #define glFogfv(pname, params) glFogfv_not_supported_by_tinygl() #define glRasterPos2f(x, y) glRasterPos2f_not_supported_by_tinygl() #define glPolygonStipple(mask) glPolygonStipple_not_supported_by_tinygl() #define glTexParameterf(target, pname, param) glTexParameterf_not_supported_by_tinygl() /* Functions generated: 83 */ #endif /* __SLB_TINY_GL_H__ */ aranym-1.1.0/atari/nfosmesa/slb/osmesa.h0000664000175000017500000216306013454637621016344 0ustar joyjoy#ifndef __NFOSMESA_H__ #define __NFOSMESA_H__ #include #include #include #include #if !defined(__MSHORT__) && (defined(__PUREC__) && __PUREC__ < 0x400) # define __MSHORT__ 1 #endif #if (!defined(__PUREC__) || !defined(__MSHORT__) || defined(__GEMLIB__)) && !defined(__USE_GEMLIB) #define __USE_GEMLIB 1 #endif #ifndef _WORD # if defined(__GEMLIB__) || defined(__USE_GEMLIB) # define _WORD short # else # define _WORD int # endif #endif #ifdef __cplusplus extern "C" { #endif /* * load & initialize NFOsmesa */ struct gl_public *slb_load_osmesa(const char *path); /* * unload NFOsmesa */ void slb_unload_osmesa(struct gl_public *pub); #ifdef __cplusplus } #endif #if !defined(__MSHORT__) && (defined(__PUREC__) && __PUREC__ < 0x400) # define __MSHORT__ 1 #endif #ifdef __cplusplus extern "C" { #endif #ifndef APIENTRY #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) #define APIENTRY __stdcall #elif defined(__PUREC__) #define APIENTRY __CDECL #else #define APIENTRY #endif #endif #ifndef CALLBACK #define CALLBACK APIENTRY #endif #ifndef GLAPIENTRY #define GLAPIENTRY APIENTRY #endif #ifndef APIENTRYP #define APIENTRYP APIENTRY * #endif #ifndef GLAPI #define GLAPI extern #endif #if !defined(__CDECL) #if defined(__PUREC__) #define __CDECL cdecl #else #define __CDECL #endif #endif #ifndef GL_VERSION_1_1 #define GL_VERSION_1_1 1 #ifdef __MSHORT__ typedef long GLint; /* 4-byte signed */ typedef unsigned long GLuint; /* 4-byte unsigned */ typedef unsigned long GLenum; /* 4-byte unsigned */ typedef unsigned long GLbitfield; /* 4-byte unsigned */ typedef long GLsizei; #else typedef int GLint; /* 4-byte signed */ typedef unsigned int GLuint; /* 4-byte unsigned */ typedef unsigned int GLenum; /* 4-byte unsigned */ typedef unsigned int GLbitfield; /* 4-byte unsigned */ typedef int GLsizei; #endif typedef unsigned char GLboolean; typedef signed char GLbyte; /* 1-byte signed */ typedef unsigned char GLubyte; /* 1-byte unsigned */ typedef short GLshort; /* 2-byte signed */ typedef unsigned short GLushort; /* 2-byte unsigned */ typedef float GLfloat; /* single precision float */ typedef float GLclampf; /* single precision float in [0, 1] */ typedef double GLdouble; /* double precision float */ typedef double GLclampd; /* double precision float in [0, 1] */ typedef void GLvoid; /* Boolean values */ #define GL_FALSE 0 #define GL_TRUE 1 /* Data types */ #define GL_BYTE 0x1400 #define GL_UNSIGNED_BYTE 0x1401 #define GL_SHORT 0x1402 #define GL_UNSIGNED_SHORT 0x1403 #define GL_INT 0x1404 #define GL_UNSIGNED_INT 0x1405 #define GL_FLOAT 0x1406 #define GL_DOUBLE 0x140A #define GL_2_BYTES 0x1407 #define GL_3_BYTES 0x1408 #define GL_4_BYTES 0x1409 /* Primitives */ #define GL_LINES 0x0001 #define GL_POINTS 0x0000 #define GL_LINE_STRIP 0x0003 #define GL_LINE_LOOP 0x0002 #define GL_TRIANGLES 0x0004 #define GL_TRIANGLE_STRIP 0x0005 #define GL_TRIANGLE_FAN 0x0006 #define GL_QUADS 0x0007 #define GL_QUAD_STRIP 0x0008 #define GL_POLYGON 0x0009 #define GL_EDGE_FLAG 0x0B43 /* Vertex Arrays */ #define GL_VERTEX_ARRAY 0x8074 #define GL_NORMAL_ARRAY 0x8075 #define GL_COLOR_ARRAY 0x8076 #define GL_INDEX_ARRAY 0x8077 #define GL_TEXTURE_COORD_ARRAY 0x8078 #define GL_EDGE_FLAG_ARRAY 0x8079 #define GL_VERTEX_ARRAY_SIZE 0x807A #define GL_VERTEX_ARRAY_TYPE 0x807B #define GL_VERTEX_ARRAY_STRIDE 0x807C #define GL_VERTEX_ARRAY_COUNT 0x807D #define GL_NORMAL_ARRAY_TYPE 0x807E #define GL_NORMAL_ARRAY_STRIDE 0x807F #define GL_NORMAL_ARRAY_COUNT 0x8080 #define GL_COLOR_ARRAY_SIZE 0x8081 #define GL_COLOR_ARRAY_TYPE 0x8082 #define GL_COLOR_ARRAY_STRIDE 0x8083 #define GL_COLOR_ARRAY_COUNT 0x8084 #define GL_INDEX_ARRAY_TYPE 0x8085 #define GL_INDEX_ARRAY_STRIDE 0x8086 #define GL_INDEX_ARRAY_COUNT 0x8087 #define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 #define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 #define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A #define GL_TEXTURE_COORD_ARRAY_COUNT 0x808B #define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C #define GL_EDGE_FLAG_ARRAY_COUNT 0x808D #define GL_VERTEX_ARRAY_POINTER 0x808E #define GL_NORMAL_ARRAY_POINTER 0x808F #define GL_COLOR_ARRAY_POINTER 0x8090 #define GL_INDEX_ARRAY_POINTER 0x8091 #define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 #define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 #define GL_V2F 0x2A20 #define GL_V3F 0x2A21 #define GL_C4UB_V2F 0x2A22 #define GL_C4UB_V3F 0x2A23 #define GL_C3F_V3F 0x2A24 #define GL_N3F_V3F 0x2A25 #define GL_C4F_N3F_V3F 0x2A26 #define GL_T2F_V3F 0x2A27 #define GL_T4F_V4F 0x2A28 #define GL_T2F_C4UB_V3F 0x2A29 #define GL_T2F_C3F_V3F 0x2A2A #define GL_T2F_N3F_V3F 0x2A2B #define GL_T2F_C4F_N3F_V3F 0x2A2C #define GL_T4F_C4F_N3F_V4F 0x2A2D /* Matrix Mode */ #define GL_MATRIX_MODE 0x0BA0 #define GL_MODELVIEW 0x1700 #define GL_PROJECTION 0x1701 #define GL_TEXTURE 0x1702 /* Points */ #define GL_POINT_SMOOTH 0x0B10 #define GL_POINT_SIZE 0x0B11 #define GL_POINT_SIZE_GRANULARITY 0x0B13 #define GL_POINT_SIZE_RANGE 0x0B12 /* Lines */ #define GL_LINE_SMOOTH 0x0B20 #define GL_LINE_STIPPLE 0x0B24 #define GL_LINE_STIPPLE_PATTERN 0x0B25 #define GL_LINE_STIPPLE_REPEAT 0x0B26 #define GL_LINE_WIDTH 0x0B21 #define GL_LINE_WIDTH_GRANULARITY 0x0B23 #define GL_LINE_WIDTH_RANGE 0x0B22 /* Polygons */ #define GL_POINT 0x1B00 #define GL_LINE 0x1B01 #define GL_FILL 0x1B02 #define GL_CCW 0x0901 #define GL_CW 0x0900 #define GL_FRONT 0x0404 #define GL_BACK 0x0405 #define GL_CULL_FACE 0x0B44 #define GL_CULL_FACE_MODE 0x0B45 #define GL_POLYGON_SMOOTH 0x0B41 #define GL_POLYGON_STIPPLE 0x0B42 #define GL_FRONT_FACE 0x0B46 #define GL_POLYGON_MODE 0x0B40 #define GL_POLYGON_OFFSET_FACTOR 0x8038 #define GL_POLYGON_OFFSET_UNITS 0x2A00 #define GL_POLYGON_OFFSET_POINT 0x2A01 #define GL_POLYGON_OFFSET_LINE 0x2A02 #define GL_POLYGON_OFFSET_FILL 0x8037 /* Display Lists */ #define GL_COMPILE 0x1300 #define GL_COMPILE_AND_EXECUTE 0x1301 #define GL_LIST_BASE 0x0B32 #define GL_LIST_INDEX 0x0B33 #define GL_LIST_MODE 0x0B30 /* Depth buffer */ #define GL_NEVER 0x0200 #define GL_LESS 0x0201 #define GL_GEQUAL 0x0206 #define GL_LEQUAL 0x0203 #define GL_GREATER 0x0204 #define GL_NOTEQUAL 0x0205 #define GL_EQUAL 0x0202 #define GL_ALWAYS 0x0207 #define GL_DEPTH_TEST 0x0B71 #define GL_DEPTH_BITS 0x0D56 #define GL_DEPTH_CLEAR_VALUE 0x0B73 #define GL_DEPTH_FUNC 0x0B74 #define GL_DEPTH_RANGE 0x0B70 #define GL_DEPTH_WRITEMASK 0x0B72 #define GL_DEPTH_COMPONENT 0x1902 /* Lighting */ #define GL_LIGHTING 0x0B50 #define GL_LIGHT0 0x4000 #define GL_LIGHT1 0x4001 #define GL_LIGHT2 0x4002 #define GL_LIGHT3 0x4003 #define GL_LIGHT4 0x4004 #define GL_LIGHT5 0x4005 #define GL_LIGHT6 0x4006 #define GL_LIGHT7 0x4007 #define GL_SPOT_EXPONENT 0x1205 #define GL_SPOT_CUTOFF 0x1206 #define GL_CONSTANT_ATTENUATION 0x1207 #define GL_LINEAR_ATTENUATION 0x1208 #define GL_QUADRATIC_ATTENUATION 0x1209 #define GL_AMBIENT 0x1200 #define GL_DIFFUSE 0x1201 #define GL_SPECULAR 0x1202 #define GL_SHININESS 0x1601 #define GL_EMISSION 0x1600 #define GL_POSITION 0x1203 #define GL_SPOT_DIRECTION 0x1204 #define GL_AMBIENT_AND_DIFFUSE 0x1602 #define GL_COLOR_INDEXES 0x1603 #define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 #define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 #define GL_LIGHT_MODEL_AMBIENT 0x0B53 #define GL_FRONT_AND_BACK 0x0408 #define GL_SHADE_MODEL 0x0B54 #define GL_FLAT 0x1D00 #define GL_SMOOTH 0x1D01 #define GL_COLOR_MATERIAL 0x0B57 #define GL_COLOR_MATERIAL_FACE 0x0B55 #define GL_COLOR_MATERIAL_PARAMETER 0x0B56 #define GL_NORMALIZE 0x0BA1 /* User clipping planes */ #define GL_CLIP_PLANE0 0x3000 #define GL_CLIP_PLANE1 0x3001 #define GL_CLIP_PLANE2 0x3002 #define GL_CLIP_PLANE3 0x3003 #define GL_CLIP_PLANE4 0x3004 #define GL_CLIP_PLANE5 0x3005 /* Accumulation buffer */ #define GL_ACCUM_RED_BITS 0x0D58 #define GL_ACCUM_GREEN_BITS 0x0D59 #define GL_ACCUM_BLUE_BITS 0x0D5A #define GL_ACCUM_ALPHA_BITS 0x0D5B #define GL_ACCUM_CLEAR_VALUE 0x0B80 #define GL_ACCUM 0x0100 #define GL_ADD 0x0104 #define GL_LOAD 0x0101 #define GL_MULT 0x0103 #define GL_RETURN 0x0102 /* Alpha testing */ #define GL_ALPHA_TEST 0x0BC0 #define GL_ALPHA_TEST_REF 0x0BC2 #define GL_ALPHA_TEST_FUNC 0x0BC1 /* Blending */ #define GL_BLEND 0x0BE2 #define GL_BLEND_SRC 0x0BE1 #define GL_BLEND_DST 0x0BE0 #define GL_ZERO 0 #define GL_ONE 1 #define GL_SRC_COLOR 0x0300 #define GL_ONE_MINUS_SRC_COLOR 0x0301 #define GL_DST_COLOR 0x0306 #define GL_ONE_MINUS_DST_COLOR 0x0307 #define GL_SRC_ALPHA 0x0302 #define GL_ONE_MINUS_SRC_ALPHA 0x0303 #define GL_DST_ALPHA 0x0304 #define GL_ONE_MINUS_DST_ALPHA 0x0305 #define GL_SRC_ALPHA_SATURATE 0x0308 #define GL_CONSTANT_COLOR 0x8001 #define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 #define GL_CONSTANT_ALPHA 0x8003 #define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 /* Render Mode */ #define GL_FEEDBACK 0x1C01 #define GL_RENDER 0x1C00 #define GL_SELECT 0x1C02 /* Feedback */ #define GL_2D 0x0600 #define GL_3D 0x0601 #define GL_3D_COLOR 0x0602 #define GL_3D_COLOR_TEXTURE 0x0603 #define GL_4D_COLOR_TEXTURE 0x0604 #define GL_POINT_TOKEN 0x0701 #define GL_LINE_TOKEN 0x0702 #define GL_LINE_RESET_TOKEN 0x0707 #define GL_POLYGON_TOKEN 0x0703 #define GL_BITMAP_TOKEN 0x0704 #define GL_DRAW_PIXEL_TOKEN 0x0705 #define GL_COPY_PIXEL_TOKEN 0x0706 #define GL_PASS_THROUGH_TOKEN 0x0700 #define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 #define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 #define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 /* Fog */ #define GL_FOG 0x0B60 #define GL_FOG_MODE 0x0B65 #define GL_FOG_DENSITY 0x0B62 #define GL_FOG_COLOR 0x0B66 #define GL_FOG_INDEX 0x0B61 #define GL_FOG_START 0x0B63 #define GL_FOG_END 0x0B64 #define GL_LINEAR 0x2601 #define GL_EXP 0x0800 #define GL_EXP2 0x0801 /* Logic Ops */ #define GL_LOGIC_OP 0x0BF1 #define GL_INDEX_LOGIC_OP 0x0BF1 #define GL_COLOR_LOGIC_OP 0x0BF2 #define GL_LOGIC_OP_MODE 0x0BF0 #define GL_CLEAR 0x1500 #define GL_SET 0x150F #define GL_COPY 0x1503 #define GL_COPY_INVERTED 0x150C #define GL_NOOP 0x1505 #define GL_INVERT 0x150A #define GL_AND 0x1501 #define GL_NAND 0x150E #define GL_OR 0x1507 #define GL_NOR 0x1508 #define GL_XOR 0x1506 #define GL_EQUIV 0x1509 #define GL_AND_REVERSE 0x1502 #define GL_AND_INVERTED 0x1504 #define GL_OR_REVERSE 0x150B #define GL_OR_INVERTED 0x150D /* Stencil */ #define GL_STENCIL_TEST 0x0B90 #define GL_STENCIL_WRITEMASK 0x0B98 #define GL_STENCIL_BITS 0x0D57 #define GL_STENCIL_FUNC 0x0B92 #define GL_STENCIL_VALUE_MASK 0x0B93 #define GL_STENCIL_REF 0x0B97 #define GL_STENCIL_FAIL 0x0B94 #define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 #define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 #define GL_STENCIL_CLEAR_VALUE 0x0B91 #define GL_STENCIL_INDEX 0x1901 #define GL_KEEP 0x1E00 #define GL_REPLACE 0x1E01 #define GL_INCR 0x1E02 #define GL_DECR 0x1E03 /* Buffers, Pixel Drawing/Reading */ #define GL_NONE 0 #define GL_LEFT 0x0406 #define GL_RIGHT 0x0407 #define GL_FRONT_LEFT 0x0400 #define GL_FRONT_RIGHT 0x0401 #define GL_BACK_LEFT 0x0402 #define GL_BACK_RIGHT 0x0403 #define GL_AUX0 0x0409 #define GL_AUX1 0x040A #define GL_AUX2 0x040B #define GL_AUX3 0x040C #define GL_COLOR_INDEX 0x1900 #define GL_RED 0x1903 #define GL_GREEN 0x1904 #define GL_BLUE 0x1905 #define GL_ALPHA 0x1906 #define GL_LUMINANCE 0x1909 #define GL_LUMINANCE_ALPHA 0x190A #define GL_ALPHA_BITS 0x0D55 #define GL_RED_BITS 0x0D52 #define GL_GREEN_BITS 0x0D53 #define GL_BLUE_BITS 0x0D54 #define GL_INDEX_BITS 0x0D51 #define GL_SUBPIXEL_BITS 0x0D50 #define GL_AUX_BUFFERS 0x0C00 #define GL_READ_BUFFER 0x0C02 #define GL_DRAW_BUFFER 0x0C01 #define GL_DOUBLEBUFFER 0x0C32 #define GL_STEREO 0x0C33 #define GL_BITMAP 0x1A00 #define GL_COLOR 0x1800 #define GL_DEPTH 0x1801 #define GL_STENCIL 0x1802 #define GL_DITHER 0x0BD0 #define GL_RGB 0x1907 #define GL_RGBA 0x1908 /* Implementation limits */ #define GL_MAX_LIST_NESTING 0x0B31 #define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 #define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 #define GL_MAX_NAME_STACK_DEPTH 0x0D37 #define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 #define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 #define GL_MAX_EVAL_ORDER 0x0D30 #define GL_MAX_LIGHTS 0x0D31 #define GL_MAX_CLIP_PLANES 0x0D32 #define GL_MAX_TEXTURE_SIZE 0x0D33 #define GL_MAX_PIXEL_MAP_TABLE 0x0D34 #define GL_MAX_VIEWPORT_DIMS 0x0D3A #define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B #define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 /* Gets */ #define GL_ATTRIB_STACK_DEPTH 0x0BB0 #define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 #define GL_COLOR_CLEAR_VALUE 0x0C22 #define GL_COLOR_WRITEMASK 0x0C23 #define GL_CURRENT_INDEX 0x0B01 #define GL_CURRENT_COLOR 0x0B00 #define GL_CURRENT_NORMAL 0x0B02 #define GL_CURRENT_RASTER_COLOR 0x0B04 #define GL_CURRENT_RASTER_DISTANCE 0x0B09 #define GL_CURRENT_RASTER_INDEX 0x0B05 #define GL_CURRENT_RASTER_POSITION 0x0B07 #define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 #define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 #define GL_CURRENT_TEXTURE_COORDS 0x0B03 #define GL_INDEX_CLEAR_VALUE 0x0C20 #define GL_INDEX_MODE 0x0C30 #define GL_INDEX_WRITEMASK 0x0C21 #define GL_MODELVIEW_MATRIX 0x0BA6 #define GL_MODELVIEW_STACK_DEPTH 0x0BA3 #define GL_NAME_STACK_DEPTH 0x0D70 #define GL_PROJECTION_MATRIX 0x0BA7 #define GL_PROJECTION_STACK_DEPTH 0x0BA4 #define GL_RENDER_MODE 0x0C40 #define GL_RGBA_MODE 0x0C31 #define GL_TEXTURE_MATRIX 0x0BA8 #define GL_TEXTURE_STACK_DEPTH 0x0BA5 #define GL_VIEWPORT 0x0BA2 #define GL_COLOR_MATRIX 0x80B1 #define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 /* Evaluators */ #define GL_AUTO_NORMAL 0x0D80 #define GL_MAP1_COLOR_4 0x0D90 #define GL_MAP1_GRID_DOMAIN 0x0DD0 #define GL_MAP1_GRID_SEGMENTS 0x0DD1 #define GL_MAP1_INDEX 0x0D91 #define GL_MAP1_NORMAL 0x0D92 #define GL_MAP1_TEXTURE_COORD_1 0x0D93 #define GL_MAP1_TEXTURE_COORD_2 0x0D94 #define GL_MAP1_TEXTURE_COORD_3 0x0D95 #define GL_MAP1_TEXTURE_COORD_4 0x0D96 #define GL_MAP1_VERTEX_3 0x0D97 #define GL_MAP1_VERTEX_4 0x0D98 #define GL_MAP2_COLOR_4 0x0DB0 #define GL_MAP2_GRID_DOMAIN 0x0DD2 #define GL_MAP2_GRID_SEGMENTS 0x0DD3 #define GL_MAP2_INDEX 0x0DB1 #define GL_MAP2_NORMAL 0x0DB2 #define GL_MAP2_TEXTURE_COORD_1 0x0DB3 #define GL_MAP2_TEXTURE_COORD_2 0x0DB4 #define GL_MAP2_TEXTURE_COORD_3 0x0DB5 #define GL_MAP2_TEXTURE_COORD_4 0x0DB6 #define GL_MAP2_VERTEX_3 0x0DB7 #define GL_MAP2_VERTEX_4 0x0DB8 #define GL_COEFF 0x0A00 #define GL_DOMAIN 0x0A02 #define GL_ORDER 0x0A01 /* Hints */ #define GL_FOG_HINT 0x0C54 #define GL_LINE_SMOOTH_HINT 0x0C52 #define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 #define GL_POINT_SMOOTH_HINT 0x0C51 #define GL_POLYGON_SMOOTH_HINT 0x0C53 #define GL_DONT_CARE 0x1100 #define GL_FASTEST 0x1101 #define GL_NICEST 0x1102 /* Scissor box */ #define GL_SCISSOR_TEST 0x0C11 #define GL_SCISSOR_BOX 0x0C10 /* Pixel Mode / Transfer */ #define GL_MAP_COLOR 0x0D10 #define GL_MAP_STENCIL 0x0D11 #define GL_INDEX_SHIFT 0x0D12 #define GL_INDEX_OFFSET 0x0D13 #define GL_RED_SCALE 0x0D14 #define GL_RED_BIAS 0x0D15 #define GL_GREEN_SCALE 0x0D18 #define GL_GREEN_BIAS 0x0D19 #define GL_BLUE_SCALE 0x0D1A #define GL_BLUE_BIAS 0x0D1B #define GL_ALPHA_SCALE 0x0D1C #define GL_ALPHA_BIAS 0x0D1D #define GL_DEPTH_SCALE 0x0D1E #define GL_DEPTH_BIAS 0x0D1F #define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 #define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 #define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 #define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 #define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 #define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 #define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 #define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 #define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 #define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 #define GL_PIXEL_MAP_S_TO_S 0x0C71 #define GL_PIXEL_MAP_I_TO_I 0x0C70 #define GL_PIXEL_MAP_I_TO_R 0x0C72 #define GL_PIXEL_MAP_I_TO_G 0x0C73 #define GL_PIXEL_MAP_I_TO_B 0x0C74 #define GL_PIXEL_MAP_I_TO_A 0x0C75 #define GL_PIXEL_MAP_R_TO_R 0x0C76 #define GL_PIXEL_MAP_G_TO_G 0x0C77 #define GL_PIXEL_MAP_B_TO_B 0x0C78 #define GL_PIXEL_MAP_A_TO_A 0x0C79 #define GL_PACK_ALIGNMENT 0x0D05 #define GL_PACK_LSB_FIRST 0x0D01 #define GL_PACK_ROW_LENGTH 0x0D02 #define GL_PACK_SKIP_PIXELS 0x0D04 #define GL_PACK_SKIP_ROWS 0x0D03 #define GL_PACK_SWAP_BYTES 0x0D00 #define GL_UNPACK_ALIGNMENT 0x0CF5 #define GL_UNPACK_LSB_FIRST 0x0CF1 #define GL_UNPACK_ROW_LENGTH 0x0CF2 #define GL_UNPACK_SKIP_PIXELS 0x0CF4 #define GL_UNPACK_SKIP_ROWS 0x0CF3 #define GL_UNPACK_SWAP_BYTES 0x0CF0 #define GL_ZOOM_X 0x0D16 #define GL_ZOOM_Y 0x0D17 /* Texture mapping */ #define GL_TEXTURE_ENV 0x2300 #define GL_TEXTURE_ENV_MODE 0x2200 #define GL_TEXTURE_1D 0x0DE0 #define GL_TEXTURE_2D 0x0DE1 #define GL_TEXTURE_WRAP_S 0x2802 #define GL_TEXTURE_WRAP_T 0x2803 #define GL_TEXTURE_MAG_FILTER 0x2800 #define GL_TEXTURE_MIN_FILTER 0x2801 #define GL_TEXTURE_ENV_COLOR 0x2201 #define GL_TEXTURE_GEN_S 0x0C60 #define GL_TEXTURE_GEN_T 0x0C61 #define GL_TEXTURE_GEN_MODE 0x2500 #define GL_TEXTURE_BORDER_COLOR 0x1004 #define GL_TEXTURE_WIDTH 0x1000 #define GL_TEXTURE_HEIGHT 0x1001 #define GL_TEXTURE_BORDER 0x1005 #define GL_TEXTURE_COMPONENTS 0x1003 #define GL_TEXTURE_RED_SIZE 0x805C #define GL_TEXTURE_GREEN_SIZE 0x805D #define GL_TEXTURE_BLUE_SIZE 0x805E #define GL_TEXTURE_ALPHA_SIZE 0x805F #define GL_TEXTURE_LUMINANCE_SIZE 0x8060 #define GL_TEXTURE_INTENSITY_SIZE 0x8061 #define GL_NEAREST_MIPMAP_NEAREST 0x2700 #define GL_NEAREST_MIPMAP_LINEAR 0x2702 #define GL_LINEAR_MIPMAP_NEAREST 0x2701 #define GL_LINEAR_MIPMAP_LINEAR 0x2703 #define GL_OBJECT_LINEAR 0x2401 #define GL_OBJECT_PLANE 0x2501 #define GL_EYE_LINEAR 0x2400 #define GL_EYE_PLANE 0x2502 #define GL_SPHERE_MAP 0x2402 #define GL_DECAL 0x2101 #define GL_MODULATE 0x2100 #define GL_NEAREST 0x2600 #define GL_REPEAT 0x2901 #define GL_CLAMP 0x2900 #define GL_S 0x2000 #define GL_T 0x2001 #define GL_R 0x2002 #define GL_Q 0x2003 #define GL_TEXTURE_GEN_R 0x0C62 #define GL_TEXTURE_GEN_Q 0x0C63 #define GL_PROXY_TEXTURE_1D 0x8063 #define GL_PROXY_TEXTURE_2D 0x8064 #define GL_TEXTURE_PRIORITY 0x8066 #define GL_TEXTURE_RESIDENT 0x8067 #define GL_TEXTURE_BINDING_1D 0x8068 #define GL_TEXTURE_BINDING_2D 0x8069 /* Internal texture formats */ #define GL_ALPHA4 0x803B #define GL_ALPHA8 0x803C #define GL_ALPHA12 0x803D #define GL_ALPHA16 0x803E #define GL_LUMINANCE4 0x803F #define GL_LUMINANCE8 0x8040 #define GL_LUMINANCE12 0x8041 #define GL_LUMINANCE16 0x8042 #define GL_LUMINANCE4_ALPHA4 0x8043 #define GL_LUMINANCE6_ALPHA2 0x8044 #define GL_LUMINANCE8_ALPHA8 0x8045 #define GL_LUMINANCE12_ALPHA4 0x8046 #define GL_LUMINANCE12_ALPHA12 0x8047 #define GL_LUMINANCE16_ALPHA16 0x8048 #define GL_INTENSITY 0x8049 #define GL_INTENSITY4 0x804A #define GL_INTENSITY8 0x804B #define GL_INTENSITY12 0x804C #define GL_INTENSITY16 0x804D #define GL_R3_G3_B2 0x2A10 #define GL_RGB4 0x804F #define GL_RGB5 0x8050 #define GL_RGB8 0x8051 #define GL_RGB10 0x8052 #define GL_RGB12 0x8053 #define GL_RGB16 0x8054 #define GL_RGBA2 0x8055 #define GL_RGBA4 0x8056 #define GL_RGB5_A1 0x8057 #define GL_RGBA8 0x8058 #define GL_RGB10_A2 0x8059 #define GL_RGBA12 0x805A #define GL_RGBA16 0x805B /* Utility */ #define GL_VENDOR 0x1F00 #define GL_RENDERER 0x1F01 #define GL_VERSION 0x1F02 #define GL_EXTENSIONS 0x1F03 /* Errors */ #define GL_NO_ERROR 0 #define GL_INVALID_VALUE 0x0501 #define GL_INVALID_ENUM 0x0500 #define GL_INVALID_OPERATION 0x0502 #define GL_STACK_OVERFLOW 0x0503 #define GL_STACK_UNDERFLOW 0x0504 #define GL_OUT_OF_MEMORY 0x0505 /* * 1.0 Extensions */ /* GL_EXT_blend_minmax and GL_EXT_blend_color */ #define GL_CONSTANT_COLOR_EXT 0x8001 #define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 #define GL_CONSTANT_ALPHA_EXT 0x8003 #define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 #define GL_BLEND_EQUATION_EXT 0x8009 #define GL_MIN_EXT 0x8007 #define GL_MAX_EXT 0x8008 #define GL_FUNC_ADD_EXT 0x8006 #define GL_FUNC_SUBTRACT_EXT 0x800A #define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B #define GL_BLEND_COLOR_EXT 0x8005 /* GL_EXT_polygon_offset */ #define GL_POLYGON_OFFSET_EXT 0x8037 #define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 #define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 /* GL_EXT_vertex_array */ #define GL_VERTEX_ARRAY_EXT 0x8074 #define GL_NORMAL_ARRAY_EXT 0x8075 #define GL_COLOR_ARRAY_EXT 0x8076 #define GL_INDEX_ARRAY_EXT 0x8077 #define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 #define GL_EDGE_FLAG_ARRAY_EXT 0x8079 #define GL_VERTEX_ARRAY_SIZE_EXT 0x807A #define GL_VERTEX_ARRAY_TYPE_EXT 0x807B #define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C #define GL_VERTEX_ARRAY_COUNT_EXT 0x807D #define GL_NORMAL_ARRAY_TYPE_EXT 0x807E #define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F #define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 #define GL_COLOR_ARRAY_SIZE_EXT 0x8081 #define GL_COLOR_ARRAY_TYPE_EXT 0x8082 #define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 #define GL_COLOR_ARRAY_COUNT_EXT 0x8084 #define GL_INDEX_ARRAY_TYPE_EXT 0x8085 #define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 #define GL_INDEX_ARRAY_COUNT_EXT 0x8087 #define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 #define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 #define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A #define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B #define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C #define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D #define GL_VERTEX_ARRAY_POINTER_EXT 0x808E #define GL_NORMAL_ARRAY_POINTER_EXT 0x808F #define GL_COLOR_ARRAY_POINTER_EXT 0x8090 #define GL_INDEX_ARRAY_POINTER_EXT 0x8091 #define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 #define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 /* GL_EXT_texture_object */ #define GL_TEXTURE_PRIORITY_EXT 0x8066 #define GL_TEXTURE_RESIDENT_EXT 0x8067 #define GL_TEXTURE_1D_BINDING_EXT 0x8068 #define GL_TEXTURE_2D_BINDING_EXT 0x8069 /* GL_EXT_texture3D */ #define GL_PACK_SKIP_IMAGES_EXT 0x806B #define GL_PACK_IMAGE_HEIGHT_EXT 0x806C #define GL_UNPACK_SKIP_IMAGES_EXT 0x806D #define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E #define GL_TEXTURE_3D_EXT 0x806F #define GL_PROXY_TEXTURE_3D_EXT 0x8070 #define GL_TEXTURE_DEPTH_EXT 0x8071 #define GL_TEXTURE_WRAP_R_EXT 0x8072 #define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 #define GL_TEXTURE_3D_BINDING_EXT 0x806A /* GL_EXT_paletted_texture */ #define GL_TABLE_TOO_LARGE_EXT 0x8031 #define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 #define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 #define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA #define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB #define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC #define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD #define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE #define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF #define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED #define GL_COLOR_INDEX1_EXT 0x80E2 #define GL_COLOR_INDEX2_EXT 0x80E3 #define GL_COLOR_INDEX4_EXT 0x80E4 #define GL_COLOR_INDEX8_EXT 0x80E5 #define GL_COLOR_INDEX12_EXT 0x80E6 #define GL_COLOR_INDEX16_EXT 0x80E7 /* GL_EXT_shared_texture_palette */ #define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB #if 0 /* GL_SGIS_texture_lod */ #define GL_TEXTURE_MIN_LOD_SGIS 0x813A #define GL_TEXTURE_MAX_LOD_SGIS 0x813B #define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C #define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D #endif /* GL_EXT_point_parameters */ #define GL_POINT_SIZE_MIN_EXT 0x8126 #define GL_POINT_SIZE_MAX_EXT 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 #define GL_DISTANCE_ATTENUATION_EXT 0x8129 #define GL_CURRENT_BIT 0x00000001L #define GL_POINT_BIT 0x00000002L #define GL_LINE_BIT 0x00000004L #define GL_POLYGON_BIT 0x00000008L #define GL_POLYGON_STIPPLE_BIT 0x00000010L #define GL_PIXEL_MODE_BIT 0x00000020L #define GL_LIGHTING_BIT 0x00000040L #define GL_FOG_BIT 0x00000080L #define GL_DEPTH_BUFFER_BIT 0x00000100L #define GL_ACCUM_BUFFER_BIT 0x00000200L #define GL_STENCIL_BUFFER_BIT 0x00000400L #define GL_VIEWPORT_BIT 0x00000800L #define GL_TRANSFORM_BIT 0x00001000L #define GL_ENABLE_BIT 0x00002000L #define GL_COLOR_BUFFER_BIT 0x00004000L #define GL_HINT_BIT 0x00008000L #define GL_EVAL_BIT 0x00010000L #define GL_LIST_BIT 0x00020000L #define GL_TEXTURE_BIT 0x00040000L #define GL_SCISSOR_BIT 0x00080000L #define GL_ALL_ATTRIB_BITS 0x000fffffL #define GL_CLIENT_PIXEL_STORE_BIT 0x00000001L #define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002L #define GL_CLIENT_ALL_ATTRIB_BITS 0x0000FFFFL GLAPI void GLAPIENTRY glEnable(GLenum cap); GLAPI void GLAPIENTRY glDisable(GLenum cap); GLAPI void GLAPIENTRY glShadeModel(GLenum mode); GLAPI void GLAPIENTRY glCullFace(GLenum mode); GLAPI void GLAPIENTRY glPolygonMode(GLenum face, GLenum mode); GLAPI void GLAPIENTRY glBegin(GLenum mode); GLAPI void GLAPIENTRY glEnd(void); GLAPI void GLAPIENTRY glVertex2f(GLfloat x, GLfloat y); GLAPI void GLAPIENTRY glVertex2d(GLdouble x, GLdouble y); GLAPI void GLAPIENTRY glVertex2fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex2dv(const GLdouble *v); GLAPI void GLAPIENTRY glVertex3f(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glVertex3d(GLdouble x, GLdouble y, GLdouble z); GLAPI void GLAPIENTRY glVertex3fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex3dv(const GLdouble *v); GLAPI void GLAPIENTRY glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void GLAPIENTRY glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void GLAPIENTRY glVertex4fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex4dv(const GLdouble *v); GLAPI void GLAPIENTRY glColor3f(GLfloat red, GLfloat green, GLfloat blue); GLAPI void GLAPIENTRY glColor3d(GLdouble red, GLdouble green, GLdouble blue); GLAPI void GLAPIENTRY glColor3fv(const GLfloat *v); GLAPI void GLAPIENTRY glColor3dv(const GLdouble *v); GLAPI void GLAPIENTRY glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); GLAPI void GLAPIENTRY glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); GLAPI void GLAPIENTRY glColor4fv(const GLfloat *v); GLAPI void GLAPIENTRY glColor4dv(const GLdouble *v); GLAPI void GLAPIENTRY glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); GLAPI void GLAPIENTRY glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); GLAPI void GLAPIENTRY glNormal3fv(const GLfloat *v); GLAPI void GLAPIENTRY glNormal3dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord1f(GLfloat s); GLAPI void GLAPIENTRY glTexCoord1d(GLdouble s); GLAPI void GLAPIENTRY glTexCoord1fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord1dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord2f(GLfloat s, GLfloat t); GLAPI void GLAPIENTRY glTexCoord2d(GLdouble s, GLdouble t); GLAPI void GLAPIENTRY glTexCoord2fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord2dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); GLAPI void GLAPIENTRY glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); GLAPI void GLAPIENTRY glTexCoord3fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord3dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); GLAPI void GLAPIENTRY glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); GLAPI void GLAPIENTRY glTexCoord4fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord4dv(const GLdouble *v); GLAPI void GLAPIENTRY glEdgeFlag(GLboolean flag); /* matrix */ GLAPI void GLAPIENTRY glMatrixMode(GLenum mode); GLAPI void GLAPIENTRY glLoadMatrixf(const GLfloat *m); GLAPI void GLAPIENTRY glLoadIdentity(void); GLAPI void GLAPIENTRY glMultMatrixf(const GLfloat *m); GLAPI void GLAPIENTRY glPushMatrix(void); GLAPI void GLAPIENTRY glPopMatrix(void); GLAPI void GLAPIENTRY glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glTranslatef(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glScalef(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glViewport(GLint x, GLint y, GLint width, GLint height); GLAPI void GLAPIENTRY glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val); GLAPI void GLAPIENTRY glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val); /* lists */ GLAPI GLuint GLAPIENTRY glGenLists(GLsizei range); GLAPI GLboolean GLAPIENTRY glIsList(GLuint list); GLAPI void GLAPIENTRY glNewList(GLuint list, GLenum mode); GLAPI void GLAPIENTRY glEndList(void); GLAPI void GLAPIENTRY glCallList(GLuint list); GLAPI void GLAPIENTRY glDeleteLists(GLuint list, GLsizei range); /* clear */ GLAPI void GLAPIENTRY glClear(GLbitfield mask); GLAPI void GLAPIENTRY glClearColor(GLfloat r, GLfloat g, GLfloat b, GLfloat a); GLAPI void GLAPIENTRY glClearDepth(GLdouble depth); GLAPI void GLAPIENTRY glClearDepthf(GLfloat depth); /* selection */ GLAPI GLint GLAPIENTRY glRenderMode(GLenum mode); GLAPI void GLAPIENTRY glSelectBuffer(GLsizei size, GLuint *buf); GLAPI void GLAPIENTRY glInitNames(void); GLAPI void GLAPIENTRY glPushName(GLuint name); GLAPI void GLAPIENTRY glPopName(void); GLAPI void GLAPIENTRY glLoadName(GLuint name); /* textures */ GLAPI void GLAPIENTRY glGenTextures(GLsizei n, GLuint *textures); GLAPI void GLAPIENTRY glDeleteTextures(GLsizei n, const GLuint *textures); GLAPI void GLAPIENTRY glBindTexture(GLenum target, GLuint texture); GLAPI void GLAPIENTRY glTexImage2D(GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); GLAPI void GLAPIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param); GLAPI void GLAPIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param); GLAPI void GLAPIENTRY glPixelStorei(GLenum pname, GLint param); /* lighting */ GLAPI void GLAPIENTRY glMaterialfv(GLenum face, GLenum pname, const GLfloat *v); GLAPI void GLAPIENTRY glMaterialf(GLenum mode, GLenum pname, GLfloat v); GLAPI void GLAPIENTRY glColorMaterial(GLenum face, GLenum mode); GLAPI void GLAPIENTRY glLightfv(GLenum light, GLenum pname, const GLfloat *v); GLAPI void GLAPIENTRY glLightf(GLenum light, GLenum pname, GLfloat v); GLAPI void GLAPIENTRY glLightModeli(GLenum pname, GLint param); GLAPI void GLAPIENTRY glLightModelfv(GLenum pname, const GLfloat *param); /* misc */ GLAPI void GLAPIENTRY glFlush(void); GLAPI void GLAPIENTRY glHint(GLenum target, GLenum mode); GLAPI void GLAPIENTRY glGetIntegerv(GLenum pname, GLint *params); GLAPI void GLAPIENTRY glGetFloatv(GLenum pname, GLfloat *v); GLAPI void GLAPIENTRY glFrontFace(GLenum mode); /* opengl 1.2 arrays */ GLAPI void GLAPIENTRY glEnableClientState(GLenum array); GLAPI void GLAPIENTRY glDisableClientState(GLenum array); GLAPI void GLAPIENTRY glArrayElement(GLint i); GLAPI void GLAPIENTRY glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); /* opengl 1.2 polygon offset */ GLAPI void GLAPIENTRY glPolygonOffset(GLfloat factor, GLfloat units); #endif /* GL_VERSION_1_1 */ #ifndef GL_VERSION_1_5 #ifndef __GLintptr_defined #include #ifdef __APPLE__ typedef intptr_t GLsizeiptr; typedef intptr_t GLintptr; #else typedef ptrdiff_t GLsizeiptr; typedef ptrdiff_t GLintptr; #endif #define __GLintptr_defined #endif #endif #ifdef __NFOSMESA_H__ #include #endif #ifndef GL_VERSION_2_0 #define GL_VERSION_2_0 1 typedef char GLchar; #endif #ifndef GL_ARB_vertex_buffer_object #define GL_ARB_vertex_buffer_object 1 #ifdef __APPLE__ typedef intptr_t GLsizeiptrARB; typedef intptr_t GLintptrARB; #else typedef ptrdiff_t GLsizeiptrARB; typedef ptrdiff_t GLintptrARB; #endif #endif #ifndef GL_NV_half_float #define GL_NV_half_float 1 typedef unsigned short GLhalfNV; #endif #ifndef GL_NV_vdpau_interop #define GL_NV_vdpau_interop 1 typedef GLintptr GLvdpauSurfaceNV; #endif #ifndef GL_ARB_cl_event #define GL_ARB_cl_event 1 #ifdef __PUREC__ struct _cl_context { int dummy; }; struct _cl_event { int dummy; }; #else struct _cl_context; struct _cl_event; #endif #endif #if !defined(GL_ARB_sync) && !defined(__TINY_GL_H__) #define GL_ARB_sync 1 #if defined(__GNUC__) || (defined(LLONG_MAX) && LLONG_MAX > 2147483647L) typedef int64_t GLint64; typedef uint64_t GLuint64; #else typedef struct { long hi; unsigned long lo; } GLint64; typedef struct { unsigned long hi; unsigned long lo; } GLuint64; #endif #ifdef __PUREC__ struct __GLsync { int dummy; }; #endif typedef struct __GLsync *GLsync; #endif #if !defined(GL_EXT_timer_query) && !defined(__TINY_GL_H__) #define GL_EXT_timer_query 1 typedef GLint64 GLint64EXT; typedef GLuint64 GLuint64EXT; #endif #ifndef GL_OES_fixed_point #define GL_OES_fixed_point 1 typedef GLint GLfixed; #endif #ifndef GL_ARB_shader_objects #define GL_ARB_shader_objects 1 typedef char GLcharARB; #ifdef __APPLE__ typedef void *GLhandleARB; #else typedef GLuint GLhandleARB; #endif #endif #ifndef GL_KHR_debug #define GL_KHR_debug 1 typedef void CALLBACK (*GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message, const void *userParam); #endif #ifndef GL_ARB_debug_output #define GL_ARB_debug_output 1 typedef void CALLBACK (*GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message, const void *userParam); #endif #ifndef GL_AMD_debug_output #define GL_AMD_debug_output typedef void CALLBACK (*GLDEBUGPROCAMD)(GLuint id,GLenum category, GLenum severity, GLsizei length, const GLchar *message, void *userParam); #endif #ifndef GL_MESA_program_debug #define GL_MESA_program_debug 1 typedef void CALLBACK (*GLprogramcallbackMESA)(GLenum target, GLvoid *data); #endif #ifndef GL_EXT_external_buffer #define GL_EXT_external_buffer 1 typedef void *GLeglClientBufferEXT; #endif #ifndef GL_NV_draw_vulkan_image #define GL_NV_draw_vulkan_image 1 typedef void (APIENTRY *GLVULKANPROCNV)(void); #endif /* * Mesa Off-Screen rendering interface. * * Copyright (C) 1999-2005 Brian Paul All Rights Reserved. * */ #define OSMESA_VERSION_NUMBER(major, minor, patch) ((major) * 10000 + (minor) * 100 + patch) #define OSMESA_VERSION OSMESA_VERSION_NUMBER(OSMESA_MAJOR_VERSION, OSMESA_MINOR_VERSION, OSMESA_PATCH_VERSION) #if !defined(OSMESA_MAJOR_VERSION) #define OSMESA_MAJOR_VERSION 6 #define OSMESA_MINOR_VERSION 3 #define OSMESA_PATCH_VERSION 0 /* * Values for the format parameter of OSMesaCreateLDG() * Mesa_gl.ldg version 0.8 (Mesa 2.6) */ #define OSMESA_COLOR_INDEX GL_COLOR_INDEX #define OSMESA_RGBA GL_RGBA #define OSMESA_BGRA 0x1 #define OSMESA_ARGB 0x2 #define OSMESA_RGB GL_RGB #define OSMESA_BGR 0x4 #define OSMESA_RGB_565 0x5 #define VDI_ARGB 0x8 #define VDI_RGB 0xf #define DIRECT_VDI_ARGB 0x10 /* * OSMesaPixelStore() parameters: */ #define OSMESA_ROW_LENGTH 0x10 #define OSMESA_Y_UP 0x11 /* * Accepted by OSMesaGetIntegerv: */ #define OSMESA_WIDTH 0x20 #define OSMESA_HEIGHT 0x21 #define OSMESA_FORMAT 0x22 #define OSMESA_TYPE 0x23 #define OSMESA_MAX_WIDTH 0x24 /* new in 4.0 */ #define OSMESA_MAX_HEIGHT 0x25 /* new in 4.0 */ #ifdef __PUREC__ struct osmesa_context { int dummy; }; #endif typedef struct osmesa_context *OSMesaContext; typedef void (APIENTRY *OSMESAproc)(void); GLAPI OSMesaContext GLAPIENTRY OSMesaCreateContext( GLenum format, OSMesaContext sharelist ); GLAPI OSMesaContext GLAPIENTRY OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist); GLAPI void GLAPIENTRY OSMesaDestroyContext( OSMesaContext ctx ); GLAPI GLboolean GLAPIENTRY OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height ); GLAPI OSMesaContext GLAPIENTRY OSMesaGetCurrentContext( void ); GLAPI void GLAPIENTRY OSMesaPixelStore( GLint pname, GLint value ); GLAPI void GLAPIENTRY OSMesaGetIntegerv( GLint pname, GLint *value ); GLAPI GLboolean GLAPIENTRY OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void **buffer ); GLAPI GLboolean GLAPIENTRY OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *format, void **buffer ); GLAPI OSMESAproc GLAPIENTRY OSMesaGetProcAddress( const char *funcName ); GLAPI void GLAPIENTRY OSMesaColorClamp(GLboolean enable); GLAPI void GLAPIENTRY OSMesaPostprocess(OSMesaContext osmesa, const char *filter, GLuint enable_value); #elif OSMESA_VERSION < OSMESA_VERSION_NUMBER(6, 3, 0) typedef void (APIENTRY *OSMESAproc)(void); #endif /* * integral types that need to be promoted to * 32bit type when passed by value */ #ifndef GL_nfosmesa_short_promotions #define GL_nfosmesa_short_promotions 1 #ifdef __MSHORT__ typedef long GLshort32; typedef unsigned long GLushort32; typedef unsigned long GLboolean32; typedef long GLchar32; typedef unsigned long GLubyte32; typedef signed long GLbyte32; typedef unsigned long GLhalfNV32; #else typedef GLshort GLshort32; typedef GLushort GLushort32; typedef GLboolean GLboolean32; typedef GLchar GLchar32; typedef GLubyte GLubyte32; typedef GLbyte GLbyte32; typedef GLhalfNV GLhalfNV32; #endif #endif /* * Atari-specific structure for the shared libraries */ struct gl_public { void *libhandle; void *libexec; void *(*m_alloc)(size_t); void (*m_free)(void *); }; #ifdef __cplusplus } #endif #undef glClearDepth #undef glFrustum #undef glOrtho #undef gluLookAt #ifdef __cplusplus extern "C" { #endif struct _gl_osmesa { /* 0 */ const GLubyte * APIENTRY (*GetString)(GLenum name); /* 1 */ void *__unused_1; /* 2 */ OSMesaContext APIENTRY (*OSMesaCreateContext)(GLenum format, OSMesaContext sharelist); /* 3 */ OSMesaContext APIENTRY (*OSMesaCreateContextExt)(GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist); /* 4 */ void APIENTRY (*OSMesaDestroyContext)(OSMesaContext ctx); /* 5 */ GLboolean APIENTRY (*OSMesaMakeCurrent)(OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height); /* 6 */ OSMesaContext APIENTRY (*OSMesaGetCurrentContext)(void); /* 7 */ void APIENTRY (*OSMesaPixelStore)(GLint pname, GLint value); /* 8 */ void APIENTRY (*OSMesaGetIntegerv)(GLint pname, GLint *value); /* 9 */ GLboolean APIENTRY (*OSMesaGetDepthBuffer)(OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void * *buffer); /* 10 */ GLboolean APIENTRY (*OSMesaGetColorBuffer)(OSMesaContext c, GLint *width, GLint *height, GLint *format, void * *buffer); /* 11 */ OSMESAproc APIENTRY (*OSMesaGetProcAddress)(const char *funcName); /* 12 */ void APIENTRY (*ClearIndex)(GLfloat c); /* 13 */ void APIENTRY (*ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); /* 14 */ void APIENTRY (*Clear)(GLbitfield mask); /* 15 */ void APIENTRY (*IndexMask)(GLuint mask); /* 16 */ void APIENTRY (*ColorMask)(GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha); /* 17 */ void APIENTRY (*AlphaFunc)(GLenum func, GLclampf ref); /* 18 */ void APIENTRY (*BlendFunc)(GLenum sfactor, GLenum dfactor); /* 19 */ void APIENTRY (*LogicOp)(GLenum opcode); /* 20 */ void APIENTRY (*CullFace)(GLenum mode); /* 21 */ void APIENTRY (*FrontFace)(GLenum mode); /* 22 */ void APIENTRY (*PointSize)(GLfloat size); /* 23 */ void APIENTRY (*LineWidth)(GLfloat width); /* 24 */ void APIENTRY (*LineStipple)(GLint factor, GLushort32 pattern); /* 25 */ void APIENTRY (*PolygonMode)(GLenum face, GLenum mode); /* 26 */ void APIENTRY (*PolygonOffset)(GLfloat factor, GLfloat units); /* 27 */ void APIENTRY (*PolygonStipple)(const GLubyte *mask); /* 28 */ void APIENTRY (*GetPolygonStipple)(GLubyte *mask); /* 29 */ void APIENTRY (*EdgeFlag)(GLboolean32 flag); /* 30 */ void APIENTRY (*EdgeFlagv)(const GLboolean *flag); /* 31 */ void APIENTRY (*Scissor)(GLint x, GLint y, GLsizei width, GLsizei height); /* 32 */ void APIENTRY (*ClipPlane)(GLenum plane, const GLdouble *equation); /* 33 */ void APIENTRY (*GetClipPlane)(GLenum plane, GLdouble *equation); /* 34 */ void APIENTRY (*DrawBuffer)(GLenum mode); /* 35 */ void APIENTRY (*ReadBuffer)(GLenum mode); /* 36 */ void APIENTRY (*Enable)(GLenum cap); /* 37 */ void APIENTRY (*Disable)(GLenum cap); /* 38 */ GLboolean APIENTRY (*IsEnabled)(GLenum cap); /* 39 */ void APIENTRY (*EnableClientState)(GLenum array); /* 40 */ void APIENTRY (*DisableClientState)(GLenum array); /* 41 */ void APIENTRY (*GetBooleanv)(GLenum pname, GLboolean *params); /* 42 */ void APIENTRY (*GetDoublev)(GLenum pname, GLdouble *params); /* 43 */ void APIENTRY (*GetFloatv)(GLenum pname, GLfloat *params); /* 44 */ void APIENTRY (*GetIntegerv)(GLenum pname, GLint *params); /* 45 */ void APIENTRY (*PushAttrib)(GLbitfield mask); /* 46 */ void APIENTRY (*PopAttrib)(void); /* 47 */ void APIENTRY (*PushClientAttrib)(GLbitfield mask); /* 48 */ void APIENTRY (*PopClientAttrib)(void); /* 49 */ GLint APIENTRY (*RenderMode)(GLenum mode); /* 50 */ GLenum APIENTRY (*GetError)(void); /* 51 */ void APIENTRY (*Finish)(void); /* 52 */ void APIENTRY (*Flush)(void); /* 53 */ void APIENTRY (*Hint)(GLenum target, GLenum mode); /* 54 */ void APIENTRY (*ClearDepth)(GLclampd depth); /* 55 */ void APIENTRY (*DepthFunc)(GLenum func); /* 56 */ void APIENTRY (*DepthMask)(GLboolean32 flag); /* 57 */ void APIENTRY (*DepthRange)(GLclampd zNear, GLclampd zFar); /* 58 */ void APIENTRY (*ClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); /* 59 */ void APIENTRY (*Accum)(GLenum op, GLfloat value); /* 60 */ void APIENTRY (*MatrixMode)(GLenum mode); /* 61 */ void APIENTRY (*Ortho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); /* 62 */ void APIENTRY (*Frustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); /* 63 */ void APIENTRY (*Viewport)(GLint x, GLint y, GLsizei width, GLsizei height); /* 64 */ void APIENTRY (*PushMatrix)(void); /* 65 */ void APIENTRY (*PopMatrix)(void); /* 66 */ void APIENTRY (*LoadIdentity)(void); /* 67 */ void APIENTRY (*LoadMatrixd)(const GLdouble *m); /* 68 */ void APIENTRY (*LoadMatrixf)(const GLfloat *m); /* 69 */ void APIENTRY (*MultMatrixd)(const GLdouble *m); /* 70 */ void APIENTRY (*MultMatrixf)(const GLfloat *m); /* 71 */ void APIENTRY (*Rotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); /* 72 */ void APIENTRY (*Rotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); /* 73 */ void APIENTRY (*Scaled)(GLdouble x, GLdouble y, GLdouble z); /* 74 */ void APIENTRY (*Scalef)(GLfloat x, GLfloat y, GLfloat z); /* 75 */ void APIENTRY (*Translated)(GLdouble x, GLdouble y, GLdouble z); /* 76 */ void APIENTRY (*Translatef)(GLfloat x, GLfloat y, GLfloat z); /* 77 */ GLboolean APIENTRY (*IsList)(GLuint list); /* 78 */ void APIENTRY (*DeleteLists)(GLuint list, GLsizei range); /* 79 */ GLuint APIENTRY (*GenLists)(GLsizei range); /* 80 */ void APIENTRY (*NewList)(GLuint list, GLenum mode); /* 81 */ void APIENTRY (*EndList)(void); /* 82 */ void APIENTRY (*CallList)(GLuint list); /* 83 */ void APIENTRY (*CallLists)(GLsizei n, GLenum type, const GLvoid *lists); /* 84 */ void APIENTRY (*ListBase)(GLuint base); /* 85 */ void APIENTRY (*Begin)(GLenum mode); /* 86 */ void APIENTRY (*End)(void); /* 87 */ void APIENTRY (*Vertex2d)(GLdouble x, GLdouble y); /* 88 */ void APIENTRY (*Vertex2f)(GLfloat x, GLfloat y); /* 89 */ void APIENTRY (*Vertex2i)(GLint x, GLint y); /* 90 */ void APIENTRY (*Vertex2s)(GLshort32 x, GLshort32 y); /* 91 */ void APIENTRY (*Vertex3d)(GLdouble x, GLdouble y, GLdouble z); /* 92 */ void APIENTRY (*Vertex3f)(GLfloat x, GLfloat y, GLfloat z); /* 93 */ void APIENTRY (*Vertex3i)(GLint x, GLint y, GLint z); /* 94 */ void APIENTRY (*Vertex3s)(GLshort32 x, GLshort32 y, GLshort32 z); /* 95 */ void APIENTRY (*Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 96 */ void APIENTRY (*Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 97 */ void APIENTRY (*Vertex4i)(GLint x, GLint y, GLint z, GLint w); /* 98 */ void APIENTRY (*Vertex4s)(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); /* 99 */ void APIENTRY (*Vertex2dv)(const GLdouble *v); /* 100 */ void APIENTRY (*Vertex2fv)(const GLfloat *v); /* 101 */ void APIENTRY (*Vertex2iv)(const GLint *v); /* 102 */ void APIENTRY (*Vertex2sv)(const GLshort *v); /* 103 */ void APIENTRY (*Vertex3dv)(const GLdouble *v); /* 104 */ void APIENTRY (*Vertex3fv)(const GLfloat *v); /* 105 */ void APIENTRY (*Vertex3iv)(const GLint *v); /* 106 */ void APIENTRY (*Vertex3sv)(const GLshort *v); /* 107 */ void APIENTRY (*Vertex4dv)(const GLdouble *v); /* 108 */ void APIENTRY (*Vertex4fv)(const GLfloat *v); /* 109 */ void APIENTRY (*Vertex4iv)(const GLint *v); /* 110 */ void APIENTRY (*Vertex4sv)(const GLshort *v); /* 111 */ void APIENTRY (*Normal3b)(GLbyte32 nx, GLbyte32 ny, GLbyte32 nz); /* 112 */ void APIENTRY (*Normal3d)(GLdouble nx, GLdouble ny, GLdouble nz); /* 113 */ void APIENTRY (*Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz); /* 114 */ void APIENTRY (*Normal3i)(GLint nx, GLint ny, GLint nz); /* 115 */ void APIENTRY (*Normal3s)(GLshort32 nx, GLshort32 ny, GLshort32 nz); /* 116 */ void APIENTRY (*Normal3bv)(const GLbyte *v); /* 117 */ void APIENTRY (*Normal3dv)(const GLdouble *v); /* 118 */ void APIENTRY (*Normal3fv)(const GLfloat *v); /* 119 */ void APIENTRY (*Normal3iv)(const GLint *v); /* 120 */ void APIENTRY (*Normal3sv)(const GLshort *v); /* 121 */ void APIENTRY (*Indexd)(GLdouble c); /* 122 */ void APIENTRY (*Indexf)(GLfloat c); /* 123 */ void APIENTRY (*Indexi)(GLint c); /* 124 */ void APIENTRY (*Indexs)(GLshort32 c); /* 125 */ void APIENTRY (*Indexub)(GLubyte32 c); /* 126 */ void APIENTRY (*Indexdv)(const GLdouble *c); /* 127 */ void APIENTRY (*Indexfv)(const GLfloat *c); /* 128 */ void APIENTRY (*Indexiv)(const GLint *c); /* 129 */ void APIENTRY (*Indexsv)(const GLshort *c); /* 130 */ void APIENTRY (*Indexubv)(const GLubyte *c); /* 131 */ void APIENTRY (*Color3b)(GLbyte32 red, GLbyte32 green, GLbyte32 blue); /* 132 */ void APIENTRY (*Color3d)(GLdouble red, GLdouble green, GLdouble blue); /* 133 */ void APIENTRY (*Color3f)(GLfloat red, GLfloat green, GLfloat blue); /* 134 */ void APIENTRY (*Color3i)(GLint red, GLint green, GLint blue); /* 135 */ void APIENTRY (*Color3s)(GLshort32 red, GLshort32 green, GLshort32 blue); /* 136 */ void APIENTRY (*Color3ub)(GLubyte32 red, GLubyte32 green, GLubyte32 blue); /* 137 */ void APIENTRY (*Color3ui)(GLuint red, GLuint green, GLuint blue); /* 138 */ void APIENTRY (*Color3us)(GLushort32 red, GLushort32 green, GLushort32 blue); /* 139 */ void APIENTRY (*Color4b)(GLbyte32 red, GLbyte32 green, GLbyte32 blue, GLbyte32 alpha); /* 140 */ void APIENTRY (*Color4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); /* 141 */ void APIENTRY (*Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); /* 142 */ void APIENTRY (*Color4i)(GLint red, GLint green, GLint blue, GLint alpha); /* 143 */ void APIENTRY (*Color4s)(GLshort32 red, GLshort32 green, GLshort32 blue, GLshort32 alpha); /* 144 */ void APIENTRY (*Color4ub)(GLubyte32 red, GLubyte32 green, GLubyte32 blue, GLubyte32 alpha); /* 145 */ void APIENTRY (*Color4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha); /* 146 */ void APIENTRY (*Color4us)(GLushort32 red, GLushort32 green, GLushort32 blue, GLushort32 alpha); /* 147 */ void APIENTRY (*Color3bv)(const GLbyte *v); /* 148 */ void APIENTRY (*Color3dv)(const GLdouble *v); /* 149 */ void APIENTRY (*Color3fv)(const GLfloat *v); /* 150 */ void APIENTRY (*Color3iv)(const GLint *v); /* 151 */ void APIENTRY (*Color3sv)(const GLshort *v); /* 152 */ void APIENTRY (*Color3ubv)(const GLubyte *v); /* 153 */ void APIENTRY (*Color3uiv)(const GLuint *v); /* 154 */ void APIENTRY (*Color3usv)(const GLushort *v); /* 155 */ void APIENTRY (*Color4bv)(const GLbyte *v); /* 156 */ void APIENTRY (*Color4dv)(const GLdouble *v); /* 157 */ void APIENTRY (*Color4fv)(const GLfloat *v); /* 158 */ void APIENTRY (*Color4iv)(const GLint *v); /* 159 */ void APIENTRY (*Color4sv)(const GLshort *v); /* 160 */ void APIENTRY (*Color4ubv)(const GLubyte *v); /* 161 */ void APIENTRY (*Color4uiv)(const GLuint *v); /* 162 */ void APIENTRY (*Color4usv)(const GLushort *v); /* 163 */ void APIENTRY (*TexCoord1d)(GLdouble s); /* 164 */ void APIENTRY (*TexCoord1f)(GLfloat s); /* 165 */ void APIENTRY (*TexCoord1i)(GLint s); /* 166 */ void APIENTRY (*TexCoord1s)(GLshort32 s); /* 167 */ void APIENTRY (*TexCoord2d)(GLdouble s, GLdouble t); /* 168 */ void APIENTRY (*TexCoord2f)(GLfloat s, GLfloat t); /* 169 */ void APIENTRY (*TexCoord2i)(GLint s, GLint t); /* 170 */ void APIENTRY (*TexCoord2s)(GLshort32 s, GLshort32 t); /* 171 */ void APIENTRY (*TexCoord3d)(GLdouble s, GLdouble t, GLdouble r); /* 172 */ void APIENTRY (*TexCoord3f)(GLfloat s, GLfloat t, GLfloat r); /* 173 */ void APIENTRY (*TexCoord3i)(GLint s, GLint t, GLint r); /* 174 */ void APIENTRY (*TexCoord3s)(GLshort32 s, GLshort32 t, GLshort32 r); /* 175 */ void APIENTRY (*TexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q); /* 176 */ void APIENTRY (*TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q); /* 177 */ void APIENTRY (*TexCoord4i)(GLint s, GLint t, GLint r, GLint q); /* 178 */ void APIENTRY (*TexCoord4s)(GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q); /* 179 */ void APIENTRY (*TexCoord1dv)(const GLdouble *v); /* 180 */ void APIENTRY (*TexCoord1fv)(const GLfloat *v); /* 181 */ void APIENTRY (*TexCoord1iv)(const GLint *v); /* 182 */ void APIENTRY (*TexCoord1sv)(const GLshort *v); /* 183 */ void APIENTRY (*TexCoord2dv)(const GLdouble *v); /* 184 */ void APIENTRY (*TexCoord2fv)(const GLfloat *v); /* 185 */ void APIENTRY (*TexCoord2iv)(const GLint *v); /* 186 */ void APIENTRY (*TexCoord2sv)(const GLshort *v); /* 187 */ void APIENTRY (*TexCoord3dv)(const GLdouble *v); /* 188 */ void APIENTRY (*TexCoord3fv)(const GLfloat *v); /* 189 */ void APIENTRY (*TexCoord3iv)(const GLint *v); /* 190 */ void APIENTRY (*TexCoord3sv)(const GLshort *v); /* 191 */ void APIENTRY (*TexCoord4dv)(const GLdouble *v); /* 192 */ void APIENTRY (*TexCoord4fv)(const GLfloat *v); /* 193 */ void APIENTRY (*TexCoord4iv)(const GLint *v); /* 194 */ void APIENTRY (*TexCoord4sv)(const GLshort *v); /* 195 */ void APIENTRY (*RasterPos2d)(GLdouble x, GLdouble y); /* 196 */ void APIENTRY (*RasterPos2f)(GLfloat x, GLfloat y); /* 197 */ void APIENTRY (*RasterPos2i)(GLint x, GLint y); /* 198 */ void APIENTRY (*RasterPos2s)(GLshort32 x, GLshort32 y); /* 199 */ void APIENTRY (*RasterPos3d)(GLdouble x, GLdouble y, GLdouble z); /* 200 */ void APIENTRY (*RasterPos3f)(GLfloat x, GLfloat y, GLfloat z); /* 201 */ void APIENTRY (*RasterPos3i)(GLint x, GLint y, GLint z); /* 202 */ void APIENTRY (*RasterPos3s)(GLshort32 x, GLshort32 y, GLshort32 z); /* 203 */ void APIENTRY (*RasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 204 */ void APIENTRY (*RasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 205 */ void APIENTRY (*RasterPos4i)(GLint x, GLint y, GLint z, GLint w); /* 206 */ void APIENTRY (*RasterPos4s)(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); /* 207 */ void APIENTRY (*RasterPos2dv)(const GLdouble *v); /* 208 */ void APIENTRY (*RasterPos2fv)(const GLfloat *v); /* 209 */ void APIENTRY (*RasterPos2iv)(const GLint *v); /* 210 */ void APIENTRY (*RasterPos2sv)(const GLshort *v); /* 211 */ void APIENTRY (*RasterPos3dv)(const GLdouble *v); /* 212 */ void APIENTRY (*RasterPos3fv)(const GLfloat *v); /* 213 */ void APIENTRY (*RasterPos3iv)(const GLint *v); /* 214 */ void APIENTRY (*RasterPos3sv)(const GLshort *v); /* 215 */ void APIENTRY (*RasterPos4dv)(const GLdouble *v); /* 216 */ void APIENTRY (*RasterPos4fv)(const GLfloat *v); /* 217 */ void APIENTRY (*RasterPos4iv)(const GLint *v); /* 218 */ void APIENTRY (*RasterPos4sv)(const GLshort *v); /* 219 */ void APIENTRY (*Rectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); /* 220 */ void APIENTRY (*Rectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); /* 221 */ void APIENTRY (*Recti)(GLint x1, GLint y1, GLint x2, GLint y2); /* 222 */ void APIENTRY (*Rects)(GLshort32 x1, GLshort32 y1, GLshort32 x2, GLshort32 y2); /* 223 */ void APIENTRY (*Rectdv)(const GLdouble *v1, const GLdouble *v2); /* 224 */ void APIENTRY (*Rectfv)(const GLfloat *v1, const GLfloat *v2); /* 225 */ void APIENTRY (*Rectiv)(const GLint *v1, const GLint *v2); /* 226 */ void APIENTRY (*Rectsv)(const GLshort *v1, const GLshort *v2); /* 227 */ void APIENTRY (*VertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); /* 228 */ void APIENTRY (*NormalPointer)(GLenum type, GLsizei stride, const GLvoid *pointer); /* 229 */ void APIENTRY (*ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); /* 230 */ void APIENTRY (*IndexPointer)(GLenum type, GLsizei stride, const GLvoid *pointer); /* 231 */ void APIENTRY (*TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); /* 232 */ void APIENTRY (*EdgeFlagPointer)(GLsizei stride, const GLvoid *pointer); /* 233 */ void APIENTRY (*GetPointerv)(GLenum pname, GLvoid* *params); /* 234 */ void APIENTRY (*ArrayElement)(GLint i); /* 235 */ void APIENTRY (*DrawArrays)(GLenum mode, GLint first, GLsizei count); /* 236 */ void APIENTRY (*DrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); /* 237 */ void APIENTRY (*InterleavedArrays)(GLenum format, GLsizei stride, const GLvoid *pointer); /* 238 */ void APIENTRY (*ShadeModel)(GLenum mode); /* 239 */ void APIENTRY (*Lightf)(GLenum light, GLenum pname, GLfloat param); /* 240 */ void APIENTRY (*Lighti)(GLenum light, GLenum pname, GLint param); /* 241 */ void APIENTRY (*Lightfv)(GLenum light, GLenum pname, const GLfloat *params); /* 242 */ void APIENTRY (*Lightiv)(GLenum light, GLenum pname, const GLint *params); /* 243 */ void APIENTRY (*GetLightfv)(GLenum light, GLenum pname, GLfloat *params); /* 244 */ void APIENTRY (*GetLightiv)(GLenum light, GLenum pname, GLint *params); /* 245 */ void APIENTRY (*LightModelf)(GLenum pname, GLfloat param); /* 246 */ void APIENTRY (*LightModeli)(GLenum pname, GLint param); /* 247 */ void APIENTRY (*LightModelfv)(GLenum pname, const GLfloat *params); /* 248 */ void APIENTRY (*LightModeliv)(GLenum pname, const GLint *params); /* 249 */ void APIENTRY (*Materialf)(GLenum face, GLenum pname, GLfloat param); /* 250 */ void APIENTRY (*Materiali)(GLenum face, GLenum pname, GLint param); /* 251 */ void APIENTRY (*Materialfv)(GLenum face, GLenum pname, const GLfloat *params); /* 252 */ void APIENTRY (*Materialiv)(GLenum face, GLenum pname, const GLint *params); /* 253 */ void APIENTRY (*GetMaterialfv)(GLenum face, GLenum pname, GLfloat *params); /* 254 */ void APIENTRY (*GetMaterialiv)(GLenum face, GLenum pname, GLint *params); /* 255 */ void APIENTRY (*ColorMaterial)(GLenum face, GLenum mode); /* 256 */ void APIENTRY (*PixelZoom)(GLfloat xfactor, GLfloat yfactor); /* 257 */ void APIENTRY (*PixelStoref)(GLenum pname, GLfloat param); /* 258 */ void APIENTRY (*PixelStorei)(GLenum pname, GLint param); /* 259 */ void APIENTRY (*PixelTransferf)(GLenum pname, GLfloat param); /* 260 */ void APIENTRY (*PixelTransferi)(GLenum pname, GLint param); /* 261 */ void APIENTRY (*PixelMapfv)(GLenum map, GLsizei mapsize, const GLfloat *values); /* 262 */ void APIENTRY (*PixelMapuiv)(GLenum map, GLsizei mapsize, const GLuint *values); /* 263 */ void APIENTRY (*PixelMapusv)(GLenum map, GLsizei mapsize, const GLushort *values); /* 264 */ void APIENTRY (*GetPixelMapfv)(GLenum map, GLfloat *values); /* 265 */ void APIENTRY (*GetPixelMapuiv)(GLenum map, GLuint *values); /* 266 */ void APIENTRY (*GetPixelMapusv)(GLenum map, GLushort *values); /* 267 */ void APIENTRY (*Bitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); /* 268 */ void APIENTRY (*ReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); /* 269 */ void APIENTRY (*DrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); /* 270 */ void APIENTRY (*CopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); /* 271 */ void APIENTRY (*StencilFunc)(GLenum func, GLint ref, GLuint mask); /* 272 */ void APIENTRY (*StencilMask)(GLuint mask); /* 273 */ void APIENTRY (*StencilOp)(GLenum fail, GLenum zfail, GLenum zpass); /* 274 */ void APIENTRY (*ClearStencil)(GLint s); /* 275 */ void APIENTRY (*TexGend)(GLenum coord, GLenum pname, GLdouble param); /* 276 */ void APIENTRY (*TexGenf)(GLenum coord, GLenum pname, GLfloat param); /* 277 */ void APIENTRY (*TexGeni)(GLenum coord, GLenum pname, GLint param); /* 278 */ void APIENTRY (*TexGendv)(GLenum coord, GLenum pname, const GLdouble *params); /* 279 */ void APIENTRY (*TexGenfv)(GLenum coord, GLenum pname, const GLfloat *params); /* 280 */ void APIENTRY (*TexGeniv)(GLenum coord, GLenum pname, const GLint *params); /* 281 */ void APIENTRY (*GetTexGendv)(GLenum coord, GLenum pname, GLdouble *params); /* 282 */ void APIENTRY (*GetTexGenfv)(GLenum coord, GLenum pname, GLfloat *params); /* 283 */ void APIENTRY (*GetTexGeniv)(GLenum coord, GLenum pname, GLint *params); /* 284 */ void APIENTRY (*TexEnvf)(GLenum target, GLenum pname, GLfloat param); /* 285 */ void APIENTRY (*TexEnvi)(GLenum target, GLenum pname, GLint param); /* 286 */ void APIENTRY (*TexEnvfv)(GLenum target, GLenum pname, const GLfloat *params); /* 287 */ void APIENTRY (*TexEnviv)(GLenum target, GLenum pname, const GLint *params); /* 288 */ void APIENTRY (*GetTexEnvfv)(GLenum target, GLenum pname, GLfloat *params); /* 289 */ void APIENTRY (*GetTexEnviv)(GLenum target, GLenum pname, GLint *params); /* 290 */ void APIENTRY (*TexParameterf)(GLenum target, GLenum pname, GLfloat param); /* 291 */ void APIENTRY (*TexParameteri)(GLenum target, GLenum pname, GLint param); /* 292 */ void APIENTRY (*TexParameterfv)(GLenum target, GLenum pname, const GLfloat *params); /* 293 */ void APIENTRY (*TexParameteriv)(GLenum target, GLenum pname, const GLint *params); /* 294 */ void APIENTRY (*GetTexParameterfv)(GLenum target, GLenum pname, GLfloat *params); /* 295 */ void APIENTRY (*GetTexParameteriv)(GLenum target, GLenum pname, GLint *params); /* 296 */ void APIENTRY (*GetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat *params); /* 297 */ void APIENTRY (*GetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint *params); /* 298 */ void APIENTRY (*TexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); /* 299 */ void APIENTRY (*TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); /* 300 */ void APIENTRY (*GetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); /* 301 */ void APIENTRY (*GenTextures)(GLsizei n, GLuint *textures); /* 302 */ void APIENTRY (*DeleteTextures)(GLsizei n, const GLuint *textures); /* 303 */ void APIENTRY (*BindTexture)(GLenum target, GLuint texture); /* 304 */ void APIENTRY (*PrioritizeTextures)(GLsizei n, const GLuint *textures, const GLclampf *priorities); /* 305 */ GLboolean APIENTRY (*AreTexturesResident)(GLsizei n, const GLuint *textures, GLboolean *residences); /* 306 */ GLboolean APIENTRY (*IsTexture)(GLuint texture); /* 307 */ void APIENTRY (*TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); /* 308 */ void APIENTRY (*TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); /* 309 */ void APIENTRY (*CopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); /* 310 */ void APIENTRY (*CopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); /* 311 */ void APIENTRY (*CopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); /* 312 */ void APIENTRY (*CopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 313 */ void APIENTRY (*Map1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); /* 314 */ void APIENTRY (*Map1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); /* 315 */ void APIENTRY (*Map2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); /* 316 */ void APIENTRY (*Map2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); /* 317 */ void APIENTRY (*GetMapdv)(GLenum target, GLenum query, GLdouble *v); /* 318 */ void APIENTRY (*GetMapfv)(GLenum target, GLenum query, GLfloat *v); /* 319 */ void APIENTRY (*GetMapiv)(GLenum target, GLenum query, GLint *v); /* 320 */ void APIENTRY (*EvalCoord1d)(GLdouble u); /* 321 */ void APIENTRY (*EvalCoord1f)(GLfloat u); /* 322 */ void APIENTRY (*EvalCoord1dv)(const GLdouble *u); /* 323 */ void APIENTRY (*EvalCoord1fv)(const GLfloat *u); /* 324 */ void APIENTRY (*EvalCoord2d)(GLdouble u, GLdouble v); /* 325 */ void APIENTRY (*EvalCoord2f)(GLfloat u, GLfloat v); /* 326 */ void APIENTRY (*EvalCoord2dv)(const GLdouble *u); /* 327 */ void APIENTRY (*EvalCoord2fv)(const GLfloat *u); /* 328 */ void APIENTRY (*MapGrid1d)(GLint un, GLdouble u1, GLdouble u2); /* 329 */ void APIENTRY (*MapGrid1f)(GLint un, GLfloat u1, GLfloat u2); /* 330 */ void APIENTRY (*MapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); /* 331 */ void APIENTRY (*MapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); /* 332 */ void APIENTRY (*EvalPoint1)(GLint i); /* 333 */ void APIENTRY (*EvalPoint2)(GLint i, GLint j); /* 334 */ void APIENTRY (*EvalMesh1)(GLenum mode, GLint i1, GLint i2); /* 335 */ void APIENTRY (*EvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); /* 336 */ void APIENTRY (*Fogf)(GLenum pname, GLfloat param); /* 337 */ void APIENTRY (*Fogi)(GLenum pname, GLint param); /* 338 */ void APIENTRY (*Fogfv)(GLenum pname, const GLfloat *params); /* 339 */ void APIENTRY (*Fogiv)(GLenum pname, const GLint *params); /* 340 */ void APIENTRY (*FeedbackBuffer)(GLsizei size, GLenum type, GLfloat *buffer); /* 341 */ void APIENTRY (*PassThrough)(GLfloat token); /* 342 */ void APIENTRY (*SelectBuffer)(GLsizei size, GLuint *buffer); /* 343 */ void APIENTRY (*InitNames)(void); /* 344 */ void APIENTRY (*LoadName)(GLuint name); /* 345 */ void APIENTRY (*PushName)(GLuint name); /* 346 */ void APIENTRY (*PopName)(void); /* 347 */ void APIENTRY (*EnableTraceMESA)(GLbitfield mask); /* 348 */ void APIENTRY (*DisableTraceMESA)(GLbitfield mask); /* 349 */ void APIENTRY (*NewTraceMESA)(GLbitfield mask, const GLubyte *traceName); /* 350 */ void APIENTRY (*EndTraceMESA)(void); /* 351 */ void APIENTRY (*TraceAssertAttribMESA)(GLbitfield attribMask); /* 352 */ void APIENTRY (*TraceCommentMESA)(const GLubyte *comment); /* 353 */ void APIENTRY (*TraceTextureMESA)(GLuint name, const GLubyte *comment); /* 354 */ void APIENTRY (*TraceListMESA)(GLuint name, const GLubyte *comment); /* 355 */ void APIENTRY (*TracePointerMESA)(GLvoid *pointer, const GLubyte *comment); /* 356 */ void APIENTRY (*TracePointerRangeMESA)(const GLvoid *first, const GLvoid *last, const GLubyte *comment); /* 357 */ void APIENTRY (*BlendEquationSeparateATI)(GLenum equationRGB, GLenum equationAlpha); /* 358 */ void APIENTRY (*BlendColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); /* 359 */ void APIENTRY (*BlendEquation)(GLenum mode); /* 360 */ void APIENTRY (*DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); /* 361 */ void APIENTRY (*ColorTable)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); /* 362 */ void APIENTRY (*ColorTableParameterfv)(GLenum target, GLenum pname, const GLfloat *params); /* 363 */ void APIENTRY (*ColorTableParameteriv)(GLenum target, GLenum pname, const GLint *params); /* 364 */ void APIENTRY (*CopyColorTable)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 365 */ void APIENTRY (*GetColorTable)(GLenum target, GLenum format, GLenum type, void *table); /* 366 */ void APIENTRY (*GetColorTableParameterfv)(GLenum target, GLenum pname, GLfloat *params); /* 367 */ void APIENTRY (*GetColorTableParameteriv)(GLenum target, GLenum pname, GLint *params); /* 368 */ void APIENTRY (*ColorSubTable)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); /* 369 */ void APIENTRY (*CopyColorSubTable)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); /* 370 */ void APIENTRY (*ConvolutionFilter1D)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); /* 371 */ void APIENTRY (*ConvolutionFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); /* 372 */ void APIENTRY (*ConvolutionParameterf)(GLenum target, GLenum pname, GLfloat params); /* 373 */ void APIENTRY (*ConvolutionParameterfv)(GLenum target, GLenum pname, const GLfloat *params); /* 374 */ void APIENTRY (*ConvolutionParameteri)(GLenum target, GLenum pname, GLint params); /* 375 */ void APIENTRY (*ConvolutionParameteriv)(GLenum target, GLenum pname, const GLint *params); /* 376 */ void APIENTRY (*CopyConvolutionFilter1D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 377 */ void APIENTRY (*CopyConvolutionFilter2D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); /* 378 */ void APIENTRY (*GetConvolutionFilter)(GLenum target, GLenum format, GLenum type, void *image); /* 379 */ void APIENTRY (*GetConvolutionParameterfv)(GLenum target, GLenum pname, GLfloat *params); /* 380 */ void APIENTRY (*GetConvolutionParameteriv)(GLenum target, GLenum pname, GLint *params); /* 381 */ void APIENTRY (*GetSeparableFilter)(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); /* 382 */ void APIENTRY (*SeparableFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); /* 383 */ void APIENTRY (*GetHistogram)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values); /* 384 */ void APIENTRY (*GetHistogramParameterfv)(GLenum target, GLenum pname, GLfloat *params); /* 385 */ void APIENTRY (*GetHistogramParameteriv)(GLenum target, GLenum pname, GLint *params); /* 386 */ void APIENTRY (*GetMinmax)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values); /* 387 */ void APIENTRY (*GetMinmaxParameterfv)(GLenum target, GLenum pname, GLfloat *params); /* 388 */ void APIENTRY (*GetMinmaxParameteriv)(GLenum target, GLenum pname, GLint *params); /* 389 */ void APIENTRY (*Histogram)(GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink); /* 390 */ void APIENTRY (*Minmax)(GLenum target, GLenum internalformat, GLboolean32 sink); /* 391 */ void APIENTRY (*ResetHistogram)(GLenum target); /* 392 */ void APIENTRY (*ResetMinmax)(GLenum target); /* 393 */ void APIENTRY (*TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); /* 394 */ void APIENTRY (*TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); /* 395 */ void APIENTRY (*CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 396 */ void APIENTRY (*ActiveTexture)(GLenum texture); /* 397 */ void APIENTRY (*ClientActiveTexture)(GLenum texture); /* 398 */ void APIENTRY (*MultiTexCoord1d)(GLenum target, GLdouble s); /* 399 */ void APIENTRY (*MultiTexCoord1dv)(GLenum target, const GLdouble *v); /* 400 */ void APIENTRY (*MultiTexCoord1f)(GLenum target, GLfloat s); /* 401 */ void APIENTRY (*MultiTexCoord1fv)(GLenum target, const GLfloat *v); /* 402 */ void APIENTRY (*MultiTexCoord1i)(GLenum target, GLint s); /* 403 */ void APIENTRY (*MultiTexCoord1iv)(GLenum target, const GLint *v); /* 404 */ void APIENTRY (*MultiTexCoord1s)(GLenum target, GLshort32 s); /* 405 */ void APIENTRY (*MultiTexCoord1sv)(GLenum target, const GLshort *v); /* 406 */ void APIENTRY (*MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t); /* 407 */ void APIENTRY (*MultiTexCoord2dv)(GLenum target, const GLdouble *v); /* 408 */ void APIENTRY (*MultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t); /* 409 */ void APIENTRY (*MultiTexCoord2fv)(GLenum target, const GLfloat *v); /* 410 */ void APIENTRY (*MultiTexCoord2i)(GLenum target, GLint s, GLint t); /* 411 */ void APIENTRY (*MultiTexCoord2iv)(GLenum target, const GLint *v); /* 412 */ void APIENTRY (*MultiTexCoord2s)(GLenum target, GLshort32 s, GLshort32 t); /* 413 */ void APIENTRY (*MultiTexCoord2sv)(GLenum target, const GLshort *v); /* 414 */ void APIENTRY (*MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r); /* 415 */ void APIENTRY (*MultiTexCoord3dv)(GLenum target, const GLdouble *v); /* 416 */ void APIENTRY (*MultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r); /* 417 */ void APIENTRY (*MultiTexCoord3fv)(GLenum target, const GLfloat *v); /* 418 */ void APIENTRY (*MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r); /* 419 */ void APIENTRY (*MultiTexCoord3iv)(GLenum target, const GLint *v); /* 420 */ void APIENTRY (*MultiTexCoord3s)(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r); /* 421 */ void APIENTRY (*MultiTexCoord3sv)(GLenum target, const GLshort *v); /* 422 */ void APIENTRY (*MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); /* 423 */ void APIENTRY (*MultiTexCoord4dv)(GLenum target, const GLdouble *v); /* 424 */ void APIENTRY (*MultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); /* 425 */ void APIENTRY (*MultiTexCoord4fv)(GLenum target, const GLfloat *v); /* 426 */ void APIENTRY (*MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q); /* 427 */ void APIENTRY (*MultiTexCoord4iv)(GLenum target, const GLint *v); /* 428 */ void APIENTRY (*MultiTexCoord4s)(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q); /* 429 */ void APIENTRY (*MultiTexCoord4sv)(GLenum target, const GLshort *v); /* 430 */ void APIENTRY (*LoadTransposeMatrixf)(const GLfloat *m); /* 431 */ void APIENTRY (*LoadTransposeMatrixd)(const GLdouble *m); /* 432 */ void APIENTRY (*MultTransposeMatrixf)(const GLfloat *m); /* 433 */ void APIENTRY (*MultTransposeMatrixd)(const GLdouble *m); /* 434 */ void APIENTRY (*SampleCoverage)(GLfloat value, GLboolean32 invert); /* 435 */ void APIENTRY (*CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); /* 436 */ void APIENTRY (*CompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); /* 437 */ void APIENTRY (*CompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); /* 438 */ void APIENTRY (*CompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); /* 439 */ void APIENTRY (*CompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); /* 440 */ void APIENTRY (*CompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); /* 441 */ void APIENTRY (*GetCompressedTexImage)(GLenum target, GLint level, void *img); /* 442 */ void APIENTRY (*BlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 443 */ void APIENTRY (*FogCoordf)(GLfloat coord); /* 444 */ void APIENTRY (*FogCoordfv)(const GLfloat *coord); /* 445 */ void APIENTRY (*FogCoordd)(GLdouble coord); /* 446 */ void APIENTRY (*FogCoorddv)(const GLdouble *coord); /* 447 */ void APIENTRY (*FogCoordPointer)(GLenum type, GLsizei stride, const void *pointer); /* 448 */ void APIENTRY (*MultiDrawArrays)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); /* 449 */ void APIENTRY (*MultiDrawElements)(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount); /* 450 */ void APIENTRY (*PointParameterf)(GLenum pname, GLfloat param); /* 451 */ void APIENTRY (*PointParameterfv)(GLenum pname, const GLfloat *params); /* 452 */ void APIENTRY (*PointParameteri)(GLenum pname, GLint param); /* 453 */ void APIENTRY (*PointParameteriv)(GLenum pname, const GLint *params); /* 454 */ void APIENTRY (*SecondaryColor3b)(GLbyte32 red, GLbyte32 green, GLbyte32 blue); /* 455 */ void APIENTRY (*SecondaryColor3bv)(const GLbyte *v); /* 456 */ void APIENTRY (*SecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue); /* 457 */ void APIENTRY (*SecondaryColor3dv)(const GLdouble *v); /* 458 */ void APIENTRY (*SecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue); /* 459 */ void APIENTRY (*SecondaryColor3fv)(const GLfloat *v); /* 460 */ void APIENTRY (*SecondaryColor3i)(GLint red, GLint green, GLint blue); /* 461 */ void APIENTRY (*SecondaryColor3iv)(const GLint *v); /* 462 */ void APIENTRY (*SecondaryColor3s)(GLshort32 red, GLshort32 green, GLshort32 blue); /* 463 */ void APIENTRY (*SecondaryColor3sv)(const GLshort *v); /* 464 */ void APIENTRY (*SecondaryColor3ub)(GLubyte32 red, GLubyte32 green, GLubyte32 blue); /* 465 */ void APIENTRY (*SecondaryColor3ubv)(const GLubyte *v); /* 466 */ void APIENTRY (*SecondaryColor3ui)(GLuint red, GLuint green, GLuint blue); /* 467 */ void APIENTRY (*SecondaryColor3uiv)(const GLuint *v); /* 468 */ void APIENTRY (*SecondaryColor3us)(GLushort32 red, GLushort32 green, GLushort32 blue); /* 469 */ void APIENTRY (*SecondaryColor3usv)(const GLushort *v); /* 470 */ void APIENTRY (*SecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const void *pointer); /* 471 */ void APIENTRY (*WindowPos2d)(GLdouble x, GLdouble y); /* 472 */ void APIENTRY (*WindowPos2dv)(const GLdouble *v); /* 473 */ void APIENTRY (*WindowPos2f)(GLfloat x, GLfloat y); /* 474 */ void APIENTRY (*WindowPos2fv)(const GLfloat *v); /* 475 */ void APIENTRY (*WindowPos2i)(GLint x, GLint y); /* 476 */ void APIENTRY (*WindowPos2iv)(const GLint *v); /* 477 */ void APIENTRY (*WindowPos2s)(GLshort32 x, GLshort32 y); /* 478 */ void APIENTRY (*WindowPos2sv)(const GLshort *v); /* 479 */ void APIENTRY (*WindowPos3d)(GLdouble x, GLdouble y, GLdouble z); /* 480 */ void APIENTRY (*WindowPos3dv)(const GLdouble *v); /* 481 */ void APIENTRY (*WindowPos3f)(GLfloat x, GLfloat y, GLfloat z); /* 482 */ void APIENTRY (*WindowPos3fv)(const GLfloat *v); /* 483 */ void APIENTRY (*WindowPos3i)(GLint x, GLint y, GLint z); /* 484 */ void APIENTRY (*WindowPos3iv)(const GLint *v); /* 485 */ void APIENTRY (*WindowPos3s)(GLshort32 x, GLshort32 y, GLshort32 z); /* 486 */ void APIENTRY (*WindowPos3sv)(const GLshort *v); /* 487 */ void APIENTRY (*GenQueries)(GLsizei n, GLuint *ids); /* 488 */ void APIENTRY (*DeleteQueries)(GLsizei n, const GLuint *ids); /* 489 */ GLboolean APIENTRY (*IsQuery)(GLuint id); /* 490 */ void APIENTRY (*BeginQuery)(GLenum target, GLuint id); /* 491 */ void APIENTRY (*EndQuery)(GLenum target); /* 492 */ void APIENTRY (*GetQueryiv)(GLenum target, GLenum pname, GLint *params); /* 493 */ void APIENTRY (*GetQueryObjectiv)(GLuint id, GLenum pname, GLint *params); /* 494 */ void APIENTRY (*GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint *params); /* 495 */ void APIENTRY (*BindBuffer)(GLenum target, GLuint buffer); /* 496 */ void APIENTRY (*DeleteBuffers)(GLsizei n, const GLuint *buffers); /* 497 */ void APIENTRY (*GenBuffers)(GLsizei n, GLuint *buffers); /* 498 */ GLboolean APIENTRY (*IsBuffer)(GLuint buffer); /* 499 */ void APIENTRY (*BufferData)(GLenum target, GLsizeiptr size, const void *data, GLenum usage); /* 500 */ void APIENTRY (*BufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); /* 501 */ void APIENTRY (*GetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, void *data); /* 502 */ void * APIENTRY (*MapBuffer)(GLenum target, GLenum access); /* 503 */ GLboolean APIENTRY (*UnmapBuffer)(GLenum target); /* 504 */ void APIENTRY (*GetBufferParameteriv)(GLenum target, GLenum pname, GLint *params); /* 505 */ void APIENTRY (*GetBufferPointerv)(GLenum target, GLenum pname, void * *params); /* 506 */ void APIENTRY (*ActiveTextureARB)(GLenum texture); /* 507 */ void APIENTRY (*ClientActiveTextureARB)(GLenum texture); /* 508 */ void APIENTRY (*MultiTexCoord1dARB)(GLenum target, GLdouble s); /* 509 */ void APIENTRY (*MultiTexCoord1dvARB)(GLenum target, const GLdouble *v); /* 510 */ void APIENTRY (*MultiTexCoord1fARB)(GLenum target, GLfloat s); /* 511 */ void APIENTRY (*MultiTexCoord1fvARB)(GLenum target, const GLfloat *v); /* 512 */ void APIENTRY (*MultiTexCoord1iARB)(GLenum target, GLint s); /* 513 */ void APIENTRY (*MultiTexCoord1ivARB)(GLenum target, const GLint *v); /* 514 */ void APIENTRY (*MultiTexCoord1sARB)(GLenum target, GLshort32 s); /* 515 */ void APIENTRY (*MultiTexCoord1svARB)(GLenum target, const GLshort *v); /* 516 */ void APIENTRY (*MultiTexCoord2dARB)(GLenum target, GLdouble s, GLdouble t); /* 517 */ void APIENTRY (*MultiTexCoord2dvARB)(GLenum target, const GLdouble *v); /* 518 */ void APIENTRY (*MultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t); /* 519 */ void APIENTRY (*MultiTexCoord2fvARB)(GLenum target, const GLfloat *v); /* 520 */ void APIENTRY (*MultiTexCoord2iARB)(GLenum target, GLint s, GLint t); /* 521 */ void APIENTRY (*MultiTexCoord2ivARB)(GLenum target, const GLint *v); /* 522 */ void APIENTRY (*MultiTexCoord2sARB)(GLenum target, GLshort32 s, GLshort32 t); /* 523 */ void APIENTRY (*MultiTexCoord2svARB)(GLenum target, const GLshort *v); /* 524 */ void APIENTRY (*MultiTexCoord3dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r); /* 525 */ void APIENTRY (*MultiTexCoord3dvARB)(GLenum target, const GLdouble *v); /* 526 */ void APIENTRY (*MultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r); /* 527 */ void APIENTRY (*MultiTexCoord3fvARB)(GLenum target, const GLfloat *v); /* 528 */ void APIENTRY (*MultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r); /* 529 */ void APIENTRY (*MultiTexCoord3ivARB)(GLenum target, const GLint *v); /* 530 */ void APIENTRY (*MultiTexCoord3sARB)(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r); /* 531 */ void APIENTRY (*MultiTexCoord3svARB)(GLenum target, const GLshort *v); /* 532 */ void APIENTRY (*MultiTexCoord4dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); /* 533 */ void APIENTRY (*MultiTexCoord4dvARB)(GLenum target, const GLdouble *v); /* 534 */ void APIENTRY (*MultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); /* 535 */ void APIENTRY (*MultiTexCoord4fvARB)(GLenum target, const GLfloat *v); /* 536 */ void APIENTRY (*MultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q); /* 537 */ void APIENTRY (*MultiTexCoord4ivARB)(GLenum target, const GLint *v); /* 538 */ void APIENTRY (*MultiTexCoord4sARB)(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q); /* 539 */ void APIENTRY (*MultiTexCoord4svARB)(GLenum target, const GLshort *v); /* 540 */ void APIENTRY (*LoadTransposeMatrixfARB)(const GLfloat *m); /* 541 */ void APIENTRY (*LoadTransposeMatrixdARB)(const GLdouble *m); /* 542 */ void APIENTRY (*MultTransposeMatrixfARB)(const GLfloat *m); /* 543 */ void APIENTRY (*MultTransposeMatrixdARB)(const GLdouble *m); /* 544 */ void APIENTRY (*SampleCoverageARB)(GLfloat value, GLboolean32 invert); /* 545 */ void APIENTRY (*CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); /* 546 */ void APIENTRY (*CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); /* 547 */ void APIENTRY (*CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); /* 548 */ void APIENTRY (*CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); /* 549 */ void APIENTRY (*CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); /* 550 */ void APIENTRY (*CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); /* 551 */ void APIENTRY (*GetCompressedTexImageARB)(GLenum target, GLint level, void *img); /* 552 */ void APIENTRY (*PointParameterfARB)(GLenum pname, GLfloat param); /* 553 */ void APIENTRY (*PointParameterfvARB)(GLenum pname, const GLfloat *params); /* 554 */ void APIENTRY (*WeightbvARB)(GLint size, const GLbyte *weights); /* 555 */ void APIENTRY (*WeightsvARB)(GLint size, const GLshort *weights); /* 556 */ void APIENTRY (*WeightivARB)(GLint size, const GLint *weights); /* 557 */ void APIENTRY (*WeightfvARB)(GLint size, const GLfloat *weights); /* 558 */ void APIENTRY (*WeightdvARB)(GLint size, const GLdouble *weights); /* 559 */ void APIENTRY (*WeightubvARB)(GLint size, const GLubyte *weights); /* 560 */ void APIENTRY (*WeightusvARB)(GLint size, const GLushort *weights); /* 561 */ void APIENTRY (*WeightuivARB)(GLint size, const GLuint *weights); /* 562 */ void APIENTRY (*WeightPointerARB)(GLint size, GLenum type, GLsizei stride, const void *pointer); /* 563 */ void APIENTRY (*VertexBlendARB)(GLint count); /* 564 */ void APIENTRY (*CurrentPaletteMatrixARB)(GLint index); /* 565 */ void APIENTRY (*MatrixIndexubvARB)(GLint size, const GLubyte *indices); /* 566 */ void APIENTRY (*MatrixIndexusvARB)(GLint size, const GLushort *indices); /* 567 */ void APIENTRY (*MatrixIndexuivARB)(GLint size, const GLuint *indices); /* 568 */ void APIENTRY (*MatrixIndexPointerARB)(GLint size, GLenum type, GLsizei stride, const void *pointer); /* 569 */ void APIENTRY (*WindowPos2dARB)(GLdouble x, GLdouble y); /* 570 */ void APIENTRY (*WindowPos2dvARB)(const GLdouble *v); /* 571 */ void APIENTRY (*WindowPos2fARB)(GLfloat x, GLfloat y); /* 572 */ void APIENTRY (*WindowPos2fvARB)(const GLfloat *v); /* 573 */ void APIENTRY (*WindowPos2iARB)(GLint x, GLint y); /* 574 */ void APIENTRY (*WindowPos2ivARB)(const GLint *v); /* 575 */ void APIENTRY (*WindowPos2sARB)(GLshort32 x, GLshort32 y); /* 576 */ void APIENTRY (*WindowPos2svARB)(const GLshort *v); /* 577 */ void APIENTRY (*WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z); /* 578 */ void APIENTRY (*WindowPos3dvARB)(const GLdouble *v); /* 579 */ void APIENTRY (*WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z); /* 580 */ void APIENTRY (*WindowPos3fvARB)(const GLfloat *v); /* 581 */ void APIENTRY (*WindowPos3iARB)(GLint x, GLint y, GLint z); /* 582 */ void APIENTRY (*WindowPos3ivARB)(const GLint *v); /* 583 */ void APIENTRY (*WindowPos3sARB)(GLshort32 x, GLshort32 y, GLshort32 z); /* 584 */ void APIENTRY (*WindowPos3svARB)(const GLshort *v); /* 585 */ void APIENTRY (*VertexAttrib1dARB)(GLuint index, GLdouble x); /* 586 */ void APIENTRY (*VertexAttrib1dvARB)(GLuint index, const GLdouble *v); /* 587 */ void APIENTRY (*VertexAttrib1fARB)(GLuint index, GLfloat x); /* 588 */ void APIENTRY (*VertexAttrib1fvARB)(GLuint index, const GLfloat *v); /* 589 */ void APIENTRY (*VertexAttrib1sARB)(GLuint index, GLshort32 x); /* 590 */ void APIENTRY (*VertexAttrib1svARB)(GLuint index, const GLshort *v); /* 591 */ void APIENTRY (*VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y); /* 592 */ void APIENTRY (*VertexAttrib2dvARB)(GLuint index, const GLdouble *v); /* 593 */ void APIENTRY (*VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y); /* 594 */ void APIENTRY (*VertexAttrib2fvARB)(GLuint index, const GLfloat *v); /* 595 */ void APIENTRY (*VertexAttrib2sARB)(GLuint index, GLshort32 x, GLshort32 y); /* 596 */ void APIENTRY (*VertexAttrib2svARB)(GLuint index, const GLshort *v); /* 597 */ void APIENTRY (*VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 598 */ void APIENTRY (*VertexAttrib3dvARB)(GLuint index, const GLdouble *v); /* 599 */ void APIENTRY (*VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 600 */ void APIENTRY (*VertexAttrib3fvARB)(GLuint index, const GLfloat *v); /* 601 */ void APIENTRY (*VertexAttrib3sARB)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z); /* 602 */ void APIENTRY (*VertexAttrib3svARB)(GLuint index, const GLshort *v); /* 603 */ void APIENTRY (*VertexAttrib4NbvARB)(GLuint index, const GLbyte *v); /* 604 */ void APIENTRY (*VertexAttrib4NivARB)(GLuint index, const GLint *v); /* 605 */ void APIENTRY (*VertexAttrib4NsvARB)(GLuint index, const GLshort *v); /* 606 */ void APIENTRY (*VertexAttrib4NubARB)(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w); /* 607 */ void APIENTRY (*VertexAttrib4NubvARB)(GLuint index, const GLubyte *v); /* 608 */ void APIENTRY (*VertexAttrib4NuivARB)(GLuint index, const GLuint *v); /* 609 */ void APIENTRY (*VertexAttrib4NusvARB)(GLuint index, const GLushort *v); /* 610 */ void APIENTRY (*VertexAttrib4bvARB)(GLuint index, const GLbyte *v); /* 611 */ void APIENTRY (*VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 612 */ void APIENTRY (*VertexAttrib4dvARB)(GLuint index, const GLdouble *v); /* 613 */ void APIENTRY (*VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 614 */ void APIENTRY (*VertexAttrib4fvARB)(GLuint index, const GLfloat *v); /* 615 */ void APIENTRY (*VertexAttrib4ivARB)(GLuint index, const GLint *v); /* 616 */ void APIENTRY (*VertexAttrib4sARB)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); /* 617 */ void APIENTRY (*VertexAttrib4svARB)(GLuint index, const GLshort *v); /* 618 */ void APIENTRY (*VertexAttrib4ubvARB)(GLuint index, const GLubyte *v); /* 619 */ void APIENTRY (*VertexAttrib4uivARB)(GLuint index, const GLuint *v); /* 620 */ void APIENTRY (*VertexAttrib4usvARB)(GLuint index, const GLushort *v); /* 621 */ void APIENTRY (*VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer); /* 622 */ void APIENTRY (*EnableVertexAttribArrayARB)(GLuint index); /* 623 */ void APIENTRY (*DisableVertexAttribArrayARB)(GLuint index); /* 624 */ void APIENTRY (*ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const void *string); /* 625 */ void APIENTRY (*BindProgramARB)(GLenum target, GLuint program); /* 626 */ void APIENTRY (*DeleteProgramsARB)(GLsizei n, const GLuint *programs); /* 627 */ void APIENTRY (*GenProgramsARB)(GLsizei n, GLuint *programs); /* 628 */ void APIENTRY (*ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 629 */ void APIENTRY (*ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble *params); /* 630 */ void APIENTRY (*ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 631 */ void APIENTRY (*ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat *params); /* 632 */ void APIENTRY (*ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 633 */ void APIENTRY (*ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble *params); /* 634 */ void APIENTRY (*ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 635 */ void APIENTRY (*ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat *params); /* 636 */ void APIENTRY (*GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble *params); /* 637 */ void APIENTRY (*GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat *params); /* 638 */ void APIENTRY (*GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble *params); /* 639 */ void APIENTRY (*GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat *params); /* 640 */ void APIENTRY (*GetProgramivARB)(GLenum target, GLenum pname, GLint *params); /* 641 */ void APIENTRY (*GetProgramStringARB)(GLenum target, GLenum pname, void *string); /* 642 */ void APIENTRY (*GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble *params); /* 643 */ void APIENTRY (*GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat *params); /* 644 */ void APIENTRY (*GetVertexAttribivARB)(GLuint index, GLenum pname, GLint *params); /* 645 */ void APIENTRY (*GetVertexAttribPointervARB)(GLuint index, GLenum pname, void * *pointer); /* 646 */ GLboolean APIENTRY (*IsProgramARB)(GLuint program); /* 647 */ void APIENTRY (*BindBufferARB)(GLenum target, GLuint buffer); /* 648 */ void APIENTRY (*DeleteBuffersARB)(GLsizei n, const GLuint *buffers); /* 649 */ void APIENTRY (*GenBuffersARB)(GLsizei n, GLuint *buffers); /* 650 */ GLboolean APIENTRY (*IsBufferARB)(GLuint buffer); /* 651 */ void APIENTRY (*BufferDataARB)(GLenum target, GLsizeiptrARB size, const void *data, GLenum usage); /* 652 */ void APIENTRY (*BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data); /* 653 */ void APIENTRY (*GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data); /* 654 */ void * APIENTRY (*MapBufferARB)(GLenum target, GLenum access); /* 655 */ GLboolean APIENTRY (*UnmapBufferARB)(GLenum target); /* 656 */ void APIENTRY (*GetBufferParameterivARB)(GLenum target, GLenum pname, GLint *params); /* 657 */ void APIENTRY (*GetBufferPointervARB)(GLenum target, GLenum pname, void * *params); /* 658 */ void APIENTRY (*GenQueriesARB)(GLsizei n, GLuint *ids); /* 659 */ void APIENTRY (*DeleteQueriesARB)(GLsizei n, const GLuint *ids); /* 660 */ GLboolean APIENTRY (*IsQueryARB)(GLuint id); /* 661 */ void APIENTRY (*BeginQueryARB)(GLenum target, GLuint id); /* 662 */ void APIENTRY (*EndQueryARB)(GLenum target); /* 663 */ void APIENTRY (*GetQueryivARB)(GLenum target, GLenum pname, GLint *params); /* 664 */ void APIENTRY (*GetQueryObjectivARB)(GLuint id, GLenum pname, GLint *params); /* 665 */ void APIENTRY (*GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint *params); /* 666 */ void APIENTRY (*DeleteObjectARB)(GLhandleARB obj); /* 667 */ GLhandleARB APIENTRY (*GetHandleARB)(GLenum pname); /* 668 */ void APIENTRY (*DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj); /* 669 */ GLhandleARB APIENTRY (*CreateShaderObjectARB)(GLenum shaderType); /* 670 */ void APIENTRY (*ShaderSourceARB)(GLhandleARB shaderObj, GLsizei count, const GLcharARB * *string, const GLint *length); /* 671 */ void APIENTRY (*CompileShaderARB)(GLhandleARB shaderObj); /* 672 */ GLhandleARB APIENTRY (*CreateProgramObjectARB)(void); /* 673 */ void APIENTRY (*AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj); /* 674 */ void APIENTRY (*LinkProgramARB)(GLhandleARB programObj); /* 675 */ void APIENTRY (*UseProgramObjectARB)(GLhandleARB programObj); /* 676 */ void APIENTRY (*ValidateProgramARB)(GLhandleARB programObj); /* 677 */ void APIENTRY (*Uniform1fARB)(GLint location, GLfloat v0); /* 678 */ void APIENTRY (*Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1); /* 679 */ void APIENTRY (*Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); /* 680 */ void APIENTRY (*Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); /* 681 */ void APIENTRY (*Uniform1iARB)(GLint location, GLint v0); /* 682 */ void APIENTRY (*Uniform2iARB)(GLint location, GLint v0, GLint v1); /* 683 */ void APIENTRY (*Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2); /* 684 */ void APIENTRY (*Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); /* 685 */ void APIENTRY (*Uniform1fvARB)(GLint location, GLsizei count, const GLfloat *value); /* 686 */ void APIENTRY (*Uniform2fvARB)(GLint location, GLsizei count, const GLfloat *value); /* 687 */ void APIENTRY (*Uniform3fvARB)(GLint location, GLsizei count, const GLfloat *value); /* 688 */ void APIENTRY (*Uniform4fvARB)(GLint location, GLsizei count, const GLfloat *value); /* 689 */ void APIENTRY (*Uniform1ivARB)(GLint location, GLsizei count, const GLint *value); /* 690 */ void APIENTRY (*Uniform2ivARB)(GLint location, GLsizei count, const GLint *value); /* 691 */ void APIENTRY (*Uniform3ivARB)(GLint location, GLsizei count, const GLint *value); /* 692 */ void APIENTRY (*Uniform4ivARB)(GLint location, GLsizei count, const GLint *value); /* 693 */ void APIENTRY (*UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 694 */ void APIENTRY (*UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 695 */ void APIENTRY (*UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 696 */ void APIENTRY (*GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat *params); /* 697 */ void APIENTRY (*GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint *params); /* 698 */ void APIENTRY (*GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); /* 699 */ void APIENTRY (*GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); /* 700 */ GLint APIENTRY (*GetUniformLocationARB)(GLhandleARB programObj, const GLcharARB *name); /* 701 */ void APIENTRY (*GetActiveUniformARB)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); /* 702 */ void APIENTRY (*GetUniformfvARB)(GLhandleARB programObj, GLint location, GLfloat *params); /* 703 */ void APIENTRY (*GetUniformivARB)(GLhandleARB programObj, GLint location, GLint *params); /* 704 */ void APIENTRY (*GetShaderSourceARB)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); /* 705 */ void APIENTRY (*BindAttribLocationARB)(GLhandleARB programObj, GLuint index, const GLcharARB *name); /* 706 */ void APIENTRY (*GetActiveAttribARB)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); /* 707 */ GLint APIENTRY (*GetAttribLocationARB)(GLhandleARB programObj, const GLcharARB *name); /* 708 */ void APIENTRY (*DrawBuffersARB)(GLsizei n, const GLenum *bufs); /* 709 */ void APIENTRY (*BlendColorEXT)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); /* 710 */ void APIENTRY (*PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 711 */ void APIENTRY (*TexImage3DEXT)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); /* 712 */ void APIENTRY (*TexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); /* 713 */ void APIENTRY (*GetTexFilterFuncSGIS)(GLenum target, GLenum filter, GLfloat *weights); /* 714 */ void APIENTRY (*TexFilterFuncSGIS)(GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); /* 715 */ void APIENTRY (*TexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); /* 716 */ void APIENTRY (*TexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); /* 717 */ void APIENTRY (*CopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); /* 718 */ void APIENTRY (*CopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); /* 719 */ void APIENTRY (*CopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); /* 720 */ void APIENTRY (*CopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 721 */ void APIENTRY (*CopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 722 */ void APIENTRY (*GetHistogramEXT)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values); /* 723 */ void APIENTRY (*GetHistogramParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); /* 724 */ void APIENTRY (*GetHistogramParameterivEXT)(GLenum target, GLenum pname, GLint *params); /* 725 */ void APIENTRY (*GetMinmaxEXT)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values); /* 726 */ void APIENTRY (*GetMinmaxParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); /* 727 */ void APIENTRY (*GetMinmaxParameterivEXT)(GLenum target, GLenum pname, GLint *params); /* 728 */ void APIENTRY (*HistogramEXT)(GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink); /* 729 */ void APIENTRY (*MinmaxEXT)(GLenum target, GLenum internalformat, GLboolean32 sink); /* 730 */ void APIENTRY (*ResetHistogramEXT)(GLenum target); /* 731 */ void APIENTRY (*ResetMinmaxEXT)(GLenum target); /* 732 */ void APIENTRY (*ConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); /* 733 */ void APIENTRY (*ConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); /* 734 */ void APIENTRY (*ConvolutionParameterfEXT)(GLenum target, GLenum pname, GLfloat params); /* 735 */ void APIENTRY (*ConvolutionParameterfvEXT)(GLenum target, GLenum pname, const GLfloat *params); /* 736 */ void APIENTRY (*ConvolutionParameteriEXT)(GLenum target, GLenum pname, GLint params); /* 737 */ void APIENTRY (*ConvolutionParameterivEXT)(GLenum target, GLenum pname, const GLint *params); /* 738 */ void APIENTRY (*CopyConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 739 */ void APIENTRY (*CopyConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); /* 740 */ void APIENTRY (*GetConvolutionFilterEXT)(GLenum target, GLenum format, GLenum type, void *image); /* 741 */ void APIENTRY (*GetConvolutionParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); /* 742 */ void APIENTRY (*GetConvolutionParameterivEXT)(GLenum target, GLenum pname, GLint *params); /* 743 */ void APIENTRY (*GetSeparableFilterEXT)(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); /* 744 */ void APIENTRY (*SeparableFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); /* 745 */ void APIENTRY (*ColorTableSGI)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); /* 746 */ void APIENTRY (*ColorTableParameterfvSGI)(GLenum target, GLenum pname, const GLfloat *params); /* 747 */ void APIENTRY (*ColorTableParameterivSGI)(GLenum target, GLenum pname, const GLint *params); /* 748 */ void APIENTRY (*CopyColorTableSGI)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 749 */ void APIENTRY (*GetColorTableSGI)(GLenum target, GLenum format, GLenum type, void *table); /* 750 */ void APIENTRY (*GetColorTableParameterfvSGI)(GLenum target, GLenum pname, GLfloat *params); /* 751 */ void APIENTRY (*GetColorTableParameterivSGI)(GLenum target, GLenum pname, GLint *params); /* 752 */ void APIENTRY (*PixelTexGenSGIX)(GLenum mode); /* 753 */ void APIENTRY (*PixelTexGenParameteriSGIS)(GLenum pname, GLint param); /* 754 */ void APIENTRY (*PixelTexGenParameterivSGIS)(GLenum pname, const GLint *params); /* 755 */ void APIENTRY (*PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param); /* 756 */ void APIENTRY (*PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat *params); /* 757 */ void APIENTRY (*GetPixelTexGenParameterivSGIS)(GLenum pname, GLint *params); /* 758 */ void APIENTRY (*GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat *params); /* 759 */ void APIENTRY (*TexImage4DSGIS)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels); /* 760 */ void APIENTRY (*TexSubImage4DSGIS)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels); /* 761 */ GLboolean APIENTRY (*AreTexturesResidentEXT)(GLsizei n, const GLuint *textures, GLboolean *residences); /* 762 */ void APIENTRY (*BindTextureEXT)(GLenum target, GLuint texture); /* 763 */ void APIENTRY (*DeleteTexturesEXT)(GLsizei n, const GLuint *textures); /* 764 */ void APIENTRY (*GenTexturesEXT)(GLsizei n, GLuint *textures); /* 765 */ GLboolean APIENTRY (*IsTextureEXT)(GLuint texture); /* 766 */ void APIENTRY (*PrioritizeTexturesEXT)(GLsizei n, const GLuint *textures, const GLclampf *priorities); /* 767 */ void APIENTRY (*DetailTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat *points); /* 768 */ void APIENTRY (*GetDetailTexFuncSGIS)(GLenum target, GLfloat *points); /* 769 */ void APIENTRY (*SharpenTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat *points); /* 770 */ void APIENTRY (*GetSharpenTexFuncSGIS)(GLenum target, GLfloat *points); /* 771 */ void APIENTRY (*SampleMaskSGIS)(GLclampf value, GLboolean32 invert); /* 772 */ void APIENTRY (*SamplePatternSGIS)(GLenum pattern); /* 773 */ void APIENTRY (*ArrayElementEXT)(GLint i); /* 774 */ void APIENTRY (*ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); /* 775 */ void APIENTRY (*DrawArraysEXT)(GLenum mode, GLint first, GLsizei count); /* 776 */ void APIENTRY (*EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean *pointer); /* 777 */ void APIENTRY (*GetPointervEXT)(GLenum pname, void * *params); /* 778 */ void APIENTRY (*IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const void *pointer); /* 779 */ void APIENTRY (*NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const void *pointer); /* 780 */ void APIENTRY (*TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); /* 781 */ void APIENTRY (*VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); /* 782 */ void APIENTRY (*BlendEquationEXT)(GLenum mode); /* 783 */ void APIENTRY (*SpriteParameterfSGIX)(GLenum pname, GLfloat param); /* 784 */ void APIENTRY (*SpriteParameterfvSGIX)(GLenum pname, const GLfloat *params); /* 785 */ void APIENTRY (*SpriteParameteriSGIX)(GLenum pname, GLint param); /* 786 */ void APIENTRY (*SpriteParameterivSGIX)(GLenum pname, const GLint *params); /* 787 */ void APIENTRY (*PointParameterfEXT)(GLenum pname, GLfloat param); /* 788 */ void APIENTRY (*PointParameterfvEXT)(GLenum pname, const GLfloat *params); /* 789 */ void APIENTRY (*PointParameterfSGIS)(GLenum pname, GLfloat param); /* 790 */ void APIENTRY (*PointParameterfvSGIS)(GLenum pname, const GLfloat *params); /* 791 */ GLint APIENTRY (*GetInstrumentsSGIX)(void); /* 792 */ void APIENTRY (*InstrumentsBufferSGIX)(GLsizei size, GLint *buffer); /* 793 */ GLint APIENTRY (*PollInstrumentsSGIX)(GLint *marker_p); /* 794 */ void APIENTRY (*ReadInstrumentsSGIX)(GLint marker); /* 795 */ void APIENTRY (*StartInstrumentsSGIX)(void); /* 796 */ void APIENTRY (*StopInstrumentsSGIX)(GLint marker); /* 797 */ void APIENTRY (*FrameZoomSGIX)(GLint factor); /* 798 */ void APIENTRY (*TagSampleBufferSGIX)(void); /* 799 */ void APIENTRY (*DeformationMap3dSGIX)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); /* 800 */ void APIENTRY (*DeformationMap3fSGIX)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); /* 801 */ void APIENTRY (*DeformSGIX)(GLbitfield mask); /* 802 */ void APIENTRY (*LoadIdentityDeformationMapSGIX)(GLbitfield mask); /* 803 */ void APIENTRY (*ReferencePlaneSGIX)(const GLdouble *equation); /* 804 */ void APIENTRY (*FlushRasterSGIX)(void); /* 805 */ void APIENTRY (*FogFuncSGIS)(GLsizei n, const GLfloat *points); /* 806 */ void APIENTRY (*GetFogFuncSGIS)(GLfloat *points); /* 807 */ void APIENTRY (*ImageTransformParameteriHP)(GLenum target, GLenum pname, GLint param); /* 808 */ void APIENTRY (*ImageTransformParameterfHP)(GLenum target, GLenum pname, GLfloat param); /* 809 */ void APIENTRY (*ImageTransformParameterivHP)(GLenum target, GLenum pname, const GLint *params); /* 810 */ void APIENTRY (*ImageTransformParameterfvHP)(GLenum target, GLenum pname, const GLfloat *params); /* 811 */ void APIENTRY (*GetImageTransformParameterivHP)(GLenum target, GLenum pname, GLint *params); /* 812 */ void APIENTRY (*GetImageTransformParameterfvHP)(GLenum target, GLenum pname, GLfloat *params); /* 813 */ void APIENTRY (*ColorSubTableEXT)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); /* 814 */ void APIENTRY (*CopyColorSubTableEXT)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); /* 815 */ void APIENTRY (*HintPGI)(GLenum target, GLint mode); /* 816 */ void APIENTRY (*ColorTableEXT)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table); /* 817 */ void APIENTRY (*GetColorTableEXT)(GLenum target, GLenum format, GLenum type, void *data); /* 818 */ void APIENTRY (*GetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint *params); /* 819 */ void APIENTRY (*GetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); /* 820 */ void APIENTRY (*GetListParameterfvSGIX)(GLuint list, GLenum pname, GLfloat *params); /* 821 */ void APIENTRY (*GetListParameterivSGIX)(GLuint list, GLenum pname, GLint *params); /* 822 */ void APIENTRY (*ListParameterfSGIX)(GLuint list, GLenum pname, GLfloat param); /* 823 */ void APIENTRY (*ListParameterfvSGIX)(GLuint list, GLenum pname, const GLfloat *params); /* 824 */ void APIENTRY (*ListParameteriSGIX)(GLuint list, GLenum pname, GLint param); /* 825 */ void APIENTRY (*ListParameterivSGIX)(GLuint list, GLenum pname, const GLint *params); /* 826 */ void APIENTRY (*IndexMaterialEXT)(GLenum face, GLenum mode); /* 827 */ void APIENTRY (*IndexFuncEXT)(GLenum func, GLclampf ref); /* 828 */ void APIENTRY (*LockArraysEXT)(GLint first, GLsizei count); /* 829 */ void APIENTRY (*UnlockArraysEXT)(void); /* 830 */ void APIENTRY (*CullParameterdvEXT)(GLenum pname, GLdouble *params); /* 831 */ void APIENTRY (*CullParameterfvEXT)(GLenum pname, GLfloat *params); /* 832 */ void APIENTRY (*FragmentColorMaterialSGIX)(GLenum face, GLenum mode); /* 833 */ void APIENTRY (*FragmentLightfSGIX)(GLenum light, GLenum pname, GLfloat param); /* 834 */ void APIENTRY (*FragmentLightfvSGIX)(GLenum light, GLenum pname, const GLfloat *params); /* 835 */ void APIENTRY (*FragmentLightiSGIX)(GLenum light, GLenum pname, GLint param); /* 836 */ void APIENTRY (*FragmentLightivSGIX)(GLenum light, GLenum pname, const GLint *params); /* 837 */ void APIENTRY (*FragmentLightModelfSGIX)(GLenum pname, GLfloat param); /* 838 */ void APIENTRY (*FragmentLightModelfvSGIX)(GLenum pname, const GLfloat *params); /* 839 */ void APIENTRY (*FragmentLightModeliSGIX)(GLenum pname, GLint param); /* 840 */ void APIENTRY (*FragmentLightModelivSGIX)(GLenum pname, const GLint *params); /* 841 */ void APIENTRY (*FragmentMaterialfSGIX)(GLenum face, GLenum pname, GLfloat param); /* 842 */ void APIENTRY (*FragmentMaterialfvSGIX)(GLenum face, GLenum pname, const GLfloat *params); /* 843 */ void APIENTRY (*FragmentMaterialiSGIX)(GLenum face, GLenum pname, GLint param); /* 844 */ void APIENTRY (*FragmentMaterialivSGIX)(GLenum face, GLenum pname, const GLint *params); /* 845 */ void APIENTRY (*GetFragmentLightfvSGIX)(GLenum light, GLenum pname, GLfloat *params); /* 846 */ void APIENTRY (*GetFragmentLightivSGIX)(GLenum light, GLenum pname, GLint *params); /* 847 */ void APIENTRY (*GetFragmentMaterialfvSGIX)(GLenum face, GLenum pname, GLfloat *params); /* 848 */ void APIENTRY (*GetFragmentMaterialivSGIX)(GLenum face, GLenum pname, GLint *params); /* 849 */ void APIENTRY (*LightEnviSGIX)(GLenum pname, GLint param); /* 850 */ void APIENTRY (*DrawRangeElementsEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); /* 851 */ void APIENTRY (*ApplyTextureEXT)(GLenum mode); /* 852 */ void APIENTRY (*TextureLightEXT)(GLenum pname); /* 853 */ void APIENTRY (*TextureMaterialEXT)(GLenum face, GLenum mode); /* 854 */ void APIENTRY (*AsyncMarkerSGIX)(GLuint marker); /* 855 */ GLint APIENTRY (*FinishAsyncSGIX)(GLuint *markerp); /* 856 */ GLint APIENTRY (*PollAsyncSGIX)(GLuint *markerp); /* 857 */ GLuint APIENTRY (*GenAsyncMarkersSGIX)(GLsizei range); /* 858 */ void APIENTRY (*DeleteAsyncMarkersSGIX)(GLuint marker, GLsizei range); /* 859 */ GLboolean APIENTRY (*IsAsyncMarkerSGIX)(GLuint marker); /* 860 */ void APIENTRY (*VertexPointervINTEL)(GLint size, GLenum type, const void * *pointer); /* 861 */ void APIENTRY (*NormalPointervINTEL)(GLenum type, const void * *pointer); /* 862 */ void APIENTRY (*ColorPointervINTEL)(GLint size, GLenum type, const void * *pointer); /* 863 */ void APIENTRY (*TexCoordPointervINTEL)(GLint size, GLenum type, const void * *pointer); /* 864 */ void APIENTRY (*PixelTransformParameteriEXT)(GLenum target, GLenum pname, GLint param); /* 865 */ void APIENTRY (*PixelTransformParameterfEXT)(GLenum target, GLenum pname, GLfloat param); /* 866 */ void APIENTRY (*PixelTransformParameterivEXT)(GLenum target, GLenum pname, const GLint *params); /* 867 */ void APIENTRY (*PixelTransformParameterfvEXT)(GLenum target, GLenum pname, const GLfloat *params); /* 868 */ void APIENTRY (*SecondaryColor3bEXT)(GLbyte32 red, GLbyte32 green, GLbyte32 blue); /* 869 */ void APIENTRY (*SecondaryColor3bvEXT)(const GLbyte *v); /* 870 */ void APIENTRY (*SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue); /* 871 */ void APIENTRY (*SecondaryColor3dvEXT)(const GLdouble *v); /* 872 */ void APIENTRY (*SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); /* 873 */ void APIENTRY (*SecondaryColor3fvEXT)(const GLfloat *v); /* 874 */ void APIENTRY (*SecondaryColor3iEXT)(GLint red, GLint green, GLint blue); /* 875 */ void APIENTRY (*SecondaryColor3ivEXT)(const GLint *v); /* 876 */ void APIENTRY (*SecondaryColor3sEXT)(GLshort32 red, GLshort32 green, GLshort32 blue); /* 877 */ void APIENTRY (*SecondaryColor3svEXT)(const GLshort *v); /* 878 */ void APIENTRY (*SecondaryColor3ubEXT)(GLubyte32 red, GLubyte32 green, GLubyte32 blue); /* 879 */ void APIENTRY (*SecondaryColor3ubvEXT)(const GLubyte *v); /* 880 */ void APIENTRY (*SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue); /* 881 */ void APIENTRY (*SecondaryColor3uivEXT)(const GLuint *v); /* 882 */ void APIENTRY (*SecondaryColor3usEXT)(GLushort32 red, GLushort32 green, GLushort32 blue); /* 883 */ void APIENTRY (*SecondaryColor3usvEXT)(const GLushort *v); /* 884 */ void APIENTRY (*SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const void *pointer); /* 885 */ void APIENTRY (*TextureNormalEXT)(GLenum mode); /* 886 */ void APIENTRY (*MultiDrawArraysEXT)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); /* 887 */ void APIENTRY (*MultiDrawElementsEXT)(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount); /* 888 */ void APIENTRY (*FogCoordfEXT)(GLfloat coord); /* 889 */ void APIENTRY (*FogCoordfvEXT)(const GLfloat *coord); /* 890 */ void APIENTRY (*FogCoorddEXT)(GLdouble coord); /* 891 */ void APIENTRY (*FogCoorddvEXT)(const GLdouble *coord); /* 892 */ void APIENTRY (*FogCoordPointerEXT)(GLenum type, GLsizei stride, const void *pointer); /* 893 */ void APIENTRY (*Tangent3bEXT)(GLbyte32 tx, GLbyte32 ty, GLbyte32 tz); /* 894 */ void APIENTRY (*Tangent3bvEXT)(const GLbyte *v); /* 895 */ void APIENTRY (*Tangent3dEXT)(GLdouble tx, GLdouble ty, GLdouble tz); /* 896 */ void APIENTRY (*Tangent3dvEXT)(const GLdouble *v); /* 897 */ void APIENTRY (*Tangent3fEXT)(GLfloat tx, GLfloat ty, GLfloat tz); /* 898 */ void APIENTRY (*Tangent3fvEXT)(const GLfloat *v); /* 899 */ void APIENTRY (*Tangent3iEXT)(GLint tx, GLint ty, GLint tz); /* 900 */ void APIENTRY (*Tangent3ivEXT)(const GLint *v); /* 901 */ void APIENTRY (*Tangent3sEXT)(GLshort32 tx, GLshort32 ty, GLshort32 tz); /* 902 */ void APIENTRY (*Tangent3svEXT)(const GLshort *v); /* 903 */ void APIENTRY (*Binormal3bEXT)(GLbyte32 bx, GLbyte32 by, GLbyte32 bz); /* 904 */ void APIENTRY (*Binormal3bvEXT)(const GLbyte *v); /* 905 */ void APIENTRY (*Binormal3dEXT)(GLdouble bx, GLdouble by, GLdouble bz); /* 906 */ void APIENTRY (*Binormal3dvEXT)(const GLdouble *v); /* 907 */ void APIENTRY (*Binormal3fEXT)(GLfloat bx, GLfloat by, GLfloat bz); /* 908 */ void APIENTRY (*Binormal3fvEXT)(const GLfloat *v); /* 909 */ void APIENTRY (*Binormal3iEXT)(GLint bx, GLint by, GLint bz); /* 910 */ void APIENTRY (*Binormal3ivEXT)(const GLint *v); /* 911 */ void APIENTRY (*Binormal3sEXT)(GLshort32 bx, GLshort32 by, GLshort32 bz); /* 912 */ void APIENTRY (*Binormal3svEXT)(const GLshort *v); /* 913 */ void APIENTRY (*TangentPointerEXT)(GLenum type, GLsizei stride, const void *pointer); /* 914 */ void APIENTRY (*BinormalPointerEXT)(GLenum type, GLsizei stride, const void *pointer); /* 915 */ void APIENTRY (*FinishTextureSUNX)(void); /* 916 */ void APIENTRY (*GlobalAlphaFactorbSUN)(GLbyte32 factor); /* 917 */ void APIENTRY (*GlobalAlphaFactorsSUN)(GLshort32 factor); /* 918 */ void APIENTRY (*GlobalAlphaFactoriSUN)(GLint factor); /* 919 */ void APIENTRY (*GlobalAlphaFactorfSUN)(GLfloat factor); /* 920 */ void APIENTRY (*GlobalAlphaFactordSUN)(GLdouble factor); /* 921 */ void APIENTRY (*GlobalAlphaFactorubSUN)(GLubyte32 factor); /* 922 */ void APIENTRY (*GlobalAlphaFactorusSUN)(GLushort32 factor); /* 923 */ void APIENTRY (*GlobalAlphaFactoruiSUN)(GLuint factor); /* 924 */ void APIENTRY (*ReplacementCodeuiSUN)(GLuint code); /* 925 */ void APIENTRY (*ReplacementCodeusSUN)(GLushort32 code); /* 926 */ void APIENTRY (*ReplacementCodeubSUN)(GLubyte32 code); /* 927 */ void APIENTRY (*ReplacementCodeuivSUN)(const GLuint *code); /* 928 */ void APIENTRY (*ReplacementCodeusvSUN)(const GLushort *code); /* 929 */ void APIENTRY (*ReplacementCodeubvSUN)(const GLubyte *code); /* 930 */ void APIENTRY (*ReplacementCodePointerSUN)(GLenum type, GLsizei stride, const void * *pointer); /* 931 */ void APIENTRY (*Color4ubVertex2fSUN)(GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y); /* 932 */ void APIENTRY (*Color4ubVertex2fvSUN)(const GLubyte *c, const GLfloat *v); /* 933 */ void APIENTRY (*Color4ubVertex3fSUN)(GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z); /* 934 */ void APIENTRY (*Color4ubVertex3fvSUN)(const GLubyte *c, const GLfloat *v); /* 935 */ void APIENTRY (*Color3fVertex3fSUN)(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); /* 936 */ void APIENTRY (*Color3fVertex3fvSUN)(const GLfloat *c, const GLfloat *v); /* 937 */ void APIENTRY (*Normal3fVertex3fSUN)(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 938 */ void APIENTRY (*Normal3fVertex3fvSUN)(const GLfloat *n, const GLfloat *v); /* 939 */ void APIENTRY (*Color4fNormal3fVertex3fSUN)(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 940 */ void APIENTRY (*Color4fNormal3fVertex3fvSUN)(const GLfloat *c, const GLfloat *n, const GLfloat *v); /* 941 */ void APIENTRY (*TexCoord2fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); /* 942 */ void APIENTRY (*TexCoord2fVertex3fvSUN)(const GLfloat *tc, const GLfloat *v); /* 943 */ void APIENTRY (*TexCoord4fVertex4fSUN)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 944 */ void APIENTRY (*TexCoord4fVertex4fvSUN)(const GLfloat *tc, const GLfloat *v); /* 945 */ void APIENTRY (*TexCoord2fColor4ubVertex3fSUN)(GLfloat s, GLfloat t, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z); /* 946 */ void APIENTRY (*TexCoord2fColor4ubVertex3fvSUN)(const GLfloat *tc, const GLubyte *c, const GLfloat *v); /* 947 */ void APIENTRY (*TexCoord2fColor3fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); /* 948 */ void APIENTRY (*TexCoord2fColor3fVertex3fvSUN)(const GLfloat *tc, const GLfloat *c, const GLfloat *v); /* 949 */ void APIENTRY (*TexCoord2fNormal3fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 950 */ void APIENTRY (*TexCoord2fNormal3fVertex3fvSUN)(const GLfloat *tc, const GLfloat *n, const GLfloat *v); /* 951 */ void APIENTRY (*TexCoord2fColor4fNormal3fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 952 */ void APIENTRY (*TexCoord2fColor4fNormal3fVertex3fvSUN)(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); /* 953 */ void APIENTRY (*TexCoord4fColor4fNormal3fVertex4fSUN)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 954 */ void APIENTRY (*TexCoord4fColor4fNormal3fVertex4fvSUN)(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); /* 955 */ void APIENTRY (*ReplacementCodeuiVertex3fSUN)(GLuint rc, GLfloat x, GLfloat y, GLfloat z); /* 956 */ void APIENTRY (*ReplacementCodeuiVertex3fvSUN)(const GLuint *rc, const GLfloat *v); /* 957 */ void APIENTRY (*ReplacementCodeuiColor4ubVertex3fSUN)(GLuint rc, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z); /* 958 */ void APIENTRY (*ReplacementCodeuiColor4ubVertex3fvSUN)(const GLuint *rc, const GLubyte *c, const GLfloat *v); /* 959 */ void APIENTRY (*ReplacementCodeuiColor3fVertex3fSUN)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); /* 960 */ void APIENTRY (*ReplacementCodeuiColor3fVertex3fvSUN)(const GLuint *rc, const GLfloat *c, const GLfloat *v); /* 961 */ void APIENTRY (*ReplacementCodeuiNormal3fVertex3fSUN)(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 962 */ void APIENTRY (*ReplacementCodeuiNormal3fVertex3fvSUN)(const GLuint *rc, const GLfloat *n, const GLfloat *v); /* 963 */ void APIENTRY (*ReplacementCodeuiColor4fNormal3fVertex3fSUN)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 964 */ void APIENTRY (*ReplacementCodeuiColor4fNormal3fVertex3fvSUN)(const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); /* 965 */ void APIENTRY (*ReplacementCodeuiTexCoord2fVertex3fSUN)(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); /* 966 */ void APIENTRY (*ReplacementCodeuiTexCoord2fVertex3fvSUN)(const GLuint *rc, const GLfloat *tc, const GLfloat *v); /* 967 */ void APIENTRY (*ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN)(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 968 */ void APIENTRY (*ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN)(const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); /* 969 */ void APIENTRY (*ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN)(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 970 */ void APIENTRY (*ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN)(const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); /* 971 */ void APIENTRY (*BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 972 */ void APIENTRY (*BlendFuncSeparateINGR)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 973 */ void APIENTRY (*VertexWeightfEXT)(GLfloat weight); /* 974 */ void APIENTRY (*VertexWeightfvEXT)(const GLfloat *weight); /* 975 */ void APIENTRY (*VertexWeightPointerEXT)(GLint size, GLenum type, GLsizei stride, const void *pointer); /* 976 */ void APIENTRY (*FlushVertexArrayRangeNV)(void); /* 977 */ void APIENTRY (*VertexArrayRangeNV)(GLsizei length, const void *pointer); /* 978 */ void APIENTRY (*CombinerParameterfvNV)(GLenum pname, const GLfloat *params); /* 979 */ void APIENTRY (*CombinerParameterfNV)(GLenum pname, GLfloat param); /* 980 */ void APIENTRY (*CombinerParameterivNV)(GLenum pname, const GLint *params); /* 981 */ void APIENTRY (*CombinerParameteriNV)(GLenum pname, GLint param); /* 982 */ void APIENTRY (*CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 983 */ void APIENTRY (*CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean32 abDotProduct, GLboolean32 cdDotProduct, GLboolean32 muxSum); /* 984 */ void APIENTRY (*FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 985 */ void APIENTRY (*GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); /* 986 */ void APIENTRY (*GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); /* 987 */ void APIENTRY (*GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat *params); /* 988 */ void APIENTRY (*GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint *params); /* 989 */ void APIENTRY (*GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat *params); /* 990 */ void APIENTRY (*GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint *params); /* 991 */ void APIENTRY (*ResizeBuffersMESA)(void); /* 992 */ void APIENTRY (*WindowPos2dMESA)(GLdouble x, GLdouble y); /* 993 */ void APIENTRY (*WindowPos2dvMESA)(const GLdouble *v); /* 994 */ void APIENTRY (*WindowPos2fMESA)(GLfloat x, GLfloat y); /* 995 */ void APIENTRY (*WindowPos2fvMESA)(const GLfloat *v); /* 996 */ void APIENTRY (*WindowPos2iMESA)(GLint x, GLint y); /* 997 */ void APIENTRY (*WindowPos2ivMESA)(const GLint *v); /* 998 */ void APIENTRY (*WindowPos2sMESA)(GLshort32 x, GLshort32 y); /* 999 */ void APIENTRY (*WindowPos2svMESA)(const GLshort *v); /* 1000 */ void APIENTRY (*WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z); /* 1001 */ void APIENTRY (*WindowPos3dvMESA)(const GLdouble *v); /* 1002 */ void APIENTRY (*WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z); /* 1003 */ void APIENTRY (*WindowPos3fvMESA)(const GLfloat *v); /* 1004 */ void APIENTRY (*WindowPos3iMESA)(GLint x, GLint y, GLint z); /* 1005 */ void APIENTRY (*WindowPos3ivMESA)(const GLint *v); /* 1006 */ void APIENTRY (*WindowPos3sMESA)(GLshort32 x, GLshort32 y, GLshort32 z); /* 1007 */ void APIENTRY (*WindowPos3svMESA)(const GLshort *v); /* 1008 */ void APIENTRY (*WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 1009 */ void APIENTRY (*WindowPos4dvMESA)(const GLdouble *v); /* 1010 */ void APIENTRY (*WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 1011 */ void APIENTRY (*WindowPos4fvMESA)(const GLfloat *v); /* 1012 */ void APIENTRY (*WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 1013 */ void APIENTRY (*WindowPos4ivMESA)(const GLint *v); /* 1014 */ void APIENTRY (*WindowPos4sMESA)(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); /* 1015 */ void APIENTRY (*WindowPos4svMESA)(const GLshort *v); /* 1016 */ void APIENTRY (*MultiModeDrawArraysIBM)(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); /* 1017 */ void APIENTRY (*MultiModeDrawElementsIBM)(const GLenum *mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount, GLint modestride); /* 1018 */ void APIENTRY (*ColorPointerListIBM)(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride); /* 1019 */ void APIENTRY (*SecondaryColorPointerListIBM)(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride); /* 1020 */ void APIENTRY (*EdgeFlagPointerListIBM)(GLint stride, const GLboolean * *pointer, GLint ptrstride); /* 1021 */ void APIENTRY (*FogCoordPointerListIBM)(GLenum type, GLint stride, const void * *pointer, GLint ptrstride); /* 1022 */ void APIENTRY (*IndexPointerListIBM)(GLenum type, GLint stride, const void * *pointer, GLint ptrstride); /* 1023 */ void APIENTRY (*NormalPointerListIBM)(GLenum type, GLint stride, const void * *pointer, GLint ptrstride); /* 1024 */ void APIENTRY (*TexCoordPointerListIBM)(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride); /* 1025 */ void APIENTRY (*VertexPointerListIBM)(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride); /* 1026 */ void APIENTRY (*TbufferMask3DFX)(GLuint mask); /* 1027 */ void APIENTRY (*SampleMaskEXT)(GLclampf value, GLboolean32 invert); /* 1028 */ void APIENTRY (*SamplePatternEXT)(GLenum pattern); /* 1029 */ void APIENTRY (*TextureColorMaskSGIS)(GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha); /* 1030 */ void APIENTRY (*IglooInterfaceSGIX)(GLenum pname, const void *params); /* 1031 */ void APIENTRY (*DeleteFencesNV)(GLsizei n, const GLuint *fences); /* 1032 */ void APIENTRY (*GenFencesNV)(GLsizei n, GLuint *fences); /* 1033 */ GLboolean APIENTRY (*IsFenceNV)(GLuint fence); /* 1034 */ GLboolean APIENTRY (*TestFenceNV)(GLuint fence); /* 1035 */ void APIENTRY (*GetFenceivNV)(GLuint fence, GLenum pname, GLint *params); /* 1036 */ void APIENTRY (*FinishFenceNV)(GLuint fence); /* 1037 */ void APIENTRY (*SetFenceNV)(GLuint fence, GLenum condition); /* 1038 */ void APIENTRY (*MapControlPointsNV)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean32 packed, const void *points); /* 1039 */ void APIENTRY (*MapParameterivNV)(GLenum target, GLenum pname, const GLint *params); /* 1040 */ void APIENTRY (*MapParameterfvNV)(GLenum target, GLenum pname, const GLfloat *params); /* 1041 */ void APIENTRY (*GetMapControlPointsNV)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean32 packed, void *points); /* 1042 */ void APIENTRY (*GetMapParameterivNV)(GLenum target, GLenum pname, GLint *params); /* 1043 */ void APIENTRY (*GetMapParameterfvNV)(GLenum target, GLenum pname, GLfloat *params); /* 1044 */ void APIENTRY (*GetMapAttribParameterivNV)(GLenum target, GLuint index, GLenum pname, GLint *params); /* 1045 */ void APIENTRY (*GetMapAttribParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat *params); /* 1046 */ void APIENTRY (*EvalMapsNV)(GLenum target, GLenum mode); /* 1047 */ void APIENTRY (*CombinerStageParameterfvNV)(GLenum stage, GLenum pname, const GLfloat *params); /* 1048 */ void APIENTRY (*GetCombinerStageParameterfvNV)(GLenum stage, GLenum pname, GLfloat *params); /* 1049 */ GLboolean APIENTRY (*AreProgramsResidentNV)(GLsizei n, const GLuint *programs, GLboolean *residences); /* 1050 */ void APIENTRY (*BindProgramNV)(GLenum target, GLuint id); /* 1051 */ void APIENTRY (*DeleteProgramsNV)(GLsizei n, const GLuint *programs); /* 1052 */ void APIENTRY (*ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat *params); /* 1053 */ void APIENTRY (*GenProgramsNV)(GLsizei n, GLuint *programs); /* 1054 */ void APIENTRY (*GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble *params); /* 1055 */ void APIENTRY (*GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat *params); /* 1056 */ void APIENTRY (*GetProgramivNV)(GLuint id, GLenum pname, GLint *params); /* 1057 */ void APIENTRY (*GetProgramStringNV)(GLuint id, GLenum pname, GLubyte *program); /* 1058 */ void APIENTRY (*GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint *params); /* 1059 */ void APIENTRY (*GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble *params); /* 1060 */ void APIENTRY (*GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat *params); /* 1061 */ void APIENTRY (*GetVertexAttribivNV)(GLuint index, GLenum pname, GLint *params); /* 1062 */ void APIENTRY (*GetVertexAttribPointervNV)(GLuint index, GLenum pname, void * *pointer); /* 1063 */ GLboolean APIENTRY (*IsProgramNV)(GLuint id); /* 1064 */ void APIENTRY (*LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte *program); /* 1065 */ void APIENTRY (*ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 1066 */ void APIENTRY (*ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble *v); /* 1067 */ void APIENTRY (*ProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 1068 */ void APIENTRY (*ProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat *v); /* 1069 */ void APIENTRY (*ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei count, const GLdouble *v); /* 1070 */ void APIENTRY (*ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei count, const GLfloat *v); /* 1071 */ void APIENTRY (*RequestResidentProgramsNV)(GLsizei n, const GLuint *programs); /* 1072 */ void APIENTRY (*TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 1073 */ void APIENTRY (*VertexAttribPointerNV)(GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer); /* 1074 */ void APIENTRY (*VertexAttrib1dNV)(GLuint index, GLdouble x); /* 1075 */ void APIENTRY (*VertexAttrib1dvNV)(GLuint index, const GLdouble *v); /* 1076 */ void APIENTRY (*VertexAttrib1fNV)(GLuint index, GLfloat x); /* 1077 */ void APIENTRY (*VertexAttrib1fvNV)(GLuint index, const GLfloat *v); /* 1078 */ void APIENTRY (*VertexAttrib1sNV)(GLuint index, GLshort32 x); /* 1079 */ void APIENTRY (*VertexAttrib1svNV)(GLuint index, const GLshort *v); /* 1080 */ void APIENTRY (*VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 1081 */ void APIENTRY (*VertexAttrib2dvNV)(GLuint index, const GLdouble *v); /* 1082 */ void APIENTRY (*VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 1083 */ void APIENTRY (*VertexAttrib2fvNV)(GLuint index, const GLfloat *v); /* 1084 */ void APIENTRY (*VertexAttrib2sNV)(GLuint index, GLshort32 x, GLshort32 y); /* 1085 */ void APIENTRY (*VertexAttrib2svNV)(GLuint index, const GLshort *v); /* 1086 */ void APIENTRY (*VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 1087 */ void APIENTRY (*VertexAttrib3dvNV)(GLuint index, const GLdouble *v); /* 1088 */ void APIENTRY (*VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 1089 */ void APIENTRY (*VertexAttrib3fvNV)(GLuint index, const GLfloat *v); /* 1090 */ void APIENTRY (*VertexAttrib3sNV)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z); /* 1091 */ void APIENTRY (*VertexAttrib3svNV)(GLuint index, const GLshort *v); /* 1092 */ void APIENTRY (*VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 1093 */ void APIENTRY (*VertexAttrib4dvNV)(GLuint index, const GLdouble *v); /* 1094 */ void APIENTRY (*VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 1095 */ void APIENTRY (*VertexAttrib4fvNV)(GLuint index, const GLfloat *v); /* 1096 */ void APIENTRY (*VertexAttrib4sNV)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); /* 1097 */ void APIENTRY (*VertexAttrib4svNV)(GLuint index, const GLshort *v); /* 1098 */ void APIENTRY (*VertexAttrib4ubNV)(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w); /* 1099 */ void APIENTRY (*VertexAttrib4ubvNV)(GLuint index, const GLubyte *v); /* 1100 */ void APIENTRY (*VertexAttribs1dvNV)(GLuint index, GLsizei count, const GLdouble *v); /* 1101 */ void APIENTRY (*VertexAttribs1fvNV)(GLuint index, GLsizei count, const GLfloat *v); /* 1102 */ void APIENTRY (*VertexAttribs1svNV)(GLuint index, GLsizei count, const GLshort *v); /* 1103 */ void APIENTRY (*VertexAttribs2dvNV)(GLuint index, GLsizei count, const GLdouble *v); /* 1104 */ void APIENTRY (*VertexAttribs2fvNV)(GLuint index, GLsizei count, const GLfloat *v); /* 1105 */ void APIENTRY (*VertexAttribs2svNV)(GLuint index, GLsizei count, const GLshort *v); /* 1106 */ void APIENTRY (*VertexAttribs3dvNV)(GLuint index, GLsizei count, const GLdouble *v); /* 1107 */ void APIENTRY (*VertexAttribs3fvNV)(GLuint index, GLsizei count, const GLfloat *v); /* 1108 */ void APIENTRY (*VertexAttribs3svNV)(GLuint index, GLsizei count, const GLshort *v); /* 1109 */ void APIENTRY (*VertexAttribs4dvNV)(GLuint index, GLsizei count, const GLdouble *v); /* 1110 */ void APIENTRY (*VertexAttribs4fvNV)(GLuint index, GLsizei count, const GLfloat *v); /* 1111 */ void APIENTRY (*VertexAttribs4svNV)(GLuint index, GLsizei count, const GLshort *v); /* 1112 */ void APIENTRY (*VertexAttribs4ubvNV)(GLuint index, GLsizei count, const GLubyte *v); /* 1113 */ void APIENTRY (*TexBumpParameterivATI)(GLenum pname, const GLint *param); /* 1114 */ void APIENTRY (*TexBumpParameterfvATI)(GLenum pname, const GLfloat *param); /* 1115 */ void APIENTRY (*GetTexBumpParameterivATI)(GLenum pname, GLint *param); /* 1116 */ void APIENTRY (*GetTexBumpParameterfvATI)(GLenum pname, GLfloat *param); /* 1117 */ GLuint APIENTRY (*GenFragmentShadersATI)(GLuint range); /* 1118 */ void APIENTRY (*BindFragmentShaderATI)(GLuint id); /* 1119 */ void APIENTRY (*DeleteFragmentShaderATI)(GLuint id); /* 1120 */ void APIENTRY (*BeginFragmentShaderATI)(void); /* 1121 */ void APIENTRY (*EndFragmentShaderATI)(void); /* 1122 */ void APIENTRY (*PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); /* 1123 */ void APIENTRY (*SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); /* 1124 */ void APIENTRY (*ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 1125 */ void APIENTRY (*ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 1126 */ void APIENTRY (*ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 1127 */ void APIENTRY (*AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 1128 */ void APIENTRY (*AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 1129 */ void APIENTRY (*AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 1130 */ void APIENTRY (*SetFragmentShaderConstantATI)(GLuint dst, const GLfloat *value); /* 1131 */ void APIENTRY (*PNTrianglesiATI)(GLenum pname, GLint param); /* 1132 */ void APIENTRY (*PNTrianglesfATI)(GLenum pname, GLfloat param); /* 1133 */ GLuint APIENTRY (*NewObjectBufferATI)(GLsizei size, const void *pointer, GLenum usage); /* 1134 */ GLboolean APIENTRY (*IsObjectBufferATI)(GLuint buffer); /* 1135 */ void APIENTRY (*UpdateObjectBufferATI)(GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve); /* 1136 */ void APIENTRY (*GetObjectBufferfvATI)(GLuint buffer, GLenum pname, GLfloat *params); /* 1137 */ void APIENTRY (*GetObjectBufferivATI)(GLuint buffer, GLenum pname, GLint *params); /* 1138 */ void APIENTRY (*FreeObjectBufferATI)(GLuint buffer); /* 1139 */ void APIENTRY (*ArrayObjectATI)(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); /* 1140 */ void APIENTRY (*GetArrayObjectfvATI)(GLenum array, GLenum pname, GLfloat *params); /* 1141 */ void APIENTRY (*GetArrayObjectivATI)(GLenum array, GLenum pname, GLint *params); /* 1142 */ void APIENTRY (*VariantArrayObjectATI)(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); /* 1143 */ void APIENTRY (*GetVariantArrayObjectfvATI)(GLuint id, GLenum pname, GLfloat *params); /* 1144 */ void APIENTRY (*GetVariantArrayObjectivATI)(GLuint id, GLenum pname, GLint *params); /* 1145 */ void APIENTRY (*BeginVertexShaderEXT)(void); /* 1146 */ void APIENTRY (*EndVertexShaderEXT)(void); /* 1147 */ void APIENTRY (*BindVertexShaderEXT)(GLuint id); /* 1148 */ GLuint APIENTRY (*GenVertexShadersEXT)(GLuint range); /* 1149 */ void APIENTRY (*DeleteVertexShaderEXT)(GLuint id); /* 1150 */ void APIENTRY (*ShaderOp1EXT)(GLenum op, GLuint res, GLuint arg1); /* 1151 */ void APIENTRY (*ShaderOp2EXT)(GLenum op, GLuint res, GLuint arg1, GLuint arg2); /* 1152 */ void APIENTRY (*ShaderOp3EXT)(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); /* 1153 */ void APIENTRY (*SwizzleEXT)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); /* 1154 */ void APIENTRY (*WriteMaskEXT)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); /* 1155 */ void APIENTRY (*InsertComponentEXT)(GLuint res, GLuint src, GLuint num); /* 1156 */ void APIENTRY (*ExtractComponentEXT)(GLuint res, GLuint src, GLuint num); /* 1157 */ GLuint APIENTRY (*GenSymbolsEXT)(GLenum datatype, GLenum storagetype, GLenum range, GLuint components); /* 1158 */ void APIENTRY (*SetInvariantEXT)(GLuint id, GLenum type, const void *addr); /* 1159 */ void APIENTRY (*SetLocalConstantEXT)(GLuint id, GLenum type, const void *addr); /* 1160 */ void APIENTRY (*VariantbvEXT)(GLuint id, const GLbyte *addr); /* 1161 */ void APIENTRY (*VariantsvEXT)(GLuint id, const GLshort *addr); /* 1162 */ void APIENTRY (*VariantivEXT)(GLuint id, const GLint *addr); /* 1163 */ void APIENTRY (*VariantfvEXT)(GLuint id, const GLfloat *addr); /* 1164 */ void APIENTRY (*VariantdvEXT)(GLuint id, const GLdouble *addr); /* 1165 */ void APIENTRY (*VariantubvEXT)(GLuint id, const GLubyte *addr); /* 1166 */ void APIENTRY (*VariantusvEXT)(GLuint id, const GLushort *addr); /* 1167 */ void APIENTRY (*VariantuivEXT)(GLuint id, const GLuint *addr); /* 1168 */ void APIENTRY (*VariantPointerEXT)(GLuint id, GLenum type, GLuint stride, const void *addr); /* 1169 */ void APIENTRY (*EnableVariantClientStateEXT)(GLuint id); /* 1170 */ void APIENTRY (*DisableVariantClientStateEXT)(GLuint id); /* 1171 */ GLuint APIENTRY (*BindLightParameterEXT)(GLenum light, GLenum value); /* 1172 */ GLuint APIENTRY (*BindMaterialParameterEXT)(GLenum face, GLenum value); /* 1173 */ GLuint APIENTRY (*BindTexGenParameterEXT)(GLenum unit, GLenum coord, GLenum value); /* 1174 */ GLuint APIENTRY (*BindTextureUnitParameterEXT)(GLenum unit, GLenum value); /* 1175 */ GLuint APIENTRY (*BindParameterEXT)(GLenum value); /* 1176 */ GLboolean APIENTRY (*IsVariantEnabledEXT)(GLuint id, GLenum cap); /* 1177 */ void APIENTRY (*GetVariantBooleanvEXT)(GLuint id, GLenum value, GLboolean *data); /* 1178 */ void APIENTRY (*GetVariantIntegervEXT)(GLuint id, GLenum value, GLint *data); /* 1179 */ void APIENTRY (*GetVariantFloatvEXT)(GLuint id, GLenum value, GLfloat *data); /* 1180 */ void APIENTRY (*GetVariantPointervEXT)(GLuint id, GLenum value, void * *data); /* 1181 */ void APIENTRY (*GetInvariantBooleanvEXT)(GLuint id, GLenum value, GLboolean *data); /* 1182 */ void APIENTRY (*GetInvariantIntegervEXT)(GLuint id, GLenum value, GLint *data); /* 1183 */ void APIENTRY (*GetInvariantFloatvEXT)(GLuint id, GLenum value, GLfloat *data); /* 1184 */ void APIENTRY (*GetLocalConstantBooleanvEXT)(GLuint id, GLenum value, GLboolean *data); /* 1185 */ void APIENTRY (*GetLocalConstantIntegervEXT)(GLuint id, GLenum value, GLint *data); /* 1186 */ void APIENTRY (*GetLocalConstantFloatvEXT)(GLuint id, GLenum value, GLfloat *data); /* 1187 */ void APIENTRY (*VertexStream1sATI)(GLenum stream, GLshort32 x); /* 1188 */ void APIENTRY (*VertexStream1svATI)(GLenum stream, const GLshort *coords); /* 1189 */ void APIENTRY (*VertexStream1iATI)(GLenum stream, GLint x); /* 1190 */ void APIENTRY (*VertexStream1ivATI)(GLenum stream, const GLint *coords); /* 1191 */ void APIENTRY (*VertexStream1fATI)(GLenum stream, GLfloat x); /* 1192 */ void APIENTRY (*VertexStream1fvATI)(GLenum stream, const GLfloat *coords); /* 1193 */ void APIENTRY (*VertexStream1dATI)(GLenum stream, GLdouble x); /* 1194 */ void APIENTRY (*VertexStream1dvATI)(GLenum stream, const GLdouble *coords); /* 1195 */ void APIENTRY (*VertexStream2sATI)(GLenum stream, GLshort32 x, GLshort32 y); /* 1196 */ void APIENTRY (*VertexStream2svATI)(GLenum stream, const GLshort *coords); /* 1197 */ void APIENTRY (*VertexStream2iATI)(GLenum stream, GLint x, GLint y); /* 1198 */ void APIENTRY (*VertexStream2ivATI)(GLenum stream, const GLint *coords); /* 1199 */ void APIENTRY (*VertexStream2fATI)(GLenum stream, GLfloat x, GLfloat y); /* 1200 */ void APIENTRY (*VertexStream2fvATI)(GLenum stream, const GLfloat *coords); /* 1201 */ void APIENTRY (*VertexStream2dATI)(GLenum stream, GLdouble x, GLdouble y); /* 1202 */ void APIENTRY (*VertexStream2dvATI)(GLenum stream, const GLdouble *coords); /* 1203 */ void APIENTRY (*VertexStream3sATI)(GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z); /* 1204 */ void APIENTRY (*VertexStream3svATI)(GLenum stream, const GLshort *coords); /* 1205 */ void APIENTRY (*VertexStream3iATI)(GLenum stream, GLint x, GLint y, GLint z); /* 1206 */ void APIENTRY (*VertexStream3ivATI)(GLenum stream, const GLint *coords); /* 1207 */ void APIENTRY (*VertexStream3fATI)(GLenum stream, GLfloat x, GLfloat y, GLfloat z); /* 1208 */ void APIENTRY (*VertexStream3fvATI)(GLenum stream, const GLfloat *coords); /* 1209 */ void APIENTRY (*VertexStream3dATI)(GLenum stream, GLdouble x, GLdouble y, GLdouble z); /* 1210 */ void APIENTRY (*VertexStream3dvATI)(GLenum stream, const GLdouble *coords); /* 1211 */ void APIENTRY (*VertexStream4sATI)(GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); /* 1212 */ void APIENTRY (*VertexStream4svATI)(GLenum stream, const GLshort *coords); /* 1213 */ void APIENTRY (*VertexStream4iATI)(GLenum stream, GLint x, GLint y, GLint z, GLint w); /* 1214 */ void APIENTRY (*VertexStream4ivATI)(GLenum stream, const GLint *coords); /* 1215 */ void APIENTRY (*VertexStream4fATI)(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 1216 */ void APIENTRY (*VertexStream4fvATI)(GLenum stream, const GLfloat *coords); /* 1217 */ void APIENTRY (*VertexStream4dATI)(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 1218 */ void APIENTRY (*VertexStream4dvATI)(GLenum stream, const GLdouble *coords); /* 1219 */ void APIENTRY (*NormalStream3bATI)(GLenum stream, GLbyte32 nx, GLbyte32 ny, GLbyte32 nz); /* 1220 */ void APIENTRY (*NormalStream3bvATI)(GLenum stream, const GLbyte *coords); /* 1221 */ void APIENTRY (*NormalStream3sATI)(GLenum stream, GLshort32 nx, GLshort32 ny, GLshort32 nz); /* 1222 */ void APIENTRY (*NormalStream3svATI)(GLenum stream, const GLshort *coords); /* 1223 */ void APIENTRY (*NormalStream3iATI)(GLenum stream, GLint nx, GLint ny, GLint nz); /* 1224 */ void APIENTRY (*NormalStream3ivATI)(GLenum stream, const GLint *coords); /* 1225 */ void APIENTRY (*NormalStream3fATI)(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); /* 1226 */ void APIENTRY (*NormalStream3fvATI)(GLenum stream, const GLfloat *coords); /* 1227 */ void APIENTRY (*NormalStream3dATI)(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); /* 1228 */ void APIENTRY (*NormalStream3dvATI)(GLenum stream, const GLdouble *coords); /* 1229 */ void APIENTRY (*ClientActiveVertexStreamATI)(GLenum stream); /* 1230 */ void APIENTRY (*VertexBlendEnviATI)(GLenum pname, GLint param); /* 1231 */ void APIENTRY (*VertexBlendEnvfATI)(GLenum pname, GLfloat param); /* 1232 */ void APIENTRY (*ElementPointerATI)(GLenum type, const void *pointer); /* 1233 */ void APIENTRY (*DrawElementArrayATI)(GLenum mode, GLsizei count); /* 1234 */ void APIENTRY (*DrawRangeElementArrayATI)(GLenum mode, GLuint start, GLuint end, GLsizei count); /* 1235 */ void APIENTRY (*DrawMeshArraysSUN)(GLenum mode, GLint first, GLsizei count, GLsizei width); /* 1236 */ void APIENTRY (*GenOcclusionQueriesNV)(GLsizei n, GLuint *ids); /* 1237 */ void APIENTRY (*DeleteOcclusionQueriesNV)(GLsizei n, const GLuint *ids); /* 1238 */ GLboolean APIENTRY (*IsOcclusionQueryNV)(GLuint id); /* 1239 */ void APIENTRY (*BeginOcclusionQueryNV)(GLuint id); /* 1240 */ void APIENTRY (*EndOcclusionQueryNV)(void); /* 1241 */ void APIENTRY (*GetOcclusionQueryivNV)(GLuint id, GLenum pname, GLint *params); /* 1242 */ void APIENTRY (*GetOcclusionQueryuivNV)(GLuint id, GLenum pname, GLuint *params); /* 1243 */ void APIENTRY (*PointParameteriNV)(GLenum pname, GLint param); /* 1244 */ void APIENTRY (*PointParameterivNV)(GLenum pname, const GLint *params); /* 1245 */ void APIENTRY (*ActiveStencilFaceEXT)(GLenum face); /* 1246 */ void APIENTRY (*ElementPointerAPPLE)(GLenum type, const void *pointer); /* 1247 */ void APIENTRY (*DrawElementArrayAPPLE)(GLenum mode, GLint first, GLsizei count); /* 1248 */ void APIENTRY (*DrawRangeElementArrayAPPLE)(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); /* 1249 */ void APIENTRY (*MultiDrawElementArrayAPPLE)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); /* 1250 */ void APIENTRY (*MultiDrawRangeElementArrayAPPLE)(GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); /* 1251 */ void APIENTRY (*GenFencesAPPLE)(GLsizei n, GLuint *fences); /* 1252 */ void APIENTRY (*DeleteFencesAPPLE)(GLsizei n, const GLuint *fences); /* 1253 */ void APIENTRY (*SetFenceAPPLE)(GLuint fence); /* 1254 */ GLboolean APIENTRY (*IsFenceAPPLE)(GLuint fence); /* 1255 */ GLboolean APIENTRY (*TestFenceAPPLE)(GLuint fence); /* 1256 */ void APIENTRY (*FinishFenceAPPLE)(GLuint fence); /* 1257 */ GLboolean APIENTRY (*TestObjectAPPLE)(GLenum object, GLuint name); /* 1258 */ void APIENTRY (*FinishObjectAPPLE)(GLenum object, GLuint name); /* 1259 */ void APIENTRY (*BindVertexArrayAPPLE)(GLuint array); /* 1260 */ void APIENTRY (*DeleteVertexArraysAPPLE)(GLsizei n, const GLuint *arrays); /* 1261 */ void APIENTRY (*GenVertexArraysAPPLE)(GLsizei n, GLuint *arrays); /* 1262 */ GLboolean APIENTRY (*IsVertexArrayAPPLE)(GLuint array); /* 1263 */ void APIENTRY (*VertexArrayRangeAPPLE)(GLsizei length, void *pointer); /* 1264 */ void APIENTRY (*FlushVertexArrayRangeAPPLE)(GLsizei length, void *pointer); /* 1265 */ void APIENTRY (*VertexArrayParameteriAPPLE)(GLenum pname, GLint param); /* 1266 */ void APIENTRY (*DrawBuffersATI)(GLsizei n, const GLenum *bufs); /* 1267 */ void APIENTRY (*ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 1268 */ void APIENTRY (*ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 1269 */ void APIENTRY (*ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); /* 1270 */ void APIENTRY (*ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); /* 1271 */ void APIENTRY (*GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); /* 1272 */ void APIENTRY (*GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); /* 1273 */ void APIENTRY (*Vertex2hNV)(GLhalfNV32 x, GLhalfNV32 y); /* 1274 */ void APIENTRY (*Vertex2hvNV)(const GLhalfNV *v); /* 1275 */ void APIENTRY (*Vertex3hNV)(GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z); /* 1276 */ void APIENTRY (*Vertex3hvNV)(const GLhalfNV *v); /* 1277 */ void APIENTRY (*Vertex4hNV)(GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w); /* 1278 */ void APIENTRY (*Vertex4hvNV)(const GLhalfNV *v); /* 1279 */ void APIENTRY (*Normal3hNV)(GLhalfNV32 nx, GLhalfNV32 ny, GLhalfNV32 nz); /* 1280 */ void APIENTRY (*Normal3hvNV)(const GLhalfNV *v); /* 1281 */ void APIENTRY (*Color3hNV)(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue); /* 1282 */ void APIENTRY (*Color3hvNV)(const GLhalfNV *v); /* 1283 */ void APIENTRY (*Color4hNV)(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue, GLhalfNV32 alpha); /* 1284 */ void APIENTRY (*Color4hvNV)(const GLhalfNV *v); /* 1285 */ void APIENTRY (*TexCoord1hNV)(GLhalfNV32 s); /* 1286 */ void APIENTRY (*TexCoord1hvNV)(const GLhalfNV *v); /* 1287 */ void APIENTRY (*TexCoord2hNV)(GLhalfNV32 s, GLhalfNV32 t); /* 1288 */ void APIENTRY (*TexCoord2hvNV)(const GLhalfNV *v); /* 1289 */ void APIENTRY (*TexCoord3hNV)(GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r); /* 1290 */ void APIENTRY (*TexCoord3hvNV)(const GLhalfNV *v); /* 1291 */ void APIENTRY (*TexCoord4hNV)(GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q); /* 1292 */ void APIENTRY (*TexCoord4hvNV)(const GLhalfNV *v); /* 1293 */ void APIENTRY (*MultiTexCoord1hNV)(GLenum target, GLhalfNV32 s); /* 1294 */ void APIENTRY (*MultiTexCoord1hvNV)(GLenum target, const GLhalfNV *v); /* 1295 */ void APIENTRY (*MultiTexCoord2hNV)(GLenum target, GLhalfNV32 s, GLhalfNV32 t); /* 1296 */ void APIENTRY (*MultiTexCoord2hvNV)(GLenum target, const GLhalfNV *v); /* 1297 */ void APIENTRY (*MultiTexCoord3hNV)(GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r); /* 1298 */ void APIENTRY (*MultiTexCoord3hvNV)(GLenum target, const GLhalfNV *v); /* 1299 */ void APIENTRY (*MultiTexCoord4hNV)(GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q); /* 1300 */ void APIENTRY (*MultiTexCoord4hvNV)(GLenum target, const GLhalfNV *v); /* 1301 */ void APIENTRY (*FogCoordhNV)(GLhalfNV32 fog); /* 1302 */ void APIENTRY (*FogCoordhvNV)(const GLhalfNV *fog); /* 1303 */ void APIENTRY (*SecondaryColor3hNV)(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue); /* 1304 */ void APIENTRY (*SecondaryColor3hvNV)(const GLhalfNV *v); /* 1305 */ void APIENTRY (*VertexWeighthNV)(GLhalfNV32 weight); /* 1306 */ void APIENTRY (*VertexWeighthvNV)(const GLhalfNV *weight); /* 1307 */ void APIENTRY (*VertexAttrib1hNV)(GLuint index, GLhalfNV32 x); /* 1308 */ void APIENTRY (*VertexAttrib1hvNV)(GLuint index, const GLhalfNV *v); /* 1309 */ void APIENTRY (*VertexAttrib2hNV)(GLuint index, GLhalfNV32 x, GLhalfNV32 y); /* 1310 */ void APIENTRY (*VertexAttrib2hvNV)(GLuint index, const GLhalfNV *v); /* 1311 */ void APIENTRY (*VertexAttrib3hNV)(GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z); /* 1312 */ void APIENTRY (*VertexAttrib3hvNV)(GLuint index, const GLhalfNV *v); /* 1313 */ void APIENTRY (*VertexAttrib4hNV)(GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w); /* 1314 */ void APIENTRY (*VertexAttrib4hvNV)(GLuint index, const GLhalfNV *v); /* 1315 */ void APIENTRY (*VertexAttribs1hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); /* 1316 */ void APIENTRY (*VertexAttribs2hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); /* 1317 */ void APIENTRY (*VertexAttribs3hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); /* 1318 */ void APIENTRY (*VertexAttribs4hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); /* 1319 */ void APIENTRY (*PixelDataRangeNV)(GLenum target, GLsizei length, const void *pointer); /* 1320 */ void APIENTRY (*FlushPixelDataRangeNV)(GLenum target); /* 1321 */ void APIENTRY (*PrimitiveRestartNV)(void); /* 1322 */ void APIENTRY (*PrimitiveRestartIndexNV)(GLuint index); /* 1323 */ void * APIENTRY (*MapObjectBufferATI)(GLuint buffer); /* 1324 */ void APIENTRY (*UnmapObjectBufferATI)(GLuint buffer); /* 1325 */ void APIENTRY (*StencilOpSeparateATI)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); /* 1326 */ void APIENTRY (*StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); /* 1327 */ void APIENTRY (*VertexAttribArrayObjectATI)(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLuint buffer, GLuint offset); /* 1328 */ void APIENTRY (*GetVertexAttribArrayObjectfvATI)(GLuint index, GLenum pname, GLfloat *params); /* 1329 */ void APIENTRY (*GetVertexAttribArrayObjectivATI)(GLuint index, GLenum pname, GLint *params); /* 1330 */ void APIENTRY (*DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 1331 */ void APIENTRY (*BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeAlpha); /* 1332 */ void APIENTRY (*OSMesaColorClamp)(GLboolean32 enable); /* 1333 */ void APIENTRY (*OSMesaPostprocess)(OSMesaContext osmesa, const char *filter, GLuint enable_value); /* 1334 */ void *__unused_1334; /* 1335 */ void *__unused_1335; /* 1336 */ void *__unused_1336; /* 1337 */ void *__unused_1337; /* 1338 */ void *__unused_1338; /* 1339 */ void *__unused_1339; /* 1340 */ void *__unused_1340; /* 1341 */ void *__unused_1341; /* 1342 */ void *__unused_1342; /* 1343 */ void *__unused_1343; /* 1344 */ void *__unused_1344; /* 1345 */ void *__unused_1345; /* 1346 */ void *__unused_1346; /* 1347 */ void *__unused_1347; /* 1348 */ void *__unused_1348; /* 1349 */ void *__unused_1349; /* 1350 */ void *__unused_1350; /* 1351 */ void *__unused_1351; /* 1352 */ void *__unused_1352; /* 1353 */ void *__unused_1353; /* 1354 */ void *__unused_1354; /* 1355 */ void *__unused_1355; /* 1356 */ void *__unused_1356; /* 1357 */ void *__unused_1357; /* 1358 */ void *__unused_1358; /* 1359 */ void *__unused_1359; /* 1360 */ void *__unused_1360; /* 1361 */ void *__unused_1361; /* 1362 */ void *__unused_1362; /* 1363 */ void *__unused_1363; /* 1364 */ void *__unused_1364; /* 1365 */ void *__unused_1365; /* 1366 */ void *__unused_1366; /* 1367 */ void *__unused_1367; /* 1368 */ void *__unused_1368; /* 1369 */ void *__unused_1369; /* 1370 */ void *__unused_1370; /* 1371 */ void *__unused_1371; /* 1372 */ void *__unused_1372; /* 1373 */ void *__unused_1373; /* 1374 */ void *__unused_1374; /* 1375 */ void *__unused_1375; /* 1376 */ void *__unused_1376; /* 1377 */ void *__unused_1377; /* 1378 */ void *__unused_1378; /* 1379 */ void *__unused_1379; /* 1380 */ void *__unused_1380; /* 1381 */ void *__unused_1381; /* 1382 */ void *__unused_1382; /* 1383 */ void * APIENTRY (*OSMesaCreateLDG)(GLenum format, GLenum type, GLint width, GLint height); /* 1384 */ void APIENTRY (*OSMesaDestroyLDG)(void); /* 1385 */ GLsizei APIENTRY (*max_width)(void); /* 1386 */ GLsizei APIENTRY (*max_height)(void); /* 1387 */ void APIENTRY (*information)(void); /* 1388 */ void APIENTRY (*exception_error)(void (CALLBACK *exception)(GLenum param) ); /* 1389 */ void APIENTRY (*gluLookAtf)(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ); /* 1390 */ void APIENTRY (*Frustumf)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); /* 1391 */ void APIENTRY (*Orthof)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); /* 1392 */ void APIENTRY (*swapbuffer)(void *buffer); /* 1393 */ void APIENTRY (*gluLookAt)(GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ); /* 1394 */ void *__unused_1394; /* 1395 */ void *__unused_1395; /* 1396 */ void *__unused_1396; /* 1397 */ void *__unused_1397; /* 1398 */ void *__unused_1398; /* 1399 */ void APIENTRY (*AccumxOES)(GLenum op, GLfixed value); /* 1400 */ void APIENTRY (*ActiveProgramEXT)(GLuint program); /* 1401 */ void APIENTRY (*ActiveShaderProgram)(GLuint pipeline, GLuint program); /* 1402 */ void APIENTRY (*ActiveVaryingNV)(GLuint program, const GLchar *name); /* 1403 */ void APIENTRY (*AddSwapHintRectWIN)(GLint x, GLint y, GLsizei width, GLsizei height); /* 1404 */ void APIENTRY (*AlphaFuncxOES)(GLenum func, GLfixed ref); /* 1405 */ void APIENTRY (*AttachShader)(GLuint program, GLuint shader); /* 1406 */ void APIENTRY (*BeginConditionalRender)(GLuint id, GLenum mode); /* 1407 */ void APIENTRY (*BeginConditionalRenderNV)(GLuint id, GLenum mode); /* 1408 */ void APIENTRY (*BeginConditionalRenderNVX)(GLuint id); /* 1409 */ void APIENTRY (*BeginPerfMonitorAMD)(GLuint monitor); /* 1410 */ void APIENTRY (*BeginPerfQueryINTEL)(GLuint queryHandle); /* 1411 */ void APIENTRY (*BeginQueryIndexed)(GLenum target, GLuint index, GLuint id); /* 1412 */ void APIENTRY (*BeginTransformFeedback)(GLenum primitiveMode); /* 1413 */ void APIENTRY (*BeginTransformFeedbackEXT)(GLenum primitiveMode); /* 1414 */ void APIENTRY (*BeginTransformFeedbackNV)(GLenum primitiveMode); /* 1415 */ void APIENTRY (*BeginVideoCaptureNV)(GLuint video_capture_slot); /* 1416 */ void APIENTRY (*BindAttribLocation)(GLuint program, GLuint index, const GLchar *name); /* 1417 */ void APIENTRY (*BindBufferBase)(GLenum target, GLuint index, GLuint buffer); /* 1418 */ void APIENTRY (*BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer); /* 1419 */ void APIENTRY (*BindBufferBaseNV)(GLenum target, GLuint index, GLuint buffer); /* 1420 */ void APIENTRY (*BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 1421 */ void APIENTRY (*BindBufferOffsetNV)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 1422 */ void APIENTRY (*BindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 1423 */ void APIENTRY (*BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 1424 */ void APIENTRY (*BindBufferRangeNV)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 1425 */ void APIENTRY (*BindBuffersBase)(GLenum target, GLuint first, GLsizei count, const GLuint *buffers); /* 1426 */ void APIENTRY (*BindBuffersRange)(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); /* 1427 */ void APIENTRY (*BindFragDataLocation)(GLuint program, GLuint color, const GLchar *name); /* 1428 */ void APIENTRY (*BindFragDataLocationEXT)(GLuint program, GLuint color, const GLchar *name); /* 1429 */ void APIENTRY (*BindFragDataLocationIndexed)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); /* 1430 */ void APIENTRY (*BindFramebuffer)(GLenum target, GLuint framebuffer); /* 1431 */ void APIENTRY (*BindFramebufferEXT)(GLenum target, GLuint framebuffer); /* 1432 */ void APIENTRY (*BindImageTexture)(GLuint unit, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLenum format); /* 1433 */ void APIENTRY (*BindImageTextureEXT)(GLuint index, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLint format); /* 1434 */ void APIENTRY (*BindImageTextures)(GLuint first, GLsizei count, const GLuint *textures); /* 1435 */ void APIENTRY (*BindMultiTextureEXT)(GLenum texunit, GLenum target, GLuint texture); /* 1436 */ void APIENTRY (*BindProgramPipeline)(GLuint pipeline); /* 1437 */ void APIENTRY (*BindRenderbuffer)(GLenum target, GLuint renderbuffer); /* 1438 */ void APIENTRY (*BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); /* 1439 */ void APIENTRY (*BindSampler)(GLuint unit, GLuint sampler); /* 1440 */ void APIENTRY (*BindSamplers)(GLuint first, GLsizei count, const GLuint *samplers); /* 1441 */ void APIENTRY (*BindTextures)(GLuint first, GLsizei count, const GLuint *textures); /* 1442 */ void APIENTRY (*BindTransformFeedback)(GLenum target, GLuint id); /* 1443 */ void APIENTRY (*BindTransformFeedbackNV)(GLenum target, GLuint id); /* 1444 */ void APIENTRY (*BindVertexArray)(GLuint array); /* 1445 */ void APIENTRY (*BindVertexBuffer)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); /* 1446 */ void APIENTRY (*BindVertexBuffers)(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); /* 1447 */ void APIENTRY (*BindVideoCaptureStreamBufferNV)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); /* 1448 */ void APIENTRY (*BindVideoCaptureStreamTextureNV)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); /* 1449 */ void APIENTRY (*BitmapxOES)(GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); /* 1450 */ void APIENTRY (*BlendBarrierNV)(void); /* 1451 */ void APIENTRY (*BlendColorxOES)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); /* 1452 */ void APIENTRY (*BlendEquationIndexedAMD)(GLuint buf, GLenum mode); /* 1453 */ void APIENTRY (*BlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha); /* 1454 */ void APIENTRY (*BlendEquationSeparateIndexedAMD)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); /* 1455 */ void APIENTRY (*BlendEquationSeparatei)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); /* 1456 */ void APIENTRY (*BlendEquationSeparateiARB)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); /* 1457 */ void APIENTRY (*BlendEquationi)(GLuint buf, GLenum mode); /* 1458 */ void APIENTRY (*BlendEquationiARB)(GLuint buf, GLenum mode); /* 1459 */ void APIENTRY (*BlendFuncIndexedAMD)(GLuint buf, GLenum src, GLenum dst); /* 1460 */ void APIENTRY (*BlendFuncSeparateIndexedAMD)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); /* 1461 */ void APIENTRY (*BlendFuncSeparatei)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); /* 1462 */ void APIENTRY (*BlendFuncSeparateiARB)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); /* 1463 */ void APIENTRY (*BlendFunci)(GLuint buf, GLenum src, GLenum dst); /* 1464 */ void APIENTRY (*BlendFunciARB)(GLuint buf, GLenum src, GLenum dst); /* 1465 */ void APIENTRY (*BlendParameteriNV)(GLenum pname, GLint value); /* 1466 */ void APIENTRY (*BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 1467 */ void APIENTRY (*BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 1468 */ void APIENTRY (*BufferAddressRangeNV)(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); /* 1469 */ void APIENTRY (*BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); /* 1470 */ void APIENTRY (*BufferStorage)(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); /* 1471 */ GLenum APIENTRY (*CheckFramebufferStatus)(GLenum target); /* 1472 */ GLenum APIENTRY (*CheckFramebufferStatusEXT)(GLenum target); /* 1473 */ GLenum APIENTRY (*CheckNamedFramebufferStatusEXT)(GLuint framebuffer, GLenum target); /* 1474 */ void APIENTRY (*ClampColor)(GLenum target, GLenum clamp); /* 1475 */ void APIENTRY (*ClampColorARB)(GLenum target, GLenum clamp); /* 1476 */ void APIENTRY (*ClearAccumxOES)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); /* 1477 */ void APIENTRY (*ClearBufferData)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); /* 1478 */ void APIENTRY (*ClearBufferSubData)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); /* 1479 */ void APIENTRY (*ClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); /* 1480 */ void APIENTRY (*ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat *value); /* 1481 */ void APIENTRY (*ClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint *value); /* 1482 */ void APIENTRY (*ClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint *value); /* 1483 */ void APIENTRY (*ClearColorIiEXT)(GLint red, GLint green, GLint blue, GLint alpha); /* 1484 */ void APIENTRY (*ClearColorIuiEXT)(GLuint red, GLuint green, GLuint blue, GLuint alpha); /* 1485 */ void APIENTRY (*ClearColorxOES)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); /* 1486 */ void APIENTRY (*ClearDebugLogMESA)(GLhandleARB obj, GLenum logType, GLenum shaderType); /* 1487 */ void APIENTRY (*ClearDepthdNV)(GLdouble depth); /* 1488 */ void APIENTRY (*ClearDepthf)(GLfloat d); /* 1489 */ void APIENTRY (*ClearDepthfOES)(GLclampf depth); /* 1490 */ void APIENTRY (*ClearDepthxOES)(GLfixed depth); /* 1491 */ void APIENTRY (*ClearNamedBufferDataEXT)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); /* 1492 */ void APIENTRY (*ClearNamedBufferSubDataEXT)(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); /* 1493 */ void APIENTRY (*ClearTexImage)(GLuint texture, GLint level, GLenum format, GLenum type, const void *data); /* 1494 */ void APIENTRY (*ClearTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); /* 1495 */ void APIENTRY (*ClientAttribDefaultEXT)(GLbitfield mask); /* 1496 */ GLenum APIENTRY (*ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 1497 */ void APIENTRY (*ClipPlanefOES)(GLenum plane, const GLfloat *equation); /* 1498 */ void APIENTRY (*ClipPlanexOES)(GLenum plane, const GLfixed *equation); /* 1499 */ void APIENTRY (*Color3xOES)(GLfixed red, GLfixed green, GLfixed blue); /* 1500 */ void APIENTRY (*Color3xvOES)(const GLfixed *components); /* 1501 */ void APIENTRY (*Color4xOES)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); /* 1502 */ void APIENTRY (*Color4xvOES)(const GLfixed *components); /* 1503 */ void APIENTRY (*ColorFormatNV)(GLint size, GLenum type, GLsizei stride); /* 1504 */ void APIENTRY (*ColorMaskIndexedEXT)(GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a); /* 1505 */ void APIENTRY (*ColorMaski)(GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a); /* 1506 */ void APIENTRY (*ColorP3ui)(GLenum type, GLuint color); /* 1507 */ void APIENTRY (*ColorP3uiv)(GLenum type, const GLuint *color); /* 1508 */ void APIENTRY (*ColorP4ui)(GLenum type, GLuint color); /* 1509 */ void APIENTRY (*ColorP4uiv)(GLenum type, const GLuint *color); /* 1510 */ void APIENTRY (*CompileShader)(GLuint shader); /* 1511 */ void APIENTRY (*CompileShaderIncludeARB)(GLuint shader, GLsizei count, const GLchar *const *path, const GLint *length); /* 1512 */ void APIENTRY (*CompressedMultiTexImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); /* 1513 */ void APIENTRY (*CompressedMultiTexImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); /* 1514 */ void APIENTRY (*CompressedMultiTexImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); /* 1515 */ void APIENTRY (*CompressedMultiTexSubImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); /* 1516 */ void APIENTRY (*CompressedMultiTexSubImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); /* 1517 */ void APIENTRY (*CompressedMultiTexSubImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); /* 1518 */ void APIENTRY (*CompressedTextureImage1DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); /* 1519 */ void APIENTRY (*CompressedTextureImage2DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); /* 1520 */ void APIENTRY (*CompressedTextureImage3DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); /* 1521 */ void APIENTRY (*CompressedTextureSubImage1DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); /* 1522 */ void APIENTRY (*CompressedTextureSubImage2DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); /* 1523 */ void APIENTRY (*CompressedTextureSubImage3DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); /* 1524 */ void APIENTRY (*ConvolutionParameterxOES)(GLenum target, GLenum pname, GLfixed param); /* 1525 */ void APIENTRY (*ConvolutionParameterxvOES)(GLenum target, GLenum pname, const GLfixed *params); /* 1526 */ void APIENTRY (*CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 1527 */ void APIENTRY (*CopyImageSubData)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); /* 1528 */ void APIENTRY (*CopyImageSubDataNV)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); /* 1529 */ void APIENTRY (*CopyMultiTexImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); /* 1530 */ void APIENTRY (*CopyMultiTexImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); /* 1531 */ void APIENTRY (*CopyMultiTexSubImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); /* 1532 */ void APIENTRY (*CopyMultiTexSubImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 1533 */ void APIENTRY (*CopyMultiTexSubImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 1534 */ void APIENTRY (*CopyPathNV)(GLuint resultPath, GLuint srcPath); /* 1535 */ void APIENTRY (*CopyTextureImage1DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); /* 1536 */ void APIENTRY (*CopyTextureImage2DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); /* 1537 */ void APIENTRY (*CopyTextureSubImage1DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); /* 1538 */ void APIENTRY (*CopyTextureSubImage2DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 1539 */ void APIENTRY (*CopyTextureSubImage3DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 1540 */ void APIENTRY (*CoverFillPathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); /* 1541 */ void APIENTRY (*CoverFillPathNV)(GLuint path, GLenum coverMode); /* 1542 */ void APIENTRY (*CoverStrokePathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); /* 1543 */ void APIENTRY (*CoverStrokePathNV)(GLuint path, GLenum coverMode); /* 1544 */ GLhandleARB APIENTRY (*CreateDebugObjectMESA)(void); /* 1545 */ void APIENTRY (*CreatePerfQueryINTEL)(GLuint queryId, GLuint *queryHandle); /* 1546 */ GLuint APIENTRY (*CreateProgram)(void); /* 1547 */ GLuint APIENTRY (*CreateShader)(GLenum type); /* 1548 */ GLuint APIENTRY (*CreateShaderProgramEXT)(GLenum type, const GLchar *string); /* 1549 */ GLuint APIENTRY (*CreateShaderProgramv)(GLenum type, GLsizei count, const GLchar *const *strings); /* 1550 */ GLsync APIENTRY (*CreateSyncFromCLeventARB)(struct _cl_context *context, struct _cl_event *event, GLbitfield flags); /* 1551 */ void APIENTRY (*DebugMessageCallback)(GLDEBUGPROC callback, const void *userParam); /* 1552 */ void APIENTRY (*DebugMessageCallbackAMD)(GLDEBUGPROCAMD callback, void *userParam); /* 1553 */ void APIENTRY (*DebugMessageCallbackARB)(GLDEBUGPROCARB callback, const void *userParam); /* 1554 */ void APIENTRY (*DebugMessageControl)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled); /* 1555 */ void APIENTRY (*DebugMessageControlARB)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled); /* 1556 */ void APIENTRY (*DebugMessageEnableAMD)(GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled); /* 1557 */ void APIENTRY (*DebugMessageInsert)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); /* 1558 */ void APIENTRY (*DebugMessageInsertAMD)(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); /* 1559 */ void APIENTRY (*DebugMessageInsertARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); /* 1560 */ void APIENTRY (*DeleteFramebuffers)(GLsizei n, const GLuint *framebuffers); /* 1561 */ void APIENTRY (*DeleteFramebuffersEXT)(GLsizei n, const GLuint *framebuffers); /* 1562 */ void APIENTRY (*DeleteNamedStringARB)(GLint namelen, const GLchar *name); /* 1563 */ void APIENTRY (*DeleteNamesAMD)(GLenum identifier, GLuint num, const GLuint *names); /* 1564 */ void APIENTRY (*DeleteObjectBufferATI)(GLuint buffer); /* 1565 */ void APIENTRY (*DeletePathsNV)(GLuint path, GLsizei range); /* 1566 */ void APIENTRY (*DeletePerfMonitorsAMD)(GLsizei n, GLuint *monitors); /* 1567 */ void APIENTRY (*DeletePerfQueryINTEL)(GLuint queryHandle); /* 1568 */ void APIENTRY (*DeleteProgram)(GLuint program); /* 1569 */ void APIENTRY (*DeleteProgramPipelines)(GLsizei n, const GLuint *pipelines); /* 1570 */ void APIENTRY (*DeleteRenderbuffers)(GLsizei n, const GLuint *renderbuffers); /* 1571 */ void APIENTRY (*DeleteRenderbuffersEXT)(GLsizei n, const GLuint *renderbuffers); /* 1572 */ void APIENTRY (*DeleteSamplers)(GLsizei count, const GLuint *samplers); /* 1573 */ void APIENTRY (*DeleteShader)(GLuint shader); /* 1574 */ void APIENTRY (*DeleteSync)(GLsync sync); /* 1575 */ void APIENTRY (*DeleteTransformFeedbacks)(GLsizei n, const GLuint *ids); /* 1576 */ void APIENTRY (*DeleteTransformFeedbacksNV)(GLsizei n, const GLuint *ids); /* 1577 */ void APIENTRY (*DeleteVertexArrays)(GLsizei n, const GLuint *arrays); /* 1578 */ void APIENTRY (*DepthBoundsdNV)(GLdouble zmin, GLdouble zmax); /* 1579 */ void APIENTRY (*DepthRangeArrayv)(GLuint first, GLsizei count, const GLdouble *v); /* 1580 */ void APIENTRY (*DepthRangeIndexed)(GLuint index, GLdouble n, GLdouble f); /* 1581 */ void APIENTRY (*DepthRangedNV)(GLdouble zNear, GLdouble zFar); /* 1582 */ void APIENTRY (*DepthRangef)(GLfloat n, GLfloat f); /* 1583 */ void APIENTRY (*DepthRangefOES)(GLclampf n, GLclampf f); /* 1584 */ void APIENTRY (*DepthRangexOES)(GLfixed n, GLfixed f); /* 1585 */ void APIENTRY (*DetachShader)(GLuint program, GLuint shader); /* 1586 */ void APIENTRY (*DisableClientStateIndexedEXT)(GLenum array, GLuint index); /* 1587 */ void APIENTRY (*DisableClientStateiEXT)(GLenum array, GLuint index); /* 1588 */ void APIENTRY (*DisableIndexedEXT)(GLenum target, GLuint index); /* 1589 */ void APIENTRY (*DisableVertexArrayAttribEXT)(GLuint vaobj, GLuint index); /* 1590 */ void APIENTRY (*DisableVertexArrayEXT)(GLuint vaobj, GLenum array); /* 1591 */ void APIENTRY (*DisableVertexAttribAPPLE)(GLuint index, GLenum pname); /* 1592 */ void APIENTRY (*DisableVertexAttribArray)(GLuint index); /* 1593 */ void APIENTRY (*Disablei)(GLenum target, GLuint index); /* 1594 */ void APIENTRY (*DispatchCompute)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); /* 1595 */ void APIENTRY (*DispatchComputeGroupSizeARB)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z); /* 1596 */ void APIENTRY (*DispatchComputeIndirect)(GLintptr indirect); /* 1597 */ void APIENTRY (*DrawArraysIndirect)(GLenum mode, const void *indirect); /* 1598 */ void APIENTRY (*DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); /* 1599 */ void APIENTRY (*DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); /* 1600 */ void APIENTRY (*DrawArraysInstancedBaseInstance)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); /* 1601 */ void APIENTRY (*DrawArraysInstancedEXT)(GLenum mode, GLint start, GLsizei count, GLsizei primcount); /* 1602 */ void APIENTRY (*DrawBuffers)(GLsizei n, const GLenum *bufs); /* 1603 */ void APIENTRY (*DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); /* 1604 */ void APIENTRY (*DrawElementsIndirect)(GLenum mode, GLenum type, const void *indirect); /* 1605 */ void APIENTRY (*DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); /* 1606 */ void APIENTRY (*DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); /* 1607 */ void APIENTRY (*DrawElementsInstancedBaseInstance)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); /* 1608 */ void APIENTRY (*DrawElementsInstancedBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); /* 1609 */ void APIENTRY (*DrawElementsInstancedBaseVertexBaseInstance)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); /* 1610 */ void APIENTRY (*DrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); /* 1611 */ void APIENTRY (*DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); /* 1612 */ void APIENTRY (*DrawTextureNV)(GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); /* 1613 */ void APIENTRY (*DrawTransformFeedback)(GLenum mode, GLuint id); /* 1614 */ void APIENTRY (*DrawTransformFeedbackInstanced)(GLenum mode, GLuint id, GLsizei instancecount); /* 1615 */ void APIENTRY (*DrawTransformFeedbackNV)(GLenum mode, GLuint id); /* 1616 */ void APIENTRY (*DrawTransformFeedbackStream)(GLenum mode, GLuint id, GLuint stream); /* 1617 */ void APIENTRY (*DrawTransformFeedbackStreamInstanced)(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); /* 1618 */ void APIENTRY (*EdgeFlagFormatNV)(GLsizei stride); /* 1619 */ void APIENTRY (*EnableClientStateIndexedEXT)(GLenum array, GLuint index); /* 1620 */ void APIENTRY (*EnableClientStateiEXT)(GLenum array, GLuint index); /* 1621 */ void APIENTRY (*EnableIndexedEXT)(GLenum target, GLuint index); /* 1622 */ void APIENTRY (*EnableVertexArrayAttribEXT)(GLuint vaobj, GLuint index); /* 1623 */ void APIENTRY (*EnableVertexArrayEXT)(GLuint vaobj, GLenum array); /* 1624 */ void APIENTRY (*EnableVertexAttribAPPLE)(GLuint index, GLenum pname); /* 1625 */ void APIENTRY (*EnableVertexAttribArray)(GLuint index); /* 1626 */ void APIENTRY (*Enablei)(GLenum target, GLuint index); /* 1627 */ void APIENTRY (*EndConditionalRender)(void); /* 1628 */ void APIENTRY (*EndConditionalRenderNV)(void); /* 1629 */ void APIENTRY (*EndConditionalRenderNVX)(void); /* 1630 */ void APIENTRY (*EndPerfMonitorAMD)(GLuint monitor); /* 1631 */ void APIENTRY (*EndPerfQueryINTEL)(GLuint queryHandle); /* 1632 */ void APIENTRY (*EndQueryIndexed)(GLenum target, GLuint index); /* 1633 */ void APIENTRY (*EndTransformFeedback)(void); /* 1634 */ void APIENTRY (*EndTransformFeedbackEXT)(void); /* 1635 */ void APIENTRY (*EndTransformFeedbackNV)(void); /* 1636 */ void APIENTRY (*EndVideoCaptureNV)(GLuint video_capture_slot); /* 1637 */ void APIENTRY (*EvalCoord1xOES)(GLfixed u); /* 1638 */ void APIENTRY (*EvalCoord1xvOES)(const GLfixed *coords); /* 1639 */ void APIENTRY (*EvalCoord2xOES)(GLfixed u, GLfixed v); /* 1640 */ void APIENTRY (*EvalCoord2xvOES)(const GLfixed *coords); /* 1641 */ void APIENTRY (*FeedbackBufferxOES)(GLsizei n, GLenum type, const GLfixed *buffer); /* 1642 */ GLsync APIENTRY (*FenceSync)(GLenum condition, GLbitfield flags); /* 1643 */ void APIENTRY (*FinishRenderAPPLE)(void); /* 1644 */ void APIENTRY (*FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); /* 1645 */ void APIENTRY (*FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); /* 1646 */ void APIENTRY (*FlushMappedNamedBufferRangeEXT)(GLuint buffer, GLintptr offset, GLsizeiptr length); /* 1647 */ void APIENTRY (*FlushRenderAPPLE)(void); /* 1648 */ void APIENTRY (*FlushStaticDataIBM)(GLenum target); /* 1649 */ void APIENTRY (*FogCoordFormatNV)(GLenum type, GLsizei stride); /* 1650 */ void APIENTRY (*FogxOES)(GLenum pname, GLfixed param); /* 1651 */ void APIENTRY (*FogxvOES)(GLenum pname, const GLfixed *param); /* 1652 */ void APIENTRY (*FrameTerminatorGREMEDY)(void); /* 1653 */ void APIENTRY (*FramebufferDrawBufferEXT)(GLuint framebuffer, GLenum mode); /* 1654 */ void APIENTRY (*FramebufferDrawBuffersEXT)(GLuint framebuffer, GLsizei n, const GLenum *bufs); /* 1655 */ void APIENTRY (*FramebufferParameteri)(GLenum target, GLenum pname, GLint param); /* 1656 */ void APIENTRY (*FramebufferReadBufferEXT)(GLuint framebuffer, GLenum mode); /* 1657 */ void APIENTRY (*FramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 1658 */ void APIENTRY (*FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 1659 */ void APIENTRY (*FramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level); /* 1660 */ void APIENTRY (*FramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 1661 */ void APIENTRY (*FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 1662 */ void APIENTRY (*FramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 1663 */ void APIENTRY (*FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 1664 */ void APIENTRY (*FramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); /* 1665 */ void APIENTRY (*FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); /* 1666 */ void APIENTRY (*FramebufferTextureARB)(GLenum target, GLenum attachment, GLuint texture, GLint level); /* 1667 */ void APIENTRY (*FramebufferTextureEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level); /* 1668 */ void APIENTRY (*FramebufferTextureFaceARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); /* 1669 */ void APIENTRY (*FramebufferTextureFaceEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); /* 1670 */ void APIENTRY (*FramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 1671 */ void APIENTRY (*FramebufferTextureLayerARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 1672 */ void APIENTRY (*FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 1673 */ void APIENTRY (*FrustumfOES)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); /* 1674 */ void APIENTRY (*FrustumxOES)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); /* 1675 */ void APIENTRY (*GenFramebuffers)(GLsizei n, GLuint *framebuffers); /* 1676 */ void APIENTRY (*GenFramebuffersEXT)(GLsizei n, GLuint *framebuffers); /* 1677 */ void APIENTRY (*GenNamesAMD)(GLenum identifier, GLuint num, GLuint *names); /* 1678 */ GLuint APIENTRY (*GenPathsNV)(GLsizei range); /* 1679 */ void APIENTRY (*GenPerfMonitorsAMD)(GLsizei n, GLuint *monitors); /* 1680 */ void APIENTRY (*GenProgramPipelines)(GLsizei n, GLuint *pipelines); /* 1681 */ void APIENTRY (*GenRenderbuffers)(GLsizei n, GLuint *renderbuffers); /* 1682 */ void APIENTRY (*GenRenderbuffersEXT)(GLsizei n, GLuint *renderbuffers); /* 1683 */ void APIENTRY (*GenSamplers)(GLsizei count, GLuint *samplers); /* 1684 */ void APIENTRY (*GenTransformFeedbacks)(GLsizei n, GLuint *ids); /* 1685 */ void APIENTRY (*GenTransformFeedbacksNV)(GLsizei n, GLuint *ids); /* 1686 */ void APIENTRY (*GenVertexArrays)(GLsizei n, GLuint *arrays); /* 1687 */ void APIENTRY (*GenerateMipmap)(GLenum target); /* 1688 */ void APIENTRY (*GenerateMipmapEXT)(GLenum target); /* 1689 */ void APIENTRY (*GenerateMultiTexMipmapEXT)(GLenum texunit, GLenum target); /* 1690 */ void APIENTRY (*GenerateTextureMipmapEXT)(GLuint texture, GLenum target); /* 1691 */ void APIENTRY (*GetActiveAtomicCounterBufferiv)(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); /* 1692 */ void APIENTRY (*GetActiveAttrib)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); /* 1693 */ void APIENTRY (*GetActiveSubroutineName)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); /* 1694 */ void APIENTRY (*GetActiveSubroutineUniformName)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); /* 1695 */ void APIENTRY (*GetActiveSubroutineUniformiv)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); /* 1696 */ void APIENTRY (*GetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); /* 1697 */ GLuint APIENTRY (*GetActiveUniformBlockIndex)(GLuint program, const GLchar *uniformBlockName); /* 1698 */ void APIENTRY (*GetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); /* 1699 */ void APIENTRY (*GetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); /* 1700 */ void APIENTRY (*GetActiveUniformName)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); /* 1701 */ void APIENTRY (*GetActiveUniformsiv)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); /* 1702 */ void APIENTRY (*GetActiveVaryingNV)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); /* 1703 */ void APIENTRY (*GetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); /* 1704 */ GLint APIENTRY (*GetAttribLocation)(GLuint program, const GLchar *name); /* 1705 */ void APIENTRY (*GetBooleanIndexedvEXT)(GLenum target, GLuint index, GLboolean *data); /* 1706 */ void APIENTRY (*GetBooleani_v)(GLenum target, GLuint index, GLboolean *data); /* 1707 */ void APIENTRY (*GetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 *params); /* 1708 */ void APIENTRY (*GetBufferParameterui64vNV)(GLenum target, GLenum pname, GLuint64EXT *params); /* 1709 */ void APIENTRY (*GetClipPlanefOES)(GLenum plane, GLfloat *equation); /* 1710 */ void APIENTRY (*GetClipPlanexOES)(GLenum plane, GLfixed *equation); /* 1711 */ void APIENTRY (*GetCompressedMultiTexImageEXT)(GLenum texunit, GLenum target, GLint lod, void *img); /* 1712 */ void APIENTRY (*GetCompressedTextureImageEXT)(GLuint texture, GLenum target, GLint lod, void *img); /* 1713 */ void APIENTRY (*GetConvolutionParameterxvOES)(GLenum target, GLenum pname, GLfixed *params); /* 1714 */ GLsizei APIENTRY (*GetDebugLogLengthMESA)(GLhandleARB obj, GLenum logType, GLenum shaderType); /* 1715 */ void APIENTRY (*GetDebugLogMESA)(GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength, GLsizei *length, GLcharARB *debugLog); /* 1716 */ GLuint APIENTRY (*GetDebugMessageLog)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); /* 1717 */ GLuint APIENTRY (*GetDebugMessageLogAMD)(GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); /* 1718 */ GLuint APIENTRY (*GetDebugMessageLogARB)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); /* 1719 */ void APIENTRY (*GetDoubleIndexedvEXT)(GLenum target, GLuint index, GLdouble *data); /* 1720 */ void APIENTRY (*GetDoublei_v)(GLenum target, GLuint index, GLdouble *data); /* 1721 */ void APIENTRY (*GetDoublei_vEXT)(GLenum pname, GLuint index, GLdouble *params); /* 1722 */ void APIENTRY (*GetFirstPerfQueryIdINTEL)(GLuint *queryId); /* 1723 */ void APIENTRY (*GetFixedvOES)(GLenum pname, GLfixed *params); /* 1724 */ void APIENTRY (*GetFloatIndexedvEXT)(GLenum target, GLuint index, GLfloat *data); /* 1725 */ void APIENTRY (*GetFloati_v)(GLenum target, GLuint index, GLfloat *data); /* 1726 */ void APIENTRY (*GetFloati_vEXT)(GLenum pname, GLuint index, GLfloat *params); /* 1727 */ GLint APIENTRY (*GetFragDataIndex)(GLuint program, const GLchar *name); /* 1728 */ GLint APIENTRY (*GetFragDataLocation)(GLuint program, const GLchar *name); /* 1729 */ GLint APIENTRY (*GetFragDataLocationEXT)(GLuint program, const GLchar *name); /* 1730 */ void APIENTRY (*GetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint *params); /* 1731 */ void APIENTRY (*GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint *params); /* 1732 */ void APIENTRY (*GetFramebufferParameteriv)(GLenum target, GLenum pname, GLint *params); /* 1733 */ void APIENTRY (*GetFramebufferParameterivEXT)(GLuint framebuffer, GLenum pname, GLint *params); /* 1734 */ GLenum APIENTRY (*GetGraphicsResetStatusARB)(void); /* 1735 */ void APIENTRY (*GetHistogramParameterxvOES)(GLenum target, GLenum pname, GLfixed *params); /* 1736 */ GLuint64 APIENTRY (*GetImageHandleARB)(GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format); /* 1737 */ GLuint64 APIENTRY (*GetImageHandleNV)(GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format); /* 1738 */ void APIENTRY (*GetInteger64i_v)(GLenum target, GLuint index, GLint64 *data); /* 1739 */ void APIENTRY (*GetInteger64v)(GLenum pname, GLint64 *data); /* 1740 */ void APIENTRY (*GetIntegerIndexedvEXT)(GLenum target, GLuint index, GLint *data); /* 1741 */ void APIENTRY (*GetIntegeri_v)(GLenum target, GLuint index, GLint *data); /* 1742 */ void APIENTRY (*GetIntegerui64i_vNV)(GLenum value, GLuint index, GLuint64EXT *result); /* 1743 */ void APIENTRY (*GetIntegerui64vNV)(GLenum value, GLuint64EXT *result); /* 1744 */ void APIENTRY (*GetInternalformati64v)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); /* 1745 */ void APIENTRY (*GetInternalformativ)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); /* 1746 */ void APIENTRY (*GetLightxOES)(GLenum light, GLenum pname, GLfixed *params); /* 1747 */ void APIENTRY (*GetMapxvOES)(GLenum target, GLenum query, GLfixed *v); /* 1748 */ void APIENTRY (*GetMaterialxOES)(GLenum face, GLenum pname, GLfixed param); /* 1749 */ void APIENTRY (*GetMultiTexEnvfvEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat *params); /* 1750 */ void APIENTRY (*GetMultiTexEnvivEXT)(GLenum texunit, GLenum target, GLenum pname, GLint *params); /* 1751 */ void APIENTRY (*GetMultiTexGendvEXT)(GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); /* 1752 */ void APIENTRY (*GetMultiTexGenfvEXT)(GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); /* 1753 */ void APIENTRY (*GetMultiTexGenivEXT)(GLenum texunit, GLenum coord, GLenum pname, GLint *params); /* 1754 */ void APIENTRY (*GetMultiTexImageEXT)(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); /* 1755 */ void APIENTRY (*GetMultiTexLevelParameterfvEXT)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); /* 1756 */ void APIENTRY (*GetMultiTexLevelParameterivEXT)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); /* 1757 */ void APIENTRY (*GetMultiTexParameterIivEXT)(GLenum texunit, GLenum target, GLenum pname, GLint *params); /* 1758 */ void APIENTRY (*GetMultiTexParameterIuivEXT)(GLenum texunit, GLenum target, GLenum pname, GLuint *params); /* 1759 */ void APIENTRY (*GetMultiTexParameterfvEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat *params); /* 1760 */ void APIENTRY (*GetMultiTexParameterivEXT)(GLenum texunit, GLenum target, GLenum pname, GLint *params); /* 1761 */ void APIENTRY (*GetMultisamplefv)(GLenum pname, GLuint index, GLfloat *val); /* 1762 */ void APIENTRY (*GetMultisamplefvNV)(GLenum pname, GLuint index, GLfloat *val); /* 1763 */ void APIENTRY (*GetNamedBufferParameterivEXT)(GLuint buffer, GLenum pname, GLint *params); /* 1764 */ void APIENTRY (*GetNamedBufferParameterui64vNV)(GLuint buffer, GLenum pname, GLuint64EXT *params); /* 1765 */ void APIENTRY (*GetNamedBufferPointervEXT)(GLuint buffer, GLenum pname, void * *params); /* 1766 */ void APIENTRY (*GetNamedBufferSubDataEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); /* 1767 */ void APIENTRY (*GetNamedFramebufferAttachmentParameterivEXT)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); /* 1768 */ void APIENTRY (*GetNamedFramebufferParameterivEXT)(GLuint framebuffer, GLenum pname, GLint *params); /* 1769 */ void APIENTRY (*GetNamedProgramLocalParameterIivEXT)(GLuint program, GLenum target, GLuint index, GLint *params); /* 1770 */ void APIENTRY (*GetNamedProgramLocalParameterIuivEXT)(GLuint program, GLenum target, GLuint index, GLuint *params); /* 1771 */ void APIENTRY (*GetNamedProgramLocalParameterdvEXT)(GLuint program, GLenum target, GLuint index, GLdouble *params); /* 1772 */ void APIENTRY (*GetNamedProgramLocalParameterfvEXT)(GLuint program, GLenum target, GLuint index, GLfloat *params); /* 1773 */ void APIENTRY (*GetNamedProgramStringEXT)(GLuint program, GLenum target, GLenum pname, void *string); /* 1774 */ void APIENTRY (*GetNamedProgramivEXT)(GLuint program, GLenum target, GLenum pname, GLint *params); /* 1775 */ void APIENTRY (*GetNamedRenderbufferParameterivEXT)(GLuint renderbuffer, GLenum pname, GLint *params); /* 1776 */ void APIENTRY (*GetNamedStringARB)(GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); /* 1777 */ void APIENTRY (*GetNamedStringivARB)(GLint namelen, const GLchar *name, GLenum pname, GLint *params); /* 1778 */ void APIENTRY (*GetNextPerfQueryIdINTEL)(GLuint queryId, GLuint *nextQueryId); /* 1779 */ void APIENTRY (*GetObjectLabel)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); /* 1780 */ void APIENTRY (*GetObjectLabelEXT)(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); /* 1781 */ void APIENTRY (*GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint *params); /* 1782 */ void APIENTRY (*GetObjectPtrLabel)(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); /* 1783 */ void APIENTRY (*GetPathColorGenfvNV)(GLenum color, GLenum pname, GLfloat *value); /* 1784 */ void APIENTRY (*GetPathColorGenivNV)(GLenum color, GLenum pname, GLint *value); /* 1785 */ void APIENTRY (*GetPathCommandsNV)(GLuint path, GLubyte *commands); /* 1786 */ void APIENTRY (*GetPathCoordsNV)(GLuint path, GLfloat *coords); /* 1787 */ void APIENTRY (*GetPathDashArrayNV)(GLuint path, GLfloat *dashArray); /* 1788 */ GLfloat APIENTRY (*GetPathLengthNV)(GLuint path, GLsizei startSegment, GLsizei numSegments); /* 1789 */ void APIENTRY (*GetPathMetricRangeNV)(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); /* 1790 */ void APIENTRY (*GetPathMetricsNV)(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); /* 1791 */ void APIENTRY (*GetPathParameterfvNV)(GLuint path, GLenum pname, GLfloat *value); /* 1792 */ void APIENTRY (*GetPathParameterivNV)(GLuint path, GLenum pname, GLint *value); /* 1793 */ void APIENTRY (*GetPathSpacingNV)(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); /* 1794 */ void APIENTRY (*GetPathTexGenfvNV)(GLenum texCoordSet, GLenum pname, GLfloat *value); /* 1795 */ void APIENTRY (*GetPathTexGenivNV)(GLenum texCoordSet, GLenum pname, GLint *value); /* 1796 */ void APIENTRY (*GetPerfCounterInfoINTEL)(GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); /* 1797 */ void APIENTRY (*GetPerfMonitorCounterDataAMD)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); /* 1798 */ void APIENTRY (*GetPerfMonitorCounterInfoAMD)(GLuint group, GLuint counter, GLenum pname, void *data); /* 1799 */ void APIENTRY (*GetPerfMonitorCounterStringAMD)(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); /* 1800 */ void APIENTRY (*GetPerfMonitorCountersAMD)(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); /* 1801 */ void APIENTRY (*GetPerfMonitorGroupStringAMD)(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); /* 1802 */ void APIENTRY (*GetPerfMonitorGroupsAMD)(GLint *numGroups, GLsizei groupsSize, GLuint *groups); /* 1803 */ void APIENTRY (*GetPerfQueryDataINTEL)(GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); /* 1804 */ void APIENTRY (*GetPerfQueryIdByNameINTEL)(GLchar *queryName, GLuint *queryId); /* 1805 */ void APIENTRY (*GetPerfQueryInfoINTEL)(GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); /* 1806 */ void APIENTRY (*GetPixelMapxv)(GLenum map, GLint size, GLfixed *values); /* 1807 */ void APIENTRY (*GetPixelTransformParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); /* 1808 */ void APIENTRY (*GetPixelTransformParameterivEXT)(GLenum target, GLenum pname, GLint *params); /* 1809 */ void APIENTRY (*GetPointerIndexedvEXT)(GLenum target, GLuint index, void * *data); /* 1810 */ void APIENTRY (*GetPointeri_vEXT)(GLenum pname, GLuint index, void * *params); /* 1811 */ void APIENTRY (*GetProgramBinary)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); /* 1812 */ void APIENTRY (*GetProgramEnvParameterIivNV)(GLenum target, GLuint index, GLint *params); /* 1813 */ void APIENTRY (*GetProgramEnvParameterIuivNV)(GLenum target, GLuint index, GLuint *params); /* 1814 */ void APIENTRY (*GetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); /* 1815 */ void APIENTRY (*GetProgramInterfaceiv)(GLuint program, GLenum programInterface, GLenum pname, GLint *params); /* 1816 */ void APIENTRY (*GetProgramLocalParameterIivNV)(GLenum target, GLuint index, GLint *params); /* 1817 */ void APIENTRY (*GetProgramLocalParameterIuivNV)(GLenum target, GLuint index, GLuint *params); /* 1818 */ void APIENTRY (*GetProgramPipelineInfoLog)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); /* 1819 */ void APIENTRY (*GetProgramPipelineiv)(GLuint pipeline, GLenum pname, GLint *params); /* 1820 */ void APIENTRY (*GetProgramRegisterfvMESA)(GLenum target, GLsizei len, const GLubyte *name, GLfloat *v); /* 1821 */ GLuint APIENTRY (*GetProgramResourceIndex)(GLuint program, GLenum programInterface, const GLchar *name); /* 1822 */ GLint APIENTRY (*GetProgramResourceLocation)(GLuint program, GLenum programInterface, const GLchar *name); /* 1823 */ GLint APIENTRY (*GetProgramResourceLocationIndex)(GLuint program, GLenum programInterface, const GLchar *name); /* 1824 */ void APIENTRY (*GetProgramResourceName)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); /* 1825 */ void APIENTRY (*GetProgramResourceiv)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); /* 1826 */ void APIENTRY (*GetProgramStageiv)(GLuint program, GLenum shadertype, GLenum pname, GLint *values); /* 1827 */ void APIENTRY (*GetProgramSubroutineParameteruivNV)(GLenum target, GLuint index, GLuint *param); /* 1828 */ void APIENTRY (*GetProgramiv)(GLuint program, GLenum pname, GLint *params); /* 1829 */ void APIENTRY (*GetQueryIndexediv)(GLenum target, GLuint index, GLenum pname, GLint *params); /* 1830 */ void APIENTRY (*GetQueryObjecti64v)(GLuint id, GLenum pname, GLint64 *params); /* 1831 */ void APIENTRY (*GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64 *params); /* 1832 */ void APIENTRY (*GetQueryObjectui64v)(GLuint id, GLenum pname, GLuint64 *params); /* 1833 */ void APIENTRY (*GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64 *params); /* 1834 */ void APIENTRY (*GetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint *params); /* 1835 */ void APIENTRY (*GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint *params); /* 1836 */ void APIENTRY (*GetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint *params); /* 1837 */ void APIENTRY (*GetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint *params); /* 1838 */ void APIENTRY (*GetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat *params); /* 1839 */ void APIENTRY (*GetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint *params); /* 1840 */ void APIENTRY (*GetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); /* 1841 */ void APIENTRY (*GetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); /* 1842 */ void APIENTRY (*GetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); /* 1843 */ void APIENTRY (*GetShaderiv)(GLuint shader, GLenum pname, GLint *params); /* 1844 */ const GLubyte * APIENTRY (*GetStringi)(GLenum name, GLuint index); /* 1845 */ void *__unused_1845; /* 1846 */ GLuint APIENTRY (*GetSubroutineIndex)(GLuint program, GLenum shadertype, const GLchar *name); /* 1847 */ GLint APIENTRY (*GetSubroutineUniformLocation)(GLuint program, GLenum shadertype, const GLchar *name); /* 1848 */ void APIENTRY (*GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); /* 1849 */ void APIENTRY (*GetTexEnvxvOES)(GLenum target, GLenum pname, GLfixed *params); /* 1850 */ void APIENTRY (*GetTexGenxvOES)(GLenum coord, GLenum pname, GLfixed *params); /* 1851 */ void APIENTRY (*GetTexLevelParameterxvOES)(GLenum target, GLint level, GLenum pname, GLfixed *params); /* 1852 */ void APIENTRY (*GetTexParameterIiv)(GLenum target, GLenum pname, GLint *params); /* 1853 */ void APIENTRY (*GetTexParameterIivEXT)(GLenum target, GLenum pname, GLint *params); /* 1854 */ void APIENTRY (*GetTexParameterIuiv)(GLenum target, GLenum pname, GLuint *params); /* 1855 */ void APIENTRY (*GetTexParameterIuivEXT)(GLenum target, GLenum pname, GLuint *params); /* 1856 */ void APIENTRY (*GetTexParameterPointervAPPLE)(GLenum target, GLenum pname, void * *params); /* 1857 */ void APIENTRY (*GetTexParameterxvOES)(GLenum target, GLenum pname, GLfixed *params); /* 1858 */ GLuint64 APIENTRY (*GetTextureHandleARB)(GLuint texture); /* 1859 */ GLuint64 APIENTRY (*GetTextureHandleNV)(GLuint texture); /* 1860 */ void APIENTRY (*GetTextureImageEXT)(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); /* 1861 */ void APIENTRY (*GetTextureLevelParameterfvEXT)(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); /* 1862 */ void APIENTRY (*GetTextureLevelParameterivEXT)(GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); /* 1863 */ void APIENTRY (*GetTextureParameterIivEXT)(GLuint texture, GLenum target, GLenum pname, GLint *params); /* 1864 */ void APIENTRY (*GetTextureParameterIuivEXT)(GLuint texture, GLenum target, GLenum pname, GLuint *params); /* 1865 */ void APIENTRY (*GetTextureParameterfvEXT)(GLuint texture, GLenum target, GLenum pname, GLfloat *params); /* 1866 */ void APIENTRY (*GetTextureParameterivEXT)(GLuint texture, GLenum target, GLenum pname, GLint *params); /* 1867 */ GLuint64 APIENTRY (*GetTextureSamplerHandleARB)(GLuint texture, GLuint sampler); /* 1868 */ GLuint64 APIENTRY (*GetTextureSamplerHandleNV)(GLuint texture, GLuint sampler); /* 1869 */ void APIENTRY (*GetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); /* 1870 */ void APIENTRY (*GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); /* 1871 */ void APIENTRY (*GetTransformFeedbackVaryingNV)(GLuint program, GLuint index, GLint *location); /* 1872 */ GLuint APIENTRY (*GetUniformBlockIndex)(GLuint program, const GLchar *uniformBlockName); /* 1873 */ GLint APIENTRY (*GetUniformBufferSizeEXT)(GLuint program, GLint location); /* 1874 */ void APIENTRY (*GetUniformIndices)(GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices); /* 1875 */ GLint APIENTRY (*GetUniformLocation)(GLuint program, const GLchar *name); /* 1876 */ GLintptr APIENTRY (*GetUniformOffsetEXT)(GLuint program, GLint location); /* 1877 */ void APIENTRY (*GetUniformSubroutineuiv)(GLenum shadertype, GLint location, GLuint *params); /* 1878 */ void APIENTRY (*GetUniformdv)(GLuint program, GLint location, GLdouble *params); /* 1879 */ void APIENTRY (*GetUniformfv)(GLuint program, GLint location, GLfloat *params); /* 1880 */ void APIENTRY (*GetUniformi64vNV)(GLuint program, GLint location, GLint64EXT *params); /* 1881 */ void APIENTRY (*GetUniformiv)(GLuint program, GLint location, GLint *params); /* 1882 */ void APIENTRY (*GetUniformui64vNV)(GLuint program, GLint location, GLuint64EXT *params); /* 1883 */ void APIENTRY (*GetUniformuiv)(GLuint program, GLint location, GLuint *params); /* 1884 */ void APIENTRY (*GetUniformuivEXT)(GLuint program, GLint location, GLuint *params); /* 1885 */ GLint APIENTRY (*GetVaryingLocationNV)(GLuint program, const GLchar *name); /* 1886 */ void APIENTRY (*GetVertexArrayIntegeri_vEXT)(GLuint vaobj, GLuint index, GLenum pname, GLint *param); /* 1887 */ void APIENTRY (*GetVertexArrayIntegervEXT)(GLuint vaobj, GLenum pname, GLint *param); /* 1888 */ void APIENTRY (*GetVertexArrayPointeri_vEXT)(GLuint vaobj, GLuint index, GLenum pname, void * *param); /* 1889 */ void APIENTRY (*GetVertexArrayPointervEXT)(GLuint vaobj, GLenum pname, void * *param); /* 1890 */ void APIENTRY (*GetVertexAttribIiv)(GLuint index, GLenum pname, GLint *params); /* 1891 */ void APIENTRY (*GetVertexAttribIivEXT)(GLuint index, GLenum pname, GLint *params); /* 1892 */ void APIENTRY (*GetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint *params); /* 1893 */ void APIENTRY (*GetVertexAttribIuivEXT)(GLuint index, GLenum pname, GLuint *params); /* 1894 */ void APIENTRY (*GetVertexAttribLdv)(GLuint index, GLenum pname, GLdouble *params); /* 1895 */ void APIENTRY (*GetVertexAttribLdvEXT)(GLuint index, GLenum pname, GLdouble *params); /* 1896 */ void APIENTRY (*GetVertexAttribLi64vNV)(GLuint index, GLenum pname, GLint64EXT *params); /* 1897 */ void APIENTRY (*GetVertexAttribLui64vARB)(GLuint index, GLenum pname, GLuint64EXT *params); /* 1898 */ void APIENTRY (*GetVertexAttribLui64vNV)(GLuint index, GLenum pname, GLuint64EXT *params); /* 1899 */ void APIENTRY (*GetVertexAttribPointerv)(GLuint index, GLenum pname, void * *pointer); /* 1900 */ void APIENTRY (*GetVertexAttribdv)(GLuint index, GLenum pname, GLdouble *params); /* 1901 */ void APIENTRY (*GetVertexAttribfv)(GLuint index, GLenum pname, GLfloat *params); /* 1902 */ void APIENTRY (*GetVertexAttribiv)(GLuint index, GLenum pname, GLint *params); /* 1903 */ void APIENTRY (*GetVideoCaptureStreamdvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); /* 1904 */ void APIENTRY (*GetVideoCaptureStreamfvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); /* 1905 */ void APIENTRY (*GetVideoCaptureStreamivNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); /* 1906 */ void APIENTRY (*GetVideoCaptureivNV)(GLuint video_capture_slot, GLenum pname, GLint *params); /* 1907 */ void APIENTRY (*GetVideoi64vNV)(GLuint video_slot, GLenum pname, GLint64EXT *params); /* 1908 */ void APIENTRY (*GetVideoivNV)(GLuint video_slot, GLenum pname, GLint *params); /* 1909 */ void APIENTRY (*GetVideoui64vNV)(GLuint video_slot, GLenum pname, GLuint64EXT *params); /* 1910 */ void APIENTRY (*GetVideouivNV)(GLuint video_slot, GLenum pname, GLuint *params); /* 1911 */ void APIENTRY (*GetnColorTableARB)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); /* 1912 */ void APIENTRY (*GetnCompressedTexImageARB)(GLenum target, GLint lod, GLsizei bufSize, void *img); /* 1913 */ void APIENTRY (*GetnConvolutionFilterARB)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); /* 1914 */ void APIENTRY (*GetnHistogramARB)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values); /* 1915 */ void APIENTRY (*GetnMapdvARB)(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); /* 1916 */ void APIENTRY (*GetnMapfvARB)(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); /* 1917 */ void APIENTRY (*GetnMapivARB)(GLenum target, GLenum query, GLsizei bufSize, GLint *v); /* 1918 */ void APIENTRY (*GetnMinmaxARB)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values); /* 1919 */ void APIENTRY (*GetnPixelMapfvARB)(GLenum map, GLsizei bufSize, GLfloat *values); /* 1920 */ void APIENTRY (*GetnPixelMapuivARB)(GLenum map, GLsizei bufSize, GLuint *values); /* 1921 */ void APIENTRY (*GetnPixelMapusvARB)(GLenum map, GLsizei bufSize, GLushort *values); /* 1922 */ void APIENTRY (*GetnPolygonStippleARB)(GLsizei bufSize, GLubyte *pattern); /* 1923 */ void APIENTRY (*GetnSeparableFilterARB)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); /* 1924 */ void APIENTRY (*GetnTexImageARB)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img); /* 1925 */ void APIENTRY (*GetnUniformdvARB)(GLuint program, GLint location, GLsizei bufSize, GLdouble *params); /* 1926 */ void APIENTRY (*GetnUniformfvARB)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); /* 1927 */ void APIENTRY (*GetnUniformivARB)(GLuint program, GLint location, GLsizei bufSize, GLint *params); /* 1928 */ void APIENTRY (*GetnUniformuivARB)(GLuint program, GLint location, GLsizei bufSize, GLuint *params); /* 1929 */ GLsync APIENTRY (*ImportSyncEXT)(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); /* 1930 */ void APIENTRY (*IndexFormatNV)(GLenum type, GLsizei stride); /* 1931 */ void APIENTRY (*IndexxOES)(GLfixed component); /* 1932 */ void APIENTRY (*IndexxvOES)(const GLfixed *component); /* 1933 */ void APIENTRY (*InsertEventMarkerEXT)(GLsizei length, const GLchar *marker); /* 1934 */ void APIENTRY (*InterpolatePathsNV)(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); /* 1935 */ void APIENTRY (*InvalidateBufferData)(GLuint buffer); /* 1936 */ void APIENTRY (*InvalidateBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr length); /* 1937 */ void APIENTRY (*InvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments); /* 1938 */ void APIENTRY (*InvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); /* 1939 */ void APIENTRY (*InvalidateTexImage)(GLuint texture, GLint level); /* 1940 */ void APIENTRY (*InvalidateTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); /* 1941 */ GLboolean APIENTRY (*IsBufferResidentNV)(GLenum target); /* 1942 */ GLboolean APIENTRY (*IsEnabledIndexedEXT)(GLenum target, GLuint index); /* 1943 */ GLboolean APIENTRY (*IsEnabledi)(GLenum target, GLuint index); /* 1944 */ GLboolean APIENTRY (*IsFramebuffer)(GLuint framebuffer); /* 1945 */ GLboolean APIENTRY (*IsFramebufferEXT)(GLuint framebuffer); /* 1946 */ GLboolean APIENTRY (*IsImageHandleResidentARB)(GLuint64 handle); /* 1947 */ GLboolean APIENTRY (*IsImageHandleResidentNV)(GLuint64 handle); /* 1948 */ GLboolean APIENTRY (*IsNameAMD)(GLenum identifier, GLuint name); /* 1949 */ GLboolean APIENTRY (*IsNamedBufferResidentNV)(GLuint buffer); /* 1950 */ GLboolean APIENTRY (*IsNamedStringARB)(GLint namelen, const GLchar *name); /* 1951 */ GLboolean APIENTRY (*IsPathNV)(GLuint path); /* 1952 */ GLboolean APIENTRY (*IsPointInFillPathNV)(GLuint path, GLuint mask, GLfloat x, GLfloat y); /* 1953 */ GLboolean APIENTRY (*IsPointInStrokePathNV)(GLuint path, GLfloat x, GLfloat y); /* 1954 */ GLboolean APIENTRY (*IsProgram)(GLuint program); /* 1955 */ GLboolean APIENTRY (*IsProgramPipeline)(GLuint pipeline); /* 1956 */ GLboolean APIENTRY (*IsRenderbuffer)(GLuint renderbuffer); /* 1957 */ GLboolean APIENTRY (*IsRenderbufferEXT)(GLuint renderbuffer); /* 1958 */ GLboolean APIENTRY (*IsSampler)(GLuint sampler); /* 1959 */ GLboolean APIENTRY (*IsShader)(GLuint shader); /* 1960 */ GLboolean APIENTRY (*IsSync)(GLsync sync); /* 1961 */ GLboolean APIENTRY (*IsTextureHandleResidentARB)(GLuint64 handle); /* 1962 */ GLboolean APIENTRY (*IsTextureHandleResidentNV)(GLuint64 handle); /* 1963 */ GLboolean APIENTRY (*IsTransformFeedback)(GLuint id); /* 1964 */ GLboolean APIENTRY (*IsTransformFeedbackNV)(GLuint id); /* 1965 */ GLboolean APIENTRY (*IsVertexArray)(GLuint array); /* 1966 */ GLboolean APIENTRY (*IsVertexAttribEnabledAPPLE)(GLuint index, GLenum pname); /* 1967 */ void APIENTRY (*LabelObjectEXT)(GLenum type, GLuint object, GLsizei length, const GLchar *label); /* 1968 */ void APIENTRY (*LightModelxOES)(GLenum pname, GLfixed param); /* 1969 */ void APIENTRY (*LightModelxvOES)(GLenum pname, const GLfixed *param); /* 1970 */ void APIENTRY (*LightxOES)(GLenum light, GLenum pname, GLfixed param); /* 1971 */ void APIENTRY (*LightxvOES)(GLenum light, GLenum pname, const GLfixed *params); /* 1972 */ void APIENTRY (*LineWidthxOES)(GLfixed width); /* 1973 */ void APIENTRY (*LinkProgram)(GLuint program); /* 1974 */ void APIENTRY (*LoadMatrixxOES)(const GLfixed *m); /* 1975 */ void APIENTRY (*LoadTransposeMatrixxOES)(const GLfixed *m); /* 1976 */ void APIENTRY (*MakeBufferNonResidentNV)(GLenum target); /* 1977 */ void APIENTRY (*MakeBufferResidentNV)(GLenum target, GLenum access); /* 1978 */ void APIENTRY (*MakeImageHandleNonResidentARB)(GLuint64 handle); /* 1979 */ void APIENTRY (*MakeImageHandleNonResidentNV)(GLuint64 handle); /* 1980 */ void APIENTRY (*MakeImageHandleResidentARB)(GLuint64 handle, GLenum access); /* 1981 */ void APIENTRY (*MakeImageHandleResidentNV)(GLuint64 handle, GLenum access); /* 1982 */ void APIENTRY (*MakeNamedBufferNonResidentNV)(GLuint buffer); /* 1983 */ void APIENTRY (*MakeNamedBufferResidentNV)(GLuint buffer, GLenum access); /* 1984 */ void APIENTRY (*MakeTextureHandleNonResidentARB)(GLuint64 handle); /* 1985 */ void APIENTRY (*MakeTextureHandleNonResidentNV)(GLuint64 handle); /* 1986 */ void APIENTRY (*MakeTextureHandleResidentARB)(GLuint64 handle); /* 1987 */ void APIENTRY (*MakeTextureHandleResidentNV)(GLuint64 handle); /* 1988 */ void APIENTRY (*Map1xOES)(GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); /* 1989 */ void APIENTRY (*Map2xOES)(GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); /* 1990 */ void * APIENTRY (*MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); /* 1991 */ void APIENTRY (*MapGrid1xOES)(GLint n, GLfixed u1, GLfixed u2); /* 1992 */ void APIENTRY (*MapGrid2xOES)(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); /* 1993 */ void * APIENTRY (*MapNamedBufferEXT)(GLuint buffer, GLenum access); /* 1994 */ void * APIENTRY (*MapNamedBufferRangeEXT)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); /* 1995 */ void * APIENTRY (*MapTexture2DINTEL)(GLuint texture, GLint level, GLbitfield access, const GLint *stride, const GLenum *layout); /* 1996 */ void APIENTRY (*MapVertexAttrib1dAPPLE)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); /* 1997 */ void APIENTRY (*MapVertexAttrib1fAPPLE)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); /* 1998 */ void APIENTRY (*MapVertexAttrib2dAPPLE)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); /* 1999 */ void APIENTRY (*MapVertexAttrib2fAPPLE)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); /* 2000 */ void APIENTRY (*MaterialxOES)(GLenum face, GLenum pname, GLfixed param); /* 2001 */ void APIENTRY (*MaterialxvOES)(GLenum face, GLenum pname, const GLfixed *param); /* 2002 */ void APIENTRY (*MatrixFrustumEXT)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); /* 2003 */ void APIENTRY (*MatrixLoadIdentityEXT)(GLenum mode); /* 2004 */ void APIENTRY (*MatrixLoadTransposedEXT)(GLenum mode, const GLdouble *m); /* 2005 */ void APIENTRY (*MatrixLoadTransposefEXT)(GLenum mode, const GLfloat *m); /* 2006 */ void APIENTRY (*MatrixLoaddEXT)(GLenum mode, const GLdouble *m); /* 2007 */ void APIENTRY (*MatrixLoadfEXT)(GLenum mode, const GLfloat *m); /* 2008 */ void APIENTRY (*MatrixMultTransposedEXT)(GLenum mode, const GLdouble *m); /* 2009 */ void APIENTRY (*MatrixMultTransposefEXT)(GLenum mode, const GLfloat *m); /* 2010 */ void APIENTRY (*MatrixMultdEXT)(GLenum mode, const GLdouble *m); /* 2011 */ void APIENTRY (*MatrixMultfEXT)(GLenum mode, const GLfloat *m); /* 2012 */ void APIENTRY (*MatrixOrthoEXT)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); /* 2013 */ void APIENTRY (*MatrixPopEXT)(GLenum mode); /* 2014 */ void APIENTRY (*MatrixPushEXT)(GLenum mode); /* 2015 */ void APIENTRY (*MatrixRotatedEXT)(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); /* 2016 */ void APIENTRY (*MatrixRotatefEXT)(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); /* 2017 */ void APIENTRY (*MatrixScaledEXT)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); /* 2018 */ void APIENTRY (*MatrixScalefEXT)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); /* 2019 */ void APIENTRY (*MatrixTranslatedEXT)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); /* 2020 */ void APIENTRY (*MatrixTranslatefEXT)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); /* 2021 */ void APIENTRY (*MemoryBarrier)(GLbitfield barriers); /* 2022 */ void APIENTRY (*MemoryBarrierEXT)(GLbitfield barriers); /* 2023 */ void APIENTRY (*MinSampleShading)(GLfloat value); /* 2024 */ void APIENTRY (*MinSampleShadingARB)(GLfloat value); /* 2025 */ void APIENTRY (*MultMatrixxOES)(const GLfixed *m); /* 2026 */ void APIENTRY (*MultTransposeMatrixxOES)(const GLfixed *m); /* 2027 */ void APIENTRY (*MultiDrawArraysIndirect)(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); /* 2028 */ void APIENTRY (*MultiDrawArraysIndirectAMD)(GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); /* 2029 */ void APIENTRY (*MultiDrawArraysIndirectBindlessNV)(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); /* 2030 */ void APIENTRY (*MultiDrawArraysIndirectCountARB)(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); /* 2031 */ void APIENTRY (*MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex); /* 2032 */ void APIENTRY (*MultiDrawElementsIndirect)(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); /* 2033 */ void APIENTRY (*MultiDrawElementsIndirectAMD)(GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); /* 2034 */ void APIENTRY (*MultiDrawElementsIndirectBindlessNV)(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); /* 2035 */ void APIENTRY (*MultiDrawElementsIndirectCountARB)(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); /* 2036 */ void APIENTRY (*MultiTexBufferEXT)(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); /* 2037 */ void APIENTRY (*MultiTexCoord1bOES)(GLenum texture, GLbyte32 s); /* 2038 */ void APIENTRY (*MultiTexCoord1bvOES)(GLenum texture, const GLbyte *coords); /* 2039 */ void APIENTRY (*MultiTexCoord1xOES)(GLenum texture, GLfixed s); /* 2040 */ void APIENTRY (*MultiTexCoord1xvOES)(GLenum texture, const GLfixed *coords); /* 2041 */ void APIENTRY (*MultiTexCoord2bOES)(GLenum texture, GLbyte32 s, GLbyte32 t); /* 2042 */ void APIENTRY (*MultiTexCoord2bvOES)(GLenum texture, const GLbyte *coords); /* 2043 */ void APIENTRY (*MultiTexCoord2xOES)(GLenum texture, GLfixed s, GLfixed t); /* 2044 */ void APIENTRY (*MultiTexCoord2xvOES)(GLenum texture, const GLfixed *coords); /* 2045 */ void APIENTRY (*MultiTexCoord3bOES)(GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r); /* 2046 */ void APIENTRY (*MultiTexCoord3bvOES)(GLenum texture, const GLbyte *coords); /* 2047 */ void APIENTRY (*MultiTexCoord3xOES)(GLenum texture, GLfixed s, GLfixed t, GLfixed r); /* 2048 */ void APIENTRY (*MultiTexCoord3xvOES)(GLenum texture, const GLfixed *coords); /* 2049 */ void APIENTRY (*MultiTexCoord4bOES)(GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q); /* 2050 */ void APIENTRY (*MultiTexCoord4bvOES)(GLenum texture, const GLbyte *coords); /* 2051 */ void APIENTRY (*MultiTexCoord4xOES)(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); /* 2052 */ void APIENTRY (*MultiTexCoord4xvOES)(GLenum texture, const GLfixed *coords); /* 2053 */ void APIENTRY (*MultiTexCoordP1ui)(GLenum texture, GLenum type, GLuint coords); /* 2054 */ void APIENTRY (*MultiTexCoordP1uiv)(GLenum texture, GLenum type, const GLuint *coords); /* 2055 */ void APIENTRY (*MultiTexCoordP2ui)(GLenum texture, GLenum type, GLuint coords); /* 2056 */ void APIENTRY (*MultiTexCoordP2uiv)(GLenum texture, GLenum type, const GLuint *coords); /* 2057 */ void APIENTRY (*MultiTexCoordP3ui)(GLenum texture, GLenum type, GLuint coords); /* 2058 */ void APIENTRY (*MultiTexCoordP3uiv)(GLenum texture, GLenum type, const GLuint *coords); /* 2059 */ void APIENTRY (*MultiTexCoordP4ui)(GLenum texture, GLenum type, GLuint coords); /* 2060 */ void APIENTRY (*MultiTexCoordP4uiv)(GLenum texture, GLenum type, const GLuint *coords); /* 2061 */ void APIENTRY (*MultiTexCoordPointerEXT)(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer); /* 2062 */ void APIENTRY (*MultiTexEnvfEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat param); /* 2063 */ void APIENTRY (*MultiTexEnvfvEXT)(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); /* 2064 */ void APIENTRY (*MultiTexEnviEXT)(GLenum texunit, GLenum target, GLenum pname, GLint param); /* 2065 */ void APIENTRY (*MultiTexEnvivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); /* 2066 */ void APIENTRY (*MultiTexGendEXT)(GLenum texunit, GLenum coord, GLenum pname, GLdouble param); /* 2067 */ void APIENTRY (*MultiTexGendvEXT)(GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); /* 2068 */ void APIENTRY (*MultiTexGenfEXT)(GLenum texunit, GLenum coord, GLenum pname, GLfloat param); /* 2069 */ void APIENTRY (*MultiTexGenfvEXT)(GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); /* 2070 */ void APIENTRY (*MultiTexGeniEXT)(GLenum texunit, GLenum coord, GLenum pname, GLint param); /* 2071 */ void APIENTRY (*MultiTexGenivEXT)(GLenum texunit, GLenum coord, GLenum pname, const GLint *params); /* 2072 */ void APIENTRY (*MultiTexImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); /* 2073 */ void APIENTRY (*MultiTexImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); /* 2074 */ void APIENTRY (*MultiTexImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); /* 2075 */ void APIENTRY (*MultiTexParameterIivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); /* 2076 */ void APIENTRY (*MultiTexParameterIuivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLuint *params); /* 2077 */ void APIENTRY (*MultiTexParameterfEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat param); /* 2078 */ void APIENTRY (*MultiTexParameterfvEXT)(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); /* 2079 */ void APIENTRY (*MultiTexParameteriEXT)(GLenum texunit, GLenum target, GLenum pname, GLint param); /* 2080 */ void APIENTRY (*MultiTexParameterivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); /* 2081 */ void APIENTRY (*MultiTexRenderbufferEXT)(GLenum texunit, GLenum target, GLuint renderbuffer); /* 2082 */ void APIENTRY (*MultiTexSubImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); /* 2083 */ void APIENTRY (*MultiTexSubImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); /* 2084 */ void APIENTRY (*MultiTexSubImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); /* 2085 */ void APIENTRY (*NamedBufferDataEXT)(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); /* 2086 */ void APIENTRY (*NamedBufferStorageEXT)(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); /* 2087 */ void APIENTRY (*NamedBufferSubDataEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); /* 2088 */ void APIENTRY (*NamedCopyBufferSubDataEXT)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 2089 */ void APIENTRY (*NamedFramebufferParameteriEXT)(GLuint framebuffer, GLenum pname, GLint param); /* 2090 */ void APIENTRY (*NamedFramebufferRenderbufferEXT)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 2091 */ void APIENTRY (*NamedFramebufferTexture1DEXT)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 2092 */ void APIENTRY (*NamedFramebufferTexture2DEXT)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 2093 */ void APIENTRY (*NamedFramebufferTexture3DEXT)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); /* 2094 */ void APIENTRY (*NamedFramebufferTextureEXT)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); /* 2095 */ void APIENTRY (*NamedFramebufferTextureFaceEXT)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); /* 2096 */ void APIENTRY (*NamedFramebufferTextureLayerEXT)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 2097 */ void APIENTRY (*NamedProgramLocalParameter4dEXT)(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 2098 */ void APIENTRY (*NamedProgramLocalParameter4dvEXT)(GLuint program, GLenum target, GLuint index, const GLdouble *params); /* 2099 */ void APIENTRY (*NamedProgramLocalParameter4fEXT)(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 2100 */ void APIENTRY (*NamedProgramLocalParameter4fvEXT)(GLuint program, GLenum target, GLuint index, const GLfloat *params); /* 2101 */ void APIENTRY (*NamedProgramLocalParameterI4iEXT)(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); /* 2102 */ void APIENTRY (*NamedProgramLocalParameterI4ivEXT)(GLuint program, GLenum target, GLuint index, const GLint *params); /* 2103 */ void APIENTRY (*NamedProgramLocalParameterI4uiEXT)(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 2104 */ void APIENTRY (*NamedProgramLocalParameterI4uivEXT)(GLuint program, GLenum target, GLuint index, const GLuint *params); /* 2105 */ void APIENTRY (*NamedProgramLocalParameters4fvEXT)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); /* 2106 */ void APIENTRY (*NamedProgramLocalParametersI4ivEXT)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); /* 2107 */ void APIENTRY (*NamedProgramLocalParametersI4uivEXT)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); /* 2108 */ void APIENTRY (*NamedProgramStringEXT)(GLuint program, GLenum target, GLenum format, GLsizei len, const void *string); /* 2109 */ void APIENTRY (*NamedRenderbufferStorageEXT)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); /* 2110 */ void APIENTRY (*NamedRenderbufferStorageMultisampleCoverageEXT)(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); /* 2111 */ void APIENTRY (*NamedRenderbufferStorageMultisampleEXT)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 2112 */ void APIENTRY (*NamedStringARB)(GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); /* 2113 */ void APIENTRY (*Normal3xOES)(GLfixed nx, GLfixed ny, GLfixed nz); /* 2114 */ void APIENTRY (*Normal3xvOES)(const GLfixed *coords); /* 2115 */ void APIENTRY (*NormalFormatNV)(GLenum type, GLsizei stride); /* 2116 */ void APIENTRY (*NormalP3ui)(GLenum type, GLuint coords); /* 2117 */ void APIENTRY (*NormalP3uiv)(GLenum type, const GLuint *coords); /* 2118 */ void APIENTRY (*ObjectLabel)(GLenum identifier, GLuint name, GLsizei length, const GLchar *label); /* 2119 */ void APIENTRY (*ObjectPtrLabel)(const void *ptr, GLsizei length, const GLchar *label); /* 2120 */ GLenum APIENTRY (*ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 2121 */ GLenum APIENTRY (*ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 2122 */ void APIENTRY (*OrthofOES)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); /* 2123 */ void APIENTRY (*OrthoxOES)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); /* 2124 */ void APIENTRY (*PassThroughxOES)(GLfixed token); /* 2125 */ void APIENTRY (*PatchParameterfv)(GLenum pname, const GLfloat *values); /* 2126 */ void APIENTRY (*PatchParameteri)(GLenum pname, GLint value); /* 2127 */ void APIENTRY (*PathColorGenNV)(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); /* 2128 */ void APIENTRY (*PathCommandsNV)(GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); /* 2129 */ void APIENTRY (*PathCoordsNV)(GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); /* 2130 */ void APIENTRY (*PathCoverDepthFuncNV)(GLenum func); /* 2131 */ void APIENTRY (*PathDashArrayNV)(GLuint path, GLsizei dashCount, const GLfloat *dashArray); /* 2132 */ void APIENTRY (*PathFogGenNV)(GLenum genMode); /* 2133 */ void APIENTRY (*PathGlyphRangeNV)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); /* 2134 */ void APIENTRY (*PathGlyphsNV)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); /* 2135 */ void APIENTRY (*PathParameterfNV)(GLuint path, GLenum pname, GLfloat value); /* 2136 */ void APIENTRY (*PathParameterfvNV)(GLuint path, GLenum pname, const GLfloat *value); /* 2137 */ void APIENTRY (*PathParameteriNV)(GLuint path, GLenum pname, GLint value); /* 2138 */ void APIENTRY (*PathParameterivNV)(GLuint path, GLenum pname, const GLint *value); /* 2139 */ void APIENTRY (*PathStencilDepthOffsetNV)(GLfloat factor, GLfloat units); /* 2140 */ void APIENTRY (*PathStencilFuncNV)(GLenum func, GLint ref, GLuint mask); /* 2141 */ void APIENTRY (*PathStringNV)(GLuint path, GLenum format, GLsizei length, const void *pathString); /* 2142 */ void APIENTRY (*PathSubCommandsNV)(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); /* 2143 */ void APIENTRY (*PathSubCoordsNV)(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); /* 2144 */ void APIENTRY (*PathTexGenNV)(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); /* 2145 */ void APIENTRY (*PauseTransformFeedback)(void); /* 2146 */ void APIENTRY (*PauseTransformFeedbackNV)(void); /* 2147 */ void APIENTRY (*PixelMapx)(GLenum map, GLint size, const GLfixed *values); /* 2148 */ void APIENTRY (*PixelStorex)(GLenum pname, GLfixed param); /* 2149 */ void APIENTRY (*PixelTransferxOES)(GLenum pname, GLfixed param); /* 2150 */ void APIENTRY (*PixelZoomxOES)(GLfixed xfactor, GLfixed yfactor); /* 2151 */ GLboolean APIENTRY (*PointAlongPathNV)(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); /* 2152 */ void APIENTRY (*PointParameterxvOES)(GLenum pname, const GLfixed *params); /* 2153 */ void APIENTRY (*PointSizePointerAPPLE)(GLenum type, GLsizei stride, const GLvoid *pointer); /* 2154 */ void APIENTRY (*PointSizexOES)(GLfixed size); /* 2155 */ void APIENTRY (*PolygonOffsetxOES)(GLfixed factor, GLfixed units); /* 2156 */ void APIENTRY (*PopDebugGroup)(void); /* 2157 */ void APIENTRY (*PopGroupMarkerEXT)(void); /* 2158 */ void APIENTRY (*PresentFrameDualFillNV)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); /* 2159 */ void APIENTRY (*PresentFrameKeyedNV)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); /* 2160 */ void APIENTRY (*PrimitiveRestartIndex)(GLuint index); /* 2161 */ void APIENTRY (*PrioritizeTexturesxOES)(GLsizei n, const GLuint *textures, const GLfixed *priorities); /* 2162 */ void APIENTRY (*ProgramBinary)(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); /* 2163 */ void APIENTRY (*ProgramBufferParametersIivNV)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params); /* 2164 */ void APIENTRY (*ProgramBufferParametersIuivNV)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params); /* 2165 */ void APIENTRY (*ProgramBufferParametersfvNV)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params); /* 2166 */ void APIENTRY (*ProgramCallbackMESA)(GLenum target, GLprogramcallbackMESA callback, GLvoid *data); /* 2167 */ void APIENTRY (*ProgramEnvParameterI4iNV)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); /* 2168 */ void APIENTRY (*ProgramEnvParameterI4ivNV)(GLenum target, GLuint index, const GLint *params); /* 2169 */ void APIENTRY (*ProgramEnvParameterI4uiNV)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 2170 */ void APIENTRY (*ProgramEnvParameterI4uivNV)(GLenum target, GLuint index, const GLuint *params); /* 2171 */ void APIENTRY (*ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat *params); /* 2172 */ void APIENTRY (*ProgramEnvParametersI4ivNV)(GLenum target, GLuint index, GLsizei count, const GLint *params); /* 2173 */ void APIENTRY (*ProgramEnvParametersI4uivNV)(GLenum target, GLuint index, GLsizei count, const GLuint *params); /* 2174 */ void APIENTRY (*ProgramLocalParameterI4iNV)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); /* 2175 */ void APIENTRY (*ProgramLocalParameterI4ivNV)(GLenum target, GLuint index, const GLint *params); /* 2176 */ void APIENTRY (*ProgramLocalParameterI4uiNV)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 2177 */ void APIENTRY (*ProgramLocalParameterI4uivNV)(GLenum target, GLuint index, const GLuint *params); /* 2178 */ void APIENTRY (*ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat *params); /* 2179 */ void APIENTRY (*ProgramLocalParametersI4ivNV)(GLenum target, GLuint index, GLsizei count, const GLint *params); /* 2180 */ void APIENTRY (*ProgramLocalParametersI4uivNV)(GLenum target, GLuint index, GLsizei count, const GLuint *params); /* 2181 */ void APIENTRY (*ProgramParameteri)(GLuint program, GLenum pname, GLint value); /* 2182 */ void APIENTRY (*ProgramParameteriARB)(GLuint program, GLenum pname, GLint value); /* 2183 */ void APIENTRY (*ProgramParameteriEXT)(GLuint program, GLenum pname, GLint value); /* 2184 */ void APIENTRY (*ProgramSubroutineParametersuivNV)(GLenum target, GLsizei count, const GLuint *params); /* 2185 */ void APIENTRY (*ProgramUniform1d)(GLuint program, GLint location, GLdouble v0); /* 2186 */ void APIENTRY (*ProgramUniform1dEXT)(GLuint program, GLint location, GLdouble x); /* 2187 */ void APIENTRY (*ProgramUniform1dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2188 */ void APIENTRY (*ProgramUniform1dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2189 */ void APIENTRY (*ProgramUniform1f)(GLuint program, GLint location, GLfloat v0); /* 2190 */ void APIENTRY (*ProgramUniform1fEXT)(GLuint program, GLint location, GLfloat v0); /* 2191 */ void APIENTRY (*ProgramUniform1fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2192 */ void APIENTRY (*ProgramUniform1fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2193 */ void APIENTRY (*ProgramUniform1i)(GLuint program, GLint location, GLint v0); /* 2194 */ void APIENTRY (*ProgramUniform1i64NV)(GLuint program, GLint location, GLint64EXT x); /* 2195 */ void APIENTRY (*ProgramUniform1i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); /* 2196 */ void APIENTRY (*ProgramUniform1iEXT)(GLuint program, GLint location, GLint v0); /* 2197 */ void APIENTRY (*ProgramUniform1iv)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2198 */ void APIENTRY (*ProgramUniform1ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2199 */ void APIENTRY (*ProgramUniform1ui)(GLuint program, GLint location, GLuint v0); /* 2200 */ void APIENTRY (*ProgramUniform1ui64NV)(GLuint program, GLint location, GLuint64EXT x); /* 2201 */ void APIENTRY (*ProgramUniform1ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); /* 2202 */ void APIENTRY (*ProgramUniform1uiEXT)(GLuint program, GLint location, GLuint v0); /* 2203 */ void APIENTRY (*ProgramUniform1uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2204 */ void APIENTRY (*ProgramUniform1uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2205 */ void APIENTRY (*ProgramUniform2d)(GLuint program, GLint location, GLdouble v0, GLdouble v1); /* 2206 */ void APIENTRY (*ProgramUniform2dEXT)(GLuint program, GLint location, GLdouble x, GLdouble y); /* 2207 */ void APIENTRY (*ProgramUniform2dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2208 */ void APIENTRY (*ProgramUniform2dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2209 */ void APIENTRY (*ProgramUniform2f)(GLuint program, GLint location, GLfloat v0, GLfloat v1); /* 2210 */ void APIENTRY (*ProgramUniform2fEXT)(GLuint program, GLint location, GLfloat v0, GLfloat v1); /* 2211 */ void APIENTRY (*ProgramUniform2fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2212 */ void APIENTRY (*ProgramUniform2fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2213 */ void APIENTRY (*ProgramUniform2i)(GLuint program, GLint location, GLint v0, GLint v1); /* 2214 */ void APIENTRY (*ProgramUniform2i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y); /* 2215 */ void APIENTRY (*ProgramUniform2i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); /* 2216 */ void APIENTRY (*ProgramUniform2iEXT)(GLuint program, GLint location, GLint v0, GLint v1); /* 2217 */ void APIENTRY (*ProgramUniform2iv)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2218 */ void APIENTRY (*ProgramUniform2ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2219 */ void APIENTRY (*ProgramUniform2ui)(GLuint program, GLint location, GLuint v0, GLuint v1); /* 2220 */ void APIENTRY (*ProgramUniform2ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); /* 2221 */ void APIENTRY (*ProgramUniform2ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); /* 2222 */ void APIENTRY (*ProgramUniform2uiEXT)(GLuint program, GLint location, GLuint v0, GLuint v1); /* 2223 */ void APIENTRY (*ProgramUniform2uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2224 */ void APIENTRY (*ProgramUniform2uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2225 */ void APIENTRY (*ProgramUniform3d)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); /* 2226 */ void APIENTRY (*ProgramUniform3dEXT)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); /* 2227 */ void APIENTRY (*ProgramUniform3dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2228 */ void APIENTRY (*ProgramUniform3dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2229 */ void APIENTRY (*ProgramUniform3f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); /* 2230 */ void APIENTRY (*ProgramUniform3fEXT)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); /* 2231 */ void APIENTRY (*ProgramUniform3fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2232 */ void APIENTRY (*ProgramUniform3fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2233 */ void APIENTRY (*ProgramUniform3i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); /* 2234 */ void APIENTRY (*ProgramUniform3i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); /* 2235 */ void APIENTRY (*ProgramUniform3i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); /* 2236 */ void APIENTRY (*ProgramUniform3iEXT)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); /* 2237 */ void APIENTRY (*ProgramUniform3iv)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2238 */ void APIENTRY (*ProgramUniform3ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2239 */ void APIENTRY (*ProgramUniform3ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); /* 2240 */ void APIENTRY (*ProgramUniform3ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); /* 2241 */ void APIENTRY (*ProgramUniform3ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); /* 2242 */ void APIENTRY (*ProgramUniform3uiEXT)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); /* 2243 */ void APIENTRY (*ProgramUniform3uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2244 */ void APIENTRY (*ProgramUniform3uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2245 */ void APIENTRY (*ProgramUniform4d)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); /* 2246 */ void APIENTRY (*ProgramUniform4dEXT)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 2247 */ void APIENTRY (*ProgramUniform4dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2248 */ void APIENTRY (*ProgramUniform4dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2249 */ void APIENTRY (*ProgramUniform4f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); /* 2250 */ void APIENTRY (*ProgramUniform4fEXT)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); /* 2251 */ void APIENTRY (*ProgramUniform4fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2252 */ void APIENTRY (*ProgramUniform4fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2253 */ void APIENTRY (*ProgramUniform4i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); /* 2254 */ void APIENTRY (*ProgramUniform4i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); /* 2255 */ void APIENTRY (*ProgramUniform4i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); /* 2256 */ void APIENTRY (*ProgramUniform4iEXT)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); /* 2257 */ void APIENTRY (*ProgramUniform4iv)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2258 */ void APIENTRY (*ProgramUniform4ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2259 */ void APIENTRY (*ProgramUniform4ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); /* 2260 */ void APIENTRY (*ProgramUniform4ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); /* 2261 */ void APIENTRY (*ProgramUniform4ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); /* 2262 */ void APIENTRY (*ProgramUniform4uiEXT)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); /* 2263 */ void APIENTRY (*ProgramUniform4uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2264 */ void APIENTRY (*ProgramUniform4uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2265 */ void APIENTRY (*ProgramUniformHandleui64ARB)(GLuint program, GLint location, GLuint64 value); /* 2266 */ void APIENTRY (*ProgramUniformHandleui64NV)(GLuint program, GLint location, GLuint64 value); /* 2267 */ void APIENTRY (*ProgramUniformHandleui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 *values); /* 2268 */ void APIENTRY (*ProgramUniformHandleui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64 *values); /* 2269 */ void APIENTRY (*ProgramUniformMatrix2dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2270 */ void APIENTRY (*ProgramUniformMatrix2dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2271 */ void APIENTRY (*ProgramUniformMatrix2fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2272 */ void APIENTRY (*ProgramUniformMatrix2fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2273 */ void APIENTRY (*ProgramUniformMatrix2x3dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2274 */ void APIENTRY (*ProgramUniformMatrix2x3dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2275 */ void APIENTRY (*ProgramUniformMatrix2x3fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2276 */ void APIENTRY (*ProgramUniformMatrix2x3fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2277 */ void APIENTRY (*ProgramUniformMatrix2x4dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2278 */ void APIENTRY (*ProgramUniformMatrix2x4dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2279 */ void APIENTRY (*ProgramUniformMatrix2x4fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2280 */ void APIENTRY (*ProgramUniformMatrix2x4fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2281 */ void APIENTRY (*ProgramUniformMatrix3dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2282 */ void APIENTRY (*ProgramUniformMatrix3dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2283 */ void APIENTRY (*ProgramUniformMatrix3fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2284 */ void APIENTRY (*ProgramUniformMatrix3fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2285 */ void APIENTRY (*ProgramUniformMatrix3x2dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2286 */ void APIENTRY (*ProgramUniformMatrix3x2dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2287 */ void APIENTRY (*ProgramUniformMatrix3x2fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2288 */ void APIENTRY (*ProgramUniformMatrix3x2fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2289 */ void APIENTRY (*ProgramUniformMatrix3x4dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2290 */ void APIENTRY (*ProgramUniformMatrix3x4dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2291 */ void APIENTRY (*ProgramUniformMatrix3x4fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2292 */ void APIENTRY (*ProgramUniformMatrix3x4fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2293 */ void APIENTRY (*ProgramUniformMatrix4dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2294 */ void APIENTRY (*ProgramUniformMatrix4dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2295 */ void APIENTRY (*ProgramUniformMatrix4fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2296 */ void APIENTRY (*ProgramUniformMatrix4fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2297 */ void APIENTRY (*ProgramUniformMatrix4x2dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2298 */ void APIENTRY (*ProgramUniformMatrix4x2dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2299 */ void APIENTRY (*ProgramUniformMatrix4x2fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2300 */ void APIENTRY (*ProgramUniformMatrix4x2fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2301 */ void APIENTRY (*ProgramUniformMatrix4x3dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2302 */ void APIENTRY (*ProgramUniformMatrix4x3dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2303 */ void APIENTRY (*ProgramUniformMatrix4x3fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2304 */ void APIENTRY (*ProgramUniformMatrix4x3fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2305 */ void APIENTRY (*ProgramUniformui64NV)(GLuint program, GLint location, GLuint64EXT value); /* 2306 */ void APIENTRY (*ProgramUniformui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); /* 2307 */ void APIENTRY (*ProgramVertexLimitNV)(GLenum target, GLint limit); /* 2308 */ void APIENTRY (*ProvokingVertex)(GLenum mode); /* 2309 */ void APIENTRY (*ProvokingVertexEXT)(GLenum mode); /* 2310 */ void APIENTRY (*PushClientAttribDefaultEXT)(GLbitfield mask); /* 2311 */ void APIENTRY (*PushDebugGroup)(GLenum source, GLuint id, GLsizei length, const GLchar *message); /* 2312 */ void APIENTRY (*PushGroupMarkerEXT)(GLsizei length, const GLchar *marker); /* 2313 */ void APIENTRY (*QueryCounter)(GLuint id, GLenum target); /* 2314 */ GLbitfield APIENTRY (*QueryMatrixxOES)(GLfixed *mantissa, GLint *exponent); /* 2315 */ void APIENTRY (*QueryObjectParameteruiAMD)(GLenum target, GLuint id, GLenum pname, GLuint param); /* 2316 */ void APIENTRY (*RasterPos2xOES)(GLfixed x, GLfixed y); /* 2317 */ void APIENTRY (*RasterPos2xvOES)(const GLfixed *coords); /* 2318 */ void APIENTRY (*RasterPos3xOES)(GLfixed x, GLfixed y, GLfixed z); /* 2319 */ void APIENTRY (*RasterPos3xvOES)(const GLfixed *coords); /* 2320 */ void APIENTRY (*RasterPos4xOES)(GLfixed x, GLfixed y, GLfixed z, GLfixed w); /* 2321 */ void APIENTRY (*RasterPos4xvOES)(const GLfixed *coords); /* 2322 */ void APIENTRY (*ReadnPixelsARB)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); /* 2323 */ void APIENTRY (*RectxOES)(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); /* 2324 */ void APIENTRY (*RectxvOES)(const GLfixed *v1, const GLfixed *v2); /* 2325 */ void APIENTRY (*ReleaseShaderCompiler)(void); /* 2326 */ void APIENTRY (*RenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); /* 2327 */ void APIENTRY (*RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); /* 2328 */ void APIENTRY (*RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 2329 */ void APIENTRY (*RenderbufferStorageMultisampleCoverageNV)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); /* 2330 */ void APIENTRY (*RenderbufferStorageMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 2331 */ void APIENTRY (*ResumeTransformFeedback)(void); /* 2332 */ void APIENTRY (*ResumeTransformFeedbackNV)(void); /* 2333 */ void APIENTRY (*RotatexOES)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); /* 2334 */ void APIENTRY (*SampleCoverageOES)(GLfixed value, GLboolean32 invert); /* 2335 */ void APIENTRY (*SampleMaskIndexedNV)(GLuint index, GLbitfield mask); /* 2336 */ void APIENTRY (*SampleMaski)(GLuint maskNumber, GLbitfield mask); /* 2337 */ void APIENTRY (*SamplePass)(GLenum mode); /* 2338 */ void APIENTRY (*SamplePassARB)(GLenum mode); /* 2339 */ void APIENTRY (*SamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint *param); /* 2340 */ void APIENTRY (*SamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint *param); /* 2341 */ void APIENTRY (*SamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param); /* 2342 */ void APIENTRY (*SamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat *param); /* 2343 */ void APIENTRY (*SamplerParameteri)(GLuint sampler, GLenum pname, GLint param); /* 2344 */ void APIENTRY (*SamplerParameteriv)(GLuint sampler, GLenum pname, const GLint *param); /* 2345 */ void APIENTRY (*ScalexOES)(GLfixed x, GLfixed y, GLfixed z); /* 2346 */ void APIENTRY (*ScissorArrayv)(GLuint first, GLsizei count, const GLint *v); /* 2347 */ void APIENTRY (*ScissorIndexed)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); /* 2348 */ void APIENTRY (*ScissorIndexedv)(GLuint index, const GLint *v); /* 2349 */ void APIENTRY (*SecondaryColorFormatNV)(GLint size, GLenum type, GLsizei stride); /* 2350 */ void APIENTRY (*SecondaryColorP3ui)(GLenum type, GLuint color); /* 2351 */ void APIENTRY (*SecondaryColorP3uiv)(GLenum type, const GLuint *color); /* 2352 */ void APIENTRY (*SelectPerfMonitorCountersAMD)(GLuint monitor, GLboolean32 enable, GLuint group, GLint numCounters, GLuint *counterList); /* 2353 */ void APIENTRY (*SetMultisamplefvAMD)(GLenum pname, GLuint index, const GLfloat *val); /* 2354 */ void APIENTRY (*ShaderBinary)(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); /* 2355 */ void APIENTRY (*ShaderSource)(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length); /* 2356 */ void APIENTRY (*ShaderStorageBlockBinding)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); /* 2357 */ void APIENTRY (*StencilClearTagEXT)(GLsizei stencilTagBits, GLuint stencilClearTag); /* 2358 */ void APIENTRY (*StencilFillPathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); /* 2359 */ void APIENTRY (*StencilFillPathNV)(GLuint path, GLenum fillMode, GLuint mask); /* 2360 */ void APIENTRY (*StencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask); /* 2361 */ void APIENTRY (*StencilMaskSeparate)(GLenum face, GLuint mask); /* 2362 */ void APIENTRY (*StencilOpSeparate)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); /* 2363 */ void APIENTRY (*StencilOpValueAMD)(GLenum face, GLuint value); /* 2364 */ void APIENTRY (*StencilStrokePathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); /* 2365 */ void APIENTRY (*StencilStrokePathNV)(GLuint path, GLint reference, GLuint mask); /* 2366 */ void APIENTRY (*StringMarkerGREMEDY)(GLsizei len, const void *string); /* 2367 */ void APIENTRY (*SwapAPPLE)(void); /* 2368 */ void APIENTRY (*SyncTextureINTEL)(GLuint texture); /* 2369 */ void APIENTRY (*TessellationFactorAMD)(GLfloat factor); /* 2370 */ void APIENTRY (*TessellationModeAMD)(GLenum mode); /* 2371 */ void APIENTRY (*TexBuffer)(GLenum target, GLenum internalformat, GLuint buffer); /* 2372 */ void APIENTRY (*TexBufferARB)(GLenum target, GLenum internalformat, GLuint buffer); /* 2373 */ void APIENTRY (*TexBufferEXT)(GLenum target, GLenum internalformat, GLuint buffer); /* 2374 */ void APIENTRY (*TexBufferRange)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 2375 */ void APIENTRY (*TexCoord1bOES)(GLbyte32 s); /* 2376 */ void APIENTRY (*TexCoord1bvOES)(const GLbyte *coords); /* 2377 */ void APIENTRY (*TexCoord1xOES)(GLfixed s); /* 2378 */ void APIENTRY (*TexCoord1xvOES)(const GLfixed *coords); /* 2379 */ void APIENTRY (*TexCoord2bOES)(GLbyte32 s, GLbyte32 t); /* 2380 */ void APIENTRY (*TexCoord2bvOES)(const GLbyte *coords); /* 2381 */ void APIENTRY (*TexCoord2xOES)(GLfixed s, GLfixed t); /* 2382 */ void APIENTRY (*TexCoord2xvOES)(const GLfixed *coords); /* 2383 */ void APIENTRY (*TexCoord3bOES)(GLbyte32 s, GLbyte32 t, GLbyte32 r); /* 2384 */ void APIENTRY (*TexCoord3bvOES)(const GLbyte *coords); /* 2385 */ void APIENTRY (*TexCoord3xOES)(GLfixed s, GLfixed t, GLfixed r); /* 2386 */ void APIENTRY (*TexCoord3xvOES)(const GLfixed *coords); /* 2387 */ void APIENTRY (*TexCoord4bOES)(GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q); /* 2388 */ void APIENTRY (*TexCoord4bvOES)(const GLbyte *coords); /* 2389 */ void APIENTRY (*TexCoord4xOES)(GLfixed s, GLfixed t, GLfixed r, GLfixed q); /* 2390 */ void APIENTRY (*TexCoord4xvOES)(const GLfixed *coords); /* 2391 */ void APIENTRY (*TexCoordFormatNV)(GLint size, GLenum type, GLsizei stride); /* 2392 */ void APIENTRY (*TexCoordP1ui)(GLenum type, GLuint coords); /* 2393 */ void APIENTRY (*TexCoordP1uiv)(GLenum type, const GLuint *coords); /* 2394 */ void APIENTRY (*TexCoordP2ui)(GLenum type, GLuint coords); /* 2395 */ void APIENTRY (*TexCoordP2uiv)(GLenum type, const GLuint *coords); /* 2396 */ void APIENTRY (*TexCoordP3ui)(GLenum type, GLuint coords); /* 2397 */ void APIENTRY (*TexCoordP3uiv)(GLenum type, const GLuint *coords); /* 2398 */ void APIENTRY (*TexCoordP4ui)(GLenum type, GLuint coords); /* 2399 */ void APIENTRY (*TexCoordP4uiv)(GLenum type, const GLuint *coords); /* 2400 */ void APIENTRY (*TexEnvxOES)(GLenum target, GLenum pname, GLfixed param); /* 2401 */ void APIENTRY (*TexEnvxvOES)(GLenum target, GLenum pname, const GLfixed *params); /* 2402 */ void APIENTRY (*TexGenxOES)(GLenum coord, GLenum pname, GLfixed param); /* 2403 */ void APIENTRY (*TexGenxvOES)(GLenum coord, GLenum pname, const GLfixed *params); /* 2404 */ void APIENTRY (*TexImage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations); /* 2405 */ void APIENTRY (*TexImage2DMultisampleCoverageNV)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations); /* 2406 */ void APIENTRY (*TexImage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations); /* 2407 */ void APIENTRY (*TexImage3DMultisampleCoverageNV)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations); /* 2408 */ void APIENTRY (*TexPageCommitmentARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit); /* 2409 */ void APIENTRY (*TexParameterIiv)(GLenum target, GLenum pname, const GLint *params); /* 2410 */ void APIENTRY (*TexParameterIivEXT)(GLenum target, GLenum pname, const GLint *params); /* 2411 */ void APIENTRY (*TexParameterIuiv)(GLenum target, GLenum pname, const GLuint *params); /* 2412 */ void APIENTRY (*TexParameterIuivEXT)(GLenum target, GLenum pname, const GLuint *params); /* 2413 */ void APIENTRY (*TexParameterxOES)(GLenum target, GLenum pname, GLfixed param); /* 2414 */ void APIENTRY (*TexParameterxvOES)(GLenum target, GLenum pname, const GLfixed *params); /* 2415 */ void APIENTRY (*TexRenderbufferNV)(GLenum target, GLuint renderbuffer); /* 2416 */ void APIENTRY (*TexScissorFuncINTEL)(GLenum target, GLenum lfunc, GLenum hfunc); /* 2417 */ void APIENTRY (*TexScissorINTEL)(GLenum target, GLclampf tlow, GLclampf thigh); /* 2418 */ void APIENTRY (*TexStorage1D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); /* 2419 */ void APIENTRY (*TexStorage2D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); /* 2420 */ void APIENTRY (*TexStorage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations); /* 2421 */ void APIENTRY (*TexStorage3D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); /* 2422 */ void APIENTRY (*TexStorage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations); /* 2423 */ void APIENTRY (*TexStorageSparseAMD)(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); /* 2424 */ void APIENTRY (*TextureBarrierNV)(void); /* 2425 */ void APIENTRY (*TextureBufferEXT)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); /* 2426 */ void APIENTRY (*TextureBufferRangeEXT)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 2427 */ void APIENTRY (*TextureFogSGIX)(GLenum pname); /* 2428 */ void APIENTRY (*TextureImage1DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); /* 2429 */ void APIENTRY (*TextureImage2DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); /* 2430 */ void APIENTRY (*TextureImage2DMultisampleCoverageNV)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations); /* 2431 */ void APIENTRY (*TextureImage2DMultisampleNV)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations); /* 2432 */ void APIENTRY (*TextureImage3DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); /* 2433 */ void APIENTRY (*TextureImage3DMultisampleCoverageNV)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations); /* 2434 */ void APIENTRY (*TextureImage3DMultisampleNV)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations); /* 2435 */ void APIENTRY (*TexturePageCommitmentEXT)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit); /* 2436 */ void APIENTRY (*TextureParameterIivEXT)(GLuint texture, GLenum target, GLenum pname, const GLint *params); /* 2437 */ void APIENTRY (*TextureParameterIuivEXT)(GLuint texture, GLenum target, GLenum pname, const GLuint *params); /* 2438 */ void APIENTRY (*TextureParameterfEXT)(GLuint texture, GLenum target, GLenum pname, GLfloat param); /* 2439 */ void APIENTRY (*TextureParameterfvEXT)(GLuint texture, GLenum target, GLenum pname, const GLfloat *params); /* 2440 */ void APIENTRY (*TextureParameteriEXT)(GLuint texture, GLenum target, GLenum pname, GLint param); /* 2441 */ void APIENTRY (*TextureParameterivEXT)(GLuint texture, GLenum target, GLenum pname, const GLint *params); /* 2442 */ void APIENTRY (*TextureRangeAPPLE)(GLenum target, GLsizei length, const void *pointer); /* 2443 */ void APIENTRY (*TextureRenderbufferEXT)(GLuint texture, GLenum target, GLuint renderbuffer); /* 2444 */ void APIENTRY (*TextureStorage1DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); /* 2445 */ void APIENTRY (*TextureStorage2DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); /* 2446 */ void APIENTRY (*TextureStorage2DMultisampleEXT)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations); /* 2447 */ void APIENTRY (*TextureStorage3DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); /* 2448 */ void APIENTRY (*TextureStorage3DMultisampleEXT)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations); /* 2449 */ void APIENTRY (*TextureStorageSparseAMD)(GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); /* 2450 */ void APIENTRY (*TextureSubImage1DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); /* 2451 */ void APIENTRY (*TextureSubImage2DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); /* 2452 */ void APIENTRY (*TextureSubImage3DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); /* 2453 */ void APIENTRY (*TextureView)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); /* 2454 */ void APIENTRY (*TransformFeedbackAttribsNV)(GLsizei count, const GLint *attribs, GLenum bufferMode); /* 2455 */ void APIENTRY (*TransformFeedbackStreamAttribsNV)(GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); /* 2456 */ void APIENTRY (*TransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode); /* 2457 */ void APIENTRY (*TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode); /* 2458 */ void APIENTRY (*TransformFeedbackVaryingsNV)(GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); /* 2459 */ void APIENTRY (*TransformPathNV)(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); /* 2460 */ void APIENTRY (*TranslatexOES)(GLfixed x, GLfixed y, GLfixed z); /* 2461 */ void APIENTRY (*Uniform1d)(GLint location, GLdouble x); /* 2462 */ void APIENTRY (*Uniform1dv)(GLint location, GLsizei count, const GLdouble *value); /* 2463 */ void APIENTRY (*Uniform1f)(GLint location, GLfloat v0); /* 2464 */ void APIENTRY (*Uniform1fv)(GLint location, GLsizei count, const GLfloat *value); /* 2465 */ void APIENTRY (*Uniform1i)(GLint location, GLint v0); /* 2466 */ void APIENTRY (*Uniform1i64NV)(GLint location, GLint64EXT x); /* 2467 */ void APIENTRY (*Uniform1i64vNV)(GLint location, GLsizei count, const GLint64EXT *value); /* 2468 */ void APIENTRY (*Uniform1iv)(GLint location, GLsizei count, const GLint *value); /* 2469 */ void APIENTRY (*Uniform1ui)(GLint location, GLuint v0); /* 2470 */ void APIENTRY (*Uniform1ui64NV)(GLint location, GLuint64EXT x); /* 2471 */ void APIENTRY (*Uniform1ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); /* 2472 */ void APIENTRY (*Uniform1uiEXT)(GLint location, GLuint v0); /* 2473 */ void APIENTRY (*Uniform1uiv)(GLint location, GLsizei count, const GLuint *value); /* 2474 */ void APIENTRY (*Uniform1uivEXT)(GLint location, GLsizei count, const GLuint *value); /* 2475 */ void APIENTRY (*Uniform2d)(GLint location, GLdouble x, GLdouble y); /* 2476 */ void APIENTRY (*Uniform2dv)(GLint location, GLsizei count, const GLdouble *value); /* 2477 */ void APIENTRY (*Uniform2f)(GLint location, GLfloat v0, GLfloat v1); /* 2478 */ void APIENTRY (*Uniform2fv)(GLint location, GLsizei count, const GLfloat *value); /* 2479 */ void APIENTRY (*Uniform2i)(GLint location, GLint v0, GLint v1); /* 2480 */ void APIENTRY (*Uniform2i64NV)(GLint location, GLint64EXT x, GLint64EXT y); /* 2481 */ void APIENTRY (*Uniform2i64vNV)(GLint location, GLsizei count, const GLint64EXT *value); /* 2482 */ void APIENTRY (*Uniform2iv)(GLint location, GLsizei count, const GLint *value); /* 2483 */ void APIENTRY (*Uniform2ui)(GLint location, GLuint v0, GLuint v1); /* 2484 */ void APIENTRY (*Uniform2ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y); /* 2485 */ void APIENTRY (*Uniform2ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); /* 2486 */ void APIENTRY (*Uniform2uiEXT)(GLint location, GLuint v0, GLuint v1); /* 2487 */ void APIENTRY (*Uniform2uiv)(GLint location, GLsizei count, const GLuint *value); /* 2488 */ void APIENTRY (*Uniform2uivEXT)(GLint location, GLsizei count, const GLuint *value); /* 2489 */ void APIENTRY (*Uniform3d)(GLint location, GLdouble x, GLdouble y, GLdouble z); /* 2490 */ void APIENTRY (*Uniform3dv)(GLint location, GLsizei count, const GLdouble *value); /* 2491 */ void APIENTRY (*Uniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); /* 2492 */ void APIENTRY (*Uniform3fv)(GLint location, GLsizei count, const GLfloat *value); /* 2493 */ void APIENTRY (*Uniform3i)(GLint location, GLint v0, GLint v1, GLint v2); /* 2494 */ void APIENTRY (*Uniform3i64NV)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); /* 2495 */ void APIENTRY (*Uniform3i64vNV)(GLint location, GLsizei count, const GLint64EXT *value); /* 2496 */ void APIENTRY (*Uniform3iv)(GLint location, GLsizei count, const GLint *value); /* 2497 */ void APIENTRY (*Uniform3ui)(GLint location, GLuint v0, GLuint v1, GLuint v2); /* 2498 */ void APIENTRY (*Uniform3ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); /* 2499 */ void APIENTRY (*Uniform3ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); /* 2500 */ void APIENTRY (*Uniform3uiEXT)(GLint location, GLuint v0, GLuint v1, GLuint v2); /* 2501 */ void APIENTRY (*Uniform3uiv)(GLint location, GLsizei count, const GLuint *value); /* 2502 */ void APIENTRY (*Uniform3uivEXT)(GLint location, GLsizei count, const GLuint *value); /* 2503 */ void APIENTRY (*Uniform4d)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 2504 */ void APIENTRY (*Uniform4dv)(GLint location, GLsizei count, const GLdouble *value); /* 2505 */ void APIENTRY (*Uniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); /* 2506 */ void APIENTRY (*Uniform4fv)(GLint location, GLsizei count, const GLfloat *value); /* 2507 */ void APIENTRY (*Uniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); /* 2508 */ void APIENTRY (*Uniform4i64NV)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); /* 2509 */ void APIENTRY (*Uniform4i64vNV)(GLint location, GLsizei count, const GLint64EXT *value); /* 2510 */ void APIENTRY (*Uniform4iv)(GLint location, GLsizei count, const GLint *value); /* 2511 */ void APIENTRY (*Uniform4ui)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); /* 2512 */ void APIENTRY (*Uniform4ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); /* 2513 */ void APIENTRY (*Uniform4ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); /* 2514 */ void APIENTRY (*Uniform4uiEXT)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); /* 2515 */ void APIENTRY (*Uniform4uiv)(GLint location, GLsizei count, const GLuint *value); /* 2516 */ void APIENTRY (*Uniform4uivEXT)(GLint location, GLsizei count, const GLuint *value); /* 2517 */ void APIENTRY (*UniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); /* 2518 */ void APIENTRY (*UniformBufferEXT)(GLuint program, GLint location, GLuint buffer); /* 2519 */ void APIENTRY (*UniformHandleui64ARB)(GLint location, GLuint64 value); /* 2520 */ void APIENTRY (*UniformHandleui64NV)(GLint location, GLuint64 value); /* 2521 */ void APIENTRY (*UniformHandleui64vARB)(GLint location, GLsizei count, const GLuint64 *value); /* 2522 */ void APIENTRY (*UniformHandleui64vNV)(GLint location, GLsizei count, const GLuint64 *value); /* 2523 */ void APIENTRY (*UniformMatrix2dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2524 */ void APIENTRY (*UniformMatrix2fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2525 */ void APIENTRY (*UniformMatrix2x3dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2526 */ void APIENTRY (*UniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2527 */ void APIENTRY (*UniformMatrix2x4dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2528 */ void APIENTRY (*UniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2529 */ void APIENTRY (*UniformMatrix3dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2530 */ void APIENTRY (*UniformMatrix3fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2531 */ void APIENTRY (*UniformMatrix3x2dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2532 */ void APIENTRY (*UniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2533 */ void APIENTRY (*UniformMatrix3x4dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2534 */ void APIENTRY (*UniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2535 */ void APIENTRY (*UniformMatrix4dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2536 */ void APIENTRY (*UniformMatrix4fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2537 */ void APIENTRY (*UniformMatrix4x2dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2538 */ void APIENTRY (*UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2539 */ void APIENTRY (*UniformMatrix4x3dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2540 */ void APIENTRY (*UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2541 */ void APIENTRY (*UniformSubroutinesuiv)(GLenum shadertype, GLsizei count, const GLuint *indices); /* 2542 */ void APIENTRY (*Uniformui64NV)(GLint location, GLuint64EXT value); /* 2543 */ void APIENTRY (*Uniformui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); /* 2544 */ GLboolean APIENTRY (*UnmapNamedBufferEXT)(GLuint buffer); /* 2545 */ void APIENTRY (*UnmapTexture2DINTEL)(GLuint texture, GLint level); /* 2546 */ void APIENTRY (*UseProgram)(GLuint program); /* 2547 */ void APIENTRY (*UseProgramStages)(GLuint pipeline, GLbitfield stages, GLuint program); /* 2548 */ void APIENTRY (*UseShaderProgramEXT)(GLenum type, GLuint program); /* 2549 */ void APIENTRY (*VDPAUFiniNV)(void); /* 2550 */ void APIENTRY (*VDPAUGetSurfaceivNV)(GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); /* 2551 */ void APIENTRY (*VDPAUInitNV)(const void *vdpDevice, const void *getProcAddress); /* 2552 */ GLboolean APIENTRY (*VDPAUIsSurfaceNV)(GLvdpauSurfaceNV surface); /* 2553 */ void APIENTRY (*VDPAUMapSurfacesNV)(GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); /* 2554 */ GLvdpauSurfaceNV APIENTRY (*VDPAURegisterOutputSurfaceNV)(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); /* 2555 */ GLvdpauSurfaceNV APIENTRY (*VDPAURegisterVideoSurfaceNV)(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); /* 2556 */ void APIENTRY (*VDPAUSurfaceAccessNV)(GLvdpauSurfaceNV surface, GLenum access); /* 2557 */ void APIENTRY (*VDPAUUnmapSurfacesNV)(GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); /* 2558 */ void APIENTRY (*VDPAUUnregisterSurfaceNV)(GLvdpauSurfaceNV surface); /* 2559 */ void APIENTRY (*ValidateProgram)(GLuint program); /* 2560 */ void APIENTRY (*ValidateProgramPipeline)(GLuint pipeline); /* 2561 */ void APIENTRY (*Vertex2bOES)(GLbyte32 x, GLbyte32 y); /* 2562 */ void APIENTRY (*Vertex2bvOES)(const GLbyte *coords); /* 2563 */ void APIENTRY (*Vertex2xOES)(GLfixed x); /* 2564 */ void APIENTRY (*Vertex2xvOES)(const GLfixed *coords); /* 2565 */ void APIENTRY (*Vertex3bOES)(GLbyte32 x, GLbyte32 y, GLbyte32 z); /* 2566 */ void APIENTRY (*Vertex3bvOES)(const GLbyte *coords); /* 2567 */ void APIENTRY (*Vertex3xOES)(GLfixed x, GLfixed y); /* 2568 */ void APIENTRY (*Vertex3xvOES)(const GLfixed *coords); /* 2569 */ void APIENTRY (*Vertex4bOES)(GLbyte32 x, GLbyte32 y, GLbyte32 z, GLbyte32 w); /* 2570 */ void APIENTRY (*Vertex4bvOES)(const GLbyte *coords); /* 2571 */ void APIENTRY (*Vertex4xOES)(GLfixed x, GLfixed y, GLfixed z); /* 2572 */ void APIENTRY (*Vertex4xvOES)(const GLfixed *coords); /* 2573 */ void APIENTRY (*VertexArrayBindVertexBufferEXT)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); /* 2574 */ void APIENTRY (*VertexArrayColorOffsetEXT)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* 2575 */ void APIENTRY (*VertexArrayEdgeFlagOffsetEXT)(GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); /* 2576 */ void APIENTRY (*VertexArrayFogCoordOffsetEXT)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); /* 2577 */ void APIENTRY (*VertexArrayIndexOffsetEXT)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); /* 2578 */ void APIENTRY (*VertexArrayMultiTexCoordOffsetEXT)(GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* 2579 */ void APIENTRY (*VertexArrayNormalOffsetEXT)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); /* 2580 */ void APIENTRY (*VertexArraySecondaryColorOffsetEXT)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* 2581 */ void APIENTRY (*VertexArrayTexCoordOffsetEXT)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* 2582 */ void APIENTRY (*VertexArrayVertexAttribBindingEXT)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); /* 2583 */ void APIENTRY (*VertexArrayVertexAttribDivisorEXT)(GLuint vaobj, GLuint index, GLuint divisor); /* 2584 */ void APIENTRY (*VertexArrayVertexAttribFormatEXT)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset); /* 2585 */ void APIENTRY (*VertexArrayVertexAttribIFormatEXT)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); /* 2586 */ void APIENTRY (*VertexArrayVertexAttribIOffsetEXT)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* 2587 */ void APIENTRY (*VertexArrayVertexAttribLFormatEXT)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); /* 2588 */ void APIENTRY (*VertexArrayVertexAttribLOffsetEXT)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* 2589 */ void APIENTRY (*VertexArrayVertexAttribOffsetEXT)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLintptr offset); /* 2590 */ void APIENTRY (*VertexArrayVertexBindingDivisorEXT)(GLuint vaobj, GLuint bindingindex, GLuint divisor); /* 2591 */ void APIENTRY (*VertexArrayVertexOffsetEXT)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* 2592 */ void APIENTRY (*VertexAttrib1d)(GLuint index, GLdouble x); /* 2593 */ void APIENTRY (*VertexAttrib1dv)(GLuint index, const GLdouble *v); /* 2594 */ void APIENTRY (*VertexAttrib1f)(GLuint index, GLfloat x); /* 2595 */ void APIENTRY (*VertexAttrib1fv)(GLuint index, const GLfloat *v); /* 2596 */ void APIENTRY (*VertexAttrib1s)(GLuint index, GLshort32 x); /* 2597 */ void APIENTRY (*VertexAttrib1sv)(GLuint index, const GLshort *v); /* 2598 */ void APIENTRY (*VertexAttrib2d)(GLuint index, GLdouble x, GLdouble y); /* 2599 */ void APIENTRY (*VertexAttrib2dv)(GLuint index, const GLdouble *v); /* 2600 */ void APIENTRY (*VertexAttrib2f)(GLuint index, GLfloat x, GLfloat y); /* 2601 */ void APIENTRY (*VertexAttrib2fv)(GLuint index, const GLfloat *v); /* 2602 */ void APIENTRY (*VertexAttrib2s)(GLuint index, GLshort32 x, GLshort32 y); /* 2603 */ void APIENTRY (*VertexAttrib2sv)(GLuint index, const GLshort *v); /* 2604 */ void APIENTRY (*VertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 2605 */ void APIENTRY (*VertexAttrib3dv)(GLuint index, const GLdouble *v); /* 2606 */ void APIENTRY (*VertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 2607 */ void APIENTRY (*VertexAttrib3fv)(GLuint index, const GLfloat *v); /* 2608 */ void APIENTRY (*VertexAttrib3s)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z); /* 2609 */ void APIENTRY (*VertexAttrib3sv)(GLuint index, const GLshort *v); /* 2610 */ void APIENTRY (*VertexAttrib4Nbv)(GLuint index, const GLbyte *v); /* 2611 */ void APIENTRY (*VertexAttrib4Niv)(GLuint index, const GLint *v); /* 2612 */ void APIENTRY (*VertexAttrib4Nsv)(GLuint index, const GLshort *v); /* 2613 */ void APIENTRY (*VertexAttrib4Nub)(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w); /* 2614 */ void APIENTRY (*VertexAttrib4Nubv)(GLuint index, const GLubyte *v); /* 2615 */ void APIENTRY (*VertexAttrib4Nuiv)(GLuint index, const GLuint *v); /* 2616 */ void APIENTRY (*VertexAttrib4Nusv)(GLuint index, const GLushort *v); /* 2617 */ void APIENTRY (*VertexAttrib4bv)(GLuint index, const GLbyte *v); /* 2618 */ void APIENTRY (*VertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 2619 */ void APIENTRY (*VertexAttrib4dv)(GLuint index, const GLdouble *v); /* 2620 */ void APIENTRY (*VertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 2621 */ void APIENTRY (*VertexAttrib4fv)(GLuint index, const GLfloat *v); /* 2622 */ void APIENTRY (*VertexAttrib4iv)(GLuint index, const GLint *v); /* 2623 */ void APIENTRY (*VertexAttrib4s)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); /* 2624 */ void APIENTRY (*VertexAttrib4sv)(GLuint index, const GLshort *v); /* 2625 */ void APIENTRY (*VertexAttrib4ubv)(GLuint index, const GLubyte *v); /* 2626 */ void APIENTRY (*VertexAttrib4uiv)(GLuint index, const GLuint *v); /* 2627 */ void APIENTRY (*VertexAttrib4usv)(GLuint index, const GLushort *v); /* 2628 */ void APIENTRY (*VertexAttribBinding)(GLuint attribindex, GLuint bindingindex); /* 2629 */ void APIENTRY (*VertexAttribDivisor)(GLuint index, GLuint divisor); /* 2630 */ void APIENTRY (*VertexAttribDivisorARB)(GLuint index, GLuint divisor); /* 2631 */ void APIENTRY (*VertexAttribFormat)(GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset); /* 2632 */ void APIENTRY (*VertexAttribFormatNV)(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride); /* 2633 */ void APIENTRY (*VertexAttribI1i)(GLuint index, GLint x); /* 2634 */ void APIENTRY (*VertexAttribI1iEXT)(GLuint index, GLint x); /* 2635 */ void APIENTRY (*VertexAttribI1iv)(GLuint index, const GLint *v); /* 2636 */ void APIENTRY (*VertexAttribI1ivEXT)(GLuint index, const GLint *v); /* 2637 */ void APIENTRY (*VertexAttribI1ui)(GLuint index, GLuint x); /* 2638 */ void APIENTRY (*VertexAttribI1uiEXT)(GLuint index, GLuint x); /* 2639 */ void APIENTRY (*VertexAttribI1uiv)(GLuint index, const GLuint *v); /* 2640 */ void APIENTRY (*VertexAttribI1uivEXT)(GLuint index, const GLuint *v); /* 2641 */ void APIENTRY (*VertexAttribI2i)(GLuint index, GLint x, GLint y); /* 2642 */ void APIENTRY (*VertexAttribI2iEXT)(GLuint index, GLint x, GLint y); /* 2643 */ void APIENTRY (*VertexAttribI2iv)(GLuint index, const GLint *v); /* 2644 */ void APIENTRY (*VertexAttribI2ivEXT)(GLuint index, const GLint *v); /* 2645 */ void APIENTRY (*VertexAttribI2ui)(GLuint index, GLuint x, GLuint y); /* 2646 */ void APIENTRY (*VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y); /* 2647 */ void APIENTRY (*VertexAttribI2uiv)(GLuint index, const GLuint *v); /* 2648 */ void APIENTRY (*VertexAttribI2uivEXT)(GLuint index, const GLuint *v); /* 2649 */ void APIENTRY (*VertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z); /* 2650 */ void APIENTRY (*VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z); /* 2651 */ void APIENTRY (*VertexAttribI3iv)(GLuint index, const GLint *v); /* 2652 */ void APIENTRY (*VertexAttribI3ivEXT)(GLuint index, const GLint *v); /* 2653 */ void APIENTRY (*VertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z); /* 2654 */ void APIENTRY (*VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z); /* 2655 */ void APIENTRY (*VertexAttribI3uiv)(GLuint index, const GLuint *v); /* 2656 */ void APIENTRY (*VertexAttribI3uivEXT)(GLuint index, const GLuint *v); /* 2657 */ void APIENTRY (*VertexAttribI4bv)(GLuint index, const GLbyte *v); /* 2658 */ void APIENTRY (*VertexAttribI4bvEXT)(GLuint index, const GLbyte *v); /* 2659 */ void APIENTRY (*VertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w); /* 2660 */ void APIENTRY (*VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w); /* 2661 */ void APIENTRY (*VertexAttribI4iv)(GLuint index, const GLint *v); /* 2662 */ void APIENTRY (*VertexAttribI4ivEXT)(GLuint index, const GLint *v); /* 2663 */ void APIENTRY (*VertexAttribI4sv)(GLuint index, const GLshort *v); /* 2664 */ void APIENTRY (*VertexAttribI4svEXT)(GLuint index, const GLshort *v); /* 2665 */ void APIENTRY (*VertexAttribI4ubv)(GLuint index, const GLubyte *v); /* 2666 */ void APIENTRY (*VertexAttribI4ubvEXT)(GLuint index, const GLubyte *v); /* 2667 */ void APIENTRY (*VertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 2668 */ void APIENTRY (*VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 2669 */ void APIENTRY (*VertexAttribI4uiv)(GLuint index, const GLuint *v); /* 2670 */ void APIENTRY (*VertexAttribI4uivEXT)(GLuint index, const GLuint *v); /* 2671 */ void APIENTRY (*VertexAttribI4usv)(GLuint index, const GLushort *v); /* 2672 */ void APIENTRY (*VertexAttribI4usvEXT)(GLuint index, const GLushort *v); /* 2673 */ void APIENTRY (*VertexAttribIFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); /* 2674 */ void APIENTRY (*VertexAttribIFormatNV)(GLuint index, GLint size, GLenum type, GLsizei stride); /* 2675 */ void APIENTRY (*VertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); /* 2676 */ void APIENTRY (*VertexAttribIPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); /* 2677 */ void APIENTRY (*VertexAttribL1d)(GLuint index, GLdouble x); /* 2678 */ void APIENTRY (*VertexAttribL1dEXT)(GLuint index, GLdouble x); /* 2679 */ void APIENTRY (*VertexAttribL1dv)(GLuint index, const GLdouble *v); /* 2680 */ void APIENTRY (*VertexAttribL1dvEXT)(GLuint index, const GLdouble *v); /* 2681 */ void APIENTRY (*VertexAttribL1i64NV)(GLuint index, GLint64EXT x); /* 2682 */ void APIENTRY (*VertexAttribL1i64vNV)(GLuint index, const GLint64EXT *v); /* 2683 */ void APIENTRY (*VertexAttribL1ui64ARB)(GLuint index, GLuint64EXT x); /* 2684 */ void APIENTRY (*VertexAttribL1ui64NV)(GLuint index, GLuint64EXT x); /* 2685 */ void APIENTRY (*VertexAttribL1ui64vARB)(GLuint index, const GLuint64EXT *v); /* 2686 */ void APIENTRY (*VertexAttribL1ui64vNV)(GLuint index, const GLuint64EXT *v); /* 2687 */ void APIENTRY (*VertexAttribL2d)(GLuint index, GLdouble x, GLdouble y); /* 2688 */ void APIENTRY (*VertexAttribL2dEXT)(GLuint index, GLdouble x, GLdouble y); /* 2689 */ void APIENTRY (*VertexAttribL2dv)(GLuint index, const GLdouble *v); /* 2690 */ void APIENTRY (*VertexAttribL2dvEXT)(GLuint index, const GLdouble *v); /* 2691 */ void APIENTRY (*VertexAttribL2i64NV)(GLuint index, GLint64EXT x, GLint64EXT y); /* 2692 */ void APIENTRY (*VertexAttribL2i64vNV)(GLuint index, const GLint64EXT *v); /* 2693 */ void APIENTRY (*VertexAttribL2ui64NV)(GLuint index, GLuint64EXT x, GLuint64EXT y); /* 2694 */ void APIENTRY (*VertexAttribL2ui64vNV)(GLuint index, const GLuint64EXT *v); /* 2695 */ void APIENTRY (*VertexAttribL3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 2696 */ void APIENTRY (*VertexAttribL3dEXT)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 2697 */ void APIENTRY (*VertexAttribL3dv)(GLuint index, const GLdouble *v); /* 2698 */ void APIENTRY (*VertexAttribL3dvEXT)(GLuint index, const GLdouble *v); /* 2699 */ void APIENTRY (*VertexAttribL3i64NV)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); /* 2700 */ void APIENTRY (*VertexAttribL3i64vNV)(GLuint index, const GLint64EXT *v); /* 2701 */ void APIENTRY (*VertexAttribL3ui64NV)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); /* 2702 */ void APIENTRY (*VertexAttribL3ui64vNV)(GLuint index, const GLuint64EXT *v); /* 2703 */ void APIENTRY (*VertexAttribL4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 2704 */ void APIENTRY (*VertexAttribL4dEXT)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 2705 */ void APIENTRY (*VertexAttribL4dv)(GLuint index, const GLdouble *v); /* 2706 */ void APIENTRY (*VertexAttribL4dvEXT)(GLuint index, const GLdouble *v); /* 2707 */ void APIENTRY (*VertexAttribL4i64NV)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); /* 2708 */ void APIENTRY (*VertexAttribL4i64vNV)(GLuint index, const GLint64EXT *v); /* 2709 */ void APIENTRY (*VertexAttribL4ui64NV)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); /* 2710 */ void APIENTRY (*VertexAttribL4ui64vNV)(GLuint index, const GLuint64EXT *v); /* 2711 */ void APIENTRY (*VertexAttribLFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); /* 2712 */ void APIENTRY (*VertexAttribLFormatNV)(GLuint index, GLint size, GLenum type, GLsizei stride); /* 2713 */ void APIENTRY (*VertexAttribLPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); /* 2714 */ void APIENTRY (*VertexAttribLPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); /* 2715 */ void APIENTRY (*VertexAttribP1ui)(GLuint index, GLenum type, GLboolean32 normalized, GLuint value); /* 2716 */ void APIENTRY (*VertexAttribP1uiv)(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value); /* 2717 */ void APIENTRY (*VertexAttribP2ui)(GLuint index, GLenum type, GLboolean32 normalized, GLuint value); /* 2718 */ void APIENTRY (*VertexAttribP2uiv)(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value); /* 2719 */ void APIENTRY (*VertexAttribP3ui)(GLuint index, GLenum type, GLboolean32 normalized, GLuint value); /* 2720 */ void APIENTRY (*VertexAttribP3uiv)(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value); /* 2721 */ void APIENTRY (*VertexAttribP4ui)(GLuint index, GLenum type, GLboolean32 normalized, GLuint value); /* 2722 */ void APIENTRY (*VertexAttribP4uiv)(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value); /* 2723 */ void APIENTRY (*VertexAttribParameteriAMD)(GLuint index, GLenum pname, GLint param); /* 2724 */ void APIENTRY (*VertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer); /* 2725 */ void APIENTRY (*VertexBindingDivisor)(GLuint bindingindex, GLuint divisor); /* 2726 */ void APIENTRY (*VertexFormatNV)(GLint size, GLenum type, GLsizei stride); /* 2727 */ void APIENTRY (*VertexP2ui)(GLenum type, GLuint value); /* 2728 */ void APIENTRY (*VertexP2uiv)(GLenum type, const GLuint *value); /* 2729 */ void APIENTRY (*VertexP3ui)(GLenum type, GLuint value); /* 2730 */ void APIENTRY (*VertexP3uiv)(GLenum type, const GLuint *value); /* 2731 */ void APIENTRY (*VertexP4ui)(GLenum type, GLuint value); /* 2732 */ void APIENTRY (*VertexP4uiv)(GLenum type, const GLuint *value); /* 2733 */ void APIENTRY (*VertexPointSizefAPPLE)(GLfloat size); /* 2734 */ GLenum APIENTRY (*VideoCaptureNV)(GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); /* 2735 */ void APIENTRY (*VideoCaptureStreamParameterdvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); /* 2736 */ void APIENTRY (*VideoCaptureStreamParameterfvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); /* 2737 */ void APIENTRY (*VideoCaptureStreamParameterivNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); /* 2738 */ void APIENTRY (*ViewportArrayv)(GLuint first, GLsizei count, const GLfloat *v); /* 2739 */ void APIENTRY (*ViewportIndexedf)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); /* 2740 */ void APIENTRY (*ViewportIndexedfv)(GLuint index, const GLfloat *v); /* 2741 */ void APIENTRY (*WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 2742 */ void APIENTRY (*WeightPathsNV)(GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); /* 2743 */ void APIENTRY (*BindTextureUnit)(GLuint unit, GLuint texture); /* 2744 */ void APIENTRY (*BlendBarrierKHR)(void); /* 2745 */ void APIENTRY (*BlitNamedFramebuffer)(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 2746 */ void APIENTRY (*BufferPageCommitmentARB)(GLenum target, GLintptr offset, GLsizeiptr size, GLboolean32 commit); /* 2747 */ void APIENTRY (*CallCommandListNV)(GLuint list); /* 2748 */ GLenum APIENTRY (*CheckNamedFramebufferStatus)(GLuint framebuffer, GLenum target); /* 2749 */ void APIENTRY (*ClearNamedBufferData)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); /* 2750 */ void APIENTRY (*ClearNamedBufferSubData)(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); /* 2751 */ void APIENTRY (*ClearNamedFramebufferfi)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); /* 2752 */ void APIENTRY (*ClearNamedFramebufferfv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); /* 2753 */ void APIENTRY (*ClearNamedFramebufferiv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); /* 2754 */ void APIENTRY (*ClearNamedFramebufferuiv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); /* 2755 */ void APIENTRY (*ClipControl)(GLenum origin, GLenum depth); /* 2756 */ void APIENTRY (*CommandListSegmentsNV)(GLuint list, GLuint segments); /* 2757 */ void APIENTRY (*CompileCommandListNV)(GLuint list); /* 2758 */ void APIENTRY (*CompressedTextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); /* 2759 */ void APIENTRY (*CompressedTextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); /* 2760 */ void APIENTRY (*CompressedTextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); /* 2761 */ void APIENTRY (*CopyNamedBufferSubData)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 2762 */ void APIENTRY (*CopyTextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); /* 2763 */ void APIENTRY (*CopyTextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 2764 */ void APIENTRY (*CopyTextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 2765 */ void APIENTRY (*CoverageModulationNV)(GLenum components); /* 2766 */ void APIENTRY (*CoverageModulationTableNV)(GLsizei n, const GLfloat *v); /* 2767 */ void APIENTRY (*CreateBuffers)(GLsizei n, GLuint *buffers); /* 2768 */ void APIENTRY (*CreateCommandListsNV)(GLsizei n, GLuint *lists); /* 2769 */ void APIENTRY (*CreateFramebuffers)(GLsizei n, GLuint *framebuffers); /* 2770 */ void APIENTRY (*CreateProgramPipelines)(GLsizei n, GLuint *pipelines); /* 2771 */ void APIENTRY (*CreateQueries)(GLenum target, GLsizei n, GLuint *ids); /* 2772 */ void APIENTRY (*CreateRenderbuffers)(GLsizei n, GLuint *renderbuffers); /* 2773 */ void APIENTRY (*CreateSamplers)(GLsizei n, GLuint *samplers); /* 2774 */ void APIENTRY (*CreateStatesNV)(GLsizei n, GLuint *states); /* 2775 */ void APIENTRY (*CreateTextures)(GLenum target, GLsizei n, GLuint *textures); /* 2776 */ void APIENTRY (*CreateTransformFeedbacks)(GLsizei n, GLuint *ids); /* 2777 */ void APIENTRY (*CreateVertexArrays)(GLsizei n, GLuint *arrays); /* 2778 */ void APIENTRY (*DeleteCommandListsNV)(GLsizei n, const GLuint *lists); /* 2779 */ void APIENTRY (*DeleteStatesNV)(GLsizei n, const GLuint *states); /* 2780 */ void APIENTRY (*DisableVertexArrayAttrib)(GLuint vaobj, GLuint index); /* 2781 */ void APIENTRY (*DrawCommandsAddressNV)(GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count); /* 2782 */ void APIENTRY (*DrawCommandsNV)(GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count); /* 2783 */ void APIENTRY (*DrawCommandsStatesAddressNV)(const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); /* 2784 */ void APIENTRY (*DrawCommandsStatesNV)(GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); /* 2785 */ void APIENTRY (*EnableVertexArrayAttrib)(GLuint vaobj, GLuint index); /* 2786 */ void APIENTRY (*FlushMappedNamedBufferRange)(GLuint buffer, GLintptr offset, GLsizeiptr length); /* 2787 */ void APIENTRY (*FragmentCoverageColorNV)(GLuint color); /* 2788 */ void APIENTRY (*FramebufferSampleLocationsfvNV)(GLenum target, GLuint start, GLsizei count, const GLfloat *v); /* 2789 */ void APIENTRY (*FramebufferTextureMultiviewOVR)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); /* 2790 */ void APIENTRY (*GenerateTextureMipmap)(GLuint texture); /* 2791 */ GLuint APIENTRY (*GetCommandHeaderNV)(GLenum tokenID, GLuint size); /* 2792 */ void APIENTRY (*GetCompressedTextureImage)(GLuint texture, GLint level, GLsizei bufSize, void *pixels); /* 2793 */ void APIENTRY (*GetCompressedTextureSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); /* 2794 */ void APIENTRY (*GetCoverageModulationTableNV)(GLsizei bufsize, GLfloat *v); /* 2795 */ GLenum APIENTRY (*GetGraphicsResetStatus)(void); /* 2796 */ void APIENTRY (*GetInternalformatSampleivNV)(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params); /* 2797 */ void APIENTRY (*GetNamedBufferParameteri64v)(GLuint buffer, GLenum pname, GLint64 *params); /* 2798 */ void APIENTRY (*GetNamedBufferParameteriv)(GLuint buffer, GLenum pname, GLint *params); /* 2799 */ void APIENTRY (*GetNamedBufferPointerv)(GLuint buffer, GLenum pname, void * *params); /* 2800 */ void APIENTRY (*GetNamedBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); /* 2801 */ void APIENTRY (*GetNamedFramebufferAttachmentParameteriv)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); /* 2802 */ void APIENTRY (*GetNamedFramebufferParameteriv)(GLuint framebuffer, GLenum pname, GLint *param); /* 2803 */ void APIENTRY (*GetNamedRenderbufferParameteriv)(GLuint renderbuffer, GLenum pname, GLint *params); /* 2804 */ void APIENTRY (*GetProgramResourcefvNV)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params); /* 2805 */ void APIENTRY (*GetQueryBufferObjecti64v)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); /* 2806 */ void APIENTRY (*GetQueryBufferObjectiv)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); /* 2807 */ void APIENTRY (*GetQueryBufferObjectui64v)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); /* 2808 */ void APIENTRY (*GetQueryBufferObjectuiv)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); /* 2809 */ GLushort APIENTRY (*GetStageIndexNV)(GLenum shadertype); /* 2810 */ void APIENTRY (*GetTextureImage)(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); /* 2811 */ void APIENTRY (*GetTextureLevelParameterfv)(GLuint texture, GLint level, GLenum pname, GLfloat *params); /* 2812 */ void APIENTRY (*GetTextureLevelParameteriv)(GLuint texture, GLint level, GLenum pname, GLint *params); /* 2813 */ void APIENTRY (*GetTextureParameterIiv)(GLuint texture, GLenum pname, GLint *params); /* 2814 */ void APIENTRY (*GetTextureParameterIuiv)(GLuint texture, GLenum pname, GLuint *params); /* 2815 */ void APIENTRY (*GetTextureParameterfv)(GLuint texture, GLenum pname, GLfloat *params); /* 2816 */ void APIENTRY (*GetTextureParameteriv)(GLuint texture, GLenum pname, GLint *params); /* 2817 */ void APIENTRY (*GetTextureSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels); /* 2818 */ void APIENTRY (*GetTransformFeedbacki64_v)(GLuint xfb, GLenum pname, GLuint index, GLint64 *param); /* 2819 */ void APIENTRY (*GetTransformFeedbacki_v)(GLuint xfb, GLenum pname, GLuint index, GLint *param); /* 2820 */ void APIENTRY (*GetTransformFeedbackiv)(GLuint xfb, GLenum pname, GLint *param); /* 2821 */ void APIENTRY (*GetVertexArrayIndexed64iv)(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param); /* 2822 */ void APIENTRY (*GetVertexArrayIndexediv)(GLuint vaobj, GLuint index, GLenum pname, GLint *param); /* 2823 */ void APIENTRY (*GetVertexArrayiv)(GLuint vaobj, GLenum pname, GLint *param); /* 2824 */ void APIENTRY (*GetnColorTable)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); /* 2825 */ void APIENTRY (*GetnCompressedTexImage)(GLenum target, GLint lod, GLsizei bufSize, void *pixels); /* 2826 */ void APIENTRY (*GetnConvolutionFilter)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); /* 2827 */ void APIENTRY (*GetnHistogram)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values); /* 2828 */ void APIENTRY (*GetnMapdv)(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); /* 2829 */ void APIENTRY (*GetnMapfv)(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); /* 2830 */ void APIENTRY (*GetnMapiv)(GLenum target, GLenum query, GLsizei bufSize, GLint *v); /* 2831 */ void APIENTRY (*GetnMinmax)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values); /* 2832 */ void APIENTRY (*GetnPixelMapfv)(GLenum map, GLsizei bufSize, GLfloat *values); /* 2833 */ void APIENTRY (*GetnPixelMapuiv)(GLenum map, GLsizei bufSize, GLuint *values); /* 2834 */ void APIENTRY (*GetnPixelMapusv)(GLenum map, GLsizei bufSize, GLushort *values); /* 2835 */ void APIENTRY (*GetnPolygonStipple)(GLsizei bufSize, GLubyte *pattern); /* 2836 */ void APIENTRY (*GetnSeparableFilter)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); /* 2837 */ void APIENTRY (*GetnTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); /* 2838 */ void APIENTRY (*GetnUniformdv)(GLuint program, GLint location, GLsizei bufSize, GLdouble *params); /* 2839 */ void APIENTRY (*GetnUniformfv)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); /* 2840 */ void APIENTRY (*GetnUniformiv)(GLuint program, GLint location, GLsizei bufSize, GLint *params); /* 2841 */ void APIENTRY (*GetnUniformuiv)(GLuint program, GLint location, GLsizei bufSize, GLuint *params); /* 2842 */ void APIENTRY (*InvalidateNamedFramebufferData)(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments); /* 2843 */ void APIENTRY (*InvalidateNamedFramebufferSubData)(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); /* 2844 */ GLboolean APIENTRY (*IsCommandListNV)(GLuint list); /* 2845 */ GLboolean APIENTRY (*IsStateNV)(GLuint state); /* 2846 */ void APIENTRY (*ListDrawCommandsStatesClientNV)(GLuint list, GLuint segment, const void * *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); /* 2847 */ void * APIENTRY (*MapNamedBuffer)(GLuint buffer, GLenum access); /* 2848 */ void * APIENTRY (*MapNamedBufferRange)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); /* 2849 */ void APIENTRY (*MatrixLoad3x2fNV)(GLenum matrixMode, const GLfloat *m); /* 2850 */ void APIENTRY (*MatrixLoad3x3fNV)(GLenum matrixMode, const GLfloat *m); /* 2851 */ void APIENTRY (*MatrixLoadTranspose3x3fNV)(GLenum matrixMode, const GLfloat *m); /* 2852 */ void APIENTRY (*MatrixMult3x2fNV)(GLenum matrixMode, const GLfloat *m); /* 2853 */ void APIENTRY (*MatrixMult3x3fNV)(GLenum matrixMode, const GLfloat *m); /* 2854 */ void APIENTRY (*MatrixMultTranspose3x3fNV)(GLenum matrixMode, const GLfloat *m); /* 2855 */ void APIENTRY (*MemoryBarrierByRegion)(GLbitfield barriers); /* 2856 */ void APIENTRY (*MultiDrawArraysIndirectBindlessCountNV)(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); /* 2857 */ void APIENTRY (*MultiDrawElementsIndirectBindlessCountNV)(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); /* 2858 */ void APIENTRY (*NamedBufferData)(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); /* 2859 */ void APIENTRY (*NamedBufferPageCommitmentARB)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit); /* 2860 */ void APIENTRY (*NamedBufferPageCommitmentEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit); /* 2861 */ void APIENTRY (*NamedBufferStorage)(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); /* 2862 */ void APIENTRY (*NamedBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); /* 2863 */ void APIENTRY (*NamedFramebufferDrawBuffer)(GLuint framebuffer, GLenum buf); /* 2864 */ void APIENTRY (*NamedFramebufferDrawBuffers)(GLuint framebuffer, GLsizei n, const GLenum *bufs); /* 2865 */ void APIENTRY (*NamedFramebufferParameteri)(GLuint framebuffer, GLenum pname, GLint param); /* 2866 */ void APIENTRY (*NamedFramebufferReadBuffer)(GLuint framebuffer, GLenum src); /* 2867 */ void APIENTRY (*NamedFramebufferRenderbuffer)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 2868 */ void APIENTRY (*NamedFramebufferSampleLocationsfvNV)(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); /* 2869 */ void APIENTRY (*NamedFramebufferTexture)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); /* 2870 */ void APIENTRY (*NamedFramebufferTextureLayer)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 2871 */ void APIENTRY (*NamedRenderbufferStorage)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); /* 2872 */ void APIENTRY (*NamedRenderbufferStorageMultisample)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 2873 */ GLenum APIENTRY (*PathGlyphIndexArrayNV)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); /* 2874 */ GLenum APIENTRY (*PathGlyphIndexRangeNV)(GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); /* 2875 */ GLenum APIENTRY (*PathMemoryGlyphIndexArrayNV)(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); /* 2876 */ void APIENTRY (*PolygonOffsetClampEXT)(GLfloat factor, GLfloat units, GLfloat clamp); /* 2877 */ void APIENTRY (*ProgramPathFragmentInputGenNV)(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); /* 2878 */ void APIENTRY (*RasterSamplesEXT)(GLuint samples, GLboolean32 fixedsamplelocations); /* 2879 */ void APIENTRY (*ReadnPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); /* 2880 */ void APIENTRY (*ResolveDepthValuesNV)(void); /* 2881 */ void APIENTRY (*StateCaptureNV)(GLuint state, GLenum mode); /* 2882 */ void APIENTRY (*StencilThenCoverFillPathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); /* 2883 */ void APIENTRY (*StencilThenCoverFillPathNV)(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); /* 2884 */ void APIENTRY (*StencilThenCoverStrokePathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); /* 2885 */ void APIENTRY (*StencilThenCoverStrokePathNV)(GLuint path, GLint reference, GLuint mask, GLenum coverMode); /* 2886 */ void APIENTRY (*SubpixelPrecisionBiasNV)(GLuint xbits, GLuint ybits); /* 2887 */ void APIENTRY (*TextureBarrier)(void); /* 2888 */ void APIENTRY (*TextureBuffer)(GLuint texture, GLenum internalformat, GLuint buffer); /* 2889 */ void APIENTRY (*TextureBufferRange)(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 2890 */ void APIENTRY (*TextureParameterIiv)(GLuint texture, GLenum pname, const GLint *params); /* 2891 */ void APIENTRY (*TextureParameterIuiv)(GLuint texture, GLenum pname, const GLuint *params); /* 2892 */ void APIENTRY (*TextureParameterf)(GLuint texture, GLenum pname, GLfloat param); /* 2893 */ void APIENTRY (*TextureParameterfv)(GLuint texture, GLenum pname, const GLfloat *param); /* 2894 */ void APIENTRY (*TextureParameteri)(GLuint texture, GLenum pname, GLint param); /* 2895 */ void APIENTRY (*TextureParameteriv)(GLuint texture, GLenum pname, const GLint *param); /* 2896 */ void APIENTRY (*TextureStorage1D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); /* 2897 */ void APIENTRY (*TextureStorage2D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); /* 2898 */ void APIENTRY (*TextureStorage2DMultisample)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations); /* 2899 */ void APIENTRY (*TextureStorage3D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); /* 2900 */ void APIENTRY (*TextureStorage3DMultisample)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations); /* 2901 */ void APIENTRY (*TextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); /* 2902 */ void APIENTRY (*TextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); /* 2903 */ void APIENTRY (*TextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); /* 2904 */ void APIENTRY (*TransformFeedbackBufferBase)(GLuint xfb, GLuint index, GLuint buffer); /* 2905 */ void APIENTRY (*TransformFeedbackBufferRange)(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 2906 */ GLboolean APIENTRY (*UnmapNamedBuffer)(GLuint buffer); /* 2907 */ void APIENTRY (*VertexArrayAttribBinding)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); /* 2908 */ void APIENTRY (*VertexArrayAttribFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset); /* 2909 */ void APIENTRY (*VertexArrayAttribIFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); /* 2910 */ void APIENTRY (*VertexArrayAttribLFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); /* 2911 */ void APIENTRY (*VertexArrayBindingDivisor)(GLuint vaobj, GLuint bindingindex, GLuint divisor); /* 2912 */ void APIENTRY (*VertexArrayElementBuffer)(GLuint vaobj, GLuint buffer); /* 2913 */ void APIENTRY (*VertexArrayVertexBuffer)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); /* 2914 */ void APIENTRY (*VertexArrayVertexBuffers)(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); /* 2915 */ OSMesaContext APIENTRY (*OSMesaCreateContextAttribs)(const GLint *attribList, OSMesaContext sharelist); /* 2916 */ void APIENTRY (*SpecializeShader)(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); /* 2917 */ void APIENTRY (*SpecializeShaderARB)(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); /* 2918 */ void APIENTRY (*MultiDrawArraysIndirectCount)(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); /* 2919 */ void APIENTRY (*MultiDrawElementsIndirectCount)(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); /* 2920 */ void APIENTRY (*PolygonOffsetClamp)(GLfloat factor, GLfloat units, GLfloat clamp); /* 2921 */ void APIENTRY (*PrimitiveBoundingBoxARB)(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); /* 2922 */ void APIENTRY (*Uniform1i64ARB)(GLint location, GLint64 x); /* 2923 */ void APIENTRY (*Uniform2i64ARB)(GLint location, GLint64 x, GLint64 y); /* 2924 */ void APIENTRY (*Uniform3i64ARB)(GLint location, GLint64 x, GLint64 y, GLint64 z); /* 2925 */ void APIENTRY (*Uniform4i64ARB)(GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); /* 2926 */ void APIENTRY (*Uniform1i64vARB)(GLint location, GLsizei count, const GLint64 *value); /* 2927 */ void APIENTRY (*Uniform2i64vARB)(GLint location, GLsizei count, const GLint64 *value); /* 2928 */ void APIENTRY (*Uniform3i64vARB)(GLint location, GLsizei count, const GLint64 *value); /* 2929 */ void APIENTRY (*Uniform4i64vARB)(GLint location, GLsizei count, const GLint64 *value); /* 2930 */ void APIENTRY (*Uniform1ui64ARB)(GLint location, GLuint64 x); /* 2931 */ void APIENTRY (*Uniform2ui64ARB)(GLint location, GLuint64 x, GLuint64 y); /* 2932 */ void APIENTRY (*Uniform3ui64ARB)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z); /* 2933 */ void APIENTRY (*Uniform4ui64ARB)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); /* 2934 */ void APIENTRY (*Uniform1ui64vARB)(GLint location, GLsizei count, const GLuint64 *value); /* 2935 */ void APIENTRY (*Uniform2ui64vARB)(GLint location, GLsizei count, const GLuint64 *value); /* 2936 */ void APIENTRY (*Uniform3ui64vARB)(GLint location, GLsizei count, const GLuint64 *value); /* 2937 */ void APIENTRY (*Uniform4ui64vARB)(GLint location, GLsizei count, const GLuint64 *value); /* 2938 */ void APIENTRY (*GetUniformi64vARB)(GLuint program, GLint location, GLint64 *params); /* 2939 */ void APIENTRY (*GetUniformui64vARB)(GLuint program, GLint location, GLuint64 *params); /* 2940 */ void APIENTRY (*GetnUniformi64vARB)(GLuint program, GLint location, GLsizei bufSize, GLint64 *params); /* 2941 */ void APIENTRY (*GetnUniformui64vARB)(GLuint program, GLint location, GLsizei bufSize, GLuint64 *params); /* 2942 */ void APIENTRY (*ProgramUniform1i64ARB)(GLuint program, GLint location, GLint64 x); /* 2943 */ void APIENTRY (*ProgramUniform2i64ARB)(GLuint program, GLint location, GLint64 x, GLint64 y); /* 2944 */ void APIENTRY (*ProgramUniform3i64ARB)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); /* 2945 */ void APIENTRY (*ProgramUniform4i64ARB)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); /* 2946 */ void APIENTRY (*ProgramUniform1i64vARB)(GLuint program, GLint location, GLsizei count, const GLint64 *value); /* 2947 */ void APIENTRY (*ProgramUniform2i64vARB)(GLuint program, GLint location, GLsizei count, const GLint64 *value); /* 2948 */ void APIENTRY (*ProgramUniform3i64vARB)(GLuint program, GLint location, GLsizei count, const GLint64 *value); /* 2949 */ void APIENTRY (*ProgramUniform4i64vARB)(GLuint program, GLint location, GLsizei count, const GLint64 *value); /* 2950 */ void APIENTRY (*ProgramUniform1ui64ARB)(GLuint program, GLint location, GLuint64 x); /* 2951 */ void APIENTRY (*ProgramUniform2ui64ARB)(GLuint program, GLint location, GLuint64 x, GLuint64 y); /* 2952 */ void APIENTRY (*ProgramUniform3ui64ARB)(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z); /* 2953 */ void APIENTRY (*ProgramUniform4ui64ARB)(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); /* 2954 */ void APIENTRY (*ProgramUniform1ui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); /* 2955 */ void APIENTRY (*ProgramUniform2ui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); /* 2956 */ void APIENTRY (*ProgramUniform3ui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); /* 2957 */ void APIENTRY (*ProgramUniform4ui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); /* 2958 */ void APIENTRY (*MaxShaderCompilerThreadsARB)(GLuint count); /* 2959 */ void APIENTRY (*FramebufferSampleLocationsfvARB)(GLenum target, GLuint start, GLsizei count, const GLfloat *v); /* 2960 */ void APIENTRY (*NamedFramebufferSampleLocationsfvARB)(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); /* 2961 */ void APIENTRY (*EvaluateDepthValuesARB)(void); /* 2962 */ void APIENTRY (*MaxShaderCompilerThreadsKHR)(GLuint count); /* 2963 */ void APIENTRY (*BufferStorageExternalEXT)(GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); /* 2964 */ void APIENTRY (*NamedBufferStorageExternalEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); /* 2965 */ void APIENTRY (*GetUnsignedBytevEXT)(GLenum pname, GLubyte *data); /* 2966 */ void APIENTRY (*GetUnsignedBytei_vEXT)(GLenum target, GLuint index, GLubyte *data); /* 2967 */ void APIENTRY (*DeleteMemoryObjectsEXT)(GLsizei n, const GLuint *memoryObjects); /* 2968 */ GLboolean APIENTRY (*IsMemoryObjectEXT)(GLuint memoryObject); /* 2969 */ void APIENTRY (*CreateMemoryObjectsEXT)(GLsizei n, GLuint *memoryObjects); /* 2970 */ void APIENTRY (*MemoryObjectParameterivEXT)(GLuint memoryObject, GLenum pname, const GLint *params); /* 2971 */ void APIENTRY (*GetMemoryObjectParameterivEXT)(GLuint memoryObject, GLenum pname, GLint *params); /* 2972 */ void APIENTRY (*TexStorageMem2DEXT)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); /* 2973 */ void APIENTRY (*TexStorageMem2DMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset); /* 2974 */ void APIENTRY (*TexStorageMem3DEXT)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); /* 2975 */ void APIENTRY (*TexStorageMem3DMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset); /* 2976 */ void APIENTRY (*BufferStorageMemEXT)(GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); /* 2977 */ void APIENTRY (*TextureStorageMem2DEXT)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); /* 2978 */ void APIENTRY (*TextureStorageMem2DMultisampleEXT)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset); /* 2979 */ void APIENTRY (*TextureStorageMem3DEXT)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); /* 2980 */ void APIENTRY (*TextureStorageMem3DMultisampleEXT)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset); /* 2981 */ void APIENTRY (*NamedBufferStorageMemEXT)(GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); /* 2982 */ void APIENTRY (*TexStorageMem1DEXT)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset); /* 2983 */ void APIENTRY (*TextureStorageMem1DEXT)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset); /* 2984 */ void APIENTRY (*ImportMemoryFdEXT)(GLuint memory, GLuint64 size, GLenum handleType, GLint fd); /* 2985 */ void APIENTRY (*ImportMemoryWin32HandleEXT)(GLuint memory, GLuint64 size, GLenum handleType, void *handle); /* 2986 */ void APIENTRY (*ImportMemoryWin32NameEXT)(GLuint memory, GLuint64 size, GLenum handleType, const void *name); /* 2987 */ void APIENTRY (*GenSemaphoresEXT)(GLsizei n, GLuint *semaphores); /* 2988 */ void APIENTRY (*DeleteSemaphoresEXT)(GLsizei n, const GLuint *semaphores); /* 2989 */ GLboolean APIENTRY (*IsSemaphoreEXT)(GLuint semaphore); /* 2990 */ void APIENTRY (*SemaphoreParameterui64vEXT)(GLuint semaphore, GLenum pname, const GLuint64 *params); /* 2991 */ void APIENTRY (*GetSemaphoreParameterui64vEXT)(GLuint semaphore, GLenum pname, GLuint64 *params); /* 2992 */ void APIENTRY (*WaitSemaphoreEXT)(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); /* 2993 */ void APIENTRY (*SignalSemaphoreEXT)(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); /* 2994 */ void APIENTRY (*ImportSemaphoreFdEXT)(GLuint semaphore, GLenum handleType, GLint fd); /* 2995 */ void APIENTRY (*ImportSemaphoreWin32HandleEXT)(GLuint semaphore, GLenum handleType, void *handle); /* 2996 */ void APIENTRY (*ImportSemaphoreWin32NameEXT)(GLuint semaphore, GLenum handleType, const void *name); /* 2997 */ GLboolean APIENTRY (*AcquireKeyedMutexWin32EXT)(GLuint memory, GLuint64 key, GLuint timeout); /* 2998 */ GLboolean APIENTRY (*ReleaseKeyedMutexWin32EXT)(GLuint memory, GLuint64 key); /* 2999 */ void APIENTRY (*LGPUNamedBufferSubDataNVX)(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); /* 3000 */ void APIENTRY (*LGPUCopyImageSubDataNVX)(GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); /* 3001 */ void APIENTRY (*LGPUInterlockNVX)(void); /* 3002 */ void APIENTRY (*AlphaToCoverageDitherControlNV)(GLenum mode); /* 3003 */ void APIENTRY (*DrawVkImageNV)(GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); /* 3004 */ GLVULKANPROCNV APIENTRY (*GetVkProcAddrNV)(const GLchar *name); /* 3005 */ void APIENTRY (*WaitVkSemaphoreNV)(GLuint64 vkSemaphore); /* 3006 */ void APIENTRY (*SignalVkSemaphoreNV)(GLuint64 vkSemaphore); /* 3007 */ void APIENTRY (*SignalVkFenceNV)(GLuint64 vkFence); /* 3008 */ void APIENTRY (*RenderGpuMaskNV)(GLbitfield mask); /* 3009 */ void APIENTRY (*MulticastBufferSubDataNV)(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); /* 3010 */ void APIENTRY (*MulticastCopyBufferSubDataNV)(GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 3011 */ void APIENTRY (*MulticastCopyImageSubDataNV)(GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); /* 3012 */ void APIENTRY (*MulticastBlitFramebufferNV)(GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 3013 */ void APIENTRY (*MulticastFramebufferSampleLocationsfvNV)(GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); /* 3014 */ void APIENTRY (*MulticastBarrierNV)(void); /* 3015 */ void APIENTRY (*MulticastWaitSyncNV)(GLuint signalGpu, GLbitfield waitGpuMask); /* 3016 */ void APIENTRY (*MulticastGetQueryObjectivNV)(GLuint gpu, GLuint id, GLenum pname, GLint *params); /* 3017 */ void APIENTRY (*MulticastGetQueryObjectuivNV)(GLuint gpu, GLuint id, GLenum pname, GLuint *params); /* 3018 */ void APIENTRY (*MulticastGetQueryObjecti64vNV)(GLuint gpu, GLuint id, GLenum pname, GLint64 *params); /* 3019 */ void APIENTRY (*MulticastGetQueryObjectui64vNV)(GLuint gpu, GLuint id, GLenum pname, GLuint64 *params); /* 3020 */ GLint APIENTRY (*QueryResourceNV)(GLenum queryType, GLint tagId, GLuint bufSize, GLint *buffer); /* 3021 */ void APIENTRY (*GenQueryResourceTagNV)(GLsizei n, GLint *tagIds); /* 3022 */ void APIENTRY (*DeleteQueryResourceTagNV)(GLsizei n, const GLint *tagIds); /* 3023 */ void APIENTRY (*QueryResourceTagNV)(GLint tagId, const GLchar *tagString); /* 3024 */ void APIENTRY (*FramebufferSamplePositionsfvAMD)(GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values); /* 3025 */ void APIENTRY (*NamedFramebufferSamplePositionsfvAMD)(GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values); /* 3026 */ void APIENTRY (*GetFramebufferParameterfvAMD)(GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); /* 3027 */ void APIENTRY (*GetNamedFramebufferParameterfvAMD)(GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); /* 3028 */ void APIENTRY (*WindowRectanglesEXT)(GLenum mode, GLsizei count, const GLint *box); /* 3029 */ void APIENTRY (*ApplyFramebufferAttachmentCMAAINTEL)(void); /* 3030 */ void APIENTRY (*ViewportSwizzleNV)(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); /* 3031 */ void APIENTRY (*ViewportPositionWScaleNV)(GLuint index, GLfloat xcoeff, GLfloat ycoeff); /* 3032 */ void APIENTRY (*ConservativeRasterParameterfNV)(GLenum pname, GLfloat value); /* 3033 */ void APIENTRY (*ConservativeRasterParameteriNV)(GLenum pname, GLint param); unsigned int __numfuncs; OSMESAproc APIENTRY (*__old_OSMesaGetProcAddress)(const char *funcName); }; extern struct _gl_osmesa gl; #ifdef __cplusplus } #endif #ifndef NFOSMESA_NO_MANGLE #undef glGetString #define glGetString (gl.GetString) #undef OSMesaCreateContext #define OSMesaCreateContext (gl.OSMesaCreateContext) #undef OSMesaCreateContextExt #define OSMesaCreateContextExt (gl.OSMesaCreateContextExt) #undef OSMesaDestroyContext #define OSMesaDestroyContext (gl.OSMesaDestroyContext) #undef OSMesaMakeCurrent #define OSMesaMakeCurrent (gl.OSMesaMakeCurrent) #undef OSMesaGetCurrentContext #define OSMesaGetCurrentContext (gl.OSMesaGetCurrentContext) #undef OSMesaPixelStore #define OSMesaPixelStore (gl.OSMesaPixelStore) #undef OSMesaGetIntegerv #define OSMesaGetIntegerv (gl.OSMesaGetIntegerv) #undef OSMesaGetDepthBuffer #define OSMesaGetDepthBuffer (gl.OSMesaGetDepthBuffer) #undef OSMesaGetColorBuffer #define OSMesaGetColorBuffer (gl.OSMesaGetColorBuffer) #undef OSMesaGetProcAddress #define OSMesaGetProcAddress (gl.OSMesaGetProcAddress) #undef glClearIndex #define glClearIndex (gl.ClearIndex) #undef glClearColor #define glClearColor (gl.ClearColor) #undef glClear #define glClear (gl.Clear) #undef glIndexMask #define glIndexMask (gl.IndexMask) #undef glColorMask #define glColorMask (gl.ColorMask) #undef glAlphaFunc #define glAlphaFunc (gl.AlphaFunc) #undef glBlendFunc #define glBlendFunc (gl.BlendFunc) #undef glLogicOp #define glLogicOp (gl.LogicOp) #undef glCullFace #define glCullFace (gl.CullFace) #undef glFrontFace #define glFrontFace (gl.FrontFace) #undef glPointSize #define glPointSize (gl.PointSize) #undef glLineWidth #define glLineWidth (gl.LineWidth) #undef glLineStipple #define glLineStipple (gl.LineStipple) #undef glPolygonMode #define glPolygonMode (gl.PolygonMode) #undef glPolygonOffset #define glPolygonOffset (gl.PolygonOffset) #undef glPolygonStipple #define glPolygonStipple (gl.PolygonStipple) #undef glGetPolygonStipple #define glGetPolygonStipple (gl.GetPolygonStipple) #undef glEdgeFlag #define glEdgeFlag (gl.EdgeFlag) #undef glEdgeFlagv #define glEdgeFlagv (gl.EdgeFlagv) #undef glScissor #define glScissor (gl.Scissor) #undef glClipPlane #define glClipPlane (gl.ClipPlane) #undef glGetClipPlane #define glGetClipPlane (gl.GetClipPlane) #undef glDrawBuffer #define glDrawBuffer (gl.DrawBuffer) #undef glReadBuffer #define glReadBuffer (gl.ReadBuffer) #undef glEnable #define glEnable (gl.Enable) #undef glDisable #define glDisable (gl.Disable) #undef glIsEnabled #define glIsEnabled (gl.IsEnabled) #undef glEnableClientState #define glEnableClientState (gl.EnableClientState) #undef glDisableClientState #define glDisableClientState (gl.DisableClientState) #undef glGetBooleanv #define glGetBooleanv (gl.GetBooleanv) #undef glGetDoublev #define glGetDoublev (gl.GetDoublev) #undef glGetFloatv #define glGetFloatv (gl.GetFloatv) #undef glGetIntegerv #define glGetIntegerv (gl.GetIntegerv) #undef glPushAttrib #define glPushAttrib (gl.PushAttrib) #undef glPopAttrib #define glPopAttrib (gl.PopAttrib) #undef glPushClientAttrib #define glPushClientAttrib (gl.PushClientAttrib) #undef glPopClientAttrib #define glPopClientAttrib (gl.PopClientAttrib) #undef glRenderMode #define glRenderMode (gl.RenderMode) #undef glGetError #define glGetError (gl.GetError) #undef glFinish #define glFinish (gl.Finish) #undef glFlush #define glFlush (gl.Flush) #undef glHint #define glHint (gl.Hint) #undef glClearDepth #define glClearDepth (gl.ClearDepth) #undef glDepthFunc #define glDepthFunc (gl.DepthFunc) #undef glDepthMask #define glDepthMask (gl.DepthMask) #undef glDepthRange #define glDepthRange (gl.DepthRange) #undef glClearAccum #define glClearAccum (gl.ClearAccum) #undef glAccum #define glAccum (gl.Accum) #undef glMatrixMode #define glMatrixMode (gl.MatrixMode) #undef glOrtho #define glOrtho (gl.Ortho) #undef glFrustum #define glFrustum (gl.Frustum) #undef glViewport #define glViewport (gl.Viewport) #undef glPushMatrix #define glPushMatrix (gl.PushMatrix) #undef glPopMatrix #define glPopMatrix (gl.PopMatrix) #undef glLoadIdentity #define glLoadIdentity (gl.LoadIdentity) #undef glLoadMatrixd #define glLoadMatrixd (gl.LoadMatrixd) #undef glLoadMatrixf #define glLoadMatrixf (gl.LoadMatrixf) #undef glMultMatrixd #define glMultMatrixd (gl.MultMatrixd) #undef glMultMatrixf #define glMultMatrixf (gl.MultMatrixf) #undef glRotated #define glRotated (gl.Rotated) #undef glRotatef #define glRotatef (gl.Rotatef) #undef glScaled #define glScaled (gl.Scaled) #undef glScalef #define glScalef (gl.Scalef) #undef glTranslated #define glTranslated (gl.Translated) #undef glTranslatef #define glTranslatef (gl.Translatef) #undef glIsList #define glIsList (gl.IsList) #undef glDeleteLists #define glDeleteLists (gl.DeleteLists) #undef glGenLists #define glGenLists (gl.GenLists) #undef glNewList #define glNewList (gl.NewList) #undef glEndList #define glEndList (gl.EndList) #undef glCallList #define glCallList (gl.CallList) #undef glCallLists #define glCallLists (gl.CallLists) #undef glListBase #define glListBase (gl.ListBase) #undef glBegin #define glBegin (gl.Begin) #undef glEnd #define glEnd (gl.End) #undef glVertex2d #define glVertex2d (gl.Vertex2d) #undef glVertex2f #define glVertex2f (gl.Vertex2f) #undef glVertex2i #define glVertex2i (gl.Vertex2i) #undef glVertex2s #define glVertex2s (gl.Vertex2s) #undef glVertex3d #define glVertex3d (gl.Vertex3d) #undef glVertex3f #define glVertex3f (gl.Vertex3f) #undef glVertex3i #define glVertex3i (gl.Vertex3i) #undef glVertex3s #define glVertex3s (gl.Vertex3s) #undef glVertex4d #define glVertex4d (gl.Vertex4d) #undef glVertex4f #define glVertex4f (gl.Vertex4f) #undef glVertex4i #define glVertex4i (gl.Vertex4i) #undef glVertex4s #define glVertex4s (gl.Vertex4s) #undef glVertex2dv #define glVertex2dv (gl.Vertex2dv) #undef glVertex2fv #define glVertex2fv (gl.Vertex2fv) #undef glVertex2iv #define glVertex2iv (gl.Vertex2iv) #undef glVertex2sv #define glVertex2sv (gl.Vertex2sv) #undef glVertex3dv #define glVertex3dv (gl.Vertex3dv) #undef glVertex3fv #define glVertex3fv (gl.Vertex3fv) #undef glVertex3iv #define glVertex3iv (gl.Vertex3iv) #undef glVertex3sv #define glVertex3sv (gl.Vertex3sv) #undef glVertex4dv #define glVertex4dv (gl.Vertex4dv) #undef glVertex4fv #define glVertex4fv (gl.Vertex4fv) #undef glVertex4iv #define glVertex4iv (gl.Vertex4iv) #undef glVertex4sv #define glVertex4sv (gl.Vertex4sv) #undef glNormal3b #define glNormal3b (gl.Normal3b) #undef glNormal3d #define glNormal3d (gl.Normal3d) #undef glNormal3f #define glNormal3f (gl.Normal3f) #undef glNormal3i #define glNormal3i (gl.Normal3i) #undef glNormal3s #define glNormal3s (gl.Normal3s) #undef glNormal3bv #define glNormal3bv (gl.Normal3bv) #undef glNormal3dv #define glNormal3dv (gl.Normal3dv) #undef glNormal3fv #define glNormal3fv (gl.Normal3fv) #undef glNormal3iv #define glNormal3iv (gl.Normal3iv) #undef glNormal3sv #define glNormal3sv (gl.Normal3sv) #undef glIndexd #define glIndexd (gl.Indexd) #undef glIndexf #define glIndexf (gl.Indexf) #undef glIndexi #define glIndexi (gl.Indexi) #undef glIndexs #define glIndexs (gl.Indexs) #undef glIndexub #define glIndexub (gl.Indexub) #undef glIndexdv #define glIndexdv (gl.Indexdv) #undef glIndexfv #define glIndexfv (gl.Indexfv) #undef glIndexiv #define glIndexiv (gl.Indexiv) #undef glIndexsv #define glIndexsv (gl.Indexsv) #undef glIndexubv #define glIndexubv (gl.Indexubv) #undef glColor3b #define glColor3b (gl.Color3b) #undef glColor3d #define glColor3d (gl.Color3d) #undef glColor3f #define glColor3f (gl.Color3f) #undef glColor3i #define glColor3i (gl.Color3i) #undef glColor3s #define glColor3s (gl.Color3s) #undef glColor3ub #define glColor3ub (gl.Color3ub) #undef glColor3ui #define glColor3ui (gl.Color3ui) #undef glColor3us #define glColor3us (gl.Color3us) #undef glColor4b #define glColor4b (gl.Color4b) #undef glColor4d #define glColor4d (gl.Color4d) #undef glColor4f #define glColor4f (gl.Color4f) #undef glColor4i #define glColor4i (gl.Color4i) #undef glColor4s #define glColor4s (gl.Color4s) #undef glColor4ub #define glColor4ub (gl.Color4ub) #undef glColor4ui #define glColor4ui (gl.Color4ui) #undef glColor4us #define glColor4us (gl.Color4us) #undef glColor3bv #define glColor3bv (gl.Color3bv) #undef glColor3dv #define glColor3dv (gl.Color3dv) #undef glColor3fv #define glColor3fv (gl.Color3fv) #undef glColor3iv #define glColor3iv (gl.Color3iv) #undef glColor3sv #define glColor3sv (gl.Color3sv) #undef glColor3ubv #define glColor3ubv (gl.Color3ubv) #undef glColor3uiv #define glColor3uiv (gl.Color3uiv) #undef glColor3usv #define glColor3usv (gl.Color3usv) #undef glColor4bv #define glColor4bv (gl.Color4bv) #undef glColor4dv #define glColor4dv (gl.Color4dv) #undef glColor4fv #define glColor4fv (gl.Color4fv) #undef glColor4iv #define glColor4iv (gl.Color4iv) #undef glColor4sv #define glColor4sv (gl.Color4sv) #undef glColor4ubv #define glColor4ubv (gl.Color4ubv) #undef glColor4uiv #define glColor4uiv (gl.Color4uiv) #undef glColor4usv #define glColor4usv (gl.Color4usv) #undef glTexCoord1d #define glTexCoord1d (gl.TexCoord1d) #undef glTexCoord1f #define glTexCoord1f (gl.TexCoord1f) #undef glTexCoord1i #define glTexCoord1i (gl.TexCoord1i) #undef glTexCoord1s #define glTexCoord1s (gl.TexCoord1s) #undef glTexCoord2d #define glTexCoord2d (gl.TexCoord2d) #undef glTexCoord2f #define glTexCoord2f (gl.TexCoord2f) #undef glTexCoord2i #define glTexCoord2i (gl.TexCoord2i) #undef glTexCoord2s #define glTexCoord2s (gl.TexCoord2s) #undef glTexCoord3d #define glTexCoord3d (gl.TexCoord3d) #undef glTexCoord3f #define glTexCoord3f (gl.TexCoord3f) #undef glTexCoord3i #define glTexCoord3i (gl.TexCoord3i) #undef glTexCoord3s #define glTexCoord3s (gl.TexCoord3s) #undef glTexCoord4d #define glTexCoord4d (gl.TexCoord4d) #undef glTexCoord4f #define glTexCoord4f (gl.TexCoord4f) #undef glTexCoord4i #define glTexCoord4i (gl.TexCoord4i) #undef glTexCoord4s #define glTexCoord4s (gl.TexCoord4s) #undef glTexCoord1dv #define glTexCoord1dv (gl.TexCoord1dv) #undef glTexCoord1fv #define glTexCoord1fv (gl.TexCoord1fv) #undef glTexCoord1iv #define glTexCoord1iv (gl.TexCoord1iv) #undef glTexCoord1sv #define glTexCoord1sv (gl.TexCoord1sv) #undef glTexCoord2dv #define glTexCoord2dv (gl.TexCoord2dv) #undef glTexCoord2fv #define glTexCoord2fv (gl.TexCoord2fv) #undef glTexCoord2iv #define glTexCoord2iv (gl.TexCoord2iv) #undef glTexCoord2sv #define glTexCoord2sv (gl.TexCoord2sv) #undef glTexCoord3dv #define glTexCoord3dv (gl.TexCoord3dv) #undef glTexCoord3fv #define glTexCoord3fv (gl.TexCoord3fv) #undef glTexCoord3iv #define glTexCoord3iv (gl.TexCoord3iv) #undef glTexCoord3sv #define glTexCoord3sv (gl.TexCoord3sv) #undef glTexCoord4dv #define glTexCoord4dv (gl.TexCoord4dv) #undef glTexCoord4fv #define glTexCoord4fv (gl.TexCoord4fv) #undef glTexCoord4iv #define glTexCoord4iv (gl.TexCoord4iv) #undef glTexCoord4sv #define glTexCoord4sv (gl.TexCoord4sv) #undef glRasterPos2d #define glRasterPos2d (gl.RasterPos2d) #undef glRasterPos2f #define glRasterPos2f (gl.RasterPos2f) #undef glRasterPos2i #define glRasterPos2i (gl.RasterPos2i) #undef glRasterPos2s #define glRasterPos2s (gl.RasterPos2s) #undef glRasterPos3d #define glRasterPos3d (gl.RasterPos3d) #undef glRasterPos3f #define glRasterPos3f (gl.RasterPos3f) #undef glRasterPos3i #define glRasterPos3i (gl.RasterPos3i) #undef glRasterPos3s #define glRasterPos3s (gl.RasterPos3s) #undef glRasterPos4d #define glRasterPos4d (gl.RasterPos4d) #undef glRasterPos4f #define glRasterPos4f (gl.RasterPos4f) #undef glRasterPos4i #define glRasterPos4i (gl.RasterPos4i) #undef glRasterPos4s #define glRasterPos4s (gl.RasterPos4s) #undef glRasterPos2dv #define glRasterPos2dv (gl.RasterPos2dv) #undef glRasterPos2fv #define glRasterPos2fv (gl.RasterPos2fv) #undef glRasterPos2iv #define glRasterPos2iv (gl.RasterPos2iv) #undef glRasterPos2sv #define glRasterPos2sv (gl.RasterPos2sv) #undef glRasterPos3dv #define glRasterPos3dv (gl.RasterPos3dv) #undef glRasterPos3fv #define glRasterPos3fv (gl.RasterPos3fv) #undef glRasterPos3iv #define glRasterPos3iv (gl.RasterPos3iv) #undef glRasterPos3sv #define glRasterPos3sv (gl.RasterPos3sv) #undef glRasterPos4dv #define glRasterPos4dv (gl.RasterPos4dv) #undef glRasterPos4fv #define glRasterPos4fv (gl.RasterPos4fv) #undef glRasterPos4iv #define glRasterPos4iv (gl.RasterPos4iv) #undef glRasterPos4sv #define glRasterPos4sv (gl.RasterPos4sv) #undef glRectd #define glRectd (gl.Rectd) #undef glRectf #define glRectf (gl.Rectf) #undef glRecti #define glRecti (gl.Recti) #undef glRects #define glRects (gl.Rects) #undef glRectdv #define glRectdv (gl.Rectdv) #undef glRectfv #define glRectfv (gl.Rectfv) #undef glRectiv #define glRectiv (gl.Rectiv) #undef glRectsv #define glRectsv (gl.Rectsv) #undef glVertexPointer #define glVertexPointer (gl.VertexPointer) #undef glNormalPointer #define glNormalPointer (gl.NormalPointer) #undef glColorPointer #define glColorPointer (gl.ColorPointer) #undef glIndexPointer #define glIndexPointer (gl.IndexPointer) #undef glTexCoordPointer #define glTexCoordPointer (gl.TexCoordPointer) #undef glEdgeFlagPointer #define glEdgeFlagPointer (gl.EdgeFlagPointer) #undef glGetPointerv #define glGetPointerv (gl.GetPointerv) #undef glArrayElement #define glArrayElement (gl.ArrayElement) #undef glDrawArrays #define glDrawArrays (gl.DrawArrays) #undef glDrawElements #define glDrawElements (gl.DrawElements) #undef glInterleavedArrays #define glInterleavedArrays (gl.InterleavedArrays) #undef glShadeModel #define glShadeModel (gl.ShadeModel) #undef glLightf #define glLightf (gl.Lightf) #undef glLighti #define glLighti (gl.Lighti) #undef glLightfv #define glLightfv (gl.Lightfv) #undef glLightiv #define glLightiv (gl.Lightiv) #undef glGetLightfv #define glGetLightfv (gl.GetLightfv) #undef glGetLightiv #define glGetLightiv (gl.GetLightiv) #undef glLightModelf #define glLightModelf (gl.LightModelf) #undef glLightModeli #define glLightModeli (gl.LightModeli) #undef glLightModelfv #define glLightModelfv (gl.LightModelfv) #undef glLightModeliv #define glLightModeliv (gl.LightModeliv) #undef glMaterialf #define glMaterialf (gl.Materialf) #undef glMateriali #define glMateriali (gl.Materiali) #undef glMaterialfv #define glMaterialfv (gl.Materialfv) #undef glMaterialiv #define glMaterialiv (gl.Materialiv) #undef glGetMaterialfv #define glGetMaterialfv (gl.GetMaterialfv) #undef glGetMaterialiv #define glGetMaterialiv (gl.GetMaterialiv) #undef glColorMaterial #define glColorMaterial (gl.ColorMaterial) #undef glPixelZoom #define glPixelZoom (gl.PixelZoom) #undef glPixelStoref #define glPixelStoref (gl.PixelStoref) #undef glPixelStorei #define glPixelStorei (gl.PixelStorei) #undef glPixelTransferf #define glPixelTransferf (gl.PixelTransferf) #undef glPixelTransferi #define glPixelTransferi (gl.PixelTransferi) #undef glPixelMapfv #define glPixelMapfv (gl.PixelMapfv) #undef glPixelMapuiv #define glPixelMapuiv (gl.PixelMapuiv) #undef glPixelMapusv #define glPixelMapusv (gl.PixelMapusv) #undef glGetPixelMapfv #define glGetPixelMapfv (gl.GetPixelMapfv) #undef glGetPixelMapuiv #define glGetPixelMapuiv (gl.GetPixelMapuiv) #undef glGetPixelMapusv #define glGetPixelMapusv (gl.GetPixelMapusv) #undef glBitmap #define glBitmap (gl.Bitmap) #undef glReadPixels #define glReadPixels (gl.ReadPixels) #undef glDrawPixels #define glDrawPixels (gl.DrawPixels) #undef glCopyPixels #define glCopyPixels (gl.CopyPixels) #undef glStencilFunc #define glStencilFunc (gl.StencilFunc) #undef glStencilMask #define glStencilMask (gl.StencilMask) #undef glStencilOp #define glStencilOp (gl.StencilOp) #undef glClearStencil #define glClearStencil (gl.ClearStencil) #undef glTexGend #define glTexGend (gl.TexGend) #undef glTexGenf #define glTexGenf (gl.TexGenf) #undef glTexGeni #define glTexGeni (gl.TexGeni) #undef glTexGendv #define glTexGendv (gl.TexGendv) #undef glTexGenfv #define glTexGenfv (gl.TexGenfv) #undef glTexGeniv #define glTexGeniv (gl.TexGeniv) #undef glGetTexGendv #define glGetTexGendv (gl.GetTexGendv) #undef glGetTexGenfv #define glGetTexGenfv (gl.GetTexGenfv) #undef glGetTexGeniv #define glGetTexGeniv (gl.GetTexGeniv) #undef glTexEnvf #define glTexEnvf (gl.TexEnvf) #undef glTexEnvi #define glTexEnvi (gl.TexEnvi) #undef glTexEnvfv #define glTexEnvfv (gl.TexEnvfv) #undef glTexEnviv #define glTexEnviv (gl.TexEnviv) #undef glGetTexEnvfv #define glGetTexEnvfv (gl.GetTexEnvfv) #undef glGetTexEnviv #define glGetTexEnviv (gl.GetTexEnviv) #undef glTexParameterf #define glTexParameterf (gl.TexParameterf) #undef glTexParameteri #define glTexParameteri (gl.TexParameteri) #undef glTexParameterfv #define glTexParameterfv (gl.TexParameterfv) #undef glTexParameteriv #define glTexParameteriv (gl.TexParameteriv) #undef glGetTexParameterfv #define glGetTexParameterfv (gl.GetTexParameterfv) #undef glGetTexParameteriv #define glGetTexParameteriv (gl.GetTexParameteriv) #undef glGetTexLevelParameterfv #define glGetTexLevelParameterfv (gl.GetTexLevelParameterfv) #undef glGetTexLevelParameteriv #define glGetTexLevelParameteriv (gl.GetTexLevelParameteriv) #undef glTexImage1D #define glTexImage1D (gl.TexImage1D) #undef glTexImage2D #define glTexImage2D (gl.TexImage2D) #undef glGetTexImage #define glGetTexImage (gl.GetTexImage) #undef glGenTextures #define glGenTextures (gl.GenTextures) #undef glDeleteTextures #define glDeleteTextures (gl.DeleteTextures) #undef glBindTexture #define glBindTexture (gl.BindTexture) #undef glPrioritizeTextures #define glPrioritizeTextures (gl.PrioritizeTextures) #undef glAreTexturesResident #define glAreTexturesResident (gl.AreTexturesResident) #undef glIsTexture #define glIsTexture (gl.IsTexture) #undef glTexSubImage1D #define glTexSubImage1D (gl.TexSubImage1D) #undef glTexSubImage2D #define glTexSubImage2D (gl.TexSubImage2D) #undef glCopyTexImage1D #define glCopyTexImage1D (gl.CopyTexImage1D) #undef glCopyTexImage2D #define glCopyTexImage2D (gl.CopyTexImage2D) #undef glCopyTexSubImage1D #define glCopyTexSubImage1D (gl.CopyTexSubImage1D) #undef glCopyTexSubImage2D #define glCopyTexSubImage2D (gl.CopyTexSubImage2D) #undef glMap1d #define glMap1d (gl.Map1d) #undef glMap1f #define glMap1f (gl.Map1f) #undef glMap2d #define glMap2d (gl.Map2d) #undef glMap2f #define glMap2f (gl.Map2f) #undef glGetMapdv #define glGetMapdv (gl.GetMapdv) #undef glGetMapfv #define glGetMapfv (gl.GetMapfv) #undef glGetMapiv #define glGetMapiv (gl.GetMapiv) #undef glEvalCoord1d #define glEvalCoord1d (gl.EvalCoord1d) #undef glEvalCoord1f #define glEvalCoord1f (gl.EvalCoord1f) #undef glEvalCoord1dv #define glEvalCoord1dv (gl.EvalCoord1dv) #undef glEvalCoord1fv #define glEvalCoord1fv (gl.EvalCoord1fv) #undef glEvalCoord2d #define glEvalCoord2d (gl.EvalCoord2d) #undef glEvalCoord2f #define glEvalCoord2f (gl.EvalCoord2f) #undef glEvalCoord2dv #define glEvalCoord2dv (gl.EvalCoord2dv) #undef glEvalCoord2fv #define glEvalCoord2fv (gl.EvalCoord2fv) #undef glMapGrid1d #define glMapGrid1d (gl.MapGrid1d) #undef glMapGrid1f #define glMapGrid1f (gl.MapGrid1f) #undef glMapGrid2d #define glMapGrid2d (gl.MapGrid2d) #undef glMapGrid2f #define glMapGrid2f (gl.MapGrid2f) #undef glEvalPoint1 #define glEvalPoint1 (gl.EvalPoint1) #undef glEvalPoint2 #define glEvalPoint2 (gl.EvalPoint2) #undef glEvalMesh1 #define glEvalMesh1 (gl.EvalMesh1) #undef glEvalMesh2 #define glEvalMesh2 (gl.EvalMesh2) #undef glFogf #define glFogf (gl.Fogf) #undef glFogi #define glFogi (gl.Fogi) #undef glFogfv #define glFogfv (gl.Fogfv) #undef glFogiv #define glFogiv (gl.Fogiv) #undef glFeedbackBuffer #define glFeedbackBuffer (gl.FeedbackBuffer) #undef glPassThrough #define glPassThrough (gl.PassThrough) #undef glSelectBuffer #define glSelectBuffer (gl.SelectBuffer) #undef glInitNames #define glInitNames (gl.InitNames) #undef glLoadName #define glLoadName (gl.LoadName) #undef glPushName #define glPushName (gl.PushName) #undef glPopName #define glPopName (gl.PopName) #undef glEnableTraceMESA #define glEnableTraceMESA (gl.EnableTraceMESA) #undef glDisableTraceMESA #define glDisableTraceMESA (gl.DisableTraceMESA) #undef glNewTraceMESA #define glNewTraceMESA (gl.NewTraceMESA) #undef glEndTraceMESA #define glEndTraceMESA (gl.EndTraceMESA) #undef glTraceAssertAttribMESA #define glTraceAssertAttribMESA (gl.TraceAssertAttribMESA) #undef glTraceCommentMESA #define glTraceCommentMESA (gl.TraceCommentMESA) #undef glTraceTextureMESA #define glTraceTextureMESA (gl.TraceTextureMESA) #undef glTraceListMESA #define glTraceListMESA (gl.TraceListMESA) #undef glTracePointerMESA #define glTracePointerMESA (gl.TracePointerMESA) #undef glTracePointerRangeMESA #define glTracePointerRangeMESA (gl.TracePointerRangeMESA) #undef glBlendEquationSeparateATI #define glBlendEquationSeparateATI (gl.BlendEquationSeparateATI) #undef glBlendColor #define glBlendColor (gl.BlendColor) #undef glBlendEquation #define glBlendEquation (gl.BlendEquation) #undef glDrawRangeElements #define glDrawRangeElements (gl.DrawRangeElements) #undef glColorTable #define glColorTable (gl.ColorTable) #undef glColorTableParameterfv #define glColorTableParameterfv (gl.ColorTableParameterfv) #undef glColorTableParameteriv #define glColorTableParameteriv (gl.ColorTableParameteriv) #undef glCopyColorTable #define glCopyColorTable (gl.CopyColorTable) #undef glGetColorTable #define glGetColorTable (gl.GetColorTable) #undef glGetColorTableParameterfv #define glGetColorTableParameterfv (gl.GetColorTableParameterfv) #undef glGetColorTableParameteriv #define glGetColorTableParameteriv (gl.GetColorTableParameteriv) #undef glColorSubTable #define glColorSubTable (gl.ColorSubTable) #undef glCopyColorSubTable #define glCopyColorSubTable (gl.CopyColorSubTable) #undef glConvolutionFilter1D #define glConvolutionFilter1D (gl.ConvolutionFilter1D) #undef glConvolutionFilter2D #define glConvolutionFilter2D (gl.ConvolutionFilter2D) #undef glConvolutionParameterf #define glConvolutionParameterf (gl.ConvolutionParameterf) #undef glConvolutionParameterfv #define glConvolutionParameterfv (gl.ConvolutionParameterfv) #undef glConvolutionParameteri #define glConvolutionParameteri (gl.ConvolutionParameteri) #undef glConvolutionParameteriv #define glConvolutionParameteriv (gl.ConvolutionParameteriv) #undef glCopyConvolutionFilter1D #define glCopyConvolutionFilter1D (gl.CopyConvolutionFilter1D) #undef glCopyConvolutionFilter2D #define glCopyConvolutionFilter2D (gl.CopyConvolutionFilter2D) #undef glGetConvolutionFilter #define glGetConvolutionFilter (gl.GetConvolutionFilter) #undef glGetConvolutionParameterfv #define glGetConvolutionParameterfv (gl.GetConvolutionParameterfv) #undef glGetConvolutionParameteriv #define glGetConvolutionParameteriv (gl.GetConvolutionParameteriv) #undef glGetSeparableFilter #define glGetSeparableFilter (gl.GetSeparableFilter) #undef glSeparableFilter2D #define glSeparableFilter2D (gl.SeparableFilter2D) #undef glGetHistogram #define glGetHistogram (gl.GetHistogram) #undef glGetHistogramParameterfv #define glGetHistogramParameterfv (gl.GetHistogramParameterfv) #undef glGetHistogramParameteriv #define glGetHistogramParameteriv (gl.GetHistogramParameteriv) #undef glGetMinmax #define glGetMinmax (gl.GetMinmax) #undef glGetMinmaxParameterfv #define glGetMinmaxParameterfv (gl.GetMinmaxParameterfv) #undef glGetMinmaxParameteriv #define glGetMinmaxParameteriv (gl.GetMinmaxParameteriv) #undef glHistogram #define glHistogram (gl.Histogram) #undef glMinmax #define glMinmax (gl.Minmax) #undef glResetHistogram #define glResetHistogram (gl.ResetHistogram) #undef glResetMinmax #define glResetMinmax (gl.ResetMinmax) #undef glTexImage3D #define glTexImage3D (gl.TexImage3D) #undef glTexSubImage3D #define glTexSubImage3D (gl.TexSubImage3D) #undef glCopyTexSubImage3D #define glCopyTexSubImage3D (gl.CopyTexSubImage3D) #undef glActiveTexture #define glActiveTexture (gl.ActiveTexture) #undef glClientActiveTexture #define glClientActiveTexture (gl.ClientActiveTexture) #undef glMultiTexCoord1d #define glMultiTexCoord1d (gl.MultiTexCoord1d) #undef glMultiTexCoord1dv #define glMultiTexCoord1dv (gl.MultiTexCoord1dv) #undef glMultiTexCoord1f #define glMultiTexCoord1f (gl.MultiTexCoord1f) #undef glMultiTexCoord1fv #define glMultiTexCoord1fv (gl.MultiTexCoord1fv) #undef glMultiTexCoord1i #define glMultiTexCoord1i (gl.MultiTexCoord1i) #undef glMultiTexCoord1iv #define glMultiTexCoord1iv (gl.MultiTexCoord1iv) #undef glMultiTexCoord1s #define glMultiTexCoord1s (gl.MultiTexCoord1s) #undef glMultiTexCoord1sv #define glMultiTexCoord1sv (gl.MultiTexCoord1sv) #undef glMultiTexCoord2d #define glMultiTexCoord2d (gl.MultiTexCoord2d) #undef glMultiTexCoord2dv #define glMultiTexCoord2dv (gl.MultiTexCoord2dv) #undef glMultiTexCoord2f #define glMultiTexCoord2f (gl.MultiTexCoord2f) #undef glMultiTexCoord2fv #define glMultiTexCoord2fv (gl.MultiTexCoord2fv) #undef glMultiTexCoord2i #define glMultiTexCoord2i (gl.MultiTexCoord2i) #undef glMultiTexCoord2iv #define glMultiTexCoord2iv (gl.MultiTexCoord2iv) #undef glMultiTexCoord2s #define glMultiTexCoord2s (gl.MultiTexCoord2s) #undef glMultiTexCoord2sv #define glMultiTexCoord2sv (gl.MultiTexCoord2sv) #undef glMultiTexCoord3d #define glMultiTexCoord3d (gl.MultiTexCoord3d) #undef glMultiTexCoord3dv #define glMultiTexCoord3dv (gl.MultiTexCoord3dv) #undef glMultiTexCoord3f #define glMultiTexCoord3f (gl.MultiTexCoord3f) #undef glMultiTexCoord3fv #define glMultiTexCoord3fv (gl.MultiTexCoord3fv) #undef glMultiTexCoord3i #define glMultiTexCoord3i (gl.MultiTexCoord3i) #undef glMultiTexCoord3iv #define glMultiTexCoord3iv (gl.MultiTexCoord3iv) #undef glMultiTexCoord3s #define glMultiTexCoord3s (gl.MultiTexCoord3s) #undef glMultiTexCoord3sv #define glMultiTexCoord3sv (gl.MultiTexCoord3sv) #undef glMultiTexCoord4d #define glMultiTexCoord4d (gl.MultiTexCoord4d) #undef glMultiTexCoord4dv #define glMultiTexCoord4dv (gl.MultiTexCoord4dv) #undef glMultiTexCoord4f #define glMultiTexCoord4f (gl.MultiTexCoord4f) #undef glMultiTexCoord4fv #define glMultiTexCoord4fv (gl.MultiTexCoord4fv) #undef glMultiTexCoord4i #define glMultiTexCoord4i (gl.MultiTexCoord4i) #undef glMultiTexCoord4iv #define glMultiTexCoord4iv (gl.MultiTexCoord4iv) #undef glMultiTexCoord4s #define glMultiTexCoord4s (gl.MultiTexCoord4s) #undef glMultiTexCoord4sv #define glMultiTexCoord4sv (gl.MultiTexCoord4sv) #undef glLoadTransposeMatrixf #define glLoadTransposeMatrixf (gl.LoadTransposeMatrixf) #undef glLoadTransposeMatrixd #define glLoadTransposeMatrixd (gl.LoadTransposeMatrixd) #undef glMultTransposeMatrixf #define glMultTransposeMatrixf (gl.MultTransposeMatrixf) #undef glMultTransposeMatrixd #define glMultTransposeMatrixd (gl.MultTransposeMatrixd) #undef glSampleCoverage #define glSampleCoverage (gl.SampleCoverage) #undef glCompressedTexImage3D #define glCompressedTexImage3D (gl.CompressedTexImage3D) #undef glCompressedTexImage2D #define glCompressedTexImage2D (gl.CompressedTexImage2D) #undef glCompressedTexImage1D #define glCompressedTexImage1D (gl.CompressedTexImage1D) #undef glCompressedTexSubImage3D #define glCompressedTexSubImage3D (gl.CompressedTexSubImage3D) #undef glCompressedTexSubImage2D #define glCompressedTexSubImage2D (gl.CompressedTexSubImage2D) #undef glCompressedTexSubImage1D #define glCompressedTexSubImage1D (gl.CompressedTexSubImage1D) #undef glGetCompressedTexImage #define glGetCompressedTexImage (gl.GetCompressedTexImage) #undef glBlendFuncSeparate #define glBlendFuncSeparate (gl.BlendFuncSeparate) #undef glFogCoordf #define glFogCoordf (gl.FogCoordf) #undef glFogCoordfv #define glFogCoordfv (gl.FogCoordfv) #undef glFogCoordd #define glFogCoordd (gl.FogCoordd) #undef glFogCoorddv #define glFogCoorddv (gl.FogCoorddv) #undef glFogCoordPointer #define glFogCoordPointer (gl.FogCoordPointer) #undef glMultiDrawArrays #define glMultiDrawArrays (gl.MultiDrawArrays) #undef glMultiDrawElements #define glMultiDrawElements (gl.MultiDrawElements) #undef glPointParameterf #define glPointParameterf (gl.PointParameterf) #undef glPointParameterfv #define glPointParameterfv (gl.PointParameterfv) #undef glPointParameteri #define glPointParameteri (gl.PointParameteri) #undef glPointParameteriv #define glPointParameteriv (gl.PointParameteriv) #undef glSecondaryColor3b #define glSecondaryColor3b (gl.SecondaryColor3b) #undef glSecondaryColor3bv #define glSecondaryColor3bv (gl.SecondaryColor3bv) #undef glSecondaryColor3d #define glSecondaryColor3d (gl.SecondaryColor3d) #undef glSecondaryColor3dv #define glSecondaryColor3dv (gl.SecondaryColor3dv) #undef glSecondaryColor3f #define glSecondaryColor3f (gl.SecondaryColor3f) #undef glSecondaryColor3fv #define glSecondaryColor3fv (gl.SecondaryColor3fv) #undef glSecondaryColor3i #define glSecondaryColor3i (gl.SecondaryColor3i) #undef glSecondaryColor3iv #define glSecondaryColor3iv (gl.SecondaryColor3iv) #undef glSecondaryColor3s #define glSecondaryColor3s (gl.SecondaryColor3s) #undef glSecondaryColor3sv #define glSecondaryColor3sv (gl.SecondaryColor3sv) #undef glSecondaryColor3ub #define glSecondaryColor3ub (gl.SecondaryColor3ub) #undef glSecondaryColor3ubv #define glSecondaryColor3ubv (gl.SecondaryColor3ubv) #undef glSecondaryColor3ui #define glSecondaryColor3ui (gl.SecondaryColor3ui) #undef glSecondaryColor3uiv #define glSecondaryColor3uiv (gl.SecondaryColor3uiv) #undef glSecondaryColor3us #define glSecondaryColor3us (gl.SecondaryColor3us) #undef glSecondaryColor3usv #define glSecondaryColor3usv (gl.SecondaryColor3usv) #undef glSecondaryColorPointer #define glSecondaryColorPointer (gl.SecondaryColorPointer) #undef glWindowPos2d #define glWindowPos2d (gl.WindowPos2d) #undef glWindowPos2dv #define glWindowPos2dv (gl.WindowPos2dv) #undef glWindowPos2f #define glWindowPos2f (gl.WindowPos2f) #undef glWindowPos2fv #define glWindowPos2fv (gl.WindowPos2fv) #undef glWindowPos2i #define glWindowPos2i (gl.WindowPos2i) #undef glWindowPos2iv #define glWindowPos2iv (gl.WindowPos2iv) #undef glWindowPos2s #define glWindowPos2s (gl.WindowPos2s) #undef glWindowPos2sv #define glWindowPos2sv (gl.WindowPos2sv) #undef glWindowPos3d #define glWindowPos3d (gl.WindowPos3d) #undef glWindowPos3dv #define glWindowPos3dv (gl.WindowPos3dv) #undef glWindowPos3f #define glWindowPos3f (gl.WindowPos3f) #undef glWindowPos3fv #define glWindowPos3fv (gl.WindowPos3fv) #undef glWindowPos3i #define glWindowPos3i (gl.WindowPos3i) #undef glWindowPos3iv #define glWindowPos3iv (gl.WindowPos3iv) #undef glWindowPos3s #define glWindowPos3s (gl.WindowPos3s) #undef glWindowPos3sv #define glWindowPos3sv (gl.WindowPos3sv) #undef glGenQueries #define glGenQueries (gl.GenQueries) #undef glDeleteQueries #define glDeleteQueries (gl.DeleteQueries) #undef glIsQuery #define glIsQuery (gl.IsQuery) #undef glBeginQuery #define glBeginQuery (gl.BeginQuery) #undef glEndQuery #define glEndQuery (gl.EndQuery) #undef glGetQueryiv #define glGetQueryiv (gl.GetQueryiv) #undef glGetQueryObjectiv #define glGetQueryObjectiv (gl.GetQueryObjectiv) #undef glGetQueryObjectuiv #define glGetQueryObjectuiv (gl.GetQueryObjectuiv) #undef glBindBuffer #define glBindBuffer (gl.BindBuffer) #undef glDeleteBuffers #define glDeleteBuffers (gl.DeleteBuffers) #undef glGenBuffers #define glGenBuffers (gl.GenBuffers) #undef glIsBuffer #define glIsBuffer (gl.IsBuffer) #undef glBufferData #define glBufferData (gl.BufferData) #undef glBufferSubData #define glBufferSubData (gl.BufferSubData) #undef glGetBufferSubData #define glGetBufferSubData (gl.GetBufferSubData) #undef glMapBuffer #define glMapBuffer (gl.MapBuffer) #undef glUnmapBuffer #define glUnmapBuffer (gl.UnmapBuffer) #undef glGetBufferParameteriv #define glGetBufferParameteriv (gl.GetBufferParameteriv) #undef glGetBufferPointerv #define glGetBufferPointerv (gl.GetBufferPointerv) #undef glActiveTextureARB #define glActiveTextureARB (gl.ActiveTextureARB) #undef glClientActiveTextureARB #define glClientActiveTextureARB (gl.ClientActiveTextureARB) #undef glMultiTexCoord1dARB #define glMultiTexCoord1dARB (gl.MultiTexCoord1dARB) #undef glMultiTexCoord1dvARB #define glMultiTexCoord1dvARB (gl.MultiTexCoord1dvARB) #undef glMultiTexCoord1fARB #define glMultiTexCoord1fARB (gl.MultiTexCoord1fARB) #undef glMultiTexCoord1fvARB #define glMultiTexCoord1fvARB (gl.MultiTexCoord1fvARB) #undef glMultiTexCoord1iARB #define glMultiTexCoord1iARB (gl.MultiTexCoord1iARB) #undef glMultiTexCoord1ivARB #define glMultiTexCoord1ivARB (gl.MultiTexCoord1ivARB) #undef glMultiTexCoord1sARB #define glMultiTexCoord1sARB (gl.MultiTexCoord1sARB) #undef glMultiTexCoord1svARB #define glMultiTexCoord1svARB (gl.MultiTexCoord1svARB) #undef glMultiTexCoord2dARB #define glMultiTexCoord2dARB (gl.MultiTexCoord2dARB) #undef glMultiTexCoord2dvARB #define glMultiTexCoord2dvARB (gl.MultiTexCoord2dvARB) #undef glMultiTexCoord2fARB #define glMultiTexCoord2fARB (gl.MultiTexCoord2fARB) #undef glMultiTexCoord2fvARB #define glMultiTexCoord2fvARB (gl.MultiTexCoord2fvARB) #undef glMultiTexCoord2iARB #define glMultiTexCoord2iARB (gl.MultiTexCoord2iARB) #undef glMultiTexCoord2ivARB #define glMultiTexCoord2ivARB (gl.MultiTexCoord2ivARB) #undef glMultiTexCoord2sARB #define glMultiTexCoord2sARB (gl.MultiTexCoord2sARB) #undef glMultiTexCoord2svARB #define glMultiTexCoord2svARB (gl.MultiTexCoord2svARB) #undef glMultiTexCoord3dARB #define glMultiTexCoord3dARB (gl.MultiTexCoord3dARB) #undef glMultiTexCoord3dvARB #define glMultiTexCoord3dvARB (gl.MultiTexCoord3dvARB) #undef glMultiTexCoord3fARB #define glMultiTexCoord3fARB (gl.MultiTexCoord3fARB) #undef glMultiTexCoord3fvARB #define glMultiTexCoord3fvARB (gl.MultiTexCoord3fvARB) #undef glMultiTexCoord3iARB #define glMultiTexCoord3iARB (gl.MultiTexCoord3iARB) #undef glMultiTexCoord3ivARB #define glMultiTexCoord3ivARB (gl.MultiTexCoord3ivARB) #undef glMultiTexCoord3sARB #define glMultiTexCoord3sARB (gl.MultiTexCoord3sARB) #undef glMultiTexCoord3svARB #define glMultiTexCoord3svARB (gl.MultiTexCoord3svARB) #undef glMultiTexCoord4dARB #define glMultiTexCoord4dARB (gl.MultiTexCoord4dARB) #undef glMultiTexCoord4dvARB #define glMultiTexCoord4dvARB (gl.MultiTexCoord4dvARB) #undef glMultiTexCoord4fARB #define glMultiTexCoord4fARB (gl.MultiTexCoord4fARB) #undef glMultiTexCoord4fvARB #define glMultiTexCoord4fvARB (gl.MultiTexCoord4fvARB) #undef glMultiTexCoord4iARB #define glMultiTexCoord4iARB (gl.MultiTexCoord4iARB) #undef glMultiTexCoord4ivARB #define glMultiTexCoord4ivARB (gl.MultiTexCoord4ivARB) #undef glMultiTexCoord4sARB #define glMultiTexCoord4sARB (gl.MultiTexCoord4sARB) #undef glMultiTexCoord4svARB #define glMultiTexCoord4svARB (gl.MultiTexCoord4svARB) #undef glLoadTransposeMatrixfARB #define glLoadTransposeMatrixfARB (gl.LoadTransposeMatrixfARB) #undef glLoadTransposeMatrixdARB #define glLoadTransposeMatrixdARB (gl.LoadTransposeMatrixdARB) #undef glMultTransposeMatrixfARB #define glMultTransposeMatrixfARB (gl.MultTransposeMatrixfARB) #undef glMultTransposeMatrixdARB #define glMultTransposeMatrixdARB (gl.MultTransposeMatrixdARB) #undef glSampleCoverageARB #define glSampleCoverageARB (gl.SampleCoverageARB) #undef glCompressedTexImage3DARB #define glCompressedTexImage3DARB (gl.CompressedTexImage3DARB) #undef glCompressedTexImage2DARB #define glCompressedTexImage2DARB (gl.CompressedTexImage2DARB) #undef glCompressedTexImage1DARB #define glCompressedTexImage1DARB (gl.CompressedTexImage1DARB) #undef glCompressedTexSubImage3DARB #define glCompressedTexSubImage3DARB (gl.CompressedTexSubImage3DARB) #undef glCompressedTexSubImage2DARB #define glCompressedTexSubImage2DARB (gl.CompressedTexSubImage2DARB) #undef glCompressedTexSubImage1DARB #define glCompressedTexSubImage1DARB (gl.CompressedTexSubImage1DARB) #undef glGetCompressedTexImageARB #define glGetCompressedTexImageARB (gl.GetCompressedTexImageARB) #undef glPointParameterfARB #define glPointParameterfARB (gl.PointParameterfARB) #undef glPointParameterfvARB #define glPointParameterfvARB (gl.PointParameterfvARB) #undef glWeightbvARB #define glWeightbvARB (gl.WeightbvARB) #undef glWeightsvARB #define glWeightsvARB (gl.WeightsvARB) #undef glWeightivARB #define glWeightivARB (gl.WeightivARB) #undef glWeightfvARB #define glWeightfvARB (gl.WeightfvARB) #undef glWeightdvARB #define glWeightdvARB (gl.WeightdvARB) #undef glWeightubvARB #define glWeightubvARB (gl.WeightubvARB) #undef glWeightusvARB #define glWeightusvARB (gl.WeightusvARB) #undef glWeightuivARB #define glWeightuivARB (gl.WeightuivARB) #undef glWeightPointerARB #define glWeightPointerARB (gl.WeightPointerARB) #undef glVertexBlendARB #define glVertexBlendARB (gl.VertexBlendARB) #undef glCurrentPaletteMatrixARB #define glCurrentPaletteMatrixARB (gl.CurrentPaletteMatrixARB) #undef glMatrixIndexubvARB #define glMatrixIndexubvARB (gl.MatrixIndexubvARB) #undef glMatrixIndexusvARB #define glMatrixIndexusvARB (gl.MatrixIndexusvARB) #undef glMatrixIndexuivARB #define glMatrixIndexuivARB (gl.MatrixIndexuivARB) #undef glMatrixIndexPointerARB #define glMatrixIndexPointerARB (gl.MatrixIndexPointerARB) #undef glWindowPos2dARB #define glWindowPos2dARB (gl.WindowPos2dARB) #undef glWindowPos2dvARB #define glWindowPos2dvARB (gl.WindowPos2dvARB) #undef glWindowPos2fARB #define glWindowPos2fARB (gl.WindowPos2fARB) #undef glWindowPos2fvARB #define glWindowPos2fvARB (gl.WindowPos2fvARB) #undef glWindowPos2iARB #define glWindowPos2iARB (gl.WindowPos2iARB) #undef glWindowPos2ivARB #define glWindowPos2ivARB (gl.WindowPos2ivARB) #undef glWindowPos2sARB #define glWindowPos2sARB (gl.WindowPos2sARB) #undef glWindowPos2svARB #define glWindowPos2svARB (gl.WindowPos2svARB) #undef glWindowPos3dARB #define glWindowPos3dARB (gl.WindowPos3dARB) #undef glWindowPos3dvARB #define glWindowPos3dvARB (gl.WindowPos3dvARB) #undef glWindowPos3fARB #define glWindowPos3fARB (gl.WindowPos3fARB) #undef glWindowPos3fvARB #define glWindowPos3fvARB (gl.WindowPos3fvARB) #undef glWindowPos3iARB #define glWindowPos3iARB (gl.WindowPos3iARB) #undef glWindowPos3ivARB #define glWindowPos3ivARB (gl.WindowPos3ivARB) #undef glWindowPos3sARB #define glWindowPos3sARB (gl.WindowPos3sARB) #undef glWindowPos3svARB #define glWindowPos3svARB (gl.WindowPos3svARB) #undef glVertexAttrib1dARB #define glVertexAttrib1dARB (gl.VertexAttrib1dARB) #undef glVertexAttrib1dvARB #define glVertexAttrib1dvARB (gl.VertexAttrib1dvARB) #undef glVertexAttrib1fARB #define glVertexAttrib1fARB (gl.VertexAttrib1fARB) #undef glVertexAttrib1fvARB #define glVertexAttrib1fvARB (gl.VertexAttrib1fvARB) #undef glVertexAttrib1sARB #define glVertexAttrib1sARB (gl.VertexAttrib1sARB) #undef glVertexAttrib1svARB #define glVertexAttrib1svARB (gl.VertexAttrib1svARB) #undef glVertexAttrib2dARB #define glVertexAttrib2dARB (gl.VertexAttrib2dARB) #undef glVertexAttrib2dvARB #define glVertexAttrib2dvARB (gl.VertexAttrib2dvARB) #undef glVertexAttrib2fARB #define glVertexAttrib2fARB (gl.VertexAttrib2fARB) #undef glVertexAttrib2fvARB #define glVertexAttrib2fvARB (gl.VertexAttrib2fvARB) #undef glVertexAttrib2sARB #define glVertexAttrib2sARB (gl.VertexAttrib2sARB) #undef glVertexAttrib2svARB #define glVertexAttrib2svARB (gl.VertexAttrib2svARB) #undef glVertexAttrib3dARB #define glVertexAttrib3dARB (gl.VertexAttrib3dARB) #undef glVertexAttrib3dvARB #define glVertexAttrib3dvARB (gl.VertexAttrib3dvARB) #undef glVertexAttrib3fARB #define glVertexAttrib3fARB (gl.VertexAttrib3fARB) #undef glVertexAttrib3fvARB #define glVertexAttrib3fvARB (gl.VertexAttrib3fvARB) #undef glVertexAttrib3sARB #define glVertexAttrib3sARB (gl.VertexAttrib3sARB) #undef glVertexAttrib3svARB #define glVertexAttrib3svARB (gl.VertexAttrib3svARB) #undef glVertexAttrib4NbvARB #define glVertexAttrib4NbvARB (gl.VertexAttrib4NbvARB) #undef glVertexAttrib4NivARB #define glVertexAttrib4NivARB (gl.VertexAttrib4NivARB) #undef glVertexAttrib4NsvARB #define glVertexAttrib4NsvARB (gl.VertexAttrib4NsvARB) #undef glVertexAttrib4NubARB #define glVertexAttrib4NubARB (gl.VertexAttrib4NubARB) #undef glVertexAttrib4NubvARB #define glVertexAttrib4NubvARB (gl.VertexAttrib4NubvARB) #undef glVertexAttrib4NuivARB #define glVertexAttrib4NuivARB (gl.VertexAttrib4NuivARB) #undef glVertexAttrib4NusvARB #define glVertexAttrib4NusvARB (gl.VertexAttrib4NusvARB) #undef glVertexAttrib4bvARB #define glVertexAttrib4bvARB (gl.VertexAttrib4bvARB) #undef glVertexAttrib4dARB #define glVertexAttrib4dARB (gl.VertexAttrib4dARB) #undef glVertexAttrib4dvARB #define glVertexAttrib4dvARB (gl.VertexAttrib4dvARB) #undef glVertexAttrib4fARB #define glVertexAttrib4fARB (gl.VertexAttrib4fARB) #undef glVertexAttrib4fvARB #define glVertexAttrib4fvARB (gl.VertexAttrib4fvARB) #undef glVertexAttrib4ivARB #define glVertexAttrib4ivARB (gl.VertexAttrib4ivARB) #undef glVertexAttrib4sARB #define glVertexAttrib4sARB (gl.VertexAttrib4sARB) #undef glVertexAttrib4svARB #define glVertexAttrib4svARB (gl.VertexAttrib4svARB) #undef glVertexAttrib4ubvARB #define glVertexAttrib4ubvARB (gl.VertexAttrib4ubvARB) #undef glVertexAttrib4uivARB #define glVertexAttrib4uivARB (gl.VertexAttrib4uivARB) #undef glVertexAttrib4usvARB #define glVertexAttrib4usvARB (gl.VertexAttrib4usvARB) #undef glVertexAttribPointerARB #define glVertexAttribPointerARB (gl.VertexAttribPointerARB) #undef glEnableVertexAttribArrayARB #define glEnableVertexAttribArrayARB (gl.EnableVertexAttribArrayARB) #undef glDisableVertexAttribArrayARB #define glDisableVertexAttribArrayARB (gl.DisableVertexAttribArrayARB) #undef glProgramStringARB #define glProgramStringARB (gl.ProgramStringARB) #undef glBindProgramARB #define glBindProgramARB (gl.BindProgramARB) #undef glDeleteProgramsARB #define glDeleteProgramsARB (gl.DeleteProgramsARB) #undef glGenProgramsARB #define glGenProgramsARB (gl.GenProgramsARB) #undef glProgramEnvParameter4dARB #define glProgramEnvParameter4dARB (gl.ProgramEnvParameter4dARB) #undef glProgramEnvParameter4dvARB #define glProgramEnvParameter4dvARB (gl.ProgramEnvParameter4dvARB) #undef glProgramEnvParameter4fARB #define glProgramEnvParameter4fARB (gl.ProgramEnvParameter4fARB) #undef glProgramEnvParameter4fvARB #define glProgramEnvParameter4fvARB (gl.ProgramEnvParameter4fvARB) #undef glProgramLocalParameter4dARB #define glProgramLocalParameter4dARB (gl.ProgramLocalParameter4dARB) #undef glProgramLocalParameter4dvARB #define glProgramLocalParameter4dvARB (gl.ProgramLocalParameter4dvARB) #undef glProgramLocalParameter4fARB #define glProgramLocalParameter4fARB (gl.ProgramLocalParameter4fARB) #undef glProgramLocalParameter4fvARB #define glProgramLocalParameter4fvARB (gl.ProgramLocalParameter4fvARB) #undef glGetProgramEnvParameterdvARB #define glGetProgramEnvParameterdvARB (gl.GetProgramEnvParameterdvARB) #undef glGetProgramEnvParameterfvARB #define glGetProgramEnvParameterfvARB (gl.GetProgramEnvParameterfvARB) #undef glGetProgramLocalParameterdvARB #define glGetProgramLocalParameterdvARB (gl.GetProgramLocalParameterdvARB) #undef glGetProgramLocalParameterfvARB #define glGetProgramLocalParameterfvARB (gl.GetProgramLocalParameterfvARB) #undef glGetProgramivARB #define glGetProgramivARB (gl.GetProgramivARB) #undef glGetProgramStringARB #define glGetProgramStringARB (gl.GetProgramStringARB) #undef glGetVertexAttribdvARB #define glGetVertexAttribdvARB (gl.GetVertexAttribdvARB) #undef glGetVertexAttribfvARB #define glGetVertexAttribfvARB (gl.GetVertexAttribfvARB) #undef glGetVertexAttribivARB #define glGetVertexAttribivARB (gl.GetVertexAttribivARB) #undef glGetVertexAttribPointervARB #define glGetVertexAttribPointervARB (gl.GetVertexAttribPointervARB) #undef glIsProgramARB #define glIsProgramARB (gl.IsProgramARB) #undef glBindBufferARB #define glBindBufferARB (gl.BindBufferARB) #undef glDeleteBuffersARB #define glDeleteBuffersARB (gl.DeleteBuffersARB) #undef glGenBuffersARB #define glGenBuffersARB (gl.GenBuffersARB) #undef glIsBufferARB #define glIsBufferARB (gl.IsBufferARB) #undef glBufferDataARB #define glBufferDataARB (gl.BufferDataARB) #undef glBufferSubDataARB #define glBufferSubDataARB (gl.BufferSubDataARB) #undef glGetBufferSubDataARB #define glGetBufferSubDataARB (gl.GetBufferSubDataARB) #undef glMapBufferARB #define glMapBufferARB (gl.MapBufferARB) #undef glUnmapBufferARB #define glUnmapBufferARB (gl.UnmapBufferARB) #undef glGetBufferParameterivARB #define glGetBufferParameterivARB (gl.GetBufferParameterivARB) #undef glGetBufferPointervARB #define glGetBufferPointervARB (gl.GetBufferPointervARB) #undef glGenQueriesARB #define glGenQueriesARB (gl.GenQueriesARB) #undef glDeleteQueriesARB #define glDeleteQueriesARB (gl.DeleteQueriesARB) #undef glIsQueryARB #define glIsQueryARB (gl.IsQueryARB) #undef glBeginQueryARB #define glBeginQueryARB (gl.BeginQueryARB) #undef glEndQueryARB #define glEndQueryARB (gl.EndQueryARB) #undef glGetQueryivARB #define glGetQueryivARB (gl.GetQueryivARB) #undef glGetQueryObjectivARB #define glGetQueryObjectivARB (gl.GetQueryObjectivARB) #undef glGetQueryObjectuivARB #define glGetQueryObjectuivARB (gl.GetQueryObjectuivARB) #undef glDeleteObjectARB #define glDeleteObjectARB (gl.DeleteObjectARB) #undef glGetHandleARB #define glGetHandleARB (gl.GetHandleARB) #undef glDetachObjectARB #define glDetachObjectARB (gl.DetachObjectARB) #undef glCreateShaderObjectARB #define glCreateShaderObjectARB (gl.CreateShaderObjectARB) #undef glShaderSourceARB #define glShaderSourceARB (gl.ShaderSourceARB) #undef glCompileShaderARB #define glCompileShaderARB (gl.CompileShaderARB) #undef glCreateProgramObjectARB #define glCreateProgramObjectARB (gl.CreateProgramObjectARB) #undef glAttachObjectARB #define glAttachObjectARB (gl.AttachObjectARB) #undef glLinkProgramARB #define glLinkProgramARB (gl.LinkProgramARB) #undef glUseProgramObjectARB #define glUseProgramObjectARB (gl.UseProgramObjectARB) #undef glValidateProgramARB #define glValidateProgramARB (gl.ValidateProgramARB) #undef glUniform1fARB #define glUniform1fARB (gl.Uniform1fARB) #undef glUniform2fARB #define glUniform2fARB (gl.Uniform2fARB) #undef glUniform3fARB #define glUniform3fARB (gl.Uniform3fARB) #undef glUniform4fARB #define glUniform4fARB (gl.Uniform4fARB) #undef glUniform1iARB #define glUniform1iARB (gl.Uniform1iARB) #undef glUniform2iARB #define glUniform2iARB (gl.Uniform2iARB) #undef glUniform3iARB #define glUniform3iARB (gl.Uniform3iARB) #undef glUniform4iARB #define glUniform4iARB (gl.Uniform4iARB) #undef glUniform1fvARB #define glUniform1fvARB (gl.Uniform1fvARB) #undef glUniform2fvARB #define glUniform2fvARB (gl.Uniform2fvARB) #undef glUniform3fvARB #define glUniform3fvARB (gl.Uniform3fvARB) #undef glUniform4fvARB #define glUniform4fvARB (gl.Uniform4fvARB) #undef glUniform1ivARB #define glUniform1ivARB (gl.Uniform1ivARB) #undef glUniform2ivARB #define glUniform2ivARB (gl.Uniform2ivARB) #undef glUniform3ivARB #define glUniform3ivARB (gl.Uniform3ivARB) #undef glUniform4ivARB #define glUniform4ivARB (gl.Uniform4ivARB) #undef glUniformMatrix2fvARB #define glUniformMatrix2fvARB (gl.UniformMatrix2fvARB) #undef glUniformMatrix3fvARB #define glUniformMatrix3fvARB (gl.UniformMatrix3fvARB) #undef glUniformMatrix4fvARB #define glUniformMatrix4fvARB (gl.UniformMatrix4fvARB) #undef glGetObjectParameterfvARB #define glGetObjectParameterfvARB (gl.GetObjectParameterfvARB) #undef glGetObjectParameterivARB #define glGetObjectParameterivARB (gl.GetObjectParameterivARB) #undef glGetInfoLogARB #define glGetInfoLogARB (gl.GetInfoLogARB) #undef glGetAttachedObjectsARB #define glGetAttachedObjectsARB (gl.GetAttachedObjectsARB) #undef glGetUniformLocationARB #define glGetUniformLocationARB (gl.GetUniformLocationARB) #undef glGetActiveUniformARB #define glGetActiveUniformARB (gl.GetActiveUniformARB) #undef glGetUniformfvARB #define glGetUniformfvARB (gl.GetUniformfvARB) #undef glGetUniformivARB #define glGetUniformivARB (gl.GetUniformivARB) #undef glGetShaderSourceARB #define glGetShaderSourceARB (gl.GetShaderSourceARB) #undef glBindAttribLocationARB #define glBindAttribLocationARB (gl.BindAttribLocationARB) #undef glGetActiveAttribARB #define glGetActiveAttribARB (gl.GetActiveAttribARB) #undef glGetAttribLocationARB #define glGetAttribLocationARB (gl.GetAttribLocationARB) #undef glDrawBuffersARB #define glDrawBuffersARB (gl.DrawBuffersARB) #undef glBlendColorEXT #define glBlendColorEXT (gl.BlendColorEXT) #undef glPolygonOffsetEXT #define glPolygonOffsetEXT (gl.PolygonOffsetEXT) #undef glTexImage3DEXT #define glTexImage3DEXT (gl.TexImage3DEXT) #undef glTexSubImage3DEXT #define glTexSubImage3DEXT (gl.TexSubImage3DEXT) #undef glGetTexFilterFuncSGIS #define glGetTexFilterFuncSGIS (gl.GetTexFilterFuncSGIS) #undef glTexFilterFuncSGIS #define glTexFilterFuncSGIS (gl.TexFilterFuncSGIS) #undef glTexSubImage1DEXT #define glTexSubImage1DEXT (gl.TexSubImage1DEXT) #undef glTexSubImage2DEXT #define glTexSubImage2DEXT (gl.TexSubImage2DEXT) #undef glCopyTexImage1DEXT #define glCopyTexImage1DEXT (gl.CopyTexImage1DEXT) #undef glCopyTexImage2DEXT #define glCopyTexImage2DEXT (gl.CopyTexImage2DEXT) #undef glCopyTexSubImage1DEXT #define glCopyTexSubImage1DEXT (gl.CopyTexSubImage1DEXT) #undef glCopyTexSubImage2DEXT #define glCopyTexSubImage2DEXT (gl.CopyTexSubImage2DEXT) #undef glCopyTexSubImage3DEXT #define glCopyTexSubImage3DEXT (gl.CopyTexSubImage3DEXT) #undef glGetHistogramEXT #define glGetHistogramEXT (gl.GetHistogramEXT) #undef glGetHistogramParameterfvEXT #define glGetHistogramParameterfvEXT (gl.GetHistogramParameterfvEXT) #undef glGetHistogramParameterivEXT #define glGetHistogramParameterivEXT (gl.GetHistogramParameterivEXT) #undef glGetMinmaxEXT #define glGetMinmaxEXT (gl.GetMinmaxEXT) #undef glGetMinmaxParameterfvEXT #define glGetMinmaxParameterfvEXT (gl.GetMinmaxParameterfvEXT) #undef glGetMinmaxParameterivEXT #define glGetMinmaxParameterivEXT (gl.GetMinmaxParameterivEXT) #undef glHistogramEXT #define glHistogramEXT (gl.HistogramEXT) #undef glMinmaxEXT #define glMinmaxEXT (gl.MinmaxEXT) #undef glResetHistogramEXT #define glResetHistogramEXT (gl.ResetHistogramEXT) #undef glResetMinmaxEXT #define glResetMinmaxEXT (gl.ResetMinmaxEXT) #undef glConvolutionFilter1DEXT #define glConvolutionFilter1DEXT (gl.ConvolutionFilter1DEXT) #undef glConvolutionFilter2DEXT #define glConvolutionFilter2DEXT (gl.ConvolutionFilter2DEXT) #undef glConvolutionParameterfEXT #define glConvolutionParameterfEXT (gl.ConvolutionParameterfEXT) #undef glConvolutionParameterfvEXT #define glConvolutionParameterfvEXT (gl.ConvolutionParameterfvEXT) #undef glConvolutionParameteriEXT #define glConvolutionParameteriEXT (gl.ConvolutionParameteriEXT) #undef glConvolutionParameterivEXT #define glConvolutionParameterivEXT (gl.ConvolutionParameterivEXT) #undef glCopyConvolutionFilter1DEXT #define glCopyConvolutionFilter1DEXT (gl.CopyConvolutionFilter1DEXT) #undef glCopyConvolutionFilter2DEXT #define glCopyConvolutionFilter2DEXT (gl.CopyConvolutionFilter2DEXT) #undef glGetConvolutionFilterEXT #define glGetConvolutionFilterEXT (gl.GetConvolutionFilterEXT) #undef glGetConvolutionParameterfvEXT #define glGetConvolutionParameterfvEXT (gl.GetConvolutionParameterfvEXT) #undef glGetConvolutionParameterivEXT #define glGetConvolutionParameterivEXT (gl.GetConvolutionParameterivEXT) #undef glGetSeparableFilterEXT #define glGetSeparableFilterEXT (gl.GetSeparableFilterEXT) #undef glSeparableFilter2DEXT #define glSeparableFilter2DEXT (gl.SeparableFilter2DEXT) #undef glColorTableSGI #define glColorTableSGI (gl.ColorTableSGI) #undef glColorTableParameterfvSGI #define glColorTableParameterfvSGI (gl.ColorTableParameterfvSGI) #undef glColorTableParameterivSGI #define glColorTableParameterivSGI (gl.ColorTableParameterivSGI) #undef glCopyColorTableSGI #define glCopyColorTableSGI (gl.CopyColorTableSGI) #undef glGetColorTableSGI #define glGetColorTableSGI (gl.GetColorTableSGI) #undef glGetColorTableParameterfvSGI #define glGetColorTableParameterfvSGI (gl.GetColorTableParameterfvSGI) #undef glGetColorTableParameterivSGI #define glGetColorTableParameterivSGI (gl.GetColorTableParameterivSGI) #undef glPixelTexGenSGIX #define glPixelTexGenSGIX (gl.PixelTexGenSGIX) #undef glPixelTexGenParameteriSGIS #define glPixelTexGenParameteriSGIS (gl.PixelTexGenParameteriSGIS) #undef glPixelTexGenParameterivSGIS #define glPixelTexGenParameterivSGIS (gl.PixelTexGenParameterivSGIS) #undef glPixelTexGenParameterfSGIS #define glPixelTexGenParameterfSGIS (gl.PixelTexGenParameterfSGIS) #undef glPixelTexGenParameterfvSGIS #define glPixelTexGenParameterfvSGIS (gl.PixelTexGenParameterfvSGIS) #undef glGetPixelTexGenParameterivSGIS #define glGetPixelTexGenParameterivSGIS (gl.GetPixelTexGenParameterivSGIS) #undef glGetPixelTexGenParameterfvSGIS #define glGetPixelTexGenParameterfvSGIS (gl.GetPixelTexGenParameterfvSGIS) #undef glTexImage4DSGIS #define glTexImage4DSGIS (gl.TexImage4DSGIS) #undef glTexSubImage4DSGIS #define glTexSubImage4DSGIS (gl.TexSubImage4DSGIS) #undef glAreTexturesResidentEXT #define glAreTexturesResidentEXT (gl.AreTexturesResidentEXT) #undef glBindTextureEXT #define glBindTextureEXT (gl.BindTextureEXT) #undef glDeleteTexturesEXT #define glDeleteTexturesEXT (gl.DeleteTexturesEXT) #undef glGenTexturesEXT #define glGenTexturesEXT (gl.GenTexturesEXT) #undef glIsTextureEXT #define glIsTextureEXT (gl.IsTextureEXT) #undef glPrioritizeTexturesEXT #define glPrioritizeTexturesEXT (gl.PrioritizeTexturesEXT) #undef glDetailTexFuncSGIS #define glDetailTexFuncSGIS (gl.DetailTexFuncSGIS) #undef glGetDetailTexFuncSGIS #define glGetDetailTexFuncSGIS (gl.GetDetailTexFuncSGIS) #undef glSharpenTexFuncSGIS #define glSharpenTexFuncSGIS (gl.SharpenTexFuncSGIS) #undef glGetSharpenTexFuncSGIS #define glGetSharpenTexFuncSGIS (gl.GetSharpenTexFuncSGIS) #undef glSampleMaskSGIS #define glSampleMaskSGIS (gl.SampleMaskSGIS) #undef glSamplePatternSGIS #define glSamplePatternSGIS (gl.SamplePatternSGIS) #undef glArrayElementEXT #define glArrayElementEXT (gl.ArrayElementEXT) #undef glColorPointerEXT #define glColorPointerEXT (gl.ColorPointerEXT) #undef glDrawArraysEXT #define glDrawArraysEXT (gl.DrawArraysEXT) #undef glEdgeFlagPointerEXT #define glEdgeFlagPointerEXT (gl.EdgeFlagPointerEXT) #undef glGetPointervEXT #define glGetPointervEXT (gl.GetPointervEXT) #undef glIndexPointerEXT #define glIndexPointerEXT (gl.IndexPointerEXT) #undef glNormalPointerEXT #define glNormalPointerEXT (gl.NormalPointerEXT) #undef glTexCoordPointerEXT #define glTexCoordPointerEXT (gl.TexCoordPointerEXT) #undef glVertexPointerEXT #define glVertexPointerEXT (gl.VertexPointerEXT) #undef glBlendEquationEXT #define glBlendEquationEXT (gl.BlendEquationEXT) #undef glSpriteParameterfSGIX #define glSpriteParameterfSGIX (gl.SpriteParameterfSGIX) #undef glSpriteParameterfvSGIX #define glSpriteParameterfvSGIX (gl.SpriteParameterfvSGIX) #undef glSpriteParameteriSGIX #define glSpriteParameteriSGIX (gl.SpriteParameteriSGIX) #undef glSpriteParameterivSGIX #define glSpriteParameterivSGIX (gl.SpriteParameterivSGIX) #undef glPointParameterfEXT #define glPointParameterfEXT (gl.PointParameterfEXT) #undef glPointParameterfvEXT #define glPointParameterfvEXT (gl.PointParameterfvEXT) #undef glPointParameterfSGIS #define glPointParameterfSGIS (gl.PointParameterfSGIS) #undef glPointParameterfvSGIS #define glPointParameterfvSGIS (gl.PointParameterfvSGIS) #undef glGetInstrumentsSGIX #define glGetInstrumentsSGIX (gl.GetInstrumentsSGIX) #undef glInstrumentsBufferSGIX #define glInstrumentsBufferSGIX (gl.InstrumentsBufferSGIX) #undef glPollInstrumentsSGIX #define glPollInstrumentsSGIX (gl.PollInstrumentsSGIX) #undef glReadInstrumentsSGIX #define glReadInstrumentsSGIX (gl.ReadInstrumentsSGIX) #undef glStartInstrumentsSGIX #define glStartInstrumentsSGIX (gl.StartInstrumentsSGIX) #undef glStopInstrumentsSGIX #define glStopInstrumentsSGIX (gl.StopInstrumentsSGIX) #undef glFrameZoomSGIX #define glFrameZoomSGIX (gl.FrameZoomSGIX) #undef glTagSampleBufferSGIX #define glTagSampleBufferSGIX (gl.TagSampleBufferSGIX) #undef glDeformationMap3dSGIX #define glDeformationMap3dSGIX (gl.DeformationMap3dSGIX) #undef glDeformationMap3fSGIX #define glDeformationMap3fSGIX (gl.DeformationMap3fSGIX) #undef glDeformSGIX #define glDeformSGIX (gl.DeformSGIX) #undef glLoadIdentityDeformationMapSGIX #define glLoadIdentityDeformationMapSGIX (gl.LoadIdentityDeformationMapSGIX) #undef glReferencePlaneSGIX #define glReferencePlaneSGIX (gl.ReferencePlaneSGIX) #undef glFlushRasterSGIX #define glFlushRasterSGIX (gl.FlushRasterSGIX) #undef glFogFuncSGIS #define glFogFuncSGIS (gl.FogFuncSGIS) #undef glGetFogFuncSGIS #define glGetFogFuncSGIS (gl.GetFogFuncSGIS) #undef glImageTransformParameteriHP #define glImageTransformParameteriHP (gl.ImageTransformParameteriHP) #undef glImageTransformParameterfHP #define glImageTransformParameterfHP (gl.ImageTransformParameterfHP) #undef glImageTransformParameterivHP #define glImageTransformParameterivHP (gl.ImageTransformParameterivHP) #undef glImageTransformParameterfvHP #define glImageTransformParameterfvHP (gl.ImageTransformParameterfvHP) #undef glGetImageTransformParameterivHP #define glGetImageTransformParameterivHP (gl.GetImageTransformParameterivHP) #undef glGetImageTransformParameterfvHP #define glGetImageTransformParameterfvHP (gl.GetImageTransformParameterfvHP) #undef glColorSubTableEXT #define glColorSubTableEXT (gl.ColorSubTableEXT) #undef glCopyColorSubTableEXT #define glCopyColorSubTableEXT (gl.CopyColorSubTableEXT) #undef glHintPGI #define glHintPGI (gl.HintPGI) #undef glColorTableEXT #define glColorTableEXT (gl.ColorTableEXT) #undef glGetColorTableEXT #define glGetColorTableEXT (gl.GetColorTableEXT) #undef glGetColorTableParameterivEXT #define glGetColorTableParameterivEXT (gl.GetColorTableParameterivEXT) #undef glGetColorTableParameterfvEXT #define glGetColorTableParameterfvEXT (gl.GetColorTableParameterfvEXT) #undef glGetListParameterfvSGIX #define glGetListParameterfvSGIX (gl.GetListParameterfvSGIX) #undef glGetListParameterivSGIX #define glGetListParameterivSGIX (gl.GetListParameterivSGIX) #undef glListParameterfSGIX #define glListParameterfSGIX (gl.ListParameterfSGIX) #undef glListParameterfvSGIX #define glListParameterfvSGIX (gl.ListParameterfvSGIX) #undef glListParameteriSGIX #define glListParameteriSGIX (gl.ListParameteriSGIX) #undef glListParameterivSGIX #define glListParameterivSGIX (gl.ListParameterivSGIX) #undef glIndexMaterialEXT #define glIndexMaterialEXT (gl.IndexMaterialEXT) #undef glIndexFuncEXT #define glIndexFuncEXT (gl.IndexFuncEXT) #undef glLockArraysEXT #define glLockArraysEXT (gl.LockArraysEXT) #undef glUnlockArraysEXT #define glUnlockArraysEXT (gl.UnlockArraysEXT) #undef glCullParameterdvEXT #define glCullParameterdvEXT (gl.CullParameterdvEXT) #undef glCullParameterfvEXT #define glCullParameterfvEXT (gl.CullParameterfvEXT) #undef glFragmentColorMaterialSGIX #define glFragmentColorMaterialSGIX (gl.FragmentColorMaterialSGIX) #undef glFragmentLightfSGIX #define glFragmentLightfSGIX (gl.FragmentLightfSGIX) #undef glFragmentLightfvSGIX #define glFragmentLightfvSGIX (gl.FragmentLightfvSGIX) #undef glFragmentLightiSGIX #define glFragmentLightiSGIX (gl.FragmentLightiSGIX) #undef glFragmentLightivSGIX #define glFragmentLightivSGIX (gl.FragmentLightivSGIX) #undef glFragmentLightModelfSGIX #define glFragmentLightModelfSGIX (gl.FragmentLightModelfSGIX) #undef glFragmentLightModelfvSGIX #define glFragmentLightModelfvSGIX (gl.FragmentLightModelfvSGIX) #undef glFragmentLightModeliSGIX #define glFragmentLightModeliSGIX (gl.FragmentLightModeliSGIX) #undef glFragmentLightModelivSGIX #define glFragmentLightModelivSGIX (gl.FragmentLightModelivSGIX) #undef glFragmentMaterialfSGIX #define glFragmentMaterialfSGIX (gl.FragmentMaterialfSGIX) #undef glFragmentMaterialfvSGIX #define glFragmentMaterialfvSGIX (gl.FragmentMaterialfvSGIX) #undef glFragmentMaterialiSGIX #define glFragmentMaterialiSGIX (gl.FragmentMaterialiSGIX) #undef glFragmentMaterialivSGIX #define glFragmentMaterialivSGIX (gl.FragmentMaterialivSGIX) #undef glGetFragmentLightfvSGIX #define glGetFragmentLightfvSGIX (gl.GetFragmentLightfvSGIX) #undef glGetFragmentLightivSGIX #define glGetFragmentLightivSGIX (gl.GetFragmentLightivSGIX) #undef glGetFragmentMaterialfvSGIX #define glGetFragmentMaterialfvSGIX (gl.GetFragmentMaterialfvSGIX) #undef glGetFragmentMaterialivSGIX #define glGetFragmentMaterialivSGIX (gl.GetFragmentMaterialivSGIX) #undef glLightEnviSGIX #define glLightEnviSGIX (gl.LightEnviSGIX) #undef glDrawRangeElementsEXT #define glDrawRangeElementsEXT (gl.DrawRangeElementsEXT) #undef glApplyTextureEXT #define glApplyTextureEXT (gl.ApplyTextureEXT) #undef glTextureLightEXT #define glTextureLightEXT (gl.TextureLightEXT) #undef glTextureMaterialEXT #define glTextureMaterialEXT (gl.TextureMaterialEXT) #undef glAsyncMarkerSGIX #define glAsyncMarkerSGIX (gl.AsyncMarkerSGIX) #undef glFinishAsyncSGIX #define glFinishAsyncSGIX (gl.FinishAsyncSGIX) #undef glPollAsyncSGIX #define glPollAsyncSGIX (gl.PollAsyncSGIX) #undef glGenAsyncMarkersSGIX #define glGenAsyncMarkersSGIX (gl.GenAsyncMarkersSGIX) #undef glDeleteAsyncMarkersSGIX #define glDeleteAsyncMarkersSGIX (gl.DeleteAsyncMarkersSGIX) #undef glIsAsyncMarkerSGIX #define glIsAsyncMarkerSGIX (gl.IsAsyncMarkerSGIX) #undef glVertexPointervINTEL #define glVertexPointervINTEL (gl.VertexPointervINTEL) #undef glNormalPointervINTEL #define glNormalPointervINTEL (gl.NormalPointervINTEL) #undef glColorPointervINTEL #define glColorPointervINTEL (gl.ColorPointervINTEL) #undef glTexCoordPointervINTEL #define glTexCoordPointervINTEL (gl.TexCoordPointervINTEL) #undef glPixelTransformParameteriEXT #define glPixelTransformParameteriEXT (gl.PixelTransformParameteriEXT) #undef glPixelTransformParameterfEXT #define glPixelTransformParameterfEXT (gl.PixelTransformParameterfEXT) #undef glPixelTransformParameterivEXT #define glPixelTransformParameterivEXT (gl.PixelTransformParameterivEXT) #undef glPixelTransformParameterfvEXT #define glPixelTransformParameterfvEXT (gl.PixelTransformParameterfvEXT) #undef glSecondaryColor3bEXT #define glSecondaryColor3bEXT (gl.SecondaryColor3bEXT) #undef glSecondaryColor3bvEXT #define glSecondaryColor3bvEXT (gl.SecondaryColor3bvEXT) #undef glSecondaryColor3dEXT #define glSecondaryColor3dEXT (gl.SecondaryColor3dEXT) #undef glSecondaryColor3dvEXT #define glSecondaryColor3dvEXT (gl.SecondaryColor3dvEXT) #undef glSecondaryColor3fEXT #define glSecondaryColor3fEXT (gl.SecondaryColor3fEXT) #undef glSecondaryColor3fvEXT #define glSecondaryColor3fvEXT (gl.SecondaryColor3fvEXT) #undef glSecondaryColor3iEXT #define glSecondaryColor3iEXT (gl.SecondaryColor3iEXT) #undef glSecondaryColor3ivEXT #define glSecondaryColor3ivEXT (gl.SecondaryColor3ivEXT) #undef glSecondaryColor3sEXT #define glSecondaryColor3sEXT (gl.SecondaryColor3sEXT) #undef glSecondaryColor3svEXT #define glSecondaryColor3svEXT (gl.SecondaryColor3svEXT) #undef glSecondaryColor3ubEXT #define glSecondaryColor3ubEXT (gl.SecondaryColor3ubEXT) #undef glSecondaryColor3ubvEXT #define glSecondaryColor3ubvEXT (gl.SecondaryColor3ubvEXT) #undef glSecondaryColor3uiEXT #define glSecondaryColor3uiEXT (gl.SecondaryColor3uiEXT) #undef glSecondaryColor3uivEXT #define glSecondaryColor3uivEXT (gl.SecondaryColor3uivEXT) #undef glSecondaryColor3usEXT #define glSecondaryColor3usEXT (gl.SecondaryColor3usEXT) #undef glSecondaryColor3usvEXT #define glSecondaryColor3usvEXT (gl.SecondaryColor3usvEXT) #undef glSecondaryColorPointerEXT #define glSecondaryColorPointerEXT (gl.SecondaryColorPointerEXT) #undef glTextureNormalEXT #define glTextureNormalEXT (gl.TextureNormalEXT) #undef glMultiDrawArraysEXT #define glMultiDrawArraysEXT (gl.MultiDrawArraysEXT) #undef glMultiDrawElementsEXT #define glMultiDrawElementsEXT (gl.MultiDrawElementsEXT) #undef glFogCoordfEXT #define glFogCoordfEXT (gl.FogCoordfEXT) #undef glFogCoordfvEXT #define glFogCoordfvEXT (gl.FogCoordfvEXT) #undef glFogCoorddEXT #define glFogCoorddEXT (gl.FogCoorddEXT) #undef glFogCoorddvEXT #define glFogCoorddvEXT (gl.FogCoorddvEXT) #undef glFogCoordPointerEXT #define glFogCoordPointerEXT (gl.FogCoordPointerEXT) #undef glTangent3bEXT #define glTangent3bEXT (gl.Tangent3bEXT) #undef glTangent3bvEXT #define glTangent3bvEXT (gl.Tangent3bvEXT) #undef glTangent3dEXT #define glTangent3dEXT (gl.Tangent3dEXT) #undef glTangent3dvEXT #define glTangent3dvEXT (gl.Tangent3dvEXT) #undef glTangent3fEXT #define glTangent3fEXT (gl.Tangent3fEXT) #undef glTangent3fvEXT #define glTangent3fvEXT (gl.Tangent3fvEXT) #undef glTangent3iEXT #define glTangent3iEXT (gl.Tangent3iEXT) #undef glTangent3ivEXT #define glTangent3ivEXT (gl.Tangent3ivEXT) #undef glTangent3sEXT #define glTangent3sEXT (gl.Tangent3sEXT) #undef glTangent3svEXT #define glTangent3svEXT (gl.Tangent3svEXT) #undef glBinormal3bEXT #define glBinormal3bEXT (gl.Binormal3bEXT) #undef glBinormal3bvEXT #define glBinormal3bvEXT (gl.Binormal3bvEXT) #undef glBinormal3dEXT #define glBinormal3dEXT (gl.Binormal3dEXT) #undef glBinormal3dvEXT #define glBinormal3dvEXT (gl.Binormal3dvEXT) #undef glBinormal3fEXT #define glBinormal3fEXT (gl.Binormal3fEXT) #undef glBinormal3fvEXT #define glBinormal3fvEXT (gl.Binormal3fvEXT) #undef glBinormal3iEXT #define glBinormal3iEXT (gl.Binormal3iEXT) #undef glBinormal3ivEXT #define glBinormal3ivEXT (gl.Binormal3ivEXT) #undef glBinormal3sEXT #define glBinormal3sEXT (gl.Binormal3sEXT) #undef glBinormal3svEXT #define glBinormal3svEXT (gl.Binormal3svEXT) #undef glTangentPointerEXT #define glTangentPointerEXT (gl.TangentPointerEXT) #undef glBinormalPointerEXT #define glBinormalPointerEXT (gl.BinormalPointerEXT) #undef glFinishTextureSUNX #define glFinishTextureSUNX (gl.FinishTextureSUNX) #undef glGlobalAlphaFactorbSUN #define glGlobalAlphaFactorbSUN (gl.GlobalAlphaFactorbSUN) #undef glGlobalAlphaFactorsSUN #define glGlobalAlphaFactorsSUN (gl.GlobalAlphaFactorsSUN) #undef glGlobalAlphaFactoriSUN #define glGlobalAlphaFactoriSUN (gl.GlobalAlphaFactoriSUN) #undef glGlobalAlphaFactorfSUN #define glGlobalAlphaFactorfSUN (gl.GlobalAlphaFactorfSUN) #undef glGlobalAlphaFactordSUN #define glGlobalAlphaFactordSUN (gl.GlobalAlphaFactordSUN) #undef glGlobalAlphaFactorubSUN #define glGlobalAlphaFactorubSUN (gl.GlobalAlphaFactorubSUN) #undef glGlobalAlphaFactorusSUN #define glGlobalAlphaFactorusSUN (gl.GlobalAlphaFactorusSUN) #undef glGlobalAlphaFactoruiSUN #define glGlobalAlphaFactoruiSUN (gl.GlobalAlphaFactoruiSUN) #undef glReplacementCodeuiSUN #define glReplacementCodeuiSUN (gl.ReplacementCodeuiSUN) #undef glReplacementCodeusSUN #define glReplacementCodeusSUN (gl.ReplacementCodeusSUN) #undef glReplacementCodeubSUN #define glReplacementCodeubSUN (gl.ReplacementCodeubSUN) #undef glReplacementCodeuivSUN #define glReplacementCodeuivSUN (gl.ReplacementCodeuivSUN) #undef glReplacementCodeusvSUN #define glReplacementCodeusvSUN (gl.ReplacementCodeusvSUN) #undef glReplacementCodeubvSUN #define glReplacementCodeubvSUN (gl.ReplacementCodeubvSUN) #undef glReplacementCodePointerSUN #define glReplacementCodePointerSUN (gl.ReplacementCodePointerSUN) #undef glColor4ubVertex2fSUN #define glColor4ubVertex2fSUN (gl.Color4ubVertex2fSUN) #undef glColor4ubVertex2fvSUN #define glColor4ubVertex2fvSUN (gl.Color4ubVertex2fvSUN) #undef glColor4ubVertex3fSUN #define glColor4ubVertex3fSUN (gl.Color4ubVertex3fSUN) #undef glColor4ubVertex3fvSUN #define glColor4ubVertex3fvSUN (gl.Color4ubVertex3fvSUN) #undef glColor3fVertex3fSUN #define glColor3fVertex3fSUN (gl.Color3fVertex3fSUN) #undef glColor3fVertex3fvSUN #define glColor3fVertex3fvSUN (gl.Color3fVertex3fvSUN) #undef glNormal3fVertex3fSUN #define glNormal3fVertex3fSUN (gl.Normal3fVertex3fSUN) #undef glNormal3fVertex3fvSUN #define glNormal3fVertex3fvSUN (gl.Normal3fVertex3fvSUN) #undef glColor4fNormal3fVertex3fSUN #define glColor4fNormal3fVertex3fSUN (gl.Color4fNormal3fVertex3fSUN) #undef glColor4fNormal3fVertex3fvSUN #define glColor4fNormal3fVertex3fvSUN (gl.Color4fNormal3fVertex3fvSUN) #undef glTexCoord2fVertex3fSUN #define glTexCoord2fVertex3fSUN (gl.TexCoord2fVertex3fSUN) #undef glTexCoord2fVertex3fvSUN #define glTexCoord2fVertex3fvSUN (gl.TexCoord2fVertex3fvSUN) #undef glTexCoord4fVertex4fSUN #define glTexCoord4fVertex4fSUN (gl.TexCoord4fVertex4fSUN) #undef glTexCoord4fVertex4fvSUN #define glTexCoord4fVertex4fvSUN (gl.TexCoord4fVertex4fvSUN) #undef glTexCoord2fColor4ubVertex3fSUN #define glTexCoord2fColor4ubVertex3fSUN (gl.TexCoord2fColor4ubVertex3fSUN) #undef glTexCoord2fColor4ubVertex3fvSUN #define glTexCoord2fColor4ubVertex3fvSUN (gl.TexCoord2fColor4ubVertex3fvSUN) #undef glTexCoord2fColor3fVertex3fSUN #define glTexCoord2fColor3fVertex3fSUN (gl.TexCoord2fColor3fVertex3fSUN) #undef glTexCoord2fColor3fVertex3fvSUN #define glTexCoord2fColor3fVertex3fvSUN (gl.TexCoord2fColor3fVertex3fvSUN) #undef glTexCoord2fNormal3fVertex3fSUN #define glTexCoord2fNormal3fVertex3fSUN (gl.TexCoord2fNormal3fVertex3fSUN) #undef glTexCoord2fNormal3fVertex3fvSUN #define glTexCoord2fNormal3fVertex3fvSUN (gl.TexCoord2fNormal3fVertex3fvSUN) #undef glTexCoord2fColor4fNormal3fVertex3fSUN #define glTexCoord2fColor4fNormal3fVertex3fSUN (gl.TexCoord2fColor4fNormal3fVertex3fSUN) #undef glTexCoord2fColor4fNormal3fVertex3fvSUN #define glTexCoord2fColor4fNormal3fVertex3fvSUN (gl.TexCoord2fColor4fNormal3fVertex3fvSUN) #undef glTexCoord4fColor4fNormal3fVertex4fSUN #define glTexCoord4fColor4fNormal3fVertex4fSUN (gl.TexCoord4fColor4fNormal3fVertex4fSUN) #undef glTexCoord4fColor4fNormal3fVertex4fvSUN #define glTexCoord4fColor4fNormal3fVertex4fvSUN (gl.TexCoord4fColor4fNormal3fVertex4fvSUN) #undef glReplacementCodeuiVertex3fSUN #define glReplacementCodeuiVertex3fSUN (gl.ReplacementCodeuiVertex3fSUN) #undef glReplacementCodeuiVertex3fvSUN #define glReplacementCodeuiVertex3fvSUN (gl.ReplacementCodeuiVertex3fvSUN) #undef glReplacementCodeuiColor4ubVertex3fSUN #define glReplacementCodeuiColor4ubVertex3fSUN (gl.ReplacementCodeuiColor4ubVertex3fSUN) #undef glReplacementCodeuiColor4ubVertex3fvSUN #define glReplacementCodeuiColor4ubVertex3fvSUN (gl.ReplacementCodeuiColor4ubVertex3fvSUN) #undef glReplacementCodeuiColor3fVertex3fSUN #define glReplacementCodeuiColor3fVertex3fSUN (gl.ReplacementCodeuiColor3fVertex3fSUN) #undef glReplacementCodeuiColor3fVertex3fvSUN #define glReplacementCodeuiColor3fVertex3fvSUN (gl.ReplacementCodeuiColor3fVertex3fvSUN) #undef glReplacementCodeuiNormal3fVertex3fSUN #define glReplacementCodeuiNormal3fVertex3fSUN (gl.ReplacementCodeuiNormal3fVertex3fSUN) #undef glReplacementCodeuiNormal3fVertex3fvSUN #define glReplacementCodeuiNormal3fVertex3fvSUN (gl.ReplacementCodeuiNormal3fVertex3fvSUN) #undef glReplacementCodeuiColor4fNormal3fVertex3fSUN #define glReplacementCodeuiColor4fNormal3fVertex3fSUN (gl.ReplacementCodeuiColor4fNormal3fVertex3fSUN) #undef glReplacementCodeuiColor4fNormal3fVertex3fvSUN #define glReplacementCodeuiColor4fNormal3fVertex3fvSUN (gl.ReplacementCodeuiColor4fNormal3fVertex3fvSUN) #undef glReplacementCodeuiTexCoord2fVertex3fSUN #define glReplacementCodeuiTexCoord2fVertex3fSUN (gl.ReplacementCodeuiTexCoord2fVertex3fSUN) #undef glReplacementCodeuiTexCoord2fVertex3fvSUN #define glReplacementCodeuiTexCoord2fVertex3fvSUN (gl.ReplacementCodeuiTexCoord2fVertex3fvSUN) #undef glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN #define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (gl.ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) #undef glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN #define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (gl.ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) #undef glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN #define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (gl.ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) #undef glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN #define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (gl.ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) #undef glBlendFuncSeparateEXT #define glBlendFuncSeparateEXT (gl.BlendFuncSeparateEXT) #undef glBlendFuncSeparateINGR #define glBlendFuncSeparateINGR (gl.BlendFuncSeparateINGR) #undef glVertexWeightfEXT #define glVertexWeightfEXT (gl.VertexWeightfEXT) #undef glVertexWeightfvEXT #define glVertexWeightfvEXT (gl.VertexWeightfvEXT) #undef glVertexWeightPointerEXT #define glVertexWeightPointerEXT (gl.VertexWeightPointerEXT) #undef glFlushVertexArrayRangeNV #define glFlushVertexArrayRangeNV (gl.FlushVertexArrayRangeNV) #undef glVertexArrayRangeNV #define glVertexArrayRangeNV (gl.VertexArrayRangeNV) #undef glCombinerParameterfvNV #define glCombinerParameterfvNV (gl.CombinerParameterfvNV) #undef glCombinerParameterfNV #define glCombinerParameterfNV (gl.CombinerParameterfNV) #undef glCombinerParameterivNV #define glCombinerParameterivNV (gl.CombinerParameterivNV) #undef glCombinerParameteriNV #define glCombinerParameteriNV (gl.CombinerParameteriNV) #undef glCombinerInputNV #define glCombinerInputNV (gl.CombinerInputNV) #undef glCombinerOutputNV #define glCombinerOutputNV (gl.CombinerOutputNV) #undef glFinalCombinerInputNV #define glFinalCombinerInputNV (gl.FinalCombinerInputNV) #undef glGetCombinerInputParameterfvNV #define glGetCombinerInputParameterfvNV (gl.GetCombinerInputParameterfvNV) #undef glGetCombinerInputParameterivNV #define glGetCombinerInputParameterivNV (gl.GetCombinerInputParameterivNV) #undef glGetCombinerOutputParameterfvNV #define glGetCombinerOutputParameterfvNV (gl.GetCombinerOutputParameterfvNV) #undef glGetCombinerOutputParameterivNV #define glGetCombinerOutputParameterivNV (gl.GetCombinerOutputParameterivNV) #undef glGetFinalCombinerInputParameterfvNV #define glGetFinalCombinerInputParameterfvNV (gl.GetFinalCombinerInputParameterfvNV) #undef glGetFinalCombinerInputParameterivNV #define glGetFinalCombinerInputParameterivNV (gl.GetFinalCombinerInputParameterivNV) #undef glResizeBuffersMESA #define glResizeBuffersMESA (gl.ResizeBuffersMESA) #undef glWindowPos2dMESA #define glWindowPos2dMESA (gl.WindowPos2dMESA) #undef glWindowPos2dvMESA #define glWindowPos2dvMESA (gl.WindowPos2dvMESA) #undef glWindowPos2fMESA #define glWindowPos2fMESA (gl.WindowPos2fMESA) #undef glWindowPos2fvMESA #define glWindowPos2fvMESA (gl.WindowPos2fvMESA) #undef glWindowPos2iMESA #define glWindowPos2iMESA (gl.WindowPos2iMESA) #undef glWindowPos2ivMESA #define glWindowPos2ivMESA (gl.WindowPos2ivMESA) #undef glWindowPos2sMESA #define glWindowPos2sMESA (gl.WindowPos2sMESA) #undef glWindowPos2svMESA #define glWindowPos2svMESA (gl.WindowPos2svMESA) #undef glWindowPos3dMESA #define glWindowPos3dMESA (gl.WindowPos3dMESA) #undef glWindowPos3dvMESA #define glWindowPos3dvMESA (gl.WindowPos3dvMESA) #undef glWindowPos3fMESA #define glWindowPos3fMESA (gl.WindowPos3fMESA) #undef glWindowPos3fvMESA #define glWindowPos3fvMESA (gl.WindowPos3fvMESA) #undef glWindowPos3iMESA #define glWindowPos3iMESA (gl.WindowPos3iMESA) #undef glWindowPos3ivMESA #define glWindowPos3ivMESA (gl.WindowPos3ivMESA) #undef glWindowPos3sMESA #define glWindowPos3sMESA (gl.WindowPos3sMESA) #undef glWindowPos3svMESA #define glWindowPos3svMESA (gl.WindowPos3svMESA) #undef glWindowPos4dMESA #define glWindowPos4dMESA (gl.WindowPos4dMESA) #undef glWindowPos4dvMESA #define glWindowPos4dvMESA (gl.WindowPos4dvMESA) #undef glWindowPos4fMESA #define glWindowPos4fMESA (gl.WindowPos4fMESA) #undef glWindowPos4fvMESA #define glWindowPos4fvMESA (gl.WindowPos4fvMESA) #undef glWindowPos4iMESA #define glWindowPos4iMESA (gl.WindowPos4iMESA) #undef glWindowPos4ivMESA #define glWindowPos4ivMESA (gl.WindowPos4ivMESA) #undef glWindowPos4sMESA #define glWindowPos4sMESA (gl.WindowPos4sMESA) #undef glWindowPos4svMESA #define glWindowPos4svMESA (gl.WindowPos4svMESA) #undef glMultiModeDrawArraysIBM #define glMultiModeDrawArraysIBM (gl.MultiModeDrawArraysIBM) #undef glMultiModeDrawElementsIBM #define glMultiModeDrawElementsIBM (gl.MultiModeDrawElementsIBM) #undef glColorPointerListIBM #define glColorPointerListIBM (gl.ColorPointerListIBM) #undef glSecondaryColorPointerListIBM #define glSecondaryColorPointerListIBM (gl.SecondaryColorPointerListIBM) #undef glEdgeFlagPointerListIBM #define glEdgeFlagPointerListIBM (gl.EdgeFlagPointerListIBM) #undef glFogCoordPointerListIBM #define glFogCoordPointerListIBM (gl.FogCoordPointerListIBM) #undef glIndexPointerListIBM #define glIndexPointerListIBM (gl.IndexPointerListIBM) #undef glNormalPointerListIBM #define glNormalPointerListIBM (gl.NormalPointerListIBM) #undef glTexCoordPointerListIBM #define glTexCoordPointerListIBM (gl.TexCoordPointerListIBM) #undef glVertexPointerListIBM #define glVertexPointerListIBM (gl.VertexPointerListIBM) #undef glTbufferMask3DFX #define glTbufferMask3DFX (gl.TbufferMask3DFX) #undef glSampleMaskEXT #define glSampleMaskEXT (gl.SampleMaskEXT) #undef glSamplePatternEXT #define glSamplePatternEXT (gl.SamplePatternEXT) #undef glTextureColorMaskSGIS #define glTextureColorMaskSGIS (gl.TextureColorMaskSGIS) #undef glIglooInterfaceSGIX #define glIglooInterfaceSGIX (gl.IglooInterfaceSGIX) #undef glDeleteFencesNV #define glDeleteFencesNV (gl.DeleteFencesNV) #undef glGenFencesNV #define glGenFencesNV (gl.GenFencesNV) #undef glIsFenceNV #define glIsFenceNV (gl.IsFenceNV) #undef glTestFenceNV #define glTestFenceNV (gl.TestFenceNV) #undef glGetFenceivNV #define glGetFenceivNV (gl.GetFenceivNV) #undef glFinishFenceNV #define glFinishFenceNV (gl.FinishFenceNV) #undef glSetFenceNV #define glSetFenceNV (gl.SetFenceNV) #undef glMapControlPointsNV #define glMapControlPointsNV (gl.MapControlPointsNV) #undef glMapParameterivNV #define glMapParameterivNV (gl.MapParameterivNV) #undef glMapParameterfvNV #define glMapParameterfvNV (gl.MapParameterfvNV) #undef glGetMapControlPointsNV #define glGetMapControlPointsNV (gl.GetMapControlPointsNV) #undef glGetMapParameterivNV #define glGetMapParameterivNV (gl.GetMapParameterivNV) #undef glGetMapParameterfvNV #define glGetMapParameterfvNV (gl.GetMapParameterfvNV) #undef glGetMapAttribParameterivNV #define glGetMapAttribParameterivNV (gl.GetMapAttribParameterivNV) #undef glGetMapAttribParameterfvNV #define glGetMapAttribParameterfvNV (gl.GetMapAttribParameterfvNV) #undef glEvalMapsNV #define glEvalMapsNV (gl.EvalMapsNV) #undef glCombinerStageParameterfvNV #define glCombinerStageParameterfvNV (gl.CombinerStageParameterfvNV) #undef glGetCombinerStageParameterfvNV #define glGetCombinerStageParameterfvNV (gl.GetCombinerStageParameterfvNV) #undef glAreProgramsResidentNV #define glAreProgramsResidentNV (gl.AreProgramsResidentNV) #undef glBindProgramNV #define glBindProgramNV (gl.BindProgramNV) #undef glDeleteProgramsNV #define glDeleteProgramsNV (gl.DeleteProgramsNV) #undef glExecuteProgramNV #define glExecuteProgramNV (gl.ExecuteProgramNV) #undef glGenProgramsNV #define glGenProgramsNV (gl.GenProgramsNV) #undef glGetProgramParameterdvNV #define glGetProgramParameterdvNV (gl.GetProgramParameterdvNV) #undef glGetProgramParameterfvNV #define glGetProgramParameterfvNV (gl.GetProgramParameterfvNV) #undef glGetProgramivNV #define glGetProgramivNV (gl.GetProgramivNV) #undef glGetProgramStringNV #define glGetProgramStringNV (gl.GetProgramStringNV) #undef glGetTrackMatrixivNV #define glGetTrackMatrixivNV (gl.GetTrackMatrixivNV) #undef glGetVertexAttribdvNV #define glGetVertexAttribdvNV (gl.GetVertexAttribdvNV) #undef glGetVertexAttribfvNV #define glGetVertexAttribfvNV (gl.GetVertexAttribfvNV) #undef glGetVertexAttribivNV #define glGetVertexAttribivNV (gl.GetVertexAttribivNV) #undef glGetVertexAttribPointervNV #define glGetVertexAttribPointervNV (gl.GetVertexAttribPointervNV) #undef glIsProgramNV #define glIsProgramNV (gl.IsProgramNV) #undef glLoadProgramNV #define glLoadProgramNV (gl.LoadProgramNV) #undef glProgramParameter4dNV #define glProgramParameter4dNV (gl.ProgramParameter4dNV) #undef glProgramParameter4dvNV #define glProgramParameter4dvNV (gl.ProgramParameter4dvNV) #undef glProgramParameter4fNV #define glProgramParameter4fNV (gl.ProgramParameter4fNV) #undef glProgramParameter4fvNV #define glProgramParameter4fvNV (gl.ProgramParameter4fvNV) #undef glProgramParameters4dvNV #define glProgramParameters4dvNV (gl.ProgramParameters4dvNV) #undef glProgramParameters4fvNV #define glProgramParameters4fvNV (gl.ProgramParameters4fvNV) #undef glRequestResidentProgramsNV #define glRequestResidentProgramsNV (gl.RequestResidentProgramsNV) #undef glTrackMatrixNV #define glTrackMatrixNV (gl.TrackMatrixNV) #undef glVertexAttribPointerNV #define glVertexAttribPointerNV (gl.VertexAttribPointerNV) #undef glVertexAttrib1dNV #define glVertexAttrib1dNV (gl.VertexAttrib1dNV) #undef glVertexAttrib1dvNV #define glVertexAttrib1dvNV (gl.VertexAttrib1dvNV) #undef glVertexAttrib1fNV #define glVertexAttrib1fNV (gl.VertexAttrib1fNV) #undef glVertexAttrib1fvNV #define glVertexAttrib1fvNV (gl.VertexAttrib1fvNV) #undef glVertexAttrib1sNV #define glVertexAttrib1sNV (gl.VertexAttrib1sNV) #undef glVertexAttrib1svNV #define glVertexAttrib1svNV (gl.VertexAttrib1svNV) #undef glVertexAttrib2dNV #define glVertexAttrib2dNV (gl.VertexAttrib2dNV) #undef glVertexAttrib2dvNV #define glVertexAttrib2dvNV (gl.VertexAttrib2dvNV) #undef glVertexAttrib2fNV #define glVertexAttrib2fNV (gl.VertexAttrib2fNV) #undef glVertexAttrib2fvNV #define glVertexAttrib2fvNV (gl.VertexAttrib2fvNV) #undef glVertexAttrib2sNV #define glVertexAttrib2sNV (gl.VertexAttrib2sNV) #undef glVertexAttrib2svNV #define glVertexAttrib2svNV (gl.VertexAttrib2svNV) #undef glVertexAttrib3dNV #define glVertexAttrib3dNV (gl.VertexAttrib3dNV) #undef glVertexAttrib3dvNV #define glVertexAttrib3dvNV (gl.VertexAttrib3dvNV) #undef glVertexAttrib3fNV #define glVertexAttrib3fNV (gl.VertexAttrib3fNV) #undef glVertexAttrib3fvNV #define glVertexAttrib3fvNV (gl.VertexAttrib3fvNV) #undef glVertexAttrib3sNV #define glVertexAttrib3sNV (gl.VertexAttrib3sNV) #undef glVertexAttrib3svNV #define glVertexAttrib3svNV (gl.VertexAttrib3svNV) #undef glVertexAttrib4dNV #define glVertexAttrib4dNV (gl.VertexAttrib4dNV) #undef glVertexAttrib4dvNV #define glVertexAttrib4dvNV (gl.VertexAttrib4dvNV) #undef glVertexAttrib4fNV #define glVertexAttrib4fNV (gl.VertexAttrib4fNV) #undef glVertexAttrib4fvNV #define glVertexAttrib4fvNV (gl.VertexAttrib4fvNV) #undef glVertexAttrib4sNV #define glVertexAttrib4sNV (gl.VertexAttrib4sNV) #undef glVertexAttrib4svNV #define glVertexAttrib4svNV (gl.VertexAttrib4svNV) #undef glVertexAttrib4ubNV #define glVertexAttrib4ubNV (gl.VertexAttrib4ubNV) #undef glVertexAttrib4ubvNV #define glVertexAttrib4ubvNV (gl.VertexAttrib4ubvNV) #undef glVertexAttribs1dvNV #define glVertexAttribs1dvNV (gl.VertexAttribs1dvNV) #undef glVertexAttribs1fvNV #define glVertexAttribs1fvNV (gl.VertexAttribs1fvNV) #undef glVertexAttribs1svNV #define glVertexAttribs1svNV (gl.VertexAttribs1svNV) #undef glVertexAttribs2dvNV #define glVertexAttribs2dvNV (gl.VertexAttribs2dvNV) #undef glVertexAttribs2fvNV #define glVertexAttribs2fvNV (gl.VertexAttribs2fvNV) #undef glVertexAttribs2svNV #define glVertexAttribs2svNV (gl.VertexAttribs2svNV) #undef glVertexAttribs3dvNV #define glVertexAttribs3dvNV (gl.VertexAttribs3dvNV) #undef glVertexAttribs3fvNV #define glVertexAttribs3fvNV (gl.VertexAttribs3fvNV) #undef glVertexAttribs3svNV #define glVertexAttribs3svNV (gl.VertexAttribs3svNV) #undef glVertexAttribs4dvNV #define glVertexAttribs4dvNV (gl.VertexAttribs4dvNV) #undef glVertexAttribs4fvNV #define glVertexAttribs4fvNV (gl.VertexAttribs4fvNV) #undef glVertexAttribs4svNV #define glVertexAttribs4svNV (gl.VertexAttribs4svNV) #undef glVertexAttribs4ubvNV #define glVertexAttribs4ubvNV (gl.VertexAttribs4ubvNV) #undef glTexBumpParameterivATI #define glTexBumpParameterivATI (gl.TexBumpParameterivATI) #undef glTexBumpParameterfvATI #define glTexBumpParameterfvATI (gl.TexBumpParameterfvATI) #undef glGetTexBumpParameterivATI #define glGetTexBumpParameterivATI (gl.GetTexBumpParameterivATI) #undef glGetTexBumpParameterfvATI #define glGetTexBumpParameterfvATI (gl.GetTexBumpParameterfvATI) #undef glGenFragmentShadersATI #define glGenFragmentShadersATI (gl.GenFragmentShadersATI) #undef glBindFragmentShaderATI #define glBindFragmentShaderATI (gl.BindFragmentShaderATI) #undef glDeleteFragmentShaderATI #define glDeleteFragmentShaderATI (gl.DeleteFragmentShaderATI) #undef glBeginFragmentShaderATI #define glBeginFragmentShaderATI (gl.BeginFragmentShaderATI) #undef glEndFragmentShaderATI #define glEndFragmentShaderATI (gl.EndFragmentShaderATI) #undef glPassTexCoordATI #define glPassTexCoordATI (gl.PassTexCoordATI) #undef glSampleMapATI #define glSampleMapATI (gl.SampleMapATI) #undef glColorFragmentOp1ATI #define glColorFragmentOp1ATI (gl.ColorFragmentOp1ATI) #undef glColorFragmentOp2ATI #define glColorFragmentOp2ATI (gl.ColorFragmentOp2ATI) #undef glColorFragmentOp3ATI #define glColorFragmentOp3ATI (gl.ColorFragmentOp3ATI) #undef glAlphaFragmentOp1ATI #define glAlphaFragmentOp1ATI (gl.AlphaFragmentOp1ATI) #undef glAlphaFragmentOp2ATI #define glAlphaFragmentOp2ATI (gl.AlphaFragmentOp2ATI) #undef glAlphaFragmentOp3ATI #define glAlphaFragmentOp3ATI (gl.AlphaFragmentOp3ATI) #undef glSetFragmentShaderConstantATI #define glSetFragmentShaderConstantATI (gl.SetFragmentShaderConstantATI) #undef glPNTrianglesiATI #define glPNTrianglesiATI (gl.PNTrianglesiATI) #undef glPNTrianglesfATI #define glPNTrianglesfATI (gl.PNTrianglesfATI) #undef glNewObjectBufferATI #define glNewObjectBufferATI (gl.NewObjectBufferATI) #undef glIsObjectBufferATI #define glIsObjectBufferATI (gl.IsObjectBufferATI) #undef glUpdateObjectBufferATI #define glUpdateObjectBufferATI (gl.UpdateObjectBufferATI) #undef glGetObjectBufferfvATI #define glGetObjectBufferfvATI (gl.GetObjectBufferfvATI) #undef glGetObjectBufferivATI #define glGetObjectBufferivATI (gl.GetObjectBufferivATI) #undef glFreeObjectBufferATI #define glFreeObjectBufferATI (gl.FreeObjectBufferATI) #undef glArrayObjectATI #define glArrayObjectATI (gl.ArrayObjectATI) #undef glGetArrayObjectfvATI #define glGetArrayObjectfvATI (gl.GetArrayObjectfvATI) #undef glGetArrayObjectivATI #define glGetArrayObjectivATI (gl.GetArrayObjectivATI) #undef glVariantArrayObjectATI #define glVariantArrayObjectATI (gl.VariantArrayObjectATI) #undef glGetVariantArrayObjectfvATI #define glGetVariantArrayObjectfvATI (gl.GetVariantArrayObjectfvATI) #undef glGetVariantArrayObjectivATI #define glGetVariantArrayObjectivATI (gl.GetVariantArrayObjectivATI) #undef glBeginVertexShaderEXT #define glBeginVertexShaderEXT (gl.BeginVertexShaderEXT) #undef glEndVertexShaderEXT #define glEndVertexShaderEXT (gl.EndVertexShaderEXT) #undef glBindVertexShaderEXT #define glBindVertexShaderEXT (gl.BindVertexShaderEXT) #undef glGenVertexShadersEXT #define glGenVertexShadersEXT (gl.GenVertexShadersEXT) #undef glDeleteVertexShaderEXT #define glDeleteVertexShaderEXT (gl.DeleteVertexShaderEXT) #undef glShaderOp1EXT #define glShaderOp1EXT (gl.ShaderOp1EXT) #undef glShaderOp2EXT #define glShaderOp2EXT (gl.ShaderOp2EXT) #undef glShaderOp3EXT #define glShaderOp3EXT (gl.ShaderOp3EXT) #undef glSwizzleEXT #define glSwizzleEXT (gl.SwizzleEXT) #undef glWriteMaskEXT #define glWriteMaskEXT (gl.WriteMaskEXT) #undef glInsertComponentEXT #define glInsertComponentEXT (gl.InsertComponentEXT) #undef glExtractComponentEXT #define glExtractComponentEXT (gl.ExtractComponentEXT) #undef glGenSymbolsEXT #define glGenSymbolsEXT (gl.GenSymbolsEXT) #undef glSetInvariantEXT #define glSetInvariantEXT (gl.SetInvariantEXT) #undef glSetLocalConstantEXT #define glSetLocalConstantEXT (gl.SetLocalConstantEXT) #undef glVariantbvEXT #define glVariantbvEXT (gl.VariantbvEXT) #undef glVariantsvEXT #define glVariantsvEXT (gl.VariantsvEXT) #undef glVariantivEXT #define glVariantivEXT (gl.VariantivEXT) #undef glVariantfvEXT #define glVariantfvEXT (gl.VariantfvEXT) #undef glVariantdvEXT #define glVariantdvEXT (gl.VariantdvEXT) #undef glVariantubvEXT #define glVariantubvEXT (gl.VariantubvEXT) #undef glVariantusvEXT #define glVariantusvEXT (gl.VariantusvEXT) #undef glVariantuivEXT #define glVariantuivEXT (gl.VariantuivEXT) #undef glVariantPointerEXT #define glVariantPointerEXT (gl.VariantPointerEXT) #undef glEnableVariantClientStateEXT #define glEnableVariantClientStateEXT (gl.EnableVariantClientStateEXT) #undef glDisableVariantClientStateEXT #define glDisableVariantClientStateEXT (gl.DisableVariantClientStateEXT) #undef glBindLightParameterEXT #define glBindLightParameterEXT (gl.BindLightParameterEXT) #undef glBindMaterialParameterEXT #define glBindMaterialParameterEXT (gl.BindMaterialParameterEXT) #undef glBindTexGenParameterEXT #define glBindTexGenParameterEXT (gl.BindTexGenParameterEXT) #undef glBindTextureUnitParameterEXT #define glBindTextureUnitParameterEXT (gl.BindTextureUnitParameterEXT) #undef glBindParameterEXT #define glBindParameterEXT (gl.BindParameterEXT) #undef glIsVariantEnabledEXT #define glIsVariantEnabledEXT (gl.IsVariantEnabledEXT) #undef glGetVariantBooleanvEXT #define glGetVariantBooleanvEXT (gl.GetVariantBooleanvEXT) #undef glGetVariantIntegervEXT #define glGetVariantIntegervEXT (gl.GetVariantIntegervEXT) #undef glGetVariantFloatvEXT #define glGetVariantFloatvEXT (gl.GetVariantFloatvEXT) #undef glGetVariantPointervEXT #define glGetVariantPointervEXT (gl.GetVariantPointervEXT) #undef glGetInvariantBooleanvEXT #define glGetInvariantBooleanvEXT (gl.GetInvariantBooleanvEXT) #undef glGetInvariantIntegervEXT #define glGetInvariantIntegervEXT (gl.GetInvariantIntegervEXT) #undef glGetInvariantFloatvEXT #define glGetInvariantFloatvEXT (gl.GetInvariantFloatvEXT) #undef glGetLocalConstantBooleanvEXT #define glGetLocalConstantBooleanvEXT (gl.GetLocalConstantBooleanvEXT) #undef glGetLocalConstantIntegervEXT #define glGetLocalConstantIntegervEXT (gl.GetLocalConstantIntegervEXT) #undef glGetLocalConstantFloatvEXT #define glGetLocalConstantFloatvEXT (gl.GetLocalConstantFloatvEXT) #undef glVertexStream1sATI #define glVertexStream1sATI (gl.VertexStream1sATI) #undef glVertexStream1svATI #define glVertexStream1svATI (gl.VertexStream1svATI) #undef glVertexStream1iATI #define glVertexStream1iATI (gl.VertexStream1iATI) #undef glVertexStream1ivATI #define glVertexStream1ivATI (gl.VertexStream1ivATI) #undef glVertexStream1fATI #define glVertexStream1fATI (gl.VertexStream1fATI) #undef glVertexStream1fvATI #define glVertexStream1fvATI (gl.VertexStream1fvATI) #undef glVertexStream1dATI #define glVertexStream1dATI (gl.VertexStream1dATI) #undef glVertexStream1dvATI #define glVertexStream1dvATI (gl.VertexStream1dvATI) #undef glVertexStream2sATI #define glVertexStream2sATI (gl.VertexStream2sATI) #undef glVertexStream2svATI #define glVertexStream2svATI (gl.VertexStream2svATI) #undef glVertexStream2iATI #define glVertexStream2iATI (gl.VertexStream2iATI) #undef glVertexStream2ivATI #define glVertexStream2ivATI (gl.VertexStream2ivATI) #undef glVertexStream2fATI #define glVertexStream2fATI (gl.VertexStream2fATI) #undef glVertexStream2fvATI #define glVertexStream2fvATI (gl.VertexStream2fvATI) #undef glVertexStream2dATI #define glVertexStream2dATI (gl.VertexStream2dATI) #undef glVertexStream2dvATI #define glVertexStream2dvATI (gl.VertexStream2dvATI) #undef glVertexStream3sATI #define glVertexStream3sATI (gl.VertexStream3sATI) #undef glVertexStream3svATI #define glVertexStream3svATI (gl.VertexStream3svATI) #undef glVertexStream3iATI #define glVertexStream3iATI (gl.VertexStream3iATI) #undef glVertexStream3ivATI #define glVertexStream3ivATI (gl.VertexStream3ivATI) #undef glVertexStream3fATI #define glVertexStream3fATI (gl.VertexStream3fATI) #undef glVertexStream3fvATI #define glVertexStream3fvATI (gl.VertexStream3fvATI) #undef glVertexStream3dATI #define glVertexStream3dATI (gl.VertexStream3dATI) #undef glVertexStream3dvATI #define glVertexStream3dvATI (gl.VertexStream3dvATI) #undef glVertexStream4sATI #define glVertexStream4sATI (gl.VertexStream4sATI) #undef glVertexStream4svATI #define glVertexStream4svATI (gl.VertexStream4svATI) #undef glVertexStream4iATI #define glVertexStream4iATI (gl.VertexStream4iATI) #undef glVertexStream4ivATI #define glVertexStream4ivATI (gl.VertexStream4ivATI) #undef glVertexStream4fATI #define glVertexStream4fATI (gl.VertexStream4fATI) #undef glVertexStream4fvATI #define glVertexStream4fvATI (gl.VertexStream4fvATI) #undef glVertexStream4dATI #define glVertexStream4dATI (gl.VertexStream4dATI) #undef glVertexStream4dvATI #define glVertexStream4dvATI (gl.VertexStream4dvATI) #undef glNormalStream3bATI #define glNormalStream3bATI (gl.NormalStream3bATI) #undef glNormalStream3bvATI #define glNormalStream3bvATI (gl.NormalStream3bvATI) #undef glNormalStream3sATI #define glNormalStream3sATI (gl.NormalStream3sATI) #undef glNormalStream3svATI #define glNormalStream3svATI (gl.NormalStream3svATI) #undef glNormalStream3iATI #define glNormalStream3iATI (gl.NormalStream3iATI) #undef glNormalStream3ivATI #define glNormalStream3ivATI (gl.NormalStream3ivATI) #undef glNormalStream3fATI #define glNormalStream3fATI (gl.NormalStream3fATI) #undef glNormalStream3fvATI #define glNormalStream3fvATI (gl.NormalStream3fvATI) #undef glNormalStream3dATI #define glNormalStream3dATI (gl.NormalStream3dATI) #undef glNormalStream3dvATI #define glNormalStream3dvATI (gl.NormalStream3dvATI) #undef glClientActiveVertexStreamATI #define glClientActiveVertexStreamATI (gl.ClientActiveVertexStreamATI) #undef glVertexBlendEnviATI #define glVertexBlendEnviATI (gl.VertexBlendEnviATI) #undef glVertexBlendEnvfATI #define glVertexBlendEnvfATI (gl.VertexBlendEnvfATI) #undef glElementPointerATI #define glElementPointerATI (gl.ElementPointerATI) #undef glDrawElementArrayATI #define glDrawElementArrayATI (gl.DrawElementArrayATI) #undef glDrawRangeElementArrayATI #define glDrawRangeElementArrayATI (gl.DrawRangeElementArrayATI) #undef glDrawMeshArraysSUN #define glDrawMeshArraysSUN (gl.DrawMeshArraysSUN) #undef glGenOcclusionQueriesNV #define glGenOcclusionQueriesNV (gl.GenOcclusionQueriesNV) #undef glDeleteOcclusionQueriesNV #define glDeleteOcclusionQueriesNV (gl.DeleteOcclusionQueriesNV) #undef glIsOcclusionQueryNV #define glIsOcclusionQueryNV (gl.IsOcclusionQueryNV) #undef glBeginOcclusionQueryNV #define glBeginOcclusionQueryNV (gl.BeginOcclusionQueryNV) #undef glEndOcclusionQueryNV #define glEndOcclusionQueryNV (gl.EndOcclusionQueryNV) #undef glGetOcclusionQueryivNV #define glGetOcclusionQueryivNV (gl.GetOcclusionQueryivNV) #undef glGetOcclusionQueryuivNV #define glGetOcclusionQueryuivNV (gl.GetOcclusionQueryuivNV) #undef glPointParameteriNV #define glPointParameteriNV (gl.PointParameteriNV) #undef glPointParameterivNV #define glPointParameterivNV (gl.PointParameterivNV) #undef glActiveStencilFaceEXT #define glActiveStencilFaceEXT (gl.ActiveStencilFaceEXT) #undef glElementPointerAPPLE #define glElementPointerAPPLE (gl.ElementPointerAPPLE) #undef glDrawElementArrayAPPLE #define glDrawElementArrayAPPLE (gl.DrawElementArrayAPPLE) #undef glDrawRangeElementArrayAPPLE #define glDrawRangeElementArrayAPPLE (gl.DrawRangeElementArrayAPPLE) #undef glMultiDrawElementArrayAPPLE #define glMultiDrawElementArrayAPPLE (gl.MultiDrawElementArrayAPPLE) #undef glMultiDrawRangeElementArrayAPPLE #define glMultiDrawRangeElementArrayAPPLE (gl.MultiDrawRangeElementArrayAPPLE) #undef glGenFencesAPPLE #define glGenFencesAPPLE (gl.GenFencesAPPLE) #undef glDeleteFencesAPPLE #define glDeleteFencesAPPLE (gl.DeleteFencesAPPLE) #undef glSetFenceAPPLE #define glSetFenceAPPLE (gl.SetFenceAPPLE) #undef glIsFenceAPPLE #define glIsFenceAPPLE (gl.IsFenceAPPLE) #undef glTestFenceAPPLE #define glTestFenceAPPLE (gl.TestFenceAPPLE) #undef glFinishFenceAPPLE #define glFinishFenceAPPLE (gl.FinishFenceAPPLE) #undef glTestObjectAPPLE #define glTestObjectAPPLE (gl.TestObjectAPPLE) #undef glFinishObjectAPPLE #define glFinishObjectAPPLE (gl.FinishObjectAPPLE) #undef glBindVertexArrayAPPLE #define glBindVertexArrayAPPLE (gl.BindVertexArrayAPPLE) #undef glDeleteVertexArraysAPPLE #define glDeleteVertexArraysAPPLE (gl.DeleteVertexArraysAPPLE) #undef glGenVertexArraysAPPLE #define glGenVertexArraysAPPLE (gl.GenVertexArraysAPPLE) #undef glIsVertexArrayAPPLE #define glIsVertexArrayAPPLE (gl.IsVertexArrayAPPLE) #undef glVertexArrayRangeAPPLE #define glVertexArrayRangeAPPLE (gl.VertexArrayRangeAPPLE) #undef glFlushVertexArrayRangeAPPLE #define glFlushVertexArrayRangeAPPLE (gl.FlushVertexArrayRangeAPPLE) #undef glVertexArrayParameteriAPPLE #define glVertexArrayParameteriAPPLE (gl.VertexArrayParameteriAPPLE) #undef glDrawBuffersATI #define glDrawBuffersATI (gl.DrawBuffersATI) #undef glProgramNamedParameter4fNV #define glProgramNamedParameter4fNV (gl.ProgramNamedParameter4fNV) #undef glProgramNamedParameter4dNV #define glProgramNamedParameter4dNV (gl.ProgramNamedParameter4dNV) #undef glProgramNamedParameter4fvNV #define glProgramNamedParameter4fvNV (gl.ProgramNamedParameter4fvNV) #undef glProgramNamedParameter4dvNV #define glProgramNamedParameter4dvNV (gl.ProgramNamedParameter4dvNV) #undef glGetProgramNamedParameterfvNV #define glGetProgramNamedParameterfvNV (gl.GetProgramNamedParameterfvNV) #undef glGetProgramNamedParameterdvNV #define glGetProgramNamedParameterdvNV (gl.GetProgramNamedParameterdvNV) #undef glVertex2hNV #define glVertex2hNV (gl.Vertex2hNV) #undef glVertex2hvNV #define glVertex2hvNV (gl.Vertex2hvNV) #undef glVertex3hNV #define glVertex3hNV (gl.Vertex3hNV) #undef glVertex3hvNV #define glVertex3hvNV (gl.Vertex3hvNV) #undef glVertex4hNV #define glVertex4hNV (gl.Vertex4hNV) #undef glVertex4hvNV #define glVertex4hvNV (gl.Vertex4hvNV) #undef glNormal3hNV #define glNormal3hNV (gl.Normal3hNV) #undef glNormal3hvNV #define glNormal3hvNV (gl.Normal3hvNV) #undef glColor3hNV #define glColor3hNV (gl.Color3hNV) #undef glColor3hvNV #define glColor3hvNV (gl.Color3hvNV) #undef glColor4hNV #define glColor4hNV (gl.Color4hNV) #undef glColor4hvNV #define glColor4hvNV (gl.Color4hvNV) #undef glTexCoord1hNV #define glTexCoord1hNV (gl.TexCoord1hNV) #undef glTexCoord1hvNV #define glTexCoord1hvNV (gl.TexCoord1hvNV) #undef glTexCoord2hNV #define glTexCoord2hNV (gl.TexCoord2hNV) #undef glTexCoord2hvNV #define glTexCoord2hvNV (gl.TexCoord2hvNV) #undef glTexCoord3hNV #define glTexCoord3hNV (gl.TexCoord3hNV) #undef glTexCoord3hvNV #define glTexCoord3hvNV (gl.TexCoord3hvNV) #undef glTexCoord4hNV #define glTexCoord4hNV (gl.TexCoord4hNV) #undef glTexCoord4hvNV #define glTexCoord4hvNV (gl.TexCoord4hvNV) #undef glMultiTexCoord1hNV #define glMultiTexCoord1hNV (gl.MultiTexCoord1hNV) #undef glMultiTexCoord1hvNV #define glMultiTexCoord1hvNV (gl.MultiTexCoord1hvNV) #undef glMultiTexCoord2hNV #define glMultiTexCoord2hNV (gl.MultiTexCoord2hNV) #undef glMultiTexCoord2hvNV #define glMultiTexCoord2hvNV (gl.MultiTexCoord2hvNV) #undef glMultiTexCoord3hNV #define glMultiTexCoord3hNV (gl.MultiTexCoord3hNV) #undef glMultiTexCoord3hvNV #define glMultiTexCoord3hvNV (gl.MultiTexCoord3hvNV) #undef glMultiTexCoord4hNV #define glMultiTexCoord4hNV (gl.MultiTexCoord4hNV) #undef glMultiTexCoord4hvNV #define glMultiTexCoord4hvNV (gl.MultiTexCoord4hvNV) #undef glFogCoordhNV #define glFogCoordhNV (gl.FogCoordhNV) #undef glFogCoordhvNV #define glFogCoordhvNV (gl.FogCoordhvNV) #undef glSecondaryColor3hNV #define glSecondaryColor3hNV (gl.SecondaryColor3hNV) #undef glSecondaryColor3hvNV #define glSecondaryColor3hvNV (gl.SecondaryColor3hvNV) #undef glVertexWeighthNV #define glVertexWeighthNV (gl.VertexWeighthNV) #undef glVertexWeighthvNV #define glVertexWeighthvNV (gl.VertexWeighthvNV) #undef glVertexAttrib1hNV #define glVertexAttrib1hNV (gl.VertexAttrib1hNV) #undef glVertexAttrib1hvNV #define glVertexAttrib1hvNV (gl.VertexAttrib1hvNV) #undef glVertexAttrib2hNV #define glVertexAttrib2hNV (gl.VertexAttrib2hNV) #undef glVertexAttrib2hvNV #define glVertexAttrib2hvNV (gl.VertexAttrib2hvNV) #undef glVertexAttrib3hNV #define glVertexAttrib3hNV (gl.VertexAttrib3hNV) #undef glVertexAttrib3hvNV #define glVertexAttrib3hvNV (gl.VertexAttrib3hvNV) #undef glVertexAttrib4hNV #define glVertexAttrib4hNV (gl.VertexAttrib4hNV) #undef glVertexAttrib4hvNV #define glVertexAttrib4hvNV (gl.VertexAttrib4hvNV) #undef glVertexAttribs1hvNV #define glVertexAttribs1hvNV (gl.VertexAttribs1hvNV) #undef glVertexAttribs2hvNV #define glVertexAttribs2hvNV (gl.VertexAttribs2hvNV) #undef glVertexAttribs3hvNV #define glVertexAttribs3hvNV (gl.VertexAttribs3hvNV) #undef glVertexAttribs4hvNV #define glVertexAttribs4hvNV (gl.VertexAttribs4hvNV) #undef glPixelDataRangeNV #define glPixelDataRangeNV (gl.PixelDataRangeNV) #undef glFlushPixelDataRangeNV #define glFlushPixelDataRangeNV (gl.FlushPixelDataRangeNV) #undef glPrimitiveRestartNV #define glPrimitiveRestartNV (gl.PrimitiveRestartNV) #undef glPrimitiveRestartIndexNV #define glPrimitiveRestartIndexNV (gl.PrimitiveRestartIndexNV) #undef glMapObjectBufferATI #define glMapObjectBufferATI (gl.MapObjectBufferATI) #undef glUnmapObjectBufferATI #define glUnmapObjectBufferATI (gl.UnmapObjectBufferATI) #undef glStencilOpSeparateATI #define glStencilOpSeparateATI (gl.StencilOpSeparateATI) #undef glStencilFuncSeparateATI #define glStencilFuncSeparateATI (gl.StencilFuncSeparateATI) #undef glVertexAttribArrayObjectATI #define glVertexAttribArrayObjectATI (gl.VertexAttribArrayObjectATI) #undef glGetVertexAttribArrayObjectfvATI #define glGetVertexAttribArrayObjectfvATI (gl.GetVertexAttribArrayObjectfvATI) #undef glGetVertexAttribArrayObjectivATI #define glGetVertexAttribArrayObjectivATI (gl.GetVertexAttribArrayObjectivATI) #undef glDepthBoundsEXT #define glDepthBoundsEXT (gl.DepthBoundsEXT) #undef glBlendEquationSeparateEXT #define glBlendEquationSeparateEXT (gl.BlendEquationSeparateEXT) #undef OSMesaColorClamp #define OSMesaColorClamp (gl.OSMesaColorClamp) #undef OSMesaPostprocess #define OSMesaPostprocess (gl.OSMesaPostprocess) #undef OSMesaCreateLDG #define OSMesaCreateLDG (gl.OSMesaCreateLDG) #undef OSMesaDestroyLDG #define OSMesaDestroyLDG (gl.OSMesaDestroyLDG) #undef max_width #define max_width (gl.max_width) #undef max_height #define max_height (gl.max_height) #undef information #define information (gl.information) #undef exception_error #define exception_error (gl.exception_error) #undef gluLookAtf #define gluLookAtf (gl.gluLookAtf) #undef glFrustumf #define glFrustumf (gl.Frustumf) #undef glOrthof #define glOrthof (gl.Orthof) #undef swapbuffer #define swapbuffer (gl.swapbuffer) #undef gluLookAt #define gluLookAt (gl.gluLookAt) #undef glAccumxOES #define glAccumxOES (gl.AccumxOES) #undef glActiveProgramEXT #define glActiveProgramEXT (gl.ActiveProgramEXT) #undef glActiveShaderProgram #define glActiveShaderProgram (gl.ActiveShaderProgram) #undef glActiveVaryingNV #define glActiveVaryingNV (gl.ActiveVaryingNV) #undef glAddSwapHintRectWIN #define glAddSwapHintRectWIN (gl.AddSwapHintRectWIN) #undef glAlphaFuncxOES #define glAlphaFuncxOES (gl.AlphaFuncxOES) #undef glAttachShader #define glAttachShader (gl.AttachShader) #undef glBeginConditionalRender #define glBeginConditionalRender (gl.BeginConditionalRender) #undef glBeginConditionalRenderNV #define glBeginConditionalRenderNV (gl.BeginConditionalRenderNV) #undef glBeginConditionalRenderNVX #define glBeginConditionalRenderNVX (gl.BeginConditionalRenderNVX) #undef glBeginPerfMonitorAMD #define glBeginPerfMonitorAMD (gl.BeginPerfMonitorAMD) #undef glBeginPerfQueryINTEL #define glBeginPerfQueryINTEL (gl.BeginPerfQueryINTEL) #undef glBeginQueryIndexed #define glBeginQueryIndexed (gl.BeginQueryIndexed) #undef glBeginTransformFeedback #define glBeginTransformFeedback (gl.BeginTransformFeedback) #undef glBeginTransformFeedbackEXT #define glBeginTransformFeedbackEXT (gl.BeginTransformFeedbackEXT) #undef glBeginTransformFeedbackNV #define glBeginTransformFeedbackNV (gl.BeginTransformFeedbackNV) #undef glBeginVideoCaptureNV #define glBeginVideoCaptureNV (gl.BeginVideoCaptureNV) #undef glBindAttribLocation #define glBindAttribLocation (gl.BindAttribLocation) #undef glBindBufferBase #define glBindBufferBase (gl.BindBufferBase) #undef glBindBufferBaseEXT #define glBindBufferBaseEXT (gl.BindBufferBaseEXT) #undef glBindBufferBaseNV #define glBindBufferBaseNV (gl.BindBufferBaseNV) #undef glBindBufferOffsetEXT #define glBindBufferOffsetEXT (gl.BindBufferOffsetEXT) #undef glBindBufferOffsetNV #define glBindBufferOffsetNV (gl.BindBufferOffsetNV) #undef glBindBufferRange #define glBindBufferRange (gl.BindBufferRange) #undef glBindBufferRangeEXT #define glBindBufferRangeEXT (gl.BindBufferRangeEXT) #undef glBindBufferRangeNV #define glBindBufferRangeNV (gl.BindBufferRangeNV) #undef glBindBuffersBase #define glBindBuffersBase (gl.BindBuffersBase) #undef glBindBuffersRange #define glBindBuffersRange (gl.BindBuffersRange) #undef glBindFragDataLocation #define glBindFragDataLocation (gl.BindFragDataLocation) #undef glBindFragDataLocationEXT #define glBindFragDataLocationEXT (gl.BindFragDataLocationEXT) #undef glBindFragDataLocationIndexed #define glBindFragDataLocationIndexed (gl.BindFragDataLocationIndexed) #undef glBindFramebuffer #define glBindFramebuffer (gl.BindFramebuffer) #undef glBindFramebufferEXT #define glBindFramebufferEXT (gl.BindFramebufferEXT) #undef glBindImageTexture #define glBindImageTexture (gl.BindImageTexture) #undef glBindImageTextureEXT #define glBindImageTextureEXT (gl.BindImageTextureEXT) #undef glBindImageTextures #define glBindImageTextures (gl.BindImageTextures) #undef glBindMultiTextureEXT #define glBindMultiTextureEXT (gl.BindMultiTextureEXT) #undef glBindProgramPipeline #define glBindProgramPipeline (gl.BindProgramPipeline) #undef glBindRenderbuffer #define glBindRenderbuffer (gl.BindRenderbuffer) #undef glBindRenderbufferEXT #define glBindRenderbufferEXT (gl.BindRenderbufferEXT) #undef glBindSampler #define glBindSampler (gl.BindSampler) #undef glBindSamplers #define glBindSamplers (gl.BindSamplers) #undef glBindTextures #define glBindTextures (gl.BindTextures) #undef glBindTransformFeedback #define glBindTransformFeedback (gl.BindTransformFeedback) #undef glBindTransformFeedbackNV #define glBindTransformFeedbackNV (gl.BindTransformFeedbackNV) #undef glBindVertexArray #define glBindVertexArray (gl.BindVertexArray) #undef glBindVertexBuffer #define glBindVertexBuffer (gl.BindVertexBuffer) #undef glBindVertexBuffers #define glBindVertexBuffers (gl.BindVertexBuffers) #undef glBindVideoCaptureStreamBufferNV #define glBindVideoCaptureStreamBufferNV (gl.BindVideoCaptureStreamBufferNV) #undef glBindVideoCaptureStreamTextureNV #define glBindVideoCaptureStreamTextureNV (gl.BindVideoCaptureStreamTextureNV) #undef glBitmapxOES #define glBitmapxOES (gl.BitmapxOES) #undef glBlendBarrierNV #define glBlendBarrierNV (gl.BlendBarrierNV) #undef glBlendColorxOES #define glBlendColorxOES (gl.BlendColorxOES) #undef glBlendEquationIndexedAMD #define glBlendEquationIndexedAMD (gl.BlendEquationIndexedAMD) #undef glBlendEquationSeparate #define glBlendEquationSeparate (gl.BlendEquationSeparate) #undef glBlendEquationSeparateIndexedAMD #define glBlendEquationSeparateIndexedAMD (gl.BlendEquationSeparateIndexedAMD) #undef glBlendEquationSeparatei #define glBlendEquationSeparatei (gl.BlendEquationSeparatei) #undef glBlendEquationSeparateiARB #define glBlendEquationSeparateiARB (gl.BlendEquationSeparateiARB) #undef glBlendEquationi #define glBlendEquationi (gl.BlendEquationi) #undef glBlendEquationiARB #define glBlendEquationiARB (gl.BlendEquationiARB) #undef glBlendFuncIndexedAMD #define glBlendFuncIndexedAMD (gl.BlendFuncIndexedAMD) #undef glBlendFuncSeparateIndexedAMD #define glBlendFuncSeparateIndexedAMD (gl.BlendFuncSeparateIndexedAMD) #undef glBlendFuncSeparatei #define glBlendFuncSeparatei (gl.BlendFuncSeparatei) #undef glBlendFuncSeparateiARB #define glBlendFuncSeparateiARB (gl.BlendFuncSeparateiARB) #undef glBlendFunci #define glBlendFunci (gl.BlendFunci) #undef glBlendFunciARB #define glBlendFunciARB (gl.BlendFunciARB) #undef glBlendParameteriNV #define glBlendParameteriNV (gl.BlendParameteriNV) #undef glBlitFramebuffer #define glBlitFramebuffer (gl.BlitFramebuffer) #undef glBlitFramebufferEXT #define glBlitFramebufferEXT (gl.BlitFramebufferEXT) #undef glBufferAddressRangeNV #define glBufferAddressRangeNV (gl.BufferAddressRangeNV) #undef glBufferParameteriAPPLE #define glBufferParameteriAPPLE (gl.BufferParameteriAPPLE) #undef glBufferStorage #define glBufferStorage (gl.BufferStorage) #undef glCheckFramebufferStatus #define glCheckFramebufferStatus (gl.CheckFramebufferStatus) #undef glCheckFramebufferStatusEXT #define glCheckFramebufferStatusEXT (gl.CheckFramebufferStatusEXT) #undef glCheckNamedFramebufferStatusEXT #define glCheckNamedFramebufferStatusEXT (gl.CheckNamedFramebufferStatusEXT) #undef glClampColor #define glClampColor (gl.ClampColor) #undef glClampColorARB #define glClampColorARB (gl.ClampColorARB) #undef glClearAccumxOES #define glClearAccumxOES (gl.ClearAccumxOES) #undef glClearBufferData #define glClearBufferData (gl.ClearBufferData) #undef glClearBufferSubData #define glClearBufferSubData (gl.ClearBufferSubData) #undef glClearBufferfi #define glClearBufferfi (gl.ClearBufferfi) #undef glClearBufferfv #define glClearBufferfv (gl.ClearBufferfv) #undef glClearBufferiv #define glClearBufferiv (gl.ClearBufferiv) #undef glClearBufferuiv #define glClearBufferuiv (gl.ClearBufferuiv) #undef glClearColorIiEXT #define glClearColorIiEXT (gl.ClearColorIiEXT) #undef glClearColorIuiEXT #define glClearColorIuiEXT (gl.ClearColorIuiEXT) #undef glClearColorxOES #define glClearColorxOES (gl.ClearColorxOES) #undef glClearDebugLogMESA #define glClearDebugLogMESA (gl.ClearDebugLogMESA) #undef glClearDepthdNV #define glClearDepthdNV (gl.ClearDepthdNV) #undef glClearDepthf #define glClearDepthf (gl.ClearDepthf) #undef glClearDepthfOES #define glClearDepthfOES (gl.ClearDepthfOES) #undef glClearDepthxOES #define glClearDepthxOES (gl.ClearDepthxOES) #undef glClearNamedBufferDataEXT #define glClearNamedBufferDataEXT (gl.ClearNamedBufferDataEXT) #undef glClearNamedBufferSubDataEXT #define glClearNamedBufferSubDataEXT (gl.ClearNamedBufferSubDataEXT) #undef glClearTexImage #define glClearTexImage (gl.ClearTexImage) #undef glClearTexSubImage #define glClearTexSubImage (gl.ClearTexSubImage) #undef glClientAttribDefaultEXT #define glClientAttribDefaultEXT (gl.ClientAttribDefaultEXT) #undef glClientWaitSync #define glClientWaitSync (gl.ClientWaitSync) #undef glClipPlanefOES #define glClipPlanefOES (gl.ClipPlanefOES) #undef glClipPlanexOES #define glClipPlanexOES (gl.ClipPlanexOES) #undef glColor3xOES #define glColor3xOES (gl.Color3xOES) #undef glColor3xvOES #define glColor3xvOES (gl.Color3xvOES) #undef glColor4xOES #define glColor4xOES (gl.Color4xOES) #undef glColor4xvOES #define glColor4xvOES (gl.Color4xvOES) #undef glColorFormatNV #define glColorFormatNV (gl.ColorFormatNV) #undef glColorMaskIndexedEXT #define glColorMaskIndexedEXT (gl.ColorMaskIndexedEXT) #undef glColorMaski #define glColorMaski (gl.ColorMaski) #undef glColorP3ui #define glColorP3ui (gl.ColorP3ui) #undef glColorP3uiv #define glColorP3uiv (gl.ColorP3uiv) #undef glColorP4ui #define glColorP4ui (gl.ColorP4ui) #undef glColorP4uiv #define glColorP4uiv (gl.ColorP4uiv) #undef glCompileShader #define glCompileShader (gl.CompileShader) #undef glCompileShaderIncludeARB #define glCompileShaderIncludeARB (gl.CompileShaderIncludeARB) #undef glCompressedMultiTexImage1DEXT #define glCompressedMultiTexImage1DEXT (gl.CompressedMultiTexImage1DEXT) #undef glCompressedMultiTexImage2DEXT #define glCompressedMultiTexImage2DEXT (gl.CompressedMultiTexImage2DEXT) #undef glCompressedMultiTexImage3DEXT #define glCompressedMultiTexImage3DEXT (gl.CompressedMultiTexImage3DEXT) #undef glCompressedMultiTexSubImage1DEXT #define glCompressedMultiTexSubImage1DEXT (gl.CompressedMultiTexSubImage1DEXT) #undef glCompressedMultiTexSubImage2DEXT #define glCompressedMultiTexSubImage2DEXT (gl.CompressedMultiTexSubImage2DEXT) #undef glCompressedMultiTexSubImage3DEXT #define glCompressedMultiTexSubImage3DEXT (gl.CompressedMultiTexSubImage3DEXT) #undef glCompressedTextureImage1DEXT #define glCompressedTextureImage1DEXT (gl.CompressedTextureImage1DEXT) #undef glCompressedTextureImage2DEXT #define glCompressedTextureImage2DEXT (gl.CompressedTextureImage2DEXT) #undef glCompressedTextureImage3DEXT #define glCompressedTextureImage3DEXT (gl.CompressedTextureImage3DEXT) #undef glCompressedTextureSubImage1DEXT #define glCompressedTextureSubImage1DEXT (gl.CompressedTextureSubImage1DEXT) #undef glCompressedTextureSubImage2DEXT #define glCompressedTextureSubImage2DEXT (gl.CompressedTextureSubImage2DEXT) #undef glCompressedTextureSubImage3DEXT #define glCompressedTextureSubImage3DEXT (gl.CompressedTextureSubImage3DEXT) #undef glConvolutionParameterxOES #define glConvolutionParameterxOES (gl.ConvolutionParameterxOES) #undef glConvolutionParameterxvOES #define glConvolutionParameterxvOES (gl.ConvolutionParameterxvOES) #undef glCopyBufferSubData #define glCopyBufferSubData (gl.CopyBufferSubData) #undef glCopyImageSubData #define glCopyImageSubData (gl.CopyImageSubData) #undef glCopyImageSubDataNV #define glCopyImageSubDataNV (gl.CopyImageSubDataNV) #undef glCopyMultiTexImage1DEXT #define glCopyMultiTexImage1DEXT (gl.CopyMultiTexImage1DEXT) #undef glCopyMultiTexImage2DEXT #define glCopyMultiTexImage2DEXT (gl.CopyMultiTexImage2DEXT) #undef glCopyMultiTexSubImage1DEXT #define glCopyMultiTexSubImage1DEXT (gl.CopyMultiTexSubImage1DEXT) #undef glCopyMultiTexSubImage2DEXT #define glCopyMultiTexSubImage2DEXT (gl.CopyMultiTexSubImage2DEXT) #undef glCopyMultiTexSubImage3DEXT #define glCopyMultiTexSubImage3DEXT (gl.CopyMultiTexSubImage3DEXT) #undef glCopyPathNV #define glCopyPathNV (gl.CopyPathNV) #undef glCopyTextureImage1DEXT #define glCopyTextureImage1DEXT (gl.CopyTextureImage1DEXT) #undef glCopyTextureImage2DEXT #define glCopyTextureImage2DEXT (gl.CopyTextureImage2DEXT) #undef glCopyTextureSubImage1DEXT #define glCopyTextureSubImage1DEXT (gl.CopyTextureSubImage1DEXT) #undef glCopyTextureSubImage2DEXT #define glCopyTextureSubImage2DEXT (gl.CopyTextureSubImage2DEXT) #undef glCopyTextureSubImage3DEXT #define glCopyTextureSubImage3DEXT (gl.CopyTextureSubImage3DEXT) #undef glCoverFillPathInstancedNV #define glCoverFillPathInstancedNV (gl.CoverFillPathInstancedNV) #undef glCoverFillPathNV #define glCoverFillPathNV (gl.CoverFillPathNV) #undef glCoverStrokePathInstancedNV #define glCoverStrokePathInstancedNV (gl.CoverStrokePathInstancedNV) #undef glCoverStrokePathNV #define glCoverStrokePathNV (gl.CoverStrokePathNV) #undef glCreateDebugObjectMESA #define glCreateDebugObjectMESA (gl.CreateDebugObjectMESA) #undef glCreatePerfQueryINTEL #define glCreatePerfQueryINTEL (gl.CreatePerfQueryINTEL) #undef glCreateProgram #define glCreateProgram (gl.CreateProgram) #undef glCreateShader #define glCreateShader (gl.CreateShader) #undef glCreateShaderProgramEXT #define glCreateShaderProgramEXT (gl.CreateShaderProgramEXT) #undef glCreateShaderProgramv #define glCreateShaderProgramv (gl.CreateShaderProgramv) #undef glCreateSyncFromCLeventARB #define glCreateSyncFromCLeventARB (gl.CreateSyncFromCLeventARB) #undef glDebugMessageCallback #define glDebugMessageCallback (gl.DebugMessageCallback) #undef glDebugMessageCallbackAMD #define glDebugMessageCallbackAMD (gl.DebugMessageCallbackAMD) #undef glDebugMessageCallbackARB #define glDebugMessageCallbackARB (gl.DebugMessageCallbackARB) #undef glDebugMessageControl #define glDebugMessageControl (gl.DebugMessageControl) #undef glDebugMessageControlARB #define glDebugMessageControlARB (gl.DebugMessageControlARB) #undef glDebugMessageEnableAMD #define glDebugMessageEnableAMD (gl.DebugMessageEnableAMD) #undef glDebugMessageInsert #define glDebugMessageInsert (gl.DebugMessageInsert) #undef glDebugMessageInsertAMD #define glDebugMessageInsertAMD (gl.DebugMessageInsertAMD) #undef glDebugMessageInsertARB #define glDebugMessageInsertARB (gl.DebugMessageInsertARB) #undef glDeleteFramebuffers #define glDeleteFramebuffers (gl.DeleteFramebuffers) #undef glDeleteFramebuffersEXT #define glDeleteFramebuffersEXT (gl.DeleteFramebuffersEXT) #undef glDeleteNamedStringARB #define glDeleteNamedStringARB (gl.DeleteNamedStringARB) #undef glDeleteNamesAMD #define glDeleteNamesAMD (gl.DeleteNamesAMD) #undef glDeleteObjectBufferATI #define glDeleteObjectBufferATI (gl.DeleteObjectBufferATI) #undef glDeletePathsNV #define glDeletePathsNV (gl.DeletePathsNV) #undef glDeletePerfMonitorsAMD #define glDeletePerfMonitorsAMD (gl.DeletePerfMonitorsAMD) #undef glDeletePerfQueryINTEL #define glDeletePerfQueryINTEL (gl.DeletePerfQueryINTEL) #undef glDeleteProgram #define glDeleteProgram (gl.DeleteProgram) #undef glDeleteProgramPipelines #define glDeleteProgramPipelines (gl.DeleteProgramPipelines) #undef glDeleteRenderbuffers #define glDeleteRenderbuffers (gl.DeleteRenderbuffers) #undef glDeleteRenderbuffersEXT #define glDeleteRenderbuffersEXT (gl.DeleteRenderbuffersEXT) #undef glDeleteSamplers #define glDeleteSamplers (gl.DeleteSamplers) #undef glDeleteShader #define glDeleteShader (gl.DeleteShader) #undef glDeleteSync #define glDeleteSync (gl.DeleteSync) #undef glDeleteTransformFeedbacks #define glDeleteTransformFeedbacks (gl.DeleteTransformFeedbacks) #undef glDeleteTransformFeedbacksNV #define glDeleteTransformFeedbacksNV (gl.DeleteTransformFeedbacksNV) #undef glDeleteVertexArrays #define glDeleteVertexArrays (gl.DeleteVertexArrays) #undef glDepthBoundsdNV #define glDepthBoundsdNV (gl.DepthBoundsdNV) #undef glDepthRangeArrayv #define glDepthRangeArrayv (gl.DepthRangeArrayv) #undef glDepthRangeIndexed #define glDepthRangeIndexed (gl.DepthRangeIndexed) #undef glDepthRangedNV #define glDepthRangedNV (gl.DepthRangedNV) #undef glDepthRangef #define glDepthRangef (gl.DepthRangef) #undef glDepthRangefOES #define glDepthRangefOES (gl.DepthRangefOES) #undef glDepthRangexOES #define glDepthRangexOES (gl.DepthRangexOES) #undef glDetachShader #define glDetachShader (gl.DetachShader) #undef glDisableClientStateIndexedEXT #define glDisableClientStateIndexedEXT (gl.DisableClientStateIndexedEXT) #undef glDisableClientStateiEXT #define glDisableClientStateiEXT (gl.DisableClientStateiEXT) #undef glDisableIndexedEXT #define glDisableIndexedEXT (gl.DisableIndexedEXT) #undef glDisableVertexArrayAttribEXT #define glDisableVertexArrayAttribEXT (gl.DisableVertexArrayAttribEXT) #undef glDisableVertexArrayEXT #define glDisableVertexArrayEXT (gl.DisableVertexArrayEXT) #undef glDisableVertexAttribAPPLE #define glDisableVertexAttribAPPLE (gl.DisableVertexAttribAPPLE) #undef glDisableVertexAttribArray #define glDisableVertexAttribArray (gl.DisableVertexAttribArray) #undef glDisablei #define glDisablei (gl.Disablei) #undef glDispatchCompute #define glDispatchCompute (gl.DispatchCompute) #undef glDispatchComputeGroupSizeARB #define glDispatchComputeGroupSizeARB (gl.DispatchComputeGroupSizeARB) #undef glDispatchComputeIndirect #define glDispatchComputeIndirect (gl.DispatchComputeIndirect) #undef glDrawArraysIndirect #define glDrawArraysIndirect (gl.DrawArraysIndirect) #undef glDrawArraysInstanced #define glDrawArraysInstanced (gl.DrawArraysInstanced) #undef glDrawArraysInstancedARB #define glDrawArraysInstancedARB (gl.DrawArraysInstancedARB) #undef glDrawArraysInstancedBaseInstance #define glDrawArraysInstancedBaseInstance (gl.DrawArraysInstancedBaseInstance) #undef glDrawArraysInstancedEXT #define glDrawArraysInstancedEXT (gl.DrawArraysInstancedEXT) #undef glDrawBuffers #define glDrawBuffers (gl.DrawBuffers) #undef glDrawElementsBaseVertex #define glDrawElementsBaseVertex (gl.DrawElementsBaseVertex) #undef glDrawElementsIndirect #define glDrawElementsIndirect (gl.DrawElementsIndirect) #undef glDrawElementsInstanced #define glDrawElementsInstanced (gl.DrawElementsInstanced) #undef glDrawElementsInstancedARB #define glDrawElementsInstancedARB (gl.DrawElementsInstancedARB) #undef glDrawElementsInstancedBaseInstance #define glDrawElementsInstancedBaseInstance (gl.DrawElementsInstancedBaseInstance) #undef glDrawElementsInstancedBaseVertex #define glDrawElementsInstancedBaseVertex (gl.DrawElementsInstancedBaseVertex) #undef glDrawElementsInstancedBaseVertexBaseInstance #define glDrawElementsInstancedBaseVertexBaseInstance (gl.DrawElementsInstancedBaseVertexBaseInstance) #undef glDrawElementsInstancedEXT #define glDrawElementsInstancedEXT (gl.DrawElementsInstancedEXT) #undef glDrawRangeElementsBaseVertex #define glDrawRangeElementsBaseVertex (gl.DrawRangeElementsBaseVertex) #undef glDrawTextureNV #define glDrawTextureNV (gl.DrawTextureNV) #undef glDrawTransformFeedback #define glDrawTransformFeedback (gl.DrawTransformFeedback) #undef glDrawTransformFeedbackInstanced #define glDrawTransformFeedbackInstanced (gl.DrawTransformFeedbackInstanced) #undef glDrawTransformFeedbackNV #define glDrawTransformFeedbackNV (gl.DrawTransformFeedbackNV) #undef glDrawTransformFeedbackStream #define glDrawTransformFeedbackStream (gl.DrawTransformFeedbackStream) #undef glDrawTransformFeedbackStreamInstanced #define glDrawTransformFeedbackStreamInstanced (gl.DrawTransformFeedbackStreamInstanced) #undef glEdgeFlagFormatNV #define glEdgeFlagFormatNV (gl.EdgeFlagFormatNV) #undef glEnableClientStateIndexedEXT #define glEnableClientStateIndexedEXT (gl.EnableClientStateIndexedEXT) #undef glEnableClientStateiEXT #define glEnableClientStateiEXT (gl.EnableClientStateiEXT) #undef glEnableIndexedEXT #define glEnableIndexedEXT (gl.EnableIndexedEXT) #undef glEnableVertexArrayAttribEXT #define glEnableVertexArrayAttribEXT (gl.EnableVertexArrayAttribEXT) #undef glEnableVertexArrayEXT #define glEnableVertexArrayEXT (gl.EnableVertexArrayEXT) #undef glEnableVertexAttribAPPLE #define glEnableVertexAttribAPPLE (gl.EnableVertexAttribAPPLE) #undef glEnableVertexAttribArray #define glEnableVertexAttribArray (gl.EnableVertexAttribArray) #undef glEnablei #define glEnablei (gl.Enablei) #undef glEndConditionalRender #define glEndConditionalRender (gl.EndConditionalRender) #undef glEndConditionalRenderNV #define glEndConditionalRenderNV (gl.EndConditionalRenderNV) #undef glEndConditionalRenderNVX #define glEndConditionalRenderNVX (gl.EndConditionalRenderNVX) #undef glEndPerfMonitorAMD #define glEndPerfMonitorAMD (gl.EndPerfMonitorAMD) #undef glEndPerfQueryINTEL #define glEndPerfQueryINTEL (gl.EndPerfQueryINTEL) #undef glEndQueryIndexed #define glEndQueryIndexed (gl.EndQueryIndexed) #undef glEndTransformFeedback #define glEndTransformFeedback (gl.EndTransformFeedback) #undef glEndTransformFeedbackEXT #define glEndTransformFeedbackEXT (gl.EndTransformFeedbackEXT) #undef glEndTransformFeedbackNV #define glEndTransformFeedbackNV (gl.EndTransformFeedbackNV) #undef glEndVideoCaptureNV #define glEndVideoCaptureNV (gl.EndVideoCaptureNV) #undef glEvalCoord1xOES #define glEvalCoord1xOES (gl.EvalCoord1xOES) #undef glEvalCoord1xvOES #define glEvalCoord1xvOES (gl.EvalCoord1xvOES) #undef glEvalCoord2xOES #define glEvalCoord2xOES (gl.EvalCoord2xOES) #undef glEvalCoord2xvOES #define glEvalCoord2xvOES (gl.EvalCoord2xvOES) #undef glFeedbackBufferxOES #define glFeedbackBufferxOES (gl.FeedbackBufferxOES) #undef glFenceSync #define glFenceSync (gl.FenceSync) #undef glFinishRenderAPPLE #define glFinishRenderAPPLE (gl.FinishRenderAPPLE) #undef glFlushMappedBufferRange #define glFlushMappedBufferRange (gl.FlushMappedBufferRange) #undef glFlushMappedBufferRangeAPPLE #define glFlushMappedBufferRangeAPPLE (gl.FlushMappedBufferRangeAPPLE) #undef glFlushMappedNamedBufferRangeEXT #define glFlushMappedNamedBufferRangeEXT (gl.FlushMappedNamedBufferRangeEXT) #undef glFlushRenderAPPLE #define glFlushRenderAPPLE (gl.FlushRenderAPPLE) #undef glFlushStaticDataIBM #define glFlushStaticDataIBM (gl.FlushStaticDataIBM) #undef glFogCoordFormatNV #define glFogCoordFormatNV (gl.FogCoordFormatNV) #undef glFogxOES #define glFogxOES (gl.FogxOES) #undef glFogxvOES #define glFogxvOES (gl.FogxvOES) #undef glFrameTerminatorGREMEDY #define glFrameTerminatorGREMEDY (gl.FrameTerminatorGREMEDY) #undef glFramebufferDrawBufferEXT #define glFramebufferDrawBufferEXT (gl.FramebufferDrawBufferEXT) #undef glFramebufferDrawBuffersEXT #define glFramebufferDrawBuffersEXT (gl.FramebufferDrawBuffersEXT) #undef glFramebufferParameteri #define glFramebufferParameteri (gl.FramebufferParameteri) #undef glFramebufferReadBufferEXT #define glFramebufferReadBufferEXT (gl.FramebufferReadBufferEXT) #undef glFramebufferRenderbuffer #define glFramebufferRenderbuffer (gl.FramebufferRenderbuffer) #undef glFramebufferRenderbufferEXT #define glFramebufferRenderbufferEXT (gl.FramebufferRenderbufferEXT) #undef glFramebufferTexture #define glFramebufferTexture (gl.FramebufferTexture) #undef glFramebufferTexture1D #define glFramebufferTexture1D (gl.FramebufferTexture1D) #undef glFramebufferTexture1DEXT #define glFramebufferTexture1DEXT (gl.FramebufferTexture1DEXT) #undef glFramebufferTexture2D #define glFramebufferTexture2D (gl.FramebufferTexture2D) #undef glFramebufferTexture2DEXT #define glFramebufferTexture2DEXT (gl.FramebufferTexture2DEXT) #undef glFramebufferTexture3D #define glFramebufferTexture3D (gl.FramebufferTexture3D) #undef glFramebufferTexture3DEXT #define glFramebufferTexture3DEXT (gl.FramebufferTexture3DEXT) #undef glFramebufferTextureARB #define glFramebufferTextureARB (gl.FramebufferTextureARB) #undef glFramebufferTextureEXT #define glFramebufferTextureEXT (gl.FramebufferTextureEXT) #undef glFramebufferTextureFaceARB #define glFramebufferTextureFaceARB (gl.FramebufferTextureFaceARB) #undef glFramebufferTextureFaceEXT #define glFramebufferTextureFaceEXT (gl.FramebufferTextureFaceEXT) #undef glFramebufferTextureLayer #define glFramebufferTextureLayer (gl.FramebufferTextureLayer) #undef glFramebufferTextureLayerARB #define glFramebufferTextureLayerARB (gl.FramebufferTextureLayerARB) #undef glFramebufferTextureLayerEXT #define glFramebufferTextureLayerEXT (gl.FramebufferTextureLayerEXT) #undef glFrustumfOES #define glFrustumfOES (gl.FrustumfOES) #undef glFrustumxOES #define glFrustumxOES (gl.FrustumxOES) #undef glGenFramebuffers #define glGenFramebuffers (gl.GenFramebuffers) #undef glGenFramebuffersEXT #define glGenFramebuffersEXT (gl.GenFramebuffersEXT) #undef glGenNamesAMD #define glGenNamesAMD (gl.GenNamesAMD) #undef glGenPathsNV #define glGenPathsNV (gl.GenPathsNV) #undef glGenPerfMonitorsAMD #define glGenPerfMonitorsAMD (gl.GenPerfMonitorsAMD) #undef glGenProgramPipelines #define glGenProgramPipelines (gl.GenProgramPipelines) #undef glGenRenderbuffers #define glGenRenderbuffers (gl.GenRenderbuffers) #undef glGenRenderbuffersEXT #define glGenRenderbuffersEXT (gl.GenRenderbuffersEXT) #undef glGenSamplers #define glGenSamplers (gl.GenSamplers) #undef glGenTransformFeedbacks #define glGenTransformFeedbacks (gl.GenTransformFeedbacks) #undef glGenTransformFeedbacksNV #define glGenTransformFeedbacksNV (gl.GenTransformFeedbacksNV) #undef glGenVertexArrays #define glGenVertexArrays (gl.GenVertexArrays) #undef glGenerateMipmap #define glGenerateMipmap (gl.GenerateMipmap) #undef glGenerateMipmapEXT #define glGenerateMipmapEXT (gl.GenerateMipmapEXT) #undef glGenerateMultiTexMipmapEXT #define glGenerateMultiTexMipmapEXT (gl.GenerateMultiTexMipmapEXT) #undef glGenerateTextureMipmapEXT #define glGenerateTextureMipmapEXT (gl.GenerateTextureMipmapEXT) #undef glGetActiveAtomicCounterBufferiv #define glGetActiveAtomicCounterBufferiv (gl.GetActiveAtomicCounterBufferiv) #undef glGetActiveAttrib #define glGetActiveAttrib (gl.GetActiveAttrib) #undef glGetActiveSubroutineName #define glGetActiveSubroutineName (gl.GetActiveSubroutineName) #undef glGetActiveSubroutineUniformName #define glGetActiveSubroutineUniformName (gl.GetActiveSubroutineUniformName) #undef glGetActiveSubroutineUniformiv #define glGetActiveSubroutineUniformiv (gl.GetActiveSubroutineUniformiv) #undef glGetActiveUniform #define glGetActiveUniform (gl.GetActiveUniform) #undef glGetActiveUniformBlockIndex #define glGetActiveUniformBlockIndex (gl.GetActiveUniformBlockIndex) #undef glGetActiveUniformBlockName #define glGetActiveUniformBlockName (gl.GetActiveUniformBlockName) #undef glGetActiveUniformBlockiv #define glGetActiveUniformBlockiv (gl.GetActiveUniformBlockiv) #undef glGetActiveUniformName #define glGetActiveUniformName (gl.GetActiveUniformName) #undef glGetActiveUniformsiv #define glGetActiveUniformsiv (gl.GetActiveUniformsiv) #undef glGetActiveVaryingNV #define glGetActiveVaryingNV (gl.GetActiveVaryingNV) #undef glGetAttachedShaders #define glGetAttachedShaders (gl.GetAttachedShaders) #undef glGetAttribLocation #define glGetAttribLocation (gl.GetAttribLocation) #undef glGetBooleanIndexedvEXT #define glGetBooleanIndexedvEXT (gl.GetBooleanIndexedvEXT) #undef glGetBooleani_v #define glGetBooleani_v (gl.GetBooleani_v) #undef glGetBufferParameteri64v #define glGetBufferParameteri64v (gl.GetBufferParameteri64v) #undef glGetBufferParameterui64vNV #define glGetBufferParameterui64vNV (gl.GetBufferParameterui64vNV) #undef glGetClipPlanefOES #define glGetClipPlanefOES (gl.GetClipPlanefOES) #undef glGetClipPlanexOES #define glGetClipPlanexOES (gl.GetClipPlanexOES) #undef glGetCompressedMultiTexImageEXT #define glGetCompressedMultiTexImageEXT (gl.GetCompressedMultiTexImageEXT) #undef glGetCompressedTextureImageEXT #define glGetCompressedTextureImageEXT (gl.GetCompressedTextureImageEXT) #undef glGetConvolutionParameterxvOES #define glGetConvolutionParameterxvOES (gl.GetConvolutionParameterxvOES) #undef glGetDebugLogLengthMESA #define glGetDebugLogLengthMESA (gl.GetDebugLogLengthMESA) #undef glGetDebugLogMESA #define glGetDebugLogMESA (gl.GetDebugLogMESA) #undef glGetDebugMessageLog #define glGetDebugMessageLog (gl.GetDebugMessageLog) #undef glGetDebugMessageLogAMD #define glGetDebugMessageLogAMD (gl.GetDebugMessageLogAMD) #undef glGetDebugMessageLogARB #define glGetDebugMessageLogARB (gl.GetDebugMessageLogARB) #undef glGetDoubleIndexedvEXT #define glGetDoubleIndexedvEXT (gl.GetDoubleIndexedvEXT) #undef glGetDoublei_v #define glGetDoublei_v (gl.GetDoublei_v) #undef glGetDoublei_vEXT #define glGetDoublei_vEXT (gl.GetDoublei_vEXT) #undef glGetFirstPerfQueryIdINTEL #define glGetFirstPerfQueryIdINTEL (gl.GetFirstPerfQueryIdINTEL) #undef glGetFixedvOES #define glGetFixedvOES (gl.GetFixedvOES) #undef glGetFloatIndexedvEXT #define glGetFloatIndexedvEXT (gl.GetFloatIndexedvEXT) #undef glGetFloati_v #define glGetFloati_v (gl.GetFloati_v) #undef glGetFloati_vEXT #define glGetFloati_vEXT (gl.GetFloati_vEXT) #undef glGetFragDataIndex #define glGetFragDataIndex (gl.GetFragDataIndex) #undef glGetFragDataLocation #define glGetFragDataLocation (gl.GetFragDataLocation) #undef glGetFragDataLocationEXT #define glGetFragDataLocationEXT (gl.GetFragDataLocationEXT) #undef glGetFramebufferAttachmentParameteriv #define glGetFramebufferAttachmentParameteriv (gl.GetFramebufferAttachmentParameteriv) #undef glGetFramebufferAttachmentParameterivEXT #define glGetFramebufferAttachmentParameterivEXT (gl.GetFramebufferAttachmentParameterivEXT) #undef glGetFramebufferParameteriv #define glGetFramebufferParameteriv (gl.GetFramebufferParameteriv) #undef glGetFramebufferParameterivEXT #define glGetFramebufferParameterivEXT (gl.GetFramebufferParameterivEXT) #undef glGetGraphicsResetStatusARB #define glGetGraphicsResetStatusARB (gl.GetGraphicsResetStatusARB) #undef glGetHistogramParameterxvOES #define glGetHistogramParameterxvOES (gl.GetHistogramParameterxvOES) #undef glGetImageHandleARB #define glGetImageHandleARB (gl.GetImageHandleARB) #undef glGetImageHandleNV #define glGetImageHandleNV (gl.GetImageHandleNV) #undef glGetInteger64i_v #define glGetInteger64i_v (gl.GetInteger64i_v) #undef glGetInteger64v #define glGetInteger64v (gl.GetInteger64v) #undef glGetIntegerIndexedvEXT #define glGetIntegerIndexedvEXT (gl.GetIntegerIndexedvEXT) #undef glGetIntegeri_v #define glGetIntegeri_v (gl.GetIntegeri_v) #undef glGetIntegerui64i_vNV #define glGetIntegerui64i_vNV (gl.GetIntegerui64i_vNV) #undef glGetIntegerui64vNV #define glGetIntegerui64vNV (gl.GetIntegerui64vNV) #undef glGetInternalformati64v #define glGetInternalformati64v (gl.GetInternalformati64v) #undef glGetInternalformativ #define glGetInternalformativ (gl.GetInternalformativ) #undef glGetLightxOES #define glGetLightxOES (gl.GetLightxOES) #undef glGetMapxvOES #define glGetMapxvOES (gl.GetMapxvOES) #undef glGetMaterialxOES #define glGetMaterialxOES (gl.GetMaterialxOES) #undef glGetMultiTexEnvfvEXT #define glGetMultiTexEnvfvEXT (gl.GetMultiTexEnvfvEXT) #undef glGetMultiTexEnvivEXT #define glGetMultiTexEnvivEXT (gl.GetMultiTexEnvivEXT) #undef glGetMultiTexGendvEXT #define glGetMultiTexGendvEXT (gl.GetMultiTexGendvEXT) #undef glGetMultiTexGenfvEXT #define glGetMultiTexGenfvEXT (gl.GetMultiTexGenfvEXT) #undef glGetMultiTexGenivEXT #define glGetMultiTexGenivEXT (gl.GetMultiTexGenivEXT) #undef glGetMultiTexImageEXT #define glGetMultiTexImageEXT (gl.GetMultiTexImageEXT) #undef glGetMultiTexLevelParameterfvEXT #define glGetMultiTexLevelParameterfvEXT (gl.GetMultiTexLevelParameterfvEXT) #undef glGetMultiTexLevelParameterivEXT #define glGetMultiTexLevelParameterivEXT (gl.GetMultiTexLevelParameterivEXT) #undef glGetMultiTexParameterIivEXT #define glGetMultiTexParameterIivEXT (gl.GetMultiTexParameterIivEXT) #undef glGetMultiTexParameterIuivEXT #define glGetMultiTexParameterIuivEXT (gl.GetMultiTexParameterIuivEXT) #undef glGetMultiTexParameterfvEXT #define glGetMultiTexParameterfvEXT (gl.GetMultiTexParameterfvEXT) #undef glGetMultiTexParameterivEXT #define glGetMultiTexParameterivEXT (gl.GetMultiTexParameterivEXT) #undef glGetMultisamplefv #define glGetMultisamplefv (gl.GetMultisamplefv) #undef glGetMultisamplefvNV #define glGetMultisamplefvNV (gl.GetMultisamplefvNV) #undef glGetNamedBufferParameterivEXT #define glGetNamedBufferParameterivEXT (gl.GetNamedBufferParameterivEXT) #undef glGetNamedBufferParameterui64vNV #define glGetNamedBufferParameterui64vNV (gl.GetNamedBufferParameterui64vNV) #undef glGetNamedBufferPointervEXT #define glGetNamedBufferPointervEXT (gl.GetNamedBufferPointervEXT) #undef glGetNamedBufferSubDataEXT #define glGetNamedBufferSubDataEXT (gl.GetNamedBufferSubDataEXT) #undef glGetNamedFramebufferAttachmentParameterivEXT #define glGetNamedFramebufferAttachmentParameterivEXT (gl.GetNamedFramebufferAttachmentParameterivEXT) #undef glGetNamedFramebufferParameterivEXT #define glGetNamedFramebufferParameterivEXT (gl.GetNamedFramebufferParameterivEXT) #undef glGetNamedProgramLocalParameterIivEXT #define glGetNamedProgramLocalParameterIivEXT (gl.GetNamedProgramLocalParameterIivEXT) #undef glGetNamedProgramLocalParameterIuivEXT #define glGetNamedProgramLocalParameterIuivEXT (gl.GetNamedProgramLocalParameterIuivEXT) #undef glGetNamedProgramLocalParameterdvEXT #define glGetNamedProgramLocalParameterdvEXT (gl.GetNamedProgramLocalParameterdvEXT) #undef glGetNamedProgramLocalParameterfvEXT #define glGetNamedProgramLocalParameterfvEXT (gl.GetNamedProgramLocalParameterfvEXT) #undef glGetNamedProgramStringEXT #define glGetNamedProgramStringEXT (gl.GetNamedProgramStringEXT) #undef glGetNamedProgramivEXT #define glGetNamedProgramivEXT (gl.GetNamedProgramivEXT) #undef glGetNamedRenderbufferParameterivEXT #define glGetNamedRenderbufferParameterivEXT (gl.GetNamedRenderbufferParameterivEXT) #undef glGetNamedStringARB #define glGetNamedStringARB (gl.GetNamedStringARB) #undef glGetNamedStringivARB #define glGetNamedStringivARB (gl.GetNamedStringivARB) #undef glGetNextPerfQueryIdINTEL #define glGetNextPerfQueryIdINTEL (gl.GetNextPerfQueryIdINTEL) #undef glGetObjectLabel #define glGetObjectLabel (gl.GetObjectLabel) #undef glGetObjectLabelEXT #define glGetObjectLabelEXT (gl.GetObjectLabelEXT) #undef glGetObjectParameterivAPPLE #define glGetObjectParameterivAPPLE (gl.GetObjectParameterivAPPLE) #undef glGetObjectPtrLabel #define glGetObjectPtrLabel (gl.GetObjectPtrLabel) #undef glGetPathColorGenfvNV #define glGetPathColorGenfvNV (gl.GetPathColorGenfvNV) #undef glGetPathColorGenivNV #define glGetPathColorGenivNV (gl.GetPathColorGenivNV) #undef glGetPathCommandsNV #define glGetPathCommandsNV (gl.GetPathCommandsNV) #undef glGetPathCoordsNV #define glGetPathCoordsNV (gl.GetPathCoordsNV) #undef glGetPathDashArrayNV #define glGetPathDashArrayNV (gl.GetPathDashArrayNV) #undef glGetPathLengthNV #define glGetPathLengthNV (gl.GetPathLengthNV) #undef glGetPathMetricRangeNV #define glGetPathMetricRangeNV (gl.GetPathMetricRangeNV) #undef glGetPathMetricsNV #define glGetPathMetricsNV (gl.GetPathMetricsNV) #undef glGetPathParameterfvNV #define glGetPathParameterfvNV (gl.GetPathParameterfvNV) #undef glGetPathParameterivNV #define glGetPathParameterivNV (gl.GetPathParameterivNV) #undef glGetPathSpacingNV #define glGetPathSpacingNV (gl.GetPathSpacingNV) #undef glGetPathTexGenfvNV #define glGetPathTexGenfvNV (gl.GetPathTexGenfvNV) #undef glGetPathTexGenivNV #define glGetPathTexGenivNV (gl.GetPathTexGenivNV) #undef glGetPerfCounterInfoINTEL #define glGetPerfCounterInfoINTEL (gl.GetPerfCounterInfoINTEL) #undef glGetPerfMonitorCounterDataAMD #define glGetPerfMonitorCounterDataAMD (gl.GetPerfMonitorCounterDataAMD) #undef glGetPerfMonitorCounterInfoAMD #define glGetPerfMonitorCounterInfoAMD (gl.GetPerfMonitorCounterInfoAMD) #undef glGetPerfMonitorCounterStringAMD #define glGetPerfMonitorCounterStringAMD (gl.GetPerfMonitorCounterStringAMD) #undef glGetPerfMonitorCountersAMD #define glGetPerfMonitorCountersAMD (gl.GetPerfMonitorCountersAMD) #undef glGetPerfMonitorGroupStringAMD #define glGetPerfMonitorGroupStringAMD (gl.GetPerfMonitorGroupStringAMD) #undef glGetPerfMonitorGroupsAMD #define glGetPerfMonitorGroupsAMD (gl.GetPerfMonitorGroupsAMD) #undef glGetPerfQueryDataINTEL #define glGetPerfQueryDataINTEL (gl.GetPerfQueryDataINTEL) #undef glGetPerfQueryIdByNameINTEL #define glGetPerfQueryIdByNameINTEL (gl.GetPerfQueryIdByNameINTEL) #undef glGetPerfQueryInfoINTEL #define glGetPerfQueryInfoINTEL (gl.GetPerfQueryInfoINTEL) #undef glGetPixelMapxv #define glGetPixelMapxv (gl.GetPixelMapxv) #undef glGetPixelTransformParameterfvEXT #define glGetPixelTransformParameterfvEXT (gl.GetPixelTransformParameterfvEXT) #undef glGetPixelTransformParameterivEXT #define glGetPixelTransformParameterivEXT (gl.GetPixelTransformParameterivEXT) #undef glGetPointerIndexedvEXT #define glGetPointerIndexedvEXT (gl.GetPointerIndexedvEXT) #undef glGetPointeri_vEXT #define glGetPointeri_vEXT (gl.GetPointeri_vEXT) #undef glGetProgramBinary #define glGetProgramBinary (gl.GetProgramBinary) #undef glGetProgramEnvParameterIivNV #define glGetProgramEnvParameterIivNV (gl.GetProgramEnvParameterIivNV) #undef glGetProgramEnvParameterIuivNV #define glGetProgramEnvParameterIuivNV (gl.GetProgramEnvParameterIuivNV) #undef glGetProgramInfoLog #define glGetProgramInfoLog (gl.GetProgramInfoLog) #undef glGetProgramInterfaceiv #define glGetProgramInterfaceiv (gl.GetProgramInterfaceiv) #undef glGetProgramLocalParameterIivNV #define glGetProgramLocalParameterIivNV (gl.GetProgramLocalParameterIivNV) #undef glGetProgramLocalParameterIuivNV #define glGetProgramLocalParameterIuivNV (gl.GetProgramLocalParameterIuivNV) #undef glGetProgramPipelineInfoLog #define glGetProgramPipelineInfoLog (gl.GetProgramPipelineInfoLog) #undef glGetProgramPipelineiv #define glGetProgramPipelineiv (gl.GetProgramPipelineiv) #undef glGetProgramRegisterfvMESA #define glGetProgramRegisterfvMESA (gl.GetProgramRegisterfvMESA) #undef glGetProgramResourceIndex #define glGetProgramResourceIndex (gl.GetProgramResourceIndex) #undef glGetProgramResourceLocation #define glGetProgramResourceLocation (gl.GetProgramResourceLocation) #undef glGetProgramResourceLocationIndex #define glGetProgramResourceLocationIndex (gl.GetProgramResourceLocationIndex) #undef glGetProgramResourceName #define glGetProgramResourceName (gl.GetProgramResourceName) #undef glGetProgramResourceiv #define glGetProgramResourceiv (gl.GetProgramResourceiv) #undef glGetProgramStageiv #define glGetProgramStageiv (gl.GetProgramStageiv) #undef glGetProgramSubroutineParameteruivNV #define glGetProgramSubroutineParameteruivNV (gl.GetProgramSubroutineParameteruivNV) #undef glGetProgramiv #define glGetProgramiv (gl.GetProgramiv) #undef glGetQueryIndexediv #define glGetQueryIndexediv (gl.GetQueryIndexediv) #undef glGetQueryObjecti64v #define glGetQueryObjecti64v (gl.GetQueryObjecti64v) #undef glGetQueryObjecti64vEXT #define glGetQueryObjecti64vEXT (gl.GetQueryObjecti64vEXT) #undef glGetQueryObjectui64v #define glGetQueryObjectui64v (gl.GetQueryObjectui64v) #undef glGetQueryObjectui64vEXT #define glGetQueryObjectui64vEXT (gl.GetQueryObjectui64vEXT) #undef glGetRenderbufferParameteriv #define glGetRenderbufferParameteriv (gl.GetRenderbufferParameteriv) #undef glGetRenderbufferParameterivEXT #define glGetRenderbufferParameterivEXT (gl.GetRenderbufferParameterivEXT) #undef glGetSamplerParameterIiv #define glGetSamplerParameterIiv (gl.GetSamplerParameterIiv) #undef glGetSamplerParameterIuiv #define glGetSamplerParameterIuiv (gl.GetSamplerParameterIuiv) #undef glGetSamplerParameterfv #define glGetSamplerParameterfv (gl.GetSamplerParameterfv) #undef glGetSamplerParameteriv #define glGetSamplerParameteriv (gl.GetSamplerParameteriv) #undef glGetShaderInfoLog #define glGetShaderInfoLog (gl.GetShaderInfoLog) #undef glGetShaderPrecisionFormat #define glGetShaderPrecisionFormat (gl.GetShaderPrecisionFormat) #undef glGetShaderSource #define glGetShaderSource (gl.GetShaderSource) #undef glGetShaderiv #define glGetShaderiv (gl.GetShaderiv) #undef glGetStringi #define glGetStringi (gl.GetStringi) #undef glGetSubroutineIndex #define glGetSubroutineIndex (gl.GetSubroutineIndex) #undef glGetSubroutineUniformLocation #define glGetSubroutineUniformLocation (gl.GetSubroutineUniformLocation) #undef glGetSynciv #define glGetSynciv (gl.GetSynciv) #undef glGetTexEnvxvOES #define glGetTexEnvxvOES (gl.GetTexEnvxvOES) #undef glGetTexGenxvOES #define glGetTexGenxvOES (gl.GetTexGenxvOES) #undef glGetTexLevelParameterxvOES #define glGetTexLevelParameterxvOES (gl.GetTexLevelParameterxvOES) #undef glGetTexParameterIiv #define glGetTexParameterIiv (gl.GetTexParameterIiv) #undef glGetTexParameterIivEXT #define glGetTexParameterIivEXT (gl.GetTexParameterIivEXT) #undef glGetTexParameterIuiv #define glGetTexParameterIuiv (gl.GetTexParameterIuiv) #undef glGetTexParameterIuivEXT #define glGetTexParameterIuivEXT (gl.GetTexParameterIuivEXT) #undef glGetTexParameterPointervAPPLE #define glGetTexParameterPointervAPPLE (gl.GetTexParameterPointervAPPLE) #undef glGetTexParameterxvOES #define glGetTexParameterxvOES (gl.GetTexParameterxvOES) #undef glGetTextureHandleARB #define glGetTextureHandleARB (gl.GetTextureHandleARB) #undef glGetTextureHandleNV #define glGetTextureHandleNV (gl.GetTextureHandleNV) #undef glGetTextureImageEXT #define glGetTextureImageEXT (gl.GetTextureImageEXT) #undef glGetTextureLevelParameterfvEXT #define glGetTextureLevelParameterfvEXT (gl.GetTextureLevelParameterfvEXT) #undef glGetTextureLevelParameterivEXT #define glGetTextureLevelParameterivEXT (gl.GetTextureLevelParameterivEXT) #undef glGetTextureParameterIivEXT #define glGetTextureParameterIivEXT (gl.GetTextureParameterIivEXT) #undef glGetTextureParameterIuivEXT #define glGetTextureParameterIuivEXT (gl.GetTextureParameterIuivEXT) #undef glGetTextureParameterfvEXT #define glGetTextureParameterfvEXT (gl.GetTextureParameterfvEXT) #undef glGetTextureParameterivEXT #define glGetTextureParameterivEXT (gl.GetTextureParameterivEXT) #undef glGetTextureSamplerHandleARB #define glGetTextureSamplerHandleARB (gl.GetTextureSamplerHandleARB) #undef glGetTextureSamplerHandleNV #define glGetTextureSamplerHandleNV (gl.GetTextureSamplerHandleNV) #undef glGetTransformFeedbackVarying #define glGetTransformFeedbackVarying (gl.GetTransformFeedbackVarying) #undef glGetTransformFeedbackVaryingEXT #define glGetTransformFeedbackVaryingEXT (gl.GetTransformFeedbackVaryingEXT) #undef glGetTransformFeedbackVaryingNV #define glGetTransformFeedbackVaryingNV (gl.GetTransformFeedbackVaryingNV) #undef glGetUniformBlockIndex #define glGetUniformBlockIndex (gl.GetUniformBlockIndex) #undef glGetUniformBufferSizeEXT #define glGetUniformBufferSizeEXT (gl.GetUniformBufferSizeEXT) #undef glGetUniformIndices #define glGetUniformIndices (gl.GetUniformIndices) #undef glGetUniformLocation #define glGetUniformLocation (gl.GetUniformLocation) #undef glGetUniformOffsetEXT #define glGetUniformOffsetEXT (gl.GetUniformOffsetEXT) #undef glGetUniformSubroutineuiv #define glGetUniformSubroutineuiv (gl.GetUniformSubroutineuiv) #undef glGetUniformdv #define glGetUniformdv (gl.GetUniformdv) #undef glGetUniformfv #define glGetUniformfv (gl.GetUniformfv) #undef glGetUniformi64vNV #define glGetUniformi64vNV (gl.GetUniformi64vNV) #undef glGetUniformiv #define glGetUniformiv (gl.GetUniformiv) #undef glGetUniformui64vNV #define glGetUniformui64vNV (gl.GetUniformui64vNV) #undef glGetUniformuiv #define glGetUniformuiv (gl.GetUniformuiv) #undef glGetUniformuivEXT #define glGetUniformuivEXT (gl.GetUniformuivEXT) #undef glGetVaryingLocationNV #define glGetVaryingLocationNV (gl.GetVaryingLocationNV) #undef glGetVertexArrayIntegeri_vEXT #define glGetVertexArrayIntegeri_vEXT (gl.GetVertexArrayIntegeri_vEXT) #undef glGetVertexArrayIntegervEXT #define glGetVertexArrayIntegervEXT (gl.GetVertexArrayIntegervEXT) #undef glGetVertexArrayPointeri_vEXT #define glGetVertexArrayPointeri_vEXT (gl.GetVertexArrayPointeri_vEXT) #undef glGetVertexArrayPointervEXT #define glGetVertexArrayPointervEXT (gl.GetVertexArrayPointervEXT) #undef glGetVertexAttribIiv #define glGetVertexAttribIiv (gl.GetVertexAttribIiv) #undef glGetVertexAttribIivEXT #define glGetVertexAttribIivEXT (gl.GetVertexAttribIivEXT) #undef glGetVertexAttribIuiv #define glGetVertexAttribIuiv (gl.GetVertexAttribIuiv) #undef glGetVertexAttribIuivEXT #define glGetVertexAttribIuivEXT (gl.GetVertexAttribIuivEXT) #undef glGetVertexAttribLdv #define glGetVertexAttribLdv (gl.GetVertexAttribLdv) #undef glGetVertexAttribLdvEXT #define glGetVertexAttribLdvEXT (gl.GetVertexAttribLdvEXT) #undef glGetVertexAttribLi64vNV #define glGetVertexAttribLi64vNV (gl.GetVertexAttribLi64vNV) #undef glGetVertexAttribLui64vARB #define glGetVertexAttribLui64vARB (gl.GetVertexAttribLui64vARB) #undef glGetVertexAttribLui64vNV #define glGetVertexAttribLui64vNV (gl.GetVertexAttribLui64vNV) #undef glGetVertexAttribPointerv #define glGetVertexAttribPointerv (gl.GetVertexAttribPointerv) #undef glGetVertexAttribdv #define glGetVertexAttribdv (gl.GetVertexAttribdv) #undef glGetVertexAttribfv #define glGetVertexAttribfv (gl.GetVertexAttribfv) #undef glGetVertexAttribiv #define glGetVertexAttribiv (gl.GetVertexAttribiv) #undef glGetVideoCaptureStreamdvNV #define glGetVideoCaptureStreamdvNV (gl.GetVideoCaptureStreamdvNV) #undef glGetVideoCaptureStreamfvNV #define glGetVideoCaptureStreamfvNV (gl.GetVideoCaptureStreamfvNV) #undef glGetVideoCaptureStreamivNV #define glGetVideoCaptureStreamivNV (gl.GetVideoCaptureStreamivNV) #undef glGetVideoCaptureivNV #define glGetVideoCaptureivNV (gl.GetVideoCaptureivNV) #undef glGetVideoi64vNV #define glGetVideoi64vNV (gl.GetVideoi64vNV) #undef glGetVideoivNV #define glGetVideoivNV (gl.GetVideoivNV) #undef glGetVideoui64vNV #define glGetVideoui64vNV (gl.GetVideoui64vNV) #undef glGetVideouivNV #define glGetVideouivNV (gl.GetVideouivNV) #undef glGetnColorTableARB #define glGetnColorTableARB (gl.GetnColorTableARB) #undef glGetnCompressedTexImageARB #define glGetnCompressedTexImageARB (gl.GetnCompressedTexImageARB) #undef glGetnConvolutionFilterARB #define glGetnConvolutionFilterARB (gl.GetnConvolutionFilterARB) #undef glGetnHistogramARB #define glGetnHistogramARB (gl.GetnHistogramARB) #undef glGetnMapdvARB #define glGetnMapdvARB (gl.GetnMapdvARB) #undef glGetnMapfvARB #define glGetnMapfvARB (gl.GetnMapfvARB) #undef glGetnMapivARB #define glGetnMapivARB (gl.GetnMapivARB) #undef glGetnMinmaxARB #define glGetnMinmaxARB (gl.GetnMinmaxARB) #undef glGetnPixelMapfvARB #define glGetnPixelMapfvARB (gl.GetnPixelMapfvARB) #undef glGetnPixelMapuivARB #define glGetnPixelMapuivARB (gl.GetnPixelMapuivARB) #undef glGetnPixelMapusvARB #define glGetnPixelMapusvARB (gl.GetnPixelMapusvARB) #undef glGetnPolygonStippleARB #define glGetnPolygonStippleARB (gl.GetnPolygonStippleARB) #undef glGetnSeparableFilterARB #define glGetnSeparableFilterARB (gl.GetnSeparableFilterARB) #undef glGetnTexImageARB #define glGetnTexImageARB (gl.GetnTexImageARB) #undef glGetnUniformdvARB #define glGetnUniformdvARB (gl.GetnUniformdvARB) #undef glGetnUniformfvARB #define glGetnUniformfvARB (gl.GetnUniformfvARB) #undef glGetnUniformivARB #define glGetnUniformivARB (gl.GetnUniformivARB) #undef glGetnUniformuivARB #define glGetnUniformuivARB (gl.GetnUniformuivARB) #undef glImportSyncEXT #define glImportSyncEXT (gl.ImportSyncEXT) #undef glIndexFormatNV #define glIndexFormatNV (gl.IndexFormatNV) #undef glIndexxOES #define glIndexxOES (gl.IndexxOES) #undef glIndexxvOES #define glIndexxvOES (gl.IndexxvOES) #undef glInsertEventMarkerEXT #define glInsertEventMarkerEXT (gl.InsertEventMarkerEXT) #undef glInterpolatePathsNV #define glInterpolatePathsNV (gl.InterpolatePathsNV) #undef glInvalidateBufferData #define glInvalidateBufferData (gl.InvalidateBufferData) #undef glInvalidateBufferSubData #define glInvalidateBufferSubData (gl.InvalidateBufferSubData) #undef glInvalidateFramebuffer #define glInvalidateFramebuffer (gl.InvalidateFramebuffer) #undef glInvalidateSubFramebuffer #define glInvalidateSubFramebuffer (gl.InvalidateSubFramebuffer) #undef glInvalidateTexImage #define glInvalidateTexImage (gl.InvalidateTexImage) #undef glInvalidateTexSubImage #define glInvalidateTexSubImage (gl.InvalidateTexSubImage) #undef glIsBufferResidentNV #define glIsBufferResidentNV (gl.IsBufferResidentNV) #undef glIsEnabledIndexedEXT #define glIsEnabledIndexedEXT (gl.IsEnabledIndexedEXT) #undef glIsEnabledi #define glIsEnabledi (gl.IsEnabledi) #undef glIsFramebuffer #define glIsFramebuffer (gl.IsFramebuffer) #undef glIsFramebufferEXT #define glIsFramebufferEXT (gl.IsFramebufferEXT) #undef glIsImageHandleResidentARB #define glIsImageHandleResidentARB (gl.IsImageHandleResidentARB) #undef glIsImageHandleResidentNV #define glIsImageHandleResidentNV (gl.IsImageHandleResidentNV) #undef glIsNameAMD #define glIsNameAMD (gl.IsNameAMD) #undef glIsNamedBufferResidentNV #define glIsNamedBufferResidentNV (gl.IsNamedBufferResidentNV) #undef glIsNamedStringARB #define glIsNamedStringARB (gl.IsNamedStringARB) #undef glIsPathNV #define glIsPathNV (gl.IsPathNV) #undef glIsPointInFillPathNV #define glIsPointInFillPathNV (gl.IsPointInFillPathNV) #undef glIsPointInStrokePathNV #define glIsPointInStrokePathNV (gl.IsPointInStrokePathNV) #undef glIsProgram #define glIsProgram (gl.IsProgram) #undef glIsProgramPipeline #define glIsProgramPipeline (gl.IsProgramPipeline) #undef glIsRenderbuffer #define glIsRenderbuffer (gl.IsRenderbuffer) #undef glIsRenderbufferEXT #define glIsRenderbufferEXT (gl.IsRenderbufferEXT) #undef glIsSampler #define glIsSampler (gl.IsSampler) #undef glIsShader #define glIsShader (gl.IsShader) #undef glIsSync #define glIsSync (gl.IsSync) #undef glIsTextureHandleResidentARB #define glIsTextureHandleResidentARB (gl.IsTextureHandleResidentARB) #undef glIsTextureHandleResidentNV #define glIsTextureHandleResidentNV (gl.IsTextureHandleResidentNV) #undef glIsTransformFeedback #define glIsTransformFeedback (gl.IsTransformFeedback) #undef glIsTransformFeedbackNV #define glIsTransformFeedbackNV (gl.IsTransformFeedbackNV) #undef glIsVertexArray #define glIsVertexArray (gl.IsVertexArray) #undef glIsVertexAttribEnabledAPPLE #define glIsVertexAttribEnabledAPPLE (gl.IsVertexAttribEnabledAPPLE) #undef glLabelObjectEXT #define glLabelObjectEXT (gl.LabelObjectEXT) #undef glLightModelxOES #define glLightModelxOES (gl.LightModelxOES) #undef glLightModelxvOES #define glLightModelxvOES (gl.LightModelxvOES) #undef glLightxOES #define glLightxOES (gl.LightxOES) #undef glLightxvOES #define glLightxvOES (gl.LightxvOES) #undef glLineWidthxOES #define glLineWidthxOES (gl.LineWidthxOES) #undef glLinkProgram #define glLinkProgram (gl.LinkProgram) #undef glLoadMatrixxOES #define glLoadMatrixxOES (gl.LoadMatrixxOES) #undef glLoadTransposeMatrixxOES #define glLoadTransposeMatrixxOES (gl.LoadTransposeMatrixxOES) #undef glMakeBufferNonResidentNV #define glMakeBufferNonResidentNV (gl.MakeBufferNonResidentNV) #undef glMakeBufferResidentNV #define glMakeBufferResidentNV (gl.MakeBufferResidentNV) #undef glMakeImageHandleNonResidentARB #define glMakeImageHandleNonResidentARB (gl.MakeImageHandleNonResidentARB) #undef glMakeImageHandleNonResidentNV #define glMakeImageHandleNonResidentNV (gl.MakeImageHandleNonResidentNV) #undef glMakeImageHandleResidentARB #define glMakeImageHandleResidentARB (gl.MakeImageHandleResidentARB) #undef glMakeImageHandleResidentNV #define glMakeImageHandleResidentNV (gl.MakeImageHandleResidentNV) #undef glMakeNamedBufferNonResidentNV #define glMakeNamedBufferNonResidentNV (gl.MakeNamedBufferNonResidentNV) #undef glMakeNamedBufferResidentNV #define glMakeNamedBufferResidentNV (gl.MakeNamedBufferResidentNV) #undef glMakeTextureHandleNonResidentARB #define glMakeTextureHandleNonResidentARB (gl.MakeTextureHandleNonResidentARB) #undef glMakeTextureHandleNonResidentNV #define glMakeTextureHandleNonResidentNV (gl.MakeTextureHandleNonResidentNV) #undef glMakeTextureHandleResidentARB #define glMakeTextureHandleResidentARB (gl.MakeTextureHandleResidentARB) #undef glMakeTextureHandleResidentNV #define glMakeTextureHandleResidentNV (gl.MakeTextureHandleResidentNV) #undef glMap1xOES #define glMap1xOES (gl.Map1xOES) #undef glMap2xOES #define glMap2xOES (gl.Map2xOES) #undef glMapBufferRange #define glMapBufferRange (gl.MapBufferRange) #undef glMapGrid1xOES #define glMapGrid1xOES (gl.MapGrid1xOES) #undef glMapGrid2xOES #define glMapGrid2xOES (gl.MapGrid2xOES) #undef glMapNamedBufferEXT #define glMapNamedBufferEXT (gl.MapNamedBufferEXT) #undef glMapNamedBufferRangeEXT #define glMapNamedBufferRangeEXT (gl.MapNamedBufferRangeEXT) #undef glMapTexture2DINTEL #define glMapTexture2DINTEL (gl.MapTexture2DINTEL) #undef glMapVertexAttrib1dAPPLE #define glMapVertexAttrib1dAPPLE (gl.MapVertexAttrib1dAPPLE) #undef glMapVertexAttrib1fAPPLE #define glMapVertexAttrib1fAPPLE (gl.MapVertexAttrib1fAPPLE) #undef glMapVertexAttrib2dAPPLE #define glMapVertexAttrib2dAPPLE (gl.MapVertexAttrib2dAPPLE) #undef glMapVertexAttrib2fAPPLE #define glMapVertexAttrib2fAPPLE (gl.MapVertexAttrib2fAPPLE) #undef glMaterialxOES #define glMaterialxOES (gl.MaterialxOES) #undef glMaterialxvOES #define glMaterialxvOES (gl.MaterialxvOES) #undef glMatrixFrustumEXT #define glMatrixFrustumEXT (gl.MatrixFrustumEXT) #undef glMatrixLoadIdentityEXT #define glMatrixLoadIdentityEXT (gl.MatrixLoadIdentityEXT) #undef glMatrixLoadTransposedEXT #define glMatrixLoadTransposedEXT (gl.MatrixLoadTransposedEXT) #undef glMatrixLoadTransposefEXT #define glMatrixLoadTransposefEXT (gl.MatrixLoadTransposefEXT) #undef glMatrixLoaddEXT #define glMatrixLoaddEXT (gl.MatrixLoaddEXT) #undef glMatrixLoadfEXT #define glMatrixLoadfEXT (gl.MatrixLoadfEXT) #undef glMatrixMultTransposedEXT #define glMatrixMultTransposedEXT (gl.MatrixMultTransposedEXT) #undef glMatrixMultTransposefEXT #define glMatrixMultTransposefEXT (gl.MatrixMultTransposefEXT) #undef glMatrixMultdEXT #define glMatrixMultdEXT (gl.MatrixMultdEXT) #undef glMatrixMultfEXT #define glMatrixMultfEXT (gl.MatrixMultfEXT) #undef glMatrixOrthoEXT #define glMatrixOrthoEXT (gl.MatrixOrthoEXT) #undef glMatrixPopEXT #define glMatrixPopEXT (gl.MatrixPopEXT) #undef glMatrixPushEXT #define glMatrixPushEXT (gl.MatrixPushEXT) #undef glMatrixRotatedEXT #define glMatrixRotatedEXT (gl.MatrixRotatedEXT) #undef glMatrixRotatefEXT #define glMatrixRotatefEXT (gl.MatrixRotatefEXT) #undef glMatrixScaledEXT #define glMatrixScaledEXT (gl.MatrixScaledEXT) #undef glMatrixScalefEXT #define glMatrixScalefEXT (gl.MatrixScalefEXT) #undef glMatrixTranslatedEXT #define glMatrixTranslatedEXT (gl.MatrixTranslatedEXT) #undef glMatrixTranslatefEXT #define glMatrixTranslatefEXT (gl.MatrixTranslatefEXT) #undef glMemoryBarrier #define glMemoryBarrier (gl.MemoryBarrier) #undef glMemoryBarrierEXT #define glMemoryBarrierEXT (gl.MemoryBarrierEXT) #undef glMinSampleShading #define glMinSampleShading (gl.MinSampleShading) #undef glMinSampleShadingARB #define glMinSampleShadingARB (gl.MinSampleShadingARB) #undef glMultMatrixxOES #define glMultMatrixxOES (gl.MultMatrixxOES) #undef glMultTransposeMatrixxOES #define glMultTransposeMatrixxOES (gl.MultTransposeMatrixxOES) #undef glMultiDrawArraysIndirect #define glMultiDrawArraysIndirect (gl.MultiDrawArraysIndirect) #undef glMultiDrawArraysIndirectAMD #define glMultiDrawArraysIndirectAMD (gl.MultiDrawArraysIndirectAMD) #undef glMultiDrawArraysIndirectBindlessNV #define glMultiDrawArraysIndirectBindlessNV (gl.MultiDrawArraysIndirectBindlessNV) #undef glMultiDrawArraysIndirectCountARB #define glMultiDrawArraysIndirectCountARB (gl.MultiDrawArraysIndirectCountARB) #undef glMultiDrawElementsBaseVertex #define glMultiDrawElementsBaseVertex (gl.MultiDrawElementsBaseVertex) #undef glMultiDrawElementsIndirect #define glMultiDrawElementsIndirect (gl.MultiDrawElementsIndirect) #undef glMultiDrawElementsIndirectAMD #define glMultiDrawElementsIndirectAMD (gl.MultiDrawElementsIndirectAMD) #undef glMultiDrawElementsIndirectBindlessNV #define glMultiDrawElementsIndirectBindlessNV (gl.MultiDrawElementsIndirectBindlessNV) #undef glMultiDrawElementsIndirectCountARB #define glMultiDrawElementsIndirectCountARB (gl.MultiDrawElementsIndirectCountARB) #undef glMultiTexBufferEXT #define glMultiTexBufferEXT (gl.MultiTexBufferEXT) #undef glMultiTexCoord1bOES #define glMultiTexCoord1bOES (gl.MultiTexCoord1bOES) #undef glMultiTexCoord1bvOES #define glMultiTexCoord1bvOES (gl.MultiTexCoord1bvOES) #undef glMultiTexCoord1xOES #define glMultiTexCoord1xOES (gl.MultiTexCoord1xOES) #undef glMultiTexCoord1xvOES #define glMultiTexCoord1xvOES (gl.MultiTexCoord1xvOES) #undef glMultiTexCoord2bOES #define glMultiTexCoord2bOES (gl.MultiTexCoord2bOES) #undef glMultiTexCoord2bvOES #define glMultiTexCoord2bvOES (gl.MultiTexCoord2bvOES) #undef glMultiTexCoord2xOES #define glMultiTexCoord2xOES (gl.MultiTexCoord2xOES) #undef glMultiTexCoord2xvOES #define glMultiTexCoord2xvOES (gl.MultiTexCoord2xvOES) #undef glMultiTexCoord3bOES #define glMultiTexCoord3bOES (gl.MultiTexCoord3bOES) #undef glMultiTexCoord3bvOES #define glMultiTexCoord3bvOES (gl.MultiTexCoord3bvOES) #undef glMultiTexCoord3xOES #define glMultiTexCoord3xOES (gl.MultiTexCoord3xOES) #undef glMultiTexCoord3xvOES #define glMultiTexCoord3xvOES (gl.MultiTexCoord3xvOES) #undef glMultiTexCoord4bOES #define glMultiTexCoord4bOES (gl.MultiTexCoord4bOES) #undef glMultiTexCoord4bvOES #define glMultiTexCoord4bvOES (gl.MultiTexCoord4bvOES) #undef glMultiTexCoord4xOES #define glMultiTexCoord4xOES (gl.MultiTexCoord4xOES) #undef glMultiTexCoord4xvOES #define glMultiTexCoord4xvOES (gl.MultiTexCoord4xvOES) #undef glMultiTexCoordP1ui #define glMultiTexCoordP1ui (gl.MultiTexCoordP1ui) #undef glMultiTexCoordP1uiv #define glMultiTexCoordP1uiv (gl.MultiTexCoordP1uiv) #undef glMultiTexCoordP2ui #define glMultiTexCoordP2ui (gl.MultiTexCoordP2ui) #undef glMultiTexCoordP2uiv #define glMultiTexCoordP2uiv (gl.MultiTexCoordP2uiv) #undef glMultiTexCoordP3ui #define glMultiTexCoordP3ui (gl.MultiTexCoordP3ui) #undef glMultiTexCoordP3uiv #define glMultiTexCoordP3uiv (gl.MultiTexCoordP3uiv) #undef glMultiTexCoordP4ui #define glMultiTexCoordP4ui (gl.MultiTexCoordP4ui) #undef glMultiTexCoordP4uiv #define glMultiTexCoordP4uiv (gl.MultiTexCoordP4uiv) #undef glMultiTexCoordPointerEXT #define glMultiTexCoordPointerEXT (gl.MultiTexCoordPointerEXT) #undef glMultiTexEnvfEXT #define glMultiTexEnvfEXT (gl.MultiTexEnvfEXT) #undef glMultiTexEnvfvEXT #define glMultiTexEnvfvEXT (gl.MultiTexEnvfvEXT) #undef glMultiTexEnviEXT #define glMultiTexEnviEXT (gl.MultiTexEnviEXT) #undef glMultiTexEnvivEXT #define glMultiTexEnvivEXT (gl.MultiTexEnvivEXT) #undef glMultiTexGendEXT #define glMultiTexGendEXT (gl.MultiTexGendEXT) #undef glMultiTexGendvEXT #define glMultiTexGendvEXT (gl.MultiTexGendvEXT) #undef glMultiTexGenfEXT #define glMultiTexGenfEXT (gl.MultiTexGenfEXT) #undef glMultiTexGenfvEXT #define glMultiTexGenfvEXT (gl.MultiTexGenfvEXT) #undef glMultiTexGeniEXT #define glMultiTexGeniEXT (gl.MultiTexGeniEXT) #undef glMultiTexGenivEXT #define glMultiTexGenivEXT (gl.MultiTexGenivEXT) #undef glMultiTexImage1DEXT #define glMultiTexImage1DEXT (gl.MultiTexImage1DEXT) #undef glMultiTexImage2DEXT #define glMultiTexImage2DEXT (gl.MultiTexImage2DEXT) #undef glMultiTexImage3DEXT #define glMultiTexImage3DEXT (gl.MultiTexImage3DEXT) #undef glMultiTexParameterIivEXT #define glMultiTexParameterIivEXT (gl.MultiTexParameterIivEXT) #undef glMultiTexParameterIuivEXT #define glMultiTexParameterIuivEXT (gl.MultiTexParameterIuivEXT) #undef glMultiTexParameterfEXT #define glMultiTexParameterfEXT (gl.MultiTexParameterfEXT) #undef glMultiTexParameterfvEXT #define glMultiTexParameterfvEXT (gl.MultiTexParameterfvEXT) #undef glMultiTexParameteriEXT #define glMultiTexParameteriEXT (gl.MultiTexParameteriEXT) #undef glMultiTexParameterivEXT #define glMultiTexParameterivEXT (gl.MultiTexParameterivEXT) #undef glMultiTexRenderbufferEXT #define glMultiTexRenderbufferEXT (gl.MultiTexRenderbufferEXT) #undef glMultiTexSubImage1DEXT #define glMultiTexSubImage1DEXT (gl.MultiTexSubImage1DEXT) #undef glMultiTexSubImage2DEXT #define glMultiTexSubImage2DEXT (gl.MultiTexSubImage2DEXT) #undef glMultiTexSubImage3DEXT #define glMultiTexSubImage3DEXT (gl.MultiTexSubImage3DEXT) #undef glNamedBufferDataEXT #define glNamedBufferDataEXT (gl.NamedBufferDataEXT) #undef glNamedBufferStorageEXT #define glNamedBufferStorageEXT (gl.NamedBufferStorageEXT) #undef glNamedBufferSubDataEXT #define glNamedBufferSubDataEXT (gl.NamedBufferSubDataEXT) #undef glNamedCopyBufferSubDataEXT #define glNamedCopyBufferSubDataEXT (gl.NamedCopyBufferSubDataEXT) #undef glNamedFramebufferParameteriEXT #define glNamedFramebufferParameteriEXT (gl.NamedFramebufferParameteriEXT) #undef glNamedFramebufferRenderbufferEXT #define glNamedFramebufferRenderbufferEXT (gl.NamedFramebufferRenderbufferEXT) #undef glNamedFramebufferTexture1DEXT #define glNamedFramebufferTexture1DEXT (gl.NamedFramebufferTexture1DEXT) #undef glNamedFramebufferTexture2DEXT #define glNamedFramebufferTexture2DEXT (gl.NamedFramebufferTexture2DEXT) #undef glNamedFramebufferTexture3DEXT #define glNamedFramebufferTexture3DEXT (gl.NamedFramebufferTexture3DEXT) #undef glNamedFramebufferTextureEXT #define glNamedFramebufferTextureEXT (gl.NamedFramebufferTextureEXT) #undef glNamedFramebufferTextureFaceEXT #define glNamedFramebufferTextureFaceEXT (gl.NamedFramebufferTextureFaceEXT) #undef glNamedFramebufferTextureLayerEXT #define glNamedFramebufferTextureLayerEXT (gl.NamedFramebufferTextureLayerEXT) #undef glNamedProgramLocalParameter4dEXT #define glNamedProgramLocalParameter4dEXT (gl.NamedProgramLocalParameter4dEXT) #undef glNamedProgramLocalParameter4dvEXT #define glNamedProgramLocalParameter4dvEXT (gl.NamedProgramLocalParameter4dvEXT) #undef glNamedProgramLocalParameter4fEXT #define glNamedProgramLocalParameter4fEXT (gl.NamedProgramLocalParameter4fEXT) #undef glNamedProgramLocalParameter4fvEXT #define glNamedProgramLocalParameter4fvEXT (gl.NamedProgramLocalParameter4fvEXT) #undef glNamedProgramLocalParameterI4iEXT #define glNamedProgramLocalParameterI4iEXT (gl.NamedProgramLocalParameterI4iEXT) #undef glNamedProgramLocalParameterI4ivEXT #define glNamedProgramLocalParameterI4ivEXT (gl.NamedProgramLocalParameterI4ivEXT) #undef glNamedProgramLocalParameterI4uiEXT #define glNamedProgramLocalParameterI4uiEXT (gl.NamedProgramLocalParameterI4uiEXT) #undef glNamedProgramLocalParameterI4uivEXT #define glNamedProgramLocalParameterI4uivEXT (gl.NamedProgramLocalParameterI4uivEXT) #undef glNamedProgramLocalParameters4fvEXT #define glNamedProgramLocalParameters4fvEXT (gl.NamedProgramLocalParameters4fvEXT) #undef glNamedProgramLocalParametersI4ivEXT #define glNamedProgramLocalParametersI4ivEXT (gl.NamedProgramLocalParametersI4ivEXT) #undef glNamedProgramLocalParametersI4uivEXT #define glNamedProgramLocalParametersI4uivEXT (gl.NamedProgramLocalParametersI4uivEXT) #undef glNamedProgramStringEXT #define glNamedProgramStringEXT (gl.NamedProgramStringEXT) #undef glNamedRenderbufferStorageEXT #define glNamedRenderbufferStorageEXT (gl.NamedRenderbufferStorageEXT) #undef glNamedRenderbufferStorageMultisampleCoverageEXT #define glNamedRenderbufferStorageMultisampleCoverageEXT (gl.NamedRenderbufferStorageMultisampleCoverageEXT) #undef glNamedRenderbufferStorageMultisampleEXT #define glNamedRenderbufferStorageMultisampleEXT (gl.NamedRenderbufferStorageMultisampleEXT) #undef glNamedStringARB #define glNamedStringARB (gl.NamedStringARB) #undef glNormal3xOES #define glNormal3xOES (gl.Normal3xOES) #undef glNormal3xvOES #define glNormal3xvOES (gl.Normal3xvOES) #undef glNormalFormatNV #define glNormalFormatNV (gl.NormalFormatNV) #undef glNormalP3ui #define glNormalP3ui (gl.NormalP3ui) #undef glNormalP3uiv #define glNormalP3uiv (gl.NormalP3uiv) #undef glObjectLabel #define glObjectLabel (gl.ObjectLabel) #undef glObjectPtrLabel #define glObjectPtrLabel (gl.ObjectPtrLabel) #undef glObjectPurgeableAPPLE #define glObjectPurgeableAPPLE (gl.ObjectPurgeableAPPLE) #undef glObjectUnpurgeableAPPLE #define glObjectUnpurgeableAPPLE (gl.ObjectUnpurgeableAPPLE) #undef glOrthofOES #define glOrthofOES (gl.OrthofOES) #undef glOrthoxOES #define glOrthoxOES (gl.OrthoxOES) #undef glPassThroughxOES #define glPassThroughxOES (gl.PassThroughxOES) #undef glPatchParameterfv #define glPatchParameterfv (gl.PatchParameterfv) #undef glPatchParameteri #define glPatchParameteri (gl.PatchParameteri) #undef glPathColorGenNV #define glPathColorGenNV (gl.PathColorGenNV) #undef glPathCommandsNV #define glPathCommandsNV (gl.PathCommandsNV) #undef glPathCoordsNV #define glPathCoordsNV (gl.PathCoordsNV) #undef glPathCoverDepthFuncNV #define glPathCoverDepthFuncNV (gl.PathCoverDepthFuncNV) #undef glPathDashArrayNV #define glPathDashArrayNV (gl.PathDashArrayNV) #undef glPathFogGenNV #define glPathFogGenNV (gl.PathFogGenNV) #undef glPathGlyphRangeNV #define glPathGlyphRangeNV (gl.PathGlyphRangeNV) #undef glPathGlyphsNV #define glPathGlyphsNV (gl.PathGlyphsNV) #undef glPathParameterfNV #define glPathParameterfNV (gl.PathParameterfNV) #undef glPathParameterfvNV #define glPathParameterfvNV (gl.PathParameterfvNV) #undef glPathParameteriNV #define glPathParameteriNV (gl.PathParameteriNV) #undef glPathParameterivNV #define glPathParameterivNV (gl.PathParameterivNV) #undef glPathStencilDepthOffsetNV #define glPathStencilDepthOffsetNV (gl.PathStencilDepthOffsetNV) #undef glPathStencilFuncNV #define glPathStencilFuncNV (gl.PathStencilFuncNV) #undef glPathStringNV #define glPathStringNV (gl.PathStringNV) #undef glPathSubCommandsNV #define glPathSubCommandsNV (gl.PathSubCommandsNV) #undef glPathSubCoordsNV #define glPathSubCoordsNV (gl.PathSubCoordsNV) #undef glPathTexGenNV #define glPathTexGenNV (gl.PathTexGenNV) #undef glPauseTransformFeedback #define glPauseTransformFeedback (gl.PauseTransformFeedback) #undef glPauseTransformFeedbackNV #define glPauseTransformFeedbackNV (gl.PauseTransformFeedbackNV) #undef glPixelMapx #define glPixelMapx (gl.PixelMapx) #undef glPixelStorex #define glPixelStorex (gl.PixelStorex) #undef glPixelTransferxOES #define glPixelTransferxOES (gl.PixelTransferxOES) #undef glPixelZoomxOES #define glPixelZoomxOES (gl.PixelZoomxOES) #undef glPointAlongPathNV #define glPointAlongPathNV (gl.PointAlongPathNV) #undef glPointParameterxvOES #define glPointParameterxvOES (gl.PointParameterxvOES) #undef glPointSizePointerAPPLE #define glPointSizePointerAPPLE (gl.PointSizePointerAPPLE) #undef glPointSizexOES #define glPointSizexOES (gl.PointSizexOES) #undef glPolygonOffsetxOES #define glPolygonOffsetxOES (gl.PolygonOffsetxOES) #undef glPopDebugGroup #define glPopDebugGroup (gl.PopDebugGroup) #undef glPopGroupMarkerEXT #define glPopGroupMarkerEXT (gl.PopGroupMarkerEXT) #undef glPresentFrameDualFillNV #define glPresentFrameDualFillNV (gl.PresentFrameDualFillNV) #undef glPresentFrameKeyedNV #define glPresentFrameKeyedNV (gl.PresentFrameKeyedNV) #undef glPrimitiveRestartIndex #define glPrimitiveRestartIndex (gl.PrimitiveRestartIndex) #undef glPrioritizeTexturesxOES #define glPrioritizeTexturesxOES (gl.PrioritizeTexturesxOES) #undef glProgramBinary #define glProgramBinary (gl.ProgramBinary) #undef glProgramBufferParametersIivNV #define glProgramBufferParametersIivNV (gl.ProgramBufferParametersIivNV) #undef glProgramBufferParametersIuivNV #define glProgramBufferParametersIuivNV (gl.ProgramBufferParametersIuivNV) #undef glProgramBufferParametersfvNV #define glProgramBufferParametersfvNV (gl.ProgramBufferParametersfvNV) #undef glProgramCallbackMESA #define glProgramCallbackMESA (gl.ProgramCallbackMESA) #undef glProgramEnvParameterI4iNV #define glProgramEnvParameterI4iNV (gl.ProgramEnvParameterI4iNV) #undef glProgramEnvParameterI4ivNV #define glProgramEnvParameterI4ivNV (gl.ProgramEnvParameterI4ivNV) #undef glProgramEnvParameterI4uiNV #define glProgramEnvParameterI4uiNV (gl.ProgramEnvParameterI4uiNV) #undef glProgramEnvParameterI4uivNV #define glProgramEnvParameterI4uivNV (gl.ProgramEnvParameterI4uivNV) #undef glProgramEnvParameters4fvEXT #define glProgramEnvParameters4fvEXT (gl.ProgramEnvParameters4fvEXT) #undef glProgramEnvParametersI4ivNV #define glProgramEnvParametersI4ivNV (gl.ProgramEnvParametersI4ivNV) #undef glProgramEnvParametersI4uivNV #define glProgramEnvParametersI4uivNV (gl.ProgramEnvParametersI4uivNV) #undef glProgramLocalParameterI4iNV #define glProgramLocalParameterI4iNV (gl.ProgramLocalParameterI4iNV) #undef glProgramLocalParameterI4ivNV #define glProgramLocalParameterI4ivNV (gl.ProgramLocalParameterI4ivNV) #undef glProgramLocalParameterI4uiNV #define glProgramLocalParameterI4uiNV (gl.ProgramLocalParameterI4uiNV) #undef glProgramLocalParameterI4uivNV #define glProgramLocalParameterI4uivNV (gl.ProgramLocalParameterI4uivNV) #undef glProgramLocalParameters4fvEXT #define glProgramLocalParameters4fvEXT (gl.ProgramLocalParameters4fvEXT) #undef glProgramLocalParametersI4ivNV #define glProgramLocalParametersI4ivNV (gl.ProgramLocalParametersI4ivNV) #undef glProgramLocalParametersI4uivNV #define glProgramLocalParametersI4uivNV (gl.ProgramLocalParametersI4uivNV) #undef glProgramParameteri #define glProgramParameteri (gl.ProgramParameteri) #undef glProgramParameteriARB #define glProgramParameteriARB (gl.ProgramParameteriARB) #undef glProgramParameteriEXT #define glProgramParameteriEXT (gl.ProgramParameteriEXT) #undef glProgramSubroutineParametersuivNV #define glProgramSubroutineParametersuivNV (gl.ProgramSubroutineParametersuivNV) #undef glProgramUniform1d #define glProgramUniform1d (gl.ProgramUniform1d) #undef glProgramUniform1dEXT #define glProgramUniform1dEXT (gl.ProgramUniform1dEXT) #undef glProgramUniform1dv #define glProgramUniform1dv (gl.ProgramUniform1dv) #undef glProgramUniform1dvEXT #define glProgramUniform1dvEXT (gl.ProgramUniform1dvEXT) #undef glProgramUniform1f #define glProgramUniform1f (gl.ProgramUniform1f) #undef glProgramUniform1fEXT #define glProgramUniform1fEXT (gl.ProgramUniform1fEXT) #undef glProgramUniform1fv #define glProgramUniform1fv (gl.ProgramUniform1fv) #undef glProgramUniform1fvEXT #define glProgramUniform1fvEXT (gl.ProgramUniform1fvEXT) #undef glProgramUniform1i #define glProgramUniform1i (gl.ProgramUniform1i) #undef glProgramUniform1i64NV #define glProgramUniform1i64NV (gl.ProgramUniform1i64NV) #undef glProgramUniform1i64vNV #define glProgramUniform1i64vNV (gl.ProgramUniform1i64vNV) #undef glProgramUniform1iEXT #define glProgramUniform1iEXT (gl.ProgramUniform1iEXT) #undef glProgramUniform1iv #define glProgramUniform1iv (gl.ProgramUniform1iv) #undef glProgramUniform1ivEXT #define glProgramUniform1ivEXT (gl.ProgramUniform1ivEXT) #undef glProgramUniform1ui #define glProgramUniform1ui (gl.ProgramUniform1ui) #undef glProgramUniform1ui64NV #define glProgramUniform1ui64NV (gl.ProgramUniform1ui64NV) #undef glProgramUniform1ui64vNV #define glProgramUniform1ui64vNV (gl.ProgramUniform1ui64vNV) #undef glProgramUniform1uiEXT #define glProgramUniform1uiEXT (gl.ProgramUniform1uiEXT) #undef glProgramUniform1uiv #define glProgramUniform1uiv (gl.ProgramUniform1uiv) #undef glProgramUniform1uivEXT #define glProgramUniform1uivEXT (gl.ProgramUniform1uivEXT) #undef glProgramUniform2d #define glProgramUniform2d (gl.ProgramUniform2d) #undef glProgramUniform2dEXT #define glProgramUniform2dEXT (gl.ProgramUniform2dEXT) #undef glProgramUniform2dv #define glProgramUniform2dv (gl.ProgramUniform2dv) #undef glProgramUniform2dvEXT #define glProgramUniform2dvEXT (gl.ProgramUniform2dvEXT) #undef glProgramUniform2f #define glProgramUniform2f (gl.ProgramUniform2f) #undef glProgramUniform2fEXT #define glProgramUniform2fEXT (gl.ProgramUniform2fEXT) #undef glProgramUniform2fv #define glProgramUniform2fv (gl.ProgramUniform2fv) #undef glProgramUniform2fvEXT #define glProgramUniform2fvEXT (gl.ProgramUniform2fvEXT) #undef glProgramUniform2i #define glProgramUniform2i (gl.ProgramUniform2i) #undef glProgramUniform2i64NV #define glProgramUniform2i64NV (gl.ProgramUniform2i64NV) #undef glProgramUniform2i64vNV #define glProgramUniform2i64vNV (gl.ProgramUniform2i64vNV) #undef glProgramUniform2iEXT #define glProgramUniform2iEXT (gl.ProgramUniform2iEXT) #undef glProgramUniform2iv #define glProgramUniform2iv (gl.ProgramUniform2iv) #undef glProgramUniform2ivEXT #define glProgramUniform2ivEXT (gl.ProgramUniform2ivEXT) #undef glProgramUniform2ui #define glProgramUniform2ui (gl.ProgramUniform2ui) #undef glProgramUniform2ui64NV #define glProgramUniform2ui64NV (gl.ProgramUniform2ui64NV) #undef glProgramUniform2ui64vNV #define glProgramUniform2ui64vNV (gl.ProgramUniform2ui64vNV) #undef glProgramUniform2uiEXT #define glProgramUniform2uiEXT (gl.ProgramUniform2uiEXT) #undef glProgramUniform2uiv #define glProgramUniform2uiv (gl.ProgramUniform2uiv) #undef glProgramUniform2uivEXT #define glProgramUniform2uivEXT (gl.ProgramUniform2uivEXT) #undef glProgramUniform3d #define glProgramUniform3d (gl.ProgramUniform3d) #undef glProgramUniform3dEXT #define glProgramUniform3dEXT (gl.ProgramUniform3dEXT) #undef glProgramUniform3dv #define glProgramUniform3dv (gl.ProgramUniform3dv) #undef glProgramUniform3dvEXT #define glProgramUniform3dvEXT (gl.ProgramUniform3dvEXT) #undef glProgramUniform3f #define glProgramUniform3f (gl.ProgramUniform3f) #undef glProgramUniform3fEXT #define glProgramUniform3fEXT (gl.ProgramUniform3fEXT) #undef glProgramUniform3fv #define glProgramUniform3fv (gl.ProgramUniform3fv) #undef glProgramUniform3fvEXT #define glProgramUniform3fvEXT (gl.ProgramUniform3fvEXT) #undef glProgramUniform3i #define glProgramUniform3i (gl.ProgramUniform3i) #undef glProgramUniform3i64NV #define glProgramUniform3i64NV (gl.ProgramUniform3i64NV) #undef glProgramUniform3i64vNV #define glProgramUniform3i64vNV (gl.ProgramUniform3i64vNV) #undef glProgramUniform3iEXT #define glProgramUniform3iEXT (gl.ProgramUniform3iEXT) #undef glProgramUniform3iv #define glProgramUniform3iv (gl.ProgramUniform3iv) #undef glProgramUniform3ivEXT #define glProgramUniform3ivEXT (gl.ProgramUniform3ivEXT) #undef glProgramUniform3ui #define glProgramUniform3ui (gl.ProgramUniform3ui) #undef glProgramUniform3ui64NV #define glProgramUniform3ui64NV (gl.ProgramUniform3ui64NV) #undef glProgramUniform3ui64vNV #define glProgramUniform3ui64vNV (gl.ProgramUniform3ui64vNV) #undef glProgramUniform3uiEXT #define glProgramUniform3uiEXT (gl.ProgramUniform3uiEXT) #undef glProgramUniform3uiv #define glProgramUniform3uiv (gl.ProgramUniform3uiv) #undef glProgramUniform3uivEXT #define glProgramUniform3uivEXT (gl.ProgramUniform3uivEXT) #undef glProgramUniform4d #define glProgramUniform4d (gl.ProgramUniform4d) #undef glProgramUniform4dEXT #define glProgramUniform4dEXT (gl.ProgramUniform4dEXT) #undef glProgramUniform4dv #define glProgramUniform4dv (gl.ProgramUniform4dv) #undef glProgramUniform4dvEXT #define glProgramUniform4dvEXT (gl.ProgramUniform4dvEXT) #undef glProgramUniform4f #define glProgramUniform4f (gl.ProgramUniform4f) #undef glProgramUniform4fEXT #define glProgramUniform4fEXT (gl.ProgramUniform4fEXT) #undef glProgramUniform4fv #define glProgramUniform4fv (gl.ProgramUniform4fv) #undef glProgramUniform4fvEXT #define glProgramUniform4fvEXT (gl.ProgramUniform4fvEXT) #undef glProgramUniform4i #define glProgramUniform4i (gl.ProgramUniform4i) #undef glProgramUniform4i64NV #define glProgramUniform4i64NV (gl.ProgramUniform4i64NV) #undef glProgramUniform4i64vNV #define glProgramUniform4i64vNV (gl.ProgramUniform4i64vNV) #undef glProgramUniform4iEXT #define glProgramUniform4iEXT (gl.ProgramUniform4iEXT) #undef glProgramUniform4iv #define glProgramUniform4iv (gl.ProgramUniform4iv) #undef glProgramUniform4ivEXT #define glProgramUniform4ivEXT (gl.ProgramUniform4ivEXT) #undef glProgramUniform4ui #define glProgramUniform4ui (gl.ProgramUniform4ui) #undef glProgramUniform4ui64NV #define glProgramUniform4ui64NV (gl.ProgramUniform4ui64NV) #undef glProgramUniform4ui64vNV #define glProgramUniform4ui64vNV (gl.ProgramUniform4ui64vNV) #undef glProgramUniform4uiEXT #define glProgramUniform4uiEXT (gl.ProgramUniform4uiEXT) #undef glProgramUniform4uiv #define glProgramUniform4uiv (gl.ProgramUniform4uiv) #undef glProgramUniform4uivEXT #define glProgramUniform4uivEXT (gl.ProgramUniform4uivEXT) #undef glProgramUniformHandleui64ARB #define glProgramUniformHandleui64ARB (gl.ProgramUniformHandleui64ARB) #undef glProgramUniformHandleui64NV #define glProgramUniformHandleui64NV (gl.ProgramUniformHandleui64NV) #undef glProgramUniformHandleui64vARB #define glProgramUniformHandleui64vARB (gl.ProgramUniformHandleui64vARB) #undef glProgramUniformHandleui64vNV #define glProgramUniformHandleui64vNV (gl.ProgramUniformHandleui64vNV) #undef glProgramUniformMatrix2dv #define glProgramUniformMatrix2dv (gl.ProgramUniformMatrix2dv) #undef glProgramUniformMatrix2dvEXT #define glProgramUniformMatrix2dvEXT (gl.ProgramUniformMatrix2dvEXT) #undef glProgramUniformMatrix2fv #define glProgramUniformMatrix2fv (gl.ProgramUniformMatrix2fv) #undef glProgramUniformMatrix2fvEXT #define glProgramUniformMatrix2fvEXT (gl.ProgramUniformMatrix2fvEXT) #undef glProgramUniformMatrix2x3dv #define glProgramUniformMatrix2x3dv (gl.ProgramUniformMatrix2x3dv) #undef glProgramUniformMatrix2x3dvEXT #define glProgramUniformMatrix2x3dvEXT (gl.ProgramUniformMatrix2x3dvEXT) #undef glProgramUniformMatrix2x3fv #define glProgramUniformMatrix2x3fv (gl.ProgramUniformMatrix2x3fv) #undef glProgramUniformMatrix2x3fvEXT #define glProgramUniformMatrix2x3fvEXT (gl.ProgramUniformMatrix2x3fvEXT) #undef glProgramUniformMatrix2x4dv #define glProgramUniformMatrix2x4dv (gl.ProgramUniformMatrix2x4dv) #undef glProgramUniformMatrix2x4dvEXT #define glProgramUniformMatrix2x4dvEXT (gl.ProgramUniformMatrix2x4dvEXT) #undef glProgramUniformMatrix2x4fv #define glProgramUniformMatrix2x4fv (gl.ProgramUniformMatrix2x4fv) #undef glProgramUniformMatrix2x4fvEXT #define glProgramUniformMatrix2x4fvEXT (gl.ProgramUniformMatrix2x4fvEXT) #undef glProgramUniformMatrix3dv #define glProgramUniformMatrix3dv (gl.ProgramUniformMatrix3dv) #undef glProgramUniformMatrix3dvEXT #define glProgramUniformMatrix3dvEXT (gl.ProgramUniformMatrix3dvEXT) #undef glProgramUniformMatrix3fv #define glProgramUniformMatrix3fv (gl.ProgramUniformMatrix3fv) #undef glProgramUniformMatrix3fvEXT #define glProgramUniformMatrix3fvEXT (gl.ProgramUniformMatrix3fvEXT) #undef glProgramUniformMatrix3x2dv #define glProgramUniformMatrix3x2dv (gl.ProgramUniformMatrix3x2dv) #undef glProgramUniformMatrix3x2dvEXT #define glProgramUniformMatrix3x2dvEXT (gl.ProgramUniformMatrix3x2dvEXT) #undef glProgramUniformMatrix3x2fv #define glProgramUniformMatrix3x2fv (gl.ProgramUniformMatrix3x2fv) #undef glProgramUniformMatrix3x2fvEXT #define glProgramUniformMatrix3x2fvEXT (gl.ProgramUniformMatrix3x2fvEXT) #undef glProgramUniformMatrix3x4dv #define glProgramUniformMatrix3x4dv (gl.ProgramUniformMatrix3x4dv) #undef glProgramUniformMatrix3x4dvEXT #define glProgramUniformMatrix3x4dvEXT (gl.ProgramUniformMatrix3x4dvEXT) #undef glProgramUniformMatrix3x4fv #define glProgramUniformMatrix3x4fv (gl.ProgramUniformMatrix3x4fv) #undef glProgramUniformMatrix3x4fvEXT #define glProgramUniformMatrix3x4fvEXT (gl.ProgramUniformMatrix3x4fvEXT) #undef glProgramUniformMatrix4dv #define glProgramUniformMatrix4dv (gl.ProgramUniformMatrix4dv) #undef glProgramUniformMatrix4dvEXT #define glProgramUniformMatrix4dvEXT (gl.ProgramUniformMatrix4dvEXT) #undef glProgramUniformMatrix4fv #define glProgramUniformMatrix4fv (gl.ProgramUniformMatrix4fv) #undef glProgramUniformMatrix4fvEXT #define glProgramUniformMatrix4fvEXT (gl.ProgramUniformMatrix4fvEXT) #undef glProgramUniformMatrix4x2dv #define glProgramUniformMatrix4x2dv (gl.ProgramUniformMatrix4x2dv) #undef glProgramUniformMatrix4x2dvEXT #define glProgramUniformMatrix4x2dvEXT (gl.ProgramUniformMatrix4x2dvEXT) #undef glProgramUniformMatrix4x2fv #define glProgramUniformMatrix4x2fv (gl.ProgramUniformMatrix4x2fv) #undef glProgramUniformMatrix4x2fvEXT #define glProgramUniformMatrix4x2fvEXT (gl.ProgramUniformMatrix4x2fvEXT) #undef glProgramUniformMatrix4x3dv #define glProgramUniformMatrix4x3dv (gl.ProgramUniformMatrix4x3dv) #undef glProgramUniformMatrix4x3dvEXT #define glProgramUniformMatrix4x3dvEXT (gl.ProgramUniformMatrix4x3dvEXT) #undef glProgramUniformMatrix4x3fv #define glProgramUniformMatrix4x3fv (gl.ProgramUniformMatrix4x3fv) #undef glProgramUniformMatrix4x3fvEXT #define glProgramUniformMatrix4x3fvEXT (gl.ProgramUniformMatrix4x3fvEXT) #undef glProgramUniformui64NV #define glProgramUniformui64NV (gl.ProgramUniformui64NV) #undef glProgramUniformui64vNV #define glProgramUniformui64vNV (gl.ProgramUniformui64vNV) #undef glProgramVertexLimitNV #define glProgramVertexLimitNV (gl.ProgramVertexLimitNV) #undef glProvokingVertex #define glProvokingVertex (gl.ProvokingVertex) #undef glProvokingVertexEXT #define glProvokingVertexEXT (gl.ProvokingVertexEXT) #undef glPushClientAttribDefaultEXT #define glPushClientAttribDefaultEXT (gl.PushClientAttribDefaultEXT) #undef glPushDebugGroup #define glPushDebugGroup (gl.PushDebugGroup) #undef glPushGroupMarkerEXT #define glPushGroupMarkerEXT (gl.PushGroupMarkerEXT) #undef glQueryCounter #define glQueryCounter (gl.QueryCounter) #undef glQueryMatrixxOES #define glQueryMatrixxOES (gl.QueryMatrixxOES) #undef glQueryObjectParameteruiAMD #define glQueryObjectParameteruiAMD (gl.QueryObjectParameteruiAMD) #undef glRasterPos2xOES #define glRasterPos2xOES (gl.RasterPos2xOES) #undef glRasterPos2xvOES #define glRasterPos2xvOES (gl.RasterPos2xvOES) #undef glRasterPos3xOES #define glRasterPos3xOES (gl.RasterPos3xOES) #undef glRasterPos3xvOES #define glRasterPos3xvOES (gl.RasterPos3xvOES) #undef glRasterPos4xOES #define glRasterPos4xOES (gl.RasterPos4xOES) #undef glRasterPos4xvOES #define glRasterPos4xvOES (gl.RasterPos4xvOES) #undef glReadnPixelsARB #define glReadnPixelsARB (gl.ReadnPixelsARB) #undef glRectxOES #define glRectxOES (gl.RectxOES) #undef glRectxvOES #define glRectxvOES (gl.RectxvOES) #undef glReleaseShaderCompiler #define glReleaseShaderCompiler (gl.ReleaseShaderCompiler) #undef glRenderbufferStorage #define glRenderbufferStorage (gl.RenderbufferStorage) #undef glRenderbufferStorageEXT #define glRenderbufferStorageEXT (gl.RenderbufferStorageEXT) #undef glRenderbufferStorageMultisample #define glRenderbufferStorageMultisample (gl.RenderbufferStorageMultisample) #undef glRenderbufferStorageMultisampleCoverageNV #define glRenderbufferStorageMultisampleCoverageNV (gl.RenderbufferStorageMultisampleCoverageNV) #undef glRenderbufferStorageMultisampleEXT #define glRenderbufferStorageMultisampleEXT (gl.RenderbufferStorageMultisampleEXT) #undef glResumeTransformFeedback #define glResumeTransformFeedback (gl.ResumeTransformFeedback) #undef glResumeTransformFeedbackNV #define glResumeTransformFeedbackNV (gl.ResumeTransformFeedbackNV) #undef glRotatexOES #define glRotatexOES (gl.RotatexOES) #undef glSampleCoverageOES #define glSampleCoverageOES (gl.SampleCoverageOES) #undef glSampleMaskIndexedNV #define glSampleMaskIndexedNV (gl.SampleMaskIndexedNV) #undef glSampleMaski #define glSampleMaski (gl.SampleMaski) #undef glSamplePass #define glSamplePass (gl.SamplePass) #undef glSamplePassARB #define glSamplePassARB (gl.SamplePassARB) #undef glSamplerParameterIiv #define glSamplerParameterIiv (gl.SamplerParameterIiv) #undef glSamplerParameterIuiv #define glSamplerParameterIuiv (gl.SamplerParameterIuiv) #undef glSamplerParameterf #define glSamplerParameterf (gl.SamplerParameterf) #undef glSamplerParameterfv #define glSamplerParameterfv (gl.SamplerParameterfv) #undef glSamplerParameteri #define glSamplerParameteri (gl.SamplerParameteri) #undef glSamplerParameteriv #define glSamplerParameteriv (gl.SamplerParameteriv) #undef glScalexOES #define glScalexOES (gl.ScalexOES) #undef glScissorArrayv #define glScissorArrayv (gl.ScissorArrayv) #undef glScissorIndexed #define glScissorIndexed (gl.ScissorIndexed) #undef glScissorIndexedv #define glScissorIndexedv (gl.ScissorIndexedv) #undef glSecondaryColorFormatNV #define glSecondaryColorFormatNV (gl.SecondaryColorFormatNV) #undef glSecondaryColorP3ui #define glSecondaryColorP3ui (gl.SecondaryColorP3ui) #undef glSecondaryColorP3uiv #define glSecondaryColorP3uiv (gl.SecondaryColorP3uiv) #undef glSelectPerfMonitorCountersAMD #define glSelectPerfMonitorCountersAMD (gl.SelectPerfMonitorCountersAMD) #undef glSetMultisamplefvAMD #define glSetMultisamplefvAMD (gl.SetMultisamplefvAMD) #undef glShaderBinary #define glShaderBinary (gl.ShaderBinary) #undef glShaderSource #define glShaderSource (gl.ShaderSource) #undef glShaderStorageBlockBinding #define glShaderStorageBlockBinding (gl.ShaderStorageBlockBinding) #undef glStencilClearTagEXT #define glStencilClearTagEXT (gl.StencilClearTagEXT) #undef glStencilFillPathInstancedNV #define glStencilFillPathInstancedNV (gl.StencilFillPathInstancedNV) #undef glStencilFillPathNV #define glStencilFillPathNV (gl.StencilFillPathNV) #undef glStencilFuncSeparate #define glStencilFuncSeparate (gl.StencilFuncSeparate) #undef glStencilMaskSeparate #define glStencilMaskSeparate (gl.StencilMaskSeparate) #undef glStencilOpSeparate #define glStencilOpSeparate (gl.StencilOpSeparate) #undef glStencilOpValueAMD #define glStencilOpValueAMD (gl.StencilOpValueAMD) #undef glStencilStrokePathInstancedNV #define glStencilStrokePathInstancedNV (gl.StencilStrokePathInstancedNV) #undef glStencilStrokePathNV #define glStencilStrokePathNV (gl.StencilStrokePathNV) #undef glStringMarkerGREMEDY #define glStringMarkerGREMEDY (gl.StringMarkerGREMEDY) #undef glSwapAPPLE #define glSwapAPPLE (gl.SwapAPPLE) #undef glSyncTextureINTEL #define glSyncTextureINTEL (gl.SyncTextureINTEL) #undef glTessellationFactorAMD #define glTessellationFactorAMD (gl.TessellationFactorAMD) #undef glTessellationModeAMD #define glTessellationModeAMD (gl.TessellationModeAMD) #undef glTexBuffer #define glTexBuffer (gl.TexBuffer) #undef glTexBufferARB #define glTexBufferARB (gl.TexBufferARB) #undef glTexBufferEXT #define glTexBufferEXT (gl.TexBufferEXT) #undef glTexBufferRange #define glTexBufferRange (gl.TexBufferRange) #undef glTexCoord1bOES #define glTexCoord1bOES (gl.TexCoord1bOES) #undef glTexCoord1bvOES #define glTexCoord1bvOES (gl.TexCoord1bvOES) #undef glTexCoord1xOES #define glTexCoord1xOES (gl.TexCoord1xOES) #undef glTexCoord1xvOES #define glTexCoord1xvOES (gl.TexCoord1xvOES) #undef glTexCoord2bOES #define glTexCoord2bOES (gl.TexCoord2bOES) #undef glTexCoord2bvOES #define glTexCoord2bvOES (gl.TexCoord2bvOES) #undef glTexCoord2xOES #define glTexCoord2xOES (gl.TexCoord2xOES) #undef glTexCoord2xvOES #define glTexCoord2xvOES (gl.TexCoord2xvOES) #undef glTexCoord3bOES #define glTexCoord3bOES (gl.TexCoord3bOES) #undef glTexCoord3bvOES #define glTexCoord3bvOES (gl.TexCoord3bvOES) #undef glTexCoord3xOES #define glTexCoord3xOES (gl.TexCoord3xOES) #undef glTexCoord3xvOES #define glTexCoord3xvOES (gl.TexCoord3xvOES) #undef glTexCoord4bOES #define glTexCoord4bOES (gl.TexCoord4bOES) #undef glTexCoord4bvOES #define glTexCoord4bvOES (gl.TexCoord4bvOES) #undef glTexCoord4xOES #define glTexCoord4xOES (gl.TexCoord4xOES) #undef glTexCoord4xvOES #define glTexCoord4xvOES (gl.TexCoord4xvOES) #undef glTexCoordFormatNV #define glTexCoordFormatNV (gl.TexCoordFormatNV) #undef glTexCoordP1ui #define glTexCoordP1ui (gl.TexCoordP1ui) #undef glTexCoordP1uiv #define glTexCoordP1uiv (gl.TexCoordP1uiv) #undef glTexCoordP2ui #define glTexCoordP2ui (gl.TexCoordP2ui) #undef glTexCoordP2uiv #define glTexCoordP2uiv (gl.TexCoordP2uiv) #undef glTexCoordP3ui #define glTexCoordP3ui (gl.TexCoordP3ui) #undef glTexCoordP3uiv #define glTexCoordP3uiv (gl.TexCoordP3uiv) #undef glTexCoordP4ui #define glTexCoordP4ui (gl.TexCoordP4ui) #undef glTexCoordP4uiv #define glTexCoordP4uiv (gl.TexCoordP4uiv) #undef glTexEnvxOES #define glTexEnvxOES (gl.TexEnvxOES) #undef glTexEnvxvOES #define glTexEnvxvOES (gl.TexEnvxvOES) #undef glTexGenxOES #define glTexGenxOES (gl.TexGenxOES) #undef glTexGenxvOES #define glTexGenxvOES (gl.TexGenxvOES) #undef glTexImage2DMultisample #define glTexImage2DMultisample (gl.TexImage2DMultisample) #undef glTexImage2DMultisampleCoverageNV #define glTexImage2DMultisampleCoverageNV (gl.TexImage2DMultisampleCoverageNV) #undef glTexImage3DMultisample #define glTexImage3DMultisample (gl.TexImage3DMultisample) #undef glTexImage3DMultisampleCoverageNV #define glTexImage3DMultisampleCoverageNV (gl.TexImage3DMultisampleCoverageNV) #undef glTexPageCommitmentARB #define glTexPageCommitmentARB (gl.TexPageCommitmentARB) #undef glTexParameterIiv #define glTexParameterIiv (gl.TexParameterIiv) #undef glTexParameterIivEXT #define glTexParameterIivEXT (gl.TexParameterIivEXT) #undef glTexParameterIuiv #define glTexParameterIuiv (gl.TexParameterIuiv) #undef glTexParameterIuivEXT #define glTexParameterIuivEXT (gl.TexParameterIuivEXT) #undef glTexParameterxOES #define glTexParameterxOES (gl.TexParameterxOES) #undef glTexParameterxvOES #define glTexParameterxvOES (gl.TexParameterxvOES) #undef glTexRenderbufferNV #define glTexRenderbufferNV (gl.TexRenderbufferNV) #undef glTexScissorFuncINTEL #define glTexScissorFuncINTEL (gl.TexScissorFuncINTEL) #undef glTexScissorINTEL #define glTexScissorINTEL (gl.TexScissorINTEL) #undef glTexStorage1D #define glTexStorage1D (gl.TexStorage1D) #undef glTexStorage2D #define glTexStorage2D (gl.TexStorage2D) #undef glTexStorage2DMultisample #define glTexStorage2DMultisample (gl.TexStorage2DMultisample) #undef glTexStorage3D #define glTexStorage3D (gl.TexStorage3D) #undef glTexStorage3DMultisample #define glTexStorage3DMultisample (gl.TexStorage3DMultisample) #undef glTexStorageSparseAMD #define glTexStorageSparseAMD (gl.TexStorageSparseAMD) #undef glTextureBarrierNV #define glTextureBarrierNV (gl.TextureBarrierNV) #undef glTextureBufferEXT #define glTextureBufferEXT (gl.TextureBufferEXT) #undef glTextureBufferRangeEXT #define glTextureBufferRangeEXT (gl.TextureBufferRangeEXT) #undef glTextureFogSGIX #define glTextureFogSGIX (gl.TextureFogSGIX) #undef glTextureImage1DEXT #define glTextureImage1DEXT (gl.TextureImage1DEXT) #undef glTextureImage2DEXT #define glTextureImage2DEXT (gl.TextureImage2DEXT) #undef glTextureImage2DMultisampleCoverageNV #define glTextureImage2DMultisampleCoverageNV (gl.TextureImage2DMultisampleCoverageNV) #undef glTextureImage2DMultisampleNV #define glTextureImage2DMultisampleNV (gl.TextureImage2DMultisampleNV) #undef glTextureImage3DEXT #define glTextureImage3DEXT (gl.TextureImage3DEXT) #undef glTextureImage3DMultisampleCoverageNV #define glTextureImage3DMultisampleCoverageNV (gl.TextureImage3DMultisampleCoverageNV) #undef glTextureImage3DMultisampleNV #define glTextureImage3DMultisampleNV (gl.TextureImage3DMultisampleNV) #undef glTexturePageCommitmentEXT #define glTexturePageCommitmentEXT (gl.TexturePageCommitmentEXT) #undef glTextureParameterIivEXT #define glTextureParameterIivEXT (gl.TextureParameterIivEXT) #undef glTextureParameterIuivEXT #define glTextureParameterIuivEXT (gl.TextureParameterIuivEXT) #undef glTextureParameterfEXT #define glTextureParameterfEXT (gl.TextureParameterfEXT) #undef glTextureParameterfvEXT #define glTextureParameterfvEXT (gl.TextureParameterfvEXT) #undef glTextureParameteriEXT #define glTextureParameteriEXT (gl.TextureParameteriEXT) #undef glTextureParameterivEXT #define glTextureParameterivEXT (gl.TextureParameterivEXT) #undef glTextureRangeAPPLE #define glTextureRangeAPPLE (gl.TextureRangeAPPLE) #undef glTextureRenderbufferEXT #define glTextureRenderbufferEXT (gl.TextureRenderbufferEXT) #undef glTextureStorage1DEXT #define glTextureStorage1DEXT (gl.TextureStorage1DEXT) #undef glTextureStorage2DEXT #define glTextureStorage2DEXT (gl.TextureStorage2DEXT) #undef glTextureStorage2DMultisampleEXT #define glTextureStorage2DMultisampleEXT (gl.TextureStorage2DMultisampleEXT) #undef glTextureStorage3DEXT #define glTextureStorage3DEXT (gl.TextureStorage3DEXT) #undef glTextureStorage3DMultisampleEXT #define glTextureStorage3DMultisampleEXT (gl.TextureStorage3DMultisampleEXT) #undef glTextureStorageSparseAMD #define glTextureStorageSparseAMD (gl.TextureStorageSparseAMD) #undef glTextureSubImage1DEXT #define glTextureSubImage1DEXT (gl.TextureSubImage1DEXT) #undef glTextureSubImage2DEXT #define glTextureSubImage2DEXT (gl.TextureSubImage2DEXT) #undef glTextureSubImage3DEXT #define glTextureSubImage3DEXT (gl.TextureSubImage3DEXT) #undef glTextureView #define glTextureView (gl.TextureView) #undef glTransformFeedbackAttribsNV #define glTransformFeedbackAttribsNV (gl.TransformFeedbackAttribsNV) #undef glTransformFeedbackStreamAttribsNV #define glTransformFeedbackStreamAttribsNV (gl.TransformFeedbackStreamAttribsNV) #undef glTransformFeedbackVaryings #define glTransformFeedbackVaryings (gl.TransformFeedbackVaryings) #undef glTransformFeedbackVaryingsEXT #define glTransformFeedbackVaryingsEXT (gl.TransformFeedbackVaryingsEXT) #undef glTransformFeedbackVaryingsNV #define glTransformFeedbackVaryingsNV (gl.TransformFeedbackVaryingsNV) #undef glTransformPathNV #define glTransformPathNV (gl.TransformPathNV) #undef glTranslatexOES #define glTranslatexOES (gl.TranslatexOES) #undef glUniform1d #define glUniform1d (gl.Uniform1d) #undef glUniform1dv #define glUniform1dv (gl.Uniform1dv) #undef glUniform1f #define glUniform1f (gl.Uniform1f) #undef glUniform1fv #define glUniform1fv (gl.Uniform1fv) #undef glUniform1i #define glUniform1i (gl.Uniform1i) #undef glUniform1i64NV #define glUniform1i64NV (gl.Uniform1i64NV) #undef glUniform1i64vNV #define glUniform1i64vNV (gl.Uniform1i64vNV) #undef glUniform1iv #define glUniform1iv (gl.Uniform1iv) #undef glUniform1ui #define glUniform1ui (gl.Uniform1ui) #undef glUniform1ui64NV #define glUniform1ui64NV (gl.Uniform1ui64NV) #undef glUniform1ui64vNV #define glUniform1ui64vNV (gl.Uniform1ui64vNV) #undef glUniform1uiEXT #define glUniform1uiEXT (gl.Uniform1uiEXT) #undef glUniform1uiv #define glUniform1uiv (gl.Uniform1uiv) #undef glUniform1uivEXT #define glUniform1uivEXT (gl.Uniform1uivEXT) #undef glUniform2d #define glUniform2d (gl.Uniform2d) #undef glUniform2dv #define glUniform2dv (gl.Uniform2dv) #undef glUniform2f #define glUniform2f (gl.Uniform2f) #undef glUniform2fv #define glUniform2fv (gl.Uniform2fv) #undef glUniform2i #define glUniform2i (gl.Uniform2i) #undef glUniform2i64NV #define glUniform2i64NV (gl.Uniform2i64NV) #undef glUniform2i64vNV #define glUniform2i64vNV (gl.Uniform2i64vNV) #undef glUniform2iv #define glUniform2iv (gl.Uniform2iv) #undef glUniform2ui #define glUniform2ui (gl.Uniform2ui) #undef glUniform2ui64NV #define glUniform2ui64NV (gl.Uniform2ui64NV) #undef glUniform2ui64vNV #define glUniform2ui64vNV (gl.Uniform2ui64vNV) #undef glUniform2uiEXT #define glUniform2uiEXT (gl.Uniform2uiEXT) #undef glUniform2uiv #define glUniform2uiv (gl.Uniform2uiv) #undef glUniform2uivEXT #define glUniform2uivEXT (gl.Uniform2uivEXT) #undef glUniform3d #define glUniform3d (gl.Uniform3d) #undef glUniform3dv #define glUniform3dv (gl.Uniform3dv) #undef glUniform3f #define glUniform3f (gl.Uniform3f) #undef glUniform3fv #define glUniform3fv (gl.Uniform3fv) #undef glUniform3i #define glUniform3i (gl.Uniform3i) #undef glUniform3i64NV #define glUniform3i64NV (gl.Uniform3i64NV) #undef glUniform3i64vNV #define glUniform3i64vNV (gl.Uniform3i64vNV) #undef glUniform3iv #define glUniform3iv (gl.Uniform3iv) #undef glUniform3ui #define glUniform3ui (gl.Uniform3ui) #undef glUniform3ui64NV #define glUniform3ui64NV (gl.Uniform3ui64NV) #undef glUniform3ui64vNV #define glUniform3ui64vNV (gl.Uniform3ui64vNV) #undef glUniform3uiEXT #define glUniform3uiEXT (gl.Uniform3uiEXT) #undef glUniform3uiv #define glUniform3uiv (gl.Uniform3uiv) #undef glUniform3uivEXT #define glUniform3uivEXT (gl.Uniform3uivEXT) #undef glUniform4d #define glUniform4d (gl.Uniform4d) #undef glUniform4dv #define glUniform4dv (gl.Uniform4dv) #undef glUniform4f #define glUniform4f (gl.Uniform4f) #undef glUniform4fv #define glUniform4fv (gl.Uniform4fv) #undef glUniform4i #define glUniform4i (gl.Uniform4i) #undef glUniform4i64NV #define glUniform4i64NV (gl.Uniform4i64NV) #undef glUniform4i64vNV #define glUniform4i64vNV (gl.Uniform4i64vNV) #undef glUniform4iv #define glUniform4iv (gl.Uniform4iv) #undef glUniform4ui #define glUniform4ui (gl.Uniform4ui) #undef glUniform4ui64NV #define glUniform4ui64NV (gl.Uniform4ui64NV) #undef glUniform4ui64vNV #define glUniform4ui64vNV (gl.Uniform4ui64vNV) #undef glUniform4uiEXT #define glUniform4uiEXT (gl.Uniform4uiEXT) #undef glUniform4uiv #define glUniform4uiv (gl.Uniform4uiv) #undef glUniform4uivEXT #define glUniform4uivEXT (gl.Uniform4uivEXT) #undef glUniformBlockBinding #define glUniformBlockBinding (gl.UniformBlockBinding) #undef glUniformBufferEXT #define glUniformBufferEXT (gl.UniformBufferEXT) #undef glUniformHandleui64ARB #define glUniformHandleui64ARB (gl.UniformHandleui64ARB) #undef glUniformHandleui64NV #define glUniformHandleui64NV (gl.UniformHandleui64NV) #undef glUniformHandleui64vARB #define glUniformHandleui64vARB (gl.UniformHandleui64vARB) #undef glUniformHandleui64vNV #define glUniformHandleui64vNV (gl.UniformHandleui64vNV) #undef glUniformMatrix2dv #define glUniformMatrix2dv (gl.UniformMatrix2dv) #undef glUniformMatrix2fv #define glUniformMatrix2fv (gl.UniformMatrix2fv) #undef glUniformMatrix2x3dv #define glUniformMatrix2x3dv (gl.UniformMatrix2x3dv) #undef glUniformMatrix2x3fv #define glUniformMatrix2x3fv (gl.UniformMatrix2x3fv) #undef glUniformMatrix2x4dv #define glUniformMatrix2x4dv (gl.UniformMatrix2x4dv) #undef glUniformMatrix2x4fv #define glUniformMatrix2x4fv (gl.UniformMatrix2x4fv) #undef glUniformMatrix3dv #define glUniformMatrix3dv (gl.UniformMatrix3dv) #undef glUniformMatrix3fv #define glUniformMatrix3fv (gl.UniformMatrix3fv) #undef glUniformMatrix3x2dv #define glUniformMatrix3x2dv (gl.UniformMatrix3x2dv) #undef glUniformMatrix3x2fv #define glUniformMatrix3x2fv (gl.UniformMatrix3x2fv) #undef glUniformMatrix3x4dv #define glUniformMatrix3x4dv (gl.UniformMatrix3x4dv) #undef glUniformMatrix3x4fv #define glUniformMatrix3x4fv (gl.UniformMatrix3x4fv) #undef glUniformMatrix4dv #define glUniformMatrix4dv (gl.UniformMatrix4dv) #undef glUniformMatrix4fv #define glUniformMatrix4fv (gl.UniformMatrix4fv) #undef glUniformMatrix4x2dv #define glUniformMatrix4x2dv (gl.UniformMatrix4x2dv) #undef glUniformMatrix4x2fv #define glUniformMatrix4x2fv (gl.UniformMatrix4x2fv) #undef glUniformMatrix4x3dv #define glUniformMatrix4x3dv (gl.UniformMatrix4x3dv) #undef glUniformMatrix4x3fv #define glUniformMatrix4x3fv (gl.UniformMatrix4x3fv) #undef glUniformSubroutinesuiv #define glUniformSubroutinesuiv (gl.UniformSubroutinesuiv) #undef glUniformui64NV #define glUniformui64NV (gl.Uniformui64NV) #undef glUniformui64vNV #define glUniformui64vNV (gl.Uniformui64vNV) #undef glUnmapNamedBufferEXT #define glUnmapNamedBufferEXT (gl.UnmapNamedBufferEXT) #undef glUnmapTexture2DINTEL #define glUnmapTexture2DINTEL (gl.UnmapTexture2DINTEL) #undef glUseProgram #define glUseProgram (gl.UseProgram) #undef glUseProgramStages #define glUseProgramStages (gl.UseProgramStages) #undef glUseShaderProgramEXT #define glUseShaderProgramEXT (gl.UseShaderProgramEXT) #undef glVDPAUFiniNV #define glVDPAUFiniNV (gl.VDPAUFiniNV) #undef glVDPAUGetSurfaceivNV #define glVDPAUGetSurfaceivNV (gl.VDPAUGetSurfaceivNV) #undef glVDPAUInitNV #define glVDPAUInitNV (gl.VDPAUInitNV) #undef glVDPAUIsSurfaceNV #define glVDPAUIsSurfaceNV (gl.VDPAUIsSurfaceNV) #undef glVDPAUMapSurfacesNV #define glVDPAUMapSurfacesNV (gl.VDPAUMapSurfacesNV) #undef glVDPAURegisterOutputSurfaceNV #define glVDPAURegisterOutputSurfaceNV (gl.VDPAURegisterOutputSurfaceNV) #undef glVDPAURegisterVideoSurfaceNV #define glVDPAURegisterVideoSurfaceNV (gl.VDPAURegisterVideoSurfaceNV) #undef glVDPAUSurfaceAccessNV #define glVDPAUSurfaceAccessNV (gl.VDPAUSurfaceAccessNV) #undef glVDPAUUnmapSurfacesNV #define glVDPAUUnmapSurfacesNV (gl.VDPAUUnmapSurfacesNV) #undef glVDPAUUnregisterSurfaceNV #define glVDPAUUnregisterSurfaceNV (gl.VDPAUUnregisterSurfaceNV) #undef glValidateProgram #define glValidateProgram (gl.ValidateProgram) #undef glValidateProgramPipeline #define glValidateProgramPipeline (gl.ValidateProgramPipeline) #undef glVertex2bOES #define glVertex2bOES (gl.Vertex2bOES) #undef glVertex2bvOES #define glVertex2bvOES (gl.Vertex2bvOES) #undef glVertex2xOES #define glVertex2xOES (gl.Vertex2xOES) #undef glVertex2xvOES #define glVertex2xvOES (gl.Vertex2xvOES) #undef glVertex3bOES #define glVertex3bOES (gl.Vertex3bOES) #undef glVertex3bvOES #define glVertex3bvOES (gl.Vertex3bvOES) #undef glVertex3xOES #define glVertex3xOES (gl.Vertex3xOES) #undef glVertex3xvOES #define glVertex3xvOES (gl.Vertex3xvOES) #undef glVertex4bOES #define glVertex4bOES (gl.Vertex4bOES) #undef glVertex4bvOES #define glVertex4bvOES (gl.Vertex4bvOES) #undef glVertex4xOES #define glVertex4xOES (gl.Vertex4xOES) #undef glVertex4xvOES #define glVertex4xvOES (gl.Vertex4xvOES) #undef glVertexArrayBindVertexBufferEXT #define glVertexArrayBindVertexBufferEXT (gl.VertexArrayBindVertexBufferEXT) #undef glVertexArrayColorOffsetEXT #define glVertexArrayColorOffsetEXT (gl.VertexArrayColorOffsetEXT) #undef glVertexArrayEdgeFlagOffsetEXT #define glVertexArrayEdgeFlagOffsetEXT (gl.VertexArrayEdgeFlagOffsetEXT) #undef glVertexArrayFogCoordOffsetEXT #define glVertexArrayFogCoordOffsetEXT (gl.VertexArrayFogCoordOffsetEXT) #undef glVertexArrayIndexOffsetEXT #define glVertexArrayIndexOffsetEXT (gl.VertexArrayIndexOffsetEXT) #undef glVertexArrayMultiTexCoordOffsetEXT #define glVertexArrayMultiTexCoordOffsetEXT (gl.VertexArrayMultiTexCoordOffsetEXT) #undef glVertexArrayNormalOffsetEXT #define glVertexArrayNormalOffsetEXT (gl.VertexArrayNormalOffsetEXT) #undef glVertexArraySecondaryColorOffsetEXT #define glVertexArraySecondaryColorOffsetEXT (gl.VertexArraySecondaryColorOffsetEXT) #undef glVertexArrayTexCoordOffsetEXT #define glVertexArrayTexCoordOffsetEXT (gl.VertexArrayTexCoordOffsetEXT) #undef glVertexArrayVertexAttribBindingEXT #define glVertexArrayVertexAttribBindingEXT (gl.VertexArrayVertexAttribBindingEXT) #undef glVertexArrayVertexAttribDivisorEXT #define glVertexArrayVertexAttribDivisorEXT (gl.VertexArrayVertexAttribDivisorEXT) #undef glVertexArrayVertexAttribFormatEXT #define glVertexArrayVertexAttribFormatEXT (gl.VertexArrayVertexAttribFormatEXT) #undef glVertexArrayVertexAttribIFormatEXT #define glVertexArrayVertexAttribIFormatEXT (gl.VertexArrayVertexAttribIFormatEXT) #undef glVertexArrayVertexAttribIOffsetEXT #define glVertexArrayVertexAttribIOffsetEXT (gl.VertexArrayVertexAttribIOffsetEXT) #undef glVertexArrayVertexAttribLFormatEXT #define glVertexArrayVertexAttribLFormatEXT (gl.VertexArrayVertexAttribLFormatEXT) #undef glVertexArrayVertexAttribLOffsetEXT #define glVertexArrayVertexAttribLOffsetEXT (gl.VertexArrayVertexAttribLOffsetEXT) #undef glVertexArrayVertexAttribOffsetEXT #define glVertexArrayVertexAttribOffsetEXT (gl.VertexArrayVertexAttribOffsetEXT) #undef glVertexArrayVertexBindingDivisorEXT #define glVertexArrayVertexBindingDivisorEXT (gl.VertexArrayVertexBindingDivisorEXT) #undef glVertexArrayVertexOffsetEXT #define glVertexArrayVertexOffsetEXT (gl.VertexArrayVertexOffsetEXT) #undef glVertexAttrib1d #define glVertexAttrib1d (gl.VertexAttrib1d) #undef glVertexAttrib1dv #define glVertexAttrib1dv (gl.VertexAttrib1dv) #undef glVertexAttrib1f #define glVertexAttrib1f (gl.VertexAttrib1f) #undef glVertexAttrib1fv #define glVertexAttrib1fv (gl.VertexAttrib1fv) #undef glVertexAttrib1s #define glVertexAttrib1s (gl.VertexAttrib1s) #undef glVertexAttrib1sv #define glVertexAttrib1sv (gl.VertexAttrib1sv) #undef glVertexAttrib2d #define glVertexAttrib2d (gl.VertexAttrib2d) #undef glVertexAttrib2dv #define glVertexAttrib2dv (gl.VertexAttrib2dv) #undef glVertexAttrib2f #define glVertexAttrib2f (gl.VertexAttrib2f) #undef glVertexAttrib2fv #define glVertexAttrib2fv (gl.VertexAttrib2fv) #undef glVertexAttrib2s #define glVertexAttrib2s (gl.VertexAttrib2s) #undef glVertexAttrib2sv #define glVertexAttrib2sv (gl.VertexAttrib2sv) #undef glVertexAttrib3d #define glVertexAttrib3d (gl.VertexAttrib3d) #undef glVertexAttrib3dv #define glVertexAttrib3dv (gl.VertexAttrib3dv) #undef glVertexAttrib3f #define glVertexAttrib3f (gl.VertexAttrib3f) #undef glVertexAttrib3fv #define glVertexAttrib3fv (gl.VertexAttrib3fv) #undef glVertexAttrib3s #define glVertexAttrib3s (gl.VertexAttrib3s) #undef glVertexAttrib3sv #define glVertexAttrib3sv (gl.VertexAttrib3sv) #undef glVertexAttrib4Nbv #define glVertexAttrib4Nbv (gl.VertexAttrib4Nbv) #undef glVertexAttrib4Niv #define glVertexAttrib4Niv (gl.VertexAttrib4Niv) #undef glVertexAttrib4Nsv #define glVertexAttrib4Nsv (gl.VertexAttrib4Nsv) #undef glVertexAttrib4Nub #define glVertexAttrib4Nub (gl.VertexAttrib4Nub) #undef glVertexAttrib4Nubv #define glVertexAttrib4Nubv (gl.VertexAttrib4Nubv) #undef glVertexAttrib4Nuiv #define glVertexAttrib4Nuiv (gl.VertexAttrib4Nuiv) #undef glVertexAttrib4Nusv #define glVertexAttrib4Nusv (gl.VertexAttrib4Nusv) #undef glVertexAttrib4bv #define glVertexAttrib4bv (gl.VertexAttrib4bv) #undef glVertexAttrib4d #define glVertexAttrib4d (gl.VertexAttrib4d) #undef glVertexAttrib4dv #define glVertexAttrib4dv (gl.VertexAttrib4dv) #undef glVertexAttrib4f #define glVertexAttrib4f (gl.VertexAttrib4f) #undef glVertexAttrib4fv #define glVertexAttrib4fv (gl.VertexAttrib4fv) #undef glVertexAttrib4iv #define glVertexAttrib4iv (gl.VertexAttrib4iv) #undef glVertexAttrib4s #define glVertexAttrib4s (gl.VertexAttrib4s) #undef glVertexAttrib4sv #define glVertexAttrib4sv (gl.VertexAttrib4sv) #undef glVertexAttrib4ubv #define glVertexAttrib4ubv (gl.VertexAttrib4ubv) #undef glVertexAttrib4uiv #define glVertexAttrib4uiv (gl.VertexAttrib4uiv) #undef glVertexAttrib4usv #define glVertexAttrib4usv (gl.VertexAttrib4usv) #undef glVertexAttribBinding #define glVertexAttribBinding (gl.VertexAttribBinding) #undef glVertexAttribDivisor #define glVertexAttribDivisor (gl.VertexAttribDivisor) #undef glVertexAttribDivisorARB #define glVertexAttribDivisorARB (gl.VertexAttribDivisorARB) #undef glVertexAttribFormat #define glVertexAttribFormat (gl.VertexAttribFormat) #undef glVertexAttribFormatNV #define glVertexAttribFormatNV (gl.VertexAttribFormatNV) #undef glVertexAttribI1i #define glVertexAttribI1i (gl.VertexAttribI1i) #undef glVertexAttribI1iEXT #define glVertexAttribI1iEXT (gl.VertexAttribI1iEXT) #undef glVertexAttribI1iv #define glVertexAttribI1iv (gl.VertexAttribI1iv) #undef glVertexAttribI1ivEXT #define glVertexAttribI1ivEXT (gl.VertexAttribI1ivEXT) #undef glVertexAttribI1ui #define glVertexAttribI1ui (gl.VertexAttribI1ui) #undef glVertexAttribI1uiEXT #define glVertexAttribI1uiEXT (gl.VertexAttribI1uiEXT) #undef glVertexAttribI1uiv #define glVertexAttribI1uiv (gl.VertexAttribI1uiv) #undef glVertexAttribI1uivEXT #define glVertexAttribI1uivEXT (gl.VertexAttribI1uivEXT) #undef glVertexAttribI2i #define glVertexAttribI2i (gl.VertexAttribI2i) #undef glVertexAttribI2iEXT #define glVertexAttribI2iEXT (gl.VertexAttribI2iEXT) #undef glVertexAttribI2iv #define glVertexAttribI2iv (gl.VertexAttribI2iv) #undef glVertexAttribI2ivEXT #define glVertexAttribI2ivEXT (gl.VertexAttribI2ivEXT) #undef glVertexAttribI2ui #define glVertexAttribI2ui (gl.VertexAttribI2ui) #undef glVertexAttribI2uiEXT #define glVertexAttribI2uiEXT (gl.VertexAttribI2uiEXT) #undef glVertexAttribI2uiv #define glVertexAttribI2uiv (gl.VertexAttribI2uiv) #undef glVertexAttribI2uivEXT #define glVertexAttribI2uivEXT (gl.VertexAttribI2uivEXT) #undef glVertexAttribI3i #define glVertexAttribI3i (gl.VertexAttribI3i) #undef glVertexAttribI3iEXT #define glVertexAttribI3iEXT (gl.VertexAttribI3iEXT) #undef glVertexAttribI3iv #define glVertexAttribI3iv (gl.VertexAttribI3iv) #undef glVertexAttribI3ivEXT #define glVertexAttribI3ivEXT (gl.VertexAttribI3ivEXT) #undef glVertexAttribI3ui #define glVertexAttribI3ui (gl.VertexAttribI3ui) #undef glVertexAttribI3uiEXT #define glVertexAttribI3uiEXT (gl.VertexAttribI3uiEXT) #undef glVertexAttribI3uiv #define glVertexAttribI3uiv (gl.VertexAttribI3uiv) #undef glVertexAttribI3uivEXT #define glVertexAttribI3uivEXT (gl.VertexAttribI3uivEXT) #undef glVertexAttribI4bv #define glVertexAttribI4bv (gl.VertexAttribI4bv) #undef glVertexAttribI4bvEXT #define glVertexAttribI4bvEXT (gl.VertexAttribI4bvEXT) #undef glVertexAttribI4i #define glVertexAttribI4i (gl.VertexAttribI4i) #undef glVertexAttribI4iEXT #define glVertexAttribI4iEXT (gl.VertexAttribI4iEXT) #undef glVertexAttribI4iv #define glVertexAttribI4iv (gl.VertexAttribI4iv) #undef glVertexAttribI4ivEXT #define glVertexAttribI4ivEXT (gl.VertexAttribI4ivEXT) #undef glVertexAttribI4sv #define glVertexAttribI4sv (gl.VertexAttribI4sv) #undef glVertexAttribI4svEXT #define glVertexAttribI4svEXT (gl.VertexAttribI4svEXT) #undef glVertexAttribI4ubv #define glVertexAttribI4ubv (gl.VertexAttribI4ubv) #undef glVertexAttribI4ubvEXT #define glVertexAttribI4ubvEXT (gl.VertexAttribI4ubvEXT) #undef glVertexAttribI4ui #define glVertexAttribI4ui (gl.VertexAttribI4ui) #undef glVertexAttribI4uiEXT #define glVertexAttribI4uiEXT (gl.VertexAttribI4uiEXT) #undef glVertexAttribI4uiv #define glVertexAttribI4uiv (gl.VertexAttribI4uiv) #undef glVertexAttribI4uivEXT #define glVertexAttribI4uivEXT (gl.VertexAttribI4uivEXT) #undef glVertexAttribI4usv #define glVertexAttribI4usv (gl.VertexAttribI4usv) #undef glVertexAttribI4usvEXT #define glVertexAttribI4usvEXT (gl.VertexAttribI4usvEXT) #undef glVertexAttribIFormat #define glVertexAttribIFormat (gl.VertexAttribIFormat) #undef glVertexAttribIFormatNV #define glVertexAttribIFormatNV (gl.VertexAttribIFormatNV) #undef glVertexAttribIPointer #define glVertexAttribIPointer (gl.VertexAttribIPointer) #undef glVertexAttribIPointerEXT #define glVertexAttribIPointerEXT (gl.VertexAttribIPointerEXT) #undef glVertexAttribL1d #define glVertexAttribL1d (gl.VertexAttribL1d) #undef glVertexAttribL1dEXT #define glVertexAttribL1dEXT (gl.VertexAttribL1dEXT) #undef glVertexAttribL1dv #define glVertexAttribL1dv (gl.VertexAttribL1dv) #undef glVertexAttribL1dvEXT #define glVertexAttribL1dvEXT (gl.VertexAttribL1dvEXT) #undef glVertexAttribL1i64NV #define glVertexAttribL1i64NV (gl.VertexAttribL1i64NV) #undef glVertexAttribL1i64vNV #define glVertexAttribL1i64vNV (gl.VertexAttribL1i64vNV) #undef glVertexAttribL1ui64ARB #define glVertexAttribL1ui64ARB (gl.VertexAttribL1ui64ARB) #undef glVertexAttribL1ui64NV #define glVertexAttribL1ui64NV (gl.VertexAttribL1ui64NV) #undef glVertexAttribL1ui64vARB #define glVertexAttribL1ui64vARB (gl.VertexAttribL1ui64vARB) #undef glVertexAttribL1ui64vNV #define glVertexAttribL1ui64vNV (gl.VertexAttribL1ui64vNV) #undef glVertexAttribL2d #define glVertexAttribL2d (gl.VertexAttribL2d) #undef glVertexAttribL2dEXT #define glVertexAttribL2dEXT (gl.VertexAttribL2dEXT) #undef glVertexAttribL2dv #define glVertexAttribL2dv (gl.VertexAttribL2dv) #undef glVertexAttribL2dvEXT #define glVertexAttribL2dvEXT (gl.VertexAttribL2dvEXT) #undef glVertexAttribL2i64NV #define glVertexAttribL2i64NV (gl.VertexAttribL2i64NV) #undef glVertexAttribL2i64vNV #define glVertexAttribL2i64vNV (gl.VertexAttribL2i64vNV) #undef glVertexAttribL2ui64NV #define glVertexAttribL2ui64NV (gl.VertexAttribL2ui64NV) #undef glVertexAttribL2ui64vNV #define glVertexAttribL2ui64vNV (gl.VertexAttribL2ui64vNV) #undef glVertexAttribL3d #define glVertexAttribL3d (gl.VertexAttribL3d) #undef glVertexAttribL3dEXT #define glVertexAttribL3dEXT (gl.VertexAttribL3dEXT) #undef glVertexAttribL3dv #define glVertexAttribL3dv (gl.VertexAttribL3dv) #undef glVertexAttribL3dvEXT #define glVertexAttribL3dvEXT (gl.VertexAttribL3dvEXT) #undef glVertexAttribL3i64NV #define glVertexAttribL3i64NV (gl.VertexAttribL3i64NV) #undef glVertexAttribL3i64vNV #define glVertexAttribL3i64vNV (gl.VertexAttribL3i64vNV) #undef glVertexAttribL3ui64NV #define glVertexAttribL3ui64NV (gl.VertexAttribL3ui64NV) #undef glVertexAttribL3ui64vNV #define glVertexAttribL3ui64vNV (gl.VertexAttribL3ui64vNV) #undef glVertexAttribL4d #define glVertexAttribL4d (gl.VertexAttribL4d) #undef glVertexAttribL4dEXT #define glVertexAttribL4dEXT (gl.VertexAttribL4dEXT) #undef glVertexAttribL4dv #define glVertexAttribL4dv (gl.VertexAttribL4dv) #undef glVertexAttribL4dvEXT #define glVertexAttribL4dvEXT (gl.VertexAttribL4dvEXT) #undef glVertexAttribL4i64NV #define glVertexAttribL4i64NV (gl.VertexAttribL4i64NV) #undef glVertexAttribL4i64vNV #define glVertexAttribL4i64vNV (gl.VertexAttribL4i64vNV) #undef glVertexAttribL4ui64NV #define glVertexAttribL4ui64NV (gl.VertexAttribL4ui64NV) #undef glVertexAttribL4ui64vNV #define glVertexAttribL4ui64vNV (gl.VertexAttribL4ui64vNV) #undef glVertexAttribLFormat #define glVertexAttribLFormat (gl.VertexAttribLFormat) #undef glVertexAttribLFormatNV #define glVertexAttribLFormatNV (gl.VertexAttribLFormatNV) #undef glVertexAttribLPointer #define glVertexAttribLPointer (gl.VertexAttribLPointer) #undef glVertexAttribLPointerEXT #define glVertexAttribLPointerEXT (gl.VertexAttribLPointerEXT) #undef glVertexAttribP1ui #define glVertexAttribP1ui (gl.VertexAttribP1ui) #undef glVertexAttribP1uiv #define glVertexAttribP1uiv (gl.VertexAttribP1uiv) #undef glVertexAttribP2ui #define glVertexAttribP2ui (gl.VertexAttribP2ui) #undef glVertexAttribP2uiv #define glVertexAttribP2uiv (gl.VertexAttribP2uiv) #undef glVertexAttribP3ui #define glVertexAttribP3ui (gl.VertexAttribP3ui) #undef glVertexAttribP3uiv #define glVertexAttribP3uiv (gl.VertexAttribP3uiv) #undef glVertexAttribP4ui #define glVertexAttribP4ui (gl.VertexAttribP4ui) #undef glVertexAttribP4uiv #define glVertexAttribP4uiv (gl.VertexAttribP4uiv) #undef glVertexAttribParameteriAMD #define glVertexAttribParameteriAMD (gl.VertexAttribParameteriAMD) #undef glVertexAttribPointer #define glVertexAttribPointer (gl.VertexAttribPointer) #undef glVertexBindingDivisor #define glVertexBindingDivisor (gl.VertexBindingDivisor) #undef glVertexFormatNV #define glVertexFormatNV (gl.VertexFormatNV) #undef glVertexP2ui #define glVertexP2ui (gl.VertexP2ui) #undef glVertexP2uiv #define glVertexP2uiv (gl.VertexP2uiv) #undef glVertexP3ui #define glVertexP3ui (gl.VertexP3ui) #undef glVertexP3uiv #define glVertexP3uiv (gl.VertexP3uiv) #undef glVertexP4ui #define glVertexP4ui (gl.VertexP4ui) #undef glVertexP4uiv #define glVertexP4uiv (gl.VertexP4uiv) #undef glVertexPointSizefAPPLE #define glVertexPointSizefAPPLE (gl.VertexPointSizefAPPLE) #undef glVideoCaptureNV #define glVideoCaptureNV (gl.VideoCaptureNV) #undef glVideoCaptureStreamParameterdvNV #define glVideoCaptureStreamParameterdvNV (gl.VideoCaptureStreamParameterdvNV) #undef glVideoCaptureStreamParameterfvNV #define glVideoCaptureStreamParameterfvNV (gl.VideoCaptureStreamParameterfvNV) #undef glVideoCaptureStreamParameterivNV #define glVideoCaptureStreamParameterivNV (gl.VideoCaptureStreamParameterivNV) #undef glViewportArrayv #define glViewportArrayv (gl.ViewportArrayv) #undef glViewportIndexedf #define glViewportIndexedf (gl.ViewportIndexedf) #undef glViewportIndexedfv #define glViewportIndexedfv (gl.ViewportIndexedfv) #undef glWaitSync #define glWaitSync (gl.WaitSync) #undef glWeightPathsNV #define glWeightPathsNV (gl.WeightPathsNV) #undef glBindTextureUnit #define glBindTextureUnit (gl.BindTextureUnit) #undef glBlendBarrierKHR #define glBlendBarrierKHR (gl.BlendBarrierKHR) #undef glBlitNamedFramebuffer #define glBlitNamedFramebuffer (gl.BlitNamedFramebuffer) #undef glBufferPageCommitmentARB #define glBufferPageCommitmentARB (gl.BufferPageCommitmentARB) #undef glCallCommandListNV #define glCallCommandListNV (gl.CallCommandListNV) #undef glCheckNamedFramebufferStatus #define glCheckNamedFramebufferStatus (gl.CheckNamedFramebufferStatus) #undef glClearNamedBufferData #define glClearNamedBufferData (gl.ClearNamedBufferData) #undef glClearNamedBufferSubData #define glClearNamedBufferSubData (gl.ClearNamedBufferSubData) #undef glClearNamedFramebufferfi #define glClearNamedFramebufferfi (gl.ClearNamedFramebufferfi) #undef glClearNamedFramebufferfv #define glClearNamedFramebufferfv (gl.ClearNamedFramebufferfv) #undef glClearNamedFramebufferiv #define glClearNamedFramebufferiv (gl.ClearNamedFramebufferiv) #undef glClearNamedFramebufferuiv #define glClearNamedFramebufferuiv (gl.ClearNamedFramebufferuiv) #undef glClipControl #define glClipControl (gl.ClipControl) #undef glCommandListSegmentsNV #define glCommandListSegmentsNV (gl.CommandListSegmentsNV) #undef glCompileCommandListNV #define glCompileCommandListNV (gl.CompileCommandListNV) #undef glCompressedTextureSubImage1D #define glCompressedTextureSubImage1D (gl.CompressedTextureSubImage1D) #undef glCompressedTextureSubImage2D #define glCompressedTextureSubImage2D (gl.CompressedTextureSubImage2D) #undef glCompressedTextureSubImage3D #define glCompressedTextureSubImage3D (gl.CompressedTextureSubImage3D) #undef glCopyNamedBufferSubData #define glCopyNamedBufferSubData (gl.CopyNamedBufferSubData) #undef glCopyTextureSubImage1D #define glCopyTextureSubImage1D (gl.CopyTextureSubImage1D) #undef glCopyTextureSubImage2D #define glCopyTextureSubImage2D (gl.CopyTextureSubImage2D) #undef glCopyTextureSubImage3D #define glCopyTextureSubImage3D (gl.CopyTextureSubImage3D) #undef glCoverageModulationNV #define glCoverageModulationNV (gl.CoverageModulationNV) #undef glCoverageModulationTableNV #define glCoverageModulationTableNV (gl.CoverageModulationTableNV) #undef glCreateBuffers #define glCreateBuffers (gl.CreateBuffers) #undef glCreateCommandListsNV #define glCreateCommandListsNV (gl.CreateCommandListsNV) #undef glCreateFramebuffers #define glCreateFramebuffers (gl.CreateFramebuffers) #undef glCreateProgramPipelines #define glCreateProgramPipelines (gl.CreateProgramPipelines) #undef glCreateQueries #define glCreateQueries (gl.CreateQueries) #undef glCreateRenderbuffers #define glCreateRenderbuffers (gl.CreateRenderbuffers) #undef glCreateSamplers #define glCreateSamplers (gl.CreateSamplers) #undef glCreateStatesNV #define glCreateStatesNV (gl.CreateStatesNV) #undef glCreateTextures #define glCreateTextures (gl.CreateTextures) #undef glCreateTransformFeedbacks #define glCreateTransformFeedbacks (gl.CreateTransformFeedbacks) #undef glCreateVertexArrays #define glCreateVertexArrays (gl.CreateVertexArrays) #undef glDeleteCommandListsNV #define glDeleteCommandListsNV (gl.DeleteCommandListsNV) #undef glDeleteStatesNV #define glDeleteStatesNV (gl.DeleteStatesNV) #undef glDisableVertexArrayAttrib #define glDisableVertexArrayAttrib (gl.DisableVertexArrayAttrib) #undef glDrawCommandsAddressNV #define glDrawCommandsAddressNV (gl.DrawCommandsAddressNV) #undef glDrawCommandsNV #define glDrawCommandsNV (gl.DrawCommandsNV) #undef glDrawCommandsStatesAddressNV #define glDrawCommandsStatesAddressNV (gl.DrawCommandsStatesAddressNV) #undef glDrawCommandsStatesNV #define glDrawCommandsStatesNV (gl.DrawCommandsStatesNV) #undef glEnableVertexArrayAttrib #define glEnableVertexArrayAttrib (gl.EnableVertexArrayAttrib) #undef glFlushMappedNamedBufferRange #define glFlushMappedNamedBufferRange (gl.FlushMappedNamedBufferRange) #undef glFragmentCoverageColorNV #define glFragmentCoverageColorNV (gl.FragmentCoverageColorNV) #undef glFramebufferSampleLocationsfvNV #define glFramebufferSampleLocationsfvNV (gl.FramebufferSampleLocationsfvNV) #undef glFramebufferTextureMultiviewOVR #define glFramebufferTextureMultiviewOVR (gl.FramebufferTextureMultiviewOVR) #undef glGenerateTextureMipmap #define glGenerateTextureMipmap (gl.GenerateTextureMipmap) #undef glGetCommandHeaderNV #define glGetCommandHeaderNV (gl.GetCommandHeaderNV) #undef glGetCompressedTextureImage #define glGetCompressedTextureImage (gl.GetCompressedTextureImage) #undef glGetCompressedTextureSubImage #define glGetCompressedTextureSubImage (gl.GetCompressedTextureSubImage) #undef glGetCoverageModulationTableNV #define glGetCoverageModulationTableNV (gl.GetCoverageModulationTableNV) #undef glGetGraphicsResetStatus #define glGetGraphicsResetStatus (gl.GetGraphicsResetStatus) #undef glGetInternalformatSampleivNV #define glGetInternalformatSampleivNV (gl.GetInternalformatSampleivNV) #undef glGetNamedBufferParameteri64v #define glGetNamedBufferParameteri64v (gl.GetNamedBufferParameteri64v) #undef glGetNamedBufferParameteriv #define glGetNamedBufferParameteriv (gl.GetNamedBufferParameteriv) #undef glGetNamedBufferPointerv #define glGetNamedBufferPointerv (gl.GetNamedBufferPointerv) #undef glGetNamedBufferSubData #define glGetNamedBufferSubData (gl.GetNamedBufferSubData) #undef glGetNamedFramebufferAttachmentParameteriv #define glGetNamedFramebufferAttachmentParameteriv (gl.GetNamedFramebufferAttachmentParameteriv) #undef glGetNamedFramebufferParameteriv #define glGetNamedFramebufferParameteriv (gl.GetNamedFramebufferParameteriv) #undef glGetNamedRenderbufferParameteriv #define glGetNamedRenderbufferParameteriv (gl.GetNamedRenderbufferParameteriv) #undef glGetProgramResourcefvNV #define glGetProgramResourcefvNV (gl.GetProgramResourcefvNV) #undef glGetQueryBufferObjecti64v #define glGetQueryBufferObjecti64v (gl.GetQueryBufferObjecti64v) #undef glGetQueryBufferObjectiv #define glGetQueryBufferObjectiv (gl.GetQueryBufferObjectiv) #undef glGetQueryBufferObjectui64v #define glGetQueryBufferObjectui64v (gl.GetQueryBufferObjectui64v) #undef glGetQueryBufferObjectuiv #define glGetQueryBufferObjectuiv (gl.GetQueryBufferObjectuiv) #undef glGetStageIndexNV #define glGetStageIndexNV (gl.GetStageIndexNV) #undef glGetTextureImage #define glGetTextureImage (gl.GetTextureImage) #undef glGetTextureLevelParameterfv #define glGetTextureLevelParameterfv (gl.GetTextureLevelParameterfv) #undef glGetTextureLevelParameteriv #define glGetTextureLevelParameteriv (gl.GetTextureLevelParameteriv) #undef glGetTextureParameterIiv #define glGetTextureParameterIiv (gl.GetTextureParameterIiv) #undef glGetTextureParameterIuiv #define glGetTextureParameterIuiv (gl.GetTextureParameterIuiv) #undef glGetTextureParameterfv #define glGetTextureParameterfv (gl.GetTextureParameterfv) #undef glGetTextureParameteriv #define glGetTextureParameteriv (gl.GetTextureParameteriv) #undef glGetTextureSubImage #define glGetTextureSubImage (gl.GetTextureSubImage) #undef glGetTransformFeedbacki64_v #define glGetTransformFeedbacki64_v (gl.GetTransformFeedbacki64_v) #undef glGetTransformFeedbacki_v #define glGetTransformFeedbacki_v (gl.GetTransformFeedbacki_v) #undef glGetTransformFeedbackiv #define glGetTransformFeedbackiv (gl.GetTransformFeedbackiv) #undef glGetVertexArrayIndexed64iv #define glGetVertexArrayIndexed64iv (gl.GetVertexArrayIndexed64iv) #undef glGetVertexArrayIndexediv #define glGetVertexArrayIndexediv (gl.GetVertexArrayIndexediv) #undef glGetVertexArrayiv #define glGetVertexArrayiv (gl.GetVertexArrayiv) #undef glGetnColorTable #define glGetnColorTable (gl.GetnColorTable) #undef glGetnCompressedTexImage #define glGetnCompressedTexImage (gl.GetnCompressedTexImage) #undef glGetnConvolutionFilter #define glGetnConvolutionFilter (gl.GetnConvolutionFilter) #undef glGetnHistogram #define glGetnHistogram (gl.GetnHistogram) #undef glGetnMapdv #define glGetnMapdv (gl.GetnMapdv) #undef glGetnMapfv #define glGetnMapfv (gl.GetnMapfv) #undef glGetnMapiv #define glGetnMapiv (gl.GetnMapiv) #undef glGetnMinmax #define glGetnMinmax (gl.GetnMinmax) #undef glGetnPixelMapfv #define glGetnPixelMapfv (gl.GetnPixelMapfv) #undef glGetnPixelMapuiv #define glGetnPixelMapuiv (gl.GetnPixelMapuiv) #undef glGetnPixelMapusv #define glGetnPixelMapusv (gl.GetnPixelMapusv) #undef glGetnPolygonStipple #define glGetnPolygonStipple (gl.GetnPolygonStipple) #undef glGetnSeparableFilter #define glGetnSeparableFilter (gl.GetnSeparableFilter) #undef glGetnTexImage #define glGetnTexImage (gl.GetnTexImage) #undef glGetnUniformdv #define glGetnUniformdv (gl.GetnUniformdv) #undef glGetnUniformfv #define glGetnUniformfv (gl.GetnUniformfv) #undef glGetnUniformiv #define glGetnUniformiv (gl.GetnUniformiv) #undef glGetnUniformuiv #define glGetnUniformuiv (gl.GetnUniformuiv) #undef glInvalidateNamedFramebufferData #define glInvalidateNamedFramebufferData (gl.InvalidateNamedFramebufferData) #undef glInvalidateNamedFramebufferSubData #define glInvalidateNamedFramebufferSubData (gl.InvalidateNamedFramebufferSubData) #undef glIsCommandListNV #define glIsCommandListNV (gl.IsCommandListNV) #undef glIsStateNV #define glIsStateNV (gl.IsStateNV) #undef glListDrawCommandsStatesClientNV #define glListDrawCommandsStatesClientNV (gl.ListDrawCommandsStatesClientNV) #undef glMapNamedBuffer #define glMapNamedBuffer (gl.MapNamedBuffer) #undef glMapNamedBufferRange #define glMapNamedBufferRange (gl.MapNamedBufferRange) #undef glMatrixLoad3x2fNV #define glMatrixLoad3x2fNV (gl.MatrixLoad3x2fNV) #undef glMatrixLoad3x3fNV #define glMatrixLoad3x3fNV (gl.MatrixLoad3x3fNV) #undef glMatrixLoadTranspose3x3fNV #define glMatrixLoadTranspose3x3fNV (gl.MatrixLoadTranspose3x3fNV) #undef glMatrixMult3x2fNV #define glMatrixMult3x2fNV (gl.MatrixMult3x2fNV) #undef glMatrixMult3x3fNV #define glMatrixMult3x3fNV (gl.MatrixMult3x3fNV) #undef glMatrixMultTranspose3x3fNV #define glMatrixMultTranspose3x3fNV (gl.MatrixMultTranspose3x3fNV) #undef glMemoryBarrierByRegion #define glMemoryBarrierByRegion (gl.MemoryBarrierByRegion) #undef glMultiDrawArraysIndirectBindlessCountNV #define glMultiDrawArraysIndirectBindlessCountNV (gl.MultiDrawArraysIndirectBindlessCountNV) #undef glMultiDrawElementsIndirectBindlessCountNV #define glMultiDrawElementsIndirectBindlessCountNV (gl.MultiDrawElementsIndirectBindlessCountNV) #undef glNamedBufferData #define glNamedBufferData (gl.NamedBufferData) #undef glNamedBufferPageCommitmentARB #define glNamedBufferPageCommitmentARB (gl.NamedBufferPageCommitmentARB) #undef glNamedBufferPageCommitmentEXT #define glNamedBufferPageCommitmentEXT (gl.NamedBufferPageCommitmentEXT) #undef glNamedBufferStorage #define glNamedBufferStorage (gl.NamedBufferStorage) #undef glNamedBufferSubData #define glNamedBufferSubData (gl.NamedBufferSubData) #undef glNamedFramebufferDrawBuffer #define glNamedFramebufferDrawBuffer (gl.NamedFramebufferDrawBuffer) #undef glNamedFramebufferDrawBuffers #define glNamedFramebufferDrawBuffers (gl.NamedFramebufferDrawBuffers) #undef glNamedFramebufferParameteri #define glNamedFramebufferParameteri (gl.NamedFramebufferParameteri) #undef glNamedFramebufferReadBuffer #define glNamedFramebufferReadBuffer (gl.NamedFramebufferReadBuffer) #undef glNamedFramebufferRenderbuffer #define glNamedFramebufferRenderbuffer (gl.NamedFramebufferRenderbuffer) #undef glNamedFramebufferSampleLocationsfvNV #define glNamedFramebufferSampleLocationsfvNV (gl.NamedFramebufferSampleLocationsfvNV) #undef glNamedFramebufferTexture #define glNamedFramebufferTexture (gl.NamedFramebufferTexture) #undef glNamedFramebufferTextureLayer #define glNamedFramebufferTextureLayer (gl.NamedFramebufferTextureLayer) #undef glNamedRenderbufferStorage #define glNamedRenderbufferStorage (gl.NamedRenderbufferStorage) #undef glNamedRenderbufferStorageMultisample #define glNamedRenderbufferStorageMultisample (gl.NamedRenderbufferStorageMultisample) #undef glPathGlyphIndexArrayNV #define glPathGlyphIndexArrayNV (gl.PathGlyphIndexArrayNV) #undef glPathGlyphIndexRangeNV #define glPathGlyphIndexRangeNV (gl.PathGlyphIndexRangeNV) #undef glPathMemoryGlyphIndexArrayNV #define glPathMemoryGlyphIndexArrayNV (gl.PathMemoryGlyphIndexArrayNV) #undef glPolygonOffsetClampEXT #define glPolygonOffsetClampEXT (gl.PolygonOffsetClampEXT) #undef glProgramPathFragmentInputGenNV #define glProgramPathFragmentInputGenNV (gl.ProgramPathFragmentInputGenNV) #undef glRasterSamplesEXT #define glRasterSamplesEXT (gl.RasterSamplesEXT) #undef glReadnPixels #define glReadnPixels (gl.ReadnPixels) #undef glResolveDepthValuesNV #define glResolveDepthValuesNV (gl.ResolveDepthValuesNV) #undef glStateCaptureNV #define glStateCaptureNV (gl.StateCaptureNV) #undef glStencilThenCoverFillPathInstancedNV #define glStencilThenCoverFillPathInstancedNV (gl.StencilThenCoverFillPathInstancedNV) #undef glStencilThenCoverFillPathNV #define glStencilThenCoverFillPathNV (gl.StencilThenCoverFillPathNV) #undef glStencilThenCoverStrokePathInstancedNV #define glStencilThenCoverStrokePathInstancedNV (gl.StencilThenCoverStrokePathInstancedNV) #undef glStencilThenCoverStrokePathNV #define glStencilThenCoverStrokePathNV (gl.StencilThenCoverStrokePathNV) #undef glSubpixelPrecisionBiasNV #define glSubpixelPrecisionBiasNV (gl.SubpixelPrecisionBiasNV) #undef glTextureBarrier #define glTextureBarrier (gl.TextureBarrier) #undef glTextureBuffer #define glTextureBuffer (gl.TextureBuffer) #undef glTextureBufferRange #define glTextureBufferRange (gl.TextureBufferRange) #undef glTextureParameterIiv #define glTextureParameterIiv (gl.TextureParameterIiv) #undef glTextureParameterIuiv #define glTextureParameterIuiv (gl.TextureParameterIuiv) #undef glTextureParameterf #define glTextureParameterf (gl.TextureParameterf) #undef glTextureParameterfv #define glTextureParameterfv (gl.TextureParameterfv) #undef glTextureParameteri #define glTextureParameteri (gl.TextureParameteri) #undef glTextureParameteriv #define glTextureParameteriv (gl.TextureParameteriv) #undef glTextureStorage1D #define glTextureStorage1D (gl.TextureStorage1D) #undef glTextureStorage2D #define glTextureStorage2D (gl.TextureStorage2D) #undef glTextureStorage2DMultisample #define glTextureStorage2DMultisample (gl.TextureStorage2DMultisample) #undef glTextureStorage3D #define glTextureStorage3D (gl.TextureStorage3D) #undef glTextureStorage3DMultisample #define glTextureStorage3DMultisample (gl.TextureStorage3DMultisample) #undef glTextureSubImage1D #define glTextureSubImage1D (gl.TextureSubImage1D) #undef glTextureSubImage2D #define glTextureSubImage2D (gl.TextureSubImage2D) #undef glTextureSubImage3D #define glTextureSubImage3D (gl.TextureSubImage3D) #undef glTransformFeedbackBufferBase #define glTransformFeedbackBufferBase (gl.TransformFeedbackBufferBase) #undef glTransformFeedbackBufferRange #define glTransformFeedbackBufferRange (gl.TransformFeedbackBufferRange) #undef glUnmapNamedBuffer #define glUnmapNamedBuffer (gl.UnmapNamedBuffer) #undef glVertexArrayAttribBinding #define glVertexArrayAttribBinding (gl.VertexArrayAttribBinding) #undef glVertexArrayAttribFormat #define glVertexArrayAttribFormat (gl.VertexArrayAttribFormat) #undef glVertexArrayAttribIFormat #define glVertexArrayAttribIFormat (gl.VertexArrayAttribIFormat) #undef glVertexArrayAttribLFormat #define glVertexArrayAttribLFormat (gl.VertexArrayAttribLFormat) #undef glVertexArrayBindingDivisor #define glVertexArrayBindingDivisor (gl.VertexArrayBindingDivisor) #undef glVertexArrayElementBuffer #define glVertexArrayElementBuffer (gl.VertexArrayElementBuffer) #undef glVertexArrayVertexBuffer #define glVertexArrayVertexBuffer (gl.VertexArrayVertexBuffer) #undef glVertexArrayVertexBuffers #define glVertexArrayVertexBuffers (gl.VertexArrayVertexBuffers) #undef OSMesaCreateContextAttribs #define OSMesaCreateContextAttribs (gl.OSMesaCreateContextAttribs) #undef glSpecializeShader #define glSpecializeShader (gl.SpecializeShader) #undef glSpecializeShaderARB #define glSpecializeShaderARB (gl.SpecializeShaderARB) #undef glMultiDrawArraysIndirectCount #define glMultiDrawArraysIndirectCount (gl.MultiDrawArraysIndirectCount) #undef glMultiDrawElementsIndirectCount #define glMultiDrawElementsIndirectCount (gl.MultiDrawElementsIndirectCount) #undef glPolygonOffsetClamp #define glPolygonOffsetClamp (gl.PolygonOffsetClamp) #undef glPrimitiveBoundingBoxARB #define glPrimitiveBoundingBoxARB (gl.PrimitiveBoundingBoxARB) #undef glUniform1i64ARB #define glUniform1i64ARB (gl.Uniform1i64ARB) #undef glUniform2i64ARB #define glUniform2i64ARB (gl.Uniform2i64ARB) #undef glUniform3i64ARB #define glUniform3i64ARB (gl.Uniform3i64ARB) #undef glUniform4i64ARB #define glUniform4i64ARB (gl.Uniform4i64ARB) #undef glUniform1i64vARB #define glUniform1i64vARB (gl.Uniform1i64vARB) #undef glUniform2i64vARB #define glUniform2i64vARB (gl.Uniform2i64vARB) #undef glUniform3i64vARB #define glUniform3i64vARB (gl.Uniform3i64vARB) #undef glUniform4i64vARB #define glUniform4i64vARB (gl.Uniform4i64vARB) #undef glUniform1ui64ARB #define glUniform1ui64ARB (gl.Uniform1ui64ARB) #undef glUniform2ui64ARB #define glUniform2ui64ARB (gl.Uniform2ui64ARB) #undef glUniform3ui64ARB #define glUniform3ui64ARB (gl.Uniform3ui64ARB) #undef glUniform4ui64ARB #define glUniform4ui64ARB (gl.Uniform4ui64ARB) #undef glUniform1ui64vARB #define glUniform1ui64vARB (gl.Uniform1ui64vARB) #undef glUniform2ui64vARB #define glUniform2ui64vARB (gl.Uniform2ui64vARB) #undef glUniform3ui64vARB #define glUniform3ui64vARB (gl.Uniform3ui64vARB) #undef glUniform4ui64vARB #define glUniform4ui64vARB (gl.Uniform4ui64vARB) #undef glGetUniformi64vARB #define glGetUniformi64vARB (gl.GetUniformi64vARB) #undef glGetUniformui64vARB #define glGetUniformui64vARB (gl.GetUniformui64vARB) #undef glGetnUniformi64vARB #define glGetnUniformi64vARB (gl.GetnUniformi64vARB) #undef glGetnUniformui64vARB #define glGetnUniformui64vARB (gl.GetnUniformui64vARB) #undef glProgramUniform1i64ARB #define glProgramUniform1i64ARB (gl.ProgramUniform1i64ARB) #undef glProgramUniform2i64ARB #define glProgramUniform2i64ARB (gl.ProgramUniform2i64ARB) #undef glProgramUniform3i64ARB #define glProgramUniform3i64ARB (gl.ProgramUniform3i64ARB) #undef glProgramUniform4i64ARB #define glProgramUniform4i64ARB (gl.ProgramUniform4i64ARB) #undef glProgramUniform1i64vARB #define glProgramUniform1i64vARB (gl.ProgramUniform1i64vARB) #undef glProgramUniform2i64vARB #define glProgramUniform2i64vARB (gl.ProgramUniform2i64vARB) #undef glProgramUniform3i64vARB #define glProgramUniform3i64vARB (gl.ProgramUniform3i64vARB) #undef glProgramUniform4i64vARB #define glProgramUniform4i64vARB (gl.ProgramUniform4i64vARB) #undef glProgramUniform1ui64ARB #define glProgramUniform1ui64ARB (gl.ProgramUniform1ui64ARB) #undef glProgramUniform2ui64ARB #define glProgramUniform2ui64ARB (gl.ProgramUniform2ui64ARB) #undef glProgramUniform3ui64ARB #define glProgramUniform3ui64ARB (gl.ProgramUniform3ui64ARB) #undef glProgramUniform4ui64ARB #define glProgramUniform4ui64ARB (gl.ProgramUniform4ui64ARB) #undef glProgramUniform1ui64vARB #define glProgramUniform1ui64vARB (gl.ProgramUniform1ui64vARB) #undef glProgramUniform2ui64vARB #define glProgramUniform2ui64vARB (gl.ProgramUniform2ui64vARB) #undef glProgramUniform3ui64vARB #define glProgramUniform3ui64vARB (gl.ProgramUniform3ui64vARB) #undef glProgramUniform4ui64vARB #define glProgramUniform4ui64vARB (gl.ProgramUniform4ui64vARB) #undef glMaxShaderCompilerThreadsARB #define glMaxShaderCompilerThreadsARB (gl.MaxShaderCompilerThreadsARB) #undef glFramebufferSampleLocationsfvARB #define glFramebufferSampleLocationsfvARB (gl.FramebufferSampleLocationsfvARB) #undef glNamedFramebufferSampleLocationsfvARB #define glNamedFramebufferSampleLocationsfvARB (gl.NamedFramebufferSampleLocationsfvARB) #undef glEvaluateDepthValuesARB #define glEvaluateDepthValuesARB (gl.EvaluateDepthValuesARB) #undef glMaxShaderCompilerThreadsKHR #define glMaxShaderCompilerThreadsKHR (gl.MaxShaderCompilerThreadsKHR) #undef glBufferStorageExternalEXT #define glBufferStorageExternalEXT (gl.BufferStorageExternalEXT) #undef glNamedBufferStorageExternalEXT #define glNamedBufferStorageExternalEXT (gl.NamedBufferStorageExternalEXT) #undef glGetUnsignedBytevEXT #define glGetUnsignedBytevEXT (gl.GetUnsignedBytevEXT) #undef glGetUnsignedBytei_vEXT #define glGetUnsignedBytei_vEXT (gl.GetUnsignedBytei_vEXT) #undef glDeleteMemoryObjectsEXT #define glDeleteMemoryObjectsEXT (gl.DeleteMemoryObjectsEXT) #undef glIsMemoryObjectEXT #define glIsMemoryObjectEXT (gl.IsMemoryObjectEXT) #undef glCreateMemoryObjectsEXT #define glCreateMemoryObjectsEXT (gl.CreateMemoryObjectsEXT) #undef glMemoryObjectParameterivEXT #define glMemoryObjectParameterivEXT (gl.MemoryObjectParameterivEXT) #undef glGetMemoryObjectParameterivEXT #define glGetMemoryObjectParameterivEXT (gl.GetMemoryObjectParameterivEXT) #undef glTexStorageMem2DEXT #define glTexStorageMem2DEXT (gl.TexStorageMem2DEXT) #undef glTexStorageMem2DMultisampleEXT #define glTexStorageMem2DMultisampleEXT (gl.TexStorageMem2DMultisampleEXT) #undef glTexStorageMem3DEXT #define glTexStorageMem3DEXT (gl.TexStorageMem3DEXT) #undef glTexStorageMem3DMultisampleEXT #define glTexStorageMem3DMultisampleEXT (gl.TexStorageMem3DMultisampleEXT) #undef glBufferStorageMemEXT #define glBufferStorageMemEXT (gl.BufferStorageMemEXT) #undef glTextureStorageMem2DEXT #define glTextureStorageMem2DEXT (gl.TextureStorageMem2DEXT) #undef glTextureStorageMem2DMultisampleEXT #define glTextureStorageMem2DMultisampleEXT (gl.TextureStorageMem2DMultisampleEXT) #undef glTextureStorageMem3DEXT #define glTextureStorageMem3DEXT (gl.TextureStorageMem3DEXT) #undef glTextureStorageMem3DMultisampleEXT #define glTextureStorageMem3DMultisampleEXT (gl.TextureStorageMem3DMultisampleEXT) #undef glNamedBufferStorageMemEXT #define glNamedBufferStorageMemEXT (gl.NamedBufferStorageMemEXT) #undef glTexStorageMem1DEXT #define glTexStorageMem1DEXT (gl.TexStorageMem1DEXT) #undef glTextureStorageMem1DEXT #define glTextureStorageMem1DEXT (gl.TextureStorageMem1DEXT) #undef glImportMemoryFdEXT #define glImportMemoryFdEXT (gl.ImportMemoryFdEXT) #undef glImportMemoryWin32HandleEXT #define glImportMemoryWin32HandleEXT (gl.ImportMemoryWin32HandleEXT) #undef glImportMemoryWin32NameEXT #define glImportMemoryWin32NameEXT (gl.ImportMemoryWin32NameEXT) #undef glGenSemaphoresEXT #define glGenSemaphoresEXT (gl.GenSemaphoresEXT) #undef glDeleteSemaphoresEXT #define glDeleteSemaphoresEXT (gl.DeleteSemaphoresEXT) #undef glIsSemaphoreEXT #define glIsSemaphoreEXT (gl.IsSemaphoreEXT) #undef glSemaphoreParameterui64vEXT #define glSemaphoreParameterui64vEXT (gl.SemaphoreParameterui64vEXT) #undef glGetSemaphoreParameterui64vEXT #define glGetSemaphoreParameterui64vEXT (gl.GetSemaphoreParameterui64vEXT) #undef glWaitSemaphoreEXT #define glWaitSemaphoreEXT (gl.WaitSemaphoreEXT) #undef glSignalSemaphoreEXT #define glSignalSemaphoreEXT (gl.SignalSemaphoreEXT) #undef glImportSemaphoreFdEXT #define glImportSemaphoreFdEXT (gl.ImportSemaphoreFdEXT) #undef glImportSemaphoreWin32HandleEXT #define glImportSemaphoreWin32HandleEXT (gl.ImportSemaphoreWin32HandleEXT) #undef glImportSemaphoreWin32NameEXT #define glImportSemaphoreWin32NameEXT (gl.ImportSemaphoreWin32NameEXT) #undef glAcquireKeyedMutexWin32EXT #define glAcquireKeyedMutexWin32EXT (gl.AcquireKeyedMutexWin32EXT) #undef glReleaseKeyedMutexWin32EXT #define glReleaseKeyedMutexWin32EXT (gl.ReleaseKeyedMutexWin32EXT) #undef glLGPUNamedBufferSubDataNVX #define glLGPUNamedBufferSubDataNVX (gl.LGPUNamedBufferSubDataNVX) #undef glLGPUCopyImageSubDataNVX #define glLGPUCopyImageSubDataNVX (gl.LGPUCopyImageSubDataNVX) #undef glLGPUInterlockNVX #define glLGPUInterlockNVX (gl.LGPUInterlockNVX) #undef glAlphaToCoverageDitherControlNV #define glAlphaToCoverageDitherControlNV (gl.AlphaToCoverageDitherControlNV) #undef glDrawVkImageNV #define glDrawVkImageNV (gl.DrawVkImageNV) #undef glGetVkProcAddrNV #define glGetVkProcAddrNV (gl.GetVkProcAddrNV) #undef glWaitVkSemaphoreNV #define glWaitVkSemaphoreNV (gl.WaitVkSemaphoreNV) #undef glSignalVkSemaphoreNV #define glSignalVkSemaphoreNV (gl.SignalVkSemaphoreNV) #undef glSignalVkFenceNV #define glSignalVkFenceNV (gl.SignalVkFenceNV) #undef glRenderGpuMaskNV #define glRenderGpuMaskNV (gl.RenderGpuMaskNV) #undef glMulticastBufferSubDataNV #define glMulticastBufferSubDataNV (gl.MulticastBufferSubDataNV) #undef glMulticastCopyBufferSubDataNV #define glMulticastCopyBufferSubDataNV (gl.MulticastCopyBufferSubDataNV) #undef glMulticastCopyImageSubDataNV #define glMulticastCopyImageSubDataNV (gl.MulticastCopyImageSubDataNV) #undef glMulticastBlitFramebufferNV #define glMulticastBlitFramebufferNV (gl.MulticastBlitFramebufferNV) #undef glMulticastFramebufferSampleLocationsfvNV #define glMulticastFramebufferSampleLocationsfvNV (gl.MulticastFramebufferSampleLocationsfvNV) #undef glMulticastBarrierNV #define glMulticastBarrierNV (gl.MulticastBarrierNV) #undef glMulticastWaitSyncNV #define glMulticastWaitSyncNV (gl.MulticastWaitSyncNV) #undef glMulticastGetQueryObjectivNV #define glMulticastGetQueryObjectivNV (gl.MulticastGetQueryObjectivNV) #undef glMulticastGetQueryObjectuivNV #define glMulticastGetQueryObjectuivNV (gl.MulticastGetQueryObjectuivNV) #undef glMulticastGetQueryObjecti64vNV #define glMulticastGetQueryObjecti64vNV (gl.MulticastGetQueryObjecti64vNV) #undef glMulticastGetQueryObjectui64vNV #define glMulticastGetQueryObjectui64vNV (gl.MulticastGetQueryObjectui64vNV) #undef glQueryResourceNV #define glQueryResourceNV (gl.QueryResourceNV) #undef glGenQueryResourceTagNV #define glGenQueryResourceTagNV (gl.GenQueryResourceTagNV) #undef glDeleteQueryResourceTagNV #define glDeleteQueryResourceTagNV (gl.DeleteQueryResourceTagNV) #undef glQueryResourceTagNV #define glQueryResourceTagNV (gl.QueryResourceTagNV) #undef glFramebufferSamplePositionsfvAMD #define glFramebufferSamplePositionsfvAMD (gl.FramebufferSamplePositionsfvAMD) #undef glNamedFramebufferSamplePositionsfvAMD #define glNamedFramebufferSamplePositionsfvAMD (gl.NamedFramebufferSamplePositionsfvAMD) #undef glGetFramebufferParameterfvAMD #define glGetFramebufferParameterfvAMD (gl.GetFramebufferParameterfvAMD) #undef glGetNamedFramebufferParameterfvAMD #define glGetNamedFramebufferParameterfvAMD (gl.GetNamedFramebufferParameterfvAMD) #undef glWindowRectanglesEXT #define glWindowRectanglesEXT (gl.WindowRectanglesEXT) #undef glApplyFramebufferAttachmentCMAAINTEL #define glApplyFramebufferAttachmentCMAAINTEL (gl.ApplyFramebufferAttachmentCMAAINTEL) #undef glViewportSwizzleNV #define glViewportSwizzleNV (gl.ViewportSwizzleNV) #undef glViewportPositionWScaleNV #define glViewportPositionWScaleNV (gl.ViewportPositionWScaleNV) #undef glConservativeRasterParameterfNV #define glConservativeRasterParameterfNV (gl.ConservativeRasterParameterfNV) #undef glConservativeRasterParameteriNV #define glConservativeRasterParameteriNV (gl.ConservativeRasterParameteriNV) #endif /* * Functions exported from TinyGL that take float arguments, * and conflict with OpenGL functions of the same name */ #undef glFrustum #define glFrustum glFrustumf #undef glClearDepth #define glClearDepth glClearDepthf #undef glOrtho #define glOrtho glOrthof #undef gluLookAt #define gluLookAt gluLookAtf /* fix bad name */ #undef information #define tinyglinformation gl.information /* Functions generated: 13 OSMesa + 2956 GL + 2 GLU */ #endif /* __NFOSMESA_H__ */ aranym-1.1.0/atari/nfosmesa/osmesa_slb.c0000664000175000017500000002531513454637621016415 0ustar joyjoy#ifndef __GNUC__ #error "this file is for GNU-C only" #endif #include #include "nfosmesa_nfapi.h" #include #include "lib-osmesa.h" #include "lib-oldmesa.h" #include "lib-misc.h" #define __CDECL typedef long __CDECL (*SLB_LFUNC)(BASEPAGE *pd, long fn, long nargs, ...); #ifndef __STRINGIFY #define __STRINGIFY(x) __STRINGIFY1(x) #define __STRINGIFY1(x) #x #endif /* generate the prototypes */ #define varargs(proto...) proto #undef NOTHING #undef AND #define NOTHING #define AND , #define NO_PROC #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) static type __CDECL slb_ ## gl ## name(BASEPAGE *__basepage, long __fn, long __nwords, gl_private *private, void *first_param); #define GL_PROC64(type, gl, name, export, upper, proto, args, first, ret) static void __CDECL slb_ ## gl ## name(BASEPAGE *__basepage, long __fn, long __nwords, gl_private *private, void *first_param, GLuint64 *retval); #define LENGL_PROC(type, glx, name, export, upper, proto, args, first, ret) static const GLubyte *__CDECL slb_ ## gl ## name(BASEPAGE *__basepage, long __fn, long __nwords, gl_private *private, void *first_param); #define PUTGL_PROC(type, glx, name, export, upper, proto, args, first, ret) NO_PROC #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) static type __CDECL slb_ ## OSMesa ## name(BASEPAGE *__basepage, long __fn, long __nwords, gl_private *private, void *first_param); #define TINYGL_PROC(type, gl, name, export, upper, proto, args, first, ret) static type __CDECL slb_ ## name(BASEPAGE *__basepage, long __fn, long __nwords, gl_private *private, void *first_param); #include "glfuncs-bynum.h" static long __CDECL slb_libinit(BASEPAGE *base, long fn, long nwords, gl_private *private); /* The file header of a shared library */ struct slb_head { long slh_magic; /* Magic value (0x70004afc) */ const char *slh_name; /* Name of the library */ long slh_version; /* Version number */ long slh_flags; /* Flags, currently 0L and unused */ long __CDECL (*slh_slb_init)(void); /* Pointer to init()-function */ void __CDECL (*slh_slb_exit)(void); /* Pointer to exit()-function */ long __CDECL (*slh_slb_open)(BASEPAGE *b); /* Pointer to open()-function */ long __CDECL (*slh_slb_close)(BASEPAGE *b); /* Pointer to close()-function */ const char *const *slh_names; /* Pointer to functions names, or 0L */ void *sl_next; /* used by MetaDOS loader */ long slh_reserved[7]; /* Currently 0L and unused */ long slh_no_funcs; /* Number of functions */ SLB_LFUNC slh_functions[NFOSMESA_LAST]; /* The function pointers */ }; static char const slh_name[]; static char const *const slh_names[]; static long __CDECL slb_init(void); static void __CDECL slb_exit(void); static long __CDECL slb_open(BASEPAGE *bp); static long __CDECL slb_close(BASEPAGE *bp); static void __CDECL slb_nop(void); /* * The file header of a shared library * * This replaces the startup code, and must be the first thing in this file, * and also in the resulting executable. * Make sure your binutils put this into the text section. */ struct slb_head const _start = { 0x70004afc, slh_name, ARANFOSMESA_NFAPI_VERSION, 0, slb_init, slb_exit, slb_open, slb_close, slh_names, 0, { 0, 0, 0, 0, 0, 0, 0 }, NFOSMESA_LAST, { (SLB_LFUNC)slb_libinit, /* generate the function table */ #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) (SLB_LFUNC)slb_ ## gl ## name, #define LENGL_PROC(type, glx, name, export, upper, proto, args, first, ret) (SLB_LFUNC)slb_ ## gl ## name, #define PUTGL_PROC(type, glx, name, export, upper, proto, args, first, ret) NO_PROC #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) (SLB_LFUNC)slb_ ## OSMesa ## name, #define TINYGL_PROC(type, gl, name, export, upper, proto, args, first, ret) (SLB_LFUNC)slb_ ## name, #define NO_PROC (SLB_LFUNC)slb_nop, #include "glfuncs-bynum.h" } }; static char const slh_name[] = "osmesa.slb"; #define unused __attribute__((__unused__)) static long __CDECL slb_libinit(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private) { internal_glInit(private); return sizeof(*private); } /* generate the function names */ static char const *const slh_names[] = { "glInit", /* slb_libinit */ #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #gl #name, #define LENGL_PROC(type, glx, name, export, upper, proto, args, first, ret) "gl" #name, #define PUTGL_PROC(type, glx, name, export, upper, proto, args, first, ret) NO_PROC #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) #gl #name, #define TINYGL_PROC(type, gl, name, export, upper, proto, args, first, ret) #name, #define NO_PROC 0, #include "glfuncs-bynum.h" 0 }; /* generate the wrapper functions */ #define voidf /**/ #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) \ static type __CDECL slb_ ## gl ## name(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) \ { \ ret (*HostCall_p)(NFOSMESA_GL ## upper, private->cur_context, first_param); \ } #define GL_PROC64(type, gl, name, export, upper, proto, args, first, ret) \ static void __CDECL slb_ ## gl ## name(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param, GLuint64 *retval) \ { \ (*HostCall64_p)(NFOSMESA_GL ## upper, private->cur_context, first_param, retval); \ } #define GLU_PROC(type, gl, name, export, upper, proto, args, first, ret) \ static type __CDECL slb_ ## gl ## name(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) \ { \ ret (*HostCall_p)(NFOSMESA_GLU ## upper, private->cur_context, first_param); \ } #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) \ static type __CDECL slb_ ## gl ## name(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) \ { \ ret (*HostCall_p)(NFOSMESA_OSMESA ## upper, private->cur_context, first_param); \ } #define NO_OSMESAGETCURRENTCONTEXT #define NO_OSMESADESTROYCONTEXT #define NO_OSMESAMAKECURRENT #define NO_OSMESAGETPROCADDRESS #define NO_GLGETSTRING #define NO_GLGETSTRINGI #include "glfuncs.h" static void __CDECL slb_nop(void) { } /* some functions do need special work */ static const GLubyte *__CDECL slb_glGetString(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { GLenum *args = (GLenum *)first_param; return internal_glGetString(private, args[0]); } static const GLubyte *__CDECL slb_glGetStringi(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { GLenum *args = (GLenum *)first_param; return internal_glGetStringi(private, args[0], args[1]); } static OSMesaContext __CDECL slb_OSMesaGetCurrentContext(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param unused) { return internal_OSMesaGetCurrentContext(private); } static void __CDECL slb_OSMesaDestroyContext(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { OSMesaContext ctx = *((OSMesaContext *)first_param); return internal_OSMesaDestroyContext(private, ctx); } static GLboolean __CDECL slb_OSMesaMakeCurrent(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { GLboolean ret = (GLboolean)(*HostCall_p)(NFOSMESA_OSMESAMAKECURRENT, private->cur_context, first_param); if (ret) { OSMesaContext ctx = *((OSMesaContext *)first_param); private->cur_context = ctx; } return ret; } static OSMESAproc __CDECL slb_OSMesaGetProcAddress(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { const char *funcname = *((const char *const *)first_param); return internal_OSMesaGetProcAddress(private, funcname); } /* entry points of TinyGL functions */ static void *__CDECL slb_OSMesaCreateLDG(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { GLenum *args = (GLenum *)first_param; return internal_OSMesaCreateLDG(private, args[0], args[1], args[2], args[3]); } static void __CDECL slb_OSMesaDestroyLDG(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param unused) { internal_OSMesaDestroyLDG(private); } static GLsizei __CDECL slb_max_width(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param unused) { return internal_max_width(private); } static GLsizei __CDECL slb_max_height(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param unused) { return internal_max_height(private); } static void __CDECL slb_gluLookAtf(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { (*HostCall_p)(NFOSMESA_GLULOOKATF, private->cur_context, first_param); } static void __CDECL slb_glFrustumf(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { (*HostCall_p)(NFOSMESA_GLFRUSTUMF, private->cur_context, first_param); } static void __CDECL slb_glOrthof(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { (*HostCall_p)(NFOSMESA_GLORTHOF, private->cur_context, first_param); } static void __CDECL slb_exception_error(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { void CALLBACK (*exception)(GLenum param) = *((void CALLBACK (**)(GLenum))first_param); internal_tinyglexception_error(private, exception); } static void __CDECL slb_swapbuffer(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private, void *first_param) { void *buf = *((void **)first_param); internal_tinyglswapbuffer(private, buf); } static void __CDECL slb_information(BASEPAGE *__bp unused, long __fn unused, long __nwords unused, gl_private *private unused, void *first_param unused) { tinyglinformation(); } int err_old_nfapi(void) { /* an error for Mesa_GL */ return 1; } /* * these are not optional and cannot be set * to zero in the header, even if they * currently don't do anything */ static long __CDECL slb_init(void) { return 0; } static void __CDECL slb_exit(void) { } static long __CDECL slb_open(BASEPAGE *pd) { (void) pd; return 0; } static long __CDECL slb_close(BASEPAGE *pd) { (void) pd; return 0; } #include "versinfo.h" void APIENTRY tinyglinformation(void) { (void) Cconws("Mesa library NFOSMesa API Version " __STRINGIFY(ARANFOSMESA_NFAPI_VERSION) " " ASCII_ARCH_TARGET " " ASCII_COMPILER "\r\n"); } aranym-1.1.0/atari/nfosmesa/osmesa_loadslb.c0000664000175000017500000573131613454637621017267 0ustar joyjoy/* Bindings of osmesa.slb * Compile this module and link it with the application client */ #include #include #include #define NFOSMESA_NO_MANGLE #include #include #ifndef TRUE # define TRUE 1 # define FALSE 0 #endif #ifdef __PUREC__ #pragma warn -stv #endif struct _gl_osmesa gl; static SLB_HANDLE gl_slb; static SLB_EXEC gl_exec; static struct gl_public *gl_pub; /* * The "nwords" argument should actually only be a "short". * MagiC will expect it that way, with the actual arguments * following. * However, a "short" in the actual function definition * will be treated as promoted to int. * So we pass a long instead, with the upper half * set to 1 + nwords to account for the extra space. * This also has the benefit of keeping the stack longword aligned. */ #undef SLB_NWORDS #define SLB_NWORDS(_nwords) ((((long)(_nwords) + 1l) << 16) | (long)(_nwords)) #undef SLB_NARGS #define SLB_NARGS(_nargs) SLB_NWORDS(_nargs * 2) #undef glClearDepth #undef glFrustum #undef glOrtho #undef gluLookAt static const GLubyte * APIENTRY exec_glGetString(GLenum name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (const GLubyte *)(*exec)(gl_slb, 1 /* NFOSMESA_LENGLGETSTRING */, SLB_NARGS(2), gl_pub, &name); } static OSMesaContext APIENTRY exec_OSMesaCreateContext(GLenum format, OSMesaContext sharelist) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)sharelist; return (OSMesaContext)(*exec)(gl_slb, 3 /* NFOSMESA_OSMESACREATECONTEXT */, SLB_NARGS(2), gl_pub, &format); } static OSMesaContext APIENTRY exec_OSMesaCreateContextExt(GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)depthBits; (void)stencilBits; (void)accumBits; (void)sharelist; return (OSMesaContext)(*exec)(gl_slb, 4 /* NFOSMESA_OSMESACREATECONTEXTEXT */, SLB_NARGS(2), gl_pub, &format); } static void APIENTRY exec_OSMesaDestroyContext(OSMesaContext ctx) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 5 /* NFOSMESA_OSMESADESTROYCONTEXT */, SLB_NARGS(2), gl_pub, &ctx); } static GLboolean APIENTRY exec_OSMesaMakeCurrent(OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)type; (void)width; (void)height; return (GLboolean)(*exec)(gl_slb, 6 /* NFOSMESA_OSMESAMAKECURRENT */, SLB_NARGS(2), gl_pub, &ctx); } static OSMesaContext APIENTRY exec_OSMesaGetCurrentContext(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (OSMesaContext)(*exec)(gl_slb, 7 /* NFOSMESA_OSMESAGETCURRENTCONTEXT */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_OSMesaPixelStore(GLint pname, GLint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 8 /* NFOSMESA_OSMESAPIXELSTORE */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_OSMesaGetIntegerv(GLint pname, GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 9 /* NFOSMESA_OSMESAGETINTEGERV */, SLB_NARGS(2), gl_pub, &pname); } static GLboolean APIENTRY exec_OSMesaGetDepthBuffer(OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void * *buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)width; (void)height; (void)bytesPerValue; (void)buffer; return (GLboolean)(*exec)(gl_slb, 10 /* NFOSMESA_OSMESAGETDEPTHBUFFER */, SLB_NARGS(2), gl_pub, &c); } static GLboolean APIENTRY exec_OSMesaGetColorBuffer(OSMesaContext c, GLint *width, GLint *height, GLint *format, void * *buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)width; (void)height; (void)format; (void)buffer; return (GLboolean)(*exec)(gl_slb, 11 /* NFOSMESA_OSMESAGETCOLORBUFFER */, SLB_NARGS(2), gl_pub, &c); } static OSMESAproc APIENTRY exec_OSMesaGetProcAddress(const char *funcName) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (OSMESAproc)(*exec)(gl_slb, 12 /* NFOSMESA_OSMESAGETPROCADDRESS */, SLB_NARGS(2), gl_pub, &funcName); } static void APIENTRY exec_glClearIndex(GLfloat c) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 13 /* NFOSMESA_GLCLEARINDEX */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 14 /* NFOSMESA_GLCLEARCOLOR */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glClear(GLbitfield mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 15 /* NFOSMESA_GLCLEAR */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glIndexMask(GLuint mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 16 /* NFOSMESA_GLINDEXMASK */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glColorMask(GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 17 /* NFOSMESA_GLCOLORMASK */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glAlphaFunc(GLenum func, GLclampf ref) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ref; (*exec)(gl_slb, 18 /* NFOSMESA_GLALPHAFUNC */, SLB_NARGS(2), gl_pub, &func); } static void APIENTRY exec_glBlendFunc(GLenum sfactor, GLenum dfactor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)dfactor; (*exec)(gl_slb, 19 /* NFOSMESA_GLBLENDFUNC */, SLB_NARGS(2), gl_pub, &sfactor); } static void APIENTRY exec_glLogicOp(GLenum opcode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 20 /* NFOSMESA_GLLOGICOP */, SLB_NARGS(2), gl_pub, &opcode); } static void APIENTRY exec_glCullFace(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 21 /* NFOSMESA_GLCULLFACE */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glFrontFace(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 22 /* NFOSMESA_GLFRONTFACE */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glPointSize(GLfloat size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 23 /* NFOSMESA_GLPOINTSIZE */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glLineWidth(GLfloat width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 24 /* NFOSMESA_GLLINEWIDTH */, SLB_NARGS(2), gl_pub, &width); } static void APIENTRY exec_glLineStipple(GLint factor, GLushort32 pattern) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pattern; (*exec)(gl_slb, 25 /* NFOSMESA_GLLINESTIPPLE */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glPolygonMode(GLenum face, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 26 /* NFOSMESA_GLPOLYGONMODE */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glPolygonOffset(GLfloat factor, GLfloat units) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)units; (*exec)(gl_slb, 27 /* NFOSMESA_GLPOLYGONOFFSET */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glPolygonStipple(const GLubyte *mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 28 /* NFOSMESA_GLPOLYGONSTIPPLE */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glGetPolygonStipple(GLubyte *mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 29 /* NFOSMESA_GLGETPOLYGONSTIPPLE */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glEdgeFlag(GLboolean32 flag) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 30 /* NFOSMESA_GLEDGEFLAG */, SLB_NARGS(2), gl_pub, &flag); } static void APIENTRY exec_glEdgeFlagv(const GLboolean *flag) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 31 /* NFOSMESA_GLEDGEFLAGV */, SLB_NARGS(2), gl_pub, &flag); } static void APIENTRY exec_glScissor(GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)width; (void)height; (*exec)(gl_slb, 32 /* NFOSMESA_GLSCISSOR */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glClipPlane(GLenum plane, const GLdouble *equation) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)equation; (*exec)(gl_slb, 33 /* NFOSMESA_GLCLIPPLANE */, SLB_NARGS(2), gl_pub, &plane); } static void APIENTRY exec_glGetClipPlane(GLenum plane, GLdouble *equation) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)equation; (*exec)(gl_slb, 34 /* NFOSMESA_GLGETCLIPPLANE */, SLB_NARGS(2), gl_pub, &plane); } static void APIENTRY exec_glDrawBuffer(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 35 /* NFOSMESA_GLDRAWBUFFER */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glReadBuffer(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 36 /* NFOSMESA_GLREADBUFFER */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glEnable(GLenum cap) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 37 /* NFOSMESA_GLENABLE */, SLB_NARGS(2), gl_pub, &cap); } static void APIENTRY exec_glDisable(GLenum cap) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 38 /* NFOSMESA_GLDISABLE */, SLB_NARGS(2), gl_pub, &cap); } static GLboolean APIENTRY exec_glIsEnabled(GLenum cap) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 39 /* NFOSMESA_GLISENABLED */, SLB_NARGS(2), gl_pub, &cap); } static void APIENTRY exec_glEnableClientState(GLenum array) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 40 /* NFOSMESA_GLENABLECLIENTSTATE */, SLB_NARGS(2), gl_pub, &array); } static void APIENTRY exec_glDisableClientState(GLenum array) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 41 /* NFOSMESA_GLDISABLECLIENTSTATE */, SLB_NARGS(2), gl_pub, &array); } static void APIENTRY exec_glGetBooleanv(GLenum pname, GLboolean *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 42 /* NFOSMESA_GLGETBOOLEANV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetDoublev(GLenum pname, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 43 /* NFOSMESA_GLGETDOUBLEV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetFloatv(GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 44 /* NFOSMESA_GLGETFLOATV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetIntegerv(GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 45 /* NFOSMESA_GLGETINTEGERV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPushAttrib(GLbitfield mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 46 /* NFOSMESA_GLPUSHATTRIB */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glPopAttrib(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 47 /* NFOSMESA_GLPOPATTRIB */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glPushClientAttrib(GLbitfield mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 48 /* NFOSMESA_GLPUSHCLIENTATTRIB */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glPopClientAttrib(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 49 /* NFOSMESA_GLPOPCLIENTATTRIB */, SLB_NARGS(2), gl_pub, NULL); } static GLint APIENTRY exec_glRenderMode(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLint)(*exec)(gl_slb, 50 /* NFOSMESA_GLRENDERMODE */, SLB_NARGS(2), gl_pub, &mode); } static GLenum APIENTRY exec_glGetError(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLenum)(*exec)(gl_slb, 51 /* NFOSMESA_GLGETERROR */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glFinish(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 52 /* NFOSMESA_GLFINISH */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glFlush(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 53 /* NFOSMESA_GLFLUSH */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glHint(GLenum target, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 54 /* NFOSMESA_GLHINT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glClearDepth(GLclampd depth) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 55 /* NFOSMESA_GLCLEARDEPTH */, SLB_NARGS(2), gl_pub, &depth); } static void APIENTRY exec_glDepthFunc(GLenum func) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 56 /* NFOSMESA_GLDEPTHFUNC */, SLB_NARGS(2), gl_pub, &func); } static void APIENTRY exec_glDepthMask(GLboolean32 flag) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 57 /* NFOSMESA_GLDEPTHMASK */, SLB_NARGS(2), gl_pub, &flag); } static void APIENTRY exec_glDepthRange(GLclampd zNear, GLclampd zFar) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)zFar; (*exec)(gl_slb, 58 /* NFOSMESA_GLDEPTHRANGE */, SLB_NARGS(2), gl_pub, &zNear); } static void APIENTRY exec_glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 59 /* NFOSMESA_GLCLEARACCUM */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glAccum(GLenum op, GLfloat value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 60 /* NFOSMESA_GLACCUM */, SLB_NARGS(2), gl_pub, &op); } static void APIENTRY exec_glMatrixMode(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 61 /* NFOSMESA_GLMATRIXMODE */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)right; (void)bottom; (void)top; (void)zNear; (void)zFar; (*exec)(gl_slb, 62 /* NFOSMESA_GLORTHO */, SLB_NARGS(2), gl_pub, &left); } static void APIENTRY exec_glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)right; (void)bottom; (void)top; (void)zNear; (void)zFar; (*exec)(gl_slb, 63 /* NFOSMESA_GLFRUSTUM */, SLB_NARGS(2), gl_pub, &left); } static void APIENTRY exec_glViewport(GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)width; (void)height; (*exec)(gl_slb, 64 /* NFOSMESA_GLVIEWPORT */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glPushMatrix(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 65 /* NFOSMESA_GLPUSHMATRIX */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glPopMatrix(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 66 /* NFOSMESA_GLPOPMATRIX */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glLoadIdentity(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 67 /* NFOSMESA_GLLOADIDENTITY */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glLoadMatrixd(const GLdouble *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 68 /* NFOSMESA_GLLOADMATRIXD */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glLoadMatrixf(const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 69 /* NFOSMESA_GLLOADMATRIXF */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glMultMatrixd(const GLdouble *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 70 /* NFOSMESA_GLMULTMATRIXD */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glMultMatrixf(const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 71 /* NFOSMESA_GLMULTMATRIXF */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 72 /* NFOSMESA_GLROTATED */, SLB_NARGS(2), gl_pub, &angle); } static void APIENTRY exec_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 73 /* NFOSMESA_GLROTATEF */, SLB_NARGS(2), gl_pub, &angle); } static void APIENTRY exec_glScaled(GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 74 /* NFOSMESA_GLSCALED */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glScalef(GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 75 /* NFOSMESA_GLSCALEF */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glTranslated(GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 76 /* NFOSMESA_GLTRANSLATED */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glTranslatef(GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 77 /* NFOSMESA_GLTRANSLATEF */, SLB_NARGS(2), gl_pub, &x); } static GLboolean APIENTRY exec_glIsList(GLuint list) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 78 /* NFOSMESA_GLISLIST */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_glDeleteLists(GLuint list, GLsizei range) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)range; (*exec)(gl_slb, 79 /* NFOSMESA_GLDELETELISTS */, SLB_NARGS(2), gl_pub, &list); } static GLuint APIENTRY exec_glGenLists(GLsizei range) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLuint)(*exec)(gl_slb, 80 /* NFOSMESA_GLGENLISTS */, SLB_NARGS(2), gl_pub, &range); } static void APIENTRY exec_glNewList(GLuint list, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 81 /* NFOSMESA_GLNEWLIST */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_glEndList(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 82 /* NFOSMESA_GLENDLIST */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glCallList(GLuint list) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 83 /* NFOSMESA_GLCALLLIST */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_glCallLists(GLsizei n, GLenum type, const GLvoid *lists) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)lists; (*exec)(gl_slb, 84 /* NFOSMESA_GLCALLLISTS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glListBase(GLuint base) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 85 /* NFOSMESA_GLLISTBASE */, SLB_NARGS(2), gl_pub, &base); } static void APIENTRY exec_glBegin(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 86 /* NFOSMESA_GLBEGIN */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glEnd(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 87 /* NFOSMESA_GLEND */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glVertex2d(GLdouble x, GLdouble y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 88 /* NFOSMESA_GLVERTEX2D */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex2f(GLfloat x, GLfloat y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 89 /* NFOSMESA_GLVERTEX2F */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex2i(GLint x, GLint y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 90 /* NFOSMESA_GLVERTEX2I */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex2s(GLshort32 x, GLshort32 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 91 /* NFOSMESA_GLVERTEX2S */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex3d(GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 92 /* NFOSMESA_GLVERTEX3D */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex3f(GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 93 /* NFOSMESA_GLVERTEX3F */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex3i(GLint x, GLint y, GLint z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 94 /* NFOSMESA_GLVERTEX3I */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex3s(GLshort32 x, GLshort32 y, GLshort32 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 95 /* NFOSMESA_GLVERTEX3S */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 96 /* NFOSMESA_GLVERTEX4D */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 97 /* NFOSMESA_GLVERTEX4F */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex4i(GLint x, GLint y, GLint z, GLint w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 98 /* NFOSMESA_GLVERTEX4I */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex4s(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 99 /* NFOSMESA_GLVERTEX4S */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex2dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 100 /* NFOSMESA_GLVERTEX2DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertex2fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 101 /* NFOSMESA_GLVERTEX2FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertex2iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 102 /* NFOSMESA_GLVERTEX2IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertex2sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 103 /* NFOSMESA_GLVERTEX2SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertex3dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 104 /* NFOSMESA_GLVERTEX3DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertex3fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 105 /* NFOSMESA_GLVERTEX3FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertex3iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 106 /* NFOSMESA_GLVERTEX3IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertex3sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 107 /* NFOSMESA_GLVERTEX3SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertex4dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 108 /* NFOSMESA_GLVERTEX4DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertex4fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 109 /* NFOSMESA_GLVERTEX4FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertex4iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 110 /* NFOSMESA_GLVERTEX4IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertex4sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 111 /* NFOSMESA_GLVERTEX4SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glNormal3b(GLbyte32 nx, GLbyte32 ny, GLbyte32 nz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ny; (void)nz; (*exec)(gl_slb, 112 /* NFOSMESA_GLNORMAL3B */, SLB_NARGS(2), gl_pub, &nx); } static void APIENTRY exec_glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ny; (void)nz; (*exec)(gl_slb, 113 /* NFOSMESA_GLNORMAL3D */, SLB_NARGS(2), gl_pub, &nx); } static void APIENTRY exec_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ny; (void)nz; (*exec)(gl_slb, 114 /* NFOSMESA_GLNORMAL3F */, SLB_NARGS(2), gl_pub, &nx); } static void APIENTRY exec_glNormal3i(GLint nx, GLint ny, GLint nz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ny; (void)nz; (*exec)(gl_slb, 115 /* NFOSMESA_GLNORMAL3I */, SLB_NARGS(2), gl_pub, &nx); } static void APIENTRY exec_glNormal3s(GLshort32 nx, GLshort32 ny, GLshort32 nz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ny; (void)nz; (*exec)(gl_slb, 116 /* NFOSMESA_GLNORMAL3S */, SLB_NARGS(2), gl_pub, &nx); } static void APIENTRY exec_glNormal3bv(const GLbyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 117 /* NFOSMESA_GLNORMAL3BV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glNormal3dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 118 /* NFOSMESA_GLNORMAL3DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glNormal3fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 119 /* NFOSMESA_GLNORMAL3FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glNormal3iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 120 /* NFOSMESA_GLNORMAL3IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glNormal3sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 121 /* NFOSMESA_GLNORMAL3SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glIndexd(GLdouble c) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 122 /* NFOSMESA_GLINDEXD */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glIndexf(GLfloat c) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 123 /* NFOSMESA_GLINDEXF */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glIndexi(GLint c) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 124 /* NFOSMESA_GLINDEXI */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glIndexs(GLshort32 c) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 125 /* NFOSMESA_GLINDEXS */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glIndexub(GLubyte32 c) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 126 /* NFOSMESA_GLINDEXUB */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glIndexdv(const GLdouble *c) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 127 /* NFOSMESA_GLINDEXDV */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glIndexfv(const GLfloat *c) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 128 /* NFOSMESA_GLINDEXFV */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glIndexiv(const GLint *c) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 129 /* NFOSMESA_GLINDEXIV */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glIndexsv(const GLshort *c) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 130 /* NFOSMESA_GLINDEXSV */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glIndexubv(const GLubyte *c) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 131 /* NFOSMESA_GLINDEXUBV */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glColor3b(GLbyte32 red, GLbyte32 green, GLbyte32 blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 132 /* NFOSMESA_GLCOLOR3B */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor3d(GLdouble red, GLdouble green, GLdouble blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 133 /* NFOSMESA_GLCOLOR3D */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor3f(GLfloat red, GLfloat green, GLfloat blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 134 /* NFOSMESA_GLCOLOR3F */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor3i(GLint red, GLint green, GLint blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 135 /* NFOSMESA_GLCOLOR3I */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor3s(GLshort32 red, GLshort32 green, GLshort32 blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 136 /* NFOSMESA_GLCOLOR3S */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor3ub(GLubyte32 red, GLubyte32 green, GLubyte32 blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 137 /* NFOSMESA_GLCOLOR3UB */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor3ui(GLuint red, GLuint green, GLuint blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 138 /* NFOSMESA_GLCOLOR3UI */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor3us(GLushort32 red, GLushort32 green, GLushort32 blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 139 /* NFOSMESA_GLCOLOR3US */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor4b(GLbyte32 red, GLbyte32 green, GLbyte32 blue, GLbyte32 alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 140 /* NFOSMESA_GLCOLOR4B */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 141 /* NFOSMESA_GLCOLOR4D */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 142 /* NFOSMESA_GLCOLOR4F */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor4i(GLint red, GLint green, GLint blue, GLint alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 143 /* NFOSMESA_GLCOLOR4I */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor4s(GLshort32 red, GLshort32 green, GLshort32 blue, GLshort32 alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 144 /* NFOSMESA_GLCOLOR4S */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor4ub(GLubyte32 red, GLubyte32 green, GLubyte32 blue, GLubyte32 alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 145 /* NFOSMESA_GLCOLOR4UB */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 146 /* NFOSMESA_GLCOLOR4UI */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor4us(GLushort32 red, GLushort32 green, GLushort32 blue, GLushort32 alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 147 /* NFOSMESA_GLCOLOR4US */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor3bv(const GLbyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 148 /* NFOSMESA_GLCOLOR3BV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor3dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 149 /* NFOSMESA_GLCOLOR3DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor3fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 150 /* NFOSMESA_GLCOLOR3FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor3iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 151 /* NFOSMESA_GLCOLOR3IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor3sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 152 /* NFOSMESA_GLCOLOR3SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor3ubv(const GLubyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 153 /* NFOSMESA_GLCOLOR3UBV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor3uiv(const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 154 /* NFOSMESA_GLCOLOR3UIV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor3usv(const GLushort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 155 /* NFOSMESA_GLCOLOR3USV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor4bv(const GLbyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 156 /* NFOSMESA_GLCOLOR4BV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor4dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 157 /* NFOSMESA_GLCOLOR4DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor4fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 158 /* NFOSMESA_GLCOLOR4FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor4iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 159 /* NFOSMESA_GLCOLOR4IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor4sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 160 /* NFOSMESA_GLCOLOR4SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor4ubv(const GLubyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 161 /* NFOSMESA_GLCOLOR4UBV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor4uiv(const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 162 /* NFOSMESA_GLCOLOR4UIV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor4usv(const GLushort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 163 /* NFOSMESA_GLCOLOR4USV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord1d(GLdouble s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 164 /* NFOSMESA_GLTEXCOORD1D */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord1f(GLfloat s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 165 /* NFOSMESA_GLTEXCOORD1F */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord1i(GLint s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 166 /* NFOSMESA_GLTEXCOORD1I */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord1s(GLshort32 s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 167 /* NFOSMESA_GLTEXCOORD1S */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord2d(GLdouble s, GLdouble t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (*exec)(gl_slb, 168 /* NFOSMESA_GLTEXCOORD2D */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord2f(GLfloat s, GLfloat t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (*exec)(gl_slb, 169 /* NFOSMESA_GLTEXCOORD2F */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord2i(GLint s, GLint t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (*exec)(gl_slb, 170 /* NFOSMESA_GLTEXCOORD2I */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord2s(GLshort32 s, GLshort32 t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (*exec)(gl_slb, 171 /* NFOSMESA_GLTEXCOORD2S */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (*exec)(gl_slb, 172 /* NFOSMESA_GLTEXCOORD3D */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (*exec)(gl_slb, 173 /* NFOSMESA_GLTEXCOORD3F */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord3i(GLint s, GLint t, GLint r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (*exec)(gl_slb, 174 /* NFOSMESA_GLTEXCOORD3I */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord3s(GLshort32 s, GLshort32 t, GLshort32 r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (*exec)(gl_slb, 175 /* NFOSMESA_GLTEXCOORD3S */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (void)q; (*exec)(gl_slb, 176 /* NFOSMESA_GLTEXCOORD4D */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (void)q; (*exec)(gl_slb, 177 /* NFOSMESA_GLTEXCOORD4F */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord4i(GLint s, GLint t, GLint r, GLint q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (void)q; (*exec)(gl_slb, 178 /* NFOSMESA_GLTEXCOORD4I */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord4s(GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (void)q; (*exec)(gl_slb, 179 /* NFOSMESA_GLTEXCOORD4S */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord1dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 180 /* NFOSMESA_GLTEXCOORD1DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord1fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 181 /* NFOSMESA_GLTEXCOORD1FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord1iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 182 /* NFOSMESA_GLTEXCOORD1IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord1sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 183 /* NFOSMESA_GLTEXCOORD1SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord2dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 184 /* NFOSMESA_GLTEXCOORD2DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord2fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 185 /* NFOSMESA_GLTEXCOORD2FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord2iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 186 /* NFOSMESA_GLTEXCOORD2IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord2sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 187 /* NFOSMESA_GLTEXCOORD2SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord3dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 188 /* NFOSMESA_GLTEXCOORD3DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord3fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 189 /* NFOSMESA_GLTEXCOORD3FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord3iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 190 /* NFOSMESA_GLTEXCOORD3IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord3sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 191 /* NFOSMESA_GLTEXCOORD3SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord4dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 192 /* NFOSMESA_GLTEXCOORD4DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord4fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 193 /* NFOSMESA_GLTEXCOORD4FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord4iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 194 /* NFOSMESA_GLTEXCOORD4IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord4sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 195 /* NFOSMESA_GLTEXCOORD4SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glRasterPos2d(GLdouble x, GLdouble y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 196 /* NFOSMESA_GLRASTERPOS2D */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos2f(GLfloat x, GLfloat y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 197 /* NFOSMESA_GLRASTERPOS2F */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos2i(GLint x, GLint y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 198 /* NFOSMESA_GLRASTERPOS2I */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos2s(GLshort32 x, GLshort32 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 199 /* NFOSMESA_GLRASTERPOS2S */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 200 /* NFOSMESA_GLRASTERPOS3D */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 201 /* NFOSMESA_GLRASTERPOS3F */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos3i(GLint x, GLint y, GLint z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 202 /* NFOSMESA_GLRASTERPOS3I */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos3s(GLshort32 x, GLshort32 y, GLshort32 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 203 /* NFOSMESA_GLRASTERPOS3S */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 204 /* NFOSMESA_GLRASTERPOS4D */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 205 /* NFOSMESA_GLRASTERPOS4F */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos4i(GLint x, GLint y, GLint z, GLint w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 206 /* NFOSMESA_GLRASTERPOS4I */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos4s(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 207 /* NFOSMESA_GLRASTERPOS4S */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos2dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 208 /* NFOSMESA_GLRASTERPOS2DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glRasterPos2fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 209 /* NFOSMESA_GLRASTERPOS2FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glRasterPos2iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 210 /* NFOSMESA_GLRASTERPOS2IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glRasterPos2sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 211 /* NFOSMESA_GLRASTERPOS2SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glRasterPos3dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 212 /* NFOSMESA_GLRASTERPOS3DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glRasterPos3fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 213 /* NFOSMESA_GLRASTERPOS3FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glRasterPos3iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 214 /* NFOSMESA_GLRASTERPOS3IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glRasterPos3sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 215 /* NFOSMESA_GLRASTERPOS3SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glRasterPos4dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 216 /* NFOSMESA_GLRASTERPOS4DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glRasterPos4fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 217 /* NFOSMESA_GLRASTERPOS4FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glRasterPos4iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 218 /* NFOSMESA_GLRASTERPOS4IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glRasterPos4sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 219 /* NFOSMESA_GLRASTERPOS4SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y1; (void)x2; (void)y2; (*exec)(gl_slb, 220 /* NFOSMESA_GLRECTD */, SLB_NARGS(2), gl_pub, &x1); } static void APIENTRY exec_glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y1; (void)x2; (void)y2; (*exec)(gl_slb, 221 /* NFOSMESA_GLRECTF */, SLB_NARGS(2), gl_pub, &x1); } static void APIENTRY exec_glRecti(GLint x1, GLint y1, GLint x2, GLint y2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y1; (void)x2; (void)y2; (*exec)(gl_slb, 222 /* NFOSMESA_GLRECTI */, SLB_NARGS(2), gl_pub, &x1); } static void APIENTRY exec_glRects(GLshort32 x1, GLshort32 y1, GLshort32 x2, GLshort32 y2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y1; (void)x2; (void)y2; (*exec)(gl_slb, 223 /* NFOSMESA_GLRECTS */, SLB_NARGS(2), gl_pub, &x1); } static void APIENTRY exec_glRectdv(const GLdouble *v1, const GLdouble *v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v2; (*exec)(gl_slb, 224 /* NFOSMESA_GLRECTDV */, SLB_NARGS(2), gl_pub, &v1); } static void APIENTRY exec_glRectfv(const GLfloat *v1, const GLfloat *v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v2; (*exec)(gl_slb, 225 /* NFOSMESA_GLRECTFV */, SLB_NARGS(2), gl_pub, &v1); } static void APIENTRY exec_glRectiv(const GLint *v1, const GLint *v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v2; (*exec)(gl_slb, 226 /* NFOSMESA_GLRECTIV */, SLB_NARGS(2), gl_pub, &v1); } static void APIENTRY exec_glRectsv(const GLshort *v1, const GLshort *v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v2; (*exec)(gl_slb, 227 /* NFOSMESA_GLRECTSV */, SLB_NARGS(2), gl_pub, &v1); } static void APIENTRY exec_glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 228 /* NFOSMESA_GLVERTEXPOINTER */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)pointer; (*exec)(gl_slb, 229 /* NFOSMESA_GLNORMALPOINTER */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 230 /* NFOSMESA_GLCOLORPOINTER */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)pointer; (*exec)(gl_slb, 231 /* NFOSMESA_GLINDEXPOINTER */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 232 /* NFOSMESA_GLTEXCOORDPOINTER */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pointer; (*exec)(gl_slb, 233 /* NFOSMESA_GLEDGEFLAGPOINTER */, SLB_NARGS(2), gl_pub, &stride); } static void APIENTRY exec_glGetPointerv(GLenum pname, GLvoid* *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 234 /* NFOSMESA_GLGETPOINTERV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glArrayElement(GLint i) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 235 /* NFOSMESA_GLARRAYELEMENT */, SLB_NARGS(2), gl_pub, &i); } static void APIENTRY exec_glDrawArrays(GLenum mode, GLint first, GLsizei count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)first; (void)count; (*exec)(gl_slb, 236 /* NFOSMESA_GLDRAWARRAYS */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)type; (void)indices; (*exec)(gl_slb, 237 /* NFOSMESA_GLDRAWELEMENTS */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)pointer; (*exec)(gl_slb, 238 /* NFOSMESA_GLINTERLEAVEDARRAYS */, SLB_NARGS(2), gl_pub, &format); } static void APIENTRY exec_glShadeModel(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 239 /* NFOSMESA_GLSHADEMODEL */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glLightf(GLenum light, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 240 /* NFOSMESA_GLLIGHTF */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glLighti(GLenum light, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 241 /* NFOSMESA_GLLIGHTI */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glLightfv(GLenum light, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 242 /* NFOSMESA_GLLIGHTFV */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glLightiv(GLenum light, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 243 /* NFOSMESA_GLLIGHTIV */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glGetLightfv(GLenum light, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 244 /* NFOSMESA_GLGETLIGHTFV */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glGetLightiv(GLenum light, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 245 /* NFOSMESA_GLGETLIGHTIV */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glLightModelf(GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 246 /* NFOSMESA_GLLIGHTMODELF */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glLightModeli(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 247 /* NFOSMESA_GLLIGHTMODELI */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glLightModelfv(GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 248 /* NFOSMESA_GLLIGHTMODELFV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glLightModeliv(GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 249 /* NFOSMESA_GLLIGHTMODELIV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glMaterialf(GLenum face, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 250 /* NFOSMESA_GLMATERIALF */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glMateriali(GLenum face, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 251 /* NFOSMESA_GLMATERIALI */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 252 /* NFOSMESA_GLMATERIALFV */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glMaterialiv(GLenum face, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 253 /* NFOSMESA_GLMATERIALIV */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 254 /* NFOSMESA_GLGETMATERIALFV */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glGetMaterialiv(GLenum face, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 255 /* NFOSMESA_GLGETMATERIALIV */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glColorMaterial(GLenum face, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 256 /* NFOSMESA_GLCOLORMATERIAL */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glPixelZoom(GLfloat xfactor, GLfloat yfactor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)yfactor; (*exec)(gl_slb, 257 /* NFOSMESA_GLPIXELZOOM */, SLB_NARGS(2), gl_pub, &xfactor); } static void APIENTRY exec_glPixelStoref(GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 258 /* NFOSMESA_GLPIXELSTOREF */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPixelStorei(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 259 /* NFOSMESA_GLPIXELSTOREI */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPixelTransferf(GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 260 /* NFOSMESA_GLPIXELTRANSFERF */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPixelTransferi(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 261 /* NFOSMESA_GLPIXELTRANSFERI */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mapsize; (void)values; (*exec)(gl_slb, 262 /* NFOSMESA_GLPIXELMAPFV */, SLB_NARGS(2), gl_pub, &map); } static void APIENTRY exec_glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mapsize; (void)values; (*exec)(gl_slb, 263 /* NFOSMESA_GLPIXELMAPUIV */, SLB_NARGS(2), gl_pub, &map); } static void APIENTRY exec_glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mapsize; (void)values; (*exec)(gl_slb, 264 /* NFOSMESA_GLPIXELMAPUSV */, SLB_NARGS(2), gl_pub, &map); } static void APIENTRY exec_glGetPixelMapfv(GLenum map, GLfloat *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)values; (*exec)(gl_slb, 265 /* NFOSMESA_GLGETPIXELMAPFV */, SLB_NARGS(2), gl_pub, &map); } static void APIENTRY exec_glGetPixelMapuiv(GLenum map, GLuint *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)values; (*exec)(gl_slb, 266 /* NFOSMESA_GLGETPIXELMAPUIV */, SLB_NARGS(2), gl_pub, &map); } static void APIENTRY exec_glGetPixelMapusv(GLenum map, GLushort *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)values; (*exec)(gl_slb, 267 /* NFOSMESA_GLGETPIXELMAPUSV */, SLB_NARGS(2), gl_pub, &map); } static void APIENTRY exec_glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)height; (void)xorig; (void)yorig; (void)xmove; (void)ymove; (void)bitmap; (*exec)(gl_slb, 268 /* NFOSMESA_GLBITMAP */, SLB_NARGS(2), gl_pub, &width); } static void APIENTRY exec_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)width; (void)height; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 269 /* NFOSMESA_GLREADPIXELS */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)height; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 270 /* NFOSMESA_GLDRAWPIXELS */, SLB_NARGS(2), gl_pub, &width); } static void APIENTRY exec_glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)width; (void)height; (void)type; (*exec)(gl_slb, 271 /* NFOSMESA_GLCOPYPIXELS */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glStencilFunc(GLenum func, GLint ref, GLuint mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ref; (void)mask; (*exec)(gl_slb, 272 /* NFOSMESA_GLSTENCILFUNC */, SLB_NARGS(2), gl_pub, &func); } static void APIENTRY exec_glStencilMask(GLuint mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 273 /* NFOSMESA_GLSTENCILMASK */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)zfail; (void)zpass; (*exec)(gl_slb, 274 /* NFOSMESA_GLSTENCILOP */, SLB_NARGS(2), gl_pub, &fail); } static void APIENTRY exec_glClearStencil(GLint s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 275 /* NFOSMESA_GLCLEARSTENCIL */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexGend(GLenum coord, GLenum pname, GLdouble param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 276 /* NFOSMESA_GLTEXGEND */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glTexGenf(GLenum coord, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 277 /* NFOSMESA_GLTEXGENF */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glTexGeni(GLenum coord, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 278 /* NFOSMESA_GLTEXGENI */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 279 /* NFOSMESA_GLTEXGENDV */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 280 /* NFOSMESA_GLTEXGENFV */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glTexGeniv(GLenum coord, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 281 /* NFOSMESA_GLTEXGENIV */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 282 /* NFOSMESA_GLGETTEXGENDV */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 283 /* NFOSMESA_GLGETTEXGENFV */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 284 /* NFOSMESA_GLGETTEXGENIV */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glTexEnvf(GLenum target, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 285 /* NFOSMESA_GLTEXENVF */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexEnvi(GLenum target, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 286 /* NFOSMESA_GLTEXENVI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 287 /* NFOSMESA_GLTEXENVFV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexEnviv(GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 288 /* NFOSMESA_GLTEXENVIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 289 /* NFOSMESA_GLGETTEXENVFV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexEnviv(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 290 /* NFOSMESA_GLGETTEXENVIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexParameterf(GLenum target, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 291 /* NFOSMESA_GLTEXPARAMETERF */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexParameteri(GLenum target, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 292 /* NFOSMESA_GLTEXPARAMETERI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 293 /* NFOSMESA_GLTEXPARAMETERFV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexParameteriv(GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 294 /* NFOSMESA_GLTEXPARAMETERIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 295 /* NFOSMESA_GLGETTEXPARAMETERFV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 296 /* NFOSMESA_GLGETTEXPARAMETERIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)pname; (void)params; (*exec)(gl_slb, 297 /* NFOSMESA_GLGETTEXLEVELPARAMETERFV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)pname; (void)params; (*exec)(gl_slb, 298 /* NFOSMESA_GLGETTEXLEVELPARAMETERIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)width; (void)border; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 299 /* NFOSMESA_GLTEXIMAGE1D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)width; (void)height; (void)border; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 300 /* NFOSMESA_GLTEXIMAGE2D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 301 /* NFOSMESA_GLGETTEXIMAGE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGenTextures(GLsizei n, GLuint *textures) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)textures; (*exec)(gl_slb, 302 /* NFOSMESA_GLGENTEXTURES */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteTextures(GLsizei n, const GLuint *textures) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)textures; (*exec)(gl_slb, 303 /* NFOSMESA_GLDELETETEXTURES */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glBindTexture(GLenum target, GLuint texture) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)texture; (*exec)(gl_slb, 304 /* NFOSMESA_GLBINDTEXTURE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)textures; (void)priorities; (*exec)(gl_slb, 305 /* NFOSMESA_GLPRIORITIZETEXTURES */, SLB_NARGS(2), gl_pub, &n); } static GLboolean APIENTRY exec_glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)textures; (void)residences; return (GLboolean)(*exec)(gl_slb, 306 /* NFOSMESA_GLARETEXTURESRESIDENT */, SLB_NARGS(2), gl_pub, &n); } static GLboolean APIENTRY exec_glIsTexture(GLuint texture) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 307 /* NFOSMESA_GLISTEXTURE */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)width; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 308 /* NFOSMESA_GLTEXSUBIMAGE1D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)width; (void)height; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 309 /* NFOSMESA_GLTEXSUBIMAGE2D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)x; (void)y; (void)width; (void)border; (*exec)(gl_slb, 310 /* NFOSMESA_GLCOPYTEXIMAGE1D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)x; (void)y; (void)width; (void)height; (void)border; (*exec)(gl_slb, 311 /* NFOSMESA_GLCOPYTEXIMAGE2D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)x; (void)y; (void)width; (*exec)(gl_slb, 312 /* NFOSMESA_GLCOPYTEXSUBIMAGE1D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)x; (void)y; (void)width; (void)height; (*exec)(gl_slb, 313 /* NFOSMESA_GLCOPYTEXSUBIMAGE2D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)u1; (void)u2; (void)stride; (void)order; (void)points; (*exec)(gl_slb, 314 /* NFOSMESA_GLMAP1D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)u1; (void)u2; (void)stride; (void)order; (void)points; (*exec)(gl_slb, 315 /* NFOSMESA_GLMAP1F */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)u1; (void)u2; (void)ustride; (void)uorder; (void)v1; (void)v2; (void)vstride; (void)vorder; (void)points; (*exec)(gl_slb, 316 /* NFOSMESA_GLMAP2D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)u1; (void)u2; (void)ustride; (void)uorder; (void)v1; (void)v2; (void)vstride; (void)vorder; (void)points; (*exec)(gl_slb, 317 /* NFOSMESA_GLMAP2F */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMapdv(GLenum target, GLenum query, GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)query; (void)v; (*exec)(gl_slb, 318 /* NFOSMESA_GLGETMAPDV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMapfv(GLenum target, GLenum query, GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)query; (void)v; (*exec)(gl_slb, 319 /* NFOSMESA_GLGETMAPFV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMapiv(GLenum target, GLenum query, GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)query; (void)v; (*exec)(gl_slb, 320 /* NFOSMESA_GLGETMAPIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glEvalCoord1d(GLdouble u) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 321 /* NFOSMESA_GLEVALCOORD1D */, SLB_NARGS(2), gl_pub, &u); } static void APIENTRY exec_glEvalCoord1f(GLfloat u) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 322 /* NFOSMESA_GLEVALCOORD1F */, SLB_NARGS(2), gl_pub, &u); } static void APIENTRY exec_glEvalCoord1dv(const GLdouble *u) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 323 /* NFOSMESA_GLEVALCOORD1DV */, SLB_NARGS(2), gl_pub, &u); } static void APIENTRY exec_glEvalCoord1fv(const GLfloat *u) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 324 /* NFOSMESA_GLEVALCOORD1FV */, SLB_NARGS(2), gl_pub, &u); } static void APIENTRY exec_glEvalCoord2d(GLdouble u, GLdouble v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 325 /* NFOSMESA_GLEVALCOORD2D */, SLB_NARGS(2), gl_pub, &u); } static void APIENTRY exec_glEvalCoord2f(GLfloat u, GLfloat v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 326 /* NFOSMESA_GLEVALCOORD2F */, SLB_NARGS(2), gl_pub, &u); } static void APIENTRY exec_glEvalCoord2dv(const GLdouble *u) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 327 /* NFOSMESA_GLEVALCOORD2DV */, SLB_NARGS(2), gl_pub, &u); } static void APIENTRY exec_glEvalCoord2fv(const GLfloat *u) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 328 /* NFOSMESA_GLEVALCOORD2FV */, SLB_NARGS(2), gl_pub, &u); } static void APIENTRY exec_glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)u1; (void)u2; (*exec)(gl_slb, 329 /* NFOSMESA_GLMAPGRID1D */, SLB_NARGS(2), gl_pub, &un); } static void APIENTRY exec_glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)u1; (void)u2; (*exec)(gl_slb, 330 /* NFOSMESA_GLMAPGRID1F */, SLB_NARGS(2), gl_pub, &un); } static void APIENTRY exec_glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)u1; (void)u2; (void)vn; (void)v1; (void)v2; (*exec)(gl_slb, 331 /* NFOSMESA_GLMAPGRID2D */, SLB_NARGS(2), gl_pub, &un); } static void APIENTRY exec_glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)u1; (void)u2; (void)vn; (void)v1; (void)v2; (*exec)(gl_slb, 332 /* NFOSMESA_GLMAPGRID2F */, SLB_NARGS(2), gl_pub, &un); } static void APIENTRY exec_glEvalPoint1(GLint i) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 333 /* NFOSMESA_GLEVALPOINT1 */, SLB_NARGS(2), gl_pub, &i); } static void APIENTRY exec_glEvalPoint2(GLint i, GLint j) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)j; (*exec)(gl_slb, 334 /* NFOSMESA_GLEVALPOINT2 */, SLB_NARGS(2), gl_pub, &i); } static void APIENTRY exec_glEvalMesh1(GLenum mode, GLint i1, GLint i2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)i1; (void)i2; (*exec)(gl_slb, 335 /* NFOSMESA_GLEVALMESH1 */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)i1; (void)i2; (void)j1; (void)j2; (*exec)(gl_slb, 336 /* NFOSMESA_GLEVALMESH2 */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glFogf(GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 337 /* NFOSMESA_GLFOGF */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glFogi(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 338 /* NFOSMESA_GLFOGI */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glFogfv(GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 339 /* NFOSMESA_GLFOGFV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glFogiv(GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 340 /* NFOSMESA_GLFOGIV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)buffer; (*exec)(gl_slb, 341 /* NFOSMESA_GLFEEDBACKBUFFER */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glPassThrough(GLfloat token) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 342 /* NFOSMESA_GLPASSTHROUGH */, SLB_NARGS(2), gl_pub, &token); } static void APIENTRY exec_glSelectBuffer(GLsizei size, GLuint *buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (*exec)(gl_slb, 343 /* NFOSMESA_GLSELECTBUFFER */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glInitNames(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 344 /* NFOSMESA_GLINITNAMES */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glLoadName(GLuint name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 345 /* NFOSMESA_GLLOADNAME */, SLB_NARGS(2), gl_pub, &name); } static void APIENTRY exec_glPushName(GLuint name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 346 /* NFOSMESA_GLPUSHNAME */, SLB_NARGS(2), gl_pub, &name); } static void APIENTRY exec_glPopName(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 347 /* NFOSMESA_GLPOPNAME */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glEnableTraceMESA(GLbitfield mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 348 /* NFOSMESA_GLENABLETRACEMESA */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glDisableTraceMESA(GLbitfield mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 349 /* NFOSMESA_GLDISABLETRACEMESA */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glNewTraceMESA(GLbitfield mask, const GLubyte *traceName) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)traceName; (*exec)(gl_slb, 350 /* NFOSMESA_GLNEWTRACEMESA */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glEndTraceMESA(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 351 /* NFOSMESA_GLENDTRACEMESA */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glTraceAssertAttribMESA(GLbitfield attribMask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 352 /* NFOSMESA_GLTRACEASSERTATTRIBMESA */, SLB_NARGS(2), gl_pub, &attribMask); } static void APIENTRY exec_glTraceCommentMESA(const GLubyte *comment) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 353 /* NFOSMESA_GLTRACECOMMENTMESA */, SLB_NARGS(2), gl_pub, &comment); } static void APIENTRY exec_glTraceTextureMESA(GLuint name, const GLubyte *comment) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)comment; (*exec)(gl_slb, 354 /* NFOSMESA_GLTRACETEXTUREMESA */, SLB_NARGS(2), gl_pub, &name); } static void APIENTRY exec_glTraceListMESA(GLuint name, const GLubyte *comment) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)comment; (*exec)(gl_slb, 355 /* NFOSMESA_GLTRACELISTMESA */, SLB_NARGS(2), gl_pub, &name); } static void APIENTRY exec_glTracePointerMESA(GLvoid *pointer, const GLubyte *comment) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)comment; (*exec)(gl_slb, 356 /* NFOSMESA_GLTRACEPOINTERMESA */, SLB_NARGS(2), gl_pub, &pointer); } static void APIENTRY exec_glTracePointerRangeMESA(const GLvoid *first, const GLvoid *last, const GLubyte *comment) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)last; (void)comment; (*exec)(gl_slb, 357 /* NFOSMESA_GLTRACEPOINTERRANGEMESA */, SLB_NARGS(2), gl_pub, &first); } static void APIENTRY exec_glBlendEquationSeparateATI(GLenum equationRGB, GLenum equationAlpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)equationAlpha; (*exec)(gl_slb, 358 /* NFOSMESA_GLBLENDEQUATIONSEPARATEATI */, SLB_NARGS(2), gl_pub, &equationRGB); } static void APIENTRY exec_glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 359 /* NFOSMESA_GLBLENDCOLOR */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glBlendEquation(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 360 /* NFOSMESA_GLBLENDEQUATION */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)end; (void)count; (void)type; (void)indices; (*exec)(gl_slb, 361 /* NFOSMESA_GLDRAWRANGEELEMENTS */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)width; (void)format; (void)type; (void)table; (*exec)(gl_slb, 362 /* NFOSMESA_GLCOLORTABLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 363 /* NFOSMESA_GLCOLORTABLEPARAMETERFV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 364 /* NFOSMESA_GLCOLORTABLEPARAMETERIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)x; (void)y; (void)width; (*exec)(gl_slb, 365 /* NFOSMESA_GLCOPYCOLORTABLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetColorTable(GLenum target, GLenum format, GLenum type, void *table) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)type; (void)table; (*exec)(gl_slb, 366 /* NFOSMESA_GLGETCOLORTABLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 367 /* NFOSMESA_GLGETCOLORTABLEPARAMETERFV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 368 /* NFOSMESA_GLGETCOLORTABLEPARAMETERIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)count; (void)format; (void)type; (void)data; (*exec)(gl_slb, 369 /* NFOSMESA_GLCOLORSUBTABLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)x; (void)y; (void)width; (*exec)(gl_slb, 370 /* NFOSMESA_GLCOPYCOLORSUBTABLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)width; (void)format; (void)type; (void)image; (*exec)(gl_slb, 371 /* NFOSMESA_GLCONVOLUTIONFILTER1D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)width; (void)height; (void)format; (void)type; (void)image; (*exec)(gl_slb, 372 /* NFOSMESA_GLCONVOLUTIONFILTER2D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 373 /* NFOSMESA_GLCONVOLUTIONPARAMETERF */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 374 /* NFOSMESA_GLCONVOLUTIONPARAMETERFV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glConvolutionParameteri(GLenum target, GLenum pname, GLint params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 375 /* NFOSMESA_GLCONVOLUTIONPARAMETERI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 376 /* NFOSMESA_GLCONVOLUTIONPARAMETERIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)x; (void)y; (void)width; (*exec)(gl_slb, 377 /* NFOSMESA_GLCOPYCONVOLUTIONFILTER1D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)x; (void)y; (void)width; (void)height; (*exec)(gl_slb, 378 /* NFOSMESA_GLCOPYCONVOLUTIONFILTER2D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, void *image) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)type; (void)image; (*exec)(gl_slb, 379 /* NFOSMESA_GLGETCONVOLUTIONFILTER */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 380 /* NFOSMESA_GLGETCONVOLUTIONPARAMETERFV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 381 /* NFOSMESA_GLGETCONVOLUTIONPARAMETERIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetSeparableFilter(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)type; (void)row; (void)column; (void)span; (*exec)(gl_slb, 382 /* NFOSMESA_GLGETSEPARABLEFILTER */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)width; (void)height; (void)format; (void)type; (void)row; (void)column; (*exec)(gl_slb, 383 /* NFOSMESA_GLSEPARABLEFILTER2D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetHistogram(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)reset; (void)format; (void)type; (void)values; (*exec)(gl_slb, 384 /* NFOSMESA_GLGETHISTOGRAM */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 385 /* NFOSMESA_GLGETHISTOGRAMPARAMETERFV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 386 /* NFOSMESA_GLGETHISTOGRAMPARAMETERIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMinmax(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)reset; (void)format; (void)type; (void)values; (*exec)(gl_slb, 387 /* NFOSMESA_GLGETMINMAX */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 388 /* NFOSMESA_GLGETMINMAXPARAMETERFV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 389 /* NFOSMESA_GLGETMINMAXPARAMETERIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)width; (void)internalformat; (void)sink; (*exec)(gl_slb, 390 /* NFOSMESA_GLHISTOGRAM */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMinmax(GLenum target, GLenum internalformat, GLboolean32 sink) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)sink; (*exec)(gl_slb, 391 /* NFOSMESA_GLMINMAX */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glResetHistogram(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 392 /* NFOSMESA_GLRESETHISTOGRAM */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glResetMinmax(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 393 /* NFOSMESA_GLRESETMINMAX */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)width; (void)height; (void)depth; (void)border; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 394 /* NFOSMESA_GLTEXIMAGE3D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 395 /* NFOSMESA_GLTEXSUBIMAGE3D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)x; (void)y; (void)width; (void)height; (*exec)(gl_slb, 396 /* NFOSMESA_GLCOPYTEXSUBIMAGE3D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glActiveTexture(GLenum texture) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 397 /* NFOSMESA_GLACTIVETEXTURE */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glClientActiveTexture(GLenum texture) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 398 /* NFOSMESA_GLCLIENTACTIVETEXTURE */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord1d(GLenum target, GLdouble s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (*exec)(gl_slb, 399 /* NFOSMESA_GLMULTITEXCOORD1D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1dv(GLenum target, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 400 /* NFOSMESA_GLMULTITEXCOORD1DV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1f(GLenum target, GLfloat s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (*exec)(gl_slb, 401 /* NFOSMESA_GLMULTITEXCOORD1F */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1fv(GLenum target, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 402 /* NFOSMESA_GLMULTITEXCOORD1FV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1i(GLenum target, GLint s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (*exec)(gl_slb, 403 /* NFOSMESA_GLMULTITEXCOORD1I */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1iv(GLenum target, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 404 /* NFOSMESA_GLMULTITEXCOORD1IV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1s(GLenum target, GLshort32 s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (*exec)(gl_slb, 405 /* NFOSMESA_GLMULTITEXCOORD1S */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1sv(GLenum target, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 406 /* NFOSMESA_GLMULTITEXCOORD1SV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (*exec)(gl_slb, 407 /* NFOSMESA_GLMULTITEXCOORD2D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2dv(GLenum target, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 408 /* NFOSMESA_GLMULTITEXCOORD2DV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (*exec)(gl_slb, 409 /* NFOSMESA_GLMULTITEXCOORD2F */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2fv(GLenum target, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 410 /* NFOSMESA_GLMULTITEXCOORD2FV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2i(GLenum target, GLint s, GLint t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (*exec)(gl_slb, 411 /* NFOSMESA_GLMULTITEXCOORD2I */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2iv(GLenum target, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 412 /* NFOSMESA_GLMULTITEXCOORD2IV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2s(GLenum target, GLshort32 s, GLshort32 t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (*exec)(gl_slb, 413 /* NFOSMESA_GLMULTITEXCOORD2S */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2sv(GLenum target, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 414 /* NFOSMESA_GLMULTITEXCOORD2SV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (*exec)(gl_slb, 415 /* NFOSMESA_GLMULTITEXCOORD3D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3dv(GLenum target, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 416 /* NFOSMESA_GLMULTITEXCOORD3DV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (*exec)(gl_slb, 417 /* NFOSMESA_GLMULTITEXCOORD3F */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3fv(GLenum target, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 418 /* NFOSMESA_GLMULTITEXCOORD3FV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (*exec)(gl_slb, 419 /* NFOSMESA_GLMULTITEXCOORD3I */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3iv(GLenum target, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 420 /* NFOSMESA_GLMULTITEXCOORD3IV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3s(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (*exec)(gl_slb, 421 /* NFOSMESA_GLMULTITEXCOORD3S */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3sv(GLenum target, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 422 /* NFOSMESA_GLMULTITEXCOORD3SV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (void)q; (*exec)(gl_slb, 423 /* NFOSMESA_GLMULTITEXCOORD4D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4dv(GLenum target, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 424 /* NFOSMESA_GLMULTITEXCOORD4DV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (void)q; (*exec)(gl_slb, 425 /* NFOSMESA_GLMULTITEXCOORD4F */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4fv(GLenum target, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 426 /* NFOSMESA_GLMULTITEXCOORD4FV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (void)q; (*exec)(gl_slb, 427 /* NFOSMESA_GLMULTITEXCOORD4I */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4iv(GLenum target, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 428 /* NFOSMESA_GLMULTITEXCOORD4IV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4s(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (void)q; (*exec)(gl_slb, 429 /* NFOSMESA_GLMULTITEXCOORD4S */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4sv(GLenum target, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 430 /* NFOSMESA_GLMULTITEXCOORD4SV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glLoadTransposeMatrixf(const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 431 /* NFOSMESA_GLLOADTRANSPOSEMATRIXF */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glLoadTransposeMatrixd(const GLdouble *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 432 /* NFOSMESA_GLLOADTRANSPOSEMATRIXD */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glMultTransposeMatrixf(const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 433 /* NFOSMESA_GLMULTTRANSPOSEMATRIXF */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glMultTransposeMatrixd(const GLdouble *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 434 /* NFOSMESA_GLMULTTRANSPOSEMATRIXD */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glSampleCoverage(GLfloat value, GLboolean32 invert) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)invert; (*exec)(gl_slb, 435 /* NFOSMESA_GLSAMPLECOVERAGE */, SLB_NARGS(2), gl_pub, &value); } static void APIENTRY exec_glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)width; (void)height; (void)depth; (void)border; (void)imageSize; (void)data; (*exec)(gl_slb, 436 /* NFOSMESA_GLCOMPRESSEDTEXIMAGE3D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)width; (void)height; (void)border; (void)imageSize; (void)data; (*exec)(gl_slb, 437 /* NFOSMESA_GLCOMPRESSEDTEXIMAGE2D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)width; (void)border; (void)imageSize; (void)data; (*exec)(gl_slb, 438 /* NFOSMESA_GLCOMPRESSEDTEXIMAGE1D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)format; (void)imageSize; (void)data; (*exec)(gl_slb, 439 /* NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)width; (void)height; (void)format; (void)imageSize; (void)data; (*exec)(gl_slb, 440 /* NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)width; (void)format; (void)imageSize; (void)data; (*exec)(gl_slb, 441 /* NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetCompressedTexImage(GLenum target, GLint level, void *img) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)img; (*exec)(gl_slb, 442 /* NFOSMESA_GLGETCOMPRESSEDTEXIMAGE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)dfactorRGB; (void)sfactorAlpha; (void)dfactorAlpha; (*exec)(gl_slb, 443 /* NFOSMESA_GLBLENDFUNCSEPARATE */, SLB_NARGS(2), gl_pub, &sfactorRGB); } static void APIENTRY exec_glFogCoordf(GLfloat coord) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 444 /* NFOSMESA_GLFOGCOORDF */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glFogCoordfv(const GLfloat *coord) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 445 /* NFOSMESA_GLFOGCOORDFV */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glFogCoordd(GLdouble coord) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 446 /* NFOSMESA_GLFOGCOORDD */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glFogCoorddv(const GLdouble *coord) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 447 /* NFOSMESA_GLFOGCOORDDV */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glFogCoordPointer(GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)pointer; (*exec)(gl_slb, 448 /* NFOSMESA_GLFOGCOORDPOINTER */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)first; (void)count; (void)drawcount; (*exec)(gl_slb, 449 /* NFOSMESA_GLMULTIDRAWARRAYS */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)type; (void)indices; (void)drawcount; (*exec)(gl_slb, 450 /* NFOSMESA_GLMULTIDRAWELEMENTS */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glPointParameterf(GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 451 /* NFOSMESA_GLPOINTPARAMETERF */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPointParameterfv(GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 452 /* NFOSMESA_GLPOINTPARAMETERFV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPointParameteri(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 453 /* NFOSMESA_GLPOINTPARAMETERI */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPointParameteriv(GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 454 /* NFOSMESA_GLPOINTPARAMETERIV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glSecondaryColor3b(GLbyte32 red, GLbyte32 green, GLbyte32 blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 455 /* NFOSMESA_GLSECONDARYCOLOR3B */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3bv(const GLbyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 456 /* NFOSMESA_GLSECONDARYCOLOR3BV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 457 /* NFOSMESA_GLSECONDARYCOLOR3D */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 458 /* NFOSMESA_GLSECONDARYCOLOR3DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 459 /* NFOSMESA_GLSECONDARYCOLOR3F */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 460 /* NFOSMESA_GLSECONDARYCOLOR3FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColor3i(GLint red, GLint green, GLint blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 461 /* NFOSMESA_GLSECONDARYCOLOR3I */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 462 /* NFOSMESA_GLSECONDARYCOLOR3IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColor3s(GLshort32 red, GLshort32 green, GLshort32 blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 463 /* NFOSMESA_GLSECONDARYCOLOR3S */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 464 /* NFOSMESA_GLSECONDARYCOLOR3SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColor3ub(GLubyte32 red, GLubyte32 green, GLubyte32 blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 465 /* NFOSMESA_GLSECONDARYCOLOR3UB */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3ubv(const GLubyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 466 /* NFOSMESA_GLSECONDARYCOLOR3UBV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 467 /* NFOSMESA_GLSECONDARYCOLOR3UI */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3uiv(const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 468 /* NFOSMESA_GLSECONDARYCOLOR3UIV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColor3us(GLushort32 red, GLushort32 green, GLushort32 blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 469 /* NFOSMESA_GLSECONDARYCOLOR3US */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3usv(const GLushort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 470 /* NFOSMESA_GLSECONDARYCOLOR3USV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 471 /* NFOSMESA_GLSECONDARYCOLORPOINTER */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glWindowPos2d(GLdouble x, GLdouble y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 472 /* NFOSMESA_GLWINDOWPOS2D */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos2dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 473 /* NFOSMESA_GLWINDOWPOS2DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos2f(GLfloat x, GLfloat y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 474 /* NFOSMESA_GLWINDOWPOS2F */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos2fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 475 /* NFOSMESA_GLWINDOWPOS2FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos2i(GLint x, GLint y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 476 /* NFOSMESA_GLWINDOWPOS2I */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos2iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 477 /* NFOSMESA_GLWINDOWPOS2IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos2s(GLshort32 x, GLshort32 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 478 /* NFOSMESA_GLWINDOWPOS2S */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos2sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 479 /* NFOSMESA_GLWINDOWPOS2SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 480 /* NFOSMESA_GLWINDOWPOS3D */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos3dv(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 481 /* NFOSMESA_GLWINDOWPOS3DV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 482 /* NFOSMESA_GLWINDOWPOS3F */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos3fv(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 483 /* NFOSMESA_GLWINDOWPOS3FV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos3i(GLint x, GLint y, GLint z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 484 /* NFOSMESA_GLWINDOWPOS3I */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos3iv(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 485 /* NFOSMESA_GLWINDOWPOS3IV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos3s(GLshort32 x, GLshort32 y, GLshort32 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 486 /* NFOSMESA_GLWINDOWPOS3S */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos3sv(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 487 /* NFOSMESA_GLWINDOWPOS3SV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glGenQueries(GLsizei n, GLuint *ids) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ids; (*exec)(gl_slb, 488 /* NFOSMESA_GLGENQUERIES */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteQueries(GLsizei n, const GLuint *ids) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ids; (*exec)(gl_slb, 489 /* NFOSMESA_GLDELETEQUERIES */, SLB_NARGS(2), gl_pub, &n); } static GLboolean APIENTRY exec_glIsQuery(GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 490 /* NFOSMESA_GLISQUERY */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glBeginQuery(GLenum target, GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (*exec)(gl_slb, 491 /* NFOSMESA_GLBEGINQUERY */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glEndQuery(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 492 /* NFOSMESA_GLENDQUERY */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetQueryiv(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 493 /* NFOSMESA_GLGETQUERYIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 494 /* NFOSMESA_GLGETQUERYOBJECTIV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 495 /* NFOSMESA_GLGETQUERYOBJECTUIV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glBindBuffer(GLenum target, GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (*exec)(gl_slb, 496 /* NFOSMESA_GLBINDBUFFER */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glDeleteBuffers(GLsizei n, const GLuint *buffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffers; (*exec)(gl_slb, 497 /* NFOSMESA_GLDELETEBUFFERS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenBuffers(GLsizei n, GLuint *buffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffers; (*exec)(gl_slb, 498 /* NFOSMESA_GLGENBUFFERS */, SLB_NARGS(2), gl_pub, &n); } static GLboolean APIENTRY exec_glIsBuffer(GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 499 /* NFOSMESA_GLISBUFFER */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glBufferData(GLenum target, GLsizeiptr size, const void *data, GLenum usage) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)data; (void)usage; (*exec)(gl_slb, 500 /* NFOSMESA_GLBUFFERDATA */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (void)data; (*exec)(gl_slb, 501 /* NFOSMESA_GLBUFFERSUBDATA */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (void)data; (*exec)(gl_slb, 502 /* NFOSMESA_GLGETBUFFERSUBDATA */, SLB_NARGS(2), gl_pub, &target); } static void * APIENTRY exec_glMapBuffer(GLenum target, GLenum access) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)access; return (void *)(*exec)(gl_slb, 503 /* NFOSMESA_GLMAPBUFFER */, SLB_NARGS(2), gl_pub, &target); } static GLboolean APIENTRY exec_glUnmapBuffer(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 504 /* NFOSMESA_GLUNMAPBUFFER */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 505 /* NFOSMESA_GLGETBUFFERPARAMETERIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetBufferPointerv(GLenum target, GLenum pname, void * *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 506 /* NFOSMESA_GLGETBUFFERPOINTERV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glActiveTextureARB(GLenum texture) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 507 /* NFOSMESA_GLACTIVETEXTUREARB */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glClientActiveTextureARB(GLenum texture) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 508 /* NFOSMESA_GLCLIENTACTIVETEXTUREARB */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord1dARB(GLenum target, GLdouble s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (*exec)(gl_slb, 509 /* NFOSMESA_GLMULTITEXCOORD1DARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1dvARB(GLenum target, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 510 /* NFOSMESA_GLMULTITEXCOORD1DVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1fARB(GLenum target, GLfloat s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (*exec)(gl_slb, 511 /* NFOSMESA_GLMULTITEXCOORD1FARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1fvARB(GLenum target, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 512 /* NFOSMESA_GLMULTITEXCOORD1FVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1iARB(GLenum target, GLint s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (*exec)(gl_slb, 513 /* NFOSMESA_GLMULTITEXCOORD1IARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1ivARB(GLenum target, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 514 /* NFOSMESA_GLMULTITEXCOORD1IVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1sARB(GLenum target, GLshort32 s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (*exec)(gl_slb, 515 /* NFOSMESA_GLMULTITEXCOORD1SARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1svARB(GLenum target, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 516 /* NFOSMESA_GLMULTITEXCOORD1SVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (*exec)(gl_slb, 517 /* NFOSMESA_GLMULTITEXCOORD2DARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2dvARB(GLenum target, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 518 /* NFOSMESA_GLMULTITEXCOORD2DVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (*exec)(gl_slb, 519 /* NFOSMESA_GLMULTITEXCOORD2FARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2fvARB(GLenum target, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 520 /* NFOSMESA_GLMULTITEXCOORD2FVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2iARB(GLenum target, GLint s, GLint t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (*exec)(gl_slb, 521 /* NFOSMESA_GLMULTITEXCOORD2IARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2ivARB(GLenum target, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 522 /* NFOSMESA_GLMULTITEXCOORD2IVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2sARB(GLenum target, GLshort32 s, GLshort32 t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (*exec)(gl_slb, 523 /* NFOSMESA_GLMULTITEXCOORD2SARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2svARB(GLenum target, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 524 /* NFOSMESA_GLMULTITEXCOORD2SVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (*exec)(gl_slb, 525 /* NFOSMESA_GLMULTITEXCOORD3DARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3dvARB(GLenum target, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 526 /* NFOSMESA_GLMULTITEXCOORD3DVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (*exec)(gl_slb, 527 /* NFOSMESA_GLMULTITEXCOORD3FARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3fvARB(GLenum target, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 528 /* NFOSMESA_GLMULTITEXCOORD3FVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (*exec)(gl_slb, 529 /* NFOSMESA_GLMULTITEXCOORD3IARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3ivARB(GLenum target, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 530 /* NFOSMESA_GLMULTITEXCOORD3IVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3sARB(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (*exec)(gl_slb, 531 /* NFOSMESA_GLMULTITEXCOORD3SARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3svARB(GLenum target, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 532 /* NFOSMESA_GLMULTITEXCOORD3SVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (void)q; (*exec)(gl_slb, 533 /* NFOSMESA_GLMULTITEXCOORD4DARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4dvARB(GLenum target, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 534 /* NFOSMESA_GLMULTITEXCOORD4DVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (void)q; (*exec)(gl_slb, 535 /* NFOSMESA_GLMULTITEXCOORD4FARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4fvARB(GLenum target, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 536 /* NFOSMESA_GLMULTITEXCOORD4FVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (void)q; (*exec)(gl_slb, 537 /* NFOSMESA_GLMULTITEXCOORD4IARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4ivARB(GLenum target, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 538 /* NFOSMESA_GLMULTITEXCOORD4IVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4sARB(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (void)q; (*exec)(gl_slb, 539 /* NFOSMESA_GLMULTITEXCOORD4SARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4svARB(GLenum target, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 540 /* NFOSMESA_GLMULTITEXCOORD4SVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glLoadTransposeMatrixfARB(const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 541 /* NFOSMESA_GLLOADTRANSPOSEMATRIXFARB */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glLoadTransposeMatrixdARB(const GLdouble *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 542 /* NFOSMESA_GLLOADTRANSPOSEMATRIXDARB */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glMultTransposeMatrixfARB(const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 543 /* NFOSMESA_GLMULTTRANSPOSEMATRIXFARB */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glMultTransposeMatrixdARB(const GLdouble *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 544 /* NFOSMESA_GLMULTTRANSPOSEMATRIXDARB */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glSampleCoverageARB(GLfloat value, GLboolean32 invert) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)invert; (*exec)(gl_slb, 545 /* NFOSMESA_GLSAMPLECOVERAGEARB */, SLB_NARGS(2), gl_pub, &value); } static void APIENTRY exec_glCompressedTexImage3DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)width; (void)height; (void)depth; (void)border; (void)imageSize; (void)data; (*exec)(gl_slb, 546 /* NFOSMESA_GLCOMPRESSEDTEXIMAGE3DARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCompressedTexImage2DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)width; (void)height; (void)border; (void)imageSize; (void)data; (*exec)(gl_slb, 547 /* NFOSMESA_GLCOMPRESSEDTEXIMAGE2DARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCompressedTexImage1DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)width; (void)border; (void)imageSize; (void)data; (*exec)(gl_slb, 548 /* NFOSMESA_GLCOMPRESSEDTEXIMAGE1DARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)format; (void)imageSize; (void)data; (*exec)(gl_slb, 549 /* NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3DARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)width; (void)height; (void)format; (void)imageSize; (void)data; (*exec)(gl_slb, 550 /* NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2DARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)width; (void)format; (void)imageSize; (void)data; (*exec)(gl_slb, 551 /* NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1DARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetCompressedTexImageARB(GLenum target, GLint level, void *img) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)img; (*exec)(gl_slb, 552 /* NFOSMESA_GLGETCOMPRESSEDTEXIMAGEARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glPointParameterfARB(GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 553 /* NFOSMESA_GLPOINTPARAMETERFARB */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPointParameterfvARB(GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 554 /* NFOSMESA_GLPOINTPARAMETERFVARB */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glWeightbvARB(GLint size, const GLbyte *weights) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)weights; (*exec)(gl_slb, 555 /* NFOSMESA_GLWEIGHTBVARB */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glWeightsvARB(GLint size, const GLshort *weights) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)weights; (*exec)(gl_slb, 556 /* NFOSMESA_GLWEIGHTSVARB */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glWeightivARB(GLint size, const GLint *weights) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)weights; (*exec)(gl_slb, 557 /* NFOSMESA_GLWEIGHTIVARB */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glWeightfvARB(GLint size, const GLfloat *weights) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)weights; (*exec)(gl_slb, 558 /* NFOSMESA_GLWEIGHTFVARB */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glWeightdvARB(GLint size, const GLdouble *weights) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)weights; (*exec)(gl_slb, 559 /* NFOSMESA_GLWEIGHTDVARB */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glWeightubvARB(GLint size, const GLubyte *weights) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)weights; (*exec)(gl_slb, 560 /* NFOSMESA_GLWEIGHTUBVARB */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glWeightusvARB(GLint size, const GLushort *weights) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)weights; (*exec)(gl_slb, 561 /* NFOSMESA_GLWEIGHTUSVARB */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glWeightuivARB(GLint size, const GLuint *weights) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)weights; (*exec)(gl_slb, 562 /* NFOSMESA_GLWEIGHTUIVARB */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glWeightPointerARB(GLint size, GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 563 /* NFOSMESA_GLWEIGHTPOINTERARB */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glVertexBlendARB(GLint count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 564 /* NFOSMESA_GLVERTEXBLENDARB */, SLB_NARGS(2), gl_pub, &count); } static void APIENTRY exec_glCurrentPaletteMatrixARB(GLint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 565 /* NFOSMESA_GLCURRENTPALETTEMATRIXARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glMatrixIndexubvARB(GLint size, const GLubyte *indices) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)indices; (*exec)(gl_slb, 566 /* NFOSMESA_GLMATRIXINDEXUBVARB */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glMatrixIndexusvARB(GLint size, const GLushort *indices) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)indices; (*exec)(gl_slb, 567 /* NFOSMESA_GLMATRIXINDEXUSVARB */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glMatrixIndexuivARB(GLint size, const GLuint *indices) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)indices; (*exec)(gl_slb, 568 /* NFOSMESA_GLMATRIXINDEXUIVARB */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glMatrixIndexPointerARB(GLint size, GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 569 /* NFOSMESA_GLMATRIXINDEXPOINTERARB */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glWindowPos2dARB(GLdouble x, GLdouble y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 570 /* NFOSMESA_GLWINDOWPOS2DARB */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos2dvARB(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 571 /* NFOSMESA_GLWINDOWPOS2DVARB */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos2fARB(GLfloat x, GLfloat y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 572 /* NFOSMESA_GLWINDOWPOS2FARB */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos2fvARB(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 573 /* NFOSMESA_GLWINDOWPOS2FVARB */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos2iARB(GLint x, GLint y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 574 /* NFOSMESA_GLWINDOWPOS2IARB */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos2ivARB(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 575 /* NFOSMESA_GLWINDOWPOS2IVARB */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos2sARB(GLshort32 x, GLshort32 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 576 /* NFOSMESA_GLWINDOWPOS2SARB */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos2svARB(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 577 /* NFOSMESA_GLWINDOWPOS2SVARB */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos3dARB(GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 578 /* NFOSMESA_GLWINDOWPOS3DARB */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos3dvARB(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 579 /* NFOSMESA_GLWINDOWPOS3DVARB */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos3fARB(GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 580 /* NFOSMESA_GLWINDOWPOS3FARB */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos3fvARB(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 581 /* NFOSMESA_GLWINDOWPOS3FVARB */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos3iARB(GLint x, GLint y, GLint z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 582 /* NFOSMESA_GLWINDOWPOS3IARB */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos3ivARB(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 583 /* NFOSMESA_GLWINDOWPOS3IVARB */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos3sARB(GLshort32 x, GLshort32 y, GLshort32 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 584 /* NFOSMESA_GLWINDOWPOS3SARB */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos3svARB(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 585 /* NFOSMESA_GLWINDOWPOS3SVARB */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertexAttrib1dARB(GLuint index, GLdouble x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 586 /* NFOSMESA_GLVERTEXATTRIB1DARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1dvARB(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 587 /* NFOSMESA_GLVERTEXATTRIB1DVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1fARB(GLuint index, GLfloat x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 588 /* NFOSMESA_GLVERTEXATTRIB1FARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1fvARB(GLuint index, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 589 /* NFOSMESA_GLVERTEXATTRIB1FVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1sARB(GLuint index, GLshort32 x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 590 /* NFOSMESA_GLVERTEXATTRIB1SARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1svARB(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 591 /* NFOSMESA_GLVERTEXATTRIB1SVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 592 /* NFOSMESA_GLVERTEXATTRIB2DARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2dvARB(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 593 /* NFOSMESA_GLVERTEXATTRIB2DVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 594 /* NFOSMESA_GLVERTEXATTRIB2FARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2fvARB(GLuint index, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 595 /* NFOSMESA_GLVERTEXATTRIB2FVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2sARB(GLuint index, GLshort32 x, GLshort32 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 596 /* NFOSMESA_GLVERTEXATTRIB2SARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2svARB(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 597 /* NFOSMESA_GLVERTEXATTRIB2SVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 598 /* NFOSMESA_GLVERTEXATTRIB3DARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3dvARB(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 599 /* NFOSMESA_GLVERTEXATTRIB3DVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 600 /* NFOSMESA_GLVERTEXATTRIB3FARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3fvARB(GLuint index, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 601 /* NFOSMESA_GLVERTEXATTRIB3FVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3sARB(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 602 /* NFOSMESA_GLVERTEXATTRIB3SARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3svARB(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 603 /* NFOSMESA_GLVERTEXATTRIB3SVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4NbvARB(GLuint index, const GLbyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 604 /* NFOSMESA_GLVERTEXATTRIB4NBVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4NivARB(GLuint index, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 605 /* NFOSMESA_GLVERTEXATTRIB4NIVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4NsvARB(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 606 /* NFOSMESA_GLVERTEXATTRIB4NSVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4NubARB(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 607 /* NFOSMESA_GLVERTEXATTRIB4NUBARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4NubvARB(GLuint index, const GLubyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 608 /* NFOSMESA_GLVERTEXATTRIB4NUBVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4NuivARB(GLuint index, const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 609 /* NFOSMESA_GLVERTEXATTRIB4NUIVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4NusvARB(GLuint index, const GLushort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 610 /* NFOSMESA_GLVERTEXATTRIB4NUSVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4bvARB(GLuint index, const GLbyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 611 /* NFOSMESA_GLVERTEXATTRIB4BVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 612 /* NFOSMESA_GLVERTEXATTRIB4DARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4dvARB(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 613 /* NFOSMESA_GLVERTEXATTRIB4DVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 614 /* NFOSMESA_GLVERTEXATTRIB4FARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4fvARB(GLuint index, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 615 /* NFOSMESA_GLVERTEXATTRIB4FVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4ivARB(GLuint index, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 616 /* NFOSMESA_GLVERTEXATTRIB4IVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4sARB(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 617 /* NFOSMESA_GLVERTEXATTRIB4SARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4svARB(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 618 /* NFOSMESA_GLVERTEXATTRIB4SVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4ubvARB(GLuint index, const GLubyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 619 /* NFOSMESA_GLVERTEXATTRIB4UBVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4uivARB(GLuint index, const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 620 /* NFOSMESA_GLVERTEXATTRIB4UIVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4usvARB(GLuint index, const GLushort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 621 /* NFOSMESA_GLVERTEXATTRIB4USVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)normalized; (void)stride; (void)pointer; (*exec)(gl_slb, 622 /* NFOSMESA_GLVERTEXATTRIBPOINTERARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glEnableVertexAttribArrayARB(GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 623 /* NFOSMESA_GLENABLEVERTEXATTRIBARRAYARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glDisableVertexAttribArrayARB(GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 624 /* NFOSMESA_GLDISABLEVERTEXATTRIBARRAYARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glProgramStringARB(GLenum target, GLenum format, GLsizei len, const void *string) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)len; (void)string; (*exec)(gl_slb, 625 /* NFOSMESA_GLPROGRAMSTRINGARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindProgramARB(GLenum target, GLuint program) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)program; (*exec)(gl_slb, 626 /* NFOSMESA_GLBINDPROGRAMARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glDeleteProgramsARB(GLsizei n, const GLuint *programs) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)programs; (*exec)(gl_slb, 627 /* NFOSMESA_GLDELETEPROGRAMSARB */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenProgramsARB(GLsizei n, GLuint *programs) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)programs; (*exec)(gl_slb, 628 /* NFOSMESA_GLGENPROGRAMSARB */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 629 /* NFOSMESA_GLPROGRAMENVPARAMETER4DARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramEnvParameter4dvARB(GLenum target, GLuint index, const GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 630 /* NFOSMESA_GLPROGRAMENVPARAMETER4DVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramEnvParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 631 /* NFOSMESA_GLPROGRAMENVPARAMETER4FARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramEnvParameter4fvARB(GLenum target, GLuint index, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 632 /* NFOSMESA_GLPROGRAMENVPARAMETER4FVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramLocalParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 633 /* NFOSMESA_GLPROGRAMLOCALPARAMETER4DARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramLocalParameter4dvARB(GLenum target, GLuint index, const GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 634 /* NFOSMESA_GLPROGRAMLOCALPARAMETER4DVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramLocalParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 635 /* NFOSMESA_GLPROGRAMLOCALPARAMETER4FARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramLocalParameter4fvARB(GLenum target, GLuint index, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 636 /* NFOSMESA_GLPROGRAMLOCALPARAMETER4FVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetProgramEnvParameterdvARB(GLenum target, GLuint index, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 637 /* NFOSMESA_GLGETPROGRAMENVPARAMETERDVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetProgramEnvParameterfvARB(GLenum target, GLuint index, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 638 /* NFOSMESA_GLGETPROGRAMENVPARAMETERFVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetProgramLocalParameterdvARB(GLenum target, GLuint index, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 639 /* NFOSMESA_GLGETPROGRAMLOCALPARAMETERDVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetProgramLocalParameterfvARB(GLenum target, GLuint index, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 640 /* NFOSMESA_GLGETPROGRAMLOCALPARAMETERFVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetProgramivARB(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 641 /* NFOSMESA_GLGETPROGRAMIVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetProgramStringARB(GLenum target, GLenum pname, void *string) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)string; (*exec)(gl_slb, 642 /* NFOSMESA_GLGETPROGRAMSTRINGARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 643 /* NFOSMESA_GLGETVERTEXATTRIBDVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 644 /* NFOSMESA_GLGETVERTEXATTRIBFVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribivARB(GLuint index, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 645 /* NFOSMESA_GLGETVERTEXATTRIBIVARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribPointervARB(GLuint index, GLenum pname, void * *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)pointer; (*exec)(gl_slb, 646 /* NFOSMESA_GLGETVERTEXATTRIBPOINTERVARB */, SLB_NARGS(2), gl_pub, &index); } static GLboolean APIENTRY exec_glIsProgramARB(GLuint program) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 647 /* NFOSMESA_GLISPROGRAMARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glBindBufferARB(GLenum target, GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (*exec)(gl_slb, 648 /* NFOSMESA_GLBINDBUFFERARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glDeleteBuffersARB(GLsizei n, const GLuint *buffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffers; (*exec)(gl_slb, 649 /* NFOSMESA_GLDELETEBUFFERSARB */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenBuffersARB(GLsizei n, GLuint *buffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffers; (*exec)(gl_slb, 650 /* NFOSMESA_GLGENBUFFERSARB */, SLB_NARGS(2), gl_pub, &n); } static GLboolean APIENTRY exec_glIsBufferARB(GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 651 /* NFOSMESA_GLISBUFFERARB */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glBufferDataARB(GLenum target, GLsizeiptrARB size, const void *data, GLenum usage) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)data; (void)usage; (*exec)(gl_slb, 652 /* NFOSMESA_GLBUFFERDATAARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (void)data; (*exec)(gl_slb, 653 /* NFOSMESA_GLBUFFERSUBDATAARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (void)data; (*exec)(gl_slb, 654 /* NFOSMESA_GLGETBUFFERSUBDATAARB */, SLB_NARGS(2), gl_pub, &target); } static void * APIENTRY exec_glMapBufferARB(GLenum target, GLenum access) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)access; return (void *)(*exec)(gl_slb, 655 /* NFOSMESA_GLMAPBUFFERARB */, SLB_NARGS(2), gl_pub, &target); } static GLboolean APIENTRY exec_glUnmapBufferARB(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 656 /* NFOSMESA_GLUNMAPBUFFERARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetBufferParameterivARB(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 657 /* NFOSMESA_GLGETBUFFERPARAMETERIVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetBufferPointervARB(GLenum target, GLenum pname, void * *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 658 /* NFOSMESA_GLGETBUFFERPOINTERVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGenQueriesARB(GLsizei n, GLuint *ids) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ids; (*exec)(gl_slb, 659 /* NFOSMESA_GLGENQUERIESARB */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteQueriesARB(GLsizei n, const GLuint *ids) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ids; (*exec)(gl_slb, 660 /* NFOSMESA_GLDELETEQUERIESARB */, SLB_NARGS(2), gl_pub, &n); } static GLboolean APIENTRY exec_glIsQueryARB(GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 661 /* NFOSMESA_GLISQUERYARB */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glBeginQueryARB(GLenum target, GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (*exec)(gl_slb, 662 /* NFOSMESA_GLBEGINQUERYARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glEndQueryARB(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 663 /* NFOSMESA_GLENDQUERYARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetQueryivARB(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 664 /* NFOSMESA_GLGETQUERYIVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetQueryObjectivARB(GLuint id, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 665 /* NFOSMESA_GLGETQUERYOBJECTIVARB */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 666 /* NFOSMESA_GLGETQUERYOBJECTUIVARB */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glDeleteObjectARB(GLhandleARB obj) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 667 /* NFOSMESA_GLDELETEOBJECTARB */, SLB_NARGS(2), gl_pub, &obj); } static GLhandleARB APIENTRY exec_glGetHandleARB(GLenum pname) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLhandleARB)(*exec)(gl_slb, 668 /* NFOSMESA_GLGETHANDLEARB */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glDetachObjectARB(GLhandleARB containerObj, GLhandleARB attachedObj) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachedObj; (*exec)(gl_slb, 669 /* NFOSMESA_GLDETACHOBJECTARB */, SLB_NARGS(2), gl_pub, &containerObj); } static GLhandleARB APIENTRY exec_glCreateShaderObjectARB(GLenum shaderType) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLhandleARB)(*exec)(gl_slb, 670 /* NFOSMESA_GLCREATESHADEROBJECTARB */, SLB_NARGS(2), gl_pub, &shaderType); } static void APIENTRY exec_glShaderSourceARB(GLhandleARB shaderObj, GLsizei count, const GLcharARB * *string, const GLint *length) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)string; (void)length; (*exec)(gl_slb, 671 /* NFOSMESA_GLSHADERSOURCEARB */, SLB_NARGS(2), gl_pub, &shaderObj); } static void APIENTRY exec_glCompileShaderARB(GLhandleARB shaderObj) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 672 /* NFOSMESA_GLCOMPILESHADERARB */, SLB_NARGS(2), gl_pub, &shaderObj); } static GLhandleARB APIENTRY exec_glCreateProgramObjectARB(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLhandleARB)(*exec)(gl_slb, 673 /* NFOSMESA_GLCREATEPROGRAMOBJECTARB */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glAttachObjectARB(GLhandleARB containerObj, GLhandleARB obj) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)obj; (*exec)(gl_slb, 674 /* NFOSMESA_GLATTACHOBJECTARB */, SLB_NARGS(2), gl_pub, &containerObj); } static void APIENTRY exec_glLinkProgramARB(GLhandleARB programObj) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 675 /* NFOSMESA_GLLINKPROGRAMARB */, SLB_NARGS(2), gl_pub, &programObj); } static void APIENTRY exec_glUseProgramObjectARB(GLhandleARB programObj) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 676 /* NFOSMESA_GLUSEPROGRAMOBJECTARB */, SLB_NARGS(2), gl_pub, &programObj); } static void APIENTRY exec_glValidateProgramARB(GLhandleARB programObj) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 677 /* NFOSMESA_GLVALIDATEPROGRAMARB */, SLB_NARGS(2), gl_pub, &programObj); } static void APIENTRY exec_glUniform1fARB(GLint location, GLfloat v0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (*exec)(gl_slb, 678 /* NFOSMESA_GLUNIFORM1FARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2fARB(GLint location, GLfloat v0, GLfloat v1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (*exec)(gl_slb, 679 /* NFOSMESA_GLUNIFORM2FARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (void)v2; (*exec)(gl_slb, 680 /* NFOSMESA_GLUNIFORM3FARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (void)v2; (void)v3; (*exec)(gl_slb, 681 /* NFOSMESA_GLUNIFORM4FARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1iARB(GLint location, GLint v0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (*exec)(gl_slb, 682 /* NFOSMESA_GLUNIFORM1IARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2iARB(GLint location, GLint v0, GLint v1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (*exec)(gl_slb, 683 /* NFOSMESA_GLUNIFORM2IARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3iARB(GLint location, GLint v0, GLint v1, GLint v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (void)v2; (*exec)(gl_slb, 684 /* NFOSMESA_GLUNIFORM3IARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (void)v2; (void)v3; (*exec)(gl_slb, 685 /* NFOSMESA_GLUNIFORM4IARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1fvARB(GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 686 /* NFOSMESA_GLUNIFORM1FVARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2fvARB(GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 687 /* NFOSMESA_GLUNIFORM2FVARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3fvARB(GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 688 /* NFOSMESA_GLUNIFORM3FVARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4fvARB(GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 689 /* NFOSMESA_GLUNIFORM4FVARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1ivARB(GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 690 /* NFOSMESA_GLUNIFORM1IVARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2ivARB(GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 691 /* NFOSMESA_GLUNIFORM2IVARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3ivARB(GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 692 /* NFOSMESA_GLUNIFORM3IVARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4ivARB(GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 693 /* NFOSMESA_GLUNIFORM4IVARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix2fvARB(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 694 /* NFOSMESA_GLUNIFORMMATRIX2FVARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix3fvARB(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 695 /* NFOSMESA_GLUNIFORMMATRIX3FVARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix4fvARB(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 696 /* NFOSMESA_GLUNIFORMMATRIX4FVARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glGetObjectParameterfvARB(GLhandleARB obj, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 697 /* NFOSMESA_GLGETOBJECTPARAMETERFVARB */, SLB_NARGS(2), gl_pub, &obj); } static void APIENTRY exec_glGetObjectParameterivARB(GLhandleARB obj, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 698 /* NFOSMESA_GLGETOBJECTPARAMETERIVARB */, SLB_NARGS(2), gl_pub, &obj); } static void APIENTRY exec_glGetInfoLogARB(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)maxLength; (void)length; (void)infoLog; (*exec)(gl_slb, 699 /* NFOSMESA_GLGETINFOLOGARB */, SLB_NARGS(2), gl_pub, &obj); } static void APIENTRY exec_glGetAttachedObjectsARB(GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)maxCount; (void)count; (void)obj; (*exec)(gl_slb, 700 /* NFOSMESA_GLGETATTACHEDOBJECTSARB */, SLB_NARGS(2), gl_pub, &containerObj); } static GLint APIENTRY exec_glGetUniformLocationARB(GLhandleARB programObj, const GLcharARB *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; return (GLint)(*exec)(gl_slb, 701 /* NFOSMESA_GLGETUNIFORMLOCATIONARB */, SLB_NARGS(2), gl_pub, &programObj); } static void APIENTRY exec_glGetActiveUniformARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)maxLength; (void)length; (void)size; (void)type; (void)name; (*exec)(gl_slb, 702 /* NFOSMESA_GLGETACTIVEUNIFORMARB */, SLB_NARGS(2), gl_pub, &programObj); } static void APIENTRY exec_glGetUniformfvARB(GLhandleARB programObj, GLint location, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)params; (*exec)(gl_slb, 703 /* NFOSMESA_GLGETUNIFORMFVARB */, SLB_NARGS(2), gl_pub, &programObj); } static void APIENTRY exec_glGetUniformivARB(GLhandleARB programObj, GLint location, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)params; (*exec)(gl_slb, 704 /* NFOSMESA_GLGETUNIFORMIVARB */, SLB_NARGS(2), gl_pub, &programObj); } static void APIENTRY exec_glGetShaderSourceARB(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)maxLength; (void)length; (void)source; (*exec)(gl_slb, 705 /* NFOSMESA_GLGETSHADERSOURCEARB */, SLB_NARGS(2), gl_pub, &obj); } static void APIENTRY exec_glBindAttribLocationARB(GLhandleARB programObj, GLuint index, const GLcharARB *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)name; (*exec)(gl_slb, 706 /* NFOSMESA_GLBINDATTRIBLOCATIONARB */, SLB_NARGS(2), gl_pub, &programObj); } static void APIENTRY exec_glGetActiveAttribARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)maxLength; (void)length; (void)size; (void)type; (void)name; (*exec)(gl_slb, 707 /* NFOSMESA_GLGETACTIVEATTRIBARB */, SLB_NARGS(2), gl_pub, &programObj); } static GLint APIENTRY exec_glGetAttribLocationARB(GLhandleARB programObj, const GLcharARB *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; return (GLint)(*exec)(gl_slb, 708 /* NFOSMESA_GLGETATTRIBLOCATIONARB */, SLB_NARGS(2), gl_pub, &programObj); } static void APIENTRY exec_glDrawBuffersARB(GLsizei n, const GLenum *bufs) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufs; (*exec)(gl_slb, 709 /* NFOSMESA_GLDRAWBUFFERSARB */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glBlendColorEXT(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 710 /* NFOSMESA_GLBLENDCOLOREXT */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glPolygonOffsetEXT(GLfloat factor, GLfloat bias) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bias; (*exec)(gl_slb, 711 /* NFOSMESA_GLPOLYGONOFFSETEXT */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glTexImage3DEXT(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)width; (void)height; (void)depth; (void)border; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 712 /* NFOSMESA_GLTEXIMAGE3DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 713 /* NFOSMESA_GLTEXSUBIMAGE3DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexFilterFuncSGIS(GLenum target, GLenum filter, GLfloat *weights) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)filter; (void)weights; (*exec)(gl_slb, 714 /* NFOSMESA_GLGETTEXFILTERFUNCSGIS */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexFilterFuncSGIS(GLenum target, GLenum filter, GLsizei n, const GLfloat *weights) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)filter; (void)n; (void)weights; (*exec)(gl_slb, 715 /* NFOSMESA_GLTEXFILTERFUNCSGIS */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)width; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 716 /* NFOSMESA_GLTEXSUBIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)width; (void)height; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 717 /* NFOSMESA_GLTEXSUBIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyTexImage1DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)x; (void)y; (void)width; (void)border; (*exec)(gl_slb, 718 /* NFOSMESA_GLCOPYTEXIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyTexImage2DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)x; (void)y; (void)width; (void)height; (void)border; (*exec)(gl_slb, 719 /* NFOSMESA_GLCOPYTEXIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)x; (void)y; (void)width; (*exec)(gl_slb, 720 /* NFOSMESA_GLCOPYTEXSUBIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)x; (void)y; (void)width; (void)height; (*exec)(gl_slb, 721 /* NFOSMESA_GLCOPYTEXSUBIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)x; (void)y; (void)width; (void)height; (*exec)(gl_slb, 722 /* NFOSMESA_GLCOPYTEXSUBIMAGE3DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetHistogramEXT(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)reset; (void)format; (void)type; (void)values; (*exec)(gl_slb, 723 /* NFOSMESA_GLGETHISTOGRAMEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetHistogramParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 724 /* NFOSMESA_GLGETHISTOGRAMPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetHistogramParameterivEXT(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 725 /* NFOSMESA_GLGETHISTOGRAMPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMinmaxEXT(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)reset; (void)format; (void)type; (void)values; (*exec)(gl_slb, 726 /* NFOSMESA_GLGETMINMAXEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMinmaxParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 727 /* NFOSMESA_GLGETMINMAXPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMinmaxParameterivEXT(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 728 /* NFOSMESA_GLGETMINMAXPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glHistogramEXT(GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)width; (void)internalformat; (void)sink; (*exec)(gl_slb, 729 /* NFOSMESA_GLHISTOGRAMEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMinmaxEXT(GLenum target, GLenum internalformat, GLboolean32 sink) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)sink; (*exec)(gl_slb, 730 /* NFOSMESA_GLMINMAXEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glResetHistogramEXT(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 731 /* NFOSMESA_GLRESETHISTOGRAMEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glResetMinmaxEXT(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 732 /* NFOSMESA_GLRESETMINMAXEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)width; (void)format; (void)type; (void)image; (*exec)(gl_slb, 733 /* NFOSMESA_GLCONVOLUTIONFILTER1DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)width; (void)height; (void)format; (void)type; (void)image; (*exec)(gl_slb, 734 /* NFOSMESA_GLCONVOLUTIONFILTER2DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glConvolutionParameterfEXT(GLenum target, GLenum pname, GLfloat params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 735 /* NFOSMESA_GLCONVOLUTIONPARAMETERFEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glConvolutionParameterfvEXT(GLenum target, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 736 /* NFOSMESA_GLCONVOLUTIONPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glConvolutionParameteriEXT(GLenum target, GLenum pname, GLint params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 737 /* NFOSMESA_GLCONVOLUTIONPARAMETERIEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glConvolutionParameterivEXT(GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 738 /* NFOSMESA_GLCONVOLUTIONPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)x; (void)y; (void)width; (*exec)(gl_slb, 739 /* NFOSMESA_GLCOPYCONVOLUTIONFILTER1DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)x; (void)y; (void)width; (void)height; (*exec)(gl_slb, 740 /* NFOSMESA_GLCOPYCONVOLUTIONFILTER2DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetConvolutionFilterEXT(GLenum target, GLenum format, GLenum type, void *image) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)type; (void)image; (*exec)(gl_slb, 741 /* NFOSMESA_GLGETCONVOLUTIONFILTEREXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetConvolutionParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 742 /* NFOSMESA_GLGETCONVOLUTIONPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetConvolutionParameterivEXT(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 743 /* NFOSMESA_GLGETCONVOLUTIONPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetSeparableFilterEXT(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)type; (void)row; (void)column; (void)span; (*exec)(gl_slb, 744 /* NFOSMESA_GLGETSEPARABLEFILTEREXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glSeparableFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)width; (void)height; (void)format; (void)type; (void)row; (void)column; (*exec)(gl_slb, 745 /* NFOSMESA_GLSEPARABLEFILTER2DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glColorTableSGI(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)width; (void)format; (void)type; (void)table; (*exec)(gl_slb, 746 /* NFOSMESA_GLCOLORTABLESGI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glColorTableParameterfvSGI(GLenum target, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 747 /* NFOSMESA_GLCOLORTABLEPARAMETERFVSGI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glColorTableParameterivSGI(GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 748 /* NFOSMESA_GLCOLORTABLEPARAMETERIVSGI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyColorTableSGI(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)x; (void)y; (void)width; (*exec)(gl_slb, 749 /* NFOSMESA_GLCOPYCOLORTABLESGI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetColorTableSGI(GLenum target, GLenum format, GLenum type, void *table) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)type; (void)table; (*exec)(gl_slb, 750 /* NFOSMESA_GLGETCOLORTABLESGI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetColorTableParameterfvSGI(GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 751 /* NFOSMESA_GLGETCOLORTABLEPARAMETERFVSGI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetColorTableParameterivSGI(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 752 /* NFOSMESA_GLGETCOLORTABLEPARAMETERIVSGI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glPixelTexGenSGIX(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 753 /* NFOSMESA_GLPIXELTEXGENSGIX */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glPixelTexGenParameteriSGIS(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 754 /* NFOSMESA_GLPIXELTEXGENPARAMETERISGIS */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPixelTexGenParameterivSGIS(GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 755 /* NFOSMESA_GLPIXELTEXGENPARAMETERIVSGIS */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPixelTexGenParameterfSGIS(GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 756 /* NFOSMESA_GLPIXELTEXGENPARAMETERFSGIS */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPixelTexGenParameterfvSGIS(GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 757 /* NFOSMESA_GLPIXELTEXGENPARAMETERFVSGIS */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetPixelTexGenParameterivSGIS(GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 758 /* NFOSMESA_GLGETPIXELTEXGENPARAMETERIVSGIS */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetPixelTexGenParameterfvSGIS(GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 759 /* NFOSMESA_GLGETPIXELTEXGENPARAMETERFVSGIS */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glTexImage4DSGIS(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)internalformat; (void)width; (void)height; (void)depth; (void)size4d; (void)border; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 760 /* NFOSMESA_GLTEXIMAGE4DSGIS */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexSubImage4DSGIS(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)woffset; (void)width; (void)height; (void)depth; (void)size4d; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 761 /* NFOSMESA_GLTEXSUBIMAGE4DSGIS */, SLB_NARGS(2), gl_pub, &target); } static GLboolean APIENTRY exec_glAreTexturesResidentEXT(GLsizei n, const GLuint *textures, GLboolean *residences) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)textures; (void)residences; return (GLboolean)(*exec)(gl_slb, 762 /* NFOSMESA_GLARETEXTURESRESIDENTEXT */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glBindTextureEXT(GLenum target, GLuint texture) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)texture; (*exec)(gl_slb, 763 /* NFOSMESA_GLBINDTEXTUREEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glDeleteTexturesEXT(GLsizei n, const GLuint *textures) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)textures; (*exec)(gl_slb, 764 /* NFOSMESA_GLDELETETEXTURESEXT */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenTexturesEXT(GLsizei n, GLuint *textures) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)textures; (*exec)(gl_slb, 765 /* NFOSMESA_GLGENTEXTURESEXT */, SLB_NARGS(2), gl_pub, &n); } static GLboolean APIENTRY exec_glIsTextureEXT(GLuint texture) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 766 /* NFOSMESA_GLISTEXTUREEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glPrioritizeTexturesEXT(GLsizei n, const GLuint *textures, const GLclampf *priorities) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)textures; (void)priorities; (*exec)(gl_slb, 767 /* NFOSMESA_GLPRIORITIZETEXTURESEXT */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDetailTexFuncSGIS(GLenum target, GLsizei n, const GLfloat *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)n; (void)points; (*exec)(gl_slb, 768 /* NFOSMESA_GLDETAILTEXFUNCSGIS */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetDetailTexFuncSGIS(GLenum target, GLfloat *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)points; (*exec)(gl_slb, 769 /* NFOSMESA_GLGETDETAILTEXFUNCSGIS */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glSharpenTexFuncSGIS(GLenum target, GLsizei n, const GLfloat *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)n; (void)points; (*exec)(gl_slb, 770 /* NFOSMESA_GLSHARPENTEXFUNCSGIS */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetSharpenTexFuncSGIS(GLenum target, GLfloat *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)points; (*exec)(gl_slb, 771 /* NFOSMESA_GLGETSHARPENTEXFUNCSGIS */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glSampleMaskSGIS(GLclampf value, GLboolean32 invert) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)invert; (*exec)(gl_slb, 772 /* NFOSMESA_GLSAMPLEMASKSGIS */, SLB_NARGS(2), gl_pub, &value); } static void APIENTRY exec_glSamplePatternSGIS(GLenum pattern) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 773 /* NFOSMESA_GLSAMPLEPATTERNSGIS */, SLB_NARGS(2), gl_pub, &pattern); } static void APIENTRY exec_glArrayElementEXT(GLint i) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 774 /* NFOSMESA_GLARRAYELEMENTEXT */, SLB_NARGS(2), gl_pub, &i); } static void APIENTRY exec_glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)count; (void)pointer; (*exec)(gl_slb, 775 /* NFOSMESA_GLCOLORPOINTEREXT */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glDrawArraysEXT(GLenum mode, GLint first, GLsizei count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)first; (void)count; (*exec)(gl_slb, 776 /* NFOSMESA_GLDRAWARRAYSEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)pointer; (*exec)(gl_slb, 777 /* NFOSMESA_GLEDGEFLAGPOINTEREXT */, SLB_NARGS(2), gl_pub, &stride); } static void APIENTRY exec_glGetPointervEXT(GLenum pname, void * *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 778 /* NFOSMESA_GLGETPOINTERVEXT */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)count; (void)pointer; (*exec)(gl_slb, 779 /* NFOSMESA_GLINDEXPOINTEREXT */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)count; (void)pointer; (*exec)(gl_slb, 780 /* NFOSMESA_GLNORMALPOINTEREXT */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)count; (void)pointer; (*exec)(gl_slb, 781 /* NFOSMESA_GLTEXCOORDPOINTEREXT */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)count; (void)pointer; (*exec)(gl_slb, 782 /* NFOSMESA_GLVERTEXPOINTEREXT */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glBlendEquationEXT(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 783 /* NFOSMESA_GLBLENDEQUATIONEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glSpriteParameterfSGIX(GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 784 /* NFOSMESA_GLSPRITEPARAMETERFSGIX */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glSpriteParameterfvSGIX(GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 785 /* NFOSMESA_GLSPRITEPARAMETERFVSGIX */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glSpriteParameteriSGIX(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 786 /* NFOSMESA_GLSPRITEPARAMETERISGIX */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glSpriteParameterivSGIX(GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 787 /* NFOSMESA_GLSPRITEPARAMETERIVSGIX */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPointParameterfEXT(GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 788 /* NFOSMESA_GLPOINTPARAMETERFEXT */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPointParameterfvEXT(GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 789 /* NFOSMESA_GLPOINTPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPointParameterfSGIS(GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 790 /* NFOSMESA_GLPOINTPARAMETERFSGIS */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPointParameterfvSGIS(GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 791 /* NFOSMESA_GLPOINTPARAMETERFVSGIS */, SLB_NARGS(2), gl_pub, &pname); } static GLint APIENTRY exec_glGetInstrumentsSGIX(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLint)(*exec)(gl_slb, 792 /* NFOSMESA_GLGETINSTRUMENTSSGIX */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glInstrumentsBufferSGIX(GLsizei size, GLint *buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (*exec)(gl_slb, 793 /* NFOSMESA_GLINSTRUMENTSBUFFERSGIX */, SLB_NARGS(2), gl_pub, &size); } static GLint APIENTRY exec_glPollInstrumentsSGIX(GLint *marker_p) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLint)(*exec)(gl_slb, 794 /* NFOSMESA_GLPOLLINSTRUMENTSSGIX */, SLB_NARGS(2), gl_pub, &marker_p); } static void APIENTRY exec_glReadInstrumentsSGIX(GLint marker) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 795 /* NFOSMESA_GLREADINSTRUMENTSSGIX */, SLB_NARGS(2), gl_pub, &marker); } static void APIENTRY exec_glStartInstrumentsSGIX(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 796 /* NFOSMESA_GLSTARTINSTRUMENTSSGIX */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glStopInstrumentsSGIX(GLint marker) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 797 /* NFOSMESA_GLSTOPINSTRUMENTSSGIX */, SLB_NARGS(2), gl_pub, &marker); } static void APIENTRY exec_glFrameZoomSGIX(GLint factor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 798 /* NFOSMESA_GLFRAMEZOOMSGIX */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glTagSampleBufferSGIX(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 799 /* NFOSMESA_GLTAGSAMPLEBUFFERSGIX */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glDeformationMap3dSGIX(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)u1; (void)u2; (void)ustride; (void)uorder; (void)v1; (void)v2; (void)vstride; (void)vorder; (void)w1; (void)w2; (void)wstride; (void)worder; (void)points; (*exec)(gl_slb, 800 /* NFOSMESA_GLDEFORMATIONMAP3DSGIX */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glDeformationMap3fSGIX(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)u1; (void)u2; (void)ustride; (void)uorder; (void)v1; (void)v2; (void)vstride; (void)vorder; (void)w1; (void)w2; (void)wstride; (void)worder; (void)points; (*exec)(gl_slb, 801 /* NFOSMESA_GLDEFORMATIONMAP3FSGIX */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glDeformSGIX(GLbitfield mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 802 /* NFOSMESA_GLDEFORMSGIX */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glLoadIdentityDeformationMapSGIX(GLbitfield mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 803 /* NFOSMESA_GLLOADIDENTITYDEFORMATIONMAPSGIX */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glReferencePlaneSGIX(const GLdouble *equation) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 804 /* NFOSMESA_GLREFERENCEPLANESGIX */, SLB_NARGS(2), gl_pub, &equation); } static void APIENTRY exec_glFlushRasterSGIX(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 805 /* NFOSMESA_GLFLUSHRASTERSGIX */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glFogFuncSGIS(GLsizei n, const GLfloat *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)points; (*exec)(gl_slb, 806 /* NFOSMESA_GLFOGFUNCSGIS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGetFogFuncSGIS(GLfloat *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 807 /* NFOSMESA_GLGETFOGFUNCSGIS */, SLB_NARGS(2), gl_pub, &points); } static void APIENTRY exec_glImageTransformParameteriHP(GLenum target, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 808 /* NFOSMESA_GLIMAGETRANSFORMPARAMETERIHP */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glImageTransformParameterfHP(GLenum target, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 809 /* NFOSMESA_GLIMAGETRANSFORMPARAMETERFHP */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glImageTransformParameterivHP(GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 810 /* NFOSMESA_GLIMAGETRANSFORMPARAMETERIVHP */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glImageTransformParameterfvHP(GLenum target, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 811 /* NFOSMESA_GLIMAGETRANSFORMPARAMETERFVHP */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetImageTransformParameterivHP(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 812 /* NFOSMESA_GLGETIMAGETRANSFORMPARAMETERIVHP */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetImageTransformParameterfvHP(GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 813 /* NFOSMESA_GLGETIMAGETRANSFORMPARAMETERFVHP */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glColorSubTableEXT(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)count; (void)format; (void)type; (void)data; (*exec)(gl_slb, 814 /* NFOSMESA_GLCOLORSUBTABLEEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyColorSubTableEXT(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)x; (void)y; (void)width; (*exec)(gl_slb, 815 /* NFOSMESA_GLCOPYCOLORSUBTABLEEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glHintPGI(GLenum target, GLint mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 816 /* NFOSMESA_GLHINTPGI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glColorTableEXT(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalFormat; (void)width; (void)format; (void)type; (void)table; (*exec)(gl_slb, 817 /* NFOSMESA_GLCOLORTABLEEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetColorTableEXT(GLenum target, GLenum format, GLenum type, void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)type; (void)data; (*exec)(gl_slb, 818 /* NFOSMESA_GLGETCOLORTABLEEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 819 /* NFOSMESA_GLGETCOLORTABLEPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 820 /* NFOSMESA_GLGETCOLORTABLEPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetListParameterfvSGIX(GLuint list, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 821 /* NFOSMESA_GLGETLISTPARAMETERFVSGIX */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_glGetListParameterivSGIX(GLuint list, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 822 /* NFOSMESA_GLGETLISTPARAMETERIVSGIX */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_glListParameterfSGIX(GLuint list, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 823 /* NFOSMESA_GLLISTPARAMETERFSGIX */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_glListParameterfvSGIX(GLuint list, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 824 /* NFOSMESA_GLLISTPARAMETERFVSGIX */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_glListParameteriSGIX(GLuint list, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 825 /* NFOSMESA_GLLISTPARAMETERISGIX */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_glListParameterivSGIX(GLuint list, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 826 /* NFOSMESA_GLLISTPARAMETERIVSGIX */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_glIndexMaterialEXT(GLenum face, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 827 /* NFOSMESA_GLINDEXMATERIALEXT */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glIndexFuncEXT(GLenum func, GLclampf ref) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ref; (*exec)(gl_slb, 828 /* NFOSMESA_GLINDEXFUNCEXT */, SLB_NARGS(2), gl_pub, &func); } static void APIENTRY exec_glLockArraysEXT(GLint first, GLsizei count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (*exec)(gl_slb, 829 /* NFOSMESA_GLLOCKARRAYSEXT */, SLB_NARGS(2), gl_pub, &first); } static void APIENTRY exec_glUnlockArraysEXT(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 830 /* NFOSMESA_GLUNLOCKARRAYSEXT */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glCullParameterdvEXT(GLenum pname, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 831 /* NFOSMESA_GLCULLPARAMETERDVEXT */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glCullParameterfvEXT(GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 832 /* NFOSMESA_GLCULLPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glFragmentColorMaterialSGIX(GLenum face, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 833 /* NFOSMESA_GLFRAGMENTCOLORMATERIALSGIX */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glFragmentLightfSGIX(GLenum light, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 834 /* NFOSMESA_GLFRAGMENTLIGHTFSGIX */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glFragmentLightfvSGIX(GLenum light, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 835 /* NFOSMESA_GLFRAGMENTLIGHTFVSGIX */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glFragmentLightiSGIX(GLenum light, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 836 /* NFOSMESA_GLFRAGMENTLIGHTISGIX */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glFragmentLightivSGIX(GLenum light, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 837 /* NFOSMESA_GLFRAGMENTLIGHTIVSGIX */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glFragmentLightModelfSGIX(GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 838 /* NFOSMESA_GLFRAGMENTLIGHTMODELFSGIX */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glFragmentLightModelfvSGIX(GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 839 /* NFOSMESA_GLFRAGMENTLIGHTMODELFVSGIX */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glFragmentLightModeliSGIX(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 840 /* NFOSMESA_GLFRAGMENTLIGHTMODELISGIX */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glFragmentLightModelivSGIX(GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 841 /* NFOSMESA_GLFRAGMENTLIGHTMODELIVSGIX */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glFragmentMaterialfSGIX(GLenum face, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 842 /* NFOSMESA_GLFRAGMENTMATERIALFSGIX */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glFragmentMaterialfvSGIX(GLenum face, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 843 /* NFOSMESA_GLFRAGMENTMATERIALFVSGIX */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glFragmentMaterialiSGIX(GLenum face, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 844 /* NFOSMESA_GLFRAGMENTMATERIALISGIX */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glFragmentMaterialivSGIX(GLenum face, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 845 /* NFOSMESA_GLFRAGMENTMATERIALIVSGIX */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glGetFragmentLightfvSGIX(GLenum light, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 846 /* NFOSMESA_GLGETFRAGMENTLIGHTFVSGIX */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glGetFragmentLightivSGIX(GLenum light, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 847 /* NFOSMESA_GLGETFRAGMENTLIGHTIVSGIX */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glGetFragmentMaterialfvSGIX(GLenum face, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 848 /* NFOSMESA_GLGETFRAGMENTMATERIALFVSGIX */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glGetFragmentMaterialivSGIX(GLenum face, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 849 /* NFOSMESA_GLGETFRAGMENTMATERIALIVSGIX */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glLightEnviSGIX(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 850 /* NFOSMESA_GLLIGHTENVISGIX */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glDrawRangeElementsEXT(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)end; (void)count; (void)type; (void)indices; (*exec)(gl_slb, 851 /* NFOSMESA_GLDRAWRANGEELEMENTSEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glApplyTextureEXT(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 852 /* NFOSMESA_GLAPPLYTEXTUREEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glTextureLightEXT(GLenum pname) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 853 /* NFOSMESA_GLTEXTURELIGHTEXT */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glTextureMaterialEXT(GLenum face, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 854 /* NFOSMESA_GLTEXTUREMATERIALEXT */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glAsyncMarkerSGIX(GLuint marker) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 855 /* NFOSMESA_GLASYNCMARKERSGIX */, SLB_NARGS(2), gl_pub, &marker); } static GLint APIENTRY exec_glFinishAsyncSGIX(GLuint *markerp) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLint)(*exec)(gl_slb, 856 /* NFOSMESA_GLFINISHASYNCSGIX */, SLB_NARGS(2), gl_pub, &markerp); } static GLint APIENTRY exec_glPollAsyncSGIX(GLuint *markerp) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLint)(*exec)(gl_slb, 857 /* NFOSMESA_GLPOLLASYNCSGIX */, SLB_NARGS(2), gl_pub, &markerp); } static GLuint APIENTRY exec_glGenAsyncMarkersSGIX(GLsizei range) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLuint)(*exec)(gl_slb, 858 /* NFOSMESA_GLGENASYNCMARKERSSGIX */, SLB_NARGS(2), gl_pub, &range); } static void APIENTRY exec_glDeleteAsyncMarkersSGIX(GLuint marker, GLsizei range) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)range; (*exec)(gl_slb, 859 /* NFOSMESA_GLDELETEASYNCMARKERSSGIX */, SLB_NARGS(2), gl_pub, &marker); } static GLboolean APIENTRY exec_glIsAsyncMarkerSGIX(GLuint marker) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 860 /* NFOSMESA_GLISASYNCMARKERSGIX */, SLB_NARGS(2), gl_pub, &marker); } static void APIENTRY exec_glVertexPointervINTEL(GLint size, GLenum type, const void * *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)pointer; (*exec)(gl_slb, 861 /* NFOSMESA_GLVERTEXPOINTERVINTEL */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glNormalPointervINTEL(GLenum type, const void * *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pointer; (*exec)(gl_slb, 862 /* NFOSMESA_GLNORMALPOINTERVINTEL */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glColorPointervINTEL(GLint size, GLenum type, const void * *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)pointer; (*exec)(gl_slb, 863 /* NFOSMESA_GLCOLORPOINTERVINTEL */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glTexCoordPointervINTEL(GLint size, GLenum type, const void * *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)pointer; (*exec)(gl_slb, 864 /* NFOSMESA_GLTEXCOORDPOINTERVINTEL */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glPixelTransformParameteriEXT(GLenum target, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 865 /* NFOSMESA_GLPIXELTRANSFORMPARAMETERIEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glPixelTransformParameterfEXT(GLenum target, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 866 /* NFOSMESA_GLPIXELTRANSFORMPARAMETERFEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glPixelTransformParameterivEXT(GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 867 /* NFOSMESA_GLPIXELTRANSFORMPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glPixelTransformParameterfvEXT(GLenum target, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 868 /* NFOSMESA_GLPIXELTRANSFORMPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glSecondaryColor3bEXT(GLbyte32 red, GLbyte32 green, GLbyte32 blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 869 /* NFOSMESA_GLSECONDARYCOLOR3BEXT */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3bvEXT(const GLbyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 870 /* NFOSMESA_GLSECONDARYCOLOR3BVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColor3dEXT(GLdouble red, GLdouble green, GLdouble blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 871 /* NFOSMESA_GLSECONDARYCOLOR3DEXT */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3dvEXT(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 872 /* NFOSMESA_GLSECONDARYCOLOR3DVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColor3fEXT(GLfloat red, GLfloat green, GLfloat blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 873 /* NFOSMESA_GLSECONDARYCOLOR3FEXT */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3fvEXT(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 874 /* NFOSMESA_GLSECONDARYCOLOR3FVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColor3iEXT(GLint red, GLint green, GLint blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 875 /* NFOSMESA_GLSECONDARYCOLOR3IEXT */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3ivEXT(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 876 /* NFOSMESA_GLSECONDARYCOLOR3IVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColor3sEXT(GLshort32 red, GLshort32 green, GLshort32 blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 877 /* NFOSMESA_GLSECONDARYCOLOR3SEXT */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3svEXT(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 878 /* NFOSMESA_GLSECONDARYCOLOR3SVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColor3ubEXT(GLubyte32 red, GLubyte32 green, GLubyte32 blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 879 /* NFOSMESA_GLSECONDARYCOLOR3UBEXT */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3ubvEXT(const GLubyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 880 /* NFOSMESA_GLSECONDARYCOLOR3UBVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColor3uiEXT(GLuint red, GLuint green, GLuint blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 881 /* NFOSMESA_GLSECONDARYCOLOR3UIEXT */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3uivEXT(const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 882 /* NFOSMESA_GLSECONDARYCOLOR3UIVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColor3usEXT(GLushort32 red, GLushort32 green, GLushort32 blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 883 /* NFOSMESA_GLSECONDARYCOLOR3USEXT */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3usvEXT(const GLushort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 884 /* NFOSMESA_GLSECONDARYCOLOR3USVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 885 /* NFOSMESA_GLSECONDARYCOLORPOINTEREXT */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glTextureNormalEXT(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 886 /* NFOSMESA_GLTEXTURENORMALEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawArraysEXT(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)first; (void)count; (void)primcount; (*exec)(gl_slb, 887 /* NFOSMESA_GLMULTIDRAWARRAYSEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)type; (void)indices; (void)primcount; (*exec)(gl_slb, 888 /* NFOSMESA_GLMULTIDRAWELEMENTSEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glFogCoordfEXT(GLfloat coord) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 889 /* NFOSMESA_GLFOGCOORDFEXT */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glFogCoordfvEXT(const GLfloat *coord) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 890 /* NFOSMESA_GLFOGCOORDFVEXT */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glFogCoorddEXT(GLdouble coord) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 891 /* NFOSMESA_GLFOGCOORDDEXT */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glFogCoorddvEXT(const GLdouble *coord) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 892 /* NFOSMESA_GLFOGCOORDDVEXT */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glFogCoordPointerEXT(GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)pointer; (*exec)(gl_slb, 893 /* NFOSMESA_GLFOGCOORDPOINTEREXT */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glTangent3bEXT(GLbyte32 tx, GLbyte32 ty, GLbyte32 tz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ty; (void)tz; (*exec)(gl_slb, 894 /* NFOSMESA_GLTANGENT3BEXT */, SLB_NARGS(2), gl_pub, &tx); } static void APIENTRY exec_glTangent3bvEXT(const GLbyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 895 /* NFOSMESA_GLTANGENT3BVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTangent3dEXT(GLdouble tx, GLdouble ty, GLdouble tz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ty; (void)tz; (*exec)(gl_slb, 896 /* NFOSMESA_GLTANGENT3DEXT */, SLB_NARGS(2), gl_pub, &tx); } static void APIENTRY exec_glTangent3dvEXT(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 897 /* NFOSMESA_GLTANGENT3DVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTangent3fEXT(GLfloat tx, GLfloat ty, GLfloat tz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ty; (void)tz; (*exec)(gl_slb, 898 /* NFOSMESA_GLTANGENT3FEXT */, SLB_NARGS(2), gl_pub, &tx); } static void APIENTRY exec_glTangent3fvEXT(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 899 /* NFOSMESA_GLTANGENT3FVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTangent3iEXT(GLint tx, GLint ty, GLint tz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ty; (void)tz; (*exec)(gl_slb, 900 /* NFOSMESA_GLTANGENT3IEXT */, SLB_NARGS(2), gl_pub, &tx); } static void APIENTRY exec_glTangent3ivEXT(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 901 /* NFOSMESA_GLTANGENT3IVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTangent3sEXT(GLshort32 tx, GLshort32 ty, GLshort32 tz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ty; (void)tz; (*exec)(gl_slb, 902 /* NFOSMESA_GLTANGENT3SEXT */, SLB_NARGS(2), gl_pub, &tx); } static void APIENTRY exec_glTangent3svEXT(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 903 /* NFOSMESA_GLTANGENT3SVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glBinormal3bEXT(GLbyte32 bx, GLbyte32 by, GLbyte32 bz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)by; (void)bz; (*exec)(gl_slb, 904 /* NFOSMESA_GLBINORMAL3BEXT */, SLB_NARGS(2), gl_pub, &bx); } static void APIENTRY exec_glBinormal3bvEXT(const GLbyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 905 /* NFOSMESA_GLBINORMAL3BVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glBinormal3dEXT(GLdouble bx, GLdouble by, GLdouble bz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)by; (void)bz; (*exec)(gl_slb, 906 /* NFOSMESA_GLBINORMAL3DEXT */, SLB_NARGS(2), gl_pub, &bx); } static void APIENTRY exec_glBinormal3dvEXT(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 907 /* NFOSMESA_GLBINORMAL3DVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glBinormal3fEXT(GLfloat bx, GLfloat by, GLfloat bz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)by; (void)bz; (*exec)(gl_slb, 908 /* NFOSMESA_GLBINORMAL3FEXT */, SLB_NARGS(2), gl_pub, &bx); } static void APIENTRY exec_glBinormal3fvEXT(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 909 /* NFOSMESA_GLBINORMAL3FVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glBinormal3iEXT(GLint bx, GLint by, GLint bz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)by; (void)bz; (*exec)(gl_slb, 910 /* NFOSMESA_GLBINORMAL3IEXT */, SLB_NARGS(2), gl_pub, &bx); } static void APIENTRY exec_glBinormal3ivEXT(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 911 /* NFOSMESA_GLBINORMAL3IVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glBinormal3sEXT(GLshort32 bx, GLshort32 by, GLshort32 bz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)by; (void)bz; (*exec)(gl_slb, 912 /* NFOSMESA_GLBINORMAL3SEXT */, SLB_NARGS(2), gl_pub, &bx); } static void APIENTRY exec_glBinormal3svEXT(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 913 /* NFOSMESA_GLBINORMAL3SVEXT */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTangentPointerEXT(GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)pointer; (*exec)(gl_slb, 914 /* NFOSMESA_GLTANGENTPOINTEREXT */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glBinormalPointerEXT(GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)pointer; (*exec)(gl_slb, 915 /* NFOSMESA_GLBINORMALPOINTEREXT */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glFinishTextureSUNX(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 916 /* NFOSMESA_GLFINISHTEXTURESUNX */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glGlobalAlphaFactorbSUN(GLbyte32 factor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 917 /* NFOSMESA_GLGLOBALALPHAFACTORBSUN */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glGlobalAlphaFactorsSUN(GLshort32 factor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 918 /* NFOSMESA_GLGLOBALALPHAFACTORSSUN */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glGlobalAlphaFactoriSUN(GLint factor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 919 /* NFOSMESA_GLGLOBALALPHAFACTORISUN */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glGlobalAlphaFactorfSUN(GLfloat factor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 920 /* NFOSMESA_GLGLOBALALPHAFACTORFSUN */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glGlobalAlphaFactordSUN(GLdouble factor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 921 /* NFOSMESA_GLGLOBALALPHAFACTORDSUN */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glGlobalAlphaFactorubSUN(GLubyte32 factor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 922 /* NFOSMESA_GLGLOBALALPHAFACTORUBSUN */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glGlobalAlphaFactorusSUN(GLushort32 factor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 923 /* NFOSMESA_GLGLOBALALPHAFACTORUSSUN */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glGlobalAlphaFactoruiSUN(GLuint factor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 924 /* NFOSMESA_GLGLOBALALPHAFACTORUISUN */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glReplacementCodeuiSUN(GLuint code) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 925 /* NFOSMESA_GLREPLACEMENTCODEUISUN */, SLB_NARGS(2), gl_pub, &code); } static void APIENTRY exec_glReplacementCodeusSUN(GLushort32 code) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 926 /* NFOSMESA_GLREPLACEMENTCODEUSSUN */, SLB_NARGS(2), gl_pub, &code); } static void APIENTRY exec_glReplacementCodeubSUN(GLubyte32 code) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 927 /* NFOSMESA_GLREPLACEMENTCODEUBSUN */, SLB_NARGS(2), gl_pub, &code); } static void APIENTRY exec_glReplacementCodeuivSUN(const GLuint *code) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 928 /* NFOSMESA_GLREPLACEMENTCODEUIVSUN */, SLB_NARGS(2), gl_pub, &code); } static void APIENTRY exec_glReplacementCodeusvSUN(const GLushort *code) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 929 /* NFOSMESA_GLREPLACEMENTCODEUSVSUN */, SLB_NARGS(2), gl_pub, &code); } static void APIENTRY exec_glReplacementCodeubvSUN(const GLubyte *code) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 930 /* NFOSMESA_GLREPLACEMENTCODEUBVSUN */, SLB_NARGS(2), gl_pub, &code); } static void APIENTRY exec_glReplacementCodePointerSUN(GLenum type, GLsizei stride, const void * *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)pointer; (*exec)(gl_slb, 931 /* NFOSMESA_GLREPLACEMENTCODEPOINTERSUN */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glColor4ubVertex2fSUN(GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)g; (void)b; (void)a; (void)x; (void)y; (*exec)(gl_slb, 932 /* NFOSMESA_GLCOLOR4UBVERTEX2FSUN */, SLB_NARGS(2), gl_pub, &r); } static void APIENTRY exec_glColor4ubVertex2fvSUN(const GLubyte *c, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 933 /* NFOSMESA_GLCOLOR4UBVERTEX2FVSUN */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glColor4ubVertex3fSUN(GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)g; (void)b; (void)a; (void)x; (void)y; (void)z; (*exec)(gl_slb, 934 /* NFOSMESA_GLCOLOR4UBVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &r); } static void APIENTRY exec_glColor4ubVertex3fvSUN(const GLubyte *c, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 935 /* NFOSMESA_GLCOLOR4UBVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glColor3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)g; (void)b; (void)x; (void)y; (void)z; (*exec)(gl_slb, 936 /* NFOSMESA_GLCOLOR3FVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &r); } static void APIENTRY exec_glColor3fVertex3fvSUN(const GLfloat *c, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 937 /* NFOSMESA_GLCOLOR3FVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glNormal3fVertex3fSUN(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ny; (void)nz; (void)x; (void)y; (void)z; (*exec)(gl_slb, 938 /* NFOSMESA_GLNORMAL3FVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &nx); } static void APIENTRY exec_glNormal3fVertex3fvSUN(const GLfloat *n, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 939 /* NFOSMESA_GLNORMAL3FVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glColor4fNormal3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)g; (void)b; (void)a; (void)nx; (void)ny; (void)nz; (void)x; (void)y; (void)z; (*exec)(gl_slb, 940 /* NFOSMESA_GLCOLOR4FNORMAL3FVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &r); } static void APIENTRY exec_glColor4fNormal3fVertex3fvSUN(const GLfloat *c, const GLfloat *n, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)n; (void)v; (*exec)(gl_slb, 941 /* NFOSMESA_GLCOLOR4FNORMAL3FVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &c); } static void APIENTRY exec_glTexCoord2fVertex3fSUN(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)x; (void)y; (void)z; (*exec)(gl_slb, 942 /* NFOSMESA_GLTEXCOORD2FVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord2fVertex3fvSUN(const GLfloat *tc, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 943 /* NFOSMESA_GLTEXCOORD2FVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &tc); } static void APIENTRY exec_glTexCoord4fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)p; (void)q; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 944 /* NFOSMESA_GLTEXCOORD4FVERTEX4FSUN */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord4fVertex4fvSUN(const GLfloat *tc, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 945 /* NFOSMESA_GLTEXCOORD4FVERTEX4FVSUN */, SLB_NARGS(2), gl_pub, &tc); } static void APIENTRY exec_glTexCoord2fColor4ubVertex3fSUN(GLfloat s, GLfloat t, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (void)g; (void)b; (void)a; (void)x; (void)y; (void)z; (*exec)(gl_slb, 946 /* NFOSMESA_GLTEXCOORD2FCOLOR4UBVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord2fColor4ubVertex3fvSUN(const GLfloat *tc, const GLubyte *c, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)c; (void)v; (*exec)(gl_slb, 947 /* NFOSMESA_GLTEXCOORD2FCOLOR4UBVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &tc); } static void APIENTRY exec_glTexCoord2fColor3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (void)g; (void)b; (void)x; (void)y; (void)z; (*exec)(gl_slb, 948 /* NFOSMESA_GLTEXCOORD2FCOLOR3FVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord2fColor3fVertex3fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)c; (void)v; (*exec)(gl_slb, 949 /* NFOSMESA_GLTEXCOORD2FCOLOR3FVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &tc); } static void APIENTRY exec_glTexCoord2fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)nx; (void)ny; (void)nz; (void)x; (void)y; (void)z; (*exec)(gl_slb, 950 /* NFOSMESA_GLTEXCOORD2FNORMAL3FVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord2fNormal3fVertex3fvSUN(const GLfloat *tc, const GLfloat *n, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)n; (void)v; (*exec)(gl_slb, 951 /* NFOSMESA_GLTEXCOORD2FNORMAL3FVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &tc); } static void APIENTRY exec_glTexCoord2fColor4fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (void)g; (void)b; (void)a; (void)nx; (void)ny; (void)nz; (void)x; (void)y; (void)z; (*exec)(gl_slb, 952 /* NFOSMESA_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord2fColor4fNormal3fVertex3fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)c; (void)n; (void)v; (*exec)(gl_slb, 953 /* NFOSMESA_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &tc); } static void APIENTRY exec_glTexCoord4fColor4fNormal3fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)p; (void)q; (void)r; (void)g; (void)b; (void)a; (void)nx; (void)ny; (void)nz; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 954 /* NFOSMESA_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUN */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord4fColor4fNormal3fVertex4fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)c; (void)n; (void)v; (*exec)(gl_slb, 955 /* NFOSMESA_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUN */, SLB_NARGS(2), gl_pub, &tc); } static void APIENTRY exec_glReplacementCodeuiVertex3fSUN(GLuint rc, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 956 /* NFOSMESA_GLREPLACEMENTCODEUIVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiVertex3fvSUN(const GLuint *rc, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 957 /* NFOSMESA_GLREPLACEMENTCODEUIVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiColor4ubVertex3fSUN(GLuint rc, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)r; (void)g; (void)b; (void)a; (void)x; (void)y; (void)z; (*exec)(gl_slb, 958 /* NFOSMESA_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiColor4ubVertex3fvSUN(const GLuint *rc, const GLubyte *c, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)c; (void)v; (*exec)(gl_slb, 959 /* NFOSMESA_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiColor3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)r; (void)g; (void)b; (void)x; (void)y; (void)z; (*exec)(gl_slb, 960 /* NFOSMESA_GLREPLACEMENTCODEUICOLOR3FVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiColor3fVertex3fvSUN(const GLuint *rc, const GLfloat *c, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)c; (void)v; (*exec)(gl_slb, 961 /* NFOSMESA_GLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiNormal3fVertex3fSUN(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)nx; (void)ny; (void)nz; (void)x; (void)y; (void)z; (*exec)(gl_slb, 962 /* NFOSMESA_GLREPLACEMENTCODEUINORMAL3FVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *n, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)n; (void)v; (*exec)(gl_slb, 963 /* NFOSMESA_GLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)r; (void)g; (void)b; (void)a; (void)nx; (void)ny; (void)nz; (void)x; (void)y; (void)z; (*exec)(gl_slb, 964 /* NFOSMESA_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiColor4fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)c; (void)n; (void)v; (*exec)(gl_slb, 965 /* NFOSMESA_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiTexCoord2fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)x; (void)y; (void)z; (*exec)(gl_slb, 966 /* NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiTexCoord2fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)tc; (void)v; (*exec)(gl_slb, 967 /* NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)nx; (void)ny; (void)nz; (void)x; (void)y; (void)z; (*exec)(gl_slb, 968 /* NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)tc; (void)n; (void)v; (*exec)(gl_slb, 969 /* NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (void)g; (void)b; (void)a; (void)nx; (void)ny; (void)nz; (void)x; (void)y; (void)z; (*exec)(gl_slb, 970 /* NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)tc; (void)c; (void)n; (void)v; (*exec)(gl_slb, 971 /* NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN */, SLB_NARGS(2), gl_pub, &rc); } static void APIENTRY exec_glBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)dfactorRGB; (void)sfactorAlpha; (void)dfactorAlpha; (*exec)(gl_slb, 972 /* NFOSMESA_GLBLENDFUNCSEPARATEEXT */, SLB_NARGS(2), gl_pub, &sfactorRGB); } static void APIENTRY exec_glBlendFuncSeparateINGR(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)dfactorRGB; (void)sfactorAlpha; (void)dfactorAlpha; (*exec)(gl_slb, 973 /* NFOSMESA_GLBLENDFUNCSEPARATEINGR */, SLB_NARGS(2), gl_pub, &sfactorRGB); } static void APIENTRY exec_glVertexWeightfEXT(GLfloat weight) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 974 /* NFOSMESA_GLVERTEXWEIGHTFEXT */, SLB_NARGS(2), gl_pub, &weight); } static void APIENTRY exec_glVertexWeightfvEXT(const GLfloat *weight) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 975 /* NFOSMESA_GLVERTEXWEIGHTFVEXT */, SLB_NARGS(2), gl_pub, &weight); } static void APIENTRY exec_glVertexWeightPointerEXT(GLint size, GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 976 /* NFOSMESA_GLVERTEXWEIGHTPOINTEREXT */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glFlushVertexArrayRangeNV(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 977 /* NFOSMESA_GLFLUSHVERTEXARRAYRANGENV */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glVertexArrayRangeNV(GLsizei length, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pointer; (*exec)(gl_slb, 978 /* NFOSMESA_GLVERTEXARRAYRANGENV */, SLB_NARGS(2), gl_pub, &length); } static void APIENTRY exec_glCombinerParameterfvNV(GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 979 /* NFOSMESA_GLCOMBINERPARAMETERFVNV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glCombinerParameterfNV(GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 980 /* NFOSMESA_GLCOMBINERPARAMETERFNV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glCombinerParameterivNV(GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 981 /* NFOSMESA_GLCOMBINERPARAMETERIVNV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glCombinerParameteriNV(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 982 /* NFOSMESA_GLCOMBINERPARAMETERINV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glCombinerInputNV(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)portion; (void)variable; (void)input; (void)mapping; (void)componentUsage; (*exec)(gl_slb, 983 /* NFOSMESA_GLCOMBINERINPUTNV */, SLB_NARGS(2), gl_pub, &stage); } static void APIENTRY exec_glCombinerOutputNV(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean32 abDotProduct, GLboolean32 cdDotProduct, GLboolean32 muxSum) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)portion; (void)abOutput; (void)cdOutput; (void)sumOutput; (void)scale; (void)bias; (void)abDotProduct; (void)cdDotProduct; (void)muxSum; (*exec)(gl_slb, 984 /* NFOSMESA_GLCOMBINEROUTPUTNV */, SLB_NARGS(2), gl_pub, &stage); } static void APIENTRY exec_glFinalCombinerInputNV(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)input; (void)mapping; (void)componentUsage; (*exec)(gl_slb, 985 /* NFOSMESA_GLFINALCOMBINERINPUTNV */, SLB_NARGS(2), gl_pub, &variable); } static void APIENTRY exec_glGetCombinerInputParameterfvNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)portion; (void)variable; (void)pname; (void)params; (*exec)(gl_slb, 986 /* NFOSMESA_GLGETCOMBINERINPUTPARAMETERFVNV */, SLB_NARGS(2), gl_pub, &stage); } static void APIENTRY exec_glGetCombinerInputParameterivNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)portion; (void)variable; (void)pname; (void)params; (*exec)(gl_slb, 987 /* NFOSMESA_GLGETCOMBINERINPUTPARAMETERIVNV */, SLB_NARGS(2), gl_pub, &stage); } static void APIENTRY exec_glGetCombinerOutputParameterfvNV(GLenum stage, GLenum portion, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)portion; (void)pname; (void)params; (*exec)(gl_slb, 988 /* NFOSMESA_GLGETCOMBINEROUTPUTPARAMETERFVNV */, SLB_NARGS(2), gl_pub, &stage); } static void APIENTRY exec_glGetCombinerOutputParameterivNV(GLenum stage, GLenum portion, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)portion; (void)pname; (void)params; (*exec)(gl_slb, 989 /* NFOSMESA_GLGETCOMBINEROUTPUTPARAMETERIVNV */, SLB_NARGS(2), gl_pub, &stage); } static void APIENTRY exec_glGetFinalCombinerInputParameterfvNV(GLenum variable, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 990 /* NFOSMESA_GLGETFINALCOMBINERINPUTPARAMETERFVNV */, SLB_NARGS(2), gl_pub, &variable); } static void APIENTRY exec_glGetFinalCombinerInputParameterivNV(GLenum variable, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 991 /* NFOSMESA_GLGETFINALCOMBINERINPUTPARAMETERIVNV */, SLB_NARGS(2), gl_pub, &variable); } static void APIENTRY exec_glResizeBuffersMESA(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 992 /* NFOSMESA_GLRESIZEBUFFERSMESA */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glWindowPos2dMESA(GLdouble x, GLdouble y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 993 /* NFOSMESA_GLWINDOWPOS2DMESA */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos2dvMESA(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 994 /* NFOSMESA_GLWINDOWPOS2DVMESA */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos2fMESA(GLfloat x, GLfloat y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 995 /* NFOSMESA_GLWINDOWPOS2FMESA */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos2fvMESA(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 996 /* NFOSMESA_GLWINDOWPOS2FVMESA */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos2iMESA(GLint x, GLint y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 997 /* NFOSMESA_GLWINDOWPOS2IMESA */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos2ivMESA(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 998 /* NFOSMESA_GLWINDOWPOS2IVMESA */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos2sMESA(GLshort32 x, GLshort32 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 999 /* NFOSMESA_GLWINDOWPOS2SMESA */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos2svMESA(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1000 /* NFOSMESA_GLWINDOWPOS2SVMESA */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 1001 /* NFOSMESA_GLWINDOWPOS3DMESA */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos3dvMESA(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1002 /* NFOSMESA_GLWINDOWPOS3DVMESA */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 1003 /* NFOSMESA_GLWINDOWPOS3FMESA */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos3fvMESA(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1004 /* NFOSMESA_GLWINDOWPOS3FVMESA */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos3iMESA(GLint x, GLint y, GLint z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 1005 /* NFOSMESA_GLWINDOWPOS3IMESA */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos3ivMESA(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1006 /* NFOSMESA_GLWINDOWPOS3IVMESA */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos3sMESA(GLshort32 x, GLshort32 y, GLshort32 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 1007 /* NFOSMESA_GLWINDOWPOS3SMESA */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos3svMESA(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1008 /* NFOSMESA_GLWINDOWPOS3SVMESA */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1009 /* NFOSMESA_GLWINDOWPOS4DMESA */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos4dvMESA(const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1010 /* NFOSMESA_GLWINDOWPOS4DVMESA */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1011 /* NFOSMESA_GLWINDOWPOS4FMESA */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos4fvMESA(const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1012 /* NFOSMESA_GLWINDOWPOS4FVMESA */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos4iMESA(GLint x, GLint y, GLint z, GLint w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1013 /* NFOSMESA_GLWINDOWPOS4IMESA */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos4ivMESA(const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1014 /* NFOSMESA_GLWINDOWPOS4IVMESA */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glWindowPos4sMESA(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1015 /* NFOSMESA_GLWINDOWPOS4SMESA */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glWindowPos4svMESA(const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1016 /* NFOSMESA_GLWINDOWPOS4SVMESA */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glMultiModeDrawArraysIBM(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)first; (void)count; (void)primcount; (void)modestride; (*exec)(gl_slb, 1017 /* NFOSMESA_GLMULTIMODEDRAWARRAYSIBM */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiModeDrawElementsIBM(const GLenum *mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount, GLint modestride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)type; (void)indices; (void)primcount; (void)modestride; (*exec)(gl_slb, 1018 /* NFOSMESA_GLMULTIMODEDRAWELEMENTSIBM */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glColorPointerListIBM(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (void)ptrstride; (*exec)(gl_slb, 1019 /* NFOSMESA_GLCOLORPOINTERLISTIBM */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glSecondaryColorPointerListIBM(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (void)ptrstride; (*exec)(gl_slb, 1020 /* NFOSMESA_GLSECONDARYCOLORPOINTERLISTIBM */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glEdgeFlagPointerListIBM(GLint stride, const GLboolean * *pointer, GLint ptrstride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pointer; (void)ptrstride; (*exec)(gl_slb, 1021 /* NFOSMESA_GLEDGEFLAGPOINTERLISTIBM */, SLB_NARGS(2), gl_pub, &stride); } static void APIENTRY exec_glFogCoordPointerListIBM(GLenum type, GLint stride, const void * *pointer, GLint ptrstride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)pointer; (void)ptrstride; (*exec)(gl_slb, 1022 /* NFOSMESA_GLFOGCOORDPOINTERLISTIBM */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glIndexPointerListIBM(GLenum type, GLint stride, const void * *pointer, GLint ptrstride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)pointer; (void)ptrstride; (*exec)(gl_slb, 1023 /* NFOSMESA_GLINDEXPOINTERLISTIBM */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glNormalPointerListIBM(GLenum type, GLint stride, const void * *pointer, GLint ptrstride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)pointer; (void)ptrstride; (*exec)(gl_slb, 1024 /* NFOSMESA_GLNORMALPOINTERLISTIBM */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glTexCoordPointerListIBM(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (void)ptrstride; (*exec)(gl_slb, 1025 /* NFOSMESA_GLTEXCOORDPOINTERLISTIBM */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glVertexPointerListIBM(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)pointer; (void)ptrstride; (*exec)(gl_slb, 1026 /* NFOSMESA_GLVERTEXPOINTERLISTIBM */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glTbufferMask3DFX(GLuint mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1027 /* NFOSMESA_GLTBUFFERMASK3DFX */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glSampleMaskEXT(GLclampf value, GLboolean32 invert) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)invert; (*exec)(gl_slb, 1028 /* NFOSMESA_GLSAMPLEMASKEXT */, SLB_NARGS(2), gl_pub, &value); } static void APIENTRY exec_glSamplePatternEXT(GLenum pattern) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1029 /* NFOSMESA_GLSAMPLEPATTERNEXT */, SLB_NARGS(2), gl_pub, &pattern); } static void APIENTRY exec_glTextureColorMaskSGIS(GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 1030 /* NFOSMESA_GLTEXTURECOLORMASKSGIS */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glIglooInterfaceSGIX(GLenum pname, const void *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 1031 /* NFOSMESA_GLIGLOOINTERFACESGIX */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glDeleteFencesNV(GLsizei n, const GLuint *fences) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)fences; (*exec)(gl_slb, 1032 /* NFOSMESA_GLDELETEFENCESNV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenFencesNV(GLsizei n, GLuint *fences) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)fences; (*exec)(gl_slb, 1033 /* NFOSMESA_GLGENFENCESNV */, SLB_NARGS(2), gl_pub, &n); } static GLboolean APIENTRY exec_glIsFenceNV(GLuint fence) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1034 /* NFOSMESA_GLISFENCENV */, SLB_NARGS(2), gl_pub, &fence); } static GLboolean APIENTRY exec_glTestFenceNV(GLuint fence) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1035 /* NFOSMESA_GLTESTFENCENV */, SLB_NARGS(2), gl_pub, &fence); } static void APIENTRY exec_glGetFenceivNV(GLuint fence, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1036 /* NFOSMESA_GLGETFENCEIVNV */, SLB_NARGS(2), gl_pub, &fence); } static void APIENTRY exec_glFinishFenceNV(GLuint fence) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1037 /* NFOSMESA_GLFINISHFENCENV */, SLB_NARGS(2), gl_pub, &fence); } static void APIENTRY exec_glSetFenceNV(GLuint fence, GLenum condition) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)condition; (*exec)(gl_slb, 1038 /* NFOSMESA_GLSETFENCENV */, SLB_NARGS(2), gl_pub, &fence); } static void APIENTRY exec_glMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean32 packed, const void *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)type; (void)ustride; (void)vstride; (void)uorder; (void)vorder; (void)packed; (void)points; (*exec)(gl_slb, 1039 /* NFOSMESA_GLMAPCONTROLPOINTSNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMapParameterivNV(GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1040 /* NFOSMESA_GLMAPPARAMETERIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMapParameterfvNV(GLenum target, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1041 /* NFOSMESA_GLMAPPARAMETERFVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean32 packed, void *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)type; (void)ustride; (void)vstride; (void)packed; (void)points; (*exec)(gl_slb, 1042 /* NFOSMESA_GLGETMAPCONTROLPOINTSNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMapParameterivNV(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1043 /* NFOSMESA_GLGETMAPPARAMETERIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMapParameterfvNV(GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1044 /* NFOSMESA_GLGETMAPPARAMETERFVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMapAttribParameterivNV(GLenum target, GLuint index, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)pname; (void)params; (*exec)(gl_slb, 1045 /* NFOSMESA_GLGETMAPATTRIBPARAMETERIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMapAttribParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)pname; (void)params; (*exec)(gl_slb, 1046 /* NFOSMESA_GLGETMAPATTRIBPARAMETERFVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glEvalMapsNV(GLenum target, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 1047 /* NFOSMESA_GLEVALMAPSNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCombinerStageParameterfvNV(GLenum stage, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1048 /* NFOSMESA_GLCOMBINERSTAGEPARAMETERFVNV */, SLB_NARGS(2), gl_pub, &stage); } static void APIENTRY exec_glGetCombinerStageParameterfvNV(GLenum stage, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1049 /* NFOSMESA_GLGETCOMBINERSTAGEPARAMETERFVNV */, SLB_NARGS(2), gl_pub, &stage); } static GLboolean APIENTRY exec_glAreProgramsResidentNV(GLsizei n, const GLuint *programs, GLboolean *residences) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)programs; (void)residences; return (GLboolean)(*exec)(gl_slb, 1050 /* NFOSMESA_GLAREPROGRAMSRESIDENTNV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glBindProgramNV(GLenum target, GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (*exec)(gl_slb, 1051 /* NFOSMESA_GLBINDPROGRAMNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glDeleteProgramsNV(GLsizei n, const GLuint *programs) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)programs; (*exec)(gl_slb, 1052 /* NFOSMESA_GLDELETEPROGRAMSNV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glExecuteProgramNV(GLenum target, GLuint id, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (void)params; (*exec)(gl_slb, 1053 /* NFOSMESA_GLEXECUTEPROGRAMNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGenProgramsNV(GLsizei n, GLuint *programs) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)programs; (*exec)(gl_slb, 1054 /* NFOSMESA_GLGENPROGRAMSNV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)pname; (void)params; (*exec)(gl_slb, 1055 /* NFOSMESA_GLGETPROGRAMPARAMETERDVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)pname; (void)params; (*exec)(gl_slb, 1056 /* NFOSMESA_GLGETPROGRAMPARAMETERFVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetProgramivNV(GLuint id, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1057 /* NFOSMESA_GLGETPROGRAMIVNV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetProgramStringNV(GLuint id, GLenum pname, GLubyte *program) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)program; (*exec)(gl_slb, 1058 /* NFOSMESA_GLGETPROGRAMSTRINGNV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)address; (void)pname; (void)params; (*exec)(gl_slb, 1059 /* NFOSMESA_GLGETTRACKMATRIXIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetVertexAttribdvNV(GLuint index, GLenum pname, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1060 /* NFOSMESA_GLGETVERTEXATTRIBDVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribfvNV(GLuint index, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1061 /* NFOSMESA_GLGETVERTEXATTRIBFVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribivNV(GLuint index, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1062 /* NFOSMESA_GLGETVERTEXATTRIBIVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribPointervNV(GLuint index, GLenum pname, void * *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)pointer; (*exec)(gl_slb, 1063 /* NFOSMESA_GLGETVERTEXATTRIBPOINTERVNV */, SLB_NARGS(2), gl_pub, &index); } static GLboolean APIENTRY exec_glIsProgramNV(GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1064 /* NFOSMESA_GLISPROGRAMNV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte *program) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (void)len; (void)program; (*exec)(gl_slb, 1065 /* NFOSMESA_GLLOADPROGRAMNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramParameter4dNV(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1066 /* NFOSMESA_GLPROGRAMPARAMETER4DNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramParameter4dvNV(GLenum target, GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)v; (*exec)(gl_slb, 1067 /* NFOSMESA_GLPROGRAMPARAMETER4DVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramParameter4fNV(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1068 /* NFOSMESA_GLPROGRAMPARAMETER4FNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramParameter4fvNV(GLenum target, GLuint index, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)v; (*exec)(gl_slb, 1069 /* NFOSMESA_GLPROGRAMPARAMETER4FVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramParameters4dvNV(GLenum target, GLuint index, GLsizei count, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)count; (void)v; (*exec)(gl_slb, 1070 /* NFOSMESA_GLPROGRAMPARAMETERS4DVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramParameters4fvNV(GLenum target, GLuint index, GLsizei count, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)count; (void)v; (*exec)(gl_slb, 1071 /* NFOSMESA_GLPROGRAMPARAMETERS4FVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glRequestResidentProgramsNV(GLsizei n, const GLuint *programs) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)programs; (*exec)(gl_slb, 1072 /* NFOSMESA_GLREQUESTRESIDENTPROGRAMSNV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glTrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)address; (void)matrix; (void)transform; (*exec)(gl_slb, 1073 /* NFOSMESA_GLTRACKMATRIXNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glVertexAttribPointerNV(GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)fsize; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 1074 /* NFOSMESA_GLVERTEXATTRIBPOINTERNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1dNV(GLuint index, GLdouble x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 1075 /* NFOSMESA_GLVERTEXATTRIB1DNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1dvNV(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1076 /* NFOSMESA_GLVERTEXATTRIB1DVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1fNV(GLuint index, GLfloat x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 1077 /* NFOSMESA_GLVERTEXATTRIB1FNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1fvNV(GLuint index, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1078 /* NFOSMESA_GLVERTEXATTRIB1FVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1sNV(GLuint index, GLshort32 x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 1079 /* NFOSMESA_GLVERTEXATTRIB1SNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1svNV(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1080 /* NFOSMESA_GLVERTEXATTRIB1SVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 1081 /* NFOSMESA_GLVERTEXATTRIB2DNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2dvNV(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1082 /* NFOSMESA_GLVERTEXATTRIB2DVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 1083 /* NFOSMESA_GLVERTEXATTRIB2FNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2fvNV(GLuint index, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1084 /* NFOSMESA_GLVERTEXATTRIB2FVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2sNV(GLuint index, GLshort32 x, GLshort32 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 1085 /* NFOSMESA_GLVERTEXATTRIB2SNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2svNV(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1086 /* NFOSMESA_GLVERTEXATTRIB2SVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 1087 /* NFOSMESA_GLVERTEXATTRIB3DNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3dvNV(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1088 /* NFOSMESA_GLVERTEXATTRIB3DVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 1089 /* NFOSMESA_GLVERTEXATTRIB3FNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3fvNV(GLuint index, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1090 /* NFOSMESA_GLVERTEXATTRIB3FVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3sNV(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 1091 /* NFOSMESA_GLVERTEXATTRIB3SNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3svNV(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1092 /* NFOSMESA_GLVERTEXATTRIB3SVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1093 /* NFOSMESA_GLVERTEXATTRIB4DNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4dvNV(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1094 /* NFOSMESA_GLVERTEXATTRIB4DVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1095 /* NFOSMESA_GLVERTEXATTRIB4FNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4fvNV(GLuint index, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1096 /* NFOSMESA_GLVERTEXATTRIB4FVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4sNV(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1097 /* NFOSMESA_GLVERTEXATTRIB4SNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4svNV(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1098 /* NFOSMESA_GLVERTEXATTRIB4SVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4ubNV(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1099 /* NFOSMESA_GLVERTEXATTRIB4UBNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4ubvNV(GLuint index, const GLubyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1100 /* NFOSMESA_GLVERTEXATTRIB4UBVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs1dvNV(GLuint index, GLsizei count, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 1101 /* NFOSMESA_GLVERTEXATTRIBS1DVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs1fvNV(GLuint index, GLsizei count, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 1102 /* NFOSMESA_GLVERTEXATTRIBS1FVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs1svNV(GLuint index, GLsizei count, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 1103 /* NFOSMESA_GLVERTEXATTRIBS1SVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs2dvNV(GLuint index, GLsizei count, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 1104 /* NFOSMESA_GLVERTEXATTRIBS2DVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs2fvNV(GLuint index, GLsizei count, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 1105 /* NFOSMESA_GLVERTEXATTRIBS2FVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs2svNV(GLuint index, GLsizei count, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 1106 /* NFOSMESA_GLVERTEXATTRIBS2SVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs3dvNV(GLuint index, GLsizei count, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 1107 /* NFOSMESA_GLVERTEXATTRIBS3DVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs3fvNV(GLuint index, GLsizei count, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 1108 /* NFOSMESA_GLVERTEXATTRIBS3FVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs3svNV(GLuint index, GLsizei count, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 1109 /* NFOSMESA_GLVERTEXATTRIBS3SVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs4dvNV(GLuint index, GLsizei count, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 1110 /* NFOSMESA_GLVERTEXATTRIBS4DVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs4fvNV(GLuint index, GLsizei count, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 1111 /* NFOSMESA_GLVERTEXATTRIBS4FVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs4svNV(GLuint index, GLsizei count, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 1112 /* NFOSMESA_GLVERTEXATTRIBS4SVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs4ubvNV(GLuint index, GLsizei count, const GLubyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 1113 /* NFOSMESA_GLVERTEXATTRIBS4UBVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glTexBumpParameterivATI(GLenum pname, const GLint *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 1114 /* NFOSMESA_GLTEXBUMPPARAMETERIVATI */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glTexBumpParameterfvATI(GLenum pname, const GLfloat *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 1115 /* NFOSMESA_GLTEXBUMPPARAMETERFVATI */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetTexBumpParameterivATI(GLenum pname, GLint *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 1116 /* NFOSMESA_GLGETTEXBUMPPARAMETERIVATI */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetTexBumpParameterfvATI(GLenum pname, GLfloat *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 1117 /* NFOSMESA_GLGETTEXBUMPPARAMETERFVATI */, SLB_NARGS(2), gl_pub, &pname); } static GLuint APIENTRY exec_glGenFragmentShadersATI(GLuint range) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLuint)(*exec)(gl_slb, 1118 /* NFOSMESA_GLGENFRAGMENTSHADERSATI */, SLB_NARGS(2), gl_pub, &range); } static void APIENTRY exec_glBindFragmentShaderATI(GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1119 /* NFOSMESA_GLBINDFRAGMENTSHADERATI */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glDeleteFragmentShaderATI(GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1120 /* NFOSMESA_GLDELETEFRAGMENTSHADERATI */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glBeginFragmentShaderATI(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1121 /* NFOSMESA_GLBEGINFRAGMENTSHADERATI */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glEndFragmentShaderATI(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1122 /* NFOSMESA_GLENDFRAGMENTSHADERATI */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glPassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coord; (void)swizzle; (*exec)(gl_slb, 1123 /* NFOSMESA_GLPASSTEXCOORDATI */, SLB_NARGS(2), gl_pub, &dst); } static void APIENTRY exec_glSampleMapATI(GLuint dst, GLuint interp, GLenum swizzle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)interp; (void)swizzle; (*exec)(gl_slb, 1124 /* NFOSMESA_GLSAMPLEMAPATI */, SLB_NARGS(2), gl_pub, &dst); } static void APIENTRY exec_glColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)dst; (void)dstMask; (void)dstMod; (void)arg1; (void)arg1Rep; (void)arg1Mod; (*exec)(gl_slb, 1125 /* NFOSMESA_GLCOLORFRAGMENTOP1ATI */, SLB_NARGS(2), gl_pub, &op); } static void APIENTRY exec_glColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)dst; (void)dstMask; (void)dstMod; (void)arg1; (void)arg1Rep; (void)arg1Mod; (void)arg2; (void)arg2Rep; (void)arg2Mod; (*exec)(gl_slb, 1126 /* NFOSMESA_GLCOLORFRAGMENTOP2ATI */, SLB_NARGS(2), gl_pub, &op); } static void APIENTRY exec_glColorFragmentOp3ATI(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) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)dst; (void)dstMask; (void)dstMod; (void)arg1; (void)arg1Rep; (void)arg1Mod; (void)arg2; (void)arg2Rep; (void)arg2Mod; (void)arg3; (void)arg3Rep; (void)arg3Mod; (*exec)(gl_slb, 1127 /* NFOSMESA_GLCOLORFRAGMENTOP3ATI */, SLB_NARGS(2), gl_pub, &op); } static void APIENTRY exec_glAlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)dst; (void)dstMod; (void)arg1; (void)arg1Rep; (void)arg1Mod; (*exec)(gl_slb, 1128 /* NFOSMESA_GLALPHAFRAGMENTOP1ATI */, SLB_NARGS(2), gl_pub, &op); } static void APIENTRY exec_glAlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)dst; (void)dstMod; (void)arg1; (void)arg1Rep; (void)arg1Mod; (void)arg2; (void)arg2Rep; (void)arg2Mod; (*exec)(gl_slb, 1129 /* NFOSMESA_GLALPHAFRAGMENTOP2ATI */, SLB_NARGS(2), gl_pub, &op); } static void APIENTRY exec_glAlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)dst; (void)dstMod; (void)arg1; (void)arg1Rep; (void)arg1Mod; (void)arg2; (void)arg2Rep; (void)arg2Mod; (void)arg3; (void)arg3Rep; (void)arg3Mod; (*exec)(gl_slb, 1130 /* NFOSMESA_GLALPHAFRAGMENTOP3ATI */, SLB_NARGS(2), gl_pub, &op); } static void APIENTRY exec_glSetFragmentShaderConstantATI(GLuint dst, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 1131 /* NFOSMESA_GLSETFRAGMENTSHADERCONSTANTATI */, SLB_NARGS(2), gl_pub, &dst); } static void APIENTRY exec_glPNTrianglesiATI(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 1132 /* NFOSMESA_GLPNTRIANGLESIATI */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPNTrianglesfATI(GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 1133 /* NFOSMESA_GLPNTRIANGLESFATI */, SLB_NARGS(2), gl_pub, &pname); } static GLuint APIENTRY exec_glNewObjectBufferATI(GLsizei size, const void *pointer, GLenum usage) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pointer; (void)usage; return (GLuint)(*exec)(gl_slb, 1134 /* NFOSMESA_GLNEWOBJECTBUFFERATI */, SLB_NARGS(2), gl_pub, &size); } static GLboolean APIENTRY exec_glIsObjectBufferATI(GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1135 /* NFOSMESA_GLISOBJECTBUFFERATI */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glUpdateObjectBufferATI(GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (void)pointer; (void)preserve; (*exec)(gl_slb, 1136 /* NFOSMESA_GLUPDATEOBJECTBUFFERATI */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glGetObjectBufferfvATI(GLuint buffer, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1137 /* NFOSMESA_GLGETOBJECTBUFFERFVATI */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glGetObjectBufferivATI(GLuint buffer, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1138 /* NFOSMESA_GLGETOBJECTBUFFERIVATI */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glFreeObjectBufferATI(GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1139 /* NFOSMESA_GLFREEOBJECTBUFFERATI */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glArrayObjectATI(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)stride; (void)buffer; (void)offset; (*exec)(gl_slb, 1140 /* NFOSMESA_GLARRAYOBJECTATI */, SLB_NARGS(2), gl_pub, &array); } static void APIENTRY exec_glGetArrayObjectfvATI(GLenum array, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1141 /* NFOSMESA_GLGETARRAYOBJECTFVATI */, SLB_NARGS(2), gl_pub, &array); } static void APIENTRY exec_glGetArrayObjectivATI(GLenum array, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1142 /* NFOSMESA_GLGETARRAYOBJECTIVATI */, SLB_NARGS(2), gl_pub, &array); } static void APIENTRY exec_glVariantArrayObjectATI(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)buffer; (void)offset; (*exec)(gl_slb, 1143 /* NFOSMESA_GLVARIANTARRAYOBJECTATI */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetVariantArrayObjectfvATI(GLuint id, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1144 /* NFOSMESA_GLGETVARIANTARRAYOBJECTFVATI */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetVariantArrayObjectivATI(GLuint id, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1145 /* NFOSMESA_GLGETVARIANTARRAYOBJECTIVATI */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glBeginVertexShaderEXT(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1146 /* NFOSMESA_GLBEGINVERTEXSHADEREXT */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glEndVertexShaderEXT(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1147 /* NFOSMESA_GLENDVERTEXSHADEREXT */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glBindVertexShaderEXT(GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1148 /* NFOSMESA_GLBINDVERTEXSHADEREXT */, SLB_NARGS(2), gl_pub, &id); } static GLuint APIENTRY exec_glGenVertexShadersEXT(GLuint range) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLuint)(*exec)(gl_slb, 1149 /* NFOSMESA_GLGENVERTEXSHADERSEXT */, SLB_NARGS(2), gl_pub, &range); } static void APIENTRY exec_glDeleteVertexShaderEXT(GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1150 /* NFOSMESA_GLDELETEVERTEXSHADEREXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glShaderOp1EXT(GLenum op, GLuint res, GLuint arg1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)res; (void)arg1; (*exec)(gl_slb, 1151 /* NFOSMESA_GLSHADEROP1EXT */, SLB_NARGS(2), gl_pub, &op); } static void APIENTRY exec_glShaderOp2EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)res; (void)arg1; (void)arg2; (*exec)(gl_slb, 1152 /* NFOSMESA_GLSHADEROP2EXT */, SLB_NARGS(2), gl_pub, &op); } static void APIENTRY exec_glShaderOp3EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)res; (void)arg1; (void)arg2; (void)arg3; (*exec)(gl_slb, 1153 /* NFOSMESA_GLSHADEROP3EXT */, SLB_NARGS(2), gl_pub, &op); } static void APIENTRY exec_glSwizzleEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)in; (void)outX; (void)outY; (void)outZ; (void)outW; (*exec)(gl_slb, 1154 /* NFOSMESA_GLSWIZZLEEXT */, SLB_NARGS(2), gl_pub, &res); } static void APIENTRY exec_glWriteMaskEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)in; (void)outX; (void)outY; (void)outZ; (void)outW; (*exec)(gl_slb, 1155 /* NFOSMESA_GLWRITEMASKEXT */, SLB_NARGS(2), gl_pub, &res); } static void APIENTRY exec_glInsertComponentEXT(GLuint res, GLuint src, GLuint num) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)src; (void)num; (*exec)(gl_slb, 1156 /* NFOSMESA_GLINSERTCOMPONENTEXT */, SLB_NARGS(2), gl_pub, &res); } static void APIENTRY exec_glExtractComponentEXT(GLuint res, GLuint src, GLuint num) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)src; (void)num; (*exec)(gl_slb, 1157 /* NFOSMESA_GLEXTRACTCOMPONENTEXT */, SLB_NARGS(2), gl_pub, &res); } static GLuint APIENTRY exec_glGenSymbolsEXT(GLenum datatype, GLenum storagetype, GLenum range, GLuint components) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)storagetype; (void)range; (void)components; return (GLuint)(*exec)(gl_slb, 1158 /* NFOSMESA_GLGENSYMBOLSEXT */, SLB_NARGS(2), gl_pub, &datatype); } static void APIENTRY exec_glSetInvariantEXT(GLuint id, GLenum type, const void *addr) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)addr; (*exec)(gl_slb, 1159 /* NFOSMESA_GLSETINVARIANTEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glSetLocalConstantEXT(GLuint id, GLenum type, const void *addr) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)addr; (*exec)(gl_slb, 1160 /* NFOSMESA_GLSETLOCALCONSTANTEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glVariantbvEXT(GLuint id, const GLbyte *addr) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)addr; (*exec)(gl_slb, 1161 /* NFOSMESA_GLVARIANTBVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glVariantsvEXT(GLuint id, const GLshort *addr) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)addr; (*exec)(gl_slb, 1162 /* NFOSMESA_GLVARIANTSVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glVariantivEXT(GLuint id, const GLint *addr) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)addr; (*exec)(gl_slb, 1163 /* NFOSMESA_GLVARIANTIVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glVariantfvEXT(GLuint id, const GLfloat *addr) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)addr; (*exec)(gl_slb, 1164 /* NFOSMESA_GLVARIANTFVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glVariantdvEXT(GLuint id, const GLdouble *addr) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)addr; (*exec)(gl_slb, 1165 /* NFOSMESA_GLVARIANTDVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glVariantubvEXT(GLuint id, const GLubyte *addr) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)addr; (*exec)(gl_slb, 1166 /* NFOSMESA_GLVARIANTUBVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glVariantusvEXT(GLuint id, const GLushort *addr) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)addr; (*exec)(gl_slb, 1167 /* NFOSMESA_GLVARIANTUSVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glVariantuivEXT(GLuint id, const GLuint *addr) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)addr; (*exec)(gl_slb, 1168 /* NFOSMESA_GLVARIANTUIVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glVariantPointerEXT(GLuint id, GLenum type, GLuint stride, const void *addr) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (void)addr; (*exec)(gl_slb, 1169 /* NFOSMESA_GLVARIANTPOINTEREXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glEnableVariantClientStateEXT(GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1170 /* NFOSMESA_GLENABLEVARIANTCLIENTSTATEEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glDisableVariantClientStateEXT(GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1171 /* NFOSMESA_GLDISABLEVARIANTCLIENTSTATEEXT */, SLB_NARGS(2), gl_pub, &id); } static GLuint APIENTRY exec_glBindLightParameterEXT(GLenum light, GLenum value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; return (GLuint)(*exec)(gl_slb, 1172 /* NFOSMESA_GLBINDLIGHTPARAMETEREXT */, SLB_NARGS(2), gl_pub, &light); } static GLuint APIENTRY exec_glBindMaterialParameterEXT(GLenum face, GLenum value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; return (GLuint)(*exec)(gl_slb, 1173 /* NFOSMESA_GLBINDMATERIALPARAMETEREXT */, SLB_NARGS(2), gl_pub, &face); } static GLuint APIENTRY exec_glBindTexGenParameterEXT(GLenum unit, GLenum coord, GLenum value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coord; (void)value; return (GLuint)(*exec)(gl_slb, 1174 /* NFOSMESA_GLBINDTEXGENPARAMETEREXT */, SLB_NARGS(2), gl_pub, &unit); } static GLuint APIENTRY exec_glBindTextureUnitParameterEXT(GLenum unit, GLenum value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; return (GLuint)(*exec)(gl_slb, 1175 /* NFOSMESA_GLBINDTEXTUREUNITPARAMETEREXT */, SLB_NARGS(2), gl_pub, &unit); } static GLuint APIENTRY exec_glBindParameterEXT(GLenum value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLuint)(*exec)(gl_slb, 1176 /* NFOSMESA_GLBINDPARAMETEREXT */, SLB_NARGS(2), gl_pub, &value); } static GLboolean APIENTRY exec_glIsVariantEnabledEXT(GLuint id, GLenum cap) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)cap; return (GLboolean)(*exec)(gl_slb, 1177 /* NFOSMESA_GLISVARIANTENABLEDEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetVariantBooleanvEXT(GLuint id, GLenum value, GLboolean *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (void)data; (*exec)(gl_slb, 1178 /* NFOSMESA_GLGETVARIANTBOOLEANVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetVariantIntegervEXT(GLuint id, GLenum value, GLint *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (void)data; (*exec)(gl_slb, 1179 /* NFOSMESA_GLGETVARIANTINTEGERVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetVariantFloatvEXT(GLuint id, GLenum value, GLfloat *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (void)data; (*exec)(gl_slb, 1180 /* NFOSMESA_GLGETVARIANTFLOATVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetVariantPointervEXT(GLuint id, GLenum value, void * *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (void)data; (*exec)(gl_slb, 1181 /* NFOSMESA_GLGETVARIANTPOINTERVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetInvariantBooleanvEXT(GLuint id, GLenum value, GLboolean *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (void)data; (*exec)(gl_slb, 1182 /* NFOSMESA_GLGETINVARIANTBOOLEANVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetInvariantIntegervEXT(GLuint id, GLenum value, GLint *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (void)data; (*exec)(gl_slb, 1183 /* NFOSMESA_GLGETINVARIANTINTEGERVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetInvariantFloatvEXT(GLuint id, GLenum value, GLfloat *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (void)data; (*exec)(gl_slb, 1184 /* NFOSMESA_GLGETINVARIANTFLOATVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetLocalConstantBooleanvEXT(GLuint id, GLenum value, GLboolean *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (void)data; (*exec)(gl_slb, 1185 /* NFOSMESA_GLGETLOCALCONSTANTBOOLEANVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetLocalConstantIntegervEXT(GLuint id, GLenum value, GLint *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (void)data; (*exec)(gl_slb, 1186 /* NFOSMESA_GLGETLOCALCONSTANTINTEGERVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetLocalConstantFloatvEXT(GLuint id, GLenum value, GLfloat *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (void)data; (*exec)(gl_slb, 1187 /* NFOSMESA_GLGETLOCALCONSTANTFLOATVEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glVertexStream1sATI(GLenum stream, GLshort32 x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 1188 /* NFOSMESA_GLVERTEXSTREAM1SATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream1svATI(GLenum stream, const GLshort *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1189 /* NFOSMESA_GLVERTEXSTREAM1SVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream1iATI(GLenum stream, GLint x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 1190 /* NFOSMESA_GLVERTEXSTREAM1IATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream1ivATI(GLenum stream, const GLint *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1191 /* NFOSMESA_GLVERTEXSTREAM1IVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream1fATI(GLenum stream, GLfloat x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 1192 /* NFOSMESA_GLVERTEXSTREAM1FATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream1fvATI(GLenum stream, const GLfloat *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1193 /* NFOSMESA_GLVERTEXSTREAM1FVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream1dATI(GLenum stream, GLdouble x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 1194 /* NFOSMESA_GLVERTEXSTREAM1DATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream1dvATI(GLenum stream, const GLdouble *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1195 /* NFOSMESA_GLVERTEXSTREAM1DVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream2sATI(GLenum stream, GLshort32 x, GLshort32 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 1196 /* NFOSMESA_GLVERTEXSTREAM2SATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream2svATI(GLenum stream, const GLshort *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1197 /* NFOSMESA_GLVERTEXSTREAM2SVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream2iATI(GLenum stream, GLint x, GLint y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 1198 /* NFOSMESA_GLVERTEXSTREAM2IATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream2ivATI(GLenum stream, const GLint *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1199 /* NFOSMESA_GLVERTEXSTREAM2IVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream2fATI(GLenum stream, GLfloat x, GLfloat y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 1200 /* NFOSMESA_GLVERTEXSTREAM2FATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream2fvATI(GLenum stream, const GLfloat *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1201 /* NFOSMESA_GLVERTEXSTREAM2FVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream2dATI(GLenum stream, GLdouble x, GLdouble y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 1202 /* NFOSMESA_GLVERTEXSTREAM2DATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream2dvATI(GLenum stream, const GLdouble *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1203 /* NFOSMESA_GLVERTEXSTREAM2DVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream3sATI(GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 1204 /* NFOSMESA_GLVERTEXSTREAM3SATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream3svATI(GLenum stream, const GLshort *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1205 /* NFOSMESA_GLVERTEXSTREAM3SVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream3iATI(GLenum stream, GLint x, GLint y, GLint z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 1206 /* NFOSMESA_GLVERTEXSTREAM3IATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream3ivATI(GLenum stream, const GLint *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1207 /* NFOSMESA_GLVERTEXSTREAM3IVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream3fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 1208 /* NFOSMESA_GLVERTEXSTREAM3FATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream3fvATI(GLenum stream, const GLfloat *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1209 /* NFOSMESA_GLVERTEXSTREAM3FVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream3dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 1210 /* NFOSMESA_GLVERTEXSTREAM3DATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream3dvATI(GLenum stream, const GLdouble *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1211 /* NFOSMESA_GLVERTEXSTREAM3DVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream4sATI(GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1212 /* NFOSMESA_GLVERTEXSTREAM4SATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream4svATI(GLenum stream, const GLshort *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1213 /* NFOSMESA_GLVERTEXSTREAM4SVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream4iATI(GLenum stream, GLint x, GLint y, GLint z, GLint w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1214 /* NFOSMESA_GLVERTEXSTREAM4IATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream4ivATI(GLenum stream, const GLint *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1215 /* NFOSMESA_GLVERTEXSTREAM4IVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream4fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1216 /* NFOSMESA_GLVERTEXSTREAM4FATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream4fvATI(GLenum stream, const GLfloat *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1217 /* NFOSMESA_GLVERTEXSTREAM4FVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream4dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1218 /* NFOSMESA_GLVERTEXSTREAM4DATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexStream4dvATI(GLenum stream, const GLdouble *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1219 /* NFOSMESA_GLVERTEXSTREAM4DVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glNormalStream3bATI(GLenum stream, GLbyte32 nx, GLbyte32 ny, GLbyte32 nz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)nx; (void)ny; (void)nz; (*exec)(gl_slb, 1220 /* NFOSMESA_GLNORMALSTREAM3BATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glNormalStream3bvATI(GLenum stream, const GLbyte *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1221 /* NFOSMESA_GLNORMALSTREAM3BVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glNormalStream3sATI(GLenum stream, GLshort32 nx, GLshort32 ny, GLshort32 nz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)nx; (void)ny; (void)nz; (*exec)(gl_slb, 1222 /* NFOSMESA_GLNORMALSTREAM3SATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glNormalStream3svATI(GLenum stream, const GLshort *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1223 /* NFOSMESA_GLNORMALSTREAM3SVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glNormalStream3iATI(GLenum stream, GLint nx, GLint ny, GLint nz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)nx; (void)ny; (void)nz; (*exec)(gl_slb, 1224 /* NFOSMESA_GLNORMALSTREAM3IATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glNormalStream3ivATI(GLenum stream, const GLint *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1225 /* NFOSMESA_GLNORMALSTREAM3IVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glNormalStream3fATI(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)nx; (void)ny; (void)nz; (*exec)(gl_slb, 1226 /* NFOSMESA_GLNORMALSTREAM3FATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glNormalStream3fvATI(GLenum stream, const GLfloat *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1227 /* NFOSMESA_GLNORMALSTREAM3FVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glNormalStream3dATI(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)nx; (void)ny; (void)nz; (*exec)(gl_slb, 1228 /* NFOSMESA_GLNORMALSTREAM3DATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glNormalStream3dvATI(GLenum stream, const GLdouble *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1229 /* NFOSMESA_GLNORMALSTREAM3DVATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glClientActiveVertexStreamATI(GLenum stream) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1230 /* NFOSMESA_GLCLIENTACTIVEVERTEXSTREAMATI */, SLB_NARGS(2), gl_pub, &stream); } static void APIENTRY exec_glVertexBlendEnviATI(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 1231 /* NFOSMESA_GLVERTEXBLENDENVIATI */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glVertexBlendEnvfATI(GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 1232 /* NFOSMESA_GLVERTEXBLENDENVFATI */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glElementPointerATI(GLenum type, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pointer; (*exec)(gl_slb, 1233 /* NFOSMESA_GLELEMENTPOINTERATI */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glDrawElementArrayATI(GLenum mode, GLsizei count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (*exec)(gl_slb, 1234 /* NFOSMESA_GLDRAWELEMENTARRAYATI */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawRangeElementArrayATI(GLenum mode, GLuint start, GLuint end, GLsizei count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)end; (void)count; (*exec)(gl_slb, 1235 /* NFOSMESA_GLDRAWRANGEELEMENTARRAYATI */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawMeshArraysSUN(GLenum mode, GLint first, GLsizei count, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)first; (void)count; (void)width; (*exec)(gl_slb, 1236 /* NFOSMESA_GLDRAWMESHARRAYSSUN */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glGenOcclusionQueriesNV(GLsizei n, GLuint *ids) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ids; (*exec)(gl_slb, 1237 /* NFOSMESA_GLGENOCCLUSIONQUERIESNV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteOcclusionQueriesNV(GLsizei n, const GLuint *ids) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ids; (*exec)(gl_slb, 1238 /* NFOSMESA_GLDELETEOCCLUSIONQUERIESNV */, SLB_NARGS(2), gl_pub, &n); } static GLboolean APIENTRY exec_glIsOcclusionQueryNV(GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1239 /* NFOSMESA_GLISOCCLUSIONQUERYNV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glBeginOcclusionQueryNV(GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1240 /* NFOSMESA_GLBEGINOCCLUSIONQUERYNV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glEndOcclusionQueryNV(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1241 /* NFOSMESA_GLENDOCCLUSIONQUERYNV */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glGetOcclusionQueryivNV(GLuint id, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1242 /* NFOSMESA_GLGETOCCLUSIONQUERYIVNV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetOcclusionQueryuivNV(GLuint id, GLenum pname, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1243 /* NFOSMESA_GLGETOCCLUSIONQUERYUIVNV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glPointParameteriNV(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 1244 /* NFOSMESA_GLPOINTPARAMETERINV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPointParameterivNV(GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 1245 /* NFOSMESA_GLPOINTPARAMETERIVNV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glActiveStencilFaceEXT(GLenum face) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1246 /* NFOSMESA_GLACTIVESTENCILFACEEXT */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glElementPointerAPPLE(GLenum type, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pointer; (*exec)(gl_slb, 1247 /* NFOSMESA_GLELEMENTPOINTERAPPLE */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glDrawElementArrayAPPLE(GLenum mode, GLint first, GLsizei count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)first; (void)count; (*exec)(gl_slb, 1248 /* NFOSMESA_GLDRAWELEMENTARRAYAPPLE */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)end; (void)first; (void)count; (*exec)(gl_slb, 1249 /* NFOSMESA_GLDRAWRANGEELEMENTARRAYAPPLE */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawElementArrayAPPLE(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)first; (void)count; (void)primcount; (*exec)(gl_slb, 1250 /* NFOSMESA_GLMULTIDRAWELEMENTARRAYAPPLE */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)end; (void)first; (void)count; (void)primcount; (*exec)(gl_slb, 1251 /* NFOSMESA_GLMULTIDRAWRANGEELEMENTARRAYAPPLE */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glGenFencesAPPLE(GLsizei n, GLuint *fences) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)fences; (*exec)(gl_slb, 1252 /* NFOSMESA_GLGENFENCESAPPLE */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteFencesAPPLE(GLsizei n, const GLuint *fences) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)fences; (*exec)(gl_slb, 1253 /* NFOSMESA_GLDELETEFENCESAPPLE */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glSetFenceAPPLE(GLuint fence) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1254 /* NFOSMESA_GLSETFENCEAPPLE */, SLB_NARGS(2), gl_pub, &fence); } static GLboolean APIENTRY exec_glIsFenceAPPLE(GLuint fence) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1255 /* NFOSMESA_GLISFENCEAPPLE */, SLB_NARGS(2), gl_pub, &fence); } static GLboolean APIENTRY exec_glTestFenceAPPLE(GLuint fence) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1256 /* NFOSMESA_GLTESTFENCEAPPLE */, SLB_NARGS(2), gl_pub, &fence); } static void APIENTRY exec_glFinishFenceAPPLE(GLuint fence) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1257 /* NFOSMESA_GLFINISHFENCEAPPLE */, SLB_NARGS(2), gl_pub, &fence); } static GLboolean APIENTRY exec_glTestObjectAPPLE(GLenum object, GLuint name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; return (GLboolean)(*exec)(gl_slb, 1258 /* NFOSMESA_GLTESTOBJECTAPPLE */, SLB_NARGS(2), gl_pub, &object); } static void APIENTRY exec_glFinishObjectAPPLE(GLenum object, GLuint name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; (*exec)(gl_slb, 1259 /* NFOSMESA_GLFINISHOBJECTAPPLE */, SLB_NARGS(2), gl_pub, &object); } static void APIENTRY exec_glBindVertexArrayAPPLE(GLuint array) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1260 /* NFOSMESA_GLBINDVERTEXARRAYAPPLE */, SLB_NARGS(2), gl_pub, &array); } static void APIENTRY exec_glDeleteVertexArraysAPPLE(GLsizei n, const GLuint *arrays) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)arrays; (*exec)(gl_slb, 1261 /* NFOSMESA_GLDELETEVERTEXARRAYSAPPLE */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenVertexArraysAPPLE(GLsizei n, GLuint *arrays) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)arrays; (*exec)(gl_slb, 1262 /* NFOSMESA_GLGENVERTEXARRAYSAPPLE */, SLB_NARGS(2), gl_pub, &n); } static GLboolean APIENTRY exec_glIsVertexArrayAPPLE(GLuint array) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1263 /* NFOSMESA_GLISVERTEXARRAYAPPLE */, SLB_NARGS(2), gl_pub, &array); } static void APIENTRY exec_glVertexArrayRangeAPPLE(GLsizei length, void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pointer; (*exec)(gl_slb, 1264 /* NFOSMESA_GLVERTEXARRAYRANGEAPPLE */, SLB_NARGS(2), gl_pub, &length); } static void APIENTRY exec_glFlushVertexArrayRangeAPPLE(GLsizei length, void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pointer; (*exec)(gl_slb, 1265 /* NFOSMESA_GLFLUSHVERTEXARRAYRANGEAPPLE */, SLB_NARGS(2), gl_pub, &length); } static void APIENTRY exec_glVertexArrayParameteriAPPLE(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 1266 /* NFOSMESA_GLVERTEXARRAYPARAMETERIAPPLE */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glDrawBuffersATI(GLsizei n, const GLenum *bufs) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufs; (*exec)(gl_slb, 1267 /* NFOSMESA_GLDRAWBUFFERSATI */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)len; (void)name; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1268 /* NFOSMESA_GLPROGRAMNAMEDPARAMETER4FNV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)len; (void)name; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1269 /* NFOSMESA_GLPROGRAMNAMEDPARAMETER4DNV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)len; (void)name; (void)v; (*exec)(gl_slb, 1270 /* NFOSMESA_GLPROGRAMNAMEDPARAMETER4FVNV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)len; (void)name; (void)v; (*exec)(gl_slb, 1271 /* NFOSMESA_GLPROGRAMNAMEDPARAMETER4DVNV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)len; (void)name; (void)params; (*exec)(gl_slb, 1272 /* NFOSMESA_GLGETPROGRAMNAMEDPARAMETERFVNV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)len; (void)name; (void)params; (*exec)(gl_slb, 1273 /* NFOSMESA_GLGETPROGRAMNAMEDPARAMETERDVNV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glVertex2hNV(GLhalfNV32 x, GLhalfNV32 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 1274 /* NFOSMESA_GLVERTEX2HNV */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex2hvNV(const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1275 /* NFOSMESA_GLVERTEX2HVNV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertex3hNV(GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 1276 /* NFOSMESA_GLVERTEX3HNV */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex3hvNV(const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1277 /* NFOSMESA_GLVERTEX3HVNV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertex4hNV(GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1278 /* NFOSMESA_GLVERTEX4HNV */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex4hvNV(const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1279 /* NFOSMESA_GLVERTEX4HVNV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glNormal3hNV(GLhalfNV32 nx, GLhalfNV32 ny, GLhalfNV32 nz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ny; (void)nz; (*exec)(gl_slb, 1280 /* NFOSMESA_GLNORMAL3HNV */, SLB_NARGS(2), gl_pub, &nx); } static void APIENTRY exec_glNormal3hvNV(const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1281 /* NFOSMESA_GLNORMAL3HVNV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor3hNV(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 1282 /* NFOSMESA_GLCOLOR3HNV */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor3hvNV(const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1283 /* NFOSMESA_GLCOLOR3HVNV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glColor4hNV(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue, GLhalfNV32 alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 1284 /* NFOSMESA_GLCOLOR4HNV */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor4hvNV(const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1285 /* NFOSMESA_GLCOLOR4HVNV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord1hNV(GLhalfNV32 s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1286 /* NFOSMESA_GLTEXCOORD1HNV */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord1hvNV(const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1287 /* NFOSMESA_GLTEXCOORD1HVNV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord2hNV(GLhalfNV32 s, GLhalfNV32 t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (*exec)(gl_slb, 1288 /* NFOSMESA_GLTEXCOORD2HNV */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord2hvNV(const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1289 /* NFOSMESA_GLTEXCOORD2HVNV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord3hNV(GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (*exec)(gl_slb, 1290 /* NFOSMESA_GLTEXCOORD3HNV */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord3hvNV(const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1291 /* NFOSMESA_GLTEXCOORD3HVNV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glTexCoord4hNV(GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (void)q; (*exec)(gl_slb, 1292 /* NFOSMESA_GLTEXCOORD4HNV */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord4hvNV(const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1293 /* NFOSMESA_GLTEXCOORD4HVNV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glMultiTexCoord1hNV(GLenum target, GLhalfNV32 s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (*exec)(gl_slb, 1294 /* NFOSMESA_GLMULTITEXCOORD1HNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord1hvNV(GLenum target, const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1295 /* NFOSMESA_GLMULTITEXCOORD1HVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2hNV(GLenum target, GLhalfNV32 s, GLhalfNV32 t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (*exec)(gl_slb, 1296 /* NFOSMESA_GLMULTITEXCOORD2HNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord2hvNV(GLenum target, const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1297 /* NFOSMESA_GLMULTITEXCOORD2HVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3hNV(GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (*exec)(gl_slb, 1298 /* NFOSMESA_GLMULTITEXCOORD3HNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord3hvNV(GLenum target, const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1299 /* NFOSMESA_GLMULTITEXCOORD3HVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4hNV(GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (void)q; (*exec)(gl_slb, 1300 /* NFOSMESA_GLMULTITEXCOORD4HNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMultiTexCoord4hvNV(GLenum target, const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1301 /* NFOSMESA_GLMULTITEXCOORD4HVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFogCoordhNV(GLhalfNV32 fog) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1302 /* NFOSMESA_GLFOGCOORDHNV */, SLB_NARGS(2), gl_pub, &fog); } static void APIENTRY exec_glFogCoordhvNV(const GLhalfNV *fog) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1303 /* NFOSMESA_GLFOGCOORDHVNV */, SLB_NARGS(2), gl_pub, &fog); } static void APIENTRY exec_glSecondaryColor3hNV(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 1304 /* NFOSMESA_GLSECONDARYCOLOR3HNV */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glSecondaryColor3hvNV(const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1305 /* NFOSMESA_GLSECONDARYCOLOR3HVNV */, SLB_NARGS(2), gl_pub, &v); } static void APIENTRY exec_glVertexWeighthNV(GLhalfNV32 weight) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1306 /* NFOSMESA_GLVERTEXWEIGHTHNV */, SLB_NARGS(2), gl_pub, &weight); } static void APIENTRY exec_glVertexWeighthvNV(const GLhalfNV *weight) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1307 /* NFOSMESA_GLVERTEXWEIGHTHVNV */, SLB_NARGS(2), gl_pub, &weight); } static void APIENTRY exec_glVertexAttrib1hNV(GLuint index, GLhalfNV32 x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 1308 /* NFOSMESA_GLVERTEXATTRIB1HNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1hvNV(GLuint index, const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1309 /* NFOSMESA_GLVERTEXATTRIB1HVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2hNV(GLuint index, GLhalfNV32 x, GLhalfNV32 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 1310 /* NFOSMESA_GLVERTEXATTRIB2HNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2hvNV(GLuint index, const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1311 /* NFOSMESA_GLVERTEXATTRIB2HVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3hNV(GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 1312 /* NFOSMESA_GLVERTEXATTRIB3HNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3hvNV(GLuint index, const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1313 /* NFOSMESA_GLVERTEXATTRIB3HVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4hNV(GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 1314 /* NFOSMESA_GLVERTEXATTRIB4HNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4hvNV(GLuint index, const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1315 /* NFOSMESA_GLVERTEXATTRIB4HVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs1hvNV(GLuint index, GLsizei n, const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)n; (void)v; (*exec)(gl_slb, 1316 /* NFOSMESA_GLVERTEXATTRIBS1HVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs2hvNV(GLuint index, GLsizei n, const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)n; (void)v; (*exec)(gl_slb, 1317 /* NFOSMESA_GLVERTEXATTRIBS2HVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs3hvNV(GLuint index, GLsizei n, const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)n; (void)v; (*exec)(gl_slb, 1318 /* NFOSMESA_GLVERTEXATTRIBS3HVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribs4hvNV(GLuint index, GLsizei n, const GLhalfNV *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)n; (void)v; (*exec)(gl_slb, 1319 /* NFOSMESA_GLVERTEXATTRIBS4HVNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glPixelDataRangeNV(GLenum target, GLsizei length, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)length; (void)pointer; (*exec)(gl_slb, 1320 /* NFOSMESA_GLPIXELDATARANGENV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFlushPixelDataRangeNV(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1321 /* NFOSMESA_GLFLUSHPIXELDATARANGENV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glPrimitiveRestartNV(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1322 /* NFOSMESA_GLPRIMITIVERESTARTNV */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glPrimitiveRestartIndexNV(GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1323 /* NFOSMESA_GLPRIMITIVERESTARTINDEXNV */, SLB_NARGS(2), gl_pub, &index); } static void * APIENTRY exec_glMapObjectBufferATI(GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (void *)(*exec)(gl_slb, 1324 /* NFOSMESA_GLMAPOBJECTBUFFERATI */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glUnmapObjectBufferATI(GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1325 /* NFOSMESA_GLUNMAPOBJECTBUFFERATI */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glStencilOpSeparateATI(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)sfail; (void)dpfail; (void)dppass; (*exec)(gl_slb, 1326 /* NFOSMESA_GLSTENCILOPSEPARATEATI */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glStencilFuncSeparateATI(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)backfunc; (void)ref; (void)mask; (*exec)(gl_slb, 1327 /* NFOSMESA_GLSTENCILFUNCSEPARATEATI */, SLB_NARGS(2), gl_pub, &frontfunc); } static void APIENTRY exec_glVertexAttribArrayObjectATI(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLuint buffer, GLuint offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)normalized; (void)stride; (void)buffer; (void)offset; (*exec)(gl_slb, 1328 /* NFOSMESA_GLVERTEXATTRIBARRAYOBJECTATI */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribArrayObjectfvATI(GLuint index, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1329 /* NFOSMESA_GLGETVERTEXATTRIBARRAYOBJECTFVATI */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribArrayObjectivATI(GLuint index, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1330 /* NFOSMESA_GLGETVERTEXATTRIBARRAYOBJECTIVATI */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glDepthBoundsEXT(GLclampd zmin, GLclampd zmax) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)zmax; (*exec)(gl_slb, 1331 /* NFOSMESA_GLDEPTHBOUNDSEXT */, SLB_NARGS(2), gl_pub, &zmin); } static void APIENTRY exec_glBlendEquationSeparateEXT(GLenum modeRGB, GLenum modeAlpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)modeAlpha; (*exec)(gl_slb, 1332 /* NFOSMESA_GLBLENDEQUATIONSEPARATEEXT */, SLB_NARGS(2), gl_pub, &modeRGB); } static void APIENTRY exec_OSMesaColorClamp(GLboolean32 enable) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1333 /* NFOSMESA_OSMESACOLORCLAMP */, SLB_NARGS(2), gl_pub, &enable); } static void APIENTRY exec_OSMesaPostprocess(OSMesaContext osmesa, const char *filter, GLuint enable_value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)filter; (void)enable_value; (*exec)(gl_slb, 1334 /* NFOSMESA_OSMESAPOSTPROCESS */, SLB_NARGS(2), gl_pub, &osmesa); } static void * APIENTRY exec_OSMesaCreateLDG(GLenum format, GLenum type, GLint width, GLint height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)width; (void)height; return (void *)(*exec)(gl_slb, 1384 /* */, SLB_NARGS(2), gl_pub, &format); } static void APIENTRY exec_OSMesaDestroyLDG(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1385 /* */, SLB_NARGS(2), gl_pub, NULL); } static GLsizei APIENTRY exec_max_width(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLsizei)(*exec)(gl_slb, 1386 /* */, SLB_NARGS(2), gl_pub, NULL); } static GLsizei APIENTRY exec_max_height(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLsizei)(*exec)(gl_slb, 1387 /* */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_information(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1388 /* */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_exception_error(void (CALLBACK *exception)(GLenum param) ) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1389 /* */, SLB_NARGS(2), gl_pub, &exception); } static void APIENTRY exec_gluLookAtf(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)eyeY; (void)eyeZ; (void)centerX; (void)centerY; (void)centerZ; (void)upX; (void)upY; (void)upZ; (*exec)(gl_slb, 1390 /* NFOSMESA_GLULOOKATF */, SLB_NARGS(2), gl_pub, &eyeX); } static void APIENTRY exec_glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)right; (void)bottom; (void)top; (void)near_val; (void)far_val; (*exec)(gl_slb, 1391 /* NFOSMESA_GLFRUSTUMF */, SLB_NARGS(2), gl_pub, &left); } static void APIENTRY exec_glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)right; (void)bottom; (void)top; (void)near_val; (void)far_val; (*exec)(gl_slb, 1392 /* NFOSMESA_GLORTHOF */, SLB_NARGS(2), gl_pub, &left); } static void APIENTRY exec_swapbuffer(void *buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1393 /* NFOSMESA_TINYGLSWAPBUFFER */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_gluLookAt(GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)eyeY; (void)eyeZ; (void)centerX; (void)centerY; (void)centerZ; (void)upX; (void)upY; (void)upZ; (*exec)(gl_slb, 1394 /* NFOSMESA_GLULOOKAT */, SLB_NARGS(2), gl_pub, &eyeX); } static void APIENTRY exec_glAccumxOES(GLenum op, GLfixed value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 1400 /* NFOSMESA_GLACCUMXOES */, SLB_NARGS(2), gl_pub, &op); } static void APIENTRY exec_glActiveProgramEXT(GLuint program) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1401 /* NFOSMESA_GLACTIVEPROGRAMEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glActiveShaderProgram(GLuint pipeline, GLuint program) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)program; (*exec)(gl_slb, 1402 /* NFOSMESA_GLACTIVESHADERPROGRAM */, SLB_NARGS(2), gl_pub, &pipeline); } static void APIENTRY exec_glActiveVaryingNV(GLuint program, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; (*exec)(gl_slb, 1403 /* NFOSMESA_GLACTIVEVARYINGNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glAddSwapHintRectWIN(GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)width; (void)height; (*exec)(gl_slb, 1404 /* NFOSMESA_GLADDSWAPHINTRECTWIN */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glAlphaFuncxOES(GLenum func, GLfixed ref) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ref; (*exec)(gl_slb, 1405 /* NFOSMESA_GLALPHAFUNCXOES */, SLB_NARGS(2), gl_pub, &func); } static void APIENTRY exec_glAttachShader(GLuint program, GLuint shader) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)shader; (*exec)(gl_slb, 1406 /* NFOSMESA_GLATTACHSHADER */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glBeginConditionalRender(GLuint id, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 1407 /* NFOSMESA_GLBEGINCONDITIONALRENDER */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glBeginConditionalRenderNV(GLuint id, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 1408 /* NFOSMESA_GLBEGINCONDITIONALRENDERNV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glBeginConditionalRenderNVX(GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1409 /* NFOSMESA_GLBEGINCONDITIONALRENDERNVX */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glBeginPerfMonitorAMD(GLuint monitor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1410 /* NFOSMESA_GLBEGINPERFMONITORAMD */, SLB_NARGS(2), gl_pub, &monitor); } static void APIENTRY exec_glBeginPerfQueryINTEL(GLuint queryHandle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1411 /* NFOSMESA_GLBEGINPERFQUERYINTEL */, SLB_NARGS(2), gl_pub, &queryHandle); } static void APIENTRY exec_glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)id; (*exec)(gl_slb, 1412 /* NFOSMESA_GLBEGINQUERYINDEXED */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBeginTransformFeedback(GLenum primitiveMode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1413 /* NFOSMESA_GLBEGINTRANSFORMFEEDBACK */, SLB_NARGS(2), gl_pub, &primitiveMode); } static void APIENTRY exec_glBeginTransformFeedbackEXT(GLenum primitiveMode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1414 /* NFOSMESA_GLBEGINTRANSFORMFEEDBACKEXT */, SLB_NARGS(2), gl_pub, &primitiveMode); } static void APIENTRY exec_glBeginTransformFeedbackNV(GLenum primitiveMode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1415 /* NFOSMESA_GLBEGINTRANSFORMFEEDBACKNV */, SLB_NARGS(2), gl_pub, &primitiveMode); } static void APIENTRY exec_glBeginVideoCaptureNV(GLuint video_capture_slot) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1416 /* NFOSMESA_GLBEGINVIDEOCAPTURENV */, SLB_NARGS(2), gl_pub, &video_capture_slot); } static void APIENTRY exec_glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)name; (*exec)(gl_slb, 1417 /* NFOSMESA_GLBINDATTRIBLOCATION */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glBindBufferBase(GLenum target, GLuint index, GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)buffer; (*exec)(gl_slb, 1418 /* NFOSMESA_GLBINDBUFFERBASE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindBufferBaseEXT(GLenum target, GLuint index, GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)buffer; (*exec)(gl_slb, 1419 /* NFOSMESA_GLBINDBUFFERBASEEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindBufferBaseNV(GLenum target, GLuint index, GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)buffer; (*exec)(gl_slb, 1420 /* NFOSMESA_GLBINDBUFFERBASENV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)buffer; (void)offset; (*exec)(gl_slb, 1421 /* NFOSMESA_GLBINDBUFFEROFFSETEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindBufferOffsetNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)buffer; (void)offset; (*exec)(gl_slb, 1422 /* NFOSMESA_GLBINDBUFFEROFFSETNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)buffer; (void)offset; (void)size; (*exec)(gl_slb, 1423 /* NFOSMESA_GLBINDBUFFERRANGE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindBufferRangeEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)buffer; (void)offset; (void)size; (*exec)(gl_slb, 1424 /* NFOSMESA_GLBINDBUFFERRANGEEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindBufferRangeNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)buffer; (void)offset; (void)size; (*exec)(gl_slb, 1425 /* NFOSMESA_GLBINDBUFFERRANGENV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)first; (void)count; (void)buffers; (*exec)(gl_slb, 1426 /* NFOSMESA_GLBINDBUFFERSBASE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindBuffersRange(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)first; (void)count; (void)buffers; (void)offsets; (void)sizes; (*exec)(gl_slb, 1427 /* NFOSMESA_GLBINDBUFFERSRANGE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)color; (void)name; (*exec)(gl_slb, 1428 /* NFOSMESA_GLBINDFRAGDATALOCATION */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glBindFragDataLocationEXT(GLuint program, GLuint color, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)color; (void)name; (*exec)(gl_slb, 1429 /* NFOSMESA_GLBINDFRAGDATALOCATIONEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)colorNumber; (void)index; (void)name; (*exec)(gl_slb, 1430 /* NFOSMESA_GLBINDFRAGDATALOCATIONINDEXED */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glBindFramebuffer(GLenum target, GLuint framebuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)framebuffer; (*exec)(gl_slb, 1431 /* NFOSMESA_GLBINDFRAMEBUFFER */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindFramebufferEXT(GLenum target, GLuint framebuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)framebuffer; (*exec)(gl_slb, 1432 /* NFOSMESA_GLBINDFRAMEBUFFEREXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLenum format) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)texture; (void)level; (void)layered; (void)layer; (void)access; (void)format; (*exec)(gl_slb, 1433 /* NFOSMESA_GLBINDIMAGETEXTURE */, SLB_NARGS(2), gl_pub, &unit); } static void APIENTRY exec_glBindImageTextureEXT(GLuint index, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLint format) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)texture; (void)level; (void)layered; (void)layer; (void)access; (void)format; (*exec)(gl_slb, 1434 /* NFOSMESA_GLBINDIMAGETEXTUREEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glBindImageTextures(GLuint first, GLsizei count, const GLuint *textures) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)textures; (*exec)(gl_slb, 1435 /* NFOSMESA_GLBINDIMAGETEXTURES */, SLB_NARGS(2), gl_pub, &first); } static void APIENTRY exec_glBindMultiTextureEXT(GLenum texunit, GLenum target, GLuint texture) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)texture; (*exec)(gl_slb, 1436 /* NFOSMESA_GLBINDMULTITEXTUREEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glBindProgramPipeline(GLuint pipeline) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1437 /* NFOSMESA_GLBINDPROGRAMPIPELINE */, SLB_NARGS(2), gl_pub, &pipeline); } static void APIENTRY exec_glBindRenderbuffer(GLenum target, GLuint renderbuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)renderbuffer; (*exec)(gl_slb, 1438 /* NFOSMESA_GLBINDRENDERBUFFER */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindRenderbufferEXT(GLenum target, GLuint renderbuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)renderbuffer; (*exec)(gl_slb, 1439 /* NFOSMESA_GLBINDRENDERBUFFEREXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindSampler(GLuint unit, GLuint sampler) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)sampler; (*exec)(gl_slb, 1440 /* NFOSMESA_GLBINDSAMPLER */, SLB_NARGS(2), gl_pub, &unit); } static void APIENTRY exec_glBindSamplers(GLuint first, GLsizei count, const GLuint *samplers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)samplers; (*exec)(gl_slb, 1441 /* NFOSMESA_GLBINDSAMPLERS */, SLB_NARGS(2), gl_pub, &first); } static void APIENTRY exec_glBindTextures(GLuint first, GLsizei count, const GLuint *textures) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)textures; (*exec)(gl_slb, 1442 /* NFOSMESA_GLBINDTEXTURES */, SLB_NARGS(2), gl_pub, &first); } static void APIENTRY exec_glBindTransformFeedback(GLenum target, GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (*exec)(gl_slb, 1443 /* NFOSMESA_GLBINDTRANSFORMFEEDBACK */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindTransformFeedbackNV(GLenum target, GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (*exec)(gl_slb, 1444 /* NFOSMESA_GLBINDTRANSFORMFEEDBACKNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBindVertexArray(GLuint array) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1445 /* NFOSMESA_GLBINDVERTEXARRAY */, SLB_NARGS(2), gl_pub, &array); } static void APIENTRY exec_glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)offset; (void)stride; (*exec)(gl_slb, 1446 /* NFOSMESA_GLBINDVERTEXBUFFER */, SLB_NARGS(2), gl_pub, &bindingindex); } static void APIENTRY exec_glBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)buffers; (void)offsets; (void)strides; (*exec)(gl_slb, 1447 /* NFOSMESA_GLBINDVERTEXBUFFERS */, SLB_NARGS(2), gl_pub, &first); } static void APIENTRY exec_glBindVideoCaptureStreamBufferNV(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stream; (void)frame_region; (void)offset; (*exec)(gl_slb, 1448 /* NFOSMESA_GLBINDVIDEOCAPTURESTREAMBUFFERNV */, SLB_NARGS(2), gl_pub, &video_capture_slot); } static void APIENTRY exec_glBindVideoCaptureStreamTextureNV(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stream; (void)frame_region; (void)target; (void)texture; (*exec)(gl_slb, 1449 /* NFOSMESA_GLBINDVIDEOCAPTURESTREAMTEXTURENV */, SLB_NARGS(2), gl_pub, &video_capture_slot); } static void APIENTRY exec_glBitmapxOES(GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)height; (void)xorig; (void)yorig; (void)xmove; (void)ymove; (void)bitmap; (*exec)(gl_slb, 1450 /* NFOSMESA_GLBITMAPXOES */, SLB_NARGS(2), gl_pub, &width); } static void APIENTRY exec_glBlendBarrierNV(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1451 /* NFOSMESA_GLBLENDBARRIERNV */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glBlendColorxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 1452 /* NFOSMESA_GLBLENDCOLORXOES */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glBlendEquationIndexedAMD(GLuint buf, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 1453 /* NFOSMESA_GLBLENDEQUATIONINDEXEDAMD */, SLB_NARGS(2), gl_pub, &buf); } static void APIENTRY exec_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)modeAlpha; (*exec)(gl_slb, 1454 /* NFOSMESA_GLBLENDEQUATIONSEPARATE */, SLB_NARGS(2), gl_pub, &modeRGB); } static void APIENTRY exec_glBlendEquationSeparateIndexedAMD(GLuint buf, GLenum modeRGB, GLenum modeAlpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)modeRGB; (void)modeAlpha; (*exec)(gl_slb, 1455 /* NFOSMESA_GLBLENDEQUATIONSEPARATEINDEXEDAMD */, SLB_NARGS(2), gl_pub, &buf); } static void APIENTRY exec_glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)modeRGB; (void)modeAlpha; (*exec)(gl_slb, 1456 /* NFOSMESA_GLBLENDEQUATIONSEPARATEI */, SLB_NARGS(2), gl_pub, &buf); } static void APIENTRY exec_glBlendEquationSeparateiARB(GLuint buf, GLenum modeRGB, GLenum modeAlpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)modeRGB; (void)modeAlpha; (*exec)(gl_slb, 1457 /* NFOSMESA_GLBLENDEQUATIONSEPARATEIARB */, SLB_NARGS(2), gl_pub, &buf); } static void APIENTRY exec_glBlendEquationi(GLuint buf, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 1458 /* NFOSMESA_GLBLENDEQUATIONI */, SLB_NARGS(2), gl_pub, &buf); } static void APIENTRY exec_glBlendEquationiARB(GLuint buf, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 1459 /* NFOSMESA_GLBLENDEQUATIONIARB */, SLB_NARGS(2), gl_pub, &buf); } static void APIENTRY exec_glBlendFuncIndexedAMD(GLuint buf, GLenum src, GLenum dst) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)src; (void)dst; (*exec)(gl_slb, 1460 /* NFOSMESA_GLBLENDFUNCINDEXEDAMD */, SLB_NARGS(2), gl_pub, &buf); } static void APIENTRY exec_glBlendFuncSeparateIndexedAMD(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)srcRGB; (void)dstRGB; (void)srcAlpha; (void)dstAlpha; (*exec)(gl_slb, 1461 /* NFOSMESA_GLBLENDFUNCSEPARATEINDEXEDAMD */, SLB_NARGS(2), gl_pub, &buf); } static void APIENTRY exec_glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)srcRGB; (void)dstRGB; (void)srcAlpha; (void)dstAlpha; (*exec)(gl_slb, 1462 /* NFOSMESA_GLBLENDFUNCSEPARATEI */, SLB_NARGS(2), gl_pub, &buf); } static void APIENTRY exec_glBlendFuncSeparateiARB(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)srcRGB; (void)dstRGB; (void)srcAlpha; (void)dstAlpha; (*exec)(gl_slb, 1463 /* NFOSMESA_GLBLENDFUNCSEPARATEIARB */, SLB_NARGS(2), gl_pub, &buf); } static void APIENTRY exec_glBlendFunci(GLuint buf, GLenum src, GLenum dst) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)src; (void)dst; (*exec)(gl_slb, 1464 /* NFOSMESA_GLBLENDFUNCI */, SLB_NARGS(2), gl_pub, &buf); } static void APIENTRY exec_glBlendFunciARB(GLuint buf, GLenum src, GLenum dst) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)src; (void)dst; (*exec)(gl_slb, 1465 /* NFOSMESA_GLBLENDFUNCIARB */, SLB_NARGS(2), gl_pub, &buf); } static void APIENTRY exec_glBlendParameteriNV(GLenum pname, GLint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 1466 /* NFOSMESA_GLBLENDPARAMETERINV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)srcY0; (void)srcX1; (void)srcY1; (void)dstX0; (void)dstY0; (void)dstX1; (void)dstY1; (void)mask; (void)filter; (*exec)(gl_slb, 1467 /* NFOSMESA_GLBLITFRAMEBUFFER */, SLB_NARGS(2), gl_pub, &srcX0); } static void APIENTRY exec_glBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)srcY0; (void)srcX1; (void)srcY1; (void)dstX0; (void)dstY0; (void)dstX1; (void)dstY1; (void)mask; (void)filter; (*exec)(gl_slb, 1468 /* NFOSMESA_GLBLITFRAMEBUFFEREXT */, SLB_NARGS(2), gl_pub, &srcX0); } static void APIENTRY exec_glBufferAddressRangeNV(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)address; (void)length; (*exec)(gl_slb, 1469 /* NFOSMESA_GLBUFFERADDRESSRANGENV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glBufferParameteriAPPLE(GLenum target, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 1470 /* NFOSMESA_GLBUFFERPARAMETERIAPPLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)data; (void)flags; (*exec)(gl_slb, 1471 /* NFOSMESA_GLBUFFERSTORAGE */, SLB_NARGS(2), gl_pub, &target); } static GLenum APIENTRY exec_glCheckFramebufferStatus(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLenum)(*exec)(gl_slb, 1472 /* NFOSMESA_GLCHECKFRAMEBUFFERSTATUS */, SLB_NARGS(2), gl_pub, &target); } static GLenum APIENTRY exec_glCheckFramebufferStatusEXT(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLenum)(*exec)(gl_slb, 1473 /* NFOSMESA_GLCHECKFRAMEBUFFERSTATUSEXT */, SLB_NARGS(2), gl_pub, &target); } static GLenum APIENTRY exec_glCheckNamedFramebufferStatusEXT(GLuint framebuffer, GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; return (GLenum)(*exec)(gl_slb, 1474 /* NFOSMESA_GLCHECKNAMEDFRAMEBUFFERSTATUSEXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glClampColor(GLenum target, GLenum clamp) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)clamp; (*exec)(gl_slb, 1475 /* NFOSMESA_GLCLAMPCOLOR */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glClampColorARB(GLenum target, GLenum clamp) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)clamp; (*exec)(gl_slb, 1476 /* NFOSMESA_GLCLAMPCOLORARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glClearAccumxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 1477 /* NFOSMESA_GLCLEARACCUMXOES */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)format; (void)type; (void)data; (*exec)(gl_slb, 1478 /* NFOSMESA_GLCLEARBUFFERDATA */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)offset; (void)size; (void)format; (void)type; (void)data; (*exec)(gl_slb, 1479 /* NFOSMESA_GLCLEARBUFFERSUBDATA */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)drawbuffer; (void)depth; (void)stencil; (*exec)(gl_slb, 1480 /* NFOSMESA_GLCLEARBUFFERFI */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)drawbuffer; (void)value; (*exec)(gl_slb, 1481 /* NFOSMESA_GLCLEARBUFFERFV */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)drawbuffer; (void)value; (*exec)(gl_slb, 1482 /* NFOSMESA_GLCLEARBUFFERIV */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)drawbuffer; (void)value; (*exec)(gl_slb, 1483 /* NFOSMESA_GLCLEARBUFFERUIV */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glClearColorIiEXT(GLint red, GLint green, GLint blue, GLint alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 1484 /* NFOSMESA_GLCLEARCOLORIIEXT */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glClearColorIuiEXT(GLuint red, GLuint green, GLuint blue, GLuint alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 1485 /* NFOSMESA_GLCLEARCOLORIUIEXT */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glClearColorxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 1486 /* NFOSMESA_GLCLEARCOLORXOES */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glClearDebugLogMESA(GLhandleARB obj, GLenum logType, GLenum shaderType) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)logType; (void)shaderType; (*exec)(gl_slb, 1487 /* NFOSMESA_GLCLEARDEBUGLOGMESA */, SLB_NARGS(2), gl_pub, &obj); } static void APIENTRY exec_glClearDepthdNV(GLdouble depth) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1488 /* NFOSMESA_GLCLEARDEPTHDNV */, SLB_NARGS(2), gl_pub, &depth); } static void APIENTRY exec_glClearDepthf(GLfloat d) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1489 /* NFOSMESA_GLCLEARDEPTHF */, SLB_NARGS(2), gl_pub, &d); } static void APIENTRY exec_glClearDepthfOES(GLclampf depth) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1490 /* NFOSMESA_GLCLEARDEPTHFOES */, SLB_NARGS(2), gl_pub, &depth); } static void APIENTRY exec_glClearDepthxOES(GLfixed depth) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1491 /* NFOSMESA_GLCLEARDEPTHXOES */, SLB_NARGS(2), gl_pub, &depth); } static void APIENTRY exec_glClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)format; (void)type; (void)data; (*exec)(gl_slb, 1492 /* NFOSMESA_GLCLEARNAMEDBUFFERDATAEXT */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)offset; (void)size; (void)format; (void)type; (void)data; (*exec)(gl_slb, 1493 /* NFOSMESA_GLCLEARNAMEDBUFFERSUBDATAEXT */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)format; (void)type; (void)data; (*exec)(gl_slb, 1494 /* NFOSMESA_GLCLEARTEXIMAGE */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glClearTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)format; (void)type; (void)data; (*exec)(gl_slb, 1495 /* NFOSMESA_GLCLEARTEXSUBIMAGE */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glClientAttribDefaultEXT(GLbitfield mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1496 /* NFOSMESA_GLCLIENTATTRIBDEFAULTEXT */, SLB_NARGS(2), gl_pub, &mask); } static GLenum APIENTRY exec_glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)flags; (void)timeout; return (GLenum)(*exec)(gl_slb, 1497 /* NFOSMESA_GLCLIENTWAITSYNC */, SLB_NARGS(2), gl_pub, &sync); } static void APIENTRY exec_glClipPlanefOES(GLenum plane, const GLfloat *equation) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)equation; (*exec)(gl_slb, 1498 /* NFOSMESA_GLCLIPPLANEFOES */, SLB_NARGS(2), gl_pub, &plane); } static void APIENTRY exec_glClipPlanexOES(GLenum plane, const GLfixed *equation) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)equation; (*exec)(gl_slb, 1499 /* NFOSMESA_GLCLIPPLANEXOES */, SLB_NARGS(2), gl_pub, &plane); } static void APIENTRY exec_glColor3xOES(GLfixed red, GLfixed green, GLfixed blue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (*exec)(gl_slb, 1500 /* NFOSMESA_GLCOLOR3XOES */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor3xvOES(const GLfixed *components) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1501 /* NFOSMESA_GLCOLOR3XVOES */, SLB_NARGS(2), gl_pub, &components); } static void APIENTRY exec_glColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)green; (void)blue; (void)alpha; (*exec)(gl_slb, 1502 /* NFOSMESA_GLCOLOR4XOES */, SLB_NARGS(2), gl_pub, &red); } static void APIENTRY exec_glColor4xvOES(const GLfixed *components) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1503 /* NFOSMESA_GLCOLOR4XVOES */, SLB_NARGS(2), gl_pub, &components); } static void APIENTRY exec_glColorFormatNV(GLint size, GLenum type, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (*exec)(gl_slb, 1504 /* NFOSMESA_GLCOLORFORMATNV */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glColorMaskIndexedEXT(GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)r; (void)g; (void)b; (void)a; (*exec)(gl_slb, 1505 /* NFOSMESA_GLCOLORMASKINDEXEDEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glColorMaski(GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)r; (void)g; (void)b; (void)a; (*exec)(gl_slb, 1506 /* NFOSMESA_GLCOLORMASKI */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glColorP3ui(GLenum type, GLuint color) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)color; (*exec)(gl_slb, 1507 /* NFOSMESA_GLCOLORP3UI */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glColorP3uiv(GLenum type, const GLuint *color) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)color; (*exec)(gl_slb, 1508 /* NFOSMESA_GLCOLORP3UIV */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glColorP4ui(GLenum type, GLuint color) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)color; (*exec)(gl_slb, 1509 /* NFOSMESA_GLCOLORP4UI */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glColorP4uiv(GLenum type, const GLuint *color) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)color; (*exec)(gl_slb, 1510 /* NFOSMESA_GLCOLORP4UIV */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glCompileShader(GLuint shader) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1511 /* NFOSMESA_GLCOMPILESHADER */, SLB_NARGS(2), gl_pub, &shader); } static void APIENTRY exec_glCompileShaderIncludeARB(GLuint shader, GLsizei count, const GLchar *const *path, const GLint *length) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)path; (void)length; (*exec)(gl_slb, 1512 /* NFOSMESA_GLCOMPILESHADERINCLUDEARB */, SLB_NARGS(2), gl_pub, &shader); } static void APIENTRY exec_glCompressedMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)width; (void)border; (void)imageSize; (void)bits; (*exec)(gl_slb, 1513 /* NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glCompressedMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)width; (void)height; (void)border; (void)imageSize; (void)bits; (*exec)(gl_slb, 1514 /* NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glCompressedMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)width; (void)height; (void)depth; (void)border; (void)imageSize; (void)bits; (*exec)(gl_slb, 1515 /* NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE3DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glCompressedMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)width; (void)format; (void)imageSize; (void)bits; (*exec)(gl_slb, 1516 /* NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glCompressedMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)yoffset; (void)width; (void)height; (void)format; (void)imageSize; (void)bits; (*exec)(gl_slb, 1517 /* NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glCompressedMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)format; (void)imageSize; (void)bits; (*exec)(gl_slb, 1518 /* NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE3DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glCompressedTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)width; (void)border; (void)imageSize; (void)bits; (*exec)(gl_slb, 1519 /* NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCompressedTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)width; (void)height; (void)border; (void)imageSize; (void)bits; (*exec)(gl_slb, 1520 /* NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCompressedTextureImage3DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)width; (void)height; (void)depth; (void)border; (void)imageSize; (void)bits; (*exec)(gl_slb, 1521 /* NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE3DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCompressedTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)width; (void)format; (void)imageSize; (void)bits; (*exec)(gl_slb, 1522 /* NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCompressedTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)yoffset; (void)width; (void)height; (void)format; (void)imageSize; (void)bits; (*exec)(gl_slb, 1523 /* NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCompressedTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)format; (void)imageSize; (void)bits; (*exec)(gl_slb, 1524 /* NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE3DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glConvolutionParameterxOES(GLenum target, GLenum pname, GLfixed param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 1525 /* NFOSMESA_GLCONVOLUTIONPARAMETERXOES */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glConvolutionParameterxvOES(GLenum target, GLenum pname, const GLfixed *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1526 /* NFOSMESA_GLCONVOLUTIONPARAMETERXVOES */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)writeTarget; (void)readOffset; (void)writeOffset; (void)size; (*exec)(gl_slb, 1527 /* NFOSMESA_GLCOPYBUFFERSUBDATA */, SLB_NARGS(2), gl_pub, &readTarget); } static void APIENTRY exec_glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)srcTarget; (void)srcLevel; (void)srcX; (void)srcY; (void)srcZ; (void)dstName; (void)dstTarget; (void)dstLevel; (void)dstX; (void)dstY; (void)dstZ; (void)srcWidth; (void)srcHeight; (void)srcDepth; (*exec)(gl_slb, 1528 /* NFOSMESA_GLCOPYIMAGESUBDATA */, SLB_NARGS(2), gl_pub, &srcName); } static void APIENTRY exec_glCopyImageSubDataNV(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)srcTarget; (void)srcLevel; (void)srcX; (void)srcY; (void)srcZ; (void)dstName; (void)dstTarget; (void)dstLevel; (void)dstX; (void)dstY; (void)dstZ; (void)width; (void)height; (void)depth; (*exec)(gl_slb, 1529 /* NFOSMESA_GLCOPYIMAGESUBDATANV */, SLB_NARGS(2), gl_pub, &srcName); } static void APIENTRY exec_glCopyMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)x; (void)y; (void)width; (void)border; (*exec)(gl_slb, 1530 /* NFOSMESA_GLCOPYMULTITEXIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glCopyMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)x; (void)y; (void)width; (void)height; (void)border; (*exec)(gl_slb, 1531 /* NFOSMESA_GLCOPYMULTITEXIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glCopyMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)x; (void)y; (void)width; (*exec)(gl_slb, 1532 /* NFOSMESA_GLCOPYMULTITEXSUBIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glCopyMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)yoffset; (void)x; (void)y; (void)width; (void)height; (*exec)(gl_slb, 1533 /* NFOSMESA_GLCOPYMULTITEXSUBIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glCopyMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)x; (void)y; (void)width; (void)height; (*exec)(gl_slb, 1534 /* NFOSMESA_GLCOPYMULTITEXSUBIMAGE3DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glCopyPathNV(GLuint resultPath, GLuint srcPath) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)srcPath; (*exec)(gl_slb, 1535 /* NFOSMESA_GLCOPYPATHNV */, SLB_NARGS(2), gl_pub, &resultPath); } static void APIENTRY exec_glCopyTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)x; (void)y; (void)width; (void)border; (*exec)(gl_slb, 1536 /* NFOSMESA_GLCOPYTEXTUREIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCopyTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)x; (void)y; (void)width; (void)height; (void)border; (*exec)(gl_slb, 1537 /* NFOSMESA_GLCOPYTEXTUREIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCopyTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)x; (void)y; (void)width; (*exec)(gl_slb, 1538 /* NFOSMESA_GLCOPYTEXTURESUBIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCopyTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)yoffset; (void)x; (void)y; (void)width; (void)height; (*exec)(gl_slb, 1539 /* NFOSMESA_GLCOPYTEXTURESUBIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCopyTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)x; (void)y; (void)width; (void)height; (*exec)(gl_slb, 1540 /* NFOSMESA_GLCOPYTEXTURESUBIMAGE3DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pathNameType; (void)paths; (void)pathBase; (void)coverMode; (void)transformType; (void)transformValues; (*exec)(gl_slb, 1541 /* NFOSMESA_GLCOVERFILLPATHINSTANCEDNV */, SLB_NARGS(2), gl_pub, &numPaths); } static void APIENTRY exec_glCoverFillPathNV(GLuint path, GLenum coverMode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coverMode; (*exec)(gl_slb, 1542 /* NFOSMESA_GLCOVERFILLPATHNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pathNameType; (void)paths; (void)pathBase; (void)coverMode; (void)transformType; (void)transformValues; (*exec)(gl_slb, 1543 /* NFOSMESA_GLCOVERSTROKEPATHINSTANCEDNV */, SLB_NARGS(2), gl_pub, &numPaths); } static void APIENTRY exec_glCoverStrokePathNV(GLuint path, GLenum coverMode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coverMode; (*exec)(gl_slb, 1544 /* NFOSMESA_GLCOVERSTROKEPATHNV */, SLB_NARGS(2), gl_pub, &path); } static GLhandleARB APIENTRY exec_glCreateDebugObjectMESA(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLhandleARB)(*exec)(gl_slb, 1545 /* NFOSMESA_GLCREATEDEBUGOBJECTMESA */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glCreatePerfQueryINTEL(GLuint queryId, GLuint *queryHandle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)queryHandle; (*exec)(gl_slb, 1546 /* NFOSMESA_GLCREATEPERFQUERYINTEL */, SLB_NARGS(2), gl_pub, &queryId); } static GLuint APIENTRY exec_glCreateProgram(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLuint)(*exec)(gl_slb, 1547 /* NFOSMESA_GLCREATEPROGRAM */, SLB_NARGS(2), gl_pub, NULL); } static GLuint APIENTRY exec_glCreateShader(GLenum type) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLuint)(*exec)(gl_slb, 1548 /* NFOSMESA_GLCREATESHADER */, SLB_NARGS(2), gl_pub, &type); } static GLuint APIENTRY exec_glCreateShaderProgramEXT(GLenum type, const GLchar *string) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)string; return (GLuint)(*exec)(gl_slb, 1549 /* NFOSMESA_GLCREATESHADERPROGRAMEXT */, SLB_NARGS(2), gl_pub, &type); } static GLuint APIENTRY exec_glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const *strings) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)strings; return (GLuint)(*exec)(gl_slb, 1550 /* NFOSMESA_GLCREATESHADERPROGRAMV */, SLB_NARGS(2), gl_pub, &type); } static GLsync APIENTRY exec_glCreateSyncFromCLeventARB(struct _cl_context *context, struct _cl_event *event, GLbitfield flags) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)event; (void)flags; return (GLsync)(*exec)(gl_slb, 1551 /* NFOSMESA_GLCREATESYNCFROMCLEVENTARB */, SLB_NARGS(2), gl_pub, &context); } static void APIENTRY exec_glDebugMessageCallback(GLDEBUGPROC callback, const void *userParam) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)userParam; (*exec)(gl_slb, 1552 /* NFOSMESA_GLDEBUGMESSAGECALLBACK */, SLB_NARGS(2), gl_pub, &callback); } static void APIENTRY exec_glDebugMessageCallbackAMD(GLDEBUGPROCAMD callback, void *userParam) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)userParam; (*exec)(gl_slb, 1553 /* NFOSMESA_GLDEBUGMESSAGECALLBACKAMD */, SLB_NARGS(2), gl_pub, &callback); } static void APIENTRY exec_glDebugMessageCallbackARB(GLDEBUGPROCARB callback, const void *userParam) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)userParam; (*exec)(gl_slb, 1554 /* NFOSMESA_GLDEBUGMESSAGECALLBACKARB */, SLB_NARGS(2), gl_pub, &callback); } static void APIENTRY exec_glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)severity; (void)count; (void)ids; (void)enabled; (*exec)(gl_slb, 1555 /* NFOSMESA_GLDEBUGMESSAGECONTROL */, SLB_NARGS(2), gl_pub, &source); } static void APIENTRY exec_glDebugMessageControlARB(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)severity; (void)count; (void)ids; (void)enabled; (*exec)(gl_slb, 1556 /* NFOSMESA_GLDEBUGMESSAGECONTROLARB */, SLB_NARGS(2), gl_pub, &source); } static void APIENTRY exec_glDebugMessageEnableAMD(GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)severity; (void)count; (void)ids; (void)enabled; (*exec)(gl_slb, 1557 /* NFOSMESA_GLDEBUGMESSAGEENABLEAMD */, SLB_NARGS(2), gl_pub, &category); } static void APIENTRY exec_glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)id; (void)severity; (void)length; (void)buf; (*exec)(gl_slb, 1558 /* NFOSMESA_GLDEBUGMESSAGEINSERT */, SLB_NARGS(2), gl_pub, &source); } static void APIENTRY exec_glDebugMessageInsertAMD(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)severity; (void)id; (void)length; (void)buf; (*exec)(gl_slb, 1559 /* NFOSMESA_GLDEBUGMESSAGEINSERTAMD */, SLB_NARGS(2), gl_pub, &category); } static void APIENTRY exec_glDebugMessageInsertARB(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)id; (void)severity; (void)length; (void)buf; (*exec)(gl_slb, 1560 /* NFOSMESA_GLDEBUGMESSAGEINSERTARB */, SLB_NARGS(2), gl_pub, &source); } static void APIENTRY exec_glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)framebuffers; (*exec)(gl_slb, 1561 /* NFOSMESA_GLDELETEFRAMEBUFFERS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)framebuffers; (*exec)(gl_slb, 1562 /* NFOSMESA_GLDELETEFRAMEBUFFERSEXT */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteNamedStringARB(GLint namelen, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; (*exec)(gl_slb, 1563 /* NFOSMESA_GLDELETENAMEDSTRINGARB */, SLB_NARGS(2), gl_pub, &namelen); } static void APIENTRY exec_glDeleteNamesAMD(GLenum identifier, GLuint num, const GLuint *names) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)num; (void)names; (*exec)(gl_slb, 1564 /* NFOSMESA_GLDELETENAMESAMD */, SLB_NARGS(2), gl_pub, &identifier); } static void APIENTRY exec_glDeleteObjectBufferATI(GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1565 /* NFOSMESA_GLDELETEOBJECTBUFFERATI */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glDeletePathsNV(GLuint path, GLsizei range) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)range; (*exec)(gl_slb, 1566 /* NFOSMESA_GLDELETEPATHSNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glDeletePerfMonitorsAMD(GLsizei n, GLuint *monitors) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)monitors; (*exec)(gl_slb, 1567 /* NFOSMESA_GLDELETEPERFMONITORSAMD */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeletePerfQueryINTEL(GLuint queryHandle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1568 /* NFOSMESA_GLDELETEPERFQUERYINTEL */, SLB_NARGS(2), gl_pub, &queryHandle); } static void APIENTRY exec_glDeleteProgram(GLuint program) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1569 /* NFOSMESA_GLDELETEPROGRAM */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pipelines; (*exec)(gl_slb, 1570 /* NFOSMESA_GLDELETEPROGRAMPIPELINES */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)renderbuffers; (*exec)(gl_slb, 1571 /* NFOSMESA_GLDELETERENDERBUFFERS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)renderbuffers; (*exec)(gl_slb, 1572 /* NFOSMESA_GLDELETERENDERBUFFERSEXT */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteSamplers(GLsizei count, const GLuint *samplers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samplers; (*exec)(gl_slb, 1573 /* NFOSMESA_GLDELETESAMPLERS */, SLB_NARGS(2), gl_pub, &count); } static void APIENTRY exec_glDeleteShader(GLuint shader) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1574 /* NFOSMESA_GLDELETESHADER */, SLB_NARGS(2), gl_pub, &shader); } static void APIENTRY exec_glDeleteSync(GLsync sync) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1575 /* NFOSMESA_GLDELETESYNC */, SLB_NARGS(2), gl_pub, &sync); } static void APIENTRY exec_glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ids; (*exec)(gl_slb, 1576 /* NFOSMESA_GLDELETETRANSFORMFEEDBACKS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteTransformFeedbacksNV(GLsizei n, const GLuint *ids) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ids; (*exec)(gl_slb, 1577 /* NFOSMESA_GLDELETETRANSFORMFEEDBACKSNV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteVertexArrays(GLsizei n, const GLuint *arrays) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)arrays; (*exec)(gl_slb, 1578 /* NFOSMESA_GLDELETEVERTEXARRAYS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDepthBoundsdNV(GLdouble zmin, GLdouble zmax) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)zmax; (*exec)(gl_slb, 1579 /* NFOSMESA_GLDEPTHBOUNDSDNV */, SLB_NARGS(2), gl_pub, &zmin); } static void APIENTRY exec_glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 1580 /* NFOSMESA_GLDEPTHRANGEARRAYV */, SLB_NARGS(2), gl_pub, &first); } static void APIENTRY exec_glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)n; (void)f; (*exec)(gl_slb, 1581 /* NFOSMESA_GLDEPTHRANGEINDEXED */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glDepthRangedNV(GLdouble zNear, GLdouble zFar) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)zFar; (*exec)(gl_slb, 1582 /* NFOSMESA_GLDEPTHRANGEDNV */, SLB_NARGS(2), gl_pub, &zNear); } static void APIENTRY exec_glDepthRangef(GLfloat n, GLfloat f) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)f; (*exec)(gl_slb, 1583 /* NFOSMESA_GLDEPTHRANGEF */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDepthRangefOES(GLclampf n, GLclampf f) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)f; (*exec)(gl_slb, 1584 /* NFOSMESA_GLDEPTHRANGEFOES */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDepthRangexOES(GLfixed n, GLfixed f) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)f; (*exec)(gl_slb, 1585 /* NFOSMESA_GLDEPTHRANGEXOES */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDetachShader(GLuint program, GLuint shader) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)shader; (*exec)(gl_slb, 1586 /* NFOSMESA_GLDETACHSHADER */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glDisableClientStateIndexedEXT(GLenum array, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (*exec)(gl_slb, 1587 /* NFOSMESA_GLDISABLECLIENTSTATEINDEXEDEXT */, SLB_NARGS(2), gl_pub, &array); } static void APIENTRY exec_glDisableClientStateiEXT(GLenum array, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (*exec)(gl_slb, 1588 /* NFOSMESA_GLDISABLECLIENTSTATEIEXT */, SLB_NARGS(2), gl_pub, &array); } static void APIENTRY exec_glDisableIndexedEXT(GLenum target, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (*exec)(gl_slb, 1589 /* NFOSMESA_GLDISABLEINDEXEDEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glDisableVertexArrayAttribEXT(GLuint vaobj, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (*exec)(gl_slb, 1590 /* NFOSMESA_GLDISABLEVERTEXARRAYATTRIBEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glDisableVertexArrayEXT(GLuint vaobj, GLenum array) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)array; (*exec)(gl_slb, 1591 /* NFOSMESA_GLDISABLEVERTEXARRAYEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glDisableVertexAttribAPPLE(GLuint index, GLenum pname) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (*exec)(gl_slb, 1592 /* NFOSMESA_GLDISABLEVERTEXATTRIBAPPLE */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glDisableVertexAttribArray(GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1593 /* NFOSMESA_GLDISABLEVERTEXATTRIBARRAY */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glDisablei(GLenum target, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (*exec)(gl_slb, 1594 /* NFOSMESA_GLDISABLEI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)num_groups_y; (void)num_groups_z; (*exec)(gl_slb, 1595 /* NFOSMESA_GLDISPATCHCOMPUTE */, SLB_NARGS(2), gl_pub, &num_groups_x); } static void APIENTRY exec_glDispatchComputeGroupSizeARB(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)num_groups_y; (void)num_groups_z; (void)group_size_x; (void)group_size_y; (void)group_size_z; (*exec)(gl_slb, 1596 /* NFOSMESA_GLDISPATCHCOMPUTEGROUPSIZEARB */, SLB_NARGS(2), gl_pub, &num_groups_x); } static void APIENTRY exec_glDispatchComputeIndirect(GLintptr indirect) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1597 /* NFOSMESA_GLDISPATCHCOMPUTEINDIRECT */, SLB_NARGS(2), gl_pub, &indirect); } static void APIENTRY exec_glDrawArraysIndirect(GLenum mode, const void *indirect) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)indirect; (*exec)(gl_slb, 1598 /* NFOSMESA_GLDRAWARRAYSINDIRECT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)first; (void)count; (void)instancecount; (*exec)(gl_slb, 1599 /* NFOSMESA_GLDRAWARRAYSINSTANCED */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawArraysInstancedARB(GLenum mode, GLint first, GLsizei count, GLsizei primcount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)first; (void)count; (void)primcount; (*exec)(gl_slb, 1600 /* NFOSMESA_GLDRAWARRAYSINSTANCEDARB */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)first; (void)count; (void)instancecount; (void)baseinstance; (*exec)(gl_slb, 1601 /* NFOSMESA_GLDRAWARRAYSINSTANCEDBASEINSTANCE */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawArraysInstancedEXT(GLenum mode, GLint start, GLsizei count, GLsizei primcount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)count; (void)primcount; (*exec)(gl_slb, 1602 /* NFOSMESA_GLDRAWARRAYSINSTANCEDEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawBuffers(GLsizei n, const GLenum *bufs) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufs; (*exec)(gl_slb, 1603 /* NFOSMESA_GLDRAWBUFFERS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)type; (void)indices; (void)basevertex; (*exec)(gl_slb, 1604 /* NFOSMESA_GLDRAWELEMENTSBASEVERTEX */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)indirect; (*exec)(gl_slb, 1605 /* NFOSMESA_GLDRAWELEMENTSINDIRECT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)type; (void)indices; (void)instancecount; (*exec)(gl_slb, 1606 /* NFOSMESA_GLDRAWELEMENTSINSTANCED */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawElementsInstancedARB(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)type; (void)indices; (void)primcount; (*exec)(gl_slb, 1607 /* NFOSMESA_GLDRAWELEMENTSINSTANCEDARB */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)type; (void)indices; (void)instancecount; (void)baseinstance; (*exec)(gl_slb, 1608 /* NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEINSTANCE */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)type; (void)indices; (void)instancecount; (void)basevertex; (*exec)(gl_slb, 1609 /* NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEVERTEX */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)type; (void)indices; (void)instancecount; (void)basevertex; (void)baseinstance; (*exec)(gl_slb, 1610 /* NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)type; (void)indices; (void)primcount; (*exec)(gl_slb, 1611 /* NFOSMESA_GLDRAWELEMENTSINSTANCEDEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)end; (void)count; (void)type; (void)indices; (void)basevertex; (*exec)(gl_slb, 1612 /* NFOSMESA_GLDRAWRANGEELEMENTSBASEVERTEX */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawTextureNV(GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)sampler; (void)x0; (void)y0; (void)x1; (void)y1; (void)z; (void)s0; (void)t0; (void)s1; (void)t1; (*exec)(gl_slb, 1613 /* NFOSMESA_GLDRAWTEXTURENV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glDrawTransformFeedback(GLenum mode, GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (*exec)(gl_slb, 1614 /* NFOSMESA_GLDRAWTRANSFORMFEEDBACK */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (void)instancecount; (*exec)(gl_slb, 1615 /* NFOSMESA_GLDRAWTRANSFORMFEEDBACKINSTANCED */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawTransformFeedbackNV(GLenum mode, GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (*exec)(gl_slb, 1616 /* NFOSMESA_GLDRAWTRANSFORMFEEDBACKNV */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (void)stream; (*exec)(gl_slb, 1617 /* NFOSMESA_GLDRAWTRANSFORMFEEDBACKSTREAM */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (void)stream; (void)instancecount; (*exec)(gl_slb, 1618 /* NFOSMESA_GLDRAWTRANSFORMFEEDBACKSTREAMINSTANCED */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glEdgeFlagFormatNV(GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1619 /* NFOSMESA_GLEDGEFLAGFORMATNV */, SLB_NARGS(2), gl_pub, &stride); } static void APIENTRY exec_glEnableClientStateIndexedEXT(GLenum array, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (*exec)(gl_slb, 1620 /* NFOSMESA_GLENABLECLIENTSTATEINDEXEDEXT */, SLB_NARGS(2), gl_pub, &array); } static void APIENTRY exec_glEnableClientStateiEXT(GLenum array, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (*exec)(gl_slb, 1621 /* NFOSMESA_GLENABLECLIENTSTATEIEXT */, SLB_NARGS(2), gl_pub, &array); } static void APIENTRY exec_glEnableIndexedEXT(GLenum target, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (*exec)(gl_slb, 1622 /* NFOSMESA_GLENABLEINDEXEDEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glEnableVertexArrayAttribEXT(GLuint vaobj, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (*exec)(gl_slb, 1623 /* NFOSMESA_GLENABLEVERTEXARRAYATTRIBEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glEnableVertexArrayEXT(GLuint vaobj, GLenum array) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)array; (*exec)(gl_slb, 1624 /* NFOSMESA_GLENABLEVERTEXARRAYEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glEnableVertexAttribAPPLE(GLuint index, GLenum pname) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (*exec)(gl_slb, 1625 /* NFOSMESA_GLENABLEVERTEXATTRIBAPPLE */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glEnableVertexAttribArray(GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1626 /* NFOSMESA_GLENABLEVERTEXATTRIBARRAY */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glEnablei(GLenum target, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (*exec)(gl_slb, 1627 /* NFOSMESA_GLENABLEI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glEndConditionalRender(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1628 /* NFOSMESA_GLENDCONDITIONALRENDER */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glEndConditionalRenderNV(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1629 /* NFOSMESA_GLENDCONDITIONALRENDERNV */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glEndConditionalRenderNVX(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1630 /* NFOSMESA_GLENDCONDITIONALRENDERNVX */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glEndPerfMonitorAMD(GLuint monitor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1631 /* NFOSMESA_GLENDPERFMONITORAMD */, SLB_NARGS(2), gl_pub, &monitor); } static void APIENTRY exec_glEndPerfQueryINTEL(GLuint queryHandle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1632 /* NFOSMESA_GLENDPERFQUERYINTEL */, SLB_NARGS(2), gl_pub, &queryHandle); } static void APIENTRY exec_glEndQueryIndexed(GLenum target, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (*exec)(gl_slb, 1633 /* NFOSMESA_GLENDQUERYINDEXED */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glEndTransformFeedback(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1634 /* NFOSMESA_GLENDTRANSFORMFEEDBACK */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glEndTransformFeedbackEXT(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1635 /* NFOSMESA_GLENDTRANSFORMFEEDBACKEXT */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glEndTransformFeedbackNV(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1636 /* NFOSMESA_GLENDTRANSFORMFEEDBACKNV */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glEndVideoCaptureNV(GLuint video_capture_slot) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1637 /* NFOSMESA_GLENDVIDEOCAPTURENV */, SLB_NARGS(2), gl_pub, &video_capture_slot); } static void APIENTRY exec_glEvalCoord1xOES(GLfixed u) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1638 /* NFOSMESA_GLEVALCOORD1XOES */, SLB_NARGS(2), gl_pub, &u); } static void APIENTRY exec_glEvalCoord1xvOES(const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1639 /* NFOSMESA_GLEVALCOORD1XVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glEvalCoord2xOES(GLfixed u, GLfixed v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 1640 /* NFOSMESA_GLEVALCOORD2XOES */, SLB_NARGS(2), gl_pub, &u); } static void APIENTRY exec_glEvalCoord2xvOES(const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1641 /* NFOSMESA_GLEVALCOORD2XVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glFeedbackBufferxOES(GLsizei n, GLenum type, const GLfixed *buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)buffer; (*exec)(gl_slb, 1642 /* NFOSMESA_GLFEEDBACKBUFFERXOES */, SLB_NARGS(2), gl_pub, &n); } static GLsync APIENTRY exec_glFenceSync(GLenum condition, GLbitfield flags) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)flags; return (GLsync)(*exec)(gl_slb, 1643 /* NFOSMESA_GLFENCESYNC */, SLB_NARGS(2), gl_pub, &condition); } static void APIENTRY exec_glFinishRenderAPPLE(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1644 /* NFOSMESA_GLFINISHRENDERAPPLE */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)length; (*exec)(gl_slb, 1645 /* NFOSMESA_GLFLUSHMAPPEDBUFFERRANGE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFlushMappedBufferRangeAPPLE(GLenum target, GLintptr offset, GLsizeiptr size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (*exec)(gl_slb, 1646 /* NFOSMESA_GLFLUSHMAPPEDBUFFERRANGEAPPLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFlushMappedNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)length; (*exec)(gl_slb, 1647 /* NFOSMESA_GLFLUSHMAPPEDNAMEDBUFFERRANGEEXT */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glFlushRenderAPPLE(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1648 /* NFOSMESA_GLFLUSHRENDERAPPLE */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glFlushStaticDataIBM(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1649 /* NFOSMESA_GLFLUSHSTATICDATAIBM */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFogCoordFormatNV(GLenum type, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (*exec)(gl_slb, 1650 /* NFOSMESA_GLFOGCOORDFORMATNV */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glFogxOES(GLenum pname, GLfixed param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 1651 /* NFOSMESA_GLFOGXOES */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glFogxvOES(GLenum pname, const GLfixed *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 1652 /* NFOSMESA_GLFOGXVOES */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glFrameTerminatorGREMEDY(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1653 /* NFOSMESA_GLFRAMETERMINATORGREMEDY */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glFramebufferDrawBufferEXT(GLuint framebuffer, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 1654 /* NFOSMESA_GLFRAMEBUFFERDRAWBUFFEREXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glFramebufferDrawBuffersEXT(GLuint framebuffer, GLsizei n, const GLenum *bufs) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)n; (void)bufs; (*exec)(gl_slb, 1655 /* NFOSMESA_GLFRAMEBUFFERDRAWBUFFERSEXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glFramebufferParameteri(GLenum target, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 1656 /* NFOSMESA_GLFRAMEBUFFERPARAMETERI */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferReadBufferEXT(GLuint framebuffer, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 1657 /* NFOSMESA_GLFRAMEBUFFERREADBUFFEREXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)renderbuffertarget; (void)renderbuffer; (*exec)(gl_slb, 1658 /* NFOSMESA_GLFRAMEBUFFERRENDERBUFFER */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)renderbuffertarget; (void)renderbuffer; (*exec)(gl_slb, 1659 /* NFOSMESA_GLFRAMEBUFFERRENDERBUFFEREXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)texture; (void)level; (*exec)(gl_slb, 1660 /* NFOSMESA_GLFRAMEBUFFERTEXTURE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)textarget; (void)texture; (void)level; (*exec)(gl_slb, 1661 /* NFOSMESA_GLFRAMEBUFFERTEXTURE1D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)textarget; (void)texture; (void)level; (*exec)(gl_slb, 1662 /* NFOSMESA_GLFRAMEBUFFERTEXTURE1DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)textarget; (void)texture; (void)level; (*exec)(gl_slb, 1663 /* NFOSMESA_GLFRAMEBUFFERTEXTURE2D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)textarget; (void)texture; (void)level; (*exec)(gl_slb, 1664 /* NFOSMESA_GLFRAMEBUFFERTEXTURE2DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)textarget; (void)texture; (void)level; (void)zoffset; (*exec)(gl_slb, 1665 /* NFOSMESA_GLFRAMEBUFFERTEXTURE3D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)textarget; (void)texture; (void)level; (void)zoffset; (*exec)(gl_slb, 1666 /* NFOSMESA_GLFRAMEBUFFERTEXTURE3DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTextureARB(GLenum target, GLenum attachment, GLuint texture, GLint level) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)texture; (void)level; (*exec)(gl_slb, 1667 /* NFOSMESA_GLFRAMEBUFFERTEXTUREARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTextureEXT(GLenum target, GLenum attachment, GLuint texture, GLint level) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)texture; (void)level; (*exec)(gl_slb, 1668 /* NFOSMESA_GLFRAMEBUFFERTEXTUREEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTextureFaceARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)texture; (void)level; (void)face; (*exec)(gl_slb, 1669 /* NFOSMESA_GLFRAMEBUFFERTEXTUREFACEARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTextureFaceEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)texture; (void)level; (void)face; (*exec)(gl_slb, 1670 /* NFOSMESA_GLFRAMEBUFFERTEXTUREFACEEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)texture; (void)level; (void)layer; (*exec)(gl_slb, 1671 /* NFOSMESA_GLFRAMEBUFFERTEXTURELAYER */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTextureLayerARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)texture; (void)level; (void)layer; (*exec)(gl_slb, 1672 /* NFOSMESA_GLFRAMEBUFFERTEXTURELAYERARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTextureLayerEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)texture; (void)level; (void)layer; (*exec)(gl_slb, 1673 /* NFOSMESA_GLFRAMEBUFFERTEXTURELAYEREXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFrustumfOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)r; (void)b; (void)t; (void)n; (void)f; (*exec)(gl_slb, 1674 /* NFOSMESA_GLFRUSTUMFOES */, SLB_NARGS(2), gl_pub, &l); } static void APIENTRY exec_glFrustumxOES(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)r; (void)b; (void)t; (void)n; (void)f; (*exec)(gl_slb, 1675 /* NFOSMESA_GLFRUSTUMXOES */, SLB_NARGS(2), gl_pub, &l); } static void APIENTRY exec_glGenFramebuffers(GLsizei n, GLuint *framebuffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)framebuffers; (*exec)(gl_slb, 1676 /* NFOSMESA_GLGENFRAMEBUFFERS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenFramebuffersEXT(GLsizei n, GLuint *framebuffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)framebuffers; (*exec)(gl_slb, 1677 /* NFOSMESA_GLGENFRAMEBUFFERSEXT */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenNamesAMD(GLenum identifier, GLuint num, GLuint *names) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)num; (void)names; (*exec)(gl_slb, 1678 /* NFOSMESA_GLGENNAMESAMD */, SLB_NARGS(2), gl_pub, &identifier); } static GLuint APIENTRY exec_glGenPathsNV(GLsizei range) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLuint)(*exec)(gl_slb, 1679 /* NFOSMESA_GLGENPATHSNV */, SLB_NARGS(2), gl_pub, &range); } static void APIENTRY exec_glGenPerfMonitorsAMD(GLsizei n, GLuint *monitors) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)monitors; (*exec)(gl_slb, 1680 /* NFOSMESA_GLGENPERFMONITORSAMD */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenProgramPipelines(GLsizei n, GLuint *pipelines) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pipelines; (*exec)(gl_slb, 1681 /* NFOSMESA_GLGENPROGRAMPIPELINES */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)renderbuffers; (*exec)(gl_slb, 1682 /* NFOSMESA_GLGENRENDERBUFFERS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)renderbuffers; (*exec)(gl_slb, 1683 /* NFOSMESA_GLGENRENDERBUFFERSEXT */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenSamplers(GLsizei count, GLuint *samplers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samplers; (*exec)(gl_slb, 1684 /* NFOSMESA_GLGENSAMPLERS */, SLB_NARGS(2), gl_pub, &count); } static void APIENTRY exec_glGenTransformFeedbacks(GLsizei n, GLuint *ids) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ids; (*exec)(gl_slb, 1685 /* NFOSMESA_GLGENTRANSFORMFEEDBACKS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenTransformFeedbacksNV(GLsizei n, GLuint *ids) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ids; (*exec)(gl_slb, 1686 /* NFOSMESA_GLGENTRANSFORMFEEDBACKSNV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenVertexArrays(GLsizei n, GLuint *arrays) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)arrays; (*exec)(gl_slb, 1687 /* NFOSMESA_GLGENVERTEXARRAYS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glGenerateMipmap(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1688 /* NFOSMESA_GLGENERATEMIPMAP */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGenerateMipmapEXT(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1689 /* NFOSMESA_GLGENERATEMIPMAPEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGenerateMultiTexMipmapEXT(GLenum texunit, GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (*exec)(gl_slb, 1690 /* NFOSMESA_GLGENERATEMULTITEXMIPMAPEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glGenerateTextureMipmapEXT(GLuint texture, GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (*exec)(gl_slb, 1691 /* NFOSMESA_GLGENERATETEXTUREMIPMAPEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufferIndex; (void)pname; (void)params; (*exec)(gl_slb, 1692 /* NFOSMESA_GLGETACTIVEATOMICCOUNTERBUFFERIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)bufSize; (void)length; (void)size; (void)type; (void)name; (*exec)(gl_slb, 1693 /* NFOSMESA_GLGETACTIVEATTRIB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)shadertype; (void)index; (void)bufsize; (void)length; (void)name; (*exec)(gl_slb, 1694 /* NFOSMESA_GLGETACTIVESUBROUTINENAME */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)shadertype; (void)index; (void)bufsize; (void)length; (void)name; (*exec)(gl_slb, 1695 /* NFOSMESA_GLGETACTIVESUBROUTINEUNIFORMNAME */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)shadertype; (void)index; (void)pname; (void)values; (*exec)(gl_slb, 1696 /* NFOSMESA_GLGETACTIVESUBROUTINEUNIFORMIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)bufSize; (void)length; (void)size; (void)type; (void)name; (*exec)(gl_slb, 1697 /* NFOSMESA_GLGETACTIVEUNIFORM */, SLB_NARGS(2), gl_pub, &program); } static GLuint APIENTRY exec_glGetActiveUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)uniformBlockName; return (GLuint)(*exec)(gl_slb, 1698 /* NFOSMESA_GLGETACTIVEUNIFORMBLOCKINDEX */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)uniformBlockIndex; (void)bufSize; (void)length; (void)uniformBlockName; (*exec)(gl_slb, 1699 /* NFOSMESA_GLGETACTIVEUNIFORMBLOCKNAME */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)uniformBlockIndex; (void)pname; (void)params; (*exec)(gl_slb, 1700 /* NFOSMESA_GLGETACTIVEUNIFORMBLOCKIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)uniformIndex; (void)bufSize; (void)length; (void)uniformName; (*exec)(gl_slb, 1701 /* NFOSMESA_GLGETACTIVEUNIFORMNAME */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)uniformCount; (void)uniformIndices; (void)pname; (void)params; (*exec)(gl_slb, 1702 /* NFOSMESA_GLGETACTIVEUNIFORMSIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetActiveVaryingNV(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)bufSize; (void)length; (void)size; (void)type; (void)name; (*exec)(gl_slb, 1703 /* NFOSMESA_GLGETACTIVEVARYINGNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)maxCount; (void)count; (void)shaders; (*exec)(gl_slb, 1704 /* NFOSMESA_GLGETATTACHEDSHADERS */, SLB_NARGS(2), gl_pub, &program); } static GLint APIENTRY exec_glGetAttribLocation(GLuint program, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; return (GLint)(*exec)(gl_slb, 1705 /* NFOSMESA_GLGETATTRIBLOCATION */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetBooleanIndexedvEXT(GLenum target, GLuint index, GLboolean *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)data; (*exec)(gl_slb, 1706 /* NFOSMESA_GLGETBOOLEANINDEXEDVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)data; (*exec)(gl_slb, 1707 /* NFOSMESA_GLGETBOOLEANI_V */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1708 /* NFOSMESA_GLGETBUFFERPARAMETERI64V */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetBufferParameterui64vNV(GLenum target, GLenum pname, GLuint64EXT *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1709 /* NFOSMESA_GLGETBUFFERPARAMETERUI64VNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetClipPlanefOES(GLenum plane, GLfloat *equation) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)equation; (*exec)(gl_slb, 1710 /* NFOSMESA_GLGETCLIPPLANEFOES */, SLB_NARGS(2), gl_pub, &plane); } static void APIENTRY exec_glGetClipPlanexOES(GLenum plane, GLfixed *equation) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)equation; (*exec)(gl_slb, 1711 /* NFOSMESA_GLGETCLIPPLANEXOES */, SLB_NARGS(2), gl_pub, &plane); } static void APIENTRY exec_glGetCompressedMultiTexImageEXT(GLenum texunit, GLenum target, GLint lod, void *img) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)lod; (void)img; (*exec)(gl_slb, 1712 /* NFOSMESA_GLGETCOMPRESSEDMULTITEXIMAGEEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glGetCompressedTextureImageEXT(GLuint texture, GLenum target, GLint lod, void *img) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)lod; (void)img; (*exec)(gl_slb, 1713 /* NFOSMESA_GLGETCOMPRESSEDTEXTUREIMAGEEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetConvolutionParameterxvOES(GLenum target, GLenum pname, GLfixed *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1714 /* NFOSMESA_GLGETCONVOLUTIONPARAMETERXVOES */, SLB_NARGS(2), gl_pub, &target); } static GLsizei APIENTRY exec_glGetDebugLogLengthMESA(GLhandleARB obj, GLenum logType, GLenum shaderType) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)logType; (void)shaderType; return (GLsizei)(*exec)(gl_slb, 1715 /* NFOSMESA_GLGETDEBUGLOGLENGTHMESA */, SLB_NARGS(2), gl_pub, &obj); } static void APIENTRY exec_glGetDebugLogMESA(GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength, GLsizei *length, GLcharARB *debugLog) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)logType; (void)shaderType; (void)maxLength; (void)length; (void)debugLog; (*exec)(gl_slb, 1716 /* NFOSMESA_GLGETDEBUGLOGMESA */, SLB_NARGS(2), gl_pub, &obj); } static GLuint APIENTRY exec_glGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)sources; (void)types; (void)ids; (void)severities; (void)lengths; (void)messageLog; return (GLuint)(*exec)(gl_slb, 1717 /* NFOSMESA_GLGETDEBUGMESSAGELOG */, SLB_NARGS(2), gl_pub, &count); } static GLuint APIENTRY exec_glGetDebugMessageLogAMD(GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufsize; (void)categories; (void)severities; (void)ids; (void)lengths; (void)message; return (GLuint)(*exec)(gl_slb, 1718 /* NFOSMESA_GLGETDEBUGMESSAGELOGAMD */, SLB_NARGS(2), gl_pub, &count); } static GLuint APIENTRY exec_glGetDebugMessageLogARB(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)sources; (void)types; (void)ids; (void)severities; (void)lengths; (void)messageLog; return (GLuint)(*exec)(gl_slb, 1719 /* NFOSMESA_GLGETDEBUGMESSAGELOGARB */, SLB_NARGS(2), gl_pub, &count); } static void APIENTRY exec_glGetDoubleIndexedvEXT(GLenum target, GLuint index, GLdouble *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)data; (*exec)(gl_slb, 1720 /* NFOSMESA_GLGETDOUBLEINDEXEDVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetDoublei_v(GLenum target, GLuint index, GLdouble *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)data; (*exec)(gl_slb, 1721 /* NFOSMESA_GLGETDOUBLEI_V */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetDoublei_vEXT(GLenum pname, GLuint index, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 1722 /* NFOSMESA_GLGETDOUBLEI_VEXT */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetFirstPerfQueryIdINTEL(GLuint *queryId) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1723 /* NFOSMESA_GLGETFIRSTPERFQUERYIDINTEL */, SLB_NARGS(2), gl_pub, &queryId); } static void APIENTRY exec_glGetFixedvOES(GLenum pname, GLfixed *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 1724 /* NFOSMESA_GLGETFIXEDVOES */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetFloatIndexedvEXT(GLenum target, GLuint index, GLfloat *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)data; (*exec)(gl_slb, 1725 /* NFOSMESA_GLGETFLOATINDEXEDVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetFloati_v(GLenum target, GLuint index, GLfloat *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)data; (*exec)(gl_slb, 1726 /* NFOSMESA_GLGETFLOATI_V */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetFloati_vEXT(GLenum pname, GLuint index, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 1727 /* NFOSMESA_GLGETFLOATI_VEXT */, SLB_NARGS(2), gl_pub, &pname); } static GLint APIENTRY exec_glGetFragDataIndex(GLuint program, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; return (GLint)(*exec)(gl_slb, 1728 /* NFOSMESA_GLGETFRAGDATAINDEX */, SLB_NARGS(2), gl_pub, &program); } static GLint APIENTRY exec_glGetFragDataLocation(GLuint program, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; return (GLint)(*exec)(gl_slb, 1729 /* NFOSMESA_GLGETFRAGDATALOCATION */, SLB_NARGS(2), gl_pub, &program); } static GLint APIENTRY exec_glGetFragDataLocationEXT(GLuint program, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; return (GLint)(*exec)(gl_slb, 1730 /* NFOSMESA_GLGETFRAGDATALOCATIONEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)pname; (void)params; (*exec)(gl_slb, 1731 /* NFOSMESA_GLGETFRAMEBUFFERATTACHMENTPARAMETERIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)pname; (void)params; (*exec)(gl_slb, 1732 /* NFOSMESA_GLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1733 /* NFOSMESA_GLGETFRAMEBUFFERPARAMETERIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1734 /* NFOSMESA_GLGETFRAMEBUFFERPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static GLenum APIENTRY exec_glGetGraphicsResetStatusARB(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLenum)(*exec)(gl_slb, 1735 /* NFOSMESA_GLGETGRAPHICSRESETSTATUSARB */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glGetHistogramParameterxvOES(GLenum target, GLenum pname, GLfixed *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1736 /* NFOSMESA_GLGETHISTOGRAMPARAMETERXVOES */, SLB_NARGS(2), gl_pub, &target); } static GLuint64 APIENTRY exec_glGetImageHandleARB(GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format) { GLuint64 __retval = 0; long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *, void *))gl_exec; (void)level; (void)layered; (void)layer; (void)format; (*exec)(gl_slb, 1737 /* NFOSMESA_GLGETIMAGEHANDLEARB */, SLB_NARGS(3), gl_pub, &texture, &__retval); return __retval; } static GLuint64 APIENTRY exec_glGetImageHandleNV(GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format) { GLuint64 __retval = 0; long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *, void *))gl_exec; (void)level; (void)layered; (void)layer; (void)format; (*exec)(gl_slb, 1738 /* NFOSMESA_GLGETIMAGEHANDLENV */, SLB_NARGS(3), gl_pub, &texture, &__retval); return __retval; } static void APIENTRY exec_glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)data; (*exec)(gl_slb, 1739 /* NFOSMESA_GLGETINTEGER64I_V */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetInteger64v(GLenum pname, GLint64 *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)data; (*exec)(gl_slb, 1740 /* NFOSMESA_GLGETINTEGER64V */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetIntegerIndexedvEXT(GLenum target, GLuint index, GLint *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)data; (*exec)(gl_slb, 1741 /* NFOSMESA_GLGETINTEGERINDEXEDVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetIntegeri_v(GLenum target, GLuint index, GLint *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)data; (*exec)(gl_slb, 1742 /* NFOSMESA_GLGETINTEGERI_V */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetIntegerui64i_vNV(GLenum value, GLuint index, GLuint64EXT *result) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)result; (*exec)(gl_slb, 1743 /* NFOSMESA_GLGETINTEGERUI64I_VNV */, SLB_NARGS(2), gl_pub, &value); } static void APIENTRY exec_glGetIntegerui64vNV(GLenum value, GLuint64EXT *result) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)result; (*exec)(gl_slb, 1744 /* NFOSMESA_GLGETINTEGERUI64VNV */, SLB_NARGS(2), gl_pub, &value); } static void APIENTRY exec_glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)pname; (void)bufSize; (void)params; (*exec)(gl_slb, 1745 /* NFOSMESA_GLGETINTERNALFORMATI64V */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)pname; (void)bufSize; (void)params; (*exec)(gl_slb, 1746 /* NFOSMESA_GLGETINTERNALFORMATIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetLightxOES(GLenum light, GLenum pname, GLfixed *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1747 /* NFOSMESA_GLGETLIGHTXOES */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glGetMapxvOES(GLenum target, GLenum query, GLfixed *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)query; (void)v; (*exec)(gl_slb, 1748 /* NFOSMESA_GLGETMAPXVOES */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetMaterialxOES(GLenum face, GLenum pname, GLfixed param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 1749 /* NFOSMESA_GLGETMATERIALXOES */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glGetMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 1750 /* NFOSMESA_GLGETMULTITEXENVFVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glGetMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 1751 /* NFOSMESA_GLGETMULTITEXENVIVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glGetMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coord; (void)pname; (void)params; (*exec)(gl_slb, 1752 /* NFOSMESA_GLGETMULTITEXGENDVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glGetMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coord; (void)pname; (void)params; (*exec)(gl_slb, 1753 /* NFOSMESA_GLGETMULTITEXGENFVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glGetMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coord; (void)pname; (void)params; (*exec)(gl_slb, 1754 /* NFOSMESA_GLGETMULTITEXGENIVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glGetMultiTexImageEXT(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 1755 /* NFOSMESA_GLGETMULTITEXIMAGEEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glGetMultiTexLevelParameterfvEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)pname; (void)params; (*exec)(gl_slb, 1756 /* NFOSMESA_GLGETMULTITEXLEVELPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glGetMultiTexLevelParameterivEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)pname; (void)params; (*exec)(gl_slb, 1757 /* NFOSMESA_GLGETMULTITEXLEVELPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glGetMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 1758 /* NFOSMESA_GLGETMULTITEXPARAMETERIIVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glGetMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 1759 /* NFOSMESA_GLGETMULTITEXPARAMETERIUIVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glGetMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 1760 /* NFOSMESA_GLGETMULTITEXPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glGetMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 1761 /* NFOSMESA_GLGETMULTITEXPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)val; (*exec)(gl_slb, 1762 /* NFOSMESA_GLGETMULTISAMPLEFV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetMultisamplefvNV(GLenum pname, GLuint index, GLfloat *val) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)val; (*exec)(gl_slb, 1763 /* NFOSMESA_GLGETMULTISAMPLEFVNV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1764 /* NFOSMESA_GLGETNAMEDBUFFERPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glGetNamedBufferParameterui64vNV(GLuint buffer, GLenum pname, GLuint64EXT *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1765 /* NFOSMESA_GLGETNAMEDBUFFERPARAMETERUI64VNV */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glGetNamedBufferPointervEXT(GLuint buffer, GLenum pname, void * *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1766 /* NFOSMESA_GLGETNAMEDBUFFERPOINTERVEXT */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glGetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (void)data; (*exec)(gl_slb, 1767 /* NFOSMESA_GLGETNAMEDBUFFERSUBDATAEXT */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glGetNamedFramebufferAttachmentParameterivEXT(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)pname; (void)params; (*exec)(gl_slb, 1768 /* NFOSMESA_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glGetNamedFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1769 /* NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glGetNamedProgramLocalParameterIivEXT(GLuint program, GLenum target, GLuint index, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)params; (*exec)(gl_slb, 1770 /* NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERIIVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetNamedProgramLocalParameterIuivEXT(GLuint program, GLenum target, GLuint index, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)params; (*exec)(gl_slb, 1771 /* NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetNamedProgramLocalParameterdvEXT(GLuint program, GLenum target, GLuint index, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)params; (*exec)(gl_slb, 1772 /* NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERDVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetNamedProgramLocalParameterfvEXT(GLuint program, GLenum target, GLuint index, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)params; (*exec)(gl_slb, 1773 /* NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetNamedProgramStringEXT(GLuint program, GLenum target, GLenum pname, void *string) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)string; (*exec)(gl_slb, 1774 /* NFOSMESA_GLGETNAMEDPROGRAMSTRINGEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetNamedProgramivEXT(GLuint program, GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 1775 /* NFOSMESA_GLGETNAMEDPROGRAMIVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetNamedRenderbufferParameterivEXT(GLuint renderbuffer, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1776 /* NFOSMESA_GLGETNAMEDRENDERBUFFERPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &renderbuffer); } static void APIENTRY exec_glGetNamedStringARB(GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; (void)bufSize; (void)stringlen; (void)string; (*exec)(gl_slb, 1777 /* NFOSMESA_GLGETNAMEDSTRINGARB */, SLB_NARGS(2), gl_pub, &namelen); } static void APIENTRY exec_glGetNamedStringivARB(GLint namelen, const GLchar *name, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; (void)pname; (void)params; (*exec)(gl_slb, 1778 /* NFOSMESA_GLGETNAMEDSTRINGIVARB */, SLB_NARGS(2), gl_pub, &namelen); } static void APIENTRY exec_glGetNextPerfQueryIdINTEL(GLuint queryId, GLuint *nextQueryId) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)nextQueryId; (*exec)(gl_slb, 1779 /* NFOSMESA_GLGETNEXTPERFQUERYIDINTEL */, SLB_NARGS(2), gl_pub, &queryId); } static void APIENTRY exec_glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; (void)bufSize; (void)length; (void)label; (*exec)(gl_slb, 1780 /* NFOSMESA_GLGETOBJECTLABEL */, SLB_NARGS(2), gl_pub, &identifier); } static void APIENTRY exec_glGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)object; (void)bufSize; (void)length; (void)label; (*exec)(gl_slb, 1781 /* NFOSMESA_GLGETOBJECTLABELEXT */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glGetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; (void)pname; (void)params; (*exec)(gl_slb, 1782 /* NFOSMESA_GLGETOBJECTPARAMETERIVAPPLE */, SLB_NARGS(2), gl_pub, &objectType); } static void APIENTRY exec_glGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)length; (void)label; (*exec)(gl_slb, 1783 /* NFOSMESA_GLGETOBJECTPTRLABEL */, SLB_NARGS(2), gl_pub, &ptr); } static void APIENTRY exec_glGetPathColorGenfvNV(GLenum color, GLenum pname, GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)value; (*exec)(gl_slb, 1784 /* NFOSMESA_GLGETPATHCOLORGENFVNV */, SLB_NARGS(2), gl_pub, &color); } static void APIENTRY exec_glGetPathColorGenivNV(GLenum color, GLenum pname, GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)value; (*exec)(gl_slb, 1785 /* NFOSMESA_GLGETPATHCOLORGENIVNV */, SLB_NARGS(2), gl_pub, &color); } static void APIENTRY exec_glGetPathCommandsNV(GLuint path, GLubyte *commands) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)commands; (*exec)(gl_slb, 1786 /* NFOSMESA_GLGETPATHCOMMANDSNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glGetPathCoordsNV(GLuint path, GLfloat *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 1787 /* NFOSMESA_GLGETPATHCOORDSNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glGetPathDashArrayNV(GLuint path, GLfloat *dashArray) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)dashArray; (*exec)(gl_slb, 1788 /* NFOSMESA_GLGETPATHDASHARRAYNV */, SLB_NARGS(2), gl_pub, &path); } static GLfloat APIENTRY exec_glGetPathLengthNV(GLuint path, GLsizei startSegment, GLsizei numSegments) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)startSegment; (void)numSegments; return (GLfloat)(*exec)(gl_slb, 1789 /* NFOSMESA_GLGETPATHLENGTHNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glGetPathMetricRangeNV(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)firstPathName; (void)numPaths; (void)stride; (void)metrics; (*exec)(gl_slb, 1790 /* NFOSMESA_GLGETPATHMETRICRANGENV */, SLB_NARGS(2), gl_pub, &metricQueryMask); } static void APIENTRY exec_glGetPathMetricsNV(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)numPaths; (void)pathNameType; (void)paths; (void)pathBase; (void)stride; (void)metrics; (*exec)(gl_slb, 1791 /* NFOSMESA_GLGETPATHMETRICSNV */, SLB_NARGS(2), gl_pub, &metricQueryMask); } static void APIENTRY exec_glGetPathParameterfvNV(GLuint path, GLenum pname, GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)value; (*exec)(gl_slb, 1792 /* NFOSMESA_GLGETPATHPARAMETERFVNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glGetPathParameterivNV(GLuint path, GLenum pname, GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)value; (*exec)(gl_slb, 1793 /* NFOSMESA_GLGETPATHPARAMETERIVNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glGetPathSpacingNV(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)numPaths; (void)pathNameType; (void)paths; (void)pathBase; (void)advanceScale; (void)kerningScale; (void)transformType; (void)returnedSpacing; (*exec)(gl_slb, 1794 /* NFOSMESA_GLGETPATHSPACINGNV */, SLB_NARGS(2), gl_pub, &pathListMode); } static void APIENTRY exec_glGetPathTexGenfvNV(GLenum texCoordSet, GLenum pname, GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)value; (*exec)(gl_slb, 1795 /* NFOSMESA_GLGETPATHTEXGENFVNV */, SLB_NARGS(2), gl_pub, &texCoordSet); } static void APIENTRY exec_glGetPathTexGenivNV(GLenum texCoordSet, GLenum pname, GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)value; (*exec)(gl_slb, 1796 /* NFOSMESA_GLGETPATHTEXGENIVNV */, SLB_NARGS(2), gl_pub, &texCoordSet); } static void APIENTRY exec_glGetPerfCounterInfoINTEL(GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)counterId; (void)counterNameLength; (void)counterName; (void)counterDescLength; (void)counterDesc; (void)counterOffset; (void)counterDataSize; (void)counterTypeEnum; (void)counterDataTypeEnum; (void)rawCounterMaxValue; (*exec)(gl_slb, 1797 /* NFOSMESA_GLGETPERFCOUNTERINFOINTEL */, SLB_NARGS(2), gl_pub, &queryId); } static void APIENTRY exec_glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)dataSize; (void)data; (void)bytesWritten; (*exec)(gl_slb, 1798 /* NFOSMESA_GLGETPERFMONITORCOUNTERDATAAMD */, SLB_NARGS(2), gl_pub, &monitor); } static void APIENTRY exec_glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)counter; (void)pname; (void)data; (*exec)(gl_slb, 1799 /* NFOSMESA_GLGETPERFMONITORCOUNTERINFOAMD */, SLB_NARGS(2), gl_pub, &group); } static void APIENTRY exec_glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)counter; (void)bufSize; (void)length; (void)counterString; (*exec)(gl_slb, 1800 /* NFOSMESA_GLGETPERFMONITORCOUNTERSTRINGAMD */, SLB_NARGS(2), gl_pub, &group); } static void APIENTRY exec_glGetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)numCounters; (void)maxActiveCounters; (void)counterSize; (void)counters; (*exec)(gl_slb, 1801 /* NFOSMESA_GLGETPERFMONITORCOUNTERSAMD */, SLB_NARGS(2), gl_pub, &group); } static void APIENTRY exec_glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)length; (void)groupString; (*exec)(gl_slb, 1802 /* NFOSMESA_GLGETPERFMONITORGROUPSTRINGAMD */, SLB_NARGS(2), gl_pub, &group); } static void APIENTRY exec_glGetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLuint *groups) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)groupsSize; (void)groups; (*exec)(gl_slb, 1803 /* NFOSMESA_GLGETPERFMONITORGROUPSAMD */, SLB_NARGS(2), gl_pub, &numGroups); } static void APIENTRY exec_glGetPerfQueryDataINTEL(GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)flags; (void)dataSize; (void)data; (void)bytesWritten; (*exec)(gl_slb, 1804 /* NFOSMESA_GLGETPERFQUERYDATAINTEL */, SLB_NARGS(2), gl_pub, &queryHandle); } static void APIENTRY exec_glGetPerfQueryIdByNameINTEL(GLchar *queryName, GLuint *queryId) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)queryId; (*exec)(gl_slb, 1805 /* NFOSMESA_GLGETPERFQUERYIDBYNAMEINTEL */, SLB_NARGS(2), gl_pub, &queryName); } static void APIENTRY exec_glGetPerfQueryInfoINTEL(GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)queryNameLength; (void)queryName; (void)dataSize; (void)noCounters; (void)noInstances; (void)capsMask; (*exec)(gl_slb, 1806 /* NFOSMESA_GLGETPERFQUERYINFOINTEL */, SLB_NARGS(2), gl_pub, &queryId); } static void APIENTRY exec_glGetPixelMapxv(GLenum map, GLint size, GLfixed *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)values; (*exec)(gl_slb, 1807 /* NFOSMESA_GLGETPIXELMAPXV */, SLB_NARGS(2), gl_pub, &map); } static void APIENTRY exec_glGetPixelTransformParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1808 /* NFOSMESA_GLGETPIXELTRANSFORMPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetPixelTransformParameterivEXT(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1809 /* NFOSMESA_GLGETPIXELTRANSFORMPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetPointerIndexedvEXT(GLenum target, GLuint index, void * *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)data; (*exec)(gl_slb, 1810 /* NFOSMESA_GLGETPOINTERINDEXEDVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetPointeri_vEXT(GLenum pname, GLuint index, void * *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 1811 /* NFOSMESA_GLGETPOINTERI_VEXT */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)length; (void)binaryFormat; (void)binary; (*exec)(gl_slb, 1812 /* NFOSMESA_GLGETPROGRAMBINARY */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetProgramEnvParameterIivNV(GLenum target, GLuint index, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 1813 /* NFOSMESA_GLGETPROGRAMENVPARAMETERIIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetProgramEnvParameterIuivNV(GLenum target, GLuint index, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 1814 /* NFOSMESA_GLGETPROGRAMENVPARAMETERIUIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)length; (void)infoLog; (*exec)(gl_slb, 1815 /* NFOSMESA_GLGETPROGRAMINFOLOG */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)programInterface; (void)pname; (void)params; (*exec)(gl_slb, 1816 /* NFOSMESA_GLGETPROGRAMINTERFACEIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetProgramLocalParameterIivNV(GLenum target, GLuint index, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 1817 /* NFOSMESA_GLGETPROGRAMLOCALPARAMETERIIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetProgramLocalParameterIuivNV(GLenum target, GLuint index, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 1818 /* NFOSMESA_GLGETPROGRAMLOCALPARAMETERIUIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)length; (void)infoLog; (*exec)(gl_slb, 1819 /* NFOSMESA_GLGETPROGRAMPIPELINEINFOLOG */, SLB_NARGS(2), gl_pub, &pipeline); } static void APIENTRY exec_glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1820 /* NFOSMESA_GLGETPROGRAMPIPELINEIV */, SLB_NARGS(2), gl_pub, &pipeline); } static void APIENTRY exec_glGetProgramRegisterfvMESA(GLenum target, GLsizei len, const GLubyte *name, GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)len; (void)name; (void)v; (*exec)(gl_slb, 1821 /* NFOSMESA_GLGETPROGRAMREGISTERFVMESA */, SLB_NARGS(2), gl_pub, &target); } static GLuint APIENTRY exec_glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)programInterface; (void)name; return (GLuint)(*exec)(gl_slb, 1822 /* NFOSMESA_GLGETPROGRAMRESOURCEINDEX */, SLB_NARGS(2), gl_pub, &program); } static GLint APIENTRY exec_glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)programInterface; (void)name; return (GLint)(*exec)(gl_slb, 1823 /* NFOSMESA_GLGETPROGRAMRESOURCELOCATION */, SLB_NARGS(2), gl_pub, &program); } static GLint APIENTRY exec_glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)programInterface; (void)name; return (GLint)(*exec)(gl_slb, 1824 /* NFOSMESA_GLGETPROGRAMRESOURCELOCATIONINDEX */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)programInterface; (void)index; (void)bufSize; (void)length; (void)name; (*exec)(gl_slb, 1825 /* NFOSMESA_GLGETPROGRAMRESOURCENAME */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)programInterface; (void)index; (void)propCount; (void)props; (void)bufSize; (void)length; (void)params; (*exec)(gl_slb, 1826 /* NFOSMESA_GLGETPROGRAMRESOURCEIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)shadertype; (void)pname; (void)values; (*exec)(gl_slb, 1827 /* NFOSMESA_GLGETPROGRAMSTAGEIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetProgramSubroutineParameteruivNV(GLenum target, GLuint index, GLuint *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)param; (*exec)(gl_slb, 1828 /* NFOSMESA_GLGETPROGRAMSUBROUTINEPARAMETERUIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetProgramiv(GLuint program, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1829 /* NFOSMESA_GLGETPROGRAMIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)pname; (void)params; (*exec)(gl_slb, 1830 /* NFOSMESA_GLGETQUERYINDEXEDIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1831 /* NFOSMESA_GLGETQUERYOBJECTI64V */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1832 /* NFOSMESA_GLGETQUERYOBJECTI64VEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1833 /* NFOSMESA_GLGETQUERYOBJECTUI64V */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1834 /* NFOSMESA_GLGETQUERYOBJECTUI64VEXT */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1835 /* NFOSMESA_GLGETRENDERBUFFERPARAMETERIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1836 /* NFOSMESA_GLGETRENDERBUFFERPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1837 /* NFOSMESA_GLGETSAMPLERPARAMETERIIV */, SLB_NARGS(2), gl_pub, &sampler); } static void APIENTRY exec_glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1838 /* NFOSMESA_GLGETSAMPLERPARAMETERIUIV */, SLB_NARGS(2), gl_pub, &sampler); } static void APIENTRY exec_glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1839 /* NFOSMESA_GLGETSAMPLERPARAMETERFV */, SLB_NARGS(2), gl_pub, &sampler); } static void APIENTRY exec_glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1840 /* NFOSMESA_GLGETSAMPLERPARAMETERIV */, SLB_NARGS(2), gl_pub, &sampler); } static void APIENTRY exec_glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)length; (void)infoLog; (*exec)(gl_slb, 1841 /* NFOSMESA_GLGETSHADERINFOLOG */, SLB_NARGS(2), gl_pub, &shader); } static void APIENTRY exec_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)precisiontype; (void)range; (void)precision; (*exec)(gl_slb, 1842 /* NFOSMESA_GLGETSHADERPRECISIONFORMAT */, SLB_NARGS(2), gl_pub, &shadertype); } static void APIENTRY exec_glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)length; (void)source; (*exec)(gl_slb, 1843 /* NFOSMESA_GLGETSHADERSOURCE */, SLB_NARGS(2), gl_pub, &shader); } static void APIENTRY exec_glGetShaderiv(GLuint shader, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1844 /* NFOSMESA_GLGETSHADERIV */, SLB_NARGS(2), gl_pub, &shader); } static const GLubyte * APIENTRY exec_glGetStringi(GLenum name, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; return (const GLubyte *)(*exec)(gl_slb, 1845 /* NFOSMESA_LENGLGETSTRINGI */, SLB_NARGS(2), gl_pub, &name); } static GLuint APIENTRY exec_glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)shadertype; (void)name; return (GLuint)(*exec)(gl_slb, 1847 /* NFOSMESA_GLGETSUBROUTINEINDEX */, SLB_NARGS(2), gl_pub, &program); } static GLint APIENTRY exec_glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)shadertype; (void)name; return (GLint)(*exec)(gl_slb, 1848 /* NFOSMESA_GLGETSUBROUTINEUNIFORMLOCATION */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)bufSize; (void)length; (void)values; (*exec)(gl_slb, 1849 /* NFOSMESA_GLGETSYNCIV */, SLB_NARGS(2), gl_pub, &sync); } static void APIENTRY exec_glGetTexEnvxvOES(GLenum target, GLenum pname, GLfixed *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1850 /* NFOSMESA_GLGETTEXENVXVOES */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1851 /* NFOSMESA_GLGETTEXGENXVOES */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glGetTexLevelParameterxvOES(GLenum target, GLint level, GLenum pname, GLfixed *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)pname; (void)params; (*exec)(gl_slb, 1852 /* NFOSMESA_GLGETTEXLEVELPARAMETERXVOES */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1853 /* NFOSMESA_GLGETTEXPARAMETERIIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexParameterIivEXT(GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1854 /* NFOSMESA_GLGETTEXPARAMETERIIVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1855 /* NFOSMESA_GLGETTEXPARAMETERIUIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1856 /* NFOSMESA_GLGETTEXPARAMETERIUIVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexParameterPointervAPPLE(GLenum target, GLenum pname, void * *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1857 /* NFOSMESA_GLGETTEXPARAMETERPOINTERVAPPLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1858 /* NFOSMESA_GLGETTEXPARAMETERXVOES */, SLB_NARGS(2), gl_pub, &target); } static GLuint64 APIENTRY exec_glGetTextureHandleARB(GLuint texture) { GLuint64 __retval = 0; long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *, void *))gl_exec; (*exec)(gl_slb, 1859 /* NFOSMESA_GLGETTEXTUREHANDLEARB */, SLB_NARGS(3), gl_pub, &texture, &__retval); return __retval; } static GLuint64 APIENTRY exec_glGetTextureHandleNV(GLuint texture) { GLuint64 __retval = 0; long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *, void *))gl_exec; (*exec)(gl_slb, 1860 /* NFOSMESA_GLGETTEXTUREHANDLENV */, SLB_NARGS(3), gl_pub, &texture, &__retval); return __retval; } static void APIENTRY exec_glGetTextureImageEXT(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 1861 /* NFOSMESA_GLGETTEXTUREIMAGEEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetTextureLevelParameterfvEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)pname; (void)params; (*exec)(gl_slb, 1862 /* NFOSMESA_GLGETTEXTURELEVELPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetTextureLevelParameterivEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)pname; (void)params; (*exec)(gl_slb, 1863 /* NFOSMESA_GLGETTEXTURELEVELPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 1864 /* NFOSMESA_GLGETTEXTUREPARAMETERIIVEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 1865 /* NFOSMESA_GLGETTEXTUREPARAMETERIUIVEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 1866 /* NFOSMESA_GLGETTEXTUREPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 1867 /* NFOSMESA_GLGETTEXTUREPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &texture); } static GLuint64 APIENTRY exec_glGetTextureSamplerHandleARB(GLuint texture, GLuint sampler) { GLuint64 __retval = 0; long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *, void *))gl_exec; (void)sampler; (*exec)(gl_slb, 1868 /* NFOSMESA_GLGETTEXTURESAMPLERHANDLEARB */, SLB_NARGS(3), gl_pub, &texture, &__retval); return __retval; } static GLuint64 APIENTRY exec_glGetTextureSamplerHandleNV(GLuint texture, GLuint sampler) { GLuint64 __retval = 0; long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *, void *))gl_exec; (void)sampler; (*exec)(gl_slb, 1869 /* NFOSMESA_GLGETTEXTURESAMPLERHANDLENV */, SLB_NARGS(3), gl_pub, &texture, &__retval); return __retval; } static void APIENTRY exec_glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)bufSize; (void)length; (void)size; (void)type; (void)name; (*exec)(gl_slb, 1870 /* NFOSMESA_GLGETTRANSFORMFEEDBACKVARYING */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetTransformFeedbackVaryingEXT(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)bufSize; (void)length; (void)size; (void)type; (void)name; (*exec)(gl_slb, 1871 /* NFOSMESA_GLGETTRANSFORMFEEDBACKVARYINGEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetTransformFeedbackVaryingNV(GLuint program, GLuint index, GLint *location) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)location; (*exec)(gl_slb, 1872 /* NFOSMESA_GLGETTRANSFORMFEEDBACKVARYINGNV */, SLB_NARGS(2), gl_pub, &program); } static GLuint APIENTRY exec_glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)uniformBlockName; return (GLuint)(*exec)(gl_slb, 1873 /* NFOSMESA_GLGETUNIFORMBLOCKINDEX */, SLB_NARGS(2), gl_pub, &program); } static GLint APIENTRY exec_glGetUniformBufferSizeEXT(GLuint program, GLint location) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; return (GLint)(*exec)(gl_slb, 1874 /* NFOSMESA_GLGETUNIFORMBUFFERSIZEEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)uniformCount; (void)uniformNames; (void)uniformIndices; (*exec)(gl_slb, 1875 /* NFOSMESA_GLGETUNIFORMINDICES */, SLB_NARGS(2), gl_pub, &program); } static GLint APIENTRY exec_glGetUniformLocation(GLuint program, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; return (GLint)(*exec)(gl_slb, 1876 /* NFOSMESA_GLGETUNIFORMLOCATION */, SLB_NARGS(2), gl_pub, &program); } static GLintptr APIENTRY exec_glGetUniformOffsetEXT(GLuint program, GLint location) { GLuint64 __retval = 0; long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *, void *))gl_exec; (void)location; (*exec)(gl_slb, 1877 /* NFOSMESA_GLGETUNIFORMOFFSETEXT */, SLB_NARGS(3), gl_pub, &program, &__retval); return __retval; } static void APIENTRY exec_glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)params; (*exec)(gl_slb, 1878 /* NFOSMESA_GLGETUNIFORMSUBROUTINEUIV */, SLB_NARGS(2), gl_pub, &shadertype); } static void APIENTRY exec_glGetUniformdv(GLuint program, GLint location, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)params; (*exec)(gl_slb, 1879 /* NFOSMESA_GLGETUNIFORMDV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetUniformfv(GLuint program, GLint location, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)params; (*exec)(gl_slb, 1880 /* NFOSMESA_GLGETUNIFORMFV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetUniformi64vNV(GLuint program, GLint location, GLint64EXT *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)params; (*exec)(gl_slb, 1881 /* NFOSMESA_GLGETUNIFORMI64VNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetUniformiv(GLuint program, GLint location, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)params; (*exec)(gl_slb, 1882 /* NFOSMESA_GLGETUNIFORMIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetUniformui64vNV(GLuint program, GLint location, GLuint64EXT *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)params; (*exec)(gl_slb, 1883 /* NFOSMESA_GLGETUNIFORMUI64VNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetUniformuiv(GLuint program, GLint location, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)params; (*exec)(gl_slb, 1884 /* NFOSMESA_GLGETUNIFORMUIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetUniformuivEXT(GLuint program, GLint location, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)params; (*exec)(gl_slb, 1885 /* NFOSMESA_GLGETUNIFORMUIVEXT */, SLB_NARGS(2), gl_pub, &program); } static GLint APIENTRY exec_glGetVaryingLocationNV(GLuint program, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; return (GLint)(*exec)(gl_slb, 1886 /* NFOSMESA_GLGETVARYINGLOCATIONNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetVertexArrayIntegeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, GLint *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)pname; (void)param; (*exec)(gl_slb, 1887 /* NFOSMESA_GLGETVERTEXARRAYINTEGERI_VEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glGetVertexArrayIntegervEXT(GLuint vaobj, GLenum pname, GLint *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 1888 /* NFOSMESA_GLGETVERTEXARRAYINTEGERVEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glGetVertexArrayPointeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, void * *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)pname; (void)param; (*exec)(gl_slb, 1889 /* NFOSMESA_GLGETVERTEXARRAYPOINTERI_VEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glGetVertexArrayPointervEXT(GLuint vaobj, GLenum pname, void * *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 1890 /* NFOSMESA_GLGETVERTEXARRAYPOINTERVEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1891 /* NFOSMESA_GLGETVERTEXATTRIBIIV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribIivEXT(GLuint index, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1892 /* NFOSMESA_GLGETVERTEXATTRIBIIVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1893 /* NFOSMESA_GLGETVERTEXATTRIBIUIV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribIuivEXT(GLuint index, GLenum pname, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1894 /* NFOSMESA_GLGETVERTEXATTRIBIUIVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1895 /* NFOSMESA_GLGETVERTEXATTRIBLDV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribLdvEXT(GLuint index, GLenum pname, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1896 /* NFOSMESA_GLGETVERTEXATTRIBLDVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribLi64vNV(GLuint index, GLenum pname, GLint64EXT *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1897 /* NFOSMESA_GLGETVERTEXATTRIBLI64VNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribLui64vARB(GLuint index, GLenum pname, GLuint64EXT *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1898 /* NFOSMESA_GLGETVERTEXATTRIBLUI64VARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribLui64vNV(GLuint index, GLenum pname, GLuint64EXT *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1899 /* NFOSMESA_GLGETVERTEXATTRIBLUI64VNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribPointerv(GLuint index, GLenum pname, void * *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)pointer; (*exec)(gl_slb, 1900 /* NFOSMESA_GLGETVERTEXATTRIBPOINTERV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1901 /* NFOSMESA_GLGETVERTEXATTRIBDV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1902 /* NFOSMESA_GLGETVERTEXATTRIBFV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1903 /* NFOSMESA_GLGETVERTEXATTRIBIV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glGetVideoCaptureStreamdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stream; (void)pname; (void)params; (*exec)(gl_slb, 1904 /* NFOSMESA_GLGETVIDEOCAPTURESTREAMDVNV */, SLB_NARGS(2), gl_pub, &video_capture_slot); } static void APIENTRY exec_glGetVideoCaptureStreamfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stream; (void)pname; (void)params; (*exec)(gl_slb, 1905 /* NFOSMESA_GLGETVIDEOCAPTURESTREAMFVNV */, SLB_NARGS(2), gl_pub, &video_capture_slot); } static void APIENTRY exec_glGetVideoCaptureStreamivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stream; (void)pname; (void)params; (*exec)(gl_slb, 1906 /* NFOSMESA_GLGETVIDEOCAPTURESTREAMIVNV */, SLB_NARGS(2), gl_pub, &video_capture_slot); } static void APIENTRY exec_glGetVideoCaptureivNV(GLuint video_capture_slot, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1907 /* NFOSMESA_GLGETVIDEOCAPTUREIVNV */, SLB_NARGS(2), gl_pub, &video_capture_slot); } static void APIENTRY exec_glGetVideoi64vNV(GLuint video_slot, GLenum pname, GLint64EXT *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1908 /* NFOSMESA_GLGETVIDEOI64VNV */, SLB_NARGS(2), gl_pub, &video_slot); } static void APIENTRY exec_glGetVideoivNV(GLuint video_slot, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1909 /* NFOSMESA_GLGETVIDEOIVNV */, SLB_NARGS(2), gl_pub, &video_slot); } static void APIENTRY exec_glGetVideoui64vNV(GLuint video_slot, GLenum pname, GLuint64EXT *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1910 /* NFOSMESA_GLGETVIDEOUI64VNV */, SLB_NARGS(2), gl_pub, &video_slot); } static void APIENTRY exec_glGetVideouivNV(GLuint video_slot, GLenum pname, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1911 /* NFOSMESA_GLGETVIDEOUIVNV */, SLB_NARGS(2), gl_pub, &video_slot); } static void APIENTRY exec_glGetnColorTableARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)type; (void)bufSize; (void)table; (*exec)(gl_slb, 1912 /* NFOSMESA_GLGETNCOLORTABLEARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnCompressedTexImageARB(GLenum target, GLint lod, GLsizei bufSize, void *img) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)lod; (void)bufSize; (void)img; (*exec)(gl_slb, 1913 /* NFOSMESA_GLGETNCOMPRESSEDTEXIMAGEARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnConvolutionFilterARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)type; (void)bufSize; (void)image; (*exec)(gl_slb, 1914 /* NFOSMESA_GLGETNCONVOLUTIONFILTERARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnHistogramARB(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)reset; (void)format; (void)type; (void)bufSize; (void)values; (*exec)(gl_slb, 1915 /* NFOSMESA_GLGETNHISTOGRAMARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnMapdvARB(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)query; (void)bufSize; (void)v; (*exec)(gl_slb, 1916 /* NFOSMESA_GLGETNMAPDVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnMapfvARB(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)query; (void)bufSize; (void)v; (*exec)(gl_slb, 1917 /* NFOSMESA_GLGETNMAPFVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnMapivARB(GLenum target, GLenum query, GLsizei bufSize, GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)query; (void)bufSize; (void)v; (*exec)(gl_slb, 1918 /* NFOSMESA_GLGETNMAPIVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnMinmaxARB(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)reset; (void)format; (void)type; (void)bufSize; (void)values; (*exec)(gl_slb, 1919 /* NFOSMESA_GLGETNMINMAXARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnPixelMapfvARB(GLenum map, GLsizei bufSize, GLfloat *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)values; (*exec)(gl_slb, 1920 /* NFOSMESA_GLGETNPIXELMAPFVARB */, SLB_NARGS(2), gl_pub, &map); } static void APIENTRY exec_glGetnPixelMapuivARB(GLenum map, GLsizei bufSize, GLuint *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)values; (*exec)(gl_slb, 1921 /* NFOSMESA_GLGETNPIXELMAPUIVARB */, SLB_NARGS(2), gl_pub, &map); } static void APIENTRY exec_glGetnPixelMapusvARB(GLenum map, GLsizei bufSize, GLushort *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)values; (*exec)(gl_slb, 1922 /* NFOSMESA_GLGETNPIXELMAPUSVARB */, SLB_NARGS(2), gl_pub, &map); } static void APIENTRY exec_glGetnPolygonStippleARB(GLsizei bufSize, GLubyte *pattern) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pattern; (*exec)(gl_slb, 1923 /* NFOSMESA_GLGETNPOLYGONSTIPPLEARB */, SLB_NARGS(2), gl_pub, &bufSize); } static void APIENTRY exec_glGetnSeparableFilterARB(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)type; (void)rowBufSize; (void)row; (void)columnBufSize; (void)column; (void)span; (*exec)(gl_slb, 1924 /* NFOSMESA_GLGETNSEPARABLEFILTERARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnTexImageARB(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)format; (void)type; (void)bufSize; (void)img; (*exec)(gl_slb, 1925 /* NFOSMESA_GLGETNTEXIMAGEARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnUniformdvARB(GLuint program, GLint location, GLsizei bufSize, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)bufSize; (void)params; (*exec)(gl_slb, 1926 /* NFOSMESA_GLGETNUNIFORMDVARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetnUniformfvARB(GLuint program, GLint location, GLsizei bufSize, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)bufSize; (void)params; (*exec)(gl_slb, 1927 /* NFOSMESA_GLGETNUNIFORMFVARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetnUniformivARB(GLuint program, GLint location, GLsizei bufSize, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)bufSize; (void)params; (*exec)(gl_slb, 1928 /* NFOSMESA_GLGETNUNIFORMIVARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetnUniformuivARB(GLuint program, GLint location, GLsizei bufSize, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)bufSize; (void)params; (*exec)(gl_slb, 1929 /* NFOSMESA_GLGETNUNIFORMUIVARB */, SLB_NARGS(2), gl_pub, &program); } static GLsync APIENTRY exec_glImportSyncEXT(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)external_sync; (void)flags; return (GLsync)(*exec)(gl_slb, 1930 /* NFOSMESA_GLIMPORTSYNCEXT */, SLB_NARGS(2), gl_pub, &external_sync_type); } static void APIENTRY exec_glIndexFormatNV(GLenum type, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (*exec)(gl_slb, 1931 /* NFOSMESA_GLINDEXFORMATNV */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glIndexxOES(GLfixed component) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1932 /* NFOSMESA_GLINDEXXOES */, SLB_NARGS(2), gl_pub, &component); } static void APIENTRY exec_glIndexxvOES(const GLfixed *component) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1933 /* NFOSMESA_GLINDEXXVOES */, SLB_NARGS(2), gl_pub, &component); } static void APIENTRY exec_glInsertEventMarkerEXT(GLsizei length, const GLchar *marker) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)marker; (*exec)(gl_slb, 1934 /* NFOSMESA_GLINSERTEVENTMARKEREXT */, SLB_NARGS(2), gl_pub, &length); } static void APIENTRY exec_glInterpolatePathsNV(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pathA; (void)pathB; (void)weight; (*exec)(gl_slb, 1935 /* NFOSMESA_GLINTERPOLATEPATHSNV */, SLB_NARGS(2), gl_pub, &resultPath); } static void APIENTRY exec_glInvalidateBufferData(GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1936 /* NFOSMESA_GLINVALIDATEBUFFERDATA */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)length; (*exec)(gl_slb, 1937 /* NFOSMESA_GLINVALIDATEBUFFERSUBDATA */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)numAttachments; (void)attachments; (*exec)(gl_slb, 1938 /* NFOSMESA_GLINVALIDATEFRAMEBUFFER */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)numAttachments; (void)attachments; (void)x; (void)y; (void)width; (void)height; (*exec)(gl_slb, 1939 /* NFOSMESA_GLINVALIDATESUBFRAMEBUFFER */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glInvalidateTexImage(GLuint texture, GLint level) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (*exec)(gl_slb, 1940 /* NFOSMESA_GLINVALIDATETEXIMAGE */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (*exec)(gl_slb, 1941 /* NFOSMESA_GLINVALIDATETEXSUBIMAGE */, SLB_NARGS(2), gl_pub, &texture); } static GLboolean APIENTRY exec_glIsBufferResidentNV(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1942 /* NFOSMESA_GLISBUFFERRESIDENTNV */, SLB_NARGS(2), gl_pub, &target); } static GLboolean APIENTRY exec_glIsEnabledIndexedEXT(GLenum target, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; return (GLboolean)(*exec)(gl_slb, 1943 /* NFOSMESA_GLISENABLEDINDEXEDEXT */, SLB_NARGS(2), gl_pub, &target); } static GLboolean APIENTRY exec_glIsEnabledi(GLenum target, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; return (GLboolean)(*exec)(gl_slb, 1944 /* NFOSMESA_GLISENABLEDI */, SLB_NARGS(2), gl_pub, &target); } static GLboolean APIENTRY exec_glIsFramebuffer(GLuint framebuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1945 /* NFOSMESA_GLISFRAMEBUFFER */, SLB_NARGS(2), gl_pub, &framebuffer); } static GLboolean APIENTRY exec_glIsFramebufferEXT(GLuint framebuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1946 /* NFOSMESA_GLISFRAMEBUFFEREXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static GLboolean APIENTRY exec_glIsImageHandleResidentARB(GLuint64 handle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1947 /* NFOSMESA_GLISIMAGEHANDLERESIDENTARB */, SLB_NARGS(2), gl_pub, &handle); } static GLboolean APIENTRY exec_glIsImageHandleResidentNV(GLuint64 handle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1948 /* NFOSMESA_GLISIMAGEHANDLERESIDENTNV */, SLB_NARGS(2), gl_pub, &handle); } static GLboolean APIENTRY exec_glIsNameAMD(GLenum identifier, GLuint name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; return (GLboolean)(*exec)(gl_slb, 1949 /* NFOSMESA_GLISNAMEAMD */, SLB_NARGS(2), gl_pub, &identifier); } static GLboolean APIENTRY exec_glIsNamedBufferResidentNV(GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1950 /* NFOSMESA_GLISNAMEDBUFFERRESIDENTNV */, SLB_NARGS(2), gl_pub, &buffer); } static GLboolean APIENTRY exec_glIsNamedStringARB(GLint namelen, const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; return (GLboolean)(*exec)(gl_slb, 1951 /* NFOSMESA_GLISNAMEDSTRINGARB */, SLB_NARGS(2), gl_pub, &namelen); } static GLboolean APIENTRY exec_glIsPathNV(GLuint path) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1952 /* NFOSMESA_GLISPATHNV */, SLB_NARGS(2), gl_pub, &path); } static GLboolean APIENTRY exec_glIsPointInFillPathNV(GLuint path, GLuint mask, GLfloat x, GLfloat y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mask; (void)x; (void)y; return (GLboolean)(*exec)(gl_slb, 1953 /* NFOSMESA_GLISPOINTINFILLPATHNV */, SLB_NARGS(2), gl_pub, &path); } static GLboolean APIENTRY exec_glIsPointInStrokePathNV(GLuint path, GLfloat x, GLfloat y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; return (GLboolean)(*exec)(gl_slb, 1954 /* NFOSMESA_GLISPOINTINSTROKEPATHNV */, SLB_NARGS(2), gl_pub, &path); } static GLboolean APIENTRY exec_glIsProgram(GLuint program) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1955 /* NFOSMESA_GLISPROGRAM */, SLB_NARGS(2), gl_pub, &program); } static GLboolean APIENTRY exec_glIsProgramPipeline(GLuint pipeline) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1956 /* NFOSMESA_GLISPROGRAMPIPELINE */, SLB_NARGS(2), gl_pub, &pipeline); } static GLboolean APIENTRY exec_glIsRenderbuffer(GLuint renderbuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1957 /* NFOSMESA_GLISRENDERBUFFER */, SLB_NARGS(2), gl_pub, &renderbuffer); } static GLboolean APIENTRY exec_glIsRenderbufferEXT(GLuint renderbuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1958 /* NFOSMESA_GLISRENDERBUFFEREXT */, SLB_NARGS(2), gl_pub, &renderbuffer); } static GLboolean APIENTRY exec_glIsSampler(GLuint sampler) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1959 /* NFOSMESA_GLISSAMPLER */, SLB_NARGS(2), gl_pub, &sampler); } static GLboolean APIENTRY exec_glIsShader(GLuint shader) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1960 /* NFOSMESA_GLISSHADER */, SLB_NARGS(2), gl_pub, &shader); } static GLboolean APIENTRY exec_glIsSync(GLsync sync) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1961 /* NFOSMESA_GLISSYNC */, SLB_NARGS(2), gl_pub, &sync); } static GLboolean APIENTRY exec_glIsTextureHandleResidentARB(GLuint64 handle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1962 /* NFOSMESA_GLISTEXTUREHANDLERESIDENTARB */, SLB_NARGS(2), gl_pub, &handle); } static GLboolean APIENTRY exec_glIsTextureHandleResidentNV(GLuint64 handle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1963 /* NFOSMESA_GLISTEXTUREHANDLERESIDENTNV */, SLB_NARGS(2), gl_pub, &handle); } static GLboolean APIENTRY exec_glIsTransformFeedback(GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1964 /* NFOSMESA_GLISTRANSFORMFEEDBACK */, SLB_NARGS(2), gl_pub, &id); } static GLboolean APIENTRY exec_glIsTransformFeedbackNV(GLuint id) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1965 /* NFOSMESA_GLISTRANSFORMFEEDBACKNV */, SLB_NARGS(2), gl_pub, &id); } static GLboolean APIENTRY exec_glIsVertexArray(GLuint array) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 1966 /* NFOSMESA_GLISVERTEXARRAY */, SLB_NARGS(2), gl_pub, &array); } static GLboolean APIENTRY exec_glIsVertexAttribEnabledAPPLE(GLuint index, GLenum pname) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; return (GLboolean)(*exec)(gl_slb, 1967 /* NFOSMESA_GLISVERTEXATTRIBENABLEDAPPLE */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar *label) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)object; (void)length; (void)label; (*exec)(gl_slb, 1968 /* NFOSMESA_GLLABELOBJECTEXT */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glLightModelxOES(GLenum pname, GLfixed param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 1969 /* NFOSMESA_GLLIGHTMODELXOES */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glLightModelxvOES(GLenum pname, const GLfixed *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 1970 /* NFOSMESA_GLLIGHTMODELXVOES */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glLightxOES(GLenum light, GLenum pname, GLfixed param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 1971 /* NFOSMESA_GLLIGHTXOES */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glLightxvOES(GLenum light, GLenum pname, const GLfixed *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 1972 /* NFOSMESA_GLLIGHTXVOES */, SLB_NARGS(2), gl_pub, &light); } static void APIENTRY exec_glLineWidthxOES(GLfixed width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1973 /* NFOSMESA_GLLINEWIDTHXOES */, SLB_NARGS(2), gl_pub, &width); } static void APIENTRY exec_glLinkProgram(GLuint program) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1974 /* NFOSMESA_GLLINKPROGRAM */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glLoadMatrixxOES(const GLfixed *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1975 /* NFOSMESA_GLLOADMATRIXXOES */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glLoadTransposeMatrixxOES(const GLfixed *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1976 /* NFOSMESA_GLLOADTRANSPOSEMATRIXXOES */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glMakeBufferNonResidentNV(GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1977 /* NFOSMESA_GLMAKEBUFFERNONRESIDENTNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMakeBufferResidentNV(GLenum target, GLenum access) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)access; (*exec)(gl_slb, 1978 /* NFOSMESA_GLMAKEBUFFERRESIDENTNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMakeImageHandleNonResidentARB(GLuint64 handle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1979 /* NFOSMESA_GLMAKEIMAGEHANDLENONRESIDENTARB */, SLB_NARGS(2), gl_pub, &handle); } static void APIENTRY exec_glMakeImageHandleNonResidentNV(GLuint64 handle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1980 /* NFOSMESA_GLMAKEIMAGEHANDLENONRESIDENTNV */, SLB_NARGS(2), gl_pub, &handle); } static void APIENTRY exec_glMakeImageHandleResidentARB(GLuint64 handle, GLenum access) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)access; (*exec)(gl_slb, 1981 /* NFOSMESA_GLMAKEIMAGEHANDLERESIDENTARB */, SLB_NARGS(2), gl_pub, &handle); } static void APIENTRY exec_glMakeImageHandleResidentNV(GLuint64 handle, GLenum access) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)access; (*exec)(gl_slb, 1982 /* NFOSMESA_GLMAKEIMAGEHANDLERESIDENTNV */, SLB_NARGS(2), gl_pub, &handle); } static void APIENTRY exec_glMakeNamedBufferNonResidentNV(GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1983 /* NFOSMESA_GLMAKENAMEDBUFFERNONRESIDENTNV */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glMakeNamedBufferResidentNV(GLuint buffer, GLenum access) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)access; (*exec)(gl_slb, 1984 /* NFOSMESA_GLMAKENAMEDBUFFERRESIDENTNV */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glMakeTextureHandleNonResidentARB(GLuint64 handle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1985 /* NFOSMESA_GLMAKETEXTUREHANDLENONRESIDENTARB */, SLB_NARGS(2), gl_pub, &handle); } static void APIENTRY exec_glMakeTextureHandleNonResidentNV(GLuint64 handle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1986 /* NFOSMESA_GLMAKETEXTUREHANDLENONRESIDENTNV */, SLB_NARGS(2), gl_pub, &handle); } static void APIENTRY exec_glMakeTextureHandleResidentARB(GLuint64 handle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1987 /* NFOSMESA_GLMAKETEXTUREHANDLERESIDENTARB */, SLB_NARGS(2), gl_pub, &handle); } static void APIENTRY exec_glMakeTextureHandleResidentNV(GLuint64 handle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 1988 /* NFOSMESA_GLMAKETEXTUREHANDLERESIDENTNV */, SLB_NARGS(2), gl_pub, &handle); } static void APIENTRY exec_glMap1xOES(GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)u1; (void)u2; (void)stride; (void)order; (void)points; (*exec)(gl_slb, 1989 /* NFOSMESA_GLMAP1XOES */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMap2xOES(GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)u1; (void)u2; (void)ustride; (void)uorder; (void)v1; (void)v2; (void)vstride; (void)vorder; (void)points; (*exec)(gl_slb, 1990 /* NFOSMESA_GLMAP2XOES */, SLB_NARGS(2), gl_pub, &target); } static void * APIENTRY exec_glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)length; (void)access; return (void *)(*exec)(gl_slb, 1991 /* NFOSMESA_GLMAPBUFFERRANGE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glMapGrid1xOES(GLint n, GLfixed u1, GLfixed u2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)u1; (void)u2; (*exec)(gl_slb, 1992 /* NFOSMESA_GLMAPGRID1XOES */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glMapGrid2xOES(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)u1; (void)u2; (void)v1; (void)v2; (*exec)(gl_slb, 1993 /* NFOSMESA_GLMAPGRID2XOES */, SLB_NARGS(2), gl_pub, &n); } static void * APIENTRY exec_glMapNamedBufferEXT(GLuint buffer, GLenum access) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)access; return (void *)(*exec)(gl_slb, 1994 /* NFOSMESA_GLMAPNAMEDBUFFEREXT */, SLB_NARGS(2), gl_pub, &buffer); } static void * APIENTRY exec_glMapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)length; (void)access; return (void *)(*exec)(gl_slb, 1995 /* NFOSMESA_GLMAPNAMEDBUFFERRANGEEXT */, SLB_NARGS(2), gl_pub, &buffer); } static void * APIENTRY exec_glMapTexture2DINTEL(GLuint texture, GLint level, GLbitfield access, const GLint *stride, const GLenum *layout) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)access; (void)stride; (void)layout; return (void *)(*exec)(gl_slb, 1996 /* NFOSMESA_GLMAPTEXTURE2DINTEL */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMapVertexAttrib1dAPPLE(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)u1; (void)u2; (void)stride; (void)order; (void)points; (*exec)(gl_slb, 1997 /* NFOSMESA_GLMAPVERTEXATTRIB1DAPPLE */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glMapVertexAttrib1fAPPLE(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)u1; (void)u2; (void)stride; (void)order; (void)points; (*exec)(gl_slb, 1998 /* NFOSMESA_GLMAPVERTEXATTRIB1FAPPLE */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glMapVertexAttrib2dAPPLE(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)u1; (void)u2; (void)ustride; (void)uorder; (void)v1; (void)v2; (void)vstride; (void)vorder; (void)points; (*exec)(gl_slb, 1999 /* NFOSMESA_GLMAPVERTEXATTRIB2DAPPLE */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glMapVertexAttrib2fAPPLE(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)u1; (void)u2; (void)ustride; (void)uorder; (void)v1; (void)v2; (void)vstride; (void)vorder; (void)points; (*exec)(gl_slb, 2000 /* NFOSMESA_GLMAPVERTEXATTRIB2FAPPLE */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glMaterialxOES(GLenum face, GLenum pname, GLfixed param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2001 /* NFOSMESA_GLMATERIALXOES */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glMaterialxvOES(GLenum face, GLenum pname, const GLfixed *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2002 /* NFOSMESA_GLMATERIALXVOES */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glMatrixFrustumEXT(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)left; (void)right; (void)bottom; (void)top; (void)zNear; (void)zFar; (*exec)(gl_slb, 2003 /* NFOSMESA_GLMATRIXFRUSTUMEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixLoadIdentityEXT(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2004 /* NFOSMESA_GLMATRIXLOADIDENTITYEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixLoadTransposedEXT(GLenum mode, const GLdouble *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)m; (*exec)(gl_slb, 2005 /* NFOSMESA_GLMATRIXLOADTRANSPOSEDEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixLoadTransposefEXT(GLenum mode, const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)m; (*exec)(gl_slb, 2006 /* NFOSMESA_GLMATRIXLOADTRANSPOSEFEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixLoaddEXT(GLenum mode, const GLdouble *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)m; (*exec)(gl_slb, 2007 /* NFOSMESA_GLMATRIXLOADDEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixLoadfEXT(GLenum mode, const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)m; (*exec)(gl_slb, 2008 /* NFOSMESA_GLMATRIXLOADFEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixMultTransposedEXT(GLenum mode, const GLdouble *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)m; (*exec)(gl_slb, 2009 /* NFOSMESA_GLMATRIXMULTTRANSPOSEDEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixMultTransposefEXT(GLenum mode, const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)m; (*exec)(gl_slb, 2010 /* NFOSMESA_GLMATRIXMULTTRANSPOSEFEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixMultdEXT(GLenum mode, const GLdouble *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)m; (*exec)(gl_slb, 2011 /* NFOSMESA_GLMATRIXMULTDEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixMultfEXT(GLenum mode, const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)m; (*exec)(gl_slb, 2012 /* NFOSMESA_GLMATRIXMULTFEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixOrthoEXT(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)left; (void)right; (void)bottom; (void)top; (void)zNear; (void)zFar; (*exec)(gl_slb, 2013 /* NFOSMESA_GLMATRIXORTHOEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixPopEXT(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2014 /* NFOSMESA_GLMATRIXPOPEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixPushEXT(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2015 /* NFOSMESA_GLMATRIXPUSHEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixRotatedEXT(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)angle; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2016 /* NFOSMESA_GLMATRIXROTATEDEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixRotatefEXT(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)angle; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2017 /* NFOSMESA_GLMATRIXROTATEFEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixScaledEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2018 /* NFOSMESA_GLMATRIXSCALEDEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixScalefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2019 /* NFOSMESA_GLMATRIXSCALEFEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixTranslatedEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2020 /* NFOSMESA_GLMATRIXTRANSLATEDEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMatrixTranslatefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2021 /* NFOSMESA_GLMATRIXTRANSLATEFEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMemoryBarrier(GLbitfield barriers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2022 /* NFOSMESA_GLMEMORYBARRIER */, SLB_NARGS(2), gl_pub, &barriers); } static void APIENTRY exec_glMemoryBarrierEXT(GLbitfield barriers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2023 /* NFOSMESA_GLMEMORYBARRIEREXT */, SLB_NARGS(2), gl_pub, &barriers); } static void APIENTRY exec_glMinSampleShading(GLfloat value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2024 /* NFOSMESA_GLMINSAMPLESHADING */, SLB_NARGS(2), gl_pub, &value); } static void APIENTRY exec_glMinSampleShadingARB(GLfloat value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2025 /* NFOSMESA_GLMINSAMPLESHADINGARB */, SLB_NARGS(2), gl_pub, &value); } static void APIENTRY exec_glMultMatrixxOES(const GLfixed *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2026 /* NFOSMESA_GLMULTMATRIXXOES */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glMultTransposeMatrixxOES(const GLfixed *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2027 /* NFOSMESA_GLMULTTRANSPOSEMATRIXXOES */, SLB_NARGS(2), gl_pub, &m); } static void APIENTRY exec_glMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)indirect; (void)drawcount; (void)stride; (*exec)(gl_slb, 2028 /* NFOSMESA_GLMULTIDRAWARRAYSINDIRECT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawArraysIndirectAMD(GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)indirect; (void)primcount; (void)stride; (*exec)(gl_slb, 2029 /* NFOSMESA_GLMULTIDRAWARRAYSINDIRECTAMD */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawArraysIndirectBindlessNV(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)indirect; (void)drawCount; (void)stride; (void)vertexBufferCount; (*exec)(gl_slb, 2030 /* NFOSMESA_GLMULTIDRAWARRAYSINDIRECTBINDLESSNV */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawArraysIndirectCountARB(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)indirect; (void)drawcount; (void)maxdrawcount; (void)stride; (*exec)(gl_slb, 2031 /* NFOSMESA_GLMULTIDRAWARRAYSINDIRECTCOUNTARB */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)type; (void)indices; (void)drawcount; (void)basevertex; (*exec)(gl_slb, 2032 /* NFOSMESA_GLMULTIDRAWELEMENTSBASEVERTEX */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)indirect; (void)drawcount; (void)stride; (*exec)(gl_slb, 2033 /* NFOSMESA_GLMULTIDRAWELEMENTSINDIRECT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawElementsIndirectAMD(GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)indirect; (void)primcount; (void)stride; (*exec)(gl_slb, 2034 /* NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTAMD */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawElementsIndirectBindlessNV(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)indirect; (void)drawCount; (void)stride; (void)vertexBufferCount; (*exec)(gl_slb, 2035 /* NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTBINDLESSNV */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawElementsIndirectCountARB(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)indirect; (void)drawcount; (void)maxdrawcount; (void)stride; (*exec)(gl_slb, 2036 /* NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTCOUNTARB */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiTexBufferEXT(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)internalformat; (void)buffer; (*exec)(gl_slb, 2037 /* NFOSMESA_GLMULTITEXBUFFEREXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexCoord1bOES(GLenum texture, GLbyte32 s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (*exec)(gl_slb, 2038 /* NFOSMESA_GLMULTITEXCOORD1BOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord1bvOES(GLenum texture, const GLbyte *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2039 /* NFOSMESA_GLMULTITEXCOORD1BVOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord1xOES(GLenum texture, GLfixed s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (*exec)(gl_slb, 2040 /* NFOSMESA_GLMULTITEXCOORD1XOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord1xvOES(GLenum texture, const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2041 /* NFOSMESA_GLMULTITEXCOORD1XVOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord2bOES(GLenum texture, GLbyte32 s, GLbyte32 t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (*exec)(gl_slb, 2042 /* NFOSMESA_GLMULTITEXCOORD2BOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord2bvOES(GLenum texture, const GLbyte *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2043 /* NFOSMESA_GLMULTITEXCOORD2BVOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord2xOES(GLenum texture, GLfixed s, GLfixed t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (*exec)(gl_slb, 2044 /* NFOSMESA_GLMULTITEXCOORD2XOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord2xvOES(GLenum texture, const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2045 /* NFOSMESA_GLMULTITEXCOORD2XVOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord3bOES(GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (*exec)(gl_slb, 2046 /* NFOSMESA_GLMULTITEXCOORD3BOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord3bvOES(GLenum texture, const GLbyte *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2047 /* NFOSMESA_GLMULTITEXCOORD3BVOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord3xOES(GLenum texture, GLfixed s, GLfixed t, GLfixed r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (*exec)(gl_slb, 2048 /* NFOSMESA_GLMULTITEXCOORD3XOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord3xvOES(GLenum texture, const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2049 /* NFOSMESA_GLMULTITEXCOORD3XVOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord4bOES(GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (void)q; (*exec)(gl_slb, 2050 /* NFOSMESA_GLMULTITEXCOORD4BOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord4bvOES(GLenum texture, const GLbyte *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2051 /* NFOSMESA_GLMULTITEXCOORD4BVOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord4xOES(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)s; (void)t; (void)r; (void)q; (*exec)(gl_slb, 2052 /* NFOSMESA_GLMULTITEXCOORD4XOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoord4xvOES(GLenum texture, const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2053 /* NFOSMESA_GLMULTITEXCOORD4XVOES */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)coords; (*exec)(gl_slb, 2054 /* NFOSMESA_GLMULTITEXCOORDP1UI */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)coords; (*exec)(gl_slb, 2055 /* NFOSMESA_GLMULTITEXCOORDP1UIV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)coords; (*exec)(gl_slb, 2056 /* NFOSMESA_GLMULTITEXCOORDP2UI */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)coords; (*exec)(gl_slb, 2057 /* NFOSMESA_GLMULTITEXCOORDP2UIV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)coords; (*exec)(gl_slb, 2058 /* NFOSMESA_GLMULTITEXCOORDP3UI */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)coords; (*exec)(gl_slb, 2059 /* NFOSMESA_GLMULTITEXCOORDP3UIV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)coords; (*exec)(gl_slb, 2060 /* NFOSMESA_GLMULTITEXCOORDP4UI */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)coords; (*exec)(gl_slb, 2061 /* NFOSMESA_GLMULTITEXCOORDP4UIV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glMultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 2062 /* NFOSMESA_GLMULTITEXCOORDPOINTEREXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexEnvfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)param; (*exec)(gl_slb, 2063 /* NFOSMESA_GLMULTITEXENVFEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 2064 /* NFOSMESA_GLMULTITEXENVFVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexEnviEXT(GLenum texunit, GLenum target, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)param; (*exec)(gl_slb, 2065 /* NFOSMESA_GLMULTITEXENVIEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 2066 /* NFOSMESA_GLMULTITEXENVIVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexGendEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coord; (void)pname; (void)param; (*exec)(gl_slb, 2067 /* NFOSMESA_GLMULTITEXGENDEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coord; (void)pname; (void)params; (*exec)(gl_slb, 2068 /* NFOSMESA_GLMULTITEXGENDVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexGenfEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coord; (void)pname; (void)param; (*exec)(gl_slb, 2069 /* NFOSMESA_GLMULTITEXGENFEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coord; (void)pname; (void)params; (*exec)(gl_slb, 2070 /* NFOSMESA_GLMULTITEXGENFVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexGeniEXT(GLenum texunit, GLenum coord, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coord; (void)pname; (void)param; (*exec)(gl_slb, 2071 /* NFOSMESA_GLMULTITEXGENIEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coord; (void)pname; (void)params; (*exec)(gl_slb, 2072 /* NFOSMESA_GLMULTITEXGENIVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)width; (void)border; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2073 /* NFOSMESA_GLMULTITEXIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)width; (void)height; (void)border; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2074 /* NFOSMESA_GLMULTITEXIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)width; (void)height; (void)depth; (void)border; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2075 /* NFOSMESA_GLMULTITEXIMAGE3DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 2076 /* NFOSMESA_GLMULTITEXPARAMETERIIVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, const GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 2077 /* NFOSMESA_GLMULTITEXPARAMETERIUIVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexParameterfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)param; (*exec)(gl_slb, 2078 /* NFOSMESA_GLMULTITEXPARAMETERFEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 2079 /* NFOSMESA_GLMULTITEXPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexParameteriEXT(GLenum texunit, GLenum target, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)param; (*exec)(gl_slb, 2080 /* NFOSMESA_GLMULTITEXPARAMETERIEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 2081 /* NFOSMESA_GLMULTITEXPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexRenderbufferEXT(GLenum texunit, GLenum target, GLuint renderbuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)renderbuffer; (*exec)(gl_slb, 2082 /* NFOSMESA_GLMULTITEXRENDERBUFFEREXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)width; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2083 /* NFOSMESA_GLMULTITEXSUBIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)yoffset; (void)width; (void)height; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2084 /* NFOSMESA_GLMULTITEXSUBIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2085 /* NFOSMESA_GLMULTITEXSUBIMAGE3DEXT */, SLB_NARGS(2), gl_pub, &texunit); } static void APIENTRY exec_glNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)data; (void)usage; (*exec)(gl_slb, 2086 /* NFOSMESA_GLNAMEDBUFFERDATAEXT */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glNamedBufferStorageEXT(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)data; (void)flags; (*exec)(gl_slb, 2087 /* NFOSMESA_GLNAMEDBUFFERSTORAGEEXT */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (void)data; (*exec)(gl_slb, 2088 /* NFOSMESA_GLNAMEDBUFFERSUBDATAEXT */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glNamedCopyBufferSubDataEXT(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)writeBuffer; (void)readOffset; (void)writeOffset; (void)size; (*exec)(gl_slb, 2089 /* NFOSMESA_GLNAMEDCOPYBUFFERSUBDATAEXT */, SLB_NARGS(2), gl_pub, &readBuffer); } static void APIENTRY exec_glNamedFramebufferParameteriEXT(GLuint framebuffer, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2090 /* NFOSMESA_GLNAMEDFRAMEBUFFERPARAMETERIEXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedFramebufferRenderbufferEXT(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)renderbuffertarget; (void)renderbuffer; (*exec)(gl_slb, 2091 /* NFOSMESA_GLNAMEDFRAMEBUFFERRENDERBUFFEREXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedFramebufferTexture1DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)textarget; (void)texture; (void)level; (*exec)(gl_slb, 2092 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE1DEXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedFramebufferTexture2DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)textarget; (void)texture; (void)level; (*exec)(gl_slb, 2093 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE2DEXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedFramebufferTexture3DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)textarget; (void)texture; (void)level; (void)zoffset; (*exec)(gl_slb, 2094 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE3DEXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedFramebufferTextureEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)texture; (void)level; (*exec)(gl_slb, 2095 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTUREEXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedFramebufferTextureFaceEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)texture; (void)level; (void)face; (*exec)(gl_slb, 2096 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTUREFACEEXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedFramebufferTextureLayerEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)texture; (void)level; (void)layer; (*exec)(gl_slb, 2097 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURELAYEREXT */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedProgramLocalParameter4dEXT(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2098 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4DEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glNamedProgramLocalParameter4dvEXT(GLuint program, GLenum target, GLuint index, const GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)params; (*exec)(gl_slb, 2099 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4DVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glNamedProgramLocalParameter4fEXT(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2100 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4FEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glNamedProgramLocalParameter4fvEXT(GLuint program, GLenum target, GLuint index, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)params; (*exec)(gl_slb, 2101 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glNamedProgramLocalParameterI4iEXT(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2102 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4IEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glNamedProgramLocalParameterI4ivEXT(GLuint program, GLenum target, GLuint index, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)params; (*exec)(gl_slb, 2103 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4IVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glNamedProgramLocalParameterI4uiEXT(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2104 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4UIEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glNamedProgramLocalParameterI4uivEXT(GLuint program, GLenum target, GLuint index, const GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)params; (*exec)(gl_slb, 2105 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4UIVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glNamedProgramLocalParameters4fvEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)count; (void)params; (*exec)(gl_slb, 2106 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERS4FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glNamedProgramLocalParametersI4ivEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)count; (void)params; (*exec)(gl_slb, 2107 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERSI4IVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glNamedProgramLocalParametersI4uivEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)index; (void)count; (void)params; (*exec)(gl_slb, 2108 /* NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glNamedProgramStringEXT(GLuint program, GLenum target, GLenum format, GLsizei len, const void *string) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)format; (void)len; (void)string; (*exec)(gl_slb, 2109 /* NFOSMESA_GLNAMEDPROGRAMSTRINGEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glNamedRenderbufferStorageEXT(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)width; (void)height; (*exec)(gl_slb, 2110 /* NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEEXT */, SLB_NARGS(2), gl_pub, &renderbuffer); } static void APIENTRY exec_glNamedRenderbufferStorageMultisampleCoverageEXT(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coverageSamples; (void)colorSamples; (void)internalformat; (void)width; (void)height; (*exec)(gl_slb, 2111 /* NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXT */, SLB_NARGS(2), gl_pub, &renderbuffer); } static void APIENTRY exec_glNamedRenderbufferStorageMultisampleEXT(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samples; (void)internalformat; (void)width; (void)height; (*exec)(gl_slb, 2112 /* NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXT */, SLB_NARGS(2), gl_pub, &renderbuffer); } static void APIENTRY exec_glNamedStringARB(GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)namelen; (void)name; (void)stringlen; (void)string; (*exec)(gl_slb, 2113 /* NFOSMESA_GLNAMEDSTRINGARB */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ny; (void)nz; (*exec)(gl_slb, 2114 /* NFOSMESA_GLNORMAL3XOES */, SLB_NARGS(2), gl_pub, &nx); } static void APIENTRY exec_glNormal3xvOES(const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2115 /* NFOSMESA_GLNORMAL3XVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glNormalFormatNV(GLenum type, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (*exec)(gl_slb, 2116 /* NFOSMESA_GLNORMALFORMATNV */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glNormalP3ui(GLenum type, GLuint coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2117 /* NFOSMESA_GLNORMALP3UI */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glNormalP3uiv(GLenum type, const GLuint *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2118 /* NFOSMESA_GLNORMALP3UIV */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; (void)length; (void)label; (*exec)(gl_slb, 2119 /* NFOSMESA_GLOBJECTLABEL */, SLB_NARGS(2), gl_pub, &identifier); } static void APIENTRY exec_glObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)length; (void)label; (*exec)(gl_slb, 2120 /* NFOSMESA_GLOBJECTPTRLABEL */, SLB_NARGS(2), gl_pub, &ptr); } static GLenum APIENTRY exec_glObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; (void)option; return (GLenum)(*exec)(gl_slb, 2121 /* NFOSMESA_GLOBJECTPURGEABLEAPPLE */, SLB_NARGS(2), gl_pub, &objectType); } static GLenum APIENTRY exec_glObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)name; (void)option; return (GLenum)(*exec)(gl_slb, 2122 /* NFOSMESA_GLOBJECTUNPURGEABLEAPPLE */, SLB_NARGS(2), gl_pub, &objectType); } static void APIENTRY exec_glOrthofOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)r; (void)b; (void)t; (void)n; (void)f; (*exec)(gl_slb, 2123 /* NFOSMESA_GLORTHOFOES */, SLB_NARGS(2), gl_pub, &l); } static void APIENTRY exec_glOrthoxOES(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)r; (void)b; (void)t; (void)n; (void)f; (*exec)(gl_slb, 2124 /* NFOSMESA_GLORTHOXOES */, SLB_NARGS(2), gl_pub, &l); } static void APIENTRY exec_glPassThroughxOES(GLfixed token) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2125 /* NFOSMESA_GLPASSTHROUGHXOES */, SLB_NARGS(2), gl_pub, &token); } static void APIENTRY exec_glPatchParameterfv(GLenum pname, const GLfloat *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)values; (*exec)(gl_slb, 2126 /* NFOSMESA_GLPATCHPARAMETERFV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPatchParameteri(GLenum pname, GLint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 2127 /* NFOSMESA_GLPATCHPARAMETERI */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPathColorGenNV(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)genMode; (void)colorFormat; (void)coeffs; (*exec)(gl_slb, 2128 /* NFOSMESA_GLPATHCOLORGENNV */, SLB_NARGS(2), gl_pub, &color); } static void APIENTRY exec_glPathCommandsNV(GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)numCommands; (void)commands; (void)numCoords; (void)coordType; (void)coords; (*exec)(gl_slb, 2129 /* NFOSMESA_GLPATHCOMMANDSNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const void *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)numCoords; (void)coordType; (void)coords; (*exec)(gl_slb, 2130 /* NFOSMESA_GLPATHCOORDSNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glPathCoverDepthFuncNV(GLenum func) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2131 /* NFOSMESA_GLPATHCOVERDEPTHFUNCNV */, SLB_NARGS(2), gl_pub, &func); } static void APIENTRY exec_glPathDashArrayNV(GLuint path, GLsizei dashCount, const GLfloat *dashArray) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)dashCount; (void)dashArray; (*exec)(gl_slb, 2132 /* NFOSMESA_GLPATHDASHARRAYNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glPathFogGenNV(GLenum genMode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2133 /* NFOSMESA_GLPATHFOGGENNV */, SLB_NARGS(2), gl_pub, &genMode); } static void APIENTRY exec_glPathGlyphRangeNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)fontTarget; (void)fontName; (void)fontStyle; (void)firstGlyph; (void)numGlyphs; (void)handleMissingGlyphs; (void)pathParameterTemplate; (void)emScale; (*exec)(gl_slb, 2134 /* NFOSMESA_GLPATHGLYPHRANGENV */, SLB_NARGS(2), gl_pub, &firstPathName); } static void APIENTRY exec_glPathGlyphsNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)fontTarget; (void)fontName; (void)fontStyle; (void)numGlyphs; (void)type; (void)charcodes; (void)handleMissingGlyphs; (void)pathParameterTemplate; (void)emScale; (*exec)(gl_slb, 2135 /* NFOSMESA_GLPATHGLYPHSNV */, SLB_NARGS(2), gl_pub, &firstPathName); } static void APIENTRY exec_glPathParameterfNV(GLuint path, GLenum pname, GLfloat value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)value; (*exec)(gl_slb, 2136 /* NFOSMESA_GLPATHPARAMETERFNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glPathParameterfvNV(GLuint path, GLenum pname, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)value; (*exec)(gl_slb, 2137 /* NFOSMESA_GLPATHPARAMETERFVNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glPathParameteriNV(GLuint path, GLenum pname, GLint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)value; (*exec)(gl_slb, 2138 /* NFOSMESA_GLPATHPARAMETERINV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glPathParameterivNV(GLuint path, GLenum pname, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)value; (*exec)(gl_slb, 2139 /* NFOSMESA_GLPATHPARAMETERIVNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glPathStencilDepthOffsetNV(GLfloat factor, GLfloat units) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)units; (*exec)(gl_slb, 2140 /* NFOSMESA_GLPATHSTENCILDEPTHOFFSETNV */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glPathStencilFuncNV(GLenum func, GLint ref, GLuint mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ref; (void)mask; (*exec)(gl_slb, 2141 /* NFOSMESA_GLPATHSTENCILFUNCNV */, SLB_NARGS(2), gl_pub, &func); } static void APIENTRY exec_glPathStringNV(GLuint path, GLenum format, GLsizei length, const void *pathString) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)length; (void)pathString; (*exec)(gl_slb, 2142 /* NFOSMESA_GLPATHSTRINGNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glPathSubCommandsNV(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)commandStart; (void)commandsToDelete; (void)numCommands; (void)commands; (void)numCoords; (void)coordType; (void)coords; (*exec)(gl_slb, 2143 /* NFOSMESA_GLPATHSUBCOMMANDSNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coordStart; (void)numCoords; (void)coordType; (void)coords; (*exec)(gl_slb, 2144 /* NFOSMESA_GLPATHSUBCOORDSNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glPathTexGenNV(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)genMode; (void)components; (void)coeffs; (*exec)(gl_slb, 2145 /* NFOSMESA_GLPATHTEXGENNV */, SLB_NARGS(2), gl_pub, &texCoordSet); } static void APIENTRY exec_glPauseTransformFeedback(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2146 /* NFOSMESA_GLPAUSETRANSFORMFEEDBACK */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glPauseTransformFeedbackNV(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2147 /* NFOSMESA_GLPAUSETRANSFORMFEEDBACKNV */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glPixelMapx(GLenum map, GLint size, const GLfixed *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)values; (*exec)(gl_slb, 2148 /* NFOSMESA_GLPIXELMAPX */, SLB_NARGS(2), gl_pub, &map); } static void APIENTRY exec_glPixelStorex(GLenum pname, GLfixed param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 2149 /* NFOSMESA_GLPIXELSTOREX */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPixelTransferxOES(GLenum pname, GLfixed param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 2150 /* NFOSMESA_GLPIXELTRANSFERXOES */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPixelZoomxOES(GLfixed xfactor, GLfixed yfactor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)yfactor; (*exec)(gl_slb, 2151 /* NFOSMESA_GLPIXELZOOMXOES */, SLB_NARGS(2), gl_pub, &xfactor); } static GLboolean APIENTRY exec_glPointAlongPathNV(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)startSegment; (void)numSegments; (void)distance; (void)x; (void)y; (void)tangentX; (void)tangentY; return (GLboolean)(*exec)(gl_slb, 2152 /* NFOSMESA_GLPOINTALONGPATHNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glPointParameterxvOES(GLenum pname, const GLfixed *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)params; (*exec)(gl_slb, 2153 /* NFOSMESA_GLPOINTPARAMETERXVOES */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glPointSizePointerAPPLE(GLenum type, GLsizei stride, const GLvoid *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stride; (void)pointer; (*exec)(gl_slb, 2154 /* NFOSMESA_GLPOINTSIZEPOINTERAPPLE */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glPointSizexOES(GLfixed size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2155 /* NFOSMESA_GLPOINTSIZEXOES */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glPolygonOffsetxOES(GLfixed factor, GLfixed units) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)units; (*exec)(gl_slb, 2156 /* NFOSMESA_GLPOLYGONOFFSETXOES */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glPopDebugGroup(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2157 /* NFOSMESA_GLPOPDEBUGGROUP */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glPopGroupMarkerEXT(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2158 /* NFOSMESA_GLPOPGROUPMARKEREXT */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glPresentFrameDualFillNV(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)minPresentTime; (void)beginPresentTimeId; (void)presentDurationId; (void)type; (void)target0; (void)fill0; (void)target1; (void)fill1; (void)target2; (void)fill2; (void)target3; (void)fill3; (*exec)(gl_slb, 2159 /* NFOSMESA_GLPRESENTFRAMEDUALFILLNV */, SLB_NARGS(2), gl_pub, &video_slot); } static void APIENTRY exec_glPresentFrameKeyedNV(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)minPresentTime; (void)beginPresentTimeId; (void)presentDurationId; (void)type; (void)target0; (void)fill0; (void)key0; (void)target1; (void)fill1; (void)key1; (*exec)(gl_slb, 2160 /* NFOSMESA_GLPRESENTFRAMEKEYEDNV */, SLB_NARGS(2), gl_pub, &video_slot); } static void APIENTRY exec_glPrimitiveRestartIndex(GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2161 /* NFOSMESA_GLPRIMITIVERESTARTINDEX */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glPrioritizeTexturesxOES(GLsizei n, const GLuint *textures, const GLfixed *priorities) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)textures; (void)priorities; (*exec)(gl_slb, 2162 /* NFOSMESA_GLPRIORITIZETEXTURESXOES */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)binaryFormat; (void)binary; (void)length; (*exec)(gl_slb, 2163 /* NFOSMESA_GLPROGRAMBINARY */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramBufferParametersIivNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bindingIndex; (void)wordIndex; (void)count; (void)params; (*exec)(gl_slb, 2164 /* NFOSMESA_GLPROGRAMBUFFERPARAMETERSIIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramBufferParametersIuivNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bindingIndex; (void)wordIndex; (void)count; (void)params; (*exec)(gl_slb, 2165 /* NFOSMESA_GLPROGRAMBUFFERPARAMETERSIUIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramBufferParametersfvNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bindingIndex; (void)wordIndex; (void)count; (void)params; (*exec)(gl_slb, 2166 /* NFOSMESA_GLPROGRAMBUFFERPARAMETERSFVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramCallbackMESA(GLenum target, GLprogramcallbackMESA callback, GLvoid *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)callback; (void)data; (*exec)(gl_slb, 2167 /* NFOSMESA_GLPROGRAMCALLBACKMESA */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramEnvParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2168 /* NFOSMESA_GLPROGRAMENVPARAMETERI4INV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramEnvParameterI4ivNV(GLenum target, GLuint index, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 2169 /* NFOSMESA_GLPROGRAMENVPARAMETERI4IVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramEnvParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2170 /* NFOSMESA_GLPROGRAMENVPARAMETERI4UINV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramEnvParameterI4uivNV(GLenum target, GLuint index, const GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 2171 /* NFOSMESA_GLPROGRAMENVPARAMETERI4UIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramEnvParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)count; (void)params; (*exec)(gl_slb, 2172 /* NFOSMESA_GLPROGRAMENVPARAMETERS4FVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramEnvParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)count; (void)params; (*exec)(gl_slb, 2173 /* NFOSMESA_GLPROGRAMENVPARAMETERSI4IVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramEnvParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)count; (void)params; (*exec)(gl_slb, 2174 /* NFOSMESA_GLPROGRAMENVPARAMETERSI4UIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramLocalParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2175 /* NFOSMESA_GLPROGRAMLOCALPARAMETERI4INV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramLocalParameterI4ivNV(GLenum target, GLuint index, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 2176 /* NFOSMESA_GLPROGRAMLOCALPARAMETERI4IVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramLocalParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2177 /* NFOSMESA_GLPROGRAMLOCALPARAMETERI4UINV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramLocalParameterI4uivNV(GLenum target, GLuint index, const GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)params; (*exec)(gl_slb, 2178 /* NFOSMESA_GLPROGRAMLOCALPARAMETERI4UIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)count; (void)params; (*exec)(gl_slb, 2179 /* NFOSMESA_GLPROGRAMLOCALPARAMETERS4FVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramLocalParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)count; (void)params; (*exec)(gl_slb, 2180 /* NFOSMESA_GLPROGRAMLOCALPARAMETERSI4IVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramLocalParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)count; (void)params; (*exec)(gl_slb, 2181 /* NFOSMESA_GLPROGRAMLOCALPARAMETERSI4UIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramParameteri(GLuint program, GLenum pname, GLint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)value; (*exec)(gl_slb, 2182 /* NFOSMESA_GLPROGRAMPARAMETERI */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramParameteriARB(GLuint program, GLenum pname, GLint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)value; (*exec)(gl_slb, 2183 /* NFOSMESA_GLPROGRAMPARAMETERIARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramParameteriEXT(GLuint program, GLenum pname, GLint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)value; (*exec)(gl_slb, 2184 /* NFOSMESA_GLPROGRAMPARAMETERIEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramSubroutineParametersuivNV(GLenum target, GLsizei count, const GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)params; (*exec)(gl_slb, 2185 /* NFOSMESA_GLPROGRAMSUBROUTINEPARAMETERSUIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProgramUniform1d(GLuint program, GLint location, GLdouble v0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (*exec)(gl_slb, 2186 /* NFOSMESA_GLPROGRAMUNIFORM1D */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1dEXT(GLuint program, GLint location, GLdouble x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (*exec)(gl_slb, 2187 /* NFOSMESA_GLPROGRAMUNIFORM1DEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2188 /* NFOSMESA_GLPROGRAMUNIFORM1DV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2189 /* NFOSMESA_GLPROGRAMUNIFORM1DVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1f(GLuint program, GLint location, GLfloat v0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (*exec)(gl_slb, 2190 /* NFOSMESA_GLPROGRAMUNIFORM1F */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1fEXT(GLuint program, GLint location, GLfloat v0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (*exec)(gl_slb, 2191 /* NFOSMESA_GLPROGRAMUNIFORM1FEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2192 /* NFOSMESA_GLPROGRAMUNIFORM1FV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2193 /* NFOSMESA_GLPROGRAMUNIFORM1FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1i(GLuint program, GLint location, GLint v0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (*exec)(gl_slb, 2194 /* NFOSMESA_GLPROGRAMUNIFORM1I */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1i64NV(GLuint program, GLint location, GLint64EXT x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (*exec)(gl_slb, 2195 /* NFOSMESA_GLPROGRAMUNIFORM1I64NV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2196 /* NFOSMESA_GLPROGRAMUNIFORM1I64VNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1iEXT(GLuint program, GLint location, GLint v0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (*exec)(gl_slb, 2197 /* NFOSMESA_GLPROGRAMUNIFORM1IEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2198 /* NFOSMESA_GLPROGRAMUNIFORM1IV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2199 /* NFOSMESA_GLPROGRAMUNIFORM1IVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1ui(GLuint program, GLint location, GLuint v0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (*exec)(gl_slb, 2200 /* NFOSMESA_GLPROGRAMUNIFORM1UI */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1ui64NV(GLuint program, GLint location, GLuint64EXT x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (*exec)(gl_slb, 2201 /* NFOSMESA_GLPROGRAMUNIFORM1UI64NV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2202 /* NFOSMESA_GLPROGRAMUNIFORM1UI64VNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1uiEXT(GLuint program, GLint location, GLuint v0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (*exec)(gl_slb, 2203 /* NFOSMESA_GLPROGRAMUNIFORM1UIEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2204 /* NFOSMESA_GLPROGRAMUNIFORM1UIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2205 /* NFOSMESA_GLPROGRAMUNIFORM1UIVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (*exec)(gl_slb, 2206 /* NFOSMESA_GLPROGRAMUNIFORM2D */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2dEXT(GLuint program, GLint location, GLdouble x, GLdouble y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (*exec)(gl_slb, 2207 /* NFOSMESA_GLPROGRAMUNIFORM2DEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2208 /* NFOSMESA_GLPROGRAMUNIFORM2DV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2209 /* NFOSMESA_GLPROGRAMUNIFORM2DVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (*exec)(gl_slb, 2210 /* NFOSMESA_GLPROGRAMUNIFORM2F */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (*exec)(gl_slb, 2211 /* NFOSMESA_GLPROGRAMUNIFORM2FEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2212 /* NFOSMESA_GLPROGRAMUNIFORM2FV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2213 /* NFOSMESA_GLPROGRAMUNIFORM2FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (*exec)(gl_slb, 2214 /* NFOSMESA_GLPROGRAMUNIFORM2I */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (*exec)(gl_slb, 2215 /* NFOSMESA_GLPROGRAMUNIFORM2I64NV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2216 /* NFOSMESA_GLPROGRAMUNIFORM2I64VNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2iEXT(GLuint program, GLint location, GLint v0, GLint v1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (*exec)(gl_slb, 2217 /* NFOSMESA_GLPROGRAMUNIFORM2IEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2218 /* NFOSMESA_GLPROGRAMUNIFORM2IV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2219 /* NFOSMESA_GLPROGRAMUNIFORM2IVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (*exec)(gl_slb, 2220 /* NFOSMESA_GLPROGRAMUNIFORM2UI */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (*exec)(gl_slb, 2221 /* NFOSMESA_GLPROGRAMUNIFORM2UI64NV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2222 /* NFOSMESA_GLPROGRAMUNIFORM2UI64VNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (*exec)(gl_slb, 2223 /* NFOSMESA_GLPROGRAMUNIFORM2UIEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2224 /* NFOSMESA_GLPROGRAMUNIFORM2UIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2225 /* NFOSMESA_GLPROGRAMUNIFORM2UIVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (void)v2; (*exec)(gl_slb, 2226 /* NFOSMESA_GLPROGRAMUNIFORM3D */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2227 /* NFOSMESA_GLPROGRAMUNIFORM3DEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2228 /* NFOSMESA_GLPROGRAMUNIFORM3DV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2229 /* NFOSMESA_GLPROGRAMUNIFORM3DVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (void)v2; (*exec)(gl_slb, 2230 /* NFOSMESA_GLPROGRAMUNIFORM3F */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (void)v2; (*exec)(gl_slb, 2231 /* NFOSMESA_GLPROGRAMUNIFORM3FEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2232 /* NFOSMESA_GLPROGRAMUNIFORM3FV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2233 /* NFOSMESA_GLPROGRAMUNIFORM3FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (void)v2; (*exec)(gl_slb, 2234 /* NFOSMESA_GLPROGRAMUNIFORM3I */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2235 /* NFOSMESA_GLPROGRAMUNIFORM3I64NV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2236 /* NFOSMESA_GLPROGRAMUNIFORM3I64VNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (void)v2; (*exec)(gl_slb, 2237 /* NFOSMESA_GLPROGRAMUNIFORM3IEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2238 /* NFOSMESA_GLPROGRAMUNIFORM3IV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2239 /* NFOSMESA_GLPROGRAMUNIFORM3IVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (void)v2; (*exec)(gl_slb, 2240 /* NFOSMESA_GLPROGRAMUNIFORM3UI */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2241 /* NFOSMESA_GLPROGRAMUNIFORM3UI64NV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2242 /* NFOSMESA_GLPROGRAMUNIFORM3UI64VNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (void)v2; (*exec)(gl_slb, 2243 /* NFOSMESA_GLPROGRAMUNIFORM3UIEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2244 /* NFOSMESA_GLPROGRAMUNIFORM3UIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2245 /* NFOSMESA_GLPROGRAMUNIFORM3UIVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (void)v2; (void)v3; (*exec)(gl_slb, 2246 /* NFOSMESA_GLPROGRAMUNIFORM4D */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2247 /* NFOSMESA_GLPROGRAMUNIFORM4DEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2248 /* NFOSMESA_GLPROGRAMUNIFORM4DV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2249 /* NFOSMESA_GLPROGRAMUNIFORM4DVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (void)v2; (void)v3; (*exec)(gl_slb, 2250 /* NFOSMESA_GLPROGRAMUNIFORM4F */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (void)v2; (void)v3; (*exec)(gl_slb, 2251 /* NFOSMESA_GLPROGRAMUNIFORM4FEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2252 /* NFOSMESA_GLPROGRAMUNIFORM4FV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2253 /* NFOSMESA_GLPROGRAMUNIFORM4FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (void)v2; (void)v3; (*exec)(gl_slb, 2254 /* NFOSMESA_GLPROGRAMUNIFORM4I */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2255 /* NFOSMESA_GLPROGRAMUNIFORM4I64NV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2256 /* NFOSMESA_GLPROGRAMUNIFORM4I64VNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (void)v2; (void)v3; (*exec)(gl_slb, 2257 /* NFOSMESA_GLPROGRAMUNIFORM4IEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2258 /* NFOSMESA_GLPROGRAMUNIFORM4IV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2259 /* NFOSMESA_GLPROGRAMUNIFORM4IVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (void)v2; (void)v3; (*exec)(gl_slb, 2260 /* NFOSMESA_GLPROGRAMUNIFORM4UI */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2261 /* NFOSMESA_GLPROGRAMUNIFORM4UI64NV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2262 /* NFOSMESA_GLPROGRAMUNIFORM4UI64VNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)v0; (void)v1; (void)v2; (void)v3; (*exec)(gl_slb, 2263 /* NFOSMESA_GLPROGRAMUNIFORM4UIEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2264 /* NFOSMESA_GLPROGRAMUNIFORM4UIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2265 /* NFOSMESA_GLPROGRAMUNIFORM4UIVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformHandleui64ARB(GLuint program, GLint location, GLuint64 value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)value; (*exec)(gl_slb, 2266 /* NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64ARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformHandleui64NV(GLuint program, GLint location, GLuint64 value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)value; (*exec)(gl_slb, 2267 /* NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64NV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformHandleui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)values; (*exec)(gl_slb, 2268 /* NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64VARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformHandleui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64 *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)values; (*exec)(gl_slb, 2269 /* NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64VNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2270 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2DV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2271 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2DVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2272 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2FV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2273 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2274 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3DV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix2x3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2275 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3DVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2276 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3FV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix2x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2277 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2278 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4DV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix2x4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2279 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4DVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2280 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4FV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix2x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2281 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2282 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3DV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2283 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3DVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2284 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3FV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2285 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2286 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2DV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix3x2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2287 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2DVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2288 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2FV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix3x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2289 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2290 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4DV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix3x4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2291 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4DVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2292 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4FV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix3x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2293 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2294 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4DV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2295 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4DVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2296 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4FV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2297 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2298 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2DV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix4x2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2299 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2DVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2300 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2FV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix4x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2301 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2302 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3DV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix4x3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2303 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3DVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2304 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3FV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformMatrix4x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2305 /* NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3FVEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformui64NV(GLuint program, GLint location, GLuint64EXT value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)value; (*exec)(gl_slb, 2306 /* NFOSMESA_GLPROGRAMUNIFORMUI64NV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniformui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2307 /* NFOSMESA_GLPROGRAMUNIFORMUI64VNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramVertexLimitNV(GLenum target, GLint limit) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)limit; (*exec)(gl_slb, 2308 /* NFOSMESA_GLPROGRAMVERTEXLIMITNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glProvokingVertex(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2309 /* NFOSMESA_GLPROVOKINGVERTEX */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glProvokingVertexEXT(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2310 /* NFOSMESA_GLPROVOKINGVERTEXEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glPushClientAttribDefaultEXT(GLbitfield mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2311 /* NFOSMESA_GLPUSHCLIENTATTRIBDEFAULTEXT */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (void)length; (void)message; (*exec)(gl_slb, 2312 /* NFOSMESA_GLPUSHDEBUGGROUP */, SLB_NARGS(2), gl_pub, &source); } static void APIENTRY exec_glPushGroupMarkerEXT(GLsizei length, const GLchar *marker) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)marker; (*exec)(gl_slb, 2313 /* NFOSMESA_GLPUSHGROUPMARKEREXT */, SLB_NARGS(2), gl_pub, &length); } static void APIENTRY exec_glQueryCounter(GLuint id, GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (*exec)(gl_slb, 2314 /* NFOSMESA_GLQUERYCOUNTER */, SLB_NARGS(2), gl_pub, &id); } static GLbitfield APIENTRY exec_glQueryMatrixxOES(GLfixed *mantissa, GLint *exponent) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)exponent; return (GLbitfield)(*exec)(gl_slb, 2315 /* NFOSMESA_GLQUERYMATRIXXOES */, SLB_NARGS(2), gl_pub, &mantissa); } static void APIENTRY exec_glQueryObjectParameteruiAMD(GLenum target, GLuint id, GLenum pname, GLuint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (void)pname; (void)param; (*exec)(gl_slb, 2316 /* NFOSMESA_GLQUERYOBJECTPARAMETERUIAMD */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glRasterPos2xOES(GLfixed x, GLfixed y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 2317 /* NFOSMESA_GLRASTERPOS2XOES */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos2xvOES(const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2318 /* NFOSMESA_GLRASTERPOS2XVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glRasterPos3xOES(GLfixed x, GLfixed y, GLfixed z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 2319 /* NFOSMESA_GLRASTERPOS3XOES */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos3xvOES(const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2320 /* NFOSMESA_GLRASTERPOS3XVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glRasterPos4xOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2321 /* NFOSMESA_GLRASTERPOS4XOES */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRasterPos4xvOES(const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2322 /* NFOSMESA_GLRASTERPOS4XVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glReadnPixelsARB(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)width; (void)height; (void)format; (void)type; (void)bufSize; (void)data; (*exec)(gl_slb, 2323 /* NFOSMESA_GLREADNPIXELSARB */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glRectxOES(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y1; (void)x2; (void)y2; (*exec)(gl_slb, 2324 /* NFOSMESA_GLRECTXOES */, SLB_NARGS(2), gl_pub, &x1); } static void APIENTRY exec_glRectxvOES(const GLfixed *v1, const GLfixed *v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v2; (*exec)(gl_slb, 2325 /* NFOSMESA_GLRECTXVOES */, SLB_NARGS(2), gl_pub, &v1); } static void APIENTRY exec_glReleaseShaderCompiler(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2326 /* NFOSMESA_GLRELEASESHADERCOMPILER */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)width; (void)height; (*exec)(gl_slb, 2327 /* NFOSMESA_GLRENDERBUFFERSTORAGE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)width; (void)height; (*exec)(gl_slb, 2328 /* NFOSMESA_GLRENDERBUFFERSTORAGEEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samples; (void)internalformat; (void)width; (void)height; (*exec)(gl_slb, 2329 /* NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glRenderbufferStorageMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coverageSamples; (void)colorSamples; (void)internalformat; (void)width; (void)height; (*exec)(gl_slb, 2330 /* NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samples; (void)internalformat; (void)width; (void)height; (*exec)(gl_slb, 2331 /* NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLEEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glResumeTransformFeedback(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2332 /* NFOSMESA_GLRESUMETRANSFORMFEEDBACK */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glResumeTransformFeedbackNV(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2333 /* NFOSMESA_GLRESUMETRANSFORMFEEDBACKNV */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2334 /* NFOSMESA_GLROTATEXOES */, SLB_NARGS(2), gl_pub, &angle); } static void APIENTRY exec_glSampleCoverageOES(GLfixed value, GLboolean32 invert) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)invert; (*exec)(gl_slb, 2335 /* NFOSMESA_GLSAMPLECOVERAGEOES */, SLB_NARGS(2), gl_pub, &value); } static void APIENTRY exec_glSampleMaskIndexedNV(GLuint index, GLbitfield mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mask; (*exec)(gl_slb, 2336 /* NFOSMESA_GLSAMPLEMASKINDEXEDNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glSampleMaski(GLuint maskNumber, GLbitfield mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mask; (*exec)(gl_slb, 2337 /* NFOSMESA_GLSAMPLEMASKI */, SLB_NARGS(2), gl_pub, &maskNumber); } static void APIENTRY exec_glSamplePass(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2338 /* NFOSMESA_GLSAMPLEPASS */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glSamplePassARB(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2339 /* NFOSMESA_GLSAMPLEPASSARB */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2340 /* NFOSMESA_GLSAMPLERPARAMETERIIV */, SLB_NARGS(2), gl_pub, &sampler); } static void APIENTRY exec_glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2341 /* NFOSMESA_GLSAMPLERPARAMETERIUIV */, SLB_NARGS(2), gl_pub, &sampler); } static void APIENTRY exec_glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2342 /* NFOSMESA_GLSAMPLERPARAMETERF */, SLB_NARGS(2), gl_pub, &sampler); } static void APIENTRY exec_glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2343 /* NFOSMESA_GLSAMPLERPARAMETERFV */, SLB_NARGS(2), gl_pub, &sampler); } static void APIENTRY exec_glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2344 /* NFOSMESA_GLSAMPLERPARAMETERI */, SLB_NARGS(2), gl_pub, &sampler); } static void APIENTRY exec_glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2345 /* NFOSMESA_GLSAMPLERPARAMETERIV */, SLB_NARGS(2), gl_pub, &sampler); } static void APIENTRY exec_glScalexOES(GLfixed x, GLfixed y, GLfixed z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 2346 /* NFOSMESA_GLSCALEXOES */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glScissorArrayv(GLuint first, GLsizei count, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 2347 /* NFOSMESA_GLSCISSORARRAYV */, SLB_NARGS(2), gl_pub, &first); } static void APIENTRY exec_glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)left; (void)bottom; (void)width; (void)height; (*exec)(gl_slb, 2348 /* NFOSMESA_GLSCISSORINDEXED */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glScissorIndexedv(GLuint index, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2349 /* NFOSMESA_GLSCISSORINDEXEDV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glSecondaryColorFormatNV(GLint size, GLenum type, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (*exec)(gl_slb, 2350 /* NFOSMESA_GLSECONDARYCOLORFORMATNV */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glSecondaryColorP3ui(GLenum type, GLuint color) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)color; (*exec)(gl_slb, 2351 /* NFOSMESA_GLSECONDARYCOLORP3UI */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glSecondaryColorP3uiv(GLenum type, const GLuint *color) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)color; (*exec)(gl_slb, 2352 /* NFOSMESA_GLSECONDARYCOLORP3UIV */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean32 enable, GLuint group, GLint numCounters, GLuint *counterList) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)enable; (void)group; (void)numCounters; (void)counterList; (*exec)(gl_slb, 2353 /* NFOSMESA_GLSELECTPERFMONITORCOUNTERSAMD */, SLB_NARGS(2), gl_pub, &monitor); } static void APIENTRY exec_glSetMultisamplefvAMD(GLenum pname, GLuint index, const GLfloat *val) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)val; (*exec)(gl_slb, 2354 /* NFOSMESA_GLSETMULTISAMPLEFVAMD */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)shaders; (void)binaryformat; (void)binary; (void)length; (*exec)(gl_slb, 2355 /* NFOSMESA_GLSHADERBINARY */, SLB_NARGS(2), gl_pub, &count); } static void APIENTRY exec_glShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)string; (void)length; (*exec)(gl_slb, 2356 /* NFOSMESA_GLSHADERSOURCE */, SLB_NARGS(2), gl_pub, &shader); } static void APIENTRY exec_glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)storageBlockIndex; (void)storageBlockBinding; (*exec)(gl_slb, 2357 /* NFOSMESA_GLSHADERSTORAGEBLOCKBINDING */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glStencilClearTagEXT(GLsizei stencilTagBits, GLuint stencilClearTag) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stencilClearTag; (*exec)(gl_slb, 2358 /* NFOSMESA_GLSTENCILCLEARTAGEXT */, SLB_NARGS(2), gl_pub, &stencilTagBits); } static void APIENTRY exec_glStencilFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pathNameType; (void)paths; (void)pathBase; (void)fillMode; (void)mask; (void)transformType; (void)transformValues; (*exec)(gl_slb, 2359 /* NFOSMESA_GLSTENCILFILLPATHINSTANCEDNV */, SLB_NARGS(2), gl_pub, &numPaths); } static void APIENTRY exec_glStencilFillPathNV(GLuint path, GLenum fillMode, GLuint mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)fillMode; (void)mask; (*exec)(gl_slb, 2360 /* NFOSMESA_GLSTENCILFILLPATHNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)func; (void)ref; (void)mask; (*exec)(gl_slb, 2361 /* NFOSMESA_GLSTENCILFUNCSEPARATE */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glStencilMaskSeparate(GLenum face, GLuint mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mask; (*exec)(gl_slb, 2362 /* NFOSMESA_GLSTENCILMASKSEPARATE */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)sfail; (void)dpfail; (void)dppass; (*exec)(gl_slb, 2363 /* NFOSMESA_GLSTENCILOPSEPARATE */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glStencilOpValueAMD(GLenum face, GLuint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 2364 /* NFOSMESA_GLSTENCILOPVALUEAMD */, SLB_NARGS(2), gl_pub, &face); } static void APIENTRY exec_glStencilStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pathNameType; (void)paths; (void)pathBase; (void)reference; (void)mask; (void)transformType; (void)transformValues; (*exec)(gl_slb, 2365 /* NFOSMESA_GLSTENCILSTROKEPATHINSTANCEDNV */, SLB_NARGS(2), gl_pub, &numPaths); } static void APIENTRY exec_glStencilStrokePathNV(GLuint path, GLint reference, GLuint mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)reference; (void)mask; (*exec)(gl_slb, 2366 /* NFOSMESA_GLSTENCILSTROKEPATHNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glStringMarkerGREMEDY(GLsizei len, const void *string) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)string; (*exec)(gl_slb, 2367 /* NFOSMESA_GLSTRINGMARKERGREMEDY */, SLB_NARGS(2), gl_pub, &len); } static void APIENTRY exec_glSwapAPPLE(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2368 /* NFOSMESA_GLSWAPAPPLE */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glSyncTextureINTEL(GLuint texture) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2369 /* NFOSMESA_GLSYNCTEXTUREINTEL */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTessellationFactorAMD(GLfloat factor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2370 /* NFOSMESA_GLTESSELLATIONFACTORAMD */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glTessellationModeAMD(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2371 /* NFOSMESA_GLTESSELLATIONMODEAMD */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)buffer; (*exec)(gl_slb, 2372 /* NFOSMESA_GLTEXBUFFER */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexBufferARB(GLenum target, GLenum internalformat, GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)buffer; (*exec)(gl_slb, 2373 /* NFOSMESA_GLTEXBUFFERARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)buffer; (*exec)(gl_slb, 2374 /* NFOSMESA_GLTEXBUFFEREXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)buffer; (void)offset; (void)size; (*exec)(gl_slb, 2375 /* NFOSMESA_GLTEXBUFFERRANGE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexCoord1bOES(GLbyte32 s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2376 /* NFOSMESA_GLTEXCOORD1BOES */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord1bvOES(const GLbyte *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2377 /* NFOSMESA_GLTEXCOORD1BVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glTexCoord1xOES(GLfixed s) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2378 /* NFOSMESA_GLTEXCOORD1XOES */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord1xvOES(const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2379 /* NFOSMESA_GLTEXCOORD1XVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glTexCoord2bOES(GLbyte32 s, GLbyte32 t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (*exec)(gl_slb, 2380 /* NFOSMESA_GLTEXCOORD2BOES */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord2bvOES(const GLbyte *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2381 /* NFOSMESA_GLTEXCOORD2BVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glTexCoord2xOES(GLfixed s, GLfixed t) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (*exec)(gl_slb, 2382 /* NFOSMESA_GLTEXCOORD2XOES */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord2xvOES(const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2383 /* NFOSMESA_GLTEXCOORD2XVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glTexCoord3bOES(GLbyte32 s, GLbyte32 t, GLbyte32 r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (*exec)(gl_slb, 2384 /* NFOSMESA_GLTEXCOORD3BOES */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord3bvOES(const GLbyte *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2385 /* NFOSMESA_GLTEXCOORD3BVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glTexCoord3xOES(GLfixed s, GLfixed t, GLfixed r) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (*exec)(gl_slb, 2386 /* NFOSMESA_GLTEXCOORD3XOES */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord3xvOES(const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2387 /* NFOSMESA_GLTEXCOORD3XVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glTexCoord4bOES(GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (void)q; (*exec)(gl_slb, 2388 /* NFOSMESA_GLTEXCOORD4BOES */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord4bvOES(const GLbyte *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2389 /* NFOSMESA_GLTEXCOORD4BVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glTexCoord4xOES(GLfixed s, GLfixed t, GLfixed r, GLfixed q) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)t; (void)r; (void)q; (*exec)(gl_slb, 2390 /* NFOSMESA_GLTEXCOORD4XOES */, SLB_NARGS(2), gl_pub, &s); } static void APIENTRY exec_glTexCoord4xvOES(const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2391 /* NFOSMESA_GLTEXCOORD4XVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glTexCoordFormatNV(GLint size, GLenum type, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (*exec)(gl_slb, 2392 /* NFOSMESA_GLTEXCOORDFORMATNV */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glTexCoordP1ui(GLenum type, GLuint coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2393 /* NFOSMESA_GLTEXCOORDP1UI */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glTexCoordP1uiv(GLenum type, const GLuint *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2394 /* NFOSMESA_GLTEXCOORDP1UIV */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glTexCoordP2ui(GLenum type, GLuint coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2395 /* NFOSMESA_GLTEXCOORDP2UI */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glTexCoordP2uiv(GLenum type, const GLuint *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2396 /* NFOSMESA_GLTEXCOORDP2UIV */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glTexCoordP3ui(GLenum type, GLuint coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2397 /* NFOSMESA_GLTEXCOORDP3UI */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glTexCoordP3uiv(GLenum type, const GLuint *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2398 /* NFOSMESA_GLTEXCOORDP3UIV */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glTexCoordP4ui(GLenum type, GLuint coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2399 /* NFOSMESA_GLTEXCOORDP4UI */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glTexCoordP4uiv(GLenum type, const GLuint *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coords; (*exec)(gl_slb, 2400 /* NFOSMESA_GLTEXCOORDP4UIV */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glTexEnvxOES(GLenum target, GLenum pname, GLfixed param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2401 /* NFOSMESA_GLTEXENVXOES */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2402 /* NFOSMESA_GLTEXENVXVOES */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexGenxOES(GLenum coord, GLenum pname, GLfixed param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2403 /* NFOSMESA_GLTEXGENXOES */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2404 /* NFOSMESA_GLTEXGENXVOES */, SLB_NARGS(2), gl_pub, &coord); } static void APIENTRY exec_glTexImage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samples; (void)internalformat; (void)width; (void)height; (void)fixedsamplelocations; (*exec)(gl_slb, 2405 /* NFOSMESA_GLTEXIMAGE2DMULTISAMPLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexImage2DMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coverageSamples; (void)colorSamples; (void)internalFormat; (void)width; (void)height; (void)fixedSampleLocations; (*exec)(gl_slb, 2406 /* NFOSMESA_GLTEXIMAGE2DMULTISAMPLECOVERAGENV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexImage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samples; (void)internalformat; (void)width; (void)height; (void)depth; (void)fixedsamplelocations; (*exec)(gl_slb, 2407 /* NFOSMESA_GLTEXIMAGE3DMULTISAMPLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexImage3DMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)coverageSamples; (void)colorSamples; (void)internalFormat; (void)width; (void)height; (void)depth; (void)fixedSampleLocations; (*exec)(gl_slb, 2408 /* NFOSMESA_GLTEXIMAGE3DMULTISAMPLECOVERAGENV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexPageCommitmentARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)commit; (*exec)(gl_slb, 2409 /* NFOSMESA_GLTEXPAGECOMMITMENTARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2410 /* NFOSMESA_GLTEXPARAMETERIIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexParameterIivEXT(GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2411 /* NFOSMESA_GLTEXPARAMETERIIVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2412 /* NFOSMESA_GLTEXPARAMETERIUIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexParameterIuivEXT(GLenum target, GLenum pname, const GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2413 /* NFOSMESA_GLTEXPARAMETERIUIVEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexParameterxOES(GLenum target, GLenum pname, GLfixed param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2414 /* NFOSMESA_GLTEXPARAMETERXOES */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2415 /* NFOSMESA_GLTEXPARAMETERXVOES */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexRenderbufferNV(GLenum target, GLuint renderbuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)renderbuffer; (*exec)(gl_slb, 2416 /* NFOSMESA_GLTEXRENDERBUFFERNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexScissorFuncINTEL(GLenum target, GLenum lfunc, GLenum hfunc) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)lfunc; (void)hfunc; (*exec)(gl_slb, 2417 /* NFOSMESA_GLTEXSCISSORFUNCINTEL */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexScissorINTEL(GLenum target, GLclampf tlow, GLclampf thigh) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)tlow; (void)thigh; (*exec)(gl_slb, 2418 /* NFOSMESA_GLTEXSCISSORINTEL */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)levels; (void)internalformat; (void)width; (*exec)(gl_slb, 2419 /* NFOSMESA_GLTEXSTORAGE1D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)levels; (void)internalformat; (void)width; (void)height; (*exec)(gl_slb, 2420 /* NFOSMESA_GLTEXSTORAGE2D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samples; (void)internalformat; (void)width; (void)height; (void)fixedsamplelocations; (*exec)(gl_slb, 2421 /* NFOSMESA_GLTEXSTORAGE2DMULTISAMPLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)levels; (void)internalformat; (void)width; (void)height; (void)depth; (*exec)(gl_slb, 2422 /* NFOSMESA_GLTEXSTORAGE3D */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samples; (void)internalformat; (void)width; (void)height; (void)depth; (void)fixedsamplelocations; (*exec)(gl_slb, 2423 /* NFOSMESA_GLTEXSTORAGE3DMULTISAMPLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexStorageSparseAMD(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalFormat; (void)width; (void)height; (void)depth; (void)layers; (void)flags; (*exec)(gl_slb, 2424 /* NFOSMESA_GLTEXSTORAGESPARSEAMD */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTextureBarrierNV(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2425 /* NFOSMESA_GLTEXTUREBARRIERNV */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glTextureBufferEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)internalformat; (void)buffer; (*exec)(gl_slb, 2426 /* NFOSMESA_GLTEXTUREBUFFEREXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureBufferRangeEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)internalformat; (void)buffer; (void)offset; (void)size; (*exec)(gl_slb, 2427 /* NFOSMESA_GLTEXTUREBUFFERRANGEEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureFogSGIX(GLenum pname) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2428 /* NFOSMESA_GLTEXTUREFOGSGIX */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)width; (void)border; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2429 /* NFOSMESA_GLTEXTUREIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)width; (void)height; (void)border; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2430 /* NFOSMESA_GLTEXTUREIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureImage2DMultisampleCoverageNV(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)coverageSamples; (void)colorSamples; (void)internalFormat; (void)width; (void)height; (void)fixedSampleLocations; (*exec)(gl_slb, 2431 /* NFOSMESA_GLTEXTUREIMAGE2DMULTISAMPLECOVERAGENV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureImage2DMultisampleNV(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)samples; (void)internalFormat; (void)width; (void)height; (void)fixedSampleLocations; (*exec)(gl_slb, 2432 /* NFOSMESA_GLTEXTUREIMAGE2DMULTISAMPLENV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureImage3DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)internalformat; (void)width; (void)height; (void)depth; (void)border; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2433 /* NFOSMESA_GLTEXTUREIMAGE3DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureImage3DMultisampleCoverageNV(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)coverageSamples; (void)colorSamples; (void)internalFormat; (void)width; (void)height; (void)depth; (void)fixedSampleLocations; (*exec)(gl_slb, 2434 /* NFOSMESA_GLTEXTUREIMAGE3DMULTISAMPLECOVERAGENV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureImage3DMultisampleNV(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)samples; (void)internalFormat; (void)width; (void)height; (void)depth; (void)fixedSampleLocations; (*exec)(gl_slb, 2435 /* NFOSMESA_GLTEXTUREIMAGE3DMULTISAMPLENV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTexturePageCommitmentEXT(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)commit; (*exec)(gl_slb, 2436 /* NFOSMESA_GLTEXTUREPAGECOMMITMENTEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 2437 /* NFOSMESA_GLTEXTUREPARAMETERIIVEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, const GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 2438 /* NFOSMESA_GLTEXTUREPARAMETERIUIVEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureParameterfEXT(GLuint texture, GLenum target, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)param; (*exec)(gl_slb, 2439 /* NFOSMESA_GLTEXTUREPARAMETERFEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 2440 /* NFOSMESA_GLTEXTUREPARAMETERFVEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureParameteriEXT(GLuint texture, GLenum target, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)param; (*exec)(gl_slb, 2441 /* NFOSMESA_GLTEXTUREPARAMETERIEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)pname; (void)params; (*exec)(gl_slb, 2442 /* NFOSMESA_GLTEXTUREPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureRangeAPPLE(GLenum target, GLsizei length, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)length; (void)pointer; (*exec)(gl_slb, 2443 /* NFOSMESA_GLTEXTURERANGEAPPLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTextureRenderbufferEXT(GLuint texture, GLenum target, GLuint renderbuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)renderbuffer; (*exec)(gl_slb, 2444 /* NFOSMESA_GLTEXTURERENDERBUFFEREXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)levels; (void)internalformat; (void)width; (*exec)(gl_slb, 2445 /* NFOSMESA_GLTEXTURESTORAGE1DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)levels; (void)internalformat; (void)width; (void)height; (*exec)(gl_slb, 2446 /* NFOSMESA_GLTEXTURESTORAGE2DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureStorage2DMultisampleEXT(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)samples; (void)internalformat; (void)width; (void)height; (void)fixedsamplelocations; (*exec)(gl_slb, 2447 /* NFOSMESA_GLTEXTURESTORAGE2DMULTISAMPLEEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)levels; (void)internalformat; (void)width; (void)height; (void)depth; (*exec)(gl_slb, 2448 /* NFOSMESA_GLTEXTURESTORAGE3DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureStorage3DMultisampleEXT(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)samples; (void)internalformat; (void)width; (void)height; (void)depth; (void)fixedsamplelocations; (*exec)(gl_slb, 2449 /* NFOSMESA_GLTEXTURESTORAGE3DMULTISAMPLEEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureStorageSparseAMD(GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)internalFormat; (void)width; (void)height; (void)depth; (void)layers; (void)flags; (*exec)(gl_slb, 2450 /* NFOSMESA_GLTEXTURESTORAGESPARSEAMD */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)width; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2451 /* NFOSMESA_GLTEXTURESUBIMAGE1DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)yoffset; (void)width; (void)height; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2452 /* NFOSMESA_GLTEXTURESUBIMAGE2DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2453 /* NFOSMESA_GLTEXTURESUBIMAGE3DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)origtexture; (void)internalformat; (void)minlevel; (void)numlevels; (void)minlayer; (void)numlayers; (*exec)(gl_slb, 2454 /* NFOSMESA_GLTEXTUREVIEW */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTransformFeedbackAttribsNV(GLsizei count, const GLint *attribs, GLenum bufferMode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attribs; (void)bufferMode; (*exec)(gl_slb, 2455 /* NFOSMESA_GLTRANSFORMFEEDBACKATTRIBSNV */, SLB_NARGS(2), gl_pub, &count); } static void APIENTRY exec_glTransformFeedbackStreamAttribsNV(GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attribs; (void)nbuffers; (void)bufstreams; (void)bufferMode; (*exec)(gl_slb, 2456 /* NFOSMESA_GLTRANSFORMFEEDBACKSTREAMATTRIBSNV */, SLB_NARGS(2), gl_pub, &count); } static void APIENTRY exec_glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)varyings; (void)bufferMode; (*exec)(gl_slb, 2457 /* NFOSMESA_GLTRANSFORMFEEDBACKVARYINGS */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glTransformFeedbackVaryingsEXT(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)varyings; (void)bufferMode; (*exec)(gl_slb, 2458 /* NFOSMESA_GLTRANSFORMFEEDBACKVARYINGSEXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glTransformFeedbackVaryingsNV(GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)locations; (void)bufferMode; (*exec)(gl_slb, 2459 /* NFOSMESA_GLTRANSFORMFEEDBACKVARYINGSNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glTransformPathNV(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)srcPath; (void)transformType; (void)transformValues; (*exec)(gl_slb, 2460 /* NFOSMESA_GLTRANSFORMPATHNV */, SLB_NARGS(2), gl_pub, &resultPath); } static void APIENTRY exec_glTranslatexOES(GLfixed x, GLfixed y, GLfixed z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 2461 /* NFOSMESA_GLTRANSLATEXOES */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glUniform1d(GLint location, GLdouble x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2462 /* NFOSMESA_GLUNIFORM1D */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1dv(GLint location, GLsizei count, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2463 /* NFOSMESA_GLUNIFORM1DV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1f(GLint location, GLfloat v0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (*exec)(gl_slb, 2464 /* NFOSMESA_GLUNIFORM1F */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1fv(GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2465 /* NFOSMESA_GLUNIFORM1FV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1i(GLint location, GLint v0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (*exec)(gl_slb, 2466 /* NFOSMESA_GLUNIFORM1I */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1i64NV(GLint location, GLint64EXT x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2467 /* NFOSMESA_GLUNIFORM1I64NV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1i64vNV(GLint location, GLsizei count, const GLint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2468 /* NFOSMESA_GLUNIFORM1I64VNV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1iv(GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2469 /* NFOSMESA_GLUNIFORM1IV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1ui(GLint location, GLuint v0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (*exec)(gl_slb, 2470 /* NFOSMESA_GLUNIFORM1UI */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1ui64NV(GLint location, GLuint64EXT x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2471 /* NFOSMESA_GLUNIFORM1UI64NV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2472 /* NFOSMESA_GLUNIFORM1UI64VNV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1uiEXT(GLint location, GLuint v0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (*exec)(gl_slb, 2473 /* NFOSMESA_GLUNIFORM1UIEXT */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1uiv(GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2474 /* NFOSMESA_GLUNIFORM1UIV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1uivEXT(GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2475 /* NFOSMESA_GLUNIFORM1UIVEXT */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2d(GLint location, GLdouble x, GLdouble y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2476 /* NFOSMESA_GLUNIFORM2D */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2dv(GLint location, GLsizei count, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2477 /* NFOSMESA_GLUNIFORM2DV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2f(GLint location, GLfloat v0, GLfloat v1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (*exec)(gl_slb, 2478 /* NFOSMESA_GLUNIFORM2F */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2fv(GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2479 /* NFOSMESA_GLUNIFORM2FV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2i(GLint location, GLint v0, GLint v1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (*exec)(gl_slb, 2480 /* NFOSMESA_GLUNIFORM2I */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2i64NV(GLint location, GLint64EXT x, GLint64EXT y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2481 /* NFOSMESA_GLUNIFORM2I64NV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2i64vNV(GLint location, GLsizei count, const GLint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2482 /* NFOSMESA_GLUNIFORM2I64VNV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2iv(GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2483 /* NFOSMESA_GLUNIFORM2IV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2ui(GLint location, GLuint v0, GLuint v1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (*exec)(gl_slb, 2484 /* NFOSMESA_GLUNIFORM2UI */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2485 /* NFOSMESA_GLUNIFORM2UI64NV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2486 /* NFOSMESA_GLUNIFORM2UI64VNV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2uiEXT(GLint location, GLuint v0, GLuint v1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (*exec)(gl_slb, 2487 /* NFOSMESA_GLUNIFORM2UIEXT */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2uiv(GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2488 /* NFOSMESA_GLUNIFORM2UIV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2uivEXT(GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2489 /* NFOSMESA_GLUNIFORM2UIVEXT */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2490 /* NFOSMESA_GLUNIFORM3D */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3dv(GLint location, GLsizei count, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2491 /* NFOSMESA_GLUNIFORM3DV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (void)v2; (*exec)(gl_slb, 2492 /* NFOSMESA_GLUNIFORM3F */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3fv(GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2493 /* NFOSMESA_GLUNIFORM3FV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (void)v2; (*exec)(gl_slb, 2494 /* NFOSMESA_GLUNIFORM3I */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2495 /* NFOSMESA_GLUNIFORM3I64NV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3i64vNV(GLint location, GLsizei count, const GLint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2496 /* NFOSMESA_GLUNIFORM3I64VNV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3iv(GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2497 /* NFOSMESA_GLUNIFORM3IV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (void)v2; (*exec)(gl_slb, 2498 /* NFOSMESA_GLUNIFORM3UI */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2499 /* NFOSMESA_GLUNIFORM3UI64NV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2500 /* NFOSMESA_GLUNIFORM3UI64VNV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (void)v2; (*exec)(gl_slb, 2501 /* NFOSMESA_GLUNIFORM3UIEXT */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3uiv(GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2502 /* NFOSMESA_GLUNIFORM3UIV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3uivEXT(GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2503 /* NFOSMESA_GLUNIFORM3UIVEXT */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2504 /* NFOSMESA_GLUNIFORM4D */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4dv(GLint location, GLsizei count, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2505 /* NFOSMESA_GLUNIFORM4DV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (void)v2; (void)v3; (*exec)(gl_slb, 2506 /* NFOSMESA_GLUNIFORM4F */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4fv(GLint location, GLsizei count, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2507 /* NFOSMESA_GLUNIFORM4FV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (void)v2; (void)v3; (*exec)(gl_slb, 2508 /* NFOSMESA_GLUNIFORM4I */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2509 /* NFOSMESA_GLUNIFORM4I64NV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4i64vNV(GLint location, GLsizei count, const GLint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2510 /* NFOSMESA_GLUNIFORM4I64VNV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4iv(GLint location, GLsizei count, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2511 /* NFOSMESA_GLUNIFORM4IV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (void)v2; (void)v3; (*exec)(gl_slb, 2512 /* NFOSMESA_GLUNIFORM4UI */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2513 /* NFOSMESA_GLUNIFORM4UI64NV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2514 /* NFOSMESA_GLUNIFORM4UI64VNV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v0; (void)v1; (void)v2; (void)v3; (*exec)(gl_slb, 2515 /* NFOSMESA_GLUNIFORM4UIEXT */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4uiv(GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2516 /* NFOSMESA_GLUNIFORM4UIV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4uivEXT(GLint location, GLsizei count, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2517 /* NFOSMESA_GLUNIFORM4UIVEXT */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)uniformBlockIndex; (void)uniformBlockBinding; (*exec)(gl_slb, 2518 /* NFOSMESA_GLUNIFORMBLOCKBINDING */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glUniformBufferEXT(GLuint program, GLint location, GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)buffer; (*exec)(gl_slb, 2519 /* NFOSMESA_GLUNIFORMBUFFEREXT */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glUniformHandleui64ARB(GLint location, GLuint64 value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 2520 /* NFOSMESA_GLUNIFORMHANDLEUI64ARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformHandleui64NV(GLint location, GLuint64 value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 2521 /* NFOSMESA_GLUNIFORMHANDLEUI64NV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformHandleui64vARB(GLint location, GLsizei count, const GLuint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2522 /* NFOSMESA_GLUNIFORMHANDLEUI64VARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformHandleui64vNV(GLint location, GLsizei count, const GLuint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2523 /* NFOSMESA_GLUNIFORMHANDLEUI64VNV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix2dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2524 /* NFOSMESA_GLUNIFORMMATRIX2DV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix2fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2525 /* NFOSMESA_GLUNIFORMMATRIX2FV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2526 /* NFOSMESA_GLUNIFORMMATRIX2X3DV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2527 /* NFOSMESA_GLUNIFORMMATRIX2X3FV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2528 /* NFOSMESA_GLUNIFORMMATRIX2X4DV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2529 /* NFOSMESA_GLUNIFORMMATRIX2X4FV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix3dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2530 /* NFOSMESA_GLUNIFORMMATRIX3DV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix3fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2531 /* NFOSMESA_GLUNIFORMMATRIX3FV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2532 /* NFOSMESA_GLUNIFORMMATRIX3X2DV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2533 /* NFOSMESA_GLUNIFORMMATRIX3X2FV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2534 /* NFOSMESA_GLUNIFORMMATRIX3X4DV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2535 /* NFOSMESA_GLUNIFORMMATRIX3X4FV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix4dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2536 /* NFOSMESA_GLUNIFORMMATRIX4DV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2537 /* NFOSMESA_GLUNIFORMMATRIX4FV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2538 /* NFOSMESA_GLUNIFORMMATRIX4X2DV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2539 /* NFOSMESA_GLUNIFORMMATRIX4X2FV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2540 /* NFOSMESA_GLUNIFORMMATRIX4X3DV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)transpose; (void)value; (*exec)(gl_slb, 2541 /* NFOSMESA_GLUNIFORMMATRIX4X3FV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)indices; (*exec)(gl_slb, 2542 /* NFOSMESA_GLUNIFORMSUBROUTINESUIV */, SLB_NARGS(2), gl_pub, &shadertype); } static void APIENTRY exec_glUniformui64NV(GLint location, GLuint64EXT value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 2543 /* NFOSMESA_GLUNIFORMUI64NV */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniformui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2544 /* NFOSMESA_GLUNIFORMUI64VNV */, SLB_NARGS(2), gl_pub, &location); } static GLboolean APIENTRY exec_glUnmapNamedBufferEXT(GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 2545 /* NFOSMESA_GLUNMAPNAMEDBUFFEREXT */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glUnmapTexture2DINTEL(GLuint texture, GLint level) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (*exec)(gl_slb, 2546 /* NFOSMESA_GLUNMAPTEXTURE2DINTEL */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glUseProgram(GLuint program) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2547 /* NFOSMESA_GLUSEPROGRAM */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stages; (void)program; (*exec)(gl_slb, 2548 /* NFOSMESA_GLUSEPROGRAMSTAGES */, SLB_NARGS(2), gl_pub, &pipeline); } static void APIENTRY exec_glUseShaderProgramEXT(GLenum type, GLuint program) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)program; (*exec)(gl_slb, 2549 /* NFOSMESA_GLUSESHADERPROGRAMEXT */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glVDPAUFiniNV(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2550 /* NFOSMESA_GLVDPAUFININV */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glVDPAUGetSurfaceivNV(GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)bufSize; (void)length; (void)values; (*exec)(gl_slb, 2551 /* NFOSMESA_GLVDPAUGETSURFACEIVNV */, SLB_NARGS(2), gl_pub, &surface); } static void APIENTRY exec_glVDPAUInitNV(const void *vdpDevice, const void *getProcAddress) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)getProcAddress; (*exec)(gl_slb, 2552 /* NFOSMESA_GLVDPAUINITNV */, SLB_NARGS(2), gl_pub, &vdpDevice); } static GLboolean APIENTRY exec_glVDPAUIsSurfaceNV(GLvdpauSurfaceNV surface) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 2553 /* NFOSMESA_GLVDPAUISSURFACENV */, SLB_NARGS(2), gl_pub, &surface); } static void APIENTRY exec_glVDPAUMapSurfacesNV(GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)surfaces; (*exec)(gl_slb, 2554 /* NFOSMESA_GLVDPAUMAPSURFACESNV */, SLB_NARGS(2), gl_pub, &numSurfaces); } static GLvdpauSurfaceNV APIENTRY exec_glVDPAURegisterOutputSurfaceNV(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)numTextureNames; (void)textureNames; return (GLvdpauSurfaceNV)(*exec)(gl_slb, 2555 /* NFOSMESA_GLVDPAUREGISTEROUTPUTSURFACENV */, SLB_NARGS(2), gl_pub, &vdpSurface); } static GLvdpauSurfaceNV APIENTRY exec_glVDPAURegisterVideoSurfaceNV(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; (void)numTextureNames; (void)textureNames; return (GLvdpauSurfaceNV)(*exec)(gl_slb, 2556 /* NFOSMESA_GLVDPAUREGISTERVIDEOSURFACENV */, SLB_NARGS(2), gl_pub, &vdpSurface); } static void APIENTRY exec_glVDPAUSurfaceAccessNV(GLvdpauSurfaceNV surface, GLenum access) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)access; (*exec)(gl_slb, 2557 /* NFOSMESA_GLVDPAUSURFACEACCESSNV */, SLB_NARGS(2), gl_pub, &surface); } static void APIENTRY exec_glVDPAUUnmapSurfacesNV(GLsizei numSurface, const GLvdpauSurfaceNV *surfaces) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)surfaces; (*exec)(gl_slb, 2558 /* NFOSMESA_GLVDPAUUNMAPSURFACESNV */, SLB_NARGS(2), gl_pub, &numSurface); } static void APIENTRY exec_glVDPAUUnregisterSurfaceNV(GLvdpauSurfaceNV surface) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2559 /* NFOSMESA_GLVDPAUUNREGISTERSURFACENV */, SLB_NARGS(2), gl_pub, &surface); } static void APIENTRY exec_glValidateProgram(GLuint program) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2560 /* NFOSMESA_GLVALIDATEPROGRAM */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glValidateProgramPipeline(GLuint pipeline) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2561 /* NFOSMESA_GLVALIDATEPROGRAMPIPELINE */, SLB_NARGS(2), gl_pub, &pipeline); } static void APIENTRY exec_glVertex2bOES(GLbyte32 x, GLbyte32 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 2562 /* NFOSMESA_GLVERTEX2BOES */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex2bvOES(const GLbyte *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2563 /* NFOSMESA_GLVERTEX2BVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glVertex2xOES(GLfixed x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2564 /* NFOSMESA_GLVERTEX2XOES */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex2xvOES(const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2565 /* NFOSMESA_GLVERTEX2XVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glVertex3bOES(GLbyte32 x, GLbyte32 y, GLbyte32 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 2566 /* NFOSMESA_GLVERTEX3BOES */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex3bvOES(const GLbyte *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2567 /* NFOSMESA_GLVERTEX3BVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glVertex3xOES(GLfixed x, GLfixed y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (*exec)(gl_slb, 2568 /* NFOSMESA_GLVERTEX3XOES */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex3xvOES(const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2569 /* NFOSMESA_GLVERTEX3XVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glVertex4bOES(GLbyte32 x, GLbyte32 y, GLbyte32 z, GLbyte32 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2570 /* NFOSMESA_GLVERTEX4BOES */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex4bvOES(const GLbyte *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2571 /* NFOSMESA_GLVERTEX4BVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glVertex4xOES(GLfixed x, GLfixed y, GLfixed z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)z; (*exec)(gl_slb, 2572 /* NFOSMESA_GLVERTEX4XOES */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glVertex4xvOES(const GLfixed *coords) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2573 /* NFOSMESA_GLVERTEX4XVOES */, SLB_NARGS(2), gl_pub, &coords); } static void APIENTRY exec_glVertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bindingindex; (void)buffer; (void)offset; (void)stride; (*exec)(gl_slb, 2574 /* NFOSMESA_GLVERTEXARRAYBINDVERTEXBUFFEREXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayColorOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)size; (void)type; (void)stride; (void)offset; (*exec)(gl_slb, 2575 /* NFOSMESA_GLVERTEXARRAYCOLOROFFSETEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayEdgeFlagOffsetEXT(GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)stride; (void)offset; (*exec)(gl_slb, 2576 /* NFOSMESA_GLVERTEXARRAYEDGEFLAGOFFSETEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayFogCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)type; (void)stride; (void)offset; (*exec)(gl_slb, 2577 /* NFOSMESA_GLVERTEXARRAYFOGCOORDOFFSETEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayIndexOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)type; (void)stride; (void)offset; (*exec)(gl_slb, 2578 /* NFOSMESA_GLVERTEXARRAYINDEXOFFSETEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayMultiTexCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)texunit; (void)size; (void)type; (void)stride; (void)offset; (*exec)(gl_slb, 2579 /* NFOSMESA_GLVERTEXARRAYMULTITEXCOORDOFFSETEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayNormalOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)type; (void)stride; (void)offset; (*exec)(gl_slb, 2580 /* NFOSMESA_GLVERTEXARRAYNORMALOFFSETEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArraySecondaryColorOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)size; (void)type; (void)stride; (void)offset; (*exec)(gl_slb, 2581 /* NFOSMESA_GLVERTEXARRAYSECONDARYCOLOROFFSETEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayTexCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)size; (void)type; (void)stride; (void)offset; (*exec)(gl_slb, 2582 /* NFOSMESA_GLVERTEXARRAYTEXCOORDOFFSETEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribindex, GLuint bindingindex) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attribindex; (void)bindingindex; (*exec)(gl_slb, 2583 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBBINDINGEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayVertexAttribDivisorEXT(GLuint vaobj, GLuint index, GLuint divisor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)divisor; (*exec)(gl_slb, 2584 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBDIVISOREXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayVertexAttribFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attribindex; (void)size; (void)type; (void)normalized; (void)relativeoffset; (*exec)(gl_slb, 2585 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBFORMATEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayVertexAttribIFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attribindex; (void)size; (void)type; (void)relativeoffset; (*exec)(gl_slb, 2586 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBIFORMATEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayVertexAttribIOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)index; (void)size; (void)type; (void)stride; (void)offset; (*exec)(gl_slb, 2587 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBIOFFSETEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayVertexAttribLFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attribindex; (void)size; (void)type; (void)relativeoffset; (*exec)(gl_slb, 2588 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBLFORMATEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayVertexAttribLOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)index; (void)size; (void)type; (void)stride; (void)offset; (*exec)(gl_slb, 2589 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBLOFFSETEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayVertexAttribOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)index; (void)size; (void)type; (void)normalized; (void)stride; (void)offset; (*exec)(gl_slb, 2590 /* NFOSMESA_GLVERTEXARRAYVERTEXATTRIBOFFSETEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingindex, GLuint divisor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bindingindex; (void)divisor; (*exec)(gl_slb, 2591 /* NFOSMESA_GLVERTEXARRAYVERTEXBINDINGDIVISOREXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayVertexOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)size; (void)type; (void)stride; (void)offset; (*exec)(gl_slb, 2592 /* NFOSMESA_GLVERTEXARRAYVERTEXOFFSETEXT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexAttrib1d(GLuint index, GLdouble x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2593 /* NFOSMESA_GLVERTEXATTRIB1D */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1dv(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2594 /* NFOSMESA_GLVERTEXATTRIB1DV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1f(GLuint index, GLfloat x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2595 /* NFOSMESA_GLVERTEXATTRIB1F */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1fv(GLuint index, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2596 /* NFOSMESA_GLVERTEXATTRIB1FV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1s(GLuint index, GLshort32 x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2597 /* NFOSMESA_GLVERTEXATTRIB1S */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib1sv(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2598 /* NFOSMESA_GLVERTEXATTRIB1SV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2599 /* NFOSMESA_GLVERTEXATTRIB2D */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2dv(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2600 /* NFOSMESA_GLVERTEXATTRIB2DV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2601 /* NFOSMESA_GLVERTEXATTRIB2F */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2fv(GLuint index, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2602 /* NFOSMESA_GLVERTEXATTRIB2FV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2s(GLuint index, GLshort32 x, GLshort32 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2603 /* NFOSMESA_GLVERTEXATTRIB2S */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib2sv(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2604 /* NFOSMESA_GLVERTEXATTRIB2SV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2605 /* NFOSMESA_GLVERTEXATTRIB3D */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3dv(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2606 /* NFOSMESA_GLVERTEXATTRIB3DV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2607 /* NFOSMESA_GLVERTEXATTRIB3F */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3fv(GLuint index, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2608 /* NFOSMESA_GLVERTEXATTRIB3FV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3s(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2609 /* NFOSMESA_GLVERTEXATTRIB3S */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib3sv(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2610 /* NFOSMESA_GLVERTEXATTRIB3SV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4Nbv(GLuint index, const GLbyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2611 /* NFOSMESA_GLVERTEXATTRIB4NBV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4Niv(GLuint index, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2612 /* NFOSMESA_GLVERTEXATTRIB4NIV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4Nsv(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2613 /* NFOSMESA_GLVERTEXATTRIB4NSV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4Nub(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2614 /* NFOSMESA_GLVERTEXATTRIB4NUB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4Nubv(GLuint index, const GLubyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2615 /* NFOSMESA_GLVERTEXATTRIB4NUBV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4Nuiv(GLuint index, const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2616 /* NFOSMESA_GLVERTEXATTRIB4NUIV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4Nusv(GLuint index, const GLushort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2617 /* NFOSMESA_GLVERTEXATTRIB4NUSV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4bv(GLuint index, const GLbyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2618 /* NFOSMESA_GLVERTEXATTRIB4BV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2619 /* NFOSMESA_GLVERTEXATTRIB4D */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4dv(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2620 /* NFOSMESA_GLVERTEXATTRIB4DV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2621 /* NFOSMESA_GLVERTEXATTRIB4F */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4fv(GLuint index, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2622 /* NFOSMESA_GLVERTEXATTRIB4FV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4iv(GLuint index, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2623 /* NFOSMESA_GLVERTEXATTRIB4IV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4s(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2624 /* NFOSMESA_GLVERTEXATTRIB4S */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4sv(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2625 /* NFOSMESA_GLVERTEXATTRIB4SV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4ubv(GLuint index, const GLubyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2626 /* NFOSMESA_GLVERTEXATTRIB4UBV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4uiv(GLuint index, const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2627 /* NFOSMESA_GLVERTEXATTRIB4UIV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttrib4usv(GLuint index, const GLushort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2628 /* NFOSMESA_GLVERTEXATTRIB4USV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bindingindex; (*exec)(gl_slb, 2629 /* NFOSMESA_GLVERTEXATTRIBBINDING */, SLB_NARGS(2), gl_pub, &attribindex); } static void APIENTRY exec_glVertexAttribDivisor(GLuint index, GLuint divisor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)divisor; (*exec)(gl_slb, 2630 /* NFOSMESA_GLVERTEXATTRIBDIVISOR */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribDivisorARB(GLuint index, GLuint divisor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)divisor; (*exec)(gl_slb, 2631 /* NFOSMESA_GLVERTEXATTRIBDIVISORARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)normalized; (void)relativeoffset; (*exec)(gl_slb, 2632 /* NFOSMESA_GLVERTEXATTRIBFORMAT */, SLB_NARGS(2), gl_pub, &attribindex); } static void APIENTRY exec_glVertexAttribFormatNV(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)normalized; (void)stride; (*exec)(gl_slb, 2633 /* NFOSMESA_GLVERTEXATTRIBFORMATNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI1i(GLuint index, GLint x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2634 /* NFOSMESA_GLVERTEXATTRIBI1I */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI1iEXT(GLuint index, GLint x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2635 /* NFOSMESA_GLVERTEXATTRIBI1IEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI1iv(GLuint index, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2636 /* NFOSMESA_GLVERTEXATTRIBI1IV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI1ivEXT(GLuint index, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2637 /* NFOSMESA_GLVERTEXATTRIBI1IVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI1ui(GLuint index, GLuint x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2638 /* NFOSMESA_GLVERTEXATTRIBI1UI */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI1uiEXT(GLuint index, GLuint x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2639 /* NFOSMESA_GLVERTEXATTRIBI1UIEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI1uiv(GLuint index, const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2640 /* NFOSMESA_GLVERTEXATTRIBI1UIV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI1uivEXT(GLuint index, const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2641 /* NFOSMESA_GLVERTEXATTRIBI1UIVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI2i(GLuint index, GLint x, GLint y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2642 /* NFOSMESA_GLVERTEXATTRIBI2I */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI2iEXT(GLuint index, GLint x, GLint y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2643 /* NFOSMESA_GLVERTEXATTRIBI2IEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI2iv(GLuint index, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2644 /* NFOSMESA_GLVERTEXATTRIBI2IV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI2ivEXT(GLuint index, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2645 /* NFOSMESA_GLVERTEXATTRIBI2IVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2646 /* NFOSMESA_GLVERTEXATTRIBI2UI */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI2uiEXT(GLuint index, GLuint x, GLuint y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2647 /* NFOSMESA_GLVERTEXATTRIBI2UIEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI2uiv(GLuint index, const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2648 /* NFOSMESA_GLVERTEXATTRIBI2UIV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI2uivEXT(GLuint index, const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2649 /* NFOSMESA_GLVERTEXATTRIBI2UIVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2650 /* NFOSMESA_GLVERTEXATTRIBI3I */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI3iEXT(GLuint index, GLint x, GLint y, GLint z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2651 /* NFOSMESA_GLVERTEXATTRIBI3IEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI3iv(GLuint index, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2652 /* NFOSMESA_GLVERTEXATTRIBI3IV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI3ivEXT(GLuint index, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2653 /* NFOSMESA_GLVERTEXATTRIBI3IVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2654 /* NFOSMESA_GLVERTEXATTRIBI3UI */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI3uiEXT(GLuint index, GLuint x, GLuint y, GLuint z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2655 /* NFOSMESA_GLVERTEXATTRIBI3UIEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI3uiv(GLuint index, const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2656 /* NFOSMESA_GLVERTEXATTRIBI3UIV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI3uivEXT(GLuint index, const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2657 /* NFOSMESA_GLVERTEXATTRIBI3UIVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4bv(GLuint index, const GLbyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2658 /* NFOSMESA_GLVERTEXATTRIBI4BV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4bvEXT(GLuint index, const GLbyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2659 /* NFOSMESA_GLVERTEXATTRIBI4BVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2660 /* NFOSMESA_GLVERTEXATTRIBI4I */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4iEXT(GLuint index, GLint x, GLint y, GLint z, GLint w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2661 /* NFOSMESA_GLVERTEXATTRIBI4IEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4iv(GLuint index, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2662 /* NFOSMESA_GLVERTEXATTRIBI4IV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4ivEXT(GLuint index, const GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2663 /* NFOSMESA_GLVERTEXATTRIBI4IVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4sv(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2664 /* NFOSMESA_GLVERTEXATTRIBI4SV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4svEXT(GLuint index, const GLshort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2665 /* NFOSMESA_GLVERTEXATTRIBI4SVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4ubv(GLuint index, const GLubyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2666 /* NFOSMESA_GLVERTEXATTRIBI4UBV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4ubvEXT(GLuint index, const GLubyte *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2667 /* NFOSMESA_GLVERTEXATTRIBI4UBVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2668 /* NFOSMESA_GLVERTEXATTRIBI4UI */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4uiEXT(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2669 /* NFOSMESA_GLVERTEXATTRIBI4UIEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4uiv(GLuint index, const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2670 /* NFOSMESA_GLVERTEXATTRIBI4UIV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4uivEXT(GLuint index, const GLuint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2671 /* NFOSMESA_GLVERTEXATTRIBI4UIVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4usv(GLuint index, const GLushort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2672 /* NFOSMESA_GLVERTEXATTRIBI4USV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribI4usvEXT(GLuint index, const GLushort *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2673 /* NFOSMESA_GLVERTEXATTRIBI4USVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)relativeoffset; (*exec)(gl_slb, 2674 /* NFOSMESA_GLVERTEXATTRIBIFORMAT */, SLB_NARGS(2), gl_pub, &attribindex); } static void APIENTRY exec_glVertexAttribIFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)stride; (*exec)(gl_slb, 2675 /* NFOSMESA_GLVERTEXATTRIBIFORMATNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 2676 /* NFOSMESA_GLVERTEXATTRIBIPOINTER */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribIPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 2677 /* NFOSMESA_GLVERTEXATTRIBIPOINTEREXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL1d(GLuint index, GLdouble x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2678 /* NFOSMESA_GLVERTEXATTRIBL1D */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL1dEXT(GLuint index, GLdouble x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2679 /* NFOSMESA_GLVERTEXATTRIBL1DEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL1dv(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2680 /* NFOSMESA_GLVERTEXATTRIBL1DV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL1dvEXT(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2681 /* NFOSMESA_GLVERTEXATTRIBL1DVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL1i64NV(GLuint index, GLint64EXT x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2682 /* NFOSMESA_GLVERTEXATTRIBL1I64NV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL1i64vNV(GLuint index, const GLint64EXT *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2683 /* NFOSMESA_GLVERTEXATTRIBL1I64VNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL1ui64ARB(GLuint index, GLuint64EXT x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2684 /* NFOSMESA_GLVERTEXATTRIBL1UI64ARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL1ui64NV(GLuint index, GLuint64EXT x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2685 /* NFOSMESA_GLVERTEXATTRIBL1UI64NV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL1ui64vARB(GLuint index, const GLuint64EXT *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2686 /* NFOSMESA_GLVERTEXATTRIBL1UI64VARB */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL1ui64vNV(GLuint index, const GLuint64EXT *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2687 /* NFOSMESA_GLVERTEXATTRIBL1UI64VNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2688 /* NFOSMESA_GLVERTEXATTRIBL2D */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL2dEXT(GLuint index, GLdouble x, GLdouble y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2689 /* NFOSMESA_GLVERTEXATTRIBL2DEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL2dv(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2690 /* NFOSMESA_GLVERTEXATTRIBL2DV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL2dvEXT(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2691 /* NFOSMESA_GLVERTEXATTRIBL2DVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL2i64NV(GLuint index, GLint64EXT x, GLint64EXT y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2692 /* NFOSMESA_GLVERTEXATTRIBL2I64NV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL2i64vNV(GLuint index, const GLint64EXT *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2693 /* NFOSMESA_GLVERTEXATTRIBL2I64VNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL2ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2694 /* NFOSMESA_GLVERTEXATTRIBL2UI64NV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL2ui64vNV(GLuint index, const GLuint64EXT *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2695 /* NFOSMESA_GLVERTEXATTRIBL2UI64VNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2696 /* NFOSMESA_GLVERTEXATTRIBL3D */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL3dEXT(GLuint index, GLdouble x, GLdouble y, GLdouble z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2697 /* NFOSMESA_GLVERTEXATTRIBL3DEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL3dv(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2698 /* NFOSMESA_GLVERTEXATTRIBL3DV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL3dvEXT(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2699 /* NFOSMESA_GLVERTEXATTRIBL3DVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL3i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2700 /* NFOSMESA_GLVERTEXATTRIBL3I64NV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL3i64vNV(GLuint index, const GLint64EXT *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2701 /* NFOSMESA_GLVERTEXATTRIBL3I64VNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL3ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2702 /* NFOSMESA_GLVERTEXATTRIBL3UI64NV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL3ui64vNV(GLuint index, const GLuint64EXT *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2703 /* NFOSMESA_GLVERTEXATTRIBL3UI64VNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2704 /* NFOSMESA_GLVERTEXATTRIBL4D */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL4dEXT(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2705 /* NFOSMESA_GLVERTEXATTRIBL4DEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL4dv(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2706 /* NFOSMESA_GLVERTEXATTRIBL4DV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL4dvEXT(GLuint index, const GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2707 /* NFOSMESA_GLVERTEXATTRIBL4DVEXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL4i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2708 /* NFOSMESA_GLVERTEXATTRIBL4I64NV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL4i64vNV(GLuint index, const GLint64EXT *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2709 /* NFOSMESA_GLVERTEXATTRIBL4I64VNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL4ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2710 /* NFOSMESA_GLVERTEXATTRIBL4UI64NV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribL4ui64vNV(GLuint index, const GLuint64EXT *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2711 /* NFOSMESA_GLVERTEXATTRIBL4UI64VNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)relativeoffset; (*exec)(gl_slb, 2712 /* NFOSMESA_GLVERTEXATTRIBLFORMAT */, SLB_NARGS(2), gl_pub, &attribindex); } static void APIENTRY exec_glVertexAttribLFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)stride; (*exec)(gl_slb, 2713 /* NFOSMESA_GLVERTEXATTRIBLFORMATNV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 2714 /* NFOSMESA_GLVERTEXATTRIBLPOINTER */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribLPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)stride; (void)pointer; (*exec)(gl_slb, 2715 /* NFOSMESA_GLVERTEXATTRIBLPOINTEREXT */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribP1ui(GLuint index, GLenum type, GLboolean32 normalized, GLuint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)normalized; (void)value; (*exec)(gl_slb, 2716 /* NFOSMESA_GLVERTEXATTRIBP1UI */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)normalized; (void)value; (*exec)(gl_slb, 2717 /* NFOSMESA_GLVERTEXATTRIBP1UIV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribP2ui(GLuint index, GLenum type, GLboolean32 normalized, GLuint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)normalized; (void)value; (*exec)(gl_slb, 2718 /* NFOSMESA_GLVERTEXATTRIBP2UI */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)normalized; (void)value; (*exec)(gl_slb, 2719 /* NFOSMESA_GLVERTEXATTRIBP2UIV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribP3ui(GLuint index, GLenum type, GLboolean32 normalized, GLuint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)normalized; (void)value; (*exec)(gl_slb, 2720 /* NFOSMESA_GLVERTEXATTRIBP3UI */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)normalized; (void)value; (*exec)(gl_slb, 2721 /* NFOSMESA_GLVERTEXATTRIBP3UIV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribP4ui(GLuint index, GLenum type, GLboolean32 normalized, GLuint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)normalized; (void)value; (*exec)(gl_slb, 2722 /* NFOSMESA_GLVERTEXATTRIBP4UI */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)normalized; (void)value; (*exec)(gl_slb, 2723 /* NFOSMESA_GLVERTEXATTRIBP4UIV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribParameteriAMD(GLuint index, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2724 /* NFOSMESA_GLVERTEXATTRIBPARAMETERIAMD */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)type; (void)normalized; (void)stride; (void)pointer; (*exec)(gl_slb, 2725 /* NFOSMESA_GLVERTEXATTRIBPOINTER */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)divisor; (*exec)(gl_slb, 2726 /* NFOSMESA_GLVERTEXBINDINGDIVISOR */, SLB_NARGS(2), gl_pub, &bindingindex); } static void APIENTRY exec_glVertexFormatNV(GLint size, GLenum type, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)stride; (*exec)(gl_slb, 2727 /* NFOSMESA_GLVERTEXFORMATNV */, SLB_NARGS(2), gl_pub, &size); } static void APIENTRY exec_glVertexP2ui(GLenum type, GLuint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 2728 /* NFOSMESA_GLVERTEXP2UI */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glVertexP2uiv(GLenum type, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 2729 /* NFOSMESA_GLVERTEXP2UIV */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glVertexP3ui(GLenum type, GLuint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 2730 /* NFOSMESA_GLVERTEXP3UI */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glVertexP3uiv(GLenum type, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 2731 /* NFOSMESA_GLVERTEXP3UIV */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glVertexP4ui(GLenum type, GLuint value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 2732 /* NFOSMESA_GLVERTEXP4UI */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glVertexP4uiv(GLenum type, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 2733 /* NFOSMESA_GLVERTEXP4UIV */, SLB_NARGS(2), gl_pub, &type); } static void APIENTRY exec_glVertexPointSizefAPPLE(GLfloat size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2734 /* NFOSMESA_GLVERTEXPOINTSIZEFAPPLE */, SLB_NARGS(2), gl_pub, &size); } static GLenum APIENTRY exec_glVideoCaptureNV(GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)sequence_num; (void)capture_time; return (GLenum)(*exec)(gl_slb, 2735 /* NFOSMESA_GLVIDEOCAPTURENV */, SLB_NARGS(2), gl_pub, &video_capture_slot); } static void APIENTRY exec_glVideoCaptureStreamParameterdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stream; (void)pname; (void)params; (*exec)(gl_slb, 2736 /* NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERDVNV */, SLB_NARGS(2), gl_pub, &video_capture_slot); } static void APIENTRY exec_glVideoCaptureStreamParameterfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stream; (void)pname; (void)params; (*exec)(gl_slb, 2737 /* NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERFVNV */, SLB_NARGS(2), gl_pub, &video_capture_slot); } static void APIENTRY exec_glVideoCaptureStreamParameterivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)stream; (void)pname; (void)params; (*exec)(gl_slb, 2738 /* NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERIVNV */, SLB_NARGS(2), gl_pub, &video_capture_slot); } static void APIENTRY exec_glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)v; (*exec)(gl_slb, 2739 /* NFOSMESA_GLVIEWPORTARRAYV */, SLB_NARGS(2), gl_pub, &first); } static void APIENTRY exec_glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)w; (void)h; (*exec)(gl_slb, 2740 /* NFOSMESA_GLVIEWPORTINDEXEDF */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glViewportIndexedfv(GLuint index, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2741 /* NFOSMESA_GLVIEWPORTINDEXEDFV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)flags; (void)timeout; (*exec)(gl_slb, 2742 /* NFOSMESA_GLWAITSYNC */, SLB_NARGS(2), gl_pub, &sync); } static void APIENTRY exec_glWeightPathsNV(GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)numPaths; (void)paths; (void)weights; (*exec)(gl_slb, 2743 /* NFOSMESA_GLWEIGHTPATHSNV */, SLB_NARGS(2), gl_pub, &resultPath); } static void APIENTRY exec_glBindTextureUnit(GLuint unit, GLuint texture) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)texture; (*exec)(gl_slb, 2744 /* NFOSMESA_GLBINDTEXTUREUNIT */, SLB_NARGS(2), gl_pub, &unit); } static void APIENTRY exec_glBlendBarrierKHR(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2745 /* NFOSMESA_GLBLENDBARRIERKHR */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glBlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)drawFramebuffer; (void)srcX0; (void)srcY0; (void)srcX1; (void)srcY1; (void)dstX0; (void)dstY0; (void)dstX1; (void)dstY1; (void)mask; (void)filter; (*exec)(gl_slb, 2746 /* NFOSMESA_GLBLITNAMEDFRAMEBUFFER */, SLB_NARGS(2), gl_pub, &readFramebuffer); } static void APIENTRY exec_glBufferPageCommitmentARB(GLenum target, GLintptr offset, GLsizeiptr size, GLboolean32 commit) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (void)commit; (*exec)(gl_slb, 2747 /* NFOSMESA_GLBUFFERPAGECOMMITMENTARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCallCommandListNV(GLuint list) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2748 /* NFOSMESA_GLCALLCOMMANDLISTNV */, SLB_NARGS(2), gl_pub, &list); } static GLenum APIENTRY exec_glCheckNamedFramebufferStatus(GLuint framebuffer, GLenum target) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)target; return (GLenum)(*exec)(gl_slb, 2749 /* NFOSMESA_GLCHECKNAMEDFRAMEBUFFERSTATUS */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glClearNamedBufferData(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)format; (void)type; (void)data; (*exec)(gl_slb, 2750 /* NFOSMESA_GLCLEARNAMEDBUFFERDATA */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glClearNamedBufferSubData(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)offset; (void)size; (void)format; (void)type; (void)data; (*exec)(gl_slb, 2751 /* NFOSMESA_GLCLEARNAMEDBUFFERSUBDATA */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)drawbuffer; (void)depth; (void)stencil; (*exec)(gl_slb, 2752 /* NFOSMESA_GLCLEARNAMEDFRAMEBUFFERFI */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)drawbuffer; (void)value; (*exec)(gl_slb, 2753 /* NFOSMESA_GLCLEARNAMEDFRAMEBUFFERFV */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)drawbuffer; (void)value; (*exec)(gl_slb, 2754 /* NFOSMESA_GLCLEARNAMEDFRAMEBUFFERIV */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)drawbuffer; (void)value; (*exec)(gl_slb, 2755 /* NFOSMESA_GLCLEARNAMEDFRAMEBUFFERUIV */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glClipControl(GLenum origin, GLenum depth) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)depth; (*exec)(gl_slb, 2756 /* NFOSMESA_GLCLIPCONTROL */, SLB_NARGS(2), gl_pub, &origin); } static void APIENTRY exec_glCommandListSegmentsNV(GLuint list, GLuint segments) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)segments; (*exec)(gl_slb, 2757 /* NFOSMESA_GLCOMMANDLISTSEGMENTSNV */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_glCompileCommandListNV(GLuint list) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2758 /* NFOSMESA_GLCOMPILECOMMANDLISTNV */, SLB_NARGS(2), gl_pub, &list); } static void APIENTRY exec_glCompressedTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)width; (void)format; (void)imageSize; (void)data; (*exec)(gl_slb, 2759 /* NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE1D */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)width; (void)height; (void)format; (void)imageSize; (void)data; (*exec)(gl_slb, 2760 /* NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE2D */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)format; (void)imageSize; (void)data; (*exec)(gl_slb, 2761 /* NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE3D */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCopyNamedBufferSubData(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)writeBuffer; (void)readOffset; (void)writeOffset; (void)size; (*exec)(gl_slb, 2762 /* NFOSMESA_GLCOPYNAMEDBUFFERSUBDATA */, SLB_NARGS(2), gl_pub, &readBuffer); } static void APIENTRY exec_glCopyTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)x; (void)y; (void)width; (*exec)(gl_slb, 2763 /* NFOSMESA_GLCOPYTEXTURESUBIMAGE1D */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCopyTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)x; (void)y; (void)width; (void)height; (*exec)(gl_slb, 2764 /* NFOSMESA_GLCOPYTEXTURESUBIMAGE2D */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCopyTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)x; (void)y; (void)width; (void)height; (*exec)(gl_slb, 2765 /* NFOSMESA_GLCOPYTEXTURESUBIMAGE3D */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glCoverageModulationNV(GLenum components) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2766 /* NFOSMESA_GLCOVERAGEMODULATIONNV */, SLB_NARGS(2), gl_pub, &components); } static void APIENTRY exec_glCoverageModulationTableNV(GLsizei n, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2767 /* NFOSMESA_GLCOVERAGEMODULATIONTABLENV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glCreateBuffers(GLsizei n, GLuint *buffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffers; (*exec)(gl_slb, 2768 /* NFOSMESA_GLCREATEBUFFERS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glCreateCommandListsNV(GLsizei n, GLuint *lists) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)lists; (*exec)(gl_slb, 2769 /* NFOSMESA_GLCREATECOMMANDLISTSNV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glCreateFramebuffers(GLsizei n, GLuint *framebuffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)framebuffers; (*exec)(gl_slb, 2770 /* NFOSMESA_GLCREATEFRAMEBUFFERS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glCreateProgramPipelines(GLsizei n, GLuint *pipelines) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pipelines; (*exec)(gl_slb, 2771 /* NFOSMESA_GLCREATEPROGRAMPIPELINES */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glCreateQueries(GLenum target, GLsizei n, GLuint *ids) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)n; (void)ids; (*exec)(gl_slb, 2772 /* NFOSMESA_GLCREATEQUERIES */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCreateRenderbuffers(GLsizei n, GLuint *renderbuffers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)renderbuffers; (*exec)(gl_slb, 2773 /* NFOSMESA_GLCREATERENDERBUFFERS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glCreateSamplers(GLsizei n, GLuint *samplers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samplers; (*exec)(gl_slb, 2774 /* NFOSMESA_GLCREATESAMPLERS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glCreateStatesNV(GLsizei n, GLuint *states) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)states; (*exec)(gl_slb, 2775 /* NFOSMESA_GLCREATESTATESNV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glCreateTextures(GLenum target, GLsizei n, GLuint *textures) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)n; (void)textures; (*exec)(gl_slb, 2776 /* NFOSMESA_GLCREATETEXTURES */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glCreateTransformFeedbacks(GLsizei n, GLuint *ids) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ids; (*exec)(gl_slb, 2777 /* NFOSMESA_GLCREATETRANSFORMFEEDBACKS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glCreateVertexArrays(GLsizei n, GLuint *arrays) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)arrays; (*exec)(gl_slb, 2778 /* NFOSMESA_GLCREATEVERTEXARRAYS */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteCommandListsNV(GLsizei n, const GLuint *lists) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)lists; (*exec)(gl_slb, 2779 /* NFOSMESA_GLDELETECOMMANDLISTSNV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteStatesNV(GLsizei n, const GLuint *states) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)states; (*exec)(gl_slb, 2780 /* NFOSMESA_GLDELETESTATESNV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDisableVertexArrayAttrib(GLuint vaobj, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (*exec)(gl_slb, 2781 /* NFOSMESA_GLDISABLEVERTEXARRAYATTRIB */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glDrawCommandsAddressNV(GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)indirects; (void)sizes; (void)count; (*exec)(gl_slb, 2782 /* NFOSMESA_GLDRAWCOMMANDSADDRESSNV */, SLB_NARGS(2), gl_pub, &primitiveMode); } static void APIENTRY exec_glDrawCommandsNV(GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)indirects; (void)sizes; (void)count; (*exec)(gl_slb, 2783 /* NFOSMESA_GLDRAWCOMMANDSNV */, SLB_NARGS(2), gl_pub, &primitiveMode); } static void APIENTRY exec_glDrawCommandsStatesAddressNV(const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)sizes; (void)states; (void)fbos; (void)count; (*exec)(gl_slb, 2784 /* NFOSMESA_GLDRAWCOMMANDSSTATESADDRESSNV */, SLB_NARGS(2), gl_pub, &indirects); } static void APIENTRY exec_glDrawCommandsStatesNV(GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)indirects; (void)sizes; (void)states; (void)fbos; (void)count; (*exec)(gl_slb, 2785 /* NFOSMESA_GLDRAWCOMMANDSSTATESNV */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glEnableVertexArrayAttrib(GLuint vaobj, GLuint index) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (*exec)(gl_slb, 2786 /* NFOSMESA_GLENABLEVERTEXARRAYATTRIB */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glFlushMappedNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)length; (*exec)(gl_slb, 2787 /* NFOSMESA_GLFLUSHMAPPEDNAMEDBUFFERRANGE */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glFragmentCoverageColorNV(GLuint color) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2788 /* NFOSMESA_GLFRAGMENTCOVERAGECOLORNV */, SLB_NARGS(2), gl_pub, &color); } static void APIENTRY exec_glFramebufferSampleLocationsfvNV(GLenum target, GLuint start, GLsizei count, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)count; (void)v; (*exec)(gl_slb, 2789 /* NFOSMESA_GLFRAMEBUFFERSAMPLELOCATIONSFVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glFramebufferTextureMultiviewOVR(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)texture; (void)level; (void)baseViewIndex; (void)numViews; (*exec)(gl_slb, 2790 /* NFOSMESA_GLFRAMEBUFFERTEXTUREMULTIVIEWOVR */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGenerateTextureMipmap(GLuint texture) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2791 /* NFOSMESA_GLGENERATETEXTUREMIPMAP */, SLB_NARGS(2), gl_pub, &texture); } static GLuint APIENTRY exec_glGetCommandHeaderNV(GLenum tokenID, GLuint size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; return (GLuint)(*exec)(gl_slb, 2792 /* NFOSMESA_GLGETCOMMANDHEADERNV */, SLB_NARGS(2), gl_pub, &tokenID); } static void APIENTRY exec_glGetCompressedTextureImage(GLuint texture, GLint level, GLsizei bufSize, void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)bufSize; (void)pixels; (*exec)(gl_slb, 2793 /* NFOSMESA_GLGETCOMPRESSEDTEXTUREIMAGE */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetCompressedTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)bufSize; (void)pixels; (*exec)(gl_slb, 2794 /* NFOSMESA_GLGETCOMPRESSEDTEXTURESUBIMAGE */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetCoverageModulationTableNV(GLsizei bufsize, GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)v; (*exec)(gl_slb, 2795 /* NFOSMESA_GLGETCOVERAGEMODULATIONTABLENV */, SLB_NARGS(2), gl_pub, &bufsize); } static GLenum APIENTRY exec_glGetGraphicsResetStatus(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLenum)(*exec)(gl_slb, 2796 /* NFOSMESA_GLGETGRAPHICSRESETSTATUS */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glGetInternalformatSampleivNV(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)samples; (void)pname; (void)bufSize; (void)params; (*exec)(gl_slb, 2797 /* NFOSMESA_GLGETINTERNALFORMATSAMPLEIVNV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetNamedBufferParameteri64v(GLuint buffer, GLenum pname, GLint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2798 /* NFOSMESA_GLGETNAMEDBUFFERPARAMETERI64V */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glGetNamedBufferParameteriv(GLuint buffer, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2799 /* NFOSMESA_GLGETNAMEDBUFFERPARAMETERIV */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glGetNamedBufferPointerv(GLuint buffer, GLenum pname, void * *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2800 /* NFOSMESA_GLGETNAMEDBUFFERPOINTERV */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (void)data; (*exec)(gl_slb, 2801 /* NFOSMESA_GLGETNAMEDBUFFERSUBDATA */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)pname; (void)params; (*exec)(gl_slb, 2802 /* NFOSMESA_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2803 /* NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERIV */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2804 /* NFOSMESA_GLGETNAMEDRENDERBUFFERPARAMETERIV */, SLB_NARGS(2), gl_pub, &renderbuffer); } static void APIENTRY exec_glGetProgramResourcefvNV(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)programInterface; (void)index; (void)propCount; (void)props; (void)bufSize; (void)length; (void)params; (*exec)(gl_slb, 2805 /* NFOSMESA_GLGETPROGRAMRESOURCEFVNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetQueryBufferObjecti64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)pname; (void)offset; (*exec)(gl_slb, 2806 /* NFOSMESA_GLGETQUERYBUFFEROBJECTI64V */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetQueryBufferObjectiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)pname; (void)offset; (*exec)(gl_slb, 2807 /* NFOSMESA_GLGETQUERYBUFFEROBJECTIV */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetQueryBufferObjectui64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)pname; (void)offset; (*exec)(gl_slb, 2808 /* NFOSMESA_GLGETQUERYBUFFEROBJECTUI64V */, SLB_NARGS(2), gl_pub, &id); } static void APIENTRY exec_glGetQueryBufferObjectuiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)pname; (void)offset; (*exec)(gl_slb, 2809 /* NFOSMESA_GLGETQUERYBUFFEROBJECTUIV */, SLB_NARGS(2), gl_pub, &id); } static GLushort APIENTRY exec_glGetStageIndexNV(GLenum shadertype) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLushort)(*exec)(gl_slb, 2810 /* NFOSMESA_GLGETSTAGEINDEXNV */, SLB_NARGS(2), gl_pub, &shadertype); } static void APIENTRY exec_glGetTextureImage(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)format; (void)type; (void)bufSize; (void)pixels; (*exec)(gl_slb, 2811 /* NFOSMESA_GLGETTEXTUREIMAGE */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetTextureLevelParameterfv(GLuint texture, GLint level, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)pname; (void)params; (*exec)(gl_slb, 2812 /* NFOSMESA_GLGETTEXTURELEVELPARAMETERFV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetTextureLevelParameteriv(GLuint texture, GLint level, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)pname; (void)params; (*exec)(gl_slb, 2813 /* NFOSMESA_GLGETTEXTURELEVELPARAMETERIV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetTextureParameterIiv(GLuint texture, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2814 /* NFOSMESA_GLGETTEXTUREPARAMETERIIV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetTextureParameterIuiv(GLuint texture, GLenum pname, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2815 /* NFOSMESA_GLGETTEXTUREPARAMETERIUIV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetTextureParameterfv(GLuint texture, GLenum pname, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2816 /* NFOSMESA_GLGETTEXTUREPARAMETERFV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetTextureParameteriv(GLuint texture, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2817 /* NFOSMESA_GLGETTEXTUREPARAMETERIV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)format; (void)type; (void)bufSize; (void)pixels; (*exec)(gl_slb, 2818 /* NFOSMESA_GLGETTEXTURESUBIMAGE */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glGetTransformFeedbacki64_v(GLuint xfb, GLenum pname, GLuint index, GLint64 *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)index; (void)param; (*exec)(gl_slb, 2819 /* NFOSMESA_GLGETTRANSFORMFEEDBACKI64_V */, SLB_NARGS(2), gl_pub, &xfb); } static void APIENTRY exec_glGetTransformFeedbacki_v(GLuint xfb, GLenum pname, GLuint index, GLint *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)index; (void)param; (*exec)(gl_slb, 2820 /* NFOSMESA_GLGETTRANSFORMFEEDBACKI_V */, SLB_NARGS(2), gl_pub, &xfb); } static void APIENTRY exec_glGetTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2821 /* NFOSMESA_GLGETTRANSFORMFEEDBACKIV */, SLB_NARGS(2), gl_pub, &xfb); } static void APIENTRY exec_glGetVertexArrayIndexed64iv(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)pname; (void)param; (*exec)(gl_slb, 2822 /* NFOSMESA_GLGETVERTEXARRAYINDEXED64IV */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glGetVertexArrayIndexediv(GLuint vaobj, GLuint index, GLenum pname, GLint *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)pname; (void)param; (*exec)(gl_slb, 2823 /* NFOSMESA_GLGETVERTEXARRAYINDEXEDIV */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glGetVertexArrayiv(GLuint vaobj, GLenum pname, GLint *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2824 /* NFOSMESA_GLGETVERTEXARRAYIV */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glGetnColorTable(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)type; (void)bufSize; (void)table; (*exec)(gl_slb, 2825 /* NFOSMESA_GLGETNCOLORTABLE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnCompressedTexImage(GLenum target, GLint lod, GLsizei bufSize, void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)lod; (void)bufSize; (void)pixels; (*exec)(gl_slb, 2826 /* NFOSMESA_GLGETNCOMPRESSEDTEXIMAGE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnConvolutionFilter(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)type; (void)bufSize; (void)image; (*exec)(gl_slb, 2827 /* NFOSMESA_GLGETNCONVOLUTIONFILTER */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnHistogram(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)reset; (void)format; (void)type; (void)bufSize; (void)values; (*exec)(gl_slb, 2828 /* NFOSMESA_GLGETNHISTOGRAM */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnMapdv(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)query; (void)bufSize; (void)v; (*exec)(gl_slb, 2829 /* NFOSMESA_GLGETNMAPDV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnMapfv(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)query; (void)bufSize; (void)v; (*exec)(gl_slb, 2830 /* NFOSMESA_GLGETNMAPFV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnMapiv(GLenum target, GLenum query, GLsizei bufSize, GLint *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)query; (void)bufSize; (void)v; (*exec)(gl_slb, 2831 /* NFOSMESA_GLGETNMAPIV */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnMinmax(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)reset; (void)format; (void)type; (void)bufSize; (void)values; (*exec)(gl_slb, 2832 /* NFOSMESA_GLGETNMINMAX */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnPixelMapfv(GLenum map, GLsizei bufSize, GLfloat *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)values; (*exec)(gl_slb, 2833 /* NFOSMESA_GLGETNPIXELMAPFV */, SLB_NARGS(2), gl_pub, &map); } static void APIENTRY exec_glGetnPixelMapuiv(GLenum map, GLsizei bufSize, GLuint *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)values; (*exec)(gl_slb, 2834 /* NFOSMESA_GLGETNPIXELMAPUIV */, SLB_NARGS(2), gl_pub, &map); } static void APIENTRY exec_glGetnPixelMapusv(GLenum map, GLsizei bufSize, GLushort *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bufSize; (void)values; (*exec)(gl_slb, 2835 /* NFOSMESA_GLGETNPIXELMAPUSV */, SLB_NARGS(2), gl_pub, &map); } static void APIENTRY exec_glGetnPolygonStipple(GLsizei bufSize, GLubyte *pattern) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pattern; (*exec)(gl_slb, 2836 /* NFOSMESA_GLGETNPOLYGONSTIPPLE */, SLB_NARGS(2), gl_pub, &bufSize); } static void APIENTRY exec_glGetnSeparableFilter(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)format; (void)type; (void)rowBufSize; (void)row; (void)columnBufSize; (void)column; (void)span; (*exec)(gl_slb, 2837 /* NFOSMESA_GLGETNSEPARABLEFILTER */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)format; (void)type; (void)bufSize; (void)pixels; (*exec)(gl_slb, 2838 /* NFOSMESA_GLGETNTEXIMAGE */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetnUniformdv(GLuint program, GLint location, GLsizei bufSize, GLdouble *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)bufSize; (void)params; (*exec)(gl_slb, 2839 /* NFOSMESA_GLGETNUNIFORMDV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)bufSize; (void)params; (*exec)(gl_slb, 2840 /* NFOSMESA_GLGETNUNIFORMFV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)bufSize; (void)params; (*exec)(gl_slb, 2841 /* NFOSMESA_GLGETNUNIFORMIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)bufSize; (void)params; (*exec)(gl_slb, 2842 /* NFOSMESA_GLGETNUNIFORMUIV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glInvalidateNamedFramebufferData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)numAttachments; (void)attachments; (*exec)(gl_slb, 2843 /* NFOSMESA_GLINVALIDATENAMEDFRAMEBUFFERDATA */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glInvalidateNamedFramebufferSubData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)numAttachments; (void)attachments; (void)x; (void)y; (void)width; (void)height; (*exec)(gl_slb, 2844 /* NFOSMESA_GLINVALIDATENAMEDFRAMEBUFFERSUBDATA */, SLB_NARGS(2), gl_pub, &framebuffer); } static GLboolean APIENTRY exec_glIsCommandListNV(GLuint list) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 2845 /* NFOSMESA_GLISCOMMANDLISTNV */, SLB_NARGS(2), gl_pub, &list); } static GLboolean APIENTRY exec_glIsStateNV(GLuint state) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 2846 /* NFOSMESA_GLISSTATENV */, SLB_NARGS(2), gl_pub, &state); } static void APIENTRY exec_glListDrawCommandsStatesClientNV(GLuint list, GLuint segment, const void * *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)segment; (void)indirects; (void)sizes; (void)states; (void)fbos; (void)count; (*exec)(gl_slb, 2847 /* NFOSMESA_GLLISTDRAWCOMMANDSSTATESCLIENTNV */, SLB_NARGS(2), gl_pub, &list); } static void * APIENTRY exec_glMapNamedBuffer(GLuint buffer, GLenum access) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)access; return (void *)(*exec)(gl_slb, 2848 /* NFOSMESA_GLMAPNAMEDBUFFER */, SLB_NARGS(2), gl_pub, &buffer); } static void * APIENTRY exec_glMapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)length; (void)access; return (void *)(*exec)(gl_slb, 2849 /* NFOSMESA_GLMAPNAMEDBUFFERRANGE */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glMatrixLoad3x2fNV(GLenum matrixMode, const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)m; (*exec)(gl_slb, 2850 /* NFOSMESA_GLMATRIXLOAD3X2FNV */, SLB_NARGS(2), gl_pub, &matrixMode); } static void APIENTRY exec_glMatrixLoad3x3fNV(GLenum matrixMode, const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)m; (*exec)(gl_slb, 2851 /* NFOSMESA_GLMATRIXLOAD3X3FNV */, SLB_NARGS(2), gl_pub, &matrixMode); } static void APIENTRY exec_glMatrixLoadTranspose3x3fNV(GLenum matrixMode, const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)m; (*exec)(gl_slb, 2852 /* NFOSMESA_GLMATRIXLOADTRANSPOSE3X3FNV */, SLB_NARGS(2), gl_pub, &matrixMode); } static void APIENTRY exec_glMatrixMult3x2fNV(GLenum matrixMode, const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)m; (*exec)(gl_slb, 2853 /* NFOSMESA_GLMATRIXMULT3X2FNV */, SLB_NARGS(2), gl_pub, &matrixMode); } static void APIENTRY exec_glMatrixMult3x3fNV(GLenum matrixMode, const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)m; (*exec)(gl_slb, 2854 /* NFOSMESA_GLMATRIXMULT3X3FNV */, SLB_NARGS(2), gl_pub, &matrixMode); } static void APIENTRY exec_glMatrixMultTranspose3x3fNV(GLenum matrixMode, const GLfloat *m) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)m; (*exec)(gl_slb, 2855 /* NFOSMESA_GLMATRIXMULTTRANSPOSE3X3FNV */, SLB_NARGS(2), gl_pub, &matrixMode); } static void APIENTRY exec_glMemoryBarrierByRegion(GLbitfield barriers) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2856 /* NFOSMESA_GLMEMORYBARRIERBYREGION */, SLB_NARGS(2), gl_pub, &barriers); } static void APIENTRY exec_glMultiDrawArraysIndirectBindlessCountNV(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)indirect; (void)drawCount; (void)maxDrawCount; (void)stride; (void)vertexBufferCount; (*exec)(gl_slb, 2857 /* NFOSMESA_GLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawElementsIndirectBindlessCountNV(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)indirect; (void)drawCount; (void)maxDrawCount; (void)stride; (void)vertexBufferCount; (*exec)(gl_slb, 2858 /* NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glNamedBufferData(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)data; (void)usage; (*exec)(gl_slb, 2859 /* NFOSMESA_GLNAMEDBUFFERDATA */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glNamedBufferPageCommitmentARB(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (void)commit; (*exec)(gl_slb, 2860 /* NFOSMESA_GLNAMEDBUFFERPAGECOMMITMENTARB */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glNamedBufferPageCommitmentEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (void)commit; (*exec)(gl_slb, 2861 /* NFOSMESA_GLNAMEDBUFFERPAGECOMMITMENTEXT */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glNamedBufferStorage(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)data; (void)flags; (*exec)(gl_slb, 2862 /* NFOSMESA_GLNAMEDBUFFERSTORAGE */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (void)data; (*exec)(gl_slb, 2863 /* NFOSMESA_GLNAMEDBUFFERSUBDATA */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glNamedFramebufferDrawBuffer(GLuint framebuffer, GLenum buf) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buf; (*exec)(gl_slb, 2864 /* NFOSMESA_GLNAMEDFRAMEBUFFERDRAWBUFFER */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedFramebufferDrawBuffers(GLuint framebuffer, GLsizei n, const GLenum *bufs) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)n; (void)bufs; (*exec)(gl_slb, 2865 /* NFOSMESA_GLNAMEDFRAMEBUFFERDRAWBUFFERS */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedFramebufferParameteri(GLuint framebuffer, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2866 /* NFOSMESA_GLNAMEDFRAMEBUFFERPARAMETERI */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedFramebufferReadBuffer(GLuint framebuffer, GLenum src) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)src; (*exec)(gl_slb, 2867 /* NFOSMESA_GLNAMEDFRAMEBUFFERREADBUFFER */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedFramebufferRenderbuffer(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)renderbuffertarget; (void)renderbuffer; (*exec)(gl_slb, 2868 /* NFOSMESA_GLNAMEDFRAMEBUFFERRENDERBUFFER */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedFramebufferSampleLocationsfvNV(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)count; (void)v; (*exec)(gl_slb, 2869 /* NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedFramebufferTexture(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)texture; (void)level; (*exec)(gl_slb, 2870 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedFramebufferTextureLayer(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attachment; (void)texture; (void)level; (void)layer; (*exec)(gl_slb, 2871 /* NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURELAYER */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glNamedRenderbufferStorage(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)width; (void)height; (*exec)(gl_slb, 2872 /* NFOSMESA_GLNAMEDRENDERBUFFERSTORAGE */, SLB_NARGS(2), gl_pub, &renderbuffer); } static void APIENTRY exec_glNamedRenderbufferStorageMultisample(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samples; (void)internalformat; (void)width; (void)height; (*exec)(gl_slb, 2873 /* NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLE */, SLB_NARGS(2), gl_pub, &renderbuffer); } static GLenum APIENTRY exec_glPathGlyphIndexArrayNV(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)fontTarget; (void)fontName; (void)fontStyle; (void)firstGlyphIndex; (void)numGlyphs; (void)pathParameterTemplate; (void)emScale; return (GLenum)(*exec)(gl_slb, 2874 /* NFOSMESA_GLPATHGLYPHINDEXARRAYNV */, SLB_NARGS(2), gl_pub, &firstPathName); } static GLenum APIENTRY exec_glPathGlyphIndexRangeNV(GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)fontName; (void)fontStyle; (void)pathParameterTemplate; (void)emScale; (void)baseAndCount; return (GLenum)(*exec)(gl_slb, 2875 /* NFOSMESA_GLPATHGLYPHINDEXRANGENV */, SLB_NARGS(2), gl_pub, &fontTarget); } static GLenum APIENTRY exec_glPathMemoryGlyphIndexArrayNV(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)fontTarget; (void)fontSize; (void)fontData; (void)faceIndex; (void)firstGlyphIndex; (void)numGlyphs; (void)pathParameterTemplate; (void)emScale; return (GLenum)(*exec)(gl_slb, 2876 /* NFOSMESA_GLPATHMEMORYGLYPHINDEXARRAYNV */, SLB_NARGS(2), gl_pub, &firstPathName); } static void APIENTRY exec_glPolygonOffsetClampEXT(GLfloat factor, GLfloat units, GLfloat clamp) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)units; (void)clamp; (*exec)(gl_slb, 2877 /* NFOSMESA_GLPOLYGONOFFSETCLAMPEXT */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glProgramPathFragmentInputGenNV(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)genMode; (void)components; (void)coeffs; (*exec)(gl_slb, 2878 /* NFOSMESA_GLPROGRAMPATHFRAGMENTINPUTGENNV */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glRasterSamplesEXT(GLuint samples, GLboolean32 fixedsamplelocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)fixedsamplelocations; (*exec)(gl_slb, 2879 /* NFOSMESA_GLRASTERSAMPLESEXT */, SLB_NARGS(2), gl_pub, &samples); } static void APIENTRY exec_glReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)y; (void)width; (void)height; (void)format; (void)type; (void)bufSize; (void)data; (*exec)(gl_slb, 2880 /* NFOSMESA_GLREADNPIXELS */, SLB_NARGS(2), gl_pub, &x); } static void APIENTRY exec_glResolveDepthValuesNV(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2881 /* NFOSMESA_GLRESOLVEDEPTHVALUESNV */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glStateCaptureNV(GLuint state, GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)mode; (*exec)(gl_slb, 2882 /* NFOSMESA_GLSTATECAPTURENV */, SLB_NARGS(2), gl_pub, &state); } static void APIENTRY exec_glStencilThenCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pathNameType; (void)paths; (void)pathBase; (void)fillMode; (void)mask; (void)coverMode; (void)transformType; (void)transformValues; (*exec)(gl_slb, 2883 /* NFOSMESA_GLSTENCILTHENCOVERFILLPATHINSTANCEDNV */, SLB_NARGS(2), gl_pub, &numPaths); } static void APIENTRY exec_glStencilThenCoverFillPathNV(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)fillMode; (void)mask; (void)coverMode; (*exec)(gl_slb, 2884 /* NFOSMESA_GLSTENCILTHENCOVERFILLPATHNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glStencilThenCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pathNameType; (void)paths; (void)pathBase; (void)reference; (void)mask; (void)coverMode; (void)transformType; (void)transformValues; (*exec)(gl_slb, 2885 /* NFOSMESA_GLSTENCILTHENCOVERSTROKEPATHINSTANCEDNV */, SLB_NARGS(2), gl_pub, &numPaths); } static void APIENTRY exec_glStencilThenCoverStrokePathNV(GLuint path, GLint reference, GLuint mask, GLenum coverMode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)reference; (void)mask; (void)coverMode; (*exec)(gl_slb, 2886 /* NFOSMESA_GLSTENCILTHENCOVERSTROKEPATHNV */, SLB_NARGS(2), gl_pub, &path); } static void APIENTRY exec_glSubpixelPrecisionBiasNV(GLuint xbits, GLuint ybits) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)ybits; (*exec)(gl_slb, 2887 /* NFOSMESA_GLSUBPIXELPRECISIONBIASNV */, SLB_NARGS(2), gl_pub, &xbits); } static void APIENTRY exec_glTextureBarrier(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2888 /* NFOSMESA_GLTEXTUREBARRIER */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glTextureBuffer(GLuint texture, GLenum internalformat, GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)buffer; (*exec)(gl_slb, 2889 /* NFOSMESA_GLTEXTUREBUFFER */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureBufferRange(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)internalformat; (void)buffer; (void)offset; (void)size; (*exec)(gl_slb, 2890 /* NFOSMESA_GLTEXTUREBUFFERRANGE */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureParameterIiv(GLuint texture, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2891 /* NFOSMESA_GLTEXTUREPARAMETERIIV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureParameterIuiv(GLuint texture, GLenum pname, const GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2892 /* NFOSMESA_GLTEXTUREPARAMETERIUIV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureParameterf(GLuint texture, GLenum pname, GLfloat param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2893 /* NFOSMESA_GLTEXTUREPARAMETERF */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureParameterfv(GLuint texture, GLenum pname, const GLfloat *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2894 /* NFOSMESA_GLTEXTUREPARAMETERFV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureParameteri(GLuint texture, GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2895 /* NFOSMESA_GLTEXTUREPARAMETERI */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureParameteriv(GLuint texture, GLenum pname, const GLint *param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)param; (*exec)(gl_slb, 2896 /* NFOSMESA_GLTEXTUREPARAMETERIV */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureStorage1D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)levels; (void)internalformat; (void)width; (*exec)(gl_slb, 2897 /* NFOSMESA_GLTEXTURESTORAGE1D */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureStorage2D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)levels; (void)internalformat; (void)width; (void)height; (*exec)(gl_slb, 2898 /* NFOSMESA_GLTEXTURESTORAGE2D */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureStorage2DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samples; (void)internalformat; (void)width; (void)height; (void)fixedsamplelocations; (*exec)(gl_slb, 2899 /* NFOSMESA_GLTEXTURESTORAGE2DMULTISAMPLE */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureStorage3D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)levels; (void)internalformat; (void)width; (void)height; (void)depth; (*exec)(gl_slb, 2900 /* NFOSMESA_GLTEXTURESTORAGE3D */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureStorage3DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samples; (void)internalformat; (void)width; (void)height; (void)depth; (void)fixedsamplelocations; (*exec)(gl_slb, 2901 /* NFOSMESA_GLTEXTURESTORAGE3DMULTISAMPLE */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)width; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2902 /* NFOSMESA_GLTEXTURESUBIMAGE1D */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)width; (void)height; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2903 /* NFOSMESA_GLTEXTURESUBIMAGE2D */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)level; (void)xoffset; (void)yoffset; (void)zoffset; (void)width; (void)height; (void)depth; (void)format; (void)type; (void)pixels; (*exec)(gl_slb, 2904 /* NFOSMESA_GLTEXTURESUBIMAGE3D */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)buffer; (*exec)(gl_slb, 2905 /* NFOSMESA_GLTRANSFORMFEEDBACKBUFFERBASE */, SLB_NARGS(2), gl_pub, &xfb); } static void APIENTRY exec_glTransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)buffer; (void)offset; (void)size; (*exec)(gl_slb, 2906 /* NFOSMESA_GLTRANSFORMFEEDBACKBUFFERRANGE */, SLB_NARGS(2), gl_pub, &xfb); } static GLboolean APIENTRY exec_glUnmapNamedBuffer(GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 2907 /* NFOSMESA_GLUNMAPNAMEDBUFFER */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glVertexArrayAttribBinding(GLuint vaobj, GLuint attribindex, GLuint bindingindex) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attribindex; (void)bindingindex; (*exec)(gl_slb, 2908 /* NFOSMESA_GLVERTEXARRAYATTRIBBINDING */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayAttribFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attribindex; (void)size; (void)type; (void)normalized; (void)relativeoffset; (*exec)(gl_slb, 2909 /* NFOSMESA_GLVERTEXARRAYATTRIBFORMAT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayAttribIFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attribindex; (void)size; (void)type; (void)relativeoffset; (*exec)(gl_slb, 2910 /* NFOSMESA_GLVERTEXARRAYATTRIBIFORMAT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayAttribLFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)attribindex; (void)size; (void)type; (void)relativeoffset; (*exec)(gl_slb, 2911 /* NFOSMESA_GLVERTEXARRAYATTRIBLFORMAT */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayBindingDivisor(GLuint vaobj, GLuint bindingindex, GLuint divisor) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bindingindex; (void)divisor; (*exec)(gl_slb, 2912 /* NFOSMESA_GLVERTEXARRAYBINDINGDIVISOR */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayElementBuffer(GLuint vaobj, GLuint buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (*exec)(gl_slb, 2913 /* NFOSMESA_GLVERTEXARRAYELEMENTBUFFER */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayVertexBuffer(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)bindingindex; (void)buffer; (void)offset; (void)stride; (*exec)(gl_slb, 2914 /* NFOSMESA_GLVERTEXARRAYVERTEXBUFFER */, SLB_NARGS(2), gl_pub, &vaobj); } static void APIENTRY exec_glVertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)first; (void)count; (void)buffers; (void)offsets; (void)strides; (*exec)(gl_slb, 2915 /* NFOSMESA_GLVERTEXARRAYVERTEXBUFFERS */, SLB_NARGS(2), gl_pub, &vaobj); } static OSMesaContext APIENTRY exec_OSMesaCreateContextAttribs(const GLint *attribList, OSMesaContext sharelist) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)sharelist; return (OSMesaContext)(*exec)(gl_slb, 2916 /* NFOSMESA_OSMESACREATECONTEXTATTRIBS */, SLB_NARGS(2), gl_pub, &attribList); } static void APIENTRY exec_glSpecializeShader(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pEntryPoint; (void)numSpecializationConstants; (void)pConstantIndex; (void)pConstantValue; (*exec)(gl_slb, 2917 /* NFOSMESA_GLSPECIALIZESHADER */, SLB_NARGS(2), gl_pub, &shader); } static void APIENTRY exec_glSpecializeShaderARB(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pEntryPoint; (void)numSpecializationConstants; (void)pConstantIndex; (void)pConstantValue; (*exec)(gl_slb, 2918 /* NFOSMESA_GLSPECIALIZESHADERARB */, SLB_NARGS(2), gl_pub, &shader); } static void APIENTRY exec_glMultiDrawArraysIndirectCount(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)indirect; (void)drawcount; (void)maxdrawcount; (void)stride; (*exec)(gl_slb, 2919 /* NFOSMESA_GLMULTIDRAWARRAYSINDIRECTCOUNT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glMultiDrawElementsIndirectCount(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)type; (void)indirect; (void)drawcount; (void)maxdrawcount; (void)stride; (*exec)(gl_slb, 2920 /* NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTCOUNT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glPolygonOffsetClamp(GLfloat factor, GLfloat units, GLfloat clamp) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)units; (void)clamp; (*exec)(gl_slb, 2921 /* NFOSMESA_GLPOLYGONOFFSETCLAMP */, SLB_NARGS(2), gl_pub, &factor); } static void APIENTRY exec_glPrimitiveBoundingBoxARB(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)minY; (void)minZ; (void)minW; (void)maxX; (void)maxY; (void)maxZ; (void)maxW; (*exec)(gl_slb, 2922 /* NFOSMESA_GLPRIMITIVEBOUNDINGBOXARB */, SLB_NARGS(2), gl_pub, &minX); } static void APIENTRY exec_glUniform1i64ARB(GLint location, GLint64 x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2923 /* NFOSMESA_GLUNIFORM1I64ARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2i64ARB(GLint location, GLint64 x, GLint64 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2924 /* NFOSMESA_GLUNIFORM2I64ARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3i64ARB(GLint location, GLint64 x, GLint64 y, GLint64 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2925 /* NFOSMESA_GLUNIFORM3I64ARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4i64ARB(GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2926 /* NFOSMESA_GLUNIFORM4I64ARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1i64vARB(GLint location, GLsizei count, const GLint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2927 /* NFOSMESA_GLUNIFORM1I64VARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2i64vARB(GLint location, GLsizei count, const GLint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2928 /* NFOSMESA_GLUNIFORM2I64VARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3i64vARB(GLint location, GLsizei count, const GLint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2929 /* NFOSMESA_GLUNIFORM3I64VARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4i64vARB(GLint location, GLsizei count, const GLint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2930 /* NFOSMESA_GLUNIFORM4I64VARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1ui64ARB(GLint location, GLuint64 x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (*exec)(gl_slb, 2931 /* NFOSMESA_GLUNIFORM1UI64ARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2ui64ARB(GLint location, GLuint64 x, GLuint64 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (*exec)(gl_slb, 2932 /* NFOSMESA_GLUNIFORM2UI64ARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3ui64ARB(GLint location, GLuint64 x, GLuint64 y, GLuint64 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2933 /* NFOSMESA_GLUNIFORM3UI64ARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4ui64ARB(GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2934 /* NFOSMESA_GLUNIFORM4UI64ARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform1ui64vARB(GLint location, GLsizei count, const GLuint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2935 /* NFOSMESA_GLUNIFORM1UI64VARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform2ui64vARB(GLint location, GLsizei count, const GLuint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2936 /* NFOSMESA_GLUNIFORM2UI64VARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform3ui64vARB(GLint location, GLsizei count, const GLuint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2937 /* NFOSMESA_GLUNIFORM3UI64VARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glUniform4ui64vARB(GLint location, GLsizei count, const GLuint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)value; (*exec)(gl_slb, 2938 /* NFOSMESA_GLUNIFORM4UI64VARB */, SLB_NARGS(2), gl_pub, &location); } static void APIENTRY exec_glGetUniformi64vARB(GLuint program, GLint location, GLint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)params; (*exec)(gl_slb, 2939 /* NFOSMESA_GLGETUNIFORMI64VARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetUniformui64vARB(GLuint program, GLint location, GLuint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)params; (*exec)(gl_slb, 2940 /* NFOSMESA_GLGETUNIFORMUI64VARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetnUniformi64vARB(GLuint program, GLint location, GLsizei bufSize, GLint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)bufSize; (void)params; (*exec)(gl_slb, 2941 /* NFOSMESA_GLGETNUNIFORMI64VARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glGetnUniformui64vARB(GLuint program, GLint location, GLsizei bufSize, GLuint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)bufSize; (void)params; (*exec)(gl_slb, 2942 /* NFOSMESA_GLGETNUNIFORMUI64VARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1i64ARB(GLuint program, GLint location, GLint64 x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (*exec)(gl_slb, 2943 /* NFOSMESA_GLPROGRAMUNIFORM1I64ARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (*exec)(gl_slb, 2944 /* NFOSMESA_GLPROGRAMUNIFORM2I64ARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2945 /* NFOSMESA_GLPROGRAMUNIFORM3I64ARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2946 /* NFOSMESA_GLPROGRAMUNIFORM4I64ARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2947 /* NFOSMESA_GLPROGRAMUNIFORM1I64VARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2948 /* NFOSMESA_GLPROGRAMUNIFORM2I64VARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2949 /* NFOSMESA_GLPROGRAMUNIFORM3I64VARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4i64vARB(GLuint program, GLint location, GLsizei count, const GLint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2950 /* NFOSMESA_GLPROGRAMUNIFORM4I64VARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1ui64ARB(GLuint program, GLint location, GLuint64 x) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (*exec)(gl_slb, 2951 /* NFOSMESA_GLPROGRAMUNIFORM1UI64ARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (*exec)(gl_slb, 2952 /* NFOSMESA_GLPROGRAMUNIFORM2UI64ARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (void)z; (*exec)(gl_slb, 2953 /* NFOSMESA_GLPROGRAMUNIFORM3UI64ARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)x; (void)y; (void)z; (void)w; (*exec)(gl_slb, 2954 /* NFOSMESA_GLPROGRAMUNIFORM4UI64ARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform1ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2955 /* NFOSMESA_GLPROGRAMUNIFORM1UI64VARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform2ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2956 /* NFOSMESA_GLPROGRAMUNIFORM2UI64VARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform3ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2957 /* NFOSMESA_GLPROGRAMUNIFORM3UI64VARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glProgramUniform4ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64 *value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)location; (void)count; (void)value; (*exec)(gl_slb, 2958 /* NFOSMESA_GLPROGRAMUNIFORM4UI64VARB */, SLB_NARGS(2), gl_pub, &program); } static void APIENTRY exec_glMaxShaderCompilerThreadsARB(GLuint count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2959 /* NFOSMESA_GLMAXSHADERCOMPILERTHREADSARB */, SLB_NARGS(2), gl_pub, &count); } static void APIENTRY exec_glFramebufferSampleLocationsfvARB(GLenum target, GLuint start, GLsizei count, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)count; (void)v; (*exec)(gl_slb, 2960 /* NFOSMESA_GLFRAMEBUFFERSAMPLELOCATIONSFVARB */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glNamedFramebufferSampleLocationsfvARB(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)start; (void)count; (void)v; (*exec)(gl_slb, 2961 /* NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARB */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glEvaluateDepthValuesARB(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2962 /* NFOSMESA_GLEVALUATEDEPTHVALUESARB */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glMaxShaderCompilerThreadsKHR(GLuint count) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 2963 /* NFOSMESA_GLMAXSHADERCOMPILERTHREADSKHR */, SLB_NARGS(2), gl_pub, &count); } static void APIENTRY exec_glBufferStorageExternalEXT(GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (void)clientBuffer; (void)flags; (*exec)(gl_slb, 2964 /* NFOSMESA_GLBUFFERSTORAGEEXTERNALEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glNamedBufferStorageExternalEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)offset; (void)size; (void)clientBuffer; (void)flags; (*exec)(gl_slb, 2965 /* NFOSMESA_GLNAMEDBUFFERSTORAGEEXTERNALEXT */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glGetUnsignedBytevEXT(GLenum pname, GLubyte *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)data; (*exec)(gl_slb, 2966 /* NFOSMESA_GLGETUNSIGNEDBYTEVEXT */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glGetUnsignedBytei_vEXT(GLenum target, GLuint index, GLubyte *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)index; (void)data; (*exec)(gl_slb, 2967 /* NFOSMESA_GLGETUNSIGNEDBYTEI_VEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glDeleteMemoryObjectsEXT(GLsizei n, const GLuint *memoryObjects) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)memoryObjects; (*exec)(gl_slb, 2968 /* NFOSMESA_GLDELETEMEMORYOBJECTSEXT */, SLB_NARGS(2), gl_pub, &n); } static GLboolean APIENTRY exec_glIsMemoryObjectEXT(GLuint memoryObject) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 2969 /* NFOSMESA_GLISMEMORYOBJECTEXT */, SLB_NARGS(2), gl_pub, &memoryObject); } static void APIENTRY exec_glCreateMemoryObjectsEXT(GLsizei n, GLuint *memoryObjects) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)memoryObjects; (*exec)(gl_slb, 2970 /* NFOSMESA_GLCREATEMEMORYOBJECTSEXT */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glMemoryObjectParameterivEXT(GLuint memoryObject, GLenum pname, const GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2971 /* NFOSMESA_GLMEMORYOBJECTPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &memoryObject); } static void APIENTRY exec_glGetMemoryObjectParameterivEXT(GLuint memoryObject, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2972 /* NFOSMESA_GLGETMEMORYOBJECTPARAMETERIVEXT */, SLB_NARGS(2), gl_pub, &memoryObject); } static void APIENTRY exec_glTexStorageMem2DEXT(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)levels; (void)internalFormat; (void)width; (void)height; (void)memory; (void)offset; (*exec)(gl_slb, 2973 /* NFOSMESA_GLTEXSTORAGEMEM2DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexStorageMem2DMultisampleEXT(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samples; (void)internalFormat; (void)width; (void)height; (void)fixedSampleLocations; (void)memory; (void)offset; (*exec)(gl_slb, 2974 /* NFOSMESA_GLTEXSTORAGEMEM2DMULTISAMPLEEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexStorageMem3DEXT(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)levels; (void)internalFormat; (void)width; (void)height; (void)depth; (void)memory; (void)offset; (*exec)(gl_slb, 2975 /* NFOSMESA_GLTEXSTORAGEMEM3DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTexStorageMem3DMultisampleEXT(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samples; (void)internalFormat; (void)width; (void)height; (void)depth; (void)fixedSampleLocations; (void)memory; (void)offset; (*exec)(gl_slb, 2976 /* NFOSMESA_GLTEXSTORAGEMEM3DMULTISAMPLEEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glBufferStorageMemEXT(GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)memory; (void)offset; (*exec)(gl_slb, 2977 /* NFOSMESA_GLBUFFERSTORAGEMEMEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTextureStorageMem2DEXT(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)levels; (void)internalFormat; (void)width; (void)height; (void)memory; (void)offset; (*exec)(gl_slb, 2978 /* NFOSMESA_GLTEXTURESTORAGEMEM2DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureStorageMem2DMultisampleEXT(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samples; (void)internalFormat; (void)width; (void)height; (void)fixedSampleLocations; (void)memory; (void)offset; (*exec)(gl_slb, 2979 /* NFOSMESA_GLTEXTURESTORAGEMEM2DMULTISAMPLEEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureStorageMem3DEXT(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)levels; (void)internalFormat; (void)width; (void)height; (void)depth; (void)memory; (void)offset; (*exec)(gl_slb, 2980 /* NFOSMESA_GLTEXTURESTORAGEMEM3DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glTextureStorageMem3DMultisampleEXT(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)samples; (void)internalFormat; (void)width; (void)height; (void)depth; (void)fixedSampleLocations; (void)memory; (void)offset; (*exec)(gl_slb, 2981 /* NFOSMESA_GLTEXTURESTORAGEMEM3DMULTISAMPLEEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glNamedBufferStorageMemEXT(GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)memory; (void)offset; (*exec)(gl_slb, 2982 /* NFOSMESA_GLNAMEDBUFFERSTORAGEMEMEXT */, SLB_NARGS(2), gl_pub, &buffer); } static void APIENTRY exec_glTexStorageMem1DEXT(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)levels; (void)internalFormat; (void)width; (void)memory; (void)offset; (*exec)(gl_slb, 2983 /* NFOSMESA_GLTEXSTORAGEMEM1DEXT */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glTextureStorageMem1DEXT(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)levels; (void)internalFormat; (void)width; (void)memory; (void)offset; (*exec)(gl_slb, 2984 /* NFOSMESA_GLTEXTURESTORAGEMEM1DEXT */, SLB_NARGS(2), gl_pub, &texture); } static void APIENTRY exec_glImportMemoryFdEXT(GLuint memory, GLuint64 size, GLenum handleType, GLint fd) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)handleType; (void)fd; (*exec)(gl_slb, 2985 /* NFOSMESA_GLIMPORTMEMORYFDEXT */, SLB_NARGS(2), gl_pub, &memory); } static void APIENTRY exec_glImportMemoryWin32HandleEXT(GLuint memory, GLuint64 size, GLenum handleType, void *handle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)handleType; (void)handle; (*exec)(gl_slb, 2986 /* NFOSMESA_GLIMPORTMEMORYWIN32HANDLEEXT */, SLB_NARGS(2), gl_pub, &memory); } static void APIENTRY exec_glImportMemoryWin32NameEXT(GLuint memory, GLuint64 size, GLenum handleType, const void *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)size; (void)handleType; (void)name; (*exec)(gl_slb, 2987 /* NFOSMESA_GLIMPORTMEMORYWIN32NAMEEXT */, SLB_NARGS(2), gl_pub, &memory); } static void APIENTRY exec_glGenSemaphoresEXT(GLsizei n, GLuint *semaphores) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)semaphores; (*exec)(gl_slb, 2988 /* NFOSMESA_GLGENSEMAPHORESEXT */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteSemaphoresEXT(GLsizei n, const GLuint *semaphores) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)semaphores; (*exec)(gl_slb, 2989 /* NFOSMESA_GLDELETESEMAPHORESEXT */, SLB_NARGS(2), gl_pub, &n); } static GLboolean APIENTRY exec_glIsSemaphoreEXT(GLuint semaphore) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLboolean)(*exec)(gl_slb, 2990 /* NFOSMESA_GLISSEMAPHOREEXT */, SLB_NARGS(2), gl_pub, &semaphore); } static void APIENTRY exec_glSemaphoreParameterui64vEXT(GLuint semaphore, GLenum pname, const GLuint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2991 /* NFOSMESA_GLSEMAPHOREPARAMETERUI64VEXT */, SLB_NARGS(2), gl_pub, &semaphore); } static void APIENTRY exec_glGetSemaphoreParameterui64vEXT(GLuint semaphore, GLenum pname, GLuint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)params; (*exec)(gl_slb, 2992 /* NFOSMESA_GLGETSEMAPHOREPARAMETERUI64VEXT */, SLB_NARGS(2), gl_pub, &semaphore); } static void APIENTRY exec_glWaitSemaphoreEXT(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)numBufferBarriers; (void)buffers; (void)numTextureBarriers; (void)textures; (void)srcLayouts; (*exec)(gl_slb, 2993 /* NFOSMESA_GLWAITSEMAPHOREEXT */, SLB_NARGS(2), gl_pub, &semaphore); } static void APIENTRY exec_glSignalSemaphoreEXT(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)numBufferBarriers; (void)buffers; (void)numTextureBarriers; (void)textures; (void)dstLayouts; (*exec)(gl_slb, 2994 /* NFOSMESA_GLSIGNALSEMAPHOREEXT */, SLB_NARGS(2), gl_pub, &semaphore); } static void APIENTRY exec_glImportSemaphoreFdEXT(GLuint semaphore, GLenum handleType, GLint fd) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)handleType; (void)fd; (*exec)(gl_slb, 2995 /* NFOSMESA_GLIMPORTSEMAPHOREFDEXT */, SLB_NARGS(2), gl_pub, &semaphore); } static void APIENTRY exec_glImportSemaphoreWin32HandleEXT(GLuint semaphore, GLenum handleType, void *handle) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)handleType; (void)handle; (*exec)(gl_slb, 2996 /* NFOSMESA_GLIMPORTSEMAPHOREWIN32HANDLEEXT */, SLB_NARGS(2), gl_pub, &semaphore); } static void APIENTRY exec_glImportSemaphoreWin32NameEXT(GLuint semaphore, GLenum handleType, const void *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)handleType; (void)name; (*exec)(gl_slb, 2997 /* NFOSMESA_GLIMPORTSEMAPHOREWIN32NAMEEXT */, SLB_NARGS(2), gl_pub, &semaphore); } static GLboolean APIENTRY exec_glAcquireKeyedMutexWin32EXT(GLuint memory, GLuint64 key, GLuint timeout) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)key; (void)timeout; return (GLboolean)(*exec)(gl_slb, 2998 /* NFOSMESA_GLACQUIREKEYEDMUTEXWIN32EXT */, SLB_NARGS(2), gl_pub, &memory); } static GLboolean APIENTRY exec_glReleaseKeyedMutexWin32EXT(GLuint memory, GLuint64 key) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)key; return (GLboolean)(*exec)(gl_slb, 2999 /* NFOSMESA_GLRELEASEKEYEDMUTEXWIN32EXT */, SLB_NARGS(2), gl_pub, &memory); } static void APIENTRY exec_glLGPUNamedBufferSubDataNVX(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)offset; (void)size; (void)data; (*exec)(gl_slb, 3000 /* NFOSMESA_GLLGPUNAMEDBUFFERSUBDATANVX */, SLB_NARGS(2), gl_pub, &gpuMask); } static void APIENTRY exec_glLGPUCopyImageSubDataNVX(GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)destinationGpuMask; (void)srcName; (void)srcTarget; (void)srcLevel; (void)srcX; (void)srxY; (void)srcZ; (void)dstName; (void)dstTarget; (void)dstLevel; (void)dstX; (void)dstY; (void)dstZ; (void)width; (void)height; (void)depth; (*exec)(gl_slb, 3001 /* NFOSMESA_GLLGPUCOPYIMAGESUBDATANVX */, SLB_NARGS(2), gl_pub, &sourceGpu); } static void APIENTRY exec_glLGPUInterlockNVX(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 3002 /* NFOSMESA_GLLGPUINTERLOCKNVX */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glAlphaToCoverageDitherControlNV(GLenum mode) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 3003 /* NFOSMESA_GLALPHATOCOVERAGEDITHERCONTROLNV */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glDrawVkImageNV(GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)sampler; (void)x0; (void)y0; (void)x1; (void)y1; (void)z; (void)s0; (void)t0; (void)s1; (void)t1; (*exec)(gl_slb, 3004 /* NFOSMESA_GLDRAWVKIMAGENV */, SLB_NARGS(2), gl_pub, &vkImage); } static GLVULKANPROCNV APIENTRY exec_glGetVkProcAddrNV(const GLchar *name) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; return (GLVULKANPROCNV)(*exec)(gl_slb, 3005 /* NFOSMESA_GLGETVKPROCADDRNV */, SLB_NARGS(2), gl_pub, &name); } static void APIENTRY exec_glWaitVkSemaphoreNV(GLuint64 vkSemaphore) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 3006 /* NFOSMESA_GLWAITVKSEMAPHORENV */, SLB_NARGS(2), gl_pub, &vkSemaphore); } static void APIENTRY exec_glSignalVkSemaphoreNV(GLuint64 vkSemaphore) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 3007 /* NFOSMESA_GLSIGNALVKSEMAPHORENV */, SLB_NARGS(2), gl_pub, &vkSemaphore); } static void APIENTRY exec_glSignalVkFenceNV(GLuint64 vkFence) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 3008 /* NFOSMESA_GLSIGNALVKFENCENV */, SLB_NARGS(2), gl_pub, &vkFence); } static void APIENTRY exec_glRenderGpuMaskNV(GLbitfield mask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 3009 /* NFOSMESA_GLRENDERGPUMASKNV */, SLB_NARGS(2), gl_pub, &mask); } static void APIENTRY exec_glMulticastBufferSubDataNV(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)buffer; (void)offset; (void)size; (void)data; (*exec)(gl_slb, 3010 /* NFOSMESA_GLMULTICASTBUFFERSUBDATANV */, SLB_NARGS(2), gl_pub, &gpuMask); } static void APIENTRY exec_glMulticastCopyBufferSubDataNV(GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)writeGpuMask; (void)readBuffer; (void)writeBuffer; (void)readOffset; (void)writeOffset; (void)size; (*exec)(gl_slb, 3011 /* NFOSMESA_GLMULTICASTCOPYBUFFERSUBDATANV */, SLB_NARGS(2), gl_pub, &readGpu); } static void APIENTRY exec_glMulticastCopyImageSubDataNV(GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)dstGpuMask; (void)srcName; (void)srcTarget; (void)srcLevel; (void)srcX; (void)srcY; (void)srcZ; (void)dstName; (void)dstTarget; (void)dstLevel; (void)dstX; (void)dstY; (void)dstZ; (void)srcWidth; (void)srcHeight; (void)srcDepth; (*exec)(gl_slb, 3012 /* NFOSMESA_GLMULTICASTCOPYIMAGESUBDATANV */, SLB_NARGS(2), gl_pub, &srcGpu); } static void APIENTRY exec_glMulticastBlitFramebufferNV(GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)dstGpu; (void)srcX0; (void)srcY0; (void)srcX1; (void)srcY1; (void)dstX0; (void)dstY0; (void)dstX1; (void)dstY1; (void)mask; (void)filter; (*exec)(gl_slb, 3013 /* NFOSMESA_GLMULTICASTBLITFRAMEBUFFERNV */, SLB_NARGS(2), gl_pub, &srcGpu); } static void APIENTRY exec_glMulticastFramebufferSampleLocationsfvNV(GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)framebuffer; (void)start; (void)count; (void)v; (*exec)(gl_slb, 3014 /* NFOSMESA_GLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNV */, SLB_NARGS(2), gl_pub, &gpu); } static void APIENTRY exec_glMulticastBarrierNV(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 3015 /* NFOSMESA_GLMULTICASTBARRIERNV */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glMulticastWaitSyncNV(GLuint signalGpu, GLbitfield waitGpuMask) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)waitGpuMask; (*exec)(gl_slb, 3016 /* NFOSMESA_GLMULTICASTWAITSYNCNV */, SLB_NARGS(2), gl_pub, &signalGpu); } static void APIENTRY exec_glMulticastGetQueryObjectivNV(GLuint gpu, GLuint id, GLenum pname, GLint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (void)pname; (void)params; (*exec)(gl_slb, 3017 /* NFOSMESA_GLMULTICASTGETQUERYOBJECTIVNV */, SLB_NARGS(2), gl_pub, &gpu); } static void APIENTRY exec_glMulticastGetQueryObjectuivNV(GLuint gpu, GLuint id, GLenum pname, GLuint *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (void)pname; (void)params; (*exec)(gl_slb, 3018 /* NFOSMESA_GLMULTICASTGETQUERYOBJECTUIVNV */, SLB_NARGS(2), gl_pub, &gpu); } static void APIENTRY exec_glMulticastGetQueryObjecti64vNV(GLuint gpu, GLuint id, GLenum pname, GLint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (void)pname; (void)params; (*exec)(gl_slb, 3019 /* NFOSMESA_GLMULTICASTGETQUERYOBJECTI64VNV */, SLB_NARGS(2), gl_pub, &gpu); } static void APIENTRY exec_glMulticastGetQueryObjectui64vNV(GLuint gpu, GLuint id, GLenum pname, GLuint64 *params) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)id; (void)pname; (void)params; (*exec)(gl_slb, 3020 /* NFOSMESA_GLMULTICASTGETQUERYOBJECTUI64VNV */, SLB_NARGS(2), gl_pub, &gpu); } static GLint APIENTRY exec_glQueryResourceNV(GLenum queryType, GLint tagId, GLuint bufSize, GLint *buffer) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)tagId; (void)bufSize; (void)buffer; return (GLint)(*exec)(gl_slb, 3021 /* NFOSMESA_GLQUERYRESOURCENV */, SLB_NARGS(2), gl_pub, &queryType); } static void APIENTRY exec_glGenQueryResourceTagNV(GLsizei n, GLint *tagIds) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)tagIds; (*exec)(gl_slb, 3022 /* NFOSMESA_GLGENQUERYRESOURCETAGNV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glDeleteQueryResourceTagNV(GLsizei n, const GLint *tagIds) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)tagIds; (*exec)(gl_slb, 3023 /* NFOSMESA_GLDELETEQUERYRESOURCETAGNV */, SLB_NARGS(2), gl_pub, &n); } static void APIENTRY exec_glQueryResourceTagNV(GLint tagId, const GLchar *tagString) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)tagString; (*exec)(gl_slb, 3024 /* NFOSMESA_GLQUERYRESOURCETAGNV */, SLB_NARGS(2), gl_pub, &tagId); } static void APIENTRY exec_glFramebufferSamplePositionsfvAMD(GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)numsamples; (void)pixelindex; (void)values; (*exec)(gl_slb, 3025 /* NFOSMESA_GLFRAMEBUFFERSAMPLEPOSITIONSFVAMD */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glNamedFramebufferSamplePositionsfvAMD(GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)numsamples; (void)pixelindex; (void)values; (*exec)(gl_slb, 3026 /* NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMD */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glGetFramebufferParameterfvAMD(GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)numsamples; (void)pixelindex; (void)size; (void)values; (*exec)(gl_slb, 3027 /* NFOSMESA_GLGETFRAMEBUFFERPARAMETERFVAMD */, SLB_NARGS(2), gl_pub, &target); } static void APIENTRY exec_glGetNamedFramebufferParameterfvAMD(GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)pname; (void)numsamples; (void)pixelindex; (void)size; (void)values; (*exec)(gl_slb, 3028 /* NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERFVAMD */, SLB_NARGS(2), gl_pub, &framebuffer); } static void APIENTRY exec_glWindowRectanglesEXT(GLenum mode, GLsizei count, const GLint *box) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)count; (void)box; (*exec)(gl_slb, 3029 /* NFOSMESA_GLWINDOWRECTANGLESEXT */, SLB_NARGS(2), gl_pub, &mode); } static void APIENTRY exec_glApplyFramebufferAttachmentCMAAINTEL(void) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (*exec)(gl_slb, 3030 /* NFOSMESA_GLAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL */, SLB_NARGS(2), gl_pub, NULL); } static void APIENTRY exec_glViewportSwizzleNV(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)swizzlex; (void)swizzley; (void)swizzlez; (void)swizzlew; (*exec)(gl_slb, 3031 /* NFOSMESA_GLVIEWPORTSWIZZLENV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glViewportPositionWScaleNV(GLuint index, GLfloat xcoeff, GLfloat ycoeff) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)xcoeff; (void)ycoeff; (*exec)(gl_slb, 3032 /* NFOSMESA_GLVIEWPORTPOSITIONWSCALENV */, SLB_NARGS(2), gl_pub, &index); } static void APIENTRY exec_glConservativeRasterParameterfNV(GLenum pname, GLfloat value) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)value; (*exec)(gl_slb, 3033 /* NFOSMESA_GLCONSERVATIVERASTERPARAMETERFNV */, SLB_NARGS(2), gl_pub, &pname); } static void APIENTRY exec_glConservativeRasterParameteriNV(GLenum pname, GLint param) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *, void *))gl_exec; (void)param; (*exec)(gl_slb, 3034 /* NFOSMESA_GLCONSERVATIVERASTERPARAMETERINV */, SLB_NARGS(2), gl_pub, &pname); } static APIENTRY OSMESAproc real_OSMesaGetProcAddress(const char *funcname) { unsigned int func = (unsigned int)((*gl.__old_OSMesaGetProcAddress)(funcname)); if (func == 0 || func > gl.__numfuncs) return 0; --func; return (OSMESAproc)(((void **)(&gl))[func]); } static void slb_init_osmesa(void) { struct _gl_osmesa *glp = ≷ glp->GetString = exec_glGetString; glp->OSMesaCreateContext = exec_OSMesaCreateContext; glp->OSMesaCreateContextExt = exec_OSMesaCreateContextExt; glp->OSMesaDestroyContext = exec_OSMesaDestroyContext; glp->OSMesaMakeCurrent = exec_OSMesaMakeCurrent; glp->OSMesaGetCurrentContext = exec_OSMesaGetCurrentContext; glp->OSMesaPixelStore = exec_OSMesaPixelStore; glp->OSMesaGetIntegerv = exec_OSMesaGetIntegerv; glp->OSMesaGetDepthBuffer = exec_OSMesaGetDepthBuffer; glp->OSMesaGetColorBuffer = exec_OSMesaGetColorBuffer; glp->OSMesaGetProcAddress = exec_OSMesaGetProcAddress; glp->ClearIndex = exec_glClearIndex; glp->ClearColor = exec_glClearColor; glp->Clear = exec_glClear; glp->IndexMask = exec_glIndexMask; glp->ColorMask = exec_glColorMask; glp->AlphaFunc = exec_glAlphaFunc; glp->BlendFunc = exec_glBlendFunc; glp->LogicOp = exec_glLogicOp; glp->CullFace = exec_glCullFace; glp->FrontFace = exec_glFrontFace; glp->PointSize = exec_glPointSize; glp->LineWidth = exec_glLineWidth; glp->LineStipple = exec_glLineStipple; glp->PolygonMode = exec_glPolygonMode; glp->PolygonOffset = exec_glPolygonOffset; glp->PolygonStipple = exec_glPolygonStipple; glp->GetPolygonStipple = exec_glGetPolygonStipple; glp->EdgeFlag = exec_glEdgeFlag; glp->EdgeFlagv = exec_glEdgeFlagv; glp->Scissor = exec_glScissor; glp->ClipPlane = exec_glClipPlane; glp->GetClipPlane = exec_glGetClipPlane; glp->DrawBuffer = exec_glDrawBuffer; glp->ReadBuffer = exec_glReadBuffer; glp->Enable = exec_glEnable; glp->Disable = exec_glDisable; glp->IsEnabled = exec_glIsEnabled; glp->EnableClientState = exec_glEnableClientState; glp->DisableClientState = exec_glDisableClientState; glp->GetBooleanv = exec_glGetBooleanv; glp->GetDoublev = exec_glGetDoublev; glp->GetFloatv = exec_glGetFloatv; glp->GetIntegerv = exec_glGetIntegerv; glp->PushAttrib = exec_glPushAttrib; glp->PopAttrib = exec_glPopAttrib; glp->PushClientAttrib = exec_glPushClientAttrib; glp->PopClientAttrib = exec_glPopClientAttrib; glp->RenderMode = exec_glRenderMode; glp->GetError = exec_glGetError; glp->Finish = exec_glFinish; glp->Flush = exec_glFlush; glp->Hint = exec_glHint; glp->ClearDepth = exec_glClearDepth; glp->DepthFunc = exec_glDepthFunc; glp->DepthMask = exec_glDepthMask; glp->DepthRange = exec_glDepthRange; glp->ClearAccum = exec_glClearAccum; glp->Accum = exec_glAccum; glp->MatrixMode = exec_glMatrixMode; glp->Ortho = exec_glOrtho; glp->Frustum = exec_glFrustum; glp->Viewport = exec_glViewport; glp->PushMatrix = exec_glPushMatrix; glp->PopMatrix = exec_glPopMatrix; glp->LoadIdentity = exec_glLoadIdentity; glp->LoadMatrixd = exec_glLoadMatrixd; glp->LoadMatrixf = exec_glLoadMatrixf; glp->MultMatrixd = exec_glMultMatrixd; glp->MultMatrixf = exec_glMultMatrixf; glp->Rotated = exec_glRotated; glp->Rotatef = exec_glRotatef; glp->Scaled = exec_glScaled; glp->Scalef = exec_glScalef; glp->Translated = exec_glTranslated; glp->Translatef = exec_glTranslatef; glp->IsList = exec_glIsList; glp->DeleteLists = exec_glDeleteLists; glp->GenLists = exec_glGenLists; glp->NewList = exec_glNewList; glp->EndList = exec_glEndList; glp->CallList = exec_glCallList; glp->CallLists = exec_glCallLists; glp->ListBase = exec_glListBase; glp->Begin = exec_glBegin; glp->End = exec_glEnd; glp->Vertex2d = exec_glVertex2d; glp->Vertex2f = exec_glVertex2f; glp->Vertex2i = exec_glVertex2i; glp->Vertex2s = exec_glVertex2s; glp->Vertex3d = exec_glVertex3d; glp->Vertex3f = exec_glVertex3f; glp->Vertex3i = exec_glVertex3i; glp->Vertex3s = exec_glVertex3s; glp->Vertex4d = exec_glVertex4d; glp->Vertex4f = exec_glVertex4f; glp->Vertex4i = exec_glVertex4i; glp->Vertex4s = exec_glVertex4s; glp->Vertex2dv = exec_glVertex2dv; glp->Vertex2fv = exec_glVertex2fv; glp->Vertex2iv = exec_glVertex2iv; glp->Vertex2sv = exec_glVertex2sv; glp->Vertex3dv = exec_glVertex3dv; glp->Vertex3fv = exec_glVertex3fv; glp->Vertex3iv = exec_glVertex3iv; glp->Vertex3sv = exec_glVertex3sv; glp->Vertex4dv = exec_glVertex4dv; glp->Vertex4fv = exec_glVertex4fv; glp->Vertex4iv = exec_glVertex4iv; glp->Vertex4sv = exec_glVertex4sv; glp->Normal3b = exec_glNormal3b; glp->Normal3d = exec_glNormal3d; glp->Normal3f = exec_glNormal3f; glp->Normal3i = exec_glNormal3i; glp->Normal3s = exec_glNormal3s; glp->Normal3bv = exec_glNormal3bv; glp->Normal3dv = exec_glNormal3dv; glp->Normal3fv = exec_glNormal3fv; glp->Normal3iv = exec_glNormal3iv; glp->Normal3sv = exec_glNormal3sv; glp->Indexd = exec_glIndexd; glp->Indexf = exec_glIndexf; glp->Indexi = exec_glIndexi; glp->Indexs = exec_glIndexs; glp->Indexub = exec_glIndexub; glp->Indexdv = exec_glIndexdv; glp->Indexfv = exec_glIndexfv; glp->Indexiv = exec_glIndexiv; glp->Indexsv = exec_glIndexsv; glp->Indexubv = exec_glIndexubv; glp->Color3b = exec_glColor3b; glp->Color3d = exec_glColor3d; glp->Color3f = exec_glColor3f; glp->Color3i = exec_glColor3i; glp->Color3s = exec_glColor3s; glp->Color3ub = exec_glColor3ub; glp->Color3ui = exec_glColor3ui; glp->Color3us = exec_glColor3us; glp->Color4b = exec_glColor4b; glp->Color4d = exec_glColor4d; glp->Color4f = exec_glColor4f; glp->Color4i = exec_glColor4i; glp->Color4s = exec_glColor4s; glp->Color4ub = exec_glColor4ub; glp->Color4ui = exec_glColor4ui; glp->Color4us = exec_glColor4us; glp->Color3bv = exec_glColor3bv; glp->Color3dv = exec_glColor3dv; glp->Color3fv = exec_glColor3fv; glp->Color3iv = exec_glColor3iv; glp->Color3sv = exec_glColor3sv; glp->Color3ubv = exec_glColor3ubv; glp->Color3uiv = exec_glColor3uiv; glp->Color3usv = exec_glColor3usv; glp->Color4bv = exec_glColor4bv; glp->Color4dv = exec_glColor4dv; glp->Color4fv = exec_glColor4fv; glp->Color4iv = exec_glColor4iv; glp->Color4sv = exec_glColor4sv; glp->Color4ubv = exec_glColor4ubv; glp->Color4uiv = exec_glColor4uiv; glp->Color4usv = exec_glColor4usv; glp->TexCoord1d = exec_glTexCoord1d; glp->TexCoord1f = exec_glTexCoord1f; glp->TexCoord1i = exec_glTexCoord1i; glp->TexCoord1s = exec_glTexCoord1s; glp->TexCoord2d = exec_glTexCoord2d; glp->TexCoord2f = exec_glTexCoord2f; glp->TexCoord2i = exec_glTexCoord2i; glp->TexCoord2s = exec_glTexCoord2s; glp->TexCoord3d = exec_glTexCoord3d; glp->TexCoord3f = exec_glTexCoord3f; glp->TexCoord3i = exec_glTexCoord3i; glp->TexCoord3s = exec_glTexCoord3s; glp->TexCoord4d = exec_glTexCoord4d; glp->TexCoord4f = exec_glTexCoord4f; glp->TexCoord4i = exec_glTexCoord4i; glp->TexCoord4s = exec_glTexCoord4s; glp->TexCoord1dv = exec_glTexCoord1dv; glp->TexCoord1fv = exec_glTexCoord1fv; glp->TexCoord1iv = exec_glTexCoord1iv; glp->TexCoord1sv = exec_glTexCoord1sv; glp->TexCoord2dv = exec_glTexCoord2dv; glp->TexCoord2fv = exec_glTexCoord2fv; glp->TexCoord2iv = exec_glTexCoord2iv; glp->TexCoord2sv = exec_glTexCoord2sv; glp->TexCoord3dv = exec_glTexCoord3dv; glp->TexCoord3fv = exec_glTexCoord3fv; glp->TexCoord3iv = exec_glTexCoord3iv; glp->TexCoord3sv = exec_glTexCoord3sv; glp->TexCoord4dv = exec_glTexCoord4dv; glp->TexCoord4fv = exec_glTexCoord4fv; glp->TexCoord4iv = exec_glTexCoord4iv; glp->TexCoord4sv = exec_glTexCoord4sv; glp->RasterPos2d = exec_glRasterPos2d; glp->RasterPos2f = exec_glRasterPos2f; glp->RasterPos2i = exec_glRasterPos2i; glp->RasterPos2s = exec_glRasterPos2s; glp->RasterPos3d = exec_glRasterPos3d; glp->RasterPos3f = exec_glRasterPos3f; glp->RasterPos3i = exec_glRasterPos3i; glp->RasterPos3s = exec_glRasterPos3s; glp->RasterPos4d = exec_glRasterPos4d; glp->RasterPos4f = exec_glRasterPos4f; glp->RasterPos4i = exec_glRasterPos4i; glp->RasterPos4s = exec_glRasterPos4s; glp->RasterPos2dv = exec_glRasterPos2dv; glp->RasterPos2fv = exec_glRasterPos2fv; glp->RasterPos2iv = exec_glRasterPos2iv; glp->RasterPos2sv = exec_glRasterPos2sv; glp->RasterPos3dv = exec_glRasterPos3dv; glp->RasterPos3fv = exec_glRasterPos3fv; glp->RasterPos3iv = exec_glRasterPos3iv; glp->RasterPos3sv = exec_glRasterPos3sv; glp->RasterPos4dv = exec_glRasterPos4dv; glp->RasterPos4fv = exec_glRasterPos4fv; glp->RasterPos4iv = exec_glRasterPos4iv; glp->RasterPos4sv = exec_glRasterPos4sv; glp->Rectd = exec_glRectd; glp->Rectf = exec_glRectf; glp->Recti = exec_glRecti; glp->Rects = exec_glRects; glp->Rectdv = exec_glRectdv; glp->Rectfv = exec_glRectfv; glp->Rectiv = exec_glRectiv; glp->Rectsv = exec_glRectsv; glp->VertexPointer = exec_glVertexPointer; glp->NormalPointer = exec_glNormalPointer; glp->ColorPointer = exec_glColorPointer; glp->IndexPointer = exec_glIndexPointer; glp->TexCoordPointer = exec_glTexCoordPointer; glp->EdgeFlagPointer = exec_glEdgeFlagPointer; glp->GetPointerv = exec_glGetPointerv; glp->ArrayElement = exec_glArrayElement; glp->DrawArrays = exec_glDrawArrays; glp->DrawElements = exec_glDrawElements; glp->InterleavedArrays = exec_glInterleavedArrays; glp->ShadeModel = exec_glShadeModel; glp->Lightf = exec_glLightf; glp->Lighti = exec_glLighti; glp->Lightfv = exec_glLightfv; glp->Lightiv = exec_glLightiv; glp->GetLightfv = exec_glGetLightfv; glp->GetLightiv = exec_glGetLightiv; glp->LightModelf = exec_glLightModelf; glp->LightModeli = exec_glLightModeli; glp->LightModelfv = exec_glLightModelfv; glp->LightModeliv = exec_glLightModeliv; glp->Materialf = exec_glMaterialf; glp->Materiali = exec_glMateriali; glp->Materialfv = exec_glMaterialfv; glp->Materialiv = exec_glMaterialiv; glp->GetMaterialfv = exec_glGetMaterialfv; glp->GetMaterialiv = exec_glGetMaterialiv; glp->ColorMaterial = exec_glColorMaterial; glp->PixelZoom = exec_glPixelZoom; glp->PixelStoref = exec_glPixelStoref; glp->PixelStorei = exec_glPixelStorei; glp->PixelTransferf = exec_glPixelTransferf; glp->PixelTransferi = exec_glPixelTransferi; glp->PixelMapfv = exec_glPixelMapfv; glp->PixelMapuiv = exec_glPixelMapuiv; glp->PixelMapusv = exec_glPixelMapusv; glp->GetPixelMapfv = exec_glGetPixelMapfv; glp->GetPixelMapuiv = exec_glGetPixelMapuiv; glp->GetPixelMapusv = exec_glGetPixelMapusv; glp->Bitmap = exec_glBitmap; glp->ReadPixels = exec_glReadPixels; glp->DrawPixels = exec_glDrawPixels; glp->CopyPixels = exec_glCopyPixels; glp->StencilFunc = exec_glStencilFunc; glp->StencilMask = exec_glStencilMask; glp->StencilOp = exec_glStencilOp; glp->ClearStencil = exec_glClearStencil; glp->TexGend = exec_glTexGend; glp->TexGenf = exec_glTexGenf; glp->TexGeni = exec_glTexGeni; glp->TexGendv = exec_glTexGendv; glp->TexGenfv = exec_glTexGenfv; glp->TexGeniv = exec_glTexGeniv; glp->GetTexGendv = exec_glGetTexGendv; glp->GetTexGenfv = exec_glGetTexGenfv; glp->GetTexGeniv = exec_glGetTexGeniv; glp->TexEnvf = exec_glTexEnvf; glp->TexEnvi = exec_glTexEnvi; glp->TexEnvfv = exec_glTexEnvfv; glp->TexEnviv = exec_glTexEnviv; glp->GetTexEnvfv = exec_glGetTexEnvfv; glp->GetTexEnviv = exec_glGetTexEnviv; glp->TexParameterf = exec_glTexParameterf; glp->TexParameteri = exec_glTexParameteri; glp->TexParameterfv = exec_glTexParameterfv; glp->TexParameteriv = exec_glTexParameteriv; glp->GetTexParameterfv = exec_glGetTexParameterfv; glp->GetTexParameteriv = exec_glGetTexParameteriv; glp->GetTexLevelParameterfv = exec_glGetTexLevelParameterfv; glp->GetTexLevelParameteriv = exec_glGetTexLevelParameteriv; glp->TexImage1D = exec_glTexImage1D; glp->TexImage2D = exec_glTexImage2D; glp->GetTexImage = exec_glGetTexImage; glp->GenTextures = exec_glGenTextures; glp->DeleteTextures = exec_glDeleteTextures; glp->BindTexture = exec_glBindTexture; glp->PrioritizeTextures = exec_glPrioritizeTextures; glp->AreTexturesResident = exec_glAreTexturesResident; glp->IsTexture = exec_glIsTexture; glp->TexSubImage1D = exec_glTexSubImage1D; glp->TexSubImage2D = exec_glTexSubImage2D; glp->CopyTexImage1D = exec_glCopyTexImage1D; glp->CopyTexImage2D = exec_glCopyTexImage2D; glp->CopyTexSubImage1D = exec_glCopyTexSubImage1D; glp->CopyTexSubImage2D = exec_glCopyTexSubImage2D; glp->Map1d = exec_glMap1d; glp->Map1f = exec_glMap1f; glp->Map2d = exec_glMap2d; glp->Map2f = exec_glMap2f; glp->GetMapdv = exec_glGetMapdv; glp->GetMapfv = exec_glGetMapfv; glp->GetMapiv = exec_glGetMapiv; glp->EvalCoord1d = exec_glEvalCoord1d; glp->EvalCoord1f = exec_glEvalCoord1f; glp->EvalCoord1dv = exec_glEvalCoord1dv; glp->EvalCoord1fv = exec_glEvalCoord1fv; glp->EvalCoord2d = exec_glEvalCoord2d; glp->EvalCoord2f = exec_glEvalCoord2f; glp->EvalCoord2dv = exec_glEvalCoord2dv; glp->EvalCoord2fv = exec_glEvalCoord2fv; glp->MapGrid1d = exec_glMapGrid1d; glp->MapGrid1f = exec_glMapGrid1f; glp->MapGrid2d = exec_glMapGrid2d; glp->MapGrid2f = exec_glMapGrid2f; glp->EvalPoint1 = exec_glEvalPoint1; glp->EvalPoint2 = exec_glEvalPoint2; glp->EvalMesh1 = exec_glEvalMesh1; glp->EvalMesh2 = exec_glEvalMesh2; glp->Fogf = exec_glFogf; glp->Fogi = exec_glFogi; glp->Fogfv = exec_glFogfv; glp->Fogiv = exec_glFogiv; glp->FeedbackBuffer = exec_glFeedbackBuffer; glp->PassThrough = exec_glPassThrough; glp->SelectBuffer = exec_glSelectBuffer; glp->InitNames = exec_glInitNames; glp->LoadName = exec_glLoadName; glp->PushName = exec_glPushName; glp->PopName = exec_glPopName; glp->EnableTraceMESA = exec_glEnableTraceMESA; glp->DisableTraceMESA = exec_glDisableTraceMESA; glp->NewTraceMESA = exec_glNewTraceMESA; glp->EndTraceMESA = exec_glEndTraceMESA; glp->TraceAssertAttribMESA = exec_glTraceAssertAttribMESA; glp->TraceCommentMESA = exec_glTraceCommentMESA; glp->TraceTextureMESA = exec_glTraceTextureMESA; glp->TraceListMESA = exec_glTraceListMESA; glp->TracePointerMESA = exec_glTracePointerMESA; glp->TracePointerRangeMESA = exec_glTracePointerRangeMESA; glp->BlendEquationSeparateATI = exec_glBlendEquationSeparateATI; glp->BlendColor = exec_glBlendColor; glp->BlendEquation = exec_glBlendEquation; glp->DrawRangeElements = exec_glDrawRangeElements; glp->ColorTable = exec_glColorTable; glp->ColorTableParameterfv = exec_glColorTableParameterfv; glp->ColorTableParameteriv = exec_glColorTableParameteriv; glp->CopyColorTable = exec_glCopyColorTable; glp->GetColorTable = exec_glGetColorTable; glp->GetColorTableParameterfv = exec_glGetColorTableParameterfv; glp->GetColorTableParameteriv = exec_glGetColorTableParameteriv; glp->ColorSubTable = exec_glColorSubTable; glp->CopyColorSubTable = exec_glCopyColorSubTable; glp->ConvolutionFilter1D = exec_glConvolutionFilter1D; glp->ConvolutionFilter2D = exec_glConvolutionFilter2D; glp->ConvolutionParameterf = exec_glConvolutionParameterf; glp->ConvolutionParameterfv = exec_glConvolutionParameterfv; glp->ConvolutionParameteri = exec_glConvolutionParameteri; glp->ConvolutionParameteriv = exec_glConvolutionParameteriv; glp->CopyConvolutionFilter1D = exec_glCopyConvolutionFilter1D; glp->CopyConvolutionFilter2D = exec_glCopyConvolutionFilter2D; glp->GetConvolutionFilter = exec_glGetConvolutionFilter; glp->GetConvolutionParameterfv = exec_glGetConvolutionParameterfv; glp->GetConvolutionParameteriv = exec_glGetConvolutionParameteriv; glp->GetSeparableFilter = exec_glGetSeparableFilter; glp->SeparableFilter2D = exec_glSeparableFilter2D; glp->GetHistogram = exec_glGetHistogram; glp->GetHistogramParameterfv = exec_glGetHistogramParameterfv; glp->GetHistogramParameteriv = exec_glGetHistogramParameteriv; glp->GetMinmax = exec_glGetMinmax; glp->GetMinmaxParameterfv = exec_glGetMinmaxParameterfv; glp->GetMinmaxParameteriv = exec_glGetMinmaxParameteriv; glp->Histogram = exec_glHistogram; glp->Minmax = exec_glMinmax; glp->ResetHistogram = exec_glResetHistogram; glp->ResetMinmax = exec_glResetMinmax; glp->TexImage3D = exec_glTexImage3D; glp->TexSubImage3D = exec_glTexSubImage3D; glp->CopyTexSubImage3D = exec_glCopyTexSubImage3D; glp->ActiveTexture = exec_glActiveTexture; glp->ClientActiveTexture = exec_glClientActiveTexture; glp->MultiTexCoord1d = exec_glMultiTexCoord1d; glp->MultiTexCoord1dv = exec_glMultiTexCoord1dv; glp->MultiTexCoord1f = exec_glMultiTexCoord1f; glp->MultiTexCoord1fv = exec_glMultiTexCoord1fv; glp->MultiTexCoord1i = exec_glMultiTexCoord1i; glp->MultiTexCoord1iv = exec_glMultiTexCoord1iv; glp->MultiTexCoord1s = exec_glMultiTexCoord1s; glp->MultiTexCoord1sv = exec_glMultiTexCoord1sv; glp->MultiTexCoord2d = exec_glMultiTexCoord2d; glp->MultiTexCoord2dv = exec_glMultiTexCoord2dv; glp->MultiTexCoord2f = exec_glMultiTexCoord2f; glp->MultiTexCoord2fv = exec_glMultiTexCoord2fv; glp->MultiTexCoord2i = exec_glMultiTexCoord2i; glp->MultiTexCoord2iv = exec_glMultiTexCoord2iv; glp->MultiTexCoord2s = exec_glMultiTexCoord2s; glp->MultiTexCoord2sv = exec_glMultiTexCoord2sv; glp->MultiTexCoord3d = exec_glMultiTexCoord3d; glp->MultiTexCoord3dv = exec_glMultiTexCoord3dv; glp->MultiTexCoord3f = exec_glMultiTexCoord3f; glp->MultiTexCoord3fv = exec_glMultiTexCoord3fv; glp->MultiTexCoord3i = exec_glMultiTexCoord3i; glp->MultiTexCoord3iv = exec_glMultiTexCoord3iv; glp->MultiTexCoord3s = exec_glMultiTexCoord3s; glp->MultiTexCoord3sv = exec_glMultiTexCoord3sv; glp->MultiTexCoord4d = exec_glMultiTexCoord4d; glp->MultiTexCoord4dv = exec_glMultiTexCoord4dv; glp->MultiTexCoord4f = exec_glMultiTexCoord4f; glp->MultiTexCoord4fv = exec_glMultiTexCoord4fv; glp->MultiTexCoord4i = exec_glMultiTexCoord4i; glp->MultiTexCoord4iv = exec_glMultiTexCoord4iv; glp->MultiTexCoord4s = exec_glMultiTexCoord4s; glp->MultiTexCoord4sv = exec_glMultiTexCoord4sv; glp->LoadTransposeMatrixf = exec_glLoadTransposeMatrixf; glp->LoadTransposeMatrixd = exec_glLoadTransposeMatrixd; glp->MultTransposeMatrixf = exec_glMultTransposeMatrixf; glp->MultTransposeMatrixd = exec_glMultTransposeMatrixd; glp->SampleCoverage = exec_glSampleCoverage; glp->CompressedTexImage3D = exec_glCompressedTexImage3D; glp->CompressedTexImage2D = exec_glCompressedTexImage2D; glp->CompressedTexImage1D = exec_glCompressedTexImage1D; glp->CompressedTexSubImage3D = exec_glCompressedTexSubImage3D; glp->CompressedTexSubImage2D = exec_glCompressedTexSubImage2D; glp->CompressedTexSubImage1D = exec_glCompressedTexSubImage1D; glp->GetCompressedTexImage = exec_glGetCompressedTexImage; glp->BlendFuncSeparate = exec_glBlendFuncSeparate; glp->FogCoordf = exec_glFogCoordf; glp->FogCoordfv = exec_glFogCoordfv; glp->FogCoordd = exec_glFogCoordd; glp->FogCoorddv = exec_glFogCoorddv; glp->FogCoordPointer = exec_glFogCoordPointer; glp->MultiDrawArrays = exec_glMultiDrawArrays; glp->MultiDrawElements = exec_glMultiDrawElements; glp->PointParameterf = exec_glPointParameterf; glp->PointParameterfv = exec_glPointParameterfv; glp->PointParameteri = exec_glPointParameteri; glp->PointParameteriv = exec_glPointParameteriv; glp->SecondaryColor3b = exec_glSecondaryColor3b; glp->SecondaryColor3bv = exec_glSecondaryColor3bv; glp->SecondaryColor3d = exec_glSecondaryColor3d; glp->SecondaryColor3dv = exec_glSecondaryColor3dv; glp->SecondaryColor3f = exec_glSecondaryColor3f; glp->SecondaryColor3fv = exec_glSecondaryColor3fv; glp->SecondaryColor3i = exec_glSecondaryColor3i; glp->SecondaryColor3iv = exec_glSecondaryColor3iv; glp->SecondaryColor3s = exec_glSecondaryColor3s; glp->SecondaryColor3sv = exec_glSecondaryColor3sv; glp->SecondaryColor3ub = exec_glSecondaryColor3ub; glp->SecondaryColor3ubv = exec_glSecondaryColor3ubv; glp->SecondaryColor3ui = exec_glSecondaryColor3ui; glp->SecondaryColor3uiv = exec_glSecondaryColor3uiv; glp->SecondaryColor3us = exec_glSecondaryColor3us; glp->SecondaryColor3usv = exec_glSecondaryColor3usv; glp->SecondaryColorPointer = exec_glSecondaryColorPointer; glp->WindowPos2d = exec_glWindowPos2d; glp->WindowPos2dv = exec_glWindowPos2dv; glp->WindowPos2f = exec_glWindowPos2f; glp->WindowPos2fv = exec_glWindowPos2fv; glp->WindowPos2i = exec_glWindowPos2i; glp->WindowPos2iv = exec_glWindowPos2iv; glp->WindowPos2s = exec_glWindowPos2s; glp->WindowPos2sv = exec_glWindowPos2sv; glp->WindowPos3d = exec_glWindowPos3d; glp->WindowPos3dv = exec_glWindowPos3dv; glp->WindowPos3f = exec_glWindowPos3f; glp->WindowPos3fv = exec_glWindowPos3fv; glp->WindowPos3i = exec_glWindowPos3i; glp->WindowPos3iv = exec_glWindowPos3iv; glp->WindowPos3s = exec_glWindowPos3s; glp->WindowPos3sv = exec_glWindowPos3sv; glp->GenQueries = exec_glGenQueries; glp->DeleteQueries = exec_glDeleteQueries; glp->IsQuery = exec_glIsQuery; glp->BeginQuery = exec_glBeginQuery; glp->EndQuery = exec_glEndQuery; glp->GetQueryiv = exec_glGetQueryiv; glp->GetQueryObjectiv = exec_glGetQueryObjectiv; glp->GetQueryObjectuiv = exec_glGetQueryObjectuiv; glp->BindBuffer = exec_glBindBuffer; glp->DeleteBuffers = exec_glDeleteBuffers; glp->GenBuffers = exec_glGenBuffers; glp->IsBuffer = exec_glIsBuffer; glp->BufferData = exec_glBufferData; glp->BufferSubData = exec_glBufferSubData; glp->GetBufferSubData = exec_glGetBufferSubData; glp->MapBuffer = exec_glMapBuffer; glp->UnmapBuffer = exec_glUnmapBuffer; glp->GetBufferParameteriv = exec_glGetBufferParameteriv; glp->GetBufferPointerv = exec_glGetBufferPointerv; glp->ActiveTextureARB = exec_glActiveTextureARB; glp->ClientActiveTextureARB = exec_glClientActiveTextureARB; glp->MultiTexCoord1dARB = exec_glMultiTexCoord1dARB; glp->MultiTexCoord1dvARB = exec_glMultiTexCoord1dvARB; glp->MultiTexCoord1fARB = exec_glMultiTexCoord1fARB; glp->MultiTexCoord1fvARB = exec_glMultiTexCoord1fvARB; glp->MultiTexCoord1iARB = exec_glMultiTexCoord1iARB; glp->MultiTexCoord1ivARB = exec_glMultiTexCoord1ivARB; glp->MultiTexCoord1sARB = exec_glMultiTexCoord1sARB; glp->MultiTexCoord1svARB = exec_glMultiTexCoord1svARB; glp->MultiTexCoord2dARB = exec_glMultiTexCoord2dARB; glp->MultiTexCoord2dvARB = exec_glMultiTexCoord2dvARB; glp->MultiTexCoord2fARB = exec_glMultiTexCoord2fARB; glp->MultiTexCoord2fvARB = exec_glMultiTexCoord2fvARB; glp->MultiTexCoord2iARB = exec_glMultiTexCoord2iARB; glp->MultiTexCoord2ivARB = exec_glMultiTexCoord2ivARB; glp->MultiTexCoord2sARB = exec_glMultiTexCoord2sARB; glp->MultiTexCoord2svARB = exec_glMultiTexCoord2svARB; glp->MultiTexCoord3dARB = exec_glMultiTexCoord3dARB; glp->MultiTexCoord3dvARB = exec_glMultiTexCoord3dvARB; glp->MultiTexCoord3fARB = exec_glMultiTexCoord3fARB; glp->MultiTexCoord3fvARB = exec_glMultiTexCoord3fvARB; glp->MultiTexCoord3iARB = exec_glMultiTexCoord3iARB; glp->MultiTexCoord3ivARB = exec_glMultiTexCoord3ivARB; glp->MultiTexCoord3sARB = exec_glMultiTexCoord3sARB; glp->MultiTexCoord3svARB = exec_glMultiTexCoord3svARB; glp->MultiTexCoord4dARB = exec_glMultiTexCoord4dARB; glp->MultiTexCoord4dvARB = exec_glMultiTexCoord4dvARB; glp->MultiTexCoord4fARB = exec_glMultiTexCoord4fARB; glp->MultiTexCoord4fvARB = exec_glMultiTexCoord4fvARB; glp->MultiTexCoord4iARB = exec_glMultiTexCoord4iARB; glp->MultiTexCoord4ivARB = exec_glMultiTexCoord4ivARB; glp->MultiTexCoord4sARB = exec_glMultiTexCoord4sARB; glp->MultiTexCoord4svARB = exec_glMultiTexCoord4svARB; glp->LoadTransposeMatrixfARB = exec_glLoadTransposeMatrixfARB; glp->LoadTransposeMatrixdARB = exec_glLoadTransposeMatrixdARB; glp->MultTransposeMatrixfARB = exec_glMultTransposeMatrixfARB; glp->MultTransposeMatrixdARB = exec_glMultTransposeMatrixdARB; glp->SampleCoverageARB = exec_glSampleCoverageARB; glp->CompressedTexImage3DARB = exec_glCompressedTexImage3DARB; glp->CompressedTexImage2DARB = exec_glCompressedTexImage2DARB; glp->CompressedTexImage1DARB = exec_glCompressedTexImage1DARB; glp->CompressedTexSubImage3DARB = exec_glCompressedTexSubImage3DARB; glp->CompressedTexSubImage2DARB = exec_glCompressedTexSubImage2DARB; glp->CompressedTexSubImage1DARB = exec_glCompressedTexSubImage1DARB; glp->GetCompressedTexImageARB = exec_glGetCompressedTexImageARB; glp->PointParameterfARB = exec_glPointParameterfARB; glp->PointParameterfvARB = exec_glPointParameterfvARB; glp->WeightbvARB = exec_glWeightbvARB; glp->WeightsvARB = exec_glWeightsvARB; glp->WeightivARB = exec_glWeightivARB; glp->WeightfvARB = exec_glWeightfvARB; glp->WeightdvARB = exec_glWeightdvARB; glp->WeightubvARB = exec_glWeightubvARB; glp->WeightusvARB = exec_glWeightusvARB; glp->WeightuivARB = exec_glWeightuivARB; glp->WeightPointerARB = exec_glWeightPointerARB; glp->VertexBlendARB = exec_glVertexBlendARB; glp->CurrentPaletteMatrixARB = exec_glCurrentPaletteMatrixARB; glp->MatrixIndexubvARB = exec_glMatrixIndexubvARB; glp->MatrixIndexusvARB = exec_glMatrixIndexusvARB; glp->MatrixIndexuivARB = exec_glMatrixIndexuivARB; glp->MatrixIndexPointerARB = exec_glMatrixIndexPointerARB; glp->WindowPos2dARB = exec_glWindowPos2dARB; glp->WindowPos2dvARB = exec_glWindowPos2dvARB; glp->WindowPos2fARB = exec_glWindowPos2fARB; glp->WindowPos2fvARB = exec_glWindowPos2fvARB; glp->WindowPos2iARB = exec_glWindowPos2iARB; glp->WindowPos2ivARB = exec_glWindowPos2ivARB; glp->WindowPos2sARB = exec_glWindowPos2sARB; glp->WindowPos2svARB = exec_glWindowPos2svARB; glp->WindowPos3dARB = exec_glWindowPos3dARB; glp->WindowPos3dvARB = exec_glWindowPos3dvARB; glp->WindowPos3fARB = exec_glWindowPos3fARB; glp->WindowPos3fvARB = exec_glWindowPos3fvARB; glp->WindowPos3iARB = exec_glWindowPos3iARB; glp->WindowPos3ivARB = exec_glWindowPos3ivARB; glp->WindowPos3sARB = exec_glWindowPos3sARB; glp->WindowPos3svARB = exec_glWindowPos3svARB; glp->VertexAttrib1dARB = exec_glVertexAttrib1dARB; glp->VertexAttrib1dvARB = exec_glVertexAttrib1dvARB; glp->VertexAttrib1fARB = exec_glVertexAttrib1fARB; glp->VertexAttrib1fvARB = exec_glVertexAttrib1fvARB; glp->VertexAttrib1sARB = exec_glVertexAttrib1sARB; glp->VertexAttrib1svARB = exec_glVertexAttrib1svARB; glp->VertexAttrib2dARB = exec_glVertexAttrib2dARB; glp->VertexAttrib2dvARB = exec_glVertexAttrib2dvARB; glp->VertexAttrib2fARB = exec_glVertexAttrib2fARB; glp->VertexAttrib2fvARB = exec_glVertexAttrib2fvARB; glp->VertexAttrib2sARB = exec_glVertexAttrib2sARB; glp->VertexAttrib2svARB = exec_glVertexAttrib2svARB; glp->VertexAttrib3dARB = exec_glVertexAttrib3dARB; glp->VertexAttrib3dvARB = exec_glVertexAttrib3dvARB; glp->VertexAttrib3fARB = exec_glVertexAttrib3fARB; glp->VertexAttrib3fvARB = exec_glVertexAttrib3fvARB; glp->VertexAttrib3sARB = exec_glVertexAttrib3sARB; glp->VertexAttrib3svARB = exec_glVertexAttrib3svARB; glp->VertexAttrib4NbvARB = exec_glVertexAttrib4NbvARB; glp->VertexAttrib4NivARB = exec_glVertexAttrib4NivARB; glp->VertexAttrib4NsvARB = exec_glVertexAttrib4NsvARB; glp->VertexAttrib4NubARB = exec_glVertexAttrib4NubARB; glp->VertexAttrib4NubvARB = exec_glVertexAttrib4NubvARB; glp->VertexAttrib4NuivARB = exec_glVertexAttrib4NuivARB; glp->VertexAttrib4NusvARB = exec_glVertexAttrib4NusvARB; glp->VertexAttrib4bvARB = exec_glVertexAttrib4bvARB; glp->VertexAttrib4dARB = exec_glVertexAttrib4dARB; glp->VertexAttrib4dvARB = exec_glVertexAttrib4dvARB; glp->VertexAttrib4fARB = exec_glVertexAttrib4fARB; glp->VertexAttrib4fvARB = exec_glVertexAttrib4fvARB; glp->VertexAttrib4ivARB = exec_glVertexAttrib4ivARB; glp->VertexAttrib4sARB = exec_glVertexAttrib4sARB; glp->VertexAttrib4svARB = exec_glVertexAttrib4svARB; glp->VertexAttrib4ubvARB = exec_glVertexAttrib4ubvARB; glp->VertexAttrib4uivARB = exec_glVertexAttrib4uivARB; glp->VertexAttrib4usvARB = exec_glVertexAttrib4usvARB; glp->VertexAttribPointerARB = exec_glVertexAttribPointerARB; glp->EnableVertexAttribArrayARB = exec_glEnableVertexAttribArrayARB; glp->DisableVertexAttribArrayARB = exec_glDisableVertexAttribArrayARB; glp->ProgramStringARB = exec_glProgramStringARB; glp->BindProgramARB = exec_glBindProgramARB; glp->DeleteProgramsARB = exec_glDeleteProgramsARB; glp->GenProgramsARB = exec_glGenProgramsARB; glp->ProgramEnvParameter4dARB = exec_glProgramEnvParameter4dARB; glp->ProgramEnvParameter4dvARB = exec_glProgramEnvParameter4dvARB; glp->ProgramEnvParameter4fARB = exec_glProgramEnvParameter4fARB; glp->ProgramEnvParameter4fvARB = exec_glProgramEnvParameter4fvARB; glp->ProgramLocalParameter4dARB = exec_glProgramLocalParameter4dARB; glp->ProgramLocalParameter4dvARB = exec_glProgramLocalParameter4dvARB; glp->ProgramLocalParameter4fARB = exec_glProgramLocalParameter4fARB; glp->ProgramLocalParameter4fvARB = exec_glProgramLocalParameter4fvARB; glp->GetProgramEnvParameterdvARB = exec_glGetProgramEnvParameterdvARB; glp->GetProgramEnvParameterfvARB = exec_glGetProgramEnvParameterfvARB; glp->GetProgramLocalParameterdvARB = exec_glGetProgramLocalParameterdvARB; glp->GetProgramLocalParameterfvARB = exec_glGetProgramLocalParameterfvARB; glp->GetProgramivARB = exec_glGetProgramivARB; glp->GetProgramStringARB = exec_glGetProgramStringARB; glp->GetVertexAttribdvARB = exec_glGetVertexAttribdvARB; glp->GetVertexAttribfvARB = exec_glGetVertexAttribfvARB; glp->GetVertexAttribivARB = exec_glGetVertexAttribivARB; glp->GetVertexAttribPointervARB = exec_glGetVertexAttribPointervARB; glp->IsProgramARB = exec_glIsProgramARB; glp->BindBufferARB = exec_glBindBufferARB; glp->DeleteBuffersARB = exec_glDeleteBuffersARB; glp->GenBuffersARB = exec_glGenBuffersARB; glp->IsBufferARB = exec_glIsBufferARB; glp->BufferDataARB = exec_glBufferDataARB; glp->BufferSubDataARB = exec_glBufferSubDataARB; glp->GetBufferSubDataARB = exec_glGetBufferSubDataARB; glp->MapBufferARB = exec_glMapBufferARB; glp->UnmapBufferARB = exec_glUnmapBufferARB; glp->GetBufferParameterivARB = exec_glGetBufferParameterivARB; glp->GetBufferPointervARB = exec_glGetBufferPointervARB; glp->GenQueriesARB = exec_glGenQueriesARB; glp->DeleteQueriesARB = exec_glDeleteQueriesARB; glp->IsQueryARB = exec_glIsQueryARB; glp->BeginQueryARB = exec_glBeginQueryARB; glp->EndQueryARB = exec_glEndQueryARB; glp->GetQueryivARB = exec_glGetQueryivARB; glp->GetQueryObjectivARB = exec_glGetQueryObjectivARB; glp->GetQueryObjectuivARB = exec_glGetQueryObjectuivARB; glp->DeleteObjectARB = exec_glDeleteObjectARB; glp->GetHandleARB = exec_glGetHandleARB; glp->DetachObjectARB = exec_glDetachObjectARB; glp->CreateShaderObjectARB = exec_glCreateShaderObjectARB; glp->ShaderSourceARB = exec_glShaderSourceARB; glp->CompileShaderARB = exec_glCompileShaderARB; glp->CreateProgramObjectARB = exec_glCreateProgramObjectARB; glp->AttachObjectARB = exec_glAttachObjectARB; glp->LinkProgramARB = exec_glLinkProgramARB; glp->UseProgramObjectARB = exec_glUseProgramObjectARB; glp->ValidateProgramARB = exec_glValidateProgramARB; glp->Uniform1fARB = exec_glUniform1fARB; glp->Uniform2fARB = exec_glUniform2fARB; glp->Uniform3fARB = exec_glUniform3fARB; glp->Uniform4fARB = exec_glUniform4fARB; glp->Uniform1iARB = exec_glUniform1iARB; glp->Uniform2iARB = exec_glUniform2iARB; glp->Uniform3iARB = exec_glUniform3iARB; glp->Uniform4iARB = exec_glUniform4iARB; glp->Uniform1fvARB = exec_glUniform1fvARB; glp->Uniform2fvARB = exec_glUniform2fvARB; glp->Uniform3fvARB = exec_glUniform3fvARB; glp->Uniform4fvARB = exec_glUniform4fvARB; glp->Uniform1ivARB = exec_glUniform1ivARB; glp->Uniform2ivARB = exec_glUniform2ivARB; glp->Uniform3ivARB = exec_glUniform3ivARB; glp->Uniform4ivARB = exec_glUniform4ivARB; glp->UniformMatrix2fvARB = exec_glUniformMatrix2fvARB; glp->UniformMatrix3fvARB = exec_glUniformMatrix3fvARB; glp->UniformMatrix4fvARB = exec_glUniformMatrix4fvARB; glp->GetObjectParameterfvARB = exec_glGetObjectParameterfvARB; glp->GetObjectParameterivARB = exec_glGetObjectParameterivARB; glp->GetInfoLogARB = exec_glGetInfoLogARB; glp->GetAttachedObjectsARB = exec_glGetAttachedObjectsARB; glp->GetUniformLocationARB = exec_glGetUniformLocationARB; glp->GetActiveUniformARB = exec_glGetActiveUniformARB; glp->GetUniformfvARB = exec_glGetUniformfvARB; glp->GetUniformivARB = exec_glGetUniformivARB; glp->GetShaderSourceARB = exec_glGetShaderSourceARB; glp->BindAttribLocationARB = exec_glBindAttribLocationARB; glp->GetActiveAttribARB = exec_glGetActiveAttribARB; glp->GetAttribLocationARB = exec_glGetAttribLocationARB; glp->DrawBuffersARB = exec_glDrawBuffersARB; glp->BlendColorEXT = exec_glBlendColorEXT; glp->PolygonOffsetEXT = exec_glPolygonOffsetEXT; glp->TexImage3DEXT = exec_glTexImage3DEXT; glp->TexSubImage3DEXT = exec_glTexSubImage3DEXT; glp->GetTexFilterFuncSGIS = exec_glGetTexFilterFuncSGIS; glp->TexFilterFuncSGIS = exec_glTexFilterFuncSGIS; glp->TexSubImage1DEXT = exec_glTexSubImage1DEXT; glp->TexSubImage2DEXT = exec_glTexSubImage2DEXT; glp->CopyTexImage1DEXT = exec_glCopyTexImage1DEXT; glp->CopyTexImage2DEXT = exec_glCopyTexImage2DEXT; glp->CopyTexSubImage1DEXT = exec_glCopyTexSubImage1DEXT; glp->CopyTexSubImage2DEXT = exec_glCopyTexSubImage2DEXT; glp->CopyTexSubImage3DEXT = exec_glCopyTexSubImage3DEXT; glp->GetHistogramEXT = exec_glGetHistogramEXT; glp->GetHistogramParameterfvEXT = exec_glGetHistogramParameterfvEXT; glp->GetHistogramParameterivEXT = exec_glGetHistogramParameterivEXT; glp->GetMinmaxEXT = exec_glGetMinmaxEXT; glp->GetMinmaxParameterfvEXT = exec_glGetMinmaxParameterfvEXT; glp->GetMinmaxParameterivEXT = exec_glGetMinmaxParameterivEXT; glp->HistogramEXT = exec_glHistogramEXT; glp->MinmaxEXT = exec_glMinmaxEXT; glp->ResetHistogramEXT = exec_glResetHistogramEXT; glp->ResetMinmaxEXT = exec_glResetMinmaxEXT; glp->ConvolutionFilter1DEXT = exec_glConvolutionFilter1DEXT; glp->ConvolutionFilter2DEXT = exec_glConvolutionFilter2DEXT; glp->ConvolutionParameterfEXT = exec_glConvolutionParameterfEXT; glp->ConvolutionParameterfvEXT = exec_glConvolutionParameterfvEXT; glp->ConvolutionParameteriEXT = exec_glConvolutionParameteriEXT; glp->ConvolutionParameterivEXT = exec_glConvolutionParameterivEXT; glp->CopyConvolutionFilter1DEXT = exec_glCopyConvolutionFilter1DEXT; glp->CopyConvolutionFilter2DEXT = exec_glCopyConvolutionFilter2DEXT; glp->GetConvolutionFilterEXT = exec_glGetConvolutionFilterEXT; glp->GetConvolutionParameterfvEXT = exec_glGetConvolutionParameterfvEXT; glp->GetConvolutionParameterivEXT = exec_glGetConvolutionParameterivEXT; glp->GetSeparableFilterEXT = exec_glGetSeparableFilterEXT; glp->SeparableFilter2DEXT = exec_glSeparableFilter2DEXT; glp->ColorTableSGI = exec_glColorTableSGI; glp->ColorTableParameterfvSGI = exec_glColorTableParameterfvSGI; glp->ColorTableParameterivSGI = exec_glColorTableParameterivSGI; glp->CopyColorTableSGI = exec_glCopyColorTableSGI; glp->GetColorTableSGI = exec_glGetColorTableSGI; glp->GetColorTableParameterfvSGI = exec_glGetColorTableParameterfvSGI; glp->GetColorTableParameterivSGI = exec_glGetColorTableParameterivSGI; glp->PixelTexGenSGIX = exec_glPixelTexGenSGIX; glp->PixelTexGenParameteriSGIS = exec_glPixelTexGenParameteriSGIS; glp->PixelTexGenParameterivSGIS = exec_glPixelTexGenParameterivSGIS; glp->PixelTexGenParameterfSGIS = exec_glPixelTexGenParameterfSGIS; glp->PixelTexGenParameterfvSGIS = exec_glPixelTexGenParameterfvSGIS; glp->GetPixelTexGenParameterivSGIS = exec_glGetPixelTexGenParameterivSGIS; glp->GetPixelTexGenParameterfvSGIS = exec_glGetPixelTexGenParameterfvSGIS; glp->TexImage4DSGIS = exec_glTexImage4DSGIS; glp->TexSubImage4DSGIS = exec_glTexSubImage4DSGIS; glp->AreTexturesResidentEXT = exec_glAreTexturesResidentEXT; glp->BindTextureEXT = exec_glBindTextureEXT; glp->DeleteTexturesEXT = exec_glDeleteTexturesEXT; glp->GenTexturesEXT = exec_glGenTexturesEXT; glp->IsTextureEXT = exec_glIsTextureEXT; glp->PrioritizeTexturesEXT = exec_glPrioritizeTexturesEXT; glp->DetailTexFuncSGIS = exec_glDetailTexFuncSGIS; glp->GetDetailTexFuncSGIS = exec_glGetDetailTexFuncSGIS; glp->SharpenTexFuncSGIS = exec_glSharpenTexFuncSGIS; glp->GetSharpenTexFuncSGIS = exec_glGetSharpenTexFuncSGIS; glp->SampleMaskSGIS = exec_glSampleMaskSGIS; glp->SamplePatternSGIS = exec_glSamplePatternSGIS; glp->ArrayElementEXT = exec_glArrayElementEXT; glp->ColorPointerEXT = exec_glColorPointerEXT; glp->DrawArraysEXT = exec_glDrawArraysEXT; glp->EdgeFlagPointerEXT = exec_glEdgeFlagPointerEXT; glp->GetPointervEXT = exec_glGetPointervEXT; glp->IndexPointerEXT = exec_glIndexPointerEXT; glp->NormalPointerEXT = exec_glNormalPointerEXT; glp->TexCoordPointerEXT = exec_glTexCoordPointerEXT; glp->VertexPointerEXT = exec_glVertexPointerEXT; glp->BlendEquationEXT = exec_glBlendEquationEXT; glp->SpriteParameterfSGIX = exec_glSpriteParameterfSGIX; glp->SpriteParameterfvSGIX = exec_glSpriteParameterfvSGIX; glp->SpriteParameteriSGIX = exec_glSpriteParameteriSGIX; glp->SpriteParameterivSGIX = exec_glSpriteParameterivSGIX; glp->PointParameterfEXT = exec_glPointParameterfEXT; glp->PointParameterfvEXT = exec_glPointParameterfvEXT; glp->PointParameterfSGIS = exec_glPointParameterfSGIS; glp->PointParameterfvSGIS = exec_glPointParameterfvSGIS; glp->GetInstrumentsSGIX = exec_glGetInstrumentsSGIX; glp->InstrumentsBufferSGIX = exec_glInstrumentsBufferSGIX; glp->PollInstrumentsSGIX = exec_glPollInstrumentsSGIX; glp->ReadInstrumentsSGIX = exec_glReadInstrumentsSGIX; glp->StartInstrumentsSGIX = exec_glStartInstrumentsSGIX; glp->StopInstrumentsSGIX = exec_glStopInstrumentsSGIX; glp->FrameZoomSGIX = exec_glFrameZoomSGIX; glp->TagSampleBufferSGIX = exec_glTagSampleBufferSGIX; glp->DeformationMap3dSGIX = exec_glDeformationMap3dSGIX; glp->DeformationMap3fSGIX = exec_glDeformationMap3fSGIX; glp->DeformSGIX = exec_glDeformSGIX; glp->LoadIdentityDeformationMapSGIX = exec_glLoadIdentityDeformationMapSGIX; glp->ReferencePlaneSGIX = exec_glReferencePlaneSGIX; glp->FlushRasterSGIX = exec_glFlushRasterSGIX; glp->FogFuncSGIS = exec_glFogFuncSGIS; glp->GetFogFuncSGIS = exec_glGetFogFuncSGIS; glp->ImageTransformParameteriHP = exec_glImageTransformParameteriHP; glp->ImageTransformParameterfHP = exec_glImageTransformParameterfHP; glp->ImageTransformParameterivHP = exec_glImageTransformParameterivHP; glp->ImageTransformParameterfvHP = exec_glImageTransformParameterfvHP; glp->GetImageTransformParameterivHP = exec_glGetImageTransformParameterivHP; glp->GetImageTransformParameterfvHP = exec_glGetImageTransformParameterfvHP; glp->ColorSubTableEXT = exec_glColorSubTableEXT; glp->CopyColorSubTableEXT = exec_glCopyColorSubTableEXT; glp->HintPGI = exec_glHintPGI; glp->ColorTableEXT = exec_glColorTableEXT; glp->GetColorTableEXT = exec_glGetColorTableEXT; glp->GetColorTableParameterivEXT = exec_glGetColorTableParameterivEXT; glp->GetColorTableParameterfvEXT = exec_glGetColorTableParameterfvEXT; glp->GetListParameterfvSGIX = exec_glGetListParameterfvSGIX; glp->GetListParameterivSGIX = exec_glGetListParameterivSGIX; glp->ListParameterfSGIX = exec_glListParameterfSGIX; glp->ListParameterfvSGIX = exec_glListParameterfvSGIX; glp->ListParameteriSGIX = exec_glListParameteriSGIX; glp->ListParameterivSGIX = exec_glListParameterivSGIX; glp->IndexMaterialEXT = exec_glIndexMaterialEXT; glp->IndexFuncEXT = exec_glIndexFuncEXT; glp->LockArraysEXT = exec_glLockArraysEXT; glp->UnlockArraysEXT = exec_glUnlockArraysEXT; glp->CullParameterdvEXT = exec_glCullParameterdvEXT; glp->CullParameterfvEXT = exec_glCullParameterfvEXT; glp->FragmentColorMaterialSGIX = exec_glFragmentColorMaterialSGIX; glp->FragmentLightfSGIX = exec_glFragmentLightfSGIX; glp->FragmentLightfvSGIX = exec_glFragmentLightfvSGIX; glp->FragmentLightiSGIX = exec_glFragmentLightiSGIX; glp->FragmentLightivSGIX = exec_glFragmentLightivSGIX; glp->FragmentLightModelfSGIX = exec_glFragmentLightModelfSGIX; glp->FragmentLightModelfvSGIX = exec_glFragmentLightModelfvSGIX; glp->FragmentLightModeliSGIX = exec_glFragmentLightModeliSGIX; glp->FragmentLightModelivSGIX = exec_glFragmentLightModelivSGIX; glp->FragmentMaterialfSGIX = exec_glFragmentMaterialfSGIX; glp->FragmentMaterialfvSGIX = exec_glFragmentMaterialfvSGIX; glp->FragmentMaterialiSGIX = exec_glFragmentMaterialiSGIX; glp->FragmentMaterialivSGIX = exec_glFragmentMaterialivSGIX; glp->GetFragmentLightfvSGIX = exec_glGetFragmentLightfvSGIX; glp->GetFragmentLightivSGIX = exec_glGetFragmentLightivSGIX; glp->GetFragmentMaterialfvSGIX = exec_glGetFragmentMaterialfvSGIX; glp->GetFragmentMaterialivSGIX = exec_glGetFragmentMaterialivSGIX; glp->LightEnviSGIX = exec_glLightEnviSGIX; glp->DrawRangeElementsEXT = exec_glDrawRangeElementsEXT; glp->ApplyTextureEXT = exec_glApplyTextureEXT; glp->TextureLightEXT = exec_glTextureLightEXT; glp->TextureMaterialEXT = exec_glTextureMaterialEXT; glp->AsyncMarkerSGIX = exec_glAsyncMarkerSGIX; glp->FinishAsyncSGIX = exec_glFinishAsyncSGIX; glp->PollAsyncSGIX = exec_glPollAsyncSGIX; glp->GenAsyncMarkersSGIX = exec_glGenAsyncMarkersSGIX; glp->DeleteAsyncMarkersSGIX = exec_glDeleteAsyncMarkersSGIX; glp->IsAsyncMarkerSGIX = exec_glIsAsyncMarkerSGIX; glp->VertexPointervINTEL = exec_glVertexPointervINTEL; glp->NormalPointervINTEL = exec_glNormalPointervINTEL; glp->ColorPointervINTEL = exec_glColorPointervINTEL; glp->TexCoordPointervINTEL = exec_glTexCoordPointervINTEL; glp->PixelTransformParameteriEXT = exec_glPixelTransformParameteriEXT; glp->PixelTransformParameterfEXT = exec_glPixelTransformParameterfEXT; glp->PixelTransformParameterivEXT = exec_glPixelTransformParameterivEXT; glp->PixelTransformParameterfvEXT = exec_glPixelTransformParameterfvEXT; glp->SecondaryColor3bEXT = exec_glSecondaryColor3bEXT; glp->SecondaryColor3bvEXT = exec_glSecondaryColor3bvEXT; glp->SecondaryColor3dEXT = exec_glSecondaryColor3dEXT; glp->SecondaryColor3dvEXT = exec_glSecondaryColor3dvEXT; glp->SecondaryColor3fEXT = exec_glSecondaryColor3fEXT; glp->SecondaryColor3fvEXT = exec_glSecondaryColor3fvEXT; glp->SecondaryColor3iEXT = exec_glSecondaryColor3iEXT; glp->SecondaryColor3ivEXT = exec_glSecondaryColor3ivEXT; glp->SecondaryColor3sEXT = exec_glSecondaryColor3sEXT; glp->SecondaryColor3svEXT = exec_glSecondaryColor3svEXT; glp->SecondaryColor3ubEXT = exec_glSecondaryColor3ubEXT; glp->SecondaryColor3ubvEXT = exec_glSecondaryColor3ubvEXT; glp->SecondaryColor3uiEXT = exec_glSecondaryColor3uiEXT; glp->SecondaryColor3uivEXT = exec_glSecondaryColor3uivEXT; glp->SecondaryColor3usEXT = exec_glSecondaryColor3usEXT; glp->SecondaryColor3usvEXT = exec_glSecondaryColor3usvEXT; glp->SecondaryColorPointerEXT = exec_glSecondaryColorPointerEXT; glp->TextureNormalEXT = exec_glTextureNormalEXT; glp->MultiDrawArraysEXT = exec_glMultiDrawArraysEXT; glp->MultiDrawElementsEXT = exec_glMultiDrawElementsEXT; glp->FogCoordfEXT = exec_glFogCoordfEXT; glp->FogCoordfvEXT = exec_glFogCoordfvEXT; glp->FogCoorddEXT = exec_glFogCoorddEXT; glp->FogCoorddvEXT = exec_glFogCoorddvEXT; glp->FogCoordPointerEXT = exec_glFogCoordPointerEXT; glp->Tangent3bEXT = exec_glTangent3bEXT; glp->Tangent3bvEXT = exec_glTangent3bvEXT; glp->Tangent3dEXT = exec_glTangent3dEXT; glp->Tangent3dvEXT = exec_glTangent3dvEXT; glp->Tangent3fEXT = exec_glTangent3fEXT; glp->Tangent3fvEXT = exec_glTangent3fvEXT; glp->Tangent3iEXT = exec_glTangent3iEXT; glp->Tangent3ivEXT = exec_glTangent3ivEXT; glp->Tangent3sEXT = exec_glTangent3sEXT; glp->Tangent3svEXT = exec_glTangent3svEXT; glp->Binormal3bEXT = exec_glBinormal3bEXT; glp->Binormal3bvEXT = exec_glBinormal3bvEXT; glp->Binormal3dEXT = exec_glBinormal3dEXT; glp->Binormal3dvEXT = exec_glBinormal3dvEXT; glp->Binormal3fEXT = exec_glBinormal3fEXT; glp->Binormal3fvEXT = exec_glBinormal3fvEXT; glp->Binormal3iEXT = exec_glBinormal3iEXT; glp->Binormal3ivEXT = exec_glBinormal3ivEXT; glp->Binormal3sEXT = exec_glBinormal3sEXT; glp->Binormal3svEXT = exec_glBinormal3svEXT; glp->TangentPointerEXT = exec_glTangentPointerEXT; glp->BinormalPointerEXT = exec_glBinormalPointerEXT; glp->FinishTextureSUNX = exec_glFinishTextureSUNX; glp->GlobalAlphaFactorbSUN = exec_glGlobalAlphaFactorbSUN; glp->GlobalAlphaFactorsSUN = exec_glGlobalAlphaFactorsSUN; glp->GlobalAlphaFactoriSUN = exec_glGlobalAlphaFactoriSUN; glp->GlobalAlphaFactorfSUN = exec_glGlobalAlphaFactorfSUN; glp->GlobalAlphaFactordSUN = exec_glGlobalAlphaFactordSUN; glp->GlobalAlphaFactorubSUN = exec_glGlobalAlphaFactorubSUN; glp->GlobalAlphaFactorusSUN = exec_glGlobalAlphaFactorusSUN; glp->GlobalAlphaFactoruiSUN = exec_glGlobalAlphaFactoruiSUN; glp->ReplacementCodeuiSUN = exec_glReplacementCodeuiSUN; glp->ReplacementCodeusSUN = exec_glReplacementCodeusSUN; glp->ReplacementCodeubSUN = exec_glReplacementCodeubSUN; glp->ReplacementCodeuivSUN = exec_glReplacementCodeuivSUN; glp->ReplacementCodeusvSUN = exec_glReplacementCodeusvSUN; glp->ReplacementCodeubvSUN = exec_glReplacementCodeubvSUN; glp->ReplacementCodePointerSUN = exec_glReplacementCodePointerSUN; glp->Color4ubVertex2fSUN = exec_glColor4ubVertex2fSUN; glp->Color4ubVertex2fvSUN = exec_glColor4ubVertex2fvSUN; glp->Color4ubVertex3fSUN = exec_glColor4ubVertex3fSUN; glp->Color4ubVertex3fvSUN = exec_glColor4ubVertex3fvSUN; glp->Color3fVertex3fSUN = exec_glColor3fVertex3fSUN; glp->Color3fVertex3fvSUN = exec_glColor3fVertex3fvSUN; glp->Normal3fVertex3fSUN = exec_glNormal3fVertex3fSUN; glp->Normal3fVertex3fvSUN = exec_glNormal3fVertex3fvSUN; glp->Color4fNormal3fVertex3fSUN = exec_glColor4fNormal3fVertex3fSUN; glp->Color4fNormal3fVertex3fvSUN = exec_glColor4fNormal3fVertex3fvSUN; glp->TexCoord2fVertex3fSUN = exec_glTexCoord2fVertex3fSUN; glp->TexCoord2fVertex3fvSUN = exec_glTexCoord2fVertex3fvSUN; glp->TexCoord4fVertex4fSUN = exec_glTexCoord4fVertex4fSUN; glp->TexCoord4fVertex4fvSUN = exec_glTexCoord4fVertex4fvSUN; glp->TexCoord2fColor4ubVertex3fSUN = exec_glTexCoord2fColor4ubVertex3fSUN; glp->TexCoord2fColor4ubVertex3fvSUN = exec_glTexCoord2fColor4ubVertex3fvSUN; glp->TexCoord2fColor3fVertex3fSUN = exec_glTexCoord2fColor3fVertex3fSUN; glp->TexCoord2fColor3fVertex3fvSUN = exec_glTexCoord2fColor3fVertex3fvSUN; glp->TexCoord2fNormal3fVertex3fSUN = exec_glTexCoord2fNormal3fVertex3fSUN; glp->TexCoord2fNormal3fVertex3fvSUN = exec_glTexCoord2fNormal3fVertex3fvSUN; glp->TexCoord2fColor4fNormal3fVertex3fSUN = exec_glTexCoord2fColor4fNormal3fVertex3fSUN; glp->TexCoord2fColor4fNormal3fVertex3fvSUN = exec_glTexCoord2fColor4fNormal3fVertex3fvSUN; glp->TexCoord4fColor4fNormal3fVertex4fSUN = exec_glTexCoord4fColor4fNormal3fVertex4fSUN; glp->TexCoord4fColor4fNormal3fVertex4fvSUN = exec_glTexCoord4fColor4fNormal3fVertex4fvSUN; glp->ReplacementCodeuiVertex3fSUN = exec_glReplacementCodeuiVertex3fSUN; glp->ReplacementCodeuiVertex3fvSUN = exec_glReplacementCodeuiVertex3fvSUN; glp->ReplacementCodeuiColor4ubVertex3fSUN = exec_glReplacementCodeuiColor4ubVertex3fSUN; glp->ReplacementCodeuiColor4ubVertex3fvSUN = exec_glReplacementCodeuiColor4ubVertex3fvSUN; glp->ReplacementCodeuiColor3fVertex3fSUN = exec_glReplacementCodeuiColor3fVertex3fSUN; glp->ReplacementCodeuiColor3fVertex3fvSUN = exec_glReplacementCodeuiColor3fVertex3fvSUN; glp->ReplacementCodeuiNormal3fVertex3fSUN = exec_glReplacementCodeuiNormal3fVertex3fSUN; glp->ReplacementCodeuiNormal3fVertex3fvSUN = exec_glReplacementCodeuiNormal3fVertex3fvSUN; glp->ReplacementCodeuiColor4fNormal3fVertex3fSUN = exec_glReplacementCodeuiColor4fNormal3fVertex3fSUN; glp->ReplacementCodeuiColor4fNormal3fVertex3fvSUN = exec_glReplacementCodeuiColor4fNormal3fVertex3fvSUN; glp->ReplacementCodeuiTexCoord2fVertex3fSUN = exec_glReplacementCodeuiTexCoord2fVertex3fSUN; glp->ReplacementCodeuiTexCoord2fVertex3fvSUN = exec_glReplacementCodeuiTexCoord2fVertex3fvSUN; glp->ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = exec_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; glp->ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = exec_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; glp->ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = exec_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; glp->ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = exec_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; glp->BlendFuncSeparateEXT = exec_glBlendFuncSeparateEXT; glp->BlendFuncSeparateINGR = exec_glBlendFuncSeparateINGR; glp->VertexWeightfEXT = exec_glVertexWeightfEXT; glp->VertexWeightfvEXT = exec_glVertexWeightfvEXT; glp->VertexWeightPointerEXT = exec_glVertexWeightPointerEXT; glp->FlushVertexArrayRangeNV = exec_glFlushVertexArrayRangeNV; glp->VertexArrayRangeNV = exec_glVertexArrayRangeNV; glp->CombinerParameterfvNV = exec_glCombinerParameterfvNV; glp->CombinerParameterfNV = exec_glCombinerParameterfNV; glp->CombinerParameterivNV = exec_glCombinerParameterivNV; glp->CombinerParameteriNV = exec_glCombinerParameteriNV; glp->CombinerInputNV = exec_glCombinerInputNV; glp->CombinerOutputNV = exec_glCombinerOutputNV; glp->FinalCombinerInputNV = exec_glFinalCombinerInputNV; glp->GetCombinerInputParameterfvNV = exec_glGetCombinerInputParameterfvNV; glp->GetCombinerInputParameterivNV = exec_glGetCombinerInputParameterivNV; glp->GetCombinerOutputParameterfvNV = exec_glGetCombinerOutputParameterfvNV; glp->GetCombinerOutputParameterivNV = exec_glGetCombinerOutputParameterivNV; glp->GetFinalCombinerInputParameterfvNV = exec_glGetFinalCombinerInputParameterfvNV; glp->GetFinalCombinerInputParameterivNV = exec_glGetFinalCombinerInputParameterivNV; glp->ResizeBuffersMESA = exec_glResizeBuffersMESA; glp->WindowPos2dMESA = exec_glWindowPos2dMESA; glp->WindowPos2dvMESA = exec_glWindowPos2dvMESA; glp->WindowPos2fMESA = exec_glWindowPos2fMESA; glp->WindowPos2fvMESA = exec_glWindowPos2fvMESA; glp->WindowPos2iMESA = exec_glWindowPos2iMESA; glp->WindowPos2ivMESA = exec_glWindowPos2ivMESA; glp->WindowPos2sMESA = exec_glWindowPos2sMESA; glp->WindowPos2svMESA = exec_glWindowPos2svMESA; glp->WindowPos3dMESA = exec_glWindowPos3dMESA; glp->WindowPos3dvMESA = exec_glWindowPos3dvMESA; glp->WindowPos3fMESA = exec_glWindowPos3fMESA; glp->WindowPos3fvMESA = exec_glWindowPos3fvMESA; glp->WindowPos3iMESA = exec_glWindowPos3iMESA; glp->WindowPos3ivMESA = exec_glWindowPos3ivMESA; glp->WindowPos3sMESA = exec_glWindowPos3sMESA; glp->WindowPos3svMESA = exec_glWindowPos3svMESA; glp->WindowPos4dMESA = exec_glWindowPos4dMESA; glp->WindowPos4dvMESA = exec_glWindowPos4dvMESA; glp->WindowPos4fMESA = exec_glWindowPos4fMESA; glp->WindowPos4fvMESA = exec_glWindowPos4fvMESA; glp->WindowPos4iMESA = exec_glWindowPos4iMESA; glp->WindowPos4ivMESA = exec_glWindowPos4ivMESA; glp->WindowPos4sMESA = exec_glWindowPos4sMESA; glp->WindowPos4svMESA = exec_glWindowPos4svMESA; glp->MultiModeDrawArraysIBM = exec_glMultiModeDrawArraysIBM; glp->MultiModeDrawElementsIBM = exec_glMultiModeDrawElementsIBM; glp->ColorPointerListIBM = exec_glColorPointerListIBM; glp->SecondaryColorPointerListIBM = exec_glSecondaryColorPointerListIBM; glp->EdgeFlagPointerListIBM = exec_glEdgeFlagPointerListIBM; glp->FogCoordPointerListIBM = exec_glFogCoordPointerListIBM; glp->IndexPointerListIBM = exec_glIndexPointerListIBM; glp->NormalPointerListIBM = exec_glNormalPointerListIBM; glp->TexCoordPointerListIBM = exec_glTexCoordPointerListIBM; glp->VertexPointerListIBM = exec_glVertexPointerListIBM; glp->TbufferMask3DFX = exec_glTbufferMask3DFX; glp->SampleMaskEXT = exec_glSampleMaskEXT; glp->SamplePatternEXT = exec_glSamplePatternEXT; glp->TextureColorMaskSGIS = exec_glTextureColorMaskSGIS; glp->IglooInterfaceSGIX = exec_glIglooInterfaceSGIX; glp->DeleteFencesNV = exec_glDeleteFencesNV; glp->GenFencesNV = exec_glGenFencesNV; glp->IsFenceNV = exec_glIsFenceNV; glp->TestFenceNV = exec_glTestFenceNV; glp->GetFenceivNV = exec_glGetFenceivNV; glp->FinishFenceNV = exec_glFinishFenceNV; glp->SetFenceNV = exec_glSetFenceNV; glp->MapControlPointsNV = exec_glMapControlPointsNV; glp->MapParameterivNV = exec_glMapParameterivNV; glp->MapParameterfvNV = exec_glMapParameterfvNV; glp->GetMapControlPointsNV = exec_glGetMapControlPointsNV; glp->GetMapParameterivNV = exec_glGetMapParameterivNV; glp->GetMapParameterfvNV = exec_glGetMapParameterfvNV; glp->GetMapAttribParameterivNV = exec_glGetMapAttribParameterivNV; glp->GetMapAttribParameterfvNV = exec_glGetMapAttribParameterfvNV; glp->EvalMapsNV = exec_glEvalMapsNV; glp->CombinerStageParameterfvNV = exec_glCombinerStageParameterfvNV; glp->GetCombinerStageParameterfvNV = exec_glGetCombinerStageParameterfvNV; glp->AreProgramsResidentNV = exec_glAreProgramsResidentNV; glp->BindProgramNV = exec_glBindProgramNV; glp->DeleteProgramsNV = exec_glDeleteProgramsNV; glp->ExecuteProgramNV = exec_glExecuteProgramNV; glp->GenProgramsNV = exec_glGenProgramsNV; glp->GetProgramParameterdvNV = exec_glGetProgramParameterdvNV; glp->GetProgramParameterfvNV = exec_glGetProgramParameterfvNV; glp->GetProgramivNV = exec_glGetProgramivNV; glp->GetProgramStringNV = exec_glGetProgramStringNV; glp->GetTrackMatrixivNV = exec_glGetTrackMatrixivNV; glp->GetVertexAttribdvNV = exec_glGetVertexAttribdvNV; glp->GetVertexAttribfvNV = exec_glGetVertexAttribfvNV; glp->GetVertexAttribivNV = exec_glGetVertexAttribivNV; glp->GetVertexAttribPointervNV = exec_glGetVertexAttribPointervNV; glp->IsProgramNV = exec_glIsProgramNV; glp->LoadProgramNV = exec_glLoadProgramNV; glp->ProgramParameter4dNV = exec_glProgramParameter4dNV; glp->ProgramParameter4dvNV = exec_glProgramParameter4dvNV; glp->ProgramParameter4fNV = exec_glProgramParameter4fNV; glp->ProgramParameter4fvNV = exec_glProgramParameter4fvNV; glp->ProgramParameters4dvNV = exec_glProgramParameters4dvNV; glp->ProgramParameters4fvNV = exec_glProgramParameters4fvNV; glp->RequestResidentProgramsNV = exec_glRequestResidentProgramsNV; glp->TrackMatrixNV = exec_glTrackMatrixNV; glp->VertexAttribPointerNV = exec_glVertexAttribPointerNV; glp->VertexAttrib1dNV = exec_glVertexAttrib1dNV; glp->VertexAttrib1dvNV = exec_glVertexAttrib1dvNV; glp->VertexAttrib1fNV = exec_glVertexAttrib1fNV; glp->VertexAttrib1fvNV = exec_glVertexAttrib1fvNV; glp->VertexAttrib1sNV = exec_glVertexAttrib1sNV; glp->VertexAttrib1svNV = exec_glVertexAttrib1svNV; glp->VertexAttrib2dNV = exec_glVertexAttrib2dNV; glp->VertexAttrib2dvNV = exec_glVertexAttrib2dvNV; glp->VertexAttrib2fNV = exec_glVertexAttrib2fNV; glp->VertexAttrib2fvNV = exec_glVertexAttrib2fvNV; glp->VertexAttrib2sNV = exec_glVertexAttrib2sNV; glp->VertexAttrib2svNV = exec_glVertexAttrib2svNV; glp->VertexAttrib3dNV = exec_glVertexAttrib3dNV; glp->VertexAttrib3dvNV = exec_glVertexAttrib3dvNV; glp->VertexAttrib3fNV = exec_glVertexAttrib3fNV; glp->VertexAttrib3fvNV = exec_glVertexAttrib3fvNV; glp->VertexAttrib3sNV = exec_glVertexAttrib3sNV; glp->VertexAttrib3svNV = exec_glVertexAttrib3svNV; glp->VertexAttrib4dNV = exec_glVertexAttrib4dNV; glp->VertexAttrib4dvNV = exec_glVertexAttrib4dvNV; glp->VertexAttrib4fNV = exec_glVertexAttrib4fNV; glp->VertexAttrib4fvNV = exec_glVertexAttrib4fvNV; glp->VertexAttrib4sNV = exec_glVertexAttrib4sNV; glp->VertexAttrib4svNV = exec_glVertexAttrib4svNV; glp->VertexAttrib4ubNV = exec_glVertexAttrib4ubNV; glp->VertexAttrib4ubvNV = exec_glVertexAttrib4ubvNV; glp->VertexAttribs1dvNV = exec_glVertexAttribs1dvNV; glp->VertexAttribs1fvNV = exec_glVertexAttribs1fvNV; glp->VertexAttribs1svNV = exec_glVertexAttribs1svNV; glp->VertexAttribs2dvNV = exec_glVertexAttribs2dvNV; glp->VertexAttribs2fvNV = exec_glVertexAttribs2fvNV; glp->VertexAttribs2svNV = exec_glVertexAttribs2svNV; glp->VertexAttribs3dvNV = exec_glVertexAttribs3dvNV; glp->VertexAttribs3fvNV = exec_glVertexAttribs3fvNV; glp->VertexAttribs3svNV = exec_glVertexAttribs3svNV; glp->VertexAttribs4dvNV = exec_glVertexAttribs4dvNV; glp->VertexAttribs4fvNV = exec_glVertexAttribs4fvNV; glp->VertexAttribs4svNV = exec_glVertexAttribs4svNV; glp->VertexAttribs4ubvNV = exec_glVertexAttribs4ubvNV; glp->TexBumpParameterivATI = exec_glTexBumpParameterivATI; glp->TexBumpParameterfvATI = exec_glTexBumpParameterfvATI; glp->GetTexBumpParameterivATI = exec_glGetTexBumpParameterivATI; glp->GetTexBumpParameterfvATI = exec_glGetTexBumpParameterfvATI; glp->GenFragmentShadersATI = exec_glGenFragmentShadersATI; glp->BindFragmentShaderATI = exec_glBindFragmentShaderATI; glp->DeleteFragmentShaderATI = exec_glDeleteFragmentShaderATI; glp->BeginFragmentShaderATI = exec_glBeginFragmentShaderATI; glp->EndFragmentShaderATI = exec_glEndFragmentShaderATI; glp->PassTexCoordATI = exec_glPassTexCoordATI; glp->SampleMapATI = exec_glSampleMapATI; glp->ColorFragmentOp1ATI = exec_glColorFragmentOp1ATI; glp->ColorFragmentOp2ATI = exec_glColorFragmentOp2ATI; glp->ColorFragmentOp3ATI = exec_glColorFragmentOp3ATI; glp->AlphaFragmentOp1ATI = exec_glAlphaFragmentOp1ATI; glp->AlphaFragmentOp2ATI = exec_glAlphaFragmentOp2ATI; glp->AlphaFragmentOp3ATI = exec_glAlphaFragmentOp3ATI; glp->SetFragmentShaderConstantATI = exec_glSetFragmentShaderConstantATI; glp->PNTrianglesiATI = exec_glPNTrianglesiATI; glp->PNTrianglesfATI = exec_glPNTrianglesfATI; glp->NewObjectBufferATI = exec_glNewObjectBufferATI; glp->IsObjectBufferATI = exec_glIsObjectBufferATI; glp->UpdateObjectBufferATI = exec_glUpdateObjectBufferATI; glp->GetObjectBufferfvATI = exec_glGetObjectBufferfvATI; glp->GetObjectBufferivATI = exec_glGetObjectBufferivATI; glp->FreeObjectBufferATI = exec_glFreeObjectBufferATI; glp->ArrayObjectATI = exec_glArrayObjectATI; glp->GetArrayObjectfvATI = exec_glGetArrayObjectfvATI; glp->GetArrayObjectivATI = exec_glGetArrayObjectivATI; glp->VariantArrayObjectATI = exec_glVariantArrayObjectATI; glp->GetVariantArrayObjectfvATI = exec_glGetVariantArrayObjectfvATI; glp->GetVariantArrayObjectivATI = exec_glGetVariantArrayObjectivATI; glp->BeginVertexShaderEXT = exec_glBeginVertexShaderEXT; glp->EndVertexShaderEXT = exec_glEndVertexShaderEXT; glp->BindVertexShaderEXT = exec_glBindVertexShaderEXT; glp->GenVertexShadersEXT = exec_glGenVertexShadersEXT; glp->DeleteVertexShaderEXT = exec_glDeleteVertexShaderEXT; glp->ShaderOp1EXT = exec_glShaderOp1EXT; glp->ShaderOp2EXT = exec_glShaderOp2EXT; glp->ShaderOp3EXT = exec_glShaderOp3EXT; glp->SwizzleEXT = exec_glSwizzleEXT; glp->WriteMaskEXT = exec_glWriteMaskEXT; glp->InsertComponentEXT = exec_glInsertComponentEXT; glp->ExtractComponentEXT = exec_glExtractComponentEXT; glp->GenSymbolsEXT = exec_glGenSymbolsEXT; glp->SetInvariantEXT = exec_glSetInvariantEXT; glp->SetLocalConstantEXT = exec_glSetLocalConstantEXT; glp->VariantbvEXT = exec_glVariantbvEXT; glp->VariantsvEXT = exec_glVariantsvEXT; glp->VariantivEXT = exec_glVariantivEXT; glp->VariantfvEXT = exec_glVariantfvEXT; glp->VariantdvEXT = exec_glVariantdvEXT; glp->VariantubvEXT = exec_glVariantubvEXT; glp->VariantusvEXT = exec_glVariantusvEXT; glp->VariantuivEXT = exec_glVariantuivEXT; glp->VariantPointerEXT = exec_glVariantPointerEXT; glp->EnableVariantClientStateEXT = exec_glEnableVariantClientStateEXT; glp->DisableVariantClientStateEXT = exec_glDisableVariantClientStateEXT; glp->BindLightParameterEXT = exec_glBindLightParameterEXT; glp->BindMaterialParameterEXT = exec_glBindMaterialParameterEXT; glp->BindTexGenParameterEXT = exec_glBindTexGenParameterEXT; glp->BindTextureUnitParameterEXT = exec_glBindTextureUnitParameterEXT; glp->BindParameterEXT = exec_glBindParameterEXT; glp->IsVariantEnabledEXT = exec_glIsVariantEnabledEXT; glp->GetVariantBooleanvEXT = exec_glGetVariantBooleanvEXT; glp->GetVariantIntegervEXT = exec_glGetVariantIntegervEXT; glp->GetVariantFloatvEXT = exec_glGetVariantFloatvEXT; glp->GetVariantPointervEXT = exec_glGetVariantPointervEXT; glp->GetInvariantBooleanvEXT = exec_glGetInvariantBooleanvEXT; glp->GetInvariantIntegervEXT = exec_glGetInvariantIntegervEXT; glp->GetInvariantFloatvEXT = exec_glGetInvariantFloatvEXT; glp->GetLocalConstantBooleanvEXT = exec_glGetLocalConstantBooleanvEXT; glp->GetLocalConstantIntegervEXT = exec_glGetLocalConstantIntegervEXT; glp->GetLocalConstantFloatvEXT = exec_glGetLocalConstantFloatvEXT; glp->VertexStream1sATI = exec_glVertexStream1sATI; glp->VertexStream1svATI = exec_glVertexStream1svATI; glp->VertexStream1iATI = exec_glVertexStream1iATI; glp->VertexStream1ivATI = exec_glVertexStream1ivATI; glp->VertexStream1fATI = exec_glVertexStream1fATI; glp->VertexStream1fvATI = exec_glVertexStream1fvATI; glp->VertexStream1dATI = exec_glVertexStream1dATI; glp->VertexStream1dvATI = exec_glVertexStream1dvATI; glp->VertexStream2sATI = exec_glVertexStream2sATI; glp->VertexStream2svATI = exec_glVertexStream2svATI; glp->VertexStream2iATI = exec_glVertexStream2iATI; glp->VertexStream2ivATI = exec_glVertexStream2ivATI; glp->VertexStream2fATI = exec_glVertexStream2fATI; glp->VertexStream2fvATI = exec_glVertexStream2fvATI; glp->VertexStream2dATI = exec_glVertexStream2dATI; glp->VertexStream2dvATI = exec_glVertexStream2dvATI; glp->VertexStream3sATI = exec_glVertexStream3sATI; glp->VertexStream3svATI = exec_glVertexStream3svATI; glp->VertexStream3iATI = exec_glVertexStream3iATI; glp->VertexStream3ivATI = exec_glVertexStream3ivATI; glp->VertexStream3fATI = exec_glVertexStream3fATI; glp->VertexStream3fvATI = exec_glVertexStream3fvATI; glp->VertexStream3dATI = exec_glVertexStream3dATI; glp->VertexStream3dvATI = exec_glVertexStream3dvATI; glp->VertexStream4sATI = exec_glVertexStream4sATI; glp->VertexStream4svATI = exec_glVertexStream4svATI; glp->VertexStream4iATI = exec_glVertexStream4iATI; glp->VertexStream4ivATI = exec_glVertexStream4ivATI; glp->VertexStream4fATI = exec_glVertexStream4fATI; glp->VertexStream4fvATI = exec_glVertexStream4fvATI; glp->VertexStream4dATI = exec_glVertexStream4dATI; glp->VertexStream4dvATI = exec_glVertexStream4dvATI; glp->NormalStream3bATI = exec_glNormalStream3bATI; glp->NormalStream3bvATI = exec_glNormalStream3bvATI; glp->NormalStream3sATI = exec_glNormalStream3sATI; glp->NormalStream3svATI = exec_glNormalStream3svATI; glp->NormalStream3iATI = exec_glNormalStream3iATI; glp->NormalStream3ivATI = exec_glNormalStream3ivATI; glp->NormalStream3fATI = exec_glNormalStream3fATI; glp->NormalStream3fvATI = exec_glNormalStream3fvATI; glp->NormalStream3dATI = exec_glNormalStream3dATI; glp->NormalStream3dvATI = exec_glNormalStream3dvATI; glp->ClientActiveVertexStreamATI = exec_glClientActiveVertexStreamATI; glp->VertexBlendEnviATI = exec_glVertexBlendEnviATI; glp->VertexBlendEnvfATI = exec_glVertexBlendEnvfATI; glp->ElementPointerATI = exec_glElementPointerATI; glp->DrawElementArrayATI = exec_glDrawElementArrayATI; glp->DrawRangeElementArrayATI = exec_glDrawRangeElementArrayATI; glp->DrawMeshArraysSUN = exec_glDrawMeshArraysSUN; glp->GenOcclusionQueriesNV = exec_glGenOcclusionQueriesNV; glp->DeleteOcclusionQueriesNV = exec_glDeleteOcclusionQueriesNV; glp->IsOcclusionQueryNV = exec_glIsOcclusionQueryNV; glp->BeginOcclusionQueryNV = exec_glBeginOcclusionQueryNV; glp->EndOcclusionQueryNV = exec_glEndOcclusionQueryNV; glp->GetOcclusionQueryivNV = exec_glGetOcclusionQueryivNV; glp->GetOcclusionQueryuivNV = exec_glGetOcclusionQueryuivNV; glp->PointParameteriNV = exec_glPointParameteriNV; glp->PointParameterivNV = exec_glPointParameterivNV; glp->ActiveStencilFaceEXT = exec_glActiveStencilFaceEXT; glp->ElementPointerAPPLE = exec_glElementPointerAPPLE; glp->DrawElementArrayAPPLE = exec_glDrawElementArrayAPPLE; glp->DrawRangeElementArrayAPPLE = exec_glDrawRangeElementArrayAPPLE; glp->MultiDrawElementArrayAPPLE = exec_glMultiDrawElementArrayAPPLE; glp->MultiDrawRangeElementArrayAPPLE = exec_glMultiDrawRangeElementArrayAPPLE; glp->GenFencesAPPLE = exec_glGenFencesAPPLE; glp->DeleteFencesAPPLE = exec_glDeleteFencesAPPLE; glp->SetFenceAPPLE = exec_glSetFenceAPPLE; glp->IsFenceAPPLE = exec_glIsFenceAPPLE; glp->TestFenceAPPLE = exec_glTestFenceAPPLE; glp->FinishFenceAPPLE = exec_glFinishFenceAPPLE; glp->TestObjectAPPLE = exec_glTestObjectAPPLE; glp->FinishObjectAPPLE = exec_glFinishObjectAPPLE; glp->BindVertexArrayAPPLE = exec_glBindVertexArrayAPPLE; glp->DeleteVertexArraysAPPLE = exec_glDeleteVertexArraysAPPLE; glp->GenVertexArraysAPPLE = exec_glGenVertexArraysAPPLE; glp->IsVertexArrayAPPLE = exec_glIsVertexArrayAPPLE; glp->VertexArrayRangeAPPLE = exec_glVertexArrayRangeAPPLE; glp->FlushVertexArrayRangeAPPLE = exec_glFlushVertexArrayRangeAPPLE; glp->VertexArrayParameteriAPPLE = exec_glVertexArrayParameteriAPPLE; glp->DrawBuffersATI = exec_glDrawBuffersATI; glp->ProgramNamedParameter4fNV = exec_glProgramNamedParameter4fNV; glp->ProgramNamedParameter4dNV = exec_glProgramNamedParameter4dNV; glp->ProgramNamedParameter4fvNV = exec_glProgramNamedParameter4fvNV; glp->ProgramNamedParameter4dvNV = exec_glProgramNamedParameter4dvNV; glp->GetProgramNamedParameterfvNV = exec_glGetProgramNamedParameterfvNV; glp->GetProgramNamedParameterdvNV = exec_glGetProgramNamedParameterdvNV; glp->Vertex2hNV = exec_glVertex2hNV; glp->Vertex2hvNV = exec_glVertex2hvNV; glp->Vertex3hNV = exec_glVertex3hNV; glp->Vertex3hvNV = exec_glVertex3hvNV; glp->Vertex4hNV = exec_glVertex4hNV; glp->Vertex4hvNV = exec_glVertex4hvNV; glp->Normal3hNV = exec_glNormal3hNV; glp->Normal3hvNV = exec_glNormal3hvNV; glp->Color3hNV = exec_glColor3hNV; glp->Color3hvNV = exec_glColor3hvNV; glp->Color4hNV = exec_glColor4hNV; glp->Color4hvNV = exec_glColor4hvNV; glp->TexCoord1hNV = exec_glTexCoord1hNV; glp->TexCoord1hvNV = exec_glTexCoord1hvNV; glp->TexCoord2hNV = exec_glTexCoord2hNV; glp->TexCoord2hvNV = exec_glTexCoord2hvNV; glp->TexCoord3hNV = exec_glTexCoord3hNV; glp->TexCoord3hvNV = exec_glTexCoord3hvNV; glp->TexCoord4hNV = exec_glTexCoord4hNV; glp->TexCoord4hvNV = exec_glTexCoord4hvNV; glp->MultiTexCoord1hNV = exec_glMultiTexCoord1hNV; glp->MultiTexCoord1hvNV = exec_glMultiTexCoord1hvNV; glp->MultiTexCoord2hNV = exec_glMultiTexCoord2hNV; glp->MultiTexCoord2hvNV = exec_glMultiTexCoord2hvNV; glp->MultiTexCoord3hNV = exec_glMultiTexCoord3hNV; glp->MultiTexCoord3hvNV = exec_glMultiTexCoord3hvNV; glp->MultiTexCoord4hNV = exec_glMultiTexCoord4hNV; glp->MultiTexCoord4hvNV = exec_glMultiTexCoord4hvNV; glp->FogCoordhNV = exec_glFogCoordhNV; glp->FogCoordhvNV = exec_glFogCoordhvNV; glp->SecondaryColor3hNV = exec_glSecondaryColor3hNV; glp->SecondaryColor3hvNV = exec_glSecondaryColor3hvNV; glp->VertexWeighthNV = exec_glVertexWeighthNV; glp->VertexWeighthvNV = exec_glVertexWeighthvNV; glp->VertexAttrib1hNV = exec_glVertexAttrib1hNV; glp->VertexAttrib1hvNV = exec_glVertexAttrib1hvNV; glp->VertexAttrib2hNV = exec_glVertexAttrib2hNV; glp->VertexAttrib2hvNV = exec_glVertexAttrib2hvNV; glp->VertexAttrib3hNV = exec_glVertexAttrib3hNV; glp->VertexAttrib3hvNV = exec_glVertexAttrib3hvNV; glp->VertexAttrib4hNV = exec_glVertexAttrib4hNV; glp->VertexAttrib4hvNV = exec_glVertexAttrib4hvNV; glp->VertexAttribs1hvNV = exec_glVertexAttribs1hvNV; glp->VertexAttribs2hvNV = exec_glVertexAttribs2hvNV; glp->VertexAttribs3hvNV = exec_glVertexAttribs3hvNV; glp->VertexAttribs4hvNV = exec_glVertexAttribs4hvNV; glp->PixelDataRangeNV = exec_glPixelDataRangeNV; glp->FlushPixelDataRangeNV = exec_glFlushPixelDataRangeNV; glp->PrimitiveRestartNV = exec_glPrimitiveRestartNV; glp->PrimitiveRestartIndexNV = exec_glPrimitiveRestartIndexNV; glp->MapObjectBufferATI = exec_glMapObjectBufferATI; glp->UnmapObjectBufferATI = exec_glUnmapObjectBufferATI; glp->StencilOpSeparateATI = exec_glStencilOpSeparateATI; glp->StencilFuncSeparateATI = exec_glStencilFuncSeparateATI; glp->VertexAttribArrayObjectATI = exec_glVertexAttribArrayObjectATI; glp->GetVertexAttribArrayObjectfvATI = exec_glGetVertexAttribArrayObjectfvATI; glp->GetVertexAttribArrayObjectivATI = exec_glGetVertexAttribArrayObjectivATI; glp->DepthBoundsEXT = exec_glDepthBoundsEXT; glp->BlendEquationSeparateEXT = exec_glBlendEquationSeparateEXT; glp->OSMesaColorClamp = exec_OSMesaColorClamp; glp->OSMesaPostprocess = exec_OSMesaPostprocess; glp->OSMesaCreateLDG = exec_OSMesaCreateLDG; glp->OSMesaDestroyLDG = exec_OSMesaDestroyLDG; glp->max_width = exec_max_width; glp->max_height = exec_max_height; glp->information = exec_information; glp->exception_error = exec_exception_error; glp->gluLookAtf = exec_gluLookAtf; glp->Frustumf = exec_glFrustumf; glp->Orthof = exec_glOrthof; glp->swapbuffer = exec_swapbuffer; glp->gluLookAt = exec_gluLookAt; glp->AccumxOES = exec_glAccumxOES; glp->ActiveProgramEXT = exec_glActiveProgramEXT; glp->ActiveShaderProgram = exec_glActiveShaderProgram; glp->ActiveVaryingNV = exec_glActiveVaryingNV; glp->AddSwapHintRectWIN = exec_glAddSwapHintRectWIN; glp->AlphaFuncxOES = exec_glAlphaFuncxOES; glp->AttachShader = exec_glAttachShader; glp->BeginConditionalRender = exec_glBeginConditionalRender; glp->BeginConditionalRenderNV = exec_glBeginConditionalRenderNV; glp->BeginConditionalRenderNVX = exec_glBeginConditionalRenderNVX; glp->BeginPerfMonitorAMD = exec_glBeginPerfMonitorAMD; glp->BeginPerfQueryINTEL = exec_glBeginPerfQueryINTEL; glp->BeginQueryIndexed = exec_glBeginQueryIndexed; glp->BeginTransformFeedback = exec_glBeginTransformFeedback; glp->BeginTransformFeedbackEXT = exec_glBeginTransformFeedbackEXT; glp->BeginTransformFeedbackNV = exec_glBeginTransformFeedbackNV; glp->BeginVideoCaptureNV = exec_glBeginVideoCaptureNV; glp->BindAttribLocation = exec_glBindAttribLocation; glp->BindBufferBase = exec_glBindBufferBase; glp->BindBufferBaseEXT = exec_glBindBufferBaseEXT; glp->BindBufferBaseNV = exec_glBindBufferBaseNV; glp->BindBufferOffsetEXT = exec_glBindBufferOffsetEXT; glp->BindBufferOffsetNV = exec_glBindBufferOffsetNV; glp->BindBufferRange = exec_glBindBufferRange; glp->BindBufferRangeEXT = exec_glBindBufferRangeEXT; glp->BindBufferRangeNV = exec_glBindBufferRangeNV; glp->BindBuffersBase = exec_glBindBuffersBase; glp->BindBuffersRange = exec_glBindBuffersRange; glp->BindFragDataLocation = exec_glBindFragDataLocation; glp->BindFragDataLocationEXT = exec_glBindFragDataLocationEXT; glp->BindFragDataLocationIndexed = exec_glBindFragDataLocationIndexed; glp->BindFramebuffer = exec_glBindFramebuffer; glp->BindFramebufferEXT = exec_glBindFramebufferEXT; glp->BindImageTexture = exec_glBindImageTexture; glp->BindImageTextureEXT = exec_glBindImageTextureEXT; glp->BindImageTextures = exec_glBindImageTextures; glp->BindMultiTextureEXT = exec_glBindMultiTextureEXT; glp->BindProgramPipeline = exec_glBindProgramPipeline; glp->BindRenderbuffer = exec_glBindRenderbuffer; glp->BindRenderbufferEXT = exec_glBindRenderbufferEXT; glp->BindSampler = exec_glBindSampler; glp->BindSamplers = exec_glBindSamplers; glp->BindTextures = exec_glBindTextures; glp->BindTransformFeedback = exec_glBindTransformFeedback; glp->BindTransformFeedbackNV = exec_glBindTransformFeedbackNV; glp->BindVertexArray = exec_glBindVertexArray; glp->BindVertexBuffer = exec_glBindVertexBuffer; glp->BindVertexBuffers = exec_glBindVertexBuffers; glp->BindVideoCaptureStreamBufferNV = exec_glBindVideoCaptureStreamBufferNV; glp->BindVideoCaptureStreamTextureNV = exec_glBindVideoCaptureStreamTextureNV; glp->BitmapxOES = exec_glBitmapxOES; glp->BlendBarrierNV = exec_glBlendBarrierNV; glp->BlendColorxOES = exec_glBlendColorxOES; glp->BlendEquationIndexedAMD = exec_glBlendEquationIndexedAMD; glp->BlendEquationSeparate = exec_glBlendEquationSeparate; glp->BlendEquationSeparateIndexedAMD = exec_glBlendEquationSeparateIndexedAMD; glp->BlendEquationSeparatei = exec_glBlendEquationSeparatei; glp->BlendEquationSeparateiARB = exec_glBlendEquationSeparateiARB; glp->BlendEquationi = exec_glBlendEquationi; glp->BlendEquationiARB = exec_glBlendEquationiARB; glp->BlendFuncIndexedAMD = exec_glBlendFuncIndexedAMD; glp->BlendFuncSeparateIndexedAMD = exec_glBlendFuncSeparateIndexedAMD; glp->BlendFuncSeparatei = exec_glBlendFuncSeparatei; glp->BlendFuncSeparateiARB = exec_glBlendFuncSeparateiARB; glp->BlendFunci = exec_glBlendFunci; glp->BlendFunciARB = exec_glBlendFunciARB; glp->BlendParameteriNV = exec_glBlendParameteriNV; glp->BlitFramebuffer = exec_glBlitFramebuffer; glp->BlitFramebufferEXT = exec_glBlitFramebufferEXT; glp->BufferAddressRangeNV = exec_glBufferAddressRangeNV; glp->BufferParameteriAPPLE = exec_glBufferParameteriAPPLE; glp->BufferStorage = exec_glBufferStorage; glp->CheckFramebufferStatus = exec_glCheckFramebufferStatus; glp->CheckFramebufferStatusEXT = exec_glCheckFramebufferStatusEXT; glp->CheckNamedFramebufferStatusEXT = exec_glCheckNamedFramebufferStatusEXT; glp->ClampColor = exec_glClampColor; glp->ClampColorARB = exec_glClampColorARB; glp->ClearAccumxOES = exec_glClearAccumxOES; glp->ClearBufferData = exec_glClearBufferData; glp->ClearBufferSubData = exec_glClearBufferSubData; glp->ClearBufferfi = exec_glClearBufferfi; glp->ClearBufferfv = exec_glClearBufferfv; glp->ClearBufferiv = exec_glClearBufferiv; glp->ClearBufferuiv = exec_glClearBufferuiv; glp->ClearColorIiEXT = exec_glClearColorIiEXT; glp->ClearColorIuiEXT = exec_glClearColorIuiEXT; glp->ClearColorxOES = exec_glClearColorxOES; glp->ClearDebugLogMESA = exec_glClearDebugLogMESA; glp->ClearDepthdNV = exec_glClearDepthdNV; glp->ClearDepthf = exec_glClearDepthf; glp->ClearDepthfOES = exec_glClearDepthfOES; glp->ClearDepthxOES = exec_glClearDepthxOES; glp->ClearNamedBufferDataEXT = exec_glClearNamedBufferDataEXT; glp->ClearNamedBufferSubDataEXT = exec_glClearNamedBufferSubDataEXT; glp->ClearTexImage = exec_glClearTexImage; glp->ClearTexSubImage = exec_glClearTexSubImage; glp->ClientAttribDefaultEXT = exec_glClientAttribDefaultEXT; glp->ClientWaitSync = exec_glClientWaitSync; glp->ClipPlanefOES = exec_glClipPlanefOES; glp->ClipPlanexOES = exec_glClipPlanexOES; glp->Color3xOES = exec_glColor3xOES; glp->Color3xvOES = exec_glColor3xvOES; glp->Color4xOES = exec_glColor4xOES; glp->Color4xvOES = exec_glColor4xvOES; glp->ColorFormatNV = exec_glColorFormatNV; glp->ColorMaskIndexedEXT = exec_glColorMaskIndexedEXT; glp->ColorMaski = exec_glColorMaski; glp->ColorP3ui = exec_glColorP3ui; glp->ColorP3uiv = exec_glColorP3uiv; glp->ColorP4ui = exec_glColorP4ui; glp->ColorP4uiv = exec_glColorP4uiv; glp->CompileShader = exec_glCompileShader; glp->CompileShaderIncludeARB = exec_glCompileShaderIncludeARB; glp->CompressedMultiTexImage1DEXT = exec_glCompressedMultiTexImage1DEXT; glp->CompressedMultiTexImage2DEXT = exec_glCompressedMultiTexImage2DEXT; glp->CompressedMultiTexImage3DEXT = exec_glCompressedMultiTexImage3DEXT; glp->CompressedMultiTexSubImage1DEXT = exec_glCompressedMultiTexSubImage1DEXT; glp->CompressedMultiTexSubImage2DEXT = exec_glCompressedMultiTexSubImage2DEXT; glp->CompressedMultiTexSubImage3DEXT = exec_glCompressedMultiTexSubImage3DEXT; glp->CompressedTextureImage1DEXT = exec_glCompressedTextureImage1DEXT; glp->CompressedTextureImage2DEXT = exec_glCompressedTextureImage2DEXT; glp->CompressedTextureImage3DEXT = exec_glCompressedTextureImage3DEXT; glp->CompressedTextureSubImage1DEXT = exec_glCompressedTextureSubImage1DEXT; glp->CompressedTextureSubImage2DEXT = exec_glCompressedTextureSubImage2DEXT; glp->CompressedTextureSubImage3DEXT = exec_glCompressedTextureSubImage3DEXT; glp->ConvolutionParameterxOES = exec_glConvolutionParameterxOES; glp->ConvolutionParameterxvOES = exec_glConvolutionParameterxvOES; glp->CopyBufferSubData = exec_glCopyBufferSubData; glp->CopyImageSubData = exec_glCopyImageSubData; glp->CopyImageSubDataNV = exec_glCopyImageSubDataNV; glp->CopyMultiTexImage1DEXT = exec_glCopyMultiTexImage1DEXT; glp->CopyMultiTexImage2DEXT = exec_glCopyMultiTexImage2DEXT; glp->CopyMultiTexSubImage1DEXT = exec_glCopyMultiTexSubImage1DEXT; glp->CopyMultiTexSubImage2DEXT = exec_glCopyMultiTexSubImage2DEXT; glp->CopyMultiTexSubImage3DEXT = exec_glCopyMultiTexSubImage3DEXT; glp->CopyPathNV = exec_glCopyPathNV; glp->CopyTextureImage1DEXT = exec_glCopyTextureImage1DEXT; glp->CopyTextureImage2DEXT = exec_glCopyTextureImage2DEXT; glp->CopyTextureSubImage1DEXT = exec_glCopyTextureSubImage1DEXT; glp->CopyTextureSubImage2DEXT = exec_glCopyTextureSubImage2DEXT; glp->CopyTextureSubImage3DEXT = exec_glCopyTextureSubImage3DEXT; glp->CoverFillPathInstancedNV = exec_glCoverFillPathInstancedNV; glp->CoverFillPathNV = exec_glCoverFillPathNV; glp->CoverStrokePathInstancedNV = exec_glCoverStrokePathInstancedNV; glp->CoverStrokePathNV = exec_glCoverStrokePathNV; glp->CreateDebugObjectMESA = exec_glCreateDebugObjectMESA; glp->CreatePerfQueryINTEL = exec_glCreatePerfQueryINTEL; glp->CreateProgram = exec_glCreateProgram; glp->CreateShader = exec_glCreateShader; glp->CreateShaderProgramEXT = exec_glCreateShaderProgramEXT; glp->CreateShaderProgramv = exec_glCreateShaderProgramv; glp->CreateSyncFromCLeventARB = exec_glCreateSyncFromCLeventARB; glp->DebugMessageCallback = exec_glDebugMessageCallback; glp->DebugMessageCallbackAMD = exec_glDebugMessageCallbackAMD; glp->DebugMessageCallbackARB = exec_glDebugMessageCallbackARB; glp->DebugMessageControl = exec_glDebugMessageControl; glp->DebugMessageControlARB = exec_glDebugMessageControlARB; glp->DebugMessageEnableAMD = exec_glDebugMessageEnableAMD; glp->DebugMessageInsert = exec_glDebugMessageInsert; glp->DebugMessageInsertAMD = exec_glDebugMessageInsertAMD; glp->DebugMessageInsertARB = exec_glDebugMessageInsertARB; glp->DeleteFramebuffers = exec_glDeleteFramebuffers; glp->DeleteFramebuffersEXT = exec_glDeleteFramebuffersEXT; glp->DeleteNamedStringARB = exec_glDeleteNamedStringARB; glp->DeleteNamesAMD = exec_glDeleteNamesAMD; glp->DeleteObjectBufferATI = exec_glDeleteObjectBufferATI; glp->DeletePathsNV = exec_glDeletePathsNV; glp->DeletePerfMonitorsAMD = exec_glDeletePerfMonitorsAMD; glp->DeletePerfQueryINTEL = exec_glDeletePerfQueryINTEL; glp->DeleteProgram = exec_glDeleteProgram; glp->DeleteProgramPipelines = exec_glDeleteProgramPipelines; glp->DeleteRenderbuffers = exec_glDeleteRenderbuffers; glp->DeleteRenderbuffersEXT = exec_glDeleteRenderbuffersEXT; glp->DeleteSamplers = exec_glDeleteSamplers; glp->DeleteShader = exec_glDeleteShader; glp->DeleteSync = exec_glDeleteSync; glp->DeleteTransformFeedbacks = exec_glDeleteTransformFeedbacks; glp->DeleteTransformFeedbacksNV = exec_glDeleteTransformFeedbacksNV; glp->DeleteVertexArrays = exec_glDeleteVertexArrays; glp->DepthBoundsdNV = exec_glDepthBoundsdNV; glp->DepthRangeArrayv = exec_glDepthRangeArrayv; glp->DepthRangeIndexed = exec_glDepthRangeIndexed; glp->DepthRangedNV = exec_glDepthRangedNV; glp->DepthRangef = exec_glDepthRangef; glp->DepthRangefOES = exec_glDepthRangefOES; glp->DepthRangexOES = exec_glDepthRangexOES; glp->DetachShader = exec_glDetachShader; glp->DisableClientStateIndexedEXT = exec_glDisableClientStateIndexedEXT; glp->DisableClientStateiEXT = exec_glDisableClientStateiEXT; glp->DisableIndexedEXT = exec_glDisableIndexedEXT; glp->DisableVertexArrayAttribEXT = exec_glDisableVertexArrayAttribEXT; glp->DisableVertexArrayEXT = exec_glDisableVertexArrayEXT; glp->DisableVertexAttribAPPLE = exec_glDisableVertexAttribAPPLE; glp->DisableVertexAttribArray = exec_glDisableVertexAttribArray; glp->Disablei = exec_glDisablei; glp->DispatchCompute = exec_glDispatchCompute; glp->DispatchComputeGroupSizeARB = exec_glDispatchComputeGroupSizeARB; glp->DispatchComputeIndirect = exec_glDispatchComputeIndirect; glp->DrawArraysIndirect = exec_glDrawArraysIndirect; glp->DrawArraysInstanced = exec_glDrawArraysInstanced; glp->DrawArraysInstancedARB = exec_glDrawArraysInstancedARB; glp->DrawArraysInstancedBaseInstance = exec_glDrawArraysInstancedBaseInstance; glp->DrawArraysInstancedEXT = exec_glDrawArraysInstancedEXT; glp->DrawBuffers = exec_glDrawBuffers; glp->DrawElementsBaseVertex = exec_glDrawElementsBaseVertex; glp->DrawElementsIndirect = exec_glDrawElementsIndirect; glp->DrawElementsInstanced = exec_glDrawElementsInstanced; glp->DrawElementsInstancedARB = exec_glDrawElementsInstancedARB; glp->DrawElementsInstancedBaseInstance = exec_glDrawElementsInstancedBaseInstance; glp->DrawElementsInstancedBaseVertex = exec_glDrawElementsInstancedBaseVertex; glp->DrawElementsInstancedBaseVertexBaseInstance = exec_glDrawElementsInstancedBaseVertexBaseInstance; glp->DrawElementsInstancedEXT = exec_glDrawElementsInstancedEXT; glp->DrawRangeElementsBaseVertex = exec_glDrawRangeElementsBaseVertex; glp->DrawTextureNV = exec_glDrawTextureNV; glp->DrawTransformFeedback = exec_glDrawTransformFeedback; glp->DrawTransformFeedbackInstanced = exec_glDrawTransformFeedbackInstanced; glp->DrawTransformFeedbackNV = exec_glDrawTransformFeedbackNV; glp->DrawTransformFeedbackStream = exec_glDrawTransformFeedbackStream; glp->DrawTransformFeedbackStreamInstanced = exec_glDrawTransformFeedbackStreamInstanced; glp->EdgeFlagFormatNV = exec_glEdgeFlagFormatNV; glp->EnableClientStateIndexedEXT = exec_glEnableClientStateIndexedEXT; glp->EnableClientStateiEXT = exec_glEnableClientStateiEXT; glp->EnableIndexedEXT = exec_glEnableIndexedEXT; glp->EnableVertexArrayAttribEXT = exec_glEnableVertexArrayAttribEXT; glp->EnableVertexArrayEXT = exec_glEnableVertexArrayEXT; glp->EnableVertexAttribAPPLE = exec_glEnableVertexAttribAPPLE; glp->EnableVertexAttribArray = exec_glEnableVertexAttribArray; glp->Enablei = exec_glEnablei; glp->EndConditionalRender = exec_glEndConditionalRender; glp->EndConditionalRenderNV = exec_glEndConditionalRenderNV; glp->EndConditionalRenderNVX = exec_glEndConditionalRenderNVX; glp->EndPerfMonitorAMD = exec_glEndPerfMonitorAMD; glp->EndPerfQueryINTEL = exec_glEndPerfQueryINTEL; glp->EndQueryIndexed = exec_glEndQueryIndexed; glp->EndTransformFeedback = exec_glEndTransformFeedback; glp->EndTransformFeedbackEXT = exec_glEndTransformFeedbackEXT; glp->EndTransformFeedbackNV = exec_glEndTransformFeedbackNV; glp->EndVideoCaptureNV = exec_glEndVideoCaptureNV; glp->EvalCoord1xOES = exec_glEvalCoord1xOES; glp->EvalCoord1xvOES = exec_glEvalCoord1xvOES; glp->EvalCoord2xOES = exec_glEvalCoord2xOES; glp->EvalCoord2xvOES = exec_glEvalCoord2xvOES; glp->FeedbackBufferxOES = exec_glFeedbackBufferxOES; glp->FenceSync = exec_glFenceSync; glp->FinishRenderAPPLE = exec_glFinishRenderAPPLE; glp->FlushMappedBufferRange = exec_glFlushMappedBufferRange; glp->FlushMappedBufferRangeAPPLE = exec_glFlushMappedBufferRangeAPPLE; glp->FlushMappedNamedBufferRangeEXT = exec_glFlushMappedNamedBufferRangeEXT; glp->FlushRenderAPPLE = exec_glFlushRenderAPPLE; glp->FlushStaticDataIBM = exec_glFlushStaticDataIBM; glp->FogCoordFormatNV = exec_glFogCoordFormatNV; glp->FogxOES = exec_glFogxOES; glp->FogxvOES = exec_glFogxvOES; glp->FrameTerminatorGREMEDY = exec_glFrameTerminatorGREMEDY; glp->FramebufferDrawBufferEXT = exec_glFramebufferDrawBufferEXT; glp->FramebufferDrawBuffersEXT = exec_glFramebufferDrawBuffersEXT; glp->FramebufferParameteri = exec_glFramebufferParameteri; glp->FramebufferReadBufferEXT = exec_glFramebufferReadBufferEXT; glp->FramebufferRenderbuffer = exec_glFramebufferRenderbuffer; glp->FramebufferRenderbufferEXT = exec_glFramebufferRenderbufferEXT; glp->FramebufferTexture = exec_glFramebufferTexture; glp->FramebufferTexture1D = exec_glFramebufferTexture1D; glp->FramebufferTexture1DEXT = exec_glFramebufferTexture1DEXT; glp->FramebufferTexture2D = exec_glFramebufferTexture2D; glp->FramebufferTexture2DEXT = exec_glFramebufferTexture2DEXT; glp->FramebufferTexture3D = exec_glFramebufferTexture3D; glp->FramebufferTexture3DEXT = exec_glFramebufferTexture3DEXT; glp->FramebufferTextureARB = exec_glFramebufferTextureARB; glp->FramebufferTextureEXT = exec_glFramebufferTextureEXT; glp->FramebufferTextureFaceARB = exec_glFramebufferTextureFaceARB; glp->FramebufferTextureFaceEXT = exec_glFramebufferTextureFaceEXT; glp->FramebufferTextureLayer = exec_glFramebufferTextureLayer; glp->FramebufferTextureLayerARB = exec_glFramebufferTextureLayerARB; glp->FramebufferTextureLayerEXT = exec_glFramebufferTextureLayerEXT; glp->FrustumfOES = exec_glFrustumfOES; glp->FrustumxOES = exec_glFrustumxOES; glp->GenFramebuffers = exec_glGenFramebuffers; glp->GenFramebuffersEXT = exec_glGenFramebuffersEXT; glp->GenNamesAMD = exec_glGenNamesAMD; glp->GenPathsNV = exec_glGenPathsNV; glp->GenPerfMonitorsAMD = exec_glGenPerfMonitorsAMD; glp->GenProgramPipelines = exec_glGenProgramPipelines; glp->GenRenderbuffers = exec_glGenRenderbuffers; glp->GenRenderbuffersEXT = exec_glGenRenderbuffersEXT; glp->GenSamplers = exec_glGenSamplers; glp->GenTransformFeedbacks = exec_glGenTransformFeedbacks; glp->GenTransformFeedbacksNV = exec_glGenTransformFeedbacksNV; glp->GenVertexArrays = exec_glGenVertexArrays; glp->GenerateMipmap = exec_glGenerateMipmap; glp->GenerateMipmapEXT = exec_glGenerateMipmapEXT; glp->GenerateMultiTexMipmapEXT = exec_glGenerateMultiTexMipmapEXT; glp->GenerateTextureMipmapEXT = exec_glGenerateTextureMipmapEXT; glp->GetActiveAtomicCounterBufferiv = exec_glGetActiveAtomicCounterBufferiv; glp->GetActiveAttrib = exec_glGetActiveAttrib; glp->GetActiveSubroutineName = exec_glGetActiveSubroutineName; glp->GetActiveSubroutineUniformName = exec_glGetActiveSubroutineUniformName; glp->GetActiveSubroutineUniformiv = exec_glGetActiveSubroutineUniformiv; glp->GetActiveUniform = exec_glGetActiveUniform; glp->GetActiveUniformBlockIndex = exec_glGetActiveUniformBlockIndex; glp->GetActiveUniformBlockName = exec_glGetActiveUniformBlockName; glp->GetActiveUniformBlockiv = exec_glGetActiveUniformBlockiv; glp->GetActiveUniformName = exec_glGetActiveUniformName; glp->GetActiveUniformsiv = exec_glGetActiveUniformsiv; glp->GetActiveVaryingNV = exec_glGetActiveVaryingNV; glp->GetAttachedShaders = exec_glGetAttachedShaders; glp->GetAttribLocation = exec_glGetAttribLocation; glp->GetBooleanIndexedvEXT = exec_glGetBooleanIndexedvEXT; glp->GetBooleani_v = exec_glGetBooleani_v; glp->GetBufferParameteri64v = exec_glGetBufferParameteri64v; glp->GetBufferParameterui64vNV = exec_glGetBufferParameterui64vNV; glp->GetClipPlanefOES = exec_glGetClipPlanefOES; glp->GetClipPlanexOES = exec_glGetClipPlanexOES; glp->GetCompressedMultiTexImageEXT = exec_glGetCompressedMultiTexImageEXT; glp->GetCompressedTextureImageEXT = exec_glGetCompressedTextureImageEXT; glp->GetConvolutionParameterxvOES = exec_glGetConvolutionParameterxvOES; glp->GetDebugLogLengthMESA = exec_glGetDebugLogLengthMESA; glp->GetDebugLogMESA = exec_glGetDebugLogMESA; glp->GetDebugMessageLog = exec_glGetDebugMessageLog; glp->GetDebugMessageLogAMD = exec_glGetDebugMessageLogAMD; glp->GetDebugMessageLogARB = exec_glGetDebugMessageLogARB; glp->GetDoubleIndexedvEXT = exec_glGetDoubleIndexedvEXT; glp->GetDoublei_v = exec_glGetDoublei_v; glp->GetDoublei_vEXT = exec_glGetDoublei_vEXT; glp->GetFirstPerfQueryIdINTEL = exec_glGetFirstPerfQueryIdINTEL; glp->GetFixedvOES = exec_glGetFixedvOES; glp->GetFloatIndexedvEXT = exec_glGetFloatIndexedvEXT; glp->GetFloati_v = exec_glGetFloati_v; glp->GetFloati_vEXT = exec_glGetFloati_vEXT; glp->GetFragDataIndex = exec_glGetFragDataIndex; glp->GetFragDataLocation = exec_glGetFragDataLocation; glp->GetFragDataLocationEXT = exec_glGetFragDataLocationEXT; glp->GetFramebufferAttachmentParameteriv = exec_glGetFramebufferAttachmentParameteriv; glp->GetFramebufferAttachmentParameterivEXT = exec_glGetFramebufferAttachmentParameterivEXT; glp->GetFramebufferParameteriv = exec_glGetFramebufferParameteriv; glp->GetFramebufferParameterivEXT = exec_glGetFramebufferParameterivEXT; glp->GetGraphicsResetStatusARB = exec_glGetGraphicsResetStatusARB; glp->GetHistogramParameterxvOES = exec_glGetHistogramParameterxvOES; glp->GetImageHandleARB = exec_glGetImageHandleARB; glp->GetImageHandleNV = exec_glGetImageHandleNV; glp->GetInteger64i_v = exec_glGetInteger64i_v; glp->GetInteger64v = exec_glGetInteger64v; glp->GetIntegerIndexedvEXT = exec_glGetIntegerIndexedvEXT; glp->GetIntegeri_v = exec_glGetIntegeri_v; glp->GetIntegerui64i_vNV = exec_glGetIntegerui64i_vNV; glp->GetIntegerui64vNV = exec_glGetIntegerui64vNV; glp->GetInternalformati64v = exec_glGetInternalformati64v; glp->GetInternalformativ = exec_glGetInternalformativ; glp->GetLightxOES = exec_glGetLightxOES; glp->GetMapxvOES = exec_glGetMapxvOES; glp->GetMaterialxOES = exec_glGetMaterialxOES; glp->GetMultiTexEnvfvEXT = exec_glGetMultiTexEnvfvEXT; glp->GetMultiTexEnvivEXT = exec_glGetMultiTexEnvivEXT; glp->GetMultiTexGendvEXT = exec_glGetMultiTexGendvEXT; glp->GetMultiTexGenfvEXT = exec_glGetMultiTexGenfvEXT; glp->GetMultiTexGenivEXT = exec_glGetMultiTexGenivEXT; glp->GetMultiTexImageEXT = exec_glGetMultiTexImageEXT; glp->GetMultiTexLevelParameterfvEXT = exec_glGetMultiTexLevelParameterfvEXT; glp->GetMultiTexLevelParameterivEXT = exec_glGetMultiTexLevelParameterivEXT; glp->GetMultiTexParameterIivEXT = exec_glGetMultiTexParameterIivEXT; glp->GetMultiTexParameterIuivEXT = exec_glGetMultiTexParameterIuivEXT; glp->GetMultiTexParameterfvEXT = exec_glGetMultiTexParameterfvEXT; glp->GetMultiTexParameterivEXT = exec_glGetMultiTexParameterivEXT; glp->GetMultisamplefv = exec_glGetMultisamplefv; glp->GetMultisamplefvNV = exec_glGetMultisamplefvNV; glp->GetNamedBufferParameterivEXT = exec_glGetNamedBufferParameterivEXT; glp->GetNamedBufferParameterui64vNV = exec_glGetNamedBufferParameterui64vNV; glp->GetNamedBufferPointervEXT = exec_glGetNamedBufferPointervEXT; glp->GetNamedBufferSubDataEXT = exec_glGetNamedBufferSubDataEXT; glp->GetNamedFramebufferAttachmentParameterivEXT = exec_glGetNamedFramebufferAttachmentParameterivEXT; glp->GetNamedFramebufferParameterivEXT = exec_glGetNamedFramebufferParameterivEXT; glp->GetNamedProgramLocalParameterIivEXT = exec_glGetNamedProgramLocalParameterIivEXT; glp->GetNamedProgramLocalParameterIuivEXT = exec_glGetNamedProgramLocalParameterIuivEXT; glp->GetNamedProgramLocalParameterdvEXT = exec_glGetNamedProgramLocalParameterdvEXT; glp->GetNamedProgramLocalParameterfvEXT = exec_glGetNamedProgramLocalParameterfvEXT; glp->GetNamedProgramStringEXT = exec_glGetNamedProgramStringEXT; glp->GetNamedProgramivEXT = exec_glGetNamedProgramivEXT; glp->GetNamedRenderbufferParameterivEXT = exec_glGetNamedRenderbufferParameterivEXT; glp->GetNamedStringARB = exec_glGetNamedStringARB; glp->GetNamedStringivARB = exec_glGetNamedStringivARB; glp->GetNextPerfQueryIdINTEL = exec_glGetNextPerfQueryIdINTEL; glp->GetObjectLabel = exec_glGetObjectLabel; glp->GetObjectLabelEXT = exec_glGetObjectLabelEXT; glp->GetObjectParameterivAPPLE = exec_glGetObjectParameterivAPPLE; glp->GetObjectPtrLabel = exec_glGetObjectPtrLabel; glp->GetPathColorGenfvNV = exec_glGetPathColorGenfvNV; glp->GetPathColorGenivNV = exec_glGetPathColorGenivNV; glp->GetPathCommandsNV = exec_glGetPathCommandsNV; glp->GetPathCoordsNV = exec_glGetPathCoordsNV; glp->GetPathDashArrayNV = exec_glGetPathDashArrayNV; glp->GetPathLengthNV = exec_glGetPathLengthNV; glp->GetPathMetricRangeNV = exec_glGetPathMetricRangeNV; glp->GetPathMetricsNV = exec_glGetPathMetricsNV; glp->GetPathParameterfvNV = exec_glGetPathParameterfvNV; glp->GetPathParameterivNV = exec_glGetPathParameterivNV; glp->GetPathSpacingNV = exec_glGetPathSpacingNV; glp->GetPathTexGenfvNV = exec_glGetPathTexGenfvNV; glp->GetPathTexGenivNV = exec_glGetPathTexGenivNV; glp->GetPerfCounterInfoINTEL = exec_glGetPerfCounterInfoINTEL; glp->GetPerfMonitorCounterDataAMD = exec_glGetPerfMonitorCounterDataAMD; glp->GetPerfMonitorCounterInfoAMD = exec_glGetPerfMonitorCounterInfoAMD; glp->GetPerfMonitorCounterStringAMD = exec_glGetPerfMonitorCounterStringAMD; glp->GetPerfMonitorCountersAMD = exec_glGetPerfMonitorCountersAMD; glp->GetPerfMonitorGroupStringAMD = exec_glGetPerfMonitorGroupStringAMD; glp->GetPerfMonitorGroupsAMD = exec_glGetPerfMonitorGroupsAMD; glp->GetPerfQueryDataINTEL = exec_glGetPerfQueryDataINTEL; glp->GetPerfQueryIdByNameINTEL = exec_glGetPerfQueryIdByNameINTEL; glp->GetPerfQueryInfoINTEL = exec_glGetPerfQueryInfoINTEL; glp->GetPixelMapxv = exec_glGetPixelMapxv; glp->GetPixelTransformParameterfvEXT = exec_glGetPixelTransformParameterfvEXT; glp->GetPixelTransformParameterivEXT = exec_glGetPixelTransformParameterivEXT; glp->GetPointerIndexedvEXT = exec_glGetPointerIndexedvEXT; glp->GetPointeri_vEXT = exec_glGetPointeri_vEXT; glp->GetProgramBinary = exec_glGetProgramBinary; glp->GetProgramEnvParameterIivNV = exec_glGetProgramEnvParameterIivNV; glp->GetProgramEnvParameterIuivNV = exec_glGetProgramEnvParameterIuivNV; glp->GetProgramInfoLog = exec_glGetProgramInfoLog; glp->GetProgramInterfaceiv = exec_glGetProgramInterfaceiv; glp->GetProgramLocalParameterIivNV = exec_glGetProgramLocalParameterIivNV; glp->GetProgramLocalParameterIuivNV = exec_glGetProgramLocalParameterIuivNV; glp->GetProgramPipelineInfoLog = exec_glGetProgramPipelineInfoLog; glp->GetProgramPipelineiv = exec_glGetProgramPipelineiv; glp->GetProgramRegisterfvMESA = exec_glGetProgramRegisterfvMESA; glp->GetProgramResourceIndex = exec_glGetProgramResourceIndex; glp->GetProgramResourceLocation = exec_glGetProgramResourceLocation; glp->GetProgramResourceLocationIndex = exec_glGetProgramResourceLocationIndex; glp->GetProgramResourceName = exec_glGetProgramResourceName; glp->GetProgramResourceiv = exec_glGetProgramResourceiv; glp->GetProgramStageiv = exec_glGetProgramStageiv; glp->GetProgramSubroutineParameteruivNV = exec_glGetProgramSubroutineParameteruivNV; glp->GetProgramiv = exec_glGetProgramiv; glp->GetQueryIndexediv = exec_glGetQueryIndexediv; glp->GetQueryObjecti64v = exec_glGetQueryObjecti64v; glp->GetQueryObjecti64vEXT = exec_glGetQueryObjecti64vEXT; glp->GetQueryObjectui64v = exec_glGetQueryObjectui64v; glp->GetQueryObjectui64vEXT = exec_glGetQueryObjectui64vEXT; glp->GetRenderbufferParameteriv = exec_glGetRenderbufferParameteriv; glp->GetRenderbufferParameterivEXT = exec_glGetRenderbufferParameterivEXT; glp->GetSamplerParameterIiv = exec_glGetSamplerParameterIiv; glp->GetSamplerParameterIuiv = exec_glGetSamplerParameterIuiv; glp->GetSamplerParameterfv = exec_glGetSamplerParameterfv; glp->GetSamplerParameteriv = exec_glGetSamplerParameteriv; glp->GetShaderInfoLog = exec_glGetShaderInfoLog; glp->GetShaderPrecisionFormat = exec_glGetShaderPrecisionFormat; glp->GetShaderSource = exec_glGetShaderSource; glp->GetShaderiv = exec_glGetShaderiv; glp->GetStringi = exec_glGetStringi; glp->GetSubroutineIndex = exec_glGetSubroutineIndex; glp->GetSubroutineUniformLocation = exec_glGetSubroutineUniformLocation; glp->GetSynciv = exec_glGetSynciv; glp->GetTexEnvxvOES = exec_glGetTexEnvxvOES; glp->GetTexGenxvOES = exec_glGetTexGenxvOES; glp->GetTexLevelParameterxvOES = exec_glGetTexLevelParameterxvOES; glp->GetTexParameterIiv = exec_glGetTexParameterIiv; glp->GetTexParameterIivEXT = exec_glGetTexParameterIivEXT; glp->GetTexParameterIuiv = exec_glGetTexParameterIuiv; glp->GetTexParameterIuivEXT = exec_glGetTexParameterIuivEXT; glp->GetTexParameterPointervAPPLE = exec_glGetTexParameterPointervAPPLE; glp->GetTexParameterxvOES = exec_glGetTexParameterxvOES; glp->GetTextureHandleARB = exec_glGetTextureHandleARB; glp->GetTextureHandleNV = exec_glGetTextureHandleNV; glp->GetTextureImageEXT = exec_glGetTextureImageEXT; glp->GetTextureLevelParameterfvEXT = exec_glGetTextureLevelParameterfvEXT; glp->GetTextureLevelParameterivEXT = exec_glGetTextureLevelParameterivEXT; glp->GetTextureParameterIivEXT = exec_glGetTextureParameterIivEXT; glp->GetTextureParameterIuivEXT = exec_glGetTextureParameterIuivEXT; glp->GetTextureParameterfvEXT = exec_glGetTextureParameterfvEXT; glp->GetTextureParameterivEXT = exec_glGetTextureParameterivEXT; glp->GetTextureSamplerHandleARB = exec_glGetTextureSamplerHandleARB; glp->GetTextureSamplerHandleNV = exec_glGetTextureSamplerHandleNV; glp->GetTransformFeedbackVarying = exec_glGetTransformFeedbackVarying; glp->GetTransformFeedbackVaryingEXT = exec_glGetTransformFeedbackVaryingEXT; glp->GetTransformFeedbackVaryingNV = exec_glGetTransformFeedbackVaryingNV; glp->GetUniformBlockIndex = exec_glGetUniformBlockIndex; glp->GetUniformBufferSizeEXT = exec_glGetUniformBufferSizeEXT; glp->GetUniformIndices = exec_glGetUniformIndices; glp->GetUniformLocation = exec_glGetUniformLocation; glp->GetUniformOffsetEXT = exec_glGetUniformOffsetEXT; glp->GetUniformSubroutineuiv = exec_glGetUniformSubroutineuiv; glp->GetUniformdv = exec_glGetUniformdv; glp->GetUniformfv = exec_glGetUniformfv; glp->GetUniformi64vNV = exec_glGetUniformi64vNV; glp->GetUniformiv = exec_glGetUniformiv; glp->GetUniformui64vNV = exec_glGetUniformui64vNV; glp->GetUniformuiv = exec_glGetUniformuiv; glp->GetUniformuivEXT = exec_glGetUniformuivEXT; glp->GetVaryingLocationNV = exec_glGetVaryingLocationNV; glp->GetVertexArrayIntegeri_vEXT = exec_glGetVertexArrayIntegeri_vEXT; glp->GetVertexArrayIntegervEXT = exec_glGetVertexArrayIntegervEXT; glp->GetVertexArrayPointeri_vEXT = exec_glGetVertexArrayPointeri_vEXT; glp->GetVertexArrayPointervEXT = exec_glGetVertexArrayPointervEXT; glp->GetVertexAttribIiv = exec_glGetVertexAttribIiv; glp->GetVertexAttribIivEXT = exec_glGetVertexAttribIivEXT; glp->GetVertexAttribIuiv = exec_glGetVertexAttribIuiv; glp->GetVertexAttribIuivEXT = exec_glGetVertexAttribIuivEXT; glp->GetVertexAttribLdv = exec_glGetVertexAttribLdv; glp->GetVertexAttribLdvEXT = exec_glGetVertexAttribLdvEXT; glp->GetVertexAttribLi64vNV = exec_glGetVertexAttribLi64vNV; glp->GetVertexAttribLui64vARB = exec_glGetVertexAttribLui64vARB; glp->GetVertexAttribLui64vNV = exec_glGetVertexAttribLui64vNV; glp->GetVertexAttribPointerv = exec_glGetVertexAttribPointerv; glp->GetVertexAttribdv = exec_glGetVertexAttribdv; glp->GetVertexAttribfv = exec_glGetVertexAttribfv; glp->GetVertexAttribiv = exec_glGetVertexAttribiv; glp->GetVideoCaptureStreamdvNV = exec_glGetVideoCaptureStreamdvNV; glp->GetVideoCaptureStreamfvNV = exec_glGetVideoCaptureStreamfvNV; glp->GetVideoCaptureStreamivNV = exec_glGetVideoCaptureStreamivNV; glp->GetVideoCaptureivNV = exec_glGetVideoCaptureivNV; glp->GetVideoi64vNV = exec_glGetVideoi64vNV; glp->GetVideoivNV = exec_glGetVideoivNV; glp->GetVideoui64vNV = exec_glGetVideoui64vNV; glp->GetVideouivNV = exec_glGetVideouivNV; glp->GetnColorTableARB = exec_glGetnColorTableARB; glp->GetnCompressedTexImageARB = exec_glGetnCompressedTexImageARB; glp->GetnConvolutionFilterARB = exec_glGetnConvolutionFilterARB; glp->GetnHistogramARB = exec_glGetnHistogramARB; glp->GetnMapdvARB = exec_glGetnMapdvARB; glp->GetnMapfvARB = exec_glGetnMapfvARB; glp->GetnMapivARB = exec_glGetnMapivARB; glp->GetnMinmaxARB = exec_glGetnMinmaxARB; glp->GetnPixelMapfvARB = exec_glGetnPixelMapfvARB; glp->GetnPixelMapuivARB = exec_glGetnPixelMapuivARB; glp->GetnPixelMapusvARB = exec_glGetnPixelMapusvARB; glp->GetnPolygonStippleARB = exec_glGetnPolygonStippleARB; glp->GetnSeparableFilterARB = exec_glGetnSeparableFilterARB; glp->GetnTexImageARB = exec_glGetnTexImageARB; glp->GetnUniformdvARB = exec_glGetnUniformdvARB; glp->GetnUniformfvARB = exec_glGetnUniformfvARB; glp->GetnUniformivARB = exec_glGetnUniformivARB; glp->GetnUniformuivARB = exec_glGetnUniformuivARB; glp->ImportSyncEXT = exec_glImportSyncEXT; glp->IndexFormatNV = exec_glIndexFormatNV; glp->IndexxOES = exec_glIndexxOES; glp->IndexxvOES = exec_glIndexxvOES; glp->InsertEventMarkerEXT = exec_glInsertEventMarkerEXT; glp->InterpolatePathsNV = exec_glInterpolatePathsNV; glp->InvalidateBufferData = exec_glInvalidateBufferData; glp->InvalidateBufferSubData = exec_glInvalidateBufferSubData; glp->InvalidateFramebuffer = exec_glInvalidateFramebuffer; glp->InvalidateSubFramebuffer = exec_glInvalidateSubFramebuffer; glp->InvalidateTexImage = exec_glInvalidateTexImage; glp->InvalidateTexSubImage = exec_glInvalidateTexSubImage; glp->IsBufferResidentNV = exec_glIsBufferResidentNV; glp->IsEnabledIndexedEXT = exec_glIsEnabledIndexedEXT; glp->IsEnabledi = exec_glIsEnabledi; glp->IsFramebuffer = exec_glIsFramebuffer; glp->IsFramebufferEXT = exec_glIsFramebufferEXT; glp->IsImageHandleResidentARB = exec_glIsImageHandleResidentARB; glp->IsImageHandleResidentNV = exec_glIsImageHandleResidentNV; glp->IsNameAMD = exec_glIsNameAMD; glp->IsNamedBufferResidentNV = exec_glIsNamedBufferResidentNV; glp->IsNamedStringARB = exec_glIsNamedStringARB; glp->IsPathNV = exec_glIsPathNV; glp->IsPointInFillPathNV = exec_glIsPointInFillPathNV; glp->IsPointInStrokePathNV = exec_glIsPointInStrokePathNV; glp->IsProgram = exec_glIsProgram; glp->IsProgramPipeline = exec_glIsProgramPipeline; glp->IsRenderbuffer = exec_glIsRenderbuffer; glp->IsRenderbufferEXT = exec_glIsRenderbufferEXT; glp->IsSampler = exec_glIsSampler; glp->IsShader = exec_glIsShader; glp->IsSync = exec_glIsSync; glp->IsTextureHandleResidentARB = exec_glIsTextureHandleResidentARB; glp->IsTextureHandleResidentNV = exec_glIsTextureHandleResidentNV; glp->IsTransformFeedback = exec_glIsTransformFeedback; glp->IsTransformFeedbackNV = exec_glIsTransformFeedbackNV; glp->IsVertexArray = exec_glIsVertexArray; glp->IsVertexAttribEnabledAPPLE = exec_glIsVertexAttribEnabledAPPLE; glp->LabelObjectEXT = exec_glLabelObjectEXT; glp->LightModelxOES = exec_glLightModelxOES; glp->LightModelxvOES = exec_glLightModelxvOES; glp->LightxOES = exec_glLightxOES; glp->LightxvOES = exec_glLightxvOES; glp->LineWidthxOES = exec_glLineWidthxOES; glp->LinkProgram = exec_glLinkProgram; glp->LoadMatrixxOES = exec_glLoadMatrixxOES; glp->LoadTransposeMatrixxOES = exec_glLoadTransposeMatrixxOES; glp->MakeBufferNonResidentNV = exec_glMakeBufferNonResidentNV; glp->MakeBufferResidentNV = exec_glMakeBufferResidentNV; glp->MakeImageHandleNonResidentARB = exec_glMakeImageHandleNonResidentARB; glp->MakeImageHandleNonResidentNV = exec_glMakeImageHandleNonResidentNV; glp->MakeImageHandleResidentARB = exec_glMakeImageHandleResidentARB; glp->MakeImageHandleResidentNV = exec_glMakeImageHandleResidentNV; glp->MakeNamedBufferNonResidentNV = exec_glMakeNamedBufferNonResidentNV; glp->MakeNamedBufferResidentNV = exec_glMakeNamedBufferResidentNV; glp->MakeTextureHandleNonResidentARB = exec_glMakeTextureHandleNonResidentARB; glp->MakeTextureHandleNonResidentNV = exec_glMakeTextureHandleNonResidentNV; glp->MakeTextureHandleResidentARB = exec_glMakeTextureHandleResidentARB; glp->MakeTextureHandleResidentNV = exec_glMakeTextureHandleResidentNV; glp->Map1xOES = exec_glMap1xOES; glp->Map2xOES = exec_glMap2xOES; glp->MapBufferRange = exec_glMapBufferRange; glp->MapGrid1xOES = exec_glMapGrid1xOES; glp->MapGrid2xOES = exec_glMapGrid2xOES; glp->MapNamedBufferEXT = exec_glMapNamedBufferEXT; glp->MapNamedBufferRangeEXT = exec_glMapNamedBufferRangeEXT; glp->MapTexture2DINTEL = exec_glMapTexture2DINTEL; glp->MapVertexAttrib1dAPPLE = exec_glMapVertexAttrib1dAPPLE; glp->MapVertexAttrib1fAPPLE = exec_glMapVertexAttrib1fAPPLE; glp->MapVertexAttrib2dAPPLE = exec_glMapVertexAttrib2dAPPLE; glp->MapVertexAttrib2fAPPLE = exec_glMapVertexAttrib2fAPPLE; glp->MaterialxOES = exec_glMaterialxOES; glp->MaterialxvOES = exec_glMaterialxvOES; glp->MatrixFrustumEXT = exec_glMatrixFrustumEXT; glp->MatrixLoadIdentityEXT = exec_glMatrixLoadIdentityEXT; glp->MatrixLoadTransposedEXT = exec_glMatrixLoadTransposedEXT; glp->MatrixLoadTransposefEXT = exec_glMatrixLoadTransposefEXT; glp->MatrixLoaddEXT = exec_glMatrixLoaddEXT; glp->MatrixLoadfEXT = exec_glMatrixLoadfEXT; glp->MatrixMultTransposedEXT = exec_glMatrixMultTransposedEXT; glp->MatrixMultTransposefEXT = exec_glMatrixMultTransposefEXT; glp->MatrixMultdEXT = exec_glMatrixMultdEXT; glp->MatrixMultfEXT = exec_glMatrixMultfEXT; glp->MatrixOrthoEXT = exec_glMatrixOrthoEXT; glp->MatrixPopEXT = exec_glMatrixPopEXT; glp->MatrixPushEXT = exec_glMatrixPushEXT; glp->MatrixRotatedEXT = exec_glMatrixRotatedEXT; glp->MatrixRotatefEXT = exec_glMatrixRotatefEXT; glp->MatrixScaledEXT = exec_glMatrixScaledEXT; glp->MatrixScalefEXT = exec_glMatrixScalefEXT; glp->MatrixTranslatedEXT = exec_glMatrixTranslatedEXT; glp->MatrixTranslatefEXT = exec_glMatrixTranslatefEXT; glp->MemoryBarrier = exec_glMemoryBarrier; glp->MemoryBarrierEXT = exec_glMemoryBarrierEXT; glp->MinSampleShading = exec_glMinSampleShading; glp->MinSampleShadingARB = exec_glMinSampleShadingARB; glp->MultMatrixxOES = exec_glMultMatrixxOES; glp->MultTransposeMatrixxOES = exec_glMultTransposeMatrixxOES; glp->MultiDrawArraysIndirect = exec_glMultiDrawArraysIndirect; glp->MultiDrawArraysIndirectAMD = exec_glMultiDrawArraysIndirectAMD; glp->MultiDrawArraysIndirectBindlessNV = exec_glMultiDrawArraysIndirectBindlessNV; glp->MultiDrawArraysIndirectCountARB = exec_glMultiDrawArraysIndirectCountARB; glp->MultiDrawElementsBaseVertex = exec_glMultiDrawElementsBaseVertex; glp->MultiDrawElementsIndirect = exec_glMultiDrawElementsIndirect; glp->MultiDrawElementsIndirectAMD = exec_glMultiDrawElementsIndirectAMD; glp->MultiDrawElementsIndirectBindlessNV = exec_glMultiDrawElementsIndirectBindlessNV; glp->MultiDrawElementsIndirectCountARB = exec_glMultiDrawElementsIndirectCountARB; glp->MultiTexBufferEXT = exec_glMultiTexBufferEXT; glp->MultiTexCoord1bOES = exec_glMultiTexCoord1bOES; glp->MultiTexCoord1bvOES = exec_glMultiTexCoord1bvOES; glp->MultiTexCoord1xOES = exec_glMultiTexCoord1xOES; glp->MultiTexCoord1xvOES = exec_glMultiTexCoord1xvOES; glp->MultiTexCoord2bOES = exec_glMultiTexCoord2bOES; glp->MultiTexCoord2bvOES = exec_glMultiTexCoord2bvOES; glp->MultiTexCoord2xOES = exec_glMultiTexCoord2xOES; glp->MultiTexCoord2xvOES = exec_glMultiTexCoord2xvOES; glp->MultiTexCoord3bOES = exec_glMultiTexCoord3bOES; glp->MultiTexCoord3bvOES = exec_glMultiTexCoord3bvOES; glp->MultiTexCoord3xOES = exec_glMultiTexCoord3xOES; glp->MultiTexCoord3xvOES = exec_glMultiTexCoord3xvOES; glp->MultiTexCoord4bOES = exec_glMultiTexCoord4bOES; glp->MultiTexCoord4bvOES = exec_glMultiTexCoord4bvOES; glp->MultiTexCoord4xOES = exec_glMultiTexCoord4xOES; glp->MultiTexCoord4xvOES = exec_glMultiTexCoord4xvOES; glp->MultiTexCoordP1ui = exec_glMultiTexCoordP1ui; glp->MultiTexCoordP1uiv = exec_glMultiTexCoordP1uiv; glp->MultiTexCoordP2ui = exec_glMultiTexCoordP2ui; glp->MultiTexCoordP2uiv = exec_glMultiTexCoordP2uiv; glp->MultiTexCoordP3ui = exec_glMultiTexCoordP3ui; glp->MultiTexCoordP3uiv = exec_glMultiTexCoordP3uiv; glp->MultiTexCoordP4ui = exec_glMultiTexCoordP4ui; glp->MultiTexCoordP4uiv = exec_glMultiTexCoordP4uiv; glp->MultiTexCoordPointerEXT = exec_glMultiTexCoordPointerEXT; glp->MultiTexEnvfEXT = exec_glMultiTexEnvfEXT; glp->MultiTexEnvfvEXT = exec_glMultiTexEnvfvEXT; glp->MultiTexEnviEXT = exec_glMultiTexEnviEXT; glp->MultiTexEnvivEXT = exec_glMultiTexEnvivEXT; glp->MultiTexGendEXT = exec_glMultiTexGendEXT; glp->MultiTexGendvEXT = exec_glMultiTexGendvEXT; glp->MultiTexGenfEXT = exec_glMultiTexGenfEXT; glp->MultiTexGenfvEXT = exec_glMultiTexGenfvEXT; glp->MultiTexGeniEXT = exec_glMultiTexGeniEXT; glp->MultiTexGenivEXT = exec_glMultiTexGenivEXT; glp->MultiTexImage1DEXT = exec_glMultiTexImage1DEXT; glp->MultiTexImage2DEXT = exec_glMultiTexImage2DEXT; glp->MultiTexImage3DEXT = exec_glMultiTexImage3DEXT; glp->MultiTexParameterIivEXT = exec_glMultiTexParameterIivEXT; glp->MultiTexParameterIuivEXT = exec_glMultiTexParameterIuivEXT; glp->MultiTexParameterfEXT = exec_glMultiTexParameterfEXT; glp->MultiTexParameterfvEXT = exec_glMultiTexParameterfvEXT; glp->MultiTexParameteriEXT = exec_glMultiTexParameteriEXT; glp->MultiTexParameterivEXT = exec_glMultiTexParameterivEXT; glp->MultiTexRenderbufferEXT = exec_glMultiTexRenderbufferEXT; glp->MultiTexSubImage1DEXT = exec_glMultiTexSubImage1DEXT; glp->MultiTexSubImage2DEXT = exec_glMultiTexSubImage2DEXT; glp->MultiTexSubImage3DEXT = exec_glMultiTexSubImage3DEXT; glp->NamedBufferDataEXT = exec_glNamedBufferDataEXT; glp->NamedBufferStorageEXT = exec_glNamedBufferStorageEXT; glp->NamedBufferSubDataEXT = exec_glNamedBufferSubDataEXT; glp->NamedCopyBufferSubDataEXT = exec_glNamedCopyBufferSubDataEXT; glp->NamedFramebufferParameteriEXT = exec_glNamedFramebufferParameteriEXT; glp->NamedFramebufferRenderbufferEXT = exec_glNamedFramebufferRenderbufferEXT; glp->NamedFramebufferTexture1DEXT = exec_glNamedFramebufferTexture1DEXT; glp->NamedFramebufferTexture2DEXT = exec_glNamedFramebufferTexture2DEXT; glp->NamedFramebufferTexture3DEXT = exec_glNamedFramebufferTexture3DEXT; glp->NamedFramebufferTextureEXT = exec_glNamedFramebufferTextureEXT; glp->NamedFramebufferTextureFaceEXT = exec_glNamedFramebufferTextureFaceEXT; glp->NamedFramebufferTextureLayerEXT = exec_glNamedFramebufferTextureLayerEXT; glp->NamedProgramLocalParameter4dEXT = exec_glNamedProgramLocalParameter4dEXT; glp->NamedProgramLocalParameter4dvEXT = exec_glNamedProgramLocalParameter4dvEXT; glp->NamedProgramLocalParameter4fEXT = exec_glNamedProgramLocalParameter4fEXT; glp->NamedProgramLocalParameter4fvEXT = exec_glNamedProgramLocalParameter4fvEXT; glp->NamedProgramLocalParameterI4iEXT = exec_glNamedProgramLocalParameterI4iEXT; glp->NamedProgramLocalParameterI4ivEXT = exec_glNamedProgramLocalParameterI4ivEXT; glp->NamedProgramLocalParameterI4uiEXT = exec_glNamedProgramLocalParameterI4uiEXT; glp->NamedProgramLocalParameterI4uivEXT = exec_glNamedProgramLocalParameterI4uivEXT; glp->NamedProgramLocalParameters4fvEXT = exec_glNamedProgramLocalParameters4fvEXT; glp->NamedProgramLocalParametersI4ivEXT = exec_glNamedProgramLocalParametersI4ivEXT; glp->NamedProgramLocalParametersI4uivEXT = exec_glNamedProgramLocalParametersI4uivEXT; glp->NamedProgramStringEXT = exec_glNamedProgramStringEXT; glp->NamedRenderbufferStorageEXT = exec_glNamedRenderbufferStorageEXT; glp->NamedRenderbufferStorageMultisampleCoverageEXT = exec_glNamedRenderbufferStorageMultisampleCoverageEXT; glp->NamedRenderbufferStorageMultisampleEXT = exec_glNamedRenderbufferStorageMultisampleEXT; glp->NamedStringARB = exec_glNamedStringARB; glp->Normal3xOES = exec_glNormal3xOES; glp->Normal3xvOES = exec_glNormal3xvOES; glp->NormalFormatNV = exec_glNormalFormatNV; glp->NormalP3ui = exec_glNormalP3ui; glp->NormalP3uiv = exec_glNormalP3uiv; glp->ObjectLabel = exec_glObjectLabel; glp->ObjectPtrLabel = exec_glObjectPtrLabel; glp->ObjectPurgeableAPPLE = exec_glObjectPurgeableAPPLE; glp->ObjectUnpurgeableAPPLE = exec_glObjectUnpurgeableAPPLE; glp->OrthofOES = exec_glOrthofOES; glp->OrthoxOES = exec_glOrthoxOES; glp->PassThroughxOES = exec_glPassThroughxOES; glp->PatchParameterfv = exec_glPatchParameterfv; glp->PatchParameteri = exec_glPatchParameteri; glp->PathColorGenNV = exec_glPathColorGenNV; glp->PathCommandsNV = exec_glPathCommandsNV; glp->PathCoordsNV = exec_glPathCoordsNV; glp->PathCoverDepthFuncNV = exec_glPathCoverDepthFuncNV; glp->PathDashArrayNV = exec_glPathDashArrayNV; glp->PathFogGenNV = exec_glPathFogGenNV; glp->PathGlyphRangeNV = exec_glPathGlyphRangeNV; glp->PathGlyphsNV = exec_glPathGlyphsNV; glp->PathParameterfNV = exec_glPathParameterfNV; glp->PathParameterfvNV = exec_glPathParameterfvNV; glp->PathParameteriNV = exec_glPathParameteriNV; glp->PathParameterivNV = exec_glPathParameterivNV; glp->PathStencilDepthOffsetNV = exec_glPathStencilDepthOffsetNV; glp->PathStencilFuncNV = exec_glPathStencilFuncNV; glp->PathStringNV = exec_glPathStringNV; glp->PathSubCommandsNV = exec_glPathSubCommandsNV; glp->PathSubCoordsNV = exec_glPathSubCoordsNV; glp->PathTexGenNV = exec_glPathTexGenNV; glp->PauseTransformFeedback = exec_glPauseTransformFeedback; glp->PauseTransformFeedbackNV = exec_glPauseTransformFeedbackNV; glp->PixelMapx = exec_glPixelMapx; glp->PixelStorex = exec_glPixelStorex; glp->PixelTransferxOES = exec_glPixelTransferxOES; glp->PixelZoomxOES = exec_glPixelZoomxOES; glp->PointAlongPathNV = exec_glPointAlongPathNV; glp->PointParameterxvOES = exec_glPointParameterxvOES; glp->PointSizePointerAPPLE = exec_glPointSizePointerAPPLE; glp->PointSizexOES = exec_glPointSizexOES; glp->PolygonOffsetxOES = exec_glPolygonOffsetxOES; glp->PopDebugGroup = exec_glPopDebugGroup; glp->PopGroupMarkerEXT = exec_glPopGroupMarkerEXT; glp->PresentFrameDualFillNV = exec_glPresentFrameDualFillNV; glp->PresentFrameKeyedNV = exec_glPresentFrameKeyedNV; glp->PrimitiveRestartIndex = exec_glPrimitiveRestartIndex; glp->PrioritizeTexturesxOES = exec_glPrioritizeTexturesxOES; glp->ProgramBinary = exec_glProgramBinary; glp->ProgramBufferParametersIivNV = exec_glProgramBufferParametersIivNV; glp->ProgramBufferParametersIuivNV = exec_glProgramBufferParametersIuivNV; glp->ProgramBufferParametersfvNV = exec_glProgramBufferParametersfvNV; glp->ProgramCallbackMESA = exec_glProgramCallbackMESA; glp->ProgramEnvParameterI4iNV = exec_glProgramEnvParameterI4iNV; glp->ProgramEnvParameterI4ivNV = exec_glProgramEnvParameterI4ivNV; glp->ProgramEnvParameterI4uiNV = exec_glProgramEnvParameterI4uiNV; glp->ProgramEnvParameterI4uivNV = exec_glProgramEnvParameterI4uivNV; glp->ProgramEnvParameters4fvEXT = exec_glProgramEnvParameters4fvEXT; glp->ProgramEnvParametersI4ivNV = exec_glProgramEnvParametersI4ivNV; glp->ProgramEnvParametersI4uivNV = exec_glProgramEnvParametersI4uivNV; glp->ProgramLocalParameterI4iNV = exec_glProgramLocalParameterI4iNV; glp->ProgramLocalParameterI4ivNV = exec_glProgramLocalParameterI4ivNV; glp->ProgramLocalParameterI4uiNV = exec_glProgramLocalParameterI4uiNV; glp->ProgramLocalParameterI4uivNV = exec_glProgramLocalParameterI4uivNV; glp->ProgramLocalParameters4fvEXT = exec_glProgramLocalParameters4fvEXT; glp->ProgramLocalParametersI4ivNV = exec_glProgramLocalParametersI4ivNV; glp->ProgramLocalParametersI4uivNV = exec_glProgramLocalParametersI4uivNV; glp->ProgramParameteri = exec_glProgramParameteri; glp->ProgramParameteriARB = exec_glProgramParameteriARB; glp->ProgramParameteriEXT = exec_glProgramParameteriEXT; glp->ProgramSubroutineParametersuivNV = exec_glProgramSubroutineParametersuivNV; glp->ProgramUniform1d = exec_glProgramUniform1d; glp->ProgramUniform1dEXT = exec_glProgramUniform1dEXT; glp->ProgramUniform1dv = exec_glProgramUniform1dv; glp->ProgramUniform1dvEXT = exec_glProgramUniform1dvEXT; glp->ProgramUniform1f = exec_glProgramUniform1f; glp->ProgramUniform1fEXT = exec_glProgramUniform1fEXT; glp->ProgramUniform1fv = exec_glProgramUniform1fv; glp->ProgramUniform1fvEXT = exec_glProgramUniform1fvEXT; glp->ProgramUniform1i = exec_glProgramUniform1i; glp->ProgramUniform1i64NV = exec_glProgramUniform1i64NV; glp->ProgramUniform1i64vNV = exec_glProgramUniform1i64vNV; glp->ProgramUniform1iEXT = exec_glProgramUniform1iEXT; glp->ProgramUniform1iv = exec_glProgramUniform1iv; glp->ProgramUniform1ivEXT = exec_glProgramUniform1ivEXT; glp->ProgramUniform1ui = exec_glProgramUniform1ui; glp->ProgramUniform1ui64NV = exec_glProgramUniform1ui64NV; glp->ProgramUniform1ui64vNV = exec_glProgramUniform1ui64vNV; glp->ProgramUniform1uiEXT = exec_glProgramUniform1uiEXT; glp->ProgramUniform1uiv = exec_glProgramUniform1uiv; glp->ProgramUniform1uivEXT = exec_glProgramUniform1uivEXT; glp->ProgramUniform2d = exec_glProgramUniform2d; glp->ProgramUniform2dEXT = exec_glProgramUniform2dEXT; glp->ProgramUniform2dv = exec_glProgramUniform2dv; glp->ProgramUniform2dvEXT = exec_glProgramUniform2dvEXT; glp->ProgramUniform2f = exec_glProgramUniform2f; glp->ProgramUniform2fEXT = exec_glProgramUniform2fEXT; glp->ProgramUniform2fv = exec_glProgramUniform2fv; glp->ProgramUniform2fvEXT = exec_glProgramUniform2fvEXT; glp->ProgramUniform2i = exec_glProgramUniform2i; glp->ProgramUniform2i64NV = exec_glProgramUniform2i64NV; glp->ProgramUniform2i64vNV = exec_glProgramUniform2i64vNV; glp->ProgramUniform2iEXT = exec_glProgramUniform2iEXT; glp->ProgramUniform2iv = exec_glProgramUniform2iv; glp->ProgramUniform2ivEXT = exec_glProgramUniform2ivEXT; glp->ProgramUniform2ui = exec_glProgramUniform2ui; glp->ProgramUniform2ui64NV = exec_glProgramUniform2ui64NV; glp->ProgramUniform2ui64vNV = exec_glProgramUniform2ui64vNV; glp->ProgramUniform2uiEXT = exec_glProgramUniform2uiEXT; glp->ProgramUniform2uiv = exec_glProgramUniform2uiv; glp->ProgramUniform2uivEXT = exec_glProgramUniform2uivEXT; glp->ProgramUniform3d = exec_glProgramUniform3d; glp->ProgramUniform3dEXT = exec_glProgramUniform3dEXT; glp->ProgramUniform3dv = exec_glProgramUniform3dv; glp->ProgramUniform3dvEXT = exec_glProgramUniform3dvEXT; glp->ProgramUniform3f = exec_glProgramUniform3f; glp->ProgramUniform3fEXT = exec_glProgramUniform3fEXT; glp->ProgramUniform3fv = exec_glProgramUniform3fv; glp->ProgramUniform3fvEXT = exec_glProgramUniform3fvEXT; glp->ProgramUniform3i = exec_glProgramUniform3i; glp->ProgramUniform3i64NV = exec_glProgramUniform3i64NV; glp->ProgramUniform3i64vNV = exec_glProgramUniform3i64vNV; glp->ProgramUniform3iEXT = exec_glProgramUniform3iEXT; glp->ProgramUniform3iv = exec_glProgramUniform3iv; glp->ProgramUniform3ivEXT = exec_glProgramUniform3ivEXT; glp->ProgramUniform3ui = exec_glProgramUniform3ui; glp->ProgramUniform3ui64NV = exec_glProgramUniform3ui64NV; glp->ProgramUniform3ui64vNV = exec_glProgramUniform3ui64vNV; glp->ProgramUniform3uiEXT = exec_glProgramUniform3uiEXT; glp->ProgramUniform3uiv = exec_glProgramUniform3uiv; glp->ProgramUniform3uivEXT = exec_glProgramUniform3uivEXT; glp->ProgramUniform4d = exec_glProgramUniform4d; glp->ProgramUniform4dEXT = exec_glProgramUniform4dEXT; glp->ProgramUniform4dv = exec_glProgramUniform4dv; glp->ProgramUniform4dvEXT = exec_glProgramUniform4dvEXT; glp->ProgramUniform4f = exec_glProgramUniform4f; glp->ProgramUniform4fEXT = exec_glProgramUniform4fEXT; glp->ProgramUniform4fv = exec_glProgramUniform4fv; glp->ProgramUniform4fvEXT = exec_glProgramUniform4fvEXT; glp->ProgramUniform4i = exec_glProgramUniform4i; glp->ProgramUniform4i64NV = exec_glProgramUniform4i64NV; glp->ProgramUniform4i64vNV = exec_glProgramUniform4i64vNV; glp->ProgramUniform4iEXT = exec_glProgramUniform4iEXT; glp->ProgramUniform4iv = exec_glProgramUniform4iv; glp->ProgramUniform4ivEXT = exec_glProgramUniform4ivEXT; glp->ProgramUniform4ui = exec_glProgramUniform4ui; glp->ProgramUniform4ui64NV = exec_glProgramUniform4ui64NV; glp->ProgramUniform4ui64vNV = exec_glProgramUniform4ui64vNV; glp->ProgramUniform4uiEXT = exec_glProgramUniform4uiEXT; glp->ProgramUniform4uiv = exec_glProgramUniform4uiv; glp->ProgramUniform4uivEXT = exec_glProgramUniform4uivEXT; glp->ProgramUniformHandleui64ARB = exec_glProgramUniformHandleui64ARB; glp->ProgramUniformHandleui64NV = exec_glProgramUniformHandleui64NV; glp->ProgramUniformHandleui64vARB = exec_glProgramUniformHandleui64vARB; glp->ProgramUniformHandleui64vNV = exec_glProgramUniformHandleui64vNV; glp->ProgramUniformMatrix2dv = exec_glProgramUniformMatrix2dv; glp->ProgramUniformMatrix2dvEXT = exec_glProgramUniformMatrix2dvEXT; glp->ProgramUniformMatrix2fv = exec_glProgramUniformMatrix2fv; glp->ProgramUniformMatrix2fvEXT = exec_glProgramUniformMatrix2fvEXT; glp->ProgramUniformMatrix2x3dv = exec_glProgramUniformMatrix2x3dv; glp->ProgramUniformMatrix2x3dvEXT = exec_glProgramUniformMatrix2x3dvEXT; glp->ProgramUniformMatrix2x3fv = exec_glProgramUniformMatrix2x3fv; glp->ProgramUniformMatrix2x3fvEXT = exec_glProgramUniformMatrix2x3fvEXT; glp->ProgramUniformMatrix2x4dv = exec_glProgramUniformMatrix2x4dv; glp->ProgramUniformMatrix2x4dvEXT = exec_glProgramUniformMatrix2x4dvEXT; glp->ProgramUniformMatrix2x4fv = exec_glProgramUniformMatrix2x4fv; glp->ProgramUniformMatrix2x4fvEXT = exec_glProgramUniformMatrix2x4fvEXT; glp->ProgramUniformMatrix3dv = exec_glProgramUniformMatrix3dv; glp->ProgramUniformMatrix3dvEXT = exec_glProgramUniformMatrix3dvEXT; glp->ProgramUniformMatrix3fv = exec_glProgramUniformMatrix3fv; glp->ProgramUniformMatrix3fvEXT = exec_glProgramUniformMatrix3fvEXT; glp->ProgramUniformMatrix3x2dv = exec_glProgramUniformMatrix3x2dv; glp->ProgramUniformMatrix3x2dvEXT = exec_glProgramUniformMatrix3x2dvEXT; glp->ProgramUniformMatrix3x2fv = exec_glProgramUniformMatrix3x2fv; glp->ProgramUniformMatrix3x2fvEXT = exec_glProgramUniformMatrix3x2fvEXT; glp->ProgramUniformMatrix3x4dv = exec_glProgramUniformMatrix3x4dv; glp->ProgramUniformMatrix3x4dvEXT = exec_glProgramUniformMatrix3x4dvEXT; glp->ProgramUniformMatrix3x4fv = exec_glProgramUniformMatrix3x4fv; glp->ProgramUniformMatrix3x4fvEXT = exec_glProgramUniformMatrix3x4fvEXT; glp->ProgramUniformMatrix4dv = exec_glProgramUniformMatrix4dv; glp->ProgramUniformMatrix4dvEXT = exec_glProgramUniformMatrix4dvEXT; glp->ProgramUniformMatrix4fv = exec_glProgramUniformMatrix4fv; glp->ProgramUniformMatrix4fvEXT = exec_glProgramUniformMatrix4fvEXT; glp->ProgramUniformMatrix4x2dv = exec_glProgramUniformMatrix4x2dv; glp->ProgramUniformMatrix4x2dvEXT = exec_glProgramUniformMatrix4x2dvEXT; glp->ProgramUniformMatrix4x2fv = exec_glProgramUniformMatrix4x2fv; glp->ProgramUniformMatrix4x2fvEXT = exec_glProgramUniformMatrix4x2fvEXT; glp->ProgramUniformMatrix4x3dv = exec_glProgramUniformMatrix4x3dv; glp->ProgramUniformMatrix4x3dvEXT = exec_glProgramUniformMatrix4x3dvEXT; glp->ProgramUniformMatrix4x3fv = exec_glProgramUniformMatrix4x3fv; glp->ProgramUniformMatrix4x3fvEXT = exec_glProgramUniformMatrix4x3fvEXT; glp->ProgramUniformui64NV = exec_glProgramUniformui64NV; glp->ProgramUniformui64vNV = exec_glProgramUniformui64vNV; glp->ProgramVertexLimitNV = exec_glProgramVertexLimitNV; glp->ProvokingVertex = exec_glProvokingVertex; glp->ProvokingVertexEXT = exec_glProvokingVertexEXT; glp->PushClientAttribDefaultEXT = exec_glPushClientAttribDefaultEXT; glp->PushDebugGroup = exec_glPushDebugGroup; glp->PushGroupMarkerEXT = exec_glPushGroupMarkerEXT; glp->QueryCounter = exec_glQueryCounter; glp->QueryMatrixxOES = exec_glQueryMatrixxOES; glp->QueryObjectParameteruiAMD = exec_glQueryObjectParameteruiAMD; glp->RasterPos2xOES = exec_glRasterPos2xOES; glp->RasterPos2xvOES = exec_glRasterPos2xvOES; glp->RasterPos3xOES = exec_glRasterPos3xOES; glp->RasterPos3xvOES = exec_glRasterPos3xvOES; glp->RasterPos4xOES = exec_glRasterPos4xOES; glp->RasterPos4xvOES = exec_glRasterPos4xvOES; glp->ReadnPixelsARB = exec_glReadnPixelsARB; glp->RectxOES = exec_glRectxOES; glp->RectxvOES = exec_glRectxvOES; glp->ReleaseShaderCompiler = exec_glReleaseShaderCompiler; glp->RenderbufferStorage = exec_glRenderbufferStorage; glp->RenderbufferStorageEXT = exec_glRenderbufferStorageEXT; glp->RenderbufferStorageMultisample = exec_glRenderbufferStorageMultisample; glp->RenderbufferStorageMultisampleCoverageNV = exec_glRenderbufferStorageMultisampleCoverageNV; glp->RenderbufferStorageMultisampleEXT = exec_glRenderbufferStorageMultisampleEXT; glp->ResumeTransformFeedback = exec_glResumeTransformFeedback; glp->ResumeTransformFeedbackNV = exec_glResumeTransformFeedbackNV; glp->RotatexOES = exec_glRotatexOES; glp->SampleCoverageOES = exec_glSampleCoverageOES; glp->SampleMaskIndexedNV = exec_glSampleMaskIndexedNV; glp->SampleMaski = exec_glSampleMaski; glp->SamplePass = exec_glSamplePass; glp->SamplePassARB = exec_glSamplePassARB; glp->SamplerParameterIiv = exec_glSamplerParameterIiv; glp->SamplerParameterIuiv = exec_glSamplerParameterIuiv; glp->SamplerParameterf = exec_glSamplerParameterf; glp->SamplerParameterfv = exec_glSamplerParameterfv; glp->SamplerParameteri = exec_glSamplerParameteri; glp->SamplerParameteriv = exec_glSamplerParameteriv; glp->ScalexOES = exec_glScalexOES; glp->ScissorArrayv = exec_glScissorArrayv; glp->ScissorIndexed = exec_glScissorIndexed; glp->ScissorIndexedv = exec_glScissorIndexedv; glp->SecondaryColorFormatNV = exec_glSecondaryColorFormatNV; glp->SecondaryColorP3ui = exec_glSecondaryColorP3ui; glp->SecondaryColorP3uiv = exec_glSecondaryColorP3uiv; glp->SelectPerfMonitorCountersAMD = exec_glSelectPerfMonitorCountersAMD; glp->SetMultisamplefvAMD = exec_glSetMultisamplefvAMD; glp->ShaderBinary = exec_glShaderBinary; glp->ShaderSource = exec_glShaderSource; glp->ShaderStorageBlockBinding = exec_glShaderStorageBlockBinding; glp->StencilClearTagEXT = exec_glStencilClearTagEXT; glp->StencilFillPathInstancedNV = exec_glStencilFillPathInstancedNV; glp->StencilFillPathNV = exec_glStencilFillPathNV; glp->StencilFuncSeparate = exec_glStencilFuncSeparate; glp->StencilMaskSeparate = exec_glStencilMaskSeparate; glp->StencilOpSeparate = exec_glStencilOpSeparate; glp->StencilOpValueAMD = exec_glStencilOpValueAMD; glp->StencilStrokePathInstancedNV = exec_glStencilStrokePathInstancedNV; glp->StencilStrokePathNV = exec_glStencilStrokePathNV; glp->StringMarkerGREMEDY = exec_glStringMarkerGREMEDY; glp->SwapAPPLE = exec_glSwapAPPLE; glp->SyncTextureINTEL = exec_glSyncTextureINTEL; glp->TessellationFactorAMD = exec_glTessellationFactorAMD; glp->TessellationModeAMD = exec_glTessellationModeAMD; glp->TexBuffer = exec_glTexBuffer; glp->TexBufferARB = exec_glTexBufferARB; glp->TexBufferEXT = exec_glTexBufferEXT; glp->TexBufferRange = exec_glTexBufferRange; glp->TexCoord1bOES = exec_glTexCoord1bOES; glp->TexCoord1bvOES = exec_glTexCoord1bvOES; glp->TexCoord1xOES = exec_glTexCoord1xOES; glp->TexCoord1xvOES = exec_glTexCoord1xvOES; glp->TexCoord2bOES = exec_glTexCoord2bOES; glp->TexCoord2bvOES = exec_glTexCoord2bvOES; glp->TexCoord2xOES = exec_glTexCoord2xOES; glp->TexCoord2xvOES = exec_glTexCoord2xvOES; glp->TexCoord3bOES = exec_glTexCoord3bOES; glp->TexCoord3bvOES = exec_glTexCoord3bvOES; glp->TexCoord3xOES = exec_glTexCoord3xOES; glp->TexCoord3xvOES = exec_glTexCoord3xvOES; glp->TexCoord4bOES = exec_glTexCoord4bOES; glp->TexCoord4bvOES = exec_glTexCoord4bvOES; glp->TexCoord4xOES = exec_glTexCoord4xOES; glp->TexCoord4xvOES = exec_glTexCoord4xvOES; glp->TexCoordFormatNV = exec_glTexCoordFormatNV; glp->TexCoordP1ui = exec_glTexCoordP1ui; glp->TexCoordP1uiv = exec_glTexCoordP1uiv; glp->TexCoordP2ui = exec_glTexCoordP2ui; glp->TexCoordP2uiv = exec_glTexCoordP2uiv; glp->TexCoordP3ui = exec_glTexCoordP3ui; glp->TexCoordP3uiv = exec_glTexCoordP3uiv; glp->TexCoordP4ui = exec_glTexCoordP4ui; glp->TexCoordP4uiv = exec_glTexCoordP4uiv; glp->TexEnvxOES = exec_glTexEnvxOES; glp->TexEnvxvOES = exec_glTexEnvxvOES; glp->TexGenxOES = exec_glTexGenxOES; glp->TexGenxvOES = exec_glTexGenxvOES; glp->TexImage2DMultisample = exec_glTexImage2DMultisample; glp->TexImage2DMultisampleCoverageNV = exec_glTexImage2DMultisampleCoverageNV; glp->TexImage3DMultisample = exec_glTexImage3DMultisample; glp->TexImage3DMultisampleCoverageNV = exec_glTexImage3DMultisampleCoverageNV; glp->TexPageCommitmentARB = exec_glTexPageCommitmentARB; glp->TexParameterIiv = exec_glTexParameterIiv; glp->TexParameterIivEXT = exec_glTexParameterIivEXT; glp->TexParameterIuiv = exec_glTexParameterIuiv; glp->TexParameterIuivEXT = exec_glTexParameterIuivEXT; glp->TexParameterxOES = exec_glTexParameterxOES; glp->TexParameterxvOES = exec_glTexParameterxvOES; glp->TexRenderbufferNV = exec_glTexRenderbufferNV; glp->TexScissorFuncINTEL = exec_glTexScissorFuncINTEL; glp->TexScissorINTEL = exec_glTexScissorINTEL; glp->TexStorage1D = exec_glTexStorage1D; glp->TexStorage2D = exec_glTexStorage2D; glp->TexStorage2DMultisample = exec_glTexStorage2DMultisample; glp->TexStorage3D = exec_glTexStorage3D; glp->TexStorage3DMultisample = exec_glTexStorage3DMultisample; glp->TexStorageSparseAMD = exec_glTexStorageSparseAMD; glp->TextureBarrierNV = exec_glTextureBarrierNV; glp->TextureBufferEXT = exec_glTextureBufferEXT; glp->TextureBufferRangeEXT = exec_glTextureBufferRangeEXT; glp->TextureFogSGIX = exec_glTextureFogSGIX; glp->TextureImage1DEXT = exec_glTextureImage1DEXT; glp->TextureImage2DEXT = exec_glTextureImage2DEXT; glp->TextureImage2DMultisampleCoverageNV = exec_glTextureImage2DMultisampleCoverageNV; glp->TextureImage2DMultisampleNV = exec_glTextureImage2DMultisampleNV; glp->TextureImage3DEXT = exec_glTextureImage3DEXT; glp->TextureImage3DMultisampleCoverageNV = exec_glTextureImage3DMultisampleCoverageNV; glp->TextureImage3DMultisampleNV = exec_glTextureImage3DMultisampleNV; glp->TexturePageCommitmentEXT = exec_glTexturePageCommitmentEXT; glp->TextureParameterIivEXT = exec_glTextureParameterIivEXT; glp->TextureParameterIuivEXT = exec_glTextureParameterIuivEXT; glp->TextureParameterfEXT = exec_glTextureParameterfEXT; glp->TextureParameterfvEXT = exec_glTextureParameterfvEXT; glp->TextureParameteriEXT = exec_glTextureParameteriEXT; glp->TextureParameterivEXT = exec_glTextureParameterivEXT; glp->TextureRangeAPPLE = exec_glTextureRangeAPPLE; glp->TextureRenderbufferEXT = exec_glTextureRenderbufferEXT; glp->TextureStorage1DEXT = exec_glTextureStorage1DEXT; glp->TextureStorage2DEXT = exec_glTextureStorage2DEXT; glp->TextureStorage2DMultisampleEXT = exec_glTextureStorage2DMultisampleEXT; glp->TextureStorage3DEXT = exec_glTextureStorage3DEXT; glp->TextureStorage3DMultisampleEXT = exec_glTextureStorage3DMultisampleEXT; glp->TextureStorageSparseAMD = exec_glTextureStorageSparseAMD; glp->TextureSubImage1DEXT = exec_glTextureSubImage1DEXT; glp->TextureSubImage2DEXT = exec_glTextureSubImage2DEXT; glp->TextureSubImage3DEXT = exec_glTextureSubImage3DEXT; glp->TextureView = exec_glTextureView; glp->TransformFeedbackAttribsNV = exec_glTransformFeedbackAttribsNV; glp->TransformFeedbackStreamAttribsNV = exec_glTransformFeedbackStreamAttribsNV; glp->TransformFeedbackVaryings = exec_glTransformFeedbackVaryings; glp->TransformFeedbackVaryingsEXT = exec_glTransformFeedbackVaryingsEXT; glp->TransformFeedbackVaryingsNV = exec_glTransformFeedbackVaryingsNV; glp->TransformPathNV = exec_glTransformPathNV; glp->TranslatexOES = exec_glTranslatexOES; glp->Uniform1d = exec_glUniform1d; glp->Uniform1dv = exec_glUniform1dv; glp->Uniform1f = exec_glUniform1f; glp->Uniform1fv = exec_glUniform1fv; glp->Uniform1i = exec_glUniform1i; glp->Uniform1i64NV = exec_glUniform1i64NV; glp->Uniform1i64vNV = exec_glUniform1i64vNV; glp->Uniform1iv = exec_glUniform1iv; glp->Uniform1ui = exec_glUniform1ui; glp->Uniform1ui64NV = exec_glUniform1ui64NV; glp->Uniform1ui64vNV = exec_glUniform1ui64vNV; glp->Uniform1uiEXT = exec_glUniform1uiEXT; glp->Uniform1uiv = exec_glUniform1uiv; glp->Uniform1uivEXT = exec_glUniform1uivEXT; glp->Uniform2d = exec_glUniform2d; glp->Uniform2dv = exec_glUniform2dv; glp->Uniform2f = exec_glUniform2f; glp->Uniform2fv = exec_glUniform2fv; glp->Uniform2i = exec_glUniform2i; glp->Uniform2i64NV = exec_glUniform2i64NV; glp->Uniform2i64vNV = exec_glUniform2i64vNV; glp->Uniform2iv = exec_glUniform2iv; glp->Uniform2ui = exec_glUniform2ui; glp->Uniform2ui64NV = exec_glUniform2ui64NV; glp->Uniform2ui64vNV = exec_glUniform2ui64vNV; glp->Uniform2uiEXT = exec_glUniform2uiEXT; glp->Uniform2uiv = exec_glUniform2uiv; glp->Uniform2uivEXT = exec_glUniform2uivEXT; glp->Uniform3d = exec_glUniform3d; glp->Uniform3dv = exec_glUniform3dv; glp->Uniform3f = exec_glUniform3f; glp->Uniform3fv = exec_glUniform3fv; glp->Uniform3i = exec_glUniform3i; glp->Uniform3i64NV = exec_glUniform3i64NV; glp->Uniform3i64vNV = exec_glUniform3i64vNV; glp->Uniform3iv = exec_glUniform3iv; glp->Uniform3ui = exec_glUniform3ui; glp->Uniform3ui64NV = exec_glUniform3ui64NV; glp->Uniform3ui64vNV = exec_glUniform3ui64vNV; glp->Uniform3uiEXT = exec_glUniform3uiEXT; glp->Uniform3uiv = exec_glUniform3uiv; glp->Uniform3uivEXT = exec_glUniform3uivEXT; glp->Uniform4d = exec_glUniform4d; glp->Uniform4dv = exec_glUniform4dv; glp->Uniform4f = exec_glUniform4f; glp->Uniform4fv = exec_glUniform4fv; glp->Uniform4i = exec_glUniform4i; glp->Uniform4i64NV = exec_glUniform4i64NV; glp->Uniform4i64vNV = exec_glUniform4i64vNV; glp->Uniform4iv = exec_glUniform4iv; glp->Uniform4ui = exec_glUniform4ui; glp->Uniform4ui64NV = exec_glUniform4ui64NV; glp->Uniform4ui64vNV = exec_glUniform4ui64vNV; glp->Uniform4uiEXT = exec_glUniform4uiEXT; glp->Uniform4uiv = exec_glUniform4uiv; glp->Uniform4uivEXT = exec_glUniform4uivEXT; glp->UniformBlockBinding = exec_glUniformBlockBinding; glp->UniformBufferEXT = exec_glUniformBufferEXT; glp->UniformHandleui64ARB = exec_glUniformHandleui64ARB; glp->UniformHandleui64NV = exec_glUniformHandleui64NV; glp->UniformHandleui64vARB = exec_glUniformHandleui64vARB; glp->UniformHandleui64vNV = exec_glUniformHandleui64vNV; glp->UniformMatrix2dv = exec_glUniformMatrix2dv; glp->UniformMatrix2fv = exec_glUniformMatrix2fv; glp->UniformMatrix2x3dv = exec_glUniformMatrix2x3dv; glp->UniformMatrix2x3fv = exec_glUniformMatrix2x3fv; glp->UniformMatrix2x4dv = exec_glUniformMatrix2x4dv; glp->UniformMatrix2x4fv = exec_glUniformMatrix2x4fv; glp->UniformMatrix3dv = exec_glUniformMatrix3dv; glp->UniformMatrix3fv = exec_glUniformMatrix3fv; glp->UniformMatrix3x2dv = exec_glUniformMatrix3x2dv; glp->UniformMatrix3x2fv = exec_glUniformMatrix3x2fv; glp->UniformMatrix3x4dv = exec_glUniformMatrix3x4dv; glp->UniformMatrix3x4fv = exec_glUniformMatrix3x4fv; glp->UniformMatrix4dv = exec_glUniformMatrix4dv; glp->UniformMatrix4fv = exec_glUniformMatrix4fv; glp->UniformMatrix4x2dv = exec_glUniformMatrix4x2dv; glp->UniformMatrix4x2fv = exec_glUniformMatrix4x2fv; glp->UniformMatrix4x3dv = exec_glUniformMatrix4x3dv; glp->UniformMatrix4x3fv = exec_glUniformMatrix4x3fv; glp->UniformSubroutinesuiv = exec_glUniformSubroutinesuiv; glp->Uniformui64NV = exec_glUniformui64NV; glp->Uniformui64vNV = exec_glUniformui64vNV; glp->UnmapNamedBufferEXT = exec_glUnmapNamedBufferEXT; glp->UnmapTexture2DINTEL = exec_glUnmapTexture2DINTEL; glp->UseProgram = exec_glUseProgram; glp->UseProgramStages = exec_glUseProgramStages; glp->UseShaderProgramEXT = exec_glUseShaderProgramEXT; glp->VDPAUFiniNV = exec_glVDPAUFiniNV; glp->VDPAUGetSurfaceivNV = exec_glVDPAUGetSurfaceivNV; glp->VDPAUInitNV = exec_glVDPAUInitNV; glp->VDPAUIsSurfaceNV = exec_glVDPAUIsSurfaceNV; glp->VDPAUMapSurfacesNV = exec_glVDPAUMapSurfacesNV; glp->VDPAURegisterOutputSurfaceNV = exec_glVDPAURegisterOutputSurfaceNV; glp->VDPAURegisterVideoSurfaceNV = exec_glVDPAURegisterVideoSurfaceNV; glp->VDPAUSurfaceAccessNV = exec_glVDPAUSurfaceAccessNV; glp->VDPAUUnmapSurfacesNV = exec_glVDPAUUnmapSurfacesNV; glp->VDPAUUnregisterSurfaceNV = exec_glVDPAUUnregisterSurfaceNV; glp->ValidateProgram = exec_glValidateProgram; glp->ValidateProgramPipeline = exec_glValidateProgramPipeline; glp->Vertex2bOES = exec_glVertex2bOES; glp->Vertex2bvOES = exec_glVertex2bvOES; glp->Vertex2xOES = exec_glVertex2xOES; glp->Vertex2xvOES = exec_glVertex2xvOES; glp->Vertex3bOES = exec_glVertex3bOES; glp->Vertex3bvOES = exec_glVertex3bvOES; glp->Vertex3xOES = exec_glVertex3xOES; glp->Vertex3xvOES = exec_glVertex3xvOES; glp->Vertex4bOES = exec_glVertex4bOES; glp->Vertex4bvOES = exec_glVertex4bvOES; glp->Vertex4xOES = exec_glVertex4xOES; glp->Vertex4xvOES = exec_glVertex4xvOES; glp->VertexArrayBindVertexBufferEXT = exec_glVertexArrayBindVertexBufferEXT; glp->VertexArrayColorOffsetEXT = exec_glVertexArrayColorOffsetEXT; glp->VertexArrayEdgeFlagOffsetEXT = exec_glVertexArrayEdgeFlagOffsetEXT; glp->VertexArrayFogCoordOffsetEXT = exec_glVertexArrayFogCoordOffsetEXT; glp->VertexArrayIndexOffsetEXT = exec_glVertexArrayIndexOffsetEXT; glp->VertexArrayMultiTexCoordOffsetEXT = exec_glVertexArrayMultiTexCoordOffsetEXT; glp->VertexArrayNormalOffsetEXT = exec_glVertexArrayNormalOffsetEXT; glp->VertexArraySecondaryColorOffsetEXT = exec_glVertexArraySecondaryColorOffsetEXT; glp->VertexArrayTexCoordOffsetEXT = exec_glVertexArrayTexCoordOffsetEXT; glp->VertexArrayVertexAttribBindingEXT = exec_glVertexArrayVertexAttribBindingEXT; glp->VertexArrayVertexAttribDivisorEXT = exec_glVertexArrayVertexAttribDivisorEXT; glp->VertexArrayVertexAttribFormatEXT = exec_glVertexArrayVertexAttribFormatEXT; glp->VertexArrayVertexAttribIFormatEXT = exec_glVertexArrayVertexAttribIFormatEXT; glp->VertexArrayVertexAttribIOffsetEXT = exec_glVertexArrayVertexAttribIOffsetEXT; glp->VertexArrayVertexAttribLFormatEXT = exec_glVertexArrayVertexAttribLFormatEXT; glp->VertexArrayVertexAttribLOffsetEXT = exec_glVertexArrayVertexAttribLOffsetEXT; glp->VertexArrayVertexAttribOffsetEXT = exec_glVertexArrayVertexAttribOffsetEXT; glp->VertexArrayVertexBindingDivisorEXT = exec_glVertexArrayVertexBindingDivisorEXT; glp->VertexArrayVertexOffsetEXT = exec_glVertexArrayVertexOffsetEXT; glp->VertexAttrib1d = exec_glVertexAttrib1d; glp->VertexAttrib1dv = exec_glVertexAttrib1dv; glp->VertexAttrib1f = exec_glVertexAttrib1f; glp->VertexAttrib1fv = exec_glVertexAttrib1fv; glp->VertexAttrib1s = exec_glVertexAttrib1s; glp->VertexAttrib1sv = exec_glVertexAttrib1sv; glp->VertexAttrib2d = exec_glVertexAttrib2d; glp->VertexAttrib2dv = exec_glVertexAttrib2dv; glp->VertexAttrib2f = exec_glVertexAttrib2f; glp->VertexAttrib2fv = exec_glVertexAttrib2fv; glp->VertexAttrib2s = exec_glVertexAttrib2s; glp->VertexAttrib2sv = exec_glVertexAttrib2sv; glp->VertexAttrib3d = exec_glVertexAttrib3d; glp->VertexAttrib3dv = exec_glVertexAttrib3dv; glp->VertexAttrib3f = exec_glVertexAttrib3f; glp->VertexAttrib3fv = exec_glVertexAttrib3fv; glp->VertexAttrib3s = exec_glVertexAttrib3s; glp->VertexAttrib3sv = exec_glVertexAttrib3sv; glp->VertexAttrib4Nbv = exec_glVertexAttrib4Nbv; glp->VertexAttrib4Niv = exec_glVertexAttrib4Niv; glp->VertexAttrib4Nsv = exec_glVertexAttrib4Nsv; glp->VertexAttrib4Nub = exec_glVertexAttrib4Nub; glp->VertexAttrib4Nubv = exec_glVertexAttrib4Nubv; glp->VertexAttrib4Nuiv = exec_glVertexAttrib4Nuiv; glp->VertexAttrib4Nusv = exec_glVertexAttrib4Nusv; glp->VertexAttrib4bv = exec_glVertexAttrib4bv; glp->VertexAttrib4d = exec_glVertexAttrib4d; glp->VertexAttrib4dv = exec_glVertexAttrib4dv; glp->VertexAttrib4f = exec_glVertexAttrib4f; glp->VertexAttrib4fv = exec_glVertexAttrib4fv; glp->VertexAttrib4iv = exec_glVertexAttrib4iv; glp->VertexAttrib4s = exec_glVertexAttrib4s; glp->VertexAttrib4sv = exec_glVertexAttrib4sv; glp->VertexAttrib4ubv = exec_glVertexAttrib4ubv; glp->VertexAttrib4uiv = exec_glVertexAttrib4uiv; glp->VertexAttrib4usv = exec_glVertexAttrib4usv; glp->VertexAttribBinding = exec_glVertexAttribBinding; glp->VertexAttribDivisor = exec_glVertexAttribDivisor; glp->VertexAttribDivisorARB = exec_glVertexAttribDivisorARB; glp->VertexAttribFormat = exec_glVertexAttribFormat; glp->VertexAttribFormatNV = exec_glVertexAttribFormatNV; glp->VertexAttribI1i = exec_glVertexAttribI1i; glp->VertexAttribI1iEXT = exec_glVertexAttribI1iEXT; glp->VertexAttribI1iv = exec_glVertexAttribI1iv; glp->VertexAttribI1ivEXT = exec_glVertexAttribI1ivEXT; glp->VertexAttribI1ui = exec_glVertexAttribI1ui; glp->VertexAttribI1uiEXT = exec_glVertexAttribI1uiEXT; glp->VertexAttribI1uiv = exec_glVertexAttribI1uiv; glp->VertexAttribI1uivEXT = exec_glVertexAttribI1uivEXT; glp->VertexAttribI2i = exec_glVertexAttribI2i; glp->VertexAttribI2iEXT = exec_glVertexAttribI2iEXT; glp->VertexAttribI2iv = exec_glVertexAttribI2iv; glp->VertexAttribI2ivEXT = exec_glVertexAttribI2ivEXT; glp->VertexAttribI2ui = exec_glVertexAttribI2ui; glp->VertexAttribI2uiEXT = exec_glVertexAttribI2uiEXT; glp->VertexAttribI2uiv = exec_glVertexAttribI2uiv; glp->VertexAttribI2uivEXT = exec_glVertexAttribI2uivEXT; glp->VertexAttribI3i = exec_glVertexAttribI3i; glp->VertexAttribI3iEXT = exec_glVertexAttribI3iEXT; glp->VertexAttribI3iv = exec_glVertexAttribI3iv; glp->VertexAttribI3ivEXT = exec_glVertexAttribI3ivEXT; glp->VertexAttribI3ui = exec_glVertexAttribI3ui; glp->VertexAttribI3uiEXT = exec_glVertexAttribI3uiEXT; glp->VertexAttribI3uiv = exec_glVertexAttribI3uiv; glp->VertexAttribI3uivEXT = exec_glVertexAttribI3uivEXT; glp->VertexAttribI4bv = exec_glVertexAttribI4bv; glp->VertexAttribI4bvEXT = exec_glVertexAttribI4bvEXT; glp->VertexAttribI4i = exec_glVertexAttribI4i; glp->VertexAttribI4iEXT = exec_glVertexAttribI4iEXT; glp->VertexAttribI4iv = exec_glVertexAttribI4iv; glp->VertexAttribI4ivEXT = exec_glVertexAttribI4ivEXT; glp->VertexAttribI4sv = exec_glVertexAttribI4sv; glp->VertexAttribI4svEXT = exec_glVertexAttribI4svEXT; glp->VertexAttribI4ubv = exec_glVertexAttribI4ubv; glp->VertexAttribI4ubvEXT = exec_glVertexAttribI4ubvEXT; glp->VertexAttribI4ui = exec_glVertexAttribI4ui; glp->VertexAttribI4uiEXT = exec_glVertexAttribI4uiEXT; glp->VertexAttribI4uiv = exec_glVertexAttribI4uiv; glp->VertexAttribI4uivEXT = exec_glVertexAttribI4uivEXT; glp->VertexAttribI4usv = exec_glVertexAttribI4usv; glp->VertexAttribI4usvEXT = exec_glVertexAttribI4usvEXT; glp->VertexAttribIFormat = exec_glVertexAttribIFormat; glp->VertexAttribIFormatNV = exec_glVertexAttribIFormatNV; glp->VertexAttribIPointer = exec_glVertexAttribIPointer; glp->VertexAttribIPointerEXT = exec_glVertexAttribIPointerEXT; glp->VertexAttribL1d = exec_glVertexAttribL1d; glp->VertexAttribL1dEXT = exec_glVertexAttribL1dEXT; glp->VertexAttribL1dv = exec_glVertexAttribL1dv; glp->VertexAttribL1dvEXT = exec_glVertexAttribL1dvEXT; glp->VertexAttribL1i64NV = exec_glVertexAttribL1i64NV; glp->VertexAttribL1i64vNV = exec_glVertexAttribL1i64vNV; glp->VertexAttribL1ui64ARB = exec_glVertexAttribL1ui64ARB; glp->VertexAttribL1ui64NV = exec_glVertexAttribL1ui64NV; glp->VertexAttribL1ui64vARB = exec_glVertexAttribL1ui64vARB; glp->VertexAttribL1ui64vNV = exec_glVertexAttribL1ui64vNV; glp->VertexAttribL2d = exec_glVertexAttribL2d; glp->VertexAttribL2dEXT = exec_glVertexAttribL2dEXT; glp->VertexAttribL2dv = exec_glVertexAttribL2dv; glp->VertexAttribL2dvEXT = exec_glVertexAttribL2dvEXT; glp->VertexAttribL2i64NV = exec_glVertexAttribL2i64NV; glp->VertexAttribL2i64vNV = exec_glVertexAttribL2i64vNV; glp->VertexAttribL2ui64NV = exec_glVertexAttribL2ui64NV; glp->VertexAttribL2ui64vNV = exec_glVertexAttribL2ui64vNV; glp->VertexAttribL3d = exec_glVertexAttribL3d; glp->VertexAttribL3dEXT = exec_glVertexAttribL3dEXT; glp->VertexAttribL3dv = exec_glVertexAttribL3dv; glp->VertexAttribL3dvEXT = exec_glVertexAttribL3dvEXT; glp->VertexAttribL3i64NV = exec_glVertexAttribL3i64NV; glp->VertexAttribL3i64vNV = exec_glVertexAttribL3i64vNV; glp->VertexAttribL3ui64NV = exec_glVertexAttribL3ui64NV; glp->VertexAttribL3ui64vNV = exec_glVertexAttribL3ui64vNV; glp->VertexAttribL4d = exec_glVertexAttribL4d; glp->VertexAttribL4dEXT = exec_glVertexAttribL4dEXT; glp->VertexAttribL4dv = exec_glVertexAttribL4dv; glp->VertexAttribL4dvEXT = exec_glVertexAttribL4dvEXT; glp->VertexAttribL4i64NV = exec_glVertexAttribL4i64NV; glp->VertexAttribL4i64vNV = exec_glVertexAttribL4i64vNV; glp->VertexAttribL4ui64NV = exec_glVertexAttribL4ui64NV; glp->VertexAttribL4ui64vNV = exec_glVertexAttribL4ui64vNV; glp->VertexAttribLFormat = exec_glVertexAttribLFormat; glp->VertexAttribLFormatNV = exec_glVertexAttribLFormatNV; glp->VertexAttribLPointer = exec_glVertexAttribLPointer; glp->VertexAttribLPointerEXT = exec_glVertexAttribLPointerEXT; glp->VertexAttribP1ui = exec_glVertexAttribP1ui; glp->VertexAttribP1uiv = exec_glVertexAttribP1uiv; glp->VertexAttribP2ui = exec_glVertexAttribP2ui; glp->VertexAttribP2uiv = exec_glVertexAttribP2uiv; glp->VertexAttribP3ui = exec_glVertexAttribP3ui; glp->VertexAttribP3uiv = exec_glVertexAttribP3uiv; glp->VertexAttribP4ui = exec_glVertexAttribP4ui; glp->VertexAttribP4uiv = exec_glVertexAttribP4uiv; glp->VertexAttribParameteriAMD = exec_glVertexAttribParameteriAMD; glp->VertexAttribPointer = exec_glVertexAttribPointer; glp->VertexBindingDivisor = exec_glVertexBindingDivisor; glp->VertexFormatNV = exec_glVertexFormatNV; glp->VertexP2ui = exec_glVertexP2ui; glp->VertexP2uiv = exec_glVertexP2uiv; glp->VertexP3ui = exec_glVertexP3ui; glp->VertexP3uiv = exec_glVertexP3uiv; glp->VertexP4ui = exec_glVertexP4ui; glp->VertexP4uiv = exec_glVertexP4uiv; glp->VertexPointSizefAPPLE = exec_glVertexPointSizefAPPLE; glp->VideoCaptureNV = exec_glVideoCaptureNV; glp->VideoCaptureStreamParameterdvNV = exec_glVideoCaptureStreamParameterdvNV; glp->VideoCaptureStreamParameterfvNV = exec_glVideoCaptureStreamParameterfvNV; glp->VideoCaptureStreamParameterivNV = exec_glVideoCaptureStreamParameterivNV; glp->ViewportArrayv = exec_glViewportArrayv; glp->ViewportIndexedf = exec_glViewportIndexedf; glp->ViewportIndexedfv = exec_glViewportIndexedfv; glp->WaitSync = exec_glWaitSync; glp->WeightPathsNV = exec_glWeightPathsNV; glp->BindTextureUnit = exec_glBindTextureUnit; glp->BlendBarrierKHR = exec_glBlendBarrierKHR; glp->BlitNamedFramebuffer = exec_glBlitNamedFramebuffer; glp->BufferPageCommitmentARB = exec_glBufferPageCommitmentARB; glp->CallCommandListNV = exec_glCallCommandListNV; glp->CheckNamedFramebufferStatus = exec_glCheckNamedFramebufferStatus; glp->ClearNamedBufferData = exec_glClearNamedBufferData; glp->ClearNamedBufferSubData = exec_glClearNamedBufferSubData; glp->ClearNamedFramebufferfi = exec_glClearNamedFramebufferfi; glp->ClearNamedFramebufferfv = exec_glClearNamedFramebufferfv; glp->ClearNamedFramebufferiv = exec_glClearNamedFramebufferiv; glp->ClearNamedFramebufferuiv = exec_glClearNamedFramebufferuiv; glp->ClipControl = exec_glClipControl; glp->CommandListSegmentsNV = exec_glCommandListSegmentsNV; glp->CompileCommandListNV = exec_glCompileCommandListNV; glp->CompressedTextureSubImage1D = exec_glCompressedTextureSubImage1D; glp->CompressedTextureSubImage2D = exec_glCompressedTextureSubImage2D; glp->CompressedTextureSubImage3D = exec_glCompressedTextureSubImage3D; glp->CopyNamedBufferSubData = exec_glCopyNamedBufferSubData; glp->CopyTextureSubImage1D = exec_glCopyTextureSubImage1D; glp->CopyTextureSubImage2D = exec_glCopyTextureSubImage2D; glp->CopyTextureSubImage3D = exec_glCopyTextureSubImage3D; glp->CoverageModulationNV = exec_glCoverageModulationNV; glp->CoverageModulationTableNV = exec_glCoverageModulationTableNV; glp->CreateBuffers = exec_glCreateBuffers; glp->CreateCommandListsNV = exec_glCreateCommandListsNV; glp->CreateFramebuffers = exec_glCreateFramebuffers; glp->CreateProgramPipelines = exec_glCreateProgramPipelines; glp->CreateQueries = exec_glCreateQueries; glp->CreateRenderbuffers = exec_glCreateRenderbuffers; glp->CreateSamplers = exec_glCreateSamplers; glp->CreateStatesNV = exec_glCreateStatesNV; glp->CreateTextures = exec_glCreateTextures; glp->CreateTransformFeedbacks = exec_glCreateTransformFeedbacks; glp->CreateVertexArrays = exec_glCreateVertexArrays; glp->DeleteCommandListsNV = exec_glDeleteCommandListsNV; glp->DeleteStatesNV = exec_glDeleteStatesNV; glp->DisableVertexArrayAttrib = exec_glDisableVertexArrayAttrib; glp->DrawCommandsAddressNV = exec_glDrawCommandsAddressNV; glp->DrawCommandsNV = exec_glDrawCommandsNV; glp->DrawCommandsStatesAddressNV = exec_glDrawCommandsStatesAddressNV; glp->DrawCommandsStatesNV = exec_glDrawCommandsStatesNV; glp->EnableVertexArrayAttrib = exec_glEnableVertexArrayAttrib; glp->FlushMappedNamedBufferRange = exec_glFlushMappedNamedBufferRange; glp->FragmentCoverageColorNV = exec_glFragmentCoverageColorNV; glp->FramebufferSampleLocationsfvNV = exec_glFramebufferSampleLocationsfvNV; glp->FramebufferTextureMultiviewOVR = exec_glFramebufferTextureMultiviewOVR; glp->GenerateTextureMipmap = exec_glGenerateTextureMipmap; glp->GetCommandHeaderNV = exec_glGetCommandHeaderNV; glp->GetCompressedTextureImage = exec_glGetCompressedTextureImage; glp->GetCompressedTextureSubImage = exec_glGetCompressedTextureSubImage; glp->GetCoverageModulationTableNV = exec_glGetCoverageModulationTableNV; glp->GetGraphicsResetStatus = exec_glGetGraphicsResetStatus; glp->GetInternalformatSampleivNV = exec_glGetInternalformatSampleivNV; glp->GetNamedBufferParameteri64v = exec_glGetNamedBufferParameteri64v; glp->GetNamedBufferParameteriv = exec_glGetNamedBufferParameteriv; glp->GetNamedBufferPointerv = exec_glGetNamedBufferPointerv; glp->GetNamedBufferSubData = exec_glGetNamedBufferSubData; glp->GetNamedFramebufferAttachmentParameteriv = exec_glGetNamedFramebufferAttachmentParameteriv; glp->GetNamedFramebufferParameteriv = exec_glGetNamedFramebufferParameteriv; glp->GetNamedRenderbufferParameteriv = exec_glGetNamedRenderbufferParameteriv; glp->GetProgramResourcefvNV = exec_glGetProgramResourcefvNV; glp->GetQueryBufferObjecti64v = exec_glGetQueryBufferObjecti64v; glp->GetQueryBufferObjectiv = exec_glGetQueryBufferObjectiv; glp->GetQueryBufferObjectui64v = exec_glGetQueryBufferObjectui64v; glp->GetQueryBufferObjectuiv = exec_glGetQueryBufferObjectuiv; glp->GetStageIndexNV = exec_glGetStageIndexNV; glp->GetTextureImage = exec_glGetTextureImage; glp->GetTextureLevelParameterfv = exec_glGetTextureLevelParameterfv; glp->GetTextureLevelParameteriv = exec_glGetTextureLevelParameteriv; glp->GetTextureParameterIiv = exec_glGetTextureParameterIiv; glp->GetTextureParameterIuiv = exec_glGetTextureParameterIuiv; glp->GetTextureParameterfv = exec_glGetTextureParameterfv; glp->GetTextureParameteriv = exec_glGetTextureParameteriv; glp->GetTextureSubImage = exec_glGetTextureSubImage; glp->GetTransformFeedbacki64_v = exec_glGetTransformFeedbacki64_v; glp->GetTransformFeedbacki_v = exec_glGetTransformFeedbacki_v; glp->GetTransformFeedbackiv = exec_glGetTransformFeedbackiv; glp->GetVertexArrayIndexed64iv = exec_glGetVertexArrayIndexed64iv; glp->GetVertexArrayIndexediv = exec_glGetVertexArrayIndexediv; glp->GetVertexArrayiv = exec_glGetVertexArrayiv; glp->GetnColorTable = exec_glGetnColorTable; glp->GetnCompressedTexImage = exec_glGetnCompressedTexImage; glp->GetnConvolutionFilter = exec_glGetnConvolutionFilter; glp->GetnHistogram = exec_glGetnHistogram; glp->GetnMapdv = exec_glGetnMapdv; glp->GetnMapfv = exec_glGetnMapfv; glp->GetnMapiv = exec_glGetnMapiv; glp->GetnMinmax = exec_glGetnMinmax; glp->GetnPixelMapfv = exec_glGetnPixelMapfv; glp->GetnPixelMapuiv = exec_glGetnPixelMapuiv; glp->GetnPixelMapusv = exec_glGetnPixelMapusv; glp->GetnPolygonStipple = exec_glGetnPolygonStipple; glp->GetnSeparableFilter = exec_glGetnSeparableFilter; glp->GetnTexImage = exec_glGetnTexImage; glp->GetnUniformdv = exec_glGetnUniformdv; glp->GetnUniformfv = exec_glGetnUniformfv; glp->GetnUniformiv = exec_glGetnUniformiv; glp->GetnUniformuiv = exec_glGetnUniformuiv; glp->InvalidateNamedFramebufferData = exec_glInvalidateNamedFramebufferData; glp->InvalidateNamedFramebufferSubData = exec_glInvalidateNamedFramebufferSubData; glp->IsCommandListNV = exec_glIsCommandListNV; glp->IsStateNV = exec_glIsStateNV; glp->ListDrawCommandsStatesClientNV = exec_glListDrawCommandsStatesClientNV; glp->MapNamedBuffer = exec_glMapNamedBuffer; glp->MapNamedBufferRange = exec_glMapNamedBufferRange; glp->MatrixLoad3x2fNV = exec_glMatrixLoad3x2fNV; glp->MatrixLoad3x3fNV = exec_glMatrixLoad3x3fNV; glp->MatrixLoadTranspose3x3fNV = exec_glMatrixLoadTranspose3x3fNV; glp->MatrixMult3x2fNV = exec_glMatrixMult3x2fNV; glp->MatrixMult3x3fNV = exec_glMatrixMult3x3fNV; glp->MatrixMultTranspose3x3fNV = exec_glMatrixMultTranspose3x3fNV; glp->MemoryBarrierByRegion = exec_glMemoryBarrierByRegion; glp->MultiDrawArraysIndirectBindlessCountNV = exec_glMultiDrawArraysIndirectBindlessCountNV; glp->MultiDrawElementsIndirectBindlessCountNV = exec_glMultiDrawElementsIndirectBindlessCountNV; glp->NamedBufferData = exec_glNamedBufferData; glp->NamedBufferPageCommitmentARB = exec_glNamedBufferPageCommitmentARB; glp->NamedBufferPageCommitmentEXT = exec_glNamedBufferPageCommitmentEXT; glp->NamedBufferStorage = exec_glNamedBufferStorage; glp->NamedBufferSubData = exec_glNamedBufferSubData; glp->NamedFramebufferDrawBuffer = exec_glNamedFramebufferDrawBuffer; glp->NamedFramebufferDrawBuffers = exec_glNamedFramebufferDrawBuffers; glp->NamedFramebufferParameteri = exec_glNamedFramebufferParameteri; glp->NamedFramebufferReadBuffer = exec_glNamedFramebufferReadBuffer; glp->NamedFramebufferRenderbuffer = exec_glNamedFramebufferRenderbuffer; glp->NamedFramebufferSampleLocationsfvNV = exec_glNamedFramebufferSampleLocationsfvNV; glp->NamedFramebufferTexture = exec_glNamedFramebufferTexture; glp->NamedFramebufferTextureLayer = exec_glNamedFramebufferTextureLayer; glp->NamedRenderbufferStorage = exec_glNamedRenderbufferStorage; glp->NamedRenderbufferStorageMultisample = exec_glNamedRenderbufferStorageMultisample; glp->PathGlyphIndexArrayNV = exec_glPathGlyphIndexArrayNV; glp->PathGlyphIndexRangeNV = exec_glPathGlyphIndexRangeNV; glp->PathMemoryGlyphIndexArrayNV = exec_glPathMemoryGlyphIndexArrayNV; glp->PolygonOffsetClampEXT = exec_glPolygonOffsetClampEXT; glp->ProgramPathFragmentInputGenNV = exec_glProgramPathFragmentInputGenNV; glp->RasterSamplesEXT = exec_glRasterSamplesEXT; glp->ReadnPixels = exec_glReadnPixels; glp->ResolveDepthValuesNV = exec_glResolveDepthValuesNV; glp->StateCaptureNV = exec_glStateCaptureNV; glp->StencilThenCoverFillPathInstancedNV = exec_glStencilThenCoverFillPathInstancedNV; glp->StencilThenCoverFillPathNV = exec_glStencilThenCoverFillPathNV; glp->StencilThenCoverStrokePathInstancedNV = exec_glStencilThenCoverStrokePathInstancedNV; glp->StencilThenCoverStrokePathNV = exec_glStencilThenCoverStrokePathNV; glp->SubpixelPrecisionBiasNV = exec_glSubpixelPrecisionBiasNV; glp->TextureBarrier = exec_glTextureBarrier; glp->TextureBuffer = exec_glTextureBuffer; glp->TextureBufferRange = exec_glTextureBufferRange; glp->TextureParameterIiv = exec_glTextureParameterIiv; glp->TextureParameterIuiv = exec_glTextureParameterIuiv; glp->TextureParameterf = exec_glTextureParameterf; glp->TextureParameterfv = exec_glTextureParameterfv; glp->TextureParameteri = exec_glTextureParameteri; glp->TextureParameteriv = exec_glTextureParameteriv; glp->TextureStorage1D = exec_glTextureStorage1D; glp->TextureStorage2D = exec_glTextureStorage2D; glp->TextureStorage2DMultisample = exec_glTextureStorage2DMultisample; glp->TextureStorage3D = exec_glTextureStorage3D; glp->TextureStorage3DMultisample = exec_glTextureStorage3DMultisample; glp->TextureSubImage1D = exec_glTextureSubImage1D; glp->TextureSubImage2D = exec_glTextureSubImage2D; glp->TextureSubImage3D = exec_glTextureSubImage3D; glp->TransformFeedbackBufferBase = exec_glTransformFeedbackBufferBase; glp->TransformFeedbackBufferRange = exec_glTransformFeedbackBufferRange; glp->UnmapNamedBuffer = exec_glUnmapNamedBuffer; glp->VertexArrayAttribBinding = exec_glVertexArrayAttribBinding; glp->VertexArrayAttribFormat = exec_glVertexArrayAttribFormat; glp->VertexArrayAttribIFormat = exec_glVertexArrayAttribIFormat; glp->VertexArrayAttribLFormat = exec_glVertexArrayAttribLFormat; glp->VertexArrayBindingDivisor = exec_glVertexArrayBindingDivisor; glp->VertexArrayElementBuffer = exec_glVertexArrayElementBuffer; glp->VertexArrayVertexBuffer = exec_glVertexArrayVertexBuffer; glp->VertexArrayVertexBuffers = exec_glVertexArrayVertexBuffers; glp->OSMesaCreateContextAttribs = exec_OSMesaCreateContextAttribs; glp->SpecializeShader = exec_glSpecializeShader; glp->SpecializeShaderARB = exec_glSpecializeShaderARB; glp->MultiDrawArraysIndirectCount = exec_glMultiDrawArraysIndirectCount; glp->MultiDrawElementsIndirectCount = exec_glMultiDrawElementsIndirectCount; glp->PolygonOffsetClamp = exec_glPolygonOffsetClamp; glp->PrimitiveBoundingBoxARB = exec_glPrimitiveBoundingBoxARB; glp->Uniform1i64ARB = exec_glUniform1i64ARB; glp->Uniform2i64ARB = exec_glUniform2i64ARB; glp->Uniform3i64ARB = exec_glUniform3i64ARB; glp->Uniform4i64ARB = exec_glUniform4i64ARB; glp->Uniform1i64vARB = exec_glUniform1i64vARB; glp->Uniform2i64vARB = exec_glUniform2i64vARB; glp->Uniform3i64vARB = exec_glUniform3i64vARB; glp->Uniform4i64vARB = exec_glUniform4i64vARB; glp->Uniform1ui64ARB = exec_glUniform1ui64ARB; glp->Uniform2ui64ARB = exec_glUniform2ui64ARB; glp->Uniform3ui64ARB = exec_glUniform3ui64ARB; glp->Uniform4ui64ARB = exec_glUniform4ui64ARB; glp->Uniform1ui64vARB = exec_glUniform1ui64vARB; glp->Uniform2ui64vARB = exec_glUniform2ui64vARB; glp->Uniform3ui64vARB = exec_glUniform3ui64vARB; glp->Uniform4ui64vARB = exec_glUniform4ui64vARB; glp->GetUniformi64vARB = exec_glGetUniformi64vARB; glp->GetUniformui64vARB = exec_glGetUniformui64vARB; glp->GetnUniformi64vARB = exec_glGetnUniformi64vARB; glp->GetnUniformui64vARB = exec_glGetnUniformui64vARB; glp->ProgramUniform1i64ARB = exec_glProgramUniform1i64ARB; glp->ProgramUniform2i64ARB = exec_glProgramUniform2i64ARB; glp->ProgramUniform3i64ARB = exec_glProgramUniform3i64ARB; glp->ProgramUniform4i64ARB = exec_glProgramUniform4i64ARB; glp->ProgramUniform1i64vARB = exec_glProgramUniform1i64vARB; glp->ProgramUniform2i64vARB = exec_glProgramUniform2i64vARB; glp->ProgramUniform3i64vARB = exec_glProgramUniform3i64vARB; glp->ProgramUniform4i64vARB = exec_glProgramUniform4i64vARB; glp->ProgramUniform1ui64ARB = exec_glProgramUniform1ui64ARB; glp->ProgramUniform2ui64ARB = exec_glProgramUniform2ui64ARB; glp->ProgramUniform3ui64ARB = exec_glProgramUniform3ui64ARB; glp->ProgramUniform4ui64ARB = exec_glProgramUniform4ui64ARB; glp->ProgramUniform1ui64vARB = exec_glProgramUniform1ui64vARB; glp->ProgramUniform2ui64vARB = exec_glProgramUniform2ui64vARB; glp->ProgramUniform3ui64vARB = exec_glProgramUniform3ui64vARB; glp->ProgramUniform4ui64vARB = exec_glProgramUniform4ui64vARB; glp->MaxShaderCompilerThreadsARB = exec_glMaxShaderCompilerThreadsARB; glp->FramebufferSampleLocationsfvARB = exec_glFramebufferSampleLocationsfvARB; glp->NamedFramebufferSampleLocationsfvARB = exec_glNamedFramebufferSampleLocationsfvARB; glp->EvaluateDepthValuesARB = exec_glEvaluateDepthValuesARB; glp->MaxShaderCompilerThreadsKHR = exec_glMaxShaderCompilerThreadsKHR; glp->BufferStorageExternalEXT = exec_glBufferStorageExternalEXT; glp->NamedBufferStorageExternalEXT = exec_glNamedBufferStorageExternalEXT; glp->GetUnsignedBytevEXT = exec_glGetUnsignedBytevEXT; glp->GetUnsignedBytei_vEXT = exec_glGetUnsignedBytei_vEXT; glp->DeleteMemoryObjectsEXT = exec_glDeleteMemoryObjectsEXT; glp->IsMemoryObjectEXT = exec_glIsMemoryObjectEXT; glp->CreateMemoryObjectsEXT = exec_glCreateMemoryObjectsEXT; glp->MemoryObjectParameterivEXT = exec_glMemoryObjectParameterivEXT; glp->GetMemoryObjectParameterivEXT = exec_glGetMemoryObjectParameterivEXT; glp->TexStorageMem2DEXT = exec_glTexStorageMem2DEXT; glp->TexStorageMem2DMultisampleEXT = exec_glTexStorageMem2DMultisampleEXT; glp->TexStorageMem3DEXT = exec_glTexStorageMem3DEXT; glp->TexStorageMem3DMultisampleEXT = exec_glTexStorageMem3DMultisampleEXT; glp->BufferStorageMemEXT = exec_glBufferStorageMemEXT; glp->TextureStorageMem2DEXT = exec_glTextureStorageMem2DEXT; glp->TextureStorageMem2DMultisampleEXT = exec_glTextureStorageMem2DMultisampleEXT; glp->TextureStorageMem3DEXT = exec_glTextureStorageMem3DEXT; glp->TextureStorageMem3DMultisampleEXT = exec_glTextureStorageMem3DMultisampleEXT; glp->NamedBufferStorageMemEXT = exec_glNamedBufferStorageMemEXT; glp->TexStorageMem1DEXT = exec_glTexStorageMem1DEXT; glp->TextureStorageMem1DEXT = exec_glTextureStorageMem1DEXT; glp->ImportMemoryFdEXT = exec_glImportMemoryFdEXT; glp->ImportMemoryWin32HandleEXT = exec_glImportMemoryWin32HandleEXT; glp->ImportMemoryWin32NameEXT = exec_glImportMemoryWin32NameEXT; glp->GenSemaphoresEXT = exec_glGenSemaphoresEXT; glp->DeleteSemaphoresEXT = exec_glDeleteSemaphoresEXT; glp->IsSemaphoreEXT = exec_glIsSemaphoreEXT; glp->SemaphoreParameterui64vEXT = exec_glSemaphoreParameterui64vEXT; glp->GetSemaphoreParameterui64vEXT = exec_glGetSemaphoreParameterui64vEXT; glp->WaitSemaphoreEXT = exec_glWaitSemaphoreEXT; glp->SignalSemaphoreEXT = exec_glSignalSemaphoreEXT; glp->ImportSemaphoreFdEXT = exec_glImportSemaphoreFdEXT; glp->ImportSemaphoreWin32HandleEXT = exec_glImportSemaphoreWin32HandleEXT; glp->ImportSemaphoreWin32NameEXT = exec_glImportSemaphoreWin32NameEXT; glp->AcquireKeyedMutexWin32EXT = exec_glAcquireKeyedMutexWin32EXT; glp->ReleaseKeyedMutexWin32EXT = exec_glReleaseKeyedMutexWin32EXT; glp->LGPUNamedBufferSubDataNVX = exec_glLGPUNamedBufferSubDataNVX; glp->LGPUCopyImageSubDataNVX = exec_glLGPUCopyImageSubDataNVX; glp->LGPUInterlockNVX = exec_glLGPUInterlockNVX; glp->AlphaToCoverageDitherControlNV = exec_glAlphaToCoverageDitherControlNV; glp->DrawVkImageNV = exec_glDrawVkImageNV; glp->GetVkProcAddrNV = exec_glGetVkProcAddrNV; glp->WaitVkSemaphoreNV = exec_glWaitVkSemaphoreNV; glp->SignalVkSemaphoreNV = exec_glSignalVkSemaphoreNV; glp->SignalVkFenceNV = exec_glSignalVkFenceNV; glp->RenderGpuMaskNV = exec_glRenderGpuMaskNV; glp->MulticastBufferSubDataNV = exec_glMulticastBufferSubDataNV; glp->MulticastCopyBufferSubDataNV = exec_glMulticastCopyBufferSubDataNV; glp->MulticastCopyImageSubDataNV = exec_glMulticastCopyImageSubDataNV; glp->MulticastBlitFramebufferNV = exec_glMulticastBlitFramebufferNV; glp->MulticastFramebufferSampleLocationsfvNV = exec_glMulticastFramebufferSampleLocationsfvNV; glp->MulticastBarrierNV = exec_glMulticastBarrierNV; glp->MulticastWaitSyncNV = exec_glMulticastWaitSyncNV; glp->MulticastGetQueryObjectivNV = exec_glMulticastGetQueryObjectivNV; glp->MulticastGetQueryObjectuivNV = exec_glMulticastGetQueryObjectuivNV; glp->MulticastGetQueryObjecti64vNV = exec_glMulticastGetQueryObjecti64vNV; glp->MulticastGetQueryObjectui64vNV = exec_glMulticastGetQueryObjectui64vNV; glp->QueryResourceNV = exec_glQueryResourceNV; glp->GenQueryResourceTagNV = exec_glGenQueryResourceTagNV; glp->DeleteQueryResourceTagNV = exec_glDeleteQueryResourceTagNV; glp->QueryResourceTagNV = exec_glQueryResourceTagNV; glp->FramebufferSamplePositionsfvAMD = exec_glFramebufferSamplePositionsfvAMD; glp->NamedFramebufferSamplePositionsfvAMD = exec_glNamedFramebufferSamplePositionsfvAMD; glp->GetFramebufferParameterfvAMD = exec_glGetFramebufferParameterfvAMD; glp->GetNamedFramebufferParameterfvAMD = exec_glGetNamedFramebufferParameterfvAMD; glp->WindowRectanglesEXT = exec_glWindowRectanglesEXT; glp->ApplyFramebufferAttachmentCMAAINTEL = exec_glApplyFramebufferAttachmentCMAAINTEL; glp->ViewportSwizzleNV = exec_glViewportSwizzleNV; glp->ViewportPositionWScaleNV = exec_glViewportPositionWScaleNV; glp->ConservativeRasterParameterfNV = exec_glConservativeRasterParameterfNV; glp->ConservativeRasterParameteriNV = exec_glConservativeRasterParameteriNV; gl.__numfuncs = 3034; gl.__old_OSMesaGetProcAddress = gl.OSMesaGetProcAddress; gl.OSMesaGetProcAddress = real_OSMesaGetProcAddress; } struct gl_public *slb_load_osmesa(const char *path) { long ret; size_t len; struct gl_public *pub = NULL; /* * Slbopen() checks the name of the file with the * compiled-in library name, so there is no way * to pass an alternative filename here */ ret = Slbopen("osmesa.slb", path, 4 /* ARANFOSMESA_NFAPI_VERSION */, &gl_slb, &gl_exec); if (ret >= 0) { long __CDECL (*exec)(SLB_HANDLE, long, long, void *) = (long __CDECL (*)(SLB_HANDLE, long, long, void *))gl_exec; len = (*exec)(gl_slb, 0, SLB_NARGS(1), NULL); pub = gl_pub = (struct gl_public *)calloc(1, len); if (pub) { pub->m_alloc = malloc; pub->m_free = free; pub->libhandle = gl_slb; pub->libexec = gl_exec; (*exec)(gl_slb, 0, SLB_NARGS(1), pub); slb_init_osmesa(); } } return pub; } void slb_unload_osmesa(struct gl_public *pub) { if (pub != NULL) { if (pub->libhandle != NULL) { Slbclose(pub->libhandle); gl_slb = 0; } pub->m_free(pub); } } #ifdef TEST #include #include int main(void) { struct gl_public *pub; OSMESAproc p; OSMesaContext ctx; void *buffer; int width = 32; int height = 32; pub = slb_load_osmesa(NULL); if (pub == NULL) { fprintf(stderr, "osmesa.slb not found\n"); return 1; } ctx = gl.OSMesaCreateContextExt(OSMESA_RGB, 16, 0, 0, NULL); if (ctx == NULL) { fprintf(stderr, "can't create context\n"); return 1; } buffer = malloc(width * height * 4); gl.OSMesaMakeCurrent(ctx, buffer, OSMESA_RGB, width, height); printf("GL_RENDERER = %s\n", (const char *) gl.GetString(GL_RENDERER)); printf("GL_VERSION = %s\n", (const char *) gl.GetString(GL_VERSION)); printf("GL_VENDOR = %s\n", (const char *) gl.GetString(GL_VENDOR)); printf("GL_EXTENSIONS = %s\n", (const char *) gl.GetString(GL_EXTENSIONS)); p = gl.OSMesaGetProcAddress("OSMesaColorClamp"); printf("OSMesaColorClamp : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaCreateContext"); printf("OSMesaCreateContext : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaCreateContextAttribs"); printf("OSMesaCreateContextAttribs : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaCreateContextExt"); printf("OSMesaCreateContextExt : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaCreateLDG"); printf("OSMesaCreateLDG : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaDestroyContext"); printf("OSMesaDestroyContext : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaDestroyLDG"); printf("OSMesaDestroyLDG : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaGetColorBuffer"); printf("OSMesaGetColorBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaGetCurrentContext"); printf("OSMesaGetCurrentContext : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaGetDepthBuffer"); printf("OSMesaGetDepthBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaGetIntegerv"); printf("OSMesaGetIntegerv : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaGetProcAddress"); printf("OSMesaGetProcAddress : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaMakeCurrent"); printf("OSMesaMakeCurrent : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaPixelStore"); printf("OSMesaPixelStore : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaPostprocess"); printf("OSMesaPostprocess : %p\n", p); p = gl.OSMesaGetProcAddress("exception_error"); printf("exception_error : %p\n", p); p = gl.OSMesaGetProcAddress("glAccum"); printf("glAccum : %p\n", p); p = gl.OSMesaGetProcAddress("glAccumxOES"); printf("glAccumxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glAcquireKeyedMutexWin32EXT"); printf("glAcquireKeyedMutexWin32EXT : %p\n", p); p = gl.OSMesaGetProcAddress("glActiveProgramEXT"); printf("glActiveProgramEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glActiveShaderProgram"); printf("glActiveShaderProgram : %p\n", p); p = gl.OSMesaGetProcAddress("glActiveStencilFaceEXT"); printf("glActiveStencilFaceEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glActiveTexture"); printf("glActiveTexture : %p\n", p); p = gl.OSMesaGetProcAddress("glActiveTextureARB"); printf("glActiveTextureARB : %p\n", p); p = gl.OSMesaGetProcAddress("glActiveVaryingNV"); printf("glActiveVaryingNV : %p\n", p); p = gl.OSMesaGetProcAddress("glAddSwapHintRectWIN"); printf("glAddSwapHintRectWIN : %p\n", p); p = gl.OSMesaGetProcAddress("glAlphaFragmentOp1ATI"); printf("glAlphaFragmentOp1ATI : %p\n", p); p = gl.OSMesaGetProcAddress("glAlphaFragmentOp2ATI"); printf("glAlphaFragmentOp2ATI : %p\n", p); p = gl.OSMesaGetProcAddress("glAlphaFragmentOp3ATI"); printf("glAlphaFragmentOp3ATI : %p\n", p); p = gl.OSMesaGetProcAddress("glAlphaFunc"); printf("glAlphaFunc : %p\n", p); p = gl.OSMesaGetProcAddress("glAlphaFuncxOES"); printf("glAlphaFuncxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glAlphaToCoverageDitherControlNV"); printf("glAlphaToCoverageDitherControlNV: %p\n", p); p = gl.OSMesaGetProcAddress("glApplyFramebufferAttachmentCMAAINTEL"); printf("glApplyFramebufferAttachmentCMAAINTEL: %p\n", p); p = gl.OSMesaGetProcAddress("glApplyTextureEXT"); printf("glApplyTextureEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glAreProgramsResidentNV"); printf("glAreProgramsResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glAreTexturesResident"); printf("glAreTexturesResident : %p\n", p); p = gl.OSMesaGetProcAddress("glAreTexturesResidentEXT"); printf("glAreTexturesResidentEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glArrayElement"); printf("glArrayElement : %p\n", p); p = gl.OSMesaGetProcAddress("glArrayElementEXT"); printf("glArrayElementEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glArrayObjectATI"); printf("glArrayObjectATI : %p\n", p); p = gl.OSMesaGetProcAddress("glAsyncMarkerSGIX"); printf("glAsyncMarkerSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glAttachObjectARB"); printf("glAttachObjectARB : %p\n", p); p = gl.OSMesaGetProcAddress("glAttachShader"); printf("glAttachShader : %p\n", p); p = gl.OSMesaGetProcAddress("glBegin"); printf("glBegin : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginConditionalRender"); printf("glBeginConditionalRender : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginConditionalRenderNV"); printf("glBeginConditionalRenderNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginConditionalRenderNVX"); printf("glBeginConditionalRenderNVX : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginFragmentShaderATI"); printf("glBeginFragmentShaderATI : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginOcclusionQueryNV"); printf("glBeginOcclusionQueryNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginPerfMonitorAMD"); printf("glBeginPerfMonitorAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginPerfQueryINTEL"); printf("glBeginPerfQueryINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginQuery"); printf("glBeginQuery : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginQueryARB"); printf("glBeginQueryARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginQueryIndexed"); printf("glBeginQueryIndexed : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginTransformFeedback"); printf("glBeginTransformFeedback : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginTransformFeedbackEXT"); printf("glBeginTransformFeedbackEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginTransformFeedbackNV"); printf("glBeginTransformFeedbackNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginVertexShaderEXT"); printf("glBeginVertexShaderEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginVideoCaptureNV"); printf("glBeginVideoCaptureNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBindAttribLocation"); printf("glBindAttribLocation : %p\n", p); p = gl.OSMesaGetProcAddress("glBindAttribLocationARB"); printf("glBindAttribLocationARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBuffer"); printf("glBindBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferARB"); printf("glBindBufferARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferBase"); printf("glBindBufferBase : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferBaseEXT"); printf("glBindBufferBaseEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferBaseNV"); printf("glBindBufferBaseNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferOffsetEXT"); printf("glBindBufferOffsetEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferOffsetNV"); printf("glBindBufferOffsetNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferRange"); printf("glBindBufferRange : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferRangeEXT"); printf("glBindBufferRangeEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferRangeNV"); printf("glBindBufferRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBuffersBase"); printf("glBindBuffersBase : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBuffersRange"); printf("glBindBuffersRange : %p\n", p); p = gl.OSMesaGetProcAddress("glBindFragDataLocation"); printf("glBindFragDataLocation : %p\n", p); p = gl.OSMesaGetProcAddress("glBindFragDataLocationEXT"); printf("glBindFragDataLocationEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindFragDataLocationIndexed"); printf("glBindFragDataLocationIndexed : %p\n", p); p = gl.OSMesaGetProcAddress("glBindFragmentShaderATI"); printf("glBindFragmentShaderATI : %p\n", p); p = gl.OSMesaGetProcAddress("glBindFramebuffer"); printf("glBindFramebuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glBindFramebufferEXT"); printf("glBindFramebufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindImageTexture"); printf("glBindImageTexture : %p\n", p); p = gl.OSMesaGetProcAddress("glBindImageTextureEXT"); printf("glBindImageTextureEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindImageTextures"); printf("glBindImageTextures : %p\n", p); p = gl.OSMesaGetProcAddress("glBindLightParameterEXT"); printf("glBindLightParameterEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindMaterialParameterEXT"); printf("glBindMaterialParameterEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindMultiTextureEXT"); printf("glBindMultiTextureEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindParameterEXT"); printf("glBindParameterEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindProgramARB"); printf("glBindProgramARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBindProgramNV"); printf("glBindProgramNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBindProgramPipeline"); printf("glBindProgramPipeline : %p\n", p); p = gl.OSMesaGetProcAddress("glBindRenderbuffer"); printf("glBindRenderbuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glBindRenderbufferEXT"); printf("glBindRenderbufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindSampler"); printf("glBindSampler : %p\n", p); p = gl.OSMesaGetProcAddress("glBindSamplers"); printf("glBindSamplers : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTexGenParameterEXT"); printf("glBindTexGenParameterEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTexture"); printf("glBindTexture : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTextureEXT"); printf("glBindTextureEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTextureUnit"); printf("glBindTextureUnit : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTextureUnitParameterEXT"); printf("glBindTextureUnitParameterEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTextures"); printf("glBindTextures : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTransformFeedback"); printf("glBindTransformFeedback : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTransformFeedbackNV"); printf("glBindTransformFeedbackNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBindVertexArray"); printf("glBindVertexArray : %p\n", p); p = gl.OSMesaGetProcAddress("glBindVertexArrayAPPLE"); printf("glBindVertexArrayAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glBindVertexBuffer"); printf("glBindVertexBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glBindVertexBuffers"); printf("glBindVertexBuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glBindVertexShaderEXT"); printf("glBindVertexShaderEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindVideoCaptureStreamBufferNV"); printf("glBindVideoCaptureStreamBufferNV: %p\n", p); p = gl.OSMesaGetProcAddress("glBindVideoCaptureStreamTextureNV"); printf("glBindVideoCaptureStreamTextureNV: %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3bEXT"); printf("glBinormal3bEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3bvEXT"); printf("glBinormal3bvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3dEXT"); printf("glBinormal3dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3dvEXT"); printf("glBinormal3dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3fEXT"); printf("glBinormal3fEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3fvEXT"); printf("glBinormal3fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3iEXT"); printf("glBinormal3iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3ivEXT"); printf("glBinormal3ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3sEXT"); printf("glBinormal3sEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3svEXT"); printf("glBinormal3svEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormalPointerEXT"); printf("glBinormalPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBitmap"); printf("glBitmap : %p\n", p); p = gl.OSMesaGetProcAddress("glBitmapxOES"); printf("glBitmapxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendBarrierKHR"); printf("glBlendBarrierKHR : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendBarrierNV"); printf("glBlendBarrierNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendColor"); printf("glBlendColor : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendColorEXT"); printf("glBlendColorEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendColorxOES"); printf("glBlendColorxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquation"); printf("glBlendEquation : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationEXT"); printf("glBlendEquationEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationIndexedAMD"); printf("glBlendEquationIndexedAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationSeparate"); printf("glBlendEquationSeparate : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationSeparateATI"); printf("glBlendEquationSeparateATI : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationSeparateEXT"); printf("glBlendEquationSeparateEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationSeparateIndexedAMD"); printf("glBlendEquationSeparateIndexedAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationSeparatei"); printf("glBlendEquationSeparatei : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationSeparateiARB"); printf("glBlendEquationSeparateiARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationi"); printf("glBlendEquationi : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationiARB"); printf("glBlendEquationiARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFunc"); printf("glBlendFunc : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFuncIndexedAMD"); printf("glBlendFuncIndexedAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFuncSeparate"); printf("glBlendFuncSeparate : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFuncSeparateEXT"); printf("glBlendFuncSeparateEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFuncSeparateINGR"); printf("glBlendFuncSeparateINGR : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFuncSeparateIndexedAMD"); printf("glBlendFuncSeparateIndexedAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFuncSeparatei"); printf("glBlendFuncSeparatei : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFuncSeparateiARB"); printf("glBlendFuncSeparateiARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFunci"); printf("glBlendFunci : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFunciARB"); printf("glBlendFunciARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendParameteriNV"); printf("glBlendParameteriNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBlitFramebuffer"); printf("glBlitFramebuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glBlitFramebufferEXT"); printf("glBlitFramebufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBlitNamedFramebuffer"); printf("glBlitNamedFramebuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferAddressRangeNV"); printf("glBufferAddressRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferData"); printf("glBufferData : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferDataARB"); printf("glBufferDataARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferPageCommitmentARB"); printf("glBufferPageCommitmentARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferParameteriAPPLE"); printf("glBufferParameteriAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferStorage"); printf("glBufferStorage : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferStorageExternalEXT"); printf("glBufferStorageExternalEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferStorageMemEXT"); printf("glBufferStorageMemEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferSubData"); printf("glBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferSubDataARB"); printf("glBufferSubDataARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCallCommandListNV"); printf("glCallCommandListNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCallList"); printf("glCallList : %p\n", p); p = gl.OSMesaGetProcAddress("glCallLists"); printf("glCallLists : %p\n", p); p = gl.OSMesaGetProcAddress("glCheckFramebufferStatus"); printf("glCheckFramebufferStatus : %p\n", p); p = gl.OSMesaGetProcAddress("glCheckFramebufferStatusEXT"); printf("glCheckFramebufferStatusEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCheckNamedFramebufferStatus"); printf("glCheckNamedFramebufferStatus : %p\n", p); p = gl.OSMesaGetProcAddress("glCheckNamedFramebufferStatusEXT"); printf("glCheckNamedFramebufferStatusEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glClampColor"); printf("glClampColor : %p\n", p); p = gl.OSMesaGetProcAddress("glClampColorARB"); printf("glClampColorARB : %p\n", p); p = gl.OSMesaGetProcAddress("glClear"); printf("glClear : %p\n", p); p = gl.OSMesaGetProcAddress("glClearAccum"); printf("glClearAccum : %p\n", p); p = gl.OSMesaGetProcAddress("glClearAccumxOES"); printf("glClearAccumxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glClearBufferData"); printf("glClearBufferData : %p\n", p); p = gl.OSMesaGetProcAddress("glClearBufferSubData"); printf("glClearBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glClearBufferfi"); printf("glClearBufferfi : %p\n", p); p = gl.OSMesaGetProcAddress("glClearBufferfv"); printf("glClearBufferfv : %p\n", p); p = gl.OSMesaGetProcAddress("glClearBufferiv"); printf("glClearBufferiv : %p\n", p); p = gl.OSMesaGetProcAddress("glClearBufferuiv"); printf("glClearBufferuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glClearColor"); printf("glClearColor : %p\n", p); p = gl.OSMesaGetProcAddress("glClearColorIiEXT"); printf("glClearColorIiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glClearColorIuiEXT"); printf("glClearColorIuiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glClearColorxOES"); printf("glClearColorxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glClearDebugLogMESA"); printf("glClearDebugLogMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glClearDepth"); printf("glClearDepth : %p\n", p); p = gl.OSMesaGetProcAddress("glClearDepthdNV"); printf("glClearDepthdNV : %p\n", p); p = gl.OSMesaGetProcAddress("glClearDepthf"); printf("glClearDepthf : %p\n", p); p = gl.OSMesaGetProcAddress("glClearDepthfOES"); printf("glClearDepthfOES : %p\n", p); p = gl.OSMesaGetProcAddress("glClearDepthxOES"); printf("glClearDepthxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glClearIndex"); printf("glClearIndex : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedBufferData"); printf("glClearNamedBufferData : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedBufferDataEXT"); printf("glClearNamedBufferDataEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedBufferSubData"); printf("glClearNamedBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedBufferSubDataEXT"); printf("glClearNamedBufferSubDataEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedFramebufferfi"); printf("glClearNamedFramebufferfi : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedFramebufferfv"); printf("glClearNamedFramebufferfv : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedFramebufferiv"); printf("glClearNamedFramebufferiv : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedFramebufferuiv"); printf("glClearNamedFramebufferuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glClearStencil"); printf("glClearStencil : %p\n", p); p = gl.OSMesaGetProcAddress("glClearTexImage"); printf("glClearTexImage : %p\n", p); p = gl.OSMesaGetProcAddress("glClearTexSubImage"); printf("glClearTexSubImage : %p\n", p); p = gl.OSMesaGetProcAddress("glClientActiveTexture"); printf("glClientActiveTexture : %p\n", p); p = gl.OSMesaGetProcAddress("glClientActiveTextureARB"); printf("glClientActiveTextureARB : %p\n", p); p = gl.OSMesaGetProcAddress("glClientActiveVertexStreamATI"); printf("glClientActiveVertexStreamATI : %p\n", p); p = gl.OSMesaGetProcAddress("glClientAttribDefaultEXT"); printf("glClientAttribDefaultEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glClientWaitSync"); printf("glClientWaitSync : %p\n", p); p = gl.OSMesaGetProcAddress("glClipControl"); printf("glClipControl : %p\n", p); p = gl.OSMesaGetProcAddress("glClipPlane"); printf("glClipPlane : %p\n", p); p = gl.OSMesaGetProcAddress("glClipPlanefOES"); printf("glClipPlanefOES : %p\n", p); p = gl.OSMesaGetProcAddress("glClipPlanexOES"); printf("glClipPlanexOES : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3b"); printf("glColor3b : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3bv"); printf("glColor3bv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3d"); printf("glColor3d : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3dv"); printf("glColor3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3f"); printf("glColor3f : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3fVertex3fSUN"); printf("glColor3fVertex3fSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3fVertex3fvSUN"); printf("glColor3fVertex3fvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3fv"); printf("glColor3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3hNV"); printf("glColor3hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3hvNV"); printf("glColor3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3i"); printf("glColor3i : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3iv"); printf("glColor3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3s"); printf("glColor3s : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3sv"); printf("glColor3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3ub"); printf("glColor3ub : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3ubv"); printf("glColor3ubv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3ui"); printf("glColor3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3uiv"); printf("glColor3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3us"); printf("glColor3us : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3usv"); printf("glColor3usv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3xOES"); printf("glColor3xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3xvOES"); printf("glColor3xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4b"); printf("glColor4b : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4bv"); printf("glColor4bv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4d"); printf("glColor4d : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4dv"); printf("glColor4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4f"); printf("glColor4f : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4fNormal3fVertex3fSUN"); printf("glColor4fNormal3fVertex3fSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4fNormal3fVertex3fvSUN"); printf("glColor4fNormal3fVertex3fvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4fv"); printf("glColor4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4hNV"); printf("glColor4hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4hvNV"); printf("glColor4hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4i"); printf("glColor4i : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4iv"); printf("glColor4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4s"); printf("glColor4s : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4sv"); printf("glColor4sv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4ub"); printf("glColor4ub : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4ubVertex2fSUN"); printf("glColor4ubVertex2fSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4ubVertex2fvSUN"); printf("glColor4ubVertex2fvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4ubVertex3fSUN"); printf("glColor4ubVertex3fSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4ubVertex3fvSUN"); printf("glColor4ubVertex3fvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4ubv"); printf("glColor4ubv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4ui"); printf("glColor4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4uiv"); printf("glColor4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4us"); printf("glColor4us : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4usv"); printf("glColor4usv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4xOES"); printf("glColor4xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4xvOES"); printf("glColor4xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glColorFormatNV"); printf("glColorFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glColorFragmentOp1ATI"); printf("glColorFragmentOp1ATI : %p\n", p); p = gl.OSMesaGetProcAddress("glColorFragmentOp2ATI"); printf("glColorFragmentOp2ATI : %p\n", p); p = gl.OSMesaGetProcAddress("glColorFragmentOp3ATI"); printf("glColorFragmentOp3ATI : %p\n", p); p = gl.OSMesaGetProcAddress("glColorMask"); printf("glColorMask : %p\n", p); p = gl.OSMesaGetProcAddress("glColorMaskIndexedEXT"); printf("glColorMaskIndexedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glColorMaski"); printf("glColorMaski : %p\n", p); p = gl.OSMesaGetProcAddress("glColorMaterial"); printf("glColorMaterial : %p\n", p); p = gl.OSMesaGetProcAddress("glColorP3ui"); printf("glColorP3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glColorP3uiv"); printf("glColorP3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glColorP4ui"); printf("glColorP4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glColorP4uiv"); printf("glColorP4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glColorPointer"); printf("glColorPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glColorPointerEXT"); printf("glColorPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glColorPointerListIBM"); printf("glColorPointerListIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glColorPointervINTEL"); printf("glColorPointervINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glColorSubTable"); printf("glColorSubTable : %p\n", p); p = gl.OSMesaGetProcAddress("glColorSubTableEXT"); printf("glColorSubTableEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glColorTable"); printf("glColorTable : %p\n", p); p = gl.OSMesaGetProcAddress("glColorTableEXT"); printf("glColorTableEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glColorTableParameterfv"); printf("glColorTableParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glColorTableParameterfvSGI"); printf("glColorTableParameterfvSGI : %p\n", p); p = gl.OSMesaGetProcAddress("glColorTableParameteriv"); printf("glColorTableParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glColorTableParameterivSGI"); printf("glColorTableParameterivSGI : %p\n", p); p = gl.OSMesaGetProcAddress("glColorTableSGI"); printf("glColorTableSGI : %p\n", p); p = gl.OSMesaGetProcAddress("glCombinerInputNV"); printf("glCombinerInputNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCombinerOutputNV"); printf("glCombinerOutputNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCombinerParameterfNV"); printf("glCombinerParameterfNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCombinerParameterfvNV"); printf("glCombinerParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCombinerParameteriNV"); printf("glCombinerParameteriNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCombinerParameterivNV"); printf("glCombinerParameterivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCombinerStageParameterfvNV"); printf("glCombinerStageParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCommandListSegmentsNV"); printf("glCommandListSegmentsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCompileCommandListNV"); printf("glCompileCommandListNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCompileShader"); printf("glCompileShader : %p\n", p); p = gl.OSMesaGetProcAddress("glCompileShaderARB"); printf("glCompileShaderARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompileShaderIncludeARB"); printf("glCompileShaderIncludeARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedMultiTexImage1DEXT"); printf("glCompressedMultiTexImage1DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedMultiTexImage2DEXT"); printf("glCompressedMultiTexImage2DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedMultiTexImage3DEXT"); printf("glCompressedMultiTexImage3DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedMultiTexSubImage1DEXT"); printf("glCompressedMultiTexSubImage1DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedMultiTexSubImage2DEXT"); printf("glCompressedMultiTexSubImage2DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedMultiTexSubImage3DEXT"); printf("glCompressedMultiTexSubImage3DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexImage1D"); printf("glCompressedTexImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexImage1DARB"); printf("glCompressedTexImage1DARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexImage2D"); printf("glCompressedTexImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexImage2DARB"); printf("glCompressedTexImage2DARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexImage3D"); printf("glCompressedTexImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexImage3DARB"); printf("glCompressedTexImage3DARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexSubImage1D"); printf("glCompressedTexSubImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexSubImage1DARB"); printf("glCompressedTexSubImage1DARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexSubImage2D"); printf("glCompressedTexSubImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexSubImage2DARB"); printf("glCompressedTexSubImage2DARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexSubImage3D"); printf("glCompressedTexSubImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexSubImage3DARB"); printf("glCompressedTexSubImage3DARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureImage1DEXT"); printf("glCompressedTextureImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureImage2DEXT"); printf("glCompressedTextureImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureImage3DEXT"); printf("glCompressedTextureImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureSubImage1D"); printf("glCompressedTextureSubImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureSubImage1DEXT"); printf("glCompressedTextureSubImage1DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureSubImage2D"); printf("glCompressedTextureSubImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureSubImage2DEXT"); printf("glCompressedTextureSubImage2DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureSubImage3D"); printf("glCompressedTextureSubImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureSubImage3DEXT"); printf("glCompressedTextureSubImage3DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glConservativeRasterParameterfNV"); printf("glConservativeRasterParameterfNV: %p\n", p); p = gl.OSMesaGetProcAddress("glConservativeRasterParameteriNV"); printf("glConservativeRasterParameteriNV: %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionFilter1D"); printf("glConvolutionFilter1D : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionFilter1DEXT"); printf("glConvolutionFilter1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionFilter2D"); printf("glConvolutionFilter2D : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionFilter2DEXT"); printf("glConvolutionFilter2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameterf"); printf("glConvolutionParameterf : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameterfEXT"); printf("glConvolutionParameterfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameterfv"); printf("glConvolutionParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameterfvEXT"); printf("glConvolutionParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameteri"); printf("glConvolutionParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameteriEXT"); printf("glConvolutionParameteriEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameteriv"); printf("glConvolutionParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameterivEXT"); printf("glConvolutionParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameterxOES"); printf("glConvolutionParameterxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameterxvOES"); printf("glConvolutionParameterxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyBufferSubData"); printf("glCopyBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyColorSubTable"); printf("glCopyColorSubTable : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyColorSubTableEXT"); printf("glCopyColorSubTableEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyColorTable"); printf("glCopyColorTable : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyColorTableSGI"); printf("glCopyColorTableSGI : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyConvolutionFilter1D"); printf("glCopyConvolutionFilter1D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyConvolutionFilter1DEXT"); printf("glCopyConvolutionFilter1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyConvolutionFilter2D"); printf("glCopyConvolutionFilter2D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyConvolutionFilter2DEXT"); printf("glCopyConvolutionFilter2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyImageSubData"); printf("glCopyImageSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyImageSubDataNV"); printf("glCopyImageSubDataNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyMultiTexImage1DEXT"); printf("glCopyMultiTexImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyMultiTexImage2DEXT"); printf("glCopyMultiTexImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyMultiTexSubImage1DEXT"); printf("glCopyMultiTexSubImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyMultiTexSubImage2DEXT"); printf("glCopyMultiTexSubImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyMultiTexSubImage3DEXT"); printf("glCopyMultiTexSubImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyNamedBufferSubData"); printf("glCopyNamedBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyPathNV"); printf("glCopyPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyPixels"); printf("glCopyPixels : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexImage1D"); printf("glCopyTexImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexImage1DEXT"); printf("glCopyTexImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexImage2D"); printf("glCopyTexImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexImage2DEXT"); printf("glCopyTexImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexSubImage1D"); printf("glCopyTexSubImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexSubImage1DEXT"); printf("glCopyTexSubImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexSubImage2D"); printf("glCopyTexSubImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexSubImage2DEXT"); printf("glCopyTexSubImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexSubImage3D"); printf("glCopyTexSubImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexSubImage3DEXT"); printf("glCopyTexSubImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureImage1DEXT"); printf("glCopyTextureImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureImage2DEXT"); printf("glCopyTextureImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureSubImage1D"); printf("glCopyTextureSubImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureSubImage1DEXT"); printf("glCopyTextureSubImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureSubImage2D"); printf("glCopyTextureSubImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureSubImage2DEXT"); printf("glCopyTextureSubImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureSubImage3D"); printf("glCopyTextureSubImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureSubImage3DEXT"); printf("glCopyTextureSubImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCoverFillPathInstancedNV"); printf("glCoverFillPathInstancedNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCoverFillPathNV"); printf("glCoverFillPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCoverStrokePathInstancedNV"); printf("glCoverStrokePathInstancedNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCoverStrokePathNV"); printf("glCoverStrokePathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCoverageModulationNV"); printf("glCoverageModulationNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCoverageModulationTableNV"); printf("glCoverageModulationTableNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateBuffers"); printf("glCreateBuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateCommandListsNV"); printf("glCreateCommandListsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateDebugObjectMESA"); printf("glCreateDebugObjectMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateFramebuffers"); printf("glCreateFramebuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateMemoryObjectsEXT"); printf("glCreateMemoryObjectsEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCreatePerfQueryINTEL"); printf("glCreatePerfQueryINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateProgram"); printf("glCreateProgram : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateProgramObjectARB"); printf("glCreateProgramObjectARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateProgramPipelines"); printf("glCreateProgramPipelines : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateQueries"); printf("glCreateQueries : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateRenderbuffers"); printf("glCreateRenderbuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateSamplers"); printf("glCreateSamplers : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateShader"); printf("glCreateShader : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateShaderObjectARB"); printf("glCreateShaderObjectARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateShaderProgramEXT"); printf("glCreateShaderProgramEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateShaderProgramv"); printf("glCreateShaderProgramv : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateStatesNV"); printf("glCreateStatesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateSyncFromCLeventARB"); printf("glCreateSyncFromCLeventARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateTextures"); printf("glCreateTextures : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateTransformFeedbacks"); printf("glCreateTransformFeedbacks : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateVertexArrays"); printf("glCreateVertexArrays : %p\n", p); p = gl.OSMesaGetProcAddress("glCullFace"); printf("glCullFace : %p\n", p); p = gl.OSMesaGetProcAddress("glCullParameterdvEXT"); printf("glCullParameterdvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCullParameterfvEXT"); printf("glCullParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCurrentPaletteMatrixARB"); printf("glCurrentPaletteMatrixARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageCallback"); printf("glDebugMessageCallback : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageCallbackAMD"); printf("glDebugMessageCallbackAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageCallbackARB"); printf("glDebugMessageCallbackARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageControl"); printf("glDebugMessageControl : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageControlARB"); printf("glDebugMessageControlARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageEnableAMD"); printf("glDebugMessageEnableAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageInsert"); printf("glDebugMessageInsert : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageInsertAMD"); printf("glDebugMessageInsertAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageInsertARB"); printf("glDebugMessageInsertARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDeformSGIX"); printf("glDeformSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glDeformationMap3dSGIX"); printf("glDeformationMap3dSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glDeformationMap3fSGIX"); printf("glDeformationMap3fSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteAsyncMarkersSGIX"); printf("glDeleteAsyncMarkersSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteBuffers"); printf("glDeleteBuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteBuffersARB"); printf("glDeleteBuffersARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteCommandListsNV"); printf("glDeleteCommandListsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteFencesAPPLE"); printf("glDeleteFencesAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteFencesNV"); printf("glDeleteFencesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteFragmentShaderATI"); printf("glDeleteFragmentShaderATI : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteFramebuffers"); printf("glDeleteFramebuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteFramebuffersEXT"); printf("glDeleteFramebuffersEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteLists"); printf("glDeleteLists : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteMemoryObjectsEXT"); printf("glDeleteMemoryObjectsEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteNamedStringARB"); printf("glDeleteNamedStringARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteNamesAMD"); printf("glDeleteNamesAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteObjectARB"); printf("glDeleteObjectARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteObjectBufferATI"); printf("glDeleteObjectBufferATI : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteOcclusionQueriesNV"); printf("glDeleteOcclusionQueriesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeletePathsNV"); printf("glDeletePathsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeletePerfMonitorsAMD"); printf("glDeletePerfMonitorsAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glDeletePerfQueryINTEL"); printf("glDeletePerfQueryINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteProgram"); printf("glDeleteProgram : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteProgramPipelines"); printf("glDeleteProgramPipelines : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteProgramsARB"); printf("glDeleteProgramsARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteProgramsNV"); printf("glDeleteProgramsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteQueries"); printf("glDeleteQueries : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteQueriesARB"); printf("glDeleteQueriesARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteQueryResourceTagNV"); printf("glDeleteQueryResourceTagNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteRenderbuffers"); printf("glDeleteRenderbuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteRenderbuffersEXT"); printf("glDeleteRenderbuffersEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteSamplers"); printf("glDeleteSamplers : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteSemaphoresEXT"); printf("glDeleteSemaphoresEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteShader"); printf("glDeleteShader : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteStatesNV"); printf("glDeleteStatesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteSync"); printf("glDeleteSync : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteTextures"); printf("glDeleteTextures : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteTexturesEXT"); printf("glDeleteTexturesEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteTransformFeedbacks"); printf("glDeleteTransformFeedbacks : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteTransformFeedbacksNV"); printf("glDeleteTransformFeedbacksNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteVertexArrays"); printf("glDeleteVertexArrays : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteVertexArraysAPPLE"); printf("glDeleteVertexArraysAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteVertexShaderEXT"); printf("glDeleteVertexShaderEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthBoundsEXT"); printf("glDepthBoundsEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthBoundsdNV"); printf("glDepthBoundsdNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthFunc"); printf("glDepthFunc : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthMask"); printf("glDepthMask : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthRange"); printf("glDepthRange : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthRangeArrayv"); printf("glDepthRangeArrayv : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthRangeIndexed"); printf("glDepthRangeIndexed : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthRangedNV"); printf("glDepthRangedNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthRangef"); printf("glDepthRangef : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthRangefOES"); printf("glDepthRangefOES : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthRangexOES"); printf("glDepthRangexOES : %p\n", p); p = gl.OSMesaGetProcAddress("glDetachObjectARB"); printf("glDetachObjectARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDetachShader"); printf("glDetachShader : %p\n", p); p = gl.OSMesaGetProcAddress("glDetailTexFuncSGIS"); printf("glDetailTexFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glDisable"); printf("glDisable : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableClientState"); printf("glDisableClientState : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableClientStateIndexedEXT"); printf("glDisableClientStateIndexedEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glDisableClientStateiEXT"); printf("glDisableClientStateiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableIndexedEXT"); printf("glDisableIndexedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableTraceMESA"); printf("glDisableTraceMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableVariantClientStateEXT"); printf("glDisableVariantClientStateEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glDisableVertexArrayAttrib"); printf("glDisableVertexArrayAttrib : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableVertexArrayAttribEXT"); printf("glDisableVertexArrayAttribEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableVertexArrayEXT"); printf("glDisableVertexArrayEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableVertexAttribAPPLE"); printf("glDisableVertexAttribAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableVertexAttribArray"); printf("glDisableVertexAttribArray : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableVertexAttribArrayARB"); printf("glDisableVertexAttribArrayARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDisablei"); printf("glDisablei : %p\n", p); p = gl.OSMesaGetProcAddress("glDispatchCompute"); printf("glDispatchCompute : %p\n", p); p = gl.OSMesaGetProcAddress("glDispatchComputeGroupSizeARB"); printf("glDispatchComputeGroupSizeARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDispatchComputeIndirect"); printf("glDispatchComputeIndirect : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawArrays"); printf("glDrawArrays : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawArraysEXT"); printf("glDrawArraysEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawArraysIndirect"); printf("glDrawArraysIndirect : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawArraysInstanced"); printf("glDrawArraysInstanced : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawArraysInstancedARB"); printf("glDrawArraysInstancedARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawArraysInstancedBaseInstance"); printf("glDrawArraysInstancedBaseInstance: %p\n", p); p = gl.OSMesaGetProcAddress("glDrawArraysInstancedEXT"); printf("glDrawArraysInstancedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawBuffer"); printf("glDrawBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawBuffers"); printf("glDrawBuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawBuffersARB"); printf("glDrawBuffersARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawBuffersATI"); printf("glDrawBuffersATI : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawCommandsAddressNV"); printf("glDrawCommandsAddressNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawCommandsNV"); printf("glDrawCommandsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawCommandsStatesAddressNV"); printf("glDrawCommandsStatesAddressNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawCommandsStatesNV"); printf("glDrawCommandsStatesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementArrayAPPLE"); printf("glDrawElementArrayAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementArrayATI"); printf("glDrawElementArrayATI : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElements"); printf("glDrawElements : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsBaseVertex"); printf("glDrawElementsBaseVertex : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsIndirect"); printf("glDrawElementsIndirect : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsInstanced"); printf("glDrawElementsInstanced : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsInstancedARB"); printf("glDrawElementsInstancedARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsInstancedBaseInstance"); printf("glDrawElementsInstancedBaseInstance: %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsInstancedBaseVertex"); printf("glDrawElementsInstancedBaseVertex: %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsInstancedBaseVertexBaseInstance"); printf("glDrawElementsInstancedBaseVertexBaseInstance: %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsInstancedEXT"); printf("glDrawElementsInstancedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawMeshArraysSUN"); printf("glDrawMeshArraysSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawPixels"); printf("glDrawPixels : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawRangeElementArrayAPPLE"); printf("glDrawRangeElementArrayAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawRangeElementArrayATI"); printf("glDrawRangeElementArrayATI : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawRangeElements"); printf("glDrawRangeElements : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawRangeElementsBaseVertex"); printf("glDrawRangeElementsBaseVertex : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawRangeElementsEXT"); printf("glDrawRangeElementsEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawTextureNV"); printf("glDrawTextureNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawTransformFeedback"); printf("glDrawTransformFeedback : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawTransformFeedbackInstanced"); printf("glDrawTransformFeedbackInstanced: %p\n", p); p = gl.OSMesaGetProcAddress("glDrawTransformFeedbackNV"); printf("glDrawTransformFeedbackNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawTransformFeedbackStream"); printf("glDrawTransformFeedbackStream : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawTransformFeedbackStreamInstanced"); printf("glDrawTransformFeedbackStreamInstanced: %p\n", p); p = gl.OSMesaGetProcAddress("glDrawVkImageNV"); printf("glDrawVkImageNV : %p\n", p); p = gl.OSMesaGetProcAddress("glEdgeFlag"); printf("glEdgeFlag : %p\n", p); p = gl.OSMesaGetProcAddress("glEdgeFlagFormatNV"); printf("glEdgeFlagFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glEdgeFlagPointer"); printf("glEdgeFlagPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glEdgeFlagPointerEXT"); printf("glEdgeFlagPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEdgeFlagPointerListIBM"); printf("glEdgeFlagPointerListIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glEdgeFlagv"); printf("glEdgeFlagv : %p\n", p); p = gl.OSMesaGetProcAddress("glElementPointerAPPLE"); printf("glElementPointerAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glElementPointerATI"); printf("glElementPointerATI : %p\n", p); p = gl.OSMesaGetProcAddress("glEnable"); printf("glEnable : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableClientState"); printf("glEnableClientState : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableClientStateIndexedEXT"); printf("glEnableClientStateIndexedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableClientStateiEXT"); printf("glEnableClientStateiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableIndexedEXT"); printf("glEnableIndexedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableTraceMESA"); printf("glEnableTraceMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableVariantClientStateEXT"); printf("glEnableVariantClientStateEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableVertexArrayAttrib"); printf("glEnableVertexArrayAttrib : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableVertexArrayAttribEXT"); printf("glEnableVertexArrayAttribEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableVertexArrayEXT"); printf("glEnableVertexArrayEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableVertexAttribAPPLE"); printf("glEnableVertexAttribAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableVertexAttribArray"); printf("glEnableVertexAttribArray : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableVertexAttribArrayARB"); printf("glEnableVertexAttribArrayARB : %p\n", p); p = gl.OSMesaGetProcAddress("glEnablei"); printf("glEnablei : %p\n", p); p = gl.OSMesaGetProcAddress("glEnd"); printf("glEnd : %p\n", p); p = gl.OSMesaGetProcAddress("glEndConditionalRender"); printf("glEndConditionalRender : %p\n", p); p = gl.OSMesaGetProcAddress("glEndConditionalRenderNV"); printf("glEndConditionalRenderNV : %p\n", p); p = gl.OSMesaGetProcAddress("glEndConditionalRenderNVX"); printf("glEndConditionalRenderNVX : %p\n", p); p = gl.OSMesaGetProcAddress("glEndFragmentShaderATI"); printf("glEndFragmentShaderATI : %p\n", p); p = gl.OSMesaGetProcAddress("glEndList"); printf("glEndList : %p\n", p); p = gl.OSMesaGetProcAddress("glEndOcclusionQueryNV"); printf("glEndOcclusionQueryNV : %p\n", p); p = gl.OSMesaGetProcAddress("glEndPerfMonitorAMD"); printf("glEndPerfMonitorAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glEndPerfQueryINTEL"); printf("glEndPerfQueryINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glEndQuery"); printf("glEndQuery : %p\n", p); p = gl.OSMesaGetProcAddress("glEndQueryARB"); printf("glEndQueryARB : %p\n", p); p = gl.OSMesaGetProcAddress("glEndQueryIndexed"); printf("glEndQueryIndexed : %p\n", p); p = gl.OSMesaGetProcAddress("glEndTraceMESA"); printf("glEndTraceMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glEndTransformFeedback"); printf("glEndTransformFeedback : %p\n", p); p = gl.OSMesaGetProcAddress("glEndTransformFeedbackEXT"); printf("glEndTransformFeedbackEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEndTransformFeedbackNV"); printf("glEndTransformFeedbackNV : %p\n", p); p = gl.OSMesaGetProcAddress("glEndVertexShaderEXT"); printf("glEndVertexShaderEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEndVideoCaptureNV"); printf("glEndVideoCaptureNV : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord1d"); printf("glEvalCoord1d : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord1dv"); printf("glEvalCoord1dv : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord1f"); printf("glEvalCoord1f : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord1fv"); printf("glEvalCoord1fv : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord1xOES"); printf("glEvalCoord1xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord1xvOES"); printf("glEvalCoord1xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord2d"); printf("glEvalCoord2d : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord2dv"); printf("glEvalCoord2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord2f"); printf("glEvalCoord2f : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord2fv"); printf("glEvalCoord2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord2xOES"); printf("glEvalCoord2xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord2xvOES"); printf("glEvalCoord2xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalMapsNV"); printf("glEvalMapsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalMesh1"); printf("glEvalMesh1 : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalMesh2"); printf("glEvalMesh2 : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalPoint1"); printf("glEvalPoint1 : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalPoint2"); printf("glEvalPoint2 : %p\n", p); p = gl.OSMesaGetProcAddress("glEvaluateDepthValuesARB"); printf("glEvaluateDepthValuesARB : %p\n", p); p = gl.OSMesaGetProcAddress("glExecuteProgramNV"); printf("glExecuteProgramNV : %p\n", p); p = gl.OSMesaGetProcAddress("glExtractComponentEXT"); printf("glExtractComponentEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFeedbackBuffer"); printf("glFeedbackBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glFeedbackBufferxOES"); printf("glFeedbackBufferxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glFenceSync"); printf("glFenceSync : %p\n", p); p = gl.OSMesaGetProcAddress("glFinalCombinerInputNV"); printf("glFinalCombinerInputNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFinish"); printf("glFinish : %p\n", p); p = gl.OSMesaGetProcAddress("glFinishAsyncSGIX"); printf("glFinishAsyncSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFinishFenceAPPLE"); printf("glFinishFenceAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glFinishFenceNV"); printf("glFinishFenceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFinishObjectAPPLE"); printf("glFinishObjectAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glFinishRenderAPPLE"); printf("glFinishRenderAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glFinishTextureSUNX"); printf("glFinishTextureSUNX : %p\n", p); p = gl.OSMesaGetProcAddress("glFlush"); printf("glFlush : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushMappedBufferRange"); printf("glFlushMappedBufferRange : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushMappedBufferRangeAPPLE"); printf("glFlushMappedBufferRangeAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushMappedNamedBufferRange"); printf("glFlushMappedNamedBufferRange : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushMappedNamedBufferRangeEXT"); printf("glFlushMappedNamedBufferRangeEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glFlushPixelDataRangeNV"); printf("glFlushPixelDataRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushRasterSGIX"); printf("glFlushRasterSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushRenderAPPLE"); printf("glFlushRenderAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushStaticDataIBM"); printf("glFlushStaticDataIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushVertexArrayRangeAPPLE"); printf("glFlushVertexArrayRangeAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushVertexArrayRangeNV"); printf("glFlushVertexArrayRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordFormatNV"); printf("glFogCoordFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordPointer"); printf("glFogCoordPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordPointerEXT"); printf("glFogCoordPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordPointerListIBM"); printf("glFogCoordPointerListIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordd"); printf("glFogCoordd : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoorddEXT"); printf("glFogCoorddEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoorddv"); printf("glFogCoorddv : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoorddvEXT"); printf("glFogCoorddvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordf"); printf("glFogCoordf : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordfEXT"); printf("glFogCoordfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordfv"); printf("glFogCoordfv : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordfvEXT"); printf("glFogCoordfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordhNV"); printf("glFogCoordhNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordhvNV"); printf("glFogCoordhvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFogFuncSGIS"); printf("glFogFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glFogf"); printf("glFogf : %p\n", p); p = gl.OSMesaGetProcAddress("glFogfv"); printf("glFogfv : %p\n", p); p = gl.OSMesaGetProcAddress("glFogi"); printf("glFogi : %p\n", p); p = gl.OSMesaGetProcAddress("glFogiv"); printf("glFogiv : %p\n", p); p = gl.OSMesaGetProcAddress("glFogxOES"); printf("glFogxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glFogxvOES"); printf("glFogxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentColorMaterialSGIX"); printf("glFragmentColorMaterialSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentCoverageColorNV"); printf("glFragmentCoverageColorNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightModelfSGIX"); printf("glFragmentLightModelfSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightModelfvSGIX"); printf("glFragmentLightModelfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightModeliSGIX"); printf("glFragmentLightModeliSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightModelivSGIX"); printf("glFragmentLightModelivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightfSGIX"); printf("glFragmentLightfSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightfvSGIX"); printf("glFragmentLightfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightiSGIX"); printf("glFragmentLightiSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightivSGIX"); printf("glFragmentLightivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentMaterialfSGIX"); printf("glFragmentMaterialfSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentMaterialfvSGIX"); printf("glFragmentMaterialfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentMaterialiSGIX"); printf("glFragmentMaterialiSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentMaterialivSGIX"); printf("glFragmentMaterialivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFrameTerminatorGREMEDY"); printf("glFrameTerminatorGREMEDY : %p\n", p); p = gl.OSMesaGetProcAddress("glFrameZoomSGIX"); printf("glFrameZoomSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferDrawBufferEXT"); printf("glFramebufferDrawBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferDrawBuffersEXT"); printf("glFramebufferDrawBuffersEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferParameteri"); printf("glFramebufferParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferReadBufferEXT"); printf("glFramebufferReadBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferRenderbuffer"); printf("glFramebufferRenderbuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferRenderbufferEXT"); printf("glFramebufferRenderbufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferSampleLocationsfvARB"); printf("glFramebufferSampleLocationsfvARB: %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferSampleLocationsfvNV"); printf("glFramebufferSampleLocationsfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferSamplePositionsfvAMD"); printf("glFramebufferSamplePositionsfvAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTexture"); printf("glFramebufferTexture : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTexture1D"); printf("glFramebufferTexture1D : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTexture1DEXT"); printf("glFramebufferTexture1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTexture2D"); printf("glFramebufferTexture2D : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTexture2DEXT"); printf("glFramebufferTexture2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTexture3D"); printf("glFramebufferTexture3D : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTexture3DEXT"); printf("glFramebufferTexture3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureARB"); printf("glFramebufferTextureARB : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureEXT"); printf("glFramebufferTextureEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureFaceARB"); printf("glFramebufferTextureFaceARB : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureFaceEXT"); printf("glFramebufferTextureFaceEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureLayer"); printf("glFramebufferTextureLayer : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureLayerARB"); printf("glFramebufferTextureLayerARB : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureLayerEXT"); printf("glFramebufferTextureLayerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureMultiviewOVR"); printf("glFramebufferTextureMultiviewOVR: %p\n", p); p = gl.OSMesaGetProcAddress("glFreeObjectBufferATI"); printf("glFreeObjectBufferATI : %p\n", p); p = gl.OSMesaGetProcAddress("glFrontFace"); printf("glFrontFace : %p\n", p); p = gl.OSMesaGetProcAddress("glFrustum"); printf("glFrustum : %p\n", p); p = gl.OSMesaGetProcAddress("glFrustumf"); printf("glFrustumf : %p\n", p); p = gl.OSMesaGetProcAddress("glFrustumfOES"); printf("glFrustumfOES : %p\n", p); p = gl.OSMesaGetProcAddress("glFrustumxOES"); printf("glFrustumxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGenAsyncMarkersSGIX"); printf("glGenAsyncMarkersSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGenBuffers"); printf("glGenBuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glGenBuffersARB"); printf("glGenBuffersARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGenFencesAPPLE"); printf("glGenFencesAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glGenFencesNV"); printf("glGenFencesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGenFragmentShadersATI"); printf("glGenFragmentShadersATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGenFramebuffers"); printf("glGenFramebuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glGenFramebuffersEXT"); printf("glGenFramebuffersEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenLists"); printf("glGenLists : %p\n", p); p = gl.OSMesaGetProcAddress("glGenNamesAMD"); printf("glGenNamesAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glGenOcclusionQueriesNV"); printf("glGenOcclusionQueriesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGenPathsNV"); printf("glGenPathsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGenPerfMonitorsAMD"); printf("glGenPerfMonitorsAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glGenProgramPipelines"); printf("glGenProgramPipelines : %p\n", p); p = gl.OSMesaGetProcAddress("glGenProgramsARB"); printf("glGenProgramsARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGenProgramsNV"); printf("glGenProgramsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGenQueries"); printf("glGenQueries : %p\n", p); p = gl.OSMesaGetProcAddress("glGenQueriesARB"); printf("glGenQueriesARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGenQueryResourceTagNV"); printf("glGenQueryResourceTagNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGenRenderbuffers"); printf("glGenRenderbuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glGenRenderbuffersEXT"); printf("glGenRenderbuffersEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenSamplers"); printf("glGenSamplers : %p\n", p); p = gl.OSMesaGetProcAddress("glGenSemaphoresEXT"); printf("glGenSemaphoresEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenSymbolsEXT"); printf("glGenSymbolsEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenTextures"); printf("glGenTextures : %p\n", p); p = gl.OSMesaGetProcAddress("glGenTexturesEXT"); printf("glGenTexturesEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenTransformFeedbacks"); printf("glGenTransformFeedbacks : %p\n", p); p = gl.OSMesaGetProcAddress("glGenTransformFeedbacksNV"); printf("glGenTransformFeedbacksNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGenVertexArrays"); printf("glGenVertexArrays : %p\n", p); p = gl.OSMesaGetProcAddress("glGenVertexArraysAPPLE"); printf("glGenVertexArraysAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glGenVertexShadersEXT"); printf("glGenVertexShadersEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenerateMipmap"); printf("glGenerateMipmap : %p\n", p); p = gl.OSMesaGetProcAddress("glGenerateMipmapEXT"); printf("glGenerateMipmapEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenerateMultiTexMipmapEXT"); printf("glGenerateMultiTexMipmapEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenerateTextureMipmap"); printf("glGenerateTextureMipmap : %p\n", p); p = gl.OSMesaGetProcAddress("glGenerateTextureMipmapEXT"); printf("glGenerateTextureMipmapEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveAtomicCounterBufferiv"); printf("glGetActiveAtomicCounterBufferiv: %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveAttrib"); printf("glGetActiveAttrib : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveAttribARB"); printf("glGetActiveAttribARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveSubroutineName"); printf("glGetActiveSubroutineName : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveSubroutineUniformName"); printf("glGetActiveSubroutineUniformName: %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveSubroutineUniformiv"); printf("glGetActiveSubroutineUniformiv: %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveUniform"); printf("glGetActiveUniform : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveUniformARB"); printf("glGetActiveUniformARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveUniformBlockIndex"); printf("glGetActiveUniformBlockIndex : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveUniformBlockName"); printf("glGetActiveUniformBlockName : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveUniformBlockiv"); printf("glGetActiveUniformBlockiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveUniformName"); printf("glGetActiveUniformName : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveUniformsiv"); printf("glGetActiveUniformsiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveVaryingNV"); printf("glGetActiveVaryingNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetArrayObjectfvATI"); printf("glGetArrayObjectfvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetArrayObjectivATI"); printf("glGetArrayObjectivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetAttachedObjectsARB"); printf("glGetAttachedObjectsARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetAttachedShaders"); printf("glGetAttachedShaders : %p\n", p); p = gl.OSMesaGetProcAddress("glGetAttribLocation"); printf("glGetAttribLocation : %p\n", p); p = gl.OSMesaGetProcAddress("glGetAttribLocationARB"); printf("glGetAttribLocationARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBooleanIndexedvEXT"); printf("glGetBooleanIndexedvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBooleani_v"); printf("glGetBooleani_v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBooleanv"); printf("glGetBooleanv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferParameteri64v"); printf("glGetBufferParameteri64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferParameteriv"); printf("glGetBufferParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferParameterivARB"); printf("glGetBufferParameterivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferParameterui64vNV"); printf("glGetBufferParameterui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferPointerv"); printf("glGetBufferPointerv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferPointervARB"); printf("glGetBufferPointervARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferSubData"); printf("glGetBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferSubDataARB"); printf("glGetBufferSubDataARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetClipPlane"); printf("glGetClipPlane : %p\n", p); p = gl.OSMesaGetProcAddress("glGetClipPlanefOES"); printf("glGetClipPlanefOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetClipPlanexOES"); printf("glGetClipPlanexOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTable"); printf("glGetColorTable : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableEXT"); printf("glGetColorTableEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableParameterfv"); printf("glGetColorTableParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableParameterfvEXT"); printf("glGetColorTableParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableParameterfvSGI"); printf("glGetColorTableParameterfvSGI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableParameteriv"); printf("glGetColorTableParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableParameterivEXT"); printf("glGetColorTableParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableParameterivSGI"); printf("glGetColorTableParameterivSGI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableSGI"); printf("glGetColorTableSGI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetCombinerInputParameterfvNV"); printf("glGetCombinerInputParameterfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCombinerInputParameterivNV"); printf("glGetCombinerInputParameterivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCombinerOutputParameterfvNV"); printf("glGetCombinerOutputParameterfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCombinerOutputParameterivNV"); printf("glGetCombinerOutputParameterivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCombinerStageParameterfvNV"); printf("glGetCombinerStageParameterfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCommandHeaderNV"); printf("glGetCommandHeaderNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetCompressedMultiTexImageEXT"); printf("glGetCompressedMultiTexImageEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCompressedTexImage"); printf("glGetCompressedTexImage : %p\n", p); p = gl.OSMesaGetProcAddress("glGetCompressedTexImageARB"); printf("glGetCompressedTexImageARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetCompressedTextureImage"); printf("glGetCompressedTextureImage : %p\n", p); p = gl.OSMesaGetProcAddress("glGetCompressedTextureImageEXT"); printf("glGetCompressedTextureImageEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCompressedTextureSubImage"); printf("glGetCompressedTextureSubImage: %p\n", p); p = gl.OSMesaGetProcAddress("glGetConvolutionFilter"); printf("glGetConvolutionFilter : %p\n", p); p = gl.OSMesaGetProcAddress("glGetConvolutionFilterEXT"); printf("glGetConvolutionFilterEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetConvolutionParameterfv"); printf("glGetConvolutionParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetConvolutionParameterfvEXT"); printf("glGetConvolutionParameterfvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetConvolutionParameteriv"); printf("glGetConvolutionParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetConvolutionParameterivEXT"); printf("glGetConvolutionParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetConvolutionParameterxvOES"); printf("glGetConvolutionParameterxvOES: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCoverageModulationTableNV"); printf("glGetCoverageModulationTableNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetDebugLogLengthMESA"); printf("glGetDebugLogLengthMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDebugLogMESA"); printf("glGetDebugLogMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDebugMessageLog"); printf("glGetDebugMessageLog : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDebugMessageLogAMD"); printf("glGetDebugMessageLogAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDebugMessageLogARB"); printf("glGetDebugMessageLogARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDetailTexFuncSGIS"); printf("glGetDetailTexFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDoubleIndexedvEXT"); printf("glGetDoubleIndexedvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDoublei_v"); printf("glGetDoublei_v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDoublei_vEXT"); printf("glGetDoublei_vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDoublev"); printf("glGetDoublev : %p\n", p); p = gl.OSMesaGetProcAddress("glGetError"); printf("glGetError : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFenceivNV"); printf("glGetFenceivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFinalCombinerInputParameterfvNV"); printf("glGetFinalCombinerInputParameterfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetFinalCombinerInputParameterivNV"); printf("glGetFinalCombinerInputParameterivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetFirstPerfQueryIdINTEL"); printf("glGetFirstPerfQueryIdINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFixedvOES"); printf("glGetFixedvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFloatIndexedvEXT"); printf("glGetFloatIndexedvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFloati_v"); printf("glGetFloati_v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFloati_vEXT"); printf("glGetFloati_vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFloatv"); printf("glGetFloatv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFogFuncSGIS"); printf("glGetFogFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFragDataIndex"); printf("glGetFragDataIndex : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFragDataLocation"); printf("glGetFragDataLocation : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFragDataLocationEXT"); printf("glGetFragDataLocationEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFragmentLightfvSGIX"); printf("glGetFragmentLightfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFragmentLightivSGIX"); printf("glGetFragmentLightivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFragmentMaterialfvSGIX"); printf("glGetFragmentMaterialfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFragmentMaterialivSGIX"); printf("glGetFragmentMaterialivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFramebufferAttachmentParameteriv"); printf("glGetFramebufferAttachmentParameteriv: %p\n", p); p = gl.OSMesaGetProcAddress("glGetFramebufferAttachmentParameterivEXT"); printf("glGetFramebufferAttachmentParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetFramebufferParameterfvAMD"); printf("glGetFramebufferParameterfvAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glGetFramebufferParameteriv"); printf("glGetFramebufferParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFramebufferParameterivEXT"); printf("glGetFramebufferParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetGraphicsResetStatus"); printf("glGetGraphicsResetStatus : %p\n", p); p = gl.OSMesaGetProcAddress("glGetGraphicsResetStatusARB"); printf("glGetGraphicsResetStatusARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHandleARB"); printf("glGetHandleARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHistogram"); printf("glGetHistogram : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHistogramEXT"); printf("glGetHistogramEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHistogramParameterfv"); printf("glGetHistogramParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHistogramParameterfvEXT"); printf("glGetHistogramParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHistogramParameteriv"); printf("glGetHistogramParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHistogramParameterivEXT"); printf("glGetHistogramParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHistogramParameterxvOES"); printf("glGetHistogramParameterxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetImageHandleARB"); printf("glGetImageHandleARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetImageHandleNV"); printf("glGetImageHandleNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetImageTransformParameterfvHP"); printf("glGetImageTransformParameterfvHP: %p\n", p); p = gl.OSMesaGetProcAddress("glGetImageTransformParameterivHP"); printf("glGetImageTransformParameterivHP: %p\n", p); p = gl.OSMesaGetProcAddress("glGetInfoLogARB"); printf("glGetInfoLogARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInstrumentsSGIX"); printf("glGetInstrumentsSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInteger64i_v"); printf("glGetInteger64i_v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInteger64v"); printf("glGetInteger64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetIntegerIndexedvEXT"); printf("glGetIntegerIndexedvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetIntegeri_v"); printf("glGetIntegeri_v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetIntegerui64i_vNV"); printf("glGetIntegerui64i_vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetIntegerui64vNV"); printf("glGetIntegerui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetIntegerv"); printf("glGetIntegerv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInternalformatSampleivNV"); printf("glGetInternalformatSampleivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInternalformati64v"); printf("glGetInternalformati64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInternalformativ"); printf("glGetInternalformativ : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInvariantBooleanvEXT"); printf("glGetInvariantBooleanvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInvariantFloatvEXT"); printf("glGetInvariantFloatvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInvariantIntegervEXT"); printf("glGetInvariantIntegervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetLightfv"); printf("glGetLightfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetLightiv"); printf("glGetLightiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetLightxOES"); printf("glGetLightxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetListParameterfvSGIX"); printf("glGetListParameterfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGetListParameterivSGIX"); printf("glGetListParameterivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGetLocalConstantBooleanvEXT"); printf("glGetLocalConstantBooleanvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetLocalConstantFloatvEXT"); printf("glGetLocalConstantFloatvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetLocalConstantIntegervEXT"); printf("glGetLocalConstantIntegervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapAttribParameterfvNV"); printf("glGetMapAttribParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapAttribParameterivNV"); printf("glGetMapAttribParameterivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapControlPointsNV"); printf("glGetMapControlPointsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapParameterfvNV"); printf("glGetMapParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapParameterivNV"); printf("glGetMapParameterivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapdv"); printf("glGetMapdv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapfv"); printf("glGetMapfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapiv"); printf("glGetMapiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapxvOES"); printf("glGetMapxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMaterialfv"); printf("glGetMaterialfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMaterialiv"); printf("glGetMaterialiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMaterialxOES"); printf("glGetMaterialxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMemoryObjectParameterivEXT"); printf("glGetMemoryObjectParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetMinmax"); printf("glGetMinmax : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMinmaxEXT"); printf("glGetMinmaxEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMinmaxParameterfv"); printf("glGetMinmaxParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMinmaxParameterfvEXT"); printf("glGetMinmaxParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMinmaxParameteriv"); printf("glGetMinmaxParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMinmaxParameterivEXT"); printf("glGetMinmaxParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexEnvfvEXT"); printf("glGetMultiTexEnvfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexEnvivEXT"); printf("glGetMultiTexEnvivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexGendvEXT"); printf("glGetMultiTexGendvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexGenfvEXT"); printf("glGetMultiTexGenfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexGenivEXT"); printf("glGetMultiTexGenivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexImageEXT"); printf("glGetMultiTexImageEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexLevelParameterfvEXT"); printf("glGetMultiTexLevelParameterfvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexLevelParameterivEXT"); printf("glGetMultiTexLevelParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexParameterIivEXT"); printf("glGetMultiTexParameterIivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexParameterIuivEXT"); printf("glGetMultiTexParameterIuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexParameterfvEXT"); printf("glGetMultiTexParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexParameterivEXT"); printf("glGetMultiTexParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultisamplefv"); printf("glGetMultisamplefv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultisamplefvNV"); printf("glGetMultisamplefvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferParameteri64v"); printf("glGetNamedBufferParameteri64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferParameteriv"); printf("glGetNamedBufferParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferParameterivEXT"); printf("glGetNamedBufferParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferParameterui64vNV"); printf("glGetNamedBufferParameterui64vNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferPointerv"); printf("glGetNamedBufferPointerv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferPointervEXT"); printf("glGetNamedBufferPointervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferSubData"); printf("glGetNamedBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferSubDataEXT"); printf("glGetNamedBufferSubDataEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedFramebufferAttachmentParameteriv"); printf("glGetNamedFramebufferAttachmentParameteriv: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedFramebufferAttachmentParameterivEXT"); printf("glGetNamedFramebufferAttachmentParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedFramebufferParameterfvAMD"); printf("glGetNamedFramebufferParameterfvAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedFramebufferParameteriv"); printf("glGetNamedFramebufferParameteriv: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedFramebufferParameterivEXT"); printf("glGetNamedFramebufferParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedProgramLocalParameterIivEXT"); printf("glGetNamedProgramLocalParameterIivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedProgramLocalParameterIuivEXT"); printf("glGetNamedProgramLocalParameterIuivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedProgramLocalParameterdvEXT"); printf("glGetNamedProgramLocalParameterdvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedProgramLocalParameterfvEXT"); printf("glGetNamedProgramLocalParameterfvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedProgramStringEXT"); printf("glGetNamedProgramStringEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedProgramivEXT"); printf("glGetNamedProgramivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedRenderbufferParameteriv"); printf("glGetNamedRenderbufferParameteriv: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedRenderbufferParameterivEXT"); printf("glGetNamedRenderbufferParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedStringARB"); printf("glGetNamedStringARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedStringivARB"); printf("glGetNamedStringivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNextPerfQueryIdINTEL"); printf("glGetNextPerfQueryIdINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectBufferfvATI"); printf("glGetObjectBufferfvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectBufferivATI"); printf("glGetObjectBufferivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectLabel"); printf("glGetObjectLabel : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectLabelEXT"); printf("glGetObjectLabelEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectParameterfvARB"); printf("glGetObjectParameterfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectParameterivAPPLE"); printf("glGetObjectParameterivAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectParameterivARB"); printf("glGetObjectParameterivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectPtrLabel"); printf("glGetObjectPtrLabel : %p\n", p); p = gl.OSMesaGetProcAddress("glGetOcclusionQueryivNV"); printf("glGetOcclusionQueryivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetOcclusionQueryuivNV"); printf("glGetOcclusionQueryuivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathColorGenfvNV"); printf("glGetPathColorGenfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathColorGenivNV"); printf("glGetPathColorGenivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathCommandsNV"); printf("glGetPathCommandsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathCoordsNV"); printf("glGetPathCoordsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathDashArrayNV"); printf("glGetPathDashArrayNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathLengthNV"); printf("glGetPathLengthNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathMetricRangeNV"); printf("glGetPathMetricRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathMetricsNV"); printf("glGetPathMetricsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathParameterfvNV"); printf("glGetPathParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathParameterivNV"); printf("glGetPathParameterivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathSpacingNV"); printf("glGetPathSpacingNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathTexGenfvNV"); printf("glGetPathTexGenfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathTexGenivNV"); printf("glGetPathTexGenivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfCounterInfoINTEL"); printf("glGetPerfCounterInfoINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfMonitorCounterDataAMD"); printf("glGetPerfMonitorCounterDataAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfMonitorCounterInfoAMD"); printf("glGetPerfMonitorCounterInfoAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfMonitorCounterStringAMD"); printf("glGetPerfMonitorCounterStringAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfMonitorCountersAMD"); printf("glGetPerfMonitorCountersAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfMonitorGroupStringAMD"); printf("glGetPerfMonitorGroupStringAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfMonitorGroupsAMD"); printf("glGetPerfMonitorGroupsAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfQueryDataINTEL"); printf("glGetPerfQueryDataINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfQueryIdByNameINTEL"); printf("glGetPerfQueryIdByNameINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfQueryInfoINTEL"); printf("glGetPerfQueryInfoINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelMapfv"); printf("glGetPixelMapfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelMapuiv"); printf("glGetPixelMapuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelMapusv"); printf("glGetPixelMapusv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelMapxv"); printf("glGetPixelMapxv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelTexGenParameterfvSGIS"); printf("glGetPixelTexGenParameterfvSGIS: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelTexGenParameterivSGIS"); printf("glGetPixelTexGenParameterivSGIS: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelTransformParameterfvEXT"); printf("glGetPixelTransformParameterfvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelTransformParameterivEXT"); printf("glGetPixelTransformParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPointerIndexedvEXT"); printf("glGetPointerIndexedvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPointeri_vEXT"); printf("glGetPointeri_vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPointerv"); printf("glGetPointerv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPointervEXT"); printf("glGetPointervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPolygonStipple"); printf("glGetPolygonStipple : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramBinary"); printf("glGetProgramBinary : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramEnvParameterIivNV"); printf("glGetProgramEnvParameterIivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramEnvParameterIuivNV"); printf("glGetProgramEnvParameterIuivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramEnvParameterdvARB"); printf("glGetProgramEnvParameterdvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramEnvParameterfvARB"); printf("glGetProgramEnvParameterfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramInfoLog"); printf("glGetProgramInfoLog : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramInterfaceiv"); printf("glGetProgramInterfaceiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramLocalParameterIivNV"); printf("glGetProgramLocalParameterIivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramLocalParameterIuivNV"); printf("glGetProgramLocalParameterIuivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramLocalParameterdvARB"); printf("glGetProgramLocalParameterdvARB: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramLocalParameterfvARB"); printf("glGetProgramLocalParameterfvARB: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramNamedParameterdvNV"); printf("glGetProgramNamedParameterdvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramNamedParameterfvNV"); printf("glGetProgramNamedParameterfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramParameterdvNV"); printf("glGetProgramParameterdvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramParameterfvNV"); printf("glGetProgramParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramPipelineInfoLog"); printf("glGetProgramPipelineInfoLog : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramPipelineiv"); printf("glGetProgramPipelineiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramRegisterfvMESA"); printf("glGetProgramRegisterfvMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramResourceIndex"); printf("glGetProgramResourceIndex : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramResourceLocation"); printf("glGetProgramResourceLocation : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramResourceLocationIndex"); printf("glGetProgramResourceLocationIndex: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramResourceName"); printf("glGetProgramResourceName : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramResourcefvNV"); printf("glGetProgramResourcefvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramResourceiv"); printf("glGetProgramResourceiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramStageiv"); printf("glGetProgramStageiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramStringARB"); printf("glGetProgramStringARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramStringNV"); printf("glGetProgramStringNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramSubroutineParameteruivNV"); printf("glGetProgramSubroutineParameteruivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramiv"); printf("glGetProgramiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramivARB"); printf("glGetProgramivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramivNV"); printf("glGetProgramivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryBufferObjecti64v"); printf("glGetQueryBufferObjecti64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryBufferObjectiv"); printf("glGetQueryBufferObjectiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryBufferObjectui64v"); printf("glGetQueryBufferObjectui64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryBufferObjectuiv"); printf("glGetQueryBufferObjectuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryIndexediv"); printf("glGetQueryIndexediv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjecti64v"); printf("glGetQueryObjecti64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjecti64vEXT"); printf("glGetQueryObjecti64vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjectiv"); printf("glGetQueryObjectiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjectivARB"); printf("glGetQueryObjectivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjectui64v"); printf("glGetQueryObjectui64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjectui64vEXT"); printf("glGetQueryObjectui64vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjectuiv"); printf("glGetQueryObjectuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjectuivARB"); printf("glGetQueryObjectuivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryiv"); printf("glGetQueryiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryivARB"); printf("glGetQueryivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetRenderbufferParameteriv"); printf("glGetRenderbufferParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetRenderbufferParameterivEXT"); printf("glGetRenderbufferParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetSamplerParameterIiv"); printf("glGetSamplerParameterIiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSamplerParameterIuiv"); printf("glGetSamplerParameterIuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSamplerParameterfv"); printf("glGetSamplerParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSamplerParameteriv"); printf("glGetSamplerParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSemaphoreParameterui64vEXT"); printf("glGetSemaphoreParameterui64vEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetSeparableFilter"); printf("glGetSeparableFilter : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSeparableFilterEXT"); printf("glGetSeparableFilterEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetShaderInfoLog"); printf("glGetShaderInfoLog : %p\n", p); p = gl.OSMesaGetProcAddress("glGetShaderPrecisionFormat"); printf("glGetShaderPrecisionFormat : %p\n", p); p = gl.OSMesaGetProcAddress("glGetShaderSource"); printf("glGetShaderSource : %p\n", p); p = gl.OSMesaGetProcAddress("glGetShaderSourceARB"); printf("glGetShaderSourceARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetShaderiv"); printf("glGetShaderiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSharpenTexFuncSGIS"); printf("glGetSharpenTexFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glGetStageIndexNV"); printf("glGetStageIndexNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetString"); printf("glGetString : %p\n", p); p = gl.OSMesaGetProcAddress("glGetStringi"); printf("glGetStringi : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSubroutineIndex"); printf("glGetSubroutineIndex : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSubroutineUniformLocation"); printf("glGetSubroutineUniformLocation: %p\n", p); p = gl.OSMesaGetProcAddress("glGetSynciv"); printf("glGetSynciv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexBumpParameterfvATI"); printf("glGetTexBumpParameterfvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexBumpParameterivATI"); printf("glGetTexBumpParameterivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexEnvfv"); printf("glGetTexEnvfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexEnviv"); printf("glGetTexEnviv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexEnvxvOES"); printf("glGetTexEnvxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexFilterFuncSGIS"); printf("glGetTexFilterFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexGendv"); printf("glGetTexGendv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexGenfv"); printf("glGetTexGenfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexGeniv"); printf("glGetTexGeniv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexGenxvOES"); printf("glGetTexGenxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexImage"); printf("glGetTexImage : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexLevelParameterfv"); printf("glGetTexLevelParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexLevelParameteriv"); printf("glGetTexLevelParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexLevelParameterxvOES"); printf("glGetTexLevelParameterxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameterIiv"); printf("glGetTexParameterIiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameterIivEXT"); printf("glGetTexParameterIivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameterIuiv"); printf("glGetTexParameterIuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameterIuivEXT"); printf("glGetTexParameterIuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameterPointervAPPLE"); printf("glGetTexParameterPointervAPPLE: %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameterfv"); printf("glGetTexParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameteriv"); printf("glGetTexParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameterxvOES"); printf("glGetTexParameterxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureHandleARB"); printf("glGetTextureHandleARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureHandleNV"); printf("glGetTextureHandleNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureImage"); printf("glGetTextureImage : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureImageEXT"); printf("glGetTextureImageEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureLevelParameterfv"); printf("glGetTextureLevelParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureLevelParameterfvEXT"); printf("glGetTextureLevelParameterfvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureLevelParameteriv"); printf("glGetTextureLevelParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureLevelParameterivEXT"); printf("glGetTextureLevelParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameterIiv"); printf("glGetTextureParameterIiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameterIivEXT"); printf("glGetTextureParameterIivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameterIuiv"); printf("glGetTextureParameterIuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameterIuivEXT"); printf("glGetTextureParameterIuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameterfv"); printf("glGetTextureParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameterfvEXT"); printf("glGetTextureParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameteriv"); printf("glGetTextureParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameterivEXT"); printf("glGetTextureParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureSamplerHandleARB"); printf("glGetTextureSamplerHandleARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureSamplerHandleNV"); printf("glGetTextureSamplerHandleNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureSubImage"); printf("glGetTextureSubImage : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTrackMatrixivNV"); printf("glGetTrackMatrixivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTransformFeedbackVarying"); printf("glGetTransformFeedbackVarying : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTransformFeedbackVaryingEXT"); printf("glGetTransformFeedbackVaryingEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetTransformFeedbackVaryingNV"); printf("glGetTransformFeedbackVaryingNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetTransformFeedbacki64_v"); printf("glGetTransformFeedbacki64_v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTransformFeedbacki_v"); printf("glGetTransformFeedbacki_v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTransformFeedbackiv"); printf("glGetTransformFeedbackiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformBlockIndex"); printf("glGetUniformBlockIndex : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformBufferSizeEXT"); printf("glGetUniformBufferSizeEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformIndices"); printf("glGetUniformIndices : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformLocation"); printf("glGetUniformLocation : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformLocationARB"); printf("glGetUniformLocationARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformOffsetEXT"); printf("glGetUniformOffsetEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformSubroutineuiv"); printf("glGetUniformSubroutineuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformdv"); printf("glGetUniformdv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformfv"); printf("glGetUniformfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformfvARB"); printf("glGetUniformfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformi64vARB"); printf("glGetUniformi64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformi64vNV"); printf("glGetUniformi64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformiv"); printf("glGetUniformiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformivARB"); printf("glGetUniformivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformui64vARB"); printf("glGetUniformui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformui64vNV"); printf("glGetUniformui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformuiv"); printf("glGetUniformuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformuivEXT"); printf("glGetUniformuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUnsignedBytei_vEXT"); printf("glGetUnsignedBytei_vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUnsignedBytevEXT"); printf("glGetUnsignedBytevEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVariantArrayObjectfvATI"); printf("glGetVariantArrayObjectfvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVariantArrayObjectivATI"); printf("glGetVariantArrayObjectivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVariantBooleanvEXT"); printf("glGetVariantBooleanvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVariantFloatvEXT"); printf("glGetVariantFloatvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVariantIntegervEXT"); printf("glGetVariantIntegervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVariantPointervEXT"); printf("glGetVariantPointervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVaryingLocationNV"); printf("glGetVaryingLocationNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexArrayIndexed64iv"); printf("glGetVertexArrayIndexed64iv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexArrayIndexediv"); printf("glGetVertexArrayIndexediv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexArrayIntegeri_vEXT"); printf("glGetVertexArrayIntegeri_vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexArrayIntegervEXT"); printf("glGetVertexArrayIntegervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexArrayPointeri_vEXT"); printf("glGetVertexArrayPointeri_vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexArrayPointervEXT"); printf("glGetVertexArrayPointervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexArrayiv"); printf("glGetVertexArrayiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribArrayObjectfvATI"); printf("glGetVertexAttribArrayObjectfvATI: %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribArrayObjectivATI"); printf("glGetVertexAttribArrayObjectivATI: %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribIiv"); printf("glGetVertexAttribIiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribIivEXT"); printf("glGetVertexAttribIivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribIuiv"); printf("glGetVertexAttribIuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribIuivEXT"); printf("glGetVertexAttribIuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribLdv"); printf("glGetVertexAttribLdv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribLdvEXT"); printf("glGetVertexAttribLdvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribLi64vNV"); printf("glGetVertexAttribLi64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribLui64vARB"); printf("glGetVertexAttribLui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribLui64vNV"); printf("glGetVertexAttribLui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribPointerv"); printf("glGetVertexAttribPointerv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribPointervARB"); printf("glGetVertexAttribPointervARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribPointervNV"); printf("glGetVertexAttribPointervNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribdv"); printf("glGetVertexAttribdv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribdvARB"); printf("glGetVertexAttribdvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribdvNV"); printf("glGetVertexAttribdvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribfv"); printf("glGetVertexAttribfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribfvARB"); printf("glGetVertexAttribfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribfvNV"); printf("glGetVertexAttribfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribiv"); printf("glGetVertexAttribiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribivARB"); printf("glGetVertexAttribivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribivNV"); printf("glGetVertexAttribivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideoCaptureStreamdvNV"); printf("glGetVideoCaptureStreamdvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideoCaptureStreamfvNV"); printf("glGetVideoCaptureStreamfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideoCaptureStreamivNV"); printf("glGetVideoCaptureStreamivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideoCaptureivNV"); printf("glGetVideoCaptureivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideoi64vNV"); printf("glGetVideoi64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideoivNV"); printf("glGetVideoivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideoui64vNV"); printf("glGetVideoui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideouivNV"); printf("glGetVideouivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVkProcAddrNV"); printf("glGetVkProcAddrNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnColorTable"); printf("glGetnColorTable : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnColorTableARB"); printf("glGetnColorTableARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnCompressedTexImage"); printf("glGetnCompressedTexImage : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnCompressedTexImageARB"); printf("glGetnCompressedTexImageARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnConvolutionFilter"); printf("glGetnConvolutionFilter : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnConvolutionFilterARB"); printf("glGetnConvolutionFilterARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnHistogram"); printf("glGetnHistogram : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnHistogramARB"); printf("glGetnHistogramARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMapdv"); printf("glGetnMapdv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMapdvARB"); printf("glGetnMapdvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMapfv"); printf("glGetnMapfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMapfvARB"); printf("glGetnMapfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMapiv"); printf("glGetnMapiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMapivARB"); printf("glGetnMapivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMinmax"); printf("glGetnMinmax : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMinmaxARB"); printf("glGetnMinmaxARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPixelMapfv"); printf("glGetnPixelMapfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPixelMapfvARB"); printf("glGetnPixelMapfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPixelMapuiv"); printf("glGetnPixelMapuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPixelMapuivARB"); printf("glGetnPixelMapuivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPixelMapusv"); printf("glGetnPixelMapusv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPixelMapusvARB"); printf("glGetnPixelMapusvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPolygonStipple"); printf("glGetnPolygonStipple : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPolygonStippleARB"); printf("glGetnPolygonStippleARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnSeparableFilter"); printf("glGetnSeparableFilter : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnSeparableFilterARB"); printf("glGetnSeparableFilterARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnTexImage"); printf("glGetnTexImage : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnTexImageARB"); printf("glGetnTexImageARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformdv"); printf("glGetnUniformdv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformdvARB"); printf("glGetnUniformdvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformfv"); printf("glGetnUniformfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformfvARB"); printf("glGetnUniformfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformi64vARB"); printf("glGetnUniformi64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformiv"); printf("glGetnUniformiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformivARB"); printf("glGetnUniformivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformui64vARB"); printf("glGetnUniformui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformuiv"); printf("glGetnUniformuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformuivARB"); printf("glGetnUniformuivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactorbSUN"); printf("glGlobalAlphaFactorbSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactordSUN"); printf("glGlobalAlphaFactordSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactorfSUN"); printf("glGlobalAlphaFactorfSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactoriSUN"); printf("glGlobalAlphaFactoriSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactorsSUN"); printf("glGlobalAlphaFactorsSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactorubSUN"); printf("glGlobalAlphaFactorubSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactoruiSUN"); printf("glGlobalAlphaFactoruiSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactorusSUN"); printf("glGlobalAlphaFactorusSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glHint"); printf("glHint : %p\n", p); p = gl.OSMesaGetProcAddress("glHintPGI"); printf("glHintPGI : %p\n", p); p = gl.OSMesaGetProcAddress("glHistogram"); printf("glHistogram : %p\n", p); p = gl.OSMesaGetProcAddress("glHistogramEXT"); printf("glHistogramEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIglooInterfaceSGIX"); printf("glIglooInterfaceSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glImageTransformParameterfHP"); printf("glImageTransformParameterfHP : %p\n", p); p = gl.OSMesaGetProcAddress("glImageTransformParameterfvHP"); printf("glImageTransformParameterfvHP : %p\n", p); p = gl.OSMesaGetProcAddress("glImageTransformParameteriHP"); printf("glImageTransformParameteriHP : %p\n", p); p = gl.OSMesaGetProcAddress("glImageTransformParameterivHP"); printf("glImageTransformParameterivHP : %p\n", p); p = gl.OSMesaGetProcAddress("glImportMemoryFdEXT"); printf("glImportMemoryFdEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glImportMemoryWin32HandleEXT"); printf("glImportMemoryWin32HandleEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glImportMemoryWin32NameEXT"); printf("glImportMemoryWin32NameEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glImportSemaphoreFdEXT"); printf("glImportSemaphoreFdEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glImportSemaphoreWin32HandleEXT"); printf("glImportSemaphoreWin32HandleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glImportSemaphoreWin32NameEXT"); printf("glImportSemaphoreWin32NameEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glImportSyncEXT"); printf("glImportSyncEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexFormatNV"); printf("glIndexFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexFuncEXT"); printf("glIndexFuncEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexMask"); printf("glIndexMask : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexMaterialEXT"); printf("glIndexMaterialEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexPointer"); printf("glIndexPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexPointerEXT"); printf("glIndexPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexPointerListIBM"); printf("glIndexPointerListIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexd"); printf("glIndexd : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexdv"); printf("glIndexdv : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexf"); printf("glIndexf : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexfv"); printf("glIndexfv : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexi"); printf("glIndexi : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexiv"); printf("glIndexiv : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexs"); printf("glIndexs : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexsv"); printf("glIndexsv : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexub"); printf("glIndexub : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexubv"); printf("glIndexubv : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexxOES"); printf("glIndexxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexxvOES"); printf("glIndexxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glInitNames"); printf("glInitNames : %p\n", p); p = gl.OSMesaGetProcAddress("glInsertComponentEXT"); printf("glInsertComponentEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glInsertEventMarkerEXT"); printf("glInsertEventMarkerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glInstrumentsBufferSGIX"); printf("glInstrumentsBufferSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glInterleavedArrays"); printf("glInterleavedArrays : %p\n", p); p = gl.OSMesaGetProcAddress("glInterpolatePathsNV"); printf("glInterpolatePathsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateBufferData"); printf("glInvalidateBufferData : %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateBufferSubData"); printf("glInvalidateBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateFramebuffer"); printf("glInvalidateFramebuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateNamedFramebufferData"); printf("glInvalidateNamedFramebufferData: %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateNamedFramebufferSubData"); printf("glInvalidateNamedFramebufferSubData: %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateSubFramebuffer"); printf("glInvalidateSubFramebuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateTexImage"); printf("glInvalidateTexImage : %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateTexSubImage"); printf("glInvalidateTexSubImage : %p\n", p); p = gl.OSMesaGetProcAddress("glIsAsyncMarkerSGIX"); printf("glIsAsyncMarkerSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glIsBuffer"); printf("glIsBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glIsBufferARB"); printf("glIsBufferARB : %p\n", p); p = gl.OSMesaGetProcAddress("glIsBufferResidentNV"); printf("glIsBufferResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsCommandListNV"); printf("glIsCommandListNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsEnabled"); printf("glIsEnabled : %p\n", p); p = gl.OSMesaGetProcAddress("glIsEnabledIndexedEXT"); printf("glIsEnabledIndexedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIsEnabledi"); printf("glIsEnabledi : %p\n", p); p = gl.OSMesaGetProcAddress("glIsFenceAPPLE"); printf("glIsFenceAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glIsFenceNV"); printf("glIsFenceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsFramebuffer"); printf("glIsFramebuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glIsFramebufferEXT"); printf("glIsFramebufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIsImageHandleResidentARB"); printf("glIsImageHandleResidentARB : %p\n", p); p = gl.OSMesaGetProcAddress("glIsImageHandleResidentNV"); printf("glIsImageHandleResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsList"); printf("glIsList : %p\n", p); p = gl.OSMesaGetProcAddress("glIsMemoryObjectEXT"); printf("glIsMemoryObjectEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIsNameAMD"); printf("glIsNameAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glIsNamedBufferResidentNV"); printf("glIsNamedBufferResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsNamedStringARB"); printf("glIsNamedStringARB : %p\n", p); p = gl.OSMesaGetProcAddress("glIsObjectBufferATI"); printf("glIsObjectBufferATI : %p\n", p); p = gl.OSMesaGetProcAddress("glIsOcclusionQueryNV"); printf("glIsOcclusionQueryNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsPathNV"); printf("glIsPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsPointInFillPathNV"); printf("glIsPointInFillPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsPointInStrokePathNV"); printf("glIsPointInStrokePathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsProgram"); printf("glIsProgram : %p\n", p); p = gl.OSMesaGetProcAddress("glIsProgramARB"); printf("glIsProgramARB : %p\n", p); p = gl.OSMesaGetProcAddress("glIsProgramNV"); printf("glIsProgramNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsProgramPipeline"); printf("glIsProgramPipeline : %p\n", p); p = gl.OSMesaGetProcAddress("glIsQuery"); printf("glIsQuery : %p\n", p); p = gl.OSMesaGetProcAddress("glIsQueryARB"); printf("glIsQueryARB : %p\n", p); p = gl.OSMesaGetProcAddress("glIsRenderbuffer"); printf("glIsRenderbuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glIsRenderbufferEXT"); printf("glIsRenderbufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIsSampler"); printf("glIsSampler : %p\n", p); p = gl.OSMesaGetProcAddress("glIsSemaphoreEXT"); printf("glIsSemaphoreEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIsShader"); printf("glIsShader : %p\n", p); p = gl.OSMesaGetProcAddress("glIsStateNV"); printf("glIsStateNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsSync"); printf("glIsSync : %p\n", p); p = gl.OSMesaGetProcAddress("glIsTexture"); printf("glIsTexture : %p\n", p); p = gl.OSMesaGetProcAddress("glIsTextureEXT"); printf("glIsTextureEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIsTextureHandleResidentARB"); printf("glIsTextureHandleResidentARB : %p\n", p); p = gl.OSMesaGetProcAddress("glIsTextureHandleResidentNV"); printf("glIsTextureHandleResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsTransformFeedback"); printf("glIsTransformFeedback : %p\n", p); p = gl.OSMesaGetProcAddress("glIsTransformFeedbackNV"); printf("glIsTransformFeedbackNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsVariantEnabledEXT"); printf("glIsVariantEnabledEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIsVertexArray"); printf("glIsVertexArray : %p\n", p); p = gl.OSMesaGetProcAddress("glIsVertexArrayAPPLE"); printf("glIsVertexArrayAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glIsVertexAttribEnabledAPPLE"); printf("glIsVertexAttribEnabledAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glLGPUCopyImageSubDataNVX"); printf("glLGPUCopyImageSubDataNVX : %p\n", p); p = gl.OSMesaGetProcAddress("glLGPUInterlockNVX"); printf("glLGPUInterlockNVX : %p\n", p); p = gl.OSMesaGetProcAddress("glLGPUNamedBufferSubDataNVX"); printf("glLGPUNamedBufferSubDataNVX : %p\n", p); p = gl.OSMesaGetProcAddress("glLabelObjectEXT"); printf("glLabelObjectEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glLightEnviSGIX"); printf("glLightEnviSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glLightModelf"); printf("glLightModelf : %p\n", p); p = gl.OSMesaGetProcAddress("glLightModelfv"); printf("glLightModelfv : %p\n", p); p = gl.OSMesaGetProcAddress("glLightModeli"); printf("glLightModeli : %p\n", p); p = gl.OSMesaGetProcAddress("glLightModeliv"); printf("glLightModeliv : %p\n", p); p = gl.OSMesaGetProcAddress("glLightModelxOES"); printf("glLightModelxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glLightModelxvOES"); printf("glLightModelxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glLightf"); printf("glLightf : %p\n", p); p = gl.OSMesaGetProcAddress("glLightfv"); printf("glLightfv : %p\n", p); p = gl.OSMesaGetProcAddress("glLighti"); printf("glLighti : %p\n", p); p = gl.OSMesaGetProcAddress("glLightiv"); printf("glLightiv : %p\n", p); p = gl.OSMesaGetProcAddress("glLightxOES"); printf("glLightxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glLightxvOES"); printf("glLightxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glLineStipple"); printf("glLineStipple : %p\n", p); p = gl.OSMesaGetProcAddress("glLineWidth"); printf("glLineWidth : %p\n", p); p = gl.OSMesaGetProcAddress("glLineWidthxOES"); printf("glLineWidthxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glLinkProgram"); printf("glLinkProgram : %p\n", p); p = gl.OSMesaGetProcAddress("glLinkProgramARB"); printf("glLinkProgramARB : %p\n", p); p = gl.OSMesaGetProcAddress("glListBase"); printf("glListBase : %p\n", p); p = gl.OSMesaGetProcAddress("glListDrawCommandsStatesClientNV"); printf("glListDrawCommandsStatesClientNV: %p\n", p); p = gl.OSMesaGetProcAddress("glListParameterfSGIX"); printf("glListParameterfSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glListParameterfvSGIX"); printf("glListParameterfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glListParameteriSGIX"); printf("glListParameteriSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glListParameterivSGIX"); printf("glListParameterivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadIdentity"); printf("glLoadIdentity : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadIdentityDeformationMapSGIX"); printf("glLoadIdentityDeformationMapSGIX: %p\n", p); p = gl.OSMesaGetProcAddress("glLoadMatrixd"); printf("glLoadMatrixd : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadMatrixf"); printf("glLoadMatrixf : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadMatrixxOES"); printf("glLoadMatrixxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadName"); printf("glLoadName : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadProgramNV"); printf("glLoadProgramNV : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadTransposeMatrixd"); printf("glLoadTransposeMatrixd : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadTransposeMatrixdARB"); printf("glLoadTransposeMatrixdARB : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadTransposeMatrixf"); printf("glLoadTransposeMatrixf : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadTransposeMatrixfARB"); printf("glLoadTransposeMatrixfARB : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadTransposeMatrixxOES"); printf("glLoadTransposeMatrixxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glLockArraysEXT"); printf("glLockArraysEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glLogicOp"); printf("glLogicOp : %p\n", p); p = gl.OSMesaGetProcAddress("glMakeBufferNonResidentNV"); printf("glMakeBufferNonResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMakeBufferResidentNV"); printf("glMakeBufferResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMakeImageHandleNonResidentARB"); printf("glMakeImageHandleNonResidentARB: %p\n", p); p = gl.OSMesaGetProcAddress("glMakeImageHandleNonResidentNV"); printf("glMakeImageHandleNonResidentNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMakeImageHandleResidentARB"); printf("glMakeImageHandleResidentARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMakeImageHandleResidentNV"); printf("glMakeImageHandleResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMakeNamedBufferNonResidentNV"); printf("glMakeNamedBufferNonResidentNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMakeNamedBufferResidentNV"); printf("glMakeNamedBufferResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMakeTextureHandleNonResidentARB"); printf("glMakeTextureHandleNonResidentARB: %p\n", p); p = gl.OSMesaGetProcAddress("glMakeTextureHandleNonResidentNV"); printf("glMakeTextureHandleNonResidentNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMakeTextureHandleResidentARB"); printf("glMakeTextureHandleResidentARB: %p\n", p); p = gl.OSMesaGetProcAddress("glMakeTextureHandleResidentNV"); printf("glMakeTextureHandleResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMap1d"); printf("glMap1d : %p\n", p); p = gl.OSMesaGetProcAddress("glMap1f"); printf("glMap1f : %p\n", p); p = gl.OSMesaGetProcAddress("glMap1xOES"); printf("glMap1xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMap2d"); printf("glMap2d : %p\n", p); p = gl.OSMesaGetProcAddress("glMap2f"); printf("glMap2f : %p\n", p); p = gl.OSMesaGetProcAddress("glMap2xOES"); printf("glMap2xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMapBuffer"); printf("glMapBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glMapBufferARB"); printf("glMapBufferARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMapBufferRange"); printf("glMapBufferRange : %p\n", p); p = gl.OSMesaGetProcAddress("glMapControlPointsNV"); printf("glMapControlPointsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMapGrid1d"); printf("glMapGrid1d : %p\n", p); p = gl.OSMesaGetProcAddress("glMapGrid1f"); printf("glMapGrid1f : %p\n", p); p = gl.OSMesaGetProcAddress("glMapGrid1xOES"); printf("glMapGrid1xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMapGrid2d"); printf("glMapGrid2d : %p\n", p); p = gl.OSMesaGetProcAddress("glMapGrid2f"); printf("glMapGrid2f : %p\n", p); p = gl.OSMesaGetProcAddress("glMapGrid2xOES"); printf("glMapGrid2xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMapNamedBuffer"); printf("glMapNamedBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glMapNamedBufferEXT"); printf("glMapNamedBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMapNamedBufferRange"); printf("glMapNamedBufferRange : %p\n", p); p = gl.OSMesaGetProcAddress("glMapNamedBufferRangeEXT"); printf("glMapNamedBufferRangeEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMapObjectBufferATI"); printf("glMapObjectBufferATI : %p\n", p); p = gl.OSMesaGetProcAddress("glMapParameterfvNV"); printf("glMapParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMapParameterivNV"); printf("glMapParameterivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMapTexture2DINTEL"); printf("glMapTexture2DINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glMapVertexAttrib1dAPPLE"); printf("glMapVertexAttrib1dAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glMapVertexAttrib1fAPPLE"); printf("glMapVertexAttrib1fAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glMapVertexAttrib2dAPPLE"); printf("glMapVertexAttrib2dAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glMapVertexAttrib2fAPPLE"); printf("glMapVertexAttrib2fAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glMaterialf"); printf("glMaterialf : %p\n", p); p = gl.OSMesaGetProcAddress("glMaterialfv"); printf("glMaterialfv : %p\n", p); p = gl.OSMesaGetProcAddress("glMateriali"); printf("glMateriali : %p\n", p); p = gl.OSMesaGetProcAddress("glMaterialiv"); printf("glMaterialiv : %p\n", p); p = gl.OSMesaGetProcAddress("glMaterialxOES"); printf("glMaterialxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMaterialxvOES"); printf("glMaterialxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixFrustumEXT"); printf("glMatrixFrustumEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixIndexPointerARB"); printf("glMatrixIndexPointerARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixIndexubvARB"); printf("glMatrixIndexubvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixIndexuivARB"); printf("glMatrixIndexuivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixIndexusvARB"); printf("glMatrixIndexusvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoad3x2fNV"); printf("glMatrixLoad3x2fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoad3x3fNV"); printf("glMatrixLoad3x3fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoadIdentityEXT"); printf("glMatrixLoadIdentityEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoadTranspose3x3fNV"); printf("glMatrixLoadTranspose3x3fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoadTransposedEXT"); printf("glMatrixLoadTransposedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoadTransposefEXT"); printf("glMatrixLoadTransposefEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoaddEXT"); printf("glMatrixLoaddEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoadfEXT"); printf("glMatrixLoadfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMode"); printf("glMatrixMode : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMult3x2fNV"); printf("glMatrixMult3x2fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMult3x3fNV"); printf("glMatrixMult3x3fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMultTranspose3x3fNV"); printf("glMatrixMultTranspose3x3fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMultTransposedEXT"); printf("glMatrixMultTransposedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMultTransposefEXT"); printf("glMatrixMultTransposefEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMultdEXT"); printf("glMatrixMultdEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMultfEXT"); printf("glMatrixMultfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixOrthoEXT"); printf("glMatrixOrthoEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixPopEXT"); printf("glMatrixPopEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixPushEXT"); printf("glMatrixPushEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixRotatedEXT"); printf("glMatrixRotatedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixRotatefEXT"); printf("glMatrixRotatefEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixScaledEXT"); printf("glMatrixScaledEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixScalefEXT"); printf("glMatrixScalefEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixTranslatedEXT"); printf("glMatrixTranslatedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixTranslatefEXT"); printf("glMatrixTranslatefEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMaxShaderCompilerThreadsARB"); printf("glMaxShaderCompilerThreadsARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMaxShaderCompilerThreadsKHR"); printf("glMaxShaderCompilerThreadsKHR : %p\n", p); p = gl.OSMesaGetProcAddress("glMemoryBarrier"); printf("glMemoryBarrier : %p\n", p); p = gl.OSMesaGetProcAddress("glMemoryBarrierByRegion"); printf("glMemoryBarrierByRegion : %p\n", p); p = gl.OSMesaGetProcAddress("glMemoryBarrierEXT"); printf("glMemoryBarrierEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMemoryObjectParameterivEXT"); printf("glMemoryObjectParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMinSampleShading"); printf("glMinSampleShading : %p\n", p); p = gl.OSMesaGetProcAddress("glMinSampleShadingARB"); printf("glMinSampleShadingARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMinmax"); printf("glMinmax : %p\n", p); p = gl.OSMesaGetProcAddress("glMinmaxEXT"); printf("glMinmaxEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultMatrixd"); printf("glMultMatrixd : %p\n", p); p = gl.OSMesaGetProcAddress("glMultMatrixf"); printf("glMultMatrixf : %p\n", p); p = gl.OSMesaGetProcAddress("glMultMatrixxOES"); printf("glMultMatrixxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultTransposeMatrixd"); printf("glMultTransposeMatrixd : %p\n", p); p = gl.OSMesaGetProcAddress("glMultTransposeMatrixdARB"); printf("glMultTransposeMatrixdARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultTransposeMatrixf"); printf("glMultTransposeMatrixf : %p\n", p); p = gl.OSMesaGetProcAddress("glMultTransposeMatrixfARB"); printf("glMultTransposeMatrixfARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultTransposeMatrixxOES"); printf("glMultTransposeMatrixxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArrays"); printf("glMultiDrawArrays : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArraysEXT"); printf("glMultiDrawArraysEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArraysIndirect"); printf("glMultiDrawArraysIndirect : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArraysIndirectAMD"); printf("glMultiDrawArraysIndirectAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArraysIndirectBindlessCountNV"); printf("glMultiDrawArraysIndirectBindlessCountNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArraysIndirectBindlessNV"); printf("glMultiDrawArraysIndirectBindlessNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArraysIndirectCount"); printf("glMultiDrawArraysIndirectCount: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArraysIndirectCountARB"); printf("glMultiDrawArraysIndirectCountARB: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementArrayAPPLE"); printf("glMultiDrawElementArrayAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElements"); printf("glMultiDrawElements : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsBaseVertex"); printf("glMultiDrawElementsBaseVertex : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsEXT"); printf("glMultiDrawElementsEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsIndirect"); printf("glMultiDrawElementsIndirect : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsIndirectAMD"); printf("glMultiDrawElementsIndirectAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsIndirectBindlessCountNV"); printf("glMultiDrawElementsIndirectBindlessCountNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsIndirectBindlessNV"); printf("glMultiDrawElementsIndirectBindlessNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsIndirectCount"); printf("glMultiDrawElementsIndirectCount: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsIndirectCountARB"); printf("glMultiDrawElementsIndirectCountARB: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawRangeElementArrayAPPLE"); printf("glMultiDrawRangeElementArrayAPPLE: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiModeDrawArraysIBM"); printf("glMultiModeDrawArraysIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiModeDrawElementsIBM"); printf("glMultiModeDrawElementsIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexBufferEXT"); printf("glMultiTexBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1bOES"); printf("glMultiTexCoord1bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1bvOES"); printf("glMultiTexCoord1bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1d"); printf("glMultiTexCoord1d : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1dARB"); printf("glMultiTexCoord1dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1dv"); printf("glMultiTexCoord1dv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1dvARB"); printf("glMultiTexCoord1dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1f"); printf("glMultiTexCoord1f : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1fARB"); printf("glMultiTexCoord1fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1fv"); printf("glMultiTexCoord1fv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1fvARB"); printf("glMultiTexCoord1fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1hNV"); printf("glMultiTexCoord1hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1hvNV"); printf("glMultiTexCoord1hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1i"); printf("glMultiTexCoord1i : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1iARB"); printf("glMultiTexCoord1iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1iv"); printf("glMultiTexCoord1iv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1ivARB"); printf("glMultiTexCoord1ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1s"); printf("glMultiTexCoord1s : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1sARB"); printf("glMultiTexCoord1sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1sv"); printf("glMultiTexCoord1sv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1svARB"); printf("glMultiTexCoord1svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1xOES"); printf("glMultiTexCoord1xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1xvOES"); printf("glMultiTexCoord1xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2bOES"); printf("glMultiTexCoord2bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2bvOES"); printf("glMultiTexCoord2bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2d"); printf("glMultiTexCoord2d : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2dARB"); printf("glMultiTexCoord2dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2dv"); printf("glMultiTexCoord2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2dvARB"); printf("glMultiTexCoord2dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2f"); printf("glMultiTexCoord2f : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2fARB"); printf("glMultiTexCoord2fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2fv"); printf("glMultiTexCoord2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2fvARB"); printf("glMultiTexCoord2fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2hNV"); printf("glMultiTexCoord2hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2hvNV"); printf("glMultiTexCoord2hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2i"); printf("glMultiTexCoord2i : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2iARB"); printf("glMultiTexCoord2iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2iv"); printf("glMultiTexCoord2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2ivARB"); printf("glMultiTexCoord2ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2s"); printf("glMultiTexCoord2s : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2sARB"); printf("glMultiTexCoord2sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2sv"); printf("glMultiTexCoord2sv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2svARB"); printf("glMultiTexCoord2svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2xOES"); printf("glMultiTexCoord2xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2xvOES"); printf("glMultiTexCoord2xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3bOES"); printf("glMultiTexCoord3bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3bvOES"); printf("glMultiTexCoord3bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3d"); printf("glMultiTexCoord3d : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3dARB"); printf("glMultiTexCoord3dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3dv"); printf("glMultiTexCoord3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3dvARB"); printf("glMultiTexCoord3dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3f"); printf("glMultiTexCoord3f : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3fARB"); printf("glMultiTexCoord3fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3fv"); printf("glMultiTexCoord3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3fvARB"); printf("glMultiTexCoord3fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3hNV"); printf("glMultiTexCoord3hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3hvNV"); printf("glMultiTexCoord3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3i"); printf("glMultiTexCoord3i : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3iARB"); printf("glMultiTexCoord3iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3iv"); printf("glMultiTexCoord3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3ivARB"); printf("glMultiTexCoord3ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3s"); printf("glMultiTexCoord3s : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3sARB"); printf("glMultiTexCoord3sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3sv"); printf("glMultiTexCoord3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3svARB"); printf("glMultiTexCoord3svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3xOES"); printf("glMultiTexCoord3xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3xvOES"); printf("glMultiTexCoord3xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4bOES"); printf("glMultiTexCoord4bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4bvOES"); printf("glMultiTexCoord4bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4d"); printf("glMultiTexCoord4d : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4dARB"); printf("glMultiTexCoord4dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4dv"); printf("glMultiTexCoord4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4dvARB"); printf("glMultiTexCoord4dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4f"); printf("glMultiTexCoord4f : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4fARB"); printf("glMultiTexCoord4fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4fv"); printf("glMultiTexCoord4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4fvARB"); printf("glMultiTexCoord4fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4hNV"); printf("glMultiTexCoord4hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4hvNV"); printf("glMultiTexCoord4hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4i"); printf("glMultiTexCoord4i : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4iARB"); printf("glMultiTexCoord4iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4iv"); printf("glMultiTexCoord4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4ivARB"); printf("glMultiTexCoord4ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4s"); printf("glMultiTexCoord4s : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4sARB"); printf("glMultiTexCoord4sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4sv"); printf("glMultiTexCoord4sv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4svARB"); printf("glMultiTexCoord4svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4xOES"); printf("glMultiTexCoord4xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4xvOES"); printf("glMultiTexCoord4xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP1ui"); printf("glMultiTexCoordP1ui : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP1uiv"); printf("glMultiTexCoordP1uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP2ui"); printf("glMultiTexCoordP2ui : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP2uiv"); printf("glMultiTexCoordP2uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP3ui"); printf("glMultiTexCoordP3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP3uiv"); printf("glMultiTexCoordP3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP4ui"); printf("glMultiTexCoordP4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP4uiv"); printf("glMultiTexCoordP4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordPointerEXT"); printf("glMultiTexCoordPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexEnvfEXT"); printf("glMultiTexEnvfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexEnvfvEXT"); printf("glMultiTexEnvfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexEnviEXT"); printf("glMultiTexEnviEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexEnvivEXT"); printf("glMultiTexEnvivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexGendEXT"); printf("glMultiTexGendEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexGendvEXT"); printf("glMultiTexGendvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexGenfEXT"); printf("glMultiTexGenfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexGenfvEXT"); printf("glMultiTexGenfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexGeniEXT"); printf("glMultiTexGeniEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexGenivEXT"); printf("glMultiTexGenivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexImage1DEXT"); printf("glMultiTexImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexImage2DEXT"); printf("glMultiTexImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexImage3DEXT"); printf("glMultiTexImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexParameterIivEXT"); printf("glMultiTexParameterIivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexParameterIuivEXT"); printf("glMultiTexParameterIuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexParameterfEXT"); printf("glMultiTexParameterfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexParameterfvEXT"); printf("glMultiTexParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexParameteriEXT"); printf("glMultiTexParameteriEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexParameterivEXT"); printf("glMultiTexParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexRenderbufferEXT"); printf("glMultiTexRenderbufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexSubImage1DEXT"); printf("glMultiTexSubImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexSubImage2DEXT"); printf("glMultiTexSubImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexSubImage3DEXT"); printf("glMultiTexSubImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastBarrierNV"); printf("glMulticastBarrierNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastBlitFramebufferNV"); printf("glMulticastBlitFramebufferNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastBufferSubDataNV"); printf("glMulticastBufferSubDataNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastCopyBufferSubDataNV"); printf("glMulticastCopyBufferSubDataNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastCopyImageSubDataNV"); printf("glMulticastCopyImageSubDataNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastFramebufferSampleLocationsfvNV"); printf("glMulticastFramebufferSampleLocationsfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastGetQueryObjecti64vNV"); printf("glMulticastGetQueryObjecti64vNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastGetQueryObjectivNV"); printf("glMulticastGetQueryObjectivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastGetQueryObjectui64vNV"); printf("glMulticastGetQueryObjectui64vNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastGetQueryObjectuivNV"); printf("glMulticastGetQueryObjectuivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastWaitSyncNV"); printf("glMulticastWaitSyncNV : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferData"); printf("glNamedBufferData : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferDataEXT"); printf("glNamedBufferDataEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferPageCommitmentARB"); printf("glNamedBufferPageCommitmentARB: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferPageCommitmentEXT"); printf("glNamedBufferPageCommitmentEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferStorage"); printf("glNamedBufferStorage : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferStorageEXT"); printf("glNamedBufferStorageEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferStorageExternalEXT"); printf("glNamedBufferStorageExternalEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferStorageMemEXT"); printf("glNamedBufferStorageMemEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferSubData"); printf("glNamedBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferSubDataEXT"); printf("glNamedBufferSubDataEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedCopyBufferSubDataEXT"); printf("glNamedCopyBufferSubDataEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferDrawBuffer"); printf("glNamedFramebufferDrawBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferDrawBuffers"); printf("glNamedFramebufferDrawBuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferParameteri"); printf("glNamedFramebufferParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferParameteriEXT"); printf("glNamedFramebufferParameteriEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferReadBuffer"); printf("glNamedFramebufferReadBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferRenderbuffer"); printf("glNamedFramebufferRenderbuffer: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferRenderbufferEXT"); printf("glNamedFramebufferRenderbufferEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferSampleLocationsfvARB"); printf("glNamedFramebufferSampleLocationsfvARB: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferSampleLocationsfvNV"); printf("glNamedFramebufferSampleLocationsfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferSamplePositionsfvAMD"); printf("glNamedFramebufferSamplePositionsfvAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTexture"); printf("glNamedFramebufferTexture : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTexture1DEXT"); printf("glNamedFramebufferTexture1DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTexture2DEXT"); printf("glNamedFramebufferTexture2DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTexture3DEXT"); printf("glNamedFramebufferTexture3DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTextureEXT"); printf("glNamedFramebufferTextureEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTextureFaceEXT"); printf("glNamedFramebufferTextureFaceEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTextureLayer"); printf("glNamedFramebufferTextureLayer: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTextureLayerEXT"); printf("glNamedFramebufferTextureLayerEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameter4dEXT"); printf("glNamedProgramLocalParameter4dEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameter4dvEXT"); printf("glNamedProgramLocalParameter4dvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameter4fEXT"); printf("glNamedProgramLocalParameter4fEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameter4fvEXT"); printf("glNamedProgramLocalParameter4fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameterI4iEXT"); printf("glNamedProgramLocalParameterI4iEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameterI4ivEXT"); printf("glNamedProgramLocalParameterI4ivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameterI4uiEXT"); printf("glNamedProgramLocalParameterI4uiEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameterI4uivEXT"); printf("glNamedProgramLocalParameterI4uivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameters4fvEXT"); printf("glNamedProgramLocalParameters4fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParametersI4ivEXT"); printf("glNamedProgramLocalParametersI4ivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParametersI4uivEXT"); printf("glNamedProgramLocalParametersI4uivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramStringEXT"); printf("glNamedProgramStringEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedRenderbufferStorage"); printf("glNamedRenderbufferStorage : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedRenderbufferStorageEXT"); printf("glNamedRenderbufferStorageEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedRenderbufferStorageMultisample"); printf("glNamedRenderbufferStorageMultisample: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedRenderbufferStorageMultisampleCoverageEXT"); printf("glNamedRenderbufferStorageMultisampleCoverageEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedRenderbufferStorageMultisampleEXT"); printf("glNamedRenderbufferStorageMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedStringARB"); printf("glNamedStringARB : %p\n", p); p = gl.OSMesaGetProcAddress("glNewList"); printf("glNewList : %p\n", p); p = gl.OSMesaGetProcAddress("glNewObjectBufferATI"); printf("glNewObjectBufferATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNewTraceMESA"); printf("glNewTraceMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3b"); printf("glNormal3b : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3bv"); printf("glNormal3bv : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3d"); printf("glNormal3d : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3dv"); printf("glNormal3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3f"); printf("glNormal3f : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3fVertex3fSUN"); printf("glNormal3fVertex3fSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3fVertex3fvSUN"); printf("glNormal3fVertex3fvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3fv"); printf("glNormal3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3hNV"); printf("glNormal3hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3hvNV"); printf("glNormal3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3i"); printf("glNormal3i : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3iv"); printf("glNormal3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3s"); printf("glNormal3s : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3sv"); printf("glNormal3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3xOES"); printf("glNormal3xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3xvOES"); printf("glNormal3xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalFormatNV"); printf("glNormalFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalP3ui"); printf("glNormalP3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalP3uiv"); printf("glNormalP3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalPointer"); printf("glNormalPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalPointerEXT"); printf("glNormalPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalPointerListIBM"); printf("glNormalPointerListIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalPointervINTEL"); printf("glNormalPointervINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3bATI"); printf("glNormalStream3bATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3bvATI"); printf("glNormalStream3bvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3dATI"); printf("glNormalStream3dATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3dvATI"); printf("glNormalStream3dvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3fATI"); printf("glNormalStream3fATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3fvATI"); printf("glNormalStream3fvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3iATI"); printf("glNormalStream3iATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3ivATI"); printf("glNormalStream3ivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3sATI"); printf("glNormalStream3sATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3svATI"); printf("glNormalStream3svATI : %p\n", p); p = gl.OSMesaGetProcAddress("glObjectLabel"); printf("glObjectLabel : %p\n", p); p = gl.OSMesaGetProcAddress("glObjectPtrLabel"); printf("glObjectPtrLabel : %p\n", p); p = gl.OSMesaGetProcAddress("glObjectPurgeableAPPLE"); printf("glObjectPurgeableAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glObjectUnpurgeableAPPLE"); printf("glObjectUnpurgeableAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glOrtho"); printf("glOrtho : %p\n", p); p = gl.OSMesaGetProcAddress("glOrthof"); printf("glOrthof : %p\n", p); p = gl.OSMesaGetProcAddress("glOrthofOES"); printf("glOrthofOES : %p\n", p); p = gl.OSMesaGetProcAddress("glOrthoxOES"); printf("glOrthoxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glPNTrianglesfATI"); printf("glPNTrianglesfATI : %p\n", p); p = gl.OSMesaGetProcAddress("glPNTrianglesiATI"); printf("glPNTrianglesiATI : %p\n", p); p = gl.OSMesaGetProcAddress("glPassTexCoordATI"); printf("glPassTexCoordATI : %p\n", p); p = gl.OSMesaGetProcAddress("glPassThrough"); printf("glPassThrough : %p\n", p); p = gl.OSMesaGetProcAddress("glPassThroughxOES"); printf("glPassThroughxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glPatchParameterfv"); printf("glPatchParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glPatchParameteri"); printf("glPatchParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glPathColorGenNV"); printf("glPathColorGenNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathCommandsNV"); printf("glPathCommandsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathCoordsNV"); printf("glPathCoordsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathCoverDepthFuncNV"); printf("glPathCoverDepthFuncNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathDashArrayNV"); printf("glPathDashArrayNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathFogGenNV"); printf("glPathFogGenNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathGlyphIndexArrayNV"); printf("glPathGlyphIndexArrayNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathGlyphIndexRangeNV"); printf("glPathGlyphIndexRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathGlyphRangeNV"); printf("glPathGlyphRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathGlyphsNV"); printf("glPathGlyphsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathMemoryGlyphIndexArrayNV"); printf("glPathMemoryGlyphIndexArrayNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathParameterfNV"); printf("glPathParameterfNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathParameterfvNV"); printf("glPathParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathParameteriNV"); printf("glPathParameteriNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathParameterivNV"); printf("glPathParameterivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathStencilDepthOffsetNV"); printf("glPathStencilDepthOffsetNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathStencilFuncNV"); printf("glPathStencilFuncNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathStringNV"); printf("glPathStringNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathSubCommandsNV"); printf("glPathSubCommandsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathSubCoordsNV"); printf("glPathSubCoordsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathTexGenNV"); printf("glPathTexGenNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPauseTransformFeedback"); printf("glPauseTransformFeedback : %p\n", p); p = gl.OSMesaGetProcAddress("glPauseTransformFeedbackNV"); printf("glPauseTransformFeedbackNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelDataRangeNV"); printf("glPixelDataRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelMapfv"); printf("glPixelMapfv : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelMapuiv"); printf("glPixelMapuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelMapusv"); printf("glPixelMapusv : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelMapx"); printf("glPixelMapx : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelStoref"); printf("glPixelStoref : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelStorei"); printf("glPixelStorei : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelStorex"); printf("glPixelStorex : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTexGenParameterfSGIS"); printf("glPixelTexGenParameterfSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTexGenParameterfvSGIS"); printf("glPixelTexGenParameterfvSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTexGenParameteriSGIS"); printf("glPixelTexGenParameteriSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTexGenParameterivSGIS"); printf("glPixelTexGenParameterivSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTexGenSGIX"); printf("glPixelTexGenSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTransferf"); printf("glPixelTransferf : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTransferi"); printf("glPixelTransferi : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTransferxOES"); printf("glPixelTransferxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTransformParameterfEXT"); printf("glPixelTransformParameterfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTransformParameterfvEXT"); printf("glPixelTransformParameterfvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTransformParameteriEXT"); printf("glPixelTransformParameteriEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTransformParameterivEXT"); printf("glPixelTransformParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glPixelZoom"); printf("glPixelZoom : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelZoomxOES"); printf("glPixelZoomxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glPointAlongPathNV"); printf("glPointAlongPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterf"); printf("glPointParameterf : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterfARB"); printf("glPointParameterfARB : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterfEXT"); printf("glPointParameterfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterfSGIS"); printf("glPointParameterfSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterfv"); printf("glPointParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterfvARB"); printf("glPointParameterfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterfvEXT"); printf("glPointParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterfvSGIS"); printf("glPointParameterfvSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameteri"); printf("glPointParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameteriNV"); printf("glPointParameteriNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameteriv"); printf("glPointParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterivNV"); printf("glPointParameterivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterxvOES"); printf("glPointParameterxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glPointSize"); printf("glPointSize : %p\n", p); p = gl.OSMesaGetProcAddress("glPointSizePointerAPPLE"); printf("glPointSizePointerAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glPointSizexOES"); printf("glPointSizexOES : %p\n", p); p = gl.OSMesaGetProcAddress("glPollAsyncSGIX"); printf("glPollAsyncSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glPollInstrumentsSGIX"); printf("glPollInstrumentsSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glPolygonMode"); printf("glPolygonMode : %p\n", p); p = gl.OSMesaGetProcAddress("glPolygonOffset"); printf("glPolygonOffset : %p\n", p); p = gl.OSMesaGetProcAddress("glPolygonOffsetClamp"); printf("glPolygonOffsetClamp : %p\n", p); p = gl.OSMesaGetProcAddress("glPolygonOffsetClampEXT"); printf("glPolygonOffsetClampEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPolygonOffsetEXT"); printf("glPolygonOffsetEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPolygonOffsetxOES"); printf("glPolygonOffsetxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glPolygonStipple"); printf("glPolygonStipple : %p\n", p); p = gl.OSMesaGetProcAddress("glPopAttrib"); printf("glPopAttrib : %p\n", p); p = gl.OSMesaGetProcAddress("glPopClientAttrib"); printf("glPopClientAttrib : %p\n", p); p = gl.OSMesaGetProcAddress("glPopDebugGroup"); printf("glPopDebugGroup : %p\n", p); p = gl.OSMesaGetProcAddress("glPopGroupMarkerEXT"); printf("glPopGroupMarkerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPopMatrix"); printf("glPopMatrix : %p\n", p); p = gl.OSMesaGetProcAddress("glPopName"); printf("glPopName : %p\n", p); p = gl.OSMesaGetProcAddress("glPresentFrameDualFillNV"); printf("glPresentFrameDualFillNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPresentFrameKeyedNV"); printf("glPresentFrameKeyedNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPrimitiveBoundingBoxARB"); printf("glPrimitiveBoundingBoxARB : %p\n", p); p = gl.OSMesaGetProcAddress("glPrimitiveRestartIndex"); printf("glPrimitiveRestartIndex : %p\n", p); p = gl.OSMesaGetProcAddress("glPrimitiveRestartIndexNV"); printf("glPrimitiveRestartIndexNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPrimitiveRestartNV"); printf("glPrimitiveRestartNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPrioritizeTextures"); printf("glPrioritizeTextures : %p\n", p); p = gl.OSMesaGetProcAddress("glPrioritizeTexturesEXT"); printf("glPrioritizeTexturesEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPrioritizeTexturesxOES"); printf("glPrioritizeTexturesxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramBinary"); printf("glProgramBinary : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramBufferParametersIivNV"); printf("glProgramBufferParametersIivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramBufferParametersIuivNV"); printf("glProgramBufferParametersIuivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramBufferParametersfvNV"); printf("glProgramBufferParametersfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramCallbackMESA"); printf("glProgramCallbackMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameter4dARB"); printf("glProgramEnvParameter4dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameter4dvARB"); printf("glProgramEnvParameter4dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameter4fARB"); printf("glProgramEnvParameter4fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameter4fvARB"); printf("glProgramEnvParameter4fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameterI4iNV"); printf("glProgramEnvParameterI4iNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameterI4ivNV"); printf("glProgramEnvParameterI4ivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameterI4uiNV"); printf("glProgramEnvParameterI4uiNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameterI4uivNV"); printf("glProgramEnvParameterI4uivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameters4fvEXT"); printf("glProgramEnvParameters4fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParametersI4ivNV"); printf("glProgramEnvParametersI4ivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParametersI4uivNV"); printf("glProgramEnvParametersI4uivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameter4dARB"); printf("glProgramLocalParameter4dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameter4dvARB"); printf("glProgramLocalParameter4dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameter4fARB"); printf("glProgramLocalParameter4fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameter4fvARB"); printf("glProgramLocalParameter4fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameterI4iNV"); printf("glProgramLocalParameterI4iNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameterI4ivNV"); printf("glProgramLocalParameterI4ivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameterI4uiNV"); printf("glProgramLocalParameterI4uiNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameterI4uivNV"); printf("glProgramLocalParameterI4uivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameters4fvEXT"); printf("glProgramLocalParameters4fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParametersI4ivNV"); printf("glProgramLocalParametersI4ivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParametersI4uivNV"); printf("glProgramLocalParametersI4uivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramNamedParameter4dNV"); printf("glProgramNamedParameter4dNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramNamedParameter4dvNV"); printf("glProgramNamedParameter4dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramNamedParameter4fNV"); printf("glProgramNamedParameter4fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramNamedParameter4fvNV"); printf("glProgramNamedParameter4fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameter4dNV"); printf("glProgramParameter4dNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameter4dvNV"); printf("glProgramParameter4dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameter4fNV"); printf("glProgramParameter4fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameter4fvNV"); printf("glProgramParameter4fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameteri"); printf("glProgramParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameteriARB"); printf("glProgramParameteriARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameteriEXT"); printf("glProgramParameteriEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameters4dvNV"); printf("glProgramParameters4dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameters4fvNV"); printf("glProgramParameters4fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramPathFragmentInputGenNV"); printf("glProgramPathFragmentInputGenNV: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramStringARB"); printf("glProgramStringARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramSubroutineParametersuivNV"); printf("glProgramSubroutineParametersuivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1d"); printf("glProgramUniform1d : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1dEXT"); printf("glProgramUniform1dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1dv"); printf("glProgramUniform1dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1dvEXT"); printf("glProgramUniform1dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1f"); printf("glProgramUniform1f : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1fEXT"); printf("glProgramUniform1fEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1fv"); printf("glProgramUniform1fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1fvEXT"); printf("glProgramUniform1fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1i"); printf("glProgramUniform1i : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1i64ARB"); printf("glProgramUniform1i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1i64NV"); printf("glProgramUniform1i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1i64vARB"); printf("glProgramUniform1i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1i64vNV"); printf("glProgramUniform1i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1iEXT"); printf("glProgramUniform1iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1iv"); printf("glProgramUniform1iv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1ivEXT"); printf("glProgramUniform1ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1ui"); printf("glProgramUniform1ui : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1ui64ARB"); printf("glProgramUniform1ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1ui64NV"); printf("glProgramUniform1ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1ui64vARB"); printf("glProgramUniform1ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1ui64vNV"); printf("glProgramUniform1ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1uiEXT"); printf("glProgramUniform1uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1uiv"); printf("glProgramUniform1uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1uivEXT"); printf("glProgramUniform1uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2d"); printf("glProgramUniform2d : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2dEXT"); printf("glProgramUniform2dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2dv"); printf("glProgramUniform2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2dvEXT"); printf("glProgramUniform2dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2f"); printf("glProgramUniform2f : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2fEXT"); printf("glProgramUniform2fEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2fv"); printf("glProgramUniform2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2fvEXT"); printf("glProgramUniform2fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2i"); printf("glProgramUniform2i : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2i64ARB"); printf("glProgramUniform2i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2i64NV"); printf("glProgramUniform2i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2i64vARB"); printf("glProgramUniform2i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2i64vNV"); printf("glProgramUniform2i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2iEXT"); printf("glProgramUniform2iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2iv"); printf("glProgramUniform2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2ivEXT"); printf("glProgramUniform2ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2ui"); printf("glProgramUniform2ui : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2ui64ARB"); printf("glProgramUniform2ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2ui64NV"); printf("glProgramUniform2ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2ui64vARB"); printf("glProgramUniform2ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2ui64vNV"); printf("glProgramUniform2ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2uiEXT"); printf("glProgramUniform2uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2uiv"); printf("glProgramUniform2uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2uivEXT"); printf("glProgramUniform2uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3d"); printf("glProgramUniform3d : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3dEXT"); printf("glProgramUniform3dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3dv"); printf("glProgramUniform3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3dvEXT"); printf("glProgramUniform3dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3f"); printf("glProgramUniform3f : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3fEXT"); printf("glProgramUniform3fEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3fv"); printf("glProgramUniform3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3fvEXT"); printf("glProgramUniform3fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3i"); printf("glProgramUniform3i : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3i64ARB"); printf("glProgramUniform3i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3i64NV"); printf("glProgramUniform3i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3i64vARB"); printf("glProgramUniform3i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3i64vNV"); printf("glProgramUniform3i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3iEXT"); printf("glProgramUniform3iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3iv"); printf("glProgramUniform3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3ivEXT"); printf("glProgramUniform3ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3ui"); printf("glProgramUniform3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3ui64ARB"); printf("glProgramUniform3ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3ui64NV"); printf("glProgramUniform3ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3ui64vARB"); printf("glProgramUniform3ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3ui64vNV"); printf("glProgramUniform3ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3uiEXT"); printf("glProgramUniform3uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3uiv"); printf("glProgramUniform3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3uivEXT"); printf("glProgramUniform3uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4d"); printf("glProgramUniform4d : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4dEXT"); printf("glProgramUniform4dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4dv"); printf("glProgramUniform4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4dvEXT"); printf("glProgramUniform4dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4f"); printf("glProgramUniform4f : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4fEXT"); printf("glProgramUniform4fEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4fv"); printf("glProgramUniform4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4fvEXT"); printf("glProgramUniform4fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4i"); printf("glProgramUniform4i : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4i64ARB"); printf("glProgramUniform4i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4i64NV"); printf("glProgramUniform4i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4i64vARB"); printf("glProgramUniform4i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4i64vNV"); printf("glProgramUniform4i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4iEXT"); printf("glProgramUniform4iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4iv"); printf("glProgramUniform4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4ivEXT"); printf("glProgramUniform4ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4ui"); printf("glProgramUniform4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4ui64ARB"); printf("glProgramUniform4ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4ui64NV"); printf("glProgramUniform4ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4ui64vARB"); printf("glProgramUniform4ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4ui64vNV"); printf("glProgramUniform4ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4uiEXT"); printf("glProgramUniform4uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4uiv"); printf("glProgramUniform4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4uivEXT"); printf("glProgramUniform4uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformHandleui64ARB"); printf("glProgramUniformHandleui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformHandleui64NV"); printf("glProgramUniformHandleui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformHandleui64vARB"); printf("glProgramUniformHandleui64vARB: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformHandleui64vNV"); printf("glProgramUniformHandleui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2dv"); printf("glProgramUniformMatrix2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2dvEXT"); printf("glProgramUniformMatrix2dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2fv"); printf("glProgramUniformMatrix2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2fvEXT"); printf("glProgramUniformMatrix2fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x3dv"); printf("glProgramUniformMatrix2x3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x3dvEXT"); printf("glProgramUniformMatrix2x3dvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x3fv"); printf("glProgramUniformMatrix2x3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x3fvEXT"); printf("glProgramUniformMatrix2x3fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x4dv"); printf("glProgramUniformMatrix2x4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x4dvEXT"); printf("glProgramUniformMatrix2x4dvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x4fv"); printf("glProgramUniformMatrix2x4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x4fvEXT"); printf("glProgramUniformMatrix2x4fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3dv"); printf("glProgramUniformMatrix3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3dvEXT"); printf("glProgramUniformMatrix3dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3fv"); printf("glProgramUniformMatrix3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3fvEXT"); printf("glProgramUniformMatrix3fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x2dv"); printf("glProgramUniformMatrix3x2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x2dvEXT"); printf("glProgramUniformMatrix3x2dvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x2fv"); printf("glProgramUniformMatrix3x2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x2fvEXT"); printf("glProgramUniformMatrix3x2fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x4dv"); printf("glProgramUniformMatrix3x4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x4dvEXT"); printf("glProgramUniformMatrix3x4dvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x4fv"); printf("glProgramUniformMatrix3x4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x4fvEXT"); printf("glProgramUniformMatrix3x4fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4dv"); printf("glProgramUniformMatrix4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4dvEXT"); printf("glProgramUniformMatrix4dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4fv"); printf("glProgramUniformMatrix4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4fvEXT"); printf("glProgramUniformMatrix4fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x2dv"); printf("glProgramUniformMatrix4x2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x2dvEXT"); printf("glProgramUniformMatrix4x2dvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x2fv"); printf("glProgramUniformMatrix4x2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x2fvEXT"); printf("glProgramUniformMatrix4x2fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x3dv"); printf("glProgramUniformMatrix4x3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x3dvEXT"); printf("glProgramUniformMatrix4x3dvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x3fv"); printf("glProgramUniformMatrix4x3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x3fvEXT"); printf("glProgramUniformMatrix4x3fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformui64NV"); printf("glProgramUniformui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformui64vNV"); printf("glProgramUniformui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramVertexLimitNV"); printf("glProgramVertexLimitNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProvokingVertex"); printf("glProvokingVertex : %p\n", p); p = gl.OSMesaGetProcAddress("glProvokingVertexEXT"); printf("glProvokingVertexEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPushAttrib"); printf("glPushAttrib : %p\n", p); p = gl.OSMesaGetProcAddress("glPushClientAttrib"); printf("glPushClientAttrib : %p\n", p); p = gl.OSMesaGetProcAddress("glPushClientAttribDefaultEXT"); printf("glPushClientAttribDefaultEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPushDebugGroup"); printf("glPushDebugGroup : %p\n", p); p = gl.OSMesaGetProcAddress("glPushGroupMarkerEXT"); printf("glPushGroupMarkerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPushMatrix"); printf("glPushMatrix : %p\n", p); p = gl.OSMesaGetProcAddress("glPushName"); printf("glPushName : %p\n", p); p = gl.OSMesaGetProcAddress("glQueryCounter"); printf("glQueryCounter : %p\n", p); p = gl.OSMesaGetProcAddress("glQueryMatrixxOES"); printf("glQueryMatrixxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glQueryObjectParameteruiAMD"); printf("glQueryObjectParameteruiAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glQueryResourceNV"); printf("glQueryResourceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glQueryResourceTagNV"); printf("glQueryResourceTagNV : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2d"); printf("glRasterPos2d : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2dv"); printf("glRasterPos2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2f"); printf("glRasterPos2f : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2fv"); printf("glRasterPos2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2i"); printf("glRasterPos2i : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2iv"); printf("glRasterPos2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2s"); printf("glRasterPos2s : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2sv"); printf("glRasterPos2sv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2xOES"); printf("glRasterPos2xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2xvOES"); printf("glRasterPos2xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3d"); printf("glRasterPos3d : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3dv"); printf("glRasterPos3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3f"); printf("glRasterPos3f : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3fv"); printf("glRasterPos3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3i"); printf("glRasterPos3i : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3iv"); printf("glRasterPos3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3s"); printf("glRasterPos3s : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3sv"); printf("glRasterPos3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3xOES"); printf("glRasterPos3xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3xvOES"); printf("glRasterPos3xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4d"); printf("glRasterPos4d : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4dv"); printf("glRasterPos4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4f"); printf("glRasterPos4f : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4fv"); printf("glRasterPos4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4i"); printf("glRasterPos4i : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4iv"); printf("glRasterPos4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4s"); printf("glRasterPos4s : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4sv"); printf("glRasterPos4sv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4xOES"); printf("glRasterPos4xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4xvOES"); printf("glRasterPos4xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterSamplesEXT"); printf("glRasterSamplesEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glReadBuffer"); printf("glReadBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glReadInstrumentsSGIX"); printf("glReadInstrumentsSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glReadPixels"); printf("glReadPixels : %p\n", p); p = gl.OSMesaGetProcAddress("glReadnPixels"); printf("glReadnPixels : %p\n", p); p = gl.OSMesaGetProcAddress("glReadnPixelsARB"); printf("glReadnPixelsARB : %p\n", p); p = gl.OSMesaGetProcAddress("glRectd"); printf("glRectd : %p\n", p); p = gl.OSMesaGetProcAddress("glRectdv"); printf("glRectdv : %p\n", p); p = gl.OSMesaGetProcAddress("glRectf"); printf("glRectf : %p\n", p); p = gl.OSMesaGetProcAddress("glRectfv"); printf("glRectfv : %p\n", p); p = gl.OSMesaGetProcAddress("glRecti"); printf("glRecti : %p\n", p); p = gl.OSMesaGetProcAddress("glRectiv"); printf("glRectiv : %p\n", p); p = gl.OSMesaGetProcAddress("glRects"); printf("glRects : %p\n", p); p = gl.OSMesaGetProcAddress("glRectsv"); printf("glRectsv : %p\n", p); p = gl.OSMesaGetProcAddress("glRectxOES"); printf("glRectxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glRectxvOES"); printf("glRectxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glReferencePlaneSGIX"); printf("glReferencePlaneSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glReleaseKeyedMutexWin32EXT"); printf("glReleaseKeyedMutexWin32EXT : %p\n", p); p = gl.OSMesaGetProcAddress("glReleaseShaderCompiler"); printf("glReleaseShaderCompiler : %p\n", p); p = gl.OSMesaGetProcAddress("glRenderGpuMaskNV"); printf("glRenderGpuMaskNV : %p\n", p); p = gl.OSMesaGetProcAddress("glRenderMode"); printf("glRenderMode : %p\n", p); p = gl.OSMesaGetProcAddress("glRenderbufferStorage"); printf("glRenderbufferStorage : %p\n", p); p = gl.OSMesaGetProcAddress("glRenderbufferStorageEXT"); printf("glRenderbufferStorageEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glRenderbufferStorageMultisample"); printf("glRenderbufferStorageMultisample: %p\n", p); p = gl.OSMesaGetProcAddress("glRenderbufferStorageMultisampleCoverageNV"); printf("glRenderbufferStorageMultisampleCoverageNV: %p\n", p); p = gl.OSMesaGetProcAddress("glRenderbufferStorageMultisampleEXT"); printf("glRenderbufferStorageMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodePointerSUN"); printf("glReplacementCodePointerSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeubSUN"); printf("glReplacementCodeubSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeubvSUN"); printf("glReplacementCodeubvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiColor3fVertex3fSUN"); printf("glReplacementCodeuiColor3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiColor3fVertex3fvSUN"); printf("glReplacementCodeuiColor3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiColor4fNormal3fVertex3fSUN"); printf("glReplacementCodeuiColor4fNormal3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiColor4fNormal3fVertex3fvSUN"); printf("glReplacementCodeuiColor4fNormal3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiColor4ubVertex3fSUN"); printf("glReplacementCodeuiColor4ubVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiColor4ubVertex3fvSUN"); printf("glReplacementCodeuiColor4ubVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiNormal3fVertex3fSUN"); printf("glReplacementCodeuiNormal3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiNormal3fVertex3fvSUN"); printf("glReplacementCodeuiNormal3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiSUN"); printf("glReplacementCodeuiSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"); printf("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"); printf("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"); printf("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"); printf("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiTexCoord2fVertex3fSUN"); printf("glReplacementCodeuiTexCoord2fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiTexCoord2fVertex3fvSUN"); printf("glReplacementCodeuiTexCoord2fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiVertex3fSUN"); printf("glReplacementCodeuiVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiVertex3fvSUN"); printf("glReplacementCodeuiVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuivSUN"); printf("glReplacementCodeuivSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeusSUN"); printf("glReplacementCodeusSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeusvSUN"); printf("glReplacementCodeusvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glRequestResidentProgramsNV"); printf("glRequestResidentProgramsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glResetHistogram"); printf("glResetHistogram : %p\n", p); p = gl.OSMesaGetProcAddress("glResetHistogramEXT"); printf("glResetHistogramEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glResetMinmax"); printf("glResetMinmax : %p\n", p); p = gl.OSMesaGetProcAddress("glResetMinmaxEXT"); printf("glResetMinmaxEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glResizeBuffersMESA"); printf("glResizeBuffersMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glResolveDepthValuesNV"); printf("glResolveDepthValuesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glResumeTransformFeedback"); printf("glResumeTransformFeedback : %p\n", p); p = gl.OSMesaGetProcAddress("glResumeTransformFeedbackNV"); printf("glResumeTransformFeedbackNV : %p\n", p); p = gl.OSMesaGetProcAddress("glRotated"); printf("glRotated : %p\n", p); p = gl.OSMesaGetProcAddress("glRotatef"); printf("glRotatef : %p\n", p); p = gl.OSMesaGetProcAddress("glRotatexOES"); printf("glRotatexOES : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleCoverage"); printf("glSampleCoverage : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleCoverageARB"); printf("glSampleCoverageARB : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleCoverageOES"); printf("glSampleCoverageOES : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleMapATI"); printf("glSampleMapATI : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleMaskEXT"); printf("glSampleMaskEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleMaskIndexedNV"); printf("glSampleMaskIndexedNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleMaskSGIS"); printf("glSampleMaskSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleMaski"); printf("glSampleMaski : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplePass"); printf("glSamplePass : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplePassARB"); printf("glSamplePassARB : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplePatternEXT"); printf("glSamplePatternEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplePatternSGIS"); printf("glSamplePatternSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplerParameterIiv"); printf("glSamplerParameterIiv : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplerParameterIuiv"); printf("glSamplerParameterIuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplerParameterf"); printf("glSamplerParameterf : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplerParameterfv"); printf("glSamplerParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplerParameteri"); printf("glSamplerParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplerParameteriv"); printf("glSamplerParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glScaled"); printf("glScaled : %p\n", p); p = gl.OSMesaGetProcAddress("glScalef"); printf("glScalef : %p\n", p); p = gl.OSMesaGetProcAddress("glScalexOES"); printf("glScalexOES : %p\n", p); p = gl.OSMesaGetProcAddress("glScissor"); printf("glScissor : %p\n", p); p = gl.OSMesaGetProcAddress("glScissorArrayv"); printf("glScissorArrayv : %p\n", p); p = gl.OSMesaGetProcAddress("glScissorIndexed"); printf("glScissorIndexed : %p\n", p); p = gl.OSMesaGetProcAddress("glScissorIndexedv"); printf("glScissorIndexedv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3b"); printf("glSecondaryColor3b : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3bEXT"); printf("glSecondaryColor3bEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3bv"); printf("glSecondaryColor3bv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3bvEXT"); printf("glSecondaryColor3bvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3d"); printf("glSecondaryColor3d : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3dEXT"); printf("glSecondaryColor3dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3dv"); printf("glSecondaryColor3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3dvEXT"); printf("glSecondaryColor3dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3f"); printf("glSecondaryColor3f : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3fEXT"); printf("glSecondaryColor3fEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3fv"); printf("glSecondaryColor3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3fvEXT"); printf("glSecondaryColor3fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3hNV"); printf("glSecondaryColor3hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3hvNV"); printf("glSecondaryColor3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3i"); printf("glSecondaryColor3i : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3iEXT"); printf("glSecondaryColor3iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3iv"); printf("glSecondaryColor3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3ivEXT"); printf("glSecondaryColor3ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3s"); printf("glSecondaryColor3s : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3sEXT"); printf("glSecondaryColor3sEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3sv"); printf("glSecondaryColor3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3svEXT"); printf("glSecondaryColor3svEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3ub"); printf("glSecondaryColor3ub : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3ubEXT"); printf("glSecondaryColor3ubEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3ubv"); printf("glSecondaryColor3ubv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3ubvEXT"); printf("glSecondaryColor3ubvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3ui"); printf("glSecondaryColor3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3uiEXT"); printf("glSecondaryColor3uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3uiv"); printf("glSecondaryColor3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3uivEXT"); printf("glSecondaryColor3uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3us"); printf("glSecondaryColor3us : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3usEXT"); printf("glSecondaryColor3usEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3usv"); printf("glSecondaryColor3usv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3usvEXT"); printf("glSecondaryColor3usvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColorFormatNV"); printf("glSecondaryColorFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColorP3ui"); printf("glSecondaryColorP3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColorP3uiv"); printf("glSecondaryColorP3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColorPointer"); printf("glSecondaryColorPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColorPointerEXT"); printf("glSecondaryColorPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColorPointerListIBM"); printf("glSecondaryColorPointerListIBM: %p\n", p); p = gl.OSMesaGetProcAddress("glSelectBuffer"); printf("glSelectBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glSelectPerfMonitorCountersAMD"); printf("glSelectPerfMonitorCountersAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glSemaphoreParameterui64vEXT"); printf("glSemaphoreParameterui64vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSeparableFilter2D"); printf("glSeparableFilter2D : %p\n", p); p = gl.OSMesaGetProcAddress("glSeparableFilter2DEXT"); printf("glSeparableFilter2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSetFenceAPPLE"); printf("glSetFenceAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glSetFenceNV"); printf("glSetFenceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSetFragmentShaderConstantATI"); printf("glSetFragmentShaderConstantATI: %p\n", p); p = gl.OSMesaGetProcAddress("glSetInvariantEXT"); printf("glSetInvariantEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSetLocalConstantEXT"); printf("glSetLocalConstantEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSetMultisamplefvAMD"); printf("glSetMultisamplefvAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glShadeModel"); printf("glShadeModel : %p\n", p); p = gl.OSMesaGetProcAddress("glShaderBinary"); printf("glShaderBinary : %p\n", p); p = gl.OSMesaGetProcAddress("glShaderOp1EXT"); printf("glShaderOp1EXT : %p\n", p); p = gl.OSMesaGetProcAddress("glShaderOp2EXT"); printf("glShaderOp2EXT : %p\n", p); p = gl.OSMesaGetProcAddress("glShaderOp3EXT"); printf("glShaderOp3EXT : %p\n", p); p = gl.OSMesaGetProcAddress("glShaderSource"); printf("glShaderSource : %p\n", p); p = gl.OSMesaGetProcAddress("glShaderSourceARB"); printf("glShaderSourceARB : %p\n", p); p = gl.OSMesaGetProcAddress("glShaderStorageBlockBinding"); printf("glShaderStorageBlockBinding : %p\n", p); p = gl.OSMesaGetProcAddress("glSharpenTexFuncSGIS"); printf("glSharpenTexFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glSignalSemaphoreEXT"); printf("glSignalSemaphoreEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSignalVkFenceNV"); printf("glSignalVkFenceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSignalVkSemaphoreNV"); printf("glSignalVkSemaphoreNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSpecializeShader"); printf("glSpecializeShader : %p\n", p); p = gl.OSMesaGetProcAddress("glSpecializeShaderARB"); printf("glSpecializeShaderARB : %p\n", p); p = gl.OSMesaGetProcAddress("glSpriteParameterfSGIX"); printf("glSpriteParameterfSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glSpriteParameterfvSGIX"); printf("glSpriteParameterfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glSpriteParameteriSGIX"); printf("glSpriteParameteriSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glSpriteParameterivSGIX"); printf("glSpriteParameterivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glStartInstrumentsSGIX"); printf("glStartInstrumentsSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glStateCaptureNV"); printf("glStateCaptureNV : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilClearTagEXT"); printf("glStencilClearTagEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilFillPathInstancedNV"); printf("glStencilFillPathInstancedNV : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilFillPathNV"); printf("glStencilFillPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilFunc"); printf("glStencilFunc : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilFuncSeparate"); printf("glStencilFuncSeparate : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilFuncSeparateATI"); printf("glStencilFuncSeparateATI : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilMask"); printf("glStencilMask : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilMaskSeparate"); printf("glStencilMaskSeparate : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilOp"); printf("glStencilOp : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilOpSeparate"); printf("glStencilOpSeparate : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilOpSeparateATI"); printf("glStencilOpSeparateATI : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilOpValueAMD"); printf("glStencilOpValueAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilStrokePathInstancedNV"); printf("glStencilStrokePathInstancedNV: %p\n", p); p = gl.OSMesaGetProcAddress("glStencilStrokePathNV"); printf("glStencilStrokePathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilThenCoverFillPathInstancedNV"); printf("glStencilThenCoverFillPathInstancedNV: %p\n", p); p = gl.OSMesaGetProcAddress("glStencilThenCoverFillPathNV"); printf("glStencilThenCoverFillPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilThenCoverStrokePathInstancedNV"); printf("glStencilThenCoverStrokePathInstancedNV: %p\n", p); p = gl.OSMesaGetProcAddress("glStencilThenCoverStrokePathNV"); printf("glStencilThenCoverStrokePathNV: %p\n", p); p = gl.OSMesaGetProcAddress("glStopInstrumentsSGIX"); printf("glStopInstrumentsSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glStringMarkerGREMEDY"); printf("glStringMarkerGREMEDY : %p\n", p); p = gl.OSMesaGetProcAddress("glSubpixelPrecisionBiasNV"); printf("glSubpixelPrecisionBiasNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSwapAPPLE"); printf("glSwapAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glSwizzleEXT"); printf("glSwizzleEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSyncTextureINTEL"); printf("glSyncTextureINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glTagSampleBufferSGIX"); printf("glTagSampleBufferSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3bEXT"); printf("glTangent3bEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3bvEXT"); printf("glTangent3bvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3dEXT"); printf("glTangent3dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3dvEXT"); printf("glTangent3dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3fEXT"); printf("glTangent3fEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3fvEXT"); printf("glTangent3fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3iEXT"); printf("glTangent3iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3ivEXT"); printf("glTangent3ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3sEXT"); printf("glTangent3sEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3svEXT"); printf("glTangent3svEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangentPointerEXT"); printf("glTangentPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTbufferMask3DFX"); printf("glTbufferMask3DFX : %p\n", p); p = gl.OSMesaGetProcAddress("glTessellationFactorAMD"); printf("glTessellationFactorAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glTessellationModeAMD"); printf("glTessellationModeAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glTestFenceAPPLE"); printf("glTestFenceAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glTestFenceNV"); printf("glTestFenceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTestObjectAPPLE"); printf("glTestObjectAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glTexBuffer"); printf("glTexBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glTexBufferARB"); printf("glTexBufferARB : %p\n", p); p = gl.OSMesaGetProcAddress("glTexBufferEXT"); printf("glTexBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexBufferRange"); printf("glTexBufferRange : %p\n", p); p = gl.OSMesaGetProcAddress("glTexBumpParameterfvATI"); printf("glTexBumpParameterfvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glTexBumpParameterivATI"); printf("glTexBumpParameterivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1bOES"); printf("glTexCoord1bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1bvOES"); printf("glTexCoord1bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1d"); printf("glTexCoord1d : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1dv"); printf("glTexCoord1dv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1f"); printf("glTexCoord1f : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1fv"); printf("glTexCoord1fv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1hNV"); printf("glTexCoord1hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1hvNV"); printf("glTexCoord1hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1i"); printf("glTexCoord1i : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1iv"); printf("glTexCoord1iv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1s"); printf("glTexCoord1s : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1sv"); printf("glTexCoord1sv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1xOES"); printf("glTexCoord1xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1xvOES"); printf("glTexCoord1xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2bOES"); printf("glTexCoord2bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2bvOES"); printf("glTexCoord2bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2d"); printf("glTexCoord2d : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2dv"); printf("glTexCoord2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2f"); printf("glTexCoord2f : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fColor3fVertex3fSUN"); printf("glTexCoord2fColor3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fColor3fVertex3fvSUN"); printf("glTexCoord2fColor3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fColor4fNormal3fVertex3fSUN"); printf("glTexCoord2fColor4fNormal3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fColor4fNormal3fVertex3fvSUN"); printf("glTexCoord2fColor4fNormal3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fColor4ubVertex3fSUN"); printf("glTexCoord2fColor4ubVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fColor4ubVertex3fvSUN"); printf("glTexCoord2fColor4ubVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fNormal3fVertex3fSUN"); printf("glTexCoord2fNormal3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fNormal3fVertex3fvSUN"); printf("glTexCoord2fNormal3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fVertex3fSUN"); printf("glTexCoord2fVertex3fSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fVertex3fvSUN"); printf("glTexCoord2fVertex3fvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fv"); printf("glTexCoord2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2hNV"); printf("glTexCoord2hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2hvNV"); printf("glTexCoord2hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2i"); printf("glTexCoord2i : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2iv"); printf("glTexCoord2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2s"); printf("glTexCoord2s : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2sv"); printf("glTexCoord2sv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2xOES"); printf("glTexCoord2xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2xvOES"); printf("glTexCoord2xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3bOES"); printf("glTexCoord3bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3bvOES"); printf("glTexCoord3bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3d"); printf("glTexCoord3d : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3dv"); printf("glTexCoord3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3f"); printf("glTexCoord3f : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3fv"); printf("glTexCoord3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3hNV"); printf("glTexCoord3hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3hvNV"); printf("glTexCoord3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3i"); printf("glTexCoord3i : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3iv"); printf("glTexCoord3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3s"); printf("glTexCoord3s : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3sv"); printf("glTexCoord3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3xOES"); printf("glTexCoord3xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3xvOES"); printf("glTexCoord3xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4bOES"); printf("glTexCoord4bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4bvOES"); printf("glTexCoord4bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4d"); printf("glTexCoord4d : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4dv"); printf("glTexCoord4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4f"); printf("glTexCoord4f : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4fColor4fNormal3fVertex4fSUN"); printf("glTexCoord4fColor4fNormal3fVertex4fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4fColor4fNormal3fVertex4fvSUN"); printf("glTexCoord4fColor4fNormal3fVertex4fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4fVertex4fSUN"); printf("glTexCoord4fVertex4fSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4fVertex4fvSUN"); printf("glTexCoord4fVertex4fvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4fv"); printf("glTexCoord4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4hNV"); printf("glTexCoord4hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4hvNV"); printf("glTexCoord4hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4i"); printf("glTexCoord4i : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4iv"); printf("glTexCoord4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4s"); printf("glTexCoord4s : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4sv"); printf("glTexCoord4sv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4xOES"); printf("glTexCoord4xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4xvOES"); printf("glTexCoord4xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordFormatNV"); printf("glTexCoordFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP1ui"); printf("glTexCoordP1ui : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP1uiv"); printf("glTexCoordP1uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP2ui"); printf("glTexCoordP2ui : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP2uiv"); printf("glTexCoordP2uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP3ui"); printf("glTexCoordP3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP3uiv"); printf("glTexCoordP3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP4ui"); printf("glTexCoordP4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP4uiv"); printf("glTexCoordP4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordPointer"); printf("glTexCoordPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordPointerEXT"); printf("glTexCoordPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordPointerListIBM"); printf("glTexCoordPointerListIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordPointervINTEL"); printf("glTexCoordPointervINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glTexEnvf"); printf("glTexEnvf : %p\n", p); p = gl.OSMesaGetProcAddress("glTexEnvfv"); printf("glTexEnvfv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexEnvi"); printf("glTexEnvi : %p\n", p); p = gl.OSMesaGetProcAddress("glTexEnviv"); printf("glTexEnviv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexEnvxOES"); printf("glTexEnvxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexEnvxvOES"); printf("glTexEnvxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexFilterFuncSGIS"); printf("glTexFilterFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGend"); printf("glTexGend : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGendv"); printf("glTexGendv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGenf"); printf("glTexGenf : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGenfv"); printf("glTexGenfv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGeni"); printf("glTexGeni : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGeniv"); printf("glTexGeniv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGenxOES"); printf("glTexGenxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGenxvOES"); printf("glTexGenxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage1D"); printf("glTexImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage2D"); printf("glTexImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage2DMultisample"); printf("glTexImage2DMultisample : %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage2DMultisampleCoverageNV"); printf("glTexImage2DMultisampleCoverageNV: %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage3D"); printf("glTexImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage3DEXT"); printf("glTexImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage3DMultisample"); printf("glTexImage3DMultisample : %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage3DMultisampleCoverageNV"); printf("glTexImage3DMultisampleCoverageNV: %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage4DSGIS"); printf("glTexImage4DSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glTexPageCommitmentARB"); printf("glTexPageCommitmentARB : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterIiv"); printf("glTexParameterIiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterIivEXT"); printf("glTexParameterIivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterIuiv"); printf("glTexParameterIuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterIuivEXT"); printf("glTexParameterIuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterf"); printf("glTexParameterf : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterfv"); printf("glTexParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameteri"); printf("glTexParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameteriv"); printf("glTexParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterxOES"); printf("glTexParameterxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterxvOES"); printf("glTexParameterxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexRenderbufferNV"); printf("glTexRenderbufferNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexScissorFuncINTEL"); printf("glTexScissorFuncINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glTexScissorINTEL"); printf("glTexScissorINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorage1D"); printf("glTexStorage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorage2D"); printf("glTexStorage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorage2DMultisample"); printf("glTexStorage2DMultisample : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorage3D"); printf("glTexStorage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorage3DMultisample"); printf("glTexStorage3DMultisample : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorageMem1DEXT"); printf("glTexStorageMem1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorageMem2DEXT"); printf("glTexStorageMem2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorageMem2DMultisampleEXT"); printf("glTexStorageMem2DMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorageMem3DEXT"); printf("glTexStorageMem3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorageMem3DMultisampleEXT"); printf("glTexStorageMem3DMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorageSparseAMD"); printf("glTexStorageSparseAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glTexSubImage1D"); printf("glTexSubImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexSubImage1DEXT"); printf("glTexSubImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexSubImage2D"); printf("glTexSubImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexSubImage2DEXT"); printf("glTexSubImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexSubImage3D"); printf("glTexSubImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexSubImage3DEXT"); printf("glTexSubImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexSubImage4DSGIS"); printf("glTexSubImage4DSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureBarrier"); printf("glTextureBarrier : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureBarrierNV"); printf("glTextureBarrierNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureBuffer"); printf("glTextureBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureBufferEXT"); printf("glTextureBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureBufferRange"); printf("glTextureBufferRange : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureBufferRangeEXT"); printf("glTextureBufferRangeEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureColorMaskSGIS"); printf("glTextureColorMaskSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureFogSGIX"); printf("glTextureFogSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureImage1DEXT"); printf("glTextureImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureImage2DEXT"); printf("glTextureImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureImage2DMultisampleCoverageNV"); printf("glTextureImage2DMultisampleCoverageNV: %p\n", p); p = gl.OSMesaGetProcAddress("glTextureImage2DMultisampleNV"); printf("glTextureImage2DMultisampleNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureImage3DEXT"); printf("glTextureImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureImage3DMultisampleCoverageNV"); printf("glTextureImage3DMultisampleCoverageNV: %p\n", p); p = gl.OSMesaGetProcAddress("glTextureImage3DMultisampleNV"); printf("glTextureImage3DMultisampleNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureLightEXT"); printf("glTextureLightEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureMaterialEXT"); printf("glTextureMaterialEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureNormalEXT"); printf("glTextureNormalEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexturePageCommitmentEXT"); printf("glTexturePageCommitmentEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterIiv"); printf("glTextureParameterIiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterIivEXT"); printf("glTextureParameterIivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterIuiv"); printf("glTextureParameterIuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterIuivEXT"); printf("glTextureParameterIuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterf"); printf("glTextureParameterf : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterfEXT"); printf("glTextureParameterfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterfv"); printf("glTextureParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterfvEXT"); printf("glTextureParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameteri"); printf("glTextureParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameteriEXT"); printf("glTextureParameteriEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameteriv"); printf("glTextureParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterivEXT"); printf("glTextureParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureRangeAPPLE"); printf("glTextureRangeAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureRenderbufferEXT"); printf("glTextureRenderbufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage1D"); printf("glTextureStorage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage1DEXT"); printf("glTextureStorage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage2D"); printf("glTextureStorage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage2DEXT"); printf("glTextureStorage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage2DMultisample"); printf("glTextureStorage2DMultisample : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage2DMultisampleEXT"); printf("glTextureStorage2DMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage3D"); printf("glTextureStorage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage3DEXT"); printf("glTextureStorage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage3DMultisample"); printf("glTextureStorage3DMultisample : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage3DMultisampleEXT"); printf("glTextureStorage3DMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorageMem1DEXT"); printf("glTextureStorageMem1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorageMem2DEXT"); printf("glTextureStorageMem2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorageMem2DMultisampleEXT"); printf("glTextureStorageMem2DMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorageMem3DEXT"); printf("glTextureStorageMem3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorageMem3DMultisampleEXT"); printf("glTextureStorageMem3DMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorageSparseAMD"); printf("glTextureStorageSparseAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureSubImage1D"); printf("glTextureSubImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureSubImage1DEXT"); printf("glTextureSubImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureSubImage2D"); printf("glTextureSubImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureSubImage2DEXT"); printf("glTextureSubImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureSubImage3D"); printf("glTextureSubImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureSubImage3DEXT"); printf("glTextureSubImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureView"); printf("glTextureView : %p\n", p); p = gl.OSMesaGetProcAddress("glTraceAssertAttribMESA"); printf("glTraceAssertAttribMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glTraceCommentMESA"); printf("glTraceCommentMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glTraceListMESA"); printf("glTraceListMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glTracePointerMESA"); printf("glTracePointerMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glTracePointerRangeMESA"); printf("glTracePointerRangeMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glTraceTextureMESA"); printf("glTraceTextureMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glTrackMatrixNV"); printf("glTrackMatrixNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTransformFeedbackAttribsNV"); printf("glTransformFeedbackAttribsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTransformFeedbackBufferBase"); printf("glTransformFeedbackBufferBase : %p\n", p); p = gl.OSMesaGetProcAddress("glTransformFeedbackBufferRange"); printf("glTransformFeedbackBufferRange: %p\n", p); p = gl.OSMesaGetProcAddress("glTransformFeedbackStreamAttribsNV"); printf("glTransformFeedbackStreamAttribsNV: %p\n", p); p = gl.OSMesaGetProcAddress("glTransformFeedbackVaryings"); printf("glTransformFeedbackVaryings : %p\n", p); p = gl.OSMesaGetProcAddress("glTransformFeedbackVaryingsEXT"); printf("glTransformFeedbackVaryingsEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glTransformFeedbackVaryingsNV"); printf("glTransformFeedbackVaryingsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTransformPathNV"); printf("glTransformPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTranslated"); printf("glTranslated : %p\n", p); p = gl.OSMesaGetProcAddress("glTranslatef"); printf("glTranslatef : %p\n", p); p = gl.OSMesaGetProcAddress("glTranslatexOES"); printf("glTranslatexOES : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1d"); printf("glUniform1d : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1dv"); printf("glUniform1dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1f"); printf("glUniform1f : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1fARB"); printf("glUniform1fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1fv"); printf("glUniform1fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1fvARB"); printf("glUniform1fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1i"); printf("glUniform1i : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1i64ARB"); printf("glUniform1i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1i64NV"); printf("glUniform1i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1i64vARB"); printf("glUniform1i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1i64vNV"); printf("glUniform1i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1iARB"); printf("glUniform1iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1iv"); printf("glUniform1iv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1ivARB"); printf("glUniform1ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1ui"); printf("glUniform1ui : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1ui64ARB"); printf("glUniform1ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1ui64NV"); printf("glUniform1ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1ui64vARB"); printf("glUniform1ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1ui64vNV"); printf("glUniform1ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1uiEXT"); printf("glUniform1uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1uiv"); printf("glUniform1uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1uivEXT"); printf("glUniform1uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2d"); printf("glUniform2d : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2dv"); printf("glUniform2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2f"); printf("glUniform2f : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2fARB"); printf("glUniform2fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2fv"); printf("glUniform2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2fvARB"); printf("glUniform2fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2i"); printf("glUniform2i : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2i64ARB"); printf("glUniform2i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2i64NV"); printf("glUniform2i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2i64vARB"); printf("glUniform2i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2i64vNV"); printf("glUniform2i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2iARB"); printf("glUniform2iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2iv"); printf("glUniform2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2ivARB"); printf("glUniform2ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2ui"); printf("glUniform2ui : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2ui64ARB"); printf("glUniform2ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2ui64NV"); printf("glUniform2ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2ui64vARB"); printf("glUniform2ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2ui64vNV"); printf("glUniform2ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2uiEXT"); printf("glUniform2uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2uiv"); printf("glUniform2uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2uivEXT"); printf("glUniform2uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3d"); printf("glUniform3d : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3dv"); printf("glUniform3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3f"); printf("glUniform3f : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3fARB"); printf("glUniform3fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3fv"); printf("glUniform3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3fvARB"); printf("glUniform3fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3i"); printf("glUniform3i : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3i64ARB"); printf("glUniform3i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3i64NV"); printf("glUniform3i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3i64vARB"); printf("glUniform3i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3i64vNV"); printf("glUniform3i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3iARB"); printf("glUniform3iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3iv"); printf("glUniform3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3ivARB"); printf("glUniform3ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3ui"); printf("glUniform3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3ui64ARB"); printf("glUniform3ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3ui64NV"); printf("glUniform3ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3ui64vARB"); printf("glUniform3ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3ui64vNV"); printf("glUniform3ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3uiEXT"); printf("glUniform3uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3uiv"); printf("glUniform3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3uivEXT"); printf("glUniform3uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4d"); printf("glUniform4d : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4dv"); printf("glUniform4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4f"); printf("glUniform4f : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4fARB"); printf("glUniform4fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4fv"); printf("glUniform4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4fvARB"); printf("glUniform4fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4i"); printf("glUniform4i : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4i64ARB"); printf("glUniform4i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4i64NV"); printf("glUniform4i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4i64vARB"); printf("glUniform4i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4i64vNV"); printf("glUniform4i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4iARB"); printf("glUniform4iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4iv"); printf("glUniform4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4ivARB"); printf("glUniform4ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4ui"); printf("glUniform4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4ui64ARB"); printf("glUniform4ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4ui64NV"); printf("glUniform4ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4ui64vARB"); printf("glUniform4ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4ui64vNV"); printf("glUniform4ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4uiEXT"); printf("glUniform4uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4uiv"); printf("glUniform4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4uivEXT"); printf("glUniform4uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformBlockBinding"); printf("glUniformBlockBinding : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformBufferEXT"); printf("glUniformBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformHandleui64ARB"); printf("glUniformHandleui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformHandleui64NV"); printf("glUniformHandleui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformHandleui64vARB"); printf("glUniformHandleui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformHandleui64vNV"); printf("glUniformHandleui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix2dv"); printf("glUniformMatrix2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix2fv"); printf("glUniformMatrix2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix2fvARB"); printf("glUniformMatrix2fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix2x3dv"); printf("glUniformMatrix2x3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix2x3fv"); printf("glUniformMatrix2x3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix2x4dv"); printf("glUniformMatrix2x4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix2x4fv"); printf("glUniformMatrix2x4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix3dv"); printf("glUniformMatrix3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix3fv"); printf("glUniformMatrix3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix3fvARB"); printf("glUniformMatrix3fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix3x2dv"); printf("glUniformMatrix3x2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix3x2fv"); printf("glUniformMatrix3x2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix3x4dv"); printf("glUniformMatrix3x4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix3x4fv"); printf("glUniformMatrix3x4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix4dv"); printf("glUniformMatrix4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix4fv"); printf("glUniformMatrix4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix4fvARB"); printf("glUniformMatrix4fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix4x2dv"); printf("glUniformMatrix4x2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix4x2fv"); printf("glUniformMatrix4x2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix4x3dv"); printf("glUniformMatrix4x3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix4x3fv"); printf("glUniformMatrix4x3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformSubroutinesuiv"); printf("glUniformSubroutinesuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformui64NV"); printf("glUniformui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformui64vNV"); printf("glUniformui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUnlockArraysEXT"); printf("glUnlockArraysEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUnmapBuffer"); printf("glUnmapBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glUnmapBufferARB"); printf("glUnmapBufferARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUnmapNamedBuffer"); printf("glUnmapNamedBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glUnmapNamedBufferEXT"); printf("glUnmapNamedBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUnmapObjectBufferATI"); printf("glUnmapObjectBufferATI : %p\n", p); p = gl.OSMesaGetProcAddress("glUnmapTexture2DINTEL"); printf("glUnmapTexture2DINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glUpdateObjectBufferATI"); printf("glUpdateObjectBufferATI : %p\n", p); p = gl.OSMesaGetProcAddress("glUseProgram"); printf("glUseProgram : %p\n", p); p = gl.OSMesaGetProcAddress("glUseProgramObjectARB"); printf("glUseProgramObjectARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUseProgramStages"); printf("glUseProgramStages : %p\n", p); p = gl.OSMesaGetProcAddress("glUseShaderProgramEXT"); printf("glUseShaderProgramEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUFiniNV"); printf("glVDPAUFiniNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUGetSurfaceivNV"); printf("glVDPAUGetSurfaceivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUInitNV"); printf("glVDPAUInitNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUIsSurfaceNV"); printf("glVDPAUIsSurfaceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUMapSurfacesNV"); printf("glVDPAUMapSurfacesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAURegisterOutputSurfaceNV"); printf("glVDPAURegisterOutputSurfaceNV: %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAURegisterVideoSurfaceNV"); printf("glVDPAURegisterVideoSurfaceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUSurfaceAccessNV"); printf("glVDPAUSurfaceAccessNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUUnmapSurfacesNV"); printf("glVDPAUUnmapSurfacesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUUnregisterSurfaceNV"); printf("glVDPAUUnregisterSurfaceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glValidateProgram"); printf("glValidateProgram : %p\n", p); p = gl.OSMesaGetProcAddress("glValidateProgramARB"); printf("glValidateProgramARB : %p\n", p); p = gl.OSMesaGetProcAddress("glValidateProgramPipeline"); printf("glValidateProgramPipeline : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantArrayObjectATI"); printf("glVariantArrayObjectATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantPointerEXT"); printf("glVariantPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantbvEXT"); printf("glVariantbvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantdvEXT"); printf("glVariantdvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantfvEXT"); printf("glVariantfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantivEXT"); printf("glVariantivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantsvEXT"); printf("glVariantsvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantubvEXT"); printf("glVariantubvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantuivEXT"); printf("glVariantuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantusvEXT"); printf("glVariantusvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2bOES"); printf("glVertex2bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2bvOES"); printf("glVertex2bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2d"); printf("glVertex2d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2dv"); printf("glVertex2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2f"); printf("glVertex2f : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2fv"); printf("glVertex2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2hNV"); printf("glVertex2hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2hvNV"); printf("glVertex2hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2i"); printf("glVertex2i : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2iv"); printf("glVertex2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2s"); printf("glVertex2s : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2sv"); printf("glVertex2sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2xOES"); printf("glVertex2xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2xvOES"); printf("glVertex2xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3bOES"); printf("glVertex3bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3bvOES"); printf("glVertex3bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3d"); printf("glVertex3d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3dv"); printf("glVertex3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3f"); printf("glVertex3f : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3fv"); printf("glVertex3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3hNV"); printf("glVertex3hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3hvNV"); printf("glVertex3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3i"); printf("glVertex3i : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3iv"); printf("glVertex3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3s"); printf("glVertex3s : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3sv"); printf("glVertex3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3xOES"); printf("glVertex3xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3xvOES"); printf("glVertex3xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4bOES"); printf("glVertex4bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4bvOES"); printf("glVertex4bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4d"); printf("glVertex4d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4dv"); printf("glVertex4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4f"); printf("glVertex4f : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4fv"); printf("glVertex4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4hNV"); printf("glVertex4hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4hvNV"); printf("glVertex4hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4i"); printf("glVertex4i : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4iv"); printf("glVertex4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4s"); printf("glVertex4s : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4sv"); printf("glVertex4sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4xOES"); printf("glVertex4xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4xvOES"); printf("glVertex4xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayAttribBinding"); printf("glVertexArrayAttribBinding : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayAttribFormat"); printf("glVertexArrayAttribFormat : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayAttribIFormat"); printf("glVertexArrayAttribIFormat : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayAttribLFormat"); printf("glVertexArrayAttribLFormat : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayBindVertexBufferEXT"); printf("glVertexArrayBindVertexBufferEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayBindingDivisor"); printf("glVertexArrayBindingDivisor : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayColorOffsetEXT"); printf("glVertexArrayColorOffsetEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayEdgeFlagOffsetEXT"); printf("glVertexArrayEdgeFlagOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayElementBuffer"); printf("glVertexArrayElementBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayFogCoordOffsetEXT"); printf("glVertexArrayFogCoordOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayIndexOffsetEXT"); printf("glVertexArrayIndexOffsetEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayMultiTexCoordOffsetEXT"); printf("glVertexArrayMultiTexCoordOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayNormalOffsetEXT"); printf("glVertexArrayNormalOffsetEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayParameteriAPPLE"); printf("glVertexArrayParameteriAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayRangeAPPLE"); printf("glVertexArrayRangeAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayRangeNV"); printf("glVertexArrayRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArraySecondaryColorOffsetEXT"); printf("glVertexArraySecondaryColorOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayTexCoordOffsetEXT"); printf("glVertexArrayTexCoordOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribBindingEXT"); printf("glVertexArrayVertexAttribBindingEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribDivisorEXT"); printf("glVertexArrayVertexAttribDivisorEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribFormatEXT"); printf("glVertexArrayVertexAttribFormatEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribIFormatEXT"); printf("glVertexArrayVertexAttribIFormatEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribIOffsetEXT"); printf("glVertexArrayVertexAttribIOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribLFormatEXT"); printf("glVertexArrayVertexAttribLFormatEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribLOffsetEXT"); printf("glVertexArrayVertexAttribLOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribOffsetEXT"); printf("glVertexArrayVertexAttribOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexBindingDivisorEXT"); printf("glVertexArrayVertexBindingDivisorEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexBuffer"); printf("glVertexArrayVertexBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexBuffers"); printf("glVertexArrayVertexBuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexOffsetEXT"); printf("glVertexArrayVertexOffsetEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1d"); printf("glVertexAttrib1d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1dARB"); printf("glVertexAttrib1dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1dNV"); printf("glVertexAttrib1dNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1dv"); printf("glVertexAttrib1dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1dvARB"); printf("glVertexAttrib1dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1dvNV"); printf("glVertexAttrib1dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1f"); printf("glVertexAttrib1f : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1fARB"); printf("glVertexAttrib1fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1fNV"); printf("glVertexAttrib1fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1fv"); printf("glVertexAttrib1fv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1fvARB"); printf("glVertexAttrib1fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1fvNV"); printf("glVertexAttrib1fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1hNV"); printf("glVertexAttrib1hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1hvNV"); printf("glVertexAttrib1hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1s"); printf("glVertexAttrib1s : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1sARB"); printf("glVertexAttrib1sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1sNV"); printf("glVertexAttrib1sNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1sv"); printf("glVertexAttrib1sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1svARB"); printf("glVertexAttrib1svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1svNV"); printf("glVertexAttrib1svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2d"); printf("glVertexAttrib2d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2dARB"); printf("glVertexAttrib2dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2dNV"); printf("glVertexAttrib2dNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2dv"); printf("glVertexAttrib2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2dvARB"); printf("glVertexAttrib2dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2dvNV"); printf("glVertexAttrib2dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2f"); printf("glVertexAttrib2f : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2fARB"); printf("glVertexAttrib2fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2fNV"); printf("glVertexAttrib2fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2fv"); printf("glVertexAttrib2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2fvARB"); printf("glVertexAttrib2fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2fvNV"); printf("glVertexAttrib2fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2hNV"); printf("glVertexAttrib2hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2hvNV"); printf("glVertexAttrib2hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2s"); printf("glVertexAttrib2s : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2sARB"); printf("glVertexAttrib2sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2sNV"); printf("glVertexAttrib2sNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2sv"); printf("glVertexAttrib2sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2svARB"); printf("glVertexAttrib2svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2svNV"); printf("glVertexAttrib2svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3d"); printf("glVertexAttrib3d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3dARB"); printf("glVertexAttrib3dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3dNV"); printf("glVertexAttrib3dNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3dv"); printf("glVertexAttrib3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3dvARB"); printf("glVertexAttrib3dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3dvNV"); printf("glVertexAttrib3dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3f"); printf("glVertexAttrib3f : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3fARB"); printf("glVertexAttrib3fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3fNV"); printf("glVertexAttrib3fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3fv"); printf("glVertexAttrib3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3fvARB"); printf("glVertexAttrib3fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3fvNV"); printf("glVertexAttrib3fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3hNV"); printf("glVertexAttrib3hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3hvNV"); printf("glVertexAttrib3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3s"); printf("glVertexAttrib3s : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3sARB"); printf("glVertexAttrib3sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3sNV"); printf("glVertexAttrib3sNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3sv"); printf("glVertexAttrib3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3svARB"); printf("glVertexAttrib3svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3svNV"); printf("glVertexAttrib3svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4Nbv"); printf("glVertexAttrib4Nbv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4NbvARB"); printf("glVertexAttrib4NbvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4Niv"); printf("glVertexAttrib4Niv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4NivARB"); printf("glVertexAttrib4NivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4Nsv"); printf("glVertexAttrib4Nsv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4NsvARB"); printf("glVertexAttrib4NsvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4Nub"); printf("glVertexAttrib4Nub : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4NubARB"); printf("glVertexAttrib4NubARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4Nubv"); printf("glVertexAttrib4Nubv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4NubvARB"); printf("glVertexAttrib4NubvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4Nuiv"); printf("glVertexAttrib4Nuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4NuivARB"); printf("glVertexAttrib4NuivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4Nusv"); printf("glVertexAttrib4Nusv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4NusvARB"); printf("glVertexAttrib4NusvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4bv"); printf("glVertexAttrib4bv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4bvARB"); printf("glVertexAttrib4bvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4d"); printf("glVertexAttrib4d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4dARB"); printf("glVertexAttrib4dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4dNV"); printf("glVertexAttrib4dNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4dv"); printf("glVertexAttrib4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4dvARB"); printf("glVertexAttrib4dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4dvNV"); printf("glVertexAttrib4dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4f"); printf("glVertexAttrib4f : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4fARB"); printf("glVertexAttrib4fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4fNV"); printf("glVertexAttrib4fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4fv"); printf("glVertexAttrib4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4fvARB"); printf("glVertexAttrib4fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4fvNV"); printf("glVertexAttrib4fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4hNV"); printf("glVertexAttrib4hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4hvNV"); printf("glVertexAttrib4hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4iv"); printf("glVertexAttrib4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4ivARB"); printf("glVertexAttrib4ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4s"); printf("glVertexAttrib4s : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4sARB"); printf("glVertexAttrib4sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4sNV"); printf("glVertexAttrib4sNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4sv"); printf("glVertexAttrib4sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4svARB"); printf("glVertexAttrib4svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4svNV"); printf("glVertexAttrib4svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4ubNV"); printf("glVertexAttrib4ubNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4ubv"); printf("glVertexAttrib4ubv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4ubvARB"); printf("glVertexAttrib4ubvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4ubvNV"); printf("glVertexAttrib4ubvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4uiv"); printf("glVertexAttrib4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4uivARB"); printf("glVertexAttrib4uivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4usv"); printf("glVertexAttrib4usv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4usvARB"); printf("glVertexAttrib4usvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribArrayObjectATI"); printf("glVertexAttribArrayObjectATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribBinding"); printf("glVertexAttribBinding : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribDivisor"); printf("glVertexAttribDivisor : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribDivisorARB"); printf("glVertexAttribDivisorARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribFormat"); printf("glVertexAttribFormat : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribFormatNV"); printf("glVertexAttribFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1i"); printf("glVertexAttribI1i : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1iEXT"); printf("glVertexAttribI1iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1iv"); printf("glVertexAttribI1iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1ivEXT"); printf("glVertexAttribI1ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1ui"); printf("glVertexAttribI1ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1uiEXT"); printf("glVertexAttribI1uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1uiv"); printf("glVertexAttribI1uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1uivEXT"); printf("glVertexAttribI1uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2i"); printf("glVertexAttribI2i : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2iEXT"); printf("glVertexAttribI2iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2iv"); printf("glVertexAttribI2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2ivEXT"); printf("glVertexAttribI2ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2ui"); printf("glVertexAttribI2ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2uiEXT"); printf("glVertexAttribI2uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2uiv"); printf("glVertexAttribI2uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2uivEXT"); printf("glVertexAttribI2uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3i"); printf("glVertexAttribI3i : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3iEXT"); printf("glVertexAttribI3iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3iv"); printf("glVertexAttribI3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3ivEXT"); printf("glVertexAttribI3ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3ui"); printf("glVertexAttribI3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3uiEXT"); printf("glVertexAttribI3uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3uiv"); printf("glVertexAttribI3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3uivEXT"); printf("glVertexAttribI3uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4bv"); printf("glVertexAttribI4bv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4bvEXT"); printf("glVertexAttribI4bvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4i"); printf("glVertexAttribI4i : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4iEXT"); printf("glVertexAttribI4iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4iv"); printf("glVertexAttribI4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4ivEXT"); printf("glVertexAttribI4ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4sv"); printf("glVertexAttribI4sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4svEXT"); printf("glVertexAttribI4svEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4ubv"); printf("glVertexAttribI4ubv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4ubvEXT"); printf("glVertexAttribI4ubvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4ui"); printf("glVertexAttribI4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4uiEXT"); printf("glVertexAttribI4uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4uiv"); printf("glVertexAttribI4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4uivEXT"); printf("glVertexAttribI4uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4usv"); printf("glVertexAttribI4usv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4usvEXT"); printf("glVertexAttribI4usvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribIFormat"); printf("glVertexAttribIFormat : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribIFormatNV"); printf("glVertexAttribIFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribIPointer"); printf("glVertexAttribIPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribIPointerEXT"); printf("glVertexAttribIPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1d"); printf("glVertexAttribL1d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1dEXT"); printf("glVertexAttribL1dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1dv"); printf("glVertexAttribL1dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1dvEXT"); printf("glVertexAttribL1dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1i64NV"); printf("glVertexAttribL1i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1i64vNV"); printf("glVertexAttribL1i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1ui64ARB"); printf("glVertexAttribL1ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1ui64NV"); printf("glVertexAttribL1ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1ui64vARB"); printf("glVertexAttribL1ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1ui64vNV"); printf("glVertexAttribL1ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2d"); printf("glVertexAttribL2d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2dEXT"); printf("glVertexAttribL2dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2dv"); printf("glVertexAttribL2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2dvEXT"); printf("glVertexAttribL2dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2i64NV"); printf("glVertexAttribL2i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2i64vNV"); printf("glVertexAttribL2i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2ui64NV"); printf("glVertexAttribL2ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2ui64vNV"); printf("glVertexAttribL2ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3d"); printf("glVertexAttribL3d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3dEXT"); printf("glVertexAttribL3dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3dv"); printf("glVertexAttribL3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3dvEXT"); printf("glVertexAttribL3dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3i64NV"); printf("glVertexAttribL3i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3i64vNV"); printf("glVertexAttribL3i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3ui64NV"); printf("glVertexAttribL3ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3ui64vNV"); printf("glVertexAttribL3ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4d"); printf("glVertexAttribL4d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4dEXT"); printf("glVertexAttribL4dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4dv"); printf("glVertexAttribL4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4dvEXT"); printf("glVertexAttribL4dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4i64NV"); printf("glVertexAttribL4i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4i64vNV"); printf("glVertexAttribL4i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4ui64NV"); printf("glVertexAttribL4ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4ui64vNV"); printf("glVertexAttribL4ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribLFormat"); printf("glVertexAttribLFormat : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribLFormatNV"); printf("glVertexAttribLFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribLPointer"); printf("glVertexAttribLPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribLPointerEXT"); printf("glVertexAttribLPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP1ui"); printf("glVertexAttribP1ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP1uiv"); printf("glVertexAttribP1uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP2ui"); printf("glVertexAttribP2ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP2uiv"); printf("glVertexAttribP2uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP3ui"); printf("glVertexAttribP3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP3uiv"); printf("glVertexAttribP3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP4ui"); printf("glVertexAttribP4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP4uiv"); printf("glVertexAttribP4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribParameteriAMD"); printf("glVertexAttribParameteriAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribPointer"); printf("glVertexAttribPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribPointerARB"); printf("glVertexAttribPointerARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribPointerNV"); printf("glVertexAttribPointerNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs1dvNV"); printf("glVertexAttribs1dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs1fvNV"); printf("glVertexAttribs1fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs1hvNV"); printf("glVertexAttribs1hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs1svNV"); printf("glVertexAttribs1svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs2dvNV"); printf("glVertexAttribs2dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs2fvNV"); printf("glVertexAttribs2fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs2hvNV"); printf("glVertexAttribs2hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs2svNV"); printf("glVertexAttribs2svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs3dvNV"); printf("glVertexAttribs3dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs3fvNV"); printf("glVertexAttribs3fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs3hvNV"); printf("glVertexAttribs3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs3svNV"); printf("glVertexAttribs3svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs4dvNV"); printf("glVertexAttribs4dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs4fvNV"); printf("glVertexAttribs4fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs4hvNV"); printf("glVertexAttribs4hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs4svNV"); printf("glVertexAttribs4svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs4ubvNV"); printf("glVertexAttribs4ubvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexBindingDivisor"); printf("glVertexBindingDivisor : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexBlendARB"); printf("glVertexBlendARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexBlendEnvfATI"); printf("glVertexBlendEnvfATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexBlendEnviATI"); printf("glVertexBlendEnviATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexFormatNV"); printf("glVertexFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexP2ui"); printf("glVertexP2ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexP2uiv"); printf("glVertexP2uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexP3ui"); printf("glVertexP3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexP3uiv"); printf("glVertexP3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexP4ui"); printf("glVertexP4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexP4uiv"); printf("glVertexP4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexPointSizefAPPLE"); printf("glVertexPointSizefAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexPointer"); printf("glVertexPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexPointerEXT"); printf("glVertexPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexPointerListIBM"); printf("glVertexPointerListIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexPointervINTEL"); printf("glVertexPointervINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1dATI"); printf("glVertexStream1dATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1dvATI"); printf("glVertexStream1dvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1fATI"); printf("glVertexStream1fATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1fvATI"); printf("glVertexStream1fvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1iATI"); printf("glVertexStream1iATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1ivATI"); printf("glVertexStream1ivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1sATI"); printf("glVertexStream1sATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1svATI"); printf("glVertexStream1svATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2dATI"); printf("glVertexStream2dATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2dvATI"); printf("glVertexStream2dvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2fATI"); printf("glVertexStream2fATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2fvATI"); printf("glVertexStream2fvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2iATI"); printf("glVertexStream2iATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2ivATI"); printf("glVertexStream2ivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2sATI"); printf("glVertexStream2sATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2svATI"); printf("glVertexStream2svATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3dATI"); printf("glVertexStream3dATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3dvATI"); printf("glVertexStream3dvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3fATI"); printf("glVertexStream3fATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3fvATI"); printf("glVertexStream3fvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3iATI"); printf("glVertexStream3iATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3ivATI"); printf("glVertexStream3ivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3sATI"); printf("glVertexStream3sATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3svATI"); printf("glVertexStream3svATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4dATI"); printf("glVertexStream4dATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4dvATI"); printf("glVertexStream4dvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4fATI"); printf("glVertexStream4fATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4fvATI"); printf("glVertexStream4fvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4iATI"); printf("glVertexStream4iATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4ivATI"); printf("glVertexStream4ivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4sATI"); printf("glVertexStream4sATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4svATI"); printf("glVertexStream4svATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexWeightPointerEXT"); printf("glVertexWeightPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexWeightfEXT"); printf("glVertexWeightfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexWeightfvEXT"); printf("glVertexWeightfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexWeighthNV"); printf("glVertexWeighthNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexWeighthvNV"); printf("glVertexWeighthvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVideoCaptureNV"); printf("glVideoCaptureNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVideoCaptureStreamParameterdvNV"); printf("glVideoCaptureStreamParameterdvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glVideoCaptureStreamParameterfvNV"); printf("glVideoCaptureStreamParameterfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glVideoCaptureStreamParameterivNV"); printf("glVideoCaptureStreamParameterivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glViewport"); printf("glViewport : %p\n", p); p = gl.OSMesaGetProcAddress("glViewportArrayv"); printf("glViewportArrayv : %p\n", p); p = gl.OSMesaGetProcAddress("glViewportIndexedf"); printf("glViewportIndexedf : %p\n", p); p = gl.OSMesaGetProcAddress("glViewportIndexedfv"); printf("glViewportIndexedfv : %p\n", p); p = gl.OSMesaGetProcAddress("glViewportPositionWScaleNV"); printf("glViewportPositionWScaleNV : %p\n", p); p = gl.OSMesaGetProcAddress("glViewportSwizzleNV"); printf("glViewportSwizzleNV : %p\n", p); p = gl.OSMesaGetProcAddress("glWaitSemaphoreEXT"); printf("glWaitSemaphoreEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glWaitSync"); printf("glWaitSync : %p\n", p); p = gl.OSMesaGetProcAddress("glWaitVkSemaphoreNV"); printf("glWaitVkSemaphoreNV : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightPathsNV"); printf("glWeightPathsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightPointerARB"); printf("glWeightPointerARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightbvARB"); printf("glWeightbvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightdvARB"); printf("glWeightdvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightfvARB"); printf("glWeightfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightivARB"); printf("glWeightivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightsvARB"); printf("glWeightsvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightubvARB"); printf("glWeightubvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightuivARB"); printf("glWeightuivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightusvARB"); printf("glWeightusvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2d"); printf("glWindowPos2d : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2dARB"); printf("glWindowPos2dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2dMESA"); printf("glWindowPos2dMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2dv"); printf("glWindowPos2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2dvARB"); printf("glWindowPos2dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2dvMESA"); printf("glWindowPos2dvMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2f"); printf("glWindowPos2f : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2fARB"); printf("glWindowPos2fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2fMESA"); printf("glWindowPos2fMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2fv"); printf("glWindowPos2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2fvARB"); printf("glWindowPos2fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2fvMESA"); printf("glWindowPos2fvMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2i"); printf("glWindowPos2i : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2iARB"); printf("glWindowPos2iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2iMESA"); printf("glWindowPos2iMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2iv"); printf("glWindowPos2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2ivARB"); printf("glWindowPos2ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2ivMESA"); printf("glWindowPos2ivMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2s"); printf("glWindowPos2s : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2sARB"); printf("glWindowPos2sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2sMESA"); printf("glWindowPos2sMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2sv"); printf("glWindowPos2sv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2svARB"); printf("glWindowPos2svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2svMESA"); printf("glWindowPos2svMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3d"); printf("glWindowPos3d : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3dARB"); printf("glWindowPos3dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3dMESA"); printf("glWindowPos3dMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3dv"); printf("glWindowPos3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3dvARB"); printf("glWindowPos3dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3dvMESA"); printf("glWindowPos3dvMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3f"); printf("glWindowPos3f : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3fARB"); printf("glWindowPos3fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3fMESA"); printf("glWindowPos3fMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3fv"); printf("glWindowPos3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3fvARB"); printf("glWindowPos3fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3fvMESA"); printf("glWindowPos3fvMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3i"); printf("glWindowPos3i : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3iARB"); printf("glWindowPos3iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3iMESA"); printf("glWindowPos3iMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3iv"); printf("glWindowPos3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3ivARB"); printf("glWindowPos3ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3ivMESA"); printf("glWindowPos3ivMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3s"); printf("glWindowPos3s : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3sARB"); printf("glWindowPos3sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3sMESA"); printf("glWindowPos3sMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3sv"); printf("glWindowPos3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3svARB"); printf("glWindowPos3svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3svMESA"); printf("glWindowPos3svMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4dMESA"); printf("glWindowPos4dMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4dvMESA"); printf("glWindowPos4dvMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4fMESA"); printf("glWindowPos4fMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4fvMESA"); printf("glWindowPos4fvMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4iMESA"); printf("glWindowPos4iMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4ivMESA"); printf("glWindowPos4ivMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4sMESA"); printf("glWindowPos4sMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4svMESA"); printf("glWindowPos4svMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowRectanglesEXT"); printf("glWindowRectanglesEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glWriteMaskEXT"); printf("glWriteMaskEXT : %p\n", p); p = gl.OSMesaGetProcAddress("gluLookAt"); printf("gluLookAt : %p\n", p); p = gl.OSMesaGetProcAddress("gluLookAtf"); printf("gluLookAtf : %p\n", p); p = gl.OSMesaGetProcAddress("information"); printf("information : %p\n", p); p = gl.OSMesaGetProcAddress("max_height"); printf("max_height : %p\n", p); p = gl.OSMesaGetProcAddress("max_width"); printf("max_width : %p\n", p); p = gl.OSMesaGetProcAddress("swapbuffer"); printf("swapbuffer : %p\n", p); gl.OSMesaDestroyContext(ctx); slb_unload_osmesa(pub); return 0; } #endif aranym-1.1.0/atari/nfosmesa/osmesa_load.c0000664000175000017500000314240113454637621016553 0ustar joyjoy/* Bindings of osmesa.ldg * Compile this module and link it with the application client */ #include #include #include #define NFOSMESA_NO_MANGLE #include #ifndef TRUE # define TRUE 1 # define FALSE 0 #endif struct _gl_osmesa gl; #if defined(__PUREC__) && !defined(__AHCC__) /* * Pure-C is not able to compile the result if you enable it, * probable the function gets too large */ # define GL_CHECK(x) #else # define GL_CHECK(x) if (x == 0) result = FALSE #endif static APIENTRY OSMESAproc real_OSMesaGetProcAddress(const char *funcname) { unsigned int func = (unsigned int)((*gl.__old_OSMesaGetProcAddress)(funcname)); if (func == 0 || func > gl.__numfuncs) return 0; --func; return (OSMESAproc)(((void **)(&gl))[func]); } int ldg_init_osmesa(LDG *lib) { int result = TRUE; struct _gl_osmesa *glp = ≷ #undef glClearDepth #undef glFrustum #undef glOrtho #undef gluLookAt glp->GetString = (const GLubyte * APIENTRY (*)(GLenum name)) ldg_find("glGetString", lib); GL_CHECK(glp->GetString); glp->OSMesaCreateContext = (OSMesaContext APIENTRY (*)(GLenum format, OSMesaContext sharelist)) ldg_find("OSMesaCreateContext", lib); GL_CHECK(glp->OSMesaCreateContext); glp->OSMesaCreateContextExt = (OSMesaContext APIENTRY (*)(GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist)) ldg_find("OSMesaCreateContextExt", lib); GL_CHECK(glp->OSMesaCreateContextExt); glp->OSMesaDestroyContext = (void APIENTRY (*)(OSMesaContext ctx)) ldg_find("OSMesaDestroyContext", lib); GL_CHECK(glp->OSMesaDestroyContext); glp->OSMesaMakeCurrent = (GLboolean APIENTRY (*)(OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height)) ldg_find("OSMesaMakeCurrent", lib); GL_CHECK(glp->OSMesaMakeCurrent); glp->OSMesaGetCurrentContext = (OSMesaContext APIENTRY (*)(void)) ldg_find("OSMesaGetCurrentContext", lib); GL_CHECK(glp->OSMesaGetCurrentContext); glp->OSMesaPixelStore = (void APIENTRY (*)(GLint pname, GLint value)) ldg_find("OSMesaPixelStore", lib); GL_CHECK(glp->OSMesaPixelStore); glp->OSMesaGetIntegerv = (void APIENTRY (*)(GLint pname, GLint *value)) ldg_find("OSMesaGetIntegerv", lib); GL_CHECK(glp->OSMesaGetIntegerv); glp->OSMesaGetDepthBuffer = (GLboolean APIENTRY (*)(OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void * *buffer)) ldg_find("OSMesaGetDepthBuffer", lib); GL_CHECK(glp->OSMesaGetDepthBuffer); glp->OSMesaGetColorBuffer = (GLboolean APIENTRY (*)(OSMesaContext c, GLint *width, GLint *height, GLint *format, void * *buffer)) ldg_find("OSMesaGetColorBuffer", lib); GL_CHECK(glp->OSMesaGetColorBuffer); glp->OSMesaGetProcAddress = (OSMESAproc APIENTRY (*)(const char *funcName)) ldg_find("OSMesaGetProcAddress", lib); GL_CHECK(glp->OSMesaGetProcAddress); glp->ClearIndex = (void APIENTRY (*)(GLfloat c)) ldg_find("glClearIndex", lib); GL_CHECK(glp->ClearIndex); glp->ClearColor = (void APIENTRY (*)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)) ldg_find("glClearColor", lib); GL_CHECK(glp->ClearColor); glp->Clear = (void APIENTRY (*)(GLbitfield mask)) ldg_find("glClear", lib); GL_CHECK(glp->Clear); glp->IndexMask = (void APIENTRY (*)(GLuint mask)) ldg_find("glIndexMask", lib); GL_CHECK(glp->IndexMask); glp->ColorMask = (void APIENTRY (*)(GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha)) ldg_find("glColorMask", lib); GL_CHECK(glp->ColorMask); glp->AlphaFunc = (void APIENTRY (*)(GLenum func, GLclampf ref)) ldg_find("glAlphaFunc", lib); GL_CHECK(glp->AlphaFunc); glp->BlendFunc = (void APIENTRY (*)(GLenum sfactor, GLenum dfactor)) ldg_find("glBlendFunc", lib); GL_CHECK(glp->BlendFunc); glp->LogicOp = (void APIENTRY (*)(GLenum opcode)) ldg_find("glLogicOp", lib); GL_CHECK(glp->LogicOp); glp->CullFace = (void APIENTRY (*)(GLenum mode)) ldg_find("glCullFace", lib); GL_CHECK(glp->CullFace); glp->FrontFace = (void APIENTRY (*)(GLenum mode)) ldg_find("glFrontFace", lib); GL_CHECK(glp->FrontFace); glp->PointSize = (void APIENTRY (*)(GLfloat size)) ldg_find("glPointSize", lib); GL_CHECK(glp->PointSize); glp->LineWidth = (void APIENTRY (*)(GLfloat width)) ldg_find("glLineWidth", lib); GL_CHECK(glp->LineWidth); glp->LineStipple = (void APIENTRY (*)(GLint factor, GLushort32 pattern)) ldg_find("glLineStipple", lib); GL_CHECK(glp->LineStipple); glp->PolygonMode = (void APIENTRY (*)(GLenum face, GLenum mode)) ldg_find("glPolygonMode", lib); GL_CHECK(glp->PolygonMode); glp->PolygonOffset = (void APIENTRY (*)(GLfloat factor, GLfloat units)) ldg_find("glPolygonOffset", lib); GL_CHECK(glp->PolygonOffset); glp->PolygonStipple = (void APIENTRY (*)(const GLubyte *mask)) ldg_find("glPolygonStipple", lib); GL_CHECK(glp->PolygonStipple); glp->GetPolygonStipple = (void APIENTRY (*)(GLubyte *mask)) ldg_find("glGetPolygonStipple", lib); GL_CHECK(glp->GetPolygonStipple); glp->EdgeFlag = (void APIENTRY (*)(GLboolean32 flag)) ldg_find("glEdgeFlag", lib); GL_CHECK(glp->EdgeFlag); glp->EdgeFlagv = (void APIENTRY (*)(const GLboolean *flag)) ldg_find("glEdgeFlagv", lib); GL_CHECK(glp->EdgeFlagv); glp->Scissor = (void APIENTRY (*)(GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glScissor", lib); GL_CHECK(glp->Scissor); glp->ClipPlane = (void APIENTRY (*)(GLenum plane, const GLdouble *equation)) ldg_find("glClipPlane", lib); GL_CHECK(glp->ClipPlane); glp->GetClipPlane = (void APIENTRY (*)(GLenum plane, GLdouble *equation)) ldg_find("glGetClipPlane", lib); GL_CHECK(glp->GetClipPlane); glp->DrawBuffer = (void APIENTRY (*)(GLenum mode)) ldg_find("glDrawBuffer", lib); GL_CHECK(glp->DrawBuffer); glp->ReadBuffer = (void APIENTRY (*)(GLenum mode)) ldg_find("glReadBuffer", lib); GL_CHECK(glp->ReadBuffer); glp->Enable = (void APIENTRY (*)(GLenum cap)) ldg_find("glEnable", lib); GL_CHECK(glp->Enable); glp->Disable = (void APIENTRY (*)(GLenum cap)) ldg_find("glDisable", lib); GL_CHECK(glp->Disable); glp->IsEnabled = (GLboolean APIENTRY (*)(GLenum cap)) ldg_find("glIsEnabled", lib); GL_CHECK(glp->IsEnabled); glp->EnableClientState = (void APIENTRY (*)(GLenum array)) ldg_find("glEnableClientState", lib); GL_CHECK(glp->EnableClientState); glp->DisableClientState = (void APIENTRY (*)(GLenum array)) ldg_find("glDisableClientState", lib); GL_CHECK(glp->DisableClientState); glp->GetBooleanv = (void APIENTRY (*)(GLenum pname, GLboolean *params)) ldg_find("glGetBooleanv", lib); GL_CHECK(glp->GetBooleanv); glp->GetDoublev = (void APIENTRY (*)(GLenum pname, GLdouble *params)) ldg_find("glGetDoublev", lib); GL_CHECK(glp->GetDoublev); glp->GetFloatv = (void APIENTRY (*)(GLenum pname, GLfloat *params)) ldg_find("glGetFloatv", lib); GL_CHECK(glp->GetFloatv); glp->GetIntegerv = (void APIENTRY (*)(GLenum pname, GLint *params)) ldg_find("glGetIntegerv", lib); GL_CHECK(glp->GetIntegerv); glp->PushAttrib = (void APIENTRY (*)(GLbitfield mask)) ldg_find("glPushAttrib", lib); GL_CHECK(glp->PushAttrib); glp->PopAttrib = (void APIENTRY (*)(void)) ldg_find("glPopAttrib", lib); GL_CHECK(glp->PopAttrib); glp->PushClientAttrib = (void APIENTRY (*)(GLbitfield mask)) ldg_find("glPushClientAttrib", lib); GL_CHECK(glp->PushClientAttrib); glp->PopClientAttrib = (void APIENTRY (*)(void)) ldg_find("glPopClientAttrib", lib); GL_CHECK(glp->PopClientAttrib); glp->RenderMode = (GLint APIENTRY (*)(GLenum mode)) ldg_find("glRenderMode", lib); GL_CHECK(glp->RenderMode); glp->GetError = (GLenum APIENTRY (*)(void)) ldg_find("glGetError", lib); GL_CHECK(glp->GetError); glp->Finish = (void APIENTRY (*)(void)) ldg_find("glFinish", lib); GL_CHECK(glp->Finish); glp->Flush = (void APIENTRY (*)(void)) ldg_find("glFlush", lib); GL_CHECK(glp->Flush); glp->Hint = (void APIENTRY (*)(GLenum target, GLenum mode)) ldg_find("glHint", lib); GL_CHECK(glp->Hint); glp->ClearDepth = (void APIENTRY (*)(GLclampd depth)) ldg_find("glClearDepthd", lib); GL_CHECK(glp->ClearDepth); glp->DepthFunc = (void APIENTRY (*)(GLenum func)) ldg_find("glDepthFunc", lib); GL_CHECK(glp->DepthFunc); glp->DepthMask = (void APIENTRY (*)(GLboolean32 flag)) ldg_find("glDepthMask", lib); GL_CHECK(glp->DepthMask); glp->DepthRange = (void APIENTRY (*)(GLclampd zNear, GLclampd zFar)) ldg_find("glDepthRange", lib); GL_CHECK(glp->DepthRange); glp->ClearAccum = (void APIENTRY (*)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) ldg_find("glClearAccum", lib); GL_CHECK(glp->ClearAccum); glp->Accum = (void APIENTRY (*)(GLenum op, GLfloat value)) ldg_find("glAccum", lib); GL_CHECK(glp->Accum); glp->MatrixMode = (void APIENTRY (*)(GLenum mode)) ldg_find("glMatrixMode", lib); GL_CHECK(glp->MatrixMode); glp->Ortho = (void APIENTRY (*)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)) ldg_find("glOrthod", lib); GL_CHECK(glp->Ortho); glp->Frustum = (void APIENTRY (*)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)) ldg_find("glFrustumd", lib); GL_CHECK(glp->Frustum); glp->Viewport = (void APIENTRY (*)(GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glViewport", lib); GL_CHECK(glp->Viewport); glp->PushMatrix = (void APIENTRY (*)(void)) ldg_find("glPushMatrix", lib); GL_CHECK(glp->PushMatrix); glp->PopMatrix = (void APIENTRY (*)(void)) ldg_find("glPopMatrix", lib); GL_CHECK(glp->PopMatrix); glp->LoadIdentity = (void APIENTRY (*)(void)) ldg_find("glLoadIdentity", lib); GL_CHECK(glp->LoadIdentity); glp->LoadMatrixd = (void APIENTRY (*)(const GLdouble *m)) ldg_find("glLoadMatrixd", lib); GL_CHECK(glp->LoadMatrixd); glp->LoadMatrixf = (void APIENTRY (*)(const GLfloat *m)) ldg_find("glLoadMatrixf", lib); GL_CHECK(glp->LoadMatrixf); glp->MultMatrixd = (void APIENTRY (*)(const GLdouble *m)) ldg_find("glMultMatrixd", lib); GL_CHECK(glp->MultMatrixd); glp->MultMatrixf = (void APIENTRY (*)(const GLfloat *m)) ldg_find("glMultMatrixf", lib); GL_CHECK(glp->MultMatrixf); glp->Rotated = (void APIENTRY (*)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)) ldg_find("glRotated", lib); GL_CHECK(glp->Rotated); glp->Rotatef = (void APIENTRY (*)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glRotatef", lib); GL_CHECK(glp->Rotatef); glp->Scaled = (void APIENTRY (*)(GLdouble x, GLdouble y, GLdouble z)) ldg_find("glScaled", lib); GL_CHECK(glp->Scaled); glp->Scalef = (void APIENTRY (*)(GLfloat x, GLfloat y, GLfloat z)) ldg_find("glScalef", lib); GL_CHECK(glp->Scalef); glp->Translated = (void APIENTRY (*)(GLdouble x, GLdouble y, GLdouble z)) ldg_find("glTranslated", lib); GL_CHECK(glp->Translated); glp->Translatef = (void APIENTRY (*)(GLfloat x, GLfloat y, GLfloat z)) ldg_find("glTranslatef", lib); GL_CHECK(glp->Translatef); glp->IsList = (GLboolean APIENTRY (*)(GLuint list)) ldg_find("glIsList", lib); GL_CHECK(glp->IsList); glp->DeleteLists = (void APIENTRY (*)(GLuint list, GLsizei range)) ldg_find("glDeleteLists", lib); GL_CHECK(glp->DeleteLists); glp->GenLists = (GLuint APIENTRY (*)(GLsizei range)) ldg_find("glGenLists", lib); GL_CHECK(glp->GenLists); glp->NewList = (void APIENTRY (*)(GLuint list, GLenum mode)) ldg_find("glNewList", lib); GL_CHECK(glp->NewList); glp->EndList = (void APIENTRY (*)(void)) ldg_find("glEndList", lib); GL_CHECK(glp->EndList); glp->CallList = (void APIENTRY (*)(GLuint list)) ldg_find("glCallList", lib); GL_CHECK(glp->CallList); glp->CallLists = (void APIENTRY (*)(GLsizei n, GLenum type, const GLvoid *lists)) ldg_find("glCallLists", lib); GL_CHECK(glp->CallLists); glp->ListBase = (void APIENTRY (*)(GLuint base)) ldg_find("glListBase", lib); GL_CHECK(glp->ListBase); glp->Begin = (void APIENTRY (*)(GLenum mode)) ldg_find("glBegin", lib); GL_CHECK(glp->Begin); glp->End = (void APIENTRY (*)(void)) ldg_find("glEnd", lib); GL_CHECK(glp->End); glp->Vertex2d = (void APIENTRY (*)(GLdouble x, GLdouble y)) ldg_find("glVertex2d", lib); GL_CHECK(glp->Vertex2d); glp->Vertex2f = (void APIENTRY (*)(GLfloat x, GLfloat y)) ldg_find("glVertex2f", lib); GL_CHECK(glp->Vertex2f); glp->Vertex2i = (void APIENTRY (*)(GLint x, GLint y)) ldg_find("glVertex2i", lib); GL_CHECK(glp->Vertex2i); glp->Vertex2s = (void APIENTRY (*)(GLshort32 x, GLshort32 y)) ldg_find("glVertex2s", lib); GL_CHECK(glp->Vertex2s); glp->Vertex3d = (void APIENTRY (*)(GLdouble x, GLdouble y, GLdouble z)) ldg_find("glVertex3d", lib); GL_CHECK(glp->Vertex3d); glp->Vertex3f = (void APIENTRY (*)(GLfloat x, GLfloat y, GLfloat z)) ldg_find("glVertex3f", lib); GL_CHECK(glp->Vertex3f); glp->Vertex3i = (void APIENTRY (*)(GLint x, GLint y, GLint z)) ldg_find("glVertex3i", lib); GL_CHECK(glp->Vertex3i); glp->Vertex3s = (void APIENTRY (*)(GLshort32 x, GLshort32 y, GLshort32 z)) ldg_find("glVertex3s", lib); GL_CHECK(glp->Vertex3s); glp->Vertex4d = (void APIENTRY (*)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glVertex4d", lib); GL_CHECK(glp->Vertex4d); glp->Vertex4f = (void APIENTRY (*)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glVertex4f", lib); GL_CHECK(glp->Vertex4f); glp->Vertex4i = (void APIENTRY (*)(GLint x, GLint y, GLint z, GLint w)) ldg_find("glVertex4i", lib); GL_CHECK(glp->Vertex4i); glp->Vertex4s = (void APIENTRY (*)(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w)) ldg_find("glVertex4s", lib); GL_CHECK(glp->Vertex4s); glp->Vertex2dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glVertex2dv", lib); GL_CHECK(glp->Vertex2dv); glp->Vertex2fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glVertex2fv", lib); GL_CHECK(glp->Vertex2fv); glp->Vertex2iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glVertex2iv", lib); GL_CHECK(glp->Vertex2iv); glp->Vertex2sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glVertex2sv", lib); GL_CHECK(glp->Vertex2sv); glp->Vertex3dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glVertex3dv", lib); GL_CHECK(glp->Vertex3dv); glp->Vertex3fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glVertex3fv", lib); GL_CHECK(glp->Vertex3fv); glp->Vertex3iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glVertex3iv", lib); GL_CHECK(glp->Vertex3iv); glp->Vertex3sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glVertex3sv", lib); GL_CHECK(glp->Vertex3sv); glp->Vertex4dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glVertex4dv", lib); GL_CHECK(glp->Vertex4dv); glp->Vertex4fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glVertex4fv", lib); GL_CHECK(glp->Vertex4fv); glp->Vertex4iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glVertex4iv", lib); GL_CHECK(glp->Vertex4iv); glp->Vertex4sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glVertex4sv", lib); GL_CHECK(glp->Vertex4sv); glp->Normal3b = (void APIENTRY (*)(GLbyte32 nx, GLbyte32 ny, GLbyte32 nz)) ldg_find("glNormal3b", lib); GL_CHECK(glp->Normal3b); glp->Normal3d = (void APIENTRY (*)(GLdouble nx, GLdouble ny, GLdouble nz)) ldg_find("glNormal3d", lib); GL_CHECK(glp->Normal3d); glp->Normal3f = (void APIENTRY (*)(GLfloat nx, GLfloat ny, GLfloat nz)) ldg_find("glNormal3f", lib); GL_CHECK(glp->Normal3f); glp->Normal3i = (void APIENTRY (*)(GLint nx, GLint ny, GLint nz)) ldg_find("glNormal3i", lib); GL_CHECK(glp->Normal3i); glp->Normal3s = (void APIENTRY (*)(GLshort32 nx, GLshort32 ny, GLshort32 nz)) ldg_find("glNormal3s", lib); GL_CHECK(glp->Normal3s); glp->Normal3bv = (void APIENTRY (*)(const GLbyte *v)) ldg_find("glNormal3bv", lib); GL_CHECK(glp->Normal3bv); glp->Normal3dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glNormal3dv", lib); GL_CHECK(glp->Normal3dv); glp->Normal3fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glNormal3fv", lib); GL_CHECK(glp->Normal3fv); glp->Normal3iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glNormal3iv", lib); GL_CHECK(glp->Normal3iv); glp->Normal3sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glNormal3sv", lib); GL_CHECK(glp->Normal3sv); glp->Indexd = (void APIENTRY (*)(GLdouble c)) ldg_find("glIndexd", lib); GL_CHECK(glp->Indexd); glp->Indexf = (void APIENTRY (*)(GLfloat c)) ldg_find("glIndexf", lib); GL_CHECK(glp->Indexf); glp->Indexi = (void APIENTRY (*)(GLint c)) ldg_find("glIndexi", lib); GL_CHECK(glp->Indexi); glp->Indexs = (void APIENTRY (*)(GLshort32 c)) ldg_find("glIndexs", lib); GL_CHECK(glp->Indexs); glp->Indexub = (void APIENTRY (*)(GLubyte32 c)) ldg_find("glIndexub", lib); GL_CHECK(glp->Indexub); glp->Indexdv = (void APIENTRY (*)(const GLdouble *c)) ldg_find("glIndexdv", lib); GL_CHECK(glp->Indexdv); glp->Indexfv = (void APIENTRY (*)(const GLfloat *c)) ldg_find("glIndexfv", lib); GL_CHECK(glp->Indexfv); glp->Indexiv = (void APIENTRY (*)(const GLint *c)) ldg_find("glIndexiv", lib); GL_CHECK(glp->Indexiv); glp->Indexsv = (void APIENTRY (*)(const GLshort *c)) ldg_find("glIndexsv", lib); GL_CHECK(glp->Indexsv); glp->Indexubv = (void APIENTRY (*)(const GLubyte *c)) ldg_find("glIndexubv", lib); GL_CHECK(glp->Indexubv); glp->Color3b = (void APIENTRY (*)(GLbyte32 red, GLbyte32 green, GLbyte32 blue)) ldg_find("glColor3b", lib); GL_CHECK(glp->Color3b); glp->Color3d = (void APIENTRY (*)(GLdouble red, GLdouble green, GLdouble blue)) ldg_find("glColor3d", lib); GL_CHECK(glp->Color3d); glp->Color3f = (void APIENTRY (*)(GLfloat red, GLfloat green, GLfloat blue)) ldg_find("glColor3f", lib); GL_CHECK(glp->Color3f); glp->Color3i = (void APIENTRY (*)(GLint red, GLint green, GLint blue)) ldg_find("glColor3i", lib); GL_CHECK(glp->Color3i); glp->Color3s = (void APIENTRY (*)(GLshort32 red, GLshort32 green, GLshort32 blue)) ldg_find("glColor3s", lib); GL_CHECK(glp->Color3s); glp->Color3ub = (void APIENTRY (*)(GLubyte32 red, GLubyte32 green, GLubyte32 blue)) ldg_find("glColor3ub", lib); GL_CHECK(glp->Color3ub); glp->Color3ui = (void APIENTRY (*)(GLuint red, GLuint green, GLuint blue)) ldg_find("glColor3ui", lib); GL_CHECK(glp->Color3ui); glp->Color3us = (void APIENTRY (*)(GLushort32 red, GLushort32 green, GLushort32 blue)) ldg_find("glColor3us", lib); GL_CHECK(glp->Color3us); glp->Color4b = (void APIENTRY (*)(GLbyte32 red, GLbyte32 green, GLbyte32 blue, GLbyte32 alpha)) ldg_find("glColor4b", lib); GL_CHECK(glp->Color4b); glp->Color4d = (void APIENTRY (*)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)) ldg_find("glColor4d", lib); GL_CHECK(glp->Color4d); glp->Color4f = (void APIENTRY (*)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) ldg_find("glColor4f", lib); GL_CHECK(glp->Color4f); glp->Color4i = (void APIENTRY (*)(GLint red, GLint green, GLint blue, GLint alpha)) ldg_find("glColor4i", lib); GL_CHECK(glp->Color4i); glp->Color4s = (void APIENTRY (*)(GLshort32 red, GLshort32 green, GLshort32 blue, GLshort32 alpha)) ldg_find("glColor4s", lib); GL_CHECK(glp->Color4s); glp->Color4ub = (void APIENTRY (*)(GLubyte32 red, GLubyte32 green, GLubyte32 blue, GLubyte32 alpha)) ldg_find("glColor4ub", lib); GL_CHECK(glp->Color4ub); glp->Color4ui = (void APIENTRY (*)(GLuint red, GLuint green, GLuint blue, GLuint alpha)) ldg_find("glColor4ui", lib); GL_CHECK(glp->Color4ui); glp->Color4us = (void APIENTRY (*)(GLushort32 red, GLushort32 green, GLushort32 blue, GLushort32 alpha)) ldg_find("glColor4us", lib); GL_CHECK(glp->Color4us); glp->Color3bv = (void APIENTRY (*)(const GLbyte *v)) ldg_find("glColor3bv", lib); GL_CHECK(glp->Color3bv); glp->Color3dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glColor3dv", lib); GL_CHECK(glp->Color3dv); glp->Color3fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glColor3fv", lib); GL_CHECK(glp->Color3fv); glp->Color3iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glColor3iv", lib); GL_CHECK(glp->Color3iv); glp->Color3sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glColor3sv", lib); GL_CHECK(glp->Color3sv); glp->Color3ubv = (void APIENTRY (*)(const GLubyte *v)) ldg_find("glColor3ubv", lib); GL_CHECK(glp->Color3ubv); glp->Color3uiv = (void APIENTRY (*)(const GLuint *v)) ldg_find("glColor3uiv", lib); GL_CHECK(glp->Color3uiv); glp->Color3usv = (void APIENTRY (*)(const GLushort *v)) ldg_find("glColor3usv", lib); GL_CHECK(glp->Color3usv); glp->Color4bv = (void APIENTRY (*)(const GLbyte *v)) ldg_find("glColor4bv", lib); GL_CHECK(glp->Color4bv); glp->Color4dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glColor4dv", lib); GL_CHECK(glp->Color4dv); glp->Color4fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glColor4fv", lib); GL_CHECK(glp->Color4fv); glp->Color4iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glColor4iv", lib); GL_CHECK(glp->Color4iv); glp->Color4sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glColor4sv", lib); GL_CHECK(glp->Color4sv); glp->Color4ubv = (void APIENTRY (*)(const GLubyte *v)) ldg_find("glColor4ubv", lib); GL_CHECK(glp->Color4ubv); glp->Color4uiv = (void APIENTRY (*)(const GLuint *v)) ldg_find("glColor4uiv", lib); GL_CHECK(glp->Color4uiv); glp->Color4usv = (void APIENTRY (*)(const GLushort *v)) ldg_find("glColor4usv", lib); GL_CHECK(glp->Color4usv); glp->TexCoord1d = (void APIENTRY (*)(GLdouble s)) ldg_find("glTexCoord1d", lib); GL_CHECK(glp->TexCoord1d); glp->TexCoord1f = (void APIENTRY (*)(GLfloat s)) ldg_find("glTexCoord1f", lib); GL_CHECK(glp->TexCoord1f); glp->TexCoord1i = (void APIENTRY (*)(GLint s)) ldg_find("glTexCoord1i", lib); GL_CHECK(glp->TexCoord1i); glp->TexCoord1s = (void APIENTRY (*)(GLshort32 s)) ldg_find("glTexCoord1s", lib); GL_CHECK(glp->TexCoord1s); glp->TexCoord2d = (void APIENTRY (*)(GLdouble s, GLdouble t)) ldg_find("glTexCoord2d", lib); GL_CHECK(glp->TexCoord2d); glp->TexCoord2f = (void APIENTRY (*)(GLfloat s, GLfloat t)) ldg_find("glTexCoord2f", lib); GL_CHECK(glp->TexCoord2f); glp->TexCoord2i = (void APIENTRY (*)(GLint s, GLint t)) ldg_find("glTexCoord2i", lib); GL_CHECK(glp->TexCoord2i); glp->TexCoord2s = (void APIENTRY (*)(GLshort32 s, GLshort32 t)) ldg_find("glTexCoord2s", lib); GL_CHECK(glp->TexCoord2s); glp->TexCoord3d = (void APIENTRY (*)(GLdouble s, GLdouble t, GLdouble r)) ldg_find("glTexCoord3d", lib); GL_CHECK(glp->TexCoord3d); glp->TexCoord3f = (void APIENTRY (*)(GLfloat s, GLfloat t, GLfloat r)) ldg_find("glTexCoord3f", lib); GL_CHECK(glp->TexCoord3f); glp->TexCoord3i = (void APIENTRY (*)(GLint s, GLint t, GLint r)) ldg_find("glTexCoord3i", lib); GL_CHECK(glp->TexCoord3i); glp->TexCoord3s = (void APIENTRY (*)(GLshort32 s, GLshort32 t, GLshort32 r)) ldg_find("glTexCoord3s", lib); GL_CHECK(glp->TexCoord3s); glp->TexCoord4d = (void APIENTRY (*)(GLdouble s, GLdouble t, GLdouble r, GLdouble q)) ldg_find("glTexCoord4d", lib); GL_CHECK(glp->TexCoord4d); glp->TexCoord4f = (void APIENTRY (*)(GLfloat s, GLfloat t, GLfloat r, GLfloat q)) ldg_find("glTexCoord4f", lib); GL_CHECK(glp->TexCoord4f); glp->TexCoord4i = (void APIENTRY (*)(GLint s, GLint t, GLint r, GLint q)) ldg_find("glTexCoord4i", lib); GL_CHECK(glp->TexCoord4i); glp->TexCoord4s = (void APIENTRY (*)(GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q)) ldg_find("glTexCoord4s", lib); GL_CHECK(glp->TexCoord4s); glp->TexCoord1dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glTexCoord1dv", lib); GL_CHECK(glp->TexCoord1dv); glp->TexCoord1fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glTexCoord1fv", lib); GL_CHECK(glp->TexCoord1fv); glp->TexCoord1iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glTexCoord1iv", lib); GL_CHECK(glp->TexCoord1iv); glp->TexCoord1sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glTexCoord1sv", lib); GL_CHECK(glp->TexCoord1sv); glp->TexCoord2dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glTexCoord2dv", lib); GL_CHECK(glp->TexCoord2dv); glp->TexCoord2fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glTexCoord2fv", lib); GL_CHECK(glp->TexCoord2fv); glp->TexCoord2iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glTexCoord2iv", lib); GL_CHECK(glp->TexCoord2iv); glp->TexCoord2sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glTexCoord2sv", lib); GL_CHECK(glp->TexCoord2sv); glp->TexCoord3dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glTexCoord3dv", lib); GL_CHECK(glp->TexCoord3dv); glp->TexCoord3fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glTexCoord3fv", lib); GL_CHECK(glp->TexCoord3fv); glp->TexCoord3iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glTexCoord3iv", lib); GL_CHECK(glp->TexCoord3iv); glp->TexCoord3sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glTexCoord3sv", lib); GL_CHECK(glp->TexCoord3sv); glp->TexCoord4dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glTexCoord4dv", lib); GL_CHECK(glp->TexCoord4dv); glp->TexCoord4fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glTexCoord4fv", lib); GL_CHECK(glp->TexCoord4fv); glp->TexCoord4iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glTexCoord4iv", lib); GL_CHECK(glp->TexCoord4iv); glp->TexCoord4sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glTexCoord4sv", lib); GL_CHECK(glp->TexCoord4sv); glp->RasterPos2d = (void APIENTRY (*)(GLdouble x, GLdouble y)) ldg_find("glRasterPos2d", lib); GL_CHECK(glp->RasterPos2d); glp->RasterPos2f = (void APIENTRY (*)(GLfloat x, GLfloat y)) ldg_find("glRasterPos2f", lib); GL_CHECK(glp->RasterPos2f); glp->RasterPos2i = (void APIENTRY (*)(GLint x, GLint y)) ldg_find("glRasterPos2i", lib); GL_CHECK(glp->RasterPos2i); glp->RasterPos2s = (void APIENTRY (*)(GLshort32 x, GLshort32 y)) ldg_find("glRasterPos2s", lib); GL_CHECK(glp->RasterPos2s); glp->RasterPos3d = (void APIENTRY (*)(GLdouble x, GLdouble y, GLdouble z)) ldg_find("glRasterPos3d", lib); GL_CHECK(glp->RasterPos3d); glp->RasterPos3f = (void APIENTRY (*)(GLfloat x, GLfloat y, GLfloat z)) ldg_find("glRasterPos3f", lib); GL_CHECK(glp->RasterPos3f); glp->RasterPos3i = (void APIENTRY (*)(GLint x, GLint y, GLint z)) ldg_find("glRasterPos3i", lib); GL_CHECK(glp->RasterPos3i); glp->RasterPos3s = (void APIENTRY (*)(GLshort32 x, GLshort32 y, GLshort32 z)) ldg_find("glRasterPos3s", lib); GL_CHECK(glp->RasterPos3s); glp->RasterPos4d = (void APIENTRY (*)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glRasterPos4d", lib); GL_CHECK(glp->RasterPos4d); glp->RasterPos4f = (void APIENTRY (*)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glRasterPos4f", lib); GL_CHECK(glp->RasterPos4f); glp->RasterPos4i = (void APIENTRY (*)(GLint x, GLint y, GLint z, GLint w)) ldg_find("glRasterPos4i", lib); GL_CHECK(glp->RasterPos4i); glp->RasterPos4s = (void APIENTRY (*)(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w)) ldg_find("glRasterPos4s", lib); GL_CHECK(glp->RasterPos4s); glp->RasterPos2dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glRasterPos2dv", lib); GL_CHECK(glp->RasterPos2dv); glp->RasterPos2fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glRasterPos2fv", lib); GL_CHECK(glp->RasterPos2fv); glp->RasterPos2iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glRasterPos2iv", lib); GL_CHECK(glp->RasterPos2iv); glp->RasterPos2sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glRasterPos2sv", lib); GL_CHECK(glp->RasterPos2sv); glp->RasterPos3dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glRasterPos3dv", lib); GL_CHECK(glp->RasterPos3dv); glp->RasterPos3fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glRasterPos3fv", lib); GL_CHECK(glp->RasterPos3fv); glp->RasterPos3iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glRasterPos3iv", lib); GL_CHECK(glp->RasterPos3iv); glp->RasterPos3sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glRasterPos3sv", lib); GL_CHECK(glp->RasterPos3sv); glp->RasterPos4dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glRasterPos4dv", lib); GL_CHECK(glp->RasterPos4dv); glp->RasterPos4fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glRasterPos4fv", lib); GL_CHECK(glp->RasterPos4fv); glp->RasterPos4iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glRasterPos4iv", lib); GL_CHECK(glp->RasterPos4iv); glp->RasterPos4sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glRasterPos4sv", lib); GL_CHECK(glp->RasterPos4sv); glp->Rectd = (void APIENTRY (*)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)) ldg_find("glRectd", lib); GL_CHECK(glp->Rectd); glp->Rectf = (void APIENTRY (*)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)) ldg_find("glRectf", lib); GL_CHECK(glp->Rectf); glp->Recti = (void APIENTRY (*)(GLint x1, GLint y1, GLint x2, GLint y2)) ldg_find("glRecti", lib); GL_CHECK(glp->Recti); glp->Rects = (void APIENTRY (*)(GLshort32 x1, GLshort32 y1, GLshort32 x2, GLshort32 y2)) ldg_find("glRects", lib); GL_CHECK(glp->Rects); glp->Rectdv = (void APIENTRY (*)(const GLdouble *v1, const GLdouble *v2)) ldg_find("glRectdv", lib); GL_CHECK(glp->Rectdv); glp->Rectfv = (void APIENTRY (*)(const GLfloat *v1, const GLfloat *v2)) ldg_find("glRectfv", lib); GL_CHECK(glp->Rectfv); glp->Rectiv = (void APIENTRY (*)(const GLint *v1, const GLint *v2)) ldg_find("glRectiv", lib); GL_CHECK(glp->Rectiv); glp->Rectsv = (void APIENTRY (*)(const GLshort *v1, const GLshort *v2)) ldg_find("glRectsv", lib); GL_CHECK(glp->Rectsv); glp->VertexPointer = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) ldg_find("glVertexPointer", lib); GL_CHECK(glp->VertexPointer); glp->NormalPointer = (void APIENTRY (*)(GLenum type, GLsizei stride, const GLvoid *pointer)) ldg_find("glNormalPointer", lib); GL_CHECK(glp->NormalPointer); glp->ColorPointer = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) ldg_find("glColorPointer", lib); GL_CHECK(glp->ColorPointer); glp->IndexPointer = (void APIENTRY (*)(GLenum type, GLsizei stride, const GLvoid *pointer)) ldg_find("glIndexPointer", lib); GL_CHECK(glp->IndexPointer); glp->TexCoordPointer = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) ldg_find("glTexCoordPointer", lib); GL_CHECK(glp->TexCoordPointer); glp->EdgeFlagPointer = (void APIENTRY (*)(GLsizei stride, const GLvoid *pointer)) ldg_find("glEdgeFlagPointer", lib); GL_CHECK(glp->EdgeFlagPointer); glp->GetPointerv = (void APIENTRY (*)(GLenum pname, GLvoid* *params)) ldg_find("glGetPointerv", lib); GL_CHECK(glp->GetPointerv); glp->ArrayElement = (void APIENTRY (*)(GLint i)) ldg_find("glArrayElement", lib); GL_CHECK(glp->ArrayElement); glp->DrawArrays = (void APIENTRY (*)(GLenum mode, GLint first, GLsizei count)) ldg_find("glDrawArrays", lib); GL_CHECK(glp->DrawArrays); glp->DrawElements = (void APIENTRY (*)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices)) ldg_find("glDrawElements", lib); GL_CHECK(glp->DrawElements); glp->InterleavedArrays = (void APIENTRY (*)(GLenum format, GLsizei stride, const GLvoid *pointer)) ldg_find("glInterleavedArrays", lib); GL_CHECK(glp->InterleavedArrays); glp->ShadeModel = (void APIENTRY (*)(GLenum mode)) ldg_find("glShadeModel", lib); GL_CHECK(glp->ShadeModel); glp->Lightf = (void APIENTRY (*)(GLenum light, GLenum pname, GLfloat param)) ldg_find("glLightf", lib); GL_CHECK(glp->Lightf); glp->Lighti = (void APIENTRY (*)(GLenum light, GLenum pname, GLint param)) ldg_find("glLighti", lib); GL_CHECK(glp->Lighti); glp->Lightfv = (void APIENTRY (*)(GLenum light, GLenum pname, const GLfloat *params)) ldg_find("glLightfv", lib); GL_CHECK(glp->Lightfv); glp->Lightiv = (void APIENTRY (*)(GLenum light, GLenum pname, const GLint *params)) ldg_find("glLightiv", lib); GL_CHECK(glp->Lightiv); glp->GetLightfv = (void APIENTRY (*)(GLenum light, GLenum pname, GLfloat *params)) ldg_find("glGetLightfv", lib); GL_CHECK(glp->GetLightfv); glp->GetLightiv = (void APIENTRY (*)(GLenum light, GLenum pname, GLint *params)) ldg_find("glGetLightiv", lib); GL_CHECK(glp->GetLightiv); glp->LightModelf = (void APIENTRY (*)(GLenum pname, GLfloat param)) ldg_find("glLightModelf", lib); GL_CHECK(glp->LightModelf); glp->LightModeli = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glLightModeli", lib); GL_CHECK(glp->LightModeli); glp->LightModelfv = (void APIENTRY (*)(GLenum pname, const GLfloat *params)) ldg_find("glLightModelfv", lib); GL_CHECK(glp->LightModelfv); glp->LightModeliv = (void APIENTRY (*)(GLenum pname, const GLint *params)) ldg_find("glLightModeliv", lib); GL_CHECK(glp->LightModeliv); glp->Materialf = (void APIENTRY (*)(GLenum face, GLenum pname, GLfloat param)) ldg_find("glMaterialf", lib); GL_CHECK(glp->Materialf); glp->Materiali = (void APIENTRY (*)(GLenum face, GLenum pname, GLint param)) ldg_find("glMateriali", lib); GL_CHECK(glp->Materiali); glp->Materialfv = (void APIENTRY (*)(GLenum face, GLenum pname, const GLfloat *params)) ldg_find("glMaterialfv", lib); GL_CHECK(glp->Materialfv); glp->Materialiv = (void APIENTRY (*)(GLenum face, GLenum pname, const GLint *params)) ldg_find("glMaterialiv", lib); GL_CHECK(glp->Materialiv); glp->GetMaterialfv = (void APIENTRY (*)(GLenum face, GLenum pname, GLfloat *params)) ldg_find("glGetMaterialfv", lib); GL_CHECK(glp->GetMaterialfv); glp->GetMaterialiv = (void APIENTRY (*)(GLenum face, GLenum pname, GLint *params)) ldg_find("glGetMaterialiv", lib); GL_CHECK(glp->GetMaterialiv); glp->ColorMaterial = (void APIENTRY (*)(GLenum face, GLenum mode)) ldg_find("glColorMaterial", lib); GL_CHECK(glp->ColorMaterial); glp->PixelZoom = (void APIENTRY (*)(GLfloat xfactor, GLfloat yfactor)) ldg_find("glPixelZoom", lib); GL_CHECK(glp->PixelZoom); glp->PixelStoref = (void APIENTRY (*)(GLenum pname, GLfloat param)) ldg_find("glPixelStoref", lib); GL_CHECK(glp->PixelStoref); glp->PixelStorei = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glPixelStorei", lib); GL_CHECK(glp->PixelStorei); glp->PixelTransferf = (void APIENTRY (*)(GLenum pname, GLfloat param)) ldg_find("glPixelTransferf", lib); GL_CHECK(glp->PixelTransferf); glp->PixelTransferi = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glPixelTransferi", lib); GL_CHECK(glp->PixelTransferi); glp->PixelMapfv = (void APIENTRY (*)(GLenum map, GLsizei mapsize, const GLfloat *values)) ldg_find("glPixelMapfv", lib); GL_CHECK(glp->PixelMapfv); glp->PixelMapuiv = (void APIENTRY (*)(GLenum map, GLsizei mapsize, const GLuint *values)) ldg_find("glPixelMapuiv", lib); GL_CHECK(glp->PixelMapuiv); glp->PixelMapusv = (void APIENTRY (*)(GLenum map, GLsizei mapsize, const GLushort *values)) ldg_find("glPixelMapusv", lib); GL_CHECK(glp->PixelMapusv); glp->GetPixelMapfv = (void APIENTRY (*)(GLenum map, GLfloat *values)) ldg_find("glGetPixelMapfv", lib); GL_CHECK(glp->GetPixelMapfv); glp->GetPixelMapuiv = (void APIENTRY (*)(GLenum map, GLuint *values)) ldg_find("glGetPixelMapuiv", lib); GL_CHECK(glp->GetPixelMapuiv); glp->GetPixelMapusv = (void APIENTRY (*)(GLenum map, GLushort *values)) ldg_find("glGetPixelMapusv", lib); GL_CHECK(glp->GetPixelMapusv); glp->Bitmap = (void APIENTRY (*)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)) ldg_find("glBitmap", lib); GL_CHECK(glp->Bitmap); glp->ReadPixels = (void APIENTRY (*)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)) ldg_find("glReadPixels", lib); GL_CHECK(glp->ReadPixels); glp->DrawPixels = (void APIENTRY (*)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)) ldg_find("glDrawPixels", lib); GL_CHECK(glp->DrawPixels); glp->CopyPixels = (void APIENTRY (*)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)) ldg_find("glCopyPixels", lib); GL_CHECK(glp->CopyPixels); glp->StencilFunc = (void APIENTRY (*)(GLenum func, GLint ref, GLuint mask)) ldg_find("glStencilFunc", lib); GL_CHECK(glp->StencilFunc); glp->StencilMask = (void APIENTRY (*)(GLuint mask)) ldg_find("glStencilMask", lib); GL_CHECK(glp->StencilMask); glp->StencilOp = (void APIENTRY (*)(GLenum fail, GLenum zfail, GLenum zpass)) ldg_find("glStencilOp", lib); GL_CHECK(glp->StencilOp); glp->ClearStencil = (void APIENTRY (*)(GLint s)) ldg_find("glClearStencil", lib); GL_CHECK(glp->ClearStencil); glp->TexGend = (void APIENTRY (*)(GLenum coord, GLenum pname, GLdouble param)) ldg_find("glTexGend", lib); GL_CHECK(glp->TexGend); glp->TexGenf = (void APIENTRY (*)(GLenum coord, GLenum pname, GLfloat param)) ldg_find("glTexGenf", lib); GL_CHECK(glp->TexGenf); glp->TexGeni = (void APIENTRY (*)(GLenum coord, GLenum pname, GLint param)) ldg_find("glTexGeni", lib); GL_CHECK(glp->TexGeni); glp->TexGendv = (void APIENTRY (*)(GLenum coord, GLenum pname, const GLdouble *params)) ldg_find("glTexGendv", lib); GL_CHECK(glp->TexGendv); glp->TexGenfv = (void APIENTRY (*)(GLenum coord, GLenum pname, const GLfloat *params)) ldg_find("glTexGenfv", lib); GL_CHECK(glp->TexGenfv); glp->TexGeniv = (void APIENTRY (*)(GLenum coord, GLenum pname, const GLint *params)) ldg_find("glTexGeniv", lib); GL_CHECK(glp->TexGeniv); glp->GetTexGendv = (void APIENTRY (*)(GLenum coord, GLenum pname, GLdouble *params)) ldg_find("glGetTexGendv", lib); GL_CHECK(glp->GetTexGendv); glp->GetTexGenfv = (void APIENTRY (*)(GLenum coord, GLenum pname, GLfloat *params)) ldg_find("glGetTexGenfv", lib); GL_CHECK(glp->GetTexGenfv); glp->GetTexGeniv = (void APIENTRY (*)(GLenum coord, GLenum pname, GLint *params)) ldg_find("glGetTexGeniv", lib); GL_CHECK(glp->GetTexGeniv); glp->TexEnvf = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat param)) ldg_find("glTexEnvf", lib); GL_CHECK(glp->TexEnvf); glp->TexEnvi = (void APIENTRY (*)(GLenum target, GLenum pname, GLint param)) ldg_find("glTexEnvi", lib); GL_CHECK(glp->TexEnvi); glp->TexEnvfv = (void APIENTRY (*)(GLenum target, GLenum pname, const GLfloat *params)) ldg_find("glTexEnvfv", lib); GL_CHECK(glp->TexEnvfv); glp->TexEnviv = (void APIENTRY (*)(GLenum target, GLenum pname, const GLint *params)) ldg_find("glTexEnviv", lib); GL_CHECK(glp->TexEnviv); glp->GetTexEnvfv = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetTexEnvfv", lib); GL_CHECK(glp->GetTexEnvfv); glp->GetTexEnviv = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetTexEnviv", lib); GL_CHECK(glp->GetTexEnviv); glp->TexParameterf = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat param)) ldg_find("glTexParameterf", lib); GL_CHECK(glp->TexParameterf); glp->TexParameteri = (void APIENTRY (*)(GLenum target, GLenum pname, GLint param)) ldg_find("glTexParameteri", lib); GL_CHECK(glp->TexParameteri); glp->TexParameterfv = (void APIENTRY (*)(GLenum target, GLenum pname, const GLfloat *params)) ldg_find("glTexParameterfv", lib); GL_CHECK(glp->TexParameterfv); glp->TexParameteriv = (void APIENTRY (*)(GLenum target, GLenum pname, const GLint *params)) ldg_find("glTexParameteriv", lib); GL_CHECK(glp->TexParameteriv); glp->GetTexParameterfv = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetTexParameterfv", lib); GL_CHECK(glp->GetTexParameterfv); glp->GetTexParameteriv = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetTexParameteriv", lib); GL_CHECK(glp->GetTexParameteriv); glp->GetTexLevelParameterfv = (void APIENTRY (*)(GLenum target, GLint level, GLenum pname, GLfloat *params)) ldg_find("glGetTexLevelParameterfv", lib); GL_CHECK(glp->GetTexLevelParameterfv); glp->GetTexLevelParameteriv = (void APIENTRY (*)(GLenum target, GLint level, GLenum pname, GLint *params)) ldg_find("glGetTexLevelParameteriv", lib); GL_CHECK(glp->GetTexLevelParameteriv); glp->TexImage1D = (void APIENTRY (*)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels)) ldg_find("glTexImage1D", lib); GL_CHECK(glp->TexImage1D); glp->TexImage2D = (void APIENTRY (*)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)) ldg_find("glTexImage2D", lib); GL_CHECK(glp->TexImage2D); glp->GetTexImage = (void APIENTRY (*)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels)) ldg_find("glGetTexImage", lib); GL_CHECK(glp->GetTexImage); glp->GenTextures = (void APIENTRY (*)(GLsizei n, GLuint *textures)) ldg_find("glGenTextures", lib); GL_CHECK(glp->GenTextures); glp->DeleteTextures = (void APIENTRY (*)(GLsizei n, const GLuint *textures)) ldg_find("glDeleteTextures", lib); GL_CHECK(glp->DeleteTextures); glp->BindTexture = (void APIENTRY (*)(GLenum target, GLuint texture)) ldg_find("glBindTexture", lib); GL_CHECK(glp->BindTexture); glp->PrioritizeTextures = (void APIENTRY (*)(GLsizei n, const GLuint *textures, const GLclampf *priorities)) ldg_find("glPrioritizeTextures", lib); GL_CHECK(glp->PrioritizeTextures); glp->AreTexturesResident = (GLboolean APIENTRY (*)(GLsizei n, const GLuint *textures, GLboolean *residences)) ldg_find("glAreTexturesResident", lib); GL_CHECK(glp->AreTexturesResident); glp->IsTexture = (GLboolean APIENTRY (*)(GLuint texture)) ldg_find("glIsTexture", lib); GL_CHECK(glp->IsTexture); glp->TexSubImage1D = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels)) ldg_find("glTexSubImage1D", lib); GL_CHECK(glp->TexSubImage1D); glp->TexSubImage2D = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)) ldg_find("glTexSubImage2D", lib); GL_CHECK(glp->TexSubImage2D); glp->CopyTexImage1D = (void APIENTRY (*)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)) ldg_find("glCopyTexImage1D", lib); GL_CHECK(glp->CopyTexImage1D); glp->CopyTexImage2D = (void APIENTRY (*)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)) ldg_find("glCopyTexImage2D", lib); GL_CHECK(glp->CopyTexImage2D); glp->CopyTexSubImage1D = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)) ldg_find("glCopyTexSubImage1D", lib); GL_CHECK(glp->CopyTexSubImage1D); glp->CopyTexSubImage2D = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glCopyTexSubImage2D", lib); GL_CHECK(glp->CopyTexSubImage2D); glp->Map1d = (void APIENTRY (*)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points)) ldg_find("glMap1d", lib); GL_CHECK(glp->Map1d); glp->Map1f = (void APIENTRY (*)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points)) ldg_find("glMap1f", lib); GL_CHECK(glp->Map1f); glp->Map2d = (void APIENTRY (*)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points)) ldg_find("glMap2d", lib); GL_CHECK(glp->Map2d); glp->Map2f = (void APIENTRY (*)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points)) ldg_find("glMap2f", lib); GL_CHECK(glp->Map2f); glp->GetMapdv = (void APIENTRY (*)(GLenum target, GLenum query, GLdouble *v)) ldg_find("glGetMapdv", lib); GL_CHECK(glp->GetMapdv); glp->GetMapfv = (void APIENTRY (*)(GLenum target, GLenum query, GLfloat *v)) ldg_find("glGetMapfv", lib); GL_CHECK(glp->GetMapfv); glp->GetMapiv = (void APIENTRY (*)(GLenum target, GLenum query, GLint *v)) ldg_find("glGetMapiv", lib); GL_CHECK(glp->GetMapiv); glp->EvalCoord1d = (void APIENTRY (*)(GLdouble u)) ldg_find("glEvalCoord1d", lib); GL_CHECK(glp->EvalCoord1d); glp->EvalCoord1f = (void APIENTRY (*)(GLfloat u)) ldg_find("glEvalCoord1f", lib); GL_CHECK(glp->EvalCoord1f); glp->EvalCoord1dv = (void APIENTRY (*)(const GLdouble *u)) ldg_find("glEvalCoord1dv", lib); GL_CHECK(glp->EvalCoord1dv); glp->EvalCoord1fv = (void APIENTRY (*)(const GLfloat *u)) ldg_find("glEvalCoord1fv", lib); GL_CHECK(glp->EvalCoord1fv); glp->EvalCoord2d = (void APIENTRY (*)(GLdouble u, GLdouble v)) ldg_find("glEvalCoord2d", lib); GL_CHECK(glp->EvalCoord2d); glp->EvalCoord2f = (void APIENTRY (*)(GLfloat u, GLfloat v)) ldg_find("glEvalCoord2f", lib); GL_CHECK(glp->EvalCoord2f); glp->EvalCoord2dv = (void APIENTRY (*)(const GLdouble *u)) ldg_find("glEvalCoord2dv", lib); GL_CHECK(glp->EvalCoord2dv); glp->EvalCoord2fv = (void APIENTRY (*)(const GLfloat *u)) ldg_find("glEvalCoord2fv", lib); GL_CHECK(glp->EvalCoord2fv); glp->MapGrid1d = (void APIENTRY (*)(GLint un, GLdouble u1, GLdouble u2)) ldg_find("glMapGrid1d", lib); GL_CHECK(glp->MapGrid1d); glp->MapGrid1f = (void APIENTRY (*)(GLint un, GLfloat u1, GLfloat u2)) ldg_find("glMapGrid1f", lib); GL_CHECK(glp->MapGrid1f); glp->MapGrid2d = (void APIENTRY (*)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)) ldg_find("glMapGrid2d", lib); GL_CHECK(glp->MapGrid2d); glp->MapGrid2f = (void APIENTRY (*)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)) ldg_find("glMapGrid2f", lib); GL_CHECK(glp->MapGrid2f); glp->EvalPoint1 = (void APIENTRY (*)(GLint i)) ldg_find("glEvalPoint1", lib); GL_CHECK(glp->EvalPoint1); glp->EvalPoint2 = (void APIENTRY (*)(GLint i, GLint j)) ldg_find("glEvalPoint2", lib); GL_CHECK(glp->EvalPoint2); glp->EvalMesh1 = (void APIENTRY (*)(GLenum mode, GLint i1, GLint i2)) ldg_find("glEvalMesh1", lib); GL_CHECK(glp->EvalMesh1); glp->EvalMesh2 = (void APIENTRY (*)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)) ldg_find("glEvalMesh2", lib); GL_CHECK(glp->EvalMesh2); glp->Fogf = (void APIENTRY (*)(GLenum pname, GLfloat param)) ldg_find("glFogf", lib); GL_CHECK(glp->Fogf); glp->Fogi = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glFogi", lib); GL_CHECK(glp->Fogi); glp->Fogfv = (void APIENTRY (*)(GLenum pname, const GLfloat *params)) ldg_find("glFogfv", lib); GL_CHECK(glp->Fogfv); glp->Fogiv = (void APIENTRY (*)(GLenum pname, const GLint *params)) ldg_find("glFogiv", lib); GL_CHECK(glp->Fogiv); glp->FeedbackBuffer = (void APIENTRY (*)(GLsizei size, GLenum type, GLfloat *buffer)) ldg_find("glFeedbackBuffer", lib); GL_CHECK(glp->FeedbackBuffer); glp->PassThrough = (void APIENTRY (*)(GLfloat token)) ldg_find("glPassThrough", lib); GL_CHECK(glp->PassThrough); glp->SelectBuffer = (void APIENTRY (*)(GLsizei size, GLuint *buffer)) ldg_find("glSelectBuffer", lib); GL_CHECK(glp->SelectBuffer); glp->InitNames = (void APIENTRY (*)(void)) ldg_find("glInitNames", lib); GL_CHECK(glp->InitNames); glp->LoadName = (void APIENTRY (*)(GLuint name)) ldg_find("glLoadName", lib); GL_CHECK(glp->LoadName); glp->PushName = (void APIENTRY (*)(GLuint name)) ldg_find("glPushName", lib); GL_CHECK(glp->PushName); glp->PopName = (void APIENTRY (*)(void)) ldg_find("glPopName", lib); GL_CHECK(glp->PopName); glp->EnableTraceMESA = (void APIENTRY (*)(GLbitfield mask)) ldg_find("glEnableTraceMESA", lib); GL_CHECK(glp->EnableTraceMESA); glp->DisableTraceMESA = (void APIENTRY (*)(GLbitfield mask)) ldg_find("glDisableTraceMESA", lib); GL_CHECK(glp->DisableTraceMESA); glp->NewTraceMESA = (void APIENTRY (*)(GLbitfield mask, const GLubyte *traceName)) ldg_find("glNewTraceMESA", lib); GL_CHECK(glp->NewTraceMESA); glp->EndTraceMESA = (void APIENTRY (*)(void)) ldg_find("glEndTraceMESA", lib); GL_CHECK(glp->EndTraceMESA); glp->TraceAssertAttribMESA = (void APIENTRY (*)(GLbitfield attribMask)) ldg_find("glTraceAssertAttribMESA", lib); GL_CHECK(glp->TraceAssertAttribMESA); glp->TraceCommentMESA = (void APIENTRY (*)(const GLubyte *comment)) ldg_find("glTraceCommentMESA", lib); GL_CHECK(glp->TraceCommentMESA); glp->TraceTextureMESA = (void APIENTRY (*)(GLuint name, const GLubyte *comment)) ldg_find("glTraceTextureMESA", lib); GL_CHECK(glp->TraceTextureMESA); glp->TraceListMESA = (void APIENTRY (*)(GLuint name, const GLubyte *comment)) ldg_find("glTraceListMESA", lib); GL_CHECK(glp->TraceListMESA); glp->TracePointerMESA = (void APIENTRY (*)(GLvoid *pointer, const GLubyte *comment)) ldg_find("glTracePointerMESA", lib); GL_CHECK(glp->TracePointerMESA); glp->TracePointerRangeMESA = (void APIENTRY (*)(const GLvoid *first, const GLvoid *last, const GLubyte *comment)) ldg_find("glTracePointerRangeMESA", lib); GL_CHECK(glp->TracePointerRangeMESA); glp->BlendEquationSeparateATI = (void APIENTRY (*)(GLenum equationRGB, GLenum equationAlpha)) ldg_find("glBlendEquationSeparateATI", lib); GL_CHECK(glp->BlendEquationSeparateATI); glp->BlendColor = (void APIENTRY (*)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) ldg_find("glBlendColor", lib); GL_CHECK(glp->BlendColor); glp->BlendEquation = (void APIENTRY (*)(GLenum mode)) ldg_find("glBlendEquation", lib); GL_CHECK(glp->BlendEquation); glp->DrawRangeElements = (void APIENTRY (*)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices)) ldg_find("glDrawRangeElements", lib); GL_CHECK(glp->DrawRangeElements); glp->ColorTable = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table)) ldg_find("glColorTable", lib); GL_CHECK(glp->ColorTable); glp->ColorTableParameterfv = (void APIENTRY (*)(GLenum target, GLenum pname, const GLfloat *params)) ldg_find("glColorTableParameterfv", lib); GL_CHECK(glp->ColorTableParameterfv); glp->ColorTableParameteriv = (void APIENTRY (*)(GLenum target, GLenum pname, const GLint *params)) ldg_find("glColorTableParameteriv", lib); GL_CHECK(glp->ColorTableParameteriv); glp->CopyColorTable = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)) ldg_find("glCopyColorTable", lib); GL_CHECK(glp->CopyColorTable); glp->GetColorTable = (void APIENTRY (*)(GLenum target, GLenum format, GLenum type, void *table)) ldg_find("glGetColorTable", lib); GL_CHECK(glp->GetColorTable); glp->GetColorTableParameterfv = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetColorTableParameterfv", lib); GL_CHECK(glp->GetColorTableParameterfv); glp->GetColorTableParameteriv = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetColorTableParameteriv", lib); GL_CHECK(glp->GetColorTableParameteriv); glp->ColorSubTable = (void APIENTRY (*)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data)) ldg_find("glColorSubTable", lib); GL_CHECK(glp->ColorSubTable); glp->CopyColorSubTable = (void APIENTRY (*)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)) ldg_find("glCopyColorSubTable", lib); GL_CHECK(glp->CopyColorSubTable); glp->ConvolutionFilter1D = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image)) ldg_find("glConvolutionFilter1D", lib); GL_CHECK(glp->ConvolutionFilter1D); glp->ConvolutionFilter2D = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image)) ldg_find("glConvolutionFilter2D", lib); GL_CHECK(glp->ConvolutionFilter2D); glp->ConvolutionParameterf = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat params)) ldg_find("glConvolutionParameterf", lib); GL_CHECK(glp->ConvolutionParameterf); glp->ConvolutionParameterfv = (void APIENTRY (*)(GLenum target, GLenum pname, const GLfloat *params)) ldg_find("glConvolutionParameterfv", lib); GL_CHECK(glp->ConvolutionParameterfv); glp->ConvolutionParameteri = (void APIENTRY (*)(GLenum target, GLenum pname, GLint params)) ldg_find("glConvolutionParameteri", lib); GL_CHECK(glp->ConvolutionParameteri); glp->ConvolutionParameteriv = (void APIENTRY (*)(GLenum target, GLenum pname, const GLint *params)) ldg_find("glConvolutionParameteriv", lib); GL_CHECK(glp->ConvolutionParameteriv); glp->CopyConvolutionFilter1D = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)) ldg_find("glCopyConvolutionFilter1D", lib); GL_CHECK(glp->CopyConvolutionFilter1D); glp->CopyConvolutionFilter2D = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glCopyConvolutionFilter2D", lib); GL_CHECK(glp->CopyConvolutionFilter2D); glp->GetConvolutionFilter = (void APIENTRY (*)(GLenum target, GLenum format, GLenum type, void *image)) ldg_find("glGetConvolutionFilter", lib); GL_CHECK(glp->GetConvolutionFilter); glp->GetConvolutionParameterfv = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetConvolutionParameterfv", lib); GL_CHECK(glp->GetConvolutionParameterfv); glp->GetConvolutionParameteriv = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetConvolutionParameteriv", lib); GL_CHECK(glp->GetConvolutionParameteriv); glp->GetSeparableFilter = (void APIENTRY (*)(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span)) ldg_find("glGetSeparableFilter", lib); GL_CHECK(glp->GetSeparableFilter); glp->SeparableFilter2D = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column)) ldg_find("glSeparableFilter2D", lib); GL_CHECK(glp->SeparableFilter2D); glp->GetHistogram = (void APIENTRY (*)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values)) ldg_find("glGetHistogram", lib); GL_CHECK(glp->GetHistogram); glp->GetHistogramParameterfv = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetHistogramParameterfv", lib); GL_CHECK(glp->GetHistogramParameterfv); glp->GetHistogramParameteriv = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetHistogramParameteriv", lib); GL_CHECK(glp->GetHistogramParameteriv); glp->GetMinmax = (void APIENTRY (*)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values)) ldg_find("glGetMinmax", lib); GL_CHECK(glp->GetMinmax); glp->GetMinmaxParameterfv = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetMinmaxParameterfv", lib); GL_CHECK(glp->GetMinmaxParameterfv); glp->GetMinmaxParameteriv = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetMinmaxParameteriv", lib); GL_CHECK(glp->GetMinmaxParameteriv); glp->Histogram = (void APIENTRY (*)(GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink)) ldg_find("glHistogram", lib); GL_CHECK(glp->Histogram); glp->Minmax = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLboolean32 sink)) ldg_find("glMinmax", lib); GL_CHECK(glp->Minmax); glp->ResetHistogram = (void APIENTRY (*)(GLenum target)) ldg_find("glResetHistogram", lib); GL_CHECK(glp->ResetHistogram); glp->ResetMinmax = (void APIENTRY (*)(GLenum target)) ldg_find("glResetMinmax", lib); GL_CHECK(glp->ResetMinmax); glp->TexImage3D = (void APIENTRY (*)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)) ldg_find("glTexImage3D", lib); GL_CHECK(glp->TexImage3D); glp->TexSubImage3D = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)) ldg_find("glTexSubImage3D", lib); GL_CHECK(glp->TexSubImage3D); glp->CopyTexSubImage3D = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glCopyTexSubImage3D", lib); GL_CHECK(glp->CopyTexSubImage3D); glp->ActiveTexture = (void APIENTRY (*)(GLenum texture)) ldg_find("glActiveTexture", lib); GL_CHECK(glp->ActiveTexture); glp->ClientActiveTexture = (void APIENTRY (*)(GLenum texture)) ldg_find("glClientActiveTexture", lib); GL_CHECK(glp->ClientActiveTexture); glp->MultiTexCoord1d = (void APIENTRY (*)(GLenum target, GLdouble s)) ldg_find("glMultiTexCoord1d", lib); GL_CHECK(glp->MultiTexCoord1d); glp->MultiTexCoord1dv = (void APIENTRY (*)(GLenum target, const GLdouble *v)) ldg_find("glMultiTexCoord1dv", lib); GL_CHECK(glp->MultiTexCoord1dv); glp->MultiTexCoord1f = (void APIENTRY (*)(GLenum target, GLfloat s)) ldg_find("glMultiTexCoord1f", lib); GL_CHECK(glp->MultiTexCoord1f); glp->MultiTexCoord1fv = (void APIENTRY (*)(GLenum target, const GLfloat *v)) ldg_find("glMultiTexCoord1fv", lib); GL_CHECK(glp->MultiTexCoord1fv); glp->MultiTexCoord1i = (void APIENTRY (*)(GLenum target, GLint s)) ldg_find("glMultiTexCoord1i", lib); GL_CHECK(glp->MultiTexCoord1i); glp->MultiTexCoord1iv = (void APIENTRY (*)(GLenum target, const GLint *v)) ldg_find("glMultiTexCoord1iv", lib); GL_CHECK(glp->MultiTexCoord1iv); glp->MultiTexCoord1s = (void APIENTRY (*)(GLenum target, GLshort32 s)) ldg_find("glMultiTexCoord1s", lib); GL_CHECK(glp->MultiTexCoord1s); glp->MultiTexCoord1sv = (void APIENTRY (*)(GLenum target, const GLshort *v)) ldg_find("glMultiTexCoord1sv", lib); GL_CHECK(glp->MultiTexCoord1sv); glp->MultiTexCoord2d = (void APIENTRY (*)(GLenum target, GLdouble s, GLdouble t)) ldg_find("glMultiTexCoord2d", lib); GL_CHECK(glp->MultiTexCoord2d); glp->MultiTexCoord2dv = (void APIENTRY (*)(GLenum target, const GLdouble *v)) ldg_find("glMultiTexCoord2dv", lib); GL_CHECK(glp->MultiTexCoord2dv); glp->MultiTexCoord2f = (void APIENTRY (*)(GLenum target, GLfloat s, GLfloat t)) ldg_find("glMultiTexCoord2f", lib); GL_CHECK(glp->MultiTexCoord2f); glp->MultiTexCoord2fv = (void APIENTRY (*)(GLenum target, const GLfloat *v)) ldg_find("glMultiTexCoord2fv", lib); GL_CHECK(glp->MultiTexCoord2fv); glp->MultiTexCoord2i = (void APIENTRY (*)(GLenum target, GLint s, GLint t)) ldg_find("glMultiTexCoord2i", lib); GL_CHECK(glp->MultiTexCoord2i); glp->MultiTexCoord2iv = (void APIENTRY (*)(GLenum target, const GLint *v)) ldg_find("glMultiTexCoord2iv", lib); GL_CHECK(glp->MultiTexCoord2iv); glp->MultiTexCoord2s = (void APIENTRY (*)(GLenum target, GLshort32 s, GLshort32 t)) ldg_find("glMultiTexCoord2s", lib); GL_CHECK(glp->MultiTexCoord2s); glp->MultiTexCoord2sv = (void APIENTRY (*)(GLenum target, const GLshort *v)) ldg_find("glMultiTexCoord2sv", lib); GL_CHECK(glp->MultiTexCoord2sv); glp->MultiTexCoord3d = (void APIENTRY (*)(GLenum target, GLdouble s, GLdouble t, GLdouble r)) ldg_find("glMultiTexCoord3d", lib); GL_CHECK(glp->MultiTexCoord3d); glp->MultiTexCoord3dv = (void APIENTRY (*)(GLenum target, const GLdouble *v)) ldg_find("glMultiTexCoord3dv", lib); GL_CHECK(glp->MultiTexCoord3dv); glp->MultiTexCoord3f = (void APIENTRY (*)(GLenum target, GLfloat s, GLfloat t, GLfloat r)) ldg_find("glMultiTexCoord3f", lib); GL_CHECK(glp->MultiTexCoord3f); glp->MultiTexCoord3fv = (void APIENTRY (*)(GLenum target, const GLfloat *v)) ldg_find("glMultiTexCoord3fv", lib); GL_CHECK(glp->MultiTexCoord3fv); glp->MultiTexCoord3i = (void APIENTRY (*)(GLenum target, GLint s, GLint t, GLint r)) ldg_find("glMultiTexCoord3i", lib); GL_CHECK(glp->MultiTexCoord3i); glp->MultiTexCoord3iv = (void APIENTRY (*)(GLenum target, const GLint *v)) ldg_find("glMultiTexCoord3iv", lib); GL_CHECK(glp->MultiTexCoord3iv); glp->MultiTexCoord3s = (void APIENTRY (*)(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r)) ldg_find("glMultiTexCoord3s", lib); GL_CHECK(glp->MultiTexCoord3s); glp->MultiTexCoord3sv = (void APIENTRY (*)(GLenum target, const GLshort *v)) ldg_find("glMultiTexCoord3sv", lib); GL_CHECK(glp->MultiTexCoord3sv); glp->MultiTexCoord4d = (void APIENTRY (*)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)) ldg_find("glMultiTexCoord4d", lib); GL_CHECK(glp->MultiTexCoord4d); glp->MultiTexCoord4dv = (void APIENTRY (*)(GLenum target, const GLdouble *v)) ldg_find("glMultiTexCoord4dv", lib); GL_CHECK(glp->MultiTexCoord4dv); glp->MultiTexCoord4f = (void APIENTRY (*)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)) ldg_find("glMultiTexCoord4f", lib); GL_CHECK(glp->MultiTexCoord4f); glp->MultiTexCoord4fv = (void APIENTRY (*)(GLenum target, const GLfloat *v)) ldg_find("glMultiTexCoord4fv", lib); GL_CHECK(glp->MultiTexCoord4fv); glp->MultiTexCoord4i = (void APIENTRY (*)(GLenum target, GLint s, GLint t, GLint r, GLint q)) ldg_find("glMultiTexCoord4i", lib); GL_CHECK(glp->MultiTexCoord4i); glp->MultiTexCoord4iv = (void APIENTRY (*)(GLenum target, const GLint *v)) ldg_find("glMultiTexCoord4iv", lib); GL_CHECK(glp->MultiTexCoord4iv); glp->MultiTexCoord4s = (void APIENTRY (*)(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q)) ldg_find("glMultiTexCoord4s", lib); GL_CHECK(glp->MultiTexCoord4s); glp->MultiTexCoord4sv = (void APIENTRY (*)(GLenum target, const GLshort *v)) ldg_find("glMultiTexCoord4sv", lib); GL_CHECK(glp->MultiTexCoord4sv); glp->LoadTransposeMatrixf = (void APIENTRY (*)(const GLfloat *m)) ldg_find("glLoadTransposeMatrixf", lib); GL_CHECK(glp->LoadTransposeMatrixf); glp->LoadTransposeMatrixd = (void APIENTRY (*)(const GLdouble *m)) ldg_find("glLoadTransposeMatrixd", lib); GL_CHECK(glp->LoadTransposeMatrixd); glp->MultTransposeMatrixf = (void APIENTRY (*)(const GLfloat *m)) ldg_find("glMultTransposeMatrixf", lib); GL_CHECK(glp->MultTransposeMatrixf); glp->MultTransposeMatrixd = (void APIENTRY (*)(const GLdouble *m)) ldg_find("glMultTransposeMatrixd", lib); GL_CHECK(glp->MultTransposeMatrixd); glp->SampleCoverage = (void APIENTRY (*)(GLfloat value, GLboolean32 invert)) ldg_find("glSampleCoverage", lib); GL_CHECK(glp->SampleCoverage); glp->CompressedTexImage3D = (void APIENTRY (*)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)) ldg_find("glCompressedTexImage3D", lib); GL_CHECK(glp->CompressedTexImage3D); glp->CompressedTexImage2D = (void APIENTRY (*)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data)) ldg_find("glCompressedTexImage2D", lib); GL_CHECK(glp->CompressedTexImage2D); glp->CompressedTexImage1D = (void APIENTRY (*)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data)) ldg_find("glCompressedTexImage1D", lib); GL_CHECK(glp->CompressedTexImage1D); glp->CompressedTexSubImage3D = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)) ldg_find("glCompressedTexSubImage3D", lib); GL_CHECK(glp->CompressedTexSubImage3D); glp->CompressedTexSubImage2D = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)) ldg_find("glCompressedTexSubImage2D", lib); GL_CHECK(glp->CompressedTexSubImage2D); glp->CompressedTexSubImage1D = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)) ldg_find("glCompressedTexSubImage1D", lib); GL_CHECK(glp->CompressedTexSubImage1D); glp->GetCompressedTexImage = (void APIENTRY (*)(GLenum target, GLint level, void *img)) ldg_find("glGetCompressedTexImage", lib); GL_CHECK(glp->GetCompressedTexImage); glp->BlendFuncSeparate = (void APIENTRY (*)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)) ldg_find("glBlendFuncSeparate", lib); GL_CHECK(glp->BlendFuncSeparate); glp->FogCoordf = (void APIENTRY (*)(GLfloat coord)) ldg_find("glFogCoordf", lib); GL_CHECK(glp->FogCoordf); glp->FogCoordfv = (void APIENTRY (*)(const GLfloat *coord)) ldg_find("glFogCoordfv", lib); GL_CHECK(glp->FogCoordfv); glp->FogCoordd = (void APIENTRY (*)(GLdouble coord)) ldg_find("glFogCoordd", lib); GL_CHECK(glp->FogCoordd); glp->FogCoorddv = (void APIENTRY (*)(const GLdouble *coord)) ldg_find("glFogCoorddv", lib); GL_CHECK(glp->FogCoorddv); glp->FogCoordPointer = (void APIENTRY (*)(GLenum type, GLsizei stride, const void *pointer)) ldg_find("glFogCoordPointer", lib); GL_CHECK(glp->FogCoordPointer); glp->MultiDrawArrays = (void APIENTRY (*)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount)) ldg_find("glMultiDrawArrays", lib); GL_CHECK(glp->MultiDrawArrays); glp->MultiDrawElements = (void APIENTRY (*)(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount)) ldg_find("glMultiDrawElements", lib); GL_CHECK(glp->MultiDrawElements); glp->PointParameterf = (void APIENTRY (*)(GLenum pname, GLfloat param)) ldg_find("glPointParameterf", lib); GL_CHECK(glp->PointParameterf); glp->PointParameterfv = (void APIENTRY (*)(GLenum pname, const GLfloat *params)) ldg_find("glPointParameterfv", lib); GL_CHECK(glp->PointParameterfv); glp->PointParameteri = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glPointParameteri", lib); GL_CHECK(glp->PointParameteri); glp->PointParameteriv = (void APIENTRY (*)(GLenum pname, const GLint *params)) ldg_find("glPointParameteriv", lib); GL_CHECK(glp->PointParameteriv); glp->SecondaryColor3b = (void APIENTRY (*)(GLbyte32 red, GLbyte32 green, GLbyte32 blue)) ldg_find("glSecondaryColor3b", lib); GL_CHECK(glp->SecondaryColor3b); glp->SecondaryColor3bv = (void APIENTRY (*)(const GLbyte *v)) ldg_find("glSecondaryColor3bv", lib); GL_CHECK(glp->SecondaryColor3bv); glp->SecondaryColor3d = (void APIENTRY (*)(GLdouble red, GLdouble green, GLdouble blue)) ldg_find("glSecondaryColor3d", lib); GL_CHECK(glp->SecondaryColor3d); glp->SecondaryColor3dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glSecondaryColor3dv", lib); GL_CHECK(glp->SecondaryColor3dv); glp->SecondaryColor3f = (void APIENTRY (*)(GLfloat red, GLfloat green, GLfloat blue)) ldg_find("glSecondaryColor3f", lib); GL_CHECK(glp->SecondaryColor3f); glp->SecondaryColor3fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glSecondaryColor3fv", lib); GL_CHECK(glp->SecondaryColor3fv); glp->SecondaryColor3i = (void APIENTRY (*)(GLint red, GLint green, GLint blue)) ldg_find("glSecondaryColor3i", lib); GL_CHECK(glp->SecondaryColor3i); glp->SecondaryColor3iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glSecondaryColor3iv", lib); GL_CHECK(glp->SecondaryColor3iv); glp->SecondaryColor3s = (void APIENTRY (*)(GLshort32 red, GLshort32 green, GLshort32 blue)) ldg_find("glSecondaryColor3s", lib); GL_CHECK(glp->SecondaryColor3s); glp->SecondaryColor3sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glSecondaryColor3sv", lib); GL_CHECK(glp->SecondaryColor3sv); glp->SecondaryColor3ub = (void APIENTRY (*)(GLubyte32 red, GLubyte32 green, GLubyte32 blue)) ldg_find("glSecondaryColor3ub", lib); GL_CHECK(glp->SecondaryColor3ub); glp->SecondaryColor3ubv = (void APIENTRY (*)(const GLubyte *v)) ldg_find("glSecondaryColor3ubv", lib); GL_CHECK(glp->SecondaryColor3ubv); glp->SecondaryColor3ui = (void APIENTRY (*)(GLuint red, GLuint green, GLuint blue)) ldg_find("glSecondaryColor3ui", lib); GL_CHECK(glp->SecondaryColor3ui); glp->SecondaryColor3uiv = (void APIENTRY (*)(const GLuint *v)) ldg_find("glSecondaryColor3uiv", lib); GL_CHECK(glp->SecondaryColor3uiv); glp->SecondaryColor3us = (void APIENTRY (*)(GLushort32 red, GLushort32 green, GLushort32 blue)) ldg_find("glSecondaryColor3us", lib); GL_CHECK(glp->SecondaryColor3us); glp->SecondaryColor3usv = (void APIENTRY (*)(const GLushort *v)) ldg_find("glSecondaryColor3usv", lib); GL_CHECK(glp->SecondaryColor3usv); glp->SecondaryColorPointer = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride, const void *pointer)) ldg_find("glSecondaryColorPointer", lib); GL_CHECK(glp->SecondaryColorPointer); glp->WindowPos2d = (void APIENTRY (*)(GLdouble x, GLdouble y)) ldg_find("glWindowPos2d", lib); GL_CHECK(glp->WindowPos2d); glp->WindowPos2dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glWindowPos2dv", lib); GL_CHECK(glp->WindowPos2dv); glp->WindowPos2f = (void APIENTRY (*)(GLfloat x, GLfloat y)) ldg_find("glWindowPos2f", lib); GL_CHECK(glp->WindowPos2f); glp->WindowPos2fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glWindowPos2fv", lib); GL_CHECK(glp->WindowPos2fv); glp->WindowPos2i = (void APIENTRY (*)(GLint x, GLint y)) ldg_find("glWindowPos2i", lib); GL_CHECK(glp->WindowPos2i); glp->WindowPos2iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glWindowPos2iv", lib); GL_CHECK(glp->WindowPos2iv); glp->WindowPos2s = (void APIENTRY (*)(GLshort32 x, GLshort32 y)) ldg_find("glWindowPos2s", lib); GL_CHECK(glp->WindowPos2s); glp->WindowPos2sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glWindowPos2sv", lib); GL_CHECK(glp->WindowPos2sv); glp->WindowPos3d = (void APIENTRY (*)(GLdouble x, GLdouble y, GLdouble z)) ldg_find("glWindowPos3d", lib); GL_CHECK(glp->WindowPos3d); glp->WindowPos3dv = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glWindowPos3dv", lib); GL_CHECK(glp->WindowPos3dv); glp->WindowPos3f = (void APIENTRY (*)(GLfloat x, GLfloat y, GLfloat z)) ldg_find("glWindowPos3f", lib); GL_CHECK(glp->WindowPos3f); glp->WindowPos3fv = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glWindowPos3fv", lib); GL_CHECK(glp->WindowPos3fv); glp->WindowPos3i = (void APIENTRY (*)(GLint x, GLint y, GLint z)) ldg_find("glWindowPos3i", lib); GL_CHECK(glp->WindowPos3i); glp->WindowPos3iv = (void APIENTRY (*)(const GLint *v)) ldg_find("glWindowPos3iv", lib); GL_CHECK(glp->WindowPos3iv); glp->WindowPos3s = (void APIENTRY (*)(GLshort32 x, GLshort32 y, GLshort32 z)) ldg_find("glWindowPos3s", lib); GL_CHECK(glp->WindowPos3s); glp->WindowPos3sv = (void APIENTRY (*)(const GLshort *v)) ldg_find("glWindowPos3sv", lib); GL_CHECK(glp->WindowPos3sv); glp->GenQueries = (void APIENTRY (*)(GLsizei n, GLuint *ids)) ldg_find("glGenQueries", lib); GL_CHECK(glp->GenQueries); glp->DeleteQueries = (void APIENTRY (*)(GLsizei n, const GLuint *ids)) ldg_find("glDeleteQueries", lib); GL_CHECK(glp->DeleteQueries); glp->IsQuery = (GLboolean APIENTRY (*)(GLuint id)) ldg_find("glIsQuery", lib); GL_CHECK(glp->IsQuery); glp->BeginQuery = (void APIENTRY (*)(GLenum target, GLuint id)) ldg_find("glBeginQuery", lib); GL_CHECK(glp->BeginQuery); glp->EndQuery = (void APIENTRY (*)(GLenum target)) ldg_find("glEndQuery", lib); GL_CHECK(glp->EndQuery); glp->GetQueryiv = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetQueryiv", lib); GL_CHECK(glp->GetQueryiv); glp->GetQueryObjectiv = (void APIENTRY (*)(GLuint id, GLenum pname, GLint *params)) ldg_find("glGetQueryObjectiv", lib); GL_CHECK(glp->GetQueryObjectiv); glp->GetQueryObjectuiv = (void APIENTRY (*)(GLuint id, GLenum pname, GLuint *params)) ldg_find("glGetQueryObjectuiv", lib); GL_CHECK(glp->GetQueryObjectuiv); glp->BindBuffer = (void APIENTRY (*)(GLenum target, GLuint buffer)) ldg_find("glBindBuffer", lib); GL_CHECK(glp->BindBuffer); glp->DeleteBuffers = (void APIENTRY (*)(GLsizei n, const GLuint *buffers)) ldg_find("glDeleteBuffers", lib); GL_CHECK(glp->DeleteBuffers); glp->GenBuffers = (void APIENTRY (*)(GLsizei n, GLuint *buffers)) ldg_find("glGenBuffers", lib); GL_CHECK(glp->GenBuffers); glp->IsBuffer = (GLboolean APIENTRY (*)(GLuint buffer)) ldg_find("glIsBuffer", lib); GL_CHECK(glp->IsBuffer); glp->BufferData = (void APIENTRY (*)(GLenum target, GLsizeiptr size, const void *data, GLenum usage)) ldg_find("glBufferData", lib); GL_CHECK(glp->BufferData); glp->BufferSubData = (void APIENTRY (*)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data)) ldg_find("glBufferSubData", lib); GL_CHECK(glp->BufferSubData); glp->GetBufferSubData = (void APIENTRY (*)(GLenum target, GLintptr offset, GLsizeiptr size, void *data)) ldg_find("glGetBufferSubData", lib); GL_CHECK(glp->GetBufferSubData); glp->MapBuffer = (void * APIENTRY (*)(GLenum target, GLenum access)) ldg_find("glMapBuffer", lib); GL_CHECK(glp->MapBuffer); glp->UnmapBuffer = (GLboolean APIENTRY (*)(GLenum target)) ldg_find("glUnmapBuffer", lib); GL_CHECK(glp->UnmapBuffer); glp->GetBufferParameteriv = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetBufferParameteriv", lib); GL_CHECK(glp->GetBufferParameteriv); glp->GetBufferPointerv = (void APIENTRY (*)(GLenum target, GLenum pname, void * *params)) ldg_find("glGetBufferPointerv", lib); GL_CHECK(glp->GetBufferPointerv); glp->ActiveTextureARB = (void APIENTRY (*)(GLenum texture)) ldg_find("glActiveTextureARB", lib); GL_CHECK(glp->ActiveTextureARB); glp->ClientActiveTextureARB = (void APIENTRY (*)(GLenum texture)) ldg_find("glClientActiveTextureARB", lib); GL_CHECK(glp->ClientActiveTextureARB); glp->MultiTexCoord1dARB = (void APIENTRY (*)(GLenum target, GLdouble s)) ldg_find("glMultiTexCoord1dARB", lib); GL_CHECK(glp->MultiTexCoord1dARB); glp->MultiTexCoord1dvARB = (void APIENTRY (*)(GLenum target, const GLdouble *v)) ldg_find("glMultiTexCoord1dvARB", lib); GL_CHECK(glp->MultiTexCoord1dvARB); glp->MultiTexCoord1fARB = (void APIENTRY (*)(GLenum target, GLfloat s)) ldg_find("glMultiTexCoord1fARB", lib); GL_CHECK(glp->MultiTexCoord1fARB); glp->MultiTexCoord1fvARB = (void APIENTRY (*)(GLenum target, const GLfloat *v)) ldg_find("glMultiTexCoord1fvARB", lib); GL_CHECK(glp->MultiTexCoord1fvARB); glp->MultiTexCoord1iARB = (void APIENTRY (*)(GLenum target, GLint s)) ldg_find("glMultiTexCoord1iARB", lib); GL_CHECK(glp->MultiTexCoord1iARB); glp->MultiTexCoord1ivARB = (void APIENTRY (*)(GLenum target, const GLint *v)) ldg_find("glMultiTexCoord1ivARB", lib); GL_CHECK(glp->MultiTexCoord1ivARB); glp->MultiTexCoord1sARB = (void APIENTRY (*)(GLenum target, GLshort32 s)) ldg_find("glMultiTexCoord1sARB", lib); GL_CHECK(glp->MultiTexCoord1sARB); glp->MultiTexCoord1svARB = (void APIENTRY (*)(GLenum target, const GLshort *v)) ldg_find("glMultiTexCoord1svARB", lib); GL_CHECK(glp->MultiTexCoord1svARB); glp->MultiTexCoord2dARB = (void APIENTRY (*)(GLenum target, GLdouble s, GLdouble t)) ldg_find("glMultiTexCoord2dARB", lib); GL_CHECK(glp->MultiTexCoord2dARB); glp->MultiTexCoord2dvARB = (void APIENTRY (*)(GLenum target, const GLdouble *v)) ldg_find("glMultiTexCoord2dvARB", lib); GL_CHECK(glp->MultiTexCoord2dvARB); glp->MultiTexCoord2fARB = (void APIENTRY (*)(GLenum target, GLfloat s, GLfloat t)) ldg_find("glMultiTexCoord2fARB", lib); GL_CHECK(glp->MultiTexCoord2fARB); glp->MultiTexCoord2fvARB = (void APIENTRY (*)(GLenum target, const GLfloat *v)) ldg_find("glMultiTexCoord2fvARB", lib); GL_CHECK(glp->MultiTexCoord2fvARB); glp->MultiTexCoord2iARB = (void APIENTRY (*)(GLenum target, GLint s, GLint t)) ldg_find("glMultiTexCoord2iARB", lib); GL_CHECK(glp->MultiTexCoord2iARB); glp->MultiTexCoord2ivARB = (void APIENTRY (*)(GLenum target, const GLint *v)) ldg_find("glMultiTexCoord2ivARB", lib); GL_CHECK(glp->MultiTexCoord2ivARB); glp->MultiTexCoord2sARB = (void APIENTRY (*)(GLenum target, GLshort32 s, GLshort32 t)) ldg_find("glMultiTexCoord2sARB", lib); GL_CHECK(glp->MultiTexCoord2sARB); glp->MultiTexCoord2svARB = (void APIENTRY (*)(GLenum target, const GLshort *v)) ldg_find("glMultiTexCoord2svARB", lib); GL_CHECK(glp->MultiTexCoord2svARB); glp->MultiTexCoord3dARB = (void APIENTRY (*)(GLenum target, GLdouble s, GLdouble t, GLdouble r)) ldg_find("glMultiTexCoord3dARB", lib); GL_CHECK(glp->MultiTexCoord3dARB); glp->MultiTexCoord3dvARB = (void APIENTRY (*)(GLenum target, const GLdouble *v)) ldg_find("glMultiTexCoord3dvARB", lib); GL_CHECK(glp->MultiTexCoord3dvARB); glp->MultiTexCoord3fARB = (void APIENTRY (*)(GLenum target, GLfloat s, GLfloat t, GLfloat r)) ldg_find("glMultiTexCoord3fARB", lib); GL_CHECK(glp->MultiTexCoord3fARB); glp->MultiTexCoord3fvARB = (void APIENTRY (*)(GLenum target, const GLfloat *v)) ldg_find("glMultiTexCoord3fvARB", lib); GL_CHECK(glp->MultiTexCoord3fvARB); glp->MultiTexCoord3iARB = (void APIENTRY (*)(GLenum target, GLint s, GLint t, GLint r)) ldg_find("glMultiTexCoord3iARB", lib); GL_CHECK(glp->MultiTexCoord3iARB); glp->MultiTexCoord3ivARB = (void APIENTRY (*)(GLenum target, const GLint *v)) ldg_find("glMultiTexCoord3ivARB", lib); GL_CHECK(glp->MultiTexCoord3ivARB); glp->MultiTexCoord3sARB = (void APIENTRY (*)(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r)) ldg_find("glMultiTexCoord3sARB", lib); GL_CHECK(glp->MultiTexCoord3sARB); glp->MultiTexCoord3svARB = (void APIENTRY (*)(GLenum target, const GLshort *v)) ldg_find("glMultiTexCoord3svARB", lib); GL_CHECK(glp->MultiTexCoord3svARB); glp->MultiTexCoord4dARB = (void APIENTRY (*)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)) ldg_find("glMultiTexCoord4dARB", lib); GL_CHECK(glp->MultiTexCoord4dARB); glp->MultiTexCoord4dvARB = (void APIENTRY (*)(GLenum target, const GLdouble *v)) ldg_find("glMultiTexCoord4dvARB", lib); GL_CHECK(glp->MultiTexCoord4dvARB); glp->MultiTexCoord4fARB = (void APIENTRY (*)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)) ldg_find("glMultiTexCoord4fARB", lib); GL_CHECK(glp->MultiTexCoord4fARB); glp->MultiTexCoord4fvARB = (void APIENTRY (*)(GLenum target, const GLfloat *v)) ldg_find("glMultiTexCoord4fvARB", lib); GL_CHECK(glp->MultiTexCoord4fvARB); glp->MultiTexCoord4iARB = (void APIENTRY (*)(GLenum target, GLint s, GLint t, GLint r, GLint q)) ldg_find("glMultiTexCoord4iARB", lib); GL_CHECK(glp->MultiTexCoord4iARB); glp->MultiTexCoord4ivARB = (void APIENTRY (*)(GLenum target, const GLint *v)) ldg_find("glMultiTexCoord4ivARB", lib); GL_CHECK(glp->MultiTexCoord4ivARB); glp->MultiTexCoord4sARB = (void APIENTRY (*)(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q)) ldg_find("glMultiTexCoord4sARB", lib); GL_CHECK(glp->MultiTexCoord4sARB); glp->MultiTexCoord4svARB = (void APIENTRY (*)(GLenum target, const GLshort *v)) ldg_find("glMultiTexCoord4svARB", lib); GL_CHECK(glp->MultiTexCoord4svARB); glp->LoadTransposeMatrixfARB = (void APIENTRY (*)(const GLfloat *m)) ldg_find("glLoadTransposeMatrixfARB", lib); GL_CHECK(glp->LoadTransposeMatrixfARB); glp->LoadTransposeMatrixdARB = (void APIENTRY (*)(const GLdouble *m)) ldg_find("glLoadTransposeMatrixdARB", lib); GL_CHECK(glp->LoadTransposeMatrixdARB); glp->MultTransposeMatrixfARB = (void APIENTRY (*)(const GLfloat *m)) ldg_find("glMultTransposeMatrixfARB", lib); GL_CHECK(glp->MultTransposeMatrixfARB); glp->MultTransposeMatrixdARB = (void APIENTRY (*)(const GLdouble *m)) ldg_find("glMultTransposeMatrixdARB", lib); GL_CHECK(glp->MultTransposeMatrixdARB); glp->SampleCoverageARB = (void APIENTRY (*)(GLfloat value, GLboolean32 invert)) ldg_find("glSampleCoverageARB", lib); GL_CHECK(glp->SampleCoverageARB); glp->CompressedTexImage3DARB = (void APIENTRY (*)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)) ldg_find("glCompressedTexImage3DARB", lib); GL_CHECK(glp->CompressedTexImage3DARB); glp->CompressedTexImage2DARB = (void APIENTRY (*)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data)) ldg_find("glCompressedTexImage2DARB", lib); GL_CHECK(glp->CompressedTexImage2DARB); glp->CompressedTexImage1DARB = (void APIENTRY (*)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data)) ldg_find("glCompressedTexImage1DARB", lib); GL_CHECK(glp->CompressedTexImage1DARB); glp->CompressedTexSubImage3DARB = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)) ldg_find("glCompressedTexSubImage3DARB", lib); GL_CHECK(glp->CompressedTexSubImage3DARB); glp->CompressedTexSubImage2DARB = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)) ldg_find("glCompressedTexSubImage2DARB", lib); GL_CHECK(glp->CompressedTexSubImage2DARB); glp->CompressedTexSubImage1DARB = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)) ldg_find("glCompressedTexSubImage1DARB", lib); GL_CHECK(glp->CompressedTexSubImage1DARB); glp->GetCompressedTexImageARB = (void APIENTRY (*)(GLenum target, GLint level, void *img)) ldg_find("glGetCompressedTexImageARB", lib); GL_CHECK(glp->GetCompressedTexImageARB); glp->PointParameterfARB = (void APIENTRY (*)(GLenum pname, GLfloat param)) ldg_find("glPointParameterfARB", lib); GL_CHECK(glp->PointParameterfARB); glp->PointParameterfvARB = (void APIENTRY (*)(GLenum pname, const GLfloat *params)) ldg_find("glPointParameterfvARB", lib); GL_CHECK(glp->PointParameterfvARB); glp->WeightbvARB = (void APIENTRY (*)(GLint size, const GLbyte *weights)) ldg_find("glWeightbvARB", lib); GL_CHECK(glp->WeightbvARB); glp->WeightsvARB = (void APIENTRY (*)(GLint size, const GLshort *weights)) ldg_find("glWeightsvARB", lib); GL_CHECK(glp->WeightsvARB); glp->WeightivARB = (void APIENTRY (*)(GLint size, const GLint *weights)) ldg_find("glWeightivARB", lib); GL_CHECK(glp->WeightivARB); glp->WeightfvARB = (void APIENTRY (*)(GLint size, const GLfloat *weights)) ldg_find("glWeightfvARB", lib); GL_CHECK(glp->WeightfvARB); glp->WeightdvARB = (void APIENTRY (*)(GLint size, const GLdouble *weights)) ldg_find("glWeightdvARB", lib); GL_CHECK(glp->WeightdvARB); glp->WeightubvARB = (void APIENTRY (*)(GLint size, const GLubyte *weights)) ldg_find("glWeightubvARB", lib); GL_CHECK(glp->WeightubvARB); glp->WeightusvARB = (void APIENTRY (*)(GLint size, const GLushort *weights)) ldg_find("glWeightusvARB", lib); GL_CHECK(glp->WeightusvARB); glp->WeightuivARB = (void APIENTRY (*)(GLint size, const GLuint *weights)) ldg_find("glWeightuivARB", lib); GL_CHECK(glp->WeightuivARB); glp->WeightPointerARB = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride, const void *pointer)) ldg_find("glWeightPointerARB", lib); GL_CHECK(glp->WeightPointerARB); glp->VertexBlendARB = (void APIENTRY (*)(GLint count)) ldg_find("glVertexBlendARB", lib); GL_CHECK(glp->VertexBlendARB); glp->CurrentPaletteMatrixARB = (void APIENTRY (*)(GLint index)) ldg_find("glCurrentPaletteMatrixARB", lib); GL_CHECK(glp->CurrentPaletteMatrixARB); glp->MatrixIndexubvARB = (void APIENTRY (*)(GLint size, const GLubyte *indices)) ldg_find("glMatrixIndexubvARB", lib); GL_CHECK(glp->MatrixIndexubvARB); glp->MatrixIndexusvARB = (void APIENTRY (*)(GLint size, const GLushort *indices)) ldg_find("glMatrixIndexusvARB", lib); GL_CHECK(glp->MatrixIndexusvARB); glp->MatrixIndexuivARB = (void APIENTRY (*)(GLint size, const GLuint *indices)) ldg_find("glMatrixIndexuivARB", lib); GL_CHECK(glp->MatrixIndexuivARB); glp->MatrixIndexPointerARB = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride, const void *pointer)) ldg_find("glMatrixIndexPointerARB", lib); GL_CHECK(glp->MatrixIndexPointerARB); glp->WindowPos2dARB = (void APIENTRY (*)(GLdouble x, GLdouble y)) ldg_find("glWindowPos2dARB", lib); GL_CHECK(glp->WindowPos2dARB); glp->WindowPos2dvARB = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glWindowPos2dvARB", lib); GL_CHECK(glp->WindowPos2dvARB); glp->WindowPos2fARB = (void APIENTRY (*)(GLfloat x, GLfloat y)) ldg_find("glWindowPos2fARB", lib); GL_CHECK(glp->WindowPos2fARB); glp->WindowPos2fvARB = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glWindowPos2fvARB", lib); GL_CHECK(glp->WindowPos2fvARB); glp->WindowPos2iARB = (void APIENTRY (*)(GLint x, GLint y)) ldg_find("glWindowPos2iARB", lib); GL_CHECK(glp->WindowPos2iARB); glp->WindowPos2ivARB = (void APIENTRY (*)(const GLint *v)) ldg_find("glWindowPos2ivARB", lib); GL_CHECK(glp->WindowPos2ivARB); glp->WindowPos2sARB = (void APIENTRY (*)(GLshort32 x, GLshort32 y)) ldg_find("glWindowPos2sARB", lib); GL_CHECK(glp->WindowPos2sARB); glp->WindowPos2svARB = (void APIENTRY (*)(const GLshort *v)) ldg_find("glWindowPos2svARB", lib); GL_CHECK(glp->WindowPos2svARB); glp->WindowPos3dARB = (void APIENTRY (*)(GLdouble x, GLdouble y, GLdouble z)) ldg_find("glWindowPos3dARB", lib); GL_CHECK(glp->WindowPos3dARB); glp->WindowPos3dvARB = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glWindowPos3dvARB", lib); GL_CHECK(glp->WindowPos3dvARB); glp->WindowPos3fARB = (void APIENTRY (*)(GLfloat x, GLfloat y, GLfloat z)) ldg_find("glWindowPos3fARB", lib); GL_CHECK(glp->WindowPos3fARB); glp->WindowPos3fvARB = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glWindowPos3fvARB", lib); GL_CHECK(glp->WindowPos3fvARB); glp->WindowPos3iARB = (void APIENTRY (*)(GLint x, GLint y, GLint z)) ldg_find("glWindowPos3iARB", lib); GL_CHECK(glp->WindowPos3iARB); glp->WindowPos3ivARB = (void APIENTRY (*)(const GLint *v)) ldg_find("glWindowPos3ivARB", lib); GL_CHECK(glp->WindowPos3ivARB); glp->WindowPos3sARB = (void APIENTRY (*)(GLshort32 x, GLshort32 y, GLshort32 z)) ldg_find("glWindowPos3sARB", lib); GL_CHECK(glp->WindowPos3sARB); glp->WindowPos3svARB = (void APIENTRY (*)(const GLshort *v)) ldg_find("glWindowPos3svARB", lib); GL_CHECK(glp->WindowPos3svARB); glp->VertexAttrib1dARB = (void APIENTRY (*)(GLuint index, GLdouble x)) ldg_find("glVertexAttrib1dARB", lib); GL_CHECK(glp->VertexAttrib1dARB); glp->VertexAttrib1dvARB = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttrib1dvARB", lib); GL_CHECK(glp->VertexAttrib1dvARB); glp->VertexAttrib1fARB = (void APIENTRY (*)(GLuint index, GLfloat x)) ldg_find("glVertexAttrib1fARB", lib); GL_CHECK(glp->VertexAttrib1fARB); glp->VertexAttrib1fvARB = (void APIENTRY (*)(GLuint index, const GLfloat *v)) ldg_find("glVertexAttrib1fvARB", lib); GL_CHECK(glp->VertexAttrib1fvARB); glp->VertexAttrib1sARB = (void APIENTRY (*)(GLuint index, GLshort32 x)) ldg_find("glVertexAttrib1sARB", lib); GL_CHECK(glp->VertexAttrib1sARB); glp->VertexAttrib1svARB = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttrib1svARB", lib); GL_CHECK(glp->VertexAttrib1svARB); glp->VertexAttrib2dARB = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y)) ldg_find("glVertexAttrib2dARB", lib); GL_CHECK(glp->VertexAttrib2dARB); glp->VertexAttrib2dvARB = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttrib2dvARB", lib); GL_CHECK(glp->VertexAttrib2dvARB); glp->VertexAttrib2fARB = (void APIENTRY (*)(GLuint index, GLfloat x, GLfloat y)) ldg_find("glVertexAttrib2fARB", lib); GL_CHECK(glp->VertexAttrib2fARB); glp->VertexAttrib2fvARB = (void APIENTRY (*)(GLuint index, const GLfloat *v)) ldg_find("glVertexAttrib2fvARB", lib); GL_CHECK(glp->VertexAttrib2fvARB); glp->VertexAttrib2sARB = (void APIENTRY (*)(GLuint index, GLshort32 x, GLshort32 y)) ldg_find("glVertexAttrib2sARB", lib); GL_CHECK(glp->VertexAttrib2sARB); glp->VertexAttrib2svARB = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttrib2svARB", lib); GL_CHECK(glp->VertexAttrib2svARB); glp->VertexAttrib3dARB = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y, GLdouble z)) ldg_find("glVertexAttrib3dARB", lib); GL_CHECK(glp->VertexAttrib3dARB); glp->VertexAttrib3dvARB = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttrib3dvARB", lib); GL_CHECK(glp->VertexAttrib3dvARB); glp->VertexAttrib3fARB = (void APIENTRY (*)(GLuint index, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glVertexAttrib3fARB", lib); GL_CHECK(glp->VertexAttrib3fARB); glp->VertexAttrib3fvARB = (void APIENTRY (*)(GLuint index, const GLfloat *v)) ldg_find("glVertexAttrib3fvARB", lib); GL_CHECK(glp->VertexAttrib3fvARB); glp->VertexAttrib3sARB = (void APIENTRY (*)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z)) ldg_find("glVertexAttrib3sARB", lib); GL_CHECK(glp->VertexAttrib3sARB); glp->VertexAttrib3svARB = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttrib3svARB", lib); GL_CHECK(glp->VertexAttrib3svARB); glp->VertexAttrib4NbvARB = (void APIENTRY (*)(GLuint index, const GLbyte *v)) ldg_find("glVertexAttrib4NbvARB", lib); GL_CHECK(glp->VertexAttrib4NbvARB); glp->VertexAttrib4NivARB = (void APIENTRY (*)(GLuint index, const GLint *v)) ldg_find("glVertexAttrib4NivARB", lib); GL_CHECK(glp->VertexAttrib4NivARB); glp->VertexAttrib4NsvARB = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttrib4NsvARB", lib); GL_CHECK(glp->VertexAttrib4NsvARB); glp->VertexAttrib4NubARB = (void APIENTRY (*)(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w)) ldg_find("glVertexAttrib4NubARB", lib); GL_CHECK(glp->VertexAttrib4NubARB); glp->VertexAttrib4NubvARB = (void APIENTRY (*)(GLuint index, const GLubyte *v)) ldg_find("glVertexAttrib4NubvARB", lib); GL_CHECK(glp->VertexAttrib4NubvARB); glp->VertexAttrib4NuivARB = (void APIENTRY (*)(GLuint index, const GLuint *v)) ldg_find("glVertexAttrib4NuivARB", lib); GL_CHECK(glp->VertexAttrib4NuivARB); glp->VertexAttrib4NusvARB = (void APIENTRY (*)(GLuint index, const GLushort *v)) ldg_find("glVertexAttrib4NusvARB", lib); GL_CHECK(glp->VertexAttrib4NusvARB); glp->VertexAttrib4bvARB = (void APIENTRY (*)(GLuint index, const GLbyte *v)) ldg_find("glVertexAttrib4bvARB", lib); GL_CHECK(glp->VertexAttrib4bvARB); glp->VertexAttrib4dARB = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glVertexAttrib4dARB", lib); GL_CHECK(glp->VertexAttrib4dARB); glp->VertexAttrib4dvARB = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttrib4dvARB", lib); GL_CHECK(glp->VertexAttrib4dvARB); glp->VertexAttrib4fARB = (void APIENTRY (*)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glVertexAttrib4fARB", lib); GL_CHECK(glp->VertexAttrib4fARB); glp->VertexAttrib4fvARB = (void APIENTRY (*)(GLuint index, const GLfloat *v)) ldg_find("glVertexAttrib4fvARB", lib); GL_CHECK(glp->VertexAttrib4fvARB); glp->VertexAttrib4ivARB = (void APIENTRY (*)(GLuint index, const GLint *v)) ldg_find("glVertexAttrib4ivARB", lib); GL_CHECK(glp->VertexAttrib4ivARB); glp->VertexAttrib4sARB = (void APIENTRY (*)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w)) ldg_find("glVertexAttrib4sARB", lib); GL_CHECK(glp->VertexAttrib4sARB); glp->VertexAttrib4svARB = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttrib4svARB", lib); GL_CHECK(glp->VertexAttrib4svARB); glp->VertexAttrib4ubvARB = (void APIENTRY (*)(GLuint index, const GLubyte *v)) ldg_find("glVertexAttrib4ubvARB", lib); GL_CHECK(glp->VertexAttrib4ubvARB); glp->VertexAttrib4uivARB = (void APIENTRY (*)(GLuint index, const GLuint *v)) ldg_find("glVertexAttrib4uivARB", lib); GL_CHECK(glp->VertexAttrib4uivARB); glp->VertexAttrib4usvARB = (void APIENTRY (*)(GLuint index, const GLushort *v)) ldg_find("glVertexAttrib4usvARB", lib); GL_CHECK(glp->VertexAttrib4usvARB); glp->VertexAttribPointerARB = (void APIENTRY (*)(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer)) ldg_find("glVertexAttribPointerARB", lib); GL_CHECK(glp->VertexAttribPointerARB); glp->EnableVertexAttribArrayARB = (void APIENTRY (*)(GLuint index)) ldg_find("glEnableVertexAttribArrayARB", lib); GL_CHECK(glp->EnableVertexAttribArrayARB); glp->DisableVertexAttribArrayARB = (void APIENTRY (*)(GLuint index)) ldg_find("glDisableVertexAttribArrayARB", lib); GL_CHECK(glp->DisableVertexAttribArrayARB); glp->ProgramStringARB = (void APIENTRY (*)(GLenum target, GLenum format, GLsizei len, const void *string)) ldg_find("glProgramStringARB", lib); GL_CHECK(glp->ProgramStringARB); glp->BindProgramARB = (void APIENTRY (*)(GLenum target, GLuint program)) ldg_find("glBindProgramARB", lib); GL_CHECK(glp->BindProgramARB); glp->DeleteProgramsARB = (void APIENTRY (*)(GLsizei n, const GLuint *programs)) ldg_find("glDeleteProgramsARB", lib); GL_CHECK(glp->DeleteProgramsARB); glp->GenProgramsARB = (void APIENTRY (*)(GLsizei n, GLuint *programs)) ldg_find("glGenProgramsARB", lib); GL_CHECK(glp->GenProgramsARB); glp->ProgramEnvParameter4dARB = (void APIENTRY (*)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glProgramEnvParameter4dARB", lib); GL_CHECK(glp->ProgramEnvParameter4dARB); glp->ProgramEnvParameter4dvARB = (void APIENTRY (*)(GLenum target, GLuint index, const GLdouble *params)) ldg_find("glProgramEnvParameter4dvARB", lib); GL_CHECK(glp->ProgramEnvParameter4dvARB); glp->ProgramEnvParameter4fARB = (void APIENTRY (*)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glProgramEnvParameter4fARB", lib); GL_CHECK(glp->ProgramEnvParameter4fARB); glp->ProgramEnvParameter4fvARB = (void APIENTRY (*)(GLenum target, GLuint index, const GLfloat *params)) ldg_find("glProgramEnvParameter4fvARB", lib); GL_CHECK(glp->ProgramEnvParameter4fvARB); glp->ProgramLocalParameter4dARB = (void APIENTRY (*)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glProgramLocalParameter4dARB", lib); GL_CHECK(glp->ProgramLocalParameter4dARB); glp->ProgramLocalParameter4dvARB = (void APIENTRY (*)(GLenum target, GLuint index, const GLdouble *params)) ldg_find("glProgramLocalParameter4dvARB", lib); GL_CHECK(glp->ProgramLocalParameter4dvARB); glp->ProgramLocalParameter4fARB = (void APIENTRY (*)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glProgramLocalParameter4fARB", lib); GL_CHECK(glp->ProgramLocalParameter4fARB); glp->ProgramLocalParameter4fvARB = (void APIENTRY (*)(GLenum target, GLuint index, const GLfloat *params)) ldg_find("glProgramLocalParameter4fvARB", lib); GL_CHECK(glp->ProgramLocalParameter4fvARB); glp->GetProgramEnvParameterdvARB = (void APIENTRY (*)(GLenum target, GLuint index, GLdouble *params)) ldg_find("glGetProgramEnvParameterdvARB", lib); GL_CHECK(glp->GetProgramEnvParameterdvARB); glp->GetProgramEnvParameterfvARB = (void APIENTRY (*)(GLenum target, GLuint index, GLfloat *params)) ldg_find("glGetProgramEnvParameterfvARB", lib); GL_CHECK(glp->GetProgramEnvParameterfvARB); glp->GetProgramLocalParameterdvARB = (void APIENTRY (*)(GLenum target, GLuint index, GLdouble *params)) ldg_find("glGetProgramLocalParameterdvARB", lib); GL_CHECK(glp->GetProgramLocalParameterdvARB); glp->GetProgramLocalParameterfvARB = (void APIENTRY (*)(GLenum target, GLuint index, GLfloat *params)) ldg_find("glGetProgramLocalParameterfvARB", lib); GL_CHECK(glp->GetProgramLocalParameterfvARB); glp->GetProgramivARB = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetProgramivARB", lib); GL_CHECK(glp->GetProgramivARB); glp->GetProgramStringARB = (void APIENTRY (*)(GLenum target, GLenum pname, void *string)) ldg_find("glGetProgramStringARB", lib); GL_CHECK(glp->GetProgramStringARB); glp->GetVertexAttribdvARB = (void APIENTRY (*)(GLuint index, GLenum pname, GLdouble *params)) ldg_find("glGetVertexAttribdvARB", lib); GL_CHECK(glp->GetVertexAttribdvARB); glp->GetVertexAttribfvARB = (void APIENTRY (*)(GLuint index, GLenum pname, GLfloat *params)) ldg_find("glGetVertexAttribfvARB", lib); GL_CHECK(glp->GetVertexAttribfvARB); glp->GetVertexAttribivARB = (void APIENTRY (*)(GLuint index, GLenum pname, GLint *params)) ldg_find("glGetVertexAttribivARB", lib); GL_CHECK(glp->GetVertexAttribivARB); glp->GetVertexAttribPointervARB = (void APIENTRY (*)(GLuint index, GLenum pname, void * *pointer)) ldg_find("glGetVertexAttribPointervARB", lib); GL_CHECK(glp->GetVertexAttribPointervARB); glp->IsProgramARB = (GLboolean APIENTRY (*)(GLuint program)) ldg_find("glIsProgramARB", lib); GL_CHECK(glp->IsProgramARB); glp->BindBufferARB = (void APIENTRY (*)(GLenum target, GLuint buffer)) ldg_find("glBindBufferARB", lib); GL_CHECK(glp->BindBufferARB); glp->DeleteBuffersARB = (void APIENTRY (*)(GLsizei n, const GLuint *buffers)) ldg_find("glDeleteBuffersARB", lib); GL_CHECK(glp->DeleteBuffersARB); glp->GenBuffersARB = (void APIENTRY (*)(GLsizei n, GLuint *buffers)) ldg_find("glGenBuffersARB", lib); GL_CHECK(glp->GenBuffersARB); glp->IsBufferARB = (GLboolean APIENTRY (*)(GLuint buffer)) ldg_find("glIsBufferARB", lib); GL_CHECK(glp->IsBufferARB); glp->BufferDataARB = (void APIENTRY (*)(GLenum target, GLsizeiptrARB size, const void *data, GLenum usage)) ldg_find("glBufferDataARB", lib); GL_CHECK(glp->BufferDataARB); glp->BufferSubDataARB = (void APIENTRY (*)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data)) ldg_find("glBufferSubDataARB", lib); GL_CHECK(glp->BufferSubDataARB); glp->GetBufferSubDataARB = (void APIENTRY (*)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data)) ldg_find("glGetBufferSubDataARB", lib); GL_CHECK(glp->GetBufferSubDataARB); glp->MapBufferARB = (void * APIENTRY (*)(GLenum target, GLenum access)) ldg_find("glMapBufferARB", lib); GL_CHECK(glp->MapBufferARB); glp->UnmapBufferARB = (GLboolean APIENTRY (*)(GLenum target)) ldg_find("glUnmapBufferARB", lib); GL_CHECK(glp->UnmapBufferARB); glp->GetBufferParameterivARB = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetBufferParameterivARB", lib); GL_CHECK(glp->GetBufferParameterivARB); glp->GetBufferPointervARB = (void APIENTRY (*)(GLenum target, GLenum pname, void * *params)) ldg_find("glGetBufferPointervARB", lib); GL_CHECK(glp->GetBufferPointervARB); glp->GenQueriesARB = (void APIENTRY (*)(GLsizei n, GLuint *ids)) ldg_find("glGenQueriesARB", lib); GL_CHECK(glp->GenQueriesARB); glp->DeleteQueriesARB = (void APIENTRY (*)(GLsizei n, const GLuint *ids)) ldg_find("glDeleteQueriesARB", lib); GL_CHECK(glp->DeleteQueriesARB); glp->IsQueryARB = (GLboolean APIENTRY (*)(GLuint id)) ldg_find("glIsQueryARB", lib); GL_CHECK(glp->IsQueryARB); glp->BeginQueryARB = (void APIENTRY (*)(GLenum target, GLuint id)) ldg_find("glBeginQueryARB", lib); GL_CHECK(glp->BeginQueryARB); glp->EndQueryARB = (void APIENTRY (*)(GLenum target)) ldg_find("glEndQueryARB", lib); GL_CHECK(glp->EndQueryARB); glp->GetQueryivARB = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetQueryivARB", lib); GL_CHECK(glp->GetQueryivARB); glp->GetQueryObjectivARB = (void APIENTRY (*)(GLuint id, GLenum pname, GLint *params)) ldg_find("glGetQueryObjectivARB", lib); GL_CHECK(glp->GetQueryObjectivARB); glp->GetQueryObjectuivARB = (void APIENTRY (*)(GLuint id, GLenum pname, GLuint *params)) ldg_find("glGetQueryObjectuivARB", lib); GL_CHECK(glp->GetQueryObjectuivARB); glp->DeleteObjectARB = (void APIENTRY (*)(GLhandleARB obj)) ldg_find("glDeleteObjectARB", lib); GL_CHECK(glp->DeleteObjectARB); glp->GetHandleARB = (GLhandleARB APIENTRY (*)(GLenum pname)) ldg_find("glGetHandleARB", lib); GL_CHECK(glp->GetHandleARB); glp->DetachObjectARB = (void APIENTRY (*)(GLhandleARB containerObj, GLhandleARB attachedObj)) ldg_find("glDetachObjectARB", lib); GL_CHECK(glp->DetachObjectARB); glp->CreateShaderObjectARB = (GLhandleARB APIENTRY (*)(GLenum shaderType)) ldg_find("glCreateShaderObjectARB", lib); GL_CHECK(glp->CreateShaderObjectARB); glp->ShaderSourceARB = (void APIENTRY (*)(GLhandleARB shaderObj, GLsizei count, const GLcharARB * *string, const GLint *length)) ldg_find("glShaderSourceARB", lib); GL_CHECK(glp->ShaderSourceARB); glp->CompileShaderARB = (void APIENTRY (*)(GLhandleARB shaderObj)) ldg_find("glCompileShaderARB", lib); GL_CHECK(glp->CompileShaderARB); glp->CreateProgramObjectARB = (GLhandleARB APIENTRY (*)(void)) ldg_find("glCreateProgramObjectARB", lib); GL_CHECK(glp->CreateProgramObjectARB); glp->AttachObjectARB = (void APIENTRY (*)(GLhandleARB containerObj, GLhandleARB obj)) ldg_find("glAttachObjectARB", lib); GL_CHECK(glp->AttachObjectARB); glp->LinkProgramARB = (void APIENTRY (*)(GLhandleARB programObj)) ldg_find("glLinkProgramARB", lib); GL_CHECK(glp->LinkProgramARB); glp->UseProgramObjectARB = (void APIENTRY (*)(GLhandleARB programObj)) ldg_find("glUseProgramObjectARB", lib); GL_CHECK(glp->UseProgramObjectARB); glp->ValidateProgramARB = (void APIENTRY (*)(GLhandleARB programObj)) ldg_find("glValidateProgramARB", lib); GL_CHECK(glp->ValidateProgramARB); glp->Uniform1fARB = (void APIENTRY (*)(GLint location, GLfloat v0)) ldg_find("glUniform1fARB", lib); GL_CHECK(glp->Uniform1fARB); glp->Uniform2fARB = (void APIENTRY (*)(GLint location, GLfloat v0, GLfloat v1)) ldg_find("glUniform2fARB", lib); GL_CHECK(glp->Uniform2fARB); glp->Uniform3fARB = (void APIENTRY (*)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) ldg_find("glUniform3fARB", lib); GL_CHECK(glp->Uniform3fARB); glp->Uniform4fARB = (void APIENTRY (*)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) ldg_find("glUniform4fARB", lib); GL_CHECK(glp->Uniform4fARB); glp->Uniform1iARB = (void APIENTRY (*)(GLint location, GLint v0)) ldg_find("glUniform1iARB", lib); GL_CHECK(glp->Uniform1iARB); glp->Uniform2iARB = (void APIENTRY (*)(GLint location, GLint v0, GLint v1)) ldg_find("glUniform2iARB", lib); GL_CHECK(glp->Uniform2iARB); glp->Uniform3iARB = (void APIENTRY (*)(GLint location, GLint v0, GLint v1, GLint v2)) ldg_find("glUniform3iARB", lib); GL_CHECK(glp->Uniform3iARB); glp->Uniform4iARB = (void APIENTRY (*)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) ldg_find("glUniform4iARB", lib); GL_CHECK(glp->Uniform4iARB); glp->Uniform1fvARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLfloat *value)) ldg_find("glUniform1fvARB", lib); GL_CHECK(glp->Uniform1fvARB); glp->Uniform2fvARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLfloat *value)) ldg_find("glUniform2fvARB", lib); GL_CHECK(glp->Uniform2fvARB); glp->Uniform3fvARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLfloat *value)) ldg_find("glUniform3fvARB", lib); GL_CHECK(glp->Uniform3fvARB); glp->Uniform4fvARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLfloat *value)) ldg_find("glUniform4fvARB", lib); GL_CHECK(glp->Uniform4fvARB); glp->Uniform1ivARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLint *value)) ldg_find("glUniform1ivARB", lib); GL_CHECK(glp->Uniform1ivARB); glp->Uniform2ivARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLint *value)) ldg_find("glUniform2ivARB", lib); GL_CHECK(glp->Uniform2ivARB); glp->Uniform3ivARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLint *value)) ldg_find("glUniform3ivARB", lib); GL_CHECK(glp->Uniform3ivARB); glp->Uniform4ivARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLint *value)) ldg_find("glUniform4ivARB", lib); GL_CHECK(glp->Uniform4ivARB); glp->UniformMatrix2fvARB = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glUniformMatrix2fvARB", lib); GL_CHECK(glp->UniformMatrix2fvARB); glp->UniformMatrix3fvARB = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glUniformMatrix3fvARB", lib); GL_CHECK(glp->UniformMatrix3fvARB); glp->UniformMatrix4fvARB = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glUniformMatrix4fvARB", lib); GL_CHECK(glp->UniformMatrix4fvARB); glp->GetObjectParameterfvARB = (void APIENTRY (*)(GLhandleARB obj, GLenum pname, GLfloat *params)) ldg_find("glGetObjectParameterfvARB", lib); GL_CHECK(glp->GetObjectParameterfvARB); glp->GetObjectParameterivARB = (void APIENTRY (*)(GLhandleARB obj, GLenum pname, GLint *params)) ldg_find("glGetObjectParameterivARB", lib); GL_CHECK(glp->GetObjectParameterivARB); glp->GetInfoLogARB = (void APIENTRY (*)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog)) ldg_find("glGetInfoLogARB", lib); GL_CHECK(glp->GetInfoLogARB); glp->GetAttachedObjectsARB = (void APIENTRY (*)(GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj)) ldg_find("glGetAttachedObjectsARB", lib); GL_CHECK(glp->GetAttachedObjectsARB); glp->GetUniformLocationARB = (GLint APIENTRY (*)(GLhandleARB programObj, const GLcharARB *name)) ldg_find("glGetUniformLocationARB", lib); GL_CHECK(glp->GetUniformLocationARB); glp->GetActiveUniformARB = (void APIENTRY (*)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name)) ldg_find("glGetActiveUniformARB", lib); GL_CHECK(glp->GetActiveUniformARB); glp->GetUniformfvARB = (void APIENTRY (*)(GLhandleARB programObj, GLint location, GLfloat *params)) ldg_find("glGetUniformfvARB", lib); GL_CHECK(glp->GetUniformfvARB); glp->GetUniformivARB = (void APIENTRY (*)(GLhandleARB programObj, GLint location, GLint *params)) ldg_find("glGetUniformivARB", lib); GL_CHECK(glp->GetUniformivARB); glp->GetShaderSourceARB = (void APIENTRY (*)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source)) ldg_find("glGetShaderSourceARB", lib); GL_CHECK(glp->GetShaderSourceARB); glp->BindAttribLocationARB = (void APIENTRY (*)(GLhandleARB programObj, GLuint index, const GLcharARB *name)) ldg_find("glBindAttribLocationARB", lib); GL_CHECK(glp->BindAttribLocationARB); glp->GetActiveAttribARB = (void APIENTRY (*)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name)) ldg_find("glGetActiveAttribARB", lib); GL_CHECK(glp->GetActiveAttribARB); glp->GetAttribLocationARB = (GLint APIENTRY (*)(GLhandleARB programObj, const GLcharARB *name)) ldg_find("glGetAttribLocationARB", lib); GL_CHECK(glp->GetAttribLocationARB); glp->DrawBuffersARB = (void APIENTRY (*)(GLsizei n, const GLenum *bufs)) ldg_find("glDrawBuffersARB", lib); GL_CHECK(glp->DrawBuffersARB); glp->BlendColorEXT = (void APIENTRY (*)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) ldg_find("glBlendColorEXT", lib); GL_CHECK(glp->BlendColorEXT); glp->PolygonOffsetEXT = (void APIENTRY (*)(GLfloat factor, GLfloat bias)) ldg_find("glPolygonOffsetEXT", lib); GL_CHECK(glp->PolygonOffsetEXT); glp->TexImage3DEXT = (void APIENTRY (*)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)) ldg_find("glTexImage3DEXT", lib); GL_CHECK(glp->TexImage3DEXT); glp->TexSubImage3DEXT = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)) ldg_find("glTexSubImage3DEXT", lib); GL_CHECK(glp->TexSubImage3DEXT); glp->GetTexFilterFuncSGIS = (void APIENTRY (*)(GLenum target, GLenum filter, GLfloat *weights)) ldg_find("glGetTexFilterFuncSGIS", lib); GL_CHECK(glp->GetTexFilterFuncSGIS); glp->TexFilterFuncSGIS = (void APIENTRY (*)(GLenum target, GLenum filter, GLsizei n, const GLfloat *weights)) ldg_find("glTexFilterFuncSGIS", lib); GL_CHECK(glp->TexFilterFuncSGIS); glp->TexSubImage1DEXT = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)) ldg_find("glTexSubImage1DEXT", lib); GL_CHECK(glp->TexSubImage1DEXT); glp->TexSubImage2DEXT = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)) ldg_find("glTexSubImage2DEXT", lib); GL_CHECK(glp->TexSubImage2DEXT); glp->CopyTexImage1DEXT = (void APIENTRY (*)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)) ldg_find("glCopyTexImage1DEXT", lib); GL_CHECK(glp->CopyTexImage1DEXT); glp->CopyTexImage2DEXT = (void APIENTRY (*)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)) ldg_find("glCopyTexImage2DEXT", lib); GL_CHECK(glp->CopyTexImage2DEXT); glp->CopyTexSubImage1DEXT = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)) ldg_find("glCopyTexSubImage1DEXT", lib); GL_CHECK(glp->CopyTexSubImage1DEXT); glp->CopyTexSubImage2DEXT = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glCopyTexSubImage2DEXT", lib); GL_CHECK(glp->CopyTexSubImage2DEXT); glp->CopyTexSubImage3DEXT = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glCopyTexSubImage3DEXT", lib); GL_CHECK(glp->CopyTexSubImage3DEXT); glp->GetHistogramEXT = (void APIENTRY (*)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values)) ldg_find("glGetHistogramEXT", lib); GL_CHECK(glp->GetHistogramEXT); glp->GetHistogramParameterfvEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetHistogramParameterfvEXT", lib); GL_CHECK(glp->GetHistogramParameterfvEXT); glp->GetHistogramParameterivEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetHistogramParameterivEXT", lib); GL_CHECK(glp->GetHistogramParameterivEXT); glp->GetMinmaxEXT = (void APIENTRY (*)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values)) ldg_find("glGetMinmaxEXT", lib); GL_CHECK(glp->GetMinmaxEXT); glp->GetMinmaxParameterfvEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetMinmaxParameterfvEXT", lib); GL_CHECK(glp->GetMinmaxParameterfvEXT); glp->GetMinmaxParameterivEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetMinmaxParameterivEXT", lib); GL_CHECK(glp->GetMinmaxParameterivEXT); glp->HistogramEXT = (void APIENTRY (*)(GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink)) ldg_find("glHistogramEXT", lib); GL_CHECK(glp->HistogramEXT); glp->MinmaxEXT = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLboolean32 sink)) ldg_find("glMinmaxEXT", lib); GL_CHECK(glp->MinmaxEXT); glp->ResetHistogramEXT = (void APIENTRY (*)(GLenum target)) ldg_find("glResetHistogramEXT", lib); GL_CHECK(glp->ResetHistogramEXT); glp->ResetMinmaxEXT = (void APIENTRY (*)(GLenum target)) ldg_find("glResetMinmaxEXT", lib); GL_CHECK(glp->ResetMinmaxEXT); glp->ConvolutionFilter1DEXT = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image)) ldg_find("glConvolutionFilter1DEXT", lib); GL_CHECK(glp->ConvolutionFilter1DEXT); glp->ConvolutionFilter2DEXT = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image)) ldg_find("glConvolutionFilter2DEXT", lib); GL_CHECK(glp->ConvolutionFilter2DEXT); glp->ConvolutionParameterfEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat params)) ldg_find("glConvolutionParameterfEXT", lib); GL_CHECK(glp->ConvolutionParameterfEXT); glp->ConvolutionParameterfvEXT = (void APIENTRY (*)(GLenum target, GLenum pname, const GLfloat *params)) ldg_find("glConvolutionParameterfvEXT", lib); GL_CHECK(glp->ConvolutionParameterfvEXT); glp->ConvolutionParameteriEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLint params)) ldg_find("glConvolutionParameteriEXT", lib); GL_CHECK(glp->ConvolutionParameteriEXT); glp->ConvolutionParameterivEXT = (void APIENTRY (*)(GLenum target, GLenum pname, const GLint *params)) ldg_find("glConvolutionParameterivEXT", lib); GL_CHECK(glp->ConvolutionParameterivEXT); glp->CopyConvolutionFilter1DEXT = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)) ldg_find("glCopyConvolutionFilter1DEXT", lib); GL_CHECK(glp->CopyConvolutionFilter1DEXT); glp->CopyConvolutionFilter2DEXT = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glCopyConvolutionFilter2DEXT", lib); GL_CHECK(glp->CopyConvolutionFilter2DEXT); glp->GetConvolutionFilterEXT = (void APIENTRY (*)(GLenum target, GLenum format, GLenum type, void *image)) ldg_find("glGetConvolutionFilterEXT", lib); GL_CHECK(glp->GetConvolutionFilterEXT); glp->GetConvolutionParameterfvEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetConvolutionParameterfvEXT", lib); GL_CHECK(glp->GetConvolutionParameterfvEXT); glp->GetConvolutionParameterivEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetConvolutionParameterivEXT", lib); GL_CHECK(glp->GetConvolutionParameterivEXT); glp->GetSeparableFilterEXT = (void APIENTRY (*)(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span)) ldg_find("glGetSeparableFilterEXT", lib); GL_CHECK(glp->GetSeparableFilterEXT); glp->SeparableFilter2DEXT = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column)) ldg_find("glSeparableFilter2DEXT", lib); GL_CHECK(glp->SeparableFilter2DEXT); glp->ColorTableSGI = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table)) ldg_find("glColorTableSGI", lib); GL_CHECK(glp->ColorTableSGI); glp->ColorTableParameterfvSGI = (void APIENTRY (*)(GLenum target, GLenum pname, const GLfloat *params)) ldg_find("glColorTableParameterfvSGI", lib); GL_CHECK(glp->ColorTableParameterfvSGI); glp->ColorTableParameterivSGI = (void APIENTRY (*)(GLenum target, GLenum pname, const GLint *params)) ldg_find("glColorTableParameterivSGI", lib); GL_CHECK(glp->ColorTableParameterivSGI); glp->CopyColorTableSGI = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)) ldg_find("glCopyColorTableSGI", lib); GL_CHECK(glp->CopyColorTableSGI); glp->GetColorTableSGI = (void APIENTRY (*)(GLenum target, GLenum format, GLenum type, void *table)) ldg_find("glGetColorTableSGI", lib); GL_CHECK(glp->GetColorTableSGI); glp->GetColorTableParameterfvSGI = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetColorTableParameterfvSGI", lib); GL_CHECK(glp->GetColorTableParameterfvSGI); glp->GetColorTableParameterivSGI = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetColorTableParameterivSGI", lib); GL_CHECK(glp->GetColorTableParameterivSGI); glp->PixelTexGenSGIX = (void APIENTRY (*)(GLenum mode)) ldg_find("glPixelTexGenSGIX", lib); GL_CHECK(glp->PixelTexGenSGIX); glp->PixelTexGenParameteriSGIS = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glPixelTexGenParameteriSGIS", lib); GL_CHECK(glp->PixelTexGenParameteriSGIS); glp->PixelTexGenParameterivSGIS = (void APIENTRY (*)(GLenum pname, const GLint *params)) ldg_find("glPixelTexGenParameterivSGIS", lib); GL_CHECK(glp->PixelTexGenParameterivSGIS); glp->PixelTexGenParameterfSGIS = (void APIENTRY (*)(GLenum pname, GLfloat param)) ldg_find("glPixelTexGenParameterfSGIS", lib); GL_CHECK(glp->PixelTexGenParameterfSGIS); glp->PixelTexGenParameterfvSGIS = (void APIENTRY (*)(GLenum pname, const GLfloat *params)) ldg_find("glPixelTexGenParameterfvSGIS", lib); GL_CHECK(glp->PixelTexGenParameterfvSGIS); glp->GetPixelTexGenParameterivSGIS = (void APIENTRY (*)(GLenum pname, GLint *params)) ldg_find("glGetPixelTexGenParameterivSGIS", lib); GL_CHECK(glp->GetPixelTexGenParameterivSGIS); glp->GetPixelTexGenParameterfvSGIS = (void APIENTRY (*)(GLenum pname, GLfloat *params)) ldg_find("glGetPixelTexGenParameterfvSGIS", lib); GL_CHECK(glp->GetPixelTexGenParameterfvSGIS); glp->TexImage4DSGIS = (void APIENTRY (*)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels)) ldg_find("glTexImage4DSGIS", lib); GL_CHECK(glp->TexImage4DSGIS); glp->TexSubImage4DSGIS = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels)) ldg_find("glTexSubImage4DSGIS", lib); GL_CHECK(glp->TexSubImage4DSGIS); glp->AreTexturesResidentEXT = (GLboolean APIENTRY (*)(GLsizei n, const GLuint *textures, GLboolean *residences)) ldg_find("glAreTexturesResidentEXT", lib); GL_CHECK(glp->AreTexturesResidentEXT); glp->BindTextureEXT = (void APIENTRY (*)(GLenum target, GLuint texture)) ldg_find("glBindTextureEXT", lib); GL_CHECK(glp->BindTextureEXT); glp->DeleteTexturesEXT = (void APIENTRY (*)(GLsizei n, const GLuint *textures)) ldg_find("glDeleteTexturesEXT", lib); GL_CHECK(glp->DeleteTexturesEXT); glp->GenTexturesEXT = (void APIENTRY (*)(GLsizei n, GLuint *textures)) ldg_find("glGenTexturesEXT", lib); GL_CHECK(glp->GenTexturesEXT); glp->IsTextureEXT = (GLboolean APIENTRY (*)(GLuint texture)) ldg_find("glIsTextureEXT", lib); GL_CHECK(glp->IsTextureEXT); glp->PrioritizeTexturesEXT = (void APIENTRY (*)(GLsizei n, const GLuint *textures, const GLclampf *priorities)) ldg_find("glPrioritizeTexturesEXT", lib); GL_CHECK(glp->PrioritizeTexturesEXT); glp->DetailTexFuncSGIS = (void APIENTRY (*)(GLenum target, GLsizei n, const GLfloat *points)) ldg_find("glDetailTexFuncSGIS", lib); GL_CHECK(glp->DetailTexFuncSGIS); glp->GetDetailTexFuncSGIS = (void APIENTRY (*)(GLenum target, GLfloat *points)) ldg_find("glGetDetailTexFuncSGIS", lib); GL_CHECK(glp->GetDetailTexFuncSGIS); glp->SharpenTexFuncSGIS = (void APIENTRY (*)(GLenum target, GLsizei n, const GLfloat *points)) ldg_find("glSharpenTexFuncSGIS", lib); GL_CHECK(glp->SharpenTexFuncSGIS); glp->GetSharpenTexFuncSGIS = (void APIENTRY (*)(GLenum target, GLfloat *points)) ldg_find("glGetSharpenTexFuncSGIS", lib); GL_CHECK(glp->GetSharpenTexFuncSGIS); glp->SampleMaskSGIS = (void APIENTRY (*)(GLclampf value, GLboolean32 invert)) ldg_find("glSampleMaskSGIS", lib); GL_CHECK(glp->SampleMaskSGIS); glp->SamplePatternSGIS = (void APIENTRY (*)(GLenum pattern)) ldg_find("glSamplePatternSGIS", lib); GL_CHECK(glp->SamplePatternSGIS); glp->ArrayElementEXT = (void APIENTRY (*)(GLint i)) ldg_find("glArrayElementEXT", lib); GL_CHECK(glp->ArrayElementEXT); glp->ColorPointerEXT = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer)) ldg_find("glColorPointerEXT", lib); GL_CHECK(glp->ColorPointerEXT); glp->DrawArraysEXT = (void APIENTRY (*)(GLenum mode, GLint first, GLsizei count)) ldg_find("glDrawArraysEXT", lib); GL_CHECK(glp->DrawArraysEXT); glp->EdgeFlagPointerEXT = (void APIENTRY (*)(GLsizei stride, GLsizei count, const GLboolean *pointer)) ldg_find("glEdgeFlagPointerEXT", lib); GL_CHECK(glp->EdgeFlagPointerEXT); glp->GetPointervEXT = (void APIENTRY (*)(GLenum pname, void * *params)) ldg_find("glGetPointervEXT", lib); GL_CHECK(glp->GetPointervEXT); glp->IndexPointerEXT = (void APIENTRY (*)(GLenum type, GLsizei stride, GLsizei count, const void *pointer)) ldg_find("glIndexPointerEXT", lib); GL_CHECK(glp->IndexPointerEXT); glp->NormalPointerEXT = (void APIENTRY (*)(GLenum type, GLsizei stride, GLsizei count, const void *pointer)) ldg_find("glNormalPointerEXT", lib); GL_CHECK(glp->NormalPointerEXT); glp->TexCoordPointerEXT = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer)) ldg_find("glTexCoordPointerEXT", lib); GL_CHECK(glp->TexCoordPointerEXT); glp->VertexPointerEXT = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer)) ldg_find("glVertexPointerEXT", lib); GL_CHECK(glp->VertexPointerEXT); glp->BlendEquationEXT = (void APIENTRY (*)(GLenum mode)) ldg_find("glBlendEquationEXT", lib); GL_CHECK(glp->BlendEquationEXT); glp->SpriteParameterfSGIX = (void APIENTRY (*)(GLenum pname, GLfloat param)) ldg_find("glSpriteParameterfSGIX", lib); GL_CHECK(glp->SpriteParameterfSGIX); glp->SpriteParameterfvSGIX = (void APIENTRY (*)(GLenum pname, const GLfloat *params)) ldg_find("glSpriteParameterfvSGIX", lib); GL_CHECK(glp->SpriteParameterfvSGIX); glp->SpriteParameteriSGIX = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glSpriteParameteriSGIX", lib); GL_CHECK(glp->SpriteParameteriSGIX); glp->SpriteParameterivSGIX = (void APIENTRY (*)(GLenum pname, const GLint *params)) ldg_find("glSpriteParameterivSGIX", lib); GL_CHECK(glp->SpriteParameterivSGIX); glp->PointParameterfEXT = (void APIENTRY (*)(GLenum pname, GLfloat param)) ldg_find("glPointParameterfEXT", lib); GL_CHECK(glp->PointParameterfEXT); glp->PointParameterfvEXT = (void APIENTRY (*)(GLenum pname, const GLfloat *params)) ldg_find("glPointParameterfvEXT", lib); GL_CHECK(glp->PointParameterfvEXT); glp->PointParameterfSGIS = (void APIENTRY (*)(GLenum pname, GLfloat param)) ldg_find("glPointParameterfSGIS", lib); GL_CHECK(glp->PointParameterfSGIS); glp->PointParameterfvSGIS = (void APIENTRY (*)(GLenum pname, const GLfloat *params)) ldg_find("glPointParameterfvSGIS", lib); GL_CHECK(glp->PointParameterfvSGIS); glp->GetInstrumentsSGIX = (GLint APIENTRY (*)(void)) ldg_find("glGetInstrumentsSGIX", lib); GL_CHECK(glp->GetInstrumentsSGIX); glp->InstrumentsBufferSGIX = (void APIENTRY (*)(GLsizei size, GLint *buffer)) ldg_find("glInstrumentsBufferSGIX", lib); GL_CHECK(glp->InstrumentsBufferSGIX); glp->PollInstrumentsSGIX = (GLint APIENTRY (*)(GLint *marker_p)) ldg_find("glPollInstrumentsSGIX", lib); GL_CHECK(glp->PollInstrumentsSGIX); glp->ReadInstrumentsSGIX = (void APIENTRY (*)(GLint marker)) ldg_find("glReadInstrumentsSGIX", lib); GL_CHECK(glp->ReadInstrumentsSGIX); glp->StartInstrumentsSGIX = (void APIENTRY (*)(void)) ldg_find("glStartInstrumentsSGIX", lib); GL_CHECK(glp->StartInstrumentsSGIX); glp->StopInstrumentsSGIX = (void APIENTRY (*)(GLint marker)) ldg_find("glStopInstrumentsSGIX", lib); GL_CHECK(glp->StopInstrumentsSGIX); glp->FrameZoomSGIX = (void APIENTRY (*)(GLint factor)) ldg_find("glFrameZoomSGIX", lib); GL_CHECK(glp->FrameZoomSGIX); glp->TagSampleBufferSGIX = (void APIENTRY (*)(void)) ldg_find("glTagSampleBufferSGIX", lib); GL_CHECK(glp->TagSampleBufferSGIX); glp->DeformationMap3dSGIX = (void APIENTRY (*)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points)) ldg_find("glDeformationMap3dSGIX", lib); GL_CHECK(glp->DeformationMap3dSGIX); glp->DeformationMap3fSGIX = (void APIENTRY (*)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points)) ldg_find("glDeformationMap3fSGIX", lib); GL_CHECK(glp->DeformationMap3fSGIX); glp->DeformSGIX = (void APIENTRY (*)(GLbitfield mask)) ldg_find("glDeformSGIX", lib); GL_CHECK(glp->DeformSGIX); glp->LoadIdentityDeformationMapSGIX = (void APIENTRY (*)(GLbitfield mask)) ldg_find("glLoadIdentityDeformationMapSGIX", lib); GL_CHECK(glp->LoadIdentityDeformationMapSGIX); glp->ReferencePlaneSGIX = (void APIENTRY (*)(const GLdouble *equation)) ldg_find("glReferencePlaneSGIX", lib); GL_CHECK(glp->ReferencePlaneSGIX); glp->FlushRasterSGIX = (void APIENTRY (*)(void)) ldg_find("glFlushRasterSGIX", lib); GL_CHECK(glp->FlushRasterSGIX); glp->FogFuncSGIS = (void APIENTRY (*)(GLsizei n, const GLfloat *points)) ldg_find("glFogFuncSGIS", lib); GL_CHECK(glp->FogFuncSGIS); glp->GetFogFuncSGIS = (void APIENTRY (*)(GLfloat *points)) ldg_find("glGetFogFuncSGIS", lib); GL_CHECK(glp->GetFogFuncSGIS); glp->ImageTransformParameteriHP = (void APIENTRY (*)(GLenum target, GLenum pname, GLint param)) ldg_find("glImageTransformParameteriHP", lib); GL_CHECK(glp->ImageTransformParameteriHP); glp->ImageTransformParameterfHP = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat param)) ldg_find("glImageTransformParameterfHP", lib); GL_CHECK(glp->ImageTransformParameterfHP); glp->ImageTransformParameterivHP = (void APIENTRY (*)(GLenum target, GLenum pname, const GLint *params)) ldg_find("glImageTransformParameterivHP", lib); GL_CHECK(glp->ImageTransformParameterivHP); glp->ImageTransformParameterfvHP = (void APIENTRY (*)(GLenum target, GLenum pname, const GLfloat *params)) ldg_find("glImageTransformParameterfvHP", lib); GL_CHECK(glp->ImageTransformParameterfvHP); glp->GetImageTransformParameterivHP = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetImageTransformParameterivHP", lib); GL_CHECK(glp->GetImageTransformParameterivHP); glp->GetImageTransformParameterfvHP = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetImageTransformParameterfvHP", lib); GL_CHECK(glp->GetImageTransformParameterfvHP); glp->ColorSubTableEXT = (void APIENTRY (*)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data)) ldg_find("glColorSubTableEXT", lib); GL_CHECK(glp->ColorSubTableEXT); glp->CopyColorSubTableEXT = (void APIENTRY (*)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)) ldg_find("glCopyColorSubTableEXT", lib); GL_CHECK(glp->CopyColorSubTableEXT); glp->HintPGI = (void APIENTRY (*)(GLenum target, GLint mode)) ldg_find("glHintPGI", lib); GL_CHECK(glp->HintPGI); glp->ColorTableEXT = (void APIENTRY (*)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table)) ldg_find("glColorTableEXT", lib); GL_CHECK(glp->ColorTableEXT); glp->GetColorTableEXT = (void APIENTRY (*)(GLenum target, GLenum format, GLenum type, void *data)) ldg_find("glGetColorTableEXT", lib); GL_CHECK(glp->GetColorTableEXT); glp->GetColorTableParameterivEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetColorTableParameterivEXT", lib); GL_CHECK(glp->GetColorTableParameterivEXT); glp->GetColorTableParameterfvEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetColorTableParameterfvEXT", lib); GL_CHECK(glp->GetColorTableParameterfvEXT); glp->GetListParameterfvSGIX = (void APIENTRY (*)(GLuint list, GLenum pname, GLfloat *params)) ldg_find("glGetListParameterfvSGIX", lib); GL_CHECK(glp->GetListParameterfvSGIX); glp->GetListParameterivSGIX = (void APIENTRY (*)(GLuint list, GLenum pname, GLint *params)) ldg_find("glGetListParameterivSGIX", lib); GL_CHECK(glp->GetListParameterivSGIX); glp->ListParameterfSGIX = (void APIENTRY (*)(GLuint list, GLenum pname, GLfloat param)) ldg_find("glListParameterfSGIX", lib); GL_CHECK(glp->ListParameterfSGIX); glp->ListParameterfvSGIX = (void APIENTRY (*)(GLuint list, GLenum pname, const GLfloat *params)) ldg_find("glListParameterfvSGIX", lib); GL_CHECK(glp->ListParameterfvSGIX); glp->ListParameteriSGIX = (void APIENTRY (*)(GLuint list, GLenum pname, GLint param)) ldg_find("glListParameteriSGIX", lib); GL_CHECK(glp->ListParameteriSGIX); glp->ListParameterivSGIX = (void APIENTRY (*)(GLuint list, GLenum pname, const GLint *params)) ldg_find("glListParameterivSGIX", lib); GL_CHECK(glp->ListParameterivSGIX); glp->IndexMaterialEXT = (void APIENTRY (*)(GLenum face, GLenum mode)) ldg_find("glIndexMaterialEXT", lib); GL_CHECK(glp->IndexMaterialEXT); glp->IndexFuncEXT = (void APIENTRY (*)(GLenum func, GLclampf ref)) ldg_find("glIndexFuncEXT", lib); GL_CHECK(glp->IndexFuncEXT); glp->LockArraysEXT = (void APIENTRY (*)(GLint first, GLsizei count)) ldg_find("glLockArraysEXT", lib); GL_CHECK(glp->LockArraysEXT); glp->UnlockArraysEXT = (void APIENTRY (*)(void)) ldg_find("glUnlockArraysEXT", lib); GL_CHECK(glp->UnlockArraysEXT); glp->CullParameterdvEXT = (void APIENTRY (*)(GLenum pname, GLdouble *params)) ldg_find("glCullParameterdvEXT", lib); GL_CHECK(glp->CullParameterdvEXT); glp->CullParameterfvEXT = (void APIENTRY (*)(GLenum pname, GLfloat *params)) ldg_find("glCullParameterfvEXT", lib); GL_CHECK(glp->CullParameterfvEXT); glp->FragmentColorMaterialSGIX = (void APIENTRY (*)(GLenum face, GLenum mode)) ldg_find("glFragmentColorMaterialSGIX", lib); GL_CHECK(glp->FragmentColorMaterialSGIX); glp->FragmentLightfSGIX = (void APIENTRY (*)(GLenum light, GLenum pname, GLfloat param)) ldg_find("glFragmentLightfSGIX", lib); GL_CHECK(glp->FragmentLightfSGIX); glp->FragmentLightfvSGIX = (void APIENTRY (*)(GLenum light, GLenum pname, const GLfloat *params)) ldg_find("glFragmentLightfvSGIX", lib); GL_CHECK(glp->FragmentLightfvSGIX); glp->FragmentLightiSGIX = (void APIENTRY (*)(GLenum light, GLenum pname, GLint param)) ldg_find("glFragmentLightiSGIX", lib); GL_CHECK(glp->FragmentLightiSGIX); glp->FragmentLightivSGIX = (void APIENTRY (*)(GLenum light, GLenum pname, const GLint *params)) ldg_find("glFragmentLightivSGIX", lib); GL_CHECK(glp->FragmentLightivSGIX); glp->FragmentLightModelfSGIX = (void APIENTRY (*)(GLenum pname, GLfloat param)) ldg_find("glFragmentLightModelfSGIX", lib); GL_CHECK(glp->FragmentLightModelfSGIX); glp->FragmentLightModelfvSGIX = (void APIENTRY (*)(GLenum pname, const GLfloat *params)) ldg_find("glFragmentLightModelfvSGIX", lib); GL_CHECK(glp->FragmentLightModelfvSGIX); glp->FragmentLightModeliSGIX = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glFragmentLightModeliSGIX", lib); GL_CHECK(glp->FragmentLightModeliSGIX); glp->FragmentLightModelivSGIX = (void APIENTRY (*)(GLenum pname, const GLint *params)) ldg_find("glFragmentLightModelivSGIX", lib); GL_CHECK(glp->FragmentLightModelivSGIX); glp->FragmentMaterialfSGIX = (void APIENTRY (*)(GLenum face, GLenum pname, GLfloat param)) ldg_find("glFragmentMaterialfSGIX", lib); GL_CHECK(glp->FragmentMaterialfSGIX); glp->FragmentMaterialfvSGIX = (void APIENTRY (*)(GLenum face, GLenum pname, const GLfloat *params)) ldg_find("glFragmentMaterialfvSGIX", lib); GL_CHECK(glp->FragmentMaterialfvSGIX); glp->FragmentMaterialiSGIX = (void APIENTRY (*)(GLenum face, GLenum pname, GLint param)) ldg_find("glFragmentMaterialiSGIX", lib); GL_CHECK(glp->FragmentMaterialiSGIX); glp->FragmentMaterialivSGIX = (void APIENTRY (*)(GLenum face, GLenum pname, const GLint *params)) ldg_find("glFragmentMaterialivSGIX", lib); GL_CHECK(glp->FragmentMaterialivSGIX); glp->GetFragmentLightfvSGIX = (void APIENTRY (*)(GLenum light, GLenum pname, GLfloat *params)) ldg_find("glGetFragmentLightfvSGIX", lib); GL_CHECK(glp->GetFragmentLightfvSGIX); glp->GetFragmentLightivSGIX = (void APIENTRY (*)(GLenum light, GLenum pname, GLint *params)) ldg_find("glGetFragmentLightivSGIX", lib); GL_CHECK(glp->GetFragmentLightivSGIX); glp->GetFragmentMaterialfvSGIX = (void APIENTRY (*)(GLenum face, GLenum pname, GLfloat *params)) ldg_find("glGetFragmentMaterialfvSGIX", lib); GL_CHECK(glp->GetFragmentMaterialfvSGIX); glp->GetFragmentMaterialivSGIX = (void APIENTRY (*)(GLenum face, GLenum pname, GLint *params)) ldg_find("glGetFragmentMaterialivSGIX", lib); GL_CHECK(glp->GetFragmentMaterialivSGIX); glp->LightEnviSGIX = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glLightEnviSGIX", lib); GL_CHECK(glp->LightEnviSGIX); glp->DrawRangeElementsEXT = (void APIENTRY (*)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices)) ldg_find("glDrawRangeElementsEXT", lib); GL_CHECK(glp->DrawRangeElementsEXT); glp->ApplyTextureEXT = (void APIENTRY (*)(GLenum mode)) ldg_find("glApplyTextureEXT", lib); GL_CHECK(glp->ApplyTextureEXT); glp->TextureLightEXT = (void APIENTRY (*)(GLenum pname)) ldg_find("glTextureLightEXT", lib); GL_CHECK(glp->TextureLightEXT); glp->TextureMaterialEXT = (void APIENTRY (*)(GLenum face, GLenum mode)) ldg_find("glTextureMaterialEXT", lib); GL_CHECK(glp->TextureMaterialEXT); glp->AsyncMarkerSGIX = (void APIENTRY (*)(GLuint marker)) ldg_find("glAsyncMarkerSGIX", lib); GL_CHECK(glp->AsyncMarkerSGIX); glp->FinishAsyncSGIX = (GLint APIENTRY (*)(GLuint *markerp)) ldg_find("glFinishAsyncSGIX", lib); GL_CHECK(glp->FinishAsyncSGIX); glp->PollAsyncSGIX = (GLint APIENTRY (*)(GLuint *markerp)) ldg_find("glPollAsyncSGIX", lib); GL_CHECK(glp->PollAsyncSGIX); glp->GenAsyncMarkersSGIX = (GLuint APIENTRY (*)(GLsizei range)) ldg_find("glGenAsyncMarkersSGIX", lib); GL_CHECK(glp->GenAsyncMarkersSGIX); glp->DeleteAsyncMarkersSGIX = (void APIENTRY (*)(GLuint marker, GLsizei range)) ldg_find("glDeleteAsyncMarkersSGIX", lib); GL_CHECK(glp->DeleteAsyncMarkersSGIX); glp->IsAsyncMarkerSGIX = (GLboolean APIENTRY (*)(GLuint marker)) ldg_find("glIsAsyncMarkerSGIX", lib); GL_CHECK(glp->IsAsyncMarkerSGIX); glp->VertexPointervINTEL = (void APIENTRY (*)(GLint size, GLenum type, const void * *pointer)) ldg_find("glVertexPointervINTEL", lib); GL_CHECK(glp->VertexPointervINTEL); glp->NormalPointervINTEL = (void APIENTRY (*)(GLenum type, const void * *pointer)) ldg_find("glNormalPointervINTEL", lib); GL_CHECK(glp->NormalPointervINTEL); glp->ColorPointervINTEL = (void APIENTRY (*)(GLint size, GLenum type, const void * *pointer)) ldg_find("glColorPointervINTEL", lib); GL_CHECK(glp->ColorPointervINTEL); glp->TexCoordPointervINTEL = (void APIENTRY (*)(GLint size, GLenum type, const void * *pointer)) ldg_find("glTexCoordPointervINTEL", lib); GL_CHECK(glp->TexCoordPointervINTEL); glp->PixelTransformParameteriEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLint param)) ldg_find("glPixelTransformParameteriEXT", lib); GL_CHECK(glp->PixelTransformParameteriEXT); glp->PixelTransformParameterfEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat param)) ldg_find("glPixelTransformParameterfEXT", lib); GL_CHECK(glp->PixelTransformParameterfEXT); glp->PixelTransformParameterivEXT = (void APIENTRY (*)(GLenum target, GLenum pname, const GLint *params)) ldg_find("glPixelTransformParameterivEXT", lib); GL_CHECK(glp->PixelTransformParameterivEXT); glp->PixelTransformParameterfvEXT = (void APIENTRY (*)(GLenum target, GLenum pname, const GLfloat *params)) ldg_find("glPixelTransformParameterfvEXT", lib); GL_CHECK(glp->PixelTransformParameterfvEXT); glp->SecondaryColor3bEXT = (void APIENTRY (*)(GLbyte32 red, GLbyte32 green, GLbyte32 blue)) ldg_find("glSecondaryColor3bEXT", lib); GL_CHECK(glp->SecondaryColor3bEXT); glp->SecondaryColor3bvEXT = (void APIENTRY (*)(const GLbyte *v)) ldg_find("glSecondaryColor3bvEXT", lib); GL_CHECK(glp->SecondaryColor3bvEXT); glp->SecondaryColor3dEXT = (void APIENTRY (*)(GLdouble red, GLdouble green, GLdouble blue)) ldg_find("glSecondaryColor3dEXT", lib); GL_CHECK(glp->SecondaryColor3dEXT); glp->SecondaryColor3dvEXT = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glSecondaryColor3dvEXT", lib); GL_CHECK(glp->SecondaryColor3dvEXT); glp->SecondaryColor3fEXT = (void APIENTRY (*)(GLfloat red, GLfloat green, GLfloat blue)) ldg_find("glSecondaryColor3fEXT", lib); GL_CHECK(glp->SecondaryColor3fEXT); glp->SecondaryColor3fvEXT = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glSecondaryColor3fvEXT", lib); GL_CHECK(glp->SecondaryColor3fvEXT); glp->SecondaryColor3iEXT = (void APIENTRY (*)(GLint red, GLint green, GLint blue)) ldg_find("glSecondaryColor3iEXT", lib); GL_CHECK(glp->SecondaryColor3iEXT); glp->SecondaryColor3ivEXT = (void APIENTRY (*)(const GLint *v)) ldg_find("glSecondaryColor3ivEXT", lib); GL_CHECK(glp->SecondaryColor3ivEXT); glp->SecondaryColor3sEXT = (void APIENTRY (*)(GLshort32 red, GLshort32 green, GLshort32 blue)) ldg_find("glSecondaryColor3sEXT", lib); GL_CHECK(glp->SecondaryColor3sEXT); glp->SecondaryColor3svEXT = (void APIENTRY (*)(const GLshort *v)) ldg_find("glSecondaryColor3svEXT", lib); GL_CHECK(glp->SecondaryColor3svEXT); glp->SecondaryColor3ubEXT = (void APIENTRY (*)(GLubyte32 red, GLubyte32 green, GLubyte32 blue)) ldg_find("glSecondaryColor3ubEXT", lib); GL_CHECK(glp->SecondaryColor3ubEXT); glp->SecondaryColor3ubvEXT = (void APIENTRY (*)(const GLubyte *v)) ldg_find("glSecondaryColor3ubvEXT", lib); GL_CHECK(glp->SecondaryColor3ubvEXT); glp->SecondaryColor3uiEXT = (void APIENTRY (*)(GLuint red, GLuint green, GLuint blue)) ldg_find("glSecondaryColor3uiEXT", lib); GL_CHECK(glp->SecondaryColor3uiEXT); glp->SecondaryColor3uivEXT = (void APIENTRY (*)(const GLuint *v)) ldg_find("glSecondaryColor3uivEXT", lib); GL_CHECK(glp->SecondaryColor3uivEXT); glp->SecondaryColor3usEXT = (void APIENTRY (*)(GLushort32 red, GLushort32 green, GLushort32 blue)) ldg_find("glSecondaryColor3usEXT", lib); GL_CHECK(glp->SecondaryColor3usEXT); glp->SecondaryColor3usvEXT = (void APIENTRY (*)(const GLushort *v)) ldg_find("glSecondaryColor3usvEXT", lib); GL_CHECK(glp->SecondaryColor3usvEXT); glp->SecondaryColorPointerEXT = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride, const void *pointer)) ldg_find("glSecondaryColorPointerEXT", lib); GL_CHECK(glp->SecondaryColorPointerEXT); glp->TextureNormalEXT = (void APIENTRY (*)(GLenum mode)) ldg_find("glTextureNormalEXT", lib); GL_CHECK(glp->TextureNormalEXT); glp->MultiDrawArraysEXT = (void APIENTRY (*)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount)) ldg_find("glMultiDrawArraysEXT", lib); GL_CHECK(glp->MultiDrawArraysEXT); glp->MultiDrawElementsEXT = (void APIENTRY (*)(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount)) ldg_find("glMultiDrawElementsEXT", lib); GL_CHECK(glp->MultiDrawElementsEXT); glp->FogCoordfEXT = (void APIENTRY (*)(GLfloat coord)) ldg_find("glFogCoordfEXT", lib); GL_CHECK(glp->FogCoordfEXT); glp->FogCoordfvEXT = (void APIENTRY (*)(const GLfloat *coord)) ldg_find("glFogCoordfvEXT", lib); GL_CHECK(glp->FogCoordfvEXT); glp->FogCoorddEXT = (void APIENTRY (*)(GLdouble coord)) ldg_find("glFogCoorddEXT", lib); GL_CHECK(glp->FogCoorddEXT); glp->FogCoorddvEXT = (void APIENTRY (*)(const GLdouble *coord)) ldg_find("glFogCoorddvEXT", lib); GL_CHECK(glp->FogCoorddvEXT); glp->FogCoordPointerEXT = (void APIENTRY (*)(GLenum type, GLsizei stride, const void *pointer)) ldg_find("glFogCoordPointerEXT", lib); GL_CHECK(glp->FogCoordPointerEXT); glp->Tangent3bEXT = (void APIENTRY (*)(GLbyte32 tx, GLbyte32 ty, GLbyte32 tz)) ldg_find("glTangent3bEXT", lib); GL_CHECK(glp->Tangent3bEXT); glp->Tangent3bvEXT = (void APIENTRY (*)(const GLbyte *v)) ldg_find("glTangent3bvEXT", lib); GL_CHECK(glp->Tangent3bvEXT); glp->Tangent3dEXT = (void APIENTRY (*)(GLdouble tx, GLdouble ty, GLdouble tz)) ldg_find("glTangent3dEXT", lib); GL_CHECK(glp->Tangent3dEXT); glp->Tangent3dvEXT = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glTangent3dvEXT", lib); GL_CHECK(glp->Tangent3dvEXT); glp->Tangent3fEXT = (void APIENTRY (*)(GLfloat tx, GLfloat ty, GLfloat tz)) ldg_find("glTangent3fEXT", lib); GL_CHECK(glp->Tangent3fEXT); glp->Tangent3fvEXT = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glTangent3fvEXT", lib); GL_CHECK(glp->Tangent3fvEXT); glp->Tangent3iEXT = (void APIENTRY (*)(GLint tx, GLint ty, GLint tz)) ldg_find("glTangent3iEXT", lib); GL_CHECK(glp->Tangent3iEXT); glp->Tangent3ivEXT = (void APIENTRY (*)(const GLint *v)) ldg_find("glTangent3ivEXT", lib); GL_CHECK(glp->Tangent3ivEXT); glp->Tangent3sEXT = (void APIENTRY (*)(GLshort32 tx, GLshort32 ty, GLshort32 tz)) ldg_find("glTangent3sEXT", lib); GL_CHECK(glp->Tangent3sEXT); glp->Tangent3svEXT = (void APIENTRY (*)(const GLshort *v)) ldg_find("glTangent3svEXT", lib); GL_CHECK(glp->Tangent3svEXT); glp->Binormal3bEXT = (void APIENTRY (*)(GLbyte32 bx, GLbyte32 by, GLbyte32 bz)) ldg_find("glBinormal3bEXT", lib); GL_CHECK(glp->Binormal3bEXT); glp->Binormal3bvEXT = (void APIENTRY (*)(const GLbyte *v)) ldg_find("glBinormal3bvEXT", lib); GL_CHECK(glp->Binormal3bvEXT); glp->Binormal3dEXT = (void APIENTRY (*)(GLdouble bx, GLdouble by, GLdouble bz)) ldg_find("glBinormal3dEXT", lib); GL_CHECK(glp->Binormal3dEXT); glp->Binormal3dvEXT = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glBinormal3dvEXT", lib); GL_CHECK(glp->Binormal3dvEXT); glp->Binormal3fEXT = (void APIENTRY (*)(GLfloat bx, GLfloat by, GLfloat bz)) ldg_find("glBinormal3fEXT", lib); GL_CHECK(glp->Binormal3fEXT); glp->Binormal3fvEXT = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glBinormal3fvEXT", lib); GL_CHECK(glp->Binormal3fvEXT); glp->Binormal3iEXT = (void APIENTRY (*)(GLint bx, GLint by, GLint bz)) ldg_find("glBinormal3iEXT", lib); GL_CHECK(glp->Binormal3iEXT); glp->Binormal3ivEXT = (void APIENTRY (*)(const GLint *v)) ldg_find("glBinormal3ivEXT", lib); GL_CHECK(glp->Binormal3ivEXT); glp->Binormal3sEXT = (void APIENTRY (*)(GLshort32 bx, GLshort32 by, GLshort32 bz)) ldg_find("glBinormal3sEXT", lib); GL_CHECK(glp->Binormal3sEXT); glp->Binormal3svEXT = (void APIENTRY (*)(const GLshort *v)) ldg_find("glBinormal3svEXT", lib); GL_CHECK(glp->Binormal3svEXT); glp->TangentPointerEXT = (void APIENTRY (*)(GLenum type, GLsizei stride, const void *pointer)) ldg_find("glTangentPointerEXT", lib); GL_CHECK(glp->TangentPointerEXT); glp->BinormalPointerEXT = (void APIENTRY (*)(GLenum type, GLsizei stride, const void *pointer)) ldg_find("glBinormalPointerEXT", lib); GL_CHECK(glp->BinormalPointerEXT); glp->FinishTextureSUNX = (void APIENTRY (*)(void)) ldg_find("glFinishTextureSUNX", lib); GL_CHECK(glp->FinishTextureSUNX); glp->GlobalAlphaFactorbSUN = (void APIENTRY (*)(GLbyte32 factor)) ldg_find("glGlobalAlphaFactorbSUN", lib); GL_CHECK(glp->GlobalAlphaFactorbSUN); glp->GlobalAlphaFactorsSUN = (void APIENTRY (*)(GLshort32 factor)) ldg_find("glGlobalAlphaFactorsSUN", lib); GL_CHECK(glp->GlobalAlphaFactorsSUN); glp->GlobalAlphaFactoriSUN = (void APIENTRY (*)(GLint factor)) ldg_find("glGlobalAlphaFactoriSUN", lib); GL_CHECK(glp->GlobalAlphaFactoriSUN); glp->GlobalAlphaFactorfSUN = (void APIENTRY (*)(GLfloat factor)) ldg_find("glGlobalAlphaFactorfSUN", lib); GL_CHECK(glp->GlobalAlphaFactorfSUN); glp->GlobalAlphaFactordSUN = (void APIENTRY (*)(GLdouble factor)) ldg_find("glGlobalAlphaFactordSUN", lib); GL_CHECK(glp->GlobalAlphaFactordSUN); glp->GlobalAlphaFactorubSUN = (void APIENTRY (*)(GLubyte32 factor)) ldg_find("glGlobalAlphaFactorubSUN", lib); GL_CHECK(glp->GlobalAlphaFactorubSUN); glp->GlobalAlphaFactorusSUN = (void APIENTRY (*)(GLushort32 factor)) ldg_find("glGlobalAlphaFactorusSUN", lib); GL_CHECK(glp->GlobalAlphaFactorusSUN); glp->GlobalAlphaFactoruiSUN = (void APIENTRY (*)(GLuint factor)) ldg_find("glGlobalAlphaFactoruiSUN", lib); GL_CHECK(glp->GlobalAlphaFactoruiSUN); glp->ReplacementCodeuiSUN = (void APIENTRY (*)(GLuint code)) ldg_find("glReplacementCodeuiSUN", lib); GL_CHECK(glp->ReplacementCodeuiSUN); glp->ReplacementCodeusSUN = (void APIENTRY (*)(GLushort32 code)) ldg_find("glReplacementCodeusSUN", lib); GL_CHECK(glp->ReplacementCodeusSUN); glp->ReplacementCodeubSUN = (void APIENTRY (*)(GLubyte32 code)) ldg_find("glReplacementCodeubSUN", lib); GL_CHECK(glp->ReplacementCodeubSUN); glp->ReplacementCodeuivSUN = (void APIENTRY (*)(const GLuint *code)) ldg_find("glReplacementCodeuivSUN", lib); GL_CHECK(glp->ReplacementCodeuivSUN); glp->ReplacementCodeusvSUN = (void APIENTRY (*)(const GLushort *code)) ldg_find("glReplacementCodeusvSUN", lib); GL_CHECK(glp->ReplacementCodeusvSUN); glp->ReplacementCodeubvSUN = (void APIENTRY (*)(const GLubyte *code)) ldg_find("glReplacementCodeubvSUN", lib); GL_CHECK(glp->ReplacementCodeubvSUN); glp->ReplacementCodePointerSUN = (void APIENTRY (*)(GLenum type, GLsizei stride, const void * *pointer)) ldg_find("glReplacementCodePointerSUN", lib); GL_CHECK(glp->ReplacementCodePointerSUN); glp->Color4ubVertex2fSUN = (void APIENTRY (*)(GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y)) ldg_find("glColor4ubVertex2fSUN", lib); GL_CHECK(glp->Color4ubVertex2fSUN); glp->Color4ubVertex2fvSUN = (void APIENTRY (*)(const GLubyte *c, const GLfloat *v)) ldg_find("glColor4ubVertex2fvSUN", lib); GL_CHECK(glp->Color4ubVertex2fvSUN); glp->Color4ubVertex3fSUN = (void APIENTRY (*)(GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glColor4ubVertex3fSUN", lib); GL_CHECK(glp->Color4ubVertex3fSUN); glp->Color4ubVertex3fvSUN = (void APIENTRY (*)(const GLubyte *c, const GLfloat *v)) ldg_find("glColor4ubVertex3fvSUN", lib); GL_CHECK(glp->Color4ubVertex3fvSUN); glp->Color3fVertex3fSUN = (void APIENTRY (*)(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glColor3fVertex3fSUN", lib); GL_CHECK(glp->Color3fVertex3fSUN); glp->Color3fVertex3fvSUN = (void APIENTRY (*)(const GLfloat *c, const GLfloat *v)) ldg_find("glColor3fVertex3fvSUN", lib); GL_CHECK(glp->Color3fVertex3fvSUN); glp->Normal3fVertex3fSUN = (void APIENTRY (*)(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glNormal3fVertex3fSUN", lib); GL_CHECK(glp->Normal3fVertex3fSUN); glp->Normal3fVertex3fvSUN = (void APIENTRY (*)(const GLfloat *n, const GLfloat *v)) ldg_find("glNormal3fVertex3fvSUN", lib); GL_CHECK(glp->Normal3fVertex3fvSUN); glp->Color4fNormal3fVertex3fSUN = (void APIENTRY (*)(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glColor4fNormal3fVertex3fSUN", lib); GL_CHECK(glp->Color4fNormal3fVertex3fSUN); glp->Color4fNormal3fVertex3fvSUN = (void APIENTRY (*)(const GLfloat *c, const GLfloat *n, const GLfloat *v)) ldg_find("glColor4fNormal3fVertex3fvSUN", lib); GL_CHECK(glp->Color4fNormal3fVertex3fvSUN); glp->TexCoord2fVertex3fSUN = (void APIENTRY (*)(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glTexCoord2fVertex3fSUN", lib); GL_CHECK(glp->TexCoord2fVertex3fSUN); glp->TexCoord2fVertex3fvSUN = (void APIENTRY (*)(const GLfloat *tc, const GLfloat *v)) ldg_find("glTexCoord2fVertex3fvSUN", lib); GL_CHECK(glp->TexCoord2fVertex3fvSUN); glp->TexCoord4fVertex4fSUN = (void APIENTRY (*)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glTexCoord4fVertex4fSUN", lib); GL_CHECK(glp->TexCoord4fVertex4fSUN); glp->TexCoord4fVertex4fvSUN = (void APIENTRY (*)(const GLfloat *tc, const GLfloat *v)) ldg_find("glTexCoord4fVertex4fvSUN", lib); GL_CHECK(glp->TexCoord4fVertex4fvSUN); glp->TexCoord2fColor4ubVertex3fSUN = (void APIENTRY (*)(GLfloat s, GLfloat t, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glTexCoord2fColor4ubVertex3fSUN", lib); GL_CHECK(glp->TexCoord2fColor4ubVertex3fSUN); glp->TexCoord2fColor4ubVertex3fvSUN = (void APIENTRY (*)(const GLfloat *tc, const GLubyte *c, const GLfloat *v)) ldg_find("glTexCoord2fColor4ubVertex3fvSUN", lib); GL_CHECK(glp->TexCoord2fColor4ubVertex3fvSUN); glp->TexCoord2fColor3fVertex3fSUN = (void APIENTRY (*)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glTexCoord2fColor3fVertex3fSUN", lib); GL_CHECK(glp->TexCoord2fColor3fVertex3fSUN); glp->TexCoord2fColor3fVertex3fvSUN = (void APIENTRY (*)(const GLfloat *tc, const GLfloat *c, const GLfloat *v)) ldg_find("glTexCoord2fColor3fVertex3fvSUN", lib); GL_CHECK(glp->TexCoord2fColor3fVertex3fvSUN); glp->TexCoord2fNormal3fVertex3fSUN = (void APIENTRY (*)(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glTexCoord2fNormal3fVertex3fSUN", lib); GL_CHECK(glp->TexCoord2fNormal3fVertex3fSUN); glp->TexCoord2fNormal3fVertex3fvSUN = (void APIENTRY (*)(const GLfloat *tc, const GLfloat *n, const GLfloat *v)) ldg_find("glTexCoord2fNormal3fVertex3fvSUN", lib); GL_CHECK(glp->TexCoord2fNormal3fVertex3fvSUN); glp->TexCoord2fColor4fNormal3fVertex3fSUN = (void APIENTRY (*)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glTexCoord2fColor4fNormal3fVertex3fSUN", lib); GL_CHECK(glp->TexCoord2fColor4fNormal3fVertex3fSUN); glp->TexCoord2fColor4fNormal3fVertex3fvSUN = (void APIENTRY (*)(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v)) ldg_find("glTexCoord2fColor4fNormal3fVertex3fvSUN", lib); GL_CHECK(glp->TexCoord2fColor4fNormal3fVertex3fvSUN); glp->TexCoord4fColor4fNormal3fVertex4fSUN = (void APIENTRY (*)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glTexCoord4fColor4fNormal3fVertex4fSUN", lib); GL_CHECK(glp->TexCoord4fColor4fNormal3fVertex4fSUN); glp->TexCoord4fColor4fNormal3fVertex4fvSUN = (void APIENTRY (*)(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v)) ldg_find("glTexCoord4fColor4fNormal3fVertex4fvSUN", lib); GL_CHECK(glp->TexCoord4fColor4fNormal3fVertex4fvSUN); glp->ReplacementCodeuiVertex3fSUN = (void APIENTRY (*)(GLuint rc, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glReplacementCodeuiVertex3fSUN", lib); GL_CHECK(glp->ReplacementCodeuiVertex3fSUN); glp->ReplacementCodeuiVertex3fvSUN = (void APIENTRY (*)(const GLuint *rc, const GLfloat *v)) ldg_find("glReplacementCodeuiVertex3fvSUN", lib); GL_CHECK(glp->ReplacementCodeuiVertex3fvSUN); glp->ReplacementCodeuiColor4ubVertex3fSUN = (void APIENTRY (*)(GLuint rc, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glReplacementCodeuiColor4ubVertex3fSUN", lib); GL_CHECK(glp->ReplacementCodeuiColor4ubVertex3fSUN); glp->ReplacementCodeuiColor4ubVertex3fvSUN = (void APIENTRY (*)(const GLuint *rc, const GLubyte *c, const GLfloat *v)) ldg_find("glReplacementCodeuiColor4ubVertex3fvSUN", lib); GL_CHECK(glp->ReplacementCodeuiColor4ubVertex3fvSUN); glp->ReplacementCodeuiColor3fVertex3fSUN = (void APIENTRY (*)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glReplacementCodeuiColor3fVertex3fSUN", lib); GL_CHECK(glp->ReplacementCodeuiColor3fVertex3fSUN); glp->ReplacementCodeuiColor3fVertex3fvSUN = (void APIENTRY (*)(const GLuint *rc, const GLfloat *c, const GLfloat *v)) ldg_find("glReplacementCodeuiColor3fVertex3fvSUN", lib); GL_CHECK(glp->ReplacementCodeuiColor3fVertex3fvSUN); glp->ReplacementCodeuiNormal3fVertex3fSUN = (void APIENTRY (*)(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glReplacementCodeuiNormal3fVertex3fSUN", lib); GL_CHECK(glp->ReplacementCodeuiNormal3fVertex3fSUN); glp->ReplacementCodeuiNormal3fVertex3fvSUN = (void APIENTRY (*)(const GLuint *rc, const GLfloat *n, const GLfloat *v)) ldg_find("glReplacementCodeuiNormal3fVertex3fvSUN", lib); GL_CHECK(glp->ReplacementCodeuiNormal3fVertex3fvSUN); glp->ReplacementCodeuiColor4fNormal3fVertex3fSUN = (void APIENTRY (*)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glReplacementCodeuiColor4fNormal3fVertex3fSUN", lib); GL_CHECK(glp->ReplacementCodeuiColor4fNormal3fVertex3fSUN); glp->ReplacementCodeuiColor4fNormal3fVertex3fvSUN = (void APIENTRY (*)(const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v)) ldg_find("glReplacementCodeuiColor4fNormal3fVertex3fvSUN", lib); GL_CHECK(glp->ReplacementCodeuiColor4fNormal3fVertex3fvSUN); glp->ReplacementCodeuiTexCoord2fVertex3fSUN = (void APIENTRY (*)(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glReplacementCodeuiTexCoord2fVertex3fSUN", lib); GL_CHECK(glp->ReplacementCodeuiTexCoord2fVertex3fSUN); glp->ReplacementCodeuiTexCoord2fVertex3fvSUN = (void APIENTRY (*)(const GLuint *rc, const GLfloat *tc, const GLfloat *v)) ldg_find("glReplacementCodeuiTexCoord2fVertex3fvSUN", lib); GL_CHECK(glp->ReplacementCodeuiTexCoord2fVertex3fvSUN); glp->ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = (void APIENTRY (*)(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN", lib); GL_CHECK(glp->ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN); glp->ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = (void APIENTRY (*)(const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v)) ldg_find("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN", lib); GL_CHECK(glp->ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN); glp->ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = (void APIENTRY (*)(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN", lib); GL_CHECK(glp->ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN); glp->ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = (void APIENTRY (*)(const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v)) ldg_find("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN", lib); GL_CHECK(glp->ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN); glp->BlendFuncSeparateEXT = (void APIENTRY (*)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)) ldg_find("glBlendFuncSeparateEXT", lib); GL_CHECK(glp->BlendFuncSeparateEXT); glp->BlendFuncSeparateINGR = (void APIENTRY (*)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)) ldg_find("glBlendFuncSeparateINGR", lib); GL_CHECK(glp->BlendFuncSeparateINGR); glp->VertexWeightfEXT = (void APIENTRY (*)(GLfloat weight)) ldg_find("glVertexWeightfEXT", lib); GL_CHECK(glp->VertexWeightfEXT); glp->VertexWeightfvEXT = (void APIENTRY (*)(const GLfloat *weight)) ldg_find("glVertexWeightfvEXT", lib); GL_CHECK(glp->VertexWeightfvEXT); glp->VertexWeightPointerEXT = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride, const void *pointer)) ldg_find("glVertexWeightPointerEXT", lib); GL_CHECK(glp->VertexWeightPointerEXT); glp->FlushVertexArrayRangeNV = (void APIENTRY (*)(void)) ldg_find("glFlushVertexArrayRangeNV", lib); GL_CHECK(glp->FlushVertexArrayRangeNV); glp->VertexArrayRangeNV = (void APIENTRY (*)(GLsizei length, const void *pointer)) ldg_find("glVertexArrayRangeNV", lib); GL_CHECK(glp->VertexArrayRangeNV); glp->CombinerParameterfvNV = (void APIENTRY (*)(GLenum pname, const GLfloat *params)) ldg_find("glCombinerParameterfvNV", lib); GL_CHECK(glp->CombinerParameterfvNV); glp->CombinerParameterfNV = (void APIENTRY (*)(GLenum pname, GLfloat param)) ldg_find("glCombinerParameterfNV", lib); GL_CHECK(glp->CombinerParameterfNV); glp->CombinerParameterivNV = (void APIENTRY (*)(GLenum pname, const GLint *params)) ldg_find("glCombinerParameterivNV", lib); GL_CHECK(glp->CombinerParameterivNV); glp->CombinerParameteriNV = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glCombinerParameteriNV", lib); GL_CHECK(glp->CombinerParameteriNV); glp->CombinerInputNV = (void APIENTRY (*)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)) ldg_find("glCombinerInputNV", lib); GL_CHECK(glp->CombinerInputNV); glp->CombinerOutputNV = (void APIENTRY (*)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean32 abDotProduct, GLboolean32 cdDotProduct, GLboolean32 muxSum)) ldg_find("glCombinerOutputNV", lib); GL_CHECK(glp->CombinerOutputNV); glp->FinalCombinerInputNV = (void APIENTRY (*)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)) ldg_find("glFinalCombinerInputNV", lib); GL_CHECK(glp->FinalCombinerInputNV); glp->GetCombinerInputParameterfvNV = (void APIENTRY (*)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params)) ldg_find("glGetCombinerInputParameterfvNV", lib); GL_CHECK(glp->GetCombinerInputParameterfvNV); glp->GetCombinerInputParameterivNV = (void APIENTRY (*)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params)) ldg_find("glGetCombinerInputParameterivNV", lib); GL_CHECK(glp->GetCombinerInputParameterivNV); glp->GetCombinerOutputParameterfvNV = (void APIENTRY (*)(GLenum stage, GLenum portion, GLenum pname, GLfloat *params)) ldg_find("glGetCombinerOutputParameterfvNV", lib); GL_CHECK(glp->GetCombinerOutputParameterfvNV); glp->GetCombinerOutputParameterivNV = (void APIENTRY (*)(GLenum stage, GLenum portion, GLenum pname, GLint *params)) ldg_find("glGetCombinerOutputParameterivNV", lib); GL_CHECK(glp->GetCombinerOutputParameterivNV); glp->GetFinalCombinerInputParameterfvNV = (void APIENTRY (*)(GLenum variable, GLenum pname, GLfloat *params)) ldg_find("glGetFinalCombinerInputParameterfvNV", lib); GL_CHECK(glp->GetFinalCombinerInputParameterfvNV); glp->GetFinalCombinerInputParameterivNV = (void APIENTRY (*)(GLenum variable, GLenum pname, GLint *params)) ldg_find("glGetFinalCombinerInputParameterivNV", lib); GL_CHECK(glp->GetFinalCombinerInputParameterivNV); glp->ResizeBuffersMESA = (void APIENTRY (*)(void)) ldg_find("glResizeBuffersMESA", lib); GL_CHECK(glp->ResizeBuffersMESA); glp->WindowPos2dMESA = (void APIENTRY (*)(GLdouble x, GLdouble y)) ldg_find("glWindowPos2dMESA", lib); GL_CHECK(glp->WindowPos2dMESA); glp->WindowPos2dvMESA = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glWindowPos2dvMESA", lib); GL_CHECK(glp->WindowPos2dvMESA); glp->WindowPos2fMESA = (void APIENTRY (*)(GLfloat x, GLfloat y)) ldg_find("glWindowPos2fMESA", lib); GL_CHECK(glp->WindowPos2fMESA); glp->WindowPos2fvMESA = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glWindowPos2fvMESA", lib); GL_CHECK(glp->WindowPos2fvMESA); glp->WindowPos2iMESA = (void APIENTRY (*)(GLint x, GLint y)) ldg_find("glWindowPos2iMESA", lib); GL_CHECK(glp->WindowPos2iMESA); glp->WindowPos2ivMESA = (void APIENTRY (*)(const GLint *v)) ldg_find("glWindowPos2ivMESA", lib); GL_CHECK(glp->WindowPos2ivMESA); glp->WindowPos2sMESA = (void APIENTRY (*)(GLshort32 x, GLshort32 y)) ldg_find("glWindowPos2sMESA", lib); GL_CHECK(glp->WindowPos2sMESA); glp->WindowPos2svMESA = (void APIENTRY (*)(const GLshort *v)) ldg_find("glWindowPos2svMESA", lib); GL_CHECK(glp->WindowPos2svMESA); glp->WindowPos3dMESA = (void APIENTRY (*)(GLdouble x, GLdouble y, GLdouble z)) ldg_find("glWindowPos3dMESA", lib); GL_CHECK(glp->WindowPos3dMESA); glp->WindowPos3dvMESA = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glWindowPos3dvMESA", lib); GL_CHECK(glp->WindowPos3dvMESA); glp->WindowPos3fMESA = (void APIENTRY (*)(GLfloat x, GLfloat y, GLfloat z)) ldg_find("glWindowPos3fMESA", lib); GL_CHECK(glp->WindowPos3fMESA); glp->WindowPos3fvMESA = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glWindowPos3fvMESA", lib); GL_CHECK(glp->WindowPos3fvMESA); glp->WindowPos3iMESA = (void APIENTRY (*)(GLint x, GLint y, GLint z)) ldg_find("glWindowPos3iMESA", lib); GL_CHECK(glp->WindowPos3iMESA); glp->WindowPos3ivMESA = (void APIENTRY (*)(const GLint *v)) ldg_find("glWindowPos3ivMESA", lib); GL_CHECK(glp->WindowPos3ivMESA); glp->WindowPos3sMESA = (void APIENTRY (*)(GLshort32 x, GLshort32 y, GLshort32 z)) ldg_find("glWindowPos3sMESA", lib); GL_CHECK(glp->WindowPos3sMESA); glp->WindowPos3svMESA = (void APIENTRY (*)(const GLshort *v)) ldg_find("glWindowPos3svMESA", lib); GL_CHECK(glp->WindowPos3svMESA); glp->WindowPos4dMESA = (void APIENTRY (*)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glWindowPos4dMESA", lib); GL_CHECK(glp->WindowPos4dMESA); glp->WindowPos4dvMESA = (void APIENTRY (*)(const GLdouble *v)) ldg_find("glWindowPos4dvMESA", lib); GL_CHECK(glp->WindowPos4dvMESA); glp->WindowPos4fMESA = (void APIENTRY (*)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glWindowPos4fMESA", lib); GL_CHECK(glp->WindowPos4fMESA); glp->WindowPos4fvMESA = (void APIENTRY (*)(const GLfloat *v)) ldg_find("glWindowPos4fvMESA", lib); GL_CHECK(glp->WindowPos4fvMESA); glp->WindowPos4iMESA = (void APIENTRY (*)(GLint x, GLint y, GLint z, GLint w)) ldg_find("glWindowPos4iMESA", lib); GL_CHECK(glp->WindowPos4iMESA); glp->WindowPos4ivMESA = (void APIENTRY (*)(const GLint *v)) ldg_find("glWindowPos4ivMESA", lib); GL_CHECK(glp->WindowPos4ivMESA); glp->WindowPos4sMESA = (void APIENTRY (*)(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w)) ldg_find("glWindowPos4sMESA", lib); GL_CHECK(glp->WindowPos4sMESA); glp->WindowPos4svMESA = (void APIENTRY (*)(const GLshort *v)) ldg_find("glWindowPos4svMESA", lib); GL_CHECK(glp->WindowPos4svMESA); glp->MultiModeDrawArraysIBM = (void APIENTRY (*)(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride)) ldg_find("glMultiModeDrawArraysIBM", lib); GL_CHECK(glp->MultiModeDrawArraysIBM); glp->MultiModeDrawElementsIBM = (void APIENTRY (*)(const GLenum *mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount, GLint modestride)) ldg_find("glMultiModeDrawElementsIBM", lib); GL_CHECK(glp->MultiModeDrawElementsIBM); glp->ColorPointerListIBM = (void APIENTRY (*)(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride)) ldg_find("glColorPointerListIBM", lib); GL_CHECK(glp->ColorPointerListIBM); glp->SecondaryColorPointerListIBM = (void APIENTRY (*)(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride)) ldg_find("glSecondaryColorPointerListIBM", lib); GL_CHECK(glp->SecondaryColorPointerListIBM); glp->EdgeFlagPointerListIBM = (void APIENTRY (*)(GLint stride, const GLboolean * *pointer, GLint ptrstride)) ldg_find("glEdgeFlagPointerListIBM", lib); GL_CHECK(glp->EdgeFlagPointerListIBM); glp->FogCoordPointerListIBM = (void APIENTRY (*)(GLenum type, GLint stride, const void * *pointer, GLint ptrstride)) ldg_find("glFogCoordPointerListIBM", lib); GL_CHECK(glp->FogCoordPointerListIBM); glp->IndexPointerListIBM = (void APIENTRY (*)(GLenum type, GLint stride, const void * *pointer, GLint ptrstride)) ldg_find("glIndexPointerListIBM", lib); GL_CHECK(glp->IndexPointerListIBM); glp->NormalPointerListIBM = (void APIENTRY (*)(GLenum type, GLint stride, const void * *pointer, GLint ptrstride)) ldg_find("glNormalPointerListIBM", lib); GL_CHECK(glp->NormalPointerListIBM); glp->TexCoordPointerListIBM = (void APIENTRY (*)(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride)) ldg_find("glTexCoordPointerListIBM", lib); GL_CHECK(glp->TexCoordPointerListIBM); glp->VertexPointerListIBM = (void APIENTRY (*)(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride)) ldg_find("glVertexPointerListIBM", lib); GL_CHECK(glp->VertexPointerListIBM); glp->TbufferMask3DFX = (void APIENTRY (*)(GLuint mask)) ldg_find("glTbufferMask3DFX", lib); GL_CHECK(glp->TbufferMask3DFX); glp->SampleMaskEXT = (void APIENTRY (*)(GLclampf value, GLboolean32 invert)) ldg_find("glSampleMaskEXT", lib); GL_CHECK(glp->SampleMaskEXT); glp->SamplePatternEXT = (void APIENTRY (*)(GLenum pattern)) ldg_find("glSamplePatternEXT", lib); GL_CHECK(glp->SamplePatternEXT); glp->TextureColorMaskSGIS = (void APIENTRY (*)(GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha)) ldg_find("glTextureColorMaskSGIS", lib); GL_CHECK(glp->TextureColorMaskSGIS); glp->IglooInterfaceSGIX = (void APIENTRY (*)(GLenum pname, const void *params)) ldg_find("glIglooInterfaceSGIX", lib); GL_CHECK(glp->IglooInterfaceSGIX); glp->DeleteFencesNV = (void APIENTRY (*)(GLsizei n, const GLuint *fences)) ldg_find("glDeleteFencesNV", lib); GL_CHECK(glp->DeleteFencesNV); glp->GenFencesNV = (void APIENTRY (*)(GLsizei n, GLuint *fences)) ldg_find("glGenFencesNV", lib); GL_CHECK(glp->GenFencesNV); glp->IsFenceNV = (GLboolean APIENTRY (*)(GLuint fence)) ldg_find("glIsFenceNV", lib); GL_CHECK(glp->IsFenceNV); glp->TestFenceNV = (GLboolean APIENTRY (*)(GLuint fence)) ldg_find("glTestFenceNV", lib); GL_CHECK(glp->TestFenceNV); glp->GetFenceivNV = (void APIENTRY (*)(GLuint fence, GLenum pname, GLint *params)) ldg_find("glGetFenceivNV", lib); GL_CHECK(glp->GetFenceivNV); glp->FinishFenceNV = (void APIENTRY (*)(GLuint fence)) ldg_find("glFinishFenceNV", lib); GL_CHECK(glp->FinishFenceNV); glp->SetFenceNV = (void APIENTRY (*)(GLuint fence, GLenum condition)) ldg_find("glSetFenceNV", lib); GL_CHECK(glp->SetFenceNV); glp->MapControlPointsNV = (void APIENTRY (*)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean32 packed, const void *points)) ldg_find("glMapControlPointsNV", lib); GL_CHECK(glp->MapControlPointsNV); glp->MapParameterivNV = (void APIENTRY (*)(GLenum target, GLenum pname, const GLint *params)) ldg_find("glMapParameterivNV", lib); GL_CHECK(glp->MapParameterivNV); glp->MapParameterfvNV = (void APIENTRY (*)(GLenum target, GLenum pname, const GLfloat *params)) ldg_find("glMapParameterfvNV", lib); GL_CHECK(glp->MapParameterfvNV); glp->GetMapControlPointsNV = (void APIENTRY (*)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean32 packed, void *points)) ldg_find("glGetMapControlPointsNV", lib); GL_CHECK(glp->GetMapControlPointsNV); glp->GetMapParameterivNV = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetMapParameterivNV", lib); GL_CHECK(glp->GetMapParameterivNV); glp->GetMapParameterfvNV = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetMapParameterfvNV", lib); GL_CHECK(glp->GetMapParameterfvNV); glp->GetMapAttribParameterivNV = (void APIENTRY (*)(GLenum target, GLuint index, GLenum pname, GLint *params)) ldg_find("glGetMapAttribParameterivNV", lib); GL_CHECK(glp->GetMapAttribParameterivNV); glp->GetMapAttribParameterfvNV = (void APIENTRY (*)(GLenum target, GLuint index, GLenum pname, GLfloat *params)) ldg_find("glGetMapAttribParameterfvNV", lib); GL_CHECK(glp->GetMapAttribParameterfvNV); glp->EvalMapsNV = (void APIENTRY (*)(GLenum target, GLenum mode)) ldg_find("glEvalMapsNV", lib); GL_CHECK(glp->EvalMapsNV); glp->CombinerStageParameterfvNV = (void APIENTRY (*)(GLenum stage, GLenum pname, const GLfloat *params)) ldg_find("glCombinerStageParameterfvNV", lib); GL_CHECK(glp->CombinerStageParameterfvNV); glp->GetCombinerStageParameterfvNV = (void APIENTRY (*)(GLenum stage, GLenum pname, GLfloat *params)) ldg_find("glGetCombinerStageParameterfvNV", lib); GL_CHECK(glp->GetCombinerStageParameterfvNV); glp->AreProgramsResidentNV = (GLboolean APIENTRY (*)(GLsizei n, const GLuint *programs, GLboolean *residences)) ldg_find("glAreProgramsResidentNV", lib); GL_CHECK(glp->AreProgramsResidentNV); glp->BindProgramNV = (void APIENTRY (*)(GLenum target, GLuint id)) ldg_find("glBindProgramNV", lib); GL_CHECK(glp->BindProgramNV); glp->DeleteProgramsNV = (void APIENTRY (*)(GLsizei n, const GLuint *programs)) ldg_find("glDeleteProgramsNV", lib); GL_CHECK(glp->DeleteProgramsNV); glp->ExecuteProgramNV = (void APIENTRY (*)(GLenum target, GLuint id, const GLfloat *params)) ldg_find("glExecuteProgramNV", lib); GL_CHECK(glp->ExecuteProgramNV); glp->GenProgramsNV = (void APIENTRY (*)(GLsizei n, GLuint *programs)) ldg_find("glGenProgramsNV", lib); GL_CHECK(glp->GenProgramsNV); glp->GetProgramParameterdvNV = (void APIENTRY (*)(GLenum target, GLuint index, GLenum pname, GLdouble *params)) ldg_find("glGetProgramParameterdvNV", lib); GL_CHECK(glp->GetProgramParameterdvNV); glp->GetProgramParameterfvNV = (void APIENTRY (*)(GLenum target, GLuint index, GLenum pname, GLfloat *params)) ldg_find("glGetProgramParameterfvNV", lib); GL_CHECK(glp->GetProgramParameterfvNV); glp->GetProgramivNV = (void APIENTRY (*)(GLuint id, GLenum pname, GLint *params)) ldg_find("glGetProgramivNV", lib); GL_CHECK(glp->GetProgramivNV); glp->GetProgramStringNV = (void APIENTRY (*)(GLuint id, GLenum pname, GLubyte *program)) ldg_find("glGetProgramStringNV", lib); GL_CHECK(glp->GetProgramStringNV); glp->GetTrackMatrixivNV = (void APIENTRY (*)(GLenum target, GLuint address, GLenum pname, GLint *params)) ldg_find("glGetTrackMatrixivNV", lib); GL_CHECK(glp->GetTrackMatrixivNV); glp->GetVertexAttribdvNV = (void APIENTRY (*)(GLuint index, GLenum pname, GLdouble *params)) ldg_find("glGetVertexAttribdvNV", lib); GL_CHECK(glp->GetVertexAttribdvNV); glp->GetVertexAttribfvNV = (void APIENTRY (*)(GLuint index, GLenum pname, GLfloat *params)) ldg_find("glGetVertexAttribfvNV", lib); GL_CHECK(glp->GetVertexAttribfvNV); glp->GetVertexAttribivNV = (void APIENTRY (*)(GLuint index, GLenum pname, GLint *params)) ldg_find("glGetVertexAttribivNV", lib); GL_CHECK(glp->GetVertexAttribivNV); glp->GetVertexAttribPointervNV = (void APIENTRY (*)(GLuint index, GLenum pname, void * *pointer)) ldg_find("glGetVertexAttribPointervNV", lib); GL_CHECK(glp->GetVertexAttribPointervNV); glp->IsProgramNV = (GLboolean APIENTRY (*)(GLuint id)) ldg_find("glIsProgramNV", lib); GL_CHECK(glp->IsProgramNV); glp->LoadProgramNV = (void APIENTRY (*)(GLenum target, GLuint id, GLsizei len, const GLubyte *program)) ldg_find("glLoadProgramNV", lib); GL_CHECK(glp->LoadProgramNV); glp->ProgramParameter4dNV = (void APIENTRY (*)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glProgramParameter4dNV", lib); GL_CHECK(glp->ProgramParameter4dNV); glp->ProgramParameter4dvNV = (void APIENTRY (*)(GLenum target, GLuint index, const GLdouble *v)) ldg_find("glProgramParameter4dvNV", lib); GL_CHECK(glp->ProgramParameter4dvNV); glp->ProgramParameter4fNV = (void APIENTRY (*)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glProgramParameter4fNV", lib); GL_CHECK(glp->ProgramParameter4fNV); glp->ProgramParameter4fvNV = (void APIENTRY (*)(GLenum target, GLuint index, const GLfloat *v)) ldg_find("glProgramParameter4fvNV", lib); GL_CHECK(glp->ProgramParameter4fvNV); glp->ProgramParameters4dvNV = (void APIENTRY (*)(GLenum target, GLuint index, GLsizei count, const GLdouble *v)) ldg_find("glProgramParameters4dvNV", lib); GL_CHECK(glp->ProgramParameters4dvNV); glp->ProgramParameters4fvNV = (void APIENTRY (*)(GLenum target, GLuint index, GLsizei count, const GLfloat *v)) ldg_find("glProgramParameters4fvNV", lib); GL_CHECK(glp->ProgramParameters4fvNV); glp->RequestResidentProgramsNV = (void APIENTRY (*)(GLsizei n, const GLuint *programs)) ldg_find("glRequestResidentProgramsNV", lib); GL_CHECK(glp->RequestResidentProgramsNV); glp->TrackMatrixNV = (void APIENTRY (*)(GLenum target, GLuint address, GLenum matrix, GLenum transform)) ldg_find("glTrackMatrixNV", lib); GL_CHECK(glp->TrackMatrixNV); glp->VertexAttribPointerNV = (void APIENTRY (*)(GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer)) ldg_find("glVertexAttribPointerNV", lib); GL_CHECK(glp->VertexAttribPointerNV); glp->VertexAttrib1dNV = (void APIENTRY (*)(GLuint index, GLdouble x)) ldg_find("glVertexAttrib1dNV", lib); GL_CHECK(glp->VertexAttrib1dNV); glp->VertexAttrib1dvNV = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttrib1dvNV", lib); GL_CHECK(glp->VertexAttrib1dvNV); glp->VertexAttrib1fNV = (void APIENTRY (*)(GLuint index, GLfloat x)) ldg_find("glVertexAttrib1fNV", lib); GL_CHECK(glp->VertexAttrib1fNV); glp->VertexAttrib1fvNV = (void APIENTRY (*)(GLuint index, const GLfloat *v)) ldg_find("glVertexAttrib1fvNV", lib); GL_CHECK(glp->VertexAttrib1fvNV); glp->VertexAttrib1sNV = (void APIENTRY (*)(GLuint index, GLshort32 x)) ldg_find("glVertexAttrib1sNV", lib); GL_CHECK(glp->VertexAttrib1sNV); glp->VertexAttrib1svNV = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttrib1svNV", lib); GL_CHECK(glp->VertexAttrib1svNV); glp->VertexAttrib2dNV = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y)) ldg_find("glVertexAttrib2dNV", lib); GL_CHECK(glp->VertexAttrib2dNV); glp->VertexAttrib2dvNV = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttrib2dvNV", lib); GL_CHECK(glp->VertexAttrib2dvNV); glp->VertexAttrib2fNV = (void APIENTRY (*)(GLuint index, GLfloat x, GLfloat y)) ldg_find("glVertexAttrib2fNV", lib); GL_CHECK(glp->VertexAttrib2fNV); glp->VertexAttrib2fvNV = (void APIENTRY (*)(GLuint index, const GLfloat *v)) ldg_find("glVertexAttrib2fvNV", lib); GL_CHECK(glp->VertexAttrib2fvNV); glp->VertexAttrib2sNV = (void APIENTRY (*)(GLuint index, GLshort32 x, GLshort32 y)) ldg_find("glVertexAttrib2sNV", lib); GL_CHECK(glp->VertexAttrib2sNV); glp->VertexAttrib2svNV = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttrib2svNV", lib); GL_CHECK(glp->VertexAttrib2svNV); glp->VertexAttrib3dNV = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y, GLdouble z)) ldg_find("glVertexAttrib3dNV", lib); GL_CHECK(glp->VertexAttrib3dNV); glp->VertexAttrib3dvNV = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttrib3dvNV", lib); GL_CHECK(glp->VertexAttrib3dvNV); glp->VertexAttrib3fNV = (void APIENTRY (*)(GLuint index, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glVertexAttrib3fNV", lib); GL_CHECK(glp->VertexAttrib3fNV); glp->VertexAttrib3fvNV = (void APIENTRY (*)(GLuint index, const GLfloat *v)) ldg_find("glVertexAttrib3fvNV", lib); GL_CHECK(glp->VertexAttrib3fvNV); glp->VertexAttrib3sNV = (void APIENTRY (*)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z)) ldg_find("glVertexAttrib3sNV", lib); GL_CHECK(glp->VertexAttrib3sNV); glp->VertexAttrib3svNV = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttrib3svNV", lib); GL_CHECK(glp->VertexAttrib3svNV); glp->VertexAttrib4dNV = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glVertexAttrib4dNV", lib); GL_CHECK(glp->VertexAttrib4dNV); glp->VertexAttrib4dvNV = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttrib4dvNV", lib); GL_CHECK(glp->VertexAttrib4dvNV); glp->VertexAttrib4fNV = (void APIENTRY (*)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glVertexAttrib4fNV", lib); GL_CHECK(glp->VertexAttrib4fNV); glp->VertexAttrib4fvNV = (void APIENTRY (*)(GLuint index, const GLfloat *v)) ldg_find("glVertexAttrib4fvNV", lib); GL_CHECK(glp->VertexAttrib4fvNV); glp->VertexAttrib4sNV = (void APIENTRY (*)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w)) ldg_find("glVertexAttrib4sNV", lib); GL_CHECK(glp->VertexAttrib4sNV); glp->VertexAttrib4svNV = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttrib4svNV", lib); GL_CHECK(glp->VertexAttrib4svNV); glp->VertexAttrib4ubNV = (void APIENTRY (*)(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w)) ldg_find("glVertexAttrib4ubNV", lib); GL_CHECK(glp->VertexAttrib4ubNV); glp->VertexAttrib4ubvNV = (void APIENTRY (*)(GLuint index, const GLubyte *v)) ldg_find("glVertexAttrib4ubvNV", lib); GL_CHECK(glp->VertexAttrib4ubvNV); glp->VertexAttribs1dvNV = (void APIENTRY (*)(GLuint index, GLsizei count, const GLdouble *v)) ldg_find("glVertexAttribs1dvNV", lib); GL_CHECK(glp->VertexAttribs1dvNV); glp->VertexAttribs1fvNV = (void APIENTRY (*)(GLuint index, GLsizei count, const GLfloat *v)) ldg_find("glVertexAttribs1fvNV", lib); GL_CHECK(glp->VertexAttribs1fvNV); glp->VertexAttribs1svNV = (void APIENTRY (*)(GLuint index, GLsizei count, const GLshort *v)) ldg_find("glVertexAttribs1svNV", lib); GL_CHECK(glp->VertexAttribs1svNV); glp->VertexAttribs2dvNV = (void APIENTRY (*)(GLuint index, GLsizei count, const GLdouble *v)) ldg_find("glVertexAttribs2dvNV", lib); GL_CHECK(glp->VertexAttribs2dvNV); glp->VertexAttribs2fvNV = (void APIENTRY (*)(GLuint index, GLsizei count, const GLfloat *v)) ldg_find("glVertexAttribs2fvNV", lib); GL_CHECK(glp->VertexAttribs2fvNV); glp->VertexAttribs2svNV = (void APIENTRY (*)(GLuint index, GLsizei count, const GLshort *v)) ldg_find("glVertexAttribs2svNV", lib); GL_CHECK(glp->VertexAttribs2svNV); glp->VertexAttribs3dvNV = (void APIENTRY (*)(GLuint index, GLsizei count, const GLdouble *v)) ldg_find("glVertexAttribs3dvNV", lib); GL_CHECK(glp->VertexAttribs3dvNV); glp->VertexAttribs3fvNV = (void APIENTRY (*)(GLuint index, GLsizei count, const GLfloat *v)) ldg_find("glVertexAttribs3fvNV", lib); GL_CHECK(glp->VertexAttribs3fvNV); glp->VertexAttribs3svNV = (void APIENTRY (*)(GLuint index, GLsizei count, const GLshort *v)) ldg_find("glVertexAttribs3svNV", lib); GL_CHECK(glp->VertexAttribs3svNV); glp->VertexAttribs4dvNV = (void APIENTRY (*)(GLuint index, GLsizei count, const GLdouble *v)) ldg_find("glVertexAttribs4dvNV", lib); GL_CHECK(glp->VertexAttribs4dvNV); glp->VertexAttribs4fvNV = (void APIENTRY (*)(GLuint index, GLsizei count, const GLfloat *v)) ldg_find("glVertexAttribs4fvNV", lib); GL_CHECK(glp->VertexAttribs4fvNV); glp->VertexAttribs4svNV = (void APIENTRY (*)(GLuint index, GLsizei count, const GLshort *v)) ldg_find("glVertexAttribs4svNV", lib); GL_CHECK(glp->VertexAttribs4svNV); glp->VertexAttribs4ubvNV = (void APIENTRY (*)(GLuint index, GLsizei count, const GLubyte *v)) ldg_find("glVertexAttribs4ubvNV", lib); GL_CHECK(glp->VertexAttribs4ubvNV); glp->TexBumpParameterivATI = (void APIENTRY (*)(GLenum pname, const GLint *param)) ldg_find("glTexBumpParameterivATI", lib); GL_CHECK(glp->TexBumpParameterivATI); glp->TexBumpParameterfvATI = (void APIENTRY (*)(GLenum pname, const GLfloat *param)) ldg_find("glTexBumpParameterfvATI", lib); GL_CHECK(glp->TexBumpParameterfvATI); glp->GetTexBumpParameterivATI = (void APIENTRY (*)(GLenum pname, GLint *param)) ldg_find("glGetTexBumpParameterivATI", lib); GL_CHECK(glp->GetTexBumpParameterivATI); glp->GetTexBumpParameterfvATI = (void APIENTRY (*)(GLenum pname, GLfloat *param)) ldg_find("glGetTexBumpParameterfvATI", lib); GL_CHECK(glp->GetTexBumpParameterfvATI); glp->GenFragmentShadersATI = (GLuint APIENTRY (*)(GLuint range)) ldg_find("glGenFragmentShadersATI", lib); GL_CHECK(glp->GenFragmentShadersATI); glp->BindFragmentShaderATI = (void APIENTRY (*)(GLuint id)) ldg_find("glBindFragmentShaderATI", lib); GL_CHECK(glp->BindFragmentShaderATI); glp->DeleteFragmentShaderATI = (void APIENTRY (*)(GLuint id)) ldg_find("glDeleteFragmentShaderATI", lib); GL_CHECK(glp->DeleteFragmentShaderATI); glp->BeginFragmentShaderATI = (void APIENTRY (*)(void)) ldg_find("glBeginFragmentShaderATI", lib); GL_CHECK(glp->BeginFragmentShaderATI); glp->EndFragmentShaderATI = (void APIENTRY (*)(void)) ldg_find("glEndFragmentShaderATI", lib); GL_CHECK(glp->EndFragmentShaderATI); glp->PassTexCoordATI = (void APIENTRY (*)(GLuint dst, GLuint coord, GLenum swizzle)) ldg_find("glPassTexCoordATI", lib); GL_CHECK(glp->PassTexCoordATI); glp->SampleMapATI = (void APIENTRY (*)(GLuint dst, GLuint interp, GLenum swizzle)) ldg_find("glSampleMapATI", lib); GL_CHECK(glp->SampleMapATI); glp->ColorFragmentOp1ATI = (void APIENTRY (*)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)) ldg_find("glColorFragmentOp1ATI", lib); GL_CHECK(glp->ColorFragmentOp1ATI); glp->ColorFragmentOp2ATI = (void APIENTRY (*)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)) ldg_find("glColorFragmentOp2ATI", lib); GL_CHECK(glp->ColorFragmentOp2ATI); glp->ColorFragmentOp3ATI = (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)) ldg_find("glColorFragmentOp3ATI", lib); GL_CHECK(glp->ColorFragmentOp3ATI); glp->AlphaFragmentOp1ATI = (void APIENTRY (*)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)) ldg_find("glAlphaFragmentOp1ATI", lib); GL_CHECK(glp->AlphaFragmentOp1ATI); glp->AlphaFragmentOp2ATI = (void APIENTRY (*)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)) ldg_find("glAlphaFragmentOp2ATI", lib); GL_CHECK(glp->AlphaFragmentOp2ATI); glp->AlphaFragmentOp3ATI = (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)) ldg_find("glAlphaFragmentOp3ATI", lib); GL_CHECK(glp->AlphaFragmentOp3ATI); glp->SetFragmentShaderConstantATI = (void APIENTRY (*)(GLuint dst, const GLfloat *value)) ldg_find("glSetFragmentShaderConstantATI", lib); GL_CHECK(glp->SetFragmentShaderConstantATI); glp->PNTrianglesiATI = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glPNTrianglesiATI", lib); GL_CHECK(glp->PNTrianglesiATI); glp->PNTrianglesfATI = (void APIENTRY (*)(GLenum pname, GLfloat param)) ldg_find("glPNTrianglesfATI", lib); GL_CHECK(glp->PNTrianglesfATI); glp->NewObjectBufferATI = (GLuint APIENTRY (*)(GLsizei size, const void *pointer, GLenum usage)) ldg_find("glNewObjectBufferATI", lib); GL_CHECK(glp->NewObjectBufferATI); glp->IsObjectBufferATI = (GLboolean APIENTRY (*)(GLuint buffer)) ldg_find("glIsObjectBufferATI", lib); GL_CHECK(glp->IsObjectBufferATI); glp->UpdateObjectBufferATI = (void APIENTRY (*)(GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve)) ldg_find("glUpdateObjectBufferATI", lib); GL_CHECK(glp->UpdateObjectBufferATI); glp->GetObjectBufferfvATI = (void APIENTRY (*)(GLuint buffer, GLenum pname, GLfloat *params)) ldg_find("glGetObjectBufferfvATI", lib); GL_CHECK(glp->GetObjectBufferfvATI); glp->GetObjectBufferivATI = (void APIENTRY (*)(GLuint buffer, GLenum pname, GLint *params)) ldg_find("glGetObjectBufferivATI", lib); GL_CHECK(glp->GetObjectBufferivATI); glp->FreeObjectBufferATI = (void APIENTRY (*)(GLuint buffer)) ldg_find("glFreeObjectBufferATI", lib); GL_CHECK(glp->FreeObjectBufferATI); glp->ArrayObjectATI = (void APIENTRY (*)(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset)) ldg_find("glArrayObjectATI", lib); GL_CHECK(glp->ArrayObjectATI); glp->GetArrayObjectfvATI = (void APIENTRY (*)(GLenum array, GLenum pname, GLfloat *params)) ldg_find("glGetArrayObjectfvATI", lib); GL_CHECK(glp->GetArrayObjectfvATI); glp->GetArrayObjectivATI = (void APIENTRY (*)(GLenum array, GLenum pname, GLint *params)) ldg_find("glGetArrayObjectivATI", lib); GL_CHECK(glp->GetArrayObjectivATI); glp->VariantArrayObjectATI = (void APIENTRY (*)(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset)) ldg_find("glVariantArrayObjectATI", lib); GL_CHECK(glp->VariantArrayObjectATI); glp->GetVariantArrayObjectfvATI = (void APIENTRY (*)(GLuint id, GLenum pname, GLfloat *params)) ldg_find("glGetVariantArrayObjectfvATI", lib); GL_CHECK(glp->GetVariantArrayObjectfvATI); glp->GetVariantArrayObjectivATI = (void APIENTRY (*)(GLuint id, GLenum pname, GLint *params)) ldg_find("glGetVariantArrayObjectivATI", lib); GL_CHECK(glp->GetVariantArrayObjectivATI); glp->BeginVertexShaderEXT = (void APIENTRY (*)(void)) ldg_find("glBeginVertexShaderEXT", lib); GL_CHECK(glp->BeginVertexShaderEXT); glp->EndVertexShaderEXT = (void APIENTRY (*)(void)) ldg_find("glEndVertexShaderEXT", lib); GL_CHECK(glp->EndVertexShaderEXT); glp->BindVertexShaderEXT = (void APIENTRY (*)(GLuint id)) ldg_find("glBindVertexShaderEXT", lib); GL_CHECK(glp->BindVertexShaderEXT); glp->GenVertexShadersEXT = (GLuint APIENTRY (*)(GLuint range)) ldg_find("glGenVertexShadersEXT", lib); GL_CHECK(glp->GenVertexShadersEXT); glp->DeleteVertexShaderEXT = (void APIENTRY (*)(GLuint id)) ldg_find("glDeleteVertexShaderEXT", lib); GL_CHECK(glp->DeleteVertexShaderEXT); glp->ShaderOp1EXT = (void APIENTRY (*)(GLenum op, GLuint res, GLuint arg1)) ldg_find("glShaderOp1EXT", lib); GL_CHECK(glp->ShaderOp1EXT); glp->ShaderOp2EXT = (void APIENTRY (*)(GLenum op, GLuint res, GLuint arg1, GLuint arg2)) ldg_find("glShaderOp2EXT", lib); GL_CHECK(glp->ShaderOp2EXT); glp->ShaderOp3EXT = (void APIENTRY (*)(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3)) ldg_find("glShaderOp3EXT", lib); GL_CHECK(glp->ShaderOp3EXT); glp->SwizzleEXT = (void APIENTRY (*)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW)) ldg_find("glSwizzleEXT", lib); GL_CHECK(glp->SwizzleEXT); glp->WriteMaskEXT = (void APIENTRY (*)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW)) ldg_find("glWriteMaskEXT", lib); GL_CHECK(glp->WriteMaskEXT); glp->InsertComponentEXT = (void APIENTRY (*)(GLuint res, GLuint src, GLuint num)) ldg_find("glInsertComponentEXT", lib); GL_CHECK(glp->InsertComponentEXT); glp->ExtractComponentEXT = (void APIENTRY (*)(GLuint res, GLuint src, GLuint num)) ldg_find("glExtractComponentEXT", lib); GL_CHECK(glp->ExtractComponentEXT); glp->GenSymbolsEXT = (GLuint APIENTRY (*)(GLenum datatype, GLenum storagetype, GLenum range, GLuint components)) ldg_find("glGenSymbolsEXT", lib); GL_CHECK(glp->GenSymbolsEXT); glp->SetInvariantEXT = (void APIENTRY (*)(GLuint id, GLenum type, const void *addr)) ldg_find("glSetInvariantEXT", lib); GL_CHECK(glp->SetInvariantEXT); glp->SetLocalConstantEXT = (void APIENTRY (*)(GLuint id, GLenum type, const void *addr)) ldg_find("glSetLocalConstantEXT", lib); GL_CHECK(glp->SetLocalConstantEXT); glp->VariantbvEXT = (void APIENTRY (*)(GLuint id, const GLbyte *addr)) ldg_find("glVariantbvEXT", lib); GL_CHECK(glp->VariantbvEXT); glp->VariantsvEXT = (void APIENTRY (*)(GLuint id, const GLshort *addr)) ldg_find("glVariantsvEXT", lib); GL_CHECK(glp->VariantsvEXT); glp->VariantivEXT = (void APIENTRY (*)(GLuint id, const GLint *addr)) ldg_find("glVariantivEXT", lib); GL_CHECK(glp->VariantivEXT); glp->VariantfvEXT = (void APIENTRY (*)(GLuint id, const GLfloat *addr)) ldg_find("glVariantfvEXT", lib); GL_CHECK(glp->VariantfvEXT); glp->VariantdvEXT = (void APIENTRY (*)(GLuint id, const GLdouble *addr)) ldg_find("glVariantdvEXT", lib); GL_CHECK(glp->VariantdvEXT); glp->VariantubvEXT = (void APIENTRY (*)(GLuint id, const GLubyte *addr)) ldg_find("glVariantubvEXT", lib); GL_CHECK(glp->VariantubvEXT); glp->VariantusvEXT = (void APIENTRY (*)(GLuint id, const GLushort *addr)) ldg_find("glVariantusvEXT", lib); GL_CHECK(glp->VariantusvEXT); glp->VariantuivEXT = (void APIENTRY (*)(GLuint id, const GLuint *addr)) ldg_find("glVariantuivEXT", lib); GL_CHECK(glp->VariantuivEXT); glp->VariantPointerEXT = (void APIENTRY (*)(GLuint id, GLenum type, GLuint stride, const void *addr)) ldg_find("glVariantPointerEXT", lib); GL_CHECK(glp->VariantPointerEXT); glp->EnableVariantClientStateEXT = (void APIENTRY (*)(GLuint id)) ldg_find("glEnableVariantClientStateEXT", lib); GL_CHECK(glp->EnableVariantClientStateEXT); glp->DisableVariantClientStateEXT = (void APIENTRY (*)(GLuint id)) ldg_find("glDisableVariantClientStateEXT", lib); GL_CHECK(glp->DisableVariantClientStateEXT); glp->BindLightParameterEXT = (GLuint APIENTRY (*)(GLenum light, GLenum value)) ldg_find("glBindLightParameterEXT", lib); GL_CHECK(glp->BindLightParameterEXT); glp->BindMaterialParameterEXT = (GLuint APIENTRY (*)(GLenum face, GLenum value)) ldg_find("glBindMaterialParameterEXT", lib); GL_CHECK(glp->BindMaterialParameterEXT); glp->BindTexGenParameterEXT = (GLuint APIENTRY (*)(GLenum unit, GLenum coord, GLenum value)) ldg_find("glBindTexGenParameterEXT", lib); GL_CHECK(glp->BindTexGenParameterEXT); glp->BindTextureUnitParameterEXT = (GLuint APIENTRY (*)(GLenum unit, GLenum value)) ldg_find("glBindTextureUnitParameterEXT", lib); GL_CHECK(glp->BindTextureUnitParameterEXT); glp->BindParameterEXT = (GLuint APIENTRY (*)(GLenum value)) ldg_find("glBindParameterEXT", lib); GL_CHECK(glp->BindParameterEXT); glp->IsVariantEnabledEXT = (GLboolean APIENTRY (*)(GLuint id, GLenum cap)) ldg_find("glIsVariantEnabledEXT", lib); GL_CHECK(glp->IsVariantEnabledEXT); glp->GetVariantBooleanvEXT = (void APIENTRY (*)(GLuint id, GLenum value, GLboolean *data)) ldg_find("glGetVariantBooleanvEXT", lib); GL_CHECK(glp->GetVariantBooleanvEXT); glp->GetVariantIntegervEXT = (void APIENTRY (*)(GLuint id, GLenum value, GLint *data)) ldg_find("glGetVariantIntegervEXT", lib); GL_CHECK(glp->GetVariantIntegervEXT); glp->GetVariantFloatvEXT = (void APIENTRY (*)(GLuint id, GLenum value, GLfloat *data)) ldg_find("glGetVariantFloatvEXT", lib); GL_CHECK(glp->GetVariantFloatvEXT); glp->GetVariantPointervEXT = (void APIENTRY (*)(GLuint id, GLenum value, void * *data)) ldg_find("glGetVariantPointervEXT", lib); GL_CHECK(glp->GetVariantPointervEXT); glp->GetInvariantBooleanvEXT = (void APIENTRY (*)(GLuint id, GLenum value, GLboolean *data)) ldg_find("glGetInvariantBooleanvEXT", lib); GL_CHECK(glp->GetInvariantBooleanvEXT); glp->GetInvariantIntegervEXT = (void APIENTRY (*)(GLuint id, GLenum value, GLint *data)) ldg_find("glGetInvariantIntegervEXT", lib); GL_CHECK(glp->GetInvariantIntegervEXT); glp->GetInvariantFloatvEXT = (void APIENTRY (*)(GLuint id, GLenum value, GLfloat *data)) ldg_find("glGetInvariantFloatvEXT", lib); GL_CHECK(glp->GetInvariantFloatvEXT); glp->GetLocalConstantBooleanvEXT = (void APIENTRY (*)(GLuint id, GLenum value, GLboolean *data)) ldg_find("glGetLocalConstantBooleanvEXT", lib); GL_CHECK(glp->GetLocalConstantBooleanvEXT); glp->GetLocalConstantIntegervEXT = (void APIENTRY (*)(GLuint id, GLenum value, GLint *data)) ldg_find("glGetLocalConstantIntegervEXT", lib); GL_CHECK(glp->GetLocalConstantIntegervEXT); glp->GetLocalConstantFloatvEXT = (void APIENTRY (*)(GLuint id, GLenum value, GLfloat *data)) ldg_find("glGetLocalConstantFloatvEXT", lib); GL_CHECK(glp->GetLocalConstantFloatvEXT); glp->VertexStream1sATI = (void APIENTRY (*)(GLenum stream, GLshort32 x)) ldg_find("glVertexStream1sATI", lib); GL_CHECK(glp->VertexStream1sATI); glp->VertexStream1svATI = (void APIENTRY (*)(GLenum stream, const GLshort *coords)) ldg_find("glVertexStream1svATI", lib); GL_CHECK(glp->VertexStream1svATI); glp->VertexStream1iATI = (void APIENTRY (*)(GLenum stream, GLint x)) ldg_find("glVertexStream1iATI", lib); GL_CHECK(glp->VertexStream1iATI); glp->VertexStream1ivATI = (void APIENTRY (*)(GLenum stream, const GLint *coords)) ldg_find("glVertexStream1ivATI", lib); GL_CHECK(glp->VertexStream1ivATI); glp->VertexStream1fATI = (void APIENTRY (*)(GLenum stream, GLfloat x)) ldg_find("glVertexStream1fATI", lib); GL_CHECK(glp->VertexStream1fATI); glp->VertexStream1fvATI = (void APIENTRY (*)(GLenum stream, const GLfloat *coords)) ldg_find("glVertexStream1fvATI", lib); GL_CHECK(glp->VertexStream1fvATI); glp->VertexStream1dATI = (void APIENTRY (*)(GLenum stream, GLdouble x)) ldg_find("glVertexStream1dATI", lib); GL_CHECK(glp->VertexStream1dATI); glp->VertexStream1dvATI = (void APIENTRY (*)(GLenum stream, const GLdouble *coords)) ldg_find("glVertexStream1dvATI", lib); GL_CHECK(glp->VertexStream1dvATI); glp->VertexStream2sATI = (void APIENTRY (*)(GLenum stream, GLshort32 x, GLshort32 y)) ldg_find("glVertexStream2sATI", lib); GL_CHECK(glp->VertexStream2sATI); glp->VertexStream2svATI = (void APIENTRY (*)(GLenum stream, const GLshort *coords)) ldg_find("glVertexStream2svATI", lib); GL_CHECK(glp->VertexStream2svATI); glp->VertexStream2iATI = (void APIENTRY (*)(GLenum stream, GLint x, GLint y)) ldg_find("glVertexStream2iATI", lib); GL_CHECK(glp->VertexStream2iATI); glp->VertexStream2ivATI = (void APIENTRY (*)(GLenum stream, const GLint *coords)) ldg_find("glVertexStream2ivATI", lib); GL_CHECK(glp->VertexStream2ivATI); glp->VertexStream2fATI = (void APIENTRY (*)(GLenum stream, GLfloat x, GLfloat y)) ldg_find("glVertexStream2fATI", lib); GL_CHECK(glp->VertexStream2fATI); glp->VertexStream2fvATI = (void APIENTRY (*)(GLenum stream, const GLfloat *coords)) ldg_find("glVertexStream2fvATI", lib); GL_CHECK(glp->VertexStream2fvATI); glp->VertexStream2dATI = (void APIENTRY (*)(GLenum stream, GLdouble x, GLdouble y)) ldg_find("glVertexStream2dATI", lib); GL_CHECK(glp->VertexStream2dATI); glp->VertexStream2dvATI = (void APIENTRY (*)(GLenum stream, const GLdouble *coords)) ldg_find("glVertexStream2dvATI", lib); GL_CHECK(glp->VertexStream2dvATI); glp->VertexStream3sATI = (void APIENTRY (*)(GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z)) ldg_find("glVertexStream3sATI", lib); GL_CHECK(glp->VertexStream3sATI); glp->VertexStream3svATI = (void APIENTRY (*)(GLenum stream, const GLshort *coords)) ldg_find("glVertexStream3svATI", lib); GL_CHECK(glp->VertexStream3svATI); glp->VertexStream3iATI = (void APIENTRY (*)(GLenum stream, GLint x, GLint y, GLint z)) ldg_find("glVertexStream3iATI", lib); GL_CHECK(glp->VertexStream3iATI); glp->VertexStream3ivATI = (void APIENTRY (*)(GLenum stream, const GLint *coords)) ldg_find("glVertexStream3ivATI", lib); GL_CHECK(glp->VertexStream3ivATI); glp->VertexStream3fATI = (void APIENTRY (*)(GLenum stream, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glVertexStream3fATI", lib); GL_CHECK(glp->VertexStream3fATI); glp->VertexStream3fvATI = (void APIENTRY (*)(GLenum stream, const GLfloat *coords)) ldg_find("glVertexStream3fvATI", lib); GL_CHECK(glp->VertexStream3fvATI); glp->VertexStream3dATI = (void APIENTRY (*)(GLenum stream, GLdouble x, GLdouble y, GLdouble z)) ldg_find("glVertexStream3dATI", lib); GL_CHECK(glp->VertexStream3dATI); glp->VertexStream3dvATI = (void APIENTRY (*)(GLenum stream, const GLdouble *coords)) ldg_find("glVertexStream3dvATI", lib); GL_CHECK(glp->VertexStream3dvATI); glp->VertexStream4sATI = (void APIENTRY (*)(GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w)) ldg_find("glVertexStream4sATI", lib); GL_CHECK(glp->VertexStream4sATI); glp->VertexStream4svATI = (void APIENTRY (*)(GLenum stream, const GLshort *coords)) ldg_find("glVertexStream4svATI", lib); GL_CHECK(glp->VertexStream4svATI); glp->VertexStream4iATI = (void APIENTRY (*)(GLenum stream, GLint x, GLint y, GLint z, GLint w)) ldg_find("glVertexStream4iATI", lib); GL_CHECK(glp->VertexStream4iATI); glp->VertexStream4ivATI = (void APIENTRY (*)(GLenum stream, const GLint *coords)) ldg_find("glVertexStream4ivATI", lib); GL_CHECK(glp->VertexStream4ivATI); glp->VertexStream4fATI = (void APIENTRY (*)(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glVertexStream4fATI", lib); GL_CHECK(glp->VertexStream4fATI); glp->VertexStream4fvATI = (void APIENTRY (*)(GLenum stream, const GLfloat *coords)) ldg_find("glVertexStream4fvATI", lib); GL_CHECK(glp->VertexStream4fvATI); glp->VertexStream4dATI = (void APIENTRY (*)(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glVertexStream4dATI", lib); GL_CHECK(glp->VertexStream4dATI); glp->VertexStream4dvATI = (void APIENTRY (*)(GLenum stream, const GLdouble *coords)) ldg_find("glVertexStream4dvATI", lib); GL_CHECK(glp->VertexStream4dvATI); glp->NormalStream3bATI = (void APIENTRY (*)(GLenum stream, GLbyte32 nx, GLbyte32 ny, GLbyte32 nz)) ldg_find("glNormalStream3bATI", lib); GL_CHECK(glp->NormalStream3bATI); glp->NormalStream3bvATI = (void APIENTRY (*)(GLenum stream, const GLbyte *coords)) ldg_find("glNormalStream3bvATI", lib); GL_CHECK(glp->NormalStream3bvATI); glp->NormalStream3sATI = (void APIENTRY (*)(GLenum stream, GLshort32 nx, GLshort32 ny, GLshort32 nz)) ldg_find("glNormalStream3sATI", lib); GL_CHECK(glp->NormalStream3sATI); glp->NormalStream3svATI = (void APIENTRY (*)(GLenum stream, const GLshort *coords)) ldg_find("glNormalStream3svATI", lib); GL_CHECK(glp->NormalStream3svATI); glp->NormalStream3iATI = (void APIENTRY (*)(GLenum stream, GLint nx, GLint ny, GLint nz)) ldg_find("glNormalStream3iATI", lib); GL_CHECK(glp->NormalStream3iATI); glp->NormalStream3ivATI = (void APIENTRY (*)(GLenum stream, const GLint *coords)) ldg_find("glNormalStream3ivATI", lib); GL_CHECK(glp->NormalStream3ivATI); glp->NormalStream3fATI = (void APIENTRY (*)(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz)) ldg_find("glNormalStream3fATI", lib); GL_CHECK(glp->NormalStream3fATI); glp->NormalStream3fvATI = (void APIENTRY (*)(GLenum stream, const GLfloat *coords)) ldg_find("glNormalStream3fvATI", lib); GL_CHECK(glp->NormalStream3fvATI); glp->NormalStream3dATI = (void APIENTRY (*)(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz)) ldg_find("glNormalStream3dATI", lib); GL_CHECK(glp->NormalStream3dATI); glp->NormalStream3dvATI = (void APIENTRY (*)(GLenum stream, const GLdouble *coords)) ldg_find("glNormalStream3dvATI", lib); GL_CHECK(glp->NormalStream3dvATI); glp->ClientActiveVertexStreamATI = (void APIENTRY (*)(GLenum stream)) ldg_find("glClientActiveVertexStreamATI", lib); GL_CHECK(glp->ClientActiveVertexStreamATI); glp->VertexBlendEnviATI = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glVertexBlendEnviATI", lib); GL_CHECK(glp->VertexBlendEnviATI); glp->VertexBlendEnvfATI = (void APIENTRY (*)(GLenum pname, GLfloat param)) ldg_find("glVertexBlendEnvfATI", lib); GL_CHECK(glp->VertexBlendEnvfATI); glp->ElementPointerATI = (void APIENTRY (*)(GLenum type, const void *pointer)) ldg_find("glElementPointerATI", lib); GL_CHECK(glp->ElementPointerATI); glp->DrawElementArrayATI = (void APIENTRY (*)(GLenum mode, GLsizei count)) ldg_find("glDrawElementArrayATI", lib); GL_CHECK(glp->DrawElementArrayATI); glp->DrawRangeElementArrayATI = (void APIENTRY (*)(GLenum mode, GLuint start, GLuint end, GLsizei count)) ldg_find("glDrawRangeElementArrayATI", lib); GL_CHECK(glp->DrawRangeElementArrayATI); glp->DrawMeshArraysSUN = (void APIENTRY (*)(GLenum mode, GLint first, GLsizei count, GLsizei width)) ldg_find("glDrawMeshArraysSUN", lib); GL_CHECK(glp->DrawMeshArraysSUN); glp->GenOcclusionQueriesNV = (void APIENTRY (*)(GLsizei n, GLuint *ids)) ldg_find("glGenOcclusionQueriesNV", lib); GL_CHECK(glp->GenOcclusionQueriesNV); glp->DeleteOcclusionQueriesNV = (void APIENTRY (*)(GLsizei n, const GLuint *ids)) ldg_find("glDeleteOcclusionQueriesNV", lib); GL_CHECK(glp->DeleteOcclusionQueriesNV); glp->IsOcclusionQueryNV = (GLboolean APIENTRY (*)(GLuint id)) ldg_find("glIsOcclusionQueryNV", lib); GL_CHECK(glp->IsOcclusionQueryNV); glp->BeginOcclusionQueryNV = (void APIENTRY (*)(GLuint id)) ldg_find("glBeginOcclusionQueryNV", lib); GL_CHECK(glp->BeginOcclusionQueryNV); glp->EndOcclusionQueryNV = (void APIENTRY (*)(void)) ldg_find("glEndOcclusionQueryNV", lib); GL_CHECK(glp->EndOcclusionQueryNV); glp->GetOcclusionQueryivNV = (void APIENTRY (*)(GLuint id, GLenum pname, GLint *params)) ldg_find("glGetOcclusionQueryivNV", lib); GL_CHECK(glp->GetOcclusionQueryivNV); glp->GetOcclusionQueryuivNV = (void APIENTRY (*)(GLuint id, GLenum pname, GLuint *params)) ldg_find("glGetOcclusionQueryuivNV", lib); GL_CHECK(glp->GetOcclusionQueryuivNV); glp->PointParameteriNV = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glPointParameteriNV", lib); GL_CHECK(glp->PointParameteriNV); glp->PointParameterivNV = (void APIENTRY (*)(GLenum pname, const GLint *params)) ldg_find("glPointParameterivNV", lib); GL_CHECK(glp->PointParameterivNV); glp->ActiveStencilFaceEXT = (void APIENTRY (*)(GLenum face)) ldg_find("glActiveStencilFaceEXT", lib); GL_CHECK(glp->ActiveStencilFaceEXT); glp->ElementPointerAPPLE = (void APIENTRY (*)(GLenum type, const void *pointer)) ldg_find("glElementPointerAPPLE", lib); GL_CHECK(glp->ElementPointerAPPLE); glp->DrawElementArrayAPPLE = (void APIENTRY (*)(GLenum mode, GLint first, GLsizei count)) ldg_find("glDrawElementArrayAPPLE", lib); GL_CHECK(glp->DrawElementArrayAPPLE); glp->DrawRangeElementArrayAPPLE = (void APIENTRY (*)(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count)) ldg_find("glDrawRangeElementArrayAPPLE", lib); GL_CHECK(glp->DrawRangeElementArrayAPPLE); glp->MultiDrawElementArrayAPPLE = (void APIENTRY (*)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount)) ldg_find("glMultiDrawElementArrayAPPLE", lib); GL_CHECK(glp->MultiDrawElementArrayAPPLE); glp->MultiDrawRangeElementArrayAPPLE = (void APIENTRY (*)(GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount)) ldg_find("glMultiDrawRangeElementArrayAPPLE", lib); GL_CHECK(glp->MultiDrawRangeElementArrayAPPLE); glp->GenFencesAPPLE = (void APIENTRY (*)(GLsizei n, GLuint *fences)) ldg_find("glGenFencesAPPLE", lib); GL_CHECK(glp->GenFencesAPPLE); glp->DeleteFencesAPPLE = (void APIENTRY (*)(GLsizei n, const GLuint *fences)) ldg_find("glDeleteFencesAPPLE", lib); GL_CHECK(glp->DeleteFencesAPPLE); glp->SetFenceAPPLE = (void APIENTRY (*)(GLuint fence)) ldg_find("glSetFenceAPPLE", lib); GL_CHECK(glp->SetFenceAPPLE); glp->IsFenceAPPLE = (GLboolean APIENTRY (*)(GLuint fence)) ldg_find("glIsFenceAPPLE", lib); GL_CHECK(glp->IsFenceAPPLE); glp->TestFenceAPPLE = (GLboolean APIENTRY (*)(GLuint fence)) ldg_find("glTestFenceAPPLE", lib); GL_CHECK(glp->TestFenceAPPLE); glp->FinishFenceAPPLE = (void APIENTRY (*)(GLuint fence)) ldg_find("glFinishFenceAPPLE", lib); GL_CHECK(glp->FinishFenceAPPLE); glp->TestObjectAPPLE = (GLboolean APIENTRY (*)(GLenum object, GLuint name)) ldg_find("glTestObjectAPPLE", lib); GL_CHECK(glp->TestObjectAPPLE); glp->FinishObjectAPPLE = (void APIENTRY (*)(GLenum object, GLuint name)) ldg_find("glFinishObjectAPPLE", lib); GL_CHECK(glp->FinishObjectAPPLE); glp->BindVertexArrayAPPLE = (void APIENTRY (*)(GLuint array)) ldg_find("glBindVertexArrayAPPLE", lib); GL_CHECK(glp->BindVertexArrayAPPLE); glp->DeleteVertexArraysAPPLE = (void APIENTRY (*)(GLsizei n, const GLuint *arrays)) ldg_find("glDeleteVertexArraysAPPLE", lib); GL_CHECK(glp->DeleteVertexArraysAPPLE); glp->GenVertexArraysAPPLE = (void APIENTRY (*)(GLsizei n, GLuint *arrays)) ldg_find("glGenVertexArraysAPPLE", lib); GL_CHECK(glp->GenVertexArraysAPPLE); glp->IsVertexArrayAPPLE = (GLboolean APIENTRY (*)(GLuint array)) ldg_find("glIsVertexArrayAPPLE", lib); GL_CHECK(glp->IsVertexArrayAPPLE); glp->VertexArrayRangeAPPLE = (void APIENTRY (*)(GLsizei length, void *pointer)) ldg_find("glVertexArrayRangeAPPLE", lib); GL_CHECK(glp->VertexArrayRangeAPPLE); glp->FlushVertexArrayRangeAPPLE = (void APIENTRY (*)(GLsizei length, void *pointer)) ldg_find("glFlushVertexArrayRangeAPPLE", lib); GL_CHECK(glp->FlushVertexArrayRangeAPPLE); glp->VertexArrayParameteriAPPLE = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glVertexArrayParameteriAPPLE", lib); GL_CHECK(glp->VertexArrayParameteriAPPLE); glp->DrawBuffersATI = (void APIENTRY (*)(GLsizei n, const GLenum *bufs)) ldg_find("glDrawBuffersATI", lib); GL_CHECK(glp->DrawBuffersATI); glp->ProgramNamedParameter4fNV = (void APIENTRY (*)(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glProgramNamedParameter4fNV", lib); GL_CHECK(glp->ProgramNamedParameter4fNV); glp->ProgramNamedParameter4dNV = (void APIENTRY (*)(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glProgramNamedParameter4dNV", lib); GL_CHECK(glp->ProgramNamedParameter4dNV); glp->ProgramNamedParameter4fvNV = (void APIENTRY (*)(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v)) ldg_find("glProgramNamedParameter4fvNV", lib); GL_CHECK(glp->ProgramNamedParameter4fvNV); glp->ProgramNamedParameter4dvNV = (void APIENTRY (*)(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v)) ldg_find("glProgramNamedParameter4dvNV", lib); GL_CHECK(glp->ProgramNamedParameter4dvNV); glp->GetProgramNamedParameterfvNV = (void APIENTRY (*)(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params)) ldg_find("glGetProgramNamedParameterfvNV", lib); GL_CHECK(glp->GetProgramNamedParameterfvNV); glp->GetProgramNamedParameterdvNV = (void APIENTRY (*)(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params)) ldg_find("glGetProgramNamedParameterdvNV", lib); GL_CHECK(glp->GetProgramNamedParameterdvNV); glp->Vertex2hNV = (void APIENTRY (*)(GLhalfNV32 x, GLhalfNV32 y)) ldg_find("glVertex2hNV", lib); GL_CHECK(glp->Vertex2hNV); glp->Vertex2hvNV = (void APIENTRY (*)(const GLhalfNV *v)) ldg_find("glVertex2hvNV", lib); GL_CHECK(glp->Vertex2hvNV); glp->Vertex3hNV = (void APIENTRY (*)(GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z)) ldg_find("glVertex3hNV", lib); GL_CHECK(glp->Vertex3hNV); glp->Vertex3hvNV = (void APIENTRY (*)(const GLhalfNV *v)) ldg_find("glVertex3hvNV", lib); GL_CHECK(glp->Vertex3hvNV); glp->Vertex4hNV = (void APIENTRY (*)(GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w)) ldg_find("glVertex4hNV", lib); GL_CHECK(glp->Vertex4hNV); glp->Vertex4hvNV = (void APIENTRY (*)(const GLhalfNV *v)) ldg_find("glVertex4hvNV", lib); GL_CHECK(glp->Vertex4hvNV); glp->Normal3hNV = (void APIENTRY (*)(GLhalfNV32 nx, GLhalfNV32 ny, GLhalfNV32 nz)) ldg_find("glNormal3hNV", lib); GL_CHECK(glp->Normal3hNV); glp->Normal3hvNV = (void APIENTRY (*)(const GLhalfNV *v)) ldg_find("glNormal3hvNV", lib); GL_CHECK(glp->Normal3hvNV); glp->Color3hNV = (void APIENTRY (*)(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue)) ldg_find("glColor3hNV", lib); GL_CHECK(glp->Color3hNV); glp->Color3hvNV = (void APIENTRY (*)(const GLhalfNV *v)) ldg_find("glColor3hvNV", lib); GL_CHECK(glp->Color3hvNV); glp->Color4hNV = (void APIENTRY (*)(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue, GLhalfNV32 alpha)) ldg_find("glColor4hNV", lib); GL_CHECK(glp->Color4hNV); glp->Color4hvNV = (void APIENTRY (*)(const GLhalfNV *v)) ldg_find("glColor4hvNV", lib); GL_CHECK(glp->Color4hvNV); glp->TexCoord1hNV = (void APIENTRY (*)(GLhalfNV32 s)) ldg_find("glTexCoord1hNV", lib); GL_CHECK(glp->TexCoord1hNV); glp->TexCoord1hvNV = (void APIENTRY (*)(const GLhalfNV *v)) ldg_find("glTexCoord1hvNV", lib); GL_CHECK(glp->TexCoord1hvNV); glp->TexCoord2hNV = (void APIENTRY (*)(GLhalfNV32 s, GLhalfNV32 t)) ldg_find("glTexCoord2hNV", lib); GL_CHECK(glp->TexCoord2hNV); glp->TexCoord2hvNV = (void APIENTRY (*)(const GLhalfNV *v)) ldg_find("glTexCoord2hvNV", lib); GL_CHECK(glp->TexCoord2hvNV); glp->TexCoord3hNV = (void APIENTRY (*)(GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r)) ldg_find("glTexCoord3hNV", lib); GL_CHECK(glp->TexCoord3hNV); glp->TexCoord3hvNV = (void APIENTRY (*)(const GLhalfNV *v)) ldg_find("glTexCoord3hvNV", lib); GL_CHECK(glp->TexCoord3hvNV); glp->TexCoord4hNV = (void APIENTRY (*)(GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q)) ldg_find("glTexCoord4hNV", lib); GL_CHECK(glp->TexCoord4hNV); glp->TexCoord4hvNV = (void APIENTRY (*)(const GLhalfNV *v)) ldg_find("glTexCoord4hvNV", lib); GL_CHECK(glp->TexCoord4hvNV); glp->MultiTexCoord1hNV = (void APIENTRY (*)(GLenum target, GLhalfNV32 s)) ldg_find("glMultiTexCoord1hNV", lib); GL_CHECK(glp->MultiTexCoord1hNV); glp->MultiTexCoord1hvNV = (void APIENTRY (*)(GLenum target, const GLhalfNV *v)) ldg_find("glMultiTexCoord1hvNV", lib); GL_CHECK(glp->MultiTexCoord1hvNV); glp->MultiTexCoord2hNV = (void APIENTRY (*)(GLenum target, GLhalfNV32 s, GLhalfNV32 t)) ldg_find("glMultiTexCoord2hNV", lib); GL_CHECK(glp->MultiTexCoord2hNV); glp->MultiTexCoord2hvNV = (void APIENTRY (*)(GLenum target, const GLhalfNV *v)) ldg_find("glMultiTexCoord2hvNV", lib); GL_CHECK(glp->MultiTexCoord2hvNV); glp->MultiTexCoord3hNV = (void APIENTRY (*)(GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r)) ldg_find("glMultiTexCoord3hNV", lib); GL_CHECK(glp->MultiTexCoord3hNV); glp->MultiTexCoord3hvNV = (void APIENTRY (*)(GLenum target, const GLhalfNV *v)) ldg_find("glMultiTexCoord3hvNV", lib); GL_CHECK(glp->MultiTexCoord3hvNV); glp->MultiTexCoord4hNV = (void APIENTRY (*)(GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q)) ldg_find("glMultiTexCoord4hNV", lib); GL_CHECK(glp->MultiTexCoord4hNV); glp->MultiTexCoord4hvNV = (void APIENTRY (*)(GLenum target, const GLhalfNV *v)) ldg_find("glMultiTexCoord4hvNV", lib); GL_CHECK(glp->MultiTexCoord4hvNV); glp->FogCoordhNV = (void APIENTRY (*)(GLhalfNV32 fog)) ldg_find("glFogCoordhNV", lib); GL_CHECK(glp->FogCoordhNV); glp->FogCoordhvNV = (void APIENTRY (*)(const GLhalfNV *fog)) ldg_find("glFogCoordhvNV", lib); GL_CHECK(glp->FogCoordhvNV); glp->SecondaryColor3hNV = (void APIENTRY (*)(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue)) ldg_find("glSecondaryColor3hNV", lib); GL_CHECK(glp->SecondaryColor3hNV); glp->SecondaryColor3hvNV = (void APIENTRY (*)(const GLhalfNV *v)) ldg_find("glSecondaryColor3hvNV", lib); GL_CHECK(glp->SecondaryColor3hvNV); glp->VertexWeighthNV = (void APIENTRY (*)(GLhalfNV32 weight)) ldg_find("glVertexWeighthNV", lib); GL_CHECK(glp->VertexWeighthNV); glp->VertexWeighthvNV = (void APIENTRY (*)(const GLhalfNV *weight)) ldg_find("glVertexWeighthvNV", lib); GL_CHECK(glp->VertexWeighthvNV); glp->VertexAttrib1hNV = (void APIENTRY (*)(GLuint index, GLhalfNV32 x)) ldg_find("glVertexAttrib1hNV", lib); GL_CHECK(glp->VertexAttrib1hNV); glp->VertexAttrib1hvNV = (void APIENTRY (*)(GLuint index, const GLhalfNV *v)) ldg_find("glVertexAttrib1hvNV", lib); GL_CHECK(glp->VertexAttrib1hvNV); glp->VertexAttrib2hNV = (void APIENTRY (*)(GLuint index, GLhalfNV32 x, GLhalfNV32 y)) ldg_find("glVertexAttrib2hNV", lib); GL_CHECK(glp->VertexAttrib2hNV); glp->VertexAttrib2hvNV = (void APIENTRY (*)(GLuint index, const GLhalfNV *v)) ldg_find("glVertexAttrib2hvNV", lib); GL_CHECK(glp->VertexAttrib2hvNV); glp->VertexAttrib3hNV = (void APIENTRY (*)(GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z)) ldg_find("glVertexAttrib3hNV", lib); GL_CHECK(glp->VertexAttrib3hNV); glp->VertexAttrib3hvNV = (void APIENTRY (*)(GLuint index, const GLhalfNV *v)) ldg_find("glVertexAttrib3hvNV", lib); GL_CHECK(glp->VertexAttrib3hvNV); glp->VertexAttrib4hNV = (void APIENTRY (*)(GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w)) ldg_find("glVertexAttrib4hNV", lib); GL_CHECK(glp->VertexAttrib4hNV); glp->VertexAttrib4hvNV = (void APIENTRY (*)(GLuint index, const GLhalfNV *v)) ldg_find("glVertexAttrib4hvNV", lib); GL_CHECK(glp->VertexAttrib4hvNV); glp->VertexAttribs1hvNV = (void APIENTRY (*)(GLuint index, GLsizei n, const GLhalfNV *v)) ldg_find("glVertexAttribs1hvNV", lib); GL_CHECK(glp->VertexAttribs1hvNV); glp->VertexAttribs2hvNV = (void APIENTRY (*)(GLuint index, GLsizei n, const GLhalfNV *v)) ldg_find("glVertexAttribs2hvNV", lib); GL_CHECK(glp->VertexAttribs2hvNV); glp->VertexAttribs3hvNV = (void APIENTRY (*)(GLuint index, GLsizei n, const GLhalfNV *v)) ldg_find("glVertexAttribs3hvNV", lib); GL_CHECK(glp->VertexAttribs3hvNV); glp->VertexAttribs4hvNV = (void APIENTRY (*)(GLuint index, GLsizei n, const GLhalfNV *v)) ldg_find("glVertexAttribs4hvNV", lib); GL_CHECK(glp->VertexAttribs4hvNV); glp->PixelDataRangeNV = (void APIENTRY (*)(GLenum target, GLsizei length, const void *pointer)) ldg_find("glPixelDataRangeNV", lib); GL_CHECK(glp->PixelDataRangeNV); glp->FlushPixelDataRangeNV = (void APIENTRY (*)(GLenum target)) ldg_find("glFlushPixelDataRangeNV", lib); GL_CHECK(glp->FlushPixelDataRangeNV); glp->PrimitiveRestartNV = (void APIENTRY (*)(void)) ldg_find("glPrimitiveRestartNV", lib); GL_CHECK(glp->PrimitiveRestartNV); glp->PrimitiveRestartIndexNV = (void APIENTRY (*)(GLuint index)) ldg_find("glPrimitiveRestartIndexNV", lib); GL_CHECK(glp->PrimitiveRestartIndexNV); glp->MapObjectBufferATI = (void * APIENTRY (*)(GLuint buffer)) ldg_find("glMapObjectBufferATI", lib); GL_CHECK(glp->MapObjectBufferATI); glp->UnmapObjectBufferATI = (void APIENTRY (*)(GLuint buffer)) ldg_find("glUnmapObjectBufferATI", lib); GL_CHECK(glp->UnmapObjectBufferATI); glp->StencilOpSeparateATI = (void APIENTRY (*)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)) ldg_find("glStencilOpSeparateATI", lib); GL_CHECK(glp->StencilOpSeparateATI); glp->StencilFuncSeparateATI = (void APIENTRY (*)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)) ldg_find("glStencilFuncSeparateATI", lib); GL_CHECK(glp->StencilFuncSeparateATI); glp->VertexAttribArrayObjectATI = (void APIENTRY (*)(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLuint buffer, GLuint offset)) ldg_find("glVertexAttribArrayObjectATI", lib); GL_CHECK(glp->VertexAttribArrayObjectATI); glp->GetVertexAttribArrayObjectfvATI = (void APIENTRY (*)(GLuint index, GLenum pname, GLfloat *params)) ldg_find("glGetVertexAttribArrayObjectfvATI", lib); GL_CHECK(glp->GetVertexAttribArrayObjectfvATI); glp->GetVertexAttribArrayObjectivATI = (void APIENTRY (*)(GLuint index, GLenum pname, GLint *params)) ldg_find("glGetVertexAttribArrayObjectivATI", lib); GL_CHECK(glp->GetVertexAttribArrayObjectivATI); glp->DepthBoundsEXT = (void APIENTRY (*)(GLclampd zmin, GLclampd zmax)) ldg_find("glDepthBoundsEXT", lib); GL_CHECK(glp->DepthBoundsEXT); glp->BlendEquationSeparateEXT = (void APIENTRY (*)(GLenum modeRGB, GLenum modeAlpha)) ldg_find("glBlendEquationSeparateEXT", lib); GL_CHECK(glp->BlendEquationSeparateEXT); glp->OSMesaColorClamp = (void APIENTRY (*)(GLboolean32 enable)) ldg_find("OSMesaColorClamp", lib); GL_CHECK(glp->OSMesaColorClamp); glp->OSMesaPostprocess = (void APIENTRY (*)(OSMesaContext osmesa, const char *filter, GLuint enable_value)) ldg_find("OSMesaPostprocess", lib); GL_CHECK(glp->OSMesaPostprocess); glp->OSMesaCreateLDG = (void * APIENTRY (*)(GLenum format, GLenum type, GLint width, GLint height)) ldg_find("OSMesaCreateLDG", lib); GL_CHECK(glp->OSMesaCreateLDG); glp->OSMesaDestroyLDG = (void APIENTRY (*)(void)) ldg_find("OSMesaDestroyLDG", lib); GL_CHECK(glp->OSMesaDestroyLDG); glp->max_width = (GLsizei APIENTRY (*)(void)) ldg_find("max_width", lib); GL_CHECK(glp->max_width); glp->max_height = (GLsizei APIENTRY (*)(void)) ldg_find("max_height", lib); GL_CHECK(glp->max_height); glp->information = (void APIENTRY (*)(void)) ldg_find("information", lib); GL_CHECK(glp->information); glp->exception_error = (void APIENTRY (*)(void (CALLBACK *exception)(GLenum param) )) ldg_find("exception_error", lib); GL_CHECK(glp->exception_error); glp->gluLookAtf = (void APIENTRY (*)(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ)) ldg_find("gluLookAt", lib); GL_CHECK(glp->gluLookAtf); glp->Frustumf = (void APIENTRY (*)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val)) ldg_find("glFrustum", lib); GL_CHECK(glp->Frustumf); glp->Orthof = (void APIENTRY (*)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val)) ldg_find("glOrtho", lib); GL_CHECK(glp->Orthof); glp->swapbuffer = (void APIENTRY (*)(void *buffer)) ldg_find("swapbuffer", lib); GL_CHECK(glp->swapbuffer); glp->gluLookAt = (void APIENTRY (*)(GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ)) ldg_find("gluLookAtd", lib); GL_CHECK(glp->gluLookAt); glp->AccumxOES = (void APIENTRY (*)(GLenum op, GLfixed value)) ldg_find("glAccumxOES", lib); GL_CHECK(glp->AccumxOES); glp->ActiveProgramEXT = (void APIENTRY (*)(GLuint program)) ldg_find("glActiveProgramEXT", lib); GL_CHECK(glp->ActiveProgramEXT); glp->ActiveShaderProgram = (void APIENTRY (*)(GLuint pipeline, GLuint program)) ldg_find("glActiveShaderProgram", lib); GL_CHECK(glp->ActiveShaderProgram); glp->ActiveVaryingNV = (void APIENTRY (*)(GLuint program, const GLchar *name)) ldg_find("glActiveVaryingNV", lib); GL_CHECK(glp->ActiveVaryingNV); glp->AddSwapHintRectWIN = (void APIENTRY (*)(GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glAddSwapHintRectWIN", lib); GL_CHECK(glp->AddSwapHintRectWIN); glp->AlphaFuncxOES = (void APIENTRY (*)(GLenum func, GLfixed ref)) ldg_find("glAlphaFuncxOES", lib); GL_CHECK(glp->AlphaFuncxOES); glp->AttachShader = (void APIENTRY (*)(GLuint program, GLuint shader)) ldg_find("glAttachShader", lib); GL_CHECK(glp->AttachShader); glp->BeginConditionalRender = (void APIENTRY (*)(GLuint id, GLenum mode)) ldg_find("glBeginConditionalRender", lib); GL_CHECK(glp->BeginConditionalRender); glp->BeginConditionalRenderNV = (void APIENTRY (*)(GLuint id, GLenum mode)) ldg_find("glBeginConditionalRenderNV", lib); GL_CHECK(glp->BeginConditionalRenderNV); glp->BeginConditionalRenderNVX = (void APIENTRY (*)(GLuint id)) ldg_find("glBeginConditionalRenderNVX", lib); GL_CHECK(glp->BeginConditionalRenderNVX); glp->BeginPerfMonitorAMD = (void APIENTRY (*)(GLuint monitor)) ldg_find("glBeginPerfMonitorAMD", lib); GL_CHECK(glp->BeginPerfMonitorAMD); glp->BeginPerfQueryINTEL = (void APIENTRY (*)(GLuint queryHandle)) ldg_find("glBeginPerfQueryINTEL", lib); GL_CHECK(glp->BeginPerfQueryINTEL); glp->BeginQueryIndexed = (void APIENTRY (*)(GLenum target, GLuint index, GLuint id)) ldg_find("glBeginQueryIndexed", lib); GL_CHECK(glp->BeginQueryIndexed); glp->BeginTransformFeedback = (void APIENTRY (*)(GLenum primitiveMode)) ldg_find("glBeginTransformFeedback", lib); GL_CHECK(glp->BeginTransformFeedback); glp->BeginTransformFeedbackEXT = (void APIENTRY (*)(GLenum primitiveMode)) ldg_find("glBeginTransformFeedbackEXT", lib); GL_CHECK(glp->BeginTransformFeedbackEXT); glp->BeginTransformFeedbackNV = (void APIENTRY (*)(GLenum primitiveMode)) ldg_find("glBeginTransformFeedbackNV", lib); GL_CHECK(glp->BeginTransformFeedbackNV); glp->BeginVideoCaptureNV = (void APIENTRY (*)(GLuint video_capture_slot)) ldg_find("glBeginVideoCaptureNV", lib); GL_CHECK(glp->BeginVideoCaptureNV); glp->BindAttribLocation = (void APIENTRY (*)(GLuint program, GLuint index, const GLchar *name)) ldg_find("glBindAttribLocation", lib); GL_CHECK(glp->BindAttribLocation); glp->BindBufferBase = (void APIENTRY (*)(GLenum target, GLuint index, GLuint buffer)) ldg_find("glBindBufferBase", lib); GL_CHECK(glp->BindBufferBase); glp->BindBufferBaseEXT = (void APIENTRY (*)(GLenum target, GLuint index, GLuint buffer)) ldg_find("glBindBufferBaseEXT", lib); GL_CHECK(glp->BindBufferBaseEXT); glp->BindBufferBaseNV = (void APIENTRY (*)(GLenum target, GLuint index, GLuint buffer)) ldg_find("glBindBufferBaseNV", lib); GL_CHECK(glp->BindBufferBaseNV); glp->BindBufferOffsetEXT = (void APIENTRY (*)(GLenum target, GLuint index, GLuint buffer, GLintptr offset)) ldg_find("glBindBufferOffsetEXT", lib); GL_CHECK(glp->BindBufferOffsetEXT); glp->BindBufferOffsetNV = (void APIENTRY (*)(GLenum target, GLuint index, GLuint buffer, GLintptr offset)) ldg_find("glBindBufferOffsetNV", lib); GL_CHECK(glp->BindBufferOffsetNV); glp->BindBufferRange = (void APIENTRY (*)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) ldg_find("glBindBufferRange", lib); GL_CHECK(glp->BindBufferRange); glp->BindBufferRangeEXT = (void APIENTRY (*)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) ldg_find("glBindBufferRangeEXT", lib); GL_CHECK(glp->BindBufferRangeEXT); glp->BindBufferRangeNV = (void APIENTRY (*)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) ldg_find("glBindBufferRangeNV", lib); GL_CHECK(glp->BindBufferRangeNV); glp->BindBuffersBase = (void APIENTRY (*)(GLenum target, GLuint first, GLsizei count, const GLuint *buffers)) ldg_find("glBindBuffersBase", lib); GL_CHECK(glp->BindBuffersBase); glp->BindBuffersRange = (void APIENTRY (*)(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes)) ldg_find("glBindBuffersRange", lib); GL_CHECK(glp->BindBuffersRange); glp->BindFragDataLocation = (void APIENTRY (*)(GLuint program, GLuint color, const GLchar *name)) ldg_find("glBindFragDataLocation", lib); GL_CHECK(glp->BindFragDataLocation); glp->BindFragDataLocationEXT = (void APIENTRY (*)(GLuint program, GLuint color, const GLchar *name)) ldg_find("glBindFragDataLocationEXT", lib); GL_CHECK(glp->BindFragDataLocationEXT); glp->BindFragDataLocationIndexed = (void APIENTRY (*)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name)) ldg_find("glBindFragDataLocationIndexed", lib); GL_CHECK(glp->BindFragDataLocationIndexed); glp->BindFramebuffer = (void APIENTRY (*)(GLenum target, GLuint framebuffer)) ldg_find("glBindFramebuffer", lib); GL_CHECK(glp->BindFramebuffer); glp->BindFramebufferEXT = (void APIENTRY (*)(GLenum target, GLuint framebuffer)) ldg_find("glBindFramebufferEXT", lib); GL_CHECK(glp->BindFramebufferEXT); glp->BindImageTexture = (void APIENTRY (*)(GLuint unit, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLenum format)) ldg_find("glBindImageTexture", lib); GL_CHECK(glp->BindImageTexture); glp->BindImageTextureEXT = (void APIENTRY (*)(GLuint index, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLint format)) ldg_find("glBindImageTextureEXT", lib); GL_CHECK(glp->BindImageTextureEXT); glp->BindImageTextures = (void APIENTRY (*)(GLuint first, GLsizei count, const GLuint *textures)) ldg_find("glBindImageTextures", lib); GL_CHECK(glp->BindImageTextures); glp->BindMultiTextureEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLuint texture)) ldg_find("glBindMultiTextureEXT", lib); GL_CHECK(glp->BindMultiTextureEXT); glp->BindProgramPipeline = (void APIENTRY (*)(GLuint pipeline)) ldg_find("glBindProgramPipeline", lib); GL_CHECK(glp->BindProgramPipeline); glp->BindRenderbuffer = (void APIENTRY (*)(GLenum target, GLuint renderbuffer)) ldg_find("glBindRenderbuffer", lib); GL_CHECK(glp->BindRenderbuffer); glp->BindRenderbufferEXT = (void APIENTRY (*)(GLenum target, GLuint renderbuffer)) ldg_find("glBindRenderbufferEXT", lib); GL_CHECK(glp->BindRenderbufferEXT); glp->BindSampler = (void APIENTRY (*)(GLuint unit, GLuint sampler)) ldg_find("glBindSampler", lib); GL_CHECK(glp->BindSampler); glp->BindSamplers = (void APIENTRY (*)(GLuint first, GLsizei count, const GLuint *samplers)) ldg_find("glBindSamplers", lib); GL_CHECK(glp->BindSamplers); glp->BindTextures = (void APIENTRY (*)(GLuint first, GLsizei count, const GLuint *textures)) ldg_find("glBindTextures", lib); GL_CHECK(glp->BindTextures); glp->BindTransformFeedback = (void APIENTRY (*)(GLenum target, GLuint id)) ldg_find("glBindTransformFeedback", lib); GL_CHECK(glp->BindTransformFeedback); glp->BindTransformFeedbackNV = (void APIENTRY (*)(GLenum target, GLuint id)) ldg_find("glBindTransformFeedbackNV", lib); GL_CHECK(glp->BindTransformFeedbackNV); glp->BindVertexArray = (void APIENTRY (*)(GLuint array)) ldg_find("glBindVertexArray", lib); GL_CHECK(glp->BindVertexArray); glp->BindVertexBuffer = (void APIENTRY (*)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)) ldg_find("glBindVertexBuffer", lib); GL_CHECK(glp->BindVertexBuffer); glp->BindVertexBuffers = (void APIENTRY (*)(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides)) ldg_find("glBindVertexBuffers", lib); GL_CHECK(glp->BindVertexBuffers); glp->BindVideoCaptureStreamBufferNV = (void APIENTRY (*)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset)) ldg_find("glBindVideoCaptureStreamBufferNV", lib); GL_CHECK(glp->BindVideoCaptureStreamBufferNV); glp->BindVideoCaptureStreamTextureNV = (void APIENTRY (*)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture)) ldg_find("glBindVideoCaptureStreamTextureNV", lib); GL_CHECK(glp->BindVideoCaptureStreamTextureNV); glp->BitmapxOES = (void APIENTRY (*)(GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap)) ldg_find("glBitmapxOES", lib); GL_CHECK(glp->BitmapxOES); glp->BlendBarrierNV = (void APIENTRY (*)(void)) ldg_find("glBlendBarrierNV", lib); GL_CHECK(glp->BlendBarrierNV); glp->BlendColorxOES = (void APIENTRY (*)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)) ldg_find("glBlendColorxOES", lib); GL_CHECK(glp->BlendColorxOES); glp->BlendEquationIndexedAMD = (void APIENTRY (*)(GLuint buf, GLenum mode)) ldg_find("glBlendEquationIndexedAMD", lib); GL_CHECK(glp->BlendEquationIndexedAMD); glp->BlendEquationSeparate = (void APIENTRY (*)(GLenum modeRGB, GLenum modeAlpha)) ldg_find("glBlendEquationSeparate", lib); GL_CHECK(glp->BlendEquationSeparate); glp->BlendEquationSeparateIndexedAMD = (void APIENTRY (*)(GLuint buf, GLenum modeRGB, GLenum modeAlpha)) ldg_find("glBlendEquationSeparateIndexedAMD", lib); GL_CHECK(glp->BlendEquationSeparateIndexedAMD); glp->BlendEquationSeparatei = (void APIENTRY (*)(GLuint buf, GLenum modeRGB, GLenum modeAlpha)) ldg_find("glBlendEquationSeparatei", lib); GL_CHECK(glp->BlendEquationSeparatei); glp->BlendEquationSeparateiARB = (void APIENTRY (*)(GLuint buf, GLenum modeRGB, GLenum modeAlpha)) ldg_find("glBlendEquationSeparateiARB", lib); GL_CHECK(glp->BlendEquationSeparateiARB); glp->BlendEquationi = (void APIENTRY (*)(GLuint buf, GLenum mode)) ldg_find("glBlendEquationi", lib); GL_CHECK(glp->BlendEquationi); glp->BlendEquationiARB = (void APIENTRY (*)(GLuint buf, GLenum mode)) ldg_find("glBlendEquationiARB", lib); GL_CHECK(glp->BlendEquationiARB); glp->BlendFuncIndexedAMD = (void APIENTRY (*)(GLuint buf, GLenum src, GLenum dst)) ldg_find("glBlendFuncIndexedAMD", lib); GL_CHECK(glp->BlendFuncIndexedAMD); glp->BlendFuncSeparateIndexedAMD = (void APIENTRY (*)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)) ldg_find("glBlendFuncSeparateIndexedAMD", lib); GL_CHECK(glp->BlendFuncSeparateIndexedAMD); glp->BlendFuncSeparatei = (void APIENTRY (*)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)) ldg_find("glBlendFuncSeparatei", lib); GL_CHECK(glp->BlendFuncSeparatei); glp->BlendFuncSeparateiARB = (void APIENTRY (*)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)) ldg_find("glBlendFuncSeparateiARB", lib); GL_CHECK(glp->BlendFuncSeparateiARB); glp->BlendFunci = (void APIENTRY (*)(GLuint buf, GLenum src, GLenum dst)) ldg_find("glBlendFunci", lib); GL_CHECK(glp->BlendFunci); glp->BlendFunciARB = (void APIENTRY (*)(GLuint buf, GLenum src, GLenum dst)) ldg_find("glBlendFunciARB", lib); GL_CHECK(glp->BlendFunciARB); glp->BlendParameteriNV = (void APIENTRY (*)(GLenum pname, GLint value)) ldg_find("glBlendParameteriNV", lib); GL_CHECK(glp->BlendParameteriNV); glp->BlitFramebuffer = (void APIENTRY (*)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) ldg_find("glBlitFramebuffer", lib); GL_CHECK(glp->BlitFramebuffer); glp->BlitFramebufferEXT = (void APIENTRY (*)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) ldg_find("glBlitFramebufferEXT", lib); GL_CHECK(glp->BlitFramebufferEXT); glp->BufferAddressRangeNV = (void APIENTRY (*)(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length)) ldg_find("glBufferAddressRangeNV", lib); GL_CHECK(glp->BufferAddressRangeNV); glp->BufferParameteriAPPLE = (void APIENTRY (*)(GLenum target, GLenum pname, GLint param)) ldg_find("glBufferParameteriAPPLE", lib); GL_CHECK(glp->BufferParameteriAPPLE); glp->BufferStorage = (void APIENTRY (*)(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags)) ldg_find("glBufferStorage", lib); GL_CHECK(glp->BufferStorage); glp->CheckFramebufferStatus = (GLenum APIENTRY (*)(GLenum target)) ldg_find("glCheckFramebufferStatus", lib); GL_CHECK(glp->CheckFramebufferStatus); glp->CheckFramebufferStatusEXT = (GLenum APIENTRY (*)(GLenum target)) ldg_find("glCheckFramebufferStatusEXT", lib); GL_CHECK(glp->CheckFramebufferStatusEXT); glp->CheckNamedFramebufferStatusEXT = (GLenum APIENTRY (*)(GLuint framebuffer, GLenum target)) ldg_find("glCheckNamedFramebufferStatusEXT", lib); GL_CHECK(glp->CheckNamedFramebufferStatusEXT); glp->ClampColor = (void APIENTRY (*)(GLenum target, GLenum clamp)) ldg_find("glClampColor", lib); GL_CHECK(glp->ClampColor); glp->ClampColorARB = (void APIENTRY (*)(GLenum target, GLenum clamp)) ldg_find("glClampColorARB", lib); GL_CHECK(glp->ClampColorARB); glp->ClearAccumxOES = (void APIENTRY (*)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)) ldg_find("glClearAccumxOES", lib); GL_CHECK(glp->ClearAccumxOES); glp->ClearBufferData = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data)) ldg_find("glClearBufferData", lib); GL_CHECK(glp->ClearBufferData); glp->ClearBufferSubData = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)) ldg_find("glClearBufferSubData", lib); GL_CHECK(glp->ClearBufferSubData); glp->ClearBufferfi = (void APIENTRY (*)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)) ldg_find("glClearBufferfi", lib); GL_CHECK(glp->ClearBufferfi); glp->ClearBufferfv = (void APIENTRY (*)(GLenum buffer, GLint drawbuffer, const GLfloat *value)) ldg_find("glClearBufferfv", lib); GL_CHECK(glp->ClearBufferfv); glp->ClearBufferiv = (void APIENTRY (*)(GLenum buffer, GLint drawbuffer, const GLint *value)) ldg_find("glClearBufferiv", lib); GL_CHECK(glp->ClearBufferiv); glp->ClearBufferuiv = (void APIENTRY (*)(GLenum buffer, GLint drawbuffer, const GLuint *value)) ldg_find("glClearBufferuiv", lib); GL_CHECK(glp->ClearBufferuiv); glp->ClearColorIiEXT = (void APIENTRY (*)(GLint red, GLint green, GLint blue, GLint alpha)) ldg_find("glClearColorIiEXT", lib); GL_CHECK(glp->ClearColorIiEXT); glp->ClearColorIuiEXT = (void APIENTRY (*)(GLuint red, GLuint green, GLuint blue, GLuint alpha)) ldg_find("glClearColorIuiEXT", lib); GL_CHECK(glp->ClearColorIuiEXT); glp->ClearColorxOES = (void APIENTRY (*)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)) ldg_find("glClearColorxOES", lib); GL_CHECK(glp->ClearColorxOES); glp->ClearDebugLogMESA = (void APIENTRY (*)(GLhandleARB obj, GLenum logType, GLenum shaderType)) ldg_find("glClearDebugLogMESA", lib); GL_CHECK(glp->ClearDebugLogMESA); glp->ClearDepthdNV = (void APIENTRY (*)(GLdouble depth)) ldg_find("glClearDepthdNV", lib); GL_CHECK(glp->ClearDepthdNV); glp->ClearDepthf = (void APIENTRY (*)(GLfloat d)) ldg_find("glClearDepth", lib); GL_CHECK(glp->ClearDepthf); glp->ClearDepthfOES = (void APIENTRY (*)(GLclampf depth)) ldg_find("glClearDepthfOES", lib); GL_CHECK(glp->ClearDepthfOES); glp->ClearDepthxOES = (void APIENTRY (*)(GLfixed depth)) ldg_find("glClearDepthxOES", lib); GL_CHECK(glp->ClearDepthxOES); glp->ClearNamedBufferDataEXT = (void APIENTRY (*)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data)) ldg_find("glClearNamedBufferDataEXT", lib); GL_CHECK(glp->ClearNamedBufferDataEXT); glp->ClearNamedBufferSubDataEXT = (void APIENTRY (*)(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)) ldg_find("glClearNamedBufferSubDataEXT", lib); GL_CHECK(glp->ClearNamedBufferSubDataEXT); glp->ClearTexImage = (void APIENTRY (*)(GLuint texture, GLint level, GLenum format, GLenum type, const void *data)) ldg_find("glClearTexImage", lib); GL_CHECK(glp->ClearTexImage); glp->ClearTexSubImage = (void APIENTRY (*)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data)) ldg_find("glClearTexSubImage", lib); GL_CHECK(glp->ClearTexSubImage); glp->ClientAttribDefaultEXT = (void APIENTRY (*)(GLbitfield mask)) ldg_find("glClientAttribDefaultEXT", lib); GL_CHECK(glp->ClientAttribDefaultEXT); glp->ClientWaitSync = (GLenum APIENTRY (*)(GLsync sync, GLbitfield flags, GLuint64 timeout)) ldg_find("glClientWaitSync", lib); GL_CHECK(glp->ClientWaitSync); glp->ClipPlanefOES = (void APIENTRY (*)(GLenum plane, const GLfloat *equation)) ldg_find("glClipPlanefOES", lib); GL_CHECK(glp->ClipPlanefOES); glp->ClipPlanexOES = (void APIENTRY (*)(GLenum plane, const GLfixed *equation)) ldg_find("glClipPlanexOES", lib); GL_CHECK(glp->ClipPlanexOES); glp->Color3xOES = (void APIENTRY (*)(GLfixed red, GLfixed green, GLfixed blue)) ldg_find("glColor3xOES", lib); GL_CHECK(glp->Color3xOES); glp->Color3xvOES = (void APIENTRY (*)(const GLfixed *components)) ldg_find("glColor3xvOES", lib); GL_CHECK(glp->Color3xvOES); glp->Color4xOES = (void APIENTRY (*)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)) ldg_find("glColor4xOES", lib); GL_CHECK(glp->Color4xOES); glp->Color4xvOES = (void APIENTRY (*)(const GLfixed *components)) ldg_find("glColor4xvOES", lib); GL_CHECK(glp->Color4xvOES); glp->ColorFormatNV = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride)) ldg_find("glColorFormatNV", lib); GL_CHECK(glp->ColorFormatNV); glp->ColorMaskIndexedEXT = (void APIENTRY (*)(GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a)) ldg_find("glColorMaskIndexedEXT", lib); GL_CHECK(glp->ColorMaskIndexedEXT); glp->ColorMaski = (void APIENTRY (*)(GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a)) ldg_find("glColorMaski", lib); GL_CHECK(glp->ColorMaski); glp->ColorP3ui = (void APIENTRY (*)(GLenum type, GLuint color)) ldg_find("glColorP3ui", lib); GL_CHECK(glp->ColorP3ui); glp->ColorP3uiv = (void APIENTRY (*)(GLenum type, const GLuint *color)) ldg_find("glColorP3uiv", lib); GL_CHECK(glp->ColorP3uiv); glp->ColorP4ui = (void APIENTRY (*)(GLenum type, GLuint color)) ldg_find("glColorP4ui", lib); GL_CHECK(glp->ColorP4ui); glp->ColorP4uiv = (void APIENTRY (*)(GLenum type, const GLuint *color)) ldg_find("glColorP4uiv", lib); GL_CHECK(glp->ColorP4uiv); glp->CompileShader = (void APIENTRY (*)(GLuint shader)) ldg_find("glCompileShader", lib); GL_CHECK(glp->CompileShader); glp->CompileShaderIncludeARB = (void APIENTRY (*)(GLuint shader, GLsizei count, const GLchar *const *path, const GLint *length)) ldg_find("glCompileShaderIncludeARB", lib); GL_CHECK(glp->CompileShaderIncludeARB); glp->CompressedMultiTexImage1DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits)) ldg_find("glCompressedMultiTexImage1DEXT", lib); GL_CHECK(glp->CompressedMultiTexImage1DEXT); glp->CompressedMultiTexImage2DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits)) ldg_find("glCompressedMultiTexImage2DEXT", lib); GL_CHECK(glp->CompressedMultiTexImage2DEXT); glp->CompressedMultiTexImage3DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits)) ldg_find("glCompressedMultiTexImage3DEXT", lib); GL_CHECK(glp->CompressedMultiTexImage3DEXT); glp->CompressedMultiTexSubImage1DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits)) ldg_find("glCompressedMultiTexSubImage1DEXT", lib); GL_CHECK(glp->CompressedMultiTexSubImage1DEXT); glp->CompressedMultiTexSubImage2DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits)) ldg_find("glCompressedMultiTexSubImage2DEXT", lib); GL_CHECK(glp->CompressedMultiTexSubImage2DEXT); glp->CompressedMultiTexSubImage3DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits)) ldg_find("glCompressedMultiTexSubImage3DEXT", lib); GL_CHECK(glp->CompressedMultiTexSubImage3DEXT); glp->CompressedTextureImage1DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits)) ldg_find("glCompressedTextureImage1DEXT", lib); GL_CHECK(glp->CompressedTextureImage1DEXT); glp->CompressedTextureImage2DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits)) ldg_find("glCompressedTextureImage2DEXT", lib); GL_CHECK(glp->CompressedTextureImage2DEXT); glp->CompressedTextureImage3DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits)) ldg_find("glCompressedTextureImage3DEXT", lib); GL_CHECK(glp->CompressedTextureImage3DEXT); glp->CompressedTextureSubImage1DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits)) ldg_find("glCompressedTextureSubImage1DEXT", lib); GL_CHECK(glp->CompressedTextureSubImage1DEXT); glp->CompressedTextureSubImage2DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits)) ldg_find("glCompressedTextureSubImage2DEXT", lib); GL_CHECK(glp->CompressedTextureSubImage2DEXT); glp->CompressedTextureSubImage3DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits)) ldg_find("glCompressedTextureSubImage3DEXT", lib); GL_CHECK(glp->CompressedTextureSubImage3DEXT); glp->ConvolutionParameterxOES = (void APIENTRY (*)(GLenum target, GLenum pname, GLfixed param)) ldg_find("glConvolutionParameterxOES", lib); GL_CHECK(glp->ConvolutionParameterxOES); glp->ConvolutionParameterxvOES = (void APIENTRY (*)(GLenum target, GLenum pname, const GLfixed *params)) ldg_find("glConvolutionParameterxvOES", lib); GL_CHECK(glp->ConvolutionParameterxvOES); glp->CopyBufferSubData = (void APIENTRY (*)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)) ldg_find("glCopyBufferSubData", lib); GL_CHECK(glp->CopyBufferSubData); glp->CopyImageSubData = (void APIENTRY (*)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)) ldg_find("glCopyImageSubData", lib); GL_CHECK(glp->CopyImageSubData); glp->CopyImageSubDataNV = (void APIENTRY (*)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)) ldg_find("glCopyImageSubDataNV", lib); GL_CHECK(glp->CopyImageSubDataNV); glp->CopyMultiTexImage1DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)) ldg_find("glCopyMultiTexImage1DEXT", lib); GL_CHECK(glp->CopyMultiTexImage1DEXT); glp->CopyMultiTexImage2DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)) ldg_find("glCopyMultiTexImage2DEXT", lib); GL_CHECK(glp->CopyMultiTexImage2DEXT); glp->CopyMultiTexSubImage1DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)) ldg_find("glCopyMultiTexSubImage1DEXT", lib); GL_CHECK(glp->CopyMultiTexSubImage1DEXT); glp->CopyMultiTexSubImage2DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glCopyMultiTexSubImage2DEXT", lib); GL_CHECK(glp->CopyMultiTexSubImage2DEXT); glp->CopyMultiTexSubImage3DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glCopyMultiTexSubImage3DEXT", lib); GL_CHECK(glp->CopyMultiTexSubImage3DEXT); glp->CopyPathNV = (void APIENTRY (*)(GLuint resultPath, GLuint srcPath)) ldg_find("glCopyPathNV", lib); GL_CHECK(glp->CopyPathNV); glp->CopyTextureImage1DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)) ldg_find("glCopyTextureImage1DEXT", lib); GL_CHECK(glp->CopyTextureImage1DEXT); glp->CopyTextureImage2DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)) ldg_find("glCopyTextureImage2DEXT", lib); GL_CHECK(glp->CopyTextureImage2DEXT); glp->CopyTextureSubImage1DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)) ldg_find("glCopyTextureSubImage1DEXT", lib); GL_CHECK(glp->CopyTextureSubImage1DEXT); glp->CopyTextureSubImage2DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glCopyTextureSubImage2DEXT", lib); GL_CHECK(glp->CopyTextureSubImage2DEXT); glp->CopyTextureSubImage3DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glCopyTextureSubImage3DEXT", lib); GL_CHECK(glp->CopyTextureSubImage3DEXT); glp->CoverFillPathInstancedNV = (void APIENTRY (*)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)) ldg_find("glCoverFillPathInstancedNV", lib); GL_CHECK(glp->CoverFillPathInstancedNV); glp->CoverFillPathNV = (void APIENTRY (*)(GLuint path, GLenum coverMode)) ldg_find("glCoverFillPathNV", lib); GL_CHECK(glp->CoverFillPathNV); glp->CoverStrokePathInstancedNV = (void APIENTRY (*)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)) ldg_find("glCoverStrokePathInstancedNV", lib); GL_CHECK(glp->CoverStrokePathInstancedNV); glp->CoverStrokePathNV = (void APIENTRY (*)(GLuint path, GLenum coverMode)) ldg_find("glCoverStrokePathNV", lib); GL_CHECK(glp->CoverStrokePathNV); glp->CreateDebugObjectMESA = (GLhandleARB APIENTRY (*)(void)) ldg_find("glCreateDebugObjectMESA", lib); GL_CHECK(glp->CreateDebugObjectMESA); glp->CreatePerfQueryINTEL = (void APIENTRY (*)(GLuint queryId, GLuint *queryHandle)) ldg_find("glCreatePerfQueryINTEL", lib); GL_CHECK(glp->CreatePerfQueryINTEL); glp->CreateProgram = (GLuint APIENTRY (*)(void)) ldg_find("glCreateProgram", lib); GL_CHECK(glp->CreateProgram); glp->CreateShader = (GLuint APIENTRY (*)(GLenum type)) ldg_find("glCreateShader", lib); GL_CHECK(glp->CreateShader); glp->CreateShaderProgramEXT = (GLuint APIENTRY (*)(GLenum type, const GLchar *string)) ldg_find("glCreateShaderProgramEXT", lib); GL_CHECK(glp->CreateShaderProgramEXT); glp->CreateShaderProgramv = (GLuint APIENTRY (*)(GLenum type, GLsizei count, const GLchar *const *strings)) ldg_find("glCreateShaderProgramv", lib); GL_CHECK(glp->CreateShaderProgramv); glp->CreateSyncFromCLeventARB = (GLsync APIENTRY (*)(struct _cl_context *context, struct _cl_event *event, GLbitfield flags)) ldg_find("glCreateSyncFromCLeventARB", lib); GL_CHECK(glp->CreateSyncFromCLeventARB); glp->DebugMessageCallback = (void APIENTRY (*)(GLDEBUGPROC callback, const void *userParam)) ldg_find("glDebugMessageCallback", lib); GL_CHECK(glp->DebugMessageCallback); glp->DebugMessageCallbackAMD = (void APIENTRY (*)(GLDEBUGPROCAMD callback, void *userParam)) ldg_find("glDebugMessageCallbackAMD", lib); GL_CHECK(glp->DebugMessageCallbackAMD); glp->DebugMessageCallbackARB = (void APIENTRY (*)(GLDEBUGPROCARB callback, const void *userParam)) ldg_find("glDebugMessageCallbackARB", lib); GL_CHECK(glp->DebugMessageCallbackARB); glp->DebugMessageControl = (void APIENTRY (*)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled)) ldg_find("glDebugMessageControl", lib); GL_CHECK(glp->DebugMessageControl); glp->DebugMessageControlARB = (void APIENTRY (*)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled)) ldg_find("glDebugMessageControlARB", lib); GL_CHECK(glp->DebugMessageControlARB); glp->DebugMessageEnableAMD = (void APIENTRY (*)(GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled)) ldg_find("glDebugMessageEnableAMD", lib); GL_CHECK(glp->DebugMessageEnableAMD); glp->DebugMessageInsert = (void APIENTRY (*)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf)) ldg_find("glDebugMessageInsert", lib); GL_CHECK(glp->DebugMessageInsert); glp->DebugMessageInsertAMD = (void APIENTRY (*)(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf)) ldg_find("glDebugMessageInsertAMD", lib); GL_CHECK(glp->DebugMessageInsertAMD); glp->DebugMessageInsertARB = (void APIENTRY (*)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf)) ldg_find("glDebugMessageInsertARB", lib); GL_CHECK(glp->DebugMessageInsertARB); glp->DeleteFramebuffers = (void APIENTRY (*)(GLsizei n, const GLuint *framebuffers)) ldg_find("glDeleteFramebuffers", lib); GL_CHECK(glp->DeleteFramebuffers); glp->DeleteFramebuffersEXT = (void APIENTRY (*)(GLsizei n, const GLuint *framebuffers)) ldg_find("glDeleteFramebuffersEXT", lib); GL_CHECK(glp->DeleteFramebuffersEXT); glp->DeleteNamedStringARB = (void APIENTRY (*)(GLint namelen, const GLchar *name)) ldg_find("glDeleteNamedStringARB", lib); GL_CHECK(glp->DeleteNamedStringARB); glp->DeleteNamesAMD = (void APIENTRY (*)(GLenum identifier, GLuint num, const GLuint *names)) ldg_find("glDeleteNamesAMD", lib); GL_CHECK(glp->DeleteNamesAMD); glp->DeleteObjectBufferATI = (void APIENTRY (*)(GLuint buffer)) ldg_find("glDeleteObjectBufferATI", lib); GL_CHECK(glp->DeleteObjectBufferATI); glp->DeletePathsNV = (void APIENTRY (*)(GLuint path, GLsizei range)) ldg_find("glDeletePathsNV", lib); GL_CHECK(glp->DeletePathsNV); glp->DeletePerfMonitorsAMD = (void APIENTRY (*)(GLsizei n, GLuint *monitors)) ldg_find("glDeletePerfMonitorsAMD", lib); GL_CHECK(glp->DeletePerfMonitorsAMD); glp->DeletePerfQueryINTEL = (void APIENTRY (*)(GLuint queryHandle)) ldg_find("glDeletePerfQueryINTEL", lib); GL_CHECK(glp->DeletePerfQueryINTEL); glp->DeleteProgram = (void APIENTRY (*)(GLuint program)) ldg_find("glDeleteProgram", lib); GL_CHECK(glp->DeleteProgram); glp->DeleteProgramPipelines = (void APIENTRY (*)(GLsizei n, const GLuint *pipelines)) ldg_find("glDeleteProgramPipelines", lib); GL_CHECK(glp->DeleteProgramPipelines); glp->DeleteRenderbuffers = (void APIENTRY (*)(GLsizei n, const GLuint *renderbuffers)) ldg_find("glDeleteRenderbuffers", lib); GL_CHECK(glp->DeleteRenderbuffers); glp->DeleteRenderbuffersEXT = (void APIENTRY (*)(GLsizei n, const GLuint *renderbuffers)) ldg_find("glDeleteRenderbuffersEXT", lib); GL_CHECK(glp->DeleteRenderbuffersEXT); glp->DeleteSamplers = (void APIENTRY (*)(GLsizei count, const GLuint *samplers)) ldg_find("glDeleteSamplers", lib); GL_CHECK(glp->DeleteSamplers); glp->DeleteShader = (void APIENTRY (*)(GLuint shader)) ldg_find("glDeleteShader", lib); GL_CHECK(glp->DeleteShader); glp->DeleteSync = (void APIENTRY (*)(GLsync sync)) ldg_find("glDeleteSync", lib); GL_CHECK(glp->DeleteSync); glp->DeleteTransformFeedbacks = (void APIENTRY (*)(GLsizei n, const GLuint *ids)) ldg_find("glDeleteTransformFeedbacks", lib); GL_CHECK(glp->DeleteTransformFeedbacks); glp->DeleteTransformFeedbacksNV = (void APIENTRY (*)(GLsizei n, const GLuint *ids)) ldg_find("glDeleteTransformFeedbacksNV", lib); GL_CHECK(glp->DeleteTransformFeedbacksNV); glp->DeleteVertexArrays = (void APIENTRY (*)(GLsizei n, const GLuint *arrays)) ldg_find("glDeleteVertexArrays", lib); GL_CHECK(glp->DeleteVertexArrays); glp->DepthBoundsdNV = (void APIENTRY (*)(GLdouble zmin, GLdouble zmax)) ldg_find("glDepthBoundsdNV", lib); GL_CHECK(glp->DepthBoundsdNV); glp->DepthRangeArrayv = (void APIENTRY (*)(GLuint first, GLsizei count, const GLdouble *v)) ldg_find("glDepthRangeArrayv", lib); GL_CHECK(glp->DepthRangeArrayv); glp->DepthRangeIndexed = (void APIENTRY (*)(GLuint index, GLdouble n, GLdouble f)) ldg_find("glDepthRangeIndexed", lib); GL_CHECK(glp->DepthRangeIndexed); glp->DepthRangedNV = (void APIENTRY (*)(GLdouble zNear, GLdouble zFar)) ldg_find("glDepthRangedNV", lib); GL_CHECK(glp->DepthRangedNV); glp->DepthRangef = (void APIENTRY (*)(GLfloat n, GLfloat f)) ldg_find("glDepthRangef", lib); GL_CHECK(glp->DepthRangef); glp->DepthRangefOES = (void APIENTRY (*)(GLclampf n, GLclampf f)) ldg_find("glDepthRangefOES", lib); GL_CHECK(glp->DepthRangefOES); glp->DepthRangexOES = (void APIENTRY (*)(GLfixed n, GLfixed f)) ldg_find("glDepthRangexOES", lib); GL_CHECK(glp->DepthRangexOES); glp->DetachShader = (void APIENTRY (*)(GLuint program, GLuint shader)) ldg_find("glDetachShader", lib); GL_CHECK(glp->DetachShader); glp->DisableClientStateIndexedEXT = (void APIENTRY (*)(GLenum array, GLuint index)) ldg_find("glDisableClientStateIndexedEXT", lib); GL_CHECK(glp->DisableClientStateIndexedEXT); glp->DisableClientStateiEXT = (void APIENTRY (*)(GLenum array, GLuint index)) ldg_find("glDisableClientStateiEXT", lib); GL_CHECK(glp->DisableClientStateiEXT); glp->DisableIndexedEXT = (void APIENTRY (*)(GLenum target, GLuint index)) ldg_find("glDisableIndexedEXT", lib); GL_CHECK(glp->DisableIndexedEXT); glp->DisableVertexArrayAttribEXT = (void APIENTRY (*)(GLuint vaobj, GLuint index)) ldg_find("glDisableVertexArrayAttribEXT", lib); GL_CHECK(glp->DisableVertexArrayAttribEXT); glp->DisableVertexArrayEXT = (void APIENTRY (*)(GLuint vaobj, GLenum array)) ldg_find("glDisableVertexArrayEXT", lib); GL_CHECK(glp->DisableVertexArrayEXT); glp->DisableVertexAttribAPPLE = (void APIENTRY (*)(GLuint index, GLenum pname)) ldg_find("glDisableVertexAttribAPPLE", lib); GL_CHECK(glp->DisableVertexAttribAPPLE); glp->DisableVertexAttribArray = (void APIENTRY (*)(GLuint index)) ldg_find("glDisableVertexAttribArray", lib); GL_CHECK(glp->DisableVertexAttribArray); glp->Disablei = (void APIENTRY (*)(GLenum target, GLuint index)) ldg_find("glDisablei", lib); GL_CHECK(glp->Disablei); glp->DispatchCompute = (void APIENTRY (*)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)) ldg_find("glDispatchCompute", lib); GL_CHECK(glp->DispatchCompute); glp->DispatchComputeGroupSizeARB = (void APIENTRY (*)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z)) ldg_find("glDispatchComputeGroupSizeARB", lib); GL_CHECK(glp->DispatchComputeGroupSizeARB); glp->DispatchComputeIndirect = (void APIENTRY (*)(GLintptr indirect)) ldg_find("glDispatchComputeIndirect", lib); GL_CHECK(glp->DispatchComputeIndirect); glp->DrawArraysIndirect = (void APIENTRY (*)(GLenum mode, const void *indirect)) ldg_find("glDrawArraysIndirect", lib); GL_CHECK(glp->DrawArraysIndirect); glp->DrawArraysInstanced = (void APIENTRY (*)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount)) ldg_find("glDrawArraysInstanced", lib); GL_CHECK(glp->DrawArraysInstanced); glp->DrawArraysInstancedARB = (void APIENTRY (*)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)) ldg_find("glDrawArraysInstancedARB", lib); GL_CHECK(glp->DrawArraysInstancedARB); glp->DrawArraysInstancedBaseInstance = (void APIENTRY (*)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance)) ldg_find("glDrawArraysInstancedBaseInstance", lib); GL_CHECK(glp->DrawArraysInstancedBaseInstance); glp->DrawArraysInstancedEXT = (void APIENTRY (*)(GLenum mode, GLint start, GLsizei count, GLsizei primcount)) ldg_find("glDrawArraysInstancedEXT", lib); GL_CHECK(glp->DrawArraysInstancedEXT); glp->DrawBuffers = (void APIENTRY (*)(GLsizei n, const GLenum *bufs)) ldg_find("glDrawBuffers", lib); GL_CHECK(glp->DrawBuffers); glp->DrawElementsBaseVertex = (void APIENTRY (*)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex)) ldg_find("glDrawElementsBaseVertex", lib); GL_CHECK(glp->DrawElementsBaseVertex); glp->DrawElementsIndirect = (void APIENTRY (*)(GLenum mode, GLenum type, const void *indirect)) ldg_find("glDrawElementsIndirect", lib); GL_CHECK(glp->DrawElementsIndirect); glp->DrawElementsInstanced = (void APIENTRY (*)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount)) ldg_find("glDrawElementsInstanced", lib); GL_CHECK(glp->DrawElementsInstanced); glp->DrawElementsInstancedARB = (void APIENTRY (*)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount)) ldg_find("glDrawElementsInstancedARB", lib); GL_CHECK(glp->DrawElementsInstancedARB); glp->DrawElementsInstancedBaseInstance = (void APIENTRY (*)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance)) ldg_find("glDrawElementsInstancedBaseInstance", lib); GL_CHECK(glp->DrawElementsInstancedBaseInstance); glp->DrawElementsInstancedBaseVertex = (void APIENTRY (*)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex)) ldg_find("glDrawElementsInstancedBaseVertex", lib); GL_CHECK(glp->DrawElementsInstancedBaseVertex); glp->DrawElementsInstancedBaseVertexBaseInstance = (void APIENTRY (*)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance)) ldg_find("glDrawElementsInstancedBaseVertexBaseInstance", lib); GL_CHECK(glp->DrawElementsInstancedBaseVertexBaseInstance); glp->DrawElementsInstancedEXT = (void APIENTRY (*)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount)) ldg_find("glDrawElementsInstancedEXT", lib); GL_CHECK(glp->DrawElementsInstancedEXT); glp->DrawRangeElementsBaseVertex = (void APIENTRY (*)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex)) ldg_find("glDrawRangeElementsBaseVertex", lib); GL_CHECK(glp->DrawRangeElementsBaseVertex); glp->DrawTextureNV = (void APIENTRY (*)(GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1)) ldg_find("glDrawTextureNV", lib); GL_CHECK(glp->DrawTextureNV); glp->DrawTransformFeedback = (void APIENTRY (*)(GLenum mode, GLuint id)) ldg_find("glDrawTransformFeedback", lib); GL_CHECK(glp->DrawTransformFeedback); glp->DrawTransformFeedbackInstanced = (void APIENTRY (*)(GLenum mode, GLuint id, GLsizei instancecount)) ldg_find("glDrawTransformFeedbackInstanced", lib); GL_CHECK(glp->DrawTransformFeedbackInstanced); glp->DrawTransformFeedbackNV = (void APIENTRY (*)(GLenum mode, GLuint id)) ldg_find("glDrawTransformFeedbackNV", lib); GL_CHECK(glp->DrawTransformFeedbackNV); glp->DrawTransformFeedbackStream = (void APIENTRY (*)(GLenum mode, GLuint id, GLuint stream)) ldg_find("glDrawTransformFeedbackStream", lib); GL_CHECK(glp->DrawTransformFeedbackStream); glp->DrawTransformFeedbackStreamInstanced = (void APIENTRY (*)(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount)) ldg_find("glDrawTransformFeedbackStreamInstanced", lib); GL_CHECK(glp->DrawTransformFeedbackStreamInstanced); glp->EdgeFlagFormatNV = (void APIENTRY (*)(GLsizei stride)) ldg_find("glEdgeFlagFormatNV", lib); GL_CHECK(glp->EdgeFlagFormatNV); glp->EnableClientStateIndexedEXT = (void APIENTRY (*)(GLenum array, GLuint index)) ldg_find("glEnableClientStateIndexedEXT", lib); GL_CHECK(glp->EnableClientStateIndexedEXT); glp->EnableClientStateiEXT = (void APIENTRY (*)(GLenum array, GLuint index)) ldg_find("glEnableClientStateiEXT", lib); GL_CHECK(glp->EnableClientStateiEXT); glp->EnableIndexedEXT = (void APIENTRY (*)(GLenum target, GLuint index)) ldg_find("glEnableIndexedEXT", lib); GL_CHECK(glp->EnableIndexedEXT); glp->EnableVertexArrayAttribEXT = (void APIENTRY (*)(GLuint vaobj, GLuint index)) ldg_find("glEnableVertexArrayAttribEXT", lib); GL_CHECK(glp->EnableVertexArrayAttribEXT); glp->EnableVertexArrayEXT = (void APIENTRY (*)(GLuint vaobj, GLenum array)) ldg_find("glEnableVertexArrayEXT", lib); GL_CHECK(glp->EnableVertexArrayEXT); glp->EnableVertexAttribAPPLE = (void APIENTRY (*)(GLuint index, GLenum pname)) ldg_find("glEnableVertexAttribAPPLE", lib); GL_CHECK(glp->EnableVertexAttribAPPLE); glp->EnableVertexAttribArray = (void APIENTRY (*)(GLuint index)) ldg_find("glEnableVertexAttribArray", lib); GL_CHECK(glp->EnableVertexAttribArray); glp->Enablei = (void APIENTRY (*)(GLenum target, GLuint index)) ldg_find("glEnablei", lib); GL_CHECK(glp->Enablei); glp->EndConditionalRender = (void APIENTRY (*)(void)) ldg_find("glEndConditionalRender", lib); GL_CHECK(glp->EndConditionalRender); glp->EndConditionalRenderNV = (void APIENTRY (*)(void)) ldg_find("glEndConditionalRenderNV", lib); GL_CHECK(glp->EndConditionalRenderNV); glp->EndConditionalRenderNVX = (void APIENTRY (*)(void)) ldg_find("glEndConditionalRenderNVX", lib); GL_CHECK(glp->EndConditionalRenderNVX); glp->EndPerfMonitorAMD = (void APIENTRY (*)(GLuint monitor)) ldg_find("glEndPerfMonitorAMD", lib); GL_CHECK(glp->EndPerfMonitorAMD); glp->EndPerfQueryINTEL = (void APIENTRY (*)(GLuint queryHandle)) ldg_find("glEndPerfQueryINTEL", lib); GL_CHECK(glp->EndPerfQueryINTEL); glp->EndQueryIndexed = (void APIENTRY (*)(GLenum target, GLuint index)) ldg_find("glEndQueryIndexed", lib); GL_CHECK(glp->EndQueryIndexed); glp->EndTransformFeedback = (void APIENTRY (*)(void)) ldg_find("glEndTransformFeedback", lib); GL_CHECK(glp->EndTransformFeedback); glp->EndTransformFeedbackEXT = (void APIENTRY (*)(void)) ldg_find("glEndTransformFeedbackEXT", lib); GL_CHECK(glp->EndTransformFeedbackEXT); glp->EndTransformFeedbackNV = (void APIENTRY (*)(void)) ldg_find("glEndTransformFeedbackNV", lib); GL_CHECK(glp->EndTransformFeedbackNV); glp->EndVideoCaptureNV = (void APIENTRY (*)(GLuint video_capture_slot)) ldg_find("glEndVideoCaptureNV", lib); GL_CHECK(glp->EndVideoCaptureNV); glp->EvalCoord1xOES = (void APIENTRY (*)(GLfixed u)) ldg_find("glEvalCoord1xOES", lib); GL_CHECK(glp->EvalCoord1xOES); glp->EvalCoord1xvOES = (void APIENTRY (*)(const GLfixed *coords)) ldg_find("glEvalCoord1xvOES", lib); GL_CHECK(glp->EvalCoord1xvOES); glp->EvalCoord2xOES = (void APIENTRY (*)(GLfixed u, GLfixed v)) ldg_find("glEvalCoord2xOES", lib); GL_CHECK(glp->EvalCoord2xOES); glp->EvalCoord2xvOES = (void APIENTRY (*)(const GLfixed *coords)) ldg_find("glEvalCoord2xvOES", lib); GL_CHECK(glp->EvalCoord2xvOES); glp->FeedbackBufferxOES = (void APIENTRY (*)(GLsizei n, GLenum type, const GLfixed *buffer)) ldg_find("glFeedbackBufferxOES", lib); GL_CHECK(glp->FeedbackBufferxOES); glp->FenceSync = (GLsync APIENTRY (*)(GLenum condition, GLbitfield flags)) ldg_find("glFenceSync", lib); GL_CHECK(glp->FenceSync); glp->FinishRenderAPPLE = (void APIENTRY (*)(void)) ldg_find("glFinishRenderAPPLE", lib); GL_CHECK(glp->FinishRenderAPPLE); glp->FlushMappedBufferRange = (void APIENTRY (*)(GLenum target, GLintptr offset, GLsizeiptr length)) ldg_find("glFlushMappedBufferRange", lib); GL_CHECK(glp->FlushMappedBufferRange); glp->FlushMappedBufferRangeAPPLE = (void APIENTRY (*)(GLenum target, GLintptr offset, GLsizeiptr size)) ldg_find("glFlushMappedBufferRangeAPPLE", lib); GL_CHECK(glp->FlushMappedBufferRangeAPPLE); glp->FlushMappedNamedBufferRangeEXT = (void APIENTRY (*)(GLuint buffer, GLintptr offset, GLsizeiptr length)) ldg_find("glFlushMappedNamedBufferRangeEXT", lib); GL_CHECK(glp->FlushMappedNamedBufferRangeEXT); glp->FlushRenderAPPLE = (void APIENTRY (*)(void)) ldg_find("glFlushRenderAPPLE", lib); GL_CHECK(glp->FlushRenderAPPLE); glp->FlushStaticDataIBM = (void APIENTRY (*)(GLenum target)) ldg_find("glFlushStaticDataIBM", lib); GL_CHECK(glp->FlushStaticDataIBM); glp->FogCoordFormatNV = (void APIENTRY (*)(GLenum type, GLsizei stride)) ldg_find("glFogCoordFormatNV", lib); GL_CHECK(glp->FogCoordFormatNV); glp->FogxOES = (void APIENTRY (*)(GLenum pname, GLfixed param)) ldg_find("glFogxOES", lib); GL_CHECK(glp->FogxOES); glp->FogxvOES = (void APIENTRY (*)(GLenum pname, const GLfixed *param)) ldg_find("glFogxvOES", lib); GL_CHECK(glp->FogxvOES); glp->FrameTerminatorGREMEDY = (void APIENTRY (*)(void)) ldg_find("glFrameTerminatorGREMEDY", lib); GL_CHECK(glp->FrameTerminatorGREMEDY); glp->FramebufferDrawBufferEXT = (void APIENTRY (*)(GLuint framebuffer, GLenum mode)) ldg_find("glFramebufferDrawBufferEXT", lib); GL_CHECK(glp->FramebufferDrawBufferEXT); glp->FramebufferDrawBuffersEXT = (void APIENTRY (*)(GLuint framebuffer, GLsizei n, const GLenum *bufs)) ldg_find("glFramebufferDrawBuffersEXT", lib); GL_CHECK(glp->FramebufferDrawBuffersEXT); glp->FramebufferParameteri = (void APIENTRY (*)(GLenum target, GLenum pname, GLint param)) ldg_find("glFramebufferParameteri", lib); GL_CHECK(glp->FramebufferParameteri); glp->FramebufferReadBufferEXT = (void APIENTRY (*)(GLuint framebuffer, GLenum mode)) ldg_find("glFramebufferReadBufferEXT", lib); GL_CHECK(glp->FramebufferReadBufferEXT); glp->FramebufferRenderbuffer = (void APIENTRY (*)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) ldg_find("glFramebufferRenderbuffer", lib); GL_CHECK(glp->FramebufferRenderbuffer); glp->FramebufferRenderbufferEXT = (void APIENTRY (*)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) ldg_find("glFramebufferRenderbufferEXT", lib); GL_CHECK(glp->FramebufferRenderbufferEXT); glp->FramebufferTexture = (void APIENTRY (*)(GLenum target, GLenum attachment, GLuint texture, GLint level)) ldg_find("glFramebufferTexture", lib); GL_CHECK(glp->FramebufferTexture); glp->FramebufferTexture1D = (void APIENTRY (*)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) ldg_find("glFramebufferTexture1D", lib); GL_CHECK(glp->FramebufferTexture1D); glp->FramebufferTexture1DEXT = (void APIENTRY (*)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) ldg_find("glFramebufferTexture1DEXT", lib); GL_CHECK(glp->FramebufferTexture1DEXT); glp->FramebufferTexture2D = (void APIENTRY (*)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) ldg_find("glFramebufferTexture2D", lib); GL_CHECK(glp->FramebufferTexture2D); glp->FramebufferTexture2DEXT = (void APIENTRY (*)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) ldg_find("glFramebufferTexture2DEXT", lib); GL_CHECK(glp->FramebufferTexture2DEXT); glp->FramebufferTexture3D = (void APIENTRY (*)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)) ldg_find("glFramebufferTexture3D", lib); GL_CHECK(glp->FramebufferTexture3D); glp->FramebufferTexture3DEXT = (void APIENTRY (*)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)) ldg_find("glFramebufferTexture3DEXT", lib); GL_CHECK(glp->FramebufferTexture3DEXT); glp->FramebufferTextureARB = (void APIENTRY (*)(GLenum target, GLenum attachment, GLuint texture, GLint level)) ldg_find("glFramebufferTextureARB", lib); GL_CHECK(glp->FramebufferTextureARB); glp->FramebufferTextureEXT = (void APIENTRY (*)(GLenum target, GLenum attachment, GLuint texture, GLint level)) ldg_find("glFramebufferTextureEXT", lib); GL_CHECK(glp->FramebufferTextureEXT); glp->FramebufferTextureFaceARB = (void APIENTRY (*)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face)) ldg_find("glFramebufferTextureFaceARB", lib); GL_CHECK(glp->FramebufferTextureFaceARB); glp->FramebufferTextureFaceEXT = (void APIENTRY (*)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face)) ldg_find("glFramebufferTextureFaceEXT", lib); GL_CHECK(glp->FramebufferTextureFaceEXT); glp->FramebufferTextureLayer = (void APIENTRY (*)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) ldg_find("glFramebufferTextureLayer", lib); GL_CHECK(glp->FramebufferTextureLayer); glp->FramebufferTextureLayerARB = (void APIENTRY (*)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) ldg_find("glFramebufferTextureLayerARB", lib); GL_CHECK(glp->FramebufferTextureLayerARB); glp->FramebufferTextureLayerEXT = (void APIENTRY (*)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) ldg_find("glFramebufferTextureLayerEXT", lib); GL_CHECK(glp->FramebufferTextureLayerEXT); glp->FrustumfOES = (void APIENTRY (*)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f)) ldg_find("glFrustumfOES", lib); GL_CHECK(glp->FrustumfOES); glp->FrustumxOES = (void APIENTRY (*)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f)) ldg_find("glFrustumxOES", lib); GL_CHECK(glp->FrustumxOES); glp->GenFramebuffers = (void APIENTRY (*)(GLsizei n, GLuint *framebuffers)) ldg_find("glGenFramebuffers", lib); GL_CHECK(glp->GenFramebuffers); glp->GenFramebuffersEXT = (void APIENTRY (*)(GLsizei n, GLuint *framebuffers)) ldg_find("glGenFramebuffersEXT", lib); GL_CHECK(glp->GenFramebuffersEXT); glp->GenNamesAMD = (void APIENTRY (*)(GLenum identifier, GLuint num, GLuint *names)) ldg_find("glGenNamesAMD", lib); GL_CHECK(glp->GenNamesAMD); glp->GenPathsNV = (GLuint APIENTRY (*)(GLsizei range)) ldg_find("glGenPathsNV", lib); GL_CHECK(glp->GenPathsNV); glp->GenPerfMonitorsAMD = (void APIENTRY (*)(GLsizei n, GLuint *monitors)) ldg_find("glGenPerfMonitorsAMD", lib); GL_CHECK(glp->GenPerfMonitorsAMD); glp->GenProgramPipelines = (void APIENTRY (*)(GLsizei n, GLuint *pipelines)) ldg_find("glGenProgramPipelines", lib); GL_CHECK(glp->GenProgramPipelines); glp->GenRenderbuffers = (void APIENTRY (*)(GLsizei n, GLuint *renderbuffers)) ldg_find("glGenRenderbuffers", lib); GL_CHECK(glp->GenRenderbuffers); glp->GenRenderbuffersEXT = (void APIENTRY (*)(GLsizei n, GLuint *renderbuffers)) ldg_find("glGenRenderbuffersEXT", lib); GL_CHECK(glp->GenRenderbuffersEXT); glp->GenSamplers = (void APIENTRY (*)(GLsizei count, GLuint *samplers)) ldg_find("glGenSamplers", lib); GL_CHECK(glp->GenSamplers); glp->GenTransformFeedbacks = (void APIENTRY (*)(GLsizei n, GLuint *ids)) ldg_find("glGenTransformFeedbacks", lib); GL_CHECK(glp->GenTransformFeedbacks); glp->GenTransformFeedbacksNV = (void APIENTRY (*)(GLsizei n, GLuint *ids)) ldg_find("glGenTransformFeedbacksNV", lib); GL_CHECK(glp->GenTransformFeedbacksNV); glp->GenVertexArrays = (void APIENTRY (*)(GLsizei n, GLuint *arrays)) ldg_find("glGenVertexArrays", lib); GL_CHECK(glp->GenVertexArrays); glp->GenerateMipmap = (void APIENTRY (*)(GLenum target)) ldg_find("glGenerateMipmap", lib); GL_CHECK(glp->GenerateMipmap); glp->GenerateMipmapEXT = (void APIENTRY (*)(GLenum target)) ldg_find("glGenerateMipmapEXT", lib); GL_CHECK(glp->GenerateMipmapEXT); glp->GenerateMultiTexMipmapEXT = (void APIENTRY (*)(GLenum texunit, GLenum target)) ldg_find("glGenerateMultiTexMipmapEXT", lib); GL_CHECK(glp->GenerateMultiTexMipmapEXT); glp->GenerateTextureMipmapEXT = (void APIENTRY (*)(GLuint texture, GLenum target)) ldg_find("glGenerateTextureMipmapEXT", lib); GL_CHECK(glp->GenerateTextureMipmapEXT); glp->GetActiveAtomicCounterBufferiv = (void APIENTRY (*)(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params)) ldg_find("glGetActiveAtomicCounterBufferiv", lib); GL_CHECK(glp->GetActiveAtomicCounterBufferiv); glp->GetActiveAttrib = (void APIENTRY (*)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)) ldg_find("glGetActiveAttrib", lib); GL_CHECK(glp->GetActiveAttrib); glp->GetActiveSubroutineName = (void APIENTRY (*)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name)) ldg_find("glGetActiveSubroutineName", lib); GL_CHECK(glp->GetActiveSubroutineName); glp->GetActiveSubroutineUniformName = (void APIENTRY (*)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name)) ldg_find("glGetActiveSubroutineUniformName", lib); GL_CHECK(glp->GetActiveSubroutineUniformName); glp->GetActiveSubroutineUniformiv = (void APIENTRY (*)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values)) ldg_find("glGetActiveSubroutineUniformiv", lib); GL_CHECK(glp->GetActiveSubroutineUniformiv); glp->GetActiveUniform = (void APIENTRY (*)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)) ldg_find("glGetActiveUniform", lib); GL_CHECK(glp->GetActiveUniform); glp->GetActiveUniformBlockIndex = (GLuint APIENTRY (*)(GLuint program, const GLchar *uniformBlockName)) ldg_find("glGetActiveUniformBlockIndex", lib); GL_CHECK(glp->GetActiveUniformBlockIndex); glp->GetActiveUniformBlockName = (void APIENTRY (*)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)) ldg_find("glGetActiveUniformBlockName", lib); GL_CHECK(glp->GetActiveUniformBlockName); glp->GetActiveUniformBlockiv = (void APIENTRY (*)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)) ldg_find("glGetActiveUniformBlockiv", lib); GL_CHECK(glp->GetActiveUniformBlockiv); glp->GetActiveUniformName = (void APIENTRY (*)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName)) ldg_find("glGetActiveUniformName", lib); GL_CHECK(glp->GetActiveUniformName); glp->GetActiveUniformsiv = (void APIENTRY (*)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)) ldg_find("glGetActiveUniformsiv", lib); GL_CHECK(glp->GetActiveUniformsiv); glp->GetActiveVaryingNV = (void APIENTRY (*)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)) ldg_find("glGetActiveVaryingNV", lib); GL_CHECK(glp->GetActiveVaryingNV); glp->GetAttachedShaders = (void APIENTRY (*)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders)) ldg_find("glGetAttachedShaders", lib); GL_CHECK(glp->GetAttachedShaders); glp->GetAttribLocation = (GLint APIENTRY (*)(GLuint program, const GLchar *name)) ldg_find("glGetAttribLocation", lib); GL_CHECK(glp->GetAttribLocation); glp->GetBooleanIndexedvEXT = (void APIENTRY (*)(GLenum target, GLuint index, GLboolean *data)) ldg_find("glGetBooleanIndexedvEXT", lib); GL_CHECK(glp->GetBooleanIndexedvEXT); glp->GetBooleani_v = (void APIENTRY (*)(GLenum target, GLuint index, GLboolean *data)) ldg_find("glGetBooleani_v", lib); GL_CHECK(glp->GetBooleani_v); glp->GetBufferParameteri64v = (void APIENTRY (*)(GLenum target, GLenum pname, GLint64 *params)) ldg_find("glGetBufferParameteri64v", lib); GL_CHECK(glp->GetBufferParameteri64v); glp->GetBufferParameterui64vNV = (void APIENTRY (*)(GLenum target, GLenum pname, GLuint64EXT *params)) ldg_find("glGetBufferParameterui64vNV", lib); GL_CHECK(glp->GetBufferParameterui64vNV); glp->GetClipPlanefOES = (void APIENTRY (*)(GLenum plane, GLfloat *equation)) ldg_find("glGetClipPlanefOES", lib); GL_CHECK(glp->GetClipPlanefOES); glp->GetClipPlanexOES = (void APIENTRY (*)(GLenum plane, GLfixed *equation)) ldg_find("glGetClipPlanexOES", lib); GL_CHECK(glp->GetClipPlanexOES); glp->GetCompressedMultiTexImageEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint lod, void *img)) ldg_find("glGetCompressedMultiTexImageEXT", lib); GL_CHECK(glp->GetCompressedMultiTexImageEXT); glp->GetCompressedTextureImageEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint lod, void *img)) ldg_find("glGetCompressedTextureImageEXT", lib); GL_CHECK(glp->GetCompressedTextureImageEXT); glp->GetConvolutionParameterxvOES = (void APIENTRY (*)(GLenum target, GLenum pname, GLfixed *params)) ldg_find("glGetConvolutionParameterxvOES", lib); GL_CHECK(glp->GetConvolutionParameterxvOES); glp->GetDebugLogLengthMESA = (GLsizei APIENTRY (*)(GLhandleARB obj, GLenum logType, GLenum shaderType)) ldg_find("glGetDebugLogLengthMESA", lib); GL_CHECK(glp->GetDebugLogLengthMESA); glp->GetDebugLogMESA = (void APIENTRY (*)(GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength, GLsizei *length, GLcharARB *debugLog)) ldg_find("glGetDebugLogMESA", lib); GL_CHECK(glp->GetDebugLogMESA); glp->GetDebugMessageLog = (GLuint APIENTRY (*)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog)) ldg_find("glGetDebugMessageLog", lib); GL_CHECK(glp->GetDebugMessageLog); glp->GetDebugMessageLogAMD = (GLuint APIENTRY (*)(GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message)) ldg_find("glGetDebugMessageLogAMD", lib); GL_CHECK(glp->GetDebugMessageLogAMD); glp->GetDebugMessageLogARB = (GLuint APIENTRY (*)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog)) ldg_find("glGetDebugMessageLogARB", lib); GL_CHECK(glp->GetDebugMessageLogARB); glp->GetDoubleIndexedvEXT = (void APIENTRY (*)(GLenum target, GLuint index, GLdouble *data)) ldg_find("glGetDoubleIndexedvEXT", lib); GL_CHECK(glp->GetDoubleIndexedvEXT); glp->GetDoublei_v = (void APIENTRY (*)(GLenum target, GLuint index, GLdouble *data)) ldg_find("glGetDoublei_v", lib); GL_CHECK(glp->GetDoublei_v); glp->GetDoublei_vEXT = (void APIENTRY (*)(GLenum pname, GLuint index, GLdouble *params)) ldg_find("glGetDoublei_vEXT", lib); GL_CHECK(glp->GetDoublei_vEXT); glp->GetFirstPerfQueryIdINTEL = (void APIENTRY (*)(GLuint *queryId)) ldg_find("glGetFirstPerfQueryIdINTEL", lib); GL_CHECK(glp->GetFirstPerfQueryIdINTEL); glp->GetFixedvOES = (void APIENTRY (*)(GLenum pname, GLfixed *params)) ldg_find("glGetFixedvOES", lib); GL_CHECK(glp->GetFixedvOES); glp->GetFloatIndexedvEXT = (void APIENTRY (*)(GLenum target, GLuint index, GLfloat *data)) ldg_find("glGetFloatIndexedvEXT", lib); GL_CHECK(glp->GetFloatIndexedvEXT); glp->GetFloati_v = (void APIENTRY (*)(GLenum target, GLuint index, GLfloat *data)) ldg_find("glGetFloati_v", lib); GL_CHECK(glp->GetFloati_v); glp->GetFloati_vEXT = (void APIENTRY (*)(GLenum pname, GLuint index, GLfloat *params)) ldg_find("glGetFloati_vEXT", lib); GL_CHECK(glp->GetFloati_vEXT); glp->GetFragDataIndex = (GLint APIENTRY (*)(GLuint program, const GLchar *name)) ldg_find("glGetFragDataIndex", lib); GL_CHECK(glp->GetFragDataIndex); glp->GetFragDataLocation = (GLint APIENTRY (*)(GLuint program, const GLchar *name)) ldg_find("glGetFragDataLocation", lib); GL_CHECK(glp->GetFragDataLocation); glp->GetFragDataLocationEXT = (GLint APIENTRY (*)(GLuint program, const GLchar *name)) ldg_find("glGetFragDataLocationEXT", lib); GL_CHECK(glp->GetFragDataLocationEXT); glp->GetFramebufferAttachmentParameteriv = (void APIENTRY (*)(GLenum target, GLenum attachment, GLenum pname, GLint *params)) ldg_find("glGetFramebufferAttachmentParameteriv", lib); GL_CHECK(glp->GetFramebufferAttachmentParameteriv); glp->GetFramebufferAttachmentParameterivEXT = (void APIENTRY (*)(GLenum target, GLenum attachment, GLenum pname, GLint *params)) ldg_find("glGetFramebufferAttachmentParameterivEXT", lib); GL_CHECK(glp->GetFramebufferAttachmentParameterivEXT); glp->GetFramebufferParameteriv = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetFramebufferParameteriv", lib); GL_CHECK(glp->GetFramebufferParameteriv); glp->GetFramebufferParameterivEXT = (void APIENTRY (*)(GLuint framebuffer, GLenum pname, GLint *params)) ldg_find("glGetFramebufferParameterivEXT", lib); GL_CHECK(glp->GetFramebufferParameterivEXT); glp->GetGraphicsResetStatusARB = (GLenum APIENTRY (*)(void)) ldg_find("glGetGraphicsResetStatusARB", lib); GL_CHECK(glp->GetGraphicsResetStatusARB); glp->GetHistogramParameterxvOES = (void APIENTRY (*)(GLenum target, GLenum pname, GLfixed *params)) ldg_find("glGetHistogramParameterxvOES", lib); GL_CHECK(glp->GetHistogramParameterxvOES); glp->GetImageHandleARB = (GLuint64 APIENTRY (*)(GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format)) ldg_find("glGetImageHandleARB", lib); GL_CHECK(glp->GetImageHandleARB); glp->GetImageHandleNV = (GLuint64 APIENTRY (*)(GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format)) ldg_find("glGetImageHandleNV", lib); GL_CHECK(glp->GetImageHandleNV); glp->GetInteger64i_v = (void APIENTRY (*)(GLenum target, GLuint index, GLint64 *data)) ldg_find("glGetInteger64i_v", lib); GL_CHECK(glp->GetInteger64i_v); glp->GetInteger64v = (void APIENTRY (*)(GLenum pname, GLint64 *data)) ldg_find("glGetInteger64v", lib); GL_CHECK(glp->GetInteger64v); glp->GetIntegerIndexedvEXT = (void APIENTRY (*)(GLenum target, GLuint index, GLint *data)) ldg_find("glGetIntegerIndexedvEXT", lib); GL_CHECK(glp->GetIntegerIndexedvEXT); glp->GetIntegeri_v = (void APIENTRY (*)(GLenum target, GLuint index, GLint *data)) ldg_find("glGetIntegeri_v", lib); GL_CHECK(glp->GetIntegeri_v); glp->GetIntegerui64i_vNV = (void APIENTRY (*)(GLenum value, GLuint index, GLuint64EXT *result)) ldg_find("glGetIntegerui64i_vNV", lib); GL_CHECK(glp->GetIntegerui64i_vNV); glp->GetIntegerui64vNV = (void APIENTRY (*)(GLenum value, GLuint64EXT *result)) ldg_find("glGetIntegerui64vNV", lib); GL_CHECK(glp->GetIntegerui64vNV); glp->GetInternalformati64v = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params)) ldg_find("glGetInternalformati64v", lib); GL_CHECK(glp->GetInternalformati64v); glp->GetInternalformativ = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params)) ldg_find("glGetInternalformativ", lib); GL_CHECK(glp->GetInternalformativ); glp->GetLightxOES = (void APIENTRY (*)(GLenum light, GLenum pname, GLfixed *params)) ldg_find("glGetLightxOES", lib); GL_CHECK(glp->GetLightxOES); glp->GetMapxvOES = (void APIENTRY (*)(GLenum target, GLenum query, GLfixed *v)) ldg_find("glGetMapxvOES", lib); GL_CHECK(glp->GetMapxvOES); glp->GetMaterialxOES = (void APIENTRY (*)(GLenum face, GLenum pname, GLfixed param)) ldg_find("glGetMaterialxOES", lib); GL_CHECK(glp->GetMaterialxOES); glp->GetMultiTexEnvfvEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetMultiTexEnvfvEXT", lib); GL_CHECK(glp->GetMultiTexEnvfvEXT); glp->GetMultiTexEnvivEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, GLint *params)) ldg_find("glGetMultiTexEnvivEXT", lib); GL_CHECK(glp->GetMultiTexEnvivEXT); glp->GetMultiTexGendvEXT = (void APIENTRY (*)(GLenum texunit, GLenum coord, GLenum pname, GLdouble *params)) ldg_find("glGetMultiTexGendvEXT", lib); GL_CHECK(glp->GetMultiTexGendvEXT); glp->GetMultiTexGenfvEXT = (void APIENTRY (*)(GLenum texunit, GLenum coord, GLenum pname, GLfloat *params)) ldg_find("glGetMultiTexGenfvEXT", lib); GL_CHECK(glp->GetMultiTexGenfvEXT); glp->GetMultiTexGenivEXT = (void APIENTRY (*)(GLenum texunit, GLenum coord, GLenum pname, GLint *params)) ldg_find("glGetMultiTexGenivEXT", lib); GL_CHECK(glp->GetMultiTexGenivEXT); glp->GetMultiTexImageEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels)) ldg_find("glGetMultiTexImageEXT", lib); GL_CHECK(glp->GetMultiTexImageEXT); glp->GetMultiTexLevelParameterfvEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params)) ldg_find("glGetMultiTexLevelParameterfvEXT", lib); GL_CHECK(glp->GetMultiTexLevelParameterfvEXT); glp->GetMultiTexLevelParameterivEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params)) ldg_find("glGetMultiTexLevelParameterivEXT", lib); GL_CHECK(glp->GetMultiTexLevelParameterivEXT); glp->GetMultiTexParameterIivEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, GLint *params)) ldg_find("glGetMultiTexParameterIivEXT", lib); GL_CHECK(glp->GetMultiTexParameterIivEXT); glp->GetMultiTexParameterIuivEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, GLuint *params)) ldg_find("glGetMultiTexParameterIuivEXT", lib); GL_CHECK(glp->GetMultiTexParameterIuivEXT); glp->GetMultiTexParameterfvEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetMultiTexParameterfvEXT", lib); GL_CHECK(glp->GetMultiTexParameterfvEXT); glp->GetMultiTexParameterivEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, GLint *params)) ldg_find("glGetMultiTexParameterivEXT", lib); GL_CHECK(glp->GetMultiTexParameterivEXT); glp->GetMultisamplefv = (void APIENTRY (*)(GLenum pname, GLuint index, GLfloat *val)) ldg_find("glGetMultisamplefv", lib); GL_CHECK(glp->GetMultisamplefv); glp->GetMultisamplefvNV = (void APIENTRY (*)(GLenum pname, GLuint index, GLfloat *val)) ldg_find("glGetMultisamplefvNV", lib); GL_CHECK(glp->GetMultisamplefvNV); glp->GetNamedBufferParameterivEXT = (void APIENTRY (*)(GLuint buffer, GLenum pname, GLint *params)) ldg_find("glGetNamedBufferParameterivEXT", lib); GL_CHECK(glp->GetNamedBufferParameterivEXT); glp->GetNamedBufferParameterui64vNV = (void APIENTRY (*)(GLuint buffer, GLenum pname, GLuint64EXT *params)) ldg_find("glGetNamedBufferParameterui64vNV", lib); GL_CHECK(glp->GetNamedBufferParameterui64vNV); glp->GetNamedBufferPointervEXT = (void APIENTRY (*)(GLuint buffer, GLenum pname, void * *params)) ldg_find("glGetNamedBufferPointervEXT", lib); GL_CHECK(glp->GetNamedBufferPointervEXT); glp->GetNamedBufferSubDataEXT = (void APIENTRY (*)(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data)) ldg_find("glGetNamedBufferSubDataEXT", lib); GL_CHECK(glp->GetNamedBufferSubDataEXT); glp->GetNamedFramebufferAttachmentParameterivEXT = (void APIENTRY (*)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params)) ldg_find("glGetNamedFramebufferAttachmentParameterivEXT", lib); GL_CHECK(glp->GetNamedFramebufferAttachmentParameterivEXT); glp->GetNamedFramebufferParameterivEXT = (void APIENTRY (*)(GLuint framebuffer, GLenum pname, GLint *params)) ldg_find("glGetNamedFramebufferParameterivEXT", lib); GL_CHECK(glp->GetNamedFramebufferParameterivEXT); glp->GetNamedProgramLocalParameterIivEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, GLint *params)) ldg_find("glGetNamedProgramLocalParameterIivEXT", lib); GL_CHECK(glp->GetNamedProgramLocalParameterIivEXT); glp->GetNamedProgramLocalParameterIuivEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, GLuint *params)) ldg_find("glGetNamedProgramLocalParameterIuivEXT", lib); GL_CHECK(glp->GetNamedProgramLocalParameterIuivEXT); glp->GetNamedProgramLocalParameterdvEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, GLdouble *params)) ldg_find("glGetNamedProgramLocalParameterdvEXT", lib); GL_CHECK(glp->GetNamedProgramLocalParameterdvEXT); glp->GetNamedProgramLocalParameterfvEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, GLfloat *params)) ldg_find("glGetNamedProgramLocalParameterfvEXT", lib); GL_CHECK(glp->GetNamedProgramLocalParameterfvEXT); glp->GetNamedProgramStringEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLenum pname, void *string)) ldg_find("glGetNamedProgramStringEXT", lib); GL_CHECK(glp->GetNamedProgramStringEXT); glp->GetNamedProgramivEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLenum pname, GLint *params)) ldg_find("glGetNamedProgramivEXT", lib); GL_CHECK(glp->GetNamedProgramivEXT); glp->GetNamedRenderbufferParameterivEXT = (void APIENTRY (*)(GLuint renderbuffer, GLenum pname, GLint *params)) ldg_find("glGetNamedRenderbufferParameterivEXT", lib); GL_CHECK(glp->GetNamedRenderbufferParameterivEXT); glp->GetNamedStringARB = (void APIENTRY (*)(GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string)) ldg_find("glGetNamedStringARB", lib); GL_CHECK(glp->GetNamedStringARB); glp->GetNamedStringivARB = (void APIENTRY (*)(GLint namelen, const GLchar *name, GLenum pname, GLint *params)) ldg_find("glGetNamedStringivARB", lib); GL_CHECK(glp->GetNamedStringivARB); glp->GetNextPerfQueryIdINTEL = (void APIENTRY (*)(GLuint queryId, GLuint *nextQueryId)) ldg_find("glGetNextPerfQueryIdINTEL", lib); GL_CHECK(glp->GetNextPerfQueryIdINTEL); glp->GetObjectLabel = (void APIENTRY (*)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label)) ldg_find("glGetObjectLabel", lib); GL_CHECK(glp->GetObjectLabel); glp->GetObjectLabelEXT = (void APIENTRY (*)(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label)) ldg_find("glGetObjectLabelEXT", lib); GL_CHECK(glp->GetObjectLabelEXT); glp->GetObjectParameterivAPPLE = (void APIENTRY (*)(GLenum objectType, GLuint name, GLenum pname, GLint *params)) ldg_find("glGetObjectParameterivAPPLE", lib); GL_CHECK(glp->GetObjectParameterivAPPLE); glp->GetObjectPtrLabel = (void APIENTRY (*)(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label)) ldg_find("glGetObjectPtrLabel", lib); GL_CHECK(glp->GetObjectPtrLabel); glp->GetPathColorGenfvNV = (void APIENTRY (*)(GLenum color, GLenum pname, GLfloat *value)) ldg_find("glGetPathColorGenfvNV", lib); GL_CHECK(glp->GetPathColorGenfvNV); glp->GetPathColorGenivNV = (void APIENTRY (*)(GLenum color, GLenum pname, GLint *value)) ldg_find("glGetPathColorGenivNV", lib); GL_CHECK(glp->GetPathColorGenivNV); glp->GetPathCommandsNV = (void APIENTRY (*)(GLuint path, GLubyte *commands)) ldg_find("glGetPathCommandsNV", lib); GL_CHECK(glp->GetPathCommandsNV); glp->GetPathCoordsNV = (void APIENTRY (*)(GLuint path, GLfloat *coords)) ldg_find("glGetPathCoordsNV", lib); GL_CHECK(glp->GetPathCoordsNV); glp->GetPathDashArrayNV = (void APIENTRY (*)(GLuint path, GLfloat *dashArray)) ldg_find("glGetPathDashArrayNV", lib); GL_CHECK(glp->GetPathDashArrayNV); glp->GetPathLengthNV = (GLfloat APIENTRY (*)(GLuint path, GLsizei startSegment, GLsizei numSegments)) ldg_find("glGetPathLengthNV", lib); GL_CHECK(glp->GetPathLengthNV); glp->GetPathMetricRangeNV = (void APIENTRY (*)(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics)) ldg_find("glGetPathMetricRangeNV", lib); GL_CHECK(glp->GetPathMetricRangeNV); glp->GetPathMetricsNV = (void APIENTRY (*)(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics)) ldg_find("glGetPathMetricsNV", lib); GL_CHECK(glp->GetPathMetricsNV); glp->GetPathParameterfvNV = (void APIENTRY (*)(GLuint path, GLenum pname, GLfloat *value)) ldg_find("glGetPathParameterfvNV", lib); GL_CHECK(glp->GetPathParameterfvNV); glp->GetPathParameterivNV = (void APIENTRY (*)(GLuint path, GLenum pname, GLint *value)) ldg_find("glGetPathParameterivNV", lib); GL_CHECK(glp->GetPathParameterivNV); glp->GetPathSpacingNV = (void APIENTRY (*)(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing)) ldg_find("glGetPathSpacingNV", lib); GL_CHECK(glp->GetPathSpacingNV); glp->GetPathTexGenfvNV = (void APIENTRY (*)(GLenum texCoordSet, GLenum pname, GLfloat *value)) ldg_find("glGetPathTexGenfvNV", lib); GL_CHECK(glp->GetPathTexGenfvNV); glp->GetPathTexGenivNV = (void APIENTRY (*)(GLenum texCoordSet, GLenum pname, GLint *value)) ldg_find("glGetPathTexGenivNV", lib); GL_CHECK(glp->GetPathTexGenivNV); glp->GetPerfCounterInfoINTEL = (void APIENTRY (*)(GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue)) ldg_find("glGetPerfCounterInfoINTEL", lib); GL_CHECK(glp->GetPerfCounterInfoINTEL); glp->GetPerfMonitorCounterDataAMD = (void APIENTRY (*)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten)) ldg_find("glGetPerfMonitorCounterDataAMD", lib); GL_CHECK(glp->GetPerfMonitorCounterDataAMD); glp->GetPerfMonitorCounterInfoAMD = (void APIENTRY (*)(GLuint group, GLuint counter, GLenum pname, void *data)) ldg_find("glGetPerfMonitorCounterInfoAMD", lib); GL_CHECK(glp->GetPerfMonitorCounterInfoAMD); glp->GetPerfMonitorCounterStringAMD = (void APIENTRY (*)(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString)) ldg_find("glGetPerfMonitorCounterStringAMD", lib); GL_CHECK(glp->GetPerfMonitorCounterStringAMD); glp->GetPerfMonitorCountersAMD = (void APIENTRY (*)(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters)) ldg_find("glGetPerfMonitorCountersAMD", lib); GL_CHECK(glp->GetPerfMonitorCountersAMD); glp->GetPerfMonitorGroupStringAMD = (void APIENTRY (*)(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString)) ldg_find("glGetPerfMonitorGroupStringAMD", lib); GL_CHECK(glp->GetPerfMonitorGroupStringAMD); glp->GetPerfMonitorGroupsAMD = (void APIENTRY (*)(GLint *numGroups, GLsizei groupsSize, GLuint *groups)) ldg_find("glGetPerfMonitorGroupsAMD", lib); GL_CHECK(glp->GetPerfMonitorGroupsAMD); glp->GetPerfQueryDataINTEL = (void APIENTRY (*)(GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten)) ldg_find("glGetPerfQueryDataINTEL", lib); GL_CHECK(glp->GetPerfQueryDataINTEL); glp->GetPerfQueryIdByNameINTEL = (void APIENTRY (*)(GLchar *queryName, GLuint *queryId)) ldg_find("glGetPerfQueryIdByNameINTEL", lib); GL_CHECK(glp->GetPerfQueryIdByNameINTEL); glp->GetPerfQueryInfoINTEL = (void APIENTRY (*)(GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask)) ldg_find("glGetPerfQueryInfoINTEL", lib); GL_CHECK(glp->GetPerfQueryInfoINTEL); glp->GetPixelMapxv = (void APIENTRY (*)(GLenum map, GLint size, GLfixed *values)) ldg_find("glGetPixelMapxv", lib); GL_CHECK(glp->GetPixelMapxv); glp->GetPixelTransformParameterfvEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetPixelTransformParameterfvEXT", lib); GL_CHECK(glp->GetPixelTransformParameterfvEXT); glp->GetPixelTransformParameterivEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetPixelTransformParameterivEXT", lib); GL_CHECK(glp->GetPixelTransformParameterivEXT); glp->GetPointerIndexedvEXT = (void APIENTRY (*)(GLenum target, GLuint index, void * *data)) ldg_find("glGetPointerIndexedvEXT", lib); GL_CHECK(glp->GetPointerIndexedvEXT); glp->GetPointeri_vEXT = (void APIENTRY (*)(GLenum pname, GLuint index, void * *params)) ldg_find("glGetPointeri_vEXT", lib); GL_CHECK(glp->GetPointeri_vEXT); glp->GetProgramBinary = (void APIENTRY (*)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary)) ldg_find("glGetProgramBinary", lib); GL_CHECK(glp->GetProgramBinary); glp->GetProgramEnvParameterIivNV = (void APIENTRY (*)(GLenum target, GLuint index, GLint *params)) ldg_find("glGetProgramEnvParameterIivNV", lib); GL_CHECK(glp->GetProgramEnvParameterIivNV); glp->GetProgramEnvParameterIuivNV = (void APIENTRY (*)(GLenum target, GLuint index, GLuint *params)) ldg_find("glGetProgramEnvParameterIuivNV", lib); GL_CHECK(glp->GetProgramEnvParameterIuivNV); glp->GetProgramInfoLog = (void APIENTRY (*)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) ldg_find("glGetProgramInfoLog", lib); GL_CHECK(glp->GetProgramInfoLog); glp->GetProgramInterfaceiv = (void APIENTRY (*)(GLuint program, GLenum programInterface, GLenum pname, GLint *params)) ldg_find("glGetProgramInterfaceiv", lib); GL_CHECK(glp->GetProgramInterfaceiv); glp->GetProgramLocalParameterIivNV = (void APIENTRY (*)(GLenum target, GLuint index, GLint *params)) ldg_find("glGetProgramLocalParameterIivNV", lib); GL_CHECK(glp->GetProgramLocalParameterIivNV); glp->GetProgramLocalParameterIuivNV = (void APIENTRY (*)(GLenum target, GLuint index, GLuint *params)) ldg_find("glGetProgramLocalParameterIuivNV", lib); GL_CHECK(glp->GetProgramLocalParameterIuivNV); glp->GetProgramPipelineInfoLog = (void APIENTRY (*)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) ldg_find("glGetProgramPipelineInfoLog", lib); GL_CHECK(glp->GetProgramPipelineInfoLog); glp->GetProgramPipelineiv = (void APIENTRY (*)(GLuint pipeline, GLenum pname, GLint *params)) ldg_find("glGetProgramPipelineiv", lib); GL_CHECK(glp->GetProgramPipelineiv); glp->GetProgramRegisterfvMESA = (void APIENTRY (*)(GLenum target, GLsizei len, const GLubyte *name, GLfloat *v)) ldg_find("glGetProgramRegisterfvMESA", lib); GL_CHECK(glp->GetProgramRegisterfvMESA); glp->GetProgramResourceIndex = (GLuint APIENTRY (*)(GLuint program, GLenum programInterface, const GLchar *name)) ldg_find("glGetProgramResourceIndex", lib); GL_CHECK(glp->GetProgramResourceIndex); glp->GetProgramResourceLocation = (GLint APIENTRY (*)(GLuint program, GLenum programInterface, const GLchar *name)) ldg_find("glGetProgramResourceLocation", lib); GL_CHECK(glp->GetProgramResourceLocation); glp->GetProgramResourceLocationIndex = (GLint APIENTRY (*)(GLuint program, GLenum programInterface, const GLchar *name)) ldg_find("glGetProgramResourceLocationIndex", lib); GL_CHECK(glp->GetProgramResourceLocationIndex); glp->GetProgramResourceName = (void APIENTRY (*)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name)) ldg_find("glGetProgramResourceName", lib); GL_CHECK(glp->GetProgramResourceName); glp->GetProgramResourceiv = (void APIENTRY (*)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params)) ldg_find("glGetProgramResourceiv", lib); GL_CHECK(glp->GetProgramResourceiv); glp->GetProgramStageiv = (void APIENTRY (*)(GLuint program, GLenum shadertype, GLenum pname, GLint *values)) ldg_find("glGetProgramStageiv", lib); GL_CHECK(glp->GetProgramStageiv); glp->GetProgramSubroutineParameteruivNV = (void APIENTRY (*)(GLenum target, GLuint index, GLuint *param)) ldg_find("glGetProgramSubroutineParameteruivNV", lib); GL_CHECK(glp->GetProgramSubroutineParameteruivNV); glp->GetProgramiv = (void APIENTRY (*)(GLuint program, GLenum pname, GLint *params)) ldg_find("glGetProgramiv", lib); GL_CHECK(glp->GetProgramiv); glp->GetQueryIndexediv = (void APIENTRY (*)(GLenum target, GLuint index, GLenum pname, GLint *params)) ldg_find("glGetQueryIndexediv", lib); GL_CHECK(glp->GetQueryIndexediv); glp->GetQueryObjecti64v = (void APIENTRY (*)(GLuint id, GLenum pname, GLint64 *params)) ldg_find("glGetQueryObjecti64v", lib); GL_CHECK(glp->GetQueryObjecti64v); glp->GetQueryObjecti64vEXT = (void APIENTRY (*)(GLuint id, GLenum pname, GLint64 *params)) ldg_find("glGetQueryObjecti64vEXT", lib); GL_CHECK(glp->GetQueryObjecti64vEXT); glp->GetQueryObjectui64v = (void APIENTRY (*)(GLuint id, GLenum pname, GLuint64 *params)) ldg_find("glGetQueryObjectui64v", lib); GL_CHECK(glp->GetQueryObjectui64v); glp->GetQueryObjectui64vEXT = (void APIENTRY (*)(GLuint id, GLenum pname, GLuint64 *params)) ldg_find("glGetQueryObjectui64vEXT", lib); GL_CHECK(glp->GetQueryObjectui64vEXT); glp->GetRenderbufferParameteriv = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetRenderbufferParameteriv", lib); GL_CHECK(glp->GetRenderbufferParameteriv); glp->GetRenderbufferParameterivEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetRenderbufferParameterivEXT", lib); GL_CHECK(glp->GetRenderbufferParameterivEXT); glp->GetSamplerParameterIiv = (void APIENTRY (*)(GLuint sampler, GLenum pname, GLint *params)) ldg_find("glGetSamplerParameterIiv", lib); GL_CHECK(glp->GetSamplerParameterIiv); glp->GetSamplerParameterIuiv = (void APIENTRY (*)(GLuint sampler, GLenum pname, GLuint *params)) ldg_find("glGetSamplerParameterIuiv", lib); GL_CHECK(glp->GetSamplerParameterIuiv); glp->GetSamplerParameterfv = (void APIENTRY (*)(GLuint sampler, GLenum pname, GLfloat *params)) ldg_find("glGetSamplerParameterfv", lib); GL_CHECK(glp->GetSamplerParameterfv); glp->GetSamplerParameteriv = (void APIENTRY (*)(GLuint sampler, GLenum pname, GLint *params)) ldg_find("glGetSamplerParameteriv", lib); GL_CHECK(glp->GetSamplerParameteriv); glp->GetShaderInfoLog = (void APIENTRY (*)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) ldg_find("glGetShaderInfoLog", lib); GL_CHECK(glp->GetShaderInfoLog); glp->GetShaderPrecisionFormat = (void APIENTRY (*)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision)) ldg_find("glGetShaderPrecisionFormat", lib); GL_CHECK(glp->GetShaderPrecisionFormat); glp->GetShaderSource = (void APIENTRY (*)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source)) ldg_find("glGetShaderSource", lib); GL_CHECK(glp->GetShaderSource); glp->GetShaderiv = (void APIENTRY (*)(GLuint shader, GLenum pname, GLint *params)) ldg_find("glGetShaderiv", lib); GL_CHECK(glp->GetShaderiv); glp->GetStringi = (const GLubyte * APIENTRY (*)(GLenum name, GLuint index)) ldg_find("glGetStringi", lib); GL_CHECK(glp->GetStringi); glp->GetSubroutineIndex = (GLuint APIENTRY (*)(GLuint program, GLenum shadertype, const GLchar *name)) ldg_find("glGetSubroutineIndex", lib); GL_CHECK(glp->GetSubroutineIndex); glp->GetSubroutineUniformLocation = (GLint APIENTRY (*)(GLuint program, GLenum shadertype, const GLchar *name)) ldg_find("glGetSubroutineUniformLocation", lib); GL_CHECK(glp->GetSubroutineUniformLocation); glp->GetSynciv = (void APIENTRY (*)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)) ldg_find("glGetSynciv", lib); GL_CHECK(glp->GetSynciv); glp->GetTexEnvxvOES = (void APIENTRY (*)(GLenum target, GLenum pname, GLfixed *params)) ldg_find("glGetTexEnvxvOES", lib); GL_CHECK(glp->GetTexEnvxvOES); glp->GetTexGenxvOES = (void APIENTRY (*)(GLenum coord, GLenum pname, GLfixed *params)) ldg_find("glGetTexGenxvOES", lib); GL_CHECK(glp->GetTexGenxvOES); glp->GetTexLevelParameterxvOES = (void APIENTRY (*)(GLenum target, GLint level, GLenum pname, GLfixed *params)) ldg_find("glGetTexLevelParameterxvOES", lib); GL_CHECK(glp->GetTexLevelParameterxvOES); glp->GetTexParameterIiv = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetTexParameterIiv", lib); GL_CHECK(glp->GetTexParameterIiv); glp->GetTexParameterIivEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLint *params)) ldg_find("glGetTexParameterIivEXT", lib); GL_CHECK(glp->GetTexParameterIivEXT); glp->GetTexParameterIuiv = (void APIENTRY (*)(GLenum target, GLenum pname, GLuint *params)) ldg_find("glGetTexParameterIuiv", lib); GL_CHECK(glp->GetTexParameterIuiv); glp->GetTexParameterIuivEXT = (void APIENTRY (*)(GLenum target, GLenum pname, GLuint *params)) ldg_find("glGetTexParameterIuivEXT", lib); GL_CHECK(glp->GetTexParameterIuivEXT); glp->GetTexParameterPointervAPPLE = (void APIENTRY (*)(GLenum target, GLenum pname, void * *params)) ldg_find("glGetTexParameterPointervAPPLE", lib); GL_CHECK(glp->GetTexParameterPointervAPPLE); glp->GetTexParameterxvOES = (void APIENTRY (*)(GLenum target, GLenum pname, GLfixed *params)) ldg_find("glGetTexParameterxvOES", lib); GL_CHECK(glp->GetTexParameterxvOES); glp->GetTextureHandleARB = (GLuint64 APIENTRY (*)(GLuint texture)) ldg_find("glGetTextureHandleARB", lib); GL_CHECK(glp->GetTextureHandleARB); glp->GetTextureHandleNV = (GLuint64 APIENTRY (*)(GLuint texture)) ldg_find("glGetTextureHandleNV", lib); GL_CHECK(glp->GetTextureHandleNV); glp->GetTextureImageEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels)) ldg_find("glGetTextureImageEXT", lib); GL_CHECK(glp->GetTextureImageEXT); glp->GetTextureLevelParameterfvEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params)) ldg_find("glGetTextureLevelParameterfvEXT", lib); GL_CHECK(glp->GetTextureLevelParameterfvEXT); glp->GetTextureLevelParameterivEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params)) ldg_find("glGetTextureLevelParameterivEXT", lib); GL_CHECK(glp->GetTextureLevelParameterivEXT); glp->GetTextureParameterIivEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLenum pname, GLint *params)) ldg_find("glGetTextureParameterIivEXT", lib); GL_CHECK(glp->GetTextureParameterIivEXT); glp->GetTextureParameterIuivEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLenum pname, GLuint *params)) ldg_find("glGetTextureParameterIuivEXT", lib); GL_CHECK(glp->GetTextureParameterIuivEXT); glp->GetTextureParameterfvEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLenum pname, GLfloat *params)) ldg_find("glGetTextureParameterfvEXT", lib); GL_CHECK(glp->GetTextureParameterfvEXT); glp->GetTextureParameterivEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLenum pname, GLint *params)) ldg_find("glGetTextureParameterivEXT", lib); GL_CHECK(glp->GetTextureParameterivEXT); glp->GetTextureSamplerHandleARB = (GLuint64 APIENTRY (*)(GLuint texture, GLuint sampler)) ldg_find("glGetTextureSamplerHandleARB", lib); GL_CHECK(glp->GetTextureSamplerHandleARB); glp->GetTextureSamplerHandleNV = (GLuint64 APIENTRY (*)(GLuint texture, GLuint sampler)) ldg_find("glGetTextureSamplerHandleNV", lib); GL_CHECK(glp->GetTextureSamplerHandleNV); glp->GetTransformFeedbackVarying = (void APIENTRY (*)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)) ldg_find("glGetTransformFeedbackVarying", lib); GL_CHECK(glp->GetTransformFeedbackVarying); glp->GetTransformFeedbackVaryingEXT = (void APIENTRY (*)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)) ldg_find("glGetTransformFeedbackVaryingEXT", lib); GL_CHECK(glp->GetTransformFeedbackVaryingEXT); glp->GetTransformFeedbackVaryingNV = (void APIENTRY (*)(GLuint program, GLuint index, GLint *location)) ldg_find("glGetTransformFeedbackVaryingNV", lib); GL_CHECK(glp->GetTransformFeedbackVaryingNV); glp->GetUniformBlockIndex = (GLuint APIENTRY (*)(GLuint program, const GLchar *uniformBlockName)) ldg_find("glGetUniformBlockIndex", lib); GL_CHECK(glp->GetUniformBlockIndex); glp->GetUniformBufferSizeEXT = (GLint APIENTRY (*)(GLuint program, GLint location)) ldg_find("glGetUniformBufferSizeEXT", lib); GL_CHECK(glp->GetUniformBufferSizeEXT); glp->GetUniformIndices = (void APIENTRY (*)(GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices)) ldg_find("glGetUniformIndices", lib); GL_CHECK(glp->GetUniformIndices); glp->GetUniformLocation = (GLint APIENTRY (*)(GLuint program, const GLchar *name)) ldg_find("glGetUniformLocation", lib); GL_CHECK(glp->GetUniformLocation); glp->GetUniformOffsetEXT = (GLintptr APIENTRY (*)(GLuint program, GLint location)) ldg_find("glGetUniformOffsetEXT", lib); GL_CHECK(glp->GetUniformOffsetEXT); glp->GetUniformSubroutineuiv = (void APIENTRY (*)(GLenum shadertype, GLint location, GLuint *params)) ldg_find("glGetUniformSubroutineuiv", lib); GL_CHECK(glp->GetUniformSubroutineuiv); glp->GetUniformdv = (void APIENTRY (*)(GLuint program, GLint location, GLdouble *params)) ldg_find("glGetUniformdv", lib); GL_CHECK(glp->GetUniformdv); glp->GetUniformfv = (void APIENTRY (*)(GLuint program, GLint location, GLfloat *params)) ldg_find("glGetUniformfv", lib); GL_CHECK(glp->GetUniformfv); glp->GetUniformi64vNV = (void APIENTRY (*)(GLuint program, GLint location, GLint64EXT *params)) ldg_find("glGetUniformi64vNV", lib); GL_CHECK(glp->GetUniformi64vNV); glp->GetUniformiv = (void APIENTRY (*)(GLuint program, GLint location, GLint *params)) ldg_find("glGetUniformiv", lib); GL_CHECK(glp->GetUniformiv); glp->GetUniformui64vNV = (void APIENTRY (*)(GLuint program, GLint location, GLuint64EXT *params)) ldg_find("glGetUniformui64vNV", lib); GL_CHECK(glp->GetUniformui64vNV); glp->GetUniformuiv = (void APIENTRY (*)(GLuint program, GLint location, GLuint *params)) ldg_find("glGetUniformuiv", lib); GL_CHECK(glp->GetUniformuiv); glp->GetUniformuivEXT = (void APIENTRY (*)(GLuint program, GLint location, GLuint *params)) ldg_find("glGetUniformuivEXT", lib); GL_CHECK(glp->GetUniformuivEXT); glp->GetVaryingLocationNV = (GLint APIENTRY (*)(GLuint program, const GLchar *name)) ldg_find("glGetVaryingLocationNV", lib); GL_CHECK(glp->GetVaryingLocationNV); glp->GetVertexArrayIntegeri_vEXT = (void APIENTRY (*)(GLuint vaobj, GLuint index, GLenum pname, GLint *param)) ldg_find("glGetVertexArrayIntegeri_vEXT", lib); GL_CHECK(glp->GetVertexArrayIntegeri_vEXT); glp->GetVertexArrayIntegervEXT = (void APIENTRY (*)(GLuint vaobj, GLenum pname, GLint *param)) ldg_find("glGetVertexArrayIntegervEXT", lib); GL_CHECK(glp->GetVertexArrayIntegervEXT); glp->GetVertexArrayPointeri_vEXT = (void APIENTRY (*)(GLuint vaobj, GLuint index, GLenum pname, void * *param)) ldg_find("glGetVertexArrayPointeri_vEXT", lib); GL_CHECK(glp->GetVertexArrayPointeri_vEXT); glp->GetVertexArrayPointervEXT = (void APIENTRY (*)(GLuint vaobj, GLenum pname, void * *param)) ldg_find("glGetVertexArrayPointervEXT", lib); GL_CHECK(glp->GetVertexArrayPointervEXT); glp->GetVertexAttribIiv = (void APIENTRY (*)(GLuint index, GLenum pname, GLint *params)) ldg_find("glGetVertexAttribIiv", lib); GL_CHECK(glp->GetVertexAttribIiv); glp->GetVertexAttribIivEXT = (void APIENTRY (*)(GLuint index, GLenum pname, GLint *params)) ldg_find("glGetVertexAttribIivEXT", lib); GL_CHECK(glp->GetVertexAttribIivEXT); glp->GetVertexAttribIuiv = (void APIENTRY (*)(GLuint index, GLenum pname, GLuint *params)) ldg_find("glGetVertexAttribIuiv", lib); GL_CHECK(glp->GetVertexAttribIuiv); glp->GetVertexAttribIuivEXT = (void APIENTRY (*)(GLuint index, GLenum pname, GLuint *params)) ldg_find("glGetVertexAttribIuivEXT", lib); GL_CHECK(glp->GetVertexAttribIuivEXT); glp->GetVertexAttribLdv = (void APIENTRY (*)(GLuint index, GLenum pname, GLdouble *params)) ldg_find("glGetVertexAttribLdv", lib); GL_CHECK(glp->GetVertexAttribLdv); glp->GetVertexAttribLdvEXT = (void APIENTRY (*)(GLuint index, GLenum pname, GLdouble *params)) ldg_find("glGetVertexAttribLdvEXT", lib); GL_CHECK(glp->GetVertexAttribLdvEXT); glp->GetVertexAttribLi64vNV = (void APIENTRY (*)(GLuint index, GLenum pname, GLint64EXT *params)) ldg_find("glGetVertexAttribLi64vNV", lib); GL_CHECK(glp->GetVertexAttribLi64vNV); glp->GetVertexAttribLui64vARB = (void APIENTRY (*)(GLuint index, GLenum pname, GLuint64EXT *params)) ldg_find("glGetVertexAttribLui64vARB", lib); GL_CHECK(glp->GetVertexAttribLui64vARB); glp->GetVertexAttribLui64vNV = (void APIENTRY (*)(GLuint index, GLenum pname, GLuint64EXT *params)) ldg_find("glGetVertexAttribLui64vNV", lib); GL_CHECK(glp->GetVertexAttribLui64vNV); glp->GetVertexAttribPointerv = (void APIENTRY (*)(GLuint index, GLenum pname, void * *pointer)) ldg_find("glGetVertexAttribPointerv", lib); GL_CHECK(glp->GetVertexAttribPointerv); glp->GetVertexAttribdv = (void APIENTRY (*)(GLuint index, GLenum pname, GLdouble *params)) ldg_find("glGetVertexAttribdv", lib); GL_CHECK(glp->GetVertexAttribdv); glp->GetVertexAttribfv = (void APIENTRY (*)(GLuint index, GLenum pname, GLfloat *params)) ldg_find("glGetVertexAttribfv", lib); GL_CHECK(glp->GetVertexAttribfv); glp->GetVertexAttribiv = (void APIENTRY (*)(GLuint index, GLenum pname, GLint *params)) ldg_find("glGetVertexAttribiv", lib); GL_CHECK(glp->GetVertexAttribiv); glp->GetVideoCaptureStreamdvNV = (void APIENTRY (*)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params)) ldg_find("glGetVideoCaptureStreamdvNV", lib); GL_CHECK(glp->GetVideoCaptureStreamdvNV); glp->GetVideoCaptureStreamfvNV = (void APIENTRY (*)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params)) ldg_find("glGetVideoCaptureStreamfvNV", lib); GL_CHECK(glp->GetVideoCaptureStreamfvNV); glp->GetVideoCaptureStreamivNV = (void APIENTRY (*)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params)) ldg_find("glGetVideoCaptureStreamivNV", lib); GL_CHECK(glp->GetVideoCaptureStreamivNV); glp->GetVideoCaptureivNV = (void APIENTRY (*)(GLuint video_capture_slot, GLenum pname, GLint *params)) ldg_find("glGetVideoCaptureivNV", lib); GL_CHECK(glp->GetVideoCaptureivNV); glp->GetVideoi64vNV = (void APIENTRY (*)(GLuint video_slot, GLenum pname, GLint64EXT *params)) ldg_find("glGetVideoi64vNV", lib); GL_CHECK(glp->GetVideoi64vNV); glp->GetVideoivNV = (void APIENTRY (*)(GLuint video_slot, GLenum pname, GLint *params)) ldg_find("glGetVideoivNV", lib); GL_CHECK(glp->GetVideoivNV); glp->GetVideoui64vNV = (void APIENTRY (*)(GLuint video_slot, GLenum pname, GLuint64EXT *params)) ldg_find("glGetVideoui64vNV", lib); GL_CHECK(glp->GetVideoui64vNV); glp->GetVideouivNV = (void APIENTRY (*)(GLuint video_slot, GLenum pname, GLuint *params)) ldg_find("glGetVideouivNV", lib); GL_CHECK(glp->GetVideouivNV); glp->GetnColorTableARB = (void APIENTRY (*)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table)) ldg_find("glGetnColorTableARB", lib); GL_CHECK(glp->GetnColorTableARB); glp->GetnCompressedTexImageARB = (void APIENTRY (*)(GLenum target, GLint lod, GLsizei bufSize, void *img)) ldg_find("glGetnCompressedTexImageARB", lib); GL_CHECK(glp->GetnCompressedTexImageARB); glp->GetnConvolutionFilterARB = (void APIENTRY (*)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image)) ldg_find("glGetnConvolutionFilterARB", lib); GL_CHECK(glp->GetnConvolutionFilterARB); glp->GetnHistogramARB = (void APIENTRY (*)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values)) ldg_find("glGetnHistogramARB", lib); GL_CHECK(glp->GetnHistogramARB); glp->GetnMapdvARB = (void APIENTRY (*)(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v)) ldg_find("glGetnMapdvARB", lib); GL_CHECK(glp->GetnMapdvARB); glp->GetnMapfvARB = (void APIENTRY (*)(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v)) ldg_find("glGetnMapfvARB", lib); GL_CHECK(glp->GetnMapfvARB); glp->GetnMapivARB = (void APIENTRY (*)(GLenum target, GLenum query, GLsizei bufSize, GLint *v)) ldg_find("glGetnMapivARB", lib); GL_CHECK(glp->GetnMapivARB); glp->GetnMinmaxARB = (void APIENTRY (*)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values)) ldg_find("glGetnMinmaxARB", lib); GL_CHECK(glp->GetnMinmaxARB); glp->GetnPixelMapfvARB = (void APIENTRY (*)(GLenum map, GLsizei bufSize, GLfloat *values)) ldg_find("glGetnPixelMapfvARB", lib); GL_CHECK(glp->GetnPixelMapfvARB); glp->GetnPixelMapuivARB = (void APIENTRY (*)(GLenum map, GLsizei bufSize, GLuint *values)) ldg_find("glGetnPixelMapuivARB", lib); GL_CHECK(glp->GetnPixelMapuivARB); glp->GetnPixelMapusvARB = (void APIENTRY (*)(GLenum map, GLsizei bufSize, GLushort *values)) ldg_find("glGetnPixelMapusvARB", lib); GL_CHECK(glp->GetnPixelMapusvARB); glp->GetnPolygonStippleARB = (void APIENTRY (*)(GLsizei bufSize, GLubyte *pattern)) ldg_find("glGetnPolygonStippleARB", lib); GL_CHECK(glp->GetnPolygonStippleARB); glp->GetnSeparableFilterARB = (void APIENTRY (*)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span)) ldg_find("glGetnSeparableFilterARB", lib); GL_CHECK(glp->GetnSeparableFilterARB); glp->GetnTexImageARB = (void APIENTRY (*)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img)) ldg_find("glGetnTexImageARB", lib); GL_CHECK(glp->GetnTexImageARB); glp->GetnUniformdvARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei bufSize, GLdouble *params)) ldg_find("glGetnUniformdvARB", lib); GL_CHECK(glp->GetnUniformdvARB); glp->GetnUniformfvARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params)) ldg_find("glGetnUniformfvARB", lib); GL_CHECK(glp->GetnUniformfvARB); glp->GetnUniformivARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei bufSize, GLint *params)) ldg_find("glGetnUniformivARB", lib); GL_CHECK(glp->GetnUniformivARB); glp->GetnUniformuivARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei bufSize, GLuint *params)) ldg_find("glGetnUniformuivARB", lib); GL_CHECK(glp->GetnUniformuivARB); glp->ImportSyncEXT = (GLsync APIENTRY (*)(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags)) ldg_find("glImportSyncEXT", lib); GL_CHECK(glp->ImportSyncEXT); glp->IndexFormatNV = (void APIENTRY (*)(GLenum type, GLsizei stride)) ldg_find("glIndexFormatNV", lib); GL_CHECK(glp->IndexFormatNV); glp->IndexxOES = (void APIENTRY (*)(GLfixed component)) ldg_find("glIndexxOES", lib); GL_CHECK(glp->IndexxOES); glp->IndexxvOES = (void APIENTRY (*)(const GLfixed *component)) ldg_find("glIndexxvOES", lib); GL_CHECK(glp->IndexxvOES); glp->InsertEventMarkerEXT = (void APIENTRY (*)(GLsizei length, const GLchar *marker)) ldg_find("glInsertEventMarkerEXT", lib); GL_CHECK(glp->InsertEventMarkerEXT); glp->InterpolatePathsNV = (void APIENTRY (*)(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight)) ldg_find("glInterpolatePathsNV", lib); GL_CHECK(glp->InterpolatePathsNV); glp->InvalidateBufferData = (void APIENTRY (*)(GLuint buffer)) ldg_find("glInvalidateBufferData", lib); GL_CHECK(glp->InvalidateBufferData); glp->InvalidateBufferSubData = (void APIENTRY (*)(GLuint buffer, GLintptr offset, GLsizeiptr length)) ldg_find("glInvalidateBufferSubData", lib); GL_CHECK(glp->InvalidateBufferSubData); glp->InvalidateFramebuffer = (void APIENTRY (*)(GLenum target, GLsizei numAttachments, const GLenum *attachments)) ldg_find("glInvalidateFramebuffer", lib); GL_CHECK(glp->InvalidateFramebuffer); glp->InvalidateSubFramebuffer = (void APIENTRY (*)(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glInvalidateSubFramebuffer", lib); GL_CHECK(glp->InvalidateSubFramebuffer); glp->InvalidateTexImage = (void APIENTRY (*)(GLuint texture, GLint level)) ldg_find("glInvalidateTexImage", lib); GL_CHECK(glp->InvalidateTexImage); glp->InvalidateTexSubImage = (void APIENTRY (*)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth)) ldg_find("glInvalidateTexSubImage", lib); GL_CHECK(glp->InvalidateTexSubImage); glp->IsBufferResidentNV = (GLboolean APIENTRY (*)(GLenum target)) ldg_find("glIsBufferResidentNV", lib); GL_CHECK(glp->IsBufferResidentNV); glp->IsEnabledIndexedEXT = (GLboolean APIENTRY (*)(GLenum target, GLuint index)) ldg_find("glIsEnabledIndexedEXT", lib); GL_CHECK(glp->IsEnabledIndexedEXT); glp->IsEnabledi = (GLboolean APIENTRY (*)(GLenum target, GLuint index)) ldg_find("glIsEnabledi", lib); GL_CHECK(glp->IsEnabledi); glp->IsFramebuffer = (GLboolean APIENTRY (*)(GLuint framebuffer)) ldg_find("glIsFramebuffer", lib); GL_CHECK(glp->IsFramebuffer); glp->IsFramebufferEXT = (GLboolean APIENTRY (*)(GLuint framebuffer)) ldg_find("glIsFramebufferEXT", lib); GL_CHECK(glp->IsFramebufferEXT); glp->IsImageHandleResidentARB = (GLboolean APIENTRY (*)(GLuint64 handle)) ldg_find("glIsImageHandleResidentARB", lib); GL_CHECK(glp->IsImageHandleResidentARB); glp->IsImageHandleResidentNV = (GLboolean APIENTRY (*)(GLuint64 handle)) ldg_find("glIsImageHandleResidentNV", lib); GL_CHECK(glp->IsImageHandleResidentNV); glp->IsNameAMD = (GLboolean APIENTRY (*)(GLenum identifier, GLuint name)) ldg_find("glIsNameAMD", lib); GL_CHECK(glp->IsNameAMD); glp->IsNamedBufferResidentNV = (GLboolean APIENTRY (*)(GLuint buffer)) ldg_find("glIsNamedBufferResidentNV", lib); GL_CHECK(glp->IsNamedBufferResidentNV); glp->IsNamedStringARB = (GLboolean APIENTRY (*)(GLint namelen, const GLchar *name)) ldg_find("glIsNamedStringARB", lib); GL_CHECK(glp->IsNamedStringARB); glp->IsPathNV = (GLboolean APIENTRY (*)(GLuint path)) ldg_find("glIsPathNV", lib); GL_CHECK(glp->IsPathNV); glp->IsPointInFillPathNV = (GLboolean APIENTRY (*)(GLuint path, GLuint mask, GLfloat x, GLfloat y)) ldg_find("glIsPointInFillPathNV", lib); GL_CHECK(glp->IsPointInFillPathNV); glp->IsPointInStrokePathNV = (GLboolean APIENTRY (*)(GLuint path, GLfloat x, GLfloat y)) ldg_find("glIsPointInStrokePathNV", lib); GL_CHECK(glp->IsPointInStrokePathNV); glp->IsProgram = (GLboolean APIENTRY (*)(GLuint program)) ldg_find("glIsProgram", lib); GL_CHECK(glp->IsProgram); glp->IsProgramPipeline = (GLboolean APIENTRY (*)(GLuint pipeline)) ldg_find("glIsProgramPipeline", lib); GL_CHECK(glp->IsProgramPipeline); glp->IsRenderbuffer = (GLboolean APIENTRY (*)(GLuint renderbuffer)) ldg_find("glIsRenderbuffer", lib); GL_CHECK(glp->IsRenderbuffer); glp->IsRenderbufferEXT = (GLboolean APIENTRY (*)(GLuint renderbuffer)) ldg_find("glIsRenderbufferEXT", lib); GL_CHECK(glp->IsRenderbufferEXT); glp->IsSampler = (GLboolean APIENTRY (*)(GLuint sampler)) ldg_find("glIsSampler", lib); GL_CHECK(glp->IsSampler); glp->IsShader = (GLboolean APIENTRY (*)(GLuint shader)) ldg_find("glIsShader", lib); GL_CHECK(glp->IsShader); glp->IsSync = (GLboolean APIENTRY (*)(GLsync sync)) ldg_find("glIsSync", lib); GL_CHECK(glp->IsSync); glp->IsTextureHandleResidentARB = (GLboolean APIENTRY (*)(GLuint64 handle)) ldg_find("glIsTextureHandleResidentARB", lib); GL_CHECK(glp->IsTextureHandleResidentARB); glp->IsTextureHandleResidentNV = (GLboolean APIENTRY (*)(GLuint64 handle)) ldg_find("glIsTextureHandleResidentNV", lib); GL_CHECK(glp->IsTextureHandleResidentNV); glp->IsTransformFeedback = (GLboolean APIENTRY (*)(GLuint id)) ldg_find("glIsTransformFeedback", lib); GL_CHECK(glp->IsTransformFeedback); glp->IsTransformFeedbackNV = (GLboolean APIENTRY (*)(GLuint id)) ldg_find("glIsTransformFeedbackNV", lib); GL_CHECK(glp->IsTransformFeedbackNV); glp->IsVertexArray = (GLboolean APIENTRY (*)(GLuint array)) ldg_find("glIsVertexArray", lib); GL_CHECK(glp->IsVertexArray); glp->IsVertexAttribEnabledAPPLE = (GLboolean APIENTRY (*)(GLuint index, GLenum pname)) ldg_find("glIsVertexAttribEnabledAPPLE", lib); GL_CHECK(glp->IsVertexAttribEnabledAPPLE); glp->LabelObjectEXT = (void APIENTRY (*)(GLenum type, GLuint object, GLsizei length, const GLchar *label)) ldg_find("glLabelObjectEXT", lib); GL_CHECK(glp->LabelObjectEXT); glp->LightModelxOES = (void APIENTRY (*)(GLenum pname, GLfixed param)) ldg_find("glLightModelxOES", lib); GL_CHECK(glp->LightModelxOES); glp->LightModelxvOES = (void APIENTRY (*)(GLenum pname, const GLfixed *param)) ldg_find("glLightModelxvOES", lib); GL_CHECK(glp->LightModelxvOES); glp->LightxOES = (void APIENTRY (*)(GLenum light, GLenum pname, GLfixed param)) ldg_find("glLightxOES", lib); GL_CHECK(glp->LightxOES); glp->LightxvOES = (void APIENTRY (*)(GLenum light, GLenum pname, const GLfixed *params)) ldg_find("glLightxvOES", lib); GL_CHECK(glp->LightxvOES); glp->LineWidthxOES = (void APIENTRY (*)(GLfixed width)) ldg_find("glLineWidthxOES", lib); GL_CHECK(glp->LineWidthxOES); glp->LinkProgram = (void APIENTRY (*)(GLuint program)) ldg_find("glLinkProgram", lib); GL_CHECK(glp->LinkProgram); glp->LoadMatrixxOES = (void APIENTRY (*)(const GLfixed *m)) ldg_find("glLoadMatrixxOES", lib); GL_CHECK(glp->LoadMatrixxOES); glp->LoadTransposeMatrixxOES = (void APIENTRY (*)(const GLfixed *m)) ldg_find("glLoadTransposeMatrixxOES", lib); GL_CHECK(glp->LoadTransposeMatrixxOES); glp->MakeBufferNonResidentNV = (void APIENTRY (*)(GLenum target)) ldg_find("glMakeBufferNonResidentNV", lib); GL_CHECK(glp->MakeBufferNonResidentNV); glp->MakeBufferResidentNV = (void APIENTRY (*)(GLenum target, GLenum access)) ldg_find("glMakeBufferResidentNV", lib); GL_CHECK(glp->MakeBufferResidentNV); glp->MakeImageHandleNonResidentARB = (void APIENTRY (*)(GLuint64 handle)) ldg_find("glMakeImageHandleNonResidentARB", lib); GL_CHECK(glp->MakeImageHandleNonResidentARB); glp->MakeImageHandleNonResidentNV = (void APIENTRY (*)(GLuint64 handle)) ldg_find("glMakeImageHandleNonResidentNV", lib); GL_CHECK(glp->MakeImageHandleNonResidentNV); glp->MakeImageHandleResidentARB = (void APIENTRY (*)(GLuint64 handle, GLenum access)) ldg_find("glMakeImageHandleResidentARB", lib); GL_CHECK(glp->MakeImageHandleResidentARB); glp->MakeImageHandleResidentNV = (void APIENTRY (*)(GLuint64 handle, GLenum access)) ldg_find("glMakeImageHandleResidentNV", lib); GL_CHECK(glp->MakeImageHandleResidentNV); glp->MakeNamedBufferNonResidentNV = (void APIENTRY (*)(GLuint buffer)) ldg_find("glMakeNamedBufferNonResidentNV", lib); GL_CHECK(glp->MakeNamedBufferNonResidentNV); glp->MakeNamedBufferResidentNV = (void APIENTRY (*)(GLuint buffer, GLenum access)) ldg_find("glMakeNamedBufferResidentNV", lib); GL_CHECK(glp->MakeNamedBufferResidentNV); glp->MakeTextureHandleNonResidentARB = (void APIENTRY (*)(GLuint64 handle)) ldg_find("glMakeTextureHandleNonResidentARB", lib); GL_CHECK(glp->MakeTextureHandleNonResidentARB); glp->MakeTextureHandleNonResidentNV = (void APIENTRY (*)(GLuint64 handle)) ldg_find("glMakeTextureHandleNonResidentNV", lib); GL_CHECK(glp->MakeTextureHandleNonResidentNV); glp->MakeTextureHandleResidentARB = (void APIENTRY (*)(GLuint64 handle)) ldg_find("glMakeTextureHandleResidentARB", lib); GL_CHECK(glp->MakeTextureHandleResidentARB); glp->MakeTextureHandleResidentNV = (void APIENTRY (*)(GLuint64 handle)) ldg_find("glMakeTextureHandleResidentNV", lib); GL_CHECK(glp->MakeTextureHandleResidentNV); glp->Map1xOES = (void APIENTRY (*)(GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points)) ldg_find("glMap1xOES", lib); GL_CHECK(glp->Map1xOES); glp->Map2xOES = (void APIENTRY (*)(GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points)) ldg_find("glMap2xOES", lib); GL_CHECK(glp->Map2xOES); glp->MapBufferRange = (void * APIENTRY (*)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)) ldg_find("glMapBufferRange", lib); GL_CHECK(glp->MapBufferRange); glp->MapGrid1xOES = (void APIENTRY (*)(GLint n, GLfixed u1, GLfixed u2)) ldg_find("glMapGrid1xOES", lib); GL_CHECK(glp->MapGrid1xOES); glp->MapGrid2xOES = (void APIENTRY (*)(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2)) ldg_find("glMapGrid2xOES", lib); GL_CHECK(glp->MapGrid2xOES); glp->MapNamedBufferEXT = (void * APIENTRY (*)(GLuint buffer, GLenum access)) ldg_find("glMapNamedBufferEXT", lib); GL_CHECK(glp->MapNamedBufferEXT); glp->MapNamedBufferRangeEXT = (void * APIENTRY (*)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access)) ldg_find("glMapNamedBufferRangeEXT", lib); GL_CHECK(glp->MapNamedBufferRangeEXT); glp->MapTexture2DINTEL = (void * APIENTRY (*)(GLuint texture, GLint level, GLbitfield access, const GLint *stride, const GLenum *layout)) ldg_find("glMapTexture2DINTEL", lib); GL_CHECK(glp->MapTexture2DINTEL); glp->MapVertexAttrib1dAPPLE = (void APIENTRY (*)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points)) ldg_find("glMapVertexAttrib1dAPPLE", lib); GL_CHECK(glp->MapVertexAttrib1dAPPLE); glp->MapVertexAttrib1fAPPLE = (void APIENTRY (*)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points)) ldg_find("glMapVertexAttrib1fAPPLE", lib); GL_CHECK(glp->MapVertexAttrib1fAPPLE); glp->MapVertexAttrib2dAPPLE = (void APIENTRY (*)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points)) ldg_find("glMapVertexAttrib2dAPPLE", lib); GL_CHECK(glp->MapVertexAttrib2dAPPLE); glp->MapVertexAttrib2fAPPLE = (void APIENTRY (*)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points)) ldg_find("glMapVertexAttrib2fAPPLE", lib); GL_CHECK(glp->MapVertexAttrib2fAPPLE); glp->MaterialxOES = (void APIENTRY (*)(GLenum face, GLenum pname, GLfixed param)) ldg_find("glMaterialxOES", lib); GL_CHECK(glp->MaterialxOES); glp->MaterialxvOES = (void APIENTRY (*)(GLenum face, GLenum pname, const GLfixed *param)) ldg_find("glMaterialxvOES", lib); GL_CHECK(glp->MaterialxvOES); glp->MatrixFrustumEXT = (void APIENTRY (*)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)) ldg_find("glMatrixFrustumEXT", lib); GL_CHECK(glp->MatrixFrustumEXT); glp->MatrixLoadIdentityEXT = (void APIENTRY (*)(GLenum mode)) ldg_find("glMatrixLoadIdentityEXT", lib); GL_CHECK(glp->MatrixLoadIdentityEXT); glp->MatrixLoadTransposedEXT = (void APIENTRY (*)(GLenum mode, const GLdouble *m)) ldg_find("glMatrixLoadTransposedEXT", lib); GL_CHECK(glp->MatrixLoadTransposedEXT); glp->MatrixLoadTransposefEXT = (void APIENTRY (*)(GLenum mode, const GLfloat *m)) ldg_find("glMatrixLoadTransposefEXT", lib); GL_CHECK(glp->MatrixLoadTransposefEXT); glp->MatrixLoaddEXT = (void APIENTRY (*)(GLenum mode, const GLdouble *m)) ldg_find("glMatrixLoaddEXT", lib); GL_CHECK(glp->MatrixLoaddEXT); glp->MatrixLoadfEXT = (void APIENTRY (*)(GLenum mode, const GLfloat *m)) ldg_find("glMatrixLoadfEXT", lib); GL_CHECK(glp->MatrixLoadfEXT); glp->MatrixMultTransposedEXT = (void APIENTRY (*)(GLenum mode, const GLdouble *m)) ldg_find("glMatrixMultTransposedEXT", lib); GL_CHECK(glp->MatrixMultTransposedEXT); glp->MatrixMultTransposefEXT = (void APIENTRY (*)(GLenum mode, const GLfloat *m)) ldg_find("glMatrixMultTransposefEXT", lib); GL_CHECK(glp->MatrixMultTransposefEXT); glp->MatrixMultdEXT = (void APIENTRY (*)(GLenum mode, const GLdouble *m)) ldg_find("glMatrixMultdEXT", lib); GL_CHECK(glp->MatrixMultdEXT); glp->MatrixMultfEXT = (void APIENTRY (*)(GLenum mode, const GLfloat *m)) ldg_find("glMatrixMultfEXT", lib); GL_CHECK(glp->MatrixMultfEXT); glp->MatrixOrthoEXT = (void APIENTRY (*)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)) ldg_find("glMatrixOrthoEXT", lib); GL_CHECK(glp->MatrixOrthoEXT); glp->MatrixPopEXT = (void APIENTRY (*)(GLenum mode)) ldg_find("glMatrixPopEXT", lib); GL_CHECK(glp->MatrixPopEXT); glp->MatrixPushEXT = (void APIENTRY (*)(GLenum mode)) ldg_find("glMatrixPushEXT", lib); GL_CHECK(glp->MatrixPushEXT); glp->MatrixRotatedEXT = (void APIENTRY (*)(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z)) ldg_find("glMatrixRotatedEXT", lib); GL_CHECK(glp->MatrixRotatedEXT); glp->MatrixRotatefEXT = (void APIENTRY (*)(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glMatrixRotatefEXT", lib); GL_CHECK(glp->MatrixRotatefEXT); glp->MatrixScaledEXT = (void APIENTRY (*)(GLenum mode, GLdouble x, GLdouble y, GLdouble z)) ldg_find("glMatrixScaledEXT", lib); GL_CHECK(glp->MatrixScaledEXT); glp->MatrixScalefEXT = (void APIENTRY (*)(GLenum mode, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glMatrixScalefEXT", lib); GL_CHECK(glp->MatrixScalefEXT); glp->MatrixTranslatedEXT = (void APIENTRY (*)(GLenum mode, GLdouble x, GLdouble y, GLdouble z)) ldg_find("glMatrixTranslatedEXT", lib); GL_CHECK(glp->MatrixTranslatedEXT); glp->MatrixTranslatefEXT = (void APIENTRY (*)(GLenum mode, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glMatrixTranslatefEXT", lib); GL_CHECK(glp->MatrixTranslatefEXT); glp->MemoryBarrier = (void APIENTRY (*)(GLbitfield barriers)) ldg_find("glMemoryBarrier", lib); GL_CHECK(glp->MemoryBarrier); glp->MemoryBarrierEXT = (void APIENTRY (*)(GLbitfield barriers)) ldg_find("glMemoryBarrierEXT", lib); GL_CHECK(glp->MemoryBarrierEXT); glp->MinSampleShading = (void APIENTRY (*)(GLfloat value)) ldg_find("glMinSampleShading", lib); GL_CHECK(glp->MinSampleShading); glp->MinSampleShadingARB = (void APIENTRY (*)(GLfloat value)) ldg_find("glMinSampleShadingARB", lib); GL_CHECK(glp->MinSampleShadingARB); glp->MultMatrixxOES = (void APIENTRY (*)(const GLfixed *m)) ldg_find("glMultMatrixxOES", lib); GL_CHECK(glp->MultMatrixxOES); glp->MultTransposeMatrixxOES = (void APIENTRY (*)(const GLfixed *m)) ldg_find("glMultTransposeMatrixxOES", lib); GL_CHECK(glp->MultTransposeMatrixxOES); glp->MultiDrawArraysIndirect = (void APIENTRY (*)(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride)) ldg_find("glMultiDrawArraysIndirect", lib); GL_CHECK(glp->MultiDrawArraysIndirect); glp->MultiDrawArraysIndirectAMD = (void APIENTRY (*)(GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride)) ldg_find("glMultiDrawArraysIndirectAMD", lib); GL_CHECK(glp->MultiDrawArraysIndirectAMD); glp->MultiDrawArraysIndirectBindlessNV = (void APIENTRY (*)(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount)) ldg_find("glMultiDrawArraysIndirectBindlessNV", lib); GL_CHECK(glp->MultiDrawArraysIndirectBindlessNV); glp->MultiDrawArraysIndirectCountARB = (void APIENTRY (*)(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)) ldg_find("glMultiDrawArraysIndirectCountARB", lib); GL_CHECK(glp->MultiDrawArraysIndirectCountARB); glp->MultiDrawElementsBaseVertex = (void APIENTRY (*)(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex)) ldg_find("glMultiDrawElementsBaseVertex", lib); GL_CHECK(glp->MultiDrawElementsBaseVertex); glp->MultiDrawElementsIndirect = (void APIENTRY (*)(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride)) ldg_find("glMultiDrawElementsIndirect", lib); GL_CHECK(glp->MultiDrawElementsIndirect); glp->MultiDrawElementsIndirectAMD = (void APIENTRY (*)(GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride)) ldg_find("glMultiDrawElementsIndirectAMD", lib); GL_CHECK(glp->MultiDrawElementsIndirectAMD); glp->MultiDrawElementsIndirectBindlessNV = (void APIENTRY (*)(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount)) ldg_find("glMultiDrawElementsIndirectBindlessNV", lib); GL_CHECK(glp->MultiDrawElementsIndirectBindlessNV); glp->MultiDrawElementsIndirectCountARB = (void APIENTRY (*)(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)) ldg_find("glMultiDrawElementsIndirectCountARB", lib); GL_CHECK(glp->MultiDrawElementsIndirectCountARB); glp->MultiTexBufferEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer)) ldg_find("glMultiTexBufferEXT", lib); GL_CHECK(glp->MultiTexBufferEXT); glp->MultiTexCoord1bOES = (void APIENTRY (*)(GLenum texture, GLbyte32 s)) ldg_find("glMultiTexCoord1bOES", lib); GL_CHECK(glp->MultiTexCoord1bOES); glp->MultiTexCoord1bvOES = (void APIENTRY (*)(GLenum texture, const GLbyte *coords)) ldg_find("glMultiTexCoord1bvOES", lib); GL_CHECK(glp->MultiTexCoord1bvOES); glp->MultiTexCoord1xOES = (void APIENTRY (*)(GLenum texture, GLfixed s)) ldg_find("glMultiTexCoord1xOES", lib); GL_CHECK(glp->MultiTexCoord1xOES); glp->MultiTexCoord1xvOES = (void APIENTRY (*)(GLenum texture, const GLfixed *coords)) ldg_find("glMultiTexCoord1xvOES", lib); GL_CHECK(glp->MultiTexCoord1xvOES); glp->MultiTexCoord2bOES = (void APIENTRY (*)(GLenum texture, GLbyte32 s, GLbyte32 t)) ldg_find("glMultiTexCoord2bOES", lib); GL_CHECK(glp->MultiTexCoord2bOES); glp->MultiTexCoord2bvOES = (void APIENTRY (*)(GLenum texture, const GLbyte *coords)) ldg_find("glMultiTexCoord2bvOES", lib); GL_CHECK(glp->MultiTexCoord2bvOES); glp->MultiTexCoord2xOES = (void APIENTRY (*)(GLenum texture, GLfixed s, GLfixed t)) ldg_find("glMultiTexCoord2xOES", lib); GL_CHECK(glp->MultiTexCoord2xOES); glp->MultiTexCoord2xvOES = (void APIENTRY (*)(GLenum texture, const GLfixed *coords)) ldg_find("glMultiTexCoord2xvOES", lib); GL_CHECK(glp->MultiTexCoord2xvOES); glp->MultiTexCoord3bOES = (void APIENTRY (*)(GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r)) ldg_find("glMultiTexCoord3bOES", lib); GL_CHECK(glp->MultiTexCoord3bOES); glp->MultiTexCoord3bvOES = (void APIENTRY (*)(GLenum texture, const GLbyte *coords)) ldg_find("glMultiTexCoord3bvOES", lib); GL_CHECK(glp->MultiTexCoord3bvOES); glp->MultiTexCoord3xOES = (void APIENTRY (*)(GLenum texture, GLfixed s, GLfixed t, GLfixed r)) ldg_find("glMultiTexCoord3xOES", lib); GL_CHECK(glp->MultiTexCoord3xOES); glp->MultiTexCoord3xvOES = (void APIENTRY (*)(GLenum texture, const GLfixed *coords)) ldg_find("glMultiTexCoord3xvOES", lib); GL_CHECK(glp->MultiTexCoord3xvOES); glp->MultiTexCoord4bOES = (void APIENTRY (*)(GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q)) ldg_find("glMultiTexCoord4bOES", lib); GL_CHECK(glp->MultiTexCoord4bOES); glp->MultiTexCoord4bvOES = (void APIENTRY (*)(GLenum texture, const GLbyte *coords)) ldg_find("glMultiTexCoord4bvOES", lib); GL_CHECK(glp->MultiTexCoord4bvOES); glp->MultiTexCoord4xOES = (void APIENTRY (*)(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q)) ldg_find("glMultiTexCoord4xOES", lib); GL_CHECK(glp->MultiTexCoord4xOES); glp->MultiTexCoord4xvOES = (void APIENTRY (*)(GLenum texture, const GLfixed *coords)) ldg_find("glMultiTexCoord4xvOES", lib); GL_CHECK(glp->MultiTexCoord4xvOES); glp->MultiTexCoordP1ui = (void APIENTRY (*)(GLenum texture, GLenum type, GLuint coords)) ldg_find("glMultiTexCoordP1ui", lib); GL_CHECK(glp->MultiTexCoordP1ui); glp->MultiTexCoordP1uiv = (void APIENTRY (*)(GLenum texture, GLenum type, const GLuint *coords)) ldg_find("glMultiTexCoordP1uiv", lib); GL_CHECK(glp->MultiTexCoordP1uiv); glp->MultiTexCoordP2ui = (void APIENTRY (*)(GLenum texture, GLenum type, GLuint coords)) ldg_find("glMultiTexCoordP2ui", lib); GL_CHECK(glp->MultiTexCoordP2ui); glp->MultiTexCoordP2uiv = (void APIENTRY (*)(GLenum texture, GLenum type, const GLuint *coords)) ldg_find("glMultiTexCoordP2uiv", lib); GL_CHECK(glp->MultiTexCoordP2uiv); glp->MultiTexCoordP3ui = (void APIENTRY (*)(GLenum texture, GLenum type, GLuint coords)) ldg_find("glMultiTexCoordP3ui", lib); GL_CHECK(glp->MultiTexCoordP3ui); glp->MultiTexCoordP3uiv = (void APIENTRY (*)(GLenum texture, GLenum type, const GLuint *coords)) ldg_find("glMultiTexCoordP3uiv", lib); GL_CHECK(glp->MultiTexCoordP3uiv); glp->MultiTexCoordP4ui = (void APIENTRY (*)(GLenum texture, GLenum type, GLuint coords)) ldg_find("glMultiTexCoordP4ui", lib); GL_CHECK(glp->MultiTexCoordP4ui); glp->MultiTexCoordP4uiv = (void APIENTRY (*)(GLenum texture, GLenum type, const GLuint *coords)) ldg_find("glMultiTexCoordP4uiv", lib); GL_CHECK(glp->MultiTexCoordP4uiv); glp->MultiTexCoordPointerEXT = (void APIENTRY (*)(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer)) ldg_find("glMultiTexCoordPointerEXT", lib); GL_CHECK(glp->MultiTexCoordPointerEXT); glp->MultiTexEnvfEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, GLfloat param)) ldg_find("glMultiTexEnvfEXT", lib); GL_CHECK(glp->MultiTexEnvfEXT); glp->MultiTexEnvfvEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params)) ldg_find("glMultiTexEnvfvEXT", lib); GL_CHECK(glp->MultiTexEnvfvEXT); glp->MultiTexEnviEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, GLint param)) ldg_find("glMultiTexEnviEXT", lib); GL_CHECK(glp->MultiTexEnviEXT); glp->MultiTexEnvivEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, const GLint *params)) ldg_find("glMultiTexEnvivEXT", lib); GL_CHECK(glp->MultiTexEnvivEXT); glp->MultiTexGendEXT = (void APIENTRY (*)(GLenum texunit, GLenum coord, GLenum pname, GLdouble param)) ldg_find("glMultiTexGendEXT", lib); GL_CHECK(glp->MultiTexGendEXT); glp->MultiTexGendvEXT = (void APIENTRY (*)(GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params)) ldg_find("glMultiTexGendvEXT", lib); GL_CHECK(glp->MultiTexGendvEXT); glp->MultiTexGenfEXT = (void APIENTRY (*)(GLenum texunit, GLenum coord, GLenum pname, GLfloat param)) ldg_find("glMultiTexGenfEXT", lib); GL_CHECK(glp->MultiTexGenfEXT); glp->MultiTexGenfvEXT = (void APIENTRY (*)(GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params)) ldg_find("glMultiTexGenfvEXT", lib); GL_CHECK(glp->MultiTexGenfvEXT); glp->MultiTexGeniEXT = (void APIENTRY (*)(GLenum texunit, GLenum coord, GLenum pname, GLint param)) ldg_find("glMultiTexGeniEXT", lib); GL_CHECK(glp->MultiTexGeniEXT); glp->MultiTexGenivEXT = (void APIENTRY (*)(GLenum texunit, GLenum coord, GLenum pname, const GLint *params)) ldg_find("glMultiTexGenivEXT", lib); GL_CHECK(glp->MultiTexGenivEXT); glp->MultiTexImage1DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)) ldg_find("glMultiTexImage1DEXT", lib); GL_CHECK(glp->MultiTexImage1DEXT); glp->MultiTexImage2DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)) ldg_find("glMultiTexImage2DEXT", lib); GL_CHECK(glp->MultiTexImage2DEXT); glp->MultiTexImage3DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)) ldg_find("glMultiTexImage3DEXT", lib); GL_CHECK(glp->MultiTexImage3DEXT); glp->MultiTexParameterIivEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, const GLint *params)) ldg_find("glMultiTexParameterIivEXT", lib); GL_CHECK(glp->MultiTexParameterIivEXT); glp->MultiTexParameterIuivEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, const GLuint *params)) ldg_find("glMultiTexParameterIuivEXT", lib); GL_CHECK(glp->MultiTexParameterIuivEXT); glp->MultiTexParameterfEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, GLfloat param)) ldg_find("glMultiTexParameterfEXT", lib); GL_CHECK(glp->MultiTexParameterfEXT); glp->MultiTexParameterfvEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params)) ldg_find("glMultiTexParameterfvEXT", lib); GL_CHECK(glp->MultiTexParameterfvEXT); glp->MultiTexParameteriEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, GLint param)) ldg_find("glMultiTexParameteriEXT", lib); GL_CHECK(glp->MultiTexParameteriEXT); glp->MultiTexParameterivEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLenum pname, const GLint *params)) ldg_find("glMultiTexParameterivEXT", lib); GL_CHECK(glp->MultiTexParameterivEXT); glp->MultiTexRenderbufferEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLuint renderbuffer)) ldg_find("glMultiTexRenderbufferEXT", lib); GL_CHECK(glp->MultiTexRenderbufferEXT); glp->MultiTexSubImage1DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)) ldg_find("glMultiTexSubImage1DEXT", lib); GL_CHECK(glp->MultiTexSubImage1DEXT); glp->MultiTexSubImage2DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)) ldg_find("glMultiTexSubImage2DEXT", lib); GL_CHECK(glp->MultiTexSubImage2DEXT); glp->MultiTexSubImage3DEXT = (void APIENTRY (*)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)) ldg_find("glMultiTexSubImage3DEXT", lib); GL_CHECK(glp->MultiTexSubImage3DEXT); glp->NamedBufferDataEXT = (void APIENTRY (*)(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage)) ldg_find("glNamedBufferDataEXT", lib); GL_CHECK(glp->NamedBufferDataEXT); glp->NamedBufferStorageEXT = (void APIENTRY (*)(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags)) ldg_find("glNamedBufferStorageEXT", lib); GL_CHECK(glp->NamedBufferStorageEXT); glp->NamedBufferSubDataEXT = (void APIENTRY (*)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)) ldg_find("glNamedBufferSubDataEXT", lib); GL_CHECK(glp->NamedBufferSubDataEXT); glp->NamedCopyBufferSubDataEXT = (void APIENTRY (*)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)) ldg_find("glNamedCopyBufferSubDataEXT", lib); GL_CHECK(glp->NamedCopyBufferSubDataEXT); glp->NamedFramebufferParameteriEXT = (void APIENTRY (*)(GLuint framebuffer, GLenum pname, GLint param)) ldg_find("glNamedFramebufferParameteriEXT", lib); GL_CHECK(glp->NamedFramebufferParameteriEXT); glp->NamedFramebufferRenderbufferEXT = (void APIENTRY (*)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) ldg_find("glNamedFramebufferRenderbufferEXT", lib); GL_CHECK(glp->NamedFramebufferRenderbufferEXT); glp->NamedFramebufferTexture1DEXT = (void APIENTRY (*)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) ldg_find("glNamedFramebufferTexture1DEXT", lib); GL_CHECK(glp->NamedFramebufferTexture1DEXT); glp->NamedFramebufferTexture2DEXT = (void APIENTRY (*)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) ldg_find("glNamedFramebufferTexture2DEXT", lib); GL_CHECK(glp->NamedFramebufferTexture2DEXT); glp->NamedFramebufferTexture3DEXT = (void APIENTRY (*)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)) ldg_find("glNamedFramebufferTexture3DEXT", lib); GL_CHECK(glp->NamedFramebufferTexture3DEXT); glp->NamedFramebufferTextureEXT = (void APIENTRY (*)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level)) ldg_find("glNamedFramebufferTextureEXT", lib); GL_CHECK(glp->NamedFramebufferTextureEXT); glp->NamedFramebufferTextureFaceEXT = (void APIENTRY (*)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face)) ldg_find("glNamedFramebufferTextureFaceEXT", lib); GL_CHECK(glp->NamedFramebufferTextureFaceEXT); glp->NamedFramebufferTextureLayerEXT = (void APIENTRY (*)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer)) ldg_find("glNamedFramebufferTextureLayerEXT", lib); GL_CHECK(glp->NamedFramebufferTextureLayerEXT); glp->NamedProgramLocalParameter4dEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glNamedProgramLocalParameter4dEXT", lib); GL_CHECK(glp->NamedProgramLocalParameter4dEXT); glp->NamedProgramLocalParameter4dvEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, const GLdouble *params)) ldg_find("glNamedProgramLocalParameter4dvEXT", lib); GL_CHECK(glp->NamedProgramLocalParameter4dvEXT); glp->NamedProgramLocalParameter4fEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glNamedProgramLocalParameter4fEXT", lib); GL_CHECK(glp->NamedProgramLocalParameter4fEXT); glp->NamedProgramLocalParameter4fvEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, const GLfloat *params)) ldg_find("glNamedProgramLocalParameter4fvEXT", lib); GL_CHECK(glp->NamedProgramLocalParameter4fvEXT); glp->NamedProgramLocalParameterI4iEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)) ldg_find("glNamedProgramLocalParameterI4iEXT", lib); GL_CHECK(glp->NamedProgramLocalParameterI4iEXT); glp->NamedProgramLocalParameterI4ivEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, const GLint *params)) ldg_find("glNamedProgramLocalParameterI4ivEXT", lib); GL_CHECK(glp->NamedProgramLocalParameterI4ivEXT); glp->NamedProgramLocalParameterI4uiEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) ldg_find("glNamedProgramLocalParameterI4uiEXT", lib); GL_CHECK(glp->NamedProgramLocalParameterI4uiEXT); glp->NamedProgramLocalParameterI4uivEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, const GLuint *params)) ldg_find("glNamedProgramLocalParameterI4uivEXT", lib); GL_CHECK(glp->NamedProgramLocalParameterI4uivEXT); glp->NamedProgramLocalParameters4fvEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params)) ldg_find("glNamedProgramLocalParameters4fvEXT", lib); GL_CHECK(glp->NamedProgramLocalParameters4fvEXT); glp->NamedProgramLocalParametersI4ivEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params)) ldg_find("glNamedProgramLocalParametersI4ivEXT", lib); GL_CHECK(glp->NamedProgramLocalParametersI4ivEXT); glp->NamedProgramLocalParametersI4uivEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params)) ldg_find("glNamedProgramLocalParametersI4uivEXT", lib); GL_CHECK(glp->NamedProgramLocalParametersI4uivEXT); glp->NamedProgramStringEXT = (void APIENTRY (*)(GLuint program, GLenum target, GLenum format, GLsizei len, const void *string)) ldg_find("glNamedProgramStringEXT", lib); GL_CHECK(glp->NamedProgramStringEXT); glp->NamedRenderbufferStorageEXT = (void APIENTRY (*)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height)) ldg_find("glNamedRenderbufferStorageEXT", lib); GL_CHECK(glp->NamedRenderbufferStorageEXT); glp->NamedRenderbufferStorageMultisampleCoverageEXT = (void APIENTRY (*)(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height)) ldg_find("glNamedRenderbufferStorageMultisampleCoverageEXT", lib); GL_CHECK(glp->NamedRenderbufferStorageMultisampleCoverageEXT); glp->NamedRenderbufferStorageMultisampleEXT = (void APIENTRY (*)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) ldg_find("glNamedRenderbufferStorageMultisampleEXT", lib); GL_CHECK(glp->NamedRenderbufferStorageMultisampleEXT); glp->NamedStringARB = (void APIENTRY (*)(GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string)) ldg_find("glNamedStringARB", lib); GL_CHECK(glp->NamedStringARB); glp->Normal3xOES = (void APIENTRY (*)(GLfixed nx, GLfixed ny, GLfixed nz)) ldg_find("glNormal3xOES", lib); GL_CHECK(glp->Normal3xOES); glp->Normal3xvOES = (void APIENTRY (*)(const GLfixed *coords)) ldg_find("glNormal3xvOES", lib); GL_CHECK(glp->Normal3xvOES); glp->NormalFormatNV = (void APIENTRY (*)(GLenum type, GLsizei stride)) ldg_find("glNormalFormatNV", lib); GL_CHECK(glp->NormalFormatNV); glp->NormalP3ui = (void APIENTRY (*)(GLenum type, GLuint coords)) ldg_find("glNormalP3ui", lib); GL_CHECK(glp->NormalP3ui); glp->NormalP3uiv = (void APIENTRY (*)(GLenum type, const GLuint *coords)) ldg_find("glNormalP3uiv", lib); GL_CHECK(glp->NormalP3uiv); glp->ObjectLabel = (void APIENTRY (*)(GLenum identifier, GLuint name, GLsizei length, const GLchar *label)) ldg_find("glObjectLabel", lib); GL_CHECK(glp->ObjectLabel); glp->ObjectPtrLabel = (void APIENTRY (*)(const void *ptr, GLsizei length, const GLchar *label)) ldg_find("glObjectPtrLabel", lib); GL_CHECK(glp->ObjectPtrLabel); glp->ObjectPurgeableAPPLE = (GLenum APIENTRY (*)(GLenum objectType, GLuint name, GLenum option)) ldg_find("glObjectPurgeableAPPLE", lib); GL_CHECK(glp->ObjectPurgeableAPPLE); glp->ObjectUnpurgeableAPPLE = (GLenum APIENTRY (*)(GLenum objectType, GLuint name, GLenum option)) ldg_find("glObjectUnpurgeableAPPLE", lib); GL_CHECK(glp->ObjectUnpurgeableAPPLE); glp->OrthofOES = (void APIENTRY (*)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f)) ldg_find("glOrthofOES", lib); GL_CHECK(glp->OrthofOES); glp->OrthoxOES = (void APIENTRY (*)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f)) ldg_find("glOrthoxOES", lib); GL_CHECK(glp->OrthoxOES); glp->PassThroughxOES = (void APIENTRY (*)(GLfixed token)) ldg_find("glPassThroughxOES", lib); GL_CHECK(glp->PassThroughxOES); glp->PatchParameterfv = (void APIENTRY (*)(GLenum pname, const GLfloat *values)) ldg_find("glPatchParameterfv", lib); GL_CHECK(glp->PatchParameterfv); glp->PatchParameteri = (void APIENTRY (*)(GLenum pname, GLint value)) ldg_find("glPatchParameteri", lib); GL_CHECK(glp->PatchParameteri); glp->PathColorGenNV = (void APIENTRY (*)(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs)) ldg_find("glPathColorGenNV", lib); GL_CHECK(glp->PathColorGenNV); glp->PathCommandsNV = (void APIENTRY (*)(GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords)) ldg_find("glPathCommandsNV", lib); GL_CHECK(glp->PathCommandsNV); glp->PathCoordsNV = (void APIENTRY (*)(GLuint path, GLsizei numCoords, GLenum coordType, const void *coords)) ldg_find("glPathCoordsNV", lib); GL_CHECK(glp->PathCoordsNV); glp->PathCoverDepthFuncNV = (void APIENTRY (*)(GLenum func)) ldg_find("glPathCoverDepthFuncNV", lib); GL_CHECK(glp->PathCoverDepthFuncNV); glp->PathDashArrayNV = (void APIENTRY (*)(GLuint path, GLsizei dashCount, const GLfloat *dashArray)) ldg_find("glPathDashArrayNV", lib); GL_CHECK(glp->PathDashArrayNV); glp->PathFogGenNV = (void APIENTRY (*)(GLenum genMode)) ldg_find("glPathFogGenNV", lib); GL_CHECK(glp->PathFogGenNV); glp->PathGlyphRangeNV = (void APIENTRY (*)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)) ldg_find("glPathGlyphRangeNV", lib); GL_CHECK(glp->PathGlyphRangeNV); glp->PathGlyphsNV = (void APIENTRY (*)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)) ldg_find("glPathGlyphsNV", lib); GL_CHECK(glp->PathGlyphsNV); glp->PathParameterfNV = (void APIENTRY (*)(GLuint path, GLenum pname, GLfloat value)) ldg_find("glPathParameterfNV", lib); GL_CHECK(glp->PathParameterfNV); glp->PathParameterfvNV = (void APIENTRY (*)(GLuint path, GLenum pname, const GLfloat *value)) ldg_find("glPathParameterfvNV", lib); GL_CHECK(glp->PathParameterfvNV); glp->PathParameteriNV = (void APIENTRY (*)(GLuint path, GLenum pname, GLint value)) ldg_find("glPathParameteriNV", lib); GL_CHECK(glp->PathParameteriNV); glp->PathParameterivNV = (void APIENTRY (*)(GLuint path, GLenum pname, const GLint *value)) ldg_find("glPathParameterivNV", lib); GL_CHECK(glp->PathParameterivNV); glp->PathStencilDepthOffsetNV = (void APIENTRY (*)(GLfloat factor, GLfloat units)) ldg_find("glPathStencilDepthOffsetNV", lib); GL_CHECK(glp->PathStencilDepthOffsetNV); glp->PathStencilFuncNV = (void APIENTRY (*)(GLenum func, GLint ref, GLuint mask)) ldg_find("glPathStencilFuncNV", lib); GL_CHECK(glp->PathStencilFuncNV); glp->PathStringNV = (void APIENTRY (*)(GLuint path, GLenum format, GLsizei length, const void *pathString)) ldg_find("glPathStringNV", lib); GL_CHECK(glp->PathStringNV); glp->PathSubCommandsNV = (void APIENTRY (*)(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords)) ldg_find("glPathSubCommandsNV", lib); GL_CHECK(glp->PathSubCommandsNV); glp->PathSubCoordsNV = (void APIENTRY (*)(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords)) ldg_find("glPathSubCoordsNV", lib); GL_CHECK(glp->PathSubCoordsNV); glp->PathTexGenNV = (void APIENTRY (*)(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs)) ldg_find("glPathTexGenNV", lib); GL_CHECK(glp->PathTexGenNV); glp->PauseTransformFeedback = (void APIENTRY (*)(void)) ldg_find("glPauseTransformFeedback", lib); GL_CHECK(glp->PauseTransformFeedback); glp->PauseTransformFeedbackNV = (void APIENTRY (*)(void)) ldg_find("glPauseTransformFeedbackNV", lib); GL_CHECK(glp->PauseTransformFeedbackNV); glp->PixelMapx = (void APIENTRY (*)(GLenum map, GLint size, const GLfixed *values)) ldg_find("glPixelMapx", lib); GL_CHECK(glp->PixelMapx); glp->PixelStorex = (void APIENTRY (*)(GLenum pname, GLfixed param)) ldg_find("glPixelStorex", lib); GL_CHECK(glp->PixelStorex); glp->PixelTransferxOES = (void APIENTRY (*)(GLenum pname, GLfixed param)) ldg_find("glPixelTransferxOES", lib); GL_CHECK(glp->PixelTransferxOES); glp->PixelZoomxOES = (void APIENTRY (*)(GLfixed xfactor, GLfixed yfactor)) ldg_find("glPixelZoomxOES", lib); GL_CHECK(glp->PixelZoomxOES); glp->PointAlongPathNV = (GLboolean APIENTRY (*)(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY)) ldg_find("glPointAlongPathNV", lib); GL_CHECK(glp->PointAlongPathNV); glp->PointParameterxvOES = (void APIENTRY (*)(GLenum pname, const GLfixed *params)) ldg_find("glPointParameterxvOES", lib); GL_CHECK(glp->PointParameterxvOES); glp->PointSizePointerAPPLE = (void APIENTRY (*)(GLenum type, GLsizei stride, const GLvoid *pointer)) ldg_find("glPointSizePointerAPPLE", lib); GL_CHECK(glp->PointSizePointerAPPLE); glp->PointSizexOES = (void APIENTRY (*)(GLfixed size)) ldg_find("glPointSizexOES", lib); GL_CHECK(glp->PointSizexOES); glp->PolygonOffsetxOES = (void APIENTRY (*)(GLfixed factor, GLfixed units)) ldg_find("glPolygonOffsetxOES", lib); GL_CHECK(glp->PolygonOffsetxOES); glp->PopDebugGroup = (void APIENTRY (*)(void)) ldg_find("glPopDebugGroup", lib); GL_CHECK(glp->PopDebugGroup); glp->PopGroupMarkerEXT = (void APIENTRY (*)(void)) ldg_find("glPopGroupMarkerEXT", lib); GL_CHECK(glp->PopGroupMarkerEXT); glp->PresentFrameDualFillNV = (void APIENTRY (*)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3)) ldg_find("glPresentFrameDualFillNV", lib); GL_CHECK(glp->PresentFrameDualFillNV); glp->PresentFrameKeyedNV = (void APIENTRY (*)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1)) ldg_find("glPresentFrameKeyedNV", lib); GL_CHECK(glp->PresentFrameKeyedNV); glp->PrimitiveRestartIndex = (void APIENTRY (*)(GLuint index)) ldg_find("glPrimitiveRestartIndex", lib); GL_CHECK(glp->PrimitiveRestartIndex); glp->PrioritizeTexturesxOES = (void APIENTRY (*)(GLsizei n, const GLuint *textures, const GLfixed *priorities)) ldg_find("glPrioritizeTexturesxOES", lib); GL_CHECK(glp->PrioritizeTexturesxOES); glp->ProgramBinary = (void APIENTRY (*)(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)) ldg_find("glProgramBinary", lib); GL_CHECK(glp->ProgramBinary); glp->ProgramBufferParametersIivNV = (void APIENTRY (*)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params)) ldg_find("glProgramBufferParametersIivNV", lib); GL_CHECK(glp->ProgramBufferParametersIivNV); glp->ProgramBufferParametersIuivNV = (void APIENTRY (*)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params)) ldg_find("glProgramBufferParametersIuivNV", lib); GL_CHECK(glp->ProgramBufferParametersIuivNV); glp->ProgramBufferParametersfvNV = (void APIENTRY (*)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params)) ldg_find("glProgramBufferParametersfvNV", lib); GL_CHECK(glp->ProgramBufferParametersfvNV); glp->ProgramCallbackMESA = (void APIENTRY (*)(GLenum target, GLprogramcallbackMESA callback, GLvoid *data)) ldg_find("glProgramCallbackMESA", lib); GL_CHECK(glp->ProgramCallbackMESA); glp->ProgramEnvParameterI4iNV = (void APIENTRY (*)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)) ldg_find("glProgramEnvParameterI4iNV", lib); GL_CHECK(glp->ProgramEnvParameterI4iNV); glp->ProgramEnvParameterI4ivNV = (void APIENTRY (*)(GLenum target, GLuint index, const GLint *params)) ldg_find("glProgramEnvParameterI4ivNV", lib); GL_CHECK(glp->ProgramEnvParameterI4ivNV); glp->ProgramEnvParameterI4uiNV = (void APIENTRY (*)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) ldg_find("glProgramEnvParameterI4uiNV", lib); GL_CHECK(glp->ProgramEnvParameterI4uiNV); glp->ProgramEnvParameterI4uivNV = (void APIENTRY (*)(GLenum target, GLuint index, const GLuint *params)) ldg_find("glProgramEnvParameterI4uivNV", lib); GL_CHECK(glp->ProgramEnvParameterI4uivNV); glp->ProgramEnvParameters4fvEXT = (void APIENTRY (*)(GLenum target, GLuint index, GLsizei count, const GLfloat *params)) ldg_find("glProgramEnvParameters4fvEXT", lib); GL_CHECK(glp->ProgramEnvParameters4fvEXT); glp->ProgramEnvParametersI4ivNV = (void APIENTRY (*)(GLenum target, GLuint index, GLsizei count, const GLint *params)) ldg_find("glProgramEnvParametersI4ivNV", lib); GL_CHECK(glp->ProgramEnvParametersI4ivNV); glp->ProgramEnvParametersI4uivNV = (void APIENTRY (*)(GLenum target, GLuint index, GLsizei count, const GLuint *params)) ldg_find("glProgramEnvParametersI4uivNV", lib); GL_CHECK(glp->ProgramEnvParametersI4uivNV); glp->ProgramLocalParameterI4iNV = (void APIENTRY (*)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)) ldg_find("glProgramLocalParameterI4iNV", lib); GL_CHECK(glp->ProgramLocalParameterI4iNV); glp->ProgramLocalParameterI4ivNV = (void APIENTRY (*)(GLenum target, GLuint index, const GLint *params)) ldg_find("glProgramLocalParameterI4ivNV", lib); GL_CHECK(glp->ProgramLocalParameterI4ivNV); glp->ProgramLocalParameterI4uiNV = (void APIENTRY (*)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) ldg_find("glProgramLocalParameterI4uiNV", lib); GL_CHECK(glp->ProgramLocalParameterI4uiNV); glp->ProgramLocalParameterI4uivNV = (void APIENTRY (*)(GLenum target, GLuint index, const GLuint *params)) ldg_find("glProgramLocalParameterI4uivNV", lib); GL_CHECK(glp->ProgramLocalParameterI4uivNV); glp->ProgramLocalParameters4fvEXT = (void APIENTRY (*)(GLenum target, GLuint index, GLsizei count, const GLfloat *params)) ldg_find("glProgramLocalParameters4fvEXT", lib); GL_CHECK(glp->ProgramLocalParameters4fvEXT); glp->ProgramLocalParametersI4ivNV = (void APIENTRY (*)(GLenum target, GLuint index, GLsizei count, const GLint *params)) ldg_find("glProgramLocalParametersI4ivNV", lib); GL_CHECK(glp->ProgramLocalParametersI4ivNV); glp->ProgramLocalParametersI4uivNV = (void APIENTRY (*)(GLenum target, GLuint index, GLsizei count, const GLuint *params)) ldg_find("glProgramLocalParametersI4uivNV", lib); GL_CHECK(glp->ProgramLocalParametersI4uivNV); glp->ProgramParameteri = (void APIENTRY (*)(GLuint program, GLenum pname, GLint value)) ldg_find("glProgramParameteri", lib); GL_CHECK(glp->ProgramParameteri); glp->ProgramParameteriARB = (void APIENTRY (*)(GLuint program, GLenum pname, GLint value)) ldg_find("glProgramParameteriARB", lib); GL_CHECK(glp->ProgramParameteriARB); glp->ProgramParameteriEXT = (void APIENTRY (*)(GLuint program, GLenum pname, GLint value)) ldg_find("glProgramParameteriEXT", lib); GL_CHECK(glp->ProgramParameteriEXT); glp->ProgramSubroutineParametersuivNV = (void APIENTRY (*)(GLenum target, GLsizei count, const GLuint *params)) ldg_find("glProgramSubroutineParametersuivNV", lib); GL_CHECK(glp->ProgramSubroutineParametersuivNV); glp->ProgramUniform1d = (void APIENTRY (*)(GLuint program, GLint location, GLdouble v0)) ldg_find("glProgramUniform1d", lib); GL_CHECK(glp->ProgramUniform1d); glp->ProgramUniform1dEXT = (void APIENTRY (*)(GLuint program, GLint location, GLdouble x)) ldg_find("glProgramUniform1dEXT", lib); GL_CHECK(glp->ProgramUniform1dEXT); glp->ProgramUniform1dv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLdouble *value)) ldg_find("glProgramUniform1dv", lib); GL_CHECK(glp->ProgramUniform1dv); glp->ProgramUniform1dvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLdouble *value)) ldg_find("glProgramUniform1dvEXT", lib); GL_CHECK(glp->ProgramUniform1dvEXT); glp->ProgramUniform1f = (void APIENTRY (*)(GLuint program, GLint location, GLfloat v0)) ldg_find("glProgramUniform1f", lib); GL_CHECK(glp->ProgramUniform1f); glp->ProgramUniform1fEXT = (void APIENTRY (*)(GLuint program, GLint location, GLfloat v0)) ldg_find("glProgramUniform1fEXT", lib); GL_CHECK(glp->ProgramUniform1fEXT); glp->ProgramUniform1fv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLfloat *value)) ldg_find("glProgramUniform1fv", lib); GL_CHECK(glp->ProgramUniform1fv); glp->ProgramUniform1fvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLfloat *value)) ldg_find("glProgramUniform1fvEXT", lib); GL_CHECK(glp->ProgramUniform1fvEXT); glp->ProgramUniform1i = (void APIENTRY (*)(GLuint program, GLint location, GLint v0)) ldg_find("glProgramUniform1i", lib); GL_CHECK(glp->ProgramUniform1i); glp->ProgramUniform1i64NV = (void APIENTRY (*)(GLuint program, GLint location, GLint64EXT x)) ldg_find("glProgramUniform1i64NV", lib); GL_CHECK(glp->ProgramUniform1i64NV); glp->ProgramUniform1i64vNV = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value)) ldg_find("glProgramUniform1i64vNV", lib); GL_CHECK(glp->ProgramUniform1i64vNV); glp->ProgramUniform1iEXT = (void APIENTRY (*)(GLuint program, GLint location, GLint v0)) ldg_find("glProgramUniform1iEXT", lib); GL_CHECK(glp->ProgramUniform1iEXT); glp->ProgramUniform1iv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint *value)) ldg_find("glProgramUniform1iv", lib); GL_CHECK(glp->ProgramUniform1iv); glp->ProgramUniform1ivEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint *value)) ldg_find("glProgramUniform1ivEXT", lib); GL_CHECK(glp->ProgramUniform1ivEXT); glp->ProgramUniform1ui = (void APIENTRY (*)(GLuint program, GLint location, GLuint v0)) ldg_find("glProgramUniform1ui", lib); GL_CHECK(glp->ProgramUniform1ui); glp->ProgramUniform1ui64NV = (void APIENTRY (*)(GLuint program, GLint location, GLuint64EXT x)) ldg_find("glProgramUniform1ui64NV", lib); GL_CHECK(glp->ProgramUniform1ui64NV); glp->ProgramUniform1ui64vNV = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value)) ldg_find("glProgramUniform1ui64vNV", lib); GL_CHECK(glp->ProgramUniform1ui64vNV); glp->ProgramUniform1uiEXT = (void APIENTRY (*)(GLuint program, GLint location, GLuint v0)) ldg_find("glProgramUniform1uiEXT", lib); GL_CHECK(glp->ProgramUniform1uiEXT); glp->ProgramUniform1uiv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint *value)) ldg_find("glProgramUniform1uiv", lib); GL_CHECK(glp->ProgramUniform1uiv); glp->ProgramUniform1uivEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint *value)) ldg_find("glProgramUniform1uivEXT", lib); GL_CHECK(glp->ProgramUniform1uivEXT); glp->ProgramUniform2d = (void APIENTRY (*)(GLuint program, GLint location, GLdouble v0, GLdouble v1)) ldg_find("glProgramUniform2d", lib); GL_CHECK(glp->ProgramUniform2d); glp->ProgramUniform2dEXT = (void APIENTRY (*)(GLuint program, GLint location, GLdouble x, GLdouble y)) ldg_find("glProgramUniform2dEXT", lib); GL_CHECK(glp->ProgramUniform2dEXT); glp->ProgramUniform2dv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLdouble *value)) ldg_find("glProgramUniform2dv", lib); GL_CHECK(glp->ProgramUniform2dv); glp->ProgramUniform2dvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLdouble *value)) ldg_find("glProgramUniform2dvEXT", lib); GL_CHECK(glp->ProgramUniform2dvEXT); glp->ProgramUniform2f = (void APIENTRY (*)(GLuint program, GLint location, GLfloat v0, GLfloat v1)) ldg_find("glProgramUniform2f", lib); GL_CHECK(glp->ProgramUniform2f); glp->ProgramUniform2fEXT = (void APIENTRY (*)(GLuint program, GLint location, GLfloat v0, GLfloat v1)) ldg_find("glProgramUniform2fEXT", lib); GL_CHECK(glp->ProgramUniform2fEXT); glp->ProgramUniform2fv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLfloat *value)) ldg_find("glProgramUniform2fv", lib); GL_CHECK(glp->ProgramUniform2fv); glp->ProgramUniform2fvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLfloat *value)) ldg_find("glProgramUniform2fvEXT", lib); GL_CHECK(glp->ProgramUniform2fvEXT); glp->ProgramUniform2i = (void APIENTRY (*)(GLuint program, GLint location, GLint v0, GLint v1)) ldg_find("glProgramUniform2i", lib); GL_CHECK(glp->ProgramUniform2i); glp->ProgramUniform2i64NV = (void APIENTRY (*)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y)) ldg_find("glProgramUniform2i64NV", lib); GL_CHECK(glp->ProgramUniform2i64NV); glp->ProgramUniform2i64vNV = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value)) ldg_find("glProgramUniform2i64vNV", lib); GL_CHECK(glp->ProgramUniform2i64vNV); glp->ProgramUniform2iEXT = (void APIENTRY (*)(GLuint program, GLint location, GLint v0, GLint v1)) ldg_find("glProgramUniform2iEXT", lib); GL_CHECK(glp->ProgramUniform2iEXT); glp->ProgramUniform2iv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint *value)) ldg_find("glProgramUniform2iv", lib); GL_CHECK(glp->ProgramUniform2iv); glp->ProgramUniform2ivEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint *value)) ldg_find("glProgramUniform2ivEXT", lib); GL_CHECK(glp->ProgramUniform2ivEXT); glp->ProgramUniform2ui = (void APIENTRY (*)(GLuint program, GLint location, GLuint v0, GLuint v1)) ldg_find("glProgramUniform2ui", lib); GL_CHECK(glp->ProgramUniform2ui); glp->ProgramUniform2ui64NV = (void APIENTRY (*)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y)) ldg_find("glProgramUniform2ui64NV", lib); GL_CHECK(glp->ProgramUniform2ui64NV); glp->ProgramUniform2ui64vNV = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value)) ldg_find("glProgramUniform2ui64vNV", lib); GL_CHECK(glp->ProgramUniform2ui64vNV); glp->ProgramUniform2uiEXT = (void APIENTRY (*)(GLuint program, GLint location, GLuint v0, GLuint v1)) ldg_find("glProgramUniform2uiEXT", lib); GL_CHECK(glp->ProgramUniform2uiEXT); glp->ProgramUniform2uiv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint *value)) ldg_find("glProgramUniform2uiv", lib); GL_CHECK(glp->ProgramUniform2uiv); glp->ProgramUniform2uivEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint *value)) ldg_find("glProgramUniform2uivEXT", lib); GL_CHECK(glp->ProgramUniform2uivEXT); glp->ProgramUniform3d = (void APIENTRY (*)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2)) ldg_find("glProgramUniform3d", lib); GL_CHECK(glp->ProgramUniform3d); glp->ProgramUniform3dEXT = (void APIENTRY (*)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z)) ldg_find("glProgramUniform3dEXT", lib); GL_CHECK(glp->ProgramUniform3dEXT); glp->ProgramUniform3dv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLdouble *value)) ldg_find("glProgramUniform3dv", lib); GL_CHECK(glp->ProgramUniform3dv); glp->ProgramUniform3dvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLdouble *value)) ldg_find("glProgramUniform3dvEXT", lib); GL_CHECK(glp->ProgramUniform3dvEXT); glp->ProgramUniform3f = (void APIENTRY (*)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) ldg_find("glProgramUniform3f", lib); GL_CHECK(glp->ProgramUniform3f); glp->ProgramUniform3fEXT = (void APIENTRY (*)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) ldg_find("glProgramUniform3fEXT", lib); GL_CHECK(glp->ProgramUniform3fEXT); glp->ProgramUniform3fv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLfloat *value)) ldg_find("glProgramUniform3fv", lib); GL_CHECK(glp->ProgramUniform3fv); glp->ProgramUniform3fvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLfloat *value)) ldg_find("glProgramUniform3fvEXT", lib); GL_CHECK(glp->ProgramUniform3fvEXT); glp->ProgramUniform3i = (void APIENTRY (*)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2)) ldg_find("glProgramUniform3i", lib); GL_CHECK(glp->ProgramUniform3i); glp->ProgramUniform3i64NV = (void APIENTRY (*)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z)) ldg_find("glProgramUniform3i64NV", lib); GL_CHECK(glp->ProgramUniform3i64NV); glp->ProgramUniform3i64vNV = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value)) ldg_find("glProgramUniform3i64vNV", lib); GL_CHECK(glp->ProgramUniform3i64vNV); glp->ProgramUniform3iEXT = (void APIENTRY (*)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2)) ldg_find("glProgramUniform3iEXT", lib); GL_CHECK(glp->ProgramUniform3iEXT); glp->ProgramUniform3iv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint *value)) ldg_find("glProgramUniform3iv", lib); GL_CHECK(glp->ProgramUniform3iv); glp->ProgramUniform3ivEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint *value)) ldg_find("glProgramUniform3ivEXT", lib); GL_CHECK(glp->ProgramUniform3ivEXT); glp->ProgramUniform3ui = (void APIENTRY (*)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)) ldg_find("glProgramUniform3ui", lib); GL_CHECK(glp->ProgramUniform3ui); glp->ProgramUniform3ui64NV = (void APIENTRY (*)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z)) ldg_find("glProgramUniform3ui64NV", lib); GL_CHECK(glp->ProgramUniform3ui64NV); glp->ProgramUniform3ui64vNV = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value)) ldg_find("glProgramUniform3ui64vNV", lib); GL_CHECK(glp->ProgramUniform3ui64vNV); glp->ProgramUniform3uiEXT = (void APIENTRY (*)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)) ldg_find("glProgramUniform3uiEXT", lib); GL_CHECK(glp->ProgramUniform3uiEXT); glp->ProgramUniform3uiv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint *value)) ldg_find("glProgramUniform3uiv", lib); GL_CHECK(glp->ProgramUniform3uiv); glp->ProgramUniform3uivEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint *value)) ldg_find("glProgramUniform3uivEXT", lib); GL_CHECK(glp->ProgramUniform3uivEXT); glp->ProgramUniform4d = (void APIENTRY (*)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3)) ldg_find("glProgramUniform4d", lib); GL_CHECK(glp->ProgramUniform4d); glp->ProgramUniform4dEXT = (void APIENTRY (*)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glProgramUniform4dEXT", lib); GL_CHECK(glp->ProgramUniform4dEXT); glp->ProgramUniform4dv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLdouble *value)) ldg_find("glProgramUniform4dv", lib); GL_CHECK(glp->ProgramUniform4dv); glp->ProgramUniform4dvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLdouble *value)) ldg_find("glProgramUniform4dvEXT", lib); GL_CHECK(glp->ProgramUniform4dvEXT); glp->ProgramUniform4f = (void APIENTRY (*)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) ldg_find("glProgramUniform4f", lib); GL_CHECK(glp->ProgramUniform4f); glp->ProgramUniform4fEXT = (void APIENTRY (*)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) ldg_find("glProgramUniform4fEXT", lib); GL_CHECK(glp->ProgramUniform4fEXT); glp->ProgramUniform4fv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLfloat *value)) ldg_find("glProgramUniform4fv", lib); GL_CHECK(glp->ProgramUniform4fv); glp->ProgramUniform4fvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLfloat *value)) ldg_find("glProgramUniform4fvEXT", lib); GL_CHECK(glp->ProgramUniform4fvEXT); glp->ProgramUniform4i = (void APIENTRY (*)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) ldg_find("glProgramUniform4i", lib); GL_CHECK(glp->ProgramUniform4i); glp->ProgramUniform4i64NV = (void APIENTRY (*)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w)) ldg_find("glProgramUniform4i64NV", lib); GL_CHECK(glp->ProgramUniform4i64NV); glp->ProgramUniform4i64vNV = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value)) ldg_find("glProgramUniform4i64vNV", lib); GL_CHECK(glp->ProgramUniform4i64vNV); glp->ProgramUniform4iEXT = (void APIENTRY (*)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) ldg_find("glProgramUniform4iEXT", lib); GL_CHECK(glp->ProgramUniform4iEXT); glp->ProgramUniform4iv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint *value)) ldg_find("glProgramUniform4iv", lib); GL_CHECK(glp->ProgramUniform4iv); glp->ProgramUniform4ivEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint *value)) ldg_find("glProgramUniform4ivEXT", lib); GL_CHECK(glp->ProgramUniform4ivEXT); glp->ProgramUniform4ui = (void APIENTRY (*)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) ldg_find("glProgramUniform4ui", lib); GL_CHECK(glp->ProgramUniform4ui); glp->ProgramUniform4ui64NV = (void APIENTRY (*)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w)) ldg_find("glProgramUniform4ui64NV", lib); GL_CHECK(glp->ProgramUniform4ui64NV); glp->ProgramUniform4ui64vNV = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value)) ldg_find("glProgramUniform4ui64vNV", lib); GL_CHECK(glp->ProgramUniform4ui64vNV); glp->ProgramUniform4uiEXT = (void APIENTRY (*)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) ldg_find("glProgramUniform4uiEXT", lib); GL_CHECK(glp->ProgramUniform4uiEXT); glp->ProgramUniform4uiv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint *value)) ldg_find("glProgramUniform4uiv", lib); GL_CHECK(glp->ProgramUniform4uiv); glp->ProgramUniform4uivEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint *value)) ldg_find("glProgramUniform4uivEXT", lib); GL_CHECK(glp->ProgramUniform4uivEXT); glp->ProgramUniformHandleui64ARB = (void APIENTRY (*)(GLuint program, GLint location, GLuint64 value)) ldg_find("glProgramUniformHandleui64ARB", lib); GL_CHECK(glp->ProgramUniformHandleui64ARB); glp->ProgramUniformHandleui64NV = (void APIENTRY (*)(GLuint program, GLint location, GLuint64 value)) ldg_find("glProgramUniformHandleui64NV", lib); GL_CHECK(glp->ProgramUniformHandleui64NV); glp->ProgramUniformHandleui64vARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint64 *values)) ldg_find("glProgramUniformHandleui64vARB", lib); GL_CHECK(glp->ProgramUniformHandleui64vARB); glp->ProgramUniformHandleui64vNV = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint64 *values)) ldg_find("glProgramUniformHandleui64vNV", lib); GL_CHECK(glp->ProgramUniformHandleui64vNV); glp->ProgramUniformMatrix2dv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix2dv", lib); GL_CHECK(glp->ProgramUniformMatrix2dv); glp->ProgramUniformMatrix2dvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix2dvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix2dvEXT); glp->ProgramUniformMatrix2fv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix2fv", lib); GL_CHECK(glp->ProgramUniformMatrix2fv); glp->ProgramUniformMatrix2fvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix2fvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix2fvEXT); glp->ProgramUniformMatrix2x3dv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix2x3dv", lib); GL_CHECK(glp->ProgramUniformMatrix2x3dv); glp->ProgramUniformMatrix2x3dvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix2x3dvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix2x3dvEXT); glp->ProgramUniformMatrix2x3fv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix2x3fv", lib); GL_CHECK(glp->ProgramUniformMatrix2x3fv); glp->ProgramUniformMatrix2x3fvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix2x3fvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix2x3fvEXT); glp->ProgramUniformMatrix2x4dv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix2x4dv", lib); GL_CHECK(glp->ProgramUniformMatrix2x4dv); glp->ProgramUniformMatrix2x4dvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix2x4dvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix2x4dvEXT); glp->ProgramUniformMatrix2x4fv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix2x4fv", lib); GL_CHECK(glp->ProgramUniformMatrix2x4fv); glp->ProgramUniformMatrix2x4fvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix2x4fvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix2x4fvEXT); glp->ProgramUniformMatrix3dv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix3dv", lib); GL_CHECK(glp->ProgramUniformMatrix3dv); glp->ProgramUniformMatrix3dvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix3dvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix3dvEXT); glp->ProgramUniformMatrix3fv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix3fv", lib); GL_CHECK(glp->ProgramUniformMatrix3fv); glp->ProgramUniformMatrix3fvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix3fvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix3fvEXT); glp->ProgramUniformMatrix3x2dv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix3x2dv", lib); GL_CHECK(glp->ProgramUniformMatrix3x2dv); glp->ProgramUniformMatrix3x2dvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix3x2dvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix3x2dvEXT); glp->ProgramUniformMatrix3x2fv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix3x2fv", lib); GL_CHECK(glp->ProgramUniformMatrix3x2fv); glp->ProgramUniformMatrix3x2fvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix3x2fvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix3x2fvEXT); glp->ProgramUniformMatrix3x4dv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix3x4dv", lib); GL_CHECK(glp->ProgramUniformMatrix3x4dv); glp->ProgramUniformMatrix3x4dvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix3x4dvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix3x4dvEXT); glp->ProgramUniformMatrix3x4fv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix3x4fv", lib); GL_CHECK(glp->ProgramUniformMatrix3x4fv); glp->ProgramUniformMatrix3x4fvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix3x4fvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix3x4fvEXT); glp->ProgramUniformMatrix4dv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix4dv", lib); GL_CHECK(glp->ProgramUniformMatrix4dv); glp->ProgramUniformMatrix4dvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix4dvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix4dvEXT); glp->ProgramUniformMatrix4fv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix4fv", lib); GL_CHECK(glp->ProgramUniformMatrix4fv); glp->ProgramUniformMatrix4fvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix4fvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix4fvEXT); glp->ProgramUniformMatrix4x2dv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix4x2dv", lib); GL_CHECK(glp->ProgramUniformMatrix4x2dv); glp->ProgramUniformMatrix4x2dvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix4x2dvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix4x2dvEXT); glp->ProgramUniformMatrix4x2fv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix4x2fv", lib); GL_CHECK(glp->ProgramUniformMatrix4x2fv); glp->ProgramUniformMatrix4x2fvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix4x2fvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix4x2fvEXT); glp->ProgramUniformMatrix4x3dv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix4x3dv", lib); GL_CHECK(glp->ProgramUniformMatrix4x3dv); glp->ProgramUniformMatrix4x3dvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glProgramUniformMatrix4x3dvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix4x3dvEXT); glp->ProgramUniformMatrix4x3fv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix4x3fv", lib); GL_CHECK(glp->ProgramUniformMatrix4x3fv); glp->ProgramUniformMatrix4x3fvEXT = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glProgramUniformMatrix4x3fvEXT", lib); GL_CHECK(glp->ProgramUniformMatrix4x3fvEXT); glp->ProgramUniformui64NV = (void APIENTRY (*)(GLuint program, GLint location, GLuint64EXT value)) ldg_find("glProgramUniformui64NV", lib); GL_CHECK(glp->ProgramUniformui64NV); glp->ProgramUniformui64vNV = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value)) ldg_find("glProgramUniformui64vNV", lib); GL_CHECK(glp->ProgramUniformui64vNV); glp->ProgramVertexLimitNV = (void APIENTRY (*)(GLenum target, GLint limit)) ldg_find("glProgramVertexLimitNV", lib); GL_CHECK(glp->ProgramVertexLimitNV); glp->ProvokingVertex = (void APIENTRY (*)(GLenum mode)) ldg_find("glProvokingVertex", lib); GL_CHECK(glp->ProvokingVertex); glp->ProvokingVertexEXT = (void APIENTRY (*)(GLenum mode)) ldg_find("glProvokingVertexEXT", lib); GL_CHECK(glp->ProvokingVertexEXT); glp->PushClientAttribDefaultEXT = (void APIENTRY (*)(GLbitfield mask)) ldg_find("glPushClientAttribDefaultEXT", lib); GL_CHECK(glp->PushClientAttribDefaultEXT); glp->PushDebugGroup = (void APIENTRY (*)(GLenum source, GLuint id, GLsizei length, const GLchar *message)) ldg_find("glPushDebugGroup", lib); GL_CHECK(glp->PushDebugGroup); glp->PushGroupMarkerEXT = (void APIENTRY (*)(GLsizei length, const GLchar *marker)) ldg_find("glPushGroupMarkerEXT", lib); GL_CHECK(glp->PushGroupMarkerEXT); glp->QueryCounter = (void APIENTRY (*)(GLuint id, GLenum target)) ldg_find("glQueryCounter", lib); GL_CHECK(glp->QueryCounter); glp->QueryMatrixxOES = (GLbitfield APIENTRY (*)(GLfixed *mantissa, GLint *exponent)) ldg_find("glQueryMatrixxOES", lib); GL_CHECK(glp->QueryMatrixxOES); glp->QueryObjectParameteruiAMD = (void APIENTRY (*)(GLenum target, GLuint id, GLenum pname, GLuint param)) ldg_find("glQueryObjectParameteruiAMD", lib); GL_CHECK(glp->QueryObjectParameteruiAMD); glp->RasterPos2xOES = (void APIENTRY (*)(GLfixed x, GLfixed y)) ldg_find("glRasterPos2xOES", lib); GL_CHECK(glp->RasterPos2xOES); glp->RasterPos2xvOES = (void APIENTRY (*)(const GLfixed *coords)) ldg_find("glRasterPos2xvOES", lib); GL_CHECK(glp->RasterPos2xvOES); glp->RasterPos3xOES = (void APIENTRY (*)(GLfixed x, GLfixed y, GLfixed z)) ldg_find("glRasterPos3xOES", lib); GL_CHECK(glp->RasterPos3xOES); glp->RasterPos3xvOES = (void APIENTRY (*)(const GLfixed *coords)) ldg_find("glRasterPos3xvOES", lib); GL_CHECK(glp->RasterPos3xvOES); glp->RasterPos4xOES = (void APIENTRY (*)(GLfixed x, GLfixed y, GLfixed z, GLfixed w)) ldg_find("glRasterPos4xOES", lib); GL_CHECK(glp->RasterPos4xOES); glp->RasterPos4xvOES = (void APIENTRY (*)(const GLfixed *coords)) ldg_find("glRasterPos4xvOES", lib); GL_CHECK(glp->RasterPos4xvOES); glp->ReadnPixelsARB = (void APIENTRY (*)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data)) ldg_find("glReadnPixelsARB", lib); GL_CHECK(glp->ReadnPixelsARB); glp->RectxOES = (void APIENTRY (*)(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2)) ldg_find("glRectxOES", lib); GL_CHECK(glp->RectxOES); glp->RectxvOES = (void APIENTRY (*)(const GLfixed *v1, const GLfixed *v2)) ldg_find("glRectxvOES", lib); GL_CHECK(glp->RectxvOES); glp->ReleaseShaderCompiler = (void APIENTRY (*)(void)) ldg_find("glReleaseShaderCompiler", lib); GL_CHECK(glp->ReleaseShaderCompiler); glp->RenderbufferStorage = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)) ldg_find("glRenderbufferStorage", lib); GL_CHECK(glp->RenderbufferStorage); glp->RenderbufferStorageEXT = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)) ldg_find("glRenderbufferStorageEXT", lib); GL_CHECK(glp->RenderbufferStorageEXT); glp->RenderbufferStorageMultisample = (void APIENTRY (*)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) ldg_find("glRenderbufferStorageMultisample", lib); GL_CHECK(glp->RenderbufferStorageMultisample); glp->RenderbufferStorageMultisampleCoverageNV = (void APIENTRY (*)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height)) ldg_find("glRenderbufferStorageMultisampleCoverageNV", lib); GL_CHECK(glp->RenderbufferStorageMultisampleCoverageNV); glp->RenderbufferStorageMultisampleEXT = (void APIENTRY (*)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) ldg_find("glRenderbufferStorageMultisampleEXT", lib); GL_CHECK(glp->RenderbufferStorageMultisampleEXT); glp->ResumeTransformFeedback = (void APIENTRY (*)(void)) ldg_find("glResumeTransformFeedback", lib); GL_CHECK(glp->ResumeTransformFeedback); glp->ResumeTransformFeedbackNV = (void APIENTRY (*)(void)) ldg_find("glResumeTransformFeedbackNV", lib); GL_CHECK(glp->ResumeTransformFeedbackNV); glp->RotatexOES = (void APIENTRY (*)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)) ldg_find("glRotatexOES", lib); GL_CHECK(glp->RotatexOES); glp->SampleCoverageOES = (void APIENTRY (*)(GLfixed value, GLboolean32 invert)) ldg_find("glSampleCoverageOES", lib); GL_CHECK(glp->SampleCoverageOES); glp->SampleMaskIndexedNV = (void APIENTRY (*)(GLuint index, GLbitfield mask)) ldg_find("glSampleMaskIndexedNV", lib); GL_CHECK(glp->SampleMaskIndexedNV); glp->SampleMaski = (void APIENTRY (*)(GLuint maskNumber, GLbitfield mask)) ldg_find("glSampleMaski", lib); GL_CHECK(glp->SampleMaski); glp->SamplePass = (void APIENTRY (*)(GLenum mode)) ldg_find("glSamplePass", lib); GL_CHECK(glp->SamplePass); glp->SamplePassARB = (void APIENTRY (*)(GLenum mode)) ldg_find("glSamplePassARB", lib); GL_CHECK(glp->SamplePassARB); glp->SamplerParameterIiv = (void APIENTRY (*)(GLuint sampler, GLenum pname, const GLint *param)) ldg_find("glSamplerParameterIiv", lib); GL_CHECK(glp->SamplerParameterIiv); glp->SamplerParameterIuiv = (void APIENTRY (*)(GLuint sampler, GLenum pname, const GLuint *param)) ldg_find("glSamplerParameterIuiv", lib); GL_CHECK(glp->SamplerParameterIuiv); glp->SamplerParameterf = (void APIENTRY (*)(GLuint sampler, GLenum pname, GLfloat param)) ldg_find("glSamplerParameterf", lib); GL_CHECK(glp->SamplerParameterf); glp->SamplerParameterfv = (void APIENTRY (*)(GLuint sampler, GLenum pname, const GLfloat *param)) ldg_find("glSamplerParameterfv", lib); GL_CHECK(glp->SamplerParameterfv); glp->SamplerParameteri = (void APIENTRY (*)(GLuint sampler, GLenum pname, GLint param)) ldg_find("glSamplerParameteri", lib); GL_CHECK(glp->SamplerParameteri); glp->SamplerParameteriv = (void APIENTRY (*)(GLuint sampler, GLenum pname, const GLint *param)) ldg_find("glSamplerParameteriv", lib); GL_CHECK(glp->SamplerParameteriv); glp->ScalexOES = (void APIENTRY (*)(GLfixed x, GLfixed y, GLfixed z)) ldg_find("glScalexOES", lib); GL_CHECK(glp->ScalexOES); glp->ScissorArrayv = (void APIENTRY (*)(GLuint first, GLsizei count, const GLint *v)) ldg_find("glScissorArrayv", lib); GL_CHECK(glp->ScissorArrayv); glp->ScissorIndexed = (void APIENTRY (*)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height)) ldg_find("glScissorIndexed", lib); GL_CHECK(glp->ScissorIndexed); glp->ScissorIndexedv = (void APIENTRY (*)(GLuint index, const GLint *v)) ldg_find("glScissorIndexedv", lib); GL_CHECK(glp->ScissorIndexedv); glp->SecondaryColorFormatNV = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride)) ldg_find("glSecondaryColorFormatNV", lib); GL_CHECK(glp->SecondaryColorFormatNV); glp->SecondaryColorP3ui = (void APIENTRY (*)(GLenum type, GLuint color)) ldg_find("glSecondaryColorP3ui", lib); GL_CHECK(glp->SecondaryColorP3ui); glp->SecondaryColorP3uiv = (void APIENTRY (*)(GLenum type, const GLuint *color)) ldg_find("glSecondaryColorP3uiv", lib); GL_CHECK(glp->SecondaryColorP3uiv); glp->SelectPerfMonitorCountersAMD = (void APIENTRY (*)(GLuint monitor, GLboolean32 enable, GLuint group, GLint numCounters, GLuint *counterList)) ldg_find("glSelectPerfMonitorCountersAMD", lib); GL_CHECK(glp->SelectPerfMonitorCountersAMD); glp->SetMultisamplefvAMD = (void APIENTRY (*)(GLenum pname, GLuint index, const GLfloat *val)) ldg_find("glSetMultisamplefvAMD", lib); GL_CHECK(glp->SetMultisamplefvAMD); glp->ShaderBinary = (void APIENTRY (*)(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length)) ldg_find("glShaderBinary", lib); GL_CHECK(glp->ShaderBinary); glp->ShaderSource = (void APIENTRY (*)(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length)) ldg_find("glShaderSource", lib); GL_CHECK(glp->ShaderSource); glp->ShaderStorageBlockBinding = (void APIENTRY (*)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding)) ldg_find("glShaderStorageBlockBinding", lib); GL_CHECK(glp->ShaderStorageBlockBinding); glp->StencilClearTagEXT = (void APIENTRY (*)(GLsizei stencilTagBits, GLuint stencilClearTag)) ldg_find("glStencilClearTagEXT", lib); GL_CHECK(glp->StencilClearTagEXT); glp->StencilFillPathInstancedNV = (void APIENTRY (*)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues)) ldg_find("glStencilFillPathInstancedNV", lib); GL_CHECK(glp->StencilFillPathInstancedNV); glp->StencilFillPathNV = (void APIENTRY (*)(GLuint path, GLenum fillMode, GLuint mask)) ldg_find("glStencilFillPathNV", lib); GL_CHECK(glp->StencilFillPathNV); glp->StencilFuncSeparate = (void APIENTRY (*)(GLenum face, GLenum func, GLint ref, GLuint mask)) ldg_find("glStencilFuncSeparate", lib); GL_CHECK(glp->StencilFuncSeparate); glp->StencilMaskSeparate = (void APIENTRY (*)(GLenum face, GLuint mask)) ldg_find("glStencilMaskSeparate", lib); GL_CHECK(glp->StencilMaskSeparate); glp->StencilOpSeparate = (void APIENTRY (*)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)) ldg_find("glStencilOpSeparate", lib); GL_CHECK(glp->StencilOpSeparate); glp->StencilOpValueAMD = (void APIENTRY (*)(GLenum face, GLuint value)) ldg_find("glStencilOpValueAMD", lib); GL_CHECK(glp->StencilOpValueAMD); glp->StencilStrokePathInstancedNV = (void APIENTRY (*)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues)) ldg_find("glStencilStrokePathInstancedNV", lib); GL_CHECK(glp->StencilStrokePathInstancedNV); glp->StencilStrokePathNV = (void APIENTRY (*)(GLuint path, GLint reference, GLuint mask)) ldg_find("glStencilStrokePathNV", lib); GL_CHECK(glp->StencilStrokePathNV); glp->StringMarkerGREMEDY = (void APIENTRY (*)(GLsizei len, const void *string)) ldg_find("glStringMarkerGREMEDY", lib); GL_CHECK(glp->StringMarkerGREMEDY); glp->SwapAPPLE = (void APIENTRY (*)(void)) ldg_find("glSwapAPPLE", lib); GL_CHECK(glp->SwapAPPLE); glp->SyncTextureINTEL = (void APIENTRY (*)(GLuint texture)) ldg_find("glSyncTextureINTEL", lib); GL_CHECK(glp->SyncTextureINTEL); glp->TessellationFactorAMD = (void APIENTRY (*)(GLfloat factor)) ldg_find("glTessellationFactorAMD", lib); GL_CHECK(glp->TessellationFactorAMD); glp->TessellationModeAMD = (void APIENTRY (*)(GLenum mode)) ldg_find("glTessellationModeAMD", lib); GL_CHECK(glp->TessellationModeAMD); glp->TexBuffer = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLuint buffer)) ldg_find("glTexBuffer", lib); GL_CHECK(glp->TexBuffer); glp->TexBufferARB = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLuint buffer)) ldg_find("glTexBufferARB", lib); GL_CHECK(glp->TexBufferARB); glp->TexBufferEXT = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLuint buffer)) ldg_find("glTexBufferEXT", lib); GL_CHECK(glp->TexBufferEXT); glp->TexBufferRange = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)) ldg_find("glTexBufferRange", lib); GL_CHECK(glp->TexBufferRange); glp->TexCoord1bOES = (void APIENTRY (*)(GLbyte32 s)) ldg_find("glTexCoord1bOES", lib); GL_CHECK(glp->TexCoord1bOES); glp->TexCoord1bvOES = (void APIENTRY (*)(const GLbyte *coords)) ldg_find("glTexCoord1bvOES", lib); GL_CHECK(glp->TexCoord1bvOES); glp->TexCoord1xOES = (void APIENTRY (*)(GLfixed s)) ldg_find("glTexCoord1xOES", lib); GL_CHECK(glp->TexCoord1xOES); glp->TexCoord1xvOES = (void APIENTRY (*)(const GLfixed *coords)) ldg_find("glTexCoord1xvOES", lib); GL_CHECK(glp->TexCoord1xvOES); glp->TexCoord2bOES = (void APIENTRY (*)(GLbyte32 s, GLbyte32 t)) ldg_find("glTexCoord2bOES", lib); GL_CHECK(glp->TexCoord2bOES); glp->TexCoord2bvOES = (void APIENTRY (*)(const GLbyte *coords)) ldg_find("glTexCoord2bvOES", lib); GL_CHECK(glp->TexCoord2bvOES); glp->TexCoord2xOES = (void APIENTRY (*)(GLfixed s, GLfixed t)) ldg_find("glTexCoord2xOES", lib); GL_CHECK(glp->TexCoord2xOES); glp->TexCoord2xvOES = (void APIENTRY (*)(const GLfixed *coords)) ldg_find("glTexCoord2xvOES", lib); GL_CHECK(glp->TexCoord2xvOES); glp->TexCoord3bOES = (void APIENTRY (*)(GLbyte32 s, GLbyte32 t, GLbyte32 r)) ldg_find("glTexCoord3bOES", lib); GL_CHECK(glp->TexCoord3bOES); glp->TexCoord3bvOES = (void APIENTRY (*)(const GLbyte *coords)) ldg_find("glTexCoord3bvOES", lib); GL_CHECK(glp->TexCoord3bvOES); glp->TexCoord3xOES = (void APIENTRY (*)(GLfixed s, GLfixed t, GLfixed r)) ldg_find("glTexCoord3xOES", lib); GL_CHECK(glp->TexCoord3xOES); glp->TexCoord3xvOES = (void APIENTRY (*)(const GLfixed *coords)) ldg_find("glTexCoord3xvOES", lib); GL_CHECK(glp->TexCoord3xvOES); glp->TexCoord4bOES = (void APIENTRY (*)(GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q)) ldg_find("glTexCoord4bOES", lib); GL_CHECK(glp->TexCoord4bOES); glp->TexCoord4bvOES = (void APIENTRY (*)(const GLbyte *coords)) ldg_find("glTexCoord4bvOES", lib); GL_CHECK(glp->TexCoord4bvOES); glp->TexCoord4xOES = (void APIENTRY (*)(GLfixed s, GLfixed t, GLfixed r, GLfixed q)) ldg_find("glTexCoord4xOES", lib); GL_CHECK(glp->TexCoord4xOES); glp->TexCoord4xvOES = (void APIENTRY (*)(const GLfixed *coords)) ldg_find("glTexCoord4xvOES", lib); GL_CHECK(glp->TexCoord4xvOES); glp->TexCoordFormatNV = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride)) ldg_find("glTexCoordFormatNV", lib); GL_CHECK(glp->TexCoordFormatNV); glp->TexCoordP1ui = (void APIENTRY (*)(GLenum type, GLuint coords)) ldg_find("glTexCoordP1ui", lib); GL_CHECK(glp->TexCoordP1ui); glp->TexCoordP1uiv = (void APIENTRY (*)(GLenum type, const GLuint *coords)) ldg_find("glTexCoordP1uiv", lib); GL_CHECK(glp->TexCoordP1uiv); glp->TexCoordP2ui = (void APIENTRY (*)(GLenum type, GLuint coords)) ldg_find("glTexCoordP2ui", lib); GL_CHECK(glp->TexCoordP2ui); glp->TexCoordP2uiv = (void APIENTRY (*)(GLenum type, const GLuint *coords)) ldg_find("glTexCoordP2uiv", lib); GL_CHECK(glp->TexCoordP2uiv); glp->TexCoordP3ui = (void APIENTRY (*)(GLenum type, GLuint coords)) ldg_find("glTexCoordP3ui", lib); GL_CHECK(glp->TexCoordP3ui); glp->TexCoordP3uiv = (void APIENTRY (*)(GLenum type, const GLuint *coords)) ldg_find("glTexCoordP3uiv", lib); GL_CHECK(glp->TexCoordP3uiv); glp->TexCoordP4ui = (void APIENTRY (*)(GLenum type, GLuint coords)) ldg_find("glTexCoordP4ui", lib); GL_CHECK(glp->TexCoordP4ui); glp->TexCoordP4uiv = (void APIENTRY (*)(GLenum type, const GLuint *coords)) ldg_find("glTexCoordP4uiv", lib); GL_CHECK(glp->TexCoordP4uiv); glp->TexEnvxOES = (void APIENTRY (*)(GLenum target, GLenum pname, GLfixed param)) ldg_find("glTexEnvxOES", lib); GL_CHECK(glp->TexEnvxOES); glp->TexEnvxvOES = (void APIENTRY (*)(GLenum target, GLenum pname, const GLfixed *params)) ldg_find("glTexEnvxvOES", lib); GL_CHECK(glp->TexEnvxvOES); glp->TexGenxOES = (void APIENTRY (*)(GLenum coord, GLenum pname, GLfixed param)) ldg_find("glTexGenxOES", lib); GL_CHECK(glp->TexGenxOES); glp->TexGenxvOES = (void APIENTRY (*)(GLenum coord, GLenum pname, const GLfixed *params)) ldg_find("glTexGenxvOES", lib); GL_CHECK(glp->TexGenxvOES); glp->TexImage2DMultisample = (void APIENTRY (*)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations)) ldg_find("glTexImage2DMultisample", lib); GL_CHECK(glp->TexImage2DMultisample); glp->TexImage2DMultisampleCoverageNV = (void APIENTRY (*)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations)) ldg_find("glTexImage2DMultisampleCoverageNV", lib); GL_CHECK(glp->TexImage2DMultisampleCoverageNV); glp->TexImage3DMultisample = (void APIENTRY (*)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations)) ldg_find("glTexImage3DMultisample", lib); GL_CHECK(glp->TexImage3DMultisample); glp->TexImage3DMultisampleCoverageNV = (void APIENTRY (*)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations)) ldg_find("glTexImage3DMultisampleCoverageNV", lib); GL_CHECK(glp->TexImage3DMultisampleCoverageNV); glp->TexPageCommitmentARB = (void APIENTRY (*)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit)) ldg_find("glTexPageCommitmentARB", lib); GL_CHECK(glp->TexPageCommitmentARB); glp->TexParameterIiv = (void APIENTRY (*)(GLenum target, GLenum pname, const GLint *params)) ldg_find("glTexParameterIiv", lib); GL_CHECK(glp->TexParameterIiv); glp->TexParameterIivEXT = (void APIENTRY (*)(GLenum target, GLenum pname, const GLint *params)) ldg_find("glTexParameterIivEXT", lib); GL_CHECK(glp->TexParameterIivEXT); glp->TexParameterIuiv = (void APIENTRY (*)(GLenum target, GLenum pname, const GLuint *params)) ldg_find("glTexParameterIuiv", lib); GL_CHECK(glp->TexParameterIuiv); glp->TexParameterIuivEXT = (void APIENTRY (*)(GLenum target, GLenum pname, const GLuint *params)) ldg_find("glTexParameterIuivEXT", lib); GL_CHECK(glp->TexParameterIuivEXT); glp->TexParameterxOES = (void APIENTRY (*)(GLenum target, GLenum pname, GLfixed param)) ldg_find("glTexParameterxOES", lib); GL_CHECK(glp->TexParameterxOES); glp->TexParameterxvOES = (void APIENTRY (*)(GLenum target, GLenum pname, const GLfixed *params)) ldg_find("glTexParameterxvOES", lib); GL_CHECK(glp->TexParameterxvOES); glp->TexRenderbufferNV = (void APIENTRY (*)(GLenum target, GLuint renderbuffer)) ldg_find("glTexRenderbufferNV", lib); GL_CHECK(glp->TexRenderbufferNV); glp->TexScissorFuncINTEL = (void APIENTRY (*)(GLenum target, GLenum lfunc, GLenum hfunc)) ldg_find("glTexScissorFuncINTEL", lib); GL_CHECK(glp->TexScissorFuncINTEL); glp->TexScissorINTEL = (void APIENTRY (*)(GLenum target, GLclampf tlow, GLclampf thigh)) ldg_find("glTexScissorINTEL", lib); GL_CHECK(glp->TexScissorINTEL); glp->TexStorage1D = (void APIENTRY (*)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)) ldg_find("glTexStorage1D", lib); GL_CHECK(glp->TexStorage1D); glp->TexStorage2D = (void APIENTRY (*)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) ldg_find("glTexStorage2D", lib); GL_CHECK(glp->TexStorage2D); glp->TexStorage2DMultisample = (void APIENTRY (*)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations)) ldg_find("glTexStorage2DMultisample", lib); GL_CHECK(glp->TexStorage2DMultisample); glp->TexStorage3D = (void APIENTRY (*)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) ldg_find("glTexStorage3D", lib); GL_CHECK(glp->TexStorage3D); glp->TexStorage3DMultisample = (void APIENTRY (*)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations)) ldg_find("glTexStorage3DMultisample", lib); GL_CHECK(glp->TexStorage3DMultisample); glp->TexStorageSparseAMD = (void APIENTRY (*)(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags)) ldg_find("glTexStorageSparseAMD", lib); GL_CHECK(glp->TexStorageSparseAMD); glp->TextureBarrierNV = (void APIENTRY (*)(void)) ldg_find("glTextureBarrierNV", lib); GL_CHECK(glp->TextureBarrierNV); glp->TextureBufferEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer)) ldg_find("glTextureBufferEXT", lib); GL_CHECK(glp->TextureBufferEXT); glp->TextureBufferRangeEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)) ldg_find("glTextureBufferRangeEXT", lib); GL_CHECK(glp->TextureBufferRangeEXT); glp->TextureFogSGIX = (void APIENTRY (*)(GLenum pname)) ldg_find("glTextureFogSGIX", lib); GL_CHECK(glp->TextureFogSGIX); glp->TextureImage1DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)) ldg_find("glTextureImage1DEXT", lib); GL_CHECK(glp->TextureImage1DEXT); glp->TextureImage2DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)) ldg_find("glTextureImage2DEXT", lib); GL_CHECK(glp->TextureImage2DEXT); glp->TextureImage2DMultisampleCoverageNV = (void APIENTRY (*)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations)) ldg_find("glTextureImage2DMultisampleCoverageNV", lib); GL_CHECK(glp->TextureImage2DMultisampleCoverageNV); glp->TextureImage2DMultisampleNV = (void APIENTRY (*)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations)) ldg_find("glTextureImage2DMultisampleNV", lib); GL_CHECK(glp->TextureImage2DMultisampleNV); glp->TextureImage3DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)) ldg_find("glTextureImage3DEXT", lib); GL_CHECK(glp->TextureImage3DEXT); glp->TextureImage3DMultisampleCoverageNV = (void APIENTRY (*)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations)) ldg_find("glTextureImage3DMultisampleCoverageNV", lib); GL_CHECK(glp->TextureImage3DMultisampleCoverageNV); glp->TextureImage3DMultisampleNV = (void APIENTRY (*)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations)) ldg_find("glTextureImage3DMultisampleNV", lib); GL_CHECK(glp->TextureImage3DMultisampleNV); glp->TexturePageCommitmentEXT = (void APIENTRY (*)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit)) ldg_find("glTexturePageCommitmentEXT", lib); GL_CHECK(glp->TexturePageCommitmentEXT); glp->TextureParameterIivEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLenum pname, const GLint *params)) ldg_find("glTextureParameterIivEXT", lib); GL_CHECK(glp->TextureParameterIivEXT); glp->TextureParameterIuivEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLenum pname, const GLuint *params)) ldg_find("glTextureParameterIuivEXT", lib); GL_CHECK(glp->TextureParameterIuivEXT); glp->TextureParameterfEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLenum pname, GLfloat param)) ldg_find("glTextureParameterfEXT", lib); GL_CHECK(glp->TextureParameterfEXT); glp->TextureParameterfvEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLenum pname, const GLfloat *params)) ldg_find("glTextureParameterfvEXT", lib); GL_CHECK(glp->TextureParameterfvEXT); glp->TextureParameteriEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLenum pname, GLint param)) ldg_find("glTextureParameteriEXT", lib); GL_CHECK(glp->TextureParameteriEXT); glp->TextureParameterivEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLenum pname, const GLint *params)) ldg_find("glTextureParameterivEXT", lib); GL_CHECK(glp->TextureParameterivEXT); glp->TextureRangeAPPLE = (void APIENTRY (*)(GLenum target, GLsizei length, const void *pointer)) ldg_find("glTextureRangeAPPLE", lib); GL_CHECK(glp->TextureRangeAPPLE); glp->TextureRenderbufferEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLuint renderbuffer)) ldg_find("glTextureRenderbufferEXT", lib); GL_CHECK(glp->TextureRenderbufferEXT); glp->TextureStorage1DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)) ldg_find("glTextureStorage1DEXT", lib); GL_CHECK(glp->TextureStorage1DEXT); glp->TextureStorage2DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) ldg_find("glTextureStorage2DEXT", lib); GL_CHECK(glp->TextureStorage2DEXT); glp->TextureStorage2DMultisampleEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations)) ldg_find("glTextureStorage2DMultisampleEXT", lib); GL_CHECK(glp->TextureStorage2DMultisampleEXT); glp->TextureStorage3DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) ldg_find("glTextureStorage3DEXT", lib); GL_CHECK(glp->TextureStorage3DEXT); glp->TextureStorage3DMultisampleEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations)) ldg_find("glTextureStorage3DMultisampleEXT", lib); GL_CHECK(glp->TextureStorage3DMultisampleEXT); glp->TextureStorageSparseAMD = (void APIENTRY (*)(GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags)) ldg_find("glTextureStorageSparseAMD", lib); GL_CHECK(glp->TextureStorageSparseAMD); glp->TextureSubImage1DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)) ldg_find("glTextureSubImage1DEXT", lib); GL_CHECK(glp->TextureSubImage1DEXT); glp->TextureSubImage2DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)) ldg_find("glTextureSubImage2DEXT", lib); GL_CHECK(glp->TextureSubImage2DEXT); glp->TextureSubImage3DEXT = (void APIENTRY (*)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)) ldg_find("glTextureSubImage3DEXT", lib); GL_CHECK(glp->TextureSubImage3DEXT); glp->TextureView = (void APIENTRY (*)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers)) ldg_find("glTextureView", lib); GL_CHECK(glp->TextureView); glp->TransformFeedbackAttribsNV = (void APIENTRY (*)(GLsizei count, const GLint *attribs, GLenum bufferMode)) ldg_find("glTransformFeedbackAttribsNV", lib); GL_CHECK(glp->TransformFeedbackAttribsNV); glp->TransformFeedbackStreamAttribsNV = (void APIENTRY (*)(GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode)) ldg_find("glTransformFeedbackStreamAttribsNV", lib); GL_CHECK(glp->TransformFeedbackStreamAttribsNV); glp->TransformFeedbackVaryings = (void APIENTRY (*)(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode)) ldg_find("glTransformFeedbackVaryings", lib); GL_CHECK(glp->TransformFeedbackVaryings); glp->TransformFeedbackVaryingsEXT = (void APIENTRY (*)(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode)) ldg_find("glTransformFeedbackVaryingsEXT", lib); GL_CHECK(glp->TransformFeedbackVaryingsEXT); glp->TransformFeedbackVaryingsNV = (void APIENTRY (*)(GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode)) ldg_find("glTransformFeedbackVaryingsNV", lib); GL_CHECK(glp->TransformFeedbackVaryingsNV); glp->TransformPathNV = (void APIENTRY (*)(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues)) ldg_find("glTransformPathNV", lib); GL_CHECK(glp->TransformPathNV); glp->TranslatexOES = (void APIENTRY (*)(GLfixed x, GLfixed y, GLfixed z)) ldg_find("glTranslatexOES", lib); GL_CHECK(glp->TranslatexOES); glp->Uniform1d = (void APIENTRY (*)(GLint location, GLdouble x)) ldg_find("glUniform1d", lib); GL_CHECK(glp->Uniform1d); glp->Uniform1dv = (void APIENTRY (*)(GLint location, GLsizei count, const GLdouble *value)) ldg_find("glUniform1dv", lib); GL_CHECK(glp->Uniform1dv); glp->Uniform1f = (void APIENTRY (*)(GLint location, GLfloat v0)) ldg_find("glUniform1f", lib); GL_CHECK(glp->Uniform1f); glp->Uniform1fv = (void APIENTRY (*)(GLint location, GLsizei count, const GLfloat *value)) ldg_find("glUniform1fv", lib); GL_CHECK(glp->Uniform1fv); glp->Uniform1i = (void APIENTRY (*)(GLint location, GLint v0)) ldg_find("glUniform1i", lib); GL_CHECK(glp->Uniform1i); glp->Uniform1i64NV = (void APIENTRY (*)(GLint location, GLint64EXT x)) ldg_find("glUniform1i64NV", lib); GL_CHECK(glp->Uniform1i64NV); glp->Uniform1i64vNV = (void APIENTRY (*)(GLint location, GLsizei count, const GLint64EXT *value)) ldg_find("glUniform1i64vNV", lib); GL_CHECK(glp->Uniform1i64vNV); glp->Uniform1iv = (void APIENTRY (*)(GLint location, GLsizei count, const GLint *value)) ldg_find("glUniform1iv", lib); GL_CHECK(glp->Uniform1iv); glp->Uniform1ui = (void APIENTRY (*)(GLint location, GLuint v0)) ldg_find("glUniform1ui", lib); GL_CHECK(glp->Uniform1ui); glp->Uniform1ui64NV = (void APIENTRY (*)(GLint location, GLuint64EXT x)) ldg_find("glUniform1ui64NV", lib); GL_CHECK(glp->Uniform1ui64NV); glp->Uniform1ui64vNV = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint64EXT *value)) ldg_find("glUniform1ui64vNV", lib); GL_CHECK(glp->Uniform1ui64vNV); glp->Uniform1uiEXT = (void APIENTRY (*)(GLint location, GLuint v0)) ldg_find("glUniform1uiEXT", lib); GL_CHECK(glp->Uniform1uiEXT); glp->Uniform1uiv = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint *value)) ldg_find("glUniform1uiv", lib); GL_CHECK(glp->Uniform1uiv); glp->Uniform1uivEXT = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint *value)) ldg_find("glUniform1uivEXT", lib); GL_CHECK(glp->Uniform1uivEXT); glp->Uniform2d = (void APIENTRY (*)(GLint location, GLdouble x, GLdouble y)) ldg_find("glUniform2d", lib); GL_CHECK(glp->Uniform2d); glp->Uniform2dv = (void APIENTRY (*)(GLint location, GLsizei count, const GLdouble *value)) ldg_find("glUniform2dv", lib); GL_CHECK(glp->Uniform2dv); glp->Uniform2f = (void APIENTRY (*)(GLint location, GLfloat v0, GLfloat v1)) ldg_find("glUniform2f", lib); GL_CHECK(glp->Uniform2f); glp->Uniform2fv = (void APIENTRY (*)(GLint location, GLsizei count, const GLfloat *value)) ldg_find("glUniform2fv", lib); GL_CHECK(glp->Uniform2fv); glp->Uniform2i = (void APIENTRY (*)(GLint location, GLint v0, GLint v1)) ldg_find("glUniform2i", lib); GL_CHECK(glp->Uniform2i); glp->Uniform2i64NV = (void APIENTRY (*)(GLint location, GLint64EXT x, GLint64EXT y)) ldg_find("glUniform2i64NV", lib); GL_CHECK(glp->Uniform2i64NV); glp->Uniform2i64vNV = (void APIENTRY (*)(GLint location, GLsizei count, const GLint64EXT *value)) ldg_find("glUniform2i64vNV", lib); GL_CHECK(glp->Uniform2i64vNV); glp->Uniform2iv = (void APIENTRY (*)(GLint location, GLsizei count, const GLint *value)) ldg_find("glUniform2iv", lib); GL_CHECK(glp->Uniform2iv); glp->Uniform2ui = (void APIENTRY (*)(GLint location, GLuint v0, GLuint v1)) ldg_find("glUniform2ui", lib); GL_CHECK(glp->Uniform2ui); glp->Uniform2ui64NV = (void APIENTRY (*)(GLint location, GLuint64EXT x, GLuint64EXT y)) ldg_find("glUniform2ui64NV", lib); GL_CHECK(glp->Uniform2ui64NV); glp->Uniform2ui64vNV = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint64EXT *value)) ldg_find("glUniform2ui64vNV", lib); GL_CHECK(glp->Uniform2ui64vNV); glp->Uniform2uiEXT = (void APIENTRY (*)(GLint location, GLuint v0, GLuint v1)) ldg_find("glUniform2uiEXT", lib); GL_CHECK(glp->Uniform2uiEXT); glp->Uniform2uiv = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint *value)) ldg_find("glUniform2uiv", lib); GL_CHECK(glp->Uniform2uiv); glp->Uniform2uivEXT = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint *value)) ldg_find("glUniform2uivEXT", lib); GL_CHECK(glp->Uniform2uivEXT); glp->Uniform3d = (void APIENTRY (*)(GLint location, GLdouble x, GLdouble y, GLdouble z)) ldg_find("glUniform3d", lib); GL_CHECK(glp->Uniform3d); glp->Uniform3dv = (void APIENTRY (*)(GLint location, GLsizei count, const GLdouble *value)) ldg_find("glUniform3dv", lib); GL_CHECK(glp->Uniform3dv); glp->Uniform3f = (void APIENTRY (*)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) ldg_find("glUniform3f", lib); GL_CHECK(glp->Uniform3f); glp->Uniform3fv = (void APIENTRY (*)(GLint location, GLsizei count, const GLfloat *value)) ldg_find("glUniform3fv", lib); GL_CHECK(glp->Uniform3fv); glp->Uniform3i = (void APIENTRY (*)(GLint location, GLint v0, GLint v1, GLint v2)) ldg_find("glUniform3i", lib); GL_CHECK(glp->Uniform3i); glp->Uniform3i64NV = (void APIENTRY (*)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z)) ldg_find("glUniform3i64NV", lib); GL_CHECK(glp->Uniform3i64NV); glp->Uniform3i64vNV = (void APIENTRY (*)(GLint location, GLsizei count, const GLint64EXT *value)) ldg_find("glUniform3i64vNV", lib); GL_CHECK(glp->Uniform3i64vNV); glp->Uniform3iv = (void APIENTRY (*)(GLint location, GLsizei count, const GLint *value)) ldg_find("glUniform3iv", lib); GL_CHECK(glp->Uniform3iv); glp->Uniform3ui = (void APIENTRY (*)(GLint location, GLuint v0, GLuint v1, GLuint v2)) ldg_find("glUniform3ui", lib); GL_CHECK(glp->Uniform3ui); glp->Uniform3ui64NV = (void APIENTRY (*)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z)) ldg_find("glUniform3ui64NV", lib); GL_CHECK(glp->Uniform3ui64NV); glp->Uniform3ui64vNV = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint64EXT *value)) ldg_find("glUniform3ui64vNV", lib); GL_CHECK(glp->Uniform3ui64vNV); glp->Uniform3uiEXT = (void APIENTRY (*)(GLint location, GLuint v0, GLuint v1, GLuint v2)) ldg_find("glUniform3uiEXT", lib); GL_CHECK(glp->Uniform3uiEXT); glp->Uniform3uiv = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint *value)) ldg_find("glUniform3uiv", lib); GL_CHECK(glp->Uniform3uiv); glp->Uniform3uivEXT = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint *value)) ldg_find("glUniform3uivEXT", lib); GL_CHECK(glp->Uniform3uivEXT); glp->Uniform4d = (void APIENTRY (*)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glUniform4d", lib); GL_CHECK(glp->Uniform4d); glp->Uniform4dv = (void APIENTRY (*)(GLint location, GLsizei count, const GLdouble *value)) ldg_find("glUniform4dv", lib); GL_CHECK(glp->Uniform4dv); glp->Uniform4f = (void APIENTRY (*)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) ldg_find("glUniform4f", lib); GL_CHECK(glp->Uniform4f); glp->Uniform4fv = (void APIENTRY (*)(GLint location, GLsizei count, const GLfloat *value)) ldg_find("glUniform4fv", lib); GL_CHECK(glp->Uniform4fv); glp->Uniform4i = (void APIENTRY (*)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) ldg_find("glUniform4i", lib); GL_CHECK(glp->Uniform4i); glp->Uniform4i64NV = (void APIENTRY (*)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w)) ldg_find("glUniform4i64NV", lib); GL_CHECK(glp->Uniform4i64NV); glp->Uniform4i64vNV = (void APIENTRY (*)(GLint location, GLsizei count, const GLint64EXT *value)) ldg_find("glUniform4i64vNV", lib); GL_CHECK(glp->Uniform4i64vNV); glp->Uniform4iv = (void APIENTRY (*)(GLint location, GLsizei count, const GLint *value)) ldg_find("glUniform4iv", lib); GL_CHECK(glp->Uniform4iv); glp->Uniform4ui = (void APIENTRY (*)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) ldg_find("glUniform4ui", lib); GL_CHECK(glp->Uniform4ui); glp->Uniform4ui64NV = (void APIENTRY (*)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w)) ldg_find("glUniform4ui64NV", lib); GL_CHECK(glp->Uniform4ui64NV); glp->Uniform4ui64vNV = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint64EXT *value)) ldg_find("glUniform4ui64vNV", lib); GL_CHECK(glp->Uniform4ui64vNV); glp->Uniform4uiEXT = (void APIENTRY (*)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) ldg_find("glUniform4uiEXT", lib); GL_CHECK(glp->Uniform4uiEXT); glp->Uniform4uiv = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint *value)) ldg_find("glUniform4uiv", lib); GL_CHECK(glp->Uniform4uiv); glp->Uniform4uivEXT = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint *value)) ldg_find("glUniform4uivEXT", lib); GL_CHECK(glp->Uniform4uivEXT); glp->UniformBlockBinding = (void APIENTRY (*)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)) ldg_find("glUniformBlockBinding", lib); GL_CHECK(glp->UniformBlockBinding); glp->UniformBufferEXT = (void APIENTRY (*)(GLuint program, GLint location, GLuint buffer)) ldg_find("glUniformBufferEXT", lib); GL_CHECK(glp->UniformBufferEXT); glp->UniformHandleui64ARB = (void APIENTRY (*)(GLint location, GLuint64 value)) ldg_find("glUniformHandleui64ARB", lib); GL_CHECK(glp->UniformHandleui64ARB); glp->UniformHandleui64NV = (void APIENTRY (*)(GLint location, GLuint64 value)) ldg_find("glUniformHandleui64NV", lib); GL_CHECK(glp->UniformHandleui64NV); glp->UniformHandleui64vARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint64 *value)) ldg_find("glUniformHandleui64vARB", lib); GL_CHECK(glp->UniformHandleui64vARB); glp->UniformHandleui64vNV = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint64 *value)) ldg_find("glUniformHandleui64vNV", lib); GL_CHECK(glp->UniformHandleui64vNV); glp->UniformMatrix2dv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glUniformMatrix2dv", lib); GL_CHECK(glp->UniformMatrix2dv); glp->UniformMatrix2fv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glUniformMatrix2fv", lib); GL_CHECK(glp->UniformMatrix2fv); glp->UniformMatrix2x3dv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glUniformMatrix2x3dv", lib); GL_CHECK(glp->UniformMatrix2x3dv); glp->UniformMatrix2x3fv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glUniformMatrix2x3fv", lib); GL_CHECK(glp->UniformMatrix2x3fv); glp->UniformMatrix2x4dv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glUniformMatrix2x4dv", lib); GL_CHECK(glp->UniformMatrix2x4dv); glp->UniformMatrix2x4fv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glUniformMatrix2x4fv", lib); GL_CHECK(glp->UniformMatrix2x4fv); glp->UniformMatrix3dv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glUniformMatrix3dv", lib); GL_CHECK(glp->UniformMatrix3dv); glp->UniformMatrix3fv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glUniformMatrix3fv", lib); GL_CHECK(glp->UniformMatrix3fv); glp->UniformMatrix3x2dv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glUniformMatrix3x2dv", lib); GL_CHECK(glp->UniformMatrix3x2dv); glp->UniformMatrix3x2fv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glUniformMatrix3x2fv", lib); GL_CHECK(glp->UniformMatrix3x2fv); glp->UniformMatrix3x4dv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glUniformMatrix3x4dv", lib); GL_CHECK(glp->UniformMatrix3x4dv); glp->UniformMatrix3x4fv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glUniformMatrix3x4fv", lib); GL_CHECK(glp->UniformMatrix3x4fv); glp->UniformMatrix4dv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glUniformMatrix4dv", lib); GL_CHECK(glp->UniformMatrix4dv); glp->UniformMatrix4fv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glUniformMatrix4fv", lib); GL_CHECK(glp->UniformMatrix4fv); glp->UniformMatrix4x2dv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glUniformMatrix4x2dv", lib); GL_CHECK(glp->UniformMatrix4x2dv); glp->UniformMatrix4x2fv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glUniformMatrix4x2fv", lib); GL_CHECK(glp->UniformMatrix4x2fv); glp->UniformMatrix4x3dv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value)) ldg_find("glUniformMatrix4x3dv", lib); GL_CHECK(glp->UniformMatrix4x3dv); glp->UniformMatrix4x3fv = (void APIENTRY (*)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value)) ldg_find("glUniformMatrix4x3fv", lib); GL_CHECK(glp->UniformMatrix4x3fv); glp->UniformSubroutinesuiv = (void APIENTRY (*)(GLenum shadertype, GLsizei count, const GLuint *indices)) ldg_find("glUniformSubroutinesuiv", lib); GL_CHECK(glp->UniformSubroutinesuiv); glp->Uniformui64NV = (void APIENTRY (*)(GLint location, GLuint64EXT value)) ldg_find("glUniformui64NV", lib); GL_CHECK(glp->Uniformui64NV); glp->Uniformui64vNV = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint64EXT *value)) ldg_find("glUniformui64vNV", lib); GL_CHECK(glp->Uniformui64vNV); glp->UnmapNamedBufferEXT = (GLboolean APIENTRY (*)(GLuint buffer)) ldg_find("glUnmapNamedBufferEXT", lib); GL_CHECK(glp->UnmapNamedBufferEXT); glp->UnmapTexture2DINTEL = (void APIENTRY (*)(GLuint texture, GLint level)) ldg_find("glUnmapTexture2DINTEL", lib); GL_CHECK(glp->UnmapTexture2DINTEL); glp->UseProgram = (void APIENTRY (*)(GLuint program)) ldg_find("glUseProgram", lib); GL_CHECK(glp->UseProgram); glp->UseProgramStages = (void APIENTRY (*)(GLuint pipeline, GLbitfield stages, GLuint program)) ldg_find("glUseProgramStages", lib); GL_CHECK(glp->UseProgramStages); glp->UseShaderProgramEXT = (void APIENTRY (*)(GLenum type, GLuint program)) ldg_find("glUseShaderProgramEXT", lib); GL_CHECK(glp->UseShaderProgramEXT); glp->VDPAUFiniNV = (void APIENTRY (*)(void)) ldg_find("glVDPAUFiniNV", lib); GL_CHECK(glp->VDPAUFiniNV); glp->VDPAUGetSurfaceivNV = (void APIENTRY (*)(GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)) ldg_find("glVDPAUGetSurfaceivNV", lib); GL_CHECK(glp->VDPAUGetSurfaceivNV); glp->VDPAUInitNV = (void APIENTRY (*)(const void *vdpDevice, const void *getProcAddress)) ldg_find("glVDPAUInitNV", lib); GL_CHECK(glp->VDPAUInitNV); glp->VDPAUIsSurfaceNV = (GLboolean APIENTRY (*)(GLvdpauSurfaceNV surface)) ldg_find("glVDPAUIsSurfaceNV", lib); GL_CHECK(glp->VDPAUIsSurfaceNV); glp->VDPAUMapSurfacesNV = (void APIENTRY (*)(GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces)) ldg_find("glVDPAUMapSurfacesNV", lib); GL_CHECK(glp->VDPAUMapSurfacesNV); glp->VDPAURegisterOutputSurfaceNV = (GLvdpauSurfaceNV APIENTRY (*)(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames)) ldg_find("glVDPAURegisterOutputSurfaceNV", lib); GL_CHECK(glp->VDPAURegisterOutputSurfaceNV); glp->VDPAURegisterVideoSurfaceNV = (GLvdpauSurfaceNV APIENTRY (*)(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames)) ldg_find("glVDPAURegisterVideoSurfaceNV", lib); GL_CHECK(glp->VDPAURegisterVideoSurfaceNV); glp->VDPAUSurfaceAccessNV = (void APIENTRY (*)(GLvdpauSurfaceNV surface, GLenum access)) ldg_find("glVDPAUSurfaceAccessNV", lib); GL_CHECK(glp->VDPAUSurfaceAccessNV); glp->VDPAUUnmapSurfacesNV = (void APIENTRY (*)(GLsizei numSurface, const GLvdpauSurfaceNV *surfaces)) ldg_find("glVDPAUUnmapSurfacesNV", lib); GL_CHECK(glp->VDPAUUnmapSurfacesNV); glp->VDPAUUnregisterSurfaceNV = (void APIENTRY (*)(GLvdpauSurfaceNV surface)) ldg_find("glVDPAUUnregisterSurfaceNV", lib); GL_CHECK(glp->VDPAUUnregisterSurfaceNV); glp->ValidateProgram = (void APIENTRY (*)(GLuint program)) ldg_find("glValidateProgram", lib); GL_CHECK(glp->ValidateProgram); glp->ValidateProgramPipeline = (void APIENTRY (*)(GLuint pipeline)) ldg_find("glValidateProgramPipeline", lib); GL_CHECK(glp->ValidateProgramPipeline); glp->Vertex2bOES = (void APIENTRY (*)(GLbyte32 x, GLbyte32 y)) ldg_find("glVertex2bOES", lib); GL_CHECK(glp->Vertex2bOES); glp->Vertex2bvOES = (void APIENTRY (*)(const GLbyte *coords)) ldg_find("glVertex2bvOES", lib); GL_CHECK(glp->Vertex2bvOES); glp->Vertex2xOES = (void APIENTRY (*)(GLfixed x)) ldg_find("glVertex2xOES", lib); GL_CHECK(glp->Vertex2xOES); glp->Vertex2xvOES = (void APIENTRY (*)(const GLfixed *coords)) ldg_find("glVertex2xvOES", lib); GL_CHECK(glp->Vertex2xvOES); glp->Vertex3bOES = (void APIENTRY (*)(GLbyte32 x, GLbyte32 y, GLbyte32 z)) ldg_find("glVertex3bOES", lib); GL_CHECK(glp->Vertex3bOES); glp->Vertex3bvOES = (void APIENTRY (*)(const GLbyte *coords)) ldg_find("glVertex3bvOES", lib); GL_CHECK(glp->Vertex3bvOES); glp->Vertex3xOES = (void APIENTRY (*)(GLfixed x, GLfixed y)) ldg_find("glVertex3xOES", lib); GL_CHECK(glp->Vertex3xOES); glp->Vertex3xvOES = (void APIENTRY (*)(const GLfixed *coords)) ldg_find("glVertex3xvOES", lib); GL_CHECK(glp->Vertex3xvOES); glp->Vertex4bOES = (void APIENTRY (*)(GLbyte32 x, GLbyte32 y, GLbyte32 z, GLbyte32 w)) ldg_find("glVertex4bOES", lib); GL_CHECK(glp->Vertex4bOES); glp->Vertex4bvOES = (void APIENTRY (*)(const GLbyte *coords)) ldg_find("glVertex4bvOES", lib); GL_CHECK(glp->Vertex4bvOES); glp->Vertex4xOES = (void APIENTRY (*)(GLfixed x, GLfixed y, GLfixed z)) ldg_find("glVertex4xOES", lib); GL_CHECK(glp->Vertex4xOES); glp->Vertex4xvOES = (void APIENTRY (*)(const GLfixed *coords)) ldg_find("glVertex4xvOES", lib); GL_CHECK(glp->Vertex4xvOES); glp->VertexArrayBindVertexBufferEXT = (void APIENTRY (*)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)) ldg_find("glVertexArrayBindVertexBufferEXT", lib); GL_CHECK(glp->VertexArrayBindVertexBufferEXT); glp->VertexArrayColorOffsetEXT = (void APIENTRY (*)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)) ldg_find("glVertexArrayColorOffsetEXT", lib); GL_CHECK(glp->VertexArrayColorOffsetEXT); glp->VertexArrayEdgeFlagOffsetEXT = (void APIENTRY (*)(GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset)) ldg_find("glVertexArrayEdgeFlagOffsetEXT", lib); GL_CHECK(glp->VertexArrayEdgeFlagOffsetEXT); glp->VertexArrayFogCoordOffsetEXT = (void APIENTRY (*)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)) ldg_find("glVertexArrayFogCoordOffsetEXT", lib); GL_CHECK(glp->VertexArrayFogCoordOffsetEXT); glp->VertexArrayIndexOffsetEXT = (void APIENTRY (*)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)) ldg_find("glVertexArrayIndexOffsetEXT", lib); GL_CHECK(glp->VertexArrayIndexOffsetEXT); glp->VertexArrayMultiTexCoordOffsetEXT = (void APIENTRY (*)(GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset)) ldg_find("glVertexArrayMultiTexCoordOffsetEXT", lib); GL_CHECK(glp->VertexArrayMultiTexCoordOffsetEXT); glp->VertexArrayNormalOffsetEXT = (void APIENTRY (*)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)) ldg_find("glVertexArrayNormalOffsetEXT", lib); GL_CHECK(glp->VertexArrayNormalOffsetEXT); glp->VertexArraySecondaryColorOffsetEXT = (void APIENTRY (*)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)) ldg_find("glVertexArraySecondaryColorOffsetEXT", lib); GL_CHECK(glp->VertexArraySecondaryColorOffsetEXT); glp->VertexArrayTexCoordOffsetEXT = (void APIENTRY (*)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)) ldg_find("glVertexArrayTexCoordOffsetEXT", lib); GL_CHECK(glp->VertexArrayTexCoordOffsetEXT); glp->VertexArrayVertexAttribBindingEXT = (void APIENTRY (*)(GLuint vaobj, GLuint attribindex, GLuint bindingindex)) ldg_find("glVertexArrayVertexAttribBindingEXT", lib); GL_CHECK(glp->VertexArrayVertexAttribBindingEXT); glp->VertexArrayVertexAttribDivisorEXT = (void APIENTRY (*)(GLuint vaobj, GLuint index, GLuint divisor)) ldg_find("glVertexArrayVertexAttribDivisorEXT", lib); GL_CHECK(glp->VertexArrayVertexAttribDivisorEXT); glp->VertexArrayVertexAttribFormatEXT = (void APIENTRY (*)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset)) ldg_find("glVertexArrayVertexAttribFormatEXT", lib); GL_CHECK(glp->VertexArrayVertexAttribFormatEXT); glp->VertexArrayVertexAttribIFormatEXT = (void APIENTRY (*)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) ldg_find("glVertexArrayVertexAttribIFormatEXT", lib); GL_CHECK(glp->VertexArrayVertexAttribIFormatEXT); glp->VertexArrayVertexAttribIOffsetEXT = (void APIENTRY (*)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset)) ldg_find("glVertexArrayVertexAttribIOffsetEXT", lib); GL_CHECK(glp->VertexArrayVertexAttribIOffsetEXT); glp->VertexArrayVertexAttribLFormatEXT = (void APIENTRY (*)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) ldg_find("glVertexArrayVertexAttribLFormatEXT", lib); GL_CHECK(glp->VertexArrayVertexAttribLFormatEXT); glp->VertexArrayVertexAttribLOffsetEXT = (void APIENTRY (*)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset)) ldg_find("glVertexArrayVertexAttribLOffsetEXT", lib); GL_CHECK(glp->VertexArrayVertexAttribLOffsetEXT); glp->VertexArrayVertexAttribOffsetEXT = (void APIENTRY (*)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLintptr offset)) ldg_find("glVertexArrayVertexAttribOffsetEXT", lib); GL_CHECK(glp->VertexArrayVertexAttribOffsetEXT); glp->VertexArrayVertexBindingDivisorEXT = (void APIENTRY (*)(GLuint vaobj, GLuint bindingindex, GLuint divisor)) ldg_find("glVertexArrayVertexBindingDivisorEXT", lib); GL_CHECK(glp->VertexArrayVertexBindingDivisorEXT); glp->VertexArrayVertexOffsetEXT = (void APIENTRY (*)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)) ldg_find("glVertexArrayVertexOffsetEXT", lib); GL_CHECK(glp->VertexArrayVertexOffsetEXT); glp->VertexAttrib1d = (void APIENTRY (*)(GLuint index, GLdouble x)) ldg_find("glVertexAttrib1d", lib); GL_CHECK(glp->VertexAttrib1d); glp->VertexAttrib1dv = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttrib1dv", lib); GL_CHECK(glp->VertexAttrib1dv); glp->VertexAttrib1f = (void APIENTRY (*)(GLuint index, GLfloat x)) ldg_find("glVertexAttrib1f", lib); GL_CHECK(glp->VertexAttrib1f); glp->VertexAttrib1fv = (void APIENTRY (*)(GLuint index, const GLfloat *v)) ldg_find("glVertexAttrib1fv", lib); GL_CHECK(glp->VertexAttrib1fv); glp->VertexAttrib1s = (void APIENTRY (*)(GLuint index, GLshort32 x)) ldg_find("glVertexAttrib1s", lib); GL_CHECK(glp->VertexAttrib1s); glp->VertexAttrib1sv = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttrib1sv", lib); GL_CHECK(glp->VertexAttrib1sv); glp->VertexAttrib2d = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y)) ldg_find("glVertexAttrib2d", lib); GL_CHECK(glp->VertexAttrib2d); glp->VertexAttrib2dv = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttrib2dv", lib); GL_CHECK(glp->VertexAttrib2dv); glp->VertexAttrib2f = (void APIENTRY (*)(GLuint index, GLfloat x, GLfloat y)) ldg_find("glVertexAttrib2f", lib); GL_CHECK(glp->VertexAttrib2f); glp->VertexAttrib2fv = (void APIENTRY (*)(GLuint index, const GLfloat *v)) ldg_find("glVertexAttrib2fv", lib); GL_CHECK(glp->VertexAttrib2fv); glp->VertexAttrib2s = (void APIENTRY (*)(GLuint index, GLshort32 x, GLshort32 y)) ldg_find("glVertexAttrib2s", lib); GL_CHECK(glp->VertexAttrib2s); glp->VertexAttrib2sv = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttrib2sv", lib); GL_CHECK(glp->VertexAttrib2sv); glp->VertexAttrib3d = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y, GLdouble z)) ldg_find("glVertexAttrib3d", lib); GL_CHECK(glp->VertexAttrib3d); glp->VertexAttrib3dv = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttrib3dv", lib); GL_CHECK(glp->VertexAttrib3dv); glp->VertexAttrib3f = (void APIENTRY (*)(GLuint index, GLfloat x, GLfloat y, GLfloat z)) ldg_find("glVertexAttrib3f", lib); GL_CHECK(glp->VertexAttrib3f); glp->VertexAttrib3fv = (void APIENTRY (*)(GLuint index, const GLfloat *v)) ldg_find("glVertexAttrib3fv", lib); GL_CHECK(glp->VertexAttrib3fv); glp->VertexAttrib3s = (void APIENTRY (*)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z)) ldg_find("glVertexAttrib3s", lib); GL_CHECK(glp->VertexAttrib3s); glp->VertexAttrib3sv = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttrib3sv", lib); GL_CHECK(glp->VertexAttrib3sv); glp->VertexAttrib4Nbv = (void APIENTRY (*)(GLuint index, const GLbyte *v)) ldg_find("glVertexAttrib4Nbv", lib); GL_CHECK(glp->VertexAttrib4Nbv); glp->VertexAttrib4Niv = (void APIENTRY (*)(GLuint index, const GLint *v)) ldg_find("glVertexAttrib4Niv", lib); GL_CHECK(glp->VertexAttrib4Niv); glp->VertexAttrib4Nsv = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttrib4Nsv", lib); GL_CHECK(glp->VertexAttrib4Nsv); glp->VertexAttrib4Nub = (void APIENTRY (*)(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w)) ldg_find("glVertexAttrib4Nub", lib); GL_CHECK(glp->VertexAttrib4Nub); glp->VertexAttrib4Nubv = (void APIENTRY (*)(GLuint index, const GLubyte *v)) ldg_find("glVertexAttrib4Nubv", lib); GL_CHECK(glp->VertexAttrib4Nubv); glp->VertexAttrib4Nuiv = (void APIENTRY (*)(GLuint index, const GLuint *v)) ldg_find("glVertexAttrib4Nuiv", lib); GL_CHECK(glp->VertexAttrib4Nuiv); glp->VertexAttrib4Nusv = (void APIENTRY (*)(GLuint index, const GLushort *v)) ldg_find("glVertexAttrib4Nusv", lib); GL_CHECK(glp->VertexAttrib4Nusv); glp->VertexAttrib4bv = (void APIENTRY (*)(GLuint index, const GLbyte *v)) ldg_find("glVertexAttrib4bv", lib); GL_CHECK(glp->VertexAttrib4bv); glp->VertexAttrib4d = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glVertexAttrib4d", lib); GL_CHECK(glp->VertexAttrib4d); glp->VertexAttrib4dv = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttrib4dv", lib); GL_CHECK(glp->VertexAttrib4dv); glp->VertexAttrib4f = (void APIENTRY (*)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) ldg_find("glVertexAttrib4f", lib); GL_CHECK(glp->VertexAttrib4f); glp->VertexAttrib4fv = (void APIENTRY (*)(GLuint index, const GLfloat *v)) ldg_find("glVertexAttrib4fv", lib); GL_CHECK(glp->VertexAttrib4fv); glp->VertexAttrib4iv = (void APIENTRY (*)(GLuint index, const GLint *v)) ldg_find("glVertexAttrib4iv", lib); GL_CHECK(glp->VertexAttrib4iv); glp->VertexAttrib4s = (void APIENTRY (*)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w)) ldg_find("glVertexAttrib4s", lib); GL_CHECK(glp->VertexAttrib4s); glp->VertexAttrib4sv = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttrib4sv", lib); GL_CHECK(glp->VertexAttrib4sv); glp->VertexAttrib4ubv = (void APIENTRY (*)(GLuint index, const GLubyte *v)) ldg_find("glVertexAttrib4ubv", lib); GL_CHECK(glp->VertexAttrib4ubv); glp->VertexAttrib4uiv = (void APIENTRY (*)(GLuint index, const GLuint *v)) ldg_find("glVertexAttrib4uiv", lib); GL_CHECK(glp->VertexAttrib4uiv); glp->VertexAttrib4usv = (void APIENTRY (*)(GLuint index, const GLushort *v)) ldg_find("glVertexAttrib4usv", lib); GL_CHECK(glp->VertexAttrib4usv); glp->VertexAttribBinding = (void APIENTRY (*)(GLuint attribindex, GLuint bindingindex)) ldg_find("glVertexAttribBinding", lib); GL_CHECK(glp->VertexAttribBinding); glp->VertexAttribDivisor = (void APIENTRY (*)(GLuint index, GLuint divisor)) ldg_find("glVertexAttribDivisor", lib); GL_CHECK(glp->VertexAttribDivisor); glp->VertexAttribDivisorARB = (void APIENTRY (*)(GLuint index, GLuint divisor)) ldg_find("glVertexAttribDivisorARB", lib); GL_CHECK(glp->VertexAttribDivisorARB); glp->VertexAttribFormat = (void APIENTRY (*)(GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset)) ldg_find("glVertexAttribFormat", lib); GL_CHECK(glp->VertexAttribFormat); glp->VertexAttribFormatNV = (void APIENTRY (*)(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride)) ldg_find("glVertexAttribFormatNV", lib); GL_CHECK(glp->VertexAttribFormatNV); glp->VertexAttribI1i = (void APIENTRY (*)(GLuint index, GLint x)) ldg_find("glVertexAttribI1i", lib); GL_CHECK(glp->VertexAttribI1i); glp->VertexAttribI1iEXT = (void APIENTRY (*)(GLuint index, GLint x)) ldg_find("glVertexAttribI1iEXT", lib); GL_CHECK(glp->VertexAttribI1iEXT); glp->VertexAttribI1iv = (void APIENTRY (*)(GLuint index, const GLint *v)) ldg_find("glVertexAttribI1iv", lib); GL_CHECK(glp->VertexAttribI1iv); glp->VertexAttribI1ivEXT = (void APIENTRY (*)(GLuint index, const GLint *v)) ldg_find("glVertexAttribI1ivEXT", lib); GL_CHECK(glp->VertexAttribI1ivEXT); glp->VertexAttribI1ui = (void APIENTRY (*)(GLuint index, GLuint x)) ldg_find("glVertexAttribI1ui", lib); GL_CHECK(glp->VertexAttribI1ui); glp->VertexAttribI1uiEXT = (void APIENTRY (*)(GLuint index, GLuint x)) ldg_find("glVertexAttribI1uiEXT", lib); GL_CHECK(glp->VertexAttribI1uiEXT); glp->VertexAttribI1uiv = (void APIENTRY (*)(GLuint index, const GLuint *v)) ldg_find("glVertexAttribI1uiv", lib); GL_CHECK(glp->VertexAttribI1uiv); glp->VertexAttribI1uivEXT = (void APIENTRY (*)(GLuint index, const GLuint *v)) ldg_find("glVertexAttribI1uivEXT", lib); GL_CHECK(glp->VertexAttribI1uivEXT); glp->VertexAttribI2i = (void APIENTRY (*)(GLuint index, GLint x, GLint y)) ldg_find("glVertexAttribI2i", lib); GL_CHECK(glp->VertexAttribI2i); glp->VertexAttribI2iEXT = (void APIENTRY (*)(GLuint index, GLint x, GLint y)) ldg_find("glVertexAttribI2iEXT", lib); GL_CHECK(glp->VertexAttribI2iEXT); glp->VertexAttribI2iv = (void APIENTRY (*)(GLuint index, const GLint *v)) ldg_find("glVertexAttribI2iv", lib); GL_CHECK(glp->VertexAttribI2iv); glp->VertexAttribI2ivEXT = (void APIENTRY (*)(GLuint index, const GLint *v)) ldg_find("glVertexAttribI2ivEXT", lib); GL_CHECK(glp->VertexAttribI2ivEXT); glp->VertexAttribI2ui = (void APIENTRY (*)(GLuint index, GLuint x, GLuint y)) ldg_find("glVertexAttribI2ui", lib); GL_CHECK(glp->VertexAttribI2ui); glp->VertexAttribI2uiEXT = (void APIENTRY (*)(GLuint index, GLuint x, GLuint y)) ldg_find("glVertexAttribI2uiEXT", lib); GL_CHECK(glp->VertexAttribI2uiEXT); glp->VertexAttribI2uiv = (void APIENTRY (*)(GLuint index, const GLuint *v)) ldg_find("glVertexAttribI2uiv", lib); GL_CHECK(glp->VertexAttribI2uiv); glp->VertexAttribI2uivEXT = (void APIENTRY (*)(GLuint index, const GLuint *v)) ldg_find("glVertexAttribI2uivEXT", lib); GL_CHECK(glp->VertexAttribI2uivEXT); glp->VertexAttribI3i = (void APIENTRY (*)(GLuint index, GLint x, GLint y, GLint z)) ldg_find("glVertexAttribI3i", lib); GL_CHECK(glp->VertexAttribI3i); glp->VertexAttribI3iEXT = (void APIENTRY (*)(GLuint index, GLint x, GLint y, GLint z)) ldg_find("glVertexAttribI3iEXT", lib); GL_CHECK(glp->VertexAttribI3iEXT); glp->VertexAttribI3iv = (void APIENTRY (*)(GLuint index, const GLint *v)) ldg_find("glVertexAttribI3iv", lib); GL_CHECK(glp->VertexAttribI3iv); glp->VertexAttribI3ivEXT = (void APIENTRY (*)(GLuint index, const GLint *v)) ldg_find("glVertexAttribI3ivEXT", lib); GL_CHECK(glp->VertexAttribI3ivEXT); glp->VertexAttribI3ui = (void APIENTRY (*)(GLuint index, GLuint x, GLuint y, GLuint z)) ldg_find("glVertexAttribI3ui", lib); GL_CHECK(glp->VertexAttribI3ui); glp->VertexAttribI3uiEXT = (void APIENTRY (*)(GLuint index, GLuint x, GLuint y, GLuint z)) ldg_find("glVertexAttribI3uiEXT", lib); GL_CHECK(glp->VertexAttribI3uiEXT); glp->VertexAttribI3uiv = (void APIENTRY (*)(GLuint index, const GLuint *v)) ldg_find("glVertexAttribI3uiv", lib); GL_CHECK(glp->VertexAttribI3uiv); glp->VertexAttribI3uivEXT = (void APIENTRY (*)(GLuint index, const GLuint *v)) ldg_find("glVertexAttribI3uivEXT", lib); GL_CHECK(glp->VertexAttribI3uivEXT); glp->VertexAttribI4bv = (void APIENTRY (*)(GLuint index, const GLbyte *v)) ldg_find("glVertexAttribI4bv", lib); GL_CHECK(glp->VertexAttribI4bv); glp->VertexAttribI4bvEXT = (void APIENTRY (*)(GLuint index, const GLbyte *v)) ldg_find("glVertexAttribI4bvEXT", lib); GL_CHECK(glp->VertexAttribI4bvEXT); glp->VertexAttribI4i = (void APIENTRY (*)(GLuint index, GLint x, GLint y, GLint z, GLint w)) ldg_find("glVertexAttribI4i", lib); GL_CHECK(glp->VertexAttribI4i); glp->VertexAttribI4iEXT = (void APIENTRY (*)(GLuint index, GLint x, GLint y, GLint z, GLint w)) ldg_find("glVertexAttribI4iEXT", lib); GL_CHECK(glp->VertexAttribI4iEXT); glp->VertexAttribI4iv = (void APIENTRY (*)(GLuint index, const GLint *v)) ldg_find("glVertexAttribI4iv", lib); GL_CHECK(glp->VertexAttribI4iv); glp->VertexAttribI4ivEXT = (void APIENTRY (*)(GLuint index, const GLint *v)) ldg_find("glVertexAttribI4ivEXT", lib); GL_CHECK(glp->VertexAttribI4ivEXT); glp->VertexAttribI4sv = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttribI4sv", lib); GL_CHECK(glp->VertexAttribI4sv); glp->VertexAttribI4svEXT = (void APIENTRY (*)(GLuint index, const GLshort *v)) ldg_find("glVertexAttribI4svEXT", lib); GL_CHECK(glp->VertexAttribI4svEXT); glp->VertexAttribI4ubv = (void APIENTRY (*)(GLuint index, const GLubyte *v)) ldg_find("glVertexAttribI4ubv", lib); GL_CHECK(glp->VertexAttribI4ubv); glp->VertexAttribI4ubvEXT = (void APIENTRY (*)(GLuint index, const GLubyte *v)) ldg_find("glVertexAttribI4ubvEXT", lib); GL_CHECK(glp->VertexAttribI4ubvEXT); glp->VertexAttribI4ui = (void APIENTRY (*)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) ldg_find("glVertexAttribI4ui", lib); GL_CHECK(glp->VertexAttribI4ui); glp->VertexAttribI4uiEXT = (void APIENTRY (*)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) ldg_find("glVertexAttribI4uiEXT", lib); GL_CHECK(glp->VertexAttribI4uiEXT); glp->VertexAttribI4uiv = (void APIENTRY (*)(GLuint index, const GLuint *v)) ldg_find("glVertexAttribI4uiv", lib); GL_CHECK(glp->VertexAttribI4uiv); glp->VertexAttribI4uivEXT = (void APIENTRY (*)(GLuint index, const GLuint *v)) ldg_find("glVertexAttribI4uivEXT", lib); GL_CHECK(glp->VertexAttribI4uivEXT); glp->VertexAttribI4usv = (void APIENTRY (*)(GLuint index, const GLushort *v)) ldg_find("glVertexAttribI4usv", lib); GL_CHECK(glp->VertexAttribI4usv); glp->VertexAttribI4usvEXT = (void APIENTRY (*)(GLuint index, const GLushort *v)) ldg_find("glVertexAttribI4usvEXT", lib); GL_CHECK(glp->VertexAttribI4usvEXT); glp->VertexAttribIFormat = (void APIENTRY (*)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) ldg_find("glVertexAttribIFormat", lib); GL_CHECK(glp->VertexAttribIFormat); glp->VertexAttribIFormatNV = (void APIENTRY (*)(GLuint index, GLint size, GLenum type, GLsizei stride)) ldg_find("glVertexAttribIFormatNV", lib); GL_CHECK(glp->VertexAttribIFormatNV); glp->VertexAttribIPointer = (void APIENTRY (*)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)) ldg_find("glVertexAttribIPointer", lib); GL_CHECK(glp->VertexAttribIPointer); glp->VertexAttribIPointerEXT = (void APIENTRY (*)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)) ldg_find("glVertexAttribIPointerEXT", lib); GL_CHECK(glp->VertexAttribIPointerEXT); glp->VertexAttribL1d = (void APIENTRY (*)(GLuint index, GLdouble x)) ldg_find("glVertexAttribL1d", lib); GL_CHECK(glp->VertexAttribL1d); glp->VertexAttribL1dEXT = (void APIENTRY (*)(GLuint index, GLdouble x)) ldg_find("glVertexAttribL1dEXT", lib); GL_CHECK(glp->VertexAttribL1dEXT); glp->VertexAttribL1dv = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttribL1dv", lib); GL_CHECK(glp->VertexAttribL1dv); glp->VertexAttribL1dvEXT = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttribL1dvEXT", lib); GL_CHECK(glp->VertexAttribL1dvEXT); glp->VertexAttribL1i64NV = (void APIENTRY (*)(GLuint index, GLint64EXT x)) ldg_find("glVertexAttribL1i64NV", lib); GL_CHECK(glp->VertexAttribL1i64NV); glp->VertexAttribL1i64vNV = (void APIENTRY (*)(GLuint index, const GLint64EXT *v)) ldg_find("glVertexAttribL1i64vNV", lib); GL_CHECK(glp->VertexAttribL1i64vNV); glp->VertexAttribL1ui64ARB = (void APIENTRY (*)(GLuint index, GLuint64EXT x)) ldg_find("glVertexAttribL1ui64ARB", lib); GL_CHECK(glp->VertexAttribL1ui64ARB); glp->VertexAttribL1ui64NV = (void APIENTRY (*)(GLuint index, GLuint64EXT x)) ldg_find("glVertexAttribL1ui64NV", lib); GL_CHECK(glp->VertexAttribL1ui64NV); glp->VertexAttribL1ui64vARB = (void APIENTRY (*)(GLuint index, const GLuint64EXT *v)) ldg_find("glVertexAttribL1ui64vARB", lib); GL_CHECK(glp->VertexAttribL1ui64vARB); glp->VertexAttribL1ui64vNV = (void APIENTRY (*)(GLuint index, const GLuint64EXT *v)) ldg_find("glVertexAttribL1ui64vNV", lib); GL_CHECK(glp->VertexAttribL1ui64vNV); glp->VertexAttribL2d = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y)) ldg_find("glVertexAttribL2d", lib); GL_CHECK(glp->VertexAttribL2d); glp->VertexAttribL2dEXT = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y)) ldg_find("glVertexAttribL2dEXT", lib); GL_CHECK(glp->VertexAttribL2dEXT); glp->VertexAttribL2dv = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttribL2dv", lib); GL_CHECK(glp->VertexAttribL2dv); glp->VertexAttribL2dvEXT = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttribL2dvEXT", lib); GL_CHECK(glp->VertexAttribL2dvEXT); glp->VertexAttribL2i64NV = (void APIENTRY (*)(GLuint index, GLint64EXT x, GLint64EXT y)) ldg_find("glVertexAttribL2i64NV", lib); GL_CHECK(glp->VertexAttribL2i64NV); glp->VertexAttribL2i64vNV = (void APIENTRY (*)(GLuint index, const GLint64EXT *v)) ldg_find("glVertexAttribL2i64vNV", lib); GL_CHECK(glp->VertexAttribL2i64vNV); glp->VertexAttribL2ui64NV = (void APIENTRY (*)(GLuint index, GLuint64EXT x, GLuint64EXT y)) ldg_find("glVertexAttribL2ui64NV", lib); GL_CHECK(glp->VertexAttribL2ui64NV); glp->VertexAttribL2ui64vNV = (void APIENTRY (*)(GLuint index, const GLuint64EXT *v)) ldg_find("glVertexAttribL2ui64vNV", lib); GL_CHECK(glp->VertexAttribL2ui64vNV); glp->VertexAttribL3d = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y, GLdouble z)) ldg_find("glVertexAttribL3d", lib); GL_CHECK(glp->VertexAttribL3d); glp->VertexAttribL3dEXT = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y, GLdouble z)) ldg_find("glVertexAttribL3dEXT", lib); GL_CHECK(glp->VertexAttribL3dEXT); glp->VertexAttribL3dv = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttribL3dv", lib); GL_CHECK(glp->VertexAttribL3dv); glp->VertexAttribL3dvEXT = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttribL3dvEXT", lib); GL_CHECK(glp->VertexAttribL3dvEXT); glp->VertexAttribL3i64NV = (void APIENTRY (*)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z)) ldg_find("glVertexAttribL3i64NV", lib); GL_CHECK(glp->VertexAttribL3i64NV); glp->VertexAttribL3i64vNV = (void APIENTRY (*)(GLuint index, const GLint64EXT *v)) ldg_find("glVertexAttribL3i64vNV", lib); GL_CHECK(glp->VertexAttribL3i64vNV); glp->VertexAttribL3ui64NV = (void APIENTRY (*)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z)) ldg_find("glVertexAttribL3ui64NV", lib); GL_CHECK(glp->VertexAttribL3ui64NV); glp->VertexAttribL3ui64vNV = (void APIENTRY (*)(GLuint index, const GLuint64EXT *v)) ldg_find("glVertexAttribL3ui64vNV", lib); GL_CHECK(glp->VertexAttribL3ui64vNV); glp->VertexAttribL4d = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glVertexAttribL4d", lib); GL_CHECK(glp->VertexAttribL4d); glp->VertexAttribL4dEXT = (void APIENTRY (*)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) ldg_find("glVertexAttribL4dEXT", lib); GL_CHECK(glp->VertexAttribL4dEXT); glp->VertexAttribL4dv = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttribL4dv", lib); GL_CHECK(glp->VertexAttribL4dv); glp->VertexAttribL4dvEXT = (void APIENTRY (*)(GLuint index, const GLdouble *v)) ldg_find("glVertexAttribL4dvEXT", lib); GL_CHECK(glp->VertexAttribL4dvEXT); glp->VertexAttribL4i64NV = (void APIENTRY (*)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w)) ldg_find("glVertexAttribL4i64NV", lib); GL_CHECK(glp->VertexAttribL4i64NV); glp->VertexAttribL4i64vNV = (void APIENTRY (*)(GLuint index, const GLint64EXT *v)) ldg_find("glVertexAttribL4i64vNV", lib); GL_CHECK(glp->VertexAttribL4i64vNV); glp->VertexAttribL4ui64NV = (void APIENTRY (*)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w)) ldg_find("glVertexAttribL4ui64NV", lib); GL_CHECK(glp->VertexAttribL4ui64NV); glp->VertexAttribL4ui64vNV = (void APIENTRY (*)(GLuint index, const GLuint64EXT *v)) ldg_find("glVertexAttribL4ui64vNV", lib); GL_CHECK(glp->VertexAttribL4ui64vNV); glp->VertexAttribLFormat = (void APIENTRY (*)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) ldg_find("glVertexAttribLFormat", lib); GL_CHECK(glp->VertexAttribLFormat); glp->VertexAttribLFormatNV = (void APIENTRY (*)(GLuint index, GLint size, GLenum type, GLsizei stride)) ldg_find("glVertexAttribLFormatNV", lib); GL_CHECK(glp->VertexAttribLFormatNV); glp->VertexAttribLPointer = (void APIENTRY (*)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)) ldg_find("glVertexAttribLPointer", lib); GL_CHECK(glp->VertexAttribLPointer); glp->VertexAttribLPointerEXT = (void APIENTRY (*)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)) ldg_find("glVertexAttribLPointerEXT", lib); GL_CHECK(glp->VertexAttribLPointerEXT); glp->VertexAttribP1ui = (void APIENTRY (*)(GLuint index, GLenum type, GLboolean32 normalized, GLuint value)) ldg_find("glVertexAttribP1ui", lib); GL_CHECK(glp->VertexAttribP1ui); glp->VertexAttribP1uiv = (void APIENTRY (*)(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value)) ldg_find("glVertexAttribP1uiv", lib); GL_CHECK(glp->VertexAttribP1uiv); glp->VertexAttribP2ui = (void APIENTRY (*)(GLuint index, GLenum type, GLboolean32 normalized, GLuint value)) ldg_find("glVertexAttribP2ui", lib); GL_CHECK(glp->VertexAttribP2ui); glp->VertexAttribP2uiv = (void APIENTRY (*)(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value)) ldg_find("glVertexAttribP2uiv", lib); GL_CHECK(glp->VertexAttribP2uiv); glp->VertexAttribP3ui = (void APIENTRY (*)(GLuint index, GLenum type, GLboolean32 normalized, GLuint value)) ldg_find("glVertexAttribP3ui", lib); GL_CHECK(glp->VertexAttribP3ui); glp->VertexAttribP3uiv = (void APIENTRY (*)(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value)) ldg_find("glVertexAttribP3uiv", lib); GL_CHECK(glp->VertexAttribP3uiv); glp->VertexAttribP4ui = (void APIENTRY (*)(GLuint index, GLenum type, GLboolean32 normalized, GLuint value)) ldg_find("glVertexAttribP4ui", lib); GL_CHECK(glp->VertexAttribP4ui); glp->VertexAttribP4uiv = (void APIENTRY (*)(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value)) ldg_find("glVertexAttribP4uiv", lib); GL_CHECK(glp->VertexAttribP4uiv); glp->VertexAttribParameteriAMD = (void APIENTRY (*)(GLuint index, GLenum pname, GLint param)) ldg_find("glVertexAttribParameteriAMD", lib); GL_CHECK(glp->VertexAttribParameteriAMD); glp->VertexAttribPointer = (void APIENTRY (*)(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer)) ldg_find("glVertexAttribPointer", lib); GL_CHECK(glp->VertexAttribPointer); glp->VertexBindingDivisor = (void APIENTRY (*)(GLuint bindingindex, GLuint divisor)) ldg_find("glVertexBindingDivisor", lib); GL_CHECK(glp->VertexBindingDivisor); glp->VertexFormatNV = (void APIENTRY (*)(GLint size, GLenum type, GLsizei stride)) ldg_find("glVertexFormatNV", lib); GL_CHECK(glp->VertexFormatNV); glp->VertexP2ui = (void APIENTRY (*)(GLenum type, GLuint value)) ldg_find("glVertexP2ui", lib); GL_CHECK(glp->VertexP2ui); glp->VertexP2uiv = (void APIENTRY (*)(GLenum type, const GLuint *value)) ldg_find("glVertexP2uiv", lib); GL_CHECK(glp->VertexP2uiv); glp->VertexP3ui = (void APIENTRY (*)(GLenum type, GLuint value)) ldg_find("glVertexP3ui", lib); GL_CHECK(glp->VertexP3ui); glp->VertexP3uiv = (void APIENTRY (*)(GLenum type, const GLuint *value)) ldg_find("glVertexP3uiv", lib); GL_CHECK(glp->VertexP3uiv); glp->VertexP4ui = (void APIENTRY (*)(GLenum type, GLuint value)) ldg_find("glVertexP4ui", lib); GL_CHECK(glp->VertexP4ui); glp->VertexP4uiv = (void APIENTRY (*)(GLenum type, const GLuint *value)) ldg_find("glVertexP4uiv", lib); GL_CHECK(glp->VertexP4uiv); glp->VertexPointSizefAPPLE = (void APIENTRY (*)(GLfloat size)) ldg_find("glVertexPointSizefAPPLE", lib); GL_CHECK(glp->VertexPointSizefAPPLE); glp->VideoCaptureNV = (GLenum APIENTRY (*)(GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time)) ldg_find("glVideoCaptureNV", lib); GL_CHECK(glp->VideoCaptureNV); glp->VideoCaptureStreamParameterdvNV = (void APIENTRY (*)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params)) ldg_find("glVideoCaptureStreamParameterdvNV", lib); GL_CHECK(glp->VideoCaptureStreamParameterdvNV); glp->VideoCaptureStreamParameterfvNV = (void APIENTRY (*)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params)) ldg_find("glVideoCaptureStreamParameterfvNV", lib); GL_CHECK(glp->VideoCaptureStreamParameterfvNV); glp->VideoCaptureStreamParameterivNV = (void APIENTRY (*)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params)) ldg_find("glVideoCaptureStreamParameterivNV", lib); GL_CHECK(glp->VideoCaptureStreamParameterivNV); glp->ViewportArrayv = (void APIENTRY (*)(GLuint first, GLsizei count, const GLfloat *v)) ldg_find("glViewportArrayv", lib); GL_CHECK(glp->ViewportArrayv); glp->ViewportIndexedf = (void APIENTRY (*)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h)) ldg_find("glViewportIndexedf", lib); GL_CHECK(glp->ViewportIndexedf); glp->ViewportIndexedfv = (void APIENTRY (*)(GLuint index, const GLfloat *v)) ldg_find("glViewportIndexedfv", lib); GL_CHECK(glp->ViewportIndexedfv); glp->WaitSync = (void APIENTRY (*)(GLsync sync, GLbitfield flags, GLuint64 timeout)) ldg_find("glWaitSync", lib); GL_CHECK(glp->WaitSync); glp->WeightPathsNV = (void APIENTRY (*)(GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights)) ldg_find("glWeightPathsNV", lib); GL_CHECK(glp->WeightPathsNV); glp->BindTextureUnit = (void APIENTRY (*)(GLuint unit, GLuint texture)) ldg_find("glBindTextureUnit", lib); GL_CHECK(glp->BindTextureUnit); glp->BlendBarrierKHR = (void APIENTRY (*)(void)) ldg_find("glBlendBarrierKHR", lib); GL_CHECK(glp->BlendBarrierKHR); glp->BlitNamedFramebuffer = (void APIENTRY (*)(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) ldg_find("glBlitNamedFramebuffer", lib); GL_CHECK(glp->BlitNamedFramebuffer); glp->BufferPageCommitmentARB = (void APIENTRY (*)(GLenum target, GLintptr offset, GLsizeiptr size, GLboolean32 commit)) ldg_find("glBufferPageCommitmentARB", lib); GL_CHECK(glp->BufferPageCommitmentARB); glp->CallCommandListNV = (void APIENTRY (*)(GLuint list)) ldg_find("glCallCommandListNV", lib); GL_CHECK(glp->CallCommandListNV); glp->CheckNamedFramebufferStatus = (GLenum APIENTRY (*)(GLuint framebuffer, GLenum target)) ldg_find("glCheckNamedFramebufferStatus", lib); GL_CHECK(glp->CheckNamedFramebufferStatus); glp->ClearNamedBufferData = (void APIENTRY (*)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data)) ldg_find("glClearNamedBufferData", lib); GL_CHECK(glp->ClearNamedBufferData); glp->ClearNamedBufferSubData = (void APIENTRY (*)(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)) ldg_find("glClearNamedBufferSubData", lib); GL_CHECK(glp->ClearNamedBufferSubData); glp->ClearNamedFramebufferfi = (void APIENTRY (*)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)) ldg_find("glClearNamedFramebufferfi", lib); GL_CHECK(glp->ClearNamedFramebufferfi); glp->ClearNamedFramebufferfv = (void APIENTRY (*)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value)) ldg_find("glClearNamedFramebufferfv", lib); GL_CHECK(glp->ClearNamedFramebufferfv); glp->ClearNamedFramebufferiv = (void APIENTRY (*)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value)) ldg_find("glClearNamedFramebufferiv", lib); GL_CHECK(glp->ClearNamedFramebufferiv); glp->ClearNamedFramebufferuiv = (void APIENTRY (*)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value)) ldg_find("glClearNamedFramebufferuiv", lib); GL_CHECK(glp->ClearNamedFramebufferuiv); glp->ClipControl = (void APIENTRY (*)(GLenum origin, GLenum depth)) ldg_find("glClipControl", lib); GL_CHECK(glp->ClipControl); glp->CommandListSegmentsNV = (void APIENTRY (*)(GLuint list, GLuint segments)) ldg_find("glCommandListSegmentsNV", lib); GL_CHECK(glp->CommandListSegmentsNV); glp->CompileCommandListNV = (void APIENTRY (*)(GLuint list)) ldg_find("glCompileCommandListNV", lib); GL_CHECK(glp->CompileCommandListNV); glp->CompressedTextureSubImage1D = (void APIENTRY (*)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)) ldg_find("glCompressedTextureSubImage1D", lib); GL_CHECK(glp->CompressedTextureSubImage1D); glp->CompressedTextureSubImage2D = (void APIENTRY (*)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)) ldg_find("glCompressedTextureSubImage2D", lib); GL_CHECK(glp->CompressedTextureSubImage2D); glp->CompressedTextureSubImage3D = (void APIENTRY (*)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)) ldg_find("glCompressedTextureSubImage3D", lib); GL_CHECK(glp->CompressedTextureSubImage3D); glp->CopyNamedBufferSubData = (void APIENTRY (*)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)) ldg_find("glCopyNamedBufferSubData", lib); GL_CHECK(glp->CopyNamedBufferSubData); glp->CopyTextureSubImage1D = (void APIENTRY (*)(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)) ldg_find("glCopyTextureSubImage1D", lib); GL_CHECK(glp->CopyTextureSubImage1D); glp->CopyTextureSubImage2D = (void APIENTRY (*)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glCopyTextureSubImage2D", lib); GL_CHECK(glp->CopyTextureSubImage2D); glp->CopyTextureSubImage3D = (void APIENTRY (*)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glCopyTextureSubImage3D", lib); GL_CHECK(glp->CopyTextureSubImage3D); glp->CoverageModulationNV = (void APIENTRY (*)(GLenum components)) ldg_find("glCoverageModulationNV", lib); GL_CHECK(glp->CoverageModulationNV); glp->CoverageModulationTableNV = (void APIENTRY (*)(GLsizei n, const GLfloat *v)) ldg_find("glCoverageModulationTableNV", lib); GL_CHECK(glp->CoverageModulationTableNV); glp->CreateBuffers = (void APIENTRY (*)(GLsizei n, GLuint *buffers)) ldg_find("glCreateBuffers", lib); GL_CHECK(glp->CreateBuffers); glp->CreateCommandListsNV = (void APIENTRY (*)(GLsizei n, GLuint *lists)) ldg_find("glCreateCommandListsNV", lib); GL_CHECK(glp->CreateCommandListsNV); glp->CreateFramebuffers = (void APIENTRY (*)(GLsizei n, GLuint *framebuffers)) ldg_find("glCreateFramebuffers", lib); GL_CHECK(glp->CreateFramebuffers); glp->CreateProgramPipelines = (void APIENTRY (*)(GLsizei n, GLuint *pipelines)) ldg_find("glCreateProgramPipelines", lib); GL_CHECK(glp->CreateProgramPipelines); glp->CreateQueries = (void APIENTRY (*)(GLenum target, GLsizei n, GLuint *ids)) ldg_find("glCreateQueries", lib); GL_CHECK(glp->CreateQueries); glp->CreateRenderbuffers = (void APIENTRY (*)(GLsizei n, GLuint *renderbuffers)) ldg_find("glCreateRenderbuffers", lib); GL_CHECK(glp->CreateRenderbuffers); glp->CreateSamplers = (void APIENTRY (*)(GLsizei n, GLuint *samplers)) ldg_find("glCreateSamplers", lib); GL_CHECK(glp->CreateSamplers); glp->CreateStatesNV = (void APIENTRY (*)(GLsizei n, GLuint *states)) ldg_find("glCreateStatesNV", lib); GL_CHECK(glp->CreateStatesNV); glp->CreateTextures = (void APIENTRY (*)(GLenum target, GLsizei n, GLuint *textures)) ldg_find("glCreateTextures", lib); GL_CHECK(glp->CreateTextures); glp->CreateTransformFeedbacks = (void APIENTRY (*)(GLsizei n, GLuint *ids)) ldg_find("glCreateTransformFeedbacks", lib); GL_CHECK(glp->CreateTransformFeedbacks); glp->CreateVertexArrays = (void APIENTRY (*)(GLsizei n, GLuint *arrays)) ldg_find("glCreateVertexArrays", lib); GL_CHECK(glp->CreateVertexArrays); glp->DeleteCommandListsNV = (void APIENTRY (*)(GLsizei n, const GLuint *lists)) ldg_find("glDeleteCommandListsNV", lib); GL_CHECK(glp->DeleteCommandListsNV); glp->DeleteStatesNV = (void APIENTRY (*)(GLsizei n, const GLuint *states)) ldg_find("glDeleteStatesNV", lib); GL_CHECK(glp->DeleteStatesNV); glp->DisableVertexArrayAttrib = (void APIENTRY (*)(GLuint vaobj, GLuint index)) ldg_find("glDisableVertexArrayAttrib", lib); GL_CHECK(glp->DisableVertexArrayAttrib); glp->DrawCommandsAddressNV = (void APIENTRY (*)(GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count)) ldg_find("glDrawCommandsAddressNV", lib); GL_CHECK(glp->DrawCommandsAddressNV); glp->DrawCommandsNV = (void APIENTRY (*)(GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count)) ldg_find("glDrawCommandsNV", lib); GL_CHECK(glp->DrawCommandsNV); glp->DrawCommandsStatesAddressNV = (void APIENTRY (*)(const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count)) ldg_find("glDrawCommandsStatesAddressNV", lib); GL_CHECK(glp->DrawCommandsStatesAddressNV); glp->DrawCommandsStatesNV = (void APIENTRY (*)(GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count)) ldg_find("glDrawCommandsStatesNV", lib); GL_CHECK(glp->DrawCommandsStatesNV); glp->EnableVertexArrayAttrib = (void APIENTRY (*)(GLuint vaobj, GLuint index)) ldg_find("glEnableVertexArrayAttrib", lib); GL_CHECK(glp->EnableVertexArrayAttrib); glp->FlushMappedNamedBufferRange = (void APIENTRY (*)(GLuint buffer, GLintptr offset, GLsizeiptr length)) ldg_find("glFlushMappedNamedBufferRange", lib); GL_CHECK(glp->FlushMappedNamedBufferRange); glp->FragmentCoverageColorNV = (void APIENTRY (*)(GLuint color)) ldg_find("glFragmentCoverageColorNV", lib); GL_CHECK(glp->FragmentCoverageColorNV); glp->FramebufferSampleLocationsfvNV = (void APIENTRY (*)(GLenum target, GLuint start, GLsizei count, const GLfloat *v)) ldg_find("glFramebufferSampleLocationsfvNV", lib); GL_CHECK(glp->FramebufferSampleLocationsfvNV); glp->FramebufferTextureMultiviewOVR = (void APIENTRY (*)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews)) ldg_find("glFramebufferTextureMultiviewOVR", lib); GL_CHECK(glp->FramebufferTextureMultiviewOVR); glp->GenerateTextureMipmap = (void APIENTRY (*)(GLuint texture)) ldg_find("glGenerateTextureMipmap", lib); GL_CHECK(glp->GenerateTextureMipmap); glp->GetCommandHeaderNV = (GLuint APIENTRY (*)(GLenum tokenID, GLuint size)) ldg_find("glGetCommandHeaderNV", lib); GL_CHECK(glp->GetCommandHeaderNV); glp->GetCompressedTextureImage = (void APIENTRY (*)(GLuint texture, GLint level, GLsizei bufSize, void *pixels)) ldg_find("glGetCompressedTextureImage", lib); GL_CHECK(glp->GetCompressedTextureImage); glp->GetCompressedTextureSubImage = (void APIENTRY (*)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels)) ldg_find("glGetCompressedTextureSubImage", lib); GL_CHECK(glp->GetCompressedTextureSubImage); glp->GetCoverageModulationTableNV = (void APIENTRY (*)(GLsizei bufsize, GLfloat *v)) ldg_find("glGetCoverageModulationTableNV", lib); GL_CHECK(glp->GetCoverageModulationTableNV); glp->GetGraphicsResetStatus = (GLenum APIENTRY (*)(void)) ldg_find("glGetGraphicsResetStatus", lib); GL_CHECK(glp->GetGraphicsResetStatus); glp->GetInternalformatSampleivNV = (void APIENTRY (*)(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params)) ldg_find("glGetInternalformatSampleivNV", lib); GL_CHECK(glp->GetInternalformatSampleivNV); glp->GetNamedBufferParameteri64v = (void APIENTRY (*)(GLuint buffer, GLenum pname, GLint64 *params)) ldg_find("glGetNamedBufferParameteri64v", lib); GL_CHECK(glp->GetNamedBufferParameteri64v); glp->GetNamedBufferParameteriv = (void APIENTRY (*)(GLuint buffer, GLenum pname, GLint *params)) ldg_find("glGetNamedBufferParameteriv", lib); GL_CHECK(glp->GetNamedBufferParameteriv); glp->GetNamedBufferPointerv = (void APIENTRY (*)(GLuint buffer, GLenum pname, void * *params)) ldg_find("glGetNamedBufferPointerv", lib); GL_CHECK(glp->GetNamedBufferPointerv); glp->GetNamedBufferSubData = (void APIENTRY (*)(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data)) ldg_find("glGetNamedBufferSubData", lib); GL_CHECK(glp->GetNamedBufferSubData); glp->GetNamedFramebufferAttachmentParameteriv = (void APIENTRY (*)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params)) ldg_find("glGetNamedFramebufferAttachmentParameteriv", lib); GL_CHECK(glp->GetNamedFramebufferAttachmentParameteriv); glp->GetNamedFramebufferParameteriv = (void APIENTRY (*)(GLuint framebuffer, GLenum pname, GLint *param)) ldg_find("glGetNamedFramebufferParameteriv", lib); GL_CHECK(glp->GetNamedFramebufferParameteriv); glp->GetNamedRenderbufferParameteriv = (void APIENTRY (*)(GLuint renderbuffer, GLenum pname, GLint *params)) ldg_find("glGetNamedRenderbufferParameteriv", lib); GL_CHECK(glp->GetNamedRenderbufferParameteriv); glp->GetProgramResourcefvNV = (void APIENTRY (*)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params)) ldg_find("glGetProgramResourcefvNV", lib); GL_CHECK(glp->GetProgramResourcefvNV); glp->GetQueryBufferObjecti64v = (void APIENTRY (*)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset)) ldg_find("glGetQueryBufferObjecti64v", lib); GL_CHECK(glp->GetQueryBufferObjecti64v); glp->GetQueryBufferObjectiv = (void APIENTRY (*)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset)) ldg_find("glGetQueryBufferObjectiv", lib); GL_CHECK(glp->GetQueryBufferObjectiv); glp->GetQueryBufferObjectui64v = (void APIENTRY (*)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset)) ldg_find("glGetQueryBufferObjectui64v", lib); GL_CHECK(glp->GetQueryBufferObjectui64v); glp->GetQueryBufferObjectuiv = (void APIENTRY (*)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset)) ldg_find("glGetQueryBufferObjectuiv", lib); GL_CHECK(glp->GetQueryBufferObjectuiv); glp->GetStageIndexNV = (GLushort APIENTRY (*)(GLenum shadertype)) ldg_find("glGetStageIndexNV", lib); GL_CHECK(glp->GetStageIndexNV); glp->GetTextureImage = (void APIENTRY (*)(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels)) ldg_find("glGetTextureImage", lib); GL_CHECK(glp->GetTextureImage); glp->GetTextureLevelParameterfv = (void APIENTRY (*)(GLuint texture, GLint level, GLenum pname, GLfloat *params)) ldg_find("glGetTextureLevelParameterfv", lib); GL_CHECK(glp->GetTextureLevelParameterfv); glp->GetTextureLevelParameteriv = (void APIENTRY (*)(GLuint texture, GLint level, GLenum pname, GLint *params)) ldg_find("glGetTextureLevelParameteriv", lib); GL_CHECK(glp->GetTextureLevelParameteriv); glp->GetTextureParameterIiv = (void APIENTRY (*)(GLuint texture, GLenum pname, GLint *params)) ldg_find("glGetTextureParameterIiv", lib); GL_CHECK(glp->GetTextureParameterIiv); glp->GetTextureParameterIuiv = (void APIENTRY (*)(GLuint texture, GLenum pname, GLuint *params)) ldg_find("glGetTextureParameterIuiv", lib); GL_CHECK(glp->GetTextureParameterIuiv); glp->GetTextureParameterfv = (void APIENTRY (*)(GLuint texture, GLenum pname, GLfloat *params)) ldg_find("glGetTextureParameterfv", lib); GL_CHECK(glp->GetTextureParameterfv); glp->GetTextureParameteriv = (void APIENTRY (*)(GLuint texture, GLenum pname, GLint *params)) ldg_find("glGetTextureParameteriv", lib); GL_CHECK(glp->GetTextureParameteriv); glp->GetTextureSubImage = (void APIENTRY (*)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels)) ldg_find("glGetTextureSubImage", lib); GL_CHECK(glp->GetTextureSubImage); glp->GetTransformFeedbacki64_v = (void APIENTRY (*)(GLuint xfb, GLenum pname, GLuint index, GLint64 *param)) ldg_find("glGetTransformFeedbacki64_v", lib); GL_CHECK(glp->GetTransformFeedbacki64_v); glp->GetTransformFeedbacki_v = (void APIENTRY (*)(GLuint xfb, GLenum pname, GLuint index, GLint *param)) ldg_find("glGetTransformFeedbacki_v", lib); GL_CHECK(glp->GetTransformFeedbacki_v); glp->GetTransformFeedbackiv = (void APIENTRY (*)(GLuint xfb, GLenum pname, GLint *param)) ldg_find("glGetTransformFeedbackiv", lib); GL_CHECK(glp->GetTransformFeedbackiv); glp->GetVertexArrayIndexed64iv = (void APIENTRY (*)(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param)) ldg_find("glGetVertexArrayIndexed64iv", lib); GL_CHECK(glp->GetVertexArrayIndexed64iv); glp->GetVertexArrayIndexediv = (void APIENTRY (*)(GLuint vaobj, GLuint index, GLenum pname, GLint *param)) ldg_find("glGetVertexArrayIndexediv", lib); GL_CHECK(glp->GetVertexArrayIndexediv); glp->GetVertexArrayiv = (void APIENTRY (*)(GLuint vaobj, GLenum pname, GLint *param)) ldg_find("glGetVertexArrayiv", lib); GL_CHECK(glp->GetVertexArrayiv); glp->GetnColorTable = (void APIENTRY (*)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table)) ldg_find("glGetnColorTable", lib); GL_CHECK(glp->GetnColorTable); glp->GetnCompressedTexImage = (void APIENTRY (*)(GLenum target, GLint lod, GLsizei bufSize, void *pixels)) ldg_find("glGetnCompressedTexImage", lib); GL_CHECK(glp->GetnCompressedTexImage); glp->GetnConvolutionFilter = (void APIENTRY (*)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image)) ldg_find("glGetnConvolutionFilter", lib); GL_CHECK(glp->GetnConvolutionFilter); glp->GetnHistogram = (void APIENTRY (*)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values)) ldg_find("glGetnHistogram", lib); GL_CHECK(glp->GetnHistogram); glp->GetnMapdv = (void APIENTRY (*)(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v)) ldg_find("glGetnMapdv", lib); GL_CHECK(glp->GetnMapdv); glp->GetnMapfv = (void APIENTRY (*)(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v)) ldg_find("glGetnMapfv", lib); GL_CHECK(glp->GetnMapfv); glp->GetnMapiv = (void APIENTRY (*)(GLenum target, GLenum query, GLsizei bufSize, GLint *v)) ldg_find("glGetnMapiv", lib); GL_CHECK(glp->GetnMapiv); glp->GetnMinmax = (void APIENTRY (*)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values)) ldg_find("glGetnMinmax", lib); GL_CHECK(glp->GetnMinmax); glp->GetnPixelMapfv = (void APIENTRY (*)(GLenum map, GLsizei bufSize, GLfloat *values)) ldg_find("glGetnPixelMapfv", lib); GL_CHECK(glp->GetnPixelMapfv); glp->GetnPixelMapuiv = (void APIENTRY (*)(GLenum map, GLsizei bufSize, GLuint *values)) ldg_find("glGetnPixelMapuiv", lib); GL_CHECK(glp->GetnPixelMapuiv); glp->GetnPixelMapusv = (void APIENTRY (*)(GLenum map, GLsizei bufSize, GLushort *values)) ldg_find("glGetnPixelMapusv", lib); GL_CHECK(glp->GetnPixelMapusv); glp->GetnPolygonStipple = (void APIENTRY (*)(GLsizei bufSize, GLubyte *pattern)) ldg_find("glGetnPolygonStipple", lib); GL_CHECK(glp->GetnPolygonStipple); glp->GetnSeparableFilter = (void APIENTRY (*)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span)) ldg_find("glGetnSeparableFilter", lib); GL_CHECK(glp->GetnSeparableFilter); glp->GetnTexImage = (void APIENTRY (*)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels)) ldg_find("glGetnTexImage", lib); GL_CHECK(glp->GetnTexImage); glp->GetnUniformdv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei bufSize, GLdouble *params)) ldg_find("glGetnUniformdv", lib); GL_CHECK(glp->GetnUniformdv); glp->GetnUniformfv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params)) ldg_find("glGetnUniformfv", lib); GL_CHECK(glp->GetnUniformfv); glp->GetnUniformiv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei bufSize, GLint *params)) ldg_find("glGetnUniformiv", lib); GL_CHECK(glp->GetnUniformiv); glp->GetnUniformuiv = (void APIENTRY (*)(GLuint program, GLint location, GLsizei bufSize, GLuint *params)) ldg_find("glGetnUniformuiv", lib); GL_CHECK(glp->GetnUniformuiv); glp->InvalidateNamedFramebufferData = (void APIENTRY (*)(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments)) ldg_find("glInvalidateNamedFramebufferData", lib); GL_CHECK(glp->InvalidateNamedFramebufferData); glp->InvalidateNamedFramebufferSubData = (void APIENTRY (*)(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)) ldg_find("glInvalidateNamedFramebufferSubData", lib); GL_CHECK(glp->InvalidateNamedFramebufferSubData); glp->IsCommandListNV = (GLboolean APIENTRY (*)(GLuint list)) ldg_find("glIsCommandListNV", lib); GL_CHECK(glp->IsCommandListNV); glp->IsStateNV = (GLboolean APIENTRY (*)(GLuint state)) ldg_find("glIsStateNV", lib); GL_CHECK(glp->IsStateNV); glp->ListDrawCommandsStatesClientNV = (void APIENTRY (*)(GLuint list, GLuint segment, const void * *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count)) ldg_find("glListDrawCommandsStatesClientNV", lib); GL_CHECK(glp->ListDrawCommandsStatesClientNV); glp->MapNamedBuffer = (void * APIENTRY (*)(GLuint buffer, GLenum access)) ldg_find("glMapNamedBuffer", lib); GL_CHECK(glp->MapNamedBuffer); glp->MapNamedBufferRange = (void * APIENTRY (*)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access)) ldg_find("glMapNamedBufferRange", lib); GL_CHECK(glp->MapNamedBufferRange); glp->MatrixLoad3x2fNV = (void APIENTRY (*)(GLenum matrixMode, const GLfloat *m)) ldg_find("glMatrixLoad3x2fNV", lib); GL_CHECK(glp->MatrixLoad3x2fNV); glp->MatrixLoad3x3fNV = (void APIENTRY (*)(GLenum matrixMode, const GLfloat *m)) ldg_find("glMatrixLoad3x3fNV", lib); GL_CHECK(glp->MatrixLoad3x3fNV); glp->MatrixLoadTranspose3x3fNV = (void APIENTRY (*)(GLenum matrixMode, const GLfloat *m)) ldg_find("glMatrixLoadTranspose3x3fNV", lib); GL_CHECK(glp->MatrixLoadTranspose3x3fNV); glp->MatrixMult3x2fNV = (void APIENTRY (*)(GLenum matrixMode, const GLfloat *m)) ldg_find("glMatrixMult3x2fNV", lib); GL_CHECK(glp->MatrixMult3x2fNV); glp->MatrixMult3x3fNV = (void APIENTRY (*)(GLenum matrixMode, const GLfloat *m)) ldg_find("glMatrixMult3x3fNV", lib); GL_CHECK(glp->MatrixMult3x3fNV); glp->MatrixMultTranspose3x3fNV = (void APIENTRY (*)(GLenum matrixMode, const GLfloat *m)) ldg_find("glMatrixMultTranspose3x3fNV", lib); GL_CHECK(glp->MatrixMultTranspose3x3fNV); glp->MemoryBarrierByRegion = (void APIENTRY (*)(GLbitfield barriers)) ldg_find("glMemoryBarrierByRegion", lib); GL_CHECK(glp->MemoryBarrierByRegion); glp->MultiDrawArraysIndirectBindlessCountNV = (void APIENTRY (*)(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount)) ldg_find("glMultiDrawArraysIndirectBindlessCountNV", lib); GL_CHECK(glp->MultiDrawArraysIndirectBindlessCountNV); glp->MultiDrawElementsIndirectBindlessCountNV = (void APIENTRY (*)(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount)) ldg_find("glMultiDrawElementsIndirectBindlessCountNV", lib); GL_CHECK(glp->MultiDrawElementsIndirectBindlessCountNV); glp->NamedBufferData = (void APIENTRY (*)(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage)) ldg_find("glNamedBufferData", lib); GL_CHECK(glp->NamedBufferData); glp->NamedBufferPageCommitmentARB = (void APIENTRY (*)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit)) ldg_find("glNamedBufferPageCommitmentARB", lib); GL_CHECK(glp->NamedBufferPageCommitmentARB); glp->NamedBufferPageCommitmentEXT = (void APIENTRY (*)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit)) ldg_find("glNamedBufferPageCommitmentEXT", lib); GL_CHECK(glp->NamedBufferPageCommitmentEXT); glp->NamedBufferStorage = (void APIENTRY (*)(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags)) ldg_find("glNamedBufferStorage", lib); GL_CHECK(glp->NamedBufferStorage); glp->NamedBufferSubData = (void APIENTRY (*)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)) ldg_find("glNamedBufferSubData", lib); GL_CHECK(glp->NamedBufferSubData); glp->NamedFramebufferDrawBuffer = (void APIENTRY (*)(GLuint framebuffer, GLenum buf)) ldg_find("glNamedFramebufferDrawBuffer", lib); GL_CHECK(glp->NamedFramebufferDrawBuffer); glp->NamedFramebufferDrawBuffers = (void APIENTRY (*)(GLuint framebuffer, GLsizei n, const GLenum *bufs)) ldg_find("glNamedFramebufferDrawBuffers", lib); GL_CHECK(glp->NamedFramebufferDrawBuffers); glp->NamedFramebufferParameteri = (void APIENTRY (*)(GLuint framebuffer, GLenum pname, GLint param)) ldg_find("glNamedFramebufferParameteri", lib); GL_CHECK(glp->NamedFramebufferParameteri); glp->NamedFramebufferReadBuffer = (void APIENTRY (*)(GLuint framebuffer, GLenum src)) ldg_find("glNamedFramebufferReadBuffer", lib); GL_CHECK(glp->NamedFramebufferReadBuffer); glp->NamedFramebufferRenderbuffer = (void APIENTRY (*)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) ldg_find("glNamedFramebufferRenderbuffer", lib); GL_CHECK(glp->NamedFramebufferRenderbuffer); glp->NamedFramebufferSampleLocationsfvNV = (void APIENTRY (*)(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v)) ldg_find("glNamedFramebufferSampleLocationsfvNV", lib); GL_CHECK(glp->NamedFramebufferSampleLocationsfvNV); glp->NamedFramebufferTexture = (void APIENTRY (*)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level)) ldg_find("glNamedFramebufferTexture", lib); GL_CHECK(glp->NamedFramebufferTexture); glp->NamedFramebufferTextureLayer = (void APIENTRY (*)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer)) ldg_find("glNamedFramebufferTextureLayer", lib); GL_CHECK(glp->NamedFramebufferTextureLayer); glp->NamedRenderbufferStorage = (void APIENTRY (*)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height)) ldg_find("glNamedRenderbufferStorage", lib); GL_CHECK(glp->NamedRenderbufferStorage); glp->NamedRenderbufferStorageMultisample = (void APIENTRY (*)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) ldg_find("glNamedRenderbufferStorageMultisample", lib); GL_CHECK(glp->NamedRenderbufferStorageMultisample); glp->PathGlyphIndexArrayNV = (GLenum APIENTRY (*)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale)) ldg_find("glPathGlyphIndexArrayNV", lib); GL_CHECK(glp->PathGlyphIndexArrayNV); glp->PathGlyphIndexRangeNV = (GLenum APIENTRY (*)(GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount)) ldg_find("glPathGlyphIndexRangeNV", lib); GL_CHECK(glp->PathGlyphIndexRangeNV); glp->PathMemoryGlyphIndexArrayNV = (GLenum APIENTRY (*)(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale)) ldg_find("glPathMemoryGlyphIndexArrayNV", lib); GL_CHECK(glp->PathMemoryGlyphIndexArrayNV); glp->PolygonOffsetClampEXT = (void APIENTRY (*)(GLfloat factor, GLfloat units, GLfloat clamp)) ldg_find("glPolygonOffsetClampEXT", lib); GL_CHECK(glp->PolygonOffsetClampEXT); glp->ProgramPathFragmentInputGenNV = (void APIENTRY (*)(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs)) ldg_find("glProgramPathFragmentInputGenNV", lib); GL_CHECK(glp->ProgramPathFragmentInputGenNV); glp->RasterSamplesEXT = (void APIENTRY (*)(GLuint samples, GLboolean32 fixedsamplelocations)) ldg_find("glRasterSamplesEXT", lib); GL_CHECK(glp->RasterSamplesEXT); glp->ReadnPixels = (void APIENTRY (*)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data)) ldg_find("glReadnPixels", lib); GL_CHECK(glp->ReadnPixels); glp->ResolveDepthValuesNV = (void APIENTRY (*)(void)) ldg_find("glResolveDepthValuesNV", lib); GL_CHECK(glp->ResolveDepthValuesNV); glp->StateCaptureNV = (void APIENTRY (*)(GLuint state, GLenum mode)) ldg_find("glStateCaptureNV", lib); GL_CHECK(glp->StateCaptureNV); glp->StencilThenCoverFillPathInstancedNV = (void APIENTRY (*)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)) ldg_find("glStencilThenCoverFillPathInstancedNV", lib); GL_CHECK(glp->StencilThenCoverFillPathInstancedNV); glp->StencilThenCoverFillPathNV = (void APIENTRY (*)(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode)) ldg_find("glStencilThenCoverFillPathNV", lib); GL_CHECK(glp->StencilThenCoverFillPathNV); glp->StencilThenCoverStrokePathInstancedNV = (void APIENTRY (*)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)) ldg_find("glStencilThenCoverStrokePathInstancedNV", lib); GL_CHECK(glp->StencilThenCoverStrokePathInstancedNV); glp->StencilThenCoverStrokePathNV = (void APIENTRY (*)(GLuint path, GLint reference, GLuint mask, GLenum coverMode)) ldg_find("glStencilThenCoverStrokePathNV", lib); GL_CHECK(glp->StencilThenCoverStrokePathNV); glp->SubpixelPrecisionBiasNV = (void APIENTRY (*)(GLuint xbits, GLuint ybits)) ldg_find("glSubpixelPrecisionBiasNV", lib); GL_CHECK(glp->SubpixelPrecisionBiasNV); glp->TextureBarrier = (void APIENTRY (*)(void)) ldg_find("glTextureBarrier", lib); GL_CHECK(glp->TextureBarrier); glp->TextureBuffer = (void APIENTRY (*)(GLuint texture, GLenum internalformat, GLuint buffer)) ldg_find("glTextureBuffer", lib); GL_CHECK(glp->TextureBuffer); glp->TextureBufferRange = (void APIENTRY (*)(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)) ldg_find("glTextureBufferRange", lib); GL_CHECK(glp->TextureBufferRange); glp->TextureParameterIiv = (void APIENTRY (*)(GLuint texture, GLenum pname, const GLint *params)) ldg_find("glTextureParameterIiv", lib); GL_CHECK(glp->TextureParameterIiv); glp->TextureParameterIuiv = (void APIENTRY (*)(GLuint texture, GLenum pname, const GLuint *params)) ldg_find("glTextureParameterIuiv", lib); GL_CHECK(glp->TextureParameterIuiv); glp->TextureParameterf = (void APIENTRY (*)(GLuint texture, GLenum pname, GLfloat param)) ldg_find("glTextureParameterf", lib); GL_CHECK(glp->TextureParameterf); glp->TextureParameterfv = (void APIENTRY (*)(GLuint texture, GLenum pname, const GLfloat *param)) ldg_find("glTextureParameterfv", lib); GL_CHECK(glp->TextureParameterfv); glp->TextureParameteri = (void APIENTRY (*)(GLuint texture, GLenum pname, GLint param)) ldg_find("glTextureParameteri", lib); GL_CHECK(glp->TextureParameteri); glp->TextureParameteriv = (void APIENTRY (*)(GLuint texture, GLenum pname, const GLint *param)) ldg_find("glTextureParameteriv", lib); GL_CHECK(glp->TextureParameteriv); glp->TextureStorage1D = (void APIENTRY (*)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width)) ldg_find("glTextureStorage1D", lib); GL_CHECK(glp->TextureStorage1D); glp->TextureStorage2D = (void APIENTRY (*)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) ldg_find("glTextureStorage2D", lib); GL_CHECK(glp->TextureStorage2D); glp->TextureStorage2DMultisample = (void APIENTRY (*)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations)) ldg_find("glTextureStorage2DMultisample", lib); GL_CHECK(glp->TextureStorage2DMultisample); glp->TextureStorage3D = (void APIENTRY (*)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) ldg_find("glTextureStorage3D", lib); GL_CHECK(glp->TextureStorage3D); glp->TextureStorage3DMultisample = (void APIENTRY (*)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations)) ldg_find("glTextureStorage3DMultisample", lib); GL_CHECK(glp->TextureStorage3DMultisample); glp->TextureSubImage1D = (void APIENTRY (*)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)) ldg_find("glTextureSubImage1D", lib); GL_CHECK(glp->TextureSubImage1D); glp->TextureSubImage2D = (void APIENTRY (*)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)) ldg_find("glTextureSubImage2D", lib); GL_CHECK(glp->TextureSubImage2D); glp->TextureSubImage3D = (void APIENTRY (*)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)) ldg_find("glTextureSubImage3D", lib); GL_CHECK(glp->TextureSubImage3D); glp->TransformFeedbackBufferBase = (void APIENTRY (*)(GLuint xfb, GLuint index, GLuint buffer)) ldg_find("glTransformFeedbackBufferBase", lib); GL_CHECK(glp->TransformFeedbackBufferBase); glp->TransformFeedbackBufferRange = (void APIENTRY (*)(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) ldg_find("glTransformFeedbackBufferRange", lib); GL_CHECK(glp->TransformFeedbackBufferRange); glp->UnmapNamedBuffer = (GLboolean APIENTRY (*)(GLuint buffer)) ldg_find("glUnmapNamedBuffer", lib); GL_CHECK(glp->UnmapNamedBuffer); glp->VertexArrayAttribBinding = (void APIENTRY (*)(GLuint vaobj, GLuint attribindex, GLuint bindingindex)) ldg_find("glVertexArrayAttribBinding", lib); GL_CHECK(glp->VertexArrayAttribBinding); glp->VertexArrayAttribFormat = (void APIENTRY (*)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset)) ldg_find("glVertexArrayAttribFormat", lib); GL_CHECK(glp->VertexArrayAttribFormat); glp->VertexArrayAttribIFormat = (void APIENTRY (*)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) ldg_find("glVertexArrayAttribIFormat", lib); GL_CHECK(glp->VertexArrayAttribIFormat); glp->VertexArrayAttribLFormat = (void APIENTRY (*)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) ldg_find("glVertexArrayAttribLFormat", lib); GL_CHECK(glp->VertexArrayAttribLFormat); glp->VertexArrayBindingDivisor = (void APIENTRY (*)(GLuint vaobj, GLuint bindingindex, GLuint divisor)) ldg_find("glVertexArrayBindingDivisor", lib); GL_CHECK(glp->VertexArrayBindingDivisor); glp->VertexArrayElementBuffer = (void APIENTRY (*)(GLuint vaobj, GLuint buffer)) ldg_find("glVertexArrayElementBuffer", lib); GL_CHECK(glp->VertexArrayElementBuffer); glp->VertexArrayVertexBuffer = (void APIENTRY (*)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)) ldg_find("glVertexArrayVertexBuffer", lib); GL_CHECK(glp->VertexArrayVertexBuffer); glp->VertexArrayVertexBuffers = (void APIENTRY (*)(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides)) ldg_find("glVertexArrayVertexBuffers", lib); GL_CHECK(glp->VertexArrayVertexBuffers); glp->OSMesaCreateContextAttribs = (OSMesaContext APIENTRY (*)(const GLint *attribList, OSMesaContext sharelist)) ldg_find("OSMesaCreateContextAttribs", lib); GL_CHECK(glp->OSMesaCreateContextAttribs); glp->SpecializeShader = (void APIENTRY (*)(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue)) ldg_find("glSpecializeShader", lib); GL_CHECK(glp->SpecializeShader); glp->SpecializeShaderARB = (void APIENTRY (*)(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue)) ldg_find("glSpecializeShaderARB", lib); GL_CHECK(glp->SpecializeShaderARB); glp->MultiDrawArraysIndirectCount = (void APIENTRY (*)(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)) ldg_find("glMultiDrawArraysIndirectCount", lib); GL_CHECK(glp->MultiDrawArraysIndirectCount); glp->MultiDrawElementsIndirectCount = (void APIENTRY (*)(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)) ldg_find("glMultiDrawElementsIndirectCount", lib); GL_CHECK(glp->MultiDrawElementsIndirectCount); glp->PolygonOffsetClamp = (void APIENTRY (*)(GLfloat factor, GLfloat units, GLfloat clamp)) ldg_find("glPolygonOffsetClamp", lib); GL_CHECK(glp->PolygonOffsetClamp); glp->PrimitiveBoundingBoxARB = (void APIENTRY (*)(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)) ldg_find("glPrimitiveBoundingBoxARB", lib); GL_CHECK(glp->PrimitiveBoundingBoxARB); glp->Uniform1i64ARB = (void APIENTRY (*)(GLint location, GLint64 x)) ldg_find("glUniform1i64ARB", lib); GL_CHECK(glp->Uniform1i64ARB); glp->Uniform2i64ARB = (void APIENTRY (*)(GLint location, GLint64 x, GLint64 y)) ldg_find("glUniform2i64ARB", lib); GL_CHECK(glp->Uniform2i64ARB); glp->Uniform3i64ARB = (void APIENTRY (*)(GLint location, GLint64 x, GLint64 y, GLint64 z)) ldg_find("glUniform3i64ARB", lib); GL_CHECK(glp->Uniform3i64ARB); glp->Uniform4i64ARB = (void APIENTRY (*)(GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w)) ldg_find("glUniform4i64ARB", lib); GL_CHECK(glp->Uniform4i64ARB); glp->Uniform1i64vARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLint64 *value)) ldg_find("glUniform1i64vARB", lib); GL_CHECK(glp->Uniform1i64vARB); glp->Uniform2i64vARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLint64 *value)) ldg_find("glUniform2i64vARB", lib); GL_CHECK(glp->Uniform2i64vARB); glp->Uniform3i64vARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLint64 *value)) ldg_find("glUniform3i64vARB", lib); GL_CHECK(glp->Uniform3i64vARB); glp->Uniform4i64vARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLint64 *value)) ldg_find("glUniform4i64vARB", lib); GL_CHECK(glp->Uniform4i64vARB); glp->Uniform1ui64ARB = (void APIENTRY (*)(GLint location, GLuint64 x)) ldg_find("glUniform1ui64ARB", lib); GL_CHECK(glp->Uniform1ui64ARB); glp->Uniform2ui64ARB = (void APIENTRY (*)(GLint location, GLuint64 x, GLuint64 y)) ldg_find("glUniform2ui64ARB", lib); GL_CHECK(glp->Uniform2ui64ARB); glp->Uniform3ui64ARB = (void APIENTRY (*)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z)) ldg_find("glUniform3ui64ARB", lib); GL_CHECK(glp->Uniform3ui64ARB); glp->Uniform4ui64ARB = (void APIENTRY (*)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w)) ldg_find("glUniform4ui64ARB", lib); GL_CHECK(glp->Uniform4ui64ARB); glp->Uniform1ui64vARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint64 *value)) ldg_find("glUniform1ui64vARB", lib); GL_CHECK(glp->Uniform1ui64vARB); glp->Uniform2ui64vARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint64 *value)) ldg_find("glUniform2ui64vARB", lib); GL_CHECK(glp->Uniform2ui64vARB); glp->Uniform3ui64vARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint64 *value)) ldg_find("glUniform3ui64vARB", lib); GL_CHECK(glp->Uniform3ui64vARB); glp->Uniform4ui64vARB = (void APIENTRY (*)(GLint location, GLsizei count, const GLuint64 *value)) ldg_find("glUniform4ui64vARB", lib); GL_CHECK(glp->Uniform4ui64vARB); glp->GetUniformi64vARB = (void APIENTRY (*)(GLuint program, GLint location, GLint64 *params)) ldg_find("glGetUniformi64vARB", lib); GL_CHECK(glp->GetUniformi64vARB); glp->GetUniformui64vARB = (void APIENTRY (*)(GLuint program, GLint location, GLuint64 *params)) ldg_find("glGetUniformui64vARB", lib); GL_CHECK(glp->GetUniformui64vARB); glp->GetnUniformi64vARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei bufSize, GLint64 *params)) ldg_find("glGetnUniformi64vARB", lib); GL_CHECK(glp->GetnUniformi64vARB); glp->GetnUniformui64vARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei bufSize, GLuint64 *params)) ldg_find("glGetnUniformui64vARB", lib); GL_CHECK(glp->GetnUniformui64vARB); glp->ProgramUniform1i64ARB = (void APIENTRY (*)(GLuint program, GLint location, GLint64 x)) ldg_find("glProgramUniform1i64ARB", lib); GL_CHECK(glp->ProgramUniform1i64ARB); glp->ProgramUniform2i64ARB = (void APIENTRY (*)(GLuint program, GLint location, GLint64 x, GLint64 y)) ldg_find("glProgramUniform2i64ARB", lib); GL_CHECK(glp->ProgramUniform2i64ARB); glp->ProgramUniform3i64ARB = (void APIENTRY (*)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z)) ldg_find("glProgramUniform3i64ARB", lib); GL_CHECK(glp->ProgramUniform3i64ARB); glp->ProgramUniform4i64ARB = (void APIENTRY (*)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w)) ldg_find("glProgramUniform4i64ARB", lib); GL_CHECK(glp->ProgramUniform4i64ARB); glp->ProgramUniform1i64vARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint64 *value)) ldg_find("glProgramUniform1i64vARB", lib); GL_CHECK(glp->ProgramUniform1i64vARB); glp->ProgramUniform2i64vARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint64 *value)) ldg_find("glProgramUniform2i64vARB", lib); GL_CHECK(glp->ProgramUniform2i64vARB); glp->ProgramUniform3i64vARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint64 *value)) ldg_find("glProgramUniform3i64vARB", lib); GL_CHECK(glp->ProgramUniform3i64vARB); glp->ProgramUniform4i64vARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLint64 *value)) ldg_find("glProgramUniform4i64vARB", lib); GL_CHECK(glp->ProgramUniform4i64vARB); glp->ProgramUniform1ui64ARB = (void APIENTRY (*)(GLuint program, GLint location, GLuint64 x)) ldg_find("glProgramUniform1ui64ARB", lib); GL_CHECK(glp->ProgramUniform1ui64ARB); glp->ProgramUniform2ui64ARB = (void APIENTRY (*)(GLuint program, GLint location, GLuint64 x, GLuint64 y)) ldg_find("glProgramUniform2ui64ARB", lib); GL_CHECK(glp->ProgramUniform2ui64ARB); glp->ProgramUniform3ui64ARB = (void APIENTRY (*)(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z)) ldg_find("glProgramUniform3ui64ARB", lib); GL_CHECK(glp->ProgramUniform3ui64ARB); glp->ProgramUniform4ui64ARB = (void APIENTRY (*)(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w)) ldg_find("glProgramUniform4ui64ARB", lib); GL_CHECK(glp->ProgramUniform4ui64ARB); glp->ProgramUniform1ui64vARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint64 *value)) ldg_find("glProgramUniform1ui64vARB", lib); GL_CHECK(glp->ProgramUniform1ui64vARB); glp->ProgramUniform2ui64vARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint64 *value)) ldg_find("glProgramUniform2ui64vARB", lib); GL_CHECK(glp->ProgramUniform2ui64vARB); glp->ProgramUniform3ui64vARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint64 *value)) ldg_find("glProgramUniform3ui64vARB", lib); GL_CHECK(glp->ProgramUniform3ui64vARB); glp->ProgramUniform4ui64vARB = (void APIENTRY (*)(GLuint program, GLint location, GLsizei count, const GLuint64 *value)) ldg_find("glProgramUniform4ui64vARB", lib); GL_CHECK(glp->ProgramUniform4ui64vARB); glp->MaxShaderCompilerThreadsARB = (void APIENTRY (*)(GLuint count)) ldg_find("glMaxShaderCompilerThreadsARB", lib); GL_CHECK(glp->MaxShaderCompilerThreadsARB); glp->FramebufferSampleLocationsfvARB = (void APIENTRY (*)(GLenum target, GLuint start, GLsizei count, const GLfloat *v)) ldg_find("glFramebufferSampleLocationsfvARB", lib); GL_CHECK(glp->FramebufferSampleLocationsfvARB); glp->NamedFramebufferSampleLocationsfvARB = (void APIENTRY (*)(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v)) ldg_find("glNamedFramebufferSampleLocationsfvARB", lib); GL_CHECK(glp->NamedFramebufferSampleLocationsfvARB); glp->EvaluateDepthValuesARB = (void APIENTRY (*)(void)) ldg_find("glEvaluateDepthValuesARB", lib); GL_CHECK(glp->EvaluateDepthValuesARB); glp->MaxShaderCompilerThreadsKHR = (void APIENTRY (*)(GLuint count)) ldg_find("glMaxShaderCompilerThreadsKHR", lib); GL_CHECK(glp->MaxShaderCompilerThreadsKHR); glp->BufferStorageExternalEXT = (void APIENTRY (*)(GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags)) ldg_find("glBufferStorageExternalEXT", lib); GL_CHECK(glp->BufferStorageExternalEXT); glp->NamedBufferStorageExternalEXT = (void APIENTRY (*)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags)) ldg_find("glNamedBufferStorageExternalEXT", lib); GL_CHECK(glp->NamedBufferStorageExternalEXT); glp->GetUnsignedBytevEXT = (void APIENTRY (*)(GLenum pname, GLubyte *data)) ldg_find("glGetUnsignedBytevEXT", lib); GL_CHECK(glp->GetUnsignedBytevEXT); glp->GetUnsignedBytei_vEXT = (void APIENTRY (*)(GLenum target, GLuint index, GLubyte *data)) ldg_find("glGetUnsignedBytei_vEXT", lib); GL_CHECK(glp->GetUnsignedBytei_vEXT); glp->DeleteMemoryObjectsEXT = (void APIENTRY (*)(GLsizei n, const GLuint *memoryObjects)) ldg_find("glDeleteMemoryObjectsEXT", lib); GL_CHECK(glp->DeleteMemoryObjectsEXT); glp->IsMemoryObjectEXT = (GLboolean APIENTRY (*)(GLuint memoryObject)) ldg_find("glIsMemoryObjectEXT", lib); GL_CHECK(glp->IsMemoryObjectEXT); glp->CreateMemoryObjectsEXT = (void APIENTRY (*)(GLsizei n, GLuint *memoryObjects)) ldg_find("glCreateMemoryObjectsEXT", lib); GL_CHECK(glp->CreateMemoryObjectsEXT); glp->MemoryObjectParameterivEXT = (void APIENTRY (*)(GLuint memoryObject, GLenum pname, const GLint *params)) ldg_find("glMemoryObjectParameterivEXT", lib); GL_CHECK(glp->MemoryObjectParameterivEXT); glp->GetMemoryObjectParameterivEXT = (void APIENTRY (*)(GLuint memoryObject, GLenum pname, GLint *params)) ldg_find("glGetMemoryObjectParameterivEXT", lib); GL_CHECK(glp->GetMemoryObjectParameterivEXT); glp->TexStorageMem2DEXT = (void APIENTRY (*)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset)) ldg_find("glTexStorageMem2DEXT", lib); GL_CHECK(glp->TexStorageMem2DEXT); glp->TexStorageMem2DMultisampleEXT = (void APIENTRY (*)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset)) ldg_find("glTexStorageMem2DMultisampleEXT", lib); GL_CHECK(glp->TexStorageMem2DMultisampleEXT); glp->TexStorageMem3DEXT = (void APIENTRY (*)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset)) ldg_find("glTexStorageMem3DEXT", lib); GL_CHECK(glp->TexStorageMem3DEXT); glp->TexStorageMem3DMultisampleEXT = (void APIENTRY (*)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset)) ldg_find("glTexStorageMem3DMultisampleEXT", lib); GL_CHECK(glp->TexStorageMem3DMultisampleEXT); glp->BufferStorageMemEXT = (void APIENTRY (*)(GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset)) ldg_find("glBufferStorageMemEXT", lib); GL_CHECK(glp->BufferStorageMemEXT); glp->TextureStorageMem2DEXT = (void APIENTRY (*)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset)) ldg_find("glTextureStorageMem2DEXT", lib); GL_CHECK(glp->TextureStorageMem2DEXT); glp->TextureStorageMem2DMultisampleEXT = (void APIENTRY (*)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset)) ldg_find("glTextureStorageMem2DMultisampleEXT", lib); GL_CHECK(glp->TextureStorageMem2DMultisampleEXT); glp->TextureStorageMem3DEXT = (void APIENTRY (*)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset)) ldg_find("glTextureStorageMem3DEXT", lib); GL_CHECK(glp->TextureStorageMem3DEXT); glp->TextureStorageMem3DMultisampleEXT = (void APIENTRY (*)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset)) ldg_find("glTextureStorageMem3DMultisampleEXT", lib); GL_CHECK(glp->TextureStorageMem3DMultisampleEXT); glp->NamedBufferStorageMemEXT = (void APIENTRY (*)(GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset)) ldg_find("glNamedBufferStorageMemEXT", lib); GL_CHECK(glp->NamedBufferStorageMemEXT); glp->TexStorageMem1DEXT = (void APIENTRY (*)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset)) ldg_find("glTexStorageMem1DEXT", lib); GL_CHECK(glp->TexStorageMem1DEXT); glp->TextureStorageMem1DEXT = (void APIENTRY (*)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset)) ldg_find("glTextureStorageMem1DEXT", lib); GL_CHECK(glp->TextureStorageMem1DEXT); glp->ImportMemoryFdEXT = (void APIENTRY (*)(GLuint memory, GLuint64 size, GLenum handleType, GLint fd)) ldg_find("glImportMemoryFdEXT", lib); GL_CHECK(glp->ImportMemoryFdEXT); glp->ImportMemoryWin32HandleEXT = (void APIENTRY (*)(GLuint memory, GLuint64 size, GLenum handleType, void *handle)) ldg_find("glImportMemoryWin32HandleEXT", lib); GL_CHECK(glp->ImportMemoryWin32HandleEXT); glp->ImportMemoryWin32NameEXT = (void APIENTRY (*)(GLuint memory, GLuint64 size, GLenum handleType, const void *name)) ldg_find("glImportMemoryWin32NameEXT", lib); GL_CHECK(glp->ImportMemoryWin32NameEXT); glp->GenSemaphoresEXT = (void APIENTRY (*)(GLsizei n, GLuint *semaphores)) ldg_find("glGenSemaphoresEXT", lib); GL_CHECK(glp->GenSemaphoresEXT); glp->DeleteSemaphoresEXT = (void APIENTRY (*)(GLsizei n, const GLuint *semaphores)) ldg_find("glDeleteSemaphoresEXT", lib); GL_CHECK(glp->DeleteSemaphoresEXT); glp->IsSemaphoreEXT = (GLboolean APIENTRY (*)(GLuint semaphore)) ldg_find("glIsSemaphoreEXT", lib); GL_CHECK(glp->IsSemaphoreEXT); glp->SemaphoreParameterui64vEXT = (void APIENTRY (*)(GLuint semaphore, GLenum pname, const GLuint64 *params)) ldg_find("glSemaphoreParameterui64vEXT", lib); GL_CHECK(glp->SemaphoreParameterui64vEXT); glp->GetSemaphoreParameterui64vEXT = (void APIENTRY (*)(GLuint semaphore, GLenum pname, GLuint64 *params)) ldg_find("glGetSemaphoreParameterui64vEXT", lib); GL_CHECK(glp->GetSemaphoreParameterui64vEXT); glp->WaitSemaphoreEXT = (void APIENTRY (*)(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts)) ldg_find("glWaitSemaphoreEXT", lib); GL_CHECK(glp->WaitSemaphoreEXT); glp->SignalSemaphoreEXT = (void APIENTRY (*)(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts)) ldg_find("glSignalSemaphoreEXT", lib); GL_CHECK(glp->SignalSemaphoreEXT); glp->ImportSemaphoreFdEXT = (void APIENTRY (*)(GLuint semaphore, GLenum handleType, GLint fd)) ldg_find("glImportSemaphoreFdEXT", lib); GL_CHECK(glp->ImportSemaphoreFdEXT); glp->ImportSemaphoreWin32HandleEXT = (void APIENTRY (*)(GLuint semaphore, GLenum handleType, void *handle)) ldg_find("glImportSemaphoreWin32HandleEXT", lib); GL_CHECK(glp->ImportSemaphoreWin32HandleEXT); glp->ImportSemaphoreWin32NameEXT = (void APIENTRY (*)(GLuint semaphore, GLenum handleType, const void *name)) ldg_find("glImportSemaphoreWin32NameEXT", lib); GL_CHECK(glp->ImportSemaphoreWin32NameEXT); glp->AcquireKeyedMutexWin32EXT = (GLboolean APIENTRY (*)(GLuint memory, GLuint64 key, GLuint timeout)) ldg_find("glAcquireKeyedMutexWin32EXT", lib); GL_CHECK(glp->AcquireKeyedMutexWin32EXT); glp->ReleaseKeyedMutexWin32EXT = (GLboolean APIENTRY (*)(GLuint memory, GLuint64 key)) ldg_find("glReleaseKeyedMutexWin32EXT", lib); GL_CHECK(glp->ReleaseKeyedMutexWin32EXT); glp->LGPUNamedBufferSubDataNVX = (void APIENTRY (*)(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)) ldg_find("glLGPUNamedBufferSubDataNVX", lib); GL_CHECK(glp->LGPUNamedBufferSubDataNVX); glp->LGPUCopyImageSubDataNVX = (void APIENTRY (*)(GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)) ldg_find("glLGPUCopyImageSubDataNVX", lib); GL_CHECK(glp->LGPUCopyImageSubDataNVX); glp->LGPUInterlockNVX = (void APIENTRY (*)(void)) ldg_find("glLGPUInterlockNVX", lib); GL_CHECK(glp->LGPUInterlockNVX); glp->AlphaToCoverageDitherControlNV = (void APIENTRY (*)(GLenum mode)) ldg_find("glAlphaToCoverageDitherControlNV", lib); GL_CHECK(glp->AlphaToCoverageDitherControlNV); glp->DrawVkImageNV = (void APIENTRY (*)(GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1)) ldg_find("glDrawVkImageNV", lib); GL_CHECK(glp->DrawVkImageNV); glp->GetVkProcAddrNV = (GLVULKANPROCNV APIENTRY (*)(const GLchar *name)) ldg_find("glGetVkProcAddrNV", lib); GL_CHECK(glp->GetVkProcAddrNV); glp->WaitVkSemaphoreNV = (void APIENTRY (*)(GLuint64 vkSemaphore)) ldg_find("glWaitVkSemaphoreNV", lib); GL_CHECK(glp->WaitVkSemaphoreNV); glp->SignalVkSemaphoreNV = (void APIENTRY (*)(GLuint64 vkSemaphore)) ldg_find("glSignalVkSemaphoreNV", lib); GL_CHECK(glp->SignalVkSemaphoreNV); glp->SignalVkFenceNV = (void APIENTRY (*)(GLuint64 vkFence)) ldg_find("glSignalVkFenceNV", lib); GL_CHECK(glp->SignalVkFenceNV); glp->RenderGpuMaskNV = (void APIENTRY (*)(GLbitfield mask)) ldg_find("glRenderGpuMaskNV", lib); GL_CHECK(glp->RenderGpuMaskNV); glp->MulticastBufferSubDataNV = (void APIENTRY (*)(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)) ldg_find("glMulticastBufferSubDataNV", lib); GL_CHECK(glp->MulticastBufferSubDataNV); glp->MulticastCopyBufferSubDataNV = (void APIENTRY (*)(GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)) ldg_find("glMulticastCopyBufferSubDataNV", lib); GL_CHECK(glp->MulticastCopyBufferSubDataNV); glp->MulticastCopyImageSubDataNV = (void APIENTRY (*)(GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)) ldg_find("glMulticastCopyImageSubDataNV", lib); GL_CHECK(glp->MulticastCopyImageSubDataNV); glp->MulticastBlitFramebufferNV = (void APIENTRY (*)(GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) ldg_find("glMulticastBlitFramebufferNV", lib); GL_CHECK(glp->MulticastBlitFramebufferNV); glp->MulticastFramebufferSampleLocationsfvNV = (void APIENTRY (*)(GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v)) ldg_find("glMulticastFramebufferSampleLocationsfvNV", lib); GL_CHECK(glp->MulticastFramebufferSampleLocationsfvNV); glp->MulticastBarrierNV = (void APIENTRY (*)(void)) ldg_find("glMulticastBarrierNV", lib); GL_CHECK(glp->MulticastBarrierNV); glp->MulticastWaitSyncNV = (void APIENTRY (*)(GLuint signalGpu, GLbitfield waitGpuMask)) ldg_find("glMulticastWaitSyncNV", lib); GL_CHECK(glp->MulticastWaitSyncNV); glp->MulticastGetQueryObjectivNV = (void APIENTRY (*)(GLuint gpu, GLuint id, GLenum pname, GLint *params)) ldg_find("glMulticastGetQueryObjectivNV", lib); GL_CHECK(glp->MulticastGetQueryObjectivNV); glp->MulticastGetQueryObjectuivNV = (void APIENTRY (*)(GLuint gpu, GLuint id, GLenum pname, GLuint *params)) ldg_find("glMulticastGetQueryObjectuivNV", lib); GL_CHECK(glp->MulticastGetQueryObjectuivNV); glp->MulticastGetQueryObjecti64vNV = (void APIENTRY (*)(GLuint gpu, GLuint id, GLenum pname, GLint64 *params)) ldg_find("glMulticastGetQueryObjecti64vNV", lib); GL_CHECK(glp->MulticastGetQueryObjecti64vNV); glp->MulticastGetQueryObjectui64vNV = (void APIENTRY (*)(GLuint gpu, GLuint id, GLenum pname, GLuint64 *params)) ldg_find("glMulticastGetQueryObjectui64vNV", lib); GL_CHECK(glp->MulticastGetQueryObjectui64vNV); glp->QueryResourceNV = (GLint APIENTRY (*)(GLenum queryType, GLint tagId, GLuint bufSize, GLint *buffer)) ldg_find("glQueryResourceNV", lib); GL_CHECK(glp->QueryResourceNV); glp->GenQueryResourceTagNV = (void APIENTRY (*)(GLsizei n, GLint *tagIds)) ldg_find("glGenQueryResourceTagNV", lib); GL_CHECK(glp->GenQueryResourceTagNV); glp->DeleteQueryResourceTagNV = (void APIENTRY (*)(GLsizei n, const GLint *tagIds)) ldg_find("glDeleteQueryResourceTagNV", lib); GL_CHECK(glp->DeleteQueryResourceTagNV); glp->QueryResourceTagNV = (void APIENTRY (*)(GLint tagId, const GLchar *tagString)) ldg_find("glQueryResourceTagNV", lib); GL_CHECK(glp->QueryResourceTagNV); glp->FramebufferSamplePositionsfvAMD = (void APIENTRY (*)(GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values)) ldg_find("glFramebufferSamplePositionsfvAMD", lib); GL_CHECK(glp->FramebufferSamplePositionsfvAMD); glp->NamedFramebufferSamplePositionsfvAMD = (void APIENTRY (*)(GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values)) ldg_find("glNamedFramebufferSamplePositionsfvAMD", lib); GL_CHECK(glp->NamedFramebufferSamplePositionsfvAMD); glp->GetFramebufferParameterfvAMD = (void APIENTRY (*)(GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values)) ldg_find("glGetFramebufferParameterfvAMD", lib); GL_CHECK(glp->GetFramebufferParameterfvAMD); glp->GetNamedFramebufferParameterfvAMD = (void APIENTRY (*)(GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values)) ldg_find("glGetNamedFramebufferParameterfvAMD", lib); GL_CHECK(glp->GetNamedFramebufferParameterfvAMD); glp->WindowRectanglesEXT = (void APIENTRY (*)(GLenum mode, GLsizei count, const GLint *box)) ldg_find("glWindowRectanglesEXT", lib); GL_CHECK(glp->WindowRectanglesEXT); glp->ApplyFramebufferAttachmentCMAAINTEL = (void APIENTRY (*)(void)) ldg_find("glApplyFramebufferAttachmentCMAAINTEL", lib); GL_CHECK(glp->ApplyFramebufferAttachmentCMAAINTEL); glp->ViewportSwizzleNV = (void APIENTRY (*)(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew)) ldg_find("glViewportSwizzleNV", lib); GL_CHECK(glp->ViewportSwizzleNV); glp->ViewportPositionWScaleNV = (void APIENTRY (*)(GLuint index, GLfloat xcoeff, GLfloat ycoeff)) ldg_find("glViewportPositionWScaleNV", lib); GL_CHECK(glp->ViewportPositionWScaleNV); glp->ConservativeRasterParameterfNV = (void APIENTRY (*)(GLenum pname, GLfloat value)) ldg_find("glConservativeRasterParameterfNV", lib); GL_CHECK(glp->ConservativeRasterParameterfNV); glp->ConservativeRasterParameteriNV = (void APIENTRY (*)(GLenum pname, GLint param)) ldg_find("glConservativeRasterParameteriNV", lib); GL_CHECK(glp->ConservativeRasterParameteriNV); gl.__numfuncs = 3034; gl.__old_OSMesaGetProcAddress = gl.OSMesaGetProcAddress; gl.OSMesaGetProcAddress = real_OSMesaGetProcAddress; return result; } #undef GL_CHECK struct gl_public *ldg_load_osmesa(const char *libname, _WORD *gl) { LDG *lib; struct gl_public *pub = NULL; size_t len; if (libname == NULL) libname = "osmesa.ldg"; if (gl == NULL) gl = ldg_global; lib = ldg_open(libname, gl); if (lib != NULL) { long APIENTRY (*glInit)(void *) = (long APIENTRY (*)(void *))ldg_find("glInit", lib); if (glInit) { len = (*glInit)(NULL); } else { len = sizeof(*pub); } pub = (struct gl_public *)calloc(1, len); if (pub) { pub->m_alloc = malloc; pub->m_free = free; if (glInit) (*glInit)(pub); pub->libhandle = lib; ldg_init_osmesa(lib); } else { ldg_close(lib, gl); } } return pub; } void ldg_unload_osmesa(struct gl_public *pub, _WORD *gl) { if (pub != NULL) { if (pub->libhandle != NULL) { if (gl == NULL) gl = ldg_global; ldg_close((LDG *)pub->libhandle, gl); } pub->m_free(pub); } } #ifdef TEST #include #include int main(void) { struct gl_public *pub; OSMESAproc p; OSMesaContext ctx; void *buffer; int width = 32; int height = 32; pub = ldg_load_osmesa(0, 0); if (pub == NULL) pub = ldg_load_osmesa("c:/gemsys/ldg/osmesa.ldg", 0); if (pub == NULL) { fprintf(stderr, "osmesa.ldg not found\n"); return 1; } ctx = gl.OSMesaCreateContextExt(OSMESA_RGB, 16, 0, 0, NULL); if (ctx == NULL) { fprintf(stderr, "can't create context\n"); return 1; } buffer = malloc(width * height * 4); gl.OSMesaMakeCurrent(ctx, buffer, OSMESA_RGB, width, height); printf("GL_RENDERER = %s\n", (const char *) gl.GetString(GL_RENDERER)); printf("GL_VERSION = %s\n", (const char *) gl.GetString(GL_VERSION)); printf("GL_VENDOR = %s\n", (const char *) gl.GetString(GL_VENDOR)); printf("GL_EXTENSIONS = %s\n", (const char *) gl.GetString(GL_EXTENSIONS)); p = gl.OSMesaGetProcAddress("OSMesaColorClamp"); printf("OSMesaColorClamp : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaCreateContext"); printf("OSMesaCreateContext : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaCreateContextAttribs"); printf("OSMesaCreateContextAttribs : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaCreateContextExt"); printf("OSMesaCreateContextExt : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaCreateLDG"); printf("OSMesaCreateLDG : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaDestroyContext"); printf("OSMesaDestroyContext : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaDestroyLDG"); printf("OSMesaDestroyLDG : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaGetColorBuffer"); printf("OSMesaGetColorBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaGetCurrentContext"); printf("OSMesaGetCurrentContext : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaGetDepthBuffer"); printf("OSMesaGetDepthBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaGetIntegerv"); printf("OSMesaGetIntegerv : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaGetProcAddress"); printf("OSMesaGetProcAddress : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaMakeCurrent"); printf("OSMesaMakeCurrent : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaPixelStore"); printf("OSMesaPixelStore : %p\n", p); p = gl.OSMesaGetProcAddress("OSMesaPostprocess"); printf("OSMesaPostprocess : %p\n", p); p = gl.OSMesaGetProcAddress("exception_error"); printf("exception_error : %p\n", p); p = gl.OSMesaGetProcAddress("glAccum"); printf("glAccum : %p\n", p); p = gl.OSMesaGetProcAddress("glAccumxOES"); printf("glAccumxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glAcquireKeyedMutexWin32EXT"); printf("glAcquireKeyedMutexWin32EXT : %p\n", p); p = gl.OSMesaGetProcAddress("glActiveProgramEXT"); printf("glActiveProgramEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glActiveShaderProgram"); printf("glActiveShaderProgram : %p\n", p); p = gl.OSMesaGetProcAddress("glActiveStencilFaceEXT"); printf("glActiveStencilFaceEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glActiveTexture"); printf("glActiveTexture : %p\n", p); p = gl.OSMesaGetProcAddress("glActiveTextureARB"); printf("glActiveTextureARB : %p\n", p); p = gl.OSMesaGetProcAddress("glActiveVaryingNV"); printf("glActiveVaryingNV : %p\n", p); p = gl.OSMesaGetProcAddress("glAddSwapHintRectWIN"); printf("glAddSwapHintRectWIN : %p\n", p); p = gl.OSMesaGetProcAddress("glAlphaFragmentOp1ATI"); printf("glAlphaFragmentOp1ATI : %p\n", p); p = gl.OSMesaGetProcAddress("glAlphaFragmentOp2ATI"); printf("glAlphaFragmentOp2ATI : %p\n", p); p = gl.OSMesaGetProcAddress("glAlphaFragmentOp3ATI"); printf("glAlphaFragmentOp3ATI : %p\n", p); p = gl.OSMesaGetProcAddress("glAlphaFunc"); printf("glAlphaFunc : %p\n", p); p = gl.OSMesaGetProcAddress("glAlphaFuncxOES"); printf("glAlphaFuncxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glAlphaToCoverageDitherControlNV"); printf("glAlphaToCoverageDitherControlNV: %p\n", p); p = gl.OSMesaGetProcAddress("glApplyFramebufferAttachmentCMAAINTEL"); printf("glApplyFramebufferAttachmentCMAAINTEL: %p\n", p); p = gl.OSMesaGetProcAddress("glApplyTextureEXT"); printf("glApplyTextureEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glAreProgramsResidentNV"); printf("glAreProgramsResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glAreTexturesResident"); printf("glAreTexturesResident : %p\n", p); p = gl.OSMesaGetProcAddress("glAreTexturesResidentEXT"); printf("glAreTexturesResidentEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glArrayElement"); printf("glArrayElement : %p\n", p); p = gl.OSMesaGetProcAddress("glArrayElementEXT"); printf("glArrayElementEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glArrayObjectATI"); printf("glArrayObjectATI : %p\n", p); p = gl.OSMesaGetProcAddress("glAsyncMarkerSGIX"); printf("glAsyncMarkerSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glAttachObjectARB"); printf("glAttachObjectARB : %p\n", p); p = gl.OSMesaGetProcAddress("glAttachShader"); printf("glAttachShader : %p\n", p); p = gl.OSMesaGetProcAddress("glBegin"); printf("glBegin : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginConditionalRender"); printf("glBeginConditionalRender : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginConditionalRenderNV"); printf("glBeginConditionalRenderNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginConditionalRenderNVX"); printf("glBeginConditionalRenderNVX : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginFragmentShaderATI"); printf("glBeginFragmentShaderATI : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginOcclusionQueryNV"); printf("glBeginOcclusionQueryNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginPerfMonitorAMD"); printf("glBeginPerfMonitorAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginPerfQueryINTEL"); printf("glBeginPerfQueryINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginQuery"); printf("glBeginQuery : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginQueryARB"); printf("glBeginQueryARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginQueryIndexed"); printf("glBeginQueryIndexed : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginTransformFeedback"); printf("glBeginTransformFeedback : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginTransformFeedbackEXT"); printf("glBeginTransformFeedbackEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginTransformFeedbackNV"); printf("glBeginTransformFeedbackNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginVertexShaderEXT"); printf("glBeginVertexShaderEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBeginVideoCaptureNV"); printf("glBeginVideoCaptureNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBindAttribLocation"); printf("glBindAttribLocation : %p\n", p); p = gl.OSMesaGetProcAddress("glBindAttribLocationARB"); printf("glBindAttribLocationARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBuffer"); printf("glBindBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferARB"); printf("glBindBufferARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferBase"); printf("glBindBufferBase : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferBaseEXT"); printf("glBindBufferBaseEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferBaseNV"); printf("glBindBufferBaseNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferOffsetEXT"); printf("glBindBufferOffsetEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferOffsetNV"); printf("glBindBufferOffsetNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferRange"); printf("glBindBufferRange : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferRangeEXT"); printf("glBindBufferRangeEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBufferRangeNV"); printf("glBindBufferRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBuffersBase"); printf("glBindBuffersBase : %p\n", p); p = gl.OSMesaGetProcAddress("glBindBuffersRange"); printf("glBindBuffersRange : %p\n", p); p = gl.OSMesaGetProcAddress("glBindFragDataLocation"); printf("glBindFragDataLocation : %p\n", p); p = gl.OSMesaGetProcAddress("glBindFragDataLocationEXT"); printf("glBindFragDataLocationEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindFragDataLocationIndexed"); printf("glBindFragDataLocationIndexed : %p\n", p); p = gl.OSMesaGetProcAddress("glBindFragmentShaderATI"); printf("glBindFragmentShaderATI : %p\n", p); p = gl.OSMesaGetProcAddress("glBindFramebuffer"); printf("glBindFramebuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glBindFramebufferEXT"); printf("glBindFramebufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindImageTexture"); printf("glBindImageTexture : %p\n", p); p = gl.OSMesaGetProcAddress("glBindImageTextureEXT"); printf("glBindImageTextureEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindImageTextures"); printf("glBindImageTextures : %p\n", p); p = gl.OSMesaGetProcAddress("glBindLightParameterEXT"); printf("glBindLightParameterEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindMaterialParameterEXT"); printf("glBindMaterialParameterEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindMultiTextureEXT"); printf("glBindMultiTextureEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindParameterEXT"); printf("glBindParameterEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindProgramARB"); printf("glBindProgramARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBindProgramNV"); printf("glBindProgramNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBindProgramPipeline"); printf("glBindProgramPipeline : %p\n", p); p = gl.OSMesaGetProcAddress("glBindRenderbuffer"); printf("glBindRenderbuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glBindRenderbufferEXT"); printf("glBindRenderbufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindSampler"); printf("glBindSampler : %p\n", p); p = gl.OSMesaGetProcAddress("glBindSamplers"); printf("glBindSamplers : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTexGenParameterEXT"); printf("glBindTexGenParameterEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTexture"); printf("glBindTexture : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTextureEXT"); printf("glBindTextureEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTextureUnit"); printf("glBindTextureUnit : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTextureUnitParameterEXT"); printf("glBindTextureUnitParameterEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTextures"); printf("glBindTextures : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTransformFeedback"); printf("glBindTransformFeedback : %p\n", p); p = gl.OSMesaGetProcAddress("glBindTransformFeedbackNV"); printf("glBindTransformFeedbackNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBindVertexArray"); printf("glBindVertexArray : %p\n", p); p = gl.OSMesaGetProcAddress("glBindVertexArrayAPPLE"); printf("glBindVertexArrayAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glBindVertexBuffer"); printf("glBindVertexBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glBindVertexBuffers"); printf("glBindVertexBuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glBindVertexShaderEXT"); printf("glBindVertexShaderEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBindVideoCaptureStreamBufferNV"); printf("glBindVideoCaptureStreamBufferNV: %p\n", p); p = gl.OSMesaGetProcAddress("glBindVideoCaptureStreamTextureNV"); printf("glBindVideoCaptureStreamTextureNV: %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3bEXT"); printf("glBinormal3bEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3bvEXT"); printf("glBinormal3bvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3dEXT"); printf("glBinormal3dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3dvEXT"); printf("glBinormal3dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3fEXT"); printf("glBinormal3fEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3fvEXT"); printf("glBinormal3fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3iEXT"); printf("glBinormal3iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3ivEXT"); printf("glBinormal3ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3sEXT"); printf("glBinormal3sEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormal3svEXT"); printf("glBinormal3svEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBinormalPointerEXT"); printf("glBinormalPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBitmap"); printf("glBitmap : %p\n", p); p = gl.OSMesaGetProcAddress("glBitmapxOES"); printf("glBitmapxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendBarrierKHR"); printf("glBlendBarrierKHR : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendBarrierNV"); printf("glBlendBarrierNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendColor"); printf("glBlendColor : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendColorEXT"); printf("glBlendColorEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendColorxOES"); printf("glBlendColorxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquation"); printf("glBlendEquation : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationEXT"); printf("glBlendEquationEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationIndexedAMD"); printf("glBlendEquationIndexedAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationSeparate"); printf("glBlendEquationSeparate : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationSeparateATI"); printf("glBlendEquationSeparateATI : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationSeparateEXT"); printf("glBlendEquationSeparateEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationSeparateIndexedAMD"); printf("glBlendEquationSeparateIndexedAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationSeparatei"); printf("glBlendEquationSeparatei : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationSeparateiARB"); printf("glBlendEquationSeparateiARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationi"); printf("glBlendEquationi : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendEquationiARB"); printf("glBlendEquationiARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFunc"); printf("glBlendFunc : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFuncIndexedAMD"); printf("glBlendFuncIndexedAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFuncSeparate"); printf("glBlendFuncSeparate : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFuncSeparateEXT"); printf("glBlendFuncSeparateEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFuncSeparateINGR"); printf("glBlendFuncSeparateINGR : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFuncSeparateIndexedAMD"); printf("glBlendFuncSeparateIndexedAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFuncSeparatei"); printf("glBlendFuncSeparatei : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFuncSeparateiARB"); printf("glBlendFuncSeparateiARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFunci"); printf("glBlendFunci : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendFunciARB"); printf("glBlendFunciARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBlendParameteriNV"); printf("glBlendParameteriNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBlitFramebuffer"); printf("glBlitFramebuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glBlitFramebufferEXT"); printf("glBlitFramebufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBlitNamedFramebuffer"); printf("glBlitNamedFramebuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferAddressRangeNV"); printf("glBufferAddressRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferData"); printf("glBufferData : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferDataARB"); printf("glBufferDataARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferPageCommitmentARB"); printf("glBufferPageCommitmentARB : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferParameteriAPPLE"); printf("glBufferParameteriAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferStorage"); printf("glBufferStorage : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferStorageExternalEXT"); printf("glBufferStorageExternalEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferStorageMemEXT"); printf("glBufferStorageMemEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferSubData"); printf("glBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glBufferSubDataARB"); printf("glBufferSubDataARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCallCommandListNV"); printf("glCallCommandListNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCallList"); printf("glCallList : %p\n", p); p = gl.OSMesaGetProcAddress("glCallLists"); printf("glCallLists : %p\n", p); p = gl.OSMesaGetProcAddress("glCheckFramebufferStatus"); printf("glCheckFramebufferStatus : %p\n", p); p = gl.OSMesaGetProcAddress("glCheckFramebufferStatusEXT"); printf("glCheckFramebufferStatusEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCheckNamedFramebufferStatus"); printf("glCheckNamedFramebufferStatus : %p\n", p); p = gl.OSMesaGetProcAddress("glCheckNamedFramebufferStatusEXT"); printf("glCheckNamedFramebufferStatusEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glClampColor"); printf("glClampColor : %p\n", p); p = gl.OSMesaGetProcAddress("glClampColorARB"); printf("glClampColorARB : %p\n", p); p = gl.OSMesaGetProcAddress("glClear"); printf("glClear : %p\n", p); p = gl.OSMesaGetProcAddress("glClearAccum"); printf("glClearAccum : %p\n", p); p = gl.OSMesaGetProcAddress("glClearAccumxOES"); printf("glClearAccumxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glClearBufferData"); printf("glClearBufferData : %p\n", p); p = gl.OSMesaGetProcAddress("glClearBufferSubData"); printf("glClearBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glClearBufferfi"); printf("glClearBufferfi : %p\n", p); p = gl.OSMesaGetProcAddress("glClearBufferfv"); printf("glClearBufferfv : %p\n", p); p = gl.OSMesaGetProcAddress("glClearBufferiv"); printf("glClearBufferiv : %p\n", p); p = gl.OSMesaGetProcAddress("glClearBufferuiv"); printf("glClearBufferuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glClearColor"); printf("glClearColor : %p\n", p); p = gl.OSMesaGetProcAddress("glClearColorIiEXT"); printf("glClearColorIiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glClearColorIuiEXT"); printf("glClearColorIuiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glClearColorxOES"); printf("glClearColorxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glClearDebugLogMESA"); printf("glClearDebugLogMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glClearDepth"); printf("glClearDepth : %p\n", p); p = gl.OSMesaGetProcAddress("glClearDepthdNV"); printf("glClearDepthdNV : %p\n", p); p = gl.OSMesaGetProcAddress("glClearDepthf"); printf("glClearDepthf : %p\n", p); p = gl.OSMesaGetProcAddress("glClearDepthfOES"); printf("glClearDepthfOES : %p\n", p); p = gl.OSMesaGetProcAddress("glClearDepthxOES"); printf("glClearDepthxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glClearIndex"); printf("glClearIndex : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedBufferData"); printf("glClearNamedBufferData : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedBufferDataEXT"); printf("glClearNamedBufferDataEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedBufferSubData"); printf("glClearNamedBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedBufferSubDataEXT"); printf("glClearNamedBufferSubDataEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedFramebufferfi"); printf("glClearNamedFramebufferfi : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedFramebufferfv"); printf("glClearNamedFramebufferfv : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedFramebufferiv"); printf("glClearNamedFramebufferiv : %p\n", p); p = gl.OSMesaGetProcAddress("glClearNamedFramebufferuiv"); printf("glClearNamedFramebufferuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glClearStencil"); printf("glClearStencil : %p\n", p); p = gl.OSMesaGetProcAddress("glClearTexImage"); printf("glClearTexImage : %p\n", p); p = gl.OSMesaGetProcAddress("glClearTexSubImage"); printf("glClearTexSubImage : %p\n", p); p = gl.OSMesaGetProcAddress("glClientActiveTexture"); printf("glClientActiveTexture : %p\n", p); p = gl.OSMesaGetProcAddress("glClientActiveTextureARB"); printf("glClientActiveTextureARB : %p\n", p); p = gl.OSMesaGetProcAddress("glClientActiveVertexStreamATI"); printf("glClientActiveVertexStreamATI : %p\n", p); p = gl.OSMesaGetProcAddress("glClientAttribDefaultEXT"); printf("glClientAttribDefaultEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glClientWaitSync"); printf("glClientWaitSync : %p\n", p); p = gl.OSMesaGetProcAddress("glClipControl"); printf("glClipControl : %p\n", p); p = gl.OSMesaGetProcAddress("glClipPlane"); printf("glClipPlane : %p\n", p); p = gl.OSMesaGetProcAddress("glClipPlanefOES"); printf("glClipPlanefOES : %p\n", p); p = gl.OSMesaGetProcAddress("glClipPlanexOES"); printf("glClipPlanexOES : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3b"); printf("glColor3b : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3bv"); printf("glColor3bv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3d"); printf("glColor3d : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3dv"); printf("glColor3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3f"); printf("glColor3f : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3fVertex3fSUN"); printf("glColor3fVertex3fSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3fVertex3fvSUN"); printf("glColor3fVertex3fvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3fv"); printf("glColor3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3hNV"); printf("glColor3hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3hvNV"); printf("glColor3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3i"); printf("glColor3i : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3iv"); printf("glColor3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3s"); printf("glColor3s : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3sv"); printf("glColor3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3ub"); printf("glColor3ub : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3ubv"); printf("glColor3ubv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3ui"); printf("glColor3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3uiv"); printf("glColor3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3us"); printf("glColor3us : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3usv"); printf("glColor3usv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3xOES"); printf("glColor3xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glColor3xvOES"); printf("glColor3xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4b"); printf("glColor4b : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4bv"); printf("glColor4bv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4d"); printf("glColor4d : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4dv"); printf("glColor4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4f"); printf("glColor4f : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4fNormal3fVertex3fSUN"); printf("glColor4fNormal3fVertex3fSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4fNormal3fVertex3fvSUN"); printf("glColor4fNormal3fVertex3fvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4fv"); printf("glColor4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4hNV"); printf("glColor4hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4hvNV"); printf("glColor4hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4i"); printf("glColor4i : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4iv"); printf("glColor4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4s"); printf("glColor4s : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4sv"); printf("glColor4sv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4ub"); printf("glColor4ub : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4ubVertex2fSUN"); printf("glColor4ubVertex2fSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4ubVertex2fvSUN"); printf("glColor4ubVertex2fvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4ubVertex3fSUN"); printf("glColor4ubVertex3fSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4ubVertex3fvSUN"); printf("glColor4ubVertex3fvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4ubv"); printf("glColor4ubv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4ui"); printf("glColor4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4uiv"); printf("glColor4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4us"); printf("glColor4us : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4usv"); printf("glColor4usv : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4xOES"); printf("glColor4xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glColor4xvOES"); printf("glColor4xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glColorFormatNV"); printf("glColorFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glColorFragmentOp1ATI"); printf("glColorFragmentOp1ATI : %p\n", p); p = gl.OSMesaGetProcAddress("glColorFragmentOp2ATI"); printf("glColorFragmentOp2ATI : %p\n", p); p = gl.OSMesaGetProcAddress("glColorFragmentOp3ATI"); printf("glColorFragmentOp3ATI : %p\n", p); p = gl.OSMesaGetProcAddress("glColorMask"); printf("glColorMask : %p\n", p); p = gl.OSMesaGetProcAddress("glColorMaskIndexedEXT"); printf("glColorMaskIndexedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glColorMaski"); printf("glColorMaski : %p\n", p); p = gl.OSMesaGetProcAddress("glColorMaterial"); printf("glColorMaterial : %p\n", p); p = gl.OSMesaGetProcAddress("glColorP3ui"); printf("glColorP3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glColorP3uiv"); printf("glColorP3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glColorP4ui"); printf("glColorP4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glColorP4uiv"); printf("glColorP4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glColorPointer"); printf("glColorPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glColorPointerEXT"); printf("glColorPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glColorPointerListIBM"); printf("glColorPointerListIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glColorPointervINTEL"); printf("glColorPointervINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glColorSubTable"); printf("glColorSubTable : %p\n", p); p = gl.OSMesaGetProcAddress("glColorSubTableEXT"); printf("glColorSubTableEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glColorTable"); printf("glColorTable : %p\n", p); p = gl.OSMesaGetProcAddress("glColorTableEXT"); printf("glColorTableEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glColorTableParameterfv"); printf("glColorTableParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glColorTableParameterfvSGI"); printf("glColorTableParameterfvSGI : %p\n", p); p = gl.OSMesaGetProcAddress("glColorTableParameteriv"); printf("glColorTableParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glColorTableParameterivSGI"); printf("glColorTableParameterivSGI : %p\n", p); p = gl.OSMesaGetProcAddress("glColorTableSGI"); printf("glColorTableSGI : %p\n", p); p = gl.OSMesaGetProcAddress("glCombinerInputNV"); printf("glCombinerInputNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCombinerOutputNV"); printf("glCombinerOutputNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCombinerParameterfNV"); printf("glCombinerParameterfNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCombinerParameterfvNV"); printf("glCombinerParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCombinerParameteriNV"); printf("glCombinerParameteriNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCombinerParameterivNV"); printf("glCombinerParameterivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCombinerStageParameterfvNV"); printf("glCombinerStageParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCommandListSegmentsNV"); printf("glCommandListSegmentsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCompileCommandListNV"); printf("glCompileCommandListNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCompileShader"); printf("glCompileShader : %p\n", p); p = gl.OSMesaGetProcAddress("glCompileShaderARB"); printf("glCompileShaderARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompileShaderIncludeARB"); printf("glCompileShaderIncludeARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedMultiTexImage1DEXT"); printf("glCompressedMultiTexImage1DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedMultiTexImage2DEXT"); printf("glCompressedMultiTexImage2DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedMultiTexImage3DEXT"); printf("glCompressedMultiTexImage3DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedMultiTexSubImage1DEXT"); printf("glCompressedMultiTexSubImage1DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedMultiTexSubImage2DEXT"); printf("glCompressedMultiTexSubImage2DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedMultiTexSubImage3DEXT"); printf("glCompressedMultiTexSubImage3DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexImage1D"); printf("glCompressedTexImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexImage1DARB"); printf("glCompressedTexImage1DARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexImage2D"); printf("glCompressedTexImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexImage2DARB"); printf("glCompressedTexImage2DARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexImage3D"); printf("glCompressedTexImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexImage3DARB"); printf("glCompressedTexImage3DARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexSubImage1D"); printf("glCompressedTexSubImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexSubImage1DARB"); printf("glCompressedTexSubImage1DARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexSubImage2D"); printf("glCompressedTexSubImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexSubImage2DARB"); printf("glCompressedTexSubImage2DARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexSubImage3D"); printf("glCompressedTexSubImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTexSubImage3DARB"); printf("glCompressedTexSubImage3DARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureImage1DEXT"); printf("glCompressedTextureImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureImage2DEXT"); printf("glCompressedTextureImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureImage3DEXT"); printf("glCompressedTextureImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureSubImage1D"); printf("glCompressedTextureSubImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureSubImage1DEXT"); printf("glCompressedTextureSubImage1DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureSubImage2D"); printf("glCompressedTextureSubImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureSubImage2DEXT"); printf("glCompressedTextureSubImage2DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureSubImage3D"); printf("glCompressedTextureSubImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glCompressedTextureSubImage3DEXT"); printf("glCompressedTextureSubImage3DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glConservativeRasterParameterfNV"); printf("glConservativeRasterParameterfNV: %p\n", p); p = gl.OSMesaGetProcAddress("glConservativeRasterParameteriNV"); printf("glConservativeRasterParameteriNV: %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionFilter1D"); printf("glConvolutionFilter1D : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionFilter1DEXT"); printf("glConvolutionFilter1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionFilter2D"); printf("glConvolutionFilter2D : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionFilter2DEXT"); printf("glConvolutionFilter2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameterf"); printf("glConvolutionParameterf : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameterfEXT"); printf("glConvolutionParameterfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameterfv"); printf("glConvolutionParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameterfvEXT"); printf("glConvolutionParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameteri"); printf("glConvolutionParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameteriEXT"); printf("glConvolutionParameteriEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameteriv"); printf("glConvolutionParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameterivEXT"); printf("glConvolutionParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameterxOES"); printf("glConvolutionParameterxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glConvolutionParameterxvOES"); printf("glConvolutionParameterxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyBufferSubData"); printf("glCopyBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyColorSubTable"); printf("glCopyColorSubTable : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyColorSubTableEXT"); printf("glCopyColorSubTableEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyColorTable"); printf("glCopyColorTable : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyColorTableSGI"); printf("glCopyColorTableSGI : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyConvolutionFilter1D"); printf("glCopyConvolutionFilter1D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyConvolutionFilter1DEXT"); printf("glCopyConvolutionFilter1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyConvolutionFilter2D"); printf("glCopyConvolutionFilter2D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyConvolutionFilter2DEXT"); printf("glCopyConvolutionFilter2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyImageSubData"); printf("glCopyImageSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyImageSubDataNV"); printf("glCopyImageSubDataNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyMultiTexImage1DEXT"); printf("glCopyMultiTexImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyMultiTexImage2DEXT"); printf("glCopyMultiTexImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyMultiTexSubImage1DEXT"); printf("glCopyMultiTexSubImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyMultiTexSubImage2DEXT"); printf("glCopyMultiTexSubImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyMultiTexSubImage3DEXT"); printf("glCopyMultiTexSubImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyNamedBufferSubData"); printf("glCopyNamedBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyPathNV"); printf("glCopyPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyPixels"); printf("glCopyPixels : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexImage1D"); printf("glCopyTexImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexImage1DEXT"); printf("glCopyTexImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexImage2D"); printf("glCopyTexImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexImage2DEXT"); printf("glCopyTexImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexSubImage1D"); printf("glCopyTexSubImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexSubImage1DEXT"); printf("glCopyTexSubImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexSubImage2D"); printf("glCopyTexSubImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexSubImage2DEXT"); printf("glCopyTexSubImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexSubImage3D"); printf("glCopyTexSubImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTexSubImage3DEXT"); printf("glCopyTexSubImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureImage1DEXT"); printf("glCopyTextureImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureImage2DEXT"); printf("glCopyTextureImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureSubImage1D"); printf("glCopyTextureSubImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureSubImage1DEXT"); printf("glCopyTextureSubImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureSubImage2D"); printf("glCopyTextureSubImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureSubImage2DEXT"); printf("glCopyTextureSubImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureSubImage3D"); printf("glCopyTextureSubImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glCopyTextureSubImage3DEXT"); printf("glCopyTextureSubImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCoverFillPathInstancedNV"); printf("glCoverFillPathInstancedNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCoverFillPathNV"); printf("glCoverFillPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCoverStrokePathInstancedNV"); printf("glCoverStrokePathInstancedNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCoverStrokePathNV"); printf("glCoverStrokePathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCoverageModulationNV"); printf("glCoverageModulationNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCoverageModulationTableNV"); printf("glCoverageModulationTableNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateBuffers"); printf("glCreateBuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateCommandListsNV"); printf("glCreateCommandListsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateDebugObjectMESA"); printf("glCreateDebugObjectMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateFramebuffers"); printf("glCreateFramebuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateMemoryObjectsEXT"); printf("glCreateMemoryObjectsEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCreatePerfQueryINTEL"); printf("glCreatePerfQueryINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateProgram"); printf("glCreateProgram : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateProgramObjectARB"); printf("glCreateProgramObjectARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateProgramPipelines"); printf("glCreateProgramPipelines : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateQueries"); printf("glCreateQueries : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateRenderbuffers"); printf("glCreateRenderbuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateSamplers"); printf("glCreateSamplers : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateShader"); printf("glCreateShader : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateShaderObjectARB"); printf("glCreateShaderObjectARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateShaderProgramEXT"); printf("glCreateShaderProgramEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateShaderProgramv"); printf("glCreateShaderProgramv : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateStatesNV"); printf("glCreateStatesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateSyncFromCLeventARB"); printf("glCreateSyncFromCLeventARB : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateTextures"); printf("glCreateTextures : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateTransformFeedbacks"); printf("glCreateTransformFeedbacks : %p\n", p); p = gl.OSMesaGetProcAddress("glCreateVertexArrays"); printf("glCreateVertexArrays : %p\n", p); p = gl.OSMesaGetProcAddress("glCullFace"); printf("glCullFace : %p\n", p); p = gl.OSMesaGetProcAddress("glCullParameterdvEXT"); printf("glCullParameterdvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCullParameterfvEXT"); printf("glCullParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glCurrentPaletteMatrixARB"); printf("glCurrentPaletteMatrixARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageCallback"); printf("glDebugMessageCallback : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageCallbackAMD"); printf("glDebugMessageCallbackAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageCallbackARB"); printf("glDebugMessageCallbackARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageControl"); printf("glDebugMessageControl : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageControlARB"); printf("glDebugMessageControlARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageEnableAMD"); printf("glDebugMessageEnableAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageInsert"); printf("glDebugMessageInsert : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageInsertAMD"); printf("glDebugMessageInsertAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glDebugMessageInsertARB"); printf("glDebugMessageInsertARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDeformSGIX"); printf("glDeformSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glDeformationMap3dSGIX"); printf("glDeformationMap3dSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glDeformationMap3fSGIX"); printf("glDeformationMap3fSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteAsyncMarkersSGIX"); printf("glDeleteAsyncMarkersSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteBuffers"); printf("glDeleteBuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteBuffersARB"); printf("glDeleteBuffersARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteCommandListsNV"); printf("glDeleteCommandListsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteFencesAPPLE"); printf("glDeleteFencesAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteFencesNV"); printf("glDeleteFencesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteFragmentShaderATI"); printf("glDeleteFragmentShaderATI : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteFramebuffers"); printf("glDeleteFramebuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteFramebuffersEXT"); printf("glDeleteFramebuffersEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteLists"); printf("glDeleteLists : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteMemoryObjectsEXT"); printf("glDeleteMemoryObjectsEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteNamedStringARB"); printf("glDeleteNamedStringARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteNamesAMD"); printf("glDeleteNamesAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteObjectARB"); printf("glDeleteObjectARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteObjectBufferATI"); printf("glDeleteObjectBufferATI : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteOcclusionQueriesNV"); printf("glDeleteOcclusionQueriesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeletePathsNV"); printf("glDeletePathsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeletePerfMonitorsAMD"); printf("glDeletePerfMonitorsAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glDeletePerfQueryINTEL"); printf("glDeletePerfQueryINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteProgram"); printf("glDeleteProgram : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteProgramPipelines"); printf("glDeleteProgramPipelines : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteProgramsARB"); printf("glDeleteProgramsARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteProgramsNV"); printf("glDeleteProgramsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteQueries"); printf("glDeleteQueries : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteQueriesARB"); printf("glDeleteQueriesARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteQueryResourceTagNV"); printf("glDeleteQueryResourceTagNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteRenderbuffers"); printf("glDeleteRenderbuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteRenderbuffersEXT"); printf("glDeleteRenderbuffersEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteSamplers"); printf("glDeleteSamplers : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteSemaphoresEXT"); printf("glDeleteSemaphoresEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteShader"); printf("glDeleteShader : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteStatesNV"); printf("glDeleteStatesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteSync"); printf("glDeleteSync : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteTextures"); printf("glDeleteTextures : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteTexturesEXT"); printf("glDeleteTexturesEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteTransformFeedbacks"); printf("glDeleteTransformFeedbacks : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteTransformFeedbacksNV"); printf("glDeleteTransformFeedbacksNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteVertexArrays"); printf("glDeleteVertexArrays : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteVertexArraysAPPLE"); printf("glDeleteVertexArraysAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glDeleteVertexShaderEXT"); printf("glDeleteVertexShaderEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthBoundsEXT"); printf("glDepthBoundsEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthBoundsdNV"); printf("glDepthBoundsdNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthFunc"); printf("glDepthFunc : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthMask"); printf("glDepthMask : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthRange"); printf("glDepthRange : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthRangeArrayv"); printf("glDepthRangeArrayv : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthRangeIndexed"); printf("glDepthRangeIndexed : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthRangedNV"); printf("glDepthRangedNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthRangef"); printf("glDepthRangef : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthRangefOES"); printf("glDepthRangefOES : %p\n", p); p = gl.OSMesaGetProcAddress("glDepthRangexOES"); printf("glDepthRangexOES : %p\n", p); p = gl.OSMesaGetProcAddress("glDetachObjectARB"); printf("glDetachObjectARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDetachShader"); printf("glDetachShader : %p\n", p); p = gl.OSMesaGetProcAddress("glDetailTexFuncSGIS"); printf("glDetailTexFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glDisable"); printf("glDisable : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableClientState"); printf("glDisableClientState : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableClientStateIndexedEXT"); printf("glDisableClientStateIndexedEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glDisableClientStateiEXT"); printf("glDisableClientStateiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableIndexedEXT"); printf("glDisableIndexedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableTraceMESA"); printf("glDisableTraceMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableVariantClientStateEXT"); printf("glDisableVariantClientStateEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glDisableVertexArrayAttrib"); printf("glDisableVertexArrayAttrib : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableVertexArrayAttribEXT"); printf("glDisableVertexArrayAttribEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableVertexArrayEXT"); printf("glDisableVertexArrayEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableVertexAttribAPPLE"); printf("glDisableVertexAttribAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableVertexAttribArray"); printf("glDisableVertexAttribArray : %p\n", p); p = gl.OSMesaGetProcAddress("glDisableVertexAttribArrayARB"); printf("glDisableVertexAttribArrayARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDisablei"); printf("glDisablei : %p\n", p); p = gl.OSMesaGetProcAddress("glDispatchCompute"); printf("glDispatchCompute : %p\n", p); p = gl.OSMesaGetProcAddress("glDispatchComputeGroupSizeARB"); printf("glDispatchComputeGroupSizeARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDispatchComputeIndirect"); printf("glDispatchComputeIndirect : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawArrays"); printf("glDrawArrays : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawArraysEXT"); printf("glDrawArraysEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawArraysIndirect"); printf("glDrawArraysIndirect : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawArraysInstanced"); printf("glDrawArraysInstanced : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawArraysInstancedARB"); printf("glDrawArraysInstancedARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawArraysInstancedBaseInstance"); printf("glDrawArraysInstancedBaseInstance: %p\n", p); p = gl.OSMesaGetProcAddress("glDrawArraysInstancedEXT"); printf("glDrawArraysInstancedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawBuffer"); printf("glDrawBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawBuffers"); printf("glDrawBuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawBuffersARB"); printf("glDrawBuffersARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawBuffersATI"); printf("glDrawBuffersATI : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawCommandsAddressNV"); printf("glDrawCommandsAddressNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawCommandsNV"); printf("glDrawCommandsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawCommandsStatesAddressNV"); printf("glDrawCommandsStatesAddressNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawCommandsStatesNV"); printf("glDrawCommandsStatesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementArrayAPPLE"); printf("glDrawElementArrayAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementArrayATI"); printf("glDrawElementArrayATI : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElements"); printf("glDrawElements : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsBaseVertex"); printf("glDrawElementsBaseVertex : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsIndirect"); printf("glDrawElementsIndirect : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsInstanced"); printf("glDrawElementsInstanced : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsInstancedARB"); printf("glDrawElementsInstancedARB : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsInstancedBaseInstance"); printf("glDrawElementsInstancedBaseInstance: %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsInstancedBaseVertex"); printf("glDrawElementsInstancedBaseVertex: %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsInstancedBaseVertexBaseInstance"); printf("glDrawElementsInstancedBaseVertexBaseInstance: %p\n", p); p = gl.OSMesaGetProcAddress("glDrawElementsInstancedEXT"); printf("glDrawElementsInstancedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawMeshArraysSUN"); printf("glDrawMeshArraysSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawPixels"); printf("glDrawPixels : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawRangeElementArrayAPPLE"); printf("glDrawRangeElementArrayAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawRangeElementArrayATI"); printf("glDrawRangeElementArrayATI : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawRangeElements"); printf("glDrawRangeElements : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawRangeElementsBaseVertex"); printf("glDrawRangeElementsBaseVertex : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawRangeElementsEXT"); printf("glDrawRangeElementsEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawTextureNV"); printf("glDrawTextureNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawTransformFeedback"); printf("glDrawTransformFeedback : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawTransformFeedbackInstanced"); printf("glDrawTransformFeedbackInstanced: %p\n", p); p = gl.OSMesaGetProcAddress("glDrawTransformFeedbackNV"); printf("glDrawTransformFeedbackNV : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawTransformFeedbackStream"); printf("glDrawTransformFeedbackStream : %p\n", p); p = gl.OSMesaGetProcAddress("glDrawTransformFeedbackStreamInstanced"); printf("glDrawTransformFeedbackStreamInstanced: %p\n", p); p = gl.OSMesaGetProcAddress("glDrawVkImageNV"); printf("glDrawVkImageNV : %p\n", p); p = gl.OSMesaGetProcAddress("glEdgeFlag"); printf("glEdgeFlag : %p\n", p); p = gl.OSMesaGetProcAddress("glEdgeFlagFormatNV"); printf("glEdgeFlagFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glEdgeFlagPointer"); printf("glEdgeFlagPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glEdgeFlagPointerEXT"); printf("glEdgeFlagPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEdgeFlagPointerListIBM"); printf("glEdgeFlagPointerListIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glEdgeFlagv"); printf("glEdgeFlagv : %p\n", p); p = gl.OSMesaGetProcAddress("glElementPointerAPPLE"); printf("glElementPointerAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glElementPointerATI"); printf("glElementPointerATI : %p\n", p); p = gl.OSMesaGetProcAddress("glEnable"); printf("glEnable : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableClientState"); printf("glEnableClientState : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableClientStateIndexedEXT"); printf("glEnableClientStateIndexedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableClientStateiEXT"); printf("glEnableClientStateiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableIndexedEXT"); printf("glEnableIndexedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableTraceMESA"); printf("glEnableTraceMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableVariantClientStateEXT"); printf("glEnableVariantClientStateEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableVertexArrayAttrib"); printf("glEnableVertexArrayAttrib : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableVertexArrayAttribEXT"); printf("glEnableVertexArrayAttribEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableVertexArrayEXT"); printf("glEnableVertexArrayEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableVertexAttribAPPLE"); printf("glEnableVertexAttribAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableVertexAttribArray"); printf("glEnableVertexAttribArray : %p\n", p); p = gl.OSMesaGetProcAddress("glEnableVertexAttribArrayARB"); printf("glEnableVertexAttribArrayARB : %p\n", p); p = gl.OSMesaGetProcAddress("glEnablei"); printf("glEnablei : %p\n", p); p = gl.OSMesaGetProcAddress("glEnd"); printf("glEnd : %p\n", p); p = gl.OSMesaGetProcAddress("glEndConditionalRender"); printf("glEndConditionalRender : %p\n", p); p = gl.OSMesaGetProcAddress("glEndConditionalRenderNV"); printf("glEndConditionalRenderNV : %p\n", p); p = gl.OSMesaGetProcAddress("glEndConditionalRenderNVX"); printf("glEndConditionalRenderNVX : %p\n", p); p = gl.OSMesaGetProcAddress("glEndFragmentShaderATI"); printf("glEndFragmentShaderATI : %p\n", p); p = gl.OSMesaGetProcAddress("glEndList"); printf("glEndList : %p\n", p); p = gl.OSMesaGetProcAddress("glEndOcclusionQueryNV"); printf("glEndOcclusionQueryNV : %p\n", p); p = gl.OSMesaGetProcAddress("glEndPerfMonitorAMD"); printf("glEndPerfMonitorAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glEndPerfQueryINTEL"); printf("glEndPerfQueryINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glEndQuery"); printf("glEndQuery : %p\n", p); p = gl.OSMesaGetProcAddress("glEndQueryARB"); printf("glEndQueryARB : %p\n", p); p = gl.OSMesaGetProcAddress("glEndQueryIndexed"); printf("glEndQueryIndexed : %p\n", p); p = gl.OSMesaGetProcAddress("glEndTraceMESA"); printf("glEndTraceMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glEndTransformFeedback"); printf("glEndTransformFeedback : %p\n", p); p = gl.OSMesaGetProcAddress("glEndTransformFeedbackEXT"); printf("glEndTransformFeedbackEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEndTransformFeedbackNV"); printf("glEndTransformFeedbackNV : %p\n", p); p = gl.OSMesaGetProcAddress("glEndVertexShaderEXT"); printf("glEndVertexShaderEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glEndVideoCaptureNV"); printf("glEndVideoCaptureNV : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord1d"); printf("glEvalCoord1d : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord1dv"); printf("glEvalCoord1dv : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord1f"); printf("glEvalCoord1f : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord1fv"); printf("glEvalCoord1fv : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord1xOES"); printf("glEvalCoord1xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord1xvOES"); printf("glEvalCoord1xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord2d"); printf("glEvalCoord2d : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord2dv"); printf("glEvalCoord2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord2f"); printf("glEvalCoord2f : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord2fv"); printf("glEvalCoord2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord2xOES"); printf("glEvalCoord2xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalCoord2xvOES"); printf("glEvalCoord2xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalMapsNV"); printf("glEvalMapsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalMesh1"); printf("glEvalMesh1 : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalMesh2"); printf("glEvalMesh2 : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalPoint1"); printf("glEvalPoint1 : %p\n", p); p = gl.OSMesaGetProcAddress("glEvalPoint2"); printf("glEvalPoint2 : %p\n", p); p = gl.OSMesaGetProcAddress("glEvaluateDepthValuesARB"); printf("glEvaluateDepthValuesARB : %p\n", p); p = gl.OSMesaGetProcAddress("glExecuteProgramNV"); printf("glExecuteProgramNV : %p\n", p); p = gl.OSMesaGetProcAddress("glExtractComponentEXT"); printf("glExtractComponentEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFeedbackBuffer"); printf("glFeedbackBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glFeedbackBufferxOES"); printf("glFeedbackBufferxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glFenceSync"); printf("glFenceSync : %p\n", p); p = gl.OSMesaGetProcAddress("glFinalCombinerInputNV"); printf("glFinalCombinerInputNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFinish"); printf("glFinish : %p\n", p); p = gl.OSMesaGetProcAddress("glFinishAsyncSGIX"); printf("glFinishAsyncSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFinishFenceAPPLE"); printf("glFinishFenceAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glFinishFenceNV"); printf("glFinishFenceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFinishObjectAPPLE"); printf("glFinishObjectAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glFinishRenderAPPLE"); printf("glFinishRenderAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glFinishTextureSUNX"); printf("glFinishTextureSUNX : %p\n", p); p = gl.OSMesaGetProcAddress("glFlush"); printf("glFlush : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushMappedBufferRange"); printf("glFlushMappedBufferRange : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushMappedBufferRangeAPPLE"); printf("glFlushMappedBufferRangeAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushMappedNamedBufferRange"); printf("glFlushMappedNamedBufferRange : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushMappedNamedBufferRangeEXT"); printf("glFlushMappedNamedBufferRangeEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glFlushPixelDataRangeNV"); printf("glFlushPixelDataRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushRasterSGIX"); printf("glFlushRasterSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushRenderAPPLE"); printf("glFlushRenderAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushStaticDataIBM"); printf("glFlushStaticDataIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushVertexArrayRangeAPPLE"); printf("glFlushVertexArrayRangeAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glFlushVertexArrayRangeNV"); printf("glFlushVertexArrayRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordFormatNV"); printf("glFogCoordFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordPointer"); printf("glFogCoordPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordPointerEXT"); printf("glFogCoordPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordPointerListIBM"); printf("glFogCoordPointerListIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordd"); printf("glFogCoordd : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoorddEXT"); printf("glFogCoorddEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoorddv"); printf("glFogCoorddv : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoorddvEXT"); printf("glFogCoorddvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordf"); printf("glFogCoordf : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordfEXT"); printf("glFogCoordfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordfv"); printf("glFogCoordfv : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordfvEXT"); printf("glFogCoordfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordhNV"); printf("glFogCoordhNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFogCoordhvNV"); printf("glFogCoordhvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFogFuncSGIS"); printf("glFogFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glFogf"); printf("glFogf : %p\n", p); p = gl.OSMesaGetProcAddress("glFogfv"); printf("glFogfv : %p\n", p); p = gl.OSMesaGetProcAddress("glFogi"); printf("glFogi : %p\n", p); p = gl.OSMesaGetProcAddress("glFogiv"); printf("glFogiv : %p\n", p); p = gl.OSMesaGetProcAddress("glFogxOES"); printf("glFogxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glFogxvOES"); printf("glFogxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentColorMaterialSGIX"); printf("glFragmentColorMaterialSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentCoverageColorNV"); printf("glFragmentCoverageColorNV : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightModelfSGIX"); printf("glFragmentLightModelfSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightModelfvSGIX"); printf("glFragmentLightModelfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightModeliSGIX"); printf("glFragmentLightModeliSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightModelivSGIX"); printf("glFragmentLightModelivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightfSGIX"); printf("glFragmentLightfSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightfvSGIX"); printf("glFragmentLightfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightiSGIX"); printf("glFragmentLightiSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentLightivSGIX"); printf("glFragmentLightivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentMaterialfSGIX"); printf("glFragmentMaterialfSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentMaterialfvSGIX"); printf("glFragmentMaterialfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentMaterialiSGIX"); printf("glFragmentMaterialiSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFragmentMaterialivSGIX"); printf("glFragmentMaterialivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFrameTerminatorGREMEDY"); printf("glFrameTerminatorGREMEDY : %p\n", p); p = gl.OSMesaGetProcAddress("glFrameZoomSGIX"); printf("glFrameZoomSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferDrawBufferEXT"); printf("glFramebufferDrawBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferDrawBuffersEXT"); printf("glFramebufferDrawBuffersEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferParameteri"); printf("glFramebufferParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferReadBufferEXT"); printf("glFramebufferReadBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferRenderbuffer"); printf("glFramebufferRenderbuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferRenderbufferEXT"); printf("glFramebufferRenderbufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferSampleLocationsfvARB"); printf("glFramebufferSampleLocationsfvARB: %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferSampleLocationsfvNV"); printf("glFramebufferSampleLocationsfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferSamplePositionsfvAMD"); printf("glFramebufferSamplePositionsfvAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTexture"); printf("glFramebufferTexture : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTexture1D"); printf("glFramebufferTexture1D : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTexture1DEXT"); printf("glFramebufferTexture1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTexture2D"); printf("glFramebufferTexture2D : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTexture2DEXT"); printf("glFramebufferTexture2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTexture3D"); printf("glFramebufferTexture3D : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTexture3DEXT"); printf("glFramebufferTexture3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureARB"); printf("glFramebufferTextureARB : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureEXT"); printf("glFramebufferTextureEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureFaceARB"); printf("glFramebufferTextureFaceARB : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureFaceEXT"); printf("glFramebufferTextureFaceEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureLayer"); printf("glFramebufferTextureLayer : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureLayerARB"); printf("glFramebufferTextureLayerARB : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureLayerEXT"); printf("glFramebufferTextureLayerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glFramebufferTextureMultiviewOVR"); printf("glFramebufferTextureMultiviewOVR: %p\n", p); p = gl.OSMesaGetProcAddress("glFreeObjectBufferATI"); printf("glFreeObjectBufferATI : %p\n", p); p = gl.OSMesaGetProcAddress("glFrontFace"); printf("glFrontFace : %p\n", p); p = gl.OSMesaGetProcAddress("glFrustum"); printf("glFrustum : %p\n", p); p = gl.OSMesaGetProcAddress("glFrustumf"); printf("glFrustumf : %p\n", p); p = gl.OSMesaGetProcAddress("glFrustumfOES"); printf("glFrustumfOES : %p\n", p); p = gl.OSMesaGetProcAddress("glFrustumxOES"); printf("glFrustumxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGenAsyncMarkersSGIX"); printf("glGenAsyncMarkersSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGenBuffers"); printf("glGenBuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glGenBuffersARB"); printf("glGenBuffersARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGenFencesAPPLE"); printf("glGenFencesAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glGenFencesNV"); printf("glGenFencesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGenFragmentShadersATI"); printf("glGenFragmentShadersATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGenFramebuffers"); printf("glGenFramebuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glGenFramebuffersEXT"); printf("glGenFramebuffersEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenLists"); printf("glGenLists : %p\n", p); p = gl.OSMesaGetProcAddress("glGenNamesAMD"); printf("glGenNamesAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glGenOcclusionQueriesNV"); printf("glGenOcclusionQueriesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGenPathsNV"); printf("glGenPathsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGenPerfMonitorsAMD"); printf("glGenPerfMonitorsAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glGenProgramPipelines"); printf("glGenProgramPipelines : %p\n", p); p = gl.OSMesaGetProcAddress("glGenProgramsARB"); printf("glGenProgramsARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGenProgramsNV"); printf("glGenProgramsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGenQueries"); printf("glGenQueries : %p\n", p); p = gl.OSMesaGetProcAddress("glGenQueriesARB"); printf("glGenQueriesARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGenQueryResourceTagNV"); printf("glGenQueryResourceTagNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGenRenderbuffers"); printf("glGenRenderbuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glGenRenderbuffersEXT"); printf("glGenRenderbuffersEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenSamplers"); printf("glGenSamplers : %p\n", p); p = gl.OSMesaGetProcAddress("glGenSemaphoresEXT"); printf("glGenSemaphoresEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenSymbolsEXT"); printf("glGenSymbolsEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenTextures"); printf("glGenTextures : %p\n", p); p = gl.OSMesaGetProcAddress("glGenTexturesEXT"); printf("glGenTexturesEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenTransformFeedbacks"); printf("glGenTransformFeedbacks : %p\n", p); p = gl.OSMesaGetProcAddress("glGenTransformFeedbacksNV"); printf("glGenTransformFeedbacksNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGenVertexArrays"); printf("glGenVertexArrays : %p\n", p); p = gl.OSMesaGetProcAddress("glGenVertexArraysAPPLE"); printf("glGenVertexArraysAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glGenVertexShadersEXT"); printf("glGenVertexShadersEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenerateMipmap"); printf("glGenerateMipmap : %p\n", p); p = gl.OSMesaGetProcAddress("glGenerateMipmapEXT"); printf("glGenerateMipmapEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenerateMultiTexMipmapEXT"); printf("glGenerateMultiTexMipmapEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGenerateTextureMipmap"); printf("glGenerateTextureMipmap : %p\n", p); p = gl.OSMesaGetProcAddress("glGenerateTextureMipmapEXT"); printf("glGenerateTextureMipmapEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveAtomicCounterBufferiv"); printf("glGetActiveAtomicCounterBufferiv: %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveAttrib"); printf("glGetActiveAttrib : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveAttribARB"); printf("glGetActiveAttribARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveSubroutineName"); printf("glGetActiveSubroutineName : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveSubroutineUniformName"); printf("glGetActiveSubroutineUniformName: %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveSubroutineUniformiv"); printf("glGetActiveSubroutineUniformiv: %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveUniform"); printf("glGetActiveUniform : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveUniformARB"); printf("glGetActiveUniformARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveUniformBlockIndex"); printf("glGetActiveUniformBlockIndex : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveUniformBlockName"); printf("glGetActiveUniformBlockName : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveUniformBlockiv"); printf("glGetActiveUniformBlockiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveUniformName"); printf("glGetActiveUniformName : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveUniformsiv"); printf("glGetActiveUniformsiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetActiveVaryingNV"); printf("glGetActiveVaryingNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetArrayObjectfvATI"); printf("glGetArrayObjectfvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetArrayObjectivATI"); printf("glGetArrayObjectivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetAttachedObjectsARB"); printf("glGetAttachedObjectsARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetAttachedShaders"); printf("glGetAttachedShaders : %p\n", p); p = gl.OSMesaGetProcAddress("glGetAttribLocation"); printf("glGetAttribLocation : %p\n", p); p = gl.OSMesaGetProcAddress("glGetAttribLocationARB"); printf("glGetAttribLocationARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBooleanIndexedvEXT"); printf("glGetBooleanIndexedvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBooleani_v"); printf("glGetBooleani_v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBooleanv"); printf("glGetBooleanv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferParameteri64v"); printf("glGetBufferParameteri64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferParameteriv"); printf("glGetBufferParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferParameterivARB"); printf("glGetBufferParameterivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferParameterui64vNV"); printf("glGetBufferParameterui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferPointerv"); printf("glGetBufferPointerv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferPointervARB"); printf("glGetBufferPointervARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferSubData"); printf("glGetBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glGetBufferSubDataARB"); printf("glGetBufferSubDataARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetClipPlane"); printf("glGetClipPlane : %p\n", p); p = gl.OSMesaGetProcAddress("glGetClipPlanefOES"); printf("glGetClipPlanefOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetClipPlanexOES"); printf("glGetClipPlanexOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTable"); printf("glGetColorTable : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableEXT"); printf("glGetColorTableEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableParameterfv"); printf("glGetColorTableParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableParameterfvEXT"); printf("glGetColorTableParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableParameterfvSGI"); printf("glGetColorTableParameterfvSGI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableParameteriv"); printf("glGetColorTableParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableParameterivEXT"); printf("glGetColorTableParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableParameterivSGI"); printf("glGetColorTableParameterivSGI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetColorTableSGI"); printf("glGetColorTableSGI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetCombinerInputParameterfvNV"); printf("glGetCombinerInputParameterfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCombinerInputParameterivNV"); printf("glGetCombinerInputParameterivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCombinerOutputParameterfvNV"); printf("glGetCombinerOutputParameterfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCombinerOutputParameterivNV"); printf("glGetCombinerOutputParameterivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCombinerStageParameterfvNV"); printf("glGetCombinerStageParameterfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCommandHeaderNV"); printf("glGetCommandHeaderNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetCompressedMultiTexImageEXT"); printf("glGetCompressedMultiTexImageEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCompressedTexImage"); printf("glGetCompressedTexImage : %p\n", p); p = gl.OSMesaGetProcAddress("glGetCompressedTexImageARB"); printf("glGetCompressedTexImageARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetCompressedTextureImage"); printf("glGetCompressedTextureImage : %p\n", p); p = gl.OSMesaGetProcAddress("glGetCompressedTextureImageEXT"); printf("glGetCompressedTextureImageEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCompressedTextureSubImage"); printf("glGetCompressedTextureSubImage: %p\n", p); p = gl.OSMesaGetProcAddress("glGetConvolutionFilter"); printf("glGetConvolutionFilter : %p\n", p); p = gl.OSMesaGetProcAddress("glGetConvolutionFilterEXT"); printf("glGetConvolutionFilterEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetConvolutionParameterfv"); printf("glGetConvolutionParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetConvolutionParameterfvEXT"); printf("glGetConvolutionParameterfvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetConvolutionParameteriv"); printf("glGetConvolutionParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetConvolutionParameterivEXT"); printf("glGetConvolutionParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetConvolutionParameterxvOES"); printf("glGetConvolutionParameterxvOES: %p\n", p); p = gl.OSMesaGetProcAddress("glGetCoverageModulationTableNV"); printf("glGetCoverageModulationTableNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetDebugLogLengthMESA"); printf("glGetDebugLogLengthMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDebugLogMESA"); printf("glGetDebugLogMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDebugMessageLog"); printf("glGetDebugMessageLog : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDebugMessageLogAMD"); printf("glGetDebugMessageLogAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDebugMessageLogARB"); printf("glGetDebugMessageLogARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDetailTexFuncSGIS"); printf("glGetDetailTexFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDoubleIndexedvEXT"); printf("glGetDoubleIndexedvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDoublei_v"); printf("glGetDoublei_v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDoublei_vEXT"); printf("glGetDoublei_vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetDoublev"); printf("glGetDoublev : %p\n", p); p = gl.OSMesaGetProcAddress("glGetError"); printf("glGetError : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFenceivNV"); printf("glGetFenceivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFinalCombinerInputParameterfvNV"); printf("glGetFinalCombinerInputParameterfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetFinalCombinerInputParameterivNV"); printf("glGetFinalCombinerInputParameterivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetFirstPerfQueryIdINTEL"); printf("glGetFirstPerfQueryIdINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFixedvOES"); printf("glGetFixedvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFloatIndexedvEXT"); printf("glGetFloatIndexedvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFloati_v"); printf("glGetFloati_v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFloati_vEXT"); printf("glGetFloati_vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFloatv"); printf("glGetFloatv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFogFuncSGIS"); printf("glGetFogFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFragDataIndex"); printf("glGetFragDataIndex : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFragDataLocation"); printf("glGetFragDataLocation : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFragDataLocationEXT"); printf("glGetFragDataLocationEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFragmentLightfvSGIX"); printf("glGetFragmentLightfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFragmentLightivSGIX"); printf("glGetFragmentLightivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFragmentMaterialfvSGIX"); printf("glGetFragmentMaterialfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFragmentMaterialivSGIX"); printf("glGetFragmentMaterialivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFramebufferAttachmentParameteriv"); printf("glGetFramebufferAttachmentParameteriv: %p\n", p); p = gl.OSMesaGetProcAddress("glGetFramebufferAttachmentParameterivEXT"); printf("glGetFramebufferAttachmentParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetFramebufferParameterfvAMD"); printf("glGetFramebufferParameterfvAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glGetFramebufferParameteriv"); printf("glGetFramebufferParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetFramebufferParameterivEXT"); printf("glGetFramebufferParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetGraphicsResetStatus"); printf("glGetGraphicsResetStatus : %p\n", p); p = gl.OSMesaGetProcAddress("glGetGraphicsResetStatusARB"); printf("glGetGraphicsResetStatusARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHandleARB"); printf("glGetHandleARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHistogram"); printf("glGetHistogram : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHistogramEXT"); printf("glGetHistogramEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHistogramParameterfv"); printf("glGetHistogramParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHistogramParameterfvEXT"); printf("glGetHistogramParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHistogramParameteriv"); printf("glGetHistogramParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHistogramParameterivEXT"); printf("glGetHistogramParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetHistogramParameterxvOES"); printf("glGetHistogramParameterxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetImageHandleARB"); printf("glGetImageHandleARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetImageHandleNV"); printf("glGetImageHandleNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetImageTransformParameterfvHP"); printf("glGetImageTransformParameterfvHP: %p\n", p); p = gl.OSMesaGetProcAddress("glGetImageTransformParameterivHP"); printf("glGetImageTransformParameterivHP: %p\n", p); p = gl.OSMesaGetProcAddress("glGetInfoLogARB"); printf("glGetInfoLogARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInstrumentsSGIX"); printf("glGetInstrumentsSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInteger64i_v"); printf("glGetInteger64i_v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInteger64v"); printf("glGetInteger64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetIntegerIndexedvEXT"); printf("glGetIntegerIndexedvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetIntegeri_v"); printf("glGetIntegeri_v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetIntegerui64i_vNV"); printf("glGetIntegerui64i_vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetIntegerui64vNV"); printf("glGetIntegerui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetIntegerv"); printf("glGetIntegerv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInternalformatSampleivNV"); printf("glGetInternalformatSampleivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInternalformati64v"); printf("glGetInternalformati64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInternalformativ"); printf("glGetInternalformativ : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInvariantBooleanvEXT"); printf("glGetInvariantBooleanvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInvariantFloatvEXT"); printf("glGetInvariantFloatvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetInvariantIntegervEXT"); printf("glGetInvariantIntegervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetLightfv"); printf("glGetLightfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetLightiv"); printf("glGetLightiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetLightxOES"); printf("glGetLightxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetListParameterfvSGIX"); printf("glGetListParameterfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGetListParameterivSGIX"); printf("glGetListParameterivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glGetLocalConstantBooleanvEXT"); printf("glGetLocalConstantBooleanvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetLocalConstantFloatvEXT"); printf("glGetLocalConstantFloatvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetLocalConstantIntegervEXT"); printf("glGetLocalConstantIntegervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapAttribParameterfvNV"); printf("glGetMapAttribParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapAttribParameterivNV"); printf("glGetMapAttribParameterivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapControlPointsNV"); printf("glGetMapControlPointsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapParameterfvNV"); printf("glGetMapParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapParameterivNV"); printf("glGetMapParameterivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapdv"); printf("glGetMapdv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapfv"); printf("glGetMapfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapiv"); printf("glGetMapiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMapxvOES"); printf("glGetMapxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMaterialfv"); printf("glGetMaterialfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMaterialiv"); printf("glGetMaterialiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMaterialxOES"); printf("glGetMaterialxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMemoryObjectParameterivEXT"); printf("glGetMemoryObjectParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetMinmax"); printf("glGetMinmax : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMinmaxEXT"); printf("glGetMinmaxEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMinmaxParameterfv"); printf("glGetMinmaxParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMinmaxParameterfvEXT"); printf("glGetMinmaxParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMinmaxParameteriv"); printf("glGetMinmaxParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMinmaxParameterivEXT"); printf("glGetMinmaxParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexEnvfvEXT"); printf("glGetMultiTexEnvfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexEnvivEXT"); printf("glGetMultiTexEnvivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexGendvEXT"); printf("glGetMultiTexGendvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexGenfvEXT"); printf("glGetMultiTexGenfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexGenivEXT"); printf("glGetMultiTexGenivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexImageEXT"); printf("glGetMultiTexImageEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexLevelParameterfvEXT"); printf("glGetMultiTexLevelParameterfvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexLevelParameterivEXT"); printf("glGetMultiTexLevelParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexParameterIivEXT"); printf("glGetMultiTexParameterIivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexParameterIuivEXT"); printf("glGetMultiTexParameterIuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexParameterfvEXT"); printf("glGetMultiTexParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultiTexParameterivEXT"); printf("glGetMultiTexParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultisamplefv"); printf("glGetMultisamplefv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetMultisamplefvNV"); printf("glGetMultisamplefvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferParameteri64v"); printf("glGetNamedBufferParameteri64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferParameteriv"); printf("glGetNamedBufferParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferParameterivEXT"); printf("glGetNamedBufferParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferParameterui64vNV"); printf("glGetNamedBufferParameterui64vNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferPointerv"); printf("glGetNamedBufferPointerv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferPointervEXT"); printf("glGetNamedBufferPointervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferSubData"); printf("glGetNamedBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedBufferSubDataEXT"); printf("glGetNamedBufferSubDataEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedFramebufferAttachmentParameteriv"); printf("glGetNamedFramebufferAttachmentParameteriv: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedFramebufferAttachmentParameterivEXT"); printf("glGetNamedFramebufferAttachmentParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedFramebufferParameterfvAMD"); printf("glGetNamedFramebufferParameterfvAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedFramebufferParameteriv"); printf("glGetNamedFramebufferParameteriv: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedFramebufferParameterivEXT"); printf("glGetNamedFramebufferParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedProgramLocalParameterIivEXT"); printf("glGetNamedProgramLocalParameterIivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedProgramLocalParameterIuivEXT"); printf("glGetNamedProgramLocalParameterIuivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedProgramLocalParameterdvEXT"); printf("glGetNamedProgramLocalParameterdvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedProgramLocalParameterfvEXT"); printf("glGetNamedProgramLocalParameterfvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedProgramStringEXT"); printf("glGetNamedProgramStringEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedProgramivEXT"); printf("glGetNamedProgramivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedRenderbufferParameteriv"); printf("glGetNamedRenderbufferParameteriv: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedRenderbufferParameterivEXT"); printf("glGetNamedRenderbufferParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedStringARB"); printf("glGetNamedStringARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNamedStringivARB"); printf("glGetNamedStringivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetNextPerfQueryIdINTEL"); printf("glGetNextPerfQueryIdINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectBufferfvATI"); printf("glGetObjectBufferfvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectBufferivATI"); printf("glGetObjectBufferivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectLabel"); printf("glGetObjectLabel : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectLabelEXT"); printf("glGetObjectLabelEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectParameterfvARB"); printf("glGetObjectParameterfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectParameterivAPPLE"); printf("glGetObjectParameterivAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectParameterivARB"); printf("glGetObjectParameterivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetObjectPtrLabel"); printf("glGetObjectPtrLabel : %p\n", p); p = gl.OSMesaGetProcAddress("glGetOcclusionQueryivNV"); printf("glGetOcclusionQueryivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetOcclusionQueryuivNV"); printf("glGetOcclusionQueryuivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathColorGenfvNV"); printf("glGetPathColorGenfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathColorGenivNV"); printf("glGetPathColorGenivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathCommandsNV"); printf("glGetPathCommandsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathCoordsNV"); printf("glGetPathCoordsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathDashArrayNV"); printf("glGetPathDashArrayNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathLengthNV"); printf("glGetPathLengthNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathMetricRangeNV"); printf("glGetPathMetricRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathMetricsNV"); printf("glGetPathMetricsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathParameterfvNV"); printf("glGetPathParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathParameterivNV"); printf("glGetPathParameterivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathSpacingNV"); printf("glGetPathSpacingNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathTexGenfvNV"); printf("glGetPathTexGenfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPathTexGenivNV"); printf("glGetPathTexGenivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfCounterInfoINTEL"); printf("glGetPerfCounterInfoINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfMonitorCounterDataAMD"); printf("glGetPerfMonitorCounterDataAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfMonitorCounterInfoAMD"); printf("glGetPerfMonitorCounterInfoAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfMonitorCounterStringAMD"); printf("glGetPerfMonitorCounterStringAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfMonitorCountersAMD"); printf("glGetPerfMonitorCountersAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfMonitorGroupStringAMD"); printf("glGetPerfMonitorGroupStringAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfMonitorGroupsAMD"); printf("glGetPerfMonitorGroupsAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfQueryDataINTEL"); printf("glGetPerfQueryDataINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfQueryIdByNameINTEL"); printf("glGetPerfQueryIdByNameINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPerfQueryInfoINTEL"); printf("glGetPerfQueryInfoINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelMapfv"); printf("glGetPixelMapfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelMapuiv"); printf("glGetPixelMapuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelMapusv"); printf("glGetPixelMapusv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelMapxv"); printf("glGetPixelMapxv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelTexGenParameterfvSGIS"); printf("glGetPixelTexGenParameterfvSGIS: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelTexGenParameterivSGIS"); printf("glGetPixelTexGenParameterivSGIS: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelTransformParameterfvEXT"); printf("glGetPixelTransformParameterfvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPixelTransformParameterivEXT"); printf("glGetPixelTransformParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetPointerIndexedvEXT"); printf("glGetPointerIndexedvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPointeri_vEXT"); printf("glGetPointeri_vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPointerv"); printf("glGetPointerv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPointervEXT"); printf("glGetPointervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetPolygonStipple"); printf("glGetPolygonStipple : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramBinary"); printf("glGetProgramBinary : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramEnvParameterIivNV"); printf("glGetProgramEnvParameterIivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramEnvParameterIuivNV"); printf("glGetProgramEnvParameterIuivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramEnvParameterdvARB"); printf("glGetProgramEnvParameterdvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramEnvParameterfvARB"); printf("glGetProgramEnvParameterfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramInfoLog"); printf("glGetProgramInfoLog : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramInterfaceiv"); printf("glGetProgramInterfaceiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramLocalParameterIivNV"); printf("glGetProgramLocalParameterIivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramLocalParameterIuivNV"); printf("glGetProgramLocalParameterIuivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramLocalParameterdvARB"); printf("glGetProgramLocalParameterdvARB: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramLocalParameterfvARB"); printf("glGetProgramLocalParameterfvARB: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramNamedParameterdvNV"); printf("glGetProgramNamedParameterdvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramNamedParameterfvNV"); printf("glGetProgramNamedParameterfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramParameterdvNV"); printf("glGetProgramParameterdvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramParameterfvNV"); printf("glGetProgramParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramPipelineInfoLog"); printf("glGetProgramPipelineInfoLog : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramPipelineiv"); printf("glGetProgramPipelineiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramRegisterfvMESA"); printf("glGetProgramRegisterfvMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramResourceIndex"); printf("glGetProgramResourceIndex : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramResourceLocation"); printf("glGetProgramResourceLocation : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramResourceLocationIndex"); printf("glGetProgramResourceLocationIndex: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramResourceName"); printf("glGetProgramResourceName : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramResourcefvNV"); printf("glGetProgramResourcefvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramResourceiv"); printf("glGetProgramResourceiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramStageiv"); printf("glGetProgramStageiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramStringARB"); printf("glGetProgramStringARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramStringNV"); printf("glGetProgramStringNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramSubroutineParameteruivNV"); printf("glGetProgramSubroutineParameteruivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramiv"); printf("glGetProgramiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramivARB"); printf("glGetProgramivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetProgramivNV"); printf("glGetProgramivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryBufferObjecti64v"); printf("glGetQueryBufferObjecti64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryBufferObjectiv"); printf("glGetQueryBufferObjectiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryBufferObjectui64v"); printf("glGetQueryBufferObjectui64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryBufferObjectuiv"); printf("glGetQueryBufferObjectuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryIndexediv"); printf("glGetQueryIndexediv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjecti64v"); printf("glGetQueryObjecti64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjecti64vEXT"); printf("glGetQueryObjecti64vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjectiv"); printf("glGetQueryObjectiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjectivARB"); printf("glGetQueryObjectivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjectui64v"); printf("glGetQueryObjectui64v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjectui64vEXT"); printf("glGetQueryObjectui64vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjectuiv"); printf("glGetQueryObjectuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryObjectuivARB"); printf("glGetQueryObjectuivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryiv"); printf("glGetQueryiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetQueryivARB"); printf("glGetQueryivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetRenderbufferParameteriv"); printf("glGetRenderbufferParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetRenderbufferParameterivEXT"); printf("glGetRenderbufferParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetSamplerParameterIiv"); printf("glGetSamplerParameterIiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSamplerParameterIuiv"); printf("glGetSamplerParameterIuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSamplerParameterfv"); printf("glGetSamplerParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSamplerParameteriv"); printf("glGetSamplerParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSemaphoreParameterui64vEXT"); printf("glGetSemaphoreParameterui64vEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetSeparableFilter"); printf("glGetSeparableFilter : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSeparableFilterEXT"); printf("glGetSeparableFilterEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetShaderInfoLog"); printf("glGetShaderInfoLog : %p\n", p); p = gl.OSMesaGetProcAddress("glGetShaderPrecisionFormat"); printf("glGetShaderPrecisionFormat : %p\n", p); p = gl.OSMesaGetProcAddress("glGetShaderSource"); printf("glGetShaderSource : %p\n", p); p = gl.OSMesaGetProcAddress("glGetShaderSourceARB"); printf("glGetShaderSourceARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetShaderiv"); printf("glGetShaderiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSharpenTexFuncSGIS"); printf("glGetSharpenTexFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glGetStageIndexNV"); printf("glGetStageIndexNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetString"); printf("glGetString : %p\n", p); p = gl.OSMesaGetProcAddress("glGetStringi"); printf("glGetStringi : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSubroutineIndex"); printf("glGetSubroutineIndex : %p\n", p); p = gl.OSMesaGetProcAddress("glGetSubroutineUniformLocation"); printf("glGetSubroutineUniformLocation: %p\n", p); p = gl.OSMesaGetProcAddress("glGetSynciv"); printf("glGetSynciv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexBumpParameterfvATI"); printf("glGetTexBumpParameterfvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexBumpParameterivATI"); printf("glGetTexBumpParameterivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexEnvfv"); printf("glGetTexEnvfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexEnviv"); printf("glGetTexEnviv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexEnvxvOES"); printf("glGetTexEnvxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexFilterFuncSGIS"); printf("glGetTexFilterFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexGendv"); printf("glGetTexGendv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexGenfv"); printf("glGetTexGenfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexGeniv"); printf("glGetTexGeniv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexGenxvOES"); printf("glGetTexGenxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexImage"); printf("glGetTexImage : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexLevelParameterfv"); printf("glGetTexLevelParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexLevelParameteriv"); printf("glGetTexLevelParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexLevelParameterxvOES"); printf("glGetTexLevelParameterxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameterIiv"); printf("glGetTexParameterIiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameterIivEXT"); printf("glGetTexParameterIivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameterIuiv"); printf("glGetTexParameterIuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameterIuivEXT"); printf("glGetTexParameterIuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameterPointervAPPLE"); printf("glGetTexParameterPointervAPPLE: %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameterfv"); printf("glGetTexParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameteriv"); printf("glGetTexParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTexParameterxvOES"); printf("glGetTexParameterxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureHandleARB"); printf("glGetTextureHandleARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureHandleNV"); printf("glGetTextureHandleNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureImage"); printf("glGetTextureImage : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureImageEXT"); printf("glGetTextureImageEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureLevelParameterfv"); printf("glGetTextureLevelParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureLevelParameterfvEXT"); printf("glGetTextureLevelParameterfvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureLevelParameteriv"); printf("glGetTextureLevelParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureLevelParameterivEXT"); printf("glGetTextureLevelParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameterIiv"); printf("glGetTextureParameterIiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameterIivEXT"); printf("glGetTextureParameterIivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameterIuiv"); printf("glGetTextureParameterIuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameterIuivEXT"); printf("glGetTextureParameterIuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameterfv"); printf("glGetTextureParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameterfvEXT"); printf("glGetTextureParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameteriv"); printf("glGetTextureParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureParameterivEXT"); printf("glGetTextureParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureSamplerHandleARB"); printf("glGetTextureSamplerHandleARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureSamplerHandleNV"); printf("glGetTextureSamplerHandleNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTextureSubImage"); printf("glGetTextureSubImage : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTrackMatrixivNV"); printf("glGetTrackMatrixivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTransformFeedbackVarying"); printf("glGetTransformFeedbackVarying : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTransformFeedbackVaryingEXT"); printf("glGetTransformFeedbackVaryingEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glGetTransformFeedbackVaryingNV"); printf("glGetTransformFeedbackVaryingNV: %p\n", p); p = gl.OSMesaGetProcAddress("glGetTransformFeedbacki64_v"); printf("glGetTransformFeedbacki64_v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTransformFeedbacki_v"); printf("glGetTransformFeedbacki_v : %p\n", p); p = gl.OSMesaGetProcAddress("glGetTransformFeedbackiv"); printf("glGetTransformFeedbackiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformBlockIndex"); printf("glGetUniformBlockIndex : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformBufferSizeEXT"); printf("glGetUniformBufferSizeEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformIndices"); printf("glGetUniformIndices : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformLocation"); printf("glGetUniformLocation : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformLocationARB"); printf("glGetUniformLocationARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformOffsetEXT"); printf("glGetUniformOffsetEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformSubroutineuiv"); printf("glGetUniformSubroutineuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformdv"); printf("glGetUniformdv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformfv"); printf("glGetUniformfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformfvARB"); printf("glGetUniformfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformi64vARB"); printf("glGetUniformi64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformi64vNV"); printf("glGetUniformi64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformiv"); printf("glGetUniformiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformivARB"); printf("glGetUniformivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformui64vARB"); printf("glGetUniformui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformui64vNV"); printf("glGetUniformui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformuiv"); printf("glGetUniformuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUniformuivEXT"); printf("glGetUniformuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUnsignedBytei_vEXT"); printf("glGetUnsignedBytei_vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetUnsignedBytevEXT"); printf("glGetUnsignedBytevEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVariantArrayObjectfvATI"); printf("glGetVariantArrayObjectfvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVariantArrayObjectivATI"); printf("glGetVariantArrayObjectivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVariantBooleanvEXT"); printf("glGetVariantBooleanvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVariantFloatvEXT"); printf("glGetVariantFloatvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVariantIntegervEXT"); printf("glGetVariantIntegervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVariantPointervEXT"); printf("glGetVariantPointervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVaryingLocationNV"); printf("glGetVaryingLocationNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexArrayIndexed64iv"); printf("glGetVertexArrayIndexed64iv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexArrayIndexediv"); printf("glGetVertexArrayIndexediv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexArrayIntegeri_vEXT"); printf("glGetVertexArrayIntegeri_vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexArrayIntegervEXT"); printf("glGetVertexArrayIntegervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexArrayPointeri_vEXT"); printf("glGetVertexArrayPointeri_vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexArrayPointervEXT"); printf("glGetVertexArrayPointervEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexArrayiv"); printf("glGetVertexArrayiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribArrayObjectfvATI"); printf("glGetVertexAttribArrayObjectfvATI: %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribArrayObjectivATI"); printf("glGetVertexAttribArrayObjectivATI: %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribIiv"); printf("glGetVertexAttribIiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribIivEXT"); printf("glGetVertexAttribIivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribIuiv"); printf("glGetVertexAttribIuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribIuivEXT"); printf("glGetVertexAttribIuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribLdv"); printf("glGetVertexAttribLdv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribLdvEXT"); printf("glGetVertexAttribLdvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribLi64vNV"); printf("glGetVertexAttribLi64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribLui64vARB"); printf("glGetVertexAttribLui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribLui64vNV"); printf("glGetVertexAttribLui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribPointerv"); printf("glGetVertexAttribPointerv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribPointervARB"); printf("glGetVertexAttribPointervARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribPointervNV"); printf("glGetVertexAttribPointervNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribdv"); printf("glGetVertexAttribdv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribdvARB"); printf("glGetVertexAttribdvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribdvNV"); printf("glGetVertexAttribdvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribfv"); printf("glGetVertexAttribfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribfvARB"); printf("glGetVertexAttribfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribfvNV"); printf("glGetVertexAttribfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribiv"); printf("glGetVertexAttribiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribivARB"); printf("glGetVertexAttribivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVertexAttribivNV"); printf("glGetVertexAttribivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideoCaptureStreamdvNV"); printf("glGetVideoCaptureStreamdvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideoCaptureStreamfvNV"); printf("glGetVideoCaptureStreamfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideoCaptureStreamivNV"); printf("glGetVideoCaptureStreamivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideoCaptureivNV"); printf("glGetVideoCaptureivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideoi64vNV"); printf("glGetVideoi64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideoivNV"); printf("glGetVideoivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideoui64vNV"); printf("glGetVideoui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVideouivNV"); printf("glGetVideouivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetVkProcAddrNV"); printf("glGetVkProcAddrNV : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnColorTable"); printf("glGetnColorTable : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnColorTableARB"); printf("glGetnColorTableARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnCompressedTexImage"); printf("glGetnCompressedTexImage : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnCompressedTexImageARB"); printf("glGetnCompressedTexImageARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnConvolutionFilter"); printf("glGetnConvolutionFilter : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnConvolutionFilterARB"); printf("glGetnConvolutionFilterARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnHistogram"); printf("glGetnHistogram : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnHistogramARB"); printf("glGetnHistogramARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMapdv"); printf("glGetnMapdv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMapdvARB"); printf("glGetnMapdvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMapfv"); printf("glGetnMapfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMapfvARB"); printf("glGetnMapfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMapiv"); printf("glGetnMapiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMapivARB"); printf("glGetnMapivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMinmax"); printf("glGetnMinmax : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnMinmaxARB"); printf("glGetnMinmaxARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPixelMapfv"); printf("glGetnPixelMapfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPixelMapfvARB"); printf("glGetnPixelMapfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPixelMapuiv"); printf("glGetnPixelMapuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPixelMapuivARB"); printf("glGetnPixelMapuivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPixelMapusv"); printf("glGetnPixelMapusv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPixelMapusvARB"); printf("glGetnPixelMapusvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPolygonStipple"); printf("glGetnPolygonStipple : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnPolygonStippleARB"); printf("glGetnPolygonStippleARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnSeparableFilter"); printf("glGetnSeparableFilter : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnSeparableFilterARB"); printf("glGetnSeparableFilterARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnTexImage"); printf("glGetnTexImage : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnTexImageARB"); printf("glGetnTexImageARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformdv"); printf("glGetnUniformdv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformdvARB"); printf("glGetnUniformdvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformfv"); printf("glGetnUniformfv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformfvARB"); printf("glGetnUniformfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformi64vARB"); printf("glGetnUniformi64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformiv"); printf("glGetnUniformiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformivARB"); printf("glGetnUniformivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformui64vARB"); printf("glGetnUniformui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformuiv"); printf("glGetnUniformuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glGetnUniformuivARB"); printf("glGetnUniformuivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactorbSUN"); printf("glGlobalAlphaFactorbSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactordSUN"); printf("glGlobalAlphaFactordSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactorfSUN"); printf("glGlobalAlphaFactorfSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactoriSUN"); printf("glGlobalAlphaFactoriSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactorsSUN"); printf("glGlobalAlphaFactorsSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactorubSUN"); printf("glGlobalAlphaFactorubSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactoruiSUN"); printf("glGlobalAlphaFactoruiSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glGlobalAlphaFactorusSUN"); printf("glGlobalAlphaFactorusSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glHint"); printf("glHint : %p\n", p); p = gl.OSMesaGetProcAddress("glHintPGI"); printf("glHintPGI : %p\n", p); p = gl.OSMesaGetProcAddress("glHistogram"); printf("glHistogram : %p\n", p); p = gl.OSMesaGetProcAddress("glHistogramEXT"); printf("glHistogramEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIglooInterfaceSGIX"); printf("glIglooInterfaceSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glImageTransformParameterfHP"); printf("glImageTransformParameterfHP : %p\n", p); p = gl.OSMesaGetProcAddress("glImageTransformParameterfvHP"); printf("glImageTransformParameterfvHP : %p\n", p); p = gl.OSMesaGetProcAddress("glImageTransformParameteriHP"); printf("glImageTransformParameteriHP : %p\n", p); p = gl.OSMesaGetProcAddress("glImageTransformParameterivHP"); printf("glImageTransformParameterivHP : %p\n", p); p = gl.OSMesaGetProcAddress("glImportMemoryFdEXT"); printf("glImportMemoryFdEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glImportMemoryWin32HandleEXT"); printf("glImportMemoryWin32HandleEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glImportMemoryWin32NameEXT"); printf("glImportMemoryWin32NameEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glImportSemaphoreFdEXT"); printf("glImportSemaphoreFdEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glImportSemaphoreWin32HandleEXT"); printf("glImportSemaphoreWin32HandleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glImportSemaphoreWin32NameEXT"); printf("glImportSemaphoreWin32NameEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glImportSyncEXT"); printf("glImportSyncEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexFormatNV"); printf("glIndexFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexFuncEXT"); printf("glIndexFuncEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexMask"); printf("glIndexMask : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexMaterialEXT"); printf("glIndexMaterialEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexPointer"); printf("glIndexPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexPointerEXT"); printf("glIndexPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexPointerListIBM"); printf("glIndexPointerListIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexd"); printf("glIndexd : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexdv"); printf("glIndexdv : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexf"); printf("glIndexf : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexfv"); printf("glIndexfv : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexi"); printf("glIndexi : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexiv"); printf("glIndexiv : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexs"); printf("glIndexs : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexsv"); printf("glIndexsv : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexub"); printf("glIndexub : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexubv"); printf("glIndexubv : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexxOES"); printf("glIndexxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glIndexxvOES"); printf("glIndexxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glInitNames"); printf("glInitNames : %p\n", p); p = gl.OSMesaGetProcAddress("glInsertComponentEXT"); printf("glInsertComponentEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glInsertEventMarkerEXT"); printf("glInsertEventMarkerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glInstrumentsBufferSGIX"); printf("glInstrumentsBufferSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glInterleavedArrays"); printf("glInterleavedArrays : %p\n", p); p = gl.OSMesaGetProcAddress("glInterpolatePathsNV"); printf("glInterpolatePathsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateBufferData"); printf("glInvalidateBufferData : %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateBufferSubData"); printf("glInvalidateBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateFramebuffer"); printf("glInvalidateFramebuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateNamedFramebufferData"); printf("glInvalidateNamedFramebufferData: %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateNamedFramebufferSubData"); printf("glInvalidateNamedFramebufferSubData: %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateSubFramebuffer"); printf("glInvalidateSubFramebuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateTexImage"); printf("glInvalidateTexImage : %p\n", p); p = gl.OSMesaGetProcAddress("glInvalidateTexSubImage"); printf("glInvalidateTexSubImage : %p\n", p); p = gl.OSMesaGetProcAddress("glIsAsyncMarkerSGIX"); printf("glIsAsyncMarkerSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glIsBuffer"); printf("glIsBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glIsBufferARB"); printf("glIsBufferARB : %p\n", p); p = gl.OSMesaGetProcAddress("glIsBufferResidentNV"); printf("glIsBufferResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsCommandListNV"); printf("glIsCommandListNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsEnabled"); printf("glIsEnabled : %p\n", p); p = gl.OSMesaGetProcAddress("glIsEnabledIndexedEXT"); printf("glIsEnabledIndexedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIsEnabledi"); printf("glIsEnabledi : %p\n", p); p = gl.OSMesaGetProcAddress("glIsFenceAPPLE"); printf("glIsFenceAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glIsFenceNV"); printf("glIsFenceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsFramebuffer"); printf("glIsFramebuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glIsFramebufferEXT"); printf("glIsFramebufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIsImageHandleResidentARB"); printf("glIsImageHandleResidentARB : %p\n", p); p = gl.OSMesaGetProcAddress("glIsImageHandleResidentNV"); printf("glIsImageHandleResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsList"); printf("glIsList : %p\n", p); p = gl.OSMesaGetProcAddress("glIsMemoryObjectEXT"); printf("glIsMemoryObjectEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIsNameAMD"); printf("glIsNameAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glIsNamedBufferResidentNV"); printf("glIsNamedBufferResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsNamedStringARB"); printf("glIsNamedStringARB : %p\n", p); p = gl.OSMesaGetProcAddress("glIsObjectBufferATI"); printf("glIsObjectBufferATI : %p\n", p); p = gl.OSMesaGetProcAddress("glIsOcclusionQueryNV"); printf("glIsOcclusionQueryNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsPathNV"); printf("glIsPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsPointInFillPathNV"); printf("glIsPointInFillPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsPointInStrokePathNV"); printf("glIsPointInStrokePathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsProgram"); printf("glIsProgram : %p\n", p); p = gl.OSMesaGetProcAddress("glIsProgramARB"); printf("glIsProgramARB : %p\n", p); p = gl.OSMesaGetProcAddress("glIsProgramNV"); printf("glIsProgramNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsProgramPipeline"); printf("glIsProgramPipeline : %p\n", p); p = gl.OSMesaGetProcAddress("glIsQuery"); printf("glIsQuery : %p\n", p); p = gl.OSMesaGetProcAddress("glIsQueryARB"); printf("glIsQueryARB : %p\n", p); p = gl.OSMesaGetProcAddress("glIsRenderbuffer"); printf("glIsRenderbuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glIsRenderbufferEXT"); printf("glIsRenderbufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIsSampler"); printf("glIsSampler : %p\n", p); p = gl.OSMesaGetProcAddress("glIsSemaphoreEXT"); printf("glIsSemaphoreEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIsShader"); printf("glIsShader : %p\n", p); p = gl.OSMesaGetProcAddress("glIsStateNV"); printf("glIsStateNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsSync"); printf("glIsSync : %p\n", p); p = gl.OSMesaGetProcAddress("glIsTexture"); printf("glIsTexture : %p\n", p); p = gl.OSMesaGetProcAddress("glIsTextureEXT"); printf("glIsTextureEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIsTextureHandleResidentARB"); printf("glIsTextureHandleResidentARB : %p\n", p); p = gl.OSMesaGetProcAddress("glIsTextureHandleResidentNV"); printf("glIsTextureHandleResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsTransformFeedback"); printf("glIsTransformFeedback : %p\n", p); p = gl.OSMesaGetProcAddress("glIsTransformFeedbackNV"); printf("glIsTransformFeedbackNV : %p\n", p); p = gl.OSMesaGetProcAddress("glIsVariantEnabledEXT"); printf("glIsVariantEnabledEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glIsVertexArray"); printf("glIsVertexArray : %p\n", p); p = gl.OSMesaGetProcAddress("glIsVertexArrayAPPLE"); printf("glIsVertexArrayAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glIsVertexAttribEnabledAPPLE"); printf("glIsVertexAttribEnabledAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glLGPUCopyImageSubDataNVX"); printf("glLGPUCopyImageSubDataNVX : %p\n", p); p = gl.OSMesaGetProcAddress("glLGPUInterlockNVX"); printf("glLGPUInterlockNVX : %p\n", p); p = gl.OSMesaGetProcAddress("glLGPUNamedBufferSubDataNVX"); printf("glLGPUNamedBufferSubDataNVX : %p\n", p); p = gl.OSMesaGetProcAddress("glLabelObjectEXT"); printf("glLabelObjectEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glLightEnviSGIX"); printf("glLightEnviSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glLightModelf"); printf("glLightModelf : %p\n", p); p = gl.OSMesaGetProcAddress("glLightModelfv"); printf("glLightModelfv : %p\n", p); p = gl.OSMesaGetProcAddress("glLightModeli"); printf("glLightModeli : %p\n", p); p = gl.OSMesaGetProcAddress("glLightModeliv"); printf("glLightModeliv : %p\n", p); p = gl.OSMesaGetProcAddress("glLightModelxOES"); printf("glLightModelxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glLightModelxvOES"); printf("glLightModelxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glLightf"); printf("glLightf : %p\n", p); p = gl.OSMesaGetProcAddress("glLightfv"); printf("glLightfv : %p\n", p); p = gl.OSMesaGetProcAddress("glLighti"); printf("glLighti : %p\n", p); p = gl.OSMesaGetProcAddress("glLightiv"); printf("glLightiv : %p\n", p); p = gl.OSMesaGetProcAddress("glLightxOES"); printf("glLightxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glLightxvOES"); printf("glLightxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glLineStipple"); printf("glLineStipple : %p\n", p); p = gl.OSMesaGetProcAddress("glLineWidth"); printf("glLineWidth : %p\n", p); p = gl.OSMesaGetProcAddress("glLineWidthxOES"); printf("glLineWidthxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glLinkProgram"); printf("glLinkProgram : %p\n", p); p = gl.OSMesaGetProcAddress("glLinkProgramARB"); printf("glLinkProgramARB : %p\n", p); p = gl.OSMesaGetProcAddress("glListBase"); printf("glListBase : %p\n", p); p = gl.OSMesaGetProcAddress("glListDrawCommandsStatesClientNV"); printf("glListDrawCommandsStatesClientNV: %p\n", p); p = gl.OSMesaGetProcAddress("glListParameterfSGIX"); printf("glListParameterfSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glListParameterfvSGIX"); printf("glListParameterfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glListParameteriSGIX"); printf("glListParameteriSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glListParameterivSGIX"); printf("glListParameterivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadIdentity"); printf("glLoadIdentity : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadIdentityDeformationMapSGIX"); printf("glLoadIdentityDeformationMapSGIX: %p\n", p); p = gl.OSMesaGetProcAddress("glLoadMatrixd"); printf("glLoadMatrixd : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadMatrixf"); printf("glLoadMatrixf : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadMatrixxOES"); printf("glLoadMatrixxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadName"); printf("glLoadName : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadProgramNV"); printf("glLoadProgramNV : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadTransposeMatrixd"); printf("glLoadTransposeMatrixd : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadTransposeMatrixdARB"); printf("glLoadTransposeMatrixdARB : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadTransposeMatrixf"); printf("glLoadTransposeMatrixf : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadTransposeMatrixfARB"); printf("glLoadTransposeMatrixfARB : %p\n", p); p = gl.OSMesaGetProcAddress("glLoadTransposeMatrixxOES"); printf("glLoadTransposeMatrixxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glLockArraysEXT"); printf("glLockArraysEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glLogicOp"); printf("glLogicOp : %p\n", p); p = gl.OSMesaGetProcAddress("glMakeBufferNonResidentNV"); printf("glMakeBufferNonResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMakeBufferResidentNV"); printf("glMakeBufferResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMakeImageHandleNonResidentARB"); printf("glMakeImageHandleNonResidentARB: %p\n", p); p = gl.OSMesaGetProcAddress("glMakeImageHandleNonResidentNV"); printf("glMakeImageHandleNonResidentNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMakeImageHandleResidentARB"); printf("glMakeImageHandleResidentARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMakeImageHandleResidentNV"); printf("glMakeImageHandleResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMakeNamedBufferNonResidentNV"); printf("glMakeNamedBufferNonResidentNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMakeNamedBufferResidentNV"); printf("glMakeNamedBufferResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMakeTextureHandleNonResidentARB"); printf("glMakeTextureHandleNonResidentARB: %p\n", p); p = gl.OSMesaGetProcAddress("glMakeTextureHandleNonResidentNV"); printf("glMakeTextureHandleNonResidentNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMakeTextureHandleResidentARB"); printf("glMakeTextureHandleResidentARB: %p\n", p); p = gl.OSMesaGetProcAddress("glMakeTextureHandleResidentNV"); printf("glMakeTextureHandleResidentNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMap1d"); printf("glMap1d : %p\n", p); p = gl.OSMesaGetProcAddress("glMap1f"); printf("glMap1f : %p\n", p); p = gl.OSMesaGetProcAddress("glMap1xOES"); printf("glMap1xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMap2d"); printf("glMap2d : %p\n", p); p = gl.OSMesaGetProcAddress("glMap2f"); printf("glMap2f : %p\n", p); p = gl.OSMesaGetProcAddress("glMap2xOES"); printf("glMap2xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMapBuffer"); printf("glMapBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glMapBufferARB"); printf("glMapBufferARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMapBufferRange"); printf("glMapBufferRange : %p\n", p); p = gl.OSMesaGetProcAddress("glMapControlPointsNV"); printf("glMapControlPointsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMapGrid1d"); printf("glMapGrid1d : %p\n", p); p = gl.OSMesaGetProcAddress("glMapGrid1f"); printf("glMapGrid1f : %p\n", p); p = gl.OSMesaGetProcAddress("glMapGrid1xOES"); printf("glMapGrid1xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMapGrid2d"); printf("glMapGrid2d : %p\n", p); p = gl.OSMesaGetProcAddress("glMapGrid2f"); printf("glMapGrid2f : %p\n", p); p = gl.OSMesaGetProcAddress("glMapGrid2xOES"); printf("glMapGrid2xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMapNamedBuffer"); printf("glMapNamedBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glMapNamedBufferEXT"); printf("glMapNamedBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMapNamedBufferRange"); printf("glMapNamedBufferRange : %p\n", p); p = gl.OSMesaGetProcAddress("glMapNamedBufferRangeEXT"); printf("glMapNamedBufferRangeEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMapObjectBufferATI"); printf("glMapObjectBufferATI : %p\n", p); p = gl.OSMesaGetProcAddress("glMapParameterfvNV"); printf("glMapParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMapParameterivNV"); printf("glMapParameterivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMapTexture2DINTEL"); printf("glMapTexture2DINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glMapVertexAttrib1dAPPLE"); printf("glMapVertexAttrib1dAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glMapVertexAttrib1fAPPLE"); printf("glMapVertexAttrib1fAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glMapVertexAttrib2dAPPLE"); printf("glMapVertexAttrib2dAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glMapVertexAttrib2fAPPLE"); printf("glMapVertexAttrib2fAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glMaterialf"); printf("glMaterialf : %p\n", p); p = gl.OSMesaGetProcAddress("glMaterialfv"); printf("glMaterialfv : %p\n", p); p = gl.OSMesaGetProcAddress("glMateriali"); printf("glMateriali : %p\n", p); p = gl.OSMesaGetProcAddress("glMaterialiv"); printf("glMaterialiv : %p\n", p); p = gl.OSMesaGetProcAddress("glMaterialxOES"); printf("glMaterialxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMaterialxvOES"); printf("glMaterialxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixFrustumEXT"); printf("glMatrixFrustumEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixIndexPointerARB"); printf("glMatrixIndexPointerARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixIndexubvARB"); printf("glMatrixIndexubvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixIndexuivARB"); printf("glMatrixIndexuivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixIndexusvARB"); printf("glMatrixIndexusvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoad3x2fNV"); printf("glMatrixLoad3x2fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoad3x3fNV"); printf("glMatrixLoad3x3fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoadIdentityEXT"); printf("glMatrixLoadIdentityEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoadTranspose3x3fNV"); printf("glMatrixLoadTranspose3x3fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoadTransposedEXT"); printf("glMatrixLoadTransposedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoadTransposefEXT"); printf("glMatrixLoadTransposefEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoaddEXT"); printf("glMatrixLoaddEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixLoadfEXT"); printf("glMatrixLoadfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMode"); printf("glMatrixMode : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMult3x2fNV"); printf("glMatrixMult3x2fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMult3x3fNV"); printf("glMatrixMult3x3fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMultTranspose3x3fNV"); printf("glMatrixMultTranspose3x3fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMultTransposedEXT"); printf("glMatrixMultTransposedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMultTransposefEXT"); printf("glMatrixMultTransposefEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMultdEXT"); printf("glMatrixMultdEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixMultfEXT"); printf("glMatrixMultfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixOrthoEXT"); printf("glMatrixOrthoEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixPopEXT"); printf("glMatrixPopEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixPushEXT"); printf("glMatrixPushEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixRotatedEXT"); printf("glMatrixRotatedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixRotatefEXT"); printf("glMatrixRotatefEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixScaledEXT"); printf("glMatrixScaledEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixScalefEXT"); printf("glMatrixScalefEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixTranslatedEXT"); printf("glMatrixTranslatedEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMatrixTranslatefEXT"); printf("glMatrixTranslatefEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMaxShaderCompilerThreadsARB"); printf("glMaxShaderCompilerThreadsARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMaxShaderCompilerThreadsKHR"); printf("glMaxShaderCompilerThreadsKHR : %p\n", p); p = gl.OSMesaGetProcAddress("glMemoryBarrier"); printf("glMemoryBarrier : %p\n", p); p = gl.OSMesaGetProcAddress("glMemoryBarrierByRegion"); printf("glMemoryBarrierByRegion : %p\n", p); p = gl.OSMesaGetProcAddress("glMemoryBarrierEXT"); printf("glMemoryBarrierEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMemoryObjectParameterivEXT"); printf("glMemoryObjectParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMinSampleShading"); printf("glMinSampleShading : %p\n", p); p = gl.OSMesaGetProcAddress("glMinSampleShadingARB"); printf("glMinSampleShadingARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMinmax"); printf("glMinmax : %p\n", p); p = gl.OSMesaGetProcAddress("glMinmaxEXT"); printf("glMinmaxEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultMatrixd"); printf("glMultMatrixd : %p\n", p); p = gl.OSMesaGetProcAddress("glMultMatrixf"); printf("glMultMatrixf : %p\n", p); p = gl.OSMesaGetProcAddress("glMultMatrixxOES"); printf("glMultMatrixxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultTransposeMatrixd"); printf("glMultTransposeMatrixd : %p\n", p); p = gl.OSMesaGetProcAddress("glMultTransposeMatrixdARB"); printf("glMultTransposeMatrixdARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultTransposeMatrixf"); printf("glMultTransposeMatrixf : %p\n", p); p = gl.OSMesaGetProcAddress("glMultTransposeMatrixfARB"); printf("glMultTransposeMatrixfARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultTransposeMatrixxOES"); printf("glMultTransposeMatrixxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArrays"); printf("glMultiDrawArrays : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArraysEXT"); printf("glMultiDrawArraysEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArraysIndirect"); printf("glMultiDrawArraysIndirect : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArraysIndirectAMD"); printf("glMultiDrawArraysIndirectAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArraysIndirectBindlessCountNV"); printf("glMultiDrawArraysIndirectBindlessCountNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArraysIndirectBindlessNV"); printf("glMultiDrawArraysIndirectBindlessNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArraysIndirectCount"); printf("glMultiDrawArraysIndirectCount: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawArraysIndirectCountARB"); printf("glMultiDrawArraysIndirectCountARB: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementArrayAPPLE"); printf("glMultiDrawElementArrayAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElements"); printf("glMultiDrawElements : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsBaseVertex"); printf("glMultiDrawElementsBaseVertex : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsEXT"); printf("glMultiDrawElementsEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsIndirect"); printf("glMultiDrawElementsIndirect : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsIndirectAMD"); printf("glMultiDrawElementsIndirectAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsIndirectBindlessCountNV"); printf("glMultiDrawElementsIndirectBindlessCountNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsIndirectBindlessNV"); printf("glMultiDrawElementsIndirectBindlessNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsIndirectCount"); printf("glMultiDrawElementsIndirectCount: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawElementsIndirectCountARB"); printf("glMultiDrawElementsIndirectCountARB: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiDrawRangeElementArrayAPPLE"); printf("glMultiDrawRangeElementArrayAPPLE: %p\n", p); p = gl.OSMesaGetProcAddress("glMultiModeDrawArraysIBM"); printf("glMultiModeDrawArraysIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiModeDrawElementsIBM"); printf("glMultiModeDrawElementsIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexBufferEXT"); printf("glMultiTexBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1bOES"); printf("glMultiTexCoord1bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1bvOES"); printf("glMultiTexCoord1bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1d"); printf("glMultiTexCoord1d : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1dARB"); printf("glMultiTexCoord1dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1dv"); printf("glMultiTexCoord1dv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1dvARB"); printf("glMultiTexCoord1dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1f"); printf("glMultiTexCoord1f : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1fARB"); printf("glMultiTexCoord1fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1fv"); printf("glMultiTexCoord1fv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1fvARB"); printf("glMultiTexCoord1fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1hNV"); printf("glMultiTexCoord1hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1hvNV"); printf("glMultiTexCoord1hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1i"); printf("glMultiTexCoord1i : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1iARB"); printf("glMultiTexCoord1iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1iv"); printf("glMultiTexCoord1iv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1ivARB"); printf("glMultiTexCoord1ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1s"); printf("glMultiTexCoord1s : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1sARB"); printf("glMultiTexCoord1sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1sv"); printf("glMultiTexCoord1sv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1svARB"); printf("glMultiTexCoord1svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1xOES"); printf("glMultiTexCoord1xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord1xvOES"); printf("glMultiTexCoord1xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2bOES"); printf("glMultiTexCoord2bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2bvOES"); printf("glMultiTexCoord2bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2d"); printf("glMultiTexCoord2d : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2dARB"); printf("glMultiTexCoord2dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2dv"); printf("glMultiTexCoord2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2dvARB"); printf("glMultiTexCoord2dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2f"); printf("glMultiTexCoord2f : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2fARB"); printf("glMultiTexCoord2fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2fv"); printf("glMultiTexCoord2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2fvARB"); printf("glMultiTexCoord2fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2hNV"); printf("glMultiTexCoord2hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2hvNV"); printf("glMultiTexCoord2hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2i"); printf("glMultiTexCoord2i : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2iARB"); printf("glMultiTexCoord2iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2iv"); printf("glMultiTexCoord2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2ivARB"); printf("glMultiTexCoord2ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2s"); printf("glMultiTexCoord2s : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2sARB"); printf("glMultiTexCoord2sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2sv"); printf("glMultiTexCoord2sv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2svARB"); printf("glMultiTexCoord2svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2xOES"); printf("glMultiTexCoord2xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord2xvOES"); printf("glMultiTexCoord2xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3bOES"); printf("glMultiTexCoord3bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3bvOES"); printf("glMultiTexCoord3bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3d"); printf("glMultiTexCoord3d : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3dARB"); printf("glMultiTexCoord3dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3dv"); printf("glMultiTexCoord3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3dvARB"); printf("glMultiTexCoord3dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3f"); printf("glMultiTexCoord3f : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3fARB"); printf("glMultiTexCoord3fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3fv"); printf("glMultiTexCoord3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3fvARB"); printf("glMultiTexCoord3fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3hNV"); printf("glMultiTexCoord3hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3hvNV"); printf("glMultiTexCoord3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3i"); printf("glMultiTexCoord3i : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3iARB"); printf("glMultiTexCoord3iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3iv"); printf("glMultiTexCoord3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3ivARB"); printf("glMultiTexCoord3ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3s"); printf("glMultiTexCoord3s : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3sARB"); printf("glMultiTexCoord3sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3sv"); printf("glMultiTexCoord3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3svARB"); printf("glMultiTexCoord3svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3xOES"); printf("glMultiTexCoord3xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord3xvOES"); printf("glMultiTexCoord3xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4bOES"); printf("glMultiTexCoord4bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4bvOES"); printf("glMultiTexCoord4bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4d"); printf("glMultiTexCoord4d : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4dARB"); printf("glMultiTexCoord4dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4dv"); printf("glMultiTexCoord4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4dvARB"); printf("glMultiTexCoord4dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4f"); printf("glMultiTexCoord4f : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4fARB"); printf("glMultiTexCoord4fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4fv"); printf("glMultiTexCoord4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4fvARB"); printf("glMultiTexCoord4fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4hNV"); printf("glMultiTexCoord4hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4hvNV"); printf("glMultiTexCoord4hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4i"); printf("glMultiTexCoord4i : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4iARB"); printf("glMultiTexCoord4iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4iv"); printf("glMultiTexCoord4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4ivARB"); printf("glMultiTexCoord4ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4s"); printf("glMultiTexCoord4s : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4sARB"); printf("glMultiTexCoord4sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4sv"); printf("glMultiTexCoord4sv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4svARB"); printf("glMultiTexCoord4svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4xOES"); printf("glMultiTexCoord4xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoord4xvOES"); printf("glMultiTexCoord4xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP1ui"); printf("glMultiTexCoordP1ui : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP1uiv"); printf("glMultiTexCoordP1uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP2ui"); printf("glMultiTexCoordP2ui : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP2uiv"); printf("glMultiTexCoordP2uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP3ui"); printf("glMultiTexCoordP3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP3uiv"); printf("glMultiTexCoordP3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP4ui"); printf("glMultiTexCoordP4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordP4uiv"); printf("glMultiTexCoordP4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexCoordPointerEXT"); printf("glMultiTexCoordPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexEnvfEXT"); printf("glMultiTexEnvfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexEnvfvEXT"); printf("glMultiTexEnvfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexEnviEXT"); printf("glMultiTexEnviEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexEnvivEXT"); printf("glMultiTexEnvivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexGendEXT"); printf("glMultiTexGendEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexGendvEXT"); printf("glMultiTexGendvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexGenfEXT"); printf("glMultiTexGenfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexGenfvEXT"); printf("glMultiTexGenfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexGeniEXT"); printf("glMultiTexGeniEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexGenivEXT"); printf("glMultiTexGenivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexImage1DEXT"); printf("glMultiTexImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexImage2DEXT"); printf("glMultiTexImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexImage3DEXT"); printf("glMultiTexImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexParameterIivEXT"); printf("glMultiTexParameterIivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexParameterIuivEXT"); printf("glMultiTexParameterIuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexParameterfEXT"); printf("glMultiTexParameterfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexParameterfvEXT"); printf("glMultiTexParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexParameteriEXT"); printf("glMultiTexParameteriEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexParameterivEXT"); printf("glMultiTexParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexRenderbufferEXT"); printf("glMultiTexRenderbufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexSubImage1DEXT"); printf("glMultiTexSubImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexSubImage2DEXT"); printf("glMultiTexSubImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMultiTexSubImage3DEXT"); printf("glMultiTexSubImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastBarrierNV"); printf("glMulticastBarrierNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastBlitFramebufferNV"); printf("glMulticastBlitFramebufferNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastBufferSubDataNV"); printf("glMulticastBufferSubDataNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastCopyBufferSubDataNV"); printf("glMulticastCopyBufferSubDataNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastCopyImageSubDataNV"); printf("glMulticastCopyImageSubDataNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastFramebufferSampleLocationsfvNV"); printf("glMulticastFramebufferSampleLocationsfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastGetQueryObjecti64vNV"); printf("glMulticastGetQueryObjecti64vNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastGetQueryObjectivNV"); printf("glMulticastGetQueryObjectivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastGetQueryObjectui64vNV"); printf("glMulticastGetQueryObjectui64vNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastGetQueryObjectuivNV"); printf("glMulticastGetQueryObjectuivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glMulticastWaitSyncNV"); printf("glMulticastWaitSyncNV : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferData"); printf("glNamedBufferData : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferDataEXT"); printf("glNamedBufferDataEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferPageCommitmentARB"); printf("glNamedBufferPageCommitmentARB: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferPageCommitmentEXT"); printf("glNamedBufferPageCommitmentEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferStorage"); printf("glNamedBufferStorage : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferStorageEXT"); printf("glNamedBufferStorageEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferStorageExternalEXT"); printf("glNamedBufferStorageExternalEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferStorageMemEXT"); printf("glNamedBufferStorageMemEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferSubData"); printf("glNamedBufferSubData : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedBufferSubDataEXT"); printf("glNamedBufferSubDataEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedCopyBufferSubDataEXT"); printf("glNamedCopyBufferSubDataEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferDrawBuffer"); printf("glNamedFramebufferDrawBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferDrawBuffers"); printf("glNamedFramebufferDrawBuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferParameteri"); printf("glNamedFramebufferParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferParameteriEXT"); printf("glNamedFramebufferParameteriEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferReadBuffer"); printf("glNamedFramebufferReadBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferRenderbuffer"); printf("glNamedFramebufferRenderbuffer: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferRenderbufferEXT"); printf("glNamedFramebufferRenderbufferEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferSampleLocationsfvARB"); printf("glNamedFramebufferSampleLocationsfvARB: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferSampleLocationsfvNV"); printf("glNamedFramebufferSampleLocationsfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferSamplePositionsfvAMD"); printf("glNamedFramebufferSamplePositionsfvAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTexture"); printf("glNamedFramebufferTexture : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTexture1DEXT"); printf("glNamedFramebufferTexture1DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTexture2DEXT"); printf("glNamedFramebufferTexture2DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTexture3DEXT"); printf("glNamedFramebufferTexture3DEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTextureEXT"); printf("glNamedFramebufferTextureEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTextureFaceEXT"); printf("glNamedFramebufferTextureFaceEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTextureLayer"); printf("glNamedFramebufferTextureLayer: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedFramebufferTextureLayerEXT"); printf("glNamedFramebufferTextureLayerEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameter4dEXT"); printf("glNamedProgramLocalParameter4dEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameter4dvEXT"); printf("glNamedProgramLocalParameter4dvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameter4fEXT"); printf("glNamedProgramLocalParameter4fEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameter4fvEXT"); printf("glNamedProgramLocalParameter4fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameterI4iEXT"); printf("glNamedProgramLocalParameterI4iEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameterI4ivEXT"); printf("glNamedProgramLocalParameterI4ivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameterI4uiEXT"); printf("glNamedProgramLocalParameterI4uiEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameterI4uivEXT"); printf("glNamedProgramLocalParameterI4uivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParameters4fvEXT"); printf("glNamedProgramLocalParameters4fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParametersI4ivEXT"); printf("glNamedProgramLocalParametersI4ivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramLocalParametersI4uivEXT"); printf("glNamedProgramLocalParametersI4uivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedProgramStringEXT"); printf("glNamedProgramStringEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedRenderbufferStorage"); printf("glNamedRenderbufferStorage : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedRenderbufferStorageEXT"); printf("glNamedRenderbufferStorageEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNamedRenderbufferStorageMultisample"); printf("glNamedRenderbufferStorageMultisample: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedRenderbufferStorageMultisampleCoverageEXT"); printf("glNamedRenderbufferStorageMultisampleCoverageEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedRenderbufferStorageMultisampleEXT"); printf("glNamedRenderbufferStorageMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glNamedStringARB"); printf("glNamedStringARB : %p\n", p); p = gl.OSMesaGetProcAddress("glNewList"); printf("glNewList : %p\n", p); p = gl.OSMesaGetProcAddress("glNewObjectBufferATI"); printf("glNewObjectBufferATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNewTraceMESA"); printf("glNewTraceMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3b"); printf("glNormal3b : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3bv"); printf("glNormal3bv : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3d"); printf("glNormal3d : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3dv"); printf("glNormal3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3f"); printf("glNormal3f : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3fVertex3fSUN"); printf("glNormal3fVertex3fSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3fVertex3fvSUN"); printf("glNormal3fVertex3fvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3fv"); printf("glNormal3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3hNV"); printf("glNormal3hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3hvNV"); printf("glNormal3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3i"); printf("glNormal3i : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3iv"); printf("glNormal3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3s"); printf("glNormal3s : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3sv"); printf("glNormal3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3xOES"); printf("glNormal3xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glNormal3xvOES"); printf("glNormal3xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalFormatNV"); printf("glNormalFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalP3ui"); printf("glNormalP3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalP3uiv"); printf("glNormalP3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalPointer"); printf("glNormalPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalPointerEXT"); printf("glNormalPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalPointerListIBM"); printf("glNormalPointerListIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalPointervINTEL"); printf("glNormalPointervINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3bATI"); printf("glNormalStream3bATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3bvATI"); printf("glNormalStream3bvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3dATI"); printf("glNormalStream3dATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3dvATI"); printf("glNormalStream3dvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3fATI"); printf("glNormalStream3fATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3fvATI"); printf("glNormalStream3fvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3iATI"); printf("glNormalStream3iATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3ivATI"); printf("glNormalStream3ivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3sATI"); printf("glNormalStream3sATI : %p\n", p); p = gl.OSMesaGetProcAddress("glNormalStream3svATI"); printf("glNormalStream3svATI : %p\n", p); p = gl.OSMesaGetProcAddress("glObjectLabel"); printf("glObjectLabel : %p\n", p); p = gl.OSMesaGetProcAddress("glObjectPtrLabel"); printf("glObjectPtrLabel : %p\n", p); p = gl.OSMesaGetProcAddress("glObjectPurgeableAPPLE"); printf("glObjectPurgeableAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glObjectUnpurgeableAPPLE"); printf("glObjectUnpurgeableAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glOrtho"); printf("glOrtho : %p\n", p); p = gl.OSMesaGetProcAddress("glOrthof"); printf("glOrthof : %p\n", p); p = gl.OSMesaGetProcAddress("glOrthofOES"); printf("glOrthofOES : %p\n", p); p = gl.OSMesaGetProcAddress("glOrthoxOES"); printf("glOrthoxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glPNTrianglesfATI"); printf("glPNTrianglesfATI : %p\n", p); p = gl.OSMesaGetProcAddress("glPNTrianglesiATI"); printf("glPNTrianglesiATI : %p\n", p); p = gl.OSMesaGetProcAddress("glPassTexCoordATI"); printf("glPassTexCoordATI : %p\n", p); p = gl.OSMesaGetProcAddress("glPassThrough"); printf("glPassThrough : %p\n", p); p = gl.OSMesaGetProcAddress("glPassThroughxOES"); printf("glPassThroughxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glPatchParameterfv"); printf("glPatchParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glPatchParameteri"); printf("glPatchParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glPathColorGenNV"); printf("glPathColorGenNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathCommandsNV"); printf("glPathCommandsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathCoordsNV"); printf("glPathCoordsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathCoverDepthFuncNV"); printf("glPathCoverDepthFuncNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathDashArrayNV"); printf("glPathDashArrayNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathFogGenNV"); printf("glPathFogGenNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathGlyphIndexArrayNV"); printf("glPathGlyphIndexArrayNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathGlyphIndexRangeNV"); printf("glPathGlyphIndexRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathGlyphRangeNV"); printf("glPathGlyphRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathGlyphsNV"); printf("glPathGlyphsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathMemoryGlyphIndexArrayNV"); printf("glPathMemoryGlyphIndexArrayNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathParameterfNV"); printf("glPathParameterfNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathParameterfvNV"); printf("glPathParameterfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathParameteriNV"); printf("glPathParameteriNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathParameterivNV"); printf("glPathParameterivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathStencilDepthOffsetNV"); printf("glPathStencilDepthOffsetNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathStencilFuncNV"); printf("glPathStencilFuncNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathStringNV"); printf("glPathStringNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathSubCommandsNV"); printf("glPathSubCommandsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathSubCoordsNV"); printf("glPathSubCoordsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPathTexGenNV"); printf("glPathTexGenNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPauseTransformFeedback"); printf("glPauseTransformFeedback : %p\n", p); p = gl.OSMesaGetProcAddress("glPauseTransformFeedbackNV"); printf("glPauseTransformFeedbackNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelDataRangeNV"); printf("glPixelDataRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelMapfv"); printf("glPixelMapfv : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelMapuiv"); printf("glPixelMapuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelMapusv"); printf("glPixelMapusv : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelMapx"); printf("glPixelMapx : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelStoref"); printf("glPixelStoref : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelStorei"); printf("glPixelStorei : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelStorex"); printf("glPixelStorex : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTexGenParameterfSGIS"); printf("glPixelTexGenParameterfSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTexGenParameterfvSGIS"); printf("glPixelTexGenParameterfvSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTexGenParameteriSGIS"); printf("glPixelTexGenParameteriSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTexGenParameterivSGIS"); printf("glPixelTexGenParameterivSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTexGenSGIX"); printf("glPixelTexGenSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTransferf"); printf("glPixelTransferf : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTransferi"); printf("glPixelTransferi : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTransferxOES"); printf("glPixelTransferxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTransformParameterfEXT"); printf("glPixelTransformParameterfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTransformParameterfvEXT"); printf("glPixelTransformParameterfvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTransformParameteriEXT"); printf("glPixelTransformParameteriEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelTransformParameterivEXT"); printf("glPixelTransformParameterivEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glPixelZoom"); printf("glPixelZoom : %p\n", p); p = gl.OSMesaGetProcAddress("glPixelZoomxOES"); printf("glPixelZoomxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glPointAlongPathNV"); printf("glPointAlongPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterf"); printf("glPointParameterf : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterfARB"); printf("glPointParameterfARB : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterfEXT"); printf("glPointParameterfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterfSGIS"); printf("glPointParameterfSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterfv"); printf("glPointParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterfvARB"); printf("glPointParameterfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterfvEXT"); printf("glPointParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterfvSGIS"); printf("glPointParameterfvSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameteri"); printf("glPointParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameteriNV"); printf("glPointParameteriNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameteriv"); printf("glPointParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterivNV"); printf("glPointParameterivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPointParameterxvOES"); printf("glPointParameterxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glPointSize"); printf("glPointSize : %p\n", p); p = gl.OSMesaGetProcAddress("glPointSizePointerAPPLE"); printf("glPointSizePointerAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glPointSizexOES"); printf("glPointSizexOES : %p\n", p); p = gl.OSMesaGetProcAddress("glPollAsyncSGIX"); printf("glPollAsyncSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glPollInstrumentsSGIX"); printf("glPollInstrumentsSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glPolygonMode"); printf("glPolygonMode : %p\n", p); p = gl.OSMesaGetProcAddress("glPolygonOffset"); printf("glPolygonOffset : %p\n", p); p = gl.OSMesaGetProcAddress("glPolygonOffsetClamp"); printf("glPolygonOffsetClamp : %p\n", p); p = gl.OSMesaGetProcAddress("glPolygonOffsetClampEXT"); printf("glPolygonOffsetClampEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPolygonOffsetEXT"); printf("glPolygonOffsetEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPolygonOffsetxOES"); printf("glPolygonOffsetxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glPolygonStipple"); printf("glPolygonStipple : %p\n", p); p = gl.OSMesaGetProcAddress("glPopAttrib"); printf("glPopAttrib : %p\n", p); p = gl.OSMesaGetProcAddress("glPopClientAttrib"); printf("glPopClientAttrib : %p\n", p); p = gl.OSMesaGetProcAddress("glPopDebugGroup"); printf("glPopDebugGroup : %p\n", p); p = gl.OSMesaGetProcAddress("glPopGroupMarkerEXT"); printf("glPopGroupMarkerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPopMatrix"); printf("glPopMatrix : %p\n", p); p = gl.OSMesaGetProcAddress("glPopName"); printf("glPopName : %p\n", p); p = gl.OSMesaGetProcAddress("glPresentFrameDualFillNV"); printf("glPresentFrameDualFillNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPresentFrameKeyedNV"); printf("glPresentFrameKeyedNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPrimitiveBoundingBoxARB"); printf("glPrimitiveBoundingBoxARB : %p\n", p); p = gl.OSMesaGetProcAddress("glPrimitiveRestartIndex"); printf("glPrimitiveRestartIndex : %p\n", p); p = gl.OSMesaGetProcAddress("glPrimitiveRestartIndexNV"); printf("glPrimitiveRestartIndexNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPrimitiveRestartNV"); printf("glPrimitiveRestartNV : %p\n", p); p = gl.OSMesaGetProcAddress("glPrioritizeTextures"); printf("glPrioritizeTextures : %p\n", p); p = gl.OSMesaGetProcAddress("glPrioritizeTexturesEXT"); printf("glPrioritizeTexturesEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPrioritizeTexturesxOES"); printf("glPrioritizeTexturesxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramBinary"); printf("glProgramBinary : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramBufferParametersIivNV"); printf("glProgramBufferParametersIivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramBufferParametersIuivNV"); printf("glProgramBufferParametersIuivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramBufferParametersfvNV"); printf("glProgramBufferParametersfvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramCallbackMESA"); printf("glProgramCallbackMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameter4dARB"); printf("glProgramEnvParameter4dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameter4dvARB"); printf("glProgramEnvParameter4dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameter4fARB"); printf("glProgramEnvParameter4fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameter4fvARB"); printf("glProgramEnvParameter4fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameterI4iNV"); printf("glProgramEnvParameterI4iNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameterI4ivNV"); printf("glProgramEnvParameterI4ivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameterI4uiNV"); printf("glProgramEnvParameterI4uiNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameterI4uivNV"); printf("glProgramEnvParameterI4uivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParameters4fvEXT"); printf("glProgramEnvParameters4fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParametersI4ivNV"); printf("glProgramEnvParametersI4ivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramEnvParametersI4uivNV"); printf("glProgramEnvParametersI4uivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameter4dARB"); printf("glProgramLocalParameter4dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameter4dvARB"); printf("glProgramLocalParameter4dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameter4fARB"); printf("glProgramLocalParameter4fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameter4fvARB"); printf("glProgramLocalParameter4fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameterI4iNV"); printf("glProgramLocalParameterI4iNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameterI4ivNV"); printf("glProgramLocalParameterI4ivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameterI4uiNV"); printf("glProgramLocalParameterI4uiNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameterI4uivNV"); printf("glProgramLocalParameterI4uivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParameters4fvEXT"); printf("glProgramLocalParameters4fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParametersI4ivNV"); printf("glProgramLocalParametersI4ivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramLocalParametersI4uivNV"); printf("glProgramLocalParametersI4uivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramNamedParameter4dNV"); printf("glProgramNamedParameter4dNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramNamedParameter4dvNV"); printf("glProgramNamedParameter4dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramNamedParameter4fNV"); printf("glProgramNamedParameter4fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramNamedParameter4fvNV"); printf("glProgramNamedParameter4fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameter4dNV"); printf("glProgramParameter4dNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameter4dvNV"); printf("glProgramParameter4dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameter4fNV"); printf("glProgramParameter4fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameter4fvNV"); printf("glProgramParameter4fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameteri"); printf("glProgramParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameteriARB"); printf("glProgramParameteriARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameteriEXT"); printf("glProgramParameteriEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameters4dvNV"); printf("glProgramParameters4dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramParameters4fvNV"); printf("glProgramParameters4fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramPathFragmentInputGenNV"); printf("glProgramPathFragmentInputGenNV: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramStringARB"); printf("glProgramStringARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramSubroutineParametersuivNV"); printf("glProgramSubroutineParametersuivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1d"); printf("glProgramUniform1d : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1dEXT"); printf("glProgramUniform1dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1dv"); printf("glProgramUniform1dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1dvEXT"); printf("glProgramUniform1dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1f"); printf("glProgramUniform1f : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1fEXT"); printf("glProgramUniform1fEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1fv"); printf("glProgramUniform1fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1fvEXT"); printf("glProgramUniform1fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1i"); printf("glProgramUniform1i : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1i64ARB"); printf("glProgramUniform1i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1i64NV"); printf("glProgramUniform1i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1i64vARB"); printf("glProgramUniform1i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1i64vNV"); printf("glProgramUniform1i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1iEXT"); printf("glProgramUniform1iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1iv"); printf("glProgramUniform1iv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1ivEXT"); printf("glProgramUniform1ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1ui"); printf("glProgramUniform1ui : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1ui64ARB"); printf("glProgramUniform1ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1ui64NV"); printf("glProgramUniform1ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1ui64vARB"); printf("glProgramUniform1ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1ui64vNV"); printf("glProgramUniform1ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1uiEXT"); printf("glProgramUniform1uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1uiv"); printf("glProgramUniform1uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform1uivEXT"); printf("glProgramUniform1uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2d"); printf("glProgramUniform2d : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2dEXT"); printf("glProgramUniform2dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2dv"); printf("glProgramUniform2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2dvEXT"); printf("glProgramUniform2dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2f"); printf("glProgramUniform2f : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2fEXT"); printf("glProgramUniform2fEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2fv"); printf("glProgramUniform2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2fvEXT"); printf("glProgramUniform2fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2i"); printf("glProgramUniform2i : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2i64ARB"); printf("glProgramUniform2i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2i64NV"); printf("glProgramUniform2i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2i64vARB"); printf("glProgramUniform2i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2i64vNV"); printf("glProgramUniform2i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2iEXT"); printf("glProgramUniform2iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2iv"); printf("glProgramUniform2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2ivEXT"); printf("glProgramUniform2ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2ui"); printf("glProgramUniform2ui : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2ui64ARB"); printf("glProgramUniform2ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2ui64NV"); printf("glProgramUniform2ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2ui64vARB"); printf("glProgramUniform2ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2ui64vNV"); printf("glProgramUniform2ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2uiEXT"); printf("glProgramUniform2uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2uiv"); printf("glProgramUniform2uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform2uivEXT"); printf("glProgramUniform2uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3d"); printf("glProgramUniform3d : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3dEXT"); printf("glProgramUniform3dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3dv"); printf("glProgramUniform3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3dvEXT"); printf("glProgramUniform3dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3f"); printf("glProgramUniform3f : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3fEXT"); printf("glProgramUniform3fEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3fv"); printf("glProgramUniform3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3fvEXT"); printf("glProgramUniform3fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3i"); printf("glProgramUniform3i : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3i64ARB"); printf("glProgramUniform3i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3i64NV"); printf("glProgramUniform3i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3i64vARB"); printf("glProgramUniform3i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3i64vNV"); printf("glProgramUniform3i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3iEXT"); printf("glProgramUniform3iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3iv"); printf("glProgramUniform3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3ivEXT"); printf("glProgramUniform3ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3ui"); printf("glProgramUniform3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3ui64ARB"); printf("glProgramUniform3ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3ui64NV"); printf("glProgramUniform3ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3ui64vARB"); printf("glProgramUniform3ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3ui64vNV"); printf("glProgramUniform3ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3uiEXT"); printf("glProgramUniform3uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3uiv"); printf("glProgramUniform3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform3uivEXT"); printf("glProgramUniform3uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4d"); printf("glProgramUniform4d : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4dEXT"); printf("glProgramUniform4dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4dv"); printf("glProgramUniform4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4dvEXT"); printf("glProgramUniform4dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4f"); printf("glProgramUniform4f : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4fEXT"); printf("glProgramUniform4fEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4fv"); printf("glProgramUniform4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4fvEXT"); printf("glProgramUniform4fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4i"); printf("glProgramUniform4i : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4i64ARB"); printf("glProgramUniform4i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4i64NV"); printf("glProgramUniform4i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4i64vARB"); printf("glProgramUniform4i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4i64vNV"); printf("glProgramUniform4i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4iEXT"); printf("glProgramUniform4iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4iv"); printf("glProgramUniform4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4ivEXT"); printf("glProgramUniform4ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4ui"); printf("glProgramUniform4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4ui64ARB"); printf("glProgramUniform4ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4ui64NV"); printf("glProgramUniform4ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4ui64vARB"); printf("glProgramUniform4ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4ui64vNV"); printf("glProgramUniform4ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4uiEXT"); printf("glProgramUniform4uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4uiv"); printf("glProgramUniform4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniform4uivEXT"); printf("glProgramUniform4uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformHandleui64ARB"); printf("glProgramUniformHandleui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformHandleui64NV"); printf("glProgramUniformHandleui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformHandleui64vARB"); printf("glProgramUniformHandleui64vARB: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformHandleui64vNV"); printf("glProgramUniformHandleui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2dv"); printf("glProgramUniformMatrix2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2dvEXT"); printf("glProgramUniformMatrix2dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2fv"); printf("glProgramUniformMatrix2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2fvEXT"); printf("glProgramUniformMatrix2fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x3dv"); printf("glProgramUniformMatrix2x3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x3dvEXT"); printf("glProgramUniformMatrix2x3dvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x3fv"); printf("glProgramUniformMatrix2x3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x3fvEXT"); printf("glProgramUniformMatrix2x3fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x4dv"); printf("glProgramUniformMatrix2x4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x4dvEXT"); printf("glProgramUniformMatrix2x4dvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x4fv"); printf("glProgramUniformMatrix2x4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix2x4fvEXT"); printf("glProgramUniformMatrix2x4fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3dv"); printf("glProgramUniformMatrix3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3dvEXT"); printf("glProgramUniformMatrix3dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3fv"); printf("glProgramUniformMatrix3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3fvEXT"); printf("glProgramUniformMatrix3fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x2dv"); printf("glProgramUniformMatrix3x2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x2dvEXT"); printf("glProgramUniformMatrix3x2dvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x2fv"); printf("glProgramUniformMatrix3x2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x2fvEXT"); printf("glProgramUniformMatrix3x2fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x4dv"); printf("glProgramUniformMatrix3x4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x4dvEXT"); printf("glProgramUniformMatrix3x4dvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x4fv"); printf("glProgramUniformMatrix3x4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix3x4fvEXT"); printf("glProgramUniformMatrix3x4fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4dv"); printf("glProgramUniformMatrix4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4dvEXT"); printf("glProgramUniformMatrix4dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4fv"); printf("glProgramUniformMatrix4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4fvEXT"); printf("glProgramUniformMatrix4fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x2dv"); printf("glProgramUniformMatrix4x2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x2dvEXT"); printf("glProgramUniformMatrix4x2dvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x2fv"); printf("glProgramUniformMatrix4x2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x2fvEXT"); printf("glProgramUniformMatrix4x2fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x3dv"); printf("glProgramUniformMatrix4x3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x3dvEXT"); printf("glProgramUniformMatrix4x3dvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x3fv"); printf("glProgramUniformMatrix4x3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformMatrix4x3fvEXT"); printf("glProgramUniformMatrix4x3fvEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformui64NV"); printf("glProgramUniformui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramUniformui64vNV"); printf("glProgramUniformui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProgramVertexLimitNV"); printf("glProgramVertexLimitNV : %p\n", p); p = gl.OSMesaGetProcAddress("glProvokingVertex"); printf("glProvokingVertex : %p\n", p); p = gl.OSMesaGetProcAddress("glProvokingVertexEXT"); printf("glProvokingVertexEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPushAttrib"); printf("glPushAttrib : %p\n", p); p = gl.OSMesaGetProcAddress("glPushClientAttrib"); printf("glPushClientAttrib : %p\n", p); p = gl.OSMesaGetProcAddress("glPushClientAttribDefaultEXT"); printf("glPushClientAttribDefaultEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPushDebugGroup"); printf("glPushDebugGroup : %p\n", p); p = gl.OSMesaGetProcAddress("glPushGroupMarkerEXT"); printf("glPushGroupMarkerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glPushMatrix"); printf("glPushMatrix : %p\n", p); p = gl.OSMesaGetProcAddress("glPushName"); printf("glPushName : %p\n", p); p = gl.OSMesaGetProcAddress("glQueryCounter"); printf("glQueryCounter : %p\n", p); p = gl.OSMesaGetProcAddress("glQueryMatrixxOES"); printf("glQueryMatrixxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glQueryObjectParameteruiAMD"); printf("glQueryObjectParameteruiAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glQueryResourceNV"); printf("glQueryResourceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glQueryResourceTagNV"); printf("glQueryResourceTagNV : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2d"); printf("glRasterPos2d : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2dv"); printf("glRasterPos2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2f"); printf("glRasterPos2f : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2fv"); printf("glRasterPos2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2i"); printf("glRasterPos2i : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2iv"); printf("glRasterPos2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2s"); printf("glRasterPos2s : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2sv"); printf("glRasterPos2sv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2xOES"); printf("glRasterPos2xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos2xvOES"); printf("glRasterPos2xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3d"); printf("glRasterPos3d : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3dv"); printf("glRasterPos3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3f"); printf("glRasterPos3f : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3fv"); printf("glRasterPos3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3i"); printf("glRasterPos3i : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3iv"); printf("glRasterPos3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3s"); printf("glRasterPos3s : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3sv"); printf("glRasterPos3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3xOES"); printf("glRasterPos3xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos3xvOES"); printf("glRasterPos3xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4d"); printf("glRasterPos4d : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4dv"); printf("glRasterPos4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4f"); printf("glRasterPos4f : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4fv"); printf("glRasterPos4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4i"); printf("glRasterPos4i : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4iv"); printf("glRasterPos4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4s"); printf("glRasterPos4s : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4sv"); printf("glRasterPos4sv : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4xOES"); printf("glRasterPos4xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterPos4xvOES"); printf("glRasterPos4xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glRasterSamplesEXT"); printf("glRasterSamplesEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glReadBuffer"); printf("glReadBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glReadInstrumentsSGIX"); printf("glReadInstrumentsSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glReadPixels"); printf("glReadPixels : %p\n", p); p = gl.OSMesaGetProcAddress("glReadnPixels"); printf("glReadnPixels : %p\n", p); p = gl.OSMesaGetProcAddress("glReadnPixelsARB"); printf("glReadnPixelsARB : %p\n", p); p = gl.OSMesaGetProcAddress("glRectd"); printf("glRectd : %p\n", p); p = gl.OSMesaGetProcAddress("glRectdv"); printf("glRectdv : %p\n", p); p = gl.OSMesaGetProcAddress("glRectf"); printf("glRectf : %p\n", p); p = gl.OSMesaGetProcAddress("glRectfv"); printf("glRectfv : %p\n", p); p = gl.OSMesaGetProcAddress("glRecti"); printf("glRecti : %p\n", p); p = gl.OSMesaGetProcAddress("glRectiv"); printf("glRectiv : %p\n", p); p = gl.OSMesaGetProcAddress("glRects"); printf("glRects : %p\n", p); p = gl.OSMesaGetProcAddress("glRectsv"); printf("glRectsv : %p\n", p); p = gl.OSMesaGetProcAddress("glRectxOES"); printf("glRectxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glRectxvOES"); printf("glRectxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glReferencePlaneSGIX"); printf("glReferencePlaneSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glReleaseKeyedMutexWin32EXT"); printf("glReleaseKeyedMutexWin32EXT : %p\n", p); p = gl.OSMesaGetProcAddress("glReleaseShaderCompiler"); printf("glReleaseShaderCompiler : %p\n", p); p = gl.OSMesaGetProcAddress("glRenderGpuMaskNV"); printf("glRenderGpuMaskNV : %p\n", p); p = gl.OSMesaGetProcAddress("glRenderMode"); printf("glRenderMode : %p\n", p); p = gl.OSMesaGetProcAddress("glRenderbufferStorage"); printf("glRenderbufferStorage : %p\n", p); p = gl.OSMesaGetProcAddress("glRenderbufferStorageEXT"); printf("glRenderbufferStorageEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glRenderbufferStorageMultisample"); printf("glRenderbufferStorageMultisample: %p\n", p); p = gl.OSMesaGetProcAddress("glRenderbufferStorageMultisampleCoverageNV"); printf("glRenderbufferStorageMultisampleCoverageNV: %p\n", p); p = gl.OSMesaGetProcAddress("glRenderbufferStorageMultisampleEXT"); printf("glRenderbufferStorageMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodePointerSUN"); printf("glReplacementCodePointerSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeubSUN"); printf("glReplacementCodeubSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeubvSUN"); printf("glReplacementCodeubvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiColor3fVertex3fSUN"); printf("glReplacementCodeuiColor3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiColor3fVertex3fvSUN"); printf("glReplacementCodeuiColor3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiColor4fNormal3fVertex3fSUN"); printf("glReplacementCodeuiColor4fNormal3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiColor4fNormal3fVertex3fvSUN"); printf("glReplacementCodeuiColor4fNormal3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiColor4ubVertex3fSUN"); printf("glReplacementCodeuiColor4ubVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiColor4ubVertex3fvSUN"); printf("glReplacementCodeuiColor4ubVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiNormal3fVertex3fSUN"); printf("glReplacementCodeuiNormal3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiNormal3fVertex3fvSUN"); printf("glReplacementCodeuiNormal3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiSUN"); printf("glReplacementCodeuiSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"); printf("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"); printf("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"); printf("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"); printf("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiTexCoord2fVertex3fSUN"); printf("glReplacementCodeuiTexCoord2fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiTexCoord2fVertex3fvSUN"); printf("glReplacementCodeuiTexCoord2fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiVertex3fSUN"); printf("glReplacementCodeuiVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuiVertex3fvSUN"); printf("glReplacementCodeuiVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeuivSUN"); printf("glReplacementCodeuivSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeusSUN"); printf("glReplacementCodeusSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glReplacementCodeusvSUN"); printf("glReplacementCodeusvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glRequestResidentProgramsNV"); printf("glRequestResidentProgramsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glResetHistogram"); printf("glResetHistogram : %p\n", p); p = gl.OSMesaGetProcAddress("glResetHistogramEXT"); printf("glResetHistogramEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glResetMinmax"); printf("glResetMinmax : %p\n", p); p = gl.OSMesaGetProcAddress("glResetMinmaxEXT"); printf("glResetMinmaxEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glResizeBuffersMESA"); printf("glResizeBuffersMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glResolveDepthValuesNV"); printf("glResolveDepthValuesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glResumeTransformFeedback"); printf("glResumeTransformFeedback : %p\n", p); p = gl.OSMesaGetProcAddress("glResumeTransformFeedbackNV"); printf("glResumeTransformFeedbackNV : %p\n", p); p = gl.OSMesaGetProcAddress("glRotated"); printf("glRotated : %p\n", p); p = gl.OSMesaGetProcAddress("glRotatef"); printf("glRotatef : %p\n", p); p = gl.OSMesaGetProcAddress("glRotatexOES"); printf("glRotatexOES : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleCoverage"); printf("glSampleCoverage : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleCoverageARB"); printf("glSampleCoverageARB : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleCoverageOES"); printf("glSampleCoverageOES : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleMapATI"); printf("glSampleMapATI : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleMaskEXT"); printf("glSampleMaskEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleMaskIndexedNV"); printf("glSampleMaskIndexedNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleMaskSGIS"); printf("glSampleMaskSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glSampleMaski"); printf("glSampleMaski : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplePass"); printf("glSamplePass : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplePassARB"); printf("glSamplePassARB : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplePatternEXT"); printf("glSamplePatternEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplePatternSGIS"); printf("glSamplePatternSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplerParameterIiv"); printf("glSamplerParameterIiv : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplerParameterIuiv"); printf("glSamplerParameterIuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplerParameterf"); printf("glSamplerParameterf : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplerParameterfv"); printf("glSamplerParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplerParameteri"); printf("glSamplerParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glSamplerParameteriv"); printf("glSamplerParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glScaled"); printf("glScaled : %p\n", p); p = gl.OSMesaGetProcAddress("glScalef"); printf("glScalef : %p\n", p); p = gl.OSMesaGetProcAddress("glScalexOES"); printf("glScalexOES : %p\n", p); p = gl.OSMesaGetProcAddress("glScissor"); printf("glScissor : %p\n", p); p = gl.OSMesaGetProcAddress("glScissorArrayv"); printf("glScissorArrayv : %p\n", p); p = gl.OSMesaGetProcAddress("glScissorIndexed"); printf("glScissorIndexed : %p\n", p); p = gl.OSMesaGetProcAddress("glScissorIndexedv"); printf("glScissorIndexedv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3b"); printf("glSecondaryColor3b : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3bEXT"); printf("glSecondaryColor3bEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3bv"); printf("glSecondaryColor3bv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3bvEXT"); printf("glSecondaryColor3bvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3d"); printf("glSecondaryColor3d : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3dEXT"); printf("glSecondaryColor3dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3dv"); printf("glSecondaryColor3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3dvEXT"); printf("glSecondaryColor3dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3f"); printf("glSecondaryColor3f : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3fEXT"); printf("glSecondaryColor3fEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3fv"); printf("glSecondaryColor3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3fvEXT"); printf("glSecondaryColor3fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3hNV"); printf("glSecondaryColor3hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3hvNV"); printf("glSecondaryColor3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3i"); printf("glSecondaryColor3i : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3iEXT"); printf("glSecondaryColor3iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3iv"); printf("glSecondaryColor3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3ivEXT"); printf("glSecondaryColor3ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3s"); printf("glSecondaryColor3s : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3sEXT"); printf("glSecondaryColor3sEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3sv"); printf("glSecondaryColor3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3svEXT"); printf("glSecondaryColor3svEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3ub"); printf("glSecondaryColor3ub : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3ubEXT"); printf("glSecondaryColor3ubEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3ubv"); printf("glSecondaryColor3ubv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3ubvEXT"); printf("glSecondaryColor3ubvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3ui"); printf("glSecondaryColor3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3uiEXT"); printf("glSecondaryColor3uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3uiv"); printf("glSecondaryColor3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3uivEXT"); printf("glSecondaryColor3uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3us"); printf("glSecondaryColor3us : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3usEXT"); printf("glSecondaryColor3usEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3usv"); printf("glSecondaryColor3usv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColor3usvEXT"); printf("glSecondaryColor3usvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColorFormatNV"); printf("glSecondaryColorFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColorP3ui"); printf("glSecondaryColorP3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColorP3uiv"); printf("glSecondaryColorP3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColorPointer"); printf("glSecondaryColorPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColorPointerEXT"); printf("glSecondaryColorPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSecondaryColorPointerListIBM"); printf("glSecondaryColorPointerListIBM: %p\n", p); p = gl.OSMesaGetProcAddress("glSelectBuffer"); printf("glSelectBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glSelectPerfMonitorCountersAMD"); printf("glSelectPerfMonitorCountersAMD: %p\n", p); p = gl.OSMesaGetProcAddress("glSemaphoreParameterui64vEXT"); printf("glSemaphoreParameterui64vEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSeparableFilter2D"); printf("glSeparableFilter2D : %p\n", p); p = gl.OSMesaGetProcAddress("glSeparableFilter2DEXT"); printf("glSeparableFilter2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSetFenceAPPLE"); printf("glSetFenceAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glSetFenceNV"); printf("glSetFenceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSetFragmentShaderConstantATI"); printf("glSetFragmentShaderConstantATI: %p\n", p); p = gl.OSMesaGetProcAddress("glSetInvariantEXT"); printf("glSetInvariantEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSetLocalConstantEXT"); printf("glSetLocalConstantEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSetMultisamplefvAMD"); printf("glSetMultisamplefvAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glShadeModel"); printf("glShadeModel : %p\n", p); p = gl.OSMesaGetProcAddress("glShaderBinary"); printf("glShaderBinary : %p\n", p); p = gl.OSMesaGetProcAddress("glShaderOp1EXT"); printf("glShaderOp1EXT : %p\n", p); p = gl.OSMesaGetProcAddress("glShaderOp2EXT"); printf("glShaderOp2EXT : %p\n", p); p = gl.OSMesaGetProcAddress("glShaderOp3EXT"); printf("glShaderOp3EXT : %p\n", p); p = gl.OSMesaGetProcAddress("glShaderSource"); printf("glShaderSource : %p\n", p); p = gl.OSMesaGetProcAddress("glShaderSourceARB"); printf("glShaderSourceARB : %p\n", p); p = gl.OSMesaGetProcAddress("glShaderStorageBlockBinding"); printf("glShaderStorageBlockBinding : %p\n", p); p = gl.OSMesaGetProcAddress("glSharpenTexFuncSGIS"); printf("glSharpenTexFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glSignalSemaphoreEXT"); printf("glSignalSemaphoreEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSignalVkFenceNV"); printf("glSignalVkFenceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSignalVkSemaphoreNV"); printf("glSignalVkSemaphoreNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSpecializeShader"); printf("glSpecializeShader : %p\n", p); p = gl.OSMesaGetProcAddress("glSpecializeShaderARB"); printf("glSpecializeShaderARB : %p\n", p); p = gl.OSMesaGetProcAddress("glSpriteParameterfSGIX"); printf("glSpriteParameterfSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glSpriteParameterfvSGIX"); printf("glSpriteParameterfvSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glSpriteParameteriSGIX"); printf("glSpriteParameteriSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glSpriteParameterivSGIX"); printf("glSpriteParameterivSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glStartInstrumentsSGIX"); printf("glStartInstrumentsSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glStateCaptureNV"); printf("glStateCaptureNV : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilClearTagEXT"); printf("glStencilClearTagEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilFillPathInstancedNV"); printf("glStencilFillPathInstancedNV : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilFillPathNV"); printf("glStencilFillPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilFunc"); printf("glStencilFunc : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilFuncSeparate"); printf("glStencilFuncSeparate : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilFuncSeparateATI"); printf("glStencilFuncSeparateATI : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilMask"); printf("glStencilMask : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilMaskSeparate"); printf("glStencilMaskSeparate : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilOp"); printf("glStencilOp : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilOpSeparate"); printf("glStencilOpSeparate : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilOpSeparateATI"); printf("glStencilOpSeparateATI : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilOpValueAMD"); printf("glStencilOpValueAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilStrokePathInstancedNV"); printf("glStencilStrokePathInstancedNV: %p\n", p); p = gl.OSMesaGetProcAddress("glStencilStrokePathNV"); printf("glStencilStrokePathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilThenCoverFillPathInstancedNV"); printf("glStencilThenCoverFillPathInstancedNV: %p\n", p); p = gl.OSMesaGetProcAddress("glStencilThenCoverFillPathNV"); printf("glStencilThenCoverFillPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glStencilThenCoverStrokePathInstancedNV"); printf("glStencilThenCoverStrokePathInstancedNV: %p\n", p); p = gl.OSMesaGetProcAddress("glStencilThenCoverStrokePathNV"); printf("glStencilThenCoverStrokePathNV: %p\n", p); p = gl.OSMesaGetProcAddress("glStopInstrumentsSGIX"); printf("glStopInstrumentsSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glStringMarkerGREMEDY"); printf("glStringMarkerGREMEDY : %p\n", p); p = gl.OSMesaGetProcAddress("glSubpixelPrecisionBiasNV"); printf("glSubpixelPrecisionBiasNV : %p\n", p); p = gl.OSMesaGetProcAddress("glSwapAPPLE"); printf("glSwapAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glSwizzleEXT"); printf("glSwizzleEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glSyncTextureINTEL"); printf("glSyncTextureINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glTagSampleBufferSGIX"); printf("glTagSampleBufferSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3bEXT"); printf("glTangent3bEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3bvEXT"); printf("glTangent3bvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3dEXT"); printf("glTangent3dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3dvEXT"); printf("glTangent3dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3fEXT"); printf("glTangent3fEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3fvEXT"); printf("glTangent3fvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3iEXT"); printf("glTangent3iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3ivEXT"); printf("glTangent3ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3sEXT"); printf("glTangent3sEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangent3svEXT"); printf("glTangent3svEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTangentPointerEXT"); printf("glTangentPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTbufferMask3DFX"); printf("glTbufferMask3DFX : %p\n", p); p = gl.OSMesaGetProcAddress("glTessellationFactorAMD"); printf("glTessellationFactorAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glTessellationModeAMD"); printf("glTessellationModeAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glTestFenceAPPLE"); printf("glTestFenceAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glTestFenceNV"); printf("glTestFenceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTestObjectAPPLE"); printf("glTestObjectAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glTexBuffer"); printf("glTexBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glTexBufferARB"); printf("glTexBufferARB : %p\n", p); p = gl.OSMesaGetProcAddress("glTexBufferEXT"); printf("glTexBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexBufferRange"); printf("glTexBufferRange : %p\n", p); p = gl.OSMesaGetProcAddress("glTexBumpParameterfvATI"); printf("glTexBumpParameterfvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glTexBumpParameterivATI"); printf("glTexBumpParameterivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1bOES"); printf("glTexCoord1bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1bvOES"); printf("glTexCoord1bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1d"); printf("glTexCoord1d : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1dv"); printf("glTexCoord1dv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1f"); printf("glTexCoord1f : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1fv"); printf("glTexCoord1fv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1hNV"); printf("glTexCoord1hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1hvNV"); printf("glTexCoord1hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1i"); printf("glTexCoord1i : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1iv"); printf("glTexCoord1iv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1s"); printf("glTexCoord1s : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1sv"); printf("glTexCoord1sv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1xOES"); printf("glTexCoord1xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord1xvOES"); printf("glTexCoord1xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2bOES"); printf("glTexCoord2bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2bvOES"); printf("glTexCoord2bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2d"); printf("glTexCoord2d : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2dv"); printf("glTexCoord2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2f"); printf("glTexCoord2f : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fColor3fVertex3fSUN"); printf("glTexCoord2fColor3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fColor3fVertex3fvSUN"); printf("glTexCoord2fColor3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fColor4fNormal3fVertex3fSUN"); printf("glTexCoord2fColor4fNormal3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fColor4fNormal3fVertex3fvSUN"); printf("glTexCoord2fColor4fNormal3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fColor4ubVertex3fSUN"); printf("glTexCoord2fColor4ubVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fColor4ubVertex3fvSUN"); printf("glTexCoord2fColor4ubVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fNormal3fVertex3fSUN"); printf("glTexCoord2fNormal3fVertex3fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fNormal3fVertex3fvSUN"); printf("glTexCoord2fNormal3fVertex3fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fVertex3fSUN"); printf("glTexCoord2fVertex3fSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fVertex3fvSUN"); printf("glTexCoord2fVertex3fvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2fv"); printf("glTexCoord2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2hNV"); printf("glTexCoord2hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2hvNV"); printf("glTexCoord2hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2i"); printf("glTexCoord2i : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2iv"); printf("glTexCoord2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2s"); printf("glTexCoord2s : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2sv"); printf("glTexCoord2sv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2xOES"); printf("glTexCoord2xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord2xvOES"); printf("glTexCoord2xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3bOES"); printf("glTexCoord3bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3bvOES"); printf("glTexCoord3bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3d"); printf("glTexCoord3d : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3dv"); printf("glTexCoord3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3f"); printf("glTexCoord3f : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3fv"); printf("glTexCoord3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3hNV"); printf("glTexCoord3hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3hvNV"); printf("glTexCoord3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3i"); printf("glTexCoord3i : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3iv"); printf("glTexCoord3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3s"); printf("glTexCoord3s : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3sv"); printf("glTexCoord3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3xOES"); printf("glTexCoord3xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord3xvOES"); printf("glTexCoord3xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4bOES"); printf("glTexCoord4bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4bvOES"); printf("glTexCoord4bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4d"); printf("glTexCoord4d : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4dv"); printf("glTexCoord4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4f"); printf("glTexCoord4f : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4fColor4fNormal3fVertex4fSUN"); printf("glTexCoord4fColor4fNormal3fVertex4fSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4fColor4fNormal3fVertex4fvSUN"); printf("glTexCoord4fColor4fNormal3fVertex4fvSUN: %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4fVertex4fSUN"); printf("glTexCoord4fVertex4fSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4fVertex4fvSUN"); printf("glTexCoord4fVertex4fvSUN : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4fv"); printf("glTexCoord4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4hNV"); printf("glTexCoord4hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4hvNV"); printf("glTexCoord4hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4i"); printf("glTexCoord4i : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4iv"); printf("glTexCoord4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4s"); printf("glTexCoord4s : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4sv"); printf("glTexCoord4sv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4xOES"); printf("glTexCoord4xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoord4xvOES"); printf("glTexCoord4xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordFormatNV"); printf("glTexCoordFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP1ui"); printf("glTexCoordP1ui : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP1uiv"); printf("glTexCoordP1uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP2ui"); printf("glTexCoordP2ui : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP2uiv"); printf("glTexCoordP2uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP3ui"); printf("glTexCoordP3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP3uiv"); printf("glTexCoordP3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP4ui"); printf("glTexCoordP4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordP4uiv"); printf("glTexCoordP4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordPointer"); printf("glTexCoordPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordPointerEXT"); printf("glTexCoordPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordPointerListIBM"); printf("glTexCoordPointerListIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glTexCoordPointervINTEL"); printf("glTexCoordPointervINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glTexEnvf"); printf("glTexEnvf : %p\n", p); p = gl.OSMesaGetProcAddress("glTexEnvfv"); printf("glTexEnvfv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexEnvi"); printf("glTexEnvi : %p\n", p); p = gl.OSMesaGetProcAddress("glTexEnviv"); printf("glTexEnviv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexEnvxOES"); printf("glTexEnvxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexEnvxvOES"); printf("glTexEnvxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexFilterFuncSGIS"); printf("glTexFilterFuncSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGend"); printf("glTexGend : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGendv"); printf("glTexGendv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGenf"); printf("glTexGenf : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGenfv"); printf("glTexGenfv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGeni"); printf("glTexGeni : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGeniv"); printf("glTexGeniv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGenxOES"); printf("glTexGenxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexGenxvOES"); printf("glTexGenxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage1D"); printf("glTexImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage2D"); printf("glTexImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage2DMultisample"); printf("glTexImage2DMultisample : %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage2DMultisampleCoverageNV"); printf("glTexImage2DMultisampleCoverageNV: %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage3D"); printf("glTexImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage3DEXT"); printf("glTexImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage3DMultisample"); printf("glTexImage3DMultisample : %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage3DMultisampleCoverageNV"); printf("glTexImage3DMultisampleCoverageNV: %p\n", p); p = gl.OSMesaGetProcAddress("glTexImage4DSGIS"); printf("glTexImage4DSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glTexPageCommitmentARB"); printf("glTexPageCommitmentARB : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterIiv"); printf("glTexParameterIiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterIivEXT"); printf("glTexParameterIivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterIuiv"); printf("glTexParameterIuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterIuivEXT"); printf("glTexParameterIuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterf"); printf("glTexParameterf : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterfv"); printf("glTexParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameteri"); printf("glTexParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameteriv"); printf("glTexParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterxOES"); printf("glTexParameterxOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexParameterxvOES"); printf("glTexParameterxvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glTexRenderbufferNV"); printf("glTexRenderbufferNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTexScissorFuncINTEL"); printf("glTexScissorFuncINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glTexScissorINTEL"); printf("glTexScissorINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorage1D"); printf("glTexStorage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorage2D"); printf("glTexStorage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorage2DMultisample"); printf("glTexStorage2DMultisample : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorage3D"); printf("glTexStorage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorage3DMultisample"); printf("glTexStorage3DMultisample : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorageMem1DEXT"); printf("glTexStorageMem1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorageMem2DEXT"); printf("glTexStorageMem2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorageMem2DMultisampleEXT"); printf("glTexStorageMem2DMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorageMem3DEXT"); printf("glTexStorageMem3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorageMem3DMultisampleEXT"); printf("glTexStorageMem3DMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glTexStorageSparseAMD"); printf("glTexStorageSparseAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glTexSubImage1D"); printf("glTexSubImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexSubImage1DEXT"); printf("glTexSubImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexSubImage2D"); printf("glTexSubImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexSubImage2DEXT"); printf("glTexSubImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexSubImage3D"); printf("glTexSubImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glTexSubImage3DEXT"); printf("glTexSubImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexSubImage4DSGIS"); printf("glTexSubImage4DSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureBarrier"); printf("glTextureBarrier : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureBarrierNV"); printf("glTextureBarrierNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureBuffer"); printf("glTextureBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureBufferEXT"); printf("glTextureBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureBufferRange"); printf("glTextureBufferRange : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureBufferRangeEXT"); printf("glTextureBufferRangeEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureColorMaskSGIS"); printf("glTextureColorMaskSGIS : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureFogSGIX"); printf("glTextureFogSGIX : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureImage1DEXT"); printf("glTextureImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureImage2DEXT"); printf("glTextureImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureImage2DMultisampleCoverageNV"); printf("glTextureImage2DMultisampleCoverageNV: %p\n", p); p = gl.OSMesaGetProcAddress("glTextureImage2DMultisampleNV"); printf("glTextureImage2DMultisampleNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureImage3DEXT"); printf("glTextureImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureImage3DMultisampleCoverageNV"); printf("glTextureImage3DMultisampleCoverageNV: %p\n", p); p = gl.OSMesaGetProcAddress("glTextureImage3DMultisampleNV"); printf("glTextureImage3DMultisampleNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureLightEXT"); printf("glTextureLightEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureMaterialEXT"); printf("glTextureMaterialEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureNormalEXT"); printf("glTextureNormalEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTexturePageCommitmentEXT"); printf("glTexturePageCommitmentEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterIiv"); printf("glTextureParameterIiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterIivEXT"); printf("glTextureParameterIivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterIuiv"); printf("glTextureParameterIuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterIuivEXT"); printf("glTextureParameterIuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterf"); printf("glTextureParameterf : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterfEXT"); printf("glTextureParameterfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterfv"); printf("glTextureParameterfv : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterfvEXT"); printf("glTextureParameterfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameteri"); printf("glTextureParameteri : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameteriEXT"); printf("glTextureParameteriEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameteriv"); printf("glTextureParameteriv : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureParameterivEXT"); printf("glTextureParameterivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureRangeAPPLE"); printf("glTextureRangeAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureRenderbufferEXT"); printf("glTextureRenderbufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage1D"); printf("glTextureStorage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage1DEXT"); printf("glTextureStorage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage2D"); printf("glTextureStorage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage2DEXT"); printf("glTextureStorage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage2DMultisample"); printf("glTextureStorage2DMultisample : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage2DMultisampleEXT"); printf("glTextureStorage2DMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage3D"); printf("glTextureStorage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage3DEXT"); printf("glTextureStorage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage3DMultisample"); printf("glTextureStorage3DMultisample : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorage3DMultisampleEXT"); printf("glTextureStorage3DMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorageMem1DEXT"); printf("glTextureStorageMem1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorageMem2DEXT"); printf("glTextureStorageMem2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorageMem2DMultisampleEXT"); printf("glTextureStorageMem2DMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorageMem3DEXT"); printf("glTextureStorageMem3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorageMem3DMultisampleEXT"); printf("glTextureStorageMem3DMultisampleEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glTextureStorageSparseAMD"); printf("glTextureStorageSparseAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureSubImage1D"); printf("glTextureSubImage1D : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureSubImage1DEXT"); printf("glTextureSubImage1DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureSubImage2D"); printf("glTextureSubImage2D : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureSubImage2DEXT"); printf("glTextureSubImage2DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureSubImage3D"); printf("glTextureSubImage3D : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureSubImage3DEXT"); printf("glTextureSubImage3DEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glTextureView"); printf("glTextureView : %p\n", p); p = gl.OSMesaGetProcAddress("glTraceAssertAttribMESA"); printf("glTraceAssertAttribMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glTraceCommentMESA"); printf("glTraceCommentMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glTraceListMESA"); printf("glTraceListMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glTracePointerMESA"); printf("glTracePointerMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glTracePointerRangeMESA"); printf("glTracePointerRangeMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glTraceTextureMESA"); printf("glTraceTextureMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glTrackMatrixNV"); printf("glTrackMatrixNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTransformFeedbackAttribsNV"); printf("glTransformFeedbackAttribsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTransformFeedbackBufferBase"); printf("glTransformFeedbackBufferBase : %p\n", p); p = gl.OSMesaGetProcAddress("glTransformFeedbackBufferRange"); printf("glTransformFeedbackBufferRange: %p\n", p); p = gl.OSMesaGetProcAddress("glTransformFeedbackStreamAttribsNV"); printf("glTransformFeedbackStreamAttribsNV: %p\n", p); p = gl.OSMesaGetProcAddress("glTransformFeedbackVaryings"); printf("glTransformFeedbackVaryings : %p\n", p); p = gl.OSMesaGetProcAddress("glTransformFeedbackVaryingsEXT"); printf("glTransformFeedbackVaryingsEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glTransformFeedbackVaryingsNV"); printf("glTransformFeedbackVaryingsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTransformPathNV"); printf("glTransformPathNV : %p\n", p); p = gl.OSMesaGetProcAddress("glTranslated"); printf("glTranslated : %p\n", p); p = gl.OSMesaGetProcAddress("glTranslatef"); printf("glTranslatef : %p\n", p); p = gl.OSMesaGetProcAddress("glTranslatexOES"); printf("glTranslatexOES : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1d"); printf("glUniform1d : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1dv"); printf("glUniform1dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1f"); printf("glUniform1f : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1fARB"); printf("glUniform1fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1fv"); printf("glUniform1fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1fvARB"); printf("glUniform1fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1i"); printf("glUniform1i : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1i64ARB"); printf("glUniform1i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1i64NV"); printf("glUniform1i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1i64vARB"); printf("glUniform1i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1i64vNV"); printf("glUniform1i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1iARB"); printf("glUniform1iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1iv"); printf("glUniform1iv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1ivARB"); printf("glUniform1ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1ui"); printf("glUniform1ui : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1ui64ARB"); printf("glUniform1ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1ui64NV"); printf("glUniform1ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1ui64vARB"); printf("glUniform1ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1ui64vNV"); printf("glUniform1ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1uiEXT"); printf("glUniform1uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1uiv"); printf("glUniform1uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform1uivEXT"); printf("glUniform1uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2d"); printf("glUniform2d : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2dv"); printf("glUniform2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2f"); printf("glUniform2f : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2fARB"); printf("glUniform2fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2fv"); printf("glUniform2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2fvARB"); printf("glUniform2fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2i"); printf("glUniform2i : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2i64ARB"); printf("glUniform2i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2i64NV"); printf("glUniform2i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2i64vARB"); printf("glUniform2i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2i64vNV"); printf("glUniform2i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2iARB"); printf("glUniform2iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2iv"); printf("glUniform2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2ivARB"); printf("glUniform2ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2ui"); printf("glUniform2ui : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2ui64ARB"); printf("glUniform2ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2ui64NV"); printf("glUniform2ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2ui64vARB"); printf("glUniform2ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2ui64vNV"); printf("glUniform2ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2uiEXT"); printf("glUniform2uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2uiv"); printf("glUniform2uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform2uivEXT"); printf("glUniform2uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3d"); printf("glUniform3d : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3dv"); printf("glUniform3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3f"); printf("glUniform3f : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3fARB"); printf("glUniform3fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3fv"); printf("glUniform3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3fvARB"); printf("glUniform3fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3i"); printf("glUniform3i : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3i64ARB"); printf("glUniform3i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3i64NV"); printf("glUniform3i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3i64vARB"); printf("glUniform3i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3i64vNV"); printf("glUniform3i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3iARB"); printf("glUniform3iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3iv"); printf("glUniform3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3ivARB"); printf("glUniform3ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3ui"); printf("glUniform3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3ui64ARB"); printf("glUniform3ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3ui64NV"); printf("glUniform3ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3ui64vARB"); printf("glUniform3ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3ui64vNV"); printf("glUniform3ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3uiEXT"); printf("glUniform3uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3uiv"); printf("glUniform3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform3uivEXT"); printf("glUniform3uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4d"); printf("glUniform4d : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4dv"); printf("glUniform4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4f"); printf("glUniform4f : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4fARB"); printf("glUniform4fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4fv"); printf("glUniform4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4fvARB"); printf("glUniform4fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4i"); printf("glUniform4i : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4i64ARB"); printf("glUniform4i64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4i64NV"); printf("glUniform4i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4i64vARB"); printf("glUniform4i64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4i64vNV"); printf("glUniform4i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4iARB"); printf("glUniform4iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4iv"); printf("glUniform4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4ivARB"); printf("glUniform4ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4ui"); printf("glUniform4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4ui64ARB"); printf("glUniform4ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4ui64NV"); printf("glUniform4ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4ui64vARB"); printf("glUniform4ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4ui64vNV"); printf("glUniform4ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4uiEXT"); printf("glUniform4uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4uiv"); printf("glUniform4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniform4uivEXT"); printf("glUniform4uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformBlockBinding"); printf("glUniformBlockBinding : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformBufferEXT"); printf("glUniformBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformHandleui64ARB"); printf("glUniformHandleui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformHandleui64NV"); printf("glUniformHandleui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformHandleui64vARB"); printf("glUniformHandleui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformHandleui64vNV"); printf("glUniformHandleui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix2dv"); printf("glUniformMatrix2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix2fv"); printf("glUniformMatrix2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix2fvARB"); printf("glUniformMatrix2fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix2x3dv"); printf("glUniformMatrix2x3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix2x3fv"); printf("glUniformMatrix2x3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix2x4dv"); printf("glUniformMatrix2x4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix2x4fv"); printf("glUniformMatrix2x4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix3dv"); printf("glUniformMatrix3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix3fv"); printf("glUniformMatrix3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix3fvARB"); printf("glUniformMatrix3fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix3x2dv"); printf("glUniformMatrix3x2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix3x2fv"); printf("glUniformMatrix3x2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix3x4dv"); printf("glUniformMatrix3x4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix3x4fv"); printf("glUniformMatrix3x4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix4dv"); printf("glUniformMatrix4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix4fv"); printf("glUniformMatrix4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix4fvARB"); printf("glUniformMatrix4fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix4x2dv"); printf("glUniformMatrix4x2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix4x2fv"); printf("glUniformMatrix4x2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix4x3dv"); printf("glUniformMatrix4x3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformMatrix4x3fv"); printf("glUniformMatrix4x3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformSubroutinesuiv"); printf("glUniformSubroutinesuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformui64NV"); printf("glUniformui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glUniformui64vNV"); printf("glUniformui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glUnlockArraysEXT"); printf("glUnlockArraysEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUnmapBuffer"); printf("glUnmapBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glUnmapBufferARB"); printf("glUnmapBufferARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUnmapNamedBuffer"); printf("glUnmapNamedBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glUnmapNamedBufferEXT"); printf("glUnmapNamedBufferEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glUnmapObjectBufferATI"); printf("glUnmapObjectBufferATI : %p\n", p); p = gl.OSMesaGetProcAddress("glUnmapTexture2DINTEL"); printf("glUnmapTexture2DINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glUpdateObjectBufferATI"); printf("glUpdateObjectBufferATI : %p\n", p); p = gl.OSMesaGetProcAddress("glUseProgram"); printf("glUseProgram : %p\n", p); p = gl.OSMesaGetProcAddress("glUseProgramObjectARB"); printf("glUseProgramObjectARB : %p\n", p); p = gl.OSMesaGetProcAddress("glUseProgramStages"); printf("glUseProgramStages : %p\n", p); p = gl.OSMesaGetProcAddress("glUseShaderProgramEXT"); printf("glUseShaderProgramEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUFiniNV"); printf("glVDPAUFiniNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUGetSurfaceivNV"); printf("glVDPAUGetSurfaceivNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUInitNV"); printf("glVDPAUInitNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUIsSurfaceNV"); printf("glVDPAUIsSurfaceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUMapSurfacesNV"); printf("glVDPAUMapSurfacesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAURegisterOutputSurfaceNV"); printf("glVDPAURegisterOutputSurfaceNV: %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAURegisterVideoSurfaceNV"); printf("glVDPAURegisterVideoSurfaceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUSurfaceAccessNV"); printf("glVDPAUSurfaceAccessNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUUnmapSurfacesNV"); printf("glVDPAUUnmapSurfacesNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVDPAUUnregisterSurfaceNV"); printf("glVDPAUUnregisterSurfaceNV : %p\n", p); p = gl.OSMesaGetProcAddress("glValidateProgram"); printf("glValidateProgram : %p\n", p); p = gl.OSMesaGetProcAddress("glValidateProgramARB"); printf("glValidateProgramARB : %p\n", p); p = gl.OSMesaGetProcAddress("glValidateProgramPipeline"); printf("glValidateProgramPipeline : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantArrayObjectATI"); printf("glVariantArrayObjectATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantPointerEXT"); printf("glVariantPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantbvEXT"); printf("glVariantbvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantdvEXT"); printf("glVariantdvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantfvEXT"); printf("glVariantfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantivEXT"); printf("glVariantivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantsvEXT"); printf("glVariantsvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantubvEXT"); printf("glVariantubvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantuivEXT"); printf("glVariantuivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVariantusvEXT"); printf("glVariantusvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2bOES"); printf("glVertex2bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2bvOES"); printf("glVertex2bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2d"); printf("glVertex2d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2dv"); printf("glVertex2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2f"); printf("glVertex2f : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2fv"); printf("glVertex2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2hNV"); printf("glVertex2hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2hvNV"); printf("glVertex2hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2i"); printf("glVertex2i : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2iv"); printf("glVertex2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2s"); printf("glVertex2s : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2sv"); printf("glVertex2sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2xOES"); printf("glVertex2xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex2xvOES"); printf("glVertex2xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3bOES"); printf("glVertex3bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3bvOES"); printf("glVertex3bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3d"); printf("glVertex3d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3dv"); printf("glVertex3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3f"); printf("glVertex3f : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3fv"); printf("glVertex3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3hNV"); printf("glVertex3hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3hvNV"); printf("glVertex3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3i"); printf("glVertex3i : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3iv"); printf("glVertex3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3s"); printf("glVertex3s : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3sv"); printf("glVertex3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3xOES"); printf("glVertex3xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex3xvOES"); printf("glVertex3xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4bOES"); printf("glVertex4bOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4bvOES"); printf("glVertex4bvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4d"); printf("glVertex4d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4dv"); printf("glVertex4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4f"); printf("glVertex4f : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4fv"); printf("glVertex4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4hNV"); printf("glVertex4hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4hvNV"); printf("glVertex4hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4i"); printf("glVertex4i : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4iv"); printf("glVertex4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4s"); printf("glVertex4s : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4sv"); printf("glVertex4sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4xOES"); printf("glVertex4xOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertex4xvOES"); printf("glVertex4xvOES : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayAttribBinding"); printf("glVertexArrayAttribBinding : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayAttribFormat"); printf("glVertexArrayAttribFormat : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayAttribIFormat"); printf("glVertexArrayAttribIFormat : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayAttribLFormat"); printf("glVertexArrayAttribLFormat : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayBindVertexBufferEXT"); printf("glVertexArrayBindVertexBufferEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayBindingDivisor"); printf("glVertexArrayBindingDivisor : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayColorOffsetEXT"); printf("glVertexArrayColorOffsetEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayEdgeFlagOffsetEXT"); printf("glVertexArrayEdgeFlagOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayElementBuffer"); printf("glVertexArrayElementBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayFogCoordOffsetEXT"); printf("glVertexArrayFogCoordOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayIndexOffsetEXT"); printf("glVertexArrayIndexOffsetEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayMultiTexCoordOffsetEXT"); printf("glVertexArrayMultiTexCoordOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayNormalOffsetEXT"); printf("glVertexArrayNormalOffsetEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayParameteriAPPLE"); printf("glVertexArrayParameteriAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayRangeAPPLE"); printf("glVertexArrayRangeAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayRangeNV"); printf("glVertexArrayRangeNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArraySecondaryColorOffsetEXT"); printf("glVertexArraySecondaryColorOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayTexCoordOffsetEXT"); printf("glVertexArrayTexCoordOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribBindingEXT"); printf("glVertexArrayVertexAttribBindingEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribDivisorEXT"); printf("glVertexArrayVertexAttribDivisorEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribFormatEXT"); printf("glVertexArrayVertexAttribFormatEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribIFormatEXT"); printf("glVertexArrayVertexAttribIFormatEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribIOffsetEXT"); printf("glVertexArrayVertexAttribIOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribLFormatEXT"); printf("glVertexArrayVertexAttribLFormatEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribLOffsetEXT"); printf("glVertexArrayVertexAttribLOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexAttribOffsetEXT"); printf("glVertexArrayVertexAttribOffsetEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexBindingDivisorEXT"); printf("glVertexArrayVertexBindingDivisorEXT: %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexBuffer"); printf("glVertexArrayVertexBuffer : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexBuffers"); printf("glVertexArrayVertexBuffers : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexArrayVertexOffsetEXT"); printf("glVertexArrayVertexOffsetEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1d"); printf("glVertexAttrib1d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1dARB"); printf("glVertexAttrib1dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1dNV"); printf("glVertexAttrib1dNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1dv"); printf("glVertexAttrib1dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1dvARB"); printf("glVertexAttrib1dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1dvNV"); printf("glVertexAttrib1dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1f"); printf("glVertexAttrib1f : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1fARB"); printf("glVertexAttrib1fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1fNV"); printf("glVertexAttrib1fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1fv"); printf("glVertexAttrib1fv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1fvARB"); printf("glVertexAttrib1fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1fvNV"); printf("glVertexAttrib1fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1hNV"); printf("glVertexAttrib1hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1hvNV"); printf("glVertexAttrib1hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1s"); printf("glVertexAttrib1s : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1sARB"); printf("glVertexAttrib1sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1sNV"); printf("glVertexAttrib1sNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1sv"); printf("glVertexAttrib1sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1svARB"); printf("glVertexAttrib1svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib1svNV"); printf("glVertexAttrib1svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2d"); printf("glVertexAttrib2d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2dARB"); printf("glVertexAttrib2dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2dNV"); printf("glVertexAttrib2dNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2dv"); printf("glVertexAttrib2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2dvARB"); printf("glVertexAttrib2dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2dvNV"); printf("glVertexAttrib2dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2f"); printf("glVertexAttrib2f : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2fARB"); printf("glVertexAttrib2fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2fNV"); printf("glVertexAttrib2fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2fv"); printf("glVertexAttrib2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2fvARB"); printf("glVertexAttrib2fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2fvNV"); printf("glVertexAttrib2fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2hNV"); printf("glVertexAttrib2hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2hvNV"); printf("glVertexAttrib2hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2s"); printf("glVertexAttrib2s : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2sARB"); printf("glVertexAttrib2sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2sNV"); printf("glVertexAttrib2sNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2sv"); printf("glVertexAttrib2sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2svARB"); printf("glVertexAttrib2svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib2svNV"); printf("glVertexAttrib2svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3d"); printf("glVertexAttrib3d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3dARB"); printf("glVertexAttrib3dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3dNV"); printf("glVertexAttrib3dNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3dv"); printf("glVertexAttrib3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3dvARB"); printf("glVertexAttrib3dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3dvNV"); printf("glVertexAttrib3dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3f"); printf("glVertexAttrib3f : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3fARB"); printf("glVertexAttrib3fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3fNV"); printf("glVertexAttrib3fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3fv"); printf("glVertexAttrib3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3fvARB"); printf("glVertexAttrib3fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3fvNV"); printf("glVertexAttrib3fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3hNV"); printf("glVertexAttrib3hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3hvNV"); printf("glVertexAttrib3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3s"); printf("glVertexAttrib3s : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3sARB"); printf("glVertexAttrib3sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3sNV"); printf("glVertexAttrib3sNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3sv"); printf("glVertexAttrib3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3svARB"); printf("glVertexAttrib3svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib3svNV"); printf("glVertexAttrib3svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4Nbv"); printf("glVertexAttrib4Nbv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4NbvARB"); printf("glVertexAttrib4NbvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4Niv"); printf("glVertexAttrib4Niv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4NivARB"); printf("glVertexAttrib4NivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4Nsv"); printf("glVertexAttrib4Nsv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4NsvARB"); printf("glVertexAttrib4NsvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4Nub"); printf("glVertexAttrib4Nub : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4NubARB"); printf("glVertexAttrib4NubARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4Nubv"); printf("glVertexAttrib4Nubv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4NubvARB"); printf("glVertexAttrib4NubvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4Nuiv"); printf("glVertexAttrib4Nuiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4NuivARB"); printf("glVertexAttrib4NuivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4Nusv"); printf("glVertexAttrib4Nusv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4NusvARB"); printf("glVertexAttrib4NusvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4bv"); printf("glVertexAttrib4bv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4bvARB"); printf("glVertexAttrib4bvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4d"); printf("glVertexAttrib4d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4dARB"); printf("glVertexAttrib4dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4dNV"); printf("glVertexAttrib4dNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4dv"); printf("glVertexAttrib4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4dvARB"); printf("glVertexAttrib4dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4dvNV"); printf("glVertexAttrib4dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4f"); printf("glVertexAttrib4f : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4fARB"); printf("glVertexAttrib4fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4fNV"); printf("glVertexAttrib4fNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4fv"); printf("glVertexAttrib4fv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4fvARB"); printf("glVertexAttrib4fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4fvNV"); printf("glVertexAttrib4fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4hNV"); printf("glVertexAttrib4hNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4hvNV"); printf("glVertexAttrib4hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4iv"); printf("glVertexAttrib4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4ivARB"); printf("glVertexAttrib4ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4s"); printf("glVertexAttrib4s : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4sARB"); printf("glVertexAttrib4sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4sNV"); printf("glVertexAttrib4sNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4sv"); printf("glVertexAttrib4sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4svARB"); printf("glVertexAttrib4svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4svNV"); printf("glVertexAttrib4svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4ubNV"); printf("glVertexAttrib4ubNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4ubv"); printf("glVertexAttrib4ubv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4ubvARB"); printf("glVertexAttrib4ubvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4ubvNV"); printf("glVertexAttrib4ubvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4uiv"); printf("glVertexAttrib4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4uivARB"); printf("glVertexAttrib4uivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4usv"); printf("glVertexAttrib4usv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttrib4usvARB"); printf("glVertexAttrib4usvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribArrayObjectATI"); printf("glVertexAttribArrayObjectATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribBinding"); printf("glVertexAttribBinding : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribDivisor"); printf("glVertexAttribDivisor : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribDivisorARB"); printf("glVertexAttribDivisorARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribFormat"); printf("glVertexAttribFormat : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribFormatNV"); printf("glVertexAttribFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1i"); printf("glVertexAttribI1i : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1iEXT"); printf("glVertexAttribI1iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1iv"); printf("glVertexAttribI1iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1ivEXT"); printf("glVertexAttribI1ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1ui"); printf("glVertexAttribI1ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1uiEXT"); printf("glVertexAttribI1uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1uiv"); printf("glVertexAttribI1uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI1uivEXT"); printf("glVertexAttribI1uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2i"); printf("glVertexAttribI2i : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2iEXT"); printf("glVertexAttribI2iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2iv"); printf("glVertexAttribI2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2ivEXT"); printf("glVertexAttribI2ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2ui"); printf("glVertexAttribI2ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2uiEXT"); printf("glVertexAttribI2uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2uiv"); printf("glVertexAttribI2uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI2uivEXT"); printf("glVertexAttribI2uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3i"); printf("glVertexAttribI3i : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3iEXT"); printf("glVertexAttribI3iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3iv"); printf("glVertexAttribI3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3ivEXT"); printf("glVertexAttribI3ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3ui"); printf("glVertexAttribI3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3uiEXT"); printf("glVertexAttribI3uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3uiv"); printf("glVertexAttribI3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI3uivEXT"); printf("glVertexAttribI3uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4bv"); printf("glVertexAttribI4bv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4bvEXT"); printf("glVertexAttribI4bvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4i"); printf("glVertexAttribI4i : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4iEXT"); printf("glVertexAttribI4iEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4iv"); printf("glVertexAttribI4iv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4ivEXT"); printf("glVertexAttribI4ivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4sv"); printf("glVertexAttribI4sv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4svEXT"); printf("glVertexAttribI4svEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4ubv"); printf("glVertexAttribI4ubv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4ubvEXT"); printf("glVertexAttribI4ubvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4ui"); printf("glVertexAttribI4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4uiEXT"); printf("glVertexAttribI4uiEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4uiv"); printf("glVertexAttribI4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4uivEXT"); printf("glVertexAttribI4uivEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4usv"); printf("glVertexAttribI4usv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribI4usvEXT"); printf("glVertexAttribI4usvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribIFormat"); printf("glVertexAttribIFormat : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribIFormatNV"); printf("glVertexAttribIFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribIPointer"); printf("glVertexAttribIPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribIPointerEXT"); printf("glVertexAttribIPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1d"); printf("glVertexAttribL1d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1dEXT"); printf("glVertexAttribL1dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1dv"); printf("glVertexAttribL1dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1dvEXT"); printf("glVertexAttribL1dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1i64NV"); printf("glVertexAttribL1i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1i64vNV"); printf("glVertexAttribL1i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1ui64ARB"); printf("glVertexAttribL1ui64ARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1ui64NV"); printf("glVertexAttribL1ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1ui64vARB"); printf("glVertexAttribL1ui64vARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL1ui64vNV"); printf("glVertexAttribL1ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2d"); printf("glVertexAttribL2d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2dEXT"); printf("glVertexAttribL2dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2dv"); printf("glVertexAttribL2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2dvEXT"); printf("glVertexAttribL2dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2i64NV"); printf("glVertexAttribL2i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2i64vNV"); printf("glVertexAttribL2i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2ui64NV"); printf("glVertexAttribL2ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL2ui64vNV"); printf("glVertexAttribL2ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3d"); printf("glVertexAttribL3d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3dEXT"); printf("glVertexAttribL3dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3dv"); printf("glVertexAttribL3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3dvEXT"); printf("glVertexAttribL3dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3i64NV"); printf("glVertexAttribL3i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3i64vNV"); printf("glVertexAttribL3i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3ui64NV"); printf("glVertexAttribL3ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL3ui64vNV"); printf("glVertexAttribL3ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4d"); printf("glVertexAttribL4d : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4dEXT"); printf("glVertexAttribL4dEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4dv"); printf("glVertexAttribL4dv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4dvEXT"); printf("glVertexAttribL4dvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4i64NV"); printf("glVertexAttribL4i64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4i64vNV"); printf("glVertexAttribL4i64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4ui64NV"); printf("glVertexAttribL4ui64NV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribL4ui64vNV"); printf("glVertexAttribL4ui64vNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribLFormat"); printf("glVertexAttribLFormat : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribLFormatNV"); printf("glVertexAttribLFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribLPointer"); printf("glVertexAttribLPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribLPointerEXT"); printf("glVertexAttribLPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP1ui"); printf("glVertexAttribP1ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP1uiv"); printf("glVertexAttribP1uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP2ui"); printf("glVertexAttribP2ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP2uiv"); printf("glVertexAttribP2uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP3ui"); printf("glVertexAttribP3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP3uiv"); printf("glVertexAttribP3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP4ui"); printf("glVertexAttribP4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribP4uiv"); printf("glVertexAttribP4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribParameteriAMD"); printf("glVertexAttribParameteriAMD : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribPointer"); printf("glVertexAttribPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribPointerARB"); printf("glVertexAttribPointerARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribPointerNV"); printf("glVertexAttribPointerNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs1dvNV"); printf("glVertexAttribs1dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs1fvNV"); printf("glVertexAttribs1fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs1hvNV"); printf("glVertexAttribs1hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs1svNV"); printf("glVertexAttribs1svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs2dvNV"); printf("glVertexAttribs2dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs2fvNV"); printf("glVertexAttribs2fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs2hvNV"); printf("glVertexAttribs2hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs2svNV"); printf("glVertexAttribs2svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs3dvNV"); printf("glVertexAttribs3dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs3fvNV"); printf("glVertexAttribs3fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs3hvNV"); printf("glVertexAttribs3hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs3svNV"); printf("glVertexAttribs3svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs4dvNV"); printf("glVertexAttribs4dvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs4fvNV"); printf("glVertexAttribs4fvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs4hvNV"); printf("glVertexAttribs4hvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs4svNV"); printf("glVertexAttribs4svNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexAttribs4ubvNV"); printf("glVertexAttribs4ubvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexBindingDivisor"); printf("glVertexBindingDivisor : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexBlendARB"); printf("glVertexBlendARB : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexBlendEnvfATI"); printf("glVertexBlendEnvfATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexBlendEnviATI"); printf("glVertexBlendEnviATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexFormatNV"); printf("glVertexFormatNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexP2ui"); printf("glVertexP2ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexP2uiv"); printf("glVertexP2uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexP3ui"); printf("glVertexP3ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexP3uiv"); printf("glVertexP3uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexP4ui"); printf("glVertexP4ui : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexP4uiv"); printf("glVertexP4uiv : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexPointSizefAPPLE"); printf("glVertexPointSizefAPPLE : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexPointer"); printf("glVertexPointer : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexPointerEXT"); printf("glVertexPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexPointerListIBM"); printf("glVertexPointerListIBM : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexPointervINTEL"); printf("glVertexPointervINTEL : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1dATI"); printf("glVertexStream1dATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1dvATI"); printf("glVertexStream1dvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1fATI"); printf("glVertexStream1fATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1fvATI"); printf("glVertexStream1fvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1iATI"); printf("glVertexStream1iATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1ivATI"); printf("glVertexStream1ivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1sATI"); printf("glVertexStream1sATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream1svATI"); printf("glVertexStream1svATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2dATI"); printf("glVertexStream2dATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2dvATI"); printf("glVertexStream2dvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2fATI"); printf("glVertexStream2fATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2fvATI"); printf("glVertexStream2fvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2iATI"); printf("glVertexStream2iATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2ivATI"); printf("glVertexStream2ivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2sATI"); printf("glVertexStream2sATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream2svATI"); printf("glVertexStream2svATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3dATI"); printf("glVertexStream3dATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3dvATI"); printf("glVertexStream3dvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3fATI"); printf("glVertexStream3fATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3fvATI"); printf("glVertexStream3fvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3iATI"); printf("glVertexStream3iATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3ivATI"); printf("glVertexStream3ivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3sATI"); printf("glVertexStream3sATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream3svATI"); printf("glVertexStream3svATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4dATI"); printf("glVertexStream4dATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4dvATI"); printf("glVertexStream4dvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4fATI"); printf("glVertexStream4fATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4fvATI"); printf("glVertexStream4fvATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4iATI"); printf("glVertexStream4iATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4ivATI"); printf("glVertexStream4ivATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4sATI"); printf("glVertexStream4sATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexStream4svATI"); printf("glVertexStream4svATI : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexWeightPointerEXT"); printf("glVertexWeightPointerEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexWeightfEXT"); printf("glVertexWeightfEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexWeightfvEXT"); printf("glVertexWeightfvEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexWeighthNV"); printf("glVertexWeighthNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVertexWeighthvNV"); printf("glVertexWeighthvNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVideoCaptureNV"); printf("glVideoCaptureNV : %p\n", p); p = gl.OSMesaGetProcAddress("glVideoCaptureStreamParameterdvNV"); printf("glVideoCaptureStreamParameterdvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glVideoCaptureStreamParameterfvNV"); printf("glVideoCaptureStreamParameterfvNV: %p\n", p); p = gl.OSMesaGetProcAddress("glVideoCaptureStreamParameterivNV"); printf("glVideoCaptureStreamParameterivNV: %p\n", p); p = gl.OSMesaGetProcAddress("glViewport"); printf("glViewport : %p\n", p); p = gl.OSMesaGetProcAddress("glViewportArrayv"); printf("glViewportArrayv : %p\n", p); p = gl.OSMesaGetProcAddress("glViewportIndexedf"); printf("glViewportIndexedf : %p\n", p); p = gl.OSMesaGetProcAddress("glViewportIndexedfv"); printf("glViewportIndexedfv : %p\n", p); p = gl.OSMesaGetProcAddress("glViewportPositionWScaleNV"); printf("glViewportPositionWScaleNV : %p\n", p); p = gl.OSMesaGetProcAddress("glViewportSwizzleNV"); printf("glViewportSwizzleNV : %p\n", p); p = gl.OSMesaGetProcAddress("glWaitSemaphoreEXT"); printf("glWaitSemaphoreEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glWaitSync"); printf("glWaitSync : %p\n", p); p = gl.OSMesaGetProcAddress("glWaitVkSemaphoreNV"); printf("glWaitVkSemaphoreNV : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightPathsNV"); printf("glWeightPathsNV : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightPointerARB"); printf("glWeightPointerARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightbvARB"); printf("glWeightbvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightdvARB"); printf("glWeightdvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightfvARB"); printf("glWeightfvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightivARB"); printf("glWeightivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightsvARB"); printf("glWeightsvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightubvARB"); printf("glWeightubvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightuivARB"); printf("glWeightuivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWeightusvARB"); printf("glWeightusvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2d"); printf("glWindowPos2d : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2dARB"); printf("glWindowPos2dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2dMESA"); printf("glWindowPos2dMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2dv"); printf("glWindowPos2dv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2dvARB"); printf("glWindowPos2dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2dvMESA"); printf("glWindowPos2dvMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2f"); printf("glWindowPos2f : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2fARB"); printf("glWindowPos2fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2fMESA"); printf("glWindowPos2fMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2fv"); printf("glWindowPos2fv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2fvARB"); printf("glWindowPos2fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2fvMESA"); printf("glWindowPos2fvMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2i"); printf("glWindowPos2i : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2iARB"); printf("glWindowPos2iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2iMESA"); printf("glWindowPos2iMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2iv"); printf("glWindowPos2iv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2ivARB"); printf("glWindowPos2ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2ivMESA"); printf("glWindowPos2ivMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2s"); printf("glWindowPos2s : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2sARB"); printf("glWindowPos2sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2sMESA"); printf("glWindowPos2sMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2sv"); printf("glWindowPos2sv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2svARB"); printf("glWindowPos2svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos2svMESA"); printf("glWindowPos2svMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3d"); printf("glWindowPos3d : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3dARB"); printf("glWindowPos3dARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3dMESA"); printf("glWindowPos3dMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3dv"); printf("glWindowPos3dv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3dvARB"); printf("glWindowPos3dvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3dvMESA"); printf("glWindowPos3dvMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3f"); printf("glWindowPos3f : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3fARB"); printf("glWindowPos3fARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3fMESA"); printf("glWindowPos3fMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3fv"); printf("glWindowPos3fv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3fvARB"); printf("glWindowPos3fvARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3fvMESA"); printf("glWindowPos3fvMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3i"); printf("glWindowPos3i : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3iARB"); printf("glWindowPos3iARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3iMESA"); printf("glWindowPos3iMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3iv"); printf("glWindowPos3iv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3ivARB"); printf("glWindowPos3ivARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3ivMESA"); printf("glWindowPos3ivMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3s"); printf("glWindowPos3s : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3sARB"); printf("glWindowPos3sARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3sMESA"); printf("glWindowPos3sMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3sv"); printf("glWindowPos3sv : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3svARB"); printf("glWindowPos3svARB : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos3svMESA"); printf("glWindowPos3svMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4dMESA"); printf("glWindowPos4dMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4dvMESA"); printf("glWindowPos4dvMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4fMESA"); printf("glWindowPos4fMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4fvMESA"); printf("glWindowPos4fvMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4iMESA"); printf("glWindowPos4iMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4ivMESA"); printf("glWindowPos4ivMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4sMESA"); printf("glWindowPos4sMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowPos4svMESA"); printf("glWindowPos4svMESA : %p\n", p); p = gl.OSMesaGetProcAddress("glWindowRectanglesEXT"); printf("glWindowRectanglesEXT : %p\n", p); p = gl.OSMesaGetProcAddress("glWriteMaskEXT"); printf("glWriteMaskEXT : %p\n", p); p = gl.OSMesaGetProcAddress("gluLookAt"); printf("gluLookAt : %p\n", p); p = gl.OSMesaGetProcAddress("gluLookAtf"); printf("gluLookAtf : %p\n", p); p = gl.OSMesaGetProcAddress("information"); printf("information : %p\n", p); p = gl.OSMesaGetProcAddress("max_height"); printf("max_height : %p\n", p); p = gl.OSMesaGetProcAddress("max_width"); printf("max_width : %p\n", p); p = gl.OSMesaGetProcAddress("swapbuffer"); printf("swapbuffer : %p\n", p); gl.OSMesaDestroyContext(ctx); ldg_unload_osmesa(pub, NULL); return 0; } #endif aranym-1.1.0/atari/nfosmesa/nftiny_gl.c0000664000175000017500000001702313454637621016254 0ustar joyjoy/* NFTinyGL LDG linker Copyright (C) 2004 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Includes ---*/ #include #include #include #include /*--- Functions prototypes ---*/ #include "lib-osmesa.h" #include "lib-oldmesa.h" #include "lib-misc.h" #include "nfosmesa_nfapi.h" #include "../natfeat/nf_ops.h" #define WITH_PROTOTYPE_STRINGS 1 gl_private *private; /*--- functions that "throw" exceptions ---*/ #ifdef TGL_ENABLE_CHECKS GLenum GLAPIENTRY glGetError(void) { return (*HostCall_p)(NFOSMESA_GLGETERROR, private->cur_context, NULL); } static GLenum clear_gl_error(void) { GLenum i; i = glGetError(); if (i != GL_NO_ERROR) { while (glGetError() != GL_NO_ERROR) ; } return i; } static void GLAPIENTRY check_glBindTexture(GLenum target, GLuint texture) { GLenum e; clear_gl_error(); glBindTexture(target, texture); if ((e = glGetError()) != GL_NO_ERROR) { gl_fatal_error(private, e, 8, "glBindTexture: unsupported option"); } } #define glBindTexture check_glBindTexture static void GLAPIENTRY check_glTexImage2D(GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels) { GLenum e; clear_gl_error(); glTexImage2D(target, level, components, width, height, border, format, type, pixels); if ((e = glGetError()) != GL_NO_ERROR) { gl_fatal_error(private, e, 7, "glTexImage2D: combination of parameters not handled"); } } #define glTexImage2D check_glTexImage2D static void GLAPIENTRY check_glTexEnvi(GLenum target, GLenum pname, GLint param) { GLenum e; clear_gl_error(); glTexEnvi(target, pname, param); if ((e = glGetError()) != GL_NO_ERROR) { gl_fatal_error(private, e, 8, "glTexEnv: unsupported option"); } } #define glTexEnvi check_glTexEnvi static void GLAPIENTRY check_glTexParameteri(GLenum target, GLenum pname, GLint param) { GLenum e; clear_gl_error(); glTexParameteri(target, pname, param); if ((e = glGetError()) != GL_NO_ERROR) { gl_fatal_error(private, e, 8, "glTexParameter: unsupported option"); } } #define glTexParameteri check_glTexParameteri static void GLAPIENTRY check_glPixelStorei(GLenum pname, GLint param) { GLenum e; clear_gl_error(); glPixelStorei(pname, param); if ((e = glGetError()) != GL_NO_ERROR) { gl_fatal_error(private, e, 9, "glPixelStore: unsupported option"); } } #define glPixelStorei check_glPixelStorei static void GLAPIENTRY check_glGetIntegerv(GLenum pname, GLint *params) { GLenum e; clear_gl_error(); glGetIntegerv(pname, params); if ((e = glGetError()) != GL_NO_ERROR) { gl_fatal_error(private, e, 3, "glGetIntegerv: option not implemented"); } } #define glGetIntegerv check_glGetIntegerv static void GLAPIENTRY check_glGetFloatv(GLenum pname, GLfloat *v) { GLenum e; clear_gl_error(); glGetFloatv(pname, v); if ((e = glGetError()) != GL_NO_ERROR) { gl_fatal_error(private, e, 102, "glGetFloatv: option not implemented"); } } #define glGetFloatv check_glGetFloatv static void GLAPIENTRY check_glCallList(GLuint list) { GLenum e; clear_gl_error(); glCallList(list); if ((e = glGetError()) != GL_NO_ERROR) { gl_fatal_error(private, e, 2, "glCallList: list not defined"); } } #define glCallList check_glCallList static void GLAPIENTRY check_glVertex2f(GLfloat x, GLfloat y) { GLenum e; clear_gl_error(); glVertex2f(x, y); if ((e = glGetError()) != GL_NO_ERROR) { gl_fatal_error(private, e, 2, "unable to allocate GLVertex array"); } } #define glVertex2f check_glVertex2f static void GLAPIENTRY check_glVertex3f(GLfloat x, GLfloat y, GLfloat z) { GLenum e; clear_gl_error(); glVertex3f(x, y, z); if ((e = glGetError()) != GL_NO_ERROR) { gl_fatal_error(private, e, 2, "unable to allocate GLVertex array"); } } #define glVertex3f check_glVertex3f static void GLAPIENTRY check_glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { GLenum e; clear_gl_error(); glVertex4f(x, y, z, w); if ((e = glGetError()) != GL_NO_ERROR) { gl_fatal_error(private, e, 2, "unable to allocate GLVertex array"); } } #define glVertex4f check_glVertex4f static void GLAPIENTRY check_glVertex3fv(const GLfloat *v) { GLenum e; clear_gl_error(); glVertex3fv(v); if ((e = glGetError()) != GL_NO_ERROR) { if (e == GL_OUT_OF_MEMORY) gl_fatal_error(private, e, 2, "unable to allocate GLVertex array"); else gl_fatal_error(private, e, 10, "glBegin: type not handled"); } } #define glVertex3fv check_glVertex3fv static void GLAPIENTRY check_glViewport(GLint x, GLint y, GLint width, GLint height) { GLenum e; clear_gl_error(); glViewport(x, y, width, height); if ((e = glGetError()) != GL_NO_ERROR) { if (width <= 0 || height <= 0) gl_fatal_error(private, e, 5, "glViewport: size too small"); else gl_fatal_error(private, e, 4, "glViewport: error while resizing display"); } } #define glViewport check_glViewport static void GLAPIENTRY check_glEnable(GLenum cap) { GLenum e; clear_gl_error(); glEnable(cap); if ((e = glGetError()) != GL_NO_ERROR) { gl_fatal_error(private, e, 103, "glEnableDisable: unsupported code"); } } #define glEnable check_glEnable static void GLAPIENTRY check_glDisable(GLenum cap) { GLenum e; clear_gl_error(); glDisable(cap); if ((e = glGetError()) != GL_NO_ERROR) { gl_fatal_error(private, e, 103, "glEnableDisable: unsupported code"); } } #define glDisable check_glDisable #endif /* TGL_ENABLE_CHECKS */ /*--- LDG functions ---*/ static long GLAPIENTRY ldg_libinit(gl_private *priv) { private = priv; internal_glInit(private); return sizeof(*private); } static PROC const LibFunc[]={ #if WITH_PROTOTYPE_STRINGS { "glInit", "glInit(void *)", ldg_libinit }, #define GL_PROC(type, ret, name, f, desc, proto, args) { name, desc, f }, #else { "glInit", 0, ldg_libinit }, #define GL_PROC(type, ret, name, f, desc, proto, args) { name, 0, f }, #endif #include "link-tinygl.h" /* 83 functions */ {NULL, NULL, NULL} }; #include "versinfo.h" #ifndef __STRINGIFY #define __STRING(x) #x #define __STRINGIFY(x) __STRING(x) #endif char const __Ident_tinygl[] = "$NFTinyGL: TinyGL NFOSMesa API Version " __STRINGIFY(ARANFOSMESA_NFAPI_VERSION) " " ASCII_ARCH_TARGET " " ASCII_COMPILER " $"; int err_old_nfapi(void) { /* not an error for TinyGL; the 83 functions should always be present */ return 0; } static LDGLIB const LibLdg = { /* library version */ 0x0100, /* count of functions in library */ sizeof(LibFunc) / sizeof(LibFunc[0]) - 1, /* function addresses */ LibFunc, /* Library information string */ "TinyGL NFOSMesa API Version " __STRINGIFY(ARANFOSMESA_NFAPI_VERSION) " " ASCII_ARCH_TARGET " " ASCII_COMPILER, /* Library flags */ LDG_NOT_SHARED, NULL, 0 }; void APIENTRY tinyglinformation(void) { (void) Cconws(LibLdg.infos); (void) Cconws("\r\n"); } /* * Main part : communication with LDG-system */ int main(void) { if (ldg_init(&LibLdg) != 0) { err_init("This program is a LDG library"); } return 0; } aranym-1.1.0/atari/nfosmesa/nfosmesa_nfapi.h0000664000175000017500000000231513454637621017256 0ustar joyjoy/* NatFeat host OSMesa rendering: NatFeat functions ARAnyM (C) 2003 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _NFOSMESA_NFAPI_H #define _NFOSMESA_NFAPI_H #define NFOSMESA_IOCTL (('N'<<8)|'F') /* if you change anything in the enum {} below you have to increase this ARANFOSMESA_NFAPI_VERSION! */ #define ARANFOSMESA_NFAPI_VERSION 4 enum { GET_VERSION=0, /* no parameters, return NFAPI_VERSION in d0 */ #include "enum-gl.h" NFOSMESA_LAST, NFOSMESA_ENOSYS = NFOSMESA_LAST }; #define NFOSMESA(a) (nfOSMesaId + a) #endif /* _NFOSMESA_NFAPI_H */ aranym-1.1.0/atari/nfosmesa/nfosmesa.c0000664000175000017500000000625213454637621016100 0ustar joyjoy/* OSMesa LDG linker Copyright (C) 2004 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Includes ---*/ #include #include #include #include /*--- Functions prototypes ---*/ #include "lib-osmesa.h" #include "lib-oldmesa.h" #include "lib-misc.h" #include "nfosmesa_nfapi.h" #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) extern type APIENTRY OSMesa ## name proto ; #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) extern type APIENTRY gl ## name proto ; #include "glfuncs.h" #define WITH_PROTOTYPE_STRINGS 1 gl_private *private; /*--- LDG functions ---*/ static long GLAPIENTRY ldg_libinit(gl_private *priv) { private = priv; internal_glInit(private); return sizeof(*private); } static PROC const LibFunc[]={ #if WITH_PROTOTYPE_STRINGS { "glInit", "glInit(void *)", ldg_libinit }, #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) { #export, #type " " #gl #name #proto, gl ## name }, #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) { #export, #type " OSMesa" #name #proto, OSMesa ## name }, #else { "glInit", 0, ldg_libinit }, #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) { #export, 0, gl ## name }, #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) { #export, 0, OSMesa ## name }, #endif #include "glfuncs.h" /* 12 OSMesa + numerous GL functions + 1 GLU function */ #include "link-oldmesa.h" /* 5 + 8 functions for compatibility with TinyGL */ {NULL, NULL, NULL} }; #include "versinfo.h" int err_old_nfapi(void) { /* an error for Mesa_GL */ return 1; } #ifndef __STRINGIFY #define __STRING(x) #x #define __STRINGIFY(x) __STRING(x) #endif char const __Ident_osmesa[] = "$OSMesa: NFOSMesa API Version " __STRINGIFY(ARANFOSMESA_NFAPI_VERSION) " " ASCII_ARCH_TARGET " " ASCII_COMPILER " $"; static LDGLIB const LibLdg = { /* library version */ 0x0A15, /* count of functions in library */ sizeof(LibFunc) / sizeof(LibFunc[0]) - 1, /* function addresses */ LibFunc, /* Library information string */ "Mesa library NFOSMesa API Version " __STRINGIFY(ARANFOSMESA_NFAPI_VERSION) " " ASCII_ARCH_TARGET " " ASCII_COMPILER, /* Library flags */ LDG_NOT_SHARED, NULL, 0 }; void APIENTRY tinyglinformation(void) { (void) Cconws(LibLdg.infos); (void) Cconws("\r\n"); } /* * Main part : communication with LDG-system */ int main(void) { if (ldg_init(&LibLdg) != 0) { err_init("This program is a LDG library"); } return 0; } aranym-1.1.0/atari/nfosmesa/link-tinygl.h0000664000175000017500000003077113454637621016536 0ustar joyjoy/* * -- DO NOT EDIT -- * Generated by dyngl.pl from ./tools/glfuncs.h */ #undef NUM_TINYGL_PROCS GL_PROC(void, voidf, "information", tinyglinformation, "void information(void)", (NOTHING), ()) GL_PROC(void, voidf, "glBegin", glBegin, "void glBegin(GLenum mode)", (AND GLenum mode), (mode)) GL_PROC(void, voidf, "glClear", glClear, "void glClear(GLbitfield mask)", (AND GLbitfield mask), (mask)) GL_PROC(void, voidf, "glClearColor", glClearColor, "void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)", (AND GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha), (red, green, blue, alpha)) GL_PROC(void, voidf, "glColor3f", glColor3f, "void glColor3f(GLfloat red, GLfloat green, GLfloat blue)", (AND GLfloat red, GLfloat green, GLfloat blue), (red, green, blue)) GL_PROC(void, voidf, "glDisable", glDisable, "void glDisable(GLenum cap)", (AND GLenum cap), (cap)) GL_PROC(void, voidf, "glEnable", glEnable, "void glEnable(GLenum cap)", (AND GLenum cap), (cap)) GL_PROC(void, voidf, "glEnd", glEnd, "void glEnd(void)", (NOTHING), ()) GL_PROC(void, voidf, "glLightfv", glLightfv, "void glLightfv(GLenum light, GLenum pname, const GLfloat *params)", (AND GLenum light, GLenum pname, const GLfloat *params), (light, pname, params)) GL_PROC(void, voidf, "glLoadIdentity", glLoadIdentity, "void glLoadIdentity(void)", (NOTHING), ()) GL_PROC(void, voidf, "glMaterialfv", glMaterialfv, "void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params)", (AND GLenum face, GLenum pname, const GLfloat *params), (face, pname, params)) GL_PROC(void, voidf, "glMatrixMode", glMatrixMode, "void glMatrixMode(GLenum mode)", (AND GLenum mode), (mode)) GL_PROC(void, voidf, "glOrtho", glOrthof, "void glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val)", (AND GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val), (left, right, bottom, top, near_val, far_val)) GL_PROC(void, voidf, "glPopMatrix", glPopMatrix, "void glPopMatrix(void)", (NOTHING), ()) GL_PROC(void, voidf, "glPushMatrix", glPushMatrix, "void glPushMatrix(void)", (NOTHING), ()) GL_PROC(void, voidf, "glRotatef", glRotatef, "void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)", (AND GLfloat angle, GLfloat x, GLfloat y, GLfloat z), (angle, x, y, z)) GL_PROC(void, voidf, "glTexEnvi", glTexEnvi, "void glTexEnvi(GLenum target, GLenum pname, GLint param)", (AND GLenum target, GLenum pname, GLint param), (target, pname, param)) GL_PROC(void, voidf, "glTexParameteri", glTexParameteri, "void glTexParameteri(GLenum target, GLenum pname, GLint param)", (AND GLenum target, GLenum pname, GLint param), (target, pname, param)) GL_PROC(void, voidf, "glTranslatef", glTranslatef, "void glTranslatef(GLfloat x, GLfloat y, GLfloat z)", (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z)) GL_PROC(void, voidf, "glVertex2f", glVertex2f, "void glVertex2f(GLfloat x, GLfloat y)", (AND GLfloat x, GLfloat y), (x, y)) GL_PROC(void, voidf, "glVertex3f", glVertex3f, "void glVertex3f(GLfloat x, GLfloat y, GLfloat z)", (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z)) GL_PROC(void *, return , "OSMesaCreateLDG", OSMesaCreateLDG, "void * OSMesaCreateLDG(GLenum format, GLenum type, GLint width, GLint height)", (AND GLenum format, GLenum type, GLint width, GLint height), (format, type, width, height)) GL_PROC(void, voidf, "OSMesaDestroyLDG", OSMesaDestroyLDG, "void OSMesaDestroyLDG(void)", (NOTHING), ()) GL_PROC(void, voidf, "glArrayElement", glArrayElement, "void glArrayElement(GLint i)", (AND GLint i), (i)) GL_PROC(void, voidf, "glBindTexture", glBindTexture, "void glBindTexture(GLenum target, GLuint texture)", (AND GLenum target, GLuint texture), (target, texture)) GL_PROC(void, voidf, "glCallList", glCallList, "void glCallList(GLuint list)", (AND GLuint list), (list)) GL_PROC(void, voidf, "glClearDepth", glClearDepthf, "void glClearDepthf(GLfloat d)", (AND GLfloat d), (d)) GL_PROC(void, voidf, "glColor4f", glColor4f, "void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)", (AND GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha)) GL_PROC(void, voidf, "glColor3fv", glColor3fv, "void glColor3fv(const GLfloat *v)", (AND const GLfloat *v), (v)) GL_PROC(void, voidf, "glColor4fv", glColor4fv, "void glColor4fv(const GLfloat *v)", (AND const GLfloat *v), (v)) GL_PROC(void, voidf, "glColorMaterial", glColorMaterial, "void glColorMaterial(GLenum face, GLenum mode)", (AND GLenum face, GLenum mode), (face, mode)) GL_PROC(void, voidf, "glColorPointer", glColorPointer, "void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)", (AND GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size, type, stride, pointer)) GL_PROC(void, voidf, "glCullFace", glCullFace, "void glCullFace(GLenum mode)", (AND GLenum mode), (mode)) GL_PROC(void, voidf, "glDeleteTextures", glDeleteTextures, "void glDeleteTextures(GLsizei n, const GLuint *textures)", (AND GLsizei n, const GLuint *textures), (n, textures)) GL_PROC(void, voidf, "glDisableClientState", glDisableClientState, "void glDisableClientState(GLenum array)", (AND GLenum array), (array)) GL_PROC(void, voidf, "glEnableClientState", glEnableClientState, "void glEnableClientState(GLenum array)", (AND GLenum array), (array)) GL_PROC(void, voidf, "glEndList", glEndList, "void glEndList(void)", (NOTHING), ()) GL_PROC(void, voidf, "glEdgeFlag", glEdgeFlag, "void glEdgeFlag(GLboolean32 flag)", (AND GLboolean32 flag), (flag)) GL_PROC(void, voidf, "glFlush", glFlush, "void glFlush(void)", (NOTHING), ()) GL_PROC(void, voidf, "glFrontFace", glFrontFace, "void glFrontFace(GLenum mode)", (AND GLenum mode), (mode)) GL_PROC(void, voidf, "glFrustum", glFrustumf, "void glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val)", (AND GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val), (left, right, bottom, top, near_val, far_val)) GL_PROC(GLuint, return , "glGenLists", glGenLists, "GLuint glGenLists(GLsizei range)", (AND GLsizei range), (range)) GL_PROC(void, voidf, "glGenTextures", glGenTextures, "void glGenTextures(GLsizei n, GLuint *textures)", (AND GLsizei n, GLuint *textures), (n, textures)) GL_PROC(void, voidf, "glGetFloatv", glGetFloatv, "void glGetFloatv(GLenum pname, GLfloat *params)", (AND GLenum pname, GLfloat *params), (pname, params)) GL_PROC(void, voidf, "glGetIntegerv", glGetIntegerv, "void glGetIntegerv(GLenum pname, GLint *params)", (AND GLenum pname, GLint *params), (pname, params)) GL_PROC(void, voidf, "glHint", glHint, "void glHint(GLenum target, GLenum mode)", (AND GLenum target, GLenum mode), (target, mode)) GL_PROC(void, voidf, "glInitNames", glInitNames, "void glInitNames(void)", (NOTHING), ()) GL_PROC(GLboolean, return , "glIsList", glIsList, "GLboolean glIsList(GLuint list)", (AND GLuint list), (list)) GL_PROC(void, voidf, "glLightf", glLightf, "void glLightf(GLenum light, GLenum pname, GLfloat param)", (AND GLenum light, GLenum pname, GLfloat param), (light, pname, param)) GL_PROC(void, voidf, "glLightModeli", glLightModeli, "void glLightModeli(GLenum pname, GLint param)", (AND GLenum pname, GLint param), (pname, param)) GL_PROC(void, voidf, "glLightModelfv", glLightModelfv, "void glLightModelfv(GLenum pname, const GLfloat *params)", (AND GLenum pname, const GLfloat *params), (pname, params)) GL_PROC(void, voidf, "glLoadMatrixf", glLoadMatrixf, "void glLoadMatrixf(const GLfloat *m)", (AND const GLfloat *m), (m)) GL_PROC(void, voidf, "glLoadName", glLoadName, "void glLoadName(GLuint name)", (AND GLuint name), (name)) GL_PROC(void, voidf, "glMaterialf", glMaterialf, "void glMaterialf(GLenum face, GLenum pname, GLfloat param)", (AND GLenum face, GLenum pname, GLfloat param), (face, pname, param)) GL_PROC(void, voidf, "glMultMatrixf", glMultMatrixf, "void glMultMatrixf(const GLfloat *m)", (AND const GLfloat *m), (m)) GL_PROC(void, voidf, "glNewList", glNewList, "void glNewList(GLuint list, GLenum mode)", (AND GLuint list, GLenum mode), (list, mode)) GL_PROC(void, voidf, "glNormal3f", glNormal3f, "void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)", (AND GLfloat nx, GLfloat ny, GLfloat nz), (nx, ny, nz)) GL_PROC(void, voidf, "glNormal3fv", glNormal3fv, "void glNormal3fv(const GLfloat *v)", (AND const GLfloat *v), (v)) GL_PROC(void, voidf, "glNormalPointer", glNormalPointer, "void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer)", (AND GLenum type, GLsizei stride, const GLvoid *pointer), (type, stride, pointer)) GL_PROC(void, voidf, "glPixelStorei", glPixelStorei, "void glPixelStorei(GLenum pname, GLint param)", (AND GLenum pname, GLint param), (pname, param)) GL_PROC(void, voidf, "glPolygonMode", glPolygonMode, "void glPolygonMode(GLenum face, GLenum mode)", (AND GLenum face, GLenum mode), (face, mode)) GL_PROC(void, voidf, "glPolygonOffset", glPolygonOffset, "void glPolygonOffset(GLfloat factor, GLfloat units)", (AND GLfloat factor, GLfloat units), (factor, units)) GL_PROC(void, voidf, "glPopName", glPopName, "void glPopName(void)", (NOTHING), ()) GL_PROC(void, voidf, "glPushName", glPushName, "void glPushName(GLuint name)", (AND GLuint name), (name)) GL_PROC(GLint, return , "glRenderMode", glRenderMode, "GLint glRenderMode(GLenum mode)", (AND GLenum mode), (mode)) GL_PROC(void, voidf, "glSelectBuffer", glSelectBuffer, "void glSelectBuffer(GLsizei size, GLuint *buffer)", (AND GLsizei size, GLuint *buffer), (size, buffer)) GL_PROC(void, voidf, "glScalef", glScalef, "void glScalef(GLfloat x, GLfloat y, GLfloat z)", (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z)) GL_PROC(void, voidf, "glShadeModel", glShadeModel, "void glShadeModel(GLenum mode)", (AND GLenum mode), (mode)) GL_PROC(void, voidf, "glTexCoord2f", glTexCoord2f, "void glTexCoord2f(GLfloat s, GLfloat t)", (AND GLfloat s, GLfloat t), (s, t)) GL_PROC(void, voidf, "glTexCoord4f", glTexCoord4f, "void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q)", (AND GLfloat s, GLfloat t, GLfloat r, GLfloat q), (s, t, r, q)) GL_PROC(void, voidf, "glTexCoord2fv", glTexCoord2fv, "void glTexCoord2fv(const GLfloat *v)", (AND const GLfloat *v), (v)) GL_PROC(void, voidf, "glTexCoordPointer", glTexCoordPointer, "void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)", (AND GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size, type, stride, pointer)) GL_PROC(void, voidf, "glTexImage2D", glTexImage2D, "void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)", (AND GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels), (target, level, internalformat, width, height, border, format, type, pixels)) GL_PROC(void, voidf, "glVertex4f", glVertex4f, "void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)", (AND GLfloat x, GLfloat y, GLfloat z, GLfloat w), (x, y, z, w)) GL_PROC(void, voidf, "glVertex3fv", glVertex3fv, "void glVertex3fv(const GLfloat *v)", (AND const GLfloat *v), (v)) GL_PROC(void, voidf, "glVertexPointer", glVertexPointer, "void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)", (AND GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size, type, stride, pointer)) GL_PROC(void, voidf, "glViewport", glViewport, "void glViewport(GLint x, GLint y, GLsizei width, GLsizei height)", (AND GLint x, GLint y, GLsizei width, GLsizei height), (x, y, width, height)) GL_PROC(void, voidf, "swapbuffer", tinyglswapbuffer, "void swapbuffer(void *buffer)", (AND void *buffer), (buffer)) GL_PROC(GLsizei, return , "max_width", max_width, "GLsizei max_width(void)", (NOTHING), ()) GL_PROC(GLsizei, return , "max_height", max_height, "GLsizei max_height(void)", (NOTHING), ()) GL_PROC(void, voidf, "glDeleteLists", glDeleteLists, "void glDeleteLists(GLuint list, GLsizei range)", (AND GLuint list, GLsizei range), (list, range)) GL_PROC(void, voidf, "gluLookAt", gluLookAtf, "void gluLookAtf(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ)", (AND GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ), (eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ)) GL_PROC(void, voidf, "exception_error", tinyglexception_error, "void exception_error(void (CALLBACK *exception)(GLenum param) )", (AND void (CALLBACK *exception)(GLenum param) ), (exception)) #undef GL_PROC #undef GL_PROC64 #define NUM_TINYGL_PROCS 83 /* Functions generated: 83 */ aranym-1.1.0/atari/nfosmesa/link-oldmesa.h0000664000175000017500000000250313454637621016644 0ustar joyjoy#ifndef WITH_PROTOTYPE_STRINGS # define WITH_PROTOTYPE_STRINGS 1 #endif #if WITH_PROTOTYPE_STRINGS #define GL_PROC(name, f, desc) { name, desc, f }, #else #define GL_PROC(name, f, desc) { name, 0, f }, #endif GL_PROC("OSMesaCreateLDG", OSMesaCreateLDG, "void *OSMesaCreateLDG(GLenum format, GLenum type, GLint width, GLint height)") GL_PROC("OSMesaDestroyLDG", OSMesaDestroyLDG, "void OSMesaDestroyLDG(void)") GL_PROC("max_width", max_width, "GLsizei max_width(void)") GL_PROC("max_height", max_height, "GLsizei max_height(void)") GL_PROC("glOrtho", glOrthof, "void glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val)") GL_PROC("swapbuffer", tinyglswapbuffer, "void swapbuffer(void *buf)") GL_PROC("exception_error", tinyglexception_error, "void exception_error(void CALLBACK (*exception)(GLenum param))") GL_PROC("information", tinyglinformation, "void information(void)") GL_PROC("glFrustum", glFrustumf, "void glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val)") GL_PROC("glClearDepth", glClearDepthf, "void glClearDepthf(GLfloat depth)") GL_PROC("gluLookAt", gluLookAtf, "void gluLookAtf(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ)") #undef GL_PROC aranym-1.1.0/atari/nfosmesa/libc.c0000664000175000017500000000456613454637621015204 0ustar joyjoy#include #include #include /* * Selection of functions that are (directly or indirectly) * referenced by libldg.a */ char **__environ; /* * only called form crtinit. * Must be called extern though, otherwise it gets inlined, * making __builtin_return_address() return the return address of * main. */ void _setstack(char *newsp) { register void *retpc __asm__ ("a0") = __builtin_return_address(0); __asm__ volatile ( "\tmove.l %1,sp\n" /* set new stack pointer */ "\tsubl #64+4, sp\n" /* push some unused space for buggy OS and a fake parameter to be popped by the caller */ "\tjmp (%0)\n" : /* outputs */ : "a"(retpc), "r"(newsp) /* inputs */ ); __builtin_unreachable(); } /* * strlen - length of string (not including NUL) */ size_t strlen(const char *scan) { register const char *start = scan+1; if (!scan) return 0; while (*scan++ != '\0') continue; return (size_t)((long)scan - (long)start); } /* * strncmp - compare at most n characters of string s1 to s2 */ /* <0 for <, 0 for ==, >0 for > */ int strncmp(const char *scan1, const char *scan2, size_t n) { register unsigned char c1, c2; register long count; /* FIXME!!! Has to be size_t but that requires a rewrite (Guido). */ if (!scan1) { return scan2 ? -1 : 0; } if (!scan2) return 1; count = n; do { c1 = (unsigned char) *scan1++; c2 = (unsigned char) *scan2++; } while (--count >= 0 && c1 && c1 == c2); if (count < 0) return(0); /* * The following case analysis is necessary so that characters * which look negative collate low against normal characters but * high against the end-of-string NUL. */ if (c1 == c2) return(0); else if (c1 == '\0') return(-1); else if (c2 == '\0') return(1); else return(c1 - c2); } char *getenv(const char *tag) { char **var; char *name; size_t len; if (!__environ) return 0; len = strlen (tag); for (var = __environ; (name = *var) != 0; var++) { if (!strncmp(name, tag, len) && name[len] == '=') return name+len+1; } return 0; } /* * Convert a string to a long int. * Not strictly compliant, but good enough for our purpose. */ long int atol(const char *nptr) { long val = 0; while (*nptr) { val = val * 10 + (*nptr - '0'); nptr++; } return val; } void *memset(void *s, int c, size_t n) { register char *p = s; while (n) { *p++ = c; n--; } return s; } aranym-1.1.0/atari/nfosmesa/lib-tinygl.c0000664000175000017500000000005013454637621016325 0ustar joyjoy#define TINYGL_ONLY #include "lib-gl.c" aranym-1.1.0/atari/nfosmesa/lib-osmesa.h0000664000175000017500000000627313454637621016330 0ustar joyjoy/* OSMesa LDG linker, OSMesa*() functions using Natfeats Copyright (C) 2004 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef LIB_OSMESA_H #define LIB_OSMESA_H #include #include /*--- Types ---*/ typedef struct osmesa_context *OSMesaContext; #include "gltypes.h" #define MAX_OSMESA_CONTEXTS 16 typedef struct { void *oldmesa_buffer; GLubyte *gl_strings[7]; } gl_context; typedef struct { struct gl_public pub; /* must be fisrt element of structure */ OSMesaContext cur_context; void CALLBACK (*gl_exception)(GLenum param); gl_context contexts[MAX_OSMESA_CONTEXTS]; } gl_private; #define CTX_TO_IDX(ctx) ((unsigned int)(ctx)) /*--- Variables ---*/ extern long (*HostCall_p)(unsigned long function_number, OSMesaContext ctx, void *first_param); #ifndef TINYGL_ONLY extern void (*HostCall64_p)(unsigned long function_number, OSMesaContext ctx, void *first_param, GLuint64 *retvalue); #endif /*--- Functions prototypes ---*/ void APIENTRY internal_OSMesaPixelStore(gl_private *private, GLint pname, GLint value); OSMesaContext APIENTRY internal_OSMesaCreateContext(gl_private *private, GLenum format, OSMesaContext sharelist); OSMesaContext APIENTRY internal_OSMesaCreateContextExt(gl_private *private, GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist); void APIENTRY internal_OSMesaDestroyContext(gl_private *private, OSMesaContext ctx); GLboolean APIENTRY internal_OSMesaMakeCurrent(gl_private *private, OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height); OSMesaContext APIENTRY internal_OSMesaGetCurrentContext(gl_private *private); void APIENTRY internal_OSMesaPixelStore(gl_private *private, GLint pname, GLint value); void APIENTRY internal_OSMesaGetIntegerv(gl_private *private, GLint pname, GLint *value); GLboolean APIENTRY internal_OSMesaGetDepthBuffer(gl_private *private, OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void **buffer ); GLboolean APIENTRY internal_OSMesaGetColorBuffer(gl_private *private, OSMesaContext c, GLint *width, GLint *height, GLint *format, void **buffer ); OSMESAproc APIENTRY internal_OSMesaGetProcAddress(gl_private *private, const char *funcName); void APIENTRY internal_OSMesaColorClamp(gl_private *private, GLboolean32 enable); void APIENTRY internal_OSMesaPostprocess(gl_private *private, OSMesaContext osmesa, const char *filter, GLuint enable_value); OSMesaContext APIENTRY internal_OSMesaCreateContextAttribs(gl_private *private, const GLint *attribList, OSMesaContext sharelist); #endif aranym-1.1.0/atari/nfosmesa/lib-osmesa.c0000664000175000017500000001544213454637621016321 0ustar joyjoy/* OSMesa LDG loader Copyright (C) 2004 Patrice Mandin This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ /*--- Includes ---*/ #include #include #include #include #include #include "lib-osmesa.h" #include "lib-misc.h" #include "../natfeat/nf_ops.h" #include "nfosmesa_nfapi.h" /*--- Defines ---*/ #define NFOSMESA_DEVICE "u:\\dev\\nfosmesa" /*--- Local variables ---*/ static const struct nf_ops *nfOps; static unsigned long nfOSMesaId=0; static long do_nothing(unsigned long function_number, OSMesaContext ctx, void *first_param) { (void) function_number; (void) ctx; (void) first_param; return 0; } long (*HostCall_p)(unsigned long function_number, OSMesaContext ctx, void *first_param) = do_nothing; void (*HostCall64_p)(unsigned long function_number, OSMesaContext ctx, void *first_param, GLuint64 *retvalue); /*--- OSMesa functions redirectors ---*/ void err_init(const char *str) { /* * FIXME: figure out how to get at the apid of the * the app that loaded us (LDG->id), and perform * either Cconws() or form_alert() */ (void) Cconws(str); (void) Cconws("\r\n"); /* if (__mint) */ Salert(str); } static void InitNatfeat(void) { long ver; nfOps = nf_init(); if (!nfOps) { err_init("__NF cookie not present on this system"); return; } nfOSMesaId=nfOps->get_id("OSMESA"); if (nfOSMesaId==0) { err_init("NF OSMesa functions not present on this system"); return; } ver = nfOps->call(nfOSMesaId+GET_VERSION, 0l, 0l); if (ver < ARANFOSMESA_NFAPI_VERSION) { if (err_old_nfapi()) { err_init("NF OSMesa functions in ARAnyM too old"); nfOSMesaId = 0; return; } } if (ver > ARANFOSMESA_NFAPI_VERSION) { /* * they should be backward compatible, but give a warning */ (void) Cconws("Warning: NF OSMesa functions in ARAnyM newer than library\r\n"); } } static long HostCall_natfeats(unsigned long function_number, OSMesaContext ctx, void *first_param) { return nfOps->call(nfOSMesaId+function_number,ctx,first_param); } static void HostCall_natfeats64(unsigned long function_number, OSMesaContext ctx, void *first_param, GLuint64 *retvalue) { nfOps->call(nfOSMesaId+function_number, ctx, first_param, retvalue); } static int InstallHostCall(void) { /* TOS maybe, try the cookie */ if (nfOSMesaId==0) { InitNatfeat(); } if (nfOSMesaId!=0) { HostCall_p = HostCall_natfeats; HostCall64_p = HostCall_natfeats64; return 1; } return 0; } OSMesaContext APIENTRY internal_OSMesaCreateContext(gl_private *private, GLenum format, OSMesaContext sharelist) { if (!InstallHostCall()) { return NULL; } return (OSMesaContext)(*HostCall_p)(NFOSMESA_OSMESACREATECONTEXT, private->cur_context, &format); } OSMesaContext APIENTRY internal_OSMesaCreateContextExt(gl_private *private, GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist) { if (!InstallHostCall()) { return NULL; } return (OSMesaContext)(*HostCall_p)(NFOSMESA_OSMESACREATECONTEXTEXT, private->cur_context, &format); } OSMesaContext APIENTRY internal_OSMesaCreateContextAttribs(gl_private *private, const GLint *attribList, OSMesaContext sharelist) { if (!InstallHostCall()) { return NULL; } return (OSMesaContext)(*HostCall_p)(NFOSMESA_OSMESACREATECONTEXTATTRIBS, private->cur_context, &attribList); } void APIENTRY internal_OSMesaDestroyContext(gl_private *private, OSMesaContext ctx) { (*HostCall_p)(NFOSMESA_OSMESADESTROYCONTEXT, private->cur_context, &ctx); freeglGetString(private, ctx); if (ctx == private->cur_context) private->cur_context = 0; } GLboolean APIENTRY internal_OSMesaMakeCurrent(gl_private *private, OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height) { GLboolean ret = (GLboolean)(*HostCall_p)(NFOSMESA_OSMESAMAKECURRENT, private->cur_context, &ctx); if (ret) private->cur_context = ctx; return ret; } OSMesaContext APIENTRY internal_OSMesaGetCurrentContext(gl_private *private) { #if 0 /* * wrong; the host manages his current context for all processes using NFOSMesa; * return local copy instead */ return (OSMesaContext)(*HostCall_p)(NFOSMESA_OSMESAGETCURRENTCONTEXT, private->cur_context, NULL); #else return private->cur_context; #endif } void APIENTRY internal_OSMesaPixelStore(gl_private *private, GLint pname, GLint value) { (*HostCall_p)(NFOSMESA_OSMESAPIXELSTORE, private->cur_context, &pname); } void APIENTRY internal_OSMesaGetIntegerv(gl_private *private, GLint pname, GLint *value) { (*HostCall_p)(NFOSMESA_OSMESAGETINTEGERV, private->cur_context, &pname); } GLboolean APIENTRY internal_OSMesaGetDepthBuffer(gl_private *private, OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void **buffer ) { return (GLboolean)(*HostCall_p)(NFOSMESA_OSMESAGETDEPTHBUFFER, private->cur_context, &c); } GLboolean APIENTRY internal_OSMesaGetColorBuffer(gl_private *private, OSMesaContext c, GLint *width, GLint *height, GLint *format, void **buffer ) { return (GLboolean)(*HostCall_p)(NFOSMESA_OSMESAGETCOLORBUFFER, private->cur_context, &c); } OSMESAproc APIENTRY internal_OSMesaGetProcAddress(gl_private *private, const char *funcName) { long func = (*HostCall_p)(NFOSMESA_OSMESAGETPROCADDRESS, private->cur_context, &funcName); if (func == 0 || func > NFOSMESA_LAST) return 0; return (OSMESAproc)func; } void APIENTRY internal_OSMesaColorClamp(gl_private *private, GLboolean32 enable) { (*HostCall_p)(NFOSMESA_OSMESACOLORCLAMP, private->cur_context, &enable); } void APIENTRY internal_OSMesaPostprocess(gl_private *private, OSMesaContext osmesa, const char *filter, GLuint enable_value) { (*HostCall_p)(NFOSMESA_OSMESAPOSTPROCESS, private->cur_context, &osmesa); } void internal_glInit(gl_private *private) { unsigned int i, j; if (!private) return; private->cur_context = 0; private->gl_exception = 0; for (i = 0; i < MAX_OSMESA_CONTEXTS; i++) { private->contexts[i].oldmesa_buffer = 0; for (j = 0; j < sizeof(private->contexts[i].gl_strings) / sizeof(private->contexts[i].gl_strings[0]); j++) private->contexts[i].gl_strings[j] = 0; } InstallHostCall(); } aranym-1.1.0/atari/nfosmesa/lib-oldmesa.h0000664000175000017500000000421413454637621016456 0ustar joyjoy/* OSMesa LDG linker, old functions prototypes Copyright (C) 2004 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef LIB_OLDMESA_H #define LIB_OLDMESA_H /*--- Defines ---*/ /* Mxalloc parameters */ #ifndef MX_STRAM #define MX_STRAM 0 #define MX_TTRAM 1 #define MX_PREFSTRAM 2 #define MX_PREFTTRAM 3 #endif /*--- Functions prototypes ---*/ void err_init(const char *str); void *APIENTRY OSMesaCreateLDG(GLenum format, GLenum type, GLint width, GLint height ); void APIENTRY OSMesaDestroyLDG(void); GLsizei APIENTRY max_width(void); GLsizei APIENTRY max_height(void); void *APIENTRY internal_OSMesaCreateLDG(gl_private *private, GLenum format, GLenum type, GLint width, GLint height ); void APIENTRY internal_OSMesaDestroyLDG(gl_private *private); GLsizei APIENTRY internal_max_width(gl_private *private); GLsizei APIENTRY internal_max_height(gl_private *private); void APIENTRY glOrthof( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val ); void APIENTRY glClearDepthf(GLfloat depth); void APIENTRY glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val ); void APIENTRY gluLookAtf( GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ ); void APIENTRY tinyglswapbuffer(void *buf); void APIENTRY tinyglexception_error(void CALLBACK (*exception)(GLenum param)); void APIENTRY tinyglinformation(void); #endif /* OLDMESA_H */ aranym-1.1.0/atari/nfosmesa/lib-oldmesa.c0000664000175000017500000000677313454637621016465 0ustar joyjoy/* OSMesa LDG linker, compatibility functions with old mesa_gl.ldg/tiny_gl.ldg Copyright (C) 2004 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Includes ---*/ #include #include #include #include "lib-osmesa.h" #include "lib-oldmesa.h" #include "lib-misc.h" /*--- Defines ---*/ #define VDI_ARGB 0x8 #define VDI_RGB 0xf #define DIRECT_VDI_ARGB 0x10 #define GL_RGB 0x1907 #define GL_COLOR_INDEX 0x1900 #define OSMESA_ARGB 0x2 #define OSMESA_RGB GL_RGB #define OSMESA_COLOR_INDEX GL_COLOR_INDEX #define OSMESA_MAX_WIDTH 0x24 #define OSMESA_MAX_HEIGHT 0x25 #define OSMESA_Y_UP 0x11 /*--- Functions ---*/ void *APIENTRY internal_OSMesaCreateLDG(gl_private *private, GLenum format, GLenum type, GLint width, GLint height) { size_t buffer_size; void *buffer = NULL; GLenum osmesa_format; OSMesaContext oldmesa_ctx; unsigned int ctx; switch (format) { case VDI_ARGB: case DIRECT_VDI_ARGB: osmesa_format = OSMESA_ARGB; break; case VDI_RGB: osmesa_format = OSMESA_RGB; break; default: osmesa_format = format; break; } oldmesa_ctx = internal_OSMesaCreateContext(private, osmesa_format, NULL); if (!oldmesa_ctx) return NULL; { size_t wdwidth = (width + 15) >> 4; size_t pitch = wdwidth << 1; if (osmesa_format != OSMESA_COLOR_INDEX) pitch <<= 5; else pitch <<= 3; buffer_size = pitch * height; } buffer = private->pub.m_alloc(buffer_size); if (buffer == NULL) { internal_OSMesaDestroyContext(private, oldmesa_ctx); return NULL; } if (!internal_OSMesaMakeCurrent(private, oldmesa_ctx, buffer, type, width, height)) { private->pub.m_free(buffer); internal_OSMesaDestroyContext(private, oldmesa_ctx); #ifdef TGL_ENABLE_CHECKS gl_fatal_error(private, GL_OUT_OF_MEMORY, 13, "out of memory"); #endif return NULL; } /* OSMesa draws upside down */ internal_OSMesaPixelStore(private, OSMESA_Y_UP, 0); memset(buffer, 0, buffer_size); ctx = CTX_TO_IDX(oldmesa_ctx); private->contexts[ctx].oldmesa_buffer = buffer; return buffer; } void APIENTRY internal_OSMesaDestroyLDG(gl_private *private) { unsigned int ctx = CTX_TO_IDX(private->cur_context); if (private->contexts[ctx].oldmesa_buffer) { private->pub.m_free(private->contexts[ctx].oldmesa_buffer); private->contexts[ctx].oldmesa_buffer = NULL; } if (private->cur_context) { internal_OSMesaDestroyContext(private, private->cur_context); private->cur_context = NULL; } } GLsizei APIENTRY internal_max_width(gl_private *private) { GLint value = 0; internal_OSMesaGetIntegerv(private, OSMESA_MAX_WIDTH, &value); return value; } GLsizei APIENTRY internal_max_height(gl_private *private) { GLint value = 0; internal_OSMesaGetIntegerv(private, OSMESA_MAX_HEIGHT, &value); return value; } aranym-1.1.0/atari/nfosmesa/lib-misc.h0000664000175000017500000000315413454637621015767 0ustar joyjoy/* OSMesa LDG linker, misc functions Copyright (C) 2004 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef LIB_MISC_H #define LIB_MISC_H /*--- Includes ---*/ /*--- Functions ---*/ void internal_glInit(gl_private *private); const GLubyte* APIENTRY glGetString( GLenum name ); const GLubyte* APIENTRY glGetStringi( GLenum name, GLuint index ); const GLubyte* APIENTRY internal_glGetString( gl_private *private, GLenum name ); const GLubyte* APIENTRY internal_glGetStringi( gl_private *private, GLenum name, GLuint index ); void freeglGetString(gl_private *private, OSMesaContext ctx); int err_old_nfapi(void); int gl_exception_error(gl_private *private, GLenum exception); void gl_fatal_error(gl_private *private, GLenum error, long except, const char *format); void APIENTRY internal_tinyglexception_error(gl_private *private, void CALLBACK (*exception)(GLenum param)); void APIENTRY internal_tinyglswapbuffer(gl_private *private, void *buf); #endif aranym-1.1.0/atari/nfosmesa/lib-misc.c0000664000175000017500000001101413454637621015754 0ustar joyjoy/* OSMesa LDG linker, misc functions Copyright (C) 2004 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Includes ---*/ #include #include #include #include "lib-osmesa.h" #include "lib-oldmesa.h" #include "nfosmesa_nfapi.h" /*--- Defines ---*/ #define GL_VENDOR 0x1F00 #define GL_RENDERER 0x1F01 #define GL_VERSION 0x1F02 #define GL_EXTENSIONS 0x1F03 #define GL_SHADING_LANGUAGE_VERSION 0x8B8C /*--- Variables ---*/ static const GLubyte empty_str[1]; /*--- Functions ---*/ const GLubyte* APIENTRY internal_glGetString( gl_private *private, GLenum name ) { int i; size_t len; unsigned int c = CTX_TO_IDX(private->cur_context); if (c == 0) return empty_str; switch(name) { case GL_VERSION: i=1; break; case GL_RENDERER: i=2; break; case GL_VENDOR: i=3; break; case GL_EXTENSIONS: i=4; break; default: return empty_str; } if (private->contexts[c].gl_strings[i]==NULL) { unsigned long params[3]; params[0] = (unsigned long) private->cur_context; params[1] = (unsigned long) name; len = (*HostCall_p)(NFOSMESA_LENGLGETSTRING, private->cur_context, params); private->contexts[c].gl_strings[i] = (GLubyte *)private->pub.m_alloc(len+1); if (private->contexts[c].gl_strings[i]) { params[0] = (unsigned long) private->cur_context; params[1] = (unsigned long) name; params[2] = (unsigned long) private->contexts[c].gl_strings[i]; (*HostCall_p)(NFOSMESA_PUTGLGETSTRING, private->cur_context, params); } else { return empty_str; } } return private->contexts[c].gl_strings[i]; } const GLubyte* APIENTRY internal_glGetStringi(gl_private *private, GLenum name, GLuint index ) { int i; size_t len; unsigned int c = CTX_TO_IDX(private->cur_context); if (c == 0) return empty_str; switch(name) { case GL_EXTENSIONS: i=5; break; case GL_SHADING_LANGUAGE_VERSION: i=6; break; default: return empty_str; } if (private->contexts[c].gl_strings[i]!=NULL) { private->pub.m_free(private->contexts[c].gl_strings[i]); private->contexts[c].gl_strings[i] = NULL; } { unsigned long params[4]; params[0] = (unsigned long) private->cur_context; params[1] = (unsigned long) name; params[2] = (unsigned long) index; len = (*HostCall_p)(NFOSMESA_LENGLGETSTRINGI, private->cur_context, params); if (len < 0) return NULL; private->contexts[c].gl_strings[i] = (GLubyte *)private->pub.m_alloc(len+1); if (private->contexts[c].gl_strings[i]) { params[0] = (unsigned long) private->cur_context; params[1] = (unsigned long) name; params[2] = (unsigned long) index; params[3] = (unsigned long) private->contexts[c].gl_strings[i]; (*HostCall_p)(NFOSMESA_PUTGLGETSTRINGI, private->cur_context, params); } else { return empty_str; } } return private->contexts[c].gl_strings[i]; } void freeglGetString(gl_private *private, OSMesaContext ctx) { int i; unsigned int c = CTX_TO_IDX(ctx); for (i=1;i<7;i++) { if (private->contexts[c].gl_strings[i]) { private->pub.m_free(private->contexts[c].gl_strings[i]); private->contexts[c].gl_strings[i]=NULL; } } } void APIENTRY internal_tinyglswapbuffer(gl_private *private, void *buf) { (*HostCall_p)(NFOSMESA_TINYGLSWAPBUFFER, private->cur_context, &buf); } void APIENTRY internal_tinyglexception_error(gl_private *private, void CALLBACK (*exception)(GLenum param)) { private->gl_exception = exception; } int gl_exception_error(gl_private *private, GLenum exception) { if (private->gl_exception) { (*private->gl_exception)(exception); return 1; } return 0; } void gl_fatal_error(gl_private *private, GLenum error, long except, const char *format) { if (!gl_exception_error(private, except)) { static char const err[] = "TinyGL: fatal error: "; (void) Fwrite(2, sizeof(err) - 1, err); (void) Fwrite(2, strlen(format), format); (void) Fwrite(2, 2, "\r\n"); } } aranym-1.1.0/atari/nfosmesa/lib-ldg.c0000664000175000017500000000753013454637621015577 0ustar joyjoy/* OSMesa LDG linker, misc functions Copyright (C) 2004 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Includes ---*/ #include #include #include #include "lib-osmesa.h" #include "lib-oldmesa.h" #include "lib-misc.h" extern gl_private *private;; /*--- Defines ---*/ /*--- Functions ---*/ const GLubyte* APIENTRY glGetString( GLenum name ) { return internal_glGetString(private, name); } const GLubyte* APIENTRY glGetStringi( GLenum name, GLuint index ) { return internal_glGetStringi(private, name, index); } OSMesaContext APIENTRY OSMesaCreateContext(GLenum format, OSMesaContext sharelist) { return internal_OSMesaCreateContext(private, format, sharelist); } OSMesaContext APIENTRY OSMesaCreateContextAttribs(const GLint *attribList, OSMesaContext sharelist) { return internal_OSMesaCreateContextAttribs(private, attribList, sharelist); } void APIENTRY OSMesaDestroyContext(OSMesaContext ctx) { internal_OSMesaDestroyContext(private, ctx); } OSMesaContext APIENTRY OSMesaCreateContextExt(GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist) { return internal_OSMesaCreateContextExt(private, format, depthBits, stencilBits, accumBits, sharelist); } GLboolean APIENTRY OSMesaMakeCurrent(OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height) { return internal_OSMesaMakeCurrent(private, ctx, buffer, type, width, height); } OSMesaContext APIENTRY OSMesaGetCurrentContext(void) { return internal_OSMesaGetCurrentContext(private); } void APIENTRY OSMesaPixelStore(GLint pname, GLint value) { internal_OSMesaPixelStore(private, pname, value); } void APIENTRY OSMesaGetIntegerv(GLint pname, GLint *value) { internal_OSMesaGetIntegerv(private, pname, value); } GLboolean APIENTRY OSMesaGetDepthBuffer(OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void **buffer) { return internal_OSMesaGetDepthBuffer(private, c, width, height, bytesPerValue, buffer); } GLboolean APIENTRY OSMesaGetColorBuffer(OSMesaContext c, GLint *width, GLint *height, GLint *format, void **buffer ) { return internal_OSMesaGetColorBuffer(private, c, width, height, format, buffer); } OSMESAproc APIENTRY OSMesaGetProcAddress(const char *funcName) { return internal_OSMesaGetProcAddress(private, funcName); } void APIENTRY OSMesaColorClamp(GLboolean32 enable) { internal_OSMesaColorClamp(private, enable); } void APIENTRY OSMesaPostprocess(OSMesaContext osmesa, const char *filter, GLuint enable_value) { internal_OSMesaPostprocess(private, osmesa, filter, enable_value); } void *APIENTRY OSMesaCreateLDG(GLenum format, GLenum type, GLint width, GLint height) { return internal_OSMesaCreateLDG(private, format, type, width, height); } void APIENTRY OSMesaDestroyLDG(void) { internal_OSMesaDestroyLDG(private); } GLsizei APIENTRY max_width(void) { return internal_max_width(private); } GLsizei APIENTRY max_height(void) { return internal_max_height(private); } void APIENTRY tinyglswapbuffer(void *buf) { internal_tinyglswapbuffer(private, buf); } void APIENTRY tinyglexception_error(void CALLBACK (*exception)(GLenum param)) { internal_tinyglexception_error(private, exception); } aranym-1.1.0/atari/nfosmesa/lib-gl.c0000664000175000017500000000472713454637621015440 0ustar joyjoy/* OSMesa LDG loader Copyright (C) 2004 Patrice Mandin This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ /*--- Includes ---*/ #include "lib-osmesa.h" #include "nfosmesa_nfapi.h" extern gl_private *private;; #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) #define GL_GETSTRING(type, gl, name, export, upper, proto, args, first, ret) #define GL_GETSTRINGI(type, gl, name, export, upper, proto, args, first, ret) #define GL_PROC(type, gl, name, export, upper, proto, args, first, ret) \ type APIENTRY gl ## name proto \ { \ ret (*HostCall_p)(NFOSMESA_GL ## upper, private->cur_context, first); \ } #define GL_PROC64(type, gl, name, export, upper, proto, args, first, ret) \ type APIENTRY gl ## name proto \ { \ GLuint64 __retval = 0; \ (*HostCall64_p)(NFOSMESA_GL ## upper, private->cur_context, first, &__retval); \ return __retval; \ } #define GLU_PROC(type, gl, name, export, upper, proto, args, first, ret) \ type APIENTRY gl ## name proto \ { \ ret (*HostCall_p)(NFOSMESA_GLU ## upper, private->cur_context, first); \ } #include "glfuncs.h" void APIENTRY gluLookAtf( GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ ) { (*HostCall_p)(NFOSMESA_GLULOOKATF, private->cur_context, &eyeX); } void APIENTRY glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val) { (*HostCall_p)(NFOSMESA_GLFRUSTUMF, private->cur_context, &left); } void glOrthof( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val ) { (*HostCall_p)(NFOSMESA_GLORTHOF, private->cur_context, &left); } /* glClearDepthf() already exists in OpenGL/Mesa */ aranym-1.1.0/atari/nfosmesa/ldg/0000775000175000017500000000000013454637621014662 5ustar joyjoyaranym-1.1.0/atari/nfosmesa/ldg/tiny_gl.h0000664000175000017500000014520113454637621016503 0ustar joyjoy#ifndef __LDG_TINY_GL_H__ #define __LDG_TINY_GL_H__ #ifndef __TINY_GL_H__ # define __TINY_GL_H__ 1 #endif #include #include #include #if !defined(__MSHORT__) && (defined(__PUREC__) && __PUREC__ < 0x400) # define __MSHORT__ 1 #endif #if (!defined(__PUREC__) || !defined(__MSHORT__) || defined(__GEMLIB__)) && !defined(__USE_GEMLIB) #define __USE_GEMLIB 1 #endif #ifndef _WORD # if defined(__GEMLIB__) || defined(__USE_GEMLIB) # define _WORD short # else # define _WORD int # endif #endif #ifdef __cplusplus extern "C" { #endif /* * load & initialize TinyGL */ struct gl_public *ldg_load_tiny_gl(const char *libname, _WORD *gl); /* * init TinyGL from already loaded lib */ int ldg_init_tiny_gl(LDG *lib); /* * unload TinyGL */ void ldg_unload_tiny_gl(struct gl_public *pub, _WORD *gl); #ifdef __cplusplus } #endif #if !defined(__MSHORT__) && (defined(__PUREC__) && __PUREC__ < 0x400) # define __MSHORT__ 1 #endif #ifdef __cplusplus extern "C" { #endif #ifndef APIENTRY #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) #define APIENTRY __stdcall #elif defined(__PUREC__) #define APIENTRY __CDECL #else #define APIENTRY #endif #endif #ifndef CALLBACK #define CALLBACK APIENTRY #endif #ifndef GLAPIENTRY #define GLAPIENTRY APIENTRY #endif #ifndef APIENTRYP #define APIENTRYP APIENTRY * #endif #ifndef GLAPI #define GLAPI extern #endif #if !defined(__CDECL) #if defined(__PUREC__) #define __CDECL cdecl #else #define __CDECL #endif #endif #ifndef GL_VERSION_1_1 #define GL_VERSION_1_1 1 #ifdef __MSHORT__ typedef long GLint; /* 4-byte signed */ typedef unsigned long GLuint; /* 4-byte unsigned */ typedef unsigned long GLenum; /* 4-byte unsigned */ typedef unsigned long GLbitfield; /* 4-byte unsigned */ typedef long GLsizei; #else typedef int GLint; /* 4-byte signed */ typedef unsigned int GLuint; /* 4-byte unsigned */ typedef unsigned int GLenum; /* 4-byte unsigned */ typedef unsigned int GLbitfield; /* 4-byte unsigned */ typedef int GLsizei; #endif typedef unsigned char GLboolean; typedef signed char GLbyte; /* 1-byte signed */ typedef unsigned char GLubyte; /* 1-byte unsigned */ typedef short GLshort; /* 2-byte signed */ typedef unsigned short GLushort; /* 2-byte unsigned */ typedef float GLfloat; /* single precision float */ typedef float GLclampf; /* single precision float in [0, 1] */ typedef double GLdouble; /* double precision float */ typedef double GLclampd; /* double precision float in [0, 1] */ typedef void GLvoid; /* Boolean values */ #define GL_FALSE 0 #define GL_TRUE 1 /* Data types */ #define GL_BYTE 0x1400 #define GL_UNSIGNED_BYTE 0x1401 #define GL_SHORT 0x1402 #define GL_UNSIGNED_SHORT 0x1403 #define GL_INT 0x1404 #define GL_UNSIGNED_INT 0x1405 #define GL_FLOAT 0x1406 #define GL_DOUBLE 0x140A #define GL_2_BYTES 0x1407 #define GL_3_BYTES 0x1408 #define GL_4_BYTES 0x1409 /* Primitives */ #define GL_LINES 0x0001 #define GL_POINTS 0x0000 #define GL_LINE_STRIP 0x0003 #define GL_LINE_LOOP 0x0002 #define GL_TRIANGLES 0x0004 #define GL_TRIANGLE_STRIP 0x0005 #define GL_TRIANGLE_FAN 0x0006 #define GL_QUADS 0x0007 #define GL_QUAD_STRIP 0x0008 #define GL_POLYGON 0x0009 #define GL_EDGE_FLAG 0x0B43 /* Vertex Arrays */ #define GL_VERTEX_ARRAY 0x8074 #define GL_NORMAL_ARRAY 0x8075 #define GL_COLOR_ARRAY 0x8076 #define GL_INDEX_ARRAY 0x8077 #define GL_TEXTURE_COORD_ARRAY 0x8078 #define GL_EDGE_FLAG_ARRAY 0x8079 #define GL_VERTEX_ARRAY_SIZE 0x807A #define GL_VERTEX_ARRAY_TYPE 0x807B #define GL_VERTEX_ARRAY_STRIDE 0x807C #define GL_VERTEX_ARRAY_COUNT 0x807D #define GL_NORMAL_ARRAY_TYPE 0x807E #define GL_NORMAL_ARRAY_STRIDE 0x807F #define GL_NORMAL_ARRAY_COUNT 0x8080 #define GL_COLOR_ARRAY_SIZE 0x8081 #define GL_COLOR_ARRAY_TYPE 0x8082 #define GL_COLOR_ARRAY_STRIDE 0x8083 #define GL_COLOR_ARRAY_COUNT 0x8084 #define GL_INDEX_ARRAY_TYPE 0x8085 #define GL_INDEX_ARRAY_STRIDE 0x8086 #define GL_INDEX_ARRAY_COUNT 0x8087 #define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 #define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 #define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A #define GL_TEXTURE_COORD_ARRAY_COUNT 0x808B #define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C #define GL_EDGE_FLAG_ARRAY_COUNT 0x808D #define GL_VERTEX_ARRAY_POINTER 0x808E #define GL_NORMAL_ARRAY_POINTER 0x808F #define GL_COLOR_ARRAY_POINTER 0x8090 #define GL_INDEX_ARRAY_POINTER 0x8091 #define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 #define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 #define GL_V2F 0x2A20 #define GL_V3F 0x2A21 #define GL_C4UB_V2F 0x2A22 #define GL_C4UB_V3F 0x2A23 #define GL_C3F_V3F 0x2A24 #define GL_N3F_V3F 0x2A25 #define GL_C4F_N3F_V3F 0x2A26 #define GL_T2F_V3F 0x2A27 #define GL_T4F_V4F 0x2A28 #define GL_T2F_C4UB_V3F 0x2A29 #define GL_T2F_C3F_V3F 0x2A2A #define GL_T2F_N3F_V3F 0x2A2B #define GL_T2F_C4F_N3F_V3F 0x2A2C #define GL_T4F_C4F_N3F_V4F 0x2A2D /* Matrix Mode */ #define GL_MATRIX_MODE 0x0BA0 #define GL_MODELVIEW 0x1700 #define GL_PROJECTION 0x1701 #define GL_TEXTURE 0x1702 /* Points */ #define GL_POINT_SMOOTH 0x0B10 #define GL_POINT_SIZE 0x0B11 #define GL_POINT_SIZE_GRANULARITY 0x0B13 #define GL_POINT_SIZE_RANGE 0x0B12 /* Lines */ #define GL_LINE_SMOOTH 0x0B20 #define GL_LINE_STIPPLE 0x0B24 #define GL_LINE_STIPPLE_PATTERN 0x0B25 #define GL_LINE_STIPPLE_REPEAT 0x0B26 #define GL_LINE_WIDTH 0x0B21 #define GL_LINE_WIDTH_GRANULARITY 0x0B23 #define GL_LINE_WIDTH_RANGE 0x0B22 /* Polygons */ #define GL_POINT 0x1B00 #define GL_LINE 0x1B01 #define GL_FILL 0x1B02 #define GL_CCW 0x0901 #define GL_CW 0x0900 #define GL_FRONT 0x0404 #define GL_BACK 0x0405 #define GL_CULL_FACE 0x0B44 #define GL_CULL_FACE_MODE 0x0B45 #define GL_POLYGON_SMOOTH 0x0B41 #define GL_POLYGON_STIPPLE 0x0B42 #define GL_FRONT_FACE 0x0B46 #define GL_POLYGON_MODE 0x0B40 #define GL_POLYGON_OFFSET_FACTOR 0x8038 #define GL_POLYGON_OFFSET_UNITS 0x2A00 #define GL_POLYGON_OFFSET_POINT 0x2A01 #define GL_POLYGON_OFFSET_LINE 0x2A02 #define GL_POLYGON_OFFSET_FILL 0x8037 /* Display Lists */ #define GL_COMPILE 0x1300 #define GL_COMPILE_AND_EXECUTE 0x1301 #define GL_LIST_BASE 0x0B32 #define GL_LIST_INDEX 0x0B33 #define GL_LIST_MODE 0x0B30 /* Depth buffer */ #define GL_NEVER 0x0200 #define GL_LESS 0x0201 #define GL_GEQUAL 0x0206 #define GL_LEQUAL 0x0203 #define GL_GREATER 0x0204 #define GL_NOTEQUAL 0x0205 #define GL_EQUAL 0x0202 #define GL_ALWAYS 0x0207 #define GL_DEPTH_TEST 0x0B71 #define GL_DEPTH_BITS 0x0D56 #define GL_DEPTH_CLEAR_VALUE 0x0B73 #define GL_DEPTH_FUNC 0x0B74 #define GL_DEPTH_RANGE 0x0B70 #define GL_DEPTH_WRITEMASK 0x0B72 #define GL_DEPTH_COMPONENT 0x1902 /* Lighting */ #define GL_LIGHTING 0x0B50 #define GL_LIGHT0 0x4000 #define GL_LIGHT1 0x4001 #define GL_LIGHT2 0x4002 #define GL_LIGHT3 0x4003 #define GL_LIGHT4 0x4004 #define GL_LIGHT5 0x4005 #define GL_LIGHT6 0x4006 #define GL_LIGHT7 0x4007 #define GL_SPOT_EXPONENT 0x1205 #define GL_SPOT_CUTOFF 0x1206 #define GL_CONSTANT_ATTENUATION 0x1207 #define GL_LINEAR_ATTENUATION 0x1208 #define GL_QUADRATIC_ATTENUATION 0x1209 #define GL_AMBIENT 0x1200 #define GL_DIFFUSE 0x1201 #define GL_SPECULAR 0x1202 #define GL_SHININESS 0x1601 #define GL_EMISSION 0x1600 #define GL_POSITION 0x1203 #define GL_SPOT_DIRECTION 0x1204 #define GL_AMBIENT_AND_DIFFUSE 0x1602 #define GL_COLOR_INDEXES 0x1603 #define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 #define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 #define GL_LIGHT_MODEL_AMBIENT 0x0B53 #define GL_FRONT_AND_BACK 0x0408 #define GL_SHADE_MODEL 0x0B54 #define GL_FLAT 0x1D00 #define GL_SMOOTH 0x1D01 #define GL_COLOR_MATERIAL 0x0B57 #define GL_COLOR_MATERIAL_FACE 0x0B55 #define GL_COLOR_MATERIAL_PARAMETER 0x0B56 #define GL_NORMALIZE 0x0BA1 /* User clipping planes */ #define GL_CLIP_PLANE0 0x3000 #define GL_CLIP_PLANE1 0x3001 #define GL_CLIP_PLANE2 0x3002 #define GL_CLIP_PLANE3 0x3003 #define GL_CLIP_PLANE4 0x3004 #define GL_CLIP_PLANE5 0x3005 /* Accumulation buffer */ #define GL_ACCUM_RED_BITS 0x0D58 #define GL_ACCUM_GREEN_BITS 0x0D59 #define GL_ACCUM_BLUE_BITS 0x0D5A #define GL_ACCUM_ALPHA_BITS 0x0D5B #define GL_ACCUM_CLEAR_VALUE 0x0B80 #define GL_ACCUM 0x0100 #define GL_ADD 0x0104 #define GL_LOAD 0x0101 #define GL_MULT 0x0103 #define GL_RETURN 0x0102 /* Alpha testing */ #define GL_ALPHA_TEST 0x0BC0 #define GL_ALPHA_TEST_REF 0x0BC2 #define GL_ALPHA_TEST_FUNC 0x0BC1 /* Blending */ #define GL_BLEND 0x0BE2 #define GL_BLEND_SRC 0x0BE1 #define GL_BLEND_DST 0x0BE0 #define GL_ZERO 0 #define GL_ONE 1 #define GL_SRC_COLOR 0x0300 #define GL_ONE_MINUS_SRC_COLOR 0x0301 #define GL_DST_COLOR 0x0306 #define GL_ONE_MINUS_DST_COLOR 0x0307 #define GL_SRC_ALPHA 0x0302 #define GL_ONE_MINUS_SRC_ALPHA 0x0303 #define GL_DST_ALPHA 0x0304 #define GL_ONE_MINUS_DST_ALPHA 0x0305 #define GL_SRC_ALPHA_SATURATE 0x0308 #define GL_CONSTANT_COLOR 0x8001 #define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 #define GL_CONSTANT_ALPHA 0x8003 #define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 /* Render Mode */ #define GL_FEEDBACK 0x1C01 #define GL_RENDER 0x1C00 #define GL_SELECT 0x1C02 /* Feedback */ #define GL_2D 0x0600 #define GL_3D 0x0601 #define GL_3D_COLOR 0x0602 #define GL_3D_COLOR_TEXTURE 0x0603 #define GL_4D_COLOR_TEXTURE 0x0604 #define GL_POINT_TOKEN 0x0701 #define GL_LINE_TOKEN 0x0702 #define GL_LINE_RESET_TOKEN 0x0707 #define GL_POLYGON_TOKEN 0x0703 #define GL_BITMAP_TOKEN 0x0704 #define GL_DRAW_PIXEL_TOKEN 0x0705 #define GL_COPY_PIXEL_TOKEN 0x0706 #define GL_PASS_THROUGH_TOKEN 0x0700 #define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 #define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 #define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 /* Fog */ #define GL_FOG 0x0B60 #define GL_FOG_MODE 0x0B65 #define GL_FOG_DENSITY 0x0B62 #define GL_FOG_COLOR 0x0B66 #define GL_FOG_INDEX 0x0B61 #define GL_FOG_START 0x0B63 #define GL_FOG_END 0x0B64 #define GL_LINEAR 0x2601 #define GL_EXP 0x0800 #define GL_EXP2 0x0801 /* Logic Ops */ #define GL_LOGIC_OP 0x0BF1 #define GL_INDEX_LOGIC_OP 0x0BF1 #define GL_COLOR_LOGIC_OP 0x0BF2 #define GL_LOGIC_OP_MODE 0x0BF0 #define GL_CLEAR 0x1500 #define GL_SET 0x150F #define GL_COPY 0x1503 #define GL_COPY_INVERTED 0x150C #define GL_NOOP 0x1505 #define GL_INVERT 0x150A #define GL_AND 0x1501 #define GL_NAND 0x150E #define GL_OR 0x1507 #define GL_NOR 0x1508 #define GL_XOR 0x1506 #define GL_EQUIV 0x1509 #define GL_AND_REVERSE 0x1502 #define GL_AND_INVERTED 0x1504 #define GL_OR_REVERSE 0x150B #define GL_OR_INVERTED 0x150D /* Stencil */ #define GL_STENCIL_TEST 0x0B90 #define GL_STENCIL_WRITEMASK 0x0B98 #define GL_STENCIL_BITS 0x0D57 #define GL_STENCIL_FUNC 0x0B92 #define GL_STENCIL_VALUE_MASK 0x0B93 #define GL_STENCIL_REF 0x0B97 #define GL_STENCIL_FAIL 0x0B94 #define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 #define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 #define GL_STENCIL_CLEAR_VALUE 0x0B91 #define GL_STENCIL_INDEX 0x1901 #define GL_KEEP 0x1E00 #define GL_REPLACE 0x1E01 #define GL_INCR 0x1E02 #define GL_DECR 0x1E03 /* Buffers, Pixel Drawing/Reading */ #define GL_NONE 0 #define GL_LEFT 0x0406 #define GL_RIGHT 0x0407 #define GL_FRONT_LEFT 0x0400 #define GL_FRONT_RIGHT 0x0401 #define GL_BACK_LEFT 0x0402 #define GL_BACK_RIGHT 0x0403 #define GL_AUX0 0x0409 #define GL_AUX1 0x040A #define GL_AUX2 0x040B #define GL_AUX3 0x040C #define GL_COLOR_INDEX 0x1900 #define GL_RED 0x1903 #define GL_GREEN 0x1904 #define GL_BLUE 0x1905 #define GL_ALPHA 0x1906 #define GL_LUMINANCE 0x1909 #define GL_LUMINANCE_ALPHA 0x190A #define GL_ALPHA_BITS 0x0D55 #define GL_RED_BITS 0x0D52 #define GL_GREEN_BITS 0x0D53 #define GL_BLUE_BITS 0x0D54 #define GL_INDEX_BITS 0x0D51 #define GL_SUBPIXEL_BITS 0x0D50 #define GL_AUX_BUFFERS 0x0C00 #define GL_READ_BUFFER 0x0C02 #define GL_DRAW_BUFFER 0x0C01 #define GL_DOUBLEBUFFER 0x0C32 #define GL_STEREO 0x0C33 #define GL_BITMAP 0x1A00 #define GL_COLOR 0x1800 #define GL_DEPTH 0x1801 #define GL_STENCIL 0x1802 #define GL_DITHER 0x0BD0 #define GL_RGB 0x1907 #define GL_RGBA 0x1908 /* Implementation limits */ #define GL_MAX_LIST_NESTING 0x0B31 #define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 #define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 #define GL_MAX_NAME_STACK_DEPTH 0x0D37 #define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 #define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 #define GL_MAX_EVAL_ORDER 0x0D30 #define GL_MAX_LIGHTS 0x0D31 #define GL_MAX_CLIP_PLANES 0x0D32 #define GL_MAX_TEXTURE_SIZE 0x0D33 #define GL_MAX_PIXEL_MAP_TABLE 0x0D34 #define GL_MAX_VIEWPORT_DIMS 0x0D3A #define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B #define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 /* Gets */ #define GL_ATTRIB_STACK_DEPTH 0x0BB0 #define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 #define GL_COLOR_CLEAR_VALUE 0x0C22 #define GL_COLOR_WRITEMASK 0x0C23 #define GL_CURRENT_INDEX 0x0B01 #define GL_CURRENT_COLOR 0x0B00 #define GL_CURRENT_NORMAL 0x0B02 #define GL_CURRENT_RASTER_COLOR 0x0B04 #define GL_CURRENT_RASTER_DISTANCE 0x0B09 #define GL_CURRENT_RASTER_INDEX 0x0B05 #define GL_CURRENT_RASTER_POSITION 0x0B07 #define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 #define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 #define GL_CURRENT_TEXTURE_COORDS 0x0B03 #define GL_INDEX_CLEAR_VALUE 0x0C20 #define GL_INDEX_MODE 0x0C30 #define GL_INDEX_WRITEMASK 0x0C21 #define GL_MODELVIEW_MATRIX 0x0BA6 #define GL_MODELVIEW_STACK_DEPTH 0x0BA3 #define GL_NAME_STACK_DEPTH 0x0D70 #define GL_PROJECTION_MATRIX 0x0BA7 #define GL_PROJECTION_STACK_DEPTH 0x0BA4 #define GL_RENDER_MODE 0x0C40 #define GL_RGBA_MODE 0x0C31 #define GL_TEXTURE_MATRIX 0x0BA8 #define GL_TEXTURE_STACK_DEPTH 0x0BA5 #define GL_VIEWPORT 0x0BA2 #define GL_COLOR_MATRIX 0x80B1 #define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 /* Evaluators */ #define GL_AUTO_NORMAL 0x0D80 #define GL_MAP1_COLOR_4 0x0D90 #define GL_MAP1_GRID_DOMAIN 0x0DD0 #define GL_MAP1_GRID_SEGMENTS 0x0DD1 #define GL_MAP1_INDEX 0x0D91 #define GL_MAP1_NORMAL 0x0D92 #define GL_MAP1_TEXTURE_COORD_1 0x0D93 #define GL_MAP1_TEXTURE_COORD_2 0x0D94 #define GL_MAP1_TEXTURE_COORD_3 0x0D95 #define GL_MAP1_TEXTURE_COORD_4 0x0D96 #define GL_MAP1_VERTEX_3 0x0D97 #define GL_MAP1_VERTEX_4 0x0D98 #define GL_MAP2_COLOR_4 0x0DB0 #define GL_MAP2_GRID_DOMAIN 0x0DD2 #define GL_MAP2_GRID_SEGMENTS 0x0DD3 #define GL_MAP2_INDEX 0x0DB1 #define GL_MAP2_NORMAL 0x0DB2 #define GL_MAP2_TEXTURE_COORD_1 0x0DB3 #define GL_MAP2_TEXTURE_COORD_2 0x0DB4 #define GL_MAP2_TEXTURE_COORD_3 0x0DB5 #define GL_MAP2_TEXTURE_COORD_4 0x0DB6 #define GL_MAP2_VERTEX_3 0x0DB7 #define GL_MAP2_VERTEX_4 0x0DB8 #define GL_COEFF 0x0A00 #define GL_DOMAIN 0x0A02 #define GL_ORDER 0x0A01 /* Hints */ #define GL_FOG_HINT 0x0C54 #define GL_LINE_SMOOTH_HINT 0x0C52 #define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 #define GL_POINT_SMOOTH_HINT 0x0C51 #define GL_POLYGON_SMOOTH_HINT 0x0C53 #define GL_DONT_CARE 0x1100 #define GL_FASTEST 0x1101 #define GL_NICEST 0x1102 /* Scissor box */ #define GL_SCISSOR_TEST 0x0C11 #define GL_SCISSOR_BOX 0x0C10 /* Pixel Mode / Transfer */ #define GL_MAP_COLOR 0x0D10 #define GL_MAP_STENCIL 0x0D11 #define GL_INDEX_SHIFT 0x0D12 #define GL_INDEX_OFFSET 0x0D13 #define GL_RED_SCALE 0x0D14 #define GL_RED_BIAS 0x0D15 #define GL_GREEN_SCALE 0x0D18 #define GL_GREEN_BIAS 0x0D19 #define GL_BLUE_SCALE 0x0D1A #define GL_BLUE_BIAS 0x0D1B #define GL_ALPHA_SCALE 0x0D1C #define GL_ALPHA_BIAS 0x0D1D #define GL_DEPTH_SCALE 0x0D1E #define GL_DEPTH_BIAS 0x0D1F #define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 #define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 #define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 #define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 #define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 #define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 #define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 #define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 #define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 #define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 #define GL_PIXEL_MAP_S_TO_S 0x0C71 #define GL_PIXEL_MAP_I_TO_I 0x0C70 #define GL_PIXEL_MAP_I_TO_R 0x0C72 #define GL_PIXEL_MAP_I_TO_G 0x0C73 #define GL_PIXEL_MAP_I_TO_B 0x0C74 #define GL_PIXEL_MAP_I_TO_A 0x0C75 #define GL_PIXEL_MAP_R_TO_R 0x0C76 #define GL_PIXEL_MAP_G_TO_G 0x0C77 #define GL_PIXEL_MAP_B_TO_B 0x0C78 #define GL_PIXEL_MAP_A_TO_A 0x0C79 #define GL_PACK_ALIGNMENT 0x0D05 #define GL_PACK_LSB_FIRST 0x0D01 #define GL_PACK_ROW_LENGTH 0x0D02 #define GL_PACK_SKIP_PIXELS 0x0D04 #define GL_PACK_SKIP_ROWS 0x0D03 #define GL_PACK_SWAP_BYTES 0x0D00 #define GL_UNPACK_ALIGNMENT 0x0CF5 #define GL_UNPACK_LSB_FIRST 0x0CF1 #define GL_UNPACK_ROW_LENGTH 0x0CF2 #define GL_UNPACK_SKIP_PIXELS 0x0CF4 #define GL_UNPACK_SKIP_ROWS 0x0CF3 #define GL_UNPACK_SWAP_BYTES 0x0CF0 #define GL_ZOOM_X 0x0D16 #define GL_ZOOM_Y 0x0D17 /* Texture mapping */ #define GL_TEXTURE_ENV 0x2300 #define GL_TEXTURE_ENV_MODE 0x2200 #define GL_TEXTURE_1D 0x0DE0 #define GL_TEXTURE_2D 0x0DE1 #define GL_TEXTURE_WRAP_S 0x2802 #define GL_TEXTURE_WRAP_T 0x2803 #define GL_TEXTURE_MAG_FILTER 0x2800 #define GL_TEXTURE_MIN_FILTER 0x2801 #define GL_TEXTURE_ENV_COLOR 0x2201 #define GL_TEXTURE_GEN_S 0x0C60 #define GL_TEXTURE_GEN_T 0x0C61 #define GL_TEXTURE_GEN_MODE 0x2500 #define GL_TEXTURE_BORDER_COLOR 0x1004 #define GL_TEXTURE_WIDTH 0x1000 #define GL_TEXTURE_HEIGHT 0x1001 #define GL_TEXTURE_BORDER 0x1005 #define GL_TEXTURE_COMPONENTS 0x1003 #define GL_TEXTURE_RED_SIZE 0x805C #define GL_TEXTURE_GREEN_SIZE 0x805D #define GL_TEXTURE_BLUE_SIZE 0x805E #define GL_TEXTURE_ALPHA_SIZE 0x805F #define GL_TEXTURE_LUMINANCE_SIZE 0x8060 #define GL_TEXTURE_INTENSITY_SIZE 0x8061 #define GL_NEAREST_MIPMAP_NEAREST 0x2700 #define GL_NEAREST_MIPMAP_LINEAR 0x2702 #define GL_LINEAR_MIPMAP_NEAREST 0x2701 #define GL_LINEAR_MIPMAP_LINEAR 0x2703 #define GL_OBJECT_LINEAR 0x2401 #define GL_OBJECT_PLANE 0x2501 #define GL_EYE_LINEAR 0x2400 #define GL_EYE_PLANE 0x2502 #define GL_SPHERE_MAP 0x2402 #define GL_DECAL 0x2101 #define GL_MODULATE 0x2100 #define GL_NEAREST 0x2600 #define GL_REPEAT 0x2901 #define GL_CLAMP 0x2900 #define GL_S 0x2000 #define GL_T 0x2001 #define GL_R 0x2002 #define GL_Q 0x2003 #define GL_TEXTURE_GEN_R 0x0C62 #define GL_TEXTURE_GEN_Q 0x0C63 #define GL_PROXY_TEXTURE_1D 0x8063 #define GL_PROXY_TEXTURE_2D 0x8064 #define GL_TEXTURE_PRIORITY 0x8066 #define GL_TEXTURE_RESIDENT 0x8067 #define GL_TEXTURE_BINDING_1D 0x8068 #define GL_TEXTURE_BINDING_2D 0x8069 /* Internal texture formats */ #define GL_ALPHA4 0x803B #define GL_ALPHA8 0x803C #define GL_ALPHA12 0x803D #define GL_ALPHA16 0x803E #define GL_LUMINANCE4 0x803F #define GL_LUMINANCE8 0x8040 #define GL_LUMINANCE12 0x8041 #define GL_LUMINANCE16 0x8042 #define GL_LUMINANCE4_ALPHA4 0x8043 #define GL_LUMINANCE6_ALPHA2 0x8044 #define GL_LUMINANCE8_ALPHA8 0x8045 #define GL_LUMINANCE12_ALPHA4 0x8046 #define GL_LUMINANCE12_ALPHA12 0x8047 #define GL_LUMINANCE16_ALPHA16 0x8048 #define GL_INTENSITY 0x8049 #define GL_INTENSITY4 0x804A #define GL_INTENSITY8 0x804B #define GL_INTENSITY12 0x804C #define GL_INTENSITY16 0x804D #define GL_R3_G3_B2 0x2A10 #define GL_RGB4 0x804F #define GL_RGB5 0x8050 #define GL_RGB8 0x8051 #define GL_RGB10 0x8052 #define GL_RGB12 0x8053 #define GL_RGB16 0x8054 #define GL_RGBA2 0x8055 #define GL_RGBA4 0x8056 #define GL_RGB5_A1 0x8057 #define GL_RGBA8 0x8058 #define GL_RGB10_A2 0x8059 #define GL_RGBA12 0x805A #define GL_RGBA16 0x805B /* Utility */ #define GL_VENDOR 0x1F00 #define GL_RENDERER 0x1F01 #define GL_VERSION 0x1F02 #define GL_EXTENSIONS 0x1F03 /* Errors */ #define GL_NO_ERROR 0 #define GL_INVALID_VALUE 0x0501 #define GL_INVALID_ENUM 0x0500 #define GL_INVALID_OPERATION 0x0502 #define GL_STACK_OVERFLOW 0x0503 #define GL_STACK_UNDERFLOW 0x0504 #define GL_OUT_OF_MEMORY 0x0505 /* * 1.0 Extensions */ /* GL_EXT_blend_minmax and GL_EXT_blend_color */ #define GL_CONSTANT_COLOR_EXT 0x8001 #define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 #define GL_CONSTANT_ALPHA_EXT 0x8003 #define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 #define GL_BLEND_EQUATION_EXT 0x8009 #define GL_MIN_EXT 0x8007 #define GL_MAX_EXT 0x8008 #define GL_FUNC_ADD_EXT 0x8006 #define GL_FUNC_SUBTRACT_EXT 0x800A #define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B #define GL_BLEND_COLOR_EXT 0x8005 /* GL_EXT_polygon_offset */ #define GL_POLYGON_OFFSET_EXT 0x8037 #define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 #define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 /* GL_EXT_vertex_array */ #define GL_VERTEX_ARRAY_EXT 0x8074 #define GL_NORMAL_ARRAY_EXT 0x8075 #define GL_COLOR_ARRAY_EXT 0x8076 #define GL_INDEX_ARRAY_EXT 0x8077 #define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 #define GL_EDGE_FLAG_ARRAY_EXT 0x8079 #define GL_VERTEX_ARRAY_SIZE_EXT 0x807A #define GL_VERTEX_ARRAY_TYPE_EXT 0x807B #define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C #define GL_VERTEX_ARRAY_COUNT_EXT 0x807D #define GL_NORMAL_ARRAY_TYPE_EXT 0x807E #define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F #define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 #define GL_COLOR_ARRAY_SIZE_EXT 0x8081 #define GL_COLOR_ARRAY_TYPE_EXT 0x8082 #define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 #define GL_COLOR_ARRAY_COUNT_EXT 0x8084 #define GL_INDEX_ARRAY_TYPE_EXT 0x8085 #define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 #define GL_INDEX_ARRAY_COUNT_EXT 0x8087 #define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 #define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 #define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A #define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B #define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C #define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D #define GL_VERTEX_ARRAY_POINTER_EXT 0x808E #define GL_NORMAL_ARRAY_POINTER_EXT 0x808F #define GL_COLOR_ARRAY_POINTER_EXT 0x8090 #define GL_INDEX_ARRAY_POINTER_EXT 0x8091 #define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 #define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 /* GL_EXT_texture_object */ #define GL_TEXTURE_PRIORITY_EXT 0x8066 #define GL_TEXTURE_RESIDENT_EXT 0x8067 #define GL_TEXTURE_1D_BINDING_EXT 0x8068 #define GL_TEXTURE_2D_BINDING_EXT 0x8069 /* GL_EXT_texture3D */ #define GL_PACK_SKIP_IMAGES_EXT 0x806B #define GL_PACK_IMAGE_HEIGHT_EXT 0x806C #define GL_UNPACK_SKIP_IMAGES_EXT 0x806D #define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E #define GL_TEXTURE_3D_EXT 0x806F #define GL_PROXY_TEXTURE_3D_EXT 0x8070 #define GL_TEXTURE_DEPTH_EXT 0x8071 #define GL_TEXTURE_WRAP_R_EXT 0x8072 #define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 #define GL_TEXTURE_3D_BINDING_EXT 0x806A /* GL_EXT_paletted_texture */ #define GL_TABLE_TOO_LARGE_EXT 0x8031 #define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 #define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 #define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA #define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB #define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC #define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD #define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE #define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF #define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED #define GL_COLOR_INDEX1_EXT 0x80E2 #define GL_COLOR_INDEX2_EXT 0x80E3 #define GL_COLOR_INDEX4_EXT 0x80E4 #define GL_COLOR_INDEX8_EXT 0x80E5 #define GL_COLOR_INDEX12_EXT 0x80E6 #define GL_COLOR_INDEX16_EXT 0x80E7 /* GL_EXT_shared_texture_palette */ #define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB #if 0 /* GL_SGIS_texture_lod */ #define GL_TEXTURE_MIN_LOD_SGIS 0x813A #define GL_TEXTURE_MAX_LOD_SGIS 0x813B #define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C #define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D #endif /* GL_EXT_point_parameters */ #define GL_POINT_SIZE_MIN_EXT 0x8126 #define GL_POINT_SIZE_MAX_EXT 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 #define GL_DISTANCE_ATTENUATION_EXT 0x8129 #define GL_CURRENT_BIT 0x00000001L #define GL_POINT_BIT 0x00000002L #define GL_LINE_BIT 0x00000004L #define GL_POLYGON_BIT 0x00000008L #define GL_POLYGON_STIPPLE_BIT 0x00000010L #define GL_PIXEL_MODE_BIT 0x00000020L #define GL_LIGHTING_BIT 0x00000040L #define GL_FOG_BIT 0x00000080L #define GL_DEPTH_BUFFER_BIT 0x00000100L #define GL_ACCUM_BUFFER_BIT 0x00000200L #define GL_STENCIL_BUFFER_BIT 0x00000400L #define GL_VIEWPORT_BIT 0x00000800L #define GL_TRANSFORM_BIT 0x00001000L #define GL_ENABLE_BIT 0x00002000L #define GL_COLOR_BUFFER_BIT 0x00004000L #define GL_HINT_BIT 0x00008000L #define GL_EVAL_BIT 0x00010000L #define GL_LIST_BIT 0x00020000L #define GL_TEXTURE_BIT 0x00040000L #define GL_SCISSOR_BIT 0x00080000L #define GL_ALL_ATTRIB_BITS 0x000fffffL #define GL_CLIENT_PIXEL_STORE_BIT 0x00000001L #define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002L #define GL_CLIENT_ALL_ATTRIB_BITS 0x0000FFFFL GLAPI void GLAPIENTRY glEnable(GLenum cap); GLAPI void GLAPIENTRY glDisable(GLenum cap); GLAPI void GLAPIENTRY glShadeModel(GLenum mode); GLAPI void GLAPIENTRY glCullFace(GLenum mode); GLAPI void GLAPIENTRY glPolygonMode(GLenum face, GLenum mode); GLAPI void GLAPIENTRY glBegin(GLenum mode); GLAPI void GLAPIENTRY glEnd(void); GLAPI void GLAPIENTRY glVertex2f(GLfloat x, GLfloat y); GLAPI void GLAPIENTRY glVertex2d(GLdouble x, GLdouble y); GLAPI void GLAPIENTRY glVertex2fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex2dv(const GLdouble *v); GLAPI void GLAPIENTRY glVertex3f(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glVertex3d(GLdouble x, GLdouble y, GLdouble z); GLAPI void GLAPIENTRY glVertex3fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex3dv(const GLdouble *v); GLAPI void GLAPIENTRY glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void GLAPIENTRY glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void GLAPIENTRY glVertex4fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex4dv(const GLdouble *v); GLAPI void GLAPIENTRY glColor3f(GLfloat red, GLfloat green, GLfloat blue); GLAPI void GLAPIENTRY glColor3d(GLdouble red, GLdouble green, GLdouble blue); GLAPI void GLAPIENTRY glColor3fv(const GLfloat *v); GLAPI void GLAPIENTRY glColor3dv(const GLdouble *v); GLAPI void GLAPIENTRY glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); GLAPI void GLAPIENTRY glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); GLAPI void GLAPIENTRY glColor4fv(const GLfloat *v); GLAPI void GLAPIENTRY glColor4dv(const GLdouble *v); GLAPI void GLAPIENTRY glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); GLAPI void GLAPIENTRY glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); GLAPI void GLAPIENTRY glNormal3fv(const GLfloat *v); GLAPI void GLAPIENTRY glNormal3dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord1f(GLfloat s); GLAPI void GLAPIENTRY glTexCoord1d(GLdouble s); GLAPI void GLAPIENTRY glTexCoord1fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord1dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord2f(GLfloat s, GLfloat t); GLAPI void GLAPIENTRY glTexCoord2d(GLdouble s, GLdouble t); GLAPI void GLAPIENTRY glTexCoord2fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord2dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); GLAPI void GLAPIENTRY glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); GLAPI void GLAPIENTRY glTexCoord3fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord3dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); GLAPI void GLAPIENTRY glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); GLAPI void GLAPIENTRY glTexCoord4fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord4dv(const GLdouble *v); GLAPI void GLAPIENTRY glEdgeFlag(GLboolean flag); /* matrix */ GLAPI void GLAPIENTRY glMatrixMode(GLenum mode); GLAPI void GLAPIENTRY glLoadMatrixf(const GLfloat *m); GLAPI void GLAPIENTRY glLoadIdentity(void); GLAPI void GLAPIENTRY glMultMatrixf(const GLfloat *m); GLAPI void GLAPIENTRY glPushMatrix(void); GLAPI void GLAPIENTRY glPopMatrix(void); GLAPI void GLAPIENTRY glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glTranslatef(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glScalef(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glViewport(GLint x, GLint y, GLint width, GLint height); GLAPI void GLAPIENTRY glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val); GLAPI void GLAPIENTRY glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val); /* lists */ GLAPI GLuint GLAPIENTRY glGenLists(GLsizei range); GLAPI GLboolean GLAPIENTRY glIsList(GLuint list); GLAPI void GLAPIENTRY glNewList(GLuint list, GLenum mode); GLAPI void GLAPIENTRY glEndList(void); GLAPI void GLAPIENTRY glCallList(GLuint list); GLAPI void GLAPIENTRY glDeleteLists(GLuint list, GLsizei range); /* clear */ GLAPI void GLAPIENTRY glClear(GLbitfield mask); GLAPI void GLAPIENTRY glClearColor(GLfloat r, GLfloat g, GLfloat b, GLfloat a); GLAPI void GLAPIENTRY glClearDepth(GLdouble depth); GLAPI void GLAPIENTRY glClearDepthf(GLfloat depth); /* selection */ GLAPI GLint GLAPIENTRY glRenderMode(GLenum mode); GLAPI void GLAPIENTRY glSelectBuffer(GLsizei size, GLuint *buf); GLAPI void GLAPIENTRY glInitNames(void); GLAPI void GLAPIENTRY glPushName(GLuint name); GLAPI void GLAPIENTRY glPopName(void); GLAPI void GLAPIENTRY glLoadName(GLuint name); /* textures */ GLAPI void GLAPIENTRY glGenTextures(GLsizei n, GLuint *textures); GLAPI void GLAPIENTRY glDeleteTextures(GLsizei n, const GLuint *textures); GLAPI void GLAPIENTRY glBindTexture(GLenum target, GLuint texture); GLAPI void GLAPIENTRY glTexImage2D(GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); GLAPI void GLAPIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param); GLAPI void GLAPIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param); GLAPI void GLAPIENTRY glPixelStorei(GLenum pname, GLint param); /* lighting */ GLAPI void GLAPIENTRY glMaterialfv(GLenum face, GLenum pname, const GLfloat *v); GLAPI void GLAPIENTRY glMaterialf(GLenum mode, GLenum pname, GLfloat v); GLAPI void GLAPIENTRY glColorMaterial(GLenum face, GLenum mode); GLAPI void GLAPIENTRY glLightfv(GLenum light, GLenum pname, const GLfloat *v); GLAPI void GLAPIENTRY glLightf(GLenum light, GLenum pname, GLfloat v); GLAPI void GLAPIENTRY glLightModeli(GLenum pname, GLint param); GLAPI void GLAPIENTRY glLightModelfv(GLenum pname, const GLfloat *param); /* misc */ GLAPI void GLAPIENTRY glFlush(void); GLAPI void GLAPIENTRY glHint(GLenum target, GLenum mode); GLAPI void GLAPIENTRY glGetIntegerv(GLenum pname, GLint *params); GLAPI void GLAPIENTRY glGetFloatv(GLenum pname, GLfloat *v); GLAPI void GLAPIENTRY glFrontFace(GLenum mode); /* opengl 1.2 arrays */ GLAPI void GLAPIENTRY glEnableClientState(GLenum array); GLAPI void GLAPIENTRY glDisableClientState(GLenum array); GLAPI void GLAPIENTRY glArrayElement(GLint i); GLAPI void GLAPIENTRY glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); /* opengl 1.2 polygon offset */ GLAPI void GLAPIENTRY glPolygonOffset(GLfloat factor, GLfloat units); #endif /* GL_VERSION_1_1 */ #ifndef GL_VERSION_1_5 #ifndef __GLintptr_defined #include #ifdef __APPLE__ typedef intptr_t GLsizeiptr; typedef intptr_t GLintptr; #else typedef ptrdiff_t GLsizeiptr; typedef ptrdiff_t GLintptr; #endif #define __GLintptr_defined #endif #endif #ifdef __NFOSMESA_H__ #include #endif #ifndef GL_VERSION_2_0 #define GL_VERSION_2_0 1 typedef char GLchar; #endif #ifndef GL_ARB_vertex_buffer_object #define GL_ARB_vertex_buffer_object 1 #ifdef __APPLE__ typedef intptr_t GLsizeiptrARB; typedef intptr_t GLintptrARB; #else typedef ptrdiff_t GLsizeiptrARB; typedef ptrdiff_t GLintptrARB; #endif #endif #ifndef GL_NV_half_float #define GL_NV_half_float 1 typedef unsigned short GLhalfNV; #endif #ifndef GL_NV_vdpau_interop #define GL_NV_vdpau_interop 1 typedef GLintptr GLvdpauSurfaceNV; #endif #ifndef GL_ARB_cl_event #define GL_ARB_cl_event 1 #ifdef __PUREC__ struct _cl_context { int dummy; }; struct _cl_event { int dummy; }; #else struct _cl_context; struct _cl_event; #endif #endif #if !defined(GL_ARB_sync) && !defined(__TINY_GL_H__) #define GL_ARB_sync 1 #if defined(__GNUC__) || (defined(LLONG_MAX) && LLONG_MAX > 2147483647L) typedef int64_t GLint64; typedef uint64_t GLuint64; #else typedef struct { long hi; unsigned long lo; } GLint64; typedef struct { unsigned long hi; unsigned long lo; } GLuint64; #endif #ifdef __PUREC__ struct __GLsync { int dummy; }; #endif typedef struct __GLsync *GLsync; #endif #if !defined(GL_EXT_timer_query) && !defined(__TINY_GL_H__) #define GL_EXT_timer_query 1 typedef GLint64 GLint64EXT; typedef GLuint64 GLuint64EXT; #endif #ifndef GL_OES_fixed_point #define GL_OES_fixed_point 1 typedef GLint GLfixed; #endif #ifndef GL_ARB_shader_objects #define GL_ARB_shader_objects 1 typedef char GLcharARB; #ifdef __APPLE__ typedef void *GLhandleARB; #else typedef GLuint GLhandleARB; #endif #endif #ifndef GL_KHR_debug #define GL_KHR_debug 1 typedef void CALLBACK (*GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message, const void *userParam); #endif #ifndef GL_ARB_debug_output #define GL_ARB_debug_output 1 typedef void CALLBACK (*GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message, const void *userParam); #endif #ifndef GL_AMD_debug_output #define GL_AMD_debug_output typedef void CALLBACK (*GLDEBUGPROCAMD)(GLuint id,GLenum category, GLenum severity, GLsizei length, const GLchar *message, void *userParam); #endif #ifndef GL_MESA_program_debug #define GL_MESA_program_debug 1 typedef void CALLBACK (*GLprogramcallbackMESA)(GLenum target, GLvoid *data); #endif #ifndef GL_EXT_external_buffer #define GL_EXT_external_buffer 1 typedef void *GLeglClientBufferEXT; #endif #ifndef GL_NV_draw_vulkan_image #define GL_NV_draw_vulkan_image 1 typedef void (APIENTRY *GLVULKANPROCNV)(void); #endif /* * Mesa Off-Screen rendering interface. * * Copyright (C) 1999-2005 Brian Paul All Rights Reserved. * */ #define OSMESA_VERSION_NUMBER(major, minor, patch) ((major) * 10000 + (minor) * 100 + patch) #define OSMESA_VERSION OSMESA_VERSION_NUMBER(OSMESA_MAJOR_VERSION, OSMESA_MINOR_VERSION, OSMESA_PATCH_VERSION) #if !defined(OSMESA_MAJOR_VERSION) #define OSMESA_MAJOR_VERSION 6 #define OSMESA_MINOR_VERSION 3 #define OSMESA_PATCH_VERSION 0 /* * Values for the format parameter of OSMesaCreateLDG() * Mesa_gl.ldg version 0.8 (Mesa 2.6) */ #define OSMESA_COLOR_INDEX GL_COLOR_INDEX #define OSMESA_RGBA GL_RGBA #define OSMESA_BGRA 0x1 #define OSMESA_ARGB 0x2 #define OSMESA_RGB GL_RGB #define OSMESA_BGR 0x4 #define OSMESA_RGB_565 0x5 #define VDI_ARGB 0x8 #define VDI_RGB 0xf #define DIRECT_VDI_ARGB 0x10 /* * OSMesaPixelStore() parameters: */ #define OSMESA_ROW_LENGTH 0x10 #define OSMESA_Y_UP 0x11 /* * Accepted by OSMesaGetIntegerv: */ #define OSMESA_WIDTH 0x20 #define OSMESA_HEIGHT 0x21 #define OSMESA_FORMAT 0x22 #define OSMESA_TYPE 0x23 #define OSMESA_MAX_WIDTH 0x24 /* new in 4.0 */ #define OSMESA_MAX_HEIGHT 0x25 /* new in 4.0 */ #ifdef __PUREC__ struct osmesa_context { int dummy; }; #endif typedef struct osmesa_context *OSMesaContext; typedef void (APIENTRY *OSMESAproc)(void); GLAPI OSMesaContext GLAPIENTRY OSMesaCreateContext( GLenum format, OSMesaContext sharelist ); GLAPI OSMesaContext GLAPIENTRY OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist); GLAPI void GLAPIENTRY OSMesaDestroyContext( OSMesaContext ctx ); GLAPI GLboolean GLAPIENTRY OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height ); GLAPI OSMesaContext GLAPIENTRY OSMesaGetCurrentContext( void ); GLAPI void GLAPIENTRY OSMesaPixelStore( GLint pname, GLint value ); GLAPI void GLAPIENTRY OSMesaGetIntegerv( GLint pname, GLint *value ); GLAPI GLboolean GLAPIENTRY OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void **buffer ); GLAPI GLboolean GLAPIENTRY OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *format, void **buffer ); GLAPI OSMESAproc GLAPIENTRY OSMesaGetProcAddress( const char *funcName ); GLAPI void GLAPIENTRY OSMesaColorClamp(GLboolean enable); GLAPI void GLAPIENTRY OSMesaPostprocess(OSMesaContext osmesa, const char *filter, GLuint enable_value); #elif OSMESA_VERSION < OSMESA_VERSION_NUMBER(6, 3, 0) typedef void (APIENTRY *OSMESAproc)(void); #endif /* * integral types that need to be promoted to * 32bit type when passed by value */ #ifndef GL_nfosmesa_short_promotions #define GL_nfosmesa_short_promotions 1 #ifdef __MSHORT__ typedef long GLshort32; typedef unsigned long GLushort32; typedef unsigned long GLboolean32; typedef long GLchar32; typedef unsigned long GLubyte32; typedef signed long GLbyte32; typedef unsigned long GLhalfNV32; #else typedef GLshort GLshort32; typedef GLushort GLushort32; typedef GLboolean GLboolean32; typedef GLchar GLchar32; typedef GLubyte GLubyte32; typedef GLbyte GLbyte32; typedef GLhalfNV GLhalfNV32; #endif #endif /* * Atari-specific structure for the shared libraries */ struct gl_public { void *libhandle; void *libexec; void *(*m_alloc)(size_t); void (*m_free)(void *); }; #ifdef __cplusplus } #endif #undef glClearDepth #undef glFrustum #undef glOrtho #undef gluLookAt /* * old LDG functions */ #ifdef __cplusplus extern "C" { #endif GLAPI void *GLAPIENTRY OSMesaCreateLDG(GLenum format, GLenum type, GLint width, GLint height); GLAPI void GLAPIENTRY OSMesaDestroyLDG(void); GLAPI GLsizei GLAPIENTRY max_width(void); GLAPI GLsizei GLAPIENTRY max_height(void); GLAPI void GLAPIENTRY swapbuffer(void *buf); GLAPI void GLAPIENTRY exception_error(void CALLBACK (*exception)(GLenum param)); GLAPI void GLAPIENTRY tinyglinformation(void); GLAPI void GLAPIENTRY glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); GLAPI void GLAPIENTRY glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); GLAPI void GLAPIENTRY glClearDepthf(GLfloat depth); GLAPI void GLAPIENTRY gluLookAtf(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ); struct _gl_tiny { void APIENTRY (*information)(void); void APIENTRY (*Begin)(GLenum mode); void APIENTRY (*Clear)(GLbitfield mask); void APIENTRY (*ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); void APIENTRY (*Color3f)(GLfloat red, GLfloat green, GLfloat blue); void APIENTRY (*Disable)(GLenum cap); void APIENTRY (*Enable)(GLenum cap); void APIENTRY (*End)(void); void APIENTRY (*Lightfv)(GLenum light, GLenum pname, const GLfloat *params); void APIENTRY (*LoadIdentity)(void); void APIENTRY (*Materialfv)(GLenum face, GLenum pname, const GLfloat *params); void APIENTRY (*MatrixMode)(GLenum mode); void APIENTRY (*Orthof)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); void APIENTRY (*PopMatrix)(void); void APIENTRY (*PushMatrix)(void); void APIENTRY (*Rotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); void APIENTRY (*TexEnvi)(GLenum target, GLenum pname, GLint param); void APIENTRY (*TexParameteri)(GLenum target, GLenum pname, GLint param); void APIENTRY (*Translatef)(GLfloat x, GLfloat y, GLfloat z); void APIENTRY (*Vertex2f)(GLfloat x, GLfloat y); void APIENTRY (*Vertex3f)(GLfloat x, GLfloat y, GLfloat z); void * APIENTRY (*OSMesaCreateLDG)(GLenum format, GLenum type, GLint width, GLint height); void APIENTRY (*OSMesaDestroyLDG)(void); void APIENTRY (*ArrayElement)(GLint i); void APIENTRY (*BindTexture)(GLenum target, GLuint texture); void APIENTRY (*CallList)(GLuint list); void APIENTRY (*ClearDepthf)(GLfloat d); void APIENTRY (*Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void APIENTRY (*Color3fv)(const GLfloat *v); void APIENTRY (*Color4fv)(const GLfloat *v); void APIENTRY (*ColorMaterial)(GLenum face, GLenum mode); void APIENTRY (*ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); void APIENTRY (*CullFace)(GLenum mode); void APIENTRY (*DeleteTextures)(GLsizei n, const GLuint *textures); void APIENTRY (*DisableClientState)(GLenum array); void APIENTRY (*EnableClientState)(GLenum array); void APIENTRY (*EndList)(void); void APIENTRY (*EdgeFlag)(GLboolean32 flag); void APIENTRY (*Flush)(void); void APIENTRY (*FrontFace)(GLenum mode); void APIENTRY (*Frustumf)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); GLuint APIENTRY (*GenLists)(GLsizei range); void APIENTRY (*GenTextures)(GLsizei n, GLuint *textures); void APIENTRY (*GetFloatv)(GLenum pname, GLfloat *params); void APIENTRY (*GetIntegerv)(GLenum pname, GLint *params); void APIENTRY (*Hint)(GLenum target, GLenum mode); void APIENTRY (*InitNames)(void); GLboolean APIENTRY (*IsList)(GLuint list); void APIENTRY (*Lightf)(GLenum light, GLenum pname, GLfloat param); void APIENTRY (*LightModeli)(GLenum pname, GLint param); void APIENTRY (*LightModelfv)(GLenum pname, const GLfloat *params); void APIENTRY (*LoadMatrixf)(const GLfloat *m); void APIENTRY (*LoadName)(GLuint name); void APIENTRY (*Materialf)(GLenum face, GLenum pname, GLfloat param); void APIENTRY (*MultMatrixf)(const GLfloat *m); void APIENTRY (*NewList)(GLuint list, GLenum mode); void APIENTRY (*Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz); void APIENTRY (*Normal3fv)(const GLfloat *v); void APIENTRY (*NormalPointer)(GLenum type, GLsizei stride, const GLvoid *pointer); void APIENTRY (*PixelStorei)(GLenum pname, GLint param); void APIENTRY (*PolygonMode)(GLenum face, GLenum mode); void APIENTRY (*PolygonOffset)(GLfloat factor, GLfloat units); void APIENTRY (*PopName)(void); void APIENTRY (*PushName)(GLuint name); GLint APIENTRY (*RenderMode)(GLenum mode); void APIENTRY (*SelectBuffer)(GLsizei size, GLuint *buffer); void APIENTRY (*Scalef)(GLfloat x, GLfloat y, GLfloat z); void APIENTRY (*ShadeModel)(GLenum mode); void APIENTRY (*TexCoord2f)(GLfloat s, GLfloat t); void APIENTRY (*TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q); void APIENTRY (*TexCoord2fv)(const GLfloat *v); void APIENTRY (*TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); void APIENTRY (*TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); void APIENTRY (*Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); void APIENTRY (*Vertex3fv)(const GLfloat *v); void APIENTRY (*VertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); void APIENTRY (*Viewport)(GLint x, GLint y, GLsizei width, GLsizei height); void APIENTRY (*swapbuffer)(void *buffer); GLsizei APIENTRY (*max_width)(void); GLsizei APIENTRY (*max_height)(void); void APIENTRY (*DeleteLists)(GLuint list, GLsizei range); void APIENTRY (*gluLookAtf)(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ); void APIENTRY (*exception_error)(void (CALLBACK *exception)(GLenum param) ); }; extern struct _gl_tiny gl; #ifdef __cplusplus } #endif #ifndef NFOSMESA_NO_MANGLE #undef information #define information (gl.information) #undef glBegin #define glBegin (gl.Begin) #undef glClear #define glClear (gl.Clear) #undef glClearColor #define glClearColor (gl.ClearColor) #undef glColor3f #define glColor3f (gl.Color3f) #undef glDisable #define glDisable (gl.Disable) #undef glEnable #define glEnable (gl.Enable) #undef glEnd #define glEnd (gl.End) #undef glLightfv #define glLightfv (gl.Lightfv) #undef glLoadIdentity #define glLoadIdentity (gl.LoadIdentity) #undef glMaterialfv #define glMaterialfv (gl.Materialfv) #undef glMatrixMode #define glMatrixMode (gl.MatrixMode) #undef glOrthof #define glOrthof (gl.Orthof) #undef glPopMatrix #define glPopMatrix (gl.PopMatrix) #undef glPushMatrix #define glPushMatrix (gl.PushMatrix) #undef glRotatef #define glRotatef (gl.Rotatef) #undef glTexEnvi #define glTexEnvi (gl.TexEnvi) #undef glTexParameteri #define glTexParameteri (gl.TexParameteri) #undef glTranslatef #define glTranslatef (gl.Translatef) #undef glVertex2f #define glVertex2f (gl.Vertex2f) #undef glVertex3f #define glVertex3f (gl.Vertex3f) #undef OSMesaCreateLDG #define OSMesaCreateLDG (gl.OSMesaCreateLDG) #undef OSMesaDestroyLDG #define OSMesaDestroyLDG (gl.OSMesaDestroyLDG) #undef glArrayElement #define glArrayElement (gl.ArrayElement) #undef glBindTexture #define glBindTexture (gl.BindTexture) #undef glCallList #define glCallList (gl.CallList) #undef glClearDepthf #define glClearDepthf (gl.ClearDepthf) #undef glColor4f #define glColor4f (gl.Color4f) #undef glColor3fv #define glColor3fv (gl.Color3fv) #undef glColor4fv #define glColor4fv (gl.Color4fv) #undef glColorMaterial #define glColorMaterial (gl.ColorMaterial) #undef glColorPointer #define glColorPointer (gl.ColorPointer) #undef glCullFace #define glCullFace (gl.CullFace) #undef glDeleteTextures #define glDeleteTextures (gl.DeleteTextures) #undef glDisableClientState #define glDisableClientState (gl.DisableClientState) #undef glEnableClientState #define glEnableClientState (gl.EnableClientState) #undef glEndList #define glEndList (gl.EndList) #undef glEdgeFlag #define glEdgeFlag (gl.EdgeFlag) #undef glFlush #define glFlush (gl.Flush) #undef glFrontFace #define glFrontFace (gl.FrontFace) #undef glFrustumf #define glFrustumf (gl.Frustumf) #undef glGenLists #define glGenLists (gl.GenLists) #undef glGenTextures #define glGenTextures (gl.GenTextures) #undef glGetFloatv #define glGetFloatv (gl.GetFloatv) #undef glGetIntegerv #define glGetIntegerv (gl.GetIntegerv) #undef glHint #define glHint (gl.Hint) #undef glInitNames #define glInitNames (gl.InitNames) #undef glIsList #define glIsList (gl.IsList) #undef glLightf #define glLightf (gl.Lightf) #undef glLightModeli #define glLightModeli (gl.LightModeli) #undef glLightModelfv #define glLightModelfv (gl.LightModelfv) #undef glLoadMatrixf #define glLoadMatrixf (gl.LoadMatrixf) #undef glLoadName #define glLoadName (gl.LoadName) #undef glMaterialf #define glMaterialf (gl.Materialf) #undef glMultMatrixf #define glMultMatrixf (gl.MultMatrixf) #undef glNewList #define glNewList (gl.NewList) #undef glNormal3f #define glNormal3f (gl.Normal3f) #undef glNormal3fv #define glNormal3fv (gl.Normal3fv) #undef glNormalPointer #define glNormalPointer (gl.NormalPointer) #undef glPixelStorei #define glPixelStorei (gl.PixelStorei) #undef glPolygonMode #define glPolygonMode (gl.PolygonMode) #undef glPolygonOffset #define glPolygonOffset (gl.PolygonOffset) #undef glPopName #define glPopName (gl.PopName) #undef glPushName #define glPushName (gl.PushName) #undef glRenderMode #define glRenderMode (gl.RenderMode) #undef glSelectBuffer #define glSelectBuffer (gl.SelectBuffer) #undef glScalef #define glScalef (gl.Scalef) #undef glShadeModel #define glShadeModel (gl.ShadeModel) #undef glTexCoord2f #define glTexCoord2f (gl.TexCoord2f) #undef glTexCoord4f #define glTexCoord4f (gl.TexCoord4f) #undef glTexCoord2fv #define glTexCoord2fv (gl.TexCoord2fv) #undef glTexCoordPointer #define glTexCoordPointer (gl.TexCoordPointer) #undef glTexImage2D #define glTexImage2D (gl.TexImage2D) #undef glVertex4f #define glVertex4f (gl.Vertex4f) #undef glVertex3fv #define glVertex3fv (gl.Vertex3fv) #undef glVertexPointer #define glVertexPointer (gl.VertexPointer) #undef glViewport #define glViewport (gl.Viewport) #undef swapbuffer #define swapbuffer (gl.swapbuffer) #undef max_width #define max_width (gl.max_width) #undef max_height #define max_height (gl.max_height) #undef glDeleteLists #define glDeleteLists (gl.DeleteLists) #undef gluLookAtf #define gluLookAtf (gl.gluLookAtf) #undef exception_error #define exception_error (gl.exception_error) #endif /* * Functions exported from TinyGL that take float arguments, * and conflict with OpenGL functions of the same name */ #undef glFrustum #define glFrustum glFrustumf #undef glClearDepth #define glClearDepth glClearDepthf #undef glOrtho #define glOrtho glOrthof #undef gluLookAt #define gluLookAt gluLookAtf /* fix bad name */ #undef information #define tinyglinformation gl.information /* * no-ops in TinyGL */ #undef glFinish #define glFinish() /* fix bad name */ #undef information #define tinyglinformation gl.information /* * Functions from OpenGL that are not implemented in TinyGL */ #define glPointSize(size) glPointSize_not_supported_by_tinygl() #define glLineWidth(width) glLineWidth_not_supported_by_tinygl() #define glDepthFunc(func) glDepthFunc_not_supported_by_tinygl() #define glBlendFunc(sfactor, dfactor) glBlendFunc_not_supported_by_tinygl() #define glTexEnvf(target, pname, param) glTexEnvf_not_supported_by_tinygl() #define glVertex2i(x, y) glVertex2i_not_supported_by_tinygl() #define glDepthMask(flag) glDepthMask_not_supported_by_tinygl() #define glFogi(pname, param) glFogi_not_supported_by_tinygl() #define glFogf(pname, param) glFogf_not_supported_by_tinygl() #define glFogiv(pname, params) glFogiv_not_supported_by_tinygl() #define glFogfv(pname, params) glFogfv_not_supported_by_tinygl() #define glRasterPos2f(x, y) glRasterPos2f_not_supported_by_tinygl() #define glPolygonStipple(mask) glPolygonStipple_not_supported_by_tinygl() #define glTexParameterf(target, pname, param) glTexParameterf_not_supported_by_tinygl() /* Functions generated: 83 */ #endif /* __LDG_TINY_GL_H__ */ aranym-1.1.0/atari/nfosmesa/ldg/osmesa.h0000664000175000017500000216316713454637621016342 0ustar joyjoy#ifndef __NFOSMESA_H__ #define __NFOSMESA_H__ #include #include #include #include #if !defined(__MSHORT__) && (defined(__PUREC__) && __PUREC__ < 0x400) # define __MSHORT__ 1 #endif #if (!defined(__PUREC__) || !defined(__MSHORT__) || defined(__GEMLIB__)) && !defined(__USE_GEMLIB) #define __USE_GEMLIB 1 #endif #ifndef _WORD # if defined(__GEMLIB__) || defined(__USE_GEMLIB) # define _WORD short # else # define _WORD int # endif #endif #ifdef __cplusplus extern "C" { #endif /* * load & initialize NFOSmesa */ struct gl_public *ldg_load_osmesa(const char *libname, _WORD *gl); /* * init NFOSmesa from already loaded lib */ int ldg_init_osmesa(LDG *lib); /* * unload NFOSmesa */ void ldg_unload_osmesa(struct gl_public *pub, _WORD *gl); #ifdef __cplusplus } #endif #if !defined(__MSHORT__) && (defined(__PUREC__) && __PUREC__ < 0x400) # define __MSHORT__ 1 #endif #ifdef __cplusplus extern "C" { #endif #ifndef APIENTRY #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) #define APIENTRY __stdcall #elif defined(__PUREC__) #define APIENTRY __CDECL #else #define APIENTRY #endif #endif #ifndef CALLBACK #define CALLBACK APIENTRY #endif #ifndef GLAPIENTRY #define GLAPIENTRY APIENTRY #endif #ifndef APIENTRYP #define APIENTRYP APIENTRY * #endif #ifndef GLAPI #define GLAPI extern #endif #if !defined(__CDECL) #if defined(__PUREC__) #define __CDECL cdecl #else #define __CDECL #endif #endif #ifndef GL_VERSION_1_1 #define GL_VERSION_1_1 1 #ifdef __MSHORT__ typedef long GLint; /* 4-byte signed */ typedef unsigned long GLuint; /* 4-byte unsigned */ typedef unsigned long GLenum; /* 4-byte unsigned */ typedef unsigned long GLbitfield; /* 4-byte unsigned */ typedef long GLsizei; #else typedef int GLint; /* 4-byte signed */ typedef unsigned int GLuint; /* 4-byte unsigned */ typedef unsigned int GLenum; /* 4-byte unsigned */ typedef unsigned int GLbitfield; /* 4-byte unsigned */ typedef int GLsizei; #endif typedef unsigned char GLboolean; typedef signed char GLbyte; /* 1-byte signed */ typedef unsigned char GLubyte; /* 1-byte unsigned */ typedef short GLshort; /* 2-byte signed */ typedef unsigned short GLushort; /* 2-byte unsigned */ typedef float GLfloat; /* single precision float */ typedef float GLclampf; /* single precision float in [0, 1] */ typedef double GLdouble; /* double precision float */ typedef double GLclampd; /* double precision float in [0, 1] */ typedef void GLvoid; /* Boolean values */ #define GL_FALSE 0 #define GL_TRUE 1 /* Data types */ #define GL_BYTE 0x1400 #define GL_UNSIGNED_BYTE 0x1401 #define GL_SHORT 0x1402 #define GL_UNSIGNED_SHORT 0x1403 #define GL_INT 0x1404 #define GL_UNSIGNED_INT 0x1405 #define GL_FLOAT 0x1406 #define GL_DOUBLE 0x140A #define GL_2_BYTES 0x1407 #define GL_3_BYTES 0x1408 #define GL_4_BYTES 0x1409 /* Primitives */ #define GL_LINES 0x0001 #define GL_POINTS 0x0000 #define GL_LINE_STRIP 0x0003 #define GL_LINE_LOOP 0x0002 #define GL_TRIANGLES 0x0004 #define GL_TRIANGLE_STRIP 0x0005 #define GL_TRIANGLE_FAN 0x0006 #define GL_QUADS 0x0007 #define GL_QUAD_STRIP 0x0008 #define GL_POLYGON 0x0009 #define GL_EDGE_FLAG 0x0B43 /* Vertex Arrays */ #define GL_VERTEX_ARRAY 0x8074 #define GL_NORMAL_ARRAY 0x8075 #define GL_COLOR_ARRAY 0x8076 #define GL_INDEX_ARRAY 0x8077 #define GL_TEXTURE_COORD_ARRAY 0x8078 #define GL_EDGE_FLAG_ARRAY 0x8079 #define GL_VERTEX_ARRAY_SIZE 0x807A #define GL_VERTEX_ARRAY_TYPE 0x807B #define GL_VERTEX_ARRAY_STRIDE 0x807C #define GL_VERTEX_ARRAY_COUNT 0x807D #define GL_NORMAL_ARRAY_TYPE 0x807E #define GL_NORMAL_ARRAY_STRIDE 0x807F #define GL_NORMAL_ARRAY_COUNT 0x8080 #define GL_COLOR_ARRAY_SIZE 0x8081 #define GL_COLOR_ARRAY_TYPE 0x8082 #define GL_COLOR_ARRAY_STRIDE 0x8083 #define GL_COLOR_ARRAY_COUNT 0x8084 #define GL_INDEX_ARRAY_TYPE 0x8085 #define GL_INDEX_ARRAY_STRIDE 0x8086 #define GL_INDEX_ARRAY_COUNT 0x8087 #define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 #define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 #define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A #define GL_TEXTURE_COORD_ARRAY_COUNT 0x808B #define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C #define GL_EDGE_FLAG_ARRAY_COUNT 0x808D #define GL_VERTEX_ARRAY_POINTER 0x808E #define GL_NORMAL_ARRAY_POINTER 0x808F #define GL_COLOR_ARRAY_POINTER 0x8090 #define GL_INDEX_ARRAY_POINTER 0x8091 #define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 #define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 #define GL_V2F 0x2A20 #define GL_V3F 0x2A21 #define GL_C4UB_V2F 0x2A22 #define GL_C4UB_V3F 0x2A23 #define GL_C3F_V3F 0x2A24 #define GL_N3F_V3F 0x2A25 #define GL_C4F_N3F_V3F 0x2A26 #define GL_T2F_V3F 0x2A27 #define GL_T4F_V4F 0x2A28 #define GL_T2F_C4UB_V3F 0x2A29 #define GL_T2F_C3F_V3F 0x2A2A #define GL_T2F_N3F_V3F 0x2A2B #define GL_T2F_C4F_N3F_V3F 0x2A2C #define GL_T4F_C4F_N3F_V4F 0x2A2D /* Matrix Mode */ #define GL_MATRIX_MODE 0x0BA0 #define GL_MODELVIEW 0x1700 #define GL_PROJECTION 0x1701 #define GL_TEXTURE 0x1702 /* Points */ #define GL_POINT_SMOOTH 0x0B10 #define GL_POINT_SIZE 0x0B11 #define GL_POINT_SIZE_GRANULARITY 0x0B13 #define GL_POINT_SIZE_RANGE 0x0B12 /* Lines */ #define GL_LINE_SMOOTH 0x0B20 #define GL_LINE_STIPPLE 0x0B24 #define GL_LINE_STIPPLE_PATTERN 0x0B25 #define GL_LINE_STIPPLE_REPEAT 0x0B26 #define GL_LINE_WIDTH 0x0B21 #define GL_LINE_WIDTH_GRANULARITY 0x0B23 #define GL_LINE_WIDTH_RANGE 0x0B22 /* Polygons */ #define GL_POINT 0x1B00 #define GL_LINE 0x1B01 #define GL_FILL 0x1B02 #define GL_CCW 0x0901 #define GL_CW 0x0900 #define GL_FRONT 0x0404 #define GL_BACK 0x0405 #define GL_CULL_FACE 0x0B44 #define GL_CULL_FACE_MODE 0x0B45 #define GL_POLYGON_SMOOTH 0x0B41 #define GL_POLYGON_STIPPLE 0x0B42 #define GL_FRONT_FACE 0x0B46 #define GL_POLYGON_MODE 0x0B40 #define GL_POLYGON_OFFSET_FACTOR 0x8038 #define GL_POLYGON_OFFSET_UNITS 0x2A00 #define GL_POLYGON_OFFSET_POINT 0x2A01 #define GL_POLYGON_OFFSET_LINE 0x2A02 #define GL_POLYGON_OFFSET_FILL 0x8037 /* Display Lists */ #define GL_COMPILE 0x1300 #define GL_COMPILE_AND_EXECUTE 0x1301 #define GL_LIST_BASE 0x0B32 #define GL_LIST_INDEX 0x0B33 #define GL_LIST_MODE 0x0B30 /* Depth buffer */ #define GL_NEVER 0x0200 #define GL_LESS 0x0201 #define GL_GEQUAL 0x0206 #define GL_LEQUAL 0x0203 #define GL_GREATER 0x0204 #define GL_NOTEQUAL 0x0205 #define GL_EQUAL 0x0202 #define GL_ALWAYS 0x0207 #define GL_DEPTH_TEST 0x0B71 #define GL_DEPTH_BITS 0x0D56 #define GL_DEPTH_CLEAR_VALUE 0x0B73 #define GL_DEPTH_FUNC 0x0B74 #define GL_DEPTH_RANGE 0x0B70 #define GL_DEPTH_WRITEMASK 0x0B72 #define GL_DEPTH_COMPONENT 0x1902 /* Lighting */ #define GL_LIGHTING 0x0B50 #define GL_LIGHT0 0x4000 #define GL_LIGHT1 0x4001 #define GL_LIGHT2 0x4002 #define GL_LIGHT3 0x4003 #define GL_LIGHT4 0x4004 #define GL_LIGHT5 0x4005 #define GL_LIGHT6 0x4006 #define GL_LIGHT7 0x4007 #define GL_SPOT_EXPONENT 0x1205 #define GL_SPOT_CUTOFF 0x1206 #define GL_CONSTANT_ATTENUATION 0x1207 #define GL_LINEAR_ATTENUATION 0x1208 #define GL_QUADRATIC_ATTENUATION 0x1209 #define GL_AMBIENT 0x1200 #define GL_DIFFUSE 0x1201 #define GL_SPECULAR 0x1202 #define GL_SHININESS 0x1601 #define GL_EMISSION 0x1600 #define GL_POSITION 0x1203 #define GL_SPOT_DIRECTION 0x1204 #define GL_AMBIENT_AND_DIFFUSE 0x1602 #define GL_COLOR_INDEXES 0x1603 #define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 #define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 #define GL_LIGHT_MODEL_AMBIENT 0x0B53 #define GL_FRONT_AND_BACK 0x0408 #define GL_SHADE_MODEL 0x0B54 #define GL_FLAT 0x1D00 #define GL_SMOOTH 0x1D01 #define GL_COLOR_MATERIAL 0x0B57 #define GL_COLOR_MATERIAL_FACE 0x0B55 #define GL_COLOR_MATERIAL_PARAMETER 0x0B56 #define GL_NORMALIZE 0x0BA1 /* User clipping planes */ #define GL_CLIP_PLANE0 0x3000 #define GL_CLIP_PLANE1 0x3001 #define GL_CLIP_PLANE2 0x3002 #define GL_CLIP_PLANE3 0x3003 #define GL_CLIP_PLANE4 0x3004 #define GL_CLIP_PLANE5 0x3005 /* Accumulation buffer */ #define GL_ACCUM_RED_BITS 0x0D58 #define GL_ACCUM_GREEN_BITS 0x0D59 #define GL_ACCUM_BLUE_BITS 0x0D5A #define GL_ACCUM_ALPHA_BITS 0x0D5B #define GL_ACCUM_CLEAR_VALUE 0x0B80 #define GL_ACCUM 0x0100 #define GL_ADD 0x0104 #define GL_LOAD 0x0101 #define GL_MULT 0x0103 #define GL_RETURN 0x0102 /* Alpha testing */ #define GL_ALPHA_TEST 0x0BC0 #define GL_ALPHA_TEST_REF 0x0BC2 #define GL_ALPHA_TEST_FUNC 0x0BC1 /* Blending */ #define GL_BLEND 0x0BE2 #define GL_BLEND_SRC 0x0BE1 #define GL_BLEND_DST 0x0BE0 #define GL_ZERO 0 #define GL_ONE 1 #define GL_SRC_COLOR 0x0300 #define GL_ONE_MINUS_SRC_COLOR 0x0301 #define GL_DST_COLOR 0x0306 #define GL_ONE_MINUS_DST_COLOR 0x0307 #define GL_SRC_ALPHA 0x0302 #define GL_ONE_MINUS_SRC_ALPHA 0x0303 #define GL_DST_ALPHA 0x0304 #define GL_ONE_MINUS_DST_ALPHA 0x0305 #define GL_SRC_ALPHA_SATURATE 0x0308 #define GL_CONSTANT_COLOR 0x8001 #define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 #define GL_CONSTANT_ALPHA 0x8003 #define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 /* Render Mode */ #define GL_FEEDBACK 0x1C01 #define GL_RENDER 0x1C00 #define GL_SELECT 0x1C02 /* Feedback */ #define GL_2D 0x0600 #define GL_3D 0x0601 #define GL_3D_COLOR 0x0602 #define GL_3D_COLOR_TEXTURE 0x0603 #define GL_4D_COLOR_TEXTURE 0x0604 #define GL_POINT_TOKEN 0x0701 #define GL_LINE_TOKEN 0x0702 #define GL_LINE_RESET_TOKEN 0x0707 #define GL_POLYGON_TOKEN 0x0703 #define GL_BITMAP_TOKEN 0x0704 #define GL_DRAW_PIXEL_TOKEN 0x0705 #define GL_COPY_PIXEL_TOKEN 0x0706 #define GL_PASS_THROUGH_TOKEN 0x0700 #define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 #define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 #define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 /* Fog */ #define GL_FOG 0x0B60 #define GL_FOG_MODE 0x0B65 #define GL_FOG_DENSITY 0x0B62 #define GL_FOG_COLOR 0x0B66 #define GL_FOG_INDEX 0x0B61 #define GL_FOG_START 0x0B63 #define GL_FOG_END 0x0B64 #define GL_LINEAR 0x2601 #define GL_EXP 0x0800 #define GL_EXP2 0x0801 /* Logic Ops */ #define GL_LOGIC_OP 0x0BF1 #define GL_INDEX_LOGIC_OP 0x0BF1 #define GL_COLOR_LOGIC_OP 0x0BF2 #define GL_LOGIC_OP_MODE 0x0BF0 #define GL_CLEAR 0x1500 #define GL_SET 0x150F #define GL_COPY 0x1503 #define GL_COPY_INVERTED 0x150C #define GL_NOOP 0x1505 #define GL_INVERT 0x150A #define GL_AND 0x1501 #define GL_NAND 0x150E #define GL_OR 0x1507 #define GL_NOR 0x1508 #define GL_XOR 0x1506 #define GL_EQUIV 0x1509 #define GL_AND_REVERSE 0x1502 #define GL_AND_INVERTED 0x1504 #define GL_OR_REVERSE 0x150B #define GL_OR_INVERTED 0x150D /* Stencil */ #define GL_STENCIL_TEST 0x0B90 #define GL_STENCIL_WRITEMASK 0x0B98 #define GL_STENCIL_BITS 0x0D57 #define GL_STENCIL_FUNC 0x0B92 #define GL_STENCIL_VALUE_MASK 0x0B93 #define GL_STENCIL_REF 0x0B97 #define GL_STENCIL_FAIL 0x0B94 #define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 #define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 #define GL_STENCIL_CLEAR_VALUE 0x0B91 #define GL_STENCIL_INDEX 0x1901 #define GL_KEEP 0x1E00 #define GL_REPLACE 0x1E01 #define GL_INCR 0x1E02 #define GL_DECR 0x1E03 /* Buffers, Pixel Drawing/Reading */ #define GL_NONE 0 #define GL_LEFT 0x0406 #define GL_RIGHT 0x0407 #define GL_FRONT_LEFT 0x0400 #define GL_FRONT_RIGHT 0x0401 #define GL_BACK_LEFT 0x0402 #define GL_BACK_RIGHT 0x0403 #define GL_AUX0 0x0409 #define GL_AUX1 0x040A #define GL_AUX2 0x040B #define GL_AUX3 0x040C #define GL_COLOR_INDEX 0x1900 #define GL_RED 0x1903 #define GL_GREEN 0x1904 #define GL_BLUE 0x1905 #define GL_ALPHA 0x1906 #define GL_LUMINANCE 0x1909 #define GL_LUMINANCE_ALPHA 0x190A #define GL_ALPHA_BITS 0x0D55 #define GL_RED_BITS 0x0D52 #define GL_GREEN_BITS 0x0D53 #define GL_BLUE_BITS 0x0D54 #define GL_INDEX_BITS 0x0D51 #define GL_SUBPIXEL_BITS 0x0D50 #define GL_AUX_BUFFERS 0x0C00 #define GL_READ_BUFFER 0x0C02 #define GL_DRAW_BUFFER 0x0C01 #define GL_DOUBLEBUFFER 0x0C32 #define GL_STEREO 0x0C33 #define GL_BITMAP 0x1A00 #define GL_COLOR 0x1800 #define GL_DEPTH 0x1801 #define GL_STENCIL 0x1802 #define GL_DITHER 0x0BD0 #define GL_RGB 0x1907 #define GL_RGBA 0x1908 /* Implementation limits */ #define GL_MAX_LIST_NESTING 0x0B31 #define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 #define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 #define GL_MAX_NAME_STACK_DEPTH 0x0D37 #define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 #define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 #define GL_MAX_EVAL_ORDER 0x0D30 #define GL_MAX_LIGHTS 0x0D31 #define GL_MAX_CLIP_PLANES 0x0D32 #define GL_MAX_TEXTURE_SIZE 0x0D33 #define GL_MAX_PIXEL_MAP_TABLE 0x0D34 #define GL_MAX_VIEWPORT_DIMS 0x0D3A #define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B #define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 /* Gets */ #define GL_ATTRIB_STACK_DEPTH 0x0BB0 #define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 #define GL_COLOR_CLEAR_VALUE 0x0C22 #define GL_COLOR_WRITEMASK 0x0C23 #define GL_CURRENT_INDEX 0x0B01 #define GL_CURRENT_COLOR 0x0B00 #define GL_CURRENT_NORMAL 0x0B02 #define GL_CURRENT_RASTER_COLOR 0x0B04 #define GL_CURRENT_RASTER_DISTANCE 0x0B09 #define GL_CURRENT_RASTER_INDEX 0x0B05 #define GL_CURRENT_RASTER_POSITION 0x0B07 #define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 #define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 #define GL_CURRENT_TEXTURE_COORDS 0x0B03 #define GL_INDEX_CLEAR_VALUE 0x0C20 #define GL_INDEX_MODE 0x0C30 #define GL_INDEX_WRITEMASK 0x0C21 #define GL_MODELVIEW_MATRIX 0x0BA6 #define GL_MODELVIEW_STACK_DEPTH 0x0BA3 #define GL_NAME_STACK_DEPTH 0x0D70 #define GL_PROJECTION_MATRIX 0x0BA7 #define GL_PROJECTION_STACK_DEPTH 0x0BA4 #define GL_RENDER_MODE 0x0C40 #define GL_RGBA_MODE 0x0C31 #define GL_TEXTURE_MATRIX 0x0BA8 #define GL_TEXTURE_STACK_DEPTH 0x0BA5 #define GL_VIEWPORT 0x0BA2 #define GL_COLOR_MATRIX 0x80B1 #define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 /* Evaluators */ #define GL_AUTO_NORMAL 0x0D80 #define GL_MAP1_COLOR_4 0x0D90 #define GL_MAP1_GRID_DOMAIN 0x0DD0 #define GL_MAP1_GRID_SEGMENTS 0x0DD1 #define GL_MAP1_INDEX 0x0D91 #define GL_MAP1_NORMAL 0x0D92 #define GL_MAP1_TEXTURE_COORD_1 0x0D93 #define GL_MAP1_TEXTURE_COORD_2 0x0D94 #define GL_MAP1_TEXTURE_COORD_3 0x0D95 #define GL_MAP1_TEXTURE_COORD_4 0x0D96 #define GL_MAP1_VERTEX_3 0x0D97 #define GL_MAP1_VERTEX_4 0x0D98 #define GL_MAP2_COLOR_4 0x0DB0 #define GL_MAP2_GRID_DOMAIN 0x0DD2 #define GL_MAP2_GRID_SEGMENTS 0x0DD3 #define GL_MAP2_INDEX 0x0DB1 #define GL_MAP2_NORMAL 0x0DB2 #define GL_MAP2_TEXTURE_COORD_1 0x0DB3 #define GL_MAP2_TEXTURE_COORD_2 0x0DB4 #define GL_MAP2_TEXTURE_COORD_3 0x0DB5 #define GL_MAP2_TEXTURE_COORD_4 0x0DB6 #define GL_MAP2_VERTEX_3 0x0DB7 #define GL_MAP2_VERTEX_4 0x0DB8 #define GL_COEFF 0x0A00 #define GL_DOMAIN 0x0A02 #define GL_ORDER 0x0A01 /* Hints */ #define GL_FOG_HINT 0x0C54 #define GL_LINE_SMOOTH_HINT 0x0C52 #define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 #define GL_POINT_SMOOTH_HINT 0x0C51 #define GL_POLYGON_SMOOTH_HINT 0x0C53 #define GL_DONT_CARE 0x1100 #define GL_FASTEST 0x1101 #define GL_NICEST 0x1102 /* Scissor box */ #define GL_SCISSOR_TEST 0x0C11 #define GL_SCISSOR_BOX 0x0C10 /* Pixel Mode / Transfer */ #define GL_MAP_COLOR 0x0D10 #define GL_MAP_STENCIL 0x0D11 #define GL_INDEX_SHIFT 0x0D12 #define GL_INDEX_OFFSET 0x0D13 #define GL_RED_SCALE 0x0D14 #define GL_RED_BIAS 0x0D15 #define GL_GREEN_SCALE 0x0D18 #define GL_GREEN_BIAS 0x0D19 #define GL_BLUE_SCALE 0x0D1A #define GL_BLUE_BIAS 0x0D1B #define GL_ALPHA_SCALE 0x0D1C #define GL_ALPHA_BIAS 0x0D1D #define GL_DEPTH_SCALE 0x0D1E #define GL_DEPTH_BIAS 0x0D1F #define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 #define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 #define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 #define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 #define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 #define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 #define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 #define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 #define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 #define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 #define GL_PIXEL_MAP_S_TO_S 0x0C71 #define GL_PIXEL_MAP_I_TO_I 0x0C70 #define GL_PIXEL_MAP_I_TO_R 0x0C72 #define GL_PIXEL_MAP_I_TO_G 0x0C73 #define GL_PIXEL_MAP_I_TO_B 0x0C74 #define GL_PIXEL_MAP_I_TO_A 0x0C75 #define GL_PIXEL_MAP_R_TO_R 0x0C76 #define GL_PIXEL_MAP_G_TO_G 0x0C77 #define GL_PIXEL_MAP_B_TO_B 0x0C78 #define GL_PIXEL_MAP_A_TO_A 0x0C79 #define GL_PACK_ALIGNMENT 0x0D05 #define GL_PACK_LSB_FIRST 0x0D01 #define GL_PACK_ROW_LENGTH 0x0D02 #define GL_PACK_SKIP_PIXELS 0x0D04 #define GL_PACK_SKIP_ROWS 0x0D03 #define GL_PACK_SWAP_BYTES 0x0D00 #define GL_UNPACK_ALIGNMENT 0x0CF5 #define GL_UNPACK_LSB_FIRST 0x0CF1 #define GL_UNPACK_ROW_LENGTH 0x0CF2 #define GL_UNPACK_SKIP_PIXELS 0x0CF4 #define GL_UNPACK_SKIP_ROWS 0x0CF3 #define GL_UNPACK_SWAP_BYTES 0x0CF0 #define GL_ZOOM_X 0x0D16 #define GL_ZOOM_Y 0x0D17 /* Texture mapping */ #define GL_TEXTURE_ENV 0x2300 #define GL_TEXTURE_ENV_MODE 0x2200 #define GL_TEXTURE_1D 0x0DE0 #define GL_TEXTURE_2D 0x0DE1 #define GL_TEXTURE_WRAP_S 0x2802 #define GL_TEXTURE_WRAP_T 0x2803 #define GL_TEXTURE_MAG_FILTER 0x2800 #define GL_TEXTURE_MIN_FILTER 0x2801 #define GL_TEXTURE_ENV_COLOR 0x2201 #define GL_TEXTURE_GEN_S 0x0C60 #define GL_TEXTURE_GEN_T 0x0C61 #define GL_TEXTURE_GEN_MODE 0x2500 #define GL_TEXTURE_BORDER_COLOR 0x1004 #define GL_TEXTURE_WIDTH 0x1000 #define GL_TEXTURE_HEIGHT 0x1001 #define GL_TEXTURE_BORDER 0x1005 #define GL_TEXTURE_COMPONENTS 0x1003 #define GL_TEXTURE_RED_SIZE 0x805C #define GL_TEXTURE_GREEN_SIZE 0x805D #define GL_TEXTURE_BLUE_SIZE 0x805E #define GL_TEXTURE_ALPHA_SIZE 0x805F #define GL_TEXTURE_LUMINANCE_SIZE 0x8060 #define GL_TEXTURE_INTENSITY_SIZE 0x8061 #define GL_NEAREST_MIPMAP_NEAREST 0x2700 #define GL_NEAREST_MIPMAP_LINEAR 0x2702 #define GL_LINEAR_MIPMAP_NEAREST 0x2701 #define GL_LINEAR_MIPMAP_LINEAR 0x2703 #define GL_OBJECT_LINEAR 0x2401 #define GL_OBJECT_PLANE 0x2501 #define GL_EYE_LINEAR 0x2400 #define GL_EYE_PLANE 0x2502 #define GL_SPHERE_MAP 0x2402 #define GL_DECAL 0x2101 #define GL_MODULATE 0x2100 #define GL_NEAREST 0x2600 #define GL_REPEAT 0x2901 #define GL_CLAMP 0x2900 #define GL_S 0x2000 #define GL_T 0x2001 #define GL_R 0x2002 #define GL_Q 0x2003 #define GL_TEXTURE_GEN_R 0x0C62 #define GL_TEXTURE_GEN_Q 0x0C63 #define GL_PROXY_TEXTURE_1D 0x8063 #define GL_PROXY_TEXTURE_2D 0x8064 #define GL_TEXTURE_PRIORITY 0x8066 #define GL_TEXTURE_RESIDENT 0x8067 #define GL_TEXTURE_BINDING_1D 0x8068 #define GL_TEXTURE_BINDING_2D 0x8069 /* Internal texture formats */ #define GL_ALPHA4 0x803B #define GL_ALPHA8 0x803C #define GL_ALPHA12 0x803D #define GL_ALPHA16 0x803E #define GL_LUMINANCE4 0x803F #define GL_LUMINANCE8 0x8040 #define GL_LUMINANCE12 0x8041 #define GL_LUMINANCE16 0x8042 #define GL_LUMINANCE4_ALPHA4 0x8043 #define GL_LUMINANCE6_ALPHA2 0x8044 #define GL_LUMINANCE8_ALPHA8 0x8045 #define GL_LUMINANCE12_ALPHA4 0x8046 #define GL_LUMINANCE12_ALPHA12 0x8047 #define GL_LUMINANCE16_ALPHA16 0x8048 #define GL_INTENSITY 0x8049 #define GL_INTENSITY4 0x804A #define GL_INTENSITY8 0x804B #define GL_INTENSITY12 0x804C #define GL_INTENSITY16 0x804D #define GL_R3_G3_B2 0x2A10 #define GL_RGB4 0x804F #define GL_RGB5 0x8050 #define GL_RGB8 0x8051 #define GL_RGB10 0x8052 #define GL_RGB12 0x8053 #define GL_RGB16 0x8054 #define GL_RGBA2 0x8055 #define GL_RGBA4 0x8056 #define GL_RGB5_A1 0x8057 #define GL_RGBA8 0x8058 #define GL_RGB10_A2 0x8059 #define GL_RGBA12 0x805A #define GL_RGBA16 0x805B /* Utility */ #define GL_VENDOR 0x1F00 #define GL_RENDERER 0x1F01 #define GL_VERSION 0x1F02 #define GL_EXTENSIONS 0x1F03 /* Errors */ #define GL_NO_ERROR 0 #define GL_INVALID_VALUE 0x0501 #define GL_INVALID_ENUM 0x0500 #define GL_INVALID_OPERATION 0x0502 #define GL_STACK_OVERFLOW 0x0503 #define GL_STACK_UNDERFLOW 0x0504 #define GL_OUT_OF_MEMORY 0x0505 /* * 1.0 Extensions */ /* GL_EXT_blend_minmax and GL_EXT_blend_color */ #define GL_CONSTANT_COLOR_EXT 0x8001 #define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 #define GL_CONSTANT_ALPHA_EXT 0x8003 #define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 #define GL_BLEND_EQUATION_EXT 0x8009 #define GL_MIN_EXT 0x8007 #define GL_MAX_EXT 0x8008 #define GL_FUNC_ADD_EXT 0x8006 #define GL_FUNC_SUBTRACT_EXT 0x800A #define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B #define GL_BLEND_COLOR_EXT 0x8005 /* GL_EXT_polygon_offset */ #define GL_POLYGON_OFFSET_EXT 0x8037 #define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 #define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 /* GL_EXT_vertex_array */ #define GL_VERTEX_ARRAY_EXT 0x8074 #define GL_NORMAL_ARRAY_EXT 0x8075 #define GL_COLOR_ARRAY_EXT 0x8076 #define GL_INDEX_ARRAY_EXT 0x8077 #define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 #define GL_EDGE_FLAG_ARRAY_EXT 0x8079 #define GL_VERTEX_ARRAY_SIZE_EXT 0x807A #define GL_VERTEX_ARRAY_TYPE_EXT 0x807B #define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C #define GL_VERTEX_ARRAY_COUNT_EXT 0x807D #define GL_NORMAL_ARRAY_TYPE_EXT 0x807E #define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F #define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 #define GL_COLOR_ARRAY_SIZE_EXT 0x8081 #define GL_COLOR_ARRAY_TYPE_EXT 0x8082 #define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 #define GL_COLOR_ARRAY_COUNT_EXT 0x8084 #define GL_INDEX_ARRAY_TYPE_EXT 0x8085 #define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 #define GL_INDEX_ARRAY_COUNT_EXT 0x8087 #define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 #define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 #define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A #define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B #define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C #define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D #define GL_VERTEX_ARRAY_POINTER_EXT 0x808E #define GL_NORMAL_ARRAY_POINTER_EXT 0x808F #define GL_COLOR_ARRAY_POINTER_EXT 0x8090 #define GL_INDEX_ARRAY_POINTER_EXT 0x8091 #define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 #define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 /* GL_EXT_texture_object */ #define GL_TEXTURE_PRIORITY_EXT 0x8066 #define GL_TEXTURE_RESIDENT_EXT 0x8067 #define GL_TEXTURE_1D_BINDING_EXT 0x8068 #define GL_TEXTURE_2D_BINDING_EXT 0x8069 /* GL_EXT_texture3D */ #define GL_PACK_SKIP_IMAGES_EXT 0x806B #define GL_PACK_IMAGE_HEIGHT_EXT 0x806C #define GL_UNPACK_SKIP_IMAGES_EXT 0x806D #define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E #define GL_TEXTURE_3D_EXT 0x806F #define GL_PROXY_TEXTURE_3D_EXT 0x8070 #define GL_TEXTURE_DEPTH_EXT 0x8071 #define GL_TEXTURE_WRAP_R_EXT 0x8072 #define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 #define GL_TEXTURE_3D_BINDING_EXT 0x806A /* GL_EXT_paletted_texture */ #define GL_TABLE_TOO_LARGE_EXT 0x8031 #define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 #define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 #define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA #define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB #define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC #define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD #define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE #define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF #define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED #define GL_COLOR_INDEX1_EXT 0x80E2 #define GL_COLOR_INDEX2_EXT 0x80E3 #define GL_COLOR_INDEX4_EXT 0x80E4 #define GL_COLOR_INDEX8_EXT 0x80E5 #define GL_COLOR_INDEX12_EXT 0x80E6 #define GL_COLOR_INDEX16_EXT 0x80E7 /* GL_EXT_shared_texture_palette */ #define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB #if 0 /* GL_SGIS_texture_lod */ #define GL_TEXTURE_MIN_LOD_SGIS 0x813A #define GL_TEXTURE_MAX_LOD_SGIS 0x813B #define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C #define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D #endif /* GL_EXT_point_parameters */ #define GL_POINT_SIZE_MIN_EXT 0x8126 #define GL_POINT_SIZE_MAX_EXT 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 #define GL_DISTANCE_ATTENUATION_EXT 0x8129 #define GL_CURRENT_BIT 0x00000001L #define GL_POINT_BIT 0x00000002L #define GL_LINE_BIT 0x00000004L #define GL_POLYGON_BIT 0x00000008L #define GL_POLYGON_STIPPLE_BIT 0x00000010L #define GL_PIXEL_MODE_BIT 0x00000020L #define GL_LIGHTING_BIT 0x00000040L #define GL_FOG_BIT 0x00000080L #define GL_DEPTH_BUFFER_BIT 0x00000100L #define GL_ACCUM_BUFFER_BIT 0x00000200L #define GL_STENCIL_BUFFER_BIT 0x00000400L #define GL_VIEWPORT_BIT 0x00000800L #define GL_TRANSFORM_BIT 0x00001000L #define GL_ENABLE_BIT 0x00002000L #define GL_COLOR_BUFFER_BIT 0x00004000L #define GL_HINT_BIT 0x00008000L #define GL_EVAL_BIT 0x00010000L #define GL_LIST_BIT 0x00020000L #define GL_TEXTURE_BIT 0x00040000L #define GL_SCISSOR_BIT 0x00080000L #define GL_ALL_ATTRIB_BITS 0x000fffffL #define GL_CLIENT_PIXEL_STORE_BIT 0x00000001L #define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002L #define GL_CLIENT_ALL_ATTRIB_BITS 0x0000FFFFL GLAPI void GLAPIENTRY glEnable(GLenum cap); GLAPI void GLAPIENTRY glDisable(GLenum cap); GLAPI void GLAPIENTRY glShadeModel(GLenum mode); GLAPI void GLAPIENTRY glCullFace(GLenum mode); GLAPI void GLAPIENTRY glPolygonMode(GLenum face, GLenum mode); GLAPI void GLAPIENTRY glBegin(GLenum mode); GLAPI void GLAPIENTRY glEnd(void); GLAPI void GLAPIENTRY glVertex2f(GLfloat x, GLfloat y); GLAPI void GLAPIENTRY glVertex2d(GLdouble x, GLdouble y); GLAPI void GLAPIENTRY glVertex2fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex2dv(const GLdouble *v); GLAPI void GLAPIENTRY glVertex3f(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glVertex3d(GLdouble x, GLdouble y, GLdouble z); GLAPI void GLAPIENTRY glVertex3fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex3dv(const GLdouble *v); GLAPI void GLAPIENTRY glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void GLAPIENTRY glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void GLAPIENTRY glVertex4fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex4dv(const GLdouble *v); GLAPI void GLAPIENTRY glColor3f(GLfloat red, GLfloat green, GLfloat blue); GLAPI void GLAPIENTRY glColor3d(GLdouble red, GLdouble green, GLdouble blue); GLAPI void GLAPIENTRY glColor3fv(const GLfloat *v); GLAPI void GLAPIENTRY glColor3dv(const GLdouble *v); GLAPI void GLAPIENTRY glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); GLAPI void GLAPIENTRY glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); GLAPI void GLAPIENTRY glColor4fv(const GLfloat *v); GLAPI void GLAPIENTRY glColor4dv(const GLdouble *v); GLAPI void GLAPIENTRY glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); GLAPI void GLAPIENTRY glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); GLAPI void GLAPIENTRY glNormal3fv(const GLfloat *v); GLAPI void GLAPIENTRY glNormal3dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord1f(GLfloat s); GLAPI void GLAPIENTRY glTexCoord1d(GLdouble s); GLAPI void GLAPIENTRY glTexCoord1fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord1dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord2f(GLfloat s, GLfloat t); GLAPI void GLAPIENTRY glTexCoord2d(GLdouble s, GLdouble t); GLAPI void GLAPIENTRY glTexCoord2fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord2dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); GLAPI void GLAPIENTRY glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); GLAPI void GLAPIENTRY glTexCoord3fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord3dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); GLAPI void GLAPIENTRY glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); GLAPI void GLAPIENTRY glTexCoord4fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord4dv(const GLdouble *v); GLAPI void GLAPIENTRY glEdgeFlag(GLboolean flag); /* matrix */ GLAPI void GLAPIENTRY glMatrixMode(GLenum mode); GLAPI void GLAPIENTRY glLoadMatrixf(const GLfloat *m); GLAPI void GLAPIENTRY glLoadIdentity(void); GLAPI void GLAPIENTRY glMultMatrixf(const GLfloat *m); GLAPI void GLAPIENTRY glPushMatrix(void); GLAPI void GLAPIENTRY glPopMatrix(void); GLAPI void GLAPIENTRY glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glTranslatef(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glScalef(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glViewport(GLint x, GLint y, GLint width, GLint height); GLAPI void GLAPIENTRY glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val); GLAPI void GLAPIENTRY glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val); /* lists */ GLAPI GLuint GLAPIENTRY glGenLists(GLsizei range); GLAPI GLboolean GLAPIENTRY glIsList(GLuint list); GLAPI void GLAPIENTRY glNewList(GLuint list, GLenum mode); GLAPI void GLAPIENTRY glEndList(void); GLAPI void GLAPIENTRY glCallList(GLuint list); GLAPI void GLAPIENTRY glDeleteLists(GLuint list, GLsizei range); /* clear */ GLAPI void GLAPIENTRY glClear(GLbitfield mask); GLAPI void GLAPIENTRY glClearColor(GLfloat r, GLfloat g, GLfloat b, GLfloat a); GLAPI void GLAPIENTRY glClearDepth(GLdouble depth); GLAPI void GLAPIENTRY glClearDepthf(GLfloat depth); /* selection */ GLAPI GLint GLAPIENTRY glRenderMode(GLenum mode); GLAPI void GLAPIENTRY glSelectBuffer(GLsizei size, GLuint *buf); GLAPI void GLAPIENTRY glInitNames(void); GLAPI void GLAPIENTRY glPushName(GLuint name); GLAPI void GLAPIENTRY glPopName(void); GLAPI void GLAPIENTRY glLoadName(GLuint name); /* textures */ GLAPI void GLAPIENTRY glGenTextures(GLsizei n, GLuint *textures); GLAPI void GLAPIENTRY glDeleteTextures(GLsizei n, const GLuint *textures); GLAPI void GLAPIENTRY glBindTexture(GLenum target, GLuint texture); GLAPI void GLAPIENTRY glTexImage2D(GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); GLAPI void GLAPIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param); GLAPI void GLAPIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param); GLAPI void GLAPIENTRY glPixelStorei(GLenum pname, GLint param); /* lighting */ GLAPI void GLAPIENTRY glMaterialfv(GLenum face, GLenum pname, const GLfloat *v); GLAPI void GLAPIENTRY glMaterialf(GLenum mode, GLenum pname, GLfloat v); GLAPI void GLAPIENTRY glColorMaterial(GLenum face, GLenum mode); GLAPI void GLAPIENTRY glLightfv(GLenum light, GLenum pname, const GLfloat *v); GLAPI void GLAPIENTRY glLightf(GLenum light, GLenum pname, GLfloat v); GLAPI void GLAPIENTRY glLightModeli(GLenum pname, GLint param); GLAPI void GLAPIENTRY glLightModelfv(GLenum pname, const GLfloat *param); /* misc */ GLAPI void GLAPIENTRY glFlush(void); GLAPI void GLAPIENTRY glHint(GLenum target, GLenum mode); GLAPI void GLAPIENTRY glGetIntegerv(GLenum pname, GLint *params); GLAPI void GLAPIENTRY glGetFloatv(GLenum pname, GLfloat *v); GLAPI void GLAPIENTRY glFrontFace(GLenum mode); /* opengl 1.2 arrays */ GLAPI void GLAPIENTRY glEnableClientState(GLenum array); GLAPI void GLAPIENTRY glDisableClientState(GLenum array); GLAPI void GLAPIENTRY glArrayElement(GLint i); GLAPI void GLAPIENTRY glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); /* opengl 1.2 polygon offset */ GLAPI void GLAPIENTRY glPolygonOffset(GLfloat factor, GLfloat units); #endif /* GL_VERSION_1_1 */ #ifndef GL_VERSION_1_5 #ifndef __GLintptr_defined #include #ifdef __APPLE__ typedef intptr_t GLsizeiptr; typedef intptr_t GLintptr; #else typedef ptrdiff_t GLsizeiptr; typedef ptrdiff_t GLintptr; #endif #define __GLintptr_defined #endif #endif #ifdef __NFOSMESA_H__ #include #endif #ifndef GL_VERSION_2_0 #define GL_VERSION_2_0 1 typedef char GLchar; #endif #ifndef GL_ARB_vertex_buffer_object #define GL_ARB_vertex_buffer_object 1 #ifdef __APPLE__ typedef intptr_t GLsizeiptrARB; typedef intptr_t GLintptrARB; #else typedef ptrdiff_t GLsizeiptrARB; typedef ptrdiff_t GLintptrARB; #endif #endif #ifndef GL_NV_half_float #define GL_NV_half_float 1 typedef unsigned short GLhalfNV; #endif #ifndef GL_NV_vdpau_interop #define GL_NV_vdpau_interop 1 typedef GLintptr GLvdpauSurfaceNV; #endif #ifndef GL_ARB_cl_event #define GL_ARB_cl_event 1 #ifdef __PUREC__ struct _cl_context { int dummy; }; struct _cl_event { int dummy; }; #else struct _cl_context; struct _cl_event; #endif #endif #if !defined(GL_ARB_sync) && !defined(__TINY_GL_H__) #define GL_ARB_sync 1 #if defined(__GNUC__) || (defined(LLONG_MAX) && LLONG_MAX > 2147483647L) typedef int64_t GLint64; typedef uint64_t GLuint64; #else typedef struct { long hi; unsigned long lo; } GLint64; typedef struct { unsigned long hi; unsigned long lo; } GLuint64; #endif #ifdef __PUREC__ struct __GLsync { int dummy; }; #endif typedef struct __GLsync *GLsync; #endif #if !defined(GL_EXT_timer_query) && !defined(__TINY_GL_H__) #define GL_EXT_timer_query 1 typedef GLint64 GLint64EXT; typedef GLuint64 GLuint64EXT; #endif #ifndef GL_OES_fixed_point #define GL_OES_fixed_point 1 typedef GLint GLfixed; #endif #ifndef GL_ARB_shader_objects #define GL_ARB_shader_objects 1 typedef char GLcharARB; #ifdef __APPLE__ typedef void *GLhandleARB; #else typedef GLuint GLhandleARB; #endif #endif #ifndef GL_KHR_debug #define GL_KHR_debug 1 typedef void CALLBACK (*GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message, const void *userParam); #endif #ifndef GL_ARB_debug_output #define GL_ARB_debug_output 1 typedef void CALLBACK (*GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message, const void *userParam); #endif #ifndef GL_AMD_debug_output #define GL_AMD_debug_output typedef void CALLBACK (*GLDEBUGPROCAMD)(GLuint id,GLenum category, GLenum severity, GLsizei length, const GLchar *message, void *userParam); #endif #ifndef GL_MESA_program_debug #define GL_MESA_program_debug 1 typedef void CALLBACK (*GLprogramcallbackMESA)(GLenum target, GLvoid *data); #endif #ifndef GL_EXT_external_buffer #define GL_EXT_external_buffer 1 typedef void *GLeglClientBufferEXT; #endif #ifndef GL_NV_draw_vulkan_image #define GL_NV_draw_vulkan_image 1 typedef void (APIENTRY *GLVULKANPROCNV)(void); #endif /* * Mesa Off-Screen rendering interface. * * Copyright (C) 1999-2005 Brian Paul All Rights Reserved. * */ #define OSMESA_VERSION_NUMBER(major, minor, patch) ((major) * 10000 + (minor) * 100 + patch) #define OSMESA_VERSION OSMESA_VERSION_NUMBER(OSMESA_MAJOR_VERSION, OSMESA_MINOR_VERSION, OSMESA_PATCH_VERSION) #if !defined(OSMESA_MAJOR_VERSION) #define OSMESA_MAJOR_VERSION 6 #define OSMESA_MINOR_VERSION 3 #define OSMESA_PATCH_VERSION 0 /* * Values for the format parameter of OSMesaCreateLDG() * Mesa_gl.ldg version 0.8 (Mesa 2.6) */ #define OSMESA_COLOR_INDEX GL_COLOR_INDEX #define OSMESA_RGBA GL_RGBA #define OSMESA_BGRA 0x1 #define OSMESA_ARGB 0x2 #define OSMESA_RGB GL_RGB #define OSMESA_BGR 0x4 #define OSMESA_RGB_565 0x5 #define VDI_ARGB 0x8 #define VDI_RGB 0xf #define DIRECT_VDI_ARGB 0x10 /* * OSMesaPixelStore() parameters: */ #define OSMESA_ROW_LENGTH 0x10 #define OSMESA_Y_UP 0x11 /* * Accepted by OSMesaGetIntegerv: */ #define OSMESA_WIDTH 0x20 #define OSMESA_HEIGHT 0x21 #define OSMESA_FORMAT 0x22 #define OSMESA_TYPE 0x23 #define OSMESA_MAX_WIDTH 0x24 /* new in 4.0 */ #define OSMESA_MAX_HEIGHT 0x25 /* new in 4.0 */ #ifdef __PUREC__ struct osmesa_context { int dummy; }; #endif typedef struct osmesa_context *OSMesaContext; typedef void (APIENTRY *OSMESAproc)(void); GLAPI OSMesaContext GLAPIENTRY OSMesaCreateContext( GLenum format, OSMesaContext sharelist ); GLAPI OSMesaContext GLAPIENTRY OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist); GLAPI void GLAPIENTRY OSMesaDestroyContext( OSMesaContext ctx ); GLAPI GLboolean GLAPIENTRY OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height ); GLAPI OSMesaContext GLAPIENTRY OSMesaGetCurrentContext( void ); GLAPI void GLAPIENTRY OSMesaPixelStore( GLint pname, GLint value ); GLAPI void GLAPIENTRY OSMesaGetIntegerv( GLint pname, GLint *value ); GLAPI GLboolean GLAPIENTRY OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void **buffer ); GLAPI GLboolean GLAPIENTRY OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *format, void **buffer ); GLAPI OSMESAproc GLAPIENTRY OSMesaGetProcAddress( const char *funcName ); GLAPI void GLAPIENTRY OSMesaColorClamp(GLboolean enable); GLAPI void GLAPIENTRY OSMesaPostprocess(OSMesaContext osmesa, const char *filter, GLuint enable_value); #elif OSMESA_VERSION < OSMESA_VERSION_NUMBER(6, 3, 0) typedef void (APIENTRY *OSMESAproc)(void); #endif /* * integral types that need to be promoted to * 32bit type when passed by value */ #ifndef GL_nfosmesa_short_promotions #define GL_nfosmesa_short_promotions 1 #ifdef __MSHORT__ typedef long GLshort32; typedef unsigned long GLushort32; typedef unsigned long GLboolean32; typedef long GLchar32; typedef unsigned long GLubyte32; typedef signed long GLbyte32; typedef unsigned long GLhalfNV32; #else typedef GLshort GLshort32; typedef GLushort GLushort32; typedef GLboolean GLboolean32; typedef GLchar GLchar32; typedef GLubyte GLubyte32; typedef GLbyte GLbyte32; typedef GLhalfNV GLhalfNV32; #endif #endif /* * Atari-specific structure for the shared libraries */ struct gl_public { void *libhandle; void *libexec; void *(*m_alloc)(size_t); void (*m_free)(void *); }; #ifdef __cplusplus } #endif #undef glClearDepth #undef glFrustum #undef glOrtho #undef gluLookAt #ifdef __cplusplus extern "C" { #endif struct _gl_osmesa { /* 0 */ const GLubyte * APIENTRY (*GetString)(GLenum name); /* 1 */ void *__unused_1; /* 2 */ OSMesaContext APIENTRY (*OSMesaCreateContext)(GLenum format, OSMesaContext sharelist); /* 3 */ OSMesaContext APIENTRY (*OSMesaCreateContextExt)(GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist); /* 4 */ void APIENTRY (*OSMesaDestroyContext)(OSMesaContext ctx); /* 5 */ GLboolean APIENTRY (*OSMesaMakeCurrent)(OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height); /* 6 */ OSMesaContext APIENTRY (*OSMesaGetCurrentContext)(void); /* 7 */ void APIENTRY (*OSMesaPixelStore)(GLint pname, GLint value); /* 8 */ void APIENTRY (*OSMesaGetIntegerv)(GLint pname, GLint *value); /* 9 */ GLboolean APIENTRY (*OSMesaGetDepthBuffer)(OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void * *buffer); /* 10 */ GLboolean APIENTRY (*OSMesaGetColorBuffer)(OSMesaContext c, GLint *width, GLint *height, GLint *format, void * *buffer); /* 11 */ OSMESAproc APIENTRY (*OSMesaGetProcAddress)(const char *funcName); /* 12 */ void APIENTRY (*ClearIndex)(GLfloat c); /* 13 */ void APIENTRY (*ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); /* 14 */ void APIENTRY (*Clear)(GLbitfield mask); /* 15 */ void APIENTRY (*IndexMask)(GLuint mask); /* 16 */ void APIENTRY (*ColorMask)(GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha); /* 17 */ void APIENTRY (*AlphaFunc)(GLenum func, GLclampf ref); /* 18 */ void APIENTRY (*BlendFunc)(GLenum sfactor, GLenum dfactor); /* 19 */ void APIENTRY (*LogicOp)(GLenum opcode); /* 20 */ void APIENTRY (*CullFace)(GLenum mode); /* 21 */ void APIENTRY (*FrontFace)(GLenum mode); /* 22 */ void APIENTRY (*PointSize)(GLfloat size); /* 23 */ void APIENTRY (*LineWidth)(GLfloat width); /* 24 */ void APIENTRY (*LineStipple)(GLint factor, GLushort32 pattern); /* 25 */ void APIENTRY (*PolygonMode)(GLenum face, GLenum mode); /* 26 */ void APIENTRY (*PolygonOffset)(GLfloat factor, GLfloat units); /* 27 */ void APIENTRY (*PolygonStipple)(const GLubyte *mask); /* 28 */ void APIENTRY (*GetPolygonStipple)(GLubyte *mask); /* 29 */ void APIENTRY (*EdgeFlag)(GLboolean32 flag); /* 30 */ void APIENTRY (*EdgeFlagv)(const GLboolean *flag); /* 31 */ void APIENTRY (*Scissor)(GLint x, GLint y, GLsizei width, GLsizei height); /* 32 */ void APIENTRY (*ClipPlane)(GLenum plane, const GLdouble *equation); /* 33 */ void APIENTRY (*GetClipPlane)(GLenum plane, GLdouble *equation); /* 34 */ void APIENTRY (*DrawBuffer)(GLenum mode); /* 35 */ void APIENTRY (*ReadBuffer)(GLenum mode); /* 36 */ void APIENTRY (*Enable)(GLenum cap); /* 37 */ void APIENTRY (*Disable)(GLenum cap); /* 38 */ GLboolean APIENTRY (*IsEnabled)(GLenum cap); /* 39 */ void APIENTRY (*EnableClientState)(GLenum array); /* 40 */ void APIENTRY (*DisableClientState)(GLenum array); /* 41 */ void APIENTRY (*GetBooleanv)(GLenum pname, GLboolean *params); /* 42 */ void APIENTRY (*GetDoublev)(GLenum pname, GLdouble *params); /* 43 */ void APIENTRY (*GetFloatv)(GLenum pname, GLfloat *params); /* 44 */ void APIENTRY (*GetIntegerv)(GLenum pname, GLint *params); /* 45 */ void APIENTRY (*PushAttrib)(GLbitfield mask); /* 46 */ void APIENTRY (*PopAttrib)(void); /* 47 */ void APIENTRY (*PushClientAttrib)(GLbitfield mask); /* 48 */ void APIENTRY (*PopClientAttrib)(void); /* 49 */ GLint APIENTRY (*RenderMode)(GLenum mode); /* 50 */ GLenum APIENTRY (*GetError)(void); /* 51 */ void APIENTRY (*Finish)(void); /* 52 */ void APIENTRY (*Flush)(void); /* 53 */ void APIENTRY (*Hint)(GLenum target, GLenum mode); /* 54 */ void APIENTRY (*ClearDepth)(GLclampd depth); /* 55 */ void APIENTRY (*DepthFunc)(GLenum func); /* 56 */ void APIENTRY (*DepthMask)(GLboolean32 flag); /* 57 */ void APIENTRY (*DepthRange)(GLclampd zNear, GLclampd zFar); /* 58 */ void APIENTRY (*ClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); /* 59 */ void APIENTRY (*Accum)(GLenum op, GLfloat value); /* 60 */ void APIENTRY (*MatrixMode)(GLenum mode); /* 61 */ void APIENTRY (*Ortho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); /* 62 */ void APIENTRY (*Frustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); /* 63 */ void APIENTRY (*Viewport)(GLint x, GLint y, GLsizei width, GLsizei height); /* 64 */ void APIENTRY (*PushMatrix)(void); /* 65 */ void APIENTRY (*PopMatrix)(void); /* 66 */ void APIENTRY (*LoadIdentity)(void); /* 67 */ void APIENTRY (*LoadMatrixd)(const GLdouble *m); /* 68 */ void APIENTRY (*LoadMatrixf)(const GLfloat *m); /* 69 */ void APIENTRY (*MultMatrixd)(const GLdouble *m); /* 70 */ void APIENTRY (*MultMatrixf)(const GLfloat *m); /* 71 */ void APIENTRY (*Rotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); /* 72 */ void APIENTRY (*Rotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); /* 73 */ void APIENTRY (*Scaled)(GLdouble x, GLdouble y, GLdouble z); /* 74 */ void APIENTRY (*Scalef)(GLfloat x, GLfloat y, GLfloat z); /* 75 */ void APIENTRY (*Translated)(GLdouble x, GLdouble y, GLdouble z); /* 76 */ void APIENTRY (*Translatef)(GLfloat x, GLfloat y, GLfloat z); /* 77 */ GLboolean APIENTRY (*IsList)(GLuint list); /* 78 */ void APIENTRY (*DeleteLists)(GLuint list, GLsizei range); /* 79 */ GLuint APIENTRY (*GenLists)(GLsizei range); /* 80 */ void APIENTRY (*NewList)(GLuint list, GLenum mode); /* 81 */ void APIENTRY (*EndList)(void); /* 82 */ void APIENTRY (*CallList)(GLuint list); /* 83 */ void APIENTRY (*CallLists)(GLsizei n, GLenum type, const GLvoid *lists); /* 84 */ void APIENTRY (*ListBase)(GLuint base); /* 85 */ void APIENTRY (*Begin)(GLenum mode); /* 86 */ void APIENTRY (*End)(void); /* 87 */ void APIENTRY (*Vertex2d)(GLdouble x, GLdouble y); /* 88 */ void APIENTRY (*Vertex2f)(GLfloat x, GLfloat y); /* 89 */ void APIENTRY (*Vertex2i)(GLint x, GLint y); /* 90 */ void APIENTRY (*Vertex2s)(GLshort32 x, GLshort32 y); /* 91 */ void APIENTRY (*Vertex3d)(GLdouble x, GLdouble y, GLdouble z); /* 92 */ void APIENTRY (*Vertex3f)(GLfloat x, GLfloat y, GLfloat z); /* 93 */ void APIENTRY (*Vertex3i)(GLint x, GLint y, GLint z); /* 94 */ void APIENTRY (*Vertex3s)(GLshort32 x, GLshort32 y, GLshort32 z); /* 95 */ void APIENTRY (*Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 96 */ void APIENTRY (*Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 97 */ void APIENTRY (*Vertex4i)(GLint x, GLint y, GLint z, GLint w); /* 98 */ void APIENTRY (*Vertex4s)(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); /* 99 */ void APIENTRY (*Vertex2dv)(const GLdouble *v); /* 100 */ void APIENTRY (*Vertex2fv)(const GLfloat *v); /* 101 */ void APIENTRY (*Vertex2iv)(const GLint *v); /* 102 */ void APIENTRY (*Vertex2sv)(const GLshort *v); /* 103 */ void APIENTRY (*Vertex3dv)(const GLdouble *v); /* 104 */ void APIENTRY (*Vertex3fv)(const GLfloat *v); /* 105 */ void APIENTRY (*Vertex3iv)(const GLint *v); /* 106 */ void APIENTRY (*Vertex3sv)(const GLshort *v); /* 107 */ void APIENTRY (*Vertex4dv)(const GLdouble *v); /* 108 */ void APIENTRY (*Vertex4fv)(const GLfloat *v); /* 109 */ void APIENTRY (*Vertex4iv)(const GLint *v); /* 110 */ void APIENTRY (*Vertex4sv)(const GLshort *v); /* 111 */ void APIENTRY (*Normal3b)(GLbyte32 nx, GLbyte32 ny, GLbyte32 nz); /* 112 */ void APIENTRY (*Normal3d)(GLdouble nx, GLdouble ny, GLdouble nz); /* 113 */ void APIENTRY (*Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz); /* 114 */ void APIENTRY (*Normal3i)(GLint nx, GLint ny, GLint nz); /* 115 */ void APIENTRY (*Normal3s)(GLshort32 nx, GLshort32 ny, GLshort32 nz); /* 116 */ void APIENTRY (*Normal3bv)(const GLbyte *v); /* 117 */ void APIENTRY (*Normal3dv)(const GLdouble *v); /* 118 */ void APIENTRY (*Normal3fv)(const GLfloat *v); /* 119 */ void APIENTRY (*Normal3iv)(const GLint *v); /* 120 */ void APIENTRY (*Normal3sv)(const GLshort *v); /* 121 */ void APIENTRY (*Indexd)(GLdouble c); /* 122 */ void APIENTRY (*Indexf)(GLfloat c); /* 123 */ void APIENTRY (*Indexi)(GLint c); /* 124 */ void APIENTRY (*Indexs)(GLshort32 c); /* 125 */ void APIENTRY (*Indexub)(GLubyte32 c); /* 126 */ void APIENTRY (*Indexdv)(const GLdouble *c); /* 127 */ void APIENTRY (*Indexfv)(const GLfloat *c); /* 128 */ void APIENTRY (*Indexiv)(const GLint *c); /* 129 */ void APIENTRY (*Indexsv)(const GLshort *c); /* 130 */ void APIENTRY (*Indexubv)(const GLubyte *c); /* 131 */ void APIENTRY (*Color3b)(GLbyte32 red, GLbyte32 green, GLbyte32 blue); /* 132 */ void APIENTRY (*Color3d)(GLdouble red, GLdouble green, GLdouble blue); /* 133 */ void APIENTRY (*Color3f)(GLfloat red, GLfloat green, GLfloat blue); /* 134 */ void APIENTRY (*Color3i)(GLint red, GLint green, GLint blue); /* 135 */ void APIENTRY (*Color3s)(GLshort32 red, GLshort32 green, GLshort32 blue); /* 136 */ void APIENTRY (*Color3ub)(GLubyte32 red, GLubyte32 green, GLubyte32 blue); /* 137 */ void APIENTRY (*Color3ui)(GLuint red, GLuint green, GLuint blue); /* 138 */ void APIENTRY (*Color3us)(GLushort32 red, GLushort32 green, GLushort32 blue); /* 139 */ void APIENTRY (*Color4b)(GLbyte32 red, GLbyte32 green, GLbyte32 blue, GLbyte32 alpha); /* 140 */ void APIENTRY (*Color4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); /* 141 */ void APIENTRY (*Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); /* 142 */ void APIENTRY (*Color4i)(GLint red, GLint green, GLint blue, GLint alpha); /* 143 */ void APIENTRY (*Color4s)(GLshort32 red, GLshort32 green, GLshort32 blue, GLshort32 alpha); /* 144 */ void APIENTRY (*Color4ub)(GLubyte32 red, GLubyte32 green, GLubyte32 blue, GLubyte32 alpha); /* 145 */ void APIENTRY (*Color4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha); /* 146 */ void APIENTRY (*Color4us)(GLushort32 red, GLushort32 green, GLushort32 blue, GLushort32 alpha); /* 147 */ void APIENTRY (*Color3bv)(const GLbyte *v); /* 148 */ void APIENTRY (*Color3dv)(const GLdouble *v); /* 149 */ void APIENTRY (*Color3fv)(const GLfloat *v); /* 150 */ void APIENTRY (*Color3iv)(const GLint *v); /* 151 */ void APIENTRY (*Color3sv)(const GLshort *v); /* 152 */ void APIENTRY (*Color3ubv)(const GLubyte *v); /* 153 */ void APIENTRY (*Color3uiv)(const GLuint *v); /* 154 */ void APIENTRY (*Color3usv)(const GLushort *v); /* 155 */ void APIENTRY (*Color4bv)(const GLbyte *v); /* 156 */ void APIENTRY (*Color4dv)(const GLdouble *v); /* 157 */ void APIENTRY (*Color4fv)(const GLfloat *v); /* 158 */ void APIENTRY (*Color4iv)(const GLint *v); /* 159 */ void APIENTRY (*Color4sv)(const GLshort *v); /* 160 */ void APIENTRY (*Color4ubv)(const GLubyte *v); /* 161 */ void APIENTRY (*Color4uiv)(const GLuint *v); /* 162 */ void APIENTRY (*Color4usv)(const GLushort *v); /* 163 */ void APIENTRY (*TexCoord1d)(GLdouble s); /* 164 */ void APIENTRY (*TexCoord1f)(GLfloat s); /* 165 */ void APIENTRY (*TexCoord1i)(GLint s); /* 166 */ void APIENTRY (*TexCoord1s)(GLshort32 s); /* 167 */ void APIENTRY (*TexCoord2d)(GLdouble s, GLdouble t); /* 168 */ void APIENTRY (*TexCoord2f)(GLfloat s, GLfloat t); /* 169 */ void APIENTRY (*TexCoord2i)(GLint s, GLint t); /* 170 */ void APIENTRY (*TexCoord2s)(GLshort32 s, GLshort32 t); /* 171 */ void APIENTRY (*TexCoord3d)(GLdouble s, GLdouble t, GLdouble r); /* 172 */ void APIENTRY (*TexCoord3f)(GLfloat s, GLfloat t, GLfloat r); /* 173 */ void APIENTRY (*TexCoord3i)(GLint s, GLint t, GLint r); /* 174 */ void APIENTRY (*TexCoord3s)(GLshort32 s, GLshort32 t, GLshort32 r); /* 175 */ void APIENTRY (*TexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q); /* 176 */ void APIENTRY (*TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q); /* 177 */ void APIENTRY (*TexCoord4i)(GLint s, GLint t, GLint r, GLint q); /* 178 */ void APIENTRY (*TexCoord4s)(GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q); /* 179 */ void APIENTRY (*TexCoord1dv)(const GLdouble *v); /* 180 */ void APIENTRY (*TexCoord1fv)(const GLfloat *v); /* 181 */ void APIENTRY (*TexCoord1iv)(const GLint *v); /* 182 */ void APIENTRY (*TexCoord1sv)(const GLshort *v); /* 183 */ void APIENTRY (*TexCoord2dv)(const GLdouble *v); /* 184 */ void APIENTRY (*TexCoord2fv)(const GLfloat *v); /* 185 */ void APIENTRY (*TexCoord2iv)(const GLint *v); /* 186 */ void APIENTRY (*TexCoord2sv)(const GLshort *v); /* 187 */ void APIENTRY (*TexCoord3dv)(const GLdouble *v); /* 188 */ void APIENTRY (*TexCoord3fv)(const GLfloat *v); /* 189 */ void APIENTRY (*TexCoord3iv)(const GLint *v); /* 190 */ void APIENTRY (*TexCoord3sv)(const GLshort *v); /* 191 */ void APIENTRY (*TexCoord4dv)(const GLdouble *v); /* 192 */ void APIENTRY (*TexCoord4fv)(const GLfloat *v); /* 193 */ void APIENTRY (*TexCoord4iv)(const GLint *v); /* 194 */ void APIENTRY (*TexCoord4sv)(const GLshort *v); /* 195 */ void APIENTRY (*RasterPos2d)(GLdouble x, GLdouble y); /* 196 */ void APIENTRY (*RasterPos2f)(GLfloat x, GLfloat y); /* 197 */ void APIENTRY (*RasterPos2i)(GLint x, GLint y); /* 198 */ void APIENTRY (*RasterPos2s)(GLshort32 x, GLshort32 y); /* 199 */ void APIENTRY (*RasterPos3d)(GLdouble x, GLdouble y, GLdouble z); /* 200 */ void APIENTRY (*RasterPos3f)(GLfloat x, GLfloat y, GLfloat z); /* 201 */ void APIENTRY (*RasterPos3i)(GLint x, GLint y, GLint z); /* 202 */ void APIENTRY (*RasterPos3s)(GLshort32 x, GLshort32 y, GLshort32 z); /* 203 */ void APIENTRY (*RasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 204 */ void APIENTRY (*RasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 205 */ void APIENTRY (*RasterPos4i)(GLint x, GLint y, GLint z, GLint w); /* 206 */ void APIENTRY (*RasterPos4s)(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); /* 207 */ void APIENTRY (*RasterPos2dv)(const GLdouble *v); /* 208 */ void APIENTRY (*RasterPos2fv)(const GLfloat *v); /* 209 */ void APIENTRY (*RasterPos2iv)(const GLint *v); /* 210 */ void APIENTRY (*RasterPos2sv)(const GLshort *v); /* 211 */ void APIENTRY (*RasterPos3dv)(const GLdouble *v); /* 212 */ void APIENTRY (*RasterPos3fv)(const GLfloat *v); /* 213 */ void APIENTRY (*RasterPos3iv)(const GLint *v); /* 214 */ void APIENTRY (*RasterPos3sv)(const GLshort *v); /* 215 */ void APIENTRY (*RasterPos4dv)(const GLdouble *v); /* 216 */ void APIENTRY (*RasterPos4fv)(const GLfloat *v); /* 217 */ void APIENTRY (*RasterPos4iv)(const GLint *v); /* 218 */ void APIENTRY (*RasterPos4sv)(const GLshort *v); /* 219 */ void APIENTRY (*Rectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); /* 220 */ void APIENTRY (*Rectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); /* 221 */ void APIENTRY (*Recti)(GLint x1, GLint y1, GLint x2, GLint y2); /* 222 */ void APIENTRY (*Rects)(GLshort32 x1, GLshort32 y1, GLshort32 x2, GLshort32 y2); /* 223 */ void APIENTRY (*Rectdv)(const GLdouble *v1, const GLdouble *v2); /* 224 */ void APIENTRY (*Rectfv)(const GLfloat *v1, const GLfloat *v2); /* 225 */ void APIENTRY (*Rectiv)(const GLint *v1, const GLint *v2); /* 226 */ void APIENTRY (*Rectsv)(const GLshort *v1, const GLshort *v2); /* 227 */ void APIENTRY (*VertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); /* 228 */ void APIENTRY (*NormalPointer)(GLenum type, GLsizei stride, const GLvoid *pointer); /* 229 */ void APIENTRY (*ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); /* 230 */ void APIENTRY (*IndexPointer)(GLenum type, GLsizei stride, const GLvoid *pointer); /* 231 */ void APIENTRY (*TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); /* 232 */ void APIENTRY (*EdgeFlagPointer)(GLsizei stride, const GLvoid *pointer); /* 233 */ void APIENTRY (*GetPointerv)(GLenum pname, GLvoid* *params); /* 234 */ void APIENTRY (*ArrayElement)(GLint i); /* 235 */ void APIENTRY (*DrawArrays)(GLenum mode, GLint first, GLsizei count); /* 236 */ void APIENTRY (*DrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); /* 237 */ void APIENTRY (*InterleavedArrays)(GLenum format, GLsizei stride, const GLvoid *pointer); /* 238 */ void APIENTRY (*ShadeModel)(GLenum mode); /* 239 */ void APIENTRY (*Lightf)(GLenum light, GLenum pname, GLfloat param); /* 240 */ void APIENTRY (*Lighti)(GLenum light, GLenum pname, GLint param); /* 241 */ void APIENTRY (*Lightfv)(GLenum light, GLenum pname, const GLfloat *params); /* 242 */ void APIENTRY (*Lightiv)(GLenum light, GLenum pname, const GLint *params); /* 243 */ void APIENTRY (*GetLightfv)(GLenum light, GLenum pname, GLfloat *params); /* 244 */ void APIENTRY (*GetLightiv)(GLenum light, GLenum pname, GLint *params); /* 245 */ void APIENTRY (*LightModelf)(GLenum pname, GLfloat param); /* 246 */ void APIENTRY (*LightModeli)(GLenum pname, GLint param); /* 247 */ void APIENTRY (*LightModelfv)(GLenum pname, const GLfloat *params); /* 248 */ void APIENTRY (*LightModeliv)(GLenum pname, const GLint *params); /* 249 */ void APIENTRY (*Materialf)(GLenum face, GLenum pname, GLfloat param); /* 250 */ void APIENTRY (*Materiali)(GLenum face, GLenum pname, GLint param); /* 251 */ void APIENTRY (*Materialfv)(GLenum face, GLenum pname, const GLfloat *params); /* 252 */ void APIENTRY (*Materialiv)(GLenum face, GLenum pname, const GLint *params); /* 253 */ void APIENTRY (*GetMaterialfv)(GLenum face, GLenum pname, GLfloat *params); /* 254 */ void APIENTRY (*GetMaterialiv)(GLenum face, GLenum pname, GLint *params); /* 255 */ void APIENTRY (*ColorMaterial)(GLenum face, GLenum mode); /* 256 */ void APIENTRY (*PixelZoom)(GLfloat xfactor, GLfloat yfactor); /* 257 */ void APIENTRY (*PixelStoref)(GLenum pname, GLfloat param); /* 258 */ void APIENTRY (*PixelStorei)(GLenum pname, GLint param); /* 259 */ void APIENTRY (*PixelTransferf)(GLenum pname, GLfloat param); /* 260 */ void APIENTRY (*PixelTransferi)(GLenum pname, GLint param); /* 261 */ void APIENTRY (*PixelMapfv)(GLenum map, GLsizei mapsize, const GLfloat *values); /* 262 */ void APIENTRY (*PixelMapuiv)(GLenum map, GLsizei mapsize, const GLuint *values); /* 263 */ void APIENTRY (*PixelMapusv)(GLenum map, GLsizei mapsize, const GLushort *values); /* 264 */ void APIENTRY (*GetPixelMapfv)(GLenum map, GLfloat *values); /* 265 */ void APIENTRY (*GetPixelMapuiv)(GLenum map, GLuint *values); /* 266 */ void APIENTRY (*GetPixelMapusv)(GLenum map, GLushort *values); /* 267 */ void APIENTRY (*Bitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); /* 268 */ void APIENTRY (*ReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); /* 269 */ void APIENTRY (*DrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); /* 270 */ void APIENTRY (*CopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); /* 271 */ void APIENTRY (*StencilFunc)(GLenum func, GLint ref, GLuint mask); /* 272 */ void APIENTRY (*StencilMask)(GLuint mask); /* 273 */ void APIENTRY (*StencilOp)(GLenum fail, GLenum zfail, GLenum zpass); /* 274 */ void APIENTRY (*ClearStencil)(GLint s); /* 275 */ void APIENTRY (*TexGend)(GLenum coord, GLenum pname, GLdouble param); /* 276 */ void APIENTRY (*TexGenf)(GLenum coord, GLenum pname, GLfloat param); /* 277 */ void APIENTRY (*TexGeni)(GLenum coord, GLenum pname, GLint param); /* 278 */ void APIENTRY (*TexGendv)(GLenum coord, GLenum pname, const GLdouble *params); /* 279 */ void APIENTRY (*TexGenfv)(GLenum coord, GLenum pname, const GLfloat *params); /* 280 */ void APIENTRY (*TexGeniv)(GLenum coord, GLenum pname, const GLint *params); /* 281 */ void APIENTRY (*GetTexGendv)(GLenum coord, GLenum pname, GLdouble *params); /* 282 */ void APIENTRY (*GetTexGenfv)(GLenum coord, GLenum pname, GLfloat *params); /* 283 */ void APIENTRY (*GetTexGeniv)(GLenum coord, GLenum pname, GLint *params); /* 284 */ void APIENTRY (*TexEnvf)(GLenum target, GLenum pname, GLfloat param); /* 285 */ void APIENTRY (*TexEnvi)(GLenum target, GLenum pname, GLint param); /* 286 */ void APIENTRY (*TexEnvfv)(GLenum target, GLenum pname, const GLfloat *params); /* 287 */ void APIENTRY (*TexEnviv)(GLenum target, GLenum pname, const GLint *params); /* 288 */ void APIENTRY (*GetTexEnvfv)(GLenum target, GLenum pname, GLfloat *params); /* 289 */ void APIENTRY (*GetTexEnviv)(GLenum target, GLenum pname, GLint *params); /* 290 */ void APIENTRY (*TexParameterf)(GLenum target, GLenum pname, GLfloat param); /* 291 */ void APIENTRY (*TexParameteri)(GLenum target, GLenum pname, GLint param); /* 292 */ void APIENTRY (*TexParameterfv)(GLenum target, GLenum pname, const GLfloat *params); /* 293 */ void APIENTRY (*TexParameteriv)(GLenum target, GLenum pname, const GLint *params); /* 294 */ void APIENTRY (*GetTexParameterfv)(GLenum target, GLenum pname, GLfloat *params); /* 295 */ void APIENTRY (*GetTexParameteriv)(GLenum target, GLenum pname, GLint *params); /* 296 */ void APIENTRY (*GetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat *params); /* 297 */ void APIENTRY (*GetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint *params); /* 298 */ void APIENTRY (*TexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); /* 299 */ void APIENTRY (*TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); /* 300 */ void APIENTRY (*GetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); /* 301 */ void APIENTRY (*GenTextures)(GLsizei n, GLuint *textures); /* 302 */ void APIENTRY (*DeleteTextures)(GLsizei n, const GLuint *textures); /* 303 */ void APIENTRY (*BindTexture)(GLenum target, GLuint texture); /* 304 */ void APIENTRY (*PrioritizeTextures)(GLsizei n, const GLuint *textures, const GLclampf *priorities); /* 305 */ GLboolean APIENTRY (*AreTexturesResident)(GLsizei n, const GLuint *textures, GLboolean *residences); /* 306 */ GLboolean APIENTRY (*IsTexture)(GLuint texture); /* 307 */ void APIENTRY (*TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); /* 308 */ void APIENTRY (*TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); /* 309 */ void APIENTRY (*CopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); /* 310 */ void APIENTRY (*CopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); /* 311 */ void APIENTRY (*CopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); /* 312 */ void APIENTRY (*CopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 313 */ void APIENTRY (*Map1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); /* 314 */ void APIENTRY (*Map1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); /* 315 */ void APIENTRY (*Map2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); /* 316 */ void APIENTRY (*Map2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); /* 317 */ void APIENTRY (*GetMapdv)(GLenum target, GLenum query, GLdouble *v); /* 318 */ void APIENTRY (*GetMapfv)(GLenum target, GLenum query, GLfloat *v); /* 319 */ void APIENTRY (*GetMapiv)(GLenum target, GLenum query, GLint *v); /* 320 */ void APIENTRY (*EvalCoord1d)(GLdouble u); /* 321 */ void APIENTRY (*EvalCoord1f)(GLfloat u); /* 322 */ void APIENTRY (*EvalCoord1dv)(const GLdouble *u); /* 323 */ void APIENTRY (*EvalCoord1fv)(const GLfloat *u); /* 324 */ void APIENTRY (*EvalCoord2d)(GLdouble u, GLdouble v); /* 325 */ void APIENTRY (*EvalCoord2f)(GLfloat u, GLfloat v); /* 326 */ void APIENTRY (*EvalCoord2dv)(const GLdouble *u); /* 327 */ void APIENTRY (*EvalCoord2fv)(const GLfloat *u); /* 328 */ void APIENTRY (*MapGrid1d)(GLint un, GLdouble u1, GLdouble u2); /* 329 */ void APIENTRY (*MapGrid1f)(GLint un, GLfloat u1, GLfloat u2); /* 330 */ void APIENTRY (*MapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); /* 331 */ void APIENTRY (*MapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); /* 332 */ void APIENTRY (*EvalPoint1)(GLint i); /* 333 */ void APIENTRY (*EvalPoint2)(GLint i, GLint j); /* 334 */ void APIENTRY (*EvalMesh1)(GLenum mode, GLint i1, GLint i2); /* 335 */ void APIENTRY (*EvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); /* 336 */ void APIENTRY (*Fogf)(GLenum pname, GLfloat param); /* 337 */ void APIENTRY (*Fogi)(GLenum pname, GLint param); /* 338 */ void APIENTRY (*Fogfv)(GLenum pname, const GLfloat *params); /* 339 */ void APIENTRY (*Fogiv)(GLenum pname, const GLint *params); /* 340 */ void APIENTRY (*FeedbackBuffer)(GLsizei size, GLenum type, GLfloat *buffer); /* 341 */ void APIENTRY (*PassThrough)(GLfloat token); /* 342 */ void APIENTRY (*SelectBuffer)(GLsizei size, GLuint *buffer); /* 343 */ void APIENTRY (*InitNames)(void); /* 344 */ void APIENTRY (*LoadName)(GLuint name); /* 345 */ void APIENTRY (*PushName)(GLuint name); /* 346 */ void APIENTRY (*PopName)(void); /* 347 */ void APIENTRY (*EnableTraceMESA)(GLbitfield mask); /* 348 */ void APIENTRY (*DisableTraceMESA)(GLbitfield mask); /* 349 */ void APIENTRY (*NewTraceMESA)(GLbitfield mask, const GLubyte *traceName); /* 350 */ void APIENTRY (*EndTraceMESA)(void); /* 351 */ void APIENTRY (*TraceAssertAttribMESA)(GLbitfield attribMask); /* 352 */ void APIENTRY (*TraceCommentMESA)(const GLubyte *comment); /* 353 */ void APIENTRY (*TraceTextureMESA)(GLuint name, const GLubyte *comment); /* 354 */ void APIENTRY (*TraceListMESA)(GLuint name, const GLubyte *comment); /* 355 */ void APIENTRY (*TracePointerMESA)(GLvoid *pointer, const GLubyte *comment); /* 356 */ void APIENTRY (*TracePointerRangeMESA)(const GLvoid *first, const GLvoid *last, const GLubyte *comment); /* 357 */ void APIENTRY (*BlendEquationSeparateATI)(GLenum equationRGB, GLenum equationAlpha); /* 358 */ void APIENTRY (*BlendColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); /* 359 */ void APIENTRY (*BlendEquation)(GLenum mode); /* 360 */ void APIENTRY (*DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); /* 361 */ void APIENTRY (*ColorTable)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); /* 362 */ void APIENTRY (*ColorTableParameterfv)(GLenum target, GLenum pname, const GLfloat *params); /* 363 */ void APIENTRY (*ColorTableParameteriv)(GLenum target, GLenum pname, const GLint *params); /* 364 */ void APIENTRY (*CopyColorTable)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 365 */ void APIENTRY (*GetColorTable)(GLenum target, GLenum format, GLenum type, void *table); /* 366 */ void APIENTRY (*GetColorTableParameterfv)(GLenum target, GLenum pname, GLfloat *params); /* 367 */ void APIENTRY (*GetColorTableParameteriv)(GLenum target, GLenum pname, GLint *params); /* 368 */ void APIENTRY (*ColorSubTable)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); /* 369 */ void APIENTRY (*CopyColorSubTable)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); /* 370 */ void APIENTRY (*ConvolutionFilter1D)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); /* 371 */ void APIENTRY (*ConvolutionFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); /* 372 */ void APIENTRY (*ConvolutionParameterf)(GLenum target, GLenum pname, GLfloat params); /* 373 */ void APIENTRY (*ConvolutionParameterfv)(GLenum target, GLenum pname, const GLfloat *params); /* 374 */ void APIENTRY (*ConvolutionParameteri)(GLenum target, GLenum pname, GLint params); /* 375 */ void APIENTRY (*ConvolutionParameteriv)(GLenum target, GLenum pname, const GLint *params); /* 376 */ void APIENTRY (*CopyConvolutionFilter1D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 377 */ void APIENTRY (*CopyConvolutionFilter2D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); /* 378 */ void APIENTRY (*GetConvolutionFilter)(GLenum target, GLenum format, GLenum type, void *image); /* 379 */ void APIENTRY (*GetConvolutionParameterfv)(GLenum target, GLenum pname, GLfloat *params); /* 380 */ void APIENTRY (*GetConvolutionParameteriv)(GLenum target, GLenum pname, GLint *params); /* 381 */ void APIENTRY (*GetSeparableFilter)(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); /* 382 */ void APIENTRY (*SeparableFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); /* 383 */ void APIENTRY (*GetHistogram)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values); /* 384 */ void APIENTRY (*GetHistogramParameterfv)(GLenum target, GLenum pname, GLfloat *params); /* 385 */ void APIENTRY (*GetHistogramParameteriv)(GLenum target, GLenum pname, GLint *params); /* 386 */ void APIENTRY (*GetMinmax)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values); /* 387 */ void APIENTRY (*GetMinmaxParameterfv)(GLenum target, GLenum pname, GLfloat *params); /* 388 */ void APIENTRY (*GetMinmaxParameteriv)(GLenum target, GLenum pname, GLint *params); /* 389 */ void APIENTRY (*Histogram)(GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink); /* 390 */ void APIENTRY (*Minmax)(GLenum target, GLenum internalformat, GLboolean32 sink); /* 391 */ void APIENTRY (*ResetHistogram)(GLenum target); /* 392 */ void APIENTRY (*ResetMinmax)(GLenum target); /* 393 */ void APIENTRY (*TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); /* 394 */ void APIENTRY (*TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); /* 395 */ void APIENTRY (*CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 396 */ void APIENTRY (*ActiveTexture)(GLenum texture); /* 397 */ void APIENTRY (*ClientActiveTexture)(GLenum texture); /* 398 */ void APIENTRY (*MultiTexCoord1d)(GLenum target, GLdouble s); /* 399 */ void APIENTRY (*MultiTexCoord1dv)(GLenum target, const GLdouble *v); /* 400 */ void APIENTRY (*MultiTexCoord1f)(GLenum target, GLfloat s); /* 401 */ void APIENTRY (*MultiTexCoord1fv)(GLenum target, const GLfloat *v); /* 402 */ void APIENTRY (*MultiTexCoord1i)(GLenum target, GLint s); /* 403 */ void APIENTRY (*MultiTexCoord1iv)(GLenum target, const GLint *v); /* 404 */ void APIENTRY (*MultiTexCoord1s)(GLenum target, GLshort32 s); /* 405 */ void APIENTRY (*MultiTexCoord1sv)(GLenum target, const GLshort *v); /* 406 */ void APIENTRY (*MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t); /* 407 */ void APIENTRY (*MultiTexCoord2dv)(GLenum target, const GLdouble *v); /* 408 */ void APIENTRY (*MultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t); /* 409 */ void APIENTRY (*MultiTexCoord2fv)(GLenum target, const GLfloat *v); /* 410 */ void APIENTRY (*MultiTexCoord2i)(GLenum target, GLint s, GLint t); /* 411 */ void APIENTRY (*MultiTexCoord2iv)(GLenum target, const GLint *v); /* 412 */ void APIENTRY (*MultiTexCoord2s)(GLenum target, GLshort32 s, GLshort32 t); /* 413 */ void APIENTRY (*MultiTexCoord2sv)(GLenum target, const GLshort *v); /* 414 */ void APIENTRY (*MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r); /* 415 */ void APIENTRY (*MultiTexCoord3dv)(GLenum target, const GLdouble *v); /* 416 */ void APIENTRY (*MultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r); /* 417 */ void APIENTRY (*MultiTexCoord3fv)(GLenum target, const GLfloat *v); /* 418 */ void APIENTRY (*MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r); /* 419 */ void APIENTRY (*MultiTexCoord3iv)(GLenum target, const GLint *v); /* 420 */ void APIENTRY (*MultiTexCoord3s)(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r); /* 421 */ void APIENTRY (*MultiTexCoord3sv)(GLenum target, const GLshort *v); /* 422 */ void APIENTRY (*MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); /* 423 */ void APIENTRY (*MultiTexCoord4dv)(GLenum target, const GLdouble *v); /* 424 */ void APIENTRY (*MultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); /* 425 */ void APIENTRY (*MultiTexCoord4fv)(GLenum target, const GLfloat *v); /* 426 */ void APIENTRY (*MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q); /* 427 */ void APIENTRY (*MultiTexCoord4iv)(GLenum target, const GLint *v); /* 428 */ void APIENTRY (*MultiTexCoord4s)(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q); /* 429 */ void APIENTRY (*MultiTexCoord4sv)(GLenum target, const GLshort *v); /* 430 */ void APIENTRY (*LoadTransposeMatrixf)(const GLfloat *m); /* 431 */ void APIENTRY (*LoadTransposeMatrixd)(const GLdouble *m); /* 432 */ void APIENTRY (*MultTransposeMatrixf)(const GLfloat *m); /* 433 */ void APIENTRY (*MultTransposeMatrixd)(const GLdouble *m); /* 434 */ void APIENTRY (*SampleCoverage)(GLfloat value, GLboolean32 invert); /* 435 */ void APIENTRY (*CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); /* 436 */ void APIENTRY (*CompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); /* 437 */ void APIENTRY (*CompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); /* 438 */ void APIENTRY (*CompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); /* 439 */ void APIENTRY (*CompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); /* 440 */ void APIENTRY (*CompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); /* 441 */ void APIENTRY (*GetCompressedTexImage)(GLenum target, GLint level, void *img); /* 442 */ void APIENTRY (*BlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 443 */ void APIENTRY (*FogCoordf)(GLfloat coord); /* 444 */ void APIENTRY (*FogCoordfv)(const GLfloat *coord); /* 445 */ void APIENTRY (*FogCoordd)(GLdouble coord); /* 446 */ void APIENTRY (*FogCoorddv)(const GLdouble *coord); /* 447 */ void APIENTRY (*FogCoordPointer)(GLenum type, GLsizei stride, const void *pointer); /* 448 */ void APIENTRY (*MultiDrawArrays)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); /* 449 */ void APIENTRY (*MultiDrawElements)(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount); /* 450 */ void APIENTRY (*PointParameterf)(GLenum pname, GLfloat param); /* 451 */ void APIENTRY (*PointParameterfv)(GLenum pname, const GLfloat *params); /* 452 */ void APIENTRY (*PointParameteri)(GLenum pname, GLint param); /* 453 */ void APIENTRY (*PointParameteriv)(GLenum pname, const GLint *params); /* 454 */ void APIENTRY (*SecondaryColor3b)(GLbyte32 red, GLbyte32 green, GLbyte32 blue); /* 455 */ void APIENTRY (*SecondaryColor3bv)(const GLbyte *v); /* 456 */ void APIENTRY (*SecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue); /* 457 */ void APIENTRY (*SecondaryColor3dv)(const GLdouble *v); /* 458 */ void APIENTRY (*SecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue); /* 459 */ void APIENTRY (*SecondaryColor3fv)(const GLfloat *v); /* 460 */ void APIENTRY (*SecondaryColor3i)(GLint red, GLint green, GLint blue); /* 461 */ void APIENTRY (*SecondaryColor3iv)(const GLint *v); /* 462 */ void APIENTRY (*SecondaryColor3s)(GLshort32 red, GLshort32 green, GLshort32 blue); /* 463 */ void APIENTRY (*SecondaryColor3sv)(const GLshort *v); /* 464 */ void APIENTRY (*SecondaryColor3ub)(GLubyte32 red, GLubyte32 green, GLubyte32 blue); /* 465 */ void APIENTRY (*SecondaryColor3ubv)(const GLubyte *v); /* 466 */ void APIENTRY (*SecondaryColor3ui)(GLuint red, GLuint green, GLuint blue); /* 467 */ void APIENTRY (*SecondaryColor3uiv)(const GLuint *v); /* 468 */ void APIENTRY (*SecondaryColor3us)(GLushort32 red, GLushort32 green, GLushort32 blue); /* 469 */ void APIENTRY (*SecondaryColor3usv)(const GLushort *v); /* 470 */ void APIENTRY (*SecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const void *pointer); /* 471 */ void APIENTRY (*WindowPos2d)(GLdouble x, GLdouble y); /* 472 */ void APIENTRY (*WindowPos2dv)(const GLdouble *v); /* 473 */ void APIENTRY (*WindowPos2f)(GLfloat x, GLfloat y); /* 474 */ void APIENTRY (*WindowPos2fv)(const GLfloat *v); /* 475 */ void APIENTRY (*WindowPos2i)(GLint x, GLint y); /* 476 */ void APIENTRY (*WindowPos2iv)(const GLint *v); /* 477 */ void APIENTRY (*WindowPos2s)(GLshort32 x, GLshort32 y); /* 478 */ void APIENTRY (*WindowPos2sv)(const GLshort *v); /* 479 */ void APIENTRY (*WindowPos3d)(GLdouble x, GLdouble y, GLdouble z); /* 480 */ void APIENTRY (*WindowPos3dv)(const GLdouble *v); /* 481 */ void APIENTRY (*WindowPos3f)(GLfloat x, GLfloat y, GLfloat z); /* 482 */ void APIENTRY (*WindowPos3fv)(const GLfloat *v); /* 483 */ void APIENTRY (*WindowPos3i)(GLint x, GLint y, GLint z); /* 484 */ void APIENTRY (*WindowPos3iv)(const GLint *v); /* 485 */ void APIENTRY (*WindowPos3s)(GLshort32 x, GLshort32 y, GLshort32 z); /* 486 */ void APIENTRY (*WindowPos3sv)(const GLshort *v); /* 487 */ void APIENTRY (*GenQueries)(GLsizei n, GLuint *ids); /* 488 */ void APIENTRY (*DeleteQueries)(GLsizei n, const GLuint *ids); /* 489 */ GLboolean APIENTRY (*IsQuery)(GLuint id); /* 490 */ void APIENTRY (*BeginQuery)(GLenum target, GLuint id); /* 491 */ void APIENTRY (*EndQuery)(GLenum target); /* 492 */ void APIENTRY (*GetQueryiv)(GLenum target, GLenum pname, GLint *params); /* 493 */ void APIENTRY (*GetQueryObjectiv)(GLuint id, GLenum pname, GLint *params); /* 494 */ void APIENTRY (*GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint *params); /* 495 */ void APIENTRY (*BindBuffer)(GLenum target, GLuint buffer); /* 496 */ void APIENTRY (*DeleteBuffers)(GLsizei n, const GLuint *buffers); /* 497 */ void APIENTRY (*GenBuffers)(GLsizei n, GLuint *buffers); /* 498 */ GLboolean APIENTRY (*IsBuffer)(GLuint buffer); /* 499 */ void APIENTRY (*BufferData)(GLenum target, GLsizeiptr size, const void *data, GLenum usage); /* 500 */ void APIENTRY (*BufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); /* 501 */ void APIENTRY (*GetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, void *data); /* 502 */ void * APIENTRY (*MapBuffer)(GLenum target, GLenum access); /* 503 */ GLboolean APIENTRY (*UnmapBuffer)(GLenum target); /* 504 */ void APIENTRY (*GetBufferParameteriv)(GLenum target, GLenum pname, GLint *params); /* 505 */ void APIENTRY (*GetBufferPointerv)(GLenum target, GLenum pname, void * *params); /* 506 */ void APIENTRY (*ActiveTextureARB)(GLenum texture); /* 507 */ void APIENTRY (*ClientActiveTextureARB)(GLenum texture); /* 508 */ void APIENTRY (*MultiTexCoord1dARB)(GLenum target, GLdouble s); /* 509 */ void APIENTRY (*MultiTexCoord1dvARB)(GLenum target, const GLdouble *v); /* 510 */ void APIENTRY (*MultiTexCoord1fARB)(GLenum target, GLfloat s); /* 511 */ void APIENTRY (*MultiTexCoord1fvARB)(GLenum target, const GLfloat *v); /* 512 */ void APIENTRY (*MultiTexCoord1iARB)(GLenum target, GLint s); /* 513 */ void APIENTRY (*MultiTexCoord1ivARB)(GLenum target, const GLint *v); /* 514 */ void APIENTRY (*MultiTexCoord1sARB)(GLenum target, GLshort32 s); /* 515 */ void APIENTRY (*MultiTexCoord1svARB)(GLenum target, const GLshort *v); /* 516 */ void APIENTRY (*MultiTexCoord2dARB)(GLenum target, GLdouble s, GLdouble t); /* 517 */ void APIENTRY (*MultiTexCoord2dvARB)(GLenum target, const GLdouble *v); /* 518 */ void APIENTRY (*MultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t); /* 519 */ void APIENTRY (*MultiTexCoord2fvARB)(GLenum target, const GLfloat *v); /* 520 */ void APIENTRY (*MultiTexCoord2iARB)(GLenum target, GLint s, GLint t); /* 521 */ void APIENTRY (*MultiTexCoord2ivARB)(GLenum target, const GLint *v); /* 522 */ void APIENTRY (*MultiTexCoord2sARB)(GLenum target, GLshort32 s, GLshort32 t); /* 523 */ void APIENTRY (*MultiTexCoord2svARB)(GLenum target, const GLshort *v); /* 524 */ void APIENTRY (*MultiTexCoord3dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r); /* 525 */ void APIENTRY (*MultiTexCoord3dvARB)(GLenum target, const GLdouble *v); /* 526 */ void APIENTRY (*MultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r); /* 527 */ void APIENTRY (*MultiTexCoord3fvARB)(GLenum target, const GLfloat *v); /* 528 */ void APIENTRY (*MultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r); /* 529 */ void APIENTRY (*MultiTexCoord3ivARB)(GLenum target, const GLint *v); /* 530 */ void APIENTRY (*MultiTexCoord3sARB)(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r); /* 531 */ void APIENTRY (*MultiTexCoord3svARB)(GLenum target, const GLshort *v); /* 532 */ void APIENTRY (*MultiTexCoord4dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); /* 533 */ void APIENTRY (*MultiTexCoord4dvARB)(GLenum target, const GLdouble *v); /* 534 */ void APIENTRY (*MultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); /* 535 */ void APIENTRY (*MultiTexCoord4fvARB)(GLenum target, const GLfloat *v); /* 536 */ void APIENTRY (*MultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q); /* 537 */ void APIENTRY (*MultiTexCoord4ivARB)(GLenum target, const GLint *v); /* 538 */ void APIENTRY (*MultiTexCoord4sARB)(GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q); /* 539 */ void APIENTRY (*MultiTexCoord4svARB)(GLenum target, const GLshort *v); /* 540 */ void APIENTRY (*LoadTransposeMatrixfARB)(const GLfloat *m); /* 541 */ void APIENTRY (*LoadTransposeMatrixdARB)(const GLdouble *m); /* 542 */ void APIENTRY (*MultTransposeMatrixfARB)(const GLfloat *m); /* 543 */ void APIENTRY (*MultTransposeMatrixdARB)(const GLdouble *m); /* 544 */ void APIENTRY (*SampleCoverageARB)(GLfloat value, GLboolean32 invert); /* 545 */ void APIENTRY (*CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); /* 546 */ void APIENTRY (*CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); /* 547 */ void APIENTRY (*CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); /* 548 */ void APIENTRY (*CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); /* 549 */ void APIENTRY (*CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); /* 550 */ void APIENTRY (*CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); /* 551 */ void APIENTRY (*GetCompressedTexImageARB)(GLenum target, GLint level, void *img); /* 552 */ void APIENTRY (*PointParameterfARB)(GLenum pname, GLfloat param); /* 553 */ void APIENTRY (*PointParameterfvARB)(GLenum pname, const GLfloat *params); /* 554 */ void APIENTRY (*WeightbvARB)(GLint size, const GLbyte *weights); /* 555 */ void APIENTRY (*WeightsvARB)(GLint size, const GLshort *weights); /* 556 */ void APIENTRY (*WeightivARB)(GLint size, const GLint *weights); /* 557 */ void APIENTRY (*WeightfvARB)(GLint size, const GLfloat *weights); /* 558 */ void APIENTRY (*WeightdvARB)(GLint size, const GLdouble *weights); /* 559 */ void APIENTRY (*WeightubvARB)(GLint size, const GLubyte *weights); /* 560 */ void APIENTRY (*WeightusvARB)(GLint size, const GLushort *weights); /* 561 */ void APIENTRY (*WeightuivARB)(GLint size, const GLuint *weights); /* 562 */ void APIENTRY (*WeightPointerARB)(GLint size, GLenum type, GLsizei stride, const void *pointer); /* 563 */ void APIENTRY (*VertexBlendARB)(GLint count); /* 564 */ void APIENTRY (*CurrentPaletteMatrixARB)(GLint index); /* 565 */ void APIENTRY (*MatrixIndexubvARB)(GLint size, const GLubyte *indices); /* 566 */ void APIENTRY (*MatrixIndexusvARB)(GLint size, const GLushort *indices); /* 567 */ void APIENTRY (*MatrixIndexuivARB)(GLint size, const GLuint *indices); /* 568 */ void APIENTRY (*MatrixIndexPointerARB)(GLint size, GLenum type, GLsizei stride, const void *pointer); /* 569 */ void APIENTRY (*WindowPos2dARB)(GLdouble x, GLdouble y); /* 570 */ void APIENTRY (*WindowPos2dvARB)(const GLdouble *v); /* 571 */ void APIENTRY (*WindowPos2fARB)(GLfloat x, GLfloat y); /* 572 */ void APIENTRY (*WindowPos2fvARB)(const GLfloat *v); /* 573 */ void APIENTRY (*WindowPos2iARB)(GLint x, GLint y); /* 574 */ void APIENTRY (*WindowPos2ivARB)(const GLint *v); /* 575 */ void APIENTRY (*WindowPos2sARB)(GLshort32 x, GLshort32 y); /* 576 */ void APIENTRY (*WindowPos2svARB)(const GLshort *v); /* 577 */ void APIENTRY (*WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z); /* 578 */ void APIENTRY (*WindowPos3dvARB)(const GLdouble *v); /* 579 */ void APIENTRY (*WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z); /* 580 */ void APIENTRY (*WindowPos3fvARB)(const GLfloat *v); /* 581 */ void APIENTRY (*WindowPos3iARB)(GLint x, GLint y, GLint z); /* 582 */ void APIENTRY (*WindowPos3ivARB)(const GLint *v); /* 583 */ void APIENTRY (*WindowPos3sARB)(GLshort32 x, GLshort32 y, GLshort32 z); /* 584 */ void APIENTRY (*WindowPos3svARB)(const GLshort *v); /* 585 */ void APIENTRY (*VertexAttrib1dARB)(GLuint index, GLdouble x); /* 586 */ void APIENTRY (*VertexAttrib1dvARB)(GLuint index, const GLdouble *v); /* 587 */ void APIENTRY (*VertexAttrib1fARB)(GLuint index, GLfloat x); /* 588 */ void APIENTRY (*VertexAttrib1fvARB)(GLuint index, const GLfloat *v); /* 589 */ void APIENTRY (*VertexAttrib1sARB)(GLuint index, GLshort32 x); /* 590 */ void APIENTRY (*VertexAttrib1svARB)(GLuint index, const GLshort *v); /* 591 */ void APIENTRY (*VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y); /* 592 */ void APIENTRY (*VertexAttrib2dvARB)(GLuint index, const GLdouble *v); /* 593 */ void APIENTRY (*VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y); /* 594 */ void APIENTRY (*VertexAttrib2fvARB)(GLuint index, const GLfloat *v); /* 595 */ void APIENTRY (*VertexAttrib2sARB)(GLuint index, GLshort32 x, GLshort32 y); /* 596 */ void APIENTRY (*VertexAttrib2svARB)(GLuint index, const GLshort *v); /* 597 */ void APIENTRY (*VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 598 */ void APIENTRY (*VertexAttrib3dvARB)(GLuint index, const GLdouble *v); /* 599 */ void APIENTRY (*VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 600 */ void APIENTRY (*VertexAttrib3fvARB)(GLuint index, const GLfloat *v); /* 601 */ void APIENTRY (*VertexAttrib3sARB)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z); /* 602 */ void APIENTRY (*VertexAttrib3svARB)(GLuint index, const GLshort *v); /* 603 */ void APIENTRY (*VertexAttrib4NbvARB)(GLuint index, const GLbyte *v); /* 604 */ void APIENTRY (*VertexAttrib4NivARB)(GLuint index, const GLint *v); /* 605 */ void APIENTRY (*VertexAttrib4NsvARB)(GLuint index, const GLshort *v); /* 606 */ void APIENTRY (*VertexAttrib4NubARB)(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w); /* 607 */ void APIENTRY (*VertexAttrib4NubvARB)(GLuint index, const GLubyte *v); /* 608 */ void APIENTRY (*VertexAttrib4NuivARB)(GLuint index, const GLuint *v); /* 609 */ void APIENTRY (*VertexAttrib4NusvARB)(GLuint index, const GLushort *v); /* 610 */ void APIENTRY (*VertexAttrib4bvARB)(GLuint index, const GLbyte *v); /* 611 */ void APIENTRY (*VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 612 */ void APIENTRY (*VertexAttrib4dvARB)(GLuint index, const GLdouble *v); /* 613 */ void APIENTRY (*VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 614 */ void APIENTRY (*VertexAttrib4fvARB)(GLuint index, const GLfloat *v); /* 615 */ void APIENTRY (*VertexAttrib4ivARB)(GLuint index, const GLint *v); /* 616 */ void APIENTRY (*VertexAttrib4sARB)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); /* 617 */ void APIENTRY (*VertexAttrib4svARB)(GLuint index, const GLshort *v); /* 618 */ void APIENTRY (*VertexAttrib4ubvARB)(GLuint index, const GLubyte *v); /* 619 */ void APIENTRY (*VertexAttrib4uivARB)(GLuint index, const GLuint *v); /* 620 */ void APIENTRY (*VertexAttrib4usvARB)(GLuint index, const GLushort *v); /* 621 */ void APIENTRY (*VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer); /* 622 */ void APIENTRY (*EnableVertexAttribArrayARB)(GLuint index); /* 623 */ void APIENTRY (*DisableVertexAttribArrayARB)(GLuint index); /* 624 */ void APIENTRY (*ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const void *string); /* 625 */ void APIENTRY (*BindProgramARB)(GLenum target, GLuint program); /* 626 */ void APIENTRY (*DeleteProgramsARB)(GLsizei n, const GLuint *programs); /* 627 */ void APIENTRY (*GenProgramsARB)(GLsizei n, GLuint *programs); /* 628 */ void APIENTRY (*ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 629 */ void APIENTRY (*ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble *params); /* 630 */ void APIENTRY (*ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 631 */ void APIENTRY (*ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat *params); /* 632 */ void APIENTRY (*ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 633 */ void APIENTRY (*ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble *params); /* 634 */ void APIENTRY (*ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 635 */ void APIENTRY (*ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat *params); /* 636 */ void APIENTRY (*GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble *params); /* 637 */ void APIENTRY (*GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat *params); /* 638 */ void APIENTRY (*GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble *params); /* 639 */ void APIENTRY (*GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat *params); /* 640 */ void APIENTRY (*GetProgramivARB)(GLenum target, GLenum pname, GLint *params); /* 641 */ void APIENTRY (*GetProgramStringARB)(GLenum target, GLenum pname, void *string); /* 642 */ void APIENTRY (*GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble *params); /* 643 */ void APIENTRY (*GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat *params); /* 644 */ void APIENTRY (*GetVertexAttribivARB)(GLuint index, GLenum pname, GLint *params); /* 645 */ void APIENTRY (*GetVertexAttribPointervARB)(GLuint index, GLenum pname, void * *pointer); /* 646 */ GLboolean APIENTRY (*IsProgramARB)(GLuint program); /* 647 */ void APIENTRY (*BindBufferARB)(GLenum target, GLuint buffer); /* 648 */ void APIENTRY (*DeleteBuffersARB)(GLsizei n, const GLuint *buffers); /* 649 */ void APIENTRY (*GenBuffersARB)(GLsizei n, GLuint *buffers); /* 650 */ GLboolean APIENTRY (*IsBufferARB)(GLuint buffer); /* 651 */ void APIENTRY (*BufferDataARB)(GLenum target, GLsizeiptrARB size, const void *data, GLenum usage); /* 652 */ void APIENTRY (*BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data); /* 653 */ void APIENTRY (*GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data); /* 654 */ void * APIENTRY (*MapBufferARB)(GLenum target, GLenum access); /* 655 */ GLboolean APIENTRY (*UnmapBufferARB)(GLenum target); /* 656 */ void APIENTRY (*GetBufferParameterivARB)(GLenum target, GLenum pname, GLint *params); /* 657 */ void APIENTRY (*GetBufferPointervARB)(GLenum target, GLenum pname, void * *params); /* 658 */ void APIENTRY (*GenQueriesARB)(GLsizei n, GLuint *ids); /* 659 */ void APIENTRY (*DeleteQueriesARB)(GLsizei n, const GLuint *ids); /* 660 */ GLboolean APIENTRY (*IsQueryARB)(GLuint id); /* 661 */ void APIENTRY (*BeginQueryARB)(GLenum target, GLuint id); /* 662 */ void APIENTRY (*EndQueryARB)(GLenum target); /* 663 */ void APIENTRY (*GetQueryivARB)(GLenum target, GLenum pname, GLint *params); /* 664 */ void APIENTRY (*GetQueryObjectivARB)(GLuint id, GLenum pname, GLint *params); /* 665 */ void APIENTRY (*GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint *params); /* 666 */ void APIENTRY (*DeleteObjectARB)(GLhandleARB obj); /* 667 */ GLhandleARB APIENTRY (*GetHandleARB)(GLenum pname); /* 668 */ void APIENTRY (*DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj); /* 669 */ GLhandleARB APIENTRY (*CreateShaderObjectARB)(GLenum shaderType); /* 670 */ void APIENTRY (*ShaderSourceARB)(GLhandleARB shaderObj, GLsizei count, const GLcharARB * *string, const GLint *length); /* 671 */ void APIENTRY (*CompileShaderARB)(GLhandleARB shaderObj); /* 672 */ GLhandleARB APIENTRY (*CreateProgramObjectARB)(void); /* 673 */ void APIENTRY (*AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj); /* 674 */ void APIENTRY (*LinkProgramARB)(GLhandleARB programObj); /* 675 */ void APIENTRY (*UseProgramObjectARB)(GLhandleARB programObj); /* 676 */ void APIENTRY (*ValidateProgramARB)(GLhandleARB programObj); /* 677 */ void APIENTRY (*Uniform1fARB)(GLint location, GLfloat v0); /* 678 */ void APIENTRY (*Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1); /* 679 */ void APIENTRY (*Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); /* 680 */ void APIENTRY (*Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); /* 681 */ void APIENTRY (*Uniform1iARB)(GLint location, GLint v0); /* 682 */ void APIENTRY (*Uniform2iARB)(GLint location, GLint v0, GLint v1); /* 683 */ void APIENTRY (*Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2); /* 684 */ void APIENTRY (*Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); /* 685 */ void APIENTRY (*Uniform1fvARB)(GLint location, GLsizei count, const GLfloat *value); /* 686 */ void APIENTRY (*Uniform2fvARB)(GLint location, GLsizei count, const GLfloat *value); /* 687 */ void APIENTRY (*Uniform3fvARB)(GLint location, GLsizei count, const GLfloat *value); /* 688 */ void APIENTRY (*Uniform4fvARB)(GLint location, GLsizei count, const GLfloat *value); /* 689 */ void APIENTRY (*Uniform1ivARB)(GLint location, GLsizei count, const GLint *value); /* 690 */ void APIENTRY (*Uniform2ivARB)(GLint location, GLsizei count, const GLint *value); /* 691 */ void APIENTRY (*Uniform3ivARB)(GLint location, GLsizei count, const GLint *value); /* 692 */ void APIENTRY (*Uniform4ivARB)(GLint location, GLsizei count, const GLint *value); /* 693 */ void APIENTRY (*UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 694 */ void APIENTRY (*UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 695 */ void APIENTRY (*UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 696 */ void APIENTRY (*GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat *params); /* 697 */ void APIENTRY (*GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint *params); /* 698 */ void APIENTRY (*GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); /* 699 */ void APIENTRY (*GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); /* 700 */ GLint APIENTRY (*GetUniformLocationARB)(GLhandleARB programObj, const GLcharARB *name); /* 701 */ void APIENTRY (*GetActiveUniformARB)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); /* 702 */ void APIENTRY (*GetUniformfvARB)(GLhandleARB programObj, GLint location, GLfloat *params); /* 703 */ void APIENTRY (*GetUniformivARB)(GLhandleARB programObj, GLint location, GLint *params); /* 704 */ void APIENTRY (*GetShaderSourceARB)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); /* 705 */ void APIENTRY (*BindAttribLocationARB)(GLhandleARB programObj, GLuint index, const GLcharARB *name); /* 706 */ void APIENTRY (*GetActiveAttribARB)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); /* 707 */ GLint APIENTRY (*GetAttribLocationARB)(GLhandleARB programObj, const GLcharARB *name); /* 708 */ void APIENTRY (*DrawBuffersARB)(GLsizei n, const GLenum *bufs); /* 709 */ void APIENTRY (*BlendColorEXT)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); /* 710 */ void APIENTRY (*PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 711 */ void APIENTRY (*TexImage3DEXT)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); /* 712 */ void APIENTRY (*TexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); /* 713 */ void APIENTRY (*GetTexFilterFuncSGIS)(GLenum target, GLenum filter, GLfloat *weights); /* 714 */ void APIENTRY (*TexFilterFuncSGIS)(GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); /* 715 */ void APIENTRY (*TexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); /* 716 */ void APIENTRY (*TexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); /* 717 */ void APIENTRY (*CopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); /* 718 */ void APIENTRY (*CopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); /* 719 */ void APIENTRY (*CopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); /* 720 */ void APIENTRY (*CopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 721 */ void APIENTRY (*CopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 722 */ void APIENTRY (*GetHistogramEXT)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values); /* 723 */ void APIENTRY (*GetHistogramParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); /* 724 */ void APIENTRY (*GetHistogramParameterivEXT)(GLenum target, GLenum pname, GLint *params); /* 725 */ void APIENTRY (*GetMinmaxEXT)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values); /* 726 */ void APIENTRY (*GetMinmaxParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); /* 727 */ void APIENTRY (*GetMinmaxParameterivEXT)(GLenum target, GLenum pname, GLint *params); /* 728 */ void APIENTRY (*HistogramEXT)(GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink); /* 729 */ void APIENTRY (*MinmaxEXT)(GLenum target, GLenum internalformat, GLboolean32 sink); /* 730 */ void APIENTRY (*ResetHistogramEXT)(GLenum target); /* 731 */ void APIENTRY (*ResetMinmaxEXT)(GLenum target); /* 732 */ void APIENTRY (*ConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); /* 733 */ void APIENTRY (*ConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); /* 734 */ void APIENTRY (*ConvolutionParameterfEXT)(GLenum target, GLenum pname, GLfloat params); /* 735 */ void APIENTRY (*ConvolutionParameterfvEXT)(GLenum target, GLenum pname, const GLfloat *params); /* 736 */ void APIENTRY (*ConvolutionParameteriEXT)(GLenum target, GLenum pname, GLint params); /* 737 */ void APIENTRY (*ConvolutionParameterivEXT)(GLenum target, GLenum pname, const GLint *params); /* 738 */ void APIENTRY (*CopyConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 739 */ void APIENTRY (*CopyConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); /* 740 */ void APIENTRY (*GetConvolutionFilterEXT)(GLenum target, GLenum format, GLenum type, void *image); /* 741 */ void APIENTRY (*GetConvolutionParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); /* 742 */ void APIENTRY (*GetConvolutionParameterivEXT)(GLenum target, GLenum pname, GLint *params); /* 743 */ void APIENTRY (*GetSeparableFilterEXT)(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); /* 744 */ void APIENTRY (*SeparableFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); /* 745 */ void APIENTRY (*ColorTableSGI)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); /* 746 */ void APIENTRY (*ColorTableParameterfvSGI)(GLenum target, GLenum pname, const GLfloat *params); /* 747 */ void APIENTRY (*ColorTableParameterivSGI)(GLenum target, GLenum pname, const GLint *params); /* 748 */ void APIENTRY (*CopyColorTableSGI)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 749 */ void APIENTRY (*GetColorTableSGI)(GLenum target, GLenum format, GLenum type, void *table); /* 750 */ void APIENTRY (*GetColorTableParameterfvSGI)(GLenum target, GLenum pname, GLfloat *params); /* 751 */ void APIENTRY (*GetColorTableParameterivSGI)(GLenum target, GLenum pname, GLint *params); /* 752 */ void APIENTRY (*PixelTexGenSGIX)(GLenum mode); /* 753 */ void APIENTRY (*PixelTexGenParameteriSGIS)(GLenum pname, GLint param); /* 754 */ void APIENTRY (*PixelTexGenParameterivSGIS)(GLenum pname, const GLint *params); /* 755 */ void APIENTRY (*PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param); /* 756 */ void APIENTRY (*PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat *params); /* 757 */ void APIENTRY (*GetPixelTexGenParameterivSGIS)(GLenum pname, GLint *params); /* 758 */ void APIENTRY (*GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat *params); /* 759 */ void APIENTRY (*TexImage4DSGIS)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels); /* 760 */ void APIENTRY (*TexSubImage4DSGIS)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels); /* 761 */ GLboolean APIENTRY (*AreTexturesResidentEXT)(GLsizei n, const GLuint *textures, GLboolean *residences); /* 762 */ void APIENTRY (*BindTextureEXT)(GLenum target, GLuint texture); /* 763 */ void APIENTRY (*DeleteTexturesEXT)(GLsizei n, const GLuint *textures); /* 764 */ void APIENTRY (*GenTexturesEXT)(GLsizei n, GLuint *textures); /* 765 */ GLboolean APIENTRY (*IsTextureEXT)(GLuint texture); /* 766 */ void APIENTRY (*PrioritizeTexturesEXT)(GLsizei n, const GLuint *textures, const GLclampf *priorities); /* 767 */ void APIENTRY (*DetailTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat *points); /* 768 */ void APIENTRY (*GetDetailTexFuncSGIS)(GLenum target, GLfloat *points); /* 769 */ void APIENTRY (*SharpenTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat *points); /* 770 */ void APIENTRY (*GetSharpenTexFuncSGIS)(GLenum target, GLfloat *points); /* 771 */ void APIENTRY (*SampleMaskSGIS)(GLclampf value, GLboolean32 invert); /* 772 */ void APIENTRY (*SamplePatternSGIS)(GLenum pattern); /* 773 */ void APIENTRY (*ArrayElementEXT)(GLint i); /* 774 */ void APIENTRY (*ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); /* 775 */ void APIENTRY (*DrawArraysEXT)(GLenum mode, GLint first, GLsizei count); /* 776 */ void APIENTRY (*EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean *pointer); /* 777 */ void APIENTRY (*GetPointervEXT)(GLenum pname, void * *params); /* 778 */ void APIENTRY (*IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const void *pointer); /* 779 */ void APIENTRY (*NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const void *pointer); /* 780 */ void APIENTRY (*TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); /* 781 */ void APIENTRY (*VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); /* 782 */ void APIENTRY (*BlendEquationEXT)(GLenum mode); /* 783 */ void APIENTRY (*SpriteParameterfSGIX)(GLenum pname, GLfloat param); /* 784 */ void APIENTRY (*SpriteParameterfvSGIX)(GLenum pname, const GLfloat *params); /* 785 */ void APIENTRY (*SpriteParameteriSGIX)(GLenum pname, GLint param); /* 786 */ void APIENTRY (*SpriteParameterivSGIX)(GLenum pname, const GLint *params); /* 787 */ void APIENTRY (*PointParameterfEXT)(GLenum pname, GLfloat param); /* 788 */ void APIENTRY (*PointParameterfvEXT)(GLenum pname, const GLfloat *params); /* 789 */ void APIENTRY (*PointParameterfSGIS)(GLenum pname, GLfloat param); /* 790 */ void APIENTRY (*PointParameterfvSGIS)(GLenum pname, const GLfloat *params); /* 791 */ GLint APIENTRY (*GetInstrumentsSGIX)(void); /* 792 */ void APIENTRY (*InstrumentsBufferSGIX)(GLsizei size, GLint *buffer); /* 793 */ GLint APIENTRY (*PollInstrumentsSGIX)(GLint *marker_p); /* 794 */ void APIENTRY (*ReadInstrumentsSGIX)(GLint marker); /* 795 */ void APIENTRY (*StartInstrumentsSGIX)(void); /* 796 */ void APIENTRY (*StopInstrumentsSGIX)(GLint marker); /* 797 */ void APIENTRY (*FrameZoomSGIX)(GLint factor); /* 798 */ void APIENTRY (*TagSampleBufferSGIX)(void); /* 799 */ void APIENTRY (*DeformationMap3dSGIX)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); /* 800 */ void APIENTRY (*DeformationMap3fSGIX)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); /* 801 */ void APIENTRY (*DeformSGIX)(GLbitfield mask); /* 802 */ void APIENTRY (*LoadIdentityDeformationMapSGIX)(GLbitfield mask); /* 803 */ void APIENTRY (*ReferencePlaneSGIX)(const GLdouble *equation); /* 804 */ void APIENTRY (*FlushRasterSGIX)(void); /* 805 */ void APIENTRY (*FogFuncSGIS)(GLsizei n, const GLfloat *points); /* 806 */ void APIENTRY (*GetFogFuncSGIS)(GLfloat *points); /* 807 */ void APIENTRY (*ImageTransformParameteriHP)(GLenum target, GLenum pname, GLint param); /* 808 */ void APIENTRY (*ImageTransformParameterfHP)(GLenum target, GLenum pname, GLfloat param); /* 809 */ void APIENTRY (*ImageTransformParameterivHP)(GLenum target, GLenum pname, const GLint *params); /* 810 */ void APIENTRY (*ImageTransformParameterfvHP)(GLenum target, GLenum pname, const GLfloat *params); /* 811 */ void APIENTRY (*GetImageTransformParameterivHP)(GLenum target, GLenum pname, GLint *params); /* 812 */ void APIENTRY (*GetImageTransformParameterfvHP)(GLenum target, GLenum pname, GLfloat *params); /* 813 */ void APIENTRY (*ColorSubTableEXT)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); /* 814 */ void APIENTRY (*CopyColorSubTableEXT)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); /* 815 */ void APIENTRY (*HintPGI)(GLenum target, GLint mode); /* 816 */ void APIENTRY (*ColorTableEXT)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table); /* 817 */ void APIENTRY (*GetColorTableEXT)(GLenum target, GLenum format, GLenum type, void *data); /* 818 */ void APIENTRY (*GetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint *params); /* 819 */ void APIENTRY (*GetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); /* 820 */ void APIENTRY (*GetListParameterfvSGIX)(GLuint list, GLenum pname, GLfloat *params); /* 821 */ void APIENTRY (*GetListParameterivSGIX)(GLuint list, GLenum pname, GLint *params); /* 822 */ void APIENTRY (*ListParameterfSGIX)(GLuint list, GLenum pname, GLfloat param); /* 823 */ void APIENTRY (*ListParameterfvSGIX)(GLuint list, GLenum pname, const GLfloat *params); /* 824 */ void APIENTRY (*ListParameteriSGIX)(GLuint list, GLenum pname, GLint param); /* 825 */ void APIENTRY (*ListParameterivSGIX)(GLuint list, GLenum pname, const GLint *params); /* 826 */ void APIENTRY (*IndexMaterialEXT)(GLenum face, GLenum mode); /* 827 */ void APIENTRY (*IndexFuncEXT)(GLenum func, GLclampf ref); /* 828 */ void APIENTRY (*LockArraysEXT)(GLint first, GLsizei count); /* 829 */ void APIENTRY (*UnlockArraysEXT)(void); /* 830 */ void APIENTRY (*CullParameterdvEXT)(GLenum pname, GLdouble *params); /* 831 */ void APIENTRY (*CullParameterfvEXT)(GLenum pname, GLfloat *params); /* 832 */ void APIENTRY (*FragmentColorMaterialSGIX)(GLenum face, GLenum mode); /* 833 */ void APIENTRY (*FragmentLightfSGIX)(GLenum light, GLenum pname, GLfloat param); /* 834 */ void APIENTRY (*FragmentLightfvSGIX)(GLenum light, GLenum pname, const GLfloat *params); /* 835 */ void APIENTRY (*FragmentLightiSGIX)(GLenum light, GLenum pname, GLint param); /* 836 */ void APIENTRY (*FragmentLightivSGIX)(GLenum light, GLenum pname, const GLint *params); /* 837 */ void APIENTRY (*FragmentLightModelfSGIX)(GLenum pname, GLfloat param); /* 838 */ void APIENTRY (*FragmentLightModelfvSGIX)(GLenum pname, const GLfloat *params); /* 839 */ void APIENTRY (*FragmentLightModeliSGIX)(GLenum pname, GLint param); /* 840 */ void APIENTRY (*FragmentLightModelivSGIX)(GLenum pname, const GLint *params); /* 841 */ void APIENTRY (*FragmentMaterialfSGIX)(GLenum face, GLenum pname, GLfloat param); /* 842 */ void APIENTRY (*FragmentMaterialfvSGIX)(GLenum face, GLenum pname, const GLfloat *params); /* 843 */ void APIENTRY (*FragmentMaterialiSGIX)(GLenum face, GLenum pname, GLint param); /* 844 */ void APIENTRY (*FragmentMaterialivSGIX)(GLenum face, GLenum pname, const GLint *params); /* 845 */ void APIENTRY (*GetFragmentLightfvSGIX)(GLenum light, GLenum pname, GLfloat *params); /* 846 */ void APIENTRY (*GetFragmentLightivSGIX)(GLenum light, GLenum pname, GLint *params); /* 847 */ void APIENTRY (*GetFragmentMaterialfvSGIX)(GLenum face, GLenum pname, GLfloat *params); /* 848 */ void APIENTRY (*GetFragmentMaterialivSGIX)(GLenum face, GLenum pname, GLint *params); /* 849 */ void APIENTRY (*LightEnviSGIX)(GLenum pname, GLint param); /* 850 */ void APIENTRY (*DrawRangeElementsEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); /* 851 */ void APIENTRY (*ApplyTextureEXT)(GLenum mode); /* 852 */ void APIENTRY (*TextureLightEXT)(GLenum pname); /* 853 */ void APIENTRY (*TextureMaterialEXT)(GLenum face, GLenum mode); /* 854 */ void APIENTRY (*AsyncMarkerSGIX)(GLuint marker); /* 855 */ GLint APIENTRY (*FinishAsyncSGIX)(GLuint *markerp); /* 856 */ GLint APIENTRY (*PollAsyncSGIX)(GLuint *markerp); /* 857 */ GLuint APIENTRY (*GenAsyncMarkersSGIX)(GLsizei range); /* 858 */ void APIENTRY (*DeleteAsyncMarkersSGIX)(GLuint marker, GLsizei range); /* 859 */ GLboolean APIENTRY (*IsAsyncMarkerSGIX)(GLuint marker); /* 860 */ void APIENTRY (*VertexPointervINTEL)(GLint size, GLenum type, const void * *pointer); /* 861 */ void APIENTRY (*NormalPointervINTEL)(GLenum type, const void * *pointer); /* 862 */ void APIENTRY (*ColorPointervINTEL)(GLint size, GLenum type, const void * *pointer); /* 863 */ void APIENTRY (*TexCoordPointervINTEL)(GLint size, GLenum type, const void * *pointer); /* 864 */ void APIENTRY (*PixelTransformParameteriEXT)(GLenum target, GLenum pname, GLint param); /* 865 */ void APIENTRY (*PixelTransformParameterfEXT)(GLenum target, GLenum pname, GLfloat param); /* 866 */ void APIENTRY (*PixelTransformParameterivEXT)(GLenum target, GLenum pname, const GLint *params); /* 867 */ void APIENTRY (*PixelTransformParameterfvEXT)(GLenum target, GLenum pname, const GLfloat *params); /* 868 */ void APIENTRY (*SecondaryColor3bEXT)(GLbyte32 red, GLbyte32 green, GLbyte32 blue); /* 869 */ void APIENTRY (*SecondaryColor3bvEXT)(const GLbyte *v); /* 870 */ void APIENTRY (*SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue); /* 871 */ void APIENTRY (*SecondaryColor3dvEXT)(const GLdouble *v); /* 872 */ void APIENTRY (*SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); /* 873 */ void APIENTRY (*SecondaryColor3fvEXT)(const GLfloat *v); /* 874 */ void APIENTRY (*SecondaryColor3iEXT)(GLint red, GLint green, GLint blue); /* 875 */ void APIENTRY (*SecondaryColor3ivEXT)(const GLint *v); /* 876 */ void APIENTRY (*SecondaryColor3sEXT)(GLshort32 red, GLshort32 green, GLshort32 blue); /* 877 */ void APIENTRY (*SecondaryColor3svEXT)(const GLshort *v); /* 878 */ void APIENTRY (*SecondaryColor3ubEXT)(GLubyte32 red, GLubyte32 green, GLubyte32 blue); /* 879 */ void APIENTRY (*SecondaryColor3ubvEXT)(const GLubyte *v); /* 880 */ void APIENTRY (*SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue); /* 881 */ void APIENTRY (*SecondaryColor3uivEXT)(const GLuint *v); /* 882 */ void APIENTRY (*SecondaryColor3usEXT)(GLushort32 red, GLushort32 green, GLushort32 blue); /* 883 */ void APIENTRY (*SecondaryColor3usvEXT)(const GLushort *v); /* 884 */ void APIENTRY (*SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const void *pointer); /* 885 */ void APIENTRY (*TextureNormalEXT)(GLenum mode); /* 886 */ void APIENTRY (*MultiDrawArraysEXT)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); /* 887 */ void APIENTRY (*MultiDrawElementsEXT)(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount); /* 888 */ void APIENTRY (*FogCoordfEXT)(GLfloat coord); /* 889 */ void APIENTRY (*FogCoordfvEXT)(const GLfloat *coord); /* 890 */ void APIENTRY (*FogCoorddEXT)(GLdouble coord); /* 891 */ void APIENTRY (*FogCoorddvEXT)(const GLdouble *coord); /* 892 */ void APIENTRY (*FogCoordPointerEXT)(GLenum type, GLsizei stride, const void *pointer); /* 893 */ void APIENTRY (*Tangent3bEXT)(GLbyte32 tx, GLbyte32 ty, GLbyte32 tz); /* 894 */ void APIENTRY (*Tangent3bvEXT)(const GLbyte *v); /* 895 */ void APIENTRY (*Tangent3dEXT)(GLdouble tx, GLdouble ty, GLdouble tz); /* 896 */ void APIENTRY (*Tangent3dvEXT)(const GLdouble *v); /* 897 */ void APIENTRY (*Tangent3fEXT)(GLfloat tx, GLfloat ty, GLfloat tz); /* 898 */ void APIENTRY (*Tangent3fvEXT)(const GLfloat *v); /* 899 */ void APIENTRY (*Tangent3iEXT)(GLint tx, GLint ty, GLint tz); /* 900 */ void APIENTRY (*Tangent3ivEXT)(const GLint *v); /* 901 */ void APIENTRY (*Tangent3sEXT)(GLshort32 tx, GLshort32 ty, GLshort32 tz); /* 902 */ void APIENTRY (*Tangent3svEXT)(const GLshort *v); /* 903 */ void APIENTRY (*Binormal3bEXT)(GLbyte32 bx, GLbyte32 by, GLbyte32 bz); /* 904 */ void APIENTRY (*Binormal3bvEXT)(const GLbyte *v); /* 905 */ void APIENTRY (*Binormal3dEXT)(GLdouble bx, GLdouble by, GLdouble bz); /* 906 */ void APIENTRY (*Binormal3dvEXT)(const GLdouble *v); /* 907 */ void APIENTRY (*Binormal3fEXT)(GLfloat bx, GLfloat by, GLfloat bz); /* 908 */ void APIENTRY (*Binormal3fvEXT)(const GLfloat *v); /* 909 */ void APIENTRY (*Binormal3iEXT)(GLint bx, GLint by, GLint bz); /* 910 */ void APIENTRY (*Binormal3ivEXT)(const GLint *v); /* 911 */ void APIENTRY (*Binormal3sEXT)(GLshort32 bx, GLshort32 by, GLshort32 bz); /* 912 */ void APIENTRY (*Binormal3svEXT)(const GLshort *v); /* 913 */ void APIENTRY (*TangentPointerEXT)(GLenum type, GLsizei stride, const void *pointer); /* 914 */ void APIENTRY (*BinormalPointerEXT)(GLenum type, GLsizei stride, const void *pointer); /* 915 */ void APIENTRY (*FinishTextureSUNX)(void); /* 916 */ void APIENTRY (*GlobalAlphaFactorbSUN)(GLbyte32 factor); /* 917 */ void APIENTRY (*GlobalAlphaFactorsSUN)(GLshort32 factor); /* 918 */ void APIENTRY (*GlobalAlphaFactoriSUN)(GLint factor); /* 919 */ void APIENTRY (*GlobalAlphaFactorfSUN)(GLfloat factor); /* 920 */ void APIENTRY (*GlobalAlphaFactordSUN)(GLdouble factor); /* 921 */ void APIENTRY (*GlobalAlphaFactorubSUN)(GLubyte32 factor); /* 922 */ void APIENTRY (*GlobalAlphaFactorusSUN)(GLushort32 factor); /* 923 */ void APIENTRY (*GlobalAlphaFactoruiSUN)(GLuint factor); /* 924 */ void APIENTRY (*ReplacementCodeuiSUN)(GLuint code); /* 925 */ void APIENTRY (*ReplacementCodeusSUN)(GLushort32 code); /* 926 */ void APIENTRY (*ReplacementCodeubSUN)(GLubyte32 code); /* 927 */ void APIENTRY (*ReplacementCodeuivSUN)(const GLuint *code); /* 928 */ void APIENTRY (*ReplacementCodeusvSUN)(const GLushort *code); /* 929 */ void APIENTRY (*ReplacementCodeubvSUN)(const GLubyte *code); /* 930 */ void APIENTRY (*ReplacementCodePointerSUN)(GLenum type, GLsizei stride, const void * *pointer); /* 931 */ void APIENTRY (*Color4ubVertex2fSUN)(GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y); /* 932 */ void APIENTRY (*Color4ubVertex2fvSUN)(const GLubyte *c, const GLfloat *v); /* 933 */ void APIENTRY (*Color4ubVertex3fSUN)(GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z); /* 934 */ void APIENTRY (*Color4ubVertex3fvSUN)(const GLubyte *c, const GLfloat *v); /* 935 */ void APIENTRY (*Color3fVertex3fSUN)(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); /* 936 */ void APIENTRY (*Color3fVertex3fvSUN)(const GLfloat *c, const GLfloat *v); /* 937 */ void APIENTRY (*Normal3fVertex3fSUN)(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 938 */ void APIENTRY (*Normal3fVertex3fvSUN)(const GLfloat *n, const GLfloat *v); /* 939 */ void APIENTRY (*Color4fNormal3fVertex3fSUN)(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 940 */ void APIENTRY (*Color4fNormal3fVertex3fvSUN)(const GLfloat *c, const GLfloat *n, const GLfloat *v); /* 941 */ void APIENTRY (*TexCoord2fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); /* 942 */ void APIENTRY (*TexCoord2fVertex3fvSUN)(const GLfloat *tc, const GLfloat *v); /* 943 */ void APIENTRY (*TexCoord4fVertex4fSUN)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 944 */ void APIENTRY (*TexCoord4fVertex4fvSUN)(const GLfloat *tc, const GLfloat *v); /* 945 */ void APIENTRY (*TexCoord2fColor4ubVertex3fSUN)(GLfloat s, GLfloat t, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z); /* 946 */ void APIENTRY (*TexCoord2fColor4ubVertex3fvSUN)(const GLfloat *tc, const GLubyte *c, const GLfloat *v); /* 947 */ void APIENTRY (*TexCoord2fColor3fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); /* 948 */ void APIENTRY (*TexCoord2fColor3fVertex3fvSUN)(const GLfloat *tc, const GLfloat *c, const GLfloat *v); /* 949 */ void APIENTRY (*TexCoord2fNormal3fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 950 */ void APIENTRY (*TexCoord2fNormal3fVertex3fvSUN)(const GLfloat *tc, const GLfloat *n, const GLfloat *v); /* 951 */ void APIENTRY (*TexCoord2fColor4fNormal3fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 952 */ void APIENTRY (*TexCoord2fColor4fNormal3fVertex3fvSUN)(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); /* 953 */ void APIENTRY (*TexCoord4fColor4fNormal3fVertex4fSUN)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 954 */ void APIENTRY (*TexCoord4fColor4fNormal3fVertex4fvSUN)(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); /* 955 */ void APIENTRY (*ReplacementCodeuiVertex3fSUN)(GLuint rc, GLfloat x, GLfloat y, GLfloat z); /* 956 */ void APIENTRY (*ReplacementCodeuiVertex3fvSUN)(const GLuint *rc, const GLfloat *v); /* 957 */ void APIENTRY (*ReplacementCodeuiColor4ubVertex3fSUN)(GLuint rc, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z); /* 958 */ void APIENTRY (*ReplacementCodeuiColor4ubVertex3fvSUN)(const GLuint *rc, const GLubyte *c, const GLfloat *v); /* 959 */ void APIENTRY (*ReplacementCodeuiColor3fVertex3fSUN)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); /* 960 */ void APIENTRY (*ReplacementCodeuiColor3fVertex3fvSUN)(const GLuint *rc, const GLfloat *c, const GLfloat *v); /* 961 */ void APIENTRY (*ReplacementCodeuiNormal3fVertex3fSUN)(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 962 */ void APIENTRY (*ReplacementCodeuiNormal3fVertex3fvSUN)(const GLuint *rc, const GLfloat *n, const GLfloat *v); /* 963 */ void APIENTRY (*ReplacementCodeuiColor4fNormal3fVertex3fSUN)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 964 */ void APIENTRY (*ReplacementCodeuiColor4fNormal3fVertex3fvSUN)(const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); /* 965 */ void APIENTRY (*ReplacementCodeuiTexCoord2fVertex3fSUN)(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); /* 966 */ void APIENTRY (*ReplacementCodeuiTexCoord2fVertex3fvSUN)(const GLuint *rc, const GLfloat *tc, const GLfloat *v); /* 967 */ void APIENTRY (*ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN)(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 968 */ void APIENTRY (*ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN)(const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); /* 969 */ void APIENTRY (*ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN)(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); /* 970 */ void APIENTRY (*ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN)(const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); /* 971 */ void APIENTRY (*BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 972 */ void APIENTRY (*BlendFuncSeparateINGR)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 973 */ void APIENTRY (*VertexWeightfEXT)(GLfloat weight); /* 974 */ void APIENTRY (*VertexWeightfvEXT)(const GLfloat *weight); /* 975 */ void APIENTRY (*VertexWeightPointerEXT)(GLint size, GLenum type, GLsizei stride, const void *pointer); /* 976 */ void APIENTRY (*FlushVertexArrayRangeNV)(void); /* 977 */ void APIENTRY (*VertexArrayRangeNV)(GLsizei length, const void *pointer); /* 978 */ void APIENTRY (*CombinerParameterfvNV)(GLenum pname, const GLfloat *params); /* 979 */ void APIENTRY (*CombinerParameterfNV)(GLenum pname, GLfloat param); /* 980 */ void APIENTRY (*CombinerParameterivNV)(GLenum pname, const GLint *params); /* 981 */ void APIENTRY (*CombinerParameteriNV)(GLenum pname, GLint param); /* 982 */ void APIENTRY (*CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 983 */ void APIENTRY (*CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean32 abDotProduct, GLboolean32 cdDotProduct, GLboolean32 muxSum); /* 984 */ void APIENTRY (*FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 985 */ void APIENTRY (*GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); /* 986 */ void APIENTRY (*GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); /* 987 */ void APIENTRY (*GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat *params); /* 988 */ void APIENTRY (*GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint *params); /* 989 */ void APIENTRY (*GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat *params); /* 990 */ void APIENTRY (*GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint *params); /* 991 */ void APIENTRY (*ResizeBuffersMESA)(void); /* 992 */ void APIENTRY (*WindowPos2dMESA)(GLdouble x, GLdouble y); /* 993 */ void APIENTRY (*WindowPos2dvMESA)(const GLdouble *v); /* 994 */ void APIENTRY (*WindowPos2fMESA)(GLfloat x, GLfloat y); /* 995 */ void APIENTRY (*WindowPos2fvMESA)(const GLfloat *v); /* 996 */ void APIENTRY (*WindowPos2iMESA)(GLint x, GLint y); /* 997 */ void APIENTRY (*WindowPos2ivMESA)(const GLint *v); /* 998 */ void APIENTRY (*WindowPos2sMESA)(GLshort32 x, GLshort32 y); /* 999 */ void APIENTRY (*WindowPos2svMESA)(const GLshort *v); /* 1000 */ void APIENTRY (*WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z); /* 1001 */ void APIENTRY (*WindowPos3dvMESA)(const GLdouble *v); /* 1002 */ void APIENTRY (*WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z); /* 1003 */ void APIENTRY (*WindowPos3fvMESA)(const GLfloat *v); /* 1004 */ void APIENTRY (*WindowPos3iMESA)(GLint x, GLint y, GLint z); /* 1005 */ void APIENTRY (*WindowPos3ivMESA)(const GLint *v); /* 1006 */ void APIENTRY (*WindowPos3sMESA)(GLshort32 x, GLshort32 y, GLshort32 z); /* 1007 */ void APIENTRY (*WindowPos3svMESA)(const GLshort *v); /* 1008 */ void APIENTRY (*WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 1009 */ void APIENTRY (*WindowPos4dvMESA)(const GLdouble *v); /* 1010 */ void APIENTRY (*WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 1011 */ void APIENTRY (*WindowPos4fvMESA)(const GLfloat *v); /* 1012 */ void APIENTRY (*WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 1013 */ void APIENTRY (*WindowPos4ivMESA)(const GLint *v); /* 1014 */ void APIENTRY (*WindowPos4sMESA)(GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); /* 1015 */ void APIENTRY (*WindowPos4svMESA)(const GLshort *v); /* 1016 */ void APIENTRY (*MultiModeDrawArraysIBM)(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); /* 1017 */ void APIENTRY (*MultiModeDrawElementsIBM)(const GLenum *mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount, GLint modestride); /* 1018 */ void APIENTRY (*ColorPointerListIBM)(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride); /* 1019 */ void APIENTRY (*SecondaryColorPointerListIBM)(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride); /* 1020 */ void APIENTRY (*EdgeFlagPointerListIBM)(GLint stride, const GLboolean * *pointer, GLint ptrstride); /* 1021 */ void APIENTRY (*FogCoordPointerListIBM)(GLenum type, GLint stride, const void * *pointer, GLint ptrstride); /* 1022 */ void APIENTRY (*IndexPointerListIBM)(GLenum type, GLint stride, const void * *pointer, GLint ptrstride); /* 1023 */ void APIENTRY (*NormalPointerListIBM)(GLenum type, GLint stride, const void * *pointer, GLint ptrstride); /* 1024 */ void APIENTRY (*TexCoordPointerListIBM)(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride); /* 1025 */ void APIENTRY (*VertexPointerListIBM)(GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride); /* 1026 */ void APIENTRY (*TbufferMask3DFX)(GLuint mask); /* 1027 */ void APIENTRY (*SampleMaskEXT)(GLclampf value, GLboolean32 invert); /* 1028 */ void APIENTRY (*SamplePatternEXT)(GLenum pattern); /* 1029 */ void APIENTRY (*TextureColorMaskSGIS)(GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha); /* 1030 */ void APIENTRY (*IglooInterfaceSGIX)(GLenum pname, const void *params); /* 1031 */ void APIENTRY (*DeleteFencesNV)(GLsizei n, const GLuint *fences); /* 1032 */ void APIENTRY (*GenFencesNV)(GLsizei n, GLuint *fences); /* 1033 */ GLboolean APIENTRY (*IsFenceNV)(GLuint fence); /* 1034 */ GLboolean APIENTRY (*TestFenceNV)(GLuint fence); /* 1035 */ void APIENTRY (*GetFenceivNV)(GLuint fence, GLenum pname, GLint *params); /* 1036 */ void APIENTRY (*FinishFenceNV)(GLuint fence); /* 1037 */ void APIENTRY (*SetFenceNV)(GLuint fence, GLenum condition); /* 1038 */ void APIENTRY (*MapControlPointsNV)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean32 packed, const void *points); /* 1039 */ void APIENTRY (*MapParameterivNV)(GLenum target, GLenum pname, const GLint *params); /* 1040 */ void APIENTRY (*MapParameterfvNV)(GLenum target, GLenum pname, const GLfloat *params); /* 1041 */ void APIENTRY (*GetMapControlPointsNV)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean32 packed, void *points); /* 1042 */ void APIENTRY (*GetMapParameterivNV)(GLenum target, GLenum pname, GLint *params); /* 1043 */ void APIENTRY (*GetMapParameterfvNV)(GLenum target, GLenum pname, GLfloat *params); /* 1044 */ void APIENTRY (*GetMapAttribParameterivNV)(GLenum target, GLuint index, GLenum pname, GLint *params); /* 1045 */ void APIENTRY (*GetMapAttribParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat *params); /* 1046 */ void APIENTRY (*EvalMapsNV)(GLenum target, GLenum mode); /* 1047 */ void APIENTRY (*CombinerStageParameterfvNV)(GLenum stage, GLenum pname, const GLfloat *params); /* 1048 */ void APIENTRY (*GetCombinerStageParameterfvNV)(GLenum stage, GLenum pname, GLfloat *params); /* 1049 */ GLboolean APIENTRY (*AreProgramsResidentNV)(GLsizei n, const GLuint *programs, GLboolean *residences); /* 1050 */ void APIENTRY (*BindProgramNV)(GLenum target, GLuint id); /* 1051 */ void APIENTRY (*DeleteProgramsNV)(GLsizei n, const GLuint *programs); /* 1052 */ void APIENTRY (*ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat *params); /* 1053 */ void APIENTRY (*GenProgramsNV)(GLsizei n, GLuint *programs); /* 1054 */ void APIENTRY (*GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble *params); /* 1055 */ void APIENTRY (*GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat *params); /* 1056 */ void APIENTRY (*GetProgramivNV)(GLuint id, GLenum pname, GLint *params); /* 1057 */ void APIENTRY (*GetProgramStringNV)(GLuint id, GLenum pname, GLubyte *program); /* 1058 */ void APIENTRY (*GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint *params); /* 1059 */ void APIENTRY (*GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble *params); /* 1060 */ void APIENTRY (*GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat *params); /* 1061 */ void APIENTRY (*GetVertexAttribivNV)(GLuint index, GLenum pname, GLint *params); /* 1062 */ void APIENTRY (*GetVertexAttribPointervNV)(GLuint index, GLenum pname, void * *pointer); /* 1063 */ GLboolean APIENTRY (*IsProgramNV)(GLuint id); /* 1064 */ void APIENTRY (*LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte *program); /* 1065 */ void APIENTRY (*ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 1066 */ void APIENTRY (*ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble *v); /* 1067 */ void APIENTRY (*ProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 1068 */ void APIENTRY (*ProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat *v); /* 1069 */ void APIENTRY (*ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei count, const GLdouble *v); /* 1070 */ void APIENTRY (*ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei count, const GLfloat *v); /* 1071 */ void APIENTRY (*RequestResidentProgramsNV)(GLsizei n, const GLuint *programs); /* 1072 */ void APIENTRY (*TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 1073 */ void APIENTRY (*VertexAttribPointerNV)(GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer); /* 1074 */ void APIENTRY (*VertexAttrib1dNV)(GLuint index, GLdouble x); /* 1075 */ void APIENTRY (*VertexAttrib1dvNV)(GLuint index, const GLdouble *v); /* 1076 */ void APIENTRY (*VertexAttrib1fNV)(GLuint index, GLfloat x); /* 1077 */ void APIENTRY (*VertexAttrib1fvNV)(GLuint index, const GLfloat *v); /* 1078 */ void APIENTRY (*VertexAttrib1sNV)(GLuint index, GLshort32 x); /* 1079 */ void APIENTRY (*VertexAttrib1svNV)(GLuint index, const GLshort *v); /* 1080 */ void APIENTRY (*VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 1081 */ void APIENTRY (*VertexAttrib2dvNV)(GLuint index, const GLdouble *v); /* 1082 */ void APIENTRY (*VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 1083 */ void APIENTRY (*VertexAttrib2fvNV)(GLuint index, const GLfloat *v); /* 1084 */ void APIENTRY (*VertexAttrib2sNV)(GLuint index, GLshort32 x, GLshort32 y); /* 1085 */ void APIENTRY (*VertexAttrib2svNV)(GLuint index, const GLshort *v); /* 1086 */ void APIENTRY (*VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 1087 */ void APIENTRY (*VertexAttrib3dvNV)(GLuint index, const GLdouble *v); /* 1088 */ void APIENTRY (*VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 1089 */ void APIENTRY (*VertexAttrib3fvNV)(GLuint index, const GLfloat *v); /* 1090 */ void APIENTRY (*VertexAttrib3sNV)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z); /* 1091 */ void APIENTRY (*VertexAttrib3svNV)(GLuint index, const GLshort *v); /* 1092 */ void APIENTRY (*VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 1093 */ void APIENTRY (*VertexAttrib4dvNV)(GLuint index, const GLdouble *v); /* 1094 */ void APIENTRY (*VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 1095 */ void APIENTRY (*VertexAttrib4fvNV)(GLuint index, const GLfloat *v); /* 1096 */ void APIENTRY (*VertexAttrib4sNV)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); /* 1097 */ void APIENTRY (*VertexAttrib4svNV)(GLuint index, const GLshort *v); /* 1098 */ void APIENTRY (*VertexAttrib4ubNV)(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w); /* 1099 */ void APIENTRY (*VertexAttrib4ubvNV)(GLuint index, const GLubyte *v); /* 1100 */ void APIENTRY (*VertexAttribs1dvNV)(GLuint index, GLsizei count, const GLdouble *v); /* 1101 */ void APIENTRY (*VertexAttribs1fvNV)(GLuint index, GLsizei count, const GLfloat *v); /* 1102 */ void APIENTRY (*VertexAttribs1svNV)(GLuint index, GLsizei count, const GLshort *v); /* 1103 */ void APIENTRY (*VertexAttribs2dvNV)(GLuint index, GLsizei count, const GLdouble *v); /* 1104 */ void APIENTRY (*VertexAttribs2fvNV)(GLuint index, GLsizei count, const GLfloat *v); /* 1105 */ void APIENTRY (*VertexAttribs2svNV)(GLuint index, GLsizei count, const GLshort *v); /* 1106 */ void APIENTRY (*VertexAttribs3dvNV)(GLuint index, GLsizei count, const GLdouble *v); /* 1107 */ void APIENTRY (*VertexAttribs3fvNV)(GLuint index, GLsizei count, const GLfloat *v); /* 1108 */ void APIENTRY (*VertexAttribs3svNV)(GLuint index, GLsizei count, const GLshort *v); /* 1109 */ void APIENTRY (*VertexAttribs4dvNV)(GLuint index, GLsizei count, const GLdouble *v); /* 1110 */ void APIENTRY (*VertexAttribs4fvNV)(GLuint index, GLsizei count, const GLfloat *v); /* 1111 */ void APIENTRY (*VertexAttribs4svNV)(GLuint index, GLsizei count, const GLshort *v); /* 1112 */ void APIENTRY (*VertexAttribs4ubvNV)(GLuint index, GLsizei count, const GLubyte *v); /* 1113 */ void APIENTRY (*TexBumpParameterivATI)(GLenum pname, const GLint *param); /* 1114 */ void APIENTRY (*TexBumpParameterfvATI)(GLenum pname, const GLfloat *param); /* 1115 */ void APIENTRY (*GetTexBumpParameterivATI)(GLenum pname, GLint *param); /* 1116 */ void APIENTRY (*GetTexBumpParameterfvATI)(GLenum pname, GLfloat *param); /* 1117 */ GLuint APIENTRY (*GenFragmentShadersATI)(GLuint range); /* 1118 */ void APIENTRY (*BindFragmentShaderATI)(GLuint id); /* 1119 */ void APIENTRY (*DeleteFragmentShaderATI)(GLuint id); /* 1120 */ void APIENTRY (*BeginFragmentShaderATI)(void); /* 1121 */ void APIENTRY (*EndFragmentShaderATI)(void); /* 1122 */ void APIENTRY (*PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); /* 1123 */ void APIENTRY (*SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); /* 1124 */ void APIENTRY (*ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 1125 */ void APIENTRY (*ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 1126 */ void APIENTRY (*ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 1127 */ void APIENTRY (*AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 1128 */ void APIENTRY (*AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 1129 */ void APIENTRY (*AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 1130 */ void APIENTRY (*SetFragmentShaderConstantATI)(GLuint dst, const GLfloat *value); /* 1131 */ void APIENTRY (*PNTrianglesiATI)(GLenum pname, GLint param); /* 1132 */ void APIENTRY (*PNTrianglesfATI)(GLenum pname, GLfloat param); /* 1133 */ GLuint APIENTRY (*NewObjectBufferATI)(GLsizei size, const void *pointer, GLenum usage); /* 1134 */ GLboolean APIENTRY (*IsObjectBufferATI)(GLuint buffer); /* 1135 */ void APIENTRY (*UpdateObjectBufferATI)(GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve); /* 1136 */ void APIENTRY (*GetObjectBufferfvATI)(GLuint buffer, GLenum pname, GLfloat *params); /* 1137 */ void APIENTRY (*GetObjectBufferivATI)(GLuint buffer, GLenum pname, GLint *params); /* 1138 */ void APIENTRY (*FreeObjectBufferATI)(GLuint buffer); /* 1139 */ void APIENTRY (*ArrayObjectATI)(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); /* 1140 */ void APIENTRY (*GetArrayObjectfvATI)(GLenum array, GLenum pname, GLfloat *params); /* 1141 */ void APIENTRY (*GetArrayObjectivATI)(GLenum array, GLenum pname, GLint *params); /* 1142 */ void APIENTRY (*VariantArrayObjectATI)(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); /* 1143 */ void APIENTRY (*GetVariantArrayObjectfvATI)(GLuint id, GLenum pname, GLfloat *params); /* 1144 */ void APIENTRY (*GetVariantArrayObjectivATI)(GLuint id, GLenum pname, GLint *params); /* 1145 */ void APIENTRY (*BeginVertexShaderEXT)(void); /* 1146 */ void APIENTRY (*EndVertexShaderEXT)(void); /* 1147 */ void APIENTRY (*BindVertexShaderEXT)(GLuint id); /* 1148 */ GLuint APIENTRY (*GenVertexShadersEXT)(GLuint range); /* 1149 */ void APIENTRY (*DeleteVertexShaderEXT)(GLuint id); /* 1150 */ void APIENTRY (*ShaderOp1EXT)(GLenum op, GLuint res, GLuint arg1); /* 1151 */ void APIENTRY (*ShaderOp2EXT)(GLenum op, GLuint res, GLuint arg1, GLuint arg2); /* 1152 */ void APIENTRY (*ShaderOp3EXT)(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); /* 1153 */ void APIENTRY (*SwizzleEXT)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); /* 1154 */ void APIENTRY (*WriteMaskEXT)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); /* 1155 */ void APIENTRY (*InsertComponentEXT)(GLuint res, GLuint src, GLuint num); /* 1156 */ void APIENTRY (*ExtractComponentEXT)(GLuint res, GLuint src, GLuint num); /* 1157 */ GLuint APIENTRY (*GenSymbolsEXT)(GLenum datatype, GLenum storagetype, GLenum range, GLuint components); /* 1158 */ void APIENTRY (*SetInvariantEXT)(GLuint id, GLenum type, const void *addr); /* 1159 */ void APIENTRY (*SetLocalConstantEXT)(GLuint id, GLenum type, const void *addr); /* 1160 */ void APIENTRY (*VariantbvEXT)(GLuint id, const GLbyte *addr); /* 1161 */ void APIENTRY (*VariantsvEXT)(GLuint id, const GLshort *addr); /* 1162 */ void APIENTRY (*VariantivEXT)(GLuint id, const GLint *addr); /* 1163 */ void APIENTRY (*VariantfvEXT)(GLuint id, const GLfloat *addr); /* 1164 */ void APIENTRY (*VariantdvEXT)(GLuint id, const GLdouble *addr); /* 1165 */ void APIENTRY (*VariantubvEXT)(GLuint id, const GLubyte *addr); /* 1166 */ void APIENTRY (*VariantusvEXT)(GLuint id, const GLushort *addr); /* 1167 */ void APIENTRY (*VariantuivEXT)(GLuint id, const GLuint *addr); /* 1168 */ void APIENTRY (*VariantPointerEXT)(GLuint id, GLenum type, GLuint stride, const void *addr); /* 1169 */ void APIENTRY (*EnableVariantClientStateEXT)(GLuint id); /* 1170 */ void APIENTRY (*DisableVariantClientStateEXT)(GLuint id); /* 1171 */ GLuint APIENTRY (*BindLightParameterEXT)(GLenum light, GLenum value); /* 1172 */ GLuint APIENTRY (*BindMaterialParameterEXT)(GLenum face, GLenum value); /* 1173 */ GLuint APIENTRY (*BindTexGenParameterEXT)(GLenum unit, GLenum coord, GLenum value); /* 1174 */ GLuint APIENTRY (*BindTextureUnitParameterEXT)(GLenum unit, GLenum value); /* 1175 */ GLuint APIENTRY (*BindParameterEXT)(GLenum value); /* 1176 */ GLboolean APIENTRY (*IsVariantEnabledEXT)(GLuint id, GLenum cap); /* 1177 */ void APIENTRY (*GetVariantBooleanvEXT)(GLuint id, GLenum value, GLboolean *data); /* 1178 */ void APIENTRY (*GetVariantIntegervEXT)(GLuint id, GLenum value, GLint *data); /* 1179 */ void APIENTRY (*GetVariantFloatvEXT)(GLuint id, GLenum value, GLfloat *data); /* 1180 */ void APIENTRY (*GetVariantPointervEXT)(GLuint id, GLenum value, void * *data); /* 1181 */ void APIENTRY (*GetInvariantBooleanvEXT)(GLuint id, GLenum value, GLboolean *data); /* 1182 */ void APIENTRY (*GetInvariantIntegervEXT)(GLuint id, GLenum value, GLint *data); /* 1183 */ void APIENTRY (*GetInvariantFloatvEXT)(GLuint id, GLenum value, GLfloat *data); /* 1184 */ void APIENTRY (*GetLocalConstantBooleanvEXT)(GLuint id, GLenum value, GLboolean *data); /* 1185 */ void APIENTRY (*GetLocalConstantIntegervEXT)(GLuint id, GLenum value, GLint *data); /* 1186 */ void APIENTRY (*GetLocalConstantFloatvEXT)(GLuint id, GLenum value, GLfloat *data); /* 1187 */ void APIENTRY (*VertexStream1sATI)(GLenum stream, GLshort32 x); /* 1188 */ void APIENTRY (*VertexStream1svATI)(GLenum stream, const GLshort *coords); /* 1189 */ void APIENTRY (*VertexStream1iATI)(GLenum stream, GLint x); /* 1190 */ void APIENTRY (*VertexStream1ivATI)(GLenum stream, const GLint *coords); /* 1191 */ void APIENTRY (*VertexStream1fATI)(GLenum stream, GLfloat x); /* 1192 */ void APIENTRY (*VertexStream1fvATI)(GLenum stream, const GLfloat *coords); /* 1193 */ void APIENTRY (*VertexStream1dATI)(GLenum stream, GLdouble x); /* 1194 */ void APIENTRY (*VertexStream1dvATI)(GLenum stream, const GLdouble *coords); /* 1195 */ void APIENTRY (*VertexStream2sATI)(GLenum stream, GLshort32 x, GLshort32 y); /* 1196 */ void APIENTRY (*VertexStream2svATI)(GLenum stream, const GLshort *coords); /* 1197 */ void APIENTRY (*VertexStream2iATI)(GLenum stream, GLint x, GLint y); /* 1198 */ void APIENTRY (*VertexStream2ivATI)(GLenum stream, const GLint *coords); /* 1199 */ void APIENTRY (*VertexStream2fATI)(GLenum stream, GLfloat x, GLfloat y); /* 1200 */ void APIENTRY (*VertexStream2fvATI)(GLenum stream, const GLfloat *coords); /* 1201 */ void APIENTRY (*VertexStream2dATI)(GLenum stream, GLdouble x, GLdouble y); /* 1202 */ void APIENTRY (*VertexStream2dvATI)(GLenum stream, const GLdouble *coords); /* 1203 */ void APIENTRY (*VertexStream3sATI)(GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z); /* 1204 */ void APIENTRY (*VertexStream3svATI)(GLenum stream, const GLshort *coords); /* 1205 */ void APIENTRY (*VertexStream3iATI)(GLenum stream, GLint x, GLint y, GLint z); /* 1206 */ void APIENTRY (*VertexStream3ivATI)(GLenum stream, const GLint *coords); /* 1207 */ void APIENTRY (*VertexStream3fATI)(GLenum stream, GLfloat x, GLfloat y, GLfloat z); /* 1208 */ void APIENTRY (*VertexStream3fvATI)(GLenum stream, const GLfloat *coords); /* 1209 */ void APIENTRY (*VertexStream3dATI)(GLenum stream, GLdouble x, GLdouble y, GLdouble z); /* 1210 */ void APIENTRY (*VertexStream3dvATI)(GLenum stream, const GLdouble *coords); /* 1211 */ void APIENTRY (*VertexStream4sATI)(GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); /* 1212 */ void APIENTRY (*VertexStream4svATI)(GLenum stream, const GLshort *coords); /* 1213 */ void APIENTRY (*VertexStream4iATI)(GLenum stream, GLint x, GLint y, GLint z, GLint w); /* 1214 */ void APIENTRY (*VertexStream4ivATI)(GLenum stream, const GLint *coords); /* 1215 */ void APIENTRY (*VertexStream4fATI)(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 1216 */ void APIENTRY (*VertexStream4fvATI)(GLenum stream, const GLfloat *coords); /* 1217 */ void APIENTRY (*VertexStream4dATI)(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 1218 */ void APIENTRY (*VertexStream4dvATI)(GLenum stream, const GLdouble *coords); /* 1219 */ void APIENTRY (*NormalStream3bATI)(GLenum stream, GLbyte32 nx, GLbyte32 ny, GLbyte32 nz); /* 1220 */ void APIENTRY (*NormalStream3bvATI)(GLenum stream, const GLbyte *coords); /* 1221 */ void APIENTRY (*NormalStream3sATI)(GLenum stream, GLshort32 nx, GLshort32 ny, GLshort32 nz); /* 1222 */ void APIENTRY (*NormalStream3svATI)(GLenum stream, const GLshort *coords); /* 1223 */ void APIENTRY (*NormalStream3iATI)(GLenum stream, GLint nx, GLint ny, GLint nz); /* 1224 */ void APIENTRY (*NormalStream3ivATI)(GLenum stream, const GLint *coords); /* 1225 */ void APIENTRY (*NormalStream3fATI)(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); /* 1226 */ void APIENTRY (*NormalStream3fvATI)(GLenum stream, const GLfloat *coords); /* 1227 */ void APIENTRY (*NormalStream3dATI)(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); /* 1228 */ void APIENTRY (*NormalStream3dvATI)(GLenum stream, const GLdouble *coords); /* 1229 */ void APIENTRY (*ClientActiveVertexStreamATI)(GLenum stream); /* 1230 */ void APIENTRY (*VertexBlendEnviATI)(GLenum pname, GLint param); /* 1231 */ void APIENTRY (*VertexBlendEnvfATI)(GLenum pname, GLfloat param); /* 1232 */ void APIENTRY (*ElementPointerATI)(GLenum type, const void *pointer); /* 1233 */ void APIENTRY (*DrawElementArrayATI)(GLenum mode, GLsizei count); /* 1234 */ void APIENTRY (*DrawRangeElementArrayATI)(GLenum mode, GLuint start, GLuint end, GLsizei count); /* 1235 */ void APIENTRY (*DrawMeshArraysSUN)(GLenum mode, GLint first, GLsizei count, GLsizei width); /* 1236 */ void APIENTRY (*GenOcclusionQueriesNV)(GLsizei n, GLuint *ids); /* 1237 */ void APIENTRY (*DeleteOcclusionQueriesNV)(GLsizei n, const GLuint *ids); /* 1238 */ GLboolean APIENTRY (*IsOcclusionQueryNV)(GLuint id); /* 1239 */ void APIENTRY (*BeginOcclusionQueryNV)(GLuint id); /* 1240 */ void APIENTRY (*EndOcclusionQueryNV)(void); /* 1241 */ void APIENTRY (*GetOcclusionQueryivNV)(GLuint id, GLenum pname, GLint *params); /* 1242 */ void APIENTRY (*GetOcclusionQueryuivNV)(GLuint id, GLenum pname, GLuint *params); /* 1243 */ void APIENTRY (*PointParameteriNV)(GLenum pname, GLint param); /* 1244 */ void APIENTRY (*PointParameterivNV)(GLenum pname, const GLint *params); /* 1245 */ void APIENTRY (*ActiveStencilFaceEXT)(GLenum face); /* 1246 */ void APIENTRY (*ElementPointerAPPLE)(GLenum type, const void *pointer); /* 1247 */ void APIENTRY (*DrawElementArrayAPPLE)(GLenum mode, GLint first, GLsizei count); /* 1248 */ void APIENTRY (*DrawRangeElementArrayAPPLE)(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); /* 1249 */ void APIENTRY (*MultiDrawElementArrayAPPLE)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); /* 1250 */ void APIENTRY (*MultiDrawRangeElementArrayAPPLE)(GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); /* 1251 */ void APIENTRY (*GenFencesAPPLE)(GLsizei n, GLuint *fences); /* 1252 */ void APIENTRY (*DeleteFencesAPPLE)(GLsizei n, const GLuint *fences); /* 1253 */ void APIENTRY (*SetFenceAPPLE)(GLuint fence); /* 1254 */ GLboolean APIENTRY (*IsFenceAPPLE)(GLuint fence); /* 1255 */ GLboolean APIENTRY (*TestFenceAPPLE)(GLuint fence); /* 1256 */ void APIENTRY (*FinishFenceAPPLE)(GLuint fence); /* 1257 */ GLboolean APIENTRY (*TestObjectAPPLE)(GLenum object, GLuint name); /* 1258 */ void APIENTRY (*FinishObjectAPPLE)(GLenum object, GLuint name); /* 1259 */ void APIENTRY (*BindVertexArrayAPPLE)(GLuint array); /* 1260 */ void APIENTRY (*DeleteVertexArraysAPPLE)(GLsizei n, const GLuint *arrays); /* 1261 */ void APIENTRY (*GenVertexArraysAPPLE)(GLsizei n, GLuint *arrays); /* 1262 */ GLboolean APIENTRY (*IsVertexArrayAPPLE)(GLuint array); /* 1263 */ void APIENTRY (*VertexArrayRangeAPPLE)(GLsizei length, void *pointer); /* 1264 */ void APIENTRY (*FlushVertexArrayRangeAPPLE)(GLsizei length, void *pointer); /* 1265 */ void APIENTRY (*VertexArrayParameteriAPPLE)(GLenum pname, GLint param); /* 1266 */ void APIENTRY (*DrawBuffersATI)(GLsizei n, const GLenum *bufs); /* 1267 */ void APIENTRY (*ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 1268 */ void APIENTRY (*ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 1269 */ void APIENTRY (*ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); /* 1270 */ void APIENTRY (*ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); /* 1271 */ void APIENTRY (*GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); /* 1272 */ void APIENTRY (*GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); /* 1273 */ void APIENTRY (*Vertex2hNV)(GLhalfNV32 x, GLhalfNV32 y); /* 1274 */ void APIENTRY (*Vertex2hvNV)(const GLhalfNV *v); /* 1275 */ void APIENTRY (*Vertex3hNV)(GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z); /* 1276 */ void APIENTRY (*Vertex3hvNV)(const GLhalfNV *v); /* 1277 */ void APIENTRY (*Vertex4hNV)(GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w); /* 1278 */ void APIENTRY (*Vertex4hvNV)(const GLhalfNV *v); /* 1279 */ void APIENTRY (*Normal3hNV)(GLhalfNV32 nx, GLhalfNV32 ny, GLhalfNV32 nz); /* 1280 */ void APIENTRY (*Normal3hvNV)(const GLhalfNV *v); /* 1281 */ void APIENTRY (*Color3hNV)(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue); /* 1282 */ void APIENTRY (*Color3hvNV)(const GLhalfNV *v); /* 1283 */ void APIENTRY (*Color4hNV)(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue, GLhalfNV32 alpha); /* 1284 */ void APIENTRY (*Color4hvNV)(const GLhalfNV *v); /* 1285 */ void APIENTRY (*TexCoord1hNV)(GLhalfNV32 s); /* 1286 */ void APIENTRY (*TexCoord1hvNV)(const GLhalfNV *v); /* 1287 */ void APIENTRY (*TexCoord2hNV)(GLhalfNV32 s, GLhalfNV32 t); /* 1288 */ void APIENTRY (*TexCoord2hvNV)(const GLhalfNV *v); /* 1289 */ void APIENTRY (*TexCoord3hNV)(GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r); /* 1290 */ void APIENTRY (*TexCoord3hvNV)(const GLhalfNV *v); /* 1291 */ void APIENTRY (*TexCoord4hNV)(GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q); /* 1292 */ void APIENTRY (*TexCoord4hvNV)(const GLhalfNV *v); /* 1293 */ void APIENTRY (*MultiTexCoord1hNV)(GLenum target, GLhalfNV32 s); /* 1294 */ void APIENTRY (*MultiTexCoord1hvNV)(GLenum target, const GLhalfNV *v); /* 1295 */ void APIENTRY (*MultiTexCoord2hNV)(GLenum target, GLhalfNV32 s, GLhalfNV32 t); /* 1296 */ void APIENTRY (*MultiTexCoord2hvNV)(GLenum target, const GLhalfNV *v); /* 1297 */ void APIENTRY (*MultiTexCoord3hNV)(GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r); /* 1298 */ void APIENTRY (*MultiTexCoord3hvNV)(GLenum target, const GLhalfNV *v); /* 1299 */ void APIENTRY (*MultiTexCoord4hNV)(GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q); /* 1300 */ void APIENTRY (*MultiTexCoord4hvNV)(GLenum target, const GLhalfNV *v); /* 1301 */ void APIENTRY (*FogCoordhNV)(GLhalfNV32 fog); /* 1302 */ void APIENTRY (*FogCoordhvNV)(const GLhalfNV *fog); /* 1303 */ void APIENTRY (*SecondaryColor3hNV)(GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue); /* 1304 */ void APIENTRY (*SecondaryColor3hvNV)(const GLhalfNV *v); /* 1305 */ void APIENTRY (*VertexWeighthNV)(GLhalfNV32 weight); /* 1306 */ void APIENTRY (*VertexWeighthvNV)(const GLhalfNV *weight); /* 1307 */ void APIENTRY (*VertexAttrib1hNV)(GLuint index, GLhalfNV32 x); /* 1308 */ void APIENTRY (*VertexAttrib1hvNV)(GLuint index, const GLhalfNV *v); /* 1309 */ void APIENTRY (*VertexAttrib2hNV)(GLuint index, GLhalfNV32 x, GLhalfNV32 y); /* 1310 */ void APIENTRY (*VertexAttrib2hvNV)(GLuint index, const GLhalfNV *v); /* 1311 */ void APIENTRY (*VertexAttrib3hNV)(GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z); /* 1312 */ void APIENTRY (*VertexAttrib3hvNV)(GLuint index, const GLhalfNV *v); /* 1313 */ void APIENTRY (*VertexAttrib4hNV)(GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w); /* 1314 */ void APIENTRY (*VertexAttrib4hvNV)(GLuint index, const GLhalfNV *v); /* 1315 */ void APIENTRY (*VertexAttribs1hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); /* 1316 */ void APIENTRY (*VertexAttribs2hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); /* 1317 */ void APIENTRY (*VertexAttribs3hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); /* 1318 */ void APIENTRY (*VertexAttribs4hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); /* 1319 */ void APIENTRY (*PixelDataRangeNV)(GLenum target, GLsizei length, const void *pointer); /* 1320 */ void APIENTRY (*FlushPixelDataRangeNV)(GLenum target); /* 1321 */ void APIENTRY (*PrimitiveRestartNV)(void); /* 1322 */ void APIENTRY (*PrimitiveRestartIndexNV)(GLuint index); /* 1323 */ void * APIENTRY (*MapObjectBufferATI)(GLuint buffer); /* 1324 */ void APIENTRY (*UnmapObjectBufferATI)(GLuint buffer); /* 1325 */ void APIENTRY (*StencilOpSeparateATI)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); /* 1326 */ void APIENTRY (*StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); /* 1327 */ void APIENTRY (*VertexAttribArrayObjectATI)(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLuint buffer, GLuint offset); /* 1328 */ void APIENTRY (*GetVertexAttribArrayObjectfvATI)(GLuint index, GLenum pname, GLfloat *params); /* 1329 */ void APIENTRY (*GetVertexAttribArrayObjectivATI)(GLuint index, GLenum pname, GLint *params); /* 1330 */ void APIENTRY (*DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 1331 */ void APIENTRY (*BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeAlpha); /* 1332 */ void APIENTRY (*OSMesaColorClamp)(GLboolean32 enable); /* 1333 */ void APIENTRY (*OSMesaPostprocess)(OSMesaContext osmesa, const char *filter, GLuint enable_value); /* 1334 */ void *__unused_1334; /* 1335 */ void *__unused_1335; /* 1336 */ void *__unused_1336; /* 1337 */ void *__unused_1337; /* 1338 */ void *__unused_1338; /* 1339 */ void *__unused_1339; /* 1340 */ void *__unused_1340; /* 1341 */ void *__unused_1341; /* 1342 */ void *__unused_1342; /* 1343 */ void *__unused_1343; /* 1344 */ void *__unused_1344; /* 1345 */ void *__unused_1345; /* 1346 */ void *__unused_1346; /* 1347 */ void *__unused_1347; /* 1348 */ void *__unused_1348; /* 1349 */ void *__unused_1349; /* 1350 */ void *__unused_1350; /* 1351 */ void *__unused_1351; /* 1352 */ void *__unused_1352; /* 1353 */ void *__unused_1353; /* 1354 */ void *__unused_1354; /* 1355 */ void *__unused_1355; /* 1356 */ void *__unused_1356; /* 1357 */ void *__unused_1357; /* 1358 */ void *__unused_1358; /* 1359 */ void *__unused_1359; /* 1360 */ void *__unused_1360; /* 1361 */ void *__unused_1361; /* 1362 */ void *__unused_1362; /* 1363 */ void *__unused_1363; /* 1364 */ void *__unused_1364; /* 1365 */ void *__unused_1365; /* 1366 */ void *__unused_1366; /* 1367 */ void *__unused_1367; /* 1368 */ void *__unused_1368; /* 1369 */ void *__unused_1369; /* 1370 */ void *__unused_1370; /* 1371 */ void *__unused_1371; /* 1372 */ void *__unused_1372; /* 1373 */ void *__unused_1373; /* 1374 */ void *__unused_1374; /* 1375 */ void *__unused_1375; /* 1376 */ void *__unused_1376; /* 1377 */ void *__unused_1377; /* 1378 */ void *__unused_1378; /* 1379 */ void *__unused_1379; /* 1380 */ void *__unused_1380; /* 1381 */ void *__unused_1381; /* 1382 */ void *__unused_1382; /* 1383 */ void * APIENTRY (*OSMesaCreateLDG)(GLenum format, GLenum type, GLint width, GLint height); /* 1384 */ void APIENTRY (*OSMesaDestroyLDG)(void); /* 1385 */ GLsizei APIENTRY (*max_width)(void); /* 1386 */ GLsizei APIENTRY (*max_height)(void); /* 1387 */ void APIENTRY (*information)(void); /* 1388 */ void APIENTRY (*exception_error)(void (CALLBACK *exception)(GLenum param) ); /* 1389 */ void APIENTRY (*gluLookAtf)(GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ); /* 1390 */ void APIENTRY (*Frustumf)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); /* 1391 */ void APIENTRY (*Orthof)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val); /* 1392 */ void APIENTRY (*swapbuffer)(void *buffer); /* 1393 */ void APIENTRY (*gluLookAt)(GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ); /* 1394 */ void *__unused_1394; /* 1395 */ void *__unused_1395; /* 1396 */ void *__unused_1396; /* 1397 */ void *__unused_1397; /* 1398 */ void *__unused_1398; /* 1399 */ void APIENTRY (*AccumxOES)(GLenum op, GLfixed value); /* 1400 */ void APIENTRY (*ActiveProgramEXT)(GLuint program); /* 1401 */ void APIENTRY (*ActiveShaderProgram)(GLuint pipeline, GLuint program); /* 1402 */ void APIENTRY (*ActiveVaryingNV)(GLuint program, const GLchar *name); /* 1403 */ void APIENTRY (*AddSwapHintRectWIN)(GLint x, GLint y, GLsizei width, GLsizei height); /* 1404 */ void APIENTRY (*AlphaFuncxOES)(GLenum func, GLfixed ref); /* 1405 */ void APIENTRY (*AttachShader)(GLuint program, GLuint shader); /* 1406 */ void APIENTRY (*BeginConditionalRender)(GLuint id, GLenum mode); /* 1407 */ void APIENTRY (*BeginConditionalRenderNV)(GLuint id, GLenum mode); /* 1408 */ void APIENTRY (*BeginConditionalRenderNVX)(GLuint id); /* 1409 */ void APIENTRY (*BeginPerfMonitorAMD)(GLuint monitor); /* 1410 */ void APIENTRY (*BeginPerfQueryINTEL)(GLuint queryHandle); /* 1411 */ void APIENTRY (*BeginQueryIndexed)(GLenum target, GLuint index, GLuint id); /* 1412 */ void APIENTRY (*BeginTransformFeedback)(GLenum primitiveMode); /* 1413 */ void APIENTRY (*BeginTransformFeedbackEXT)(GLenum primitiveMode); /* 1414 */ void APIENTRY (*BeginTransformFeedbackNV)(GLenum primitiveMode); /* 1415 */ void APIENTRY (*BeginVideoCaptureNV)(GLuint video_capture_slot); /* 1416 */ void APIENTRY (*BindAttribLocation)(GLuint program, GLuint index, const GLchar *name); /* 1417 */ void APIENTRY (*BindBufferBase)(GLenum target, GLuint index, GLuint buffer); /* 1418 */ void APIENTRY (*BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer); /* 1419 */ void APIENTRY (*BindBufferBaseNV)(GLenum target, GLuint index, GLuint buffer); /* 1420 */ void APIENTRY (*BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 1421 */ void APIENTRY (*BindBufferOffsetNV)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 1422 */ void APIENTRY (*BindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 1423 */ void APIENTRY (*BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 1424 */ void APIENTRY (*BindBufferRangeNV)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 1425 */ void APIENTRY (*BindBuffersBase)(GLenum target, GLuint first, GLsizei count, const GLuint *buffers); /* 1426 */ void APIENTRY (*BindBuffersRange)(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); /* 1427 */ void APIENTRY (*BindFragDataLocation)(GLuint program, GLuint color, const GLchar *name); /* 1428 */ void APIENTRY (*BindFragDataLocationEXT)(GLuint program, GLuint color, const GLchar *name); /* 1429 */ void APIENTRY (*BindFragDataLocationIndexed)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); /* 1430 */ void APIENTRY (*BindFramebuffer)(GLenum target, GLuint framebuffer); /* 1431 */ void APIENTRY (*BindFramebufferEXT)(GLenum target, GLuint framebuffer); /* 1432 */ void APIENTRY (*BindImageTexture)(GLuint unit, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLenum format); /* 1433 */ void APIENTRY (*BindImageTextureEXT)(GLuint index, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLint format); /* 1434 */ void APIENTRY (*BindImageTextures)(GLuint first, GLsizei count, const GLuint *textures); /* 1435 */ void APIENTRY (*BindMultiTextureEXT)(GLenum texunit, GLenum target, GLuint texture); /* 1436 */ void APIENTRY (*BindProgramPipeline)(GLuint pipeline); /* 1437 */ void APIENTRY (*BindRenderbuffer)(GLenum target, GLuint renderbuffer); /* 1438 */ void APIENTRY (*BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); /* 1439 */ void APIENTRY (*BindSampler)(GLuint unit, GLuint sampler); /* 1440 */ void APIENTRY (*BindSamplers)(GLuint first, GLsizei count, const GLuint *samplers); /* 1441 */ void APIENTRY (*BindTextures)(GLuint first, GLsizei count, const GLuint *textures); /* 1442 */ void APIENTRY (*BindTransformFeedback)(GLenum target, GLuint id); /* 1443 */ void APIENTRY (*BindTransformFeedbackNV)(GLenum target, GLuint id); /* 1444 */ void APIENTRY (*BindVertexArray)(GLuint array); /* 1445 */ void APIENTRY (*BindVertexBuffer)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); /* 1446 */ void APIENTRY (*BindVertexBuffers)(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); /* 1447 */ void APIENTRY (*BindVideoCaptureStreamBufferNV)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); /* 1448 */ void APIENTRY (*BindVideoCaptureStreamTextureNV)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); /* 1449 */ void APIENTRY (*BitmapxOES)(GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); /* 1450 */ void APIENTRY (*BlendBarrierNV)(void); /* 1451 */ void APIENTRY (*BlendColorxOES)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); /* 1452 */ void APIENTRY (*BlendEquationIndexedAMD)(GLuint buf, GLenum mode); /* 1453 */ void APIENTRY (*BlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha); /* 1454 */ void APIENTRY (*BlendEquationSeparateIndexedAMD)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); /* 1455 */ void APIENTRY (*BlendEquationSeparatei)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); /* 1456 */ void APIENTRY (*BlendEquationSeparateiARB)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); /* 1457 */ void APIENTRY (*BlendEquationi)(GLuint buf, GLenum mode); /* 1458 */ void APIENTRY (*BlendEquationiARB)(GLuint buf, GLenum mode); /* 1459 */ void APIENTRY (*BlendFuncIndexedAMD)(GLuint buf, GLenum src, GLenum dst); /* 1460 */ void APIENTRY (*BlendFuncSeparateIndexedAMD)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); /* 1461 */ void APIENTRY (*BlendFuncSeparatei)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); /* 1462 */ void APIENTRY (*BlendFuncSeparateiARB)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); /* 1463 */ void APIENTRY (*BlendFunci)(GLuint buf, GLenum src, GLenum dst); /* 1464 */ void APIENTRY (*BlendFunciARB)(GLuint buf, GLenum src, GLenum dst); /* 1465 */ void APIENTRY (*BlendParameteriNV)(GLenum pname, GLint value); /* 1466 */ void APIENTRY (*BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 1467 */ void APIENTRY (*BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 1468 */ void APIENTRY (*BufferAddressRangeNV)(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); /* 1469 */ void APIENTRY (*BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); /* 1470 */ void APIENTRY (*BufferStorage)(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); /* 1471 */ GLenum APIENTRY (*CheckFramebufferStatus)(GLenum target); /* 1472 */ GLenum APIENTRY (*CheckFramebufferStatusEXT)(GLenum target); /* 1473 */ GLenum APIENTRY (*CheckNamedFramebufferStatusEXT)(GLuint framebuffer, GLenum target); /* 1474 */ void APIENTRY (*ClampColor)(GLenum target, GLenum clamp); /* 1475 */ void APIENTRY (*ClampColorARB)(GLenum target, GLenum clamp); /* 1476 */ void APIENTRY (*ClearAccumxOES)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); /* 1477 */ void APIENTRY (*ClearBufferData)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); /* 1478 */ void APIENTRY (*ClearBufferSubData)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); /* 1479 */ void APIENTRY (*ClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); /* 1480 */ void APIENTRY (*ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat *value); /* 1481 */ void APIENTRY (*ClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint *value); /* 1482 */ void APIENTRY (*ClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint *value); /* 1483 */ void APIENTRY (*ClearColorIiEXT)(GLint red, GLint green, GLint blue, GLint alpha); /* 1484 */ void APIENTRY (*ClearColorIuiEXT)(GLuint red, GLuint green, GLuint blue, GLuint alpha); /* 1485 */ void APIENTRY (*ClearColorxOES)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); /* 1486 */ void APIENTRY (*ClearDebugLogMESA)(GLhandleARB obj, GLenum logType, GLenum shaderType); /* 1487 */ void APIENTRY (*ClearDepthdNV)(GLdouble depth); /* 1488 */ void APIENTRY (*ClearDepthf)(GLfloat d); /* 1489 */ void APIENTRY (*ClearDepthfOES)(GLclampf depth); /* 1490 */ void APIENTRY (*ClearDepthxOES)(GLfixed depth); /* 1491 */ void APIENTRY (*ClearNamedBufferDataEXT)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); /* 1492 */ void APIENTRY (*ClearNamedBufferSubDataEXT)(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); /* 1493 */ void APIENTRY (*ClearTexImage)(GLuint texture, GLint level, GLenum format, GLenum type, const void *data); /* 1494 */ void APIENTRY (*ClearTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); /* 1495 */ void APIENTRY (*ClientAttribDefaultEXT)(GLbitfield mask); /* 1496 */ GLenum APIENTRY (*ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 1497 */ void APIENTRY (*ClipPlanefOES)(GLenum plane, const GLfloat *equation); /* 1498 */ void APIENTRY (*ClipPlanexOES)(GLenum plane, const GLfixed *equation); /* 1499 */ void APIENTRY (*Color3xOES)(GLfixed red, GLfixed green, GLfixed blue); /* 1500 */ void APIENTRY (*Color3xvOES)(const GLfixed *components); /* 1501 */ void APIENTRY (*Color4xOES)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); /* 1502 */ void APIENTRY (*Color4xvOES)(const GLfixed *components); /* 1503 */ void APIENTRY (*ColorFormatNV)(GLint size, GLenum type, GLsizei stride); /* 1504 */ void APIENTRY (*ColorMaskIndexedEXT)(GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a); /* 1505 */ void APIENTRY (*ColorMaski)(GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a); /* 1506 */ void APIENTRY (*ColorP3ui)(GLenum type, GLuint color); /* 1507 */ void APIENTRY (*ColorP3uiv)(GLenum type, const GLuint *color); /* 1508 */ void APIENTRY (*ColorP4ui)(GLenum type, GLuint color); /* 1509 */ void APIENTRY (*ColorP4uiv)(GLenum type, const GLuint *color); /* 1510 */ void APIENTRY (*CompileShader)(GLuint shader); /* 1511 */ void APIENTRY (*CompileShaderIncludeARB)(GLuint shader, GLsizei count, const GLchar *const *path, const GLint *length); /* 1512 */ void APIENTRY (*CompressedMultiTexImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); /* 1513 */ void APIENTRY (*CompressedMultiTexImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); /* 1514 */ void APIENTRY (*CompressedMultiTexImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); /* 1515 */ void APIENTRY (*CompressedMultiTexSubImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); /* 1516 */ void APIENTRY (*CompressedMultiTexSubImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); /* 1517 */ void APIENTRY (*CompressedMultiTexSubImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); /* 1518 */ void APIENTRY (*CompressedTextureImage1DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); /* 1519 */ void APIENTRY (*CompressedTextureImage2DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); /* 1520 */ void APIENTRY (*CompressedTextureImage3DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); /* 1521 */ void APIENTRY (*CompressedTextureSubImage1DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); /* 1522 */ void APIENTRY (*CompressedTextureSubImage2DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); /* 1523 */ void APIENTRY (*CompressedTextureSubImage3DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); /* 1524 */ void APIENTRY (*ConvolutionParameterxOES)(GLenum target, GLenum pname, GLfixed param); /* 1525 */ void APIENTRY (*ConvolutionParameterxvOES)(GLenum target, GLenum pname, const GLfixed *params); /* 1526 */ void APIENTRY (*CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 1527 */ void APIENTRY (*CopyImageSubData)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); /* 1528 */ void APIENTRY (*CopyImageSubDataNV)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); /* 1529 */ void APIENTRY (*CopyMultiTexImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); /* 1530 */ void APIENTRY (*CopyMultiTexImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); /* 1531 */ void APIENTRY (*CopyMultiTexSubImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); /* 1532 */ void APIENTRY (*CopyMultiTexSubImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 1533 */ void APIENTRY (*CopyMultiTexSubImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 1534 */ void APIENTRY (*CopyPathNV)(GLuint resultPath, GLuint srcPath); /* 1535 */ void APIENTRY (*CopyTextureImage1DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); /* 1536 */ void APIENTRY (*CopyTextureImage2DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); /* 1537 */ void APIENTRY (*CopyTextureSubImage1DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); /* 1538 */ void APIENTRY (*CopyTextureSubImage2DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 1539 */ void APIENTRY (*CopyTextureSubImage3DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 1540 */ void APIENTRY (*CoverFillPathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); /* 1541 */ void APIENTRY (*CoverFillPathNV)(GLuint path, GLenum coverMode); /* 1542 */ void APIENTRY (*CoverStrokePathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); /* 1543 */ void APIENTRY (*CoverStrokePathNV)(GLuint path, GLenum coverMode); /* 1544 */ GLhandleARB APIENTRY (*CreateDebugObjectMESA)(void); /* 1545 */ void APIENTRY (*CreatePerfQueryINTEL)(GLuint queryId, GLuint *queryHandle); /* 1546 */ GLuint APIENTRY (*CreateProgram)(void); /* 1547 */ GLuint APIENTRY (*CreateShader)(GLenum type); /* 1548 */ GLuint APIENTRY (*CreateShaderProgramEXT)(GLenum type, const GLchar *string); /* 1549 */ GLuint APIENTRY (*CreateShaderProgramv)(GLenum type, GLsizei count, const GLchar *const *strings); /* 1550 */ GLsync APIENTRY (*CreateSyncFromCLeventARB)(struct _cl_context *context, struct _cl_event *event, GLbitfield flags); /* 1551 */ void APIENTRY (*DebugMessageCallback)(GLDEBUGPROC callback, const void *userParam); /* 1552 */ void APIENTRY (*DebugMessageCallbackAMD)(GLDEBUGPROCAMD callback, void *userParam); /* 1553 */ void APIENTRY (*DebugMessageCallbackARB)(GLDEBUGPROCARB callback, const void *userParam); /* 1554 */ void APIENTRY (*DebugMessageControl)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled); /* 1555 */ void APIENTRY (*DebugMessageControlARB)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled); /* 1556 */ void APIENTRY (*DebugMessageEnableAMD)(GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled); /* 1557 */ void APIENTRY (*DebugMessageInsert)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); /* 1558 */ void APIENTRY (*DebugMessageInsertAMD)(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); /* 1559 */ void APIENTRY (*DebugMessageInsertARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); /* 1560 */ void APIENTRY (*DeleteFramebuffers)(GLsizei n, const GLuint *framebuffers); /* 1561 */ void APIENTRY (*DeleteFramebuffersEXT)(GLsizei n, const GLuint *framebuffers); /* 1562 */ void APIENTRY (*DeleteNamedStringARB)(GLint namelen, const GLchar *name); /* 1563 */ void APIENTRY (*DeleteNamesAMD)(GLenum identifier, GLuint num, const GLuint *names); /* 1564 */ void APIENTRY (*DeleteObjectBufferATI)(GLuint buffer); /* 1565 */ void APIENTRY (*DeletePathsNV)(GLuint path, GLsizei range); /* 1566 */ void APIENTRY (*DeletePerfMonitorsAMD)(GLsizei n, GLuint *monitors); /* 1567 */ void APIENTRY (*DeletePerfQueryINTEL)(GLuint queryHandle); /* 1568 */ void APIENTRY (*DeleteProgram)(GLuint program); /* 1569 */ void APIENTRY (*DeleteProgramPipelines)(GLsizei n, const GLuint *pipelines); /* 1570 */ void APIENTRY (*DeleteRenderbuffers)(GLsizei n, const GLuint *renderbuffers); /* 1571 */ void APIENTRY (*DeleteRenderbuffersEXT)(GLsizei n, const GLuint *renderbuffers); /* 1572 */ void APIENTRY (*DeleteSamplers)(GLsizei count, const GLuint *samplers); /* 1573 */ void APIENTRY (*DeleteShader)(GLuint shader); /* 1574 */ void APIENTRY (*DeleteSync)(GLsync sync); /* 1575 */ void APIENTRY (*DeleteTransformFeedbacks)(GLsizei n, const GLuint *ids); /* 1576 */ void APIENTRY (*DeleteTransformFeedbacksNV)(GLsizei n, const GLuint *ids); /* 1577 */ void APIENTRY (*DeleteVertexArrays)(GLsizei n, const GLuint *arrays); /* 1578 */ void APIENTRY (*DepthBoundsdNV)(GLdouble zmin, GLdouble zmax); /* 1579 */ void APIENTRY (*DepthRangeArrayv)(GLuint first, GLsizei count, const GLdouble *v); /* 1580 */ void APIENTRY (*DepthRangeIndexed)(GLuint index, GLdouble n, GLdouble f); /* 1581 */ void APIENTRY (*DepthRangedNV)(GLdouble zNear, GLdouble zFar); /* 1582 */ void APIENTRY (*DepthRangef)(GLfloat n, GLfloat f); /* 1583 */ void APIENTRY (*DepthRangefOES)(GLclampf n, GLclampf f); /* 1584 */ void APIENTRY (*DepthRangexOES)(GLfixed n, GLfixed f); /* 1585 */ void APIENTRY (*DetachShader)(GLuint program, GLuint shader); /* 1586 */ void APIENTRY (*DisableClientStateIndexedEXT)(GLenum array, GLuint index); /* 1587 */ void APIENTRY (*DisableClientStateiEXT)(GLenum array, GLuint index); /* 1588 */ void APIENTRY (*DisableIndexedEXT)(GLenum target, GLuint index); /* 1589 */ void APIENTRY (*DisableVertexArrayAttribEXT)(GLuint vaobj, GLuint index); /* 1590 */ void APIENTRY (*DisableVertexArrayEXT)(GLuint vaobj, GLenum array); /* 1591 */ void APIENTRY (*DisableVertexAttribAPPLE)(GLuint index, GLenum pname); /* 1592 */ void APIENTRY (*DisableVertexAttribArray)(GLuint index); /* 1593 */ void APIENTRY (*Disablei)(GLenum target, GLuint index); /* 1594 */ void APIENTRY (*DispatchCompute)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); /* 1595 */ void APIENTRY (*DispatchComputeGroupSizeARB)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z); /* 1596 */ void APIENTRY (*DispatchComputeIndirect)(GLintptr indirect); /* 1597 */ void APIENTRY (*DrawArraysIndirect)(GLenum mode, const void *indirect); /* 1598 */ void APIENTRY (*DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); /* 1599 */ void APIENTRY (*DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); /* 1600 */ void APIENTRY (*DrawArraysInstancedBaseInstance)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); /* 1601 */ void APIENTRY (*DrawArraysInstancedEXT)(GLenum mode, GLint start, GLsizei count, GLsizei primcount); /* 1602 */ void APIENTRY (*DrawBuffers)(GLsizei n, const GLenum *bufs); /* 1603 */ void APIENTRY (*DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); /* 1604 */ void APIENTRY (*DrawElementsIndirect)(GLenum mode, GLenum type, const void *indirect); /* 1605 */ void APIENTRY (*DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); /* 1606 */ void APIENTRY (*DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); /* 1607 */ void APIENTRY (*DrawElementsInstancedBaseInstance)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); /* 1608 */ void APIENTRY (*DrawElementsInstancedBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); /* 1609 */ void APIENTRY (*DrawElementsInstancedBaseVertexBaseInstance)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); /* 1610 */ void APIENTRY (*DrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); /* 1611 */ void APIENTRY (*DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); /* 1612 */ void APIENTRY (*DrawTextureNV)(GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); /* 1613 */ void APIENTRY (*DrawTransformFeedback)(GLenum mode, GLuint id); /* 1614 */ void APIENTRY (*DrawTransformFeedbackInstanced)(GLenum mode, GLuint id, GLsizei instancecount); /* 1615 */ void APIENTRY (*DrawTransformFeedbackNV)(GLenum mode, GLuint id); /* 1616 */ void APIENTRY (*DrawTransformFeedbackStream)(GLenum mode, GLuint id, GLuint stream); /* 1617 */ void APIENTRY (*DrawTransformFeedbackStreamInstanced)(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); /* 1618 */ void APIENTRY (*EdgeFlagFormatNV)(GLsizei stride); /* 1619 */ void APIENTRY (*EnableClientStateIndexedEXT)(GLenum array, GLuint index); /* 1620 */ void APIENTRY (*EnableClientStateiEXT)(GLenum array, GLuint index); /* 1621 */ void APIENTRY (*EnableIndexedEXT)(GLenum target, GLuint index); /* 1622 */ void APIENTRY (*EnableVertexArrayAttribEXT)(GLuint vaobj, GLuint index); /* 1623 */ void APIENTRY (*EnableVertexArrayEXT)(GLuint vaobj, GLenum array); /* 1624 */ void APIENTRY (*EnableVertexAttribAPPLE)(GLuint index, GLenum pname); /* 1625 */ void APIENTRY (*EnableVertexAttribArray)(GLuint index); /* 1626 */ void APIENTRY (*Enablei)(GLenum target, GLuint index); /* 1627 */ void APIENTRY (*EndConditionalRender)(void); /* 1628 */ void APIENTRY (*EndConditionalRenderNV)(void); /* 1629 */ void APIENTRY (*EndConditionalRenderNVX)(void); /* 1630 */ void APIENTRY (*EndPerfMonitorAMD)(GLuint monitor); /* 1631 */ void APIENTRY (*EndPerfQueryINTEL)(GLuint queryHandle); /* 1632 */ void APIENTRY (*EndQueryIndexed)(GLenum target, GLuint index); /* 1633 */ void APIENTRY (*EndTransformFeedback)(void); /* 1634 */ void APIENTRY (*EndTransformFeedbackEXT)(void); /* 1635 */ void APIENTRY (*EndTransformFeedbackNV)(void); /* 1636 */ void APIENTRY (*EndVideoCaptureNV)(GLuint video_capture_slot); /* 1637 */ void APIENTRY (*EvalCoord1xOES)(GLfixed u); /* 1638 */ void APIENTRY (*EvalCoord1xvOES)(const GLfixed *coords); /* 1639 */ void APIENTRY (*EvalCoord2xOES)(GLfixed u, GLfixed v); /* 1640 */ void APIENTRY (*EvalCoord2xvOES)(const GLfixed *coords); /* 1641 */ void APIENTRY (*FeedbackBufferxOES)(GLsizei n, GLenum type, const GLfixed *buffer); /* 1642 */ GLsync APIENTRY (*FenceSync)(GLenum condition, GLbitfield flags); /* 1643 */ void APIENTRY (*FinishRenderAPPLE)(void); /* 1644 */ void APIENTRY (*FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); /* 1645 */ void APIENTRY (*FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); /* 1646 */ void APIENTRY (*FlushMappedNamedBufferRangeEXT)(GLuint buffer, GLintptr offset, GLsizeiptr length); /* 1647 */ void APIENTRY (*FlushRenderAPPLE)(void); /* 1648 */ void APIENTRY (*FlushStaticDataIBM)(GLenum target); /* 1649 */ void APIENTRY (*FogCoordFormatNV)(GLenum type, GLsizei stride); /* 1650 */ void APIENTRY (*FogxOES)(GLenum pname, GLfixed param); /* 1651 */ void APIENTRY (*FogxvOES)(GLenum pname, const GLfixed *param); /* 1652 */ void APIENTRY (*FrameTerminatorGREMEDY)(void); /* 1653 */ void APIENTRY (*FramebufferDrawBufferEXT)(GLuint framebuffer, GLenum mode); /* 1654 */ void APIENTRY (*FramebufferDrawBuffersEXT)(GLuint framebuffer, GLsizei n, const GLenum *bufs); /* 1655 */ void APIENTRY (*FramebufferParameteri)(GLenum target, GLenum pname, GLint param); /* 1656 */ void APIENTRY (*FramebufferReadBufferEXT)(GLuint framebuffer, GLenum mode); /* 1657 */ void APIENTRY (*FramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 1658 */ void APIENTRY (*FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 1659 */ void APIENTRY (*FramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level); /* 1660 */ void APIENTRY (*FramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 1661 */ void APIENTRY (*FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 1662 */ void APIENTRY (*FramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 1663 */ void APIENTRY (*FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 1664 */ void APIENTRY (*FramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); /* 1665 */ void APIENTRY (*FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); /* 1666 */ void APIENTRY (*FramebufferTextureARB)(GLenum target, GLenum attachment, GLuint texture, GLint level); /* 1667 */ void APIENTRY (*FramebufferTextureEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level); /* 1668 */ void APIENTRY (*FramebufferTextureFaceARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); /* 1669 */ void APIENTRY (*FramebufferTextureFaceEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); /* 1670 */ void APIENTRY (*FramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 1671 */ void APIENTRY (*FramebufferTextureLayerARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 1672 */ void APIENTRY (*FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 1673 */ void APIENTRY (*FrustumfOES)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); /* 1674 */ void APIENTRY (*FrustumxOES)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); /* 1675 */ void APIENTRY (*GenFramebuffers)(GLsizei n, GLuint *framebuffers); /* 1676 */ void APIENTRY (*GenFramebuffersEXT)(GLsizei n, GLuint *framebuffers); /* 1677 */ void APIENTRY (*GenNamesAMD)(GLenum identifier, GLuint num, GLuint *names); /* 1678 */ GLuint APIENTRY (*GenPathsNV)(GLsizei range); /* 1679 */ void APIENTRY (*GenPerfMonitorsAMD)(GLsizei n, GLuint *monitors); /* 1680 */ void APIENTRY (*GenProgramPipelines)(GLsizei n, GLuint *pipelines); /* 1681 */ void APIENTRY (*GenRenderbuffers)(GLsizei n, GLuint *renderbuffers); /* 1682 */ void APIENTRY (*GenRenderbuffersEXT)(GLsizei n, GLuint *renderbuffers); /* 1683 */ void APIENTRY (*GenSamplers)(GLsizei count, GLuint *samplers); /* 1684 */ void APIENTRY (*GenTransformFeedbacks)(GLsizei n, GLuint *ids); /* 1685 */ void APIENTRY (*GenTransformFeedbacksNV)(GLsizei n, GLuint *ids); /* 1686 */ void APIENTRY (*GenVertexArrays)(GLsizei n, GLuint *arrays); /* 1687 */ void APIENTRY (*GenerateMipmap)(GLenum target); /* 1688 */ void APIENTRY (*GenerateMipmapEXT)(GLenum target); /* 1689 */ void APIENTRY (*GenerateMultiTexMipmapEXT)(GLenum texunit, GLenum target); /* 1690 */ void APIENTRY (*GenerateTextureMipmapEXT)(GLuint texture, GLenum target); /* 1691 */ void APIENTRY (*GetActiveAtomicCounterBufferiv)(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); /* 1692 */ void APIENTRY (*GetActiveAttrib)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); /* 1693 */ void APIENTRY (*GetActiveSubroutineName)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); /* 1694 */ void APIENTRY (*GetActiveSubroutineUniformName)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); /* 1695 */ void APIENTRY (*GetActiveSubroutineUniformiv)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); /* 1696 */ void APIENTRY (*GetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); /* 1697 */ GLuint APIENTRY (*GetActiveUniformBlockIndex)(GLuint program, const GLchar *uniformBlockName); /* 1698 */ void APIENTRY (*GetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); /* 1699 */ void APIENTRY (*GetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); /* 1700 */ void APIENTRY (*GetActiveUniformName)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); /* 1701 */ void APIENTRY (*GetActiveUniformsiv)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); /* 1702 */ void APIENTRY (*GetActiveVaryingNV)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); /* 1703 */ void APIENTRY (*GetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); /* 1704 */ GLint APIENTRY (*GetAttribLocation)(GLuint program, const GLchar *name); /* 1705 */ void APIENTRY (*GetBooleanIndexedvEXT)(GLenum target, GLuint index, GLboolean *data); /* 1706 */ void APIENTRY (*GetBooleani_v)(GLenum target, GLuint index, GLboolean *data); /* 1707 */ void APIENTRY (*GetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 *params); /* 1708 */ void APIENTRY (*GetBufferParameterui64vNV)(GLenum target, GLenum pname, GLuint64EXT *params); /* 1709 */ void APIENTRY (*GetClipPlanefOES)(GLenum plane, GLfloat *equation); /* 1710 */ void APIENTRY (*GetClipPlanexOES)(GLenum plane, GLfixed *equation); /* 1711 */ void APIENTRY (*GetCompressedMultiTexImageEXT)(GLenum texunit, GLenum target, GLint lod, void *img); /* 1712 */ void APIENTRY (*GetCompressedTextureImageEXT)(GLuint texture, GLenum target, GLint lod, void *img); /* 1713 */ void APIENTRY (*GetConvolutionParameterxvOES)(GLenum target, GLenum pname, GLfixed *params); /* 1714 */ GLsizei APIENTRY (*GetDebugLogLengthMESA)(GLhandleARB obj, GLenum logType, GLenum shaderType); /* 1715 */ void APIENTRY (*GetDebugLogMESA)(GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength, GLsizei *length, GLcharARB *debugLog); /* 1716 */ GLuint APIENTRY (*GetDebugMessageLog)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); /* 1717 */ GLuint APIENTRY (*GetDebugMessageLogAMD)(GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); /* 1718 */ GLuint APIENTRY (*GetDebugMessageLogARB)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); /* 1719 */ void APIENTRY (*GetDoubleIndexedvEXT)(GLenum target, GLuint index, GLdouble *data); /* 1720 */ void APIENTRY (*GetDoublei_v)(GLenum target, GLuint index, GLdouble *data); /* 1721 */ void APIENTRY (*GetDoublei_vEXT)(GLenum pname, GLuint index, GLdouble *params); /* 1722 */ void APIENTRY (*GetFirstPerfQueryIdINTEL)(GLuint *queryId); /* 1723 */ void APIENTRY (*GetFixedvOES)(GLenum pname, GLfixed *params); /* 1724 */ void APIENTRY (*GetFloatIndexedvEXT)(GLenum target, GLuint index, GLfloat *data); /* 1725 */ void APIENTRY (*GetFloati_v)(GLenum target, GLuint index, GLfloat *data); /* 1726 */ void APIENTRY (*GetFloati_vEXT)(GLenum pname, GLuint index, GLfloat *params); /* 1727 */ GLint APIENTRY (*GetFragDataIndex)(GLuint program, const GLchar *name); /* 1728 */ GLint APIENTRY (*GetFragDataLocation)(GLuint program, const GLchar *name); /* 1729 */ GLint APIENTRY (*GetFragDataLocationEXT)(GLuint program, const GLchar *name); /* 1730 */ void APIENTRY (*GetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint *params); /* 1731 */ void APIENTRY (*GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint *params); /* 1732 */ void APIENTRY (*GetFramebufferParameteriv)(GLenum target, GLenum pname, GLint *params); /* 1733 */ void APIENTRY (*GetFramebufferParameterivEXT)(GLuint framebuffer, GLenum pname, GLint *params); /* 1734 */ GLenum APIENTRY (*GetGraphicsResetStatusARB)(void); /* 1735 */ void APIENTRY (*GetHistogramParameterxvOES)(GLenum target, GLenum pname, GLfixed *params); /* 1736 */ GLuint64 APIENTRY (*GetImageHandleARB)(GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format); /* 1737 */ GLuint64 APIENTRY (*GetImageHandleNV)(GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format); /* 1738 */ void APIENTRY (*GetInteger64i_v)(GLenum target, GLuint index, GLint64 *data); /* 1739 */ void APIENTRY (*GetInteger64v)(GLenum pname, GLint64 *data); /* 1740 */ void APIENTRY (*GetIntegerIndexedvEXT)(GLenum target, GLuint index, GLint *data); /* 1741 */ void APIENTRY (*GetIntegeri_v)(GLenum target, GLuint index, GLint *data); /* 1742 */ void APIENTRY (*GetIntegerui64i_vNV)(GLenum value, GLuint index, GLuint64EXT *result); /* 1743 */ void APIENTRY (*GetIntegerui64vNV)(GLenum value, GLuint64EXT *result); /* 1744 */ void APIENTRY (*GetInternalformati64v)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); /* 1745 */ void APIENTRY (*GetInternalformativ)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); /* 1746 */ void APIENTRY (*GetLightxOES)(GLenum light, GLenum pname, GLfixed *params); /* 1747 */ void APIENTRY (*GetMapxvOES)(GLenum target, GLenum query, GLfixed *v); /* 1748 */ void APIENTRY (*GetMaterialxOES)(GLenum face, GLenum pname, GLfixed param); /* 1749 */ void APIENTRY (*GetMultiTexEnvfvEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat *params); /* 1750 */ void APIENTRY (*GetMultiTexEnvivEXT)(GLenum texunit, GLenum target, GLenum pname, GLint *params); /* 1751 */ void APIENTRY (*GetMultiTexGendvEXT)(GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); /* 1752 */ void APIENTRY (*GetMultiTexGenfvEXT)(GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); /* 1753 */ void APIENTRY (*GetMultiTexGenivEXT)(GLenum texunit, GLenum coord, GLenum pname, GLint *params); /* 1754 */ void APIENTRY (*GetMultiTexImageEXT)(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); /* 1755 */ void APIENTRY (*GetMultiTexLevelParameterfvEXT)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); /* 1756 */ void APIENTRY (*GetMultiTexLevelParameterivEXT)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); /* 1757 */ void APIENTRY (*GetMultiTexParameterIivEXT)(GLenum texunit, GLenum target, GLenum pname, GLint *params); /* 1758 */ void APIENTRY (*GetMultiTexParameterIuivEXT)(GLenum texunit, GLenum target, GLenum pname, GLuint *params); /* 1759 */ void APIENTRY (*GetMultiTexParameterfvEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat *params); /* 1760 */ void APIENTRY (*GetMultiTexParameterivEXT)(GLenum texunit, GLenum target, GLenum pname, GLint *params); /* 1761 */ void APIENTRY (*GetMultisamplefv)(GLenum pname, GLuint index, GLfloat *val); /* 1762 */ void APIENTRY (*GetMultisamplefvNV)(GLenum pname, GLuint index, GLfloat *val); /* 1763 */ void APIENTRY (*GetNamedBufferParameterivEXT)(GLuint buffer, GLenum pname, GLint *params); /* 1764 */ void APIENTRY (*GetNamedBufferParameterui64vNV)(GLuint buffer, GLenum pname, GLuint64EXT *params); /* 1765 */ void APIENTRY (*GetNamedBufferPointervEXT)(GLuint buffer, GLenum pname, void * *params); /* 1766 */ void APIENTRY (*GetNamedBufferSubDataEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); /* 1767 */ void APIENTRY (*GetNamedFramebufferAttachmentParameterivEXT)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); /* 1768 */ void APIENTRY (*GetNamedFramebufferParameterivEXT)(GLuint framebuffer, GLenum pname, GLint *params); /* 1769 */ void APIENTRY (*GetNamedProgramLocalParameterIivEXT)(GLuint program, GLenum target, GLuint index, GLint *params); /* 1770 */ void APIENTRY (*GetNamedProgramLocalParameterIuivEXT)(GLuint program, GLenum target, GLuint index, GLuint *params); /* 1771 */ void APIENTRY (*GetNamedProgramLocalParameterdvEXT)(GLuint program, GLenum target, GLuint index, GLdouble *params); /* 1772 */ void APIENTRY (*GetNamedProgramLocalParameterfvEXT)(GLuint program, GLenum target, GLuint index, GLfloat *params); /* 1773 */ void APIENTRY (*GetNamedProgramStringEXT)(GLuint program, GLenum target, GLenum pname, void *string); /* 1774 */ void APIENTRY (*GetNamedProgramivEXT)(GLuint program, GLenum target, GLenum pname, GLint *params); /* 1775 */ void APIENTRY (*GetNamedRenderbufferParameterivEXT)(GLuint renderbuffer, GLenum pname, GLint *params); /* 1776 */ void APIENTRY (*GetNamedStringARB)(GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); /* 1777 */ void APIENTRY (*GetNamedStringivARB)(GLint namelen, const GLchar *name, GLenum pname, GLint *params); /* 1778 */ void APIENTRY (*GetNextPerfQueryIdINTEL)(GLuint queryId, GLuint *nextQueryId); /* 1779 */ void APIENTRY (*GetObjectLabel)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); /* 1780 */ void APIENTRY (*GetObjectLabelEXT)(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); /* 1781 */ void APIENTRY (*GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint *params); /* 1782 */ void APIENTRY (*GetObjectPtrLabel)(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); /* 1783 */ void APIENTRY (*GetPathColorGenfvNV)(GLenum color, GLenum pname, GLfloat *value); /* 1784 */ void APIENTRY (*GetPathColorGenivNV)(GLenum color, GLenum pname, GLint *value); /* 1785 */ void APIENTRY (*GetPathCommandsNV)(GLuint path, GLubyte *commands); /* 1786 */ void APIENTRY (*GetPathCoordsNV)(GLuint path, GLfloat *coords); /* 1787 */ void APIENTRY (*GetPathDashArrayNV)(GLuint path, GLfloat *dashArray); /* 1788 */ GLfloat APIENTRY (*GetPathLengthNV)(GLuint path, GLsizei startSegment, GLsizei numSegments); /* 1789 */ void APIENTRY (*GetPathMetricRangeNV)(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); /* 1790 */ void APIENTRY (*GetPathMetricsNV)(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); /* 1791 */ void APIENTRY (*GetPathParameterfvNV)(GLuint path, GLenum pname, GLfloat *value); /* 1792 */ void APIENTRY (*GetPathParameterivNV)(GLuint path, GLenum pname, GLint *value); /* 1793 */ void APIENTRY (*GetPathSpacingNV)(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); /* 1794 */ void APIENTRY (*GetPathTexGenfvNV)(GLenum texCoordSet, GLenum pname, GLfloat *value); /* 1795 */ void APIENTRY (*GetPathTexGenivNV)(GLenum texCoordSet, GLenum pname, GLint *value); /* 1796 */ void APIENTRY (*GetPerfCounterInfoINTEL)(GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); /* 1797 */ void APIENTRY (*GetPerfMonitorCounterDataAMD)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); /* 1798 */ void APIENTRY (*GetPerfMonitorCounterInfoAMD)(GLuint group, GLuint counter, GLenum pname, void *data); /* 1799 */ void APIENTRY (*GetPerfMonitorCounterStringAMD)(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); /* 1800 */ void APIENTRY (*GetPerfMonitorCountersAMD)(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); /* 1801 */ void APIENTRY (*GetPerfMonitorGroupStringAMD)(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); /* 1802 */ void APIENTRY (*GetPerfMonitorGroupsAMD)(GLint *numGroups, GLsizei groupsSize, GLuint *groups); /* 1803 */ void APIENTRY (*GetPerfQueryDataINTEL)(GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); /* 1804 */ void APIENTRY (*GetPerfQueryIdByNameINTEL)(GLchar *queryName, GLuint *queryId); /* 1805 */ void APIENTRY (*GetPerfQueryInfoINTEL)(GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); /* 1806 */ void APIENTRY (*GetPixelMapxv)(GLenum map, GLint size, GLfixed *values); /* 1807 */ void APIENTRY (*GetPixelTransformParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); /* 1808 */ void APIENTRY (*GetPixelTransformParameterivEXT)(GLenum target, GLenum pname, GLint *params); /* 1809 */ void APIENTRY (*GetPointerIndexedvEXT)(GLenum target, GLuint index, void * *data); /* 1810 */ void APIENTRY (*GetPointeri_vEXT)(GLenum pname, GLuint index, void * *params); /* 1811 */ void APIENTRY (*GetProgramBinary)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); /* 1812 */ void APIENTRY (*GetProgramEnvParameterIivNV)(GLenum target, GLuint index, GLint *params); /* 1813 */ void APIENTRY (*GetProgramEnvParameterIuivNV)(GLenum target, GLuint index, GLuint *params); /* 1814 */ void APIENTRY (*GetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); /* 1815 */ void APIENTRY (*GetProgramInterfaceiv)(GLuint program, GLenum programInterface, GLenum pname, GLint *params); /* 1816 */ void APIENTRY (*GetProgramLocalParameterIivNV)(GLenum target, GLuint index, GLint *params); /* 1817 */ void APIENTRY (*GetProgramLocalParameterIuivNV)(GLenum target, GLuint index, GLuint *params); /* 1818 */ void APIENTRY (*GetProgramPipelineInfoLog)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); /* 1819 */ void APIENTRY (*GetProgramPipelineiv)(GLuint pipeline, GLenum pname, GLint *params); /* 1820 */ void APIENTRY (*GetProgramRegisterfvMESA)(GLenum target, GLsizei len, const GLubyte *name, GLfloat *v); /* 1821 */ GLuint APIENTRY (*GetProgramResourceIndex)(GLuint program, GLenum programInterface, const GLchar *name); /* 1822 */ GLint APIENTRY (*GetProgramResourceLocation)(GLuint program, GLenum programInterface, const GLchar *name); /* 1823 */ GLint APIENTRY (*GetProgramResourceLocationIndex)(GLuint program, GLenum programInterface, const GLchar *name); /* 1824 */ void APIENTRY (*GetProgramResourceName)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); /* 1825 */ void APIENTRY (*GetProgramResourceiv)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); /* 1826 */ void APIENTRY (*GetProgramStageiv)(GLuint program, GLenum shadertype, GLenum pname, GLint *values); /* 1827 */ void APIENTRY (*GetProgramSubroutineParameteruivNV)(GLenum target, GLuint index, GLuint *param); /* 1828 */ void APIENTRY (*GetProgramiv)(GLuint program, GLenum pname, GLint *params); /* 1829 */ void APIENTRY (*GetQueryIndexediv)(GLenum target, GLuint index, GLenum pname, GLint *params); /* 1830 */ void APIENTRY (*GetQueryObjecti64v)(GLuint id, GLenum pname, GLint64 *params); /* 1831 */ void APIENTRY (*GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64 *params); /* 1832 */ void APIENTRY (*GetQueryObjectui64v)(GLuint id, GLenum pname, GLuint64 *params); /* 1833 */ void APIENTRY (*GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64 *params); /* 1834 */ void APIENTRY (*GetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint *params); /* 1835 */ void APIENTRY (*GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint *params); /* 1836 */ void APIENTRY (*GetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint *params); /* 1837 */ void APIENTRY (*GetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint *params); /* 1838 */ void APIENTRY (*GetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat *params); /* 1839 */ void APIENTRY (*GetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint *params); /* 1840 */ void APIENTRY (*GetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); /* 1841 */ void APIENTRY (*GetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); /* 1842 */ void APIENTRY (*GetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); /* 1843 */ void APIENTRY (*GetShaderiv)(GLuint shader, GLenum pname, GLint *params); /* 1844 */ const GLubyte * APIENTRY (*GetStringi)(GLenum name, GLuint index); /* 1845 */ void *__unused_1845; /* 1846 */ GLuint APIENTRY (*GetSubroutineIndex)(GLuint program, GLenum shadertype, const GLchar *name); /* 1847 */ GLint APIENTRY (*GetSubroutineUniformLocation)(GLuint program, GLenum shadertype, const GLchar *name); /* 1848 */ void APIENTRY (*GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); /* 1849 */ void APIENTRY (*GetTexEnvxvOES)(GLenum target, GLenum pname, GLfixed *params); /* 1850 */ void APIENTRY (*GetTexGenxvOES)(GLenum coord, GLenum pname, GLfixed *params); /* 1851 */ void APIENTRY (*GetTexLevelParameterxvOES)(GLenum target, GLint level, GLenum pname, GLfixed *params); /* 1852 */ void APIENTRY (*GetTexParameterIiv)(GLenum target, GLenum pname, GLint *params); /* 1853 */ void APIENTRY (*GetTexParameterIivEXT)(GLenum target, GLenum pname, GLint *params); /* 1854 */ void APIENTRY (*GetTexParameterIuiv)(GLenum target, GLenum pname, GLuint *params); /* 1855 */ void APIENTRY (*GetTexParameterIuivEXT)(GLenum target, GLenum pname, GLuint *params); /* 1856 */ void APIENTRY (*GetTexParameterPointervAPPLE)(GLenum target, GLenum pname, void * *params); /* 1857 */ void APIENTRY (*GetTexParameterxvOES)(GLenum target, GLenum pname, GLfixed *params); /* 1858 */ GLuint64 APIENTRY (*GetTextureHandleARB)(GLuint texture); /* 1859 */ GLuint64 APIENTRY (*GetTextureHandleNV)(GLuint texture); /* 1860 */ void APIENTRY (*GetTextureImageEXT)(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); /* 1861 */ void APIENTRY (*GetTextureLevelParameterfvEXT)(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); /* 1862 */ void APIENTRY (*GetTextureLevelParameterivEXT)(GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); /* 1863 */ void APIENTRY (*GetTextureParameterIivEXT)(GLuint texture, GLenum target, GLenum pname, GLint *params); /* 1864 */ void APIENTRY (*GetTextureParameterIuivEXT)(GLuint texture, GLenum target, GLenum pname, GLuint *params); /* 1865 */ void APIENTRY (*GetTextureParameterfvEXT)(GLuint texture, GLenum target, GLenum pname, GLfloat *params); /* 1866 */ void APIENTRY (*GetTextureParameterivEXT)(GLuint texture, GLenum target, GLenum pname, GLint *params); /* 1867 */ GLuint64 APIENTRY (*GetTextureSamplerHandleARB)(GLuint texture, GLuint sampler); /* 1868 */ GLuint64 APIENTRY (*GetTextureSamplerHandleNV)(GLuint texture, GLuint sampler); /* 1869 */ void APIENTRY (*GetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); /* 1870 */ void APIENTRY (*GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); /* 1871 */ void APIENTRY (*GetTransformFeedbackVaryingNV)(GLuint program, GLuint index, GLint *location); /* 1872 */ GLuint APIENTRY (*GetUniformBlockIndex)(GLuint program, const GLchar *uniformBlockName); /* 1873 */ GLint APIENTRY (*GetUniformBufferSizeEXT)(GLuint program, GLint location); /* 1874 */ void APIENTRY (*GetUniformIndices)(GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices); /* 1875 */ GLint APIENTRY (*GetUniformLocation)(GLuint program, const GLchar *name); /* 1876 */ GLintptr APIENTRY (*GetUniformOffsetEXT)(GLuint program, GLint location); /* 1877 */ void APIENTRY (*GetUniformSubroutineuiv)(GLenum shadertype, GLint location, GLuint *params); /* 1878 */ void APIENTRY (*GetUniformdv)(GLuint program, GLint location, GLdouble *params); /* 1879 */ void APIENTRY (*GetUniformfv)(GLuint program, GLint location, GLfloat *params); /* 1880 */ void APIENTRY (*GetUniformi64vNV)(GLuint program, GLint location, GLint64EXT *params); /* 1881 */ void APIENTRY (*GetUniformiv)(GLuint program, GLint location, GLint *params); /* 1882 */ void APIENTRY (*GetUniformui64vNV)(GLuint program, GLint location, GLuint64EXT *params); /* 1883 */ void APIENTRY (*GetUniformuiv)(GLuint program, GLint location, GLuint *params); /* 1884 */ void APIENTRY (*GetUniformuivEXT)(GLuint program, GLint location, GLuint *params); /* 1885 */ GLint APIENTRY (*GetVaryingLocationNV)(GLuint program, const GLchar *name); /* 1886 */ void APIENTRY (*GetVertexArrayIntegeri_vEXT)(GLuint vaobj, GLuint index, GLenum pname, GLint *param); /* 1887 */ void APIENTRY (*GetVertexArrayIntegervEXT)(GLuint vaobj, GLenum pname, GLint *param); /* 1888 */ void APIENTRY (*GetVertexArrayPointeri_vEXT)(GLuint vaobj, GLuint index, GLenum pname, void * *param); /* 1889 */ void APIENTRY (*GetVertexArrayPointervEXT)(GLuint vaobj, GLenum pname, void * *param); /* 1890 */ void APIENTRY (*GetVertexAttribIiv)(GLuint index, GLenum pname, GLint *params); /* 1891 */ void APIENTRY (*GetVertexAttribIivEXT)(GLuint index, GLenum pname, GLint *params); /* 1892 */ void APIENTRY (*GetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint *params); /* 1893 */ void APIENTRY (*GetVertexAttribIuivEXT)(GLuint index, GLenum pname, GLuint *params); /* 1894 */ void APIENTRY (*GetVertexAttribLdv)(GLuint index, GLenum pname, GLdouble *params); /* 1895 */ void APIENTRY (*GetVertexAttribLdvEXT)(GLuint index, GLenum pname, GLdouble *params); /* 1896 */ void APIENTRY (*GetVertexAttribLi64vNV)(GLuint index, GLenum pname, GLint64EXT *params); /* 1897 */ void APIENTRY (*GetVertexAttribLui64vARB)(GLuint index, GLenum pname, GLuint64EXT *params); /* 1898 */ void APIENTRY (*GetVertexAttribLui64vNV)(GLuint index, GLenum pname, GLuint64EXT *params); /* 1899 */ void APIENTRY (*GetVertexAttribPointerv)(GLuint index, GLenum pname, void * *pointer); /* 1900 */ void APIENTRY (*GetVertexAttribdv)(GLuint index, GLenum pname, GLdouble *params); /* 1901 */ void APIENTRY (*GetVertexAttribfv)(GLuint index, GLenum pname, GLfloat *params); /* 1902 */ void APIENTRY (*GetVertexAttribiv)(GLuint index, GLenum pname, GLint *params); /* 1903 */ void APIENTRY (*GetVideoCaptureStreamdvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); /* 1904 */ void APIENTRY (*GetVideoCaptureStreamfvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); /* 1905 */ void APIENTRY (*GetVideoCaptureStreamivNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); /* 1906 */ void APIENTRY (*GetVideoCaptureivNV)(GLuint video_capture_slot, GLenum pname, GLint *params); /* 1907 */ void APIENTRY (*GetVideoi64vNV)(GLuint video_slot, GLenum pname, GLint64EXT *params); /* 1908 */ void APIENTRY (*GetVideoivNV)(GLuint video_slot, GLenum pname, GLint *params); /* 1909 */ void APIENTRY (*GetVideoui64vNV)(GLuint video_slot, GLenum pname, GLuint64EXT *params); /* 1910 */ void APIENTRY (*GetVideouivNV)(GLuint video_slot, GLenum pname, GLuint *params); /* 1911 */ void APIENTRY (*GetnColorTableARB)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); /* 1912 */ void APIENTRY (*GetnCompressedTexImageARB)(GLenum target, GLint lod, GLsizei bufSize, void *img); /* 1913 */ void APIENTRY (*GetnConvolutionFilterARB)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); /* 1914 */ void APIENTRY (*GetnHistogramARB)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values); /* 1915 */ void APIENTRY (*GetnMapdvARB)(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); /* 1916 */ void APIENTRY (*GetnMapfvARB)(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); /* 1917 */ void APIENTRY (*GetnMapivARB)(GLenum target, GLenum query, GLsizei bufSize, GLint *v); /* 1918 */ void APIENTRY (*GetnMinmaxARB)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values); /* 1919 */ void APIENTRY (*GetnPixelMapfvARB)(GLenum map, GLsizei bufSize, GLfloat *values); /* 1920 */ void APIENTRY (*GetnPixelMapuivARB)(GLenum map, GLsizei bufSize, GLuint *values); /* 1921 */ void APIENTRY (*GetnPixelMapusvARB)(GLenum map, GLsizei bufSize, GLushort *values); /* 1922 */ void APIENTRY (*GetnPolygonStippleARB)(GLsizei bufSize, GLubyte *pattern); /* 1923 */ void APIENTRY (*GetnSeparableFilterARB)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); /* 1924 */ void APIENTRY (*GetnTexImageARB)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img); /* 1925 */ void APIENTRY (*GetnUniformdvARB)(GLuint program, GLint location, GLsizei bufSize, GLdouble *params); /* 1926 */ void APIENTRY (*GetnUniformfvARB)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); /* 1927 */ void APIENTRY (*GetnUniformivARB)(GLuint program, GLint location, GLsizei bufSize, GLint *params); /* 1928 */ void APIENTRY (*GetnUniformuivARB)(GLuint program, GLint location, GLsizei bufSize, GLuint *params); /* 1929 */ GLsync APIENTRY (*ImportSyncEXT)(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); /* 1930 */ void APIENTRY (*IndexFormatNV)(GLenum type, GLsizei stride); /* 1931 */ void APIENTRY (*IndexxOES)(GLfixed component); /* 1932 */ void APIENTRY (*IndexxvOES)(const GLfixed *component); /* 1933 */ void APIENTRY (*InsertEventMarkerEXT)(GLsizei length, const GLchar *marker); /* 1934 */ void APIENTRY (*InterpolatePathsNV)(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); /* 1935 */ void APIENTRY (*InvalidateBufferData)(GLuint buffer); /* 1936 */ void APIENTRY (*InvalidateBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr length); /* 1937 */ void APIENTRY (*InvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments); /* 1938 */ void APIENTRY (*InvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); /* 1939 */ void APIENTRY (*InvalidateTexImage)(GLuint texture, GLint level); /* 1940 */ void APIENTRY (*InvalidateTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); /* 1941 */ GLboolean APIENTRY (*IsBufferResidentNV)(GLenum target); /* 1942 */ GLboolean APIENTRY (*IsEnabledIndexedEXT)(GLenum target, GLuint index); /* 1943 */ GLboolean APIENTRY (*IsEnabledi)(GLenum target, GLuint index); /* 1944 */ GLboolean APIENTRY (*IsFramebuffer)(GLuint framebuffer); /* 1945 */ GLboolean APIENTRY (*IsFramebufferEXT)(GLuint framebuffer); /* 1946 */ GLboolean APIENTRY (*IsImageHandleResidentARB)(GLuint64 handle); /* 1947 */ GLboolean APIENTRY (*IsImageHandleResidentNV)(GLuint64 handle); /* 1948 */ GLboolean APIENTRY (*IsNameAMD)(GLenum identifier, GLuint name); /* 1949 */ GLboolean APIENTRY (*IsNamedBufferResidentNV)(GLuint buffer); /* 1950 */ GLboolean APIENTRY (*IsNamedStringARB)(GLint namelen, const GLchar *name); /* 1951 */ GLboolean APIENTRY (*IsPathNV)(GLuint path); /* 1952 */ GLboolean APIENTRY (*IsPointInFillPathNV)(GLuint path, GLuint mask, GLfloat x, GLfloat y); /* 1953 */ GLboolean APIENTRY (*IsPointInStrokePathNV)(GLuint path, GLfloat x, GLfloat y); /* 1954 */ GLboolean APIENTRY (*IsProgram)(GLuint program); /* 1955 */ GLboolean APIENTRY (*IsProgramPipeline)(GLuint pipeline); /* 1956 */ GLboolean APIENTRY (*IsRenderbuffer)(GLuint renderbuffer); /* 1957 */ GLboolean APIENTRY (*IsRenderbufferEXT)(GLuint renderbuffer); /* 1958 */ GLboolean APIENTRY (*IsSampler)(GLuint sampler); /* 1959 */ GLboolean APIENTRY (*IsShader)(GLuint shader); /* 1960 */ GLboolean APIENTRY (*IsSync)(GLsync sync); /* 1961 */ GLboolean APIENTRY (*IsTextureHandleResidentARB)(GLuint64 handle); /* 1962 */ GLboolean APIENTRY (*IsTextureHandleResidentNV)(GLuint64 handle); /* 1963 */ GLboolean APIENTRY (*IsTransformFeedback)(GLuint id); /* 1964 */ GLboolean APIENTRY (*IsTransformFeedbackNV)(GLuint id); /* 1965 */ GLboolean APIENTRY (*IsVertexArray)(GLuint array); /* 1966 */ GLboolean APIENTRY (*IsVertexAttribEnabledAPPLE)(GLuint index, GLenum pname); /* 1967 */ void APIENTRY (*LabelObjectEXT)(GLenum type, GLuint object, GLsizei length, const GLchar *label); /* 1968 */ void APIENTRY (*LightModelxOES)(GLenum pname, GLfixed param); /* 1969 */ void APIENTRY (*LightModelxvOES)(GLenum pname, const GLfixed *param); /* 1970 */ void APIENTRY (*LightxOES)(GLenum light, GLenum pname, GLfixed param); /* 1971 */ void APIENTRY (*LightxvOES)(GLenum light, GLenum pname, const GLfixed *params); /* 1972 */ void APIENTRY (*LineWidthxOES)(GLfixed width); /* 1973 */ void APIENTRY (*LinkProgram)(GLuint program); /* 1974 */ void APIENTRY (*LoadMatrixxOES)(const GLfixed *m); /* 1975 */ void APIENTRY (*LoadTransposeMatrixxOES)(const GLfixed *m); /* 1976 */ void APIENTRY (*MakeBufferNonResidentNV)(GLenum target); /* 1977 */ void APIENTRY (*MakeBufferResidentNV)(GLenum target, GLenum access); /* 1978 */ void APIENTRY (*MakeImageHandleNonResidentARB)(GLuint64 handle); /* 1979 */ void APIENTRY (*MakeImageHandleNonResidentNV)(GLuint64 handle); /* 1980 */ void APIENTRY (*MakeImageHandleResidentARB)(GLuint64 handle, GLenum access); /* 1981 */ void APIENTRY (*MakeImageHandleResidentNV)(GLuint64 handle, GLenum access); /* 1982 */ void APIENTRY (*MakeNamedBufferNonResidentNV)(GLuint buffer); /* 1983 */ void APIENTRY (*MakeNamedBufferResidentNV)(GLuint buffer, GLenum access); /* 1984 */ void APIENTRY (*MakeTextureHandleNonResidentARB)(GLuint64 handle); /* 1985 */ void APIENTRY (*MakeTextureHandleNonResidentNV)(GLuint64 handle); /* 1986 */ void APIENTRY (*MakeTextureHandleResidentARB)(GLuint64 handle); /* 1987 */ void APIENTRY (*MakeTextureHandleResidentNV)(GLuint64 handle); /* 1988 */ void APIENTRY (*Map1xOES)(GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); /* 1989 */ void APIENTRY (*Map2xOES)(GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); /* 1990 */ void * APIENTRY (*MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); /* 1991 */ void APIENTRY (*MapGrid1xOES)(GLint n, GLfixed u1, GLfixed u2); /* 1992 */ void APIENTRY (*MapGrid2xOES)(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); /* 1993 */ void * APIENTRY (*MapNamedBufferEXT)(GLuint buffer, GLenum access); /* 1994 */ void * APIENTRY (*MapNamedBufferRangeEXT)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); /* 1995 */ void * APIENTRY (*MapTexture2DINTEL)(GLuint texture, GLint level, GLbitfield access, const GLint *stride, const GLenum *layout); /* 1996 */ void APIENTRY (*MapVertexAttrib1dAPPLE)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); /* 1997 */ void APIENTRY (*MapVertexAttrib1fAPPLE)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); /* 1998 */ void APIENTRY (*MapVertexAttrib2dAPPLE)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); /* 1999 */ void APIENTRY (*MapVertexAttrib2fAPPLE)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); /* 2000 */ void APIENTRY (*MaterialxOES)(GLenum face, GLenum pname, GLfixed param); /* 2001 */ void APIENTRY (*MaterialxvOES)(GLenum face, GLenum pname, const GLfixed *param); /* 2002 */ void APIENTRY (*MatrixFrustumEXT)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); /* 2003 */ void APIENTRY (*MatrixLoadIdentityEXT)(GLenum mode); /* 2004 */ void APIENTRY (*MatrixLoadTransposedEXT)(GLenum mode, const GLdouble *m); /* 2005 */ void APIENTRY (*MatrixLoadTransposefEXT)(GLenum mode, const GLfloat *m); /* 2006 */ void APIENTRY (*MatrixLoaddEXT)(GLenum mode, const GLdouble *m); /* 2007 */ void APIENTRY (*MatrixLoadfEXT)(GLenum mode, const GLfloat *m); /* 2008 */ void APIENTRY (*MatrixMultTransposedEXT)(GLenum mode, const GLdouble *m); /* 2009 */ void APIENTRY (*MatrixMultTransposefEXT)(GLenum mode, const GLfloat *m); /* 2010 */ void APIENTRY (*MatrixMultdEXT)(GLenum mode, const GLdouble *m); /* 2011 */ void APIENTRY (*MatrixMultfEXT)(GLenum mode, const GLfloat *m); /* 2012 */ void APIENTRY (*MatrixOrthoEXT)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); /* 2013 */ void APIENTRY (*MatrixPopEXT)(GLenum mode); /* 2014 */ void APIENTRY (*MatrixPushEXT)(GLenum mode); /* 2015 */ void APIENTRY (*MatrixRotatedEXT)(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); /* 2016 */ void APIENTRY (*MatrixRotatefEXT)(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); /* 2017 */ void APIENTRY (*MatrixScaledEXT)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); /* 2018 */ void APIENTRY (*MatrixScalefEXT)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); /* 2019 */ void APIENTRY (*MatrixTranslatedEXT)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); /* 2020 */ void APIENTRY (*MatrixTranslatefEXT)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); /* 2021 */ void APIENTRY (*MemoryBarrier)(GLbitfield barriers); /* 2022 */ void APIENTRY (*MemoryBarrierEXT)(GLbitfield barriers); /* 2023 */ void APIENTRY (*MinSampleShading)(GLfloat value); /* 2024 */ void APIENTRY (*MinSampleShadingARB)(GLfloat value); /* 2025 */ void APIENTRY (*MultMatrixxOES)(const GLfixed *m); /* 2026 */ void APIENTRY (*MultTransposeMatrixxOES)(const GLfixed *m); /* 2027 */ void APIENTRY (*MultiDrawArraysIndirect)(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); /* 2028 */ void APIENTRY (*MultiDrawArraysIndirectAMD)(GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); /* 2029 */ void APIENTRY (*MultiDrawArraysIndirectBindlessNV)(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); /* 2030 */ void APIENTRY (*MultiDrawArraysIndirectCountARB)(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); /* 2031 */ void APIENTRY (*MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex); /* 2032 */ void APIENTRY (*MultiDrawElementsIndirect)(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); /* 2033 */ void APIENTRY (*MultiDrawElementsIndirectAMD)(GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); /* 2034 */ void APIENTRY (*MultiDrawElementsIndirectBindlessNV)(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); /* 2035 */ void APIENTRY (*MultiDrawElementsIndirectCountARB)(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); /* 2036 */ void APIENTRY (*MultiTexBufferEXT)(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); /* 2037 */ void APIENTRY (*MultiTexCoord1bOES)(GLenum texture, GLbyte32 s); /* 2038 */ void APIENTRY (*MultiTexCoord1bvOES)(GLenum texture, const GLbyte *coords); /* 2039 */ void APIENTRY (*MultiTexCoord1xOES)(GLenum texture, GLfixed s); /* 2040 */ void APIENTRY (*MultiTexCoord1xvOES)(GLenum texture, const GLfixed *coords); /* 2041 */ void APIENTRY (*MultiTexCoord2bOES)(GLenum texture, GLbyte32 s, GLbyte32 t); /* 2042 */ void APIENTRY (*MultiTexCoord2bvOES)(GLenum texture, const GLbyte *coords); /* 2043 */ void APIENTRY (*MultiTexCoord2xOES)(GLenum texture, GLfixed s, GLfixed t); /* 2044 */ void APIENTRY (*MultiTexCoord2xvOES)(GLenum texture, const GLfixed *coords); /* 2045 */ void APIENTRY (*MultiTexCoord3bOES)(GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r); /* 2046 */ void APIENTRY (*MultiTexCoord3bvOES)(GLenum texture, const GLbyte *coords); /* 2047 */ void APIENTRY (*MultiTexCoord3xOES)(GLenum texture, GLfixed s, GLfixed t, GLfixed r); /* 2048 */ void APIENTRY (*MultiTexCoord3xvOES)(GLenum texture, const GLfixed *coords); /* 2049 */ void APIENTRY (*MultiTexCoord4bOES)(GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q); /* 2050 */ void APIENTRY (*MultiTexCoord4bvOES)(GLenum texture, const GLbyte *coords); /* 2051 */ void APIENTRY (*MultiTexCoord4xOES)(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); /* 2052 */ void APIENTRY (*MultiTexCoord4xvOES)(GLenum texture, const GLfixed *coords); /* 2053 */ void APIENTRY (*MultiTexCoordP1ui)(GLenum texture, GLenum type, GLuint coords); /* 2054 */ void APIENTRY (*MultiTexCoordP1uiv)(GLenum texture, GLenum type, const GLuint *coords); /* 2055 */ void APIENTRY (*MultiTexCoordP2ui)(GLenum texture, GLenum type, GLuint coords); /* 2056 */ void APIENTRY (*MultiTexCoordP2uiv)(GLenum texture, GLenum type, const GLuint *coords); /* 2057 */ void APIENTRY (*MultiTexCoordP3ui)(GLenum texture, GLenum type, GLuint coords); /* 2058 */ void APIENTRY (*MultiTexCoordP3uiv)(GLenum texture, GLenum type, const GLuint *coords); /* 2059 */ void APIENTRY (*MultiTexCoordP4ui)(GLenum texture, GLenum type, GLuint coords); /* 2060 */ void APIENTRY (*MultiTexCoordP4uiv)(GLenum texture, GLenum type, const GLuint *coords); /* 2061 */ void APIENTRY (*MultiTexCoordPointerEXT)(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer); /* 2062 */ void APIENTRY (*MultiTexEnvfEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat param); /* 2063 */ void APIENTRY (*MultiTexEnvfvEXT)(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); /* 2064 */ void APIENTRY (*MultiTexEnviEXT)(GLenum texunit, GLenum target, GLenum pname, GLint param); /* 2065 */ void APIENTRY (*MultiTexEnvivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); /* 2066 */ void APIENTRY (*MultiTexGendEXT)(GLenum texunit, GLenum coord, GLenum pname, GLdouble param); /* 2067 */ void APIENTRY (*MultiTexGendvEXT)(GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); /* 2068 */ void APIENTRY (*MultiTexGenfEXT)(GLenum texunit, GLenum coord, GLenum pname, GLfloat param); /* 2069 */ void APIENTRY (*MultiTexGenfvEXT)(GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); /* 2070 */ void APIENTRY (*MultiTexGeniEXT)(GLenum texunit, GLenum coord, GLenum pname, GLint param); /* 2071 */ void APIENTRY (*MultiTexGenivEXT)(GLenum texunit, GLenum coord, GLenum pname, const GLint *params); /* 2072 */ void APIENTRY (*MultiTexImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); /* 2073 */ void APIENTRY (*MultiTexImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); /* 2074 */ void APIENTRY (*MultiTexImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); /* 2075 */ void APIENTRY (*MultiTexParameterIivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); /* 2076 */ void APIENTRY (*MultiTexParameterIuivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLuint *params); /* 2077 */ void APIENTRY (*MultiTexParameterfEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat param); /* 2078 */ void APIENTRY (*MultiTexParameterfvEXT)(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); /* 2079 */ void APIENTRY (*MultiTexParameteriEXT)(GLenum texunit, GLenum target, GLenum pname, GLint param); /* 2080 */ void APIENTRY (*MultiTexParameterivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); /* 2081 */ void APIENTRY (*MultiTexRenderbufferEXT)(GLenum texunit, GLenum target, GLuint renderbuffer); /* 2082 */ void APIENTRY (*MultiTexSubImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); /* 2083 */ void APIENTRY (*MultiTexSubImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); /* 2084 */ void APIENTRY (*MultiTexSubImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); /* 2085 */ void APIENTRY (*NamedBufferDataEXT)(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); /* 2086 */ void APIENTRY (*NamedBufferStorageEXT)(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); /* 2087 */ void APIENTRY (*NamedBufferSubDataEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); /* 2088 */ void APIENTRY (*NamedCopyBufferSubDataEXT)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 2089 */ void APIENTRY (*NamedFramebufferParameteriEXT)(GLuint framebuffer, GLenum pname, GLint param); /* 2090 */ void APIENTRY (*NamedFramebufferRenderbufferEXT)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 2091 */ void APIENTRY (*NamedFramebufferTexture1DEXT)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 2092 */ void APIENTRY (*NamedFramebufferTexture2DEXT)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 2093 */ void APIENTRY (*NamedFramebufferTexture3DEXT)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); /* 2094 */ void APIENTRY (*NamedFramebufferTextureEXT)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); /* 2095 */ void APIENTRY (*NamedFramebufferTextureFaceEXT)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); /* 2096 */ void APIENTRY (*NamedFramebufferTextureLayerEXT)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 2097 */ void APIENTRY (*NamedProgramLocalParameter4dEXT)(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 2098 */ void APIENTRY (*NamedProgramLocalParameter4dvEXT)(GLuint program, GLenum target, GLuint index, const GLdouble *params); /* 2099 */ void APIENTRY (*NamedProgramLocalParameter4fEXT)(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 2100 */ void APIENTRY (*NamedProgramLocalParameter4fvEXT)(GLuint program, GLenum target, GLuint index, const GLfloat *params); /* 2101 */ void APIENTRY (*NamedProgramLocalParameterI4iEXT)(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); /* 2102 */ void APIENTRY (*NamedProgramLocalParameterI4ivEXT)(GLuint program, GLenum target, GLuint index, const GLint *params); /* 2103 */ void APIENTRY (*NamedProgramLocalParameterI4uiEXT)(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 2104 */ void APIENTRY (*NamedProgramLocalParameterI4uivEXT)(GLuint program, GLenum target, GLuint index, const GLuint *params); /* 2105 */ void APIENTRY (*NamedProgramLocalParameters4fvEXT)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); /* 2106 */ void APIENTRY (*NamedProgramLocalParametersI4ivEXT)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); /* 2107 */ void APIENTRY (*NamedProgramLocalParametersI4uivEXT)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); /* 2108 */ void APIENTRY (*NamedProgramStringEXT)(GLuint program, GLenum target, GLenum format, GLsizei len, const void *string); /* 2109 */ void APIENTRY (*NamedRenderbufferStorageEXT)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); /* 2110 */ void APIENTRY (*NamedRenderbufferStorageMultisampleCoverageEXT)(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); /* 2111 */ void APIENTRY (*NamedRenderbufferStorageMultisampleEXT)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 2112 */ void APIENTRY (*NamedStringARB)(GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); /* 2113 */ void APIENTRY (*Normal3xOES)(GLfixed nx, GLfixed ny, GLfixed nz); /* 2114 */ void APIENTRY (*Normal3xvOES)(const GLfixed *coords); /* 2115 */ void APIENTRY (*NormalFormatNV)(GLenum type, GLsizei stride); /* 2116 */ void APIENTRY (*NormalP3ui)(GLenum type, GLuint coords); /* 2117 */ void APIENTRY (*NormalP3uiv)(GLenum type, const GLuint *coords); /* 2118 */ void APIENTRY (*ObjectLabel)(GLenum identifier, GLuint name, GLsizei length, const GLchar *label); /* 2119 */ void APIENTRY (*ObjectPtrLabel)(const void *ptr, GLsizei length, const GLchar *label); /* 2120 */ GLenum APIENTRY (*ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 2121 */ GLenum APIENTRY (*ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 2122 */ void APIENTRY (*OrthofOES)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); /* 2123 */ void APIENTRY (*OrthoxOES)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); /* 2124 */ void APIENTRY (*PassThroughxOES)(GLfixed token); /* 2125 */ void APIENTRY (*PatchParameterfv)(GLenum pname, const GLfloat *values); /* 2126 */ void APIENTRY (*PatchParameteri)(GLenum pname, GLint value); /* 2127 */ void APIENTRY (*PathColorGenNV)(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); /* 2128 */ void APIENTRY (*PathCommandsNV)(GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); /* 2129 */ void APIENTRY (*PathCoordsNV)(GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); /* 2130 */ void APIENTRY (*PathCoverDepthFuncNV)(GLenum func); /* 2131 */ void APIENTRY (*PathDashArrayNV)(GLuint path, GLsizei dashCount, const GLfloat *dashArray); /* 2132 */ void APIENTRY (*PathFogGenNV)(GLenum genMode); /* 2133 */ void APIENTRY (*PathGlyphRangeNV)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); /* 2134 */ void APIENTRY (*PathGlyphsNV)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); /* 2135 */ void APIENTRY (*PathParameterfNV)(GLuint path, GLenum pname, GLfloat value); /* 2136 */ void APIENTRY (*PathParameterfvNV)(GLuint path, GLenum pname, const GLfloat *value); /* 2137 */ void APIENTRY (*PathParameteriNV)(GLuint path, GLenum pname, GLint value); /* 2138 */ void APIENTRY (*PathParameterivNV)(GLuint path, GLenum pname, const GLint *value); /* 2139 */ void APIENTRY (*PathStencilDepthOffsetNV)(GLfloat factor, GLfloat units); /* 2140 */ void APIENTRY (*PathStencilFuncNV)(GLenum func, GLint ref, GLuint mask); /* 2141 */ void APIENTRY (*PathStringNV)(GLuint path, GLenum format, GLsizei length, const void *pathString); /* 2142 */ void APIENTRY (*PathSubCommandsNV)(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); /* 2143 */ void APIENTRY (*PathSubCoordsNV)(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); /* 2144 */ void APIENTRY (*PathTexGenNV)(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); /* 2145 */ void APIENTRY (*PauseTransformFeedback)(void); /* 2146 */ void APIENTRY (*PauseTransformFeedbackNV)(void); /* 2147 */ void APIENTRY (*PixelMapx)(GLenum map, GLint size, const GLfixed *values); /* 2148 */ void APIENTRY (*PixelStorex)(GLenum pname, GLfixed param); /* 2149 */ void APIENTRY (*PixelTransferxOES)(GLenum pname, GLfixed param); /* 2150 */ void APIENTRY (*PixelZoomxOES)(GLfixed xfactor, GLfixed yfactor); /* 2151 */ GLboolean APIENTRY (*PointAlongPathNV)(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); /* 2152 */ void APIENTRY (*PointParameterxvOES)(GLenum pname, const GLfixed *params); /* 2153 */ void APIENTRY (*PointSizePointerAPPLE)(GLenum type, GLsizei stride, const GLvoid *pointer); /* 2154 */ void APIENTRY (*PointSizexOES)(GLfixed size); /* 2155 */ void APIENTRY (*PolygonOffsetxOES)(GLfixed factor, GLfixed units); /* 2156 */ void APIENTRY (*PopDebugGroup)(void); /* 2157 */ void APIENTRY (*PopGroupMarkerEXT)(void); /* 2158 */ void APIENTRY (*PresentFrameDualFillNV)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); /* 2159 */ void APIENTRY (*PresentFrameKeyedNV)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); /* 2160 */ void APIENTRY (*PrimitiveRestartIndex)(GLuint index); /* 2161 */ void APIENTRY (*PrioritizeTexturesxOES)(GLsizei n, const GLuint *textures, const GLfixed *priorities); /* 2162 */ void APIENTRY (*ProgramBinary)(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); /* 2163 */ void APIENTRY (*ProgramBufferParametersIivNV)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params); /* 2164 */ void APIENTRY (*ProgramBufferParametersIuivNV)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params); /* 2165 */ void APIENTRY (*ProgramBufferParametersfvNV)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params); /* 2166 */ void APIENTRY (*ProgramCallbackMESA)(GLenum target, GLprogramcallbackMESA callback, GLvoid *data); /* 2167 */ void APIENTRY (*ProgramEnvParameterI4iNV)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); /* 2168 */ void APIENTRY (*ProgramEnvParameterI4ivNV)(GLenum target, GLuint index, const GLint *params); /* 2169 */ void APIENTRY (*ProgramEnvParameterI4uiNV)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 2170 */ void APIENTRY (*ProgramEnvParameterI4uivNV)(GLenum target, GLuint index, const GLuint *params); /* 2171 */ void APIENTRY (*ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat *params); /* 2172 */ void APIENTRY (*ProgramEnvParametersI4ivNV)(GLenum target, GLuint index, GLsizei count, const GLint *params); /* 2173 */ void APIENTRY (*ProgramEnvParametersI4uivNV)(GLenum target, GLuint index, GLsizei count, const GLuint *params); /* 2174 */ void APIENTRY (*ProgramLocalParameterI4iNV)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); /* 2175 */ void APIENTRY (*ProgramLocalParameterI4ivNV)(GLenum target, GLuint index, const GLint *params); /* 2176 */ void APIENTRY (*ProgramLocalParameterI4uiNV)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 2177 */ void APIENTRY (*ProgramLocalParameterI4uivNV)(GLenum target, GLuint index, const GLuint *params); /* 2178 */ void APIENTRY (*ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat *params); /* 2179 */ void APIENTRY (*ProgramLocalParametersI4ivNV)(GLenum target, GLuint index, GLsizei count, const GLint *params); /* 2180 */ void APIENTRY (*ProgramLocalParametersI4uivNV)(GLenum target, GLuint index, GLsizei count, const GLuint *params); /* 2181 */ void APIENTRY (*ProgramParameteri)(GLuint program, GLenum pname, GLint value); /* 2182 */ void APIENTRY (*ProgramParameteriARB)(GLuint program, GLenum pname, GLint value); /* 2183 */ void APIENTRY (*ProgramParameteriEXT)(GLuint program, GLenum pname, GLint value); /* 2184 */ void APIENTRY (*ProgramSubroutineParametersuivNV)(GLenum target, GLsizei count, const GLuint *params); /* 2185 */ void APIENTRY (*ProgramUniform1d)(GLuint program, GLint location, GLdouble v0); /* 2186 */ void APIENTRY (*ProgramUniform1dEXT)(GLuint program, GLint location, GLdouble x); /* 2187 */ void APIENTRY (*ProgramUniform1dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2188 */ void APIENTRY (*ProgramUniform1dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2189 */ void APIENTRY (*ProgramUniform1f)(GLuint program, GLint location, GLfloat v0); /* 2190 */ void APIENTRY (*ProgramUniform1fEXT)(GLuint program, GLint location, GLfloat v0); /* 2191 */ void APIENTRY (*ProgramUniform1fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2192 */ void APIENTRY (*ProgramUniform1fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2193 */ void APIENTRY (*ProgramUniform1i)(GLuint program, GLint location, GLint v0); /* 2194 */ void APIENTRY (*ProgramUniform1i64NV)(GLuint program, GLint location, GLint64EXT x); /* 2195 */ void APIENTRY (*ProgramUniform1i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); /* 2196 */ void APIENTRY (*ProgramUniform1iEXT)(GLuint program, GLint location, GLint v0); /* 2197 */ void APIENTRY (*ProgramUniform1iv)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2198 */ void APIENTRY (*ProgramUniform1ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2199 */ void APIENTRY (*ProgramUniform1ui)(GLuint program, GLint location, GLuint v0); /* 2200 */ void APIENTRY (*ProgramUniform1ui64NV)(GLuint program, GLint location, GLuint64EXT x); /* 2201 */ void APIENTRY (*ProgramUniform1ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); /* 2202 */ void APIENTRY (*ProgramUniform1uiEXT)(GLuint program, GLint location, GLuint v0); /* 2203 */ void APIENTRY (*ProgramUniform1uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2204 */ void APIENTRY (*ProgramUniform1uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2205 */ void APIENTRY (*ProgramUniform2d)(GLuint program, GLint location, GLdouble v0, GLdouble v1); /* 2206 */ void APIENTRY (*ProgramUniform2dEXT)(GLuint program, GLint location, GLdouble x, GLdouble y); /* 2207 */ void APIENTRY (*ProgramUniform2dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2208 */ void APIENTRY (*ProgramUniform2dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2209 */ void APIENTRY (*ProgramUniform2f)(GLuint program, GLint location, GLfloat v0, GLfloat v1); /* 2210 */ void APIENTRY (*ProgramUniform2fEXT)(GLuint program, GLint location, GLfloat v0, GLfloat v1); /* 2211 */ void APIENTRY (*ProgramUniform2fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2212 */ void APIENTRY (*ProgramUniform2fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2213 */ void APIENTRY (*ProgramUniform2i)(GLuint program, GLint location, GLint v0, GLint v1); /* 2214 */ void APIENTRY (*ProgramUniform2i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y); /* 2215 */ void APIENTRY (*ProgramUniform2i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); /* 2216 */ void APIENTRY (*ProgramUniform2iEXT)(GLuint program, GLint location, GLint v0, GLint v1); /* 2217 */ void APIENTRY (*ProgramUniform2iv)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2218 */ void APIENTRY (*ProgramUniform2ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2219 */ void APIENTRY (*ProgramUniform2ui)(GLuint program, GLint location, GLuint v0, GLuint v1); /* 2220 */ void APIENTRY (*ProgramUniform2ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); /* 2221 */ void APIENTRY (*ProgramUniform2ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); /* 2222 */ void APIENTRY (*ProgramUniform2uiEXT)(GLuint program, GLint location, GLuint v0, GLuint v1); /* 2223 */ void APIENTRY (*ProgramUniform2uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2224 */ void APIENTRY (*ProgramUniform2uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2225 */ void APIENTRY (*ProgramUniform3d)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); /* 2226 */ void APIENTRY (*ProgramUniform3dEXT)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); /* 2227 */ void APIENTRY (*ProgramUniform3dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2228 */ void APIENTRY (*ProgramUniform3dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2229 */ void APIENTRY (*ProgramUniform3f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); /* 2230 */ void APIENTRY (*ProgramUniform3fEXT)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); /* 2231 */ void APIENTRY (*ProgramUniform3fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2232 */ void APIENTRY (*ProgramUniform3fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2233 */ void APIENTRY (*ProgramUniform3i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); /* 2234 */ void APIENTRY (*ProgramUniform3i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); /* 2235 */ void APIENTRY (*ProgramUniform3i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); /* 2236 */ void APIENTRY (*ProgramUniform3iEXT)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); /* 2237 */ void APIENTRY (*ProgramUniform3iv)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2238 */ void APIENTRY (*ProgramUniform3ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2239 */ void APIENTRY (*ProgramUniform3ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); /* 2240 */ void APIENTRY (*ProgramUniform3ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); /* 2241 */ void APIENTRY (*ProgramUniform3ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); /* 2242 */ void APIENTRY (*ProgramUniform3uiEXT)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); /* 2243 */ void APIENTRY (*ProgramUniform3uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2244 */ void APIENTRY (*ProgramUniform3uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2245 */ void APIENTRY (*ProgramUniform4d)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); /* 2246 */ void APIENTRY (*ProgramUniform4dEXT)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 2247 */ void APIENTRY (*ProgramUniform4dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2248 */ void APIENTRY (*ProgramUniform4dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble *value); /* 2249 */ void APIENTRY (*ProgramUniform4f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); /* 2250 */ void APIENTRY (*ProgramUniform4fEXT)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); /* 2251 */ void APIENTRY (*ProgramUniform4fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2252 */ void APIENTRY (*ProgramUniform4fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); /* 2253 */ void APIENTRY (*ProgramUniform4i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); /* 2254 */ void APIENTRY (*ProgramUniform4i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); /* 2255 */ void APIENTRY (*ProgramUniform4i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); /* 2256 */ void APIENTRY (*ProgramUniform4iEXT)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); /* 2257 */ void APIENTRY (*ProgramUniform4iv)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2258 */ void APIENTRY (*ProgramUniform4ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); /* 2259 */ void APIENTRY (*ProgramUniform4ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); /* 2260 */ void APIENTRY (*ProgramUniform4ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); /* 2261 */ void APIENTRY (*ProgramUniform4ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); /* 2262 */ void APIENTRY (*ProgramUniform4uiEXT)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); /* 2263 */ void APIENTRY (*ProgramUniform4uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2264 */ void APIENTRY (*ProgramUniform4uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint *value); /* 2265 */ void APIENTRY (*ProgramUniformHandleui64ARB)(GLuint program, GLint location, GLuint64 value); /* 2266 */ void APIENTRY (*ProgramUniformHandleui64NV)(GLuint program, GLint location, GLuint64 value); /* 2267 */ void APIENTRY (*ProgramUniformHandleui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 *values); /* 2268 */ void APIENTRY (*ProgramUniformHandleui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64 *values); /* 2269 */ void APIENTRY (*ProgramUniformMatrix2dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2270 */ void APIENTRY (*ProgramUniformMatrix2dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2271 */ void APIENTRY (*ProgramUniformMatrix2fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2272 */ void APIENTRY (*ProgramUniformMatrix2fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2273 */ void APIENTRY (*ProgramUniformMatrix2x3dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2274 */ void APIENTRY (*ProgramUniformMatrix2x3dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2275 */ void APIENTRY (*ProgramUniformMatrix2x3fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2276 */ void APIENTRY (*ProgramUniformMatrix2x3fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2277 */ void APIENTRY (*ProgramUniformMatrix2x4dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2278 */ void APIENTRY (*ProgramUniformMatrix2x4dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2279 */ void APIENTRY (*ProgramUniformMatrix2x4fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2280 */ void APIENTRY (*ProgramUniformMatrix2x4fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2281 */ void APIENTRY (*ProgramUniformMatrix3dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2282 */ void APIENTRY (*ProgramUniformMatrix3dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2283 */ void APIENTRY (*ProgramUniformMatrix3fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2284 */ void APIENTRY (*ProgramUniformMatrix3fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2285 */ void APIENTRY (*ProgramUniformMatrix3x2dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2286 */ void APIENTRY (*ProgramUniformMatrix3x2dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2287 */ void APIENTRY (*ProgramUniformMatrix3x2fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2288 */ void APIENTRY (*ProgramUniformMatrix3x2fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2289 */ void APIENTRY (*ProgramUniformMatrix3x4dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2290 */ void APIENTRY (*ProgramUniformMatrix3x4dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2291 */ void APIENTRY (*ProgramUniformMatrix3x4fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2292 */ void APIENTRY (*ProgramUniformMatrix3x4fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2293 */ void APIENTRY (*ProgramUniformMatrix4dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2294 */ void APIENTRY (*ProgramUniformMatrix4dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2295 */ void APIENTRY (*ProgramUniformMatrix4fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2296 */ void APIENTRY (*ProgramUniformMatrix4fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2297 */ void APIENTRY (*ProgramUniformMatrix4x2dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2298 */ void APIENTRY (*ProgramUniformMatrix4x2dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2299 */ void APIENTRY (*ProgramUniformMatrix4x2fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2300 */ void APIENTRY (*ProgramUniformMatrix4x2fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2301 */ void APIENTRY (*ProgramUniformMatrix4x3dv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2302 */ void APIENTRY (*ProgramUniformMatrix4x3dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2303 */ void APIENTRY (*ProgramUniformMatrix4x3fv)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2304 */ void APIENTRY (*ProgramUniformMatrix4x3fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2305 */ void APIENTRY (*ProgramUniformui64NV)(GLuint program, GLint location, GLuint64EXT value); /* 2306 */ void APIENTRY (*ProgramUniformui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); /* 2307 */ void APIENTRY (*ProgramVertexLimitNV)(GLenum target, GLint limit); /* 2308 */ void APIENTRY (*ProvokingVertex)(GLenum mode); /* 2309 */ void APIENTRY (*ProvokingVertexEXT)(GLenum mode); /* 2310 */ void APIENTRY (*PushClientAttribDefaultEXT)(GLbitfield mask); /* 2311 */ void APIENTRY (*PushDebugGroup)(GLenum source, GLuint id, GLsizei length, const GLchar *message); /* 2312 */ void APIENTRY (*PushGroupMarkerEXT)(GLsizei length, const GLchar *marker); /* 2313 */ void APIENTRY (*QueryCounter)(GLuint id, GLenum target); /* 2314 */ GLbitfield APIENTRY (*QueryMatrixxOES)(GLfixed *mantissa, GLint *exponent); /* 2315 */ void APIENTRY (*QueryObjectParameteruiAMD)(GLenum target, GLuint id, GLenum pname, GLuint param); /* 2316 */ void APIENTRY (*RasterPos2xOES)(GLfixed x, GLfixed y); /* 2317 */ void APIENTRY (*RasterPos2xvOES)(const GLfixed *coords); /* 2318 */ void APIENTRY (*RasterPos3xOES)(GLfixed x, GLfixed y, GLfixed z); /* 2319 */ void APIENTRY (*RasterPos3xvOES)(const GLfixed *coords); /* 2320 */ void APIENTRY (*RasterPos4xOES)(GLfixed x, GLfixed y, GLfixed z, GLfixed w); /* 2321 */ void APIENTRY (*RasterPos4xvOES)(const GLfixed *coords); /* 2322 */ void APIENTRY (*ReadnPixelsARB)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); /* 2323 */ void APIENTRY (*RectxOES)(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); /* 2324 */ void APIENTRY (*RectxvOES)(const GLfixed *v1, const GLfixed *v2); /* 2325 */ void APIENTRY (*ReleaseShaderCompiler)(void); /* 2326 */ void APIENTRY (*RenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); /* 2327 */ void APIENTRY (*RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); /* 2328 */ void APIENTRY (*RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 2329 */ void APIENTRY (*RenderbufferStorageMultisampleCoverageNV)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); /* 2330 */ void APIENTRY (*RenderbufferStorageMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 2331 */ void APIENTRY (*ResumeTransformFeedback)(void); /* 2332 */ void APIENTRY (*ResumeTransformFeedbackNV)(void); /* 2333 */ void APIENTRY (*RotatexOES)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); /* 2334 */ void APIENTRY (*SampleCoverageOES)(GLfixed value, GLboolean32 invert); /* 2335 */ void APIENTRY (*SampleMaskIndexedNV)(GLuint index, GLbitfield mask); /* 2336 */ void APIENTRY (*SampleMaski)(GLuint maskNumber, GLbitfield mask); /* 2337 */ void APIENTRY (*SamplePass)(GLenum mode); /* 2338 */ void APIENTRY (*SamplePassARB)(GLenum mode); /* 2339 */ void APIENTRY (*SamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint *param); /* 2340 */ void APIENTRY (*SamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint *param); /* 2341 */ void APIENTRY (*SamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param); /* 2342 */ void APIENTRY (*SamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat *param); /* 2343 */ void APIENTRY (*SamplerParameteri)(GLuint sampler, GLenum pname, GLint param); /* 2344 */ void APIENTRY (*SamplerParameteriv)(GLuint sampler, GLenum pname, const GLint *param); /* 2345 */ void APIENTRY (*ScalexOES)(GLfixed x, GLfixed y, GLfixed z); /* 2346 */ void APIENTRY (*ScissorArrayv)(GLuint first, GLsizei count, const GLint *v); /* 2347 */ void APIENTRY (*ScissorIndexed)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); /* 2348 */ void APIENTRY (*ScissorIndexedv)(GLuint index, const GLint *v); /* 2349 */ void APIENTRY (*SecondaryColorFormatNV)(GLint size, GLenum type, GLsizei stride); /* 2350 */ void APIENTRY (*SecondaryColorP3ui)(GLenum type, GLuint color); /* 2351 */ void APIENTRY (*SecondaryColorP3uiv)(GLenum type, const GLuint *color); /* 2352 */ void APIENTRY (*SelectPerfMonitorCountersAMD)(GLuint monitor, GLboolean32 enable, GLuint group, GLint numCounters, GLuint *counterList); /* 2353 */ void APIENTRY (*SetMultisamplefvAMD)(GLenum pname, GLuint index, const GLfloat *val); /* 2354 */ void APIENTRY (*ShaderBinary)(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); /* 2355 */ void APIENTRY (*ShaderSource)(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length); /* 2356 */ void APIENTRY (*ShaderStorageBlockBinding)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); /* 2357 */ void APIENTRY (*StencilClearTagEXT)(GLsizei stencilTagBits, GLuint stencilClearTag); /* 2358 */ void APIENTRY (*StencilFillPathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); /* 2359 */ void APIENTRY (*StencilFillPathNV)(GLuint path, GLenum fillMode, GLuint mask); /* 2360 */ void APIENTRY (*StencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask); /* 2361 */ void APIENTRY (*StencilMaskSeparate)(GLenum face, GLuint mask); /* 2362 */ void APIENTRY (*StencilOpSeparate)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); /* 2363 */ void APIENTRY (*StencilOpValueAMD)(GLenum face, GLuint value); /* 2364 */ void APIENTRY (*StencilStrokePathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); /* 2365 */ void APIENTRY (*StencilStrokePathNV)(GLuint path, GLint reference, GLuint mask); /* 2366 */ void APIENTRY (*StringMarkerGREMEDY)(GLsizei len, const void *string); /* 2367 */ void APIENTRY (*SwapAPPLE)(void); /* 2368 */ void APIENTRY (*SyncTextureINTEL)(GLuint texture); /* 2369 */ void APIENTRY (*TessellationFactorAMD)(GLfloat factor); /* 2370 */ void APIENTRY (*TessellationModeAMD)(GLenum mode); /* 2371 */ void APIENTRY (*TexBuffer)(GLenum target, GLenum internalformat, GLuint buffer); /* 2372 */ void APIENTRY (*TexBufferARB)(GLenum target, GLenum internalformat, GLuint buffer); /* 2373 */ void APIENTRY (*TexBufferEXT)(GLenum target, GLenum internalformat, GLuint buffer); /* 2374 */ void APIENTRY (*TexBufferRange)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 2375 */ void APIENTRY (*TexCoord1bOES)(GLbyte32 s); /* 2376 */ void APIENTRY (*TexCoord1bvOES)(const GLbyte *coords); /* 2377 */ void APIENTRY (*TexCoord1xOES)(GLfixed s); /* 2378 */ void APIENTRY (*TexCoord1xvOES)(const GLfixed *coords); /* 2379 */ void APIENTRY (*TexCoord2bOES)(GLbyte32 s, GLbyte32 t); /* 2380 */ void APIENTRY (*TexCoord2bvOES)(const GLbyte *coords); /* 2381 */ void APIENTRY (*TexCoord2xOES)(GLfixed s, GLfixed t); /* 2382 */ void APIENTRY (*TexCoord2xvOES)(const GLfixed *coords); /* 2383 */ void APIENTRY (*TexCoord3bOES)(GLbyte32 s, GLbyte32 t, GLbyte32 r); /* 2384 */ void APIENTRY (*TexCoord3bvOES)(const GLbyte *coords); /* 2385 */ void APIENTRY (*TexCoord3xOES)(GLfixed s, GLfixed t, GLfixed r); /* 2386 */ void APIENTRY (*TexCoord3xvOES)(const GLfixed *coords); /* 2387 */ void APIENTRY (*TexCoord4bOES)(GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q); /* 2388 */ void APIENTRY (*TexCoord4bvOES)(const GLbyte *coords); /* 2389 */ void APIENTRY (*TexCoord4xOES)(GLfixed s, GLfixed t, GLfixed r, GLfixed q); /* 2390 */ void APIENTRY (*TexCoord4xvOES)(const GLfixed *coords); /* 2391 */ void APIENTRY (*TexCoordFormatNV)(GLint size, GLenum type, GLsizei stride); /* 2392 */ void APIENTRY (*TexCoordP1ui)(GLenum type, GLuint coords); /* 2393 */ void APIENTRY (*TexCoordP1uiv)(GLenum type, const GLuint *coords); /* 2394 */ void APIENTRY (*TexCoordP2ui)(GLenum type, GLuint coords); /* 2395 */ void APIENTRY (*TexCoordP2uiv)(GLenum type, const GLuint *coords); /* 2396 */ void APIENTRY (*TexCoordP3ui)(GLenum type, GLuint coords); /* 2397 */ void APIENTRY (*TexCoordP3uiv)(GLenum type, const GLuint *coords); /* 2398 */ void APIENTRY (*TexCoordP4ui)(GLenum type, GLuint coords); /* 2399 */ void APIENTRY (*TexCoordP4uiv)(GLenum type, const GLuint *coords); /* 2400 */ void APIENTRY (*TexEnvxOES)(GLenum target, GLenum pname, GLfixed param); /* 2401 */ void APIENTRY (*TexEnvxvOES)(GLenum target, GLenum pname, const GLfixed *params); /* 2402 */ void APIENTRY (*TexGenxOES)(GLenum coord, GLenum pname, GLfixed param); /* 2403 */ void APIENTRY (*TexGenxvOES)(GLenum coord, GLenum pname, const GLfixed *params); /* 2404 */ void APIENTRY (*TexImage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations); /* 2405 */ void APIENTRY (*TexImage2DMultisampleCoverageNV)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations); /* 2406 */ void APIENTRY (*TexImage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations); /* 2407 */ void APIENTRY (*TexImage3DMultisampleCoverageNV)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations); /* 2408 */ void APIENTRY (*TexPageCommitmentARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit); /* 2409 */ void APIENTRY (*TexParameterIiv)(GLenum target, GLenum pname, const GLint *params); /* 2410 */ void APIENTRY (*TexParameterIivEXT)(GLenum target, GLenum pname, const GLint *params); /* 2411 */ void APIENTRY (*TexParameterIuiv)(GLenum target, GLenum pname, const GLuint *params); /* 2412 */ void APIENTRY (*TexParameterIuivEXT)(GLenum target, GLenum pname, const GLuint *params); /* 2413 */ void APIENTRY (*TexParameterxOES)(GLenum target, GLenum pname, GLfixed param); /* 2414 */ void APIENTRY (*TexParameterxvOES)(GLenum target, GLenum pname, const GLfixed *params); /* 2415 */ void APIENTRY (*TexRenderbufferNV)(GLenum target, GLuint renderbuffer); /* 2416 */ void APIENTRY (*TexScissorFuncINTEL)(GLenum target, GLenum lfunc, GLenum hfunc); /* 2417 */ void APIENTRY (*TexScissorINTEL)(GLenum target, GLclampf tlow, GLclampf thigh); /* 2418 */ void APIENTRY (*TexStorage1D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); /* 2419 */ void APIENTRY (*TexStorage2D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); /* 2420 */ void APIENTRY (*TexStorage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations); /* 2421 */ void APIENTRY (*TexStorage3D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); /* 2422 */ void APIENTRY (*TexStorage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations); /* 2423 */ void APIENTRY (*TexStorageSparseAMD)(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); /* 2424 */ void APIENTRY (*TextureBarrierNV)(void); /* 2425 */ void APIENTRY (*TextureBufferEXT)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); /* 2426 */ void APIENTRY (*TextureBufferRangeEXT)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 2427 */ void APIENTRY (*TextureFogSGIX)(GLenum pname); /* 2428 */ void APIENTRY (*TextureImage1DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); /* 2429 */ void APIENTRY (*TextureImage2DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); /* 2430 */ void APIENTRY (*TextureImage2DMultisampleCoverageNV)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations); /* 2431 */ void APIENTRY (*TextureImage2DMultisampleNV)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations); /* 2432 */ void APIENTRY (*TextureImage3DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); /* 2433 */ void APIENTRY (*TextureImage3DMultisampleCoverageNV)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations); /* 2434 */ void APIENTRY (*TextureImage3DMultisampleNV)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations); /* 2435 */ void APIENTRY (*TexturePageCommitmentEXT)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit); /* 2436 */ void APIENTRY (*TextureParameterIivEXT)(GLuint texture, GLenum target, GLenum pname, const GLint *params); /* 2437 */ void APIENTRY (*TextureParameterIuivEXT)(GLuint texture, GLenum target, GLenum pname, const GLuint *params); /* 2438 */ void APIENTRY (*TextureParameterfEXT)(GLuint texture, GLenum target, GLenum pname, GLfloat param); /* 2439 */ void APIENTRY (*TextureParameterfvEXT)(GLuint texture, GLenum target, GLenum pname, const GLfloat *params); /* 2440 */ void APIENTRY (*TextureParameteriEXT)(GLuint texture, GLenum target, GLenum pname, GLint param); /* 2441 */ void APIENTRY (*TextureParameterivEXT)(GLuint texture, GLenum target, GLenum pname, const GLint *params); /* 2442 */ void APIENTRY (*TextureRangeAPPLE)(GLenum target, GLsizei length, const void *pointer); /* 2443 */ void APIENTRY (*TextureRenderbufferEXT)(GLuint texture, GLenum target, GLuint renderbuffer); /* 2444 */ void APIENTRY (*TextureStorage1DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); /* 2445 */ void APIENTRY (*TextureStorage2DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); /* 2446 */ void APIENTRY (*TextureStorage2DMultisampleEXT)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations); /* 2447 */ void APIENTRY (*TextureStorage3DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); /* 2448 */ void APIENTRY (*TextureStorage3DMultisampleEXT)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations); /* 2449 */ void APIENTRY (*TextureStorageSparseAMD)(GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); /* 2450 */ void APIENTRY (*TextureSubImage1DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); /* 2451 */ void APIENTRY (*TextureSubImage2DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); /* 2452 */ void APIENTRY (*TextureSubImage3DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); /* 2453 */ void APIENTRY (*TextureView)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); /* 2454 */ void APIENTRY (*TransformFeedbackAttribsNV)(GLsizei count, const GLint *attribs, GLenum bufferMode); /* 2455 */ void APIENTRY (*TransformFeedbackStreamAttribsNV)(GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); /* 2456 */ void APIENTRY (*TransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode); /* 2457 */ void APIENTRY (*TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode); /* 2458 */ void APIENTRY (*TransformFeedbackVaryingsNV)(GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); /* 2459 */ void APIENTRY (*TransformPathNV)(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); /* 2460 */ void APIENTRY (*TranslatexOES)(GLfixed x, GLfixed y, GLfixed z); /* 2461 */ void APIENTRY (*Uniform1d)(GLint location, GLdouble x); /* 2462 */ void APIENTRY (*Uniform1dv)(GLint location, GLsizei count, const GLdouble *value); /* 2463 */ void APIENTRY (*Uniform1f)(GLint location, GLfloat v0); /* 2464 */ void APIENTRY (*Uniform1fv)(GLint location, GLsizei count, const GLfloat *value); /* 2465 */ void APIENTRY (*Uniform1i)(GLint location, GLint v0); /* 2466 */ void APIENTRY (*Uniform1i64NV)(GLint location, GLint64EXT x); /* 2467 */ void APIENTRY (*Uniform1i64vNV)(GLint location, GLsizei count, const GLint64EXT *value); /* 2468 */ void APIENTRY (*Uniform1iv)(GLint location, GLsizei count, const GLint *value); /* 2469 */ void APIENTRY (*Uniform1ui)(GLint location, GLuint v0); /* 2470 */ void APIENTRY (*Uniform1ui64NV)(GLint location, GLuint64EXT x); /* 2471 */ void APIENTRY (*Uniform1ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); /* 2472 */ void APIENTRY (*Uniform1uiEXT)(GLint location, GLuint v0); /* 2473 */ void APIENTRY (*Uniform1uiv)(GLint location, GLsizei count, const GLuint *value); /* 2474 */ void APIENTRY (*Uniform1uivEXT)(GLint location, GLsizei count, const GLuint *value); /* 2475 */ void APIENTRY (*Uniform2d)(GLint location, GLdouble x, GLdouble y); /* 2476 */ void APIENTRY (*Uniform2dv)(GLint location, GLsizei count, const GLdouble *value); /* 2477 */ void APIENTRY (*Uniform2f)(GLint location, GLfloat v0, GLfloat v1); /* 2478 */ void APIENTRY (*Uniform2fv)(GLint location, GLsizei count, const GLfloat *value); /* 2479 */ void APIENTRY (*Uniform2i)(GLint location, GLint v0, GLint v1); /* 2480 */ void APIENTRY (*Uniform2i64NV)(GLint location, GLint64EXT x, GLint64EXT y); /* 2481 */ void APIENTRY (*Uniform2i64vNV)(GLint location, GLsizei count, const GLint64EXT *value); /* 2482 */ void APIENTRY (*Uniform2iv)(GLint location, GLsizei count, const GLint *value); /* 2483 */ void APIENTRY (*Uniform2ui)(GLint location, GLuint v0, GLuint v1); /* 2484 */ void APIENTRY (*Uniform2ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y); /* 2485 */ void APIENTRY (*Uniform2ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); /* 2486 */ void APIENTRY (*Uniform2uiEXT)(GLint location, GLuint v0, GLuint v1); /* 2487 */ void APIENTRY (*Uniform2uiv)(GLint location, GLsizei count, const GLuint *value); /* 2488 */ void APIENTRY (*Uniform2uivEXT)(GLint location, GLsizei count, const GLuint *value); /* 2489 */ void APIENTRY (*Uniform3d)(GLint location, GLdouble x, GLdouble y, GLdouble z); /* 2490 */ void APIENTRY (*Uniform3dv)(GLint location, GLsizei count, const GLdouble *value); /* 2491 */ void APIENTRY (*Uniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); /* 2492 */ void APIENTRY (*Uniform3fv)(GLint location, GLsizei count, const GLfloat *value); /* 2493 */ void APIENTRY (*Uniform3i)(GLint location, GLint v0, GLint v1, GLint v2); /* 2494 */ void APIENTRY (*Uniform3i64NV)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); /* 2495 */ void APIENTRY (*Uniform3i64vNV)(GLint location, GLsizei count, const GLint64EXT *value); /* 2496 */ void APIENTRY (*Uniform3iv)(GLint location, GLsizei count, const GLint *value); /* 2497 */ void APIENTRY (*Uniform3ui)(GLint location, GLuint v0, GLuint v1, GLuint v2); /* 2498 */ void APIENTRY (*Uniform3ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); /* 2499 */ void APIENTRY (*Uniform3ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); /* 2500 */ void APIENTRY (*Uniform3uiEXT)(GLint location, GLuint v0, GLuint v1, GLuint v2); /* 2501 */ void APIENTRY (*Uniform3uiv)(GLint location, GLsizei count, const GLuint *value); /* 2502 */ void APIENTRY (*Uniform3uivEXT)(GLint location, GLsizei count, const GLuint *value); /* 2503 */ void APIENTRY (*Uniform4d)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 2504 */ void APIENTRY (*Uniform4dv)(GLint location, GLsizei count, const GLdouble *value); /* 2505 */ void APIENTRY (*Uniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); /* 2506 */ void APIENTRY (*Uniform4fv)(GLint location, GLsizei count, const GLfloat *value); /* 2507 */ void APIENTRY (*Uniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); /* 2508 */ void APIENTRY (*Uniform4i64NV)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); /* 2509 */ void APIENTRY (*Uniform4i64vNV)(GLint location, GLsizei count, const GLint64EXT *value); /* 2510 */ void APIENTRY (*Uniform4iv)(GLint location, GLsizei count, const GLint *value); /* 2511 */ void APIENTRY (*Uniform4ui)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); /* 2512 */ void APIENTRY (*Uniform4ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); /* 2513 */ void APIENTRY (*Uniform4ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); /* 2514 */ void APIENTRY (*Uniform4uiEXT)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); /* 2515 */ void APIENTRY (*Uniform4uiv)(GLint location, GLsizei count, const GLuint *value); /* 2516 */ void APIENTRY (*Uniform4uivEXT)(GLint location, GLsizei count, const GLuint *value); /* 2517 */ void APIENTRY (*UniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); /* 2518 */ void APIENTRY (*UniformBufferEXT)(GLuint program, GLint location, GLuint buffer); /* 2519 */ void APIENTRY (*UniformHandleui64ARB)(GLint location, GLuint64 value); /* 2520 */ void APIENTRY (*UniformHandleui64NV)(GLint location, GLuint64 value); /* 2521 */ void APIENTRY (*UniformHandleui64vARB)(GLint location, GLsizei count, const GLuint64 *value); /* 2522 */ void APIENTRY (*UniformHandleui64vNV)(GLint location, GLsizei count, const GLuint64 *value); /* 2523 */ void APIENTRY (*UniformMatrix2dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2524 */ void APIENTRY (*UniformMatrix2fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2525 */ void APIENTRY (*UniformMatrix2x3dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2526 */ void APIENTRY (*UniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2527 */ void APIENTRY (*UniformMatrix2x4dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2528 */ void APIENTRY (*UniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2529 */ void APIENTRY (*UniformMatrix3dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2530 */ void APIENTRY (*UniformMatrix3fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2531 */ void APIENTRY (*UniformMatrix3x2dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2532 */ void APIENTRY (*UniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2533 */ void APIENTRY (*UniformMatrix3x4dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2534 */ void APIENTRY (*UniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2535 */ void APIENTRY (*UniformMatrix4dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2536 */ void APIENTRY (*UniformMatrix4fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2537 */ void APIENTRY (*UniformMatrix4x2dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2538 */ void APIENTRY (*UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2539 */ void APIENTRY (*UniformMatrix4x3dv)(GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value); /* 2540 */ void APIENTRY (*UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value); /* 2541 */ void APIENTRY (*UniformSubroutinesuiv)(GLenum shadertype, GLsizei count, const GLuint *indices); /* 2542 */ void APIENTRY (*Uniformui64NV)(GLint location, GLuint64EXT value); /* 2543 */ void APIENTRY (*Uniformui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); /* 2544 */ GLboolean APIENTRY (*UnmapNamedBufferEXT)(GLuint buffer); /* 2545 */ void APIENTRY (*UnmapTexture2DINTEL)(GLuint texture, GLint level); /* 2546 */ void APIENTRY (*UseProgram)(GLuint program); /* 2547 */ void APIENTRY (*UseProgramStages)(GLuint pipeline, GLbitfield stages, GLuint program); /* 2548 */ void APIENTRY (*UseShaderProgramEXT)(GLenum type, GLuint program); /* 2549 */ void APIENTRY (*VDPAUFiniNV)(void); /* 2550 */ void APIENTRY (*VDPAUGetSurfaceivNV)(GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); /* 2551 */ void APIENTRY (*VDPAUInitNV)(const void *vdpDevice, const void *getProcAddress); /* 2552 */ GLboolean APIENTRY (*VDPAUIsSurfaceNV)(GLvdpauSurfaceNV surface); /* 2553 */ void APIENTRY (*VDPAUMapSurfacesNV)(GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); /* 2554 */ GLvdpauSurfaceNV APIENTRY (*VDPAURegisterOutputSurfaceNV)(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); /* 2555 */ GLvdpauSurfaceNV APIENTRY (*VDPAURegisterVideoSurfaceNV)(const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); /* 2556 */ void APIENTRY (*VDPAUSurfaceAccessNV)(GLvdpauSurfaceNV surface, GLenum access); /* 2557 */ void APIENTRY (*VDPAUUnmapSurfacesNV)(GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); /* 2558 */ void APIENTRY (*VDPAUUnregisterSurfaceNV)(GLvdpauSurfaceNV surface); /* 2559 */ void APIENTRY (*ValidateProgram)(GLuint program); /* 2560 */ void APIENTRY (*ValidateProgramPipeline)(GLuint pipeline); /* 2561 */ void APIENTRY (*Vertex2bOES)(GLbyte32 x, GLbyte32 y); /* 2562 */ void APIENTRY (*Vertex2bvOES)(const GLbyte *coords); /* 2563 */ void APIENTRY (*Vertex2xOES)(GLfixed x); /* 2564 */ void APIENTRY (*Vertex2xvOES)(const GLfixed *coords); /* 2565 */ void APIENTRY (*Vertex3bOES)(GLbyte32 x, GLbyte32 y, GLbyte32 z); /* 2566 */ void APIENTRY (*Vertex3bvOES)(const GLbyte *coords); /* 2567 */ void APIENTRY (*Vertex3xOES)(GLfixed x, GLfixed y); /* 2568 */ void APIENTRY (*Vertex3xvOES)(const GLfixed *coords); /* 2569 */ void APIENTRY (*Vertex4bOES)(GLbyte32 x, GLbyte32 y, GLbyte32 z, GLbyte32 w); /* 2570 */ void APIENTRY (*Vertex4bvOES)(const GLbyte *coords); /* 2571 */ void APIENTRY (*Vertex4xOES)(GLfixed x, GLfixed y, GLfixed z); /* 2572 */ void APIENTRY (*Vertex4xvOES)(const GLfixed *coords); /* 2573 */ void APIENTRY (*VertexArrayBindVertexBufferEXT)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); /* 2574 */ void APIENTRY (*VertexArrayColorOffsetEXT)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* 2575 */ void APIENTRY (*VertexArrayEdgeFlagOffsetEXT)(GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); /* 2576 */ void APIENTRY (*VertexArrayFogCoordOffsetEXT)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); /* 2577 */ void APIENTRY (*VertexArrayIndexOffsetEXT)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); /* 2578 */ void APIENTRY (*VertexArrayMultiTexCoordOffsetEXT)(GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* 2579 */ void APIENTRY (*VertexArrayNormalOffsetEXT)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); /* 2580 */ void APIENTRY (*VertexArraySecondaryColorOffsetEXT)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* 2581 */ void APIENTRY (*VertexArrayTexCoordOffsetEXT)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* 2582 */ void APIENTRY (*VertexArrayVertexAttribBindingEXT)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); /* 2583 */ void APIENTRY (*VertexArrayVertexAttribDivisorEXT)(GLuint vaobj, GLuint index, GLuint divisor); /* 2584 */ void APIENTRY (*VertexArrayVertexAttribFormatEXT)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset); /* 2585 */ void APIENTRY (*VertexArrayVertexAttribIFormatEXT)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); /* 2586 */ void APIENTRY (*VertexArrayVertexAttribIOffsetEXT)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* 2587 */ void APIENTRY (*VertexArrayVertexAttribLFormatEXT)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); /* 2588 */ void APIENTRY (*VertexArrayVertexAttribLOffsetEXT)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* 2589 */ void APIENTRY (*VertexArrayVertexAttribOffsetEXT)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLintptr offset); /* 2590 */ void APIENTRY (*VertexArrayVertexBindingDivisorEXT)(GLuint vaobj, GLuint bindingindex, GLuint divisor); /* 2591 */ void APIENTRY (*VertexArrayVertexOffsetEXT)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); /* 2592 */ void APIENTRY (*VertexAttrib1d)(GLuint index, GLdouble x); /* 2593 */ void APIENTRY (*VertexAttrib1dv)(GLuint index, const GLdouble *v); /* 2594 */ void APIENTRY (*VertexAttrib1f)(GLuint index, GLfloat x); /* 2595 */ void APIENTRY (*VertexAttrib1fv)(GLuint index, const GLfloat *v); /* 2596 */ void APIENTRY (*VertexAttrib1s)(GLuint index, GLshort32 x); /* 2597 */ void APIENTRY (*VertexAttrib1sv)(GLuint index, const GLshort *v); /* 2598 */ void APIENTRY (*VertexAttrib2d)(GLuint index, GLdouble x, GLdouble y); /* 2599 */ void APIENTRY (*VertexAttrib2dv)(GLuint index, const GLdouble *v); /* 2600 */ void APIENTRY (*VertexAttrib2f)(GLuint index, GLfloat x, GLfloat y); /* 2601 */ void APIENTRY (*VertexAttrib2fv)(GLuint index, const GLfloat *v); /* 2602 */ void APIENTRY (*VertexAttrib2s)(GLuint index, GLshort32 x, GLshort32 y); /* 2603 */ void APIENTRY (*VertexAttrib2sv)(GLuint index, const GLshort *v); /* 2604 */ void APIENTRY (*VertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 2605 */ void APIENTRY (*VertexAttrib3dv)(GLuint index, const GLdouble *v); /* 2606 */ void APIENTRY (*VertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 2607 */ void APIENTRY (*VertexAttrib3fv)(GLuint index, const GLfloat *v); /* 2608 */ void APIENTRY (*VertexAttrib3s)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z); /* 2609 */ void APIENTRY (*VertexAttrib3sv)(GLuint index, const GLshort *v); /* 2610 */ void APIENTRY (*VertexAttrib4Nbv)(GLuint index, const GLbyte *v); /* 2611 */ void APIENTRY (*VertexAttrib4Niv)(GLuint index, const GLint *v); /* 2612 */ void APIENTRY (*VertexAttrib4Nsv)(GLuint index, const GLshort *v); /* 2613 */ void APIENTRY (*VertexAttrib4Nub)(GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w); /* 2614 */ void APIENTRY (*VertexAttrib4Nubv)(GLuint index, const GLubyte *v); /* 2615 */ void APIENTRY (*VertexAttrib4Nuiv)(GLuint index, const GLuint *v); /* 2616 */ void APIENTRY (*VertexAttrib4Nusv)(GLuint index, const GLushort *v); /* 2617 */ void APIENTRY (*VertexAttrib4bv)(GLuint index, const GLbyte *v); /* 2618 */ void APIENTRY (*VertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 2619 */ void APIENTRY (*VertexAttrib4dv)(GLuint index, const GLdouble *v); /* 2620 */ void APIENTRY (*VertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 2621 */ void APIENTRY (*VertexAttrib4fv)(GLuint index, const GLfloat *v); /* 2622 */ void APIENTRY (*VertexAttrib4iv)(GLuint index, const GLint *v); /* 2623 */ void APIENTRY (*VertexAttrib4s)(GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w); /* 2624 */ void APIENTRY (*VertexAttrib4sv)(GLuint index, const GLshort *v); /* 2625 */ void APIENTRY (*VertexAttrib4ubv)(GLuint index, const GLubyte *v); /* 2626 */ void APIENTRY (*VertexAttrib4uiv)(GLuint index, const GLuint *v); /* 2627 */ void APIENTRY (*VertexAttrib4usv)(GLuint index, const GLushort *v); /* 2628 */ void APIENTRY (*VertexAttribBinding)(GLuint attribindex, GLuint bindingindex); /* 2629 */ void APIENTRY (*VertexAttribDivisor)(GLuint index, GLuint divisor); /* 2630 */ void APIENTRY (*VertexAttribDivisorARB)(GLuint index, GLuint divisor); /* 2631 */ void APIENTRY (*VertexAttribFormat)(GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset); /* 2632 */ void APIENTRY (*VertexAttribFormatNV)(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride); /* 2633 */ void APIENTRY (*VertexAttribI1i)(GLuint index, GLint x); /* 2634 */ void APIENTRY (*VertexAttribI1iEXT)(GLuint index, GLint x); /* 2635 */ void APIENTRY (*VertexAttribI1iv)(GLuint index, const GLint *v); /* 2636 */ void APIENTRY (*VertexAttribI1ivEXT)(GLuint index, const GLint *v); /* 2637 */ void APIENTRY (*VertexAttribI1ui)(GLuint index, GLuint x); /* 2638 */ void APIENTRY (*VertexAttribI1uiEXT)(GLuint index, GLuint x); /* 2639 */ void APIENTRY (*VertexAttribI1uiv)(GLuint index, const GLuint *v); /* 2640 */ void APIENTRY (*VertexAttribI1uivEXT)(GLuint index, const GLuint *v); /* 2641 */ void APIENTRY (*VertexAttribI2i)(GLuint index, GLint x, GLint y); /* 2642 */ void APIENTRY (*VertexAttribI2iEXT)(GLuint index, GLint x, GLint y); /* 2643 */ void APIENTRY (*VertexAttribI2iv)(GLuint index, const GLint *v); /* 2644 */ void APIENTRY (*VertexAttribI2ivEXT)(GLuint index, const GLint *v); /* 2645 */ void APIENTRY (*VertexAttribI2ui)(GLuint index, GLuint x, GLuint y); /* 2646 */ void APIENTRY (*VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y); /* 2647 */ void APIENTRY (*VertexAttribI2uiv)(GLuint index, const GLuint *v); /* 2648 */ void APIENTRY (*VertexAttribI2uivEXT)(GLuint index, const GLuint *v); /* 2649 */ void APIENTRY (*VertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z); /* 2650 */ void APIENTRY (*VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z); /* 2651 */ void APIENTRY (*VertexAttribI3iv)(GLuint index, const GLint *v); /* 2652 */ void APIENTRY (*VertexAttribI3ivEXT)(GLuint index, const GLint *v); /* 2653 */ void APIENTRY (*VertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z); /* 2654 */ void APIENTRY (*VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z); /* 2655 */ void APIENTRY (*VertexAttribI3uiv)(GLuint index, const GLuint *v); /* 2656 */ void APIENTRY (*VertexAttribI3uivEXT)(GLuint index, const GLuint *v); /* 2657 */ void APIENTRY (*VertexAttribI4bv)(GLuint index, const GLbyte *v); /* 2658 */ void APIENTRY (*VertexAttribI4bvEXT)(GLuint index, const GLbyte *v); /* 2659 */ void APIENTRY (*VertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w); /* 2660 */ void APIENTRY (*VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w); /* 2661 */ void APIENTRY (*VertexAttribI4iv)(GLuint index, const GLint *v); /* 2662 */ void APIENTRY (*VertexAttribI4ivEXT)(GLuint index, const GLint *v); /* 2663 */ void APIENTRY (*VertexAttribI4sv)(GLuint index, const GLshort *v); /* 2664 */ void APIENTRY (*VertexAttribI4svEXT)(GLuint index, const GLshort *v); /* 2665 */ void APIENTRY (*VertexAttribI4ubv)(GLuint index, const GLubyte *v); /* 2666 */ void APIENTRY (*VertexAttribI4ubvEXT)(GLuint index, const GLubyte *v); /* 2667 */ void APIENTRY (*VertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 2668 */ void APIENTRY (*VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 2669 */ void APIENTRY (*VertexAttribI4uiv)(GLuint index, const GLuint *v); /* 2670 */ void APIENTRY (*VertexAttribI4uivEXT)(GLuint index, const GLuint *v); /* 2671 */ void APIENTRY (*VertexAttribI4usv)(GLuint index, const GLushort *v); /* 2672 */ void APIENTRY (*VertexAttribI4usvEXT)(GLuint index, const GLushort *v); /* 2673 */ void APIENTRY (*VertexAttribIFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); /* 2674 */ void APIENTRY (*VertexAttribIFormatNV)(GLuint index, GLint size, GLenum type, GLsizei stride); /* 2675 */ void APIENTRY (*VertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); /* 2676 */ void APIENTRY (*VertexAttribIPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); /* 2677 */ void APIENTRY (*VertexAttribL1d)(GLuint index, GLdouble x); /* 2678 */ void APIENTRY (*VertexAttribL1dEXT)(GLuint index, GLdouble x); /* 2679 */ void APIENTRY (*VertexAttribL1dv)(GLuint index, const GLdouble *v); /* 2680 */ void APIENTRY (*VertexAttribL1dvEXT)(GLuint index, const GLdouble *v); /* 2681 */ void APIENTRY (*VertexAttribL1i64NV)(GLuint index, GLint64EXT x); /* 2682 */ void APIENTRY (*VertexAttribL1i64vNV)(GLuint index, const GLint64EXT *v); /* 2683 */ void APIENTRY (*VertexAttribL1ui64ARB)(GLuint index, GLuint64EXT x); /* 2684 */ void APIENTRY (*VertexAttribL1ui64NV)(GLuint index, GLuint64EXT x); /* 2685 */ void APIENTRY (*VertexAttribL1ui64vARB)(GLuint index, const GLuint64EXT *v); /* 2686 */ void APIENTRY (*VertexAttribL1ui64vNV)(GLuint index, const GLuint64EXT *v); /* 2687 */ void APIENTRY (*VertexAttribL2d)(GLuint index, GLdouble x, GLdouble y); /* 2688 */ void APIENTRY (*VertexAttribL2dEXT)(GLuint index, GLdouble x, GLdouble y); /* 2689 */ void APIENTRY (*VertexAttribL2dv)(GLuint index, const GLdouble *v); /* 2690 */ void APIENTRY (*VertexAttribL2dvEXT)(GLuint index, const GLdouble *v); /* 2691 */ void APIENTRY (*VertexAttribL2i64NV)(GLuint index, GLint64EXT x, GLint64EXT y); /* 2692 */ void APIENTRY (*VertexAttribL2i64vNV)(GLuint index, const GLint64EXT *v); /* 2693 */ void APIENTRY (*VertexAttribL2ui64NV)(GLuint index, GLuint64EXT x, GLuint64EXT y); /* 2694 */ void APIENTRY (*VertexAttribL2ui64vNV)(GLuint index, const GLuint64EXT *v); /* 2695 */ void APIENTRY (*VertexAttribL3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 2696 */ void APIENTRY (*VertexAttribL3dEXT)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 2697 */ void APIENTRY (*VertexAttribL3dv)(GLuint index, const GLdouble *v); /* 2698 */ void APIENTRY (*VertexAttribL3dvEXT)(GLuint index, const GLdouble *v); /* 2699 */ void APIENTRY (*VertexAttribL3i64NV)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); /* 2700 */ void APIENTRY (*VertexAttribL3i64vNV)(GLuint index, const GLint64EXT *v); /* 2701 */ void APIENTRY (*VertexAttribL3ui64NV)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); /* 2702 */ void APIENTRY (*VertexAttribL3ui64vNV)(GLuint index, const GLuint64EXT *v); /* 2703 */ void APIENTRY (*VertexAttribL4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 2704 */ void APIENTRY (*VertexAttribL4dEXT)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 2705 */ void APIENTRY (*VertexAttribL4dv)(GLuint index, const GLdouble *v); /* 2706 */ void APIENTRY (*VertexAttribL4dvEXT)(GLuint index, const GLdouble *v); /* 2707 */ void APIENTRY (*VertexAttribL4i64NV)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); /* 2708 */ void APIENTRY (*VertexAttribL4i64vNV)(GLuint index, const GLint64EXT *v); /* 2709 */ void APIENTRY (*VertexAttribL4ui64NV)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); /* 2710 */ void APIENTRY (*VertexAttribL4ui64vNV)(GLuint index, const GLuint64EXT *v); /* 2711 */ void APIENTRY (*VertexAttribLFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); /* 2712 */ void APIENTRY (*VertexAttribLFormatNV)(GLuint index, GLint size, GLenum type, GLsizei stride); /* 2713 */ void APIENTRY (*VertexAttribLPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); /* 2714 */ void APIENTRY (*VertexAttribLPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); /* 2715 */ void APIENTRY (*VertexAttribP1ui)(GLuint index, GLenum type, GLboolean32 normalized, GLuint value); /* 2716 */ void APIENTRY (*VertexAttribP1uiv)(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value); /* 2717 */ void APIENTRY (*VertexAttribP2ui)(GLuint index, GLenum type, GLboolean32 normalized, GLuint value); /* 2718 */ void APIENTRY (*VertexAttribP2uiv)(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value); /* 2719 */ void APIENTRY (*VertexAttribP3ui)(GLuint index, GLenum type, GLboolean32 normalized, GLuint value); /* 2720 */ void APIENTRY (*VertexAttribP3uiv)(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value); /* 2721 */ void APIENTRY (*VertexAttribP4ui)(GLuint index, GLenum type, GLboolean32 normalized, GLuint value); /* 2722 */ void APIENTRY (*VertexAttribP4uiv)(GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value); /* 2723 */ void APIENTRY (*VertexAttribParameteriAMD)(GLuint index, GLenum pname, GLint param); /* 2724 */ void APIENTRY (*VertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer); /* 2725 */ void APIENTRY (*VertexBindingDivisor)(GLuint bindingindex, GLuint divisor); /* 2726 */ void APIENTRY (*VertexFormatNV)(GLint size, GLenum type, GLsizei stride); /* 2727 */ void APIENTRY (*VertexP2ui)(GLenum type, GLuint value); /* 2728 */ void APIENTRY (*VertexP2uiv)(GLenum type, const GLuint *value); /* 2729 */ void APIENTRY (*VertexP3ui)(GLenum type, GLuint value); /* 2730 */ void APIENTRY (*VertexP3uiv)(GLenum type, const GLuint *value); /* 2731 */ void APIENTRY (*VertexP4ui)(GLenum type, GLuint value); /* 2732 */ void APIENTRY (*VertexP4uiv)(GLenum type, const GLuint *value); /* 2733 */ void APIENTRY (*VertexPointSizefAPPLE)(GLfloat size); /* 2734 */ GLenum APIENTRY (*VideoCaptureNV)(GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); /* 2735 */ void APIENTRY (*VideoCaptureStreamParameterdvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); /* 2736 */ void APIENTRY (*VideoCaptureStreamParameterfvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); /* 2737 */ void APIENTRY (*VideoCaptureStreamParameterivNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); /* 2738 */ void APIENTRY (*ViewportArrayv)(GLuint first, GLsizei count, const GLfloat *v); /* 2739 */ void APIENTRY (*ViewportIndexedf)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); /* 2740 */ void APIENTRY (*ViewportIndexedfv)(GLuint index, const GLfloat *v); /* 2741 */ void APIENTRY (*WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 2742 */ void APIENTRY (*WeightPathsNV)(GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); /* 2743 */ void APIENTRY (*BindTextureUnit)(GLuint unit, GLuint texture); /* 2744 */ void APIENTRY (*BlendBarrierKHR)(void); /* 2745 */ void APIENTRY (*BlitNamedFramebuffer)(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 2746 */ void APIENTRY (*BufferPageCommitmentARB)(GLenum target, GLintptr offset, GLsizeiptr size, GLboolean32 commit); /* 2747 */ void APIENTRY (*CallCommandListNV)(GLuint list); /* 2748 */ GLenum APIENTRY (*CheckNamedFramebufferStatus)(GLuint framebuffer, GLenum target); /* 2749 */ void APIENTRY (*ClearNamedBufferData)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); /* 2750 */ void APIENTRY (*ClearNamedBufferSubData)(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); /* 2751 */ void APIENTRY (*ClearNamedFramebufferfi)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); /* 2752 */ void APIENTRY (*ClearNamedFramebufferfv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); /* 2753 */ void APIENTRY (*ClearNamedFramebufferiv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); /* 2754 */ void APIENTRY (*ClearNamedFramebufferuiv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); /* 2755 */ void APIENTRY (*ClipControl)(GLenum origin, GLenum depth); /* 2756 */ void APIENTRY (*CommandListSegmentsNV)(GLuint list, GLuint segments); /* 2757 */ void APIENTRY (*CompileCommandListNV)(GLuint list); /* 2758 */ void APIENTRY (*CompressedTextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); /* 2759 */ void APIENTRY (*CompressedTextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); /* 2760 */ void APIENTRY (*CompressedTextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); /* 2761 */ void APIENTRY (*CopyNamedBufferSubData)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 2762 */ void APIENTRY (*CopyTextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); /* 2763 */ void APIENTRY (*CopyTextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 2764 */ void APIENTRY (*CopyTextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 2765 */ void APIENTRY (*CoverageModulationNV)(GLenum components); /* 2766 */ void APIENTRY (*CoverageModulationTableNV)(GLsizei n, const GLfloat *v); /* 2767 */ void APIENTRY (*CreateBuffers)(GLsizei n, GLuint *buffers); /* 2768 */ void APIENTRY (*CreateCommandListsNV)(GLsizei n, GLuint *lists); /* 2769 */ void APIENTRY (*CreateFramebuffers)(GLsizei n, GLuint *framebuffers); /* 2770 */ void APIENTRY (*CreateProgramPipelines)(GLsizei n, GLuint *pipelines); /* 2771 */ void APIENTRY (*CreateQueries)(GLenum target, GLsizei n, GLuint *ids); /* 2772 */ void APIENTRY (*CreateRenderbuffers)(GLsizei n, GLuint *renderbuffers); /* 2773 */ void APIENTRY (*CreateSamplers)(GLsizei n, GLuint *samplers); /* 2774 */ void APIENTRY (*CreateStatesNV)(GLsizei n, GLuint *states); /* 2775 */ void APIENTRY (*CreateTextures)(GLenum target, GLsizei n, GLuint *textures); /* 2776 */ void APIENTRY (*CreateTransformFeedbacks)(GLsizei n, GLuint *ids); /* 2777 */ void APIENTRY (*CreateVertexArrays)(GLsizei n, GLuint *arrays); /* 2778 */ void APIENTRY (*DeleteCommandListsNV)(GLsizei n, const GLuint *lists); /* 2779 */ void APIENTRY (*DeleteStatesNV)(GLsizei n, const GLuint *states); /* 2780 */ void APIENTRY (*DisableVertexArrayAttrib)(GLuint vaobj, GLuint index); /* 2781 */ void APIENTRY (*DrawCommandsAddressNV)(GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count); /* 2782 */ void APIENTRY (*DrawCommandsNV)(GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count); /* 2783 */ void APIENTRY (*DrawCommandsStatesAddressNV)(const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); /* 2784 */ void APIENTRY (*DrawCommandsStatesNV)(GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); /* 2785 */ void APIENTRY (*EnableVertexArrayAttrib)(GLuint vaobj, GLuint index); /* 2786 */ void APIENTRY (*FlushMappedNamedBufferRange)(GLuint buffer, GLintptr offset, GLsizeiptr length); /* 2787 */ void APIENTRY (*FragmentCoverageColorNV)(GLuint color); /* 2788 */ void APIENTRY (*FramebufferSampleLocationsfvNV)(GLenum target, GLuint start, GLsizei count, const GLfloat *v); /* 2789 */ void APIENTRY (*FramebufferTextureMultiviewOVR)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); /* 2790 */ void APIENTRY (*GenerateTextureMipmap)(GLuint texture); /* 2791 */ GLuint APIENTRY (*GetCommandHeaderNV)(GLenum tokenID, GLuint size); /* 2792 */ void APIENTRY (*GetCompressedTextureImage)(GLuint texture, GLint level, GLsizei bufSize, void *pixels); /* 2793 */ void APIENTRY (*GetCompressedTextureSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); /* 2794 */ void APIENTRY (*GetCoverageModulationTableNV)(GLsizei bufsize, GLfloat *v); /* 2795 */ GLenum APIENTRY (*GetGraphicsResetStatus)(void); /* 2796 */ void APIENTRY (*GetInternalformatSampleivNV)(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params); /* 2797 */ void APIENTRY (*GetNamedBufferParameteri64v)(GLuint buffer, GLenum pname, GLint64 *params); /* 2798 */ void APIENTRY (*GetNamedBufferParameteriv)(GLuint buffer, GLenum pname, GLint *params); /* 2799 */ void APIENTRY (*GetNamedBufferPointerv)(GLuint buffer, GLenum pname, void * *params); /* 2800 */ void APIENTRY (*GetNamedBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); /* 2801 */ void APIENTRY (*GetNamedFramebufferAttachmentParameteriv)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); /* 2802 */ void APIENTRY (*GetNamedFramebufferParameteriv)(GLuint framebuffer, GLenum pname, GLint *param); /* 2803 */ void APIENTRY (*GetNamedRenderbufferParameteriv)(GLuint renderbuffer, GLenum pname, GLint *params); /* 2804 */ void APIENTRY (*GetProgramResourcefvNV)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params); /* 2805 */ void APIENTRY (*GetQueryBufferObjecti64v)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); /* 2806 */ void APIENTRY (*GetQueryBufferObjectiv)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); /* 2807 */ void APIENTRY (*GetQueryBufferObjectui64v)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); /* 2808 */ void APIENTRY (*GetQueryBufferObjectuiv)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); /* 2809 */ GLushort APIENTRY (*GetStageIndexNV)(GLenum shadertype); /* 2810 */ void APIENTRY (*GetTextureImage)(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); /* 2811 */ void APIENTRY (*GetTextureLevelParameterfv)(GLuint texture, GLint level, GLenum pname, GLfloat *params); /* 2812 */ void APIENTRY (*GetTextureLevelParameteriv)(GLuint texture, GLint level, GLenum pname, GLint *params); /* 2813 */ void APIENTRY (*GetTextureParameterIiv)(GLuint texture, GLenum pname, GLint *params); /* 2814 */ void APIENTRY (*GetTextureParameterIuiv)(GLuint texture, GLenum pname, GLuint *params); /* 2815 */ void APIENTRY (*GetTextureParameterfv)(GLuint texture, GLenum pname, GLfloat *params); /* 2816 */ void APIENTRY (*GetTextureParameteriv)(GLuint texture, GLenum pname, GLint *params); /* 2817 */ void APIENTRY (*GetTextureSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels); /* 2818 */ void APIENTRY (*GetTransformFeedbacki64_v)(GLuint xfb, GLenum pname, GLuint index, GLint64 *param); /* 2819 */ void APIENTRY (*GetTransformFeedbacki_v)(GLuint xfb, GLenum pname, GLuint index, GLint *param); /* 2820 */ void APIENTRY (*GetTransformFeedbackiv)(GLuint xfb, GLenum pname, GLint *param); /* 2821 */ void APIENTRY (*GetVertexArrayIndexed64iv)(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param); /* 2822 */ void APIENTRY (*GetVertexArrayIndexediv)(GLuint vaobj, GLuint index, GLenum pname, GLint *param); /* 2823 */ void APIENTRY (*GetVertexArrayiv)(GLuint vaobj, GLenum pname, GLint *param); /* 2824 */ void APIENTRY (*GetnColorTable)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); /* 2825 */ void APIENTRY (*GetnCompressedTexImage)(GLenum target, GLint lod, GLsizei bufSize, void *pixels); /* 2826 */ void APIENTRY (*GetnConvolutionFilter)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); /* 2827 */ void APIENTRY (*GetnHistogram)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values); /* 2828 */ void APIENTRY (*GetnMapdv)(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); /* 2829 */ void APIENTRY (*GetnMapfv)(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); /* 2830 */ void APIENTRY (*GetnMapiv)(GLenum target, GLenum query, GLsizei bufSize, GLint *v); /* 2831 */ void APIENTRY (*GetnMinmax)(GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values); /* 2832 */ void APIENTRY (*GetnPixelMapfv)(GLenum map, GLsizei bufSize, GLfloat *values); /* 2833 */ void APIENTRY (*GetnPixelMapuiv)(GLenum map, GLsizei bufSize, GLuint *values); /* 2834 */ void APIENTRY (*GetnPixelMapusv)(GLenum map, GLsizei bufSize, GLushort *values); /* 2835 */ void APIENTRY (*GetnPolygonStipple)(GLsizei bufSize, GLubyte *pattern); /* 2836 */ void APIENTRY (*GetnSeparableFilter)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); /* 2837 */ void APIENTRY (*GetnTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); /* 2838 */ void APIENTRY (*GetnUniformdv)(GLuint program, GLint location, GLsizei bufSize, GLdouble *params); /* 2839 */ void APIENTRY (*GetnUniformfv)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); /* 2840 */ void APIENTRY (*GetnUniformiv)(GLuint program, GLint location, GLsizei bufSize, GLint *params); /* 2841 */ void APIENTRY (*GetnUniformuiv)(GLuint program, GLint location, GLsizei bufSize, GLuint *params); /* 2842 */ void APIENTRY (*InvalidateNamedFramebufferData)(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments); /* 2843 */ void APIENTRY (*InvalidateNamedFramebufferSubData)(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); /* 2844 */ GLboolean APIENTRY (*IsCommandListNV)(GLuint list); /* 2845 */ GLboolean APIENTRY (*IsStateNV)(GLuint state); /* 2846 */ void APIENTRY (*ListDrawCommandsStatesClientNV)(GLuint list, GLuint segment, const void * *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); /* 2847 */ void * APIENTRY (*MapNamedBuffer)(GLuint buffer, GLenum access); /* 2848 */ void * APIENTRY (*MapNamedBufferRange)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); /* 2849 */ void APIENTRY (*MatrixLoad3x2fNV)(GLenum matrixMode, const GLfloat *m); /* 2850 */ void APIENTRY (*MatrixLoad3x3fNV)(GLenum matrixMode, const GLfloat *m); /* 2851 */ void APIENTRY (*MatrixLoadTranspose3x3fNV)(GLenum matrixMode, const GLfloat *m); /* 2852 */ void APIENTRY (*MatrixMult3x2fNV)(GLenum matrixMode, const GLfloat *m); /* 2853 */ void APIENTRY (*MatrixMult3x3fNV)(GLenum matrixMode, const GLfloat *m); /* 2854 */ void APIENTRY (*MatrixMultTranspose3x3fNV)(GLenum matrixMode, const GLfloat *m); /* 2855 */ void APIENTRY (*MemoryBarrierByRegion)(GLbitfield barriers); /* 2856 */ void APIENTRY (*MultiDrawArraysIndirectBindlessCountNV)(GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); /* 2857 */ void APIENTRY (*MultiDrawElementsIndirectBindlessCountNV)(GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); /* 2858 */ void APIENTRY (*NamedBufferData)(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); /* 2859 */ void APIENTRY (*NamedBufferPageCommitmentARB)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit); /* 2860 */ void APIENTRY (*NamedBufferPageCommitmentEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit); /* 2861 */ void APIENTRY (*NamedBufferStorage)(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); /* 2862 */ void APIENTRY (*NamedBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); /* 2863 */ void APIENTRY (*NamedFramebufferDrawBuffer)(GLuint framebuffer, GLenum buf); /* 2864 */ void APIENTRY (*NamedFramebufferDrawBuffers)(GLuint framebuffer, GLsizei n, const GLenum *bufs); /* 2865 */ void APIENTRY (*NamedFramebufferParameteri)(GLuint framebuffer, GLenum pname, GLint param); /* 2866 */ void APIENTRY (*NamedFramebufferReadBuffer)(GLuint framebuffer, GLenum src); /* 2867 */ void APIENTRY (*NamedFramebufferRenderbuffer)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 2868 */ void APIENTRY (*NamedFramebufferSampleLocationsfvNV)(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); /* 2869 */ void APIENTRY (*NamedFramebufferTexture)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); /* 2870 */ void APIENTRY (*NamedFramebufferTextureLayer)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 2871 */ void APIENTRY (*NamedRenderbufferStorage)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); /* 2872 */ void APIENTRY (*NamedRenderbufferStorageMultisample)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 2873 */ GLenum APIENTRY (*PathGlyphIndexArrayNV)(GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); /* 2874 */ GLenum APIENTRY (*PathGlyphIndexRangeNV)(GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); /* 2875 */ GLenum APIENTRY (*PathMemoryGlyphIndexArrayNV)(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); /* 2876 */ void APIENTRY (*PolygonOffsetClampEXT)(GLfloat factor, GLfloat units, GLfloat clamp); /* 2877 */ void APIENTRY (*ProgramPathFragmentInputGenNV)(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); /* 2878 */ void APIENTRY (*RasterSamplesEXT)(GLuint samples, GLboolean32 fixedsamplelocations); /* 2879 */ void APIENTRY (*ReadnPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); /* 2880 */ void APIENTRY (*ResolveDepthValuesNV)(void); /* 2881 */ void APIENTRY (*StateCaptureNV)(GLuint state, GLenum mode); /* 2882 */ void APIENTRY (*StencilThenCoverFillPathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); /* 2883 */ void APIENTRY (*StencilThenCoverFillPathNV)(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); /* 2884 */ void APIENTRY (*StencilThenCoverStrokePathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); /* 2885 */ void APIENTRY (*StencilThenCoverStrokePathNV)(GLuint path, GLint reference, GLuint mask, GLenum coverMode); /* 2886 */ void APIENTRY (*SubpixelPrecisionBiasNV)(GLuint xbits, GLuint ybits); /* 2887 */ void APIENTRY (*TextureBarrier)(void); /* 2888 */ void APIENTRY (*TextureBuffer)(GLuint texture, GLenum internalformat, GLuint buffer); /* 2889 */ void APIENTRY (*TextureBufferRange)(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 2890 */ void APIENTRY (*TextureParameterIiv)(GLuint texture, GLenum pname, const GLint *params); /* 2891 */ void APIENTRY (*TextureParameterIuiv)(GLuint texture, GLenum pname, const GLuint *params); /* 2892 */ void APIENTRY (*TextureParameterf)(GLuint texture, GLenum pname, GLfloat param); /* 2893 */ void APIENTRY (*TextureParameterfv)(GLuint texture, GLenum pname, const GLfloat *param); /* 2894 */ void APIENTRY (*TextureParameteri)(GLuint texture, GLenum pname, GLint param); /* 2895 */ void APIENTRY (*TextureParameteriv)(GLuint texture, GLenum pname, const GLint *param); /* 2896 */ void APIENTRY (*TextureStorage1D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); /* 2897 */ void APIENTRY (*TextureStorage2D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); /* 2898 */ void APIENTRY (*TextureStorage2DMultisample)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations); /* 2899 */ void APIENTRY (*TextureStorage3D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); /* 2900 */ void APIENTRY (*TextureStorage3DMultisample)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations); /* 2901 */ void APIENTRY (*TextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); /* 2902 */ void APIENTRY (*TextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); /* 2903 */ void APIENTRY (*TextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); /* 2904 */ void APIENTRY (*TransformFeedbackBufferBase)(GLuint xfb, GLuint index, GLuint buffer); /* 2905 */ void APIENTRY (*TransformFeedbackBufferRange)(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 2906 */ GLboolean APIENTRY (*UnmapNamedBuffer)(GLuint buffer); /* 2907 */ void APIENTRY (*VertexArrayAttribBinding)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); /* 2908 */ void APIENTRY (*VertexArrayAttribFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset); /* 2909 */ void APIENTRY (*VertexArrayAttribIFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); /* 2910 */ void APIENTRY (*VertexArrayAttribLFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); /* 2911 */ void APIENTRY (*VertexArrayBindingDivisor)(GLuint vaobj, GLuint bindingindex, GLuint divisor); /* 2912 */ void APIENTRY (*VertexArrayElementBuffer)(GLuint vaobj, GLuint buffer); /* 2913 */ void APIENTRY (*VertexArrayVertexBuffer)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); /* 2914 */ void APIENTRY (*VertexArrayVertexBuffers)(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); /* 2915 */ OSMesaContext APIENTRY (*OSMesaCreateContextAttribs)(const GLint *attribList, OSMesaContext sharelist); /* 2916 */ void APIENTRY (*SpecializeShader)(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); /* 2917 */ void APIENTRY (*SpecializeShaderARB)(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); /* 2918 */ void APIENTRY (*MultiDrawArraysIndirectCount)(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); /* 2919 */ void APIENTRY (*MultiDrawElementsIndirectCount)(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); /* 2920 */ void APIENTRY (*PolygonOffsetClamp)(GLfloat factor, GLfloat units, GLfloat clamp); /* 2921 */ void APIENTRY (*PrimitiveBoundingBoxARB)(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); /* 2922 */ void APIENTRY (*Uniform1i64ARB)(GLint location, GLint64 x); /* 2923 */ void APIENTRY (*Uniform2i64ARB)(GLint location, GLint64 x, GLint64 y); /* 2924 */ void APIENTRY (*Uniform3i64ARB)(GLint location, GLint64 x, GLint64 y, GLint64 z); /* 2925 */ void APIENTRY (*Uniform4i64ARB)(GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); /* 2926 */ void APIENTRY (*Uniform1i64vARB)(GLint location, GLsizei count, const GLint64 *value); /* 2927 */ void APIENTRY (*Uniform2i64vARB)(GLint location, GLsizei count, const GLint64 *value); /* 2928 */ void APIENTRY (*Uniform3i64vARB)(GLint location, GLsizei count, const GLint64 *value); /* 2929 */ void APIENTRY (*Uniform4i64vARB)(GLint location, GLsizei count, const GLint64 *value); /* 2930 */ void APIENTRY (*Uniform1ui64ARB)(GLint location, GLuint64 x); /* 2931 */ void APIENTRY (*Uniform2ui64ARB)(GLint location, GLuint64 x, GLuint64 y); /* 2932 */ void APIENTRY (*Uniform3ui64ARB)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z); /* 2933 */ void APIENTRY (*Uniform4ui64ARB)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); /* 2934 */ void APIENTRY (*Uniform1ui64vARB)(GLint location, GLsizei count, const GLuint64 *value); /* 2935 */ void APIENTRY (*Uniform2ui64vARB)(GLint location, GLsizei count, const GLuint64 *value); /* 2936 */ void APIENTRY (*Uniform3ui64vARB)(GLint location, GLsizei count, const GLuint64 *value); /* 2937 */ void APIENTRY (*Uniform4ui64vARB)(GLint location, GLsizei count, const GLuint64 *value); /* 2938 */ void APIENTRY (*GetUniformi64vARB)(GLuint program, GLint location, GLint64 *params); /* 2939 */ void APIENTRY (*GetUniformui64vARB)(GLuint program, GLint location, GLuint64 *params); /* 2940 */ void APIENTRY (*GetnUniformi64vARB)(GLuint program, GLint location, GLsizei bufSize, GLint64 *params); /* 2941 */ void APIENTRY (*GetnUniformui64vARB)(GLuint program, GLint location, GLsizei bufSize, GLuint64 *params); /* 2942 */ void APIENTRY (*ProgramUniform1i64ARB)(GLuint program, GLint location, GLint64 x); /* 2943 */ void APIENTRY (*ProgramUniform2i64ARB)(GLuint program, GLint location, GLint64 x, GLint64 y); /* 2944 */ void APIENTRY (*ProgramUniform3i64ARB)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); /* 2945 */ void APIENTRY (*ProgramUniform4i64ARB)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); /* 2946 */ void APIENTRY (*ProgramUniform1i64vARB)(GLuint program, GLint location, GLsizei count, const GLint64 *value); /* 2947 */ void APIENTRY (*ProgramUniform2i64vARB)(GLuint program, GLint location, GLsizei count, const GLint64 *value); /* 2948 */ void APIENTRY (*ProgramUniform3i64vARB)(GLuint program, GLint location, GLsizei count, const GLint64 *value); /* 2949 */ void APIENTRY (*ProgramUniform4i64vARB)(GLuint program, GLint location, GLsizei count, const GLint64 *value); /* 2950 */ void APIENTRY (*ProgramUniform1ui64ARB)(GLuint program, GLint location, GLuint64 x); /* 2951 */ void APIENTRY (*ProgramUniform2ui64ARB)(GLuint program, GLint location, GLuint64 x, GLuint64 y); /* 2952 */ void APIENTRY (*ProgramUniform3ui64ARB)(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z); /* 2953 */ void APIENTRY (*ProgramUniform4ui64ARB)(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); /* 2954 */ void APIENTRY (*ProgramUniform1ui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); /* 2955 */ void APIENTRY (*ProgramUniform2ui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); /* 2956 */ void APIENTRY (*ProgramUniform3ui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); /* 2957 */ void APIENTRY (*ProgramUniform4ui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 *value); /* 2958 */ void APIENTRY (*MaxShaderCompilerThreadsARB)(GLuint count); /* 2959 */ void APIENTRY (*FramebufferSampleLocationsfvARB)(GLenum target, GLuint start, GLsizei count, const GLfloat *v); /* 2960 */ void APIENTRY (*NamedFramebufferSampleLocationsfvARB)(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); /* 2961 */ void APIENTRY (*EvaluateDepthValuesARB)(void); /* 2962 */ void APIENTRY (*MaxShaderCompilerThreadsKHR)(GLuint count); /* 2963 */ void APIENTRY (*BufferStorageExternalEXT)(GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); /* 2964 */ void APIENTRY (*NamedBufferStorageExternalEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); /* 2965 */ void APIENTRY (*GetUnsignedBytevEXT)(GLenum pname, GLubyte *data); /* 2966 */ void APIENTRY (*GetUnsignedBytei_vEXT)(GLenum target, GLuint index, GLubyte *data); /* 2967 */ void APIENTRY (*DeleteMemoryObjectsEXT)(GLsizei n, const GLuint *memoryObjects); /* 2968 */ GLboolean APIENTRY (*IsMemoryObjectEXT)(GLuint memoryObject); /* 2969 */ void APIENTRY (*CreateMemoryObjectsEXT)(GLsizei n, GLuint *memoryObjects); /* 2970 */ void APIENTRY (*MemoryObjectParameterivEXT)(GLuint memoryObject, GLenum pname, const GLint *params); /* 2971 */ void APIENTRY (*GetMemoryObjectParameterivEXT)(GLuint memoryObject, GLenum pname, GLint *params); /* 2972 */ void APIENTRY (*TexStorageMem2DEXT)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); /* 2973 */ void APIENTRY (*TexStorageMem2DMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset); /* 2974 */ void APIENTRY (*TexStorageMem3DEXT)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); /* 2975 */ void APIENTRY (*TexStorageMem3DMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset); /* 2976 */ void APIENTRY (*BufferStorageMemEXT)(GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); /* 2977 */ void APIENTRY (*TextureStorageMem2DEXT)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); /* 2978 */ void APIENTRY (*TextureStorageMem2DMultisampleEXT)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset); /* 2979 */ void APIENTRY (*TextureStorageMem3DEXT)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); /* 2980 */ void APIENTRY (*TextureStorageMem3DMultisampleEXT)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset); /* 2981 */ void APIENTRY (*NamedBufferStorageMemEXT)(GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); /* 2982 */ void APIENTRY (*TexStorageMem1DEXT)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset); /* 2983 */ void APIENTRY (*TextureStorageMem1DEXT)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset); /* 2984 */ void APIENTRY (*ImportMemoryFdEXT)(GLuint memory, GLuint64 size, GLenum handleType, GLint fd); /* 2985 */ void APIENTRY (*ImportMemoryWin32HandleEXT)(GLuint memory, GLuint64 size, GLenum handleType, void *handle); /* 2986 */ void APIENTRY (*ImportMemoryWin32NameEXT)(GLuint memory, GLuint64 size, GLenum handleType, const void *name); /* 2987 */ void APIENTRY (*GenSemaphoresEXT)(GLsizei n, GLuint *semaphores); /* 2988 */ void APIENTRY (*DeleteSemaphoresEXT)(GLsizei n, const GLuint *semaphores); /* 2989 */ GLboolean APIENTRY (*IsSemaphoreEXT)(GLuint semaphore); /* 2990 */ void APIENTRY (*SemaphoreParameterui64vEXT)(GLuint semaphore, GLenum pname, const GLuint64 *params); /* 2991 */ void APIENTRY (*GetSemaphoreParameterui64vEXT)(GLuint semaphore, GLenum pname, GLuint64 *params); /* 2992 */ void APIENTRY (*WaitSemaphoreEXT)(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); /* 2993 */ void APIENTRY (*SignalSemaphoreEXT)(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); /* 2994 */ void APIENTRY (*ImportSemaphoreFdEXT)(GLuint semaphore, GLenum handleType, GLint fd); /* 2995 */ void APIENTRY (*ImportSemaphoreWin32HandleEXT)(GLuint semaphore, GLenum handleType, void *handle); /* 2996 */ void APIENTRY (*ImportSemaphoreWin32NameEXT)(GLuint semaphore, GLenum handleType, const void *name); /* 2997 */ GLboolean APIENTRY (*AcquireKeyedMutexWin32EXT)(GLuint memory, GLuint64 key, GLuint timeout); /* 2998 */ GLboolean APIENTRY (*ReleaseKeyedMutexWin32EXT)(GLuint memory, GLuint64 key); /* 2999 */ void APIENTRY (*LGPUNamedBufferSubDataNVX)(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); /* 3000 */ void APIENTRY (*LGPUCopyImageSubDataNVX)(GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); /* 3001 */ void APIENTRY (*LGPUInterlockNVX)(void); /* 3002 */ void APIENTRY (*AlphaToCoverageDitherControlNV)(GLenum mode); /* 3003 */ void APIENTRY (*DrawVkImageNV)(GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); /* 3004 */ GLVULKANPROCNV APIENTRY (*GetVkProcAddrNV)(const GLchar *name); /* 3005 */ void APIENTRY (*WaitVkSemaphoreNV)(GLuint64 vkSemaphore); /* 3006 */ void APIENTRY (*SignalVkSemaphoreNV)(GLuint64 vkSemaphore); /* 3007 */ void APIENTRY (*SignalVkFenceNV)(GLuint64 vkFence); /* 3008 */ void APIENTRY (*RenderGpuMaskNV)(GLbitfield mask); /* 3009 */ void APIENTRY (*MulticastBufferSubDataNV)(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); /* 3010 */ void APIENTRY (*MulticastCopyBufferSubDataNV)(GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 3011 */ void APIENTRY (*MulticastCopyImageSubDataNV)(GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); /* 3012 */ void APIENTRY (*MulticastBlitFramebufferNV)(GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 3013 */ void APIENTRY (*MulticastFramebufferSampleLocationsfvNV)(GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); /* 3014 */ void APIENTRY (*MulticastBarrierNV)(void); /* 3015 */ void APIENTRY (*MulticastWaitSyncNV)(GLuint signalGpu, GLbitfield waitGpuMask); /* 3016 */ void APIENTRY (*MulticastGetQueryObjectivNV)(GLuint gpu, GLuint id, GLenum pname, GLint *params); /* 3017 */ void APIENTRY (*MulticastGetQueryObjectuivNV)(GLuint gpu, GLuint id, GLenum pname, GLuint *params); /* 3018 */ void APIENTRY (*MulticastGetQueryObjecti64vNV)(GLuint gpu, GLuint id, GLenum pname, GLint64 *params); /* 3019 */ void APIENTRY (*MulticastGetQueryObjectui64vNV)(GLuint gpu, GLuint id, GLenum pname, GLuint64 *params); /* 3020 */ GLint APIENTRY (*QueryResourceNV)(GLenum queryType, GLint tagId, GLuint bufSize, GLint *buffer); /* 3021 */ void APIENTRY (*GenQueryResourceTagNV)(GLsizei n, GLint *tagIds); /* 3022 */ void APIENTRY (*DeleteQueryResourceTagNV)(GLsizei n, const GLint *tagIds); /* 3023 */ void APIENTRY (*QueryResourceTagNV)(GLint tagId, const GLchar *tagString); /* 3024 */ void APIENTRY (*FramebufferSamplePositionsfvAMD)(GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values); /* 3025 */ void APIENTRY (*NamedFramebufferSamplePositionsfvAMD)(GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values); /* 3026 */ void APIENTRY (*GetFramebufferParameterfvAMD)(GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); /* 3027 */ void APIENTRY (*GetNamedFramebufferParameterfvAMD)(GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); /* 3028 */ void APIENTRY (*WindowRectanglesEXT)(GLenum mode, GLsizei count, const GLint *box); /* 3029 */ void APIENTRY (*ApplyFramebufferAttachmentCMAAINTEL)(void); /* 3030 */ void APIENTRY (*ViewportSwizzleNV)(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); /* 3031 */ void APIENTRY (*ViewportPositionWScaleNV)(GLuint index, GLfloat xcoeff, GLfloat ycoeff); /* 3032 */ void APIENTRY (*ConservativeRasterParameterfNV)(GLenum pname, GLfloat value); /* 3033 */ void APIENTRY (*ConservativeRasterParameteriNV)(GLenum pname, GLint param); unsigned int __numfuncs; OSMESAproc APIENTRY (*__old_OSMesaGetProcAddress)(const char *funcName); }; extern struct _gl_osmesa gl; #ifndef NFOSMESA_NO_MANGLE #undef glGetString #define glGetString (gl.GetString) #undef OSMesaCreateContext #define OSMesaCreateContext (gl.OSMesaCreateContext) #undef OSMesaCreateContextExt #define OSMesaCreateContextExt (gl.OSMesaCreateContextExt) #undef OSMesaDestroyContext #define OSMesaDestroyContext (gl.OSMesaDestroyContext) #undef OSMesaMakeCurrent #define OSMesaMakeCurrent (gl.OSMesaMakeCurrent) #undef OSMesaGetCurrentContext #define OSMesaGetCurrentContext (gl.OSMesaGetCurrentContext) #undef OSMesaPixelStore #define OSMesaPixelStore (gl.OSMesaPixelStore) #undef OSMesaGetIntegerv #define OSMesaGetIntegerv (gl.OSMesaGetIntegerv) #undef OSMesaGetDepthBuffer #define OSMesaGetDepthBuffer (gl.OSMesaGetDepthBuffer) #undef OSMesaGetColorBuffer #define OSMesaGetColorBuffer (gl.OSMesaGetColorBuffer) #undef OSMesaGetProcAddress #define OSMesaGetProcAddress (gl.OSMesaGetProcAddress) #undef glClearIndex #define glClearIndex (gl.ClearIndex) #undef glClearColor #define glClearColor (gl.ClearColor) #undef glClear #define glClear (gl.Clear) #undef glIndexMask #define glIndexMask (gl.IndexMask) #undef glColorMask #define glColorMask (gl.ColorMask) #undef glAlphaFunc #define glAlphaFunc (gl.AlphaFunc) #undef glBlendFunc #define glBlendFunc (gl.BlendFunc) #undef glLogicOp #define glLogicOp (gl.LogicOp) #undef glCullFace #define glCullFace (gl.CullFace) #undef glFrontFace #define glFrontFace (gl.FrontFace) #undef glPointSize #define glPointSize (gl.PointSize) #undef glLineWidth #define glLineWidth (gl.LineWidth) #undef glLineStipple #define glLineStipple (gl.LineStipple) #undef glPolygonMode #define glPolygonMode (gl.PolygonMode) #undef glPolygonOffset #define glPolygonOffset (gl.PolygonOffset) #undef glPolygonStipple #define glPolygonStipple (gl.PolygonStipple) #undef glGetPolygonStipple #define glGetPolygonStipple (gl.GetPolygonStipple) #undef glEdgeFlag #define glEdgeFlag (gl.EdgeFlag) #undef glEdgeFlagv #define glEdgeFlagv (gl.EdgeFlagv) #undef glScissor #define glScissor (gl.Scissor) #undef glClipPlane #define glClipPlane (gl.ClipPlane) #undef glGetClipPlane #define glGetClipPlane (gl.GetClipPlane) #undef glDrawBuffer #define glDrawBuffer (gl.DrawBuffer) #undef glReadBuffer #define glReadBuffer (gl.ReadBuffer) #undef glEnable #define glEnable (gl.Enable) #undef glDisable #define glDisable (gl.Disable) #undef glIsEnabled #define glIsEnabled (gl.IsEnabled) #undef glEnableClientState #define glEnableClientState (gl.EnableClientState) #undef glDisableClientState #define glDisableClientState (gl.DisableClientState) #undef glGetBooleanv #define glGetBooleanv (gl.GetBooleanv) #undef glGetDoublev #define glGetDoublev (gl.GetDoublev) #undef glGetFloatv #define glGetFloatv (gl.GetFloatv) #undef glGetIntegerv #define glGetIntegerv (gl.GetIntegerv) #undef glPushAttrib #define glPushAttrib (gl.PushAttrib) #undef glPopAttrib #define glPopAttrib (gl.PopAttrib) #undef glPushClientAttrib #define glPushClientAttrib (gl.PushClientAttrib) #undef glPopClientAttrib #define glPopClientAttrib (gl.PopClientAttrib) #undef glRenderMode #define glRenderMode (gl.RenderMode) #undef glGetError #define glGetError (gl.GetError) #undef glFinish #define glFinish (gl.Finish) #undef glFlush #define glFlush (gl.Flush) #undef glHint #define glHint (gl.Hint) #undef glClearDepth #define glClearDepth (gl.ClearDepth) #undef glDepthFunc #define glDepthFunc (gl.DepthFunc) #undef glDepthMask #define glDepthMask (gl.DepthMask) #undef glDepthRange #define glDepthRange (gl.DepthRange) #undef glClearAccum #define glClearAccum (gl.ClearAccum) #undef glAccum #define glAccum (gl.Accum) #undef glMatrixMode #define glMatrixMode (gl.MatrixMode) #undef glOrtho #define glOrtho (gl.Ortho) #undef glFrustum #define glFrustum (gl.Frustum) #undef glViewport #define glViewport (gl.Viewport) #undef glPushMatrix #define glPushMatrix (gl.PushMatrix) #undef glPopMatrix #define glPopMatrix (gl.PopMatrix) #undef glLoadIdentity #define glLoadIdentity (gl.LoadIdentity) #undef glLoadMatrixd #define glLoadMatrixd (gl.LoadMatrixd) #undef glLoadMatrixf #define glLoadMatrixf (gl.LoadMatrixf) #undef glMultMatrixd #define glMultMatrixd (gl.MultMatrixd) #undef glMultMatrixf #define glMultMatrixf (gl.MultMatrixf) #undef glRotated #define glRotated (gl.Rotated) #undef glRotatef #define glRotatef (gl.Rotatef) #undef glScaled #define glScaled (gl.Scaled) #undef glScalef #define glScalef (gl.Scalef) #undef glTranslated #define glTranslated (gl.Translated) #undef glTranslatef #define glTranslatef (gl.Translatef) #undef glIsList #define glIsList (gl.IsList) #undef glDeleteLists #define glDeleteLists (gl.DeleteLists) #undef glGenLists #define glGenLists (gl.GenLists) #undef glNewList #define glNewList (gl.NewList) #undef glEndList #define glEndList (gl.EndList) #undef glCallList #define glCallList (gl.CallList) #undef glCallLists #define glCallLists (gl.CallLists) #undef glListBase #define glListBase (gl.ListBase) #undef glBegin #define glBegin (gl.Begin) #undef glEnd #define glEnd (gl.End) #undef glVertex2d #define glVertex2d (gl.Vertex2d) #undef glVertex2f #define glVertex2f (gl.Vertex2f) #undef glVertex2i #define glVertex2i (gl.Vertex2i) #undef glVertex2s #define glVertex2s (gl.Vertex2s) #undef glVertex3d #define glVertex3d (gl.Vertex3d) #undef glVertex3f #define glVertex3f (gl.Vertex3f) #undef glVertex3i #define glVertex3i (gl.Vertex3i) #undef glVertex3s #define glVertex3s (gl.Vertex3s) #undef glVertex4d #define glVertex4d (gl.Vertex4d) #undef glVertex4f #define glVertex4f (gl.Vertex4f) #undef glVertex4i #define glVertex4i (gl.Vertex4i) #undef glVertex4s #define glVertex4s (gl.Vertex4s) #undef glVertex2dv #define glVertex2dv (gl.Vertex2dv) #undef glVertex2fv #define glVertex2fv (gl.Vertex2fv) #undef glVertex2iv #define glVertex2iv (gl.Vertex2iv) #undef glVertex2sv #define glVertex2sv (gl.Vertex2sv) #undef glVertex3dv #define glVertex3dv (gl.Vertex3dv) #undef glVertex3fv #define glVertex3fv (gl.Vertex3fv) #undef glVertex3iv #define glVertex3iv (gl.Vertex3iv) #undef glVertex3sv #define glVertex3sv (gl.Vertex3sv) #undef glVertex4dv #define glVertex4dv (gl.Vertex4dv) #undef glVertex4fv #define glVertex4fv (gl.Vertex4fv) #undef glVertex4iv #define glVertex4iv (gl.Vertex4iv) #undef glVertex4sv #define glVertex4sv (gl.Vertex4sv) #undef glNormal3b #define glNormal3b (gl.Normal3b) #undef glNormal3d #define glNormal3d (gl.Normal3d) #undef glNormal3f #define glNormal3f (gl.Normal3f) #undef glNormal3i #define glNormal3i (gl.Normal3i) #undef glNormal3s #define glNormal3s (gl.Normal3s) #undef glNormal3bv #define glNormal3bv (gl.Normal3bv) #undef glNormal3dv #define glNormal3dv (gl.Normal3dv) #undef glNormal3fv #define glNormal3fv (gl.Normal3fv) #undef glNormal3iv #define glNormal3iv (gl.Normal3iv) #undef glNormal3sv #define glNormal3sv (gl.Normal3sv) #undef glIndexd #define glIndexd (gl.Indexd) #undef glIndexf #define glIndexf (gl.Indexf) #undef glIndexi #define glIndexi (gl.Indexi) #undef glIndexs #define glIndexs (gl.Indexs) #undef glIndexub #define glIndexub (gl.Indexub) #undef glIndexdv #define glIndexdv (gl.Indexdv) #undef glIndexfv #define glIndexfv (gl.Indexfv) #undef glIndexiv #define glIndexiv (gl.Indexiv) #undef glIndexsv #define glIndexsv (gl.Indexsv) #undef glIndexubv #define glIndexubv (gl.Indexubv) #undef glColor3b #define glColor3b (gl.Color3b) #undef glColor3d #define glColor3d (gl.Color3d) #undef glColor3f #define glColor3f (gl.Color3f) #undef glColor3i #define glColor3i (gl.Color3i) #undef glColor3s #define glColor3s (gl.Color3s) #undef glColor3ub #define glColor3ub (gl.Color3ub) #undef glColor3ui #define glColor3ui (gl.Color3ui) #undef glColor3us #define glColor3us (gl.Color3us) #undef glColor4b #define glColor4b (gl.Color4b) #undef glColor4d #define glColor4d (gl.Color4d) #undef glColor4f #define glColor4f (gl.Color4f) #undef glColor4i #define glColor4i (gl.Color4i) #undef glColor4s #define glColor4s (gl.Color4s) #undef glColor4ub #define glColor4ub (gl.Color4ub) #undef glColor4ui #define glColor4ui (gl.Color4ui) #undef glColor4us #define glColor4us (gl.Color4us) #undef glColor3bv #define glColor3bv (gl.Color3bv) #undef glColor3dv #define glColor3dv (gl.Color3dv) #undef glColor3fv #define glColor3fv (gl.Color3fv) #undef glColor3iv #define glColor3iv (gl.Color3iv) #undef glColor3sv #define glColor3sv (gl.Color3sv) #undef glColor3ubv #define glColor3ubv (gl.Color3ubv) #undef glColor3uiv #define glColor3uiv (gl.Color3uiv) #undef glColor3usv #define glColor3usv (gl.Color3usv) #undef glColor4bv #define glColor4bv (gl.Color4bv) #undef glColor4dv #define glColor4dv (gl.Color4dv) #undef glColor4fv #define glColor4fv (gl.Color4fv) #undef glColor4iv #define glColor4iv (gl.Color4iv) #undef glColor4sv #define glColor4sv (gl.Color4sv) #undef glColor4ubv #define glColor4ubv (gl.Color4ubv) #undef glColor4uiv #define glColor4uiv (gl.Color4uiv) #undef glColor4usv #define glColor4usv (gl.Color4usv) #undef glTexCoord1d #define glTexCoord1d (gl.TexCoord1d) #undef glTexCoord1f #define glTexCoord1f (gl.TexCoord1f) #undef glTexCoord1i #define glTexCoord1i (gl.TexCoord1i) #undef glTexCoord1s #define glTexCoord1s (gl.TexCoord1s) #undef glTexCoord2d #define glTexCoord2d (gl.TexCoord2d) #undef glTexCoord2f #define glTexCoord2f (gl.TexCoord2f) #undef glTexCoord2i #define glTexCoord2i (gl.TexCoord2i) #undef glTexCoord2s #define glTexCoord2s (gl.TexCoord2s) #undef glTexCoord3d #define glTexCoord3d (gl.TexCoord3d) #undef glTexCoord3f #define glTexCoord3f (gl.TexCoord3f) #undef glTexCoord3i #define glTexCoord3i (gl.TexCoord3i) #undef glTexCoord3s #define glTexCoord3s (gl.TexCoord3s) #undef glTexCoord4d #define glTexCoord4d (gl.TexCoord4d) #undef glTexCoord4f #define glTexCoord4f (gl.TexCoord4f) #undef glTexCoord4i #define glTexCoord4i (gl.TexCoord4i) #undef glTexCoord4s #define glTexCoord4s (gl.TexCoord4s) #undef glTexCoord1dv #define glTexCoord1dv (gl.TexCoord1dv) #undef glTexCoord1fv #define glTexCoord1fv (gl.TexCoord1fv) #undef glTexCoord1iv #define glTexCoord1iv (gl.TexCoord1iv) #undef glTexCoord1sv #define glTexCoord1sv (gl.TexCoord1sv) #undef glTexCoord2dv #define glTexCoord2dv (gl.TexCoord2dv) #undef glTexCoord2fv #define glTexCoord2fv (gl.TexCoord2fv) #undef glTexCoord2iv #define glTexCoord2iv (gl.TexCoord2iv) #undef glTexCoord2sv #define glTexCoord2sv (gl.TexCoord2sv) #undef glTexCoord3dv #define glTexCoord3dv (gl.TexCoord3dv) #undef glTexCoord3fv #define glTexCoord3fv (gl.TexCoord3fv) #undef glTexCoord3iv #define glTexCoord3iv (gl.TexCoord3iv) #undef glTexCoord3sv #define glTexCoord3sv (gl.TexCoord3sv) #undef glTexCoord4dv #define glTexCoord4dv (gl.TexCoord4dv) #undef glTexCoord4fv #define glTexCoord4fv (gl.TexCoord4fv) #undef glTexCoord4iv #define glTexCoord4iv (gl.TexCoord4iv) #undef glTexCoord4sv #define glTexCoord4sv (gl.TexCoord4sv) #undef glRasterPos2d #define glRasterPos2d (gl.RasterPos2d) #undef glRasterPos2f #define glRasterPos2f (gl.RasterPos2f) #undef glRasterPos2i #define glRasterPos2i (gl.RasterPos2i) #undef glRasterPos2s #define glRasterPos2s (gl.RasterPos2s) #undef glRasterPos3d #define glRasterPos3d (gl.RasterPos3d) #undef glRasterPos3f #define glRasterPos3f (gl.RasterPos3f) #undef glRasterPos3i #define glRasterPos3i (gl.RasterPos3i) #undef glRasterPos3s #define glRasterPos3s (gl.RasterPos3s) #undef glRasterPos4d #define glRasterPos4d (gl.RasterPos4d) #undef glRasterPos4f #define glRasterPos4f (gl.RasterPos4f) #undef glRasterPos4i #define glRasterPos4i (gl.RasterPos4i) #undef glRasterPos4s #define glRasterPos4s (gl.RasterPos4s) #undef glRasterPos2dv #define glRasterPos2dv (gl.RasterPos2dv) #undef glRasterPos2fv #define glRasterPos2fv (gl.RasterPos2fv) #undef glRasterPos2iv #define glRasterPos2iv (gl.RasterPos2iv) #undef glRasterPos2sv #define glRasterPos2sv (gl.RasterPos2sv) #undef glRasterPos3dv #define glRasterPos3dv (gl.RasterPos3dv) #undef glRasterPos3fv #define glRasterPos3fv (gl.RasterPos3fv) #undef glRasterPos3iv #define glRasterPos3iv (gl.RasterPos3iv) #undef glRasterPos3sv #define glRasterPos3sv (gl.RasterPos3sv) #undef glRasterPos4dv #define glRasterPos4dv (gl.RasterPos4dv) #undef glRasterPos4fv #define glRasterPos4fv (gl.RasterPos4fv) #undef glRasterPos4iv #define glRasterPos4iv (gl.RasterPos4iv) #undef glRasterPos4sv #define glRasterPos4sv (gl.RasterPos4sv) #undef glRectd #define glRectd (gl.Rectd) #undef glRectf #define glRectf (gl.Rectf) #undef glRecti #define glRecti (gl.Recti) #undef glRects #define glRects (gl.Rects) #undef glRectdv #define glRectdv (gl.Rectdv) #undef glRectfv #define glRectfv (gl.Rectfv) #undef glRectiv #define glRectiv (gl.Rectiv) #undef glRectsv #define glRectsv (gl.Rectsv) #undef glVertexPointer #define glVertexPointer (gl.VertexPointer) #undef glNormalPointer #define glNormalPointer (gl.NormalPointer) #undef glColorPointer #define glColorPointer (gl.ColorPointer) #undef glIndexPointer #define glIndexPointer (gl.IndexPointer) #undef glTexCoordPointer #define glTexCoordPointer (gl.TexCoordPointer) #undef glEdgeFlagPointer #define glEdgeFlagPointer (gl.EdgeFlagPointer) #undef glGetPointerv #define glGetPointerv (gl.GetPointerv) #undef glArrayElement #define glArrayElement (gl.ArrayElement) #undef glDrawArrays #define glDrawArrays (gl.DrawArrays) #undef glDrawElements #define glDrawElements (gl.DrawElements) #undef glInterleavedArrays #define glInterleavedArrays (gl.InterleavedArrays) #undef glShadeModel #define glShadeModel (gl.ShadeModel) #undef glLightf #define glLightf (gl.Lightf) #undef glLighti #define glLighti (gl.Lighti) #undef glLightfv #define glLightfv (gl.Lightfv) #undef glLightiv #define glLightiv (gl.Lightiv) #undef glGetLightfv #define glGetLightfv (gl.GetLightfv) #undef glGetLightiv #define glGetLightiv (gl.GetLightiv) #undef glLightModelf #define glLightModelf (gl.LightModelf) #undef glLightModeli #define glLightModeli (gl.LightModeli) #undef glLightModelfv #define glLightModelfv (gl.LightModelfv) #undef glLightModeliv #define glLightModeliv (gl.LightModeliv) #undef glMaterialf #define glMaterialf (gl.Materialf) #undef glMateriali #define glMateriali (gl.Materiali) #undef glMaterialfv #define glMaterialfv (gl.Materialfv) #undef glMaterialiv #define glMaterialiv (gl.Materialiv) #undef glGetMaterialfv #define glGetMaterialfv (gl.GetMaterialfv) #undef glGetMaterialiv #define glGetMaterialiv (gl.GetMaterialiv) #undef glColorMaterial #define glColorMaterial (gl.ColorMaterial) #undef glPixelZoom #define glPixelZoom (gl.PixelZoom) #undef glPixelStoref #define glPixelStoref (gl.PixelStoref) #undef glPixelStorei #define glPixelStorei (gl.PixelStorei) #undef glPixelTransferf #define glPixelTransferf (gl.PixelTransferf) #undef glPixelTransferi #define glPixelTransferi (gl.PixelTransferi) #undef glPixelMapfv #define glPixelMapfv (gl.PixelMapfv) #undef glPixelMapuiv #define glPixelMapuiv (gl.PixelMapuiv) #undef glPixelMapusv #define glPixelMapusv (gl.PixelMapusv) #undef glGetPixelMapfv #define glGetPixelMapfv (gl.GetPixelMapfv) #undef glGetPixelMapuiv #define glGetPixelMapuiv (gl.GetPixelMapuiv) #undef glGetPixelMapusv #define glGetPixelMapusv (gl.GetPixelMapusv) #undef glBitmap #define glBitmap (gl.Bitmap) #undef glReadPixels #define glReadPixels (gl.ReadPixels) #undef glDrawPixels #define glDrawPixels (gl.DrawPixels) #undef glCopyPixels #define glCopyPixels (gl.CopyPixels) #undef glStencilFunc #define glStencilFunc (gl.StencilFunc) #undef glStencilMask #define glStencilMask (gl.StencilMask) #undef glStencilOp #define glStencilOp (gl.StencilOp) #undef glClearStencil #define glClearStencil (gl.ClearStencil) #undef glTexGend #define glTexGend (gl.TexGend) #undef glTexGenf #define glTexGenf (gl.TexGenf) #undef glTexGeni #define glTexGeni (gl.TexGeni) #undef glTexGendv #define glTexGendv (gl.TexGendv) #undef glTexGenfv #define glTexGenfv (gl.TexGenfv) #undef glTexGeniv #define glTexGeniv (gl.TexGeniv) #undef glGetTexGendv #define glGetTexGendv (gl.GetTexGendv) #undef glGetTexGenfv #define glGetTexGenfv (gl.GetTexGenfv) #undef glGetTexGeniv #define glGetTexGeniv (gl.GetTexGeniv) #undef glTexEnvf #define glTexEnvf (gl.TexEnvf) #undef glTexEnvi #define glTexEnvi (gl.TexEnvi) #undef glTexEnvfv #define glTexEnvfv (gl.TexEnvfv) #undef glTexEnviv #define glTexEnviv (gl.TexEnviv) #undef glGetTexEnvfv #define glGetTexEnvfv (gl.GetTexEnvfv) #undef glGetTexEnviv #define glGetTexEnviv (gl.GetTexEnviv) #undef glTexParameterf #define glTexParameterf (gl.TexParameterf) #undef glTexParameteri #define glTexParameteri (gl.TexParameteri) #undef glTexParameterfv #define glTexParameterfv (gl.TexParameterfv) #undef glTexParameteriv #define glTexParameteriv (gl.TexParameteriv) #undef glGetTexParameterfv #define glGetTexParameterfv (gl.GetTexParameterfv) #undef glGetTexParameteriv #define glGetTexParameteriv (gl.GetTexParameteriv) #undef glGetTexLevelParameterfv #define glGetTexLevelParameterfv (gl.GetTexLevelParameterfv) #undef glGetTexLevelParameteriv #define glGetTexLevelParameteriv (gl.GetTexLevelParameteriv) #undef glTexImage1D #define glTexImage1D (gl.TexImage1D) #undef glTexImage2D #define glTexImage2D (gl.TexImage2D) #undef glGetTexImage #define glGetTexImage (gl.GetTexImage) #undef glGenTextures #define glGenTextures (gl.GenTextures) #undef glDeleteTextures #define glDeleteTextures (gl.DeleteTextures) #undef glBindTexture #define glBindTexture (gl.BindTexture) #undef glPrioritizeTextures #define glPrioritizeTextures (gl.PrioritizeTextures) #undef glAreTexturesResident #define glAreTexturesResident (gl.AreTexturesResident) #undef glIsTexture #define glIsTexture (gl.IsTexture) #undef glTexSubImage1D #define glTexSubImage1D (gl.TexSubImage1D) #undef glTexSubImage2D #define glTexSubImage2D (gl.TexSubImage2D) #undef glCopyTexImage1D #define glCopyTexImage1D (gl.CopyTexImage1D) #undef glCopyTexImage2D #define glCopyTexImage2D (gl.CopyTexImage2D) #undef glCopyTexSubImage1D #define glCopyTexSubImage1D (gl.CopyTexSubImage1D) #undef glCopyTexSubImage2D #define glCopyTexSubImage2D (gl.CopyTexSubImage2D) #undef glMap1d #define glMap1d (gl.Map1d) #undef glMap1f #define glMap1f (gl.Map1f) #undef glMap2d #define glMap2d (gl.Map2d) #undef glMap2f #define glMap2f (gl.Map2f) #undef glGetMapdv #define glGetMapdv (gl.GetMapdv) #undef glGetMapfv #define glGetMapfv (gl.GetMapfv) #undef glGetMapiv #define glGetMapiv (gl.GetMapiv) #undef glEvalCoord1d #define glEvalCoord1d (gl.EvalCoord1d) #undef glEvalCoord1f #define glEvalCoord1f (gl.EvalCoord1f) #undef glEvalCoord1dv #define glEvalCoord1dv (gl.EvalCoord1dv) #undef glEvalCoord1fv #define glEvalCoord1fv (gl.EvalCoord1fv) #undef glEvalCoord2d #define glEvalCoord2d (gl.EvalCoord2d) #undef glEvalCoord2f #define glEvalCoord2f (gl.EvalCoord2f) #undef glEvalCoord2dv #define glEvalCoord2dv (gl.EvalCoord2dv) #undef glEvalCoord2fv #define glEvalCoord2fv (gl.EvalCoord2fv) #undef glMapGrid1d #define glMapGrid1d (gl.MapGrid1d) #undef glMapGrid1f #define glMapGrid1f (gl.MapGrid1f) #undef glMapGrid2d #define glMapGrid2d (gl.MapGrid2d) #undef glMapGrid2f #define glMapGrid2f (gl.MapGrid2f) #undef glEvalPoint1 #define glEvalPoint1 (gl.EvalPoint1) #undef glEvalPoint2 #define glEvalPoint2 (gl.EvalPoint2) #undef glEvalMesh1 #define glEvalMesh1 (gl.EvalMesh1) #undef glEvalMesh2 #define glEvalMesh2 (gl.EvalMesh2) #undef glFogf #define glFogf (gl.Fogf) #undef glFogi #define glFogi (gl.Fogi) #undef glFogfv #define glFogfv (gl.Fogfv) #undef glFogiv #define glFogiv (gl.Fogiv) #undef glFeedbackBuffer #define glFeedbackBuffer (gl.FeedbackBuffer) #undef glPassThrough #define glPassThrough (gl.PassThrough) #undef glSelectBuffer #define glSelectBuffer (gl.SelectBuffer) #undef glInitNames #define glInitNames (gl.InitNames) #undef glLoadName #define glLoadName (gl.LoadName) #undef glPushName #define glPushName (gl.PushName) #undef glPopName #define glPopName (gl.PopName) #undef glEnableTraceMESA #define glEnableTraceMESA (gl.EnableTraceMESA) #undef glDisableTraceMESA #define glDisableTraceMESA (gl.DisableTraceMESA) #undef glNewTraceMESA #define glNewTraceMESA (gl.NewTraceMESA) #undef glEndTraceMESA #define glEndTraceMESA (gl.EndTraceMESA) #undef glTraceAssertAttribMESA #define glTraceAssertAttribMESA (gl.TraceAssertAttribMESA) #undef glTraceCommentMESA #define glTraceCommentMESA (gl.TraceCommentMESA) #undef glTraceTextureMESA #define glTraceTextureMESA (gl.TraceTextureMESA) #undef glTraceListMESA #define glTraceListMESA (gl.TraceListMESA) #undef glTracePointerMESA #define glTracePointerMESA (gl.TracePointerMESA) #undef glTracePointerRangeMESA #define glTracePointerRangeMESA (gl.TracePointerRangeMESA) #undef glBlendEquationSeparateATI #define glBlendEquationSeparateATI (gl.BlendEquationSeparateATI) #undef glBlendColor #define glBlendColor (gl.BlendColor) #undef glBlendEquation #define glBlendEquation (gl.BlendEquation) #undef glDrawRangeElements #define glDrawRangeElements (gl.DrawRangeElements) #undef glColorTable #define glColorTable (gl.ColorTable) #undef glColorTableParameterfv #define glColorTableParameterfv (gl.ColorTableParameterfv) #undef glColorTableParameteriv #define glColorTableParameteriv (gl.ColorTableParameteriv) #undef glCopyColorTable #define glCopyColorTable (gl.CopyColorTable) #undef glGetColorTable #define glGetColorTable (gl.GetColorTable) #undef glGetColorTableParameterfv #define glGetColorTableParameterfv (gl.GetColorTableParameterfv) #undef glGetColorTableParameteriv #define glGetColorTableParameteriv (gl.GetColorTableParameteriv) #undef glColorSubTable #define glColorSubTable (gl.ColorSubTable) #undef glCopyColorSubTable #define glCopyColorSubTable (gl.CopyColorSubTable) #undef glConvolutionFilter1D #define glConvolutionFilter1D (gl.ConvolutionFilter1D) #undef glConvolutionFilter2D #define glConvolutionFilter2D (gl.ConvolutionFilter2D) #undef glConvolutionParameterf #define glConvolutionParameterf (gl.ConvolutionParameterf) #undef glConvolutionParameterfv #define glConvolutionParameterfv (gl.ConvolutionParameterfv) #undef glConvolutionParameteri #define glConvolutionParameteri (gl.ConvolutionParameteri) #undef glConvolutionParameteriv #define glConvolutionParameteriv (gl.ConvolutionParameteriv) #undef glCopyConvolutionFilter1D #define glCopyConvolutionFilter1D (gl.CopyConvolutionFilter1D) #undef glCopyConvolutionFilter2D #define glCopyConvolutionFilter2D (gl.CopyConvolutionFilter2D) #undef glGetConvolutionFilter #define glGetConvolutionFilter (gl.GetConvolutionFilter) #undef glGetConvolutionParameterfv #define glGetConvolutionParameterfv (gl.GetConvolutionParameterfv) #undef glGetConvolutionParameteriv #define glGetConvolutionParameteriv (gl.GetConvolutionParameteriv) #undef glGetSeparableFilter #define glGetSeparableFilter (gl.GetSeparableFilter) #undef glSeparableFilter2D #define glSeparableFilter2D (gl.SeparableFilter2D) #undef glGetHistogram #define glGetHistogram (gl.GetHistogram) #undef glGetHistogramParameterfv #define glGetHistogramParameterfv (gl.GetHistogramParameterfv) #undef glGetHistogramParameteriv #define glGetHistogramParameteriv (gl.GetHistogramParameteriv) #undef glGetMinmax #define glGetMinmax (gl.GetMinmax) #undef glGetMinmaxParameterfv #define glGetMinmaxParameterfv (gl.GetMinmaxParameterfv) #undef glGetMinmaxParameteriv #define glGetMinmaxParameteriv (gl.GetMinmaxParameteriv) #undef glHistogram #define glHistogram (gl.Histogram) #undef glMinmax #define glMinmax (gl.Minmax) #undef glResetHistogram #define glResetHistogram (gl.ResetHistogram) #undef glResetMinmax #define glResetMinmax (gl.ResetMinmax) #undef glTexImage3D #define glTexImage3D (gl.TexImage3D) #undef glTexSubImage3D #define glTexSubImage3D (gl.TexSubImage3D) #undef glCopyTexSubImage3D #define glCopyTexSubImage3D (gl.CopyTexSubImage3D) #undef glActiveTexture #define glActiveTexture (gl.ActiveTexture) #undef glClientActiveTexture #define glClientActiveTexture (gl.ClientActiveTexture) #undef glMultiTexCoord1d #define glMultiTexCoord1d (gl.MultiTexCoord1d) #undef glMultiTexCoord1dv #define glMultiTexCoord1dv (gl.MultiTexCoord1dv) #undef glMultiTexCoord1f #define glMultiTexCoord1f (gl.MultiTexCoord1f) #undef glMultiTexCoord1fv #define glMultiTexCoord1fv (gl.MultiTexCoord1fv) #undef glMultiTexCoord1i #define glMultiTexCoord1i (gl.MultiTexCoord1i) #undef glMultiTexCoord1iv #define glMultiTexCoord1iv (gl.MultiTexCoord1iv) #undef glMultiTexCoord1s #define glMultiTexCoord1s (gl.MultiTexCoord1s) #undef glMultiTexCoord1sv #define glMultiTexCoord1sv (gl.MultiTexCoord1sv) #undef glMultiTexCoord2d #define glMultiTexCoord2d (gl.MultiTexCoord2d) #undef glMultiTexCoord2dv #define glMultiTexCoord2dv (gl.MultiTexCoord2dv) #undef glMultiTexCoord2f #define glMultiTexCoord2f (gl.MultiTexCoord2f) #undef glMultiTexCoord2fv #define glMultiTexCoord2fv (gl.MultiTexCoord2fv) #undef glMultiTexCoord2i #define glMultiTexCoord2i (gl.MultiTexCoord2i) #undef glMultiTexCoord2iv #define glMultiTexCoord2iv (gl.MultiTexCoord2iv) #undef glMultiTexCoord2s #define glMultiTexCoord2s (gl.MultiTexCoord2s) #undef glMultiTexCoord2sv #define glMultiTexCoord2sv (gl.MultiTexCoord2sv) #undef glMultiTexCoord3d #define glMultiTexCoord3d (gl.MultiTexCoord3d) #undef glMultiTexCoord3dv #define glMultiTexCoord3dv (gl.MultiTexCoord3dv) #undef glMultiTexCoord3f #define glMultiTexCoord3f (gl.MultiTexCoord3f) #undef glMultiTexCoord3fv #define glMultiTexCoord3fv (gl.MultiTexCoord3fv) #undef glMultiTexCoord3i #define glMultiTexCoord3i (gl.MultiTexCoord3i) #undef glMultiTexCoord3iv #define glMultiTexCoord3iv (gl.MultiTexCoord3iv) #undef glMultiTexCoord3s #define glMultiTexCoord3s (gl.MultiTexCoord3s) #undef glMultiTexCoord3sv #define glMultiTexCoord3sv (gl.MultiTexCoord3sv) #undef glMultiTexCoord4d #define glMultiTexCoord4d (gl.MultiTexCoord4d) #undef glMultiTexCoord4dv #define glMultiTexCoord4dv (gl.MultiTexCoord4dv) #undef glMultiTexCoord4f #define glMultiTexCoord4f (gl.MultiTexCoord4f) #undef glMultiTexCoord4fv #define glMultiTexCoord4fv (gl.MultiTexCoord4fv) #undef glMultiTexCoord4i #define glMultiTexCoord4i (gl.MultiTexCoord4i) #undef glMultiTexCoord4iv #define glMultiTexCoord4iv (gl.MultiTexCoord4iv) #undef glMultiTexCoord4s #define glMultiTexCoord4s (gl.MultiTexCoord4s) #undef glMultiTexCoord4sv #define glMultiTexCoord4sv (gl.MultiTexCoord4sv) #undef glLoadTransposeMatrixf #define glLoadTransposeMatrixf (gl.LoadTransposeMatrixf) #undef glLoadTransposeMatrixd #define glLoadTransposeMatrixd (gl.LoadTransposeMatrixd) #undef glMultTransposeMatrixf #define glMultTransposeMatrixf (gl.MultTransposeMatrixf) #undef glMultTransposeMatrixd #define glMultTransposeMatrixd (gl.MultTransposeMatrixd) #undef glSampleCoverage #define glSampleCoverage (gl.SampleCoverage) #undef glCompressedTexImage3D #define glCompressedTexImage3D (gl.CompressedTexImage3D) #undef glCompressedTexImage2D #define glCompressedTexImage2D (gl.CompressedTexImage2D) #undef glCompressedTexImage1D #define glCompressedTexImage1D (gl.CompressedTexImage1D) #undef glCompressedTexSubImage3D #define glCompressedTexSubImage3D (gl.CompressedTexSubImage3D) #undef glCompressedTexSubImage2D #define glCompressedTexSubImage2D (gl.CompressedTexSubImage2D) #undef glCompressedTexSubImage1D #define glCompressedTexSubImage1D (gl.CompressedTexSubImage1D) #undef glGetCompressedTexImage #define glGetCompressedTexImage (gl.GetCompressedTexImage) #undef glBlendFuncSeparate #define glBlendFuncSeparate (gl.BlendFuncSeparate) #undef glFogCoordf #define glFogCoordf (gl.FogCoordf) #undef glFogCoordfv #define glFogCoordfv (gl.FogCoordfv) #undef glFogCoordd #define glFogCoordd (gl.FogCoordd) #undef glFogCoorddv #define glFogCoorddv (gl.FogCoorddv) #undef glFogCoordPointer #define glFogCoordPointer (gl.FogCoordPointer) #undef glMultiDrawArrays #define glMultiDrawArrays (gl.MultiDrawArrays) #undef glMultiDrawElements #define glMultiDrawElements (gl.MultiDrawElements) #undef glPointParameterf #define glPointParameterf (gl.PointParameterf) #undef glPointParameterfv #define glPointParameterfv (gl.PointParameterfv) #undef glPointParameteri #define glPointParameteri (gl.PointParameteri) #undef glPointParameteriv #define glPointParameteriv (gl.PointParameteriv) #undef glSecondaryColor3b #define glSecondaryColor3b (gl.SecondaryColor3b) #undef glSecondaryColor3bv #define glSecondaryColor3bv (gl.SecondaryColor3bv) #undef glSecondaryColor3d #define glSecondaryColor3d (gl.SecondaryColor3d) #undef glSecondaryColor3dv #define glSecondaryColor3dv (gl.SecondaryColor3dv) #undef glSecondaryColor3f #define glSecondaryColor3f (gl.SecondaryColor3f) #undef glSecondaryColor3fv #define glSecondaryColor3fv (gl.SecondaryColor3fv) #undef glSecondaryColor3i #define glSecondaryColor3i (gl.SecondaryColor3i) #undef glSecondaryColor3iv #define glSecondaryColor3iv (gl.SecondaryColor3iv) #undef glSecondaryColor3s #define glSecondaryColor3s (gl.SecondaryColor3s) #undef glSecondaryColor3sv #define glSecondaryColor3sv (gl.SecondaryColor3sv) #undef glSecondaryColor3ub #define glSecondaryColor3ub (gl.SecondaryColor3ub) #undef glSecondaryColor3ubv #define glSecondaryColor3ubv (gl.SecondaryColor3ubv) #undef glSecondaryColor3ui #define glSecondaryColor3ui (gl.SecondaryColor3ui) #undef glSecondaryColor3uiv #define glSecondaryColor3uiv (gl.SecondaryColor3uiv) #undef glSecondaryColor3us #define glSecondaryColor3us (gl.SecondaryColor3us) #undef glSecondaryColor3usv #define glSecondaryColor3usv (gl.SecondaryColor3usv) #undef glSecondaryColorPointer #define glSecondaryColorPointer (gl.SecondaryColorPointer) #undef glWindowPos2d #define glWindowPos2d (gl.WindowPos2d) #undef glWindowPos2dv #define glWindowPos2dv (gl.WindowPos2dv) #undef glWindowPos2f #define glWindowPos2f (gl.WindowPos2f) #undef glWindowPos2fv #define glWindowPos2fv (gl.WindowPos2fv) #undef glWindowPos2i #define glWindowPos2i (gl.WindowPos2i) #undef glWindowPos2iv #define glWindowPos2iv (gl.WindowPos2iv) #undef glWindowPos2s #define glWindowPos2s (gl.WindowPos2s) #undef glWindowPos2sv #define glWindowPos2sv (gl.WindowPos2sv) #undef glWindowPos3d #define glWindowPos3d (gl.WindowPos3d) #undef glWindowPos3dv #define glWindowPos3dv (gl.WindowPos3dv) #undef glWindowPos3f #define glWindowPos3f (gl.WindowPos3f) #undef glWindowPos3fv #define glWindowPos3fv (gl.WindowPos3fv) #undef glWindowPos3i #define glWindowPos3i (gl.WindowPos3i) #undef glWindowPos3iv #define glWindowPos3iv (gl.WindowPos3iv) #undef glWindowPos3s #define glWindowPos3s (gl.WindowPos3s) #undef glWindowPos3sv #define glWindowPos3sv (gl.WindowPos3sv) #undef glGenQueries #define glGenQueries (gl.GenQueries) #undef glDeleteQueries #define glDeleteQueries (gl.DeleteQueries) #undef glIsQuery #define glIsQuery (gl.IsQuery) #undef glBeginQuery #define glBeginQuery (gl.BeginQuery) #undef glEndQuery #define glEndQuery (gl.EndQuery) #undef glGetQueryiv #define glGetQueryiv (gl.GetQueryiv) #undef glGetQueryObjectiv #define glGetQueryObjectiv (gl.GetQueryObjectiv) #undef glGetQueryObjectuiv #define glGetQueryObjectuiv (gl.GetQueryObjectuiv) #undef glBindBuffer #define glBindBuffer (gl.BindBuffer) #undef glDeleteBuffers #define glDeleteBuffers (gl.DeleteBuffers) #undef glGenBuffers #define glGenBuffers (gl.GenBuffers) #undef glIsBuffer #define glIsBuffer (gl.IsBuffer) #undef glBufferData #define glBufferData (gl.BufferData) #undef glBufferSubData #define glBufferSubData (gl.BufferSubData) #undef glGetBufferSubData #define glGetBufferSubData (gl.GetBufferSubData) #undef glMapBuffer #define glMapBuffer (gl.MapBuffer) #undef glUnmapBuffer #define glUnmapBuffer (gl.UnmapBuffer) #undef glGetBufferParameteriv #define glGetBufferParameteriv (gl.GetBufferParameteriv) #undef glGetBufferPointerv #define glGetBufferPointerv (gl.GetBufferPointerv) #undef glActiveTextureARB #define glActiveTextureARB (gl.ActiveTextureARB) #undef glClientActiveTextureARB #define glClientActiveTextureARB (gl.ClientActiveTextureARB) #undef glMultiTexCoord1dARB #define glMultiTexCoord1dARB (gl.MultiTexCoord1dARB) #undef glMultiTexCoord1dvARB #define glMultiTexCoord1dvARB (gl.MultiTexCoord1dvARB) #undef glMultiTexCoord1fARB #define glMultiTexCoord1fARB (gl.MultiTexCoord1fARB) #undef glMultiTexCoord1fvARB #define glMultiTexCoord1fvARB (gl.MultiTexCoord1fvARB) #undef glMultiTexCoord1iARB #define glMultiTexCoord1iARB (gl.MultiTexCoord1iARB) #undef glMultiTexCoord1ivARB #define glMultiTexCoord1ivARB (gl.MultiTexCoord1ivARB) #undef glMultiTexCoord1sARB #define glMultiTexCoord1sARB (gl.MultiTexCoord1sARB) #undef glMultiTexCoord1svARB #define glMultiTexCoord1svARB (gl.MultiTexCoord1svARB) #undef glMultiTexCoord2dARB #define glMultiTexCoord2dARB (gl.MultiTexCoord2dARB) #undef glMultiTexCoord2dvARB #define glMultiTexCoord2dvARB (gl.MultiTexCoord2dvARB) #undef glMultiTexCoord2fARB #define glMultiTexCoord2fARB (gl.MultiTexCoord2fARB) #undef glMultiTexCoord2fvARB #define glMultiTexCoord2fvARB (gl.MultiTexCoord2fvARB) #undef glMultiTexCoord2iARB #define glMultiTexCoord2iARB (gl.MultiTexCoord2iARB) #undef glMultiTexCoord2ivARB #define glMultiTexCoord2ivARB (gl.MultiTexCoord2ivARB) #undef glMultiTexCoord2sARB #define glMultiTexCoord2sARB (gl.MultiTexCoord2sARB) #undef glMultiTexCoord2svARB #define glMultiTexCoord2svARB (gl.MultiTexCoord2svARB) #undef glMultiTexCoord3dARB #define glMultiTexCoord3dARB (gl.MultiTexCoord3dARB) #undef glMultiTexCoord3dvARB #define glMultiTexCoord3dvARB (gl.MultiTexCoord3dvARB) #undef glMultiTexCoord3fARB #define glMultiTexCoord3fARB (gl.MultiTexCoord3fARB) #undef glMultiTexCoord3fvARB #define glMultiTexCoord3fvARB (gl.MultiTexCoord3fvARB) #undef glMultiTexCoord3iARB #define glMultiTexCoord3iARB (gl.MultiTexCoord3iARB) #undef glMultiTexCoord3ivARB #define glMultiTexCoord3ivARB (gl.MultiTexCoord3ivARB) #undef glMultiTexCoord3sARB #define glMultiTexCoord3sARB (gl.MultiTexCoord3sARB) #undef glMultiTexCoord3svARB #define glMultiTexCoord3svARB (gl.MultiTexCoord3svARB) #undef glMultiTexCoord4dARB #define glMultiTexCoord4dARB (gl.MultiTexCoord4dARB) #undef glMultiTexCoord4dvARB #define glMultiTexCoord4dvARB (gl.MultiTexCoord4dvARB) #undef glMultiTexCoord4fARB #define glMultiTexCoord4fARB (gl.MultiTexCoord4fARB) #undef glMultiTexCoord4fvARB #define glMultiTexCoord4fvARB (gl.MultiTexCoord4fvARB) #undef glMultiTexCoord4iARB #define glMultiTexCoord4iARB (gl.MultiTexCoord4iARB) #undef glMultiTexCoord4ivARB #define glMultiTexCoord4ivARB (gl.MultiTexCoord4ivARB) #undef glMultiTexCoord4sARB #define glMultiTexCoord4sARB (gl.MultiTexCoord4sARB) #undef glMultiTexCoord4svARB #define glMultiTexCoord4svARB (gl.MultiTexCoord4svARB) #undef glLoadTransposeMatrixfARB #define glLoadTransposeMatrixfARB (gl.LoadTransposeMatrixfARB) #undef glLoadTransposeMatrixdARB #define glLoadTransposeMatrixdARB (gl.LoadTransposeMatrixdARB) #undef glMultTransposeMatrixfARB #define glMultTransposeMatrixfARB (gl.MultTransposeMatrixfARB) #undef glMultTransposeMatrixdARB #define glMultTransposeMatrixdARB (gl.MultTransposeMatrixdARB) #undef glSampleCoverageARB #define glSampleCoverageARB (gl.SampleCoverageARB) #undef glCompressedTexImage3DARB #define glCompressedTexImage3DARB (gl.CompressedTexImage3DARB) #undef glCompressedTexImage2DARB #define glCompressedTexImage2DARB (gl.CompressedTexImage2DARB) #undef glCompressedTexImage1DARB #define glCompressedTexImage1DARB (gl.CompressedTexImage1DARB) #undef glCompressedTexSubImage3DARB #define glCompressedTexSubImage3DARB (gl.CompressedTexSubImage3DARB) #undef glCompressedTexSubImage2DARB #define glCompressedTexSubImage2DARB (gl.CompressedTexSubImage2DARB) #undef glCompressedTexSubImage1DARB #define glCompressedTexSubImage1DARB (gl.CompressedTexSubImage1DARB) #undef glGetCompressedTexImageARB #define glGetCompressedTexImageARB (gl.GetCompressedTexImageARB) #undef glPointParameterfARB #define glPointParameterfARB (gl.PointParameterfARB) #undef glPointParameterfvARB #define glPointParameterfvARB (gl.PointParameterfvARB) #undef glWeightbvARB #define glWeightbvARB (gl.WeightbvARB) #undef glWeightsvARB #define glWeightsvARB (gl.WeightsvARB) #undef glWeightivARB #define glWeightivARB (gl.WeightivARB) #undef glWeightfvARB #define glWeightfvARB (gl.WeightfvARB) #undef glWeightdvARB #define glWeightdvARB (gl.WeightdvARB) #undef glWeightubvARB #define glWeightubvARB (gl.WeightubvARB) #undef glWeightusvARB #define glWeightusvARB (gl.WeightusvARB) #undef glWeightuivARB #define glWeightuivARB (gl.WeightuivARB) #undef glWeightPointerARB #define glWeightPointerARB (gl.WeightPointerARB) #undef glVertexBlendARB #define glVertexBlendARB (gl.VertexBlendARB) #undef glCurrentPaletteMatrixARB #define glCurrentPaletteMatrixARB (gl.CurrentPaletteMatrixARB) #undef glMatrixIndexubvARB #define glMatrixIndexubvARB (gl.MatrixIndexubvARB) #undef glMatrixIndexusvARB #define glMatrixIndexusvARB (gl.MatrixIndexusvARB) #undef glMatrixIndexuivARB #define glMatrixIndexuivARB (gl.MatrixIndexuivARB) #undef glMatrixIndexPointerARB #define glMatrixIndexPointerARB (gl.MatrixIndexPointerARB) #undef glWindowPos2dARB #define glWindowPos2dARB (gl.WindowPos2dARB) #undef glWindowPos2dvARB #define glWindowPos2dvARB (gl.WindowPos2dvARB) #undef glWindowPos2fARB #define glWindowPos2fARB (gl.WindowPos2fARB) #undef glWindowPos2fvARB #define glWindowPos2fvARB (gl.WindowPos2fvARB) #undef glWindowPos2iARB #define glWindowPos2iARB (gl.WindowPos2iARB) #undef glWindowPos2ivARB #define glWindowPos2ivARB (gl.WindowPos2ivARB) #undef glWindowPos2sARB #define glWindowPos2sARB (gl.WindowPos2sARB) #undef glWindowPos2svARB #define glWindowPos2svARB (gl.WindowPos2svARB) #undef glWindowPos3dARB #define glWindowPos3dARB (gl.WindowPos3dARB) #undef glWindowPos3dvARB #define glWindowPos3dvARB (gl.WindowPos3dvARB) #undef glWindowPos3fARB #define glWindowPos3fARB (gl.WindowPos3fARB) #undef glWindowPos3fvARB #define glWindowPos3fvARB (gl.WindowPos3fvARB) #undef glWindowPos3iARB #define glWindowPos3iARB (gl.WindowPos3iARB) #undef glWindowPos3ivARB #define glWindowPos3ivARB (gl.WindowPos3ivARB) #undef glWindowPos3sARB #define glWindowPos3sARB (gl.WindowPos3sARB) #undef glWindowPos3svARB #define glWindowPos3svARB (gl.WindowPos3svARB) #undef glVertexAttrib1dARB #define glVertexAttrib1dARB (gl.VertexAttrib1dARB) #undef glVertexAttrib1dvARB #define glVertexAttrib1dvARB (gl.VertexAttrib1dvARB) #undef glVertexAttrib1fARB #define glVertexAttrib1fARB (gl.VertexAttrib1fARB) #undef glVertexAttrib1fvARB #define glVertexAttrib1fvARB (gl.VertexAttrib1fvARB) #undef glVertexAttrib1sARB #define glVertexAttrib1sARB (gl.VertexAttrib1sARB) #undef glVertexAttrib1svARB #define glVertexAttrib1svARB (gl.VertexAttrib1svARB) #undef glVertexAttrib2dARB #define glVertexAttrib2dARB (gl.VertexAttrib2dARB) #undef glVertexAttrib2dvARB #define glVertexAttrib2dvARB (gl.VertexAttrib2dvARB) #undef glVertexAttrib2fARB #define glVertexAttrib2fARB (gl.VertexAttrib2fARB) #undef glVertexAttrib2fvARB #define glVertexAttrib2fvARB (gl.VertexAttrib2fvARB) #undef glVertexAttrib2sARB #define glVertexAttrib2sARB (gl.VertexAttrib2sARB) #undef glVertexAttrib2svARB #define glVertexAttrib2svARB (gl.VertexAttrib2svARB) #undef glVertexAttrib3dARB #define glVertexAttrib3dARB (gl.VertexAttrib3dARB) #undef glVertexAttrib3dvARB #define glVertexAttrib3dvARB (gl.VertexAttrib3dvARB) #undef glVertexAttrib3fARB #define glVertexAttrib3fARB (gl.VertexAttrib3fARB) #undef glVertexAttrib3fvARB #define glVertexAttrib3fvARB (gl.VertexAttrib3fvARB) #undef glVertexAttrib3sARB #define glVertexAttrib3sARB (gl.VertexAttrib3sARB) #undef glVertexAttrib3svARB #define glVertexAttrib3svARB (gl.VertexAttrib3svARB) #undef glVertexAttrib4NbvARB #define glVertexAttrib4NbvARB (gl.VertexAttrib4NbvARB) #undef glVertexAttrib4NivARB #define glVertexAttrib4NivARB (gl.VertexAttrib4NivARB) #undef glVertexAttrib4NsvARB #define glVertexAttrib4NsvARB (gl.VertexAttrib4NsvARB) #undef glVertexAttrib4NubARB #define glVertexAttrib4NubARB (gl.VertexAttrib4NubARB) #undef glVertexAttrib4NubvARB #define glVertexAttrib4NubvARB (gl.VertexAttrib4NubvARB) #undef glVertexAttrib4NuivARB #define glVertexAttrib4NuivARB (gl.VertexAttrib4NuivARB) #undef glVertexAttrib4NusvARB #define glVertexAttrib4NusvARB (gl.VertexAttrib4NusvARB) #undef glVertexAttrib4bvARB #define glVertexAttrib4bvARB (gl.VertexAttrib4bvARB) #undef glVertexAttrib4dARB #define glVertexAttrib4dARB (gl.VertexAttrib4dARB) #undef glVertexAttrib4dvARB #define glVertexAttrib4dvARB (gl.VertexAttrib4dvARB) #undef glVertexAttrib4fARB #define glVertexAttrib4fARB (gl.VertexAttrib4fARB) #undef glVertexAttrib4fvARB #define glVertexAttrib4fvARB (gl.VertexAttrib4fvARB) #undef glVertexAttrib4ivARB #define glVertexAttrib4ivARB (gl.VertexAttrib4ivARB) #undef glVertexAttrib4sARB #define glVertexAttrib4sARB (gl.VertexAttrib4sARB) #undef glVertexAttrib4svARB #define glVertexAttrib4svARB (gl.VertexAttrib4svARB) #undef glVertexAttrib4ubvARB #define glVertexAttrib4ubvARB (gl.VertexAttrib4ubvARB) #undef glVertexAttrib4uivARB #define glVertexAttrib4uivARB (gl.VertexAttrib4uivARB) #undef glVertexAttrib4usvARB #define glVertexAttrib4usvARB (gl.VertexAttrib4usvARB) #undef glVertexAttribPointerARB #define glVertexAttribPointerARB (gl.VertexAttribPointerARB) #undef glEnableVertexAttribArrayARB #define glEnableVertexAttribArrayARB (gl.EnableVertexAttribArrayARB) #undef glDisableVertexAttribArrayARB #define glDisableVertexAttribArrayARB (gl.DisableVertexAttribArrayARB) #undef glProgramStringARB #define glProgramStringARB (gl.ProgramStringARB) #undef glBindProgramARB #define glBindProgramARB (gl.BindProgramARB) #undef glDeleteProgramsARB #define glDeleteProgramsARB (gl.DeleteProgramsARB) #undef glGenProgramsARB #define glGenProgramsARB (gl.GenProgramsARB) #undef glProgramEnvParameter4dARB #define glProgramEnvParameter4dARB (gl.ProgramEnvParameter4dARB) #undef glProgramEnvParameter4dvARB #define glProgramEnvParameter4dvARB (gl.ProgramEnvParameter4dvARB) #undef glProgramEnvParameter4fARB #define glProgramEnvParameter4fARB (gl.ProgramEnvParameter4fARB) #undef glProgramEnvParameter4fvARB #define glProgramEnvParameter4fvARB (gl.ProgramEnvParameter4fvARB) #undef glProgramLocalParameter4dARB #define glProgramLocalParameter4dARB (gl.ProgramLocalParameter4dARB) #undef glProgramLocalParameter4dvARB #define glProgramLocalParameter4dvARB (gl.ProgramLocalParameter4dvARB) #undef glProgramLocalParameter4fARB #define glProgramLocalParameter4fARB (gl.ProgramLocalParameter4fARB) #undef glProgramLocalParameter4fvARB #define glProgramLocalParameter4fvARB (gl.ProgramLocalParameter4fvARB) #undef glGetProgramEnvParameterdvARB #define glGetProgramEnvParameterdvARB (gl.GetProgramEnvParameterdvARB) #undef glGetProgramEnvParameterfvARB #define glGetProgramEnvParameterfvARB (gl.GetProgramEnvParameterfvARB) #undef glGetProgramLocalParameterdvARB #define glGetProgramLocalParameterdvARB (gl.GetProgramLocalParameterdvARB) #undef glGetProgramLocalParameterfvARB #define glGetProgramLocalParameterfvARB (gl.GetProgramLocalParameterfvARB) #undef glGetProgramivARB #define glGetProgramivARB (gl.GetProgramivARB) #undef glGetProgramStringARB #define glGetProgramStringARB (gl.GetProgramStringARB) #undef glGetVertexAttribdvARB #define glGetVertexAttribdvARB (gl.GetVertexAttribdvARB) #undef glGetVertexAttribfvARB #define glGetVertexAttribfvARB (gl.GetVertexAttribfvARB) #undef glGetVertexAttribivARB #define glGetVertexAttribivARB (gl.GetVertexAttribivARB) #undef glGetVertexAttribPointervARB #define glGetVertexAttribPointervARB (gl.GetVertexAttribPointervARB) #undef glIsProgramARB #define glIsProgramARB (gl.IsProgramARB) #undef glBindBufferARB #define glBindBufferARB (gl.BindBufferARB) #undef glDeleteBuffersARB #define glDeleteBuffersARB (gl.DeleteBuffersARB) #undef glGenBuffersARB #define glGenBuffersARB (gl.GenBuffersARB) #undef glIsBufferARB #define glIsBufferARB (gl.IsBufferARB) #undef glBufferDataARB #define glBufferDataARB (gl.BufferDataARB) #undef glBufferSubDataARB #define glBufferSubDataARB (gl.BufferSubDataARB) #undef glGetBufferSubDataARB #define glGetBufferSubDataARB (gl.GetBufferSubDataARB) #undef glMapBufferARB #define glMapBufferARB (gl.MapBufferARB) #undef glUnmapBufferARB #define glUnmapBufferARB (gl.UnmapBufferARB) #undef glGetBufferParameterivARB #define glGetBufferParameterivARB (gl.GetBufferParameterivARB) #undef glGetBufferPointervARB #define glGetBufferPointervARB (gl.GetBufferPointervARB) #undef glGenQueriesARB #define glGenQueriesARB (gl.GenQueriesARB) #undef glDeleteQueriesARB #define glDeleteQueriesARB (gl.DeleteQueriesARB) #undef glIsQueryARB #define glIsQueryARB (gl.IsQueryARB) #undef glBeginQueryARB #define glBeginQueryARB (gl.BeginQueryARB) #undef glEndQueryARB #define glEndQueryARB (gl.EndQueryARB) #undef glGetQueryivARB #define glGetQueryivARB (gl.GetQueryivARB) #undef glGetQueryObjectivARB #define glGetQueryObjectivARB (gl.GetQueryObjectivARB) #undef glGetQueryObjectuivARB #define glGetQueryObjectuivARB (gl.GetQueryObjectuivARB) #undef glDeleteObjectARB #define glDeleteObjectARB (gl.DeleteObjectARB) #undef glGetHandleARB #define glGetHandleARB (gl.GetHandleARB) #undef glDetachObjectARB #define glDetachObjectARB (gl.DetachObjectARB) #undef glCreateShaderObjectARB #define glCreateShaderObjectARB (gl.CreateShaderObjectARB) #undef glShaderSourceARB #define glShaderSourceARB (gl.ShaderSourceARB) #undef glCompileShaderARB #define glCompileShaderARB (gl.CompileShaderARB) #undef glCreateProgramObjectARB #define glCreateProgramObjectARB (gl.CreateProgramObjectARB) #undef glAttachObjectARB #define glAttachObjectARB (gl.AttachObjectARB) #undef glLinkProgramARB #define glLinkProgramARB (gl.LinkProgramARB) #undef glUseProgramObjectARB #define glUseProgramObjectARB (gl.UseProgramObjectARB) #undef glValidateProgramARB #define glValidateProgramARB (gl.ValidateProgramARB) #undef glUniform1fARB #define glUniform1fARB (gl.Uniform1fARB) #undef glUniform2fARB #define glUniform2fARB (gl.Uniform2fARB) #undef glUniform3fARB #define glUniform3fARB (gl.Uniform3fARB) #undef glUniform4fARB #define glUniform4fARB (gl.Uniform4fARB) #undef glUniform1iARB #define glUniform1iARB (gl.Uniform1iARB) #undef glUniform2iARB #define glUniform2iARB (gl.Uniform2iARB) #undef glUniform3iARB #define glUniform3iARB (gl.Uniform3iARB) #undef glUniform4iARB #define glUniform4iARB (gl.Uniform4iARB) #undef glUniform1fvARB #define glUniform1fvARB (gl.Uniform1fvARB) #undef glUniform2fvARB #define glUniform2fvARB (gl.Uniform2fvARB) #undef glUniform3fvARB #define glUniform3fvARB (gl.Uniform3fvARB) #undef glUniform4fvARB #define glUniform4fvARB (gl.Uniform4fvARB) #undef glUniform1ivARB #define glUniform1ivARB (gl.Uniform1ivARB) #undef glUniform2ivARB #define glUniform2ivARB (gl.Uniform2ivARB) #undef glUniform3ivARB #define glUniform3ivARB (gl.Uniform3ivARB) #undef glUniform4ivARB #define glUniform4ivARB (gl.Uniform4ivARB) #undef glUniformMatrix2fvARB #define glUniformMatrix2fvARB (gl.UniformMatrix2fvARB) #undef glUniformMatrix3fvARB #define glUniformMatrix3fvARB (gl.UniformMatrix3fvARB) #undef glUniformMatrix4fvARB #define glUniformMatrix4fvARB (gl.UniformMatrix4fvARB) #undef glGetObjectParameterfvARB #define glGetObjectParameterfvARB (gl.GetObjectParameterfvARB) #undef glGetObjectParameterivARB #define glGetObjectParameterivARB (gl.GetObjectParameterivARB) #undef glGetInfoLogARB #define glGetInfoLogARB (gl.GetInfoLogARB) #undef glGetAttachedObjectsARB #define glGetAttachedObjectsARB (gl.GetAttachedObjectsARB) #undef glGetUniformLocationARB #define glGetUniformLocationARB (gl.GetUniformLocationARB) #undef glGetActiveUniformARB #define glGetActiveUniformARB (gl.GetActiveUniformARB) #undef glGetUniformfvARB #define glGetUniformfvARB (gl.GetUniformfvARB) #undef glGetUniformivARB #define glGetUniformivARB (gl.GetUniformivARB) #undef glGetShaderSourceARB #define glGetShaderSourceARB (gl.GetShaderSourceARB) #undef glBindAttribLocationARB #define glBindAttribLocationARB (gl.BindAttribLocationARB) #undef glGetActiveAttribARB #define glGetActiveAttribARB (gl.GetActiveAttribARB) #undef glGetAttribLocationARB #define glGetAttribLocationARB (gl.GetAttribLocationARB) #undef glDrawBuffersARB #define glDrawBuffersARB (gl.DrawBuffersARB) #undef glBlendColorEXT #define glBlendColorEXT (gl.BlendColorEXT) #undef glPolygonOffsetEXT #define glPolygonOffsetEXT (gl.PolygonOffsetEXT) #undef glTexImage3DEXT #define glTexImage3DEXT (gl.TexImage3DEXT) #undef glTexSubImage3DEXT #define glTexSubImage3DEXT (gl.TexSubImage3DEXT) #undef glGetTexFilterFuncSGIS #define glGetTexFilterFuncSGIS (gl.GetTexFilterFuncSGIS) #undef glTexFilterFuncSGIS #define glTexFilterFuncSGIS (gl.TexFilterFuncSGIS) #undef glTexSubImage1DEXT #define glTexSubImage1DEXT (gl.TexSubImage1DEXT) #undef glTexSubImage2DEXT #define glTexSubImage2DEXT (gl.TexSubImage2DEXT) #undef glCopyTexImage1DEXT #define glCopyTexImage1DEXT (gl.CopyTexImage1DEXT) #undef glCopyTexImage2DEXT #define glCopyTexImage2DEXT (gl.CopyTexImage2DEXT) #undef glCopyTexSubImage1DEXT #define glCopyTexSubImage1DEXT (gl.CopyTexSubImage1DEXT) #undef glCopyTexSubImage2DEXT #define glCopyTexSubImage2DEXT (gl.CopyTexSubImage2DEXT) #undef glCopyTexSubImage3DEXT #define glCopyTexSubImage3DEXT (gl.CopyTexSubImage3DEXT) #undef glGetHistogramEXT #define glGetHistogramEXT (gl.GetHistogramEXT) #undef glGetHistogramParameterfvEXT #define glGetHistogramParameterfvEXT (gl.GetHistogramParameterfvEXT) #undef glGetHistogramParameterivEXT #define glGetHistogramParameterivEXT (gl.GetHistogramParameterivEXT) #undef glGetMinmaxEXT #define glGetMinmaxEXT (gl.GetMinmaxEXT) #undef glGetMinmaxParameterfvEXT #define glGetMinmaxParameterfvEXT (gl.GetMinmaxParameterfvEXT) #undef glGetMinmaxParameterivEXT #define glGetMinmaxParameterivEXT (gl.GetMinmaxParameterivEXT) #undef glHistogramEXT #define glHistogramEXT (gl.HistogramEXT) #undef glMinmaxEXT #define glMinmaxEXT (gl.MinmaxEXT) #undef glResetHistogramEXT #define glResetHistogramEXT (gl.ResetHistogramEXT) #undef glResetMinmaxEXT #define glResetMinmaxEXT (gl.ResetMinmaxEXT) #undef glConvolutionFilter1DEXT #define glConvolutionFilter1DEXT (gl.ConvolutionFilter1DEXT) #undef glConvolutionFilter2DEXT #define glConvolutionFilter2DEXT (gl.ConvolutionFilter2DEXT) #undef glConvolutionParameterfEXT #define glConvolutionParameterfEXT (gl.ConvolutionParameterfEXT) #undef glConvolutionParameterfvEXT #define glConvolutionParameterfvEXT (gl.ConvolutionParameterfvEXT) #undef glConvolutionParameteriEXT #define glConvolutionParameteriEXT (gl.ConvolutionParameteriEXT) #undef glConvolutionParameterivEXT #define glConvolutionParameterivEXT (gl.ConvolutionParameterivEXT) #undef glCopyConvolutionFilter1DEXT #define glCopyConvolutionFilter1DEXT (gl.CopyConvolutionFilter1DEXT) #undef glCopyConvolutionFilter2DEXT #define glCopyConvolutionFilter2DEXT (gl.CopyConvolutionFilter2DEXT) #undef glGetConvolutionFilterEXT #define glGetConvolutionFilterEXT (gl.GetConvolutionFilterEXT) #undef glGetConvolutionParameterfvEXT #define glGetConvolutionParameterfvEXT (gl.GetConvolutionParameterfvEXT) #undef glGetConvolutionParameterivEXT #define glGetConvolutionParameterivEXT (gl.GetConvolutionParameterivEXT) #undef glGetSeparableFilterEXT #define glGetSeparableFilterEXT (gl.GetSeparableFilterEXT) #undef glSeparableFilter2DEXT #define glSeparableFilter2DEXT (gl.SeparableFilter2DEXT) #undef glColorTableSGI #define glColorTableSGI (gl.ColorTableSGI) #undef glColorTableParameterfvSGI #define glColorTableParameterfvSGI (gl.ColorTableParameterfvSGI) #undef glColorTableParameterivSGI #define glColorTableParameterivSGI (gl.ColorTableParameterivSGI) #undef glCopyColorTableSGI #define glCopyColorTableSGI (gl.CopyColorTableSGI) #undef glGetColorTableSGI #define glGetColorTableSGI (gl.GetColorTableSGI) #undef glGetColorTableParameterfvSGI #define glGetColorTableParameterfvSGI (gl.GetColorTableParameterfvSGI) #undef glGetColorTableParameterivSGI #define glGetColorTableParameterivSGI (gl.GetColorTableParameterivSGI) #undef glPixelTexGenSGIX #define glPixelTexGenSGIX (gl.PixelTexGenSGIX) #undef glPixelTexGenParameteriSGIS #define glPixelTexGenParameteriSGIS (gl.PixelTexGenParameteriSGIS) #undef glPixelTexGenParameterivSGIS #define glPixelTexGenParameterivSGIS (gl.PixelTexGenParameterivSGIS) #undef glPixelTexGenParameterfSGIS #define glPixelTexGenParameterfSGIS (gl.PixelTexGenParameterfSGIS) #undef glPixelTexGenParameterfvSGIS #define glPixelTexGenParameterfvSGIS (gl.PixelTexGenParameterfvSGIS) #undef glGetPixelTexGenParameterivSGIS #define glGetPixelTexGenParameterivSGIS (gl.GetPixelTexGenParameterivSGIS) #undef glGetPixelTexGenParameterfvSGIS #define glGetPixelTexGenParameterfvSGIS (gl.GetPixelTexGenParameterfvSGIS) #undef glTexImage4DSGIS #define glTexImage4DSGIS (gl.TexImage4DSGIS) #undef glTexSubImage4DSGIS #define glTexSubImage4DSGIS (gl.TexSubImage4DSGIS) #undef glAreTexturesResidentEXT #define glAreTexturesResidentEXT (gl.AreTexturesResidentEXT) #undef glBindTextureEXT #define glBindTextureEXT (gl.BindTextureEXT) #undef glDeleteTexturesEXT #define glDeleteTexturesEXT (gl.DeleteTexturesEXT) #undef glGenTexturesEXT #define glGenTexturesEXT (gl.GenTexturesEXT) #undef glIsTextureEXT #define glIsTextureEXT (gl.IsTextureEXT) #undef glPrioritizeTexturesEXT #define glPrioritizeTexturesEXT (gl.PrioritizeTexturesEXT) #undef glDetailTexFuncSGIS #define glDetailTexFuncSGIS (gl.DetailTexFuncSGIS) #undef glGetDetailTexFuncSGIS #define glGetDetailTexFuncSGIS (gl.GetDetailTexFuncSGIS) #undef glSharpenTexFuncSGIS #define glSharpenTexFuncSGIS (gl.SharpenTexFuncSGIS) #undef glGetSharpenTexFuncSGIS #define glGetSharpenTexFuncSGIS (gl.GetSharpenTexFuncSGIS) #undef glSampleMaskSGIS #define glSampleMaskSGIS (gl.SampleMaskSGIS) #undef glSamplePatternSGIS #define glSamplePatternSGIS (gl.SamplePatternSGIS) #undef glArrayElementEXT #define glArrayElementEXT (gl.ArrayElementEXT) #undef glColorPointerEXT #define glColorPointerEXT (gl.ColorPointerEXT) #undef glDrawArraysEXT #define glDrawArraysEXT (gl.DrawArraysEXT) #undef glEdgeFlagPointerEXT #define glEdgeFlagPointerEXT (gl.EdgeFlagPointerEXT) #undef glGetPointervEXT #define glGetPointervEXT (gl.GetPointervEXT) #undef glIndexPointerEXT #define glIndexPointerEXT (gl.IndexPointerEXT) #undef glNormalPointerEXT #define glNormalPointerEXT (gl.NormalPointerEXT) #undef glTexCoordPointerEXT #define glTexCoordPointerEXT (gl.TexCoordPointerEXT) #undef glVertexPointerEXT #define glVertexPointerEXT (gl.VertexPointerEXT) #undef glBlendEquationEXT #define glBlendEquationEXT (gl.BlendEquationEXT) #undef glSpriteParameterfSGIX #define glSpriteParameterfSGIX (gl.SpriteParameterfSGIX) #undef glSpriteParameterfvSGIX #define glSpriteParameterfvSGIX (gl.SpriteParameterfvSGIX) #undef glSpriteParameteriSGIX #define glSpriteParameteriSGIX (gl.SpriteParameteriSGIX) #undef glSpriteParameterivSGIX #define glSpriteParameterivSGIX (gl.SpriteParameterivSGIX) #undef glPointParameterfEXT #define glPointParameterfEXT (gl.PointParameterfEXT) #undef glPointParameterfvEXT #define glPointParameterfvEXT (gl.PointParameterfvEXT) #undef glPointParameterfSGIS #define glPointParameterfSGIS (gl.PointParameterfSGIS) #undef glPointParameterfvSGIS #define glPointParameterfvSGIS (gl.PointParameterfvSGIS) #undef glGetInstrumentsSGIX #define glGetInstrumentsSGIX (gl.GetInstrumentsSGIX) #undef glInstrumentsBufferSGIX #define glInstrumentsBufferSGIX (gl.InstrumentsBufferSGIX) #undef glPollInstrumentsSGIX #define glPollInstrumentsSGIX (gl.PollInstrumentsSGIX) #undef glReadInstrumentsSGIX #define glReadInstrumentsSGIX (gl.ReadInstrumentsSGIX) #undef glStartInstrumentsSGIX #define glStartInstrumentsSGIX (gl.StartInstrumentsSGIX) #undef glStopInstrumentsSGIX #define glStopInstrumentsSGIX (gl.StopInstrumentsSGIX) #undef glFrameZoomSGIX #define glFrameZoomSGIX (gl.FrameZoomSGIX) #undef glTagSampleBufferSGIX #define glTagSampleBufferSGIX (gl.TagSampleBufferSGIX) #undef glDeformationMap3dSGIX #define glDeformationMap3dSGIX (gl.DeformationMap3dSGIX) #undef glDeformationMap3fSGIX #define glDeformationMap3fSGIX (gl.DeformationMap3fSGIX) #undef glDeformSGIX #define glDeformSGIX (gl.DeformSGIX) #undef glLoadIdentityDeformationMapSGIX #define glLoadIdentityDeformationMapSGIX (gl.LoadIdentityDeformationMapSGIX) #undef glReferencePlaneSGIX #define glReferencePlaneSGIX (gl.ReferencePlaneSGIX) #undef glFlushRasterSGIX #define glFlushRasterSGIX (gl.FlushRasterSGIX) #undef glFogFuncSGIS #define glFogFuncSGIS (gl.FogFuncSGIS) #undef glGetFogFuncSGIS #define glGetFogFuncSGIS (gl.GetFogFuncSGIS) #undef glImageTransformParameteriHP #define glImageTransformParameteriHP (gl.ImageTransformParameteriHP) #undef glImageTransformParameterfHP #define glImageTransformParameterfHP (gl.ImageTransformParameterfHP) #undef glImageTransformParameterivHP #define glImageTransformParameterivHP (gl.ImageTransformParameterivHP) #undef glImageTransformParameterfvHP #define glImageTransformParameterfvHP (gl.ImageTransformParameterfvHP) #undef glGetImageTransformParameterivHP #define glGetImageTransformParameterivHP (gl.GetImageTransformParameterivHP) #undef glGetImageTransformParameterfvHP #define glGetImageTransformParameterfvHP (gl.GetImageTransformParameterfvHP) #undef glColorSubTableEXT #define glColorSubTableEXT (gl.ColorSubTableEXT) #undef glCopyColorSubTableEXT #define glCopyColorSubTableEXT (gl.CopyColorSubTableEXT) #undef glHintPGI #define glHintPGI (gl.HintPGI) #undef glColorTableEXT #define glColorTableEXT (gl.ColorTableEXT) #undef glGetColorTableEXT #define glGetColorTableEXT (gl.GetColorTableEXT) #undef glGetColorTableParameterivEXT #define glGetColorTableParameterivEXT (gl.GetColorTableParameterivEXT) #undef glGetColorTableParameterfvEXT #define glGetColorTableParameterfvEXT (gl.GetColorTableParameterfvEXT) #undef glGetListParameterfvSGIX #define glGetListParameterfvSGIX (gl.GetListParameterfvSGIX) #undef glGetListParameterivSGIX #define glGetListParameterivSGIX (gl.GetListParameterivSGIX) #undef glListParameterfSGIX #define glListParameterfSGIX (gl.ListParameterfSGIX) #undef glListParameterfvSGIX #define glListParameterfvSGIX (gl.ListParameterfvSGIX) #undef glListParameteriSGIX #define glListParameteriSGIX (gl.ListParameteriSGIX) #undef glListParameterivSGIX #define glListParameterivSGIX (gl.ListParameterivSGIX) #undef glIndexMaterialEXT #define glIndexMaterialEXT (gl.IndexMaterialEXT) #undef glIndexFuncEXT #define glIndexFuncEXT (gl.IndexFuncEXT) #undef glLockArraysEXT #define glLockArraysEXT (gl.LockArraysEXT) #undef glUnlockArraysEXT #define glUnlockArraysEXT (gl.UnlockArraysEXT) #undef glCullParameterdvEXT #define glCullParameterdvEXT (gl.CullParameterdvEXT) #undef glCullParameterfvEXT #define glCullParameterfvEXT (gl.CullParameterfvEXT) #undef glFragmentColorMaterialSGIX #define glFragmentColorMaterialSGIX (gl.FragmentColorMaterialSGIX) #undef glFragmentLightfSGIX #define glFragmentLightfSGIX (gl.FragmentLightfSGIX) #undef glFragmentLightfvSGIX #define glFragmentLightfvSGIX (gl.FragmentLightfvSGIX) #undef glFragmentLightiSGIX #define glFragmentLightiSGIX (gl.FragmentLightiSGIX) #undef glFragmentLightivSGIX #define glFragmentLightivSGIX (gl.FragmentLightivSGIX) #undef glFragmentLightModelfSGIX #define glFragmentLightModelfSGIX (gl.FragmentLightModelfSGIX) #undef glFragmentLightModelfvSGIX #define glFragmentLightModelfvSGIX (gl.FragmentLightModelfvSGIX) #undef glFragmentLightModeliSGIX #define glFragmentLightModeliSGIX (gl.FragmentLightModeliSGIX) #undef glFragmentLightModelivSGIX #define glFragmentLightModelivSGIX (gl.FragmentLightModelivSGIX) #undef glFragmentMaterialfSGIX #define glFragmentMaterialfSGIX (gl.FragmentMaterialfSGIX) #undef glFragmentMaterialfvSGIX #define glFragmentMaterialfvSGIX (gl.FragmentMaterialfvSGIX) #undef glFragmentMaterialiSGIX #define glFragmentMaterialiSGIX (gl.FragmentMaterialiSGIX) #undef glFragmentMaterialivSGIX #define glFragmentMaterialivSGIX (gl.FragmentMaterialivSGIX) #undef glGetFragmentLightfvSGIX #define glGetFragmentLightfvSGIX (gl.GetFragmentLightfvSGIX) #undef glGetFragmentLightivSGIX #define glGetFragmentLightivSGIX (gl.GetFragmentLightivSGIX) #undef glGetFragmentMaterialfvSGIX #define glGetFragmentMaterialfvSGIX (gl.GetFragmentMaterialfvSGIX) #undef glGetFragmentMaterialivSGIX #define glGetFragmentMaterialivSGIX (gl.GetFragmentMaterialivSGIX) #undef glLightEnviSGIX #define glLightEnviSGIX (gl.LightEnviSGIX) #undef glDrawRangeElementsEXT #define glDrawRangeElementsEXT (gl.DrawRangeElementsEXT) #undef glApplyTextureEXT #define glApplyTextureEXT (gl.ApplyTextureEXT) #undef glTextureLightEXT #define glTextureLightEXT (gl.TextureLightEXT) #undef glTextureMaterialEXT #define glTextureMaterialEXT (gl.TextureMaterialEXT) #undef glAsyncMarkerSGIX #define glAsyncMarkerSGIX (gl.AsyncMarkerSGIX) #undef glFinishAsyncSGIX #define glFinishAsyncSGIX (gl.FinishAsyncSGIX) #undef glPollAsyncSGIX #define glPollAsyncSGIX (gl.PollAsyncSGIX) #undef glGenAsyncMarkersSGIX #define glGenAsyncMarkersSGIX (gl.GenAsyncMarkersSGIX) #undef glDeleteAsyncMarkersSGIX #define glDeleteAsyncMarkersSGIX (gl.DeleteAsyncMarkersSGIX) #undef glIsAsyncMarkerSGIX #define glIsAsyncMarkerSGIX (gl.IsAsyncMarkerSGIX) #undef glVertexPointervINTEL #define glVertexPointervINTEL (gl.VertexPointervINTEL) #undef glNormalPointervINTEL #define glNormalPointervINTEL (gl.NormalPointervINTEL) #undef glColorPointervINTEL #define glColorPointervINTEL (gl.ColorPointervINTEL) #undef glTexCoordPointervINTEL #define glTexCoordPointervINTEL (gl.TexCoordPointervINTEL) #undef glPixelTransformParameteriEXT #define glPixelTransformParameteriEXT (gl.PixelTransformParameteriEXT) #undef glPixelTransformParameterfEXT #define glPixelTransformParameterfEXT (gl.PixelTransformParameterfEXT) #undef glPixelTransformParameterivEXT #define glPixelTransformParameterivEXT (gl.PixelTransformParameterivEXT) #undef glPixelTransformParameterfvEXT #define glPixelTransformParameterfvEXT (gl.PixelTransformParameterfvEXT) #undef glSecondaryColor3bEXT #define glSecondaryColor3bEXT (gl.SecondaryColor3bEXT) #undef glSecondaryColor3bvEXT #define glSecondaryColor3bvEXT (gl.SecondaryColor3bvEXT) #undef glSecondaryColor3dEXT #define glSecondaryColor3dEXT (gl.SecondaryColor3dEXT) #undef glSecondaryColor3dvEXT #define glSecondaryColor3dvEXT (gl.SecondaryColor3dvEXT) #undef glSecondaryColor3fEXT #define glSecondaryColor3fEXT (gl.SecondaryColor3fEXT) #undef glSecondaryColor3fvEXT #define glSecondaryColor3fvEXT (gl.SecondaryColor3fvEXT) #undef glSecondaryColor3iEXT #define glSecondaryColor3iEXT (gl.SecondaryColor3iEXT) #undef glSecondaryColor3ivEXT #define glSecondaryColor3ivEXT (gl.SecondaryColor3ivEXT) #undef glSecondaryColor3sEXT #define glSecondaryColor3sEXT (gl.SecondaryColor3sEXT) #undef glSecondaryColor3svEXT #define glSecondaryColor3svEXT (gl.SecondaryColor3svEXT) #undef glSecondaryColor3ubEXT #define glSecondaryColor3ubEXT (gl.SecondaryColor3ubEXT) #undef glSecondaryColor3ubvEXT #define glSecondaryColor3ubvEXT (gl.SecondaryColor3ubvEXT) #undef glSecondaryColor3uiEXT #define glSecondaryColor3uiEXT (gl.SecondaryColor3uiEXT) #undef glSecondaryColor3uivEXT #define glSecondaryColor3uivEXT (gl.SecondaryColor3uivEXT) #undef glSecondaryColor3usEXT #define glSecondaryColor3usEXT (gl.SecondaryColor3usEXT) #undef glSecondaryColor3usvEXT #define glSecondaryColor3usvEXT (gl.SecondaryColor3usvEXT) #undef glSecondaryColorPointerEXT #define glSecondaryColorPointerEXT (gl.SecondaryColorPointerEXT) #undef glTextureNormalEXT #define glTextureNormalEXT (gl.TextureNormalEXT) #undef glMultiDrawArraysEXT #define glMultiDrawArraysEXT (gl.MultiDrawArraysEXT) #undef glMultiDrawElementsEXT #define glMultiDrawElementsEXT (gl.MultiDrawElementsEXT) #undef glFogCoordfEXT #define glFogCoordfEXT (gl.FogCoordfEXT) #undef glFogCoordfvEXT #define glFogCoordfvEXT (gl.FogCoordfvEXT) #undef glFogCoorddEXT #define glFogCoorddEXT (gl.FogCoorddEXT) #undef glFogCoorddvEXT #define glFogCoorddvEXT (gl.FogCoorddvEXT) #undef glFogCoordPointerEXT #define glFogCoordPointerEXT (gl.FogCoordPointerEXT) #undef glTangent3bEXT #define glTangent3bEXT (gl.Tangent3bEXT) #undef glTangent3bvEXT #define glTangent3bvEXT (gl.Tangent3bvEXT) #undef glTangent3dEXT #define glTangent3dEXT (gl.Tangent3dEXT) #undef glTangent3dvEXT #define glTangent3dvEXT (gl.Tangent3dvEXT) #undef glTangent3fEXT #define glTangent3fEXT (gl.Tangent3fEXT) #undef glTangent3fvEXT #define glTangent3fvEXT (gl.Tangent3fvEXT) #undef glTangent3iEXT #define glTangent3iEXT (gl.Tangent3iEXT) #undef glTangent3ivEXT #define glTangent3ivEXT (gl.Tangent3ivEXT) #undef glTangent3sEXT #define glTangent3sEXT (gl.Tangent3sEXT) #undef glTangent3svEXT #define glTangent3svEXT (gl.Tangent3svEXT) #undef glBinormal3bEXT #define glBinormal3bEXT (gl.Binormal3bEXT) #undef glBinormal3bvEXT #define glBinormal3bvEXT (gl.Binormal3bvEXT) #undef glBinormal3dEXT #define glBinormal3dEXT (gl.Binormal3dEXT) #undef glBinormal3dvEXT #define glBinormal3dvEXT (gl.Binormal3dvEXT) #undef glBinormal3fEXT #define glBinormal3fEXT (gl.Binormal3fEXT) #undef glBinormal3fvEXT #define glBinormal3fvEXT (gl.Binormal3fvEXT) #undef glBinormal3iEXT #define glBinormal3iEXT (gl.Binormal3iEXT) #undef glBinormal3ivEXT #define glBinormal3ivEXT (gl.Binormal3ivEXT) #undef glBinormal3sEXT #define glBinormal3sEXT (gl.Binormal3sEXT) #undef glBinormal3svEXT #define glBinormal3svEXT (gl.Binormal3svEXT) #undef glTangentPointerEXT #define glTangentPointerEXT (gl.TangentPointerEXT) #undef glBinormalPointerEXT #define glBinormalPointerEXT (gl.BinormalPointerEXT) #undef glFinishTextureSUNX #define glFinishTextureSUNX (gl.FinishTextureSUNX) #undef glGlobalAlphaFactorbSUN #define glGlobalAlphaFactorbSUN (gl.GlobalAlphaFactorbSUN) #undef glGlobalAlphaFactorsSUN #define glGlobalAlphaFactorsSUN (gl.GlobalAlphaFactorsSUN) #undef glGlobalAlphaFactoriSUN #define glGlobalAlphaFactoriSUN (gl.GlobalAlphaFactoriSUN) #undef glGlobalAlphaFactorfSUN #define glGlobalAlphaFactorfSUN (gl.GlobalAlphaFactorfSUN) #undef glGlobalAlphaFactordSUN #define glGlobalAlphaFactordSUN (gl.GlobalAlphaFactordSUN) #undef glGlobalAlphaFactorubSUN #define glGlobalAlphaFactorubSUN (gl.GlobalAlphaFactorubSUN) #undef glGlobalAlphaFactorusSUN #define glGlobalAlphaFactorusSUN (gl.GlobalAlphaFactorusSUN) #undef glGlobalAlphaFactoruiSUN #define glGlobalAlphaFactoruiSUN (gl.GlobalAlphaFactoruiSUN) #undef glReplacementCodeuiSUN #define glReplacementCodeuiSUN (gl.ReplacementCodeuiSUN) #undef glReplacementCodeusSUN #define glReplacementCodeusSUN (gl.ReplacementCodeusSUN) #undef glReplacementCodeubSUN #define glReplacementCodeubSUN (gl.ReplacementCodeubSUN) #undef glReplacementCodeuivSUN #define glReplacementCodeuivSUN (gl.ReplacementCodeuivSUN) #undef glReplacementCodeusvSUN #define glReplacementCodeusvSUN (gl.ReplacementCodeusvSUN) #undef glReplacementCodeubvSUN #define glReplacementCodeubvSUN (gl.ReplacementCodeubvSUN) #undef glReplacementCodePointerSUN #define glReplacementCodePointerSUN (gl.ReplacementCodePointerSUN) #undef glColor4ubVertex2fSUN #define glColor4ubVertex2fSUN (gl.Color4ubVertex2fSUN) #undef glColor4ubVertex2fvSUN #define glColor4ubVertex2fvSUN (gl.Color4ubVertex2fvSUN) #undef glColor4ubVertex3fSUN #define glColor4ubVertex3fSUN (gl.Color4ubVertex3fSUN) #undef glColor4ubVertex3fvSUN #define glColor4ubVertex3fvSUN (gl.Color4ubVertex3fvSUN) #undef glColor3fVertex3fSUN #define glColor3fVertex3fSUN (gl.Color3fVertex3fSUN) #undef glColor3fVertex3fvSUN #define glColor3fVertex3fvSUN (gl.Color3fVertex3fvSUN) #undef glNormal3fVertex3fSUN #define glNormal3fVertex3fSUN (gl.Normal3fVertex3fSUN) #undef glNormal3fVertex3fvSUN #define glNormal3fVertex3fvSUN (gl.Normal3fVertex3fvSUN) #undef glColor4fNormal3fVertex3fSUN #define glColor4fNormal3fVertex3fSUN (gl.Color4fNormal3fVertex3fSUN) #undef glColor4fNormal3fVertex3fvSUN #define glColor4fNormal3fVertex3fvSUN (gl.Color4fNormal3fVertex3fvSUN) #undef glTexCoord2fVertex3fSUN #define glTexCoord2fVertex3fSUN (gl.TexCoord2fVertex3fSUN) #undef glTexCoord2fVertex3fvSUN #define glTexCoord2fVertex3fvSUN (gl.TexCoord2fVertex3fvSUN) #undef glTexCoord4fVertex4fSUN #define glTexCoord4fVertex4fSUN (gl.TexCoord4fVertex4fSUN) #undef glTexCoord4fVertex4fvSUN #define glTexCoord4fVertex4fvSUN (gl.TexCoord4fVertex4fvSUN) #undef glTexCoord2fColor4ubVertex3fSUN #define glTexCoord2fColor4ubVertex3fSUN (gl.TexCoord2fColor4ubVertex3fSUN) #undef glTexCoord2fColor4ubVertex3fvSUN #define glTexCoord2fColor4ubVertex3fvSUN (gl.TexCoord2fColor4ubVertex3fvSUN) #undef glTexCoord2fColor3fVertex3fSUN #define glTexCoord2fColor3fVertex3fSUN (gl.TexCoord2fColor3fVertex3fSUN) #undef glTexCoord2fColor3fVertex3fvSUN #define glTexCoord2fColor3fVertex3fvSUN (gl.TexCoord2fColor3fVertex3fvSUN) #undef glTexCoord2fNormal3fVertex3fSUN #define glTexCoord2fNormal3fVertex3fSUN (gl.TexCoord2fNormal3fVertex3fSUN) #undef glTexCoord2fNormal3fVertex3fvSUN #define glTexCoord2fNormal3fVertex3fvSUN (gl.TexCoord2fNormal3fVertex3fvSUN) #undef glTexCoord2fColor4fNormal3fVertex3fSUN #define glTexCoord2fColor4fNormal3fVertex3fSUN (gl.TexCoord2fColor4fNormal3fVertex3fSUN) #undef glTexCoord2fColor4fNormal3fVertex3fvSUN #define glTexCoord2fColor4fNormal3fVertex3fvSUN (gl.TexCoord2fColor4fNormal3fVertex3fvSUN) #undef glTexCoord4fColor4fNormal3fVertex4fSUN #define glTexCoord4fColor4fNormal3fVertex4fSUN (gl.TexCoord4fColor4fNormal3fVertex4fSUN) #undef glTexCoord4fColor4fNormal3fVertex4fvSUN #define glTexCoord4fColor4fNormal3fVertex4fvSUN (gl.TexCoord4fColor4fNormal3fVertex4fvSUN) #undef glReplacementCodeuiVertex3fSUN #define glReplacementCodeuiVertex3fSUN (gl.ReplacementCodeuiVertex3fSUN) #undef glReplacementCodeuiVertex3fvSUN #define glReplacementCodeuiVertex3fvSUN (gl.ReplacementCodeuiVertex3fvSUN) #undef glReplacementCodeuiColor4ubVertex3fSUN #define glReplacementCodeuiColor4ubVertex3fSUN (gl.ReplacementCodeuiColor4ubVertex3fSUN) #undef glReplacementCodeuiColor4ubVertex3fvSUN #define glReplacementCodeuiColor4ubVertex3fvSUN (gl.ReplacementCodeuiColor4ubVertex3fvSUN) #undef glReplacementCodeuiColor3fVertex3fSUN #define glReplacementCodeuiColor3fVertex3fSUN (gl.ReplacementCodeuiColor3fVertex3fSUN) #undef glReplacementCodeuiColor3fVertex3fvSUN #define glReplacementCodeuiColor3fVertex3fvSUN (gl.ReplacementCodeuiColor3fVertex3fvSUN) #undef glReplacementCodeuiNormal3fVertex3fSUN #define glReplacementCodeuiNormal3fVertex3fSUN (gl.ReplacementCodeuiNormal3fVertex3fSUN) #undef glReplacementCodeuiNormal3fVertex3fvSUN #define glReplacementCodeuiNormal3fVertex3fvSUN (gl.ReplacementCodeuiNormal3fVertex3fvSUN) #undef glReplacementCodeuiColor4fNormal3fVertex3fSUN #define glReplacementCodeuiColor4fNormal3fVertex3fSUN (gl.ReplacementCodeuiColor4fNormal3fVertex3fSUN) #undef glReplacementCodeuiColor4fNormal3fVertex3fvSUN #define glReplacementCodeuiColor4fNormal3fVertex3fvSUN (gl.ReplacementCodeuiColor4fNormal3fVertex3fvSUN) #undef glReplacementCodeuiTexCoord2fVertex3fSUN #define glReplacementCodeuiTexCoord2fVertex3fSUN (gl.ReplacementCodeuiTexCoord2fVertex3fSUN) #undef glReplacementCodeuiTexCoord2fVertex3fvSUN #define glReplacementCodeuiTexCoord2fVertex3fvSUN (gl.ReplacementCodeuiTexCoord2fVertex3fvSUN) #undef glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN #define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (gl.ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) #undef glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN #define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (gl.ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) #undef glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN #define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (gl.ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) #undef glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN #define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (gl.ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) #undef glBlendFuncSeparateEXT #define glBlendFuncSeparateEXT (gl.BlendFuncSeparateEXT) #undef glBlendFuncSeparateINGR #define glBlendFuncSeparateINGR (gl.BlendFuncSeparateINGR) #undef glVertexWeightfEXT #define glVertexWeightfEXT (gl.VertexWeightfEXT) #undef glVertexWeightfvEXT #define glVertexWeightfvEXT (gl.VertexWeightfvEXT) #undef glVertexWeightPointerEXT #define glVertexWeightPointerEXT (gl.VertexWeightPointerEXT) #undef glFlushVertexArrayRangeNV #define glFlushVertexArrayRangeNV (gl.FlushVertexArrayRangeNV) #undef glVertexArrayRangeNV #define glVertexArrayRangeNV (gl.VertexArrayRangeNV) #undef glCombinerParameterfvNV #define glCombinerParameterfvNV (gl.CombinerParameterfvNV) #undef glCombinerParameterfNV #define glCombinerParameterfNV (gl.CombinerParameterfNV) #undef glCombinerParameterivNV #define glCombinerParameterivNV (gl.CombinerParameterivNV) #undef glCombinerParameteriNV #define glCombinerParameteriNV (gl.CombinerParameteriNV) #undef glCombinerInputNV #define glCombinerInputNV (gl.CombinerInputNV) #undef glCombinerOutputNV #define glCombinerOutputNV (gl.CombinerOutputNV) #undef glFinalCombinerInputNV #define glFinalCombinerInputNV (gl.FinalCombinerInputNV) #undef glGetCombinerInputParameterfvNV #define glGetCombinerInputParameterfvNV (gl.GetCombinerInputParameterfvNV) #undef glGetCombinerInputParameterivNV #define glGetCombinerInputParameterivNV (gl.GetCombinerInputParameterivNV) #undef glGetCombinerOutputParameterfvNV #define glGetCombinerOutputParameterfvNV (gl.GetCombinerOutputParameterfvNV) #undef glGetCombinerOutputParameterivNV #define glGetCombinerOutputParameterivNV (gl.GetCombinerOutputParameterivNV) #undef glGetFinalCombinerInputParameterfvNV #define glGetFinalCombinerInputParameterfvNV (gl.GetFinalCombinerInputParameterfvNV) #undef glGetFinalCombinerInputParameterivNV #define glGetFinalCombinerInputParameterivNV (gl.GetFinalCombinerInputParameterivNV) #undef glResizeBuffersMESA #define glResizeBuffersMESA (gl.ResizeBuffersMESA) #undef glWindowPos2dMESA #define glWindowPos2dMESA (gl.WindowPos2dMESA) #undef glWindowPos2dvMESA #define glWindowPos2dvMESA (gl.WindowPos2dvMESA) #undef glWindowPos2fMESA #define glWindowPos2fMESA (gl.WindowPos2fMESA) #undef glWindowPos2fvMESA #define glWindowPos2fvMESA (gl.WindowPos2fvMESA) #undef glWindowPos2iMESA #define glWindowPos2iMESA (gl.WindowPos2iMESA) #undef glWindowPos2ivMESA #define glWindowPos2ivMESA (gl.WindowPos2ivMESA) #undef glWindowPos2sMESA #define glWindowPos2sMESA (gl.WindowPos2sMESA) #undef glWindowPos2svMESA #define glWindowPos2svMESA (gl.WindowPos2svMESA) #undef glWindowPos3dMESA #define glWindowPos3dMESA (gl.WindowPos3dMESA) #undef glWindowPos3dvMESA #define glWindowPos3dvMESA (gl.WindowPos3dvMESA) #undef glWindowPos3fMESA #define glWindowPos3fMESA (gl.WindowPos3fMESA) #undef glWindowPos3fvMESA #define glWindowPos3fvMESA (gl.WindowPos3fvMESA) #undef glWindowPos3iMESA #define glWindowPos3iMESA (gl.WindowPos3iMESA) #undef glWindowPos3ivMESA #define glWindowPos3ivMESA (gl.WindowPos3ivMESA) #undef glWindowPos3sMESA #define glWindowPos3sMESA (gl.WindowPos3sMESA) #undef glWindowPos3svMESA #define glWindowPos3svMESA (gl.WindowPos3svMESA) #undef glWindowPos4dMESA #define glWindowPos4dMESA (gl.WindowPos4dMESA) #undef glWindowPos4dvMESA #define glWindowPos4dvMESA (gl.WindowPos4dvMESA) #undef glWindowPos4fMESA #define glWindowPos4fMESA (gl.WindowPos4fMESA) #undef glWindowPos4fvMESA #define glWindowPos4fvMESA (gl.WindowPos4fvMESA) #undef glWindowPos4iMESA #define glWindowPos4iMESA (gl.WindowPos4iMESA) #undef glWindowPos4ivMESA #define glWindowPos4ivMESA (gl.WindowPos4ivMESA) #undef glWindowPos4sMESA #define glWindowPos4sMESA (gl.WindowPos4sMESA) #undef glWindowPos4svMESA #define glWindowPos4svMESA (gl.WindowPos4svMESA) #undef glMultiModeDrawArraysIBM #define glMultiModeDrawArraysIBM (gl.MultiModeDrawArraysIBM) #undef glMultiModeDrawElementsIBM #define glMultiModeDrawElementsIBM (gl.MultiModeDrawElementsIBM) #undef glColorPointerListIBM #define glColorPointerListIBM (gl.ColorPointerListIBM) #undef glSecondaryColorPointerListIBM #define glSecondaryColorPointerListIBM (gl.SecondaryColorPointerListIBM) #undef glEdgeFlagPointerListIBM #define glEdgeFlagPointerListIBM (gl.EdgeFlagPointerListIBM) #undef glFogCoordPointerListIBM #define glFogCoordPointerListIBM (gl.FogCoordPointerListIBM) #undef glIndexPointerListIBM #define glIndexPointerListIBM (gl.IndexPointerListIBM) #undef glNormalPointerListIBM #define glNormalPointerListIBM (gl.NormalPointerListIBM) #undef glTexCoordPointerListIBM #define glTexCoordPointerListIBM (gl.TexCoordPointerListIBM) #undef glVertexPointerListIBM #define glVertexPointerListIBM (gl.VertexPointerListIBM) #undef glTbufferMask3DFX #define glTbufferMask3DFX (gl.TbufferMask3DFX) #undef glSampleMaskEXT #define glSampleMaskEXT (gl.SampleMaskEXT) #undef glSamplePatternEXT #define glSamplePatternEXT (gl.SamplePatternEXT) #undef glTextureColorMaskSGIS #define glTextureColorMaskSGIS (gl.TextureColorMaskSGIS) #undef glIglooInterfaceSGIX #define glIglooInterfaceSGIX (gl.IglooInterfaceSGIX) #undef glDeleteFencesNV #define glDeleteFencesNV (gl.DeleteFencesNV) #undef glGenFencesNV #define glGenFencesNV (gl.GenFencesNV) #undef glIsFenceNV #define glIsFenceNV (gl.IsFenceNV) #undef glTestFenceNV #define glTestFenceNV (gl.TestFenceNV) #undef glGetFenceivNV #define glGetFenceivNV (gl.GetFenceivNV) #undef glFinishFenceNV #define glFinishFenceNV (gl.FinishFenceNV) #undef glSetFenceNV #define glSetFenceNV (gl.SetFenceNV) #undef glMapControlPointsNV #define glMapControlPointsNV (gl.MapControlPointsNV) #undef glMapParameterivNV #define glMapParameterivNV (gl.MapParameterivNV) #undef glMapParameterfvNV #define glMapParameterfvNV (gl.MapParameterfvNV) #undef glGetMapControlPointsNV #define glGetMapControlPointsNV (gl.GetMapControlPointsNV) #undef glGetMapParameterivNV #define glGetMapParameterivNV (gl.GetMapParameterivNV) #undef glGetMapParameterfvNV #define glGetMapParameterfvNV (gl.GetMapParameterfvNV) #undef glGetMapAttribParameterivNV #define glGetMapAttribParameterivNV (gl.GetMapAttribParameterivNV) #undef glGetMapAttribParameterfvNV #define glGetMapAttribParameterfvNV (gl.GetMapAttribParameterfvNV) #undef glEvalMapsNV #define glEvalMapsNV (gl.EvalMapsNV) #undef glCombinerStageParameterfvNV #define glCombinerStageParameterfvNV (gl.CombinerStageParameterfvNV) #undef glGetCombinerStageParameterfvNV #define glGetCombinerStageParameterfvNV (gl.GetCombinerStageParameterfvNV) #undef glAreProgramsResidentNV #define glAreProgramsResidentNV (gl.AreProgramsResidentNV) #undef glBindProgramNV #define glBindProgramNV (gl.BindProgramNV) #undef glDeleteProgramsNV #define glDeleteProgramsNV (gl.DeleteProgramsNV) #undef glExecuteProgramNV #define glExecuteProgramNV (gl.ExecuteProgramNV) #undef glGenProgramsNV #define glGenProgramsNV (gl.GenProgramsNV) #undef glGetProgramParameterdvNV #define glGetProgramParameterdvNV (gl.GetProgramParameterdvNV) #undef glGetProgramParameterfvNV #define glGetProgramParameterfvNV (gl.GetProgramParameterfvNV) #undef glGetProgramivNV #define glGetProgramivNV (gl.GetProgramivNV) #undef glGetProgramStringNV #define glGetProgramStringNV (gl.GetProgramStringNV) #undef glGetTrackMatrixivNV #define glGetTrackMatrixivNV (gl.GetTrackMatrixivNV) #undef glGetVertexAttribdvNV #define glGetVertexAttribdvNV (gl.GetVertexAttribdvNV) #undef glGetVertexAttribfvNV #define glGetVertexAttribfvNV (gl.GetVertexAttribfvNV) #undef glGetVertexAttribivNV #define glGetVertexAttribivNV (gl.GetVertexAttribivNV) #undef glGetVertexAttribPointervNV #define glGetVertexAttribPointervNV (gl.GetVertexAttribPointervNV) #undef glIsProgramNV #define glIsProgramNV (gl.IsProgramNV) #undef glLoadProgramNV #define glLoadProgramNV (gl.LoadProgramNV) #undef glProgramParameter4dNV #define glProgramParameter4dNV (gl.ProgramParameter4dNV) #undef glProgramParameter4dvNV #define glProgramParameter4dvNV (gl.ProgramParameter4dvNV) #undef glProgramParameter4fNV #define glProgramParameter4fNV (gl.ProgramParameter4fNV) #undef glProgramParameter4fvNV #define glProgramParameter4fvNV (gl.ProgramParameter4fvNV) #undef glProgramParameters4dvNV #define glProgramParameters4dvNV (gl.ProgramParameters4dvNV) #undef glProgramParameters4fvNV #define glProgramParameters4fvNV (gl.ProgramParameters4fvNV) #undef glRequestResidentProgramsNV #define glRequestResidentProgramsNV (gl.RequestResidentProgramsNV) #undef glTrackMatrixNV #define glTrackMatrixNV (gl.TrackMatrixNV) #undef glVertexAttribPointerNV #define glVertexAttribPointerNV (gl.VertexAttribPointerNV) #undef glVertexAttrib1dNV #define glVertexAttrib1dNV (gl.VertexAttrib1dNV) #undef glVertexAttrib1dvNV #define glVertexAttrib1dvNV (gl.VertexAttrib1dvNV) #undef glVertexAttrib1fNV #define glVertexAttrib1fNV (gl.VertexAttrib1fNV) #undef glVertexAttrib1fvNV #define glVertexAttrib1fvNV (gl.VertexAttrib1fvNV) #undef glVertexAttrib1sNV #define glVertexAttrib1sNV (gl.VertexAttrib1sNV) #undef glVertexAttrib1svNV #define glVertexAttrib1svNV (gl.VertexAttrib1svNV) #undef glVertexAttrib2dNV #define glVertexAttrib2dNV (gl.VertexAttrib2dNV) #undef glVertexAttrib2dvNV #define glVertexAttrib2dvNV (gl.VertexAttrib2dvNV) #undef glVertexAttrib2fNV #define glVertexAttrib2fNV (gl.VertexAttrib2fNV) #undef glVertexAttrib2fvNV #define glVertexAttrib2fvNV (gl.VertexAttrib2fvNV) #undef glVertexAttrib2sNV #define glVertexAttrib2sNV (gl.VertexAttrib2sNV) #undef glVertexAttrib2svNV #define glVertexAttrib2svNV (gl.VertexAttrib2svNV) #undef glVertexAttrib3dNV #define glVertexAttrib3dNV (gl.VertexAttrib3dNV) #undef glVertexAttrib3dvNV #define glVertexAttrib3dvNV (gl.VertexAttrib3dvNV) #undef glVertexAttrib3fNV #define glVertexAttrib3fNV (gl.VertexAttrib3fNV) #undef glVertexAttrib3fvNV #define glVertexAttrib3fvNV (gl.VertexAttrib3fvNV) #undef glVertexAttrib3sNV #define glVertexAttrib3sNV (gl.VertexAttrib3sNV) #undef glVertexAttrib3svNV #define glVertexAttrib3svNV (gl.VertexAttrib3svNV) #undef glVertexAttrib4dNV #define glVertexAttrib4dNV (gl.VertexAttrib4dNV) #undef glVertexAttrib4dvNV #define glVertexAttrib4dvNV (gl.VertexAttrib4dvNV) #undef glVertexAttrib4fNV #define glVertexAttrib4fNV (gl.VertexAttrib4fNV) #undef glVertexAttrib4fvNV #define glVertexAttrib4fvNV (gl.VertexAttrib4fvNV) #undef glVertexAttrib4sNV #define glVertexAttrib4sNV (gl.VertexAttrib4sNV) #undef glVertexAttrib4svNV #define glVertexAttrib4svNV (gl.VertexAttrib4svNV) #undef glVertexAttrib4ubNV #define glVertexAttrib4ubNV (gl.VertexAttrib4ubNV) #undef glVertexAttrib4ubvNV #define glVertexAttrib4ubvNV (gl.VertexAttrib4ubvNV) #undef glVertexAttribs1dvNV #define glVertexAttribs1dvNV (gl.VertexAttribs1dvNV) #undef glVertexAttribs1fvNV #define glVertexAttribs1fvNV (gl.VertexAttribs1fvNV) #undef glVertexAttribs1svNV #define glVertexAttribs1svNV (gl.VertexAttribs1svNV) #undef glVertexAttribs2dvNV #define glVertexAttribs2dvNV (gl.VertexAttribs2dvNV) #undef glVertexAttribs2fvNV #define glVertexAttribs2fvNV (gl.VertexAttribs2fvNV) #undef glVertexAttribs2svNV #define glVertexAttribs2svNV (gl.VertexAttribs2svNV) #undef glVertexAttribs3dvNV #define glVertexAttribs3dvNV (gl.VertexAttribs3dvNV) #undef glVertexAttribs3fvNV #define glVertexAttribs3fvNV (gl.VertexAttribs3fvNV) #undef glVertexAttribs3svNV #define glVertexAttribs3svNV (gl.VertexAttribs3svNV) #undef glVertexAttribs4dvNV #define glVertexAttribs4dvNV (gl.VertexAttribs4dvNV) #undef glVertexAttribs4fvNV #define glVertexAttribs4fvNV (gl.VertexAttribs4fvNV) #undef glVertexAttribs4svNV #define glVertexAttribs4svNV (gl.VertexAttribs4svNV) #undef glVertexAttribs4ubvNV #define glVertexAttribs4ubvNV (gl.VertexAttribs4ubvNV) #undef glTexBumpParameterivATI #define glTexBumpParameterivATI (gl.TexBumpParameterivATI) #undef glTexBumpParameterfvATI #define glTexBumpParameterfvATI (gl.TexBumpParameterfvATI) #undef glGetTexBumpParameterivATI #define glGetTexBumpParameterivATI (gl.GetTexBumpParameterivATI) #undef glGetTexBumpParameterfvATI #define glGetTexBumpParameterfvATI (gl.GetTexBumpParameterfvATI) #undef glGenFragmentShadersATI #define glGenFragmentShadersATI (gl.GenFragmentShadersATI) #undef glBindFragmentShaderATI #define glBindFragmentShaderATI (gl.BindFragmentShaderATI) #undef glDeleteFragmentShaderATI #define glDeleteFragmentShaderATI (gl.DeleteFragmentShaderATI) #undef glBeginFragmentShaderATI #define glBeginFragmentShaderATI (gl.BeginFragmentShaderATI) #undef glEndFragmentShaderATI #define glEndFragmentShaderATI (gl.EndFragmentShaderATI) #undef glPassTexCoordATI #define glPassTexCoordATI (gl.PassTexCoordATI) #undef glSampleMapATI #define glSampleMapATI (gl.SampleMapATI) #undef glColorFragmentOp1ATI #define glColorFragmentOp1ATI (gl.ColorFragmentOp1ATI) #undef glColorFragmentOp2ATI #define glColorFragmentOp2ATI (gl.ColorFragmentOp2ATI) #undef glColorFragmentOp3ATI #define glColorFragmentOp3ATI (gl.ColorFragmentOp3ATI) #undef glAlphaFragmentOp1ATI #define glAlphaFragmentOp1ATI (gl.AlphaFragmentOp1ATI) #undef glAlphaFragmentOp2ATI #define glAlphaFragmentOp2ATI (gl.AlphaFragmentOp2ATI) #undef glAlphaFragmentOp3ATI #define glAlphaFragmentOp3ATI (gl.AlphaFragmentOp3ATI) #undef glSetFragmentShaderConstantATI #define glSetFragmentShaderConstantATI (gl.SetFragmentShaderConstantATI) #undef glPNTrianglesiATI #define glPNTrianglesiATI (gl.PNTrianglesiATI) #undef glPNTrianglesfATI #define glPNTrianglesfATI (gl.PNTrianglesfATI) #undef glNewObjectBufferATI #define glNewObjectBufferATI (gl.NewObjectBufferATI) #undef glIsObjectBufferATI #define glIsObjectBufferATI (gl.IsObjectBufferATI) #undef glUpdateObjectBufferATI #define glUpdateObjectBufferATI (gl.UpdateObjectBufferATI) #undef glGetObjectBufferfvATI #define glGetObjectBufferfvATI (gl.GetObjectBufferfvATI) #undef glGetObjectBufferivATI #define glGetObjectBufferivATI (gl.GetObjectBufferivATI) #undef glFreeObjectBufferATI #define glFreeObjectBufferATI (gl.FreeObjectBufferATI) #undef glArrayObjectATI #define glArrayObjectATI (gl.ArrayObjectATI) #undef glGetArrayObjectfvATI #define glGetArrayObjectfvATI (gl.GetArrayObjectfvATI) #undef glGetArrayObjectivATI #define glGetArrayObjectivATI (gl.GetArrayObjectivATI) #undef glVariantArrayObjectATI #define glVariantArrayObjectATI (gl.VariantArrayObjectATI) #undef glGetVariantArrayObjectfvATI #define glGetVariantArrayObjectfvATI (gl.GetVariantArrayObjectfvATI) #undef glGetVariantArrayObjectivATI #define glGetVariantArrayObjectivATI (gl.GetVariantArrayObjectivATI) #undef glBeginVertexShaderEXT #define glBeginVertexShaderEXT (gl.BeginVertexShaderEXT) #undef glEndVertexShaderEXT #define glEndVertexShaderEXT (gl.EndVertexShaderEXT) #undef glBindVertexShaderEXT #define glBindVertexShaderEXT (gl.BindVertexShaderEXT) #undef glGenVertexShadersEXT #define glGenVertexShadersEXT (gl.GenVertexShadersEXT) #undef glDeleteVertexShaderEXT #define glDeleteVertexShaderEXT (gl.DeleteVertexShaderEXT) #undef glShaderOp1EXT #define glShaderOp1EXT (gl.ShaderOp1EXT) #undef glShaderOp2EXT #define glShaderOp2EXT (gl.ShaderOp2EXT) #undef glShaderOp3EXT #define glShaderOp3EXT (gl.ShaderOp3EXT) #undef glSwizzleEXT #define glSwizzleEXT (gl.SwizzleEXT) #undef glWriteMaskEXT #define glWriteMaskEXT (gl.WriteMaskEXT) #undef glInsertComponentEXT #define glInsertComponentEXT (gl.InsertComponentEXT) #undef glExtractComponentEXT #define glExtractComponentEXT (gl.ExtractComponentEXT) #undef glGenSymbolsEXT #define glGenSymbolsEXT (gl.GenSymbolsEXT) #undef glSetInvariantEXT #define glSetInvariantEXT (gl.SetInvariantEXT) #undef glSetLocalConstantEXT #define glSetLocalConstantEXT (gl.SetLocalConstantEXT) #undef glVariantbvEXT #define glVariantbvEXT (gl.VariantbvEXT) #undef glVariantsvEXT #define glVariantsvEXT (gl.VariantsvEXT) #undef glVariantivEXT #define glVariantivEXT (gl.VariantivEXT) #undef glVariantfvEXT #define glVariantfvEXT (gl.VariantfvEXT) #undef glVariantdvEXT #define glVariantdvEXT (gl.VariantdvEXT) #undef glVariantubvEXT #define glVariantubvEXT (gl.VariantubvEXT) #undef glVariantusvEXT #define glVariantusvEXT (gl.VariantusvEXT) #undef glVariantuivEXT #define glVariantuivEXT (gl.VariantuivEXT) #undef glVariantPointerEXT #define glVariantPointerEXT (gl.VariantPointerEXT) #undef glEnableVariantClientStateEXT #define glEnableVariantClientStateEXT (gl.EnableVariantClientStateEXT) #undef glDisableVariantClientStateEXT #define glDisableVariantClientStateEXT (gl.DisableVariantClientStateEXT) #undef glBindLightParameterEXT #define glBindLightParameterEXT (gl.BindLightParameterEXT) #undef glBindMaterialParameterEXT #define glBindMaterialParameterEXT (gl.BindMaterialParameterEXT) #undef glBindTexGenParameterEXT #define glBindTexGenParameterEXT (gl.BindTexGenParameterEXT) #undef glBindTextureUnitParameterEXT #define glBindTextureUnitParameterEXT (gl.BindTextureUnitParameterEXT) #undef glBindParameterEXT #define glBindParameterEXT (gl.BindParameterEXT) #undef glIsVariantEnabledEXT #define glIsVariantEnabledEXT (gl.IsVariantEnabledEXT) #undef glGetVariantBooleanvEXT #define glGetVariantBooleanvEXT (gl.GetVariantBooleanvEXT) #undef glGetVariantIntegervEXT #define glGetVariantIntegervEXT (gl.GetVariantIntegervEXT) #undef glGetVariantFloatvEXT #define glGetVariantFloatvEXT (gl.GetVariantFloatvEXT) #undef glGetVariantPointervEXT #define glGetVariantPointervEXT (gl.GetVariantPointervEXT) #undef glGetInvariantBooleanvEXT #define glGetInvariantBooleanvEXT (gl.GetInvariantBooleanvEXT) #undef glGetInvariantIntegervEXT #define glGetInvariantIntegervEXT (gl.GetInvariantIntegervEXT) #undef glGetInvariantFloatvEXT #define glGetInvariantFloatvEXT (gl.GetInvariantFloatvEXT) #undef glGetLocalConstantBooleanvEXT #define glGetLocalConstantBooleanvEXT (gl.GetLocalConstantBooleanvEXT) #undef glGetLocalConstantIntegervEXT #define glGetLocalConstantIntegervEXT (gl.GetLocalConstantIntegervEXT) #undef glGetLocalConstantFloatvEXT #define glGetLocalConstantFloatvEXT (gl.GetLocalConstantFloatvEXT) #undef glVertexStream1sATI #define glVertexStream1sATI (gl.VertexStream1sATI) #undef glVertexStream1svATI #define glVertexStream1svATI (gl.VertexStream1svATI) #undef glVertexStream1iATI #define glVertexStream1iATI (gl.VertexStream1iATI) #undef glVertexStream1ivATI #define glVertexStream1ivATI (gl.VertexStream1ivATI) #undef glVertexStream1fATI #define glVertexStream1fATI (gl.VertexStream1fATI) #undef glVertexStream1fvATI #define glVertexStream1fvATI (gl.VertexStream1fvATI) #undef glVertexStream1dATI #define glVertexStream1dATI (gl.VertexStream1dATI) #undef glVertexStream1dvATI #define glVertexStream1dvATI (gl.VertexStream1dvATI) #undef glVertexStream2sATI #define glVertexStream2sATI (gl.VertexStream2sATI) #undef glVertexStream2svATI #define glVertexStream2svATI (gl.VertexStream2svATI) #undef glVertexStream2iATI #define glVertexStream2iATI (gl.VertexStream2iATI) #undef glVertexStream2ivATI #define glVertexStream2ivATI (gl.VertexStream2ivATI) #undef glVertexStream2fATI #define glVertexStream2fATI (gl.VertexStream2fATI) #undef glVertexStream2fvATI #define glVertexStream2fvATI (gl.VertexStream2fvATI) #undef glVertexStream2dATI #define glVertexStream2dATI (gl.VertexStream2dATI) #undef glVertexStream2dvATI #define glVertexStream2dvATI (gl.VertexStream2dvATI) #undef glVertexStream3sATI #define glVertexStream3sATI (gl.VertexStream3sATI) #undef glVertexStream3svATI #define glVertexStream3svATI (gl.VertexStream3svATI) #undef glVertexStream3iATI #define glVertexStream3iATI (gl.VertexStream3iATI) #undef glVertexStream3ivATI #define glVertexStream3ivATI (gl.VertexStream3ivATI) #undef glVertexStream3fATI #define glVertexStream3fATI (gl.VertexStream3fATI) #undef glVertexStream3fvATI #define glVertexStream3fvATI (gl.VertexStream3fvATI) #undef glVertexStream3dATI #define glVertexStream3dATI (gl.VertexStream3dATI) #undef glVertexStream3dvATI #define glVertexStream3dvATI (gl.VertexStream3dvATI) #undef glVertexStream4sATI #define glVertexStream4sATI (gl.VertexStream4sATI) #undef glVertexStream4svATI #define glVertexStream4svATI (gl.VertexStream4svATI) #undef glVertexStream4iATI #define glVertexStream4iATI (gl.VertexStream4iATI) #undef glVertexStream4ivATI #define glVertexStream4ivATI (gl.VertexStream4ivATI) #undef glVertexStream4fATI #define glVertexStream4fATI (gl.VertexStream4fATI) #undef glVertexStream4fvATI #define glVertexStream4fvATI (gl.VertexStream4fvATI) #undef glVertexStream4dATI #define glVertexStream4dATI (gl.VertexStream4dATI) #undef glVertexStream4dvATI #define glVertexStream4dvATI (gl.VertexStream4dvATI) #undef glNormalStream3bATI #define glNormalStream3bATI (gl.NormalStream3bATI) #undef glNormalStream3bvATI #define glNormalStream3bvATI (gl.NormalStream3bvATI) #undef glNormalStream3sATI #define glNormalStream3sATI (gl.NormalStream3sATI) #undef glNormalStream3svATI #define glNormalStream3svATI (gl.NormalStream3svATI) #undef glNormalStream3iATI #define glNormalStream3iATI (gl.NormalStream3iATI) #undef glNormalStream3ivATI #define glNormalStream3ivATI (gl.NormalStream3ivATI) #undef glNormalStream3fATI #define glNormalStream3fATI (gl.NormalStream3fATI) #undef glNormalStream3fvATI #define glNormalStream3fvATI (gl.NormalStream3fvATI) #undef glNormalStream3dATI #define glNormalStream3dATI (gl.NormalStream3dATI) #undef glNormalStream3dvATI #define glNormalStream3dvATI (gl.NormalStream3dvATI) #undef glClientActiveVertexStreamATI #define glClientActiveVertexStreamATI (gl.ClientActiveVertexStreamATI) #undef glVertexBlendEnviATI #define glVertexBlendEnviATI (gl.VertexBlendEnviATI) #undef glVertexBlendEnvfATI #define glVertexBlendEnvfATI (gl.VertexBlendEnvfATI) #undef glElementPointerATI #define glElementPointerATI (gl.ElementPointerATI) #undef glDrawElementArrayATI #define glDrawElementArrayATI (gl.DrawElementArrayATI) #undef glDrawRangeElementArrayATI #define glDrawRangeElementArrayATI (gl.DrawRangeElementArrayATI) #undef glDrawMeshArraysSUN #define glDrawMeshArraysSUN (gl.DrawMeshArraysSUN) #undef glGenOcclusionQueriesNV #define glGenOcclusionQueriesNV (gl.GenOcclusionQueriesNV) #undef glDeleteOcclusionQueriesNV #define glDeleteOcclusionQueriesNV (gl.DeleteOcclusionQueriesNV) #undef glIsOcclusionQueryNV #define glIsOcclusionQueryNV (gl.IsOcclusionQueryNV) #undef glBeginOcclusionQueryNV #define glBeginOcclusionQueryNV (gl.BeginOcclusionQueryNV) #undef glEndOcclusionQueryNV #define glEndOcclusionQueryNV (gl.EndOcclusionQueryNV) #undef glGetOcclusionQueryivNV #define glGetOcclusionQueryivNV (gl.GetOcclusionQueryivNV) #undef glGetOcclusionQueryuivNV #define glGetOcclusionQueryuivNV (gl.GetOcclusionQueryuivNV) #undef glPointParameteriNV #define glPointParameteriNV (gl.PointParameteriNV) #undef glPointParameterivNV #define glPointParameterivNV (gl.PointParameterivNV) #undef glActiveStencilFaceEXT #define glActiveStencilFaceEXT (gl.ActiveStencilFaceEXT) #undef glElementPointerAPPLE #define glElementPointerAPPLE (gl.ElementPointerAPPLE) #undef glDrawElementArrayAPPLE #define glDrawElementArrayAPPLE (gl.DrawElementArrayAPPLE) #undef glDrawRangeElementArrayAPPLE #define glDrawRangeElementArrayAPPLE (gl.DrawRangeElementArrayAPPLE) #undef glMultiDrawElementArrayAPPLE #define glMultiDrawElementArrayAPPLE (gl.MultiDrawElementArrayAPPLE) #undef glMultiDrawRangeElementArrayAPPLE #define glMultiDrawRangeElementArrayAPPLE (gl.MultiDrawRangeElementArrayAPPLE) #undef glGenFencesAPPLE #define glGenFencesAPPLE (gl.GenFencesAPPLE) #undef glDeleteFencesAPPLE #define glDeleteFencesAPPLE (gl.DeleteFencesAPPLE) #undef glSetFenceAPPLE #define glSetFenceAPPLE (gl.SetFenceAPPLE) #undef glIsFenceAPPLE #define glIsFenceAPPLE (gl.IsFenceAPPLE) #undef glTestFenceAPPLE #define glTestFenceAPPLE (gl.TestFenceAPPLE) #undef glFinishFenceAPPLE #define glFinishFenceAPPLE (gl.FinishFenceAPPLE) #undef glTestObjectAPPLE #define glTestObjectAPPLE (gl.TestObjectAPPLE) #undef glFinishObjectAPPLE #define glFinishObjectAPPLE (gl.FinishObjectAPPLE) #undef glBindVertexArrayAPPLE #define glBindVertexArrayAPPLE (gl.BindVertexArrayAPPLE) #undef glDeleteVertexArraysAPPLE #define glDeleteVertexArraysAPPLE (gl.DeleteVertexArraysAPPLE) #undef glGenVertexArraysAPPLE #define glGenVertexArraysAPPLE (gl.GenVertexArraysAPPLE) #undef glIsVertexArrayAPPLE #define glIsVertexArrayAPPLE (gl.IsVertexArrayAPPLE) #undef glVertexArrayRangeAPPLE #define glVertexArrayRangeAPPLE (gl.VertexArrayRangeAPPLE) #undef glFlushVertexArrayRangeAPPLE #define glFlushVertexArrayRangeAPPLE (gl.FlushVertexArrayRangeAPPLE) #undef glVertexArrayParameteriAPPLE #define glVertexArrayParameteriAPPLE (gl.VertexArrayParameteriAPPLE) #undef glDrawBuffersATI #define glDrawBuffersATI (gl.DrawBuffersATI) #undef glProgramNamedParameter4fNV #define glProgramNamedParameter4fNV (gl.ProgramNamedParameter4fNV) #undef glProgramNamedParameter4dNV #define glProgramNamedParameter4dNV (gl.ProgramNamedParameter4dNV) #undef glProgramNamedParameter4fvNV #define glProgramNamedParameter4fvNV (gl.ProgramNamedParameter4fvNV) #undef glProgramNamedParameter4dvNV #define glProgramNamedParameter4dvNV (gl.ProgramNamedParameter4dvNV) #undef glGetProgramNamedParameterfvNV #define glGetProgramNamedParameterfvNV (gl.GetProgramNamedParameterfvNV) #undef glGetProgramNamedParameterdvNV #define glGetProgramNamedParameterdvNV (gl.GetProgramNamedParameterdvNV) #undef glVertex2hNV #define glVertex2hNV (gl.Vertex2hNV) #undef glVertex2hvNV #define glVertex2hvNV (gl.Vertex2hvNV) #undef glVertex3hNV #define glVertex3hNV (gl.Vertex3hNV) #undef glVertex3hvNV #define glVertex3hvNV (gl.Vertex3hvNV) #undef glVertex4hNV #define glVertex4hNV (gl.Vertex4hNV) #undef glVertex4hvNV #define glVertex4hvNV (gl.Vertex4hvNV) #undef glNormal3hNV #define glNormal3hNV (gl.Normal3hNV) #undef glNormal3hvNV #define glNormal3hvNV (gl.Normal3hvNV) #undef glColor3hNV #define glColor3hNV (gl.Color3hNV) #undef glColor3hvNV #define glColor3hvNV (gl.Color3hvNV) #undef glColor4hNV #define glColor4hNV (gl.Color4hNV) #undef glColor4hvNV #define glColor4hvNV (gl.Color4hvNV) #undef glTexCoord1hNV #define glTexCoord1hNV (gl.TexCoord1hNV) #undef glTexCoord1hvNV #define glTexCoord1hvNV (gl.TexCoord1hvNV) #undef glTexCoord2hNV #define glTexCoord2hNV (gl.TexCoord2hNV) #undef glTexCoord2hvNV #define glTexCoord2hvNV (gl.TexCoord2hvNV) #undef glTexCoord3hNV #define glTexCoord3hNV (gl.TexCoord3hNV) #undef glTexCoord3hvNV #define glTexCoord3hvNV (gl.TexCoord3hvNV) #undef glTexCoord4hNV #define glTexCoord4hNV (gl.TexCoord4hNV) #undef glTexCoord4hvNV #define glTexCoord4hvNV (gl.TexCoord4hvNV) #undef glMultiTexCoord1hNV #define glMultiTexCoord1hNV (gl.MultiTexCoord1hNV) #undef glMultiTexCoord1hvNV #define glMultiTexCoord1hvNV (gl.MultiTexCoord1hvNV) #undef glMultiTexCoord2hNV #define glMultiTexCoord2hNV (gl.MultiTexCoord2hNV) #undef glMultiTexCoord2hvNV #define glMultiTexCoord2hvNV (gl.MultiTexCoord2hvNV) #undef glMultiTexCoord3hNV #define glMultiTexCoord3hNV (gl.MultiTexCoord3hNV) #undef glMultiTexCoord3hvNV #define glMultiTexCoord3hvNV (gl.MultiTexCoord3hvNV) #undef glMultiTexCoord4hNV #define glMultiTexCoord4hNV (gl.MultiTexCoord4hNV) #undef glMultiTexCoord4hvNV #define glMultiTexCoord4hvNV (gl.MultiTexCoord4hvNV) #undef glFogCoordhNV #define glFogCoordhNV (gl.FogCoordhNV) #undef glFogCoordhvNV #define glFogCoordhvNV (gl.FogCoordhvNV) #undef glSecondaryColor3hNV #define glSecondaryColor3hNV (gl.SecondaryColor3hNV) #undef glSecondaryColor3hvNV #define glSecondaryColor3hvNV (gl.SecondaryColor3hvNV) #undef glVertexWeighthNV #define glVertexWeighthNV (gl.VertexWeighthNV) #undef glVertexWeighthvNV #define glVertexWeighthvNV (gl.VertexWeighthvNV) #undef glVertexAttrib1hNV #define glVertexAttrib1hNV (gl.VertexAttrib1hNV) #undef glVertexAttrib1hvNV #define glVertexAttrib1hvNV (gl.VertexAttrib1hvNV) #undef glVertexAttrib2hNV #define glVertexAttrib2hNV (gl.VertexAttrib2hNV) #undef glVertexAttrib2hvNV #define glVertexAttrib2hvNV (gl.VertexAttrib2hvNV) #undef glVertexAttrib3hNV #define glVertexAttrib3hNV (gl.VertexAttrib3hNV) #undef glVertexAttrib3hvNV #define glVertexAttrib3hvNV (gl.VertexAttrib3hvNV) #undef glVertexAttrib4hNV #define glVertexAttrib4hNV (gl.VertexAttrib4hNV) #undef glVertexAttrib4hvNV #define glVertexAttrib4hvNV (gl.VertexAttrib4hvNV) #undef glVertexAttribs1hvNV #define glVertexAttribs1hvNV (gl.VertexAttribs1hvNV) #undef glVertexAttribs2hvNV #define glVertexAttribs2hvNV (gl.VertexAttribs2hvNV) #undef glVertexAttribs3hvNV #define glVertexAttribs3hvNV (gl.VertexAttribs3hvNV) #undef glVertexAttribs4hvNV #define glVertexAttribs4hvNV (gl.VertexAttribs4hvNV) #undef glPixelDataRangeNV #define glPixelDataRangeNV (gl.PixelDataRangeNV) #undef glFlushPixelDataRangeNV #define glFlushPixelDataRangeNV (gl.FlushPixelDataRangeNV) #undef glPrimitiveRestartNV #define glPrimitiveRestartNV (gl.PrimitiveRestartNV) #undef glPrimitiveRestartIndexNV #define glPrimitiveRestartIndexNV (gl.PrimitiveRestartIndexNV) #undef glMapObjectBufferATI #define glMapObjectBufferATI (gl.MapObjectBufferATI) #undef glUnmapObjectBufferATI #define glUnmapObjectBufferATI (gl.UnmapObjectBufferATI) #undef glStencilOpSeparateATI #define glStencilOpSeparateATI (gl.StencilOpSeparateATI) #undef glStencilFuncSeparateATI #define glStencilFuncSeparateATI (gl.StencilFuncSeparateATI) #undef glVertexAttribArrayObjectATI #define glVertexAttribArrayObjectATI (gl.VertexAttribArrayObjectATI) #undef glGetVertexAttribArrayObjectfvATI #define glGetVertexAttribArrayObjectfvATI (gl.GetVertexAttribArrayObjectfvATI) #undef glGetVertexAttribArrayObjectivATI #define glGetVertexAttribArrayObjectivATI (gl.GetVertexAttribArrayObjectivATI) #undef glDepthBoundsEXT #define glDepthBoundsEXT (gl.DepthBoundsEXT) #undef glBlendEquationSeparateEXT #define glBlendEquationSeparateEXT (gl.BlendEquationSeparateEXT) #undef OSMesaColorClamp #define OSMesaColorClamp (gl.OSMesaColorClamp) #undef OSMesaPostprocess #define OSMesaPostprocess (gl.OSMesaPostprocess) #undef OSMesaCreateLDG #define OSMesaCreateLDG (gl.OSMesaCreateLDG) #undef OSMesaDestroyLDG #define OSMesaDestroyLDG (gl.OSMesaDestroyLDG) #undef max_width #define max_width (gl.max_width) #undef max_height #define max_height (gl.max_height) #undef information #define information (gl.information) #undef exception_error #define exception_error (gl.exception_error) #undef gluLookAtf #define gluLookAtf (gl.gluLookAtf) #undef glFrustumf #define glFrustumf (gl.Frustumf) #undef glOrthof #define glOrthof (gl.Orthof) #undef swapbuffer #define swapbuffer (gl.swapbuffer) #undef gluLookAt #define gluLookAt (gl.gluLookAt) #undef glAccumxOES #define glAccumxOES (gl.AccumxOES) #undef glActiveProgramEXT #define glActiveProgramEXT (gl.ActiveProgramEXT) #undef glActiveShaderProgram #define glActiveShaderProgram (gl.ActiveShaderProgram) #undef glActiveVaryingNV #define glActiveVaryingNV (gl.ActiveVaryingNV) #undef glAddSwapHintRectWIN #define glAddSwapHintRectWIN (gl.AddSwapHintRectWIN) #undef glAlphaFuncxOES #define glAlphaFuncxOES (gl.AlphaFuncxOES) #undef glAttachShader #define glAttachShader (gl.AttachShader) #undef glBeginConditionalRender #define glBeginConditionalRender (gl.BeginConditionalRender) #undef glBeginConditionalRenderNV #define glBeginConditionalRenderNV (gl.BeginConditionalRenderNV) #undef glBeginConditionalRenderNVX #define glBeginConditionalRenderNVX (gl.BeginConditionalRenderNVX) #undef glBeginPerfMonitorAMD #define glBeginPerfMonitorAMD (gl.BeginPerfMonitorAMD) #undef glBeginPerfQueryINTEL #define glBeginPerfQueryINTEL (gl.BeginPerfQueryINTEL) #undef glBeginQueryIndexed #define glBeginQueryIndexed (gl.BeginQueryIndexed) #undef glBeginTransformFeedback #define glBeginTransformFeedback (gl.BeginTransformFeedback) #undef glBeginTransformFeedbackEXT #define glBeginTransformFeedbackEXT (gl.BeginTransformFeedbackEXT) #undef glBeginTransformFeedbackNV #define glBeginTransformFeedbackNV (gl.BeginTransformFeedbackNV) #undef glBeginVideoCaptureNV #define glBeginVideoCaptureNV (gl.BeginVideoCaptureNV) #undef glBindAttribLocation #define glBindAttribLocation (gl.BindAttribLocation) #undef glBindBufferBase #define glBindBufferBase (gl.BindBufferBase) #undef glBindBufferBaseEXT #define glBindBufferBaseEXT (gl.BindBufferBaseEXT) #undef glBindBufferBaseNV #define glBindBufferBaseNV (gl.BindBufferBaseNV) #undef glBindBufferOffsetEXT #define glBindBufferOffsetEXT (gl.BindBufferOffsetEXT) #undef glBindBufferOffsetNV #define glBindBufferOffsetNV (gl.BindBufferOffsetNV) #undef glBindBufferRange #define glBindBufferRange (gl.BindBufferRange) #undef glBindBufferRangeEXT #define glBindBufferRangeEXT (gl.BindBufferRangeEXT) #undef glBindBufferRangeNV #define glBindBufferRangeNV (gl.BindBufferRangeNV) #undef glBindBuffersBase #define glBindBuffersBase (gl.BindBuffersBase) #undef glBindBuffersRange #define glBindBuffersRange (gl.BindBuffersRange) #undef glBindFragDataLocation #define glBindFragDataLocation (gl.BindFragDataLocation) #undef glBindFragDataLocationEXT #define glBindFragDataLocationEXT (gl.BindFragDataLocationEXT) #undef glBindFragDataLocationIndexed #define glBindFragDataLocationIndexed (gl.BindFragDataLocationIndexed) #undef glBindFramebuffer #define glBindFramebuffer (gl.BindFramebuffer) #undef glBindFramebufferEXT #define glBindFramebufferEXT (gl.BindFramebufferEXT) #undef glBindImageTexture #define glBindImageTexture (gl.BindImageTexture) #undef glBindImageTextureEXT #define glBindImageTextureEXT (gl.BindImageTextureEXT) #undef glBindImageTextures #define glBindImageTextures (gl.BindImageTextures) #undef glBindMultiTextureEXT #define glBindMultiTextureEXT (gl.BindMultiTextureEXT) #undef glBindProgramPipeline #define glBindProgramPipeline (gl.BindProgramPipeline) #undef glBindRenderbuffer #define glBindRenderbuffer (gl.BindRenderbuffer) #undef glBindRenderbufferEXT #define glBindRenderbufferEXT (gl.BindRenderbufferEXT) #undef glBindSampler #define glBindSampler (gl.BindSampler) #undef glBindSamplers #define glBindSamplers (gl.BindSamplers) #undef glBindTextures #define glBindTextures (gl.BindTextures) #undef glBindTransformFeedback #define glBindTransformFeedback (gl.BindTransformFeedback) #undef glBindTransformFeedbackNV #define glBindTransformFeedbackNV (gl.BindTransformFeedbackNV) #undef glBindVertexArray #define glBindVertexArray (gl.BindVertexArray) #undef glBindVertexBuffer #define glBindVertexBuffer (gl.BindVertexBuffer) #undef glBindVertexBuffers #define glBindVertexBuffers (gl.BindVertexBuffers) #undef glBindVideoCaptureStreamBufferNV #define glBindVideoCaptureStreamBufferNV (gl.BindVideoCaptureStreamBufferNV) #undef glBindVideoCaptureStreamTextureNV #define glBindVideoCaptureStreamTextureNV (gl.BindVideoCaptureStreamTextureNV) #undef glBitmapxOES #define glBitmapxOES (gl.BitmapxOES) #undef glBlendBarrierNV #define glBlendBarrierNV (gl.BlendBarrierNV) #undef glBlendColorxOES #define glBlendColorxOES (gl.BlendColorxOES) #undef glBlendEquationIndexedAMD #define glBlendEquationIndexedAMD (gl.BlendEquationIndexedAMD) #undef glBlendEquationSeparate #define glBlendEquationSeparate (gl.BlendEquationSeparate) #undef glBlendEquationSeparateIndexedAMD #define glBlendEquationSeparateIndexedAMD (gl.BlendEquationSeparateIndexedAMD) #undef glBlendEquationSeparatei #define glBlendEquationSeparatei (gl.BlendEquationSeparatei) #undef glBlendEquationSeparateiARB #define glBlendEquationSeparateiARB (gl.BlendEquationSeparateiARB) #undef glBlendEquationi #define glBlendEquationi (gl.BlendEquationi) #undef glBlendEquationiARB #define glBlendEquationiARB (gl.BlendEquationiARB) #undef glBlendFuncIndexedAMD #define glBlendFuncIndexedAMD (gl.BlendFuncIndexedAMD) #undef glBlendFuncSeparateIndexedAMD #define glBlendFuncSeparateIndexedAMD (gl.BlendFuncSeparateIndexedAMD) #undef glBlendFuncSeparatei #define glBlendFuncSeparatei (gl.BlendFuncSeparatei) #undef glBlendFuncSeparateiARB #define glBlendFuncSeparateiARB (gl.BlendFuncSeparateiARB) #undef glBlendFunci #define glBlendFunci (gl.BlendFunci) #undef glBlendFunciARB #define glBlendFunciARB (gl.BlendFunciARB) #undef glBlendParameteriNV #define glBlendParameteriNV (gl.BlendParameteriNV) #undef glBlitFramebuffer #define glBlitFramebuffer (gl.BlitFramebuffer) #undef glBlitFramebufferEXT #define glBlitFramebufferEXT (gl.BlitFramebufferEXT) #undef glBufferAddressRangeNV #define glBufferAddressRangeNV (gl.BufferAddressRangeNV) #undef glBufferParameteriAPPLE #define glBufferParameteriAPPLE (gl.BufferParameteriAPPLE) #undef glBufferStorage #define glBufferStorage (gl.BufferStorage) #undef glCheckFramebufferStatus #define glCheckFramebufferStatus (gl.CheckFramebufferStatus) #undef glCheckFramebufferStatusEXT #define glCheckFramebufferStatusEXT (gl.CheckFramebufferStatusEXT) #undef glCheckNamedFramebufferStatusEXT #define glCheckNamedFramebufferStatusEXT (gl.CheckNamedFramebufferStatusEXT) #undef glClampColor #define glClampColor (gl.ClampColor) #undef glClampColorARB #define glClampColorARB (gl.ClampColorARB) #undef glClearAccumxOES #define glClearAccumxOES (gl.ClearAccumxOES) #undef glClearBufferData #define glClearBufferData (gl.ClearBufferData) #undef glClearBufferSubData #define glClearBufferSubData (gl.ClearBufferSubData) #undef glClearBufferfi #define glClearBufferfi (gl.ClearBufferfi) #undef glClearBufferfv #define glClearBufferfv (gl.ClearBufferfv) #undef glClearBufferiv #define glClearBufferiv (gl.ClearBufferiv) #undef glClearBufferuiv #define glClearBufferuiv (gl.ClearBufferuiv) #undef glClearColorIiEXT #define glClearColorIiEXT (gl.ClearColorIiEXT) #undef glClearColorIuiEXT #define glClearColorIuiEXT (gl.ClearColorIuiEXT) #undef glClearColorxOES #define glClearColorxOES (gl.ClearColorxOES) #undef glClearDebugLogMESA #define glClearDebugLogMESA (gl.ClearDebugLogMESA) #undef glClearDepthdNV #define glClearDepthdNV (gl.ClearDepthdNV) #undef glClearDepthf #define glClearDepthf (gl.ClearDepthf) #undef glClearDepthfOES #define glClearDepthfOES (gl.ClearDepthfOES) #undef glClearDepthxOES #define glClearDepthxOES (gl.ClearDepthxOES) #undef glClearNamedBufferDataEXT #define glClearNamedBufferDataEXT (gl.ClearNamedBufferDataEXT) #undef glClearNamedBufferSubDataEXT #define glClearNamedBufferSubDataEXT (gl.ClearNamedBufferSubDataEXT) #undef glClearTexImage #define glClearTexImage (gl.ClearTexImage) #undef glClearTexSubImage #define glClearTexSubImage (gl.ClearTexSubImage) #undef glClientAttribDefaultEXT #define glClientAttribDefaultEXT (gl.ClientAttribDefaultEXT) #undef glClientWaitSync #define glClientWaitSync (gl.ClientWaitSync) #undef glClipPlanefOES #define glClipPlanefOES (gl.ClipPlanefOES) #undef glClipPlanexOES #define glClipPlanexOES (gl.ClipPlanexOES) #undef glColor3xOES #define glColor3xOES (gl.Color3xOES) #undef glColor3xvOES #define glColor3xvOES (gl.Color3xvOES) #undef glColor4xOES #define glColor4xOES (gl.Color4xOES) #undef glColor4xvOES #define glColor4xvOES (gl.Color4xvOES) #undef glColorFormatNV #define glColorFormatNV (gl.ColorFormatNV) #undef glColorMaskIndexedEXT #define glColorMaskIndexedEXT (gl.ColorMaskIndexedEXT) #undef glColorMaski #define glColorMaski (gl.ColorMaski) #undef glColorP3ui #define glColorP3ui (gl.ColorP3ui) #undef glColorP3uiv #define glColorP3uiv (gl.ColorP3uiv) #undef glColorP4ui #define glColorP4ui (gl.ColorP4ui) #undef glColorP4uiv #define glColorP4uiv (gl.ColorP4uiv) #undef glCompileShader #define glCompileShader (gl.CompileShader) #undef glCompileShaderIncludeARB #define glCompileShaderIncludeARB (gl.CompileShaderIncludeARB) #undef glCompressedMultiTexImage1DEXT #define glCompressedMultiTexImage1DEXT (gl.CompressedMultiTexImage1DEXT) #undef glCompressedMultiTexImage2DEXT #define glCompressedMultiTexImage2DEXT (gl.CompressedMultiTexImage2DEXT) #undef glCompressedMultiTexImage3DEXT #define glCompressedMultiTexImage3DEXT (gl.CompressedMultiTexImage3DEXT) #undef glCompressedMultiTexSubImage1DEXT #define glCompressedMultiTexSubImage1DEXT (gl.CompressedMultiTexSubImage1DEXT) #undef glCompressedMultiTexSubImage2DEXT #define glCompressedMultiTexSubImage2DEXT (gl.CompressedMultiTexSubImage2DEXT) #undef glCompressedMultiTexSubImage3DEXT #define glCompressedMultiTexSubImage3DEXT (gl.CompressedMultiTexSubImage3DEXT) #undef glCompressedTextureImage1DEXT #define glCompressedTextureImage1DEXT (gl.CompressedTextureImage1DEXT) #undef glCompressedTextureImage2DEXT #define glCompressedTextureImage2DEXT (gl.CompressedTextureImage2DEXT) #undef glCompressedTextureImage3DEXT #define glCompressedTextureImage3DEXT (gl.CompressedTextureImage3DEXT) #undef glCompressedTextureSubImage1DEXT #define glCompressedTextureSubImage1DEXT (gl.CompressedTextureSubImage1DEXT) #undef glCompressedTextureSubImage2DEXT #define glCompressedTextureSubImage2DEXT (gl.CompressedTextureSubImage2DEXT) #undef glCompressedTextureSubImage3DEXT #define glCompressedTextureSubImage3DEXT (gl.CompressedTextureSubImage3DEXT) #undef glConvolutionParameterxOES #define glConvolutionParameterxOES (gl.ConvolutionParameterxOES) #undef glConvolutionParameterxvOES #define glConvolutionParameterxvOES (gl.ConvolutionParameterxvOES) #undef glCopyBufferSubData #define glCopyBufferSubData (gl.CopyBufferSubData) #undef glCopyImageSubData #define glCopyImageSubData (gl.CopyImageSubData) #undef glCopyImageSubDataNV #define glCopyImageSubDataNV (gl.CopyImageSubDataNV) #undef glCopyMultiTexImage1DEXT #define glCopyMultiTexImage1DEXT (gl.CopyMultiTexImage1DEXT) #undef glCopyMultiTexImage2DEXT #define glCopyMultiTexImage2DEXT (gl.CopyMultiTexImage2DEXT) #undef glCopyMultiTexSubImage1DEXT #define glCopyMultiTexSubImage1DEXT (gl.CopyMultiTexSubImage1DEXT) #undef glCopyMultiTexSubImage2DEXT #define glCopyMultiTexSubImage2DEXT (gl.CopyMultiTexSubImage2DEXT) #undef glCopyMultiTexSubImage3DEXT #define glCopyMultiTexSubImage3DEXT (gl.CopyMultiTexSubImage3DEXT) #undef glCopyPathNV #define glCopyPathNV (gl.CopyPathNV) #undef glCopyTextureImage1DEXT #define glCopyTextureImage1DEXT (gl.CopyTextureImage1DEXT) #undef glCopyTextureImage2DEXT #define glCopyTextureImage2DEXT (gl.CopyTextureImage2DEXT) #undef glCopyTextureSubImage1DEXT #define glCopyTextureSubImage1DEXT (gl.CopyTextureSubImage1DEXT) #undef glCopyTextureSubImage2DEXT #define glCopyTextureSubImage2DEXT (gl.CopyTextureSubImage2DEXT) #undef glCopyTextureSubImage3DEXT #define glCopyTextureSubImage3DEXT (gl.CopyTextureSubImage3DEXT) #undef glCoverFillPathInstancedNV #define glCoverFillPathInstancedNV (gl.CoverFillPathInstancedNV) #undef glCoverFillPathNV #define glCoverFillPathNV (gl.CoverFillPathNV) #undef glCoverStrokePathInstancedNV #define glCoverStrokePathInstancedNV (gl.CoverStrokePathInstancedNV) #undef glCoverStrokePathNV #define glCoverStrokePathNV (gl.CoverStrokePathNV) #undef glCreateDebugObjectMESA #define glCreateDebugObjectMESA (gl.CreateDebugObjectMESA) #undef glCreatePerfQueryINTEL #define glCreatePerfQueryINTEL (gl.CreatePerfQueryINTEL) #undef glCreateProgram #define glCreateProgram (gl.CreateProgram) #undef glCreateShader #define glCreateShader (gl.CreateShader) #undef glCreateShaderProgramEXT #define glCreateShaderProgramEXT (gl.CreateShaderProgramEXT) #undef glCreateShaderProgramv #define glCreateShaderProgramv (gl.CreateShaderProgramv) #undef glCreateSyncFromCLeventARB #define glCreateSyncFromCLeventARB (gl.CreateSyncFromCLeventARB) #undef glDebugMessageCallback #define glDebugMessageCallback (gl.DebugMessageCallback) #undef glDebugMessageCallbackAMD #define glDebugMessageCallbackAMD (gl.DebugMessageCallbackAMD) #undef glDebugMessageCallbackARB #define glDebugMessageCallbackARB (gl.DebugMessageCallbackARB) #undef glDebugMessageControl #define glDebugMessageControl (gl.DebugMessageControl) #undef glDebugMessageControlARB #define glDebugMessageControlARB (gl.DebugMessageControlARB) #undef glDebugMessageEnableAMD #define glDebugMessageEnableAMD (gl.DebugMessageEnableAMD) #undef glDebugMessageInsert #define glDebugMessageInsert (gl.DebugMessageInsert) #undef glDebugMessageInsertAMD #define glDebugMessageInsertAMD (gl.DebugMessageInsertAMD) #undef glDebugMessageInsertARB #define glDebugMessageInsertARB (gl.DebugMessageInsertARB) #undef glDeleteFramebuffers #define glDeleteFramebuffers (gl.DeleteFramebuffers) #undef glDeleteFramebuffersEXT #define glDeleteFramebuffersEXT (gl.DeleteFramebuffersEXT) #undef glDeleteNamedStringARB #define glDeleteNamedStringARB (gl.DeleteNamedStringARB) #undef glDeleteNamesAMD #define glDeleteNamesAMD (gl.DeleteNamesAMD) #undef glDeleteObjectBufferATI #define glDeleteObjectBufferATI (gl.DeleteObjectBufferATI) #undef glDeletePathsNV #define glDeletePathsNV (gl.DeletePathsNV) #undef glDeletePerfMonitorsAMD #define glDeletePerfMonitorsAMD (gl.DeletePerfMonitorsAMD) #undef glDeletePerfQueryINTEL #define glDeletePerfQueryINTEL (gl.DeletePerfQueryINTEL) #undef glDeleteProgram #define glDeleteProgram (gl.DeleteProgram) #undef glDeleteProgramPipelines #define glDeleteProgramPipelines (gl.DeleteProgramPipelines) #undef glDeleteRenderbuffers #define glDeleteRenderbuffers (gl.DeleteRenderbuffers) #undef glDeleteRenderbuffersEXT #define glDeleteRenderbuffersEXT (gl.DeleteRenderbuffersEXT) #undef glDeleteSamplers #define glDeleteSamplers (gl.DeleteSamplers) #undef glDeleteShader #define glDeleteShader (gl.DeleteShader) #undef glDeleteSync #define glDeleteSync (gl.DeleteSync) #undef glDeleteTransformFeedbacks #define glDeleteTransformFeedbacks (gl.DeleteTransformFeedbacks) #undef glDeleteTransformFeedbacksNV #define glDeleteTransformFeedbacksNV (gl.DeleteTransformFeedbacksNV) #undef glDeleteVertexArrays #define glDeleteVertexArrays (gl.DeleteVertexArrays) #undef glDepthBoundsdNV #define glDepthBoundsdNV (gl.DepthBoundsdNV) #undef glDepthRangeArrayv #define glDepthRangeArrayv (gl.DepthRangeArrayv) #undef glDepthRangeIndexed #define glDepthRangeIndexed (gl.DepthRangeIndexed) #undef glDepthRangedNV #define glDepthRangedNV (gl.DepthRangedNV) #undef glDepthRangef #define glDepthRangef (gl.DepthRangef) #undef glDepthRangefOES #define glDepthRangefOES (gl.DepthRangefOES) #undef glDepthRangexOES #define glDepthRangexOES (gl.DepthRangexOES) #undef glDetachShader #define glDetachShader (gl.DetachShader) #undef glDisableClientStateIndexedEXT #define glDisableClientStateIndexedEXT (gl.DisableClientStateIndexedEXT) #undef glDisableClientStateiEXT #define glDisableClientStateiEXT (gl.DisableClientStateiEXT) #undef glDisableIndexedEXT #define glDisableIndexedEXT (gl.DisableIndexedEXT) #undef glDisableVertexArrayAttribEXT #define glDisableVertexArrayAttribEXT (gl.DisableVertexArrayAttribEXT) #undef glDisableVertexArrayEXT #define glDisableVertexArrayEXT (gl.DisableVertexArrayEXT) #undef glDisableVertexAttribAPPLE #define glDisableVertexAttribAPPLE (gl.DisableVertexAttribAPPLE) #undef glDisableVertexAttribArray #define glDisableVertexAttribArray (gl.DisableVertexAttribArray) #undef glDisablei #define glDisablei (gl.Disablei) #undef glDispatchCompute #define glDispatchCompute (gl.DispatchCompute) #undef glDispatchComputeGroupSizeARB #define glDispatchComputeGroupSizeARB (gl.DispatchComputeGroupSizeARB) #undef glDispatchComputeIndirect #define glDispatchComputeIndirect (gl.DispatchComputeIndirect) #undef glDrawArraysIndirect #define glDrawArraysIndirect (gl.DrawArraysIndirect) #undef glDrawArraysInstanced #define glDrawArraysInstanced (gl.DrawArraysInstanced) #undef glDrawArraysInstancedARB #define glDrawArraysInstancedARB (gl.DrawArraysInstancedARB) #undef glDrawArraysInstancedBaseInstance #define glDrawArraysInstancedBaseInstance (gl.DrawArraysInstancedBaseInstance) #undef glDrawArraysInstancedEXT #define glDrawArraysInstancedEXT (gl.DrawArraysInstancedEXT) #undef glDrawBuffers #define glDrawBuffers (gl.DrawBuffers) #undef glDrawElementsBaseVertex #define glDrawElementsBaseVertex (gl.DrawElementsBaseVertex) #undef glDrawElementsIndirect #define glDrawElementsIndirect (gl.DrawElementsIndirect) #undef glDrawElementsInstanced #define glDrawElementsInstanced (gl.DrawElementsInstanced) #undef glDrawElementsInstancedARB #define glDrawElementsInstancedARB (gl.DrawElementsInstancedARB) #undef glDrawElementsInstancedBaseInstance #define glDrawElementsInstancedBaseInstance (gl.DrawElementsInstancedBaseInstance) #undef glDrawElementsInstancedBaseVertex #define glDrawElementsInstancedBaseVertex (gl.DrawElementsInstancedBaseVertex) #undef glDrawElementsInstancedBaseVertexBaseInstance #define glDrawElementsInstancedBaseVertexBaseInstance (gl.DrawElementsInstancedBaseVertexBaseInstance) #undef glDrawElementsInstancedEXT #define glDrawElementsInstancedEXT (gl.DrawElementsInstancedEXT) #undef glDrawRangeElementsBaseVertex #define glDrawRangeElementsBaseVertex (gl.DrawRangeElementsBaseVertex) #undef glDrawTextureNV #define glDrawTextureNV (gl.DrawTextureNV) #undef glDrawTransformFeedback #define glDrawTransformFeedback (gl.DrawTransformFeedback) #undef glDrawTransformFeedbackInstanced #define glDrawTransformFeedbackInstanced (gl.DrawTransformFeedbackInstanced) #undef glDrawTransformFeedbackNV #define glDrawTransformFeedbackNV (gl.DrawTransformFeedbackNV) #undef glDrawTransformFeedbackStream #define glDrawTransformFeedbackStream (gl.DrawTransformFeedbackStream) #undef glDrawTransformFeedbackStreamInstanced #define glDrawTransformFeedbackStreamInstanced (gl.DrawTransformFeedbackStreamInstanced) #undef glEdgeFlagFormatNV #define glEdgeFlagFormatNV (gl.EdgeFlagFormatNV) #undef glEnableClientStateIndexedEXT #define glEnableClientStateIndexedEXT (gl.EnableClientStateIndexedEXT) #undef glEnableClientStateiEXT #define glEnableClientStateiEXT (gl.EnableClientStateiEXT) #undef glEnableIndexedEXT #define glEnableIndexedEXT (gl.EnableIndexedEXT) #undef glEnableVertexArrayAttribEXT #define glEnableVertexArrayAttribEXT (gl.EnableVertexArrayAttribEXT) #undef glEnableVertexArrayEXT #define glEnableVertexArrayEXT (gl.EnableVertexArrayEXT) #undef glEnableVertexAttribAPPLE #define glEnableVertexAttribAPPLE (gl.EnableVertexAttribAPPLE) #undef glEnableVertexAttribArray #define glEnableVertexAttribArray (gl.EnableVertexAttribArray) #undef glEnablei #define glEnablei (gl.Enablei) #undef glEndConditionalRender #define glEndConditionalRender (gl.EndConditionalRender) #undef glEndConditionalRenderNV #define glEndConditionalRenderNV (gl.EndConditionalRenderNV) #undef glEndConditionalRenderNVX #define glEndConditionalRenderNVX (gl.EndConditionalRenderNVX) #undef glEndPerfMonitorAMD #define glEndPerfMonitorAMD (gl.EndPerfMonitorAMD) #undef glEndPerfQueryINTEL #define glEndPerfQueryINTEL (gl.EndPerfQueryINTEL) #undef glEndQueryIndexed #define glEndQueryIndexed (gl.EndQueryIndexed) #undef glEndTransformFeedback #define glEndTransformFeedback (gl.EndTransformFeedback) #undef glEndTransformFeedbackEXT #define glEndTransformFeedbackEXT (gl.EndTransformFeedbackEXT) #undef glEndTransformFeedbackNV #define glEndTransformFeedbackNV (gl.EndTransformFeedbackNV) #undef glEndVideoCaptureNV #define glEndVideoCaptureNV (gl.EndVideoCaptureNV) #undef glEvalCoord1xOES #define glEvalCoord1xOES (gl.EvalCoord1xOES) #undef glEvalCoord1xvOES #define glEvalCoord1xvOES (gl.EvalCoord1xvOES) #undef glEvalCoord2xOES #define glEvalCoord2xOES (gl.EvalCoord2xOES) #undef glEvalCoord2xvOES #define glEvalCoord2xvOES (gl.EvalCoord2xvOES) #undef glFeedbackBufferxOES #define glFeedbackBufferxOES (gl.FeedbackBufferxOES) #undef glFenceSync #define glFenceSync (gl.FenceSync) #undef glFinishRenderAPPLE #define glFinishRenderAPPLE (gl.FinishRenderAPPLE) #undef glFlushMappedBufferRange #define glFlushMappedBufferRange (gl.FlushMappedBufferRange) #undef glFlushMappedBufferRangeAPPLE #define glFlushMappedBufferRangeAPPLE (gl.FlushMappedBufferRangeAPPLE) #undef glFlushMappedNamedBufferRangeEXT #define glFlushMappedNamedBufferRangeEXT (gl.FlushMappedNamedBufferRangeEXT) #undef glFlushRenderAPPLE #define glFlushRenderAPPLE (gl.FlushRenderAPPLE) #undef glFlushStaticDataIBM #define glFlushStaticDataIBM (gl.FlushStaticDataIBM) #undef glFogCoordFormatNV #define glFogCoordFormatNV (gl.FogCoordFormatNV) #undef glFogxOES #define glFogxOES (gl.FogxOES) #undef glFogxvOES #define glFogxvOES (gl.FogxvOES) #undef glFrameTerminatorGREMEDY #define glFrameTerminatorGREMEDY (gl.FrameTerminatorGREMEDY) #undef glFramebufferDrawBufferEXT #define glFramebufferDrawBufferEXT (gl.FramebufferDrawBufferEXT) #undef glFramebufferDrawBuffersEXT #define glFramebufferDrawBuffersEXT (gl.FramebufferDrawBuffersEXT) #undef glFramebufferParameteri #define glFramebufferParameteri (gl.FramebufferParameteri) #undef glFramebufferReadBufferEXT #define glFramebufferReadBufferEXT (gl.FramebufferReadBufferEXT) #undef glFramebufferRenderbuffer #define glFramebufferRenderbuffer (gl.FramebufferRenderbuffer) #undef glFramebufferRenderbufferEXT #define glFramebufferRenderbufferEXT (gl.FramebufferRenderbufferEXT) #undef glFramebufferTexture #define glFramebufferTexture (gl.FramebufferTexture) #undef glFramebufferTexture1D #define glFramebufferTexture1D (gl.FramebufferTexture1D) #undef glFramebufferTexture1DEXT #define glFramebufferTexture1DEXT (gl.FramebufferTexture1DEXT) #undef glFramebufferTexture2D #define glFramebufferTexture2D (gl.FramebufferTexture2D) #undef glFramebufferTexture2DEXT #define glFramebufferTexture2DEXT (gl.FramebufferTexture2DEXT) #undef glFramebufferTexture3D #define glFramebufferTexture3D (gl.FramebufferTexture3D) #undef glFramebufferTexture3DEXT #define glFramebufferTexture3DEXT (gl.FramebufferTexture3DEXT) #undef glFramebufferTextureARB #define glFramebufferTextureARB (gl.FramebufferTextureARB) #undef glFramebufferTextureEXT #define glFramebufferTextureEXT (gl.FramebufferTextureEXT) #undef glFramebufferTextureFaceARB #define glFramebufferTextureFaceARB (gl.FramebufferTextureFaceARB) #undef glFramebufferTextureFaceEXT #define glFramebufferTextureFaceEXT (gl.FramebufferTextureFaceEXT) #undef glFramebufferTextureLayer #define glFramebufferTextureLayer (gl.FramebufferTextureLayer) #undef glFramebufferTextureLayerARB #define glFramebufferTextureLayerARB (gl.FramebufferTextureLayerARB) #undef glFramebufferTextureLayerEXT #define glFramebufferTextureLayerEXT (gl.FramebufferTextureLayerEXT) #undef glFrustumfOES #define glFrustumfOES (gl.FrustumfOES) #undef glFrustumxOES #define glFrustumxOES (gl.FrustumxOES) #undef glGenFramebuffers #define glGenFramebuffers (gl.GenFramebuffers) #undef glGenFramebuffersEXT #define glGenFramebuffersEXT (gl.GenFramebuffersEXT) #undef glGenNamesAMD #define glGenNamesAMD (gl.GenNamesAMD) #undef glGenPathsNV #define glGenPathsNV (gl.GenPathsNV) #undef glGenPerfMonitorsAMD #define glGenPerfMonitorsAMD (gl.GenPerfMonitorsAMD) #undef glGenProgramPipelines #define glGenProgramPipelines (gl.GenProgramPipelines) #undef glGenRenderbuffers #define glGenRenderbuffers (gl.GenRenderbuffers) #undef glGenRenderbuffersEXT #define glGenRenderbuffersEXT (gl.GenRenderbuffersEXT) #undef glGenSamplers #define glGenSamplers (gl.GenSamplers) #undef glGenTransformFeedbacks #define glGenTransformFeedbacks (gl.GenTransformFeedbacks) #undef glGenTransformFeedbacksNV #define glGenTransformFeedbacksNV (gl.GenTransformFeedbacksNV) #undef glGenVertexArrays #define glGenVertexArrays (gl.GenVertexArrays) #undef glGenerateMipmap #define glGenerateMipmap (gl.GenerateMipmap) #undef glGenerateMipmapEXT #define glGenerateMipmapEXT (gl.GenerateMipmapEXT) #undef glGenerateMultiTexMipmapEXT #define glGenerateMultiTexMipmapEXT (gl.GenerateMultiTexMipmapEXT) #undef glGenerateTextureMipmapEXT #define glGenerateTextureMipmapEXT (gl.GenerateTextureMipmapEXT) #undef glGetActiveAtomicCounterBufferiv #define glGetActiveAtomicCounterBufferiv (gl.GetActiveAtomicCounterBufferiv) #undef glGetActiveAttrib #define glGetActiveAttrib (gl.GetActiveAttrib) #undef glGetActiveSubroutineName #define glGetActiveSubroutineName (gl.GetActiveSubroutineName) #undef glGetActiveSubroutineUniformName #define glGetActiveSubroutineUniformName (gl.GetActiveSubroutineUniformName) #undef glGetActiveSubroutineUniformiv #define glGetActiveSubroutineUniformiv (gl.GetActiveSubroutineUniformiv) #undef glGetActiveUniform #define glGetActiveUniform (gl.GetActiveUniform) #undef glGetActiveUniformBlockIndex #define glGetActiveUniformBlockIndex (gl.GetActiveUniformBlockIndex) #undef glGetActiveUniformBlockName #define glGetActiveUniformBlockName (gl.GetActiveUniformBlockName) #undef glGetActiveUniformBlockiv #define glGetActiveUniformBlockiv (gl.GetActiveUniformBlockiv) #undef glGetActiveUniformName #define glGetActiveUniformName (gl.GetActiveUniformName) #undef glGetActiveUniformsiv #define glGetActiveUniformsiv (gl.GetActiveUniformsiv) #undef glGetActiveVaryingNV #define glGetActiveVaryingNV (gl.GetActiveVaryingNV) #undef glGetAttachedShaders #define glGetAttachedShaders (gl.GetAttachedShaders) #undef glGetAttribLocation #define glGetAttribLocation (gl.GetAttribLocation) #undef glGetBooleanIndexedvEXT #define glGetBooleanIndexedvEXT (gl.GetBooleanIndexedvEXT) #undef glGetBooleani_v #define glGetBooleani_v (gl.GetBooleani_v) #undef glGetBufferParameteri64v #define glGetBufferParameteri64v (gl.GetBufferParameteri64v) #undef glGetBufferParameterui64vNV #define glGetBufferParameterui64vNV (gl.GetBufferParameterui64vNV) #undef glGetClipPlanefOES #define glGetClipPlanefOES (gl.GetClipPlanefOES) #undef glGetClipPlanexOES #define glGetClipPlanexOES (gl.GetClipPlanexOES) #undef glGetCompressedMultiTexImageEXT #define glGetCompressedMultiTexImageEXT (gl.GetCompressedMultiTexImageEXT) #undef glGetCompressedTextureImageEXT #define glGetCompressedTextureImageEXT (gl.GetCompressedTextureImageEXT) #undef glGetConvolutionParameterxvOES #define glGetConvolutionParameterxvOES (gl.GetConvolutionParameterxvOES) #undef glGetDebugLogLengthMESA #define glGetDebugLogLengthMESA (gl.GetDebugLogLengthMESA) #undef glGetDebugLogMESA #define glGetDebugLogMESA (gl.GetDebugLogMESA) #undef glGetDebugMessageLog #define glGetDebugMessageLog (gl.GetDebugMessageLog) #undef glGetDebugMessageLogAMD #define glGetDebugMessageLogAMD (gl.GetDebugMessageLogAMD) #undef glGetDebugMessageLogARB #define glGetDebugMessageLogARB (gl.GetDebugMessageLogARB) #undef glGetDoubleIndexedvEXT #define glGetDoubleIndexedvEXT (gl.GetDoubleIndexedvEXT) #undef glGetDoublei_v #define glGetDoublei_v (gl.GetDoublei_v) #undef glGetDoublei_vEXT #define glGetDoublei_vEXT (gl.GetDoublei_vEXT) #undef glGetFirstPerfQueryIdINTEL #define glGetFirstPerfQueryIdINTEL (gl.GetFirstPerfQueryIdINTEL) #undef glGetFixedvOES #define glGetFixedvOES (gl.GetFixedvOES) #undef glGetFloatIndexedvEXT #define glGetFloatIndexedvEXT (gl.GetFloatIndexedvEXT) #undef glGetFloati_v #define glGetFloati_v (gl.GetFloati_v) #undef glGetFloati_vEXT #define glGetFloati_vEXT (gl.GetFloati_vEXT) #undef glGetFragDataIndex #define glGetFragDataIndex (gl.GetFragDataIndex) #undef glGetFragDataLocation #define glGetFragDataLocation (gl.GetFragDataLocation) #undef glGetFragDataLocationEXT #define glGetFragDataLocationEXT (gl.GetFragDataLocationEXT) #undef glGetFramebufferAttachmentParameteriv #define glGetFramebufferAttachmentParameteriv (gl.GetFramebufferAttachmentParameteriv) #undef glGetFramebufferAttachmentParameterivEXT #define glGetFramebufferAttachmentParameterivEXT (gl.GetFramebufferAttachmentParameterivEXT) #undef glGetFramebufferParameteriv #define glGetFramebufferParameteriv (gl.GetFramebufferParameteriv) #undef glGetFramebufferParameterivEXT #define glGetFramebufferParameterivEXT (gl.GetFramebufferParameterivEXT) #undef glGetGraphicsResetStatusARB #define glGetGraphicsResetStatusARB (gl.GetGraphicsResetStatusARB) #undef glGetHistogramParameterxvOES #define glGetHistogramParameterxvOES (gl.GetHistogramParameterxvOES) #undef glGetImageHandleARB #define glGetImageHandleARB (gl.GetImageHandleARB) #undef glGetImageHandleNV #define glGetImageHandleNV (gl.GetImageHandleNV) #undef glGetInteger64i_v #define glGetInteger64i_v (gl.GetInteger64i_v) #undef glGetInteger64v #define glGetInteger64v (gl.GetInteger64v) #undef glGetIntegerIndexedvEXT #define glGetIntegerIndexedvEXT (gl.GetIntegerIndexedvEXT) #undef glGetIntegeri_v #define glGetIntegeri_v (gl.GetIntegeri_v) #undef glGetIntegerui64i_vNV #define glGetIntegerui64i_vNV (gl.GetIntegerui64i_vNV) #undef glGetIntegerui64vNV #define glGetIntegerui64vNV (gl.GetIntegerui64vNV) #undef glGetInternalformati64v #define glGetInternalformati64v (gl.GetInternalformati64v) #undef glGetInternalformativ #define glGetInternalformativ (gl.GetInternalformativ) #undef glGetLightxOES #define glGetLightxOES (gl.GetLightxOES) #undef glGetMapxvOES #define glGetMapxvOES (gl.GetMapxvOES) #undef glGetMaterialxOES #define glGetMaterialxOES (gl.GetMaterialxOES) #undef glGetMultiTexEnvfvEXT #define glGetMultiTexEnvfvEXT (gl.GetMultiTexEnvfvEXT) #undef glGetMultiTexEnvivEXT #define glGetMultiTexEnvivEXT (gl.GetMultiTexEnvivEXT) #undef glGetMultiTexGendvEXT #define glGetMultiTexGendvEXT (gl.GetMultiTexGendvEXT) #undef glGetMultiTexGenfvEXT #define glGetMultiTexGenfvEXT (gl.GetMultiTexGenfvEXT) #undef glGetMultiTexGenivEXT #define glGetMultiTexGenivEXT (gl.GetMultiTexGenivEXT) #undef glGetMultiTexImageEXT #define glGetMultiTexImageEXT (gl.GetMultiTexImageEXT) #undef glGetMultiTexLevelParameterfvEXT #define glGetMultiTexLevelParameterfvEXT (gl.GetMultiTexLevelParameterfvEXT) #undef glGetMultiTexLevelParameterivEXT #define glGetMultiTexLevelParameterivEXT (gl.GetMultiTexLevelParameterivEXT) #undef glGetMultiTexParameterIivEXT #define glGetMultiTexParameterIivEXT (gl.GetMultiTexParameterIivEXT) #undef glGetMultiTexParameterIuivEXT #define glGetMultiTexParameterIuivEXT (gl.GetMultiTexParameterIuivEXT) #undef glGetMultiTexParameterfvEXT #define glGetMultiTexParameterfvEXT (gl.GetMultiTexParameterfvEXT) #undef glGetMultiTexParameterivEXT #define glGetMultiTexParameterivEXT (gl.GetMultiTexParameterivEXT) #undef glGetMultisamplefv #define glGetMultisamplefv (gl.GetMultisamplefv) #undef glGetMultisamplefvNV #define glGetMultisamplefvNV (gl.GetMultisamplefvNV) #undef glGetNamedBufferParameterivEXT #define glGetNamedBufferParameterivEXT (gl.GetNamedBufferParameterivEXT) #undef glGetNamedBufferParameterui64vNV #define glGetNamedBufferParameterui64vNV (gl.GetNamedBufferParameterui64vNV) #undef glGetNamedBufferPointervEXT #define glGetNamedBufferPointervEXT (gl.GetNamedBufferPointervEXT) #undef glGetNamedBufferSubDataEXT #define glGetNamedBufferSubDataEXT (gl.GetNamedBufferSubDataEXT) #undef glGetNamedFramebufferAttachmentParameterivEXT #define glGetNamedFramebufferAttachmentParameterivEXT (gl.GetNamedFramebufferAttachmentParameterivEXT) #undef glGetNamedFramebufferParameterivEXT #define glGetNamedFramebufferParameterivEXT (gl.GetNamedFramebufferParameterivEXT) #undef glGetNamedProgramLocalParameterIivEXT #define glGetNamedProgramLocalParameterIivEXT (gl.GetNamedProgramLocalParameterIivEXT) #undef glGetNamedProgramLocalParameterIuivEXT #define glGetNamedProgramLocalParameterIuivEXT (gl.GetNamedProgramLocalParameterIuivEXT) #undef glGetNamedProgramLocalParameterdvEXT #define glGetNamedProgramLocalParameterdvEXT (gl.GetNamedProgramLocalParameterdvEXT) #undef glGetNamedProgramLocalParameterfvEXT #define glGetNamedProgramLocalParameterfvEXT (gl.GetNamedProgramLocalParameterfvEXT) #undef glGetNamedProgramStringEXT #define glGetNamedProgramStringEXT (gl.GetNamedProgramStringEXT) #undef glGetNamedProgramivEXT #define glGetNamedProgramivEXT (gl.GetNamedProgramivEXT) #undef glGetNamedRenderbufferParameterivEXT #define glGetNamedRenderbufferParameterivEXT (gl.GetNamedRenderbufferParameterivEXT) #undef glGetNamedStringARB #define glGetNamedStringARB (gl.GetNamedStringARB) #undef glGetNamedStringivARB #define glGetNamedStringivARB (gl.GetNamedStringivARB) #undef glGetNextPerfQueryIdINTEL #define glGetNextPerfQueryIdINTEL (gl.GetNextPerfQueryIdINTEL) #undef glGetObjectLabel #define glGetObjectLabel (gl.GetObjectLabel) #undef glGetObjectLabelEXT #define glGetObjectLabelEXT (gl.GetObjectLabelEXT) #undef glGetObjectParameterivAPPLE #define glGetObjectParameterivAPPLE (gl.GetObjectParameterivAPPLE) #undef glGetObjectPtrLabel #define glGetObjectPtrLabel (gl.GetObjectPtrLabel) #undef glGetPathColorGenfvNV #define glGetPathColorGenfvNV (gl.GetPathColorGenfvNV) #undef glGetPathColorGenivNV #define glGetPathColorGenivNV (gl.GetPathColorGenivNV) #undef glGetPathCommandsNV #define glGetPathCommandsNV (gl.GetPathCommandsNV) #undef glGetPathCoordsNV #define glGetPathCoordsNV (gl.GetPathCoordsNV) #undef glGetPathDashArrayNV #define glGetPathDashArrayNV (gl.GetPathDashArrayNV) #undef glGetPathLengthNV #define glGetPathLengthNV (gl.GetPathLengthNV) #undef glGetPathMetricRangeNV #define glGetPathMetricRangeNV (gl.GetPathMetricRangeNV) #undef glGetPathMetricsNV #define glGetPathMetricsNV (gl.GetPathMetricsNV) #undef glGetPathParameterfvNV #define glGetPathParameterfvNV (gl.GetPathParameterfvNV) #undef glGetPathParameterivNV #define glGetPathParameterivNV (gl.GetPathParameterivNV) #undef glGetPathSpacingNV #define glGetPathSpacingNV (gl.GetPathSpacingNV) #undef glGetPathTexGenfvNV #define glGetPathTexGenfvNV (gl.GetPathTexGenfvNV) #undef glGetPathTexGenivNV #define glGetPathTexGenivNV (gl.GetPathTexGenivNV) #undef glGetPerfCounterInfoINTEL #define glGetPerfCounterInfoINTEL (gl.GetPerfCounterInfoINTEL) #undef glGetPerfMonitorCounterDataAMD #define glGetPerfMonitorCounterDataAMD (gl.GetPerfMonitorCounterDataAMD) #undef glGetPerfMonitorCounterInfoAMD #define glGetPerfMonitorCounterInfoAMD (gl.GetPerfMonitorCounterInfoAMD) #undef glGetPerfMonitorCounterStringAMD #define glGetPerfMonitorCounterStringAMD (gl.GetPerfMonitorCounterStringAMD) #undef glGetPerfMonitorCountersAMD #define glGetPerfMonitorCountersAMD (gl.GetPerfMonitorCountersAMD) #undef glGetPerfMonitorGroupStringAMD #define glGetPerfMonitorGroupStringAMD (gl.GetPerfMonitorGroupStringAMD) #undef glGetPerfMonitorGroupsAMD #define glGetPerfMonitorGroupsAMD (gl.GetPerfMonitorGroupsAMD) #undef glGetPerfQueryDataINTEL #define glGetPerfQueryDataINTEL (gl.GetPerfQueryDataINTEL) #undef glGetPerfQueryIdByNameINTEL #define glGetPerfQueryIdByNameINTEL (gl.GetPerfQueryIdByNameINTEL) #undef glGetPerfQueryInfoINTEL #define glGetPerfQueryInfoINTEL (gl.GetPerfQueryInfoINTEL) #undef glGetPixelMapxv #define glGetPixelMapxv (gl.GetPixelMapxv) #undef glGetPixelTransformParameterfvEXT #define glGetPixelTransformParameterfvEXT (gl.GetPixelTransformParameterfvEXT) #undef glGetPixelTransformParameterivEXT #define glGetPixelTransformParameterivEXT (gl.GetPixelTransformParameterivEXT) #undef glGetPointerIndexedvEXT #define glGetPointerIndexedvEXT (gl.GetPointerIndexedvEXT) #undef glGetPointeri_vEXT #define glGetPointeri_vEXT (gl.GetPointeri_vEXT) #undef glGetProgramBinary #define glGetProgramBinary (gl.GetProgramBinary) #undef glGetProgramEnvParameterIivNV #define glGetProgramEnvParameterIivNV (gl.GetProgramEnvParameterIivNV) #undef glGetProgramEnvParameterIuivNV #define glGetProgramEnvParameterIuivNV (gl.GetProgramEnvParameterIuivNV) #undef glGetProgramInfoLog #define glGetProgramInfoLog (gl.GetProgramInfoLog) #undef glGetProgramInterfaceiv #define glGetProgramInterfaceiv (gl.GetProgramInterfaceiv) #undef glGetProgramLocalParameterIivNV #define glGetProgramLocalParameterIivNV (gl.GetProgramLocalParameterIivNV) #undef glGetProgramLocalParameterIuivNV #define glGetProgramLocalParameterIuivNV (gl.GetProgramLocalParameterIuivNV) #undef glGetProgramPipelineInfoLog #define glGetProgramPipelineInfoLog (gl.GetProgramPipelineInfoLog) #undef glGetProgramPipelineiv #define glGetProgramPipelineiv (gl.GetProgramPipelineiv) #undef glGetProgramRegisterfvMESA #define glGetProgramRegisterfvMESA (gl.GetProgramRegisterfvMESA) #undef glGetProgramResourceIndex #define glGetProgramResourceIndex (gl.GetProgramResourceIndex) #undef glGetProgramResourceLocation #define glGetProgramResourceLocation (gl.GetProgramResourceLocation) #undef glGetProgramResourceLocationIndex #define glGetProgramResourceLocationIndex (gl.GetProgramResourceLocationIndex) #undef glGetProgramResourceName #define glGetProgramResourceName (gl.GetProgramResourceName) #undef glGetProgramResourceiv #define glGetProgramResourceiv (gl.GetProgramResourceiv) #undef glGetProgramStageiv #define glGetProgramStageiv (gl.GetProgramStageiv) #undef glGetProgramSubroutineParameteruivNV #define glGetProgramSubroutineParameteruivNV (gl.GetProgramSubroutineParameteruivNV) #undef glGetProgramiv #define glGetProgramiv (gl.GetProgramiv) #undef glGetQueryIndexediv #define glGetQueryIndexediv (gl.GetQueryIndexediv) #undef glGetQueryObjecti64v #define glGetQueryObjecti64v (gl.GetQueryObjecti64v) #undef glGetQueryObjecti64vEXT #define glGetQueryObjecti64vEXT (gl.GetQueryObjecti64vEXT) #undef glGetQueryObjectui64v #define glGetQueryObjectui64v (gl.GetQueryObjectui64v) #undef glGetQueryObjectui64vEXT #define glGetQueryObjectui64vEXT (gl.GetQueryObjectui64vEXT) #undef glGetRenderbufferParameteriv #define glGetRenderbufferParameteriv (gl.GetRenderbufferParameteriv) #undef glGetRenderbufferParameterivEXT #define glGetRenderbufferParameterivEXT (gl.GetRenderbufferParameterivEXT) #undef glGetSamplerParameterIiv #define glGetSamplerParameterIiv (gl.GetSamplerParameterIiv) #undef glGetSamplerParameterIuiv #define glGetSamplerParameterIuiv (gl.GetSamplerParameterIuiv) #undef glGetSamplerParameterfv #define glGetSamplerParameterfv (gl.GetSamplerParameterfv) #undef glGetSamplerParameteriv #define glGetSamplerParameteriv (gl.GetSamplerParameteriv) #undef glGetShaderInfoLog #define glGetShaderInfoLog (gl.GetShaderInfoLog) #undef glGetShaderPrecisionFormat #define glGetShaderPrecisionFormat (gl.GetShaderPrecisionFormat) #undef glGetShaderSource #define glGetShaderSource (gl.GetShaderSource) #undef glGetShaderiv #define glGetShaderiv (gl.GetShaderiv) #undef glGetStringi #define glGetStringi (gl.GetStringi) #undef glGetSubroutineIndex #define glGetSubroutineIndex (gl.GetSubroutineIndex) #undef glGetSubroutineUniformLocation #define glGetSubroutineUniformLocation (gl.GetSubroutineUniformLocation) #undef glGetSynciv #define glGetSynciv (gl.GetSynciv) #undef glGetTexEnvxvOES #define glGetTexEnvxvOES (gl.GetTexEnvxvOES) #undef glGetTexGenxvOES #define glGetTexGenxvOES (gl.GetTexGenxvOES) #undef glGetTexLevelParameterxvOES #define glGetTexLevelParameterxvOES (gl.GetTexLevelParameterxvOES) #undef glGetTexParameterIiv #define glGetTexParameterIiv (gl.GetTexParameterIiv) #undef glGetTexParameterIivEXT #define glGetTexParameterIivEXT (gl.GetTexParameterIivEXT) #undef glGetTexParameterIuiv #define glGetTexParameterIuiv (gl.GetTexParameterIuiv) #undef glGetTexParameterIuivEXT #define glGetTexParameterIuivEXT (gl.GetTexParameterIuivEXT) #undef glGetTexParameterPointervAPPLE #define glGetTexParameterPointervAPPLE (gl.GetTexParameterPointervAPPLE) #undef glGetTexParameterxvOES #define glGetTexParameterxvOES (gl.GetTexParameterxvOES) #undef glGetTextureHandleARB #define glGetTextureHandleARB (gl.GetTextureHandleARB) #undef glGetTextureHandleNV #define glGetTextureHandleNV (gl.GetTextureHandleNV) #undef glGetTextureImageEXT #define glGetTextureImageEXT (gl.GetTextureImageEXT) #undef glGetTextureLevelParameterfvEXT #define glGetTextureLevelParameterfvEXT (gl.GetTextureLevelParameterfvEXT) #undef glGetTextureLevelParameterivEXT #define glGetTextureLevelParameterivEXT (gl.GetTextureLevelParameterivEXT) #undef glGetTextureParameterIivEXT #define glGetTextureParameterIivEXT (gl.GetTextureParameterIivEXT) #undef glGetTextureParameterIuivEXT #define glGetTextureParameterIuivEXT (gl.GetTextureParameterIuivEXT) #undef glGetTextureParameterfvEXT #define glGetTextureParameterfvEXT (gl.GetTextureParameterfvEXT) #undef glGetTextureParameterivEXT #define glGetTextureParameterivEXT (gl.GetTextureParameterivEXT) #undef glGetTextureSamplerHandleARB #define glGetTextureSamplerHandleARB (gl.GetTextureSamplerHandleARB) #undef glGetTextureSamplerHandleNV #define glGetTextureSamplerHandleNV (gl.GetTextureSamplerHandleNV) #undef glGetTransformFeedbackVarying #define glGetTransformFeedbackVarying (gl.GetTransformFeedbackVarying) #undef glGetTransformFeedbackVaryingEXT #define glGetTransformFeedbackVaryingEXT (gl.GetTransformFeedbackVaryingEXT) #undef glGetTransformFeedbackVaryingNV #define glGetTransformFeedbackVaryingNV (gl.GetTransformFeedbackVaryingNV) #undef glGetUniformBlockIndex #define glGetUniformBlockIndex (gl.GetUniformBlockIndex) #undef glGetUniformBufferSizeEXT #define glGetUniformBufferSizeEXT (gl.GetUniformBufferSizeEXT) #undef glGetUniformIndices #define glGetUniformIndices (gl.GetUniformIndices) #undef glGetUniformLocation #define glGetUniformLocation (gl.GetUniformLocation) #undef glGetUniformOffsetEXT #define glGetUniformOffsetEXT (gl.GetUniformOffsetEXT) #undef glGetUniformSubroutineuiv #define glGetUniformSubroutineuiv (gl.GetUniformSubroutineuiv) #undef glGetUniformdv #define glGetUniformdv (gl.GetUniformdv) #undef glGetUniformfv #define glGetUniformfv (gl.GetUniformfv) #undef glGetUniformi64vNV #define glGetUniformi64vNV (gl.GetUniformi64vNV) #undef glGetUniformiv #define glGetUniformiv (gl.GetUniformiv) #undef glGetUniformui64vNV #define glGetUniformui64vNV (gl.GetUniformui64vNV) #undef glGetUniformuiv #define glGetUniformuiv (gl.GetUniformuiv) #undef glGetUniformuivEXT #define glGetUniformuivEXT (gl.GetUniformuivEXT) #undef glGetVaryingLocationNV #define glGetVaryingLocationNV (gl.GetVaryingLocationNV) #undef glGetVertexArrayIntegeri_vEXT #define glGetVertexArrayIntegeri_vEXT (gl.GetVertexArrayIntegeri_vEXT) #undef glGetVertexArrayIntegervEXT #define glGetVertexArrayIntegervEXT (gl.GetVertexArrayIntegervEXT) #undef glGetVertexArrayPointeri_vEXT #define glGetVertexArrayPointeri_vEXT (gl.GetVertexArrayPointeri_vEXT) #undef glGetVertexArrayPointervEXT #define glGetVertexArrayPointervEXT (gl.GetVertexArrayPointervEXT) #undef glGetVertexAttribIiv #define glGetVertexAttribIiv (gl.GetVertexAttribIiv) #undef glGetVertexAttribIivEXT #define glGetVertexAttribIivEXT (gl.GetVertexAttribIivEXT) #undef glGetVertexAttribIuiv #define glGetVertexAttribIuiv (gl.GetVertexAttribIuiv) #undef glGetVertexAttribIuivEXT #define glGetVertexAttribIuivEXT (gl.GetVertexAttribIuivEXT) #undef glGetVertexAttribLdv #define glGetVertexAttribLdv (gl.GetVertexAttribLdv) #undef glGetVertexAttribLdvEXT #define glGetVertexAttribLdvEXT (gl.GetVertexAttribLdvEXT) #undef glGetVertexAttribLi64vNV #define glGetVertexAttribLi64vNV (gl.GetVertexAttribLi64vNV) #undef glGetVertexAttribLui64vARB #define glGetVertexAttribLui64vARB (gl.GetVertexAttribLui64vARB) #undef glGetVertexAttribLui64vNV #define glGetVertexAttribLui64vNV (gl.GetVertexAttribLui64vNV) #undef glGetVertexAttribPointerv #define glGetVertexAttribPointerv (gl.GetVertexAttribPointerv) #undef glGetVertexAttribdv #define glGetVertexAttribdv (gl.GetVertexAttribdv) #undef glGetVertexAttribfv #define glGetVertexAttribfv (gl.GetVertexAttribfv) #undef glGetVertexAttribiv #define glGetVertexAttribiv (gl.GetVertexAttribiv) #undef glGetVideoCaptureStreamdvNV #define glGetVideoCaptureStreamdvNV (gl.GetVideoCaptureStreamdvNV) #undef glGetVideoCaptureStreamfvNV #define glGetVideoCaptureStreamfvNV (gl.GetVideoCaptureStreamfvNV) #undef glGetVideoCaptureStreamivNV #define glGetVideoCaptureStreamivNV (gl.GetVideoCaptureStreamivNV) #undef glGetVideoCaptureivNV #define glGetVideoCaptureivNV (gl.GetVideoCaptureivNV) #undef glGetVideoi64vNV #define glGetVideoi64vNV (gl.GetVideoi64vNV) #undef glGetVideoivNV #define glGetVideoivNV (gl.GetVideoivNV) #undef glGetVideoui64vNV #define glGetVideoui64vNV (gl.GetVideoui64vNV) #undef glGetVideouivNV #define glGetVideouivNV (gl.GetVideouivNV) #undef glGetnColorTableARB #define glGetnColorTableARB (gl.GetnColorTableARB) #undef glGetnCompressedTexImageARB #define glGetnCompressedTexImageARB (gl.GetnCompressedTexImageARB) #undef glGetnConvolutionFilterARB #define glGetnConvolutionFilterARB (gl.GetnConvolutionFilterARB) #undef glGetnHistogramARB #define glGetnHistogramARB (gl.GetnHistogramARB) #undef glGetnMapdvARB #define glGetnMapdvARB (gl.GetnMapdvARB) #undef glGetnMapfvARB #define glGetnMapfvARB (gl.GetnMapfvARB) #undef glGetnMapivARB #define glGetnMapivARB (gl.GetnMapivARB) #undef glGetnMinmaxARB #define glGetnMinmaxARB (gl.GetnMinmaxARB) #undef glGetnPixelMapfvARB #define glGetnPixelMapfvARB (gl.GetnPixelMapfvARB) #undef glGetnPixelMapuivARB #define glGetnPixelMapuivARB (gl.GetnPixelMapuivARB) #undef glGetnPixelMapusvARB #define glGetnPixelMapusvARB (gl.GetnPixelMapusvARB) #undef glGetnPolygonStippleARB #define glGetnPolygonStippleARB (gl.GetnPolygonStippleARB) #undef glGetnSeparableFilterARB #define glGetnSeparableFilterARB (gl.GetnSeparableFilterARB) #undef glGetnTexImageARB #define glGetnTexImageARB (gl.GetnTexImageARB) #undef glGetnUniformdvARB #define glGetnUniformdvARB (gl.GetnUniformdvARB) #undef glGetnUniformfvARB #define glGetnUniformfvARB (gl.GetnUniformfvARB) #undef glGetnUniformivARB #define glGetnUniformivARB (gl.GetnUniformivARB) #undef glGetnUniformuivARB #define glGetnUniformuivARB (gl.GetnUniformuivARB) #undef glImportSyncEXT #define glImportSyncEXT (gl.ImportSyncEXT) #undef glIndexFormatNV #define glIndexFormatNV (gl.IndexFormatNV) #undef glIndexxOES #define glIndexxOES (gl.IndexxOES) #undef glIndexxvOES #define glIndexxvOES (gl.IndexxvOES) #undef glInsertEventMarkerEXT #define glInsertEventMarkerEXT (gl.InsertEventMarkerEXT) #undef glInterpolatePathsNV #define glInterpolatePathsNV (gl.InterpolatePathsNV) #undef glInvalidateBufferData #define glInvalidateBufferData (gl.InvalidateBufferData) #undef glInvalidateBufferSubData #define glInvalidateBufferSubData (gl.InvalidateBufferSubData) #undef glInvalidateFramebuffer #define glInvalidateFramebuffer (gl.InvalidateFramebuffer) #undef glInvalidateSubFramebuffer #define glInvalidateSubFramebuffer (gl.InvalidateSubFramebuffer) #undef glInvalidateTexImage #define glInvalidateTexImage (gl.InvalidateTexImage) #undef glInvalidateTexSubImage #define glInvalidateTexSubImage (gl.InvalidateTexSubImage) #undef glIsBufferResidentNV #define glIsBufferResidentNV (gl.IsBufferResidentNV) #undef glIsEnabledIndexedEXT #define glIsEnabledIndexedEXT (gl.IsEnabledIndexedEXT) #undef glIsEnabledi #define glIsEnabledi (gl.IsEnabledi) #undef glIsFramebuffer #define glIsFramebuffer (gl.IsFramebuffer) #undef glIsFramebufferEXT #define glIsFramebufferEXT (gl.IsFramebufferEXT) #undef glIsImageHandleResidentARB #define glIsImageHandleResidentARB (gl.IsImageHandleResidentARB) #undef glIsImageHandleResidentNV #define glIsImageHandleResidentNV (gl.IsImageHandleResidentNV) #undef glIsNameAMD #define glIsNameAMD (gl.IsNameAMD) #undef glIsNamedBufferResidentNV #define glIsNamedBufferResidentNV (gl.IsNamedBufferResidentNV) #undef glIsNamedStringARB #define glIsNamedStringARB (gl.IsNamedStringARB) #undef glIsPathNV #define glIsPathNV (gl.IsPathNV) #undef glIsPointInFillPathNV #define glIsPointInFillPathNV (gl.IsPointInFillPathNV) #undef glIsPointInStrokePathNV #define glIsPointInStrokePathNV (gl.IsPointInStrokePathNV) #undef glIsProgram #define glIsProgram (gl.IsProgram) #undef glIsProgramPipeline #define glIsProgramPipeline (gl.IsProgramPipeline) #undef glIsRenderbuffer #define glIsRenderbuffer (gl.IsRenderbuffer) #undef glIsRenderbufferEXT #define glIsRenderbufferEXT (gl.IsRenderbufferEXT) #undef glIsSampler #define glIsSampler (gl.IsSampler) #undef glIsShader #define glIsShader (gl.IsShader) #undef glIsSync #define glIsSync (gl.IsSync) #undef glIsTextureHandleResidentARB #define glIsTextureHandleResidentARB (gl.IsTextureHandleResidentARB) #undef glIsTextureHandleResidentNV #define glIsTextureHandleResidentNV (gl.IsTextureHandleResidentNV) #undef glIsTransformFeedback #define glIsTransformFeedback (gl.IsTransformFeedback) #undef glIsTransformFeedbackNV #define glIsTransformFeedbackNV (gl.IsTransformFeedbackNV) #undef glIsVertexArray #define glIsVertexArray (gl.IsVertexArray) #undef glIsVertexAttribEnabledAPPLE #define glIsVertexAttribEnabledAPPLE (gl.IsVertexAttribEnabledAPPLE) #undef glLabelObjectEXT #define glLabelObjectEXT (gl.LabelObjectEXT) #undef glLightModelxOES #define glLightModelxOES (gl.LightModelxOES) #undef glLightModelxvOES #define glLightModelxvOES (gl.LightModelxvOES) #undef glLightxOES #define glLightxOES (gl.LightxOES) #undef glLightxvOES #define glLightxvOES (gl.LightxvOES) #undef glLineWidthxOES #define glLineWidthxOES (gl.LineWidthxOES) #undef glLinkProgram #define glLinkProgram (gl.LinkProgram) #undef glLoadMatrixxOES #define glLoadMatrixxOES (gl.LoadMatrixxOES) #undef glLoadTransposeMatrixxOES #define glLoadTransposeMatrixxOES (gl.LoadTransposeMatrixxOES) #undef glMakeBufferNonResidentNV #define glMakeBufferNonResidentNV (gl.MakeBufferNonResidentNV) #undef glMakeBufferResidentNV #define glMakeBufferResidentNV (gl.MakeBufferResidentNV) #undef glMakeImageHandleNonResidentARB #define glMakeImageHandleNonResidentARB (gl.MakeImageHandleNonResidentARB) #undef glMakeImageHandleNonResidentNV #define glMakeImageHandleNonResidentNV (gl.MakeImageHandleNonResidentNV) #undef glMakeImageHandleResidentARB #define glMakeImageHandleResidentARB (gl.MakeImageHandleResidentARB) #undef glMakeImageHandleResidentNV #define glMakeImageHandleResidentNV (gl.MakeImageHandleResidentNV) #undef glMakeNamedBufferNonResidentNV #define glMakeNamedBufferNonResidentNV (gl.MakeNamedBufferNonResidentNV) #undef glMakeNamedBufferResidentNV #define glMakeNamedBufferResidentNV (gl.MakeNamedBufferResidentNV) #undef glMakeTextureHandleNonResidentARB #define glMakeTextureHandleNonResidentARB (gl.MakeTextureHandleNonResidentARB) #undef glMakeTextureHandleNonResidentNV #define glMakeTextureHandleNonResidentNV (gl.MakeTextureHandleNonResidentNV) #undef glMakeTextureHandleResidentARB #define glMakeTextureHandleResidentARB (gl.MakeTextureHandleResidentARB) #undef glMakeTextureHandleResidentNV #define glMakeTextureHandleResidentNV (gl.MakeTextureHandleResidentNV) #undef glMap1xOES #define glMap1xOES (gl.Map1xOES) #undef glMap2xOES #define glMap2xOES (gl.Map2xOES) #undef glMapBufferRange #define glMapBufferRange (gl.MapBufferRange) #undef glMapGrid1xOES #define glMapGrid1xOES (gl.MapGrid1xOES) #undef glMapGrid2xOES #define glMapGrid2xOES (gl.MapGrid2xOES) #undef glMapNamedBufferEXT #define glMapNamedBufferEXT (gl.MapNamedBufferEXT) #undef glMapNamedBufferRangeEXT #define glMapNamedBufferRangeEXT (gl.MapNamedBufferRangeEXT) #undef glMapTexture2DINTEL #define glMapTexture2DINTEL (gl.MapTexture2DINTEL) #undef glMapVertexAttrib1dAPPLE #define glMapVertexAttrib1dAPPLE (gl.MapVertexAttrib1dAPPLE) #undef glMapVertexAttrib1fAPPLE #define glMapVertexAttrib1fAPPLE (gl.MapVertexAttrib1fAPPLE) #undef glMapVertexAttrib2dAPPLE #define glMapVertexAttrib2dAPPLE (gl.MapVertexAttrib2dAPPLE) #undef glMapVertexAttrib2fAPPLE #define glMapVertexAttrib2fAPPLE (gl.MapVertexAttrib2fAPPLE) #undef glMaterialxOES #define glMaterialxOES (gl.MaterialxOES) #undef glMaterialxvOES #define glMaterialxvOES (gl.MaterialxvOES) #undef glMatrixFrustumEXT #define glMatrixFrustumEXT (gl.MatrixFrustumEXT) #undef glMatrixLoadIdentityEXT #define glMatrixLoadIdentityEXT (gl.MatrixLoadIdentityEXT) #undef glMatrixLoadTransposedEXT #define glMatrixLoadTransposedEXT (gl.MatrixLoadTransposedEXT) #undef glMatrixLoadTransposefEXT #define glMatrixLoadTransposefEXT (gl.MatrixLoadTransposefEXT) #undef glMatrixLoaddEXT #define glMatrixLoaddEXT (gl.MatrixLoaddEXT) #undef glMatrixLoadfEXT #define glMatrixLoadfEXT (gl.MatrixLoadfEXT) #undef glMatrixMultTransposedEXT #define glMatrixMultTransposedEXT (gl.MatrixMultTransposedEXT) #undef glMatrixMultTransposefEXT #define glMatrixMultTransposefEXT (gl.MatrixMultTransposefEXT) #undef glMatrixMultdEXT #define glMatrixMultdEXT (gl.MatrixMultdEXT) #undef glMatrixMultfEXT #define glMatrixMultfEXT (gl.MatrixMultfEXT) #undef glMatrixOrthoEXT #define glMatrixOrthoEXT (gl.MatrixOrthoEXT) #undef glMatrixPopEXT #define glMatrixPopEXT (gl.MatrixPopEXT) #undef glMatrixPushEXT #define glMatrixPushEXT (gl.MatrixPushEXT) #undef glMatrixRotatedEXT #define glMatrixRotatedEXT (gl.MatrixRotatedEXT) #undef glMatrixRotatefEXT #define glMatrixRotatefEXT (gl.MatrixRotatefEXT) #undef glMatrixScaledEXT #define glMatrixScaledEXT (gl.MatrixScaledEXT) #undef glMatrixScalefEXT #define glMatrixScalefEXT (gl.MatrixScalefEXT) #undef glMatrixTranslatedEXT #define glMatrixTranslatedEXT (gl.MatrixTranslatedEXT) #undef glMatrixTranslatefEXT #define glMatrixTranslatefEXT (gl.MatrixTranslatefEXT) #undef glMemoryBarrier #define glMemoryBarrier (gl.MemoryBarrier) #undef glMemoryBarrierEXT #define glMemoryBarrierEXT (gl.MemoryBarrierEXT) #undef glMinSampleShading #define glMinSampleShading (gl.MinSampleShading) #undef glMinSampleShadingARB #define glMinSampleShadingARB (gl.MinSampleShadingARB) #undef glMultMatrixxOES #define glMultMatrixxOES (gl.MultMatrixxOES) #undef glMultTransposeMatrixxOES #define glMultTransposeMatrixxOES (gl.MultTransposeMatrixxOES) #undef glMultiDrawArraysIndirect #define glMultiDrawArraysIndirect (gl.MultiDrawArraysIndirect) #undef glMultiDrawArraysIndirectAMD #define glMultiDrawArraysIndirectAMD (gl.MultiDrawArraysIndirectAMD) #undef glMultiDrawArraysIndirectBindlessNV #define glMultiDrawArraysIndirectBindlessNV (gl.MultiDrawArraysIndirectBindlessNV) #undef glMultiDrawArraysIndirectCountARB #define glMultiDrawArraysIndirectCountARB (gl.MultiDrawArraysIndirectCountARB) #undef glMultiDrawElementsBaseVertex #define glMultiDrawElementsBaseVertex (gl.MultiDrawElementsBaseVertex) #undef glMultiDrawElementsIndirect #define glMultiDrawElementsIndirect (gl.MultiDrawElementsIndirect) #undef glMultiDrawElementsIndirectAMD #define glMultiDrawElementsIndirectAMD (gl.MultiDrawElementsIndirectAMD) #undef glMultiDrawElementsIndirectBindlessNV #define glMultiDrawElementsIndirectBindlessNV (gl.MultiDrawElementsIndirectBindlessNV) #undef glMultiDrawElementsIndirectCountARB #define glMultiDrawElementsIndirectCountARB (gl.MultiDrawElementsIndirectCountARB) #undef glMultiTexBufferEXT #define glMultiTexBufferEXT (gl.MultiTexBufferEXT) #undef glMultiTexCoord1bOES #define glMultiTexCoord1bOES (gl.MultiTexCoord1bOES) #undef glMultiTexCoord1bvOES #define glMultiTexCoord1bvOES (gl.MultiTexCoord1bvOES) #undef glMultiTexCoord1xOES #define glMultiTexCoord1xOES (gl.MultiTexCoord1xOES) #undef glMultiTexCoord1xvOES #define glMultiTexCoord1xvOES (gl.MultiTexCoord1xvOES) #undef glMultiTexCoord2bOES #define glMultiTexCoord2bOES (gl.MultiTexCoord2bOES) #undef glMultiTexCoord2bvOES #define glMultiTexCoord2bvOES (gl.MultiTexCoord2bvOES) #undef glMultiTexCoord2xOES #define glMultiTexCoord2xOES (gl.MultiTexCoord2xOES) #undef glMultiTexCoord2xvOES #define glMultiTexCoord2xvOES (gl.MultiTexCoord2xvOES) #undef glMultiTexCoord3bOES #define glMultiTexCoord3bOES (gl.MultiTexCoord3bOES) #undef glMultiTexCoord3bvOES #define glMultiTexCoord3bvOES (gl.MultiTexCoord3bvOES) #undef glMultiTexCoord3xOES #define glMultiTexCoord3xOES (gl.MultiTexCoord3xOES) #undef glMultiTexCoord3xvOES #define glMultiTexCoord3xvOES (gl.MultiTexCoord3xvOES) #undef glMultiTexCoord4bOES #define glMultiTexCoord4bOES (gl.MultiTexCoord4bOES) #undef glMultiTexCoord4bvOES #define glMultiTexCoord4bvOES (gl.MultiTexCoord4bvOES) #undef glMultiTexCoord4xOES #define glMultiTexCoord4xOES (gl.MultiTexCoord4xOES) #undef glMultiTexCoord4xvOES #define glMultiTexCoord4xvOES (gl.MultiTexCoord4xvOES) #undef glMultiTexCoordP1ui #define glMultiTexCoordP1ui (gl.MultiTexCoordP1ui) #undef glMultiTexCoordP1uiv #define glMultiTexCoordP1uiv (gl.MultiTexCoordP1uiv) #undef glMultiTexCoordP2ui #define glMultiTexCoordP2ui (gl.MultiTexCoordP2ui) #undef glMultiTexCoordP2uiv #define glMultiTexCoordP2uiv (gl.MultiTexCoordP2uiv) #undef glMultiTexCoordP3ui #define glMultiTexCoordP3ui (gl.MultiTexCoordP3ui) #undef glMultiTexCoordP3uiv #define glMultiTexCoordP3uiv (gl.MultiTexCoordP3uiv) #undef glMultiTexCoordP4ui #define glMultiTexCoordP4ui (gl.MultiTexCoordP4ui) #undef glMultiTexCoordP4uiv #define glMultiTexCoordP4uiv (gl.MultiTexCoordP4uiv) #undef glMultiTexCoordPointerEXT #define glMultiTexCoordPointerEXT (gl.MultiTexCoordPointerEXT) #undef glMultiTexEnvfEXT #define glMultiTexEnvfEXT (gl.MultiTexEnvfEXT) #undef glMultiTexEnvfvEXT #define glMultiTexEnvfvEXT (gl.MultiTexEnvfvEXT) #undef glMultiTexEnviEXT #define glMultiTexEnviEXT (gl.MultiTexEnviEXT) #undef glMultiTexEnvivEXT #define glMultiTexEnvivEXT (gl.MultiTexEnvivEXT) #undef glMultiTexGendEXT #define glMultiTexGendEXT (gl.MultiTexGendEXT) #undef glMultiTexGendvEXT #define glMultiTexGendvEXT (gl.MultiTexGendvEXT) #undef glMultiTexGenfEXT #define glMultiTexGenfEXT (gl.MultiTexGenfEXT) #undef glMultiTexGenfvEXT #define glMultiTexGenfvEXT (gl.MultiTexGenfvEXT) #undef glMultiTexGeniEXT #define glMultiTexGeniEXT (gl.MultiTexGeniEXT) #undef glMultiTexGenivEXT #define glMultiTexGenivEXT (gl.MultiTexGenivEXT) #undef glMultiTexImage1DEXT #define glMultiTexImage1DEXT (gl.MultiTexImage1DEXT) #undef glMultiTexImage2DEXT #define glMultiTexImage2DEXT (gl.MultiTexImage2DEXT) #undef glMultiTexImage3DEXT #define glMultiTexImage3DEXT (gl.MultiTexImage3DEXT) #undef glMultiTexParameterIivEXT #define glMultiTexParameterIivEXT (gl.MultiTexParameterIivEXT) #undef glMultiTexParameterIuivEXT #define glMultiTexParameterIuivEXT (gl.MultiTexParameterIuivEXT) #undef glMultiTexParameterfEXT #define glMultiTexParameterfEXT (gl.MultiTexParameterfEXT) #undef glMultiTexParameterfvEXT #define glMultiTexParameterfvEXT (gl.MultiTexParameterfvEXT) #undef glMultiTexParameteriEXT #define glMultiTexParameteriEXT (gl.MultiTexParameteriEXT) #undef glMultiTexParameterivEXT #define glMultiTexParameterivEXT (gl.MultiTexParameterivEXT) #undef glMultiTexRenderbufferEXT #define glMultiTexRenderbufferEXT (gl.MultiTexRenderbufferEXT) #undef glMultiTexSubImage1DEXT #define glMultiTexSubImage1DEXT (gl.MultiTexSubImage1DEXT) #undef glMultiTexSubImage2DEXT #define glMultiTexSubImage2DEXT (gl.MultiTexSubImage2DEXT) #undef glMultiTexSubImage3DEXT #define glMultiTexSubImage3DEXT (gl.MultiTexSubImage3DEXT) #undef glNamedBufferDataEXT #define glNamedBufferDataEXT (gl.NamedBufferDataEXT) #undef glNamedBufferStorageEXT #define glNamedBufferStorageEXT (gl.NamedBufferStorageEXT) #undef glNamedBufferSubDataEXT #define glNamedBufferSubDataEXT (gl.NamedBufferSubDataEXT) #undef glNamedCopyBufferSubDataEXT #define glNamedCopyBufferSubDataEXT (gl.NamedCopyBufferSubDataEXT) #undef glNamedFramebufferParameteriEXT #define glNamedFramebufferParameteriEXT (gl.NamedFramebufferParameteriEXT) #undef glNamedFramebufferRenderbufferEXT #define glNamedFramebufferRenderbufferEXT (gl.NamedFramebufferRenderbufferEXT) #undef glNamedFramebufferTexture1DEXT #define glNamedFramebufferTexture1DEXT (gl.NamedFramebufferTexture1DEXT) #undef glNamedFramebufferTexture2DEXT #define glNamedFramebufferTexture2DEXT (gl.NamedFramebufferTexture2DEXT) #undef glNamedFramebufferTexture3DEXT #define glNamedFramebufferTexture3DEXT (gl.NamedFramebufferTexture3DEXT) #undef glNamedFramebufferTextureEXT #define glNamedFramebufferTextureEXT (gl.NamedFramebufferTextureEXT) #undef glNamedFramebufferTextureFaceEXT #define glNamedFramebufferTextureFaceEXT (gl.NamedFramebufferTextureFaceEXT) #undef glNamedFramebufferTextureLayerEXT #define glNamedFramebufferTextureLayerEXT (gl.NamedFramebufferTextureLayerEXT) #undef glNamedProgramLocalParameter4dEXT #define glNamedProgramLocalParameter4dEXT (gl.NamedProgramLocalParameter4dEXT) #undef glNamedProgramLocalParameter4dvEXT #define glNamedProgramLocalParameter4dvEXT (gl.NamedProgramLocalParameter4dvEXT) #undef glNamedProgramLocalParameter4fEXT #define glNamedProgramLocalParameter4fEXT (gl.NamedProgramLocalParameter4fEXT) #undef glNamedProgramLocalParameter4fvEXT #define glNamedProgramLocalParameter4fvEXT (gl.NamedProgramLocalParameter4fvEXT) #undef glNamedProgramLocalParameterI4iEXT #define glNamedProgramLocalParameterI4iEXT (gl.NamedProgramLocalParameterI4iEXT) #undef glNamedProgramLocalParameterI4ivEXT #define glNamedProgramLocalParameterI4ivEXT (gl.NamedProgramLocalParameterI4ivEXT) #undef glNamedProgramLocalParameterI4uiEXT #define glNamedProgramLocalParameterI4uiEXT (gl.NamedProgramLocalParameterI4uiEXT) #undef glNamedProgramLocalParameterI4uivEXT #define glNamedProgramLocalParameterI4uivEXT (gl.NamedProgramLocalParameterI4uivEXT) #undef glNamedProgramLocalParameters4fvEXT #define glNamedProgramLocalParameters4fvEXT (gl.NamedProgramLocalParameters4fvEXT) #undef glNamedProgramLocalParametersI4ivEXT #define glNamedProgramLocalParametersI4ivEXT (gl.NamedProgramLocalParametersI4ivEXT) #undef glNamedProgramLocalParametersI4uivEXT #define glNamedProgramLocalParametersI4uivEXT (gl.NamedProgramLocalParametersI4uivEXT) #undef glNamedProgramStringEXT #define glNamedProgramStringEXT (gl.NamedProgramStringEXT) #undef glNamedRenderbufferStorageEXT #define glNamedRenderbufferStorageEXT (gl.NamedRenderbufferStorageEXT) #undef glNamedRenderbufferStorageMultisampleCoverageEXT #define glNamedRenderbufferStorageMultisampleCoverageEXT (gl.NamedRenderbufferStorageMultisampleCoverageEXT) #undef glNamedRenderbufferStorageMultisampleEXT #define glNamedRenderbufferStorageMultisampleEXT (gl.NamedRenderbufferStorageMultisampleEXT) #undef glNamedStringARB #define glNamedStringARB (gl.NamedStringARB) #undef glNormal3xOES #define glNormal3xOES (gl.Normal3xOES) #undef glNormal3xvOES #define glNormal3xvOES (gl.Normal3xvOES) #undef glNormalFormatNV #define glNormalFormatNV (gl.NormalFormatNV) #undef glNormalP3ui #define glNormalP3ui (gl.NormalP3ui) #undef glNormalP3uiv #define glNormalP3uiv (gl.NormalP3uiv) #undef glObjectLabel #define glObjectLabel (gl.ObjectLabel) #undef glObjectPtrLabel #define glObjectPtrLabel (gl.ObjectPtrLabel) #undef glObjectPurgeableAPPLE #define glObjectPurgeableAPPLE (gl.ObjectPurgeableAPPLE) #undef glObjectUnpurgeableAPPLE #define glObjectUnpurgeableAPPLE (gl.ObjectUnpurgeableAPPLE) #undef glOrthofOES #define glOrthofOES (gl.OrthofOES) #undef glOrthoxOES #define glOrthoxOES (gl.OrthoxOES) #undef glPassThroughxOES #define glPassThroughxOES (gl.PassThroughxOES) #undef glPatchParameterfv #define glPatchParameterfv (gl.PatchParameterfv) #undef glPatchParameteri #define glPatchParameteri (gl.PatchParameteri) #undef glPathColorGenNV #define glPathColorGenNV (gl.PathColorGenNV) #undef glPathCommandsNV #define glPathCommandsNV (gl.PathCommandsNV) #undef glPathCoordsNV #define glPathCoordsNV (gl.PathCoordsNV) #undef glPathCoverDepthFuncNV #define glPathCoverDepthFuncNV (gl.PathCoverDepthFuncNV) #undef glPathDashArrayNV #define glPathDashArrayNV (gl.PathDashArrayNV) #undef glPathFogGenNV #define glPathFogGenNV (gl.PathFogGenNV) #undef glPathGlyphRangeNV #define glPathGlyphRangeNV (gl.PathGlyphRangeNV) #undef glPathGlyphsNV #define glPathGlyphsNV (gl.PathGlyphsNV) #undef glPathParameterfNV #define glPathParameterfNV (gl.PathParameterfNV) #undef glPathParameterfvNV #define glPathParameterfvNV (gl.PathParameterfvNV) #undef glPathParameteriNV #define glPathParameteriNV (gl.PathParameteriNV) #undef glPathParameterivNV #define glPathParameterivNV (gl.PathParameterivNV) #undef glPathStencilDepthOffsetNV #define glPathStencilDepthOffsetNV (gl.PathStencilDepthOffsetNV) #undef glPathStencilFuncNV #define glPathStencilFuncNV (gl.PathStencilFuncNV) #undef glPathStringNV #define glPathStringNV (gl.PathStringNV) #undef glPathSubCommandsNV #define glPathSubCommandsNV (gl.PathSubCommandsNV) #undef glPathSubCoordsNV #define glPathSubCoordsNV (gl.PathSubCoordsNV) #undef glPathTexGenNV #define glPathTexGenNV (gl.PathTexGenNV) #undef glPauseTransformFeedback #define glPauseTransformFeedback (gl.PauseTransformFeedback) #undef glPauseTransformFeedbackNV #define glPauseTransformFeedbackNV (gl.PauseTransformFeedbackNV) #undef glPixelMapx #define glPixelMapx (gl.PixelMapx) #undef glPixelStorex #define glPixelStorex (gl.PixelStorex) #undef glPixelTransferxOES #define glPixelTransferxOES (gl.PixelTransferxOES) #undef glPixelZoomxOES #define glPixelZoomxOES (gl.PixelZoomxOES) #undef glPointAlongPathNV #define glPointAlongPathNV (gl.PointAlongPathNV) #undef glPointParameterxvOES #define glPointParameterxvOES (gl.PointParameterxvOES) #undef glPointSizePointerAPPLE #define glPointSizePointerAPPLE (gl.PointSizePointerAPPLE) #undef glPointSizexOES #define glPointSizexOES (gl.PointSizexOES) #undef glPolygonOffsetxOES #define glPolygonOffsetxOES (gl.PolygonOffsetxOES) #undef glPopDebugGroup #define glPopDebugGroup (gl.PopDebugGroup) #undef glPopGroupMarkerEXT #define glPopGroupMarkerEXT (gl.PopGroupMarkerEXT) #undef glPresentFrameDualFillNV #define glPresentFrameDualFillNV (gl.PresentFrameDualFillNV) #undef glPresentFrameKeyedNV #define glPresentFrameKeyedNV (gl.PresentFrameKeyedNV) #undef glPrimitiveRestartIndex #define glPrimitiveRestartIndex (gl.PrimitiveRestartIndex) #undef glPrioritizeTexturesxOES #define glPrioritizeTexturesxOES (gl.PrioritizeTexturesxOES) #undef glProgramBinary #define glProgramBinary (gl.ProgramBinary) #undef glProgramBufferParametersIivNV #define glProgramBufferParametersIivNV (gl.ProgramBufferParametersIivNV) #undef glProgramBufferParametersIuivNV #define glProgramBufferParametersIuivNV (gl.ProgramBufferParametersIuivNV) #undef glProgramBufferParametersfvNV #define glProgramBufferParametersfvNV (gl.ProgramBufferParametersfvNV) #undef glProgramCallbackMESA #define glProgramCallbackMESA (gl.ProgramCallbackMESA) #undef glProgramEnvParameterI4iNV #define glProgramEnvParameterI4iNV (gl.ProgramEnvParameterI4iNV) #undef glProgramEnvParameterI4ivNV #define glProgramEnvParameterI4ivNV (gl.ProgramEnvParameterI4ivNV) #undef glProgramEnvParameterI4uiNV #define glProgramEnvParameterI4uiNV (gl.ProgramEnvParameterI4uiNV) #undef glProgramEnvParameterI4uivNV #define glProgramEnvParameterI4uivNV (gl.ProgramEnvParameterI4uivNV) #undef glProgramEnvParameters4fvEXT #define glProgramEnvParameters4fvEXT (gl.ProgramEnvParameters4fvEXT) #undef glProgramEnvParametersI4ivNV #define glProgramEnvParametersI4ivNV (gl.ProgramEnvParametersI4ivNV) #undef glProgramEnvParametersI4uivNV #define glProgramEnvParametersI4uivNV (gl.ProgramEnvParametersI4uivNV) #undef glProgramLocalParameterI4iNV #define glProgramLocalParameterI4iNV (gl.ProgramLocalParameterI4iNV) #undef glProgramLocalParameterI4ivNV #define glProgramLocalParameterI4ivNV (gl.ProgramLocalParameterI4ivNV) #undef glProgramLocalParameterI4uiNV #define glProgramLocalParameterI4uiNV (gl.ProgramLocalParameterI4uiNV) #undef glProgramLocalParameterI4uivNV #define glProgramLocalParameterI4uivNV (gl.ProgramLocalParameterI4uivNV) #undef glProgramLocalParameters4fvEXT #define glProgramLocalParameters4fvEXT (gl.ProgramLocalParameters4fvEXT) #undef glProgramLocalParametersI4ivNV #define glProgramLocalParametersI4ivNV (gl.ProgramLocalParametersI4ivNV) #undef glProgramLocalParametersI4uivNV #define glProgramLocalParametersI4uivNV (gl.ProgramLocalParametersI4uivNV) #undef glProgramParameteri #define glProgramParameteri (gl.ProgramParameteri) #undef glProgramParameteriARB #define glProgramParameteriARB (gl.ProgramParameteriARB) #undef glProgramParameteriEXT #define glProgramParameteriEXT (gl.ProgramParameteriEXT) #undef glProgramSubroutineParametersuivNV #define glProgramSubroutineParametersuivNV (gl.ProgramSubroutineParametersuivNV) #undef glProgramUniform1d #define glProgramUniform1d (gl.ProgramUniform1d) #undef glProgramUniform1dEXT #define glProgramUniform1dEXT (gl.ProgramUniform1dEXT) #undef glProgramUniform1dv #define glProgramUniform1dv (gl.ProgramUniform1dv) #undef glProgramUniform1dvEXT #define glProgramUniform1dvEXT (gl.ProgramUniform1dvEXT) #undef glProgramUniform1f #define glProgramUniform1f (gl.ProgramUniform1f) #undef glProgramUniform1fEXT #define glProgramUniform1fEXT (gl.ProgramUniform1fEXT) #undef glProgramUniform1fv #define glProgramUniform1fv (gl.ProgramUniform1fv) #undef glProgramUniform1fvEXT #define glProgramUniform1fvEXT (gl.ProgramUniform1fvEXT) #undef glProgramUniform1i #define glProgramUniform1i (gl.ProgramUniform1i) #undef glProgramUniform1i64NV #define glProgramUniform1i64NV (gl.ProgramUniform1i64NV) #undef glProgramUniform1i64vNV #define glProgramUniform1i64vNV (gl.ProgramUniform1i64vNV) #undef glProgramUniform1iEXT #define glProgramUniform1iEXT (gl.ProgramUniform1iEXT) #undef glProgramUniform1iv #define glProgramUniform1iv (gl.ProgramUniform1iv) #undef glProgramUniform1ivEXT #define glProgramUniform1ivEXT (gl.ProgramUniform1ivEXT) #undef glProgramUniform1ui #define glProgramUniform1ui (gl.ProgramUniform1ui) #undef glProgramUniform1ui64NV #define glProgramUniform1ui64NV (gl.ProgramUniform1ui64NV) #undef glProgramUniform1ui64vNV #define glProgramUniform1ui64vNV (gl.ProgramUniform1ui64vNV) #undef glProgramUniform1uiEXT #define glProgramUniform1uiEXT (gl.ProgramUniform1uiEXT) #undef glProgramUniform1uiv #define glProgramUniform1uiv (gl.ProgramUniform1uiv) #undef glProgramUniform1uivEXT #define glProgramUniform1uivEXT (gl.ProgramUniform1uivEXT) #undef glProgramUniform2d #define glProgramUniform2d (gl.ProgramUniform2d) #undef glProgramUniform2dEXT #define glProgramUniform2dEXT (gl.ProgramUniform2dEXT) #undef glProgramUniform2dv #define glProgramUniform2dv (gl.ProgramUniform2dv) #undef glProgramUniform2dvEXT #define glProgramUniform2dvEXT (gl.ProgramUniform2dvEXT) #undef glProgramUniform2f #define glProgramUniform2f (gl.ProgramUniform2f) #undef glProgramUniform2fEXT #define glProgramUniform2fEXT (gl.ProgramUniform2fEXT) #undef glProgramUniform2fv #define glProgramUniform2fv (gl.ProgramUniform2fv) #undef glProgramUniform2fvEXT #define glProgramUniform2fvEXT (gl.ProgramUniform2fvEXT) #undef glProgramUniform2i #define glProgramUniform2i (gl.ProgramUniform2i) #undef glProgramUniform2i64NV #define glProgramUniform2i64NV (gl.ProgramUniform2i64NV) #undef glProgramUniform2i64vNV #define glProgramUniform2i64vNV (gl.ProgramUniform2i64vNV) #undef glProgramUniform2iEXT #define glProgramUniform2iEXT (gl.ProgramUniform2iEXT) #undef glProgramUniform2iv #define glProgramUniform2iv (gl.ProgramUniform2iv) #undef glProgramUniform2ivEXT #define glProgramUniform2ivEXT (gl.ProgramUniform2ivEXT) #undef glProgramUniform2ui #define glProgramUniform2ui (gl.ProgramUniform2ui) #undef glProgramUniform2ui64NV #define glProgramUniform2ui64NV (gl.ProgramUniform2ui64NV) #undef glProgramUniform2ui64vNV #define glProgramUniform2ui64vNV (gl.ProgramUniform2ui64vNV) #undef glProgramUniform2uiEXT #define glProgramUniform2uiEXT (gl.ProgramUniform2uiEXT) #undef glProgramUniform2uiv #define glProgramUniform2uiv (gl.ProgramUniform2uiv) #undef glProgramUniform2uivEXT #define glProgramUniform2uivEXT (gl.ProgramUniform2uivEXT) #undef glProgramUniform3d #define glProgramUniform3d (gl.ProgramUniform3d) #undef glProgramUniform3dEXT #define glProgramUniform3dEXT (gl.ProgramUniform3dEXT) #undef glProgramUniform3dv #define glProgramUniform3dv (gl.ProgramUniform3dv) #undef glProgramUniform3dvEXT #define glProgramUniform3dvEXT (gl.ProgramUniform3dvEXT) #undef glProgramUniform3f #define glProgramUniform3f (gl.ProgramUniform3f) #undef glProgramUniform3fEXT #define glProgramUniform3fEXT (gl.ProgramUniform3fEXT) #undef glProgramUniform3fv #define glProgramUniform3fv (gl.ProgramUniform3fv) #undef glProgramUniform3fvEXT #define glProgramUniform3fvEXT (gl.ProgramUniform3fvEXT) #undef glProgramUniform3i #define glProgramUniform3i (gl.ProgramUniform3i) #undef glProgramUniform3i64NV #define glProgramUniform3i64NV (gl.ProgramUniform3i64NV) #undef glProgramUniform3i64vNV #define glProgramUniform3i64vNV (gl.ProgramUniform3i64vNV) #undef glProgramUniform3iEXT #define glProgramUniform3iEXT (gl.ProgramUniform3iEXT) #undef glProgramUniform3iv #define glProgramUniform3iv (gl.ProgramUniform3iv) #undef glProgramUniform3ivEXT #define glProgramUniform3ivEXT (gl.ProgramUniform3ivEXT) #undef glProgramUniform3ui #define glProgramUniform3ui (gl.ProgramUniform3ui) #undef glProgramUniform3ui64NV #define glProgramUniform3ui64NV (gl.ProgramUniform3ui64NV) #undef glProgramUniform3ui64vNV #define glProgramUniform3ui64vNV (gl.ProgramUniform3ui64vNV) #undef glProgramUniform3uiEXT #define glProgramUniform3uiEXT (gl.ProgramUniform3uiEXT) #undef glProgramUniform3uiv #define glProgramUniform3uiv (gl.ProgramUniform3uiv) #undef glProgramUniform3uivEXT #define glProgramUniform3uivEXT (gl.ProgramUniform3uivEXT) #undef glProgramUniform4d #define glProgramUniform4d (gl.ProgramUniform4d) #undef glProgramUniform4dEXT #define glProgramUniform4dEXT (gl.ProgramUniform4dEXT) #undef glProgramUniform4dv #define glProgramUniform4dv (gl.ProgramUniform4dv) #undef glProgramUniform4dvEXT #define glProgramUniform4dvEXT (gl.ProgramUniform4dvEXT) #undef glProgramUniform4f #define glProgramUniform4f (gl.ProgramUniform4f) #undef glProgramUniform4fEXT #define glProgramUniform4fEXT (gl.ProgramUniform4fEXT) #undef glProgramUniform4fv #define glProgramUniform4fv (gl.ProgramUniform4fv) #undef glProgramUniform4fvEXT #define glProgramUniform4fvEXT (gl.ProgramUniform4fvEXT) #undef glProgramUniform4i #define glProgramUniform4i (gl.ProgramUniform4i) #undef glProgramUniform4i64NV #define glProgramUniform4i64NV (gl.ProgramUniform4i64NV) #undef glProgramUniform4i64vNV #define glProgramUniform4i64vNV (gl.ProgramUniform4i64vNV) #undef glProgramUniform4iEXT #define glProgramUniform4iEXT (gl.ProgramUniform4iEXT) #undef glProgramUniform4iv #define glProgramUniform4iv (gl.ProgramUniform4iv) #undef glProgramUniform4ivEXT #define glProgramUniform4ivEXT (gl.ProgramUniform4ivEXT) #undef glProgramUniform4ui #define glProgramUniform4ui (gl.ProgramUniform4ui) #undef glProgramUniform4ui64NV #define glProgramUniform4ui64NV (gl.ProgramUniform4ui64NV) #undef glProgramUniform4ui64vNV #define glProgramUniform4ui64vNV (gl.ProgramUniform4ui64vNV) #undef glProgramUniform4uiEXT #define glProgramUniform4uiEXT (gl.ProgramUniform4uiEXT) #undef glProgramUniform4uiv #define glProgramUniform4uiv (gl.ProgramUniform4uiv) #undef glProgramUniform4uivEXT #define glProgramUniform4uivEXT (gl.ProgramUniform4uivEXT) #undef glProgramUniformHandleui64ARB #define glProgramUniformHandleui64ARB (gl.ProgramUniformHandleui64ARB) #undef glProgramUniformHandleui64NV #define glProgramUniformHandleui64NV (gl.ProgramUniformHandleui64NV) #undef glProgramUniformHandleui64vARB #define glProgramUniformHandleui64vARB (gl.ProgramUniformHandleui64vARB) #undef glProgramUniformHandleui64vNV #define glProgramUniformHandleui64vNV (gl.ProgramUniformHandleui64vNV) #undef glProgramUniformMatrix2dv #define glProgramUniformMatrix2dv (gl.ProgramUniformMatrix2dv) #undef glProgramUniformMatrix2dvEXT #define glProgramUniformMatrix2dvEXT (gl.ProgramUniformMatrix2dvEXT) #undef glProgramUniformMatrix2fv #define glProgramUniformMatrix2fv (gl.ProgramUniformMatrix2fv) #undef glProgramUniformMatrix2fvEXT #define glProgramUniformMatrix2fvEXT (gl.ProgramUniformMatrix2fvEXT) #undef glProgramUniformMatrix2x3dv #define glProgramUniformMatrix2x3dv (gl.ProgramUniformMatrix2x3dv) #undef glProgramUniformMatrix2x3dvEXT #define glProgramUniformMatrix2x3dvEXT (gl.ProgramUniformMatrix2x3dvEXT) #undef glProgramUniformMatrix2x3fv #define glProgramUniformMatrix2x3fv (gl.ProgramUniformMatrix2x3fv) #undef glProgramUniformMatrix2x3fvEXT #define glProgramUniformMatrix2x3fvEXT (gl.ProgramUniformMatrix2x3fvEXT) #undef glProgramUniformMatrix2x4dv #define glProgramUniformMatrix2x4dv (gl.ProgramUniformMatrix2x4dv) #undef glProgramUniformMatrix2x4dvEXT #define glProgramUniformMatrix2x4dvEXT (gl.ProgramUniformMatrix2x4dvEXT) #undef glProgramUniformMatrix2x4fv #define glProgramUniformMatrix2x4fv (gl.ProgramUniformMatrix2x4fv) #undef glProgramUniformMatrix2x4fvEXT #define glProgramUniformMatrix2x4fvEXT (gl.ProgramUniformMatrix2x4fvEXT) #undef glProgramUniformMatrix3dv #define glProgramUniformMatrix3dv (gl.ProgramUniformMatrix3dv) #undef glProgramUniformMatrix3dvEXT #define glProgramUniformMatrix3dvEXT (gl.ProgramUniformMatrix3dvEXT) #undef glProgramUniformMatrix3fv #define glProgramUniformMatrix3fv (gl.ProgramUniformMatrix3fv) #undef glProgramUniformMatrix3fvEXT #define glProgramUniformMatrix3fvEXT (gl.ProgramUniformMatrix3fvEXT) #undef glProgramUniformMatrix3x2dv #define glProgramUniformMatrix3x2dv (gl.ProgramUniformMatrix3x2dv) #undef glProgramUniformMatrix3x2dvEXT #define glProgramUniformMatrix3x2dvEXT (gl.ProgramUniformMatrix3x2dvEXT) #undef glProgramUniformMatrix3x2fv #define glProgramUniformMatrix3x2fv (gl.ProgramUniformMatrix3x2fv) #undef glProgramUniformMatrix3x2fvEXT #define glProgramUniformMatrix3x2fvEXT (gl.ProgramUniformMatrix3x2fvEXT) #undef glProgramUniformMatrix3x4dv #define glProgramUniformMatrix3x4dv (gl.ProgramUniformMatrix3x4dv) #undef glProgramUniformMatrix3x4dvEXT #define glProgramUniformMatrix3x4dvEXT (gl.ProgramUniformMatrix3x4dvEXT) #undef glProgramUniformMatrix3x4fv #define glProgramUniformMatrix3x4fv (gl.ProgramUniformMatrix3x4fv) #undef glProgramUniformMatrix3x4fvEXT #define glProgramUniformMatrix3x4fvEXT (gl.ProgramUniformMatrix3x4fvEXT) #undef glProgramUniformMatrix4dv #define glProgramUniformMatrix4dv (gl.ProgramUniformMatrix4dv) #undef glProgramUniformMatrix4dvEXT #define glProgramUniformMatrix4dvEXT (gl.ProgramUniformMatrix4dvEXT) #undef glProgramUniformMatrix4fv #define glProgramUniformMatrix4fv (gl.ProgramUniformMatrix4fv) #undef glProgramUniformMatrix4fvEXT #define glProgramUniformMatrix4fvEXT (gl.ProgramUniformMatrix4fvEXT) #undef glProgramUniformMatrix4x2dv #define glProgramUniformMatrix4x2dv (gl.ProgramUniformMatrix4x2dv) #undef glProgramUniformMatrix4x2dvEXT #define glProgramUniformMatrix4x2dvEXT (gl.ProgramUniformMatrix4x2dvEXT) #undef glProgramUniformMatrix4x2fv #define glProgramUniformMatrix4x2fv (gl.ProgramUniformMatrix4x2fv) #undef glProgramUniformMatrix4x2fvEXT #define glProgramUniformMatrix4x2fvEXT (gl.ProgramUniformMatrix4x2fvEXT) #undef glProgramUniformMatrix4x3dv #define glProgramUniformMatrix4x3dv (gl.ProgramUniformMatrix4x3dv) #undef glProgramUniformMatrix4x3dvEXT #define glProgramUniformMatrix4x3dvEXT (gl.ProgramUniformMatrix4x3dvEXT) #undef glProgramUniformMatrix4x3fv #define glProgramUniformMatrix4x3fv (gl.ProgramUniformMatrix4x3fv) #undef glProgramUniformMatrix4x3fvEXT #define glProgramUniformMatrix4x3fvEXT (gl.ProgramUniformMatrix4x3fvEXT) #undef glProgramUniformui64NV #define glProgramUniformui64NV (gl.ProgramUniformui64NV) #undef glProgramUniformui64vNV #define glProgramUniformui64vNV (gl.ProgramUniformui64vNV) #undef glProgramVertexLimitNV #define glProgramVertexLimitNV (gl.ProgramVertexLimitNV) #undef glProvokingVertex #define glProvokingVertex (gl.ProvokingVertex) #undef glProvokingVertexEXT #define glProvokingVertexEXT (gl.ProvokingVertexEXT) #undef glPushClientAttribDefaultEXT #define glPushClientAttribDefaultEXT (gl.PushClientAttribDefaultEXT) #undef glPushDebugGroup #define glPushDebugGroup (gl.PushDebugGroup) #undef glPushGroupMarkerEXT #define glPushGroupMarkerEXT (gl.PushGroupMarkerEXT) #undef glQueryCounter #define glQueryCounter (gl.QueryCounter) #undef glQueryMatrixxOES #define glQueryMatrixxOES (gl.QueryMatrixxOES) #undef glQueryObjectParameteruiAMD #define glQueryObjectParameteruiAMD (gl.QueryObjectParameteruiAMD) #undef glRasterPos2xOES #define glRasterPos2xOES (gl.RasterPos2xOES) #undef glRasterPos2xvOES #define glRasterPos2xvOES (gl.RasterPos2xvOES) #undef glRasterPos3xOES #define glRasterPos3xOES (gl.RasterPos3xOES) #undef glRasterPos3xvOES #define glRasterPos3xvOES (gl.RasterPos3xvOES) #undef glRasterPos4xOES #define glRasterPos4xOES (gl.RasterPos4xOES) #undef glRasterPos4xvOES #define glRasterPos4xvOES (gl.RasterPos4xvOES) #undef glReadnPixelsARB #define glReadnPixelsARB (gl.ReadnPixelsARB) #undef glRectxOES #define glRectxOES (gl.RectxOES) #undef glRectxvOES #define glRectxvOES (gl.RectxvOES) #undef glReleaseShaderCompiler #define glReleaseShaderCompiler (gl.ReleaseShaderCompiler) #undef glRenderbufferStorage #define glRenderbufferStorage (gl.RenderbufferStorage) #undef glRenderbufferStorageEXT #define glRenderbufferStorageEXT (gl.RenderbufferStorageEXT) #undef glRenderbufferStorageMultisample #define glRenderbufferStorageMultisample (gl.RenderbufferStorageMultisample) #undef glRenderbufferStorageMultisampleCoverageNV #define glRenderbufferStorageMultisampleCoverageNV (gl.RenderbufferStorageMultisampleCoverageNV) #undef glRenderbufferStorageMultisampleEXT #define glRenderbufferStorageMultisampleEXT (gl.RenderbufferStorageMultisampleEXT) #undef glResumeTransformFeedback #define glResumeTransformFeedback (gl.ResumeTransformFeedback) #undef glResumeTransformFeedbackNV #define glResumeTransformFeedbackNV (gl.ResumeTransformFeedbackNV) #undef glRotatexOES #define glRotatexOES (gl.RotatexOES) #undef glSampleCoverageOES #define glSampleCoverageOES (gl.SampleCoverageOES) #undef glSampleMaskIndexedNV #define glSampleMaskIndexedNV (gl.SampleMaskIndexedNV) #undef glSampleMaski #define glSampleMaski (gl.SampleMaski) #undef glSamplePass #define glSamplePass (gl.SamplePass) #undef glSamplePassARB #define glSamplePassARB (gl.SamplePassARB) #undef glSamplerParameterIiv #define glSamplerParameterIiv (gl.SamplerParameterIiv) #undef glSamplerParameterIuiv #define glSamplerParameterIuiv (gl.SamplerParameterIuiv) #undef glSamplerParameterf #define glSamplerParameterf (gl.SamplerParameterf) #undef glSamplerParameterfv #define glSamplerParameterfv (gl.SamplerParameterfv) #undef glSamplerParameteri #define glSamplerParameteri (gl.SamplerParameteri) #undef glSamplerParameteriv #define glSamplerParameteriv (gl.SamplerParameteriv) #undef glScalexOES #define glScalexOES (gl.ScalexOES) #undef glScissorArrayv #define glScissorArrayv (gl.ScissorArrayv) #undef glScissorIndexed #define glScissorIndexed (gl.ScissorIndexed) #undef glScissorIndexedv #define glScissorIndexedv (gl.ScissorIndexedv) #undef glSecondaryColorFormatNV #define glSecondaryColorFormatNV (gl.SecondaryColorFormatNV) #undef glSecondaryColorP3ui #define glSecondaryColorP3ui (gl.SecondaryColorP3ui) #undef glSecondaryColorP3uiv #define glSecondaryColorP3uiv (gl.SecondaryColorP3uiv) #undef glSelectPerfMonitorCountersAMD #define glSelectPerfMonitorCountersAMD (gl.SelectPerfMonitorCountersAMD) #undef glSetMultisamplefvAMD #define glSetMultisamplefvAMD (gl.SetMultisamplefvAMD) #undef glShaderBinary #define glShaderBinary (gl.ShaderBinary) #undef glShaderSource #define glShaderSource (gl.ShaderSource) #undef glShaderStorageBlockBinding #define glShaderStorageBlockBinding (gl.ShaderStorageBlockBinding) #undef glStencilClearTagEXT #define glStencilClearTagEXT (gl.StencilClearTagEXT) #undef glStencilFillPathInstancedNV #define glStencilFillPathInstancedNV (gl.StencilFillPathInstancedNV) #undef glStencilFillPathNV #define glStencilFillPathNV (gl.StencilFillPathNV) #undef glStencilFuncSeparate #define glStencilFuncSeparate (gl.StencilFuncSeparate) #undef glStencilMaskSeparate #define glStencilMaskSeparate (gl.StencilMaskSeparate) #undef glStencilOpSeparate #define glStencilOpSeparate (gl.StencilOpSeparate) #undef glStencilOpValueAMD #define glStencilOpValueAMD (gl.StencilOpValueAMD) #undef glStencilStrokePathInstancedNV #define glStencilStrokePathInstancedNV (gl.StencilStrokePathInstancedNV) #undef glStencilStrokePathNV #define glStencilStrokePathNV (gl.StencilStrokePathNV) #undef glStringMarkerGREMEDY #define glStringMarkerGREMEDY (gl.StringMarkerGREMEDY) #undef glSwapAPPLE #define glSwapAPPLE (gl.SwapAPPLE) #undef glSyncTextureINTEL #define glSyncTextureINTEL (gl.SyncTextureINTEL) #undef glTessellationFactorAMD #define glTessellationFactorAMD (gl.TessellationFactorAMD) #undef glTessellationModeAMD #define glTessellationModeAMD (gl.TessellationModeAMD) #undef glTexBuffer #define glTexBuffer (gl.TexBuffer) #undef glTexBufferARB #define glTexBufferARB (gl.TexBufferARB) #undef glTexBufferEXT #define glTexBufferEXT (gl.TexBufferEXT) #undef glTexBufferRange #define glTexBufferRange (gl.TexBufferRange) #undef glTexCoord1bOES #define glTexCoord1bOES (gl.TexCoord1bOES) #undef glTexCoord1bvOES #define glTexCoord1bvOES (gl.TexCoord1bvOES) #undef glTexCoord1xOES #define glTexCoord1xOES (gl.TexCoord1xOES) #undef glTexCoord1xvOES #define glTexCoord1xvOES (gl.TexCoord1xvOES) #undef glTexCoord2bOES #define glTexCoord2bOES (gl.TexCoord2bOES) #undef glTexCoord2bvOES #define glTexCoord2bvOES (gl.TexCoord2bvOES) #undef glTexCoord2xOES #define glTexCoord2xOES (gl.TexCoord2xOES) #undef glTexCoord2xvOES #define glTexCoord2xvOES (gl.TexCoord2xvOES) #undef glTexCoord3bOES #define glTexCoord3bOES (gl.TexCoord3bOES) #undef glTexCoord3bvOES #define glTexCoord3bvOES (gl.TexCoord3bvOES) #undef glTexCoord3xOES #define glTexCoord3xOES (gl.TexCoord3xOES) #undef glTexCoord3xvOES #define glTexCoord3xvOES (gl.TexCoord3xvOES) #undef glTexCoord4bOES #define glTexCoord4bOES (gl.TexCoord4bOES) #undef glTexCoord4bvOES #define glTexCoord4bvOES (gl.TexCoord4bvOES) #undef glTexCoord4xOES #define glTexCoord4xOES (gl.TexCoord4xOES) #undef glTexCoord4xvOES #define glTexCoord4xvOES (gl.TexCoord4xvOES) #undef glTexCoordFormatNV #define glTexCoordFormatNV (gl.TexCoordFormatNV) #undef glTexCoordP1ui #define glTexCoordP1ui (gl.TexCoordP1ui) #undef glTexCoordP1uiv #define glTexCoordP1uiv (gl.TexCoordP1uiv) #undef glTexCoordP2ui #define glTexCoordP2ui (gl.TexCoordP2ui) #undef glTexCoordP2uiv #define glTexCoordP2uiv (gl.TexCoordP2uiv) #undef glTexCoordP3ui #define glTexCoordP3ui (gl.TexCoordP3ui) #undef glTexCoordP3uiv #define glTexCoordP3uiv (gl.TexCoordP3uiv) #undef glTexCoordP4ui #define glTexCoordP4ui (gl.TexCoordP4ui) #undef glTexCoordP4uiv #define glTexCoordP4uiv (gl.TexCoordP4uiv) #undef glTexEnvxOES #define glTexEnvxOES (gl.TexEnvxOES) #undef glTexEnvxvOES #define glTexEnvxvOES (gl.TexEnvxvOES) #undef glTexGenxOES #define glTexGenxOES (gl.TexGenxOES) #undef glTexGenxvOES #define glTexGenxvOES (gl.TexGenxvOES) #undef glTexImage2DMultisample #define glTexImage2DMultisample (gl.TexImage2DMultisample) #undef glTexImage2DMultisampleCoverageNV #define glTexImage2DMultisampleCoverageNV (gl.TexImage2DMultisampleCoverageNV) #undef glTexImage3DMultisample #define glTexImage3DMultisample (gl.TexImage3DMultisample) #undef glTexImage3DMultisampleCoverageNV #define glTexImage3DMultisampleCoverageNV (gl.TexImage3DMultisampleCoverageNV) #undef glTexPageCommitmentARB #define glTexPageCommitmentARB (gl.TexPageCommitmentARB) #undef glTexParameterIiv #define glTexParameterIiv (gl.TexParameterIiv) #undef glTexParameterIivEXT #define glTexParameterIivEXT (gl.TexParameterIivEXT) #undef glTexParameterIuiv #define glTexParameterIuiv (gl.TexParameterIuiv) #undef glTexParameterIuivEXT #define glTexParameterIuivEXT (gl.TexParameterIuivEXT) #undef glTexParameterxOES #define glTexParameterxOES (gl.TexParameterxOES) #undef glTexParameterxvOES #define glTexParameterxvOES (gl.TexParameterxvOES) #undef glTexRenderbufferNV #define glTexRenderbufferNV (gl.TexRenderbufferNV) #undef glTexScissorFuncINTEL #define glTexScissorFuncINTEL (gl.TexScissorFuncINTEL) #undef glTexScissorINTEL #define glTexScissorINTEL (gl.TexScissorINTEL) #undef glTexStorage1D #define glTexStorage1D (gl.TexStorage1D) #undef glTexStorage2D #define glTexStorage2D (gl.TexStorage2D) #undef glTexStorage2DMultisample #define glTexStorage2DMultisample (gl.TexStorage2DMultisample) #undef glTexStorage3D #define glTexStorage3D (gl.TexStorage3D) #undef glTexStorage3DMultisample #define glTexStorage3DMultisample (gl.TexStorage3DMultisample) #undef glTexStorageSparseAMD #define glTexStorageSparseAMD (gl.TexStorageSparseAMD) #undef glTextureBarrierNV #define glTextureBarrierNV (gl.TextureBarrierNV) #undef glTextureBufferEXT #define glTextureBufferEXT (gl.TextureBufferEXT) #undef glTextureBufferRangeEXT #define glTextureBufferRangeEXT (gl.TextureBufferRangeEXT) #undef glTextureFogSGIX #define glTextureFogSGIX (gl.TextureFogSGIX) #undef glTextureImage1DEXT #define glTextureImage1DEXT (gl.TextureImage1DEXT) #undef glTextureImage2DEXT #define glTextureImage2DEXT (gl.TextureImage2DEXT) #undef glTextureImage2DMultisampleCoverageNV #define glTextureImage2DMultisampleCoverageNV (gl.TextureImage2DMultisampleCoverageNV) #undef glTextureImage2DMultisampleNV #define glTextureImage2DMultisampleNV (gl.TextureImage2DMultisampleNV) #undef glTextureImage3DEXT #define glTextureImage3DEXT (gl.TextureImage3DEXT) #undef glTextureImage3DMultisampleCoverageNV #define glTextureImage3DMultisampleCoverageNV (gl.TextureImage3DMultisampleCoverageNV) #undef glTextureImage3DMultisampleNV #define glTextureImage3DMultisampleNV (gl.TextureImage3DMultisampleNV) #undef glTexturePageCommitmentEXT #define glTexturePageCommitmentEXT (gl.TexturePageCommitmentEXT) #undef glTextureParameterIivEXT #define glTextureParameterIivEXT (gl.TextureParameterIivEXT) #undef glTextureParameterIuivEXT #define glTextureParameterIuivEXT (gl.TextureParameterIuivEXT) #undef glTextureParameterfEXT #define glTextureParameterfEXT (gl.TextureParameterfEXT) #undef glTextureParameterfvEXT #define glTextureParameterfvEXT (gl.TextureParameterfvEXT) #undef glTextureParameteriEXT #define glTextureParameteriEXT (gl.TextureParameteriEXT) #undef glTextureParameterivEXT #define glTextureParameterivEXT (gl.TextureParameterivEXT) #undef glTextureRangeAPPLE #define glTextureRangeAPPLE (gl.TextureRangeAPPLE) #undef glTextureRenderbufferEXT #define glTextureRenderbufferEXT (gl.TextureRenderbufferEXT) #undef glTextureStorage1DEXT #define glTextureStorage1DEXT (gl.TextureStorage1DEXT) #undef glTextureStorage2DEXT #define glTextureStorage2DEXT (gl.TextureStorage2DEXT) #undef glTextureStorage2DMultisampleEXT #define glTextureStorage2DMultisampleEXT (gl.TextureStorage2DMultisampleEXT) #undef glTextureStorage3DEXT #define glTextureStorage3DEXT (gl.TextureStorage3DEXT) #undef glTextureStorage3DMultisampleEXT #define glTextureStorage3DMultisampleEXT (gl.TextureStorage3DMultisampleEXT) #undef glTextureStorageSparseAMD #define glTextureStorageSparseAMD (gl.TextureStorageSparseAMD) #undef glTextureSubImage1DEXT #define glTextureSubImage1DEXT (gl.TextureSubImage1DEXT) #undef glTextureSubImage2DEXT #define glTextureSubImage2DEXT (gl.TextureSubImage2DEXT) #undef glTextureSubImage3DEXT #define glTextureSubImage3DEXT (gl.TextureSubImage3DEXT) #undef glTextureView #define glTextureView (gl.TextureView) #undef glTransformFeedbackAttribsNV #define glTransformFeedbackAttribsNV (gl.TransformFeedbackAttribsNV) #undef glTransformFeedbackStreamAttribsNV #define glTransformFeedbackStreamAttribsNV (gl.TransformFeedbackStreamAttribsNV) #undef glTransformFeedbackVaryings #define glTransformFeedbackVaryings (gl.TransformFeedbackVaryings) #undef glTransformFeedbackVaryingsEXT #define glTransformFeedbackVaryingsEXT (gl.TransformFeedbackVaryingsEXT) #undef glTransformFeedbackVaryingsNV #define glTransformFeedbackVaryingsNV (gl.TransformFeedbackVaryingsNV) #undef glTransformPathNV #define glTransformPathNV (gl.TransformPathNV) #undef glTranslatexOES #define glTranslatexOES (gl.TranslatexOES) #undef glUniform1d #define glUniform1d (gl.Uniform1d) #undef glUniform1dv #define glUniform1dv (gl.Uniform1dv) #undef glUniform1f #define glUniform1f (gl.Uniform1f) #undef glUniform1fv #define glUniform1fv (gl.Uniform1fv) #undef glUniform1i #define glUniform1i (gl.Uniform1i) #undef glUniform1i64NV #define glUniform1i64NV (gl.Uniform1i64NV) #undef glUniform1i64vNV #define glUniform1i64vNV (gl.Uniform1i64vNV) #undef glUniform1iv #define glUniform1iv (gl.Uniform1iv) #undef glUniform1ui #define glUniform1ui (gl.Uniform1ui) #undef glUniform1ui64NV #define glUniform1ui64NV (gl.Uniform1ui64NV) #undef glUniform1ui64vNV #define glUniform1ui64vNV (gl.Uniform1ui64vNV) #undef glUniform1uiEXT #define glUniform1uiEXT (gl.Uniform1uiEXT) #undef glUniform1uiv #define glUniform1uiv (gl.Uniform1uiv) #undef glUniform1uivEXT #define glUniform1uivEXT (gl.Uniform1uivEXT) #undef glUniform2d #define glUniform2d (gl.Uniform2d) #undef glUniform2dv #define glUniform2dv (gl.Uniform2dv) #undef glUniform2f #define glUniform2f (gl.Uniform2f) #undef glUniform2fv #define glUniform2fv (gl.Uniform2fv) #undef glUniform2i #define glUniform2i (gl.Uniform2i) #undef glUniform2i64NV #define glUniform2i64NV (gl.Uniform2i64NV) #undef glUniform2i64vNV #define glUniform2i64vNV (gl.Uniform2i64vNV) #undef glUniform2iv #define glUniform2iv (gl.Uniform2iv) #undef glUniform2ui #define glUniform2ui (gl.Uniform2ui) #undef glUniform2ui64NV #define glUniform2ui64NV (gl.Uniform2ui64NV) #undef glUniform2ui64vNV #define glUniform2ui64vNV (gl.Uniform2ui64vNV) #undef glUniform2uiEXT #define glUniform2uiEXT (gl.Uniform2uiEXT) #undef glUniform2uiv #define glUniform2uiv (gl.Uniform2uiv) #undef glUniform2uivEXT #define glUniform2uivEXT (gl.Uniform2uivEXT) #undef glUniform3d #define glUniform3d (gl.Uniform3d) #undef glUniform3dv #define glUniform3dv (gl.Uniform3dv) #undef glUniform3f #define glUniform3f (gl.Uniform3f) #undef glUniform3fv #define glUniform3fv (gl.Uniform3fv) #undef glUniform3i #define glUniform3i (gl.Uniform3i) #undef glUniform3i64NV #define glUniform3i64NV (gl.Uniform3i64NV) #undef glUniform3i64vNV #define glUniform3i64vNV (gl.Uniform3i64vNV) #undef glUniform3iv #define glUniform3iv (gl.Uniform3iv) #undef glUniform3ui #define glUniform3ui (gl.Uniform3ui) #undef glUniform3ui64NV #define glUniform3ui64NV (gl.Uniform3ui64NV) #undef glUniform3ui64vNV #define glUniform3ui64vNV (gl.Uniform3ui64vNV) #undef glUniform3uiEXT #define glUniform3uiEXT (gl.Uniform3uiEXT) #undef glUniform3uiv #define glUniform3uiv (gl.Uniform3uiv) #undef glUniform3uivEXT #define glUniform3uivEXT (gl.Uniform3uivEXT) #undef glUniform4d #define glUniform4d (gl.Uniform4d) #undef glUniform4dv #define glUniform4dv (gl.Uniform4dv) #undef glUniform4f #define glUniform4f (gl.Uniform4f) #undef glUniform4fv #define glUniform4fv (gl.Uniform4fv) #undef glUniform4i #define glUniform4i (gl.Uniform4i) #undef glUniform4i64NV #define glUniform4i64NV (gl.Uniform4i64NV) #undef glUniform4i64vNV #define glUniform4i64vNV (gl.Uniform4i64vNV) #undef glUniform4iv #define glUniform4iv (gl.Uniform4iv) #undef glUniform4ui #define glUniform4ui (gl.Uniform4ui) #undef glUniform4ui64NV #define glUniform4ui64NV (gl.Uniform4ui64NV) #undef glUniform4ui64vNV #define glUniform4ui64vNV (gl.Uniform4ui64vNV) #undef glUniform4uiEXT #define glUniform4uiEXT (gl.Uniform4uiEXT) #undef glUniform4uiv #define glUniform4uiv (gl.Uniform4uiv) #undef glUniform4uivEXT #define glUniform4uivEXT (gl.Uniform4uivEXT) #undef glUniformBlockBinding #define glUniformBlockBinding (gl.UniformBlockBinding) #undef glUniformBufferEXT #define glUniformBufferEXT (gl.UniformBufferEXT) #undef glUniformHandleui64ARB #define glUniformHandleui64ARB (gl.UniformHandleui64ARB) #undef glUniformHandleui64NV #define glUniformHandleui64NV (gl.UniformHandleui64NV) #undef glUniformHandleui64vARB #define glUniformHandleui64vARB (gl.UniformHandleui64vARB) #undef glUniformHandleui64vNV #define glUniformHandleui64vNV (gl.UniformHandleui64vNV) #undef glUniformMatrix2dv #define glUniformMatrix2dv (gl.UniformMatrix2dv) #undef glUniformMatrix2fv #define glUniformMatrix2fv (gl.UniformMatrix2fv) #undef glUniformMatrix2x3dv #define glUniformMatrix2x3dv (gl.UniformMatrix2x3dv) #undef glUniformMatrix2x3fv #define glUniformMatrix2x3fv (gl.UniformMatrix2x3fv) #undef glUniformMatrix2x4dv #define glUniformMatrix2x4dv (gl.UniformMatrix2x4dv) #undef glUniformMatrix2x4fv #define glUniformMatrix2x4fv (gl.UniformMatrix2x4fv) #undef glUniformMatrix3dv #define glUniformMatrix3dv (gl.UniformMatrix3dv) #undef glUniformMatrix3fv #define glUniformMatrix3fv (gl.UniformMatrix3fv) #undef glUniformMatrix3x2dv #define glUniformMatrix3x2dv (gl.UniformMatrix3x2dv) #undef glUniformMatrix3x2fv #define glUniformMatrix3x2fv (gl.UniformMatrix3x2fv) #undef glUniformMatrix3x4dv #define glUniformMatrix3x4dv (gl.UniformMatrix3x4dv) #undef glUniformMatrix3x4fv #define glUniformMatrix3x4fv (gl.UniformMatrix3x4fv) #undef glUniformMatrix4dv #define glUniformMatrix4dv (gl.UniformMatrix4dv) #undef glUniformMatrix4fv #define glUniformMatrix4fv (gl.UniformMatrix4fv) #undef glUniformMatrix4x2dv #define glUniformMatrix4x2dv (gl.UniformMatrix4x2dv) #undef glUniformMatrix4x2fv #define glUniformMatrix4x2fv (gl.UniformMatrix4x2fv) #undef glUniformMatrix4x3dv #define glUniformMatrix4x3dv (gl.UniformMatrix4x3dv) #undef glUniformMatrix4x3fv #define glUniformMatrix4x3fv (gl.UniformMatrix4x3fv) #undef glUniformSubroutinesuiv #define glUniformSubroutinesuiv (gl.UniformSubroutinesuiv) #undef glUniformui64NV #define glUniformui64NV (gl.Uniformui64NV) #undef glUniformui64vNV #define glUniformui64vNV (gl.Uniformui64vNV) #undef glUnmapNamedBufferEXT #define glUnmapNamedBufferEXT (gl.UnmapNamedBufferEXT) #undef glUnmapTexture2DINTEL #define glUnmapTexture2DINTEL (gl.UnmapTexture2DINTEL) #undef glUseProgram #define glUseProgram (gl.UseProgram) #undef glUseProgramStages #define glUseProgramStages (gl.UseProgramStages) #undef glUseShaderProgramEXT #define glUseShaderProgramEXT (gl.UseShaderProgramEXT) #undef glVDPAUFiniNV #define glVDPAUFiniNV (gl.VDPAUFiniNV) #undef glVDPAUGetSurfaceivNV #define glVDPAUGetSurfaceivNV (gl.VDPAUGetSurfaceivNV) #undef glVDPAUInitNV #define glVDPAUInitNV (gl.VDPAUInitNV) #undef glVDPAUIsSurfaceNV #define glVDPAUIsSurfaceNV (gl.VDPAUIsSurfaceNV) #undef glVDPAUMapSurfacesNV #define glVDPAUMapSurfacesNV (gl.VDPAUMapSurfacesNV) #undef glVDPAURegisterOutputSurfaceNV #define glVDPAURegisterOutputSurfaceNV (gl.VDPAURegisterOutputSurfaceNV) #undef glVDPAURegisterVideoSurfaceNV #define glVDPAURegisterVideoSurfaceNV (gl.VDPAURegisterVideoSurfaceNV) #undef glVDPAUSurfaceAccessNV #define glVDPAUSurfaceAccessNV (gl.VDPAUSurfaceAccessNV) #undef glVDPAUUnmapSurfacesNV #define glVDPAUUnmapSurfacesNV (gl.VDPAUUnmapSurfacesNV) #undef glVDPAUUnregisterSurfaceNV #define glVDPAUUnregisterSurfaceNV (gl.VDPAUUnregisterSurfaceNV) #undef glValidateProgram #define glValidateProgram (gl.ValidateProgram) #undef glValidateProgramPipeline #define glValidateProgramPipeline (gl.ValidateProgramPipeline) #undef glVertex2bOES #define glVertex2bOES (gl.Vertex2bOES) #undef glVertex2bvOES #define glVertex2bvOES (gl.Vertex2bvOES) #undef glVertex2xOES #define glVertex2xOES (gl.Vertex2xOES) #undef glVertex2xvOES #define glVertex2xvOES (gl.Vertex2xvOES) #undef glVertex3bOES #define glVertex3bOES (gl.Vertex3bOES) #undef glVertex3bvOES #define glVertex3bvOES (gl.Vertex3bvOES) #undef glVertex3xOES #define glVertex3xOES (gl.Vertex3xOES) #undef glVertex3xvOES #define glVertex3xvOES (gl.Vertex3xvOES) #undef glVertex4bOES #define glVertex4bOES (gl.Vertex4bOES) #undef glVertex4bvOES #define glVertex4bvOES (gl.Vertex4bvOES) #undef glVertex4xOES #define glVertex4xOES (gl.Vertex4xOES) #undef glVertex4xvOES #define glVertex4xvOES (gl.Vertex4xvOES) #undef glVertexArrayBindVertexBufferEXT #define glVertexArrayBindVertexBufferEXT (gl.VertexArrayBindVertexBufferEXT) #undef glVertexArrayColorOffsetEXT #define glVertexArrayColorOffsetEXT (gl.VertexArrayColorOffsetEXT) #undef glVertexArrayEdgeFlagOffsetEXT #define glVertexArrayEdgeFlagOffsetEXT (gl.VertexArrayEdgeFlagOffsetEXT) #undef glVertexArrayFogCoordOffsetEXT #define glVertexArrayFogCoordOffsetEXT (gl.VertexArrayFogCoordOffsetEXT) #undef glVertexArrayIndexOffsetEXT #define glVertexArrayIndexOffsetEXT (gl.VertexArrayIndexOffsetEXT) #undef glVertexArrayMultiTexCoordOffsetEXT #define glVertexArrayMultiTexCoordOffsetEXT (gl.VertexArrayMultiTexCoordOffsetEXT) #undef glVertexArrayNormalOffsetEXT #define glVertexArrayNormalOffsetEXT (gl.VertexArrayNormalOffsetEXT) #undef glVertexArraySecondaryColorOffsetEXT #define glVertexArraySecondaryColorOffsetEXT (gl.VertexArraySecondaryColorOffsetEXT) #undef glVertexArrayTexCoordOffsetEXT #define glVertexArrayTexCoordOffsetEXT (gl.VertexArrayTexCoordOffsetEXT) #undef glVertexArrayVertexAttribBindingEXT #define glVertexArrayVertexAttribBindingEXT (gl.VertexArrayVertexAttribBindingEXT) #undef glVertexArrayVertexAttribDivisorEXT #define glVertexArrayVertexAttribDivisorEXT (gl.VertexArrayVertexAttribDivisorEXT) #undef glVertexArrayVertexAttribFormatEXT #define glVertexArrayVertexAttribFormatEXT (gl.VertexArrayVertexAttribFormatEXT) #undef glVertexArrayVertexAttribIFormatEXT #define glVertexArrayVertexAttribIFormatEXT (gl.VertexArrayVertexAttribIFormatEXT) #undef glVertexArrayVertexAttribIOffsetEXT #define glVertexArrayVertexAttribIOffsetEXT (gl.VertexArrayVertexAttribIOffsetEXT) #undef glVertexArrayVertexAttribLFormatEXT #define glVertexArrayVertexAttribLFormatEXT (gl.VertexArrayVertexAttribLFormatEXT) #undef glVertexArrayVertexAttribLOffsetEXT #define glVertexArrayVertexAttribLOffsetEXT (gl.VertexArrayVertexAttribLOffsetEXT) #undef glVertexArrayVertexAttribOffsetEXT #define glVertexArrayVertexAttribOffsetEXT (gl.VertexArrayVertexAttribOffsetEXT) #undef glVertexArrayVertexBindingDivisorEXT #define glVertexArrayVertexBindingDivisorEXT (gl.VertexArrayVertexBindingDivisorEXT) #undef glVertexArrayVertexOffsetEXT #define glVertexArrayVertexOffsetEXT (gl.VertexArrayVertexOffsetEXT) #undef glVertexAttrib1d #define glVertexAttrib1d (gl.VertexAttrib1d) #undef glVertexAttrib1dv #define glVertexAttrib1dv (gl.VertexAttrib1dv) #undef glVertexAttrib1f #define glVertexAttrib1f (gl.VertexAttrib1f) #undef glVertexAttrib1fv #define glVertexAttrib1fv (gl.VertexAttrib1fv) #undef glVertexAttrib1s #define glVertexAttrib1s (gl.VertexAttrib1s) #undef glVertexAttrib1sv #define glVertexAttrib1sv (gl.VertexAttrib1sv) #undef glVertexAttrib2d #define glVertexAttrib2d (gl.VertexAttrib2d) #undef glVertexAttrib2dv #define glVertexAttrib2dv (gl.VertexAttrib2dv) #undef glVertexAttrib2f #define glVertexAttrib2f (gl.VertexAttrib2f) #undef glVertexAttrib2fv #define glVertexAttrib2fv (gl.VertexAttrib2fv) #undef glVertexAttrib2s #define glVertexAttrib2s (gl.VertexAttrib2s) #undef glVertexAttrib2sv #define glVertexAttrib2sv (gl.VertexAttrib2sv) #undef glVertexAttrib3d #define glVertexAttrib3d (gl.VertexAttrib3d) #undef glVertexAttrib3dv #define glVertexAttrib3dv (gl.VertexAttrib3dv) #undef glVertexAttrib3f #define glVertexAttrib3f (gl.VertexAttrib3f) #undef glVertexAttrib3fv #define glVertexAttrib3fv (gl.VertexAttrib3fv) #undef glVertexAttrib3s #define glVertexAttrib3s (gl.VertexAttrib3s) #undef glVertexAttrib3sv #define glVertexAttrib3sv (gl.VertexAttrib3sv) #undef glVertexAttrib4Nbv #define glVertexAttrib4Nbv (gl.VertexAttrib4Nbv) #undef glVertexAttrib4Niv #define glVertexAttrib4Niv (gl.VertexAttrib4Niv) #undef glVertexAttrib4Nsv #define glVertexAttrib4Nsv (gl.VertexAttrib4Nsv) #undef glVertexAttrib4Nub #define glVertexAttrib4Nub (gl.VertexAttrib4Nub) #undef glVertexAttrib4Nubv #define glVertexAttrib4Nubv (gl.VertexAttrib4Nubv) #undef glVertexAttrib4Nuiv #define glVertexAttrib4Nuiv (gl.VertexAttrib4Nuiv) #undef glVertexAttrib4Nusv #define glVertexAttrib4Nusv (gl.VertexAttrib4Nusv) #undef glVertexAttrib4bv #define glVertexAttrib4bv (gl.VertexAttrib4bv) #undef glVertexAttrib4d #define glVertexAttrib4d (gl.VertexAttrib4d) #undef glVertexAttrib4dv #define glVertexAttrib4dv (gl.VertexAttrib4dv) #undef glVertexAttrib4f #define glVertexAttrib4f (gl.VertexAttrib4f) #undef glVertexAttrib4fv #define glVertexAttrib4fv (gl.VertexAttrib4fv) #undef glVertexAttrib4iv #define glVertexAttrib4iv (gl.VertexAttrib4iv) #undef glVertexAttrib4s #define glVertexAttrib4s (gl.VertexAttrib4s) #undef glVertexAttrib4sv #define glVertexAttrib4sv (gl.VertexAttrib4sv) #undef glVertexAttrib4ubv #define glVertexAttrib4ubv (gl.VertexAttrib4ubv) #undef glVertexAttrib4uiv #define glVertexAttrib4uiv (gl.VertexAttrib4uiv) #undef glVertexAttrib4usv #define glVertexAttrib4usv (gl.VertexAttrib4usv) #undef glVertexAttribBinding #define glVertexAttribBinding (gl.VertexAttribBinding) #undef glVertexAttribDivisor #define glVertexAttribDivisor (gl.VertexAttribDivisor) #undef glVertexAttribDivisorARB #define glVertexAttribDivisorARB (gl.VertexAttribDivisorARB) #undef glVertexAttribFormat #define glVertexAttribFormat (gl.VertexAttribFormat) #undef glVertexAttribFormatNV #define glVertexAttribFormatNV (gl.VertexAttribFormatNV) #undef glVertexAttribI1i #define glVertexAttribI1i (gl.VertexAttribI1i) #undef glVertexAttribI1iEXT #define glVertexAttribI1iEXT (gl.VertexAttribI1iEXT) #undef glVertexAttribI1iv #define glVertexAttribI1iv (gl.VertexAttribI1iv) #undef glVertexAttribI1ivEXT #define glVertexAttribI1ivEXT (gl.VertexAttribI1ivEXT) #undef glVertexAttribI1ui #define glVertexAttribI1ui (gl.VertexAttribI1ui) #undef glVertexAttribI1uiEXT #define glVertexAttribI1uiEXT (gl.VertexAttribI1uiEXT) #undef glVertexAttribI1uiv #define glVertexAttribI1uiv (gl.VertexAttribI1uiv) #undef glVertexAttribI1uivEXT #define glVertexAttribI1uivEXT (gl.VertexAttribI1uivEXT) #undef glVertexAttribI2i #define glVertexAttribI2i (gl.VertexAttribI2i) #undef glVertexAttribI2iEXT #define glVertexAttribI2iEXT (gl.VertexAttribI2iEXT) #undef glVertexAttribI2iv #define glVertexAttribI2iv (gl.VertexAttribI2iv) #undef glVertexAttribI2ivEXT #define glVertexAttribI2ivEXT (gl.VertexAttribI2ivEXT) #undef glVertexAttribI2ui #define glVertexAttribI2ui (gl.VertexAttribI2ui) #undef glVertexAttribI2uiEXT #define glVertexAttribI2uiEXT (gl.VertexAttribI2uiEXT) #undef glVertexAttribI2uiv #define glVertexAttribI2uiv (gl.VertexAttribI2uiv) #undef glVertexAttribI2uivEXT #define glVertexAttribI2uivEXT (gl.VertexAttribI2uivEXT) #undef glVertexAttribI3i #define glVertexAttribI3i (gl.VertexAttribI3i) #undef glVertexAttribI3iEXT #define glVertexAttribI3iEXT (gl.VertexAttribI3iEXT) #undef glVertexAttribI3iv #define glVertexAttribI3iv (gl.VertexAttribI3iv) #undef glVertexAttribI3ivEXT #define glVertexAttribI3ivEXT (gl.VertexAttribI3ivEXT) #undef glVertexAttribI3ui #define glVertexAttribI3ui (gl.VertexAttribI3ui) #undef glVertexAttribI3uiEXT #define glVertexAttribI3uiEXT (gl.VertexAttribI3uiEXT) #undef glVertexAttribI3uiv #define glVertexAttribI3uiv (gl.VertexAttribI3uiv) #undef glVertexAttribI3uivEXT #define glVertexAttribI3uivEXT (gl.VertexAttribI3uivEXT) #undef glVertexAttribI4bv #define glVertexAttribI4bv (gl.VertexAttribI4bv) #undef glVertexAttribI4bvEXT #define glVertexAttribI4bvEXT (gl.VertexAttribI4bvEXT) #undef glVertexAttribI4i #define glVertexAttribI4i (gl.VertexAttribI4i) #undef glVertexAttribI4iEXT #define glVertexAttribI4iEXT (gl.VertexAttribI4iEXT) #undef glVertexAttribI4iv #define glVertexAttribI4iv (gl.VertexAttribI4iv) #undef glVertexAttribI4ivEXT #define glVertexAttribI4ivEXT (gl.VertexAttribI4ivEXT) #undef glVertexAttribI4sv #define glVertexAttribI4sv (gl.VertexAttribI4sv) #undef glVertexAttribI4svEXT #define glVertexAttribI4svEXT (gl.VertexAttribI4svEXT) #undef glVertexAttribI4ubv #define glVertexAttribI4ubv (gl.VertexAttribI4ubv) #undef glVertexAttribI4ubvEXT #define glVertexAttribI4ubvEXT (gl.VertexAttribI4ubvEXT) #undef glVertexAttribI4ui #define glVertexAttribI4ui (gl.VertexAttribI4ui) #undef glVertexAttribI4uiEXT #define glVertexAttribI4uiEXT (gl.VertexAttribI4uiEXT) #undef glVertexAttribI4uiv #define glVertexAttribI4uiv (gl.VertexAttribI4uiv) #undef glVertexAttribI4uivEXT #define glVertexAttribI4uivEXT (gl.VertexAttribI4uivEXT) #undef glVertexAttribI4usv #define glVertexAttribI4usv (gl.VertexAttribI4usv) #undef glVertexAttribI4usvEXT #define glVertexAttribI4usvEXT (gl.VertexAttribI4usvEXT) #undef glVertexAttribIFormat #define glVertexAttribIFormat (gl.VertexAttribIFormat) #undef glVertexAttribIFormatNV #define glVertexAttribIFormatNV (gl.VertexAttribIFormatNV) #undef glVertexAttribIPointer #define glVertexAttribIPointer (gl.VertexAttribIPointer) #undef glVertexAttribIPointerEXT #define glVertexAttribIPointerEXT (gl.VertexAttribIPointerEXT) #undef glVertexAttribL1d #define glVertexAttribL1d (gl.VertexAttribL1d) #undef glVertexAttribL1dEXT #define glVertexAttribL1dEXT (gl.VertexAttribL1dEXT) #undef glVertexAttribL1dv #define glVertexAttribL1dv (gl.VertexAttribL1dv) #undef glVertexAttribL1dvEXT #define glVertexAttribL1dvEXT (gl.VertexAttribL1dvEXT) #undef glVertexAttribL1i64NV #define glVertexAttribL1i64NV (gl.VertexAttribL1i64NV) #undef glVertexAttribL1i64vNV #define glVertexAttribL1i64vNV (gl.VertexAttribL1i64vNV) #undef glVertexAttribL1ui64ARB #define glVertexAttribL1ui64ARB (gl.VertexAttribL1ui64ARB) #undef glVertexAttribL1ui64NV #define glVertexAttribL1ui64NV (gl.VertexAttribL1ui64NV) #undef glVertexAttribL1ui64vARB #define glVertexAttribL1ui64vARB (gl.VertexAttribL1ui64vARB) #undef glVertexAttribL1ui64vNV #define glVertexAttribL1ui64vNV (gl.VertexAttribL1ui64vNV) #undef glVertexAttribL2d #define glVertexAttribL2d (gl.VertexAttribL2d) #undef glVertexAttribL2dEXT #define glVertexAttribL2dEXT (gl.VertexAttribL2dEXT) #undef glVertexAttribL2dv #define glVertexAttribL2dv (gl.VertexAttribL2dv) #undef glVertexAttribL2dvEXT #define glVertexAttribL2dvEXT (gl.VertexAttribL2dvEXT) #undef glVertexAttribL2i64NV #define glVertexAttribL2i64NV (gl.VertexAttribL2i64NV) #undef glVertexAttribL2i64vNV #define glVertexAttribL2i64vNV (gl.VertexAttribL2i64vNV) #undef glVertexAttribL2ui64NV #define glVertexAttribL2ui64NV (gl.VertexAttribL2ui64NV) #undef glVertexAttribL2ui64vNV #define glVertexAttribL2ui64vNV (gl.VertexAttribL2ui64vNV) #undef glVertexAttribL3d #define glVertexAttribL3d (gl.VertexAttribL3d) #undef glVertexAttribL3dEXT #define glVertexAttribL3dEXT (gl.VertexAttribL3dEXT) #undef glVertexAttribL3dv #define glVertexAttribL3dv (gl.VertexAttribL3dv) #undef glVertexAttribL3dvEXT #define glVertexAttribL3dvEXT (gl.VertexAttribL3dvEXT) #undef glVertexAttribL3i64NV #define glVertexAttribL3i64NV (gl.VertexAttribL3i64NV) #undef glVertexAttribL3i64vNV #define glVertexAttribL3i64vNV (gl.VertexAttribL3i64vNV) #undef glVertexAttribL3ui64NV #define glVertexAttribL3ui64NV (gl.VertexAttribL3ui64NV) #undef glVertexAttribL3ui64vNV #define glVertexAttribL3ui64vNV (gl.VertexAttribL3ui64vNV) #undef glVertexAttribL4d #define glVertexAttribL4d (gl.VertexAttribL4d) #undef glVertexAttribL4dEXT #define glVertexAttribL4dEXT (gl.VertexAttribL4dEXT) #undef glVertexAttribL4dv #define glVertexAttribL4dv (gl.VertexAttribL4dv) #undef glVertexAttribL4dvEXT #define glVertexAttribL4dvEXT (gl.VertexAttribL4dvEXT) #undef glVertexAttribL4i64NV #define glVertexAttribL4i64NV (gl.VertexAttribL4i64NV) #undef glVertexAttribL4i64vNV #define glVertexAttribL4i64vNV (gl.VertexAttribL4i64vNV) #undef glVertexAttribL4ui64NV #define glVertexAttribL4ui64NV (gl.VertexAttribL4ui64NV) #undef glVertexAttribL4ui64vNV #define glVertexAttribL4ui64vNV (gl.VertexAttribL4ui64vNV) #undef glVertexAttribLFormat #define glVertexAttribLFormat (gl.VertexAttribLFormat) #undef glVertexAttribLFormatNV #define glVertexAttribLFormatNV (gl.VertexAttribLFormatNV) #undef glVertexAttribLPointer #define glVertexAttribLPointer (gl.VertexAttribLPointer) #undef glVertexAttribLPointerEXT #define glVertexAttribLPointerEXT (gl.VertexAttribLPointerEXT) #undef glVertexAttribP1ui #define glVertexAttribP1ui (gl.VertexAttribP1ui) #undef glVertexAttribP1uiv #define glVertexAttribP1uiv (gl.VertexAttribP1uiv) #undef glVertexAttribP2ui #define glVertexAttribP2ui (gl.VertexAttribP2ui) #undef glVertexAttribP2uiv #define glVertexAttribP2uiv (gl.VertexAttribP2uiv) #undef glVertexAttribP3ui #define glVertexAttribP3ui (gl.VertexAttribP3ui) #undef glVertexAttribP3uiv #define glVertexAttribP3uiv (gl.VertexAttribP3uiv) #undef glVertexAttribP4ui #define glVertexAttribP4ui (gl.VertexAttribP4ui) #undef glVertexAttribP4uiv #define glVertexAttribP4uiv (gl.VertexAttribP4uiv) #undef glVertexAttribParameteriAMD #define glVertexAttribParameteriAMD (gl.VertexAttribParameteriAMD) #undef glVertexAttribPointer #define glVertexAttribPointer (gl.VertexAttribPointer) #undef glVertexBindingDivisor #define glVertexBindingDivisor (gl.VertexBindingDivisor) #undef glVertexFormatNV #define glVertexFormatNV (gl.VertexFormatNV) #undef glVertexP2ui #define glVertexP2ui (gl.VertexP2ui) #undef glVertexP2uiv #define glVertexP2uiv (gl.VertexP2uiv) #undef glVertexP3ui #define glVertexP3ui (gl.VertexP3ui) #undef glVertexP3uiv #define glVertexP3uiv (gl.VertexP3uiv) #undef glVertexP4ui #define glVertexP4ui (gl.VertexP4ui) #undef glVertexP4uiv #define glVertexP4uiv (gl.VertexP4uiv) #undef glVertexPointSizefAPPLE #define glVertexPointSizefAPPLE (gl.VertexPointSizefAPPLE) #undef glVideoCaptureNV #define glVideoCaptureNV (gl.VideoCaptureNV) #undef glVideoCaptureStreamParameterdvNV #define glVideoCaptureStreamParameterdvNV (gl.VideoCaptureStreamParameterdvNV) #undef glVideoCaptureStreamParameterfvNV #define glVideoCaptureStreamParameterfvNV (gl.VideoCaptureStreamParameterfvNV) #undef glVideoCaptureStreamParameterivNV #define glVideoCaptureStreamParameterivNV (gl.VideoCaptureStreamParameterivNV) #undef glViewportArrayv #define glViewportArrayv (gl.ViewportArrayv) #undef glViewportIndexedf #define glViewportIndexedf (gl.ViewportIndexedf) #undef glViewportIndexedfv #define glViewportIndexedfv (gl.ViewportIndexedfv) #undef glWaitSync #define glWaitSync (gl.WaitSync) #undef glWeightPathsNV #define glWeightPathsNV (gl.WeightPathsNV) #undef glBindTextureUnit #define glBindTextureUnit (gl.BindTextureUnit) #undef glBlendBarrierKHR #define glBlendBarrierKHR (gl.BlendBarrierKHR) #undef glBlitNamedFramebuffer #define glBlitNamedFramebuffer (gl.BlitNamedFramebuffer) #undef glBufferPageCommitmentARB #define glBufferPageCommitmentARB (gl.BufferPageCommitmentARB) #undef glCallCommandListNV #define glCallCommandListNV (gl.CallCommandListNV) #undef glCheckNamedFramebufferStatus #define glCheckNamedFramebufferStatus (gl.CheckNamedFramebufferStatus) #undef glClearNamedBufferData #define glClearNamedBufferData (gl.ClearNamedBufferData) #undef glClearNamedBufferSubData #define glClearNamedBufferSubData (gl.ClearNamedBufferSubData) #undef glClearNamedFramebufferfi #define glClearNamedFramebufferfi (gl.ClearNamedFramebufferfi) #undef glClearNamedFramebufferfv #define glClearNamedFramebufferfv (gl.ClearNamedFramebufferfv) #undef glClearNamedFramebufferiv #define glClearNamedFramebufferiv (gl.ClearNamedFramebufferiv) #undef glClearNamedFramebufferuiv #define glClearNamedFramebufferuiv (gl.ClearNamedFramebufferuiv) #undef glClipControl #define glClipControl (gl.ClipControl) #undef glCommandListSegmentsNV #define glCommandListSegmentsNV (gl.CommandListSegmentsNV) #undef glCompileCommandListNV #define glCompileCommandListNV (gl.CompileCommandListNV) #undef glCompressedTextureSubImage1D #define glCompressedTextureSubImage1D (gl.CompressedTextureSubImage1D) #undef glCompressedTextureSubImage2D #define glCompressedTextureSubImage2D (gl.CompressedTextureSubImage2D) #undef glCompressedTextureSubImage3D #define glCompressedTextureSubImage3D (gl.CompressedTextureSubImage3D) #undef glCopyNamedBufferSubData #define glCopyNamedBufferSubData (gl.CopyNamedBufferSubData) #undef glCopyTextureSubImage1D #define glCopyTextureSubImage1D (gl.CopyTextureSubImage1D) #undef glCopyTextureSubImage2D #define glCopyTextureSubImage2D (gl.CopyTextureSubImage2D) #undef glCopyTextureSubImage3D #define glCopyTextureSubImage3D (gl.CopyTextureSubImage3D) #undef glCoverageModulationNV #define glCoverageModulationNV (gl.CoverageModulationNV) #undef glCoverageModulationTableNV #define glCoverageModulationTableNV (gl.CoverageModulationTableNV) #undef glCreateBuffers #define glCreateBuffers (gl.CreateBuffers) #undef glCreateCommandListsNV #define glCreateCommandListsNV (gl.CreateCommandListsNV) #undef glCreateFramebuffers #define glCreateFramebuffers (gl.CreateFramebuffers) #undef glCreateProgramPipelines #define glCreateProgramPipelines (gl.CreateProgramPipelines) #undef glCreateQueries #define glCreateQueries (gl.CreateQueries) #undef glCreateRenderbuffers #define glCreateRenderbuffers (gl.CreateRenderbuffers) #undef glCreateSamplers #define glCreateSamplers (gl.CreateSamplers) #undef glCreateStatesNV #define glCreateStatesNV (gl.CreateStatesNV) #undef glCreateTextures #define glCreateTextures (gl.CreateTextures) #undef glCreateTransformFeedbacks #define glCreateTransformFeedbacks (gl.CreateTransformFeedbacks) #undef glCreateVertexArrays #define glCreateVertexArrays (gl.CreateVertexArrays) #undef glDeleteCommandListsNV #define glDeleteCommandListsNV (gl.DeleteCommandListsNV) #undef glDeleteStatesNV #define glDeleteStatesNV (gl.DeleteStatesNV) #undef glDisableVertexArrayAttrib #define glDisableVertexArrayAttrib (gl.DisableVertexArrayAttrib) #undef glDrawCommandsAddressNV #define glDrawCommandsAddressNV (gl.DrawCommandsAddressNV) #undef glDrawCommandsNV #define glDrawCommandsNV (gl.DrawCommandsNV) #undef glDrawCommandsStatesAddressNV #define glDrawCommandsStatesAddressNV (gl.DrawCommandsStatesAddressNV) #undef glDrawCommandsStatesNV #define glDrawCommandsStatesNV (gl.DrawCommandsStatesNV) #undef glEnableVertexArrayAttrib #define glEnableVertexArrayAttrib (gl.EnableVertexArrayAttrib) #undef glFlushMappedNamedBufferRange #define glFlushMappedNamedBufferRange (gl.FlushMappedNamedBufferRange) #undef glFragmentCoverageColorNV #define glFragmentCoverageColorNV (gl.FragmentCoverageColorNV) #undef glFramebufferSampleLocationsfvNV #define glFramebufferSampleLocationsfvNV (gl.FramebufferSampleLocationsfvNV) #undef glFramebufferTextureMultiviewOVR #define glFramebufferTextureMultiviewOVR (gl.FramebufferTextureMultiviewOVR) #undef glGenerateTextureMipmap #define glGenerateTextureMipmap (gl.GenerateTextureMipmap) #undef glGetCommandHeaderNV #define glGetCommandHeaderNV (gl.GetCommandHeaderNV) #undef glGetCompressedTextureImage #define glGetCompressedTextureImage (gl.GetCompressedTextureImage) #undef glGetCompressedTextureSubImage #define glGetCompressedTextureSubImage (gl.GetCompressedTextureSubImage) #undef glGetCoverageModulationTableNV #define glGetCoverageModulationTableNV (gl.GetCoverageModulationTableNV) #undef glGetGraphicsResetStatus #define glGetGraphicsResetStatus (gl.GetGraphicsResetStatus) #undef glGetInternalformatSampleivNV #define glGetInternalformatSampleivNV (gl.GetInternalformatSampleivNV) #undef glGetNamedBufferParameteri64v #define glGetNamedBufferParameteri64v (gl.GetNamedBufferParameteri64v) #undef glGetNamedBufferParameteriv #define glGetNamedBufferParameteriv (gl.GetNamedBufferParameteriv) #undef glGetNamedBufferPointerv #define glGetNamedBufferPointerv (gl.GetNamedBufferPointerv) #undef glGetNamedBufferSubData #define glGetNamedBufferSubData (gl.GetNamedBufferSubData) #undef glGetNamedFramebufferAttachmentParameteriv #define glGetNamedFramebufferAttachmentParameteriv (gl.GetNamedFramebufferAttachmentParameteriv) #undef glGetNamedFramebufferParameteriv #define glGetNamedFramebufferParameteriv (gl.GetNamedFramebufferParameteriv) #undef glGetNamedRenderbufferParameteriv #define glGetNamedRenderbufferParameteriv (gl.GetNamedRenderbufferParameteriv) #undef glGetProgramResourcefvNV #define glGetProgramResourcefvNV (gl.GetProgramResourcefvNV) #undef glGetQueryBufferObjecti64v #define glGetQueryBufferObjecti64v (gl.GetQueryBufferObjecti64v) #undef glGetQueryBufferObjectiv #define glGetQueryBufferObjectiv (gl.GetQueryBufferObjectiv) #undef glGetQueryBufferObjectui64v #define glGetQueryBufferObjectui64v (gl.GetQueryBufferObjectui64v) #undef glGetQueryBufferObjectuiv #define glGetQueryBufferObjectuiv (gl.GetQueryBufferObjectuiv) #undef glGetStageIndexNV #define glGetStageIndexNV (gl.GetStageIndexNV) #undef glGetTextureImage #define glGetTextureImage (gl.GetTextureImage) #undef glGetTextureLevelParameterfv #define glGetTextureLevelParameterfv (gl.GetTextureLevelParameterfv) #undef glGetTextureLevelParameteriv #define glGetTextureLevelParameteriv (gl.GetTextureLevelParameteriv) #undef glGetTextureParameterIiv #define glGetTextureParameterIiv (gl.GetTextureParameterIiv) #undef glGetTextureParameterIuiv #define glGetTextureParameterIuiv (gl.GetTextureParameterIuiv) #undef glGetTextureParameterfv #define glGetTextureParameterfv (gl.GetTextureParameterfv) #undef glGetTextureParameteriv #define glGetTextureParameteriv (gl.GetTextureParameteriv) #undef glGetTextureSubImage #define glGetTextureSubImage (gl.GetTextureSubImage) #undef glGetTransformFeedbacki64_v #define glGetTransformFeedbacki64_v (gl.GetTransformFeedbacki64_v) #undef glGetTransformFeedbacki_v #define glGetTransformFeedbacki_v (gl.GetTransformFeedbacki_v) #undef glGetTransformFeedbackiv #define glGetTransformFeedbackiv (gl.GetTransformFeedbackiv) #undef glGetVertexArrayIndexed64iv #define glGetVertexArrayIndexed64iv (gl.GetVertexArrayIndexed64iv) #undef glGetVertexArrayIndexediv #define glGetVertexArrayIndexediv (gl.GetVertexArrayIndexediv) #undef glGetVertexArrayiv #define glGetVertexArrayiv (gl.GetVertexArrayiv) #undef glGetnColorTable #define glGetnColorTable (gl.GetnColorTable) #undef glGetnCompressedTexImage #define glGetnCompressedTexImage (gl.GetnCompressedTexImage) #undef glGetnConvolutionFilter #define glGetnConvolutionFilter (gl.GetnConvolutionFilter) #undef glGetnHistogram #define glGetnHistogram (gl.GetnHistogram) #undef glGetnMapdv #define glGetnMapdv (gl.GetnMapdv) #undef glGetnMapfv #define glGetnMapfv (gl.GetnMapfv) #undef glGetnMapiv #define glGetnMapiv (gl.GetnMapiv) #undef glGetnMinmax #define glGetnMinmax (gl.GetnMinmax) #undef glGetnPixelMapfv #define glGetnPixelMapfv (gl.GetnPixelMapfv) #undef glGetnPixelMapuiv #define glGetnPixelMapuiv (gl.GetnPixelMapuiv) #undef glGetnPixelMapusv #define glGetnPixelMapusv (gl.GetnPixelMapusv) #undef glGetnPolygonStipple #define glGetnPolygonStipple (gl.GetnPolygonStipple) #undef glGetnSeparableFilter #define glGetnSeparableFilter (gl.GetnSeparableFilter) #undef glGetnTexImage #define glGetnTexImage (gl.GetnTexImage) #undef glGetnUniformdv #define glGetnUniformdv (gl.GetnUniformdv) #undef glGetnUniformfv #define glGetnUniformfv (gl.GetnUniformfv) #undef glGetnUniformiv #define glGetnUniformiv (gl.GetnUniformiv) #undef glGetnUniformuiv #define glGetnUniformuiv (gl.GetnUniformuiv) #undef glInvalidateNamedFramebufferData #define glInvalidateNamedFramebufferData (gl.InvalidateNamedFramebufferData) #undef glInvalidateNamedFramebufferSubData #define glInvalidateNamedFramebufferSubData (gl.InvalidateNamedFramebufferSubData) #undef glIsCommandListNV #define glIsCommandListNV (gl.IsCommandListNV) #undef glIsStateNV #define glIsStateNV (gl.IsStateNV) #undef glListDrawCommandsStatesClientNV #define glListDrawCommandsStatesClientNV (gl.ListDrawCommandsStatesClientNV) #undef glMapNamedBuffer #define glMapNamedBuffer (gl.MapNamedBuffer) #undef glMapNamedBufferRange #define glMapNamedBufferRange (gl.MapNamedBufferRange) #undef glMatrixLoad3x2fNV #define glMatrixLoad3x2fNV (gl.MatrixLoad3x2fNV) #undef glMatrixLoad3x3fNV #define glMatrixLoad3x3fNV (gl.MatrixLoad3x3fNV) #undef glMatrixLoadTranspose3x3fNV #define glMatrixLoadTranspose3x3fNV (gl.MatrixLoadTranspose3x3fNV) #undef glMatrixMult3x2fNV #define glMatrixMult3x2fNV (gl.MatrixMult3x2fNV) #undef glMatrixMult3x3fNV #define glMatrixMult3x3fNV (gl.MatrixMult3x3fNV) #undef glMatrixMultTranspose3x3fNV #define glMatrixMultTranspose3x3fNV (gl.MatrixMultTranspose3x3fNV) #undef glMemoryBarrierByRegion #define glMemoryBarrierByRegion (gl.MemoryBarrierByRegion) #undef glMultiDrawArraysIndirectBindlessCountNV #define glMultiDrawArraysIndirectBindlessCountNV (gl.MultiDrawArraysIndirectBindlessCountNV) #undef glMultiDrawElementsIndirectBindlessCountNV #define glMultiDrawElementsIndirectBindlessCountNV (gl.MultiDrawElementsIndirectBindlessCountNV) #undef glNamedBufferData #define glNamedBufferData (gl.NamedBufferData) #undef glNamedBufferPageCommitmentARB #define glNamedBufferPageCommitmentARB (gl.NamedBufferPageCommitmentARB) #undef glNamedBufferPageCommitmentEXT #define glNamedBufferPageCommitmentEXT (gl.NamedBufferPageCommitmentEXT) #undef glNamedBufferStorage #define glNamedBufferStorage (gl.NamedBufferStorage) #undef glNamedBufferSubData #define glNamedBufferSubData (gl.NamedBufferSubData) #undef glNamedFramebufferDrawBuffer #define glNamedFramebufferDrawBuffer (gl.NamedFramebufferDrawBuffer) #undef glNamedFramebufferDrawBuffers #define glNamedFramebufferDrawBuffers (gl.NamedFramebufferDrawBuffers) #undef glNamedFramebufferParameteri #define glNamedFramebufferParameteri (gl.NamedFramebufferParameteri) #undef glNamedFramebufferReadBuffer #define glNamedFramebufferReadBuffer (gl.NamedFramebufferReadBuffer) #undef glNamedFramebufferRenderbuffer #define glNamedFramebufferRenderbuffer (gl.NamedFramebufferRenderbuffer) #undef glNamedFramebufferSampleLocationsfvNV #define glNamedFramebufferSampleLocationsfvNV (gl.NamedFramebufferSampleLocationsfvNV) #undef glNamedFramebufferTexture #define glNamedFramebufferTexture (gl.NamedFramebufferTexture) #undef glNamedFramebufferTextureLayer #define glNamedFramebufferTextureLayer (gl.NamedFramebufferTextureLayer) #undef glNamedRenderbufferStorage #define glNamedRenderbufferStorage (gl.NamedRenderbufferStorage) #undef glNamedRenderbufferStorageMultisample #define glNamedRenderbufferStorageMultisample (gl.NamedRenderbufferStorageMultisample) #undef glPathGlyphIndexArrayNV #define glPathGlyphIndexArrayNV (gl.PathGlyphIndexArrayNV) #undef glPathGlyphIndexRangeNV #define glPathGlyphIndexRangeNV (gl.PathGlyphIndexRangeNV) #undef glPathMemoryGlyphIndexArrayNV #define glPathMemoryGlyphIndexArrayNV (gl.PathMemoryGlyphIndexArrayNV) #undef glPolygonOffsetClampEXT #define glPolygonOffsetClampEXT (gl.PolygonOffsetClampEXT) #undef glProgramPathFragmentInputGenNV #define glProgramPathFragmentInputGenNV (gl.ProgramPathFragmentInputGenNV) #undef glRasterSamplesEXT #define glRasterSamplesEXT (gl.RasterSamplesEXT) #undef glReadnPixels #define glReadnPixels (gl.ReadnPixels) #undef glResolveDepthValuesNV #define glResolveDepthValuesNV (gl.ResolveDepthValuesNV) #undef glStateCaptureNV #define glStateCaptureNV (gl.StateCaptureNV) #undef glStencilThenCoverFillPathInstancedNV #define glStencilThenCoverFillPathInstancedNV (gl.StencilThenCoverFillPathInstancedNV) #undef glStencilThenCoverFillPathNV #define glStencilThenCoverFillPathNV (gl.StencilThenCoverFillPathNV) #undef glStencilThenCoverStrokePathInstancedNV #define glStencilThenCoverStrokePathInstancedNV (gl.StencilThenCoverStrokePathInstancedNV) #undef glStencilThenCoverStrokePathNV #define glStencilThenCoverStrokePathNV (gl.StencilThenCoverStrokePathNV) #undef glSubpixelPrecisionBiasNV #define glSubpixelPrecisionBiasNV (gl.SubpixelPrecisionBiasNV) #undef glTextureBarrier #define glTextureBarrier (gl.TextureBarrier) #undef glTextureBuffer #define glTextureBuffer (gl.TextureBuffer) #undef glTextureBufferRange #define glTextureBufferRange (gl.TextureBufferRange) #undef glTextureParameterIiv #define glTextureParameterIiv (gl.TextureParameterIiv) #undef glTextureParameterIuiv #define glTextureParameterIuiv (gl.TextureParameterIuiv) #undef glTextureParameterf #define glTextureParameterf (gl.TextureParameterf) #undef glTextureParameterfv #define glTextureParameterfv (gl.TextureParameterfv) #undef glTextureParameteri #define glTextureParameteri (gl.TextureParameteri) #undef glTextureParameteriv #define glTextureParameteriv (gl.TextureParameteriv) #undef glTextureStorage1D #define glTextureStorage1D (gl.TextureStorage1D) #undef glTextureStorage2D #define glTextureStorage2D (gl.TextureStorage2D) #undef glTextureStorage2DMultisample #define glTextureStorage2DMultisample (gl.TextureStorage2DMultisample) #undef glTextureStorage3D #define glTextureStorage3D (gl.TextureStorage3D) #undef glTextureStorage3DMultisample #define glTextureStorage3DMultisample (gl.TextureStorage3DMultisample) #undef glTextureSubImage1D #define glTextureSubImage1D (gl.TextureSubImage1D) #undef glTextureSubImage2D #define glTextureSubImage2D (gl.TextureSubImage2D) #undef glTextureSubImage3D #define glTextureSubImage3D (gl.TextureSubImage3D) #undef glTransformFeedbackBufferBase #define glTransformFeedbackBufferBase (gl.TransformFeedbackBufferBase) #undef glTransformFeedbackBufferRange #define glTransformFeedbackBufferRange (gl.TransformFeedbackBufferRange) #undef glUnmapNamedBuffer #define glUnmapNamedBuffer (gl.UnmapNamedBuffer) #undef glVertexArrayAttribBinding #define glVertexArrayAttribBinding (gl.VertexArrayAttribBinding) #undef glVertexArrayAttribFormat #define glVertexArrayAttribFormat (gl.VertexArrayAttribFormat) #undef glVertexArrayAttribIFormat #define glVertexArrayAttribIFormat (gl.VertexArrayAttribIFormat) #undef glVertexArrayAttribLFormat #define glVertexArrayAttribLFormat (gl.VertexArrayAttribLFormat) #undef glVertexArrayBindingDivisor #define glVertexArrayBindingDivisor (gl.VertexArrayBindingDivisor) #undef glVertexArrayElementBuffer #define glVertexArrayElementBuffer (gl.VertexArrayElementBuffer) #undef glVertexArrayVertexBuffer #define glVertexArrayVertexBuffer (gl.VertexArrayVertexBuffer) #undef glVertexArrayVertexBuffers #define glVertexArrayVertexBuffers (gl.VertexArrayVertexBuffers) #undef OSMesaCreateContextAttribs #define OSMesaCreateContextAttribs (gl.OSMesaCreateContextAttribs) #undef glSpecializeShader #define glSpecializeShader (gl.SpecializeShader) #undef glSpecializeShaderARB #define glSpecializeShaderARB (gl.SpecializeShaderARB) #undef glMultiDrawArraysIndirectCount #define glMultiDrawArraysIndirectCount (gl.MultiDrawArraysIndirectCount) #undef glMultiDrawElementsIndirectCount #define glMultiDrawElementsIndirectCount (gl.MultiDrawElementsIndirectCount) #undef glPolygonOffsetClamp #define glPolygonOffsetClamp (gl.PolygonOffsetClamp) #undef glPrimitiveBoundingBoxARB #define glPrimitiveBoundingBoxARB (gl.PrimitiveBoundingBoxARB) #undef glUniform1i64ARB #define glUniform1i64ARB (gl.Uniform1i64ARB) #undef glUniform2i64ARB #define glUniform2i64ARB (gl.Uniform2i64ARB) #undef glUniform3i64ARB #define glUniform3i64ARB (gl.Uniform3i64ARB) #undef glUniform4i64ARB #define glUniform4i64ARB (gl.Uniform4i64ARB) #undef glUniform1i64vARB #define glUniform1i64vARB (gl.Uniform1i64vARB) #undef glUniform2i64vARB #define glUniform2i64vARB (gl.Uniform2i64vARB) #undef glUniform3i64vARB #define glUniform3i64vARB (gl.Uniform3i64vARB) #undef glUniform4i64vARB #define glUniform4i64vARB (gl.Uniform4i64vARB) #undef glUniform1ui64ARB #define glUniform1ui64ARB (gl.Uniform1ui64ARB) #undef glUniform2ui64ARB #define glUniform2ui64ARB (gl.Uniform2ui64ARB) #undef glUniform3ui64ARB #define glUniform3ui64ARB (gl.Uniform3ui64ARB) #undef glUniform4ui64ARB #define glUniform4ui64ARB (gl.Uniform4ui64ARB) #undef glUniform1ui64vARB #define glUniform1ui64vARB (gl.Uniform1ui64vARB) #undef glUniform2ui64vARB #define glUniform2ui64vARB (gl.Uniform2ui64vARB) #undef glUniform3ui64vARB #define glUniform3ui64vARB (gl.Uniform3ui64vARB) #undef glUniform4ui64vARB #define glUniform4ui64vARB (gl.Uniform4ui64vARB) #undef glGetUniformi64vARB #define glGetUniformi64vARB (gl.GetUniformi64vARB) #undef glGetUniformui64vARB #define glGetUniformui64vARB (gl.GetUniformui64vARB) #undef glGetnUniformi64vARB #define glGetnUniformi64vARB (gl.GetnUniformi64vARB) #undef glGetnUniformui64vARB #define glGetnUniformui64vARB (gl.GetnUniformui64vARB) #undef glProgramUniform1i64ARB #define glProgramUniform1i64ARB (gl.ProgramUniform1i64ARB) #undef glProgramUniform2i64ARB #define glProgramUniform2i64ARB (gl.ProgramUniform2i64ARB) #undef glProgramUniform3i64ARB #define glProgramUniform3i64ARB (gl.ProgramUniform3i64ARB) #undef glProgramUniform4i64ARB #define glProgramUniform4i64ARB (gl.ProgramUniform4i64ARB) #undef glProgramUniform1i64vARB #define glProgramUniform1i64vARB (gl.ProgramUniform1i64vARB) #undef glProgramUniform2i64vARB #define glProgramUniform2i64vARB (gl.ProgramUniform2i64vARB) #undef glProgramUniform3i64vARB #define glProgramUniform3i64vARB (gl.ProgramUniform3i64vARB) #undef glProgramUniform4i64vARB #define glProgramUniform4i64vARB (gl.ProgramUniform4i64vARB) #undef glProgramUniform1ui64ARB #define glProgramUniform1ui64ARB (gl.ProgramUniform1ui64ARB) #undef glProgramUniform2ui64ARB #define glProgramUniform2ui64ARB (gl.ProgramUniform2ui64ARB) #undef glProgramUniform3ui64ARB #define glProgramUniform3ui64ARB (gl.ProgramUniform3ui64ARB) #undef glProgramUniform4ui64ARB #define glProgramUniform4ui64ARB (gl.ProgramUniform4ui64ARB) #undef glProgramUniform1ui64vARB #define glProgramUniform1ui64vARB (gl.ProgramUniform1ui64vARB) #undef glProgramUniform2ui64vARB #define glProgramUniform2ui64vARB (gl.ProgramUniform2ui64vARB) #undef glProgramUniform3ui64vARB #define glProgramUniform3ui64vARB (gl.ProgramUniform3ui64vARB) #undef glProgramUniform4ui64vARB #define glProgramUniform4ui64vARB (gl.ProgramUniform4ui64vARB) #undef glMaxShaderCompilerThreadsARB #define glMaxShaderCompilerThreadsARB (gl.MaxShaderCompilerThreadsARB) #undef glFramebufferSampleLocationsfvARB #define glFramebufferSampleLocationsfvARB (gl.FramebufferSampleLocationsfvARB) #undef glNamedFramebufferSampleLocationsfvARB #define glNamedFramebufferSampleLocationsfvARB (gl.NamedFramebufferSampleLocationsfvARB) #undef glEvaluateDepthValuesARB #define glEvaluateDepthValuesARB (gl.EvaluateDepthValuesARB) #undef glMaxShaderCompilerThreadsKHR #define glMaxShaderCompilerThreadsKHR (gl.MaxShaderCompilerThreadsKHR) #undef glBufferStorageExternalEXT #define glBufferStorageExternalEXT (gl.BufferStorageExternalEXT) #undef glNamedBufferStorageExternalEXT #define glNamedBufferStorageExternalEXT (gl.NamedBufferStorageExternalEXT) #undef glGetUnsignedBytevEXT #define glGetUnsignedBytevEXT (gl.GetUnsignedBytevEXT) #undef glGetUnsignedBytei_vEXT #define glGetUnsignedBytei_vEXT (gl.GetUnsignedBytei_vEXT) #undef glDeleteMemoryObjectsEXT #define glDeleteMemoryObjectsEXT (gl.DeleteMemoryObjectsEXT) #undef glIsMemoryObjectEXT #define glIsMemoryObjectEXT (gl.IsMemoryObjectEXT) #undef glCreateMemoryObjectsEXT #define glCreateMemoryObjectsEXT (gl.CreateMemoryObjectsEXT) #undef glMemoryObjectParameterivEXT #define glMemoryObjectParameterivEXT (gl.MemoryObjectParameterivEXT) #undef glGetMemoryObjectParameterivEXT #define glGetMemoryObjectParameterivEXT (gl.GetMemoryObjectParameterivEXT) #undef glTexStorageMem2DEXT #define glTexStorageMem2DEXT (gl.TexStorageMem2DEXT) #undef glTexStorageMem2DMultisampleEXT #define glTexStorageMem2DMultisampleEXT (gl.TexStorageMem2DMultisampleEXT) #undef glTexStorageMem3DEXT #define glTexStorageMem3DEXT (gl.TexStorageMem3DEXT) #undef glTexStorageMem3DMultisampleEXT #define glTexStorageMem3DMultisampleEXT (gl.TexStorageMem3DMultisampleEXT) #undef glBufferStorageMemEXT #define glBufferStorageMemEXT (gl.BufferStorageMemEXT) #undef glTextureStorageMem2DEXT #define glTextureStorageMem2DEXT (gl.TextureStorageMem2DEXT) #undef glTextureStorageMem2DMultisampleEXT #define glTextureStorageMem2DMultisampleEXT (gl.TextureStorageMem2DMultisampleEXT) #undef glTextureStorageMem3DEXT #define glTextureStorageMem3DEXT (gl.TextureStorageMem3DEXT) #undef glTextureStorageMem3DMultisampleEXT #define glTextureStorageMem3DMultisampleEXT (gl.TextureStorageMem3DMultisampleEXT) #undef glNamedBufferStorageMemEXT #define glNamedBufferStorageMemEXT (gl.NamedBufferStorageMemEXT) #undef glTexStorageMem1DEXT #define glTexStorageMem1DEXT (gl.TexStorageMem1DEXT) #undef glTextureStorageMem1DEXT #define glTextureStorageMem1DEXT (gl.TextureStorageMem1DEXT) #undef glImportMemoryFdEXT #define glImportMemoryFdEXT (gl.ImportMemoryFdEXT) #undef glImportMemoryWin32HandleEXT #define glImportMemoryWin32HandleEXT (gl.ImportMemoryWin32HandleEXT) #undef glImportMemoryWin32NameEXT #define glImportMemoryWin32NameEXT (gl.ImportMemoryWin32NameEXT) #undef glGenSemaphoresEXT #define glGenSemaphoresEXT (gl.GenSemaphoresEXT) #undef glDeleteSemaphoresEXT #define glDeleteSemaphoresEXT (gl.DeleteSemaphoresEXT) #undef glIsSemaphoreEXT #define glIsSemaphoreEXT (gl.IsSemaphoreEXT) #undef glSemaphoreParameterui64vEXT #define glSemaphoreParameterui64vEXT (gl.SemaphoreParameterui64vEXT) #undef glGetSemaphoreParameterui64vEXT #define glGetSemaphoreParameterui64vEXT (gl.GetSemaphoreParameterui64vEXT) #undef glWaitSemaphoreEXT #define glWaitSemaphoreEXT (gl.WaitSemaphoreEXT) #undef glSignalSemaphoreEXT #define glSignalSemaphoreEXT (gl.SignalSemaphoreEXT) #undef glImportSemaphoreFdEXT #define glImportSemaphoreFdEXT (gl.ImportSemaphoreFdEXT) #undef glImportSemaphoreWin32HandleEXT #define glImportSemaphoreWin32HandleEXT (gl.ImportSemaphoreWin32HandleEXT) #undef glImportSemaphoreWin32NameEXT #define glImportSemaphoreWin32NameEXT (gl.ImportSemaphoreWin32NameEXT) #undef glAcquireKeyedMutexWin32EXT #define glAcquireKeyedMutexWin32EXT (gl.AcquireKeyedMutexWin32EXT) #undef glReleaseKeyedMutexWin32EXT #define glReleaseKeyedMutexWin32EXT (gl.ReleaseKeyedMutexWin32EXT) #undef glLGPUNamedBufferSubDataNVX #define glLGPUNamedBufferSubDataNVX (gl.LGPUNamedBufferSubDataNVX) #undef glLGPUCopyImageSubDataNVX #define glLGPUCopyImageSubDataNVX (gl.LGPUCopyImageSubDataNVX) #undef glLGPUInterlockNVX #define glLGPUInterlockNVX (gl.LGPUInterlockNVX) #undef glAlphaToCoverageDitherControlNV #define glAlphaToCoverageDitherControlNV (gl.AlphaToCoverageDitherControlNV) #undef glDrawVkImageNV #define glDrawVkImageNV (gl.DrawVkImageNV) #undef glGetVkProcAddrNV #define glGetVkProcAddrNV (gl.GetVkProcAddrNV) #undef glWaitVkSemaphoreNV #define glWaitVkSemaphoreNV (gl.WaitVkSemaphoreNV) #undef glSignalVkSemaphoreNV #define glSignalVkSemaphoreNV (gl.SignalVkSemaphoreNV) #undef glSignalVkFenceNV #define glSignalVkFenceNV (gl.SignalVkFenceNV) #undef glRenderGpuMaskNV #define glRenderGpuMaskNV (gl.RenderGpuMaskNV) #undef glMulticastBufferSubDataNV #define glMulticastBufferSubDataNV (gl.MulticastBufferSubDataNV) #undef glMulticastCopyBufferSubDataNV #define glMulticastCopyBufferSubDataNV (gl.MulticastCopyBufferSubDataNV) #undef glMulticastCopyImageSubDataNV #define glMulticastCopyImageSubDataNV (gl.MulticastCopyImageSubDataNV) #undef glMulticastBlitFramebufferNV #define glMulticastBlitFramebufferNV (gl.MulticastBlitFramebufferNV) #undef glMulticastFramebufferSampleLocationsfvNV #define glMulticastFramebufferSampleLocationsfvNV (gl.MulticastFramebufferSampleLocationsfvNV) #undef glMulticastBarrierNV #define glMulticastBarrierNV (gl.MulticastBarrierNV) #undef glMulticastWaitSyncNV #define glMulticastWaitSyncNV (gl.MulticastWaitSyncNV) #undef glMulticastGetQueryObjectivNV #define glMulticastGetQueryObjectivNV (gl.MulticastGetQueryObjectivNV) #undef glMulticastGetQueryObjectuivNV #define glMulticastGetQueryObjectuivNV (gl.MulticastGetQueryObjectuivNV) #undef glMulticastGetQueryObjecti64vNV #define glMulticastGetQueryObjecti64vNV (gl.MulticastGetQueryObjecti64vNV) #undef glMulticastGetQueryObjectui64vNV #define glMulticastGetQueryObjectui64vNV (gl.MulticastGetQueryObjectui64vNV) #undef glQueryResourceNV #define glQueryResourceNV (gl.QueryResourceNV) #undef glGenQueryResourceTagNV #define glGenQueryResourceTagNV (gl.GenQueryResourceTagNV) #undef glDeleteQueryResourceTagNV #define glDeleteQueryResourceTagNV (gl.DeleteQueryResourceTagNV) #undef glQueryResourceTagNV #define glQueryResourceTagNV (gl.QueryResourceTagNV) #undef glFramebufferSamplePositionsfvAMD #define glFramebufferSamplePositionsfvAMD (gl.FramebufferSamplePositionsfvAMD) #undef glNamedFramebufferSamplePositionsfvAMD #define glNamedFramebufferSamplePositionsfvAMD (gl.NamedFramebufferSamplePositionsfvAMD) #undef glGetFramebufferParameterfvAMD #define glGetFramebufferParameterfvAMD (gl.GetFramebufferParameterfvAMD) #undef glGetNamedFramebufferParameterfvAMD #define glGetNamedFramebufferParameterfvAMD (gl.GetNamedFramebufferParameterfvAMD) #undef glWindowRectanglesEXT #define glWindowRectanglesEXT (gl.WindowRectanglesEXT) #undef glApplyFramebufferAttachmentCMAAINTEL #define glApplyFramebufferAttachmentCMAAINTEL (gl.ApplyFramebufferAttachmentCMAAINTEL) #undef glViewportSwizzleNV #define glViewportSwizzleNV (gl.ViewportSwizzleNV) #undef glViewportPositionWScaleNV #define glViewportPositionWScaleNV (gl.ViewportPositionWScaleNV) #undef glConservativeRasterParameterfNV #define glConservativeRasterParameterfNV (gl.ConservativeRasterParameterfNV) #undef glConservativeRasterParameteriNV #define glConservativeRasterParameteriNV (gl.ConservativeRasterParameteriNV) #endif /* * Functions exported from TinyGL that take float arguments, * and conflict with OpenGL functions of the same name */ #undef glFrustum #define glFrustum glFrustumf #undef glClearDepth #define glClearDepth glClearDepthf #undef glOrtho #define glOrtho glOrthof #undef gluLookAt #define gluLookAt gluLookAtf /* fix bad name */ #undef information #define tinyglinformation gl.information /* Functions generated: 13 OSMesa + 2956 GL + 2 GLU */ #endif /* __NFOSMESA_H__ */ aranym-1.1.0/atari/nfosmesa/gltypes.h0000664000175000017500000011340313454637621015756 0ustar joyjoy#if !defined(__MSHORT__) && (defined(__PUREC__) && __PUREC__ < 0x400) # define __MSHORT__ 1 #endif #ifdef __cplusplus extern "C" { #endif #ifndef APIENTRY #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) #define APIENTRY __stdcall #elif defined(__PUREC__) #define APIENTRY __CDECL #else #define APIENTRY #endif #endif #ifndef CALLBACK #define CALLBACK APIENTRY #endif #ifndef GLAPIENTRY #define GLAPIENTRY APIENTRY #endif #ifndef APIENTRYP #define APIENTRYP APIENTRY * #endif #ifndef GLAPI #define GLAPI extern #endif #if !defined(__CDECL) #if defined(__PUREC__) #define __CDECL cdecl #else #define __CDECL #endif #endif #ifndef GL_VERSION_1_1 #define GL_VERSION_1_1 1 #ifdef __MSHORT__ typedef long GLint; /* 4-byte signed */ typedef unsigned long GLuint; /* 4-byte unsigned */ typedef unsigned long GLenum; /* 4-byte unsigned */ typedef unsigned long GLbitfield; /* 4-byte unsigned */ typedef long GLsizei; #else typedef int GLint; /* 4-byte signed */ typedef unsigned int GLuint; /* 4-byte unsigned */ typedef unsigned int GLenum; /* 4-byte unsigned */ typedef unsigned int GLbitfield; /* 4-byte unsigned */ typedef int GLsizei; #endif typedef unsigned char GLboolean; typedef signed char GLbyte; /* 1-byte signed */ typedef unsigned char GLubyte; /* 1-byte unsigned */ typedef short GLshort; /* 2-byte signed */ typedef unsigned short GLushort; /* 2-byte unsigned */ typedef float GLfloat; /* single precision float */ typedef float GLclampf; /* single precision float in [0, 1] */ typedef double GLdouble; /* double precision float */ typedef double GLclampd; /* double precision float in [0, 1] */ typedef void GLvoid; /* Boolean values */ #define GL_FALSE 0 #define GL_TRUE 1 /* Data types */ #define GL_BYTE 0x1400 #define GL_UNSIGNED_BYTE 0x1401 #define GL_SHORT 0x1402 #define GL_UNSIGNED_SHORT 0x1403 #define GL_INT 0x1404 #define GL_UNSIGNED_INT 0x1405 #define GL_FLOAT 0x1406 #define GL_DOUBLE 0x140A #define GL_2_BYTES 0x1407 #define GL_3_BYTES 0x1408 #define GL_4_BYTES 0x1409 /* Primitives */ #define GL_LINES 0x0001 #define GL_POINTS 0x0000 #define GL_LINE_STRIP 0x0003 #define GL_LINE_LOOP 0x0002 #define GL_TRIANGLES 0x0004 #define GL_TRIANGLE_STRIP 0x0005 #define GL_TRIANGLE_FAN 0x0006 #define GL_QUADS 0x0007 #define GL_QUAD_STRIP 0x0008 #define GL_POLYGON 0x0009 #define GL_EDGE_FLAG 0x0B43 /* Vertex Arrays */ #define GL_VERTEX_ARRAY 0x8074 #define GL_NORMAL_ARRAY 0x8075 #define GL_COLOR_ARRAY 0x8076 #define GL_INDEX_ARRAY 0x8077 #define GL_TEXTURE_COORD_ARRAY 0x8078 #define GL_EDGE_FLAG_ARRAY 0x8079 #define GL_VERTEX_ARRAY_SIZE 0x807A #define GL_VERTEX_ARRAY_TYPE 0x807B #define GL_VERTEX_ARRAY_STRIDE 0x807C #define GL_VERTEX_ARRAY_COUNT 0x807D #define GL_NORMAL_ARRAY_TYPE 0x807E #define GL_NORMAL_ARRAY_STRIDE 0x807F #define GL_NORMAL_ARRAY_COUNT 0x8080 #define GL_COLOR_ARRAY_SIZE 0x8081 #define GL_COLOR_ARRAY_TYPE 0x8082 #define GL_COLOR_ARRAY_STRIDE 0x8083 #define GL_COLOR_ARRAY_COUNT 0x8084 #define GL_INDEX_ARRAY_TYPE 0x8085 #define GL_INDEX_ARRAY_STRIDE 0x8086 #define GL_INDEX_ARRAY_COUNT 0x8087 #define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 #define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 #define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A #define GL_TEXTURE_COORD_ARRAY_COUNT 0x808B #define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C #define GL_EDGE_FLAG_ARRAY_COUNT 0x808D #define GL_VERTEX_ARRAY_POINTER 0x808E #define GL_NORMAL_ARRAY_POINTER 0x808F #define GL_COLOR_ARRAY_POINTER 0x8090 #define GL_INDEX_ARRAY_POINTER 0x8091 #define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 #define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 #define GL_V2F 0x2A20 #define GL_V3F 0x2A21 #define GL_C4UB_V2F 0x2A22 #define GL_C4UB_V3F 0x2A23 #define GL_C3F_V3F 0x2A24 #define GL_N3F_V3F 0x2A25 #define GL_C4F_N3F_V3F 0x2A26 #define GL_T2F_V3F 0x2A27 #define GL_T4F_V4F 0x2A28 #define GL_T2F_C4UB_V3F 0x2A29 #define GL_T2F_C3F_V3F 0x2A2A #define GL_T2F_N3F_V3F 0x2A2B #define GL_T2F_C4F_N3F_V3F 0x2A2C #define GL_T4F_C4F_N3F_V4F 0x2A2D /* Matrix Mode */ #define GL_MATRIX_MODE 0x0BA0 #define GL_MODELVIEW 0x1700 #define GL_PROJECTION 0x1701 #define GL_TEXTURE 0x1702 /* Points */ #define GL_POINT_SMOOTH 0x0B10 #define GL_POINT_SIZE 0x0B11 #define GL_POINT_SIZE_GRANULARITY 0x0B13 #define GL_POINT_SIZE_RANGE 0x0B12 /* Lines */ #define GL_LINE_SMOOTH 0x0B20 #define GL_LINE_STIPPLE 0x0B24 #define GL_LINE_STIPPLE_PATTERN 0x0B25 #define GL_LINE_STIPPLE_REPEAT 0x0B26 #define GL_LINE_WIDTH 0x0B21 #define GL_LINE_WIDTH_GRANULARITY 0x0B23 #define GL_LINE_WIDTH_RANGE 0x0B22 /* Polygons */ #define GL_POINT 0x1B00 #define GL_LINE 0x1B01 #define GL_FILL 0x1B02 #define GL_CCW 0x0901 #define GL_CW 0x0900 #define GL_FRONT 0x0404 #define GL_BACK 0x0405 #define GL_CULL_FACE 0x0B44 #define GL_CULL_FACE_MODE 0x0B45 #define GL_POLYGON_SMOOTH 0x0B41 #define GL_POLYGON_STIPPLE 0x0B42 #define GL_FRONT_FACE 0x0B46 #define GL_POLYGON_MODE 0x0B40 #define GL_POLYGON_OFFSET_FACTOR 0x8038 #define GL_POLYGON_OFFSET_UNITS 0x2A00 #define GL_POLYGON_OFFSET_POINT 0x2A01 #define GL_POLYGON_OFFSET_LINE 0x2A02 #define GL_POLYGON_OFFSET_FILL 0x8037 /* Display Lists */ #define GL_COMPILE 0x1300 #define GL_COMPILE_AND_EXECUTE 0x1301 #define GL_LIST_BASE 0x0B32 #define GL_LIST_INDEX 0x0B33 #define GL_LIST_MODE 0x0B30 /* Depth buffer */ #define GL_NEVER 0x0200 #define GL_LESS 0x0201 #define GL_GEQUAL 0x0206 #define GL_LEQUAL 0x0203 #define GL_GREATER 0x0204 #define GL_NOTEQUAL 0x0205 #define GL_EQUAL 0x0202 #define GL_ALWAYS 0x0207 #define GL_DEPTH_TEST 0x0B71 #define GL_DEPTH_BITS 0x0D56 #define GL_DEPTH_CLEAR_VALUE 0x0B73 #define GL_DEPTH_FUNC 0x0B74 #define GL_DEPTH_RANGE 0x0B70 #define GL_DEPTH_WRITEMASK 0x0B72 #define GL_DEPTH_COMPONENT 0x1902 /* Lighting */ #define GL_LIGHTING 0x0B50 #define GL_LIGHT0 0x4000 #define GL_LIGHT1 0x4001 #define GL_LIGHT2 0x4002 #define GL_LIGHT3 0x4003 #define GL_LIGHT4 0x4004 #define GL_LIGHT5 0x4005 #define GL_LIGHT6 0x4006 #define GL_LIGHT7 0x4007 #define GL_SPOT_EXPONENT 0x1205 #define GL_SPOT_CUTOFF 0x1206 #define GL_CONSTANT_ATTENUATION 0x1207 #define GL_LINEAR_ATTENUATION 0x1208 #define GL_QUADRATIC_ATTENUATION 0x1209 #define GL_AMBIENT 0x1200 #define GL_DIFFUSE 0x1201 #define GL_SPECULAR 0x1202 #define GL_SHININESS 0x1601 #define GL_EMISSION 0x1600 #define GL_POSITION 0x1203 #define GL_SPOT_DIRECTION 0x1204 #define GL_AMBIENT_AND_DIFFUSE 0x1602 #define GL_COLOR_INDEXES 0x1603 #define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 #define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 #define GL_LIGHT_MODEL_AMBIENT 0x0B53 #define GL_FRONT_AND_BACK 0x0408 #define GL_SHADE_MODEL 0x0B54 #define GL_FLAT 0x1D00 #define GL_SMOOTH 0x1D01 #define GL_COLOR_MATERIAL 0x0B57 #define GL_COLOR_MATERIAL_FACE 0x0B55 #define GL_COLOR_MATERIAL_PARAMETER 0x0B56 #define GL_NORMALIZE 0x0BA1 /* User clipping planes */ #define GL_CLIP_PLANE0 0x3000 #define GL_CLIP_PLANE1 0x3001 #define GL_CLIP_PLANE2 0x3002 #define GL_CLIP_PLANE3 0x3003 #define GL_CLIP_PLANE4 0x3004 #define GL_CLIP_PLANE5 0x3005 /* Accumulation buffer */ #define GL_ACCUM_RED_BITS 0x0D58 #define GL_ACCUM_GREEN_BITS 0x0D59 #define GL_ACCUM_BLUE_BITS 0x0D5A #define GL_ACCUM_ALPHA_BITS 0x0D5B #define GL_ACCUM_CLEAR_VALUE 0x0B80 #define GL_ACCUM 0x0100 #define GL_ADD 0x0104 #define GL_LOAD 0x0101 #define GL_MULT 0x0103 #define GL_RETURN 0x0102 /* Alpha testing */ #define GL_ALPHA_TEST 0x0BC0 #define GL_ALPHA_TEST_REF 0x0BC2 #define GL_ALPHA_TEST_FUNC 0x0BC1 /* Blending */ #define GL_BLEND 0x0BE2 #define GL_BLEND_SRC 0x0BE1 #define GL_BLEND_DST 0x0BE0 #define GL_ZERO 0 #define GL_ONE 1 #define GL_SRC_COLOR 0x0300 #define GL_ONE_MINUS_SRC_COLOR 0x0301 #define GL_DST_COLOR 0x0306 #define GL_ONE_MINUS_DST_COLOR 0x0307 #define GL_SRC_ALPHA 0x0302 #define GL_ONE_MINUS_SRC_ALPHA 0x0303 #define GL_DST_ALPHA 0x0304 #define GL_ONE_MINUS_DST_ALPHA 0x0305 #define GL_SRC_ALPHA_SATURATE 0x0308 #define GL_CONSTANT_COLOR 0x8001 #define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 #define GL_CONSTANT_ALPHA 0x8003 #define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 /* Render Mode */ #define GL_FEEDBACK 0x1C01 #define GL_RENDER 0x1C00 #define GL_SELECT 0x1C02 /* Feedback */ #define GL_2D 0x0600 #define GL_3D 0x0601 #define GL_3D_COLOR 0x0602 #define GL_3D_COLOR_TEXTURE 0x0603 #define GL_4D_COLOR_TEXTURE 0x0604 #define GL_POINT_TOKEN 0x0701 #define GL_LINE_TOKEN 0x0702 #define GL_LINE_RESET_TOKEN 0x0707 #define GL_POLYGON_TOKEN 0x0703 #define GL_BITMAP_TOKEN 0x0704 #define GL_DRAW_PIXEL_TOKEN 0x0705 #define GL_COPY_PIXEL_TOKEN 0x0706 #define GL_PASS_THROUGH_TOKEN 0x0700 #define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 #define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 #define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 /* Fog */ #define GL_FOG 0x0B60 #define GL_FOG_MODE 0x0B65 #define GL_FOG_DENSITY 0x0B62 #define GL_FOG_COLOR 0x0B66 #define GL_FOG_INDEX 0x0B61 #define GL_FOG_START 0x0B63 #define GL_FOG_END 0x0B64 #define GL_LINEAR 0x2601 #define GL_EXP 0x0800 #define GL_EXP2 0x0801 /* Logic Ops */ #define GL_LOGIC_OP 0x0BF1 #define GL_INDEX_LOGIC_OP 0x0BF1 #define GL_COLOR_LOGIC_OP 0x0BF2 #define GL_LOGIC_OP_MODE 0x0BF0 #define GL_CLEAR 0x1500 #define GL_SET 0x150F #define GL_COPY 0x1503 #define GL_COPY_INVERTED 0x150C #define GL_NOOP 0x1505 #define GL_INVERT 0x150A #define GL_AND 0x1501 #define GL_NAND 0x150E #define GL_OR 0x1507 #define GL_NOR 0x1508 #define GL_XOR 0x1506 #define GL_EQUIV 0x1509 #define GL_AND_REVERSE 0x1502 #define GL_AND_INVERTED 0x1504 #define GL_OR_REVERSE 0x150B #define GL_OR_INVERTED 0x150D /* Stencil */ #define GL_STENCIL_TEST 0x0B90 #define GL_STENCIL_WRITEMASK 0x0B98 #define GL_STENCIL_BITS 0x0D57 #define GL_STENCIL_FUNC 0x0B92 #define GL_STENCIL_VALUE_MASK 0x0B93 #define GL_STENCIL_REF 0x0B97 #define GL_STENCIL_FAIL 0x0B94 #define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 #define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 #define GL_STENCIL_CLEAR_VALUE 0x0B91 #define GL_STENCIL_INDEX 0x1901 #define GL_KEEP 0x1E00 #define GL_REPLACE 0x1E01 #define GL_INCR 0x1E02 #define GL_DECR 0x1E03 /* Buffers, Pixel Drawing/Reading */ #define GL_NONE 0 #define GL_LEFT 0x0406 #define GL_RIGHT 0x0407 #define GL_FRONT_LEFT 0x0400 #define GL_FRONT_RIGHT 0x0401 #define GL_BACK_LEFT 0x0402 #define GL_BACK_RIGHT 0x0403 #define GL_AUX0 0x0409 #define GL_AUX1 0x040A #define GL_AUX2 0x040B #define GL_AUX3 0x040C #define GL_COLOR_INDEX 0x1900 #define GL_RED 0x1903 #define GL_GREEN 0x1904 #define GL_BLUE 0x1905 #define GL_ALPHA 0x1906 #define GL_LUMINANCE 0x1909 #define GL_LUMINANCE_ALPHA 0x190A #define GL_ALPHA_BITS 0x0D55 #define GL_RED_BITS 0x0D52 #define GL_GREEN_BITS 0x0D53 #define GL_BLUE_BITS 0x0D54 #define GL_INDEX_BITS 0x0D51 #define GL_SUBPIXEL_BITS 0x0D50 #define GL_AUX_BUFFERS 0x0C00 #define GL_READ_BUFFER 0x0C02 #define GL_DRAW_BUFFER 0x0C01 #define GL_DOUBLEBUFFER 0x0C32 #define GL_STEREO 0x0C33 #define GL_BITMAP 0x1A00 #define GL_COLOR 0x1800 #define GL_DEPTH 0x1801 #define GL_STENCIL 0x1802 #define GL_DITHER 0x0BD0 #define GL_RGB 0x1907 #define GL_RGBA 0x1908 /* Implementation limits */ #define GL_MAX_LIST_NESTING 0x0B31 #define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 #define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 #define GL_MAX_NAME_STACK_DEPTH 0x0D37 #define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 #define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 #define GL_MAX_EVAL_ORDER 0x0D30 #define GL_MAX_LIGHTS 0x0D31 #define GL_MAX_CLIP_PLANES 0x0D32 #define GL_MAX_TEXTURE_SIZE 0x0D33 #define GL_MAX_PIXEL_MAP_TABLE 0x0D34 #define GL_MAX_VIEWPORT_DIMS 0x0D3A #define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B #define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 /* Gets */ #define GL_ATTRIB_STACK_DEPTH 0x0BB0 #define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 #define GL_COLOR_CLEAR_VALUE 0x0C22 #define GL_COLOR_WRITEMASK 0x0C23 #define GL_CURRENT_INDEX 0x0B01 #define GL_CURRENT_COLOR 0x0B00 #define GL_CURRENT_NORMAL 0x0B02 #define GL_CURRENT_RASTER_COLOR 0x0B04 #define GL_CURRENT_RASTER_DISTANCE 0x0B09 #define GL_CURRENT_RASTER_INDEX 0x0B05 #define GL_CURRENT_RASTER_POSITION 0x0B07 #define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 #define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 #define GL_CURRENT_TEXTURE_COORDS 0x0B03 #define GL_INDEX_CLEAR_VALUE 0x0C20 #define GL_INDEX_MODE 0x0C30 #define GL_INDEX_WRITEMASK 0x0C21 #define GL_MODELVIEW_MATRIX 0x0BA6 #define GL_MODELVIEW_STACK_DEPTH 0x0BA3 #define GL_NAME_STACK_DEPTH 0x0D70 #define GL_PROJECTION_MATRIX 0x0BA7 #define GL_PROJECTION_STACK_DEPTH 0x0BA4 #define GL_RENDER_MODE 0x0C40 #define GL_RGBA_MODE 0x0C31 #define GL_TEXTURE_MATRIX 0x0BA8 #define GL_TEXTURE_STACK_DEPTH 0x0BA5 #define GL_VIEWPORT 0x0BA2 #define GL_COLOR_MATRIX 0x80B1 #define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 /* Evaluators */ #define GL_AUTO_NORMAL 0x0D80 #define GL_MAP1_COLOR_4 0x0D90 #define GL_MAP1_GRID_DOMAIN 0x0DD0 #define GL_MAP1_GRID_SEGMENTS 0x0DD1 #define GL_MAP1_INDEX 0x0D91 #define GL_MAP1_NORMAL 0x0D92 #define GL_MAP1_TEXTURE_COORD_1 0x0D93 #define GL_MAP1_TEXTURE_COORD_2 0x0D94 #define GL_MAP1_TEXTURE_COORD_3 0x0D95 #define GL_MAP1_TEXTURE_COORD_4 0x0D96 #define GL_MAP1_VERTEX_3 0x0D97 #define GL_MAP1_VERTEX_4 0x0D98 #define GL_MAP2_COLOR_4 0x0DB0 #define GL_MAP2_GRID_DOMAIN 0x0DD2 #define GL_MAP2_GRID_SEGMENTS 0x0DD3 #define GL_MAP2_INDEX 0x0DB1 #define GL_MAP2_NORMAL 0x0DB2 #define GL_MAP2_TEXTURE_COORD_1 0x0DB3 #define GL_MAP2_TEXTURE_COORD_2 0x0DB4 #define GL_MAP2_TEXTURE_COORD_3 0x0DB5 #define GL_MAP2_TEXTURE_COORD_4 0x0DB6 #define GL_MAP2_VERTEX_3 0x0DB7 #define GL_MAP2_VERTEX_4 0x0DB8 #define GL_COEFF 0x0A00 #define GL_DOMAIN 0x0A02 #define GL_ORDER 0x0A01 /* Hints */ #define GL_FOG_HINT 0x0C54 #define GL_LINE_SMOOTH_HINT 0x0C52 #define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 #define GL_POINT_SMOOTH_HINT 0x0C51 #define GL_POLYGON_SMOOTH_HINT 0x0C53 #define GL_DONT_CARE 0x1100 #define GL_FASTEST 0x1101 #define GL_NICEST 0x1102 /* Scissor box */ #define GL_SCISSOR_TEST 0x0C11 #define GL_SCISSOR_BOX 0x0C10 /* Pixel Mode / Transfer */ #define GL_MAP_COLOR 0x0D10 #define GL_MAP_STENCIL 0x0D11 #define GL_INDEX_SHIFT 0x0D12 #define GL_INDEX_OFFSET 0x0D13 #define GL_RED_SCALE 0x0D14 #define GL_RED_BIAS 0x0D15 #define GL_GREEN_SCALE 0x0D18 #define GL_GREEN_BIAS 0x0D19 #define GL_BLUE_SCALE 0x0D1A #define GL_BLUE_BIAS 0x0D1B #define GL_ALPHA_SCALE 0x0D1C #define GL_ALPHA_BIAS 0x0D1D #define GL_DEPTH_SCALE 0x0D1E #define GL_DEPTH_BIAS 0x0D1F #define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 #define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 #define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 #define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 #define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 #define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 #define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 #define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 #define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 #define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 #define GL_PIXEL_MAP_S_TO_S 0x0C71 #define GL_PIXEL_MAP_I_TO_I 0x0C70 #define GL_PIXEL_MAP_I_TO_R 0x0C72 #define GL_PIXEL_MAP_I_TO_G 0x0C73 #define GL_PIXEL_MAP_I_TO_B 0x0C74 #define GL_PIXEL_MAP_I_TO_A 0x0C75 #define GL_PIXEL_MAP_R_TO_R 0x0C76 #define GL_PIXEL_MAP_G_TO_G 0x0C77 #define GL_PIXEL_MAP_B_TO_B 0x0C78 #define GL_PIXEL_MAP_A_TO_A 0x0C79 #define GL_PACK_ALIGNMENT 0x0D05 #define GL_PACK_LSB_FIRST 0x0D01 #define GL_PACK_ROW_LENGTH 0x0D02 #define GL_PACK_SKIP_PIXELS 0x0D04 #define GL_PACK_SKIP_ROWS 0x0D03 #define GL_PACK_SWAP_BYTES 0x0D00 #define GL_UNPACK_ALIGNMENT 0x0CF5 #define GL_UNPACK_LSB_FIRST 0x0CF1 #define GL_UNPACK_ROW_LENGTH 0x0CF2 #define GL_UNPACK_SKIP_PIXELS 0x0CF4 #define GL_UNPACK_SKIP_ROWS 0x0CF3 #define GL_UNPACK_SWAP_BYTES 0x0CF0 #define GL_ZOOM_X 0x0D16 #define GL_ZOOM_Y 0x0D17 /* Texture mapping */ #define GL_TEXTURE_ENV 0x2300 #define GL_TEXTURE_ENV_MODE 0x2200 #define GL_TEXTURE_1D 0x0DE0 #define GL_TEXTURE_2D 0x0DE1 #define GL_TEXTURE_WRAP_S 0x2802 #define GL_TEXTURE_WRAP_T 0x2803 #define GL_TEXTURE_MAG_FILTER 0x2800 #define GL_TEXTURE_MIN_FILTER 0x2801 #define GL_TEXTURE_ENV_COLOR 0x2201 #define GL_TEXTURE_GEN_S 0x0C60 #define GL_TEXTURE_GEN_T 0x0C61 #define GL_TEXTURE_GEN_MODE 0x2500 #define GL_TEXTURE_BORDER_COLOR 0x1004 #define GL_TEXTURE_WIDTH 0x1000 #define GL_TEXTURE_HEIGHT 0x1001 #define GL_TEXTURE_BORDER 0x1005 #define GL_TEXTURE_COMPONENTS 0x1003 #define GL_TEXTURE_RED_SIZE 0x805C #define GL_TEXTURE_GREEN_SIZE 0x805D #define GL_TEXTURE_BLUE_SIZE 0x805E #define GL_TEXTURE_ALPHA_SIZE 0x805F #define GL_TEXTURE_LUMINANCE_SIZE 0x8060 #define GL_TEXTURE_INTENSITY_SIZE 0x8061 #define GL_NEAREST_MIPMAP_NEAREST 0x2700 #define GL_NEAREST_MIPMAP_LINEAR 0x2702 #define GL_LINEAR_MIPMAP_NEAREST 0x2701 #define GL_LINEAR_MIPMAP_LINEAR 0x2703 #define GL_OBJECT_LINEAR 0x2401 #define GL_OBJECT_PLANE 0x2501 #define GL_EYE_LINEAR 0x2400 #define GL_EYE_PLANE 0x2502 #define GL_SPHERE_MAP 0x2402 #define GL_DECAL 0x2101 #define GL_MODULATE 0x2100 #define GL_NEAREST 0x2600 #define GL_REPEAT 0x2901 #define GL_CLAMP 0x2900 #define GL_S 0x2000 #define GL_T 0x2001 #define GL_R 0x2002 #define GL_Q 0x2003 #define GL_TEXTURE_GEN_R 0x0C62 #define GL_TEXTURE_GEN_Q 0x0C63 #define GL_PROXY_TEXTURE_1D 0x8063 #define GL_PROXY_TEXTURE_2D 0x8064 #define GL_TEXTURE_PRIORITY 0x8066 #define GL_TEXTURE_RESIDENT 0x8067 #define GL_TEXTURE_BINDING_1D 0x8068 #define GL_TEXTURE_BINDING_2D 0x8069 /* Internal texture formats */ #define GL_ALPHA4 0x803B #define GL_ALPHA8 0x803C #define GL_ALPHA12 0x803D #define GL_ALPHA16 0x803E #define GL_LUMINANCE4 0x803F #define GL_LUMINANCE8 0x8040 #define GL_LUMINANCE12 0x8041 #define GL_LUMINANCE16 0x8042 #define GL_LUMINANCE4_ALPHA4 0x8043 #define GL_LUMINANCE6_ALPHA2 0x8044 #define GL_LUMINANCE8_ALPHA8 0x8045 #define GL_LUMINANCE12_ALPHA4 0x8046 #define GL_LUMINANCE12_ALPHA12 0x8047 #define GL_LUMINANCE16_ALPHA16 0x8048 #define GL_INTENSITY 0x8049 #define GL_INTENSITY4 0x804A #define GL_INTENSITY8 0x804B #define GL_INTENSITY12 0x804C #define GL_INTENSITY16 0x804D #define GL_R3_G3_B2 0x2A10 #define GL_RGB4 0x804F #define GL_RGB5 0x8050 #define GL_RGB8 0x8051 #define GL_RGB10 0x8052 #define GL_RGB12 0x8053 #define GL_RGB16 0x8054 #define GL_RGBA2 0x8055 #define GL_RGBA4 0x8056 #define GL_RGB5_A1 0x8057 #define GL_RGBA8 0x8058 #define GL_RGB10_A2 0x8059 #define GL_RGBA12 0x805A #define GL_RGBA16 0x805B /* Utility */ #define GL_VENDOR 0x1F00 #define GL_RENDERER 0x1F01 #define GL_VERSION 0x1F02 #define GL_EXTENSIONS 0x1F03 /* Errors */ #define GL_NO_ERROR 0 #define GL_INVALID_VALUE 0x0501 #define GL_INVALID_ENUM 0x0500 #define GL_INVALID_OPERATION 0x0502 #define GL_STACK_OVERFLOW 0x0503 #define GL_STACK_UNDERFLOW 0x0504 #define GL_OUT_OF_MEMORY 0x0505 /* * 1.0 Extensions */ /* GL_EXT_blend_minmax and GL_EXT_blend_color */ #define GL_CONSTANT_COLOR_EXT 0x8001 #define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 #define GL_CONSTANT_ALPHA_EXT 0x8003 #define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 #define GL_BLEND_EQUATION_EXT 0x8009 #define GL_MIN_EXT 0x8007 #define GL_MAX_EXT 0x8008 #define GL_FUNC_ADD_EXT 0x8006 #define GL_FUNC_SUBTRACT_EXT 0x800A #define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B #define GL_BLEND_COLOR_EXT 0x8005 /* GL_EXT_polygon_offset */ #define GL_POLYGON_OFFSET_EXT 0x8037 #define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 #define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 /* GL_EXT_vertex_array */ #define GL_VERTEX_ARRAY_EXT 0x8074 #define GL_NORMAL_ARRAY_EXT 0x8075 #define GL_COLOR_ARRAY_EXT 0x8076 #define GL_INDEX_ARRAY_EXT 0x8077 #define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 #define GL_EDGE_FLAG_ARRAY_EXT 0x8079 #define GL_VERTEX_ARRAY_SIZE_EXT 0x807A #define GL_VERTEX_ARRAY_TYPE_EXT 0x807B #define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C #define GL_VERTEX_ARRAY_COUNT_EXT 0x807D #define GL_NORMAL_ARRAY_TYPE_EXT 0x807E #define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F #define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 #define GL_COLOR_ARRAY_SIZE_EXT 0x8081 #define GL_COLOR_ARRAY_TYPE_EXT 0x8082 #define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 #define GL_COLOR_ARRAY_COUNT_EXT 0x8084 #define GL_INDEX_ARRAY_TYPE_EXT 0x8085 #define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 #define GL_INDEX_ARRAY_COUNT_EXT 0x8087 #define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 #define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 #define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A #define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B #define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C #define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D #define GL_VERTEX_ARRAY_POINTER_EXT 0x808E #define GL_NORMAL_ARRAY_POINTER_EXT 0x808F #define GL_COLOR_ARRAY_POINTER_EXT 0x8090 #define GL_INDEX_ARRAY_POINTER_EXT 0x8091 #define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 #define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 /* GL_EXT_texture_object */ #define GL_TEXTURE_PRIORITY_EXT 0x8066 #define GL_TEXTURE_RESIDENT_EXT 0x8067 #define GL_TEXTURE_1D_BINDING_EXT 0x8068 #define GL_TEXTURE_2D_BINDING_EXT 0x8069 /* GL_EXT_texture3D */ #define GL_PACK_SKIP_IMAGES_EXT 0x806B #define GL_PACK_IMAGE_HEIGHT_EXT 0x806C #define GL_UNPACK_SKIP_IMAGES_EXT 0x806D #define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E #define GL_TEXTURE_3D_EXT 0x806F #define GL_PROXY_TEXTURE_3D_EXT 0x8070 #define GL_TEXTURE_DEPTH_EXT 0x8071 #define GL_TEXTURE_WRAP_R_EXT 0x8072 #define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 #define GL_TEXTURE_3D_BINDING_EXT 0x806A /* GL_EXT_paletted_texture */ #define GL_TABLE_TOO_LARGE_EXT 0x8031 #define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 #define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 #define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA #define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB #define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC #define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD #define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE #define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF #define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED #define GL_COLOR_INDEX1_EXT 0x80E2 #define GL_COLOR_INDEX2_EXT 0x80E3 #define GL_COLOR_INDEX4_EXT 0x80E4 #define GL_COLOR_INDEX8_EXT 0x80E5 #define GL_COLOR_INDEX12_EXT 0x80E6 #define GL_COLOR_INDEX16_EXT 0x80E7 /* GL_EXT_shared_texture_palette */ #define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB #if 0 /* GL_SGIS_texture_lod */ #define GL_TEXTURE_MIN_LOD_SGIS 0x813A #define GL_TEXTURE_MAX_LOD_SGIS 0x813B #define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C #define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D #endif /* GL_EXT_point_parameters */ #define GL_POINT_SIZE_MIN_EXT 0x8126 #define GL_POINT_SIZE_MAX_EXT 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 #define GL_DISTANCE_ATTENUATION_EXT 0x8129 #define GL_CURRENT_BIT 0x00000001L #define GL_POINT_BIT 0x00000002L #define GL_LINE_BIT 0x00000004L #define GL_POLYGON_BIT 0x00000008L #define GL_POLYGON_STIPPLE_BIT 0x00000010L #define GL_PIXEL_MODE_BIT 0x00000020L #define GL_LIGHTING_BIT 0x00000040L #define GL_FOG_BIT 0x00000080L #define GL_DEPTH_BUFFER_BIT 0x00000100L #define GL_ACCUM_BUFFER_BIT 0x00000200L #define GL_STENCIL_BUFFER_BIT 0x00000400L #define GL_VIEWPORT_BIT 0x00000800L #define GL_TRANSFORM_BIT 0x00001000L #define GL_ENABLE_BIT 0x00002000L #define GL_COLOR_BUFFER_BIT 0x00004000L #define GL_HINT_BIT 0x00008000L #define GL_EVAL_BIT 0x00010000L #define GL_LIST_BIT 0x00020000L #define GL_TEXTURE_BIT 0x00040000L #define GL_SCISSOR_BIT 0x00080000L #define GL_ALL_ATTRIB_BITS 0x000fffffL #define GL_CLIENT_PIXEL_STORE_BIT 0x00000001L #define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002L #define GL_CLIENT_ALL_ATTRIB_BITS 0x0000FFFFL GLAPI void GLAPIENTRY glEnable(GLenum cap); GLAPI void GLAPIENTRY glDisable(GLenum cap); GLAPI void GLAPIENTRY glShadeModel(GLenum mode); GLAPI void GLAPIENTRY glCullFace(GLenum mode); GLAPI void GLAPIENTRY glPolygonMode(GLenum face, GLenum mode); GLAPI void GLAPIENTRY glBegin(GLenum mode); GLAPI void GLAPIENTRY glEnd(void); GLAPI void GLAPIENTRY glVertex2f(GLfloat x, GLfloat y); GLAPI void GLAPIENTRY glVertex2d(GLdouble x, GLdouble y); GLAPI void GLAPIENTRY glVertex2fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex2dv(const GLdouble *v); GLAPI void GLAPIENTRY glVertex3f(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glVertex3d(GLdouble x, GLdouble y, GLdouble z); GLAPI void GLAPIENTRY glVertex3fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex3dv(const GLdouble *v); GLAPI void GLAPIENTRY glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLAPI void GLAPIENTRY glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void GLAPIENTRY glVertex4fv(const GLfloat *v); GLAPI void GLAPIENTRY glVertex4dv(const GLdouble *v); GLAPI void GLAPIENTRY glColor3f(GLfloat red, GLfloat green, GLfloat blue); GLAPI void GLAPIENTRY glColor3d(GLdouble red, GLdouble green, GLdouble blue); GLAPI void GLAPIENTRY glColor3fv(const GLfloat *v); GLAPI void GLAPIENTRY glColor3dv(const GLdouble *v); GLAPI void GLAPIENTRY glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); GLAPI void GLAPIENTRY glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); GLAPI void GLAPIENTRY glColor4fv(const GLfloat *v); GLAPI void GLAPIENTRY glColor4dv(const GLdouble *v); GLAPI void GLAPIENTRY glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); GLAPI void GLAPIENTRY glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); GLAPI void GLAPIENTRY glNormal3fv(const GLfloat *v); GLAPI void GLAPIENTRY glNormal3dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord1f(GLfloat s); GLAPI void GLAPIENTRY glTexCoord1d(GLdouble s); GLAPI void GLAPIENTRY glTexCoord1fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord1dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord2f(GLfloat s, GLfloat t); GLAPI void GLAPIENTRY glTexCoord2d(GLdouble s, GLdouble t); GLAPI void GLAPIENTRY glTexCoord2fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord2dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); GLAPI void GLAPIENTRY glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); GLAPI void GLAPIENTRY glTexCoord3fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord3dv(const GLdouble *v); GLAPI void GLAPIENTRY glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); GLAPI void GLAPIENTRY glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); GLAPI void GLAPIENTRY glTexCoord4fv(const GLfloat *v); GLAPI void GLAPIENTRY glTexCoord4dv(const GLdouble *v); GLAPI void GLAPIENTRY glEdgeFlag(GLboolean flag); /* matrix */ GLAPI void GLAPIENTRY glMatrixMode(GLenum mode); GLAPI void GLAPIENTRY glLoadMatrixf(const GLfloat *m); GLAPI void GLAPIENTRY glLoadIdentity(void); GLAPI void GLAPIENTRY glMultMatrixf(const GLfloat *m); GLAPI void GLAPIENTRY glPushMatrix(void); GLAPI void GLAPIENTRY glPopMatrix(void); GLAPI void GLAPIENTRY glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glTranslatef(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glScalef(GLfloat x, GLfloat y, GLfloat z); GLAPI void GLAPIENTRY glViewport(GLint x, GLint y, GLint width, GLint height); GLAPI void GLAPIENTRY glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val); GLAPI void GLAPIENTRY glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val); /* lists */ GLAPI GLuint GLAPIENTRY glGenLists(GLsizei range); GLAPI GLboolean GLAPIENTRY glIsList(GLuint list); GLAPI void GLAPIENTRY glNewList(GLuint list, GLenum mode); GLAPI void GLAPIENTRY glEndList(void); GLAPI void GLAPIENTRY glCallList(GLuint list); GLAPI void GLAPIENTRY glDeleteLists(GLuint list, GLsizei range); /* clear */ GLAPI void GLAPIENTRY glClear(GLbitfield mask); GLAPI void GLAPIENTRY glClearColor(GLfloat r, GLfloat g, GLfloat b, GLfloat a); GLAPI void GLAPIENTRY glClearDepth(GLdouble depth); GLAPI void GLAPIENTRY glClearDepthf(GLfloat depth); /* selection */ GLAPI GLint GLAPIENTRY glRenderMode(GLenum mode); GLAPI void GLAPIENTRY glSelectBuffer(GLsizei size, GLuint *buf); GLAPI void GLAPIENTRY glInitNames(void); GLAPI void GLAPIENTRY glPushName(GLuint name); GLAPI void GLAPIENTRY glPopName(void); GLAPI void GLAPIENTRY glLoadName(GLuint name); /* textures */ GLAPI void GLAPIENTRY glGenTextures(GLsizei n, GLuint *textures); GLAPI void GLAPIENTRY glDeleteTextures(GLsizei n, const GLuint *textures); GLAPI void GLAPIENTRY glBindTexture(GLenum target, GLuint texture); GLAPI void GLAPIENTRY glTexImage2D(GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); GLAPI void GLAPIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param); GLAPI void GLAPIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param); GLAPI void GLAPIENTRY glPixelStorei(GLenum pname, GLint param); /* lighting */ GLAPI void GLAPIENTRY glMaterialfv(GLenum face, GLenum pname, const GLfloat *v); GLAPI void GLAPIENTRY glMaterialf(GLenum mode, GLenum pname, GLfloat v); GLAPI void GLAPIENTRY glColorMaterial(GLenum face, GLenum mode); GLAPI void GLAPIENTRY glLightfv(GLenum light, GLenum pname, const GLfloat *v); GLAPI void GLAPIENTRY glLightf(GLenum light, GLenum pname, GLfloat v); GLAPI void GLAPIENTRY glLightModeli(GLenum pname, GLint param); GLAPI void GLAPIENTRY glLightModelfv(GLenum pname, const GLfloat *param); /* misc */ GLAPI void GLAPIENTRY glFlush(void); GLAPI void GLAPIENTRY glHint(GLenum target, GLenum mode); GLAPI void GLAPIENTRY glGetIntegerv(GLenum pname, GLint *params); GLAPI void GLAPIENTRY glGetFloatv(GLenum pname, GLfloat *v); GLAPI void GLAPIENTRY glFrontFace(GLenum mode); /* opengl 1.2 arrays */ GLAPI void GLAPIENTRY glEnableClientState(GLenum array); GLAPI void GLAPIENTRY glDisableClientState(GLenum array); GLAPI void GLAPIENTRY glArrayElement(GLint i); GLAPI void GLAPIENTRY glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); GLAPI void GLAPIENTRY glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); /* opengl 1.2 polygon offset */ GLAPI void GLAPIENTRY glPolygonOffset(GLfloat factor, GLfloat units); #endif /* GL_VERSION_1_1 */ #ifndef GL_VERSION_1_5 #ifndef __GLintptr_defined #include #ifdef __APPLE__ typedef intptr_t GLsizeiptr; typedef intptr_t GLintptr; #else typedef ptrdiff_t GLsizeiptr; typedef ptrdiff_t GLintptr; #endif #define __GLintptr_defined #endif #endif #ifdef __NFOSMESA_H__ #include #endif #ifndef GL_VERSION_2_0 #define GL_VERSION_2_0 1 typedef char GLchar; #endif #ifndef GL_ARB_vertex_buffer_object #define GL_ARB_vertex_buffer_object 1 #ifdef __APPLE__ typedef intptr_t GLsizeiptrARB; typedef intptr_t GLintptrARB; #else typedef ptrdiff_t GLsizeiptrARB; typedef ptrdiff_t GLintptrARB; #endif #endif #ifndef GL_NV_half_float #define GL_NV_half_float 1 typedef unsigned short GLhalfNV; #endif #ifndef GL_NV_vdpau_interop #define GL_NV_vdpau_interop 1 typedef GLintptr GLvdpauSurfaceNV; #endif #ifndef GL_ARB_cl_event #define GL_ARB_cl_event 1 #ifdef __PUREC__ struct _cl_context { int dummy; }; struct _cl_event { int dummy; }; #else struct _cl_context; struct _cl_event; #endif #endif #if !defined(GL_ARB_sync) && !defined(__TINY_GL_H__) #define GL_ARB_sync 1 #if defined(__GNUC__) || (defined(LLONG_MAX) && LLONG_MAX > 2147483647L) typedef int64_t GLint64; typedef uint64_t GLuint64; #else typedef struct { long hi; unsigned long lo; } GLint64; typedef struct { unsigned long hi; unsigned long lo; } GLuint64; #endif #ifdef __PUREC__ struct __GLsync { int dummy; }; #endif typedef struct __GLsync *GLsync; #endif #if !defined(GL_EXT_timer_query) && !defined(__TINY_GL_H__) #define GL_EXT_timer_query 1 typedef GLint64 GLint64EXT; typedef GLuint64 GLuint64EXT; #endif #ifndef GL_OES_fixed_point #define GL_OES_fixed_point 1 typedef GLint GLfixed; #endif #ifndef GL_ARB_shader_objects #define GL_ARB_shader_objects 1 typedef char GLcharARB; #ifdef __APPLE__ typedef void *GLhandleARB; #else typedef GLuint GLhandleARB; #endif #endif #ifndef GL_KHR_debug #define GL_KHR_debug 1 typedef void CALLBACK (*GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message, const void *userParam); #endif #ifndef GL_ARB_debug_output #define GL_ARB_debug_output 1 typedef void CALLBACK (*GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message, const void *userParam); #endif #ifndef GL_AMD_debug_output #define GL_AMD_debug_output typedef void CALLBACK (*GLDEBUGPROCAMD)(GLuint id,GLenum category, GLenum severity, GLsizei length, const GLchar *message, void *userParam); #endif #ifndef GL_MESA_program_debug #define GL_MESA_program_debug 1 typedef void CALLBACK (*GLprogramcallbackMESA)(GLenum target, GLvoid *data); #endif #ifndef GL_EXT_external_buffer #define GL_EXT_external_buffer 1 typedef void *GLeglClientBufferEXT; #endif #ifndef GL_NV_draw_vulkan_image #define GL_NV_draw_vulkan_image 1 typedef void (APIENTRY *GLVULKANPROCNV)(void); #endif /* * Mesa Off-Screen rendering interface. * * Copyright (C) 1999-2005 Brian Paul All Rights Reserved. * */ #define OSMESA_VERSION_NUMBER(major, minor, patch) ((major) * 10000 + (minor) * 100 + patch) #define OSMESA_VERSION OSMESA_VERSION_NUMBER(OSMESA_MAJOR_VERSION, OSMESA_MINOR_VERSION, OSMESA_PATCH_VERSION) #if !defined(OSMESA_MAJOR_VERSION) #define OSMESA_MAJOR_VERSION 6 #define OSMESA_MINOR_VERSION 3 #define OSMESA_PATCH_VERSION 0 /* * Values for the format parameter of OSMesaCreateLDG() * Mesa_gl.ldg version 0.8 (Mesa 2.6) */ #define OSMESA_COLOR_INDEX GL_COLOR_INDEX #define OSMESA_RGBA GL_RGBA #define OSMESA_BGRA 0x1 #define OSMESA_ARGB 0x2 #define OSMESA_RGB GL_RGB #define OSMESA_BGR 0x4 #define OSMESA_RGB_565 0x5 #define VDI_ARGB 0x8 #define VDI_RGB 0xf #define DIRECT_VDI_ARGB 0x10 /* * OSMesaPixelStore() parameters: */ #define OSMESA_ROW_LENGTH 0x10 #define OSMESA_Y_UP 0x11 /* * Accepted by OSMesaGetIntegerv: */ #define OSMESA_WIDTH 0x20 #define OSMESA_HEIGHT 0x21 #define OSMESA_FORMAT 0x22 #define OSMESA_TYPE 0x23 #define OSMESA_MAX_WIDTH 0x24 /* new in 4.0 */ #define OSMESA_MAX_HEIGHT 0x25 /* new in 4.0 */ #ifdef __PUREC__ struct osmesa_context { int dummy; }; #endif typedef struct osmesa_context *OSMesaContext; typedef void (APIENTRY *OSMESAproc)(void); GLAPI OSMesaContext GLAPIENTRY OSMesaCreateContext( GLenum format, OSMesaContext sharelist ); GLAPI OSMesaContext GLAPIENTRY OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist); GLAPI void GLAPIENTRY OSMesaDestroyContext( OSMesaContext ctx ); GLAPI GLboolean GLAPIENTRY OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height ); GLAPI OSMesaContext GLAPIENTRY OSMesaGetCurrentContext( void ); GLAPI void GLAPIENTRY OSMesaPixelStore( GLint pname, GLint value ); GLAPI void GLAPIENTRY OSMesaGetIntegerv( GLint pname, GLint *value ); GLAPI GLboolean GLAPIENTRY OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void **buffer ); GLAPI GLboolean GLAPIENTRY OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *format, void **buffer ); GLAPI OSMESAproc GLAPIENTRY OSMesaGetProcAddress( const char *funcName ); GLAPI void GLAPIENTRY OSMesaColorClamp(GLboolean enable); GLAPI void GLAPIENTRY OSMesaPostprocess(OSMesaContext osmesa, const char *filter, GLuint enable_value); #elif OSMESA_VERSION < OSMESA_VERSION_NUMBER(6, 3, 0) typedef void (APIENTRY *OSMESAproc)(void); #endif /* * integral types that need to be promoted to * 32bit type when passed by value */ #ifndef GL_nfosmesa_short_promotions #define GL_nfosmesa_short_promotions 1 #ifdef __MSHORT__ typedef long GLshort32; typedef unsigned long GLushort32; typedef unsigned long GLboolean32; typedef long GLchar32; typedef unsigned long GLubyte32; typedef signed long GLbyte32; typedef unsigned long GLhalfNV32; #else typedef GLshort GLshort32; typedef GLushort GLushort32; typedef GLboolean GLboolean32; typedef GLchar GLchar32; typedef GLubyte GLubyte32; typedef GLbyte GLbyte32; typedef GLhalfNV GLhalfNV32; #endif #endif /* * Atari-specific structure for the shared libraries */ struct gl_public { void *libhandle; void *libexec; void *(*m_alloc)(size_t); void (*m_free)(void *); }; #ifdef __cplusplus } #endif aranym-1.1.0/atari/nfosmesa/glfuncs.h0000664000175000017500000502326313454637621015741 0ustar joyjoy/* * -- DO NOT EDIT -- * Generated by dyngl.pl from ./tools/glfuncs.h */ #ifndef GL_PROCM #define GL_PROCM(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef GL_GETSTRING #define GL_GETSTRING(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #define GL_GETSTRINGI(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef GLU_PROC #define GLU_PROC(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef GLU_PROCM #define GLU_PROCM(type, gl, name, export, upper, proto, args, first, ret) GL_PROCM(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef GL_PROC64 #define GL_PROC64(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef GL_PROC64M #define GL_PROC64M(type, gl, name, export, upper, proto, args, first, ret) GL_PROCM(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef OSMESA_PROC #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef OSMESA_PROCM #define OSMESA_PROCM(type, gl, name, export, upper, proto, args, first, ret) #endif #undef GL_void_return #define GL_void_return #ifndef NOTHING #define NOTHING void #endif #ifndef AND #define AND #endif #ifndef NO_OSMESACOLORCLAMP #if !defined(TINYGL_ONLY) OSMESA_PROC(void, OSMesa, ColorClamp, OSMesaColorClamp, COLORCLAMP, (AND GLboolean32 enable), (enable), &enable, GL_void_return) OSMESA_PROCM(void, OSMesa, ColorClamp, OSMesaColorClamp, COLORCLAMP, (AND GLboolean32 enable), (enable), &enable, GL_void_return) #endif #endif #ifndef NO_OSMESACREATECONTEXT #if !defined(TINYGL_ONLY) OSMESA_PROC(OSMesaContext, OSMesa, CreateContext, OSMesaCreateContext, CREATECONTEXT, (AND GLenum format, OSMesaContext sharelist), (format, sharelist), &format, return (OSMesaContext)) OSMESA_PROCM(OSMesaContext, OSMesa, CreateContext, OSMesaCreateContext, CREATECONTEXT, (AND GLenum format, OSMesaContext sharelist), (format, sharelist), &format, return (OSMesaContext)) #endif #endif #ifndef NO_OSMESACREATECONTEXTATTRIBS #if !defined(TINYGL_ONLY) OSMESA_PROC(OSMesaContext, OSMesa, CreateContextAttribs, OSMesaCreateContextAttribs, CREATECONTEXTATTRIBS, (AND const GLint *attribList, OSMesaContext sharelist), (attribList, sharelist), &attribList, return (OSMesaContext)) OSMESA_PROCM(OSMesaContext, OSMesa, CreateContextAttribs, OSMesaCreateContextAttribs, CREATECONTEXTATTRIBS, (AND memptr attribList, OSMesaContext sharelist), (attribList, sharelist), &attribList, return (OSMesaContext)) #endif #endif #ifndef NO_OSMESACREATECONTEXTEXT #if !defined(TINYGL_ONLY) OSMESA_PROC(OSMesaContext, OSMesa, CreateContextExt, OSMesaCreateContextExt, CREATECONTEXTEXT, (AND GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist), (format, depthBits, stencilBits, accumBits, sharelist), &format, return (OSMesaContext)) OSMESA_PROCM(OSMesaContext, OSMesa, CreateContextExt, OSMesaCreateContextExt, CREATECONTEXTEXT, (AND GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist), (format, depthBits, stencilBits, accumBits, sharelist), &format, return (OSMesaContext)) #endif #endif #ifndef NO_OSMESADESTROYCONTEXT #if !defined(TINYGL_ONLY) OSMESA_PROC(void, OSMesa, DestroyContext, OSMesaDestroyContext, DESTROYCONTEXT, (AND OSMesaContext ctx), (ctx), &ctx, GL_void_return) OSMESA_PROCM(void, OSMesa, DestroyContext, OSMesaDestroyContext, DESTROYCONTEXT, (AND OSMesaContext ctx), (ctx), &ctx, GL_void_return) #endif #endif #ifndef NO_OSMESAGETCOLORBUFFER #if !defined(TINYGL_ONLY) OSMESA_PROC(GLboolean, OSMesa, GetColorBuffer, OSMesaGetColorBuffer, GETCOLORBUFFER, (AND OSMesaContext c, GLint *width, GLint *height, GLint *format, void * *buffer), (c, width, height, format, buffer), &c, return (GLboolean)) OSMESA_PROCM(GLboolean, OSMesa, GetColorBuffer, OSMesaGetColorBuffer, GETCOLORBUFFER, (AND OSMesaContext c, memptr width, memptr height, memptr format, memptr buffer), (c, width, height, format, buffer), &c, return (GLboolean)) #endif #endif #ifndef NO_OSMESAGETCURRENTCONTEXT #if !defined(TINYGL_ONLY) OSMESA_PROC(OSMesaContext, OSMesa, GetCurrentContext, OSMesaGetCurrentContext, GETCURRENTCONTEXT, (NOTHING), (), NULL, return (OSMesaContext)) OSMESA_PROCM(OSMesaContext, OSMesa, GetCurrentContext, OSMesaGetCurrentContext, GETCURRENTCONTEXT, (NOTHING), (), NULL, return (OSMesaContext)) #endif #endif #ifndef NO_OSMESAGETDEPTHBUFFER #if !defined(TINYGL_ONLY) OSMESA_PROC(GLboolean, OSMesa, GetDepthBuffer, OSMesaGetDepthBuffer, GETDEPTHBUFFER, (AND OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void * *buffer), (c, width, height, bytesPerValue, buffer), &c, return (GLboolean)) OSMESA_PROCM(GLboolean, OSMesa, GetDepthBuffer, OSMesaGetDepthBuffer, GETDEPTHBUFFER, (AND OSMesaContext c, memptr width, memptr height, memptr bytesPerValue, memptr buffer), (c, width, height, bytesPerValue, buffer), &c, return (GLboolean)) #endif #endif #ifndef NO_OSMESAGETINTEGERV #if !defined(TINYGL_ONLY) OSMESA_PROC(void, OSMesa, GetIntegerv, OSMesaGetIntegerv, GETINTEGERV, (AND GLint pname, GLint *value), (pname, value), &pname, GL_void_return) OSMESA_PROCM(void, OSMesa, GetIntegerv, OSMesaGetIntegerv, GETINTEGERV, (AND GLint pname, memptr value), (pname, value), &pname, GL_void_return) #endif #endif #ifndef NO_OSMESAGETPROCADDRESS #if !defined(TINYGL_ONLY) OSMESA_PROC(OSMESAproc, OSMesa, GetProcAddress, OSMesaGetProcAddress, GETPROCADDRESS, (AND const char *funcName), (funcName), &funcName, return (OSMESAproc)) OSMESA_PROCM(OSMESAproc, OSMesa, GetProcAddress, OSMesaGetProcAddress, GETPROCADDRESS, (AND memptr funcName), (funcName), &funcName, return (OSMESAproc)) #endif #endif #ifndef NO_OSMESAMAKECURRENT #if !defined(TINYGL_ONLY) OSMESA_PROC(GLboolean, OSMesa, MakeCurrent, OSMesaMakeCurrent, MAKECURRENT, (AND OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height), (ctx, buffer, type, width, height), &ctx, return (GLboolean)) OSMESA_PROCM(GLboolean, OSMesa, MakeCurrent, OSMesaMakeCurrent, MAKECURRENT, (AND OSMesaContext ctx, memptr buffer, GLenum type, GLsizei width, GLsizei height), (ctx, buffer, type, width, height), &ctx, return (GLboolean)) #endif #endif #ifndef NO_OSMESAPIXELSTORE #if !defined(TINYGL_ONLY) OSMESA_PROC(void, OSMesa, PixelStore, OSMesaPixelStore, PIXELSTORE, (AND GLint pname, GLint value), (pname, value), &pname, GL_void_return) OSMESA_PROCM(void, OSMesa, PixelStore, OSMesaPixelStore, PIXELSTORE, (AND GLint pname, GLint value), (pname, value), &pname, GL_void_return) #endif #endif #ifndef NO_OSMESAPOSTPROCESS #if !defined(TINYGL_ONLY) OSMESA_PROC(void, OSMesa, Postprocess, OSMesaPostprocess, POSTPROCESS, (AND OSMesaContext osmesa, const char *filter, GLuint enable_value), (osmesa, filter, enable_value), &osmesa, GL_void_return) OSMESA_PROCM(void, OSMesa, Postprocess, OSMesaPostprocess, POSTPROCESS, (AND OSMesaContext osmesa, memptr filter, GLuint enable_value), (osmesa, filter, enable_value), &osmesa, GL_void_return) #endif #endif #ifndef NO_GLACCUM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Accum, glAccum, ACCUM, (AND GLenum op, GLfloat value), (op, value), &op, GL_void_return) GL_PROCM(void, gl, Accum, glAccum, ACCUM, (AND GLenum op, GLfloat value), (op, value), &op, GL_void_return) #endif #endif #ifndef NO_GLACCUMXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, AccumxOES, glAccumxOES, ACCUMXOES, (AND GLenum op, GLfixed value), (op, value), &op, GL_void_return) GL_PROCM(void, gl, AccumxOES, glAccumxOES, ACCUMXOES, (AND GLenum op, GLfixed value), (op, value), &op, GL_void_return) #endif #endif #ifndef NO_GLACQUIREKEYEDMUTEXWIN32EXT #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, AcquireKeyedMutexWin32EXT, glAcquireKeyedMutexWin32EXT, ACQUIREKEYEDMUTEXWIN32EXT, (AND GLuint memory, GLuint64 key, GLuint timeout), (memory, key, timeout), &memory, return (GLboolean)) GL_PROCM(GLboolean, gl, AcquireKeyedMutexWin32EXT, glAcquireKeyedMutexWin32EXT, ACQUIREKEYEDMUTEXWIN32EXT, (AND GLuint memory, GLuint64 key, GLuint timeout), (memory, key, timeout), &memory, return (GLboolean)) #endif #endif #ifndef NO_GLACTIVEPROGRAMEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ActiveProgramEXT, glActiveProgramEXT, ACTIVEPROGRAMEXT, (AND GLuint program), (program), &program, GL_void_return) GL_PROCM(void, gl, ActiveProgramEXT, glActiveProgramEXT, ACTIVEPROGRAMEXT, (AND GLuint program), (program), &program, GL_void_return) #endif #endif #ifndef NO_GLACTIVESHADERPROGRAM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ActiveShaderProgram, glActiveShaderProgram, ACTIVESHADERPROGRAM, (AND GLuint pipeline, GLuint program), (pipeline, program), &pipeline, GL_void_return) GL_PROCM(void, gl, ActiveShaderProgram, glActiveShaderProgram, ACTIVESHADERPROGRAM, (AND GLuint pipeline, GLuint program), (pipeline, program), &pipeline, GL_void_return) #endif #endif #ifndef NO_GLACTIVESTENCILFACEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ActiveStencilFaceEXT, glActiveStencilFaceEXT, ACTIVESTENCILFACEEXT, (AND GLenum face), (face), &face, GL_void_return) GL_PROCM(void, gl, ActiveStencilFaceEXT, glActiveStencilFaceEXT, ACTIVESTENCILFACEEXT, (AND GLenum face), (face), &face, GL_void_return) #endif #endif #ifndef NO_GLACTIVETEXTURE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ActiveTexture, glActiveTexture, ACTIVETEXTURE, (AND GLenum texture), (texture), &texture, GL_void_return) GL_PROCM(void, gl, ActiveTexture, glActiveTexture, ACTIVETEXTURE, (AND GLenum texture), (texture), &texture, GL_void_return) #endif #endif #ifndef NO_GLACTIVETEXTUREARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ActiveTextureARB, glActiveTextureARB, ACTIVETEXTUREARB, (AND GLenum texture), (texture), &texture, GL_void_return) GL_PROCM(void, gl, ActiveTextureARB, glActiveTextureARB, ACTIVETEXTUREARB, (AND GLenum texture), (texture), &texture, GL_void_return) #endif #endif #ifndef NO_GLACTIVEVARYINGNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ActiveVaryingNV, glActiveVaryingNV, ACTIVEVARYINGNV, (AND GLuint program, const GLchar *name), (program, name), &program, GL_void_return) GL_PROCM(void, gl, ActiveVaryingNV, glActiveVaryingNV, ACTIVEVARYINGNV, (AND GLuint program, memptr name), (program, name), &program, GL_void_return) #endif #endif #ifndef NO_GLADDSWAPHINTRECTWIN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, AddSwapHintRectWIN, glAddSwapHintRectWIN, ADDSWAPHINTRECTWIN, (AND GLint x, GLint y, GLsizei width, GLsizei height), (x, y, width, height), &x, GL_void_return) GL_PROCM(void, gl, AddSwapHintRectWIN, glAddSwapHintRectWIN, ADDSWAPHINTRECTWIN, (AND GLint x, GLint y, GLsizei width, GLsizei height), (x, y, width, height), &x, GL_void_return) #endif #endif #ifndef NO_GLALPHAFRAGMENTOP1ATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, AlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, ALPHAFRAGMENTOP1ATI, (AND GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod), (op, dst, dstMod, arg1, arg1Rep, arg1Mod), &op, GL_void_return) GL_PROCM(void, gl, AlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, ALPHAFRAGMENTOP1ATI, (AND GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod), (op, dst, dstMod, arg1, arg1Rep, arg1Mod), &op, GL_void_return) #endif #endif #ifndef NO_GLALPHAFRAGMENTOP2ATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, AlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, ALPHAFRAGMENTOP2ATI, (AND GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod), (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), &op, GL_void_return) GL_PROCM(void, gl, AlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, ALPHAFRAGMENTOP2ATI, (AND GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod), (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), &op, GL_void_return) #endif #endif #ifndef NO_GLALPHAFRAGMENTOP3ATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, AlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, ALPHAFRAGMENTOP3ATI, (AND GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod), (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), &op, GL_void_return) GL_PROCM(void, gl, AlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, ALPHAFRAGMENTOP3ATI, (AND GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod), (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), &op, GL_void_return) #endif #endif #ifndef NO_GLALPHAFUNC #if !defined(TINYGL_ONLY) GL_PROC(void, gl, AlphaFunc, glAlphaFunc, ALPHAFUNC, (AND GLenum func, GLclampf ref), (func, ref), &func, GL_void_return) GL_PROCM(void, gl, AlphaFunc, glAlphaFunc, ALPHAFUNC, (AND GLenum func, GLclampf ref), (func, ref), &func, GL_void_return) #endif #endif #ifndef NO_GLALPHAFUNCXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, AlphaFuncxOES, glAlphaFuncxOES, ALPHAFUNCXOES, (AND GLenum func, GLfixed ref), (func, ref), &func, GL_void_return) GL_PROCM(void, gl, AlphaFuncxOES, glAlphaFuncxOES, ALPHAFUNCXOES, (AND GLenum func, GLfixed ref), (func, ref), &func, GL_void_return) #endif #endif #ifndef NO_GLALPHATOCOVERAGEDITHERCONTROLNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, AlphaToCoverageDitherControlNV, glAlphaToCoverageDitherControlNV, ALPHATOCOVERAGEDITHERCONTROLNV, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, AlphaToCoverageDitherControlNV, glAlphaToCoverageDitherControlNV, ALPHATOCOVERAGEDITHERCONTROLNV, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ApplyFramebufferAttachmentCMAAINTEL, glApplyFramebufferAttachmentCMAAINTEL, APPLYFRAMEBUFFERATTACHMENTCMAAINTEL, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, ApplyFramebufferAttachmentCMAAINTEL, glApplyFramebufferAttachmentCMAAINTEL, APPLYFRAMEBUFFERATTACHMENTCMAAINTEL, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLAPPLYTEXTUREEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ApplyTextureEXT, glApplyTextureEXT, APPLYTEXTUREEXT, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, ApplyTextureEXT, glApplyTextureEXT, APPLYTEXTUREEXT, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLAREPROGRAMSRESIDENTNV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, AreProgramsResidentNV, glAreProgramsResidentNV, AREPROGRAMSRESIDENTNV, (AND GLsizei n, const GLuint *programs, GLboolean *residences), (n, programs, residences), &n, return (GLboolean)) GL_PROCM(GLboolean, gl, AreProgramsResidentNV, glAreProgramsResidentNV, AREPROGRAMSRESIDENTNV, (AND GLsizei n, memptr programs, memptr residences), (n, programs, residences), &n, return (GLboolean)) #endif #endif #ifndef NO_GLARETEXTURESRESIDENT #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, AreTexturesResident, glAreTexturesResident, ARETEXTURESRESIDENT, (AND GLsizei n, const GLuint *textures, GLboolean *residences), (n, textures, residences), &n, return (GLboolean)) GL_PROCM(GLboolean, gl, AreTexturesResident, glAreTexturesResident, ARETEXTURESRESIDENT, (AND GLsizei n, memptr textures, memptr residences), (n, textures, residences), &n, return (GLboolean)) #endif #endif #ifndef NO_GLARETEXTURESRESIDENTEXT #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, AreTexturesResidentEXT, glAreTexturesResidentEXT, ARETEXTURESRESIDENTEXT, (AND GLsizei n, const GLuint *textures, GLboolean *residences), (n, textures, residences), &n, return (GLboolean)) GL_PROCM(GLboolean, gl, AreTexturesResidentEXT, glAreTexturesResidentEXT, ARETEXTURESRESIDENTEXT, (AND GLsizei n, memptr textures, memptr residences), (n, textures, residences), &n, return (GLboolean)) #endif #endif #ifndef NO_GLARRAYELEMENT GL_PROC(void, gl, ArrayElement, glArrayElement, ARRAYELEMENT, (AND GLint i), (i), &i, GL_void_return) GL_PROCM(void, gl, ArrayElement, glArrayElement, ARRAYELEMENT, (AND GLint i), (i), &i, GL_void_return) #endif #ifndef NO_GLARRAYELEMENTEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ArrayElementEXT, glArrayElementEXT, ARRAYELEMENTEXT, (AND GLint i), (i), &i, GL_void_return) GL_PROCM(void, gl, ArrayElementEXT, glArrayElementEXT, ARRAYELEMENTEXT, (AND GLint i), (i), &i, GL_void_return) #endif #endif #ifndef NO_GLARRAYOBJECTATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ArrayObjectATI, glArrayObjectATI, ARRAYOBJECTATI, (AND GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset), (array, size, type, stride, buffer, offset), &array, GL_void_return) GL_PROCM(void, gl, ArrayObjectATI, glArrayObjectATI, ARRAYOBJECTATI, (AND GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset), (array, size, type, stride, buffer, offset), &array, GL_void_return) #endif #endif #ifndef NO_GLASYNCMARKERSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, AsyncMarkerSGIX, glAsyncMarkerSGIX, ASYNCMARKERSGIX, (AND GLuint marker), (marker), &marker, GL_void_return) GL_PROCM(void, gl, AsyncMarkerSGIX, glAsyncMarkerSGIX, ASYNCMARKERSGIX, (AND GLuint marker), (marker), &marker, GL_void_return) #endif #endif #ifndef NO_GLATTACHOBJECTARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, AttachObjectARB, glAttachObjectARB, ATTACHOBJECTARB, (AND GLhandleARB containerObj, GLhandleARB obj), (containerObj, obj), &containerObj, GL_void_return) GL_PROCM(void, gl, AttachObjectARB, glAttachObjectARB, ATTACHOBJECTARB, (AND GLhandleARB containerObj, GLhandleARB obj), (containerObj, obj), &containerObj, GL_void_return) #endif #endif #ifndef NO_GLATTACHSHADER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, AttachShader, glAttachShader, ATTACHSHADER, (AND GLuint program, GLuint shader), (program, shader), &program, GL_void_return) GL_PROCM(void, gl, AttachShader, glAttachShader, ATTACHSHADER, (AND GLuint program, GLuint shader), (program, shader), &program, GL_void_return) #endif #endif #ifndef NO_GLBEGIN GL_PROC(void, gl, Begin, glBegin, BEGIN, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, Begin, glBegin, BEGIN, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #ifndef NO_GLBEGINCONDITIONALRENDER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginConditionalRender, glBeginConditionalRender, BEGINCONDITIONALRENDER, (AND GLuint id, GLenum mode), (id, mode), &id, GL_void_return) GL_PROCM(void, gl, BeginConditionalRender, glBeginConditionalRender, BEGINCONDITIONALRENDER, (AND GLuint id, GLenum mode), (id, mode), &id, GL_void_return) #endif #endif #ifndef NO_GLBEGINCONDITIONALRENDERNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginConditionalRenderNV, glBeginConditionalRenderNV, BEGINCONDITIONALRENDERNV, (AND GLuint id, GLenum mode), (id, mode), &id, GL_void_return) GL_PROCM(void, gl, BeginConditionalRenderNV, glBeginConditionalRenderNV, BEGINCONDITIONALRENDERNV, (AND GLuint id, GLenum mode), (id, mode), &id, GL_void_return) #endif #endif #ifndef NO_GLBEGINCONDITIONALRENDERNVX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginConditionalRenderNVX, glBeginConditionalRenderNVX, BEGINCONDITIONALRENDERNVX, (AND GLuint id), (id), &id, GL_void_return) GL_PROCM(void, gl, BeginConditionalRenderNVX, glBeginConditionalRenderNVX, BEGINCONDITIONALRENDERNVX, (AND GLuint id), (id), &id, GL_void_return) #endif #endif #ifndef NO_GLBEGINFRAGMENTSHADERATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginFragmentShaderATI, glBeginFragmentShaderATI, BEGINFRAGMENTSHADERATI, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, BeginFragmentShaderATI, glBeginFragmentShaderATI, BEGINFRAGMENTSHADERATI, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLBEGINOCCLUSIONQUERYNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginOcclusionQueryNV, glBeginOcclusionQueryNV, BEGINOCCLUSIONQUERYNV, (AND GLuint id), (id), &id, GL_void_return) GL_PROCM(void, gl, BeginOcclusionQueryNV, glBeginOcclusionQueryNV, BEGINOCCLUSIONQUERYNV, (AND GLuint id), (id), &id, GL_void_return) #endif #endif #ifndef NO_GLBEGINPERFMONITORAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginPerfMonitorAMD, glBeginPerfMonitorAMD, BEGINPERFMONITORAMD, (AND GLuint monitor), (monitor), &monitor, GL_void_return) GL_PROCM(void, gl, BeginPerfMonitorAMD, glBeginPerfMonitorAMD, BEGINPERFMONITORAMD, (AND GLuint monitor), (monitor), &monitor, GL_void_return) #endif #endif #ifndef NO_GLBEGINPERFQUERYINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginPerfQueryINTEL, glBeginPerfQueryINTEL, BEGINPERFQUERYINTEL, (AND GLuint queryHandle), (queryHandle), &queryHandle, GL_void_return) GL_PROCM(void, gl, BeginPerfQueryINTEL, glBeginPerfQueryINTEL, BEGINPERFQUERYINTEL, (AND GLuint queryHandle), (queryHandle), &queryHandle, GL_void_return) #endif #endif #ifndef NO_GLBEGINQUERY #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginQuery, glBeginQuery, BEGINQUERY, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) GL_PROCM(void, gl, BeginQuery, glBeginQuery, BEGINQUERY, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) #endif #endif #ifndef NO_GLBEGINQUERYARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginQueryARB, glBeginQueryARB, BEGINQUERYARB, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) GL_PROCM(void, gl, BeginQueryARB, glBeginQueryARB, BEGINQUERYARB, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) #endif #endif #ifndef NO_GLBEGINQUERYINDEXED #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginQueryIndexed, glBeginQueryIndexed, BEGINQUERYINDEXED, (AND GLenum target, GLuint index, GLuint id), (target, index, id), &target, GL_void_return) GL_PROCM(void, gl, BeginQueryIndexed, glBeginQueryIndexed, BEGINQUERYINDEXED, (AND GLenum target, GLuint index, GLuint id), (target, index, id), &target, GL_void_return) #endif #endif #ifndef NO_GLBEGINTRANSFORMFEEDBACK #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginTransformFeedback, glBeginTransformFeedback, BEGINTRANSFORMFEEDBACK, (AND GLenum primitiveMode), (primitiveMode), &primitiveMode, GL_void_return) GL_PROCM(void, gl, BeginTransformFeedback, glBeginTransformFeedback, BEGINTRANSFORMFEEDBACK, (AND GLenum primitiveMode), (primitiveMode), &primitiveMode, GL_void_return) #endif #endif #ifndef NO_GLBEGINTRANSFORMFEEDBACKEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, BEGINTRANSFORMFEEDBACKEXT, (AND GLenum primitiveMode), (primitiveMode), &primitiveMode, GL_void_return) GL_PROCM(void, gl, BeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, BEGINTRANSFORMFEEDBACKEXT, (AND GLenum primitiveMode), (primitiveMode), &primitiveMode, GL_void_return) #endif #endif #ifndef NO_GLBEGINTRANSFORMFEEDBACKNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginTransformFeedbackNV, glBeginTransformFeedbackNV, BEGINTRANSFORMFEEDBACKNV, (AND GLenum primitiveMode), (primitiveMode), &primitiveMode, GL_void_return) GL_PROCM(void, gl, BeginTransformFeedbackNV, glBeginTransformFeedbackNV, BEGINTRANSFORMFEEDBACKNV, (AND GLenum primitiveMode), (primitiveMode), &primitiveMode, GL_void_return) #endif #endif #ifndef NO_GLBEGINVERTEXSHADEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginVertexShaderEXT, glBeginVertexShaderEXT, BEGINVERTEXSHADEREXT, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, BeginVertexShaderEXT, glBeginVertexShaderEXT, BEGINVERTEXSHADEREXT, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLBEGINVIDEOCAPTURENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BeginVideoCaptureNV, glBeginVideoCaptureNV, BEGINVIDEOCAPTURENV, (AND GLuint video_capture_slot), (video_capture_slot), &video_capture_slot, GL_void_return) GL_PROCM(void, gl, BeginVideoCaptureNV, glBeginVideoCaptureNV, BEGINVIDEOCAPTURENV, (AND GLuint video_capture_slot), (video_capture_slot), &video_capture_slot, GL_void_return) #endif #endif #ifndef NO_GLBINDATTRIBLOCATION #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindAttribLocation, glBindAttribLocation, BINDATTRIBLOCATION, (AND GLuint program, GLuint index, const GLchar *name), (program, index, name), &program, GL_void_return) GL_PROCM(void, gl, BindAttribLocation, glBindAttribLocation, BINDATTRIBLOCATION, (AND GLuint program, GLuint index, memptr name), (program, index, name), &program, GL_void_return) #endif #endif #ifndef NO_GLBINDATTRIBLOCATIONARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindAttribLocationARB, glBindAttribLocationARB, BINDATTRIBLOCATIONARB, (AND GLhandleARB programObj, GLuint index, const GLcharARB *name), (programObj, index, name), &programObj, GL_void_return) GL_PROCM(void, gl, BindAttribLocationARB, glBindAttribLocationARB, BINDATTRIBLOCATIONARB, (AND GLhandleARB programObj, GLuint index, memptr name), (programObj, index, name), &programObj, GL_void_return) #endif #endif #ifndef NO_GLBINDBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindBuffer, glBindBuffer, BINDBUFFER, (AND GLenum target, GLuint buffer), (target, buffer), &target, GL_void_return) GL_PROCM(void, gl, BindBuffer, glBindBuffer, BINDBUFFER, (AND GLenum target, GLuint buffer), (target, buffer), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDBUFFERARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindBufferARB, glBindBufferARB, BINDBUFFERARB, (AND GLenum target, GLuint buffer), (target, buffer), &target, GL_void_return) GL_PROCM(void, gl, BindBufferARB, glBindBufferARB, BINDBUFFERARB, (AND GLenum target, GLuint buffer), (target, buffer), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDBUFFERBASE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindBufferBase, glBindBufferBase, BINDBUFFERBASE, (AND GLenum target, GLuint index, GLuint buffer), (target, index, buffer), &target, GL_void_return) GL_PROCM(void, gl, BindBufferBase, glBindBufferBase, BINDBUFFERBASE, (AND GLenum target, GLuint index, GLuint buffer), (target, index, buffer), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDBUFFERBASEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindBufferBaseEXT, glBindBufferBaseEXT, BINDBUFFERBASEEXT, (AND GLenum target, GLuint index, GLuint buffer), (target, index, buffer), &target, GL_void_return) GL_PROCM(void, gl, BindBufferBaseEXT, glBindBufferBaseEXT, BINDBUFFERBASEEXT, (AND GLenum target, GLuint index, GLuint buffer), (target, index, buffer), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDBUFFERBASENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindBufferBaseNV, glBindBufferBaseNV, BINDBUFFERBASENV, (AND GLenum target, GLuint index, GLuint buffer), (target, index, buffer), &target, GL_void_return) GL_PROCM(void, gl, BindBufferBaseNV, glBindBufferBaseNV, BINDBUFFERBASENV, (AND GLenum target, GLuint index, GLuint buffer), (target, index, buffer), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDBUFFEROFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindBufferOffsetEXT, glBindBufferOffsetEXT, BINDBUFFEROFFSETEXT, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset), (target, index, buffer, offset), &target, GL_void_return) GL_PROCM(void, gl, BindBufferOffsetEXT, glBindBufferOffsetEXT, BINDBUFFEROFFSETEXT, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset), (target, index, buffer, offset), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDBUFFEROFFSETNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindBufferOffsetNV, glBindBufferOffsetNV, BINDBUFFEROFFSETNV, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset), (target, index, buffer, offset), &target, GL_void_return) GL_PROCM(void, gl, BindBufferOffsetNV, glBindBufferOffsetNV, BINDBUFFEROFFSETNV, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset), (target, index, buffer, offset), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDBUFFERRANGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindBufferRange, glBindBufferRange, BINDBUFFERRANGE, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size), (target, index, buffer, offset, size), &target, GL_void_return) GL_PROCM(void, gl, BindBufferRange, glBindBufferRange, BINDBUFFERRANGE, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size), (target, index, buffer, offset, size), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDBUFFERRANGEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindBufferRangeEXT, glBindBufferRangeEXT, BINDBUFFERRANGEEXT, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size), (target, index, buffer, offset, size), &target, GL_void_return) GL_PROCM(void, gl, BindBufferRangeEXT, glBindBufferRangeEXT, BINDBUFFERRANGEEXT, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size), (target, index, buffer, offset, size), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDBUFFERRANGENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindBufferRangeNV, glBindBufferRangeNV, BINDBUFFERRANGENV, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size), (target, index, buffer, offset, size), &target, GL_void_return) GL_PROCM(void, gl, BindBufferRangeNV, glBindBufferRangeNV, BINDBUFFERRANGENV, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size), (target, index, buffer, offset, size), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDBUFFERSBASE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindBuffersBase, glBindBuffersBase, BINDBUFFERSBASE, (AND GLenum target, GLuint first, GLsizei count, const GLuint *buffers), (target, first, count, buffers), &target, GL_void_return) GL_PROCM(void, gl, BindBuffersBase, glBindBuffersBase, BINDBUFFERSBASE, (AND GLenum target, GLuint first, GLsizei count, memptr buffers), (target, first, count, buffers), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDBUFFERSRANGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindBuffersRange, glBindBuffersRange, BINDBUFFERSRANGE, (AND GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes), (target, first, count, buffers, offsets, sizes), &target, GL_void_return) GL_PROCM(void, gl, BindBuffersRange, glBindBuffersRange, BINDBUFFERSRANGE, (AND GLenum target, GLuint first, GLsizei count, memptr buffers, memptr offsets, memptr sizes), (target, first, count, buffers, offsets, sizes), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDFRAGDATALOCATION #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindFragDataLocation, glBindFragDataLocation, BINDFRAGDATALOCATION, (AND GLuint program, GLuint color, const GLchar *name), (program, color, name), &program, GL_void_return) GL_PROCM(void, gl, BindFragDataLocation, glBindFragDataLocation, BINDFRAGDATALOCATION, (AND GLuint program, GLuint color, memptr name), (program, color, name), &program, GL_void_return) #endif #endif #ifndef NO_GLBINDFRAGDATALOCATIONEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindFragDataLocationEXT, glBindFragDataLocationEXT, BINDFRAGDATALOCATIONEXT, (AND GLuint program, GLuint color, const GLchar *name), (program, color, name), &program, GL_void_return) GL_PROCM(void, gl, BindFragDataLocationEXT, glBindFragDataLocationEXT, BINDFRAGDATALOCATIONEXT, (AND GLuint program, GLuint color, memptr name), (program, color, name), &program, GL_void_return) #endif #endif #ifndef NO_GLBINDFRAGDATALOCATIONINDEXED #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindFragDataLocationIndexed, glBindFragDataLocationIndexed, BINDFRAGDATALOCATIONINDEXED, (AND GLuint program, GLuint colorNumber, GLuint index, const GLchar *name), (program, colorNumber, index, name), &program, GL_void_return) GL_PROCM(void, gl, BindFragDataLocationIndexed, glBindFragDataLocationIndexed, BINDFRAGDATALOCATIONINDEXED, (AND GLuint program, GLuint colorNumber, GLuint index, memptr name), (program, colorNumber, index, name), &program, GL_void_return) #endif #endif #ifndef NO_GLBINDFRAGMENTSHADERATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindFragmentShaderATI, glBindFragmentShaderATI, BINDFRAGMENTSHADERATI, (AND GLuint id), (id), &id, GL_void_return) GL_PROCM(void, gl, BindFragmentShaderATI, glBindFragmentShaderATI, BINDFRAGMENTSHADERATI, (AND GLuint id), (id), &id, GL_void_return) #endif #endif #ifndef NO_GLBINDFRAMEBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindFramebuffer, glBindFramebuffer, BINDFRAMEBUFFER, (AND GLenum target, GLuint framebuffer), (target, framebuffer), &target, GL_void_return) GL_PROCM(void, gl, BindFramebuffer, glBindFramebuffer, BINDFRAMEBUFFER, (AND GLenum target, GLuint framebuffer), (target, framebuffer), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDFRAMEBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindFramebufferEXT, glBindFramebufferEXT, BINDFRAMEBUFFEREXT, (AND GLenum target, GLuint framebuffer), (target, framebuffer), &target, GL_void_return) GL_PROCM(void, gl, BindFramebufferEXT, glBindFramebufferEXT, BINDFRAMEBUFFEREXT, (AND GLenum target, GLuint framebuffer), (target, framebuffer), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDIMAGETEXTURE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindImageTexture, glBindImageTexture, BINDIMAGETEXTURE, (AND GLuint unit, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLenum format), (unit, texture, level, layered, layer, access, format), &unit, GL_void_return) GL_PROCM(void, gl, BindImageTexture, glBindImageTexture, BINDIMAGETEXTURE, (AND GLuint unit, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLenum format), (unit, texture, level, layered, layer, access, format), &unit, GL_void_return) #endif #endif #ifndef NO_GLBINDIMAGETEXTUREEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindImageTextureEXT, glBindImageTextureEXT, BINDIMAGETEXTUREEXT, (AND GLuint index, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLint format), (index, texture, level, layered, layer, access, format), &index, GL_void_return) GL_PROCM(void, gl, BindImageTextureEXT, glBindImageTextureEXT, BINDIMAGETEXTUREEXT, (AND GLuint index, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLint format), (index, texture, level, layered, layer, access, format), &index, GL_void_return) #endif #endif #ifndef NO_GLBINDIMAGETEXTURES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindImageTextures, glBindImageTextures, BINDIMAGETEXTURES, (AND GLuint first, GLsizei count, const GLuint *textures), (first, count, textures), &first, GL_void_return) GL_PROCM(void, gl, BindImageTextures, glBindImageTextures, BINDIMAGETEXTURES, (AND GLuint first, GLsizei count, memptr textures), (first, count, textures), &first, GL_void_return) #endif #endif #ifndef NO_GLBINDLIGHTPARAMETEREXT #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, BindLightParameterEXT, glBindLightParameterEXT, BINDLIGHTPARAMETEREXT, (AND GLenum light, GLenum value), (light, value), &light, return (GLuint)) GL_PROCM(GLuint, gl, BindLightParameterEXT, glBindLightParameterEXT, BINDLIGHTPARAMETEREXT, (AND GLenum light, GLenum value), (light, value), &light, return (GLuint)) #endif #endif #ifndef NO_GLBINDMATERIALPARAMETEREXT #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, BindMaterialParameterEXT, glBindMaterialParameterEXT, BINDMATERIALPARAMETEREXT, (AND GLenum face, GLenum value), (face, value), &face, return (GLuint)) GL_PROCM(GLuint, gl, BindMaterialParameterEXT, glBindMaterialParameterEXT, BINDMATERIALPARAMETEREXT, (AND GLenum face, GLenum value), (face, value), &face, return (GLuint)) #endif #endif #ifndef NO_GLBINDMULTITEXTUREEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindMultiTextureEXT, glBindMultiTextureEXT, BINDMULTITEXTUREEXT, (AND GLenum texunit, GLenum target, GLuint texture), (texunit, target, texture), &texunit, GL_void_return) GL_PROCM(void, gl, BindMultiTextureEXT, glBindMultiTextureEXT, BINDMULTITEXTUREEXT, (AND GLenum texunit, GLenum target, GLuint texture), (texunit, target, texture), &texunit, GL_void_return) #endif #endif #ifndef NO_GLBINDPARAMETEREXT #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, BindParameterEXT, glBindParameterEXT, BINDPARAMETEREXT, (AND GLenum value), (value), &value, return (GLuint)) GL_PROCM(GLuint, gl, BindParameterEXT, glBindParameterEXT, BINDPARAMETEREXT, (AND GLenum value), (value), &value, return (GLuint)) #endif #endif #ifndef NO_GLBINDPROGRAMARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindProgramARB, glBindProgramARB, BINDPROGRAMARB, (AND GLenum target, GLuint program), (target, program), &target, GL_void_return) GL_PROCM(void, gl, BindProgramARB, glBindProgramARB, BINDPROGRAMARB, (AND GLenum target, GLuint program), (target, program), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDPROGRAMNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindProgramNV, glBindProgramNV, BINDPROGRAMNV, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) GL_PROCM(void, gl, BindProgramNV, glBindProgramNV, BINDPROGRAMNV, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDPROGRAMPIPELINE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindProgramPipeline, glBindProgramPipeline, BINDPROGRAMPIPELINE, (AND GLuint pipeline), (pipeline), &pipeline, GL_void_return) GL_PROCM(void, gl, BindProgramPipeline, glBindProgramPipeline, BINDPROGRAMPIPELINE, (AND GLuint pipeline), (pipeline), &pipeline, GL_void_return) #endif #endif #ifndef NO_GLBINDRENDERBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindRenderbuffer, glBindRenderbuffer, BINDRENDERBUFFER, (AND GLenum target, GLuint renderbuffer), (target, renderbuffer), &target, GL_void_return) GL_PROCM(void, gl, BindRenderbuffer, glBindRenderbuffer, BINDRENDERBUFFER, (AND GLenum target, GLuint renderbuffer), (target, renderbuffer), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDRENDERBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindRenderbufferEXT, glBindRenderbufferEXT, BINDRENDERBUFFEREXT, (AND GLenum target, GLuint renderbuffer), (target, renderbuffer), &target, GL_void_return) GL_PROCM(void, gl, BindRenderbufferEXT, glBindRenderbufferEXT, BINDRENDERBUFFEREXT, (AND GLenum target, GLuint renderbuffer), (target, renderbuffer), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDSAMPLER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindSampler, glBindSampler, BINDSAMPLER, (AND GLuint unit, GLuint sampler), (unit, sampler), &unit, GL_void_return) GL_PROCM(void, gl, BindSampler, glBindSampler, BINDSAMPLER, (AND GLuint unit, GLuint sampler), (unit, sampler), &unit, GL_void_return) #endif #endif #ifndef NO_GLBINDSAMPLERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindSamplers, glBindSamplers, BINDSAMPLERS, (AND GLuint first, GLsizei count, const GLuint *samplers), (first, count, samplers), &first, GL_void_return) GL_PROCM(void, gl, BindSamplers, glBindSamplers, BINDSAMPLERS, (AND GLuint first, GLsizei count, memptr samplers), (first, count, samplers), &first, GL_void_return) #endif #endif #ifndef NO_GLBINDTEXGENPARAMETEREXT #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, BindTexGenParameterEXT, glBindTexGenParameterEXT, BINDTEXGENPARAMETEREXT, (AND GLenum unit, GLenum coord, GLenum value), (unit, coord, value), &unit, return (GLuint)) GL_PROCM(GLuint, gl, BindTexGenParameterEXT, glBindTexGenParameterEXT, BINDTEXGENPARAMETEREXT, (AND GLenum unit, GLenum coord, GLenum value), (unit, coord, value), &unit, return (GLuint)) #endif #endif #ifndef NO_GLBINDTEXTURE GL_PROC(void, gl, BindTexture, glBindTexture, BINDTEXTURE, (AND GLenum target, GLuint texture), (target, texture), &target, GL_void_return) GL_PROCM(void, gl, BindTexture, glBindTexture, BINDTEXTURE, (AND GLenum target, GLuint texture), (target, texture), &target, GL_void_return) #endif #ifndef NO_GLBINDTEXTUREEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindTextureEXT, glBindTextureEXT, BINDTEXTUREEXT, (AND GLenum target, GLuint texture), (target, texture), &target, GL_void_return) GL_PROCM(void, gl, BindTextureEXT, glBindTextureEXT, BINDTEXTUREEXT, (AND GLenum target, GLuint texture), (target, texture), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDTEXTUREUNIT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindTextureUnit, glBindTextureUnit, BINDTEXTUREUNIT, (AND GLuint unit, GLuint texture), (unit, texture), &unit, GL_void_return) GL_PROCM(void, gl, BindTextureUnit, glBindTextureUnit, BINDTEXTUREUNIT, (AND GLuint unit, GLuint texture), (unit, texture), &unit, GL_void_return) #endif #endif #ifndef NO_GLBINDTEXTUREUNITPARAMETEREXT #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, BindTextureUnitParameterEXT, glBindTextureUnitParameterEXT, BINDTEXTUREUNITPARAMETEREXT, (AND GLenum unit, GLenum value), (unit, value), &unit, return (GLuint)) GL_PROCM(GLuint, gl, BindTextureUnitParameterEXT, glBindTextureUnitParameterEXT, BINDTEXTUREUNITPARAMETEREXT, (AND GLenum unit, GLenum value), (unit, value), &unit, return (GLuint)) #endif #endif #ifndef NO_GLBINDTEXTURES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindTextures, glBindTextures, BINDTEXTURES, (AND GLuint first, GLsizei count, const GLuint *textures), (first, count, textures), &first, GL_void_return) GL_PROCM(void, gl, BindTextures, glBindTextures, BINDTEXTURES, (AND GLuint first, GLsizei count, memptr textures), (first, count, textures), &first, GL_void_return) #endif #endif #ifndef NO_GLBINDTRANSFORMFEEDBACK #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindTransformFeedback, glBindTransformFeedback, BINDTRANSFORMFEEDBACK, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) GL_PROCM(void, gl, BindTransformFeedback, glBindTransformFeedback, BINDTRANSFORMFEEDBACK, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDTRANSFORMFEEDBACKNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindTransformFeedbackNV, glBindTransformFeedbackNV, BINDTRANSFORMFEEDBACKNV, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) GL_PROCM(void, gl, BindTransformFeedbackNV, glBindTransformFeedbackNV, BINDTRANSFORMFEEDBACKNV, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) #endif #endif #ifndef NO_GLBINDVERTEXARRAY #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindVertexArray, glBindVertexArray, BINDVERTEXARRAY, (AND GLuint array), (array), &array, GL_void_return) GL_PROCM(void, gl, BindVertexArray, glBindVertexArray, BINDVERTEXARRAY, (AND GLuint array), (array), &array, GL_void_return) #endif #endif #ifndef NO_GLBINDVERTEXARRAYAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindVertexArrayAPPLE, glBindVertexArrayAPPLE, BINDVERTEXARRAYAPPLE, (AND GLuint array), (array), &array, GL_void_return) GL_PROCM(void, gl, BindVertexArrayAPPLE, glBindVertexArrayAPPLE, BINDVERTEXARRAYAPPLE, (AND GLuint array), (array), &array, GL_void_return) #endif #endif #ifndef NO_GLBINDVERTEXBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindVertexBuffer, glBindVertexBuffer, BINDVERTEXBUFFER, (AND GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride), (bindingindex, buffer, offset, stride), &bindingindex, GL_void_return) GL_PROCM(void, gl, BindVertexBuffer, glBindVertexBuffer, BINDVERTEXBUFFER, (AND GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride), (bindingindex, buffer, offset, stride), &bindingindex, GL_void_return) #endif #endif #ifndef NO_GLBINDVERTEXBUFFERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindVertexBuffers, glBindVertexBuffers, BINDVERTEXBUFFERS, (AND GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides), (first, count, buffers, offsets, strides), &first, GL_void_return) GL_PROCM(void, gl, BindVertexBuffers, glBindVertexBuffers, BINDVERTEXBUFFERS, (AND GLuint first, GLsizei count, memptr buffers, memptr offsets, memptr strides), (first, count, buffers, offsets, strides), &first, GL_void_return) #endif #endif #ifndef NO_GLBINDVERTEXSHADEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindVertexShaderEXT, glBindVertexShaderEXT, BINDVERTEXSHADEREXT, (AND GLuint id), (id), &id, GL_void_return) GL_PROCM(void, gl, BindVertexShaderEXT, glBindVertexShaderEXT, BINDVERTEXSHADEREXT, (AND GLuint id), (id), &id, GL_void_return) #endif #endif #ifndef NO_GLBINDVIDEOCAPTURESTREAMBUFFERNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindVideoCaptureStreamBufferNV, glBindVideoCaptureStreamBufferNV, BINDVIDEOCAPTURESTREAMBUFFERNV, (AND GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset), (video_capture_slot, stream, frame_region, offset), &video_capture_slot, GL_void_return) GL_PROCM(void, gl, BindVideoCaptureStreamBufferNV, glBindVideoCaptureStreamBufferNV, BINDVIDEOCAPTURESTREAMBUFFERNV, (AND GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset), (video_capture_slot, stream, frame_region, offset), &video_capture_slot, GL_void_return) #endif #endif #ifndef NO_GLBINDVIDEOCAPTURESTREAMTEXTURENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BindVideoCaptureStreamTextureNV, glBindVideoCaptureStreamTextureNV, BINDVIDEOCAPTURESTREAMTEXTURENV, (AND GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture), (video_capture_slot, stream, frame_region, target, texture), &video_capture_slot, GL_void_return) GL_PROCM(void, gl, BindVideoCaptureStreamTextureNV, glBindVideoCaptureStreamTextureNV, BINDVIDEOCAPTURESTREAMTEXTURENV, (AND GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture), (video_capture_slot, stream, frame_region, target, texture), &video_capture_slot, GL_void_return) #endif #endif #ifndef NO_GLBINORMAL3BEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Binormal3bEXT, glBinormal3bEXT, BINORMAL3BEXT, (AND GLbyte32 bx, GLbyte32 by, GLbyte32 bz), (bx, by, bz), &bx, GL_void_return) GL_PROCM(void, gl, Binormal3bEXT, glBinormal3bEXT, BINORMAL3BEXT, (AND GLbyte32 bx, GLbyte32 by, GLbyte32 bz), (bx, by, bz), &bx, GL_void_return) #endif #endif #ifndef NO_GLBINORMAL3BVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Binormal3bvEXT, glBinormal3bvEXT, BINORMAL3BVEXT, (AND const GLbyte *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Binormal3bvEXT, glBinormal3bvEXT, BINORMAL3BVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLBINORMAL3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Binormal3dEXT, glBinormal3dEXT, BINORMAL3DEXT, (AND GLdouble bx, GLdouble by, GLdouble bz), (bx, by, bz), &bx, GL_void_return) GL_PROCM(void, gl, Binormal3dEXT, glBinormal3dEXT, BINORMAL3DEXT, (AND GLdouble bx, GLdouble by, GLdouble bz), (bx, by, bz), &bx, GL_void_return) #endif #endif #ifndef NO_GLBINORMAL3DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Binormal3dvEXT, glBinormal3dvEXT, BINORMAL3DVEXT, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Binormal3dvEXT, glBinormal3dvEXT, BINORMAL3DVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLBINORMAL3FEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Binormal3fEXT, glBinormal3fEXT, BINORMAL3FEXT, (AND GLfloat bx, GLfloat by, GLfloat bz), (bx, by, bz), &bx, GL_void_return) GL_PROCM(void, gl, Binormal3fEXT, glBinormal3fEXT, BINORMAL3FEXT, (AND GLfloat bx, GLfloat by, GLfloat bz), (bx, by, bz), &bx, GL_void_return) #endif #endif #ifndef NO_GLBINORMAL3FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Binormal3fvEXT, glBinormal3fvEXT, BINORMAL3FVEXT, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Binormal3fvEXT, glBinormal3fvEXT, BINORMAL3FVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLBINORMAL3IEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Binormal3iEXT, glBinormal3iEXT, BINORMAL3IEXT, (AND GLint bx, GLint by, GLint bz), (bx, by, bz), &bx, GL_void_return) GL_PROCM(void, gl, Binormal3iEXT, glBinormal3iEXT, BINORMAL3IEXT, (AND GLint bx, GLint by, GLint bz), (bx, by, bz), &bx, GL_void_return) #endif #endif #ifndef NO_GLBINORMAL3IVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Binormal3ivEXT, glBinormal3ivEXT, BINORMAL3IVEXT, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Binormal3ivEXT, glBinormal3ivEXT, BINORMAL3IVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLBINORMAL3SEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Binormal3sEXT, glBinormal3sEXT, BINORMAL3SEXT, (AND GLshort32 bx, GLshort32 by, GLshort32 bz), (bx, by, bz), &bx, GL_void_return) GL_PROCM(void, gl, Binormal3sEXT, glBinormal3sEXT, BINORMAL3SEXT, (AND GLshort32 bx, GLshort32 by, GLshort32 bz), (bx, by, bz), &bx, GL_void_return) #endif #endif #ifndef NO_GLBINORMAL3SVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Binormal3svEXT, glBinormal3svEXT, BINORMAL3SVEXT, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Binormal3svEXT, glBinormal3svEXT, BINORMAL3SVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLBINORMALPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BinormalPointerEXT, glBinormalPointerEXT, BINORMALPOINTEREXT, (AND GLenum type, GLsizei stride, const void *pointer), (type, stride, pointer), &type, GL_void_return) GL_PROCM(void, gl, BinormalPointerEXT, glBinormalPointerEXT, BINORMALPOINTEREXT, (AND GLenum type, GLsizei stride, memptr pointer), (type, stride, pointer), &type, GL_void_return) #endif #endif #ifndef NO_GLBITMAP #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Bitmap, glBitmap, BITMAP, (AND GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap), (width, height, xorig, yorig, xmove, ymove, bitmap), &width, GL_void_return) GL_PROCM(void, gl, Bitmap, glBitmap, BITMAP, (AND GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, memptr bitmap), (width, height, xorig, yorig, xmove, ymove, bitmap), &width, GL_void_return) #endif #endif #ifndef NO_GLBITMAPXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BitmapxOES, glBitmapxOES, BITMAPXOES, (AND GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap), (width, height, xorig, yorig, xmove, ymove, bitmap), &width, GL_void_return) GL_PROCM(void, gl, BitmapxOES, glBitmapxOES, BITMAPXOES, (AND GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, memptr bitmap), (width, height, xorig, yorig, xmove, ymove, bitmap), &width, GL_void_return) #endif #endif #ifndef NO_GLBLENDBARRIERKHR #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendBarrierKHR, glBlendBarrierKHR, BLENDBARRIERKHR, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, BlendBarrierKHR, glBlendBarrierKHR, BLENDBARRIERKHR, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLBLENDBARRIERNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendBarrierNV, glBlendBarrierNV, BLENDBARRIERNV, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, BlendBarrierNV, glBlendBarrierNV, BLENDBARRIERNV, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLBLENDCOLOR #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendColor, glBlendColor, BLENDCOLOR, (AND GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, BlendColor, glBlendColor, BLENDCOLOR, (AND GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLBLENDCOLOREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendColorEXT, glBlendColorEXT, BLENDCOLOREXT, (AND GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, BlendColorEXT, glBlendColorEXT, BLENDCOLOREXT, (AND GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLBLENDCOLORXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendColorxOES, glBlendColorxOES, BLENDCOLORXOES, (AND GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, BlendColorxOES, glBlendColorxOES, BLENDCOLORXOES, (AND GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLBLENDEQUATION #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendEquation, glBlendEquation, BLENDEQUATION, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, BlendEquation, glBlendEquation, BLENDEQUATION, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLBLENDEQUATIONEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendEquationEXT, glBlendEquationEXT, BLENDEQUATIONEXT, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, BlendEquationEXT, glBlendEquationEXT, BLENDEQUATIONEXT, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLBLENDEQUATIONINDEXEDAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendEquationIndexedAMD, glBlendEquationIndexedAMD, BLENDEQUATIONINDEXEDAMD, (AND GLuint buf, GLenum mode), (buf, mode), &buf, GL_void_return) GL_PROCM(void, gl, BlendEquationIndexedAMD, glBlendEquationIndexedAMD, BLENDEQUATIONINDEXEDAMD, (AND GLuint buf, GLenum mode), (buf, mode), &buf, GL_void_return) #endif #endif #ifndef NO_GLBLENDEQUATIONSEPARATE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendEquationSeparate, glBlendEquationSeparate, BLENDEQUATIONSEPARATE, (AND GLenum modeRGB, GLenum modeAlpha), (modeRGB, modeAlpha), &modeRGB, GL_void_return) GL_PROCM(void, gl, BlendEquationSeparate, glBlendEquationSeparate, BLENDEQUATIONSEPARATE, (AND GLenum modeRGB, GLenum modeAlpha), (modeRGB, modeAlpha), &modeRGB, GL_void_return) #endif #endif #ifndef NO_GLBLENDEQUATIONSEPARATEATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendEquationSeparateATI, glBlendEquationSeparateATI, BLENDEQUATIONSEPARATEATI, (AND GLenum equationRGB, GLenum equationAlpha), (equationRGB, equationAlpha), &equationRGB, GL_void_return) GL_PROCM(void, gl, BlendEquationSeparateATI, glBlendEquationSeparateATI, BLENDEQUATIONSEPARATEATI, (AND GLenum equationRGB, GLenum equationAlpha), (equationRGB, equationAlpha), &equationRGB, GL_void_return) #endif #endif #ifndef NO_GLBLENDEQUATIONSEPARATEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendEquationSeparateEXT, glBlendEquationSeparateEXT, BLENDEQUATIONSEPARATEEXT, (AND GLenum modeRGB, GLenum modeAlpha), (modeRGB, modeAlpha), &modeRGB, GL_void_return) GL_PROCM(void, gl, BlendEquationSeparateEXT, glBlendEquationSeparateEXT, BLENDEQUATIONSEPARATEEXT, (AND GLenum modeRGB, GLenum modeAlpha), (modeRGB, modeAlpha), &modeRGB, GL_void_return) #endif #endif #ifndef NO_GLBLENDEQUATIONSEPARATEINDEXEDAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendEquationSeparateIndexedAMD, glBlendEquationSeparateIndexedAMD, BLENDEQUATIONSEPARATEINDEXEDAMD, (AND GLuint buf, GLenum modeRGB, GLenum modeAlpha), (buf, modeRGB, modeAlpha), &buf, GL_void_return) GL_PROCM(void, gl, BlendEquationSeparateIndexedAMD, glBlendEquationSeparateIndexedAMD, BLENDEQUATIONSEPARATEINDEXEDAMD, (AND GLuint buf, GLenum modeRGB, GLenum modeAlpha), (buf, modeRGB, modeAlpha), &buf, GL_void_return) #endif #endif #ifndef NO_GLBLENDEQUATIONSEPARATEI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendEquationSeparatei, glBlendEquationSeparatei, BLENDEQUATIONSEPARATEI, (AND GLuint buf, GLenum modeRGB, GLenum modeAlpha), (buf, modeRGB, modeAlpha), &buf, GL_void_return) GL_PROCM(void, gl, BlendEquationSeparatei, glBlendEquationSeparatei, BLENDEQUATIONSEPARATEI, (AND GLuint buf, GLenum modeRGB, GLenum modeAlpha), (buf, modeRGB, modeAlpha), &buf, GL_void_return) #endif #endif #ifndef NO_GLBLENDEQUATIONSEPARATEIARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendEquationSeparateiARB, glBlendEquationSeparateiARB, BLENDEQUATIONSEPARATEIARB, (AND GLuint buf, GLenum modeRGB, GLenum modeAlpha), (buf, modeRGB, modeAlpha), &buf, GL_void_return) GL_PROCM(void, gl, BlendEquationSeparateiARB, glBlendEquationSeparateiARB, BLENDEQUATIONSEPARATEIARB, (AND GLuint buf, GLenum modeRGB, GLenum modeAlpha), (buf, modeRGB, modeAlpha), &buf, GL_void_return) #endif #endif #ifndef NO_GLBLENDEQUATIONI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendEquationi, glBlendEquationi, BLENDEQUATIONI, (AND GLuint buf, GLenum mode), (buf, mode), &buf, GL_void_return) GL_PROCM(void, gl, BlendEquationi, glBlendEquationi, BLENDEQUATIONI, (AND GLuint buf, GLenum mode), (buf, mode), &buf, GL_void_return) #endif #endif #ifndef NO_GLBLENDEQUATIONIARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendEquationiARB, glBlendEquationiARB, BLENDEQUATIONIARB, (AND GLuint buf, GLenum mode), (buf, mode), &buf, GL_void_return) GL_PROCM(void, gl, BlendEquationiARB, glBlendEquationiARB, BLENDEQUATIONIARB, (AND GLuint buf, GLenum mode), (buf, mode), &buf, GL_void_return) #endif #endif #ifndef NO_GLBLENDFUNC #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendFunc, glBlendFunc, BLENDFUNC, (AND GLenum sfactor, GLenum dfactor), (sfactor, dfactor), &sfactor, GL_void_return) GL_PROCM(void, gl, BlendFunc, glBlendFunc, BLENDFUNC, (AND GLenum sfactor, GLenum dfactor), (sfactor, dfactor), &sfactor, GL_void_return) #endif #endif #ifndef NO_GLBLENDFUNCINDEXEDAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendFuncIndexedAMD, glBlendFuncIndexedAMD, BLENDFUNCINDEXEDAMD, (AND GLuint buf, GLenum src, GLenum dst), (buf, src, dst), &buf, GL_void_return) GL_PROCM(void, gl, BlendFuncIndexedAMD, glBlendFuncIndexedAMD, BLENDFUNCINDEXEDAMD, (AND GLuint buf, GLenum src, GLenum dst), (buf, src, dst), &buf, GL_void_return) #endif #endif #ifndef NO_GLBLENDFUNCSEPARATE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendFuncSeparate, glBlendFuncSeparate, BLENDFUNCSEPARATE, (AND GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha), (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), &sfactorRGB, GL_void_return) GL_PROCM(void, gl, BlendFuncSeparate, glBlendFuncSeparate, BLENDFUNCSEPARATE, (AND GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha), (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), &sfactorRGB, GL_void_return) #endif #endif #ifndef NO_GLBLENDFUNCSEPARATEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendFuncSeparateEXT, glBlendFuncSeparateEXT, BLENDFUNCSEPARATEEXT, (AND GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha), (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), &sfactorRGB, GL_void_return) GL_PROCM(void, gl, BlendFuncSeparateEXT, glBlendFuncSeparateEXT, BLENDFUNCSEPARATEEXT, (AND GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha), (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), &sfactorRGB, GL_void_return) #endif #endif #ifndef NO_GLBLENDFUNCSEPARATEINGR #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendFuncSeparateINGR, glBlendFuncSeparateINGR, BLENDFUNCSEPARATEINGR, (AND GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha), (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), &sfactorRGB, GL_void_return) GL_PROCM(void, gl, BlendFuncSeparateINGR, glBlendFuncSeparateINGR, BLENDFUNCSEPARATEINGR, (AND GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha), (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), &sfactorRGB, GL_void_return) #endif #endif #ifndef NO_GLBLENDFUNCSEPARATEINDEXEDAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendFuncSeparateIndexedAMD, glBlendFuncSeparateIndexedAMD, BLENDFUNCSEPARATEINDEXEDAMD, (AND GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha), (buf, srcRGB, dstRGB, srcAlpha, dstAlpha), &buf, GL_void_return) GL_PROCM(void, gl, BlendFuncSeparateIndexedAMD, glBlendFuncSeparateIndexedAMD, BLENDFUNCSEPARATEINDEXEDAMD, (AND GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha), (buf, srcRGB, dstRGB, srcAlpha, dstAlpha), &buf, GL_void_return) #endif #endif #ifndef NO_GLBLENDFUNCSEPARATEI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendFuncSeparatei, glBlendFuncSeparatei, BLENDFUNCSEPARATEI, (AND GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha), (buf, srcRGB, dstRGB, srcAlpha, dstAlpha), &buf, GL_void_return) GL_PROCM(void, gl, BlendFuncSeparatei, glBlendFuncSeparatei, BLENDFUNCSEPARATEI, (AND GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha), (buf, srcRGB, dstRGB, srcAlpha, dstAlpha), &buf, GL_void_return) #endif #endif #ifndef NO_GLBLENDFUNCSEPARATEIARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendFuncSeparateiARB, glBlendFuncSeparateiARB, BLENDFUNCSEPARATEIARB, (AND GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha), (buf, srcRGB, dstRGB, srcAlpha, dstAlpha), &buf, GL_void_return) GL_PROCM(void, gl, BlendFuncSeparateiARB, glBlendFuncSeparateiARB, BLENDFUNCSEPARATEIARB, (AND GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha), (buf, srcRGB, dstRGB, srcAlpha, dstAlpha), &buf, GL_void_return) #endif #endif #ifndef NO_GLBLENDFUNCI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendFunci, glBlendFunci, BLENDFUNCI, (AND GLuint buf, GLenum src, GLenum dst), (buf, src, dst), &buf, GL_void_return) GL_PROCM(void, gl, BlendFunci, glBlendFunci, BLENDFUNCI, (AND GLuint buf, GLenum src, GLenum dst), (buf, src, dst), &buf, GL_void_return) #endif #endif #ifndef NO_GLBLENDFUNCIARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendFunciARB, glBlendFunciARB, BLENDFUNCIARB, (AND GLuint buf, GLenum src, GLenum dst), (buf, src, dst), &buf, GL_void_return) GL_PROCM(void, gl, BlendFunciARB, glBlendFunciARB, BLENDFUNCIARB, (AND GLuint buf, GLenum src, GLenum dst), (buf, src, dst), &buf, GL_void_return) #endif #endif #ifndef NO_GLBLENDPARAMETERINV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlendParameteriNV, glBlendParameteriNV, BLENDPARAMETERINV, (AND GLenum pname, GLint value), (pname, value), &pname, GL_void_return) GL_PROCM(void, gl, BlendParameteriNV, glBlendParameteriNV, BLENDPARAMETERINV, (AND GLenum pname, GLint value), (pname, value), &pname, GL_void_return) #endif #endif #ifndef NO_GLBLITFRAMEBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlitFramebuffer, glBlitFramebuffer, BLITFRAMEBUFFER, (AND GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter), (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), &srcX0, GL_void_return) GL_PROCM(void, gl, BlitFramebuffer, glBlitFramebuffer, BLITFRAMEBUFFER, (AND GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter), (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), &srcX0, GL_void_return) #endif #endif #ifndef NO_GLBLITFRAMEBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlitFramebufferEXT, glBlitFramebufferEXT, BLITFRAMEBUFFEREXT, (AND GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter), (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), &srcX0, GL_void_return) GL_PROCM(void, gl, BlitFramebufferEXT, glBlitFramebufferEXT, BLITFRAMEBUFFEREXT, (AND GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter), (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), &srcX0, GL_void_return) #endif #endif #ifndef NO_GLBLITNAMEDFRAMEBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BlitNamedFramebuffer, glBlitNamedFramebuffer, BLITNAMEDFRAMEBUFFER, (AND GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter), (readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), &readFramebuffer, GL_void_return) GL_PROCM(void, gl, BlitNamedFramebuffer, glBlitNamedFramebuffer, BLITNAMEDFRAMEBUFFER, (AND GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter), (readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), &readFramebuffer, GL_void_return) #endif #endif #ifndef NO_GLBUFFERADDRESSRANGENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BufferAddressRangeNV, glBufferAddressRangeNV, BUFFERADDRESSRANGENV, (AND GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length), (pname, index, address, length), &pname, GL_void_return) GL_PROCM(void, gl, BufferAddressRangeNV, glBufferAddressRangeNV, BUFFERADDRESSRANGENV, (AND GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length), (pname, index, address, length), &pname, GL_void_return) #endif #endif #ifndef NO_GLBUFFERDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BufferData, glBufferData, BUFFERDATA, (AND GLenum target, GLsizeiptr size, const void *data, GLenum usage), (target, size, data, usage), &target, GL_void_return) GL_PROCM(void, gl, BufferData, glBufferData, BUFFERDATA, (AND GLenum target, GLsizeiptr size, memptr data, GLenum usage), (target, size, data, usage), &target, GL_void_return) #endif #endif #ifndef NO_GLBUFFERDATAARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BufferDataARB, glBufferDataARB, BUFFERDATAARB, (AND GLenum target, GLsizeiptrARB size, const void *data, GLenum usage), (target, size, data, usage), &target, GL_void_return) GL_PROCM(void, gl, BufferDataARB, glBufferDataARB, BUFFERDATAARB, (AND GLenum target, GLsizeiptrARB size, memptr data, GLenum usage), (target, size, data, usage), &target, GL_void_return) #endif #endif #ifndef NO_GLBUFFERPAGECOMMITMENTARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BufferPageCommitmentARB, glBufferPageCommitmentARB, BUFFERPAGECOMMITMENTARB, (AND GLenum target, GLintptr offset, GLsizeiptr size, GLboolean32 commit), (target, offset, size, commit), &target, GL_void_return) GL_PROCM(void, gl, BufferPageCommitmentARB, glBufferPageCommitmentARB, BUFFERPAGECOMMITMENTARB, (AND GLenum target, GLintptr offset, GLsizeiptr size, GLboolean32 commit), (target, offset, size, commit), &target, GL_void_return) #endif #endif #ifndef NO_GLBUFFERPARAMETERIAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BufferParameteriAPPLE, glBufferParameteriAPPLE, BUFFERPARAMETERIAPPLE, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) GL_PROCM(void, gl, BufferParameteriAPPLE, glBufferParameteriAPPLE, BUFFERPARAMETERIAPPLE, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) #endif #endif #ifndef NO_GLBUFFERSTORAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BufferStorage, glBufferStorage, BUFFERSTORAGE, (AND GLenum target, GLsizeiptr size, const void *data, GLbitfield flags), (target, size, data, flags), &target, GL_void_return) GL_PROCM(void, gl, BufferStorage, glBufferStorage, BUFFERSTORAGE, (AND GLenum target, GLsizeiptr size, memptr data, GLbitfield flags), (target, size, data, flags), &target, GL_void_return) #endif #endif #ifndef NO_GLBUFFERSTORAGEEXTERNALEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BufferStorageExternalEXT, glBufferStorageExternalEXT, BUFFERSTORAGEEXTERNALEXT, (AND GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags), (target, offset, size, clientBuffer, flags), &target, GL_void_return) GL_PROCM(void, gl, BufferStorageExternalEXT, glBufferStorageExternalEXT, BUFFERSTORAGEEXTERNALEXT, (AND GLenum target, GLintptr offset, GLsizeiptr size, memptr clientBuffer, GLbitfield flags), (target, offset, size, clientBuffer, flags), &target, GL_void_return) #endif #endif #ifndef NO_GLBUFFERSTORAGEMEMEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BufferStorageMemEXT, glBufferStorageMemEXT, BUFFERSTORAGEMEMEXT, (AND GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset), (target, size, memory, offset), &target, GL_void_return) GL_PROCM(void, gl, BufferStorageMemEXT, glBufferStorageMemEXT, BUFFERSTORAGEMEMEXT, (AND GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset), (target, size, memory, offset), &target, GL_void_return) #endif #endif #ifndef NO_GLBUFFERSUBDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BufferSubData, glBufferSubData, BUFFERSUBDATA, (AND GLenum target, GLintptr offset, GLsizeiptr size, const void *data), (target, offset, size, data), &target, GL_void_return) GL_PROCM(void, gl, BufferSubData, glBufferSubData, BUFFERSUBDATA, (AND GLenum target, GLintptr offset, GLsizeiptr size, memptr data), (target, offset, size, data), &target, GL_void_return) #endif #endif #ifndef NO_GLBUFFERSUBDATAARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, BufferSubDataARB, glBufferSubDataARB, BUFFERSUBDATAARB, (AND GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data), (target, offset, size, data), &target, GL_void_return) GL_PROCM(void, gl, BufferSubDataARB, glBufferSubDataARB, BUFFERSUBDATAARB, (AND GLenum target, GLintptrARB offset, GLsizeiptrARB size, memptr data), (target, offset, size, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCALLCOMMANDLISTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CallCommandListNV, glCallCommandListNV, CALLCOMMANDLISTNV, (AND GLuint list), (list), &list, GL_void_return) GL_PROCM(void, gl, CallCommandListNV, glCallCommandListNV, CALLCOMMANDLISTNV, (AND GLuint list), (list), &list, GL_void_return) #endif #endif #ifndef NO_GLCALLLIST GL_PROC(void, gl, CallList, glCallList, CALLLIST, (AND GLuint list), (list), &list, GL_void_return) GL_PROCM(void, gl, CallList, glCallList, CALLLIST, (AND GLuint list), (list), &list, GL_void_return) #endif #ifndef NO_GLCALLLISTS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CallLists, glCallLists, CALLLISTS, (AND GLsizei n, GLenum type, const GLvoid *lists), (n, type, lists), &n, GL_void_return) GL_PROCM(void, gl, CallLists, glCallLists, CALLLISTS, (AND GLsizei n, GLenum type, memptr lists), (n, type, lists), &n, GL_void_return) #endif #endif #ifndef NO_GLCHECKFRAMEBUFFERSTATUS #if !defined(TINYGL_ONLY) GL_PROC(GLenum, gl, CheckFramebufferStatus, glCheckFramebufferStatus, CHECKFRAMEBUFFERSTATUS, (AND GLenum target), (target), &target, return (GLenum)) GL_PROCM(GLenum, gl, CheckFramebufferStatus, glCheckFramebufferStatus, CHECKFRAMEBUFFERSTATUS, (AND GLenum target), (target), &target, return (GLenum)) #endif #endif #ifndef NO_GLCHECKFRAMEBUFFERSTATUSEXT #if !defined(TINYGL_ONLY) GL_PROC(GLenum, gl, CheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, CHECKFRAMEBUFFERSTATUSEXT, (AND GLenum target), (target), &target, return (GLenum)) GL_PROCM(GLenum, gl, CheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, CHECKFRAMEBUFFERSTATUSEXT, (AND GLenum target), (target), &target, return (GLenum)) #endif #endif #ifndef NO_GLCHECKNAMEDFRAMEBUFFERSTATUS #if !defined(TINYGL_ONLY) GL_PROC(GLenum, gl, CheckNamedFramebufferStatus, glCheckNamedFramebufferStatus, CHECKNAMEDFRAMEBUFFERSTATUS, (AND GLuint framebuffer, GLenum target), (framebuffer, target), &framebuffer, return (GLenum)) GL_PROCM(GLenum, gl, CheckNamedFramebufferStatus, glCheckNamedFramebufferStatus, CHECKNAMEDFRAMEBUFFERSTATUS, (AND GLuint framebuffer, GLenum target), (framebuffer, target), &framebuffer, return (GLenum)) #endif #endif #ifndef NO_GLCHECKNAMEDFRAMEBUFFERSTATUSEXT #if !defined(TINYGL_ONLY) GL_PROC(GLenum, gl, CheckNamedFramebufferStatusEXT, glCheckNamedFramebufferStatusEXT, CHECKNAMEDFRAMEBUFFERSTATUSEXT, (AND GLuint framebuffer, GLenum target), (framebuffer, target), &framebuffer, return (GLenum)) GL_PROCM(GLenum, gl, CheckNamedFramebufferStatusEXT, glCheckNamedFramebufferStatusEXT, CHECKNAMEDFRAMEBUFFERSTATUSEXT, (AND GLuint framebuffer, GLenum target), (framebuffer, target), &framebuffer, return (GLenum)) #endif #endif #ifndef NO_GLCLAMPCOLOR #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClampColor, glClampColor, CLAMPCOLOR, (AND GLenum target, GLenum clamp), (target, clamp), &target, GL_void_return) GL_PROCM(void, gl, ClampColor, glClampColor, CLAMPCOLOR, (AND GLenum target, GLenum clamp), (target, clamp), &target, GL_void_return) #endif #endif #ifndef NO_GLCLAMPCOLORARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClampColorARB, glClampColorARB, CLAMPCOLORARB, (AND GLenum target, GLenum clamp), (target, clamp), &target, GL_void_return) GL_PROCM(void, gl, ClampColorARB, glClampColorARB, CLAMPCOLORARB, (AND GLenum target, GLenum clamp), (target, clamp), &target, GL_void_return) #endif #endif #ifndef NO_GLCLEAR GL_PROC(void, gl, Clear, glClear, CLEAR, (AND GLbitfield mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, Clear, glClear, CLEAR, (AND GLbitfield mask), (mask), &mask, GL_void_return) #endif #ifndef NO_GLCLEARACCUM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearAccum, glClearAccum, CLEARACCUM, (AND GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, ClearAccum, glClearAccum, CLEARACCUM, (AND GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCLEARACCUMXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearAccumxOES, glClearAccumxOES, CLEARACCUMXOES, (AND GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, ClearAccumxOES, glClearAccumxOES, CLEARACCUMXOES, (AND GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCLEARBUFFERDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearBufferData, glClearBufferData, CLEARBUFFERDATA, (AND GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data), (target, internalformat, format, type, data), &target, GL_void_return) GL_PROCM(void, gl, ClearBufferData, glClearBufferData, CLEARBUFFERDATA, (AND GLenum target, GLenum internalformat, GLenum format, GLenum type, memptr data), (target, internalformat, format, type, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCLEARBUFFERSUBDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearBufferSubData, glClearBufferSubData, CLEARBUFFERSUBDATA, (AND GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data), (target, internalformat, offset, size, format, type, data), &target, GL_void_return) GL_PROCM(void, gl, ClearBufferSubData, glClearBufferSubData, CLEARBUFFERSUBDATA, (AND GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, memptr data), (target, internalformat, offset, size, format, type, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCLEARBUFFERFI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearBufferfi, glClearBufferfi, CLEARBUFFERFI, (AND GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil), (buffer, drawbuffer, depth, stencil), &buffer, GL_void_return) GL_PROCM(void, gl, ClearBufferfi, glClearBufferfi, CLEARBUFFERFI, (AND GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil), (buffer, drawbuffer, depth, stencil), &buffer, GL_void_return) #endif #endif #ifndef NO_GLCLEARBUFFERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearBufferfv, glClearBufferfv, CLEARBUFFERFV, (AND GLenum buffer, GLint drawbuffer, const GLfloat *value), (buffer, drawbuffer, value), &buffer, GL_void_return) GL_PROCM(void, gl, ClearBufferfv, glClearBufferfv, CLEARBUFFERFV, (AND GLenum buffer, GLint drawbuffer, memptr value), (buffer, drawbuffer, value), &buffer, GL_void_return) #endif #endif #ifndef NO_GLCLEARBUFFERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearBufferiv, glClearBufferiv, CLEARBUFFERIV, (AND GLenum buffer, GLint drawbuffer, const GLint *value), (buffer, drawbuffer, value), &buffer, GL_void_return) GL_PROCM(void, gl, ClearBufferiv, glClearBufferiv, CLEARBUFFERIV, (AND GLenum buffer, GLint drawbuffer, memptr value), (buffer, drawbuffer, value), &buffer, GL_void_return) #endif #endif #ifndef NO_GLCLEARBUFFERUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearBufferuiv, glClearBufferuiv, CLEARBUFFERUIV, (AND GLenum buffer, GLint drawbuffer, const GLuint *value), (buffer, drawbuffer, value), &buffer, GL_void_return) GL_PROCM(void, gl, ClearBufferuiv, glClearBufferuiv, CLEARBUFFERUIV, (AND GLenum buffer, GLint drawbuffer, memptr value), (buffer, drawbuffer, value), &buffer, GL_void_return) #endif #endif #ifndef NO_GLCLEARCOLOR GL_PROC(void, gl, ClearColor, glClearColor, CLEARCOLOR, (AND GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, ClearColor, glClearColor, CLEARCOLOR, (AND GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #ifndef NO_GLCLEARCOLORIIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearColorIiEXT, glClearColorIiEXT, CLEARCOLORIIEXT, (AND GLint red, GLint green, GLint blue, GLint alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, ClearColorIiEXT, glClearColorIiEXT, CLEARCOLORIIEXT, (AND GLint red, GLint green, GLint blue, GLint alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCLEARCOLORIUIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearColorIuiEXT, glClearColorIuiEXT, CLEARCOLORIUIEXT, (AND GLuint red, GLuint green, GLuint blue, GLuint alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, ClearColorIuiEXT, glClearColorIuiEXT, CLEARCOLORIUIEXT, (AND GLuint red, GLuint green, GLuint blue, GLuint alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCLEARCOLORXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearColorxOES, glClearColorxOES, CLEARCOLORXOES, (AND GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, ClearColorxOES, glClearColorxOES, CLEARCOLORXOES, (AND GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCLEARDEBUGLOGMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearDebugLogMESA, glClearDebugLogMESA, CLEARDEBUGLOGMESA, (AND GLhandleARB obj, GLenum logType, GLenum shaderType), (obj, logType, shaderType), &obj, GL_void_return) GL_PROCM(void, gl, ClearDebugLogMESA, glClearDebugLogMESA, CLEARDEBUGLOGMESA, (AND GLhandleARB obj, GLenum logType, GLenum shaderType), (obj, logType, shaderType), &obj, GL_void_return) #endif #endif #ifndef NO_GLCLEARDEPTH #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearDepth, glClearDepthd, CLEARDEPTH, (AND GLclampd depth), (depth), &depth, GL_void_return) GL_PROCM(void, gl, ClearDepth, glClearDepthd, CLEARDEPTH, (AND GLclampd depth), (depth), &depth, GL_void_return) #endif #endif #ifndef NO_GLCLEARDEPTHDNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearDepthdNV, glClearDepthdNV, CLEARDEPTHDNV, (AND GLdouble depth), (depth), &depth, GL_void_return) GL_PROCM(void, gl, ClearDepthdNV, glClearDepthdNV, CLEARDEPTHDNV, (AND GLdouble depth), (depth), &depth, GL_void_return) #endif #endif #ifndef NO_GLCLEARDEPTHF GL_PROC(void, gl, ClearDepthf, glClearDepthf, CLEARDEPTHF, (AND GLfloat d), (d), &d, GL_void_return) GL_PROCM(void, gl, ClearDepthf, glClearDepthf, CLEARDEPTHF, (AND GLfloat d), (d), &d, GL_void_return) #endif #ifndef NO_GLCLEARDEPTHFOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearDepthfOES, glClearDepthfOES, CLEARDEPTHFOES, (AND GLclampf depth), (depth), &depth, GL_void_return) GL_PROCM(void, gl, ClearDepthfOES, glClearDepthfOES, CLEARDEPTHFOES, (AND GLclampf depth), (depth), &depth, GL_void_return) #endif #endif #ifndef NO_GLCLEARDEPTHXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearDepthxOES, glClearDepthxOES, CLEARDEPTHXOES, (AND GLfixed depth), (depth), &depth, GL_void_return) GL_PROCM(void, gl, ClearDepthxOES, glClearDepthxOES, CLEARDEPTHXOES, (AND GLfixed depth), (depth), &depth, GL_void_return) #endif #endif #ifndef NO_GLCLEARINDEX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearIndex, glClearIndex, CLEARINDEX, (AND GLfloat c), (c), &c, GL_void_return) GL_PROCM(void, gl, ClearIndex, glClearIndex, CLEARINDEX, (AND GLfloat c), (c), &c, GL_void_return) #endif #endif #ifndef NO_GLCLEARNAMEDBUFFERDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearNamedBufferData, glClearNamedBufferData, CLEARNAMEDBUFFERDATA, (AND GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data), (buffer, internalformat, format, type, data), &buffer, GL_void_return) GL_PROCM(void, gl, ClearNamedBufferData, glClearNamedBufferData, CLEARNAMEDBUFFERDATA, (AND GLuint buffer, GLenum internalformat, GLenum format, GLenum type, memptr data), (buffer, internalformat, format, type, data), &buffer, GL_void_return) #endif #endif #ifndef NO_GLCLEARNAMEDBUFFERDATAEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearNamedBufferDataEXT, glClearNamedBufferDataEXT, CLEARNAMEDBUFFERDATAEXT, (AND GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data), (buffer, internalformat, format, type, data), &buffer, GL_void_return) GL_PROCM(void, gl, ClearNamedBufferDataEXT, glClearNamedBufferDataEXT, CLEARNAMEDBUFFERDATAEXT, (AND GLuint buffer, GLenum internalformat, GLenum format, GLenum type, memptr data), (buffer, internalformat, format, type, data), &buffer, GL_void_return) #endif #endif #ifndef NO_GLCLEARNAMEDBUFFERSUBDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearNamedBufferSubData, glClearNamedBufferSubData, CLEARNAMEDBUFFERSUBDATA, (AND GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data), (buffer, internalformat, offset, size, format, type, data), &buffer, GL_void_return) GL_PROCM(void, gl, ClearNamedBufferSubData, glClearNamedBufferSubData, CLEARNAMEDBUFFERSUBDATA, (AND GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, memptr data), (buffer, internalformat, offset, size, format, type, data), &buffer, GL_void_return) #endif #endif #ifndef NO_GLCLEARNAMEDBUFFERSUBDATAEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearNamedBufferSubDataEXT, glClearNamedBufferSubDataEXT, CLEARNAMEDBUFFERSUBDATAEXT, (AND GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data), (buffer, internalformat, offset, size, format, type, data), &buffer, GL_void_return) GL_PROCM(void, gl, ClearNamedBufferSubDataEXT, glClearNamedBufferSubDataEXT, CLEARNAMEDBUFFERSUBDATAEXT, (AND GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, memptr data), (buffer, internalformat, offset, size, format, type, data), &buffer, GL_void_return) #endif #endif #ifndef NO_GLCLEARNAMEDFRAMEBUFFERFI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearNamedFramebufferfi, glClearNamedFramebufferfi, CLEARNAMEDFRAMEBUFFERFI, (AND GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil), (framebuffer, buffer, drawbuffer, depth, stencil), &framebuffer, GL_void_return) GL_PROCM(void, gl, ClearNamedFramebufferfi, glClearNamedFramebufferfi, CLEARNAMEDFRAMEBUFFERFI, (AND GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil), (framebuffer, buffer, drawbuffer, depth, stencil), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLCLEARNAMEDFRAMEBUFFERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearNamedFramebufferfv, glClearNamedFramebufferfv, CLEARNAMEDFRAMEBUFFERFV, (AND GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value), (framebuffer, buffer, drawbuffer, value), &framebuffer, GL_void_return) GL_PROCM(void, gl, ClearNamedFramebufferfv, glClearNamedFramebufferfv, CLEARNAMEDFRAMEBUFFERFV, (AND GLuint framebuffer, GLenum buffer, GLint drawbuffer, memptr value), (framebuffer, buffer, drawbuffer, value), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLCLEARNAMEDFRAMEBUFFERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearNamedFramebufferiv, glClearNamedFramebufferiv, CLEARNAMEDFRAMEBUFFERIV, (AND GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value), (framebuffer, buffer, drawbuffer, value), &framebuffer, GL_void_return) GL_PROCM(void, gl, ClearNamedFramebufferiv, glClearNamedFramebufferiv, CLEARNAMEDFRAMEBUFFERIV, (AND GLuint framebuffer, GLenum buffer, GLint drawbuffer, memptr value), (framebuffer, buffer, drawbuffer, value), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLCLEARNAMEDFRAMEBUFFERUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearNamedFramebufferuiv, glClearNamedFramebufferuiv, CLEARNAMEDFRAMEBUFFERUIV, (AND GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value), (framebuffer, buffer, drawbuffer, value), &framebuffer, GL_void_return) GL_PROCM(void, gl, ClearNamedFramebufferuiv, glClearNamedFramebufferuiv, CLEARNAMEDFRAMEBUFFERUIV, (AND GLuint framebuffer, GLenum buffer, GLint drawbuffer, memptr value), (framebuffer, buffer, drawbuffer, value), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLCLEARSTENCIL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearStencil, glClearStencil, CLEARSTENCIL, (AND GLint s), (s), &s, GL_void_return) GL_PROCM(void, gl, ClearStencil, glClearStencil, CLEARSTENCIL, (AND GLint s), (s), &s, GL_void_return) #endif #endif #ifndef NO_GLCLEARTEXIMAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearTexImage, glClearTexImage, CLEARTEXIMAGE, (AND GLuint texture, GLint level, GLenum format, GLenum type, const void *data), (texture, level, format, type, data), &texture, GL_void_return) GL_PROCM(void, gl, ClearTexImage, glClearTexImage, CLEARTEXIMAGE, (AND GLuint texture, GLint level, GLenum format, GLenum type, memptr data), (texture, level, format, type, data), &texture, GL_void_return) #endif #endif #ifndef NO_GLCLEARTEXSUBIMAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClearTexSubImage, glClearTexSubImage, CLEARTEXSUBIMAGE, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data), (texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data), &texture, GL_void_return) GL_PROCM(void, gl, ClearTexSubImage, glClearTexSubImage, CLEARTEXSUBIMAGE, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, memptr data), (texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data), &texture, GL_void_return) #endif #endif #ifndef NO_GLCLIENTACTIVETEXTURE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClientActiveTexture, glClientActiveTexture, CLIENTACTIVETEXTURE, (AND GLenum texture), (texture), &texture, GL_void_return) GL_PROCM(void, gl, ClientActiveTexture, glClientActiveTexture, CLIENTACTIVETEXTURE, (AND GLenum texture), (texture), &texture, GL_void_return) #endif #endif #ifndef NO_GLCLIENTACTIVETEXTUREARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClientActiveTextureARB, glClientActiveTextureARB, CLIENTACTIVETEXTUREARB, (AND GLenum texture), (texture), &texture, GL_void_return) GL_PROCM(void, gl, ClientActiveTextureARB, glClientActiveTextureARB, CLIENTACTIVETEXTUREARB, (AND GLenum texture), (texture), &texture, GL_void_return) #endif #endif #ifndef NO_GLCLIENTACTIVEVERTEXSTREAMATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClientActiveVertexStreamATI, glClientActiveVertexStreamATI, CLIENTACTIVEVERTEXSTREAMATI, (AND GLenum stream), (stream), &stream, GL_void_return) GL_PROCM(void, gl, ClientActiveVertexStreamATI, glClientActiveVertexStreamATI, CLIENTACTIVEVERTEXSTREAMATI, (AND GLenum stream), (stream), &stream, GL_void_return) #endif #endif #ifndef NO_GLCLIENTATTRIBDEFAULTEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClientAttribDefaultEXT, glClientAttribDefaultEXT, CLIENTATTRIBDEFAULTEXT, (AND GLbitfield mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, ClientAttribDefaultEXT, glClientAttribDefaultEXT, CLIENTATTRIBDEFAULTEXT, (AND GLbitfield mask), (mask), &mask, GL_void_return) #endif #endif #ifndef NO_GLCLIENTWAITSYNC #if !defined(TINYGL_ONLY) GL_PROC(GLenum, gl, ClientWaitSync, glClientWaitSync, CLIENTWAITSYNC, (AND GLsync sync, GLbitfield flags, GLuint64 timeout), (sync, flags, timeout), &sync, return (GLenum)) GL_PROCM(GLenum, gl, ClientWaitSync, glClientWaitSync, CLIENTWAITSYNC, (AND GLsync sync, GLbitfield flags, GLuint64 timeout), (sync, flags, timeout), &sync, return (GLenum)) #endif #endif #ifndef NO_GLCLIPCONTROL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClipControl, glClipControl, CLIPCONTROL, (AND GLenum origin, GLenum depth), (origin, depth), &origin, GL_void_return) GL_PROCM(void, gl, ClipControl, glClipControl, CLIPCONTROL, (AND GLenum origin, GLenum depth), (origin, depth), &origin, GL_void_return) #endif #endif #ifndef NO_GLCLIPPLANE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClipPlane, glClipPlane, CLIPPLANE, (AND GLenum plane, const GLdouble *equation), (plane, equation), &plane, GL_void_return) GL_PROCM(void, gl, ClipPlane, glClipPlane, CLIPPLANE, (AND GLenum plane, memptr equation), (plane, equation), &plane, GL_void_return) #endif #endif #ifndef NO_GLCLIPPLANEFOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClipPlanefOES, glClipPlanefOES, CLIPPLANEFOES, (AND GLenum plane, const GLfloat *equation), (plane, equation), &plane, GL_void_return) GL_PROCM(void, gl, ClipPlanefOES, glClipPlanefOES, CLIPPLANEFOES, (AND GLenum plane, memptr equation), (plane, equation), &plane, GL_void_return) #endif #endif #ifndef NO_GLCLIPPLANEXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ClipPlanexOES, glClipPlanexOES, CLIPPLANEXOES, (AND GLenum plane, const GLfixed *equation), (plane, equation), &plane, GL_void_return) GL_PROCM(void, gl, ClipPlanexOES, glClipPlanexOES, CLIPPLANEXOES, (AND GLenum plane, memptr equation), (plane, equation), &plane, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3B #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3b, glColor3b, COLOR3B, (AND GLbyte32 red, GLbyte32 green, GLbyte32 blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, Color3b, glColor3b, COLOR3B, (AND GLbyte32 red, GLbyte32 green, GLbyte32 blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3BV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3bv, glColor3bv, COLOR3BV, (AND const GLbyte *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color3bv, glColor3bv, COLOR3BV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3d, glColor3d, COLOR3D, (AND GLdouble red, GLdouble green, GLdouble blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, Color3d, glColor3d, COLOR3D, (AND GLdouble red, GLdouble green, GLdouble blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3dv, glColor3dv, COLOR3DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color3dv, glColor3dv, COLOR3DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3F GL_PROC(void, gl, Color3f, glColor3f, COLOR3F, (AND GLfloat red, GLfloat green, GLfloat blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, Color3f, glColor3f, COLOR3F, (AND GLfloat red, GLfloat green, GLfloat blue), (red, green, blue), &red, GL_void_return) #endif #ifndef NO_GLCOLOR3FVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3fVertex3fSUN, glColor3fVertex3fSUN, COLOR3FVERTEX3FSUN, (AND GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z), (r, g, b, x, y, z), &r, GL_void_return) GL_PROCM(void, gl, Color3fVertex3fSUN, glColor3fVertex3fSUN, COLOR3FVERTEX3FSUN, (AND GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z), (r, g, b, x, y, z), &r, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3FVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3fVertex3fvSUN, glColor3fVertex3fvSUN, COLOR3FVERTEX3FVSUN, (AND const GLfloat *c, const GLfloat *v), (c, v), &c, GL_void_return) GL_PROCM(void, gl, Color3fVertex3fvSUN, glColor3fVertex3fvSUN, COLOR3FVERTEX3FVSUN, (AND memptr c, memptr v), (c, v), &c, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3FV GL_PROC(void, gl, Color3fv, glColor3fv, COLOR3FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color3fv, glColor3fv, COLOR3FV, (AND memptr v), (v), &v, GL_void_return) #endif #ifndef NO_GLCOLOR3HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3hNV, glColor3hNV, COLOR3HNV, (AND GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, Color3hNV, glColor3hNV, COLOR3HNV, (AND GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3hvNV, glColor3hvNV, COLOR3HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color3hvNV, glColor3hvNV, COLOR3HVNV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3i, glColor3i, COLOR3I, (AND GLint red, GLint green, GLint blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, Color3i, glColor3i, COLOR3I, (AND GLint red, GLint green, GLint blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3iv, glColor3iv, COLOR3IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color3iv, glColor3iv, COLOR3IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3s, glColor3s, COLOR3S, (AND GLshort32 red, GLshort32 green, GLshort32 blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, Color3s, glColor3s, COLOR3S, (AND GLshort32 red, GLshort32 green, GLshort32 blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3sv, glColor3sv, COLOR3SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color3sv, glColor3sv, COLOR3SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3UB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3ub, glColor3ub, COLOR3UB, (AND GLubyte32 red, GLubyte32 green, GLubyte32 blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, Color3ub, glColor3ub, COLOR3UB, (AND GLubyte32 red, GLubyte32 green, GLubyte32 blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3UBV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3ubv, glColor3ubv, COLOR3UBV, (AND const GLubyte *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color3ubv, glColor3ubv, COLOR3UBV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3ui, glColor3ui, COLOR3UI, (AND GLuint red, GLuint green, GLuint blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, Color3ui, glColor3ui, COLOR3UI, (AND GLuint red, GLuint green, GLuint blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3uiv, glColor3uiv, COLOR3UIV, (AND const GLuint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color3uiv, glColor3uiv, COLOR3UIV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3US #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3us, glColor3us, COLOR3US, (AND GLushort32 red, GLushort32 green, GLushort32 blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, Color3us, glColor3us, COLOR3US, (AND GLushort32 red, GLushort32 green, GLushort32 blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3USV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3usv, glColor3usv, COLOR3USV, (AND const GLushort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color3usv, glColor3usv, COLOR3USV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3xOES, glColor3xOES, COLOR3XOES, (AND GLfixed red, GLfixed green, GLfixed blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, Color3xOES, glColor3xOES, COLOR3XOES, (AND GLfixed red, GLfixed green, GLfixed blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR3XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color3xvOES, glColor3xvOES, COLOR3XVOES, (AND const GLfixed *components), (components), &components, GL_void_return) GL_PROCM(void, gl, Color3xvOES, glColor3xvOES, COLOR3XVOES, (AND memptr components), (components), &components, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4B #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4b, glColor4b, COLOR4B, (AND GLbyte32 red, GLbyte32 green, GLbyte32 blue, GLbyte32 alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, Color4b, glColor4b, COLOR4B, (AND GLbyte32 red, GLbyte32 green, GLbyte32 blue, GLbyte32 alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4BV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4bv, glColor4bv, COLOR4BV, (AND const GLbyte *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color4bv, glColor4bv, COLOR4BV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4d, glColor4d, COLOR4D, (AND GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, Color4d, glColor4d, COLOR4D, (AND GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4dv, glColor4dv, COLOR4DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color4dv, glColor4dv, COLOR4DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4F GL_PROC(void, gl, Color4f, glColor4f, COLOR4F, (AND GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, Color4f, glColor4f, COLOR4F, (AND GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #ifndef NO_GLCOLOR4FNORMAL3FVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4fNormal3fVertex3fSUN, glColor4fNormal3fVertex3fSUN, COLOR4FNORMAL3FVERTEX3FSUN, (AND GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (r, g, b, a, nx, ny, nz, x, y, z), &r, GL_void_return) GL_PROCM(void, gl, Color4fNormal3fVertex3fSUN, glColor4fNormal3fVertex3fSUN, COLOR4FNORMAL3FVERTEX3FSUN, (AND GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (r, g, b, a, nx, ny, nz, x, y, z), &r, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4FNORMAL3FVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4fNormal3fVertex3fvSUN, glColor4fNormal3fVertex3fvSUN, COLOR4FNORMAL3FVERTEX3FVSUN, (AND const GLfloat *c, const GLfloat *n, const GLfloat *v), (c, n, v), &c, GL_void_return) GL_PROCM(void, gl, Color4fNormal3fVertex3fvSUN, glColor4fNormal3fVertex3fvSUN, COLOR4FNORMAL3FVERTEX3FVSUN, (AND memptr c, memptr n, memptr v), (c, n, v), &c, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4FV GL_PROC(void, gl, Color4fv, glColor4fv, COLOR4FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color4fv, glColor4fv, COLOR4FV, (AND memptr v), (v), &v, GL_void_return) #endif #ifndef NO_GLCOLOR4HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4hNV, glColor4hNV, COLOR4HNV, (AND GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue, GLhalfNV32 alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, Color4hNV, glColor4hNV, COLOR4HNV, (AND GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue, GLhalfNV32 alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4hvNV, glColor4hvNV, COLOR4HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color4hvNV, glColor4hvNV, COLOR4HVNV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4i, glColor4i, COLOR4I, (AND GLint red, GLint green, GLint blue, GLint alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, Color4i, glColor4i, COLOR4I, (AND GLint red, GLint green, GLint blue, GLint alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4iv, glColor4iv, COLOR4IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color4iv, glColor4iv, COLOR4IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4s, glColor4s, COLOR4S, (AND GLshort32 red, GLshort32 green, GLshort32 blue, GLshort32 alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, Color4s, glColor4s, COLOR4S, (AND GLshort32 red, GLshort32 green, GLshort32 blue, GLshort32 alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4sv, glColor4sv, COLOR4SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color4sv, glColor4sv, COLOR4SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4UB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4ub, glColor4ub, COLOR4UB, (AND GLubyte32 red, GLubyte32 green, GLubyte32 blue, GLubyte32 alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, Color4ub, glColor4ub, COLOR4UB, (AND GLubyte32 red, GLubyte32 green, GLubyte32 blue, GLubyte32 alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4UBVERTEX2FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4ubVertex2fSUN, glColor4ubVertex2fSUN, COLOR4UBVERTEX2FSUN, (AND GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y), (r, g, b, a, x, y), &r, GL_void_return) GL_PROCM(void, gl, Color4ubVertex2fSUN, glColor4ubVertex2fSUN, COLOR4UBVERTEX2FSUN, (AND GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y), (r, g, b, a, x, y), &r, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4UBVERTEX2FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4ubVertex2fvSUN, glColor4ubVertex2fvSUN, COLOR4UBVERTEX2FVSUN, (AND const GLubyte *c, const GLfloat *v), (c, v), &c, GL_void_return) GL_PROCM(void, gl, Color4ubVertex2fvSUN, glColor4ubVertex2fvSUN, COLOR4UBVERTEX2FVSUN, (AND memptr c, memptr v), (c, v), &c, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4UBVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4ubVertex3fSUN, glColor4ubVertex3fSUN, COLOR4UBVERTEX3FSUN, (AND GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z), (r, g, b, a, x, y, z), &r, GL_void_return) GL_PROCM(void, gl, Color4ubVertex3fSUN, glColor4ubVertex3fSUN, COLOR4UBVERTEX3FSUN, (AND GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z), (r, g, b, a, x, y, z), &r, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4UBVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4ubVertex3fvSUN, glColor4ubVertex3fvSUN, COLOR4UBVERTEX3FVSUN, (AND const GLubyte *c, const GLfloat *v), (c, v), &c, GL_void_return) GL_PROCM(void, gl, Color4ubVertex3fvSUN, glColor4ubVertex3fvSUN, COLOR4UBVERTEX3FVSUN, (AND memptr c, memptr v), (c, v), &c, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4UBV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4ubv, glColor4ubv, COLOR4UBV, (AND const GLubyte *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color4ubv, glColor4ubv, COLOR4UBV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4ui, glColor4ui, COLOR4UI, (AND GLuint red, GLuint green, GLuint blue, GLuint alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, Color4ui, glColor4ui, COLOR4UI, (AND GLuint red, GLuint green, GLuint blue, GLuint alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4uiv, glColor4uiv, COLOR4UIV, (AND const GLuint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color4uiv, glColor4uiv, COLOR4UIV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4US #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4us, glColor4us, COLOR4US, (AND GLushort32 red, GLushort32 green, GLushort32 blue, GLushort32 alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, Color4us, glColor4us, COLOR4US, (AND GLushort32 red, GLushort32 green, GLushort32 blue, GLushort32 alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4USV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4usv, glColor4usv, COLOR4USV, (AND const GLushort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Color4usv, glColor4usv, COLOR4USV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4xOES, glColor4xOES, COLOR4XOES, (AND GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, Color4xOES, glColor4xOES, COLOR4XOES, (AND GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLOR4XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Color4xvOES, glColor4xvOES, COLOR4XVOES, (AND const GLfixed *components), (components), &components, GL_void_return) GL_PROCM(void, gl, Color4xvOES, glColor4xvOES, COLOR4XVOES, (AND memptr components), (components), &components, GL_void_return) #endif #endif #ifndef NO_GLCOLORFORMATNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorFormatNV, glColorFormatNV, COLORFORMATNV, (AND GLint size, GLenum type, GLsizei stride), (size, type, stride), &size, GL_void_return) GL_PROCM(void, gl, ColorFormatNV, glColorFormatNV, COLORFORMATNV, (AND GLint size, GLenum type, GLsizei stride), (size, type, stride), &size, GL_void_return) #endif #endif #ifndef NO_GLCOLORFRAGMENTOP1ATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorFragmentOp1ATI, glColorFragmentOp1ATI, COLORFRAGMENTOP1ATI, (AND GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod), (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod), &op, GL_void_return) GL_PROCM(void, gl, ColorFragmentOp1ATI, glColorFragmentOp1ATI, COLORFRAGMENTOP1ATI, (AND GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod), (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod), &op, GL_void_return) #endif #endif #ifndef NO_GLCOLORFRAGMENTOP2ATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorFragmentOp2ATI, glColorFragmentOp2ATI, COLORFRAGMENTOP2ATI, (AND GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod), (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), &op, GL_void_return) GL_PROCM(void, gl, ColorFragmentOp2ATI, glColorFragmentOp2ATI, COLORFRAGMENTOP2ATI, (AND GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod), (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), &op, GL_void_return) #endif #endif #ifndef NO_GLCOLORFRAGMENTOP3ATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorFragmentOp3ATI, glColorFragmentOp3ATI, COLORFRAGMENTOP3ATI, (AND 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), (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), &op, GL_void_return) GL_PROCM(void, gl, ColorFragmentOp3ATI, glColorFragmentOp3ATI, COLORFRAGMENTOP3ATI, (AND 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), (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), &op, GL_void_return) #endif #endif #ifndef NO_GLCOLORMASK #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorMask, glColorMask, COLORMASK, (AND GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, ColorMask, glColorMask, COLORMASK, (AND GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLCOLORMASKINDEXEDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorMaskIndexedEXT, glColorMaskIndexedEXT, COLORMASKINDEXEDEXT, (AND GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a), (index, r, g, b, a), &index, GL_void_return) GL_PROCM(void, gl, ColorMaskIndexedEXT, glColorMaskIndexedEXT, COLORMASKINDEXEDEXT, (AND GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a), (index, r, g, b, a), &index, GL_void_return) #endif #endif #ifndef NO_GLCOLORMASKI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorMaski, glColorMaski, COLORMASKI, (AND GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a), (index, r, g, b, a), &index, GL_void_return) GL_PROCM(void, gl, ColorMaski, glColorMaski, COLORMASKI, (AND GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a), (index, r, g, b, a), &index, GL_void_return) #endif #endif #ifndef NO_GLCOLORMATERIAL GL_PROC(void, gl, ColorMaterial, glColorMaterial, COLORMATERIAL, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) GL_PROCM(void, gl, ColorMaterial, glColorMaterial, COLORMATERIAL, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) #endif #ifndef NO_GLCOLORP3UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorP3ui, glColorP3ui, COLORP3UI, (AND GLenum type, GLuint color), (type, color), &type, GL_void_return) GL_PROCM(void, gl, ColorP3ui, glColorP3ui, COLORP3UI, (AND GLenum type, GLuint color), (type, color), &type, GL_void_return) #endif #endif #ifndef NO_GLCOLORP3UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorP3uiv, glColorP3uiv, COLORP3UIV, (AND GLenum type, const GLuint *color), (type, color), &type, GL_void_return) GL_PROCM(void, gl, ColorP3uiv, glColorP3uiv, COLORP3UIV, (AND GLenum type, memptr color), (type, color), &type, GL_void_return) #endif #endif #ifndef NO_GLCOLORP4UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorP4ui, glColorP4ui, COLORP4UI, (AND GLenum type, GLuint color), (type, color), &type, GL_void_return) GL_PROCM(void, gl, ColorP4ui, glColorP4ui, COLORP4UI, (AND GLenum type, GLuint color), (type, color), &type, GL_void_return) #endif #endif #ifndef NO_GLCOLORP4UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorP4uiv, glColorP4uiv, COLORP4UIV, (AND GLenum type, const GLuint *color), (type, color), &type, GL_void_return) GL_PROCM(void, gl, ColorP4uiv, glColorP4uiv, COLORP4UIV, (AND GLenum type, memptr color), (type, color), &type, GL_void_return) #endif #endif #ifndef NO_GLCOLORPOINTER GL_PROC(void, gl, ColorPointer, glColorPointer, COLORPOINTER, (AND GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size, type, stride, pointer), &size, GL_void_return) GL_PROCM(void, gl, ColorPointer, glColorPointer, COLORPOINTER, (AND GLint size, GLenum type, GLsizei stride, memptr pointer), (size, type, stride, pointer), &size, GL_void_return) #endif #ifndef NO_GLCOLORPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorPointerEXT, glColorPointerEXT, COLORPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer), (size, type, stride, count, pointer), &size, GL_void_return) GL_PROCM(void, gl, ColorPointerEXT, glColorPointerEXT, COLORPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, GLsizei count, memptr pointer), (size, type, stride, count, pointer), &size, GL_void_return) #endif #endif #ifndef NO_GLCOLORPOINTERLISTIBM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorPointerListIBM, glColorPointerListIBM, COLORPOINTERLISTIBM, (AND GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride), (size, type, stride, pointer, ptrstride), &size, GL_void_return) GL_PROCM(void, gl, ColorPointerListIBM, glColorPointerListIBM, COLORPOINTERLISTIBM, (AND GLint size, GLenum type, GLint stride, memptr pointer, GLint ptrstride), (size, type, stride, pointer, ptrstride), &size, GL_void_return) #endif #endif #ifndef NO_GLCOLORPOINTERVINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorPointervINTEL, glColorPointervINTEL, COLORPOINTERVINTEL, (AND GLint size, GLenum type, const void * *pointer), (size, type, pointer), &size, GL_void_return) GL_PROCM(void, gl, ColorPointervINTEL, glColorPointervINTEL, COLORPOINTERVINTEL, (AND GLint size, GLenum type, memptr pointer), (size, type, pointer), &size, GL_void_return) #endif #endif #ifndef NO_GLCOLORSUBTABLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorSubTable, glColorSubTable, COLORSUBTABLE, (AND GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data), (target, start, count, format, type, data), &target, GL_void_return) GL_PROCM(void, gl, ColorSubTable, glColorSubTable, COLORSUBTABLE, (AND GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, memptr data), (target, start, count, format, type, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCOLORSUBTABLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorSubTableEXT, glColorSubTableEXT, COLORSUBTABLEEXT, (AND GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data), (target, start, count, format, type, data), &target, GL_void_return) GL_PROCM(void, gl, ColorSubTableEXT, glColorSubTableEXT, COLORSUBTABLEEXT, (AND GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, memptr data), (target, start, count, format, type, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCOLORTABLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorTable, glColorTable, COLORTABLE, (AND GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table), (target, internalformat, width, format, type, table), &target, GL_void_return) GL_PROCM(void, gl, ColorTable, glColorTable, COLORTABLE, (AND GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, memptr table), (target, internalformat, width, format, type, table), &target, GL_void_return) #endif #endif #ifndef NO_GLCOLORTABLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorTableEXT, glColorTableEXT, COLORTABLEEXT, (AND GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table), (target, internalFormat, width, format, type, table), &target, GL_void_return) GL_PROCM(void, gl, ColorTableEXT, glColorTableEXT, COLORTABLEEXT, (AND GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, memptr table), (target, internalFormat, width, format, type, table), &target, GL_void_return) #endif #endif #ifndef NO_GLCOLORTABLEPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorTableParameterfv, glColorTableParameterfv, COLORTABLEPARAMETERFV, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ColorTableParameterfv, glColorTableParameterfv, COLORTABLEPARAMETERFV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLCOLORTABLEPARAMETERFVSGI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorTableParameterfvSGI, glColorTableParameterfvSGI, COLORTABLEPARAMETERFVSGI, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ColorTableParameterfvSGI, glColorTableParameterfvSGI, COLORTABLEPARAMETERFVSGI, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLCOLORTABLEPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorTableParameteriv, glColorTableParameteriv, COLORTABLEPARAMETERIV, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ColorTableParameteriv, glColorTableParameteriv, COLORTABLEPARAMETERIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLCOLORTABLEPARAMETERIVSGI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorTableParameterivSGI, glColorTableParameterivSGI, COLORTABLEPARAMETERIVSGI, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ColorTableParameterivSGI, glColorTableParameterivSGI, COLORTABLEPARAMETERIVSGI, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLCOLORTABLESGI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ColorTableSGI, glColorTableSGI, COLORTABLESGI, (AND GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table), (target, internalformat, width, format, type, table), &target, GL_void_return) GL_PROCM(void, gl, ColorTableSGI, glColorTableSGI, COLORTABLESGI, (AND GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, memptr table), (target, internalformat, width, format, type, table), &target, GL_void_return) #endif #endif #ifndef NO_GLCOMBINERINPUTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CombinerInputNV, glCombinerInputNV, COMBINERINPUTNV, (AND GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage), (stage, portion, variable, input, mapping, componentUsage), &stage, GL_void_return) GL_PROCM(void, gl, CombinerInputNV, glCombinerInputNV, COMBINERINPUTNV, (AND GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage), (stage, portion, variable, input, mapping, componentUsage), &stage, GL_void_return) #endif #endif #ifndef NO_GLCOMBINEROUTPUTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CombinerOutputNV, glCombinerOutputNV, COMBINEROUTPUTNV, (AND GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean32 abDotProduct, GLboolean32 cdDotProduct, GLboolean32 muxSum), (stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum), &stage, GL_void_return) GL_PROCM(void, gl, CombinerOutputNV, glCombinerOutputNV, COMBINEROUTPUTNV, (AND GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean32 abDotProduct, GLboolean32 cdDotProduct, GLboolean32 muxSum), (stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum), &stage, GL_void_return) #endif #endif #ifndef NO_GLCOMBINERPARAMETERFNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CombinerParameterfNV, glCombinerParameterfNV, COMBINERPARAMETERFNV, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, CombinerParameterfNV, glCombinerParameterfNV, COMBINERPARAMETERFNV, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLCOMBINERPARAMETERFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CombinerParameterfvNV, glCombinerParameterfvNV, COMBINERPARAMETERFVNV, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, CombinerParameterfvNV, glCombinerParameterfvNV, COMBINERPARAMETERFVNV, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLCOMBINERPARAMETERINV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CombinerParameteriNV, glCombinerParameteriNV, COMBINERPARAMETERINV, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, CombinerParameteriNV, glCombinerParameteriNV, COMBINERPARAMETERINV, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLCOMBINERPARAMETERIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CombinerParameterivNV, glCombinerParameterivNV, COMBINERPARAMETERIVNV, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, CombinerParameterivNV, glCombinerParameterivNV, COMBINERPARAMETERIVNV, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLCOMBINERSTAGEPARAMETERFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CombinerStageParameterfvNV, glCombinerStageParameterfvNV, COMBINERSTAGEPARAMETERFVNV, (AND GLenum stage, GLenum pname, const GLfloat *params), (stage, pname, params), &stage, GL_void_return) GL_PROCM(void, gl, CombinerStageParameterfvNV, glCombinerStageParameterfvNV, COMBINERSTAGEPARAMETERFVNV, (AND GLenum stage, GLenum pname, memptr params), (stage, pname, params), &stage, GL_void_return) #endif #endif #ifndef NO_GLCOMMANDLISTSEGMENTSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CommandListSegmentsNV, glCommandListSegmentsNV, COMMANDLISTSEGMENTSNV, (AND GLuint list, GLuint segments), (list, segments), &list, GL_void_return) GL_PROCM(void, gl, CommandListSegmentsNV, glCommandListSegmentsNV, COMMANDLISTSEGMENTSNV, (AND GLuint list, GLuint segments), (list, segments), &list, GL_void_return) #endif #endif #ifndef NO_GLCOMPILECOMMANDLISTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompileCommandListNV, glCompileCommandListNV, COMPILECOMMANDLISTNV, (AND GLuint list), (list), &list, GL_void_return) GL_PROCM(void, gl, CompileCommandListNV, glCompileCommandListNV, COMPILECOMMANDLISTNV, (AND GLuint list), (list), &list, GL_void_return) #endif #endif #ifndef NO_GLCOMPILESHADER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompileShader, glCompileShader, COMPILESHADER, (AND GLuint shader), (shader), &shader, GL_void_return) GL_PROCM(void, gl, CompileShader, glCompileShader, COMPILESHADER, (AND GLuint shader), (shader), &shader, GL_void_return) #endif #endif #ifndef NO_GLCOMPILESHADERARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompileShaderARB, glCompileShaderARB, COMPILESHADERARB, (AND GLhandleARB shaderObj), (shaderObj), &shaderObj, GL_void_return) GL_PROCM(void, gl, CompileShaderARB, glCompileShaderARB, COMPILESHADERARB, (AND GLhandleARB shaderObj), (shaderObj), &shaderObj, GL_void_return) #endif #endif #ifndef NO_GLCOMPILESHADERINCLUDEARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompileShaderIncludeARB, glCompileShaderIncludeARB, COMPILESHADERINCLUDEARB, (AND GLuint shader, GLsizei count, const GLchar *const *path, const GLint *length), (shader, count, path, length), &shader, GL_void_return) GL_PROCM(void, gl, CompileShaderIncludeARB, glCompileShaderIncludeARB, COMPILESHADERINCLUDEARB, (AND GLuint shader, GLsizei count, memptr path, memptr length), (shader, count, path, length), &shader, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDMULTITEXIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedMultiTexImage1DEXT, glCompressedMultiTexImage1DEXT, COMPRESSEDMULTITEXIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits), (texunit, target, level, internalformat, width, border, imageSize, bits), &texunit, GL_void_return) GL_PROCM(void, gl, CompressedMultiTexImage1DEXT, glCompressedMultiTexImage1DEXT, COMPRESSEDMULTITEXIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, memptr bits), (texunit, target, level, internalformat, width, border, imageSize, bits), &texunit, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDMULTITEXIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedMultiTexImage2DEXT, glCompressedMultiTexImage2DEXT, COMPRESSEDMULTITEXIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits), (texunit, target, level, internalformat, width, height, border, imageSize, bits), &texunit, GL_void_return) GL_PROCM(void, gl, CompressedMultiTexImage2DEXT, glCompressedMultiTexImage2DEXT, COMPRESSEDMULTITEXIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, memptr bits), (texunit, target, level, internalformat, width, height, border, imageSize, bits), &texunit, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDMULTITEXIMAGE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedMultiTexImage3DEXT, glCompressedMultiTexImage3DEXT, COMPRESSEDMULTITEXIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits), (texunit, target, level, internalformat, width, height, depth, border, imageSize, bits), &texunit, GL_void_return) GL_PROCM(void, gl, CompressedMultiTexImage3DEXT, glCompressedMultiTexImage3DEXT, COMPRESSEDMULTITEXIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, memptr bits), (texunit, target, level, internalformat, width, height, depth, border, imageSize, bits), &texunit, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDMULTITEXSUBIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedMultiTexSubImage1DEXT, glCompressedMultiTexSubImage1DEXT, COMPRESSEDMULTITEXSUBIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits), (texunit, target, level, xoffset, width, format, imageSize, bits), &texunit, GL_void_return) GL_PROCM(void, gl, CompressedMultiTexSubImage1DEXT, glCompressedMultiTexSubImage1DEXT, COMPRESSEDMULTITEXSUBIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, memptr bits), (texunit, target, level, xoffset, width, format, imageSize, bits), &texunit, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDMULTITEXSUBIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedMultiTexSubImage2DEXT, glCompressedMultiTexSubImage2DEXT, COMPRESSEDMULTITEXSUBIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits), (texunit, target, level, xoffset, yoffset, width, height, format, imageSize, bits), &texunit, GL_void_return) GL_PROCM(void, gl, CompressedMultiTexSubImage2DEXT, glCompressedMultiTexSubImage2DEXT, COMPRESSEDMULTITEXSUBIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, memptr bits), (texunit, target, level, xoffset, yoffset, width, height, format, imageSize, bits), &texunit, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDMULTITEXSUBIMAGE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedMultiTexSubImage3DEXT, glCompressedMultiTexSubImage3DEXT, COMPRESSEDMULTITEXSUBIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits), (texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits), &texunit, GL_void_return) GL_PROCM(void, gl, CompressedMultiTexSubImage3DEXT, glCompressedMultiTexSubImage3DEXT, COMPRESSEDMULTITEXSUBIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, memptr bits), (texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits), &texunit, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXIMAGE1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTexImage1D, glCompressedTexImage1D, COMPRESSEDTEXIMAGE1D, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data), (target, level, internalformat, width, border, imageSize, data), &target, GL_void_return) GL_PROCM(void, gl, CompressedTexImage1D, glCompressedTexImage1D, COMPRESSEDTEXIMAGE1D, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, memptr data), (target, level, internalformat, width, border, imageSize, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXIMAGE1DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTexImage1DARB, glCompressedTexImage1DARB, COMPRESSEDTEXIMAGE1DARB, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data), (target, level, internalformat, width, border, imageSize, data), &target, GL_void_return) GL_PROCM(void, gl, CompressedTexImage1DARB, glCompressedTexImage1DARB, COMPRESSEDTEXIMAGE1DARB, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, memptr data), (target, level, internalformat, width, border, imageSize, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXIMAGE2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTexImage2D, glCompressedTexImage2D, COMPRESSEDTEXIMAGE2D, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data), (target, level, internalformat, width, height, border, imageSize, data), &target, GL_void_return) GL_PROCM(void, gl, CompressedTexImage2D, glCompressedTexImage2D, COMPRESSEDTEXIMAGE2D, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, memptr data), (target, level, internalformat, width, height, border, imageSize, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXIMAGE2DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTexImage2DARB, glCompressedTexImage2DARB, COMPRESSEDTEXIMAGE2DARB, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data), (target, level, internalformat, width, height, border, imageSize, data), &target, GL_void_return) GL_PROCM(void, gl, CompressedTexImage2DARB, glCompressedTexImage2DARB, COMPRESSEDTEXIMAGE2DARB, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, memptr data), (target, level, internalformat, width, height, border, imageSize, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXIMAGE3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTexImage3D, glCompressedTexImage3D, COMPRESSEDTEXIMAGE3D, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data), (target, level, internalformat, width, height, depth, border, imageSize, data), &target, GL_void_return) GL_PROCM(void, gl, CompressedTexImage3D, glCompressedTexImage3D, COMPRESSEDTEXIMAGE3D, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, memptr data), (target, level, internalformat, width, height, depth, border, imageSize, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXIMAGE3DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTexImage3DARB, glCompressedTexImage3DARB, COMPRESSEDTEXIMAGE3DARB, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data), (target, level, internalformat, width, height, depth, border, imageSize, data), &target, GL_void_return) GL_PROCM(void, gl, CompressedTexImage3DARB, glCompressedTexImage3DARB, COMPRESSEDTEXIMAGE3DARB, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, memptr data), (target, level, internalformat, width, height, depth, border, imageSize, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXSUBIMAGE1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTexSubImage1D, glCompressedTexSubImage1D, COMPRESSEDTEXSUBIMAGE1D, (AND GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data), (target, level, xoffset, width, format, imageSize, data), &target, GL_void_return) GL_PROCM(void, gl, CompressedTexSubImage1D, glCompressedTexSubImage1D, COMPRESSEDTEXSUBIMAGE1D, (AND GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, memptr data), (target, level, xoffset, width, format, imageSize, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXSUBIMAGE1DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, COMPRESSEDTEXSUBIMAGE1DARB, (AND GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data), (target, level, xoffset, width, format, imageSize, data), &target, GL_void_return) GL_PROCM(void, gl, CompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, COMPRESSEDTEXSUBIMAGE1DARB, (AND GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, memptr data), (target, level, xoffset, width, format, imageSize, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXSUBIMAGE2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTexSubImage2D, glCompressedTexSubImage2D, COMPRESSEDTEXSUBIMAGE2D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data), (target, level, xoffset, yoffset, width, height, format, imageSize, data), &target, GL_void_return) GL_PROCM(void, gl, CompressedTexSubImage2D, glCompressedTexSubImage2D, COMPRESSEDTEXSUBIMAGE2D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, memptr data), (target, level, xoffset, yoffset, width, height, format, imageSize, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXSUBIMAGE2DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, COMPRESSEDTEXSUBIMAGE2DARB, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data), (target, level, xoffset, yoffset, width, height, format, imageSize, data), &target, GL_void_return) GL_PROCM(void, gl, CompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, COMPRESSEDTEXSUBIMAGE2DARB, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, memptr data), (target, level, xoffset, yoffset, width, height, format, imageSize, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXSUBIMAGE3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTexSubImage3D, glCompressedTexSubImage3D, COMPRESSEDTEXSUBIMAGE3D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), &target, GL_void_return) GL_PROCM(void, gl, CompressedTexSubImage3D, glCompressedTexSubImage3D, COMPRESSEDTEXSUBIMAGE3D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, memptr data), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXSUBIMAGE3DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, COMPRESSEDTEXSUBIMAGE3DARB, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), &target, GL_void_return) GL_PROCM(void, gl, CompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, COMPRESSEDTEXSUBIMAGE3DARB, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, memptr data), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), &target, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXTUREIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTextureImage1DEXT, glCompressedTextureImage1DEXT, COMPRESSEDTEXTUREIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits), (texture, target, level, internalformat, width, border, imageSize, bits), &texture, GL_void_return) GL_PROCM(void, gl, CompressedTextureImage1DEXT, glCompressedTextureImage1DEXT, COMPRESSEDTEXTUREIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, memptr bits), (texture, target, level, internalformat, width, border, imageSize, bits), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXTUREIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTextureImage2DEXT, glCompressedTextureImage2DEXT, COMPRESSEDTEXTUREIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits), (texture, target, level, internalformat, width, height, border, imageSize, bits), &texture, GL_void_return) GL_PROCM(void, gl, CompressedTextureImage2DEXT, glCompressedTextureImage2DEXT, COMPRESSEDTEXTUREIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, memptr bits), (texture, target, level, internalformat, width, height, border, imageSize, bits), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXTUREIMAGE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTextureImage3DEXT, glCompressedTextureImage3DEXT, COMPRESSEDTEXTUREIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits), (texture, target, level, internalformat, width, height, depth, border, imageSize, bits), &texture, GL_void_return) GL_PROCM(void, gl, CompressedTextureImage3DEXT, glCompressedTextureImage3DEXT, COMPRESSEDTEXTUREIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, memptr bits), (texture, target, level, internalformat, width, height, depth, border, imageSize, bits), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXTURESUBIMAGE1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTextureSubImage1D, glCompressedTextureSubImage1D, COMPRESSEDTEXTURESUBIMAGE1D, (AND GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data), (texture, level, xoffset, width, format, imageSize, data), &texture, GL_void_return) GL_PROCM(void, gl, CompressedTextureSubImage1D, glCompressedTextureSubImage1D, COMPRESSEDTEXTURESUBIMAGE1D, (AND GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, memptr data), (texture, level, xoffset, width, format, imageSize, data), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXTURESUBIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTextureSubImage1DEXT, glCompressedTextureSubImage1DEXT, COMPRESSEDTEXTURESUBIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits), (texture, target, level, xoffset, width, format, imageSize, bits), &texture, GL_void_return) GL_PROCM(void, gl, CompressedTextureSubImage1DEXT, glCompressedTextureSubImage1DEXT, COMPRESSEDTEXTURESUBIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, memptr bits), (texture, target, level, xoffset, width, format, imageSize, bits), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXTURESUBIMAGE2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTextureSubImage2D, glCompressedTextureSubImage2D, COMPRESSEDTEXTURESUBIMAGE2D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data), (texture, level, xoffset, yoffset, width, height, format, imageSize, data), &texture, GL_void_return) GL_PROCM(void, gl, CompressedTextureSubImage2D, glCompressedTextureSubImage2D, COMPRESSEDTEXTURESUBIMAGE2D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, memptr data), (texture, level, xoffset, yoffset, width, height, format, imageSize, data), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXTURESUBIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTextureSubImage2DEXT, glCompressedTextureSubImage2DEXT, COMPRESSEDTEXTURESUBIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits), (texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits), &texture, GL_void_return) GL_PROCM(void, gl, CompressedTextureSubImage2DEXT, glCompressedTextureSubImage2DEXT, COMPRESSEDTEXTURESUBIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, memptr bits), (texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXTURESUBIMAGE3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTextureSubImage3D, glCompressedTextureSubImage3D, COMPRESSEDTEXTURESUBIMAGE3D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data), (texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), &texture, GL_void_return) GL_PROCM(void, gl, CompressedTextureSubImage3D, glCompressedTextureSubImage3D, COMPRESSEDTEXTURESUBIMAGE3D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, memptr data), (texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOMPRESSEDTEXTURESUBIMAGE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CompressedTextureSubImage3DEXT, glCompressedTextureSubImage3DEXT, COMPRESSEDTEXTURESUBIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits), (texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits), &texture, GL_void_return) GL_PROCM(void, gl, CompressedTextureSubImage3DEXT, glCompressedTextureSubImage3DEXT, COMPRESSEDTEXTURESUBIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, memptr bits), (texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits), &texture, GL_void_return) #endif #endif #ifndef NO_GLCONSERVATIVERASTERPARAMETERFNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConservativeRasterParameterfNV, glConservativeRasterParameterfNV, CONSERVATIVERASTERPARAMETERFNV, (AND GLenum pname, GLfloat value), (pname, value), &pname, GL_void_return) GL_PROCM(void, gl, ConservativeRasterParameterfNV, glConservativeRasterParameterfNV, CONSERVATIVERASTERPARAMETERFNV, (AND GLenum pname, GLfloat value), (pname, value), &pname, GL_void_return) #endif #endif #ifndef NO_GLCONSERVATIVERASTERPARAMETERINV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConservativeRasterParameteriNV, glConservativeRasterParameteriNV, CONSERVATIVERASTERPARAMETERINV, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, ConservativeRasterParameteriNV, glConservativeRasterParameteriNV, CONSERVATIVERASTERPARAMETERINV, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLCONVOLUTIONFILTER1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConvolutionFilter1D, glConvolutionFilter1D, CONVOLUTIONFILTER1D, (AND GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image), (target, internalformat, width, format, type, image), &target, GL_void_return) GL_PROCM(void, gl, ConvolutionFilter1D, glConvolutionFilter1D, CONVOLUTIONFILTER1D, (AND GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, memptr image), (target, internalformat, width, format, type, image), &target, GL_void_return) #endif #endif #ifndef NO_GLCONVOLUTIONFILTER1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConvolutionFilter1DEXT, glConvolutionFilter1DEXT, CONVOLUTIONFILTER1DEXT, (AND GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image), (target, internalformat, width, format, type, image), &target, GL_void_return) GL_PROCM(void, gl, ConvolutionFilter1DEXT, glConvolutionFilter1DEXT, CONVOLUTIONFILTER1DEXT, (AND GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, memptr image), (target, internalformat, width, format, type, image), &target, GL_void_return) #endif #endif #ifndef NO_GLCONVOLUTIONFILTER2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConvolutionFilter2D, glConvolutionFilter2D, CONVOLUTIONFILTER2D, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image), (target, internalformat, width, height, format, type, image), &target, GL_void_return) GL_PROCM(void, gl, ConvolutionFilter2D, glConvolutionFilter2D, CONVOLUTIONFILTER2D, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr image), (target, internalformat, width, height, format, type, image), &target, GL_void_return) #endif #endif #ifndef NO_GLCONVOLUTIONFILTER2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConvolutionFilter2DEXT, glConvolutionFilter2DEXT, CONVOLUTIONFILTER2DEXT, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image), (target, internalformat, width, height, format, type, image), &target, GL_void_return) GL_PROCM(void, gl, ConvolutionFilter2DEXT, glConvolutionFilter2DEXT, CONVOLUTIONFILTER2DEXT, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr image), (target, internalformat, width, height, format, type, image), &target, GL_void_return) #endif #endif #ifndef NO_GLCONVOLUTIONPARAMETERF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConvolutionParameterf, glConvolutionParameterf, CONVOLUTIONPARAMETERF, (AND GLenum target, GLenum pname, GLfloat params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ConvolutionParameterf, glConvolutionParameterf, CONVOLUTIONPARAMETERF, (AND GLenum target, GLenum pname, GLfloat params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLCONVOLUTIONPARAMETERFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConvolutionParameterfEXT, glConvolutionParameterfEXT, CONVOLUTIONPARAMETERFEXT, (AND GLenum target, GLenum pname, GLfloat params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ConvolutionParameterfEXT, glConvolutionParameterfEXT, CONVOLUTIONPARAMETERFEXT, (AND GLenum target, GLenum pname, GLfloat params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLCONVOLUTIONPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConvolutionParameterfv, glConvolutionParameterfv, CONVOLUTIONPARAMETERFV, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ConvolutionParameterfv, glConvolutionParameterfv, CONVOLUTIONPARAMETERFV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLCONVOLUTIONPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConvolutionParameterfvEXT, glConvolutionParameterfvEXT, CONVOLUTIONPARAMETERFVEXT, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ConvolutionParameterfvEXT, glConvolutionParameterfvEXT, CONVOLUTIONPARAMETERFVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLCONVOLUTIONPARAMETERI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConvolutionParameteri, glConvolutionParameteri, CONVOLUTIONPARAMETERI, (AND GLenum target, GLenum pname, GLint params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ConvolutionParameteri, glConvolutionParameteri, CONVOLUTIONPARAMETERI, (AND GLenum target, GLenum pname, GLint params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLCONVOLUTIONPARAMETERIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConvolutionParameteriEXT, glConvolutionParameteriEXT, CONVOLUTIONPARAMETERIEXT, (AND GLenum target, GLenum pname, GLint params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ConvolutionParameteriEXT, glConvolutionParameteriEXT, CONVOLUTIONPARAMETERIEXT, (AND GLenum target, GLenum pname, GLint params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLCONVOLUTIONPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConvolutionParameteriv, glConvolutionParameteriv, CONVOLUTIONPARAMETERIV, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ConvolutionParameteriv, glConvolutionParameteriv, CONVOLUTIONPARAMETERIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLCONVOLUTIONPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConvolutionParameterivEXT, glConvolutionParameterivEXT, CONVOLUTIONPARAMETERIVEXT, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ConvolutionParameterivEXT, glConvolutionParameterivEXT, CONVOLUTIONPARAMETERIVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLCONVOLUTIONPARAMETERXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConvolutionParameterxOES, glConvolutionParameterxOES, CONVOLUTIONPARAMETERXOES, (AND GLenum target, GLenum pname, GLfixed param), (target, pname, param), &target, GL_void_return) GL_PROCM(void, gl, ConvolutionParameterxOES, glConvolutionParameterxOES, CONVOLUTIONPARAMETERXOES, (AND GLenum target, GLenum pname, GLfixed param), (target, pname, param), &target, GL_void_return) #endif #endif #ifndef NO_GLCONVOLUTIONPARAMETERXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ConvolutionParameterxvOES, glConvolutionParameterxvOES, CONVOLUTIONPARAMETERXVOES, (AND GLenum target, GLenum pname, const GLfixed *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ConvolutionParameterxvOES, glConvolutionParameterxvOES, CONVOLUTIONPARAMETERXVOES, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYBUFFERSUBDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyBufferSubData, glCopyBufferSubData, COPYBUFFERSUBDATA, (AND GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size), (readTarget, writeTarget, readOffset, writeOffset, size), &readTarget, GL_void_return) GL_PROCM(void, gl, CopyBufferSubData, glCopyBufferSubData, COPYBUFFERSUBDATA, (AND GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size), (readTarget, writeTarget, readOffset, writeOffset, size), &readTarget, GL_void_return) #endif #endif #ifndef NO_GLCOPYCOLORSUBTABLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyColorSubTable, glCopyColorSubTable, COPYCOLORSUBTABLE, (AND GLenum target, GLsizei start, GLint x, GLint y, GLsizei width), (target, start, x, y, width), &target, GL_void_return) GL_PROCM(void, gl, CopyColorSubTable, glCopyColorSubTable, COPYCOLORSUBTABLE, (AND GLenum target, GLsizei start, GLint x, GLint y, GLsizei width), (target, start, x, y, width), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYCOLORSUBTABLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyColorSubTableEXT, glCopyColorSubTableEXT, COPYCOLORSUBTABLEEXT, (AND GLenum target, GLsizei start, GLint x, GLint y, GLsizei width), (target, start, x, y, width), &target, GL_void_return) GL_PROCM(void, gl, CopyColorSubTableEXT, glCopyColorSubTableEXT, COPYCOLORSUBTABLEEXT, (AND GLenum target, GLsizei start, GLint x, GLint y, GLsizei width), (target, start, x, y, width), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYCOLORTABLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyColorTable, glCopyColorTable, COPYCOLORTABLE, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width), (target, internalformat, x, y, width), &target, GL_void_return) GL_PROCM(void, gl, CopyColorTable, glCopyColorTable, COPYCOLORTABLE, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width), (target, internalformat, x, y, width), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYCOLORTABLESGI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyColorTableSGI, glCopyColorTableSGI, COPYCOLORTABLESGI, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width), (target, internalformat, x, y, width), &target, GL_void_return) GL_PROCM(void, gl, CopyColorTableSGI, glCopyColorTableSGI, COPYCOLORTABLESGI, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width), (target, internalformat, x, y, width), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYCONVOLUTIONFILTER1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyConvolutionFilter1D, glCopyConvolutionFilter1D, COPYCONVOLUTIONFILTER1D, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width), (target, internalformat, x, y, width), &target, GL_void_return) GL_PROCM(void, gl, CopyConvolutionFilter1D, glCopyConvolutionFilter1D, COPYCONVOLUTIONFILTER1D, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width), (target, internalformat, x, y, width), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYCONVOLUTIONFILTER1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyConvolutionFilter1DEXT, glCopyConvolutionFilter1DEXT, COPYCONVOLUTIONFILTER1DEXT, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width), (target, internalformat, x, y, width), &target, GL_void_return) GL_PROCM(void, gl, CopyConvolutionFilter1DEXT, glCopyConvolutionFilter1DEXT, COPYCONVOLUTIONFILTER1DEXT, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width), (target, internalformat, x, y, width), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYCONVOLUTIONFILTER2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyConvolutionFilter2D, glCopyConvolutionFilter2D, COPYCONVOLUTIONFILTER2D, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height), (target, internalformat, x, y, width, height), &target, GL_void_return) GL_PROCM(void, gl, CopyConvolutionFilter2D, glCopyConvolutionFilter2D, COPYCONVOLUTIONFILTER2D, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height), (target, internalformat, x, y, width, height), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYCONVOLUTIONFILTER2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyConvolutionFilter2DEXT, glCopyConvolutionFilter2DEXT, COPYCONVOLUTIONFILTER2DEXT, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height), (target, internalformat, x, y, width, height), &target, GL_void_return) GL_PROCM(void, gl, CopyConvolutionFilter2DEXT, glCopyConvolutionFilter2DEXT, COPYCONVOLUTIONFILTER2DEXT, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height), (target, internalformat, x, y, width, height), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYIMAGESUBDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyImageSubData, glCopyImageSubData, COPYIMAGESUBDATA, (AND GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth), (srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth), &srcName, GL_void_return) GL_PROCM(void, gl, CopyImageSubData, glCopyImageSubData, COPYIMAGESUBDATA, (AND GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth), (srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth), &srcName, GL_void_return) #endif #endif #ifndef NO_GLCOPYIMAGESUBDATANV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyImageSubDataNV, glCopyImageSubDataNV, COPYIMAGESUBDATANV, (AND GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth), (srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth), &srcName, GL_void_return) GL_PROCM(void, gl, CopyImageSubDataNV, glCopyImageSubDataNV, COPYIMAGESUBDATANV, (AND GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth), (srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth), &srcName, GL_void_return) #endif #endif #ifndef NO_GLCOPYMULTITEXIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyMultiTexImage1DEXT, glCopyMultiTexImage1DEXT, COPYMULTITEXIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border), (texunit, target, level, internalformat, x, y, width, border), &texunit, GL_void_return) GL_PROCM(void, gl, CopyMultiTexImage1DEXT, glCopyMultiTexImage1DEXT, COPYMULTITEXIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border), (texunit, target, level, internalformat, x, y, width, border), &texunit, GL_void_return) #endif #endif #ifndef NO_GLCOPYMULTITEXIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyMultiTexImage2DEXT, glCopyMultiTexImage2DEXT, COPYMULTITEXIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (texunit, target, level, internalformat, x, y, width, height, border), &texunit, GL_void_return) GL_PROCM(void, gl, CopyMultiTexImage2DEXT, glCopyMultiTexImage2DEXT, COPYMULTITEXIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (texunit, target, level, internalformat, x, y, width, height, border), &texunit, GL_void_return) #endif #endif #ifndef NO_GLCOPYMULTITEXSUBIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyMultiTexSubImage1DEXT, glCopyMultiTexSubImage1DEXT, COPYMULTITEXSUBIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (texunit, target, level, xoffset, x, y, width), &texunit, GL_void_return) GL_PROCM(void, gl, CopyMultiTexSubImage1DEXT, glCopyMultiTexSubImage1DEXT, COPYMULTITEXSUBIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (texunit, target, level, xoffset, x, y, width), &texunit, GL_void_return) #endif #endif #ifndef NO_GLCOPYMULTITEXSUBIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyMultiTexSubImage2DEXT, glCopyMultiTexSubImage2DEXT, COPYMULTITEXSUBIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texunit, target, level, xoffset, yoffset, x, y, width, height), &texunit, GL_void_return) GL_PROCM(void, gl, CopyMultiTexSubImage2DEXT, glCopyMultiTexSubImage2DEXT, COPYMULTITEXSUBIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texunit, target, level, xoffset, yoffset, x, y, width, height), &texunit, GL_void_return) #endif #endif #ifndef NO_GLCOPYMULTITEXSUBIMAGE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyMultiTexSubImage3DEXT, glCopyMultiTexSubImage3DEXT, COPYMULTITEXSUBIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texunit, target, level, xoffset, yoffset, zoffset, x, y, width, height), &texunit, GL_void_return) GL_PROCM(void, gl, CopyMultiTexSubImage3DEXT, glCopyMultiTexSubImage3DEXT, COPYMULTITEXSUBIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texunit, target, level, xoffset, yoffset, zoffset, x, y, width, height), &texunit, GL_void_return) #endif #endif #ifndef NO_GLCOPYNAMEDBUFFERSUBDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyNamedBufferSubData, glCopyNamedBufferSubData, COPYNAMEDBUFFERSUBDATA, (AND GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size), (readBuffer, writeBuffer, readOffset, writeOffset, size), &readBuffer, GL_void_return) GL_PROCM(void, gl, CopyNamedBufferSubData, glCopyNamedBufferSubData, COPYNAMEDBUFFERSUBDATA, (AND GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size), (readBuffer, writeBuffer, readOffset, writeOffset, size), &readBuffer, GL_void_return) #endif #endif #ifndef NO_GLCOPYPATHNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyPathNV, glCopyPathNV, COPYPATHNV, (AND GLuint resultPath, GLuint srcPath), (resultPath, srcPath), &resultPath, GL_void_return) GL_PROCM(void, gl, CopyPathNV, glCopyPathNV, COPYPATHNV, (AND GLuint resultPath, GLuint srcPath), (resultPath, srcPath), &resultPath, GL_void_return) #endif #endif #ifndef NO_GLCOPYPIXELS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyPixels, glCopyPixels, COPYPIXELS, (AND GLint x, GLint y, GLsizei width, GLsizei height, GLenum type), (x, y, width, height, type), &x, GL_void_return) GL_PROCM(void, gl, CopyPixels, glCopyPixels, COPYPIXELS, (AND GLint x, GLint y, GLsizei width, GLsizei height, GLenum type), (x, y, width, height, type), &x, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXIMAGE1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTexImage1D, glCopyTexImage1D, COPYTEXIMAGE1D, (AND GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border), (target, level, internalformat, x, y, width, border), &target, GL_void_return) GL_PROCM(void, gl, CopyTexImage1D, glCopyTexImage1D, COPYTEXIMAGE1D, (AND GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border), (target, level, internalformat, x, y, width, border), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTexImage1DEXT, glCopyTexImage1DEXT, COPYTEXIMAGE1DEXT, (AND GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border), (target, level, internalformat, x, y, width, border), &target, GL_void_return) GL_PROCM(void, gl, CopyTexImage1DEXT, glCopyTexImage1DEXT, COPYTEXIMAGE1DEXT, (AND GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border), (target, level, internalformat, x, y, width, border), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXIMAGE2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTexImage2D, glCopyTexImage2D, COPYTEXIMAGE2D, (AND GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (target, level, internalformat, x, y, width, height, border), &target, GL_void_return) GL_PROCM(void, gl, CopyTexImage2D, glCopyTexImage2D, COPYTEXIMAGE2D, (AND GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (target, level, internalformat, x, y, width, height, border), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTexImage2DEXT, glCopyTexImage2DEXT, COPYTEXIMAGE2DEXT, (AND GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (target, level, internalformat, x, y, width, height, border), &target, GL_void_return) GL_PROCM(void, gl, CopyTexImage2DEXT, glCopyTexImage2DEXT, COPYTEXIMAGE2DEXT, (AND GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (target, level, internalformat, x, y, width, height, border), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXSUBIMAGE1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTexSubImage1D, glCopyTexSubImage1D, COPYTEXSUBIMAGE1D, (AND GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (target, level, xoffset, x, y, width), &target, GL_void_return) GL_PROCM(void, gl, CopyTexSubImage1D, glCopyTexSubImage1D, COPYTEXSUBIMAGE1D, (AND GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (target, level, xoffset, x, y, width), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXSUBIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTexSubImage1DEXT, glCopyTexSubImage1DEXT, COPYTEXSUBIMAGE1DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (target, level, xoffset, x, y, width), &target, GL_void_return) GL_PROCM(void, gl, CopyTexSubImage1DEXT, glCopyTexSubImage1DEXT, COPYTEXSUBIMAGE1DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (target, level, xoffset, x, y, width), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXSUBIMAGE2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTexSubImage2D, glCopyTexSubImage2D, COPYTEXSUBIMAGE2D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, x, y, width, height), &target, GL_void_return) GL_PROCM(void, gl, CopyTexSubImage2D, glCopyTexSubImage2D, COPYTEXSUBIMAGE2D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, x, y, width, height), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXSUBIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTexSubImage2DEXT, glCopyTexSubImage2DEXT, COPYTEXSUBIMAGE2DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, x, y, width, height), &target, GL_void_return) GL_PROCM(void, gl, CopyTexSubImage2DEXT, glCopyTexSubImage2DEXT, COPYTEXSUBIMAGE2DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, x, y, width, height), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXSUBIMAGE3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTexSubImage3D, glCopyTexSubImage3D, COPYTEXSUBIMAGE3D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, zoffset, x, y, width, height), &target, GL_void_return) GL_PROCM(void, gl, CopyTexSubImage3D, glCopyTexSubImage3D, COPYTEXSUBIMAGE3D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, zoffset, x, y, width, height), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXSUBIMAGE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTexSubImage3DEXT, glCopyTexSubImage3DEXT, COPYTEXSUBIMAGE3DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, zoffset, x, y, width, height), &target, GL_void_return) GL_PROCM(void, gl, CopyTexSubImage3DEXT, glCopyTexSubImage3DEXT, COPYTEXSUBIMAGE3DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, zoffset, x, y, width, height), &target, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXTUREIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTextureImage1DEXT, glCopyTextureImage1DEXT, COPYTEXTUREIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border), (texture, target, level, internalformat, x, y, width, border), &texture, GL_void_return) GL_PROCM(void, gl, CopyTextureImage1DEXT, glCopyTextureImage1DEXT, COPYTEXTUREIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border), (texture, target, level, internalformat, x, y, width, border), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXTUREIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTextureImage2DEXT, glCopyTextureImage2DEXT, COPYTEXTUREIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (texture, target, level, internalformat, x, y, width, height, border), &texture, GL_void_return) GL_PROCM(void, gl, CopyTextureImage2DEXT, glCopyTextureImage2DEXT, COPYTEXTUREIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (texture, target, level, internalformat, x, y, width, height, border), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXTURESUBIMAGE1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTextureSubImage1D, glCopyTextureSubImage1D, COPYTEXTURESUBIMAGE1D, (AND GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (texture, level, xoffset, x, y, width), &texture, GL_void_return) GL_PROCM(void, gl, CopyTextureSubImage1D, glCopyTextureSubImage1D, COPYTEXTURESUBIMAGE1D, (AND GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (texture, level, xoffset, x, y, width), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXTURESUBIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTextureSubImage1DEXT, glCopyTextureSubImage1DEXT, COPYTEXTURESUBIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (texture, target, level, xoffset, x, y, width), &texture, GL_void_return) GL_PROCM(void, gl, CopyTextureSubImage1DEXT, glCopyTextureSubImage1DEXT, COPYTEXTURESUBIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (texture, target, level, xoffset, x, y, width), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXTURESUBIMAGE2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTextureSubImage2D, glCopyTextureSubImage2D, COPYTEXTURESUBIMAGE2D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texture, level, xoffset, yoffset, x, y, width, height), &texture, GL_void_return) GL_PROCM(void, gl, CopyTextureSubImage2D, glCopyTextureSubImage2D, COPYTEXTURESUBIMAGE2D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texture, level, xoffset, yoffset, x, y, width, height), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXTURESUBIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTextureSubImage2DEXT, glCopyTextureSubImage2DEXT, COPYTEXTURESUBIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texture, target, level, xoffset, yoffset, x, y, width, height), &texture, GL_void_return) GL_PROCM(void, gl, CopyTextureSubImage2DEXT, glCopyTextureSubImage2DEXT, COPYTEXTURESUBIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texture, target, level, xoffset, yoffset, x, y, width, height), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXTURESUBIMAGE3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTextureSubImage3D, glCopyTextureSubImage3D, COPYTEXTURESUBIMAGE3D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texture, level, xoffset, yoffset, zoffset, x, y, width, height), &texture, GL_void_return) GL_PROCM(void, gl, CopyTextureSubImage3D, glCopyTextureSubImage3D, COPYTEXTURESUBIMAGE3D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texture, level, xoffset, yoffset, zoffset, x, y, width, height), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOPYTEXTURESUBIMAGE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CopyTextureSubImage3DEXT, glCopyTextureSubImage3DEXT, COPYTEXTURESUBIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texture, target, level, xoffset, yoffset, zoffset, x, y, width, height), &texture, GL_void_return) GL_PROCM(void, gl, CopyTextureSubImage3DEXT, glCopyTextureSubImage3DEXT, COPYTEXTURESUBIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texture, target, level, xoffset, yoffset, zoffset, x, y, width, height), &texture, GL_void_return) #endif #endif #ifndef NO_GLCOVERFILLPATHINSTANCEDNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CoverFillPathInstancedNV, glCoverFillPathInstancedNV, COVERFILLPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues), (numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues), &numPaths, GL_void_return) GL_PROCM(void, gl, CoverFillPathInstancedNV, glCoverFillPathInstancedNV, COVERFILLPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLenum coverMode, GLenum transformType, memptr transformValues), (numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues), &numPaths, GL_void_return) #endif #endif #ifndef NO_GLCOVERFILLPATHNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CoverFillPathNV, glCoverFillPathNV, COVERFILLPATHNV, (AND GLuint path, GLenum coverMode), (path, coverMode), &path, GL_void_return) GL_PROCM(void, gl, CoverFillPathNV, glCoverFillPathNV, COVERFILLPATHNV, (AND GLuint path, GLenum coverMode), (path, coverMode), &path, GL_void_return) #endif #endif #ifndef NO_GLCOVERSTROKEPATHINSTANCEDNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CoverStrokePathInstancedNV, glCoverStrokePathInstancedNV, COVERSTROKEPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues), (numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues), &numPaths, GL_void_return) GL_PROCM(void, gl, CoverStrokePathInstancedNV, glCoverStrokePathInstancedNV, COVERSTROKEPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLenum coverMode, GLenum transformType, memptr transformValues), (numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues), &numPaths, GL_void_return) #endif #endif #ifndef NO_GLCOVERSTROKEPATHNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CoverStrokePathNV, glCoverStrokePathNV, COVERSTROKEPATHNV, (AND GLuint path, GLenum coverMode), (path, coverMode), &path, GL_void_return) GL_PROCM(void, gl, CoverStrokePathNV, glCoverStrokePathNV, COVERSTROKEPATHNV, (AND GLuint path, GLenum coverMode), (path, coverMode), &path, GL_void_return) #endif #endif #ifndef NO_GLCOVERAGEMODULATIONNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CoverageModulationNV, glCoverageModulationNV, COVERAGEMODULATIONNV, (AND GLenum components), (components), &components, GL_void_return) GL_PROCM(void, gl, CoverageModulationNV, glCoverageModulationNV, COVERAGEMODULATIONNV, (AND GLenum components), (components), &components, GL_void_return) #endif #endif #ifndef NO_GLCOVERAGEMODULATIONTABLENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CoverageModulationTableNV, glCoverageModulationTableNV, COVERAGEMODULATIONTABLENV, (AND GLsizei n, const GLfloat *v), (n, v), &n, GL_void_return) GL_PROCM(void, gl, CoverageModulationTableNV, glCoverageModulationTableNV, COVERAGEMODULATIONTABLENV, (AND GLsizei n, memptr v), (n, v), &n, GL_void_return) #endif #endif #ifndef NO_GLCREATEBUFFERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CreateBuffers, glCreateBuffers, CREATEBUFFERS, (AND GLsizei n, GLuint *buffers), (n, buffers), &n, GL_void_return) GL_PROCM(void, gl, CreateBuffers, glCreateBuffers, CREATEBUFFERS, (AND GLsizei n, memptr buffers), (n, buffers), &n, GL_void_return) #endif #endif #ifndef NO_GLCREATECOMMANDLISTSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CreateCommandListsNV, glCreateCommandListsNV, CREATECOMMANDLISTSNV, (AND GLsizei n, GLuint *lists), (n, lists), &n, GL_void_return) GL_PROCM(void, gl, CreateCommandListsNV, glCreateCommandListsNV, CREATECOMMANDLISTSNV, (AND GLsizei n, memptr lists), (n, lists), &n, GL_void_return) #endif #endif #ifndef NO_GLCREATEDEBUGOBJECTMESA #if !defined(TINYGL_ONLY) GL_PROC(GLhandleARB, gl, CreateDebugObjectMESA, glCreateDebugObjectMESA, CREATEDEBUGOBJECTMESA, (NOTHING), (), NULL, return (GLhandleARB)) GL_PROCM(GLhandleARB, gl, CreateDebugObjectMESA, glCreateDebugObjectMESA, CREATEDEBUGOBJECTMESA, (NOTHING), (), NULL, return (GLhandleARB)) #endif #endif #ifndef NO_GLCREATEFRAMEBUFFERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CreateFramebuffers, glCreateFramebuffers, CREATEFRAMEBUFFERS, (AND GLsizei n, GLuint *framebuffers), (n, framebuffers), &n, GL_void_return) GL_PROCM(void, gl, CreateFramebuffers, glCreateFramebuffers, CREATEFRAMEBUFFERS, (AND GLsizei n, memptr framebuffers), (n, framebuffers), &n, GL_void_return) #endif #endif #ifndef NO_GLCREATEMEMORYOBJECTSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CreateMemoryObjectsEXT, glCreateMemoryObjectsEXT, CREATEMEMORYOBJECTSEXT, (AND GLsizei n, GLuint *memoryObjects), (n, memoryObjects), &n, GL_void_return) GL_PROCM(void, gl, CreateMemoryObjectsEXT, glCreateMemoryObjectsEXT, CREATEMEMORYOBJECTSEXT, (AND GLsizei n, memptr memoryObjects), (n, memoryObjects), &n, GL_void_return) #endif #endif #ifndef NO_GLCREATEPERFQUERYINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CreatePerfQueryINTEL, glCreatePerfQueryINTEL, CREATEPERFQUERYINTEL, (AND GLuint queryId, GLuint *queryHandle), (queryId, queryHandle), &queryId, GL_void_return) GL_PROCM(void, gl, CreatePerfQueryINTEL, glCreatePerfQueryINTEL, CREATEPERFQUERYINTEL, (AND GLuint queryId, memptr queryHandle), (queryId, queryHandle), &queryId, GL_void_return) #endif #endif #ifndef NO_GLCREATEPROGRAM #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, CreateProgram, glCreateProgram, CREATEPROGRAM, (NOTHING), (), NULL, return (GLuint)) GL_PROCM(GLuint, gl, CreateProgram, glCreateProgram, CREATEPROGRAM, (NOTHING), (), NULL, return (GLuint)) #endif #endif #ifndef NO_GLCREATEPROGRAMOBJECTARB #if !defined(TINYGL_ONLY) GL_PROC(GLhandleARB, gl, CreateProgramObjectARB, glCreateProgramObjectARB, CREATEPROGRAMOBJECTARB, (NOTHING), (), NULL, return (GLhandleARB)) GL_PROCM(GLhandleARB, gl, CreateProgramObjectARB, glCreateProgramObjectARB, CREATEPROGRAMOBJECTARB, (NOTHING), (), NULL, return (GLhandleARB)) #endif #endif #ifndef NO_GLCREATEPROGRAMPIPELINES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CreateProgramPipelines, glCreateProgramPipelines, CREATEPROGRAMPIPELINES, (AND GLsizei n, GLuint *pipelines), (n, pipelines), &n, GL_void_return) GL_PROCM(void, gl, CreateProgramPipelines, glCreateProgramPipelines, CREATEPROGRAMPIPELINES, (AND GLsizei n, memptr pipelines), (n, pipelines), &n, GL_void_return) #endif #endif #ifndef NO_GLCREATEQUERIES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CreateQueries, glCreateQueries, CREATEQUERIES, (AND GLenum target, GLsizei n, GLuint *ids), (target, n, ids), &target, GL_void_return) GL_PROCM(void, gl, CreateQueries, glCreateQueries, CREATEQUERIES, (AND GLenum target, GLsizei n, memptr ids), (target, n, ids), &target, GL_void_return) #endif #endif #ifndef NO_GLCREATERENDERBUFFERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CreateRenderbuffers, glCreateRenderbuffers, CREATERENDERBUFFERS, (AND GLsizei n, GLuint *renderbuffers), (n, renderbuffers), &n, GL_void_return) GL_PROCM(void, gl, CreateRenderbuffers, glCreateRenderbuffers, CREATERENDERBUFFERS, (AND GLsizei n, memptr renderbuffers), (n, renderbuffers), &n, GL_void_return) #endif #endif #ifndef NO_GLCREATESAMPLERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CreateSamplers, glCreateSamplers, CREATESAMPLERS, (AND GLsizei n, GLuint *samplers), (n, samplers), &n, GL_void_return) GL_PROCM(void, gl, CreateSamplers, glCreateSamplers, CREATESAMPLERS, (AND GLsizei n, memptr samplers), (n, samplers), &n, GL_void_return) #endif #endif #ifndef NO_GLCREATESHADER #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, CreateShader, glCreateShader, CREATESHADER, (AND GLenum type), (type), &type, return (GLuint)) GL_PROCM(GLuint, gl, CreateShader, glCreateShader, CREATESHADER, (AND GLenum type), (type), &type, return (GLuint)) #endif #endif #ifndef NO_GLCREATESHADEROBJECTARB #if !defined(TINYGL_ONLY) GL_PROC(GLhandleARB, gl, CreateShaderObjectARB, glCreateShaderObjectARB, CREATESHADEROBJECTARB, (AND GLenum shaderType), (shaderType), &shaderType, return (GLhandleARB)) GL_PROCM(GLhandleARB, gl, CreateShaderObjectARB, glCreateShaderObjectARB, CREATESHADEROBJECTARB, (AND GLenum shaderType), (shaderType), &shaderType, return (GLhandleARB)) #endif #endif #ifndef NO_GLCREATESHADERPROGRAMEXT #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, CreateShaderProgramEXT, glCreateShaderProgramEXT, CREATESHADERPROGRAMEXT, (AND GLenum type, const GLchar *string), (type, string), &type, return (GLuint)) GL_PROCM(GLuint, gl, CreateShaderProgramEXT, glCreateShaderProgramEXT, CREATESHADERPROGRAMEXT, (AND GLenum type, memptr string), (type, string), &type, return (GLuint)) #endif #endif #ifndef NO_GLCREATESHADERPROGRAMV #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, CreateShaderProgramv, glCreateShaderProgramv, CREATESHADERPROGRAMV, (AND GLenum type, GLsizei count, const GLchar *const *strings), (type, count, strings), &type, return (GLuint)) GL_PROCM(GLuint, gl, CreateShaderProgramv, glCreateShaderProgramv, CREATESHADERPROGRAMV, (AND GLenum type, GLsizei count, memptr strings), (type, count, strings), &type, return (GLuint)) #endif #endif #ifndef NO_GLCREATESTATESNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CreateStatesNV, glCreateStatesNV, CREATESTATESNV, (AND GLsizei n, GLuint *states), (n, states), &n, GL_void_return) GL_PROCM(void, gl, CreateStatesNV, glCreateStatesNV, CREATESTATESNV, (AND GLsizei n, memptr states), (n, states), &n, GL_void_return) #endif #endif #ifndef NO_GLCREATESYNCFROMCLEVENTARB #if !defined(TINYGL_ONLY) GL_PROC(GLsync, gl, CreateSyncFromCLeventARB, glCreateSyncFromCLeventARB, CREATESYNCFROMCLEVENTARB, (AND struct _cl_context *context, struct _cl_event *event, GLbitfield flags), (context, event, flags), &context, return (GLsync)) GL_PROCM(GLsync, gl, CreateSyncFromCLeventARB, glCreateSyncFromCLeventARB, CREATESYNCFROMCLEVENTARB, (AND memptr context, memptr event, GLbitfield flags), (context, event, flags), &context, return (GLsync)) #endif #endif #ifndef NO_GLCREATETEXTURES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CreateTextures, glCreateTextures, CREATETEXTURES, (AND GLenum target, GLsizei n, GLuint *textures), (target, n, textures), &target, GL_void_return) GL_PROCM(void, gl, CreateTextures, glCreateTextures, CREATETEXTURES, (AND GLenum target, GLsizei n, memptr textures), (target, n, textures), &target, GL_void_return) #endif #endif #ifndef NO_GLCREATETRANSFORMFEEDBACKS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CreateTransformFeedbacks, glCreateTransformFeedbacks, CREATETRANSFORMFEEDBACKS, (AND GLsizei n, GLuint *ids), (n, ids), &n, GL_void_return) GL_PROCM(void, gl, CreateTransformFeedbacks, glCreateTransformFeedbacks, CREATETRANSFORMFEEDBACKS, (AND GLsizei n, memptr ids), (n, ids), &n, GL_void_return) #endif #endif #ifndef NO_GLCREATEVERTEXARRAYS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CreateVertexArrays, glCreateVertexArrays, CREATEVERTEXARRAYS, (AND GLsizei n, GLuint *arrays), (n, arrays), &n, GL_void_return) GL_PROCM(void, gl, CreateVertexArrays, glCreateVertexArrays, CREATEVERTEXARRAYS, (AND GLsizei n, memptr arrays), (n, arrays), &n, GL_void_return) #endif #endif #ifndef NO_GLCULLFACE GL_PROC(void, gl, CullFace, glCullFace, CULLFACE, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, CullFace, glCullFace, CULLFACE, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #ifndef NO_GLCULLPARAMETERDVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CullParameterdvEXT, glCullParameterdvEXT, CULLPARAMETERDVEXT, (AND GLenum pname, GLdouble *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, CullParameterdvEXT, glCullParameterdvEXT, CULLPARAMETERDVEXT, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLCULLPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CullParameterfvEXT, glCullParameterfvEXT, CULLPARAMETERFVEXT, (AND GLenum pname, GLfloat *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, CullParameterfvEXT, glCullParameterfvEXT, CULLPARAMETERFVEXT, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLCURRENTPALETTEMATRIXARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, CurrentPaletteMatrixARB, glCurrentPaletteMatrixARB, CURRENTPALETTEMATRIXARB, (AND GLint index), (index), &index, GL_void_return) GL_PROCM(void, gl, CurrentPaletteMatrixARB, glCurrentPaletteMatrixARB, CURRENTPALETTEMATRIXARB, (AND GLint index), (index), &index, GL_void_return) #endif #endif #ifndef NO_GLDEBUGMESSAGECALLBACK #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DebugMessageCallback, glDebugMessageCallback, DEBUGMESSAGECALLBACK, (AND GLDEBUGPROC callback, const void *userParam), (callback, userParam), &callback, GL_void_return) GL_PROCM(void, gl, DebugMessageCallback, glDebugMessageCallback, DEBUGMESSAGECALLBACK, (AND memptr callback, memptr userParam), (callback, userParam), &callback, GL_void_return) #endif #endif #ifndef NO_GLDEBUGMESSAGECALLBACKAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DebugMessageCallbackAMD, glDebugMessageCallbackAMD, DEBUGMESSAGECALLBACKAMD, (AND GLDEBUGPROCAMD callback, void *userParam), (callback, userParam), &callback, GL_void_return) GL_PROCM(void, gl, DebugMessageCallbackAMD, glDebugMessageCallbackAMD, DEBUGMESSAGECALLBACKAMD, (AND memptr callback, memptr userParam), (callback, userParam), &callback, GL_void_return) #endif #endif #ifndef NO_GLDEBUGMESSAGECALLBACKARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DebugMessageCallbackARB, glDebugMessageCallbackARB, DEBUGMESSAGECALLBACKARB, (AND GLDEBUGPROCARB callback, const void *userParam), (callback, userParam), &callback, GL_void_return) GL_PROCM(void, gl, DebugMessageCallbackARB, glDebugMessageCallbackARB, DEBUGMESSAGECALLBACKARB, (AND memptr callback, memptr userParam), (callback, userParam), &callback, GL_void_return) #endif #endif #ifndef NO_GLDEBUGMESSAGECONTROL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DebugMessageControl, glDebugMessageControl, DEBUGMESSAGECONTROL, (AND GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled), (source, type, severity, count, ids, enabled), &source, GL_void_return) GL_PROCM(void, gl, DebugMessageControl, glDebugMessageControl, DEBUGMESSAGECONTROL, (AND GLenum source, GLenum type, GLenum severity, GLsizei count, memptr ids, GLboolean32 enabled), (source, type, severity, count, ids, enabled), &source, GL_void_return) #endif #endif #ifndef NO_GLDEBUGMESSAGECONTROLARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DebugMessageControlARB, glDebugMessageControlARB, DEBUGMESSAGECONTROLARB, (AND GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled), (source, type, severity, count, ids, enabled), &source, GL_void_return) GL_PROCM(void, gl, DebugMessageControlARB, glDebugMessageControlARB, DEBUGMESSAGECONTROLARB, (AND GLenum source, GLenum type, GLenum severity, GLsizei count, memptr ids, GLboolean32 enabled), (source, type, severity, count, ids, enabled), &source, GL_void_return) #endif #endif #ifndef NO_GLDEBUGMESSAGEENABLEAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DebugMessageEnableAMD, glDebugMessageEnableAMD, DEBUGMESSAGEENABLEAMD, (AND GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled), (category, severity, count, ids, enabled), &category, GL_void_return) GL_PROCM(void, gl, DebugMessageEnableAMD, glDebugMessageEnableAMD, DEBUGMESSAGEENABLEAMD, (AND GLenum category, GLenum severity, GLsizei count, memptr ids, GLboolean32 enabled), (category, severity, count, ids, enabled), &category, GL_void_return) #endif #endif #ifndef NO_GLDEBUGMESSAGEINSERT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DebugMessageInsert, glDebugMessageInsert, DEBUGMESSAGEINSERT, (AND GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf), (source, type, id, severity, length, buf), &source, GL_void_return) GL_PROCM(void, gl, DebugMessageInsert, glDebugMessageInsert, DEBUGMESSAGEINSERT, (AND GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, memptr buf), (source, type, id, severity, length, buf), &source, GL_void_return) #endif #endif #ifndef NO_GLDEBUGMESSAGEINSERTAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DebugMessageInsertAMD, glDebugMessageInsertAMD, DEBUGMESSAGEINSERTAMD, (AND GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf), (category, severity, id, length, buf), &category, GL_void_return) GL_PROCM(void, gl, DebugMessageInsertAMD, glDebugMessageInsertAMD, DEBUGMESSAGEINSERTAMD, (AND GLenum category, GLenum severity, GLuint id, GLsizei length, memptr buf), (category, severity, id, length, buf), &category, GL_void_return) #endif #endif #ifndef NO_GLDEBUGMESSAGEINSERTARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DebugMessageInsertARB, glDebugMessageInsertARB, DEBUGMESSAGEINSERTARB, (AND GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf), (source, type, id, severity, length, buf), &source, GL_void_return) GL_PROCM(void, gl, DebugMessageInsertARB, glDebugMessageInsertARB, DEBUGMESSAGEINSERTARB, (AND GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, memptr buf), (source, type, id, severity, length, buf), &source, GL_void_return) #endif #endif #ifndef NO_GLDEFORMSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeformSGIX, glDeformSGIX, DEFORMSGIX, (AND GLbitfield mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, DeformSGIX, glDeformSGIX, DEFORMSGIX, (AND GLbitfield mask), (mask), &mask, GL_void_return) #endif #endif #ifndef NO_GLDEFORMATIONMAP3DSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeformationMap3dSGIX, glDeformationMap3dSGIX, DEFORMATIONMAP3DSGIX, (AND GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points), &target, GL_void_return) GL_PROCM(void, gl, DeformationMap3dSGIX, glDeformationMap3dSGIX, DEFORMATIONMAP3DSGIX, (AND GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, memptr points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points), &target, GL_void_return) #endif #endif #ifndef NO_GLDEFORMATIONMAP3FSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeformationMap3fSGIX, glDeformationMap3fSGIX, DEFORMATIONMAP3FSGIX, (AND GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points), &target, GL_void_return) GL_PROCM(void, gl, DeformationMap3fSGIX, glDeformationMap3fSGIX, DEFORMATIONMAP3FSGIX, (AND GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, memptr points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points), &target, GL_void_return) #endif #endif #ifndef NO_GLDELETEASYNCMARKERSSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteAsyncMarkersSGIX, glDeleteAsyncMarkersSGIX, DELETEASYNCMARKERSSGIX, (AND GLuint marker, GLsizei range), (marker, range), &marker, GL_void_return) GL_PROCM(void, gl, DeleteAsyncMarkersSGIX, glDeleteAsyncMarkersSGIX, DELETEASYNCMARKERSSGIX, (AND GLuint marker, GLsizei range), (marker, range), &marker, GL_void_return) #endif #endif #ifndef NO_GLDELETEBUFFERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteBuffers, glDeleteBuffers, DELETEBUFFERS, (AND GLsizei n, const GLuint *buffers), (n, buffers), &n, GL_void_return) GL_PROCM(void, gl, DeleteBuffers, glDeleteBuffers, DELETEBUFFERS, (AND GLsizei n, memptr buffers), (n, buffers), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEBUFFERSARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteBuffersARB, glDeleteBuffersARB, DELETEBUFFERSARB, (AND GLsizei n, const GLuint *buffers), (n, buffers), &n, GL_void_return) GL_PROCM(void, gl, DeleteBuffersARB, glDeleteBuffersARB, DELETEBUFFERSARB, (AND GLsizei n, memptr buffers), (n, buffers), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETECOMMANDLISTSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteCommandListsNV, glDeleteCommandListsNV, DELETECOMMANDLISTSNV, (AND GLsizei n, const GLuint *lists), (n, lists), &n, GL_void_return) GL_PROCM(void, gl, DeleteCommandListsNV, glDeleteCommandListsNV, DELETECOMMANDLISTSNV, (AND GLsizei n, memptr lists), (n, lists), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEFENCESAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteFencesAPPLE, glDeleteFencesAPPLE, DELETEFENCESAPPLE, (AND GLsizei n, const GLuint *fences), (n, fences), &n, GL_void_return) GL_PROCM(void, gl, DeleteFencesAPPLE, glDeleteFencesAPPLE, DELETEFENCESAPPLE, (AND GLsizei n, memptr fences), (n, fences), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEFENCESNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteFencesNV, glDeleteFencesNV, DELETEFENCESNV, (AND GLsizei n, const GLuint *fences), (n, fences), &n, GL_void_return) GL_PROCM(void, gl, DeleteFencesNV, glDeleteFencesNV, DELETEFENCESNV, (AND GLsizei n, memptr fences), (n, fences), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEFRAGMENTSHADERATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteFragmentShaderATI, glDeleteFragmentShaderATI, DELETEFRAGMENTSHADERATI, (AND GLuint id), (id), &id, GL_void_return) GL_PROCM(void, gl, DeleteFragmentShaderATI, glDeleteFragmentShaderATI, DELETEFRAGMENTSHADERATI, (AND GLuint id), (id), &id, GL_void_return) #endif #endif #ifndef NO_GLDELETEFRAMEBUFFERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteFramebuffers, glDeleteFramebuffers, DELETEFRAMEBUFFERS, (AND GLsizei n, const GLuint *framebuffers), (n, framebuffers), &n, GL_void_return) GL_PROCM(void, gl, DeleteFramebuffers, glDeleteFramebuffers, DELETEFRAMEBUFFERS, (AND GLsizei n, memptr framebuffers), (n, framebuffers), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEFRAMEBUFFERSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteFramebuffersEXT, glDeleteFramebuffersEXT, DELETEFRAMEBUFFERSEXT, (AND GLsizei n, const GLuint *framebuffers), (n, framebuffers), &n, GL_void_return) GL_PROCM(void, gl, DeleteFramebuffersEXT, glDeleteFramebuffersEXT, DELETEFRAMEBUFFERSEXT, (AND GLsizei n, memptr framebuffers), (n, framebuffers), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETELISTS GL_PROC(void, gl, DeleteLists, glDeleteLists, DELETELISTS, (AND GLuint list, GLsizei range), (list, range), &list, GL_void_return) GL_PROCM(void, gl, DeleteLists, glDeleteLists, DELETELISTS, (AND GLuint list, GLsizei range), (list, range), &list, GL_void_return) #endif #ifndef NO_GLDELETEMEMORYOBJECTSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteMemoryObjectsEXT, glDeleteMemoryObjectsEXT, DELETEMEMORYOBJECTSEXT, (AND GLsizei n, const GLuint *memoryObjects), (n, memoryObjects), &n, GL_void_return) GL_PROCM(void, gl, DeleteMemoryObjectsEXT, glDeleteMemoryObjectsEXT, DELETEMEMORYOBJECTSEXT, (AND GLsizei n, memptr memoryObjects), (n, memoryObjects), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETENAMEDSTRINGARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteNamedStringARB, glDeleteNamedStringARB, DELETENAMEDSTRINGARB, (AND GLint namelen, const GLchar *name), (namelen, name), &namelen, GL_void_return) GL_PROCM(void, gl, DeleteNamedStringARB, glDeleteNamedStringARB, DELETENAMEDSTRINGARB, (AND GLint namelen, memptr name), (namelen, name), &namelen, GL_void_return) #endif #endif #ifndef NO_GLDELETENAMESAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteNamesAMD, glDeleteNamesAMD, DELETENAMESAMD, (AND GLenum identifier, GLuint num, const GLuint *names), (identifier, num, names), &identifier, GL_void_return) GL_PROCM(void, gl, DeleteNamesAMD, glDeleteNamesAMD, DELETENAMESAMD, (AND GLenum identifier, GLuint num, memptr names), (identifier, num, names), &identifier, GL_void_return) #endif #endif #ifndef NO_GLDELETEOBJECTARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteObjectARB, glDeleteObjectARB, DELETEOBJECTARB, (AND GLhandleARB obj), (obj), &obj, GL_void_return) GL_PROCM(void, gl, DeleteObjectARB, glDeleteObjectARB, DELETEOBJECTARB, (AND GLhandleARB obj), (obj), &obj, GL_void_return) #endif #endif #ifndef NO_GLDELETEOBJECTBUFFERATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteObjectBufferATI, glDeleteObjectBufferATI, DELETEOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, GL_void_return) GL_PROCM(void, gl, DeleteObjectBufferATI, glDeleteObjectBufferATI, DELETEOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, GL_void_return) #endif #endif #ifndef NO_GLDELETEOCCLUSIONQUERIESNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteOcclusionQueriesNV, glDeleteOcclusionQueriesNV, DELETEOCCLUSIONQUERIESNV, (AND GLsizei n, const GLuint *ids), (n, ids), &n, GL_void_return) GL_PROCM(void, gl, DeleteOcclusionQueriesNV, glDeleteOcclusionQueriesNV, DELETEOCCLUSIONQUERIESNV, (AND GLsizei n, memptr ids), (n, ids), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEPATHSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeletePathsNV, glDeletePathsNV, DELETEPATHSNV, (AND GLuint path, GLsizei range), (path, range), &path, GL_void_return) GL_PROCM(void, gl, DeletePathsNV, glDeletePathsNV, DELETEPATHSNV, (AND GLuint path, GLsizei range), (path, range), &path, GL_void_return) #endif #endif #ifndef NO_GLDELETEPERFMONITORSAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeletePerfMonitorsAMD, glDeletePerfMonitorsAMD, DELETEPERFMONITORSAMD, (AND GLsizei n, GLuint *monitors), (n, monitors), &n, GL_void_return) GL_PROCM(void, gl, DeletePerfMonitorsAMD, glDeletePerfMonitorsAMD, DELETEPERFMONITORSAMD, (AND GLsizei n, memptr monitors), (n, monitors), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEPERFQUERYINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeletePerfQueryINTEL, glDeletePerfQueryINTEL, DELETEPERFQUERYINTEL, (AND GLuint queryHandle), (queryHandle), &queryHandle, GL_void_return) GL_PROCM(void, gl, DeletePerfQueryINTEL, glDeletePerfQueryINTEL, DELETEPERFQUERYINTEL, (AND GLuint queryHandle), (queryHandle), &queryHandle, GL_void_return) #endif #endif #ifndef NO_GLDELETEPROGRAM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteProgram, glDeleteProgram, DELETEPROGRAM, (AND GLuint program), (program), &program, GL_void_return) GL_PROCM(void, gl, DeleteProgram, glDeleteProgram, DELETEPROGRAM, (AND GLuint program), (program), &program, GL_void_return) #endif #endif #ifndef NO_GLDELETEPROGRAMPIPELINES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteProgramPipelines, glDeleteProgramPipelines, DELETEPROGRAMPIPELINES, (AND GLsizei n, const GLuint *pipelines), (n, pipelines), &n, GL_void_return) GL_PROCM(void, gl, DeleteProgramPipelines, glDeleteProgramPipelines, DELETEPROGRAMPIPELINES, (AND GLsizei n, memptr pipelines), (n, pipelines), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEPROGRAMSARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteProgramsARB, glDeleteProgramsARB, DELETEPROGRAMSARB, (AND GLsizei n, const GLuint *programs), (n, programs), &n, GL_void_return) GL_PROCM(void, gl, DeleteProgramsARB, glDeleteProgramsARB, DELETEPROGRAMSARB, (AND GLsizei n, memptr programs), (n, programs), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEPROGRAMSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteProgramsNV, glDeleteProgramsNV, DELETEPROGRAMSNV, (AND GLsizei n, const GLuint *programs), (n, programs), &n, GL_void_return) GL_PROCM(void, gl, DeleteProgramsNV, glDeleteProgramsNV, DELETEPROGRAMSNV, (AND GLsizei n, memptr programs), (n, programs), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEQUERIES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteQueries, glDeleteQueries, DELETEQUERIES, (AND GLsizei n, const GLuint *ids), (n, ids), &n, GL_void_return) GL_PROCM(void, gl, DeleteQueries, glDeleteQueries, DELETEQUERIES, (AND GLsizei n, memptr ids), (n, ids), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEQUERIESARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteQueriesARB, glDeleteQueriesARB, DELETEQUERIESARB, (AND GLsizei n, const GLuint *ids), (n, ids), &n, GL_void_return) GL_PROCM(void, gl, DeleteQueriesARB, glDeleteQueriesARB, DELETEQUERIESARB, (AND GLsizei n, memptr ids), (n, ids), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEQUERYRESOURCETAGNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteQueryResourceTagNV, glDeleteQueryResourceTagNV, DELETEQUERYRESOURCETAGNV, (AND GLsizei n, const GLint *tagIds), (n, tagIds), &n, GL_void_return) GL_PROCM(void, gl, DeleteQueryResourceTagNV, glDeleteQueryResourceTagNV, DELETEQUERYRESOURCETAGNV, (AND GLsizei n, memptr tagIds), (n, tagIds), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETERENDERBUFFERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteRenderbuffers, glDeleteRenderbuffers, DELETERENDERBUFFERS, (AND GLsizei n, const GLuint *renderbuffers), (n, renderbuffers), &n, GL_void_return) GL_PROCM(void, gl, DeleteRenderbuffers, glDeleteRenderbuffers, DELETERENDERBUFFERS, (AND GLsizei n, memptr renderbuffers), (n, renderbuffers), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETERENDERBUFFERSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, DELETERENDERBUFFERSEXT, (AND GLsizei n, const GLuint *renderbuffers), (n, renderbuffers), &n, GL_void_return) GL_PROCM(void, gl, DeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, DELETERENDERBUFFERSEXT, (AND GLsizei n, memptr renderbuffers), (n, renderbuffers), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETESAMPLERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteSamplers, glDeleteSamplers, DELETESAMPLERS, (AND GLsizei count, const GLuint *samplers), (count, samplers), &count, GL_void_return) GL_PROCM(void, gl, DeleteSamplers, glDeleteSamplers, DELETESAMPLERS, (AND GLsizei count, memptr samplers), (count, samplers), &count, GL_void_return) #endif #endif #ifndef NO_GLDELETESEMAPHORESEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteSemaphoresEXT, glDeleteSemaphoresEXT, DELETESEMAPHORESEXT, (AND GLsizei n, const GLuint *semaphores), (n, semaphores), &n, GL_void_return) GL_PROCM(void, gl, DeleteSemaphoresEXT, glDeleteSemaphoresEXT, DELETESEMAPHORESEXT, (AND GLsizei n, memptr semaphores), (n, semaphores), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETESHADER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteShader, glDeleteShader, DELETESHADER, (AND GLuint shader), (shader), &shader, GL_void_return) GL_PROCM(void, gl, DeleteShader, glDeleteShader, DELETESHADER, (AND GLuint shader), (shader), &shader, GL_void_return) #endif #endif #ifndef NO_GLDELETESTATESNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteStatesNV, glDeleteStatesNV, DELETESTATESNV, (AND GLsizei n, const GLuint *states), (n, states), &n, GL_void_return) GL_PROCM(void, gl, DeleteStatesNV, glDeleteStatesNV, DELETESTATESNV, (AND GLsizei n, memptr states), (n, states), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETESYNC #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteSync, glDeleteSync, DELETESYNC, (AND GLsync sync), (sync), &sync, GL_void_return) GL_PROCM(void, gl, DeleteSync, glDeleteSync, DELETESYNC, (AND GLsync sync), (sync), &sync, GL_void_return) #endif #endif #ifndef NO_GLDELETETEXTURES GL_PROC(void, gl, DeleteTextures, glDeleteTextures, DELETETEXTURES, (AND GLsizei n, const GLuint *textures), (n, textures), &n, GL_void_return) GL_PROCM(void, gl, DeleteTextures, glDeleteTextures, DELETETEXTURES, (AND GLsizei n, memptr textures), (n, textures), &n, GL_void_return) #endif #ifndef NO_GLDELETETEXTURESEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteTexturesEXT, glDeleteTexturesEXT, DELETETEXTURESEXT, (AND GLsizei n, const GLuint *textures), (n, textures), &n, GL_void_return) GL_PROCM(void, gl, DeleteTexturesEXT, glDeleteTexturesEXT, DELETETEXTURESEXT, (AND GLsizei n, memptr textures), (n, textures), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETETRANSFORMFEEDBACKS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteTransformFeedbacks, glDeleteTransformFeedbacks, DELETETRANSFORMFEEDBACKS, (AND GLsizei n, const GLuint *ids), (n, ids), &n, GL_void_return) GL_PROCM(void, gl, DeleteTransformFeedbacks, glDeleteTransformFeedbacks, DELETETRANSFORMFEEDBACKS, (AND GLsizei n, memptr ids), (n, ids), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETETRANSFORMFEEDBACKSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteTransformFeedbacksNV, glDeleteTransformFeedbacksNV, DELETETRANSFORMFEEDBACKSNV, (AND GLsizei n, const GLuint *ids), (n, ids), &n, GL_void_return) GL_PROCM(void, gl, DeleteTransformFeedbacksNV, glDeleteTransformFeedbacksNV, DELETETRANSFORMFEEDBACKSNV, (AND GLsizei n, memptr ids), (n, ids), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEVERTEXARRAYS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteVertexArrays, glDeleteVertexArrays, DELETEVERTEXARRAYS, (AND GLsizei n, const GLuint *arrays), (n, arrays), &n, GL_void_return) GL_PROCM(void, gl, DeleteVertexArrays, glDeleteVertexArrays, DELETEVERTEXARRAYS, (AND GLsizei n, memptr arrays), (n, arrays), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEVERTEXARRAYSAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteVertexArraysAPPLE, glDeleteVertexArraysAPPLE, DELETEVERTEXARRAYSAPPLE, (AND GLsizei n, const GLuint *arrays), (n, arrays), &n, GL_void_return) GL_PROCM(void, gl, DeleteVertexArraysAPPLE, glDeleteVertexArraysAPPLE, DELETEVERTEXARRAYSAPPLE, (AND GLsizei n, memptr arrays), (n, arrays), &n, GL_void_return) #endif #endif #ifndef NO_GLDELETEVERTEXSHADEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DeleteVertexShaderEXT, glDeleteVertexShaderEXT, DELETEVERTEXSHADEREXT, (AND GLuint id), (id), &id, GL_void_return) GL_PROCM(void, gl, DeleteVertexShaderEXT, glDeleteVertexShaderEXT, DELETEVERTEXSHADEREXT, (AND GLuint id), (id), &id, GL_void_return) #endif #endif #ifndef NO_GLDEPTHBOUNDSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DepthBoundsEXT, glDepthBoundsEXT, DEPTHBOUNDSEXT, (AND GLclampd zmin, GLclampd zmax), (zmin, zmax), &zmin, GL_void_return) GL_PROCM(void, gl, DepthBoundsEXT, glDepthBoundsEXT, DEPTHBOUNDSEXT, (AND GLclampd zmin, GLclampd zmax), (zmin, zmax), &zmin, GL_void_return) #endif #endif #ifndef NO_GLDEPTHBOUNDSDNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DepthBoundsdNV, glDepthBoundsdNV, DEPTHBOUNDSDNV, (AND GLdouble zmin, GLdouble zmax), (zmin, zmax), &zmin, GL_void_return) GL_PROCM(void, gl, DepthBoundsdNV, glDepthBoundsdNV, DEPTHBOUNDSDNV, (AND GLdouble zmin, GLdouble zmax), (zmin, zmax), &zmin, GL_void_return) #endif #endif #ifndef NO_GLDEPTHFUNC #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DepthFunc, glDepthFunc, DEPTHFUNC, (AND GLenum func), (func), &func, GL_void_return) GL_PROCM(void, gl, DepthFunc, glDepthFunc, DEPTHFUNC, (AND GLenum func), (func), &func, GL_void_return) #endif #endif #ifndef NO_GLDEPTHMASK #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DepthMask, glDepthMask, DEPTHMASK, (AND GLboolean32 flag), (flag), &flag, GL_void_return) GL_PROCM(void, gl, DepthMask, glDepthMask, DEPTHMASK, (AND GLboolean32 flag), (flag), &flag, GL_void_return) #endif #endif #ifndef NO_GLDEPTHRANGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DepthRange, glDepthRange, DEPTHRANGE, (AND GLclampd zNear, GLclampd zFar), (zNear, zFar), &zNear, GL_void_return) GL_PROCM(void, gl, DepthRange, glDepthRange, DEPTHRANGE, (AND GLclampd zNear, GLclampd zFar), (zNear, zFar), &zNear, GL_void_return) #endif #endif #ifndef NO_GLDEPTHRANGEARRAYV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DepthRangeArrayv, glDepthRangeArrayv, DEPTHRANGEARRAYV, (AND GLuint first, GLsizei count, const GLdouble *v), (first, count, v), &first, GL_void_return) GL_PROCM(void, gl, DepthRangeArrayv, glDepthRangeArrayv, DEPTHRANGEARRAYV, (AND GLuint first, GLsizei count, memptr v), (first, count, v), &first, GL_void_return) #endif #endif #ifndef NO_GLDEPTHRANGEINDEXED #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DepthRangeIndexed, glDepthRangeIndexed, DEPTHRANGEINDEXED, (AND GLuint index, GLdouble n, GLdouble f), (index, n, f), &index, GL_void_return) GL_PROCM(void, gl, DepthRangeIndexed, glDepthRangeIndexed, DEPTHRANGEINDEXED, (AND GLuint index, GLdouble n, GLdouble f), (index, n, f), &index, GL_void_return) #endif #endif #ifndef NO_GLDEPTHRANGEDNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DepthRangedNV, glDepthRangedNV, DEPTHRANGEDNV, (AND GLdouble zNear, GLdouble zFar), (zNear, zFar), &zNear, GL_void_return) GL_PROCM(void, gl, DepthRangedNV, glDepthRangedNV, DEPTHRANGEDNV, (AND GLdouble zNear, GLdouble zFar), (zNear, zFar), &zNear, GL_void_return) #endif #endif #ifndef NO_GLDEPTHRANGEF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DepthRangef, glDepthRangef, DEPTHRANGEF, (AND GLfloat n, GLfloat f), (n, f), &n, GL_void_return) GL_PROCM(void, gl, DepthRangef, glDepthRangef, DEPTHRANGEF, (AND GLfloat n, GLfloat f), (n, f), &n, GL_void_return) #endif #endif #ifndef NO_GLDEPTHRANGEFOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DepthRangefOES, glDepthRangefOES, DEPTHRANGEFOES, (AND GLclampf n, GLclampf f), (n, f), &n, GL_void_return) GL_PROCM(void, gl, DepthRangefOES, glDepthRangefOES, DEPTHRANGEFOES, (AND GLclampf n, GLclampf f), (n, f), &n, GL_void_return) #endif #endif #ifndef NO_GLDEPTHRANGEXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DepthRangexOES, glDepthRangexOES, DEPTHRANGEXOES, (AND GLfixed n, GLfixed f), (n, f), &n, GL_void_return) GL_PROCM(void, gl, DepthRangexOES, glDepthRangexOES, DEPTHRANGEXOES, (AND GLfixed n, GLfixed f), (n, f), &n, GL_void_return) #endif #endif #ifndef NO_GLDETACHOBJECTARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DetachObjectARB, glDetachObjectARB, DETACHOBJECTARB, (AND GLhandleARB containerObj, GLhandleARB attachedObj), (containerObj, attachedObj), &containerObj, GL_void_return) GL_PROCM(void, gl, DetachObjectARB, glDetachObjectARB, DETACHOBJECTARB, (AND GLhandleARB containerObj, GLhandleARB attachedObj), (containerObj, attachedObj), &containerObj, GL_void_return) #endif #endif #ifndef NO_GLDETACHSHADER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DetachShader, glDetachShader, DETACHSHADER, (AND GLuint program, GLuint shader), (program, shader), &program, GL_void_return) GL_PROCM(void, gl, DetachShader, glDetachShader, DETACHSHADER, (AND GLuint program, GLuint shader), (program, shader), &program, GL_void_return) #endif #endif #ifndef NO_GLDETAILTEXFUNCSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DetailTexFuncSGIS, glDetailTexFuncSGIS, DETAILTEXFUNCSGIS, (AND GLenum target, GLsizei n, const GLfloat *points), (target, n, points), &target, GL_void_return) GL_PROCM(void, gl, DetailTexFuncSGIS, glDetailTexFuncSGIS, DETAILTEXFUNCSGIS, (AND GLenum target, GLsizei n, memptr points), (target, n, points), &target, GL_void_return) #endif #endif #ifndef NO_GLDISABLE GL_PROC(void, gl, Disable, glDisable, DISABLE, (AND GLenum cap), (cap), &cap, GL_void_return) GL_PROCM(void, gl, Disable, glDisable, DISABLE, (AND GLenum cap), (cap), &cap, GL_void_return) #endif #ifndef NO_GLDISABLECLIENTSTATE GL_PROC(void, gl, DisableClientState, glDisableClientState, DISABLECLIENTSTATE, (AND GLenum array), (array), &array, GL_void_return) GL_PROCM(void, gl, DisableClientState, glDisableClientState, DISABLECLIENTSTATE, (AND GLenum array), (array), &array, GL_void_return) #endif #ifndef NO_GLDISABLECLIENTSTATEINDEXEDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DisableClientStateIndexedEXT, glDisableClientStateIndexedEXT, DISABLECLIENTSTATEINDEXEDEXT, (AND GLenum array, GLuint index), (array, index), &array, GL_void_return) GL_PROCM(void, gl, DisableClientStateIndexedEXT, glDisableClientStateIndexedEXT, DISABLECLIENTSTATEINDEXEDEXT, (AND GLenum array, GLuint index), (array, index), &array, GL_void_return) #endif #endif #ifndef NO_GLDISABLECLIENTSTATEIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DisableClientStateiEXT, glDisableClientStateiEXT, DISABLECLIENTSTATEIEXT, (AND GLenum array, GLuint index), (array, index), &array, GL_void_return) GL_PROCM(void, gl, DisableClientStateiEXT, glDisableClientStateiEXT, DISABLECLIENTSTATEIEXT, (AND GLenum array, GLuint index), (array, index), &array, GL_void_return) #endif #endif #ifndef NO_GLDISABLEINDEXEDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DisableIndexedEXT, glDisableIndexedEXT, DISABLEINDEXEDEXT, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) GL_PROCM(void, gl, DisableIndexedEXT, glDisableIndexedEXT, DISABLEINDEXEDEXT, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) #endif #endif #ifndef NO_GLDISABLETRACEMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DisableTraceMESA, glDisableTraceMESA, DISABLETRACEMESA, (AND GLbitfield mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, DisableTraceMESA, glDisableTraceMESA, DISABLETRACEMESA, (AND GLbitfield mask), (mask), &mask, GL_void_return) #endif #endif #ifndef NO_GLDISABLEVARIANTCLIENTSTATEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DisableVariantClientStateEXT, glDisableVariantClientStateEXT, DISABLEVARIANTCLIENTSTATEEXT, (AND GLuint id), (id), &id, GL_void_return) GL_PROCM(void, gl, DisableVariantClientStateEXT, glDisableVariantClientStateEXT, DISABLEVARIANTCLIENTSTATEEXT, (AND GLuint id), (id), &id, GL_void_return) #endif #endif #ifndef NO_GLDISABLEVERTEXARRAYATTRIB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DisableVertexArrayAttrib, glDisableVertexArrayAttrib, DISABLEVERTEXARRAYATTRIB, (AND GLuint vaobj, GLuint index), (vaobj, index), &vaobj, GL_void_return) GL_PROCM(void, gl, DisableVertexArrayAttrib, glDisableVertexArrayAttrib, DISABLEVERTEXARRAYATTRIB, (AND GLuint vaobj, GLuint index), (vaobj, index), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLDISABLEVERTEXARRAYATTRIBEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DisableVertexArrayAttribEXT, glDisableVertexArrayAttribEXT, DISABLEVERTEXARRAYATTRIBEXT, (AND GLuint vaobj, GLuint index), (vaobj, index), &vaobj, GL_void_return) GL_PROCM(void, gl, DisableVertexArrayAttribEXT, glDisableVertexArrayAttribEXT, DISABLEVERTEXARRAYATTRIBEXT, (AND GLuint vaobj, GLuint index), (vaobj, index), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLDISABLEVERTEXARRAYEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DisableVertexArrayEXT, glDisableVertexArrayEXT, DISABLEVERTEXARRAYEXT, (AND GLuint vaobj, GLenum array), (vaobj, array), &vaobj, GL_void_return) GL_PROCM(void, gl, DisableVertexArrayEXT, glDisableVertexArrayEXT, DISABLEVERTEXARRAYEXT, (AND GLuint vaobj, GLenum array), (vaobj, array), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLDISABLEVERTEXATTRIBAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DisableVertexAttribAPPLE, glDisableVertexAttribAPPLE, DISABLEVERTEXATTRIBAPPLE, (AND GLuint index, GLenum pname), (index, pname), &index, GL_void_return) GL_PROCM(void, gl, DisableVertexAttribAPPLE, glDisableVertexAttribAPPLE, DISABLEVERTEXATTRIBAPPLE, (AND GLuint index, GLenum pname), (index, pname), &index, GL_void_return) #endif #endif #ifndef NO_GLDISABLEVERTEXATTRIBARRAY #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DisableVertexAttribArray, glDisableVertexAttribArray, DISABLEVERTEXATTRIBARRAY, (AND GLuint index), (index), &index, GL_void_return) GL_PROCM(void, gl, DisableVertexAttribArray, glDisableVertexAttribArray, DISABLEVERTEXATTRIBARRAY, (AND GLuint index), (index), &index, GL_void_return) #endif #endif #ifndef NO_GLDISABLEVERTEXATTRIBARRAYARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, DISABLEVERTEXATTRIBARRAYARB, (AND GLuint index), (index), &index, GL_void_return) GL_PROCM(void, gl, DisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, DISABLEVERTEXATTRIBARRAYARB, (AND GLuint index), (index), &index, GL_void_return) #endif #endif #ifndef NO_GLDISABLEI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Disablei, glDisablei, DISABLEI, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) GL_PROCM(void, gl, Disablei, glDisablei, DISABLEI, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) #endif #endif #ifndef NO_GLDISPATCHCOMPUTE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DispatchCompute, glDispatchCompute, DISPATCHCOMPUTE, (AND GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z), (num_groups_x, num_groups_y, num_groups_z), &num_groups_x, GL_void_return) GL_PROCM(void, gl, DispatchCompute, glDispatchCompute, DISPATCHCOMPUTE, (AND GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z), (num_groups_x, num_groups_y, num_groups_z), &num_groups_x, GL_void_return) #endif #endif #ifndef NO_GLDISPATCHCOMPUTEGROUPSIZEARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DispatchComputeGroupSizeARB, glDispatchComputeGroupSizeARB, DISPATCHCOMPUTEGROUPSIZEARB, (AND GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z), (num_groups_x, num_groups_y, num_groups_z, group_size_x, group_size_y, group_size_z), &num_groups_x, GL_void_return) GL_PROCM(void, gl, DispatchComputeGroupSizeARB, glDispatchComputeGroupSizeARB, DISPATCHCOMPUTEGROUPSIZEARB, (AND GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z), (num_groups_x, num_groups_y, num_groups_z, group_size_x, group_size_y, group_size_z), &num_groups_x, GL_void_return) #endif #endif #ifndef NO_GLDISPATCHCOMPUTEINDIRECT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DispatchComputeIndirect, glDispatchComputeIndirect, DISPATCHCOMPUTEINDIRECT, (AND GLintptr indirect), (indirect), &indirect, GL_void_return) GL_PROCM(void, gl, DispatchComputeIndirect, glDispatchComputeIndirect, DISPATCHCOMPUTEINDIRECT, (AND GLintptr indirect), (indirect), &indirect, GL_void_return) #endif #endif #ifndef NO_GLDRAWARRAYS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawArrays, glDrawArrays, DRAWARRAYS, (AND GLenum mode, GLint first, GLsizei count), (mode, first, count), &mode, GL_void_return) GL_PROCM(void, gl, DrawArrays, glDrawArrays, DRAWARRAYS, (AND GLenum mode, GLint first, GLsizei count), (mode, first, count), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWARRAYSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawArraysEXT, glDrawArraysEXT, DRAWARRAYSEXT, (AND GLenum mode, GLint first, GLsizei count), (mode, first, count), &mode, GL_void_return) GL_PROCM(void, gl, DrawArraysEXT, glDrawArraysEXT, DRAWARRAYSEXT, (AND GLenum mode, GLint first, GLsizei count), (mode, first, count), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWARRAYSINDIRECT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawArraysIndirect, glDrawArraysIndirect, DRAWARRAYSINDIRECT, (AND GLenum mode, const void *indirect), (mode, indirect), &mode, GL_void_return) GL_PROCM(void, gl, DrawArraysIndirect, glDrawArraysIndirect, DRAWARRAYSINDIRECT, (AND GLenum mode, memptr indirect), (mode, indirect), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWARRAYSINSTANCED #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawArraysInstanced, glDrawArraysInstanced, DRAWARRAYSINSTANCED, (AND GLenum mode, GLint first, GLsizei count, GLsizei instancecount), (mode, first, count, instancecount), &mode, GL_void_return) GL_PROCM(void, gl, DrawArraysInstanced, glDrawArraysInstanced, DRAWARRAYSINSTANCED, (AND GLenum mode, GLint first, GLsizei count, GLsizei instancecount), (mode, first, count, instancecount), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWARRAYSINSTANCEDARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawArraysInstancedARB, glDrawArraysInstancedARB, DRAWARRAYSINSTANCEDARB, (AND GLenum mode, GLint first, GLsizei count, GLsizei primcount), (mode, first, count, primcount), &mode, GL_void_return) GL_PROCM(void, gl, DrawArraysInstancedARB, glDrawArraysInstancedARB, DRAWARRAYSINSTANCEDARB, (AND GLenum mode, GLint first, GLsizei count, GLsizei primcount), (mode, first, count, primcount), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWARRAYSINSTANCEDBASEINSTANCE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawArraysInstancedBaseInstance, glDrawArraysInstancedBaseInstance, DRAWARRAYSINSTANCEDBASEINSTANCE, (AND GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance), (mode, first, count, instancecount, baseinstance), &mode, GL_void_return) GL_PROCM(void, gl, DrawArraysInstancedBaseInstance, glDrawArraysInstancedBaseInstance, DRAWARRAYSINSTANCEDBASEINSTANCE, (AND GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance), (mode, first, count, instancecount, baseinstance), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWARRAYSINSTANCEDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawArraysInstancedEXT, glDrawArraysInstancedEXT, DRAWARRAYSINSTANCEDEXT, (AND GLenum mode, GLint start, GLsizei count, GLsizei primcount), (mode, start, count, primcount), &mode, GL_void_return) GL_PROCM(void, gl, DrawArraysInstancedEXT, glDrawArraysInstancedEXT, DRAWARRAYSINSTANCEDEXT, (AND GLenum mode, GLint start, GLsizei count, GLsizei primcount), (mode, start, count, primcount), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawBuffer, glDrawBuffer, DRAWBUFFER, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, DrawBuffer, glDrawBuffer, DRAWBUFFER, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWBUFFERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawBuffers, glDrawBuffers, DRAWBUFFERS, (AND GLsizei n, const GLenum *bufs), (n, bufs), &n, GL_void_return) GL_PROCM(void, gl, DrawBuffers, glDrawBuffers, DRAWBUFFERS, (AND GLsizei n, memptr bufs), (n, bufs), &n, GL_void_return) #endif #endif #ifndef NO_GLDRAWBUFFERSARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawBuffersARB, glDrawBuffersARB, DRAWBUFFERSARB, (AND GLsizei n, const GLenum *bufs), (n, bufs), &n, GL_void_return) GL_PROCM(void, gl, DrawBuffersARB, glDrawBuffersARB, DRAWBUFFERSARB, (AND GLsizei n, memptr bufs), (n, bufs), &n, GL_void_return) #endif #endif #ifndef NO_GLDRAWBUFFERSATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawBuffersATI, glDrawBuffersATI, DRAWBUFFERSATI, (AND GLsizei n, const GLenum *bufs), (n, bufs), &n, GL_void_return) GL_PROCM(void, gl, DrawBuffersATI, glDrawBuffersATI, DRAWBUFFERSATI, (AND GLsizei n, memptr bufs), (n, bufs), &n, GL_void_return) #endif #endif #ifndef NO_GLDRAWCOMMANDSADDRESSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawCommandsAddressNV, glDrawCommandsAddressNV, DRAWCOMMANDSADDRESSNV, (AND GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count), (primitiveMode, indirects, sizes, count), &primitiveMode, GL_void_return) GL_PROCM(void, gl, DrawCommandsAddressNV, glDrawCommandsAddressNV, DRAWCOMMANDSADDRESSNV, (AND GLenum primitiveMode, memptr indirects, memptr sizes, GLuint count), (primitiveMode, indirects, sizes, count), &primitiveMode, GL_void_return) #endif #endif #ifndef NO_GLDRAWCOMMANDSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawCommandsNV, glDrawCommandsNV, DRAWCOMMANDSNV, (AND GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count), (primitiveMode, buffer, indirects, sizes, count), &primitiveMode, GL_void_return) GL_PROCM(void, gl, DrawCommandsNV, glDrawCommandsNV, DRAWCOMMANDSNV, (AND GLenum primitiveMode, GLuint buffer, memptr indirects, memptr sizes, GLuint count), (primitiveMode, buffer, indirects, sizes, count), &primitiveMode, GL_void_return) #endif #endif #ifndef NO_GLDRAWCOMMANDSSTATESADDRESSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawCommandsStatesAddressNV, glDrawCommandsStatesAddressNV, DRAWCOMMANDSSTATESADDRESSNV, (AND const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count), (indirects, sizes, states, fbos, count), &indirects, GL_void_return) GL_PROCM(void, gl, DrawCommandsStatesAddressNV, glDrawCommandsStatesAddressNV, DRAWCOMMANDSSTATESADDRESSNV, (AND memptr indirects, memptr sizes, memptr states, memptr fbos, GLuint count), (indirects, sizes, states, fbos, count), &indirects, GL_void_return) #endif #endif #ifndef NO_GLDRAWCOMMANDSSTATESNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawCommandsStatesNV, glDrawCommandsStatesNV, DRAWCOMMANDSSTATESNV, (AND GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count), (buffer, indirects, sizes, states, fbos, count), &buffer, GL_void_return) GL_PROCM(void, gl, DrawCommandsStatesNV, glDrawCommandsStatesNV, DRAWCOMMANDSSTATESNV, (AND GLuint buffer, memptr indirects, memptr sizes, memptr states, memptr fbos, GLuint count), (buffer, indirects, sizes, states, fbos, count), &buffer, GL_void_return) #endif #endif #ifndef NO_GLDRAWELEMENTARRAYAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawElementArrayAPPLE, glDrawElementArrayAPPLE, DRAWELEMENTARRAYAPPLE, (AND GLenum mode, GLint first, GLsizei count), (mode, first, count), &mode, GL_void_return) GL_PROCM(void, gl, DrawElementArrayAPPLE, glDrawElementArrayAPPLE, DRAWELEMENTARRAYAPPLE, (AND GLenum mode, GLint first, GLsizei count), (mode, first, count), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWELEMENTARRAYATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawElementArrayATI, glDrawElementArrayATI, DRAWELEMENTARRAYATI, (AND GLenum mode, GLsizei count), (mode, count), &mode, GL_void_return) GL_PROCM(void, gl, DrawElementArrayATI, glDrawElementArrayATI, DRAWELEMENTARRAYATI, (AND GLenum mode, GLsizei count), (mode, count), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWELEMENTS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawElements, glDrawElements, DRAWELEMENTS, (AND GLenum mode, GLsizei count, GLenum type, const GLvoid *indices), (mode, count, type, indices), &mode, GL_void_return) GL_PROCM(void, gl, DrawElements, glDrawElements, DRAWELEMENTS, (AND GLenum mode, GLsizei count, GLenum type, memptr indices), (mode, count, type, indices), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWELEMENTSBASEVERTEX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawElementsBaseVertex, glDrawElementsBaseVertex, DRAWELEMENTSBASEVERTEX, (AND GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex), (mode, count, type, indices, basevertex), &mode, GL_void_return) GL_PROCM(void, gl, DrawElementsBaseVertex, glDrawElementsBaseVertex, DRAWELEMENTSBASEVERTEX, (AND GLenum mode, GLsizei count, GLenum type, memptr indices, GLint basevertex), (mode, count, type, indices, basevertex), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWELEMENTSINDIRECT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawElementsIndirect, glDrawElementsIndirect, DRAWELEMENTSINDIRECT, (AND GLenum mode, GLenum type, const void *indirect), (mode, type, indirect), &mode, GL_void_return) GL_PROCM(void, gl, DrawElementsIndirect, glDrawElementsIndirect, DRAWELEMENTSINDIRECT, (AND GLenum mode, GLenum type, memptr indirect), (mode, type, indirect), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWELEMENTSINSTANCED #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawElementsInstanced, glDrawElementsInstanced, DRAWELEMENTSINSTANCED, (AND GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount), (mode, count, type, indices, instancecount), &mode, GL_void_return) GL_PROCM(void, gl, DrawElementsInstanced, glDrawElementsInstanced, DRAWELEMENTSINSTANCED, (AND GLenum mode, GLsizei count, GLenum type, memptr indices, GLsizei instancecount), (mode, count, type, indices, instancecount), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWELEMENTSINSTANCEDARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawElementsInstancedARB, glDrawElementsInstancedARB, DRAWELEMENTSINSTANCEDARB, (AND GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount), (mode, count, type, indices, primcount), &mode, GL_void_return) GL_PROCM(void, gl, DrawElementsInstancedARB, glDrawElementsInstancedARB, DRAWELEMENTSINSTANCEDARB, (AND GLenum mode, GLsizei count, GLenum type, memptr indices, GLsizei primcount), (mode, count, type, indices, primcount), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWELEMENTSINSTANCEDBASEINSTANCE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawElementsInstancedBaseInstance, glDrawElementsInstancedBaseInstance, DRAWELEMENTSINSTANCEDBASEINSTANCE, (AND GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance), (mode, count, type, indices, instancecount, baseinstance), &mode, GL_void_return) GL_PROCM(void, gl, DrawElementsInstancedBaseInstance, glDrawElementsInstancedBaseInstance, DRAWELEMENTSINSTANCEDBASEINSTANCE, (AND GLenum mode, GLsizei count, GLenum type, memptr indices, GLsizei instancecount, GLuint baseinstance), (mode, count, type, indices, instancecount, baseinstance), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWELEMENTSINSTANCEDBASEVERTEX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawElementsInstancedBaseVertex, glDrawElementsInstancedBaseVertex, DRAWELEMENTSINSTANCEDBASEVERTEX, (AND GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex), (mode, count, type, indices, instancecount, basevertex), &mode, GL_void_return) GL_PROCM(void, gl, DrawElementsInstancedBaseVertex, glDrawElementsInstancedBaseVertex, DRAWELEMENTSINSTANCEDBASEVERTEX, (AND GLenum mode, GLsizei count, GLenum type, memptr indices, GLsizei instancecount, GLint basevertex), (mode, count, type, indices, instancecount, basevertex), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawElementsInstancedBaseVertexBaseInstance, glDrawElementsInstancedBaseVertexBaseInstance, DRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE, (AND GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance), (mode, count, type, indices, instancecount, basevertex, baseinstance), &mode, GL_void_return) GL_PROCM(void, gl, DrawElementsInstancedBaseVertexBaseInstance, glDrawElementsInstancedBaseVertexBaseInstance, DRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE, (AND GLenum mode, GLsizei count, GLenum type, memptr indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance), (mode, count, type, indices, instancecount, basevertex, baseinstance), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWELEMENTSINSTANCEDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawElementsInstancedEXT, glDrawElementsInstancedEXT, DRAWELEMENTSINSTANCEDEXT, (AND GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount), (mode, count, type, indices, primcount), &mode, GL_void_return) GL_PROCM(void, gl, DrawElementsInstancedEXT, glDrawElementsInstancedEXT, DRAWELEMENTSINSTANCEDEXT, (AND GLenum mode, GLsizei count, GLenum type, memptr indices, GLsizei primcount), (mode, count, type, indices, primcount), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWMESHARRAYSSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawMeshArraysSUN, glDrawMeshArraysSUN, DRAWMESHARRAYSSUN, (AND GLenum mode, GLint first, GLsizei count, GLsizei width), (mode, first, count, width), &mode, GL_void_return) GL_PROCM(void, gl, DrawMeshArraysSUN, glDrawMeshArraysSUN, DRAWMESHARRAYSSUN, (AND GLenum mode, GLint first, GLsizei count, GLsizei width), (mode, first, count, width), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWPIXELS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawPixels, glDrawPixels, DRAWPIXELS, (AND GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels), (width, height, format, type, pixels), &width, GL_void_return) GL_PROCM(void, gl, DrawPixels, glDrawPixels, DRAWPIXELS, (AND GLsizei width, GLsizei height, GLenum format, GLenum type, memptr pixels), (width, height, format, type, pixels), &width, GL_void_return) #endif #endif #ifndef NO_GLDRAWRANGEELEMENTARRAYAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawRangeElementArrayAPPLE, glDrawRangeElementArrayAPPLE, DRAWRANGEELEMENTARRAYAPPLE, (AND GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count), (mode, start, end, first, count), &mode, GL_void_return) GL_PROCM(void, gl, DrawRangeElementArrayAPPLE, glDrawRangeElementArrayAPPLE, DRAWRANGEELEMENTARRAYAPPLE, (AND GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count), (mode, start, end, first, count), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWRANGEELEMENTARRAYATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawRangeElementArrayATI, glDrawRangeElementArrayATI, DRAWRANGEELEMENTARRAYATI, (AND GLenum mode, GLuint start, GLuint end, GLsizei count), (mode, start, end, count), &mode, GL_void_return) GL_PROCM(void, gl, DrawRangeElementArrayATI, glDrawRangeElementArrayATI, DRAWRANGEELEMENTARRAYATI, (AND GLenum mode, GLuint start, GLuint end, GLsizei count), (mode, start, end, count), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWRANGEELEMENTS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawRangeElements, glDrawRangeElements, DRAWRANGEELEMENTS, (AND GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices), (mode, start, end, count, type, indices), &mode, GL_void_return) GL_PROCM(void, gl, DrawRangeElements, glDrawRangeElements, DRAWRANGEELEMENTS, (AND GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, memptr indices), (mode, start, end, count, type, indices), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWRANGEELEMENTSBASEVERTEX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawRangeElementsBaseVertex, glDrawRangeElementsBaseVertex, DRAWRANGEELEMENTSBASEVERTEX, (AND GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex), (mode, start, end, count, type, indices, basevertex), &mode, GL_void_return) GL_PROCM(void, gl, DrawRangeElementsBaseVertex, glDrawRangeElementsBaseVertex, DRAWRANGEELEMENTSBASEVERTEX, (AND GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, memptr indices, GLint basevertex), (mode, start, end, count, type, indices, basevertex), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWRANGEELEMENTSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawRangeElementsEXT, glDrawRangeElementsEXT, DRAWRANGEELEMENTSEXT, (AND GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices), (mode, start, end, count, type, indices), &mode, GL_void_return) GL_PROCM(void, gl, DrawRangeElementsEXT, glDrawRangeElementsEXT, DRAWRANGEELEMENTSEXT, (AND GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, memptr indices), (mode, start, end, count, type, indices), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWTEXTURENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawTextureNV, glDrawTextureNV, DRAWTEXTURENV, (AND GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1), (texture, sampler, x0, y0, x1, y1, z, s0, t0, s1, t1), &texture, GL_void_return) GL_PROCM(void, gl, DrawTextureNV, glDrawTextureNV, DRAWTEXTURENV, (AND GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1), (texture, sampler, x0, y0, x1, y1, z, s0, t0, s1, t1), &texture, GL_void_return) #endif #endif #ifndef NO_GLDRAWTRANSFORMFEEDBACK #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawTransformFeedback, glDrawTransformFeedback, DRAWTRANSFORMFEEDBACK, (AND GLenum mode, GLuint id), (mode, id), &mode, GL_void_return) GL_PROCM(void, gl, DrawTransformFeedback, glDrawTransformFeedback, DRAWTRANSFORMFEEDBACK, (AND GLenum mode, GLuint id), (mode, id), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWTRANSFORMFEEDBACKINSTANCED #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawTransformFeedbackInstanced, glDrawTransformFeedbackInstanced, DRAWTRANSFORMFEEDBACKINSTANCED, (AND GLenum mode, GLuint id, GLsizei instancecount), (mode, id, instancecount), &mode, GL_void_return) GL_PROCM(void, gl, DrawTransformFeedbackInstanced, glDrawTransformFeedbackInstanced, DRAWTRANSFORMFEEDBACKINSTANCED, (AND GLenum mode, GLuint id, GLsizei instancecount), (mode, id, instancecount), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWTRANSFORMFEEDBACKNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawTransformFeedbackNV, glDrawTransformFeedbackNV, DRAWTRANSFORMFEEDBACKNV, (AND GLenum mode, GLuint id), (mode, id), &mode, GL_void_return) GL_PROCM(void, gl, DrawTransformFeedbackNV, glDrawTransformFeedbackNV, DRAWTRANSFORMFEEDBACKNV, (AND GLenum mode, GLuint id), (mode, id), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWTRANSFORMFEEDBACKSTREAM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawTransformFeedbackStream, glDrawTransformFeedbackStream, DRAWTRANSFORMFEEDBACKSTREAM, (AND GLenum mode, GLuint id, GLuint stream), (mode, id, stream), &mode, GL_void_return) GL_PROCM(void, gl, DrawTransformFeedbackStream, glDrawTransformFeedbackStream, DRAWTRANSFORMFEEDBACKSTREAM, (AND GLenum mode, GLuint id, GLuint stream), (mode, id, stream), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWTRANSFORMFEEDBACKSTREAMINSTANCED #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawTransformFeedbackStreamInstanced, glDrawTransformFeedbackStreamInstanced, DRAWTRANSFORMFEEDBACKSTREAMINSTANCED, (AND GLenum mode, GLuint id, GLuint stream, GLsizei instancecount), (mode, id, stream, instancecount), &mode, GL_void_return) GL_PROCM(void, gl, DrawTransformFeedbackStreamInstanced, glDrawTransformFeedbackStreamInstanced, DRAWTRANSFORMFEEDBACKSTREAMINSTANCED, (AND GLenum mode, GLuint id, GLuint stream, GLsizei instancecount), (mode, id, stream, instancecount), &mode, GL_void_return) #endif #endif #ifndef NO_GLDRAWVKIMAGENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, DrawVkImageNV, glDrawVkImageNV, DRAWVKIMAGENV, (AND GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1), (vkImage, sampler, x0, y0, x1, y1, z, s0, t0, s1, t1), &vkImage, GL_void_return) GL_PROCM(void, gl, DrawVkImageNV, glDrawVkImageNV, DRAWVKIMAGENV, (AND GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1), (vkImage, sampler, x0, y0, x1, y1, z, s0, t0, s1, t1), &vkImage, GL_void_return) #endif #endif #ifndef NO_GLEDGEFLAG GL_PROC(void, gl, EdgeFlag, glEdgeFlag, EDGEFLAG, (AND GLboolean32 flag), (flag), &flag, GL_void_return) GL_PROCM(void, gl, EdgeFlag, glEdgeFlag, EDGEFLAG, (AND GLboolean32 flag), (flag), &flag, GL_void_return) #endif #ifndef NO_GLEDGEFLAGFORMATNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EdgeFlagFormatNV, glEdgeFlagFormatNV, EDGEFLAGFORMATNV, (AND GLsizei stride), (stride), &stride, GL_void_return) GL_PROCM(void, gl, EdgeFlagFormatNV, glEdgeFlagFormatNV, EDGEFLAGFORMATNV, (AND GLsizei stride), (stride), &stride, GL_void_return) #endif #endif #ifndef NO_GLEDGEFLAGPOINTER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EdgeFlagPointer, glEdgeFlagPointer, EDGEFLAGPOINTER, (AND GLsizei stride, const GLvoid *pointer), (stride, pointer), &stride, GL_void_return) GL_PROCM(void, gl, EdgeFlagPointer, glEdgeFlagPointer, EDGEFLAGPOINTER, (AND GLsizei stride, memptr pointer), (stride, pointer), &stride, GL_void_return) #endif #endif #ifndef NO_GLEDGEFLAGPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EdgeFlagPointerEXT, glEdgeFlagPointerEXT, EDGEFLAGPOINTEREXT, (AND GLsizei stride, GLsizei count, const GLboolean *pointer), (stride, count, pointer), &stride, GL_void_return) GL_PROCM(void, gl, EdgeFlagPointerEXT, glEdgeFlagPointerEXT, EDGEFLAGPOINTEREXT, (AND GLsizei stride, GLsizei count, memptr pointer), (stride, count, pointer), &stride, GL_void_return) #endif #endif #ifndef NO_GLEDGEFLAGPOINTERLISTIBM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EdgeFlagPointerListIBM, glEdgeFlagPointerListIBM, EDGEFLAGPOINTERLISTIBM, (AND GLint stride, const GLboolean * *pointer, GLint ptrstride), (stride, pointer, ptrstride), &stride, GL_void_return) GL_PROCM(void, gl, EdgeFlagPointerListIBM, glEdgeFlagPointerListIBM, EDGEFLAGPOINTERLISTIBM, (AND GLint stride, memptr pointer, GLint ptrstride), (stride, pointer, ptrstride), &stride, GL_void_return) #endif #endif #ifndef NO_GLEDGEFLAGV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EdgeFlagv, glEdgeFlagv, EDGEFLAGV, (AND const GLboolean *flag), (flag), &flag, GL_void_return) GL_PROCM(void, gl, EdgeFlagv, glEdgeFlagv, EDGEFLAGV, (AND memptr flag), (flag), &flag, GL_void_return) #endif #endif #ifndef NO_GLELEMENTPOINTERAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ElementPointerAPPLE, glElementPointerAPPLE, ELEMENTPOINTERAPPLE, (AND GLenum type, const void *pointer), (type, pointer), &type, GL_void_return) GL_PROCM(void, gl, ElementPointerAPPLE, glElementPointerAPPLE, ELEMENTPOINTERAPPLE, (AND GLenum type, memptr pointer), (type, pointer), &type, GL_void_return) #endif #endif #ifndef NO_GLELEMENTPOINTERATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ElementPointerATI, glElementPointerATI, ELEMENTPOINTERATI, (AND GLenum type, const void *pointer), (type, pointer), &type, GL_void_return) GL_PROCM(void, gl, ElementPointerATI, glElementPointerATI, ELEMENTPOINTERATI, (AND GLenum type, memptr pointer), (type, pointer), &type, GL_void_return) #endif #endif #ifndef NO_GLENABLE GL_PROC(void, gl, Enable, glEnable, ENABLE, (AND GLenum cap), (cap), &cap, GL_void_return) GL_PROCM(void, gl, Enable, glEnable, ENABLE, (AND GLenum cap), (cap), &cap, GL_void_return) #endif #ifndef NO_GLENABLECLIENTSTATE GL_PROC(void, gl, EnableClientState, glEnableClientState, ENABLECLIENTSTATE, (AND GLenum array), (array), &array, GL_void_return) GL_PROCM(void, gl, EnableClientState, glEnableClientState, ENABLECLIENTSTATE, (AND GLenum array), (array), &array, GL_void_return) #endif #ifndef NO_GLENABLECLIENTSTATEINDEXEDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EnableClientStateIndexedEXT, glEnableClientStateIndexedEXT, ENABLECLIENTSTATEINDEXEDEXT, (AND GLenum array, GLuint index), (array, index), &array, GL_void_return) GL_PROCM(void, gl, EnableClientStateIndexedEXT, glEnableClientStateIndexedEXT, ENABLECLIENTSTATEINDEXEDEXT, (AND GLenum array, GLuint index), (array, index), &array, GL_void_return) #endif #endif #ifndef NO_GLENABLECLIENTSTATEIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EnableClientStateiEXT, glEnableClientStateiEXT, ENABLECLIENTSTATEIEXT, (AND GLenum array, GLuint index), (array, index), &array, GL_void_return) GL_PROCM(void, gl, EnableClientStateiEXT, glEnableClientStateiEXT, ENABLECLIENTSTATEIEXT, (AND GLenum array, GLuint index), (array, index), &array, GL_void_return) #endif #endif #ifndef NO_GLENABLEINDEXEDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EnableIndexedEXT, glEnableIndexedEXT, ENABLEINDEXEDEXT, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) GL_PROCM(void, gl, EnableIndexedEXT, glEnableIndexedEXT, ENABLEINDEXEDEXT, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) #endif #endif #ifndef NO_GLENABLETRACEMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EnableTraceMESA, glEnableTraceMESA, ENABLETRACEMESA, (AND GLbitfield mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, EnableTraceMESA, glEnableTraceMESA, ENABLETRACEMESA, (AND GLbitfield mask), (mask), &mask, GL_void_return) #endif #endif #ifndef NO_GLENABLEVARIANTCLIENTSTATEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EnableVariantClientStateEXT, glEnableVariantClientStateEXT, ENABLEVARIANTCLIENTSTATEEXT, (AND GLuint id), (id), &id, GL_void_return) GL_PROCM(void, gl, EnableVariantClientStateEXT, glEnableVariantClientStateEXT, ENABLEVARIANTCLIENTSTATEEXT, (AND GLuint id), (id), &id, GL_void_return) #endif #endif #ifndef NO_GLENABLEVERTEXARRAYATTRIB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EnableVertexArrayAttrib, glEnableVertexArrayAttrib, ENABLEVERTEXARRAYATTRIB, (AND GLuint vaobj, GLuint index), (vaobj, index), &vaobj, GL_void_return) GL_PROCM(void, gl, EnableVertexArrayAttrib, glEnableVertexArrayAttrib, ENABLEVERTEXARRAYATTRIB, (AND GLuint vaobj, GLuint index), (vaobj, index), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLENABLEVERTEXARRAYATTRIBEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EnableVertexArrayAttribEXT, glEnableVertexArrayAttribEXT, ENABLEVERTEXARRAYATTRIBEXT, (AND GLuint vaobj, GLuint index), (vaobj, index), &vaobj, GL_void_return) GL_PROCM(void, gl, EnableVertexArrayAttribEXT, glEnableVertexArrayAttribEXT, ENABLEVERTEXARRAYATTRIBEXT, (AND GLuint vaobj, GLuint index), (vaobj, index), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLENABLEVERTEXARRAYEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EnableVertexArrayEXT, glEnableVertexArrayEXT, ENABLEVERTEXARRAYEXT, (AND GLuint vaobj, GLenum array), (vaobj, array), &vaobj, GL_void_return) GL_PROCM(void, gl, EnableVertexArrayEXT, glEnableVertexArrayEXT, ENABLEVERTEXARRAYEXT, (AND GLuint vaobj, GLenum array), (vaobj, array), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLENABLEVERTEXATTRIBAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EnableVertexAttribAPPLE, glEnableVertexAttribAPPLE, ENABLEVERTEXATTRIBAPPLE, (AND GLuint index, GLenum pname), (index, pname), &index, GL_void_return) GL_PROCM(void, gl, EnableVertexAttribAPPLE, glEnableVertexAttribAPPLE, ENABLEVERTEXATTRIBAPPLE, (AND GLuint index, GLenum pname), (index, pname), &index, GL_void_return) #endif #endif #ifndef NO_GLENABLEVERTEXATTRIBARRAY #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EnableVertexAttribArray, glEnableVertexAttribArray, ENABLEVERTEXATTRIBARRAY, (AND GLuint index), (index), &index, GL_void_return) GL_PROCM(void, gl, EnableVertexAttribArray, glEnableVertexAttribArray, ENABLEVERTEXATTRIBARRAY, (AND GLuint index), (index), &index, GL_void_return) #endif #endif #ifndef NO_GLENABLEVERTEXATTRIBARRAYARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, ENABLEVERTEXATTRIBARRAYARB, (AND GLuint index), (index), &index, GL_void_return) GL_PROCM(void, gl, EnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, ENABLEVERTEXATTRIBARRAYARB, (AND GLuint index), (index), &index, GL_void_return) #endif #endif #ifndef NO_GLENABLEI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Enablei, glEnablei, ENABLEI, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) GL_PROCM(void, gl, Enablei, glEnablei, ENABLEI, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) #endif #endif #ifndef NO_GLEND GL_PROC(void, gl, End, glEnd, END, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, End, glEnd, END, (NOTHING), (), NULL, GL_void_return) #endif #ifndef NO_GLENDCONDITIONALRENDER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndConditionalRender, glEndConditionalRender, ENDCONDITIONALRENDER, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, EndConditionalRender, glEndConditionalRender, ENDCONDITIONALRENDER, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLENDCONDITIONALRENDERNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndConditionalRenderNV, glEndConditionalRenderNV, ENDCONDITIONALRENDERNV, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, EndConditionalRenderNV, glEndConditionalRenderNV, ENDCONDITIONALRENDERNV, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLENDCONDITIONALRENDERNVX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndConditionalRenderNVX, glEndConditionalRenderNVX, ENDCONDITIONALRENDERNVX, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, EndConditionalRenderNVX, glEndConditionalRenderNVX, ENDCONDITIONALRENDERNVX, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLENDFRAGMENTSHADERATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndFragmentShaderATI, glEndFragmentShaderATI, ENDFRAGMENTSHADERATI, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, EndFragmentShaderATI, glEndFragmentShaderATI, ENDFRAGMENTSHADERATI, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLENDLIST GL_PROC(void, gl, EndList, glEndList, ENDLIST, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, EndList, glEndList, ENDLIST, (NOTHING), (), NULL, GL_void_return) #endif #ifndef NO_GLENDOCCLUSIONQUERYNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndOcclusionQueryNV, glEndOcclusionQueryNV, ENDOCCLUSIONQUERYNV, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, EndOcclusionQueryNV, glEndOcclusionQueryNV, ENDOCCLUSIONQUERYNV, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLENDPERFMONITORAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndPerfMonitorAMD, glEndPerfMonitorAMD, ENDPERFMONITORAMD, (AND GLuint monitor), (monitor), &monitor, GL_void_return) GL_PROCM(void, gl, EndPerfMonitorAMD, glEndPerfMonitorAMD, ENDPERFMONITORAMD, (AND GLuint monitor), (monitor), &monitor, GL_void_return) #endif #endif #ifndef NO_GLENDPERFQUERYINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndPerfQueryINTEL, glEndPerfQueryINTEL, ENDPERFQUERYINTEL, (AND GLuint queryHandle), (queryHandle), &queryHandle, GL_void_return) GL_PROCM(void, gl, EndPerfQueryINTEL, glEndPerfQueryINTEL, ENDPERFQUERYINTEL, (AND GLuint queryHandle), (queryHandle), &queryHandle, GL_void_return) #endif #endif #ifndef NO_GLENDQUERY #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndQuery, glEndQuery, ENDQUERY, (AND GLenum target), (target), &target, GL_void_return) GL_PROCM(void, gl, EndQuery, glEndQuery, ENDQUERY, (AND GLenum target), (target), &target, GL_void_return) #endif #endif #ifndef NO_GLENDQUERYARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndQueryARB, glEndQueryARB, ENDQUERYARB, (AND GLenum target), (target), &target, GL_void_return) GL_PROCM(void, gl, EndQueryARB, glEndQueryARB, ENDQUERYARB, (AND GLenum target), (target), &target, GL_void_return) #endif #endif #ifndef NO_GLENDQUERYINDEXED #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndQueryIndexed, glEndQueryIndexed, ENDQUERYINDEXED, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) GL_PROCM(void, gl, EndQueryIndexed, glEndQueryIndexed, ENDQUERYINDEXED, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) #endif #endif #ifndef NO_GLENDTRACEMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndTraceMESA, glEndTraceMESA, ENDTRACEMESA, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, EndTraceMESA, glEndTraceMESA, ENDTRACEMESA, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLENDTRANSFORMFEEDBACK #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndTransformFeedback, glEndTransformFeedback, ENDTRANSFORMFEEDBACK, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, EndTransformFeedback, glEndTransformFeedback, ENDTRANSFORMFEEDBACK, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLENDTRANSFORMFEEDBACKEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndTransformFeedbackEXT, glEndTransformFeedbackEXT, ENDTRANSFORMFEEDBACKEXT, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, EndTransformFeedbackEXT, glEndTransformFeedbackEXT, ENDTRANSFORMFEEDBACKEXT, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLENDTRANSFORMFEEDBACKNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndTransformFeedbackNV, glEndTransformFeedbackNV, ENDTRANSFORMFEEDBACKNV, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, EndTransformFeedbackNV, glEndTransformFeedbackNV, ENDTRANSFORMFEEDBACKNV, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLENDVERTEXSHADEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndVertexShaderEXT, glEndVertexShaderEXT, ENDVERTEXSHADEREXT, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, EndVertexShaderEXT, glEndVertexShaderEXT, ENDVERTEXSHADEREXT, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLENDVIDEOCAPTURENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EndVideoCaptureNV, glEndVideoCaptureNV, ENDVIDEOCAPTURENV, (AND GLuint video_capture_slot), (video_capture_slot), &video_capture_slot, GL_void_return) GL_PROCM(void, gl, EndVideoCaptureNV, glEndVideoCaptureNV, ENDVIDEOCAPTURENV, (AND GLuint video_capture_slot), (video_capture_slot), &video_capture_slot, GL_void_return) #endif #endif #ifndef NO_GLEVALCOORD1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalCoord1d, glEvalCoord1d, EVALCOORD1D, (AND GLdouble u), (u), &u, GL_void_return) GL_PROCM(void, gl, EvalCoord1d, glEvalCoord1d, EVALCOORD1D, (AND GLdouble u), (u), &u, GL_void_return) #endif #endif #ifndef NO_GLEVALCOORD1DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalCoord1dv, glEvalCoord1dv, EVALCOORD1DV, (AND const GLdouble *u), (u), &u, GL_void_return) GL_PROCM(void, gl, EvalCoord1dv, glEvalCoord1dv, EVALCOORD1DV, (AND memptr u), (u), &u, GL_void_return) #endif #endif #ifndef NO_GLEVALCOORD1F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalCoord1f, glEvalCoord1f, EVALCOORD1F, (AND GLfloat u), (u), &u, GL_void_return) GL_PROCM(void, gl, EvalCoord1f, glEvalCoord1f, EVALCOORD1F, (AND GLfloat u), (u), &u, GL_void_return) #endif #endif #ifndef NO_GLEVALCOORD1FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalCoord1fv, glEvalCoord1fv, EVALCOORD1FV, (AND const GLfloat *u), (u), &u, GL_void_return) GL_PROCM(void, gl, EvalCoord1fv, glEvalCoord1fv, EVALCOORD1FV, (AND memptr u), (u), &u, GL_void_return) #endif #endif #ifndef NO_GLEVALCOORD1XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalCoord1xOES, glEvalCoord1xOES, EVALCOORD1XOES, (AND GLfixed u), (u), &u, GL_void_return) GL_PROCM(void, gl, EvalCoord1xOES, glEvalCoord1xOES, EVALCOORD1XOES, (AND GLfixed u), (u), &u, GL_void_return) #endif #endif #ifndef NO_GLEVALCOORD1XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalCoord1xvOES, glEvalCoord1xvOES, EVALCOORD1XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, EvalCoord1xvOES, glEvalCoord1xvOES, EVALCOORD1XVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLEVALCOORD2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalCoord2d, glEvalCoord2d, EVALCOORD2D, (AND GLdouble u, GLdouble v), (u, v), &u, GL_void_return) GL_PROCM(void, gl, EvalCoord2d, glEvalCoord2d, EVALCOORD2D, (AND GLdouble u, GLdouble v), (u, v), &u, GL_void_return) #endif #endif #ifndef NO_GLEVALCOORD2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalCoord2dv, glEvalCoord2dv, EVALCOORD2DV, (AND const GLdouble *u), (u), &u, GL_void_return) GL_PROCM(void, gl, EvalCoord2dv, glEvalCoord2dv, EVALCOORD2DV, (AND memptr u), (u), &u, GL_void_return) #endif #endif #ifndef NO_GLEVALCOORD2F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalCoord2f, glEvalCoord2f, EVALCOORD2F, (AND GLfloat u, GLfloat v), (u, v), &u, GL_void_return) GL_PROCM(void, gl, EvalCoord2f, glEvalCoord2f, EVALCOORD2F, (AND GLfloat u, GLfloat v), (u, v), &u, GL_void_return) #endif #endif #ifndef NO_GLEVALCOORD2FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalCoord2fv, glEvalCoord2fv, EVALCOORD2FV, (AND const GLfloat *u), (u), &u, GL_void_return) GL_PROCM(void, gl, EvalCoord2fv, glEvalCoord2fv, EVALCOORD2FV, (AND memptr u), (u), &u, GL_void_return) #endif #endif #ifndef NO_GLEVALCOORD2XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalCoord2xOES, glEvalCoord2xOES, EVALCOORD2XOES, (AND GLfixed u, GLfixed v), (u, v), &u, GL_void_return) GL_PROCM(void, gl, EvalCoord2xOES, glEvalCoord2xOES, EVALCOORD2XOES, (AND GLfixed u, GLfixed v), (u, v), &u, GL_void_return) #endif #endif #ifndef NO_GLEVALCOORD2XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalCoord2xvOES, glEvalCoord2xvOES, EVALCOORD2XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, EvalCoord2xvOES, glEvalCoord2xvOES, EVALCOORD2XVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLEVALMAPSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalMapsNV, glEvalMapsNV, EVALMAPSNV, (AND GLenum target, GLenum mode), (target, mode), &target, GL_void_return) GL_PROCM(void, gl, EvalMapsNV, glEvalMapsNV, EVALMAPSNV, (AND GLenum target, GLenum mode), (target, mode), &target, GL_void_return) #endif #endif #ifndef NO_GLEVALMESH1 #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalMesh1, glEvalMesh1, EVALMESH1, (AND GLenum mode, GLint i1, GLint i2), (mode, i1, i2), &mode, GL_void_return) GL_PROCM(void, gl, EvalMesh1, glEvalMesh1, EVALMESH1, (AND GLenum mode, GLint i1, GLint i2), (mode, i1, i2), &mode, GL_void_return) #endif #endif #ifndef NO_GLEVALMESH2 #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalMesh2, glEvalMesh2, EVALMESH2, (AND GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2), (mode, i1, i2, j1, j2), &mode, GL_void_return) GL_PROCM(void, gl, EvalMesh2, glEvalMesh2, EVALMESH2, (AND GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2), (mode, i1, i2, j1, j2), &mode, GL_void_return) #endif #endif #ifndef NO_GLEVALPOINT1 #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalPoint1, glEvalPoint1, EVALPOINT1, (AND GLint i), (i), &i, GL_void_return) GL_PROCM(void, gl, EvalPoint1, glEvalPoint1, EVALPOINT1, (AND GLint i), (i), &i, GL_void_return) #endif #endif #ifndef NO_GLEVALPOINT2 #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvalPoint2, glEvalPoint2, EVALPOINT2, (AND GLint i, GLint j), (i, j), &i, GL_void_return) GL_PROCM(void, gl, EvalPoint2, glEvalPoint2, EVALPOINT2, (AND GLint i, GLint j), (i, j), &i, GL_void_return) #endif #endif #ifndef NO_GLEVALUATEDEPTHVALUESARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, EvaluateDepthValuesARB, glEvaluateDepthValuesARB, EVALUATEDEPTHVALUESARB, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, EvaluateDepthValuesARB, glEvaluateDepthValuesARB, EVALUATEDEPTHVALUESARB, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLEXECUTEPROGRAMNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ExecuteProgramNV, glExecuteProgramNV, EXECUTEPROGRAMNV, (AND GLenum target, GLuint id, const GLfloat *params), (target, id, params), &target, GL_void_return) GL_PROCM(void, gl, ExecuteProgramNV, glExecuteProgramNV, EXECUTEPROGRAMNV, (AND GLenum target, GLuint id, memptr params), (target, id, params), &target, GL_void_return) #endif #endif #ifndef NO_GLEXTRACTCOMPONENTEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ExtractComponentEXT, glExtractComponentEXT, EXTRACTCOMPONENTEXT, (AND GLuint res, GLuint src, GLuint num), (res, src, num), &res, GL_void_return) GL_PROCM(void, gl, ExtractComponentEXT, glExtractComponentEXT, EXTRACTCOMPONENTEXT, (AND GLuint res, GLuint src, GLuint num), (res, src, num), &res, GL_void_return) #endif #endif #ifndef NO_GLFEEDBACKBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FeedbackBuffer, glFeedbackBuffer, FEEDBACKBUFFER, (AND GLsizei size, GLenum type, GLfloat *buffer), (size, type, buffer), &size, GL_void_return) GL_PROCM(void, gl, FeedbackBuffer, glFeedbackBuffer, FEEDBACKBUFFER, (AND GLsizei size, GLenum type, memptr buffer), (size, type, buffer), &size, GL_void_return) #endif #endif #ifndef NO_GLFEEDBACKBUFFERXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FeedbackBufferxOES, glFeedbackBufferxOES, FEEDBACKBUFFERXOES, (AND GLsizei n, GLenum type, const GLfixed *buffer), (n, type, buffer), &n, GL_void_return) GL_PROCM(void, gl, FeedbackBufferxOES, glFeedbackBufferxOES, FEEDBACKBUFFERXOES, (AND GLsizei n, GLenum type, memptr buffer), (n, type, buffer), &n, GL_void_return) #endif #endif #ifndef NO_GLFENCESYNC #if !defined(TINYGL_ONLY) GL_PROC(GLsync, gl, FenceSync, glFenceSync, FENCESYNC, (AND GLenum condition, GLbitfield flags), (condition, flags), &condition, return (GLsync)) GL_PROCM(GLsync, gl, FenceSync, glFenceSync, FENCESYNC, (AND GLenum condition, GLbitfield flags), (condition, flags), &condition, return (GLsync)) #endif #endif #ifndef NO_GLFINALCOMBINERINPUTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FinalCombinerInputNV, glFinalCombinerInputNV, FINALCOMBINERINPUTNV, (AND GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage), (variable, input, mapping, componentUsage), &variable, GL_void_return) GL_PROCM(void, gl, FinalCombinerInputNV, glFinalCombinerInputNV, FINALCOMBINERINPUTNV, (AND GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage), (variable, input, mapping, componentUsage), &variable, GL_void_return) #endif #endif #ifndef NO_GLFINISH #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Finish, glFinish, FINISH, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, Finish, glFinish, FINISH, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLFINISHASYNCSGIX #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, FinishAsyncSGIX, glFinishAsyncSGIX, FINISHASYNCSGIX, (AND GLuint *markerp), (markerp), &markerp, return (GLint)) GL_PROCM(GLint, gl, FinishAsyncSGIX, glFinishAsyncSGIX, FINISHASYNCSGIX, (AND memptr markerp), (markerp), &markerp, return (GLint)) #endif #endif #ifndef NO_GLFINISHFENCEAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FinishFenceAPPLE, glFinishFenceAPPLE, FINISHFENCEAPPLE, (AND GLuint fence), (fence), &fence, GL_void_return) GL_PROCM(void, gl, FinishFenceAPPLE, glFinishFenceAPPLE, FINISHFENCEAPPLE, (AND GLuint fence), (fence), &fence, GL_void_return) #endif #endif #ifndef NO_GLFINISHFENCENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FinishFenceNV, glFinishFenceNV, FINISHFENCENV, (AND GLuint fence), (fence), &fence, GL_void_return) GL_PROCM(void, gl, FinishFenceNV, glFinishFenceNV, FINISHFENCENV, (AND GLuint fence), (fence), &fence, GL_void_return) #endif #endif #ifndef NO_GLFINISHOBJECTAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FinishObjectAPPLE, glFinishObjectAPPLE, FINISHOBJECTAPPLE, (AND GLenum object, GLuint name), (object, name), &object, GL_void_return) GL_PROCM(void, gl, FinishObjectAPPLE, glFinishObjectAPPLE, FINISHOBJECTAPPLE, (AND GLenum object, GLuint name), (object, name), &object, GL_void_return) #endif #endif #ifndef NO_GLFINISHRENDERAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FinishRenderAPPLE, glFinishRenderAPPLE, FINISHRENDERAPPLE, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, FinishRenderAPPLE, glFinishRenderAPPLE, FINISHRENDERAPPLE, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLFINISHTEXTURESUNX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FinishTextureSUNX, glFinishTextureSUNX, FINISHTEXTURESUNX, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, FinishTextureSUNX, glFinishTextureSUNX, FINISHTEXTURESUNX, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLFLUSH GL_PROC(void, gl, Flush, glFlush, FLUSH, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, Flush, glFlush, FLUSH, (NOTHING), (), NULL, GL_void_return) #endif #ifndef NO_GLFLUSHMAPPEDBUFFERRANGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FlushMappedBufferRange, glFlushMappedBufferRange, FLUSHMAPPEDBUFFERRANGE, (AND GLenum target, GLintptr offset, GLsizeiptr length), (target, offset, length), &target, GL_void_return) GL_PROCM(void, gl, FlushMappedBufferRange, glFlushMappedBufferRange, FLUSHMAPPEDBUFFERRANGE, (AND GLenum target, GLintptr offset, GLsizeiptr length), (target, offset, length), &target, GL_void_return) #endif #endif #ifndef NO_GLFLUSHMAPPEDBUFFERRANGEAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FlushMappedBufferRangeAPPLE, glFlushMappedBufferRangeAPPLE, FLUSHMAPPEDBUFFERRANGEAPPLE, (AND GLenum target, GLintptr offset, GLsizeiptr size), (target, offset, size), &target, GL_void_return) GL_PROCM(void, gl, FlushMappedBufferRangeAPPLE, glFlushMappedBufferRangeAPPLE, FLUSHMAPPEDBUFFERRANGEAPPLE, (AND GLenum target, GLintptr offset, GLsizeiptr size), (target, offset, size), &target, GL_void_return) #endif #endif #ifndef NO_GLFLUSHMAPPEDNAMEDBUFFERRANGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FlushMappedNamedBufferRange, glFlushMappedNamedBufferRange, FLUSHMAPPEDNAMEDBUFFERRANGE, (AND GLuint buffer, GLintptr offset, GLsizeiptr length), (buffer, offset, length), &buffer, GL_void_return) GL_PROCM(void, gl, FlushMappedNamedBufferRange, glFlushMappedNamedBufferRange, FLUSHMAPPEDNAMEDBUFFERRANGE, (AND GLuint buffer, GLintptr offset, GLsizeiptr length), (buffer, offset, length), &buffer, GL_void_return) #endif #endif #ifndef NO_GLFLUSHMAPPEDNAMEDBUFFERRANGEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FlushMappedNamedBufferRangeEXT, glFlushMappedNamedBufferRangeEXT, FLUSHMAPPEDNAMEDBUFFERRANGEEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr length), (buffer, offset, length), &buffer, GL_void_return) GL_PROCM(void, gl, FlushMappedNamedBufferRangeEXT, glFlushMappedNamedBufferRangeEXT, FLUSHMAPPEDNAMEDBUFFERRANGEEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr length), (buffer, offset, length), &buffer, GL_void_return) #endif #endif #ifndef NO_GLFLUSHPIXELDATARANGENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FlushPixelDataRangeNV, glFlushPixelDataRangeNV, FLUSHPIXELDATARANGENV, (AND GLenum target), (target), &target, GL_void_return) GL_PROCM(void, gl, FlushPixelDataRangeNV, glFlushPixelDataRangeNV, FLUSHPIXELDATARANGENV, (AND GLenum target), (target), &target, GL_void_return) #endif #endif #ifndef NO_GLFLUSHRASTERSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FlushRasterSGIX, glFlushRasterSGIX, FLUSHRASTERSGIX, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, FlushRasterSGIX, glFlushRasterSGIX, FLUSHRASTERSGIX, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLFLUSHRENDERAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FlushRenderAPPLE, glFlushRenderAPPLE, FLUSHRENDERAPPLE, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, FlushRenderAPPLE, glFlushRenderAPPLE, FLUSHRENDERAPPLE, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLFLUSHSTATICDATAIBM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FlushStaticDataIBM, glFlushStaticDataIBM, FLUSHSTATICDATAIBM, (AND GLenum target), (target), &target, GL_void_return) GL_PROCM(void, gl, FlushStaticDataIBM, glFlushStaticDataIBM, FLUSHSTATICDATAIBM, (AND GLenum target), (target), &target, GL_void_return) #endif #endif #ifndef NO_GLFLUSHVERTEXARRAYRANGEAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FlushVertexArrayRangeAPPLE, glFlushVertexArrayRangeAPPLE, FLUSHVERTEXARRAYRANGEAPPLE, (AND GLsizei length, void *pointer), (length, pointer), &length, GL_void_return) GL_PROCM(void, gl, FlushVertexArrayRangeAPPLE, glFlushVertexArrayRangeAPPLE, FLUSHVERTEXARRAYRANGEAPPLE, (AND GLsizei length, memptr pointer), (length, pointer), &length, GL_void_return) #endif #endif #ifndef NO_GLFLUSHVERTEXARRAYRANGENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FlushVertexArrayRangeNV, glFlushVertexArrayRangeNV, FLUSHVERTEXARRAYRANGENV, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, FlushVertexArrayRangeNV, glFlushVertexArrayRangeNV, FLUSHVERTEXARRAYRANGENV, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLFOGCOORDFORMATNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogCoordFormatNV, glFogCoordFormatNV, FOGCOORDFORMATNV, (AND GLenum type, GLsizei stride), (type, stride), &type, GL_void_return) GL_PROCM(void, gl, FogCoordFormatNV, glFogCoordFormatNV, FOGCOORDFORMATNV, (AND GLenum type, GLsizei stride), (type, stride), &type, GL_void_return) #endif #endif #ifndef NO_GLFOGCOORDPOINTER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogCoordPointer, glFogCoordPointer, FOGCOORDPOINTER, (AND GLenum type, GLsizei stride, const void *pointer), (type, stride, pointer), &type, GL_void_return) GL_PROCM(void, gl, FogCoordPointer, glFogCoordPointer, FOGCOORDPOINTER, (AND GLenum type, GLsizei stride, memptr pointer), (type, stride, pointer), &type, GL_void_return) #endif #endif #ifndef NO_GLFOGCOORDPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogCoordPointerEXT, glFogCoordPointerEXT, FOGCOORDPOINTEREXT, (AND GLenum type, GLsizei stride, const void *pointer), (type, stride, pointer), &type, GL_void_return) GL_PROCM(void, gl, FogCoordPointerEXT, glFogCoordPointerEXT, FOGCOORDPOINTEREXT, (AND GLenum type, GLsizei stride, memptr pointer), (type, stride, pointer), &type, GL_void_return) #endif #endif #ifndef NO_GLFOGCOORDPOINTERLISTIBM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogCoordPointerListIBM, glFogCoordPointerListIBM, FOGCOORDPOINTERLISTIBM, (AND GLenum type, GLint stride, const void * *pointer, GLint ptrstride), (type, stride, pointer, ptrstride), &type, GL_void_return) GL_PROCM(void, gl, FogCoordPointerListIBM, glFogCoordPointerListIBM, FOGCOORDPOINTERLISTIBM, (AND GLenum type, GLint stride, memptr pointer, GLint ptrstride), (type, stride, pointer, ptrstride), &type, GL_void_return) #endif #endif #ifndef NO_GLFOGCOORDD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogCoordd, glFogCoordd, FOGCOORDD, (AND GLdouble coord), (coord), &coord, GL_void_return) GL_PROCM(void, gl, FogCoordd, glFogCoordd, FOGCOORDD, (AND GLdouble coord), (coord), &coord, GL_void_return) #endif #endif #ifndef NO_GLFOGCOORDDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogCoorddEXT, glFogCoorddEXT, FOGCOORDDEXT, (AND GLdouble coord), (coord), &coord, GL_void_return) GL_PROCM(void, gl, FogCoorddEXT, glFogCoorddEXT, FOGCOORDDEXT, (AND GLdouble coord), (coord), &coord, GL_void_return) #endif #endif #ifndef NO_GLFOGCOORDDV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogCoorddv, glFogCoorddv, FOGCOORDDV, (AND const GLdouble *coord), (coord), &coord, GL_void_return) GL_PROCM(void, gl, FogCoorddv, glFogCoorddv, FOGCOORDDV, (AND memptr coord), (coord), &coord, GL_void_return) #endif #endif #ifndef NO_GLFOGCOORDDVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogCoorddvEXT, glFogCoorddvEXT, FOGCOORDDVEXT, (AND const GLdouble *coord), (coord), &coord, GL_void_return) GL_PROCM(void, gl, FogCoorddvEXT, glFogCoorddvEXT, FOGCOORDDVEXT, (AND memptr coord), (coord), &coord, GL_void_return) #endif #endif #ifndef NO_GLFOGCOORDF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogCoordf, glFogCoordf, FOGCOORDF, (AND GLfloat coord), (coord), &coord, GL_void_return) GL_PROCM(void, gl, FogCoordf, glFogCoordf, FOGCOORDF, (AND GLfloat coord), (coord), &coord, GL_void_return) #endif #endif #ifndef NO_GLFOGCOORDFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogCoordfEXT, glFogCoordfEXT, FOGCOORDFEXT, (AND GLfloat coord), (coord), &coord, GL_void_return) GL_PROCM(void, gl, FogCoordfEXT, glFogCoordfEXT, FOGCOORDFEXT, (AND GLfloat coord), (coord), &coord, GL_void_return) #endif #endif #ifndef NO_GLFOGCOORDFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogCoordfv, glFogCoordfv, FOGCOORDFV, (AND const GLfloat *coord), (coord), &coord, GL_void_return) GL_PROCM(void, gl, FogCoordfv, glFogCoordfv, FOGCOORDFV, (AND memptr coord), (coord), &coord, GL_void_return) #endif #endif #ifndef NO_GLFOGCOORDFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogCoordfvEXT, glFogCoordfvEXT, FOGCOORDFVEXT, (AND const GLfloat *coord), (coord), &coord, GL_void_return) GL_PROCM(void, gl, FogCoordfvEXT, glFogCoordfvEXT, FOGCOORDFVEXT, (AND memptr coord), (coord), &coord, GL_void_return) #endif #endif #ifndef NO_GLFOGCOORDHNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogCoordhNV, glFogCoordhNV, FOGCOORDHNV, (AND GLhalfNV32 fog), (fog), &fog, GL_void_return) GL_PROCM(void, gl, FogCoordhNV, glFogCoordhNV, FOGCOORDHNV, (AND GLhalfNV32 fog), (fog), &fog, GL_void_return) #endif #endif #ifndef NO_GLFOGCOORDHVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogCoordhvNV, glFogCoordhvNV, FOGCOORDHVNV, (AND const GLhalfNV *fog), (fog), &fog, GL_void_return) GL_PROCM(void, gl, FogCoordhvNV, glFogCoordhvNV, FOGCOORDHVNV, (AND memptr fog), (fog), &fog, GL_void_return) #endif #endif #ifndef NO_GLFOGFUNCSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogFuncSGIS, glFogFuncSGIS, FOGFUNCSGIS, (AND GLsizei n, const GLfloat *points), (n, points), &n, GL_void_return) GL_PROCM(void, gl, FogFuncSGIS, glFogFuncSGIS, FOGFUNCSGIS, (AND GLsizei n, memptr points), (n, points), &n, GL_void_return) #endif #endif #ifndef NO_GLFOGF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Fogf, glFogf, FOGF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, Fogf, glFogf, FOGF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLFOGFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Fogfv, glFogfv, FOGFV, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, Fogfv, glFogfv, FOGFV, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLFOGI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Fogi, glFogi, FOGI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, Fogi, glFogi, FOGI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLFOGIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Fogiv, glFogiv, FOGIV, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, Fogiv, glFogiv, FOGIV, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLFOGXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogxOES, glFogxOES, FOGXOES, (AND GLenum pname, GLfixed param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, FogxOES, glFogxOES, FOGXOES, (AND GLenum pname, GLfixed param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLFOGXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FogxvOES, glFogxvOES, FOGXVOES, (AND GLenum pname, const GLfixed *param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, FogxvOES, glFogxvOES, FOGXVOES, (AND GLenum pname, memptr param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLFRAGMENTCOLORMATERIALSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FragmentColorMaterialSGIX, glFragmentColorMaterialSGIX, FRAGMENTCOLORMATERIALSGIX, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) GL_PROCM(void, gl, FragmentColorMaterialSGIX, glFragmentColorMaterialSGIX, FRAGMENTCOLORMATERIALSGIX, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) #endif #endif #ifndef NO_GLFRAGMENTCOVERAGECOLORNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FragmentCoverageColorNV, glFragmentCoverageColorNV, FRAGMENTCOVERAGECOLORNV, (AND GLuint color), (color), &color, GL_void_return) GL_PROCM(void, gl, FragmentCoverageColorNV, glFragmentCoverageColorNV, FRAGMENTCOVERAGECOLORNV, (AND GLuint color), (color), &color, GL_void_return) #endif #endif #ifndef NO_GLFRAGMENTLIGHTMODELFSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FragmentLightModelfSGIX, glFragmentLightModelfSGIX, FRAGMENTLIGHTMODELFSGIX, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, FragmentLightModelfSGIX, glFragmentLightModelfSGIX, FRAGMENTLIGHTMODELFSGIX, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLFRAGMENTLIGHTMODELFVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FragmentLightModelfvSGIX, glFragmentLightModelfvSGIX, FRAGMENTLIGHTMODELFVSGIX, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, FragmentLightModelfvSGIX, glFragmentLightModelfvSGIX, FRAGMENTLIGHTMODELFVSGIX, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLFRAGMENTLIGHTMODELISGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FragmentLightModeliSGIX, glFragmentLightModeliSGIX, FRAGMENTLIGHTMODELISGIX, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, FragmentLightModeliSGIX, glFragmentLightModeliSGIX, FRAGMENTLIGHTMODELISGIX, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLFRAGMENTLIGHTMODELIVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FragmentLightModelivSGIX, glFragmentLightModelivSGIX, FRAGMENTLIGHTMODELIVSGIX, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, FragmentLightModelivSGIX, glFragmentLightModelivSGIX, FRAGMENTLIGHTMODELIVSGIX, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLFRAGMENTLIGHTFSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FragmentLightfSGIX, glFragmentLightfSGIX, FRAGMENTLIGHTFSGIX, (AND GLenum light, GLenum pname, GLfloat param), (light, pname, param), &light, GL_void_return) GL_PROCM(void, gl, FragmentLightfSGIX, glFragmentLightfSGIX, FRAGMENTLIGHTFSGIX, (AND GLenum light, GLenum pname, GLfloat param), (light, pname, param), &light, GL_void_return) #endif #endif #ifndef NO_GLFRAGMENTLIGHTFVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FragmentLightfvSGIX, glFragmentLightfvSGIX, FRAGMENTLIGHTFVSGIX, (AND GLenum light, GLenum pname, const GLfloat *params), (light, pname, params), &light, GL_void_return) GL_PROCM(void, gl, FragmentLightfvSGIX, glFragmentLightfvSGIX, FRAGMENTLIGHTFVSGIX, (AND GLenum light, GLenum pname, memptr params), (light, pname, params), &light, GL_void_return) #endif #endif #ifndef NO_GLFRAGMENTLIGHTISGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FragmentLightiSGIX, glFragmentLightiSGIX, FRAGMENTLIGHTISGIX, (AND GLenum light, GLenum pname, GLint param), (light, pname, param), &light, GL_void_return) GL_PROCM(void, gl, FragmentLightiSGIX, glFragmentLightiSGIX, FRAGMENTLIGHTISGIX, (AND GLenum light, GLenum pname, GLint param), (light, pname, param), &light, GL_void_return) #endif #endif #ifndef NO_GLFRAGMENTLIGHTIVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FragmentLightivSGIX, glFragmentLightivSGIX, FRAGMENTLIGHTIVSGIX, (AND GLenum light, GLenum pname, const GLint *params), (light, pname, params), &light, GL_void_return) GL_PROCM(void, gl, FragmentLightivSGIX, glFragmentLightivSGIX, FRAGMENTLIGHTIVSGIX, (AND GLenum light, GLenum pname, memptr params), (light, pname, params), &light, GL_void_return) #endif #endif #ifndef NO_GLFRAGMENTMATERIALFSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FragmentMaterialfSGIX, glFragmentMaterialfSGIX, FRAGMENTMATERIALFSGIX, (AND GLenum face, GLenum pname, GLfloat param), (face, pname, param), &face, GL_void_return) GL_PROCM(void, gl, FragmentMaterialfSGIX, glFragmentMaterialfSGIX, FRAGMENTMATERIALFSGIX, (AND GLenum face, GLenum pname, GLfloat param), (face, pname, param), &face, GL_void_return) #endif #endif #ifndef NO_GLFRAGMENTMATERIALFVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FragmentMaterialfvSGIX, glFragmentMaterialfvSGIX, FRAGMENTMATERIALFVSGIX, (AND GLenum face, GLenum pname, const GLfloat *params), (face, pname, params), &face, GL_void_return) GL_PROCM(void, gl, FragmentMaterialfvSGIX, glFragmentMaterialfvSGIX, FRAGMENTMATERIALFVSGIX, (AND GLenum face, GLenum pname, memptr params), (face, pname, params), &face, GL_void_return) #endif #endif #ifndef NO_GLFRAGMENTMATERIALISGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FragmentMaterialiSGIX, glFragmentMaterialiSGIX, FRAGMENTMATERIALISGIX, (AND GLenum face, GLenum pname, GLint param), (face, pname, param), &face, GL_void_return) GL_PROCM(void, gl, FragmentMaterialiSGIX, glFragmentMaterialiSGIX, FRAGMENTMATERIALISGIX, (AND GLenum face, GLenum pname, GLint param), (face, pname, param), &face, GL_void_return) #endif #endif #ifndef NO_GLFRAGMENTMATERIALIVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FragmentMaterialivSGIX, glFragmentMaterialivSGIX, FRAGMENTMATERIALIVSGIX, (AND GLenum face, GLenum pname, const GLint *params), (face, pname, params), &face, GL_void_return) GL_PROCM(void, gl, FragmentMaterialivSGIX, glFragmentMaterialivSGIX, FRAGMENTMATERIALIVSGIX, (AND GLenum face, GLenum pname, memptr params), (face, pname, params), &face, GL_void_return) #endif #endif #ifndef NO_GLFRAMETERMINATORGREMEDY #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FrameTerminatorGREMEDY, glFrameTerminatorGREMEDY, FRAMETERMINATORGREMEDY, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, FrameTerminatorGREMEDY, glFrameTerminatorGREMEDY, FRAMETERMINATORGREMEDY, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLFRAMEZOOMSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FrameZoomSGIX, glFrameZoomSGIX, FRAMEZOOMSGIX, (AND GLint factor), (factor), &factor, GL_void_return) GL_PROCM(void, gl, FrameZoomSGIX, glFrameZoomSGIX, FRAMEZOOMSGIX, (AND GLint factor), (factor), &factor, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERDRAWBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferDrawBufferEXT, glFramebufferDrawBufferEXT, FRAMEBUFFERDRAWBUFFEREXT, (AND GLuint framebuffer, GLenum mode), (framebuffer, mode), &framebuffer, GL_void_return) GL_PROCM(void, gl, FramebufferDrawBufferEXT, glFramebufferDrawBufferEXT, FRAMEBUFFERDRAWBUFFEREXT, (AND GLuint framebuffer, GLenum mode), (framebuffer, mode), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERDRAWBUFFERSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferDrawBuffersEXT, glFramebufferDrawBuffersEXT, FRAMEBUFFERDRAWBUFFERSEXT, (AND GLuint framebuffer, GLsizei n, const GLenum *bufs), (framebuffer, n, bufs), &framebuffer, GL_void_return) GL_PROCM(void, gl, FramebufferDrawBuffersEXT, glFramebufferDrawBuffersEXT, FRAMEBUFFERDRAWBUFFERSEXT, (AND GLuint framebuffer, GLsizei n, memptr bufs), (framebuffer, n, bufs), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERPARAMETERI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferParameteri, glFramebufferParameteri, FRAMEBUFFERPARAMETERI, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) GL_PROCM(void, gl, FramebufferParameteri, glFramebufferParameteri, FRAMEBUFFERPARAMETERI, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERREADBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferReadBufferEXT, glFramebufferReadBufferEXT, FRAMEBUFFERREADBUFFEREXT, (AND GLuint framebuffer, GLenum mode), (framebuffer, mode), &framebuffer, GL_void_return) GL_PROCM(void, gl, FramebufferReadBufferEXT, glFramebufferReadBufferEXT, FRAMEBUFFERREADBUFFEREXT, (AND GLuint framebuffer, GLenum mode), (framebuffer, mode), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERRENDERBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferRenderbuffer, glFramebufferRenderbuffer, FRAMEBUFFERRENDERBUFFER, (AND GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (target, attachment, renderbuffertarget, renderbuffer), &target, GL_void_return) GL_PROCM(void, gl, FramebufferRenderbuffer, glFramebufferRenderbuffer, FRAMEBUFFERRENDERBUFFER, (AND GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (target, attachment, renderbuffertarget, renderbuffer), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERRENDERBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, FRAMEBUFFERRENDERBUFFEREXT, (AND GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (target, attachment, renderbuffertarget, renderbuffer), &target, GL_void_return) GL_PROCM(void, gl, FramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, FRAMEBUFFERRENDERBUFFEREXT, (AND GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (target, attachment, renderbuffertarget, renderbuffer), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERSAMPLELOCATIONSFVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferSampleLocationsfvARB, glFramebufferSampleLocationsfvARB, FRAMEBUFFERSAMPLELOCATIONSFVARB, (AND GLenum target, GLuint start, GLsizei count, const GLfloat *v), (target, start, count, v), &target, GL_void_return) GL_PROCM(void, gl, FramebufferSampleLocationsfvARB, glFramebufferSampleLocationsfvARB, FRAMEBUFFERSAMPLELOCATIONSFVARB, (AND GLenum target, GLuint start, GLsizei count, memptr v), (target, start, count, v), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERSAMPLELOCATIONSFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferSampleLocationsfvNV, glFramebufferSampleLocationsfvNV, FRAMEBUFFERSAMPLELOCATIONSFVNV, (AND GLenum target, GLuint start, GLsizei count, const GLfloat *v), (target, start, count, v), &target, GL_void_return) GL_PROCM(void, gl, FramebufferSampleLocationsfvNV, glFramebufferSampleLocationsfvNV, FRAMEBUFFERSAMPLELOCATIONSFVNV, (AND GLenum target, GLuint start, GLsizei count, memptr v), (target, start, count, v), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERSAMPLEPOSITIONSFVAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferSamplePositionsfvAMD, glFramebufferSamplePositionsfvAMD, FRAMEBUFFERSAMPLEPOSITIONSFVAMD, (AND GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values), (target, numsamples, pixelindex, values), &target, GL_void_return) GL_PROCM(void, gl, FramebufferSamplePositionsfvAMD, glFramebufferSamplePositionsfvAMD, FRAMEBUFFERSAMPLEPOSITIONSFVAMD, (AND GLenum target, GLuint numsamples, GLuint pixelindex, memptr values), (target, numsamples, pixelindex, values), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTURE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTexture, glFramebufferTexture, FRAMEBUFFERTEXTURE, (AND GLenum target, GLenum attachment, GLuint texture, GLint level), (target, attachment, texture, level), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTexture, glFramebufferTexture, FRAMEBUFFERTEXTURE, (AND GLenum target, GLenum attachment, GLuint texture, GLint level), (target, attachment, texture, level), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTURE1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTexture1D, glFramebufferTexture1D, FRAMEBUFFERTEXTURE1D, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTexture1D, glFramebufferTexture1D, FRAMEBUFFERTEXTURE1D, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTURE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTexture1DEXT, glFramebufferTexture1DEXT, FRAMEBUFFERTEXTURE1DEXT, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTexture1DEXT, glFramebufferTexture1DEXT, FRAMEBUFFERTEXTURE1DEXT, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTURE2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTexture2D, glFramebufferTexture2D, FRAMEBUFFERTEXTURE2D, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTexture2D, glFramebufferTexture2D, FRAMEBUFFERTEXTURE2D, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTURE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTexture2DEXT, glFramebufferTexture2DEXT, FRAMEBUFFERTEXTURE2DEXT, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTexture2DEXT, glFramebufferTexture2DEXT, FRAMEBUFFERTEXTURE2DEXT, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTURE3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTexture3D, glFramebufferTexture3D, FRAMEBUFFERTEXTURE3D, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset), (target, attachment, textarget, texture, level, zoffset), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTexture3D, glFramebufferTexture3D, FRAMEBUFFERTEXTURE3D, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset), (target, attachment, textarget, texture, level, zoffset), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTURE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTexture3DEXT, glFramebufferTexture3DEXT, FRAMEBUFFERTEXTURE3DEXT, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset), (target, attachment, textarget, texture, level, zoffset), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTexture3DEXT, glFramebufferTexture3DEXT, FRAMEBUFFERTEXTURE3DEXT, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset), (target, attachment, textarget, texture, level, zoffset), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTUREARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTextureARB, glFramebufferTextureARB, FRAMEBUFFERTEXTUREARB, (AND GLenum target, GLenum attachment, GLuint texture, GLint level), (target, attachment, texture, level), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTextureARB, glFramebufferTextureARB, FRAMEBUFFERTEXTUREARB, (AND GLenum target, GLenum attachment, GLuint texture, GLint level), (target, attachment, texture, level), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTUREEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTextureEXT, glFramebufferTextureEXT, FRAMEBUFFERTEXTUREEXT, (AND GLenum target, GLenum attachment, GLuint texture, GLint level), (target, attachment, texture, level), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTextureEXT, glFramebufferTextureEXT, FRAMEBUFFERTEXTUREEXT, (AND GLenum target, GLenum attachment, GLuint texture, GLint level), (target, attachment, texture, level), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTUREFACEARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTextureFaceARB, glFramebufferTextureFaceARB, FRAMEBUFFERTEXTUREFACEARB, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face), (target, attachment, texture, level, face), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTextureFaceARB, glFramebufferTextureFaceARB, FRAMEBUFFERTEXTUREFACEARB, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face), (target, attachment, texture, level, face), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTUREFACEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTextureFaceEXT, glFramebufferTextureFaceEXT, FRAMEBUFFERTEXTUREFACEEXT, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face), (target, attachment, texture, level, face), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTextureFaceEXT, glFramebufferTextureFaceEXT, FRAMEBUFFERTEXTUREFACEEXT, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face), (target, attachment, texture, level, face), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTURELAYER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTextureLayer, glFramebufferTextureLayer, FRAMEBUFFERTEXTURELAYER, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer), (target, attachment, texture, level, layer), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTextureLayer, glFramebufferTextureLayer, FRAMEBUFFERTEXTURELAYER, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer), (target, attachment, texture, level, layer), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTURELAYERARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTextureLayerARB, glFramebufferTextureLayerARB, FRAMEBUFFERTEXTURELAYERARB, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer), (target, attachment, texture, level, layer), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTextureLayerARB, glFramebufferTextureLayerARB, FRAMEBUFFERTEXTURELAYERARB, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer), (target, attachment, texture, level, layer), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTURELAYEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, FRAMEBUFFERTEXTURELAYEREXT, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer), (target, attachment, texture, level, layer), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, FRAMEBUFFERTEXTURELAYEREXT, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer), (target, attachment, texture, level, layer), &target, GL_void_return) #endif #endif #ifndef NO_GLFRAMEBUFFERTEXTUREMULTIVIEWOVR #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FramebufferTextureMultiviewOVR, glFramebufferTextureMultiviewOVR, FRAMEBUFFERTEXTUREMULTIVIEWOVR, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews), (target, attachment, texture, level, baseViewIndex, numViews), &target, GL_void_return) GL_PROCM(void, gl, FramebufferTextureMultiviewOVR, glFramebufferTextureMultiviewOVR, FRAMEBUFFERTEXTUREMULTIVIEWOVR, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews), (target, attachment, texture, level, baseViewIndex, numViews), &target, GL_void_return) #endif #endif #ifndef NO_GLFREEOBJECTBUFFERATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FreeObjectBufferATI, glFreeObjectBufferATI, FREEOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, GL_void_return) GL_PROCM(void, gl, FreeObjectBufferATI, glFreeObjectBufferATI, FREEOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, GL_void_return) #endif #endif #ifndef NO_GLFRONTFACE GL_PROC(void, gl, FrontFace, glFrontFace, FRONTFACE, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, FrontFace, glFrontFace, FRONTFACE, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #ifndef NO_GLFRUSTUM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Frustum, glFrustumd, FRUSTUM, (AND GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (left, right, bottom, top, zNear, zFar), &left, GL_void_return) GL_PROCM(void, gl, Frustum, glFrustumd, FRUSTUM, (AND GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (left, right, bottom, top, zNear, zFar), &left, GL_void_return) #endif #endif #ifndef NO_GLFRUSTUMFOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FrustumfOES, glFrustumfOES, FRUSTUMFOES, (AND GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f), (l, r, b, t, n, f), &l, GL_void_return) GL_PROCM(void, gl, FrustumfOES, glFrustumfOES, FRUSTUMFOES, (AND GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f), (l, r, b, t, n, f), &l, GL_void_return) #endif #endif #ifndef NO_GLFRUSTUMXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, FrustumxOES, glFrustumxOES, FRUSTUMXOES, (AND GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f), (l, r, b, t, n, f), &l, GL_void_return) GL_PROCM(void, gl, FrustumxOES, glFrustumxOES, FRUSTUMXOES, (AND GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f), (l, r, b, t, n, f), &l, GL_void_return) #endif #endif #ifndef NO_GLGENASYNCMARKERSSGIX #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, GenAsyncMarkersSGIX, glGenAsyncMarkersSGIX, GENASYNCMARKERSSGIX, (AND GLsizei range), (range), &range, return (GLuint)) GL_PROCM(GLuint, gl, GenAsyncMarkersSGIX, glGenAsyncMarkersSGIX, GENASYNCMARKERSSGIX, (AND GLsizei range), (range), &range, return (GLuint)) #endif #endif #ifndef NO_GLGENBUFFERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenBuffers, glGenBuffers, GENBUFFERS, (AND GLsizei n, GLuint *buffers), (n, buffers), &n, GL_void_return) GL_PROCM(void, gl, GenBuffers, glGenBuffers, GENBUFFERS, (AND GLsizei n, memptr buffers), (n, buffers), &n, GL_void_return) #endif #endif #ifndef NO_GLGENBUFFERSARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenBuffersARB, glGenBuffersARB, GENBUFFERSARB, (AND GLsizei n, GLuint *buffers), (n, buffers), &n, GL_void_return) GL_PROCM(void, gl, GenBuffersARB, glGenBuffersARB, GENBUFFERSARB, (AND GLsizei n, memptr buffers), (n, buffers), &n, GL_void_return) #endif #endif #ifndef NO_GLGENFENCESAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenFencesAPPLE, glGenFencesAPPLE, GENFENCESAPPLE, (AND GLsizei n, GLuint *fences), (n, fences), &n, GL_void_return) GL_PROCM(void, gl, GenFencesAPPLE, glGenFencesAPPLE, GENFENCESAPPLE, (AND GLsizei n, memptr fences), (n, fences), &n, GL_void_return) #endif #endif #ifndef NO_GLGENFENCESNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenFencesNV, glGenFencesNV, GENFENCESNV, (AND GLsizei n, GLuint *fences), (n, fences), &n, GL_void_return) GL_PROCM(void, gl, GenFencesNV, glGenFencesNV, GENFENCESNV, (AND GLsizei n, memptr fences), (n, fences), &n, GL_void_return) #endif #endif #ifndef NO_GLGENFRAGMENTSHADERSATI #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, GenFragmentShadersATI, glGenFragmentShadersATI, GENFRAGMENTSHADERSATI, (AND GLuint range), (range), &range, return (GLuint)) GL_PROCM(GLuint, gl, GenFragmentShadersATI, glGenFragmentShadersATI, GENFRAGMENTSHADERSATI, (AND GLuint range), (range), &range, return (GLuint)) #endif #endif #ifndef NO_GLGENFRAMEBUFFERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenFramebuffers, glGenFramebuffers, GENFRAMEBUFFERS, (AND GLsizei n, GLuint *framebuffers), (n, framebuffers), &n, GL_void_return) GL_PROCM(void, gl, GenFramebuffers, glGenFramebuffers, GENFRAMEBUFFERS, (AND GLsizei n, memptr framebuffers), (n, framebuffers), &n, GL_void_return) #endif #endif #ifndef NO_GLGENFRAMEBUFFERSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenFramebuffersEXT, glGenFramebuffersEXT, GENFRAMEBUFFERSEXT, (AND GLsizei n, GLuint *framebuffers), (n, framebuffers), &n, GL_void_return) GL_PROCM(void, gl, GenFramebuffersEXT, glGenFramebuffersEXT, GENFRAMEBUFFERSEXT, (AND GLsizei n, memptr framebuffers), (n, framebuffers), &n, GL_void_return) #endif #endif #ifndef NO_GLGENLISTS GL_PROC(GLuint, gl, GenLists, glGenLists, GENLISTS, (AND GLsizei range), (range), &range, return (GLuint)) GL_PROCM(GLuint, gl, GenLists, glGenLists, GENLISTS, (AND GLsizei range), (range), &range, return (GLuint)) #endif #ifndef NO_GLGENNAMESAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenNamesAMD, glGenNamesAMD, GENNAMESAMD, (AND GLenum identifier, GLuint num, GLuint *names), (identifier, num, names), &identifier, GL_void_return) GL_PROCM(void, gl, GenNamesAMD, glGenNamesAMD, GENNAMESAMD, (AND GLenum identifier, GLuint num, memptr names), (identifier, num, names), &identifier, GL_void_return) #endif #endif #ifndef NO_GLGENOCCLUSIONQUERIESNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenOcclusionQueriesNV, glGenOcclusionQueriesNV, GENOCCLUSIONQUERIESNV, (AND GLsizei n, GLuint *ids), (n, ids), &n, GL_void_return) GL_PROCM(void, gl, GenOcclusionQueriesNV, glGenOcclusionQueriesNV, GENOCCLUSIONQUERIESNV, (AND GLsizei n, memptr ids), (n, ids), &n, GL_void_return) #endif #endif #ifndef NO_GLGENPATHSNV #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, GenPathsNV, glGenPathsNV, GENPATHSNV, (AND GLsizei range), (range), &range, return (GLuint)) GL_PROCM(GLuint, gl, GenPathsNV, glGenPathsNV, GENPATHSNV, (AND GLsizei range), (range), &range, return (GLuint)) #endif #endif #ifndef NO_GLGENPERFMONITORSAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenPerfMonitorsAMD, glGenPerfMonitorsAMD, GENPERFMONITORSAMD, (AND GLsizei n, GLuint *monitors), (n, monitors), &n, GL_void_return) GL_PROCM(void, gl, GenPerfMonitorsAMD, glGenPerfMonitorsAMD, GENPERFMONITORSAMD, (AND GLsizei n, memptr monitors), (n, monitors), &n, GL_void_return) #endif #endif #ifndef NO_GLGENPROGRAMPIPELINES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenProgramPipelines, glGenProgramPipelines, GENPROGRAMPIPELINES, (AND GLsizei n, GLuint *pipelines), (n, pipelines), &n, GL_void_return) GL_PROCM(void, gl, GenProgramPipelines, glGenProgramPipelines, GENPROGRAMPIPELINES, (AND GLsizei n, memptr pipelines), (n, pipelines), &n, GL_void_return) #endif #endif #ifndef NO_GLGENPROGRAMSARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenProgramsARB, glGenProgramsARB, GENPROGRAMSARB, (AND GLsizei n, GLuint *programs), (n, programs), &n, GL_void_return) GL_PROCM(void, gl, GenProgramsARB, glGenProgramsARB, GENPROGRAMSARB, (AND GLsizei n, memptr programs), (n, programs), &n, GL_void_return) #endif #endif #ifndef NO_GLGENPROGRAMSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenProgramsNV, glGenProgramsNV, GENPROGRAMSNV, (AND GLsizei n, GLuint *programs), (n, programs), &n, GL_void_return) GL_PROCM(void, gl, GenProgramsNV, glGenProgramsNV, GENPROGRAMSNV, (AND GLsizei n, memptr programs), (n, programs), &n, GL_void_return) #endif #endif #ifndef NO_GLGENQUERIES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenQueries, glGenQueries, GENQUERIES, (AND GLsizei n, GLuint *ids), (n, ids), &n, GL_void_return) GL_PROCM(void, gl, GenQueries, glGenQueries, GENQUERIES, (AND GLsizei n, memptr ids), (n, ids), &n, GL_void_return) #endif #endif #ifndef NO_GLGENQUERIESARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenQueriesARB, glGenQueriesARB, GENQUERIESARB, (AND GLsizei n, GLuint *ids), (n, ids), &n, GL_void_return) GL_PROCM(void, gl, GenQueriesARB, glGenQueriesARB, GENQUERIESARB, (AND GLsizei n, memptr ids), (n, ids), &n, GL_void_return) #endif #endif #ifndef NO_GLGENQUERYRESOURCETAGNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenQueryResourceTagNV, glGenQueryResourceTagNV, GENQUERYRESOURCETAGNV, (AND GLsizei n, GLint *tagIds), (n, tagIds), &n, GL_void_return) GL_PROCM(void, gl, GenQueryResourceTagNV, glGenQueryResourceTagNV, GENQUERYRESOURCETAGNV, (AND GLsizei n, memptr tagIds), (n, tagIds), &n, GL_void_return) #endif #endif #ifndef NO_GLGENRENDERBUFFERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenRenderbuffers, glGenRenderbuffers, GENRENDERBUFFERS, (AND GLsizei n, GLuint *renderbuffers), (n, renderbuffers), &n, GL_void_return) GL_PROCM(void, gl, GenRenderbuffers, glGenRenderbuffers, GENRENDERBUFFERS, (AND GLsizei n, memptr renderbuffers), (n, renderbuffers), &n, GL_void_return) #endif #endif #ifndef NO_GLGENRENDERBUFFERSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenRenderbuffersEXT, glGenRenderbuffersEXT, GENRENDERBUFFERSEXT, (AND GLsizei n, GLuint *renderbuffers), (n, renderbuffers), &n, GL_void_return) GL_PROCM(void, gl, GenRenderbuffersEXT, glGenRenderbuffersEXT, GENRENDERBUFFERSEXT, (AND GLsizei n, memptr renderbuffers), (n, renderbuffers), &n, GL_void_return) #endif #endif #ifndef NO_GLGENSAMPLERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenSamplers, glGenSamplers, GENSAMPLERS, (AND GLsizei count, GLuint *samplers), (count, samplers), &count, GL_void_return) GL_PROCM(void, gl, GenSamplers, glGenSamplers, GENSAMPLERS, (AND GLsizei count, memptr samplers), (count, samplers), &count, GL_void_return) #endif #endif #ifndef NO_GLGENSEMAPHORESEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenSemaphoresEXT, glGenSemaphoresEXT, GENSEMAPHORESEXT, (AND GLsizei n, GLuint *semaphores), (n, semaphores), &n, GL_void_return) GL_PROCM(void, gl, GenSemaphoresEXT, glGenSemaphoresEXT, GENSEMAPHORESEXT, (AND GLsizei n, memptr semaphores), (n, semaphores), &n, GL_void_return) #endif #endif #ifndef NO_GLGENSYMBOLSEXT #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, GenSymbolsEXT, glGenSymbolsEXT, GENSYMBOLSEXT, (AND GLenum datatype, GLenum storagetype, GLenum range, GLuint components), (datatype, storagetype, range, components), &datatype, return (GLuint)) GL_PROCM(GLuint, gl, GenSymbolsEXT, glGenSymbolsEXT, GENSYMBOLSEXT, (AND GLenum datatype, GLenum storagetype, GLenum range, GLuint components), (datatype, storagetype, range, components), &datatype, return (GLuint)) #endif #endif #ifndef NO_GLGENTEXTURES GL_PROC(void, gl, GenTextures, glGenTextures, GENTEXTURES, (AND GLsizei n, GLuint *textures), (n, textures), &n, GL_void_return) GL_PROCM(void, gl, GenTextures, glGenTextures, GENTEXTURES, (AND GLsizei n, memptr textures), (n, textures), &n, GL_void_return) #endif #ifndef NO_GLGENTEXTURESEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenTexturesEXT, glGenTexturesEXT, GENTEXTURESEXT, (AND GLsizei n, GLuint *textures), (n, textures), &n, GL_void_return) GL_PROCM(void, gl, GenTexturesEXT, glGenTexturesEXT, GENTEXTURESEXT, (AND GLsizei n, memptr textures), (n, textures), &n, GL_void_return) #endif #endif #ifndef NO_GLGENTRANSFORMFEEDBACKS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenTransformFeedbacks, glGenTransformFeedbacks, GENTRANSFORMFEEDBACKS, (AND GLsizei n, GLuint *ids), (n, ids), &n, GL_void_return) GL_PROCM(void, gl, GenTransformFeedbacks, glGenTransformFeedbacks, GENTRANSFORMFEEDBACKS, (AND GLsizei n, memptr ids), (n, ids), &n, GL_void_return) #endif #endif #ifndef NO_GLGENTRANSFORMFEEDBACKSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenTransformFeedbacksNV, glGenTransformFeedbacksNV, GENTRANSFORMFEEDBACKSNV, (AND GLsizei n, GLuint *ids), (n, ids), &n, GL_void_return) GL_PROCM(void, gl, GenTransformFeedbacksNV, glGenTransformFeedbacksNV, GENTRANSFORMFEEDBACKSNV, (AND GLsizei n, memptr ids), (n, ids), &n, GL_void_return) #endif #endif #ifndef NO_GLGENVERTEXARRAYS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenVertexArrays, glGenVertexArrays, GENVERTEXARRAYS, (AND GLsizei n, GLuint *arrays), (n, arrays), &n, GL_void_return) GL_PROCM(void, gl, GenVertexArrays, glGenVertexArrays, GENVERTEXARRAYS, (AND GLsizei n, memptr arrays), (n, arrays), &n, GL_void_return) #endif #endif #ifndef NO_GLGENVERTEXARRAYSAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenVertexArraysAPPLE, glGenVertexArraysAPPLE, GENVERTEXARRAYSAPPLE, (AND GLsizei n, GLuint *arrays), (n, arrays), &n, GL_void_return) GL_PROCM(void, gl, GenVertexArraysAPPLE, glGenVertexArraysAPPLE, GENVERTEXARRAYSAPPLE, (AND GLsizei n, memptr arrays), (n, arrays), &n, GL_void_return) #endif #endif #ifndef NO_GLGENVERTEXSHADERSEXT #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, GenVertexShadersEXT, glGenVertexShadersEXT, GENVERTEXSHADERSEXT, (AND GLuint range), (range), &range, return (GLuint)) GL_PROCM(GLuint, gl, GenVertexShadersEXT, glGenVertexShadersEXT, GENVERTEXSHADERSEXT, (AND GLuint range), (range), &range, return (GLuint)) #endif #endif #ifndef NO_GLGENERATEMIPMAP #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenerateMipmap, glGenerateMipmap, GENERATEMIPMAP, (AND GLenum target), (target), &target, GL_void_return) GL_PROCM(void, gl, GenerateMipmap, glGenerateMipmap, GENERATEMIPMAP, (AND GLenum target), (target), &target, GL_void_return) #endif #endif #ifndef NO_GLGENERATEMIPMAPEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenerateMipmapEXT, glGenerateMipmapEXT, GENERATEMIPMAPEXT, (AND GLenum target), (target), &target, GL_void_return) GL_PROCM(void, gl, GenerateMipmapEXT, glGenerateMipmapEXT, GENERATEMIPMAPEXT, (AND GLenum target), (target), &target, GL_void_return) #endif #endif #ifndef NO_GLGENERATEMULTITEXMIPMAPEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenerateMultiTexMipmapEXT, glGenerateMultiTexMipmapEXT, GENERATEMULTITEXMIPMAPEXT, (AND GLenum texunit, GLenum target), (texunit, target), &texunit, GL_void_return) GL_PROCM(void, gl, GenerateMultiTexMipmapEXT, glGenerateMultiTexMipmapEXT, GENERATEMULTITEXMIPMAPEXT, (AND GLenum texunit, GLenum target), (texunit, target), &texunit, GL_void_return) #endif #endif #ifndef NO_GLGENERATETEXTUREMIPMAP #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenerateTextureMipmap, glGenerateTextureMipmap, GENERATETEXTUREMIPMAP, (AND GLuint texture), (texture), &texture, GL_void_return) GL_PROCM(void, gl, GenerateTextureMipmap, glGenerateTextureMipmap, GENERATETEXTUREMIPMAP, (AND GLuint texture), (texture), &texture, GL_void_return) #endif #endif #ifndef NO_GLGENERATETEXTUREMIPMAPEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GenerateTextureMipmapEXT, glGenerateTextureMipmapEXT, GENERATETEXTUREMIPMAPEXT, (AND GLuint texture, GLenum target), (texture, target), &texture, GL_void_return) GL_PROCM(void, gl, GenerateTextureMipmapEXT, glGenerateTextureMipmapEXT, GENERATETEXTUREMIPMAPEXT, (AND GLuint texture, GLenum target), (texture, target), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETACTIVEATOMICCOUNTERBUFFERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetActiveAtomicCounterBufferiv, glGetActiveAtomicCounterBufferiv, GETACTIVEATOMICCOUNTERBUFFERIV, (AND GLuint program, GLuint bufferIndex, GLenum pname, GLint *params), (program, bufferIndex, pname, params), &program, GL_void_return) GL_PROCM(void, gl, GetActiveAtomicCounterBufferiv, glGetActiveAtomicCounterBufferiv, GETACTIVEATOMICCOUNTERBUFFERIV, (AND GLuint program, GLuint bufferIndex, GLenum pname, memptr params), (program, bufferIndex, pname, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETACTIVEATTRIB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetActiveAttrib, glGetActiveAttrib, GETACTIVEATTRIB, (AND GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) GL_PROCM(void, gl, GetActiveAttrib, glGetActiveAttrib, GETACTIVEATTRIB, (AND GLuint program, GLuint index, GLsizei bufSize, memptr length, memptr size, memptr type, memptr name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) #endif #endif #ifndef NO_GLGETACTIVEATTRIBARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetActiveAttribARB, glGetActiveAttribARB, GETACTIVEATTRIBARB, (AND GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name), (programObj, index, maxLength, length, size, type, name), &programObj, GL_void_return) GL_PROCM(void, gl, GetActiveAttribARB, glGetActiveAttribARB, GETACTIVEATTRIBARB, (AND GLhandleARB programObj, GLuint index, GLsizei maxLength, memptr length, memptr size, memptr type, memptr name), (programObj, index, maxLength, length, size, type, name), &programObj, GL_void_return) #endif #endif #ifndef NO_GLGETACTIVESUBROUTINENAME #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetActiveSubroutineName, glGetActiveSubroutineName, GETACTIVESUBROUTINENAME, (AND GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name), (program, shadertype, index, bufsize, length, name), &program, GL_void_return) GL_PROCM(void, gl, GetActiveSubroutineName, glGetActiveSubroutineName, GETACTIVESUBROUTINENAME, (AND GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, memptr length, memptr name), (program, shadertype, index, bufsize, length, name), &program, GL_void_return) #endif #endif #ifndef NO_GLGETACTIVESUBROUTINEUNIFORMNAME #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetActiveSubroutineUniformName, glGetActiveSubroutineUniformName, GETACTIVESUBROUTINEUNIFORMNAME, (AND GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name), (program, shadertype, index, bufsize, length, name), &program, GL_void_return) GL_PROCM(void, gl, GetActiveSubroutineUniformName, glGetActiveSubroutineUniformName, GETACTIVESUBROUTINEUNIFORMNAME, (AND GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, memptr length, memptr name), (program, shadertype, index, bufsize, length, name), &program, GL_void_return) #endif #endif #ifndef NO_GLGETACTIVESUBROUTINEUNIFORMIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetActiveSubroutineUniformiv, glGetActiveSubroutineUniformiv, GETACTIVESUBROUTINEUNIFORMIV, (AND GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values), (program, shadertype, index, pname, values), &program, GL_void_return) GL_PROCM(void, gl, GetActiveSubroutineUniformiv, glGetActiveSubroutineUniformiv, GETACTIVESUBROUTINEUNIFORMIV, (AND GLuint program, GLenum shadertype, GLuint index, GLenum pname, memptr values), (program, shadertype, index, pname, values), &program, GL_void_return) #endif #endif #ifndef NO_GLGETACTIVEUNIFORM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetActiveUniform, glGetActiveUniform, GETACTIVEUNIFORM, (AND GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) GL_PROCM(void, gl, GetActiveUniform, glGetActiveUniform, GETACTIVEUNIFORM, (AND GLuint program, GLuint index, GLsizei bufSize, memptr length, memptr size, memptr type, memptr name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) #endif #endif #ifndef NO_GLGETACTIVEUNIFORMARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetActiveUniformARB, glGetActiveUniformARB, GETACTIVEUNIFORMARB, (AND GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name), (programObj, index, maxLength, length, size, type, name), &programObj, GL_void_return) GL_PROCM(void, gl, GetActiveUniformARB, glGetActiveUniformARB, GETACTIVEUNIFORMARB, (AND GLhandleARB programObj, GLuint index, GLsizei maxLength, memptr length, memptr size, memptr type, memptr name), (programObj, index, maxLength, length, size, type, name), &programObj, GL_void_return) #endif #endif #ifndef NO_GLGETACTIVEUNIFORMBLOCKINDEX #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, GetActiveUniformBlockIndex, glGetActiveUniformBlockIndex, GETACTIVEUNIFORMBLOCKINDEX, (AND GLuint program, const GLchar *uniformBlockName), (program, uniformBlockName), &program, return (GLuint)) GL_PROCM(GLuint, gl, GetActiveUniformBlockIndex, glGetActiveUniformBlockIndex, GETACTIVEUNIFORMBLOCKINDEX, (AND GLuint program, memptr uniformBlockName), (program, uniformBlockName), &program, return (GLuint)) #endif #endif #ifndef NO_GLGETACTIVEUNIFORMBLOCKNAME #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetActiveUniformBlockName, glGetActiveUniformBlockName, GETACTIVEUNIFORMBLOCKNAME, (AND GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName), (program, uniformBlockIndex, bufSize, length, uniformBlockName), &program, GL_void_return) GL_PROCM(void, gl, GetActiveUniformBlockName, glGetActiveUniformBlockName, GETACTIVEUNIFORMBLOCKNAME, (AND GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, memptr length, memptr uniformBlockName), (program, uniformBlockIndex, bufSize, length, uniformBlockName), &program, GL_void_return) #endif #endif #ifndef NO_GLGETACTIVEUNIFORMBLOCKIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetActiveUniformBlockiv, glGetActiveUniformBlockiv, GETACTIVEUNIFORMBLOCKIV, (AND GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params), (program, uniformBlockIndex, pname, params), &program, GL_void_return) GL_PROCM(void, gl, GetActiveUniformBlockiv, glGetActiveUniformBlockiv, GETACTIVEUNIFORMBLOCKIV, (AND GLuint program, GLuint uniformBlockIndex, GLenum pname, memptr params), (program, uniformBlockIndex, pname, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETACTIVEUNIFORMNAME #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetActiveUniformName, glGetActiveUniformName, GETACTIVEUNIFORMNAME, (AND GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName), (program, uniformIndex, bufSize, length, uniformName), &program, GL_void_return) GL_PROCM(void, gl, GetActiveUniformName, glGetActiveUniformName, GETACTIVEUNIFORMNAME, (AND GLuint program, GLuint uniformIndex, GLsizei bufSize, memptr length, memptr uniformName), (program, uniformIndex, bufSize, length, uniformName), &program, GL_void_return) #endif #endif #ifndef NO_GLGETACTIVEUNIFORMSIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetActiveUniformsiv, glGetActiveUniformsiv, GETACTIVEUNIFORMSIV, (AND GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params), (program, uniformCount, uniformIndices, pname, params), &program, GL_void_return) GL_PROCM(void, gl, GetActiveUniformsiv, glGetActiveUniformsiv, GETACTIVEUNIFORMSIV, (AND GLuint program, GLsizei uniformCount, memptr uniformIndices, GLenum pname, memptr params), (program, uniformCount, uniformIndices, pname, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETACTIVEVARYINGNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetActiveVaryingNV, glGetActiveVaryingNV, GETACTIVEVARYINGNV, (AND GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) GL_PROCM(void, gl, GetActiveVaryingNV, glGetActiveVaryingNV, GETACTIVEVARYINGNV, (AND GLuint program, GLuint index, GLsizei bufSize, memptr length, memptr size, memptr type, memptr name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) #endif #endif #ifndef NO_GLGETARRAYOBJECTFVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetArrayObjectfvATI, glGetArrayObjectfvATI, GETARRAYOBJECTFVATI, (AND GLenum array, GLenum pname, GLfloat *params), (array, pname, params), &array, GL_void_return) GL_PROCM(void, gl, GetArrayObjectfvATI, glGetArrayObjectfvATI, GETARRAYOBJECTFVATI, (AND GLenum array, GLenum pname, memptr params), (array, pname, params), &array, GL_void_return) #endif #endif #ifndef NO_GLGETARRAYOBJECTIVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetArrayObjectivATI, glGetArrayObjectivATI, GETARRAYOBJECTIVATI, (AND GLenum array, GLenum pname, GLint *params), (array, pname, params), &array, GL_void_return) GL_PROCM(void, gl, GetArrayObjectivATI, glGetArrayObjectivATI, GETARRAYOBJECTIVATI, (AND GLenum array, GLenum pname, memptr params), (array, pname, params), &array, GL_void_return) #endif #endif #ifndef NO_GLGETATTACHEDOBJECTSARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetAttachedObjectsARB, glGetAttachedObjectsARB, GETATTACHEDOBJECTSARB, (AND GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj), (containerObj, maxCount, count, obj), &containerObj, GL_void_return) GL_PROCM(void, gl, GetAttachedObjectsARB, glGetAttachedObjectsARB, GETATTACHEDOBJECTSARB, (AND GLhandleARB containerObj, GLsizei maxCount, memptr count, memptr obj), (containerObj, maxCount, count, obj), &containerObj, GL_void_return) #endif #endif #ifndef NO_GLGETATTACHEDSHADERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetAttachedShaders, glGetAttachedShaders, GETATTACHEDSHADERS, (AND GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders), (program, maxCount, count, shaders), &program, GL_void_return) GL_PROCM(void, gl, GetAttachedShaders, glGetAttachedShaders, GETATTACHEDSHADERS, (AND GLuint program, GLsizei maxCount, memptr count, memptr shaders), (program, maxCount, count, shaders), &program, GL_void_return) #endif #endif #ifndef NO_GLGETATTRIBLOCATION #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, GetAttribLocation, glGetAttribLocation, GETATTRIBLOCATION, (AND GLuint program, const GLchar *name), (program, name), &program, return (GLint)) GL_PROCM(GLint, gl, GetAttribLocation, glGetAttribLocation, GETATTRIBLOCATION, (AND GLuint program, memptr name), (program, name), &program, return (GLint)) #endif #endif #ifndef NO_GLGETATTRIBLOCATIONARB #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, GetAttribLocationARB, glGetAttribLocationARB, GETATTRIBLOCATIONARB, (AND GLhandleARB programObj, const GLcharARB *name), (programObj, name), &programObj, return (GLint)) GL_PROCM(GLint, gl, GetAttribLocationARB, glGetAttribLocationARB, GETATTRIBLOCATIONARB, (AND GLhandleARB programObj, memptr name), (programObj, name), &programObj, return (GLint)) #endif #endif #ifndef NO_GLGETBOOLEANINDEXEDVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, GETBOOLEANINDEXEDVEXT, (AND GLenum target, GLuint index, GLboolean *data), (target, index, data), &target, GL_void_return) GL_PROCM(void, gl, GetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, GETBOOLEANINDEXEDVEXT, (AND GLenum target, GLuint index, memptr data), (target, index, data), &target, GL_void_return) #endif #endif #ifndef NO_GLGETBOOLEANI_V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetBooleani_v, glGetBooleani_v, GETBOOLEANI_V, (AND GLenum target, GLuint index, GLboolean *data), (target, index, data), &target, GL_void_return) GL_PROCM(void, gl, GetBooleani_v, glGetBooleani_v, GETBOOLEANI_V, (AND GLenum target, GLuint index, memptr data), (target, index, data), &target, GL_void_return) #endif #endif #ifndef NO_GLGETBOOLEANV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetBooleanv, glGetBooleanv, GETBOOLEANV, (AND GLenum pname, GLboolean *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, GetBooleanv, glGetBooleanv, GETBOOLEANV, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETBUFFERPARAMETERI64V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetBufferParameteri64v, glGetBufferParameteri64v, GETBUFFERPARAMETERI64V, (AND GLenum target, GLenum pname, GLint64 *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetBufferParameteri64v, glGetBufferParameteri64v, GETBUFFERPARAMETERI64V, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETBUFFERPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetBufferParameteriv, glGetBufferParameteriv, GETBUFFERPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetBufferParameteriv, glGetBufferParameteriv, GETBUFFERPARAMETERIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETBUFFERPARAMETERIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetBufferParameterivARB, glGetBufferParameterivARB, GETBUFFERPARAMETERIVARB, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetBufferParameterivARB, glGetBufferParameterivARB, GETBUFFERPARAMETERIVARB, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETBUFFERPARAMETERUI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetBufferParameterui64vNV, glGetBufferParameterui64vNV, GETBUFFERPARAMETERUI64VNV, (AND GLenum target, GLenum pname, GLuint64EXT *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetBufferParameterui64vNV, glGetBufferParameterui64vNV, GETBUFFERPARAMETERUI64VNV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETBUFFERPOINTERV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetBufferPointerv, glGetBufferPointerv, GETBUFFERPOINTERV, (AND GLenum target, GLenum pname, void * *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetBufferPointerv, glGetBufferPointerv, GETBUFFERPOINTERV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETBUFFERPOINTERVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetBufferPointervARB, glGetBufferPointervARB, GETBUFFERPOINTERVARB, (AND GLenum target, GLenum pname, void * *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetBufferPointervARB, glGetBufferPointervARB, GETBUFFERPOINTERVARB, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETBUFFERSUBDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetBufferSubData, glGetBufferSubData, GETBUFFERSUBDATA, (AND GLenum target, GLintptr offset, GLsizeiptr size, void *data), (target, offset, size, data), &target, GL_void_return) GL_PROCM(void, gl, GetBufferSubData, glGetBufferSubData, GETBUFFERSUBDATA, (AND GLenum target, GLintptr offset, GLsizeiptr size, memptr data), (target, offset, size, data), &target, GL_void_return) #endif #endif #ifndef NO_GLGETBUFFERSUBDATAARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetBufferSubDataARB, glGetBufferSubDataARB, GETBUFFERSUBDATAARB, (AND GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data), (target, offset, size, data), &target, GL_void_return) GL_PROCM(void, gl, GetBufferSubDataARB, glGetBufferSubDataARB, GETBUFFERSUBDATAARB, (AND GLenum target, GLintptrARB offset, GLsizeiptrARB size, memptr data), (target, offset, size, data), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCLIPPLANE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetClipPlane, glGetClipPlane, GETCLIPPLANE, (AND GLenum plane, GLdouble *equation), (plane, equation), &plane, GL_void_return) GL_PROCM(void, gl, GetClipPlane, glGetClipPlane, GETCLIPPLANE, (AND GLenum plane, memptr equation), (plane, equation), &plane, GL_void_return) #endif #endif #ifndef NO_GLGETCLIPPLANEFOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetClipPlanefOES, glGetClipPlanefOES, GETCLIPPLANEFOES, (AND GLenum plane, GLfloat *equation), (plane, equation), &plane, GL_void_return) GL_PROCM(void, gl, GetClipPlanefOES, glGetClipPlanefOES, GETCLIPPLANEFOES, (AND GLenum plane, memptr equation), (plane, equation), &plane, GL_void_return) #endif #endif #ifndef NO_GLGETCLIPPLANEXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetClipPlanexOES, glGetClipPlanexOES, GETCLIPPLANEXOES, (AND GLenum plane, GLfixed *equation), (plane, equation), &plane, GL_void_return) GL_PROCM(void, gl, GetClipPlanexOES, glGetClipPlanexOES, GETCLIPPLANEXOES, (AND GLenum plane, memptr equation), (plane, equation), &plane, GL_void_return) #endif #endif #ifndef NO_GLGETCOLORTABLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetColorTable, glGetColorTable, GETCOLORTABLE, (AND GLenum target, GLenum format, GLenum type, void *table), (target, format, type, table), &target, GL_void_return) GL_PROCM(void, gl, GetColorTable, glGetColorTable, GETCOLORTABLE, (AND GLenum target, GLenum format, GLenum type, memptr table), (target, format, type, table), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCOLORTABLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetColorTableEXT, glGetColorTableEXT, GETCOLORTABLEEXT, (AND GLenum target, GLenum format, GLenum type, void *data), (target, format, type, data), &target, GL_void_return) GL_PROCM(void, gl, GetColorTableEXT, glGetColorTableEXT, GETCOLORTABLEEXT, (AND GLenum target, GLenum format, GLenum type, memptr data), (target, format, type, data), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCOLORTABLEPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetColorTableParameterfv, glGetColorTableParameterfv, GETCOLORTABLEPARAMETERFV, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetColorTableParameterfv, glGetColorTableParameterfv, GETCOLORTABLEPARAMETERFV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCOLORTABLEPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, GETCOLORTABLEPARAMETERFVEXT, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, GETCOLORTABLEPARAMETERFVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCOLORTABLEPARAMETERFVSGI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetColorTableParameterfvSGI, glGetColorTableParameterfvSGI, GETCOLORTABLEPARAMETERFVSGI, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetColorTableParameterfvSGI, glGetColorTableParameterfvSGI, GETCOLORTABLEPARAMETERFVSGI, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCOLORTABLEPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetColorTableParameteriv, glGetColorTableParameteriv, GETCOLORTABLEPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetColorTableParameteriv, glGetColorTableParameteriv, GETCOLORTABLEPARAMETERIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCOLORTABLEPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetColorTableParameterivEXT, glGetColorTableParameterivEXT, GETCOLORTABLEPARAMETERIVEXT, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetColorTableParameterivEXT, glGetColorTableParameterivEXT, GETCOLORTABLEPARAMETERIVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCOLORTABLEPARAMETERIVSGI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetColorTableParameterivSGI, glGetColorTableParameterivSGI, GETCOLORTABLEPARAMETERIVSGI, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetColorTableParameterivSGI, glGetColorTableParameterivSGI, GETCOLORTABLEPARAMETERIVSGI, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCOLORTABLESGI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetColorTableSGI, glGetColorTableSGI, GETCOLORTABLESGI, (AND GLenum target, GLenum format, GLenum type, void *table), (target, format, type, table), &target, GL_void_return) GL_PROCM(void, gl, GetColorTableSGI, glGetColorTableSGI, GETCOLORTABLESGI, (AND GLenum target, GLenum format, GLenum type, memptr table), (target, format, type, table), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCOMBINERINPUTPARAMETERFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetCombinerInputParameterfvNV, glGetCombinerInputParameterfvNV, GETCOMBINERINPUTPARAMETERFVNV, (AND GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params), (stage, portion, variable, pname, params), &stage, GL_void_return) GL_PROCM(void, gl, GetCombinerInputParameterfvNV, glGetCombinerInputParameterfvNV, GETCOMBINERINPUTPARAMETERFVNV, (AND GLenum stage, GLenum portion, GLenum variable, GLenum pname, memptr params), (stage, portion, variable, pname, params), &stage, GL_void_return) #endif #endif #ifndef NO_GLGETCOMBINERINPUTPARAMETERIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetCombinerInputParameterivNV, glGetCombinerInputParameterivNV, GETCOMBINERINPUTPARAMETERIVNV, (AND GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params), (stage, portion, variable, pname, params), &stage, GL_void_return) GL_PROCM(void, gl, GetCombinerInputParameterivNV, glGetCombinerInputParameterivNV, GETCOMBINERINPUTPARAMETERIVNV, (AND GLenum stage, GLenum portion, GLenum variable, GLenum pname, memptr params), (stage, portion, variable, pname, params), &stage, GL_void_return) #endif #endif #ifndef NO_GLGETCOMBINEROUTPUTPARAMETERFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetCombinerOutputParameterfvNV, glGetCombinerOutputParameterfvNV, GETCOMBINEROUTPUTPARAMETERFVNV, (AND GLenum stage, GLenum portion, GLenum pname, GLfloat *params), (stage, portion, pname, params), &stage, GL_void_return) GL_PROCM(void, gl, GetCombinerOutputParameterfvNV, glGetCombinerOutputParameterfvNV, GETCOMBINEROUTPUTPARAMETERFVNV, (AND GLenum stage, GLenum portion, GLenum pname, memptr params), (stage, portion, pname, params), &stage, GL_void_return) #endif #endif #ifndef NO_GLGETCOMBINEROUTPUTPARAMETERIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetCombinerOutputParameterivNV, glGetCombinerOutputParameterivNV, GETCOMBINEROUTPUTPARAMETERIVNV, (AND GLenum stage, GLenum portion, GLenum pname, GLint *params), (stage, portion, pname, params), &stage, GL_void_return) GL_PROCM(void, gl, GetCombinerOutputParameterivNV, glGetCombinerOutputParameterivNV, GETCOMBINEROUTPUTPARAMETERIVNV, (AND GLenum stage, GLenum portion, GLenum pname, memptr params), (stage, portion, pname, params), &stage, GL_void_return) #endif #endif #ifndef NO_GLGETCOMBINERSTAGEPARAMETERFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetCombinerStageParameterfvNV, glGetCombinerStageParameterfvNV, GETCOMBINERSTAGEPARAMETERFVNV, (AND GLenum stage, GLenum pname, GLfloat *params), (stage, pname, params), &stage, GL_void_return) GL_PROCM(void, gl, GetCombinerStageParameterfvNV, glGetCombinerStageParameterfvNV, GETCOMBINERSTAGEPARAMETERFVNV, (AND GLenum stage, GLenum pname, memptr params), (stage, pname, params), &stage, GL_void_return) #endif #endif #ifndef NO_GLGETCOMMANDHEADERNV #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, GetCommandHeaderNV, glGetCommandHeaderNV, GETCOMMANDHEADERNV, (AND GLenum tokenID, GLuint size), (tokenID, size), &tokenID, return (GLuint)) GL_PROCM(GLuint, gl, GetCommandHeaderNV, glGetCommandHeaderNV, GETCOMMANDHEADERNV, (AND GLenum tokenID, GLuint size), (tokenID, size), &tokenID, return (GLuint)) #endif #endif #ifndef NO_GLGETCOMPRESSEDMULTITEXIMAGEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetCompressedMultiTexImageEXT, glGetCompressedMultiTexImageEXT, GETCOMPRESSEDMULTITEXIMAGEEXT, (AND GLenum texunit, GLenum target, GLint lod, void *img), (texunit, target, lod, img), &texunit, GL_void_return) GL_PROCM(void, gl, GetCompressedMultiTexImageEXT, glGetCompressedMultiTexImageEXT, GETCOMPRESSEDMULTITEXIMAGEEXT, (AND GLenum texunit, GLenum target, GLint lod, memptr img), (texunit, target, lod, img), &texunit, GL_void_return) #endif #endif #ifndef NO_GLGETCOMPRESSEDTEXIMAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetCompressedTexImage, glGetCompressedTexImage, GETCOMPRESSEDTEXIMAGE, (AND GLenum target, GLint level, void *img), (target, level, img), &target, GL_void_return) GL_PROCM(void, gl, GetCompressedTexImage, glGetCompressedTexImage, GETCOMPRESSEDTEXIMAGE, (AND GLenum target, GLint level, memptr img), (target, level, img), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCOMPRESSEDTEXIMAGEARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetCompressedTexImageARB, glGetCompressedTexImageARB, GETCOMPRESSEDTEXIMAGEARB, (AND GLenum target, GLint level, void *img), (target, level, img), &target, GL_void_return) GL_PROCM(void, gl, GetCompressedTexImageARB, glGetCompressedTexImageARB, GETCOMPRESSEDTEXIMAGEARB, (AND GLenum target, GLint level, memptr img), (target, level, img), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCOMPRESSEDTEXTUREIMAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetCompressedTextureImage, glGetCompressedTextureImage, GETCOMPRESSEDTEXTUREIMAGE, (AND GLuint texture, GLint level, GLsizei bufSize, void *pixels), (texture, level, bufSize, pixels), &texture, GL_void_return) GL_PROCM(void, gl, GetCompressedTextureImage, glGetCompressedTextureImage, GETCOMPRESSEDTEXTUREIMAGE, (AND GLuint texture, GLint level, GLsizei bufSize, memptr pixels), (texture, level, bufSize, pixels), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETCOMPRESSEDTEXTUREIMAGEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetCompressedTextureImageEXT, glGetCompressedTextureImageEXT, GETCOMPRESSEDTEXTUREIMAGEEXT, (AND GLuint texture, GLenum target, GLint lod, void *img), (texture, target, lod, img), &texture, GL_void_return) GL_PROCM(void, gl, GetCompressedTextureImageEXT, glGetCompressedTextureImageEXT, GETCOMPRESSEDTEXTUREIMAGEEXT, (AND GLuint texture, GLenum target, GLint lod, memptr img), (texture, target, lod, img), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETCOMPRESSEDTEXTURESUBIMAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetCompressedTextureSubImage, glGetCompressedTextureSubImage, GETCOMPRESSEDTEXTURESUBIMAGE, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels), (texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels), &texture, GL_void_return) GL_PROCM(void, gl, GetCompressedTextureSubImage, glGetCompressedTextureSubImage, GETCOMPRESSEDTEXTURESUBIMAGE, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, memptr pixels), (texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETCONVOLUTIONFILTER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetConvolutionFilter, glGetConvolutionFilter, GETCONVOLUTIONFILTER, (AND GLenum target, GLenum format, GLenum type, void *image), (target, format, type, image), &target, GL_void_return) GL_PROCM(void, gl, GetConvolutionFilter, glGetConvolutionFilter, GETCONVOLUTIONFILTER, (AND GLenum target, GLenum format, GLenum type, memptr image), (target, format, type, image), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCONVOLUTIONFILTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetConvolutionFilterEXT, glGetConvolutionFilterEXT, GETCONVOLUTIONFILTEREXT, (AND GLenum target, GLenum format, GLenum type, void *image), (target, format, type, image), &target, GL_void_return) GL_PROCM(void, gl, GetConvolutionFilterEXT, glGetConvolutionFilterEXT, GETCONVOLUTIONFILTEREXT, (AND GLenum target, GLenum format, GLenum type, memptr image), (target, format, type, image), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCONVOLUTIONPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetConvolutionParameterfv, glGetConvolutionParameterfv, GETCONVOLUTIONPARAMETERFV, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetConvolutionParameterfv, glGetConvolutionParameterfv, GETCONVOLUTIONPARAMETERFV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCONVOLUTIONPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetConvolutionParameterfvEXT, glGetConvolutionParameterfvEXT, GETCONVOLUTIONPARAMETERFVEXT, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetConvolutionParameterfvEXT, glGetConvolutionParameterfvEXT, GETCONVOLUTIONPARAMETERFVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCONVOLUTIONPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetConvolutionParameteriv, glGetConvolutionParameteriv, GETCONVOLUTIONPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetConvolutionParameteriv, glGetConvolutionParameteriv, GETCONVOLUTIONPARAMETERIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCONVOLUTIONPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetConvolutionParameterivEXT, glGetConvolutionParameterivEXT, GETCONVOLUTIONPARAMETERIVEXT, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetConvolutionParameterivEXT, glGetConvolutionParameterivEXT, GETCONVOLUTIONPARAMETERIVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCONVOLUTIONPARAMETERXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetConvolutionParameterxvOES, glGetConvolutionParameterxvOES, GETCONVOLUTIONPARAMETERXVOES, (AND GLenum target, GLenum pname, GLfixed *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetConvolutionParameterxvOES, glGetConvolutionParameterxvOES, GETCONVOLUTIONPARAMETERXVOES, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETCOVERAGEMODULATIONTABLENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetCoverageModulationTableNV, glGetCoverageModulationTableNV, GETCOVERAGEMODULATIONTABLENV, (AND GLsizei bufsize, GLfloat *v), (bufsize, v), &bufsize, GL_void_return) GL_PROCM(void, gl, GetCoverageModulationTableNV, glGetCoverageModulationTableNV, GETCOVERAGEMODULATIONTABLENV, (AND GLsizei bufsize, memptr v), (bufsize, v), &bufsize, GL_void_return) #endif #endif #ifndef NO_GLGETDEBUGLOGLENGTHMESA #if !defined(TINYGL_ONLY) GL_PROC(GLsizei, gl, GetDebugLogLengthMESA, glGetDebugLogLengthMESA, GETDEBUGLOGLENGTHMESA, (AND GLhandleARB obj, GLenum logType, GLenum shaderType), (obj, logType, shaderType), &obj, return (GLsizei)) GL_PROCM(GLsizei, gl, GetDebugLogLengthMESA, glGetDebugLogLengthMESA, GETDEBUGLOGLENGTHMESA, (AND GLhandleARB obj, GLenum logType, GLenum shaderType), (obj, logType, shaderType), &obj, return (GLsizei)) #endif #endif #ifndef NO_GLGETDEBUGLOGMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetDebugLogMESA, glGetDebugLogMESA, GETDEBUGLOGMESA, (AND GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength, GLsizei *length, GLcharARB *debugLog), (obj, logType, shaderType, maxLength, length, debugLog), &obj, GL_void_return) GL_PROCM(void, gl, GetDebugLogMESA, glGetDebugLogMESA, GETDEBUGLOGMESA, (AND GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength, memptr length, memptr debugLog), (obj, logType, shaderType, maxLength, length, debugLog), &obj, GL_void_return) #endif #endif #ifndef NO_GLGETDEBUGMESSAGELOG #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, GetDebugMessageLog, glGetDebugMessageLog, GETDEBUGMESSAGELOG, (AND GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog), (count, bufSize, sources, types, ids, severities, lengths, messageLog), &count, return (GLuint)) GL_PROCM(GLuint, gl, GetDebugMessageLog, glGetDebugMessageLog, GETDEBUGMESSAGELOG, (AND GLuint count, GLsizei bufSize, memptr sources, memptr types, memptr ids, memptr severities, memptr lengths, memptr messageLog), (count, bufSize, sources, types, ids, severities, lengths, messageLog), &count, return (GLuint)) #endif #endif #ifndef NO_GLGETDEBUGMESSAGELOGAMD #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, GetDebugMessageLogAMD, glGetDebugMessageLogAMD, GETDEBUGMESSAGELOGAMD, (AND GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message), (count, bufsize, categories, severities, ids, lengths, message), &count, return (GLuint)) GL_PROCM(GLuint, gl, GetDebugMessageLogAMD, glGetDebugMessageLogAMD, GETDEBUGMESSAGELOGAMD, (AND GLuint count, GLsizei bufsize, memptr categories, memptr severities, memptr ids, memptr lengths, memptr message), (count, bufsize, categories, severities, ids, lengths, message), &count, return (GLuint)) #endif #endif #ifndef NO_GLGETDEBUGMESSAGELOGARB #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, GetDebugMessageLogARB, glGetDebugMessageLogARB, GETDEBUGMESSAGELOGARB, (AND GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog), (count, bufSize, sources, types, ids, severities, lengths, messageLog), &count, return (GLuint)) GL_PROCM(GLuint, gl, GetDebugMessageLogARB, glGetDebugMessageLogARB, GETDEBUGMESSAGELOGARB, (AND GLuint count, GLsizei bufSize, memptr sources, memptr types, memptr ids, memptr severities, memptr lengths, memptr messageLog), (count, bufSize, sources, types, ids, severities, lengths, messageLog), &count, return (GLuint)) #endif #endif #ifndef NO_GLGETDETAILTEXFUNCSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetDetailTexFuncSGIS, glGetDetailTexFuncSGIS, GETDETAILTEXFUNCSGIS, (AND GLenum target, GLfloat *points), (target, points), &target, GL_void_return) GL_PROCM(void, gl, GetDetailTexFuncSGIS, glGetDetailTexFuncSGIS, GETDETAILTEXFUNCSGIS, (AND GLenum target, memptr points), (target, points), &target, GL_void_return) #endif #endif #ifndef NO_GLGETDOUBLEINDEXEDVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetDoubleIndexedvEXT, glGetDoubleIndexedvEXT, GETDOUBLEINDEXEDVEXT, (AND GLenum target, GLuint index, GLdouble *data), (target, index, data), &target, GL_void_return) GL_PROCM(void, gl, GetDoubleIndexedvEXT, glGetDoubleIndexedvEXT, GETDOUBLEINDEXEDVEXT, (AND GLenum target, GLuint index, memptr data), (target, index, data), &target, GL_void_return) #endif #endif #ifndef NO_GLGETDOUBLEI_V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetDoublei_v, glGetDoublei_v, GETDOUBLEI_V, (AND GLenum target, GLuint index, GLdouble *data), (target, index, data), &target, GL_void_return) GL_PROCM(void, gl, GetDoublei_v, glGetDoublei_v, GETDOUBLEI_V, (AND GLenum target, GLuint index, memptr data), (target, index, data), &target, GL_void_return) #endif #endif #ifndef NO_GLGETDOUBLEI_VEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetDoublei_vEXT, glGetDoublei_vEXT, GETDOUBLEI_VEXT, (AND GLenum pname, GLuint index, GLdouble *params), (pname, index, params), &pname, GL_void_return) GL_PROCM(void, gl, GetDoublei_vEXT, glGetDoublei_vEXT, GETDOUBLEI_VEXT, (AND GLenum pname, GLuint index, memptr params), (pname, index, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETDOUBLEV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetDoublev, glGetDoublev, GETDOUBLEV, (AND GLenum pname, GLdouble *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, GetDoublev, glGetDoublev, GETDOUBLEV, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETERROR #if !defined(TINYGL_ONLY) GL_PROC(GLenum, gl, GetError, glGetError, GETERROR, (NOTHING), (), NULL, return (GLenum)) GL_PROCM(GLenum, gl, GetError, glGetError, GETERROR, (NOTHING), (), NULL, return (GLenum)) #endif #endif #ifndef NO_GLGETFENCEIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFenceivNV, glGetFenceivNV, GETFENCEIVNV, (AND GLuint fence, GLenum pname, GLint *params), (fence, pname, params), &fence, GL_void_return) GL_PROCM(void, gl, GetFenceivNV, glGetFenceivNV, GETFENCEIVNV, (AND GLuint fence, GLenum pname, memptr params), (fence, pname, params), &fence, GL_void_return) #endif #endif #ifndef NO_GLGETFINALCOMBINERINPUTPARAMETERFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFinalCombinerInputParameterfvNV, glGetFinalCombinerInputParameterfvNV, GETFINALCOMBINERINPUTPARAMETERFVNV, (AND GLenum variable, GLenum pname, GLfloat *params), (variable, pname, params), &variable, GL_void_return) GL_PROCM(void, gl, GetFinalCombinerInputParameterfvNV, glGetFinalCombinerInputParameterfvNV, GETFINALCOMBINERINPUTPARAMETERFVNV, (AND GLenum variable, GLenum pname, memptr params), (variable, pname, params), &variable, GL_void_return) #endif #endif #ifndef NO_GLGETFINALCOMBINERINPUTPARAMETERIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFinalCombinerInputParameterivNV, glGetFinalCombinerInputParameterivNV, GETFINALCOMBINERINPUTPARAMETERIVNV, (AND GLenum variable, GLenum pname, GLint *params), (variable, pname, params), &variable, GL_void_return) GL_PROCM(void, gl, GetFinalCombinerInputParameterivNV, glGetFinalCombinerInputParameterivNV, GETFINALCOMBINERINPUTPARAMETERIVNV, (AND GLenum variable, GLenum pname, memptr params), (variable, pname, params), &variable, GL_void_return) #endif #endif #ifndef NO_GLGETFIRSTPERFQUERYIDINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFirstPerfQueryIdINTEL, glGetFirstPerfQueryIdINTEL, GETFIRSTPERFQUERYIDINTEL, (AND GLuint *queryId), (queryId), &queryId, GL_void_return) GL_PROCM(void, gl, GetFirstPerfQueryIdINTEL, glGetFirstPerfQueryIdINTEL, GETFIRSTPERFQUERYIDINTEL, (AND memptr queryId), (queryId), &queryId, GL_void_return) #endif #endif #ifndef NO_GLGETFIXEDVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFixedvOES, glGetFixedvOES, GETFIXEDVOES, (AND GLenum pname, GLfixed *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, GetFixedvOES, glGetFixedvOES, GETFIXEDVOES, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETFLOATINDEXEDVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFloatIndexedvEXT, glGetFloatIndexedvEXT, GETFLOATINDEXEDVEXT, (AND GLenum target, GLuint index, GLfloat *data), (target, index, data), &target, GL_void_return) GL_PROCM(void, gl, GetFloatIndexedvEXT, glGetFloatIndexedvEXT, GETFLOATINDEXEDVEXT, (AND GLenum target, GLuint index, memptr data), (target, index, data), &target, GL_void_return) #endif #endif #ifndef NO_GLGETFLOATI_V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFloati_v, glGetFloati_v, GETFLOATI_V, (AND GLenum target, GLuint index, GLfloat *data), (target, index, data), &target, GL_void_return) GL_PROCM(void, gl, GetFloati_v, glGetFloati_v, GETFLOATI_V, (AND GLenum target, GLuint index, memptr data), (target, index, data), &target, GL_void_return) #endif #endif #ifndef NO_GLGETFLOATI_VEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFloati_vEXT, glGetFloati_vEXT, GETFLOATI_VEXT, (AND GLenum pname, GLuint index, GLfloat *params), (pname, index, params), &pname, GL_void_return) GL_PROCM(void, gl, GetFloati_vEXT, glGetFloati_vEXT, GETFLOATI_VEXT, (AND GLenum pname, GLuint index, memptr params), (pname, index, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETFLOATV GL_PROC(void, gl, GetFloatv, glGetFloatv, GETFLOATV, (AND GLenum pname, GLfloat *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, GetFloatv, glGetFloatv, GETFLOATV, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #ifndef NO_GLGETFOGFUNCSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFogFuncSGIS, glGetFogFuncSGIS, GETFOGFUNCSGIS, (AND GLfloat *points), (points), &points, GL_void_return) GL_PROCM(void, gl, GetFogFuncSGIS, glGetFogFuncSGIS, GETFOGFUNCSGIS, (AND memptr points), (points), &points, GL_void_return) #endif #endif #ifndef NO_GLGETFRAGDATAINDEX #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, GetFragDataIndex, glGetFragDataIndex, GETFRAGDATAINDEX, (AND GLuint program, const GLchar *name), (program, name), &program, return (GLint)) GL_PROCM(GLint, gl, GetFragDataIndex, glGetFragDataIndex, GETFRAGDATAINDEX, (AND GLuint program, memptr name), (program, name), &program, return (GLint)) #endif #endif #ifndef NO_GLGETFRAGDATALOCATION #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, GetFragDataLocation, glGetFragDataLocation, GETFRAGDATALOCATION, (AND GLuint program, const GLchar *name), (program, name), &program, return (GLint)) GL_PROCM(GLint, gl, GetFragDataLocation, glGetFragDataLocation, GETFRAGDATALOCATION, (AND GLuint program, memptr name), (program, name), &program, return (GLint)) #endif #endif #ifndef NO_GLGETFRAGDATALOCATIONEXT #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, GetFragDataLocationEXT, glGetFragDataLocationEXT, GETFRAGDATALOCATIONEXT, (AND GLuint program, const GLchar *name), (program, name), &program, return (GLint)) GL_PROCM(GLint, gl, GetFragDataLocationEXT, glGetFragDataLocationEXT, GETFRAGDATALOCATIONEXT, (AND GLuint program, memptr name), (program, name), &program, return (GLint)) #endif #endif #ifndef NO_GLGETFRAGMENTLIGHTFVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFragmentLightfvSGIX, glGetFragmentLightfvSGIX, GETFRAGMENTLIGHTFVSGIX, (AND GLenum light, GLenum pname, GLfloat *params), (light, pname, params), &light, GL_void_return) GL_PROCM(void, gl, GetFragmentLightfvSGIX, glGetFragmentLightfvSGIX, GETFRAGMENTLIGHTFVSGIX, (AND GLenum light, GLenum pname, memptr params), (light, pname, params), &light, GL_void_return) #endif #endif #ifndef NO_GLGETFRAGMENTLIGHTIVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFragmentLightivSGIX, glGetFragmentLightivSGIX, GETFRAGMENTLIGHTIVSGIX, (AND GLenum light, GLenum pname, GLint *params), (light, pname, params), &light, GL_void_return) GL_PROCM(void, gl, GetFragmentLightivSGIX, glGetFragmentLightivSGIX, GETFRAGMENTLIGHTIVSGIX, (AND GLenum light, GLenum pname, memptr params), (light, pname, params), &light, GL_void_return) #endif #endif #ifndef NO_GLGETFRAGMENTMATERIALFVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFragmentMaterialfvSGIX, glGetFragmentMaterialfvSGIX, GETFRAGMENTMATERIALFVSGIX, (AND GLenum face, GLenum pname, GLfloat *params), (face, pname, params), &face, GL_void_return) GL_PROCM(void, gl, GetFragmentMaterialfvSGIX, glGetFragmentMaterialfvSGIX, GETFRAGMENTMATERIALFVSGIX, (AND GLenum face, GLenum pname, memptr params), (face, pname, params), &face, GL_void_return) #endif #endif #ifndef NO_GLGETFRAGMENTMATERIALIVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFragmentMaterialivSGIX, glGetFragmentMaterialivSGIX, GETFRAGMENTMATERIALIVSGIX, (AND GLenum face, GLenum pname, GLint *params), (face, pname, params), &face, GL_void_return) GL_PROCM(void, gl, GetFragmentMaterialivSGIX, glGetFragmentMaterialivSGIX, GETFRAGMENTMATERIALIVSGIX, (AND GLenum face, GLenum pname, memptr params), (face, pname, params), &face, GL_void_return) #endif #endif #ifndef NO_GLGETFRAMEBUFFERATTACHMENTPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameteriv, GETFRAMEBUFFERATTACHMENTPARAMETERIV, (AND GLenum target, GLenum attachment, GLenum pname, GLint *params), (target, attachment, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameteriv, GETFRAMEBUFFERATTACHMENTPARAMETERIV, (AND GLenum target, GLenum attachment, GLenum pname, memptr params), (target, attachment, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, GETFRAMEBUFFERATTACHMENTPARAMETERIVEXT, (AND GLenum target, GLenum attachment, GLenum pname, GLint *params), (target, attachment, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, GETFRAMEBUFFERATTACHMENTPARAMETERIVEXT, (AND GLenum target, GLenum attachment, GLenum pname, memptr params), (target, attachment, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETFRAMEBUFFERPARAMETERFVAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFramebufferParameterfvAMD, glGetFramebufferParameterfvAMD, GETFRAMEBUFFERPARAMETERFVAMD, (AND GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values), (target, pname, numsamples, pixelindex, size, values), &target, GL_void_return) GL_PROCM(void, gl, GetFramebufferParameterfvAMD, glGetFramebufferParameterfvAMD, GETFRAMEBUFFERPARAMETERFVAMD, (AND GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, memptr values), (target, pname, numsamples, pixelindex, size, values), &target, GL_void_return) #endif #endif #ifndef NO_GLGETFRAMEBUFFERPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFramebufferParameteriv, glGetFramebufferParameteriv, GETFRAMEBUFFERPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetFramebufferParameteriv, glGetFramebufferParameteriv, GETFRAMEBUFFERPARAMETERIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETFRAMEBUFFERPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetFramebufferParameterivEXT, glGetFramebufferParameterivEXT, GETFRAMEBUFFERPARAMETERIVEXT, (AND GLuint framebuffer, GLenum pname, GLint *params), (framebuffer, pname, params), &framebuffer, GL_void_return) GL_PROCM(void, gl, GetFramebufferParameterivEXT, glGetFramebufferParameterivEXT, GETFRAMEBUFFERPARAMETERIVEXT, (AND GLuint framebuffer, GLenum pname, memptr params), (framebuffer, pname, params), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLGETGRAPHICSRESETSTATUS #if !defined(TINYGL_ONLY) GL_PROC(GLenum, gl, GetGraphicsResetStatus, glGetGraphicsResetStatus, GETGRAPHICSRESETSTATUS, (NOTHING), (), NULL, return (GLenum)) GL_PROCM(GLenum, gl, GetGraphicsResetStatus, glGetGraphicsResetStatus, GETGRAPHICSRESETSTATUS, (NOTHING), (), NULL, return (GLenum)) #endif #endif #ifndef NO_GLGETGRAPHICSRESETSTATUSARB #if !defined(TINYGL_ONLY) GL_PROC(GLenum, gl, GetGraphicsResetStatusARB, glGetGraphicsResetStatusARB, GETGRAPHICSRESETSTATUSARB, (NOTHING), (), NULL, return (GLenum)) GL_PROCM(GLenum, gl, GetGraphicsResetStatusARB, glGetGraphicsResetStatusARB, GETGRAPHICSRESETSTATUSARB, (NOTHING), (), NULL, return (GLenum)) #endif #endif #ifndef NO_GLGETHANDLEARB #if !defined(TINYGL_ONLY) GL_PROC(GLhandleARB, gl, GetHandleARB, glGetHandleARB, GETHANDLEARB, (AND GLenum pname), (pname), &pname, return (GLhandleARB)) GL_PROCM(GLhandleARB, gl, GetHandleARB, glGetHandleARB, GETHANDLEARB, (AND GLenum pname), (pname), &pname, return (GLhandleARB)) #endif #endif #ifndef NO_GLGETHISTOGRAM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetHistogram, glGetHistogram, GETHISTOGRAM, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values), (target, reset, format, type, values), &target, GL_void_return) GL_PROCM(void, gl, GetHistogram, glGetHistogram, GETHISTOGRAM, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, memptr values), (target, reset, format, type, values), &target, GL_void_return) #endif #endif #ifndef NO_GLGETHISTOGRAMEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetHistogramEXT, glGetHistogramEXT, GETHISTOGRAMEXT, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values), (target, reset, format, type, values), &target, GL_void_return) GL_PROCM(void, gl, GetHistogramEXT, glGetHistogramEXT, GETHISTOGRAMEXT, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, memptr values), (target, reset, format, type, values), &target, GL_void_return) #endif #endif #ifndef NO_GLGETHISTOGRAMPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetHistogramParameterfv, glGetHistogramParameterfv, GETHISTOGRAMPARAMETERFV, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetHistogramParameterfv, glGetHistogramParameterfv, GETHISTOGRAMPARAMETERFV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETHISTOGRAMPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetHistogramParameterfvEXT, glGetHistogramParameterfvEXT, GETHISTOGRAMPARAMETERFVEXT, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetHistogramParameterfvEXT, glGetHistogramParameterfvEXT, GETHISTOGRAMPARAMETERFVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETHISTOGRAMPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetHistogramParameteriv, glGetHistogramParameteriv, GETHISTOGRAMPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetHistogramParameteriv, glGetHistogramParameteriv, GETHISTOGRAMPARAMETERIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETHISTOGRAMPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetHistogramParameterivEXT, glGetHistogramParameterivEXT, GETHISTOGRAMPARAMETERIVEXT, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetHistogramParameterivEXT, glGetHistogramParameterivEXT, GETHISTOGRAMPARAMETERIVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETHISTOGRAMPARAMETERXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetHistogramParameterxvOES, glGetHistogramParameterxvOES, GETHISTOGRAMPARAMETERXVOES, (AND GLenum target, GLenum pname, GLfixed *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetHistogramParameterxvOES, glGetHistogramParameterxvOES, GETHISTOGRAMPARAMETERXVOES, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETIMAGEHANDLEARB #if !defined(TINYGL_ONLY) GL_PROC64(GLuint64, gl, GetImageHandleARB, glGetImageHandleARB, GETIMAGEHANDLEARB, (AND GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format), (texture, level, layered, layer, format), &texture, return (GLuint64)) GL_PROC64M(GLuint64, gl, GetImageHandleARB, glGetImageHandleARB, GETIMAGEHANDLEARB, (AND GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format), (texture, level, layered, layer, format), &texture, return (GLuint64)) #endif #endif #ifndef NO_GLGETIMAGEHANDLENV #if !defined(TINYGL_ONLY) GL_PROC64(GLuint64, gl, GetImageHandleNV, glGetImageHandleNV, GETIMAGEHANDLENV, (AND GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format), (texture, level, layered, layer, format), &texture, return (GLuint64)) GL_PROC64M(GLuint64, gl, GetImageHandleNV, glGetImageHandleNV, GETIMAGEHANDLENV, (AND GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format), (texture, level, layered, layer, format), &texture, return (GLuint64)) #endif #endif #ifndef NO_GLGETIMAGETRANSFORMPARAMETERFVHP #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetImageTransformParameterfvHP, glGetImageTransformParameterfvHP, GETIMAGETRANSFORMPARAMETERFVHP, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetImageTransformParameterfvHP, glGetImageTransformParameterfvHP, GETIMAGETRANSFORMPARAMETERFVHP, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETIMAGETRANSFORMPARAMETERIVHP #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetImageTransformParameterivHP, glGetImageTransformParameterivHP, GETIMAGETRANSFORMPARAMETERIVHP, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetImageTransformParameterivHP, glGetImageTransformParameterivHP, GETIMAGETRANSFORMPARAMETERIVHP, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETINFOLOGARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetInfoLogARB, glGetInfoLogARB, GETINFOLOGARB, (AND GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog), (obj, maxLength, length, infoLog), &obj, GL_void_return) GL_PROCM(void, gl, GetInfoLogARB, glGetInfoLogARB, GETINFOLOGARB, (AND GLhandleARB obj, GLsizei maxLength, memptr length, memptr infoLog), (obj, maxLength, length, infoLog), &obj, GL_void_return) #endif #endif #ifndef NO_GLGETINSTRUMENTSSGIX #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, GetInstrumentsSGIX, glGetInstrumentsSGIX, GETINSTRUMENTSSGIX, (NOTHING), (), NULL, return (GLint)) GL_PROCM(GLint, gl, GetInstrumentsSGIX, glGetInstrumentsSGIX, GETINSTRUMENTSSGIX, (NOTHING), (), NULL, return (GLint)) #endif #endif #ifndef NO_GLGETINTEGER64I_V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetInteger64i_v, glGetInteger64i_v, GETINTEGER64I_V, (AND GLenum target, GLuint index, GLint64 *data), (target, index, data), &target, GL_void_return) GL_PROCM(void, gl, GetInteger64i_v, glGetInteger64i_v, GETINTEGER64I_V, (AND GLenum target, GLuint index, memptr data), (target, index, data), &target, GL_void_return) #endif #endif #ifndef NO_GLGETINTEGER64V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetInteger64v, glGetInteger64v, GETINTEGER64V, (AND GLenum pname, GLint64 *data), (pname, data), &pname, GL_void_return) GL_PROCM(void, gl, GetInteger64v, glGetInteger64v, GETINTEGER64V, (AND GLenum pname, memptr data), (pname, data), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETINTEGERINDEXEDVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, GETINTEGERINDEXEDVEXT, (AND GLenum target, GLuint index, GLint *data), (target, index, data), &target, GL_void_return) GL_PROCM(void, gl, GetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, GETINTEGERINDEXEDVEXT, (AND GLenum target, GLuint index, memptr data), (target, index, data), &target, GL_void_return) #endif #endif #ifndef NO_GLGETINTEGERI_V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetIntegeri_v, glGetIntegeri_v, GETINTEGERI_V, (AND GLenum target, GLuint index, GLint *data), (target, index, data), &target, GL_void_return) GL_PROCM(void, gl, GetIntegeri_v, glGetIntegeri_v, GETINTEGERI_V, (AND GLenum target, GLuint index, memptr data), (target, index, data), &target, GL_void_return) #endif #endif #ifndef NO_GLGETINTEGERUI64I_VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetIntegerui64i_vNV, glGetIntegerui64i_vNV, GETINTEGERUI64I_VNV, (AND GLenum value, GLuint index, GLuint64EXT *result), (value, index, result), &value, GL_void_return) GL_PROCM(void, gl, GetIntegerui64i_vNV, glGetIntegerui64i_vNV, GETINTEGERUI64I_VNV, (AND GLenum value, GLuint index, memptr result), (value, index, result), &value, GL_void_return) #endif #endif #ifndef NO_GLGETINTEGERUI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetIntegerui64vNV, glGetIntegerui64vNV, GETINTEGERUI64VNV, (AND GLenum value, GLuint64EXT *result), (value, result), &value, GL_void_return) GL_PROCM(void, gl, GetIntegerui64vNV, glGetIntegerui64vNV, GETINTEGERUI64VNV, (AND GLenum value, memptr result), (value, result), &value, GL_void_return) #endif #endif #ifndef NO_GLGETINTEGERV GL_PROC(void, gl, GetIntegerv, glGetIntegerv, GETINTEGERV, (AND GLenum pname, GLint *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, GetIntegerv, glGetIntegerv, GETINTEGERV, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #ifndef NO_GLGETINTERNALFORMATSAMPLEIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetInternalformatSampleivNV, glGetInternalformatSampleivNV, GETINTERNALFORMATSAMPLEIVNV, (AND GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params), (target, internalformat, samples, pname, bufSize, params), &target, GL_void_return) GL_PROCM(void, gl, GetInternalformatSampleivNV, glGetInternalformatSampleivNV, GETINTERNALFORMATSAMPLEIVNV, (AND GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, memptr params), (target, internalformat, samples, pname, bufSize, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETINTERNALFORMATI64V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetInternalformati64v, glGetInternalformati64v, GETINTERNALFORMATI64V, (AND GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params), (target, internalformat, pname, bufSize, params), &target, GL_void_return) GL_PROCM(void, gl, GetInternalformati64v, glGetInternalformati64v, GETINTERNALFORMATI64V, (AND GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, memptr params), (target, internalformat, pname, bufSize, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETINTERNALFORMATIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetInternalformativ, glGetInternalformativ, GETINTERNALFORMATIV, (AND GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params), (target, internalformat, pname, bufSize, params), &target, GL_void_return) GL_PROCM(void, gl, GetInternalformativ, glGetInternalformativ, GETINTERNALFORMATIV, (AND GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, memptr params), (target, internalformat, pname, bufSize, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETINVARIANTBOOLEANVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetInvariantBooleanvEXT, glGetInvariantBooleanvEXT, GETINVARIANTBOOLEANVEXT, (AND GLuint id, GLenum value, GLboolean *data), (id, value, data), &id, GL_void_return) GL_PROCM(void, gl, GetInvariantBooleanvEXT, glGetInvariantBooleanvEXT, GETINVARIANTBOOLEANVEXT, (AND GLuint id, GLenum value, memptr data), (id, value, data), &id, GL_void_return) #endif #endif #ifndef NO_GLGETINVARIANTFLOATVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetInvariantFloatvEXT, glGetInvariantFloatvEXT, GETINVARIANTFLOATVEXT, (AND GLuint id, GLenum value, GLfloat *data), (id, value, data), &id, GL_void_return) GL_PROCM(void, gl, GetInvariantFloatvEXT, glGetInvariantFloatvEXT, GETINVARIANTFLOATVEXT, (AND GLuint id, GLenum value, memptr data), (id, value, data), &id, GL_void_return) #endif #endif #ifndef NO_GLGETINVARIANTINTEGERVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetInvariantIntegervEXT, glGetInvariantIntegervEXT, GETINVARIANTINTEGERVEXT, (AND GLuint id, GLenum value, GLint *data), (id, value, data), &id, GL_void_return) GL_PROCM(void, gl, GetInvariantIntegervEXT, glGetInvariantIntegervEXT, GETINVARIANTINTEGERVEXT, (AND GLuint id, GLenum value, memptr data), (id, value, data), &id, GL_void_return) #endif #endif #ifndef NO_GLGETLIGHTFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetLightfv, glGetLightfv, GETLIGHTFV, (AND GLenum light, GLenum pname, GLfloat *params), (light, pname, params), &light, GL_void_return) GL_PROCM(void, gl, GetLightfv, glGetLightfv, GETLIGHTFV, (AND GLenum light, GLenum pname, memptr params), (light, pname, params), &light, GL_void_return) #endif #endif #ifndef NO_GLGETLIGHTIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetLightiv, glGetLightiv, GETLIGHTIV, (AND GLenum light, GLenum pname, GLint *params), (light, pname, params), &light, GL_void_return) GL_PROCM(void, gl, GetLightiv, glGetLightiv, GETLIGHTIV, (AND GLenum light, GLenum pname, memptr params), (light, pname, params), &light, GL_void_return) #endif #endif #ifndef NO_GLGETLIGHTXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetLightxOES, glGetLightxOES, GETLIGHTXOES, (AND GLenum light, GLenum pname, GLfixed *params), (light, pname, params), &light, GL_void_return) GL_PROCM(void, gl, GetLightxOES, glGetLightxOES, GETLIGHTXOES, (AND GLenum light, GLenum pname, memptr params), (light, pname, params), &light, GL_void_return) #endif #endif #ifndef NO_GLGETLISTPARAMETERFVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetListParameterfvSGIX, glGetListParameterfvSGIX, GETLISTPARAMETERFVSGIX, (AND GLuint list, GLenum pname, GLfloat *params), (list, pname, params), &list, GL_void_return) GL_PROCM(void, gl, GetListParameterfvSGIX, glGetListParameterfvSGIX, GETLISTPARAMETERFVSGIX, (AND GLuint list, GLenum pname, memptr params), (list, pname, params), &list, GL_void_return) #endif #endif #ifndef NO_GLGETLISTPARAMETERIVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetListParameterivSGIX, glGetListParameterivSGIX, GETLISTPARAMETERIVSGIX, (AND GLuint list, GLenum pname, GLint *params), (list, pname, params), &list, GL_void_return) GL_PROCM(void, gl, GetListParameterivSGIX, glGetListParameterivSGIX, GETLISTPARAMETERIVSGIX, (AND GLuint list, GLenum pname, memptr params), (list, pname, params), &list, GL_void_return) #endif #endif #ifndef NO_GLGETLOCALCONSTANTBOOLEANVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetLocalConstantBooleanvEXT, glGetLocalConstantBooleanvEXT, GETLOCALCONSTANTBOOLEANVEXT, (AND GLuint id, GLenum value, GLboolean *data), (id, value, data), &id, GL_void_return) GL_PROCM(void, gl, GetLocalConstantBooleanvEXT, glGetLocalConstantBooleanvEXT, GETLOCALCONSTANTBOOLEANVEXT, (AND GLuint id, GLenum value, memptr data), (id, value, data), &id, GL_void_return) #endif #endif #ifndef NO_GLGETLOCALCONSTANTFLOATVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetLocalConstantFloatvEXT, glGetLocalConstantFloatvEXT, GETLOCALCONSTANTFLOATVEXT, (AND GLuint id, GLenum value, GLfloat *data), (id, value, data), &id, GL_void_return) GL_PROCM(void, gl, GetLocalConstantFloatvEXT, glGetLocalConstantFloatvEXT, GETLOCALCONSTANTFLOATVEXT, (AND GLuint id, GLenum value, memptr data), (id, value, data), &id, GL_void_return) #endif #endif #ifndef NO_GLGETLOCALCONSTANTINTEGERVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetLocalConstantIntegervEXT, glGetLocalConstantIntegervEXT, GETLOCALCONSTANTINTEGERVEXT, (AND GLuint id, GLenum value, GLint *data), (id, value, data), &id, GL_void_return) GL_PROCM(void, gl, GetLocalConstantIntegervEXT, glGetLocalConstantIntegervEXT, GETLOCALCONSTANTINTEGERVEXT, (AND GLuint id, GLenum value, memptr data), (id, value, data), &id, GL_void_return) #endif #endif #ifndef NO_GLGETMAPATTRIBPARAMETERFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMapAttribParameterfvNV, glGetMapAttribParameterfvNV, GETMAPATTRIBPARAMETERFVNV, (AND GLenum target, GLuint index, GLenum pname, GLfloat *params), (target, index, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetMapAttribParameterfvNV, glGetMapAttribParameterfvNV, GETMAPATTRIBPARAMETERFVNV, (AND GLenum target, GLuint index, GLenum pname, memptr params), (target, index, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMAPATTRIBPARAMETERIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMapAttribParameterivNV, glGetMapAttribParameterivNV, GETMAPATTRIBPARAMETERIVNV, (AND GLenum target, GLuint index, GLenum pname, GLint *params), (target, index, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetMapAttribParameterivNV, glGetMapAttribParameterivNV, GETMAPATTRIBPARAMETERIVNV, (AND GLenum target, GLuint index, GLenum pname, memptr params), (target, index, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMAPCONTROLPOINTSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMapControlPointsNV, glGetMapControlPointsNV, GETMAPCONTROLPOINTSNV, (AND GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean32 packed, void *points), (target, index, type, ustride, vstride, packed, points), &target, GL_void_return) GL_PROCM(void, gl, GetMapControlPointsNV, glGetMapControlPointsNV, GETMAPCONTROLPOINTSNV, (AND GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean32 packed, memptr points), (target, index, type, ustride, vstride, packed, points), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMAPPARAMETERFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMapParameterfvNV, glGetMapParameterfvNV, GETMAPPARAMETERFVNV, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetMapParameterfvNV, glGetMapParameterfvNV, GETMAPPARAMETERFVNV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMAPPARAMETERIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMapParameterivNV, glGetMapParameterivNV, GETMAPPARAMETERIVNV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetMapParameterivNV, glGetMapParameterivNV, GETMAPPARAMETERIVNV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMAPDV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMapdv, glGetMapdv, GETMAPDV, (AND GLenum target, GLenum query, GLdouble *v), (target, query, v), &target, GL_void_return) GL_PROCM(void, gl, GetMapdv, glGetMapdv, GETMAPDV, (AND GLenum target, GLenum query, memptr v), (target, query, v), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMAPFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMapfv, glGetMapfv, GETMAPFV, (AND GLenum target, GLenum query, GLfloat *v), (target, query, v), &target, GL_void_return) GL_PROCM(void, gl, GetMapfv, glGetMapfv, GETMAPFV, (AND GLenum target, GLenum query, memptr v), (target, query, v), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMAPIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMapiv, glGetMapiv, GETMAPIV, (AND GLenum target, GLenum query, GLint *v), (target, query, v), &target, GL_void_return) GL_PROCM(void, gl, GetMapiv, glGetMapiv, GETMAPIV, (AND GLenum target, GLenum query, memptr v), (target, query, v), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMAPXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMapxvOES, glGetMapxvOES, GETMAPXVOES, (AND GLenum target, GLenum query, GLfixed *v), (target, query, v), &target, GL_void_return) GL_PROCM(void, gl, GetMapxvOES, glGetMapxvOES, GETMAPXVOES, (AND GLenum target, GLenum query, memptr v), (target, query, v), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMATERIALFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMaterialfv, glGetMaterialfv, GETMATERIALFV, (AND GLenum face, GLenum pname, GLfloat *params), (face, pname, params), &face, GL_void_return) GL_PROCM(void, gl, GetMaterialfv, glGetMaterialfv, GETMATERIALFV, (AND GLenum face, GLenum pname, memptr params), (face, pname, params), &face, GL_void_return) #endif #endif #ifndef NO_GLGETMATERIALIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMaterialiv, glGetMaterialiv, GETMATERIALIV, (AND GLenum face, GLenum pname, GLint *params), (face, pname, params), &face, GL_void_return) GL_PROCM(void, gl, GetMaterialiv, glGetMaterialiv, GETMATERIALIV, (AND GLenum face, GLenum pname, memptr params), (face, pname, params), &face, GL_void_return) #endif #endif #ifndef NO_GLGETMATERIALXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMaterialxOES, glGetMaterialxOES, GETMATERIALXOES, (AND GLenum face, GLenum pname, GLfixed param), (face, pname, param), &face, GL_void_return) GL_PROCM(void, gl, GetMaterialxOES, glGetMaterialxOES, GETMATERIALXOES, (AND GLenum face, GLenum pname, GLfixed param), (face, pname, param), &face, GL_void_return) #endif #endif #ifndef NO_GLGETMEMORYOBJECTPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMemoryObjectParameterivEXT, glGetMemoryObjectParameterivEXT, GETMEMORYOBJECTPARAMETERIVEXT, (AND GLuint memoryObject, GLenum pname, GLint *params), (memoryObject, pname, params), &memoryObject, GL_void_return) GL_PROCM(void, gl, GetMemoryObjectParameterivEXT, glGetMemoryObjectParameterivEXT, GETMEMORYOBJECTPARAMETERIVEXT, (AND GLuint memoryObject, GLenum pname, memptr params), (memoryObject, pname, params), &memoryObject, GL_void_return) #endif #endif #ifndef NO_GLGETMINMAX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMinmax, glGetMinmax, GETMINMAX, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values), (target, reset, format, type, values), &target, GL_void_return) GL_PROCM(void, gl, GetMinmax, glGetMinmax, GETMINMAX, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, memptr values), (target, reset, format, type, values), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMINMAXEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMinmaxEXT, glGetMinmaxEXT, GETMINMAXEXT, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values), (target, reset, format, type, values), &target, GL_void_return) GL_PROCM(void, gl, GetMinmaxEXT, glGetMinmaxEXT, GETMINMAXEXT, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, memptr values), (target, reset, format, type, values), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMINMAXPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMinmaxParameterfv, glGetMinmaxParameterfv, GETMINMAXPARAMETERFV, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetMinmaxParameterfv, glGetMinmaxParameterfv, GETMINMAXPARAMETERFV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMINMAXPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMinmaxParameterfvEXT, glGetMinmaxParameterfvEXT, GETMINMAXPARAMETERFVEXT, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetMinmaxParameterfvEXT, glGetMinmaxParameterfvEXT, GETMINMAXPARAMETERFVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMINMAXPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMinmaxParameteriv, glGetMinmaxParameteriv, GETMINMAXPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetMinmaxParameteriv, glGetMinmaxParameteriv, GETMINMAXPARAMETERIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMINMAXPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMinmaxParameterivEXT, glGetMinmaxParameterivEXT, GETMINMAXPARAMETERIVEXT, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetMinmaxParameterivEXT, glGetMinmaxParameterivEXT, GETMINMAXPARAMETERIVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETMULTITEXENVFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMultiTexEnvfvEXT, glGetMultiTexEnvfvEXT, GETMULTITEXENVFVEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLfloat *params), (texunit, target, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, GetMultiTexEnvfvEXT, glGetMultiTexEnvfvEXT, GETMULTITEXENVFVEXT, (AND GLenum texunit, GLenum target, GLenum pname, memptr params), (texunit, target, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLGETMULTITEXENVIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMultiTexEnvivEXT, glGetMultiTexEnvivEXT, GETMULTITEXENVIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLint *params), (texunit, target, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, GetMultiTexEnvivEXT, glGetMultiTexEnvivEXT, GETMULTITEXENVIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, memptr params), (texunit, target, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLGETMULTITEXGENDVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMultiTexGendvEXT, glGetMultiTexGendvEXT, GETMULTITEXGENDVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLdouble *params), (texunit, coord, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, GetMultiTexGendvEXT, glGetMultiTexGendvEXT, GETMULTITEXGENDVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, memptr params), (texunit, coord, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLGETMULTITEXGENFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMultiTexGenfvEXT, glGetMultiTexGenfvEXT, GETMULTITEXGENFVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLfloat *params), (texunit, coord, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, GetMultiTexGenfvEXT, glGetMultiTexGenfvEXT, GETMULTITEXGENFVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, memptr params), (texunit, coord, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLGETMULTITEXGENIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMultiTexGenivEXT, glGetMultiTexGenivEXT, GETMULTITEXGENIVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLint *params), (texunit, coord, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, GetMultiTexGenivEXT, glGetMultiTexGenivEXT, GETMULTITEXGENIVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, memptr params), (texunit, coord, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLGETMULTITEXIMAGEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMultiTexImageEXT, glGetMultiTexImageEXT, GETMULTITEXIMAGEEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels), (texunit, target, level, format, type, pixels), &texunit, GL_void_return) GL_PROCM(void, gl, GetMultiTexImageEXT, glGetMultiTexImageEXT, GETMULTITEXIMAGEEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, memptr pixels), (texunit, target, level, format, type, pixels), &texunit, GL_void_return) #endif #endif #ifndef NO_GLGETMULTITEXLEVELPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMultiTexLevelParameterfvEXT, glGetMultiTexLevelParameterfvEXT, GETMULTITEXLEVELPARAMETERFVEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params), (texunit, target, level, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, GetMultiTexLevelParameterfvEXT, glGetMultiTexLevelParameterfvEXT, GETMULTITEXLEVELPARAMETERFVEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum pname, memptr params), (texunit, target, level, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLGETMULTITEXLEVELPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMultiTexLevelParameterivEXT, glGetMultiTexLevelParameterivEXT, GETMULTITEXLEVELPARAMETERIVEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params), (texunit, target, level, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, GetMultiTexLevelParameterivEXT, glGetMultiTexLevelParameterivEXT, GETMULTITEXLEVELPARAMETERIVEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum pname, memptr params), (texunit, target, level, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLGETMULTITEXPARAMETERIIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMultiTexParameterIivEXT, glGetMultiTexParameterIivEXT, GETMULTITEXPARAMETERIIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLint *params), (texunit, target, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, GetMultiTexParameterIivEXT, glGetMultiTexParameterIivEXT, GETMULTITEXPARAMETERIIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, memptr params), (texunit, target, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLGETMULTITEXPARAMETERIUIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMultiTexParameterIuivEXT, glGetMultiTexParameterIuivEXT, GETMULTITEXPARAMETERIUIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLuint *params), (texunit, target, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, GetMultiTexParameterIuivEXT, glGetMultiTexParameterIuivEXT, GETMULTITEXPARAMETERIUIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, memptr params), (texunit, target, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLGETMULTITEXPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMultiTexParameterfvEXT, glGetMultiTexParameterfvEXT, GETMULTITEXPARAMETERFVEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLfloat *params), (texunit, target, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, GetMultiTexParameterfvEXT, glGetMultiTexParameterfvEXT, GETMULTITEXPARAMETERFVEXT, (AND GLenum texunit, GLenum target, GLenum pname, memptr params), (texunit, target, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLGETMULTITEXPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMultiTexParameterivEXT, glGetMultiTexParameterivEXT, GETMULTITEXPARAMETERIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLint *params), (texunit, target, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, GetMultiTexParameterivEXT, glGetMultiTexParameterivEXT, GETMULTITEXPARAMETERIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, memptr params), (texunit, target, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLGETMULTISAMPLEFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMultisamplefv, glGetMultisamplefv, GETMULTISAMPLEFV, (AND GLenum pname, GLuint index, GLfloat *val), (pname, index, val), &pname, GL_void_return) GL_PROCM(void, gl, GetMultisamplefv, glGetMultisamplefv, GETMULTISAMPLEFV, (AND GLenum pname, GLuint index, memptr val), (pname, index, val), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETMULTISAMPLEFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetMultisamplefvNV, glGetMultisamplefvNV, GETMULTISAMPLEFVNV, (AND GLenum pname, GLuint index, GLfloat *val), (pname, index, val), &pname, GL_void_return) GL_PROCM(void, gl, GetMultisamplefvNV, glGetMultisamplefvNV, GETMULTISAMPLEFVNV, (AND GLenum pname, GLuint index, memptr val), (pname, index, val), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDBUFFERPARAMETERI64V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedBufferParameteri64v, glGetNamedBufferParameteri64v, GETNAMEDBUFFERPARAMETERI64V, (AND GLuint buffer, GLenum pname, GLint64 *params), (buffer, pname, params), &buffer, GL_void_return) GL_PROCM(void, gl, GetNamedBufferParameteri64v, glGetNamedBufferParameteri64v, GETNAMEDBUFFERPARAMETERI64V, (AND GLuint buffer, GLenum pname, memptr params), (buffer, pname, params), &buffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDBUFFERPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedBufferParameteriv, glGetNamedBufferParameteriv, GETNAMEDBUFFERPARAMETERIV, (AND GLuint buffer, GLenum pname, GLint *params), (buffer, pname, params), &buffer, GL_void_return) GL_PROCM(void, gl, GetNamedBufferParameteriv, glGetNamedBufferParameteriv, GETNAMEDBUFFERPARAMETERIV, (AND GLuint buffer, GLenum pname, memptr params), (buffer, pname, params), &buffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDBUFFERPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedBufferParameterivEXT, glGetNamedBufferParameterivEXT, GETNAMEDBUFFERPARAMETERIVEXT, (AND GLuint buffer, GLenum pname, GLint *params), (buffer, pname, params), &buffer, GL_void_return) GL_PROCM(void, gl, GetNamedBufferParameterivEXT, glGetNamedBufferParameterivEXT, GETNAMEDBUFFERPARAMETERIVEXT, (AND GLuint buffer, GLenum pname, memptr params), (buffer, pname, params), &buffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDBUFFERPARAMETERUI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedBufferParameterui64vNV, glGetNamedBufferParameterui64vNV, GETNAMEDBUFFERPARAMETERUI64VNV, (AND GLuint buffer, GLenum pname, GLuint64EXT *params), (buffer, pname, params), &buffer, GL_void_return) GL_PROCM(void, gl, GetNamedBufferParameterui64vNV, glGetNamedBufferParameterui64vNV, GETNAMEDBUFFERPARAMETERUI64VNV, (AND GLuint buffer, GLenum pname, memptr params), (buffer, pname, params), &buffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDBUFFERPOINTERV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedBufferPointerv, glGetNamedBufferPointerv, GETNAMEDBUFFERPOINTERV, (AND GLuint buffer, GLenum pname, void * *params), (buffer, pname, params), &buffer, GL_void_return) GL_PROCM(void, gl, GetNamedBufferPointerv, glGetNamedBufferPointerv, GETNAMEDBUFFERPOINTERV, (AND GLuint buffer, GLenum pname, memptr params), (buffer, pname, params), &buffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDBUFFERPOINTERVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedBufferPointervEXT, glGetNamedBufferPointervEXT, GETNAMEDBUFFERPOINTERVEXT, (AND GLuint buffer, GLenum pname, void * *params), (buffer, pname, params), &buffer, GL_void_return) GL_PROCM(void, gl, GetNamedBufferPointervEXT, glGetNamedBufferPointervEXT, GETNAMEDBUFFERPOINTERVEXT, (AND GLuint buffer, GLenum pname, memptr params), (buffer, pname, params), &buffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDBUFFERSUBDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedBufferSubData, glGetNamedBufferSubData, GETNAMEDBUFFERSUBDATA, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, void *data), (buffer, offset, size, data), &buffer, GL_void_return) GL_PROCM(void, gl, GetNamedBufferSubData, glGetNamedBufferSubData, GETNAMEDBUFFERSUBDATA, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, memptr data), (buffer, offset, size, data), &buffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDBUFFERSUBDATAEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedBufferSubDataEXT, glGetNamedBufferSubDataEXT, GETNAMEDBUFFERSUBDATAEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, void *data), (buffer, offset, size, data), &buffer, GL_void_return) GL_PROCM(void, gl, GetNamedBufferSubDataEXT, glGetNamedBufferSubDataEXT, GETNAMEDBUFFERSUBDATAEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, memptr data), (buffer, offset, size, data), &buffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedFramebufferAttachmentParameteriv, glGetNamedFramebufferAttachmentParameteriv, GETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV, (AND GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params), (framebuffer, attachment, pname, params), &framebuffer, GL_void_return) GL_PROCM(void, gl, GetNamedFramebufferAttachmentParameteriv, glGetNamedFramebufferAttachmentParameteriv, GETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV, (AND GLuint framebuffer, GLenum attachment, GLenum pname, memptr params), (framebuffer, attachment, pname, params), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedFramebufferAttachmentParameterivEXT, glGetNamedFramebufferAttachmentParameterivEXT, GETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT, (AND GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params), (framebuffer, attachment, pname, params), &framebuffer, GL_void_return) GL_PROCM(void, gl, GetNamedFramebufferAttachmentParameterivEXT, glGetNamedFramebufferAttachmentParameterivEXT, GETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT, (AND GLuint framebuffer, GLenum attachment, GLenum pname, memptr params), (framebuffer, attachment, pname, params), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDFRAMEBUFFERPARAMETERFVAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedFramebufferParameterfvAMD, glGetNamedFramebufferParameterfvAMD, GETNAMEDFRAMEBUFFERPARAMETERFVAMD, (AND GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values), (framebuffer, pname, numsamples, pixelindex, size, values), &framebuffer, GL_void_return) GL_PROCM(void, gl, GetNamedFramebufferParameterfvAMD, glGetNamedFramebufferParameterfvAMD, GETNAMEDFRAMEBUFFERPARAMETERFVAMD, (AND GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, memptr values), (framebuffer, pname, numsamples, pixelindex, size, values), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDFRAMEBUFFERPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedFramebufferParameteriv, glGetNamedFramebufferParameteriv, GETNAMEDFRAMEBUFFERPARAMETERIV, (AND GLuint framebuffer, GLenum pname, GLint *param), (framebuffer, pname, param), &framebuffer, GL_void_return) GL_PROCM(void, gl, GetNamedFramebufferParameteriv, glGetNamedFramebufferParameteriv, GETNAMEDFRAMEBUFFERPARAMETERIV, (AND GLuint framebuffer, GLenum pname, memptr param), (framebuffer, pname, param), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDFRAMEBUFFERPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedFramebufferParameterivEXT, glGetNamedFramebufferParameterivEXT, GETNAMEDFRAMEBUFFERPARAMETERIVEXT, (AND GLuint framebuffer, GLenum pname, GLint *params), (framebuffer, pname, params), &framebuffer, GL_void_return) GL_PROCM(void, gl, GetNamedFramebufferParameterivEXT, glGetNamedFramebufferParameterivEXT, GETNAMEDFRAMEBUFFERPARAMETERIVEXT, (AND GLuint framebuffer, GLenum pname, memptr params), (framebuffer, pname, params), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDPROGRAMLOCALPARAMETERIIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedProgramLocalParameterIivEXT, glGetNamedProgramLocalParameterIivEXT, GETNAMEDPROGRAMLOCALPARAMETERIIVEXT, (AND GLuint program, GLenum target, GLuint index, GLint *params), (program, target, index, params), &program, GL_void_return) GL_PROCM(void, gl, GetNamedProgramLocalParameterIivEXT, glGetNamedProgramLocalParameterIivEXT, GETNAMEDPROGRAMLOCALPARAMETERIIVEXT, (AND GLuint program, GLenum target, GLuint index, memptr params), (program, target, index, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedProgramLocalParameterIuivEXT, glGetNamedProgramLocalParameterIuivEXT, GETNAMEDPROGRAMLOCALPARAMETERIUIVEXT, (AND GLuint program, GLenum target, GLuint index, GLuint *params), (program, target, index, params), &program, GL_void_return) GL_PROCM(void, gl, GetNamedProgramLocalParameterIuivEXT, glGetNamedProgramLocalParameterIuivEXT, GETNAMEDPROGRAMLOCALPARAMETERIUIVEXT, (AND GLuint program, GLenum target, GLuint index, memptr params), (program, target, index, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDPROGRAMLOCALPARAMETERDVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedProgramLocalParameterdvEXT, glGetNamedProgramLocalParameterdvEXT, GETNAMEDPROGRAMLOCALPARAMETERDVEXT, (AND GLuint program, GLenum target, GLuint index, GLdouble *params), (program, target, index, params), &program, GL_void_return) GL_PROCM(void, gl, GetNamedProgramLocalParameterdvEXT, glGetNamedProgramLocalParameterdvEXT, GETNAMEDPROGRAMLOCALPARAMETERDVEXT, (AND GLuint program, GLenum target, GLuint index, memptr params), (program, target, index, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDPROGRAMLOCALPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedProgramLocalParameterfvEXT, glGetNamedProgramLocalParameterfvEXT, GETNAMEDPROGRAMLOCALPARAMETERFVEXT, (AND GLuint program, GLenum target, GLuint index, GLfloat *params), (program, target, index, params), &program, GL_void_return) GL_PROCM(void, gl, GetNamedProgramLocalParameterfvEXT, glGetNamedProgramLocalParameterfvEXT, GETNAMEDPROGRAMLOCALPARAMETERFVEXT, (AND GLuint program, GLenum target, GLuint index, memptr params), (program, target, index, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDPROGRAMSTRINGEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedProgramStringEXT, glGetNamedProgramStringEXT, GETNAMEDPROGRAMSTRINGEXT, (AND GLuint program, GLenum target, GLenum pname, void *string), (program, target, pname, string), &program, GL_void_return) GL_PROCM(void, gl, GetNamedProgramStringEXT, glGetNamedProgramStringEXT, GETNAMEDPROGRAMSTRINGEXT, (AND GLuint program, GLenum target, GLenum pname, memptr string), (program, target, pname, string), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDPROGRAMIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedProgramivEXT, glGetNamedProgramivEXT, GETNAMEDPROGRAMIVEXT, (AND GLuint program, GLenum target, GLenum pname, GLint *params), (program, target, pname, params), &program, GL_void_return) GL_PROCM(void, gl, GetNamedProgramivEXT, glGetNamedProgramivEXT, GETNAMEDPROGRAMIVEXT, (AND GLuint program, GLenum target, GLenum pname, memptr params), (program, target, pname, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDRENDERBUFFERPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedRenderbufferParameteriv, glGetNamedRenderbufferParameteriv, GETNAMEDRENDERBUFFERPARAMETERIV, (AND GLuint renderbuffer, GLenum pname, GLint *params), (renderbuffer, pname, params), &renderbuffer, GL_void_return) GL_PROCM(void, gl, GetNamedRenderbufferParameteriv, glGetNamedRenderbufferParameteriv, GETNAMEDRENDERBUFFERPARAMETERIV, (AND GLuint renderbuffer, GLenum pname, memptr params), (renderbuffer, pname, params), &renderbuffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDRENDERBUFFERPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedRenderbufferParameterivEXT, glGetNamedRenderbufferParameterivEXT, GETNAMEDRENDERBUFFERPARAMETERIVEXT, (AND GLuint renderbuffer, GLenum pname, GLint *params), (renderbuffer, pname, params), &renderbuffer, GL_void_return) GL_PROCM(void, gl, GetNamedRenderbufferParameterivEXT, glGetNamedRenderbufferParameterivEXT, GETNAMEDRENDERBUFFERPARAMETERIVEXT, (AND GLuint renderbuffer, GLenum pname, memptr params), (renderbuffer, pname, params), &renderbuffer, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDSTRINGARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedStringARB, glGetNamedStringARB, GETNAMEDSTRINGARB, (AND GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string), (namelen, name, bufSize, stringlen, string), &namelen, GL_void_return) GL_PROCM(void, gl, GetNamedStringARB, glGetNamedStringARB, GETNAMEDSTRINGARB, (AND GLint namelen, memptr name, GLsizei bufSize, memptr stringlen, memptr string), (namelen, name, bufSize, stringlen, string), &namelen, GL_void_return) #endif #endif #ifndef NO_GLGETNAMEDSTRINGIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNamedStringivARB, glGetNamedStringivARB, GETNAMEDSTRINGIVARB, (AND GLint namelen, const GLchar *name, GLenum pname, GLint *params), (namelen, name, pname, params), &namelen, GL_void_return) GL_PROCM(void, gl, GetNamedStringivARB, glGetNamedStringivARB, GETNAMEDSTRINGIVARB, (AND GLint namelen, memptr name, GLenum pname, memptr params), (namelen, name, pname, params), &namelen, GL_void_return) #endif #endif #ifndef NO_GLGETNEXTPERFQUERYIDINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetNextPerfQueryIdINTEL, glGetNextPerfQueryIdINTEL, GETNEXTPERFQUERYIDINTEL, (AND GLuint queryId, GLuint *nextQueryId), (queryId, nextQueryId), &queryId, GL_void_return) GL_PROCM(void, gl, GetNextPerfQueryIdINTEL, glGetNextPerfQueryIdINTEL, GETNEXTPERFQUERYIDINTEL, (AND GLuint queryId, memptr nextQueryId), (queryId, nextQueryId), &queryId, GL_void_return) #endif #endif #ifndef NO_GLGETOBJECTBUFFERFVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetObjectBufferfvATI, glGetObjectBufferfvATI, GETOBJECTBUFFERFVATI, (AND GLuint buffer, GLenum pname, GLfloat *params), (buffer, pname, params), &buffer, GL_void_return) GL_PROCM(void, gl, GetObjectBufferfvATI, glGetObjectBufferfvATI, GETOBJECTBUFFERFVATI, (AND GLuint buffer, GLenum pname, memptr params), (buffer, pname, params), &buffer, GL_void_return) #endif #endif #ifndef NO_GLGETOBJECTBUFFERIVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetObjectBufferivATI, glGetObjectBufferivATI, GETOBJECTBUFFERIVATI, (AND GLuint buffer, GLenum pname, GLint *params), (buffer, pname, params), &buffer, GL_void_return) GL_PROCM(void, gl, GetObjectBufferivATI, glGetObjectBufferivATI, GETOBJECTBUFFERIVATI, (AND GLuint buffer, GLenum pname, memptr params), (buffer, pname, params), &buffer, GL_void_return) #endif #endif #ifndef NO_GLGETOBJECTLABEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetObjectLabel, glGetObjectLabel, GETOBJECTLABEL, (AND GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label), (identifier, name, bufSize, length, label), &identifier, GL_void_return) GL_PROCM(void, gl, GetObjectLabel, glGetObjectLabel, GETOBJECTLABEL, (AND GLenum identifier, GLuint name, GLsizei bufSize, memptr length, memptr label), (identifier, name, bufSize, length, label), &identifier, GL_void_return) #endif #endif #ifndef NO_GLGETOBJECTLABELEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetObjectLabelEXT, glGetObjectLabelEXT, GETOBJECTLABELEXT, (AND GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label), (type, object, bufSize, length, label), &type, GL_void_return) GL_PROCM(void, gl, GetObjectLabelEXT, glGetObjectLabelEXT, GETOBJECTLABELEXT, (AND GLenum type, GLuint object, GLsizei bufSize, memptr length, memptr label), (type, object, bufSize, length, label), &type, GL_void_return) #endif #endif #ifndef NO_GLGETOBJECTPARAMETERFVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetObjectParameterfvARB, glGetObjectParameterfvARB, GETOBJECTPARAMETERFVARB, (AND GLhandleARB obj, GLenum pname, GLfloat *params), (obj, pname, params), &obj, GL_void_return) GL_PROCM(void, gl, GetObjectParameterfvARB, glGetObjectParameterfvARB, GETOBJECTPARAMETERFVARB, (AND GLhandleARB obj, GLenum pname, memptr params), (obj, pname, params), &obj, GL_void_return) #endif #endif #ifndef NO_GLGETOBJECTPARAMETERIVAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, GETOBJECTPARAMETERIVAPPLE, (AND GLenum objectType, GLuint name, GLenum pname, GLint *params), (objectType, name, pname, params), &objectType, GL_void_return) GL_PROCM(void, gl, GetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, GETOBJECTPARAMETERIVAPPLE, (AND GLenum objectType, GLuint name, GLenum pname, memptr params), (objectType, name, pname, params), &objectType, GL_void_return) #endif #endif #ifndef NO_GLGETOBJECTPARAMETERIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetObjectParameterivARB, glGetObjectParameterivARB, GETOBJECTPARAMETERIVARB, (AND GLhandleARB obj, GLenum pname, GLint *params), (obj, pname, params), &obj, GL_void_return) GL_PROCM(void, gl, GetObjectParameterivARB, glGetObjectParameterivARB, GETOBJECTPARAMETERIVARB, (AND GLhandleARB obj, GLenum pname, memptr params), (obj, pname, params), &obj, GL_void_return) #endif #endif #ifndef NO_GLGETOBJECTPTRLABEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetObjectPtrLabel, glGetObjectPtrLabel, GETOBJECTPTRLABEL, (AND const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label), (ptr, bufSize, length, label), &ptr, GL_void_return) GL_PROCM(void, gl, GetObjectPtrLabel, glGetObjectPtrLabel, GETOBJECTPTRLABEL, (AND memptr ptr, GLsizei bufSize, memptr length, memptr label), (ptr, bufSize, length, label), &ptr, GL_void_return) #endif #endif #ifndef NO_GLGETOCCLUSIONQUERYIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetOcclusionQueryivNV, glGetOcclusionQueryivNV, GETOCCLUSIONQUERYIVNV, (AND GLuint id, GLenum pname, GLint *params), (id, pname, params), &id, GL_void_return) GL_PROCM(void, gl, GetOcclusionQueryivNV, glGetOcclusionQueryivNV, GETOCCLUSIONQUERYIVNV, (AND GLuint id, GLenum pname, memptr params), (id, pname, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETOCCLUSIONQUERYUIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetOcclusionQueryuivNV, glGetOcclusionQueryuivNV, GETOCCLUSIONQUERYUIVNV, (AND GLuint id, GLenum pname, GLuint *params), (id, pname, params), &id, GL_void_return) GL_PROCM(void, gl, GetOcclusionQueryuivNV, glGetOcclusionQueryuivNV, GETOCCLUSIONQUERYUIVNV, (AND GLuint id, GLenum pname, memptr params), (id, pname, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETPATHCOLORGENFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPathColorGenfvNV, glGetPathColorGenfvNV, GETPATHCOLORGENFVNV, (AND GLenum color, GLenum pname, GLfloat *value), (color, pname, value), &color, GL_void_return) GL_PROCM(void, gl, GetPathColorGenfvNV, glGetPathColorGenfvNV, GETPATHCOLORGENFVNV, (AND GLenum color, GLenum pname, memptr value), (color, pname, value), &color, GL_void_return) #endif #endif #ifndef NO_GLGETPATHCOLORGENIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPathColorGenivNV, glGetPathColorGenivNV, GETPATHCOLORGENIVNV, (AND GLenum color, GLenum pname, GLint *value), (color, pname, value), &color, GL_void_return) GL_PROCM(void, gl, GetPathColorGenivNV, glGetPathColorGenivNV, GETPATHCOLORGENIVNV, (AND GLenum color, GLenum pname, memptr value), (color, pname, value), &color, GL_void_return) #endif #endif #ifndef NO_GLGETPATHCOMMANDSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPathCommandsNV, glGetPathCommandsNV, GETPATHCOMMANDSNV, (AND GLuint path, GLubyte *commands), (path, commands), &path, GL_void_return) GL_PROCM(void, gl, GetPathCommandsNV, glGetPathCommandsNV, GETPATHCOMMANDSNV, (AND GLuint path, memptr commands), (path, commands), &path, GL_void_return) #endif #endif #ifndef NO_GLGETPATHCOORDSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPathCoordsNV, glGetPathCoordsNV, GETPATHCOORDSNV, (AND GLuint path, GLfloat *coords), (path, coords), &path, GL_void_return) GL_PROCM(void, gl, GetPathCoordsNV, glGetPathCoordsNV, GETPATHCOORDSNV, (AND GLuint path, memptr coords), (path, coords), &path, GL_void_return) #endif #endif #ifndef NO_GLGETPATHDASHARRAYNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPathDashArrayNV, glGetPathDashArrayNV, GETPATHDASHARRAYNV, (AND GLuint path, GLfloat *dashArray), (path, dashArray), &path, GL_void_return) GL_PROCM(void, gl, GetPathDashArrayNV, glGetPathDashArrayNV, GETPATHDASHARRAYNV, (AND GLuint path, memptr dashArray), (path, dashArray), &path, GL_void_return) #endif #endif #ifndef NO_GLGETPATHLENGTHNV #if !defined(TINYGL_ONLY) GL_PROC(GLfloat, gl, GetPathLengthNV, glGetPathLengthNV, GETPATHLENGTHNV, (AND GLuint path, GLsizei startSegment, GLsizei numSegments), (path, startSegment, numSegments), &path, return (GLfloat)) GL_PROCM(GLfloat, gl, GetPathLengthNV, glGetPathLengthNV, GETPATHLENGTHNV, (AND GLuint path, GLsizei startSegment, GLsizei numSegments), (path, startSegment, numSegments), &path, return (GLfloat)) #endif #endif #ifndef NO_GLGETPATHMETRICRANGENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPathMetricRangeNV, glGetPathMetricRangeNV, GETPATHMETRICRANGENV, (AND GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics), (metricQueryMask, firstPathName, numPaths, stride, metrics), &metricQueryMask, GL_void_return) GL_PROCM(void, gl, GetPathMetricRangeNV, glGetPathMetricRangeNV, GETPATHMETRICRANGENV, (AND GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, memptr metrics), (metricQueryMask, firstPathName, numPaths, stride, metrics), &metricQueryMask, GL_void_return) #endif #endif #ifndef NO_GLGETPATHMETRICSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPathMetricsNV, glGetPathMetricsNV, GETPATHMETRICSNV, (AND GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics), (metricQueryMask, numPaths, pathNameType, paths, pathBase, stride, metrics), &metricQueryMask, GL_void_return) GL_PROCM(void, gl, GetPathMetricsNV, glGetPathMetricsNV, GETPATHMETRICSNV, (AND GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLsizei stride, memptr metrics), (metricQueryMask, numPaths, pathNameType, paths, pathBase, stride, metrics), &metricQueryMask, GL_void_return) #endif #endif #ifndef NO_GLGETPATHPARAMETERFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPathParameterfvNV, glGetPathParameterfvNV, GETPATHPARAMETERFVNV, (AND GLuint path, GLenum pname, GLfloat *value), (path, pname, value), &path, GL_void_return) GL_PROCM(void, gl, GetPathParameterfvNV, glGetPathParameterfvNV, GETPATHPARAMETERFVNV, (AND GLuint path, GLenum pname, memptr value), (path, pname, value), &path, GL_void_return) #endif #endif #ifndef NO_GLGETPATHPARAMETERIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPathParameterivNV, glGetPathParameterivNV, GETPATHPARAMETERIVNV, (AND GLuint path, GLenum pname, GLint *value), (path, pname, value), &path, GL_void_return) GL_PROCM(void, gl, GetPathParameterivNV, glGetPathParameterivNV, GETPATHPARAMETERIVNV, (AND GLuint path, GLenum pname, memptr value), (path, pname, value), &path, GL_void_return) #endif #endif #ifndef NO_GLGETPATHSPACINGNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPathSpacingNV, glGetPathSpacingNV, GETPATHSPACINGNV, (AND GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing), (pathListMode, numPaths, pathNameType, paths, pathBase, advanceScale, kerningScale, transformType, returnedSpacing), &pathListMode, GL_void_return) GL_PROCM(void, gl, GetPathSpacingNV, glGetPathSpacingNV, GETPATHSPACINGNV, (AND GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, memptr returnedSpacing), (pathListMode, numPaths, pathNameType, paths, pathBase, advanceScale, kerningScale, transformType, returnedSpacing), &pathListMode, GL_void_return) #endif #endif #ifndef NO_GLGETPATHTEXGENFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPathTexGenfvNV, glGetPathTexGenfvNV, GETPATHTEXGENFVNV, (AND GLenum texCoordSet, GLenum pname, GLfloat *value), (texCoordSet, pname, value), &texCoordSet, GL_void_return) GL_PROCM(void, gl, GetPathTexGenfvNV, glGetPathTexGenfvNV, GETPATHTEXGENFVNV, (AND GLenum texCoordSet, GLenum pname, memptr value), (texCoordSet, pname, value), &texCoordSet, GL_void_return) #endif #endif #ifndef NO_GLGETPATHTEXGENIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPathTexGenivNV, glGetPathTexGenivNV, GETPATHTEXGENIVNV, (AND GLenum texCoordSet, GLenum pname, GLint *value), (texCoordSet, pname, value), &texCoordSet, GL_void_return) GL_PROCM(void, gl, GetPathTexGenivNV, glGetPathTexGenivNV, GETPATHTEXGENIVNV, (AND GLenum texCoordSet, GLenum pname, memptr value), (texCoordSet, pname, value), &texCoordSet, GL_void_return) #endif #endif #ifndef NO_GLGETPERFCOUNTERINFOINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPerfCounterInfoINTEL, glGetPerfCounterInfoINTEL, GETPERFCOUNTERINFOINTEL, (AND GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue), (queryId, counterId, counterNameLength, counterName, counterDescLength, counterDesc, counterOffset, counterDataSize, counterTypeEnum, counterDataTypeEnum, rawCounterMaxValue), &queryId, GL_void_return) GL_PROCM(void, gl, GetPerfCounterInfoINTEL, glGetPerfCounterInfoINTEL, GETPERFCOUNTERINFOINTEL, (AND GLuint queryId, GLuint counterId, GLuint counterNameLength, memptr counterName, GLuint counterDescLength, memptr counterDesc, memptr counterOffset, memptr counterDataSize, memptr counterTypeEnum, memptr counterDataTypeEnum, memptr rawCounterMaxValue), (queryId, counterId, counterNameLength, counterName, counterDescLength, counterDesc, counterOffset, counterDataSize, counterTypeEnum, counterDataTypeEnum, rawCounterMaxValue), &queryId, GL_void_return) #endif #endif #ifndef NO_GLGETPERFMONITORCOUNTERDATAAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPerfMonitorCounterDataAMD, glGetPerfMonitorCounterDataAMD, GETPERFMONITORCOUNTERDATAAMD, (AND GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten), (monitor, pname, dataSize, data, bytesWritten), &monitor, GL_void_return) GL_PROCM(void, gl, GetPerfMonitorCounterDataAMD, glGetPerfMonitorCounterDataAMD, GETPERFMONITORCOUNTERDATAAMD, (AND GLuint monitor, GLenum pname, GLsizei dataSize, memptr data, memptr bytesWritten), (monitor, pname, dataSize, data, bytesWritten), &monitor, GL_void_return) #endif #endif #ifndef NO_GLGETPERFMONITORCOUNTERINFOAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPerfMonitorCounterInfoAMD, glGetPerfMonitorCounterInfoAMD, GETPERFMONITORCOUNTERINFOAMD, (AND GLuint group, GLuint counter, GLenum pname, void *data), (group, counter, pname, data), &group, GL_void_return) GL_PROCM(void, gl, GetPerfMonitorCounterInfoAMD, glGetPerfMonitorCounterInfoAMD, GETPERFMONITORCOUNTERINFOAMD, (AND GLuint group, GLuint counter, GLenum pname, memptr data), (group, counter, pname, data), &group, GL_void_return) #endif #endif #ifndef NO_GLGETPERFMONITORCOUNTERSTRINGAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPerfMonitorCounterStringAMD, glGetPerfMonitorCounterStringAMD, GETPERFMONITORCOUNTERSTRINGAMD, (AND GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString), (group, counter, bufSize, length, counterString), &group, GL_void_return) GL_PROCM(void, gl, GetPerfMonitorCounterStringAMD, glGetPerfMonitorCounterStringAMD, GETPERFMONITORCOUNTERSTRINGAMD, (AND GLuint group, GLuint counter, GLsizei bufSize, memptr length, memptr counterString), (group, counter, bufSize, length, counterString), &group, GL_void_return) #endif #endif #ifndef NO_GLGETPERFMONITORCOUNTERSAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPerfMonitorCountersAMD, glGetPerfMonitorCountersAMD, GETPERFMONITORCOUNTERSAMD, (AND GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters), (group, numCounters, maxActiveCounters, counterSize, counters), &group, GL_void_return) GL_PROCM(void, gl, GetPerfMonitorCountersAMD, glGetPerfMonitorCountersAMD, GETPERFMONITORCOUNTERSAMD, (AND GLuint group, memptr numCounters, memptr maxActiveCounters, GLsizei counterSize, memptr counters), (group, numCounters, maxActiveCounters, counterSize, counters), &group, GL_void_return) #endif #endif #ifndef NO_GLGETPERFMONITORGROUPSTRINGAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPerfMonitorGroupStringAMD, glGetPerfMonitorGroupStringAMD, GETPERFMONITORGROUPSTRINGAMD, (AND GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString), (group, bufSize, length, groupString), &group, GL_void_return) GL_PROCM(void, gl, GetPerfMonitorGroupStringAMD, glGetPerfMonitorGroupStringAMD, GETPERFMONITORGROUPSTRINGAMD, (AND GLuint group, GLsizei bufSize, memptr length, memptr groupString), (group, bufSize, length, groupString), &group, GL_void_return) #endif #endif #ifndef NO_GLGETPERFMONITORGROUPSAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPerfMonitorGroupsAMD, glGetPerfMonitorGroupsAMD, GETPERFMONITORGROUPSAMD, (AND GLint *numGroups, GLsizei groupsSize, GLuint *groups), (numGroups, groupsSize, groups), &numGroups, GL_void_return) GL_PROCM(void, gl, GetPerfMonitorGroupsAMD, glGetPerfMonitorGroupsAMD, GETPERFMONITORGROUPSAMD, (AND memptr numGroups, GLsizei groupsSize, memptr groups), (numGroups, groupsSize, groups), &numGroups, GL_void_return) #endif #endif #ifndef NO_GLGETPERFQUERYDATAINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPerfQueryDataINTEL, glGetPerfQueryDataINTEL, GETPERFQUERYDATAINTEL, (AND GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten), (queryHandle, flags, dataSize, data, bytesWritten), &queryHandle, GL_void_return) GL_PROCM(void, gl, GetPerfQueryDataINTEL, glGetPerfQueryDataINTEL, GETPERFQUERYDATAINTEL, (AND GLuint queryHandle, GLuint flags, GLsizei dataSize, memptr data, memptr bytesWritten), (queryHandle, flags, dataSize, data, bytesWritten), &queryHandle, GL_void_return) #endif #endif #ifndef NO_GLGETPERFQUERYIDBYNAMEINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPerfQueryIdByNameINTEL, glGetPerfQueryIdByNameINTEL, GETPERFQUERYIDBYNAMEINTEL, (AND GLchar *queryName, GLuint *queryId), (queryName, queryId), &queryName, GL_void_return) GL_PROCM(void, gl, GetPerfQueryIdByNameINTEL, glGetPerfQueryIdByNameINTEL, GETPERFQUERYIDBYNAMEINTEL, (AND memptr queryName, memptr queryId), (queryName, queryId), &queryName, GL_void_return) #endif #endif #ifndef NO_GLGETPERFQUERYINFOINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPerfQueryInfoINTEL, glGetPerfQueryInfoINTEL, GETPERFQUERYINFOINTEL, (AND GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask), (queryId, queryNameLength, queryName, dataSize, noCounters, noInstances, capsMask), &queryId, GL_void_return) GL_PROCM(void, gl, GetPerfQueryInfoINTEL, glGetPerfQueryInfoINTEL, GETPERFQUERYINFOINTEL, (AND GLuint queryId, GLuint queryNameLength, memptr queryName, memptr dataSize, memptr noCounters, memptr noInstances, memptr capsMask), (queryId, queryNameLength, queryName, dataSize, noCounters, noInstances, capsMask), &queryId, GL_void_return) #endif #endif #ifndef NO_GLGETPIXELMAPFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPixelMapfv, glGetPixelMapfv, GETPIXELMAPFV, (AND GLenum map, GLfloat *values), (map, values), &map, GL_void_return) GL_PROCM(void, gl, GetPixelMapfv, glGetPixelMapfv, GETPIXELMAPFV, (AND GLenum map, memptr values), (map, values), &map, GL_void_return) #endif #endif #ifndef NO_GLGETPIXELMAPUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPixelMapuiv, glGetPixelMapuiv, GETPIXELMAPUIV, (AND GLenum map, GLuint *values), (map, values), &map, GL_void_return) GL_PROCM(void, gl, GetPixelMapuiv, glGetPixelMapuiv, GETPIXELMAPUIV, (AND GLenum map, memptr values), (map, values), &map, GL_void_return) #endif #endif #ifndef NO_GLGETPIXELMAPUSV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPixelMapusv, glGetPixelMapusv, GETPIXELMAPUSV, (AND GLenum map, GLushort *values), (map, values), &map, GL_void_return) GL_PROCM(void, gl, GetPixelMapusv, glGetPixelMapusv, GETPIXELMAPUSV, (AND GLenum map, memptr values), (map, values), &map, GL_void_return) #endif #endif #ifndef NO_GLGETPIXELMAPXV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPixelMapxv, glGetPixelMapxv, GETPIXELMAPXV, (AND GLenum map, GLint size, GLfixed *values), (map, size, values), &map, GL_void_return) GL_PROCM(void, gl, GetPixelMapxv, glGetPixelMapxv, GETPIXELMAPXV, (AND GLenum map, GLint size, memptr values), (map, size, values), &map, GL_void_return) #endif #endif #ifndef NO_GLGETPIXELTEXGENPARAMETERFVSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPixelTexGenParameterfvSGIS, glGetPixelTexGenParameterfvSGIS, GETPIXELTEXGENPARAMETERFVSGIS, (AND GLenum pname, GLfloat *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, GetPixelTexGenParameterfvSGIS, glGetPixelTexGenParameterfvSGIS, GETPIXELTEXGENPARAMETERFVSGIS, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETPIXELTEXGENPARAMETERIVSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPixelTexGenParameterivSGIS, glGetPixelTexGenParameterivSGIS, GETPIXELTEXGENPARAMETERIVSGIS, (AND GLenum pname, GLint *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, GetPixelTexGenParameterivSGIS, glGetPixelTexGenParameterivSGIS, GETPIXELTEXGENPARAMETERIVSGIS, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETPIXELTRANSFORMPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPixelTransformParameterfvEXT, glGetPixelTransformParameterfvEXT, GETPIXELTRANSFORMPARAMETERFVEXT, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetPixelTransformParameterfvEXT, glGetPixelTransformParameterfvEXT, GETPIXELTRANSFORMPARAMETERFVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPIXELTRANSFORMPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPixelTransformParameterivEXT, glGetPixelTransformParameterivEXT, GETPIXELTRANSFORMPARAMETERIVEXT, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetPixelTransformParameterivEXT, glGetPixelTransformParameterivEXT, GETPIXELTRANSFORMPARAMETERIVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPOINTERINDEXEDVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPointerIndexedvEXT, glGetPointerIndexedvEXT, GETPOINTERINDEXEDVEXT, (AND GLenum target, GLuint index, void * *data), (target, index, data), &target, GL_void_return) GL_PROCM(void, gl, GetPointerIndexedvEXT, glGetPointerIndexedvEXT, GETPOINTERINDEXEDVEXT, (AND GLenum target, GLuint index, memptr data), (target, index, data), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPOINTERI_VEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPointeri_vEXT, glGetPointeri_vEXT, GETPOINTERI_VEXT, (AND GLenum pname, GLuint index, void * *params), (pname, index, params), &pname, GL_void_return) GL_PROCM(void, gl, GetPointeri_vEXT, glGetPointeri_vEXT, GETPOINTERI_VEXT, (AND GLenum pname, GLuint index, memptr params), (pname, index, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETPOINTERV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPointerv, glGetPointerv, GETPOINTERV, (AND GLenum pname, GLvoid* *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, GetPointerv, glGetPointerv, GETPOINTERV, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETPOINTERVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPointervEXT, glGetPointervEXT, GETPOINTERVEXT, (AND GLenum pname, void * *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, GetPointervEXT, glGetPointervEXT, GETPOINTERVEXT, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETPOLYGONSTIPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetPolygonStipple, glGetPolygonStipple, GETPOLYGONSTIPPLE, (AND GLubyte *mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, GetPolygonStipple, glGetPolygonStipple, GETPOLYGONSTIPPLE, (AND memptr mask), (mask), &mask, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMBINARY #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramBinary, glGetProgramBinary, GETPROGRAMBINARY, (AND GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary), (program, bufSize, length, binaryFormat, binary), &program, GL_void_return) GL_PROCM(void, gl, GetProgramBinary, glGetProgramBinary, GETPROGRAMBINARY, (AND GLuint program, GLsizei bufSize, memptr length, memptr binaryFormat, memptr binary), (program, bufSize, length, binaryFormat, binary), &program, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMENVPARAMETERIIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramEnvParameterIivNV, glGetProgramEnvParameterIivNV, GETPROGRAMENVPARAMETERIIVNV, (AND GLenum target, GLuint index, GLint *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, GetProgramEnvParameterIivNV, glGetProgramEnvParameterIivNV, GETPROGRAMENVPARAMETERIIVNV, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMENVPARAMETERIUIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramEnvParameterIuivNV, glGetProgramEnvParameterIuivNV, GETPROGRAMENVPARAMETERIUIVNV, (AND GLenum target, GLuint index, GLuint *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, GetProgramEnvParameterIuivNV, glGetProgramEnvParameterIuivNV, GETPROGRAMENVPARAMETERIUIVNV, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMENVPARAMETERDVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramEnvParameterdvARB, glGetProgramEnvParameterdvARB, GETPROGRAMENVPARAMETERDVARB, (AND GLenum target, GLuint index, GLdouble *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, GetProgramEnvParameterdvARB, glGetProgramEnvParameterdvARB, GETPROGRAMENVPARAMETERDVARB, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMENVPARAMETERFVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramEnvParameterfvARB, glGetProgramEnvParameterfvARB, GETPROGRAMENVPARAMETERFVARB, (AND GLenum target, GLuint index, GLfloat *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, GetProgramEnvParameterfvARB, glGetProgramEnvParameterfvARB, GETPROGRAMENVPARAMETERFVARB, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMINFOLOG #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramInfoLog, glGetProgramInfoLog, GETPROGRAMINFOLOG, (AND GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog), (program, bufSize, length, infoLog), &program, GL_void_return) GL_PROCM(void, gl, GetProgramInfoLog, glGetProgramInfoLog, GETPROGRAMINFOLOG, (AND GLuint program, GLsizei bufSize, memptr length, memptr infoLog), (program, bufSize, length, infoLog), &program, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMINTERFACEIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramInterfaceiv, glGetProgramInterfaceiv, GETPROGRAMINTERFACEIV, (AND GLuint program, GLenum programInterface, GLenum pname, GLint *params), (program, programInterface, pname, params), &program, GL_void_return) GL_PROCM(void, gl, GetProgramInterfaceiv, glGetProgramInterfaceiv, GETPROGRAMINTERFACEIV, (AND GLuint program, GLenum programInterface, GLenum pname, memptr params), (program, programInterface, pname, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMLOCALPARAMETERIIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramLocalParameterIivNV, glGetProgramLocalParameterIivNV, GETPROGRAMLOCALPARAMETERIIVNV, (AND GLenum target, GLuint index, GLint *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, GetProgramLocalParameterIivNV, glGetProgramLocalParameterIivNV, GETPROGRAMLOCALPARAMETERIIVNV, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMLOCALPARAMETERIUIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramLocalParameterIuivNV, glGetProgramLocalParameterIuivNV, GETPROGRAMLOCALPARAMETERIUIVNV, (AND GLenum target, GLuint index, GLuint *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, GetProgramLocalParameterIuivNV, glGetProgramLocalParameterIuivNV, GETPROGRAMLOCALPARAMETERIUIVNV, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMLOCALPARAMETERDVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramLocalParameterdvARB, glGetProgramLocalParameterdvARB, GETPROGRAMLOCALPARAMETERDVARB, (AND GLenum target, GLuint index, GLdouble *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, GetProgramLocalParameterdvARB, glGetProgramLocalParameterdvARB, GETPROGRAMLOCALPARAMETERDVARB, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMLOCALPARAMETERFVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramLocalParameterfvARB, glGetProgramLocalParameterfvARB, GETPROGRAMLOCALPARAMETERFVARB, (AND GLenum target, GLuint index, GLfloat *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, GetProgramLocalParameterfvARB, glGetProgramLocalParameterfvARB, GETPROGRAMLOCALPARAMETERFVARB, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMNAMEDPARAMETERDVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, GETPROGRAMNAMEDPARAMETERDVNV, (AND GLuint id, GLsizei len, const GLubyte *name, GLdouble *params), (id, len, name, params), &id, GL_void_return) GL_PROCM(void, gl, GetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, GETPROGRAMNAMEDPARAMETERDVNV, (AND GLuint id, GLsizei len, memptr name, memptr params), (id, len, name, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMNAMEDPARAMETERFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, GETPROGRAMNAMEDPARAMETERFVNV, (AND GLuint id, GLsizei len, const GLubyte *name, GLfloat *params), (id, len, name, params), &id, GL_void_return) GL_PROCM(void, gl, GetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, GETPROGRAMNAMEDPARAMETERFVNV, (AND GLuint id, GLsizei len, memptr name, memptr params), (id, len, name, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMPARAMETERDVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramParameterdvNV, glGetProgramParameterdvNV, GETPROGRAMPARAMETERDVNV, (AND GLenum target, GLuint index, GLenum pname, GLdouble *params), (target, index, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetProgramParameterdvNV, glGetProgramParameterdvNV, GETPROGRAMPARAMETERDVNV, (AND GLenum target, GLuint index, GLenum pname, memptr params), (target, index, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMPARAMETERFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramParameterfvNV, glGetProgramParameterfvNV, GETPROGRAMPARAMETERFVNV, (AND GLenum target, GLuint index, GLenum pname, GLfloat *params), (target, index, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetProgramParameterfvNV, glGetProgramParameterfvNV, GETPROGRAMPARAMETERFVNV, (AND GLenum target, GLuint index, GLenum pname, memptr params), (target, index, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMPIPELINEINFOLOG #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramPipelineInfoLog, glGetProgramPipelineInfoLog, GETPROGRAMPIPELINEINFOLOG, (AND GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog), (pipeline, bufSize, length, infoLog), &pipeline, GL_void_return) GL_PROCM(void, gl, GetProgramPipelineInfoLog, glGetProgramPipelineInfoLog, GETPROGRAMPIPELINEINFOLOG, (AND GLuint pipeline, GLsizei bufSize, memptr length, memptr infoLog), (pipeline, bufSize, length, infoLog), &pipeline, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMPIPELINEIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramPipelineiv, glGetProgramPipelineiv, GETPROGRAMPIPELINEIV, (AND GLuint pipeline, GLenum pname, GLint *params), (pipeline, pname, params), &pipeline, GL_void_return) GL_PROCM(void, gl, GetProgramPipelineiv, glGetProgramPipelineiv, GETPROGRAMPIPELINEIV, (AND GLuint pipeline, GLenum pname, memptr params), (pipeline, pname, params), &pipeline, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMREGISTERFVMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramRegisterfvMESA, glGetProgramRegisterfvMESA, GETPROGRAMREGISTERFVMESA, (AND GLenum target, GLsizei len, const GLubyte *name, GLfloat *v), (target, len, name, v), &target, GL_void_return) GL_PROCM(void, gl, GetProgramRegisterfvMESA, glGetProgramRegisterfvMESA, GETPROGRAMREGISTERFVMESA, (AND GLenum target, GLsizei len, memptr name, memptr v), (target, len, name, v), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMRESOURCEINDEX #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, GetProgramResourceIndex, glGetProgramResourceIndex, GETPROGRAMRESOURCEINDEX, (AND GLuint program, GLenum programInterface, const GLchar *name), (program, programInterface, name), &program, return (GLuint)) GL_PROCM(GLuint, gl, GetProgramResourceIndex, glGetProgramResourceIndex, GETPROGRAMRESOURCEINDEX, (AND GLuint program, GLenum programInterface, memptr name), (program, programInterface, name), &program, return (GLuint)) #endif #endif #ifndef NO_GLGETPROGRAMRESOURCELOCATION #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, GetProgramResourceLocation, glGetProgramResourceLocation, GETPROGRAMRESOURCELOCATION, (AND GLuint program, GLenum programInterface, const GLchar *name), (program, programInterface, name), &program, return (GLint)) GL_PROCM(GLint, gl, GetProgramResourceLocation, glGetProgramResourceLocation, GETPROGRAMRESOURCELOCATION, (AND GLuint program, GLenum programInterface, memptr name), (program, programInterface, name), &program, return (GLint)) #endif #endif #ifndef NO_GLGETPROGRAMRESOURCELOCATIONINDEX #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, GetProgramResourceLocationIndex, glGetProgramResourceLocationIndex, GETPROGRAMRESOURCELOCATIONINDEX, (AND GLuint program, GLenum programInterface, const GLchar *name), (program, programInterface, name), &program, return (GLint)) GL_PROCM(GLint, gl, GetProgramResourceLocationIndex, glGetProgramResourceLocationIndex, GETPROGRAMRESOURCELOCATIONINDEX, (AND GLuint program, GLenum programInterface, memptr name), (program, programInterface, name), &program, return (GLint)) #endif #endif #ifndef NO_GLGETPROGRAMRESOURCENAME #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramResourceName, glGetProgramResourceName, GETPROGRAMRESOURCENAME, (AND GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name), (program, programInterface, index, bufSize, length, name), &program, GL_void_return) GL_PROCM(void, gl, GetProgramResourceName, glGetProgramResourceName, GETPROGRAMRESOURCENAME, (AND GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, memptr length, memptr name), (program, programInterface, index, bufSize, length, name), &program, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMRESOURCEFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramResourcefvNV, glGetProgramResourcefvNV, GETPROGRAMRESOURCEFVNV, (AND GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params), (program, programInterface, index, propCount, props, bufSize, length, params), &program, GL_void_return) GL_PROCM(void, gl, GetProgramResourcefvNV, glGetProgramResourcefvNV, GETPROGRAMRESOURCEFVNV, (AND GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, memptr props, GLsizei bufSize, memptr length, memptr params), (program, programInterface, index, propCount, props, bufSize, length, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMRESOURCEIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramResourceiv, glGetProgramResourceiv, GETPROGRAMRESOURCEIV, (AND GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params), (program, programInterface, index, propCount, props, bufSize, length, params), &program, GL_void_return) GL_PROCM(void, gl, GetProgramResourceiv, glGetProgramResourceiv, GETPROGRAMRESOURCEIV, (AND GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, memptr props, GLsizei bufSize, memptr length, memptr params), (program, programInterface, index, propCount, props, bufSize, length, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMSTAGEIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramStageiv, glGetProgramStageiv, GETPROGRAMSTAGEIV, (AND GLuint program, GLenum shadertype, GLenum pname, GLint *values), (program, shadertype, pname, values), &program, GL_void_return) GL_PROCM(void, gl, GetProgramStageiv, glGetProgramStageiv, GETPROGRAMSTAGEIV, (AND GLuint program, GLenum shadertype, GLenum pname, memptr values), (program, shadertype, pname, values), &program, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMSTRINGARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramStringARB, glGetProgramStringARB, GETPROGRAMSTRINGARB, (AND GLenum target, GLenum pname, void *string), (target, pname, string), &target, GL_void_return) GL_PROCM(void, gl, GetProgramStringARB, glGetProgramStringARB, GETPROGRAMSTRINGARB, (AND GLenum target, GLenum pname, memptr string), (target, pname, string), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMSTRINGNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramStringNV, glGetProgramStringNV, GETPROGRAMSTRINGNV, (AND GLuint id, GLenum pname, GLubyte *program), (id, pname, program), &id, GL_void_return) GL_PROCM(void, gl, GetProgramStringNV, glGetProgramStringNV, GETPROGRAMSTRINGNV, (AND GLuint id, GLenum pname, memptr program), (id, pname, program), &id, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMSUBROUTINEPARAMETERUIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramSubroutineParameteruivNV, glGetProgramSubroutineParameteruivNV, GETPROGRAMSUBROUTINEPARAMETERUIVNV, (AND GLenum target, GLuint index, GLuint *param), (target, index, param), &target, GL_void_return) GL_PROCM(void, gl, GetProgramSubroutineParameteruivNV, glGetProgramSubroutineParameteruivNV, GETPROGRAMSUBROUTINEPARAMETERUIVNV, (AND GLenum target, GLuint index, memptr param), (target, index, param), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramiv, glGetProgramiv, GETPROGRAMIV, (AND GLuint program, GLenum pname, GLint *params), (program, pname, params), &program, GL_void_return) GL_PROCM(void, gl, GetProgramiv, glGetProgramiv, GETPROGRAMIV, (AND GLuint program, GLenum pname, memptr params), (program, pname, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramivARB, glGetProgramivARB, GETPROGRAMIVARB, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetProgramivARB, glGetProgramivARB, GETPROGRAMIVARB, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETPROGRAMIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetProgramivNV, glGetProgramivNV, GETPROGRAMIVNV, (AND GLuint id, GLenum pname, GLint *params), (id, pname, params), &id, GL_void_return) GL_PROCM(void, gl, GetProgramivNV, glGetProgramivNV, GETPROGRAMIVNV, (AND GLuint id, GLenum pname, memptr params), (id, pname, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYBUFFEROBJECTI64V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryBufferObjecti64v, glGetQueryBufferObjecti64v, GETQUERYBUFFEROBJECTI64V, (AND GLuint id, GLuint buffer, GLenum pname, GLintptr offset), (id, buffer, pname, offset), &id, GL_void_return) GL_PROCM(void, gl, GetQueryBufferObjecti64v, glGetQueryBufferObjecti64v, GETQUERYBUFFEROBJECTI64V, (AND GLuint id, GLuint buffer, GLenum pname, GLintptr offset), (id, buffer, pname, offset), &id, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYBUFFEROBJECTIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryBufferObjectiv, glGetQueryBufferObjectiv, GETQUERYBUFFEROBJECTIV, (AND GLuint id, GLuint buffer, GLenum pname, GLintptr offset), (id, buffer, pname, offset), &id, GL_void_return) GL_PROCM(void, gl, GetQueryBufferObjectiv, glGetQueryBufferObjectiv, GETQUERYBUFFEROBJECTIV, (AND GLuint id, GLuint buffer, GLenum pname, GLintptr offset), (id, buffer, pname, offset), &id, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYBUFFEROBJECTUI64V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryBufferObjectui64v, glGetQueryBufferObjectui64v, GETQUERYBUFFEROBJECTUI64V, (AND GLuint id, GLuint buffer, GLenum pname, GLintptr offset), (id, buffer, pname, offset), &id, GL_void_return) GL_PROCM(void, gl, GetQueryBufferObjectui64v, glGetQueryBufferObjectui64v, GETQUERYBUFFEROBJECTUI64V, (AND GLuint id, GLuint buffer, GLenum pname, GLintptr offset), (id, buffer, pname, offset), &id, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYBUFFEROBJECTUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryBufferObjectuiv, glGetQueryBufferObjectuiv, GETQUERYBUFFEROBJECTUIV, (AND GLuint id, GLuint buffer, GLenum pname, GLintptr offset), (id, buffer, pname, offset), &id, GL_void_return) GL_PROCM(void, gl, GetQueryBufferObjectuiv, glGetQueryBufferObjectuiv, GETQUERYBUFFEROBJECTUIV, (AND GLuint id, GLuint buffer, GLenum pname, GLintptr offset), (id, buffer, pname, offset), &id, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYINDEXEDIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryIndexediv, glGetQueryIndexediv, GETQUERYINDEXEDIV, (AND GLenum target, GLuint index, GLenum pname, GLint *params), (target, index, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetQueryIndexediv, glGetQueryIndexediv, GETQUERYINDEXEDIV, (AND GLenum target, GLuint index, GLenum pname, memptr params), (target, index, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYOBJECTI64V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryObjecti64v, glGetQueryObjecti64v, GETQUERYOBJECTI64V, (AND GLuint id, GLenum pname, GLint64 *params), (id, pname, params), &id, GL_void_return) GL_PROCM(void, gl, GetQueryObjecti64v, glGetQueryObjecti64v, GETQUERYOBJECTI64V, (AND GLuint id, GLenum pname, memptr params), (id, pname, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYOBJECTI64VEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryObjecti64vEXT, glGetQueryObjecti64vEXT, GETQUERYOBJECTI64VEXT, (AND GLuint id, GLenum pname, GLint64 *params), (id, pname, params), &id, GL_void_return) GL_PROCM(void, gl, GetQueryObjecti64vEXT, glGetQueryObjecti64vEXT, GETQUERYOBJECTI64VEXT, (AND GLuint id, GLenum pname, memptr params), (id, pname, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYOBJECTIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryObjectiv, glGetQueryObjectiv, GETQUERYOBJECTIV, (AND GLuint id, GLenum pname, GLint *params), (id, pname, params), &id, GL_void_return) GL_PROCM(void, gl, GetQueryObjectiv, glGetQueryObjectiv, GETQUERYOBJECTIV, (AND GLuint id, GLenum pname, memptr params), (id, pname, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYOBJECTIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryObjectivARB, glGetQueryObjectivARB, GETQUERYOBJECTIVARB, (AND GLuint id, GLenum pname, GLint *params), (id, pname, params), &id, GL_void_return) GL_PROCM(void, gl, GetQueryObjectivARB, glGetQueryObjectivARB, GETQUERYOBJECTIVARB, (AND GLuint id, GLenum pname, memptr params), (id, pname, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYOBJECTUI64V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryObjectui64v, glGetQueryObjectui64v, GETQUERYOBJECTUI64V, (AND GLuint id, GLenum pname, GLuint64 *params), (id, pname, params), &id, GL_void_return) GL_PROCM(void, gl, GetQueryObjectui64v, glGetQueryObjectui64v, GETQUERYOBJECTUI64V, (AND GLuint id, GLenum pname, memptr params), (id, pname, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYOBJECTUI64VEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryObjectui64vEXT, glGetQueryObjectui64vEXT, GETQUERYOBJECTUI64VEXT, (AND GLuint id, GLenum pname, GLuint64 *params), (id, pname, params), &id, GL_void_return) GL_PROCM(void, gl, GetQueryObjectui64vEXT, glGetQueryObjectui64vEXT, GETQUERYOBJECTUI64VEXT, (AND GLuint id, GLenum pname, memptr params), (id, pname, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYOBJECTUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryObjectuiv, glGetQueryObjectuiv, GETQUERYOBJECTUIV, (AND GLuint id, GLenum pname, GLuint *params), (id, pname, params), &id, GL_void_return) GL_PROCM(void, gl, GetQueryObjectuiv, glGetQueryObjectuiv, GETQUERYOBJECTUIV, (AND GLuint id, GLenum pname, memptr params), (id, pname, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYOBJECTUIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryObjectuivARB, glGetQueryObjectuivARB, GETQUERYOBJECTUIVARB, (AND GLuint id, GLenum pname, GLuint *params), (id, pname, params), &id, GL_void_return) GL_PROCM(void, gl, GetQueryObjectuivARB, glGetQueryObjectuivARB, GETQUERYOBJECTUIVARB, (AND GLuint id, GLenum pname, memptr params), (id, pname, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryiv, glGetQueryiv, GETQUERYIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetQueryiv, glGetQueryiv, GETQUERYIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETQUERYIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetQueryivARB, glGetQueryivARB, GETQUERYIVARB, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetQueryivARB, glGetQueryivARB, GETQUERYIVARB, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETRENDERBUFFERPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetRenderbufferParameteriv, glGetRenderbufferParameteriv, GETRENDERBUFFERPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetRenderbufferParameteriv, glGetRenderbufferParameteriv, GETRENDERBUFFERPARAMETERIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETRENDERBUFFERPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, GETRENDERBUFFERPARAMETERIVEXT, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, GETRENDERBUFFERPARAMETERIVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETSAMPLERPARAMETERIIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetSamplerParameterIiv, glGetSamplerParameterIiv, GETSAMPLERPARAMETERIIV, (AND GLuint sampler, GLenum pname, GLint *params), (sampler, pname, params), &sampler, GL_void_return) GL_PROCM(void, gl, GetSamplerParameterIiv, glGetSamplerParameterIiv, GETSAMPLERPARAMETERIIV, (AND GLuint sampler, GLenum pname, memptr params), (sampler, pname, params), &sampler, GL_void_return) #endif #endif #ifndef NO_GLGETSAMPLERPARAMETERIUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetSamplerParameterIuiv, glGetSamplerParameterIuiv, GETSAMPLERPARAMETERIUIV, (AND GLuint sampler, GLenum pname, GLuint *params), (sampler, pname, params), &sampler, GL_void_return) GL_PROCM(void, gl, GetSamplerParameterIuiv, glGetSamplerParameterIuiv, GETSAMPLERPARAMETERIUIV, (AND GLuint sampler, GLenum pname, memptr params), (sampler, pname, params), &sampler, GL_void_return) #endif #endif #ifndef NO_GLGETSAMPLERPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetSamplerParameterfv, glGetSamplerParameterfv, GETSAMPLERPARAMETERFV, (AND GLuint sampler, GLenum pname, GLfloat *params), (sampler, pname, params), &sampler, GL_void_return) GL_PROCM(void, gl, GetSamplerParameterfv, glGetSamplerParameterfv, GETSAMPLERPARAMETERFV, (AND GLuint sampler, GLenum pname, memptr params), (sampler, pname, params), &sampler, GL_void_return) #endif #endif #ifndef NO_GLGETSAMPLERPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetSamplerParameteriv, glGetSamplerParameteriv, GETSAMPLERPARAMETERIV, (AND GLuint sampler, GLenum pname, GLint *params), (sampler, pname, params), &sampler, GL_void_return) GL_PROCM(void, gl, GetSamplerParameteriv, glGetSamplerParameteriv, GETSAMPLERPARAMETERIV, (AND GLuint sampler, GLenum pname, memptr params), (sampler, pname, params), &sampler, GL_void_return) #endif #endif #ifndef NO_GLGETSEMAPHOREPARAMETERUI64VEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetSemaphoreParameterui64vEXT, glGetSemaphoreParameterui64vEXT, GETSEMAPHOREPARAMETERUI64VEXT, (AND GLuint semaphore, GLenum pname, GLuint64 *params), (semaphore, pname, params), &semaphore, GL_void_return) GL_PROCM(void, gl, GetSemaphoreParameterui64vEXT, glGetSemaphoreParameterui64vEXT, GETSEMAPHOREPARAMETERUI64VEXT, (AND GLuint semaphore, GLenum pname, memptr params), (semaphore, pname, params), &semaphore, GL_void_return) #endif #endif #ifndef NO_GLGETSEPARABLEFILTER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetSeparableFilter, glGetSeparableFilter, GETSEPARABLEFILTER, (AND GLenum target, GLenum format, GLenum type, void *row, void *column, void *span), (target, format, type, row, column, span), &target, GL_void_return) GL_PROCM(void, gl, GetSeparableFilter, glGetSeparableFilter, GETSEPARABLEFILTER, (AND GLenum target, GLenum format, GLenum type, memptr row, memptr column, memptr span), (target, format, type, row, column, span), &target, GL_void_return) #endif #endif #ifndef NO_GLGETSEPARABLEFILTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetSeparableFilterEXT, glGetSeparableFilterEXT, GETSEPARABLEFILTEREXT, (AND GLenum target, GLenum format, GLenum type, void *row, void *column, void *span), (target, format, type, row, column, span), &target, GL_void_return) GL_PROCM(void, gl, GetSeparableFilterEXT, glGetSeparableFilterEXT, GETSEPARABLEFILTEREXT, (AND GLenum target, GLenum format, GLenum type, memptr row, memptr column, memptr span), (target, format, type, row, column, span), &target, GL_void_return) #endif #endif #ifndef NO_GLGETSHADERINFOLOG #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetShaderInfoLog, glGetShaderInfoLog, GETSHADERINFOLOG, (AND GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog), (shader, bufSize, length, infoLog), &shader, GL_void_return) GL_PROCM(void, gl, GetShaderInfoLog, glGetShaderInfoLog, GETSHADERINFOLOG, (AND GLuint shader, GLsizei bufSize, memptr length, memptr infoLog), (shader, bufSize, length, infoLog), &shader, GL_void_return) #endif #endif #ifndef NO_GLGETSHADERPRECISIONFORMAT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetShaderPrecisionFormat, glGetShaderPrecisionFormat, GETSHADERPRECISIONFORMAT, (AND GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision), (shadertype, precisiontype, range, precision), &shadertype, GL_void_return) GL_PROCM(void, gl, GetShaderPrecisionFormat, glGetShaderPrecisionFormat, GETSHADERPRECISIONFORMAT, (AND GLenum shadertype, GLenum precisiontype, memptr range, memptr precision), (shadertype, precisiontype, range, precision), &shadertype, GL_void_return) #endif #endif #ifndef NO_GLGETSHADERSOURCE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetShaderSource, glGetShaderSource, GETSHADERSOURCE, (AND GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source), (shader, bufSize, length, source), &shader, GL_void_return) GL_PROCM(void, gl, GetShaderSource, glGetShaderSource, GETSHADERSOURCE, (AND GLuint shader, GLsizei bufSize, memptr length, memptr source), (shader, bufSize, length, source), &shader, GL_void_return) #endif #endif #ifndef NO_GLGETSHADERSOURCEARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetShaderSourceARB, glGetShaderSourceARB, GETSHADERSOURCEARB, (AND GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source), (obj, maxLength, length, source), &obj, GL_void_return) GL_PROCM(void, gl, GetShaderSourceARB, glGetShaderSourceARB, GETSHADERSOURCEARB, (AND GLhandleARB obj, GLsizei maxLength, memptr length, memptr source), (obj, maxLength, length, source), &obj, GL_void_return) #endif #endif #ifndef NO_GLGETSHADERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetShaderiv, glGetShaderiv, GETSHADERIV, (AND GLuint shader, GLenum pname, GLint *params), (shader, pname, params), &shader, GL_void_return) GL_PROCM(void, gl, GetShaderiv, glGetShaderiv, GETSHADERIV, (AND GLuint shader, GLenum pname, memptr params), (shader, pname, params), &shader, GL_void_return) #endif #endif #ifndef NO_GLGETSHARPENTEXFUNCSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetSharpenTexFuncSGIS, glGetSharpenTexFuncSGIS, GETSHARPENTEXFUNCSGIS, (AND GLenum target, GLfloat *points), (target, points), &target, GL_void_return) GL_PROCM(void, gl, GetSharpenTexFuncSGIS, glGetSharpenTexFuncSGIS, GETSHARPENTEXFUNCSGIS, (AND GLenum target, memptr points), (target, points), &target, GL_void_return) #endif #endif #ifndef NO_GLGETSTAGEINDEXNV #if !defined(TINYGL_ONLY) GL_PROC(GLushort, gl, GetStageIndexNV, glGetStageIndexNV, GETSTAGEINDEXNV, (AND GLenum shadertype), (shadertype), &shadertype, return (GLushort)) GL_PROCM(GLushort, gl, GetStageIndexNV, glGetStageIndexNV, GETSTAGEINDEXNV, (AND GLenum shadertype), (shadertype), &shadertype, return (GLushort)) #endif #endif #ifndef NO_GLGETSTRING #if !defined(TINYGL_ONLY) GL_GETSTRING(const GLubyte *, gl, GetString, glGetString, GETSTRING, (AND GLenum name), (name), &name, return (const GLubyte *)) #endif #endif #ifndef NO_GLGETSTRINGI #if !defined(TINYGL_ONLY) GL_GETSTRINGI(const GLubyte *, gl, GetStringi, glGetStringi, GETSTRINGI, (AND GLenum name, GLuint index), (name, index), &name, return (const GLubyte *)) #endif #endif #ifndef NO_GLGETSUBROUTINEINDEX #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, GetSubroutineIndex, glGetSubroutineIndex, GETSUBROUTINEINDEX, (AND GLuint program, GLenum shadertype, const GLchar *name), (program, shadertype, name), &program, return (GLuint)) GL_PROCM(GLuint, gl, GetSubroutineIndex, glGetSubroutineIndex, GETSUBROUTINEINDEX, (AND GLuint program, GLenum shadertype, memptr name), (program, shadertype, name), &program, return (GLuint)) #endif #endif #ifndef NO_GLGETSUBROUTINEUNIFORMLOCATION #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, GetSubroutineUniformLocation, glGetSubroutineUniformLocation, GETSUBROUTINEUNIFORMLOCATION, (AND GLuint program, GLenum shadertype, const GLchar *name), (program, shadertype, name), &program, return (GLint)) GL_PROCM(GLint, gl, GetSubroutineUniformLocation, glGetSubroutineUniformLocation, GETSUBROUTINEUNIFORMLOCATION, (AND GLuint program, GLenum shadertype, memptr name), (program, shadertype, name), &program, return (GLint)) #endif #endif #ifndef NO_GLGETSYNCIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetSynciv, glGetSynciv, GETSYNCIV, (AND GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values), (sync, pname, bufSize, length, values), &sync, GL_void_return) GL_PROCM(void, gl, GetSynciv, glGetSynciv, GETSYNCIV, (AND GLsync sync, GLenum pname, GLsizei bufSize, memptr length, memptr values), (sync, pname, bufSize, length, values), &sync, GL_void_return) #endif #endif #ifndef NO_GLGETTEXBUMPPARAMETERFVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, GETTEXBUMPPARAMETERFVATI, (AND GLenum pname, GLfloat *param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, GetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, GETTEXBUMPPARAMETERFVATI, (AND GLenum pname, memptr param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETTEXBUMPPARAMETERIVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexBumpParameterivATI, glGetTexBumpParameterivATI, GETTEXBUMPPARAMETERIVATI, (AND GLenum pname, GLint *param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, GetTexBumpParameterivATI, glGetTexBumpParameterivATI, GETTEXBUMPPARAMETERIVATI, (AND GLenum pname, memptr param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETTEXENVFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexEnvfv, glGetTexEnvfv, GETTEXENVFV, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTexEnvfv, glGetTexEnvfv, GETTEXENVFV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXENVIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexEnviv, glGetTexEnviv, GETTEXENVIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTexEnviv, glGetTexEnviv, GETTEXENVIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXENVXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexEnvxvOES, glGetTexEnvxvOES, GETTEXENVXVOES, (AND GLenum target, GLenum pname, GLfixed *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTexEnvxvOES, glGetTexEnvxvOES, GETTEXENVXVOES, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXFILTERFUNCSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexFilterFuncSGIS, glGetTexFilterFuncSGIS, GETTEXFILTERFUNCSGIS, (AND GLenum target, GLenum filter, GLfloat *weights), (target, filter, weights), &target, GL_void_return) GL_PROCM(void, gl, GetTexFilterFuncSGIS, glGetTexFilterFuncSGIS, GETTEXFILTERFUNCSGIS, (AND GLenum target, GLenum filter, memptr weights), (target, filter, weights), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXGENDV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexGendv, glGetTexGendv, GETTEXGENDV, (AND GLenum coord, GLenum pname, GLdouble *params), (coord, pname, params), &coord, GL_void_return) GL_PROCM(void, gl, GetTexGendv, glGetTexGendv, GETTEXGENDV, (AND GLenum coord, GLenum pname, memptr params), (coord, pname, params), &coord, GL_void_return) #endif #endif #ifndef NO_GLGETTEXGENFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexGenfv, glGetTexGenfv, GETTEXGENFV, (AND GLenum coord, GLenum pname, GLfloat *params), (coord, pname, params), &coord, GL_void_return) GL_PROCM(void, gl, GetTexGenfv, glGetTexGenfv, GETTEXGENFV, (AND GLenum coord, GLenum pname, memptr params), (coord, pname, params), &coord, GL_void_return) #endif #endif #ifndef NO_GLGETTEXGENIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexGeniv, glGetTexGeniv, GETTEXGENIV, (AND GLenum coord, GLenum pname, GLint *params), (coord, pname, params), &coord, GL_void_return) GL_PROCM(void, gl, GetTexGeniv, glGetTexGeniv, GETTEXGENIV, (AND GLenum coord, GLenum pname, memptr params), (coord, pname, params), &coord, GL_void_return) #endif #endif #ifndef NO_GLGETTEXGENXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexGenxvOES, glGetTexGenxvOES, GETTEXGENXVOES, (AND GLenum coord, GLenum pname, GLfixed *params), (coord, pname, params), &coord, GL_void_return) GL_PROCM(void, gl, GetTexGenxvOES, glGetTexGenxvOES, GETTEXGENXVOES, (AND GLenum coord, GLenum pname, memptr params), (coord, pname, params), &coord, GL_void_return) #endif #endif #ifndef NO_GLGETTEXIMAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexImage, glGetTexImage, GETTEXIMAGE, (AND GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels), (target, level, format, type, pixels), &target, GL_void_return) GL_PROCM(void, gl, GetTexImage, glGetTexImage, GETTEXIMAGE, (AND GLenum target, GLint level, GLenum format, GLenum type, memptr pixels), (target, level, format, type, pixels), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXLEVELPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexLevelParameterfv, glGetTexLevelParameterfv, GETTEXLEVELPARAMETERFV, (AND GLenum target, GLint level, GLenum pname, GLfloat *params), (target, level, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTexLevelParameterfv, glGetTexLevelParameterfv, GETTEXLEVELPARAMETERFV, (AND GLenum target, GLint level, GLenum pname, memptr params), (target, level, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXLEVELPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexLevelParameteriv, glGetTexLevelParameteriv, GETTEXLEVELPARAMETERIV, (AND GLenum target, GLint level, GLenum pname, GLint *params), (target, level, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTexLevelParameteriv, glGetTexLevelParameteriv, GETTEXLEVELPARAMETERIV, (AND GLenum target, GLint level, GLenum pname, memptr params), (target, level, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXLEVELPARAMETERXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexLevelParameterxvOES, glGetTexLevelParameterxvOES, GETTEXLEVELPARAMETERXVOES, (AND GLenum target, GLint level, GLenum pname, GLfixed *params), (target, level, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTexLevelParameterxvOES, glGetTexLevelParameterxvOES, GETTEXLEVELPARAMETERXVOES, (AND GLenum target, GLint level, GLenum pname, memptr params), (target, level, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXPARAMETERIIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexParameterIiv, glGetTexParameterIiv, GETTEXPARAMETERIIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTexParameterIiv, glGetTexParameterIiv, GETTEXPARAMETERIIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXPARAMETERIIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexParameterIivEXT, glGetTexParameterIivEXT, GETTEXPARAMETERIIVEXT, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTexParameterIivEXT, glGetTexParameterIivEXT, GETTEXPARAMETERIIVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXPARAMETERIUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexParameterIuiv, glGetTexParameterIuiv, GETTEXPARAMETERIUIV, (AND GLenum target, GLenum pname, GLuint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTexParameterIuiv, glGetTexParameterIuiv, GETTEXPARAMETERIUIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXPARAMETERIUIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexParameterIuivEXT, glGetTexParameterIuivEXT, GETTEXPARAMETERIUIVEXT, (AND GLenum target, GLenum pname, GLuint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTexParameterIuivEXT, glGetTexParameterIuivEXT, GETTEXPARAMETERIUIVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXPARAMETERPOINTERVAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexParameterPointervAPPLE, glGetTexParameterPointervAPPLE, GETTEXPARAMETERPOINTERVAPPLE, (AND GLenum target, GLenum pname, void * *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTexParameterPointervAPPLE, glGetTexParameterPointervAPPLE, GETTEXPARAMETERPOINTERVAPPLE, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexParameterfv, glGetTexParameterfv, GETTEXPARAMETERFV, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTexParameterfv, glGetTexParameterfv, GETTEXPARAMETERFV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexParameteriv, glGetTexParameteriv, GETTEXPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTexParameteriv, glGetTexParameteriv, GETTEXPARAMETERIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXPARAMETERXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTexParameterxvOES, glGetTexParameterxvOES, GETTEXPARAMETERXVOES, (AND GLenum target, GLenum pname, GLfixed *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTexParameterxvOES, glGetTexParameterxvOES, GETTEXPARAMETERXVOES, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTUREHANDLEARB #if !defined(TINYGL_ONLY) GL_PROC64(GLuint64, gl, GetTextureHandleARB, glGetTextureHandleARB, GETTEXTUREHANDLEARB, (AND GLuint texture), (texture), &texture, return (GLuint64)) GL_PROC64M(GLuint64, gl, GetTextureHandleARB, glGetTextureHandleARB, GETTEXTUREHANDLEARB, (AND GLuint texture), (texture), &texture, return (GLuint64)) #endif #endif #ifndef NO_GLGETTEXTUREHANDLENV #if !defined(TINYGL_ONLY) GL_PROC64(GLuint64, gl, GetTextureHandleNV, glGetTextureHandleNV, GETTEXTUREHANDLENV, (AND GLuint texture), (texture), &texture, return (GLuint64)) GL_PROC64M(GLuint64, gl, GetTextureHandleNV, glGetTextureHandleNV, GETTEXTUREHANDLENV, (AND GLuint texture), (texture), &texture, return (GLuint64)) #endif #endif #ifndef NO_GLGETTEXTUREIMAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureImage, glGetTextureImage, GETTEXTUREIMAGE, (AND GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels), (texture, level, format, type, bufSize, pixels), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureImage, glGetTextureImage, GETTEXTUREIMAGE, (AND GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, memptr pixels), (texture, level, format, type, bufSize, pixels), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTUREIMAGEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureImageEXT, glGetTextureImageEXT, GETTEXTUREIMAGEEXT, (AND GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels), (texture, target, level, format, type, pixels), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureImageEXT, glGetTextureImageEXT, GETTEXTUREIMAGEEXT, (AND GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, memptr pixels), (texture, target, level, format, type, pixels), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTURELEVELPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureLevelParameterfv, glGetTextureLevelParameterfv, GETTEXTURELEVELPARAMETERFV, (AND GLuint texture, GLint level, GLenum pname, GLfloat *params), (texture, level, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureLevelParameterfv, glGetTextureLevelParameterfv, GETTEXTURELEVELPARAMETERFV, (AND GLuint texture, GLint level, GLenum pname, memptr params), (texture, level, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTURELEVELPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureLevelParameterfvEXT, glGetTextureLevelParameterfvEXT, GETTEXTURELEVELPARAMETERFVEXT, (AND GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params), (texture, target, level, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureLevelParameterfvEXT, glGetTextureLevelParameterfvEXT, GETTEXTURELEVELPARAMETERFVEXT, (AND GLuint texture, GLenum target, GLint level, GLenum pname, memptr params), (texture, target, level, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTURELEVELPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureLevelParameteriv, glGetTextureLevelParameteriv, GETTEXTURELEVELPARAMETERIV, (AND GLuint texture, GLint level, GLenum pname, GLint *params), (texture, level, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureLevelParameteriv, glGetTextureLevelParameteriv, GETTEXTURELEVELPARAMETERIV, (AND GLuint texture, GLint level, GLenum pname, memptr params), (texture, level, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTURELEVELPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureLevelParameterivEXT, glGetTextureLevelParameterivEXT, GETTEXTURELEVELPARAMETERIVEXT, (AND GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params), (texture, target, level, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureLevelParameterivEXT, glGetTextureLevelParameterivEXT, GETTEXTURELEVELPARAMETERIVEXT, (AND GLuint texture, GLenum target, GLint level, GLenum pname, memptr params), (texture, target, level, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTUREPARAMETERIIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureParameterIiv, glGetTextureParameterIiv, GETTEXTUREPARAMETERIIV, (AND GLuint texture, GLenum pname, GLint *params), (texture, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureParameterIiv, glGetTextureParameterIiv, GETTEXTUREPARAMETERIIV, (AND GLuint texture, GLenum pname, memptr params), (texture, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTUREPARAMETERIIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureParameterIivEXT, glGetTextureParameterIivEXT, GETTEXTUREPARAMETERIIVEXT, (AND GLuint texture, GLenum target, GLenum pname, GLint *params), (texture, target, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureParameterIivEXT, glGetTextureParameterIivEXT, GETTEXTUREPARAMETERIIVEXT, (AND GLuint texture, GLenum target, GLenum pname, memptr params), (texture, target, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTUREPARAMETERIUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureParameterIuiv, glGetTextureParameterIuiv, GETTEXTUREPARAMETERIUIV, (AND GLuint texture, GLenum pname, GLuint *params), (texture, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureParameterIuiv, glGetTextureParameterIuiv, GETTEXTUREPARAMETERIUIV, (AND GLuint texture, GLenum pname, memptr params), (texture, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTUREPARAMETERIUIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureParameterIuivEXT, glGetTextureParameterIuivEXT, GETTEXTUREPARAMETERIUIVEXT, (AND GLuint texture, GLenum target, GLenum pname, GLuint *params), (texture, target, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureParameterIuivEXT, glGetTextureParameterIuivEXT, GETTEXTUREPARAMETERIUIVEXT, (AND GLuint texture, GLenum target, GLenum pname, memptr params), (texture, target, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTUREPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureParameterfv, glGetTextureParameterfv, GETTEXTUREPARAMETERFV, (AND GLuint texture, GLenum pname, GLfloat *params), (texture, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureParameterfv, glGetTextureParameterfv, GETTEXTUREPARAMETERFV, (AND GLuint texture, GLenum pname, memptr params), (texture, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTUREPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureParameterfvEXT, glGetTextureParameterfvEXT, GETTEXTUREPARAMETERFVEXT, (AND GLuint texture, GLenum target, GLenum pname, GLfloat *params), (texture, target, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureParameterfvEXT, glGetTextureParameterfvEXT, GETTEXTUREPARAMETERFVEXT, (AND GLuint texture, GLenum target, GLenum pname, memptr params), (texture, target, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTUREPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureParameteriv, glGetTextureParameteriv, GETTEXTUREPARAMETERIV, (AND GLuint texture, GLenum pname, GLint *params), (texture, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureParameteriv, glGetTextureParameteriv, GETTEXTUREPARAMETERIV, (AND GLuint texture, GLenum pname, memptr params), (texture, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTUREPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureParameterivEXT, glGetTextureParameterivEXT, GETTEXTUREPARAMETERIVEXT, (AND GLuint texture, GLenum target, GLenum pname, GLint *params), (texture, target, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureParameterivEXT, glGetTextureParameterivEXT, GETTEXTUREPARAMETERIVEXT, (AND GLuint texture, GLenum target, GLenum pname, memptr params), (texture, target, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTEXTURESAMPLERHANDLEARB #if !defined(TINYGL_ONLY) GL_PROC64(GLuint64, gl, GetTextureSamplerHandleARB, glGetTextureSamplerHandleARB, GETTEXTURESAMPLERHANDLEARB, (AND GLuint texture, GLuint sampler), (texture, sampler), &texture, return (GLuint64)) GL_PROC64M(GLuint64, gl, GetTextureSamplerHandleARB, glGetTextureSamplerHandleARB, GETTEXTURESAMPLERHANDLEARB, (AND GLuint texture, GLuint sampler), (texture, sampler), &texture, return (GLuint64)) #endif #endif #ifndef NO_GLGETTEXTURESAMPLERHANDLENV #if !defined(TINYGL_ONLY) GL_PROC64(GLuint64, gl, GetTextureSamplerHandleNV, glGetTextureSamplerHandleNV, GETTEXTURESAMPLERHANDLENV, (AND GLuint texture, GLuint sampler), (texture, sampler), &texture, return (GLuint64)) GL_PROC64M(GLuint64, gl, GetTextureSamplerHandleNV, glGetTextureSamplerHandleNV, GETTEXTURESAMPLERHANDLENV, (AND GLuint texture, GLuint sampler), (texture, sampler), &texture, return (GLuint64)) #endif #endif #ifndef NO_GLGETTEXTURESUBIMAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTextureSubImage, glGetTextureSubImage, GETTEXTURESUBIMAGE, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels), (texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels), &texture, GL_void_return) GL_PROCM(void, gl, GetTextureSubImage, glGetTextureSubImage, GETTEXTURESUBIMAGE, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, memptr pixels), (texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels), &texture, GL_void_return) #endif #endif #ifndef NO_GLGETTRACKMATRIXIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTrackMatrixivNV, glGetTrackMatrixivNV, GETTRACKMATRIXIVNV, (AND GLenum target, GLuint address, GLenum pname, GLint *params), (target, address, pname, params), &target, GL_void_return) GL_PROCM(void, gl, GetTrackMatrixivNV, glGetTrackMatrixivNV, GETTRACKMATRIXIVNV, (AND GLenum target, GLuint address, GLenum pname, memptr params), (target, address, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLGETTRANSFORMFEEDBACKVARYING #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTransformFeedbackVarying, glGetTransformFeedbackVarying, GETTRANSFORMFEEDBACKVARYING, (AND GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) GL_PROCM(void, gl, GetTransformFeedbackVarying, glGetTransformFeedbackVarying, GETTRANSFORMFEEDBACKVARYING, (AND GLuint program, GLuint index, GLsizei bufSize, memptr length, memptr size, memptr type, memptr name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) #endif #endif #ifndef NO_GLGETTRANSFORMFEEDBACKVARYINGEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, GETTRANSFORMFEEDBACKVARYINGEXT, (AND GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) GL_PROCM(void, gl, GetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, GETTRANSFORMFEEDBACKVARYINGEXT, (AND GLuint program, GLuint index, GLsizei bufSize, memptr length, memptr size, memptr type, memptr name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) #endif #endif #ifndef NO_GLGETTRANSFORMFEEDBACKVARYINGNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTransformFeedbackVaryingNV, glGetTransformFeedbackVaryingNV, GETTRANSFORMFEEDBACKVARYINGNV, (AND GLuint program, GLuint index, GLint *location), (program, index, location), &program, GL_void_return) GL_PROCM(void, gl, GetTransformFeedbackVaryingNV, glGetTransformFeedbackVaryingNV, GETTRANSFORMFEEDBACKVARYINGNV, (AND GLuint program, GLuint index, memptr location), (program, index, location), &program, GL_void_return) #endif #endif #ifndef NO_GLGETTRANSFORMFEEDBACKI64_V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTransformFeedbacki64_v, glGetTransformFeedbacki64_v, GETTRANSFORMFEEDBACKI64_V, (AND GLuint xfb, GLenum pname, GLuint index, GLint64 *param), (xfb, pname, index, param), &xfb, GL_void_return) GL_PROCM(void, gl, GetTransformFeedbacki64_v, glGetTransformFeedbacki64_v, GETTRANSFORMFEEDBACKI64_V, (AND GLuint xfb, GLenum pname, GLuint index, memptr param), (xfb, pname, index, param), &xfb, GL_void_return) #endif #endif #ifndef NO_GLGETTRANSFORMFEEDBACKI_V #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTransformFeedbacki_v, glGetTransformFeedbacki_v, GETTRANSFORMFEEDBACKI_V, (AND GLuint xfb, GLenum pname, GLuint index, GLint *param), (xfb, pname, index, param), &xfb, GL_void_return) GL_PROCM(void, gl, GetTransformFeedbacki_v, glGetTransformFeedbacki_v, GETTRANSFORMFEEDBACKI_V, (AND GLuint xfb, GLenum pname, GLuint index, memptr param), (xfb, pname, index, param), &xfb, GL_void_return) #endif #endif #ifndef NO_GLGETTRANSFORMFEEDBACKIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetTransformFeedbackiv, glGetTransformFeedbackiv, GETTRANSFORMFEEDBACKIV, (AND GLuint xfb, GLenum pname, GLint *param), (xfb, pname, param), &xfb, GL_void_return) GL_PROCM(void, gl, GetTransformFeedbackiv, glGetTransformFeedbackiv, GETTRANSFORMFEEDBACKIV, (AND GLuint xfb, GLenum pname, memptr param), (xfb, pname, param), &xfb, GL_void_return) #endif #endif #ifndef NO_GLGETUNIFORMBLOCKINDEX #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, GetUniformBlockIndex, glGetUniformBlockIndex, GETUNIFORMBLOCKINDEX, (AND GLuint program, const GLchar *uniformBlockName), (program, uniformBlockName), &program, return (GLuint)) GL_PROCM(GLuint, gl, GetUniformBlockIndex, glGetUniformBlockIndex, GETUNIFORMBLOCKINDEX, (AND GLuint program, memptr uniformBlockName), (program, uniformBlockName), &program, return (GLuint)) #endif #endif #ifndef NO_GLGETUNIFORMBUFFERSIZEEXT #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, GetUniformBufferSizeEXT, glGetUniformBufferSizeEXT, GETUNIFORMBUFFERSIZEEXT, (AND GLuint program, GLint location), (program, location), &program, return (GLint)) GL_PROCM(GLint, gl, GetUniformBufferSizeEXT, glGetUniformBufferSizeEXT, GETUNIFORMBUFFERSIZEEXT, (AND GLuint program, GLint location), (program, location), &program, return (GLint)) #endif #endif #ifndef NO_GLGETUNIFORMINDICES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUniformIndices, glGetUniformIndices, GETUNIFORMINDICES, (AND GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices), (program, uniformCount, uniformNames, uniformIndices), &program, GL_void_return) GL_PROCM(void, gl, GetUniformIndices, glGetUniformIndices, GETUNIFORMINDICES, (AND GLuint program, GLsizei uniformCount, memptr uniformNames, memptr uniformIndices), (program, uniformCount, uniformNames, uniformIndices), &program, GL_void_return) #endif #endif #ifndef NO_GLGETUNIFORMLOCATION #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, GetUniformLocation, glGetUniformLocation, GETUNIFORMLOCATION, (AND GLuint program, const GLchar *name), (program, name), &program, return (GLint)) GL_PROCM(GLint, gl, GetUniformLocation, glGetUniformLocation, GETUNIFORMLOCATION, (AND GLuint program, memptr name), (program, name), &program, return (GLint)) #endif #endif #ifndef NO_GLGETUNIFORMLOCATIONARB #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, GetUniformLocationARB, glGetUniformLocationARB, GETUNIFORMLOCATIONARB, (AND GLhandleARB programObj, const GLcharARB *name), (programObj, name), &programObj, return (GLint)) GL_PROCM(GLint, gl, GetUniformLocationARB, glGetUniformLocationARB, GETUNIFORMLOCATIONARB, (AND GLhandleARB programObj, memptr name), (programObj, name), &programObj, return (GLint)) #endif #endif #ifndef NO_GLGETUNIFORMOFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC64(GLintptr, gl, GetUniformOffsetEXT, glGetUniformOffsetEXT, GETUNIFORMOFFSETEXT, (AND GLuint program, GLint location), (program, location), &program, return (GLintptr)) GL_PROC64M(GLintptr, gl, GetUniformOffsetEXT, glGetUniformOffsetEXT, GETUNIFORMOFFSETEXT, (AND GLuint program, GLint location), (program, location), &program, return (GLintptr)) #endif #endif #ifndef NO_GLGETUNIFORMSUBROUTINEUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUniformSubroutineuiv, glGetUniformSubroutineuiv, GETUNIFORMSUBROUTINEUIV, (AND GLenum shadertype, GLint location, GLuint *params), (shadertype, location, params), &shadertype, GL_void_return) GL_PROCM(void, gl, GetUniformSubroutineuiv, glGetUniformSubroutineuiv, GETUNIFORMSUBROUTINEUIV, (AND GLenum shadertype, GLint location, memptr params), (shadertype, location, params), &shadertype, GL_void_return) #endif #endif #ifndef NO_GLGETUNIFORMDV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUniformdv, glGetUniformdv, GETUNIFORMDV, (AND GLuint program, GLint location, GLdouble *params), (program, location, params), &program, GL_void_return) GL_PROCM(void, gl, GetUniformdv, glGetUniformdv, GETUNIFORMDV, (AND GLuint program, GLint location, memptr params), (program, location, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETUNIFORMFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUniformfv, glGetUniformfv, GETUNIFORMFV, (AND GLuint program, GLint location, GLfloat *params), (program, location, params), &program, GL_void_return) GL_PROCM(void, gl, GetUniformfv, glGetUniformfv, GETUNIFORMFV, (AND GLuint program, GLint location, memptr params), (program, location, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETUNIFORMFVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUniformfvARB, glGetUniformfvARB, GETUNIFORMFVARB, (AND GLhandleARB programObj, GLint location, GLfloat *params), (programObj, location, params), &programObj, GL_void_return) GL_PROCM(void, gl, GetUniformfvARB, glGetUniformfvARB, GETUNIFORMFVARB, (AND GLhandleARB programObj, GLint location, memptr params), (programObj, location, params), &programObj, GL_void_return) #endif #endif #ifndef NO_GLGETUNIFORMI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUniformi64vARB, glGetUniformi64vARB, GETUNIFORMI64VARB, (AND GLuint program, GLint location, GLint64 *params), (program, location, params), &program, GL_void_return) GL_PROCM(void, gl, GetUniformi64vARB, glGetUniformi64vARB, GETUNIFORMI64VARB, (AND GLuint program, GLint location, memptr params), (program, location, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETUNIFORMI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUniformi64vNV, glGetUniformi64vNV, GETUNIFORMI64VNV, (AND GLuint program, GLint location, GLint64EXT *params), (program, location, params), &program, GL_void_return) GL_PROCM(void, gl, GetUniformi64vNV, glGetUniformi64vNV, GETUNIFORMI64VNV, (AND GLuint program, GLint location, memptr params), (program, location, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETUNIFORMIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUniformiv, glGetUniformiv, GETUNIFORMIV, (AND GLuint program, GLint location, GLint *params), (program, location, params), &program, GL_void_return) GL_PROCM(void, gl, GetUniformiv, glGetUniformiv, GETUNIFORMIV, (AND GLuint program, GLint location, memptr params), (program, location, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETUNIFORMIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUniformivARB, glGetUniformivARB, GETUNIFORMIVARB, (AND GLhandleARB programObj, GLint location, GLint *params), (programObj, location, params), &programObj, GL_void_return) GL_PROCM(void, gl, GetUniformivARB, glGetUniformivARB, GETUNIFORMIVARB, (AND GLhandleARB programObj, GLint location, memptr params), (programObj, location, params), &programObj, GL_void_return) #endif #endif #ifndef NO_GLGETUNIFORMUI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUniformui64vARB, glGetUniformui64vARB, GETUNIFORMUI64VARB, (AND GLuint program, GLint location, GLuint64 *params), (program, location, params), &program, GL_void_return) GL_PROCM(void, gl, GetUniformui64vARB, glGetUniformui64vARB, GETUNIFORMUI64VARB, (AND GLuint program, GLint location, memptr params), (program, location, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETUNIFORMUI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUniformui64vNV, glGetUniformui64vNV, GETUNIFORMUI64VNV, (AND GLuint program, GLint location, GLuint64EXT *params), (program, location, params), &program, GL_void_return) GL_PROCM(void, gl, GetUniformui64vNV, glGetUniformui64vNV, GETUNIFORMUI64VNV, (AND GLuint program, GLint location, memptr params), (program, location, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETUNIFORMUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUniformuiv, glGetUniformuiv, GETUNIFORMUIV, (AND GLuint program, GLint location, GLuint *params), (program, location, params), &program, GL_void_return) GL_PROCM(void, gl, GetUniformuiv, glGetUniformuiv, GETUNIFORMUIV, (AND GLuint program, GLint location, memptr params), (program, location, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETUNIFORMUIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUniformuivEXT, glGetUniformuivEXT, GETUNIFORMUIVEXT, (AND GLuint program, GLint location, GLuint *params), (program, location, params), &program, GL_void_return) GL_PROCM(void, gl, GetUniformuivEXT, glGetUniformuivEXT, GETUNIFORMUIVEXT, (AND GLuint program, GLint location, memptr params), (program, location, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETUNSIGNEDBYTEI_VEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUnsignedBytei_vEXT, glGetUnsignedBytei_vEXT, GETUNSIGNEDBYTEI_VEXT, (AND GLenum target, GLuint index, GLubyte *data), (target, index, data), &target, GL_void_return) GL_PROCM(void, gl, GetUnsignedBytei_vEXT, glGetUnsignedBytei_vEXT, GETUNSIGNEDBYTEI_VEXT, (AND GLenum target, GLuint index, memptr data), (target, index, data), &target, GL_void_return) #endif #endif #ifndef NO_GLGETUNSIGNEDBYTEVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetUnsignedBytevEXT, glGetUnsignedBytevEXT, GETUNSIGNEDBYTEVEXT, (AND GLenum pname, GLubyte *data), (pname, data), &pname, GL_void_return) GL_PROCM(void, gl, GetUnsignedBytevEXT, glGetUnsignedBytevEXT, GETUNSIGNEDBYTEVEXT, (AND GLenum pname, memptr data), (pname, data), &pname, GL_void_return) #endif #endif #ifndef NO_GLGETVARIANTARRAYOBJECTFVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVariantArrayObjectfvATI, glGetVariantArrayObjectfvATI, GETVARIANTARRAYOBJECTFVATI, (AND GLuint id, GLenum pname, GLfloat *params), (id, pname, params), &id, GL_void_return) GL_PROCM(void, gl, GetVariantArrayObjectfvATI, glGetVariantArrayObjectfvATI, GETVARIANTARRAYOBJECTFVATI, (AND GLuint id, GLenum pname, memptr params), (id, pname, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETVARIANTARRAYOBJECTIVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVariantArrayObjectivATI, glGetVariantArrayObjectivATI, GETVARIANTARRAYOBJECTIVATI, (AND GLuint id, GLenum pname, GLint *params), (id, pname, params), &id, GL_void_return) GL_PROCM(void, gl, GetVariantArrayObjectivATI, glGetVariantArrayObjectivATI, GETVARIANTARRAYOBJECTIVATI, (AND GLuint id, GLenum pname, memptr params), (id, pname, params), &id, GL_void_return) #endif #endif #ifndef NO_GLGETVARIANTBOOLEANVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVariantBooleanvEXT, glGetVariantBooleanvEXT, GETVARIANTBOOLEANVEXT, (AND GLuint id, GLenum value, GLboolean *data), (id, value, data), &id, GL_void_return) GL_PROCM(void, gl, GetVariantBooleanvEXT, glGetVariantBooleanvEXT, GETVARIANTBOOLEANVEXT, (AND GLuint id, GLenum value, memptr data), (id, value, data), &id, GL_void_return) #endif #endif #ifndef NO_GLGETVARIANTFLOATVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVariantFloatvEXT, glGetVariantFloatvEXT, GETVARIANTFLOATVEXT, (AND GLuint id, GLenum value, GLfloat *data), (id, value, data), &id, GL_void_return) GL_PROCM(void, gl, GetVariantFloatvEXT, glGetVariantFloatvEXT, GETVARIANTFLOATVEXT, (AND GLuint id, GLenum value, memptr data), (id, value, data), &id, GL_void_return) #endif #endif #ifndef NO_GLGETVARIANTINTEGERVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVariantIntegervEXT, glGetVariantIntegervEXT, GETVARIANTINTEGERVEXT, (AND GLuint id, GLenum value, GLint *data), (id, value, data), &id, GL_void_return) GL_PROCM(void, gl, GetVariantIntegervEXT, glGetVariantIntegervEXT, GETVARIANTINTEGERVEXT, (AND GLuint id, GLenum value, memptr data), (id, value, data), &id, GL_void_return) #endif #endif #ifndef NO_GLGETVARIANTPOINTERVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVariantPointervEXT, glGetVariantPointervEXT, GETVARIANTPOINTERVEXT, (AND GLuint id, GLenum value, void * *data), (id, value, data), &id, GL_void_return) GL_PROCM(void, gl, GetVariantPointervEXT, glGetVariantPointervEXT, GETVARIANTPOINTERVEXT, (AND GLuint id, GLenum value, memptr data), (id, value, data), &id, GL_void_return) #endif #endif #ifndef NO_GLGETVARYINGLOCATIONNV #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, GetVaryingLocationNV, glGetVaryingLocationNV, GETVARYINGLOCATIONNV, (AND GLuint program, const GLchar *name), (program, name), &program, return (GLint)) GL_PROCM(GLint, gl, GetVaryingLocationNV, glGetVaryingLocationNV, GETVARYINGLOCATIONNV, (AND GLuint program, memptr name), (program, name), &program, return (GLint)) #endif #endif #ifndef NO_GLGETVERTEXARRAYINDEXED64IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexArrayIndexed64iv, glGetVertexArrayIndexed64iv, GETVERTEXARRAYINDEXED64IV, (AND GLuint vaobj, GLuint index, GLenum pname, GLint64 *param), (vaobj, index, pname, param), &vaobj, GL_void_return) GL_PROCM(void, gl, GetVertexArrayIndexed64iv, glGetVertexArrayIndexed64iv, GETVERTEXARRAYINDEXED64IV, (AND GLuint vaobj, GLuint index, GLenum pname, memptr param), (vaobj, index, pname, param), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXARRAYINDEXEDIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexArrayIndexediv, glGetVertexArrayIndexediv, GETVERTEXARRAYINDEXEDIV, (AND GLuint vaobj, GLuint index, GLenum pname, GLint *param), (vaobj, index, pname, param), &vaobj, GL_void_return) GL_PROCM(void, gl, GetVertexArrayIndexediv, glGetVertexArrayIndexediv, GETVERTEXARRAYINDEXEDIV, (AND GLuint vaobj, GLuint index, GLenum pname, memptr param), (vaobj, index, pname, param), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXARRAYINTEGERI_VEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexArrayIntegeri_vEXT, glGetVertexArrayIntegeri_vEXT, GETVERTEXARRAYINTEGERI_VEXT, (AND GLuint vaobj, GLuint index, GLenum pname, GLint *param), (vaobj, index, pname, param), &vaobj, GL_void_return) GL_PROCM(void, gl, GetVertexArrayIntegeri_vEXT, glGetVertexArrayIntegeri_vEXT, GETVERTEXARRAYINTEGERI_VEXT, (AND GLuint vaobj, GLuint index, GLenum pname, memptr param), (vaobj, index, pname, param), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXARRAYINTEGERVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexArrayIntegervEXT, glGetVertexArrayIntegervEXT, GETVERTEXARRAYINTEGERVEXT, (AND GLuint vaobj, GLenum pname, GLint *param), (vaobj, pname, param), &vaobj, GL_void_return) GL_PROCM(void, gl, GetVertexArrayIntegervEXT, glGetVertexArrayIntegervEXT, GETVERTEXARRAYINTEGERVEXT, (AND GLuint vaobj, GLenum pname, memptr param), (vaobj, pname, param), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXARRAYPOINTERI_VEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexArrayPointeri_vEXT, glGetVertexArrayPointeri_vEXT, GETVERTEXARRAYPOINTERI_VEXT, (AND GLuint vaobj, GLuint index, GLenum pname, void * *param), (vaobj, index, pname, param), &vaobj, GL_void_return) GL_PROCM(void, gl, GetVertexArrayPointeri_vEXT, glGetVertexArrayPointeri_vEXT, GETVERTEXARRAYPOINTERI_VEXT, (AND GLuint vaobj, GLuint index, GLenum pname, memptr param), (vaobj, index, pname, param), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXARRAYPOINTERVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexArrayPointervEXT, glGetVertexArrayPointervEXT, GETVERTEXARRAYPOINTERVEXT, (AND GLuint vaobj, GLenum pname, void * *param), (vaobj, pname, param), &vaobj, GL_void_return) GL_PROCM(void, gl, GetVertexArrayPointervEXT, glGetVertexArrayPointervEXT, GETVERTEXARRAYPOINTERVEXT, (AND GLuint vaobj, GLenum pname, memptr param), (vaobj, pname, param), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXARRAYIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexArrayiv, glGetVertexArrayiv, GETVERTEXARRAYIV, (AND GLuint vaobj, GLenum pname, GLint *param), (vaobj, pname, param), &vaobj, GL_void_return) GL_PROCM(void, gl, GetVertexArrayiv, glGetVertexArrayiv, GETVERTEXARRAYIV, (AND GLuint vaobj, GLenum pname, memptr param), (vaobj, pname, param), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBARRAYOBJECTFVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribArrayObjectfvATI, glGetVertexAttribArrayObjectfvATI, GETVERTEXATTRIBARRAYOBJECTFVATI, (AND GLuint index, GLenum pname, GLfloat *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribArrayObjectfvATI, glGetVertexAttribArrayObjectfvATI, GETVERTEXATTRIBARRAYOBJECTFVATI, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBARRAYOBJECTIVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribArrayObjectivATI, glGetVertexAttribArrayObjectivATI, GETVERTEXATTRIBARRAYOBJECTIVATI, (AND GLuint index, GLenum pname, GLint *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribArrayObjectivATI, glGetVertexAttribArrayObjectivATI, GETVERTEXATTRIBARRAYOBJECTIVATI, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBIIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribIiv, glGetVertexAttribIiv, GETVERTEXATTRIBIIV, (AND GLuint index, GLenum pname, GLint *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribIiv, glGetVertexAttribIiv, GETVERTEXATTRIBIIV, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBIIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribIivEXT, glGetVertexAttribIivEXT, GETVERTEXATTRIBIIVEXT, (AND GLuint index, GLenum pname, GLint *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribIivEXT, glGetVertexAttribIivEXT, GETVERTEXATTRIBIIVEXT, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBIUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribIuiv, glGetVertexAttribIuiv, GETVERTEXATTRIBIUIV, (AND GLuint index, GLenum pname, GLuint *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribIuiv, glGetVertexAttribIuiv, GETVERTEXATTRIBIUIV, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBIUIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribIuivEXT, glGetVertexAttribIuivEXT, GETVERTEXATTRIBIUIVEXT, (AND GLuint index, GLenum pname, GLuint *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribIuivEXT, glGetVertexAttribIuivEXT, GETVERTEXATTRIBIUIVEXT, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBLDV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribLdv, glGetVertexAttribLdv, GETVERTEXATTRIBLDV, (AND GLuint index, GLenum pname, GLdouble *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribLdv, glGetVertexAttribLdv, GETVERTEXATTRIBLDV, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBLDVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribLdvEXT, glGetVertexAttribLdvEXT, GETVERTEXATTRIBLDVEXT, (AND GLuint index, GLenum pname, GLdouble *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribLdvEXT, glGetVertexAttribLdvEXT, GETVERTEXATTRIBLDVEXT, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBLI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribLi64vNV, glGetVertexAttribLi64vNV, GETVERTEXATTRIBLI64VNV, (AND GLuint index, GLenum pname, GLint64EXT *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribLi64vNV, glGetVertexAttribLi64vNV, GETVERTEXATTRIBLI64VNV, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBLUI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribLui64vARB, glGetVertexAttribLui64vARB, GETVERTEXATTRIBLUI64VARB, (AND GLuint index, GLenum pname, GLuint64EXT *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribLui64vARB, glGetVertexAttribLui64vARB, GETVERTEXATTRIBLUI64VARB, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBLUI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribLui64vNV, glGetVertexAttribLui64vNV, GETVERTEXATTRIBLUI64VNV, (AND GLuint index, GLenum pname, GLuint64EXT *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribLui64vNV, glGetVertexAttribLui64vNV, GETVERTEXATTRIBLUI64VNV, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBPOINTERV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribPointerv, glGetVertexAttribPointerv, GETVERTEXATTRIBPOINTERV, (AND GLuint index, GLenum pname, void * *pointer), (index, pname, pointer), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribPointerv, glGetVertexAttribPointerv, GETVERTEXATTRIBPOINTERV, (AND GLuint index, GLenum pname, memptr pointer), (index, pname, pointer), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBPOINTERVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribPointervARB, glGetVertexAttribPointervARB, GETVERTEXATTRIBPOINTERVARB, (AND GLuint index, GLenum pname, void * *pointer), (index, pname, pointer), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribPointervARB, glGetVertexAttribPointervARB, GETVERTEXATTRIBPOINTERVARB, (AND GLuint index, GLenum pname, memptr pointer), (index, pname, pointer), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBPOINTERVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribPointervNV, glGetVertexAttribPointervNV, GETVERTEXATTRIBPOINTERVNV, (AND GLuint index, GLenum pname, void * *pointer), (index, pname, pointer), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribPointervNV, glGetVertexAttribPointervNV, GETVERTEXATTRIBPOINTERVNV, (AND GLuint index, GLenum pname, memptr pointer), (index, pname, pointer), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBDV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribdv, glGetVertexAttribdv, GETVERTEXATTRIBDV, (AND GLuint index, GLenum pname, GLdouble *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribdv, glGetVertexAttribdv, GETVERTEXATTRIBDV, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBDVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribdvARB, glGetVertexAttribdvARB, GETVERTEXATTRIBDVARB, (AND GLuint index, GLenum pname, GLdouble *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribdvARB, glGetVertexAttribdvARB, GETVERTEXATTRIBDVARB, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBDVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribdvNV, glGetVertexAttribdvNV, GETVERTEXATTRIBDVNV, (AND GLuint index, GLenum pname, GLdouble *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribdvNV, glGetVertexAttribdvNV, GETVERTEXATTRIBDVNV, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribfv, glGetVertexAttribfv, GETVERTEXATTRIBFV, (AND GLuint index, GLenum pname, GLfloat *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribfv, glGetVertexAttribfv, GETVERTEXATTRIBFV, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBFVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribfvARB, glGetVertexAttribfvARB, GETVERTEXATTRIBFVARB, (AND GLuint index, GLenum pname, GLfloat *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribfvARB, glGetVertexAttribfvARB, GETVERTEXATTRIBFVARB, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribfvNV, glGetVertexAttribfvNV, GETVERTEXATTRIBFVNV, (AND GLuint index, GLenum pname, GLfloat *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribfvNV, glGetVertexAttribfvNV, GETVERTEXATTRIBFVNV, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribiv, glGetVertexAttribiv, GETVERTEXATTRIBIV, (AND GLuint index, GLenum pname, GLint *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribiv, glGetVertexAttribiv, GETVERTEXATTRIBIV, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribivARB, glGetVertexAttribivARB, GETVERTEXATTRIBIVARB, (AND GLuint index, GLenum pname, GLint *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribivARB, glGetVertexAttribivARB, GETVERTEXATTRIBIVARB, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVERTEXATTRIBIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVertexAttribivNV, glGetVertexAttribivNV, GETVERTEXATTRIBIVNV, (AND GLuint index, GLenum pname, GLint *params), (index, pname, params), &index, GL_void_return) GL_PROCM(void, gl, GetVertexAttribivNV, glGetVertexAttribivNV, GETVERTEXATTRIBIVNV, (AND GLuint index, GLenum pname, memptr params), (index, pname, params), &index, GL_void_return) #endif #endif #ifndef NO_GLGETVIDEOCAPTURESTREAMDVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVideoCaptureStreamdvNV, glGetVideoCaptureStreamdvNV, GETVIDEOCAPTURESTREAMDVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) GL_PROCM(void, gl, GetVideoCaptureStreamdvNV, glGetVideoCaptureStreamdvNV, GETVIDEOCAPTURESTREAMDVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, memptr params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) #endif #endif #ifndef NO_GLGETVIDEOCAPTURESTREAMFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVideoCaptureStreamfvNV, glGetVideoCaptureStreamfvNV, GETVIDEOCAPTURESTREAMFVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) GL_PROCM(void, gl, GetVideoCaptureStreamfvNV, glGetVideoCaptureStreamfvNV, GETVIDEOCAPTURESTREAMFVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, memptr params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) #endif #endif #ifndef NO_GLGETVIDEOCAPTURESTREAMIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVideoCaptureStreamivNV, glGetVideoCaptureStreamivNV, GETVIDEOCAPTURESTREAMIVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) GL_PROCM(void, gl, GetVideoCaptureStreamivNV, glGetVideoCaptureStreamivNV, GETVIDEOCAPTURESTREAMIVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, memptr params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) #endif #endif #ifndef NO_GLGETVIDEOCAPTUREIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVideoCaptureivNV, glGetVideoCaptureivNV, GETVIDEOCAPTUREIVNV, (AND GLuint video_capture_slot, GLenum pname, GLint *params), (video_capture_slot, pname, params), &video_capture_slot, GL_void_return) GL_PROCM(void, gl, GetVideoCaptureivNV, glGetVideoCaptureivNV, GETVIDEOCAPTUREIVNV, (AND GLuint video_capture_slot, GLenum pname, memptr params), (video_capture_slot, pname, params), &video_capture_slot, GL_void_return) #endif #endif #ifndef NO_GLGETVIDEOI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVideoi64vNV, glGetVideoi64vNV, GETVIDEOI64VNV, (AND GLuint video_slot, GLenum pname, GLint64EXT *params), (video_slot, pname, params), &video_slot, GL_void_return) GL_PROCM(void, gl, GetVideoi64vNV, glGetVideoi64vNV, GETVIDEOI64VNV, (AND GLuint video_slot, GLenum pname, memptr params), (video_slot, pname, params), &video_slot, GL_void_return) #endif #endif #ifndef NO_GLGETVIDEOIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVideoivNV, glGetVideoivNV, GETVIDEOIVNV, (AND GLuint video_slot, GLenum pname, GLint *params), (video_slot, pname, params), &video_slot, GL_void_return) GL_PROCM(void, gl, GetVideoivNV, glGetVideoivNV, GETVIDEOIVNV, (AND GLuint video_slot, GLenum pname, memptr params), (video_slot, pname, params), &video_slot, GL_void_return) #endif #endif #ifndef NO_GLGETVIDEOUI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVideoui64vNV, glGetVideoui64vNV, GETVIDEOUI64VNV, (AND GLuint video_slot, GLenum pname, GLuint64EXT *params), (video_slot, pname, params), &video_slot, GL_void_return) GL_PROCM(void, gl, GetVideoui64vNV, glGetVideoui64vNV, GETVIDEOUI64VNV, (AND GLuint video_slot, GLenum pname, memptr params), (video_slot, pname, params), &video_slot, GL_void_return) #endif #endif #ifndef NO_GLGETVIDEOUIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetVideouivNV, glGetVideouivNV, GETVIDEOUIVNV, (AND GLuint video_slot, GLenum pname, GLuint *params), (video_slot, pname, params), &video_slot, GL_void_return) GL_PROCM(void, gl, GetVideouivNV, glGetVideouivNV, GETVIDEOUIVNV, (AND GLuint video_slot, GLenum pname, memptr params), (video_slot, pname, params), &video_slot, GL_void_return) #endif #endif #ifndef NO_GLGETVKPROCADDRNV #if !defined(TINYGL_ONLY) GL_PROC(GLVULKANPROCNV, gl, GetVkProcAddrNV, glGetVkProcAddrNV, GETVKPROCADDRNV, (AND const GLchar *name), (name), &name, return (GLVULKANPROCNV)) GL_PROCM(GLVULKANPROCNV, gl, GetVkProcAddrNV, glGetVkProcAddrNV, GETVKPROCADDRNV, (AND memptr name), (name), &name, return (GLVULKANPROCNV)) #endif #endif #ifndef NO_GLGETNCOLORTABLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnColorTable, glGetnColorTable, GETNCOLORTABLE, (AND GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table), (target, format, type, bufSize, table), &target, GL_void_return) GL_PROCM(void, gl, GetnColorTable, glGetnColorTable, GETNCOLORTABLE, (AND GLenum target, GLenum format, GLenum type, GLsizei bufSize, memptr table), (target, format, type, bufSize, table), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNCOLORTABLEARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnColorTableARB, glGetnColorTableARB, GETNCOLORTABLEARB, (AND GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table), (target, format, type, bufSize, table), &target, GL_void_return) GL_PROCM(void, gl, GetnColorTableARB, glGetnColorTableARB, GETNCOLORTABLEARB, (AND GLenum target, GLenum format, GLenum type, GLsizei bufSize, memptr table), (target, format, type, bufSize, table), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNCOMPRESSEDTEXIMAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnCompressedTexImage, glGetnCompressedTexImage, GETNCOMPRESSEDTEXIMAGE, (AND GLenum target, GLint lod, GLsizei bufSize, void *pixels), (target, lod, bufSize, pixels), &target, GL_void_return) GL_PROCM(void, gl, GetnCompressedTexImage, glGetnCompressedTexImage, GETNCOMPRESSEDTEXIMAGE, (AND GLenum target, GLint lod, GLsizei bufSize, memptr pixels), (target, lod, bufSize, pixels), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNCOMPRESSEDTEXIMAGEARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnCompressedTexImageARB, glGetnCompressedTexImageARB, GETNCOMPRESSEDTEXIMAGEARB, (AND GLenum target, GLint lod, GLsizei bufSize, void *img), (target, lod, bufSize, img), &target, GL_void_return) GL_PROCM(void, gl, GetnCompressedTexImageARB, glGetnCompressedTexImageARB, GETNCOMPRESSEDTEXIMAGEARB, (AND GLenum target, GLint lod, GLsizei bufSize, memptr img), (target, lod, bufSize, img), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNCONVOLUTIONFILTER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnConvolutionFilter, glGetnConvolutionFilter, GETNCONVOLUTIONFILTER, (AND GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image), (target, format, type, bufSize, image), &target, GL_void_return) GL_PROCM(void, gl, GetnConvolutionFilter, glGetnConvolutionFilter, GETNCONVOLUTIONFILTER, (AND GLenum target, GLenum format, GLenum type, GLsizei bufSize, memptr image), (target, format, type, bufSize, image), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNCONVOLUTIONFILTERARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnConvolutionFilterARB, glGetnConvolutionFilterARB, GETNCONVOLUTIONFILTERARB, (AND GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image), (target, format, type, bufSize, image), &target, GL_void_return) GL_PROCM(void, gl, GetnConvolutionFilterARB, glGetnConvolutionFilterARB, GETNCONVOLUTIONFILTERARB, (AND GLenum target, GLenum format, GLenum type, GLsizei bufSize, memptr image), (target, format, type, bufSize, image), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNHISTOGRAM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnHistogram, glGetnHistogram, GETNHISTOGRAM, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values), (target, reset, format, type, bufSize, values), &target, GL_void_return) GL_PROCM(void, gl, GetnHistogram, glGetnHistogram, GETNHISTOGRAM, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, memptr values), (target, reset, format, type, bufSize, values), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNHISTOGRAMARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnHistogramARB, glGetnHistogramARB, GETNHISTOGRAMARB, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values), (target, reset, format, type, bufSize, values), &target, GL_void_return) GL_PROCM(void, gl, GetnHistogramARB, glGetnHistogramARB, GETNHISTOGRAMARB, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, memptr values), (target, reset, format, type, bufSize, values), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNMAPDV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnMapdv, glGetnMapdv, GETNMAPDV, (AND GLenum target, GLenum query, GLsizei bufSize, GLdouble *v), (target, query, bufSize, v), &target, GL_void_return) GL_PROCM(void, gl, GetnMapdv, glGetnMapdv, GETNMAPDV, (AND GLenum target, GLenum query, GLsizei bufSize, memptr v), (target, query, bufSize, v), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNMAPDVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnMapdvARB, glGetnMapdvARB, GETNMAPDVARB, (AND GLenum target, GLenum query, GLsizei bufSize, GLdouble *v), (target, query, bufSize, v), &target, GL_void_return) GL_PROCM(void, gl, GetnMapdvARB, glGetnMapdvARB, GETNMAPDVARB, (AND GLenum target, GLenum query, GLsizei bufSize, memptr v), (target, query, bufSize, v), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNMAPFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnMapfv, glGetnMapfv, GETNMAPFV, (AND GLenum target, GLenum query, GLsizei bufSize, GLfloat *v), (target, query, bufSize, v), &target, GL_void_return) GL_PROCM(void, gl, GetnMapfv, glGetnMapfv, GETNMAPFV, (AND GLenum target, GLenum query, GLsizei bufSize, memptr v), (target, query, bufSize, v), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNMAPFVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnMapfvARB, glGetnMapfvARB, GETNMAPFVARB, (AND GLenum target, GLenum query, GLsizei bufSize, GLfloat *v), (target, query, bufSize, v), &target, GL_void_return) GL_PROCM(void, gl, GetnMapfvARB, glGetnMapfvARB, GETNMAPFVARB, (AND GLenum target, GLenum query, GLsizei bufSize, memptr v), (target, query, bufSize, v), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNMAPIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnMapiv, glGetnMapiv, GETNMAPIV, (AND GLenum target, GLenum query, GLsizei bufSize, GLint *v), (target, query, bufSize, v), &target, GL_void_return) GL_PROCM(void, gl, GetnMapiv, glGetnMapiv, GETNMAPIV, (AND GLenum target, GLenum query, GLsizei bufSize, memptr v), (target, query, bufSize, v), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNMAPIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnMapivARB, glGetnMapivARB, GETNMAPIVARB, (AND GLenum target, GLenum query, GLsizei bufSize, GLint *v), (target, query, bufSize, v), &target, GL_void_return) GL_PROCM(void, gl, GetnMapivARB, glGetnMapivARB, GETNMAPIVARB, (AND GLenum target, GLenum query, GLsizei bufSize, memptr v), (target, query, bufSize, v), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNMINMAX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnMinmax, glGetnMinmax, GETNMINMAX, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values), (target, reset, format, type, bufSize, values), &target, GL_void_return) GL_PROCM(void, gl, GetnMinmax, glGetnMinmax, GETNMINMAX, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, memptr values), (target, reset, format, type, bufSize, values), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNMINMAXARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnMinmaxARB, glGetnMinmaxARB, GETNMINMAXARB, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values), (target, reset, format, type, bufSize, values), &target, GL_void_return) GL_PROCM(void, gl, GetnMinmaxARB, glGetnMinmaxARB, GETNMINMAXARB, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, memptr values), (target, reset, format, type, bufSize, values), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNPIXELMAPFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnPixelMapfv, glGetnPixelMapfv, GETNPIXELMAPFV, (AND GLenum map, GLsizei bufSize, GLfloat *values), (map, bufSize, values), &map, GL_void_return) GL_PROCM(void, gl, GetnPixelMapfv, glGetnPixelMapfv, GETNPIXELMAPFV, (AND GLenum map, GLsizei bufSize, memptr values), (map, bufSize, values), &map, GL_void_return) #endif #endif #ifndef NO_GLGETNPIXELMAPFVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnPixelMapfvARB, glGetnPixelMapfvARB, GETNPIXELMAPFVARB, (AND GLenum map, GLsizei bufSize, GLfloat *values), (map, bufSize, values), &map, GL_void_return) GL_PROCM(void, gl, GetnPixelMapfvARB, glGetnPixelMapfvARB, GETNPIXELMAPFVARB, (AND GLenum map, GLsizei bufSize, memptr values), (map, bufSize, values), &map, GL_void_return) #endif #endif #ifndef NO_GLGETNPIXELMAPUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnPixelMapuiv, glGetnPixelMapuiv, GETNPIXELMAPUIV, (AND GLenum map, GLsizei bufSize, GLuint *values), (map, bufSize, values), &map, GL_void_return) GL_PROCM(void, gl, GetnPixelMapuiv, glGetnPixelMapuiv, GETNPIXELMAPUIV, (AND GLenum map, GLsizei bufSize, memptr values), (map, bufSize, values), &map, GL_void_return) #endif #endif #ifndef NO_GLGETNPIXELMAPUIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnPixelMapuivARB, glGetnPixelMapuivARB, GETNPIXELMAPUIVARB, (AND GLenum map, GLsizei bufSize, GLuint *values), (map, bufSize, values), &map, GL_void_return) GL_PROCM(void, gl, GetnPixelMapuivARB, glGetnPixelMapuivARB, GETNPIXELMAPUIVARB, (AND GLenum map, GLsizei bufSize, memptr values), (map, bufSize, values), &map, GL_void_return) #endif #endif #ifndef NO_GLGETNPIXELMAPUSV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnPixelMapusv, glGetnPixelMapusv, GETNPIXELMAPUSV, (AND GLenum map, GLsizei bufSize, GLushort *values), (map, bufSize, values), &map, GL_void_return) GL_PROCM(void, gl, GetnPixelMapusv, glGetnPixelMapusv, GETNPIXELMAPUSV, (AND GLenum map, GLsizei bufSize, memptr values), (map, bufSize, values), &map, GL_void_return) #endif #endif #ifndef NO_GLGETNPIXELMAPUSVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnPixelMapusvARB, glGetnPixelMapusvARB, GETNPIXELMAPUSVARB, (AND GLenum map, GLsizei bufSize, GLushort *values), (map, bufSize, values), &map, GL_void_return) GL_PROCM(void, gl, GetnPixelMapusvARB, glGetnPixelMapusvARB, GETNPIXELMAPUSVARB, (AND GLenum map, GLsizei bufSize, memptr values), (map, bufSize, values), &map, GL_void_return) #endif #endif #ifndef NO_GLGETNPOLYGONSTIPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnPolygonStipple, glGetnPolygonStipple, GETNPOLYGONSTIPPLE, (AND GLsizei bufSize, GLubyte *pattern), (bufSize, pattern), &bufSize, GL_void_return) GL_PROCM(void, gl, GetnPolygonStipple, glGetnPolygonStipple, GETNPOLYGONSTIPPLE, (AND GLsizei bufSize, memptr pattern), (bufSize, pattern), &bufSize, GL_void_return) #endif #endif #ifndef NO_GLGETNPOLYGONSTIPPLEARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnPolygonStippleARB, glGetnPolygonStippleARB, GETNPOLYGONSTIPPLEARB, (AND GLsizei bufSize, GLubyte *pattern), (bufSize, pattern), &bufSize, GL_void_return) GL_PROCM(void, gl, GetnPolygonStippleARB, glGetnPolygonStippleARB, GETNPOLYGONSTIPPLEARB, (AND GLsizei bufSize, memptr pattern), (bufSize, pattern), &bufSize, GL_void_return) #endif #endif #ifndef NO_GLGETNSEPARABLEFILTER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnSeparableFilter, glGetnSeparableFilter, GETNSEPARABLEFILTER, (AND GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span), (target, format, type, rowBufSize, row, columnBufSize, column, span), &target, GL_void_return) GL_PROCM(void, gl, GetnSeparableFilter, glGetnSeparableFilter, GETNSEPARABLEFILTER, (AND GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, memptr row, GLsizei columnBufSize, memptr column, memptr span), (target, format, type, rowBufSize, row, columnBufSize, column, span), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNSEPARABLEFILTERARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnSeparableFilterARB, glGetnSeparableFilterARB, GETNSEPARABLEFILTERARB, (AND GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span), (target, format, type, rowBufSize, row, columnBufSize, column, span), &target, GL_void_return) GL_PROCM(void, gl, GetnSeparableFilterARB, glGetnSeparableFilterARB, GETNSEPARABLEFILTERARB, (AND GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, memptr row, GLsizei columnBufSize, memptr column, memptr span), (target, format, type, rowBufSize, row, columnBufSize, column, span), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNTEXIMAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnTexImage, glGetnTexImage, GETNTEXIMAGE, (AND GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels), (target, level, format, type, bufSize, pixels), &target, GL_void_return) GL_PROCM(void, gl, GetnTexImage, glGetnTexImage, GETNTEXIMAGE, (AND GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, memptr pixels), (target, level, format, type, bufSize, pixels), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNTEXIMAGEARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnTexImageARB, glGetnTexImageARB, GETNTEXIMAGEARB, (AND GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img), (target, level, format, type, bufSize, img), &target, GL_void_return) GL_PROCM(void, gl, GetnTexImageARB, glGetnTexImageARB, GETNTEXIMAGEARB, (AND GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, memptr img), (target, level, format, type, bufSize, img), &target, GL_void_return) #endif #endif #ifndef NO_GLGETNUNIFORMDV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnUniformdv, glGetnUniformdv, GETNUNIFORMDV, (AND GLuint program, GLint location, GLsizei bufSize, GLdouble *params), (program, location, bufSize, params), &program, GL_void_return) GL_PROCM(void, gl, GetnUniformdv, glGetnUniformdv, GETNUNIFORMDV, (AND GLuint program, GLint location, GLsizei bufSize, memptr params), (program, location, bufSize, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNUNIFORMDVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnUniformdvARB, glGetnUniformdvARB, GETNUNIFORMDVARB, (AND GLuint program, GLint location, GLsizei bufSize, GLdouble *params), (program, location, bufSize, params), &program, GL_void_return) GL_PROCM(void, gl, GetnUniformdvARB, glGetnUniformdvARB, GETNUNIFORMDVARB, (AND GLuint program, GLint location, GLsizei bufSize, memptr params), (program, location, bufSize, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNUNIFORMFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnUniformfv, glGetnUniformfv, GETNUNIFORMFV, (AND GLuint program, GLint location, GLsizei bufSize, GLfloat *params), (program, location, bufSize, params), &program, GL_void_return) GL_PROCM(void, gl, GetnUniformfv, glGetnUniformfv, GETNUNIFORMFV, (AND GLuint program, GLint location, GLsizei bufSize, memptr params), (program, location, bufSize, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNUNIFORMFVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnUniformfvARB, glGetnUniformfvARB, GETNUNIFORMFVARB, (AND GLuint program, GLint location, GLsizei bufSize, GLfloat *params), (program, location, bufSize, params), &program, GL_void_return) GL_PROCM(void, gl, GetnUniformfvARB, glGetnUniformfvARB, GETNUNIFORMFVARB, (AND GLuint program, GLint location, GLsizei bufSize, memptr params), (program, location, bufSize, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNUNIFORMI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnUniformi64vARB, glGetnUniformi64vARB, GETNUNIFORMI64VARB, (AND GLuint program, GLint location, GLsizei bufSize, GLint64 *params), (program, location, bufSize, params), &program, GL_void_return) GL_PROCM(void, gl, GetnUniformi64vARB, glGetnUniformi64vARB, GETNUNIFORMI64VARB, (AND GLuint program, GLint location, GLsizei bufSize, memptr params), (program, location, bufSize, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNUNIFORMIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnUniformiv, glGetnUniformiv, GETNUNIFORMIV, (AND GLuint program, GLint location, GLsizei bufSize, GLint *params), (program, location, bufSize, params), &program, GL_void_return) GL_PROCM(void, gl, GetnUniformiv, glGetnUniformiv, GETNUNIFORMIV, (AND GLuint program, GLint location, GLsizei bufSize, memptr params), (program, location, bufSize, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNUNIFORMIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnUniformivARB, glGetnUniformivARB, GETNUNIFORMIVARB, (AND GLuint program, GLint location, GLsizei bufSize, GLint *params), (program, location, bufSize, params), &program, GL_void_return) GL_PROCM(void, gl, GetnUniformivARB, glGetnUniformivARB, GETNUNIFORMIVARB, (AND GLuint program, GLint location, GLsizei bufSize, memptr params), (program, location, bufSize, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNUNIFORMUI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnUniformui64vARB, glGetnUniformui64vARB, GETNUNIFORMUI64VARB, (AND GLuint program, GLint location, GLsizei bufSize, GLuint64 *params), (program, location, bufSize, params), &program, GL_void_return) GL_PROCM(void, gl, GetnUniformui64vARB, glGetnUniformui64vARB, GETNUNIFORMUI64VARB, (AND GLuint program, GLint location, GLsizei bufSize, memptr params), (program, location, bufSize, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNUNIFORMUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnUniformuiv, glGetnUniformuiv, GETNUNIFORMUIV, (AND GLuint program, GLint location, GLsizei bufSize, GLuint *params), (program, location, bufSize, params), &program, GL_void_return) GL_PROCM(void, gl, GetnUniformuiv, glGetnUniformuiv, GETNUNIFORMUIV, (AND GLuint program, GLint location, GLsizei bufSize, memptr params), (program, location, bufSize, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGETNUNIFORMUIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GetnUniformuivARB, glGetnUniformuivARB, GETNUNIFORMUIVARB, (AND GLuint program, GLint location, GLsizei bufSize, GLuint *params), (program, location, bufSize, params), &program, GL_void_return) GL_PROCM(void, gl, GetnUniformuivARB, glGetnUniformuivARB, GETNUNIFORMUIVARB, (AND GLuint program, GLint location, GLsizei bufSize, memptr params), (program, location, bufSize, params), &program, GL_void_return) #endif #endif #ifndef NO_GLGLOBALALPHAFACTORBSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GlobalAlphaFactorbSUN, glGlobalAlphaFactorbSUN, GLOBALALPHAFACTORBSUN, (AND GLbyte32 factor), (factor), &factor, GL_void_return) GL_PROCM(void, gl, GlobalAlphaFactorbSUN, glGlobalAlphaFactorbSUN, GLOBALALPHAFACTORBSUN, (AND GLbyte32 factor), (factor), &factor, GL_void_return) #endif #endif #ifndef NO_GLGLOBALALPHAFACTORDSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GlobalAlphaFactordSUN, glGlobalAlphaFactordSUN, GLOBALALPHAFACTORDSUN, (AND GLdouble factor), (factor), &factor, GL_void_return) GL_PROCM(void, gl, GlobalAlphaFactordSUN, glGlobalAlphaFactordSUN, GLOBALALPHAFACTORDSUN, (AND GLdouble factor), (factor), &factor, GL_void_return) #endif #endif #ifndef NO_GLGLOBALALPHAFACTORFSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GlobalAlphaFactorfSUN, glGlobalAlphaFactorfSUN, GLOBALALPHAFACTORFSUN, (AND GLfloat factor), (factor), &factor, GL_void_return) GL_PROCM(void, gl, GlobalAlphaFactorfSUN, glGlobalAlphaFactorfSUN, GLOBALALPHAFACTORFSUN, (AND GLfloat factor), (factor), &factor, GL_void_return) #endif #endif #ifndef NO_GLGLOBALALPHAFACTORISUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GlobalAlphaFactoriSUN, glGlobalAlphaFactoriSUN, GLOBALALPHAFACTORISUN, (AND GLint factor), (factor), &factor, GL_void_return) GL_PROCM(void, gl, GlobalAlphaFactoriSUN, glGlobalAlphaFactoriSUN, GLOBALALPHAFACTORISUN, (AND GLint factor), (factor), &factor, GL_void_return) #endif #endif #ifndef NO_GLGLOBALALPHAFACTORSSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GlobalAlphaFactorsSUN, glGlobalAlphaFactorsSUN, GLOBALALPHAFACTORSSUN, (AND GLshort32 factor), (factor), &factor, GL_void_return) GL_PROCM(void, gl, GlobalAlphaFactorsSUN, glGlobalAlphaFactorsSUN, GLOBALALPHAFACTORSSUN, (AND GLshort32 factor), (factor), &factor, GL_void_return) #endif #endif #ifndef NO_GLGLOBALALPHAFACTORUBSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GlobalAlphaFactorubSUN, glGlobalAlphaFactorubSUN, GLOBALALPHAFACTORUBSUN, (AND GLubyte32 factor), (factor), &factor, GL_void_return) GL_PROCM(void, gl, GlobalAlphaFactorubSUN, glGlobalAlphaFactorubSUN, GLOBALALPHAFACTORUBSUN, (AND GLubyte32 factor), (factor), &factor, GL_void_return) #endif #endif #ifndef NO_GLGLOBALALPHAFACTORUISUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GlobalAlphaFactoruiSUN, glGlobalAlphaFactoruiSUN, GLOBALALPHAFACTORUISUN, (AND GLuint factor), (factor), &factor, GL_void_return) GL_PROCM(void, gl, GlobalAlphaFactoruiSUN, glGlobalAlphaFactoruiSUN, GLOBALALPHAFACTORUISUN, (AND GLuint factor), (factor), &factor, GL_void_return) #endif #endif #ifndef NO_GLGLOBALALPHAFACTORUSSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, GlobalAlphaFactorusSUN, glGlobalAlphaFactorusSUN, GLOBALALPHAFACTORUSSUN, (AND GLushort32 factor), (factor), &factor, GL_void_return) GL_PROCM(void, gl, GlobalAlphaFactorusSUN, glGlobalAlphaFactorusSUN, GLOBALALPHAFACTORUSSUN, (AND GLushort32 factor), (factor), &factor, GL_void_return) #endif #endif #ifndef NO_GLHINT GL_PROC(void, gl, Hint, glHint, HINT, (AND GLenum target, GLenum mode), (target, mode), &target, GL_void_return) GL_PROCM(void, gl, Hint, glHint, HINT, (AND GLenum target, GLenum mode), (target, mode), &target, GL_void_return) #endif #ifndef NO_GLHINTPGI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, HintPGI, glHintPGI, HINTPGI, (AND GLenum target, GLint mode), (target, mode), &target, GL_void_return) GL_PROCM(void, gl, HintPGI, glHintPGI, HINTPGI, (AND GLenum target, GLint mode), (target, mode), &target, GL_void_return) #endif #endif #ifndef NO_GLHISTOGRAM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Histogram, glHistogram, HISTOGRAM, (AND GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink), (target, width, internalformat, sink), &target, GL_void_return) GL_PROCM(void, gl, Histogram, glHistogram, HISTOGRAM, (AND GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink), (target, width, internalformat, sink), &target, GL_void_return) #endif #endif #ifndef NO_GLHISTOGRAMEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, HistogramEXT, glHistogramEXT, HISTOGRAMEXT, (AND GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink), (target, width, internalformat, sink), &target, GL_void_return) GL_PROCM(void, gl, HistogramEXT, glHistogramEXT, HISTOGRAMEXT, (AND GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink), (target, width, internalformat, sink), &target, GL_void_return) #endif #endif #ifndef NO_GLIGLOOINTERFACESGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, IglooInterfaceSGIX, glIglooInterfaceSGIX, IGLOOINTERFACESGIX, (AND GLenum pname, const void *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, IglooInterfaceSGIX, glIglooInterfaceSGIX, IGLOOINTERFACESGIX, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLIMAGETRANSFORMPARAMETERFHP #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ImageTransformParameterfHP, glImageTransformParameterfHP, IMAGETRANSFORMPARAMETERFHP, (AND GLenum target, GLenum pname, GLfloat param), (target, pname, param), &target, GL_void_return) GL_PROCM(void, gl, ImageTransformParameterfHP, glImageTransformParameterfHP, IMAGETRANSFORMPARAMETERFHP, (AND GLenum target, GLenum pname, GLfloat param), (target, pname, param), &target, GL_void_return) #endif #endif #ifndef NO_GLIMAGETRANSFORMPARAMETERFVHP #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ImageTransformParameterfvHP, glImageTransformParameterfvHP, IMAGETRANSFORMPARAMETERFVHP, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ImageTransformParameterfvHP, glImageTransformParameterfvHP, IMAGETRANSFORMPARAMETERFVHP, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLIMAGETRANSFORMPARAMETERIHP #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ImageTransformParameteriHP, glImageTransformParameteriHP, IMAGETRANSFORMPARAMETERIHP, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) GL_PROCM(void, gl, ImageTransformParameteriHP, glImageTransformParameteriHP, IMAGETRANSFORMPARAMETERIHP, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) #endif #endif #ifndef NO_GLIMAGETRANSFORMPARAMETERIVHP #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ImageTransformParameterivHP, glImageTransformParameterivHP, IMAGETRANSFORMPARAMETERIVHP, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, ImageTransformParameterivHP, glImageTransformParameterivHP, IMAGETRANSFORMPARAMETERIVHP, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLIMPORTMEMORYFDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ImportMemoryFdEXT, glImportMemoryFdEXT, IMPORTMEMORYFDEXT, (AND GLuint memory, GLuint64 size, GLenum handleType, GLint fd), (memory, size, handleType, fd), &memory, GL_void_return) GL_PROCM(void, gl, ImportMemoryFdEXT, glImportMemoryFdEXT, IMPORTMEMORYFDEXT, (AND GLuint memory, GLuint64 size, GLenum handleType, GLint fd), (memory, size, handleType, fd), &memory, GL_void_return) #endif #endif #ifndef NO_GLIMPORTMEMORYWIN32HANDLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ImportMemoryWin32HandleEXT, glImportMemoryWin32HandleEXT, IMPORTMEMORYWIN32HANDLEEXT, (AND GLuint memory, GLuint64 size, GLenum handleType, void *handle), (memory, size, handleType, handle), &memory, GL_void_return) GL_PROCM(void, gl, ImportMemoryWin32HandleEXT, glImportMemoryWin32HandleEXT, IMPORTMEMORYWIN32HANDLEEXT, (AND GLuint memory, GLuint64 size, GLenum handleType, memptr handle), (memory, size, handleType, handle), &memory, GL_void_return) #endif #endif #ifndef NO_GLIMPORTMEMORYWIN32NAMEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ImportMemoryWin32NameEXT, glImportMemoryWin32NameEXT, IMPORTMEMORYWIN32NAMEEXT, (AND GLuint memory, GLuint64 size, GLenum handleType, const void *name), (memory, size, handleType, name), &memory, GL_void_return) GL_PROCM(void, gl, ImportMemoryWin32NameEXT, glImportMemoryWin32NameEXT, IMPORTMEMORYWIN32NAMEEXT, (AND GLuint memory, GLuint64 size, GLenum handleType, memptr name), (memory, size, handleType, name), &memory, GL_void_return) #endif #endif #ifndef NO_GLIMPORTSEMAPHOREFDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ImportSemaphoreFdEXT, glImportSemaphoreFdEXT, IMPORTSEMAPHOREFDEXT, (AND GLuint semaphore, GLenum handleType, GLint fd), (semaphore, handleType, fd), &semaphore, GL_void_return) GL_PROCM(void, gl, ImportSemaphoreFdEXT, glImportSemaphoreFdEXT, IMPORTSEMAPHOREFDEXT, (AND GLuint semaphore, GLenum handleType, GLint fd), (semaphore, handleType, fd), &semaphore, GL_void_return) #endif #endif #ifndef NO_GLIMPORTSEMAPHOREWIN32HANDLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ImportSemaphoreWin32HandleEXT, glImportSemaphoreWin32HandleEXT, IMPORTSEMAPHOREWIN32HANDLEEXT, (AND GLuint semaphore, GLenum handleType, void *handle), (semaphore, handleType, handle), &semaphore, GL_void_return) GL_PROCM(void, gl, ImportSemaphoreWin32HandleEXT, glImportSemaphoreWin32HandleEXT, IMPORTSEMAPHOREWIN32HANDLEEXT, (AND GLuint semaphore, GLenum handleType, memptr handle), (semaphore, handleType, handle), &semaphore, GL_void_return) #endif #endif #ifndef NO_GLIMPORTSEMAPHOREWIN32NAMEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ImportSemaphoreWin32NameEXT, glImportSemaphoreWin32NameEXT, IMPORTSEMAPHOREWIN32NAMEEXT, (AND GLuint semaphore, GLenum handleType, const void *name), (semaphore, handleType, name), &semaphore, GL_void_return) GL_PROCM(void, gl, ImportSemaphoreWin32NameEXT, glImportSemaphoreWin32NameEXT, IMPORTSEMAPHOREWIN32NAMEEXT, (AND GLuint semaphore, GLenum handleType, memptr name), (semaphore, handleType, name), &semaphore, GL_void_return) #endif #endif #ifndef NO_GLIMPORTSYNCEXT #if !defined(TINYGL_ONLY) GL_PROC(GLsync, gl, ImportSyncEXT, glImportSyncEXT, IMPORTSYNCEXT, (AND GLenum external_sync_type, GLintptr external_sync, GLbitfield flags), (external_sync_type, external_sync, flags), &external_sync_type, return (GLsync)) GL_PROCM(GLsync, gl, ImportSyncEXT, glImportSyncEXT, IMPORTSYNCEXT, (AND GLenum external_sync_type, GLintptr external_sync, GLbitfield flags), (external_sync_type, external_sync, flags), &external_sync_type, return (GLsync)) #endif #endif #ifndef NO_GLINDEXFORMATNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, IndexFormatNV, glIndexFormatNV, INDEXFORMATNV, (AND GLenum type, GLsizei stride), (type, stride), &type, GL_void_return) GL_PROCM(void, gl, IndexFormatNV, glIndexFormatNV, INDEXFORMATNV, (AND GLenum type, GLsizei stride), (type, stride), &type, GL_void_return) #endif #endif #ifndef NO_GLINDEXFUNCEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, IndexFuncEXT, glIndexFuncEXT, INDEXFUNCEXT, (AND GLenum func, GLclampf ref), (func, ref), &func, GL_void_return) GL_PROCM(void, gl, IndexFuncEXT, glIndexFuncEXT, INDEXFUNCEXT, (AND GLenum func, GLclampf ref), (func, ref), &func, GL_void_return) #endif #endif #ifndef NO_GLINDEXMASK #if !defined(TINYGL_ONLY) GL_PROC(void, gl, IndexMask, glIndexMask, INDEXMASK, (AND GLuint mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, IndexMask, glIndexMask, INDEXMASK, (AND GLuint mask), (mask), &mask, GL_void_return) #endif #endif #ifndef NO_GLINDEXMATERIALEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, IndexMaterialEXT, glIndexMaterialEXT, INDEXMATERIALEXT, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) GL_PROCM(void, gl, IndexMaterialEXT, glIndexMaterialEXT, INDEXMATERIALEXT, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) #endif #endif #ifndef NO_GLINDEXPOINTER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, IndexPointer, glIndexPointer, INDEXPOINTER, (AND GLenum type, GLsizei stride, const GLvoid *pointer), (type, stride, pointer), &type, GL_void_return) GL_PROCM(void, gl, IndexPointer, glIndexPointer, INDEXPOINTER, (AND GLenum type, GLsizei stride, memptr pointer), (type, stride, pointer), &type, GL_void_return) #endif #endif #ifndef NO_GLINDEXPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, IndexPointerEXT, glIndexPointerEXT, INDEXPOINTEREXT, (AND GLenum type, GLsizei stride, GLsizei count, const void *pointer), (type, stride, count, pointer), &type, GL_void_return) GL_PROCM(void, gl, IndexPointerEXT, glIndexPointerEXT, INDEXPOINTEREXT, (AND GLenum type, GLsizei stride, GLsizei count, memptr pointer), (type, stride, count, pointer), &type, GL_void_return) #endif #endif #ifndef NO_GLINDEXPOINTERLISTIBM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, IndexPointerListIBM, glIndexPointerListIBM, INDEXPOINTERLISTIBM, (AND GLenum type, GLint stride, const void * *pointer, GLint ptrstride), (type, stride, pointer, ptrstride), &type, GL_void_return) GL_PROCM(void, gl, IndexPointerListIBM, glIndexPointerListIBM, INDEXPOINTERLISTIBM, (AND GLenum type, GLint stride, memptr pointer, GLint ptrstride), (type, stride, pointer, ptrstride), &type, GL_void_return) #endif #endif #ifndef NO_GLINDEXD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Indexd, glIndexd, INDEXD, (AND GLdouble c), (c), &c, GL_void_return) GL_PROCM(void, gl, Indexd, glIndexd, INDEXD, (AND GLdouble c), (c), &c, GL_void_return) #endif #endif #ifndef NO_GLINDEXDV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Indexdv, glIndexdv, INDEXDV, (AND const GLdouble *c), (c), &c, GL_void_return) GL_PROCM(void, gl, Indexdv, glIndexdv, INDEXDV, (AND memptr c), (c), &c, GL_void_return) #endif #endif #ifndef NO_GLINDEXF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Indexf, glIndexf, INDEXF, (AND GLfloat c), (c), &c, GL_void_return) GL_PROCM(void, gl, Indexf, glIndexf, INDEXF, (AND GLfloat c), (c), &c, GL_void_return) #endif #endif #ifndef NO_GLINDEXFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Indexfv, glIndexfv, INDEXFV, (AND const GLfloat *c), (c), &c, GL_void_return) GL_PROCM(void, gl, Indexfv, glIndexfv, INDEXFV, (AND memptr c), (c), &c, GL_void_return) #endif #endif #ifndef NO_GLINDEXI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Indexi, glIndexi, INDEXI, (AND GLint c), (c), &c, GL_void_return) GL_PROCM(void, gl, Indexi, glIndexi, INDEXI, (AND GLint c), (c), &c, GL_void_return) #endif #endif #ifndef NO_GLINDEXIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Indexiv, glIndexiv, INDEXIV, (AND const GLint *c), (c), &c, GL_void_return) GL_PROCM(void, gl, Indexiv, glIndexiv, INDEXIV, (AND memptr c), (c), &c, GL_void_return) #endif #endif #ifndef NO_GLINDEXS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Indexs, glIndexs, INDEXS, (AND GLshort32 c), (c), &c, GL_void_return) GL_PROCM(void, gl, Indexs, glIndexs, INDEXS, (AND GLshort32 c), (c), &c, GL_void_return) #endif #endif #ifndef NO_GLINDEXSV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Indexsv, glIndexsv, INDEXSV, (AND const GLshort *c), (c), &c, GL_void_return) GL_PROCM(void, gl, Indexsv, glIndexsv, INDEXSV, (AND memptr c), (c), &c, GL_void_return) #endif #endif #ifndef NO_GLINDEXUB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Indexub, glIndexub, INDEXUB, (AND GLubyte32 c), (c), &c, GL_void_return) GL_PROCM(void, gl, Indexub, glIndexub, INDEXUB, (AND GLubyte32 c), (c), &c, GL_void_return) #endif #endif #ifndef NO_GLINDEXUBV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Indexubv, glIndexubv, INDEXUBV, (AND const GLubyte *c), (c), &c, GL_void_return) GL_PROCM(void, gl, Indexubv, glIndexubv, INDEXUBV, (AND memptr c), (c), &c, GL_void_return) #endif #endif #ifndef NO_GLINDEXXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, IndexxOES, glIndexxOES, INDEXXOES, (AND GLfixed component), (component), &component, GL_void_return) GL_PROCM(void, gl, IndexxOES, glIndexxOES, INDEXXOES, (AND GLfixed component), (component), &component, GL_void_return) #endif #endif #ifndef NO_GLINDEXXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, IndexxvOES, glIndexxvOES, INDEXXVOES, (AND const GLfixed *component), (component), &component, GL_void_return) GL_PROCM(void, gl, IndexxvOES, glIndexxvOES, INDEXXVOES, (AND memptr component), (component), &component, GL_void_return) #endif #endif #ifndef NO_GLINITNAMES GL_PROC(void, gl, InitNames, glInitNames, INITNAMES, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, InitNames, glInitNames, INITNAMES, (NOTHING), (), NULL, GL_void_return) #endif #ifndef NO_GLINSERTCOMPONENTEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, InsertComponentEXT, glInsertComponentEXT, INSERTCOMPONENTEXT, (AND GLuint res, GLuint src, GLuint num), (res, src, num), &res, GL_void_return) GL_PROCM(void, gl, InsertComponentEXT, glInsertComponentEXT, INSERTCOMPONENTEXT, (AND GLuint res, GLuint src, GLuint num), (res, src, num), &res, GL_void_return) #endif #endif #ifndef NO_GLINSERTEVENTMARKEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, InsertEventMarkerEXT, glInsertEventMarkerEXT, INSERTEVENTMARKEREXT, (AND GLsizei length, const GLchar *marker), (length, marker), &length, GL_void_return) GL_PROCM(void, gl, InsertEventMarkerEXT, glInsertEventMarkerEXT, INSERTEVENTMARKEREXT, (AND GLsizei length, memptr marker), (length, marker), &length, GL_void_return) #endif #endif #ifndef NO_GLINSTRUMENTSBUFFERSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, InstrumentsBufferSGIX, glInstrumentsBufferSGIX, INSTRUMENTSBUFFERSGIX, (AND GLsizei size, GLint *buffer), (size, buffer), &size, GL_void_return) GL_PROCM(void, gl, InstrumentsBufferSGIX, glInstrumentsBufferSGIX, INSTRUMENTSBUFFERSGIX, (AND GLsizei size, memptr buffer), (size, buffer), &size, GL_void_return) #endif #endif #ifndef NO_GLINTERLEAVEDARRAYS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, InterleavedArrays, glInterleavedArrays, INTERLEAVEDARRAYS, (AND GLenum format, GLsizei stride, const GLvoid *pointer), (format, stride, pointer), &format, GL_void_return) GL_PROCM(void, gl, InterleavedArrays, glInterleavedArrays, INTERLEAVEDARRAYS, (AND GLenum format, GLsizei stride, memptr pointer), (format, stride, pointer), &format, GL_void_return) #endif #endif #ifndef NO_GLINTERPOLATEPATHSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, InterpolatePathsNV, glInterpolatePathsNV, INTERPOLATEPATHSNV, (AND GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight), (resultPath, pathA, pathB, weight), &resultPath, GL_void_return) GL_PROCM(void, gl, InterpolatePathsNV, glInterpolatePathsNV, INTERPOLATEPATHSNV, (AND GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight), (resultPath, pathA, pathB, weight), &resultPath, GL_void_return) #endif #endif #ifndef NO_GLINVALIDATEBUFFERDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, InvalidateBufferData, glInvalidateBufferData, INVALIDATEBUFFERDATA, (AND GLuint buffer), (buffer), &buffer, GL_void_return) GL_PROCM(void, gl, InvalidateBufferData, glInvalidateBufferData, INVALIDATEBUFFERDATA, (AND GLuint buffer), (buffer), &buffer, GL_void_return) #endif #endif #ifndef NO_GLINVALIDATEBUFFERSUBDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, InvalidateBufferSubData, glInvalidateBufferSubData, INVALIDATEBUFFERSUBDATA, (AND GLuint buffer, GLintptr offset, GLsizeiptr length), (buffer, offset, length), &buffer, GL_void_return) GL_PROCM(void, gl, InvalidateBufferSubData, glInvalidateBufferSubData, INVALIDATEBUFFERSUBDATA, (AND GLuint buffer, GLintptr offset, GLsizeiptr length), (buffer, offset, length), &buffer, GL_void_return) #endif #endif #ifndef NO_GLINVALIDATEFRAMEBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, InvalidateFramebuffer, glInvalidateFramebuffer, INVALIDATEFRAMEBUFFER, (AND GLenum target, GLsizei numAttachments, const GLenum *attachments), (target, numAttachments, attachments), &target, GL_void_return) GL_PROCM(void, gl, InvalidateFramebuffer, glInvalidateFramebuffer, INVALIDATEFRAMEBUFFER, (AND GLenum target, GLsizei numAttachments, memptr attachments), (target, numAttachments, attachments), &target, GL_void_return) #endif #endif #ifndef NO_GLINVALIDATENAMEDFRAMEBUFFERDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, InvalidateNamedFramebufferData, glInvalidateNamedFramebufferData, INVALIDATENAMEDFRAMEBUFFERDATA, (AND GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments), (framebuffer, numAttachments, attachments), &framebuffer, GL_void_return) GL_PROCM(void, gl, InvalidateNamedFramebufferData, glInvalidateNamedFramebufferData, INVALIDATENAMEDFRAMEBUFFERDATA, (AND GLuint framebuffer, GLsizei numAttachments, memptr attachments), (framebuffer, numAttachments, attachments), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLINVALIDATENAMEDFRAMEBUFFERSUBDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, InvalidateNamedFramebufferSubData, glInvalidateNamedFramebufferSubData, INVALIDATENAMEDFRAMEBUFFERSUBDATA, (AND GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height), (framebuffer, numAttachments, attachments, x, y, width, height), &framebuffer, GL_void_return) GL_PROCM(void, gl, InvalidateNamedFramebufferSubData, glInvalidateNamedFramebufferSubData, INVALIDATENAMEDFRAMEBUFFERSUBDATA, (AND GLuint framebuffer, GLsizei numAttachments, memptr attachments, GLint x, GLint y, GLsizei width, GLsizei height), (framebuffer, numAttachments, attachments, x, y, width, height), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLINVALIDATESUBFRAMEBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, InvalidateSubFramebuffer, glInvalidateSubFramebuffer, INVALIDATESUBFRAMEBUFFER, (AND GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height), (target, numAttachments, attachments, x, y, width, height), &target, GL_void_return) GL_PROCM(void, gl, InvalidateSubFramebuffer, glInvalidateSubFramebuffer, INVALIDATESUBFRAMEBUFFER, (AND GLenum target, GLsizei numAttachments, memptr attachments, GLint x, GLint y, GLsizei width, GLsizei height), (target, numAttachments, attachments, x, y, width, height), &target, GL_void_return) #endif #endif #ifndef NO_GLINVALIDATETEXIMAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, InvalidateTexImage, glInvalidateTexImage, INVALIDATETEXIMAGE, (AND GLuint texture, GLint level), (texture, level), &texture, GL_void_return) GL_PROCM(void, gl, InvalidateTexImage, glInvalidateTexImage, INVALIDATETEXIMAGE, (AND GLuint texture, GLint level), (texture, level), &texture, GL_void_return) #endif #endif #ifndef NO_GLINVALIDATETEXSUBIMAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, InvalidateTexSubImage, glInvalidateTexSubImage, INVALIDATETEXSUBIMAGE, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth), (texture, level, xoffset, yoffset, zoffset, width, height, depth), &texture, GL_void_return) GL_PROCM(void, gl, InvalidateTexSubImage, glInvalidateTexSubImage, INVALIDATETEXSUBIMAGE, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth), (texture, level, xoffset, yoffset, zoffset, width, height, depth), &texture, GL_void_return) #endif #endif #ifndef NO_GLISASYNCMARKERSGIX #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsAsyncMarkerSGIX, glIsAsyncMarkerSGIX, ISASYNCMARKERSGIX, (AND GLuint marker), (marker), &marker, return (GLboolean)) GL_PROCM(GLboolean, gl, IsAsyncMarkerSGIX, glIsAsyncMarkerSGIX, ISASYNCMARKERSGIX, (AND GLuint marker), (marker), &marker, return (GLboolean)) #endif #endif #ifndef NO_GLISBUFFER #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsBuffer, glIsBuffer, ISBUFFER, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) GL_PROCM(GLboolean, gl, IsBuffer, glIsBuffer, ISBUFFER, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) #endif #endif #ifndef NO_GLISBUFFERARB #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsBufferARB, glIsBufferARB, ISBUFFERARB, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) GL_PROCM(GLboolean, gl, IsBufferARB, glIsBufferARB, ISBUFFERARB, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) #endif #endif #ifndef NO_GLISBUFFERRESIDENTNV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsBufferResidentNV, glIsBufferResidentNV, ISBUFFERRESIDENTNV, (AND GLenum target), (target), &target, return (GLboolean)) GL_PROCM(GLboolean, gl, IsBufferResidentNV, glIsBufferResidentNV, ISBUFFERRESIDENTNV, (AND GLenum target), (target), &target, return (GLboolean)) #endif #endif #ifndef NO_GLISCOMMANDLISTNV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsCommandListNV, glIsCommandListNV, ISCOMMANDLISTNV, (AND GLuint list), (list), &list, return (GLboolean)) GL_PROCM(GLboolean, gl, IsCommandListNV, glIsCommandListNV, ISCOMMANDLISTNV, (AND GLuint list), (list), &list, return (GLboolean)) #endif #endif #ifndef NO_GLISENABLED #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsEnabled, glIsEnabled, ISENABLED, (AND GLenum cap), (cap), &cap, return (GLboolean)) GL_PROCM(GLboolean, gl, IsEnabled, glIsEnabled, ISENABLED, (AND GLenum cap), (cap), &cap, return (GLboolean)) #endif #endif #ifndef NO_GLISENABLEDINDEXEDEXT #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsEnabledIndexedEXT, glIsEnabledIndexedEXT, ISENABLEDINDEXEDEXT, (AND GLenum target, GLuint index), (target, index), &target, return (GLboolean)) GL_PROCM(GLboolean, gl, IsEnabledIndexedEXT, glIsEnabledIndexedEXT, ISENABLEDINDEXEDEXT, (AND GLenum target, GLuint index), (target, index), &target, return (GLboolean)) #endif #endif #ifndef NO_GLISENABLEDI #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsEnabledi, glIsEnabledi, ISENABLEDI, (AND GLenum target, GLuint index), (target, index), &target, return (GLboolean)) GL_PROCM(GLboolean, gl, IsEnabledi, glIsEnabledi, ISENABLEDI, (AND GLenum target, GLuint index), (target, index), &target, return (GLboolean)) #endif #endif #ifndef NO_GLISFENCEAPPLE #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsFenceAPPLE, glIsFenceAPPLE, ISFENCEAPPLE, (AND GLuint fence), (fence), &fence, return (GLboolean)) GL_PROCM(GLboolean, gl, IsFenceAPPLE, glIsFenceAPPLE, ISFENCEAPPLE, (AND GLuint fence), (fence), &fence, return (GLboolean)) #endif #endif #ifndef NO_GLISFENCENV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsFenceNV, glIsFenceNV, ISFENCENV, (AND GLuint fence), (fence), &fence, return (GLboolean)) GL_PROCM(GLboolean, gl, IsFenceNV, glIsFenceNV, ISFENCENV, (AND GLuint fence), (fence), &fence, return (GLboolean)) #endif #endif #ifndef NO_GLISFRAMEBUFFER #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsFramebuffer, glIsFramebuffer, ISFRAMEBUFFER, (AND GLuint framebuffer), (framebuffer), &framebuffer, return (GLboolean)) GL_PROCM(GLboolean, gl, IsFramebuffer, glIsFramebuffer, ISFRAMEBUFFER, (AND GLuint framebuffer), (framebuffer), &framebuffer, return (GLboolean)) #endif #endif #ifndef NO_GLISFRAMEBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsFramebufferEXT, glIsFramebufferEXT, ISFRAMEBUFFEREXT, (AND GLuint framebuffer), (framebuffer), &framebuffer, return (GLboolean)) GL_PROCM(GLboolean, gl, IsFramebufferEXT, glIsFramebufferEXT, ISFRAMEBUFFEREXT, (AND GLuint framebuffer), (framebuffer), &framebuffer, return (GLboolean)) #endif #endif #ifndef NO_GLISIMAGEHANDLERESIDENTARB #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsImageHandleResidentARB, glIsImageHandleResidentARB, ISIMAGEHANDLERESIDENTARB, (AND GLuint64 handle), (handle), &handle, return (GLboolean)) GL_PROCM(GLboolean, gl, IsImageHandleResidentARB, glIsImageHandleResidentARB, ISIMAGEHANDLERESIDENTARB, (AND GLuint64 handle), (handle), &handle, return (GLboolean)) #endif #endif #ifndef NO_GLISIMAGEHANDLERESIDENTNV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsImageHandleResidentNV, glIsImageHandleResidentNV, ISIMAGEHANDLERESIDENTNV, (AND GLuint64 handle), (handle), &handle, return (GLboolean)) GL_PROCM(GLboolean, gl, IsImageHandleResidentNV, glIsImageHandleResidentNV, ISIMAGEHANDLERESIDENTNV, (AND GLuint64 handle), (handle), &handle, return (GLboolean)) #endif #endif #ifndef NO_GLISLIST GL_PROC(GLboolean, gl, IsList, glIsList, ISLIST, (AND GLuint list), (list), &list, return (GLboolean)) GL_PROCM(GLboolean, gl, IsList, glIsList, ISLIST, (AND GLuint list), (list), &list, return (GLboolean)) #endif #ifndef NO_GLISMEMORYOBJECTEXT #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsMemoryObjectEXT, glIsMemoryObjectEXT, ISMEMORYOBJECTEXT, (AND GLuint memoryObject), (memoryObject), &memoryObject, return (GLboolean)) GL_PROCM(GLboolean, gl, IsMemoryObjectEXT, glIsMemoryObjectEXT, ISMEMORYOBJECTEXT, (AND GLuint memoryObject), (memoryObject), &memoryObject, return (GLboolean)) #endif #endif #ifndef NO_GLISNAMEAMD #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsNameAMD, glIsNameAMD, ISNAMEAMD, (AND GLenum identifier, GLuint name), (identifier, name), &identifier, return (GLboolean)) GL_PROCM(GLboolean, gl, IsNameAMD, glIsNameAMD, ISNAMEAMD, (AND GLenum identifier, GLuint name), (identifier, name), &identifier, return (GLboolean)) #endif #endif #ifndef NO_GLISNAMEDBUFFERRESIDENTNV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsNamedBufferResidentNV, glIsNamedBufferResidentNV, ISNAMEDBUFFERRESIDENTNV, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) GL_PROCM(GLboolean, gl, IsNamedBufferResidentNV, glIsNamedBufferResidentNV, ISNAMEDBUFFERRESIDENTNV, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) #endif #endif #ifndef NO_GLISNAMEDSTRINGARB #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsNamedStringARB, glIsNamedStringARB, ISNAMEDSTRINGARB, (AND GLint namelen, const GLchar *name), (namelen, name), &namelen, return (GLboolean)) GL_PROCM(GLboolean, gl, IsNamedStringARB, glIsNamedStringARB, ISNAMEDSTRINGARB, (AND GLint namelen, memptr name), (namelen, name), &namelen, return (GLboolean)) #endif #endif #ifndef NO_GLISOBJECTBUFFERATI #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsObjectBufferATI, glIsObjectBufferATI, ISOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) GL_PROCM(GLboolean, gl, IsObjectBufferATI, glIsObjectBufferATI, ISOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) #endif #endif #ifndef NO_GLISOCCLUSIONQUERYNV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsOcclusionQueryNV, glIsOcclusionQueryNV, ISOCCLUSIONQUERYNV, (AND GLuint id), (id), &id, return (GLboolean)) GL_PROCM(GLboolean, gl, IsOcclusionQueryNV, glIsOcclusionQueryNV, ISOCCLUSIONQUERYNV, (AND GLuint id), (id), &id, return (GLboolean)) #endif #endif #ifndef NO_GLISPATHNV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsPathNV, glIsPathNV, ISPATHNV, (AND GLuint path), (path), &path, return (GLboolean)) GL_PROCM(GLboolean, gl, IsPathNV, glIsPathNV, ISPATHNV, (AND GLuint path), (path), &path, return (GLboolean)) #endif #endif #ifndef NO_GLISPOINTINFILLPATHNV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsPointInFillPathNV, glIsPointInFillPathNV, ISPOINTINFILLPATHNV, (AND GLuint path, GLuint mask, GLfloat x, GLfloat y), (path, mask, x, y), &path, return (GLboolean)) GL_PROCM(GLboolean, gl, IsPointInFillPathNV, glIsPointInFillPathNV, ISPOINTINFILLPATHNV, (AND GLuint path, GLuint mask, GLfloat x, GLfloat y), (path, mask, x, y), &path, return (GLboolean)) #endif #endif #ifndef NO_GLISPOINTINSTROKEPATHNV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsPointInStrokePathNV, glIsPointInStrokePathNV, ISPOINTINSTROKEPATHNV, (AND GLuint path, GLfloat x, GLfloat y), (path, x, y), &path, return (GLboolean)) GL_PROCM(GLboolean, gl, IsPointInStrokePathNV, glIsPointInStrokePathNV, ISPOINTINSTROKEPATHNV, (AND GLuint path, GLfloat x, GLfloat y), (path, x, y), &path, return (GLboolean)) #endif #endif #ifndef NO_GLISPROGRAM #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsProgram, glIsProgram, ISPROGRAM, (AND GLuint program), (program), &program, return (GLboolean)) GL_PROCM(GLboolean, gl, IsProgram, glIsProgram, ISPROGRAM, (AND GLuint program), (program), &program, return (GLboolean)) #endif #endif #ifndef NO_GLISPROGRAMARB #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsProgramARB, glIsProgramARB, ISPROGRAMARB, (AND GLuint program), (program), &program, return (GLboolean)) GL_PROCM(GLboolean, gl, IsProgramARB, glIsProgramARB, ISPROGRAMARB, (AND GLuint program), (program), &program, return (GLboolean)) #endif #endif #ifndef NO_GLISPROGRAMNV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsProgramNV, glIsProgramNV, ISPROGRAMNV, (AND GLuint id), (id), &id, return (GLboolean)) GL_PROCM(GLboolean, gl, IsProgramNV, glIsProgramNV, ISPROGRAMNV, (AND GLuint id), (id), &id, return (GLboolean)) #endif #endif #ifndef NO_GLISPROGRAMPIPELINE #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsProgramPipeline, glIsProgramPipeline, ISPROGRAMPIPELINE, (AND GLuint pipeline), (pipeline), &pipeline, return (GLboolean)) GL_PROCM(GLboolean, gl, IsProgramPipeline, glIsProgramPipeline, ISPROGRAMPIPELINE, (AND GLuint pipeline), (pipeline), &pipeline, return (GLboolean)) #endif #endif #ifndef NO_GLISQUERY #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsQuery, glIsQuery, ISQUERY, (AND GLuint id), (id), &id, return (GLboolean)) GL_PROCM(GLboolean, gl, IsQuery, glIsQuery, ISQUERY, (AND GLuint id), (id), &id, return (GLboolean)) #endif #endif #ifndef NO_GLISQUERYARB #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsQueryARB, glIsQueryARB, ISQUERYARB, (AND GLuint id), (id), &id, return (GLboolean)) GL_PROCM(GLboolean, gl, IsQueryARB, glIsQueryARB, ISQUERYARB, (AND GLuint id), (id), &id, return (GLboolean)) #endif #endif #ifndef NO_GLISRENDERBUFFER #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsRenderbuffer, glIsRenderbuffer, ISRENDERBUFFER, (AND GLuint renderbuffer), (renderbuffer), &renderbuffer, return (GLboolean)) GL_PROCM(GLboolean, gl, IsRenderbuffer, glIsRenderbuffer, ISRENDERBUFFER, (AND GLuint renderbuffer), (renderbuffer), &renderbuffer, return (GLboolean)) #endif #endif #ifndef NO_GLISRENDERBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsRenderbufferEXT, glIsRenderbufferEXT, ISRENDERBUFFEREXT, (AND GLuint renderbuffer), (renderbuffer), &renderbuffer, return (GLboolean)) GL_PROCM(GLboolean, gl, IsRenderbufferEXT, glIsRenderbufferEXT, ISRENDERBUFFEREXT, (AND GLuint renderbuffer), (renderbuffer), &renderbuffer, return (GLboolean)) #endif #endif #ifndef NO_GLISSAMPLER #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsSampler, glIsSampler, ISSAMPLER, (AND GLuint sampler), (sampler), &sampler, return (GLboolean)) GL_PROCM(GLboolean, gl, IsSampler, glIsSampler, ISSAMPLER, (AND GLuint sampler), (sampler), &sampler, return (GLboolean)) #endif #endif #ifndef NO_GLISSEMAPHOREEXT #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsSemaphoreEXT, glIsSemaphoreEXT, ISSEMAPHOREEXT, (AND GLuint semaphore), (semaphore), &semaphore, return (GLboolean)) GL_PROCM(GLboolean, gl, IsSemaphoreEXT, glIsSemaphoreEXT, ISSEMAPHOREEXT, (AND GLuint semaphore), (semaphore), &semaphore, return (GLboolean)) #endif #endif #ifndef NO_GLISSHADER #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsShader, glIsShader, ISSHADER, (AND GLuint shader), (shader), &shader, return (GLboolean)) GL_PROCM(GLboolean, gl, IsShader, glIsShader, ISSHADER, (AND GLuint shader), (shader), &shader, return (GLboolean)) #endif #endif #ifndef NO_GLISSTATENV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsStateNV, glIsStateNV, ISSTATENV, (AND GLuint state), (state), &state, return (GLboolean)) GL_PROCM(GLboolean, gl, IsStateNV, glIsStateNV, ISSTATENV, (AND GLuint state), (state), &state, return (GLboolean)) #endif #endif #ifndef NO_GLISSYNC #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsSync, glIsSync, ISSYNC, (AND GLsync sync), (sync), &sync, return (GLboolean)) GL_PROCM(GLboolean, gl, IsSync, glIsSync, ISSYNC, (AND GLsync sync), (sync), &sync, return (GLboolean)) #endif #endif #ifndef NO_GLISTEXTURE #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsTexture, glIsTexture, ISTEXTURE, (AND GLuint texture), (texture), &texture, return (GLboolean)) GL_PROCM(GLboolean, gl, IsTexture, glIsTexture, ISTEXTURE, (AND GLuint texture), (texture), &texture, return (GLboolean)) #endif #endif #ifndef NO_GLISTEXTUREEXT #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsTextureEXT, glIsTextureEXT, ISTEXTUREEXT, (AND GLuint texture), (texture), &texture, return (GLboolean)) GL_PROCM(GLboolean, gl, IsTextureEXT, glIsTextureEXT, ISTEXTUREEXT, (AND GLuint texture), (texture), &texture, return (GLboolean)) #endif #endif #ifndef NO_GLISTEXTUREHANDLERESIDENTARB #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsTextureHandleResidentARB, glIsTextureHandleResidentARB, ISTEXTUREHANDLERESIDENTARB, (AND GLuint64 handle), (handle), &handle, return (GLboolean)) GL_PROCM(GLboolean, gl, IsTextureHandleResidentARB, glIsTextureHandleResidentARB, ISTEXTUREHANDLERESIDENTARB, (AND GLuint64 handle), (handle), &handle, return (GLboolean)) #endif #endif #ifndef NO_GLISTEXTUREHANDLERESIDENTNV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsTextureHandleResidentNV, glIsTextureHandleResidentNV, ISTEXTUREHANDLERESIDENTNV, (AND GLuint64 handle), (handle), &handle, return (GLboolean)) GL_PROCM(GLboolean, gl, IsTextureHandleResidentNV, glIsTextureHandleResidentNV, ISTEXTUREHANDLERESIDENTNV, (AND GLuint64 handle), (handle), &handle, return (GLboolean)) #endif #endif #ifndef NO_GLISTRANSFORMFEEDBACK #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsTransformFeedback, glIsTransformFeedback, ISTRANSFORMFEEDBACK, (AND GLuint id), (id), &id, return (GLboolean)) GL_PROCM(GLboolean, gl, IsTransformFeedback, glIsTransformFeedback, ISTRANSFORMFEEDBACK, (AND GLuint id), (id), &id, return (GLboolean)) #endif #endif #ifndef NO_GLISTRANSFORMFEEDBACKNV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsTransformFeedbackNV, glIsTransformFeedbackNV, ISTRANSFORMFEEDBACKNV, (AND GLuint id), (id), &id, return (GLboolean)) GL_PROCM(GLboolean, gl, IsTransformFeedbackNV, glIsTransformFeedbackNV, ISTRANSFORMFEEDBACKNV, (AND GLuint id), (id), &id, return (GLboolean)) #endif #endif #ifndef NO_GLISVARIANTENABLEDEXT #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsVariantEnabledEXT, glIsVariantEnabledEXT, ISVARIANTENABLEDEXT, (AND GLuint id, GLenum cap), (id, cap), &id, return (GLboolean)) GL_PROCM(GLboolean, gl, IsVariantEnabledEXT, glIsVariantEnabledEXT, ISVARIANTENABLEDEXT, (AND GLuint id, GLenum cap), (id, cap), &id, return (GLboolean)) #endif #endif #ifndef NO_GLISVERTEXARRAY #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsVertexArray, glIsVertexArray, ISVERTEXARRAY, (AND GLuint array), (array), &array, return (GLboolean)) GL_PROCM(GLboolean, gl, IsVertexArray, glIsVertexArray, ISVERTEXARRAY, (AND GLuint array), (array), &array, return (GLboolean)) #endif #endif #ifndef NO_GLISVERTEXARRAYAPPLE #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsVertexArrayAPPLE, glIsVertexArrayAPPLE, ISVERTEXARRAYAPPLE, (AND GLuint array), (array), &array, return (GLboolean)) GL_PROCM(GLboolean, gl, IsVertexArrayAPPLE, glIsVertexArrayAPPLE, ISVERTEXARRAYAPPLE, (AND GLuint array), (array), &array, return (GLboolean)) #endif #endif #ifndef NO_GLISVERTEXATTRIBENABLEDAPPLE #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, IsVertexAttribEnabledAPPLE, glIsVertexAttribEnabledAPPLE, ISVERTEXATTRIBENABLEDAPPLE, (AND GLuint index, GLenum pname), (index, pname), &index, return (GLboolean)) GL_PROCM(GLboolean, gl, IsVertexAttribEnabledAPPLE, glIsVertexAttribEnabledAPPLE, ISVERTEXATTRIBENABLEDAPPLE, (AND GLuint index, GLenum pname), (index, pname), &index, return (GLboolean)) #endif #endif #ifndef NO_GLLGPUCOPYIMAGESUBDATANVX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LGPUCopyImageSubDataNVX, glLGPUCopyImageSubDataNVX, LGPUCOPYIMAGESUBDATANVX, (AND GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth), (sourceGpu, destinationGpuMask, srcName, srcTarget, srcLevel, srcX, srxY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth), &sourceGpu, GL_void_return) GL_PROCM(void, gl, LGPUCopyImageSubDataNVX, glLGPUCopyImageSubDataNVX, LGPUCOPYIMAGESUBDATANVX, (AND GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth), (sourceGpu, destinationGpuMask, srcName, srcTarget, srcLevel, srcX, srxY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth), &sourceGpu, GL_void_return) #endif #endif #ifndef NO_GLLGPUINTERLOCKNVX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LGPUInterlockNVX, glLGPUInterlockNVX, LGPUINTERLOCKNVX, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, LGPUInterlockNVX, glLGPUInterlockNVX, LGPUINTERLOCKNVX, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLLGPUNAMEDBUFFERSUBDATANVX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LGPUNamedBufferSubDataNVX, glLGPUNamedBufferSubDataNVX, LGPUNAMEDBUFFERSUBDATANVX, (AND GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data), (gpuMask, buffer, offset, size, data), &gpuMask, GL_void_return) GL_PROCM(void, gl, LGPUNamedBufferSubDataNVX, glLGPUNamedBufferSubDataNVX, LGPUNAMEDBUFFERSUBDATANVX, (AND GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, memptr data), (gpuMask, buffer, offset, size, data), &gpuMask, GL_void_return) #endif #endif #ifndef NO_GLLABELOBJECTEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LabelObjectEXT, glLabelObjectEXT, LABELOBJECTEXT, (AND GLenum type, GLuint object, GLsizei length, const GLchar *label), (type, object, length, label), &type, GL_void_return) GL_PROCM(void, gl, LabelObjectEXT, glLabelObjectEXT, LABELOBJECTEXT, (AND GLenum type, GLuint object, GLsizei length, memptr label), (type, object, length, label), &type, GL_void_return) #endif #endif #ifndef NO_GLLIGHTENVISGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LightEnviSGIX, glLightEnviSGIX, LIGHTENVISGIX, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, LightEnviSGIX, glLightEnviSGIX, LIGHTENVISGIX, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLLIGHTMODELF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LightModelf, glLightModelf, LIGHTMODELF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, LightModelf, glLightModelf, LIGHTMODELF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLLIGHTMODELFV GL_PROC(void, gl, LightModelfv, glLightModelfv, LIGHTMODELFV, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, LightModelfv, glLightModelfv, LIGHTMODELFV, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #ifndef NO_GLLIGHTMODELI GL_PROC(void, gl, LightModeli, glLightModeli, LIGHTMODELI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, LightModeli, glLightModeli, LIGHTMODELI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #ifndef NO_GLLIGHTMODELIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LightModeliv, glLightModeliv, LIGHTMODELIV, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, LightModeliv, glLightModeliv, LIGHTMODELIV, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLLIGHTMODELXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LightModelxOES, glLightModelxOES, LIGHTMODELXOES, (AND GLenum pname, GLfixed param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, LightModelxOES, glLightModelxOES, LIGHTMODELXOES, (AND GLenum pname, GLfixed param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLLIGHTMODELXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LightModelxvOES, glLightModelxvOES, LIGHTMODELXVOES, (AND GLenum pname, const GLfixed *param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, LightModelxvOES, glLightModelxvOES, LIGHTMODELXVOES, (AND GLenum pname, memptr param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLLIGHTF GL_PROC(void, gl, Lightf, glLightf, LIGHTF, (AND GLenum light, GLenum pname, GLfloat param), (light, pname, param), &light, GL_void_return) GL_PROCM(void, gl, Lightf, glLightf, LIGHTF, (AND GLenum light, GLenum pname, GLfloat param), (light, pname, param), &light, GL_void_return) #endif #ifndef NO_GLLIGHTFV GL_PROC(void, gl, Lightfv, glLightfv, LIGHTFV, (AND GLenum light, GLenum pname, const GLfloat *params), (light, pname, params), &light, GL_void_return) GL_PROCM(void, gl, Lightfv, glLightfv, LIGHTFV, (AND GLenum light, GLenum pname, memptr params), (light, pname, params), &light, GL_void_return) #endif #ifndef NO_GLLIGHTI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Lighti, glLighti, LIGHTI, (AND GLenum light, GLenum pname, GLint param), (light, pname, param), &light, GL_void_return) GL_PROCM(void, gl, Lighti, glLighti, LIGHTI, (AND GLenum light, GLenum pname, GLint param), (light, pname, param), &light, GL_void_return) #endif #endif #ifndef NO_GLLIGHTIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Lightiv, glLightiv, LIGHTIV, (AND GLenum light, GLenum pname, const GLint *params), (light, pname, params), &light, GL_void_return) GL_PROCM(void, gl, Lightiv, glLightiv, LIGHTIV, (AND GLenum light, GLenum pname, memptr params), (light, pname, params), &light, GL_void_return) #endif #endif #ifndef NO_GLLIGHTXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LightxOES, glLightxOES, LIGHTXOES, (AND GLenum light, GLenum pname, GLfixed param), (light, pname, param), &light, GL_void_return) GL_PROCM(void, gl, LightxOES, glLightxOES, LIGHTXOES, (AND GLenum light, GLenum pname, GLfixed param), (light, pname, param), &light, GL_void_return) #endif #endif #ifndef NO_GLLIGHTXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LightxvOES, glLightxvOES, LIGHTXVOES, (AND GLenum light, GLenum pname, const GLfixed *params), (light, pname, params), &light, GL_void_return) GL_PROCM(void, gl, LightxvOES, glLightxvOES, LIGHTXVOES, (AND GLenum light, GLenum pname, memptr params), (light, pname, params), &light, GL_void_return) #endif #endif #ifndef NO_GLLINESTIPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LineStipple, glLineStipple, LINESTIPPLE, (AND GLint factor, GLushort32 pattern), (factor, pattern), &factor, GL_void_return) GL_PROCM(void, gl, LineStipple, glLineStipple, LINESTIPPLE, (AND GLint factor, GLushort32 pattern), (factor, pattern), &factor, GL_void_return) #endif #endif #ifndef NO_GLLINEWIDTH #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LineWidth, glLineWidth, LINEWIDTH, (AND GLfloat width), (width), &width, GL_void_return) GL_PROCM(void, gl, LineWidth, glLineWidth, LINEWIDTH, (AND GLfloat width), (width), &width, GL_void_return) #endif #endif #ifndef NO_GLLINEWIDTHXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LineWidthxOES, glLineWidthxOES, LINEWIDTHXOES, (AND GLfixed width), (width), &width, GL_void_return) GL_PROCM(void, gl, LineWidthxOES, glLineWidthxOES, LINEWIDTHXOES, (AND GLfixed width), (width), &width, GL_void_return) #endif #endif #ifndef NO_GLLINKPROGRAM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LinkProgram, glLinkProgram, LINKPROGRAM, (AND GLuint program), (program), &program, GL_void_return) GL_PROCM(void, gl, LinkProgram, glLinkProgram, LINKPROGRAM, (AND GLuint program), (program), &program, GL_void_return) #endif #endif #ifndef NO_GLLINKPROGRAMARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LinkProgramARB, glLinkProgramARB, LINKPROGRAMARB, (AND GLhandleARB programObj), (programObj), &programObj, GL_void_return) GL_PROCM(void, gl, LinkProgramARB, glLinkProgramARB, LINKPROGRAMARB, (AND GLhandleARB programObj), (programObj), &programObj, GL_void_return) #endif #endif #ifndef NO_GLLISTBASE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ListBase, glListBase, LISTBASE, (AND GLuint base), (base), &base, GL_void_return) GL_PROCM(void, gl, ListBase, glListBase, LISTBASE, (AND GLuint base), (base), &base, GL_void_return) #endif #endif #ifndef NO_GLLISTDRAWCOMMANDSSTATESCLIENTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ListDrawCommandsStatesClientNV, glListDrawCommandsStatesClientNV, LISTDRAWCOMMANDSSTATESCLIENTNV, (AND GLuint list, GLuint segment, const void * *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count), (list, segment, indirects, sizes, states, fbos, count), &list, GL_void_return) GL_PROCM(void, gl, ListDrawCommandsStatesClientNV, glListDrawCommandsStatesClientNV, LISTDRAWCOMMANDSSTATESCLIENTNV, (AND GLuint list, GLuint segment, memptr indirects, memptr sizes, memptr states, memptr fbos, GLuint count), (list, segment, indirects, sizes, states, fbos, count), &list, GL_void_return) #endif #endif #ifndef NO_GLLISTPARAMETERFSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ListParameterfSGIX, glListParameterfSGIX, LISTPARAMETERFSGIX, (AND GLuint list, GLenum pname, GLfloat param), (list, pname, param), &list, GL_void_return) GL_PROCM(void, gl, ListParameterfSGIX, glListParameterfSGIX, LISTPARAMETERFSGIX, (AND GLuint list, GLenum pname, GLfloat param), (list, pname, param), &list, GL_void_return) #endif #endif #ifndef NO_GLLISTPARAMETERFVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ListParameterfvSGIX, glListParameterfvSGIX, LISTPARAMETERFVSGIX, (AND GLuint list, GLenum pname, const GLfloat *params), (list, pname, params), &list, GL_void_return) GL_PROCM(void, gl, ListParameterfvSGIX, glListParameterfvSGIX, LISTPARAMETERFVSGIX, (AND GLuint list, GLenum pname, memptr params), (list, pname, params), &list, GL_void_return) #endif #endif #ifndef NO_GLLISTPARAMETERISGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ListParameteriSGIX, glListParameteriSGIX, LISTPARAMETERISGIX, (AND GLuint list, GLenum pname, GLint param), (list, pname, param), &list, GL_void_return) GL_PROCM(void, gl, ListParameteriSGIX, glListParameteriSGIX, LISTPARAMETERISGIX, (AND GLuint list, GLenum pname, GLint param), (list, pname, param), &list, GL_void_return) #endif #endif #ifndef NO_GLLISTPARAMETERIVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ListParameterivSGIX, glListParameterivSGIX, LISTPARAMETERIVSGIX, (AND GLuint list, GLenum pname, const GLint *params), (list, pname, params), &list, GL_void_return) GL_PROCM(void, gl, ListParameterivSGIX, glListParameterivSGIX, LISTPARAMETERIVSGIX, (AND GLuint list, GLenum pname, memptr params), (list, pname, params), &list, GL_void_return) #endif #endif #ifndef NO_GLLOADIDENTITY GL_PROC(void, gl, LoadIdentity, glLoadIdentity, LOADIDENTITY, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, LoadIdentity, glLoadIdentity, LOADIDENTITY, (NOTHING), (), NULL, GL_void_return) #endif #ifndef NO_GLLOADIDENTITYDEFORMATIONMAPSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LoadIdentityDeformationMapSGIX, glLoadIdentityDeformationMapSGIX, LOADIDENTITYDEFORMATIONMAPSGIX, (AND GLbitfield mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, LoadIdentityDeformationMapSGIX, glLoadIdentityDeformationMapSGIX, LOADIDENTITYDEFORMATIONMAPSGIX, (AND GLbitfield mask), (mask), &mask, GL_void_return) #endif #endif #ifndef NO_GLLOADMATRIXD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LoadMatrixd, glLoadMatrixd, LOADMATRIXD, (AND const GLdouble *m), (m), &m, GL_void_return) GL_PROCM(void, gl, LoadMatrixd, glLoadMatrixd, LOADMATRIXD, (AND memptr m), (m), &m, GL_void_return) #endif #endif #ifndef NO_GLLOADMATRIXF GL_PROC(void, gl, LoadMatrixf, glLoadMatrixf, LOADMATRIXF, (AND const GLfloat *m), (m), &m, GL_void_return) GL_PROCM(void, gl, LoadMatrixf, glLoadMatrixf, LOADMATRIXF, (AND memptr m), (m), &m, GL_void_return) #endif #ifndef NO_GLLOADMATRIXXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LoadMatrixxOES, glLoadMatrixxOES, LOADMATRIXXOES, (AND const GLfixed *m), (m), &m, GL_void_return) GL_PROCM(void, gl, LoadMatrixxOES, glLoadMatrixxOES, LOADMATRIXXOES, (AND memptr m), (m), &m, GL_void_return) #endif #endif #ifndef NO_GLLOADNAME GL_PROC(void, gl, LoadName, glLoadName, LOADNAME, (AND GLuint name), (name), &name, GL_void_return) GL_PROCM(void, gl, LoadName, glLoadName, LOADNAME, (AND GLuint name), (name), &name, GL_void_return) #endif #ifndef NO_GLLOADPROGRAMNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LoadProgramNV, glLoadProgramNV, LOADPROGRAMNV, (AND GLenum target, GLuint id, GLsizei len, const GLubyte *program), (target, id, len, program), &target, GL_void_return) GL_PROCM(void, gl, LoadProgramNV, glLoadProgramNV, LOADPROGRAMNV, (AND GLenum target, GLuint id, GLsizei len, memptr program), (target, id, len, program), &target, GL_void_return) #endif #endif #ifndef NO_GLLOADTRANSPOSEMATRIXD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LoadTransposeMatrixd, glLoadTransposeMatrixd, LOADTRANSPOSEMATRIXD, (AND const GLdouble *m), (m), &m, GL_void_return) GL_PROCM(void, gl, LoadTransposeMatrixd, glLoadTransposeMatrixd, LOADTRANSPOSEMATRIXD, (AND memptr m), (m), &m, GL_void_return) #endif #endif #ifndef NO_GLLOADTRANSPOSEMATRIXDARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, LOADTRANSPOSEMATRIXDARB, (AND const GLdouble *m), (m), &m, GL_void_return) GL_PROCM(void, gl, LoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, LOADTRANSPOSEMATRIXDARB, (AND memptr m), (m), &m, GL_void_return) #endif #endif #ifndef NO_GLLOADTRANSPOSEMATRIXF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LoadTransposeMatrixf, glLoadTransposeMatrixf, LOADTRANSPOSEMATRIXF, (AND const GLfloat *m), (m), &m, GL_void_return) GL_PROCM(void, gl, LoadTransposeMatrixf, glLoadTransposeMatrixf, LOADTRANSPOSEMATRIXF, (AND memptr m), (m), &m, GL_void_return) #endif #endif #ifndef NO_GLLOADTRANSPOSEMATRIXFARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, LOADTRANSPOSEMATRIXFARB, (AND const GLfloat *m), (m), &m, GL_void_return) GL_PROCM(void, gl, LoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, LOADTRANSPOSEMATRIXFARB, (AND memptr m), (m), &m, GL_void_return) #endif #endif #ifndef NO_GLLOADTRANSPOSEMATRIXXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LoadTransposeMatrixxOES, glLoadTransposeMatrixxOES, LOADTRANSPOSEMATRIXXOES, (AND const GLfixed *m), (m), &m, GL_void_return) GL_PROCM(void, gl, LoadTransposeMatrixxOES, glLoadTransposeMatrixxOES, LOADTRANSPOSEMATRIXXOES, (AND memptr m), (m), &m, GL_void_return) #endif #endif #ifndef NO_GLLOCKARRAYSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LockArraysEXT, glLockArraysEXT, LOCKARRAYSEXT, (AND GLint first, GLsizei count), (first, count), &first, GL_void_return) GL_PROCM(void, gl, LockArraysEXT, glLockArraysEXT, LOCKARRAYSEXT, (AND GLint first, GLsizei count), (first, count), &first, GL_void_return) #endif #endif #ifndef NO_GLLOGICOP #if !defined(TINYGL_ONLY) GL_PROC(void, gl, LogicOp, glLogicOp, LOGICOP, (AND GLenum opcode), (opcode), &opcode, GL_void_return) GL_PROCM(void, gl, LogicOp, glLogicOp, LOGICOP, (AND GLenum opcode), (opcode), &opcode, GL_void_return) #endif #endif #ifndef NO_GLMAKEBUFFERNONRESIDENTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MakeBufferNonResidentNV, glMakeBufferNonResidentNV, MAKEBUFFERNONRESIDENTNV, (AND GLenum target), (target), &target, GL_void_return) GL_PROCM(void, gl, MakeBufferNonResidentNV, glMakeBufferNonResidentNV, MAKEBUFFERNONRESIDENTNV, (AND GLenum target), (target), &target, GL_void_return) #endif #endif #ifndef NO_GLMAKEBUFFERRESIDENTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MakeBufferResidentNV, glMakeBufferResidentNV, MAKEBUFFERRESIDENTNV, (AND GLenum target, GLenum access), (target, access), &target, GL_void_return) GL_PROCM(void, gl, MakeBufferResidentNV, glMakeBufferResidentNV, MAKEBUFFERRESIDENTNV, (AND GLenum target, GLenum access), (target, access), &target, GL_void_return) #endif #endif #ifndef NO_GLMAKEIMAGEHANDLENONRESIDENTARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MakeImageHandleNonResidentARB, glMakeImageHandleNonResidentARB, MAKEIMAGEHANDLENONRESIDENTARB, (AND GLuint64 handle), (handle), &handle, GL_void_return) GL_PROCM(void, gl, MakeImageHandleNonResidentARB, glMakeImageHandleNonResidentARB, MAKEIMAGEHANDLENONRESIDENTARB, (AND GLuint64 handle), (handle), &handle, GL_void_return) #endif #endif #ifndef NO_GLMAKEIMAGEHANDLENONRESIDENTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MakeImageHandleNonResidentNV, glMakeImageHandleNonResidentNV, MAKEIMAGEHANDLENONRESIDENTNV, (AND GLuint64 handle), (handle), &handle, GL_void_return) GL_PROCM(void, gl, MakeImageHandleNonResidentNV, glMakeImageHandleNonResidentNV, MAKEIMAGEHANDLENONRESIDENTNV, (AND GLuint64 handle), (handle), &handle, GL_void_return) #endif #endif #ifndef NO_GLMAKEIMAGEHANDLERESIDENTARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MakeImageHandleResidentARB, glMakeImageHandleResidentARB, MAKEIMAGEHANDLERESIDENTARB, (AND GLuint64 handle, GLenum access), (handle, access), &handle, GL_void_return) GL_PROCM(void, gl, MakeImageHandleResidentARB, glMakeImageHandleResidentARB, MAKEIMAGEHANDLERESIDENTARB, (AND GLuint64 handle, GLenum access), (handle, access), &handle, GL_void_return) #endif #endif #ifndef NO_GLMAKEIMAGEHANDLERESIDENTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MakeImageHandleResidentNV, glMakeImageHandleResidentNV, MAKEIMAGEHANDLERESIDENTNV, (AND GLuint64 handle, GLenum access), (handle, access), &handle, GL_void_return) GL_PROCM(void, gl, MakeImageHandleResidentNV, glMakeImageHandleResidentNV, MAKEIMAGEHANDLERESIDENTNV, (AND GLuint64 handle, GLenum access), (handle, access), &handle, GL_void_return) #endif #endif #ifndef NO_GLMAKENAMEDBUFFERNONRESIDENTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MakeNamedBufferNonResidentNV, glMakeNamedBufferNonResidentNV, MAKENAMEDBUFFERNONRESIDENTNV, (AND GLuint buffer), (buffer), &buffer, GL_void_return) GL_PROCM(void, gl, MakeNamedBufferNonResidentNV, glMakeNamedBufferNonResidentNV, MAKENAMEDBUFFERNONRESIDENTNV, (AND GLuint buffer), (buffer), &buffer, GL_void_return) #endif #endif #ifndef NO_GLMAKENAMEDBUFFERRESIDENTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MakeNamedBufferResidentNV, glMakeNamedBufferResidentNV, MAKENAMEDBUFFERRESIDENTNV, (AND GLuint buffer, GLenum access), (buffer, access), &buffer, GL_void_return) GL_PROCM(void, gl, MakeNamedBufferResidentNV, glMakeNamedBufferResidentNV, MAKENAMEDBUFFERRESIDENTNV, (AND GLuint buffer, GLenum access), (buffer, access), &buffer, GL_void_return) #endif #endif #ifndef NO_GLMAKETEXTUREHANDLENONRESIDENTARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MakeTextureHandleNonResidentARB, glMakeTextureHandleNonResidentARB, MAKETEXTUREHANDLENONRESIDENTARB, (AND GLuint64 handle), (handle), &handle, GL_void_return) GL_PROCM(void, gl, MakeTextureHandleNonResidentARB, glMakeTextureHandleNonResidentARB, MAKETEXTUREHANDLENONRESIDENTARB, (AND GLuint64 handle), (handle), &handle, GL_void_return) #endif #endif #ifndef NO_GLMAKETEXTUREHANDLENONRESIDENTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MakeTextureHandleNonResidentNV, glMakeTextureHandleNonResidentNV, MAKETEXTUREHANDLENONRESIDENTNV, (AND GLuint64 handle), (handle), &handle, GL_void_return) GL_PROCM(void, gl, MakeTextureHandleNonResidentNV, glMakeTextureHandleNonResidentNV, MAKETEXTUREHANDLENONRESIDENTNV, (AND GLuint64 handle), (handle), &handle, GL_void_return) #endif #endif #ifndef NO_GLMAKETEXTUREHANDLERESIDENTARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MakeTextureHandleResidentARB, glMakeTextureHandleResidentARB, MAKETEXTUREHANDLERESIDENTARB, (AND GLuint64 handle), (handle), &handle, GL_void_return) GL_PROCM(void, gl, MakeTextureHandleResidentARB, glMakeTextureHandleResidentARB, MAKETEXTUREHANDLERESIDENTARB, (AND GLuint64 handle), (handle), &handle, GL_void_return) #endif #endif #ifndef NO_GLMAKETEXTUREHANDLERESIDENTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MakeTextureHandleResidentNV, glMakeTextureHandleResidentNV, MAKETEXTUREHANDLERESIDENTNV, (AND GLuint64 handle), (handle), &handle, GL_void_return) GL_PROCM(void, gl, MakeTextureHandleResidentNV, glMakeTextureHandleResidentNV, MAKETEXTUREHANDLERESIDENTNV, (AND GLuint64 handle), (handle), &handle, GL_void_return) #endif #endif #ifndef NO_GLMAP1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Map1d, glMap1d, MAP1D, (AND GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points), (target, u1, u2, stride, order, points), &target, GL_void_return) GL_PROCM(void, gl, Map1d, glMap1d, MAP1D, (AND GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, memptr points), (target, u1, u2, stride, order, points), &target, GL_void_return) #endif #endif #ifndef NO_GLMAP1F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Map1f, glMap1f, MAP1F, (AND GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points), (target, u1, u2, stride, order, points), &target, GL_void_return) GL_PROCM(void, gl, Map1f, glMap1f, MAP1F, (AND GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, memptr points), (target, u1, u2, stride, order, points), &target, GL_void_return) #endif #endif #ifndef NO_GLMAP1XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Map1xOES, glMap1xOES, MAP1XOES, (AND GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points), (target, u1, u2, stride, order, points), &target, GL_void_return) GL_PROCM(void, gl, Map1xOES, glMap1xOES, MAP1XOES, (AND GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points), (target, u1, u2, stride, order, points), &target, GL_void_return) #endif #endif #ifndef NO_GLMAP2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Map2d, glMap2d, MAP2D, (AND GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &target, GL_void_return) GL_PROCM(void, gl, Map2d, glMap2d, MAP2D, (AND GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, memptr points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &target, GL_void_return) #endif #endif #ifndef NO_GLMAP2F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Map2f, glMap2f, MAP2F, (AND GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &target, GL_void_return) GL_PROCM(void, gl, Map2f, glMap2f, MAP2F, (AND GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, memptr points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &target, GL_void_return) #endif #endif #ifndef NO_GLMAP2XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Map2xOES, glMap2xOES, MAP2XOES, (AND GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &target, GL_void_return) GL_PROCM(void, gl, Map2xOES, glMap2xOES, MAP2XOES, (AND GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &target, GL_void_return) #endif #endif #ifndef NO_GLMAPBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void *, gl, MapBuffer, glMapBuffer, MAPBUFFER, (AND GLenum target, GLenum access), (target, access), &target, return (void *)) GL_PROCM(void *, gl, MapBuffer, glMapBuffer, MAPBUFFER, (AND GLenum target, GLenum access), (target, access), &target, return (void *)) #endif #endif #ifndef NO_GLMAPBUFFERARB #if !defined(TINYGL_ONLY) GL_PROC(void *, gl, MapBufferARB, glMapBufferARB, MAPBUFFERARB, (AND GLenum target, GLenum access), (target, access), &target, return (void *)) GL_PROCM(void *, gl, MapBufferARB, glMapBufferARB, MAPBUFFERARB, (AND GLenum target, GLenum access), (target, access), &target, return (void *)) #endif #endif #ifndef NO_GLMAPBUFFERRANGE #if !defined(TINYGL_ONLY) GL_PROC(void *, gl, MapBufferRange, glMapBufferRange, MAPBUFFERRANGE, (AND GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access), (target, offset, length, access), &target, return (void *)) GL_PROCM(void *, gl, MapBufferRange, glMapBufferRange, MAPBUFFERRANGE, (AND GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access), (target, offset, length, access), &target, return (void *)) #endif #endif #ifndef NO_GLMAPCONTROLPOINTSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MapControlPointsNV, glMapControlPointsNV, MAPCONTROLPOINTSNV, (AND GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean32 packed, const void *points), (target, index, type, ustride, vstride, uorder, vorder, packed, points), &target, GL_void_return) GL_PROCM(void, gl, MapControlPointsNV, glMapControlPointsNV, MAPCONTROLPOINTSNV, (AND GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean32 packed, memptr points), (target, index, type, ustride, vstride, uorder, vorder, packed, points), &target, GL_void_return) #endif #endif #ifndef NO_GLMAPGRID1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MapGrid1d, glMapGrid1d, MAPGRID1D, (AND GLint un, GLdouble u1, GLdouble u2), (un, u1, u2), &un, GL_void_return) GL_PROCM(void, gl, MapGrid1d, glMapGrid1d, MAPGRID1D, (AND GLint un, GLdouble u1, GLdouble u2), (un, u1, u2), &un, GL_void_return) #endif #endif #ifndef NO_GLMAPGRID1F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MapGrid1f, glMapGrid1f, MAPGRID1F, (AND GLint un, GLfloat u1, GLfloat u2), (un, u1, u2), &un, GL_void_return) GL_PROCM(void, gl, MapGrid1f, glMapGrid1f, MAPGRID1F, (AND GLint un, GLfloat u1, GLfloat u2), (un, u1, u2), &un, GL_void_return) #endif #endif #ifndef NO_GLMAPGRID1XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MapGrid1xOES, glMapGrid1xOES, MAPGRID1XOES, (AND GLint n, GLfixed u1, GLfixed u2), (n, u1, u2), &n, GL_void_return) GL_PROCM(void, gl, MapGrid1xOES, glMapGrid1xOES, MAPGRID1XOES, (AND GLint n, GLfixed u1, GLfixed u2), (n, u1, u2), &n, GL_void_return) #endif #endif #ifndef NO_GLMAPGRID2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MapGrid2d, glMapGrid2d, MAPGRID2D, (AND GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2), (un, u1, u2, vn, v1, v2), &un, GL_void_return) GL_PROCM(void, gl, MapGrid2d, glMapGrid2d, MAPGRID2D, (AND GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2), (un, u1, u2, vn, v1, v2), &un, GL_void_return) #endif #endif #ifndef NO_GLMAPGRID2F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MapGrid2f, glMapGrid2f, MAPGRID2F, (AND GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2), (un, u1, u2, vn, v1, v2), &un, GL_void_return) GL_PROCM(void, gl, MapGrid2f, glMapGrid2f, MAPGRID2F, (AND GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2), (un, u1, u2, vn, v1, v2), &un, GL_void_return) #endif #endif #ifndef NO_GLMAPGRID2XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MapGrid2xOES, glMapGrid2xOES, MAPGRID2XOES, (AND GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2), (n, u1, u2, v1, v2), &n, GL_void_return) GL_PROCM(void, gl, MapGrid2xOES, glMapGrid2xOES, MAPGRID2XOES, (AND GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2), (n, u1, u2, v1, v2), &n, GL_void_return) #endif #endif #ifndef NO_GLMAPNAMEDBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void *, gl, MapNamedBuffer, glMapNamedBuffer, MAPNAMEDBUFFER, (AND GLuint buffer, GLenum access), (buffer, access), &buffer, return (void *)) GL_PROCM(void *, gl, MapNamedBuffer, glMapNamedBuffer, MAPNAMEDBUFFER, (AND GLuint buffer, GLenum access), (buffer, access), &buffer, return (void *)) #endif #endif #ifndef NO_GLMAPNAMEDBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void *, gl, MapNamedBufferEXT, glMapNamedBufferEXT, MAPNAMEDBUFFEREXT, (AND GLuint buffer, GLenum access), (buffer, access), &buffer, return (void *)) GL_PROCM(void *, gl, MapNamedBufferEXT, glMapNamedBufferEXT, MAPNAMEDBUFFEREXT, (AND GLuint buffer, GLenum access), (buffer, access), &buffer, return (void *)) #endif #endif #ifndef NO_GLMAPNAMEDBUFFERRANGE #if !defined(TINYGL_ONLY) GL_PROC(void *, gl, MapNamedBufferRange, glMapNamedBufferRange, MAPNAMEDBUFFERRANGE, (AND GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access), (buffer, offset, length, access), &buffer, return (void *)) GL_PROCM(void *, gl, MapNamedBufferRange, glMapNamedBufferRange, MAPNAMEDBUFFERRANGE, (AND GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access), (buffer, offset, length, access), &buffer, return (void *)) #endif #endif #ifndef NO_GLMAPNAMEDBUFFERRANGEEXT #if !defined(TINYGL_ONLY) GL_PROC(void *, gl, MapNamedBufferRangeEXT, glMapNamedBufferRangeEXT, MAPNAMEDBUFFERRANGEEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access), (buffer, offset, length, access), &buffer, return (void *)) GL_PROCM(void *, gl, MapNamedBufferRangeEXT, glMapNamedBufferRangeEXT, MAPNAMEDBUFFERRANGEEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access), (buffer, offset, length, access), &buffer, return (void *)) #endif #endif #ifndef NO_GLMAPOBJECTBUFFERATI #if !defined(TINYGL_ONLY) GL_PROC(void *, gl, MapObjectBufferATI, glMapObjectBufferATI, MAPOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, return (void *)) GL_PROCM(void *, gl, MapObjectBufferATI, glMapObjectBufferATI, MAPOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, return (void *)) #endif #endif #ifndef NO_GLMAPPARAMETERFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MapParameterfvNV, glMapParameterfvNV, MAPPARAMETERFVNV, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, MapParameterfvNV, glMapParameterfvNV, MAPPARAMETERFVNV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLMAPPARAMETERIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MapParameterivNV, glMapParameterivNV, MAPPARAMETERIVNV, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, MapParameterivNV, glMapParameterivNV, MAPPARAMETERIVNV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLMAPTEXTURE2DINTEL #if !defined(TINYGL_ONLY) GL_PROC(void *, gl, MapTexture2DINTEL, glMapTexture2DINTEL, MAPTEXTURE2DINTEL, (AND GLuint texture, GLint level, GLbitfield access, const GLint *stride, const GLenum *layout), (texture, level, access, stride, layout), &texture, return (void *)) GL_PROCM(void *, gl, MapTexture2DINTEL, glMapTexture2DINTEL, MAPTEXTURE2DINTEL, (AND GLuint texture, GLint level, GLbitfield access, memptr stride, memptr layout), (texture, level, access, stride, layout), &texture, return (void *)) #endif #endif #ifndef NO_GLMAPVERTEXATTRIB1DAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MapVertexAttrib1dAPPLE, glMapVertexAttrib1dAPPLE, MAPVERTEXATTRIB1DAPPLE, (AND GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points), (index, size, u1, u2, stride, order, points), &index, GL_void_return) GL_PROCM(void, gl, MapVertexAttrib1dAPPLE, glMapVertexAttrib1dAPPLE, MAPVERTEXATTRIB1DAPPLE, (AND GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, memptr points), (index, size, u1, u2, stride, order, points), &index, GL_void_return) #endif #endif #ifndef NO_GLMAPVERTEXATTRIB1FAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MapVertexAttrib1fAPPLE, glMapVertexAttrib1fAPPLE, MAPVERTEXATTRIB1FAPPLE, (AND GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points), (index, size, u1, u2, stride, order, points), &index, GL_void_return) GL_PROCM(void, gl, MapVertexAttrib1fAPPLE, glMapVertexAttrib1fAPPLE, MAPVERTEXATTRIB1FAPPLE, (AND GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, memptr points), (index, size, u1, u2, stride, order, points), &index, GL_void_return) #endif #endif #ifndef NO_GLMAPVERTEXATTRIB2DAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MapVertexAttrib2dAPPLE, glMapVertexAttrib2dAPPLE, MAPVERTEXATTRIB2DAPPLE, (AND GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points), (index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &index, GL_void_return) GL_PROCM(void, gl, MapVertexAttrib2dAPPLE, glMapVertexAttrib2dAPPLE, MAPVERTEXATTRIB2DAPPLE, (AND GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, memptr points), (index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &index, GL_void_return) #endif #endif #ifndef NO_GLMAPVERTEXATTRIB2FAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MapVertexAttrib2fAPPLE, glMapVertexAttrib2fAPPLE, MAPVERTEXATTRIB2FAPPLE, (AND GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points), (index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &index, GL_void_return) GL_PROCM(void, gl, MapVertexAttrib2fAPPLE, glMapVertexAttrib2fAPPLE, MAPVERTEXATTRIB2FAPPLE, (AND GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, memptr points), (index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &index, GL_void_return) #endif #endif #ifndef NO_GLMATERIALF GL_PROC(void, gl, Materialf, glMaterialf, MATERIALF, (AND GLenum face, GLenum pname, GLfloat param), (face, pname, param), &face, GL_void_return) GL_PROCM(void, gl, Materialf, glMaterialf, MATERIALF, (AND GLenum face, GLenum pname, GLfloat param), (face, pname, param), &face, GL_void_return) #endif #ifndef NO_GLMATERIALFV GL_PROC(void, gl, Materialfv, glMaterialfv, MATERIALFV, (AND GLenum face, GLenum pname, const GLfloat *params), (face, pname, params), &face, GL_void_return) GL_PROCM(void, gl, Materialfv, glMaterialfv, MATERIALFV, (AND GLenum face, GLenum pname, memptr params), (face, pname, params), &face, GL_void_return) #endif #ifndef NO_GLMATERIALI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Materiali, glMateriali, MATERIALI, (AND GLenum face, GLenum pname, GLint param), (face, pname, param), &face, GL_void_return) GL_PROCM(void, gl, Materiali, glMateriali, MATERIALI, (AND GLenum face, GLenum pname, GLint param), (face, pname, param), &face, GL_void_return) #endif #endif #ifndef NO_GLMATERIALIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Materialiv, glMaterialiv, MATERIALIV, (AND GLenum face, GLenum pname, const GLint *params), (face, pname, params), &face, GL_void_return) GL_PROCM(void, gl, Materialiv, glMaterialiv, MATERIALIV, (AND GLenum face, GLenum pname, memptr params), (face, pname, params), &face, GL_void_return) #endif #endif #ifndef NO_GLMATERIALXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MaterialxOES, glMaterialxOES, MATERIALXOES, (AND GLenum face, GLenum pname, GLfixed param), (face, pname, param), &face, GL_void_return) GL_PROCM(void, gl, MaterialxOES, glMaterialxOES, MATERIALXOES, (AND GLenum face, GLenum pname, GLfixed param), (face, pname, param), &face, GL_void_return) #endif #endif #ifndef NO_GLMATERIALXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MaterialxvOES, glMaterialxvOES, MATERIALXVOES, (AND GLenum face, GLenum pname, const GLfixed *param), (face, pname, param), &face, GL_void_return) GL_PROCM(void, gl, MaterialxvOES, glMaterialxvOES, MATERIALXVOES, (AND GLenum face, GLenum pname, memptr param), (face, pname, param), &face, GL_void_return) #endif #endif #ifndef NO_GLMATRIXFRUSTUMEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixFrustumEXT, glMatrixFrustumEXT, MATRIXFRUSTUMEXT, (AND GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (mode, left, right, bottom, top, zNear, zFar), &mode, GL_void_return) GL_PROCM(void, gl, MatrixFrustumEXT, glMatrixFrustumEXT, MATRIXFRUSTUMEXT, (AND GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (mode, left, right, bottom, top, zNear, zFar), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXINDEXPOINTERARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixIndexPointerARB, glMatrixIndexPointerARB, MATRIXINDEXPOINTERARB, (AND GLint size, GLenum type, GLsizei stride, const void *pointer), (size, type, stride, pointer), &size, GL_void_return) GL_PROCM(void, gl, MatrixIndexPointerARB, glMatrixIndexPointerARB, MATRIXINDEXPOINTERARB, (AND GLint size, GLenum type, GLsizei stride, memptr pointer), (size, type, stride, pointer), &size, GL_void_return) #endif #endif #ifndef NO_GLMATRIXINDEXUBVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixIndexubvARB, glMatrixIndexubvARB, MATRIXINDEXUBVARB, (AND GLint size, const GLubyte *indices), (size, indices), &size, GL_void_return) GL_PROCM(void, gl, MatrixIndexubvARB, glMatrixIndexubvARB, MATRIXINDEXUBVARB, (AND GLint size, memptr indices), (size, indices), &size, GL_void_return) #endif #endif #ifndef NO_GLMATRIXINDEXUIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixIndexuivARB, glMatrixIndexuivARB, MATRIXINDEXUIVARB, (AND GLint size, const GLuint *indices), (size, indices), &size, GL_void_return) GL_PROCM(void, gl, MatrixIndexuivARB, glMatrixIndexuivARB, MATRIXINDEXUIVARB, (AND GLint size, memptr indices), (size, indices), &size, GL_void_return) #endif #endif #ifndef NO_GLMATRIXINDEXUSVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixIndexusvARB, glMatrixIndexusvARB, MATRIXINDEXUSVARB, (AND GLint size, const GLushort *indices), (size, indices), &size, GL_void_return) GL_PROCM(void, gl, MatrixIndexusvARB, glMatrixIndexusvARB, MATRIXINDEXUSVARB, (AND GLint size, memptr indices), (size, indices), &size, GL_void_return) #endif #endif #ifndef NO_GLMATRIXLOAD3X2FNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixLoad3x2fNV, glMatrixLoad3x2fNV, MATRIXLOAD3X2FNV, (AND GLenum matrixMode, const GLfloat *m), (matrixMode, m), &matrixMode, GL_void_return) GL_PROCM(void, gl, MatrixLoad3x2fNV, glMatrixLoad3x2fNV, MATRIXLOAD3X2FNV, (AND GLenum matrixMode, memptr m), (matrixMode, m), &matrixMode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXLOAD3X3FNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixLoad3x3fNV, glMatrixLoad3x3fNV, MATRIXLOAD3X3FNV, (AND GLenum matrixMode, const GLfloat *m), (matrixMode, m), &matrixMode, GL_void_return) GL_PROCM(void, gl, MatrixLoad3x3fNV, glMatrixLoad3x3fNV, MATRIXLOAD3X3FNV, (AND GLenum matrixMode, memptr m), (matrixMode, m), &matrixMode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXLOADIDENTITYEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixLoadIdentityEXT, glMatrixLoadIdentityEXT, MATRIXLOADIDENTITYEXT, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, MatrixLoadIdentityEXT, glMatrixLoadIdentityEXT, MATRIXLOADIDENTITYEXT, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXLOADTRANSPOSE3X3FNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixLoadTranspose3x3fNV, glMatrixLoadTranspose3x3fNV, MATRIXLOADTRANSPOSE3X3FNV, (AND GLenum matrixMode, const GLfloat *m), (matrixMode, m), &matrixMode, GL_void_return) GL_PROCM(void, gl, MatrixLoadTranspose3x3fNV, glMatrixLoadTranspose3x3fNV, MATRIXLOADTRANSPOSE3X3FNV, (AND GLenum matrixMode, memptr m), (matrixMode, m), &matrixMode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXLOADTRANSPOSEDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixLoadTransposedEXT, glMatrixLoadTransposedEXT, MATRIXLOADTRANSPOSEDEXT, (AND GLenum mode, const GLdouble *m), (mode, m), &mode, GL_void_return) GL_PROCM(void, gl, MatrixLoadTransposedEXT, glMatrixLoadTransposedEXT, MATRIXLOADTRANSPOSEDEXT, (AND GLenum mode, memptr m), (mode, m), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXLOADTRANSPOSEFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixLoadTransposefEXT, glMatrixLoadTransposefEXT, MATRIXLOADTRANSPOSEFEXT, (AND GLenum mode, const GLfloat *m), (mode, m), &mode, GL_void_return) GL_PROCM(void, gl, MatrixLoadTransposefEXT, glMatrixLoadTransposefEXT, MATRIXLOADTRANSPOSEFEXT, (AND GLenum mode, memptr m), (mode, m), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXLOADDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixLoaddEXT, glMatrixLoaddEXT, MATRIXLOADDEXT, (AND GLenum mode, const GLdouble *m), (mode, m), &mode, GL_void_return) GL_PROCM(void, gl, MatrixLoaddEXT, glMatrixLoaddEXT, MATRIXLOADDEXT, (AND GLenum mode, memptr m), (mode, m), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXLOADFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixLoadfEXT, glMatrixLoadfEXT, MATRIXLOADFEXT, (AND GLenum mode, const GLfloat *m), (mode, m), &mode, GL_void_return) GL_PROCM(void, gl, MatrixLoadfEXT, glMatrixLoadfEXT, MATRIXLOADFEXT, (AND GLenum mode, memptr m), (mode, m), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXMODE GL_PROC(void, gl, MatrixMode, glMatrixMode, MATRIXMODE, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, MatrixMode, glMatrixMode, MATRIXMODE, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #ifndef NO_GLMATRIXMULT3X2FNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixMult3x2fNV, glMatrixMult3x2fNV, MATRIXMULT3X2FNV, (AND GLenum matrixMode, const GLfloat *m), (matrixMode, m), &matrixMode, GL_void_return) GL_PROCM(void, gl, MatrixMult3x2fNV, glMatrixMult3x2fNV, MATRIXMULT3X2FNV, (AND GLenum matrixMode, memptr m), (matrixMode, m), &matrixMode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXMULT3X3FNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixMult3x3fNV, glMatrixMult3x3fNV, MATRIXMULT3X3FNV, (AND GLenum matrixMode, const GLfloat *m), (matrixMode, m), &matrixMode, GL_void_return) GL_PROCM(void, gl, MatrixMult3x3fNV, glMatrixMult3x3fNV, MATRIXMULT3X3FNV, (AND GLenum matrixMode, memptr m), (matrixMode, m), &matrixMode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXMULTTRANSPOSE3X3FNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixMultTranspose3x3fNV, glMatrixMultTranspose3x3fNV, MATRIXMULTTRANSPOSE3X3FNV, (AND GLenum matrixMode, const GLfloat *m), (matrixMode, m), &matrixMode, GL_void_return) GL_PROCM(void, gl, MatrixMultTranspose3x3fNV, glMatrixMultTranspose3x3fNV, MATRIXMULTTRANSPOSE3X3FNV, (AND GLenum matrixMode, memptr m), (matrixMode, m), &matrixMode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXMULTTRANSPOSEDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixMultTransposedEXT, glMatrixMultTransposedEXT, MATRIXMULTTRANSPOSEDEXT, (AND GLenum mode, const GLdouble *m), (mode, m), &mode, GL_void_return) GL_PROCM(void, gl, MatrixMultTransposedEXT, glMatrixMultTransposedEXT, MATRIXMULTTRANSPOSEDEXT, (AND GLenum mode, memptr m), (mode, m), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXMULTTRANSPOSEFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixMultTransposefEXT, glMatrixMultTransposefEXT, MATRIXMULTTRANSPOSEFEXT, (AND GLenum mode, const GLfloat *m), (mode, m), &mode, GL_void_return) GL_PROCM(void, gl, MatrixMultTransposefEXT, glMatrixMultTransposefEXT, MATRIXMULTTRANSPOSEFEXT, (AND GLenum mode, memptr m), (mode, m), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXMULTDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixMultdEXT, glMatrixMultdEXT, MATRIXMULTDEXT, (AND GLenum mode, const GLdouble *m), (mode, m), &mode, GL_void_return) GL_PROCM(void, gl, MatrixMultdEXT, glMatrixMultdEXT, MATRIXMULTDEXT, (AND GLenum mode, memptr m), (mode, m), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXMULTFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixMultfEXT, glMatrixMultfEXT, MATRIXMULTFEXT, (AND GLenum mode, const GLfloat *m), (mode, m), &mode, GL_void_return) GL_PROCM(void, gl, MatrixMultfEXT, glMatrixMultfEXT, MATRIXMULTFEXT, (AND GLenum mode, memptr m), (mode, m), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXORTHOEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixOrthoEXT, glMatrixOrthoEXT, MATRIXORTHOEXT, (AND GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (mode, left, right, bottom, top, zNear, zFar), &mode, GL_void_return) GL_PROCM(void, gl, MatrixOrthoEXT, glMatrixOrthoEXT, MATRIXORTHOEXT, (AND GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (mode, left, right, bottom, top, zNear, zFar), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXPOPEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixPopEXT, glMatrixPopEXT, MATRIXPOPEXT, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, MatrixPopEXT, glMatrixPopEXT, MATRIXPOPEXT, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXPUSHEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixPushEXT, glMatrixPushEXT, MATRIXPUSHEXT, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, MatrixPushEXT, glMatrixPushEXT, MATRIXPUSHEXT, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXROTATEDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixRotatedEXT, glMatrixRotatedEXT, MATRIXROTATEDEXT, (AND GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z), (mode, angle, x, y, z), &mode, GL_void_return) GL_PROCM(void, gl, MatrixRotatedEXT, glMatrixRotatedEXT, MATRIXROTATEDEXT, (AND GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z), (mode, angle, x, y, z), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXROTATEFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixRotatefEXT, glMatrixRotatefEXT, MATRIXROTATEFEXT, (AND GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z), (mode, angle, x, y, z), &mode, GL_void_return) GL_PROCM(void, gl, MatrixRotatefEXT, glMatrixRotatefEXT, MATRIXROTATEFEXT, (AND GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z), (mode, angle, x, y, z), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXSCALEDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixScaledEXT, glMatrixScaledEXT, MATRIXSCALEDEXT, (AND GLenum mode, GLdouble x, GLdouble y, GLdouble z), (mode, x, y, z), &mode, GL_void_return) GL_PROCM(void, gl, MatrixScaledEXT, glMatrixScaledEXT, MATRIXSCALEDEXT, (AND GLenum mode, GLdouble x, GLdouble y, GLdouble z), (mode, x, y, z), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXSCALEFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixScalefEXT, glMatrixScalefEXT, MATRIXSCALEFEXT, (AND GLenum mode, GLfloat x, GLfloat y, GLfloat z), (mode, x, y, z), &mode, GL_void_return) GL_PROCM(void, gl, MatrixScalefEXT, glMatrixScalefEXT, MATRIXSCALEFEXT, (AND GLenum mode, GLfloat x, GLfloat y, GLfloat z), (mode, x, y, z), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXTRANSLATEDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixTranslatedEXT, glMatrixTranslatedEXT, MATRIXTRANSLATEDEXT, (AND GLenum mode, GLdouble x, GLdouble y, GLdouble z), (mode, x, y, z), &mode, GL_void_return) GL_PROCM(void, gl, MatrixTranslatedEXT, glMatrixTranslatedEXT, MATRIXTRANSLATEDEXT, (AND GLenum mode, GLdouble x, GLdouble y, GLdouble z), (mode, x, y, z), &mode, GL_void_return) #endif #endif #ifndef NO_GLMATRIXTRANSLATEFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MatrixTranslatefEXT, glMatrixTranslatefEXT, MATRIXTRANSLATEFEXT, (AND GLenum mode, GLfloat x, GLfloat y, GLfloat z), (mode, x, y, z), &mode, GL_void_return) GL_PROCM(void, gl, MatrixTranslatefEXT, glMatrixTranslatefEXT, MATRIXTRANSLATEFEXT, (AND GLenum mode, GLfloat x, GLfloat y, GLfloat z), (mode, x, y, z), &mode, GL_void_return) #endif #endif #ifndef NO_GLMAXSHADERCOMPILERTHREADSARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MaxShaderCompilerThreadsARB, glMaxShaderCompilerThreadsARB, MAXSHADERCOMPILERTHREADSARB, (AND GLuint count), (count), &count, GL_void_return) GL_PROCM(void, gl, MaxShaderCompilerThreadsARB, glMaxShaderCompilerThreadsARB, MAXSHADERCOMPILERTHREADSARB, (AND GLuint count), (count), &count, GL_void_return) #endif #endif #ifndef NO_GLMAXSHADERCOMPILERTHREADSKHR #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MaxShaderCompilerThreadsKHR, glMaxShaderCompilerThreadsKHR, MAXSHADERCOMPILERTHREADSKHR, (AND GLuint count), (count), &count, GL_void_return) GL_PROCM(void, gl, MaxShaderCompilerThreadsKHR, glMaxShaderCompilerThreadsKHR, MAXSHADERCOMPILERTHREADSKHR, (AND GLuint count), (count), &count, GL_void_return) #endif #endif #ifndef NO_GLMEMORYBARRIER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MemoryBarrier, glMemoryBarrier, MEMORYBARRIER, (AND GLbitfield barriers), (barriers), &barriers, GL_void_return) GL_PROCM(void, gl, MemoryBarrier, glMemoryBarrier, MEMORYBARRIER, (AND GLbitfield barriers), (barriers), &barriers, GL_void_return) #endif #endif #ifndef NO_GLMEMORYBARRIERBYREGION #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MemoryBarrierByRegion, glMemoryBarrierByRegion, MEMORYBARRIERBYREGION, (AND GLbitfield barriers), (barriers), &barriers, GL_void_return) GL_PROCM(void, gl, MemoryBarrierByRegion, glMemoryBarrierByRegion, MEMORYBARRIERBYREGION, (AND GLbitfield barriers), (barriers), &barriers, GL_void_return) #endif #endif #ifndef NO_GLMEMORYBARRIEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MemoryBarrierEXT, glMemoryBarrierEXT, MEMORYBARRIEREXT, (AND GLbitfield barriers), (barriers), &barriers, GL_void_return) GL_PROCM(void, gl, MemoryBarrierEXT, glMemoryBarrierEXT, MEMORYBARRIEREXT, (AND GLbitfield barriers), (barriers), &barriers, GL_void_return) #endif #endif #ifndef NO_GLMEMORYOBJECTPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MemoryObjectParameterivEXT, glMemoryObjectParameterivEXT, MEMORYOBJECTPARAMETERIVEXT, (AND GLuint memoryObject, GLenum pname, const GLint *params), (memoryObject, pname, params), &memoryObject, GL_void_return) GL_PROCM(void, gl, MemoryObjectParameterivEXT, glMemoryObjectParameterivEXT, MEMORYOBJECTPARAMETERIVEXT, (AND GLuint memoryObject, GLenum pname, memptr params), (memoryObject, pname, params), &memoryObject, GL_void_return) #endif #endif #ifndef NO_GLMINSAMPLESHADING #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MinSampleShading, glMinSampleShading, MINSAMPLESHADING, (AND GLfloat value), (value), &value, GL_void_return) GL_PROCM(void, gl, MinSampleShading, glMinSampleShading, MINSAMPLESHADING, (AND GLfloat value), (value), &value, GL_void_return) #endif #endif #ifndef NO_GLMINSAMPLESHADINGARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MinSampleShadingARB, glMinSampleShadingARB, MINSAMPLESHADINGARB, (AND GLfloat value), (value), &value, GL_void_return) GL_PROCM(void, gl, MinSampleShadingARB, glMinSampleShadingARB, MINSAMPLESHADINGARB, (AND GLfloat value), (value), &value, GL_void_return) #endif #endif #ifndef NO_GLMINMAX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Minmax, glMinmax, MINMAX, (AND GLenum target, GLenum internalformat, GLboolean32 sink), (target, internalformat, sink), &target, GL_void_return) GL_PROCM(void, gl, Minmax, glMinmax, MINMAX, (AND GLenum target, GLenum internalformat, GLboolean32 sink), (target, internalformat, sink), &target, GL_void_return) #endif #endif #ifndef NO_GLMINMAXEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MinmaxEXT, glMinmaxEXT, MINMAXEXT, (AND GLenum target, GLenum internalformat, GLboolean32 sink), (target, internalformat, sink), &target, GL_void_return) GL_PROCM(void, gl, MinmaxEXT, glMinmaxEXT, MINMAXEXT, (AND GLenum target, GLenum internalformat, GLboolean32 sink), (target, internalformat, sink), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTMATRIXD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultMatrixd, glMultMatrixd, MULTMATRIXD, (AND const GLdouble *m), (m), &m, GL_void_return) GL_PROCM(void, gl, MultMatrixd, glMultMatrixd, MULTMATRIXD, (AND memptr m), (m), &m, GL_void_return) #endif #endif #ifndef NO_GLMULTMATRIXF GL_PROC(void, gl, MultMatrixf, glMultMatrixf, MULTMATRIXF, (AND const GLfloat *m), (m), &m, GL_void_return) GL_PROCM(void, gl, MultMatrixf, glMultMatrixf, MULTMATRIXF, (AND memptr m), (m), &m, GL_void_return) #endif #ifndef NO_GLMULTMATRIXXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultMatrixxOES, glMultMatrixxOES, MULTMATRIXXOES, (AND const GLfixed *m), (m), &m, GL_void_return) GL_PROCM(void, gl, MultMatrixxOES, glMultMatrixxOES, MULTMATRIXXOES, (AND memptr m), (m), &m, GL_void_return) #endif #endif #ifndef NO_GLMULTTRANSPOSEMATRIXD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultTransposeMatrixd, glMultTransposeMatrixd, MULTTRANSPOSEMATRIXD, (AND const GLdouble *m), (m), &m, GL_void_return) GL_PROCM(void, gl, MultTransposeMatrixd, glMultTransposeMatrixd, MULTTRANSPOSEMATRIXD, (AND memptr m), (m), &m, GL_void_return) #endif #endif #ifndef NO_GLMULTTRANSPOSEMATRIXDARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultTransposeMatrixdARB, glMultTransposeMatrixdARB, MULTTRANSPOSEMATRIXDARB, (AND const GLdouble *m), (m), &m, GL_void_return) GL_PROCM(void, gl, MultTransposeMatrixdARB, glMultTransposeMatrixdARB, MULTTRANSPOSEMATRIXDARB, (AND memptr m), (m), &m, GL_void_return) #endif #endif #ifndef NO_GLMULTTRANSPOSEMATRIXF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultTransposeMatrixf, glMultTransposeMatrixf, MULTTRANSPOSEMATRIXF, (AND const GLfloat *m), (m), &m, GL_void_return) GL_PROCM(void, gl, MultTransposeMatrixf, glMultTransposeMatrixf, MULTTRANSPOSEMATRIXF, (AND memptr m), (m), &m, GL_void_return) #endif #endif #ifndef NO_GLMULTTRANSPOSEMATRIXFARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultTransposeMatrixfARB, glMultTransposeMatrixfARB, MULTTRANSPOSEMATRIXFARB, (AND const GLfloat *m), (m), &m, GL_void_return) GL_PROCM(void, gl, MultTransposeMatrixfARB, glMultTransposeMatrixfARB, MULTTRANSPOSEMATRIXFARB, (AND memptr m), (m), &m, GL_void_return) #endif #endif #ifndef NO_GLMULTTRANSPOSEMATRIXXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultTransposeMatrixxOES, glMultTransposeMatrixxOES, MULTTRANSPOSEMATRIXXOES, (AND const GLfixed *m), (m), &m, GL_void_return) GL_PROCM(void, gl, MultTransposeMatrixxOES, glMultTransposeMatrixxOES, MULTTRANSPOSEMATRIXXOES, (AND memptr m), (m), &m, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWARRAYS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawArrays, glMultiDrawArrays, MULTIDRAWARRAYS, (AND GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount), (mode, first, count, drawcount), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawArrays, glMultiDrawArrays, MULTIDRAWARRAYS, (AND GLenum mode, memptr first, memptr count, GLsizei drawcount), (mode, first, count, drawcount), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWARRAYSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawArraysEXT, glMultiDrawArraysEXT, MULTIDRAWARRAYSEXT, (AND GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount), (mode, first, count, primcount), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawArraysEXT, glMultiDrawArraysEXT, MULTIDRAWARRAYSEXT, (AND GLenum mode, memptr first, memptr count, GLsizei primcount), (mode, first, count, primcount), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWARRAYSINDIRECT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawArraysIndirect, glMultiDrawArraysIndirect, MULTIDRAWARRAYSINDIRECT, (AND GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride), (mode, indirect, drawcount, stride), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawArraysIndirect, glMultiDrawArraysIndirect, MULTIDRAWARRAYSINDIRECT, (AND GLenum mode, memptr indirect, GLsizei drawcount, GLsizei stride), (mode, indirect, drawcount, stride), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWARRAYSINDIRECTAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawArraysIndirectAMD, glMultiDrawArraysIndirectAMD, MULTIDRAWARRAYSINDIRECTAMD, (AND GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride), (mode, indirect, primcount, stride), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawArraysIndirectAMD, glMultiDrawArraysIndirectAMD, MULTIDRAWARRAYSINDIRECTAMD, (AND GLenum mode, memptr indirect, GLsizei primcount, GLsizei stride), (mode, indirect, primcount, stride), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawArraysIndirectBindlessCountNV, glMultiDrawArraysIndirectBindlessCountNV, MULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV, (AND GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount), (mode, indirect, drawCount, maxDrawCount, stride, vertexBufferCount), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawArraysIndirectBindlessCountNV, glMultiDrawArraysIndirectBindlessCountNV, MULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV, (AND GLenum mode, memptr indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount), (mode, indirect, drawCount, maxDrawCount, stride, vertexBufferCount), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWARRAYSINDIRECTBINDLESSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawArraysIndirectBindlessNV, glMultiDrawArraysIndirectBindlessNV, MULTIDRAWARRAYSINDIRECTBINDLESSNV, (AND GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount), (mode, indirect, drawCount, stride, vertexBufferCount), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawArraysIndirectBindlessNV, glMultiDrawArraysIndirectBindlessNV, MULTIDRAWARRAYSINDIRECTBINDLESSNV, (AND GLenum mode, memptr indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount), (mode, indirect, drawCount, stride, vertexBufferCount), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWARRAYSINDIRECTCOUNT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawArraysIndirectCount, glMultiDrawArraysIndirectCount, MULTIDRAWARRAYSINDIRECTCOUNT, (AND GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride), (mode, indirect, drawcount, maxdrawcount, stride), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawArraysIndirectCount, glMultiDrawArraysIndirectCount, MULTIDRAWARRAYSINDIRECTCOUNT, (AND GLenum mode, memptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride), (mode, indirect, drawcount, maxdrawcount, stride), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWARRAYSINDIRECTCOUNTARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawArraysIndirectCountARB, glMultiDrawArraysIndirectCountARB, MULTIDRAWARRAYSINDIRECTCOUNTARB, (AND GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride), (mode, indirect, drawcount, maxdrawcount, stride), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawArraysIndirectCountARB, glMultiDrawArraysIndirectCountARB, MULTIDRAWARRAYSINDIRECTCOUNTARB, (AND GLenum mode, memptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride), (mode, indirect, drawcount, maxdrawcount, stride), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWELEMENTARRAYAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawElementArrayAPPLE, glMultiDrawElementArrayAPPLE, MULTIDRAWELEMENTARRAYAPPLE, (AND GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount), (mode, first, count, primcount), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawElementArrayAPPLE, glMultiDrawElementArrayAPPLE, MULTIDRAWELEMENTARRAYAPPLE, (AND GLenum mode, memptr first, memptr count, GLsizei primcount), (mode, first, count, primcount), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWELEMENTS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawElements, glMultiDrawElements, MULTIDRAWELEMENTS, (AND GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount), (mode, count, type, indices, drawcount), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawElements, glMultiDrawElements, MULTIDRAWELEMENTS, (AND GLenum mode, memptr count, GLenum type, memptr indices, GLsizei drawcount), (mode, count, type, indices, drawcount), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWELEMENTSBASEVERTEX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawElementsBaseVertex, glMultiDrawElementsBaseVertex, MULTIDRAWELEMENTSBASEVERTEX, (AND GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex), (mode, count, type, indices, drawcount, basevertex), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawElementsBaseVertex, glMultiDrawElementsBaseVertex, MULTIDRAWELEMENTSBASEVERTEX, (AND GLenum mode, memptr count, GLenum type, memptr indices, GLsizei drawcount, memptr basevertex), (mode, count, type, indices, drawcount, basevertex), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWELEMENTSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawElementsEXT, glMultiDrawElementsEXT, MULTIDRAWELEMENTSEXT, (AND GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount), (mode, count, type, indices, primcount), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawElementsEXT, glMultiDrawElementsEXT, MULTIDRAWELEMENTSEXT, (AND GLenum mode, memptr count, GLenum type, memptr indices, GLsizei primcount), (mode, count, type, indices, primcount), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWELEMENTSINDIRECT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawElementsIndirect, glMultiDrawElementsIndirect, MULTIDRAWELEMENTSINDIRECT, (AND GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride), (mode, type, indirect, drawcount, stride), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawElementsIndirect, glMultiDrawElementsIndirect, MULTIDRAWELEMENTSINDIRECT, (AND GLenum mode, GLenum type, memptr indirect, GLsizei drawcount, GLsizei stride), (mode, type, indirect, drawcount, stride), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWELEMENTSINDIRECTAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawElementsIndirectAMD, glMultiDrawElementsIndirectAMD, MULTIDRAWELEMENTSINDIRECTAMD, (AND GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride), (mode, type, indirect, primcount, stride), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawElementsIndirectAMD, glMultiDrawElementsIndirectAMD, MULTIDRAWELEMENTSINDIRECTAMD, (AND GLenum mode, GLenum type, memptr indirect, GLsizei primcount, GLsizei stride), (mode, type, indirect, primcount, stride), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawElementsIndirectBindlessCountNV, glMultiDrawElementsIndirectBindlessCountNV, MULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV, (AND GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount), (mode, type, indirect, drawCount, maxDrawCount, stride, vertexBufferCount), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawElementsIndirectBindlessCountNV, glMultiDrawElementsIndirectBindlessCountNV, MULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV, (AND GLenum mode, GLenum type, memptr indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount), (mode, type, indirect, drawCount, maxDrawCount, stride, vertexBufferCount), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWELEMENTSINDIRECTBINDLESSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawElementsIndirectBindlessNV, glMultiDrawElementsIndirectBindlessNV, MULTIDRAWELEMENTSINDIRECTBINDLESSNV, (AND GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount), (mode, type, indirect, drawCount, stride, vertexBufferCount), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawElementsIndirectBindlessNV, glMultiDrawElementsIndirectBindlessNV, MULTIDRAWELEMENTSINDIRECTBINDLESSNV, (AND GLenum mode, GLenum type, memptr indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount), (mode, type, indirect, drawCount, stride, vertexBufferCount), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWELEMENTSINDIRECTCOUNT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawElementsIndirectCount, glMultiDrawElementsIndirectCount, MULTIDRAWELEMENTSINDIRECTCOUNT, (AND GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride), (mode, type, indirect, drawcount, maxdrawcount, stride), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawElementsIndirectCount, glMultiDrawElementsIndirectCount, MULTIDRAWELEMENTSINDIRECTCOUNT, (AND GLenum mode, GLenum type, memptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride), (mode, type, indirect, drawcount, maxdrawcount, stride), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWELEMENTSINDIRECTCOUNTARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawElementsIndirectCountARB, glMultiDrawElementsIndirectCountARB, MULTIDRAWELEMENTSINDIRECTCOUNTARB, (AND GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride), (mode, type, indirect, drawcount, maxdrawcount, stride), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawElementsIndirectCountARB, glMultiDrawElementsIndirectCountARB, MULTIDRAWELEMENTSINDIRECTCOUNTARB, (AND GLenum mode, GLenum type, memptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride), (mode, type, indirect, drawcount, maxdrawcount, stride), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIDRAWRANGEELEMENTARRAYAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiDrawRangeElementArrayAPPLE, glMultiDrawRangeElementArrayAPPLE, MULTIDRAWRANGEELEMENTARRAYAPPLE, (AND GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount), (mode, start, end, first, count, primcount), &mode, GL_void_return) GL_PROCM(void, gl, MultiDrawRangeElementArrayAPPLE, glMultiDrawRangeElementArrayAPPLE, MULTIDRAWRANGEELEMENTARRAYAPPLE, (AND GLenum mode, GLuint start, GLuint end, memptr first, memptr count, GLsizei primcount), (mode, start, end, first, count, primcount), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIMODEDRAWARRAYSIBM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiModeDrawArraysIBM, glMultiModeDrawArraysIBM, MULTIMODEDRAWARRAYSIBM, (AND const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride), (mode, first, count, primcount, modestride), &mode, GL_void_return) GL_PROCM(void, gl, MultiModeDrawArraysIBM, glMultiModeDrawArraysIBM, MULTIMODEDRAWARRAYSIBM, (AND memptr mode, memptr first, memptr count, GLsizei primcount, GLint modestride), (mode, first, count, primcount, modestride), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTIMODEDRAWELEMENTSIBM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiModeDrawElementsIBM, glMultiModeDrawElementsIBM, MULTIMODEDRAWELEMENTSIBM, (AND const GLenum *mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount, GLint modestride), (mode, count, type, indices, primcount, modestride), &mode, GL_void_return) GL_PROCM(void, gl, MultiModeDrawElementsIBM, glMultiModeDrawElementsIBM, MULTIMODEDRAWELEMENTSIBM, (AND memptr mode, memptr count, GLenum type, memptr indices, GLsizei primcount, GLint modestride), (mode, count, type, indices, primcount, modestride), &mode, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexBufferEXT, glMultiTexBufferEXT, MULTITEXBUFFEREXT, (AND GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer), (texunit, target, internalformat, buffer), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexBufferEXT, glMultiTexBufferEXT, MULTITEXBUFFEREXT, (AND GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer), (texunit, target, internalformat, buffer), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1BOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1bOES, glMultiTexCoord1bOES, MULTITEXCOORD1BOES, (AND GLenum texture, GLbyte32 s), (texture, s), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1bOES, glMultiTexCoord1bOES, MULTITEXCOORD1BOES, (AND GLenum texture, GLbyte32 s), (texture, s), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1BVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1bvOES, glMultiTexCoord1bvOES, MULTITEXCOORD1BVOES, (AND GLenum texture, const GLbyte *coords), (texture, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1bvOES, glMultiTexCoord1bvOES, MULTITEXCOORD1BVOES, (AND GLenum texture, memptr coords), (texture, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1d, glMultiTexCoord1d, MULTITEXCOORD1D, (AND GLenum target, GLdouble s), (target, s), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1d, glMultiTexCoord1d, MULTITEXCOORD1D, (AND GLenum target, GLdouble s), (target, s), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1dARB, glMultiTexCoord1dARB, MULTITEXCOORD1DARB, (AND GLenum target, GLdouble s), (target, s), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1dARB, glMultiTexCoord1dARB, MULTITEXCOORD1DARB, (AND GLenum target, GLdouble s), (target, s), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1dv, glMultiTexCoord1dv, MULTITEXCOORD1DV, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1dv, glMultiTexCoord1dv, MULTITEXCOORD1DV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1DVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1dvARB, glMultiTexCoord1dvARB, MULTITEXCOORD1DVARB, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1dvARB, glMultiTexCoord1dvARB, MULTITEXCOORD1DVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1f, glMultiTexCoord1f, MULTITEXCOORD1F, (AND GLenum target, GLfloat s), (target, s), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1f, glMultiTexCoord1f, MULTITEXCOORD1F, (AND GLenum target, GLfloat s), (target, s), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1fARB, glMultiTexCoord1fARB, MULTITEXCOORD1FARB, (AND GLenum target, GLfloat s), (target, s), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1fARB, glMultiTexCoord1fARB, MULTITEXCOORD1FARB, (AND GLenum target, GLfloat s), (target, s), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1fv, glMultiTexCoord1fv, MULTITEXCOORD1FV, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1fv, glMultiTexCoord1fv, MULTITEXCOORD1FV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1fvARB, glMultiTexCoord1fvARB, MULTITEXCOORD1FVARB, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1fvARB, glMultiTexCoord1fvARB, MULTITEXCOORD1FVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1hNV, glMultiTexCoord1hNV, MULTITEXCOORD1HNV, (AND GLenum target, GLhalfNV32 s), (target, s), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1hNV, glMultiTexCoord1hNV, MULTITEXCOORD1HNV, (AND GLenum target, GLhalfNV32 s), (target, s), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1hvNV, glMultiTexCoord1hvNV, MULTITEXCOORD1HVNV, (AND GLenum target, const GLhalfNV *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1hvNV, glMultiTexCoord1hvNV, MULTITEXCOORD1HVNV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1i, glMultiTexCoord1i, MULTITEXCOORD1I, (AND GLenum target, GLint s), (target, s), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1i, glMultiTexCoord1i, MULTITEXCOORD1I, (AND GLenum target, GLint s), (target, s), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1IARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1iARB, glMultiTexCoord1iARB, MULTITEXCOORD1IARB, (AND GLenum target, GLint s), (target, s), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1iARB, glMultiTexCoord1iARB, MULTITEXCOORD1IARB, (AND GLenum target, GLint s), (target, s), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1iv, glMultiTexCoord1iv, MULTITEXCOORD1IV, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1iv, glMultiTexCoord1iv, MULTITEXCOORD1IV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1IVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1ivARB, glMultiTexCoord1ivARB, MULTITEXCOORD1IVARB, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1ivARB, glMultiTexCoord1ivARB, MULTITEXCOORD1IVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1s, glMultiTexCoord1s, MULTITEXCOORD1S, (AND GLenum target, GLshort32 s), (target, s), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1s, glMultiTexCoord1s, MULTITEXCOORD1S, (AND GLenum target, GLshort32 s), (target, s), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1SARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1sARB, glMultiTexCoord1sARB, MULTITEXCOORD1SARB, (AND GLenum target, GLshort32 s), (target, s), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1sARB, glMultiTexCoord1sARB, MULTITEXCOORD1SARB, (AND GLenum target, GLshort32 s), (target, s), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1sv, glMultiTexCoord1sv, MULTITEXCOORD1SV, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1sv, glMultiTexCoord1sv, MULTITEXCOORD1SV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1SVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1svARB, glMultiTexCoord1svARB, MULTITEXCOORD1SVARB, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1svARB, glMultiTexCoord1svARB, MULTITEXCOORD1SVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1xOES, glMultiTexCoord1xOES, MULTITEXCOORD1XOES, (AND GLenum texture, GLfixed s), (texture, s), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1xOES, glMultiTexCoord1xOES, MULTITEXCOORD1XOES, (AND GLenum texture, GLfixed s), (texture, s), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD1XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord1xvOES, glMultiTexCoord1xvOES, MULTITEXCOORD1XVOES, (AND GLenum texture, const GLfixed *coords), (texture, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord1xvOES, glMultiTexCoord1xvOES, MULTITEXCOORD1XVOES, (AND GLenum texture, memptr coords), (texture, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2BOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2bOES, glMultiTexCoord2bOES, MULTITEXCOORD2BOES, (AND GLenum texture, GLbyte32 s, GLbyte32 t), (texture, s, t), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2bOES, glMultiTexCoord2bOES, MULTITEXCOORD2BOES, (AND GLenum texture, GLbyte32 s, GLbyte32 t), (texture, s, t), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2BVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2bvOES, glMultiTexCoord2bvOES, MULTITEXCOORD2BVOES, (AND GLenum texture, const GLbyte *coords), (texture, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2bvOES, glMultiTexCoord2bvOES, MULTITEXCOORD2BVOES, (AND GLenum texture, memptr coords), (texture, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2d, glMultiTexCoord2d, MULTITEXCOORD2D, (AND GLenum target, GLdouble s, GLdouble t), (target, s, t), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2d, glMultiTexCoord2d, MULTITEXCOORD2D, (AND GLenum target, GLdouble s, GLdouble t), (target, s, t), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2dARB, glMultiTexCoord2dARB, MULTITEXCOORD2DARB, (AND GLenum target, GLdouble s, GLdouble t), (target, s, t), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2dARB, glMultiTexCoord2dARB, MULTITEXCOORD2DARB, (AND GLenum target, GLdouble s, GLdouble t), (target, s, t), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2dv, glMultiTexCoord2dv, MULTITEXCOORD2DV, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2dv, glMultiTexCoord2dv, MULTITEXCOORD2DV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2DVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2dvARB, glMultiTexCoord2dvARB, MULTITEXCOORD2DVARB, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2dvARB, glMultiTexCoord2dvARB, MULTITEXCOORD2DVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2f, glMultiTexCoord2f, MULTITEXCOORD2F, (AND GLenum target, GLfloat s, GLfloat t), (target, s, t), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2f, glMultiTexCoord2f, MULTITEXCOORD2F, (AND GLenum target, GLfloat s, GLfloat t), (target, s, t), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2fARB, glMultiTexCoord2fARB, MULTITEXCOORD2FARB, (AND GLenum target, GLfloat s, GLfloat t), (target, s, t), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2fARB, glMultiTexCoord2fARB, MULTITEXCOORD2FARB, (AND GLenum target, GLfloat s, GLfloat t), (target, s, t), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2fv, glMultiTexCoord2fv, MULTITEXCOORD2FV, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2fv, glMultiTexCoord2fv, MULTITEXCOORD2FV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2fvARB, glMultiTexCoord2fvARB, MULTITEXCOORD2FVARB, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2fvARB, glMultiTexCoord2fvARB, MULTITEXCOORD2FVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2hNV, glMultiTexCoord2hNV, MULTITEXCOORD2HNV, (AND GLenum target, GLhalfNV32 s, GLhalfNV32 t), (target, s, t), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2hNV, glMultiTexCoord2hNV, MULTITEXCOORD2HNV, (AND GLenum target, GLhalfNV32 s, GLhalfNV32 t), (target, s, t), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2hvNV, glMultiTexCoord2hvNV, MULTITEXCOORD2HVNV, (AND GLenum target, const GLhalfNV *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2hvNV, glMultiTexCoord2hvNV, MULTITEXCOORD2HVNV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2i, glMultiTexCoord2i, MULTITEXCOORD2I, (AND GLenum target, GLint s, GLint t), (target, s, t), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2i, glMultiTexCoord2i, MULTITEXCOORD2I, (AND GLenum target, GLint s, GLint t), (target, s, t), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2IARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2iARB, glMultiTexCoord2iARB, MULTITEXCOORD2IARB, (AND GLenum target, GLint s, GLint t), (target, s, t), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2iARB, glMultiTexCoord2iARB, MULTITEXCOORD2IARB, (AND GLenum target, GLint s, GLint t), (target, s, t), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2iv, glMultiTexCoord2iv, MULTITEXCOORD2IV, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2iv, glMultiTexCoord2iv, MULTITEXCOORD2IV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2IVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2ivARB, glMultiTexCoord2ivARB, MULTITEXCOORD2IVARB, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2ivARB, glMultiTexCoord2ivARB, MULTITEXCOORD2IVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2s, glMultiTexCoord2s, MULTITEXCOORD2S, (AND GLenum target, GLshort32 s, GLshort32 t), (target, s, t), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2s, glMultiTexCoord2s, MULTITEXCOORD2S, (AND GLenum target, GLshort32 s, GLshort32 t), (target, s, t), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2SARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2sARB, glMultiTexCoord2sARB, MULTITEXCOORD2SARB, (AND GLenum target, GLshort32 s, GLshort32 t), (target, s, t), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2sARB, glMultiTexCoord2sARB, MULTITEXCOORD2SARB, (AND GLenum target, GLshort32 s, GLshort32 t), (target, s, t), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2sv, glMultiTexCoord2sv, MULTITEXCOORD2SV, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2sv, glMultiTexCoord2sv, MULTITEXCOORD2SV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2SVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2svARB, glMultiTexCoord2svARB, MULTITEXCOORD2SVARB, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2svARB, glMultiTexCoord2svARB, MULTITEXCOORD2SVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2xOES, glMultiTexCoord2xOES, MULTITEXCOORD2XOES, (AND GLenum texture, GLfixed s, GLfixed t), (texture, s, t), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2xOES, glMultiTexCoord2xOES, MULTITEXCOORD2XOES, (AND GLenum texture, GLfixed s, GLfixed t), (texture, s, t), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD2XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord2xvOES, glMultiTexCoord2xvOES, MULTITEXCOORD2XVOES, (AND GLenum texture, const GLfixed *coords), (texture, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord2xvOES, glMultiTexCoord2xvOES, MULTITEXCOORD2XVOES, (AND GLenum texture, memptr coords), (texture, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3BOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3bOES, glMultiTexCoord3bOES, MULTITEXCOORD3BOES, (AND GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r), (texture, s, t, r), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3bOES, glMultiTexCoord3bOES, MULTITEXCOORD3BOES, (AND GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r), (texture, s, t, r), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3BVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3bvOES, glMultiTexCoord3bvOES, MULTITEXCOORD3BVOES, (AND GLenum texture, const GLbyte *coords), (texture, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3bvOES, glMultiTexCoord3bvOES, MULTITEXCOORD3BVOES, (AND GLenum texture, memptr coords), (texture, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3d, glMultiTexCoord3d, MULTITEXCOORD3D, (AND GLenum target, GLdouble s, GLdouble t, GLdouble r), (target, s, t, r), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3d, glMultiTexCoord3d, MULTITEXCOORD3D, (AND GLenum target, GLdouble s, GLdouble t, GLdouble r), (target, s, t, r), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3dARB, glMultiTexCoord3dARB, MULTITEXCOORD3DARB, (AND GLenum target, GLdouble s, GLdouble t, GLdouble r), (target, s, t, r), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3dARB, glMultiTexCoord3dARB, MULTITEXCOORD3DARB, (AND GLenum target, GLdouble s, GLdouble t, GLdouble r), (target, s, t, r), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3dv, glMultiTexCoord3dv, MULTITEXCOORD3DV, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3dv, glMultiTexCoord3dv, MULTITEXCOORD3DV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3DVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3dvARB, glMultiTexCoord3dvARB, MULTITEXCOORD3DVARB, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3dvARB, glMultiTexCoord3dvARB, MULTITEXCOORD3DVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3f, glMultiTexCoord3f, MULTITEXCOORD3F, (AND GLenum target, GLfloat s, GLfloat t, GLfloat r), (target, s, t, r), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3f, glMultiTexCoord3f, MULTITEXCOORD3F, (AND GLenum target, GLfloat s, GLfloat t, GLfloat r), (target, s, t, r), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3fARB, glMultiTexCoord3fARB, MULTITEXCOORD3FARB, (AND GLenum target, GLfloat s, GLfloat t, GLfloat r), (target, s, t, r), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3fARB, glMultiTexCoord3fARB, MULTITEXCOORD3FARB, (AND GLenum target, GLfloat s, GLfloat t, GLfloat r), (target, s, t, r), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3fv, glMultiTexCoord3fv, MULTITEXCOORD3FV, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3fv, glMultiTexCoord3fv, MULTITEXCOORD3FV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3fvARB, glMultiTexCoord3fvARB, MULTITEXCOORD3FVARB, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3fvARB, glMultiTexCoord3fvARB, MULTITEXCOORD3FVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3hNV, glMultiTexCoord3hNV, MULTITEXCOORD3HNV, (AND GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r), (target, s, t, r), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3hNV, glMultiTexCoord3hNV, MULTITEXCOORD3HNV, (AND GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r), (target, s, t, r), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3hvNV, glMultiTexCoord3hvNV, MULTITEXCOORD3HVNV, (AND GLenum target, const GLhalfNV *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3hvNV, glMultiTexCoord3hvNV, MULTITEXCOORD3HVNV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3i, glMultiTexCoord3i, MULTITEXCOORD3I, (AND GLenum target, GLint s, GLint t, GLint r), (target, s, t, r), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3i, glMultiTexCoord3i, MULTITEXCOORD3I, (AND GLenum target, GLint s, GLint t, GLint r), (target, s, t, r), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3IARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3iARB, glMultiTexCoord3iARB, MULTITEXCOORD3IARB, (AND GLenum target, GLint s, GLint t, GLint r), (target, s, t, r), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3iARB, glMultiTexCoord3iARB, MULTITEXCOORD3IARB, (AND GLenum target, GLint s, GLint t, GLint r), (target, s, t, r), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3iv, glMultiTexCoord3iv, MULTITEXCOORD3IV, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3iv, glMultiTexCoord3iv, MULTITEXCOORD3IV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3IVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3ivARB, glMultiTexCoord3ivARB, MULTITEXCOORD3IVARB, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3ivARB, glMultiTexCoord3ivARB, MULTITEXCOORD3IVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3s, glMultiTexCoord3s, MULTITEXCOORD3S, (AND GLenum target, GLshort32 s, GLshort32 t, GLshort32 r), (target, s, t, r), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3s, glMultiTexCoord3s, MULTITEXCOORD3S, (AND GLenum target, GLshort32 s, GLshort32 t, GLshort32 r), (target, s, t, r), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3SARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3sARB, glMultiTexCoord3sARB, MULTITEXCOORD3SARB, (AND GLenum target, GLshort32 s, GLshort32 t, GLshort32 r), (target, s, t, r), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3sARB, glMultiTexCoord3sARB, MULTITEXCOORD3SARB, (AND GLenum target, GLshort32 s, GLshort32 t, GLshort32 r), (target, s, t, r), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3sv, glMultiTexCoord3sv, MULTITEXCOORD3SV, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3sv, glMultiTexCoord3sv, MULTITEXCOORD3SV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3SVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3svARB, glMultiTexCoord3svARB, MULTITEXCOORD3SVARB, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3svARB, glMultiTexCoord3svARB, MULTITEXCOORD3SVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3xOES, glMultiTexCoord3xOES, MULTITEXCOORD3XOES, (AND GLenum texture, GLfixed s, GLfixed t, GLfixed r), (texture, s, t, r), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3xOES, glMultiTexCoord3xOES, MULTITEXCOORD3XOES, (AND GLenum texture, GLfixed s, GLfixed t, GLfixed r), (texture, s, t, r), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD3XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord3xvOES, glMultiTexCoord3xvOES, MULTITEXCOORD3XVOES, (AND GLenum texture, const GLfixed *coords), (texture, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord3xvOES, glMultiTexCoord3xvOES, MULTITEXCOORD3XVOES, (AND GLenum texture, memptr coords), (texture, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4BOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4bOES, glMultiTexCoord4bOES, MULTITEXCOORD4BOES, (AND GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q), (texture, s, t, r, q), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4bOES, glMultiTexCoord4bOES, MULTITEXCOORD4BOES, (AND GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q), (texture, s, t, r, q), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4BVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4bvOES, glMultiTexCoord4bvOES, MULTITEXCOORD4BVOES, (AND GLenum texture, const GLbyte *coords), (texture, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4bvOES, glMultiTexCoord4bvOES, MULTITEXCOORD4BVOES, (AND GLenum texture, memptr coords), (texture, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4d, glMultiTexCoord4d, MULTITEXCOORD4D, (AND GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q), (target, s, t, r, q), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4d, glMultiTexCoord4d, MULTITEXCOORD4D, (AND GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q), (target, s, t, r, q), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4dARB, glMultiTexCoord4dARB, MULTITEXCOORD4DARB, (AND GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q), (target, s, t, r, q), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4dARB, glMultiTexCoord4dARB, MULTITEXCOORD4DARB, (AND GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q), (target, s, t, r, q), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4dv, glMultiTexCoord4dv, MULTITEXCOORD4DV, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4dv, glMultiTexCoord4dv, MULTITEXCOORD4DV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4DVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4dvARB, glMultiTexCoord4dvARB, MULTITEXCOORD4DVARB, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4dvARB, glMultiTexCoord4dvARB, MULTITEXCOORD4DVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4f, glMultiTexCoord4f, MULTITEXCOORD4F, (AND GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q), (target, s, t, r, q), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4f, glMultiTexCoord4f, MULTITEXCOORD4F, (AND GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q), (target, s, t, r, q), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4fARB, glMultiTexCoord4fARB, MULTITEXCOORD4FARB, (AND GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q), (target, s, t, r, q), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4fARB, glMultiTexCoord4fARB, MULTITEXCOORD4FARB, (AND GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q), (target, s, t, r, q), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4fv, glMultiTexCoord4fv, MULTITEXCOORD4FV, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4fv, glMultiTexCoord4fv, MULTITEXCOORD4FV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4fvARB, glMultiTexCoord4fvARB, MULTITEXCOORD4FVARB, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4fvARB, glMultiTexCoord4fvARB, MULTITEXCOORD4FVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4hNV, glMultiTexCoord4hNV, MULTITEXCOORD4HNV, (AND GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q), (target, s, t, r, q), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4hNV, glMultiTexCoord4hNV, MULTITEXCOORD4HNV, (AND GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q), (target, s, t, r, q), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4hvNV, glMultiTexCoord4hvNV, MULTITEXCOORD4HVNV, (AND GLenum target, const GLhalfNV *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4hvNV, glMultiTexCoord4hvNV, MULTITEXCOORD4HVNV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4i, glMultiTexCoord4i, MULTITEXCOORD4I, (AND GLenum target, GLint s, GLint t, GLint r, GLint q), (target, s, t, r, q), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4i, glMultiTexCoord4i, MULTITEXCOORD4I, (AND GLenum target, GLint s, GLint t, GLint r, GLint q), (target, s, t, r, q), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4IARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4iARB, glMultiTexCoord4iARB, MULTITEXCOORD4IARB, (AND GLenum target, GLint s, GLint t, GLint r, GLint q), (target, s, t, r, q), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4iARB, glMultiTexCoord4iARB, MULTITEXCOORD4IARB, (AND GLenum target, GLint s, GLint t, GLint r, GLint q), (target, s, t, r, q), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4iv, glMultiTexCoord4iv, MULTITEXCOORD4IV, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4iv, glMultiTexCoord4iv, MULTITEXCOORD4IV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4IVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4ivARB, glMultiTexCoord4ivARB, MULTITEXCOORD4IVARB, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4ivARB, glMultiTexCoord4ivARB, MULTITEXCOORD4IVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4s, glMultiTexCoord4s, MULTITEXCOORD4S, (AND GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q), (target, s, t, r, q), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4s, glMultiTexCoord4s, MULTITEXCOORD4S, (AND GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q), (target, s, t, r, q), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4SARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4sARB, glMultiTexCoord4sARB, MULTITEXCOORD4SARB, (AND GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q), (target, s, t, r, q), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4sARB, glMultiTexCoord4sARB, MULTITEXCOORD4SARB, (AND GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q), (target, s, t, r, q), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4sv, glMultiTexCoord4sv, MULTITEXCOORD4SV, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4sv, glMultiTexCoord4sv, MULTITEXCOORD4SV, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4SVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4svARB, glMultiTexCoord4svARB, MULTITEXCOORD4SVARB, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4svARB, glMultiTexCoord4svARB, MULTITEXCOORD4SVARB, (AND GLenum target, memptr v), (target, v), &target, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4xOES, glMultiTexCoord4xOES, MULTITEXCOORD4XOES, (AND GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q), (texture, s, t, r, q), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4xOES, glMultiTexCoord4xOES, MULTITEXCOORD4XOES, (AND GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q), (texture, s, t, r, q), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORD4XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoord4xvOES, glMultiTexCoord4xvOES, MULTITEXCOORD4XVOES, (AND GLenum texture, const GLfixed *coords), (texture, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoord4xvOES, glMultiTexCoord4xvOES, MULTITEXCOORD4XVOES, (AND GLenum texture, memptr coords), (texture, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORDP1UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoordP1ui, glMultiTexCoordP1ui, MULTITEXCOORDP1UI, (AND GLenum texture, GLenum type, GLuint coords), (texture, type, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoordP1ui, glMultiTexCoordP1ui, MULTITEXCOORDP1UI, (AND GLenum texture, GLenum type, GLuint coords), (texture, type, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORDP1UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoordP1uiv, glMultiTexCoordP1uiv, MULTITEXCOORDP1UIV, (AND GLenum texture, GLenum type, const GLuint *coords), (texture, type, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoordP1uiv, glMultiTexCoordP1uiv, MULTITEXCOORDP1UIV, (AND GLenum texture, GLenum type, memptr coords), (texture, type, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORDP2UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoordP2ui, glMultiTexCoordP2ui, MULTITEXCOORDP2UI, (AND GLenum texture, GLenum type, GLuint coords), (texture, type, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoordP2ui, glMultiTexCoordP2ui, MULTITEXCOORDP2UI, (AND GLenum texture, GLenum type, GLuint coords), (texture, type, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORDP2UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoordP2uiv, glMultiTexCoordP2uiv, MULTITEXCOORDP2UIV, (AND GLenum texture, GLenum type, const GLuint *coords), (texture, type, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoordP2uiv, glMultiTexCoordP2uiv, MULTITEXCOORDP2UIV, (AND GLenum texture, GLenum type, memptr coords), (texture, type, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORDP3UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoordP3ui, glMultiTexCoordP3ui, MULTITEXCOORDP3UI, (AND GLenum texture, GLenum type, GLuint coords), (texture, type, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoordP3ui, glMultiTexCoordP3ui, MULTITEXCOORDP3UI, (AND GLenum texture, GLenum type, GLuint coords), (texture, type, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORDP3UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoordP3uiv, glMultiTexCoordP3uiv, MULTITEXCOORDP3UIV, (AND GLenum texture, GLenum type, const GLuint *coords), (texture, type, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoordP3uiv, glMultiTexCoordP3uiv, MULTITEXCOORDP3UIV, (AND GLenum texture, GLenum type, memptr coords), (texture, type, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORDP4UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoordP4ui, glMultiTexCoordP4ui, MULTITEXCOORDP4UI, (AND GLenum texture, GLenum type, GLuint coords), (texture, type, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoordP4ui, glMultiTexCoordP4ui, MULTITEXCOORDP4UI, (AND GLenum texture, GLenum type, GLuint coords), (texture, type, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORDP4UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoordP4uiv, glMultiTexCoordP4uiv, MULTITEXCOORDP4UIV, (AND GLenum texture, GLenum type, const GLuint *coords), (texture, type, coords), &texture, GL_void_return) GL_PROCM(void, gl, MultiTexCoordP4uiv, glMultiTexCoordP4uiv, MULTITEXCOORDP4UIV, (AND GLenum texture, GLenum type, memptr coords), (texture, type, coords), &texture, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXCOORDPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexCoordPointerEXT, glMultiTexCoordPointerEXT, MULTITEXCOORDPOINTEREXT, (AND GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer), (texunit, size, type, stride, pointer), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexCoordPointerEXT, glMultiTexCoordPointerEXT, MULTITEXCOORDPOINTEREXT, (AND GLenum texunit, GLint size, GLenum type, GLsizei stride, memptr pointer), (texunit, size, type, stride, pointer), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXENVFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexEnvfEXT, glMultiTexEnvfEXT, MULTITEXENVFEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLfloat param), (texunit, target, pname, param), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexEnvfEXT, glMultiTexEnvfEXT, MULTITEXENVFEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLfloat param), (texunit, target, pname, param), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXENVFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexEnvfvEXT, glMultiTexEnvfvEXT, MULTITEXENVFVEXT, (AND GLenum texunit, GLenum target, GLenum pname, const GLfloat *params), (texunit, target, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexEnvfvEXT, glMultiTexEnvfvEXT, MULTITEXENVFVEXT, (AND GLenum texunit, GLenum target, GLenum pname, memptr params), (texunit, target, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXENVIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexEnviEXT, glMultiTexEnviEXT, MULTITEXENVIEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLint param), (texunit, target, pname, param), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexEnviEXT, glMultiTexEnviEXT, MULTITEXENVIEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLint param), (texunit, target, pname, param), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXENVIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexEnvivEXT, glMultiTexEnvivEXT, MULTITEXENVIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, const GLint *params), (texunit, target, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexEnvivEXT, glMultiTexEnvivEXT, MULTITEXENVIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, memptr params), (texunit, target, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXGENDEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexGendEXT, glMultiTexGendEXT, MULTITEXGENDEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLdouble param), (texunit, coord, pname, param), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexGendEXT, glMultiTexGendEXT, MULTITEXGENDEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLdouble param), (texunit, coord, pname, param), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXGENDVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexGendvEXT, glMultiTexGendvEXT, MULTITEXGENDVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params), (texunit, coord, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexGendvEXT, glMultiTexGendvEXT, MULTITEXGENDVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, memptr params), (texunit, coord, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXGENFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexGenfEXT, glMultiTexGenfEXT, MULTITEXGENFEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLfloat param), (texunit, coord, pname, param), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexGenfEXT, glMultiTexGenfEXT, MULTITEXGENFEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLfloat param), (texunit, coord, pname, param), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXGENFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexGenfvEXT, glMultiTexGenfvEXT, MULTITEXGENFVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params), (texunit, coord, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexGenfvEXT, glMultiTexGenfvEXT, MULTITEXGENFVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, memptr params), (texunit, coord, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXGENIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexGeniEXT, glMultiTexGeniEXT, MULTITEXGENIEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLint param), (texunit, coord, pname, param), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexGeniEXT, glMultiTexGeniEXT, MULTITEXGENIEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLint param), (texunit, coord, pname, param), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXGENIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexGenivEXT, glMultiTexGenivEXT, MULTITEXGENIVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, const GLint *params), (texunit, coord, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexGenivEXT, glMultiTexGenivEXT, MULTITEXGENIVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, memptr params), (texunit, coord, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexImage1DEXT, glMultiTexImage1DEXT, MULTITEXIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels), (texunit, target, level, internalformat, width, border, format, type, pixels), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexImage1DEXT, glMultiTexImage1DEXT, MULTITEXIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, memptr pixels), (texunit, target, level, internalformat, width, border, format, type, pixels), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexImage2DEXT, glMultiTexImage2DEXT, MULTITEXIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels), (texunit, target, level, internalformat, width, height, border, format, type, pixels), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexImage2DEXT, glMultiTexImage2DEXT, MULTITEXIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, memptr pixels), (texunit, target, level, internalformat, width, height, border, format, type, pixels), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXIMAGE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexImage3DEXT, glMultiTexImage3DEXT, MULTITEXIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels), (texunit, target, level, internalformat, width, height, depth, border, format, type, pixels), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexImage3DEXT, glMultiTexImage3DEXT, MULTITEXIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, memptr pixels), (texunit, target, level, internalformat, width, height, depth, border, format, type, pixels), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXPARAMETERIIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexParameterIivEXT, glMultiTexParameterIivEXT, MULTITEXPARAMETERIIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, const GLint *params), (texunit, target, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexParameterIivEXT, glMultiTexParameterIivEXT, MULTITEXPARAMETERIIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, memptr params), (texunit, target, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXPARAMETERIUIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexParameterIuivEXT, glMultiTexParameterIuivEXT, MULTITEXPARAMETERIUIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, const GLuint *params), (texunit, target, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexParameterIuivEXT, glMultiTexParameterIuivEXT, MULTITEXPARAMETERIUIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, memptr params), (texunit, target, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXPARAMETERFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexParameterfEXT, glMultiTexParameterfEXT, MULTITEXPARAMETERFEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLfloat param), (texunit, target, pname, param), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexParameterfEXT, glMultiTexParameterfEXT, MULTITEXPARAMETERFEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLfloat param), (texunit, target, pname, param), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexParameterfvEXT, glMultiTexParameterfvEXT, MULTITEXPARAMETERFVEXT, (AND GLenum texunit, GLenum target, GLenum pname, const GLfloat *params), (texunit, target, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexParameterfvEXT, glMultiTexParameterfvEXT, MULTITEXPARAMETERFVEXT, (AND GLenum texunit, GLenum target, GLenum pname, memptr params), (texunit, target, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXPARAMETERIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexParameteriEXT, glMultiTexParameteriEXT, MULTITEXPARAMETERIEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLint param), (texunit, target, pname, param), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexParameteriEXT, glMultiTexParameteriEXT, MULTITEXPARAMETERIEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLint param), (texunit, target, pname, param), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexParameterivEXT, glMultiTexParameterivEXT, MULTITEXPARAMETERIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, const GLint *params), (texunit, target, pname, params), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexParameterivEXT, glMultiTexParameterivEXT, MULTITEXPARAMETERIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, memptr params), (texunit, target, pname, params), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXRENDERBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexRenderbufferEXT, glMultiTexRenderbufferEXT, MULTITEXRENDERBUFFEREXT, (AND GLenum texunit, GLenum target, GLuint renderbuffer), (texunit, target, renderbuffer), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexRenderbufferEXT, glMultiTexRenderbufferEXT, MULTITEXRENDERBUFFEREXT, (AND GLenum texunit, GLenum target, GLuint renderbuffer), (texunit, target, renderbuffer), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXSUBIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexSubImage1DEXT, glMultiTexSubImage1DEXT, MULTITEXSUBIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels), (texunit, target, level, xoffset, width, format, type, pixels), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexSubImage1DEXT, glMultiTexSubImage1DEXT, MULTITEXSUBIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, memptr pixels), (texunit, target, level, xoffset, width, format, type, pixels), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXSUBIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexSubImage2DEXT, glMultiTexSubImage2DEXT, MULTITEXSUBIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels), (texunit, target, level, xoffset, yoffset, width, height, format, type, pixels), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexSubImage2DEXT, glMultiTexSubImage2DEXT, MULTITEXSUBIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr pixels), (texunit, target, level, xoffset, yoffset, width, height, format, type, pixels), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTITEXSUBIMAGE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MultiTexSubImage3DEXT, glMultiTexSubImage3DEXT, MULTITEXSUBIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels), (texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &texunit, GL_void_return) GL_PROCM(void, gl, MultiTexSubImage3DEXT, glMultiTexSubImage3DEXT, MULTITEXSUBIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, memptr pixels), (texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &texunit, GL_void_return) #endif #endif #ifndef NO_GLMULTICASTBARRIERNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MulticastBarrierNV, glMulticastBarrierNV, MULTICASTBARRIERNV, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, MulticastBarrierNV, glMulticastBarrierNV, MULTICASTBARRIERNV, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLMULTICASTBLITFRAMEBUFFERNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MulticastBlitFramebufferNV, glMulticastBlitFramebufferNV, MULTICASTBLITFRAMEBUFFERNV, (AND GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter), (srcGpu, dstGpu, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), &srcGpu, GL_void_return) GL_PROCM(void, gl, MulticastBlitFramebufferNV, glMulticastBlitFramebufferNV, MULTICASTBLITFRAMEBUFFERNV, (AND GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter), (srcGpu, dstGpu, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), &srcGpu, GL_void_return) #endif #endif #ifndef NO_GLMULTICASTBUFFERSUBDATANV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MulticastBufferSubDataNV, glMulticastBufferSubDataNV, MULTICASTBUFFERSUBDATANV, (AND GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data), (gpuMask, buffer, offset, size, data), &gpuMask, GL_void_return) GL_PROCM(void, gl, MulticastBufferSubDataNV, glMulticastBufferSubDataNV, MULTICASTBUFFERSUBDATANV, (AND GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, memptr data), (gpuMask, buffer, offset, size, data), &gpuMask, GL_void_return) #endif #endif #ifndef NO_GLMULTICASTCOPYBUFFERSUBDATANV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MulticastCopyBufferSubDataNV, glMulticastCopyBufferSubDataNV, MULTICASTCOPYBUFFERSUBDATANV, (AND GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size), (readGpu, writeGpuMask, readBuffer, writeBuffer, readOffset, writeOffset, size), &readGpu, GL_void_return) GL_PROCM(void, gl, MulticastCopyBufferSubDataNV, glMulticastCopyBufferSubDataNV, MULTICASTCOPYBUFFERSUBDATANV, (AND GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size), (readGpu, writeGpuMask, readBuffer, writeBuffer, readOffset, writeOffset, size), &readGpu, GL_void_return) #endif #endif #ifndef NO_GLMULTICASTCOPYIMAGESUBDATANV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MulticastCopyImageSubDataNV, glMulticastCopyImageSubDataNV, MULTICASTCOPYIMAGESUBDATANV, (AND GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth), (srcGpu, dstGpuMask, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth), &srcGpu, GL_void_return) GL_PROCM(void, gl, MulticastCopyImageSubDataNV, glMulticastCopyImageSubDataNV, MULTICASTCOPYIMAGESUBDATANV, (AND GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth), (srcGpu, dstGpuMask, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth), &srcGpu, GL_void_return) #endif #endif #ifndef NO_GLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MulticastFramebufferSampleLocationsfvNV, glMulticastFramebufferSampleLocationsfvNV, MULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNV, (AND GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v), (gpu, framebuffer, start, count, v), &gpu, GL_void_return) GL_PROCM(void, gl, MulticastFramebufferSampleLocationsfvNV, glMulticastFramebufferSampleLocationsfvNV, MULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNV, (AND GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, memptr v), (gpu, framebuffer, start, count, v), &gpu, GL_void_return) #endif #endif #ifndef NO_GLMULTICASTGETQUERYOBJECTI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MulticastGetQueryObjecti64vNV, glMulticastGetQueryObjecti64vNV, MULTICASTGETQUERYOBJECTI64VNV, (AND GLuint gpu, GLuint id, GLenum pname, GLint64 *params), (gpu, id, pname, params), &gpu, GL_void_return) GL_PROCM(void, gl, MulticastGetQueryObjecti64vNV, glMulticastGetQueryObjecti64vNV, MULTICASTGETQUERYOBJECTI64VNV, (AND GLuint gpu, GLuint id, GLenum pname, memptr params), (gpu, id, pname, params), &gpu, GL_void_return) #endif #endif #ifndef NO_GLMULTICASTGETQUERYOBJECTIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MulticastGetQueryObjectivNV, glMulticastGetQueryObjectivNV, MULTICASTGETQUERYOBJECTIVNV, (AND GLuint gpu, GLuint id, GLenum pname, GLint *params), (gpu, id, pname, params), &gpu, GL_void_return) GL_PROCM(void, gl, MulticastGetQueryObjectivNV, glMulticastGetQueryObjectivNV, MULTICASTGETQUERYOBJECTIVNV, (AND GLuint gpu, GLuint id, GLenum pname, memptr params), (gpu, id, pname, params), &gpu, GL_void_return) #endif #endif #ifndef NO_GLMULTICASTGETQUERYOBJECTUI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MulticastGetQueryObjectui64vNV, glMulticastGetQueryObjectui64vNV, MULTICASTGETQUERYOBJECTUI64VNV, (AND GLuint gpu, GLuint id, GLenum pname, GLuint64 *params), (gpu, id, pname, params), &gpu, GL_void_return) GL_PROCM(void, gl, MulticastGetQueryObjectui64vNV, glMulticastGetQueryObjectui64vNV, MULTICASTGETQUERYOBJECTUI64VNV, (AND GLuint gpu, GLuint id, GLenum pname, memptr params), (gpu, id, pname, params), &gpu, GL_void_return) #endif #endif #ifndef NO_GLMULTICASTGETQUERYOBJECTUIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MulticastGetQueryObjectuivNV, glMulticastGetQueryObjectuivNV, MULTICASTGETQUERYOBJECTUIVNV, (AND GLuint gpu, GLuint id, GLenum pname, GLuint *params), (gpu, id, pname, params), &gpu, GL_void_return) GL_PROCM(void, gl, MulticastGetQueryObjectuivNV, glMulticastGetQueryObjectuivNV, MULTICASTGETQUERYOBJECTUIVNV, (AND GLuint gpu, GLuint id, GLenum pname, memptr params), (gpu, id, pname, params), &gpu, GL_void_return) #endif #endif #ifndef NO_GLMULTICASTWAITSYNCNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, MulticastWaitSyncNV, glMulticastWaitSyncNV, MULTICASTWAITSYNCNV, (AND GLuint signalGpu, GLbitfield waitGpuMask), (signalGpu, waitGpuMask), &signalGpu, GL_void_return) GL_PROCM(void, gl, MulticastWaitSyncNV, glMulticastWaitSyncNV, MULTICASTWAITSYNCNV, (AND GLuint signalGpu, GLbitfield waitGpuMask), (signalGpu, waitGpuMask), &signalGpu, GL_void_return) #endif #endif #ifndef NO_GLNAMEDBUFFERDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedBufferData, glNamedBufferData, NAMEDBUFFERDATA, (AND GLuint buffer, GLsizeiptr size, const void *data, GLenum usage), (buffer, size, data, usage), &buffer, GL_void_return) GL_PROCM(void, gl, NamedBufferData, glNamedBufferData, NAMEDBUFFERDATA, (AND GLuint buffer, GLsizeiptr size, memptr data, GLenum usage), (buffer, size, data, usage), &buffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDBUFFERDATAEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedBufferDataEXT, glNamedBufferDataEXT, NAMEDBUFFERDATAEXT, (AND GLuint buffer, GLsizeiptr size, const void *data, GLenum usage), (buffer, size, data, usage), &buffer, GL_void_return) GL_PROCM(void, gl, NamedBufferDataEXT, glNamedBufferDataEXT, NAMEDBUFFERDATAEXT, (AND GLuint buffer, GLsizeiptr size, memptr data, GLenum usage), (buffer, size, data, usage), &buffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDBUFFERPAGECOMMITMENTARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedBufferPageCommitmentARB, glNamedBufferPageCommitmentARB, NAMEDBUFFERPAGECOMMITMENTARB, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit), (buffer, offset, size, commit), &buffer, GL_void_return) GL_PROCM(void, gl, NamedBufferPageCommitmentARB, glNamedBufferPageCommitmentARB, NAMEDBUFFERPAGECOMMITMENTARB, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit), (buffer, offset, size, commit), &buffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDBUFFERPAGECOMMITMENTEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedBufferPageCommitmentEXT, glNamedBufferPageCommitmentEXT, NAMEDBUFFERPAGECOMMITMENTEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit), (buffer, offset, size, commit), &buffer, GL_void_return) GL_PROCM(void, gl, NamedBufferPageCommitmentEXT, glNamedBufferPageCommitmentEXT, NAMEDBUFFERPAGECOMMITMENTEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit), (buffer, offset, size, commit), &buffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDBUFFERSTORAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedBufferStorage, glNamedBufferStorage, NAMEDBUFFERSTORAGE, (AND GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags), (buffer, size, data, flags), &buffer, GL_void_return) GL_PROCM(void, gl, NamedBufferStorage, glNamedBufferStorage, NAMEDBUFFERSTORAGE, (AND GLuint buffer, GLsizeiptr size, memptr data, GLbitfield flags), (buffer, size, data, flags), &buffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDBUFFERSTORAGEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedBufferStorageEXT, glNamedBufferStorageEXT, NAMEDBUFFERSTORAGEEXT, (AND GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags), (buffer, size, data, flags), &buffer, GL_void_return) GL_PROCM(void, gl, NamedBufferStorageEXT, glNamedBufferStorageEXT, NAMEDBUFFERSTORAGEEXT, (AND GLuint buffer, GLsizeiptr size, memptr data, GLbitfield flags), (buffer, size, data, flags), &buffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDBUFFERSTORAGEEXTERNALEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedBufferStorageExternalEXT, glNamedBufferStorageExternalEXT, NAMEDBUFFERSTORAGEEXTERNALEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags), (buffer, offset, size, clientBuffer, flags), &buffer, GL_void_return) GL_PROCM(void, gl, NamedBufferStorageExternalEXT, glNamedBufferStorageExternalEXT, NAMEDBUFFERSTORAGEEXTERNALEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, memptr clientBuffer, GLbitfield flags), (buffer, offset, size, clientBuffer, flags), &buffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDBUFFERSTORAGEMEMEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedBufferStorageMemEXT, glNamedBufferStorageMemEXT, NAMEDBUFFERSTORAGEMEMEXT, (AND GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset), (buffer, size, memory, offset), &buffer, GL_void_return) GL_PROCM(void, gl, NamedBufferStorageMemEXT, glNamedBufferStorageMemEXT, NAMEDBUFFERSTORAGEMEMEXT, (AND GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset), (buffer, size, memory, offset), &buffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDBUFFERSUBDATA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedBufferSubData, glNamedBufferSubData, NAMEDBUFFERSUBDATA, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data), (buffer, offset, size, data), &buffer, GL_void_return) GL_PROCM(void, gl, NamedBufferSubData, glNamedBufferSubData, NAMEDBUFFERSUBDATA, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, memptr data), (buffer, offset, size, data), &buffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDBUFFERSUBDATAEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedBufferSubDataEXT, glNamedBufferSubDataEXT, NAMEDBUFFERSUBDATAEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data), (buffer, offset, size, data), &buffer, GL_void_return) GL_PROCM(void, gl, NamedBufferSubDataEXT, glNamedBufferSubDataEXT, NAMEDBUFFERSUBDATAEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, memptr data), (buffer, offset, size, data), &buffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDCOPYBUFFERSUBDATAEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedCopyBufferSubDataEXT, glNamedCopyBufferSubDataEXT, NAMEDCOPYBUFFERSUBDATAEXT, (AND GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size), (readBuffer, writeBuffer, readOffset, writeOffset, size), &readBuffer, GL_void_return) GL_PROCM(void, gl, NamedCopyBufferSubDataEXT, glNamedCopyBufferSubDataEXT, NAMEDCOPYBUFFERSUBDATAEXT, (AND GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size), (readBuffer, writeBuffer, readOffset, writeOffset, size), &readBuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERDRAWBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferDrawBuffer, glNamedFramebufferDrawBuffer, NAMEDFRAMEBUFFERDRAWBUFFER, (AND GLuint framebuffer, GLenum buf), (framebuffer, buf), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferDrawBuffer, glNamedFramebufferDrawBuffer, NAMEDFRAMEBUFFERDRAWBUFFER, (AND GLuint framebuffer, GLenum buf), (framebuffer, buf), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERDRAWBUFFERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferDrawBuffers, glNamedFramebufferDrawBuffers, NAMEDFRAMEBUFFERDRAWBUFFERS, (AND GLuint framebuffer, GLsizei n, const GLenum *bufs), (framebuffer, n, bufs), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferDrawBuffers, glNamedFramebufferDrawBuffers, NAMEDFRAMEBUFFERDRAWBUFFERS, (AND GLuint framebuffer, GLsizei n, memptr bufs), (framebuffer, n, bufs), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERPARAMETERI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferParameteri, glNamedFramebufferParameteri, NAMEDFRAMEBUFFERPARAMETERI, (AND GLuint framebuffer, GLenum pname, GLint param), (framebuffer, pname, param), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferParameteri, glNamedFramebufferParameteri, NAMEDFRAMEBUFFERPARAMETERI, (AND GLuint framebuffer, GLenum pname, GLint param), (framebuffer, pname, param), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERPARAMETERIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferParameteriEXT, glNamedFramebufferParameteriEXT, NAMEDFRAMEBUFFERPARAMETERIEXT, (AND GLuint framebuffer, GLenum pname, GLint param), (framebuffer, pname, param), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferParameteriEXT, glNamedFramebufferParameteriEXT, NAMEDFRAMEBUFFERPARAMETERIEXT, (AND GLuint framebuffer, GLenum pname, GLint param), (framebuffer, pname, param), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERREADBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferReadBuffer, glNamedFramebufferReadBuffer, NAMEDFRAMEBUFFERREADBUFFER, (AND GLuint framebuffer, GLenum src), (framebuffer, src), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferReadBuffer, glNamedFramebufferReadBuffer, NAMEDFRAMEBUFFERREADBUFFER, (AND GLuint framebuffer, GLenum src), (framebuffer, src), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERRENDERBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferRenderbuffer, glNamedFramebufferRenderbuffer, NAMEDFRAMEBUFFERRENDERBUFFER, (AND GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (framebuffer, attachment, renderbuffertarget, renderbuffer), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferRenderbuffer, glNamedFramebufferRenderbuffer, NAMEDFRAMEBUFFERRENDERBUFFER, (AND GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (framebuffer, attachment, renderbuffertarget, renderbuffer), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERRENDERBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferRenderbufferEXT, glNamedFramebufferRenderbufferEXT, NAMEDFRAMEBUFFERRENDERBUFFEREXT, (AND GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (framebuffer, attachment, renderbuffertarget, renderbuffer), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferRenderbufferEXT, glNamedFramebufferRenderbufferEXT, NAMEDFRAMEBUFFERRENDERBUFFEREXT, (AND GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (framebuffer, attachment, renderbuffertarget, renderbuffer), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferSampleLocationsfvARB, glNamedFramebufferSampleLocationsfvARB, NAMEDFRAMEBUFFERSAMPLELOCATIONSFVARB, (AND GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v), (framebuffer, start, count, v), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferSampleLocationsfvARB, glNamedFramebufferSampleLocationsfvARB, NAMEDFRAMEBUFFERSAMPLELOCATIONSFVARB, (AND GLuint framebuffer, GLuint start, GLsizei count, memptr v), (framebuffer, start, count, v), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferSampleLocationsfvNV, glNamedFramebufferSampleLocationsfvNV, NAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV, (AND GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v), (framebuffer, start, count, v), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferSampleLocationsfvNV, glNamedFramebufferSampleLocationsfvNV, NAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV, (AND GLuint framebuffer, GLuint start, GLsizei count, memptr v), (framebuffer, start, count, v), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferSamplePositionsfvAMD, glNamedFramebufferSamplePositionsfvAMD, NAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMD, (AND GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values), (framebuffer, numsamples, pixelindex, values), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferSamplePositionsfvAMD, glNamedFramebufferSamplePositionsfvAMD, NAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMD, (AND GLuint framebuffer, GLuint numsamples, GLuint pixelindex, memptr values), (framebuffer, numsamples, pixelindex, values), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERTEXTURE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferTexture, glNamedFramebufferTexture, NAMEDFRAMEBUFFERTEXTURE, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level), (framebuffer, attachment, texture, level), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferTexture, glNamedFramebufferTexture, NAMEDFRAMEBUFFERTEXTURE, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level), (framebuffer, attachment, texture, level), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERTEXTURE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferTexture1DEXT, glNamedFramebufferTexture1DEXT, NAMEDFRAMEBUFFERTEXTURE1DEXT, (AND GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (framebuffer, attachment, textarget, texture, level), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferTexture1DEXT, glNamedFramebufferTexture1DEXT, NAMEDFRAMEBUFFERTEXTURE1DEXT, (AND GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (framebuffer, attachment, textarget, texture, level), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERTEXTURE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferTexture2DEXT, glNamedFramebufferTexture2DEXT, NAMEDFRAMEBUFFERTEXTURE2DEXT, (AND GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (framebuffer, attachment, textarget, texture, level), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferTexture2DEXT, glNamedFramebufferTexture2DEXT, NAMEDFRAMEBUFFERTEXTURE2DEXT, (AND GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (framebuffer, attachment, textarget, texture, level), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERTEXTURE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferTexture3DEXT, glNamedFramebufferTexture3DEXT, NAMEDFRAMEBUFFERTEXTURE3DEXT, (AND GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset), (framebuffer, attachment, textarget, texture, level, zoffset), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferTexture3DEXT, glNamedFramebufferTexture3DEXT, NAMEDFRAMEBUFFERTEXTURE3DEXT, (AND GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset), (framebuffer, attachment, textarget, texture, level, zoffset), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERTEXTUREEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferTextureEXT, glNamedFramebufferTextureEXT, NAMEDFRAMEBUFFERTEXTUREEXT, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level), (framebuffer, attachment, texture, level), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferTextureEXT, glNamedFramebufferTextureEXT, NAMEDFRAMEBUFFERTEXTUREEXT, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level), (framebuffer, attachment, texture, level), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERTEXTUREFACEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferTextureFaceEXT, glNamedFramebufferTextureFaceEXT, NAMEDFRAMEBUFFERTEXTUREFACEEXT, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face), (framebuffer, attachment, texture, level, face), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferTextureFaceEXT, glNamedFramebufferTextureFaceEXT, NAMEDFRAMEBUFFERTEXTUREFACEEXT, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face), (framebuffer, attachment, texture, level, face), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERTEXTURELAYER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferTextureLayer, glNamedFramebufferTextureLayer, NAMEDFRAMEBUFFERTEXTURELAYER, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer), (framebuffer, attachment, texture, level, layer), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferTextureLayer, glNamedFramebufferTextureLayer, NAMEDFRAMEBUFFERTEXTURELAYER, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer), (framebuffer, attachment, texture, level, layer), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDFRAMEBUFFERTEXTURELAYEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedFramebufferTextureLayerEXT, glNamedFramebufferTextureLayerEXT, NAMEDFRAMEBUFFERTEXTURELAYEREXT, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer), (framebuffer, attachment, texture, level, layer), &framebuffer, GL_void_return) GL_PROCM(void, gl, NamedFramebufferTextureLayerEXT, glNamedFramebufferTextureLayerEXT, NAMEDFRAMEBUFFERTEXTURELAYEREXT, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer), (framebuffer, attachment, texture, level, layer), &framebuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDPROGRAMLOCALPARAMETER4DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedProgramLocalParameter4dEXT, glNamedProgramLocalParameter4dEXT, NAMEDPROGRAMLOCALPARAMETER4DEXT, (AND GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (program, target, index, x, y, z, w), &program, GL_void_return) GL_PROCM(void, gl, NamedProgramLocalParameter4dEXT, glNamedProgramLocalParameter4dEXT, NAMEDPROGRAMLOCALPARAMETER4DEXT, (AND GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (program, target, index, x, y, z, w), &program, GL_void_return) #endif #endif #ifndef NO_GLNAMEDPROGRAMLOCALPARAMETER4DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedProgramLocalParameter4dvEXT, glNamedProgramLocalParameter4dvEXT, NAMEDPROGRAMLOCALPARAMETER4DVEXT, (AND GLuint program, GLenum target, GLuint index, const GLdouble *params), (program, target, index, params), &program, GL_void_return) GL_PROCM(void, gl, NamedProgramLocalParameter4dvEXT, glNamedProgramLocalParameter4dvEXT, NAMEDPROGRAMLOCALPARAMETER4DVEXT, (AND GLuint program, GLenum target, GLuint index, memptr params), (program, target, index, params), &program, GL_void_return) #endif #endif #ifndef NO_GLNAMEDPROGRAMLOCALPARAMETER4FEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedProgramLocalParameter4fEXT, glNamedProgramLocalParameter4fEXT, NAMEDPROGRAMLOCALPARAMETER4FEXT, (AND GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (program, target, index, x, y, z, w), &program, GL_void_return) GL_PROCM(void, gl, NamedProgramLocalParameter4fEXT, glNamedProgramLocalParameter4fEXT, NAMEDPROGRAMLOCALPARAMETER4FEXT, (AND GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (program, target, index, x, y, z, w), &program, GL_void_return) #endif #endif #ifndef NO_GLNAMEDPROGRAMLOCALPARAMETER4FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedProgramLocalParameter4fvEXT, glNamedProgramLocalParameter4fvEXT, NAMEDPROGRAMLOCALPARAMETER4FVEXT, (AND GLuint program, GLenum target, GLuint index, const GLfloat *params), (program, target, index, params), &program, GL_void_return) GL_PROCM(void, gl, NamedProgramLocalParameter4fvEXT, glNamedProgramLocalParameter4fvEXT, NAMEDPROGRAMLOCALPARAMETER4FVEXT, (AND GLuint program, GLenum target, GLuint index, memptr params), (program, target, index, params), &program, GL_void_return) #endif #endif #ifndef NO_GLNAMEDPROGRAMLOCALPARAMETERI4IEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedProgramLocalParameterI4iEXT, glNamedProgramLocalParameterI4iEXT, NAMEDPROGRAMLOCALPARAMETERI4IEXT, (AND GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w), (program, target, index, x, y, z, w), &program, GL_void_return) GL_PROCM(void, gl, NamedProgramLocalParameterI4iEXT, glNamedProgramLocalParameterI4iEXT, NAMEDPROGRAMLOCALPARAMETERI4IEXT, (AND GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w), (program, target, index, x, y, z, w), &program, GL_void_return) #endif #endif #ifndef NO_GLNAMEDPROGRAMLOCALPARAMETERI4IVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedProgramLocalParameterI4ivEXT, glNamedProgramLocalParameterI4ivEXT, NAMEDPROGRAMLOCALPARAMETERI4IVEXT, (AND GLuint program, GLenum target, GLuint index, const GLint *params), (program, target, index, params), &program, GL_void_return) GL_PROCM(void, gl, NamedProgramLocalParameterI4ivEXT, glNamedProgramLocalParameterI4ivEXT, NAMEDPROGRAMLOCALPARAMETERI4IVEXT, (AND GLuint program, GLenum target, GLuint index, memptr params), (program, target, index, params), &program, GL_void_return) #endif #endif #ifndef NO_GLNAMEDPROGRAMLOCALPARAMETERI4UIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedProgramLocalParameterI4uiEXT, glNamedProgramLocalParameterI4uiEXT, NAMEDPROGRAMLOCALPARAMETERI4UIEXT, (AND GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (program, target, index, x, y, z, w), &program, GL_void_return) GL_PROCM(void, gl, NamedProgramLocalParameterI4uiEXT, glNamedProgramLocalParameterI4uiEXT, NAMEDPROGRAMLOCALPARAMETERI4UIEXT, (AND GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (program, target, index, x, y, z, w), &program, GL_void_return) #endif #endif #ifndef NO_GLNAMEDPROGRAMLOCALPARAMETERI4UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedProgramLocalParameterI4uivEXT, glNamedProgramLocalParameterI4uivEXT, NAMEDPROGRAMLOCALPARAMETERI4UIVEXT, (AND GLuint program, GLenum target, GLuint index, const GLuint *params), (program, target, index, params), &program, GL_void_return) GL_PROCM(void, gl, NamedProgramLocalParameterI4uivEXT, glNamedProgramLocalParameterI4uivEXT, NAMEDPROGRAMLOCALPARAMETERI4UIVEXT, (AND GLuint program, GLenum target, GLuint index, memptr params), (program, target, index, params), &program, GL_void_return) #endif #endif #ifndef NO_GLNAMEDPROGRAMLOCALPARAMETERS4FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedProgramLocalParameters4fvEXT, glNamedProgramLocalParameters4fvEXT, NAMEDPROGRAMLOCALPARAMETERS4FVEXT, (AND GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params), (program, target, index, count, params), &program, GL_void_return) GL_PROCM(void, gl, NamedProgramLocalParameters4fvEXT, glNamedProgramLocalParameters4fvEXT, NAMEDPROGRAMLOCALPARAMETERS4FVEXT, (AND GLuint program, GLenum target, GLuint index, GLsizei count, memptr params), (program, target, index, count, params), &program, GL_void_return) #endif #endif #ifndef NO_GLNAMEDPROGRAMLOCALPARAMETERSI4IVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedProgramLocalParametersI4ivEXT, glNamedProgramLocalParametersI4ivEXT, NAMEDPROGRAMLOCALPARAMETERSI4IVEXT, (AND GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params), (program, target, index, count, params), &program, GL_void_return) GL_PROCM(void, gl, NamedProgramLocalParametersI4ivEXT, glNamedProgramLocalParametersI4ivEXT, NAMEDPROGRAMLOCALPARAMETERSI4IVEXT, (AND GLuint program, GLenum target, GLuint index, GLsizei count, memptr params), (program, target, index, count, params), &program, GL_void_return) #endif #endif #ifndef NO_GLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedProgramLocalParametersI4uivEXT, glNamedProgramLocalParametersI4uivEXT, NAMEDPROGRAMLOCALPARAMETERSI4UIVEXT, (AND GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params), (program, target, index, count, params), &program, GL_void_return) GL_PROCM(void, gl, NamedProgramLocalParametersI4uivEXT, glNamedProgramLocalParametersI4uivEXT, NAMEDPROGRAMLOCALPARAMETERSI4UIVEXT, (AND GLuint program, GLenum target, GLuint index, GLsizei count, memptr params), (program, target, index, count, params), &program, GL_void_return) #endif #endif #ifndef NO_GLNAMEDPROGRAMSTRINGEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedProgramStringEXT, glNamedProgramStringEXT, NAMEDPROGRAMSTRINGEXT, (AND GLuint program, GLenum target, GLenum format, GLsizei len, const void *string), (program, target, format, len, string), &program, GL_void_return) GL_PROCM(void, gl, NamedProgramStringEXT, glNamedProgramStringEXT, NAMEDPROGRAMSTRINGEXT, (AND GLuint program, GLenum target, GLenum format, GLsizei len, memptr string), (program, target, format, len, string), &program, GL_void_return) #endif #endif #ifndef NO_GLNAMEDRENDERBUFFERSTORAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedRenderbufferStorage, glNamedRenderbufferStorage, NAMEDRENDERBUFFERSTORAGE, (AND GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, internalformat, width, height), &renderbuffer, GL_void_return) GL_PROCM(void, gl, NamedRenderbufferStorage, glNamedRenderbufferStorage, NAMEDRENDERBUFFERSTORAGE, (AND GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, internalformat, width, height), &renderbuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDRENDERBUFFERSTORAGEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedRenderbufferStorageEXT, glNamedRenderbufferStorageEXT, NAMEDRENDERBUFFERSTORAGEEXT, (AND GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, internalformat, width, height), &renderbuffer, GL_void_return) GL_PROCM(void, gl, NamedRenderbufferStorageEXT, glNamedRenderbufferStorageEXT, NAMEDRENDERBUFFERSTORAGEEXT, (AND GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, internalformat, width, height), &renderbuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedRenderbufferStorageMultisample, glNamedRenderbufferStorageMultisample, NAMEDRENDERBUFFERSTORAGEMULTISAMPLE, (AND GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, samples, internalformat, width, height), &renderbuffer, GL_void_return) GL_PROCM(void, gl, NamedRenderbufferStorageMultisample, glNamedRenderbufferStorageMultisample, NAMEDRENDERBUFFERSTORAGEMULTISAMPLE, (AND GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, samples, internalformat, width, height), &renderbuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedRenderbufferStorageMultisampleCoverageEXT, glNamedRenderbufferStorageMultisampleCoverageEXT, NAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXT, (AND GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, coverageSamples, colorSamples, internalformat, width, height), &renderbuffer, GL_void_return) GL_PROCM(void, gl, NamedRenderbufferStorageMultisampleCoverageEXT, glNamedRenderbufferStorageMultisampleCoverageEXT, NAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXT, (AND GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, coverageSamples, colorSamples, internalformat, width, height), &renderbuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedRenderbufferStorageMultisampleEXT, glNamedRenderbufferStorageMultisampleEXT, NAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXT, (AND GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, samples, internalformat, width, height), &renderbuffer, GL_void_return) GL_PROCM(void, gl, NamedRenderbufferStorageMultisampleEXT, glNamedRenderbufferStorageMultisampleEXT, NAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXT, (AND GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, samples, internalformat, width, height), &renderbuffer, GL_void_return) #endif #endif #ifndef NO_GLNAMEDSTRINGARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NamedStringARB, glNamedStringARB, NAMEDSTRINGARB, (AND GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string), (type, namelen, name, stringlen, string), &type, GL_void_return) GL_PROCM(void, gl, NamedStringARB, glNamedStringARB, NAMEDSTRINGARB, (AND GLenum type, GLint namelen, memptr name, GLint stringlen, memptr string), (type, namelen, name, stringlen, string), &type, GL_void_return) #endif #endif #ifndef NO_GLNEWLIST GL_PROC(void, gl, NewList, glNewList, NEWLIST, (AND GLuint list, GLenum mode), (list, mode), &list, GL_void_return) GL_PROCM(void, gl, NewList, glNewList, NEWLIST, (AND GLuint list, GLenum mode), (list, mode), &list, GL_void_return) #endif #ifndef NO_GLNEWOBJECTBUFFERATI #if !defined(TINYGL_ONLY) GL_PROC(GLuint, gl, NewObjectBufferATI, glNewObjectBufferATI, NEWOBJECTBUFFERATI, (AND GLsizei size, const void *pointer, GLenum usage), (size, pointer, usage), &size, return (GLuint)) GL_PROCM(GLuint, gl, NewObjectBufferATI, glNewObjectBufferATI, NEWOBJECTBUFFERATI, (AND GLsizei size, memptr pointer, GLenum usage), (size, pointer, usage), &size, return (GLuint)) #endif #endif #ifndef NO_GLNEWTRACEMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NewTraceMESA, glNewTraceMESA, NEWTRACEMESA, (AND GLbitfield mask, const GLubyte *traceName), (mask, traceName), &mask, GL_void_return) GL_PROCM(void, gl, NewTraceMESA, glNewTraceMESA, NEWTRACEMESA, (AND GLbitfield mask, memptr traceName), (mask, traceName), &mask, GL_void_return) #endif #endif #ifndef NO_GLNORMAL3B #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Normal3b, glNormal3b, NORMAL3B, (AND GLbyte32 nx, GLbyte32 ny, GLbyte32 nz), (nx, ny, nz), &nx, GL_void_return) GL_PROCM(void, gl, Normal3b, glNormal3b, NORMAL3B, (AND GLbyte32 nx, GLbyte32 ny, GLbyte32 nz), (nx, ny, nz), &nx, GL_void_return) #endif #endif #ifndef NO_GLNORMAL3BV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Normal3bv, glNormal3bv, NORMAL3BV, (AND const GLbyte *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Normal3bv, glNormal3bv, NORMAL3BV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLNORMAL3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Normal3d, glNormal3d, NORMAL3D, (AND GLdouble nx, GLdouble ny, GLdouble nz), (nx, ny, nz), &nx, GL_void_return) GL_PROCM(void, gl, Normal3d, glNormal3d, NORMAL3D, (AND GLdouble nx, GLdouble ny, GLdouble nz), (nx, ny, nz), &nx, GL_void_return) #endif #endif #ifndef NO_GLNORMAL3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Normal3dv, glNormal3dv, NORMAL3DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Normal3dv, glNormal3dv, NORMAL3DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLNORMAL3F GL_PROC(void, gl, Normal3f, glNormal3f, NORMAL3F, (AND GLfloat nx, GLfloat ny, GLfloat nz), (nx, ny, nz), &nx, GL_void_return) GL_PROCM(void, gl, Normal3f, glNormal3f, NORMAL3F, (AND GLfloat nx, GLfloat ny, GLfloat nz), (nx, ny, nz), &nx, GL_void_return) #endif #ifndef NO_GLNORMAL3FVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Normal3fVertex3fSUN, glNormal3fVertex3fSUN, NORMAL3FVERTEX3FSUN, (AND GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (nx, ny, nz, x, y, z), &nx, GL_void_return) GL_PROCM(void, gl, Normal3fVertex3fSUN, glNormal3fVertex3fSUN, NORMAL3FVERTEX3FSUN, (AND GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (nx, ny, nz, x, y, z), &nx, GL_void_return) #endif #endif #ifndef NO_GLNORMAL3FVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Normal3fVertex3fvSUN, glNormal3fVertex3fvSUN, NORMAL3FVERTEX3FVSUN, (AND const GLfloat *n, const GLfloat *v), (n, v), &n, GL_void_return) GL_PROCM(void, gl, Normal3fVertex3fvSUN, glNormal3fVertex3fvSUN, NORMAL3FVERTEX3FVSUN, (AND memptr n, memptr v), (n, v), &n, GL_void_return) #endif #endif #ifndef NO_GLNORMAL3FV GL_PROC(void, gl, Normal3fv, glNormal3fv, NORMAL3FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Normal3fv, glNormal3fv, NORMAL3FV, (AND memptr v), (v), &v, GL_void_return) #endif #ifndef NO_GLNORMAL3HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Normal3hNV, glNormal3hNV, NORMAL3HNV, (AND GLhalfNV32 nx, GLhalfNV32 ny, GLhalfNV32 nz), (nx, ny, nz), &nx, GL_void_return) GL_PROCM(void, gl, Normal3hNV, glNormal3hNV, NORMAL3HNV, (AND GLhalfNV32 nx, GLhalfNV32 ny, GLhalfNV32 nz), (nx, ny, nz), &nx, GL_void_return) #endif #endif #ifndef NO_GLNORMAL3HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Normal3hvNV, glNormal3hvNV, NORMAL3HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Normal3hvNV, glNormal3hvNV, NORMAL3HVNV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLNORMAL3I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Normal3i, glNormal3i, NORMAL3I, (AND GLint nx, GLint ny, GLint nz), (nx, ny, nz), &nx, GL_void_return) GL_PROCM(void, gl, Normal3i, glNormal3i, NORMAL3I, (AND GLint nx, GLint ny, GLint nz), (nx, ny, nz), &nx, GL_void_return) #endif #endif #ifndef NO_GLNORMAL3IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Normal3iv, glNormal3iv, NORMAL3IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Normal3iv, glNormal3iv, NORMAL3IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLNORMAL3S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Normal3s, glNormal3s, NORMAL3S, (AND GLshort32 nx, GLshort32 ny, GLshort32 nz), (nx, ny, nz), &nx, GL_void_return) GL_PROCM(void, gl, Normal3s, glNormal3s, NORMAL3S, (AND GLshort32 nx, GLshort32 ny, GLshort32 nz), (nx, ny, nz), &nx, GL_void_return) #endif #endif #ifndef NO_GLNORMAL3SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Normal3sv, glNormal3sv, NORMAL3SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Normal3sv, glNormal3sv, NORMAL3SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLNORMAL3XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Normal3xOES, glNormal3xOES, NORMAL3XOES, (AND GLfixed nx, GLfixed ny, GLfixed nz), (nx, ny, nz), &nx, GL_void_return) GL_PROCM(void, gl, Normal3xOES, glNormal3xOES, NORMAL3XOES, (AND GLfixed nx, GLfixed ny, GLfixed nz), (nx, ny, nz), &nx, GL_void_return) #endif #endif #ifndef NO_GLNORMAL3XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Normal3xvOES, glNormal3xvOES, NORMAL3XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, Normal3xvOES, glNormal3xvOES, NORMAL3XVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLNORMALFORMATNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalFormatNV, glNormalFormatNV, NORMALFORMATNV, (AND GLenum type, GLsizei stride), (type, stride), &type, GL_void_return) GL_PROCM(void, gl, NormalFormatNV, glNormalFormatNV, NORMALFORMATNV, (AND GLenum type, GLsizei stride), (type, stride), &type, GL_void_return) #endif #endif #ifndef NO_GLNORMALP3UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalP3ui, glNormalP3ui, NORMALP3UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) GL_PROCM(void, gl, NormalP3ui, glNormalP3ui, NORMALP3UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) #endif #endif #ifndef NO_GLNORMALP3UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalP3uiv, glNormalP3uiv, NORMALP3UIV, (AND GLenum type, const GLuint *coords), (type, coords), &type, GL_void_return) GL_PROCM(void, gl, NormalP3uiv, glNormalP3uiv, NORMALP3UIV, (AND GLenum type, memptr coords), (type, coords), &type, GL_void_return) #endif #endif #ifndef NO_GLNORMALPOINTER GL_PROC(void, gl, NormalPointer, glNormalPointer, NORMALPOINTER, (AND GLenum type, GLsizei stride, const GLvoid *pointer), (type, stride, pointer), &type, GL_void_return) GL_PROCM(void, gl, NormalPointer, glNormalPointer, NORMALPOINTER, (AND GLenum type, GLsizei stride, memptr pointer), (type, stride, pointer), &type, GL_void_return) #endif #ifndef NO_GLNORMALPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalPointerEXT, glNormalPointerEXT, NORMALPOINTEREXT, (AND GLenum type, GLsizei stride, GLsizei count, const void *pointer), (type, stride, count, pointer), &type, GL_void_return) GL_PROCM(void, gl, NormalPointerEXT, glNormalPointerEXT, NORMALPOINTEREXT, (AND GLenum type, GLsizei stride, GLsizei count, memptr pointer), (type, stride, count, pointer), &type, GL_void_return) #endif #endif #ifndef NO_GLNORMALPOINTERLISTIBM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalPointerListIBM, glNormalPointerListIBM, NORMALPOINTERLISTIBM, (AND GLenum type, GLint stride, const void * *pointer, GLint ptrstride), (type, stride, pointer, ptrstride), &type, GL_void_return) GL_PROCM(void, gl, NormalPointerListIBM, glNormalPointerListIBM, NORMALPOINTERLISTIBM, (AND GLenum type, GLint stride, memptr pointer, GLint ptrstride), (type, stride, pointer, ptrstride), &type, GL_void_return) #endif #endif #ifndef NO_GLNORMALPOINTERVINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalPointervINTEL, glNormalPointervINTEL, NORMALPOINTERVINTEL, (AND GLenum type, const void * *pointer), (type, pointer), &type, GL_void_return) GL_PROCM(void, gl, NormalPointervINTEL, glNormalPointervINTEL, NORMALPOINTERVINTEL, (AND GLenum type, memptr pointer), (type, pointer), &type, GL_void_return) #endif #endif #ifndef NO_GLNORMALSTREAM3BATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalStream3bATI, glNormalStream3bATI, NORMALSTREAM3BATI, (AND GLenum stream, GLbyte32 nx, GLbyte32 ny, GLbyte32 nz), (stream, nx, ny, nz), &stream, GL_void_return) GL_PROCM(void, gl, NormalStream3bATI, glNormalStream3bATI, NORMALSTREAM3BATI, (AND GLenum stream, GLbyte32 nx, GLbyte32 ny, GLbyte32 nz), (stream, nx, ny, nz), &stream, GL_void_return) #endif #endif #ifndef NO_GLNORMALSTREAM3BVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalStream3bvATI, glNormalStream3bvATI, NORMALSTREAM3BVATI, (AND GLenum stream, const GLbyte *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, NormalStream3bvATI, glNormalStream3bvATI, NORMALSTREAM3BVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLNORMALSTREAM3DATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalStream3dATI, glNormalStream3dATI, NORMALSTREAM3DATI, (AND GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz), (stream, nx, ny, nz), &stream, GL_void_return) GL_PROCM(void, gl, NormalStream3dATI, glNormalStream3dATI, NORMALSTREAM3DATI, (AND GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz), (stream, nx, ny, nz), &stream, GL_void_return) #endif #endif #ifndef NO_GLNORMALSTREAM3DVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalStream3dvATI, glNormalStream3dvATI, NORMALSTREAM3DVATI, (AND GLenum stream, const GLdouble *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, NormalStream3dvATI, glNormalStream3dvATI, NORMALSTREAM3DVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLNORMALSTREAM3FATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalStream3fATI, glNormalStream3fATI, NORMALSTREAM3FATI, (AND GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz), (stream, nx, ny, nz), &stream, GL_void_return) GL_PROCM(void, gl, NormalStream3fATI, glNormalStream3fATI, NORMALSTREAM3FATI, (AND GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz), (stream, nx, ny, nz), &stream, GL_void_return) #endif #endif #ifndef NO_GLNORMALSTREAM3FVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalStream3fvATI, glNormalStream3fvATI, NORMALSTREAM3FVATI, (AND GLenum stream, const GLfloat *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, NormalStream3fvATI, glNormalStream3fvATI, NORMALSTREAM3FVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLNORMALSTREAM3IATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalStream3iATI, glNormalStream3iATI, NORMALSTREAM3IATI, (AND GLenum stream, GLint nx, GLint ny, GLint nz), (stream, nx, ny, nz), &stream, GL_void_return) GL_PROCM(void, gl, NormalStream3iATI, glNormalStream3iATI, NORMALSTREAM3IATI, (AND GLenum stream, GLint nx, GLint ny, GLint nz), (stream, nx, ny, nz), &stream, GL_void_return) #endif #endif #ifndef NO_GLNORMALSTREAM3IVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalStream3ivATI, glNormalStream3ivATI, NORMALSTREAM3IVATI, (AND GLenum stream, const GLint *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, NormalStream3ivATI, glNormalStream3ivATI, NORMALSTREAM3IVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLNORMALSTREAM3SATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalStream3sATI, glNormalStream3sATI, NORMALSTREAM3SATI, (AND GLenum stream, GLshort32 nx, GLshort32 ny, GLshort32 nz), (stream, nx, ny, nz), &stream, GL_void_return) GL_PROCM(void, gl, NormalStream3sATI, glNormalStream3sATI, NORMALSTREAM3SATI, (AND GLenum stream, GLshort32 nx, GLshort32 ny, GLshort32 nz), (stream, nx, ny, nz), &stream, GL_void_return) #endif #endif #ifndef NO_GLNORMALSTREAM3SVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, NormalStream3svATI, glNormalStream3svATI, NORMALSTREAM3SVATI, (AND GLenum stream, const GLshort *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, NormalStream3svATI, glNormalStream3svATI, NORMALSTREAM3SVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLOBJECTLABEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ObjectLabel, glObjectLabel, OBJECTLABEL, (AND GLenum identifier, GLuint name, GLsizei length, const GLchar *label), (identifier, name, length, label), &identifier, GL_void_return) GL_PROCM(void, gl, ObjectLabel, glObjectLabel, OBJECTLABEL, (AND GLenum identifier, GLuint name, GLsizei length, memptr label), (identifier, name, length, label), &identifier, GL_void_return) #endif #endif #ifndef NO_GLOBJECTPTRLABEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ObjectPtrLabel, glObjectPtrLabel, OBJECTPTRLABEL, (AND const void *ptr, GLsizei length, const GLchar *label), (ptr, length, label), &ptr, GL_void_return) GL_PROCM(void, gl, ObjectPtrLabel, glObjectPtrLabel, OBJECTPTRLABEL, (AND memptr ptr, GLsizei length, memptr label), (ptr, length, label), &ptr, GL_void_return) #endif #endif #ifndef NO_GLOBJECTPURGEABLEAPPLE #if !defined(TINYGL_ONLY) GL_PROC(GLenum, gl, ObjectPurgeableAPPLE, glObjectPurgeableAPPLE, OBJECTPURGEABLEAPPLE, (AND GLenum objectType, GLuint name, GLenum option), (objectType, name, option), &objectType, return (GLenum)) GL_PROCM(GLenum, gl, ObjectPurgeableAPPLE, glObjectPurgeableAPPLE, OBJECTPURGEABLEAPPLE, (AND GLenum objectType, GLuint name, GLenum option), (objectType, name, option), &objectType, return (GLenum)) #endif #endif #ifndef NO_GLOBJECTUNPURGEABLEAPPLE #if !defined(TINYGL_ONLY) GL_PROC(GLenum, gl, ObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, OBJECTUNPURGEABLEAPPLE, (AND GLenum objectType, GLuint name, GLenum option), (objectType, name, option), &objectType, return (GLenum)) GL_PROCM(GLenum, gl, ObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, OBJECTUNPURGEABLEAPPLE, (AND GLenum objectType, GLuint name, GLenum option), (objectType, name, option), &objectType, return (GLenum)) #endif #endif #ifndef NO_GLORTHO #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Ortho, glOrthod, ORTHO, (AND GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (left, right, bottom, top, zNear, zFar), &left, GL_void_return) GL_PROCM(void, gl, Ortho, glOrthod, ORTHO, (AND GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (left, right, bottom, top, zNear, zFar), &left, GL_void_return) #endif #endif #ifndef NO_GLORTHOFOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, OrthofOES, glOrthofOES, ORTHOFOES, (AND GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f), (l, r, b, t, n, f), &l, GL_void_return) GL_PROCM(void, gl, OrthofOES, glOrthofOES, ORTHOFOES, (AND GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f), (l, r, b, t, n, f), &l, GL_void_return) #endif #endif #ifndef NO_GLORTHOXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, OrthoxOES, glOrthoxOES, ORTHOXOES, (AND GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f), (l, r, b, t, n, f), &l, GL_void_return) GL_PROCM(void, gl, OrthoxOES, glOrthoxOES, ORTHOXOES, (AND GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f), (l, r, b, t, n, f), &l, GL_void_return) #endif #endif #ifndef NO_GLPNTRIANGLESFATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PNTrianglesfATI, glPNTrianglesfATI, PNTRIANGLESFATI, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PNTrianglesfATI, glPNTrianglesfATI, PNTRIANGLESFATI, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPNTRIANGLESIATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PNTrianglesiATI, glPNTrianglesiATI, PNTRIANGLESIATI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PNTrianglesiATI, glPNTrianglesiATI, PNTRIANGLESIATI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPASSTEXCOORDATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PassTexCoordATI, glPassTexCoordATI, PASSTEXCOORDATI, (AND GLuint dst, GLuint coord, GLenum swizzle), (dst, coord, swizzle), &dst, GL_void_return) GL_PROCM(void, gl, PassTexCoordATI, glPassTexCoordATI, PASSTEXCOORDATI, (AND GLuint dst, GLuint coord, GLenum swizzle), (dst, coord, swizzle), &dst, GL_void_return) #endif #endif #ifndef NO_GLPASSTHROUGH #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PassThrough, glPassThrough, PASSTHROUGH, (AND GLfloat token), (token), &token, GL_void_return) GL_PROCM(void, gl, PassThrough, glPassThrough, PASSTHROUGH, (AND GLfloat token), (token), &token, GL_void_return) #endif #endif #ifndef NO_GLPASSTHROUGHXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PassThroughxOES, glPassThroughxOES, PASSTHROUGHXOES, (AND GLfixed token), (token), &token, GL_void_return) GL_PROCM(void, gl, PassThroughxOES, glPassThroughxOES, PASSTHROUGHXOES, (AND GLfixed token), (token), &token, GL_void_return) #endif #endif #ifndef NO_GLPATCHPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PatchParameterfv, glPatchParameterfv, PATCHPARAMETERFV, (AND GLenum pname, const GLfloat *values), (pname, values), &pname, GL_void_return) GL_PROCM(void, gl, PatchParameterfv, glPatchParameterfv, PATCHPARAMETERFV, (AND GLenum pname, memptr values), (pname, values), &pname, GL_void_return) #endif #endif #ifndef NO_GLPATCHPARAMETERI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PatchParameteri, glPatchParameteri, PATCHPARAMETERI, (AND GLenum pname, GLint value), (pname, value), &pname, GL_void_return) GL_PROCM(void, gl, PatchParameteri, glPatchParameteri, PATCHPARAMETERI, (AND GLenum pname, GLint value), (pname, value), &pname, GL_void_return) #endif #endif #ifndef NO_GLPATHCOLORGENNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathColorGenNV, glPathColorGenNV, PATHCOLORGENNV, (AND GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs), (color, genMode, colorFormat, coeffs), &color, GL_void_return) GL_PROCM(void, gl, PathColorGenNV, glPathColorGenNV, PATHCOLORGENNV, (AND GLenum color, GLenum genMode, GLenum colorFormat, memptr coeffs), (color, genMode, colorFormat, coeffs), &color, GL_void_return) #endif #endif #ifndef NO_GLPATHCOMMANDSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathCommandsNV, glPathCommandsNV, PATHCOMMANDSNV, (AND GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords), (path, numCommands, commands, numCoords, coordType, coords), &path, GL_void_return) GL_PROCM(void, gl, PathCommandsNV, glPathCommandsNV, PATHCOMMANDSNV, (AND GLuint path, GLsizei numCommands, memptr commands, GLsizei numCoords, GLenum coordType, memptr coords), (path, numCommands, commands, numCoords, coordType, coords), &path, GL_void_return) #endif #endif #ifndef NO_GLPATHCOORDSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathCoordsNV, glPathCoordsNV, PATHCOORDSNV, (AND GLuint path, GLsizei numCoords, GLenum coordType, const void *coords), (path, numCoords, coordType, coords), &path, GL_void_return) GL_PROCM(void, gl, PathCoordsNV, glPathCoordsNV, PATHCOORDSNV, (AND GLuint path, GLsizei numCoords, GLenum coordType, memptr coords), (path, numCoords, coordType, coords), &path, GL_void_return) #endif #endif #ifndef NO_GLPATHCOVERDEPTHFUNCNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathCoverDepthFuncNV, glPathCoverDepthFuncNV, PATHCOVERDEPTHFUNCNV, (AND GLenum func), (func), &func, GL_void_return) GL_PROCM(void, gl, PathCoverDepthFuncNV, glPathCoverDepthFuncNV, PATHCOVERDEPTHFUNCNV, (AND GLenum func), (func), &func, GL_void_return) #endif #endif #ifndef NO_GLPATHDASHARRAYNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathDashArrayNV, glPathDashArrayNV, PATHDASHARRAYNV, (AND GLuint path, GLsizei dashCount, const GLfloat *dashArray), (path, dashCount, dashArray), &path, GL_void_return) GL_PROCM(void, gl, PathDashArrayNV, glPathDashArrayNV, PATHDASHARRAYNV, (AND GLuint path, GLsizei dashCount, memptr dashArray), (path, dashCount, dashArray), &path, GL_void_return) #endif #endif #ifndef NO_GLPATHFOGGENNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathFogGenNV, glPathFogGenNV, PATHFOGGENNV, (AND GLenum genMode), (genMode), &genMode, GL_void_return) GL_PROCM(void, gl, PathFogGenNV, glPathFogGenNV, PATHFOGGENNV, (AND GLenum genMode), (genMode), &genMode, GL_void_return) #endif #endif #ifndef NO_GLPATHGLYPHINDEXARRAYNV #if !defined(TINYGL_ONLY) GL_PROC(GLenum, gl, PathGlyphIndexArrayNV, glPathGlyphIndexArrayNV, PATHGLYPHINDEXARRAYNV, (AND GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale), (firstPathName, fontTarget, fontName, fontStyle, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale), &firstPathName, return (GLenum)) GL_PROCM(GLenum, gl, PathGlyphIndexArrayNV, glPathGlyphIndexArrayNV, PATHGLYPHINDEXARRAYNV, (AND GLuint firstPathName, GLenum fontTarget, memptr fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale), (firstPathName, fontTarget, fontName, fontStyle, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale), &firstPathName, return (GLenum)) #endif #endif #ifndef NO_GLPATHGLYPHINDEXRANGENV #if !defined(TINYGL_ONLY) GL_PROC(GLenum, gl, PathGlyphIndexRangeNV, glPathGlyphIndexRangeNV, PATHGLYPHINDEXRANGENV, (AND GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount), (fontTarget, fontName, fontStyle, pathParameterTemplate, emScale, baseAndCount), &fontTarget, return (GLenum)) GL_PROCM(GLenum, gl, PathGlyphIndexRangeNV, glPathGlyphIndexRangeNV, PATHGLYPHINDEXRANGENV, (AND GLenum fontTarget, memptr fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, memptr baseAndCount), (fontTarget, fontName, fontStyle, pathParameterTemplate, emScale, baseAndCount), &fontTarget, return (GLenum)) #endif #endif #ifndef NO_GLPATHGLYPHRANGENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathGlyphRangeNV, glPathGlyphRangeNV, PATHGLYPHRANGENV, (AND GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale), (firstPathName, fontTarget, fontName, fontStyle, firstGlyph, numGlyphs, handleMissingGlyphs, pathParameterTemplate, emScale), &firstPathName, GL_void_return) GL_PROCM(void, gl, PathGlyphRangeNV, glPathGlyphRangeNV, PATHGLYPHRANGENV, (AND GLuint firstPathName, GLenum fontTarget, memptr fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale), (firstPathName, fontTarget, fontName, fontStyle, firstGlyph, numGlyphs, handleMissingGlyphs, pathParameterTemplate, emScale), &firstPathName, GL_void_return) #endif #endif #ifndef NO_GLPATHGLYPHSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathGlyphsNV, glPathGlyphsNV, PATHGLYPHSNV, (AND GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale), (firstPathName, fontTarget, fontName, fontStyle, numGlyphs, type, charcodes, handleMissingGlyphs, pathParameterTemplate, emScale), &firstPathName, GL_void_return) GL_PROCM(void, gl, PathGlyphsNV, glPathGlyphsNV, PATHGLYPHSNV, (AND GLuint firstPathName, GLenum fontTarget, memptr fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, memptr charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale), (firstPathName, fontTarget, fontName, fontStyle, numGlyphs, type, charcodes, handleMissingGlyphs, pathParameterTemplate, emScale), &firstPathName, GL_void_return) #endif #endif #ifndef NO_GLPATHMEMORYGLYPHINDEXARRAYNV #if !defined(TINYGL_ONLY) GL_PROC(GLenum, gl, PathMemoryGlyphIndexArrayNV, glPathMemoryGlyphIndexArrayNV, PATHMEMORYGLYPHINDEXARRAYNV, (AND GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale), (firstPathName, fontTarget, fontSize, fontData, faceIndex, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale), &firstPathName, return (GLenum)) GL_PROCM(GLenum, gl, PathMemoryGlyphIndexArrayNV, glPathMemoryGlyphIndexArrayNV, PATHMEMORYGLYPHINDEXARRAYNV, (AND GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, memptr fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale), (firstPathName, fontTarget, fontSize, fontData, faceIndex, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale), &firstPathName, return (GLenum)) #endif #endif #ifndef NO_GLPATHPARAMETERFNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathParameterfNV, glPathParameterfNV, PATHPARAMETERFNV, (AND GLuint path, GLenum pname, GLfloat value), (path, pname, value), &path, GL_void_return) GL_PROCM(void, gl, PathParameterfNV, glPathParameterfNV, PATHPARAMETERFNV, (AND GLuint path, GLenum pname, GLfloat value), (path, pname, value), &path, GL_void_return) #endif #endif #ifndef NO_GLPATHPARAMETERFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathParameterfvNV, glPathParameterfvNV, PATHPARAMETERFVNV, (AND GLuint path, GLenum pname, const GLfloat *value), (path, pname, value), &path, GL_void_return) GL_PROCM(void, gl, PathParameterfvNV, glPathParameterfvNV, PATHPARAMETERFVNV, (AND GLuint path, GLenum pname, memptr value), (path, pname, value), &path, GL_void_return) #endif #endif #ifndef NO_GLPATHPARAMETERINV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathParameteriNV, glPathParameteriNV, PATHPARAMETERINV, (AND GLuint path, GLenum pname, GLint value), (path, pname, value), &path, GL_void_return) GL_PROCM(void, gl, PathParameteriNV, glPathParameteriNV, PATHPARAMETERINV, (AND GLuint path, GLenum pname, GLint value), (path, pname, value), &path, GL_void_return) #endif #endif #ifndef NO_GLPATHPARAMETERIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathParameterivNV, glPathParameterivNV, PATHPARAMETERIVNV, (AND GLuint path, GLenum pname, const GLint *value), (path, pname, value), &path, GL_void_return) GL_PROCM(void, gl, PathParameterivNV, glPathParameterivNV, PATHPARAMETERIVNV, (AND GLuint path, GLenum pname, memptr value), (path, pname, value), &path, GL_void_return) #endif #endif #ifndef NO_GLPATHSTENCILDEPTHOFFSETNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathStencilDepthOffsetNV, glPathStencilDepthOffsetNV, PATHSTENCILDEPTHOFFSETNV, (AND GLfloat factor, GLfloat units), (factor, units), &factor, GL_void_return) GL_PROCM(void, gl, PathStencilDepthOffsetNV, glPathStencilDepthOffsetNV, PATHSTENCILDEPTHOFFSETNV, (AND GLfloat factor, GLfloat units), (factor, units), &factor, GL_void_return) #endif #endif #ifndef NO_GLPATHSTENCILFUNCNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathStencilFuncNV, glPathStencilFuncNV, PATHSTENCILFUNCNV, (AND GLenum func, GLint ref, GLuint mask), (func, ref, mask), &func, GL_void_return) GL_PROCM(void, gl, PathStencilFuncNV, glPathStencilFuncNV, PATHSTENCILFUNCNV, (AND GLenum func, GLint ref, GLuint mask), (func, ref, mask), &func, GL_void_return) #endif #endif #ifndef NO_GLPATHSTRINGNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathStringNV, glPathStringNV, PATHSTRINGNV, (AND GLuint path, GLenum format, GLsizei length, const void *pathString), (path, format, length, pathString), &path, GL_void_return) GL_PROCM(void, gl, PathStringNV, glPathStringNV, PATHSTRINGNV, (AND GLuint path, GLenum format, GLsizei length, memptr pathString), (path, format, length, pathString), &path, GL_void_return) #endif #endif #ifndef NO_GLPATHSUBCOMMANDSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathSubCommandsNV, glPathSubCommandsNV, PATHSUBCOMMANDSNV, (AND GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords), (path, commandStart, commandsToDelete, numCommands, commands, numCoords, coordType, coords), &path, GL_void_return) GL_PROCM(void, gl, PathSubCommandsNV, glPathSubCommandsNV, PATHSUBCOMMANDSNV, (AND GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, memptr commands, GLsizei numCoords, GLenum coordType, memptr coords), (path, commandStart, commandsToDelete, numCommands, commands, numCoords, coordType, coords), &path, GL_void_return) #endif #endif #ifndef NO_GLPATHSUBCOORDSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathSubCoordsNV, glPathSubCoordsNV, PATHSUBCOORDSNV, (AND GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords), (path, coordStart, numCoords, coordType, coords), &path, GL_void_return) GL_PROCM(void, gl, PathSubCoordsNV, glPathSubCoordsNV, PATHSUBCOORDSNV, (AND GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, memptr coords), (path, coordStart, numCoords, coordType, coords), &path, GL_void_return) #endif #endif #ifndef NO_GLPATHTEXGENNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PathTexGenNV, glPathTexGenNV, PATHTEXGENNV, (AND GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs), (texCoordSet, genMode, components, coeffs), &texCoordSet, GL_void_return) GL_PROCM(void, gl, PathTexGenNV, glPathTexGenNV, PATHTEXGENNV, (AND GLenum texCoordSet, GLenum genMode, GLint components, memptr coeffs), (texCoordSet, genMode, components, coeffs), &texCoordSet, GL_void_return) #endif #endif #ifndef NO_GLPAUSETRANSFORMFEEDBACK #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PauseTransformFeedback, glPauseTransformFeedback, PAUSETRANSFORMFEEDBACK, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, PauseTransformFeedback, glPauseTransformFeedback, PAUSETRANSFORMFEEDBACK, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLPAUSETRANSFORMFEEDBACKNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PauseTransformFeedbackNV, glPauseTransformFeedbackNV, PAUSETRANSFORMFEEDBACKNV, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, PauseTransformFeedbackNV, glPauseTransformFeedbackNV, PAUSETRANSFORMFEEDBACKNV, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLPIXELDATARANGENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelDataRangeNV, glPixelDataRangeNV, PIXELDATARANGENV, (AND GLenum target, GLsizei length, const void *pointer), (target, length, pointer), &target, GL_void_return) GL_PROCM(void, gl, PixelDataRangeNV, glPixelDataRangeNV, PIXELDATARANGENV, (AND GLenum target, GLsizei length, memptr pointer), (target, length, pointer), &target, GL_void_return) #endif #endif #ifndef NO_GLPIXELMAPFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelMapfv, glPixelMapfv, PIXELMAPFV, (AND GLenum map, GLsizei mapsize, const GLfloat *values), (map, mapsize, values), &map, GL_void_return) GL_PROCM(void, gl, PixelMapfv, glPixelMapfv, PIXELMAPFV, (AND GLenum map, GLsizei mapsize, memptr values), (map, mapsize, values), &map, GL_void_return) #endif #endif #ifndef NO_GLPIXELMAPUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelMapuiv, glPixelMapuiv, PIXELMAPUIV, (AND GLenum map, GLsizei mapsize, const GLuint *values), (map, mapsize, values), &map, GL_void_return) GL_PROCM(void, gl, PixelMapuiv, glPixelMapuiv, PIXELMAPUIV, (AND GLenum map, GLsizei mapsize, memptr values), (map, mapsize, values), &map, GL_void_return) #endif #endif #ifndef NO_GLPIXELMAPUSV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelMapusv, glPixelMapusv, PIXELMAPUSV, (AND GLenum map, GLsizei mapsize, const GLushort *values), (map, mapsize, values), &map, GL_void_return) GL_PROCM(void, gl, PixelMapusv, glPixelMapusv, PIXELMAPUSV, (AND GLenum map, GLsizei mapsize, memptr values), (map, mapsize, values), &map, GL_void_return) #endif #endif #ifndef NO_GLPIXELMAPX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelMapx, glPixelMapx, PIXELMAPX, (AND GLenum map, GLint size, const GLfixed *values), (map, size, values), &map, GL_void_return) GL_PROCM(void, gl, PixelMapx, glPixelMapx, PIXELMAPX, (AND GLenum map, GLint size, memptr values), (map, size, values), &map, GL_void_return) #endif #endif #ifndef NO_GLPIXELSTOREF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelStoref, glPixelStoref, PIXELSTOREF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PixelStoref, glPixelStoref, PIXELSTOREF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPIXELSTOREI GL_PROC(void, gl, PixelStorei, glPixelStorei, PIXELSTOREI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PixelStorei, glPixelStorei, PIXELSTOREI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #ifndef NO_GLPIXELSTOREX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelStorex, glPixelStorex, PIXELSTOREX, (AND GLenum pname, GLfixed param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PixelStorex, glPixelStorex, PIXELSTOREX, (AND GLenum pname, GLfixed param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPIXELTEXGENPARAMETERFSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelTexGenParameterfSGIS, glPixelTexGenParameterfSGIS, PIXELTEXGENPARAMETERFSGIS, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PixelTexGenParameterfSGIS, glPixelTexGenParameterfSGIS, PIXELTEXGENPARAMETERFSGIS, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPIXELTEXGENPARAMETERFVSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelTexGenParameterfvSGIS, glPixelTexGenParameterfvSGIS, PIXELTEXGENPARAMETERFVSGIS, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, PixelTexGenParameterfvSGIS, glPixelTexGenParameterfvSGIS, PIXELTEXGENPARAMETERFVSGIS, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLPIXELTEXGENPARAMETERISGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelTexGenParameteriSGIS, glPixelTexGenParameteriSGIS, PIXELTEXGENPARAMETERISGIS, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PixelTexGenParameteriSGIS, glPixelTexGenParameteriSGIS, PIXELTEXGENPARAMETERISGIS, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPIXELTEXGENPARAMETERIVSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelTexGenParameterivSGIS, glPixelTexGenParameterivSGIS, PIXELTEXGENPARAMETERIVSGIS, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, PixelTexGenParameterivSGIS, glPixelTexGenParameterivSGIS, PIXELTEXGENPARAMETERIVSGIS, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLPIXELTEXGENSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelTexGenSGIX, glPixelTexGenSGIX, PIXELTEXGENSGIX, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, PixelTexGenSGIX, glPixelTexGenSGIX, PIXELTEXGENSGIX, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLPIXELTRANSFERF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelTransferf, glPixelTransferf, PIXELTRANSFERF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PixelTransferf, glPixelTransferf, PIXELTRANSFERF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPIXELTRANSFERI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelTransferi, glPixelTransferi, PIXELTRANSFERI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PixelTransferi, glPixelTransferi, PIXELTRANSFERI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPIXELTRANSFERXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelTransferxOES, glPixelTransferxOES, PIXELTRANSFERXOES, (AND GLenum pname, GLfixed param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PixelTransferxOES, glPixelTransferxOES, PIXELTRANSFERXOES, (AND GLenum pname, GLfixed param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPIXELTRANSFORMPARAMETERFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelTransformParameterfEXT, glPixelTransformParameterfEXT, PIXELTRANSFORMPARAMETERFEXT, (AND GLenum target, GLenum pname, GLfloat param), (target, pname, param), &target, GL_void_return) GL_PROCM(void, gl, PixelTransformParameterfEXT, glPixelTransformParameterfEXT, PIXELTRANSFORMPARAMETERFEXT, (AND GLenum target, GLenum pname, GLfloat param), (target, pname, param), &target, GL_void_return) #endif #endif #ifndef NO_GLPIXELTRANSFORMPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelTransformParameterfvEXT, glPixelTransformParameterfvEXT, PIXELTRANSFORMPARAMETERFVEXT, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, PixelTransformParameterfvEXT, glPixelTransformParameterfvEXT, PIXELTRANSFORMPARAMETERFVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPIXELTRANSFORMPARAMETERIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelTransformParameteriEXT, glPixelTransformParameteriEXT, PIXELTRANSFORMPARAMETERIEXT, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) GL_PROCM(void, gl, PixelTransformParameteriEXT, glPixelTransformParameteriEXT, PIXELTRANSFORMPARAMETERIEXT, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) #endif #endif #ifndef NO_GLPIXELTRANSFORMPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelTransformParameterivEXT, glPixelTransformParameterivEXT, PIXELTRANSFORMPARAMETERIVEXT, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, PixelTransformParameterivEXT, glPixelTransformParameterivEXT, PIXELTRANSFORMPARAMETERIVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPIXELZOOM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelZoom, glPixelZoom, PIXELZOOM, (AND GLfloat xfactor, GLfloat yfactor), (xfactor, yfactor), &xfactor, GL_void_return) GL_PROCM(void, gl, PixelZoom, glPixelZoom, PIXELZOOM, (AND GLfloat xfactor, GLfloat yfactor), (xfactor, yfactor), &xfactor, GL_void_return) #endif #endif #ifndef NO_GLPIXELZOOMXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PixelZoomxOES, glPixelZoomxOES, PIXELZOOMXOES, (AND GLfixed xfactor, GLfixed yfactor), (xfactor, yfactor), &xfactor, GL_void_return) GL_PROCM(void, gl, PixelZoomxOES, glPixelZoomxOES, PIXELZOOMXOES, (AND GLfixed xfactor, GLfixed yfactor), (xfactor, yfactor), &xfactor, GL_void_return) #endif #endif #ifndef NO_GLPOINTALONGPATHNV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, PointAlongPathNV, glPointAlongPathNV, POINTALONGPATHNV, (AND GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY), (path, startSegment, numSegments, distance, x, y, tangentX, tangentY), &path, return (GLboolean)) GL_PROCM(GLboolean, gl, PointAlongPathNV, glPointAlongPathNV, POINTALONGPATHNV, (AND GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, memptr x, memptr y, memptr tangentX, memptr tangentY), (path, startSegment, numSegments, distance, x, y, tangentX, tangentY), &path, return (GLboolean)) #endif #endif #ifndef NO_GLPOINTPARAMETERF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointParameterf, glPointParameterf, POINTPARAMETERF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PointParameterf, glPointParameterf, POINTPARAMETERF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPOINTPARAMETERFARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointParameterfARB, glPointParameterfARB, POINTPARAMETERFARB, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PointParameterfARB, glPointParameterfARB, POINTPARAMETERFARB, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPOINTPARAMETERFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointParameterfEXT, glPointParameterfEXT, POINTPARAMETERFEXT, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PointParameterfEXT, glPointParameterfEXT, POINTPARAMETERFEXT, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPOINTPARAMETERFSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointParameterfSGIS, glPointParameterfSGIS, POINTPARAMETERFSGIS, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PointParameterfSGIS, glPointParameterfSGIS, POINTPARAMETERFSGIS, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPOINTPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointParameterfv, glPointParameterfv, POINTPARAMETERFV, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, PointParameterfv, glPointParameterfv, POINTPARAMETERFV, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLPOINTPARAMETERFVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointParameterfvARB, glPointParameterfvARB, POINTPARAMETERFVARB, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, PointParameterfvARB, glPointParameterfvARB, POINTPARAMETERFVARB, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLPOINTPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointParameterfvEXT, glPointParameterfvEXT, POINTPARAMETERFVEXT, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, PointParameterfvEXT, glPointParameterfvEXT, POINTPARAMETERFVEXT, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLPOINTPARAMETERFVSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointParameterfvSGIS, glPointParameterfvSGIS, POINTPARAMETERFVSGIS, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, PointParameterfvSGIS, glPointParameterfvSGIS, POINTPARAMETERFVSGIS, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLPOINTPARAMETERI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointParameteri, glPointParameteri, POINTPARAMETERI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PointParameteri, glPointParameteri, POINTPARAMETERI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPOINTPARAMETERINV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointParameteriNV, glPointParameteriNV, POINTPARAMETERINV, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, PointParameteriNV, glPointParameteriNV, POINTPARAMETERINV, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLPOINTPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointParameteriv, glPointParameteriv, POINTPARAMETERIV, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, PointParameteriv, glPointParameteriv, POINTPARAMETERIV, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLPOINTPARAMETERIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointParameterivNV, glPointParameterivNV, POINTPARAMETERIVNV, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, PointParameterivNV, glPointParameterivNV, POINTPARAMETERIVNV, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLPOINTPARAMETERXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointParameterxvOES, glPointParameterxvOES, POINTPARAMETERXVOES, (AND GLenum pname, const GLfixed *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, PointParameterxvOES, glPointParameterxvOES, POINTPARAMETERXVOES, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLPOINTSIZE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointSize, glPointSize, POINTSIZE, (AND GLfloat size), (size), &size, GL_void_return) GL_PROCM(void, gl, PointSize, glPointSize, POINTSIZE, (AND GLfloat size), (size), &size, GL_void_return) #endif #endif #ifndef NO_GLPOINTSIZEPOINTERAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointSizePointerAPPLE, glPointSizePointerAPPLE, POINTSIZEPOINTERAPPLE, (AND GLenum type, GLsizei stride, const GLvoid *pointer), (type, stride, pointer), &type, GL_void_return) GL_PROCM(void, gl, PointSizePointerAPPLE, glPointSizePointerAPPLE, POINTSIZEPOINTERAPPLE, (AND GLenum type, GLsizei stride, memptr pointer), (type, stride, pointer), &type, GL_void_return) #endif #endif #ifndef NO_GLPOINTSIZEXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PointSizexOES, glPointSizexOES, POINTSIZEXOES, (AND GLfixed size), (size), &size, GL_void_return) GL_PROCM(void, gl, PointSizexOES, glPointSizexOES, POINTSIZEXOES, (AND GLfixed size), (size), &size, GL_void_return) #endif #endif #ifndef NO_GLPOLLASYNCSGIX #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, PollAsyncSGIX, glPollAsyncSGIX, POLLASYNCSGIX, (AND GLuint *markerp), (markerp), &markerp, return (GLint)) GL_PROCM(GLint, gl, PollAsyncSGIX, glPollAsyncSGIX, POLLASYNCSGIX, (AND memptr markerp), (markerp), &markerp, return (GLint)) #endif #endif #ifndef NO_GLPOLLINSTRUMENTSSGIX #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, PollInstrumentsSGIX, glPollInstrumentsSGIX, POLLINSTRUMENTSSGIX, (AND GLint *marker_p), (marker_p), &marker_p, return (GLint)) GL_PROCM(GLint, gl, PollInstrumentsSGIX, glPollInstrumentsSGIX, POLLINSTRUMENTSSGIX, (AND memptr marker_p), (marker_p), &marker_p, return (GLint)) #endif #endif #ifndef NO_GLPOLYGONMODE GL_PROC(void, gl, PolygonMode, glPolygonMode, POLYGONMODE, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) GL_PROCM(void, gl, PolygonMode, glPolygonMode, POLYGONMODE, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) #endif #ifndef NO_GLPOLYGONOFFSET GL_PROC(void, gl, PolygonOffset, glPolygonOffset, POLYGONOFFSET, (AND GLfloat factor, GLfloat units), (factor, units), &factor, GL_void_return) GL_PROCM(void, gl, PolygonOffset, glPolygonOffset, POLYGONOFFSET, (AND GLfloat factor, GLfloat units), (factor, units), &factor, GL_void_return) #endif #ifndef NO_GLPOLYGONOFFSETCLAMP #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PolygonOffsetClamp, glPolygonOffsetClamp, POLYGONOFFSETCLAMP, (AND GLfloat factor, GLfloat units, GLfloat clamp), (factor, units, clamp), &factor, GL_void_return) GL_PROCM(void, gl, PolygonOffsetClamp, glPolygonOffsetClamp, POLYGONOFFSETCLAMP, (AND GLfloat factor, GLfloat units, GLfloat clamp), (factor, units, clamp), &factor, GL_void_return) #endif #endif #ifndef NO_GLPOLYGONOFFSETCLAMPEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PolygonOffsetClampEXT, glPolygonOffsetClampEXT, POLYGONOFFSETCLAMPEXT, (AND GLfloat factor, GLfloat units, GLfloat clamp), (factor, units, clamp), &factor, GL_void_return) GL_PROCM(void, gl, PolygonOffsetClampEXT, glPolygonOffsetClampEXT, POLYGONOFFSETCLAMPEXT, (AND GLfloat factor, GLfloat units, GLfloat clamp), (factor, units, clamp), &factor, GL_void_return) #endif #endif #ifndef NO_GLPOLYGONOFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PolygonOffsetEXT, glPolygonOffsetEXT, POLYGONOFFSETEXT, (AND GLfloat factor, GLfloat bias), (factor, bias), &factor, GL_void_return) GL_PROCM(void, gl, PolygonOffsetEXT, glPolygonOffsetEXT, POLYGONOFFSETEXT, (AND GLfloat factor, GLfloat bias), (factor, bias), &factor, GL_void_return) #endif #endif #ifndef NO_GLPOLYGONOFFSETXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PolygonOffsetxOES, glPolygonOffsetxOES, POLYGONOFFSETXOES, (AND GLfixed factor, GLfixed units), (factor, units), &factor, GL_void_return) GL_PROCM(void, gl, PolygonOffsetxOES, glPolygonOffsetxOES, POLYGONOFFSETXOES, (AND GLfixed factor, GLfixed units), (factor, units), &factor, GL_void_return) #endif #endif #ifndef NO_GLPOLYGONSTIPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PolygonStipple, glPolygonStipple, POLYGONSTIPPLE, (AND const GLubyte *mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, PolygonStipple, glPolygonStipple, POLYGONSTIPPLE, (AND memptr mask), (mask), &mask, GL_void_return) #endif #endif #ifndef NO_GLPOPATTRIB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PopAttrib, glPopAttrib, POPATTRIB, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, PopAttrib, glPopAttrib, POPATTRIB, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLPOPCLIENTATTRIB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PopClientAttrib, glPopClientAttrib, POPCLIENTATTRIB, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, PopClientAttrib, glPopClientAttrib, POPCLIENTATTRIB, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLPOPDEBUGGROUP #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PopDebugGroup, glPopDebugGroup, POPDEBUGGROUP, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, PopDebugGroup, glPopDebugGroup, POPDEBUGGROUP, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLPOPGROUPMARKEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PopGroupMarkerEXT, glPopGroupMarkerEXT, POPGROUPMARKEREXT, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, PopGroupMarkerEXT, glPopGroupMarkerEXT, POPGROUPMARKEREXT, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLPOPMATRIX GL_PROC(void, gl, PopMatrix, glPopMatrix, POPMATRIX, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, PopMatrix, glPopMatrix, POPMATRIX, (NOTHING), (), NULL, GL_void_return) #endif #ifndef NO_GLPOPNAME GL_PROC(void, gl, PopName, glPopName, POPNAME, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, PopName, glPopName, POPNAME, (NOTHING), (), NULL, GL_void_return) #endif #ifndef NO_GLPRESENTFRAMEDUALFILLNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PresentFrameDualFillNV, glPresentFrameDualFillNV, PRESENTFRAMEDUALFILLNV, (AND GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3), (video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, target1, fill1, target2, fill2, target3, fill3), &video_slot, GL_void_return) GL_PROCM(void, gl, PresentFrameDualFillNV, glPresentFrameDualFillNV, PRESENTFRAMEDUALFILLNV, (AND GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3), (video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, target1, fill1, target2, fill2, target3, fill3), &video_slot, GL_void_return) #endif #endif #ifndef NO_GLPRESENTFRAMEKEYEDNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PresentFrameKeyedNV, glPresentFrameKeyedNV, PRESENTFRAMEKEYEDNV, (AND GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1), (video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, key0, target1, fill1, key1), &video_slot, GL_void_return) GL_PROCM(void, gl, PresentFrameKeyedNV, glPresentFrameKeyedNV, PRESENTFRAMEKEYEDNV, (AND GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1), (video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, key0, target1, fill1, key1), &video_slot, GL_void_return) #endif #endif #ifndef NO_GLPRIMITIVEBOUNDINGBOXARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PrimitiveBoundingBoxARB, glPrimitiveBoundingBoxARB, PRIMITIVEBOUNDINGBOXARB, (AND GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW), (minX, minY, minZ, minW, maxX, maxY, maxZ, maxW), &minX, GL_void_return) GL_PROCM(void, gl, PrimitiveBoundingBoxARB, glPrimitiveBoundingBoxARB, PRIMITIVEBOUNDINGBOXARB, (AND GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW), (minX, minY, minZ, minW, maxX, maxY, maxZ, maxW), &minX, GL_void_return) #endif #endif #ifndef NO_GLPRIMITIVERESTARTINDEX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PrimitiveRestartIndex, glPrimitiveRestartIndex, PRIMITIVERESTARTINDEX, (AND GLuint index), (index), &index, GL_void_return) GL_PROCM(void, gl, PrimitiveRestartIndex, glPrimitiveRestartIndex, PRIMITIVERESTARTINDEX, (AND GLuint index), (index), &index, GL_void_return) #endif #endif #ifndef NO_GLPRIMITIVERESTARTINDEXNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, PRIMITIVERESTARTINDEXNV, (AND GLuint index), (index), &index, GL_void_return) GL_PROCM(void, gl, PrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, PRIMITIVERESTARTINDEXNV, (AND GLuint index), (index), &index, GL_void_return) #endif #endif #ifndef NO_GLPRIMITIVERESTARTNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PrimitiveRestartNV, glPrimitiveRestartNV, PRIMITIVERESTARTNV, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, PrimitiveRestartNV, glPrimitiveRestartNV, PRIMITIVERESTARTNV, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLPRIORITIZETEXTURES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PrioritizeTextures, glPrioritizeTextures, PRIORITIZETEXTURES, (AND GLsizei n, const GLuint *textures, const GLclampf *priorities), (n, textures, priorities), &n, GL_void_return) GL_PROCM(void, gl, PrioritizeTextures, glPrioritizeTextures, PRIORITIZETEXTURES, (AND GLsizei n, memptr textures, memptr priorities), (n, textures, priorities), &n, GL_void_return) #endif #endif #ifndef NO_GLPRIORITIZETEXTURESEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PrioritizeTexturesEXT, glPrioritizeTexturesEXT, PRIORITIZETEXTURESEXT, (AND GLsizei n, const GLuint *textures, const GLclampf *priorities), (n, textures, priorities), &n, GL_void_return) GL_PROCM(void, gl, PrioritizeTexturesEXT, glPrioritizeTexturesEXT, PRIORITIZETEXTURESEXT, (AND GLsizei n, memptr textures, memptr priorities), (n, textures, priorities), &n, GL_void_return) #endif #endif #ifndef NO_GLPRIORITIZETEXTURESXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PrioritizeTexturesxOES, glPrioritizeTexturesxOES, PRIORITIZETEXTURESXOES, (AND GLsizei n, const GLuint *textures, const GLfixed *priorities), (n, textures, priorities), &n, GL_void_return) GL_PROCM(void, gl, PrioritizeTexturesxOES, glPrioritizeTexturesxOES, PRIORITIZETEXTURESXOES, (AND GLsizei n, memptr textures, memptr priorities), (n, textures, priorities), &n, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMBINARY #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramBinary, glProgramBinary, PROGRAMBINARY, (AND GLuint program, GLenum binaryFormat, const void *binary, GLsizei length), (program, binaryFormat, binary, length), &program, GL_void_return) GL_PROCM(void, gl, ProgramBinary, glProgramBinary, PROGRAMBINARY, (AND GLuint program, GLenum binaryFormat, memptr binary, GLsizei length), (program, binaryFormat, binary, length), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMBUFFERPARAMETERSIIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramBufferParametersIivNV, glProgramBufferParametersIivNV, PROGRAMBUFFERPARAMETERSIIVNV, (AND GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params), (target, bindingIndex, wordIndex, count, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramBufferParametersIivNV, glProgramBufferParametersIivNV, PROGRAMBUFFERPARAMETERSIIVNV, (AND GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, memptr params), (target, bindingIndex, wordIndex, count, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMBUFFERPARAMETERSIUIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramBufferParametersIuivNV, glProgramBufferParametersIuivNV, PROGRAMBUFFERPARAMETERSIUIVNV, (AND GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params), (target, bindingIndex, wordIndex, count, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramBufferParametersIuivNV, glProgramBufferParametersIuivNV, PROGRAMBUFFERPARAMETERSIUIVNV, (AND GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, memptr params), (target, bindingIndex, wordIndex, count, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMBUFFERPARAMETERSFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramBufferParametersfvNV, glProgramBufferParametersfvNV, PROGRAMBUFFERPARAMETERSFVNV, (AND GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params), (target, bindingIndex, wordIndex, count, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramBufferParametersfvNV, glProgramBufferParametersfvNV, PROGRAMBUFFERPARAMETERSFVNV, (AND GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, memptr params), (target, bindingIndex, wordIndex, count, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMCALLBACKMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramCallbackMESA, glProgramCallbackMESA, PROGRAMCALLBACKMESA, (AND GLenum target, GLprogramcallbackMESA callback, GLvoid *data), (target, callback, data), &target, GL_void_return) GL_PROCM(void, gl, ProgramCallbackMESA, glProgramCallbackMESA, PROGRAMCALLBACKMESA, (AND GLenum target, memptr callback, memptr data), (target, callback, data), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMENVPARAMETER4DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramEnvParameter4dARB, glProgramEnvParameter4dARB, PROGRAMENVPARAMETER4DARB, (AND GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (target, index, x, y, z, w), &target, GL_void_return) GL_PROCM(void, gl, ProgramEnvParameter4dARB, glProgramEnvParameter4dARB, PROGRAMENVPARAMETER4DARB, (AND GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (target, index, x, y, z, w), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMENVPARAMETER4DVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, PROGRAMENVPARAMETER4DVARB, (AND GLenum target, GLuint index, const GLdouble *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, PROGRAMENVPARAMETER4DVARB, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMENVPARAMETER4FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramEnvParameter4fARB, glProgramEnvParameter4fARB, PROGRAMENVPARAMETER4FARB, (AND GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (target, index, x, y, z, w), &target, GL_void_return) GL_PROCM(void, gl, ProgramEnvParameter4fARB, glProgramEnvParameter4fARB, PROGRAMENVPARAMETER4FARB, (AND GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (target, index, x, y, z, w), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMENVPARAMETER4FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, PROGRAMENVPARAMETER4FVARB, (AND GLenum target, GLuint index, const GLfloat *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, PROGRAMENVPARAMETER4FVARB, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMENVPARAMETERI4INV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramEnvParameterI4iNV, glProgramEnvParameterI4iNV, PROGRAMENVPARAMETERI4INV, (AND GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w), (target, index, x, y, z, w), &target, GL_void_return) GL_PROCM(void, gl, ProgramEnvParameterI4iNV, glProgramEnvParameterI4iNV, PROGRAMENVPARAMETERI4INV, (AND GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w), (target, index, x, y, z, w), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMENVPARAMETERI4IVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramEnvParameterI4ivNV, glProgramEnvParameterI4ivNV, PROGRAMENVPARAMETERI4IVNV, (AND GLenum target, GLuint index, const GLint *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramEnvParameterI4ivNV, glProgramEnvParameterI4ivNV, PROGRAMENVPARAMETERI4IVNV, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMENVPARAMETERI4UINV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramEnvParameterI4uiNV, glProgramEnvParameterI4uiNV, PROGRAMENVPARAMETERI4UINV, (AND GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (target, index, x, y, z, w), &target, GL_void_return) GL_PROCM(void, gl, ProgramEnvParameterI4uiNV, glProgramEnvParameterI4uiNV, PROGRAMENVPARAMETERI4UINV, (AND GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (target, index, x, y, z, w), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMENVPARAMETERI4UIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramEnvParameterI4uivNV, glProgramEnvParameterI4uivNV, PROGRAMENVPARAMETERI4UIVNV, (AND GLenum target, GLuint index, const GLuint *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramEnvParameterI4uivNV, glProgramEnvParameterI4uivNV, PROGRAMENVPARAMETERI4UIVNV, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMENVPARAMETERS4FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramEnvParameters4fvEXT, glProgramEnvParameters4fvEXT, PROGRAMENVPARAMETERS4FVEXT, (AND GLenum target, GLuint index, GLsizei count, const GLfloat *params), (target, index, count, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramEnvParameters4fvEXT, glProgramEnvParameters4fvEXT, PROGRAMENVPARAMETERS4FVEXT, (AND GLenum target, GLuint index, GLsizei count, memptr params), (target, index, count, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMENVPARAMETERSI4IVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramEnvParametersI4ivNV, glProgramEnvParametersI4ivNV, PROGRAMENVPARAMETERSI4IVNV, (AND GLenum target, GLuint index, GLsizei count, const GLint *params), (target, index, count, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramEnvParametersI4ivNV, glProgramEnvParametersI4ivNV, PROGRAMENVPARAMETERSI4IVNV, (AND GLenum target, GLuint index, GLsizei count, memptr params), (target, index, count, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMENVPARAMETERSI4UIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramEnvParametersI4uivNV, glProgramEnvParametersI4uivNV, PROGRAMENVPARAMETERSI4UIVNV, (AND GLenum target, GLuint index, GLsizei count, const GLuint *params), (target, index, count, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramEnvParametersI4uivNV, glProgramEnvParametersI4uivNV, PROGRAMENVPARAMETERSI4UIVNV, (AND GLenum target, GLuint index, GLsizei count, memptr params), (target, index, count, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMLOCALPARAMETER4DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramLocalParameter4dARB, glProgramLocalParameter4dARB, PROGRAMLOCALPARAMETER4DARB, (AND GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (target, index, x, y, z, w), &target, GL_void_return) GL_PROCM(void, gl, ProgramLocalParameter4dARB, glProgramLocalParameter4dARB, PROGRAMLOCALPARAMETER4DARB, (AND GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (target, index, x, y, z, w), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMLOCALPARAMETER4DVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramLocalParameter4dvARB, glProgramLocalParameter4dvARB, PROGRAMLOCALPARAMETER4DVARB, (AND GLenum target, GLuint index, const GLdouble *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramLocalParameter4dvARB, glProgramLocalParameter4dvARB, PROGRAMLOCALPARAMETER4DVARB, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMLOCALPARAMETER4FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramLocalParameter4fARB, glProgramLocalParameter4fARB, PROGRAMLOCALPARAMETER4FARB, (AND GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (target, index, x, y, z, w), &target, GL_void_return) GL_PROCM(void, gl, ProgramLocalParameter4fARB, glProgramLocalParameter4fARB, PROGRAMLOCALPARAMETER4FARB, (AND GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (target, index, x, y, z, w), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMLOCALPARAMETER4FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramLocalParameter4fvARB, glProgramLocalParameter4fvARB, PROGRAMLOCALPARAMETER4FVARB, (AND GLenum target, GLuint index, const GLfloat *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramLocalParameter4fvARB, glProgramLocalParameter4fvARB, PROGRAMLOCALPARAMETER4FVARB, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMLOCALPARAMETERI4INV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramLocalParameterI4iNV, glProgramLocalParameterI4iNV, PROGRAMLOCALPARAMETERI4INV, (AND GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w), (target, index, x, y, z, w), &target, GL_void_return) GL_PROCM(void, gl, ProgramLocalParameterI4iNV, glProgramLocalParameterI4iNV, PROGRAMLOCALPARAMETERI4INV, (AND GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w), (target, index, x, y, z, w), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMLOCALPARAMETERI4IVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramLocalParameterI4ivNV, glProgramLocalParameterI4ivNV, PROGRAMLOCALPARAMETERI4IVNV, (AND GLenum target, GLuint index, const GLint *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramLocalParameterI4ivNV, glProgramLocalParameterI4ivNV, PROGRAMLOCALPARAMETERI4IVNV, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMLOCALPARAMETERI4UINV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramLocalParameterI4uiNV, glProgramLocalParameterI4uiNV, PROGRAMLOCALPARAMETERI4UINV, (AND GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (target, index, x, y, z, w), &target, GL_void_return) GL_PROCM(void, gl, ProgramLocalParameterI4uiNV, glProgramLocalParameterI4uiNV, PROGRAMLOCALPARAMETERI4UINV, (AND GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (target, index, x, y, z, w), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMLOCALPARAMETERI4UIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramLocalParameterI4uivNV, glProgramLocalParameterI4uivNV, PROGRAMLOCALPARAMETERI4UIVNV, (AND GLenum target, GLuint index, const GLuint *params), (target, index, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramLocalParameterI4uivNV, glProgramLocalParameterI4uivNV, PROGRAMLOCALPARAMETERI4UIVNV, (AND GLenum target, GLuint index, memptr params), (target, index, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMLOCALPARAMETERS4FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramLocalParameters4fvEXT, glProgramLocalParameters4fvEXT, PROGRAMLOCALPARAMETERS4FVEXT, (AND GLenum target, GLuint index, GLsizei count, const GLfloat *params), (target, index, count, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramLocalParameters4fvEXT, glProgramLocalParameters4fvEXT, PROGRAMLOCALPARAMETERS4FVEXT, (AND GLenum target, GLuint index, GLsizei count, memptr params), (target, index, count, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMLOCALPARAMETERSI4IVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramLocalParametersI4ivNV, glProgramLocalParametersI4ivNV, PROGRAMLOCALPARAMETERSI4IVNV, (AND GLenum target, GLuint index, GLsizei count, const GLint *params), (target, index, count, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramLocalParametersI4ivNV, glProgramLocalParametersI4ivNV, PROGRAMLOCALPARAMETERSI4IVNV, (AND GLenum target, GLuint index, GLsizei count, memptr params), (target, index, count, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMLOCALPARAMETERSI4UIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramLocalParametersI4uivNV, glProgramLocalParametersI4uivNV, PROGRAMLOCALPARAMETERSI4UIVNV, (AND GLenum target, GLuint index, GLsizei count, const GLuint *params), (target, index, count, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramLocalParametersI4uivNV, glProgramLocalParametersI4uivNV, PROGRAMLOCALPARAMETERSI4UIVNV, (AND GLenum target, GLuint index, GLsizei count, memptr params), (target, index, count, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMNAMEDPARAMETER4DNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramNamedParameter4dNV, glProgramNamedParameter4dNV, PROGRAMNAMEDPARAMETER4DNV, (AND GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (id, len, name, x, y, z, w), &id, GL_void_return) GL_PROCM(void, gl, ProgramNamedParameter4dNV, glProgramNamedParameter4dNV, PROGRAMNAMEDPARAMETER4DNV, (AND GLuint id, GLsizei len, memptr name, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (id, len, name, x, y, z, w), &id, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMNAMEDPARAMETER4DVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, PROGRAMNAMEDPARAMETER4DVNV, (AND GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v), (id, len, name, v), &id, GL_void_return) GL_PROCM(void, gl, ProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, PROGRAMNAMEDPARAMETER4DVNV, (AND GLuint id, GLsizei len, memptr name, memptr v), (id, len, name, v), &id, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMNAMEDPARAMETER4FNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramNamedParameter4fNV, glProgramNamedParameter4fNV, PROGRAMNAMEDPARAMETER4FNV, (AND GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (id, len, name, x, y, z, w), &id, GL_void_return) GL_PROCM(void, gl, ProgramNamedParameter4fNV, glProgramNamedParameter4fNV, PROGRAMNAMEDPARAMETER4FNV, (AND GLuint id, GLsizei len, memptr name, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (id, len, name, x, y, z, w), &id, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMNAMEDPARAMETER4FVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, PROGRAMNAMEDPARAMETER4FVNV, (AND GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v), (id, len, name, v), &id, GL_void_return) GL_PROCM(void, gl, ProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, PROGRAMNAMEDPARAMETER4FVNV, (AND GLuint id, GLsizei len, memptr name, memptr v), (id, len, name, v), &id, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMPARAMETER4DNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramParameter4dNV, glProgramParameter4dNV, PROGRAMPARAMETER4DNV, (AND GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (target, index, x, y, z, w), &target, GL_void_return) GL_PROCM(void, gl, ProgramParameter4dNV, glProgramParameter4dNV, PROGRAMPARAMETER4DNV, (AND GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (target, index, x, y, z, w), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMPARAMETER4DVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramParameter4dvNV, glProgramParameter4dvNV, PROGRAMPARAMETER4DVNV, (AND GLenum target, GLuint index, const GLdouble *v), (target, index, v), &target, GL_void_return) GL_PROCM(void, gl, ProgramParameter4dvNV, glProgramParameter4dvNV, PROGRAMPARAMETER4DVNV, (AND GLenum target, GLuint index, memptr v), (target, index, v), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMPARAMETER4FNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramParameter4fNV, glProgramParameter4fNV, PROGRAMPARAMETER4FNV, (AND GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (target, index, x, y, z, w), &target, GL_void_return) GL_PROCM(void, gl, ProgramParameter4fNV, glProgramParameter4fNV, PROGRAMPARAMETER4FNV, (AND GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (target, index, x, y, z, w), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMPARAMETER4FVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramParameter4fvNV, glProgramParameter4fvNV, PROGRAMPARAMETER4FVNV, (AND GLenum target, GLuint index, const GLfloat *v), (target, index, v), &target, GL_void_return) GL_PROCM(void, gl, ProgramParameter4fvNV, glProgramParameter4fvNV, PROGRAMPARAMETER4FVNV, (AND GLenum target, GLuint index, memptr v), (target, index, v), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMPARAMETERI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramParameteri, glProgramParameteri, PROGRAMPARAMETERI, (AND GLuint program, GLenum pname, GLint value), (program, pname, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramParameteri, glProgramParameteri, PROGRAMPARAMETERI, (AND GLuint program, GLenum pname, GLint value), (program, pname, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMPARAMETERIARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramParameteriARB, glProgramParameteriARB, PROGRAMPARAMETERIARB, (AND GLuint program, GLenum pname, GLint value), (program, pname, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramParameteriARB, glProgramParameteriARB, PROGRAMPARAMETERIARB, (AND GLuint program, GLenum pname, GLint value), (program, pname, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMPARAMETERIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramParameteriEXT, glProgramParameteriEXT, PROGRAMPARAMETERIEXT, (AND GLuint program, GLenum pname, GLint value), (program, pname, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramParameteriEXT, glProgramParameteriEXT, PROGRAMPARAMETERIEXT, (AND GLuint program, GLenum pname, GLint value), (program, pname, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMPARAMETERS4DVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramParameters4dvNV, glProgramParameters4dvNV, PROGRAMPARAMETERS4DVNV, (AND GLenum target, GLuint index, GLsizei count, const GLdouble *v), (target, index, count, v), &target, GL_void_return) GL_PROCM(void, gl, ProgramParameters4dvNV, glProgramParameters4dvNV, PROGRAMPARAMETERS4DVNV, (AND GLenum target, GLuint index, GLsizei count, memptr v), (target, index, count, v), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMPARAMETERS4FVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramParameters4fvNV, glProgramParameters4fvNV, PROGRAMPARAMETERS4FVNV, (AND GLenum target, GLuint index, GLsizei count, const GLfloat *v), (target, index, count, v), &target, GL_void_return) GL_PROCM(void, gl, ProgramParameters4fvNV, glProgramParameters4fvNV, PROGRAMPARAMETERS4FVNV, (AND GLenum target, GLuint index, GLsizei count, memptr v), (target, index, count, v), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMPATHFRAGMENTINPUTGENNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramPathFragmentInputGenNV, glProgramPathFragmentInputGenNV, PROGRAMPATHFRAGMENTINPUTGENNV, (AND GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs), (program, location, genMode, components, coeffs), &program, GL_void_return) GL_PROCM(void, gl, ProgramPathFragmentInputGenNV, glProgramPathFragmentInputGenNV, PROGRAMPATHFRAGMENTINPUTGENNV, (AND GLuint program, GLint location, GLenum genMode, GLint components, memptr coeffs), (program, location, genMode, components, coeffs), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMSTRINGARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramStringARB, glProgramStringARB, PROGRAMSTRINGARB, (AND GLenum target, GLenum format, GLsizei len, const void *string), (target, format, len, string), &target, GL_void_return) GL_PROCM(void, gl, ProgramStringARB, glProgramStringARB, PROGRAMSTRINGARB, (AND GLenum target, GLenum format, GLsizei len, memptr string), (target, format, len, string), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMSUBROUTINEPARAMETERSUIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramSubroutineParametersuivNV, glProgramSubroutineParametersuivNV, PROGRAMSUBROUTINEPARAMETERSUIVNV, (AND GLenum target, GLsizei count, const GLuint *params), (target, count, params), &target, GL_void_return) GL_PROCM(void, gl, ProgramSubroutineParametersuivNV, glProgramSubroutineParametersuivNV, PROGRAMSUBROUTINEPARAMETERSUIVNV, (AND GLenum target, GLsizei count, memptr params), (target, count, params), &target, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1d, glProgramUniform1d, PROGRAMUNIFORM1D, (AND GLuint program, GLint location, GLdouble v0), (program, location, v0), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1d, glProgramUniform1d, PROGRAMUNIFORM1D, (AND GLuint program, GLint location, GLdouble v0), (program, location, v0), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1dEXT, glProgramUniform1dEXT, PROGRAMUNIFORM1DEXT, (AND GLuint program, GLint location, GLdouble x), (program, location, x), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1dEXT, glProgramUniform1dEXT, PROGRAMUNIFORM1DEXT, (AND GLuint program, GLint location, GLdouble x), (program, location, x), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1dv, glProgramUniform1dv, PROGRAMUNIFORM1DV, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1dv, glProgramUniform1dv, PROGRAMUNIFORM1DV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1dvEXT, glProgramUniform1dvEXT, PROGRAMUNIFORM1DVEXT, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1dvEXT, glProgramUniform1dvEXT, PROGRAMUNIFORM1DVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1f, glProgramUniform1f, PROGRAMUNIFORM1F, (AND GLuint program, GLint location, GLfloat v0), (program, location, v0), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1f, glProgramUniform1f, PROGRAMUNIFORM1F, (AND GLuint program, GLint location, GLfloat v0), (program, location, v0), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1FEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1fEXT, glProgramUniform1fEXT, PROGRAMUNIFORM1FEXT, (AND GLuint program, GLint location, GLfloat v0), (program, location, v0), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1fEXT, glProgramUniform1fEXT, PROGRAMUNIFORM1FEXT, (AND GLuint program, GLint location, GLfloat v0), (program, location, v0), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1fv, glProgramUniform1fv, PROGRAMUNIFORM1FV, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1fv, glProgramUniform1fv, PROGRAMUNIFORM1FV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1fvEXT, glProgramUniform1fvEXT, PROGRAMUNIFORM1FVEXT, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1fvEXT, glProgramUniform1fvEXT, PROGRAMUNIFORM1FVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1i, glProgramUniform1i, PROGRAMUNIFORM1I, (AND GLuint program, GLint location, GLint v0), (program, location, v0), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1i, glProgramUniform1i, PROGRAMUNIFORM1I, (AND GLuint program, GLint location, GLint v0), (program, location, v0), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1I64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1i64ARB, glProgramUniform1i64ARB, PROGRAMUNIFORM1I64ARB, (AND GLuint program, GLint location, GLint64 x), (program, location, x), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1i64ARB, glProgramUniform1i64ARB, PROGRAMUNIFORM1I64ARB, (AND GLuint program, GLint location, GLint64 x), (program, location, x), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1I64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1i64NV, glProgramUniform1i64NV, PROGRAMUNIFORM1I64NV, (AND GLuint program, GLint location, GLint64EXT x), (program, location, x), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1i64NV, glProgramUniform1i64NV, PROGRAMUNIFORM1I64NV, (AND GLuint program, GLint location, GLint64EXT x), (program, location, x), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1I64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1i64vARB, glProgramUniform1i64vARB, PROGRAMUNIFORM1I64VARB, (AND GLuint program, GLint location, GLsizei count, const GLint64 *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1i64vARB, glProgramUniform1i64vARB, PROGRAMUNIFORM1I64VARB, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1I64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1i64vNV, glProgramUniform1i64vNV, PROGRAMUNIFORM1I64VNV, (AND GLuint program, GLint location, GLsizei count, const GLint64EXT *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1i64vNV, glProgramUniform1i64vNV, PROGRAMUNIFORM1I64VNV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1IEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1iEXT, glProgramUniform1iEXT, PROGRAMUNIFORM1IEXT, (AND GLuint program, GLint location, GLint v0), (program, location, v0), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1iEXT, glProgramUniform1iEXT, PROGRAMUNIFORM1IEXT, (AND GLuint program, GLint location, GLint v0), (program, location, v0), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1iv, glProgramUniform1iv, PROGRAMUNIFORM1IV, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1iv, glProgramUniform1iv, PROGRAMUNIFORM1IV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1IVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1ivEXT, glProgramUniform1ivEXT, PROGRAMUNIFORM1IVEXT, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1ivEXT, glProgramUniform1ivEXT, PROGRAMUNIFORM1IVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1ui, glProgramUniform1ui, PROGRAMUNIFORM1UI, (AND GLuint program, GLint location, GLuint v0), (program, location, v0), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1ui, glProgramUniform1ui, PROGRAMUNIFORM1UI, (AND GLuint program, GLint location, GLuint v0), (program, location, v0), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1UI64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1ui64ARB, glProgramUniform1ui64ARB, PROGRAMUNIFORM1UI64ARB, (AND GLuint program, GLint location, GLuint64 x), (program, location, x), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1ui64ARB, glProgramUniform1ui64ARB, PROGRAMUNIFORM1UI64ARB, (AND GLuint program, GLint location, GLuint64 x), (program, location, x), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1UI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1ui64NV, glProgramUniform1ui64NV, PROGRAMUNIFORM1UI64NV, (AND GLuint program, GLint location, GLuint64EXT x), (program, location, x), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1ui64NV, glProgramUniform1ui64NV, PROGRAMUNIFORM1UI64NV, (AND GLuint program, GLint location, GLuint64EXT x), (program, location, x), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1UI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1ui64vARB, glProgramUniform1ui64vARB, PROGRAMUNIFORM1UI64VARB, (AND GLuint program, GLint location, GLsizei count, const GLuint64 *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1ui64vARB, glProgramUniform1ui64vARB, PROGRAMUNIFORM1UI64VARB, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1UI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1ui64vNV, glProgramUniform1ui64vNV, PROGRAMUNIFORM1UI64VNV, (AND GLuint program, GLint location, GLsizei count, const GLuint64EXT *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1ui64vNV, glProgramUniform1ui64vNV, PROGRAMUNIFORM1UI64VNV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1UIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1uiEXT, glProgramUniform1uiEXT, PROGRAMUNIFORM1UIEXT, (AND GLuint program, GLint location, GLuint v0), (program, location, v0), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1uiEXT, glProgramUniform1uiEXT, PROGRAMUNIFORM1UIEXT, (AND GLuint program, GLint location, GLuint v0), (program, location, v0), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1uiv, glProgramUniform1uiv, PROGRAMUNIFORM1UIV, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1uiv, glProgramUniform1uiv, PROGRAMUNIFORM1UIV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM1UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform1uivEXT, glProgramUniform1uivEXT, PROGRAMUNIFORM1UIVEXT, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform1uivEXT, glProgramUniform1uivEXT, PROGRAMUNIFORM1UIVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2d, glProgramUniform2d, PROGRAMUNIFORM2D, (AND GLuint program, GLint location, GLdouble v0, GLdouble v1), (program, location, v0, v1), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2d, glProgramUniform2d, PROGRAMUNIFORM2D, (AND GLuint program, GLint location, GLdouble v0, GLdouble v1), (program, location, v0, v1), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2dEXT, glProgramUniform2dEXT, PROGRAMUNIFORM2DEXT, (AND GLuint program, GLint location, GLdouble x, GLdouble y), (program, location, x, y), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2dEXT, glProgramUniform2dEXT, PROGRAMUNIFORM2DEXT, (AND GLuint program, GLint location, GLdouble x, GLdouble y), (program, location, x, y), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2dv, glProgramUniform2dv, PROGRAMUNIFORM2DV, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2dv, glProgramUniform2dv, PROGRAMUNIFORM2DV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2dvEXT, glProgramUniform2dvEXT, PROGRAMUNIFORM2DVEXT, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2dvEXT, glProgramUniform2dvEXT, PROGRAMUNIFORM2DVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2f, glProgramUniform2f, PROGRAMUNIFORM2F, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1), (program, location, v0, v1), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2f, glProgramUniform2f, PROGRAMUNIFORM2F, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1), (program, location, v0, v1), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2FEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2fEXT, glProgramUniform2fEXT, PROGRAMUNIFORM2FEXT, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1), (program, location, v0, v1), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2fEXT, glProgramUniform2fEXT, PROGRAMUNIFORM2FEXT, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1), (program, location, v0, v1), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2fv, glProgramUniform2fv, PROGRAMUNIFORM2FV, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2fv, glProgramUniform2fv, PROGRAMUNIFORM2FV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2fvEXT, glProgramUniform2fvEXT, PROGRAMUNIFORM2FVEXT, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2fvEXT, glProgramUniform2fvEXT, PROGRAMUNIFORM2FVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2i, glProgramUniform2i, PROGRAMUNIFORM2I, (AND GLuint program, GLint location, GLint v0, GLint v1), (program, location, v0, v1), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2i, glProgramUniform2i, PROGRAMUNIFORM2I, (AND GLuint program, GLint location, GLint v0, GLint v1), (program, location, v0, v1), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2I64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2i64ARB, glProgramUniform2i64ARB, PROGRAMUNIFORM2I64ARB, (AND GLuint program, GLint location, GLint64 x, GLint64 y), (program, location, x, y), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2i64ARB, glProgramUniform2i64ARB, PROGRAMUNIFORM2I64ARB, (AND GLuint program, GLint location, GLint64 x, GLint64 y), (program, location, x, y), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2I64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2i64NV, glProgramUniform2i64NV, PROGRAMUNIFORM2I64NV, (AND GLuint program, GLint location, GLint64EXT x, GLint64EXT y), (program, location, x, y), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2i64NV, glProgramUniform2i64NV, PROGRAMUNIFORM2I64NV, (AND GLuint program, GLint location, GLint64EXT x, GLint64EXT y), (program, location, x, y), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2I64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2i64vARB, glProgramUniform2i64vARB, PROGRAMUNIFORM2I64VARB, (AND GLuint program, GLint location, GLsizei count, const GLint64 *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2i64vARB, glProgramUniform2i64vARB, PROGRAMUNIFORM2I64VARB, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2I64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2i64vNV, glProgramUniform2i64vNV, PROGRAMUNIFORM2I64VNV, (AND GLuint program, GLint location, GLsizei count, const GLint64EXT *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2i64vNV, glProgramUniform2i64vNV, PROGRAMUNIFORM2I64VNV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2IEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2iEXT, glProgramUniform2iEXT, PROGRAMUNIFORM2IEXT, (AND GLuint program, GLint location, GLint v0, GLint v1), (program, location, v0, v1), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2iEXT, glProgramUniform2iEXT, PROGRAMUNIFORM2IEXT, (AND GLuint program, GLint location, GLint v0, GLint v1), (program, location, v0, v1), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2iv, glProgramUniform2iv, PROGRAMUNIFORM2IV, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2iv, glProgramUniform2iv, PROGRAMUNIFORM2IV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2IVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2ivEXT, glProgramUniform2ivEXT, PROGRAMUNIFORM2IVEXT, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2ivEXT, glProgramUniform2ivEXT, PROGRAMUNIFORM2IVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2ui, glProgramUniform2ui, PROGRAMUNIFORM2UI, (AND GLuint program, GLint location, GLuint v0, GLuint v1), (program, location, v0, v1), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2ui, glProgramUniform2ui, PROGRAMUNIFORM2UI, (AND GLuint program, GLint location, GLuint v0, GLuint v1), (program, location, v0, v1), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2UI64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2ui64ARB, glProgramUniform2ui64ARB, PROGRAMUNIFORM2UI64ARB, (AND GLuint program, GLint location, GLuint64 x, GLuint64 y), (program, location, x, y), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2ui64ARB, glProgramUniform2ui64ARB, PROGRAMUNIFORM2UI64ARB, (AND GLuint program, GLint location, GLuint64 x, GLuint64 y), (program, location, x, y), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2UI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2ui64NV, glProgramUniform2ui64NV, PROGRAMUNIFORM2UI64NV, (AND GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y), (program, location, x, y), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2ui64NV, glProgramUniform2ui64NV, PROGRAMUNIFORM2UI64NV, (AND GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y), (program, location, x, y), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2UI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2ui64vARB, glProgramUniform2ui64vARB, PROGRAMUNIFORM2UI64VARB, (AND GLuint program, GLint location, GLsizei count, const GLuint64 *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2ui64vARB, glProgramUniform2ui64vARB, PROGRAMUNIFORM2UI64VARB, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2UI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2ui64vNV, glProgramUniform2ui64vNV, PROGRAMUNIFORM2UI64VNV, (AND GLuint program, GLint location, GLsizei count, const GLuint64EXT *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2ui64vNV, glProgramUniform2ui64vNV, PROGRAMUNIFORM2UI64VNV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2UIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2uiEXT, glProgramUniform2uiEXT, PROGRAMUNIFORM2UIEXT, (AND GLuint program, GLint location, GLuint v0, GLuint v1), (program, location, v0, v1), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2uiEXT, glProgramUniform2uiEXT, PROGRAMUNIFORM2UIEXT, (AND GLuint program, GLint location, GLuint v0, GLuint v1), (program, location, v0, v1), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2uiv, glProgramUniform2uiv, PROGRAMUNIFORM2UIV, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2uiv, glProgramUniform2uiv, PROGRAMUNIFORM2UIV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM2UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform2uivEXT, glProgramUniform2uivEXT, PROGRAMUNIFORM2UIVEXT, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform2uivEXT, glProgramUniform2uivEXT, PROGRAMUNIFORM2UIVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3d, glProgramUniform3d, PROGRAMUNIFORM3D, (AND GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2), (program, location, v0, v1, v2), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3d, glProgramUniform3d, PROGRAMUNIFORM3D, (AND GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2), (program, location, v0, v1, v2), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3dEXT, glProgramUniform3dEXT, PROGRAMUNIFORM3DEXT, (AND GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z), (program, location, x, y, z), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3dEXT, glProgramUniform3dEXT, PROGRAMUNIFORM3DEXT, (AND GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z), (program, location, x, y, z), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3dv, glProgramUniform3dv, PROGRAMUNIFORM3DV, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3dv, glProgramUniform3dv, PROGRAMUNIFORM3DV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3dvEXT, glProgramUniform3dvEXT, PROGRAMUNIFORM3DVEXT, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3dvEXT, glProgramUniform3dvEXT, PROGRAMUNIFORM3DVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3f, glProgramUniform3f, PROGRAMUNIFORM3F, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2), (program, location, v0, v1, v2), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3f, glProgramUniform3f, PROGRAMUNIFORM3F, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2), (program, location, v0, v1, v2), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3FEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3fEXT, glProgramUniform3fEXT, PROGRAMUNIFORM3FEXT, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2), (program, location, v0, v1, v2), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3fEXT, glProgramUniform3fEXT, PROGRAMUNIFORM3FEXT, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2), (program, location, v0, v1, v2), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3fv, glProgramUniform3fv, PROGRAMUNIFORM3FV, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3fv, glProgramUniform3fv, PROGRAMUNIFORM3FV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3fvEXT, glProgramUniform3fvEXT, PROGRAMUNIFORM3FVEXT, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3fvEXT, glProgramUniform3fvEXT, PROGRAMUNIFORM3FVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3i, glProgramUniform3i, PROGRAMUNIFORM3I, (AND GLuint program, GLint location, GLint v0, GLint v1, GLint v2), (program, location, v0, v1, v2), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3i, glProgramUniform3i, PROGRAMUNIFORM3I, (AND GLuint program, GLint location, GLint v0, GLint v1, GLint v2), (program, location, v0, v1, v2), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3I64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3i64ARB, glProgramUniform3i64ARB, PROGRAMUNIFORM3I64ARB, (AND GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z), (program, location, x, y, z), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3i64ARB, glProgramUniform3i64ARB, PROGRAMUNIFORM3I64ARB, (AND GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z), (program, location, x, y, z), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3I64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3i64NV, glProgramUniform3i64NV, PROGRAMUNIFORM3I64NV, (AND GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z), (program, location, x, y, z), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3i64NV, glProgramUniform3i64NV, PROGRAMUNIFORM3I64NV, (AND GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z), (program, location, x, y, z), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3I64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3i64vARB, glProgramUniform3i64vARB, PROGRAMUNIFORM3I64VARB, (AND GLuint program, GLint location, GLsizei count, const GLint64 *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3i64vARB, glProgramUniform3i64vARB, PROGRAMUNIFORM3I64VARB, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3I64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3i64vNV, glProgramUniform3i64vNV, PROGRAMUNIFORM3I64VNV, (AND GLuint program, GLint location, GLsizei count, const GLint64EXT *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3i64vNV, glProgramUniform3i64vNV, PROGRAMUNIFORM3I64VNV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3IEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3iEXT, glProgramUniform3iEXT, PROGRAMUNIFORM3IEXT, (AND GLuint program, GLint location, GLint v0, GLint v1, GLint v2), (program, location, v0, v1, v2), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3iEXT, glProgramUniform3iEXT, PROGRAMUNIFORM3IEXT, (AND GLuint program, GLint location, GLint v0, GLint v1, GLint v2), (program, location, v0, v1, v2), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3iv, glProgramUniform3iv, PROGRAMUNIFORM3IV, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3iv, glProgramUniform3iv, PROGRAMUNIFORM3IV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3IVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3ivEXT, glProgramUniform3ivEXT, PROGRAMUNIFORM3IVEXT, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3ivEXT, glProgramUniform3ivEXT, PROGRAMUNIFORM3IVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3ui, glProgramUniform3ui, PROGRAMUNIFORM3UI, (AND GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2), (program, location, v0, v1, v2), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3ui, glProgramUniform3ui, PROGRAMUNIFORM3UI, (AND GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2), (program, location, v0, v1, v2), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3UI64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3ui64ARB, glProgramUniform3ui64ARB, PROGRAMUNIFORM3UI64ARB, (AND GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z), (program, location, x, y, z), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3ui64ARB, glProgramUniform3ui64ARB, PROGRAMUNIFORM3UI64ARB, (AND GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z), (program, location, x, y, z), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3UI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3ui64NV, glProgramUniform3ui64NV, PROGRAMUNIFORM3UI64NV, (AND GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z), (program, location, x, y, z), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3ui64NV, glProgramUniform3ui64NV, PROGRAMUNIFORM3UI64NV, (AND GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z), (program, location, x, y, z), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3UI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3ui64vARB, glProgramUniform3ui64vARB, PROGRAMUNIFORM3UI64VARB, (AND GLuint program, GLint location, GLsizei count, const GLuint64 *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3ui64vARB, glProgramUniform3ui64vARB, PROGRAMUNIFORM3UI64VARB, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3UI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3ui64vNV, glProgramUniform3ui64vNV, PROGRAMUNIFORM3UI64VNV, (AND GLuint program, GLint location, GLsizei count, const GLuint64EXT *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3ui64vNV, glProgramUniform3ui64vNV, PROGRAMUNIFORM3UI64VNV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3UIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3uiEXT, glProgramUniform3uiEXT, PROGRAMUNIFORM3UIEXT, (AND GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2), (program, location, v0, v1, v2), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3uiEXT, glProgramUniform3uiEXT, PROGRAMUNIFORM3UIEXT, (AND GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2), (program, location, v0, v1, v2), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3uiv, glProgramUniform3uiv, PROGRAMUNIFORM3UIV, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3uiv, glProgramUniform3uiv, PROGRAMUNIFORM3UIV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM3UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform3uivEXT, glProgramUniform3uivEXT, PROGRAMUNIFORM3UIVEXT, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform3uivEXT, glProgramUniform3uivEXT, PROGRAMUNIFORM3UIVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4d, glProgramUniform4d, PROGRAMUNIFORM4D, (AND GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4d, glProgramUniform4d, PROGRAMUNIFORM4D, (AND GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4dEXT, glProgramUniform4dEXT, PROGRAMUNIFORM4DEXT, (AND GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (program, location, x, y, z, w), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4dEXT, glProgramUniform4dEXT, PROGRAMUNIFORM4DEXT, (AND GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (program, location, x, y, z, w), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4dv, glProgramUniform4dv, PROGRAMUNIFORM4DV, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4dv, glProgramUniform4dv, PROGRAMUNIFORM4DV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4dvEXT, glProgramUniform4dvEXT, PROGRAMUNIFORM4DVEXT, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4dvEXT, glProgramUniform4dvEXT, PROGRAMUNIFORM4DVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4f, glProgramUniform4f, PROGRAMUNIFORM4F, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4f, glProgramUniform4f, PROGRAMUNIFORM4F, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4FEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4fEXT, glProgramUniform4fEXT, PROGRAMUNIFORM4FEXT, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4fEXT, glProgramUniform4fEXT, PROGRAMUNIFORM4FEXT, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4fv, glProgramUniform4fv, PROGRAMUNIFORM4FV, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4fv, glProgramUniform4fv, PROGRAMUNIFORM4FV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4fvEXT, glProgramUniform4fvEXT, PROGRAMUNIFORM4FVEXT, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4fvEXT, glProgramUniform4fvEXT, PROGRAMUNIFORM4FVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4i, glProgramUniform4i, PROGRAMUNIFORM4I, (AND GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4i, glProgramUniform4i, PROGRAMUNIFORM4I, (AND GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4I64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4i64ARB, glProgramUniform4i64ARB, PROGRAMUNIFORM4I64ARB, (AND GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w), (program, location, x, y, z, w), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4i64ARB, glProgramUniform4i64ARB, PROGRAMUNIFORM4I64ARB, (AND GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w), (program, location, x, y, z, w), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4I64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4i64NV, glProgramUniform4i64NV, PROGRAMUNIFORM4I64NV, (AND GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w), (program, location, x, y, z, w), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4i64NV, glProgramUniform4i64NV, PROGRAMUNIFORM4I64NV, (AND GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w), (program, location, x, y, z, w), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4I64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4i64vARB, glProgramUniform4i64vARB, PROGRAMUNIFORM4I64VARB, (AND GLuint program, GLint location, GLsizei count, const GLint64 *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4i64vARB, glProgramUniform4i64vARB, PROGRAMUNIFORM4I64VARB, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4I64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4i64vNV, glProgramUniform4i64vNV, PROGRAMUNIFORM4I64VNV, (AND GLuint program, GLint location, GLsizei count, const GLint64EXT *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4i64vNV, glProgramUniform4i64vNV, PROGRAMUNIFORM4I64VNV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4IEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4iEXT, glProgramUniform4iEXT, PROGRAMUNIFORM4IEXT, (AND GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4iEXT, glProgramUniform4iEXT, PROGRAMUNIFORM4IEXT, (AND GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4iv, glProgramUniform4iv, PROGRAMUNIFORM4IV, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4iv, glProgramUniform4iv, PROGRAMUNIFORM4IV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4IVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4ivEXT, glProgramUniform4ivEXT, PROGRAMUNIFORM4IVEXT, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4ivEXT, glProgramUniform4ivEXT, PROGRAMUNIFORM4IVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4ui, glProgramUniform4ui, PROGRAMUNIFORM4UI, (AND GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4ui, glProgramUniform4ui, PROGRAMUNIFORM4UI, (AND GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4UI64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4ui64ARB, glProgramUniform4ui64ARB, PROGRAMUNIFORM4UI64ARB, (AND GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w), (program, location, x, y, z, w), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4ui64ARB, glProgramUniform4ui64ARB, PROGRAMUNIFORM4UI64ARB, (AND GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w), (program, location, x, y, z, w), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4UI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4ui64NV, glProgramUniform4ui64NV, PROGRAMUNIFORM4UI64NV, (AND GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w), (program, location, x, y, z, w), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4ui64NV, glProgramUniform4ui64NV, PROGRAMUNIFORM4UI64NV, (AND GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w), (program, location, x, y, z, w), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4UI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4ui64vARB, glProgramUniform4ui64vARB, PROGRAMUNIFORM4UI64VARB, (AND GLuint program, GLint location, GLsizei count, const GLuint64 *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4ui64vARB, glProgramUniform4ui64vARB, PROGRAMUNIFORM4UI64VARB, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4UI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4ui64vNV, glProgramUniform4ui64vNV, PROGRAMUNIFORM4UI64VNV, (AND GLuint program, GLint location, GLsizei count, const GLuint64EXT *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4ui64vNV, glProgramUniform4ui64vNV, PROGRAMUNIFORM4UI64VNV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4UIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4uiEXT, glProgramUniform4uiEXT, PROGRAMUNIFORM4UIEXT, (AND GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4uiEXT, glProgramUniform4uiEXT, PROGRAMUNIFORM4UIEXT, (AND GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4uiv, glProgramUniform4uiv, PROGRAMUNIFORM4UIV, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4uiv, glProgramUniform4uiv, PROGRAMUNIFORM4UIV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORM4UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniform4uivEXT, glProgramUniform4uivEXT, PROGRAMUNIFORM4UIVEXT, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniform4uivEXT, glProgramUniform4uivEXT, PROGRAMUNIFORM4UIVEXT, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMHANDLEUI64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformHandleui64ARB, glProgramUniformHandleui64ARB, PROGRAMUNIFORMHANDLEUI64ARB, (AND GLuint program, GLint location, GLuint64 value), (program, location, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformHandleui64ARB, glProgramUniformHandleui64ARB, PROGRAMUNIFORMHANDLEUI64ARB, (AND GLuint program, GLint location, GLuint64 value), (program, location, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMHANDLEUI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformHandleui64NV, glProgramUniformHandleui64NV, PROGRAMUNIFORMHANDLEUI64NV, (AND GLuint program, GLint location, GLuint64 value), (program, location, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformHandleui64NV, glProgramUniformHandleui64NV, PROGRAMUNIFORMHANDLEUI64NV, (AND GLuint program, GLint location, GLuint64 value), (program, location, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMHANDLEUI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformHandleui64vARB, glProgramUniformHandleui64vARB, PROGRAMUNIFORMHANDLEUI64VARB, (AND GLuint program, GLint location, GLsizei count, const GLuint64 *values), (program, location, count, values), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformHandleui64vARB, glProgramUniformHandleui64vARB, PROGRAMUNIFORMHANDLEUI64VARB, (AND GLuint program, GLint location, GLsizei count, memptr values), (program, location, count, values), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMHANDLEUI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformHandleui64vNV, glProgramUniformHandleui64vNV, PROGRAMUNIFORMHANDLEUI64VNV, (AND GLuint program, GLint location, GLsizei count, const GLuint64 *values), (program, location, count, values), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformHandleui64vNV, glProgramUniformHandleui64vNV, PROGRAMUNIFORMHANDLEUI64VNV, (AND GLuint program, GLint location, GLsizei count, memptr values), (program, location, count, values), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix2dv, glProgramUniformMatrix2dv, PROGRAMUNIFORMMATRIX2DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix2dv, glProgramUniformMatrix2dv, PROGRAMUNIFORMMATRIX2DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX2DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix2dvEXT, glProgramUniformMatrix2dvEXT, PROGRAMUNIFORMMATRIX2DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix2dvEXT, glProgramUniformMatrix2dvEXT, PROGRAMUNIFORMMATRIX2DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX2FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix2fv, glProgramUniformMatrix2fv, PROGRAMUNIFORMMATRIX2FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix2fv, glProgramUniformMatrix2fv, PROGRAMUNIFORMMATRIX2FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX2FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix2fvEXT, glProgramUniformMatrix2fvEXT, PROGRAMUNIFORMMATRIX2FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix2fvEXT, glProgramUniformMatrix2fvEXT, PROGRAMUNIFORMMATRIX2FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX2X3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix2x3dv, glProgramUniformMatrix2x3dv, PROGRAMUNIFORMMATRIX2X3DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix2x3dv, glProgramUniformMatrix2x3dv, PROGRAMUNIFORMMATRIX2X3DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX2X3DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix2x3dvEXT, glProgramUniformMatrix2x3dvEXT, PROGRAMUNIFORMMATRIX2X3DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix2x3dvEXT, glProgramUniformMatrix2x3dvEXT, PROGRAMUNIFORMMATRIX2X3DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX2X3FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix2x3fv, glProgramUniformMatrix2x3fv, PROGRAMUNIFORMMATRIX2X3FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix2x3fv, glProgramUniformMatrix2x3fv, PROGRAMUNIFORMMATRIX2X3FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX2X3FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix2x3fvEXT, glProgramUniformMatrix2x3fvEXT, PROGRAMUNIFORMMATRIX2X3FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix2x3fvEXT, glProgramUniformMatrix2x3fvEXT, PROGRAMUNIFORMMATRIX2X3FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX2X4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix2x4dv, glProgramUniformMatrix2x4dv, PROGRAMUNIFORMMATRIX2X4DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix2x4dv, glProgramUniformMatrix2x4dv, PROGRAMUNIFORMMATRIX2X4DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX2X4DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix2x4dvEXT, glProgramUniformMatrix2x4dvEXT, PROGRAMUNIFORMMATRIX2X4DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix2x4dvEXT, glProgramUniformMatrix2x4dvEXT, PROGRAMUNIFORMMATRIX2X4DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX2X4FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix2x4fv, glProgramUniformMatrix2x4fv, PROGRAMUNIFORMMATRIX2X4FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix2x4fv, glProgramUniformMatrix2x4fv, PROGRAMUNIFORMMATRIX2X4FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX2X4FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix2x4fvEXT, glProgramUniformMatrix2x4fvEXT, PROGRAMUNIFORMMATRIX2X4FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix2x4fvEXT, glProgramUniformMatrix2x4fvEXT, PROGRAMUNIFORMMATRIX2X4FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix3dv, glProgramUniformMatrix3dv, PROGRAMUNIFORMMATRIX3DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix3dv, glProgramUniformMatrix3dv, PROGRAMUNIFORMMATRIX3DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX3DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix3dvEXT, glProgramUniformMatrix3dvEXT, PROGRAMUNIFORMMATRIX3DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix3dvEXT, glProgramUniformMatrix3dvEXT, PROGRAMUNIFORMMATRIX3DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX3FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix3fv, glProgramUniformMatrix3fv, PROGRAMUNIFORMMATRIX3FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix3fv, glProgramUniformMatrix3fv, PROGRAMUNIFORMMATRIX3FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX3FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix3fvEXT, glProgramUniformMatrix3fvEXT, PROGRAMUNIFORMMATRIX3FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix3fvEXT, glProgramUniformMatrix3fvEXT, PROGRAMUNIFORMMATRIX3FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX3X2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix3x2dv, glProgramUniformMatrix3x2dv, PROGRAMUNIFORMMATRIX3X2DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix3x2dv, glProgramUniformMatrix3x2dv, PROGRAMUNIFORMMATRIX3X2DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX3X2DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix3x2dvEXT, glProgramUniformMatrix3x2dvEXT, PROGRAMUNIFORMMATRIX3X2DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix3x2dvEXT, glProgramUniformMatrix3x2dvEXT, PROGRAMUNIFORMMATRIX3X2DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX3X2FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix3x2fv, glProgramUniformMatrix3x2fv, PROGRAMUNIFORMMATRIX3X2FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix3x2fv, glProgramUniformMatrix3x2fv, PROGRAMUNIFORMMATRIX3X2FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX3X2FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix3x2fvEXT, glProgramUniformMatrix3x2fvEXT, PROGRAMUNIFORMMATRIX3X2FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix3x2fvEXT, glProgramUniformMatrix3x2fvEXT, PROGRAMUNIFORMMATRIX3X2FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX3X4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix3x4dv, glProgramUniformMatrix3x4dv, PROGRAMUNIFORMMATRIX3X4DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix3x4dv, glProgramUniformMatrix3x4dv, PROGRAMUNIFORMMATRIX3X4DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX3X4DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix3x4dvEXT, glProgramUniformMatrix3x4dvEXT, PROGRAMUNIFORMMATRIX3X4DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix3x4dvEXT, glProgramUniformMatrix3x4dvEXT, PROGRAMUNIFORMMATRIX3X4DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX3X4FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix3x4fv, glProgramUniformMatrix3x4fv, PROGRAMUNIFORMMATRIX3X4FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix3x4fv, glProgramUniformMatrix3x4fv, PROGRAMUNIFORMMATRIX3X4FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX3X4FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix3x4fvEXT, glProgramUniformMatrix3x4fvEXT, PROGRAMUNIFORMMATRIX3X4FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix3x4fvEXT, glProgramUniformMatrix3x4fvEXT, PROGRAMUNIFORMMATRIX3X4FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix4dv, glProgramUniformMatrix4dv, PROGRAMUNIFORMMATRIX4DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix4dv, glProgramUniformMatrix4dv, PROGRAMUNIFORMMATRIX4DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX4DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix4dvEXT, glProgramUniformMatrix4dvEXT, PROGRAMUNIFORMMATRIX4DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix4dvEXT, glProgramUniformMatrix4dvEXT, PROGRAMUNIFORMMATRIX4DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX4FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix4fv, glProgramUniformMatrix4fv, PROGRAMUNIFORMMATRIX4FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix4fv, glProgramUniformMatrix4fv, PROGRAMUNIFORMMATRIX4FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX4FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix4fvEXT, glProgramUniformMatrix4fvEXT, PROGRAMUNIFORMMATRIX4FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix4fvEXT, glProgramUniformMatrix4fvEXT, PROGRAMUNIFORMMATRIX4FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX4X2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix4x2dv, glProgramUniformMatrix4x2dv, PROGRAMUNIFORMMATRIX4X2DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix4x2dv, glProgramUniformMatrix4x2dv, PROGRAMUNIFORMMATRIX4X2DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX4X2DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix4x2dvEXT, glProgramUniformMatrix4x2dvEXT, PROGRAMUNIFORMMATRIX4X2DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix4x2dvEXT, glProgramUniformMatrix4x2dvEXT, PROGRAMUNIFORMMATRIX4X2DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX4X2FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix4x2fv, glProgramUniformMatrix4x2fv, PROGRAMUNIFORMMATRIX4X2FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix4x2fv, glProgramUniformMatrix4x2fv, PROGRAMUNIFORMMATRIX4X2FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX4X2FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix4x2fvEXT, glProgramUniformMatrix4x2fvEXT, PROGRAMUNIFORMMATRIX4X2FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix4x2fvEXT, glProgramUniformMatrix4x2fvEXT, PROGRAMUNIFORMMATRIX4X2FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX4X3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix4x3dv, glProgramUniformMatrix4x3dv, PROGRAMUNIFORMMATRIX4X3DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix4x3dv, glProgramUniformMatrix4x3dv, PROGRAMUNIFORMMATRIX4X3DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX4X3DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix4x3dvEXT, glProgramUniformMatrix4x3dvEXT, PROGRAMUNIFORMMATRIX4X3DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix4x3dvEXT, glProgramUniformMatrix4x3dvEXT, PROGRAMUNIFORMMATRIX4X3DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX4X3FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix4x3fv, glProgramUniformMatrix4x3fv, PROGRAMUNIFORMMATRIX4X3FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix4x3fv, glProgramUniformMatrix4x3fv, PROGRAMUNIFORMMATRIX4X3FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMMATRIX4X3FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformMatrix4x3fvEXT, glProgramUniformMatrix4x3fvEXT, PROGRAMUNIFORMMATRIX4X3FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformMatrix4x3fvEXT, glProgramUniformMatrix4x3fvEXT, PROGRAMUNIFORMMATRIX4X3FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, memptr value), (program, location, count, transpose, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMUI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformui64NV, glProgramUniformui64NV, PROGRAMUNIFORMUI64NV, (AND GLuint program, GLint location, GLuint64EXT value), (program, location, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformui64NV, glProgramUniformui64NV, PROGRAMUNIFORMUI64NV, (AND GLuint program, GLint location, GLuint64EXT value), (program, location, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMUNIFORMUI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramUniformui64vNV, glProgramUniformui64vNV, PROGRAMUNIFORMUI64VNV, (AND GLuint program, GLint location, GLsizei count, const GLuint64EXT *value), (program, location, count, value), &program, GL_void_return) GL_PROCM(void, gl, ProgramUniformui64vNV, glProgramUniformui64vNV, PROGRAMUNIFORMUI64VNV, (AND GLuint program, GLint location, GLsizei count, memptr value), (program, location, count, value), &program, GL_void_return) #endif #endif #ifndef NO_GLPROGRAMVERTEXLIMITNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProgramVertexLimitNV, glProgramVertexLimitNV, PROGRAMVERTEXLIMITNV, (AND GLenum target, GLint limit), (target, limit), &target, GL_void_return) GL_PROCM(void, gl, ProgramVertexLimitNV, glProgramVertexLimitNV, PROGRAMVERTEXLIMITNV, (AND GLenum target, GLint limit), (target, limit), &target, GL_void_return) #endif #endif #ifndef NO_GLPROVOKINGVERTEX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProvokingVertex, glProvokingVertex, PROVOKINGVERTEX, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, ProvokingVertex, glProvokingVertex, PROVOKINGVERTEX, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLPROVOKINGVERTEXEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ProvokingVertexEXT, glProvokingVertexEXT, PROVOKINGVERTEXEXT, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, ProvokingVertexEXT, glProvokingVertexEXT, PROVOKINGVERTEXEXT, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLPUSHATTRIB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PushAttrib, glPushAttrib, PUSHATTRIB, (AND GLbitfield mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, PushAttrib, glPushAttrib, PUSHATTRIB, (AND GLbitfield mask), (mask), &mask, GL_void_return) #endif #endif #ifndef NO_GLPUSHCLIENTATTRIB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PushClientAttrib, glPushClientAttrib, PUSHCLIENTATTRIB, (AND GLbitfield mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, PushClientAttrib, glPushClientAttrib, PUSHCLIENTATTRIB, (AND GLbitfield mask), (mask), &mask, GL_void_return) #endif #endif #ifndef NO_GLPUSHCLIENTATTRIBDEFAULTEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PushClientAttribDefaultEXT, glPushClientAttribDefaultEXT, PUSHCLIENTATTRIBDEFAULTEXT, (AND GLbitfield mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, PushClientAttribDefaultEXT, glPushClientAttribDefaultEXT, PUSHCLIENTATTRIBDEFAULTEXT, (AND GLbitfield mask), (mask), &mask, GL_void_return) #endif #endif #ifndef NO_GLPUSHDEBUGGROUP #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PushDebugGroup, glPushDebugGroup, PUSHDEBUGGROUP, (AND GLenum source, GLuint id, GLsizei length, const GLchar *message), (source, id, length, message), &source, GL_void_return) GL_PROCM(void, gl, PushDebugGroup, glPushDebugGroup, PUSHDEBUGGROUP, (AND GLenum source, GLuint id, GLsizei length, memptr message), (source, id, length, message), &source, GL_void_return) #endif #endif #ifndef NO_GLPUSHGROUPMARKEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, PushGroupMarkerEXT, glPushGroupMarkerEXT, PUSHGROUPMARKEREXT, (AND GLsizei length, const GLchar *marker), (length, marker), &length, GL_void_return) GL_PROCM(void, gl, PushGroupMarkerEXT, glPushGroupMarkerEXT, PUSHGROUPMARKEREXT, (AND GLsizei length, memptr marker), (length, marker), &length, GL_void_return) #endif #endif #ifndef NO_GLPUSHMATRIX GL_PROC(void, gl, PushMatrix, glPushMatrix, PUSHMATRIX, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, PushMatrix, glPushMatrix, PUSHMATRIX, (NOTHING), (), NULL, GL_void_return) #endif #ifndef NO_GLPUSHNAME GL_PROC(void, gl, PushName, glPushName, PUSHNAME, (AND GLuint name), (name), &name, GL_void_return) GL_PROCM(void, gl, PushName, glPushName, PUSHNAME, (AND GLuint name), (name), &name, GL_void_return) #endif #ifndef NO_GLQUERYCOUNTER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, QueryCounter, glQueryCounter, QUERYCOUNTER, (AND GLuint id, GLenum target), (id, target), &id, GL_void_return) GL_PROCM(void, gl, QueryCounter, glQueryCounter, QUERYCOUNTER, (AND GLuint id, GLenum target), (id, target), &id, GL_void_return) #endif #endif #ifndef NO_GLQUERYMATRIXXOES #if !defined(TINYGL_ONLY) GL_PROC(GLbitfield, gl, QueryMatrixxOES, glQueryMatrixxOES, QUERYMATRIXXOES, (AND GLfixed *mantissa, GLint *exponent), (mantissa, exponent), &mantissa, return (GLbitfield)) GL_PROCM(GLbitfield, gl, QueryMatrixxOES, glQueryMatrixxOES, QUERYMATRIXXOES, (AND memptr mantissa, memptr exponent), (mantissa, exponent), &mantissa, return (GLbitfield)) #endif #endif #ifndef NO_GLQUERYOBJECTPARAMETERUIAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, QueryObjectParameteruiAMD, glQueryObjectParameteruiAMD, QUERYOBJECTPARAMETERUIAMD, (AND GLenum target, GLuint id, GLenum pname, GLuint param), (target, id, pname, param), &target, GL_void_return) GL_PROCM(void, gl, QueryObjectParameteruiAMD, glQueryObjectParameteruiAMD, QUERYOBJECTPARAMETERUIAMD, (AND GLenum target, GLuint id, GLenum pname, GLuint param), (target, id, pname, param), &target, GL_void_return) #endif #endif #ifndef NO_GLQUERYRESOURCENV #if !defined(TINYGL_ONLY) GL_PROC(GLint, gl, QueryResourceNV, glQueryResourceNV, QUERYRESOURCENV, (AND GLenum queryType, GLint tagId, GLuint bufSize, GLint *buffer), (queryType, tagId, bufSize, buffer), &queryType, return (GLint)) GL_PROCM(GLint, gl, QueryResourceNV, glQueryResourceNV, QUERYRESOURCENV, (AND GLenum queryType, GLint tagId, GLuint bufSize, memptr buffer), (queryType, tagId, bufSize, buffer), &queryType, return (GLint)) #endif #endif #ifndef NO_GLQUERYRESOURCETAGNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, QueryResourceTagNV, glQueryResourceTagNV, QUERYRESOURCETAGNV, (AND GLint tagId, const GLchar *tagString), (tagId, tagString), &tagId, GL_void_return) GL_PROCM(void, gl, QueryResourceTagNV, glQueryResourceTagNV, QUERYRESOURCETAGNV, (AND GLint tagId, memptr tagString), (tagId, tagString), &tagId, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos2d, glRasterPos2d, RASTERPOS2D, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, RasterPos2d, glRasterPos2d, RASTERPOS2D, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos2dv, glRasterPos2dv, RASTERPOS2DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, RasterPos2dv, glRasterPos2dv, RASTERPOS2DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS2F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos2f, glRasterPos2f, RASTERPOS2F, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, RasterPos2f, glRasterPos2f, RASTERPOS2F, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS2FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos2fv, glRasterPos2fv, RASTERPOS2FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, RasterPos2fv, glRasterPos2fv, RASTERPOS2FV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS2I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos2i, glRasterPos2i, RASTERPOS2I, (AND GLint x, GLint y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, RasterPos2i, glRasterPos2i, RASTERPOS2I, (AND GLint x, GLint y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS2IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos2iv, glRasterPos2iv, RASTERPOS2IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, RasterPos2iv, glRasterPos2iv, RASTERPOS2IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS2S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos2s, glRasterPos2s, RASTERPOS2S, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, RasterPos2s, glRasterPos2s, RASTERPOS2S, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS2SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos2sv, glRasterPos2sv, RASTERPOS2SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, RasterPos2sv, glRasterPos2sv, RASTERPOS2SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS2XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos2xOES, glRasterPos2xOES, RASTERPOS2XOES, (AND GLfixed x, GLfixed y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, RasterPos2xOES, glRasterPos2xOES, RASTERPOS2XOES, (AND GLfixed x, GLfixed y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS2XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos2xvOES, glRasterPos2xvOES, RASTERPOS2XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, RasterPos2xvOES, glRasterPos2xvOES, RASTERPOS2XVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos3d, glRasterPos3d, RASTERPOS3D, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, RasterPos3d, glRasterPos3d, RASTERPOS3D, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos3dv, glRasterPos3dv, RASTERPOS3DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, RasterPos3dv, glRasterPos3dv, RASTERPOS3DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS3F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos3f, glRasterPos3f, RASTERPOS3F, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, RasterPos3f, glRasterPos3f, RASTERPOS3F, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS3FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos3fv, glRasterPos3fv, RASTERPOS3FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, RasterPos3fv, glRasterPos3fv, RASTERPOS3FV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS3I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos3i, glRasterPos3i, RASTERPOS3I, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, RasterPos3i, glRasterPos3i, RASTERPOS3I, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS3IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos3iv, glRasterPos3iv, RASTERPOS3IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, RasterPos3iv, glRasterPos3iv, RASTERPOS3IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS3S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos3s, glRasterPos3s, RASTERPOS3S, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, RasterPos3s, glRasterPos3s, RASTERPOS3S, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS3SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos3sv, glRasterPos3sv, RASTERPOS3SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, RasterPos3sv, glRasterPos3sv, RASTERPOS3SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS3XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos3xOES, glRasterPos3xOES, RASTERPOS3XOES, (AND GLfixed x, GLfixed y, GLfixed z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, RasterPos3xOES, glRasterPos3xOES, RASTERPOS3XOES, (AND GLfixed x, GLfixed y, GLfixed z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS3XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos3xvOES, glRasterPos3xvOES, RASTERPOS3XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, RasterPos3xvOES, glRasterPos3xvOES, RASTERPOS3XVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS4D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos4d, glRasterPos4d, RASTERPOS4D, (AND GLdouble x, GLdouble y, GLdouble z, GLdouble w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, RasterPos4d, glRasterPos4d, RASTERPOS4D, (AND GLdouble x, GLdouble y, GLdouble z, GLdouble w), (x, y, z, w), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos4dv, glRasterPos4dv, RASTERPOS4DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, RasterPos4dv, glRasterPos4dv, RASTERPOS4DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS4F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos4f, glRasterPos4f, RASTERPOS4F, (AND GLfloat x, GLfloat y, GLfloat z, GLfloat w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, RasterPos4f, glRasterPos4f, RASTERPOS4F, (AND GLfloat x, GLfloat y, GLfloat z, GLfloat w), (x, y, z, w), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS4FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos4fv, glRasterPos4fv, RASTERPOS4FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, RasterPos4fv, glRasterPos4fv, RASTERPOS4FV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS4I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos4i, glRasterPos4i, RASTERPOS4I, (AND GLint x, GLint y, GLint z, GLint w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, RasterPos4i, glRasterPos4i, RASTERPOS4I, (AND GLint x, GLint y, GLint z, GLint w), (x, y, z, w), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS4IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos4iv, glRasterPos4iv, RASTERPOS4IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, RasterPos4iv, glRasterPos4iv, RASTERPOS4IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS4S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos4s, glRasterPos4s, RASTERPOS4S, (AND GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, RasterPos4s, glRasterPos4s, RASTERPOS4S, (AND GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (x, y, z, w), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS4SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos4sv, glRasterPos4sv, RASTERPOS4SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, RasterPos4sv, glRasterPos4sv, RASTERPOS4SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS4XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos4xOES, glRasterPos4xOES, RASTERPOS4XOES, (AND GLfixed x, GLfixed y, GLfixed z, GLfixed w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, RasterPos4xOES, glRasterPos4xOES, RASTERPOS4XOES, (AND GLfixed x, GLfixed y, GLfixed z, GLfixed w), (x, y, z, w), &x, GL_void_return) #endif #endif #ifndef NO_GLRASTERPOS4XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterPos4xvOES, glRasterPos4xvOES, RASTERPOS4XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, RasterPos4xvOES, glRasterPos4xvOES, RASTERPOS4XVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLRASTERSAMPLESEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RasterSamplesEXT, glRasterSamplesEXT, RASTERSAMPLESEXT, (AND GLuint samples, GLboolean32 fixedsamplelocations), (samples, fixedsamplelocations), &samples, GL_void_return) GL_PROCM(void, gl, RasterSamplesEXT, glRasterSamplesEXT, RASTERSAMPLESEXT, (AND GLuint samples, GLboolean32 fixedsamplelocations), (samples, fixedsamplelocations), &samples, GL_void_return) #endif #endif #ifndef NO_GLREADBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReadBuffer, glReadBuffer, READBUFFER, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, ReadBuffer, glReadBuffer, READBUFFER, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLREADINSTRUMENTSSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReadInstrumentsSGIX, glReadInstrumentsSGIX, READINSTRUMENTSSGIX, (AND GLint marker), (marker), &marker, GL_void_return) GL_PROCM(void, gl, ReadInstrumentsSGIX, glReadInstrumentsSGIX, READINSTRUMENTSSGIX, (AND GLint marker), (marker), &marker, GL_void_return) #endif #endif #ifndef NO_GLREADPIXELS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReadPixels, glReadPixels, READPIXELS, (AND GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels), (x, y, width, height, format, type, pixels), &x, GL_void_return) GL_PROCM(void, gl, ReadPixels, glReadPixels, READPIXELS, (AND GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr pixels), (x, y, width, height, format, type, pixels), &x, GL_void_return) #endif #endif #ifndef NO_GLREADNPIXELS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReadnPixels, glReadnPixels, READNPIXELS, (AND GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data), (x, y, width, height, format, type, bufSize, data), &x, GL_void_return) GL_PROCM(void, gl, ReadnPixels, glReadnPixels, READNPIXELS, (AND GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, memptr data), (x, y, width, height, format, type, bufSize, data), &x, GL_void_return) #endif #endif #ifndef NO_GLREADNPIXELSARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReadnPixelsARB, glReadnPixelsARB, READNPIXELSARB, (AND GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data), (x, y, width, height, format, type, bufSize, data), &x, GL_void_return) GL_PROCM(void, gl, ReadnPixelsARB, glReadnPixelsARB, READNPIXELSARB, (AND GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, memptr data), (x, y, width, height, format, type, bufSize, data), &x, GL_void_return) #endif #endif #ifndef NO_GLRECTD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Rectd, glRectd, RECTD, (AND GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2), (x1, y1, x2, y2), &x1, GL_void_return) GL_PROCM(void, gl, Rectd, glRectd, RECTD, (AND GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2), (x1, y1, x2, y2), &x1, GL_void_return) #endif #endif #ifndef NO_GLRECTDV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Rectdv, glRectdv, RECTDV, (AND const GLdouble *v1, const GLdouble *v2), (v1, v2), &v1, GL_void_return) GL_PROCM(void, gl, Rectdv, glRectdv, RECTDV, (AND memptr v1, memptr v2), (v1, v2), &v1, GL_void_return) #endif #endif #ifndef NO_GLRECTF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Rectf, glRectf, RECTF, (AND GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2), (x1, y1, x2, y2), &x1, GL_void_return) GL_PROCM(void, gl, Rectf, glRectf, RECTF, (AND GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2), (x1, y1, x2, y2), &x1, GL_void_return) #endif #endif #ifndef NO_GLRECTFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Rectfv, glRectfv, RECTFV, (AND const GLfloat *v1, const GLfloat *v2), (v1, v2), &v1, GL_void_return) GL_PROCM(void, gl, Rectfv, glRectfv, RECTFV, (AND memptr v1, memptr v2), (v1, v2), &v1, GL_void_return) #endif #endif #ifndef NO_GLRECTI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Recti, glRecti, RECTI, (AND GLint x1, GLint y1, GLint x2, GLint y2), (x1, y1, x2, y2), &x1, GL_void_return) GL_PROCM(void, gl, Recti, glRecti, RECTI, (AND GLint x1, GLint y1, GLint x2, GLint y2), (x1, y1, x2, y2), &x1, GL_void_return) #endif #endif #ifndef NO_GLRECTIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Rectiv, glRectiv, RECTIV, (AND const GLint *v1, const GLint *v2), (v1, v2), &v1, GL_void_return) GL_PROCM(void, gl, Rectiv, glRectiv, RECTIV, (AND memptr v1, memptr v2), (v1, v2), &v1, GL_void_return) #endif #endif #ifndef NO_GLRECTS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Rects, glRects, RECTS, (AND GLshort32 x1, GLshort32 y1, GLshort32 x2, GLshort32 y2), (x1, y1, x2, y2), &x1, GL_void_return) GL_PROCM(void, gl, Rects, glRects, RECTS, (AND GLshort32 x1, GLshort32 y1, GLshort32 x2, GLshort32 y2), (x1, y1, x2, y2), &x1, GL_void_return) #endif #endif #ifndef NO_GLRECTSV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Rectsv, glRectsv, RECTSV, (AND const GLshort *v1, const GLshort *v2), (v1, v2), &v1, GL_void_return) GL_PROCM(void, gl, Rectsv, glRectsv, RECTSV, (AND memptr v1, memptr v2), (v1, v2), &v1, GL_void_return) #endif #endif #ifndef NO_GLRECTXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RectxOES, glRectxOES, RECTXOES, (AND GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2), (x1, y1, x2, y2), &x1, GL_void_return) GL_PROCM(void, gl, RectxOES, glRectxOES, RECTXOES, (AND GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2), (x1, y1, x2, y2), &x1, GL_void_return) #endif #endif #ifndef NO_GLRECTXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RectxvOES, glRectxvOES, RECTXVOES, (AND const GLfixed *v1, const GLfixed *v2), (v1, v2), &v1, GL_void_return) GL_PROCM(void, gl, RectxvOES, glRectxvOES, RECTXVOES, (AND memptr v1, memptr v2), (v1, v2), &v1, GL_void_return) #endif #endif #ifndef NO_GLREFERENCEPLANESGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReferencePlaneSGIX, glReferencePlaneSGIX, REFERENCEPLANESGIX, (AND const GLdouble *equation), (equation), &equation, GL_void_return) GL_PROCM(void, gl, ReferencePlaneSGIX, glReferencePlaneSGIX, REFERENCEPLANESGIX, (AND memptr equation), (equation), &equation, GL_void_return) #endif #endif #ifndef NO_GLRELEASEKEYEDMUTEXWIN32EXT #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, ReleaseKeyedMutexWin32EXT, glReleaseKeyedMutexWin32EXT, RELEASEKEYEDMUTEXWIN32EXT, (AND GLuint memory, GLuint64 key), (memory, key), &memory, return (GLboolean)) GL_PROCM(GLboolean, gl, ReleaseKeyedMutexWin32EXT, glReleaseKeyedMutexWin32EXT, RELEASEKEYEDMUTEXWIN32EXT, (AND GLuint memory, GLuint64 key), (memory, key), &memory, return (GLboolean)) #endif #endif #ifndef NO_GLRELEASESHADERCOMPILER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReleaseShaderCompiler, glReleaseShaderCompiler, RELEASESHADERCOMPILER, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, ReleaseShaderCompiler, glReleaseShaderCompiler, RELEASESHADERCOMPILER, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLRENDERGPUMASKNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RenderGpuMaskNV, glRenderGpuMaskNV, RENDERGPUMASKNV, (AND GLbitfield mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, RenderGpuMaskNV, glRenderGpuMaskNV, RENDERGPUMASKNV, (AND GLbitfield mask), (mask), &mask, GL_void_return) #endif #endif #ifndef NO_GLRENDERMODE GL_PROC(GLint, gl, RenderMode, glRenderMode, RENDERMODE, (AND GLenum mode), (mode), &mode, return (GLint)) GL_PROCM(GLint, gl, RenderMode, glRenderMode, RENDERMODE, (AND GLenum mode), (mode), &mode, return (GLint)) #endif #ifndef NO_GLRENDERBUFFERSTORAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RenderbufferStorage, glRenderbufferStorage, RENDERBUFFERSTORAGE, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height), (target, internalformat, width, height), &target, GL_void_return) GL_PROCM(void, gl, RenderbufferStorage, glRenderbufferStorage, RENDERBUFFERSTORAGE, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height), (target, internalformat, width, height), &target, GL_void_return) #endif #endif #ifndef NO_GLRENDERBUFFERSTORAGEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RenderbufferStorageEXT, glRenderbufferStorageEXT, RENDERBUFFERSTORAGEEXT, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height), (target, internalformat, width, height), &target, GL_void_return) GL_PROCM(void, gl, RenderbufferStorageEXT, glRenderbufferStorageEXT, RENDERBUFFERSTORAGEEXT, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height), (target, internalformat, width, height), &target, GL_void_return) #endif #endif #ifndef NO_GLRENDERBUFFERSTORAGEMULTISAMPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RenderbufferStorageMultisample, glRenderbufferStorageMultisample, RENDERBUFFERSTORAGEMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height), (target, samples, internalformat, width, height), &target, GL_void_return) GL_PROCM(void, gl, RenderbufferStorageMultisample, glRenderbufferStorageMultisample, RENDERBUFFERSTORAGEMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height), (target, samples, internalformat, width, height), &target, GL_void_return) #endif #endif #ifndef NO_GLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RenderbufferStorageMultisampleCoverageNV, glRenderbufferStorageMultisampleCoverageNV, RENDERBUFFERSTORAGEMULTISAMPLECOVERAGENV, (AND GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height), (target, coverageSamples, colorSamples, internalformat, width, height), &target, GL_void_return) GL_PROCM(void, gl, RenderbufferStorageMultisampleCoverageNV, glRenderbufferStorageMultisampleCoverageNV, RENDERBUFFERSTORAGEMULTISAMPLECOVERAGENV, (AND GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height), (target, coverageSamples, colorSamples, internalformat, width, height), &target, GL_void_return) #endif #endif #ifndef NO_GLRENDERBUFFERSTORAGEMULTISAMPLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RenderbufferStorageMultisampleEXT, glRenderbufferStorageMultisampleEXT, RENDERBUFFERSTORAGEMULTISAMPLEEXT, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height), (target, samples, internalformat, width, height), &target, GL_void_return) GL_PROCM(void, gl, RenderbufferStorageMultisampleEXT, glRenderbufferStorageMultisampleEXT, RENDERBUFFERSTORAGEMULTISAMPLEEXT, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height), (target, samples, internalformat, width, height), &target, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEPOINTERSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodePointerSUN, glReplacementCodePointerSUN, REPLACEMENTCODEPOINTERSUN, (AND GLenum type, GLsizei stride, const void * *pointer), (type, stride, pointer), &type, GL_void_return) GL_PROCM(void, gl, ReplacementCodePointerSUN, glReplacementCodePointerSUN, REPLACEMENTCODEPOINTERSUN, (AND GLenum type, GLsizei stride, memptr pointer), (type, stride, pointer), &type, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUBSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeubSUN, glReplacementCodeubSUN, REPLACEMENTCODEUBSUN, (AND GLubyte32 code), (code), &code, GL_void_return) GL_PROCM(void, gl, ReplacementCodeubSUN, glReplacementCodeubSUN, REPLACEMENTCODEUBSUN, (AND GLubyte32 code), (code), &code, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUBVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeubvSUN, glReplacementCodeubvSUN, REPLACEMENTCODEUBVSUN, (AND const GLubyte *code), (code), &code, GL_void_return) GL_PROCM(void, gl, ReplacementCodeubvSUN, glReplacementCodeubvSUN, REPLACEMENTCODEUBVSUN, (AND memptr code), (code), &code, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUICOLOR3FVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiColor3fVertex3fSUN, glReplacementCodeuiColor3fVertex3fSUN, REPLACEMENTCODEUICOLOR3FVERTEX3FSUN, (AND GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z), (rc, r, g, b, x, y, z), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiColor3fVertex3fSUN, glReplacementCodeuiColor3fVertex3fSUN, REPLACEMENTCODEUICOLOR3FVERTEX3FSUN, (AND GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z), (rc, r, g, b, x, y, z), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiColor3fVertex3fvSUN, glReplacementCodeuiColor3fVertex3fvSUN, REPLACEMENTCODEUICOLOR3FVERTEX3FVSUN, (AND const GLuint *rc, const GLfloat *c, const GLfloat *v), (rc, c, v), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiColor3fVertex3fvSUN, glReplacementCodeuiColor3fVertex3fvSUN, REPLACEMENTCODEUICOLOR3FVERTEX3FVSUN, (AND memptr rc, memptr c, memptr v), (rc, c, v), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiColor4fNormal3fVertex3fSUN, glReplacementCodeuiColor4fNormal3fVertex3fSUN, REPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUN, (AND GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (rc, r, g, b, a, nx, ny, nz, x, y, z), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiColor4fNormal3fVertex3fSUN, glReplacementCodeuiColor4fNormal3fVertex3fSUN, REPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUN, (AND GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (rc, r, g, b, a, nx, ny, nz, x, y, z), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiColor4fNormal3fVertex3fvSUN, glReplacementCodeuiColor4fNormal3fVertex3fvSUN, REPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUN, (AND const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v), (rc, c, n, v), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiColor4fNormal3fVertex3fvSUN, glReplacementCodeuiColor4fNormal3fVertex3fvSUN, REPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUN, (AND memptr rc, memptr c, memptr n, memptr v), (rc, c, n, v), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiColor4ubVertex3fSUN, glReplacementCodeuiColor4ubVertex3fSUN, REPLACEMENTCODEUICOLOR4UBVERTEX3FSUN, (AND GLuint rc, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z), (rc, r, g, b, a, x, y, z), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiColor4ubVertex3fSUN, glReplacementCodeuiColor4ubVertex3fSUN, REPLACEMENTCODEUICOLOR4UBVERTEX3FSUN, (AND GLuint rc, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z), (rc, r, g, b, a, x, y, z), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiColor4ubVertex3fvSUN, glReplacementCodeuiColor4ubVertex3fvSUN, REPLACEMENTCODEUICOLOR4UBVERTEX3FVSUN, (AND const GLuint *rc, const GLubyte *c, const GLfloat *v), (rc, c, v), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiColor4ubVertex3fvSUN, glReplacementCodeuiColor4ubVertex3fvSUN, REPLACEMENTCODEUICOLOR4UBVERTEX3FVSUN, (AND memptr rc, memptr c, memptr v), (rc, c, v), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUINORMAL3FVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiNormal3fVertex3fSUN, glReplacementCodeuiNormal3fVertex3fSUN, REPLACEMENTCODEUINORMAL3FVERTEX3FSUN, (AND GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (rc, nx, ny, nz, x, y, z), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiNormal3fVertex3fSUN, glReplacementCodeuiNormal3fVertex3fSUN, REPLACEMENTCODEUINORMAL3FVERTEX3FSUN, (AND GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (rc, nx, ny, nz, x, y, z), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiNormal3fVertex3fvSUN, glReplacementCodeuiNormal3fVertex3fvSUN, REPLACEMENTCODEUINORMAL3FVERTEX3FVSUN, (AND const GLuint *rc, const GLfloat *n, const GLfloat *v), (rc, n, v), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiNormal3fVertex3fvSUN, glReplacementCodeuiNormal3fVertex3fvSUN, REPLACEMENTCODEUINORMAL3FVERTEX3FVSUN, (AND memptr rc, memptr n, memptr v), (rc, n, v), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUISUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiSUN, glReplacementCodeuiSUN, REPLACEMENTCODEUISUN, (AND GLuint code), (code), &code, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiSUN, glReplacementCodeuiSUN, REPLACEMENTCODEUISUN, (AND GLuint code), (code), &code, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN, glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN, REPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN, (AND GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (rc, s, t, r, g, b, a, nx, ny, nz, x, y, z), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN, glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN, REPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN, (AND GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (rc, s, t, r, g, b, a, nx, ny, nz, x, y, z), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN, glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN, REPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN, (AND const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v), (rc, tc, c, n, v), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN, glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN, REPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN, (AND memptr rc, memptr tc, memptr c, memptr n, memptr v), (rc, tc, c, n, v), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN, glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN, REPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUN, (AND GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (rc, s, t, nx, ny, nz, x, y, z), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN, glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN, REPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUN, (AND GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (rc, s, t, nx, ny, nz, x, y, z), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN, glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN, REPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUN, (AND const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v), (rc, tc, n, v), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN, glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN, REPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUN, (AND memptr rc, memptr tc, memptr n, memptr v), (rc, tc, n, v), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiTexCoord2fVertex3fSUN, glReplacementCodeuiTexCoord2fVertex3fSUN, REPLACEMENTCODEUITEXCOORD2FVERTEX3FSUN, (AND GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z), (rc, s, t, x, y, z), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiTexCoord2fVertex3fSUN, glReplacementCodeuiTexCoord2fVertex3fSUN, REPLACEMENTCODEUITEXCOORD2FVERTEX3FSUN, (AND GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z), (rc, s, t, x, y, z), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiTexCoord2fVertex3fvSUN, glReplacementCodeuiTexCoord2fVertex3fvSUN, REPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUN, (AND const GLuint *rc, const GLfloat *tc, const GLfloat *v), (rc, tc, v), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiTexCoord2fVertex3fvSUN, glReplacementCodeuiTexCoord2fVertex3fvSUN, REPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUN, (AND memptr rc, memptr tc, memptr v), (rc, tc, v), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUIVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiVertex3fSUN, glReplacementCodeuiVertex3fSUN, REPLACEMENTCODEUIVERTEX3FSUN, (AND GLuint rc, GLfloat x, GLfloat y, GLfloat z), (rc, x, y, z), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiVertex3fSUN, glReplacementCodeuiVertex3fSUN, REPLACEMENTCODEUIVERTEX3FSUN, (AND GLuint rc, GLfloat x, GLfloat y, GLfloat z), (rc, x, y, z), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUIVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuiVertex3fvSUN, glReplacementCodeuiVertex3fvSUN, REPLACEMENTCODEUIVERTEX3FVSUN, (AND const GLuint *rc, const GLfloat *v), (rc, v), &rc, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuiVertex3fvSUN, glReplacementCodeuiVertex3fvSUN, REPLACEMENTCODEUIVERTEX3FVSUN, (AND memptr rc, memptr v), (rc, v), &rc, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUIVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeuivSUN, glReplacementCodeuivSUN, REPLACEMENTCODEUIVSUN, (AND const GLuint *code), (code), &code, GL_void_return) GL_PROCM(void, gl, ReplacementCodeuivSUN, glReplacementCodeuivSUN, REPLACEMENTCODEUIVSUN, (AND memptr code), (code), &code, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUSSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeusSUN, glReplacementCodeusSUN, REPLACEMENTCODEUSSUN, (AND GLushort32 code), (code), &code, GL_void_return) GL_PROCM(void, gl, ReplacementCodeusSUN, glReplacementCodeusSUN, REPLACEMENTCODEUSSUN, (AND GLushort32 code), (code), &code, GL_void_return) #endif #endif #ifndef NO_GLREPLACEMENTCODEUSVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ReplacementCodeusvSUN, glReplacementCodeusvSUN, REPLACEMENTCODEUSVSUN, (AND const GLushort *code), (code), &code, GL_void_return) GL_PROCM(void, gl, ReplacementCodeusvSUN, glReplacementCodeusvSUN, REPLACEMENTCODEUSVSUN, (AND memptr code), (code), &code, GL_void_return) #endif #endif #ifndef NO_GLREQUESTRESIDENTPROGRAMSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RequestResidentProgramsNV, glRequestResidentProgramsNV, REQUESTRESIDENTPROGRAMSNV, (AND GLsizei n, const GLuint *programs), (n, programs), &n, GL_void_return) GL_PROCM(void, gl, RequestResidentProgramsNV, glRequestResidentProgramsNV, REQUESTRESIDENTPROGRAMSNV, (AND GLsizei n, memptr programs), (n, programs), &n, GL_void_return) #endif #endif #ifndef NO_GLRESETHISTOGRAM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ResetHistogram, glResetHistogram, RESETHISTOGRAM, (AND GLenum target), (target), &target, GL_void_return) GL_PROCM(void, gl, ResetHistogram, glResetHistogram, RESETHISTOGRAM, (AND GLenum target), (target), &target, GL_void_return) #endif #endif #ifndef NO_GLRESETHISTOGRAMEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ResetHistogramEXT, glResetHistogramEXT, RESETHISTOGRAMEXT, (AND GLenum target), (target), &target, GL_void_return) GL_PROCM(void, gl, ResetHistogramEXT, glResetHistogramEXT, RESETHISTOGRAMEXT, (AND GLenum target), (target), &target, GL_void_return) #endif #endif #ifndef NO_GLRESETMINMAX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ResetMinmax, glResetMinmax, RESETMINMAX, (AND GLenum target), (target), &target, GL_void_return) GL_PROCM(void, gl, ResetMinmax, glResetMinmax, RESETMINMAX, (AND GLenum target), (target), &target, GL_void_return) #endif #endif #ifndef NO_GLRESETMINMAXEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ResetMinmaxEXT, glResetMinmaxEXT, RESETMINMAXEXT, (AND GLenum target), (target), &target, GL_void_return) GL_PROCM(void, gl, ResetMinmaxEXT, glResetMinmaxEXT, RESETMINMAXEXT, (AND GLenum target), (target), &target, GL_void_return) #endif #endif #ifndef NO_GLRESIZEBUFFERSMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ResizeBuffersMESA, glResizeBuffersMESA, RESIZEBUFFERSMESA, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, ResizeBuffersMESA, glResizeBuffersMESA, RESIZEBUFFERSMESA, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLRESOLVEDEPTHVALUESNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ResolveDepthValuesNV, glResolveDepthValuesNV, RESOLVEDEPTHVALUESNV, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, ResolveDepthValuesNV, glResolveDepthValuesNV, RESOLVEDEPTHVALUESNV, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLRESUMETRANSFORMFEEDBACK #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ResumeTransformFeedback, glResumeTransformFeedback, RESUMETRANSFORMFEEDBACK, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, ResumeTransformFeedback, glResumeTransformFeedback, RESUMETRANSFORMFEEDBACK, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLRESUMETRANSFORMFEEDBACKNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ResumeTransformFeedbackNV, glResumeTransformFeedbackNV, RESUMETRANSFORMFEEDBACKNV, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, ResumeTransformFeedbackNV, glResumeTransformFeedbackNV, RESUMETRANSFORMFEEDBACKNV, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLROTATED #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Rotated, glRotated, ROTATED, (AND GLdouble angle, GLdouble x, GLdouble y, GLdouble z), (angle, x, y, z), &angle, GL_void_return) GL_PROCM(void, gl, Rotated, glRotated, ROTATED, (AND GLdouble angle, GLdouble x, GLdouble y, GLdouble z), (angle, x, y, z), &angle, GL_void_return) #endif #endif #ifndef NO_GLROTATEF GL_PROC(void, gl, Rotatef, glRotatef, ROTATEF, (AND GLfloat angle, GLfloat x, GLfloat y, GLfloat z), (angle, x, y, z), &angle, GL_void_return) GL_PROCM(void, gl, Rotatef, glRotatef, ROTATEF, (AND GLfloat angle, GLfloat x, GLfloat y, GLfloat z), (angle, x, y, z), &angle, GL_void_return) #endif #ifndef NO_GLROTATEXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, RotatexOES, glRotatexOES, ROTATEXOES, (AND GLfixed angle, GLfixed x, GLfixed y, GLfixed z), (angle, x, y, z), &angle, GL_void_return) GL_PROCM(void, gl, RotatexOES, glRotatexOES, ROTATEXOES, (AND GLfixed angle, GLfixed x, GLfixed y, GLfixed z), (angle, x, y, z), &angle, GL_void_return) #endif #endif #ifndef NO_GLSAMPLECOVERAGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SampleCoverage, glSampleCoverage, SAMPLECOVERAGE, (AND GLfloat value, GLboolean32 invert), (value, invert), &value, GL_void_return) GL_PROCM(void, gl, SampleCoverage, glSampleCoverage, SAMPLECOVERAGE, (AND GLfloat value, GLboolean32 invert), (value, invert), &value, GL_void_return) #endif #endif #ifndef NO_GLSAMPLECOVERAGEARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SampleCoverageARB, glSampleCoverageARB, SAMPLECOVERAGEARB, (AND GLfloat value, GLboolean32 invert), (value, invert), &value, GL_void_return) GL_PROCM(void, gl, SampleCoverageARB, glSampleCoverageARB, SAMPLECOVERAGEARB, (AND GLfloat value, GLboolean32 invert), (value, invert), &value, GL_void_return) #endif #endif #ifndef NO_GLSAMPLECOVERAGEOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SampleCoverageOES, glSampleCoverageOES, SAMPLECOVERAGEOES, (AND GLfixed value, GLboolean32 invert), (value, invert), &value, GL_void_return) GL_PROCM(void, gl, SampleCoverageOES, glSampleCoverageOES, SAMPLECOVERAGEOES, (AND GLfixed value, GLboolean32 invert), (value, invert), &value, GL_void_return) #endif #endif #ifndef NO_GLSAMPLEMAPATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SampleMapATI, glSampleMapATI, SAMPLEMAPATI, (AND GLuint dst, GLuint interp, GLenum swizzle), (dst, interp, swizzle), &dst, GL_void_return) GL_PROCM(void, gl, SampleMapATI, glSampleMapATI, SAMPLEMAPATI, (AND GLuint dst, GLuint interp, GLenum swizzle), (dst, interp, swizzle), &dst, GL_void_return) #endif #endif #ifndef NO_GLSAMPLEMASKEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SampleMaskEXT, glSampleMaskEXT, SAMPLEMASKEXT, (AND GLclampf value, GLboolean32 invert), (value, invert), &value, GL_void_return) GL_PROCM(void, gl, SampleMaskEXT, glSampleMaskEXT, SAMPLEMASKEXT, (AND GLclampf value, GLboolean32 invert), (value, invert), &value, GL_void_return) #endif #endif #ifndef NO_GLSAMPLEMASKINDEXEDNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SampleMaskIndexedNV, glSampleMaskIndexedNV, SAMPLEMASKINDEXEDNV, (AND GLuint index, GLbitfield mask), (index, mask), &index, GL_void_return) GL_PROCM(void, gl, SampleMaskIndexedNV, glSampleMaskIndexedNV, SAMPLEMASKINDEXEDNV, (AND GLuint index, GLbitfield mask), (index, mask), &index, GL_void_return) #endif #endif #ifndef NO_GLSAMPLEMASKSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SampleMaskSGIS, glSampleMaskSGIS, SAMPLEMASKSGIS, (AND GLclampf value, GLboolean32 invert), (value, invert), &value, GL_void_return) GL_PROCM(void, gl, SampleMaskSGIS, glSampleMaskSGIS, SAMPLEMASKSGIS, (AND GLclampf value, GLboolean32 invert), (value, invert), &value, GL_void_return) #endif #endif #ifndef NO_GLSAMPLEMASKI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SampleMaski, glSampleMaski, SAMPLEMASKI, (AND GLuint maskNumber, GLbitfield mask), (maskNumber, mask), &maskNumber, GL_void_return) GL_PROCM(void, gl, SampleMaski, glSampleMaski, SAMPLEMASKI, (AND GLuint maskNumber, GLbitfield mask), (maskNumber, mask), &maskNumber, GL_void_return) #endif #endif #ifndef NO_GLSAMPLEPASS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SamplePass, glSamplePass, SAMPLEPASS, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, SamplePass, glSamplePass, SAMPLEPASS, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLSAMPLEPASSARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SamplePassARB, glSamplePassARB, SAMPLEPASSARB, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, SamplePassARB, glSamplePassARB, SAMPLEPASSARB, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLSAMPLEPATTERNEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SamplePatternEXT, glSamplePatternEXT, SAMPLEPATTERNEXT, (AND GLenum pattern), (pattern), &pattern, GL_void_return) GL_PROCM(void, gl, SamplePatternEXT, glSamplePatternEXT, SAMPLEPATTERNEXT, (AND GLenum pattern), (pattern), &pattern, GL_void_return) #endif #endif #ifndef NO_GLSAMPLEPATTERNSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SamplePatternSGIS, glSamplePatternSGIS, SAMPLEPATTERNSGIS, (AND GLenum pattern), (pattern), &pattern, GL_void_return) GL_PROCM(void, gl, SamplePatternSGIS, glSamplePatternSGIS, SAMPLEPATTERNSGIS, (AND GLenum pattern), (pattern), &pattern, GL_void_return) #endif #endif #ifndef NO_GLSAMPLERPARAMETERIIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SamplerParameterIiv, glSamplerParameterIiv, SAMPLERPARAMETERIIV, (AND GLuint sampler, GLenum pname, const GLint *param), (sampler, pname, param), &sampler, GL_void_return) GL_PROCM(void, gl, SamplerParameterIiv, glSamplerParameterIiv, SAMPLERPARAMETERIIV, (AND GLuint sampler, GLenum pname, memptr param), (sampler, pname, param), &sampler, GL_void_return) #endif #endif #ifndef NO_GLSAMPLERPARAMETERIUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SamplerParameterIuiv, glSamplerParameterIuiv, SAMPLERPARAMETERIUIV, (AND GLuint sampler, GLenum pname, const GLuint *param), (sampler, pname, param), &sampler, GL_void_return) GL_PROCM(void, gl, SamplerParameterIuiv, glSamplerParameterIuiv, SAMPLERPARAMETERIUIV, (AND GLuint sampler, GLenum pname, memptr param), (sampler, pname, param), &sampler, GL_void_return) #endif #endif #ifndef NO_GLSAMPLERPARAMETERF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SamplerParameterf, glSamplerParameterf, SAMPLERPARAMETERF, (AND GLuint sampler, GLenum pname, GLfloat param), (sampler, pname, param), &sampler, GL_void_return) GL_PROCM(void, gl, SamplerParameterf, glSamplerParameterf, SAMPLERPARAMETERF, (AND GLuint sampler, GLenum pname, GLfloat param), (sampler, pname, param), &sampler, GL_void_return) #endif #endif #ifndef NO_GLSAMPLERPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SamplerParameterfv, glSamplerParameterfv, SAMPLERPARAMETERFV, (AND GLuint sampler, GLenum pname, const GLfloat *param), (sampler, pname, param), &sampler, GL_void_return) GL_PROCM(void, gl, SamplerParameterfv, glSamplerParameterfv, SAMPLERPARAMETERFV, (AND GLuint sampler, GLenum pname, memptr param), (sampler, pname, param), &sampler, GL_void_return) #endif #endif #ifndef NO_GLSAMPLERPARAMETERI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SamplerParameteri, glSamplerParameteri, SAMPLERPARAMETERI, (AND GLuint sampler, GLenum pname, GLint param), (sampler, pname, param), &sampler, GL_void_return) GL_PROCM(void, gl, SamplerParameteri, glSamplerParameteri, SAMPLERPARAMETERI, (AND GLuint sampler, GLenum pname, GLint param), (sampler, pname, param), &sampler, GL_void_return) #endif #endif #ifndef NO_GLSAMPLERPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SamplerParameteriv, glSamplerParameteriv, SAMPLERPARAMETERIV, (AND GLuint sampler, GLenum pname, const GLint *param), (sampler, pname, param), &sampler, GL_void_return) GL_PROCM(void, gl, SamplerParameteriv, glSamplerParameteriv, SAMPLERPARAMETERIV, (AND GLuint sampler, GLenum pname, memptr param), (sampler, pname, param), &sampler, GL_void_return) #endif #endif #ifndef NO_GLSCALED #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Scaled, glScaled, SCALED, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, Scaled, glScaled, SCALED, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLSCALEF GL_PROC(void, gl, Scalef, glScalef, SCALEF, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, Scalef, glScalef, SCALEF, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) #endif #ifndef NO_GLSCALEXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ScalexOES, glScalexOES, SCALEXOES, (AND GLfixed x, GLfixed y, GLfixed z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, ScalexOES, glScalexOES, SCALEXOES, (AND GLfixed x, GLfixed y, GLfixed z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLSCISSOR #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Scissor, glScissor, SCISSOR, (AND GLint x, GLint y, GLsizei width, GLsizei height), (x, y, width, height), &x, GL_void_return) GL_PROCM(void, gl, Scissor, glScissor, SCISSOR, (AND GLint x, GLint y, GLsizei width, GLsizei height), (x, y, width, height), &x, GL_void_return) #endif #endif #ifndef NO_GLSCISSORARRAYV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ScissorArrayv, glScissorArrayv, SCISSORARRAYV, (AND GLuint first, GLsizei count, const GLint *v), (first, count, v), &first, GL_void_return) GL_PROCM(void, gl, ScissorArrayv, glScissorArrayv, SCISSORARRAYV, (AND GLuint first, GLsizei count, memptr v), (first, count, v), &first, GL_void_return) #endif #endif #ifndef NO_GLSCISSORINDEXED #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ScissorIndexed, glScissorIndexed, SCISSORINDEXED, (AND GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height), (index, left, bottom, width, height), &index, GL_void_return) GL_PROCM(void, gl, ScissorIndexed, glScissorIndexed, SCISSORINDEXED, (AND GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height), (index, left, bottom, width, height), &index, GL_void_return) #endif #endif #ifndef NO_GLSCISSORINDEXEDV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ScissorIndexedv, glScissorIndexedv, SCISSORINDEXEDV, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, ScissorIndexedv, glScissorIndexedv, SCISSORINDEXEDV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3B #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3b, glSecondaryColor3b, SECONDARYCOLOR3B, (AND GLbyte32 red, GLbyte32 green, GLbyte32 blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3b, glSecondaryColor3b, SECONDARYCOLOR3B, (AND GLbyte32 red, GLbyte32 green, GLbyte32 blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3BEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3bEXT, glSecondaryColor3bEXT, SECONDARYCOLOR3BEXT, (AND GLbyte32 red, GLbyte32 green, GLbyte32 blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3bEXT, glSecondaryColor3bEXT, SECONDARYCOLOR3BEXT, (AND GLbyte32 red, GLbyte32 green, GLbyte32 blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3BV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3bv, glSecondaryColor3bv, SECONDARYCOLOR3BV, (AND const GLbyte *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3bv, glSecondaryColor3bv, SECONDARYCOLOR3BV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3BVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3bvEXT, glSecondaryColor3bvEXT, SECONDARYCOLOR3BVEXT, (AND const GLbyte *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3bvEXT, glSecondaryColor3bvEXT, SECONDARYCOLOR3BVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3d, glSecondaryColor3d, SECONDARYCOLOR3D, (AND GLdouble red, GLdouble green, GLdouble blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3d, glSecondaryColor3d, SECONDARYCOLOR3D, (AND GLdouble red, GLdouble green, GLdouble blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3dEXT, glSecondaryColor3dEXT, SECONDARYCOLOR3DEXT, (AND GLdouble red, GLdouble green, GLdouble blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3dEXT, glSecondaryColor3dEXT, SECONDARYCOLOR3DEXT, (AND GLdouble red, GLdouble green, GLdouble blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3dv, glSecondaryColor3dv, SECONDARYCOLOR3DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3dv, glSecondaryColor3dv, SECONDARYCOLOR3DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3dvEXT, glSecondaryColor3dvEXT, SECONDARYCOLOR3DVEXT, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3dvEXT, glSecondaryColor3dvEXT, SECONDARYCOLOR3DVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3f, glSecondaryColor3f, SECONDARYCOLOR3F, (AND GLfloat red, GLfloat green, GLfloat blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3f, glSecondaryColor3f, SECONDARYCOLOR3F, (AND GLfloat red, GLfloat green, GLfloat blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3FEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3fEXT, glSecondaryColor3fEXT, SECONDARYCOLOR3FEXT, (AND GLfloat red, GLfloat green, GLfloat blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3fEXT, glSecondaryColor3fEXT, SECONDARYCOLOR3FEXT, (AND GLfloat red, GLfloat green, GLfloat blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3fv, glSecondaryColor3fv, SECONDARYCOLOR3FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3fv, glSecondaryColor3fv, SECONDARYCOLOR3FV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3fvEXT, glSecondaryColor3fvEXT, SECONDARYCOLOR3FVEXT, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3fvEXT, glSecondaryColor3fvEXT, SECONDARYCOLOR3FVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3hNV, glSecondaryColor3hNV, SECONDARYCOLOR3HNV, (AND GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3hNV, glSecondaryColor3hNV, SECONDARYCOLOR3HNV, (AND GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3hvNV, glSecondaryColor3hvNV, SECONDARYCOLOR3HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3hvNV, glSecondaryColor3hvNV, SECONDARYCOLOR3HVNV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3i, glSecondaryColor3i, SECONDARYCOLOR3I, (AND GLint red, GLint green, GLint blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3i, glSecondaryColor3i, SECONDARYCOLOR3I, (AND GLint red, GLint green, GLint blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3IEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3iEXT, glSecondaryColor3iEXT, SECONDARYCOLOR3IEXT, (AND GLint red, GLint green, GLint blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3iEXT, glSecondaryColor3iEXT, SECONDARYCOLOR3IEXT, (AND GLint red, GLint green, GLint blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3iv, glSecondaryColor3iv, SECONDARYCOLOR3IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3iv, glSecondaryColor3iv, SECONDARYCOLOR3IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3IVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3ivEXT, glSecondaryColor3ivEXT, SECONDARYCOLOR3IVEXT, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3ivEXT, glSecondaryColor3ivEXT, SECONDARYCOLOR3IVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3s, glSecondaryColor3s, SECONDARYCOLOR3S, (AND GLshort32 red, GLshort32 green, GLshort32 blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3s, glSecondaryColor3s, SECONDARYCOLOR3S, (AND GLshort32 red, GLshort32 green, GLshort32 blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3SEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3sEXT, glSecondaryColor3sEXT, SECONDARYCOLOR3SEXT, (AND GLshort32 red, GLshort32 green, GLshort32 blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3sEXT, glSecondaryColor3sEXT, SECONDARYCOLOR3SEXT, (AND GLshort32 red, GLshort32 green, GLshort32 blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3sv, glSecondaryColor3sv, SECONDARYCOLOR3SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3sv, glSecondaryColor3sv, SECONDARYCOLOR3SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3SVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3svEXT, glSecondaryColor3svEXT, SECONDARYCOLOR3SVEXT, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3svEXT, glSecondaryColor3svEXT, SECONDARYCOLOR3SVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3UB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3ub, glSecondaryColor3ub, SECONDARYCOLOR3UB, (AND GLubyte32 red, GLubyte32 green, GLubyte32 blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3ub, glSecondaryColor3ub, SECONDARYCOLOR3UB, (AND GLubyte32 red, GLubyte32 green, GLubyte32 blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3UBEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3ubEXT, glSecondaryColor3ubEXT, SECONDARYCOLOR3UBEXT, (AND GLubyte32 red, GLubyte32 green, GLubyte32 blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3ubEXT, glSecondaryColor3ubEXT, SECONDARYCOLOR3UBEXT, (AND GLubyte32 red, GLubyte32 green, GLubyte32 blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3UBV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3ubv, glSecondaryColor3ubv, SECONDARYCOLOR3UBV, (AND const GLubyte *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3ubv, glSecondaryColor3ubv, SECONDARYCOLOR3UBV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3UBVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, SECONDARYCOLOR3UBVEXT, (AND const GLubyte *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, SECONDARYCOLOR3UBVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3ui, glSecondaryColor3ui, SECONDARYCOLOR3UI, (AND GLuint red, GLuint green, GLuint blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3ui, glSecondaryColor3ui, SECONDARYCOLOR3UI, (AND GLuint red, GLuint green, GLuint blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3UIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3uiEXT, glSecondaryColor3uiEXT, SECONDARYCOLOR3UIEXT, (AND GLuint red, GLuint green, GLuint blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3uiEXT, glSecondaryColor3uiEXT, SECONDARYCOLOR3UIEXT, (AND GLuint red, GLuint green, GLuint blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3uiv, glSecondaryColor3uiv, SECONDARYCOLOR3UIV, (AND const GLuint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3uiv, glSecondaryColor3uiv, SECONDARYCOLOR3UIV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3uivEXT, glSecondaryColor3uivEXT, SECONDARYCOLOR3UIVEXT, (AND const GLuint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3uivEXT, glSecondaryColor3uivEXT, SECONDARYCOLOR3UIVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3US #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3us, glSecondaryColor3us, SECONDARYCOLOR3US, (AND GLushort32 red, GLushort32 green, GLushort32 blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3us, glSecondaryColor3us, SECONDARYCOLOR3US, (AND GLushort32 red, GLushort32 green, GLushort32 blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3USEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3usEXT, glSecondaryColor3usEXT, SECONDARYCOLOR3USEXT, (AND GLushort32 red, GLushort32 green, GLushort32 blue), (red, green, blue), &red, GL_void_return) GL_PROCM(void, gl, SecondaryColor3usEXT, glSecondaryColor3usEXT, SECONDARYCOLOR3USEXT, (AND GLushort32 red, GLushort32 green, GLushort32 blue), (red, green, blue), &red, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3USV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3usv, glSecondaryColor3usv, SECONDARYCOLOR3USV, (AND const GLushort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3usv, glSecondaryColor3usv, SECONDARYCOLOR3USV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLOR3USVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColor3usvEXT, glSecondaryColor3usvEXT, SECONDARYCOLOR3USVEXT, (AND const GLushort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, SecondaryColor3usvEXT, glSecondaryColor3usvEXT, SECONDARYCOLOR3USVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLORFORMATNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColorFormatNV, glSecondaryColorFormatNV, SECONDARYCOLORFORMATNV, (AND GLint size, GLenum type, GLsizei stride), (size, type, stride), &size, GL_void_return) GL_PROCM(void, gl, SecondaryColorFormatNV, glSecondaryColorFormatNV, SECONDARYCOLORFORMATNV, (AND GLint size, GLenum type, GLsizei stride), (size, type, stride), &size, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLORP3UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColorP3ui, glSecondaryColorP3ui, SECONDARYCOLORP3UI, (AND GLenum type, GLuint color), (type, color), &type, GL_void_return) GL_PROCM(void, gl, SecondaryColorP3ui, glSecondaryColorP3ui, SECONDARYCOLORP3UI, (AND GLenum type, GLuint color), (type, color), &type, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLORP3UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColorP3uiv, glSecondaryColorP3uiv, SECONDARYCOLORP3UIV, (AND GLenum type, const GLuint *color), (type, color), &type, GL_void_return) GL_PROCM(void, gl, SecondaryColorP3uiv, glSecondaryColorP3uiv, SECONDARYCOLORP3UIV, (AND GLenum type, memptr color), (type, color), &type, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLORPOINTER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColorPointer, glSecondaryColorPointer, SECONDARYCOLORPOINTER, (AND GLint size, GLenum type, GLsizei stride, const void *pointer), (size, type, stride, pointer), &size, GL_void_return) GL_PROCM(void, gl, SecondaryColorPointer, glSecondaryColorPointer, SECONDARYCOLORPOINTER, (AND GLint size, GLenum type, GLsizei stride, memptr pointer), (size, type, stride, pointer), &size, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLORPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColorPointerEXT, glSecondaryColorPointerEXT, SECONDARYCOLORPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, const void *pointer), (size, type, stride, pointer), &size, GL_void_return) GL_PROCM(void, gl, SecondaryColorPointerEXT, glSecondaryColorPointerEXT, SECONDARYCOLORPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, memptr pointer), (size, type, stride, pointer), &size, GL_void_return) #endif #endif #ifndef NO_GLSECONDARYCOLORPOINTERLISTIBM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SecondaryColorPointerListIBM, glSecondaryColorPointerListIBM, SECONDARYCOLORPOINTERLISTIBM, (AND GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride), (size, type, stride, pointer, ptrstride), &size, GL_void_return) GL_PROCM(void, gl, SecondaryColorPointerListIBM, glSecondaryColorPointerListIBM, SECONDARYCOLORPOINTERLISTIBM, (AND GLint size, GLenum type, GLint stride, memptr pointer, GLint ptrstride), (size, type, stride, pointer, ptrstride), &size, GL_void_return) #endif #endif #ifndef NO_GLSELECTBUFFER GL_PROC(void, gl, SelectBuffer, glSelectBuffer, SELECTBUFFER, (AND GLsizei size, GLuint *buffer), (size, buffer), &size, GL_void_return) GL_PROCM(void, gl, SelectBuffer, glSelectBuffer, SELECTBUFFER, (AND GLsizei size, memptr buffer), (size, buffer), &size, GL_void_return) #endif #ifndef NO_GLSELECTPERFMONITORCOUNTERSAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SelectPerfMonitorCountersAMD, glSelectPerfMonitorCountersAMD, SELECTPERFMONITORCOUNTERSAMD, (AND GLuint monitor, GLboolean32 enable, GLuint group, GLint numCounters, GLuint *counterList), (monitor, enable, group, numCounters, counterList), &monitor, GL_void_return) GL_PROCM(void, gl, SelectPerfMonitorCountersAMD, glSelectPerfMonitorCountersAMD, SELECTPERFMONITORCOUNTERSAMD, (AND GLuint monitor, GLboolean32 enable, GLuint group, GLint numCounters, memptr counterList), (monitor, enable, group, numCounters, counterList), &monitor, GL_void_return) #endif #endif #ifndef NO_GLSEMAPHOREPARAMETERUI64VEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SemaphoreParameterui64vEXT, glSemaphoreParameterui64vEXT, SEMAPHOREPARAMETERUI64VEXT, (AND GLuint semaphore, GLenum pname, const GLuint64 *params), (semaphore, pname, params), &semaphore, GL_void_return) GL_PROCM(void, gl, SemaphoreParameterui64vEXT, glSemaphoreParameterui64vEXT, SEMAPHOREPARAMETERUI64VEXT, (AND GLuint semaphore, GLenum pname, memptr params), (semaphore, pname, params), &semaphore, GL_void_return) #endif #endif #ifndef NO_GLSEPARABLEFILTER2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SeparableFilter2D, glSeparableFilter2D, SEPARABLEFILTER2D, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column), (target, internalformat, width, height, format, type, row, column), &target, GL_void_return) GL_PROCM(void, gl, SeparableFilter2D, glSeparableFilter2D, SEPARABLEFILTER2D, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr row, memptr column), (target, internalformat, width, height, format, type, row, column), &target, GL_void_return) #endif #endif #ifndef NO_GLSEPARABLEFILTER2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SeparableFilter2DEXT, glSeparableFilter2DEXT, SEPARABLEFILTER2DEXT, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column), (target, internalformat, width, height, format, type, row, column), &target, GL_void_return) GL_PROCM(void, gl, SeparableFilter2DEXT, glSeparableFilter2DEXT, SEPARABLEFILTER2DEXT, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr row, memptr column), (target, internalformat, width, height, format, type, row, column), &target, GL_void_return) #endif #endif #ifndef NO_GLSETFENCEAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SetFenceAPPLE, glSetFenceAPPLE, SETFENCEAPPLE, (AND GLuint fence), (fence), &fence, GL_void_return) GL_PROCM(void, gl, SetFenceAPPLE, glSetFenceAPPLE, SETFENCEAPPLE, (AND GLuint fence), (fence), &fence, GL_void_return) #endif #endif #ifndef NO_GLSETFENCENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SetFenceNV, glSetFenceNV, SETFENCENV, (AND GLuint fence, GLenum condition), (fence, condition), &fence, GL_void_return) GL_PROCM(void, gl, SetFenceNV, glSetFenceNV, SETFENCENV, (AND GLuint fence, GLenum condition), (fence, condition), &fence, GL_void_return) #endif #endif #ifndef NO_GLSETFRAGMENTSHADERCONSTANTATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, SETFRAGMENTSHADERCONSTANTATI, (AND GLuint dst, const GLfloat *value), (dst, value), &dst, GL_void_return) GL_PROCM(void, gl, SetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, SETFRAGMENTSHADERCONSTANTATI, (AND GLuint dst, memptr value), (dst, value), &dst, GL_void_return) #endif #endif #ifndef NO_GLSETINVARIANTEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SetInvariantEXT, glSetInvariantEXT, SETINVARIANTEXT, (AND GLuint id, GLenum type, const void *addr), (id, type, addr), &id, GL_void_return) GL_PROCM(void, gl, SetInvariantEXT, glSetInvariantEXT, SETINVARIANTEXT, (AND GLuint id, GLenum type, memptr addr), (id, type, addr), &id, GL_void_return) #endif #endif #ifndef NO_GLSETLOCALCONSTANTEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SetLocalConstantEXT, glSetLocalConstantEXT, SETLOCALCONSTANTEXT, (AND GLuint id, GLenum type, const void *addr), (id, type, addr), &id, GL_void_return) GL_PROCM(void, gl, SetLocalConstantEXT, glSetLocalConstantEXT, SETLOCALCONSTANTEXT, (AND GLuint id, GLenum type, memptr addr), (id, type, addr), &id, GL_void_return) #endif #endif #ifndef NO_GLSETMULTISAMPLEFVAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SetMultisamplefvAMD, glSetMultisamplefvAMD, SETMULTISAMPLEFVAMD, (AND GLenum pname, GLuint index, const GLfloat *val), (pname, index, val), &pname, GL_void_return) GL_PROCM(void, gl, SetMultisamplefvAMD, glSetMultisamplefvAMD, SETMULTISAMPLEFVAMD, (AND GLenum pname, GLuint index, memptr val), (pname, index, val), &pname, GL_void_return) #endif #endif #ifndef NO_GLSHADEMODEL GL_PROC(void, gl, ShadeModel, glShadeModel, SHADEMODEL, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, ShadeModel, glShadeModel, SHADEMODEL, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #ifndef NO_GLSHADERBINARY #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ShaderBinary, glShaderBinary, SHADERBINARY, (AND GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length), (count, shaders, binaryformat, binary, length), &count, GL_void_return) GL_PROCM(void, gl, ShaderBinary, glShaderBinary, SHADERBINARY, (AND GLsizei count, memptr shaders, GLenum binaryformat, memptr binary, GLsizei length), (count, shaders, binaryformat, binary, length), &count, GL_void_return) #endif #endif #ifndef NO_GLSHADEROP1EXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ShaderOp1EXT, glShaderOp1EXT, SHADEROP1EXT, (AND GLenum op, GLuint res, GLuint arg1), (op, res, arg1), &op, GL_void_return) GL_PROCM(void, gl, ShaderOp1EXT, glShaderOp1EXT, SHADEROP1EXT, (AND GLenum op, GLuint res, GLuint arg1), (op, res, arg1), &op, GL_void_return) #endif #endif #ifndef NO_GLSHADEROP2EXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ShaderOp2EXT, glShaderOp2EXT, SHADEROP2EXT, (AND GLenum op, GLuint res, GLuint arg1, GLuint arg2), (op, res, arg1, arg2), &op, GL_void_return) GL_PROCM(void, gl, ShaderOp2EXT, glShaderOp2EXT, SHADEROP2EXT, (AND GLenum op, GLuint res, GLuint arg1, GLuint arg2), (op, res, arg1, arg2), &op, GL_void_return) #endif #endif #ifndef NO_GLSHADEROP3EXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ShaderOp3EXT, glShaderOp3EXT, SHADEROP3EXT, (AND GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3), (op, res, arg1, arg2, arg3), &op, GL_void_return) GL_PROCM(void, gl, ShaderOp3EXT, glShaderOp3EXT, SHADEROP3EXT, (AND GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3), (op, res, arg1, arg2, arg3), &op, GL_void_return) #endif #endif #ifndef NO_GLSHADERSOURCE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ShaderSource, glShaderSource, SHADERSOURCE, (AND GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length), (shader, count, string, length), &shader, GL_void_return) GL_PROCM(void, gl, ShaderSource, glShaderSource, SHADERSOURCE, (AND GLuint shader, GLsizei count, memptr string, memptr length), (shader, count, string, length), &shader, GL_void_return) #endif #endif #ifndef NO_GLSHADERSOURCEARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ShaderSourceARB, glShaderSourceARB, SHADERSOURCEARB, (AND GLhandleARB shaderObj, GLsizei count, const GLcharARB * *string, const GLint *length), (shaderObj, count, string, length), &shaderObj, GL_void_return) GL_PROCM(void, gl, ShaderSourceARB, glShaderSourceARB, SHADERSOURCEARB, (AND GLhandleARB shaderObj, GLsizei count, memptr string, memptr length), (shaderObj, count, string, length), &shaderObj, GL_void_return) #endif #endif #ifndef NO_GLSHADERSTORAGEBLOCKBINDING #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ShaderStorageBlockBinding, glShaderStorageBlockBinding, SHADERSTORAGEBLOCKBINDING, (AND GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding), (program, storageBlockIndex, storageBlockBinding), &program, GL_void_return) GL_PROCM(void, gl, ShaderStorageBlockBinding, glShaderStorageBlockBinding, SHADERSTORAGEBLOCKBINDING, (AND GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding), (program, storageBlockIndex, storageBlockBinding), &program, GL_void_return) #endif #endif #ifndef NO_GLSHARPENTEXFUNCSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SharpenTexFuncSGIS, glSharpenTexFuncSGIS, SHARPENTEXFUNCSGIS, (AND GLenum target, GLsizei n, const GLfloat *points), (target, n, points), &target, GL_void_return) GL_PROCM(void, gl, SharpenTexFuncSGIS, glSharpenTexFuncSGIS, SHARPENTEXFUNCSGIS, (AND GLenum target, GLsizei n, memptr points), (target, n, points), &target, GL_void_return) #endif #endif #ifndef NO_GLSIGNALSEMAPHOREEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SignalSemaphoreEXT, glSignalSemaphoreEXT, SIGNALSEMAPHOREEXT, (AND GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts), (semaphore, numBufferBarriers, buffers, numTextureBarriers, textures, dstLayouts), &semaphore, GL_void_return) GL_PROCM(void, gl, SignalSemaphoreEXT, glSignalSemaphoreEXT, SIGNALSEMAPHOREEXT, (AND GLuint semaphore, GLuint numBufferBarriers, memptr buffers, GLuint numTextureBarriers, memptr textures, memptr dstLayouts), (semaphore, numBufferBarriers, buffers, numTextureBarriers, textures, dstLayouts), &semaphore, GL_void_return) #endif #endif #ifndef NO_GLSIGNALVKFENCENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SignalVkFenceNV, glSignalVkFenceNV, SIGNALVKFENCENV, (AND GLuint64 vkFence), (vkFence), &vkFence, GL_void_return) GL_PROCM(void, gl, SignalVkFenceNV, glSignalVkFenceNV, SIGNALVKFENCENV, (AND GLuint64 vkFence), (vkFence), &vkFence, GL_void_return) #endif #endif #ifndef NO_GLSIGNALVKSEMAPHORENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SignalVkSemaphoreNV, glSignalVkSemaphoreNV, SIGNALVKSEMAPHORENV, (AND GLuint64 vkSemaphore), (vkSemaphore), &vkSemaphore, GL_void_return) GL_PROCM(void, gl, SignalVkSemaphoreNV, glSignalVkSemaphoreNV, SIGNALVKSEMAPHORENV, (AND GLuint64 vkSemaphore), (vkSemaphore), &vkSemaphore, GL_void_return) #endif #endif #ifndef NO_GLSPECIALIZESHADER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SpecializeShader, glSpecializeShader, SPECIALIZESHADER, (AND GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue), (shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue), &shader, GL_void_return) GL_PROCM(void, gl, SpecializeShader, glSpecializeShader, SPECIALIZESHADER, (AND GLuint shader, memptr pEntryPoint, GLuint numSpecializationConstants, memptr pConstantIndex, memptr pConstantValue), (shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue), &shader, GL_void_return) #endif #endif #ifndef NO_GLSPECIALIZESHADERARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SpecializeShaderARB, glSpecializeShaderARB, SPECIALIZESHADERARB, (AND GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue), (shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue), &shader, GL_void_return) GL_PROCM(void, gl, SpecializeShaderARB, glSpecializeShaderARB, SPECIALIZESHADERARB, (AND GLuint shader, memptr pEntryPoint, GLuint numSpecializationConstants, memptr pConstantIndex, memptr pConstantValue), (shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue), &shader, GL_void_return) #endif #endif #ifndef NO_GLSPRITEPARAMETERFSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SpriteParameterfSGIX, glSpriteParameterfSGIX, SPRITEPARAMETERFSGIX, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, SpriteParameterfSGIX, glSpriteParameterfSGIX, SPRITEPARAMETERFSGIX, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLSPRITEPARAMETERFVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SpriteParameterfvSGIX, glSpriteParameterfvSGIX, SPRITEPARAMETERFVSGIX, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, SpriteParameterfvSGIX, glSpriteParameterfvSGIX, SPRITEPARAMETERFVSGIX, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLSPRITEPARAMETERISGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SpriteParameteriSGIX, glSpriteParameteriSGIX, SPRITEPARAMETERISGIX, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, SpriteParameteriSGIX, glSpriteParameteriSGIX, SPRITEPARAMETERISGIX, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLSPRITEPARAMETERIVSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SpriteParameterivSGIX, glSpriteParameterivSGIX, SPRITEPARAMETERIVSGIX, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) GL_PROCM(void, gl, SpriteParameterivSGIX, glSpriteParameterivSGIX, SPRITEPARAMETERIVSGIX, (AND GLenum pname, memptr params), (pname, params), &pname, GL_void_return) #endif #endif #ifndef NO_GLSTARTINSTRUMENTSSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StartInstrumentsSGIX, glStartInstrumentsSGIX, STARTINSTRUMENTSSGIX, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, StartInstrumentsSGIX, glStartInstrumentsSGIX, STARTINSTRUMENTSSGIX, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLSTATECAPTURENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StateCaptureNV, glStateCaptureNV, STATECAPTURENV, (AND GLuint state, GLenum mode), (state, mode), &state, GL_void_return) GL_PROCM(void, gl, StateCaptureNV, glStateCaptureNV, STATECAPTURENV, (AND GLuint state, GLenum mode), (state, mode), &state, GL_void_return) #endif #endif #ifndef NO_GLSTENCILCLEARTAGEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilClearTagEXT, glStencilClearTagEXT, STENCILCLEARTAGEXT, (AND GLsizei stencilTagBits, GLuint stencilClearTag), (stencilTagBits, stencilClearTag), &stencilTagBits, GL_void_return) GL_PROCM(void, gl, StencilClearTagEXT, glStencilClearTagEXT, STENCILCLEARTAGEXT, (AND GLsizei stencilTagBits, GLuint stencilClearTag), (stencilTagBits, stencilClearTag), &stencilTagBits, GL_void_return) #endif #endif #ifndef NO_GLSTENCILFILLPATHINSTANCEDNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilFillPathInstancedNV, glStencilFillPathInstancedNV, STENCILFILLPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues), (numPaths, pathNameType, paths, pathBase, fillMode, mask, transformType, transformValues), &numPaths, GL_void_return) GL_PROCM(void, gl, StencilFillPathInstancedNV, glStencilFillPathInstancedNV, STENCILFILLPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, memptr transformValues), (numPaths, pathNameType, paths, pathBase, fillMode, mask, transformType, transformValues), &numPaths, GL_void_return) #endif #endif #ifndef NO_GLSTENCILFILLPATHNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilFillPathNV, glStencilFillPathNV, STENCILFILLPATHNV, (AND GLuint path, GLenum fillMode, GLuint mask), (path, fillMode, mask), &path, GL_void_return) GL_PROCM(void, gl, StencilFillPathNV, glStencilFillPathNV, STENCILFILLPATHNV, (AND GLuint path, GLenum fillMode, GLuint mask), (path, fillMode, mask), &path, GL_void_return) #endif #endif #ifndef NO_GLSTENCILFUNC #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilFunc, glStencilFunc, STENCILFUNC, (AND GLenum func, GLint ref, GLuint mask), (func, ref, mask), &func, GL_void_return) GL_PROCM(void, gl, StencilFunc, glStencilFunc, STENCILFUNC, (AND GLenum func, GLint ref, GLuint mask), (func, ref, mask), &func, GL_void_return) #endif #endif #ifndef NO_GLSTENCILFUNCSEPARATE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilFuncSeparate, glStencilFuncSeparate, STENCILFUNCSEPARATE, (AND GLenum face, GLenum func, GLint ref, GLuint mask), (face, func, ref, mask), &face, GL_void_return) GL_PROCM(void, gl, StencilFuncSeparate, glStencilFuncSeparate, STENCILFUNCSEPARATE, (AND GLenum face, GLenum func, GLint ref, GLuint mask), (face, func, ref, mask), &face, GL_void_return) #endif #endif #ifndef NO_GLSTENCILFUNCSEPARATEATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilFuncSeparateATI, glStencilFuncSeparateATI, STENCILFUNCSEPARATEATI, (AND GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask), (frontfunc, backfunc, ref, mask), &frontfunc, GL_void_return) GL_PROCM(void, gl, StencilFuncSeparateATI, glStencilFuncSeparateATI, STENCILFUNCSEPARATEATI, (AND GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask), (frontfunc, backfunc, ref, mask), &frontfunc, GL_void_return) #endif #endif #ifndef NO_GLSTENCILMASK #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilMask, glStencilMask, STENCILMASK, (AND GLuint mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, StencilMask, glStencilMask, STENCILMASK, (AND GLuint mask), (mask), &mask, GL_void_return) #endif #endif #ifndef NO_GLSTENCILMASKSEPARATE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilMaskSeparate, glStencilMaskSeparate, STENCILMASKSEPARATE, (AND GLenum face, GLuint mask), (face, mask), &face, GL_void_return) GL_PROCM(void, gl, StencilMaskSeparate, glStencilMaskSeparate, STENCILMASKSEPARATE, (AND GLenum face, GLuint mask), (face, mask), &face, GL_void_return) #endif #endif #ifndef NO_GLSTENCILOP #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilOp, glStencilOp, STENCILOP, (AND GLenum fail, GLenum zfail, GLenum zpass), (fail, zfail, zpass), &fail, GL_void_return) GL_PROCM(void, gl, StencilOp, glStencilOp, STENCILOP, (AND GLenum fail, GLenum zfail, GLenum zpass), (fail, zfail, zpass), &fail, GL_void_return) #endif #endif #ifndef NO_GLSTENCILOPSEPARATE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilOpSeparate, glStencilOpSeparate, STENCILOPSEPARATE, (AND GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass), (face, sfail, dpfail, dppass), &face, GL_void_return) GL_PROCM(void, gl, StencilOpSeparate, glStencilOpSeparate, STENCILOPSEPARATE, (AND GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass), (face, sfail, dpfail, dppass), &face, GL_void_return) #endif #endif #ifndef NO_GLSTENCILOPSEPARATEATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilOpSeparateATI, glStencilOpSeparateATI, STENCILOPSEPARATEATI, (AND GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass), (face, sfail, dpfail, dppass), &face, GL_void_return) GL_PROCM(void, gl, StencilOpSeparateATI, glStencilOpSeparateATI, STENCILOPSEPARATEATI, (AND GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass), (face, sfail, dpfail, dppass), &face, GL_void_return) #endif #endif #ifndef NO_GLSTENCILOPVALUEAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilOpValueAMD, glStencilOpValueAMD, STENCILOPVALUEAMD, (AND GLenum face, GLuint value), (face, value), &face, GL_void_return) GL_PROCM(void, gl, StencilOpValueAMD, glStencilOpValueAMD, STENCILOPVALUEAMD, (AND GLenum face, GLuint value), (face, value), &face, GL_void_return) #endif #endif #ifndef NO_GLSTENCILSTROKEPATHINSTANCEDNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilStrokePathInstancedNV, glStencilStrokePathInstancedNV, STENCILSTROKEPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues), (numPaths, pathNameType, paths, pathBase, reference, mask, transformType, transformValues), &numPaths, GL_void_return) GL_PROCM(void, gl, StencilStrokePathInstancedNV, glStencilStrokePathInstancedNV, STENCILSTROKEPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, memptr transformValues), (numPaths, pathNameType, paths, pathBase, reference, mask, transformType, transformValues), &numPaths, GL_void_return) #endif #endif #ifndef NO_GLSTENCILSTROKEPATHNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilStrokePathNV, glStencilStrokePathNV, STENCILSTROKEPATHNV, (AND GLuint path, GLint reference, GLuint mask), (path, reference, mask), &path, GL_void_return) GL_PROCM(void, gl, StencilStrokePathNV, glStencilStrokePathNV, STENCILSTROKEPATHNV, (AND GLuint path, GLint reference, GLuint mask), (path, reference, mask), &path, GL_void_return) #endif #endif #ifndef NO_GLSTENCILTHENCOVERFILLPATHINSTANCEDNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilThenCoverFillPathInstancedNV, glStencilThenCoverFillPathInstancedNV, STENCILTHENCOVERFILLPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues), (numPaths, pathNameType, paths, pathBase, fillMode, mask, coverMode, transformType, transformValues), &numPaths, GL_void_return) GL_PROCM(void, gl, StencilThenCoverFillPathInstancedNV, glStencilThenCoverFillPathInstancedNV, STENCILTHENCOVERFILLPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, memptr transformValues), (numPaths, pathNameType, paths, pathBase, fillMode, mask, coverMode, transformType, transformValues), &numPaths, GL_void_return) #endif #endif #ifndef NO_GLSTENCILTHENCOVERFILLPATHNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilThenCoverFillPathNV, glStencilThenCoverFillPathNV, STENCILTHENCOVERFILLPATHNV, (AND GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode), (path, fillMode, mask, coverMode), &path, GL_void_return) GL_PROCM(void, gl, StencilThenCoverFillPathNV, glStencilThenCoverFillPathNV, STENCILTHENCOVERFILLPATHNV, (AND GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode), (path, fillMode, mask, coverMode), &path, GL_void_return) #endif #endif #ifndef NO_GLSTENCILTHENCOVERSTROKEPATHINSTANCEDNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilThenCoverStrokePathInstancedNV, glStencilThenCoverStrokePathInstancedNV, STENCILTHENCOVERSTROKEPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues), (numPaths, pathNameType, paths, pathBase, reference, mask, coverMode, transformType, transformValues), &numPaths, GL_void_return) GL_PROCM(void, gl, StencilThenCoverStrokePathInstancedNV, glStencilThenCoverStrokePathInstancedNV, STENCILTHENCOVERSTROKEPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, memptr paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, memptr transformValues), (numPaths, pathNameType, paths, pathBase, reference, mask, coverMode, transformType, transformValues), &numPaths, GL_void_return) #endif #endif #ifndef NO_GLSTENCILTHENCOVERSTROKEPATHNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StencilThenCoverStrokePathNV, glStencilThenCoverStrokePathNV, STENCILTHENCOVERSTROKEPATHNV, (AND GLuint path, GLint reference, GLuint mask, GLenum coverMode), (path, reference, mask, coverMode), &path, GL_void_return) GL_PROCM(void, gl, StencilThenCoverStrokePathNV, glStencilThenCoverStrokePathNV, STENCILTHENCOVERSTROKEPATHNV, (AND GLuint path, GLint reference, GLuint mask, GLenum coverMode), (path, reference, mask, coverMode), &path, GL_void_return) #endif #endif #ifndef NO_GLSTOPINSTRUMENTSSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StopInstrumentsSGIX, glStopInstrumentsSGIX, STOPINSTRUMENTSSGIX, (AND GLint marker), (marker), &marker, GL_void_return) GL_PROCM(void, gl, StopInstrumentsSGIX, glStopInstrumentsSGIX, STOPINSTRUMENTSSGIX, (AND GLint marker), (marker), &marker, GL_void_return) #endif #endif #ifndef NO_GLSTRINGMARKERGREMEDY #if !defined(TINYGL_ONLY) GL_PROC(void, gl, StringMarkerGREMEDY, glStringMarkerGREMEDY, STRINGMARKERGREMEDY, (AND GLsizei len, const void *string), (len, string), &len, GL_void_return) GL_PROCM(void, gl, StringMarkerGREMEDY, glStringMarkerGREMEDY, STRINGMARKERGREMEDY, (AND GLsizei len, memptr string), (len, string), &len, GL_void_return) #endif #endif #ifndef NO_GLSUBPIXELPRECISIONBIASNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SubpixelPrecisionBiasNV, glSubpixelPrecisionBiasNV, SUBPIXELPRECISIONBIASNV, (AND GLuint xbits, GLuint ybits), (xbits, ybits), &xbits, GL_void_return) GL_PROCM(void, gl, SubpixelPrecisionBiasNV, glSubpixelPrecisionBiasNV, SUBPIXELPRECISIONBIASNV, (AND GLuint xbits, GLuint ybits), (xbits, ybits), &xbits, GL_void_return) #endif #endif #ifndef NO_GLSWAPAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SwapAPPLE, glSwapAPPLE, SWAPAPPLE, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, SwapAPPLE, glSwapAPPLE, SWAPAPPLE, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLSWIZZLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SwizzleEXT, glSwizzleEXT, SWIZZLEEXT, (AND GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW), (res, in, outX, outY, outZ, outW), &res, GL_void_return) GL_PROCM(void, gl, SwizzleEXT, glSwizzleEXT, SWIZZLEEXT, (AND GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW), (res, in, outX, outY, outZ, outW), &res, GL_void_return) #endif #endif #ifndef NO_GLSYNCTEXTUREINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, SyncTextureINTEL, glSyncTextureINTEL, SYNCTEXTUREINTEL, (AND GLuint texture), (texture), &texture, GL_void_return) GL_PROCM(void, gl, SyncTextureINTEL, glSyncTextureINTEL, SYNCTEXTUREINTEL, (AND GLuint texture), (texture), &texture, GL_void_return) #endif #endif #ifndef NO_GLTAGSAMPLEBUFFERSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TagSampleBufferSGIX, glTagSampleBufferSGIX, TAGSAMPLEBUFFERSGIX, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, TagSampleBufferSGIX, glTagSampleBufferSGIX, TAGSAMPLEBUFFERSGIX, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLTANGENT3BEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Tangent3bEXT, glTangent3bEXT, TANGENT3BEXT, (AND GLbyte32 tx, GLbyte32 ty, GLbyte32 tz), (tx, ty, tz), &tx, GL_void_return) GL_PROCM(void, gl, Tangent3bEXT, glTangent3bEXT, TANGENT3BEXT, (AND GLbyte32 tx, GLbyte32 ty, GLbyte32 tz), (tx, ty, tz), &tx, GL_void_return) #endif #endif #ifndef NO_GLTANGENT3BVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Tangent3bvEXT, glTangent3bvEXT, TANGENT3BVEXT, (AND const GLbyte *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Tangent3bvEXT, glTangent3bvEXT, TANGENT3BVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTANGENT3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Tangent3dEXT, glTangent3dEXT, TANGENT3DEXT, (AND GLdouble tx, GLdouble ty, GLdouble tz), (tx, ty, tz), &tx, GL_void_return) GL_PROCM(void, gl, Tangent3dEXT, glTangent3dEXT, TANGENT3DEXT, (AND GLdouble tx, GLdouble ty, GLdouble tz), (tx, ty, tz), &tx, GL_void_return) #endif #endif #ifndef NO_GLTANGENT3DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Tangent3dvEXT, glTangent3dvEXT, TANGENT3DVEXT, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Tangent3dvEXT, glTangent3dvEXT, TANGENT3DVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTANGENT3FEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Tangent3fEXT, glTangent3fEXT, TANGENT3FEXT, (AND GLfloat tx, GLfloat ty, GLfloat tz), (tx, ty, tz), &tx, GL_void_return) GL_PROCM(void, gl, Tangent3fEXT, glTangent3fEXT, TANGENT3FEXT, (AND GLfloat tx, GLfloat ty, GLfloat tz), (tx, ty, tz), &tx, GL_void_return) #endif #endif #ifndef NO_GLTANGENT3FVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Tangent3fvEXT, glTangent3fvEXT, TANGENT3FVEXT, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Tangent3fvEXT, glTangent3fvEXT, TANGENT3FVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTANGENT3IEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Tangent3iEXT, glTangent3iEXT, TANGENT3IEXT, (AND GLint tx, GLint ty, GLint tz), (tx, ty, tz), &tx, GL_void_return) GL_PROCM(void, gl, Tangent3iEXT, glTangent3iEXT, TANGENT3IEXT, (AND GLint tx, GLint ty, GLint tz), (tx, ty, tz), &tx, GL_void_return) #endif #endif #ifndef NO_GLTANGENT3IVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Tangent3ivEXT, glTangent3ivEXT, TANGENT3IVEXT, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Tangent3ivEXT, glTangent3ivEXT, TANGENT3IVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTANGENT3SEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Tangent3sEXT, glTangent3sEXT, TANGENT3SEXT, (AND GLshort32 tx, GLshort32 ty, GLshort32 tz), (tx, ty, tz), &tx, GL_void_return) GL_PROCM(void, gl, Tangent3sEXT, glTangent3sEXT, TANGENT3SEXT, (AND GLshort32 tx, GLshort32 ty, GLshort32 tz), (tx, ty, tz), &tx, GL_void_return) #endif #endif #ifndef NO_GLTANGENT3SVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Tangent3svEXT, glTangent3svEXT, TANGENT3SVEXT, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Tangent3svEXT, glTangent3svEXT, TANGENT3SVEXT, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTANGENTPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TangentPointerEXT, glTangentPointerEXT, TANGENTPOINTEREXT, (AND GLenum type, GLsizei stride, const void *pointer), (type, stride, pointer), &type, GL_void_return) GL_PROCM(void, gl, TangentPointerEXT, glTangentPointerEXT, TANGENTPOINTEREXT, (AND GLenum type, GLsizei stride, memptr pointer), (type, stride, pointer), &type, GL_void_return) #endif #endif #ifndef NO_GLTBUFFERMASK3DFX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TbufferMask3DFX, glTbufferMask3DFX, TBUFFERMASK3DFX, (AND GLuint mask), (mask), &mask, GL_void_return) GL_PROCM(void, gl, TbufferMask3DFX, glTbufferMask3DFX, TBUFFERMASK3DFX, (AND GLuint mask), (mask), &mask, GL_void_return) #endif #endif #ifndef NO_GLTESSELLATIONFACTORAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TessellationFactorAMD, glTessellationFactorAMD, TESSELLATIONFACTORAMD, (AND GLfloat factor), (factor), &factor, GL_void_return) GL_PROCM(void, gl, TessellationFactorAMD, glTessellationFactorAMD, TESSELLATIONFACTORAMD, (AND GLfloat factor), (factor), &factor, GL_void_return) #endif #endif #ifndef NO_GLTESSELLATIONMODEAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TessellationModeAMD, glTessellationModeAMD, TESSELLATIONMODEAMD, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, TessellationModeAMD, glTessellationModeAMD, TESSELLATIONMODEAMD, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLTESTFENCEAPPLE #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, TestFenceAPPLE, glTestFenceAPPLE, TESTFENCEAPPLE, (AND GLuint fence), (fence), &fence, return (GLboolean)) GL_PROCM(GLboolean, gl, TestFenceAPPLE, glTestFenceAPPLE, TESTFENCEAPPLE, (AND GLuint fence), (fence), &fence, return (GLboolean)) #endif #endif #ifndef NO_GLTESTFENCENV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, TestFenceNV, glTestFenceNV, TESTFENCENV, (AND GLuint fence), (fence), &fence, return (GLboolean)) GL_PROCM(GLboolean, gl, TestFenceNV, glTestFenceNV, TESTFENCENV, (AND GLuint fence), (fence), &fence, return (GLboolean)) #endif #endif #ifndef NO_GLTESTOBJECTAPPLE #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, TestObjectAPPLE, glTestObjectAPPLE, TESTOBJECTAPPLE, (AND GLenum object, GLuint name), (object, name), &object, return (GLboolean)) GL_PROCM(GLboolean, gl, TestObjectAPPLE, glTestObjectAPPLE, TESTOBJECTAPPLE, (AND GLenum object, GLuint name), (object, name), &object, return (GLboolean)) #endif #endif #ifndef NO_GLTEXBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexBuffer, glTexBuffer, TEXBUFFER, (AND GLenum target, GLenum internalformat, GLuint buffer), (target, internalformat, buffer), &target, GL_void_return) GL_PROCM(void, gl, TexBuffer, glTexBuffer, TEXBUFFER, (AND GLenum target, GLenum internalformat, GLuint buffer), (target, internalformat, buffer), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXBUFFERARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexBufferARB, glTexBufferARB, TEXBUFFERARB, (AND GLenum target, GLenum internalformat, GLuint buffer), (target, internalformat, buffer), &target, GL_void_return) GL_PROCM(void, gl, TexBufferARB, glTexBufferARB, TEXBUFFERARB, (AND GLenum target, GLenum internalformat, GLuint buffer), (target, internalformat, buffer), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexBufferEXT, glTexBufferEXT, TEXBUFFEREXT, (AND GLenum target, GLenum internalformat, GLuint buffer), (target, internalformat, buffer), &target, GL_void_return) GL_PROCM(void, gl, TexBufferEXT, glTexBufferEXT, TEXBUFFEREXT, (AND GLenum target, GLenum internalformat, GLuint buffer), (target, internalformat, buffer), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXBUFFERRANGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexBufferRange, glTexBufferRange, TEXBUFFERRANGE, (AND GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size), (target, internalformat, buffer, offset, size), &target, GL_void_return) GL_PROCM(void, gl, TexBufferRange, glTexBufferRange, TEXBUFFERRANGE, (AND GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size), (target, internalformat, buffer, offset, size), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXBUMPPARAMETERFVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexBumpParameterfvATI, glTexBumpParameterfvATI, TEXBUMPPARAMETERFVATI, (AND GLenum pname, const GLfloat *param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, TexBumpParameterfvATI, glTexBumpParameterfvATI, TEXBUMPPARAMETERFVATI, (AND GLenum pname, memptr param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLTEXBUMPPARAMETERIVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexBumpParameterivATI, glTexBumpParameterivATI, TEXBUMPPARAMETERIVATI, (AND GLenum pname, const GLint *param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, TexBumpParameterivATI, glTexBumpParameterivATI, TEXBUMPPARAMETERIVATI, (AND GLenum pname, memptr param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD1BOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord1bOES, glTexCoord1bOES, TEXCOORD1BOES, (AND GLbyte32 s), (s), &s, GL_void_return) GL_PROCM(void, gl, TexCoord1bOES, glTexCoord1bOES, TEXCOORD1BOES, (AND GLbyte32 s), (s), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD1BVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord1bvOES, glTexCoord1bvOES, TEXCOORD1BVOES, (AND const GLbyte *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, TexCoord1bvOES, glTexCoord1bvOES, TEXCOORD1BVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord1d, glTexCoord1d, TEXCOORD1D, (AND GLdouble s), (s), &s, GL_void_return) GL_PROCM(void, gl, TexCoord1d, glTexCoord1d, TEXCOORD1D, (AND GLdouble s), (s), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD1DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord1dv, glTexCoord1dv, TEXCOORD1DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord1dv, glTexCoord1dv, TEXCOORD1DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD1F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord1f, glTexCoord1f, TEXCOORD1F, (AND GLfloat s), (s), &s, GL_void_return) GL_PROCM(void, gl, TexCoord1f, glTexCoord1f, TEXCOORD1F, (AND GLfloat s), (s), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD1FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord1fv, glTexCoord1fv, TEXCOORD1FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord1fv, glTexCoord1fv, TEXCOORD1FV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD1HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord1hNV, glTexCoord1hNV, TEXCOORD1HNV, (AND GLhalfNV32 s), (s), &s, GL_void_return) GL_PROCM(void, gl, TexCoord1hNV, glTexCoord1hNV, TEXCOORD1HNV, (AND GLhalfNV32 s), (s), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD1HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord1hvNV, glTexCoord1hvNV, TEXCOORD1HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord1hvNV, glTexCoord1hvNV, TEXCOORD1HVNV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD1I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord1i, glTexCoord1i, TEXCOORD1I, (AND GLint s), (s), &s, GL_void_return) GL_PROCM(void, gl, TexCoord1i, glTexCoord1i, TEXCOORD1I, (AND GLint s), (s), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD1IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord1iv, glTexCoord1iv, TEXCOORD1IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord1iv, glTexCoord1iv, TEXCOORD1IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD1S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord1s, glTexCoord1s, TEXCOORD1S, (AND GLshort32 s), (s), &s, GL_void_return) GL_PROCM(void, gl, TexCoord1s, glTexCoord1s, TEXCOORD1S, (AND GLshort32 s), (s), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD1SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord1sv, glTexCoord1sv, TEXCOORD1SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord1sv, glTexCoord1sv, TEXCOORD1SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD1XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord1xOES, glTexCoord1xOES, TEXCOORD1XOES, (AND GLfixed s), (s), &s, GL_void_return) GL_PROCM(void, gl, TexCoord1xOES, glTexCoord1xOES, TEXCOORD1XOES, (AND GLfixed s), (s), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD1XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord1xvOES, glTexCoord1xvOES, TEXCOORD1XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, TexCoord1xvOES, glTexCoord1xvOES, TEXCOORD1XVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2BOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2bOES, glTexCoord2bOES, TEXCOORD2BOES, (AND GLbyte32 s, GLbyte32 t), (s, t), &s, GL_void_return) GL_PROCM(void, gl, TexCoord2bOES, glTexCoord2bOES, TEXCOORD2BOES, (AND GLbyte32 s, GLbyte32 t), (s, t), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2BVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2bvOES, glTexCoord2bvOES, TEXCOORD2BVOES, (AND const GLbyte *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, TexCoord2bvOES, glTexCoord2bvOES, TEXCOORD2BVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2d, glTexCoord2d, TEXCOORD2D, (AND GLdouble s, GLdouble t), (s, t), &s, GL_void_return) GL_PROCM(void, gl, TexCoord2d, glTexCoord2d, TEXCOORD2D, (AND GLdouble s, GLdouble t), (s, t), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2dv, glTexCoord2dv, TEXCOORD2DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord2dv, glTexCoord2dv, TEXCOORD2DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2F GL_PROC(void, gl, TexCoord2f, glTexCoord2f, TEXCOORD2F, (AND GLfloat s, GLfloat t), (s, t), &s, GL_void_return) GL_PROCM(void, gl, TexCoord2f, glTexCoord2f, TEXCOORD2F, (AND GLfloat s, GLfloat t), (s, t), &s, GL_void_return) #endif #ifndef NO_GLTEXCOORD2FCOLOR3FVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2fColor3fVertex3fSUN, glTexCoord2fColor3fVertex3fSUN, TEXCOORD2FCOLOR3FVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z), (s, t, r, g, b, x, y, z), &s, GL_void_return) GL_PROCM(void, gl, TexCoord2fColor3fVertex3fSUN, glTexCoord2fColor3fVertex3fSUN, TEXCOORD2FCOLOR3FVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z), (s, t, r, g, b, x, y, z), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2FCOLOR3FVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2fColor3fVertex3fvSUN, glTexCoord2fColor3fVertex3fvSUN, TEXCOORD2FCOLOR3FVERTEX3FVSUN, (AND const GLfloat *tc, const GLfloat *c, const GLfloat *v), (tc, c, v), &tc, GL_void_return) GL_PROCM(void, gl, TexCoord2fColor3fVertex3fvSUN, glTexCoord2fColor3fVertex3fvSUN, TEXCOORD2FCOLOR3FVERTEX3FVSUN, (AND memptr tc, memptr c, memptr v), (tc, c, v), &tc, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2fColor4fNormal3fVertex3fSUN, glTexCoord2fColor4fNormal3fVertex3fSUN, TEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (s, t, r, g, b, a, nx, ny, nz, x, y, z), &s, GL_void_return) GL_PROCM(void, gl, TexCoord2fColor4fNormal3fVertex3fSUN, glTexCoord2fColor4fNormal3fVertex3fSUN, TEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (s, t, r, g, b, a, nx, ny, nz, x, y, z), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2fColor4fNormal3fVertex3fvSUN, glTexCoord2fColor4fNormal3fVertex3fvSUN, TEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN, (AND const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v), (tc, c, n, v), &tc, GL_void_return) GL_PROCM(void, gl, TexCoord2fColor4fNormal3fVertex3fvSUN, glTexCoord2fColor4fNormal3fVertex3fvSUN, TEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN, (AND memptr tc, memptr c, memptr n, memptr v), (tc, c, n, v), &tc, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2FCOLOR4UBVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2fColor4ubVertex3fSUN, glTexCoord2fColor4ubVertex3fSUN, TEXCOORD2FCOLOR4UBVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z), (s, t, r, g, b, a, x, y, z), &s, GL_void_return) GL_PROCM(void, gl, TexCoord2fColor4ubVertex3fSUN, glTexCoord2fColor4ubVertex3fSUN, TEXCOORD2FCOLOR4UBVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z), (s, t, r, g, b, a, x, y, z), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2FCOLOR4UBVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2fColor4ubVertex3fvSUN, glTexCoord2fColor4ubVertex3fvSUN, TEXCOORD2FCOLOR4UBVERTEX3FVSUN, (AND const GLfloat *tc, const GLubyte *c, const GLfloat *v), (tc, c, v), &tc, GL_void_return) GL_PROCM(void, gl, TexCoord2fColor4ubVertex3fvSUN, glTexCoord2fColor4ubVertex3fvSUN, TEXCOORD2FCOLOR4UBVERTEX3FVSUN, (AND memptr tc, memptr c, memptr v), (tc, c, v), &tc, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2FNORMAL3FVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2fNormal3fVertex3fSUN, glTexCoord2fNormal3fVertex3fSUN, TEXCOORD2FNORMAL3FVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (s, t, nx, ny, nz, x, y, z), &s, GL_void_return) GL_PROCM(void, gl, TexCoord2fNormal3fVertex3fSUN, glTexCoord2fNormal3fVertex3fSUN, TEXCOORD2FNORMAL3FVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (s, t, nx, ny, nz, x, y, z), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2FNORMAL3FVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2fNormal3fVertex3fvSUN, glTexCoord2fNormal3fVertex3fvSUN, TEXCOORD2FNORMAL3FVERTEX3FVSUN, (AND const GLfloat *tc, const GLfloat *n, const GLfloat *v), (tc, n, v), &tc, GL_void_return) GL_PROCM(void, gl, TexCoord2fNormal3fVertex3fvSUN, glTexCoord2fNormal3fVertex3fvSUN, TEXCOORD2FNORMAL3FVERTEX3FVSUN, (AND memptr tc, memptr n, memptr v), (tc, n, v), &tc, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2FVERTEX3FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2fVertex3fSUN, glTexCoord2fVertex3fSUN, TEXCOORD2FVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z), (s, t, x, y, z), &s, GL_void_return) GL_PROCM(void, gl, TexCoord2fVertex3fSUN, glTexCoord2fVertex3fSUN, TEXCOORD2FVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z), (s, t, x, y, z), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2FVERTEX3FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2fVertex3fvSUN, glTexCoord2fVertex3fvSUN, TEXCOORD2FVERTEX3FVSUN, (AND const GLfloat *tc, const GLfloat *v), (tc, v), &tc, GL_void_return) GL_PROCM(void, gl, TexCoord2fVertex3fvSUN, glTexCoord2fVertex3fvSUN, TEXCOORD2FVERTEX3FVSUN, (AND memptr tc, memptr v), (tc, v), &tc, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2FV GL_PROC(void, gl, TexCoord2fv, glTexCoord2fv, TEXCOORD2FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord2fv, glTexCoord2fv, TEXCOORD2FV, (AND memptr v), (v), &v, GL_void_return) #endif #ifndef NO_GLTEXCOORD2HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2hNV, glTexCoord2hNV, TEXCOORD2HNV, (AND GLhalfNV32 s, GLhalfNV32 t), (s, t), &s, GL_void_return) GL_PROCM(void, gl, TexCoord2hNV, glTexCoord2hNV, TEXCOORD2HNV, (AND GLhalfNV32 s, GLhalfNV32 t), (s, t), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2hvNV, glTexCoord2hvNV, TEXCOORD2HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord2hvNV, glTexCoord2hvNV, TEXCOORD2HVNV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2i, glTexCoord2i, TEXCOORD2I, (AND GLint s, GLint t), (s, t), &s, GL_void_return) GL_PROCM(void, gl, TexCoord2i, glTexCoord2i, TEXCOORD2I, (AND GLint s, GLint t), (s, t), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2iv, glTexCoord2iv, TEXCOORD2IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord2iv, glTexCoord2iv, TEXCOORD2IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2s, glTexCoord2s, TEXCOORD2S, (AND GLshort32 s, GLshort32 t), (s, t), &s, GL_void_return) GL_PROCM(void, gl, TexCoord2s, glTexCoord2s, TEXCOORD2S, (AND GLshort32 s, GLshort32 t), (s, t), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2sv, glTexCoord2sv, TEXCOORD2SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord2sv, glTexCoord2sv, TEXCOORD2SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2xOES, glTexCoord2xOES, TEXCOORD2XOES, (AND GLfixed s, GLfixed t), (s, t), &s, GL_void_return) GL_PROCM(void, gl, TexCoord2xOES, glTexCoord2xOES, TEXCOORD2XOES, (AND GLfixed s, GLfixed t), (s, t), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD2XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord2xvOES, glTexCoord2xvOES, TEXCOORD2XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, TexCoord2xvOES, glTexCoord2xvOES, TEXCOORD2XVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD3BOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord3bOES, glTexCoord3bOES, TEXCOORD3BOES, (AND GLbyte32 s, GLbyte32 t, GLbyte32 r), (s, t, r), &s, GL_void_return) GL_PROCM(void, gl, TexCoord3bOES, glTexCoord3bOES, TEXCOORD3BOES, (AND GLbyte32 s, GLbyte32 t, GLbyte32 r), (s, t, r), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD3BVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord3bvOES, glTexCoord3bvOES, TEXCOORD3BVOES, (AND const GLbyte *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, TexCoord3bvOES, glTexCoord3bvOES, TEXCOORD3BVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord3d, glTexCoord3d, TEXCOORD3D, (AND GLdouble s, GLdouble t, GLdouble r), (s, t, r), &s, GL_void_return) GL_PROCM(void, gl, TexCoord3d, glTexCoord3d, TEXCOORD3D, (AND GLdouble s, GLdouble t, GLdouble r), (s, t, r), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord3dv, glTexCoord3dv, TEXCOORD3DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord3dv, glTexCoord3dv, TEXCOORD3DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD3F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord3f, glTexCoord3f, TEXCOORD3F, (AND GLfloat s, GLfloat t, GLfloat r), (s, t, r), &s, GL_void_return) GL_PROCM(void, gl, TexCoord3f, glTexCoord3f, TEXCOORD3F, (AND GLfloat s, GLfloat t, GLfloat r), (s, t, r), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD3FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord3fv, glTexCoord3fv, TEXCOORD3FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord3fv, glTexCoord3fv, TEXCOORD3FV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD3HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord3hNV, glTexCoord3hNV, TEXCOORD3HNV, (AND GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r), (s, t, r), &s, GL_void_return) GL_PROCM(void, gl, TexCoord3hNV, glTexCoord3hNV, TEXCOORD3HNV, (AND GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r), (s, t, r), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD3HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord3hvNV, glTexCoord3hvNV, TEXCOORD3HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord3hvNV, glTexCoord3hvNV, TEXCOORD3HVNV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD3I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord3i, glTexCoord3i, TEXCOORD3I, (AND GLint s, GLint t, GLint r), (s, t, r), &s, GL_void_return) GL_PROCM(void, gl, TexCoord3i, glTexCoord3i, TEXCOORD3I, (AND GLint s, GLint t, GLint r), (s, t, r), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD3IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord3iv, glTexCoord3iv, TEXCOORD3IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord3iv, glTexCoord3iv, TEXCOORD3IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD3S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord3s, glTexCoord3s, TEXCOORD3S, (AND GLshort32 s, GLshort32 t, GLshort32 r), (s, t, r), &s, GL_void_return) GL_PROCM(void, gl, TexCoord3s, glTexCoord3s, TEXCOORD3S, (AND GLshort32 s, GLshort32 t, GLshort32 r), (s, t, r), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD3SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord3sv, glTexCoord3sv, TEXCOORD3SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord3sv, glTexCoord3sv, TEXCOORD3SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD3XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord3xOES, glTexCoord3xOES, TEXCOORD3XOES, (AND GLfixed s, GLfixed t, GLfixed r), (s, t, r), &s, GL_void_return) GL_PROCM(void, gl, TexCoord3xOES, glTexCoord3xOES, TEXCOORD3XOES, (AND GLfixed s, GLfixed t, GLfixed r), (s, t, r), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD3XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord3xvOES, glTexCoord3xvOES, TEXCOORD3XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, TexCoord3xvOES, glTexCoord3xvOES, TEXCOORD3XVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4BOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4bOES, glTexCoord4bOES, TEXCOORD4BOES, (AND GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q), (s, t, r, q), &s, GL_void_return) GL_PROCM(void, gl, TexCoord4bOES, glTexCoord4bOES, TEXCOORD4BOES, (AND GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q), (s, t, r, q), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4BVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4bvOES, glTexCoord4bvOES, TEXCOORD4BVOES, (AND const GLbyte *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, TexCoord4bvOES, glTexCoord4bvOES, TEXCOORD4BVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4d, glTexCoord4d, TEXCOORD4D, (AND GLdouble s, GLdouble t, GLdouble r, GLdouble q), (s, t, r, q), &s, GL_void_return) GL_PROCM(void, gl, TexCoord4d, glTexCoord4d, TEXCOORD4D, (AND GLdouble s, GLdouble t, GLdouble r, GLdouble q), (s, t, r, q), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4dv, glTexCoord4dv, TEXCOORD4DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord4dv, glTexCoord4dv, TEXCOORD4DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4F GL_PROC(void, gl, TexCoord4f, glTexCoord4f, TEXCOORD4F, (AND GLfloat s, GLfloat t, GLfloat r, GLfloat q), (s, t, r, q), &s, GL_void_return) GL_PROCM(void, gl, TexCoord4f, glTexCoord4f, TEXCOORD4F, (AND GLfloat s, GLfloat t, GLfloat r, GLfloat q), (s, t, r, q), &s, GL_void_return) #endif #ifndef NO_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4fColor4fNormal3fVertex4fSUN, glTexCoord4fColor4fNormal3fVertex4fSUN, TEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUN, (AND GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (s, t, p, q, r, g, b, a, nx, ny, nz, x, y, z, w), &s, GL_void_return) GL_PROCM(void, gl, TexCoord4fColor4fNormal3fVertex4fSUN, glTexCoord4fColor4fNormal3fVertex4fSUN, TEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUN, (AND GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (s, t, p, q, r, g, b, a, nx, ny, nz, x, y, z, w), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4fColor4fNormal3fVertex4fvSUN, glTexCoord4fColor4fNormal3fVertex4fvSUN, TEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUN, (AND const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v), (tc, c, n, v), &tc, GL_void_return) GL_PROCM(void, gl, TexCoord4fColor4fNormal3fVertex4fvSUN, glTexCoord4fColor4fNormal3fVertex4fvSUN, TEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUN, (AND memptr tc, memptr c, memptr n, memptr v), (tc, c, n, v), &tc, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4FVERTEX4FSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4fVertex4fSUN, glTexCoord4fVertex4fSUN, TEXCOORD4FVERTEX4FSUN, (AND GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (s, t, p, q, x, y, z, w), &s, GL_void_return) GL_PROCM(void, gl, TexCoord4fVertex4fSUN, glTexCoord4fVertex4fSUN, TEXCOORD4FVERTEX4FSUN, (AND GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (s, t, p, q, x, y, z, w), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4FVERTEX4FVSUN #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4fVertex4fvSUN, glTexCoord4fVertex4fvSUN, TEXCOORD4FVERTEX4FVSUN, (AND const GLfloat *tc, const GLfloat *v), (tc, v), &tc, GL_void_return) GL_PROCM(void, gl, TexCoord4fVertex4fvSUN, glTexCoord4fVertex4fvSUN, TEXCOORD4FVERTEX4FVSUN, (AND memptr tc, memptr v), (tc, v), &tc, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4fv, glTexCoord4fv, TEXCOORD4FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord4fv, glTexCoord4fv, TEXCOORD4FV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4hNV, glTexCoord4hNV, TEXCOORD4HNV, (AND GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q), (s, t, r, q), &s, GL_void_return) GL_PROCM(void, gl, TexCoord4hNV, glTexCoord4hNV, TEXCOORD4HNV, (AND GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q), (s, t, r, q), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4hvNV, glTexCoord4hvNV, TEXCOORD4HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord4hvNV, glTexCoord4hvNV, TEXCOORD4HVNV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4i, glTexCoord4i, TEXCOORD4I, (AND GLint s, GLint t, GLint r, GLint q), (s, t, r, q), &s, GL_void_return) GL_PROCM(void, gl, TexCoord4i, glTexCoord4i, TEXCOORD4I, (AND GLint s, GLint t, GLint r, GLint q), (s, t, r, q), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4iv, glTexCoord4iv, TEXCOORD4IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord4iv, glTexCoord4iv, TEXCOORD4IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4s, glTexCoord4s, TEXCOORD4S, (AND GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q), (s, t, r, q), &s, GL_void_return) GL_PROCM(void, gl, TexCoord4s, glTexCoord4s, TEXCOORD4S, (AND GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q), (s, t, r, q), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4sv, glTexCoord4sv, TEXCOORD4SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, TexCoord4sv, glTexCoord4sv, TEXCOORD4SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4xOES, glTexCoord4xOES, TEXCOORD4XOES, (AND GLfixed s, GLfixed t, GLfixed r, GLfixed q), (s, t, r, q), &s, GL_void_return) GL_PROCM(void, gl, TexCoord4xOES, glTexCoord4xOES, TEXCOORD4XOES, (AND GLfixed s, GLfixed t, GLfixed r, GLfixed q), (s, t, r, q), &s, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORD4XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoord4xvOES, glTexCoord4xvOES, TEXCOORD4XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, TexCoord4xvOES, glTexCoord4xvOES, TEXCOORD4XVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORDFORMATNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoordFormatNV, glTexCoordFormatNV, TEXCOORDFORMATNV, (AND GLint size, GLenum type, GLsizei stride), (size, type, stride), &size, GL_void_return) GL_PROCM(void, gl, TexCoordFormatNV, glTexCoordFormatNV, TEXCOORDFORMATNV, (AND GLint size, GLenum type, GLsizei stride), (size, type, stride), &size, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORDP1UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoordP1ui, glTexCoordP1ui, TEXCOORDP1UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) GL_PROCM(void, gl, TexCoordP1ui, glTexCoordP1ui, TEXCOORDP1UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORDP1UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoordP1uiv, glTexCoordP1uiv, TEXCOORDP1UIV, (AND GLenum type, const GLuint *coords), (type, coords), &type, GL_void_return) GL_PROCM(void, gl, TexCoordP1uiv, glTexCoordP1uiv, TEXCOORDP1UIV, (AND GLenum type, memptr coords), (type, coords), &type, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORDP2UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoordP2ui, glTexCoordP2ui, TEXCOORDP2UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) GL_PROCM(void, gl, TexCoordP2ui, glTexCoordP2ui, TEXCOORDP2UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORDP2UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoordP2uiv, glTexCoordP2uiv, TEXCOORDP2UIV, (AND GLenum type, const GLuint *coords), (type, coords), &type, GL_void_return) GL_PROCM(void, gl, TexCoordP2uiv, glTexCoordP2uiv, TEXCOORDP2UIV, (AND GLenum type, memptr coords), (type, coords), &type, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORDP3UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoordP3ui, glTexCoordP3ui, TEXCOORDP3UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) GL_PROCM(void, gl, TexCoordP3ui, glTexCoordP3ui, TEXCOORDP3UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORDP3UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoordP3uiv, glTexCoordP3uiv, TEXCOORDP3UIV, (AND GLenum type, const GLuint *coords), (type, coords), &type, GL_void_return) GL_PROCM(void, gl, TexCoordP3uiv, glTexCoordP3uiv, TEXCOORDP3UIV, (AND GLenum type, memptr coords), (type, coords), &type, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORDP4UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoordP4ui, glTexCoordP4ui, TEXCOORDP4UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) GL_PROCM(void, gl, TexCoordP4ui, glTexCoordP4ui, TEXCOORDP4UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORDP4UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoordP4uiv, glTexCoordP4uiv, TEXCOORDP4UIV, (AND GLenum type, const GLuint *coords), (type, coords), &type, GL_void_return) GL_PROCM(void, gl, TexCoordP4uiv, glTexCoordP4uiv, TEXCOORDP4UIV, (AND GLenum type, memptr coords), (type, coords), &type, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORDPOINTER GL_PROC(void, gl, TexCoordPointer, glTexCoordPointer, TEXCOORDPOINTER, (AND GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size, type, stride, pointer), &size, GL_void_return) GL_PROCM(void, gl, TexCoordPointer, glTexCoordPointer, TEXCOORDPOINTER, (AND GLint size, GLenum type, GLsizei stride, memptr pointer), (size, type, stride, pointer), &size, GL_void_return) #endif #ifndef NO_GLTEXCOORDPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoordPointerEXT, glTexCoordPointerEXT, TEXCOORDPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer), (size, type, stride, count, pointer), &size, GL_void_return) GL_PROCM(void, gl, TexCoordPointerEXT, glTexCoordPointerEXT, TEXCOORDPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, GLsizei count, memptr pointer), (size, type, stride, count, pointer), &size, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORDPOINTERLISTIBM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoordPointerListIBM, glTexCoordPointerListIBM, TEXCOORDPOINTERLISTIBM, (AND GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride), (size, type, stride, pointer, ptrstride), &size, GL_void_return) GL_PROCM(void, gl, TexCoordPointerListIBM, glTexCoordPointerListIBM, TEXCOORDPOINTERLISTIBM, (AND GLint size, GLenum type, GLint stride, memptr pointer, GLint ptrstride), (size, type, stride, pointer, ptrstride), &size, GL_void_return) #endif #endif #ifndef NO_GLTEXCOORDPOINTERVINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexCoordPointervINTEL, glTexCoordPointervINTEL, TEXCOORDPOINTERVINTEL, (AND GLint size, GLenum type, const void * *pointer), (size, type, pointer), &size, GL_void_return) GL_PROCM(void, gl, TexCoordPointervINTEL, glTexCoordPointervINTEL, TEXCOORDPOINTERVINTEL, (AND GLint size, GLenum type, memptr pointer), (size, type, pointer), &size, GL_void_return) #endif #endif #ifndef NO_GLTEXENVF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexEnvf, glTexEnvf, TEXENVF, (AND GLenum target, GLenum pname, GLfloat param), (target, pname, param), &target, GL_void_return) GL_PROCM(void, gl, TexEnvf, glTexEnvf, TEXENVF, (AND GLenum target, GLenum pname, GLfloat param), (target, pname, param), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXENVFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexEnvfv, glTexEnvfv, TEXENVFV, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, TexEnvfv, glTexEnvfv, TEXENVFV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXENVI GL_PROC(void, gl, TexEnvi, glTexEnvi, TEXENVI, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) GL_PROCM(void, gl, TexEnvi, glTexEnvi, TEXENVI, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) #endif #ifndef NO_GLTEXENVIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexEnviv, glTexEnviv, TEXENVIV, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, TexEnviv, glTexEnviv, TEXENVIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXENVXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexEnvxOES, glTexEnvxOES, TEXENVXOES, (AND GLenum target, GLenum pname, GLfixed param), (target, pname, param), &target, GL_void_return) GL_PROCM(void, gl, TexEnvxOES, glTexEnvxOES, TEXENVXOES, (AND GLenum target, GLenum pname, GLfixed param), (target, pname, param), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXENVXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexEnvxvOES, glTexEnvxvOES, TEXENVXVOES, (AND GLenum target, GLenum pname, const GLfixed *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, TexEnvxvOES, glTexEnvxvOES, TEXENVXVOES, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXFILTERFUNCSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexFilterFuncSGIS, glTexFilterFuncSGIS, TEXFILTERFUNCSGIS, (AND GLenum target, GLenum filter, GLsizei n, const GLfloat *weights), (target, filter, n, weights), &target, GL_void_return) GL_PROCM(void, gl, TexFilterFuncSGIS, glTexFilterFuncSGIS, TEXFILTERFUNCSGIS, (AND GLenum target, GLenum filter, GLsizei n, memptr weights), (target, filter, n, weights), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXGEND #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexGend, glTexGend, TEXGEND, (AND GLenum coord, GLenum pname, GLdouble param), (coord, pname, param), &coord, GL_void_return) GL_PROCM(void, gl, TexGend, glTexGend, TEXGEND, (AND GLenum coord, GLenum pname, GLdouble param), (coord, pname, param), &coord, GL_void_return) #endif #endif #ifndef NO_GLTEXGENDV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexGendv, glTexGendv, TEXGENDV, (AND GLenum coord, GLenum pname, const GLdouble *params), (coord, pname, params), &coord, GL_void_return) GL_PROCM(void, gl, TexGendv, glTexGendv, TEXGENDV, (AND GLenum coord, GLenum pname, memptr params), (coord, pname, params), &coord, GL_void_return) #endif #endif #ifndef NO_GLTEXGENF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexGenf, glTexGenf, TEXGENF, (AND GLenum coord, GLenum pname, GLfloat param), (coord, pname, param), &coord, GL_void_return) GL_PROCM(void, gl, TexGenf, glTexGenf, TEXGENF, (AND GLenum coord, GLenum pname, GLfloat param), (coord, pname, param), &coord, GL_void_return) #endif #endif #ifndef NO_GLTEXGENFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexGenfv, glTexGenfv, TEXGENFV, (AND GLenum coord, GLenum pname, const GLfloat *params), (coord, pname, params), &coord, GL_void_return) GL_PROCM(void, gl, TexGenfv, glTexGenfv, TEXGENFV, (AND GLenum coord, GLenum pname, memptr params), (coord, pname, params), &coord, GL_void_return) #endif #endif #ifndef NO_GLTEXGENI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexGeni, glTexGeni, TEXGENI, (AND GLenum coord, GLenum pname, GLint param), (coord, pname, param), &coord, GL_void_return) GL_PROCM(void, gl, TexGeni, glTexGeni, TEXGENI, (AND GLenum coord, GLenum pname, GLint param), (coord, pname, param), &coord, GL_void_return) #endif #endif #ifndef NO_GLTEXGENIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexGeniv, glTexGeniv, TEXGENIV, (AND GLenum coord, GLenum pname, const GLint *params), (coord, pname, params), &coord, GL_void_return) GL_PROCM(void, gl, TexGeniv, glTexGeniv, TEXGENIV, (AND GLenum coord, GLenum pname, memptr params), (coord, pname, params), &coord, GL_void_return) #endif #endif #ifndef NO_GLTEXGENXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexGenxOES, glTexGenxOES, TEXGENXOES, (AND GLenum coord, GLenum pname, GLfixed param), (coord, pname, param), &coord, GL_void_return) GL_PROCM(void, gl, TexGenxOES, glTexGenxOES, TEXGENXOES, (AND GLenum coord, GLenum pname, GLfixed param), (coord, pname, param), &coord, GL_void_return) #endif #endif #ifndef NO_GLTEXGENXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexGenxvOES, glTexGenxvOES, TEXGENXVOES, (AND GLenum coord, GLenum pname, const GLfixed *params), (coord, pname, params), &coord, GL_void_return) GL_PROCM(void, gl, TexGenxvOES, glTexGenxvOES, TEXGENXVOES, (AND GLenum coord, GLenum pname, memptr params), (coord, pname, params), &coord, GL_void_return) #endif #endif #ifndef NO_GLTEXIMAGE1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexImage1D, glTexImage1D, TEXIMAGE1D, (AND GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels), (target, level, internalformat, width, border, format, type, pixels), &target, GL_void_return) GL_PROCM(void, gl, TexImage1D, glTexImage1D, TEXIMAGE1D, (AND GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, memptr pixels), (target, level, internalformat, width, border, format, type, pixels), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXIMAGE2D GL_PROC(void, gl, TexImage2D, glTexImage2D, TEXIMAGE2D, (AND GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels), (target, level, internalformat, width, height, border, format, type, pixels), &target, GL_void_return) GL_PROCM(void, gl, TexImage2D, glTexImage2D, TEXIMAGE2D, (AND GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, memptr pixels), (target, level, internalformat, width, height, border, format, type, pixels), &target, GL_void_return) #endif #ifndef NO_GLTEXIMAGE2DMULTISAMPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexImage2DMultisample, glTexImage2DMultisample, TEXIMAGE2DMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations), (target, samples, internalformat, width, height, fixedsamplelocations), &target, GL_void_return) GL_PROCM(void, gl, TexImage2DMultisample, glTexImage2DMultisample, TEXIMAGE2DMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations), (target, samples, internalformat, width, height, fixedsamplelocations), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXIMAGE2DMULTISAMPLECOVERAGENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexImage2DMultisampleCoverageNV, glTexImage2DMultisampleCoverageNV, TEXIMAGE2DMULTISAMPLECOVERAGENV, (AND GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations), (target, coverageSamples, colorSamples, internalFormat, width, height, fixedSampleLocations), &target, GL_void_return) GL_PROCM(void, gl, TexImage2DMultisampleCoverageNV, glTexImage2DMultisampleCoverageNV, TEXIMAGE2DMULTISAMPLECOVERAGENV, (AND GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations), (target, coverageSamples, colorSamples, internalFormat, width, height, fixedSampleLocations), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXIMAGE3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexImage3D, glTexImage3D, TEXIMAGE3D, (AND GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels), (target, level, internalformat, width, height, depth, border, format, type, pixels), &target, GL_void_return) GL_PROCM(void, gl, TexImage3D, glTexImage3D, TEXIMAGE3D, (AND GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, memptr pixels), (target, level, internalformat, width, height, depth, border, format, type, pixels), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXIMAGE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexImage3DEXT, glTexImage3DEXT, TEXIMAGE3DEXT, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels), (target, level, internalformat, width, height, depth, border, format, type, pixels), &target, GL_void_return) GL_PROCM(void, gl, TexImage3DEXT, glTexImage3DEXT, TEXIMAGE3DEXT, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, memptr pixels), (target, level, internalformat, width, height, depth, border, format, type, pixels), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXIMAGE3DMULTISAMPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexImage3DMultisample, glTexImage3DMultisample, TEXIMAGE3DMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations), (target, samples, internalformat, width, height, depth, fixedsamplelocations), &target, GL_void_return) GL_PROCM(void, gl, TexImage3DMultisample, glTexImage3DMultisample, TEXIMAGE3DMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations), (target, samples, internalformat, width, height, depth, fixedsamplelocations), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXIMAGE3DMULTISAMPLECOVERAGENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexImage3DMultisampleCoverageNV, glTexImage3DMultisampleCoverageNV, TEXIMAGE3DMULTISAMPLECOVERAGENV, (AND GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations), (target, coverageSamples, colorSamples, internalFormat, width, height, depth, fixedSampleLocations), &target, GL_void_return) GL_PROCM(void, gl, TexImage3DMultisampleCoverageNV, glTexImage3DMultisampleCoverageNV, TEXIMAGE3DMULTISAMPLECOVERAGENV, (AND GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations), (target, coverageSamples, colorSamples, internalFormat, width, height, depth, fixedSampleLocations), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXIMAGE4DSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexImage4DSGIS, glTexImage4DSGIS, TEXIMAGE4DSGIS, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels), (target, level, internalformat, width, height, depth, size4d, border, format, type, pixels), &target, GL_void_return) GL_PROCM(void, gl, TexImage4DSGIS, glTexImage4DSGIS, TEXIMAGE4DSGIS, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, memptr pixels), (target, level, internalformat, width, height, depth, size4d, border, format, type, pixels), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXPAGECOMMITMENTARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexPageCommitmentARB, glTexPageCommitmentARB, TEXPAGECOMMITMENTARB, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit), (target, level, xoffset, yoffset, zoffset, width, height, depth, commit), &target, GL_void_return) GL_PROCM(void, gl, TexPageCommitmentARB, glTexPageCommitmentARB, TEXPAGECOMMITMENTARB, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit), (target, level, xoffset, yoffset, zoffset, width, height, depth, commit), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXPARAMETERIIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexParameterIiv, glTexParameterIiv, TEXPARAMETERIIV, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, TexParameterIiv, glTexParameterIiv, TEXPARAMETERIIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXPARAMETERIIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexParameterIivEXT, glTexParameterIivEXT, TEXPARAMETERIIVEXT, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, TexParameterIivEXT, glTexParameterIivEXT, TEXPARAMETERIIVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXPARAMETERIUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexParameterIuiv, glTexParameterIuiv, TEXPARAMETERIUIV, (AND GLenum target, GLenum pname, const GLuint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, TexParameterIuiv, glTexParameterIuiv, TEXPARAMETERIUIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXPARAMETERIUIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexParameterIuivEXT, glTexParameterIuivEXT, TEXPARAMETERIUIVEXT, (AND GLenum target, GLenum pname, const GLuint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, TexParameterIuivEXT, glTexParameterIuivEXT, TEXPARAMETERIUIVEXT, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXPARAMETERF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexParameterf, glTexParameterf, TEXPARAMETERF, (AND GLenum target, GLenum pname, GLfloat param), (target, pname, param), &target, GL_void_return) GL_PROCM(void, gl, TexParameterf, glTexParameterf, TEXPARAMETERF, (AND GLenum target, GLenum pname, GLfloat param), (target, pname, param), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexParameterfv, glTexParameterfv, TEXPARAMETERFV, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, TexParameterfv, glTexParameterfv, TEXPARAMETERFV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXPARAMETERI GL_PROC(void, gl, TexParameteri, glTexParameteri, TEXPARAMETERI, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) GL_PROCM(void, gl, TexParameteri, glTexParameteri, TEXPARAMETERI, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) #endif #ifndef NO_GLTEXPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexParameteriv, glTexParameteriv, TEXPARAMETERIV, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, TexParameteriv, glTexParameteriv, TEXPARAMETERIV, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXPARAMETERXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexParameterxOES, glTexParameterxOES, TEXPARAMETERXOES, (AND GLenum target, GLenum pname, GLfixed param), (target, pname, param), &target, GL_void_return) GL_PROCM(void, gl, TexParameterxOES, glTexParameterxOES, TEXPARAMETERXOES, (AND GLenum target, GLenum pname, GLfixed param), (target, pname, param), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXPARAMETERXVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexParameterxvOES, glTexParameterxvOES, TEXPARAMETERXVOES, (AND GLenum target, GLenum pname, const GLfixed *params), (target, pname, params), &target, GL_void_return) GL_PROCM(void, gl, TexParameterxvOES, glTexParameterxvOES, TEXPARAMETERXVOES, (AND GLenum target, GLenum pname, memptr params), (target, pname, params), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXRENDERBUFFERNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexRenderbufferNV, glTexRenderbufferNV, TEXRENDERBUFFERNV, (AND GLenum target, GLuint renderbuffer), (target, renderbuffer), &target, GL_void_return) GL_PROCM(void, gl, TexRenderbufferNV, glTexRenderbufferNV, TEXRENDERBUFFERNV, (AND GLenum target, GLuint renderbuffer), (target, renderbuffer), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSCISSORFUNCINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexScissorFuncINTEL, glTexScissorFuncINTEL, TEXSCISSORFUNCINTEL, (AND GLenum target, GLenum lfunc, GLenum hfunc), (target, lfunc, hfunc), &target, GL_void_return) GL_PROCM(void, gl, TexScissorFuncINTEL, glTexScissorFuncINTEL, TEXSCISSORFUNCINTEL, (AND GLenum target, GLenum lfunc, GLenum hfunc), (target, lfunc, hfunc), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSCISSORINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexScissorINTEL, glTexScissorINTEL, TEXSCISSORINTEL, (AND GLenum target, GLclampf tlow, GLclampf thigh), (target, tlow, thigh), &target, GL_void_return) GL_PROCM(void, gl, TexScissorINTEL, glTexScissorINTEL, TEXSCISSORINTEL, (AND GLenum target, GLclampf tlow, GLclampf thigh), (target, tlow, thigh), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSTORAGE1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexStorage1D, glTexStorage1D, TEXSTORAGE1D, (AND GLenum target, GLsizei levels, GLenum internalformat, GLsizei width), (target, levels, internalformat, width), &target, GL_void_return) GL_PROCM(void, gl, TexStorage1D, glTexStorage1D, TEXSTORAGE1D, (AND GLenum target, GLsizei levels, GLenum internalformat, GLsizei width), (target, levels, internalformat, width), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSTORAGE2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexStorage2D, glTexStorage2D, TEXSTORAGE2D, (AND GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height), (target, levels, internalformat, width, height), &target, GL_void_return) GL_PROCM(void, gl, TexStorage2D, glTexStorage2D, TEXSTORAGE2D, (AND GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height), (target, levels, internalformat, width, height), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSTORAGE2DMULTISAMPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexStorage2DMultisample, glTexStorage2DMultisample, TEXSTORAGE2DMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations), (target, samples, internalformat, width, height, fixedsamplelocations), &target, GL_void_return) GL_PROCM(void, gl, TexStorage2DMultisample, glTexStorage2DMultisample, TEXSTORAGE2DMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations), (target, samples, internalformat, width, height, fixedsamplelocations), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSTORAGE3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexStorage3D, glTexStorage3D, TEXSTORAGE3D, (AND GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth), (target, levels, internalformat, width, height, depth), &target, GL_void_return) GL_PROCM(void, gl, TexStorage3D, glTexStorage3D, TEXSTORAGE3D, (AND GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth), (target, levels, internalformat, width, height, depth), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSTORAGE3DMULTISAMPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexStorage3DMultisample, glTexStorage3DMultisample, TEXSTORAGE3DMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations), (target, samples, internalformat, width, height, depth, fixedsamplelocations), &target, GL_void_return) GL_PROCM(void, gl, TexStorage3DMultisample, glTexStorage3DMultisample, TEXSTORAGE3DMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations), (target, samples, internalformat, width, height, depth, fixedsamplelocations), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSTORAGEMEM1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexStorageMem1DEXT, glTexStorageMem1DEXT, TEXSTORAGEMEM1DEXT, (AND GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset), (target, levels, internalFormat, width, memory, offset), &target, GL_void_return) GL_PROCM(void, gl, TexStorageMem1DEXT, glTexStorageMem1DEXT, TEXSTORAGEMEM1DEXT, (AND GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset), (target, levels, internalFormat, width, memory, offset), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSTORAGEMEM2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexStorageMem2DEXT, glTexStorageMem2DEXT, TEXSTORAGEMEM2DEXT, (AND GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset), (target, levels, internalFormat, width, height, memory, offset), &target, GL_void_return) GL_PROCM(void, gl, TexStorageMem2DEXT, glTexStorageMem2DEXT, TEXSTORAGEMEM2DEXT, (AND GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset), (target, levels, internalFormat, width, height, memory, offset), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSTORAGEMEM2DMULTISAMPLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexStorageMem2DMultisampleEXT, glTexStorageMem2DMultisampleEXT, TEXSTORAGEMEM2DMULTISAMPLEEXT, (AND GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset), (target, samples, internalFormat, width, height, fixedSampleLocations, memory, offset), &target, GL_void_return) GL_PROCM(void, gl, TexStorageMem2DMultisampleEXT, glTexStorageMem2DMultisampleEXT, TEXSTORAGEMEM2DMULTISAMPLEEXT, (AND GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset), (target, samples, internalFormat, width, height, fixedSampleLocations, memory, offset), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSTORAGEMEM3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexStorageMem3DEXT, glTexStorageMem3DEXT, TEXSTORAGEMEM3DEXT, (AND GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset), (target, levels, internalFormat, width, height, depth, memory, offset), &target, GL_void_return) GL_PROCM(void, gl, TexStorageMem3DEXT, glTexStorageMem3DEXT, TEXSTORAGEMEM3DEXT, (AND GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset), (target, levels, internalFormat, width, height, depth, memory, offset), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSTORAGEMEM3DMULTISAMPLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexStorageMem3DMultisampleEXT, glTexStorageMem3DMultisampleEXT, TEXSTORAGEMEM3DMULTISAMPLEEXT, (AND GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset), (target, samples, internalFormat, width, height, depth, fixedSampleLocations, memory, offset), &target, GL_void_return) GL_PROCM(void, gl, TexStorageMem3DMultisampleEXT, glTexStorageMem3DMultisampleEXT, TEXSTORAGEMEM3DMULTISAMPLEEXT, (AND GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset), (target, samples, internalFormat, width, height, depth, fixedSampleLocations, memory, offset), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSTORAGESPARSEAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexStorageSparseAMD, glTexStorageSparseAMD, TEXSTORAGESPARSEAMD, (AND GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags), (target, internalFormat, width, height, depth, layers, flags), &target, GL_void_return) GL_PROCM(void, gl, TexStorageSparseAMD, glTexStorageSparseAMD, TEXSTORAGESPARSEAMD, (AND GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags), (target, internalFormat, width, height, depth, layers, flags), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSUBIMAGE1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexSubImage1D, glTexSubImage1D, TEXSUBIMAGE1D, (AND GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels), (target, level, xoffset, width, format, type, pixels), &target, GL_void_return) GL_PROCM(void, gl, TexSubImage1D, glTexSubImage1D, TEXSUBIMAGE1D, (AND GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, memptr pixels), (target, level, xoffset, width, format, type, pixels), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSUBIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexSubImage1DEXT, glTexSubImage1DEXT, TEXSUBIMAGE1DEXT, (AND GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels), (target, level, xoffset, width, format, type, pixels), &target, GL_void_return) GL_PROCM(void, gl, TexSubImage1DEXT, glTexSubImage1DEXT, TEXSUBIMAGE1DEXT, (AND GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, memptr pixels), (target, level, xoffset, width, format, type, pixels), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSUBIMAGE2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexSubImage2D, glTexSubImage2D, TEXSUBIMAGE2D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels), (target, level, xoffset, yoffset, width, height, format, type, pixels), &target, GL_void_return) GL_PROCM(void, gl, TexSubImage2D, glTexSubImage2D, TEXSUBIMAGE2D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr pixels), (target, level, xoffset, yoffset, width, height, format, type, pixels), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSUBIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexSubImage2DEXT, glTexSubImage2DEXT, TEXSUBIMAGE2DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels), (target, level, xoffset, yoffset, width, height, format, type, pixels), &target, GL_void_return) GL_PROCM(void, gl, TexSubImage2DEXT, glTexSubImage2DEXT, TEXSUBIMAGE2DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr pixels), (target, level, xoffset, yoffset, width, height, format, type, pixels), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSUBIMAGE3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexSubImage3D, glTexSubImage3D, TEXSUBIMAGE3D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &target, GL_void_return) GL_PROCM(void, gl, TexSubImage3D, glTexSubImage3D, TEXSUBIMAGE3D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, memptr pixels), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSUBIMAGE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexSubImage3DEXT, glTexSubImage3DEXT, TEXSUBIMAGE3DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &target, GL_void_return) GL_PROCM(void, gl, TexSubImage3DEXT, glTexSubImage3DEXT, TEXSUBIMAGE3DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, memptr pixels), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXSUBIMAGE4DSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexSubImage4DSGIS, glTexSubImage4DSGIS, TEXSUBIMAGE4DSGIS, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels), (target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels), &target, GL_void_return) GL_PROCM(void, gl, TexSubImage4DSGIS, glTexSubImage4DSGIS, TEXSUBIMAGE4DSGIS, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, memptr pixels), (target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREBARRIER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureBarrier, glTextureBarrier, TEXTUREBARRIER, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, TextureBarrier, glTextureBarrier, TEXTUREBARRIER, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREBARRIERNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureBarrierNV, glTextureBarrierNV, TEXTUREBARRIERNV, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, TextureBarrierNV, glTextureBarrierNV, TEXTUREBARRIERNV, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureBuffer, glTextureBuffer, TEXTUREBUFFER, (AND GLuint texture, GLenum internalformat, GLuint buffer), (texture, internalformat, buffer), &texture, GL_void_return) GL_PROCM(void, gl, TextureBuffer, glTextureBuffer, TEXTUREBUFFER, (AND GLuint texture, GLenum internalformat, GLuint buffer), (texture, internalformat, buffer), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureBufferEXT, glTextureBufferEXT, TEXTUREBUFFEREXT, (AND GLuint texture, GLenum target, GLenum internalformat, GLuint buffer), (texture, target, internalformat, buffer), &texture, GL_void_return) GL_PROCM(void, gl, TextureBufferEXT, glTextureBufferEXT, TEXTUREBUFFEREXT, (AND GLuint texture, GLenum target, GLenum internalformat, GLuint buffer), (texture, target, internalformat, buffer), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREBUFFERRANGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureBufferRange, glTextureBufferRange, TEXTUREBUFFERRANGE, (AND GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size), (texture, internalformat, buffer, offset, size), &texture, GL_void_return) GL_PROCM(void, gl, TextureBufferRange, glTextureBufferRange, TEXTUREBUFFERRANGE, (AND GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size), (texture, internalformat, buffer, offset, size), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREBUFFERRANGEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureBufferRangeEXT, glTextureBufferRangeEXT, TEXTUREBUFFERRANGEEXT, (AND GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size), (texture, target, internalformat, buffer, offset, size), &texture, GL_void_return) GL_PROCM(void, gl, TextureBufferRangeEXT, glTextureBufferRangeEXT, TEXTUREBUFFERRANGEEXT, (AND GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size), (texture, target, internalformat, buffer, offset, size), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURECOLORMASKSGIS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureColorMaskSGIS, glTextureColorMaskSGIS, TEXTURECOLORMASKSGIS, (AND GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha), (red, green, blue, alpha), &red, GL_void_return) GL_PROCM(void, gl, TextureColorMaskSGIS, glTextureColorMaskSGIS, TEXTURECOLORMASKSGIS, (AND GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha), (red, green, blue, alpha), &red, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREFOGSGIX #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureFogSGIX, glTextureFogSGIX, TEXTUREFOGSGIX, (AND GLenum pname), (pname), &pname, GL_void_return) GL_PROCM(void, gl, TextureFogSGIX, glTextureFogSGIX, TEXTUREFOGSGIX, (AND GLenum pname), (pname), &pname, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureImage1DEXT, glTextureImage1DEXT, TEXTUREIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels), (texture, target, level, internalformat, width, border, format, type, pixels), &texture, GL_void_return) GL_PROCM(void, gl, TextureImage1DEXT, glTextureImage1DEXT, TEXTUREIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, memptr pixels), (texture, target, level, internalformat, width, border, format, type, pixels), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureImage2DEXT, glTextureImage2DEXT, TEXTUREIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels), (texture, target, level, internalformat, width, height, border, format, type, pixels), &texture, GL_void_return) GL_PROCM(void, gl, TextureImage2DEXT, glTextureImage2DEXT, TEXTUREIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, memptr pixels), (texture, target, level, internalformat, width, height, border, format, type, pixels), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREIMAGE2DMULTISAMPLECOVERAGENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureImage2DMultisampleCoverageNV, glTextureImage2DMultisampleCoverageNV, TEXTUREIMAGE2DMULTISAMPLECOVERAGENV, (AND GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations), (texture, target, coverageSamples, colorSamples, internalFormat, width, height, fixedSampleLocations), &texture, GL_void_return) GL_PROCM(void, gl, TextureImage2DMultisampleCoverageNV, glTextureImage2DMultisampleCoverageNV, TEXTUREIMAGE2DMULTISAMPLECOVERAGENV, (AND GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations), (texture, target, coverageSamples, colorSamples, internalFormat, width, height, fixedSampleLocations), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREIMAGE2DMULTISAMPLENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureImage2DMultisampleNV, glTextureImage2DMultisampleNV, TEXTUREIMAGE2DMULTISAMPLENV, (AND GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations), (texture, target, samples, internalFormat, width, height, fixedSampleLocations), &texture, GL_void_return) GL_PROCM(void, gl, TextureImage2DMultisampleNV, glTextureImage2DMultisampleNV, TEXTUREIMAGE2DMULTISAMPLENV, (AND GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations), (texture, target, samples, internalFormat, width, height, fixedSampleLocations), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREIMAGE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureImage3DEXT, glTextureImage3DEXT, TEXTUREIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels), (texture, target, level, internalformat, width, height, depth, border, format, type, pixels), &texture, GL_void_return) GL_PROCM(void, gl, TextureImage3DEXT, glTextureImage3DEXT, TEXTUREIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, memptr pixels), (texture, target, level, internalformat, width, height, depth, border, format, type, pixels), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREIMAGE3DMULTISAMPLECOVERAGENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureImage3DMultisampleCoverageNV, glTextureImage3DMultisampleCoverageNV, TEXTUREIMAGE3DMULTISAMPLECOVERAGENV, (AND GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations), (texture, target, coverageSamples, colorSamples, internalFormat, width, height, depth, fixedSampleLocations), &texture, GL_void_return) GL_PROCM(void, gl, TextureImage3DMultisampleCoverageNV, glTextureImage3DMultisampleCoverageNV, TEXTUREIMAGE3DMULTISAMPLECOVERAGENV, (AND GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations), (texture, target, coverageSamples, colorSamples, internalFormat, width, height, depth, fixedSampleLocations), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREIMAGE3DMULTISAMPLENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureImage3DMultisampleNV, glTextureImage3DMultisampleNV, TEXTUREIMAGE3DMULTISAMPLENV, (AND GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations), (texture, target, samples, internalFormat, width, height, depth, fixedSampleLocations), &texture, GL_void_return) GL_PROCM(void, gl, TextureImage3DMultisampleNV, glTextureImage3DMultisampleNV, TEXTUREIMAGE3DMULTISAMPLENV, (AND GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations), (texture, target, samples, internalFormat, width, height, depth, fixedSampleLocations), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURELIGHTEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureLightEXT, glTextureLightEXT, TEXTURELIGHTEXT, (AND GLenum pname), (pname), &pname, GL_void_return) GL_PROCM(void, gl, TextureLightEXT, glTextureLightEXT, TEXTURELIGHTEXT, (AND GLenum pname), (pname), &pname, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREMATERIALEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureMaterialEXT, glTextureMaterialEXT, TEXTUREMATERIALEXT, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) GL_PROCM(void, gl, TextureMaterialEXT, glTextureMaterialEXT, TEXTUREMATERIALEXT, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) #endif #endif #ifndef NO_GLTEXTURENORMALEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureNormalEXT, glTextureNormalEXT, TEXTURENORMALEXT, (AND GLenum mode), (mode), &mode, GL_void_return) GL_PROCM(void, gl, TextureNormalEXT, glTextureNormalEXT, TEXTURENORMALEXT, (AND GLenum mode), (mode), &mode, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREPAGECOMMITMENTEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TexturePageCommitmentEXT, glTexturePageCommitmentEXT, TEXTUREPAGECOMMITMENTEXT, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit), (texture, level, xoffset, yoffset, zoffset, width, height, depth, commit), &texture, GL_void_return) GL_PROCM(void, gl, TexturePageCommitmentEXT, glTexturePageCommitmentEXT, TEXTUREPAGECOMMITMENTEXT, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit), (texture, level, xoffset, yoffset, zoffset, width, height, depth, commit), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREPARAMETERIIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureParameterIiv, glTextureParameterIiv, TEXTUREPARAMETERIIV, (AND GLuint texture, GLenum pname, const GLint *params), (texture, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, TextureParameterIiv, glTextureParameterIiv, TEXTUREPARAMETERIIV, (AND GLuint texture, GLenum pname, memptr params), (texture, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREPARAMETERIIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureParameterIivEXT, glTextureParameterIivEXT, TEXTUREPARAMETERIIVEXT, (AND GLuint texture, GLenum target, GLenum pname, const GLint *params), (texture, target, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, TextureParameterIivEXT, glTextureParameterIivEXT, TEXTUREPARAMETERIIVEXT, (AND GLuint texture, GLenum target, GLenum pname, memptr params), (texture, target, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREPARAMETERIUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureParameterIuiv, glTextureParameterIuiv, TEXTUREPARAMETERIUIV, (AND GLuint texture, GLenum pname, const GLuint *params), (texture, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, TextureParameterIuiv, glTextureParameterIuiv, TEXTUREPARAMETERIUIV, (AND GLuint texture, GLenum pname, memptr params), (texture, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREPARAMETERIUIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureParameterIuivEXT, glTextureParameterIuivEXT, TEXTUREPARAMETERIUIVEXT, (AND GLuint texture, GLenum target, GLenum pname, const GLuint *params), (texture, target, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, TextureParameterIuivEXT, glTextureParameterIuivEXT, TEXTUREPARAMETERIUIVEXT, (AND GLuint texture, GLenum target, GLenum pname, memptr params), (texture, target, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREPARAMETERF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureParameterf, glTextureParameterf, TEXTUREPARAMETERF, (AND GLuint texture, GLenum pname, GLfloat param), (texture, pname, param), &texture, GL_void_return) GL_PROCM(void, gl, TextureParameterf, glTextureParameterf, TEXTUREPARAMETERF, (AND GLuint texture, GLenum pname, GLfloat param), (texture, pname, param), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREPARAMETERFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureParameterfEXT, glTextureParameterfEXT, TEXTUREPARAMETERFEXT, (AND GLuint texture, GLenum target, GLenum pname, GLfloat param), (texture, target, pname, param), &texture, GL_void_return) GL_PROCM(void, gl, TextureParameterfEXT, glTextureParameterfEXT, TEXTUREPARAMETERFEXT, (AND GLuint texture, GLenum target, GLenum pname, GLfloat param), (texture, target, pname, param), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREPARAMETERFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureParameterfv, glTextureParameterfv, TEXTUREPARAMETERFV, (AND GLuint texture, GLenum pname, const GLfloat *param), (texture, pname, param), &texture, GL_void_return) GL_PROCM(void, gl, TextureParameterfv, glTextureParameterfv, TEXTUREPARAMETERFV, (AND GLuint texture, GLenum pname, memptr param), (texture, pname, param), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREPARAMETERFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureParameterfvEXT, glTextureParameterfvEXT, TEXTUREPARAMETERFVEXT, (AND GLuint texture, GLenum target, GLenum pname, const GLfloat *params), (texture, target, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, TextureParameterfvEXT, glTextureParameterfvEXT, TEXTUREPARAMETERFVEXT, (AND GLuint texture, GLenum target, GLenum pname, memptr params), (texture, target, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREPARAMETERI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureParameteri, glTextureParameteri, TEXTUREPARAMETERI, (AND GLuint texture, GLenum pname, GLint param), (texture, pname, param), &texture, GL_void_return) GL_PROCM(void, gl, TextureParameteri, glTextureParameteri, TEXTUREPARAMETERI, (AND GLuint texture, GLenum pname, GLint param), (texture, pname, param), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREPARAMETERIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureParameteriEXT, glTextureParameteriEXT, TEXTUREPARAMETERIEXT, (AND GLuint texture, GLenum target, GLenum pname, GLint param), (texture, target, pname, param), &texture, GL_void_return) GL_PROCM(void, gl, TextureParameteriEXT, glTextureParameteriEXT, TEXTUREPARAMETERIEXT, (AND GLuint texture, GLenum target, GLenum pname, GLint param), (texture, target, pname, param), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREPARAMETERIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureParameteriv, glTextureParameteriv, TEXTUREPARAMETERIV, (AND GLuint texture, GLenum pname, const GLint *param), (texture, pname, param), &texture, GL_void_return) GL_PROCM(void, gl, TextureParameteriv, glTextureParameteriv, TEXTUREPARAMETERIV, (AND GLuint texture, GLenum pname, memptr param), (texture, pname, param), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREPARAMETERIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureParameterivEXT, glTextureParameterivEXT, TEXTUREPARAMETERIVEXT, (AND GLuint texture, GLenum target, GLenum pname, const GLint *params), (texture, target, pname, params), &texture, GL_void_return) GL_PROCM(void, gl, TextureParameterivEXT, glTextureParameterivEXT, TEXTUREPARAMETERIVEXT, (AND GLuint texture, GLenum target, GLenum pname, memptr params), (texture, target, pname, params), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURERANGEAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureRangeAPPLE, glTextureRangeAPPLE, TEXTURERANGEAPPLE, (AND GLenum target, GLsizei length, const void *pointer), (target, length, pointer), &target, GL_void_return) GL_PROCM(void, gl, TextureRangeAPPLE, glTextureRangeAPPLE, TEXTURERANGEAPPLE, (AND GLenum target, GLsizei length, memptr pointer), (target, length, pointer), &target, GL_void_return) #endif #endif #ifndef NO_GLTEXTURERENDERBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureRenderbufferEXT, glTextureRenderbufferEXT, TEXTURERENDERBUFFEREXT, (AND GLuint texture, GLenum target, GLuint renderbuffer), (texture, target, renderbuffer), &texture, GL_void_return) GL_PROCM(void, gl, TextureRenderbufferEXT, glTextureRenderbufferEXT, TEXTURERENDERBUFFEREXT, (AND GLuint texture, GLenum target, GLuint renderbuffer), (texture, target, renderbuffer), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGE1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorage1D, glTextureStorage1D, TEXTURESTORAGE1D, (AND GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width), (texture, levels, internalformat, width), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorage1D, glTextureStorage1D, TEXTURESTORAGE1D, (AND GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width), (texture, levels, internalformat, width), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorage1DEXT, glTextureStorage1DEXT, TEXTURESTORAGE1DEXT, (AND GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width), (texture, target, levels, internalformat, width), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorage1DEXT, glTextureStorage1DEXT, TEXTURESTORAGE1DEXT, (AND GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width), (texture, target, levels, internalformat, width), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGE2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorage2D, glTextureStorage2D, TEXTURESTORAGE2D, (AND GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height), (texture, levels, internalformat, width, height), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorage2D, glTextureStorage2D, TEXTURESTORAGE2D, (AND GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height), (texture, levels, internalformat, width, height), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorage2DEXT, glTextureStorage2DEXT, TEXTURESTORAGE2DEXT, (AND GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height), (texture, target, levels, internalformat, width, height), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorage2DEXT, glTextureStorage2DEXT, TEXTURESTORAGE2DEXT, (AND GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height), (texture, target, levels, internalformat, width, height), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGE2DMULTISAMPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorage2DMultisample, glTextureStorage2DMultisample, TEXTURESTORAGE2DMULTISAMPLE, (AND GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations), (texture, samples, internalformat, width, height, fixedsamplelocations), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorage2DMultisample, glTextureStorage2DMultisample, TEXTURESTORAGE2DMULTISAMPLE, (AND GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations), (texture, samples, internalformat, width, height, fixedsamplelocations), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGE2DMULTISAMPLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorage2DMultisampleEXT, glTextureStorage2DMultisampleEXT, TEXTURESTORAGE2DMULTISAMPLEEXT, (AND GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations), (texture, target, samples, internalformat, width, height, fixedsamplelocations), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorage2DMultisampleEXT, glTextureStorage2DMultisampleEXT, TEXTURESTORAGE2DMULTISAMPLEEXT, (AND GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations), (texture, target, samples, internalformat, width, height, fixedsamplelocations), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGE3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorage3D, glTextureStorage3D, TEXTURESTORAGE3D, (AND GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth), (texture, levels, internalformat, width, height, depth), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorage3D, glTextureStorage3D, TEXTURESTORAGE3D, (AND GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth), (texture, levels, internalformat, width, height, depth), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorage3DEXT, glTextureStorage3DEXT, TEXTURESTORAGE3DEXT, (AND GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth), (texture, target, levels, internalformat, width, height, depth), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorage3DEXT, glTextureStorage3DEXT, TEXTURESTORAGE3DEXT, (AND GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth), (texture, target, levels, internalformat, width, height, depth), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGE3DMULTISAMPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorage3DMultisample, glTextureStorage3DMultisample, TEXTURESTORAGE3DMULTISAMPLE, (AND GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations), (texture, samples, internalformat, width, height, depth, fixedsamplelocations), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorage3DMultisample, glTextureStorage3DMultisample, TEXTURESTORAGE3DMULTISAMPLE, (AND GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations), (texture, samples, internalformat, width, height, depth, fixedsamplelocations), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGE3DMULTISAMPLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorage3DMultisampleEXT, glTextureStorage3DMultisampleEXT, TEXTURESTORAGE3DMULTISAMPLEEXT, (AND GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations), (texture, target, samples, internalformat, width, height, depth, fixedsamplelocations), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorage3DMultisampleEXT, glTextureStorage3DMultisampleEXT, TEXTURESTORAGE3DMULTISAMPLEEXT, (AND GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations), (texture, target, samples, internalformat, width, height, depth, fixedsamplelocations), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGEMEM1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorageMem1DEXT, glTextureStorageMem1DEXT, TEXTURESTORAGEMEM1DEXT, (AND GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset), (texture, levels, internalFormat, width, memory, offset), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorageMem1DEXT, glTextureStorageMem1DEXT, TEXTURESTORAGEMEM1DEXT, (AND GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset), (texture, levels, internalFormat, width, memory, offset), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGEMEM2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorageMem2DEXT, glTextureStorageMem2DEXT, TEXTURESTORAGEMEM2DEXT, (AND GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset), (texture, levels, internalFormat, width, height, memory, offset), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorageMem2DEXT, glTextureStorageMem2DEXT, TEXTURESTORAGEMEM2DEXT, (AND GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset), (texture, levels, internalFormat, width, height, memory, offset), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGEMEM2DMULTISAMPLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorageMem2DMultisampleEXT, glTextureStorageMem2DMultisampleEXT, TEXTURESTORAGEMEM2DMULTISAMPLEEXT, (AND GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset), (texture, samples, internalFormat, width, height, fixedSampleLocations, memory, offset), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorageMem2DMultisampleEXT, glTextureStorageMem2DMultisampleEXT, TEXTURESTORAGEMEM2DMULTISAMPLEEXT, (AND GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset), (texture, samples, internalFormat, width, height, fixedSampleLocations, memory, offset), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGEMEM3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorageMem3DEXT, glTextureStorageMem3DEXT, TEXTURESTORAGEMEM3DEXT, (AND GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset), (texture, levels, internalFormat, width, height, depth, memory, offset), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorageMem3DEXT, glTextureStorageMem3DEXT, TEXTURESTORAGEMEM3DEXT, (AND GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset), (texture, levels, internalFormat, width, height, depth, memory, offset), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGEMEM3DMULTISAMPLEEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorageMem3DMultisampleEXT, glTextureStorageMem3DMultisampleEXT, TEXTURESTORAGEMEM3DMULTISAMPLEEXT, (AND GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset), (texture, samples, internalFormat, width, height, depth, fixedSampleLocations, memory, offset), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorageMem3DMultisampleEXT, glTextureStorageMem3DMultisampleEXT, TEXTURESTORAGEMEM3DMULTISAMPLEEXT, (AND GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset), (texture, samples, internalFormat, width, height, depth, fixedSampleLocations, memory, offset), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESTORAGESPARSEAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureStorageSparseAMD, glTextureStorageSparseAMD, TEXTURESTORAGESPARSEAMD, (AND GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags), (texture, target, internalFormat, width, height, depth, layers, flags), &texture, GL_void_return) GL_PROCM(void, gl, TextureStorageSparseAMD, glTextureStorageSparseAMD, TEXTURESTORAGESPARSEAMD, (AND GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags), (texture, target, internalFormat, width, height, depth, layers, flags), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESUBIMAGE1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureSubImage1D, glTextureSubImage1D, TEXTURESUBIMAGE1D, (AND GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels), (texture, level, xoffset, width, format, type, pixels), &texture, GL_void_return) GL_PROCM(void, gl, TextureSubImage1D, glTextureSubImage1D, TEXTURESUBIMAGE1D, (AND GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, memptr pixels), (texture, level, xoffset, width, format, type, pixels), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESUBIMAGE1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureSubImage1DEXT, glTextureSubImage1DEXT, TEXTURESUBIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels), (texture, target, level, xoffset, width, format, type, pixels), &texture, GL_void_return) GL_PROCM(void, gl, TextureSubImage1DEXT, glTextureSubImage1DEXT, TEXTURESUBIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, memptr pixels), (texture, target, level, xoffset, width, format, type, pixels), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESUBIMAGE2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureSubImage2D, glTextureSubImage2D, TEXTURESUBIMAGE2D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels), (texture, level, xoffset, yoffset, width, height, format, type, pixels), &texture, GL_void_return) GL_PROCM(void, gl, TextureSubImage2D, glTextureSubImage2D, TEXTURESUBIMAGE2D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr pixels), (texture, level, xoffset, yoffset, width, height, format, type, pixels), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESUBIMAGE2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureSubImage2DEXT, glTextureSubImage2DEXT, TEXTURESUBIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels), (texture, target, level, xoffset, yoffset, width, height, format, type, pixels), &texture, GL_void_return) GL_PROCM(void, gl, TextureSubImage2DEXT, glTextureSubImage2DEXT, TEXTURESUBIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, memptr pixels), (texture, target, level, xoffset, yoffset, width, height, format, type, pixels), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESUBIMAGE3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureSubImage3D, glTextureSubImage3D, TEXTURESUBIMAGE3D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels), (texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &texture, GL_void_return) GL_PROCM(void, gl, TextureSubImage3D, glTextureSubImage3D, TEXTURESUBIMAGE3D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, memptr pixels), (texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTURESUBIMAGE3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureSubImage3DEXT, glTextureSubImage3DEXT, TEXTURESUBIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels), (texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &texture, GL_void_return) GL_PROCM(void, gl, TextureSubImage3DEXT, glTextureSubImage3DEXT, TEXTURESUBIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, memptr pixels), (texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &texture, GL_void_return) #endif #endif #ifndef NO_GLTEXTUREVIEW #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TextureView, glTextureView, TEXTUREVIEW, (AND GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers), (texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers), &texture, GL_void_return) GL_PROCM(void, gl, TextureView, glTextureView, TEXTUREVIEW, (AND GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers), (texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers), &texture, GL_void_return) #endif #endif #ifndef NO_GLTRACEASSERTATTRIBMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TraceAssertAttribMESA, glTraceAssertAttribMESA, TRACEASSERTATTRIBMESA, (AND GLbitfield attribMask), (attribMask), &attribMask, GL_void_return) GL_PROCM(void, gl, TraceAssertAttribMESA, glTraceAssertAttribMESA, TRACEASSERTATTRIBMESA, (AND GLbitfield attribMask), (attribMask), &attribMask, GL_void_return) #endif #endif #ifndef NO_GLTRACECOMMENTMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TraceCommentMESA, glTraceCommentMESA, TRACECOMMENTMESA, (AND const GLubyte *comment), (comment), &comment, GL_void_return) GL_PROCM(void, gl, TraceCommentMESA, glTraceCommentMESA, TRACECOMMENTMESA, (AND memptr comment), (comment), &comment, GL_void_return) #endif #endif #ifndef NO_GLTRACELISTMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TraceListMESA, glTraceListMESA, TRACELISTMESA, (AND GLuint name, const GLubyte *comment), (name, comment), &name, GL_void_return) GL_PROCM(void, gl, TraceListMESA, glTraceListMESA, TRACELISTMESA, (AND GLuint name, memptr comment), (name, comment), &name, GL_void_return) #endif #endif #ifndef NO_GLTRACEPOINTERMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TracePointerMESA, glTracePointerMESA, TRACEPOINTERMESA, (AND GLvoid *pointer, const GLubyte *comment), (pointer, comment), &pointer, GL_void_return) GL_PROCM(void, gl, TracePointerMESA, glTracePointerMESA, TRACEPOINTERMESA, (AND memptr pointer, memptr comment), (pointer, comment), &pointer, GL_void_return) #endif #endif #ifndef NO_GLTRACEPOINTERRANGEMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TracePointerRangeMESA, glTracePointerRangeMESA, TRACEPOINTERRANGEMESA, (AND const GLvoid *first, const GLvoid *last, const GLubyte *comment), (first, last, comment), &first, GL_void_return) GL_PROCM(void, gl, TracePointerRangeMESA, glTracePointerRangeMESA, TRACEPOINTERRANGEMESA, (AND memptr first, memptr last, memptr comment), (first, last, comment), &first, GL_void_return) #endif #endif #ifndef NO_GLTRACETEXTUREMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TraceTextureMESA, glTraceTextureMESA, TRACETEXTUREMESA, (AND GLuint name, const GLubyte *comment), (name, comment), &name, GL_void_return) GL_PROCM(void, gl, TraceTextureMESA, glTraceTextureMESA, TRACETEXTUREMESA, (AND GLuint name, memptr comment), (name, comment), &name, GL_void_return) #endif #endif #ifndef NO_GLTRACKMATRIXNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TrackMatrixNV, glTrackMatrixNV, TRACKMATRIXNV, (AND GLenum target, GLuint address, GLenum matrix, GLenum transform), (target, address, matrix, transform), &target, GL_void_return) GL_PROCM(void, gl, TrackMatrixNV, glTrackMatrixNV, TRACKMATRIXNV, (AND GLenum target, GLuint address, GLenum matrix, GLenum transform), (target, address, matrix, transform), &target, GL_void_return) #endif #endif #ifndef NO_GLTRANSFORMFEEDBACKATTRIBSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TransformFeedbackAttribsNV, glTransformFeedbackAttribsNV, TRANSFORMFEEDBACKATTRIBSNV, (AND GLsizei count, const GLint *attribs, GLenum bufferMode), (count, attribs, bufferMode), &count, GL_void_return) GL_PROCM(void, gl, TransformFeedbackAttribsNV, glTransformFeedbackAttribsNV, TRANSFORMFEEDBACKATTRIBSNV, (AND GLsizei count, memptr attribs, GLenum bufferMode), (count, attribs, bufferMode), &count, GL_void_return) #endif #endif #ifndef NO_GLTRANSFORMFEEDBACKBUFFERBASE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TransformFeedbackBufferBase, glTransformFeedbackBufferBase, TRANSFORMFEEDBACKBUFFERBASE, (AND GLuint xfb, GLuint index, GLuint buffer), (xfb, index, buffer), &xfb, GL_void_return) GL_PROCM(void, gl, TransformFeedbackBufferBase, glTransformFeedbackBufferBase, TRANSFORMFEEDBACKBUFFERBASE, (AND GLuint xfb, GLuint index, GLuint buffer), (xfb, index, buffer), &xfb, GL_void_return) #endif #endif #ifndef NO_GLTRANSFORMFEEDBACKBUFFERRANGE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TransformFeedbackBufferRange, glTransformFeedbackBufferRange, TRANSFORMFEEDBACKBUFFERRANGE, (AND GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size), (xfb, index, buffer, offset, size), &xfb, GL_void_return) GL_PROCM(void, gl, TransformFeedbackBufferRange, glTransformFeedbackBufferRange, TRANSFORMFEEDBACKBUFFERRANGE, (AND GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size), (xfb, index, buffer, offset, size), &xfb, GL_void_return) #endif #endif #ifndef NO_GLTRANSFORMFEEDBACKSTREAMATTRIBSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TransformFeedbackStreamAttribsNV, glTransformFeedbackStreamAttribsNV, TRANSFORMFEEDBACKSTREAMATTRIBSNV, (AND GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode), (count, attribs, nbuffers, bufstreams, bufferMode), &count, GL_void_return) GL_PROCM(void, gl, TransformFeedbackStreamAttribsNV, glTransformFeedbackStreamAttribsNV, TRANSFORMFEEDBACKSTREAMATTRIBSNV, (AND GLsizei count, memptr attribs, GLsizei nbuffers, memptr bufstreams, GLenum bufferMode), (count, attribs, nbuffers, bufstreams, bufferMode), &count, GL_void_return) #endif #endif #ifndef NO_GLTRANSFORMFEEDBACKVARYINGS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TransformFeedbackVaryings, glTransformFeedbackVaryings, TRANSFORMFEEDBACKVARYINGS, (AND GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode), (program, count, varyings, bufferMode), &program, GL_void_return) GL_PROCM(void, gl, TransformFeedbackVaryings, glTransformFeedbackVaryings, TRANSFORMFEEDBACKVARYINGS, (AND GLuint program, GLsizei count, memptr varyings, GLenum bufferMode), (program, count, varyings, bufferMode), &program, GL_void_return) #endif #endif #ifndef NO_GLTRANSFORMFEEDBACKVARYINGSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, TRANSFORMFEEDBACKVARYINGSEXT, (AND GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode), (program, count, varyings, bufferMode), &program, GL_void_return) GL_PROCM(void, gl, TransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, TRANSFORMFEEDBACKVARYINGSEXT, (AND GLuint program, GLsizei count, memptr varyings, GLenum bufferMode), (program, count, varyings, bufferMode), &program, GL_void_return) #endif #endif #ifndef NO_GLTRANSFORMFEEDBACKVARYINGSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TransformFeedbackVaryingsNV, glTransformFeedbackVaryingsNV, TRANSFORMFEEDBACKVARYINGSNV, (AND GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode), (program, count, locations, bufferMode), &program, GL_void_return) GL_PROCM(void, gl, TransformFeedbackVaryingsNV, glTransformFeedbackVaryingsNV, TRANSFORMFEEDBACKVARYINGSNV, (AND GLuint program, GLsizei count, memptr locations, GLenum bufferMode), (program, count, locations, bufferMode), &program, GL_void_return) #endif #endif #ifndef NO_GLTRANSFORMPATHNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TransformPathNV, glTransformPathNV, TRANSFORMPATHNV, (AND GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues), (resultPath, srcPath, transformType, transformValues), &resultPath, GL_void_return) GL_PROCM(void, gl, TransformPathNV, glTransformPathNV, TRANSFORMPATHNV, (AND GLuint resultPath, GLuint srcPath, GLenum transformType, memptr transformValues), (resultPath, srcPath, transformType, transformValues), &resultPath, GL_void_return) #endif #endif #ifndef NO_GLTRANSLATED #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Translated, glTranslated, TRANSLATED, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, Translated, glTranslated, TRANSLATED, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLTRANSLATEF GL_PROC(void, gl, Translatef, glTranslatef, TRANSLATEF, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, Translatef, glTranslatef, TRANSLATEF, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) #endif #ifndef NO_GLTRANSLATEXOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, TranslatexOES, glTranslatexOES, TRANSLATEXOES, (AND GLfixed x, GLfixed y, GLfixed z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, TranslatexOES, glTranslatexOES, TRANSLATEXOES, (AND GLfixed x, GLfixed y, GLfixed z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1d, glUniform1d, UNIFORM1D, (AND GLint location, GLdouble x), (location, x), &location, GL_void_return) GL_PROCM(void, gl, Uniform1d, glUniform1d, UNIFORM1D, (AND GLint location, GLdouble x), (location, x), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1dv, glUniform1dv, UNIFORM1DV, (AND GLint location, GLsizei count, const GLdouble *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform1dv, glUniform1dv, UNIFORM1DV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1f, glUniform1f, UNIFORM1F, (AND GLint location, GLfloat v0), (location, v0), &location, GL_void_return) GL_PROCM(void, gl, Uniform1f, glUniform1f, UNIFORM1F, (AND GLint location, GLfloat v0), (location, v0), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1fARB, glUniform1fARB, UNIFORM1FARB, (AND GLint location, GLfloat v0), (location, v0), &location, GL_void_return) GL_PROCM(void, gl, Uniform1fARB, glUniform1fARB, UNIFORM1FARB, (AND GLint location, GLfloat v0), (location, v0), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1fv, glUniform1fv, UNIFORM1FV, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform1fv, glUniform1fv, UNIFORM1FV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1fvARB, glUniform1fvARB, UNIFORM1FVARB, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform1fvARB, glUniform1fvARB, UNIFORM1FVARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1i, glUniform1i, UNIFORM1I, (AND GLint location, GLint v0), (location, v0), &location, GL_void_return) GL_PROCM(void, gl, Uniform1i, glUniform1i, UNIFORM1I, (AND GLint location, GLint v0), (location, v0), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1I64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1i64ARB, glUniform1i64ARB, UNIFORM1I64ARB, (AND GLint location, GLint64 x), (location, x), &location, GL_void_return) GL_PROCM(void, gl, Uniform1i64ARB, glUniform1i64ARB, UNIFORM1I64ARB, (AND GLint location, GLint64 x), (location, x), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1I64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1i64NV, glUniform1i64NV, UNIFORM1I64NV, (AND GLint location, GLint64EXT x), (location, x), &location, GL_void_return) GL_PROCM(void, gl, Uniform1i64NV, glUniform1i64NV, UNIFORM1I64NV, (AND GLint location, GLint64EXT x), (location, x), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1I64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1i64vARB, glUniform1i64vARB, UNIFORM1I64VARB, (AND GLint location, GLsizei count, const GLint64 *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform1i64vARB, glUniform1i64vARB, UNIFORM1I64VARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1I64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1i64vNV, glUniform1i64vNV, UNIFORM1I64VNV, (AND GLint location, GLsizei count, const GLint64EXT *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform1i64vNV, glUniform1i64vNV, UNIFORM1I64VNV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1IARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1iARB, glUniform1iARB, UNIFORM1IARB, (AND GLint location, GLint v0), (location, v0), &location, GL_void_return) GL_PROCM(void, gl, Uniform1iARB, glUniform1iARB, UNIFORM1IARB, (AND GLint location, GLint v0), (location, v0), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1iv, glUniform1iv, UNIFORM1IV, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform1iv, glUniform1iv, UNIFORM1IV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1IVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1ivARB, glUniform1ivARB, UNIFORM1IVARB, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform1ivARB, glUniform1ivARB, UNIFORM1IVARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1ui, glUniform1ui, UNIFORM1UI, (AND GLint location, GLuint v0), (location, v0), &location, GL_void_return) GL_PROCM(void, gl, Uniform1ui, glUniform1ui, UNIFORM1UI, (AND GLint location, GLuint v0), (location, v0), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1UI64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1ui64ARB, glUniform1ui64ARB, UNIFORM1UI64ARB, (AND GLint location, GLuint64 x), (location, x), &location, GL_void_return) GL_PROCM(void, gl, Uniform1ui64ARB, glUniform1ui64ARB, UNIFORM1UI64ARB, (AND GLint location, GLuint64 x), (location, x), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1UI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1ui64NV, glUniform1ui64NV, UNIFORM1UI64NV, (AND GLint location, GLuint64EXT x), (location, x), &location, GL_void_return) GL_PROCM(void, gl, Uniform1ui64NV, glUniform1ui64NV, UNIFORM1UI64NV, (AND GLint location, GLuint64EXT x), (location, x), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1UI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1ui64vARB, glUniform1ui64vARB, UNIFORM1UI64VARB, (AND GLint location, GLsizei count, const GLuint64 *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform1ui64vARB, glUniform1ui64vARB, UNIFORM1UI64VARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1UI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1ui64vNV, glUniform1ui64vNV, UNIFORM1UI64VNV, (AND GLint location, GLsizei count, const GLuint64EXT *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform1ui64vNV, glUniform1ui64vNV, UNIFORM1UI64VNV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1UIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1uiEXT, glUniform1uiEXT, UNIFORM1UIEXT, (AND GLint location, GLuint v0), (location, v0), &location, GL_void_return) GL_PROCM(void, gl, Uniform1uiEXT, glUniform1uiEXT, UNIFORM1UIEXT, (AND GLint location, GLuint v0), (location, v0), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1uiv, glUniform1uiv, UNIFORM1UIV, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform1uiv, glUniform1uiv, UNIFORM1UIV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM1UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform1uivEXT, glUniform1uivEXT, UNIFORM1UIVEXT, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform1uivEXT, glUniform1uivEXT, UNIFORM1UIVEXT, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2d, glUniform2d, UNIFORM2D, (AND GLint location, GLdouble x, GLdouble y), (location, x, y), &location, GL_void_return) GL_PROCM(void, gl, Uniform2d, glUniform2d, UNIFORM2D, (AND GLint location, GLdouble x, GLdouble y), (location, x, y), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2dv, glUniform2dv, UNIFORM2DV, (AND GLint location, GLsizei count, const GLdouble *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform2dv, glUniform2dv, UNIFORM2DV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2f, glUniform2f, UNIFORM2F, (AND GLint location, GLfloat v0, GLfloat v1), (location, v0, v1), &location, GL_void_return) GL_PROCM(void, gl, Uniform2f, glUniform2f, UNIFORM2F, (AND GLint location, GLfloat v0, GLfloat v1), (location, v0, v1), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2fARB, glUniform2fARB, UNIFORM2FARB, (AND GLint location, GLfloat v0, GLfloat v1), (location, v0, v1), &location, GL_void_return) GL_PROCM(void, gl, Uniform2fARB, glUniform2fARB, UNIFORM2FARB, (AND GLint location, GLfloat v0, GLfloat v1), (location, v0, v1), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2fv, glUniform2fv, UNIFORM2FV, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform2fv, glUniform2fv, UNIFORM2FV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2fvARB, glUniform2fvARB, UNIFORM2FVARB, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform2fvARB, glUniform2fvARB, UNIFORM2FVARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2i, glUniform2i, UNIFORM2I, (AND GLint location, GLint v0, GLint v1), (location, v0, v1), &location, GL_void_return) GL_PROCM(void, gl, Uniform2i, glUniform2i, UNIFORM2I, (AND GLint location, GLint v0, GLint v1), (location, v0, v1), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2I64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2i64ARB, glUniform2i64ARB, UNIFORM2I64ARB, (AND GLint location, GLint64 x, GLint64 y), (location, x, y), &location, GL_void_return) GL_PROCM(void, gl, Uniform2i64ARB, glUniform2i64ARB, UNIFORM2I64ARB, (AND GLint location, GLint64 x, GLint64 y), (location, x, y), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2I64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2i64NV, glUniform2i64NV, UNIFORM2I64NV, (AND GLint location, GLint64EXT x, GLint64EXT y), (location, x, y), &location, GL_void_return) GL_PROCM(void, gl, Uniform2i64NV, glUniform2i64NV, UNIFORM2I64NV, (AND GLint location, GLint64EXT x, GLint64EXT y), (location, x, y), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2I64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2i64vARB, glUniform2i64vARB, UNIFORM2I64VARB, (AND GLint location, GLsizei count, const GLint64 *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform2i64vARB, glUniform2i64vARB, UNIFORM2I64VARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2I64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2i64vNV, glUniform2i64vNV, UNIFORM2I64VNV, (AND GLint location, GLsizei count, const GLint64EXT *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform2i64vNV, glUniform2i64vNV, UNIFORM2I64VNV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2IARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2iARB, glUniform2iARB, UNIFORM2IARB, (AND GLint location, GLint v0, GLint v1), (location, v0, v1), &location, GL_void_return) GL_PROCM(void, gl, Uniform2iARB, glUniform2iARB, UNIFORM2IARB, (AND GLint location, GLint v0, GLint v1), (location, v0, v1), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2iv, glUniform2iv, UNIFORM2IV, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform2iv, glUniform2iv, UNIFORM2IV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2IVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2ivARB, glUniform2ivARB, UNIFORM2IVARB, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform2ivARB, glUniform2ivARB, UNIFORM2IVARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2ui, glUniform2ui, UNIFORM2UI, (AND GLint location, GLuint v0, GLuint v1), (location, v0, v1), &location, GL_void_return) GL_PROCM(void, gl, Uniform2ui, glUniform2ui, UNIFORM2UI, (AND GLint location, GLuint v0, GLuint v1), (location, v0, v1), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2UI64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2ui64ARB, glUniform2ui64ARB, UNIFORM2UI64ARB, (AND GLint location, GLuint64 x, GLuint64 y), (location, x, y), &location, GL_void_return) GL_PROCM(void, gl, Uniform2ui64ARB, glUniform2ui64ARB, UNIFORM2UI64ARB, (AND GLint location, GLuint64 x, GLuint64 y), (location, x, y), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2UI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2ui64NV, glUniform2ui64NV, UNIFORM2UI64NV, (AND GLint location, GLuint64EXT x, GLuint64EXT y), (location, x, y), &location, GL_void_return) GL_PROCM(void, gl, Uniform2ui64NV, glUniform2ui64NV, UNIFORM2UI64NV, (AND GLint location, GLuint64EXT x, GLuint64EXT y), (location, x, y), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2UI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2ui64vARB, glUniform2ui64vARB, UNIFORM2UI64VARB, (AND GLint location, GLsizei count, const GLuint64 *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform2ui64vARB, glUniform2ui64vARB, UNIFORM2UI64VARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2UI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2ui64vNV, glUniform2ui64vNV, UNIFORM2UI64VNV, (AND GLint location, GLsizei count, const GLuint64EXT *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform2ui64vNV, glUniform2ui64vNV, UNIFORM2UI64VNV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2UIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2uiEXT, glUniform2uiEXT, UNIFORM2UIEXT, (AND GLint location, GLuint v0, GLuint v1), (location, v0, v1), &location, GL_void_return) GL_PROCM(void, gl, Uniform2uiEXT, glUniform2uiEXT, UNIFORM2UIEXT, (AND GLint location, GLuint v0, GLuint v1), (location, v0, v1), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2uiv, glUniform2uiv, UNIFORM2UIV, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform2uiv, glUniform2uiv, UNIFORM2UIV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM2UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform2uivEXT, glUniform2uivEXT, UNIFORM2UIVEXT, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform2uivEXT, glUniform2uivEXT, UNIFORM2UIVEXT, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3d, glUniform3d, UNIFORM3D, (AND GLint location, GLdouble x, GLdouble y, GLdouble z), (location, x, y, z), &location, GL_void_return) GL_PROCM(void, gl, Uniform3d, glUniform3d, UNIFORM3D, (AND GLint location, GLdouble x, GLdouble y, GLdouble z), (location, x, y, z), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3dv, glUniform3dv, UNIFORM3DV, (AND GLint location, GLsizei count, const GLdouble *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform3dv, glUniform3dv, UNIFORM3DV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3f, glUniform3f, UNIFORM3F, (AND GLint location, GLfloat v0, GLfloat v1, GLfloat v2), (location, v0, v1, v2), &location, GL_void_return) GL_PROCM(void, gl, Uniform3f, glUniform3f, UNIFORM3F, (AND GLint location, GLfloat v0, GLfloat v1, GLfloat v2), (location, v0, v1, v2), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3fARB, glUniform3fARB, UNIFORM3FARB, (AND GLint location, GLfloat v0, GLfloat v1, GLfloat v2), (location, v0, v1, v2), &location, GL_void_return) GL_PROCM(void, gl, Uniform3fARB, glUniform3fARB, UNIFORM3FARB, (AND GLint location, GLfloat v0, GLfloat v1, GLfloat v2), (location, v0, v1, v2), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3fv, glUniform3fv, UNIFORM3FV, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform3fv, glUniform3fv, UNIFORM3FV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3fvARB, glUniform3fvARB, UNIFORM3FVARB, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform3fvARB, glUniform3fvARB, UNIFORM3FVARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3i, glUniform3i, UNIFORM3I, (AND GLint location, GLint v0, GLint v1, GLint v2), (location, v0, v1, v2), &location, GL_void_return) GL_PROCM(void, gl, Uniform3i, glUniform3i, UNIFORM3I, (AND GLint location, GLint v0, GLint v1, GLint v2), (location, v0, v1, v2), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3I64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3i64ARB, glUniform3i64ARB, UNIFORM3I64ARB, (AND GLint location, GLint64 x, GLint64 y, GLint64 z), (location, x, y, z), &location, GL_void_return) GL_PROCM(void, gl, Uniform3i64ARB, glUniform3i64ARB, UNIFORM3I64ARB, (AND GLint location, GLint64 x, GLint64 y, GLint64 z), (location, x, y, z), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3I64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3i64NV, glUniform3i64NV, UNIFORM3I64NV, (AND GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z), (location, x, y, z), &location, GL_void_return) GL_PROCM(void, gl, Uniform3i64NV, glUniform3i64NV, UNIFORM3I64NV, (AND GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z), (location, x, y, z), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3I64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3i64vARB, glUniform3i64vARB, UNIFORM3I64VARB, (AND GLint location, GLsizei count, const GLint64 *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform3i64vARB, glUniform3i64vARB, UNIFORM3I64VARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3I64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3i64vNV, glUniform3i64vNV, UNIFORM3I64VNV, (AND GLint location, GLsizei count, const GLint64EXT *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform3i64vNV, glUniform3i64vNV, UNIFORM3I64VNV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3IARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3iARB, glUniform3iARB, UNIFORM3IARB, (AND GLint location, GLint v0, GLint v1, GLint v2), (location, v0, v1, v2), &location, GL_void_return) GL_PROCM(void, gl, Uniform3iARB, glUniform3iARB, UNIFORM3IARB, (AND GLint location, GLint v0, GLint v1, GLint v2), (location, v0, v1, v2), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3iv, glUniform3iv, UNIFORM3IV, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform3iv, glUniform3iv, UNIFORM3IV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3IVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3ivARB, glUniform3ivARB, UNIFORM3IVARB, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform3ivARB, glUniform3ivARB, UNIFORM3IVARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3ui, glUniform3ui, UNIFORM3UI, (AND GLint location, GLuint v0, GLuint v1, GLuint v2), (location, v0, v1, v2), &location, GL_void_return) GL_PROCM(void, gl, Uniform3ui, glUniform3ui, UNIFORM3UI, (AND GLint location, GLuint v0, GLuint v1, GLuint v2), (location, v0, v1, v2), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3UI64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3ui64ARB, glUniform3ui64ARB, UNIFORM3UI64ARB, (AND GLint location, GLuint64 x, GLuint64 y, GLuint64 z), (location, x, y, z), &location, GL_void_return) GL_PROCM(void, gl, Uniform3ui64ARB, glUniform3ui64ARB, UNIFORM3UI64ARB, (AND GLint location, GLuint64 x, GLuint64 y, GLuint64 z), (location, x, y, z), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3UI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3ui64NV, glUniform3ui64NV, UNIFORM3UI64NV, (AND GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z), (location, x, y, z), &location, GL_void_return) GL_PROCM(void, gl, Uniform3ui64NV, glUniform3ui64NV, UNIFORM3UI64NV, (AND GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z), (location, x, y, z), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3UI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3ui64vARB, glUniform3ui64vARB, UNIFORM3UI64VARB, (AND GLint location, GLsizei count, const GLuint64 *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform3ui64vARB, glUniform3ui64vARB, UNIFORM3UI64VARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3UI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3ui64vNV, glUniform3ui64vNV, UNIFORM3UI64VNV, (AND GLint location, GLsizei count, const GLuint64EXT *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform3ui64vNV, glUniform3ui64vNV, UNIFORM3UI64VNV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3UIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3uiEXT, glUniform3uiEXT, UNIFORM3UIEXT, (AND GLint location, GLuint v0, GLuint v1, GLuint v2), (location, v0, v1, v2), &location, GL_void_return) GL_PROCM(void, gl, Uniform3uiEXT, glUniform3uiEXT, UNIFORM3UIEXT, (AND GLint location, GLuint v0, GLuint v1, GLuint v2), (location, v0, v1, v2), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3uiv, glUniform3uiv, UNIFORM3UIV, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform3uiv, glUniform3uiv, UNIFORM3UIV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM3UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform3uivEXT, glUniform3uivEXT, UNIFORM3UIVEXT, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform3uivEXT, glUniform3uivEXT, UNIFORM3UIVEXT, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4d, glUniform4d, UNIFORM4D, (AND GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (location, x, y, z, w), &location, GL_void_return) GL_PROCM(void, gl, Uniform4d, glUniform4d, UNIFORM4D, (AND GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (location, x, y, z, w), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4dv, glUniform4dv, UNIFORM4DV, (AND GLint location, GLsizei count, const GLdouble *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform4dv, glUniform4dv, UNIFORM4DV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4f, glUniform4f, UNIFORM4F, (AND GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3), (location, v0, v1, v2, v3), &location, GL_void_return) GL_PROCM(void, gl, Uniform4f, glUniform4f, UNIFORM4F, (AND GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3), (location, v0, v1, v2, v3), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4fARB, glUniform4fARB, UNIFORM4FARB, (AND GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3), (location, v0, v1, v2, v3), &location, GL_void_return) GL_PROCM(void, gl, Uniform4fARB, glUniform4fARB, UNIFORM4FARB, (AND GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3), (location, v0, v1, v2, v3), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4fv, glUniform4fv, UNIFORM4FV, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform4fv, glUniform4fv, UNIFORM4FV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4fvARB, glUniform4fvARB, UNIFORM4FVARB, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform4fvARB, glUniform4fvARB, UNIFORM4FVARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4i, glUniform4i, UNIFORM4I, (AND GLint location, GLint v0, GLint v1, GLint v2, GLint v3), (location, v0, v1, v2, v3), &location, GL_void_return) GL_PROCM(void, gl, Uniform4i, glUniform4i, UNIFORM4I, (AND GLint location, GLint v0, GLint v1, GLint v2, GLint v3), (location, v0, v1, v2, v3), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4I64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4i64ARB, glUniform4i64ARB, UNIFORM4I64ARB, (AND GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w), (location, x, y, z, w), &location, GL_void_return) GL_PROCM(void, gl, Uniform4i64ARB, glUniform4i64ARB, UNIFORM4I64ARB, (AND GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w), (location, x, y, z, w), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4I64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4i64NV, glUniform4i64NV, UNIFORM4I64NV, (AND GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w), (location, x, y, z, w), &location, GL_void_return) GL_PROCM(void, gl, Uniform4i64NV, glUniform4i64NV, UNIFORM4I64NV, (AND GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w), (location, x, y, z, w), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4I64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4i64vARB, glUniform4i64vARB, UNIFORM4I64VARB, (AND GLint location, GLsizei count, const GLint64 *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform4i64vARB, glUniform4i64vARB, UNIFORM4I64VARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4I64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4i64vNV, glUniform4i64vNV, UNIFORM4I64VNV, (AND GLint location, GLsizei count, const GLint64EXT *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform4i64vNV, glUniform4i64vNV, UNIFORM4I64VNV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4IARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4iARB, glUniform4iARB, UNIFORM4IARB, (AND GLint location, GLint v0, GLint v1, GLint v2, GLint v3), (location, v0, v1, v2, v3), &location, GL_void_return) GL_PROCM(void, gl, Uniform4iARB, glUniform4iARB, UNIFORM4IARB, (AND GLint location, GLint v0, GLint v1, GLint v2, GLint v3), (location, v0, v1, v2, v3), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4iv, glUniform4iv, UNIFORM4IV, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform4iv, glUniform4iv, UNIFORM4IV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4IVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4ivARB, glUniform4ivARB, UNIFORM4IVARB, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform4ivARB, glUniform4ivARB, UNIFORM4IVARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4ui, glUniform4ui, UNIFORM4UI, (AND GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3), (location, v0, v1, v2, v3), &location, GL_void_return) GL_PROCM(void, gl, Uniform4ui, glUniform4ui, UNIFORM4UI, (AND GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3), (location, v0, v1, v2, v3), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4UI64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4ui64ARB, glUniform4ui64ARB, UNIFORM4UI64ARB, (AND GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w), (location, x, y, z, w), &location, GL_void_return) GL_PROCM(void, gl, Uniform4ui64ARB, glUniform4ui64ARB, UNIFORM4UI64ARB, (AND GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w), (location, x, y, z, w), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4UI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4ui64NV, glUniform4ui64NV, UNIFORM4UI64NV, (AND GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w), (location, x, y, z, w), &location, GL_void_return) GL_PROCM(void, gl, Uniform4ui64NV, glUniform4ui64NV, UNIFORM4UI64NV, (AND GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w), (location, x, y, z, w), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4UI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4ui64vARB, glUniform4ui64vARB, UNIFORM4UI64VARB, (AND GLint location, GLsizei count, const GLuint64 *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform4ui64vARB, glUniform4ui64vARB, UNIFORM4UI64VARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4UI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4ui64vNV, glUniform4ui64vNV, UNIFORM4UI64VNV, (AND GLint location, GLsizei count, const GLuint64EXT *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform4ui64vNV, glUniform4ui64vNV, UNIFORM4UI64VNV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4UIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4uiEXT, glUniform4uiEXT, UNIFORM4UIEXT, (AND GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3), (location, v0, v1, v2, v3), &location, GL_void_return) GL_PROCM(void, gl, Uniform4uiEXT, glUniform4uiEXT, UNIFORM4UIEXT, (AND GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3), (location, v0, v1, v2, v3), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4uiv, glUniform4uiv, UNIFORM4UIV, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform4uiv, glUniform4uiv, UNIFORM4UIV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORM4UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniform4uivEXT, glUniform4uivEXT, UNIFORM4UIVEXT, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniform4uivEXT, glUniform4uivEXT, UNIFORM4UIVEXT, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMBLOCKBINDING #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformBlockBinding, glUniformBlockBinding, UNIFORMBLOCKBINDING, (AND GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding), (program, uniformBlockIndex, uniformBlockBinding), &program, GL_void_return) GL_PROCM(void, gl, UniformBlockBinding, glUniformBlockBinding, UNIFORMBLOCKBINDING, (AND GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding), (program, uniformBlockIndex, uniformBlockBinding), &program, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformBufferEXT, glUniformBufferEXT, UNIFORMBUFFEREXT, (AND GLuint program, GLint location, GLuint buffer), (program, location, buffer), &program, GL_void_return) GL_PROCM(void, gl, UniformBufferEXT, glUniformBufferEXT, UNIFORMBUFFEREXT, (AND GLuint program, GLint location, GLuint buffer), (program, location, buffer), &program, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMHANDLEUI64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformHandleui64ARB, glUniformHandleui64ARB, UNIFORMHANDLEUI64ARB, (AND GLint location, GLuint64 value), (location, value), &location, GL_void_return) GL_PROCM(void, gl, UniformHandleui64ARB, glUniformHandleui64ARB, UNIFORMHANDLEUI64ARB, (AND GLint location, GLuint64 value), (location, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMHANDLEUI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformHandleui64NV, glUniformHandleui64NV, UNIFORMHANDLEUI64NV, (AND GLint location, GLuint64 value), (location, value), &location, GL_void_return) GL_PROCM(void, gl, UniformHandleui64NV, glUniformHandleui64NV, UNIFORMHANDLEUI64NV, (AND GLint location, GLuint64 value), (location, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMHANDLEUI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformHandleui64vARB, glUniformHandleui64vARB, UNIFORMHANDLEUI64VARB, (AND GLint location, GLsizei count, const GLuint64 *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, UniformHandleui64vARB, glUniformHandleui64vARB, UNIFORMHANDLEUI64VARB, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMHANDLEUI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformHandleui64vNV, glUniformHandleui64vNV, UNIFORMHANDLEUI64VNV, (AND GLint location, GLsizei count, const GLuint64 *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, UniformHandleui64vNV, glUniformHandleui64vNV, UNIFORMHANDLEUI64VNV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix2dv, glUniformMatrix2dv, UNIFORMMATRIX2DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix2dv, glUniformMatrix2dv, UNIFORMMATRIX2DV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX2FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix2fv, glUniformMatrix2fv, UNIFORMMATRIX2FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix2fv, glUniformMatrix2fv, UNIFORMMATRIX2FV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX2FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix2fvARB, glUniformMatrix2fvARB, UNIFORMMATRIX2FVARB, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix2fvARB, glUniformMatrix2fvARB, UNIFORMMATRIX2FVARB, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX2X3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix2x3dv, glUniformMatrix2x3dv, UNIFORMMATRIX2X3DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix2x3dv, glUniformMatrix2x3dv, UNIFORMMATRIX2X3DV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX2X3FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix2x3fv, glUniformMatrix2x3fv, UNIFORMMATRIX2X3FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix2x3fv, glUniformMatrix2x3fv, UNIFORMMATRIX2X3FV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX2X4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix2x4dv, glUniformMatrix2x4dv, UNIFORMMATRIX2X4DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix2x4dv, glUniformMatrix2x4dv, UNIFORMMATRIX2X4DV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX2X4FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix2x4fv, glUniformMatrix2x4fv, UNIFORMMATRIX2X4FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix2x4fv, glUniformMatrix2x4fv, UNIFORMMATRIX2X4FV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix3dv, glUniformMatrix3dv, UNIFORMMATRIX3DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix3dv, glUniformMatrix3dv, UNIFORMMATRIX3DV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX3FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix3fv, glUniformMatrix3fv, UNIFORMMATRIX3FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix3fv, glUniformMatrix3fv, UNIFORMMATRIX3FV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX3FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix3fvARB, glUniformMatrix3fvARB, UNIFORMMATRIX3FVARB, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix3fvARB, glUniformMatrix3fvARB, UNIFORMMATRIX3FVARB, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX3X2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix3x2dv, glUniformMatrix3x2dv, UNIFORMMATRIX3X2DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix3x2dv, glUniformMatrix3x2dv, UNIFORMMATRIX3X2DV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX3X2FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix3x2fv, glUniformMatrix3x2fv, UNIFORMMATRIX3X2FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix3x2fv, glUniformMatrix3x2fv, UNIFORMMATRIX3X2FV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX3X4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix3x4dv, glUniformMatrix3x4dv, UNIFORMMATRIX3X4DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix3x4dv, glUniformMatrix3x4dv, UNIFORMMATRIX3X4DV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX3X4FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix3x4fv, glUniformMatrix3x4fv, UNIFORMMATRIX3X4FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix3x4fv, glUniformMatrix3x4fv, UNIFORMMATRIX3X4FV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix4dv, glUniformMatrix4dv, UNIFORMMATRIX4DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix4dv, glUniformMatrix4dv, UNIFORMMATRIX4DV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX4FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix4fv, glUniformMatrix4fv, UNIFORMMATRIX4FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix4fv, glUniformMatrix4fv, UNIFORMMATRIX4FV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX4FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix4fvARB, glUniformMatrix4fvARB, UNIFORMMATRIX4FVARB, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix4fvARB, glUniformMatrix4fvARB, UNIFORMMATRIX4FVARB, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX4X2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix4x2dv, glUniformMatrix4x2dv, UNIFORMMATRIX4X2DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix4x2dv, glUniformMatrix4x2dv, UNIFORMMATRIX4X2DV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX4X2FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix4x2fv, glUniformMatrix4x2fv, UNIFORMMATRIX4X2FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix4x2fv, glUniformMatrix4x2fv, UNIFORMMATRIX4X2FV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX4X3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix4x3dv, glUniformMatrix4x3dv, UNIFORMMATRIX4X3DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix4x3dv, glUniformMatrix4x3dv, UNIFORMMATRIX4X3DV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMMATRIX4X3FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformMatrix4x3fv, glUniformMatrix4x3fv, UNIFORMMATRIX4X3FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) GL_PROCM(void, gl, UniformMatrix4x3fv, glUniformMatrix4x3fv, UNIFORMMATRIX4X3FV, (AND GLint location, GLsizei count, GLboolean32 transpose, memptr value), (location, count, transpose, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMSUBROUTINESUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UniformSubroutinesuiv, glUniformSubroutinesuiv, UNIFORMSUBROUTINESUIV, (AND GLenum shadertype, GLsizei count, const GLuint *indices), (shadertype, count, indices), &shadertype, GL_void_return) GL_PROCM(void, gl, UniformSubroutinesuiv, glUniformSubroutinesuiv, UNIFORMSUBROUTINESUIV, (AND GLenum shadertype, GLsizei count, memptr indices), (shadertype, count, indices), &shadertype, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMUI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniformui64NV, glUniformui64NV, UNIFORMUI64NV, (AND GLint location, GLuint64EXT value), (location, value), &location, GL_void_return) GL_PROCM(void, gl, Uniformui64NV, glUniformui64NV, UNIFORMUI64NV, (AND GLint location, GLuint64EXT value), (location, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNIFORMUI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Uniformui64vNV, glUniformui64vNV, UNIFORMUI64VNV, (AND GLint location, GLsizei count, const GLuint64EXT *value), (location, count, value), &location, GL_void_return) GL_PROCM(void, gl, Uniformui64vNV, glUniformui64vNV, UNIFORMUI64VNV, (AND GLint location, GLsizei count, memptr value), (location, count, value), &location, GL_void_return) #endif #endif #ifndef NO_GLUNLOCKARRAYSEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UnlockArraysEXT, glUnlockArraysEXT, UNLOCKARRAYSEXT, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, UnlockArraysEXT, glUnlockArraysEXT, UNLOCKARRAYSEXT, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLUNMAPBUFFER #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, UnmapBuffer, glUnmapBuffer, UNMAPBUFFER, (AND GLenum target), (target), &target, return (GLboolean)) GL_PROCM(GLboolean, gl, UnmapBuffer, glUnmapBuffer, UNMAPBUFFER, (AND GLenum target), (target), &target, return (GLboolean)) #endif #endif #ifndef NO_GLUNMAPBUFFERARB #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, UnmapBufferARB, glUnmapBufferARB, UNMAPBUFFERARB, (AND GLenum target), (target), &target, return (GLboolean)) GL_PROCM(GLboolean, gl, UnmapBufferARB, glUnmapBufferARB, UNMAPBUFFERARB, (AND GLenum target), (target), &target, return (GLboolean)) #endif #endif #ifndef NO_GLUNMAPNAMEDBUFFER #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, UnmapNamedBuffer, glUnmapNamedBuffer, UNMAPNAMEDBUFFER, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) GL_PROCM(GLboolean, gl, UnmapNamedBuffer, glUnmapNamedBuffer, UNMAPNAMEDBUFFER, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) #endif #endif #ifndef NO_GLUNMAPNAMEDBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, UnmapNamedBufferEXT, glUnmapNamedBufferEXT, UNMAPNAMEDBUFFEREXT, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) GL_PROCM(GLboolean, gl, UnmapNamedBufferEXT, glUnmapNamedBufferEXT, UNMAPNAMEDBUFFEREXT, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) #endif #endif #ifndef NO_GLUNMAPOBJECTBUFFERATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UnmapObjectBufferATI, glUnmapObjectBufferATI, UNMAPOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, GL_void_return) GL_PROCM(void, gl, UnmapObjectBufferATI, glUnmapObjectBufferATI, UNMAPOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, GL_void_return) #endif #endif #ifndef NO_GLUNMAPTEXTURE2DINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UnmapTexture2DINTEL, glUnmapTexture2DINTEL, UNMAPTEXTURE2DINTEL, (AND GLuint texture, GLint level), (texture, level), &texture, GL_void_return) GL_PROCM(void, gl, UnmapTexture2DINTEL, glUnmapTexture2DINTEL, UNMAPTEXTURE2DINTEL, (AND GLuint texture, GLint level), (texture, level), &texture, GL_void_return) #endif #endif #ifndef NO_GLUPDATEOBJECTBUFFERATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UpdateObjectBufferATI, glUpdateObjectBufferATI, UPDATEOBJECTBUFFERATI, (AND GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve), (buffer, offset, size, pointer, preserve), &buffer, GL_void_return) GL_PROCM(void, gl, UpdateObjectBufferATI, glUpdateObjectBufferATI, UPDATEOBJECTBUFFERATI, (AND GLuint buffer, GLuint offset, GLsizei size, memptr pointer, GLenum preserve), (buffer, offset, size, pointer, preserve), &buffer, GL_void_return) #endif #endif #ifndef NO_GLUSEPROGRAM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UseProgram, glUseProgram, USEPROGRAM, (AND GLuint program), (program), &program, GL_void_return) GL_PROCM(void, gl, UseProgram, glUseProgram, USEPROGRAM, (AND GLuint program), (program), &program, GL_void_return) #endif #endif #ifndef NO_GLUSEPROGRAMOBJECTARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UseProgramObjectARB, glUseProgramObjectARB, USEPROGRAMOBJECTARB, (AND GLhandleARB programObj), (programObj), &programObj, GL_void_return) GL_PROCM(void, gl, UseProgramObjectARB, glUseProgramObjectARB, USEPROGRAMOBJECTARB, (AND GLhandleARB programObj), (programObj), &programObj, GL_void_return) #endif #endif #ifndef NO_GLUSEPROGRAMSTAGES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UseProgramStages, glUseProgramStages, USEPROGRAMSTAGES, (AND GLuint pipeline, GLbitfield stages, GLuint program), (pipeline, stages, program), &pipeline, GL_void_return) GL_PROCM(void, gl, UseProgramStages, glUseProgramStages, USEPROGRAMSTAGES, (AND GLuint pipeline, GLbitfield stages, GLuint program), (pipeline, stages, program), &pipeline, GL_void_return) #endif #endif #ifndef NO_GLUSESHADERPROGRAMEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, UseShaderProgramEXT, glUseShaderProgramEXT, USESHADERPROGRAMEXT, (AND GLenum type, GLuint program), (type, program), &type, GL_void_return) GL_PROCM(void, gl, UseShaderProgramEXT, glUseShaderProgramEXT, USESHADERPROGRAMEXT, (AND GLenum type, GLuint program), (type, program), &type, GL_void_return) #endif #endif #ifndef NO_GLVDPAUFININV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VDPAUFiniNV, glVDPAUFiniNV, VDPAUFININV, (NOTHING), (), NULL, GL_void_return) GL_PROCM(void, gl, VDPAUFiniNV, glVDPAUFiniNV, VDPAUFININV, (NOTHING), (), NULL, GL_void_return) #endif #endif #ifndef NO_GLVDPAUGETSURFACEIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VDPAUGetSurfaceivNV, glVDPAUGetSurfaceivNV, VDPAUGETSURFACEIVNV, (AND GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values), (surface, pname, bufSize, length, values), &surface, GL_void_return) GL_PROCM(void, gl, VDPAUGetSurfaceivNV, glVDPAUGetSurfaceivNV, VDPAUGETSURFACEIVNV, (AND GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, memptr length, memptr values), (surface, pname, bufSize, length, values), &surface, GL_void_return) #endif #endif #ifndef NO_GLVDPAUINITNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VDPAUInitNV, glVDPAUInitNV, VDPAUINITNV, (AND const void *vdpDevice, const void *getProcAddress), (vdpDevice, getProcAddress), &vdpDevice, GL_void_return) GL_PROCM(void, gl, VDPAUInitNV, glVDPAUInitNV, VDPAUINITNV, (AND memptr vdpDevice, memptr getProcAddress), (vdpDevice, getProcAddress), &vdpDevice, GL_void_return) #endif #endif #ifndef NO_GLVDPAUISSURFACENV #if !defined(TINYGL_ONLY) GL_PROC(GLboolean, gl, VDPAUIsSurfaceNV, glVDPAUIsSurfaceNV, VDPAUISSURFACENV, (AND GLvdpauSurfaceNV surface), (surface), &surface, return (GLboolean)) GL_PROCM(GLboolean, gl, VDPAUIsSurfaceNV, glVDPAUIsSurfaceNV, VDPAUISSURFACENV, (AND GLvdpauSurfaceNV surface), (surface), &surface, return (GLboolean)) #endif #endif #ifndef NO_GLVDPAUMAPSURFACESNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VDPAUMapSurfacesNV, glVDPAUMapSurfacesNV, VDPAUMAPSURFACESNV, (AND GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces), (numSurfaces, surfaces), &numSurfaces, GL_void_return) GL_PROCM(void, gl, VDPAUMapSurfacesNV, glVDPAUMapSurfacesNV, VDPAUMAPSURFACESNV, (AND GLsizei numSurfaces, memptr surfaces), (numSurfaces, surfaces), &numSurfaces, GL_void_return) #endif #endif #ifndef NO_GLVDPAUREGISTEROUTPUTSURFACENV #if !defined(TINYGL_ONLY) GL_PROC(GLvdpauSurfaceNV, gl, VDPAURegisterOutputSurfaceNV, glVDPAURegisterOutputSurfaceNV, VDPAUREGISTEROUTPUTSURFACENV, (AND const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames), (vdpSurface, target, numTextureNames, textureNames), &vdpSurface, return (GLvdpauSurfaceNV)) GL_PROCM(GLvdpauSurfaceNV, gl, VDPAURegisterOutputSurfaceNV, glVDPAURegisterOutputSurfaceNV, VDPAUREGISTEROUTPUTSURFACENV, (AND memptr vdpSurface, GLenum target, GLsizei numTextureNames, memptr textureNames), (vdpSurface, target, numTextureNames, textureNames), &vdpSurface, return (GLvdpauSurfaceNV)) #endif #endif #ifndef NO_GLVDPAUREGISTERVIDEOSURFACENV #if !defined(TINYGL_ONLY) GL_PROC(GLvdpauSurfaceNV, gl, VDPAURegisterVideoSurfaceNV, glVDPAURegisterVideoSurfaceNV, VDPAUREGISTERVIDEOSURFACENV, (AND const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames), (vdpSurface, target, numTextureNames, textureNames), &vdpSurface, return (GLvdpauSurfaceNV)) GL_PROCM(GLvdpauSurfaceNV, gl, VDPAURegisterVideoSurfaceNV, glVDPAURegisterVideoSurfaceNV, VDPAUREGISTERVIDEOSURFACENV, (AND memptr vdpSurface, GLenum target, GLsizei numTextureNames, memptr textureNames), (vdpSurface, target, numTextureNames, textureNames), &vdpSurface, return (GLvdpauSurfaceNV)) #endif #endif #ifndef NO_GLVDPAUSURFACEACCESSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VDPAUSurfaceAccessNV, glVDPAUSurfaceAccessNV, VDPAUSURFACEACCESSNV, (AND GLvdpauSurfaceNV surface, GLenum access), (surface, access), &surface, GL_void_return) GL_PROCM(void, gl, VDPAUSurfaceAccessNV, glVDPAUSurfaceAccessNV, VDPAUSURFACEACCESSNV, (AND GLvdpauSurfaceNV surface, GLenum access), (surface, access), &surface, GL_void_return) #endif #endif #ifndef NO_GLVDPAUUNMAPSURFACESNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VDPAUUnmapSurfacesNV, glVDPAUUnmapSurfacesNV, VDPAUUNMAPSURFACESNV, (AND GLsizei numSurface, const GLvdpauSurfaceNV *surfaces), (numSurface, surfaces), &numSurface, GL_void_return) GL_PROCM(void, gl, VDPAUUnmapSurfacesNV, glVDPAUUnmapSurfacesNV, VDPAUUNMAPSURFACESNV, (AND GLsizei numSurface, memptr surfaces), (numSurface, surfaces), &numSurface, GL_void_return) #endif #endif #ifndef NO_GLVDPAUUNREGISTERSURFACENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VDPAUUnregisterSurfaceNV, glVDPAUUnregisterSurfaceNV, VDPAUUNREGISTERSURFACENV, (AND GLvdpauSurfaceNV surface), (surface), &surface, GL_void_return) GL_PROCM(void, gl, VDPAUUnregisterSurfaceNV, glVDPAUUnregisterSurfaceNV, VDPAUUNREGISTERSURFACENV, (AND GLvdpauSurfaceNV surface), (surface), &surface, GL_void_return) #endif #endif #ifndef NO_GLVALIDATEPROGRAM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ValidateProgram, glValidateProgram, VALIDATEPROGRAM, (AND GLuint program), (program), &program, GL_void_return) GL_PROCM(void, gl, ValidateProgram, glValidateProgram, VALIDATEPROGRAM, (AND GLuint program), (program), &program, GL_void_return) #endif #endif #ifndef NO_GLVALIDATEPROGRAMARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ValidateProgramARB, glValidateProgramARB, VALIDATEPROGRAMARB, (AND GLhandleARB programObj), (programObj), &programObj, GL_void_return) GL_PROCM(void, gl, ValidateProgramARB, glValidateProgramARB, VALIDATEPROGRAMARB, (AND GLhandleARB programObj), (programObj), &programObj, GL_void_return) #endif #endif #ifndef NO_GLVALIDATEPROGRAMPIPELINE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ValidateProgramPipeline, glValidateProgramPipeline, VALIDATEPROGRAMPIPELINE, (AND GLuint pipeline), (pipeline), &pipeline, GL_void_return) GL_PROCM(void, gl, ValidateProgramPipeline, glValidateProgramPipeline, VALIDATEPROGRAMPIPELINE, (AND GLuint pipeline), (pipeline), &pipeline, GL_void_return) #endif #endif #ifndef NO_GLVARIANTARRAYOBJECTATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VariantArrayObjectATI, glVariantArrayObjectATI, VARIANTARRAYOBJECTATI, (AND GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset), (id, type, stride, buffer, offset), &id, GL_void_return) GL_PROCM(void, gl, VariantArrayObjectATI, glVariantArrayObjectATI, VARIANTARRAYOBJECTATI, (AND GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset), (id, type, stride, buffer, offset), &id, GL_void_return) #endif #endif #ifndef NO_GLVARIANTPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VariantPointerEXT, glVariantPointerEXT, VARIANTPOINTEREXT, (AND GLuint id, GLenum type, GLuint stride, const void *addr), (id, type, stride, addr), &id, GL_void_return) GL_PROCM(void, gl, VariantPointerEXT, glVariantPointerEXT, VARIANTPOINTEREXT, (AND GLuint id, GLenum type, GLuint stride, memptr addr), (id, type, stride, addr), &id, GL_void_return) #endif #endif #ifndef NO_GLVARIANTBVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VariantbvEXT, glVariantbvEXT, VARIANTBVEXT, (AND GLuint id, const GLbyte *addr), (id, addr), &id, GL_void_return) GL_PROCM(void, gl, VariantbvEXT, glVariantbvEXT, VARIANTBVEXT, (AND GLuint id, memptr addr), (id, addr), &id, GL_void_return) #endif #endif #ifndef NO_GLVARIANTDVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VariantdvEXT, glVariantdvEXT, VARIANTDVEXT, (AND GLuint id, const GLdouble *addr), (id, addr), &id, GL_void_return) GL_PROCM(void, gl, VariantdvEXT, glVariantdvEXT, VARIANTDVEXT, (AND GLuint id, memptr addr), (id, addr), &id, GL_void_return) #endif #endif #ifndef NO_GLVARIANTFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VariantfvEXT, glVariantfvEXT, VARIANTFVEXT, (AND GLuint id, const GLfloat *addr), (id, addr), &id, GL_void_return) GL_PROCM(void, gl, VariantfvEXT, glVariantfvEXT, VARIANTFVEXT, (AND GLuint id, memptr addr), (id, addr), &id, GL_void_return) #endif #endif #ifndef NO_GLVARIANTIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VariantivEXT, glVariantivEXT, VARIANTIVEXT, (AND GLuint id, const GLint *addr), (id, addr), &id, GL_void_return) GL_PROCM(void, gl, VariantivEXT, glVariantivEXT, VARIANTIVEXT, (AND GLuint id, memptr addr), (id, addr), &id, GL_void_return) #endif #endif #ifndef NO_GLVARIANTSVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VariantsvEXT, glVariantsvEXT, VARIANTSVEXT, (AND GLuint id, const GLshort *addr), (id, addr), &id, GL_void_return) GL_PROCM(void, gl, VariantsvEXT, glVariantsvEXT, VARIANTSVEXT, (AND GLuint id, memptr addr), (id, addr), &id, GL_void_return) #endif #endif #ifndef NO_GLVARIANTUBVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VariantubvEXT, glVariantubvEXT, VARIANTUBVEXT, (AND GLuint id, const GLubyte *addr), (id, addr), &id, GL_void_return) GL_PROCM(void, gl, VariantubvEXT, glVariantubvEXT, VARIANTUBVEXT, (AND GLuint id, memptr addr), (id, addr), &id, GL_void_return) #endif #endif #ifndef NO_GLVARIANTUIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VariantuivEXT, glVariantuivEXT, VARIANTUIVEXT, (AND GLuint id, const GLuint *addr), (id, addr), &id, GL_void_return) GL_PROCM(void, gl, VariantuivEXT, glVariantuivEXT, VARIANTUIVEXT, (AND GLuint id, memptr addr), (id, addr), &id, GL_void_return) #endif #endif #ifndef NO_GLVARIANTUSVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VariantusvEXT, glVariantusvEXT, VARIANTUSVEXT, (AND GLuint id, const GLushort *addr), (id, addr), &id, GL_void_return) GL_PROCM(void, gl, VariantusvEXT, glVariantusvEXT, VARIANTUSVEXT, (AND GLuint id, memptr addr), (id, addr), &id, GL_void_return) #endif #endif #ifndef NO_GLVERTEX2BOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex2bOES, glVertex2bOES, VERTEX2BOES, (AND GLbyte32 x, GLbyte32 y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, Vertex2bOES, glVertex2bOES, VERTEX2BOES, (AND GLbyte32 x, GLbyte32 y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX2BVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex2bvOES, glVertex2bvOES, VERTEX2BVOES, (AND const GLbyte *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, Vertex2bvOES, glVertex2bvOES, VERTEX2BVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLVERTEX2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex2d, glVertex2d, VERTEX2D, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, Vertex2d, glVertex2d, VERTEX2D, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex2dv, glVertex2dv, VERTEX2DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex2dv, glVertex2dv, VERTEX2DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLVERTEX2F GL_PROC(void, gl, Vertex2f, glVertex2f, VERTEX2F, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, Vertex2f, glVertex2f, VERTEX2F, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) #endif #ifndef NO_GLVERTEX2FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex2fv, glVertex2fv, VERTEX2FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex2fv, glVertex2fv, VERTEX2FV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLVERTEX2HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex2hNV, glVertex2hNV, VERTEX2HNV, (AND GLhalfNV32 x, GLhalfNV32 y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, Vertex2hNV, glVertex2hNV, VERTEX2HNV, (AND GLhalfNV32 x, GLhalfNV32 y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX2HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex2hvNV, glVertex2hvNV, VERTEX2HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex2hvNV, glVertex2hvNV, VERTEX2HVNV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLVERTEX2I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex2i, glVertex2i, VERTEX2I, (AND GLint x, GLint y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, Vertex2i, glVertex2i, VERTEX2I, (AND GLint x, GLint y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX2IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex2iv, glVertex2iv, VERTEX2IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex2iv, glVertex2iv, VERTEX2IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLVERTEX2S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex2s, glVertex2s, VERTEX2S, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, Vertex2s, glVertex2s, VERTEX2S, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX2SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex2sv, glVertex2sv, VERTEX2SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex2sv, glVertex2sv, VERTEX2SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLVERTEX2XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex2xOES, glVertex2xOES, VERTEX2XOES, (AND GLfixed x), (x), &x, GL_void_return) GL_PROCM(void, gl, Vertex2xOES, glVertex2xOES, VERTEX2XOES, (AND GLfixed x), (x), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX2XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex2xvOES, glVertex2xvOES, VERTEX2XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, Vertex2xvOES, glVertex2xvOES, VERTEX2XVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLVERTEX3BOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex3bOES, glVertex3bOES, VERTEX3BOES, (AND GLbyte32 x, GLbyte32 y, GLbyte32 z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, Vertex3bOES, glVertex3bOES, VERTEX3BOES, (AND GLbyte32 x, GLbyte32 y, GLbyte32 z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX3BVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex3bvOES, glVertex3bvOES, VERTEX3BVOES, (AND const GLbyte *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, Vertex3bvOES, glVertex3bvOES, VERTEX3BVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLVERTEX3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex3d, glVertex3d, VERTEX3D, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, Vertex3d, glVertex3d, VERTEX3D, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex3dv, glVertex3dv, VERTEX3DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex3dv, glVertex3dv, VERTEX3DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLVERTEX3F GL_PROC(void, gl, Vertex3f, glVertex3f, VERTEX3F, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, Vertex3f, glVertex3f, VERTEX3F, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) #endif #ifndef NO_GLVERTEX3FV GL_PROC(void, gl, Vertex3fv, glVertex3fv, VERTEX3FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex3fv, glVertex3fv, VERTEX3FV, (AND memptr v), (v), &v, GL_void_return) #endif #ifndef NO_GLVERTEX3HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex3hNV, glVertex3hNV, VERTEX3HNV, (AND GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, Vertex3hNV, glVertex3hNV, VERTEX3HNV, (AND GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX3HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex3hvNV, glVertex3hvNV, VERTEX3HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex3hvNV, glVertex3hvNV, VERTEX3HVNV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLVERTEX3I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex3i, glVertex3i, VERTEX3I, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, Vertex3i, glVertex3i, VERTEX3I, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX3IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex3iv, glVertex3iv, VERTEX3IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex3iv, glVertex3iv, VERTEX3IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLVERTEX3S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex3s, glVertex3s, VERTEX3S, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, Vertex3s, glVertex3s, VERTEX3S, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX3SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex3sv, glVertex3sv, VERTEX3SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex3sv, glVertex3sv, VERTEX3SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLVERTEX3XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex3xOES, glVertex3xOES, VERTEX3XOES, (AND GLfixed x, GLfixed y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, Vertex3xOES, glVertex3xOES, VERTEX3XOES, (AND GLfixed x, GLfixed y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX3XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex3xvOES, glVertex3xvOES, VERTEX3XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, Vertex3xvOES, glVertex3xvOES, VERTEX3XVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLVERTEX4BOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex4bOES, glVertex4bOES, VERTEX4BOES, (AND GLbyte32 x, GLbyte32 y, GLbyte32 z, GLbyte32 w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, Vertex4bOES, glVertex4bOES, VERTEX4BOES, (AND GLbyte32 x, GLbyte32 y, GLbyte32 z, GLbyte32 w), (x, y, z, w), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX4BVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex4bvOES, glVertex4bvOES, VERTEX4BVOES, (AND const GLbyte *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, Vertex4bvOES, glVertex4bvOES, VERTEX4BVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLVERTEX4D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex4d, glVertex4d, VERTEX4D, (AND GLdouble x, GLdouble y, GLdouble z, GLdouble w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, Vertex4d, glVertex4d, VERTEX4D, (AND GLdouble x, GLdouble y, GLdouble z, GLdouble w), (x, y, z, w), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex4dv, glVertex4dv, VERTEX4DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex4dv, glVertex4dv, VERTEX4DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLVERTEX4F GL_PROC(void, gl, Vertex4f, glVertex4f, VERTEX4F, (AND GLfloat x, GLfloat y, GLfloat z, GLfloat w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, Vertex4f, glVertex4f, VERTEX4F, (AND GLfloat x, GLfloat y, GLfloat z, GLfloat w), (x, y, z, w), &x, GL_void_return) #endif #ifndef NO_GLVERTEX4FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex4fv, glVertex4fv, VERTEX4FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex4fv, glVertex4fv, VERTEX4FV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLVERTEX4HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex4hNV, glVertex4hNV, VERTEX4HNV, (AND GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, Vertex4hNV, glVertex4hNV, VERTEX4HNV, (AND GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w), (x, y, z, w), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX4HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex4hvNV, glVertex4hvNV, VERTEX4HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex4hvNV, glVertex4hvNV, VERTEX4HVNV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLVERTEX4I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex4i, glVertex4i, VERTEX4I, (AND GLint x, GLint y, GLint z, GLint w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, Vertex4i, glVertex4i, VERTEX4I, (AND GLint x, GLint y, GLint z, GLint w), (x, y, z, w), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX4IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex4iv, glVertex4iv, VERTEX4IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex4iv, glVertex4iv, VERTEX4IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLVERTEX4S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex4s, glVertex4s, VERTEX4S, (AND GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, Vertex4s, glVertex4s, VERTEX4S, (AND GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (x, y, z, w), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX4SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex4sv, glVertex4sv, VERTEX4SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, Vertex4sv, glVertex4sv, VERTEX4SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLVERTEX4XOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex4xOES, glVertex4xOES, VERTEX4XOES, (AND GLfixed x, GLfixed y, GLfixed z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, Vertex4xOES, glVertex4xOES, VERTEX4XOES, (AND GLfixed x, GLfixed y, GLfixed z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLVERTEX4XVOES #if !defined(TINYGL_ONLY) GL_PROC(void, gl, Vertex4xvOES, glVertex4xvOES, VERTEX4XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) GL_PROCM(void, gl, Vertex4xvOES, glVertex4xvOES, VERTEX4XVOES, (AND memptr coords), (coords), &coords, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYATTRIBBINDING #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayAttribBinding, glVertexArrayAttribBinding, VERTEXARRAYATTRIBBINDING, (AND GLuint vaobj, GLuint attribindex, GLuint bindingindex), (vaobj, attribindex, bindingindex), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayAttribBinding, glVertexArrayAttribBinding, VERTEXARRAYATTRIBBINDING, (AND GLuint vaobj, GLuint attribindex, GLuint bindingindex), (vaobj, attribindex, bindingindex), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYATTRIBFORMAT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayAttribFormat, glVertexArrayAttribFormat, VERTEXARRAYATTRIBFORMAT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset), (vaobj, attribindex, size, type, normalized, relativeoffset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayAttribFormat, glVertexArrayAttribFormat, VERTEXARRAYATTRIBFORMAT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset), (vaobj, attribindex, size, type, normalized, relativeoffset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYATTRIBIFORMAT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayAttribIFormat, glVertexArrayAttribIFormat, VERTEXARRAYATTRIBIFORMAT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (vaobj, attribindex, size, type, relativeoffset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayAttribIFormat, glVertexArrayAttribIFormat, VERTEXARRAYATTRIBIFORMAT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (vaobj, attribindex, size, type, relativeoffset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYATTRIBLFORMAT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayAttribLFormat, glVertexArrayAttribLFormat, VERTEXARRAYATTRIBLFORMAT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (vaobj, attribindex, size, type, relativeoffset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayAttribLFormat, glVertexArrayAttribLFormat, VERTEXARRAYATTRIBLFORMAT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (vaobj, attribindex, size, type, relativeoffset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYBINDVERTEXBUFFEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayBindVertexBufferEXT, glVertexArrayBindVertexBufferEXT, VERTEXARRAYBINDVERTEXBUFFEREXT, (AND GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride), (vaobj, bindingindex, buffer, offset, stride), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayBindVertexBufferEXT, glVertexArrayBindVertexBufferEXT, VERTEXARRAYBINDVERTEXBUFFEREXT, (AND GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride), (vaobj, bindingindex, buffer, offset, stride), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYBINDINGDIVISOR #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayBindingDivisor, glVertexArrayBindingDivisor, VERTEXARRAYBINDINGDIVISOR, (AND GLuint vaobj, GLuint bindingindex, GLuint divisor), (vaobj, bindingindex, divisor), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayBindingDivisor, glVertexArrayBindingDivisor, VERTEXARRAYBINDINGDIVISOR, (AND GLuint vaobj, GLuint bindingindex, GLuint divisor), (vaobj, bindingindex, divisor), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYCOLOROFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayColorOffsetEXT, glVertexArrayColorOffsetEXT, VERTEXARRAYCOLOROFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, size, type, stride, offset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayColorOffsetEXT, glVertexArrayColorOffsetEXT, VERTEXARRAYCOLOROFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, size, type, stride, offset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYEDGEFLAGOFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayEdgeFlagOffsetEXT, glVertexArrayEdgeFlagOffsetEXT, VERTEXARRAYEDGEFLAGOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset), (vaobj, buffer, stride, offset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayEdgeFlagOffsetEXT, glVertexArrayEdgeFlagOffsetEXT, VERTEXARRAYEDGEFLAGOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset), (vaobj, buffer, stride, offset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYELEMENTBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayElementBuffer, glVertexArrayElementBuffer, VERTEXARRAYELEMENTBUFFER, (AND GLuint vaobj, GLuint buffer), (vaobj, buffer), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayElementBuffer, glVertexArrayElementBuffer, VERTEXARRAYELEMENTBUFFER, (AND GLuint vaobj, GLuint buffer), (vaobj, buffer), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYFOGCOORDOFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayFogCoordOffsetEXT, glVertexArrayFogCoordOffsetEXT, VERTEXARRAYFOGCOORDOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, type, stride, offset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayFogCoordOffsetEXT, glVertexArrayFogCoordOffsetEXT, VERTEXARRAYFOGCOORDOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, type, stride, offset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYINDEXOFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayIndexOffsetEXT, glVertexArrayIndexOffsetEXT, VERTEXARRAYINDEXOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, type, stride, offset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayIndexOffsetEXT, glVertexArrayIndexOffsetEXT, VERTEXARRAYINDEXOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, type, stride, offset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYMULTITEXCOORDOFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayMultiTexCoordOffsetEXT, glVertexArrayMultiTexCoordOffsetEXT, VERTEXARRAYMULTITEXCOORDOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, texunit, size, type, stride, offset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayMultiTexCoordOffsetEXT, glVertexArrayMultiTexCoordOffsetEXT, VERTEXARRAYMULTITEXCOORDOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, texunit, size, type, stride, offset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYNORMALOFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayNormalOffsetEXT, glVertexArrayNormalOffsetEXT, VERTEXARRAYNORMALOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, type, stride, offset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayNormalOffsetEXT, glVertexArrayNormalOffsetEXT, VERTEXARRAYNORMALOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, type, stride, offset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYPARAMETERIAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayParameteriAPPLE, glVertexArrayParameteriAPPLE, VERTEXARRAYPARAMETERIAPPLE, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, VertexArrayParameteriAPPLE, glVertexArrayParameteriAPPLE, VERTEXARRAYPARAMETERIAPPLE, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYRANGEAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayRangeAPPLE, glVertexArrayRangeAPPLE, VERTEXARRAYRANGEAPPLE, (AND GLsizei length, void *pointer), (length, pointer), &length, GL_void_return) GL_PROCM(void, gl, VertexArrayRangeAPPLE, glVertexArrayRangeAPPLE, VERTEXARRAYRANGEAPPLE, (AND GLsizei length, memptr pointer), (length, pointer), &length, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYRANGENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayRangeNV, glVertexArrayRangeNV, VERTEXARRAYRANGENV, (AND GLsizei length, const void *pointer), (length, pointer), &length, GL_void_return) GL_PROCM(void, gl, VertexArrayRangeNV, glVertexArrayRangeNV, VERTEXARRAYRANGENV, (AND GLsizei length, memptr pointer), (length, pointer), &length, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYSECONDARYCOLOROFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArraySecondaryColorOffsetEXT, glVertexArraySecondaryColorOffsetEXT, VERTEXARRAYSECONDARYCOLOROFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, size, type, stride, offset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArraySecondaryColorOffsetEXT, glVertexArraySecondaryColorOffsetEXT, VERTEXARRAYSECONDARYCOLOROFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, size, type, stride, offset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYTEXCOORDOFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayTexCoordOffsetEXT, glVertexArrayTexCoordOffsetEXT, VERTEXARRAYTEXCOORDOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, size, type, stride, offset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayTexCoordOffsetEXT, glVertexArrayTexCoordOffsetEXT, VERTEXARRAYTEXCOORDOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, size, type, stride, offset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYVERTEXATTRIBBINDINGEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayVertexAttribBindingEXT, glVertexArrayVertexAttribBindingEXT, VERTEXARRAYVERTEXATTRIBBINDINGEXT, (AND GLuint vaobj, GLuint attribindex, GLuint bindingindex), (vaobj, attribindex, bindingindex), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayVertexAttribBindingEXT, glVertexArrayVertexAttribBindingEXT, VERTEXARRAYVERTEXATTRIBBINDINGEXT, (AND GLuint vaobj, GLuint attribindex, GLuint bindingindex), (vaobj, attribindex, bindingindex), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYVERTEXATTRIBDIVISOREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayVertexAttribDivisorEXT, glVertexArrayVertexAttribDivisorEXT, VERTEXARRAYVERTEXATTRIBDIVISOREXT, (AND GLuint vaobj, GLuint index, GLuint divisor), (vaobj, index, divisor), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayVertexAttribDivisorEXT, glVertexArrayVertexAttribDivisorEXT, VERTEXARRAYVERTEXATTRIBDIVISOREXT, (AND GLuint vaobj, GLuint index, GLuint divisor), (vaobj, index, divisor), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYVERTEXATTRIBFORMATEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayVertexAttribFormatEXT, glVertexArrayVertexAttribFormatEXT, VERTEXARRAYVERTEXATTRIBFORMATEXT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset), (vaobj, attribindex, size, type, normalized, relativeoffset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayVertexAttribFormatEXT, glVertexArrayVertexAttribFormatEXT, VERTEXARRAYVERTEXATTRIBFORMATEXT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset), (vaobj, attribindex, size, type, normalized, relativeoffset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYVERTEXATTRIBIFORMATEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayVertexAttribIFormatEXT, glVertexArrayVertexAttribIFormatEXT, VERTEXARRAYVERTEXATTRIBIFORMATEXT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (vaobj, attribindex, size, type, relativeoffset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayVertexAttribIFormatEXT, glVertexArrayVertexAttribIFormatEXT, VERTEXARRAYVERTEXATTRIBIFORMATEXT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (vaobj, attribindex, size, type, relativeoffset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYVERTEXATTRIBIOFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayVertexAttribIOffsetEXT, glVertexArrayVertexAttribIOffsetEXT, VERTEXARRAYVERTEXATTRIBIOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, index, size, type, stride, offset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayVertexAttribIOffsetEXT, glVertexArrayVertexAttribIOffsetEXT, VERTEXARRAYVERTEXATTRIBIOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, index, size, type, stride, offset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYVERTEXATTRIBLFORMATEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayVertexAttribLFormatEXT, glVertexArrayVertexAttribLFormatEXT, VERTEXARRAYVERTEXATTRIBLFORMATEXT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (vaobj, attribindex, size, type, relativeoffset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayVertexAttribLFormatEXT, glVertexArrayVertexAttribLFormatEXT, VERTEXARRAYVERTEXATTRIBLFORMATEXT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (vaobj, attribindex, size, type, relativeoffset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYVERTEXATTRIBLOFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayVertexAttribLOffsetEXT, glVertexArrayVertexAttribLOffsetEXT, VERTEXARRAYVERTEXATTRIBLOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, index, size, type, stride, offset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayVertexAttribLOffsetEXT, glVertexArrayVertexAttribLOffsetEXT, VERTEXARRAYVERTEXATTRIBLOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, index, size, type, stride, offset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYVERTEXATTRIBOFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayVertexAttribOffsetEXT, glVertexArrayVertexAttribOffsetEXT, VERTEXARRAYVERTEXATTRIBOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLintptr offset), (vaobj, buffer, index, size, type, normalized, stride, offset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayVertexAttribOffsetEXT, glVertexArrayVertexAttribOffsetEXT, VERTEXARRAYVERTEXATTRIBOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLintptr offset), (vaobj, buffer, index, size, type, normalized, stride, offset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYVERTEXBINDINGDIVISOREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayVertexBindingDivisorEXT, glVertexArrayVertexBindingDivisorEXT, VERTEXARRAYVERTEXBINDINGDIVISOREXT, (AND GLuint vaobj, GLuint bindingindex, GLuint divisor), (vaobj, bindingindex, divisor), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayVertexBindingDivisorEXT, glVertexArrayVertexBindingDivisorEXT, VERTEXARRAYVERTEXBINDINGDIVISOREXT, (AND GLuint vaobj, GLuint bindingindex, GLuint divisor), (vaobj, bindingindex, divisor), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYVERTEXBUFFER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayVertexBuffer, glVertexArrayVertexBuffer, VERTEXARRAYVERTEXBUFFER, (AND GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride), (vaobj, bindingindex, buffer, offset, stride), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayVertexBuffer, glVertexArrayVertexBuffer, VERTEXARRAYVERTEXBUFFER, (AND GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride), (vaobj, bindingindex, buffer, offset, stride), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYVERTEXBUFFERS #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayVertexBuffers, glVertexArrayVertexBuffers, VERTEXARRAYVERTEXBUFFERS, (AND GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides), (vaobj, first, count, buffers, offsets, strides), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayVertexBuffers, glVertexArrayVertexBuffers, VERTEXARRAYVERTEXBUFFERS, (AND GLuint vaobj, GLuint first, GLsizei count, memptr buffers, memptr offsets, memptr strides), (vaobj, first, count, buffers, offsets, strides), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXARRAYVERTEXOFFSETEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexArrayVertexOffsetEXT, glVertexArrayVertexOffsetEXT, VERTEXARRAYVERTEXOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, size, type, stride, offset), &vaobj, GL_void_return) GL_PROCM(void, gl, VertexArrayVertexOffsetEXT, glVertexArrayVertexOffsetEXT, VERTEXARRAYVERTEXOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, size, type, stride, offset), &vaobj, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1d, glVertexAttrib1d, VERTEXATTRIB1D, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1d, glVertexAttrib1d, VERTEXATTRIB1D, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1dARB, glVertexAttrib1dARB, VERTEXATTRIB1DARB, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1dARB, glVertexAttrib1dARB, VERTEXATTRIB1DARB, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1DNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1dNV, glVertexAttrib1dNV, VERTEXATTRIB1DNV, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1dNV, glVertexAttrib1dNV, VERTEXATTRIB1DNV, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1dv, glVertexAttrib1dv, VERTEXATTRIB1DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1dv, glVertexAttrib1dv, VERTEXATTRIB1DV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1DVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1dvARB, glVertexAttrib1dvARB, VERTEXATTRIB1DVARB, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1dvARB, glVertexAttrib1dvARB, VERTEXATTRIB1DVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1DVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1dvNV, glVertexAttrib1dvNV, VERTEXATTRIB1DVNV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1dvNV, glVertexAttrib1dvNV, VERTEXATTRIB1DVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1f, glVertexAttrib1f, VERTEXATTRIB1F, (AND GLuint index, GLfloat x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1f, glVertexAttrib1f, VERTEXATTRIB1F, (AND GLuint index, GLfloat x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1fARB, glVertexAttrib1fARB, VERTEXATTRIB1FARB, (AND GLuint index, GLfloat x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1fARB, glVertexAttrib1fARB, VERTEXATTRIB1FARB, (AND GLuint index, GLfloat x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1FNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1fNV, glVertexAttrib1fNV, VERTEXATTRIB1FNV, (AND GLuint index, GLfloat x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1fNV, glVertexAttrib1fNV, VERTEXATTRIB1FNV, (AND GLuint index, GLfloat x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1fv, glVertexAttrib1fv, VERTEXATTRIB1FV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1fv, glVertexAttrib1fv, VERTEXATTRIB1FV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1fvARB, glVertexAttrib1fvARB, VERTEXATTRIB1FVARB, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1fvARB, glVertexAttrib1fvARB, VERTEXATTRIB1FVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1FVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1fvNV, glVertexAttrib1fvNV, VERTEXATTRIB1FVNV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1fvNV, glVertexAttrib1fvNV, VERTEXATTRIB1FVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1hNV, glVertexAttrib1hNV, VERTEXATTRIB1HNV, (AND GLuint index, GLhalfNV32 x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1hNV, glVertexAttrib1hNV, VERTEXATTRIB1HNV, (AND GLuint index, GLhalfNV32 x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1hvNV, glVertexAttrib1hvNV, VERTEXATTRIB1HVNV, (AND GLuint index, const GLhalfNV *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1hvNV, glVertexAttrib1hvNV, VERTEXATTRIB1HVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1s, glVertexAttrib1s, VERTEXATTRIB1S, (AND GLuint index, GLshort32 x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1s, glVertexAttrib1s, VERTEXATTRIB1S, (AND GLuint index, GLshort32 x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1SARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1sARB, glVertexAttrib1sARB, VERTEXATTRIB1SARB, (AND GLuint index, GLshort32 x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1sARB, glVertexAttrib1sARB, VERTEXATTRIB1SARB, (AND GLuint index, GLshort32 x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1SNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1sNV, glVertexAttrib1sNV, VERTEXATTRIB1SNV, (AND GLuint index, GLshort32 x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1sNV, glVertexAttrib1sNV, VERTEXATTRIB1SNV, (AND GLuint index, GLshort32 x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1sv, glVertexAttrib1sv, VERTEXATTRIB1SV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1sv, glVertexAttrib1sv, VERTEXATTRIB1SV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1SVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1svARB, glVertexAttrib1svARB, VERTEXATTRIB1SVARB, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1svARB, glVertexAttrib1svARB, VERTEXATTRIB1SVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB1SVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib1svNV, glVertexAttrib1svNV, VERTEXATTRIB1SVNV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib1svNV, glVertexAttrib1svNV, VERTEXATTRIB1SVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2d, glVertexAttrib2d, VERTEXATTRIB2D, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2d, glVertexAttrib2d, VERTEXATTRIB2D, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2dARB, glVertexAttrib2dARB, VERTEXATTRIB2DARB, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2dARB, glVertexAttrib2dARB, VERTEXATTRIB2DARB, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2DNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2dNV, glVertexAttrib2dNV, VERTEXATTRIB2DNV, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2dNV, glVertexAttrib2dNV, VERTEXATTRIB2DNV, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2dv, glVertexAttrib2dv, VERTEXATTRIB2DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2dv, glVertexAttrib2dv, VERTEXATTRIB2DV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2DVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2dvARB, glVertexAttrib2dvARB, VERTEXATTRIB2DVARB, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2dvARB, glVertexAttrib2dvARB, VERTEXATTRIB2DVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2DVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2dvNV, glVertexAttrib2dvNV, VERTEXATTRIB2DVNV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2dvNV, glVertexAttrib2dvNV, VERTEXATTRIB2DVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2f, glVertexAttrib2f, VERTEXATTRIB2F, (AND GLuint index, GLfloat x, GLfloat y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2f, glVertexAttrib2f, VERTEXATTRIB2F, (AND GLuint index, GLfloat x, GLfloat y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2fARB, glVertexAttrib2fARB, VERTEXATTRIB2FARB, (AND GLuint index, GLfloat x, GLfloat y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2fARB, glVertexAttrib2fARB, VERTEXATTRIB2FARB, (AND GLuint index, GLfloat x, GLfloat y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2FNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2fNV, glVertexAttrib2fNV, VERTEXATTRIB2FNV, (AND GLuint index, GLfloat x, GLfloat y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2fNV, glVertexAttrib2fNV, VERTEXATTRIB2FNV, (AND GLuint index, GLfloat x, GLfloat y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2fv, glVertexAttrib2fv, VERTEXATTRIB2FV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2fv, glVertexAttrib2fv, VERTEXATTRIB2FV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2fvARB, glVertexAttrib2fvARB, VERTEXATTRIB2FVARB, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2fvARB, glVertexAttrib2fvARB, VERTEXATTRIB2FVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2FVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2fvNV, glVertexAttrib2fvNV, VERTEXATTRIB2FVNV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2fvNV, glVertexAttrib2fvNV, VERTEXATTRIB2FVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2hNV, glVertexAttrib2hNV, VERTEXATTRIB2HNV, (AND GLuint index, GLhalfNV32 x, GLhalfNV32 y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2hNV, glVertexAttrib2hNV, VERTEXATTRIB2HNV, (AND GLuint index, GLhalfNV32 x, GLhalfNV32 y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2hvNV, glVertexAttrib2hvNV, VERTEXATTRIB2HVNV, (AND GLuint index, const GLhalfNV *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2hvNV, glVertexAttrib2hvNV, VERTEXATTRIB2HVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2s, glVertexAttrib2s, VERTEXATTRIB2S, (AND GLuint index, GLshort32 x, GLshort32 y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2s, glVertexAttrib2s, VERTEXATTRIB2S, (AND GLuint index, GLshort32 x, GLshort32 y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2SARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2sARB, glVertexAttrib2sARB, VERTEXATTRIB2SARB, (AND GLuint index, GLshort32 x, GLshort32 y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2sARB, glVertexAttrib2sARB, VERTEXATTRIB2SARB, (AND GLuint index, GLshort32 x, GLshort32 y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2SNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2sNV, glVertexAttrib2sNV, VERTEXATTRIB2SNV, (AND GLuint index, GLshort32 x, GLshort32 y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2sNV, glVertexAttrib2sNV, VERTEXATTRIB2SNV, (AND GLuint index, GLshort32 x, GLshort32 y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2sv, glVertexAttrib2sv, VERTEXATTRIB2SV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2sv, glVertexAttrib2sv, VERTEXATTRIB2SV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2SVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2svARB, glVertexAttrib2svARB, VERTEXATTRIB2SVARB, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2svARB, glVertexAttrib2svARB, VERTEXATTRIB2SVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB2SVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib2svNV, glVertexAttrib2svNV, VERTEXATTRIB2SVNV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib2svNV, glVertexAttrib2svNV, VERTEXATTRIB2SVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3d, glVertexAttrib3d, VERTEXATTRIB3D, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3d, glVertexAttrib3d, VERTEXATTRIB3D, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3dARB, glVertexAttrib3dARB, VERTEXATTRIB3DARB, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3dARB, glVertexAttrib3dARB, VERTEXATTRIB3DARB, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3DNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3dNV, glVertexAttrib3dNV, VERTEXATTRIB3DNV, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3dNV, glVertexAttrib3dNV, VERTEXATTRIB3DNV, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3dv, glVertexAttrib3dv, VERTEXATTRIB3DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3dv, glVertexAttrib3dv, VERTEXATTRIB3DV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3DVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3dvARB, glVertexAttrib3dvARB, VERTEXATTRIB3DVARB, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3dvARB, glVertexAttrib3dvARB, VERTEXATTRIB3DVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3DVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3dvNV, glVertexAttrib3dvNV, VERTEXATTRIB3DVNV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3dvNV, glVertexAttrib3dvNV, VERTEXATTRIB3DVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3f, glVertexAttrib3f, VERTEXATTRIB3F, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3f, glVertexAttrib3f, VERTEXATTRIB3F, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3fARB, glVertexAttrib3fARB, VERTEXATTRIB3FARB, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3fARB, glVertexAttrib3fARB, VERTEXATTRIB3FARB, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3FNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3fNV, glVertexAttrib3fNV, VERTEXATTRIB3FNV, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3fNV, glVertexAttrib3fNV, VERTEXATTRIB3FNV, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3fv, glVertexAttrib3fv, VERTEXATTRIB3FV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3fv, glVertexAttrib3fv, VERTEXATTRIB3FV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3fvARB, glVertexAttrib3fvARB, VERTEXATTRIB3FVARB, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3fvARB, glVertexAttrib3fvARB, VERTEXATTRIB3FVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3FVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3fvNV, glVertexAttrib3fvNV, VERTEXATTRIB3FVNV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3fvNV, glVertexAttrib3fvNV, VERTEXATTRIB3FVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3hNV, glVertexAttrib3hNV, VERTEXATTRIB3HNV, (AND GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3hNV, glVertexAttrib3hNV, VERTEXATTRIB3HNV, (AND GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3hvNV, glVertexAttrib3hvNV, VERTEXATTRIB3HVNV, (AND GLuint index, const GLhalfNV *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3hvNV, glVertexAttrib3hvNV, VERTEXATTRIB3HVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3s, glVertexAttrib3s, VERTEXATTRIB3S, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3s, glVertexAttrib3s, VERTEXATTRIB3S, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3SARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3sARB, glVertexAttrib3sARB, VERTEXATTRIB3SARB, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3sARB, glVertexAttrib3sARB, VERTEXATTRIB3SARB, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3SNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3sNV, glVertexAttrib3sNV, VERTEXATTRIB3SNV, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3sNV, glVertexAttrib3sNV, VERTEXATTRIB3SNV, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3sv, glVertexAttrib3sv, VERTEXATTRIB3SV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3sv, glVertexAttrib3sv, VERTEXATTRIB3SV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3SVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3svARB, glVertexAttrib3svARB, VERTEXATTRIB3SVARB, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3svARB, glVertexAttrib3svARB, VERTEXATTRIB3SVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB3SVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib3svNV, glVertexAttrib3svNV, VERTEXATTRIB3SVNV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib3svNV, glVertexAttrib3svNV, VERTEXATTRIB3SVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4NBV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4Nbv, glVertexAttrib4Nbv, VERTEXATTRIB4NBV, (AND GLuint index, const GLbyte *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4Nbv, glVertexAttrib4Nbv, VERTEXATTRIB4NBV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4NBVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4NbvARB, glVertexAttrib4NbvARB, VERTEXATTRIB4NBVARB, (AND GLuint index, const GLbyte *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4NbvARB, glVertexAttrib4NbvARB, VERTEXATTRIB4NBVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4NIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4Niv, glVertexAttrib4Niv, VERTEXATTRIB4NIV, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4Niv, glVertexAttrib4Niv, VERTEXATTRIB4NIV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4NIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4NivARB, glVertexAttrib4NivARB, VERTEXATTRIB4NIVARB, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4NivARB, glVertexAttrib4NivARB, VERTEXATTRIB4NIVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4NSV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4Nsv, glVertexAttrib4Nsv, VERTEXATTRIB4NSV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4Nsv, glVertexAttrib4Nsv, VERTEXATTRIB4NSV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4NSVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4NsvARB, glVertexAttrib4NsvARB, VERTEXATTRIB4NSVARB, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4NsvARB, glVertexAttrib4NsvARB, VERTEXATTRIB4NSVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4NUB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4Nub, glVertexAttrib4Nub, VERTEXATTRIB4NUB, (AND GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4Nub, glVertexAttrib4Nub, VERTEXATTRIB4NUB, (AND GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4NUBARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4NubARB, glVertexAttrib4NubARB, VERTEXATTRIB4NUBARB, (AND GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4NubARB, glVertexAttrib4NubARB, VERTEXATTRIB4NUBARB, (AND GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4NUBV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4Nubv, glVertexAttrib4Nubv, VERTEXATTRIB4NUBV, (AND GLuint index, const GLubyte *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4Nubv, glVertexAttrib4Nubv, VERTEXATTRIB4NUBV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4NUBVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4NubvARB, glVertexAttrib4NubvARB, VERTEXATTRIB4NUBVARB, (AND GLuint index, const GLubyte *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4NubvARB, glVertexAttrib4NubvARB, VERTEXATTRIB4NUBVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4NUIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4Nuiv, glVertexAttrib4Nuiv, VERTEXATTRIB4NUIV, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4Nuiv, glVertexAttrib4Nuiv, VERTEXATTRIB4NUIV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4NUIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4NuivARB, glVertexAttrib4NuivARB, VERTEXATTRIB4NUIVARB, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4NuivARB, glVertexAttrib4NuivARB, VERTEXATTRIB4NUIVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4NUSV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4Nusv, glVertexAttrib4Nusv, VERTEXATTRIB4NUSV, (AND GLuint index, const GLushort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4Nusv, glVertexAttrib4Nusv, VERTEXATTRIB4NUSV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4NUSVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4NusvARB, glVertexAttrib4NusvARB, VERTEXATTRIB4NUSVARB, (AND GLuint index, const GLushort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4NusvARB, glVertexAttrib4NusvARB, VERTEXATTRIB4NUSVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4BV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4bv, glVertexAttrib4bv, VERTEXATTRIB4BV, (AND GLuint index, const GLbyte *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4bv, glVertexAttrib4bv, VERTEXATTRIB4BV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4BVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4bvARB, glVertexAttrib4bvARB, VERTEXATTRIB4BVARB, (AND GLuint index, const GLbyte *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4bvARB, glVertexAttrib4bvARB, VERTEXATTRIB4BVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4d, glVertexAttrib4d, VERTEXATTRIB4D, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4d, glVertexAttrib4d, VERTEXATTRIB4D, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4dARB, glVertexAttrib4dARB, VERTEXATTRIB4DARB, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4dARB, glVertexAttrib4dARB, VERTEXATTRIB4DARB, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4DNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4dNV, glVertexAttrib4dNV, VERTEXATTRIB4DNV, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4dNV, glVertexAttrib4dNV, VERTEXATTRIB4DNV, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4dv, glVertexAttrib4dv, VERTEXATTRIB4DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4dv, glVertexAttrib4dv, VERTEXATTRIB4DV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4DVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4dvARB, glVertexAttrib4dvARB, VERTEXATTRIB4DVARB, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4dvARB, glVertexAttrib4dvARB, VERTEXATTRIB4DVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4DVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4dvNV, glVertexAttrib4dvNV, VERTEXATTRIB4DVNV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4dvNV, glVertexAttrib4dvNV, VERTEXATTRIB4DVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4f, glVertexAttrib4f, VERTEXATTRIB4F, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4f, glVertexAttrib4f, VERTEXATTRIB4F, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4fARB, glVertexAttrib4fARB, VERTEXATTRIB4FARB, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4fARB, glVertexAttrib4fARB, VERTEXATTRIB4FARB, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4FNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4fNV, glVertexAttrib4fNV, VERTEXATTRIB4FNV, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4fNV, glVertexAttrib4fNV, VERTEXATTRIB4FNV, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4fv, glVertexAttrib4fv, VERTEXATTRIB4FV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4fv, glVertexAttrib4fv, VERTEXATTRIB4FV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4fvARB, glVertexAttrib4fvARB, VERTEXATTRIB4FVARB, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4fvARB, glVertexAttrib4fvARB, VERTEXATTRIB4FVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4FVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4fvNV, glVertexAttrib4fvNV, VERTEXATTRIB4FVNV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4fvNV, glVertexAttrib4fvNV, VERTEXATTRIB4FVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4HNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4hNV, glVertexAttrib4hNV, VERTEXATTRIB4HNV, (AND GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4hNV, glVertexAttrib4hNV, VERTEXATTRIB4HNV, (AND GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4hvNV, glVertexAttrib4hvNV, VERTEXATTRIB4HVNV, (AND GLuint index, const GLhalfNV *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4hvNV, glVertexAttrib4hvNV, VERTEXATTRIB4HVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4iv, glVertexAttrib4iv, VERTEXATTRIB4IV, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4iv, glVertexAttrib4iv, VERTEXATTRIB4IV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4IVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4ivARB, glVertexAttrib4ivARB, VERTEXATTRIB4IVARB, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4ivARB, glVertexAttrib4ivARB, VERTEXATTRIB4IVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4s, glVertexAttrib4s, VERTEXATTRIB4S, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4s, glVertexAttrib4s, VERTEXATTRIB4S, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4SARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4sARB, glVertexAttrib4sARB, VERTEXATTRIB4SARB, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4sARB, glVertexAttrib4sARB, VERTEXATTRIB4SARB, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4SNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4sNV, glVertexAttrib4sNV, VERTEXATTRIB4SNV, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4sNV, glVertexAttrib4sNV, VERTEXATTRIB4SNV, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4sv, glVertexAttrib4sv, VERTEXATTRIB4SV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4sv, glVertexAttrib4sv, VERTEXATTRIB4SV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4SVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4svARB, glVertexAttrib4svARB, VERTEXATTRIB4SVARB, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4svARB, glVertexAttrib4svARB, VERTEXATTRIB4SVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4SVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4svNV, glVertexAttrib4svNV, VERTEXATTRIB4SVNV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4svNV, glVertexAttrib4svNV, VERTEXATTRIB4SVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4UBNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4ubNV, glVertexAttrib4ubNV, VERTEXATTRIB4UBNV, (AND GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4ubNV, glVertexAttrib4ubNV, VERTEXATTRIB4UBNV, (AND GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4UBV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4ubv, glVertexAttrib4ubv, VERTEXATTRIB4UBV, (AND GLuint index, const GLubyte *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4ubv, glVertexAttrib4ubv, VERTEXATTRIB4UBV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4UBVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4ubvARB, glVertexAttrib4ubvARB, VERTEXATTRIB4UBVARB, (AND GLuint index, const GLubyte *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4ubvARB, glVertexAttrib4ubvARB, VERTEXATTRIB4UBVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4UBVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4ubvNV, glVertexAttrib4ubvNV, VERTEXATTRIB4UBVNV, (AND GLuint index, const GLubyte *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4ubvNV, glVertexAttrib4ubvNV, VERTEXATTRIB4UBVNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4uiv, glVertexAttrib4uiv, VERTEXATTRIB4UIV, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4uiv, glVertexAttrib4uiv, VERTEXATTRIB4UIV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4UIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4uivARB, glVertexAttrib4uivARB, VERTEXATTRIB4UIVARB, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4uivARB, glVertexAttrib4uivARB, VERTEXATTRIB4UIVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4USV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4usv, glVertexAttrib4usv, VERTEXATTRIB4USV, (AND GLuint index, const GLushort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4usv, glVertexAttrib4usv, VERTEXATTRIB4USV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIB4USVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttrib4usvARB, glVertexAttrib4usvARB, VERTEXATTRIB4USVARB, (AND GLuint index, const GLushort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttrib4usvARB, glVertexAttrib4usvARB, VERTEXATTRIB4USVARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBARRAYOBJECTATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribArrayObjectATI, glVertexAttribArrayObjectATI, VERTEXATTRIBARRAYOBJECTATI, (AND GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLuint buffer, GLuint offset), (index, size, type, normalized, stride, buffer, offset), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribArrayObjectATI, glVertexAttribArrayObjectATI, VERTEXATTRIBARRAYOBJECTATI, (AND GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLuint buffer, GLuint offset), (index, size, type, normalized, stride, buffer, offset), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBBINDING #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribBinding, glVertexAttribBinding, VERTEXATTRIBBINDING, (AND GLuint attribindex, GLuint bindingindex), (attribindex, bindingindex), &attribindex, GL_void_return) GL_PROCM(void, gl, VertexAttribBinding, glVertexAttribBinding, VERTEXATTRIBBINDING, (AND GLuint attribindex, GLuint bindingindex), (attribindex, bindingindex), &attribindex, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBDIVISOR #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribDivisor, glVertexAttribDivisor, VERTEXATTRIBDIVISOR, (AND GLuint index, GLuint divisor), (index, divisor), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribDivisor, glVertexAttribDivisor, VERTEXATTRIBDIVISOR, (AND GLuint index, GLuint divisor), (index, divisor), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBDIVISORARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribDivisorARB, glVertexAttribDivisorARB, VERTEXATTRIBDIVISORARB, (AND GLuint index, GLuint divisor), (index, divisor), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribDivisorARB, glVertexAttribDivisorARB, VERTEXATTRIBDIVISORARB, (AND GLuint index, GLuint divisor), (index, divisor), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBFORMAT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribFormat, glVertexAttribFormat, VERTEXATTRIBFORMAT, (AND GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset), (attribindex, size, type, normalized, relativeoffset), &attribindex, GL_void_return) GL_PROCM(void, gl, VertexAttribFormat, glVertexAttribFormat, VERTEXATTRIBFORMAT, (AND GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset), (attribindex, size, type, normalized, relativeoffset), &attribindex, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBFORMATNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribFormatNV, glVertexAttribFormatNV, VERTEXATTRIBFORMATNV, (AND GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride), (index, size, type, normalized, stride), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribFormatNV, glVertexAttribFormatNV, VERTEXATTRIBFORMATNV, (AND GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride), (index, size, type, normalized, stride), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI1I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI1i, glVertexAttribI1i, VERTEXATTRIBI1I, (AND GLuint index, GLint x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI1i, glVertexAttribI1i, VERTEXATTRIBI1I, (AND GLuint index, GLint x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI1IEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI1iEXT, glVertexAttribI1iEXT, VERTEXATTRIBI1IEXT, (AND GLuint index, GLint x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI1iEXT, glVertexAttribI1iEXT, VERTEXATTRIBI1IEXT, (AND GLuint index, GLint x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI1IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI1iv, glVertexAttribI1iv, VERTEXATTRIBI1IV, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI1iv, glVertexAttribI1iv, VERTEXATTRIBI1IV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI1IVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI1ivEXT, glVertexAttribI1ivEXT, VERTEXATTRIBI1IVEXT, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI1ivEXT, glVertexAttribI1ivEXT, VERTEXATTRIBI1IVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI1UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI1ui, glVertexAttribI1ui, VERTEXATTRIBI1UI, (AND GLuint index, GLuint x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI1ui, glVertexAttribI1ui, VERTEXATTRIBI1UI, (AND GLuint index, GLuint x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI1UIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI1uiEXT, glVertexAttribI1uiEXT, VERTEXATTRIBI1UIEXT, (AND GLuint index, GLuint x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI1uiEXT, glVertexAttribI1uiEXT, VERTEXATTRIBI1UIEXT, (AND GLuint index, GLuint x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI1UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI1uiv, glVertexAttribI1uiv, VERTEXATTRIBI1UIV, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI1uiv, glVertexAttribI1uiv, VERTEXATTRIBI1UIV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI1UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI1uivEXT, glVertexAttribI1uivEXT, VERTEXATTRIBI1UIVEXT, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI1uivEXT, glVertexAttribI1uivEXT, VERTEXATTRIBI1UIVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI2I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI2i, glVertexAttribI2i, VERTEXATTRIBI2I, (AND GLuint index, GLint x, GLint y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI2i, glVertexAttribI2i, VERTEXATTRIBI2I, (AND GLuint index, GLint x, GLint y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI2IEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI2iEXT, glVertexAttribI2iEXT, VERTEXATTRIBI2IEXT, (AND GLuint index, GLint x, GLint y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI2iEXT, glVertexAttribI2iEXT, VERTEXATTRIBI2IEXT, (AND GLuint index, GLint x, GLint y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI2IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI2iv, glVertexAttribI2iv, VERTEXATTRIBI2IV, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI2iv, glVertexAttribI2iv, VERTEXATTRIBI2IV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI2IVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI2ivEXT, glVertexAttribI2ivEXT, VERTEXATTRIBI2IVEXT, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI2ivEXT, glVertexAttribI2ivEXT, VERTEXATTRIBI2IVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI2UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI2ui, glVertexAttribI2ui, VERTEXATTRIBI2UI, (AND GLuint index, GLuint x, GLuint y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI2ui, glVertexAttribI2ui, VERTEXATTRIBI2UI, (AND GLuint index, GLuint x, GLuint y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI2UIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI2uiEXT, glVertexAttribI2uiEXT, VERTEXATTRIBI2UIEXT, (AND GLuint index, GLuint x, GLuint y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI2uiEXT, glVertexAttribI2uiEXT, VERTEXATTRIBI2UIEXT, (AND GLuint index, GLuint x, GLuint y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI2UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI2uiv, glVertexAttribI2uiv, VERTEXATTRIBI2UIV, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI2uiv, glVertexAttribI2uiv, VERTEXATTRIBI2UIV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI2UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI2uivEXT, glVertexAttribI2uivEXT, VERTEXATTRIBI2UIVEXT, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI2uivEXT, glVertexAttribI2uivEXT, VERTEXATTRIBI2UIVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI3I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI3i, glVertexAttribI3i, VERTEXATTRIBI3I, (AND GLuint index, GLint x, GLint y, GLint z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI3i, glVertexAttribI3i, VERTEXATTRIBI3I, (AND GLuint index, GLint x, GLint y, GLint z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI3IEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI3iEXT, glVertexAttribI3iEXT, VERTEXATTRIBI3IEXT, (AND GLuint index, GLint x, GLint y, GLint z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI3iEXT, glVertexAttribI3iEXT, VERTEXATTRIBI3IEXT, (AND GLuint index, GLint x, GLint y, GLint z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI3IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI3iv, glVertexAttribI3iv, VERTEXATTRIBI3IV, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI3iv, glVertexAttribI3iv, VERTEXATTRIBI3IV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI3IVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI3ivEXT, glVertexAttribI3ivEXT, VERTEXATTRIBI3IVEXT, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI3ivEXT, glVertexAttribI3ivEXT, VERTEXATTRIBI3IVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI3UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI3ui, glVertexAttribI3ui, VERTEXATTRIBI3UI, (AND GLuint index, GLuint x, GLuint y, GLuint z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI3ui, glVertexAttribI3ui, VERTEXATTRIBI3UI, (AND GLuint index, GLuint x, GLuint y, GLuint z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI3UIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI3uiEXT, glVertexAttribI3uiEXT, VERTEXATTRIBI3UIEXT, (AND GLuint index, GLuint x, GLuint y, GLuint z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI3uiEXT, glVertexAttribI3uiEXT, VERTEXATTRIBI3UIEXT, (AND GLuint index, GLuint x, GLuint y, GLuint z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI3UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI3uiv, glVertexAttribI3uiv, VERTEXATTRIBI3UIV, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI3uiv, glVertexAttribI3uiv, VERTEXATTRIBI3UIV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI3UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI3uivEXT, glVertexAttribI3uivEXT, VERTEXATTRIBI3UIVEXT, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI3uivEXT, glVertexAttribI3uivEXT, VERTEXATTRIBI3UIVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4BV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4bv, glVertexAttribI4bv, VERTEXATTRIBI4BV, (AND GLuint index, const GLbyte *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4bv, glVertexAttribI4bv, VERTEXATTRIBI4BV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4BVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4bvEXT, glVertexAttribI4bvEXT, VERTEXATTRIBI4BVEXT, (AND GLuint index, const GLbyte *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4bvEXT, glVertexAttribI4bvEXT, VERTEXATTRIBI4BVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4i, glVertexAttribI4i, VERTEXATTRIBI4I, (AND GLuint index, GLint x, GLint y, GLint z, GLint w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4i, glVertexAttribI4i, VERTEXATTRIBI4I, (AND GLuint index, GLint x, GLint y, GLint z, GLint w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4IEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4iEXT, glVertexAttribI4iEXT, VERTEXATTRIBI4IEXT, (AND GLuint index, GLint x, GLint y, GLint z, GLint w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4iEXT, glVertexAttribI4iEXT, VERTEXATTRIBI4IEXT, (AND GLuint index, GLint x, GLint y, GLint z, GLint w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4iv, glVertexAttribI4iv, VERTEXATTRIBI4IV, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4iv, glVertexAttribI4iv, VERTEXATTRIBI4IV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4IVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4ivEXT, glVertexAttribI4ivEXT, VERTEXATTRIBI4IVEXT, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4ivEXT, glVertexAttribI4ivEXT, VERTEXATTRIBI4IVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4sv, glVertexAttribI4sv, VERTEXATTRIBI4SV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4sv, glVertexAttribI4sv, VERTEXATTRIBI4SV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4SVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4svEXT, glVertexAttribI4svEXT, VERTEXATTRIBI4SVEXT, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4svEXT, glVertexAttribI4svEXT, VERTEXATTRIBI4SVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4UBV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4ubv, glVertexAttribI4ubv, VERTEXATTRIBI4UBV, (AND GLuint index, const GLubyte *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4ubv, glVertexAttribI4ubv, VERTEXATTRIBI4UBV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4UBVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4ubvEXT, glVertexAttribI4ubvEXT, VERTEXATTRIBI4UBVEXT, (AND GLuint index, const GLubyte *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4ubvEXT, glVertexAttribI4ubvEXT, VERTEXATTRIBI4UBVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4ui, glVertexAttribI4ui, VERTEXATTRIBI4UI, (AND GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4ui, glVertexAttribI4ui, VERTEXATTRIBI4UI, (AND GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4UIEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4uiEXT, glVertexAttribI4uiEXT, VERTEXATTRIBI4UIEXT, (AND GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4uiEXT, glVertexAttribI4uiEXT, VERTEXATTRIBI4UIEXT, (AND GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4uiv, glVertexAttribI4uiv, VERTEXATTRIBI4UIV, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4uiv, glVertexAttribI4uiv, VERTEXATTRIBI4UIV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4UIVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4uivEXT, glVertexAttribI4uivEXT, VERTEXATTRIBI4UIVEXT, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4uivEXT, glVertexAttribI4uivEXT, VERTEXATTRIBI4UIVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4USV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4usv, glVertexAttribI4usv, VERTEXATTRIBI4USV, (AND GLuint index, const GLushort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4usv, glVertexAttribI4usv, VERTEXATTRIBI4USV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBI4USVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribI4usvEXT, glVertexAttribI4usvEXT, VERTEXATTRIBI4USVEXT, (AND GLuint index, const GLushort *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribI4usvEXT, glVertexAttribI4usvEXT, VERTEXATTRIBI4USVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBIFORMAT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribIFormat, glVertexAttribIFormat, VERTEXATTRIBIFORMAT, (AND GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (attribindex, size, type, relativeoffset), &attribindex, GL_void_return) GL_PROCM(void, gl, VertexAttribIFormat, glVertexAttribIFormat, VERTEXATTRIBIFORMAT, (AND GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (attribindex, size, type, relativeoffset), &attribindex, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBIFORMATNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribIFormatNV, glVertexAttribIFormatNV, VERTEXATTRIBIFORMATNV, (AND GLuint index, GLint size, GLenum type, GLsizei stride), (index, size, type, stride), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribIFormatNV, glVertexAttribIFormatNV, VERTEXATTRIBIFORMATNV, (AND GLuint index, GLint size, GLenum type, GLsizei stride), (index, size, type, stride), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBIPOINTER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribIPointer, glVertexAttribIPointer, VERTEXATTRIBIPOINTER, (AND GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer), (index, size, type, stride, pointer), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribIPointer, glVertexAttribIPointer, VERTEXATTRIBIPOINTER, (AND GLuint index, GLint size, GLenum type, GLsizei stride, memptr pointer), (index, size, type, stride, pointer), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBIPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribIPointerEXT, glVertexAttribIPointerEXT, VERTEXATTRIBIPOINTEREXT, (AND GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer), (index, size, type, stride, pointer), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribIPointerEXT, glVertexAttribIPointerEXT, VERTEXATTRIBIPOINTEREXT, (AND GLuint index, GLint size, GLenum type, GLsizei stride, memptr pointer), (index, size, type, stride, pointer), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL1D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL1d, glVertexAttribL1d, VERTEXATTRIBL1D, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL1d, glVertexAttribL1d, VERTEXATTRIBL1D, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL1DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL1dEXT, glVertexAttribL1dEXT, VERTEXATTRIBL1DEXT, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL1dEXT, glVertexAttribL1dEXT, VERTEXATTRIBL1DEXT, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL1DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL1dv, glVertexAttribL1dv, VERTEXATTRIBL1DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL1dv, glVertexAttribL1dv, VERTEXATTRIBL1DV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL1DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL1dvEXT, glVertexAttribL1dvEXT, VERTEXATTRIBL1DVEXT, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL1dvEXT, glVertexAttribL1dvEXT, VERTEXATTRIBL1DVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL1I64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL1i64NV, glVertexAttribL1i64NV, VERTEXATTRIBL1I64NV, (AND GLuint index, GLint64EXT x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL1i64NV, glVertexAttribL1i64NV, VERTEXATTRIBL1I64NV, (AND GLuint index, GLint64EXT x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL1I64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL1i64vNV, glVertexAttribL1i64vNV, VERTEXATTRIBL1I64VNV, (AND GLuint index, const GLint64EXT *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL1i64vNV, glVertexAttribL1i64vNV, VERTEXATTRIBL1I64VNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL1UI64ARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL1ui64ARB, glVertexAttribL1ui64ARB, VERTEXATTRIBL1UI64ARB, (AND GLuint index, GLuint64EXT x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL1ui64ARB, glVertexAttribL1ui64ARB, VERTEXATTRIBL1UI64ARB, (AND GLuint index, GLuint64EXT x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL1UI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL1ui64NV, glVertexAttribL1ui64NV, VERTEXATTRIBL1UI64NV, (AND GLuint index, GLuint64EXT x), (index, x), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL1ui64NV, glVertexAttribL1ui64NV, VERTEXATTRIBL1UI64NV, (AND GLuint index, GLuint64EXT x), (index, x), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL1UI64VARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL1ui64vARB, glVertexAttribL1ui64vARB, VERTEXATTRIBL1UI64VARB, (AND GLuint index, const GLuint64EXT *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL1ui64vARB, glVertexAttribL1ui64vARB, VERTEXATTRIBL1UI64VARB, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL1UI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL1ui64vNV, glVertexAttribL1ui64vNV, VERTEXATTRIBL1UI64VNV, (AND GLuint index, const GLuint64EXT *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL1ui64vNV, glVertexAttribL1ui64vNV, VERTEXATTRIBL1UI64VNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL2d, glVertexAttribL2d, VERTEXATTRIBL2D, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL2d, glVertexAttribL2d, VERTEXATTRIBL2D, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL2DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL2dEXT, glVertexAttribL2dEXT, VERTEXATTRIBL2DEXT, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL2dEXT, glVertexAttribL2dEXT, VERTEXATTRIBL2DEXT, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL2dv, glVertexAttribL2dv, VERTEXATTRIBL2DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL2dv, glVertexAttribL2dv, VERTEXATTRIBL2DV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL2DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL2dvEXT, glVertexAttribL2dvEXT, VERTEXATTRIBL2DVEXT, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL2dvEXT, glVertexAttribL2dvEXT, VERTEXATTRIBL2DVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL2I64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL2i64NV, glVertexAttribL2i64NV, VERTEXATTRIBL2I64NV, (AND GLuint index, GLint64EXT x, GLint64EXT y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL2i64NV, glVertexAttribL2i64NV, VERTEXATTRIBL2I64NV, (AND GLuint index, GLint64EXT x, GLint64EXT y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL2I64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL2i64vNV, glVertexAttribL2i64vNV, VERTEXATTRIBL2I64VNV, (AND GLuint index, const GLint64EXT *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL2i64vNV, glVertexAttribL2i64vNV, VERTEXATTRIBL2I64VNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL2UI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL2ui64NV, glVertexAttribL2ui64NV, VERTEXATTRIBL2UI64NV, (AND GLuint index, GLuint64EXT x, GLuint64EXT y), (index, x, y), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL2ui64NV, glVertexAttribL2ui64NV, VERTEXATTRIBL2UI64NV, (AND GLuint index, GLuint64EXT x, GLuint64EXT y), (index, x, y), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL2UI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL2ui64vNV, glVertexAttribL2ui64vNV, VERTEXATTRIBL2UI64VNV, (AND GLuint index, const GLuint64EXT *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL2ui64vNV, glVertexAttribL2ui64vNV, VERTEXATTRIBL2UI64VNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL3d, glVertexAttribL3d, VERTEXATTRIBL3D, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL3d, glVertexAttribL3d, VERTEXATTRIBL3D, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL3DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL3dEXT, glVertexAttribL3dEXT, VERTEXATTRIBL3DEXT, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL3dEXT, glVertexAttribL3dEXT, VERTEXATTRIBL3DEXT, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL3dv, glVertexAttribL3dv, VERTEXATTRIBL3DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL3dv, glVertexAttribL3dv, VERTEXATTRIBL3DV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL3DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL3dvEXT, glVertexAttribL3dvEXT, VERTEXATTRIBL3DVEXT, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL3dvEXT, glVertexAttribL3dvEXT, VERTEXATTRIBL3DVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL3I64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL3i64NV, glVertexAttribL3i64NV, VERTEXATTRIBL3I64NV, (AND GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL3i64NV, glVertexAttribL3i64NV, VERTEXATTRIBL3I64NV, (AND GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL3I64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL3i64vNV, glVertexAttribL3i64vNV, VERTEXATTRIBL3I64VNV, (AND GLuint index, const GLint64EXT *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL3i64vNV, glVertexAttribL3i64vNV, VERTEXATTRIBL3I64VNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL3UI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL3ui64NV, glVertexAttribL3ui64NV, VERTEXATTRIBL3UI64NV, (AND GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z), (index, x, y, z), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL3ui64NV, glVertexAttribL3ui64NV, VERTEXATTRIBL3UI64NV, (AND GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z), (index, x, y, z), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL3UI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL3ui64vNV, glVertexAttribL3ui64vNV, VERTEXATTRIBL3UI64VNV, (AND GLuint index, const GLuint64EXT *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL3ui64vNV, glVertexAttribL3ui64vNV, VERTEXATTRIBL3UI64VNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL4D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL4d, glVertexAttribL4d, VERTEXATTRIBL4D, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL4d, glVertexAttribL4d, VERTEXATTRIBL4D, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL4DEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL4dEXT, glVertexAttribL4dEXT, VERTEXATTRIBL4DEXT, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL4dEXT, glVertexAttribL4dEXT, VERTEXATTRIBL4DEXT, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL4DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL4dv, glVertexAttribL4dv, VERTEXATTRIBL4DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL4dv, glVertexAttribL4dv, VERTEXATTRIBL4DV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL4DVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL4dvEXT, glVertexAttribL4dvEXT, VERTEXATTRIBL4DVEXT, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL4dvEXT, glVertexAttribL4dvEXT, VERTEXATTRIBL4DVEXT, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL4I64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL4i64NV, glVertexAttribL4i64NV, VERTEXATTRIBL4I64NV, (AND GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL4i64NV, glVertexAttribL4i64NV, VERTEXATTRIBL4I64NV, (AND GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL4I64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL4i64vNV, glVertexAttribL4i64vNV, VERTEXATTRIBL4I64VNV, (AND GLuint index, const GLint64EXT *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL4i64vNV, glVertexAttribL4i64vNV, VERTEXATTRIBL4I64VNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL4UI64NV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL4ui64NV, glVertexAttribL4ui64NV, VERTEXATTRIBL4UI64NV, (AND GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w), (index, x, y, z, w), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL4ui64NV, glVertexAttribL4ui64NV, VERTEXATTRIBL4UI64NV, (AND GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w), (index, x, y, z, w), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBL4UI64VNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribL4ui64vNV, glVertexAttribL4ui64vNV, VERTEXATTRIBL4UI64VNV, (AND GLuint index, const GLuint64EXT *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribL4ui64vNV, glVertexAttribL4ui64vNV, VERTEXATTRIBL4UI64VNV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBLFORMAT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribLFormat, glVertexAttribLFormat, VERTEXATTRIBLFORMAT, (AND GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (attribindex, size, type, relativeoffset), &attribindex, GL_void_return) GL_PROCM(void, gl, VertexAttribLFormat, glVertexAttribLFormat, VERTEXATTRIBLFORMAT, (AND GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (attribindex, size, type, relativeoffset), &attribindex, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBLFORMATNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribLFormatNV, glVertexAttribLFormatNV, VERTEXATTRIBLFORMATNV, (AND GLuint index, GLint size, GLenum type, GLsizei stride), (index, size, type, stride), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribLFormatNV, glVertexAttribLFormatNV, VERTEXATTRIBLFORMATNV, (AND GLuint index, GLint size, GLenum type, GLsizei stride), (index, size, type, stride), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBLPOINTER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribLPointer, glVertexAttribLPointer, VERTEXATTRIBLPOINTER, (AND GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer), (index, size, type, stride, pointer), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribLPointer, glVertexAttribLPointer, VERTEXATTRIBLPOINTER, (AND GLuint index, GLint size, GLenum type, GLsizei stride, memptr pointer), (index, size, type, stride, pointer), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBLPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribLPointerEXT, glVertexAttribLPointerEXT, VERTEXATTRIBLPOINTEREXT, (AND GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer), (index, size, type, stride, pointer), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribLPointerEXT, glVertexAttribLPointerEXT, VERTEXATTRIBLPOINTEREXT, (AND GLuint index, GLint size, GLenum type, GLsizei stride, memptr pointer), (index, size, type, stride, pointer), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBP1UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribP1ui, glVertexAttribP1ui, VERTEXATTRIBP1UI, (AND GLuint index, GLenum type, GLboolean32 normalized, GLuint value), (index, type, normalized, value), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribP1ui, glVertexAttribP1ui, VERTEXATTRIBP1UI, (AND GLuint index, GLenum type, GLboolean32 normalized, GLuint value), (index, type, normalized, value), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBP1UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribP1uiv, glVertexAttribP1uiv, VERTEXATTRIBP1UIV, (AND GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value), (index, type, normalized, value), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribP1uiv, glVertexAttribP1uiv, VERTEXATTRIBP1UIV, (AND GLuint index, GLenum type, GLboolean32 normalized, memptr value), (index, type, normalized, value), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBP2UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribP2ui, glVertexAttribP2ui, VERTEXATTRIBP2UI, (AND GLuint index, GLenum type, GLboolean32 normalized, GLuint value), (index, type, normalized, value), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribP2ui, glVertexAttribP2ui, VERTEXATTRIBP2UI, (AND GLuint index, GLenum type, GLboolean32 normalized, GLuint value), (index, type, normalized, value), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBP2UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribP2uiv, glVertexAttribP2uiv, VERTEXATTRIBP2UIV, (AND GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value), (index, type, normalized, value), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribP2uiv, glVertexAttribP2uiv, VERTEXATTRIBP2UIV, (AND GLuint index, GLenum type, GLboolean32 normalized, memptr value), (index, type, normalized, value), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBP3UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribP3ui, glVertexAttribP3ui, VERTEXATTRIBP3UI, (AND GLuint index, GLenum type, GLboolean32 normalized, GLuint value), (index, type, normalized, value), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribP3ui, glVertexAttribP3ui, VERTEXATTRIBP3UI, (AND GLuint index, GLenum type, GLboolean32 normalized, GLuint value), (index, type, normalized, value), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBP3UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribP3uiv, glVertexAttribP3uiv, VERTEXATTRIBP3UIV, (AND GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value), (index, type, normalized, value), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribP3uiv, glVertexAttribP3uiv, VERTEXATTRIBP3UIV, (AND GLuint index, GLenum type, GLboolean32 normalized, memptr value), (index, type, normalized, value), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBP4UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribP4ui, glVertexAttribP4ui, VERTEXATTRIBP4UI, (AND GLuint index, GLenum type, GLboolean32 normalized, GLuint value), (index, type, normalized, value), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribP4ui, glVertexAttribP4ui, VERTEXATTRIBP4UI, (AND GLuint index, GLenum type, GLboolean32 normalized, GLuint value), (index, type, normalized, value), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBP4UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribP4uiv, glVertexAttribP4uiv, VERTEXATTRIBP4UIV, (AND GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value), (index, type, normalized, value), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribP4uiv, glVertexAttribP4uiv, VERTEXATTRIBP4UIV, (AND GLuint index, GLenum type, GLboolean32 normalized, memptr value), (index, type, normalized, value), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBPARAMETERIAMD #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribParameteriAMD, glVertexAttribParameteriAMD, VERTEXATTRIBPARAMETERIAMD, (AND GLuint index, GLenum pname, GLint param), (index, pname, param), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribParameteriAMD, glVertexAttribParameteriAMD, VERTEXATTRIBPARAMETERIAMD, (AND GLuint index, GLenum pname, GLint param), (index, pname, param), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBPOINTER #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribPointer, glVertexAttribPointer, VERTEXATTRIBPOINTER, (AND GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer), (index, size, type, normalized, stride, pointer), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribPointer, glVertexAttribPointer, VERTEXATTRIBPOINTER, (AND GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, memptr pointer), (index, size, type, normalized, stride, pointer), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBPOINTERARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribPointerARB, glVertexAttribPointerARB, VERTEXATTRIBPOINTERARB, (AND GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer), (index, size, type, normalized, stride, pointer), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribPointerARB, glVertexAttribPointerARB, VERTEXATTRIBPOINTERARB, (AND GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, memptr pointer), (index, size, type, normalized, stride, pointer), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBPOINTERNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribPointerNV, glVertexAttribPointerNV, VERTEXATTRIBPOINTERNV, (AND GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer), (index, fsize, type, stride, pointer), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribPointerNV, glVertexAttribPointerNV, VERTEXATTRIBPOINTERNV, (AND GLuint index, GLint fsize, GLenum type, GLsizei stride, memptr pointer), (index, fsize, type, stride, pointer), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS1DVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs1dvNV, glVertexAttribs1dvNV, VERTEXATTRIBS1DVNV, (AND GLuint index, GLsizei count, const GLdouble *v), (index, count, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs1dvNV, glVertexAttribs1dvNV, VERTEXATTRIBS1DVNV, (AND GLuint index, GLsizei count, memptr v), (index, count, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS1FVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs1fvNV, glVertexAttribs1fvNV, VERTEXATTRIBS1FVNV, (AND GLuint index, GLsizei count, const GLfloat *v), (index, count, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs1fvNV, glVertexAttribs1fvNV, VERTEXATTRIBS1FVNV, (AND GLuint index, GLsizei count, memptr v), (index, count, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS1HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs1hvNV, glVertexAttribs1hvNV, VERTEXATTRIBS1HVNV, (AND GLuint index, GLsizei n, const GLhalfNV *v), (index, n, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs1hvNV, glVertexAttribs1hvNV, VERTEXATTRIBS1HVNV, (AND GLuint index, GLsizei n, memptr v), (index, n, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS1SVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs1svNV, glVertexAttribs1svNV, VERTEXATTRIBS1SVNV, (AND GLuint index, GLsizei count, const GLshort *v), (index, count, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs1svNV, glVertexAttribs1svNV, VERTEXATTRIBS1SVNV, (AND GLuint index, GLsizei count, memptr v), (index, count, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS2DVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs2dvNV, glVertexAttribs2dvNV, VERTEXATTRIBS2DVNV, (AND GLuint index, GLsizei count, const GLdouble *v), (index, count, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs2dvNV, glVertexAttribs2dvNV, VERTEXATTRIBS2DVNV, (AND GLuint index, GLsizei count, memptr v), (index, count, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS2FVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs2fvNV, glVertexAttribs2fvNV, VERTEXATTRIBS2FVNV, (AND GLuint index, GLsizei count, const GLfloat *v), (index, count, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs2fvNV, glVertexAttribs2fvNV, VERTEXATTRIBS2FVNV, (AND GLuint index, GLsizei count, memptr v), (index, count, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS2HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs2hvNV, glVertexAttribs2hvNV, VERTEXATTRIBS2HVNV, (AND GLuint index, GLsizei n, const GLhalfNV *v), (index, n, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs2hvNV, glVertexAttribs2hvNV, VERTEXATTRIBS2HVNV, (AND GLuint index, GLsizei n, memptr v), (index, n, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS2SVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs2svNV, glVertexAttribs2svNV, VERTEXATTRIBS2SVNV, (AND GLuint index, GLsizei count, const GLshort *v), (index, count, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs2svNV, glVertexAttribs2svNV, VERTEXATTRIBS2SVNV, (AND GLuint index, GLsizei count, memptr v), (index, count, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS3DVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs3dvNV, glVertexAttribs3dvNV, VERTEXATTRIBS3DVNV, (AND GLuint index, GLsizei count, const GLdouble *v), (index, count, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs3dvNV, glVertexAttribs3dvNV, VERTEXATTRIBS3DVNV, (AND GLuint index, GLsizei count, memptr v), (index, count, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS3FVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs3fvNV, glVertexAttribs3fvNV, VERTEXATTRIBS3FVNV, (AND GLuint index, GLsizei count, const GLfloat *v), (index, count, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs3fvNV, glVertexAttribs3fvNV, VERTEXATTRIBS3FVNV, (AND GLuint index, GLsizei count, memptr v), (index, count, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS3HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs3hvNV, glVertexAttribs3hvNV, VERTEXATTRIBS3HVNV, (AND GLuint index, GLsizei n, const GLhalfNV *v), (index, n, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs3hvNV, glVertexAttribs3hvNV, VERTEXATTRIBS3HVNV, (AND GLuint index, GLsizei n, memptr v), (index, n, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS3SVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs3svNV, glVertexAttribs3svNV, VERTEXATTRIBS3SVNV, (AND GLuint index, GLsizei count, const GLshort *v), (index, count, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs3svNV, glVertexAttribs3svNV, VERTEXATTRIBS3SVNV, (AND GLuint index, GLsizei count, memptr v), (index, count, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS4DVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs4dvNV, glVertexAttribs4dvNV, VERTEXATTRIBS4DVNV, (AND GLuint index, GLsizei count, const GLdouble *v), (index, count, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs4dvNV, glVertexAttribs4dvNV, VERTEXATTRIBS4DVNV, (AND GLuint index, GLsizei count, memptr v), (index, count, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS4FVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs4fvNV, glVertexAttribs4fvNV, VERTEXATTRIBS4FVNV, (AND GLuint index, GLsizei count, const GLfloat *v), (index, count, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs4fvNV, glVertexAttribs4fvNV, VERTEXATTRIBS4FVNV, (AND GLuint index, GLsizei count, memptr v), (index, count, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS4HVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs4hvNV, glVertexAttribs4hvNV, VERTEXATTRIBS4HVNV, (AND GLuint index, GLsizei n, const GLhalfNV *v), (index, n, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs4hvNV, glVertexAttribs4hvNV, VERTEXATTRIBS4HVNV, (AND GLuint index, GLsizei n, memptr v), (index, n, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS4SVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs4svNV, glVertexAttribs4svNV, VERTEXATTRIBS4SVNV, (AND GLuint index, GLsizei count, const GLshort *v), (index, count, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs4svNV, glVertexAttribs4svNV, VERTEXATTRIBS4SVNV, (AND GLuint index, GLsizei count, memptr v), (index, count, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXATTRIBS4UBVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexAttribs4ubvNV, glVertexAttribs4ubvNV, VERTEXATTRIBS4UBVNV, (AND GLuint index, GLsizei count, const GLubyte *v), (index, count, v), &index, GL_void_return) GL_PROCM(void, gl, VertexAttribs4ubvNV, glVertexAttribs4ubvNV, VERTEXATTRIBS4UBVNV, (AND GLuint index, GLsizei count, memptr v), (index, count, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVERTEXBINDINGDIVISOR #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexBindingDivisor, glVertexBindingDivisor, VERTEXBINDINGDIVISOR, (AND GLuint bindingindex, GLuint divisor), (bindingindex, divisor), &bindingindex, GL_void_return) GL_PROCM(void, gl, VertexBindingDivisor, glVertexBindingDivisor, VERTEXBINDINGDIVISOR, (AND GLuint bindingindex, GLuint divisor), (bindingindex, divisor), &bindingindex, GL_void_return) #endif #endif #ifndef NO_GLVERTEXBLENDARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexBlendARB, glVertexBlendARB, VERTEXBLENDARB, (AND GLint count), (count), &count, GL_void_return) GL_PROCM(void, gl, VertexBlendARB, glVertexBlendARB, VERTEXBLENDARB, (AND GLint count), (count), &count, GL_void_return) #endif #endif #ifndef NO_GLVERTEXBLENDENVFATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexBlendEnvfATI, glVertexBlendEnvfATI, VERTEXBLENDENVFATI, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, VertexBlendEnvfATI, glVertexBlendEnvfATI, VERTEXBLENDENVFATI, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLVERTEXBLENDENVIATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexBlendEnviATI, glVertexBlendEnviATI, VERTEXBLENDENVIATI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) GL_PROCM(void, gl, VertexBlendEnviATI, glVertexBlendEnviATI, VERTEXBLENDENVIATI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) #endif #endif #ifndef NO_GLVERTEXFORMATNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexFormatNV, glVertexFormatNV, VERTEXFORMATNV, (AND GLint size, GLenum type, GLsizei stride), (size, type, stride), &size, GL_void_return) GL_PROCM(void, gl, VertexFormatNV, glVertexFormatNV, VERTEXFORMATNV, (AND GLint size, GLenum type, GLsizei stride), (size, type, stride), &size, GL_void_return) #endif #endif #ifndef NO_GLVERTEXP2UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexP2ui, glVertexP2ui, VERTEXP2UI, (AND GLenum type, GLuint value), (type, value), &type, GL_void_return) GL_PROCM(void, gl, VertexP2ui, glVertexP2ui, VERTEXP2UI, (AND GLenum type, GLuint value), (type, value), &type, GL_void_return) #endif #endif #ifndef NO_GLVERTEXP2UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexP2uiv, glVertexP2uiv, VERTEXP2UIV, (AND GLenum type, const GLuint *value), (type, value), &type, GL_void_return) GL_PROCM(void, gl, VertexP2uiv, glVertexP2uiv, VERTEXP2UIV, (AND GLenum type, memptr value), (type, value), &type, GL_void_return) #endif #endif #ifndef NO_GLVERTEXP3UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexP3ui, glVertexP3ui, VERTEXP3UI, (AND GLenum type, GLuint value), (type, value), &type, GL_void_return) GL_PROCM(void, gl, VertexP3ui, glVertexP3ui, VERTEXP3UI, (AND GLenum type, GLuint value), (type, value), &type, GL_void_return) #endif #endif #ifndef NO_GLVERTEXP3UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexP3uiv, glVertexP3uiv, VERTEXP3UIV, (AND GLenum type, const GLuint *value), (type, value), &type, GL_void_return) GL_PROCM(void, gl, VertexP3uiv, glVertexP3uiv, VERTEXP3UIV, (AND GLenum type, memptr value), (type, value), &type, GL_void_return) #endif #endif #ifndef NO_GLVERTEXP4UI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexP4ui, glVertexP4ui, VERTEXP4UI, (AND GLenum type, GLuint value), (type, value), &type, GL_void_return) GL_PROCM(void, gl, VertexP4ui, glVertexP4ui, VERTEXP4UI, (AND GLenum type, GLuint value), (type, value), &type, GL_void_return) #endif #endif #ifndef NO_GLVERTEXP4UIV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexP4uiv, glVertexP4uiv, VERTEXP4UIV, (AND GLenum type, const GLuint *value), (type, value), &type, GL_void_return) GL_PROCM(void, gl, VertexP4uiv, glVertexP4uiv, VERTEXP4UIV, (AND GLenum type, memptr value), (type, value), &type, GL_void_return) #endif #endif #ifndef NO_GLVERTEXPOINTSIZEFAPPLE #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexPointSizefAPPLE, glVertexPointSizefAPPLE, VERTEXPOINTSIZEFAPPLE, (AND GLfloat size), (size), &size, GL_void_return) GL_PROCM(void, gl, VertexPointSizefAPPLE, glVertexPointSizefAPPLE, VERTEXPOINTSIZEFAPPLE, (AND GLfloat size), (size), &size, GL_void_return) #endif #endif #ifndef NO_GLVERTEXPOINTER GL_PROC(void, gl, VertexPointer, glVertexPointer, VERTEXPOINTER, (AND GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size, type, stride, pointer), &size, GL_void_return) GL_PROCM(void, gl, VertexPointer, glVertexPointer, VERTEXPOINTER, (AND GLint size, GLenum type, GLsizei stride, memptr pointer), (size, type, stride, pointer), &size, GL_void_return) #endif #ifndef NO_GLVERTEXPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexPointerEXT, glVertexPointerEXT, VERTEXPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer), (size, type, stride, count, pointer), &size, GL_void_return) GL_PROCM(void, gl, VertexPointerEXT, glVertexPointerEXT, VERTEXPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, GLsizei count, memptr pointer), (size, type, stride, count, pointer), &size, GL_void_return) #endif #endif #ifndef NO_GLVERTEXPOINTERLISTIBM #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexPointerListIBM, glVertexPointerListIBM, VERTEXPOINTERLISTIBM, (AND GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride), (size, type, stride, pointer, ptrstride), &size, GL_void_return) GL_PROCM(void, gl, VertexPointerListIBM, glVertexPointerListIBM, VERTEXPOINTERLISTIBM, (AND GLint size, GLenum type, GLint stride, memptr pointer, GLint ptrstride), (size, type, stride, pointer, ptrstride), &size, GL_void_return) #endif #endif #ifndef NO_GLVERTEXPOINTERVINTEL #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexPointervINTEL, glVertexPointervINTEL, VERTEXPOINTERVINTEL, (AND GLint size, GLenum type, const void * *pointer), (size, type, pointer), &size, GL_void_return) GL_PROCM(void, gl, VertexPointervINTEL, glVertexPointervINTEL, VERTEXPOINTERVINTEL, (AND GLint size, GLenum type, memptr pointer), (size, type, pointer), &size, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM1DATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream1dATI, glVertexStream1dATI, VERTEXSTREAM1DATI, (AND GLenum stream, GLdouble x), (stream, x), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream1dATI, glVertexStream1dATI, VERTEXSTREAM1DATI, (AND GLenum stream, GLdouble x), (stream, x), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM1DVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream1dvATI, glVertexStream1dvATI, VERTEXSTREAM1DVATI, (AND GLenum stream, const GLdouble *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream1dvATI, glVertexStream1dvATI, VERTEXSTREAM1DVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM1FATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream1fATI, glVertexStream1fATI, VERTEXSTREAM1FATI, (AND GLenum stream, GLfloat x), (stream, x), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream1fATI, glVertexStream1fATI, VERTEXSTREAM1FATI, (AND GLenum stream, GLfloat x), (stream, x), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM1FVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream1fvATI, glVertexStream1fvATI, VERTEXSTREAM1FVATI, (AND GLenum stream, const GLfloat *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream1fvATI, glVertexStream1fvATI, VERTEXSTREAM1FVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM1IATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream1iATI, glVertexStream1iATI, VERTEXSTREAM1IATI, (AND GLenum stream, GLint x), (stream, x), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream1iATI, glVertexStream1iATI, VERTEXSTREAM1IATI, (AND GLenum stream, GLint x), (stream, x), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM1IVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream1ivATI, glVertexStream1ivATI, VERTEXSTREAM1IVATI, (AND GLenum stream, const GLint *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream1ivATI, glVertexStream1ivATI, VERTEXSTREAM1IVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM1SATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream1sATI, glVertexStream1sATI, VERTEXSTREAM1SATI, (AND GLenum stream, GLshort32 x), (stream, x), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream1sATI, glVertexStream1sATI, VERTEXSTREAM1SATI, (AND GLenum stream, GLshort32 x), (stream, x), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM1SVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream1svATI, glVertexStream1svATI, VERTEXSTREAM1SVATI, (AND GLenum stream, const GLshort *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream1svATI, glVertexStream1svATI, VERTEXSTREAM1SVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM2DATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream2dATI, glVertexStream2dATI, VERTEXSTREAM2DATI, (AND GLenum stream, GLdouble x, GLdouble y), (stream, x, y), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream2dATI, glVertexStream2dATI, VERTEXSTREAM2DATI, (AND GLenum stream, GLdouble x, GLdouble y), (stream, x, y), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM2DVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream2dvATI, glVertexStream2dvATI, VERTEXSTREAM2DVATI, (AND GLenum stream, const GLdouble *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream2dvATI, glVertexStream2dvATI, VERTEXSTREAM2DVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM2FATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream2fATI, glVertexStream2fATI, VERTEXSTREAM2FATI, (AND GLenum stream, GLfloat x, GLfloat y), (stream, x, y), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream2fATI, glVertexStream2fATI, VERTEXSTREAM2FATI, (AND GLenum stream, GLfloat x, GLfloat y), (stream, x, y), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM2FVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream2fvATI, glVertexStream2fvATI, VERTEXSTREAM2FVATI, (AND GLenum stream, const GLfloat *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream2fvATI, glVertexStream2fvATI, VERTEXSTREAM2FVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM2IATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream2iATI, glVertexStream2iATI, VERTEXSTREAM2IATI, (AND GLenum stream, GLint x, GLint y), (stream, x, y), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream2iATI, glVertexStream2iATI, VERTEXSTREAM2IATI, (AND GLenum stream, GLint x, GLint y), (stream, x, y), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM2IVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream2ivATI, glVertexStream2ivATI, VERTEXSTREAM2IVATI, (AND GLenum stream, const GLint *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream2ivATI, glVertexStream2ivATI, VERTEXSTREAM2IVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM2SATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream2sATI, glVertexStream2sATI, VERTEXSTREAM2SATI, (AND GLenum stream, GLshort32 x, GLshort32 y), (stream, x, y), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream2sATI, glVertexStream2sATI, VERTEXSTREAM2SATI, (AND GLenum stream, GLshort32 x, GLshort32 y), (stream, x, y), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM2SVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream2svATI, glVertexStream2svATI, VERTEXSTREAM2SVATI, (AND GLenum stream, const GLshort *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream2svATI, glVertexStream2svATI, VERTEXSTREAM2SVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM3DATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream3dATI, glVertexStream3dATI, VERTEXSTREAM3DATI, (AND GLenum stream, GLdouble x, GLdouble y, GLdouble z), (stream, x, y, z), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream3dATI, glVertexStream3dATI, VERTEXSTREAM3DATI, (AND GLenum stream, GLdouble x, GLdouble y, GLdouble z), (stream, x, y, z), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM3DVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream3dvATI, glVertexStream3dvATI, VERTEXSTREAM3DVATI, (AND GLenum stream, const GLdouble *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream3dvATI, glVertexStream3dvATI, VERTEXSTREAM3DVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM3FATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream3fATI, glVertexStream3fATI, VERTEXSTREAM3FATI, (AND GLenum stream, GLfloat x, GLfloat y, GLfloat z), (stream, x, y, z), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream3fATI, glVertexStream3fATI, VERTEXSTREAM3FATI, (AND GLenum stream, GLfloat x, GLfloat y, GLfloat z), (stream, x, y, z), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM3FVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream3fvATI, glVertexStream3fvATI, VERTEXSTREAM3FVATI, (AND GLenum stream, const GLfloat *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream3fvATI, glVertexStream3fvATI, VERTEXSTREAM3FVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM3IATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream3iATI, glVertexStream3iATI, VERTEXSTREAM3IATI, (AND GLenum stream, GLint x, GLint y, GLint z), (stream, x, y, z), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream3iATI, glVertexStream3iATI, VERTEXSTREAM3IATI, (AND GLenum stream, GLint x, GLint y, GLint z), (stream, x, y, z), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM3IVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream3ivATI, glVertexStream3ivATI, VERTEXSTREAM3IVATI, (AND GLenum stream, const GLint *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream3ivATI, glVertexStream3ivATI, VERTEXSTREAM3IVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM3SATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream3sATI, glVertexStream3sATI, VERTEXSTREAM3SATI, (AND GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z), (stream, x, y, z), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream3sATI, glVertexStream3sATI, VERTEXSTREAM3SATI, (AND GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z), (stream, x, y, z), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM3SVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream3svATI, glVertexStream3svATI, VERTEXSTREAM3SVATI, (AND GLenum stream, const GLshort *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream3svATI, glVertexStream3svATI, VERTEXSTREAM3SVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM4DATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream4dATI, glVertexStream4dATI, VERTEXSTREAM4DATI, (AND GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (stream, x, y, z, w), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream4dATI, glVertexStream4dATI, VERTEXSTREAM4DATI, (AND GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (stream, x, y, z, w), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM4DVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream4dvATI, glVertexStream4dvATI, VERTEXSTREAM4DVATI, (AND GLenum stream, const GLdouble *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream4dvATI, glVertexStream4dvATI, VERTEXSTREAM4DVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM4FATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream4fATI, glVertexStream4fATI, VERTEXSTREAM4FATI, (AND GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (stream, x, y, z, w), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream4fATI, glVertexStream4fATI, VERTEXSTREAM4FATI, (AND GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (stream, x, y, z, w), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM4FVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream4fvATI, glVertexStream4fvATI, VERTEXSTREAM4FVATI, (AND GLenum stream, const GLfloat *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream4fvATI, glVertexStream4fvATI, VERTEXSTREAM4FVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM4IATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream4iATI, glVertexStream4iATI, VERTEXSTREAM4IATI, (AND GLenum stream, GLint x, GLint y, GLint z, GLint w), (stream, x, y, z, w), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream4iATI, glVertexStream4iATI, VERTEXSTREAM4IATI, (AND GLenum stream, GLint x, GLint y, GLint z, GLint w), (stream, x, y, z, w), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM4IVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream4ivATI, glVertexStream4ivATI, VERTEXSTREAM4IVATI, (AND GLenum stream, const GLint *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream4ivATI, glVertexStream4ivATI, VERTEXSTREAM4IVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM4SATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream4sATI, glVertexStream4sATI, VERTEXSTREAM4SATI, (AND GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (stream, x, y, z, w), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream4sATI, glVertexStream4sATI, VERTEXSTREAM4SATI, (AND GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (stream, x, y, z, w), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXSTREAM4SVATI #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexStream4svATI, glVertexStream4svATI, VERTEXSTREAM4SVATI, (AND GLenum stream, const GLshort *coords), (stream, coords), &stream, GL_void_return) GL_PROCM(void, gl, VertexStream4svATI, glVertexStream4svATI, VERTEXSTREAM4SVATI, (AND GLenum stream, memptr coords), (stream, coords), &stream, GL_void_return) #endif #endif #ifndef NO_GLVERTEXWEIGHTPOINTEREXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexWeightPointerEXT, glVertexWeightPointerEXT, VERTEXWEIGHTPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, const void *pointer), (size, type, stride, pointer), &size, GL_void_return) GL_PROCM(void, gl, VertexWeightPointerEXT, glVertexWeightPointerEXT, VERTEXWEIGHTPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, memptr pointer), (size, type, stride, pointer), &size, GL_void_return) #endif #endif #ifndef NO_GLVERTEXWEIGHTFEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexWeightfEXT, glVertexWeightfEXT, VERTEXWEIGHTFEXT, (AND GLfloat weight), (weight), &weight, GL_void_return) GL_PROCM(void, gl, VertexWeightfEXT, glVertexWeightfEXT, VERTEXWEIGHTFEXT, (AND GLfloat weight), (weight), &weight, GL_void_return) #endif #endif #ifndef NO_GLVERTEXWEIGHTFVEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexWeightfvEXT, glVertexWeightfvEXT, VERTEXWEIGHTFVEXT, (AND const GLfloat *weight), (weight), &weight, GL_void_return) GL_PROCM(void, gl, VertexWeightfvEXT, glVertexWeightfvEXT, VERTEXWEIGHTFVEXT, (AND memptr weight), (weight), &weight, GL_void_return) #endif #endif #ifndef NO_GLVERTEXWEIGHTHNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexWeighthNV, glVertexWeighthNV, VERTEXWEIGHTHNV, (AND GLhalfNV32 weight), (weight), &weight, GL_void_return) GL_PROCM(void, gl, VertexWeighthNV, glVertexWeighthNV, VERTEXWEIGHTHNV, (AND GLhalfNV32 weight), (weight), &weight, GL_void_return) #endif #endif #ifndef NO_GLVERTEXWEIGHTHVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VertexWeighthvNV, glVertexWeighthvNV, VERTEXWEIGHTHVNV, (AND const GLhalfNV *weight), (weight), &weight, GL_void_return) GL_PROCM(void, gl, VertexWeighthvNV, glVertexWeighthvNV, VERTEXWEIGHTHVNV, (AND memptr weight), (weight), &weight, GL_void_return) #endif #endif #ifndef NO_GLVIDEOCAPTURENV #if !defined(TINYGL_ONLY) GL_PROC(GLenum, gl, VideoCaptureNV, glVideoCaptureNV, VIDEOCAPTURENV, (AND GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time), (video_capture_slot, sequence_num, capture_time), &video_capture_slot, return (GLenum)) GL_PROCM(GLenum, gl, VideoCaptureNV, glVideoCaptureNV, VIDEOCAPTURENV, (AND GLuint video_capture_slot, memptr sequence_num, memptr capture_time), (video_capture_slot, sequence_num, capture_time), &video_capture_slot, return (GLenum)) #endif #endif #ifndef NO_GLVIDEOCAPTURESTREAMPARAMETERDVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VideoCaptureStreamParameterdvNV, glVideoCaptureStreamParameterdvNV, VIDEOCAPTURESTREAMPARAMETERDVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) GL_PROCM(void, gl, VideoCaptureStreamParameterdvNV, glVideoCaptureStreamParameterdvNV, VIDEOCAPTURESTREAMPARAMETERDVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, memptr params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) #endif #endif #ifndef NO_GLVIDEOCAPTURESTREAMPARAMETERFVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VideoCaptureStreamParameterfvNV, glVideoCaptureStreamParameterfvNV, VIDEOCAPTURESTREAMPARAMETERFVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) GL_PROCM(void, gl, VideoCaptureStreamParameterfvNV, glVideoCaptureStreamParameterfvNV, VIDEOCAPTURESTREAMPARAMETERFVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, memptr params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) #endif #endif #ifndef NO_GLVIDEOCAPTURESTREAMPARAMETERIVNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, VideoCaptureStreamParameterivNV, glVideoCaptureStreamParameterivNV, VIDEOCAPTURESTREAMPARAMETERIVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) GL_PROCM(void, gl, VideoCaptureStreamParameterivNV, glVideoCaptureStreamParameterivNV, VIDEOCAPTURESTREAMPARAMETERIVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, memptr params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) #endif #endif #ifndef NO_GLVIEWPORT GL_PROC(void, gl, Viewport, glViewport, VIEWPORT, (AND GLint x, GLint y, GLsizei width, GLsizei height), (x, y, width, height), &x, GL_void_return) GL_PROCM(void, gl, Viewport, glViewport, VIEWPORT, (AND GLint x, GLint y, GLsizei width, GLsizei height), (x, y, width, height), &x, GL_void_return) #endif #ifndef NO_GLVIEWPORTARRAYV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ViewportArrayv, glViewportArrayv, VIEWPORTARRAYV, (AND GLuint first, GLsizei count, const GLfloat *v), (first, count, v), &first, GL_void_return) GL_PROCM(void, gl, ViewportArrayv, glViewportArrayv, VIEWPORTARRAYV, (AND GLuint first, GLsizei count, memptr v), (first, count, v), &first, GL_void_return) #endif #endif #ifndef NO_GLVIEWPORTINDEXEDF #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ViewportIndexedf, glViewportIndexedf, VIEWPORTINDEXEDF, (AND GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h), (index, x, y, w, h), &index, GL_void_return) GL_PROCM(void, gl, ViewportIndexedf, glViewportIndexedf, VIEWPORTINDEXEDF, (AND GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h), (index, x, y, w, h), &index, GL_void_return) #endif #endif #ifndef NO_GLVIEWPORTINDEXEDFV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ViewportIndexedfv, glViewportIndexedfv, VIEWPORTINDEXEDFV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) GL_PROCM(void, gl, ViewportIndexedfv, glViewportIndexedfv, VIEWPORTINDEXEDFV, (AND GLuint index, memptr v), (index, v), &index, GL_void_return) #endif #endif #ifndef NO_GLVIEWPORTPOSITIONWSCALENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ViewportPositionWScaleNV, glViewportPositionWScaleNV, VIEWPORTPOSITIONWSCALENV, (AND GLuint index, GLfloat xcoeff, GLfloat ycoeff), (index, xcoeff, ycoeff), &index, GL_void_return) GL_PROCM(void, gl, ViewportPositionWScaleNV, glViewportPositionWScaleNV, VIEWPORTPOSITIONWSCALENV, (AND GLuint index, GLfloat xcoeff, GLfloat ycoeff), (index, xcoeff, ycoeff), &index, GL_void_return) #endif #endif #ifndef NO_GLVIEWPORTSWIZZLENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, ViewportSwizzleNV, glViewportSwizzleNV, VIEWPORTSWIZZLENV, (AND GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew), (index, swizzlex, swizzley, swizzlez, swizzlew), &index, GL_void_return) GL_PROCM(void, gl, ViewportSwizzleNV, glViewportSwizzleNV, VIEWPORTSWIZZLENV, (AND GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew), (index, swizzlex, swizzley, swizzlez, swizzlew), &index, GL_void_return) #endif #endif #ifndef NO_GLWAITSEMAPHOREEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WaitSemaphoreEXT, glWaitSemaphoreEXT, WAITSEMAPHOREEXT, (AND GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts), (semaphore, numBufferBarriers, buffers, numTextureBarriers, textures, srcLayouts), &semaphore, GL_void_return) GL_PROCM(void, gl, WaitSemaphoreEXT, glWaitSemaphoreEXT, WAITSEMAPHOREEXT, (AND GLuint semaphore, GLuint numBufferBarriers, memptr buffers, GLuint numTextureBarriers, memptr textures, memptr srcLayouts), (semaphore, numBufferBarriers, buffers, numTextureBarriers, textures, srcLayouts), &semaphore, GL_void_return) #endif #endif #ifndef NO_GLWAITSYNC #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WaitSync, glWaitSync, WAITSYNC, (AND GLsync sync, GLbitfield flags, GLuint64 timeout), (sync, flags, timeout), &sync, GL_void_return) GL_PROCM(void, gl, WaitSync, glWaitSync, WAITSYNC, (AND GLsync sync, GLbitfield flags, GLuint64 timeout), (sync, flags, timeout), &sync, GL_void_return) #endif #endif #ifndef NO_GLWAITVKSEMAPHORENV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WaitVkSemaphoreNV, glWaitVkSemaphoreNV, WAITVKSEMAPHORENV, (AND GLuint64 vkSemaphore), (vkSemaphore), &vkSemaphore, GL_void_return) GL_PROCM(void, gl, WaitVkSemaphoreNV, glWaitVkSemaphoreNV, WAITVKSEMAPHORENV, (AND GLuint64 vkSemaphore), (vkSemaphore), &vkSemaphore, GL_void_return) #endif #endif #ifndef NO_GLWEIGHTPATHSNV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WeightPathsNV, glWeightPathsNV, WEIGHTPATHSNV, (AND GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights), (resultPath, numPaths, paths, weights), &resultPath, GL_void_return) GL_PROCM(void, gl, WeightPathsNV, glWeightPathsNV, WEIGHTPATHSNV, (AND GLuint resultPath, GLsizei numPaths, memptr paths, memptr weights), (resultPath, numPaths, paths, weights), &resultPath, GL_void_return) #endif #endif #ifndef NO_GLWEIGHTPOINTERARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WeightPointerARB, glWeightPointerARB, WEIGHTPOINTERARB, (AND GLint size, GLenum type, GLsizei stride, const void *pointer), (size, type, stride, pointer), &size, GL_void_return) GL_PROCM(void, gl, WeightPointerARB, glWeightPointerARB, WEIGHTPOINTERARB, (AND GLint size, GLenum type, GLsizei stride, memptr pointer), (size, type, stride, pointer), &size, GL_void_return) #endif #endif #ifndef NO_GLWEIGHTBVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WeightbvARB, glWeightbvARB, WEIGHTBVARB, (AND GLint size, const GLbyte *weights), (size, weights), &size, GL_void_return) GL_PROCM(void, gl, WeightbvARB, glWeightbvARB, WEIGHTBVARB, (AND GLint size, memptr weights), (size, weights), &size, GL_void_return) #endif #endif #ifndef NO_GLWEIGHTDVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WeightdvARB, glWeightdvARB, WEIGHTDVARB, (AND GLint size, const GLdouble *weights), (size, weights), &size, GL_void_return) GL_PROCM(void, gl, WeightdvARB, glWeightdvARB, WEIGHTDVARB, (AND GLint size, memptr weights), (size, weights), &size, GL_void_return) #endif #endif #ifndef NO_GLWEIGHTFVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WeightfvARB, glWeightfvARB, WEIGHTFVARB, (AND GLint size, const GLfloat *weights), (size, weights), &size, GL_void_return) GL_PROCM(void, gl, WeightfvARB, glWeightfvARB, WEIGHTFVARB, (AND GLint size, memptr weights), (size, weights), &size, GL_void_return) #endif #endif #ifndef NO_GLWEIGHTIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WeightivARB, glWeightivARB, WEIGHTIVARB, (AND GLint size, const GLint *weights), (size, weights), &size, GL_void_return) GL_PROCM(void, gl, WeightivARB, glWeightivARB, WEIGHTIVARB, (AND GLint size, memptr weights), (size, weights), &size, GL_void_return) #endif #endif #ifndef NO_GLWEIGHTSVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WeightsvARB, glWeightsvARB, WEIGHTSVARB, (AND GLint size, const GLshort *weights), (size, weights), &size, GL_void_return) GL_PROCM(void, gl, WeightsvARB, glWeightsvARB, WEIGHTSVARB, (AND GLint size, memptr weights), (size, weights), &size, GL_void_return) #endif #endif #ifndef NO_GLWEIGHTUBVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WeightubvARB, glWeightubvARB, WEIGHTUBVARB, (AND GLint size, const GLubyte *weights), (size, weights), &size, GL_void_return) GL_PROCM(void, gl, WeightubvARB, glWeightubvARB, WEIGHTUBVARB, (AND GLint size, memptr weights), (size, weights), &size, GL_void_return) #endif #endif #ifndef NO_GLWEIGHTUIVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WeightuivARB, glWeightuivARB, WEIGHTUIVARB, (AND GLint size, const GLuint *weights), (size, weights), &size, GL_void_return) GL_PROCM(void, gl, WeightuivARB, glWeightuivARB, WEIGHTUIVARB, (AND GLint size, memptr weights), (size, weights), &size, GL_void_return) #endif #endif #ifndef NO_GLWEIGHTUSVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WeightusvARB, glWeightusvARB, WEIGHTUSVARB, (AND GLint size, const GLushort *weights), (size, weights), &size, GL_void_return) GL_PROCM(void, gl, WeightusvARB, glWeightusvARB, WEIGHTUSVARB, (AND GLint size, memptr weights), (size, weights), &size, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2d, glWindowPos2d, WINDOWPOS2D, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, WindowPos2d, glWindowPos2d, WINDOWPOS2D, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2dARB, glWindowPos2dARB, WINDOWPOS2DARB, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, WindowPos2dARB, glWindowPos2dARB, WINDOWPOS2DARB, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2DMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2dMESA, glWindowPos2dMESA, WINDOWPOS2DMESA, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, WindowPos2dMESA, glWindowPos2dMESA, WINDOWPOS2DMESA, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2dv, glWindowPos2dv, WINDOWPOS2DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos2dv, glWindowPos2dv, WINDOWPOS2DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2DVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2dvARB, glWindowPos2dvARB, WINDOWPOS2DVARB, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos2dvARB, glWindowPos2dvARB, WINDOWPOS2DVARB, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2DVMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2dvMESA, glWindowPos2dvMESA, WINDOWPOS2DVMESA, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos2dvMESA, glWindowPos2dvMESA, WINDOWPOS2DVMESA, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2f, glWindowPos2f, WINDOWPOS2F, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, WindowPos2f, glWindowPos2f, WINDOWPOS2F, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2fARB, glWindowPos2fARB, WINDOWPOS2FARB, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, WindowPos2fARB, glWindowPos2fARB, WINDOWPOS2FARB, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2FMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2fMESA, glWindowPos2fMESA, WINDOWPOS2FMESA, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, WindowPos2fMESA, glWindowPos2fMESA, WINDOWPOS2FMESA, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2fv, glWindowPos2fv, WINDOWPOS2FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos2fv, glWindowPos2fv, WINDOWPOS2FV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2fvARB, glWindowPos2fvARB, WINDOWPOS2FVARB, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos2fvARB, glWindowPos2fvARB, WINDOWPOS2FVARB, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2FVMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2fvMESA, glWindowPos2fvMESA, WINDOWPOS2FVMESA, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos2fvMESA, glWindowPos2fvMESA, WINDOWPOS2FVMESA, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2i, glWindowPos2i, WINDOWPOS2I, (AND GLint x, GLint y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, WindowPos2i, glWindowPos2i, WINDOWPOS2I, (AND GLint x, GLint y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2IARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2iARB, glWindowPos2iARB, WINDOWPOS2IARB, (AND GLint x, GLint y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, WindowPos2iARB, glWindowPos2iARB, WINDOWPOS2IARB, (AND GLint x, GLint y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2IMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2iMESA, glWindowPos2iMESA, WINDOWPOS2IMESA, (AND GLint x, GLint y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, WindowPos2iMESA, glWindowPos2iMESA, WINDOWPOS2IMESA, (AND GLint x, GLint y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2iv, glWindowPos2iv, WINDOWPOS2IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos2iv, glWindowPos2iv, WINDOWPOS2IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2IVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2ivARB, glWindowPos2ivARB, WINDOWPOS2IVARB, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos2ivARB, glWindowPos2ivARB, WINDOWPOS2IVARB, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2IVMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2ivMESA, glWindowPos2ivMESA, WINDOWPOS2IVMESA, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos2ivMESA, glWindowPos2ivMESA, WINDOWPOS2IVMESA, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2s, glWindowPos2s, WINDOWPOS2S, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, WindowPos2s, glWindowPos2s, WINDOWPOS2S, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2SARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2sARB, glWindowPos2sARB, WINDOWPOS2SARB, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, WindowPos2sARB, glWindowPos2sARB, WINDOWPOS2SARB, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2SMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2sMESA, glWindowPos2sMESA, WINDOWPOS2SMESA, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) GL_PROCM(void, gl, WindowPos2sMESA, glWindowPos2sMESA, WINDOWPOS2SMESA, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2sv, glWindowPos2sv, WINDOWPOS2SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos2sv, glWindowPos2sv, WINDOWPOS2SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2SVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2svARB, glWindowPos2svARB, WINDOWPOS2SVARB, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos2svARB, glWindowPos2svARB, WINDOWPOS2SVARB, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS2SVMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos2svMESA, glWindowPos2svMESA, WINDOWPOS2SVMESA, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos2svMESA, glWindowPos2svMESA, WINDOWPOS2SVMESA, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3D #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3d, glWindowPos3d, WINDOWPOS3D, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, WindowPos3d, glWindowPos3d, WINDOWPOS3D, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3DARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3dARB, glWindowPos3dARB, WINDOWPOS3DARB, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, WindowPos3dARB, glWindowPos3dARB, WINDOWPOS3DARB, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3DMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3dMESA, glWindowPos3dMESA, WINDOWPOS3DMESA, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, WindowPos3dMESA, glWindowPos3dMESA, WINDOWPOS3DMESA, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3DV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3dv, glWindowPos3dv, WINDOWPOS3DV, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos3dv, glWindowPos3dv, WINDOWPOS3DV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3DVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3dvARB, glWindowPos3dvARB, WINDOWPOS3DVARB, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos3dvARB, glWindowPos3dvARB, WINDOWPOS3DVARB, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3DVMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3dvMESA, glWindowPos3dvMESA, WINDOWPOS3DVMESA, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos3dvMESA, glWindowPos3dvMESA, WINDOWPOS3DVMESA, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3F #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3f, glWindowPos3f, WINDOWPOS3F, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, WindowPos3f, glWindowPos3f, WINDOWPOS3F, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3FARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3fARB, glWindowPos3fARB, WINDOWPOS3FARB, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, WindowPos3fARB, glWindowPos3fARB, WINDOWPOS3FARB, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3FMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3fMESA, glWindowPos3fMESA, WINDOWPOS3FMESA, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, WindowPos3fMESA, glWindowPos3fMESA, WINDOWPOS3FMESA, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3FV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3fv, glWindowPos3fv, WINDOWPOS3FV, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos3fv, glWindowPos3fv, WINDOWPOS3FV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3FVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3fvARB, glWindowPos3fvARB, WINDOWPOS3FVARB, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos3fvARB, glWindowPos3fvARB, WINDOWPOS3FVARB, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3FVMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3fvMESA, glWindowPos3fvMESA, WINDOWPOS3FVMESA, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos3fvMESA, glWindowPos3fvMESA, WINDOWPOS3FVMESA, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3I #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3i, glWindowPos3i, WINDOWPOS3I, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, WindowPos3i, glWindowPos3i, WINDOWPOS3I, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3IARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3iARB, glWindowPos3iARB, WINDOWPOS3IARB, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, WindowPos3iARB, glWindowPos3iARB, WINDOWPOS3IARB, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3IMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3iMESA, glWindowPos3iMESA, WINDOWPOS3IMESA, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, WindowPos3iMESA, glWindowPos3iMESA, WINDOWPOS3IMESA, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3IV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3iv, glWindowPos3iv, WINDOWPOS3IV, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos3iv, glWindowPos3iv, WINDOWPOS3IV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3IVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3ivARB, glWindowPos3ivARB, WINDOWPOS3IVARB, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos3ivARB, glWindowPos3ivARB, WINDOWPOS3IVARB, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3IVMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3ivMESA, glWindowPos3ivMESA, WINDOWPOS3IVMESA, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos3ivMESA, glWindowPos3ivMESA, WINDOWPOS3IVMESA, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3S #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3s, glWindowPos3s, WINDOWPOS3S, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, WindowPos3s, glWindowPos3s, WINDOWPOS3S, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3SARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3sARB, glWindowPos3sARB, WINDOWPOS3SARB, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, WindowPos3sARB, glWindowPos3sARB, WINDOWPOS3SARB, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3SMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3sMESA, glWindowPos3sMESA, WINDOWPOS3SMESA, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) GL_PROCM(void, gl, WindowPos3sMESA, glWindowPos3sMESA, WINDOWPOS3SMESA, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3SV #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3sv, glWindowPos3sv, WINDOWPOS3SV, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos3sv, glWindowPos3sv, WINDOWPOS3SV, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3SVARB #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3svARB, glWindowPos3svARB, WINDOWPOS3SVARB, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos3svARB, glWindowPos3svARB, WINDOWPOS3SVARB, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS3SVMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos3svMESA, glWindowPos3svMESA, WINDOWPOS3SVMESA, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos3svMESA, glWindowPos3svMESA, WINDOWPOS3SVMESA, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS4DMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos4dMESA, glWindowPos4dMESA, WINDOWPOS4DMESA, (AND GLdouble x, GLdouble y, GLdouble z, GLdouble w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, WindowPos4dMESA, glWindowPos4dMESA, WINDOWPOS4DMESA, (AND GLdouble x, GLdouble y, GLdouble z, GLdouble w), (x, y, z, w), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS4DVMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos4dvMESA, glWindowPos4dvMESA, WINDOWPOS4DVMESA, (AND const GLdouble *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos4dvMESA, glWindowPos4dvMESA, WINDOWPOS4DVMESA, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS4FMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos4fMESA, glWindowPos4fMESA, WINDOWPOS4FMESA, (AND GLfloat x, GLfloat y, GLfloat z, GLfloat w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, WindowPos4fMESA, glWindowPos4fMESA, WINDOWPOS4FMESA, (AND GLfloat x, GLfloat y, GLfloat z, GLfloat w), (x, y, z, w), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS4FVMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos4fvMESA, glWindowPos4fvMESA, WINDOWPOS4FVMESA, (AND const GLfloat *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos4fvMESA, glWindowPos4fvMESA, WINDOWPOS4FVMESA, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS4IMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos4iMESA, glWindowPos4iMESA, WINDOWPOS4IMESA, (AND GLint x, GLint y, GLint z, GLint w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, WindowPos4iMESA, glWindowPos4iMESA, WINDOWPOS4IMESA, (AND GLint x, GLint y, GLint z, GLint w), (x, y, z, w), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS4IVMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos4ivMESA, glWindowPos4ivMESA, WINDOWPOS4IVMESA, (AND const GLint *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos4ivMESA, glWindowPos4ivMESA, WINDOWPOS4IVMESA, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS4SMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos4sMESA, glWindowPos4sMESA, WINDOWPOS4SMESA, (AND GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (x, y, z, w), &x, GL_void_return) GL_PROCM(void, gl, WindowPos4sMESA, glWindowPos4sMESA, WINDOWPOS4SMESA, (AND GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (x, y, z, w), &x, GL_void_return) #endif #endif #ifndef NO_GLWINDOWPOS4SVMESA #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowPos4svMESA, glWindowPos4svMESA, WINDOWPOS4SVMESA, (AND const GLshort *v), (v), &v, GL_void_return) GL_PROCM(void, gl, WindowPos4svMESA, glWindowPos4svMESA, WINDOWPOS4SVMESA, (AND memptr v), (v), &v, GL_void_return) #endif #endif #ifndef NO_GLWINDOWRECTANGLESEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WindowRectanglesEXT, glWindowRectanglesEXT, WINDOWRECTANGLESEXT, (AND GLenum mode, GLsizei count, const GLint *box), (mode, count, box), &mode, GL_void_return) GL_PROCM(void, gl, WindowRectanglesEXT, glWindowRectanglesEXT, WINDOWRECTANGLESEXT, (AND GLenum mode, GLsizei count, memptr box), (mode, count, box), &mode, GL_void_return) #endif #endif #ifndef NO_GLWRITEMASKEXT #if !defined(TINYGL_ONLY) GL_PROC(void, gl, WriteMaskEXT, glWriteMaskEXT, WRITEMASKEXT, (AND GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW), (res, in, outX, outY, outZ, outW), &res, GL_void_return) GL_PROCM(void, gl, WriteMaskEXT, glWriteMaskEXT, WRITEMASKEXT, (AND GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW), (res, in, outX, outY, outZ, outW), &res, GL_void_return) #endif #endif #ifndef NO_GLULOOKAT #if !defined(TINYGL_ONLY) GLU_PROC(void, glu, LookAt, gluLookAtd, LOOKAT, (AND GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ), (eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ), &eyeX, GL_void_return) GLU_PROCM(void, glu, LookAt, gluLookAtd, LOOKAT, (AND GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ), (eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ), &eyeX, GL_void_return) #endif #endif /* Functions generated: 13 OSMesa + 2954 GL + 1 GLU */ #undef GL_PROC #undef GL_PROCM #undef GL_PROC64 #undef GL_PROC64M #undef GLU_PROC #undef GLU_PROCM #undef GL_GETSTRING #undef GL_GETSTRINGI #undef OSMESA_PROC #undef OSMESA_PROCM #undef GL_void_return aranym-1.1.0/atari/nfosmesa/glfuncs-bynum.h0000664000175000017500000221063013454637621017062 0ustar joyjoy/* * -- DO NOT EDIT -- * Generated by dyngl.pl from ./tools/glfuncs.h */ #ifndef LENGL_PROC #define LENGL_PROC(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef PUTGL_PROC #define PUTGL_PROC(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef GLU_PROC #define GLU_PROC(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef GL_PROC64 #define GL_PROC64(type, gl, name, export, upper, proto, args, first, ret) GL_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #ifndef OSMESA_PROC #define OSMESA_PROC(type, gl, name, export, upper, proto, args, first, ret) #endif #undef GL_void_return #define GL_void_return #ifndef NOTHING #define NOTHING void #endif #ifndef AND #define AND #endif /* 1 */ LENGL_PROC(GLuint, LenGl, GetString, LenGlGetString, GETSTRING, (AND OSMesaContext ctx, GLenum name), (ctx, name), &ctx, return (GLuint)) /* 2 */ PUTGL_PROC(void, PutGl, GetString, PutGlGetString, GETSTRING, (AND OSMesaContext ctx, GLenum name, GLubyte *buffer), (ctx, name, buffer), &ctx, GL_void_return) /* 3 */ OSMESA_PROC(OSMesaContext, OSMesa, CreateContext, OSMesaCreateContext, CREATECONTEXT, (AND GLenum format, OSMesaContext sharelist), (format, sharelist), &format, return (OSMesaContext)) /* 4 */ OSMESA_PROC(OSMesaContext, OSMesa, CreateContextExt, OSMesaCreateContextExt, CREATECONTEXTEXT, (AND GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist), (format, depthBits, stencilBits, accumBits, sharelist), &format, return (OSMesaContext)) /* 5 */ OSMESA_PROC(void, OSMesa, DestroyContext, OSMesaDestroyContext, DESTROYCONTEXT, (AND OSMesaContext ctx), (ctx), &ctx, GL_void_return) /* 6 */ OSMESA_PROC(GLboolean, OSMesa, MakeCurrent, OSMesaMakeCurrent, MAKECURRENT, (AND OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height), (ctx, buffer, type, width, height), &ctx, return (GLboolean)) /* 7 */ OSMESA_PROC(OSMesaContext, OSMesa, GetCurrentContext, OSMesaGetCurrentContext, GETCURRENTCONTEXT, (NOTHING), (), NULL, return (OSMesaContext)) /* 8 */ OSMESA_PROC(void, OSMesa, PixelStore, OSMesaPixelStore, PIXELSTORE, (AND GLint pname, GLint value), (pname, value), &pname, GL_void_return) /* 9 */ OSMESA_PROC(void, OSMesa, GetIntegerv, OSMesaGetIntegerv, GETINTEGERV, (AND GLint pname, GLint *value), (pname, value), &pname, GL_void_return) /* 10 */ OSMESA_PROC(GLboolean, OSMesa, GetDepthBuffer, OSMesaGetDepthBuffer, GETDEPTHBUFFER, (AND OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void * *buffer), (c, width, height, bytesPerValue, buffer), &c, return (GLboolean)) /* 11 */ OSMESA_PROC(GLboolean, OSMesa, GetColorBuffer, OSMesaGetColorBuffer, GETCOLORBUFFER, (AND OSMesaContext c, GLint *width, GLint *height, GLint *format, void * *buffer), (c, width, height, format, buffer), &c, return (GLboolean)) /* 12 */ OSMESA_PROC(OSMESAproc, OSMesa, GetProcAddress, OSMesaGetProcAddress, GETPROCADDRESS, (AND const char *funcName), (funcName), &funcName, return (OSMESAproc)) /* 13 */ GL_PROC(void, gl, ClearIndex, glClearIndex, CLEARINDEX, (AND GLfloat c), (c), &c, GL_void_return) /* 14 */ GL_PROC(void, gl, ClearColor, glClearColor, CLEARCOLOR, (AND GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha), (red, green, blue, alpha), &red, GL_void_return) /* 15 */ GL_PROC(void, gl, Clear, glClear, CLEAR, (AND GLbitfield mask), (mask), &mask, GL_void_return) /* 16 */ GL_PROC(void, gl, IndexMask, glIndexMask, INDEXMASK, (AND GLuint mask), (mask), &mask, GL_void_return) /* 17 */ GL_PROC(void, gl, ColorMask, glColorMask, COLORMASK, (AND GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha), (red, green, blue, alpha), &red, GL_void_return) /* 18 */ GL_PROC(void, gl, AlphaFunc, glAlphaFunc, ALPHAFUNC, (AND GLenum func, GLclampf ref), (func, ref), &func, GL_void_return) /* 19 */ GL_PROC(void, gl, BlendFunc, glBlendFunc, BLENDFUNC, (AND GLenum sfactor, GLenum dfactor), (sfactor, dfactor), &sfactor, GL_void_return) /* 20 */ GL_PROC(void, gl, LogicOp, glLogicOp, LOGICOP, (AND GLenum opcode), (opcode), &opcode, GL_void_return) /* 21 */ GL_PROC(void, gl, CullFace, glCullFace, CULLFACE, (AND GLenum mode), (mode), &mode, GL_void_return) /* 22 */ GL_PROC(void, gl, FrontFace, glFrontFace, FRONTFACE, (AND GLenum mode), (mode), &mode, GL_void_return) /* 23 */ GL_PROC(void, gl, PointSize, glPointSize, POINTSIZE, (AND GLfloat size), (size), &size, GL_void_return) /* 24 */ GL_PROC(void, gl, LineWidth, glLineWidth, LINEWIDTH, (AND GLfloat width), (width), &width, GL_void_return) /* 25 */ GL_PROC(void, gl, LineStipple, glLineStipple, LINESTIPPLE, (AND GLint factor, GLushort32 pattern), (factor, pattern), &factor, GL_void_return) /* 26 */ GL_PROC(void, gl, PolygonMode, glPolygonMode, POLYGONMODE, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) /* 27 */ GL_PROC(void, gl, PolygonOffset, glPolygonOffset, POLYGONOFFSET, (AND GLfloat factor, GLfloat units), (factor, units), &factor, GL_void_return) /* 28 */ GL_PROC(void, gl, PolygonStipple, glPolygonStipple, POLYGONSTIPPLE, (AND const GLubyte *mask), (mask), &mask, GL_void_return) /* 29 */ GL_PROC(void, gl, GetPolygonStipple, glGetPolygonStipple, GETPOLYGONSTIPPLE, (AND GLubyte *mask), (mask), &mask, GL_void_return) /* 30 */ GL_PROC(void, gl, EdgeFlag, glEdgeFlag, EDGEFLAG, (AND GLboolean32 flag), (flag), &flag, GL_void_return) /* 31 */ GL_PROC(void, gl, EdgeFlagv, glEdgeFlagv, EDGEFLAGV, (AND const GLboolean *flag), (flag), &flag, GL_void_return) /* 32 */ GL_PROC(void, gl, Scissor, glScissor, SCISSOR, (AND GLint x, GLint y, GLsizei width, GLsizei height), (x, y, width, height), &x, GL_void_return) /* 33 */ GL_PROC(void, gl, ClipPlane, glClipPlane, CLIPPLANE, (AND GLenum plane, const GLdouble *equation), (plane, equation), &plane, GL_void_return) /* 34 */ GL_PROC(void, gl, GetClipPlane, glGetClipPlane, GETCLIPPLANE, (AND GLenum plane, GLdouble *equation), (plane, equation), &plane, GL_void_return) /* 35 */ GL_PROC(void, gl, DrawBuffer, glDrawBuffer, DRAWBUFFER, (AND GLenum mode), (mode), &mode, GL_void_return) /* 36 */ GL_PROC(void, gl, ReadBuffer, glReadBuffer, READBUFFER, (AND GLenum mode), (mode), &mode, GL_void_return) /* 37 */ GL_PROC(void, gl, Enable, glEnable, ENABLE, (AND GLenum cap), (cap), &cap, GL_void_return) /* 38 */ GL_PROC(void, gl, Disable, glDisable, DISABLE, (AND GLenum cap), (cap), &cap, GL_void_return) /* 39 */ GL_PROC(GLboolean, gl, IsEnabled, glIsEnabled, ISENABLED, (AND GLenum cap), (cap), &cap, return (GLboolean)) /* 40 */ GL_PROC(void, gl, EnableClientState, glEnableClientState, ENABLECLIENTSTATE, (AND GLenum array), (array), &array, GL_void_return) /* 41 */ GL_PROC(void, gl, DisableClientState, glDisableClientState, DISABLECLIENTSTATE, (AND GLenum array), (array), &array, GL_void_return) /* 42 */ GL_PROC(void, gl, GetBooleanv, glGetBooleanv, GETBOOLEANV, (AND GLenum pname, GLboolean *params), (pname, params), &pname, GL_void_return) /* 43 */ GL_PROC(void, gl, GetDoublev, glGetDoublev, GETDOUBLEV, (AND GLenum pname, GLdouble *params), (pname, params), &pname, GL_void_return) /* 44 */ GL_PROC(void, gl, GetFloatv, glGetFloatv, GETFLOATV, (AND GLenum pname, GLfloat *params), (pname, params), &pname, GL_void_return) /* 45 */ GL_PROC(void, gl, GetIntegerv, glGetIntegerv, GETINTEGERV, (AND GLenum pname, GLint *params), (pname, params), &pname, GL_void_return) /* 46 */ GL_PROC(void, gl, PushAttrib, glPushAttrib, PUSHATTRIB, (AND GLbitfield mask), (mask), &mask, GL_void_return) /* 47 */ GL_PROC(void, gl, PopAttrib, glPopAttrib, POPATTRIB, (NOTHING), (), NULL, GL_void_return) /* 48 */ GL_PROC(void, gl, PushClientAttrib, glPushClientAttrib, PUSHCLIENTATTRIB, (AND GLbitfield mask), (mask), &mask, GL_void_return) /* 49 */ GL_PROC(void, gl, PopClientAttrib, glPopClientAttrib, POPCLIENTATTRIB, (NOTHING), (), NULL, GL_void_return) /* 50 */ GL_PROC(GLint, gl, RenderMode, glRenderMode, RENDERMODE, (AND GLenum mode), (mode), &mode, return (GLint)) /* 51 */ GL_PROC(GLenum, gl, GetError, glGetError, GETERROR, (NOTHING), (), NULL, return (GLenum)) /* 52 */ GL_PROC(void, gl, Finish, glFinish, FINISH, (NOTHING), (), NULL, GL_void_return) /* 53 */ GL_PROC(void, gl, Flush, glFlush, FLUSH, (NOTHING), (), NULL, GL_void_return) /* 54 */ GL_PROC(void, gl, Hint, glHint, HINT, (AND GLenum target, GLenum mode), (target, mode), &target, GL_void_return) /* 55 */ GL_PROC(void, gl, ClearDepth, glClearDepthd, CLEARDEPTH, (AND GLclampd depth), (depth), &depth, GL_void_return) /* 56 */ GL_PROC(void, gl, DepthFunc, glDepthFunc, DEPTHFUNC, (AND GLenum func), (func), &func, GL_void_return) /* 57 */ GL_PROC(void, gl, DepthMask, glDepthMask, DEPTHMASK, (AND GLboolean32 flag), (flag), &flag, GL_void_return) /* 58 */ GL_PROC(void, gl, DepthRange, glDepthRange, DEPTHRANGE, (AND GLclampd zNear, GLclampd zFar), (zNear, zFar), &zNear, GL_void_return) /* 59 */ GL_PROC(void, gl, ClearAccum, glClearAccum, CLEARACCUM, (AND GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha), &red, GL_void_return) /* 60 */ GL_PROC(void, gl, Accum, glAccum, ACCUM, (AND GLenum op, GLfloat value), (op, value), &op, GL_void_return) /* 61 */ GL_PROC(void, gl, MatrixMode, glMatrixMode, MATRIXMODE, (AND GLenum mode), (mode), &mode, GL_void_return) /* 62 */ GL_PROC(void, gl, Ortho, glOrthod, ORTHO, (AND GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (left, right, bottom, top, zNear, zFar), &left, GL_void_return) /* 63 */ GL_PROC(void, gl, Frustum, glFrustumd, FRUSTUM, (AND GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (left, right, bottom, top, zNear, zFar), &left, GL_void_return) /* 64 */ GL_PROC(void, gl, Viewport, glViewport, VIEWPORT, (AND GLint x, GLint y, GLsizei width, GLsizei height), (x, y, width, height), &x, GL_void_return) /* 65 */ GL_PROC(void, gl, PushMatrix, glPushMatrix, PUSHMATRIX, (NOTHING), (), NULL, GL_void_return) /* 66 */ GL_PROC(void, gl, PopMatrix, glPopMatrix, POPMATRIX, (NOTHING), (), NULL, GL_void_return) /* 67 */ GL_PROC(void, gl, LoadIdentity, glLoadIdentity, LOADIDENTITY, (NOTHING), (), NULL, GL_void_return) /* 68 */ GL_PROC(void, gl, LoadMatrixd, glLoadMatrixd, LOADMATRIXD, (AND const GLdouble *m), (m), &m, GL_void_return) /* 69 */ GL_PROC(void, gl, LoadMatrixf, glLoadMatrixf, LOADMATRIXF, (AND const GLfloat *m), (m), &m, GL_void_return) /* 70 */ GL_PROC(void, gl, MultMatrixd, glMultMatrixd, MULTMATRIXD, (AND const GLdouble *m), (m), &m, GL_void_return) /* 71 */ GL_PROC(void, gl, MultMatrixf, glMultMatrixf, MULTMATRIXF, (AND const GLfloat *m), (m), &m, GL_void_return) /* 72 */ GL_PROC(void, gl, Rotated, glRotated, ROTATED, (AND GLdouble angle, GLdouble x, GLdouble y, GLdouble z), (angle, x, y, z), &angle, GL_void_return) /* 73 */ GL_PROC(void, gl, Rotatef, glRotatef, ROTATEF, (AND GLfloat angle, GLfloat x, GLfloat y, GLfloat z), (angle, x, y, z), &angle, GL_void_return) /* 74 */ GL_PROC(void, gl, Scaled, glScaled, SCALED, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) /* 75 */ GL_PROC(void, gl, Scalef, glScalef, SCALEF, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) /* 76 */ GL_PROC(void, gl, Translated, glTranslated, TRANSLATED, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) /* 77 */ GL_PROC(void, gl, Translatef, glTranslatef, TRANSLATEF, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) /* 78 */ GL_PROC(GLboolean, gl, IsList, glIsList, ISLIST, (AND GLuint list), (list), &list, return (GLboolean)) /* 79 */ GL_PROC(void, gl, DeleteLists, glDeleteLists, DELETELISTS, (AND GLuint list, GLsizei range), (list, range), &list, GL_void_return) /* 80 */ GL_PROC(GLuint, gl, GenLists, glGenLists, GENLISTS, (AND GLsizei range), (range), &range, return (GLuint)) /* 81 */ GL_PROC(void, gl, NewList, glNewList, NEWLIST, (AND GLuint list, GLenum mode), (list, mode), &list, GL_void_return) /* 82 */ GL_PROC(void, gl, EndList, glEndList, ENDLIST, (NOTHING), (), NULL, GL_void_return) /* 83 */ GL_PROC(void, gl, CallList, glCallList, CALLLIST, (AND GLuint list), (list), &list, GL_void_return) /* 84 */ GL_PROC(void, gl, CallLists, glCallLists, CALLLISTS, (AND GLsizei n, GLenum type, const GLvoid *lists), (n, type, lists), &n, GL_void_return) /* 85 */ GL_PROC(void, gl, ListBase, glListBase, LISTBASE, (AND GLuint base), (base), &base, GL_void_return) /* 86 */ GL_PROC(void, gl, Begin, glBegin, BEGIN, (AND GLenum mode), (mode), &mode, GL_void_return) /* 87 */ GL_PROC(void, gl, End, glEnd, END, (NOTHING), (), NULL, GL_void_return) /* 88 */ GL_PROC(void, gl, Vertex2d, glVertex2d, VERTEX2D, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) /* 89 */ GL_PROC(void, gl, Vertex2f, glVertex2f, VERTEX2F, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) /* 90 */ GL_PROC(void, gl, Vertex2i, glVertex2i, VERTEX2I, (AND GLint x, GLint y), (x, y), &x, GL_void_return) /* 91 */ GL_PROC(void, gl, Vertex2s, glVertex2s, VERTEX2S, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) /* 92 */ GL_PROC(void, gl, Vertex3d, glVertex3d, VERTEX3D, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) /* 93 */ GL_PROC(void, gl, Vertex3f, glVertex3f, VERTEX3F, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) /* 94 */ GL_PROC(void, gl, Vertex3i, glVertex3i, VERTEX3I, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) /* 95 */ GL_PROC(void, gl, Vertex3s, glVertex3s, VERTEX3S, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) /* 96 */ GL_PROC(void, gl, Vertex4d, glVertex4d, VERTEX4D, (AND GLdouble x, GLdouble y, GLdouble z, GLdouble w), (x, y, z, w), &x, GL_void_return) /* 97 */ GL_PROC(void, gl, Vertex4f, glVertex4f, VERTEX4F, (AND GLfloat x, GLfloat y, GLfloat z, GLfloat w), (x, y, z, w), &x, GL_void_return) /* 98 */ GL_PROC(void, gl, Vertex4i, glVertex4i, VERTEX4I, (AND GLint x, GLint y, GLint z, GLint w), (x, y, z, w), &x, GL_void_return) /* 99 */ GL_PROC(void, gl, Vertex4s, glVertex4s, VERTEX4S, (AND GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (x, y, z, w), &x, GL_void_return) /* 100 */ GL_PROC(void, gl, Vertex2dv, glVertex2dv, VERTEX2DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 101 */ GL_PROC(void, gl, Vertex2fv, glVertex2fv, VERTEX2FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 102 */ GL_PROC(void, gl, Vertex2iv, glVertex2iv, VERTEX2IV, (AND const GLint *v), (v), &v, GL_void_return) /* 103 */ GL_PROC(void, gl, Vertex2sv, glVertex2sv, VERTEX2SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 104 */ GL_PROC(void, gl, Vertex3dv, glVertex3dv, VERTEX3DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 105 */ GL_PROC(void, gl, Vertex3fv, glVertex3fv, VERTEX3FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 106 */ GL_PROC(void, gl, Vertex3iv, glVertex3iv, VERTEX3IV, (AND const GLint *v), (v), &v, GL_void_return) /* 107 */ GL_PROC(void, gl, Vertex3sv, glVertex3sv, VERTEX3SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 108 */ GL_PROC(void, gl, Vertex4dv, glVertex4dv, VERTEX4DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 109 */ GL_PROC(void, gl, Vertex4fv, glVertex4fv, VERTEX4FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 110 */ GL_PROC(void, gl, Vertex4iv, glVertex4iv, VERTEX4IV, (AND const GLint *v), (v), &v, GL_void_return) /* 111 */ GL_PROC(void, gl, Vertex4sv, glVertex4sv, VERTEX4SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 112 */ GL_PROC(void, gl, Normal3b, glNormal3b, NORMAL3B, (AND GLbyte32 nx, GLbyte32 ny, GLbyte32 nz), (nx, ny, nz), &nx, GL_void_return) /* 113 */ GL_PROC(void, gl, Normal3d, glNormal3d, NORMAL3D, (AND GLdouble nx, GLdouble ny, GLdouble nz), (nx, ny, nz), &nx, GL_void_return) /* 114 */ GL_PROC(void, gl, Normal3f, glNormal3f, NORMAL3F, (AND GLfloat nx, GLfloat ny, GLfloat nz), (nx, ny, nz), &nx, GL_void_return) /* 115 */ GL_PROC(void, gl, Normal3i, glNormal3i, NORMAL3I, (AND GLint nx, GLint ny, GLint nz), (nx, ny, nz), &nx, GL_void_return) /* 116 */ GL_PROC(void, gl, Normal3s, glNormal3s, NORMAL3S, (AND GLshort32 nx, GLshort32 ny, GLshort32 nz), (nx, ny, nz), &nx, GL_void_return) /* 117 */ GL_PROC(void, gl, Normal3bv, glNormal3bv, NORMAL3BV, (AND const GLbyte *v), (v), &v, GL_void_return) /* 118 */ GL_PROC(void, gl, Normal3dv, glNormal3dv, NORMAL3DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 119 */ GL_PROC(void, gl, Normal3fv, glNormal3fv, NORMAL3FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 120 */ GL_PROC(void, gl, Normal3iv, glNormal3iv, NORMAL3IV, (AND const GLint *v), (v), &v, GL_void_return) /* 121 */ GL_PROC(void, gl, Normal3sv, glNormal3sv, NORMAL3SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 122 */ GL_PROC(void, gl, Indexd, glIndexd, INDEXD, (AND GLdouble c), (c), &c, GL_void_return) /* 123 */ GL_PROC(void, gl, Indexf, glIndexf, INDEXF, (AND GLfloat c), (c), &c, GL_void_return) /* 124 */ GL_PROC(void, gl, Indexi, glIndexi, INDEXI, (AND GLint c), (c), &c, GL_void_return) /* 125 */ GL_PROC(void, gl, Indexs, glIndexs, INDEXS, (AND GLshort32 c), (c), &c, GL_void_return) /* 126 */ GL_PROC(void, gl, Indexub, glIndexub, INDEXUB, (AND GLubyte32 c), (c), &c, GL_void_return) /* 127 */ GL_PROC(void, gl, Indexdv, glIndexdv, INDEXDV, (AND const GLdouble *c), (c), &c, GL_void_return) /* 128 */ GL_PROC(void, gl, Indexfv, glIndexfv, INDEXFV, (AND const GLfloat *c), (c), &c, GL_void_return) /* 129 */ GL_PROC(void, gl, Indexiv, glIndexiv, INDEXIV, (AND const GLint *c), (c), &c, GL_void_return) /* 130 */ GL_PROC(void, gl, Indexsv, glIndexsv, INDEXSV, (AND const GLshort *c), (c), &c, GL_void_return) /* 131 */ GL_PROC(void, gl, Indexubv, glIndexubv, INDEXUBV, (AND const GLubyte *c), (c), &c, GL_void_return) /* 132 */ GL_PROC(void, gl, Color3b, glColor3b, COLOR3B, (AND GLbyte32 red, GLbyte32 green, GLbyte32 blue), (red, green, blue), &red, GL_void_return) /* 133 */ GL_PROC(void, gl, Color3d, glColor3d, COLOR3D, (AND GLdouble red, GLdouble green, GLdouble blue), (red, green, blue), &red, GL_void_return) /* 134 */ GL_PROC(void, gl, Color3f, glColor3f, COLOR3F, (AND GLfloat red, GLfloat green, GLfloat blue), (red, green, blue), &red, GL_void_return) /* 135 */ GL_PROC(void, gl, Color3i, glColor3i, COLOR3I, (AND GLint red, GLint green, GLint blue), (red, green, blue), &red, GL_void_return) /* 136 */ GL_PROC(void, gl, Color3s, glColor3s, COLOR3S, (AND GLshort32 red, GLshort32 green, GLshort32 blue), (red, green, blue), &red, GL_void_return) /* 137 */ GL_PROC(void, gl, Color3ub, glColor3ub, COLOR3UB, (AND GLubyte32 red, GLubyte32 green, GLubyte32 blue), (red, green, blue), &red, GL_void_return) /* 138 */ GL_PROC(void, gl, Color3ui, glColor3ui, COLOR3UI, (AND GLuint red, GLuint green, GLuint blue), (red, green, blue), &red, GL_void_return) /* 139 */ GL_PROC(void, gl, Color3us, glColor3us, COLOR3US, (AND GLushort32 red, GLushort32 green, GLushort32 blue), (red, green, blue), &red, GL_void_return) /* 140 */ GL_PROC(void, gl, Color4b, glColor4b, COLOR4B, (AND GLbyte32 red, GLbyte32 green, GLbyte32 blue, GLbyte32 alpha), (red, green, blue, alpha), &red, GL_void_return) /* 141 */ GL_PROC(void, gl, Color4d, glColor4d, COLOR4D, (AND GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha), (red, green, blue, alpha), &red, GL_void_return) /* 142 */ GL_PROC(void, gl, Color4f, glColor4f, COLOR4F, (AND GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha), &red, GL_void_return) /* 143 */ GL_PROC(void, gl, Color4i, glColor4i, COLOR4I, (AND GLint red, GLint green, GLint blue, GLint alpha), (red, green, blue, alpha), &red, GL_void_return) /* 144 */ GL_PROC(void, gl, Color4s, glColor4s, COLOR4S, (AND GLshort32 red, GLshort32 green, GLshort32 blue, GLshort32 alpha), (red, green, blue, alpha), &red, GL_void_return) /* 145 */ GL_PROC(void, gl, Color4ub, glColor4ub, COLOR4UB, (AND GLubyte32 red, GLubyte32 green, GLubyte32 blue, GLubyte32 alpha), (red, green, blue, alpha), &red, GL_void_return) /* 146 */ GL_PROC(void, gl, Color4ui, glColor4ui, COLOR4UI, (AND GLuint red, GLuint green, GLuint blue, GLuint alpha), (red, green, blue, alpha), &red, GL_void_return) /* 147 */ GL_PROC(void, gl, Color4us, glColor4us, COLOR4US, (AND GLushort32 red, GLushort32 green, GLushort32 blue, GLushort32 alpha), (red, green, blue, alpha), &red, GL_void_return) /* 148 */ GL_PROC(void, gl, Color3bv, glColor3bv, COLOR3BV, (AND const GLbyte *v), (v), &v, GL_void_return) /* 149 */ GL_PROC(void, gl, Color3dv, glColor3dv, COLOR3DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 150 */ GL_PROC(void, gl, Color3fv, glColor3fv, COLOR3FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 151 */ GL_PROC(void, gl, Color3iv, glColor3iv, COLOR3IV, (AND const GLint *v), (v), &v, GL_void_return) /* 152 */ GL_PROC(void, gl, Color3sv, glColor3sv, COLOR3SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 153 */ GL_PROC(void, gl, Color3ubv, glColor3ubv, COLOR3UBV, (AND const GLubyte *v), (v), &v, GL_void_return) /* 154 */ GL_PROC(void, gl, Color3uiv, glColor3uiv, COLOR3UIV, (AND const GLuint *v), (v), &v, GL_void_return) /* 155 */ GL_PROC(void, gl, Color3usv, glColor3usv, COLOR3USV, (AND const GLushort *v), (v), &v, GL_void_return) /* 156 */ GL_PROC(void, gl, Color4bv, glColor4bv, COLOR4BV, (AND const GLbyte *v), (v), &v, GL_void_return) /* 157 */ GL_PROC(void, gl, Color4dv, glColor4dv, COLOR4DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 158 */ GL_PROC(void, gl, Color4fv, glColor4fv, COLOR4FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 159 */ GL_PROC(void, gl, Color4iv, glColor4iv, COLOR4IV, (AND const GLint *v), (v), &v, GL_void_return) /* 160 */ GL_PROC(void, gl, Color4sv, glColor4sv, COLOR4SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 161 */ GL_PROC(void, gl, Color4ubv, glColor4ubv, COLOR4UBV, (AND const GLubyte *v), (v), &v, GL_void_return) /* 162 */ GL_PROC(void, gl, Color4uiv, glColor4uiv, COLOR4UIV, (AND const GLuint *v), (v), &v, GL_void_return) /* 163 */ GL_PROC(void, gl, Color4usv, glColor4usv, COLOR4USV, (AND const GLushort *v), (v), &v, GL_void_return) /* 164 */ GL_PROC(void, gl, TexCoord1d, glTexCoord1d, TEXCOORD1D, (AND GLdouble s), (s), &s, GL_void_return) /* 165 */ GL_PROC(void, gl, TexCoord1f, glTexCoord1f, TEXCOORD1F, (AND GLfloat s), (s), &s, GL_void_return) /* 166 */ GL_PROC(void, gl, TexCoord1i, glTexCoord1i, TEXCOORD1I, (AND GLint s), (s), &s, GL_void_return) /* 167 */ GL_PROC(void, gl, TexCoord1s, glTexCoord1s, TEXCOORD1S, (AND GLshort32 s), (s), &s, GL_void_return) /* 168 */ GL_PROC(void, gl, TexCoord2d, glTexCoord2d, TEXCOORD2D, (AND GLdouble s, GLdouble t), (s, t), &s, GL_void_return) /* 169 */ GL_PROC(void, gl, TexCoord2f, glTexCoord2f, TEXCOORD2F, (AND GLfloat s, GLfloat t), (s, t), &s, GL_void_return) /* 170 */ GL_PROC(void, gl, TexCoord2i, glTexCoord2i, TEXCOORD2I, (AND GLint s, GLint t), (s, t), &s, GL_void_return) /* 171 */ GL_PROC(void, gl, TexCoord2s, glTexCoord2s, TEXCOORD2S, (AND GLshort32 s, GLshort32 t), (s, t), &s, GL_void_return) /* 172 */ GL_PROC(void, gl, TexCoord3d, glTexCoord3d, TEXCOORD3D, (AND GLdouble s, GLdouble t, GLdouble r), (s, t, r), &s, GL_void_return) /* 173 */ GL_PROC(void, gl, TexCoord3f, glTexCoord3f, TEXCOORD3F, (AND GLfloat s, GLfloat t, GLfloat r), (s, t, r), &s, GL_void_return) /* 174 */ GL_PROC(void, gl, TexCoord3i, glTexCoord3i, TEXCOORD3I, (AND GLint s, GLint t, GLint r), (s, t, r), &s, GL_void_return) /* 175 */ GL_PROC(void, gl, TexCoord3s, glTexCoord3s, TEXCOORD3S, (AND GLshort32 s, GLshort32 t, GLshort32 r), (s, t, r), &s, GL_void_return) /* 176 */ GL_PROC(void, gl, TexCoord4d, glTexCoord4d, TEXCOORD4D, (AND GLdouble s, GLdouble t, GLdouble r, GLdouble q), (s, t, r, q), &s, GL_void_return) /* 177 */ GL_PROC(void, gl, TexCoord4f, glTexCoord4f, TEXCOORD4F, (AND GLfloat s, GLfloat t, GLfloat r, GLfloat q), (s, t, r, q), &s, GL_void_return) /* 178 */ GL_PROC(void, gl, TexCoord4i, glTexCoord4i, TEXCOORD4I, (AND GLint s, GLint t, GLint r, GLint q), (s, t, r, q), &s, GL_void_return) /* 179 */ GL_PROC(void, gl, TexCoord4s, glTexCoord4s, TEXCOORD4S, (AND GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q), (s, t, r, q), &s, GL_void_return) /* 180 */ GL_PROC(void, gl, TexCoord1dv, glTexCoord1dv, TEXCOORD1DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 181 */ GL_PROC(void, gl, TexCoord1fv, glTexCoord1fv, TEXCOORD1FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 182 */ GL_PROC(void, gl, TexCoord1iv, glTexCoord1iv, TEXCOORD1IV, (AND const GLint *v), (v), &v, GL_void_return) /* 183 */ GL_PROC(void, gl, TexCoord1sv, glTexCoord1sv, TEXCOORD1SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 184 */ GL_PROC(void, gl, TexCoord2dv, glTexCoord2dv, TEXCOORD2DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 185 */ GL_PROC(void, gl, TexCoord2fv, glTexCoord2fv, TEXCOORD2FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 186 */ GL_PROC(void, gl, TexCoord2iv, glTexCoord2iv, TEXCOORD2IV, (AND const GLint *v), (v), &v, GL_void_return) /* 187 */ GL_PROC(void, gl, TexCoord2sv, glTexCoord2sv, TEXCOORD2SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 188 */ GL_PROC(void, gl, TexCoord3dv, glTexCoord3dv, TEXCOORD3DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 189 */ GL_PROC(void, gl, TexCoord3fv, glTexCoord3fv, TEXCOORD3FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 190 */ GL_PROC(void, gl, TexCoord3iv, glTexCoord3iv, TEXCOORD3IV, (AND const GLint *v), (v), &v, GL_void_return) /* 191 */ GL_PROC(void, gl, TexCoord3sv, glTexCoord3sv, TEXCOORD3SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 192 */ GL_PROC(void, gl, TexCoord4dv, glTexCoord4dv, TEXCOORD4DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 193 */ GL_PROC(void, gl, TexCoord4fv, glTexCoord4fv, TEXCOORD4FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 194 */ GL_PROC(void, gl, TexCoord4iv, glTexCoord4iv, TEXCOORD4IV, (AND const GLint *v), (v), &v, GL_void_return) /* 195 */ GL_PROC(void, gl, TexCoord4sv, glTexCoord4sv, TEXCOORD4SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 196 */ GL_PROC(void, gl, RasterPos2d, glRasterPos2d, RASTERPOS2D, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) /* 197 */ GL_PROC(void, gl, RasterPos2f, glRasterPos2f, RASTERPOS2F, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) /* 198 */ GL_PROC(void, gl, RasterPos2i, glRasterPos2i, RASTERPOS2I, (AND GLint x, GLint y), (x, y), &x, GL_void_return) /* 199 */ GL_PROC(void, gl, RasterPos2s, glRasterPos2s, RASTERPOS2S, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) /* 200 */ GL_PROC(void, gl, RasterPos3d, glRasterPos3d, RASTERPOS3D, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) /* 201 */ GL_PROC(void, gl, RasterPos3f, glRasterPos3f, RASTERPOS3F, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) /* 202 */ GL_PROC(void, gl, RasterPos3i, glRasterPos3i, RASTERPOS3I, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) /* 203 */ GL_PROC(void, gl, RasterPos3s, glRasterPos3s, RASTERPOS3S, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) /* 204 */ GL_PROC(void, gl, RasterPos4d, glRasterPos4d, RASTERPOS4D, (AND GLdouble x, GLdouble y, GLdouble z, GLdouble w), (x, y, z, w), &x, GL_void_return) /* 205 */ GL_PROC(void, gl, RasterPos4f, glRasterPos4f, RASTERPOS4F, (AND GLfloat x, GLfloat y, GLfloat z, GLfloat w), (x, y, z, w), &x, GL_void_return) /* 206 */ GL_PROC(void, gl, RasterPos4i, glRasterPos4i, RASTERPOS4I, (AND GLint x, GLint y, GLint z, GLint w), (x, y, z, w), &x, GL_void_return) /* 207 */ GL_PROC(void, gl, RasterPos4s, glRasterPos4s, RASTERPOS4S, (AND GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (x, y, z, w), &x, GL_void_return) /* 208 */ GL_PROC(void, gl, RasterPos2dv, glRasterPos2dv, RASTERPOS2DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 209 */ GL_PROC(void, gl, RasterPos2fv, glRasterPos2fv, RASTERPOS2FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 210 */ GL_PROC(void, gl, RasterPos2iv, glRasterPos2iv, RASTERPOS2IV, (AND const GLint *v), (v), &v, GL_void_return) /* 211 */ GL_PROC(void, gl, RasterPos2sv, glRasterPos2sv, RASTERPOS2SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 212 */ GL_PROC(void, gl, RasterPos3dv, glRasterPos3dv, RASTERPOS3DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 213 */ GL_PROC(void, gl, RasterPos3fv, glRasterPos3fv, RASTERPOS3FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 214 */ GL_PROC(void, gl, RasterPos3iv, glRasterPos3iv, RASTERPOS3IV, (AND const GLint *v), (v), &v, GL_void_return) /* 215 */ GL_PROC(void, gl, RasterPos3sv, glRasterPos3sv, RASTERPOS3SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 216 */ GL_PROC(void, gl, RasterPos4dv, glRasterPos4dv, RASTERPOS4DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 217 */ GL_PROC(void, gl, RasterPos4fv, glRasterPos4fv, RASTERPOS4FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 218 */ GL_PROC(void, gl, RasterPos4iv, glRasterPos4iv, RASTERPOS4IV, (AND const GLint *v), (v), &v, GL_void_return) /* 219 */ GL_PROC(void, gl, RasterPos4sv, glRasterPos4sv, RASTERPOS4SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 220 */ GL_PROC(void, gl, Rectd, glRectd, RECTD, (AND GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2), (x1, y1, x2, y2), &x1, GL_void_return) /* 221 */ GL_PROC(void, gl, Rectf, glRectf, RECTF, (AND GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2), (x1, y1, x2, y2), &x1, GL_void_return) /* 222 */ GL_PROC(void, gl, Recti, glRecti, RECTI, (AND GLint x1, GLint y1, GLint x2, GLint y2), (x1, y1, x2, y2), &x1, GL_void_return) /* 223 */ GL_PROC(void, gl, Rects, glRects, RECTS, (AND GLshort32 x1, GLshort32 y1, GLshort32 x2, GLshort32 y2), (x1, y1, x2, y2), &x1, GL_void_return) /* 224 */ GL_PROC(void, gl, Rectdv, glRectdv, RECTDV, (AND const GLdouble *v1, const GLdouble *v2), (v1, v2), &v1, GL_void_return) /* 225 */ GL_PROC(void, gl, Rectfv, glRectfv, RECTFV, (AND const GLfloat *v1, const GLfloat *v2), (v1, v2), &v1, GL_void_return) /* 226 */ GL_PROC(void, gl, Rectiv, glRectiv, RECTIV, (AND const GLint *v1, const GLint *v2), (v1, v2), &v1, GL_void_return) /* 227 */ GL_PROC(void, gl, Rectsv, glRectsv, RECTSV, (AND const GLshort *v1, const GLshort *v2), (v1, v2), &v1, GL_void_return) /* 228 */ GL_PROC(void, gl, VertexPointer, glVertexPointer, VERTEXPOINTER, (AND GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size, type, stride, pointer), &size, GL_void_return) /* 229 */ GL_PROC(void, gl, NormalPointer, glNormalPointer, NORMALPOINTER, (AND GLenum type, GLsizei stride, const GLvoid *pointer), (type, stride, pointer), &type, GL_void_return) /* 230 */ GL_PROC(void, gl, ColorPointer, glColorPointer, COLORPOINTER, (AND GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size, type, stride, pointer), &size, GL_void_return) /* 231 */ GL_PROC(void, gl, IndexPointer, glIndexPointer, INDEXPOINTER, (AND GLenum type, GLsizei stride, const GLvoid *pointer), (type, stride, pointer), &type, GL_void_return) /* 232 */ GL_PROC(void, gl, TexCoordPointer, glTexCoordPointer, TEXCOORDPOINTER, (AND GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size, type, stride, pointer), &size, GL_void_return) /* 233 */ GL_PROC(void, gl, EdgeFlagPointer, glEdgeFlagPointer, EDGEFLAGPOINTER, (AND GLsizei stride, const GLvoid *pointer), (stride, pointer), &stride, GL_void_return) /* 234 */ GL_PROC(void, gl, GetPointerv, glGetPointerv, GETPOINTERV, (AND GLenum pname, GLvoid* *params), (pname, params), &pname, GL_void_return) /* 235 */ GL_PROC(void, gl, ArrayElement, glArrayElement, ARRAYELEMENT, (AND GLint i), (i), &i, GL_void_return) /* 236 */ GL_PROC(void, gl, DrawArrays, glDrawArrays, DRAWARRAYS, (AND GLenum mode, GLint first, GLsizei count), (mode, first, count), &mode, GL_void_return) /* 237 */ GL_PROC(void, gl, DrawElements, glDrawElements, DRAWELEMENTS, (AND GLenum mode, GLsizei count, GLenum type, const GLvoid *indices), (mode, count, type, indices), &mode, GL_void_return) /* 238 */ GL_PROC(void, gl, InterleavedArrays, glInterleavedArrays, INTERLEAVEDARRAYS, (AND GLenum format, GLsizei stride, const GLvoid *pointer), (format, stride, pointer), &format, GL_void_return) /* 239 */ GL_PROC(void, gl, ShadeModel, glShadeModel, SHADEMODEL, (AND GLenum mode), (mode), &mode, GL_void_return) /* 240 */ GL_PROC(void, gl, Lightf, glLightf, LIGHTF, (AND GLenum light, GLenum pname, GLfloat param), (light, pname, param), &light, GL_void_return) /* 241 */ GL_PROC(void, gl, Lighti, glLighti, LIGHTI, (AND GLenum light, GLenum pname, GLint param), (light, pname, param), &light, GL_void_return) /* 242 */ GL_PROC(void, gl, Lightfv, glLightfv, LIGHTFV, (AND GLenum light, GLenum pname, const GLfloat *params), (light, pname, params), &light, GL_void_return) /* 243 */ GL_PROC(void, gl, Lightiv, glLightiv, LIGHTIV, (AND GLenum light, GLenum pname, const GLint *params), (light, pname, params), &light, GL_void_return) /* 244 */ GL_PROC(void, gl, GetLightfv, glGetLightfv, GETLIGHTFV, (AND GLenum light, GLenum pname, GLfloat *params), (light, pname, params), &light, GL_void_return) /* 245 */ GL_PROC(void, gl, GetLightiv, glGetLightiv, GETLIGHTIV, (AND GLenum light, GLenum pname, GLint *params), (light, pname, params), &light, GL_void_return) /* 246 */ GL_PROC(void, gl, LightModelf, glLightModelf, LIGHTMODELF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) /* 247 */ GL_PROC(void, gl, LightModeli, glLightModeli, LIGHTMODELI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* 248 */ GL_PROC(void, gl, LightModelfv, glLightModelfv, LIGHTMODELFV, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) /* 249 */ GL_PROC(void, gl, LightModeliv, glLightModeliv, LIGHTMODELIV, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) /* 250 */ GL_PROC(void, gl, Materialf, glMaterialf, MATERIALF, (AND GLenum face, GLenum pname, GLfloat param), (face, pname, param), &face, GL_void_return) /* 251 */ GL_PROC(void, gl, Materiali, glMateriali, MATERIALI, (AND GLenum face, GLenum pname, GLint param), (face, pname, param), &face, GL_void_return) /* 252 */ GL_PROC(void, gl, Materialfv, glMaterialfv, MATERIALFV, (AND GLenum face, GLenum pname, const GLfloat *params), (face, pname, params), &face, GL_void_return) /* 253 */ GL_PROC(void, gl, Materialiv, glMaterialiv, MATERIALIV, (AND GLenum face, GLenum pname, const GLint *params), (face, pname, params), &face, GL_void_return) /* 254 */ GL_PROC(void, gl, GetMaterialfv, glGetMaterialfv, GETMATERIALFV, (AND GLenum face, GLenum pname, GLfloat *params), (face, pname, params), &face, GL_void_return) /* 255 */ GL_PROC(void, gl, GetMaterialiv, glGetMaterialiv, GETMATERIALIV, (AND GLenum face, GLenum pname, GLint *params), (face, pname, params), &face, GL_void_return) /* 256 */ GL_PROC(void, gl, ColorMaterial, glColorMaterial, COLORMATERIAL, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) /* 257 */ GL_PROC(void, gl, PixelZoom, glPixelZoom, PIXELZOOM, (AND GLfloat xfactor, GLfloat yfactor), (xfactor, yfactor), &xfactor, GL_void_return) /* 258 */ GL_PROC(void, gl, PixelStoref, glPixelStoref, PIXELSTOREF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) /* 259 */ GL_PROC(void, gl, PixelStorei, glPixelStorei, PIXELSTOREI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* 260 */ GL_PROC(void, gl, PixelTransferf, glPixelTransferf, PIXELTRANSFERF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) /* 261 */ GL_PROC(void, gl, PixelTransferi, glPixelTransferi, PIXELTRANSFERI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* 262 */ GL_PROC(void, gl, PixelMapfv, glPixelMapfv, PIXELMAPFV, (AND GLenum map, GLsizei mapsize, const GLfloat *values), (map, mapsize, values), &map, GL_void_return) /* 263 */ GL_PROC(void, gl, PixelMapuiv, glPixelMapuiv, PIXELMAPUIV, (AND GLenum map, GLsizei mapsize, const GLuint *values), (map, mapsize, values), &map, GL_void_return) /* 264 */ GL_PROC(void, gl, PixelMapusv, glPixelMapusv, PIXELMAPUSV, (AND GLenum map, GLsizei mapsize, const GLushort *values), (map, mapsize, values), &map, GL_void_return) /* 265 */ GL_PROC(void, gl, GetPixelMapfv, glGetPixelMapfv, GETPIXELMAPFV, (AND GLenum map, GLfloat *values), (map, values), &map, GL_void_return) /* 266 */ GL_PROC(void, gl, GetPixelMapuiv, glGetPixelMapuiv, GETPIXELMAPUIV, (AND GLenum map, GLuint *values), (map, values), &map, GL_void_return) /* 267 */ GL_PROC(void, gl, GetPixelMapusv, glGetPixelMapusv, GETPIXELMAPUSV, (AND GLenum map, GLushort *values), (map, values), &map, GL_void_return) /* 268 */ GL_PROC(void, gl, Bitmap, glBitmap, BITMAP, (AND GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap), (width, height, xorig, yorig, xmove, ymove, bitmap), &width, GL_void_return) /* 269 */ GL_PROC(void, gl, ReadPixels, glReadPixels, READPIXELS, (AND GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels), (x, y, width, height, format, type, pixels), &x, GL_void_return) /* 270 */ GL_PROC(void, gl, DrawPixels, glDrawPixels, DRAWPIXELS, (AND GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels), (width, height, format, type, pixels), &width, GL_void_return) /* 271 */ GL_PROC(void, gl, CopyPixels, glCopyPixels, COPYPIXELS, (AND GLint x, GLint y, GLsizei width, GLsizei height, GLenum type), (x, y, width, height, type), &x, GL_void_return) /* 272 */ GL_PROC(void, gl, StencilFunc, glStencilFunc, STENCILFUNC, (AND GLenum func, GLint ref, GLuint mask), (func, ref, mask), &func, GL_void_return) /* 273 */ GL_PROC(void, gl, StencilMask, glStencilMask, STENCILMASK, (AND GLuint mask), (mask), &mask, GL_void_return) /* 274 */ GL_PROC(void, gl, StencilOp, glStencilOp, STENCILOP, (AND GLenum fail, GLenum zfail, GLenum zpass), (fail, zfail, zpass), &fail, GL_void_return) /* 275 */ GL_PROC(void, gl, ClearStencil, glClearStencil, CLEARSTENCIL, (AND GLint s), (s), &s, GL_void_return) /* 276 */ GL_PROC(void, gl, TexGend, glTexGend, TEXGEND, (AND GLenum coord, GLenum pname, GLdouble param), (coord, pname, param), &coord, GL_void_return) /* 277 */ GL_PROC(void, gl, TexGenf, glTexGenf, TEXGENF, (AND GLenum coord, GLenum pname, GLfloat param), (coord, pname, param), &coord, GL_void_return) /* 278 */ GL_PROC(void, gl, TexGeni, glTexGeni, TEXGENI, (AND GLenum coord, GLenum pname, GLint param), (coord, pname, param), &coord, GL_void_return) /* 279 */ GL_PROC(void, gl, TexGendv, glTexGendv, TEXGENDV, (AND GLenum coord, GLenum pname, const GLdouble *params), (coord, pname, params), &coord, GL_void_return) /* 280 */ GL_PROC(void, gl, TexGenfv, glTexGenfv, TEXGENFV, (AND GLenum coord, GLenum pname, const GLfloat *params), (coord, pname, params), &coord, GL_void_return) /* 281 */ GL_PROC(void, gl, TexGeniv, glTexGeniv, TEXGENIV, (AND GLenum coord, GLenum pname, const GLint *params), (coord, pname, params), &coord, GL_void_return) /* 282 */ GL_PROC(void, gl, GetTexGendv, glGetTexGendv, GETTEXGENDV, (AND GLenum coord, GLenum pname, GLdouble *params), (coord, pname, params), &coord, GL_void_return) /* 283 */ GL_PROC(void, gl, GetTexGenfv, glGetTexGenfv, GETTEXGENFV, (AND GLenum coord, GLenum pname, GLfloat *params), (coord, pname, params), &coord, GL_void_return) /* 284 */ GL_PROC(void, gl, GetTexGeniv, glGetTexGeniv, GETTEXGENIV, (AND GLenum coord, GLenum pname, GLint *params), (coord, pname, params), &coord, GL_void_return) /* 285 */ GL_PROC(void, gl, TexEnvf, glTexEnvf, TEXENVF, (AND GLenum target, GLenum pname, GLfloat param), (target, pname, param), &target, GL_void_return) /* 286 */ GL_PROC(void, gl, TexEnvi, glTexEnvi, TEXENVI, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) /* 287 */ GL_PROC(void, gl, TexEnvfv, glTexEnvfv, TEXENVFV, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) /* 288 */ GL_PROC(void, gl, TexEnviv, glTexEnviv, TEXENVIV, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) /* 289 */ GL_PROC(void, gl, GetTexEnvfv, glGetTexEnvfv, GETTEXENVFV, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) /* 290 */ GL_PROC(void, gl, GetTexEnviv, glGetTexEnviv, GETTEXENVIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 291 */ GL_PROC(void, gl, TexParameterf, glTexParameterf, TEXPARAMETERF, (AND GLenum target, GLenum pname, GLfloat param), (target, pname, param), &target, GL_void_return) /* 292 */ GL_PROC(void, gl, TexParameteri, glTexParameteri, TEXPARAMETERI, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) /* 293 */ GL_PROC(void, gl, TexParameterfv, glTexParameterfv, TEXPARAMETERFV, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) /* 294 */ GL_PROC(void, gl, TexParameteriv, glTexParameteriv, TEXPARAMETERIV, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) /* 295 */ GL_PROC(void, gl, GetTexParameterfv, glGetTexParameterfv, GETTEXPARAMETERFV, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) /* 296 */ GL_PROC(void, gl, GetTexParameteriv, glGetTexParameteriv, GETTEXPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 297 */ GL_PROC(void, gl, GetTexLevelParameterfv, glGetTexLevelParameterfv, GETTEXLEVELPARAMETERFV, (AND GLenum target, GLint level, GLenum pname, GLfloat *params), (target, level, pname, params), &target, GL_void_return) /* 298 */ GL_PROC(void, gl, GetTexLevelParameteriv, glGetTexLevelParameteriv, GETTEXLEVELPARAMETERIV, (AND GLenum target, GLint level, GLenum pname, GLint *params), (target, level, pname, params), &target, GL_void_return) /* 299 */ GL_PROC(void, gl, TexImage1D, glTexImage1D, TEXIMAGE1D, (AND GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels), (target, level, internalformat, width, border, format, type, pixels), &target, GL_void_return) /* 300 */ GL_PROC(void, gl, TexImage2D, glTexImage2D, TEXIMAGE2D, (AND GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels), (target, level, internalformat, width, height, border, format, type, pixels), &target, GL_void_return) /* 301 */ GL_PROC(void, gl, GetTexImage, glGetTexImage, GETTEXIMAGE, (AND GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels), (target, level, format, type, pixels), &target, GL_void_return) /* 302 */ GL_PROC(void, gl, GenTextures, glGenTextures, GENTEXTURES, (AND GLsizei n, GLuint *textures), (n, textures), &n, GL_void_return) /* 303 */ GL_PROC(void, gl, DeleteTextures, glDeleteTextures, DELETETEXTURES, (AND GLsizei n, const GLuint *textures), (n, textures), &n, GL_void_return) /* 304 */ GL_PROC(void, gl, BindTexture, glBindTexture, BINDTEXTURE, (AND GLenum target, GLuint texture), (target, texture), &target, GL_void_return) /* 305 */ GL_PROC(void, gl, PrioritizeTextures, glPrioritizeTextures, PRIORITIZETEXTURES, (AND GLsizei n, const GLuint *textures, const GLclampf *priorities), (n, textures, priorities), &n, GL_void_return) /* 306 */ GL_PROC(GLboolean, gl, AreTexturesResident, glAreTexturesResident, ARETEXTURESRESIDENT, (AND GLsizei n, const GLuint *textures, GLboolean *residences), (n, textures, residences), &n, return (GLboolean)) /* 307 */ GL_PROC(GLboolean, gl, IsTexture, glIsTexture, ISTEXTURE, (AND GLuint texture), (texture), &texture, return (GLboolean)) /* 308 */ GL_PROC(void, gl, TexSubImage1D, glTexSubImage1D, TEXSUBIMAGE1D, (AND GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels), (target, level, xoffset, width, format, type, pixels), &target, GL_void_return) /* 309 */ GL_PROC(void, gl, TexSubImage2D, glTexSubImage2D, TEXSUBIMAGE2D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels), (target, level, xoffset, yoffset, width, height, format, type, pixels), &target, GL_void_return) /* 310 */ GL_PROC(void, gl, CopyTexImage1D, glCopyTexImage1D, COPYTEXIMAGE1D, (AND GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border), (target, level, internalformat, x, y, width, border), &target, GL_void_return) /* 311 */ GL_PROC(void, gl, CopyTexImage2D, glCopyTexImage2D, COPYTEXIMAGE2D, (AND GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (target, level, internalformat, x, y, width, height, border), &target, GL_void_return) /* 312 */ GL_PROC(void, gl, CopyTexSubImage1D, glCopyTexSubImage1D, COPYTEXSUBIMAGE1D, (AND GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (target, level, xoffset, x, y, width), &target, GL_void_return) /* 313 */ GL_PROC(void, gl, CopyTexSubImage2D, glCopyTexSubImage2D, COPYTEXSUBIMAGE2D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, x, y, width, height), &target, GL_void_return) /* 314 */ GL_PROC(void, gl, Map1d, glMap1d, MAP1D, (AND GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points), (target, u1, u2, stride, order, points), &target, GL_void_return) /* 315 */ GL_PROC(void, gl, Map1f, glMap1f, MAP1F, (AND GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points), (target, u1, u2, stride, order, points), &target, GL_void_return) /* 316 */ GL_PROC(void, gl, Map2d, glMap2d, MAP2D, (AND GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &target, GL_void_return) /* 317 */ GL_PROC(void, gl, Map2f, glMap2f, MAP2F, (AND GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &target, GL_void_return) /* 318 */ GL_PROC(void, gl, GetMapdv, glGetMapdv, GETMAPDV, (AND GLenum target, GLenum query, GLdouble *v), (target, query, v), &target, GL_void_return) /* 319 */ GL_PROC(void, gl, GetMapfv, glGetMapfv, GETMAPFV, (AND GLenum target, GLenum query, GLfloat *v), (target, query, v), &target, GL_void_return) /* 320 */ GL_PROC(void, gl, GetMapiv, glGetMapiv, GETMAPIV, (AND GLenum target, GLenum query, GLint *v), (target, query, v), &target, GL_void_return) /* 321 */ GL_PROC(void, gl, EvalCoord1d, glEvalCoord1d, EVALCOORD1D, (AND GLdouble u), (u), &u, GL_void_return) /* 322 */ GL_PROC(void, gl, EvalCoord1f, glEvalCoord1f, EVALCOORD1F, (AND GLfloat u), (u), &u, GL_void_return) /* 323 */ GL_PROC(void, gl, EvalCoord1dv, glEvalCoord1dv, EVALCOORD1DV, (AND const GLdouble *u), (u), &u, GL_void_return) /* 324 */ GL_PROC(void, gl, EvalCoord1fv, glEvalCoord1fv, EVALCOORD1FV, (AND const GLfloat *u), (u), &u, GL_void_return) /* 325 */ GL_PROC(void, gl, EvalCoord2d, glEvalCoord2d, EVALCOORD2D, (AND GLdouble u, GLdouble v), (u, v), &u, GL_void_return) /* 326 */ GL_PROC(void, gl, EvalCoord2f, glEvalCoord2f, EVALCOORD2F, (AND GLfloat u, GLfloat v), (u, v), &u, GL_void_return) /* 327 */ GL_PROC(void, gl, EvalCoord2dv, glEvalCoord2dv, EVALCOORD2DV, (AND const GLdouble *u), (u), &u, GL_void_return) /* 328 */ GL_PROC(void, gl, EvalCoord2fv, glEvalCoord2fv, EVALCOORD2FV, (AND const GLfloat *u), (u), &u, GL_void_return) /* 329 */ GL_PROC(void, gl, MapGrid1d, glMapGrid1d, MAPGRID1D, (AND GLint un, GLdouble u1, GLdouble u2), (un, u1, u2), &un, GL_void_return) /* 330 */ GL_PROC(void, gl, MapGrid1f, glMapGrid1f, MAPGRID1F, (AND GLint un, GLfloat u1, GLfloat u2), (un, u1, u2), &un, GL_void_return) /* 331 */ GL_PROC(void, gl, MapGrid2d, glMapGrid2d, MAPGRID2D, (AND GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2), (un, u1, u2, vn, v1, v2), &un, GL_void_return) /* 332 */ GL_PROC(void, gl, MapGrid2f, glMapGrid2f, MAPGRID2F, (AND GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2), (un, u1, u2, vn, v1, v2), &un, GL_void_return) /* 333 */ GL_PROC(void, gl, EvalPoint1, glEvalPoint1, EVALPOINT1, (AND GLint i), (i), &i, GL_void_return) /* 334 */ GL_PROC(void, gl, EvalPoint2, glEvalPoint2, EVALPOINT2, (AND GLint i, GLint j), (i, j), &i, GL_void_return) /* 335 */ GL_PROC(void, gl, EvalMesh1, glEvalMesh1, EVALMESH1, (AND GLenum mode, GLint i1, GLint i2), (mode, i1, i2), &mode, GL_void_return) /* 336 */ GL_PROC(void, gl, EvalMesh2, glEvalMesh2, EVALMESH2, (AND GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2), (mode, i1, i2, j1, j2), &mode, GL_void_return) /* 337 */ GL_PROC(void, gl, Fogf, glFogf, FOGF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) /* 338 */ GL_PROC(void, gl, Fogi, glFogi, FOGI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* 339 */ GL_PROC(void, gl, Fogfv, glFogfv, FOGFV, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) /* 340 */ GL_PROC(void, gl, Fogiv, glFogiv, FOGIV, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) /* 341 */ GL_PROC(void, gl, FeedbackBuffer, glFeedbackBuffer, FEEDBACKBUFFER, (AND GLsizei size, GLenum type, GLfloat *buffer), (size, type, buffer), &size, GL_void_return) /* 342 */ GL_PROC(void, gl, PassThrough, glPassThrough, PASSTHROUGH, (AND GLfloat token), (token), &token, GL_void_return) /* 343 */ GL_PROC(void, gl, SelectBuffer, glSelectBuffer, SELECTBUFFER, (AND GLsizei size, GLuint *buffer), (size, buffer), &size, GL_void_return) /* 344 */ GL_PROC(void, gl, InitNames, glInitNames, INITNAMES, (NOTHING), (), NULL, GL_void_return) /* 345 */ GL_PROC(void, gl, LoadName, glLoadName, LOADNAME, (AND GLuint name), (name), &name, GL_void_return) /* 346 */ GL_PROC(void, gl, PushName, glPushName, PUSHNAME, (AND GLuint name), (name), &name, GL_void_return) /* 347 */ GL_PROC(void, gl, PopName, glPopName, POPNAME, (NOTHING), (), NULL, GL_void_return) /* 348 */ GL_PROC(void, gl, EnableTraceMESA, glEnableTraceMESA, ENABLETRACEMESA, (AND GLbitfield mask), (mask), &mask, GL_void_return) /* 349 */ GL_PROC(void, gl, DisableTraceMESA, glDisableTraceMESA, DISABLETRACEMESA, (AND GLbitfield mask), (mask), &mask, GL_void_return) /* 350 */ GL_PROC(void, gl, NewTraceMESA, glNewTraceMESA, NEWTRACEMESA, (AND GLbitfield mask, const GLubyte *traceName), (mask, traceName), &mask, GL_void_return) /* 351 */ GL_PROC(void, gl, EndTraceMESA, glEndTraceMESA, ENDTRACEMESA, (NOTHING), (), NULL, GL_void_return) /* 352 */ GL_PROC(void, gl, TraceAssertAttribMESA, glTraceAssertAttribMESA, TRACEASSERTATTRIBMESA, (AND GLbitfield attribMask), (attribMask), &attribMask, GL_void_return) /* 353 */ GL_PROC(void, gl, TraceCommentMESA, glTraceCommentMESA, TRACECOMMENTMESA, (AND const GLubyte *comment), (comment), &comment, GL_void_return) /* 354 */ GL_PROC(void, gl, TraceTextureMESA, glTraceTextureMESA, TRACETEXTUREMESA, (AND GLuint name, const GLubyte *comment), (name, comment), &name, GL_void_return) /* 355 */ GL_PROC(void, gl, TraceListMESA, glTraceListMESA, TRACELISTMESA, (AND GLuint name, const GLubyte *comment), (name, comment), &name, GL_void_return) /* 356 */ GL_PROC(void, gl, TracePointerMESA, glTracePointerMESA, TRACEPOINTERMESA, (AND GLvoid *pointer, const GLubyte *comment), (pointer, comment), &pointer, GL_void_return) /* 357 */ GL_PROC(void, gl, TracePointerRangeMESA, glTracePointerRangeMESA, TRACEPOINTERRANGEMESA, (AND const GLvoid *first, const GLvoid *last, const GLubyte *comment), (first, last, comment), &first, GL_void_return) /* 358 */ GL_PROC(void, gl, BlendEquationSeparateATI, glBlendEquationSeparateATI, BLENDEQUATIONSEPARATEATI, (AND GLenum equationRGB, GLenum equationAlpha), (equationRGB, equationAlpha), &equationRGB, GL_void_return) /* 359 */ GL_PROC(void, gl, BlendColor, glBlendColor, BLENDCOLOR, (AND GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha), &red, GL_void_return) /* 360 */ GL_PROC(void, gl, BlendEquation, glBlendEquation, BLENDEQUATION, (AND GLenum mode), (mode), &mode, GL_void_return) /* 361 */ GL_PROC(void, gl, DrawRangeElements, glDrawRangeElements, DRAWRANGEELEMENTS, (AND GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices), (mode, start, end, count, type, indices), &mode, GL_void_return) /* 362 */ GL_PROC(void, gl, ColorTable, glColorTable, COLORTABLE, (AND GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table), (target, internalformat, width, format, type, table), &target, GL_void_return) /* 363 */ GL_PROC(void, gl, ColorTableParameterfv, glColorTableParameterfv, COLORTABLEPARAMETERFV, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) /* 364 */ GL_PROC(void, gl, ColorTableParameteriv, glColorTableParameteriv, COLORTABLEPARAMETERIV, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) /* 365 */ GL_PROC(void, gl, CopyColorTable, glCopyColorTable, COPYCOLORTABLE, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width), (target, internalformat, x, y, width), &target, GL_void_return) /* 366 */ GL_PROC(void, gl, GetColorTable, glGetColorTable, GETCOLORTABLE, (AND GLenum target, GLenum format, GLenum type, void *table), (target, format, type, table), &target, GL_void_return) /* 367 */ GL_PROC(void, gl, GetColorTableParameterfv, glGetColorTableParameterfv, GETCOLORTABLEPARAMETERFV, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) /* 368 */ GL_PROC(void, gl, GetColorTableParameteriv, glGetColorTableParameteriv, GETCOLORTABLEPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 369 */ GL_PROC(void, gl, ColorSubTable, glColorSubTable, COLORSUBTABLE, (AND GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data), (target, start, count, format, type, data), &target, GL_void_return) /* 370 */ GL_PROC(void, gl, CopyColorSubTable, glCopyColorSubTable, COPYCOLORSUBTABLE, (AND GLenum target, GLsizei start, GLint x, GLint y, GLsizei width), (target, start, x, y, width), &target, GL_void_return) /* 371 */ GL_PROC(void, gl, ConvolutionFilter1D, glConvolutionFilter1D, CONVOLUTIONFILTER1D, (AND GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image), (target, internalformat, width, format, type, image), &target, GL_void_return) /* 372 */ GL_PROC(void, gl, ConvolutionFilter2D, glConvolutionFilter2D, CONVOLUTIONFILTER2D, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image), (target, internalformat, width, height, format, type, image), &target, GL_void_return) /* 373 */ GL_PROC(void, gl, ConvolutionParameterf, glConvolutionParameterf, CONVOLUTIONPARAMETERF, (AND GLenum target, GLenum pname, GLfloat params), (target, pname, params), &target, GL_void_return) /* 374 */ GL_PROC(void, gl, ConvolutionParameterfv, glConvolutionParameterfv, CONVOLUTIONPARAMETERFV, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) /* 375 */ GL_PROC(void, gl, ConvolutionParameteri, glConvolutionParameteri, CONVOLUTIONPARAMETERI, (AND GLenum target, GLenum pname, GLint params), (target, pname, params), &target, GL_void_return) /* 376 */ GL_PROC(void, gl, ConvolutionParameteriv, glConvolutionParameteriv, CONVOLUTIONPARAMETERIV, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) /* 377 */ GL_PROC(void, gl, CopyConvolutionFilter1D, glCopyConvolutionFilter1D, COPYCONVOLUTIONFILTER1D, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width), (target, internalformat, x, y, width), &target, GL_void_return) /* 378 */ GL_PROC(void, gl, CopyConvolutionFilter2D, glCopyConvolutionFilter2D, COPYCONVOLUTIONFILTER2D, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height), (target, internalformat, x, y, width, height), &target, GL_void_return) /* 379 */ GL_PROC(void, gl, GetConvolutionFilter, glGetConvolutionFilter, GETCONVOLUTIONFILTER, (AND GLenum target, GLenum format, GLenum type, void *image), (target, format, type, image), &target, GL_void_return) /* 380 */ GL_PROC(void, gl, GetConvolutionParameterfv, glGetConvolutionParameterfv, GETCONVOLUTIONPARAMETERFV, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) /* 381 */ GL_PROC(void, gl, GetConvolutionParameteriv, glGetConvolutionParameteriv, GETCONVOLUTIONPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 382 */ GL_PROC(void, gl, GetSeparableFilter, glGetSeparableFilter, GETSEPARABLEFILTER, (AND GLenum target, GLenum format, GLenum type, void *row, void *column, void *span), (target, format, type, row, column, span), &target, GL_void_return) /* 383 */ GL_PROC(void, gl, SeparableFilter2D, glSeparableFilter2D, SEPARABLEFILTER2D, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column), (target, internalformat, width, height, format, type, row, column), &target, GL_void_return) /* 384 */ GL_PROC(void, gl, GetHistogram, glGetHistogram, GETHISTOGRAM, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values), (target, reset, format, type, values), &target, GL_void_return) /* 385 */ GL_PROC(void, gl, GetHistogramParameterfv, glGetHistogramParameterfv, GETHISTOGRAMPARAMETERFV, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) /* 386 */ GL_PROC(void, gl, GetHistogramParameteriv, glGetHistogramParameteriv, GETHISTOGRAMPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 387 */ GL_PROC(void, gl, GetMinmax, glGetMinmax, GETMINMAX, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values), (target, reset, format, type, values), &target, GL_void_return) /* 388 */ GL_PROC(void, gl, GetMinmaxParameterfv, glGetMinmaxParameterfv, GETMINMAXPARAMETERFV, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) /* 389 */ GL_PROC(void, gl, GetMinmaxParameteriv, glGetMinmaxParameteriv, GETMINMAXPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 390 */ GL_PROC(void, gl, Histogram, glHistogram, HISTOGRAM, (AND GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink), (target, width, internalformat, sink), &target, GL_void_return) /* 391 */ GL_PROC(void, gl, Minmax, glMinmax, MINMAX, (AND GLenum target, GLenum internalformat, GLboolean32 sink), (target, internalformat, sink), &target, GL_void_return) /* 392 */ GL_PROC(void, gl, ResetHistogram, glResetHistogram, RESETHISTOGRAM, (AND GLenum target), (target), &target, GL_void_return) /* 393 */ GL_PROC(void, gl, ResetMinmax, glResetMinmax, RESETMINMAX, (AND GLenum target), (target), &target, GL_void_return) /* 394 */ GL_PROC(void, gl, TexImage3D, glTexImage3D, TEXIMAGE3D, (AND GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels), (target, level, internalformat, width, height, depth, border, format, type, pixels), &target, GL_void_return) /* 395 */ GL_PROC(void, gl, TexSubImage3D, glTexSubImage3D, TEXSUBIMAGE3D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &target, GL_void_return) /* 396 */ GL_PROC(void, gl, CopyTexSubImage3D, glCopyTexSubImage3D, COPYTEXSUBIMAGE3D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, zoffset, x, y, width, height), &target, GL_void_return) /* 397 */ GL_PROC(void, gl, ActiveTexture, glActiveTexture, ACTIVETEXTURE, (AND GLenum texture), (texture), &texture, GL_void_return) /* 398 */ GL_PROC(void, gl, ClientActiveTexture, glClientActiveTexture, CLIENTACTIVETEXTURE, (AND GLenum texture), (texture), &texture, GL_void_return) /* 399 */ GL_PROC(void, gl, MultiTexCoord1d, glMultiTexCoord1d, MULTITEXCOORD1D, (AND GLenum target, GLdouble s), (target, s), &target, GL_void_return) /* 400 */ GL_PROC(void, gl, MultiTexCoord1dv, glMultiTexCoord1dv, MULTITEXCOORD1DV, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) /* 401 */ GL_PROC(void, gl, MultiTexCoord1f, glMultiTexCoord1f, MULTITEXCOORD1F, (AND GLenum target, GLfloat s), (target, s), &target, GL_void_return) /* 402 */ GL_PROC(void, gl, MultiTexCoord1fv, glMultiTexCoord1fv, MULTITEXCOORD1FV, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) /* 403 */ GL_PROC(void, gl, MultiTexCoord1i, glMultiTexCoord1i, MULTITEXCOORD1I, (AND GLenum target, GLint s), (target, s), &target, GL_void_return) /* 404 */ GL_PROC(void, gl, MultiTexCoord1iv, glMultiTexCoord1iv, MULTITEXCOORD1IV, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) /* 405 */ GL_PROC(void, gl, MultiTexCoord1s, glMultiTexCoord1s, MULTITEXCOORD1S, (AND GLenum target, GLshort32 s), (target, s), &target, GL_void_return) /* 406 */ GL_PROC(void, gl, MultiTexCoord1sv, glMultiTexCoord1sv, MULTITEXCOORD1SV, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) /* 407 */ GL_PROC(void, gl, MultiTexCoord2d, glMultiTexCoord2d, MULTITEXCOORD2D, (AND GLenum target, GLdouble s, GLdouble t), (target, s, t), &target, GL_void_return) /* 408 */ GL_PROC(void, gl, MultiTexCoord2dv, glMultiTexCoord2dv, MULTITEXCOORD2DV, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) /* 409 */ GL_PROC(void, gl, MultiTexCoord2f, glMultiTexCoord2f, MULTITEXCOORD2F, (AND GLenum target, GLfloat s, GLfloat t), (target, s, t), &target, GL_void_return) /* 410 */ GL_PROC(void, gl, MultiTexCoord2fv, glMultiTexCoord2fv, MULTITEXCOORD2FV, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) /* 411 */ GL_PROC(void, gl, MultiTexCoord2i, glMultiTexCoord2i, MULTITEXCOORD2I, (AND GLenum target, GLint s, GLint t), (target, s, t), &target, GL_void_return) /* 412 */ GL_PROC(void, gl, MultiTexCoord2iv, glMultiTexCoord2iv, MULTITEXCOORD2IV, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) /* 413 */ GL_PROC(void, gl, MultiTexCoord2s, glMultiTexCoord2s, MULTITEXCOORD2S, (AND GLenum target, GLshort32 s, GLshort32 t), (target, s, t), &target, GL_void_return) /* 414 */ GL_PROC(void, gl, MultiTexCoord2sv, glMultiTexCoord2sv, MULTITEXCOORD2SV, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) /* 415 */ GL_PROC(void, gl, MultiTexCoord3d, glMultiTexCoord3d, MULTITEXCOORD3D, (AND GLenum target, GLdouble s, GLdouble t, GLdouble r), (target, s, t, r), &target, GL_void_return) /* 416 */ GL_PROC(void, gl, MultiTexCoord3dv, glMultiTexCoord3dv, MULTITEXCOORD3DV, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) /* 417 */ GL_PROC(void, gl, MultiTexCoord3f, glMultiTexCoord3f, MULTITEXCOORD3F, (AND GLenum target, GLfloat s, GLfloat t, GLfloat r), (target, s, t, r), &target, GL_void_return) /* 418 */ GL_PROC(void, gl, MultiTexCoord3fv, glMultiTexCoord3fv, MULTITEXCOORD3FV, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) /* 419 */ GL_PROC(void, gl, MultiTexCoord3i, glMultiTexCoord3i, MULTITEXCOORD3I, (AND GLenum target, GLint s, GLint t, GLint r), (target, s, t, r), &target, GL_void_return) /* 420 */ GL_PROC(void, gl, MultiTexCoord3iv, glMultiTexCoord3iv, MULTITEXCOORD3IV, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) /* 421 */ GL_PROC(void, gl, MultiTexCoord3s, glMultiTexCoord3s, MULTITEXCOORD3S, (AND GLenum target, GLshort32 s, GLshort32 t, GLshort32 r), (target, s, t, r), &target, GL_void_return) /* 422 */ GL_PROC(void, gl, MultiTexCoord3sv, glMultiTexCoord3sv, MULTITEXCOORD3SV, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) /* 423 */ GL_PROC(void, gl, MultiTexCoord4d, glMultiTexCoord4d, MULTITEXCOORD4D, (AND GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q), (target, s, t, r, q), &target, GL_void_return) /* 424 */ GL_PROC(void, gl, MultiTexCoord4dv, glMultiTexCoord4dv, MULTITEXCOORD4DV, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) /* 425 */ GL_PROC(void, gl, MultiTexCoord4f, glMultiTexCoord4f, MULTITEXCOORD4F, (AND GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q), (target, s, t, r, q), &target, GL_void_return) /* 426 */ GL_PROC(void, gl, MultiTexCoord4fv, glMultiTexCoord4fv, MULTITEXCOORD4FV, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) /* 427 */ GL_PROC(void, gl, MultiTexCoord4i, glMultiTexCoord4i, MULTITEXCOORD4I, (AND GLenum target, GLint s, GLint t, GLint r, GLint q), (target, s, t, r, q), &target, GL_void_return) /* 428 */ GL_PROC(void, gl, MultiTexCoord4iv, glMultiTexCoord4iv, MULTITEXCOORD4IV, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) /* 429 */ GL_PROC(void, gl, MultiTexCoord4s, glMultiTexCoord4s, MULTITEXCOORD4S, (AND GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q), (target, s, t, r, q), &target, GL_void_return) /* 430 */ GL_PROC(void, gl, MultiTexCoord4sv, glMultiTexCoord4sv, MULTITEXCOORD4SV, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) /* 431 */ GL_PROC(void, gl, LoadTransposeMatrixf, glLoadTransposeMatrixf, LOADTRANSPOSEMATRIXF, (AND const GLfloat *m), (m), &m, GL_void_return) /* 432 */ GL_PROC(void, gl, LoadTransposeMatrixd, glLoadTransposeMatrixd, LOADTRANSPOSEMATRIXD, (AND const GLdouble *m), (m), &m, GL_void_return) /* 433 */ GL_PROC(void, gl, MultTransposeMatrixf, glMultTransposeMatrixf, MULTTRANSPOSEMATRIXF, (AND const GLfloat *m), (m), &m, GL_void_return) /* 434 */ GL_PROC(void, gl, MultTransposeMatrixd, glMultTransposeMatrixd, MULTTRANSPOSEMATRIXD, (AND const GLdouble *m), (m), &m, GL_void_return) /* 435 */ GL_PROC(void, gl, SampleCoverage, glSampleCoverage, SAMPLECOVERAGE, (AND GLfloat value, GLboolean32 invert), (value, invert), &value, GL_void_return) /* 436 */ GL_PROC(void, gl, CompressedTexImage3D, glCompressedTexImage3D, COMPRESSEDTEXIMAGE3D, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data), (target, level, internalformat, width, height, depth, border, imageSize, data), &target, GL_void_return) /* 437 */ GL_PROC(void, gl, CompressedTexImage2D, glCompressedTexImage2D, COMPRESSEDTEXIMAGE2D, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data), (target, level, internalformat, width, height, border, imageSize, data), &target, GL_void_return) /* 438 */ GL_PROC(void, gl, CompressedTexImage1D, glCompressedTexImage1D, COMPRESSEDTEXIMAGE1D, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data), (target, level, internalformat, width, border, imageSize, data), &target, GL_void_return) /* 439 */ GL_PROC(void, gl, CompressedTexSubImage3D, glCompressedTexSubImage3D, COMPRESSEDTEXSUBIMAGE3D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), &target, GL_void_return) /* 440 */ GL_PROC(void, gl, CompressedTexSubImage2D, glCompressedTexSubImage2D, COMPRESSEDTEXSUBIMAGE2D, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data), (target, level, xoffset, yoffset, width, height, format, imageSize, data), &target, GL_void_return) /* 441 */ GL_PROC(void, gl, CompressedTexSubImage1D, glCompressedTexSubImage1D, COMPRESSEDTEXSUBIMAGE1D, (AND GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data), (target, level, xoffset, width, format, imageSize, data), &target, GL_void_return) /* 442 */ GL_PROC(void, gl, GetCompressedTexImage, glGetCompressedTexImage, GETCOMPRESSEDTEXIMAGE, (AND GLenum target, GLint level, void *img), (target, level, img), &target, GL_void_return) /* 443 */ GL_PROC(void, gl, BlendFuncSeparate, glBlendFuncSeparate, BLENDFUNCSEPARATE, (AND GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha), (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), &sfactorRGB, GL_void_return) /* 444 */ GL_PROC(void, gl, FogCoordf, glFogCoordf, FOGCOORDF, (AND GLfloat coord), (coord), &coord, GL_void_return) /* 445 */ GL_PROC(void, gl, FogCoordfv, glFogCoordfv, FOGCOORDFV, (AND const GLfloat *coord), (coord), &coord, GL_void_return) /* 446 */ GL_PROC(void, gl, FogCoordd, glFogCoordd, FOGCOORDD, (AND GLdouble coord), (coord), &coord, GL_void_return) /* 447 */ GL_PROC(void, gl, FogCoorddv, glFogCoorddv, FOGCOORDDV, (AND const GLdouble *coord), (coord), &coord, GL_void_return) /* 448 */ GL_PROC(void, gl, FogCoordPointer, glFogCoordPointer, FOGCOORDPOINTER, (AND GLenum type, GLsizei stride, const void *pointer), (type, stride, pointer), &type, GL_void_return) /* 449 */ GL_PROC(void, gl, MultiDrawArrays, glMultiDrawArrays, MULTIDRAWARRAYS, (AND GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount), (mode, first, count, drawcount), &mode, GL_void_return) /* 450 */ GL_PROC(void, gl, MultiDrawElements, glMultiDrawElements, MULTIDRAWELEMENTS, (AND GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount), (mode, count, type, indices, drawcount), &mode, GL_void_return) /* 451 */ GL_PROC(void, gl, PointParameterf, glPointParameterf, POINTPARAMETERF, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) /* 452 */ GL_PROC(void, gl, PointParameterfv, glPointParameterfv, POINTPARAMETERFV, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) /* 453 */ GL_PROC(void, gl, PointParameteri, glPointParameteri, POINTPARAMETERI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* 454 */ GL_PROC(void, gl, PointParameteriv, glPointParameteriv, POINTPARAMETERIV, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) /* 455 */ GL_PROC(void, gl, SecondaryColor3b, glSecondaryColor3b, SECONDARYCOLOR3B, (AND GLbyte32 red, GLbyte32 green, GLbyte32 blue), (red, green, blue), &red, GL_void_return) /* 456 */ GL_PROC(void, gl, SecondaryColor3bv, glSecondaryColor3bv, SECONDARYCOLOR3BV, (AND const GLbyte *v), (v), &v, GL_void_return) /* 457 */ GL_PROC(void, gl, SecondaryColor3d, glSecondaryColor3d, SECONDARYCOLOR3D, (AND GLdouble red, GLdouble green, GLdouble blue), (red, green, blue), &red, GL_void_return) /* 458 */ GL_PROC(void, gl, SecondaryColor3dv, glSecondaryColor3dv, SECONDARYCOLOR3DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 459 */ GL_PROC(void, gl, SecondaryColor3f, glSecondaryColor3f, SECONDARYCOLOR3F, (AND GLfloat red, GLfloat green, GLfloat blue), (red, green, blue), &red, GL_void_return) /* 460 */ GL_PROC(void, gl, SecondaryColor3fv, glSecondaryColor3fv, SECONDARYCOLOR3FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 461 */ GL_PROC(void, gl, SecondaryColor3i, glSecondaryColor3i, SECONDARYCOLOR3I, (AND GLint red, GLint green, GLint blue), (red, green, blue), &red, GL_void_return) /* 462 */ GL_PROC(void, gl, SecondaryColor3iv, glSecondaryColor3iv, SECONDARYCOLOR3IV, (AND const GLint *v), (v), &v, GL_void_return) /* 463 */ GL_PROC(void, gl, SecondaryColor3s, glSecondaryColor3s, SECONDARYCOLOR3S, (AND GLshort32 red, GLshort32 green, GLshort32 blue), (red, green, blue), &red, GL_void_return) /* 464 */ GL_PROC(void, gl, SecondaryColor3sv, glSecondaryColor3sv, SECONDARYCOLOR3SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 465 */ GL_PROC(void, gl, SecondaryColor3ub, glSecondaryColor3ub, SECONDARYCOLOR3UB, (AND GLubyte32 red, GLubyte32 green, GLubyte32 blue), (red, green, blue), &red, GL_void_return) /* 466 */ GL_PROC(void, gl, SecondaryColor3ubv, glSecondaryColor3ubv, SECONDARYCOLOR3UBV, (AND const GLubyte *v), (v), &v, GL_void_return) /* 467 */ GL_PROC(void, gl, SecondaryColor3ui, glSecondaryColor3ui, SECONDARYCOLOR3UI, (AND GLuint red, GLuint green, GLuint blue), (red, green, blue), &red, GL_void_return) /* 468 */ GL_PROC(void, gl, SecondaryColor3uiv, glSecondaryColor3uiv, SECONDARYCOLOR3UIV, (AND const GLuint *v), (v), &v, GL_void_return) /* 469 */ GL_PROC(void, gl, SecondaryColor3us, glSecondaryColor3us, SECONDARYCOLOR3US, (AND GLushort32 red, GLushort32 green, GLushort32 blue), (red, green, blue), &red, GL_void_return) /* 470 */ GL_PROC(void, gl, SecondaryColor3usv, glSecondaryColor3usv, SECONDARYCOLOR3USV, (AND const GLushort *v), (v), &v, GL_void_return) /* 471 */ GL_PROC(void, gl, SecondaryColorPointer, glSecondaryColorPointer, SECONDARYCOLORPOINTER, (AND GLint size, GLenum type, GLsizei stride, const void *pointer), (size, type, stride, pointer), &size, GL_void_return) /* 472 */ GL_PROC(void, gl, WindowPos2d, glWindowPos2d, WINDOWPOS2D, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) /* 473 */ GL_PROC(void, gl, WindowPos2dv, glWindowPos2dv, WINDOWPOS2DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 474 */ GL_PROC(void, gl, WindowPos2f, glWindowPos2f, WINDOWPOS2F, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) /* 475 */ GL_PROC(void, gl, WindowPos2fv, glWindowPos2fv, WINDOWPOS2FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 476 */ GL_PROC(void, gl, WindowPos2i, glWindowPos2i, WINDOWPOS2I, (AND GLint x, GLint y), (x, y), &x, GL_void_return) /* 477 */ GL_PROC(void, gl, WindowPos2iv, glWindowPos2iv, WINDOWPOS2IV, (AND const GLint *v), (v), &v, GL_void_return) /* 478 */ GL_PROC(void, gl, WindowPos2s, glWindowPos2s, WINDOWPOS2S, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) /* 479 */ GL_PROC(void, gl, WindowPos2sv, glWindowPos2sv, WINDOWPOS2SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 480 */ GL_PROC(void, gl, WindowPos3d, glWindowPos3d, WINDOWPOS3D, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) /* 481 */ GL_PROC(void, gl, WindowPos3dv, glWindowPos3dv, WINDOWPOS3DV, (AND const GLdouble *v), (v), &v, GL_void_return) /* 482 */ GL_PROC(void, gl, WindowPos3f, glWindowPos3f, WINDOWPOS3F, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) /* 483 */ GL_PROC(void, gl, WindowPos3fv, glWindowPos3fv, WINDOWPOS3FV, (AND const GLfloat *v), (v), &v, GL_void_return) /* 484 */ GL_PROC(void, gl, WindowPos3i, glWindowPos3i, WINDOWPOS3I, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) /* 485 */ GL_PROC(void, gl, WindowPos3iv, glWindowPos3iv, WINDOWPOS3IV, (AND const GLint *v), (v), &v, GL_void_return) /* 486 */ GL_PROC(void, gl, WindowPos3s, glWindowPos3s, WINDOWPOS3S, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) /* 487 */ GL_PROC(void, gl, WindowPos3sv, glWindowPos3sv, WINDOWPOS3SV, (AND const GLshort *v), (v), &v, GL_void_return) /* 488 */ GL_PROC(void, gl, GenQueries, glGenQueries, GENQUERIES, (AND GLsizei n, GLuint *ids), (n, ids), &n, GL_void_return) /* 489 */ GL_PROC(void, gl, DeleteQueries, glDeleteQueries, DELETEQUERIES, (AND GLsizei n, const GLuint *ids), (n, ids), &n, GL_void_return) /* 490 */ GL_PROC(GLboolean, gl, IsQuery, glIsQuery, ISQUERY, (AND GLuint id), (id), &id, return (GLboolean)) /* 491 */ GL_PROC(void, gl, BeginQuery, glBeginQuery, BEGINQUERY, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) /* 492 */ GL_PROC(void, gl, EndQuery, glEndQuery, ENDQUERY, (AND GLenum target), (target), &target, GL_void_return) /* 493 */ GL_PROC(void, gl, GetQueryiv, glGetQueryiv, GETQUERYIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 494 */ GL_PROC(void, gl, GetQueryObjectiv, glGetQueryObjectiv, GETQUERYOBJECTIV, (AND GLuint id, GLenum pname, GLint *params), (id, pname, params), &id, GL_void_return) /* 495 */ GL_PROC(void, gl, GetQueryObjectuiv, glGetQueryObjectuiv, GETQUERYOBJECTUIV, (AND GLuint id, GLenum pname, GLuint *params), (id, pname, params), &id, GL_void_return) /* 496 */ GL_PROC(void, gl, BindBuffer, glBindBuffer, BINDBUFFER, (AND GLenum target, GLuint buffer), (target, buffer), &target, GL_void_return) /* 497 */ GL_PROC(void, gl, DeleteBuffers, glDeleteBuffers, DELETEBUFFERS, (AND GLsizei n, const GLuint *buffers), (n, buffers), &n, GL_void_return) /* 498 */ GL_PROC(void, gl, GenBuffers, glGenBuffers, GENBUFFERS, (AND GLsizei n, GLuint *buffers), (n, buffers), &n, GL_void_return) /* 499 */ GL_PROC(GLboolean, gl, IsBuffer, glIsBuffer, ISBUFFER, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) /* 500 */ GL_PROC(void, gl, BufferData, glBufferData, BUFFERDATA, (AND GLenum target, GLsizeiptr size, const void *data, GLenum usage), (target, size, data, usage), &target, GL_void_return) /* 501 */ GL_PROC(void, gl, BufferSubData, glBufferSubData, BUFFERSUBDATA, (AND GLenum target, GLintptr offset, GLsizeiptr size, const void *data), (target, offset, size, data), &target, GL_void_return) /* 502 */ GL_PROC(void, gl, GetBufferSubData, glGetBufferSubData, GETBUFFERSUBDATA, (AND GLenum target, GLintptr offset, GLsizeiptr size, void *data), (target, offset, size, data), &target, GL_void_return) /* 503 */ GL_PROC(void *, gl, MapBuffer, glMapBuffer, MAPBUFFER, (AND GLenum target, GLenum access), (target, access), &target, return (void *)) /* 504 */ GL_PROC(GLboolean, gl, UnmapBuffer, glUnmapBuffer, UNMAPBUFFER, (AND GLenum target), (target), &target, return (GLboolean)) /* 505 */ GL_PROC(void, gl, GetBufferParameteriv, glGetBufferParameteriv, GETBUFFERPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 506 */ GL_PROC(void, gl, GetBufferPointerv, glGetBufferPointerv, GETBUFFERPOINTERV, (AND GLenum target, GLenum pname, void * *params), (target, pname, params), &target, GL_void_return) /* 507 */ GL_PROC(void, gl, ActiveTextureARB, glActiveTextureARB, ACTIVETEXTUREARB, (AND GLenum texture), (texture), &texture, GL_void_return) /* 508 */ GL_PROC(void, gl, ClientActiveTextureARB, glClientActiveTextureARB, CLIENTACTIVETEXTUREARB, (AND GLenum texture), (texture), &texture, GL_void_return) /* 509 */ GL_PROC(void, gl, MultiTexCoord1dARB, glMultiTexCoord1dARB, MULTITEXCOORD1DARB, (AND GLenum target, GLdouble s), (target, s), &target, GL_void_return) /* 510 */ GL_PROC(void, gl, MultiTexCoord1dvARB, glMultiTexCoord1dvARB, MULTITEXCOORD1DVARB, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) /* 511 */ GL_PROC(void, gl, MultiTexCoord1fARB, glMultiTexCoord1fARB, MULTITEXCOORD1FARB, (AND GLenum target, GLfloat s), (target, s), &target, GL_void_return) /* 512 */ GL_PROC(void, gl, MultiTexCoord1fvARB, glMultiTexCoord1fvARB, MULTITEXCOORD1FVARB, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) /* 513 */ GL_PROC(void, gl, MultiTexCoord1iARB, glMultiTexCoord1iARB, MULTITEXCOORD1IARB, (AND GLenum target, GLint s), (target, s), &target, GL_void_return) /* 514 */ GL_PROC(void, gl, MultiTexCoord1ivARB, glMultiTexCoord1ivARB, MULTITEXCOORD1IVARB, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) /* 515 */ GL_PROC(void, gl, MultiTexCoord1sARB, glMultiTexCoord1sARB, MULTITEXCOORD1SARB, (AND GLenum target, GLshort32 s), (target, s), &target, GL_void_return) /* 516 */ GL_PROC(void, gl, MultiTexCoord1svARB, glMultiTexCoord1svARB, MULTITEXCOORD1SVARB, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) /* 517 */ GL_PROC(void, gl, MultiTexCoord2dARB, glMultiTexCoord2dARB, MULTITEXCOORD2DARB, (AND GLenum target, GLdouble s, GLdouble t), (target, s, t), &target, GL_void_return) /* 518 */ GL_PROC(void, gl, MultiTexCoord2dvARB, glMultiTexCoord2dvARB, MULTITEXCOORD2DVARB, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) /* 519 */ GL_PROC(void, gl, MultiTexCoord2fARB, glMultiTexCoord2fARB, MULTITEXCOORD2FARB, (AND GLenum target, GLfloat s, GLfloat t), (target, s, t), &target, GL_void_return) /* 520 */ GL_PROC(void, gl, MultiTexCoord2fvARB, glMultiTexCoord2fvARB, MULTITEXCOORD2FVARB, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) /* 521 */ GL_PROC(void, gl, MultiTexCoord2iARB, glMultiTexCoord2iARB, MULTITEXCOORD2IARB, (AND GLenum target, GLint s, GLint t), (target, s, t), &target, GL_void_return) /* 522 */ GL_PROC(void, gl, MultiTexCoord2ivARB, glMultiTexCoord2ivARB, MULTITEXCOORD2IVARB, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) /* 523 */ GL_PROC(void, gl, MultiTexCoord2sARB, glMultiTexCoord2sARB, MULTITEXCOORD2SARB, (AND GLenum target, GLshort32 s, GLshort32 t), (target, s, t), &target, GL_void_return) /* 524 */ GL_PROC(void, gl, MultiTexCoord2svARB, glMultiTexCoord2svARB, MULTITEXCOORD2SVARB, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) /* 525 */ GL_PROC(void, gl, MultiTexCoord3dARB, glMultiTexCoord3dARB, MULTITEXCOORD3DARB, (AND GLenum target, GLdouble s, GLdouble t, GLdouble r), (target, s, t, r), &target, GL_void_return) /* 526 */ GL_PROC(void, gl, MultiTexCoord3dvARB, glMultiTexCoord3dvARB, MULTITEXCOORD3DVARB, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) /* 527 */ GL_PROC(void, gl, MultiTexCoord3fARB, glMultiTexCoord3fARB, MULTITEXCOORD3FARB, (AND GLenum target, GLfloat s, GLfloat t, GLfloat r), (target, s, t, r), &target, GL_void_return) /* 528 */ GL_PROC(void, gl, MultiTexCoord3fvARB, glMultiTexCoord3fvARB, MULTITEXCOORD3FVARB, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) /* 529 */ GL_PROC(void, gl, MultiTexCoord3iARB, glMultiTexCoord3iARB, MULTITEXCOORD3IARB, (AND GLenum target, GLint s, GLint t, GLint r), (target, s, t, r), &target, GL_void_return) /* 530 */ GL_PROC(void, gl, MultiTexCoord3ivARB, glMultiTexCoord3ivARB, MULTITEXCOORD3IVARB, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) /* 531 */ GL_PROC(void, gl, MultiTexCoord3sARB, glMultiTexCoord3sARB, MULTITEXCOORD3SARB, (AND GLenum target, GLshort32 s, GLshort32 t, GLshort32 r), (target, s, t, r), &target, GL_void_return) /* 532 */ GL_PROC(void, gl, MultiTexCoord3svARB, glMultiTexCoord3svARB, MULTITEXCOORD3SVARB, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) /* 533 */ GL_PROC(void, gl, MultiTexCoord4dARB, glMultiTexCoord4dARB, MULTITEXCOORD4DARB, (AND GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q), (target, s, t, r, q), &target, GL_void_return) /* 534 */ GL_PROC(void, gl, MultiTexCoord4dvARB, glMultiTexCoord4dvARB, MULTITEXCOORD4DVARB, (AND GLenum target, const GLdouble *v), (target, v), &target, GL_void_return) /* 535 */ GL_PROC(void, gl, MultiTexCoord4fARB, glMultiTexCoord4fARB, MULTITEXCOORD4FARB, (AND GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q), (target, s, t, r, q), &target, GL_void_return) /* 536 */ GL_PROC(void, gl, MultiTexCoord4fvARB, glMultiTexCoord4fvARB, MULTITEXCOORD4FVARB, (AND GLenum target, const GLfloat *v), (target, v), &target, GL_void_return) /* 537 */ GL_PROC(void, gl, MultiTexCoord4iARB, glMultiTexCoord4iARB, MULTITEXCOORD4IARB, (AND GLenum target, GLint s, GLint t, GLint r, GLint q), (target, s, t, r, q), &target, GL_void_return) /* 538 */ GL_PROC(void, gl, MultiTexCoord4ivARB, glMultiTexCoord4ivARB, MULTITEXCOORD4IVARB, (AND GLenum target, const GLint *v), (target, v), &target, GL_void_return) /* 539 */ GL_PROC(void, gl, MultiTexCoord4sARB, glMultiTexCoord4sARB, MULTITEXCOORD4SARB, (AND GLenum target, GLshort32 s, GLshort32 t, GLshort32 r, GLshort32 q), (target, s, t, r, q), &target, GL_void_return) /* 540 */ GL_PROC(void, gl, MultiTexCoord4svARB, glMultiTexCoord4svARB, MULTITEXCOORD4SVARB, (AND GLenum target, const GLshort *v), (target, v), &target, GL_void_return) /* 541 */ GL_PROC(void, gl, LoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, LOADTRANSPOSEMATRIXFARB, (AND const GLfloat *m), (m), &m, GL_void_return) /* 542 */ GL_PROC(void, gl, LoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, LOADTRANSPOSEMATRIXDARB, (AND const GLdouble *m), (m), &m, GL_void_return) /* 543 */ GL_PROC(void, gl, MultTransposeMatrixfARB, glMultTransposeMatrixfARB, MULTTRANSPOSEMATRIXFARB, (AND const GLfloat *m), (m), &m, GL_void_return) /* 544 */ GL_PROC(void, gl, MultTransposeMatrixdARB, glMultTransposeMatrixdARB, MULTTRANSPOSEMATRIXDARB, (AND const GLdouble *m), (m), &m, GL_void_return) /* 545 */ GL_PROC(void, gl, SampleCoverageARB, glSampleCoverageARB, SAMPLECOVERAGEARB, (AND GLfloat value, GLboolean32 invert), (value, invert), &value, GL_void_return) /* 546 */ GL_PROC(void, gl, CompressedTexImage3DARB, glCompressedTexImage3DARB, COMPRESSEDTEXIMAGE3DARB, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data), (target, level, internalformat, width, height, depth, border, imageSize, data), &target, GL_void_return) /* 547 */ GL_PROC(void, gl, CompressedTexImage2DARB, glCompressedTexImage2DARB, COMPRESSEDTEXIMAGE2DARB, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data), (target, level, internalformat, width, height, border, imageSize, data), &target, GL_void_return) /* 548 */ GL_PROC(void, gl, CompressedTexImage1DARB, glCompressedTexImage1DARB, COMPRESSEDTEXIMAGE1DARB, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data), (target, level, internalformat, width, border, imageSize, data), &target, GL_void_return) /* 549 */ GL_PROC(void, gl, CompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, COMPRESSEDTEXSUBIMAGE3DARB, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), &target, GL_void_return) /* 550 */ GL_PROC(void, gl, CompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, COMPRESSEDTEXSUBIMAGE2DARB, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data), (target, level, xoffset, yoffset, width, height, format, imageSize, data), &target, GL_void_return) /* 551 */ GL_PROC(void, gl, CompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, COMPRESSEDTEXSUBIMAGE1DARB, (AND GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data), (target, level, xoffset, width, format, imageSize, data), &target, GL_void_return) /* 552 */ GL_PROC(void, gl, GetCompressedTexImageARB, glGetCompressedTexImageARB, GETCOMPRESSEDTEXIMAGEARB, (AND GLenum target, GLint level, void *img), (target, level, img), &target, GL_void_return) /* 553 */ GL_PROC(void, gl, PointParameterfARB, glPointParameterfARB, POINTPARAMETERFARB, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) /* 554 */ GL_PROC(void, gl, PointParameterfvARB, glPointParameterfvARB, POINTPARAMETERFVARB, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) /* 555 */ GL_PROC(void, gl, WeightbvARB, glWeightbvARB, WEIGHTBVARB, (AND GLint size, const GLbyte *weights), (size, weights), &size, GL_void_return) /* 556 */ GL_PROC(void, gl, WeightsvARB, glWeightsvARB, WEIGHTSVARB, (AND GLint size, const GLshort *weights), (size, weights), &size, GL_void_return) /* 557 */ GL_PROC(void, gl, WeightivARB, glWeightivARB, WEIGHTIVARB, (AND GLint size, const GLint *weights), (size, weights), &size, GL_void_return) /* 558 */ GL_PROC(void, gl, WeightfvARB, glWeightfvARB, WEIGHTFVARB, (AND GLint size, const GLfloat *weights), (size, weights), &size, GL_void_return) /* 559 */ GL_PROC(void, gl, WeightdvARB, glWeightdvARB, WEIGHTDVARB, (AND GLint size, const GLdouble *weights), (size, weights), &size, GL_void_return) /* 560 */ GL_PROC(void, gl, WeightubvARB, glWeightubvARB, WEIGHTUBVARB, (AND GLint size, const GLubyte *weights), (size, weights), &size, GL_void_return) /* 561 */ GL_PROC(void, gl, WeightusvARB, glWeightusvARB, WEIGHTUSVARB, (AND GLint size, const GLushort *weights), (size, weights), &size, GL_void_return) /* 562 */ GL_PROC(void, gl, WeightuivARB, glWeightuivARB, WEIGHTUIVARB, (AND GLint size, const GLuint *weights), (size, weights), &size, GL_void_return) /* 563 */ GL_PROC(void, gl, WeightPointerARB, glWeightPointerARB, WEIGHTPOINTERARB, (AND GLint size, GLenum type, GLsizei stride, const void *pointer), (size, type, stride, pointer), &size, GL_void_return) /* 564 */ GL_PROC(void, gl, VertexBlendARB, glVertexBlendARB, VERTEXBLENDARB, (AND GLint count), (count), &count, GL_void_return) /* 565 */ GL_PROC(void, gl, CurrentPaletteMatrixARB, glCurrentPaletteMatrixARB, CURRENTPALETTEMATRIXARB, (AND GLint index), (index), &index, GL_void_return) /* 566 */ GL_PROC(void, gl, MatrixIndexubvARB, glMatrixIndexubvARB, MATRIXINDEXUBVARB, (AND GLint size, const GLubyte *indices), (size, indices), &size, GL_void_return) /* 567 */ GL_PROC(void, gl, MatrixIndexusvARB, glMatrixIndexusvARB, MATRIXINDEXUSVARB, (AND GLint size, const GLushort *indices), (size, indices), &size, GL_void_return) /* 568 */ GL_PROC(void, gl, MatrixIndexuivARB, glMatrixIndexuivARB, MATRIXINDEXUIVARB, (AND GLint size, const GLuint *indices), (size, indices), &size, GL_void_return) /* 569 */ GL_PROC(void, gl, MatrixIndexPointerARB, glMatrixIndexPointerARB, MATRIXINDEXPOINTERARB, (AND GLint size, GLenum type, GLsizei stride, const void *pointer), (size, type, stride, pointer), &size, GL_void_return) /* 570 */ GL_PROC(void, gl, WindowPos2dARB, glWindowPos2dARB, WINDOWPOS2DARB, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) /* 571 */ GL_PROC(void, gl, WindowPos2dvARB, glWindowPos2dvARB, WINDOWPOS2DVARB, (AND const GLdouble *v), (v), &v, GL_void_return) /* 572 */ GL_PROC(void, gl, WindowPos2fARB, glWindowPos2fARB, WINDOWPOS2FARB, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) /* 573 */ GL_PROC(void, gl, WindowPos2fvARB, glWindowPos2fvARB, WINDOWPOS2FVARB, (AND const GLfloat *v), (v), &v, GL_void_return) /* 574 */ GL_PROC(void, gl, WindowPos2iARB, glWindowPos2iARB, WINDOWPOS2IARB, (AND GLint x, GLint y), (x, y), &x, GL_void_return) /* 575 */ GL_PROC(void, gl, WindowPos2ivARB, glWindowPos2ivARB, WINDOWPOS2IVARB, (AND const GLint *v), (v), &v, GL_void_return) /* 576 */ GL_PROC(void, gl, WindowPos2sARB, glWindowPos2sARB, WINDOWPOS2SARB, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) /* 577 */ GL_PROC(void, gl, WindowPos2svARB, glWindowPos2svARB, WINDOWPOS2SVARB, (AND const GLshort *v), (v), &v, GL_void_return) /* 578 */ GL_PROC(void, gl, WindowPos3dARB, glWindowPos3dARB, WINDOWPOS3DARB, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) /* 579 */ GL_PROC(void, gl, WindowPos3dvARB, glWindowPos3dvARB, WINDOWPOS3DVARB, (AND const GLdouble *v), (v), &v, GL_void_return) /* 580 */ GL_PROC(void, gl, WindowPos3fARB, glWindowPos3fARB, WINDOWPOS3FARB, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) /* 581 */ GL_PROC(void, gl, WindowPos3fvARB, glWindowPos3fvARB, WINDOWPOS3FVARB, (AND const GLfloat *v), (v), &v, GL_void_return) /* 582 */ GL_PROC(void, gl, WindowPos3iARB, glWindowPos3iARB, WINDOWPOS3IARB, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) /* 583 */ GL_PROC(void, gl, WindowPos3ivARB, glWindowPos3ivARB, WINDOWPOS3IVARB, (AND const GLint *v), (v), &v, GL_void_return) /* 584 */ GL_PROC(void, gl, WindowPos3sARB, glWindowPos3sARB, WINDOWPOS3SARB, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) /* 585 */ GL_PROC(void, gl, WindowPos3svARB, glWindowPos3svARB, WINDOWPOS3SVARB, (AND const GLshort *v), (v), &v, GL_void_return) /* 586 */ GL_PROC(void, gl, VertexAttrib1dARB, glVertexAttrib1dARB, VERTEXATTRIB1DARB, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) /* 587 */ GL_PROC(void, gl, VertexAttrib1dvARB, glVertexAttrib1dvARB, VERTEXATTRIB1DVARB, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 588 */ GL_PROC(void, gl, VertexAttrib1fARB, glVertexAttrib1fARB, VERTEXATTRIB1FARB, (AND GLuint index, GLfloat x), (index, x), &index, GL_void_return) /* 589 */ GL_PROC(void, gl, VertexAttrib1fvARB, glVertexAttrib1fvARB, VERTEXATTRIB1FVARB, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) /* 590 */ GL_PROC(void, gl, VertexAttrib1sARB, glVertexAttrib1sARB, VERTEXATTRIB1SARB, (AND GLuint index, GLshort32 x), (index, x), &index, GL_void_return) /* 591 */ GL_PROC(void, gl, VertexAttrib1svARB, glVertexAttrib1svARB, VERTEXATTRIB1SVARB, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 592 */ GL_PROC(void, gl, VertexAttrib2dARB, glVertexAttrib2dARB, VERTEXATTRIB2DARB, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) /* 593 */ GL_PROC(void, gl, VertexAttrib2dvARB, glVertexAttrib2dvARB, VERTEXATTRIB2DVARB, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 594 */ GL_PROC(void, gl, VertexAttrib2fARB, glVertexAttrib2fARB, VERTEXATTRIB2FARB, (AND GLuint index, GLfloat x, GLfloat y), (index, x, y), &index, GL_void_return) /* 595 */ GL_PROC(void, gl, VertexAttrib2fvARB, glVertexAttrib2fvARB, VERTEXATTRIB2FVARB, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) /* 596 */ GL_PROC(void, gl, VertexAttrib2sARB, glVertexAttrib2sARB, VERTEXATTRIB2SARB, (AND GLuint index, GLshort32 x, GLshort32 y), (index, x, y), &index, GL_void_return) /* 597 */ GL_PROC(void, gl, VertexAttrib2svARB, glVertexAttrib2svARB, VERTEXATTRIB2SVARB, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 598 */ GL_PROC(void, gl, VertexAttrib3dARB, glVertexAttrib3dARB, VERTEXATTRIB3DARB, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) /* 599 */ GL_PROC(void, gl, VertexAttrib3dvARB, glVertexAttrib3dvARB, VERTEXATTRIB3DVARB, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 600 */ GL_PROC(void, gl, VertexAttrib3fARB, glVertexAttrib3fARB, VERTEXATTRIB3FARB, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z), (index, x, y, z), &index, GL_void_return) /* 601 */ GL_PROC(void, gl, VertexAttrib3fvARB, glVertexAttrib3fvARB, VERTEXATTRIB3FVARB, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) /* 602 */ GL_PROC(void, gl, VertexAttrib3sARB, glVertexAttrib3sARB, VERTEXATTRIB3SARB, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z), (index, x, y, z), &index, GL_void_return) /* 603 */ GL_PROC(void, gl, VertexAttrib3svARB, glVertexAttrib3svARB, VERTEXATTRIB3SVARB, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 604 */ GL_PROC(void, gl, VertexAttrib4NbvARB, glVertexAttrib4NbvARB, VERTEXATTRIB4NBVARB, (AND GLuint index, const GLbyte *v), (index, v), &index, GL_void_return) /* 605 */ GL_PROC(void, gl, VertexAttrib4NivARB, glVertexAttrib4NivARB, VERTEXATTRIB4NIVARB, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) /* 606 */ GL_PROC(void, gl, VertexAttrib4NsvARB, glVertexAttrib4NsvARB, VERTEXATTRIB4NSVARB, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 607 */ GL_PROC(void, gl, VertexAttrib4NubARB, glVertexAttrib4NubARB, VERTEXATTRIB4NUBARB, (AND GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w), (index, x, y, z, w), &index, GL_void_return) /* 608 */ GL_PROC(void, gl, VertexAttrib4NubvARB, glVertexAttrib4NubvARB, VERTEXATTRIB4NUBVARB, (AND GLuint index, const GLubyte *v), (index, v), &index, GL_void_return) /* 609 */ GL_PROC(void, gl, VertexAttrib4NuivARB, glVertexAttrib4NuivARB, VERTEXATTRIB4NUIVARB, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) /* 610 */ GL_PROC(void, gl, VertexAttrib4NusvARB, glVertexAttrib4NusvARB, VERTEXATTRIB4NUSVARB, (AND GLuint index, const GLushort *v), (index, v), &index, GL_void_return) /* 611 */ GL_PROC(void, gl, VertexAttrib4bvARB, glVertexAttrib4bvARB, VERTEXATTRIB4BVARB, (AND GLuint index, const GLbyte *v), (index, v), &index, GL_void_return) /* 612 */ GL_PROC(void, gl, VertexAttrib4dARB, glVertexAttrib4dARB, VERTEXATTRIB4DARB, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) /* 613 */ GL_PROC(void, gl, VertexAttrib4dvARB, glVertexAttrib4dvARB, VERTEXATTRIB4DVARB, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 614 */ GL_PROC(void, gl, VertexAttrib4fARB, glVertexAttrib4fARB, VERTEXATTRIB4FARB, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (index, x, y, z, w), &index, GL_void_return) /* 615 */ GL_PROC(void, gl, VertexAttrib4fvARB, glVertexAttrib4fvARB, VERTEXATTRIB4FVARB, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) /* 616 */ GL_PROC(void, gl, VertexAttrib4ivARB, glVertexAttrib4ivARB, VERTEXATTRIB4IVARB, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) /* 617 */ GL_PROC(void, gl, VertexAttrib4sARB, glVertexAttrib4sARB, VERTEXATTRIB4SARB, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (index, x, y, z, w), &index, GL_void_return) /* 618 */ GL_PROC(void, gl, VertexAttrib4svARB, glVertexAttrib4svARB, VERTEXATTRIB4SVARB, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 619 */ GL_PROC(void, gl, VertexAttrib4ubvARB, glVertexAttrib4ubvARB, VERTEXATTRIB4UBVARB, (AND GLuint index, const GLubyte *v), (index, v), &index, GL_void_return) /* 620 */ GL_PROC(void, gl, VertexAttrib4uivARB, glVertexAttrib4uivARB, VERTEXATTRIB4UIVARB, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) /* 621 */ GL_PROC(void, gl, VertexAttrib4usvARB, glVertexAttrib4usvARB, VERTEXATTRIB4USVARB, (AND GLuint index, const GLushort *v), (index, v), &index, GL_void_return) /* 622 */ GL_PROC(void, gl, VertexAttribPointerARB, glVertexAttribPointerARB, VERTEXATTRIBPOINTERARB, (AND GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer), (index, size, type, normalized, stride, pointer), &index, GL_void_return) /* 623 */ GL_PROC(void, gl, EnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, ENABLEVERTEXATTRIBARRAYARB, (AND GLuint index), (index), &index, GL_void_return) /* 624 */ GL_PROC(void, gl, DisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, DISABLEVERTEXATTRIBARRAYARB, (AND GLuint index), (index), &index, GL_void_return) /* 625 */ GL_PROC(void, gl, ProgramStringARB, glProgramStringARB, PROGRAMSTRINGARB, (AND GLenum target, GLenum format, GLsizei len, const void *string), (target, format, len, string), &target, GL_void_return) /* 626 */ GL_PROC(void, gl, BindProgramARB, glBindProgramARB, BINDPROGRAMARB, (AND GLenum target, GLuint program), (target, program), &target, GL_void_return) /* 627 */ GL_PROC(void, gl, DeleteProgramsARB, glDeleteProgramsARB, DELETEPROGRAMSARB, (AND GLsizei n, const GLuint *programs), (n, programs), &n, GL_void_return) /* 628 */ GL_PROC(void, gl, GenProgramsARB, glGenProgramsARB, GENPROGRAMSARB, (AND GLsizei n, GLuint *programs), (n, programs), &n, GL_void_return) /* 629 */ GL_PROC(void, gl, ProgramEnvParameter4dARB, glProgramEnvParameter4dARB, PROGRAMENVPARAMETER4DARB, (AND GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (target, index, x, y, z, w), &target, GL_void_return) /* 630 */ GL_PROC(void, gl, ProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, PROGRAMENVPARAMETER4DVARB, (AND GLenum target, GLuint index, const GLdouble *params), (target, index, params), &target, GL_void_return) /* 631 */ GL_PROC(void, gl, ProgramEnvParameter4fARB, glProgramEnvParameter4fARB, PROGRAMENVPARAMETER4FARB, (AND GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (target, index, x, y, z, w), &target, GL_void_return) /* 632 */ GL_PROC(void, gl, ProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, PROGRAMENVPARAMETER4FVARB, (AND GLenum target, GLuint index, const GLfloat *params), (target, index, params), &target, GL_void_return) /* 633 */ GL_PROC(void, gl, ProgramLocalParameter4dARB, glProgramLocalParameter4dARB, PROGRAMLOCALPARAMETER4DARB, (AND GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (target, index, x, y, z, w), &target, GL_void_return) /* 634 */ GL_PROC(void, gl, ProgramLocalParameter4dvARB, glProgramLocalParameter4dvARB, PROGRAMLOCALPARAMETER4DVARB, (AND GLenum target, GLuint index, const GLdouble *params), (target, index, params), &target, GL_void_return) /* 635 */ GL_PROC(void, gl, ProgramLocalParameter4fARB, glProgramLocalParameter4fARB, PROGRAMLOCALPARAMETER4FARB, (AND GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (target, index, x, y, z, w), &target, GL_void_return) /* 636 */ GL_PROC(void, gl, ProgramLocalParameter4fvARB, glProgramLocalParameter4fvARB, PROGRAMLOCALPARAMETER4FVARB, (AND GLenum target, GLuint index, const GLfloat *params), (target, index, params), &target, GL_void_return) /* 637 */ GL_PROC(void, gl, GetProgramEnvParameterdvARB, glGetProgramEnvParameterdvARB, GETPROGRAMENVPARAMETERDVARB, (AND GLenum target, GLuint index, GLdouble *params), (target, index, params), &target, GL_void_return) /* 638 */ GL_PROC(void, gl, GetProgramEnvParameterfvARB, glGetProgramEnvParameterfvARB, GETPROGRAMENVPARAMETERFVARB, (AND GLenum target, GLuint index, GLfloat *params), (target, index, params), &target, GL_void_return) /* 639 */ GL_PROC(void, gl, GetProgramLocalParameterdvARB, glGetProgramLocalParameterdvARB, GETPROGRAMLOCALPARAMETERDVARB, (AND GLenum target, GLuint index, GLdouble *params), (target, index, params), &target, GL_void_return) /* 640 */ GL_PROC(void, gl, GetProgramLocalParameterfvARB, glGetProgramLocalParameterfvARB, GETPROGRAMLOCALPARAMETERFVARB, (AND GLenum target, GLuint index, GLfloat *params), (target, index, params), &target, GL_void_return) /* 641 */ GL_PROC(void, gl, GetProgramivARB, glGetProgramivARB, GETPROGRAMIVARB, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 642 */ GL_PROC(void, gl, GetProgramStringARB, glGetProgramStringARB, GETPROGRAMSTRINGARB, (AND GLenum target, GLenum pname, void *string), (target, pname, string), &target, GL_void_return) /* 643 */ GL_PROC(void, gl, GetVertexAttribdvARB, glGetVertexAttribdvARB, GETVERTEXATTRIBDVARB, (AND GLuint index, GLenum pname, GLdouble *params), (index, pname, params), &index, GL_void_return) /* 644 */ GL_PROC(void, gl, GetVertexAttribfvARB, glGetVertexAttribfvARB, GETVERTEXATTRIBFVARB, (AND GLuint index, GLenum pname, GLfloat *params), (index, pname, params), &index, GL_void_return) /* 645 */ GL_PROC(void, gl, GetVertexAttribivARB, glGetVertexAttribivARB, GETVERTEXATTRIBIVARB, (AND GLuint index, GLenum pname, GLint *params), (index, pname, params), &index, GL_void_return) /* 646 */ GL_PROC(void, gl, GetVertexAttribPointervARB, glGetVertexAttribPointervARB, GETVERTEXATTRIBPOINTERVARB, (AND GLuint index, GLenum pname, void * *pointer), (index, pname, pointer), &index, GL_void_return) /* 647 */ GL_PROC(GLboolean, gl, IsProgramARB, glIsProgramARB, ISPROGRAMARB, (AND GLuint program), (program), &program, return (GLboolean)) /* 648 */ GL_PROC(void, gl, BindBufferARB, glBindBufferARB, BINDBUFFERARB, (AND GLenum target, GLuint buffer), (target, buffer), &target, GL_void_return) /* 649 */ GL_PROC(void, gl, DeleteBuffersARB, glDeleteBuffersARB, DELETEBUFFERSARB, (AND GLsizei n, const GLuint *buffers), (n, buffers), &n, GL_void_return) /* 650 */ GL_PROC(void, gl, GenBuffersARB, glGenBuffersARB, GENBUFFERSARB, (AND GLsizei n, GLuint *buffers), (n, buffers), &n, GL_void_return) /* 651 */ GL_PROC(GLboolean, gl, IsBufferARB, glIsBufferARB, ISBUFFERARB, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) /* 652 */ GL_PROC(void, gl, BufferDataARB, glBufferDataARB, BUFFERDATAARB, (AND GLenum target, GLsizeiptrARB size, const void *data, GLenum usage), (target, size, data, usage), &target, GL_void_return) /* 653 */ GL_PROC(void, gl, BufferSubDataARB, glBufferSubDataARB, BUFFERSUBDATAARB, (AND GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data), (target, offset, size, data), &target, GL_void_return) /* 654 */ GL_PROC(void, gl, GetBufferSubDataARB, glGetBufferSubDataARB, GETBUFFERSUBDATAARB, (AND GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data), (target, offset, size, data), &target, GL_void_return) /* 655 */ GL_PROC(void *, gl, MapBufferARB, glMapBufferARB, MAPBUFFERARB, (AND GLenum target, GLenum access), (target, access), &target, return (void *)) /* 656 */ GL_PROC(GLboolean, gl, UnmapBufferARB, glUnmapBufferARB, UNMAPBUFFERARB, (AND GLenum target), (target), &target, return (GLboolean)) /* 657 */ GL_PROC(void, gl, GetBufferParameterivARB, glGetBufferParameterivARB, GETBUFFERPARAMETERIVARB, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 658 */ GL_PROC(void, gl, GetBufferPointervARB, glGetBufferPointervARB, GETBUFFERPOINTERVARB, (AND GLenum target, GLenum pname, void * *params), (target, pname, params), &target, GL_void_return) /* 659 */ GL_PROC(void, gl, GenQueriesARB, glGenQueriesARB, GENQUERIESARB, (AND GLsizei n, GLuint *ids), (n, ids), &n, GL_void_return) /* 660 */ GL_PROC(void, gl, DeleteQueriesARB, glDeleteQueriesARB, DELETEQUERIESARB, (AND GLsizei n, const GLuint *ids), (n, ids), &n, GL_void_return) /* 661 */ GL_PROC(GLboolean, gl, IsQueryARB, glIsQueryARB, ISQUERYARB, (AND GLuint id), (id), &id, return (GLboolean)) /* 662 */ GL_PROC(void, gl, BeginQueryARB, glBeginQueryARB, BEGINQUERYARB, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) /* 663 */ GL_PROC(void, gl, EndQueryARB, glEndQueryARB, ENDQUERYARB, (AND GLenum target), (target), &target, GL_void_return) /* 664 */ GL_PROC(void, gl, GetQueryivARB, glGetQueryivARB, GETQUERYIVARB, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 665 */ GL_PROC(void, gl, GetQueryObjectivARB, glGetQueryObjectivARB, GETQUERYOBJECTIVARB, (AND GLuint id, GLenum pname, GLint *params), (id, pname, params), &id, GL_void_return) /* 666 */ GL_PROC(void, gl, GetQueryObjectuivARB, glGetQueryObjectuivARB, GETQUERYOBJECTUIVARB, (AND GLuint id, GLenum pname, GLuint *params), (id, pname, params), &id, GL_void_return) /* 667 */ GL_PROC(void, gl, DeleteObjectARB, glDeleteObjectARB, DELETEOBJECTARB, (AND GLhandleARB obj), (obj), &obj, GL_void_return) /* 668 */ GL_PROC(GLhandleARB, gl, GetHandleARB, glGetHandleARB, GETHANDLEARB, (AND GLenum pname), (pname), &pname, return (GLhandleARB)) /* 669 */ GL_PROC(void, gl, DetachObjectARB, glDetachObjectARB, DETACHOBJECTARB, (AND GLhandleARB containerObj, GLhandleARB attachedObj), (containerObj, attachedObj), &containerObj, GL_void_return) /* 670 */ GL_PROC(GLhandleARB, gl, CreateShaderObjectARB, glCreateShaderObjectARB, CREATESHADEROBJECTARB, (AND GLenum shaderType), (shaderType), &shaderType, return (GLhandleARB)) /* 671 */ GL_PROC(void, gl, ShaderSourceARB, glShaderSourceARB, SHADERSOURCEARB, (AND GLhandleARB shaderObj, GLsizei count, const GLcharARB * *string, const GLint *length), (shaderObj, count, string, length), &shaderObj, GL_void_return) /* 672 */ GL_PROC(void, gl, CompileShaderARB, glCompileShaderARB, COMPILESHADERARB, (AND GLhandleARB shaderObj), (shaderObj), &shaderObj, GL_void_return) /* 673 */ GL_PROC(GLhandleARB, gl, CreateProgramObjectARB, glCreateProgramObjectARB, CREATEPROGRAMOBJECTARB, (NOTHING), (), NULL, return (GLhandleARB)) /* 674 */ GL_PROC(void, gl, AttachObjectARB, glAttachObjectARB, ATTACHOBJECTARB, (AND GLhandleARB containerObj, GLhandleARB obj), (containerObj, obj), &containerObj, GL_void_return) /* 675 */ GL_PROC(void, gl, LinkProgramARB, glLinkProgramARB, LINKPROGRAMARB, (AND GLhandleARB programObj), (programObj), &programObj, GL_void_return) /* 676 */ GL_PROC(void, gl, UseProgramObjectARB, glUseProgramObjectARB, USEPROGRAMOBJECTARB, (AND GLhandleARB programObj), (programObj), &programObj, GL_void_return) /* 677 */ GL_PROC(void, gl, ValidateProgramARB, glValidateProgramARB, VALIDATEPROGRAMARB, (AND GLhandleARB programObj), (programObj), &programObj, GL_void_return) /* 678 */ GL_PROC(void, gl, Uniform1fARB, glUniform1fARB, UNIFORM1FARB, (AND GLint location, GLfloat v0), (location, v0), &location, GL_void_return) /* 679 */ GL_PROC(void, gl, Uniform2fARB, glUniform2fARB, UNIFORM2FARB, (AND GLint location, GLfloat v0, GLfloat v1), (location, v0, v1), &location, GL_void_return) /* 680 */ GL_PROC(void, gl, Uniform3fARB, glUniform3fARB, UNIFORM3FARB, (AND GLint location, GLfloat v0, GLfloat v1, GLfloat v2), (location, v0, v1, v2), &location, GL_void_return) /* 681 */ GL_PROC(void, gl, Uniform4fARB, glUniform4fARB, UNIFORM4FARB, (AND GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3), (location, v0, v1, v2, v3), &location, GL_void_return) /* 682 */ GL_PROC(void, gl, Uniform1iARB, glUniform1iARB, UNIFORM1IARB, (AND GLint location, GLint v0), (location, v0), &location, GL_void_return) /* 683 */ GL_PROC(void, gl, Uniform2iARB, glUniform2iARB, UNIFORM2IARB, (AND GLint location, GLint v0, GLint v1), (location, v0, v1), &location, GL_void_return) /* 684 */ GL_PROC(void, gl, Uniform3iARB, glUniform3iARB, UNIFORM3IARB, (AND GLint location, GLint v0, GLint v1, GLint v2), (location, v0, v1, v2), &location, GL_void_return) /* 685 */ GL_PROC(void, gl, Uniform4iARB, glUniform4iARB, UNIFORM4IARB, (AND GLint location, GLint v0, GLint v1, GLint v2, GLint v3), (location, v0, v1, v2, v3), &location, GL_void_return) /* 686 */ GL_PROC(void, gl, Uniform1fvARB, glUniform1fvARB, UNIFORM1FVARB, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) /* 687 */ GL_PROC(void, gl, Uniform2fvARB, glUniform2fvARB, UNIFORM2FVARB, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) /* 688 */ GL_PROC(void, gl, Uniform3fvARB, glUniform3fvARB, UNIFORM3FVARB, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) /* 689 */ GL_PROC(void, gl, Uniform4fvARB, glUniform4fvARB, UNIFORM4FVARB, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) /* 690 */ GL_PROC(void, gl, Uniform1ivARB, glUniform1ivARB, UNIFORM1IVARB, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) /* 691 */ GL_PROC(void, gl, Uniform2ivARB, glUniform2ivARB, UNIFORM2IVARB, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) /* 692 */ GL_PROC(void, gl, Uniform3ivARB, glUniform3ivARB, UNIFORM3IVARB, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) /* 693 */ GL_PROC(void, gl, Uniform4ivARB, glUniform4ivARB, UNIFORM4IVARB, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) /* 694 */ GL_PROC(void, gl, UniformMatrix2fvARB, glUniformMatrix2fvARB, UNIFORMMATRIX2FVARB, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) /* 695 */ GL_PROC(void, gl, UniformMatrix3fvARB, glUniformMatrix3fvARB, UNIFORMMATRIX3FVARB, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) /* 696 */ GL_PROC(void, gl, UniformMatrix4fvARB, glUniformMatrix4fvARB, UNIFORMMATRIX4FVARB, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) /* 697 */ GL_PROC(void, gl, GetObjectParameterfvARB, glGetObjectParameterfvARB, GETOBJECTPARAMETERFVARB, (AND GLhandleARB obj, GLenum pname, GLfloat *params), (obj, pname, params), &obj, GL_void_return) /* 698 */ GL_PROC(void, gl, GetObjectParameterivARB, glGetObjectParameterivARB, GETOBJECTPARAMETERIVARB, (AND GLhandleARB obj, GLenum pname, GLint *params), (obj, pname, params), &obj, GL_void_return) /* 699 */ GL_PROC(void, gl, GetInfoLogARB, glGetInfoLogARB, GETINFOLOGARB, (AND GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog), (obj, maxLength, length, infoLog), &obj, GL_void_return) /* 700 */ GL_PROC(void, gl, GetAttachedObjectsARB, glGetAttachedObjectsARB, GETATTACHEDOBJECTSARB, (AND GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj), (containerObj, maxCount, count, obj), &containerObj, GL_void_return) /* 701 */ GL_PROC(GLint, gl, GetUniformLocationARB, glGetUniformLocationARB, GETUNIFORMLOCATIONARB, (AND GLhandleARB programObj, const GLcharARB *name), (programObj, name), &programObj, return (GLint)) /* 702 */ GL_PROC(void, gl, GetActiveUniformARB, glGetActiveUniformARB, GETACTIVEUNIFORMARB, (AND GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name), (programObj, index, maxLength, length, size, type, name), &programObj, GL_void_return) /* 703 */ GL_PROC(void, gl, GetUniformfvARB, glGetUniformfvARB, GETUNIFORMFVARB, (AND GLhandleARB programObj, GLint location, GLfloat *params), (programObj, location, params), &programObj, GL_void_return) /* 704 */ GL_PROC(void, gl, GetUniformivARB, glGetUniformivARB, GETUNIFORMIVARB, (AND GLhandleARB programObj, GLint location, GLint *params), (programObj, location, params), &programObj, GL_void_return) /* 705 */ GL_PROC(void, gl, GetShaderSourceARB, glGetShaderSourceARB, GETSHADERSOURCEARB, (AND GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source), (obj, maxLength, length, source), &obj, GL_void_return) /* 706 */ GL_PROC(void, gl, BindAttribLocationARB, glBindAttribLocationARB, BINDATTRIBLOCATIONARB, (AND GLhandleARB programObj, GLuint index, const GLcharARB *name), (programObj, index, name), &programObj, GL_void_return) /* 707 */ GL_PROC(void, gl, GetActiveAttribARB, glGetActiveAttribARB, GETACTIVEATTRIBARB, (AND GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name), (programObj, index, maxLength, length, size, type, name), &programObj, GL_void_return) /* 708 */ GL_PROC(GLint, gl, GetAttribLocationARB, glGetAttribLocationARB, GETATTRIBLOCATIONARB, (AND GLhandleARB programObj, const GLcharARB *name), (programObj, name), &programObj, return (GLint)) /* 709 */ GL_PROC(void, gl, DrawBuffersARB, glDrawBuffersARB, DRAWBUFFERSARB, (AND GLsizei n, const GLenum *bufs), (n, bufs), &n, GL_void_return) /* 710 */ GL_PROC(void, gl, BlendColorEXT, glBlendColorEXT, BLENDCOLOREXT, (AND GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha), &red, GL_void_return) /* 711 */ GL_PROC(void, gl, PolygonOffsetEXT, glPolygonOffsetEXT, POLYGONOFFSETEXT, (AND GLfloat factor, GLfloat bias), (factor, bias), &factor, GL_void_return) /* 712 */ GL_PROC(void, gl, TexImage3DEXT, glTexImage3DEXT, TEXIMAGE3DEXT, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels), (target, level, internalformat, width, height, depth, border, format, type, pixels), &target, GL_void_return) /* 713 */ GL_PROC(void, gl, TexSubImage3DEXT, glTexSubImage3DEXT, TEXSUBIMAGE3DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &target, GL_void_return) /* 714 */ GL_PROC(void, gl, GetTexFilterFuncSGIS, glGetTexFilterFuncSGIS, GETTEXFILTERFUNCSGIS, (AND GLenum target, GLenum filter, GLfloat *weights), (target, filter, weights), &target, GL_void_return) /* 715 */ GL_PROC(void, gl, TexFilterFuncSGIS, glTexFilterFuncSGIS, TEXFILTERFUNCSGIS, (AND GLenum target, GLenum filter, GLsizei n, const GLfloat *weights), (target, filter, n, weights), &target, GL_void_return) /* 716 */ GL_PROC(void, gl, TexSubImage1DEXT, glTexSubImage1DEXT, TEXSUBIMAGE1DEXT, (AND GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels), (target, level, xoffset, width, format, type, pixels), &target, GL_void_return) /* 717 */ GL_PROC(void, gl, TexSubImage2DEXT, glTexSubImage2DEXT, TEXSUBIMAGE2DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels), (target, level, xoffset, yoffset, width, height, format, type, pixels), &target, GL_void_return) /* 718 */ GL_PROC(void, gl, CopyTexImage1DEXT, glCopyTexImage1DEXT, COPYTEXIMAGE1DEXT, (AND GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border), (target, level, internalformat, x, y, width, border), &target, GL_void_return) /* 719 */ GL_PROC(void, gl, CopyTexImage2DEXT, glCopyTexImage2DEXT, COPYTEXIMAGE2DEXT, (AND GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (target, level, internalformat, x, y, width, height, border), &target, GL_void_return) /* 720 */ GL_PROC(void, gl, CopyTexSubImage1DEXT, glCopyTexSubImage1DEXT, COPYTEXSUBIMAGE1DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (target, level, xoffset, x, y, width), &target, GL_void_return) /* 721 */ GL_PROC(void, gl, CopyTexSubImage2DEXT, glCopyTexSubImage2DEXT, COPYTEXSUBIMAGE2DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, x, y, width, height), &target, GL_void_return) /* 722 */ GL_PROC(void, gl, CopyTexSubImage3DEXT, glCopyTexSubImage3DEXT, COPYTEXSUBIMAGE3DEXT, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, zoffset, x, y, width, height), &target, GL_void_return) /* 723 */ GL_PROC(void, gl, GetHistogramEXT, glGetHistogramEXT, GETHISTOGRAMEXT, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values), (target, reset, format, type, values), &target, GL_void_return) /* 724 */ GL_PROC(void, gl, GetHistogramParameterfvEXT, glGetHistogramParameterfvEXT, GETHISTOGRAMPARAMETERFVEXT, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) /* 725 */ GL_PROC(void, gl, GetHistogramParameterivEXT, glGetHistogramParameterivEXT, GETHISTOGRAMPARAMETERIVEXT, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 726 */ GL_PROC(void, gl, GetMinmaxEXT, glGetMinmaxEXT, GETMINMAXEXT, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, void *values), (target, reset, format, type, values), &target, GL_void_return) /* 727 */ GL_PROC(void, gl, GetMinmaxParameterfvEXT, glGetMinmaxParameterfvEXT, GETMINMAXPARAMETERFVEXT, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) /* 728 */ GL_PROC(void, gl, GetMinmaxParameterivEXT, glGetMinmaxParameterivEXT, GETMINMAXPARAMETERIVEXT, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 729 */ GL_PROC(void, gl, HistogramEXT, glHistogramEXT, HISTOGRAMEXT, (AND GLenum target, GLsizei width, GLenum internalformat, GLboolean32 sink), (target, width, internalformat, sink), &target, GL_void_return) /* 730 */ GL_PROC(void, gl, MinmaxEXT, glMinmaxEXT, MINMAXEXT, (AND GLenum target, GLenum internalformat, GLboolean32 sink), (target, internalformat, sink), &target, GL_void_return) /* 731 */ GL_PROC(void, gl, ResetHistogramEXT, glResetHistogramEXT, RESETHISTOGRAMEXT, (AND GLenum target), (target), &target, GL_void_return) /* 732 */ GL_PROC(void, gl, ResetMinmaxEXT, glResetMinmaxEXT, RESETMINMAXEXT, (AND GLenum target), (target), &target, GL_void_return) /* 733 */ GL_PROC(void, gl, ConvolutionFilter1DEXT, glConvolutionFilter1DEXT, CONVOLUTIONFILTER1DEXT, (AND GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image), (target, internalformat, width, format, type, image), &target, GL_void_return) /* 734 */ GL_PROC(void, gl, ConvolutionFilter2DEXT, glConvolutionFilter2DEXT, CONVOLUTIONFILTER2DEXT, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image), (target, internalformat, width, height, format, type, image), &target, GL_void_return) /* 735 */ GL_PROC(void, gl, ConvolutionParameterfEXT, glConvolutionParameterfEXT, CONVOLUTIONPARAMETERFEXT, (AND GLenum target, GLenum pname, GLfloat params), (target, pname, params), &target, GL_void_return) /* 736 */ GL_PROC(void, gl, ConvolutionParameterfvEXT, glConvolutionParameterfvEXT, CONVOLUTIONPARAMETERFVEXT, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) /* 737 */ GL_PROC(void, gl, ConvolutionParameteriEXT, glConvolutionParameteriEXT, CONVOLUTIONPARAMETERIEXT, (AND GLenum target, GLenum pname, GLint params), (target, pname, params), &target, GL_void_return) /* 738 */ GL_PROC(void, gl, ConvolutionParameterivEXT, glConvolutionParameterivEXT, CONVOLUTIONPARAMETERIVEXT, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) /* 739 */ GL_PROC(void, gl, CopyConvolutionFilter1DEXT, glCopyConvolutionFilter1DEXT, COPYCONVOLUTIONFILTER1DEXT, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width), (target, internalformat, x, y, width), &target, GL_void_return) /* 740 */ GL_PROC(void, gl, CopyConvolutionFilter2DEXT, glCopyConvolutionFilter2DEXT, COPYCONVOLUTIONFILTER2DEXT, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height), (target, internalformat, x, y, width, height), &target, GL_void_return) /* 741 */ GL_PROC(void, gl, GetConvolutionFilterEXT, glGetConvolutionFilterEXT, GETCONVOLUTIONFILTEREXT, (AND GLenum target, GLenum format, GLenum type, void *image), (target, format, type, image), &target, GL_void_return) /* 742 */ GL_PROC(void, gl, GetConvolutionParameterfvEXT, glGetConvolutionParameterfvEXT, GETCONVOLUTIONPARAMETERFVEXT, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) /* 743 */ GL_PROC(void, gl, GetConvolutionParameterivEXT, glGetConvolutionParameterivEXT, GETCONVOLUTIONPARAMETERIVEXT, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 744 */ GL_PROC(void, gl, GetSeparableFilterEXT, glGetSeparableFilterEXT, GETSEPARABLEFILTEREXT, (AND GLenum target, GLenum format, GLenum type, void *row, void *column, void *span), (target, format, type, row, column, span), &target, GL_void_return) /* 745 */ GL_PROC(void, gl, SeparableFilter2DEXT, glSeparableFilter2DEXT, SEPARABLEFILTER2DEXT, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column), (target, internalformat, width, height, format, type, row, column), &target, GL_void_return) /* 746 */ GL_PROC(void, gl, ColorTableSGI, glColorTableSGI, COLORTABLESGI, (AND GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table), (target, internalformat, width, format, type, table), &target, GL_void_return) /* 747 */ GL_PROC(void, gl, ColorTableParameterfvSGI, glColorTableParameterfvSGI, COLORTABLEPARAMETERFVSGI, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) /* 748 */ GL_PROC(void, gl, ColorTableParameterivSGI, glColorTableParameterivSGI, COLORTABLEPARAMETERIVSGI, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) /* 749 */ GL_PROC(void, gl, CopyColorTableSGI, glCopyColorTableSGI, COPYCOLORTABLESGI, (AND GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width), (target, internalformat, x, y, width), &target, GL_void_return) /* 750 */ GL_PROC(void, gl, GetColorTableSGI, glGetColorTableSGI, GETCOLORTABLESGI, (AND GLenum target, GLenum format, GLenum type, void *table), (target, format, type, table), &target, GL_void_return) /* 751 */ GL_PROC(void, gl, GetColorTableParameterfvSGI, glGetColorTableParameterfvSGI, GETCOLORTABLEPARAMETERFVSGI, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) /* 752 */ GL_PROC(void, gl, GetColorTableParameterivSGI, glGetColorTableParameterivSGI, GETCOLORTABLEPARAMETERIVSGI, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 753 */ GL_PROC(void, gl, PixelTexGenSGIX, glPixelTexGenSGIX, PIXELTEXGENSGIX, (AND GLenum mode), (mode), &mode, GL_void_return) /* 754 */ GL_PROC(void, gl, PixelTexGenParameteriSGIS, glPixelTexGenParameteriSGIS, PIXELTEXGENPARAMETERISGIS, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* 755 */ GL_PROC(void, gl, PixelTexGenParameterivSGIS, glPixelTexGenParameterivSGIS, PIXELTEXGENPARAMETERIVSGIS, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) /* 756 */ GL_PROC(void, gl, PixelTexGenParameterfSGIS, glPixelTexGenParameterfSGIS, PIXELTEXGENPARAMETERFSGIS, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) /* 757 */ GL_PROC(void, gl, PixelTexGenParameterfvSGIS, glPixelTexGenParameterfvSGIS, PIXELTEXGENPARAMETERFVSGIS, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) /* 758 */ GL_PROC(void, gl, GetPixelTexGenParameterivSGIS, glGetPixelTexGenParameterivSGIS, GETPIXELTEXGENPARAMETERIVSGIS, (AND GLenum pname, GLint *params), (pname, params), &pname, GL_void_return) /* 759 */ GL_PROC(void, gl, GetPixelTexGenParameterfvSGIS, glGetPixelTexGenParameterfvSGIS, GETPIXELTEXGENPARAMETERFVSGIS, (AND GLenum pname, GLfloat *params), (pname, params), &pname, GL_void_return) /* 760 */ GL_PROC(void, gl, TexImage4DSGIS, glTexImage4DSGIS, TEXIMAGE4DSGIS, (AND GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels), (target, level, internalformat, width, height, depth, size4d, border, format, type, pixels), &target, GL_void_return) /* 761 */ GL_PROC(void, gl, TexSubImage4DSGIS, glTexSubImage4DSGIS, TEXSUBIMAGE4DSGIS, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels), (target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels), &target, GL_void_return) /* 762 */ GL_PROC(GLboolean, gl, AreTexturesResidentEXT, glAreTexturesResidentEXT, ARETEXTURESRESIDENTEXT, (AND GLsizei n, const GLuint *textures, GLboolean *residences), (n, textures, residences), &n, return (GLboolean)) /* 763 */ GL_PROC(void, gl, BindTextureEXT, glBindTextureEXT, BINDTEXTUREEXT, (AND GLenum target, GLuint texture), (target, texture), &target, GL_void_return) /* 764 */ GL_PROC(void, gl, DeleteTexturesEXT, glDeleteTexturesEXT, DELETETEXTURESEXT, (AND GLsizei n, const GLuint *textures), (n, textures), &n, GL_void_return) /* 765 */ GL_PROC(void, gl, GenTexturesEXT, glGenTexturesEXT, GENTEXTURESEXT, (AND GLsizei n, GLuint *textures), (n, textures), &n, GL_void_return) /* 766 */ GL_PROC(GLboolean, gl, IsTextureEXT, glIsTextureEXT, ISTEXTUREEXT, (AND GLuint texture), (texture), &texture, return (GLboolean)) /* 767 */ GL_PROC(void, gl, PrioritizeTexturesEXT, glPrioritizeTexturesEXT, PRIORITIZETEXTURESEXT, (AND GLsizei n, const GLuint *textures, const GLclampf *priorities), (n, textures, priorities), &n, GL_void_return) /* 768 */ GL_PROC(void, gl, DetailTexFuncSGIS, glDetailTexFuncSGIS, DETAILTEXFUNCSGIS, (AND GLenum target, GLsizei n, const GLfloat *points), (target, n, points), &target, GL_void_return) /* 769 */ GL_PROC(void, gl, GetDetailTexFuncSGIS, glGetDetailTexFuncSGIS, GETDETAILTEXFUNCSGIS, (AND GLenum target, GLfloat *points), (target, points), &target, GL_void_return) /* 770 */ GL_PROC(void, gl, SharpenTexFuncSGIS, glSharpenTexFuncSGIS, SHARPENTEXFUNCSGIS, (AND GLenum target, GLsizei n, const GLfloat *points), (target, n, points), &target, GL_void_return) /* 771 */ GL_PROC(void, gl, GetSharpenTexFuncSGIS, glGetSharpenTexFuncSGIS, GETSHARPENTEXFUNCSGIS, (AND GLenum target, GLfloat *points), (target, points), &target, GL_void_return) /* 772 */ GL_PROC(void, gl, SampleMaskSGIS, glSampleMaskSGIS, SAMPLEMASKSGIS, (AND GLclampf value, GLboolean32 invert), (value, invert), &value, GL_void_return) /* 773 */ GL_PROC(void, gl, SamplePatternSGIS, glSamplePatternSGIS, SAMPLEPATTERNSGIS, (AND GLenum pattern), (pattern), &pattern, GL_void_return) /* 774 */ GL_PROC(void, gl, ArrayElementEXT, glArrayElementEXT, ARRAYELEMENTEXT, (AND GLint i), (i), &i, GL_void_return) /* 775 */ GL_PROC(void, gl, ColorPointerEXT, glColorPointerEXT, COLORPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer), (size, type, stride, count, pointer), &size, GL_void_return) /* 776 */ GL_PROC(void, gl, DrawArraysEXT, glDrawArraysEXT, DRAWARRAYSEXT, (AND GLenum mode, GLint first, GLsizei count), (mode, first, count), &mode, GL_void_return) /* 777 */ GL_PROC(void, gl, EdgeFlagPointerEXT, glEdgeFlagPointerEXT, EDGEFLAGPOINTEREXT, (AND GLsizei stride, GLsizei count, const GLboolean *pointer), (stride, count, pointer), &stride, GL_void_return) /* 778 */ GL_PROC(void, gl, GetPointervEXT, glGetPointervEXT, GETPOINTERVEXT, (AND GLenum pname, void * *params), (pname, params), &pname, GL_void_return) /* 779 */ GL_PROC(void, gl, IndexPointerEXT, glIndexPointerEXT, INDEXPOINTEREXT, (AND GLenum type, GLsizei stride, GLsizei count, const void *pointer), (type, stride, count, pointer), &type, GL_void_return) /* 780 */ GL_PROC(void, gl, NormalPointerEXT, glNormalPointerEXT, NORMALPOINTEREXT, (AND GLenum type, GLsizei stride, GLsizei count, const void *pointer), (type, stride, count, pointer), &type, GL_void_return) /* 781 */ GL_PROC(void, gl, TexCoordPointerEXT, glTexCoordPointerEXT, TEXCOORDPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer), (size, type, stride, count, pointer), &size, GL_void_return) /* 782 */ GL_PROC(void, gl, VertexPointerEXT, glVertexPointerEXT, VERTEXPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer), (size, type, stride, count, pointer), &size, GL_void_return) /* 783 */ GL_PROC(void, gl, BlendEquationEXT, glBlendEquationEXT, BLENDEQUATIONEXT, (AND GLenum mode), (mode), &mode, GL_void_return) /* 784 */ GL_PROC(void, gl, SpriteParameterfSGIX, glSpriteParameterfSGIX, SPRITEPARAMETERFSGIX, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) /* 785 */ GL_PROC(void, gl, SpriteParameterfvSGIX, glSpriteParameterfvSGIX, SPRITEPARAMETERFVSGIX, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) /* 786 */ GL_PROC(void, gl, SpriteParameteriSGIX, glSpriteParameteriSGIX, SPRITEPARAMETERISGIX, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* 787 */ GL_PROC(void, gl, SpriteParameterivSGIX, glSpriteParameterivSGIX, SPRITEPARAMETERIVSGIX, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) /* 788 */ GL_PROC(void, gl, PointParameterfEXT, glPointParameterfEXT, POINTPARAMETERFEXT, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) /* 789 */ GL_PROC(void, gl, PointParameterfvEXT, glPointParameterfvEXT, POINTPARAMETERFVEXT, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) /* 790 */ GL_PROC(void, gl, PointParameterfSGIS, glPointParameterfSGIS, POINTPARAMETERFSGIS, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) /* 791 */ GL_PROC(void, gl, PointParameterfvSGIS, glPointParameterfvSGIS, POINTPARAMETERFVSGIS, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) /* 792 */ GL_PROC(GLint, gl, GetInstrumentsSGIX, glGetInstrumentsSGIX, GETINSTRUMENTSSGIX, (NOTHING), (), NULL, return (GLint)) /* 793 */ GL_PROC(void, gl, InstrumentsBufferSGIX, glInstrumentsBufferSGIX, INSTRUMENTSBUFFERSGIX, (AND GLsizei size, GLint *buffer), (size, buffer), &size, GL_void_return) /* 794 */ GL_PROC(GLint, gl, PollInstrumentsSGIX, glPollInstrumentsSGIX, POLLINSTRUMENTSSGIX, (AND GLint *marker_p), (marker_p), &marker_p, return (GLint)) /* 795 */ GL_PROC(void, gl, ReadInstrumentsSGIX, glReadInstrumentsSGIX, READINSTRUMENTSSGIX, (AND GLint marker), (marker), &marker, GL_void_return) /* 796 */ GL_PROC(void, gl, StartInstrumentsSGIX, glStartInstrumentsSGIX, STARTINSTRUMENTSSGIX, (NOTHING), (), NULL, GL_void_return) /* 797 */ GL_PROC(void, gl, StopInstrumentsSGIX, glStopInstrumentsSGIX, STOPINSTRUMENTSSGIX, (AND GLint marker), (marker), &marker, GL_void_return) /* 798 */ GL_PROC(void, gl, FrameZoomSGIX, glFrameZoomSGIX, FRAMEZOOMSGIX, (AND GLint factor), (factor), &factor, GL_void_return) /* 799 */ GL_PROC(void, gl, TagSampleBufferSGIX, glTagSampleBufferSGIX, TAGSAMPLEBUFFERSGIX, (NOTHING), (), NULL, GL_void_return) /* 800 */ GL_PROC(void, gl, DeformationMap3dSGIX, glDeformationMap3dSGIX, DEFORMATIONMAP3DSGIX, (AND GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points), &target, GL_void_return) /* 801 */ GL_PROC(void, gl, DeformationMap3fSGIX, glDeformationMap3fSGIX, DEFORMATIONMAP3FSGIX, (AND GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points), &target, GL_void_return) /* 802 */ GL_PROC(void, gl, DeformSGIX, glDeformSGIX, DEFORMSGIX, (AND GLbitfield mask), (mask), &mask, GL_void_return) /* 803 */ GL_PROC(void, gl, LoadIdentityDeformationMapSGIX, glLoadIdentityDeformationMapSGIX, LOADIDENTITYDEFORMATIONMAPSGIX, (AND GLbitfield mask), (mask), &mask, GL_void_return) /* 804 */ GL_PROC(void, gl, ReferencePlaneSGIX, glReferencePlaneSGIX, REFERENCEPLANESGIX, (AND const GLdouble *equation), (equation), &equation, GL_void_return) /* 805 */ GL_PROC(void, gl, FlushRasterSGIX, glFlushRasterSGIX, FLUSHRASTERSGIX, (NOTHING), (), NULL, GL_void_return) /* 806 */ GL_PROC(void, gl, FogFuncSGIS, glFogFuncSGIS, FOGFUNCSGIS, (AND GLsizei n, const GLfloat *points), (n, points), &n, GL_void_return) /* 807 */ GL_PROC(void, gl, GetFogFuncSGIS, glGetFogFuncSGIS, GETFOGFUNCSGIS, (AND GLfloat *points), (points), &points, GL_void_return) /* 808 */ GL_PROC(void, gl, ImageTransformParameteriHP, glImageTransformParameteriHP, IMAGETRANSFORMPARAMETERIHP, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) /* 809 */ GL_PROC(void, gl, ImageTransformParameterfHP, glImageTransformParameterfHP, IMAGETRANSFORMPARAMETERFHP, (AND GLenum target, GLenum pname, GLfloat param), (target, pname, param), &target, GL_void_return) /* 810 */ GL_PROC(void, gl, ImageTransformParameterivHP, glImageTransformParameterivHP, IMAGETRANSFORMPARAMETERIVHP, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) /* 811 */ GL_PROC(void, gl, ImageTransformParameterfvHP, glImageTransformParameterfvHP, IMAGETRANSFORMPARAMETERFVHP, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) /* 812 */ GL_PROC(void, gl, GetImageTransformParameterivHP, glGetImageTransformParameterivHP, GETIMAGETRANSFORMPARAMETERIVHP, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 813 */ GL_PROC(void, gl, GetImageTransformParameterfvHP, glGetImageTransformParameterfvHP, GETIMAGETRANSFORMPARAMETERFVHP, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) /* 814 */ GL_PROC(void, gl, ColorSubTableEXT, glColorSubTableEXT, COLORSUBTABLEEXT, (AND GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data), (target, start, count, format, type, data), &target, GL_void_return) /* 815 */ GL_PROC(void, gl, CopyColorSubTableEXT, glCopyColorSubTableEXT, COPYCOLORSUBTABLEEXT, (AND GLenum target, GLsizei start, GLint x, GLint y, GLsizei width), (target, start, x, y, width), &target, GL_void_return) /* 816 */ GL_PROC(void, gl, HintPGI, glHintPGI, HINTPGI, (AND GLenum target, GLint mode), (target, mode), &target, GL_void_return) /* 817 */ GL_PROC(void, gl, ColorTableEXT, glColorTableEXT, COLORTABLEEXT, (AND GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table), (target, internalFormat, width, format, type, table), &target, GL_void_return) /* 818 */ GL_PROC(void, gl, GetColorTableEXT, glGetColorTableEXT, GETCOLORTABLEEXT, (AND GLenum target, GLenum format, GLenum type, void *data), (target, format, type, data), &target, GL_void_return) /* 819 */ GL_PROC(void, gl, GetColorTableParameterivEXT, glGetColorTableParameterivEXT, GETCOLORTABLEPARAMETERIVEXT, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 820 */ GL_PROC(void, gl, GetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, GETCOLORTABLEPARAMETERFVEXT, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) /* 821 */ GL_PROC(void, gl, GetListParameterfvSGIX, glGetListParameterfvSGIX, GETLISTPARAMETERFVSGIX, (AND GLuint list, GLenum pname, GLfloat *params), (list, pname, params), &list, GL_void_return) /* 822 */ GL_PROC(void, gl, GetListParameterivSGIX, glGetListParameterivSGIX, GETLISTPARAMETERIVSGIX, (AND GLuint list, GLenum pname, GLint *params), (list, pname, params), &list, GL_void_return) /* 823 */ GL_PROC(void, gl, ListParameterfSGIX, glListParameterfSGIX, LISTPARAMETERFSGIX, (AND GLuint list, GLenum pname, GLfloat param), (list, pname, param), &list, GL_void_return) /* 824 */ GL_PROC(void, gl, ListParameterfvSGIX, glListParameterfvSGIX, LISTPARAMETERFVSGIX, (AND GLuint list, GLenum pname, const GLfloat *params), (list, pname, params), &list, GL_void_return) /* 825 */ GL_PROC(void, gl, ListParameteriSGIX, glListParameteriSGIX, LISTPARAMETERISGIX, (AND GLuint list, GLenum pname, GLint param), (list, pname, param), &list, GL_void_return) /* 826 */ GL_PROC(void, gl, ListParameterivSGIX, glListParameterivSGIX, LISTPARAMETERIVSGIX, (AND GLuint list, GLenum pname, const GLint *params), (list, pname, params), &list, GL_void_return) /* 827 */ GL_PROC(void, gl, IndexMaterialEXT, glIndexMaterialEXT, INDEXMATERIALEXT, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) /* 828 */ GL_PROC(void, gl, IndexFuncEXT, glIndexFuncEXT, INDEXFUNCEXT, (AND GLenum func, GLclampf ref), (func, ref), &func, GL_void_return) /* 829 */ GL_PROC(void, gl, LockArraysEXT, glLockArraysEXT, LOCKARRAYSEXT, (AND GLint first, GLsizei count), (first, count), &first, GL_void_return) /* 830 */ GL_PROC(void, gl, UnlockArraysEXT, glUnlockArraysEXT, UNLOCKARRAYSEXT, (NOTHING), (), NULL, GL_void_return) /* 831 */ GL_PROC(void, gl, CullParameterdvEXT, glCullParameterdvEXT, CULLPARAMETERDVEXT, (AND GLenum pname, GLdouble *params), (pname, params), &pname, GL_void_return) /* 832 */ GL_PROC(void, gl, CullParameterfvEXT, glCullParameterfvEXT, CULLPARAMETERFVEXT, (AND GLenum pname, GLfloat *params), (pname, params), &pname, GL_void_return) /* 833 */ GL_PROC(void, gl, FragmentColorMaterialSGIX, glFragmentColorMaterialSGIX, FRAGMENTCOLORMATERIALSGIX, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) /* 834 */ GL_PROC(void, gl, FragmentLightfSGIX, glFragmentLightfSGIX, FRAGMENTLIGHTFSGIX, (AND GLenum light, GLenum pname, GLfloat param), (light, pname, param), &light, GL_void_return) /* 835 */ GL_PROC(void, gl, FragmentLightfvSGIX, glFragmentLightfvSGIX, FRAGMENTLIGHTFVSGIX, (AND GLenum light, GLenum pname, const GLfloat *params), (light, pname, params), &light, GL_void_return) /* 836 */ GL_PROC(void, gl, FragmentLightiSGIX, glFragmentLightiSGIX, FRAGMENTLIGHTISGIX, (AND GLenum light, GLenum pname, GLint param), (light, pname, param), &light, GL_void_return) /* 837 */ GL_PROC(void, gl, FragmentLightivSGIX, glFragmentLightivSGIX, FRAGMENTLIGHTIVSGIX, (AND GLenum light, GLenum pname, const GLint *params), (light, pname, params), &light, GL_void_return) /* 838 */ GL_PROC(void, gl, FragmentLightModelfSGIX, glFragmentLightModelfSGIX, FRAGMENTLIGHTMODELFSGIX, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) /* 839 */ GL_PROC(void, gl, FragmentLightModelfvSGIX, glFragmentLightModelfvSGIX, FRAGMENTLIGHTMODELFVSGIX, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) /* 840 */ GL_PROC(void, gl, FragmentLightModeliSGIX, glFragmentLightModeliSGIX, FRAGMENTLIGHTMODELISGIX, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* 841 */ GL_PROC(void, gl, FragmentLightModelivSGIX, glFragmentLightModelivSGIX, FRAGMENTLIGHTMODELIVSGIX, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) /* 842 */ GL_PROC(void, gl, FragmentMaterialfSGIX, glFragmentMaterialfSGIX, FRAGMENTMATERIALFSGIX, (AND GLenum face, GLenum pname, GLfloat param), (face, pname, param), &face, GL_void_return) /* 843 */ GL_PROC(void, gl, FragmentMaterialfvSGIX, glFragmentMaterialfvSGIX, FRAGMENTMATERIALFVSGIX, (AND GLenum face, GLenum pname, const GLfloat *params), (face, pname, params), &face, GL_void_return) /* 844 */ GL_PROC(void, gl, FragmentMaterialiSGIX, glFragmentMaterialiSGIX, FRAGMENTMATERIALISGIX, (AND GLenum face, GLenum pname, GLint param), (face, pname, param), &face, GL_void_return) /* 845 */ GL_PROC(void, gl, FragmentMaterialivSGIX, glFragmentMaterialivSGIX, FRAGMENTMATERIALIVSGIX, (AND GLenum face, GLenum pname, const GLint *params), (face, pname, params), &face, GL_void_return) /* 846 */ GL_PROC(void, gl, GetFragmentLightfvSGIX, glGetFragmentLightfvSGIX, GETFRAGMENTLIGHTFVSGIX, (AND GLenum light, GLenum pname, GLfloat *params), (light, pname, params), &light, GL_void_return) /* 847 */ GL_PROC(void, gl, GetFragmentLightivSGIX, glGetFragmentLightivSGIX, GETFRAGMENTLIGHTIVSGIX, (AND GLenum light, GLenum pname, GLint *params), (light, pname, params), &light, GL_void_return) /* 848 */ GL_PROC(void, gl, GetFragmentMaterialfvSGIX, glGetFragmentMaterialfvSGIX, GETFRAGMENTMATERIALFVSGIX, (AND GLenum face, GLenum pname, GLfloat *params), (face, pname, params), &face, GL_void_return) /* 849 */ GL_PROC(void, gl, GetFragmentMaterialivSGIX, glGetFragmentMaterialivSGIX, GETFRAGMENTMATERIALIVSGIX, (AND GLenum face, GLenum pname, GLint *params), (face, pname, params), &face, GL_void_return) /* 850 */ GL_PROC(void, gl, LightEnviSGIX, glLightEnviSGIX, LIGHTENVISGIX, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* 851 */ GL_PROC(void, gl, DrawRangeElementsEXT, glDrawRangeElementsEXT, DRAWRANGEELEMENTSEXT, (AND GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices), (mode, start, end, count, type, indices), &mode, GL_void_return) /* 852 */ GL_PROC(void, gl, ApplyTextureEXT, glApplyTextureEXT, APPLYTEXTUREEXT, (AND GLenum mode), (mode), &mode, GL_void_return) /* 853 */ GL_PROC(void, gl, TextureLightEXT, glTextureLightEXT, TEXTURELIGHTEXT, (AND GLenum pname), (pname), &pname, GL_void_return) /* 854 */ GL_PROC(void, gl, TextureMaterialEXT, glTextureMaterialEXT, TEXTUREMATERIALEXT, (AND GLenum face, GLenum mode), (face, mode), &face, GL_void_return) /* 855 */ GL_PROC(void, gl, AsyncMarkerSGIX, glAsyncMarkerSGIX, ASYNCMARKERSGIX, (AND GLuint marker), (marker), &marker, GL_void_return) /* 856 */ GL_PROC(GLint, gl, FinishAsyncSGIX, glFinishAsyncSGIX, FINISHASYNCSGIX, (AND GLuint *markerp), (markerp), &markerp, return (GLint)) /* 857 */ GL_PROC(GLint, gl, PollAsyncSGIX, glPollAsyncSGIX, POLLASYNCSGIX, (AND GLuint *markerp), (markerp), &markerp, return (GLint)) /* 858 */ GL_PROC(GLuint, gl, GenAsyncMarkersSGIX, glGenAsyncMarkersSGIX, GENASYNCMARKERSSGIX, (AND GLsizei range), (range), &range, return (GLuint)) /* 859 */ GL_PROC(void, gl, DeleteAsyncMarkersSGIX, glDeleteAsyncMarkersSGIX, DELETEASYNCMARKERSSGIX, (AND GLuint marker, GLsizei range), (marker, range), &marker, GL_void_return) /* 860 */ GL_PROC(GLboolean, gl, IsAsyncMarkerSGIX, glIsAsyncMarkerSGIX, ISASYNCMARKERSGIX, (AND GLuint marker), (marker), &marker, return (GLboolean)) /* 861 */ GL_PROC(void, gl, VertexPointervINTEL, glVertexPointervINTEL, VERTEXPOINTERVINTEL, (AND GLint size, GLenum type, const void * *pointer), (size, type, pointer), &size, GL_void_return) /* 862 */ GL_PROC(void, gl, NormalPointervINTEL, glNormalPointervINTEL, NORMALPOINTERVINTEL, (AND GLenum type, const void * *pointer), (type, pointer), &type, GL_void_return) /* 863 */ GL_PROC(void, gl, ColorPointervINTEL, glColorPointervINTEL, COLORPOINTERVINTEL, (AND GLint size, GLenum type, const void * *pointer), (size, type, pointer), &size, GL_void_return) /* 864 */ GL_PROC(void, gl, TexCoordPointervINTEL, glTexCoordPointervINTEL, TEXCOORDPOINTERVINTEL, (AND GLint size, GLenum type, const void * *pointer), (size, type, pointer), &size, GL_void_return) /* 865 */ GL_PROC(void, gl, PixelTransformParameteriEXT, glPixelTransformParameteriEXT, PIXELTRANSFORMPARAMETERIEXT, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) /* 866 */ GL_PROC(void, gl, PixelTransformParameterfEXT, glPixelTransformParameterfEXT, PIXELTRANSFORMPARAMETERFEXT, (AND GLenum target, GLenum pname, GLfloat param), (target, pname, param), &target, GL_void_return) /* 867 */ GL_PROC(void, gl, PixelTransformParameterivEXT, glPixelTransformParameterivEXT, PIXELTRANSFORMPARAMETERIVEXT, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) /* 868 */ GL_PROC(void, gl, PixelTransformParameterfvEXT, glPixelTransformParameterfvEXT, PIXELTRANSFORMPARAMETERFVEXT, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) /* 869 */ GL_PROC(void, gl, SecondaryColor3bEXT, glSecondaryColor3bEXT, SECONDARYCOLOR3BEXT, (AND GLbyte32 red, GLbyte32 green, GLbyte32 blue), (red, green, blue), &red, GL_void_return) /* 870 */ GL_PROC(void, gl, SecondaryColor3bvEXT, glSecondaryColor3bvEXT, SECONDARYCOLOR3BVEXT, (AND const GLbyte *v), (v), &v, GL_void_return) /* 871 */ GL_PROC(void, gl, SecondaryColor3dEXT, glSecondaryColor3dEXT, SECONDARYCOLOR3DEXT, (AND GLdouble red, GLdouble green, GLdouble blue), (red, green, blue), &red, GL_void_return) /* 872 */ GL_PROC(void, gl, SecondaryColor3dvEXT, glSecondaryColor3dvEXT, SECONDARYCOLOR3DVEXT, (AND const GLdouble *v), (v), &v, GL_void_return) /* 873 */ GL_PROC(void, gl, SecondaryColor3fEXT, glSecondaryColor3fEXT, SECONDARYCOLOR3FEXT, (AND GLfloat red, GLfloat green, GLfloat blue), (red, green, blue), &red, GL_void_return) /* 874 */ GL_PROC(void, gl, SecondaryColor3fvEXT, glSecondaryColor3fvEXT, SECONDARYCOLOR3FVEXT, (AND const GLfloat *v), (v), &v, GL_void_return) /* 875 */ GL_PROC(void, gl, SecondaryColor3iEXT, glSecondaryColor3iEXT, SECONDARYCOLOR3IEXT, (AND GLint red, GLint green, GLint blue), (red, green, blue), &red, GL_void_return) /* 876 */ GL_PROC(void, gl, SecondaryColor3ivEXT, glSecondaryColor3ivEXT, SECONDARYCOLOR3IVEXT, (AND const GLint *v), (v), &v, GL_void_return) /* 877 */ GL_PROC(void, gl, SecondaryColor3sEXT, glSecondaryColor3sEXT, SECONDARYCOLOR3SEXT, (AND GLshort32 red, GLshort32 green, GLshort32 blue), (red, green, blue), &red, GL_void_return) /* 878 */ GL_PROC(void, gl, SecondaryColor3svEXT, glSecondaryColor3svEXT, SECONDARYCOLOR3SVEXT, (AND const GLshort *v), (v), &v, GL_void_return) /* 879 */ GL_PROC(void, gl, SecondaryColor3ubEXT, glSecondaryColor3ubEXT, SECONDARYCOLOR3UBEXT, (AND GLubyte32 red, GLubyte32 green, GLubyte32 blue), (red, green, blue), &red, GL_void_return) /* 880 */ GL_PROC(void, gl, SecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, SECONDARYCOLOR3UBVEXT, (AND const GLubyte *v), (v), &v, GL_void_return) /* 881 */ GL_PROC(void, gl, SecondaryColor3uiEXT, glSecondaryColor3uiEXT, SECONDARYCOLOR3UIEXT, (AND GLuint red, GLuint green, GLuint blue), (red, green, blue), &red, GL_void_return) /* 882 */ GL_PROC(void, gl, SecondaryColor3uivEXT, glSecondaryColor3uivEXT, SECONDARYCOLOR3UIVEXT, (AND const GLuint *v), (v), &v, GL_void_return) /* 883 */ GL_PROC(void, gl, SecondaryColor3usEXT, glSecondaryColor3usEXT, SECONDARYCOLOR3USEXT, (AND GLushort32 red, GLushort32 green, GLushort32 blue), (red, green, blue), &red, GL_void_return) /* 884 */ GL_PROC(void, gl, SecondaryColor3usvEXT, glSecondaryColor3usvEXT, SECONDARYCOLOR3USVEXT, (AND const GLushort *v), (v), &v, GL_void_return) /* 885 */ GL_PROC(void, gl, SecondaryColorPointerEXT, glSecondaryColorPointerEXT, SECONDARYCOLORPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, const void *pointer), (size, type, stride, pointer), &size, GL_void_return) /* 886 */ GL_PROC(void, gl, TextureNormalEXT, glTextureNormalEXT, TEXTURENORMALEXT, (AND GLenum mode), (mode), &mode, GL_void_return) /* 887 */ GL_PROC(void, gl, MultiDrawArraysEXT, glMultiDrawArraysEXT, MULTIDRAWARRAYSEXT, (AND GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount), (mode, first, count, primcount), &mode, GL_void_return) /* 888 */ GL_PROC(void, gl, MultiDrawElementsEXT, glMultiDrawElementsEXT, MULTIDRAWELEMENTSEXT, (AND GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount), (mode, count, type, indices, primcount), &mode, GL_void_return) /* 889 */ GL_PROC(void, gl, FogCoordfEXT, glFogCoordfEXT, FOGCOORDFEXT, (AND GLfloat coord), (coord), &coord, GL_void_return) /* 890 */ GL_PROC(void, gl, FogCoordfvEXT, glFogCoordfvEXT, FOGCOORDFVEXT, (AND const GLfloat *coord), (coord), &coord, GL_void_return) /* 891 */ GL_PROC(void, gl, FogCoorddEXT, glFogCoorddEXT, FOGCOORDDEXT, (AND GLdouble coord), (coord), &coord, GL_void_return) /* 892 */ GL_PROC(void, gl, FogCoorddvEXT, glFogCoorddvEXT, FOGCOORDDVEXT, (AND const GLdouble *coord), (coord), &coord, GL_void_return) /* 893 */ GL_PROC(void, gl, FogCoordPointerEXT, glFogCoordPointerEXT, FOGCOORDPOINTEREXT, (AND GLenum type, GLsizei stride, const void *pointer), (type, stride, pointer), &type, GL_void_return) /* 894 */ GL_PROC(void, gl, Tangent3bEXT, glTangent3bEXT, TANGENT3BEXT, (AND GLbyte32 tx, GLbyte32 ty, GLbyte32 tz), (tx, ty, tz), &tx, GL_void_return) /* 895 */ GL_PROC(void, gl, Tangent3bvEXT, glTangent3bvEXT, TANGENT3BVEXT, (AND const GLbyte *v), (v), &v, GL_void_return) /* 896 */ GL_PROC(void, gl, Tangent3dEXT, glTangent3dEXT, TANGENT3DEXT, (AND GLdouble tx, GLdouble ty, GLdouble tz), (tx, ty, tz), &tx, GL_void_return) /* 897 */ GL_PROC(void, gl, Tangent3dvEXT, glTangent3dvEXT, TANGENT3DVEXT, (AND const GLdouble *v), (v), &v, GL_void_return) /* 898 */ GL_PROC(void, gl, Tangent3fEXT, glTangent3fEXT, TANGENT3FEXT, (AND GLfloat tx, GLfloat ty, GLfloat tz), (tx, ty, tz), &tx, GL_void_return) /* 899 */ GL_PROC(void, gl, Tangent3fvEXT, glTangent3fvEXT, TANGENT3FVEXT, (AND const GLfloat *v), (v), &v, GL_void_return) /* 900 */ GL_PROC(void, gl, Tangent3iEXT, glTangent3iEXT, TANGENT3IEXT, (AND GLint tx, GLint ty, GLint tz), (tx, ty, tz), &tx, GL_void_return) /* 901 */ GL_PROC(void, gl, Tangent3ivEXT, glTangent3ivEXT, TANGENT3IVEXT, (AND const GLint *v), (v), &v, GL_void_return) /* 902 */ GL_PROC(void, gl, Tangent3sEXT, glTangent3sEXT, TANGENT3SEXT, (AND GLshort32 tx, GLshort32 ty, GLshort32 tz), (tx, ty, tz), &tx, GL_void_return) /* 903 */ GL_PROC(void, gl, Tangent3svEXT, glTangent3svEXT, TANGENT3SVEXT, (AND const GLshort *v), (v), &v, GL_void_return) /* 904 */ GL_PROC(void, gl, Binormal3bEXT, glBinormal3bEXT, BINORMAL3BEXT, (AND GLbyte32 bx, GLbyte32 by, GLbyte32 bz), (bx, by, bz), &bx, GL_void_return) /* 905 */ GL_PROC(void, gl, Binormal3bvEXT, glBinormal3bvEXT, BINORMAL3BVEXT, (AND const GLbyte *v), (v), &v, GL_void_return) /* 906 */ GL_PROC(void, gl, Binormal3dEXT, glBinormal3dEXT, BINORMAL3DEXT, (AND GLdouble bx, GLdouble by, GLdouble bz), (bx, by, bz), &bx, GL_void_return) /* 907 */ GL_PROC(void, gl, Binormal3dvEXT, glBinormal3dvEXT, BINORMAL3DVEXT, (AND const GLdouble *v), (v), &v, GL_void_return) /* 908 */ GL_PROC(void, gl, Binormal3fEXT, glBinormal3fEXT, BINORMAL3FEXT, (AND GLfloat bx, GLfloat by, GLfloat bz), (bx, by, bz), &bx, GL_void_return) /* 909 */ GL_PROC(void, gl, Binormal3fvEXT, glBinormal3fvEXT, BINORMAL3FVEXT, (AND const GLfloat *v), (v), &v, GL_void_return) /* 910 */ GL_PROC(void, gl, Binormal3iEXT, glBinormal3iEXT, BINORMAL3IEXT, (AND GLint bx, GLint by, GLint bz), (bx, by, bz), &bx, GL_void_return) /* 911 */ GL_PROC(void, gl, Binormal3ivEXT, glBinormal3ivEXT, BINORMAL3IVEXT, (AND const GLint *v), (v), &v, GL_void_return) /* 912 */ GL_PROC(void, gl, Binormal3sEXT, glBinormal3sEXT, BINORMAL3SEXT, (AND GLshort32 bx, GLshort32 by, GLshort32 bz), (bx, by, bz), &bx, GL_void_return) /* 913 */ GL_PROC(void, gl, Binormal3svEXT, glBinormal3svEXT, BINORMAL3SVEXT, (AND const GLshort *v), (v), &v, GL_void_return) /* 914 */ GL_PROC(void, gl, TangentPointerEXT, glTangentPointerEXT, TANGENTPOINTEREXT, (AND GLenum type, GLsizei stride, const void *pointer), (type, stride, pointer), &type, GL_void_return) /* 915 */ GL_PROC(void, gl, BinormalPointerEXT, glBinormalPointerEXT, BINORMALPOINTEREXT, (AND GLenum type, GLsizei stride, const void *pointer), (type, stride, pointer), &type, GL_void_return) /* 916 */ GL_PROC(void, gl, FinishTextureSUNX, glFinishTextureSUNX, FINISHTEXTURESUNX, (NOTHING), (), NULL, GL_void_return) /* 917 */ GL_PROC(void, gl, GlobalAlphaFactorbSUN, glGlobalAlphaFactorbSUN, GLOBALALPHAFACTORBSUN, (AND GLbyte32 factor), (factor), &factor, GL_void_return) /* 918 */ GL_PROC(void, gl, GlobalAlphaFactorsSUN, glGlobalAlphaFactorsSUN, GLOBALALPHAFACTORSSUN, (AND GLshort32 factor), (factor), &factor, GL_void_return) /* 919 */ GL_PROC(void, gl, GlobalAlphaFactoriSUN, glGlobalAlphaFactoriSUN, GLOBALALPHAFACTORISUN, (AND GLint factor), (factor), &factor, GL_void_return) /* 920 */ GL_PROC(void, gl, GlobalAlphaFactorfSUN, glGlobalAlphaFactorfSUN, GLOBALALPHAFACTORFSUN, (AND GLfloat factor), (factor), &factor, GL_void_return) /* 921 */ GL_PROC(void, gl, GlobalAlphaFactordSUN, glGlobalAlphaFactordSUN, GLOBALALPHAFACTORDSUN, (AND GLdouble factor), (factor), &factor, GL_void_return) /* 922 */ GL_PROC(void, gl, GlobalAlphaFactorubSUN, glGlobalAlphaFactorubSUN, GLOBALALPHAFACTORUBSUN, (AND GLubyte32 factor), (factor), &factor, GL_void_return) /* 923 */ GL_PROC(void, gl, GlobalAlphaFactorusSUN, glGlobalAlphaFactorusSUN, GLOBALALPHAFACTORUSSUN, (AND GLushort32 factor), (factor), &factor, GL_void_return) /* 924 */ GL_PROC(void, gl, GlobalAlphaFactoruiSUN, glGlobalAlphaFactoruiSUN, GLOBALALPHAFACTORUISUN, (AND GLuint factor), (factor), &factor, GL_void_return) /* 925 */ GL_PROC(void, gl, ReplacementCodeuiSUN, glReplacementCodeuiSUN, REPLACEMENTCODEUISUN, (AND GLuint code), (code), &code, GL_void_return) /* 926 */ GL_PROC(void, gl, ReplacementCodeusSUN, glReplacementCodeusSUN, REPLACEMENTCODEUSSUN, (AND GLushort32 code), (code), &code, GL_void_return) /* 927 */ GL_PROC(void, gl, ReplacementCodeubSUN, glReplacementCodeubSUN, REPLACEMENTCODEUBSUN, (AND GLubyte32 code), (code), &code, GL_void_return) /* 928 */ GL_PROC(void, gl, ReplacementCodeuivSUN, glReplacementCodeuivSUN, REPLACEMENTCODEUIVSUN, (AND const GLuint *code), (code), &code, GL_void_return) /* 929 */ GL_PROC(void, gl, ReplacementCodeusvSUN, glReplacementCodeusvSUN, REPLACEMENTCODEUSVSUN, (AND const GLushort *code), (code), &code, GL_void_return) /* 930 */ GL_PROC(void, gl, ReplacementCodeubvSUN, glReplacementCodeubvSUN, REPLACEMENTCODEUBVSUN, (AND const GLubyte *code), (code), &code, GL_void_return) /* 931 */ GL_PROC(void, gl, ReplacementCodePointerSUN, glReplacementCodePointerSUN, REPLACEMENTCODEPOINTERSUN, (AND GLenum type, GLsizei stride, const void * *pointer), (type, stride, pointer), &type, GL_void_return) /* 932 */ GL_PROC(void, gl, Color4ubVertex2fSUN, glColor4ubVertex2fSUN, COLOR4UBVERTEX2FSUN, (AND GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y), (r, g, b, a, x, y), &r, GL_void_return) /* 933 */ GL_PROC(void, gl, Color4ubVertex2fvSUN, glColor4ubVertex2fvSUN, COLOR4UBVERTEX2FVSUN, (AND const GLubyte *c, const GLfloat *v), (c, v), &c, GL_void_return) /* 934 */ GL_PROC(void, gl, Color4ubVertex3fSUN, glColor4ubVertex3fSUN, COLOR4UBVERTEX3FSUN, (AND GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z), (r, g, b, a, x, y, z), &r, GL_void_return) /* 935 */ GL_PROC(void, gl, Color4ubVertex3fvSUN, glColor4ubVertex3fvSUN, COLOR4UBVERTEX3FVSUN, (AND const GLubyte *c, const GLfloat *v), (c, v), &c, GL_void_return) /* 936 */ GL_PROC(void, gl, Color3fVertex3fSUN, glColor3fVertex3fSUN, COLOR3FVERTEX3FSUN, (AND GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z), (r, g, b, x, y, z), &r, GL_void_return) /* 937 */ GL_PROC(void, gl, Color3fVertex3fvSUN, glColor3fVertex3fvSUN, COLOR3FVERTEX3FVSUN, (AND const GLfloat *c, const GLfloat *v), (c, v), &c, GL_void_return) /* 938 */ GL_PROC(void, gl, Normal3fVertex3fSUN, glNormal3fVertex3fSUN, NORMAL3FVERTEX3FSUN, (AND GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (nx, ny, nz, x, y, z), &nx, GL_void_return) /* 939 */ GL_PROC(void, gl, Normal3fVertex3fvSUN, glNormal3fVertex3fvSUN, NORMAL3FVERTEX3FVSUN, (AND const GLfloat *n, const GLfloat *v), (n, v), &n, GL_void_return) /* 940 */ GL_PROC(void, gl, Color4fNormal3fVertex3fSUN, glColor4fNormal3fVertex3fSUN, COLOR4FNORMAL3FVERTEX3FSUN, (AND GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (r, g, b, a, nx, ny, nz, x, y, z), &r, GL_void_return) /* 941 */ GL_PROC(void, gl, Color4fNormal3fVertex3fvSUN, glColor4fNormal3fVertex3fvSUN, COLOR4FNORMAL3FVERTEX3FVSUN, (AND const GLfloat *c, const GLfloat *n, const GLfloat *v), (c, n, v), &c, GL_void_return) /* 942 */ GL_PROC(void, gl, TexCoord2fVertex3fSUN, glTexCoord2fVertex3fSUN, TEXCOORD2FVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z), (s, t, x, y, z), &s, GL_void_return) /* 943 */ GL_PROC(void, gl, TexCoord2fVertex3fvSUN, glTexCoord2fVertex3fvSUN, TEXCOORD2FVERTEX3FVSUN, (AND const GLfloat *tc, const GLfloat *v), (tc, v), &tc, GL_void_return) /* 944 */ GL_PROC(void, gl, TexCoord4fVertex4fSUN, glTexCoord4fVertex4fSUN, TEXCOORD4FVERTEX4FSUN, (AND GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (s, t, p, q, x, y, z, w), &s, GL_void_return) /* 945 */ GL_PROC(void, gl, TexCoord4fVertex4fvSUN, glTexCoord4fVertex4fvSUN, TEXCOORD4FVERTEX4FVSUN, (AND const GLfloat *tc, const GLfloat *v), (tc, v), &tc, GL_void_return) /* 946 */ GL_PROC(void, gl, TexCoord2fColor4ubVertex3fSUN, glTexCoord2fColor4ubVertex3fSUN, TEXCOORD2FCOLOR4UBVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z), (s, t, r, g, b, a, x, y, z), &s, GL_void_return) /* 947 */ GL_PROC(void, gl, TexCoord2fColor4ubVertex3fvSUN, glTexCoord2fColor4ubVertex3fvSUN, TEXCOORD2FCOLOR4UBVERTEX3FVSUN, (AND const GLfloat *tc, const GLubyte *c, const GLfloat *v), (tc, c, v), &tc, GL_void_return) /* 948 */ GL_PROC(void, gl, TexCoord2fColor3fVertex3fSUN, glTexCoord2fColor3fVertex3fSUN, TEXCOORD2FCOLOR3FVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z), (s, t, r, g, b, x, y, z), &s, GL_void_return) /* 949 */ GL_PROC(void, gl, TexCoord2fColor3fVertex3fvSUN, glTexCoord2fColor3fVertex3fvSUN, TEXCOORD2FCOLOR3FVERTEX3FVSUN, (AND const GLfloat *tc, const GLfloat *c, const GLfloat *v), (tc, c, v), &tc, GL_void_return) /* 950 */ GL_PROC(void, gl, TexCoord2fNormal3fVertex3fSUN, glTexCoord2fNormal3fVertex3fSUN, TEXCOORD2FNORMAL3FVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (s, t, nx, ny, nz, x, y, z), &s, GL_void_return) /* 951 */ GL_PROC(void, gl, TexCoord2fNormal3fVertex3fvSUN, glTexCoord2fNormal3fVertex3fvSUN, TEXCOORD2FNORMAL3FVERTEX3FVSUN, (AND const GLfloat *tc, const GLfloat *n, const GLfloat *v), (tc, n, v), &tc, GL_void_return) /* 952 */ GL_PROC(void, gl, TexCoord2fColor4fNormal3fVertex3fSUN, glTexCoord2fColor4fNormal3fVertex3fSUN, TEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN, (AND GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (s, t, r, g, b, a, nx, ny, nz, x, y, z), &s, GL_void_return) /* 953 */ GL_PROC(void, gl, TexCoord2fColor4fNormal3fVertex3fvSUN, glTexCoord2fColor4fNormal3fVertex3fvSUN, TEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN, (AND const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v), (tc, c, n, v), &tc, GL_void_return) /* 954 */ GL_PROC(void, gl, TexCoord4fColor4fNormal3fVertex4fSUN, glTexCoord4fColor4fNormal3fVertex4fSUN, TEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUN, (AND GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (s, t, p, q, r, g, b, a, nx, ny, nz, x, y, z, w), &s, GL_void_return) /* 955 */ GL_PROC(void, gl, TexCoord4fColor4fNormal3fVertex4fvSUN, glTexCoord4fColor4fNormal3fVertex4fvSUN, TEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUN, (AND const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v), (tc, c, n, v), &tc, GL_void_return) /* 956 */ GL_PROC(void, gl, ReplacementCodeuiVertex3fSUN, glReplacementCodeuiVertex3fSUN, REPLACEMENTCODEUIVERTEX3FSUN, (AND GLuint rc, GLfloat x, GLfloat y, GLfloat z), (rc, x, y, z), &rc, GL_void_return) /* 957 */ GL_PROC(void, gl, ReplacementCodeuiVertex3fvSUN, glReplacementCodeuiVertex3fvSUN, REPLACEMENTCODEUIVERTEX3FVSUN, (AND const GLuint *rc, const GLfloat *v), (rc, v), &rc, GL_void_return) /* 958 */ GL_PROC(void, gl, ReplacementCodeuiColor4ubVertex3fSUN, glReplacementCodeuiColor4ubVertex3fSUN, REPLACEMENTCODEUICOLOR4UBVERTEX3FSUN, (AND GLuint rc, GLubyte32 r, GLubyte32 g, GLubyte32 b, GLubyte32 a, GLfloat x, GLfloat y, GLfloat z), (rc, r, g, b, a, x, y, z), &rc, GL_void_return) /* 959 */ GL_PROC(void, gl, ReplacementCodeuiColor4ubVertex3fvSUN, glReplacementCodeuiColor4ubVertex3fvSUN, REPLACEMENTCODEUICOLOR4UBVERTEX3FVSUN, (AND const GLuint *rc, const GLubyte *c, const GLfloat *v), (rc, c, v), &rc, GL_void_return) /* 960 */ GL_PROC(void, gl, ReplacementCodeuiColor3fVertex3fSUN, glReplacementCodeuiColor3fVertex3fSUN, REPLACEMENTCODEUICOLOR3FVERTEX3FSUN, (AND GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z), (rc, r, g, b, x, y, z), &rc, GL_void_return) /* 961 */ GL_PROC(void, gl, ReplacementCodeuiColor3fVertex3fvSUN, glReplacementCodeuiColor3fVertex3fvSUN, REPLACEMENTCODEUICOLOR3FVERTEX3FVSUN, (AND const GLuint *rc, const GLfloat *c, const GLfloat *v), (rc, c, v), &rc, GL_void_return) /* 962 */ GL_PROC(void, gl, ReplacementCodeuiNormal3fVertex3fSUN, glReplacementCodeuiNormal3fVertex3fSUN, REPLACEMENTCODEUINORMAL3FVERTEX3FSUN, (AND GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (rc, nx, ny, nz, x, y, z), &rc, GL_void_return) /* 963 */ GL_PROC(void, gl, ReplacementCodeuiNormal3fVertex3fvSUN, glReplacementCodeuiNormal3fVertex3fvSUN, REPLACEMENTCODEUINORMAL3FVERTEX3FVSUN, (AND const GLuint *rc, const GLfloat *n, const GLfloat *v), (rc, n, v), &rc, GL_void_return) /* 964 */ GL_PROC(void, gl, ReplacementCodeuiColor4fNormal3fVertex3fSUN, glReplacementCodeuiColor4fNormal3fVertex3fSUN, REPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUN, (AND GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (rc, r, g, b, a, nx, ny, nz, x, y, z), &rc, GL_void_return) /* 965 */ GL_PROC(void, gl, ReplacementCodeuiColor4fNormal3fVertex3fvSUN, glReplacementCodeuiColor4fNormal3fVertex3fvSUN, REPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUN, (AND const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v), (rc, c, n, v), &rc, GL_void_return) /* 966 */ GL_PROC(void, gl, ReplacementCodeuiTexCoord2fVertex3fSUN, glReplacementCodeuiTexCoord2fVertex3fSUN, REPLACEMENTCODEUITEXCOORD2FVERTEX3FSUN, (AND GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z), (rc, s, t, x, y, z), &rc, GL_void_return) /* 967 */ GL_PROC(void, gl, ReplacementCodeuiTexCoord2fVertex3fvSUN, glReplacementCodeuiTexCoord2fVertex3fvSUN, REPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUN, (AND const GLuint *rc, const GLfloat *tc, const GLfloat *v), (rc, tc, v), &rc, GL_void_return) /* 968 */ GL_PROC(void, gl, ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN, glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN, REPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUN, (AND GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (rc, s, t, nx, ny, nz, x, y, z), &rc, GL_void_return) /* 969 */ GL_PROC(void, gl, ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN, glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN, REPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUN, (AND const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v), (rc, tc, n, v), &rc, GL_void_return) /* 970 */ GL_PROC(void, gl, ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN, glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN, REPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN, (AND GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z), (rc, s, t, r, g, b, a, nx, ny, nz, x, y, z), &rc, GL_void_return) /* 971 */ GL_PROC(void, gl, ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN, glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN, REPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN, (AND const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v), (rc, tc, c, n, v), &rc, GL_void_return) /* 972 */ GL_PROC(void, gl, BlendFuncSeparateEXT, glBlendFuncSeparateEXT, BLENDFUNCSEPARATEEXT, (AND GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha), (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), &sfactorRGB, GL_void_return) /* 973 */ GL_PROC(void, gl, BlendFuncSeparateINGR, glBlendFuncSeparateINGR, BLENDFUNCSEPARATEINGR, (AND GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha), (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), &sfactorRGB, GL_void_return) /* 974 */ GL_PROC(void, gl, VertexWeightfEXT, glVertexWeightfEXT, VERTEXWEIGHTFEXT, (AND GLfloat weight), (weight), &weight, GL_void_return) /* 975 */ GL_PROC(void, gl, VertexWeightfvEXT, glVertexWeightfvEXT, VERTEXWEIGHTFVEXT, (AND const GLfloat *weight), (weight), &weight, GL_void_return) /* 976 */ GL_PROC(void, gl, VertexWeightPointerEXT, glVertexWeightPointerEXT, VERTEXWEIGHTPOINTEREXT, (AND GLint size, GLenum type, GLsizei stride, const void *pointer), (size, type, stride, pointer), &size, GL_void_return) /* 977 */ GL_PROC(void, gl, FlushVertexArrayRangeNV, glFlushVertexArrayRangeNV, FLUSHVERTEXARRAYRANGENV, (NOTHING), (), NULL, GL_void_return) /* 978 */ GL_PROC(void, gl, VertexArrayRangeNV, glVertexArrayRangeNV, VERTEXARRAYRANGENV, (AND GLsizei length, const void *pointer), (length, pointer), &length, GL_void_return) /* 979 */ GL_PROC(void, gl, CombinerParameterfvNV, glCombinerParameterfvNV, COMBINERPARAMETERFVNV, (AND GLenum pname, const GLfloat *params), (pname, params), &pname, GL_void_return) /* 980 */ GL_PROC(void, gl, CombinerParameterfNV, glCombinerParameterfNV, COMBINERPARAMETERFNV, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) /* 981 */ GL_PROC(void, gl, CombinerParameterivNV, glCombinerParameterivNV, COMBINERPARAMETERIVNV, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) /* 982 */ GL_PROC(void, gl, CombinerParameteriNV, glCombinerParameteriNV, COMBINERPARAMETERINV, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* 983 */ GL_PROC(void, gl, CombinerInputNV, glCombinerInputNV, COMBINERINPUTNV, (AND GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage), (stage, portion, variable, input, mapping, componentUsage), &stage, GL_void_return) /* 984 */ GL_PROC(void, gl, CombinerOutputNV, glCombinerOutputNV, COMBINEROUTPUTNV, (AND GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean32 abDotProduct, GLboolean32 cdDotProduct, GLboolean32 muxSum), (stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum), &stage, GL_void_return) /* 985 */ GL_PROC(void, gl, FinalCombinerInputNV, glFinalCombinerInputNV, FINALCOMBINERINPUTNV, (AND GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage), (variable, input, mapping, componentUsage), &variable, GL_void_return) /* 986 */ GL_PROC(void, gl, GetCombinerInputParameterfvNV, glGetCombinerInputParameterfvNV, GETCOMBINERINPUTPARAMETERFVNV, (AND GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params), (stage, portion, variable, pname, params), &stage, GL_void_return) /* 987 */ GL_PROC(void, gl, GetCombinerInputParameterivNV, glGetCombinerInputParameterivNV, GETCOMBINERINPUTPARAMETERIVNV, (AND GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params), (stage, portion, variable, pname, params), &stage, GL_void_return) /* 988 */ GL_PROC(void, gl, GetCombinerOutputParameterfvNV, glGetCombinerOutputParameterfvNV, GETCOMBINEROUTPUTPARAMETERFVNV, (AND GLenum stage, GLenum portion, GLenum pname, GLfloat *params), (stage, portion, pname, params), &stage, GL_void_return) /* 989 */ GL_PROC(void, gl, GetCombinerOutputParameterivNV, glGetCombinerOutputParameterivNV, GETCOMBINEROUTPUTPARAMETERIVNV, (AND GLenum stage, GLenum portion, GLenum pname, GLint *params), (stage, portion, pname, params), &stage, GL_void_return) /* 990 */ GL_PROC(void, gl, GetFinalCombinerInputParameterfvNV, glGetFinalCombinerInputParameterfvNV, GETFINALCOMBINERINPUTPARAMETERFVNV, (AND GLenum variable, GLenum pname, GLfloat *params), (variable, pname, params), &variable, GL_void_return) /* 991 */ GL_PROC(void, gl, GetFinalCombinerInputParameterivNV, glGetFinalCombinerInputParameterivNV, GETFINALCOMBINERINPUTPARAMETERIVNV, (AND GLenum variable, GLenum pname, GLint *params), (variable, pname, params), &variable, GL_void_return) /* 992 */ GL_PROC(void, gl, ResizeBuffersMESA, glResizeBuffersMESA, RESIZEBUFFERSMESA, (NOTHING), (), NULL, GL_void_return) /* 993 */ GL_PROC(void, gl, WindowPos2dMESA, glWindowPos2dMESA, WINDOWPOS2DMESA, (AND GLdouble x, GLdouble y), (x, y), &x, GL_void_return) /* 994 */ GL_PROC(void, gl, WindowPos2dvMESA, glWindowPos2dvMESA, WINDOWPOS2DVMESA, (AND const GLdouble *v), (v), &v, GL_void_return) /* 995 */ GL_PROC(void, gl, WindowPos2fMESA, glWindowPos2fMESA, WINDOWPOS2FMESA, (AND GLfloat x, GLfloat y), (x, y), &x, GL_void_return) /* 996 */ GL_PROC(void, gl, WindowPos2fvMESA, glWindowPos2fvMESA, WINDOWPOS2FVMESA, (AND const GLfloat *v), (v), &v, GL_void_return) /* 997 */ GL_PROC(void, gl, WindowPos2iMESA, glWindowPos2iMESA, WINDOWPOS2IMESA, (AND GLint x, GLint y), (x, y), &x, GL_void_return) /* 998 */ GL_PROC(void, gl, WindowPos2ivMESA, glWindowPos2ivMESA, WINDOWPOS2IVMESA, (AND const GLint *v), (v), &v, GL_void_return) /* 999 */ GL_PROC(void, gl, WindowPos2sMESA, glWindowPos2sMESA, WINDOWPOS2SMESA, (AND GLshort32 x, GLshort32 y), (x, y), &x, GL_void_return) /* 1000 */ GL_PROC(void, gl, WindowPos2svMESA, glWindowPos2svMESA, WINDOWPOS2SVMESA, (AND const GLshort *v), (v), &v, GL_void_return) /* 1001 */ GL_PROC(void, gl, WindowPos3dMESA, glWindowPos3dMESA, WINDOWPOS3DMESA, (AND GLdouble x, GLdouble y, GLdouble z), (x, y, z), &x, GL_void_return) /* 1002 */ GL_PROC(void, gl, WindowPos3dvMESA, glWindowPos3dvMESA, WINDOWPOS3DVMESA, (AND const GLdouble *v), (v), &v, GL_void_return) /* 1003 */ GL_PROC(void, gl, WindowPos3fMESA, glWindowPos3fMESA, WINDOWPOS3FMESA, (AND GLfloat x, GLfloat y, GLfloat z), (x, y, z), &x, GL_void_return) /* 1004 */ GL_PROC(void, gl, WindowPos3fvMESA, glWindowPos3fvMESA, WINDOWPOS3FVMESA, (AND const GLfloat *v), (v), &v, GL_void_return) /* 1005 */ GL_PROC(void, gl, WindowPos3iMESA, glWindowPos3iMESA, WINDOWPOS3IMESA, (AND GLint x, GLint y, GLint z), (x, y, z), &x, GL_void_return) /* 1006 */ GL_PROC(void, gl, WindowPos3ivMESA, glWindowPos3ivMESA, WINDOWPOS3IVMESA, (AND const GLint *v), (v), &v, GL_void_return) /* 1007 */ GL_PROC(void, gl, WindowPos3sMESA, glWindowPos3sMESA, WINDOWPOS3SMESA, (AND GLshort32 x, GLshort32 y, GLshort32 z), (x, y, z), &x, GL_void_return) /* 1008 */ GL_PROC(void, gl, WindowPos3svMESA, glWindowPos3svMESA, WINDOWPOS3SVMESA, (AND const GLshort *v), (v), &v, GL_void_return) /* 1009 */ GL_PROC(void, gl, WindowPos4dMESA, glWindowPos4dMESA, WINDOWPOS4DMESA, (AND GLdouble x, GLdouble y, GLdouble z, GLdouble w), (x, y, z, w), &x, GL_void_return) /* 1010 */ GL_PROC(void, gl, WindowPos4dvMESA, glWindowPos4dvMESA, WINDOWPOS4DVMESA, (AND const GLdouble *v), (v), &v, GL_void_return) /* 1011 */ GL_PROC(void, gl, WindowPos4fMESA, glWindowPos4fMESA, WINDOWPOS4FMESA, (AND GLfloat x, GLfloat y, GLfloat z, GLfloat w), (x, y, z, w), &x, GL_void_return) /* 1012 */ GL_PROC(void, gl, WindowPos4fvMESA, glWindowPos4fvMESA, WINDOWPOS4FVMESA, (AND const GLfloat *v), (v), &v, GL_void_return) /* 1013 */ GL_PROC(void, gl, WindowPos4iMESA, glWindowPos4iMESA, WINDOWPOS4IMESA, (AND GLint x, GLint y, GLint z, GLint w), (x, y, z, w), &x, GL_void_return) /* 1014 */ GL_PROC(void, gl, WindowPos4ivMESA, glWindowPos4ivMESA, WINDOWPOS4IVMESA, (AND const GLint *v), (v), &v, GL_void_return) /* 1015 */ GL_PROC(void, gl, WindowPos4sMESA, glWindowPos4sMESA, WINDOWPOS4SMESA, (AND GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (x, y, z, w), &x, GL_void_return) /* 1016 */ GL_PROC(void, gl, WindowPos4svMESA, glWindowPos4svMESA, WINDOWPOS4SVMESA, (AND const GLshort *v), (v), &v, GL_void_return) /* 1017 */ GL_PROC(void, gl, MultiModeDrawArraysIBM, glMultiModeDrawArraysIBM, MULTIMODEDRAWARRAYSIBM, (AND const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride), (mode, first, count, primcount, modestride), &mode, GL_void_return) /* 1018 */ GL_PROC(void, gl, MultiModeDrawElementsIBM, glMultiModeDrawElementsIBM, MULTIMODEDRAWELEMENTSIBM, (AND const GLenum *mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount, GLint modestride), (mode, count, type, indices, primcount, modestride), &mode, GL_void_return) /* 1019 */ GL_PROC(void, gl, ColorPointerListIBM, glColorPointerListIBM, COLORPOINTERLISTIBM, (AND GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride), (size, type, stride, pointer, ptrstride), &size, GL_void_return) /* 1020 */ GL_PROC(void, gl, SecondaryColorPointerListIBM, glSecondaryColorPointerListIBM, SECONDARYCOLORPOINTERLISTIBM, (AND GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride), (size, type, stride, pointer, ptrstride), &size, GL_void_return) /* 1021 */ GL_PROC(void, gl, EdgeFlagPointerListIBM, glEdgeFlagPointerListIBM, EDGEFLAGPOINTERLISTIBM, (AND GLint stride, const GLboolean * *pointer, GLint ptrstride), (stride, pointer, ptrstride), &stride, GL_void_return) /* 1022 */ GL_PROC(void, gl, FogCoordPointerListIBM, glFogCoordPointerListIBM, FOGCOORDPOINTERLISTIBM, (AND GLenum type, GLint stride, const void * *pointer, GLint ptrstride), (type, stride, pointer, ptrstride), &type, GL_void_return) /* 1023 */ GL_PROC(void, gl, IndexPointerListIBM, glIndexPointerListIBM, INDEXPOINTERLISTIBM, (AND GLenum type, GLint stride, const void * *pointer, GLint ptrstride), (type, stride, pointer, ptrstride), &type, GL_void_return) /* 1024 */ GL_PROC(void, gl, NormalPointerListIBM, glNormalPointerListIBM, NORMALPOINTERLISTIBM, (AND GLenum type, GLint stride, const void * *pointer, GLint ptrstride), (type, stride, pointer, ptrstride), &type, GL_void_return) /* 1025 */ GL_PROC(void, gl, TexCoordPointerListIBM, glTexCoordPointerListIBM, TEXCOORDPOINTERLISTIBM, (AND GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride), (size, type, stride, pointer, ptrstride), &size, GL_void_return) /* 1026 */ GL_PROC(void, gl, VertexPointerListIBM, glVertexPointerListIBM, VERTEXPOINTERLISTIBM, (AND GLint size, GLenum type, GLint stride, const void * *pointer, GLint ptrstride), (size, type, stride, pointer, ptrstride), &size, GL_void_return) /* 1027 */ GL_PROC(void, gl, TbufferMask3DFX, glTbufferMask3DFX, TBUFFERMASK3DFX, (AND GLuint mask), (mask), &mask, GL_void_return) /* 1028 */ GL_PROC(void, gl, SampleMaskEXT, glSampleMaskEXT, SAMPLEMASKEXT, (AND GLclampf value, GLboolean32 invert), (value, invert), &value, GL_void_return) /* 1029 */ GL_PROC(void, gl, SamplePatternEXT, glSamplePatternEXT, SAMPLEPATTERNEXT, (AND GLenum pattern), (pattern), &pattern, GL_void_return) /* 1030 */ GL_PROC(void, gl, TextureColorMaskSGIS, glTextureColorMaskSGIS, TEXTURECOLORMASKSGIS, (AND GLboolean32 red, GLboolean32 green, GLboolean32 blue, GLboolean32 alpha), (red, green, blue, alpha), &red, GL_void_return) /* 1031 */ GL_PROC(void, gl, IglooInterfaceSGIX, glIglooInterfaceSGIX, IGLOOINTERFACESGIX, (AND GLenum pname, const void *params), (pname, params), &pname, GL_void_return) /* 1032 */ GL_PROC(void, gl, DeleteFencesNV, glDeleteFencesNV, DELETEFENCESNV, (AND GLsizei n, const GLuint *fences), (n, fences), &n, GL_void_return) /* 1033 */ GL_PROC(void, gl, GenFencesNV, glGenFencesNV, GENFENCESNV, (AND GLsizei n, GLuint *fences), (n, fences), &n, GL_void_return) /* 1034 */ GL_PROC(GLboolean, gl, IsFenceNV, glIsFenceNV, ISFENCENV, (AND GLuint fence), (fence), &fence, return (GLboolean)) /* 1035 */ GL_PROC(GLboolean, gl, TestFenceNV, glTestFenceNV, TESTFENCENV, (AND GLuint fence), (fence), &fence, return (GLboolean)) /* 1036 */ GL_PROC(void, gl, GetFenceivNV, glGetFenceivNV, GETFENCEIVNV, (AND GLuint fence, GLenum pname, GLint *params), (fence, pname, params), &fence, GL_void_return) /* 1037 */ GL_PROC(void, gl, FinishFenceNV, glFinishFenceNV, FINISHFENCENV, (AND GLuint fence), (fence), &fence, GL_void_return) /* 1038 */ GL_PROC(void, gl, SetFenceNV, glSetFenceNV, SETFENCENV, (AND GLuint fence, GLenum condition), (fence, condition), &fence, GL_void_return) /* 1039 */ GL_PROC(void, gl, MapControlPointsNV, glMapControlPointsNV, MAPCONTROLPOINTSNV, (AND GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean32 packed, const void *points), (target, index, type, ustride, vstride, uorder, vorder, packed, points), &target, GL_void_return) /* 1040 */ GL_PROC(void, gl, MapParameterivNV, glMapParameterivNV, MAPPARAMETERIVNV, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) /* 1041 */ GL_PROC(void, gl, MapParameterfvNV, glMapParameterfvNV, MAPPARAMETERFVNV, (AND GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), &target, GL_void_return) /* 1042 */ GL_PROC(void, gl, GetMapControlPointsNV, glGetMapControlPointsNV, GETMAPCONTROLPOINTSNV, (AND GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean32 packed, void *points), (target, index, type, ustride, vstride, packed, points), &target, GL_void_return) /* 1043 */ GL_PROC(void, gl, GetMapParameterivNV, glGetMapParameterivNV, GETMAPPARAMETERIVNV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 1044 */ GL_PROC(void, gl, GetMapParameterfvNV, glGetMapParameterfvNV, GETMAPPARAMETERFVNV, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) /* 1045 */ GL_PROC(void, gl, GetMapAttribParameterivNV, glGetMapAttribParameterivNV, GETMAPATTRIBPARAMETERIVNV, (AND GLenum target, GLuint index, GLenum pname, GLint *params), (target, index, pname, params), &target, GL_void_return) /* 1046 */ GL_PROC(void, gl, GetMapAttribParameterfvNV, glGetMapAttribParameterfvNV, GETMAPATTRIBPARAMETERFVNV, (AND GLenum target, GLuint index, GLenum pname, GLfloat *params), (target, index, pname, params), &target, GL_void_return) /* 1047 */ GL_PROC(void, gl, EvalMapsNV, glEvalMapsNV, EVALMAPSNV, (AND GLenum target, GLenum mode), (target, mode), &target, GL_void_return) /* 1048 */ GL_PROC(void, gl, CombinerStageParameterfvNV, glCombinerStageParameterfvNV, COMBINERSTAGEPARAMETERFVNV, (AND GLenum stage, GLenum pname, const GLfloat *params), (stage, pname, params), &stage, GL_void_return) /* 1049 */ GL_PROC(void, gl, GetCombinerStageParameterfvNV, glGetCombinerStageParameterfvNV, GETCOMBINERSTAGEPARAMETERFVNV, (AND GLenum stage, GLenum pname, GLfloat *params), (stage, pname, params), &stage, GL_void_return) /* 1050 */ GL_PROC(GLboolean, gl, AreProgramsResidentNV, glAreProgramsResidentNV, AREPROGRAMSRESIDENTNV, (AND GLsizei n, const GLuint *programs, GLboolean *residences), (n, programs, residences), &n, return (GLboolean)) /* 1051 */ GL_PROC(void, gl, BindProgramNV, glBindProgramNV, BINDPROGRAMNV, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) /* 1052 */ GL_PROC(void, gl, DeleteProgramsNV, glDeleteProgramsNV, DELETEPROGRAMSNV, (AND GLsizei n, const GLuint *programs), (n, programs), &n, GL_void_return) /* 1053 */ GL_PROC(void, gl, ExecuteProgramNV, glExecuteProgramNV, EXECUTEPROGRAMNV, (AND GLenum target, GLuint id, const GLfloat *params), (target, id, params), &target, GL_void_return) /* 1054 */ GL_PROC(void, gl, GenProgramsNV, glGenProgramsNV, GENPROGRAMSNV, (AND GLsizei n, GLuint *programs), (n, programs), &n, GL_void_return) /* 1055 */ GL_PROC(void, gl, GetProgramParameterdvNV, glGetProgramParameterdvNV, GETPROGRAMPARAMETERDVNV, (AND GLenum target, GLuint index, GLenum pname, GLdouble *params), (target, index, pname, params), &target, GL_void_return) /* 1056 */ GL_PROC(void, gl, GetProgramParameterfvNV, glGetProgramParameterfvNV, GETPROGRAMPARAMETERFVNV, (AND GLenum target, GLuint index, GLenum pname, GLfloat *params), (target, index, pname, params), &target, GL_void_return) /* 1057 */ GL_PROC(void, gl, GetProgramivNV, glGetProgramivNV, GETPROGRAMIVNV, (AND GLuint id, GLenum pname, GLint *params), (id, pname, params), &id, GL_void_return) /* 1058 */ GL_PROC(void, gl, GetProgramStringNV, glGetProgramStringNV, GETPROGRAMSTRINGNV, (AND GLuint id, GLenum pname, GLubyte *program), (id, pname, program), &id, GL_void_return) /* 1059 */ GL_PROC(void, gl, GetTrackMatrixivNV, glGetTrackMatrixivNV, GETTRACKMATRIXIVNV, (AND GLenum target, GLuint address, GLenum pname, GLint *params), (target, address, pname, params), &target, GL_void_return) /* 1060 */ GL_PROC(void, gl, GetVertexAttribdvNV, glGetVertexAttribdvNV, GETVERTEXATTRIBDVNV, (AND GLuint index, GLenum pname, GLdouble *params), (index, pname, params), &index, GL_void_return) /* 1061 */ GL_PROC(void, gl, GetVertexAttribfvNV, glGetVertexAttribfvNV, GETVERTEXATTRIBFVNV, (AND GLuint index, GLenum pname, GLfloat *params), (index, pname, params), &index, GL_void_return) /* 1062 */ GL_PROC(void, gl, GetVertexAttribivNV, glGetVertexAttribivNV, GETVERTEXATTRIBIVNV, (AND GLuint index, GLenum pname, GLint *params), (index, pname, params), &index, GL_void_return) /* 1063 */ GL_PROC(void, gl, GetVertexAttribPointervNV, glGetVertexAttribPointervNV, GETVERTEXATTRIBPOINTERVNV, (AND GLuint index, GLenum pname, void * *pointer), (index, pname, pointer), &index, GL_void_return) /* 1064 */ GL_PROC(GLboolean, gl, IsProgramNV, glIsProgramNV, ISPROGRAMNV, (AND GLuint id), (id), &id, return (GLboolean)) /* 1065 */ GL_PROC(void, gl, LoadProgramNV, glLoadProgramNV, LOADPROGRAMNV, (AND GLenum target, GLuint id, GLsizei len, const GLubyte *program), (target, id, len, program), &target, GL_void_return) /* 1066 */ GL_PROC(void, gl, ProgramParameter4dNV, glProgramParameter4dNV, PROGRAMPARAMETER4DNV, (AND GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (target, index, x, y, z, w), &target, GL_void_return) /* 1067 */ GL_PROC(void, gl, ProgramParameter4dvNV, glProgramParameter4dvNV, PROGRAMPARAMETER4DVNV, (AND GLenum target, GLuint index, const GLdouble *v), (target, index, v), &target, GL_void_return) /* 1068 */ GL_PROC(void, gl, ProgramParameter4fNV, glProgramParameter4fNV, PROGRAMPARAMETER4FNV, (AND GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (target, index, x, y, z, w), &target, GL_void_return) /* 1069 */ GL_PROC(void, gl, ProgramParameter4fvNV, glProgramParameter4fvNV, PROGRAMPARAMETER4FVNV, (AND GLenum target, GLuint index, const GLfloat *v), (target, index, v), &target, GL_void_return) /* 1070 */ GL_PROC(void, gl, ProgramParameters4dvNV, glProgramParameters4dvNV, PROGRAMPARAMETERS4DVNV, (AND GLenum target, GLuint index, GLsizei count, const GLdouble *v), (target, index, count, v), &target, GL_void_return) /* 1071 */ GL_PROC(void, gl, ProgramParameters4fvNV, glProgramParameters4fvNV, PROGRAMPARAMETERS4FVNV, (AND GLenum target, GLuint index, GLsizei count, const GLfloat *v), (target, index, count, v), &target, GL_void_return) /* 1072 */ GL_PROC(void, gl, RequestResidentProgramsNV, glRequestResidentProgramsNV, REQUESTRESIDENTPROGRAMSNV, (AND GLsizei n, const GLuint *programs), (n, programs), &n, GL_void_return) /* 1073 */ GL_PROC(void, gl, TrackMatrixNV, glTrackMatrixNV, TRACKMATRIXNV, (AND GLenum target, GLuint address, GLenum matrix, GLenum transform), (target, address, matrix, transform), &target, GL_void_return) /* 1074 */ GL_PROC(void, gl, VertexAttribPointerNV, glVertexAttribPointerNV, VERTEXATTRIBPOINTERNV, (AND GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer), (index, fsize, type, stride, pointer), &index, GL_void_return) /* 1075 */ GL_PROC(void, gl, VertexAttrib1dNV, glVertexAttrib1dNV, VERTEXATTRIB1DNV, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) /* 1076 */ GL_PROC(void, gl, VertexAttrib1dvNV, glVertexAttrib1dvNV, VERTEXATTRIB1DVNV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 1077 */ GL_PROC(void, gl, VertexAttrib1fNV, glVertexAttrib1fNV, VERTEXATTRIB1FNV, (AND GLuint index, GLfloat x), (index, x), &index, GL_void_return) /* 1078 */ GL_PROC(void, gl, VertexAttrib1fvNV, glVertexAttrib1fvNV, VERTEXATTRIB1FVNV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) /* 1079 */ GL_PROC(void, gl, VertexAttrib1sNV, glVertexAttrib1sNV, VERTEXATTRIB1SNV, (AND GLuint index, GLshort32 x), (index, x), &index, GL_void_return) /* 1080 */ GL_PROC(void, gl, VertexAttrib1svNV, glVertexAttrib1svNV, VERTEXATTRIB1SVNV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 1081 */ GL_PROC(void, gl, VertexAttrib2dNV, glVertexAttrib2dNV, VERTEXATTRIB2DNV, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) /* 1082 */ GL_PROC(void, gl, VertexAttrib2dvNV, glVertexAttrib2dvNV, VERTEXATTRIB2DVNV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 1083 */ GL_PROC(void, gl, VertexAttrib2fNV, glVertexAttrib2fNV, VERTEXATTRIB2FNV, (AND GLuint index, GLfloat x, GLfloat y), (index, x, y), &index, GL_void_return) /* 1084 */ GL_PROC(void, gl, VertexAttrib2fvNV, glVertexAttrib2fvNV, VERTEXATTRIB2FVNV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) /* 1085 */ GL_PROC(void, gl, VertexAttrib2sNV, glVertexAttrib2sNV, VERTEXATTRIB2SNV, (AND GLuint index, GLshort32 x, GLshort32 y), (index, x, y), &index, GL_void_return) /* 1086 */ GL_PROC(void, gl, VertexAttrib2svNV, glVertexAttrib2svNV, VERTEXATTRIB2SVNV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 1087 */ GL_PROC(void, gl, VertexAttrib3dNV, glVertexAttrib3dNV, VERTEXATTRIB3DNV, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) /* 1088 */ GL_PROC(void, gl, VertexAttrib3dvNV, glVertexAttrib3dvNV, VERTEXATTRIB3DVNV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 1089 */ GL_PROC(void, gl, VertexAttrib3fNV, glVertexAttrib3fNV, VERTEXATTRIB3FNV, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z), (index, x, y, z), &index, GL_void_return) /* 1090 */ GL_PROC(void, gl, VertexAttrib3fvNV, glVertexAttrib3fvNV, VERTEXATTRIB3FVNV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) /* 1091 */ GL_PROC(void, gl, VertexAttrib3sNV, glVertexAttrib3sNV, VERTEXATTRIB3SNV, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z), (index, x, y, z), &index, GL_void_return) /* 1092 */ GL_PROC(void, gl, VertexAttrib3svNV, glVertexAttrib3svNV, VERTEXATTRIB3SVNV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 1093 */ GL_PROC(void, gl, VertexAttrib4dNV, glVertexAttrib4dNV, VERTEXATTRIB4DNV, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) /* 1094 */ GL_PROC(void, gl, VertexAttrib4dvNV, glVertexAttrib4dvNV, VERTEXATTRIB4DVNV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 1095 */ GL_PROC(void, gl, VertexAttrib4fNV, glVertexAttrib4fNV, VERTEXATTRIB4FNV, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (index, x, y, z, w), &index, GL_void_return) /* 1096 */ GL_PROC(void, gl, VertexAttrib4fvNV, glVertexAttrib4fvNV, VERTEXATTRIB4FVNV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) /* 1097 */ GL_PROC(void, gl, VertexAttrib4sNV, glVertexAttrib4sNV, VERTEXATTRIB4SNV, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (index, x, y, z, w), &index, GL_void_return) /* 1098 */ GL_PROC(void, gl, VertexAttrib4svNV, glVertexAttrib4svNV, VERTEXATTRIB4SVNV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 1099 */ GL_PROC(void, gl, VertexAttrib4ubNV, glVertexAttrib4ubNV, VERTEXATTRIB4UBNV, (AND GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w), (index, x, y, z, w), &index, GL_void_return) /* 1100 */ GL_PROC(void, gl, VertexAttrib4ubvNV, glVertexAttrib4ubvNV, VERTEXATTRIB4UBVNV, (AND GLuint index, const GLubyte *v), (index, v), &index, GL_void_return) /* 1101 */ GL_PROC(void, gl, VertexAttribs1dvNV, glVertexAttribs1dvNV, VERTEXATTRIBS1DVNV, (AND GLuint index, GLsizei count, const GLdouble *v), (index, count, v), &index, GL_void_return) /* 1102 */ GL_PROC(void, gl, VertexAttribs1fvNV, glVertexAttribs1fvNV, VERTEXATTRIBS1FVNV, (AND GLuint index, GLsizei count, const GLfloat *v), (index, count, v), &index, GL_void_return) /* 1103 */ GL_PROC(void, gl, VertexAttribs1svNV, glVertexAttribs1svNV, VERTEXATTRIBS1SVNV, (AND GLuint index, GLsizei count, const GLshort *v), (index, count, v), &index, GL_void_return) /* 1104 */ GL_PROC(void, gl, VertexAttribs2dvNV, glVertexAttribs2dvNV, VERTEXATTRIBS2DVNV, (AND GLuint index, GLsizei count, const GLdouble *v), (index, count, v), &index, GL_void_return) /* 1105 */ GL_PROC(void, gl, VertexAttribs2fvNV, glVertexAttribs2fvNV, VERTEXATTRIBS2FVNV, (AND GLuint index, GLsizei count, const GLfloat *v), (index, count, v), &index, GL_void_return) /* 1106 */ GL_PROC(void, gl, VertexAttribs2svNV, glVertexAttribs2svNV, VERTEXATTRIBS2SVNV, (AND GLuint index, GLsizei count, const GLshort *v), (index, count, v), &index, GL_void_return) /* 1107 */ GL_PROC(void, gl, VertexAttribs3dvNV, glVertexAttribs3dvNV, VERTEXATTRIBS3DVNV, (AND GLuint index, GLsizei count, const GLdouble *v), (index, count, v), &index, GL_void_return) /* 1108 */ GL_PROC(void, gl, VertexAttribs3fvNV, glVertexAttribs3fvNV, VERTEXATTRIBS3FVNV, (AND GLuint index, GLsizei count, const GLfloat *v), (index, count, v), &index, GL_void_return) /* 1109 */ GL_PROC(void, gl, VertexAttribs3svNV, glVertexAttribs3svNV, VERTEXATTRIBS3SVNV, (AND GLuint index, GLsizei count, const GLshort *v), (index, count, v), &index, GL_void_return) /* 1110 */ GL_PROC(void, gl, VertexAttribs4dvNV, glVertexAttribs4dvNV, VERTEXATTRIBS4DVNV, (AND GLuint index, GLsizei count, const GLdouble *v), (index, count, v), &index, GL_void_return) /* 1111 */ GL_PROC(void, gl, VertexAttribs4fvNV, glVertexAttribs4fvNV, VERTEXATTRIBS4FVNV, (AND GLuint index, GLsizei count, const GLfloat *v), (index, count, v), &index, GL_void_return) /* 1112 */ GL_PROC(void, gl, VertexAttribs4svNV, glVertexAttribs4svNV, VERTEXATTRIBS4SVNV, (AND GLuint index, GLsizei count, const GLshort *v), (index, count, v), &index, GL_void_return) /* 1113 */ GL_PROC(void, gl, VertexAttribs4ubvNV, glVertexAttribs4ubvNV, VERTEXATTRIBS4UBVNV, (AND GLuint index, GLsizei count, const GLubyte *v), (index, count, v), &index, GL_void_return) /* 1114 */ GL_PROC(void, gl, TexBumpParameterivATI, glTexBumpParameterivATI, TEXBUMPPARAMETERIVATI, (AND GLenum pname, const GLint *param), (pname, param), &pname, GL_void_return) /* 1115 */ GL_PROC(void, gl, TexBumpParameterfvATI, glTexBumpParameterfvATI, TEXBUMPPARAMETERFVATI, (AND GLenum pname, const GLfloat *param), (pname, param), &pname, GL_void_return) /* 1116 */ GL_PROC(void, gl, GetTexBumpParameterivATI, glGetTexBumpParameterivATI, GETTEXBUMPPARAMETERIVATI, (AND GLenum pname, GLint *param), (pname, param), &pname, GL_void_return) /* 1117 */ GL_PROC(void, gl, GetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, GETTEXBUMPPARAMETERFVATI, (AND GLenum pname, GLfloat *param), (pname, param), &pname, GL_void_return) /* 1118 */ GL_PROC(GLuint, gl, GenFragmentShadersATI, glGenFragmentShadersATI, GENFRAGMENTSHADERSATI, (AND GLuint range), (range), &range, return (GLuint)) /* 1119 */ GL_PROC(void, gl, BindFragmentShaderATI, glBindFragmentShaderATI, BINDFRAGMENTSHADERATI, (AND GLuint id), (id), &id, GL_void_return) /* 1120 */ GL_PROC(void, gl, DeleteFragmentShaderATI, glDeleteFragmentShaderATI, DELETEFRAGMENTSHADERATI, (AND GLuint id), (id), &id, GL_void_return) /* 1121 */ GL_PROC(void, gl, BeginFragmentShaderATI, glBeginFragmentShaderATI, BEGINFRAGMENTSHADERATI, (NOTHING), (), NULL, GL_void_return) /* 1122 */ GL_PROC(void, gl, EndFragmentShaderATI, glEndFragmentShaderATI, ENDFRAGMENTSHADERATI, (NOTHING), (), NULL, GL_void_return) /* 1123 */ GL_PROC(void, gl, PassTexCoordATI, glPassTexCoordATI, PASSTEXCOORDATI, (AND GLuint dst, GLuint coord, GLenum swizzle), (dst, coord, swizzle), &dst, GL_void_return) /* 1124 */ GL_PROC(void, gl, SampleMapATI, glSampleMapATI, SAMPLEMAPATI, (AND GLuint dst, GLuint interp, GLenum swizzle), (dst, interp, swizzle), &dst, GL_void_return) /* 1125 */ GL_PROC(void, gl, ColorFragmentOp1ATI, glColorFragmentOp1ATI, COLORFRAGMENTOP1ATI, (AND GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod), (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod), &op, GL_void_return) /* 1126 */ GL_PROC(void, gl, ColorFragmentOp2ATI, glColorFragmentOp2ATI, COLORFRAGMENTOP2ATI, (AND GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod), (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), &op, GL_void_return) /* 1127 */ GL_PROC(void, gl, ColorFragmentOp3ATI, glColorFragmentOp3ATI, COLORFRAGMENTOP3ATI, (AND 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), (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), &op, GL_void_return) /* 1128 */ GL_PROC(void, gl, AlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, ALPHAFRAGMENTOP1ATI, (AND GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod), (op, dst, dstMod, arg1, arg1Rep, arg1Mod), &op, GL_void_return) /* 1129 */ GL_PROC(void, gl, AlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, ALPHAFRAGMENTOP2ATI, (AND GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod), (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), &op, GL_void_return) /* 1130 */ GL_PROC(void, gl, AlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, ALPHAFRAGMENTOP3ATI, (AND GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod), (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), &op, GL_void_return) /* 1131 */ GL_PROC(void, gl, SetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, SETFRAGMENTSHADERCONSTANTATI, (AND GLuint dst, const GLfloat *value), (dst, value), &dst, GL_void_return) /* 1132 */ GL_PROC(void, gl, PNTrianglesiATI, glPNTrianglesiATI, PNTRIANGLESIATI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* 1133 */ GL_PROC(void, gl, PNTrianglesfATI, glPNTrianglesfATI, PNTRIANGLESFATI, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) /* 1134 */ GL_PROC(GLuint, gl, NewObjectBufferATI, glNewObjectBufferATI, NEWOBJECTBUFFERATI, (AND GLsizei size, const void *pointer, GLenum usage), (size, pointer, usage), &size, return (GLuint)) /* 1135 */ GL_PROC(GLboolean, gl, IsObjectBufferATI, glIsObjectBufferATI, ISOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) /* 1136 */ GL_PROC(void, gl, UpdateObjectBufferATI, glUpdateObjectBufferATI, UPDATEOBJECTBUFFERATI, (AND GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve), (buffer, offset, size, pointer, preserve), &buffer, GL_void_return) /* 1137 */ GL_PROC(void, gl, GetObjectBufferfvATI, glGetObjectBufferfvATI, GETOBJECTBUFFERFVATI, (AND GLuint buffer, GLenum pname, GLfloat *params), (buffer, pname, params), &buffer, GL_void_return) /* 1138 */ GL_PROC(void, gl, GetObjectBufferivATI, glGetObjectBufferivATI, GETOBJECTBUFFERIVATI, (AND GLuint buffer, GLenum pname, GLint *params), (buffer, pname, params), &buffer, GL_void_return) /* 1139 */ GL_PROC(void, gl, FreeObjectBufferATI, glFreeObjectBufferATI, FREEOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, GL_void_return) /* 1140 */ GL_PROC(void, gl, ArrayObjectATI, glArrayObjectATI, ARRAYOBJECTATI, (AND GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset), (array, size, type, stride, buffer, offset), &array, GL_void_return) /* 1141 */ GL_PROC(void, gl, GetArrayObjectfvATI, glGetArrayObjectfvATI, GETARRAYOBJECTFVATI, (AND GLenum array, GLenum pname, GLfloat *params), (array, pname, params), &array, GL_void_return) /* 1142 */ GL_PROC(void, gl, GetArrayObjectivATI, glGetArrayObjectivATI, GETARRAYOBJECTIVATI, (AND GLenum array, GLenum pname, GLint *params), (array, pname, params), &array, GL_void_return) /* 1143 */ GL_PROC(void, gl, VariantArrayObjectATI, glVariantArrayObjectATI, VARIANTARRAYOBJECTATI, (AND GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset), (id, type, stride, buffer, offset), &id, GL_void_return) /* 1144 */ GL_PROC(void, gl, GetVariantArrayObjectfvATI, glGetVariantArrayObjectfvATI, GETVARIANTARRAYOBJECTFVATI, (AND GLuint id, GLenum pname, GLfloat *params), (id, pname, params), &id, GL_void_return) /* 1145 */ GL_PROC(void, gl, GetVariantArrayObjectivATI, glGetVariantArrayObjectivATI, GETVARIANTARRAYOBJECTIVATI, (AND GLuint id, GLenum pname, GLint *params), (id, pname, params), &id, GL_void_return) /* 1146 */ GL_PROC(void, gl, BeginVertexShaderEXT, glBeginVertexShaderEXT, BEGINVERTEXSHADEREXT, (NOTHING), (), NULL, GL_void_return) /* 1147 */ GL_PROC(void, gl, EndVertexShaderEXT, glEndVertexShaderEXT, ENDVERTEXSHADEREXT, (NOTHING), (), NULL, GL_void_return) /* 1148 */ GL_PROC(void, gl, BindVertexShaderEXT, glBindVertexShaderEXT, BINDVERTEXSHADEREXT, (AND GLuint id), (id), &id, GL_void_return) /* 1149 */ GL_PROC(GLuint, gl, GenVertexShadersEXT, glGenVertexShadersEXT, GENVERTEXSHADERSEXT, (AND GLuint range), (range), &range, return (GLuint)) /* 1150 */ GL_PROC(void, gl, DeleteVertexShaderEXT, glDeleteVertexShaderEXT, DELETEVERTEXSHADEREXT, (AND GLuint id), (id), &id, GL_void_return) /* 1151 */ GL_PROC(void, gl, ShaderOp1EXT, glShaderOp1EXT, SHADEROP1EXT, (AND GLenum op, GLuint res, GLuint arg1), (op, res, arg1), &op, GL_void_return) /* 1152 */ GL_PROC(void, gl, ShaderOp2EXT, glShaderOp2EXT, SHADEROP2EXT, (AND GLenum op, GLuint res, GLuint arg1, GLuint arg2), (op, res, arg1, arg2), &op, GL_void_return) /* 1153 */ GL_PROC(void, gl, ShaderOp3EXT, glShaderOp3EXT, SHADEROP3EXT, (AND GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3), (op, res, arg1, arg2, arg3), &op, GL_void_return) /* 1154 */ GL_PROC(void, gl, SwizzleEXT, glSwizzleEXT, SWIZZLEEXT, (AND GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW), (res, in, outX, outY, outZ, outW), &res, GL_void_return) /* 1155 */ GL_PROC(void, gl, WriteMaskEXT, glWriteMaskEXT, WRITEMASKEXT, (AND GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW), (res, in, outX, outY, outZ, outW), &res, GL_void_return) /* 1156 */ GL_PROC(void, gl, InsertComponentEXT, glInsertComponentEXT, INSERTCOMPONENTEXT, (AND GLuint res, GLuint src, GLuint num), (res, src, num), &res, GL_void_return) /* 1157 */ GL_PROC(void, gl, ExtractComponentEXT, glExtractComponentEXT, EXTRACTCOMPONENTEXT, (AND GLuint res, GLuint src, GLuint num), (res, src, num), &res, GL_void_return) /* 1158 */ GL_PROC(GLuint, gl, GenSymbolsEXT, glGenSymbolsEXT, GENSYMBOLSEXT, (AND GLenum datatype, GLenum storagetype, GLenum range, GLuint components), (datatype, storagetype, range, components), &datatype, return (GLuint)) /* 1159 */ GL_PROC(void, gl, SetInvariantEXT, glSetInvariantEXT, SETINVARIANTEXT, (AND GLuint id, GLenum type, const void *addr), (id, type, addr), &id, GL_void_return) /* 1160 */ GL_PROC(void, gl, SetLocalConstantEXT, glSetLocalConstantEXT, SETLOCALCONSTANTEXT, (AND GLuint id, GLenum type, const void *addr), (id, type, addr), &id, GL_void_return) /* 1161 */ GL_PROC(void, gl, VariantbvEXT, glVariantbvEXT, VARIANTBVEXT, (AND GLuint id, const GLbyte *addr), (id, addr), &id, GL_void_return) /* 1162 */ GL_PROC(void, gl, VariantsvEXT, glVariantsvEXT, VARIANTSVEXT, (AND GLuint id, const GLshort *addr), (id, addr), &id, GL_void_return) /* 1163 */ GL_PROC(void, gl, VariantivEXT, glVariantivEXT, VARIANTIVEXT, (AND GLuint id, const GLint *addr), (id, addr), &id, GL_void_return) /* 1164 */ GL_PROC(void, gl, VariantfvEXT, glVariantfvEXT, VARIANTFVEXT, (AND GLuint id, const GLfloat *addr), (id, addr), &id, GL_void_return) /* 1165 */ GL_PROC(void, gl, VariantdvEXT, glVariantdvEXT, VARIANTDVEXT, (AND GLuint id, const GLdouble *addr), (id, addr), &id, GL_void_return) /* 1166 */ GL_PROC(void, gl, VariantubvEXT, glVariantubvEXT, VARIANTUBVEXT, (AND GLuint id, const GLubyte *addr), (id, addr), &id, GL_void_return) /* 1167 */ GL_PROC(void, gl, VariantusvEXT, glVariantusvEXT, VARIANTUSVEXT, (AND GLuint id, const GLushort *addr), (id, addr), &id, GL_void_return) /* 1168 */ GL_PROC(void, gl, VariantuivEXT, glVariantuivEXT, VARIANTUIVEXT, (AND GLuint id, const GLuint *addr), (id, addr), &id, GL_void_return) /* 1169 */ GL_PROC(void, gl, VariantPointerEXT, glVariantPointerEXT, VARIANTPOINTEREXT, (AND GLuint id, GLenum type, GLuint stride, const void *addr), (id, type, stride, addr), &id, GL_void_return) /* 1170 */ GL_PROC(void, gl, EnableVariantClientStateEXT, glEnableVariantClientStateEXT, ENABLEVARIANTCLIENTSTATEEXT, (AND GLuint id), (id), &id, GL_void_return) /* 1171 */ GL_PROC(void, gl, DisableVariantClientStateEXT, glDisableVariantClientStateEXT, DISABLEVARIANTCLIENTSTATEEXT, (AND GLuint id), (id), &id, GL_void_return) /* 1172 */ GL_PROC(GLuint, gl, BindLightParameterEXT, glBindLightParameterEXT, BINDLIGHTPARAMETEREXT, (AND GLenum light, GLenum value), (light, value), &light, return (GLuint)) /* 1173 */ GL_PROC(GLuint, gl, BindMaterialParameterEXT, glBindMaterialParameterEXT, BINDMATERIALPARAMETEREXT, (AND GLenum face, GLenum value), (face, value), &face, return (GLuint)) /* 1174 */ GL_PROC(GLuint, gl, BindTexGenParameterEXT, glBindTexGenParameterEXT, BINDTEXGENPARAMETEREXT, (AND GLenum unit, GLenum coord, GLenum value), (unit, coord, value), &unit, return (GLuint)) /* 1175 */ GL_PROC(GLuint, gl, BindTextureUnitParameterEXT, glBindTextureUnitParameterEXT, BINDTEXTUREUNITPARAMETEREXT, (AND GLenum unit, GLenum value), (unit, value), &unit, return (GLuint)) /* 1176 */ GL_PROC(GLuint, gl, BindParameterEXT, glBindParameterEXT, BINDPARAMETEREXT, (AND GLenum value), (value), &value, return (GLuint)) /* 1177 */ GL_PROC(GLboolean, gl, IsVariantEnabledEXT, glIsVariantEnabledEXT, ISVARIANTENABLEDEXT, (AND GLuint id, GLenum cap), (id, cap), &id, return (GLboolean)) /* 1178 */ GL_PROC(void, gl, GetVariantBooleanvEXT, glGetVariantBooleanvEXT, GETVARIANTBOOLEANVEXT, (AND GLuint id, GLenum value, GLboolean *data), (id, value, data), &id, GL_void_return) /* 1179 */ GL_PROC(void, gl, GetVariantIntegervEXT, glGetVariantIntegervEXT, GETVARIANTINTEGERVEXT, (AND GLuint id, GLenum value, GLint *data), (id, value, data), &id, GL_void_return) /* 1180 */ GL_PROC(void, gl, GetVariantFloatvEXT, glGetVariantFloatvEXT, GETVARIANTFLOATVEXT, (AND GLuint id, GLenum value, GLfloat *data), (id, value, data), &id, GL_void_return) /* 1181 */ GL_PROC(void, gl, GetVariantPointervEXT, glGetVariantPointervEXT, GETVARIANTPOINTERVEXT, (AND GLuint id, GLenum value, void * *data), (id, value, data), &id, GL_void_return) /* 1182 */ GL_PROC(void, gl, GetInvariantBooleanvEXT, glGetInvariantBooleanvEXT, GETINVARIANTBOOLEANVEXT, (AND GLuint id, GLenum value, GLboolean *data), (id, value, data), &id, GL_void_return) /* 1183 */ GL_PROC(void, gl, GetInvariantIntegervEXT, glGetInvariantIntegervEXT, GETINVARIANTINTEGERVEXT, (AND GLuint id, GLenum value, GLint *data), (id, value, data), &id, GL_void_return) /* 1184 */ GL_PROC(void, gl, GetInvariantFloatvEXT, glGetInvariantFloatvEXT, GETINVARIANTFLOATVEXT, (AND GLuint id, GLenum value, GLfloat *data), (id, value, data), &id, GL_void_return) /* 1185 */ GL_PROC(void, gl, GetLocalConstantBooleanvEXT, glGetLocalConstantBooleanvEXT, GETLOCALCONSTANTBOOLEANVEXT, (AND GLuint id, GLenum value, GLboolean *data), (id, value, data), &id, GL_void_return) /* 1186 */ GL_PROC(void, gl, GetLocalConstantIntegervEXT, glGetLocalConstantIntegervEXT, GETLOCALCONSTANTINTEGERVEXT, (AND GLuint id, GLenum value, GLint *data), (id, value, data), &id, GL_void_return) /* 1187 */ GL_PROC(void, gl, GetLocalConstantFloatvEXT, glGetLocalConstantFloatvEXT, GETLOCALCONSTANTFLOATVEXT, (AND GLuint id, GLenum value, GLfloat *data), (id, value, data), &id, GL_void_return) /* 1188 */ GL_PROC(void, gl, VertexStream1sATI, glVertexStream1sATI, VERTEXSTREAM1SATI, (AND GLenum stream, GLshort32 x), (stream, x), &stream, GL_void_return) /* 1189 */ GL_PROC(void, gl, VertexStream1svATI, glVertexStream1svATI, VERTEXSTREAM1SVATI, (AND GLenum stream, const GLshort *coords), (stream, coords), &stream, GL_void_return) /* 1190 */ GL_PROC(void, gl, VertexStream1iATI, glVertexStream1iATI, VERTEXSTREAM1IATI, (AND GLenum stream, GLint x), (stream, x), &stream, GL_void_return) /* 1191 */ GL_PROC(void, gl, VertexStream1ivATI, glVertexStream1ivATI, VERTEXSTREAM1IVATI, (AND GLenum stream, const GLint *coords), (stream, coords), &stream, GL_void_return) /* 1192 */ GL_PROC(void, gl, VertexStream1fATI, glVertexStream1fATI, VERTEXSTREAM1FATI, (AND GLenum stream, GLfloat x), (stream, x), &stream, GL_void_return) /* 1193 */ GL_PROC(void, gl, VertexStream1fvATI, glVertexStream1fvATI, VERTEXSTREAM1FVATI, (AND GLenum stream, const GLfloat *coords), (stream, coords), &stream, GL_void_return) /* 1194 */ GL_PROC(void, gl, VertexStream1dATI, glVertexStream1dATI, VERTEXSTREAM1DATI, (AND GLenum stream, GLdouble x), (stream, x), &stream, GL_void_return) /* 1195 */ GL_PROC(void, gl, VertexStream1dvATI, glVertexStream1dvATI, VERTEXSTREAM1DVATI, (AND GLenum stream, const GLdouble *coords), (stream, coords), &stream, GL_void_return) /* 1196 */ GL_PROC(void, gl, VertexStream2sATI, glVertexStream2sATI, VERTEXSTREAM2SATI, (AND GLenum stream, GLshort32 x, GLshort32 y), (stream, x, y), &stream, GL_void_return) /* 1197 */ GL_PROC(void, gl, VertexStream2svATI, glVertexStream2svATI, VERTEXSTREAM2SVATI, (AND GLenum stream, const GLshort *coords), (stream, coords), &stream, GL_void_return) /* 1198 */ GL_PROC(void, gl, VertexStream2iATI, glVertexStream2iATI, VERTEXSTREAM2IATI, (AND GLenum stream, GLint x, GLint y), (stream, x, y), &stream, GL_void_return) /* 1199 */ GL_PROC(void, gl, VertexStream2ivATI, glVertexStream2ivATI, VERTEXSTREAM2IVATI, (AND GLenum stream, const GLint *coords), (stream, coords), &stream, GL_void_return) /* 1200 */ GL_PROC(void, gl, VertexStream2fATI, glVertexStream2fATI, VERTEXSTREAM2FATI, (AND GLenum stream, GLfloat x, GLfloat y), (stream, x, y), &stream, GL_void_return) /* 1201 */ GL_PROC(void, gl, VertexStream2fvATI, glVertexStream2fvATI, VERTEXSTREAM2FVATI, (AND GLenum stream, const GLfloat *coords), (stream, coords), &stream, GL_void_return) /* 1202 */ GL_PROC(void, gl, VertexStream2dATI, glVertexStream2dATI, VERTEXSTREAM2DATI, (AND GLenum stream, GLdouble x, GLdouble y), (stream, x, y), &stream, GL_void_return) /* 1203 */ GL_PROC(void, gl, VertexStream2dvATI, glVertexStream2dvATI, VERTEXSTREAM2DVATI, (AND GLenum stream, const GLdouble *coords), (stream, coords), &stream, GL_void_return) /* 1204 */ GL_PROC(void, gl, VertexStream3sATI, glVertexStream3sATI, VERTEXSTREAM3SATI, (AND GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z), (stream, x, y, z), &stream, GL_void_return) /* 1205 */ GL_PROC(void, gl, VertexStream3svATI, glVertexStream3svATI, VERTEXSTREAM3SVATI, (AND GLenum stream, const GLshort *coords), (stream, coords), &stream, GL_void_return) /* 1206 */ GL_PROC(void, gl, VertexStream3iATI, glVertexStream3iATI, VERTEXSTREAM3IATI, (AND GLenum stream, GLint x, GLint y, GLint z), (stream, x, y, z), &stream, GL_void_return) /* 1207 */ GL_PROC(void, gl, VertexStream3ivATI, glVertexStream3ivATI, VERTEXSTREAM3IVATI, (AND GLenum stream, const GLint *coords), (stream, coords), &stream, GL_void_return) /* 1208 */ GL_PROC(void, gl, VertexStream3fATI, glVertexStream3fATI, VERTEXSTREAM3FATI, (AND GLenum stream, GLfloat x, GLfloat y, GLfloat z), (stream, x, y, z), &stream, GL_void_return) /* 1209 */ GL_PROC(void, gl, VertexStream3fvATI, glVertexStream3fvATI, VERTEXSTREAM3FVATI, (AND GLenum stream, const GLfloat *coords), (stream, coords), &stream, GL_void_return) /* 1210 */ GL_PROC(void, gl, VertexStream3dATI, glVertexStream3dATI, VERTEXSTREAM3DATI, (AND GLenum stream, GLdouble x, GLdouble y, GLdouble z), (stream, x, y, z), &stream, GL_void_return) /* 1211 */ GL_PROC(void, gl, VertexStream3dvATI, glVertexStream3dvATI, VERTEXSTREAM3DVATI, (AND GLenum stream, const GLdouble *coords), (stream, coords), &stream, GL_void_return) /* 1212 */ GL_PROC(void, gl, VertexStream4sATI, glVertexStream4sATI, VERTEXSTREAM4SATI, (AND GLenum stream, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (stream, x, y, z, w), &stream, GL_void_return) /* 1213 */ GL_PROC(void, gl, VertexStream4svATI, glVertexStream4svATI, VERTEXSTREAM4SVATI, (AND GLenum stream, const GLshort *coords), (stream, coords), &stream, GL_void_return) /* 1214 */ GL_PROC(void, gl, VertexStream4iATI, glVertexStream4iATI, VERTEXSTREAM4IATI, (AND GLenum stream, GLint x, GLint y, GLint z, GLint w), (stream, x, y, z, w), &stream, GL_void_return) /* 1215 */ GL_PROC(void, gl, VertexStream4ivATI, glVertexStream4ivATI, VERTEXSTREAM4IVATI, (AND GLenum stream, const GLint *coords), (stream, coords), &stream, GL_void_return) /* 1216 */ GL_PROC(void, gl, VertexStream4fATI, glVertexStream4fATI, VERTEXSTREAM4FATI, (AND GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (stream, x, y, z, w), &stream, GL_void_return) /* 1217 */ GL_PROC(void, gl, VertexStream4fvATI, glVertexStream4fvATI, VERTEXSTREAM4FVATI, (AND GLenum stream, const GLfloat *coords), (stream, coords), &stream, GL_void_return) /* 1218 */ GL_PROC(void, gl, VertexStream4dATI, glVertexStream4dATI, VERTEXSTREAM4DATI, (AND GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (stream, x, y, z, w), &stream, GL_void_return) /* 1219 */ GL_PROC(void, gl, VertexStream4dvATI, glVertexStream4dvATI, VERTEXSTREAM4DVATI, (AND GLenum stream, const GLdouble *coords), (stream, coords), &stream, GL_void_return) /* 1220 */ GL_PROC(void, gl, NormalStream3bATI, glNormalStream3bATI, NORMALSTREAM3BATI, (AND GLenum stream, GLbyte32 nx, GLbyte32 ny, GLbyte32 nz), (stream, nx, ny, nz), &stream, GL_void_return) /* 1221 */ GL_PROC(void, gl, NormalStream3bvATI, glNormalStream3bvATI, NORMALSTREAM3BVATI, (AND GLenum stream, const GLbyte *coords), (stream, coords), &stream, GL_void_return) /* 1222 */ GL_PROC(void, gl, NormalStream3sATI, glNormalStream3sATI, NORMALSTREAM3SATI, (AND GLenum stream, GLshort32 nx, GLshort32 ny, GLshort32 nz), (stream, nx, ny, nz), &stream, GL_void_return) /* 1223 */ GL_PROC(void, gl, NormalStream3svATI, glNormalStream3svATI, NORMALSTREAM3SVATI, (AND GLenum stream, const GLshort *coords), (stream, coords), &stream, GL_void_return) /* 1224 */ GL_PROC(void, gl, NormalStream3iATI, glNormalStream3iATI, NORMALSTREAM3IATI, (AND GLenum stream, GLint nx, GLint ny, GLint nz), (stream, nx, ny, nz), &stream, GL_void_return) /* 1225 */ GL_PROC(void, gl, NormalStream3ivATI, glNormalStream3ivATI, NORMALSTREAM3IVATI, (AND GLenum stream, const GLint *coords), (stream, coords), &stream, GL_void_return) /* 1226 */ GL_PROC(void, gl, NormalStream3fATI, glNormalStream3fATI, NORMALSTREAM3FATI, (AND GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz), (stream, nx, ny, nz), &stream, GL_void_return) /* 1227 */ GL_PROC(void, gl, NormalStream3fvATI, glNormalStream3fvATI, NORMALSTREAM3FVATI, (AND GLenum stream, const GLfloat *coords), (stream, coords), &stream, GL_void_return) /* 1228 */ GL_PROC(void, gl, NormalStream3dATI, glNormalStream3dATI, NORMALSTREAM3DATI, (AND GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz), (stream, nx, ny, nz), &stream, GL_void_return) /* 1229 */ GL_PROC(void, gl, NormalStream3dvATI, glNormalStream3dvATI, NORMALSTREAM3DVATI, (AND GLenum stream, const GLdouble *coords), (stream, coords), &stream, GL_void_return) /* 1230 */ GL_PROC(void, gl, ClientActiveVertexStreamATI, glClientActiveVertexStreamATI, CLIENTACTIVEVERTEXSTREAMATI, (AND GLenum stream), (stream), &stream, GL_void_return) /* 1231 */ GL_PROC(void, gl, VertexBlendEnviATI, glVertexBlendEnviATI, VERTEXBLENDENVIATI, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* 1232 */ GL_PROC(void, gl, VertexBlendEnvfATI, glVertexBlendEnvfATI, VERTEXBLENDENVFATI, (AND GLenum pname, GLfloat param), (pname, param), &pname, GL_void_return) /* 1233 */ GL_PROC(void, gl, ElementPointerATI, glElementPointerATI, ELEMENTPOINTERATI, (AND GLenum type, const void *pointer), (type, pointer), &type, GL_void_return) /* 1234 */ GL_PROC(void, gl, DrawElementArrayATI, glDrawElementArrayATI, DRAWELEMENTARRAYATI, (AND GLenum mode, GLsizei count), (mode, count), &mode, GL_void_return) /* 1235 */ GL_PROC(void, gl, DrawRangeElementArrayATI, glDrawRangeElementArrayATI, DRAWRANGEELEMENTARRAYATI, (AND GLenum mode, GLuint start, GLuint end, GLsizei count), (mode, start, end, count), &mode, GL_void_return) /* 1236 */ GL_PROC(void, gl, DrawMeshArraysSUN, glDrawMeshArraysSUN, DRAWMESHARRAYSSUN, (AND GLenum mode, GLint first, GLsizei count, GLsizei width), (mode, first, count, width), &mode, GL_void_return) /* 1237 */ GL_PROC(void, gl, GenOcclusionQueriesNV, glGenOcclusionQueriesNV, GENOCCLUSIONQUERIESNV, (AND GLsizei n, GLuint *ids), (n, ids), &n, GL_void_return) /* 1238 */ GL_PROC(void, gl, DeleteOcclusionQueriesNV, glDeleteOcclusionQueriesNV, DELETEOCCLUSIONQUERIESNV, (AND GLsizei n, const GLuint *ids), (n, ids), &n, GL_void_return) /* 1239 */ GL_PROC(GLboolean, gl, IsOcclusionQueryNV, glIsOcclusionQueryNV, ISOCCLUSIONQUERYNV, (AND GLuint id), (id), &id, return (GLboolean)) /* 1240 */ GL_PROC(void, gl, BeginOcclusionQueryNV, glBeginOcclusionQueryNV, BEGINOCCLUSIONQUERYNV, (AND GLuint id), (id), &id, GL_void_return) /* 1241 */ GL_PROC(void, gl, EndOcclusionQueryNV, glEndOcclusionQueryNV, ENDOCCLUSIONQUERYNV, (NOTHING), (), NULL, GL_void_return) /* 1242 */ GL_PROC(void, gl, GetOcclusionQueryivNV, glGetOcclusionQueryivNV, GETOCCLUSIONQUERYIVNV, (AND GLuint id, GLenum pname, GLint *params), (id, pname, params), &id, GL_void_return) /* 1243 */ GL_PROC(void, gl, GetOcclusionQueryuivNV, glGetOcclusionQueryuivNV, GETOCCLUSIONQUERYUIVNV, (AND GLuint id, GLenum pname, GLuint *params), (id, pname, params), &id, GL_void_return) /* 1244 */ GL_PROC(void, gl, PointParameteriNV, glPointParameteriNV, POINTPARAMETERINV, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* 1245 */ GL_PROC(void, gl, PointParameterivNV, glPointParameterivNV, POINTPARAMETERIVNV, (AND GLenum pname, const GLint *params), (pname, params), &pname, GL_void_return) /* 1246 */ GL_PROC(void, gl, ActiveStencilFaceEXT, glActiveStencilFaceEXT, ACTIVESTENCILFACEEXT, (AND GLenum face), (face), &face, GL_void_return) /* 1247 */ GL_PROC(void, gl, ElementPointerAPPLE, glElementPointerAPPLE, ELEMENTPOINTERAPPLE, (AND GLenum type, const void *pointer), (type, pointer), &type, GL_void_return) /* 1248 */ GL_PROC(void, gl, DrawElementArrayAPPLE, glDrawElementArrayAPPLE, DRAWELEMENTARRAYAPPLE, (AND GLenum mode, GLint first, GLsizei count), (mode, first, count), &mode, GL_void_return) /* 1249 */ GL_PROC(void, gl, DrawRangeElementArrayAPPLE, glDrawRangeElementArrayAPPLE, DRAWRANGEELEMENTARRAYAPPLE, (AND GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count), (mode, start, end, first, count), &mode, GL_void_return) /* 1250 */ GL_PROC(void, gl, MultiDrawElementArrayAPPLE, glMultiDrawElementArrayAPPLE, MULTIDRAWELEMENTARRAYAPPLE, (AND GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount), (mode, first, count, primcount), &mode, GL_void_return) /* 1251 */ GL_PROC(void, gl, MultiDrawRangeElementArrayAPPLE, glMultiDrawRangeElementArrayAPPLE, MULTIDRAWRANGEELEMENTARRAYAPPLE, (AND GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount), (mode, start, end, first, count, primcount), &mode, GL_void_return) /* 1252 */ GL_PROC(void, gl, GenFencesAPPLE, glGenFencesAPPLE, GENFENCESAPPLE, (AND GLsizei n, GLuint *fences), (n, fences), &n, GL_void_return) /* 1253 */ GL_PROC(void, gl, DeleteFencesAPPLE, glDeleteFencesAPPLE, DELETEFENCESAPPLE, (AND GLsizei n, const GLuint *fences), (n, fences), &n, GL_void_return) /* 1254 */ GL_PROC(void, gl, SetFenceAPPLE, glSetFenceAPPLE, SETFENCEAPPLE, (AND GLuint fence), (fence), &fence, GL_void_return) /* 1255 */ GL_PROC(GLboolean, gl, IsFenceAPPLE, glIsFenceAPPLE, ISFENCEAPPLE, (AND GLuint fence), (fence), &fence, return (GLboolean)) /* 1256 */ GL_PROC(GLboolean, gl, TestFenceAPPLE, glTestFenceAPPLE, TESTFENCEAPPLE, (AND GLuint fence), (fence), &fence, return (GLboolean)) /* 1257 */ GL_PROC(void, gl, FinishFenceAPPLE, glFinishFenceAPPLE, FINISHFENCEAPPLE, (AND GLuint fence), (fence), &fence, GL_void_return) /* 1258 */ GL_PROC(GLboolean, gl, TestObjectAPPLE, glTestObjectAPPLE, TESTOBJECTAPPLE, (AND GLenum object, GLuint name), (object, name), &object, return (GLboolean)) /* 1259 */ GL_PROC(void, gl, FinishObjectAPPLE, glFinishObjectAPPLE, FINISHOBJECTAPPLE, (AND GLenum object, GLuint name), (object, name), &object, GL_void_return) /* 1260 */ GL_PROC(void, gl, BindVertexArrayAPPLE, glBindVertexArrayAPPLE, BINDVERTEXARRAYAPPLE, (AND GLuint array), (array), &array, GL_void_return) /* 1261 */ GL_PROC(void, gl, DeleteVertexArraysAPPLE, glDeleteVertexArraysAPPLE, DELETEVERTEXARRAYSAPPLE, (AND GLsizei n, const GLuint *arrays), (n, arrays), &n, GL_void_return) /* 1262 */ GL_PROC(void, gl, GenVertexArraysAPPLE, glGenVertexArraysAPPLE, GENVERTEXARRAYSAPPLE, (AND GLsizei n, GLuint *arrays), (n, arrays), &n, GL_void_return) /* 1263 */ GL_PROC(GLboolean, gl, IsVertexArrayAPPLE, glIsVertexArrayAPPLE, ISVERTEXARRAYAPPLE, (AND GLuint array), (array), &array, return (GLboolean)) /* 1264 */ GL_PROC(void, gl, VertexArrayRangeAPPLE, glVertexArrayRangeAPPLE, VERTEXARRAYRANGEAPPLE, (AND GLsizei length, void *pointer), (length, pointer), &length, GL_void_return) /* 1265 */ GL_PROC(void, gl, FlushVertexArrayRangeAPPLE, glFlushVertexArrayRangeAPPLE, FLUSHVERTEXARRAYRANGEAPPLE, (AND GLsizei length, void *pointer), (length, pointer), &length, GL_void_return) /* 1266 */ GL_PROC(void, gl, VertexArrayParameteriAPPLE, glVertexArrayParameteriAPPLE, VERTEXARRAYPARAMETERIAPPLE, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* 1267 */ GL_PROC(void, gl, DrawBuffersATI, glDrawBuffersATI, DRAWBUFFERSATI, (AND GLsizei n, const GLenum *bufs), (n, bufs), &n, GL_void_return) /* 1268 */ GL_PROC(void, gl, ProgramNamedParameter4fNV, glProgramNamedParameter4fNV, PROGRAMNAMEDPARAMETER4FNV, (AND GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (id, len, name, x, y, z, w), &id, GL_void_return) /* 1269 */ GL_PROC(void, gl, ProgramNamedParameter4dNV, glProgramNamedParameter4dNV, PROGRAMNAMEDPARAMETER4DNV, (AND GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (id, len, name, x, y, z, w), &id, GL_void_return) /* 1270 */ GL_PROC(void, gl, ProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, PROGRAMNAMEDPARAMETER4FVNV, (AND GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v), (id, len, name, v), &id, GL_void_return) /* 1271 */ GL_PROC(void, gl, ProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, PROGRAMNAMEDPARAMETER4DVNV, (AND GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v), (id, len, name, v), &id, GL_void_return) /* 1272 */ GL_PROC(void, gl, GetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, GETPROGRAMNAMEDPARAMETERFVNV, (AND GLuint id, GLsizei len, const GLubyte *name, GLfloat *params), (id, len, name, params), &id, GL_void_return) /* 1273 */ GL_PROC(void, gl, GetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, GETPROGRAMNAMEDPARAMETERDVNV, (AND GLuint id, GLsizei len, const GLubyte *name, GLdouble *params), (id, len, name, params), &id, GL_void_return) /* 1274 */ GL_PROC(void, gl, Vertex2hNV, glVertex2hNV, VERTEX2HNV, (AND GLhalfNV32 x, GLhalfNV32 y), (x, y), &x, GL_void_return) /* 1275 */ GL_PROC(void, gl, Vertex2hvNV, glVertex2hvNV, VERTEX2HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) /* 1276 */ GL_PROC(void, gl, Vertex3hNV, glVertex3hNV, VERTEX3HNV, (AND GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z), (x, y, z), &x, GL_void_return) /* 1277 */ GL_PROC(void, gl, Vertex3hvNV, glVertex3hvNV, VERTEX3HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) /* 1278 */ GL_PROC(void, gl, Vertex4hNV, glVertex4hNV, VERTEX4HNV, (AND GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w), (x, y, z, w), &x, GL_void_return) /* 1279 */ GL_PROC(void, gl, Vertex4hvNV, glVertex4hvNV, VERTEX4HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) /* 1280 */ GL_PROC(void, gl, Normal3hNV, glNormal3hNV, NORMAL3HNV, (AND GLhalfNV32 nx, GLhalfNV32 ny, GLhalfNV32 nz), (nx, ny, nz), &nx, GL_void_return) /* 1281 */ GL_PROC(void, gl, Normal3hvNV, glNormal3hvNV, NORMAL3HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) /* 1282 */ GL_PROC(void, gl, Color3hNV, glColor3hNV, COLOR3HNV, (AND GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue), (red, green, blue), &red, GL_void_return) /* 1283 */ GL_PROC(void, gl, Color3hvNV, glColor3hvNV, COLOR3HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) /* 1284 */ GL_PROC(void, gl, Color4hNV, glColor4hNV, COLOR4HNV, (AND GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue, GLhalfNV32 alpha), (red, green, blue, alpha), &red, GL_void_return) /* 1285 */ GL_PROC(void, gl, Color4hvNV, glColor4hvNV, COLOR4HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) /* 1286 */ GL_PROC(void, gl, TexCoord1hNV, glTexCoord1hNV, TEXCOORD1HNV, (AND GLhalfNV32 s), (s), &s, GL_void_return) /* 1287 */ GL_PROC(void, gl, TexCoord1hvNV, glTexCoord1hvNV, TEXCOORD1HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) /* 1288 */ GL_PROC(void, gl, TexCoord2hNV, glTexCoord2hNV, TEXCOORD2HNV, (AND GLhalfNV32 s, GLhalfNV32 t), (s, t), &s, GL_void_return) /* 1289 */ GL_PROC(void, gl, TexCoord2hvNV, glTexCoord2hvNV, TEXCOORD2HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) /* 1290 */ GL_PROC(void, gl, TexCoord3hNV, glTexCoord3hNV, TEXCOORD3HNV, (AND GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r), (s, t, r), &s, GL_void_return) /* 1291 */ GL_PROC(void, gl, TexCoord3hvNV, glTexCoord3hvNV, TEXCOORD3HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) /* 1292 */ GL_PROC(void, gl, TexCoord4hNV, glTexCoord4hNV, TEXCOORD4HNV, (AND GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q), (s, t, r, q), &s, GL_void_return) /* 1293 */ GL_PROC(void, gl, TexCoord4hvNV, glTexCoord4hvNV, TEXCOORD4HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) /* 1294 */ GL_PROC(void, gl, MultiTexCoord1hNV, glMultiTexCoord1hNV, MULTITEXCOORD1HNV, (AND GLenum target, GLhalfNV32 s), (target, s), &target, GL_void_return) /* 1295 */ GL_PROC(void, gl, MultiTexCoord1hvNV, glMultiTexCoord1hvNV, MULTITEXCOORD1HVNV, (AND GLenum target, const GLhalfNV *v), (target, v), &target, GL_void_return) /* 1296 */ GL_PROC(void, gl, MultiTexCoord2hNV, glMultiTexCoord2hNV, MULTITEXCOORD2HNV, (AND GLenum target, GLhalfNV32 s, GLhalfNV32 t), (target, s, t), &target, GL_void_return) /* 1297 */ GL_PROC(void, gl, MultiTexCoord2hvNV, glMultiTexCoord2hvNV, MULTITEXCOORD2HVNV, (AND GLenum target, const GLhalfNV *v), (target, v), &target, GL_void_return) /* 1298 */ GL_PROC(void, gl, MultiTexCoord3hNV, glMultiTexCoord3hNV, MULTITEXCOORD3HNV, (AND GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r), (target, s, t, r), &target, GL_void_return) /* 1299 */ GL_PROC(void, gl, MultiTexCoord3hvNV, glMultiTexCoord3hvNV, MULTITEXCOORD3HVNV, (AND GLenum target, const GLhalfNV *v), (target, v), &target, GL_void_return) /* 1300 */ GL_PROC(void, gl, MultiTexCoord4hNV, glMultiTexCoord4hNV, MULTITEXCOORD4HNV, (AND GLenum target, GLhalfNV32 s, GLhalfNV32 t, GLhalfNV32 r, GLhalfNV32 q), (target, s, t, r, q), &target, GL_void_return) /* 1301 */ GL_PROC(void, gl, MultiTexCoord4hvNV, glMultiTexCoord4hvNV, MULTITEXCOORD4HVNV, (AND GLenum target, const GLhalfNV *v), (target, v), &target, GL_void_return) /* 1302 */ GL_PROC(void, gl, FogCoordhNV, glFogCoordhNV, FOGCOORDHNV, (AND GLhalfNV32 fog), (fog), &fog, GL_void_return) /* 1303 */ GL_PROC(void, gl, FogCoordhvNV, glFogCoordhvNV, FOGCOORDHVNV, (AND const GLhalfNV *fog), (fog), &fog, GL_void_return) /* 1304 */ GL_PROC(void, gl, SecondaryColor3hNV, glSecondaryColor3hNV, SECONDARYCOLOR3HNV, (AND GLhalfNV32 red, GLhalfNV32 green, GLhalfNV32 blue), (red, green, blue), &red, GL_void_return) /* 1305 */ GL_PROC(void, gl, SecondaryColor3hvNV, glSecondaryColor3hvNV, SECONDARYCOLOR3HVNV, (AND const GLhalfNV *v), (v), &v, GL_void_return) /* 1306 */ GL_PROC(void, gl, VertexWeighthNV, glVertexWeighthNV, VERTEXWEIGHTHNV, (AND GLhalfNV32 weight), (weight), &weight, GL_void_return) /* 1307 */ GL_PROC(void, gl, VertexWeighthvNV, glVertexWeighthvNV, VERTEXWEIGHTHVNV, (AND const GLhalfNV *weight), (weight), &weight, GL_void_return) /* 1308 */ GL_PROC(void, gl, VertexAttrib1hNV, glVertexAttrib1hNV, VERTEXATTRIB1HNV, (AND GLuint index, GLhalfNV32 x), (index, x), &index, GL_void_return) /* 1309 */ GL_PROC(void, gl, VertexAttrib1hvNV, glVertexAttrib1hvNV, VERTEXATTRIB1HVNV, (AND GLuint index, const GLhalfNV *v), (index, v), &index, GL_void_return) /* 1310 */ GL_PROC(void, gl, VertexAttrib2hNV, glVertexAttrib2hNV, VERTEXATTRIB2HNV, (AND GLuint index, GLhalfNV32 x, GLhalfNV32 y), (index, x, y), &index, GL_void_return) /* 1311 */ GL_PROC(void, gl, VertexAttrib2hvNV, glVertexAttrib2hvNV, VERTEXATTRIB2HVNV, (AND GLuint index, const GLhalfNV *v), (index, v), &index, GL_void_return) /* 1312 */ GL_PROC(void, gl, VertexAttrib3hNV, glVertexAttrib3hNV, VERTEXATTRIB3HNV, (AND GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z), (index, x, y, z), &index, GL_void_return) /* 1313 */ GL_PROC(void, gl, VertexAttrib3hvNV, glVertexAttrib3hvNV, VERTEXATTRIB3HVNV, (AND GLuint index, const GLhalfNV *v), (index, v), &index, GL_void_return) /* 1314 */ GL_PROC(void, gl, VertexAttrib4hNV, glVertexAttrib4hNV, VERTEXATTRIB4HNV, (AND GLuint index, GLhalfNV32 x, GLhalfNV32 y, GLhalfNV32 z, GLhalfNV32 w), (index, x, y, z, w), &index, GL_void_return) /* 1315 */ GL_PROC(void, gl, VertexAttrib4hvNV, glVertexAttrib4hvNV, VERTEXATTRIB4HVNV, (AND GLuint index, const GLhalfNV *v), (index, v), &index, GL_void_return) /* 1316 */ GL_PROC(void, gl, VertexAttribs1hvNV, glVertexAttribs1hvNV, VERTEXATTRIBS1HVNV, (AND GLuint index, GLsizei n, const GLhalfNV *v), (index, n, v), &index, GL_void_return) /* 1317 */ GL_PROC(void, gl, VertexAttribs2hvNV, glVertexAttribs2hvNV, VERTEXATTRIBS2HVNV, (AND GLuint index, GLsizei n, const GLhalfNV *v), (index, n, v), &index, GL_void_return) /* 1318 */ GL_PROC(void, gl, VertexAttribs3hvNV, glVertexAttribs3hvNV, VERTEXATTRIBS3HVNV, (AND GLuint index, GLsizei n, const GLhalfNV *v), (index, n, v), &index, GL_void_return) /* 1319 */ GL_PROC(void, gl, VertexAttribs4hvNV, glVertexAttribs4hvNV, VERTEXATTRIBS4HVNV, (AND GLuint index, GLsizei n, const GLhalfNV *v), (index, n, v), &index, GL_void_return) /* 1320 */ GL_PROC(void, gl, PixelDataRangeNV, glPixelDataRangeNV, PIXELDATARANGENV, (AND GLenum target, GLsizei length, const void *pointer), (target, length, pointer), &target, GL_void_return) /* 1321 */ GL_PROC(void, gl, FlushPixelDataRangeNV, glFlushPixelDataRangeNV, FLUSHPIXELDATARANGENV, (AND GLenum target), (target), &target, GL_void_return) /* 1322 */ GL_PROC(void, gl, PrimitiveRestartNV, glPrimitiveRestartNV, PRIMITIVERESTARTNV, (NOTHING), (), NULL, GL_void_return) /* 1323 */ GL_PROC(void, gl, PrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, PRIMITIVERESTARTINDEXNV, (AND GLuint index), (index), &index, GL_void_return) /* 1324 */ GL_PROC(void *, gl, MapObjectBufferATI, glMapObjectBufferATI, MAPOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, return (void *)) /* 1325 */ GL_PROC(void, gl, UnmapObjectBufferATI, glUnmapObjectBufferATI, UNMAPOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, GL_void_return) /* 1326 */ GL_PROC(void, gl, StencilOpSeparateATI, glStencilOpSeparateATI, STENCILOPSEPARATEATI, (AND GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass), (face, sfail, dpfail, dppass), &face, GL_void_return) /* 1327 */ GL_PROC(void, gl, StencilFuncSeparateATI, glStencilFuncSeparateATI, STENCILFUNCSEPARATEATI, (AND GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask), (frontfunc, backfunc, ref, mask), &frontfunc, GL_void_return) /* 1328 */ GL_PROC(void, gl, VertexAttribArrayObjectATI, glVertexAttribArrayObjectATI, VERTEXATTRIBARRAYOBJECTATI, (AND GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLuint buffer, GLuint offset), (index, size, type, normalized, stride, buffer, offset), &index, GL_void_return) /* 1329 */ GL_PROC(void, gl, GetVertexAttribArrayObjectfvATI, glGetVertexAttribArrayObjectfvATI, GETVERTEXATTRIBARRAYOBJECTFVATI, (AND GLuint index, GLenum pname, GLfloat *params), (index, pname, params), &index, GL_void_return) /* 1330 */ GL_PROC(void, gl, GetVertexAttribArrayObjectivATI, glGetVertexAttribArrayObjectivATI, GETVERTEXATTRIBARRAYOBJECTIVATI, (AND GLuint index, GLenum pname, GLint *params), (index, pname, params), &index, GL_void_return) /* 1331 */ GL_PROC(void, gl, DepthBoundsEXT, glDepthBoundsEXT, DEPTHBOUNDSEXT, (AND GLclampd zmin, GLclampd zmax), (zmin, zmax), &zmin, GL_void_return) /* 1332 */ GL_PROC(void, gl, BlendEquationSeparateEXT, glBlendEquationSeparateEXT, BLENDEQUATIONSEPARATEEXT, (AND GLenum modeRGB, GLenum modeAlpha), (modeRGB, modeAlpha), &modeRGB, GL_void_return) /* 1333 */ OSMESA_PROC(void, OSMesa, ColorClamp, OSMesaColorClamp, COLORCLAMP, (AND GLboolean32 enable), (enable), &enable, GL_void_return) /* 1334 */ OSMESA_PROC(void, OSMesa, Postprocess, OSMesaPostprocess, POSTPROCESS, (AND OSMesaContext osmesa, const char *filter, GLuint enable_value), (osmesa, filter, enable_value), &osmesa, GL_void_return) /* 1335 */ NO_PROC /* 1336 */ NO_PROC /* 1337 */ NO_PROC /* 1338 */ NO_PROC /* 1339 */ NO_PROC /* 1340 */ NO_PROC /* 1341 */ NO_PROC /* 1342 */ NO_PROC /* 1343 */ NO_PROC /* 1344 */ NO_PROC /* 1345 */ NO_PROC /* 1346 */ NO_PROC /* 1347 */ NO_PROC /* 1348 */ NO_PROC /* 1349 */ NO_PROC /* 1350 */ NO_PROC /* 1351 */ NO_PROC /* 1352 */ NO_PROC /* 1353 */ NO_PROC /* 1354 */ NO_PROC /* 1355 */ NO_PROC /* 1356 */ NO_PROC /* 1357 */ NO_PROC /* 1358 */ NO_PROC /* 1359 */ NO_PROC /* 1360 */ NO_PROC /* 1361 */ NO_PROC /* 1362 */ NO_PROC /* 1363 */ NO_PROC /* 1364 */ NO_PROC /* 1365 */ NO_PROC /* 1366 */ NO_PROC /* 1367 */ NO_PROC /* 1368 */ NO_PROC /* 1369 */ NO_PROC /* 1370 */ NO_PROC /* 1371 */ NO_PROC /* 1372 */ NO_PROC /* 1373 */ NO_PROC /* 1374 */ NO_PROC /* 1375 */ NO_PROC /* 1376 */ NO_PROC /* 1377 */ NO_PROC /* 1378 */ NO_PROC /* 1379 */ NO_PROC /* 1380 */ NO_PROC /* 1381 */ NO_PROC /* 1382 */ NO_PROC /* 1383 */ NO_PROC /* 1384 */ TINYGL_PROC(void *, tinygl_, OSMesaCreateLDG, OSMesaCreateLDG, OSMESACREATELDG, (AND GLenum format, GLenum type, GLint width, GLint height), (format, type, width, height), &format, return (void *)) /* 1385 */ TINYGL_PROC(void, tinygl_, OSMesaDestroyLDG, OSMesaDestroyLDG, OSMESADESTROYLDG, (NOTHING), (), NULL, GL_void_return) /* 1386 */ TINYGL_PROC(GLsizei, tinygl_, max_width, max_width, MAX_WIDTH, (NOTHING), (), NULL, return (GLsizei)) /* 1387 */ TINYGL_PROC(GLsizei, tinygl_, max_height, max_height, MAX_HEIGHT, (NOTHING), (), NULL, return (GLsizei)) /* 1388 */ TINYGL_PROC(void, tinygl_, information, information, INFORMATION, (NOTHING), (), NULL, GL_void_return) /* 1389 */ TINYGL_PROC(void, tinygl_, exception_error, exception_error, EXCEPTION_ERROR, (AND void (CALLBACK *exception)(GLenum param) ), (exception), &exception, GL_void_return) /* 1390 */ GLU_PROC(void, glu, LookAtf, gluLookAtf, LOOKATF, (AND GLfloat eyeX, GLfloat eyeY, GLfloat eyeZ, GLfloat centerX, GLfloat centerY, GLfloat centerZ, GLfloat upX, GLfloat upY, GLfloat upZ), (eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ), &eyeX, GL_void_return) /* 1391 */ GL_PROC(void, gl, Frustumf, glFrustumf, FRUSTUMF, (AND GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val), (left, right, bottom, top, near_val, far_val), &left, GL_void_return) /* 1392 */ GL_PROC(void, gl, Orthof, glOrthof, ORTHOF, (AND GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val), (left, right, bottom, top, near_val, far_val), &left, GL_void_return) /* 1393 */ TINYGL_PROC(void, tinygl_, swapbuffer, swapbuffer, SWAPBUFFER, (AND void *buffer), (buffer), &buffer, GL_void_return) /* 1394 */ GLU_PROC(void, glu, LookAt, gluLookAtd, LOOKAT, (AND GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ), (eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ), &eyeX, GL_void_return) /* 1395 */ NO_PROC /* 1396 */ NO_PROC /* 1397 */ NO_PROC /* 1398 */ NO_PROC /* 1399 */ NO_PROC /* 1400 */ GL_PROC(void, gl, AccumxOES, glAccumxOES, ACCUMXOES, (AND GLenum op, GLfixed value), (op, value), &op, GL_void_return) /* 1401 */ GL_PROC(void, gl, ActiveProgramEXT, glActiveProgramEXT, ACTIVEPROGRAMEXT, (AND GLuint program), (program), &program, GL_void_return) /* 1402 */ GL_PROC(void, gl, ActiveShaderProgram, glActiveShaderProgram, ACTIVESHADERPROGRAM, (AND GLuint pipeline, GLuint program), (pipeline, program), &pipeline, GL_void_return) /* 1403 */ GL_PROC(void, gl, ActiveVaryingNV, glActiveVaryingNV, ACTIVEVARYINGNV, (AND GLuint program, const GLchar *name), (program, name), &program, GL_void_return) /* 1404 */ GL_PROC(void, gl, AddSwapHintRectWIN, glAddSwapHintRectWIN, ADDSWAPHINTRECTWIN, (AND GLint x, GLint y, GLsizei width, GLsizei height), (x, y, width, height), &x, GL_void_return) /* 1405 */ GL_PROC(void, gl, AlphaFuncxOES, glAlphaFuncxOES, ALPHAFUNCXOES, (AND GLenum func, GLfixed ref), (func, ref), &func, GL_void_return) /* 1406 */ GL_PROC(void, gl, AttachShader, glAttachShader, ATTACHSHADER, (AND GLuint program, GLuint shader), (program, shader), &program, GL_void_return) /* 1407 */ GL_PROC(void, gl, BeginConditionalRender, glBeginConditionalRender, BEGINCONDITIONALRENDER, (AND GLuint id, GLenum mode), (id, mode), &id, GL_void_return) /* 1408 */ GL_PROC(void, gl, BeginConditionalRenderNV, glBeginConditionalRenderNV, BEGINCONDITIONALRENDERNV, (AND GLuint id, GLenum mode), (id, mode), &id, GL_void_return) /* 1409 */ GL_PROC(void, gl, BeginConditionalRenderNVX, glBeginConditionalRenderNVX, BEGINCONDITIONALRENDERNVX, (AND GLuint id), (id), &id, GL_void_return) /* 1410 */ GL_PROC(void, gl, BeginPerfMonitorAMD, glBeginPerfMonitorAMD, BEGINPERFMONITORAMD, (AND GLuint monitor), (monitor), &monitor, GL_void_return) /* 1411 */ GL_PROC(void, gl, BeginPerfQueryINTEL, glBeginPerfQueryINTEL, BEGINPERFQUERYINTEL, (AND GLuint queryHandle), (queryHandle), &queryHandle, GL_void_return) /* 1412 */ GL_PROC(void, gl, BeginQueryIndexed, glBeginQueryIndexed, BEGINQUERYINDEXED, (AND GLenum target, GLuint index, GLuint id), (target, index, id), &target, GL_void_return) /* 1413 */ GL_PROC(void, gl, BeginTransformFeedback, glBeginTransformFeedback, BEGINTRANSFORMFEEDBACK, (AND GLenum primitiveMode), (primitiveMode), &primitiveMode, GL_void_return) /* 1414 */ GL_PROC(void, gl, BeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, BEGINTRANSFORMFEEDBACKEXT, (AND GLenum primitiveMode), (primitiveMode), &primitiveMode, GL_void_return) /* 1415 */ GL_PROC(void, gl, BeginTransformFeedbackNV, glBeginTransformFeedbackNV, BEGINTRANSFORMFEEDBACKNV, (AND GLenum primitiveMode), (primitiveMode), &primitiveMode, GL_void_return) /* 1416 */ GL_PROC(void, gl, BeginVideoCaptureNV, glBeginVideoCaptureNV, BEGINVIDEOCAPTURENV, (AND GLuint video_capture_slot), (video_capture_slot), &video_capture_slot, GL_void_return) /* 1417 */ GL_PROC(void, gl, BindAttribLocation, glBindAttribLocation, BINDATTRIBLOCATION, (AND GLuint program, GLuint index, const GLchar *name), (program, index, name), &program, GL_void_return) /* 1418 */ GL_PROC(void, gl, BindBufferBase, glBindBufferBase, BINDBUFFERBASE, (AND GLenum target, GLuint index, GLuint buffer), (target, index, buffer), &target, GL_void_return) /* 1419 */ GL_PROC(void, gl, BindBufferBaseEXT, glBindBufferBaseEXT, BINDBUFFERBASEEXT, (AND GLenum target, GLuint index, GLuint buffer), (target, index, buffer), &target, GL_void_return) /* 1420 */ GL_PROC(void, gl, BindBufferBaseNV, glBindBufferBaseNV, BINDBUFFERBASENV, (AND GLenum target, GLuint index, GLuint buffer), (target, index, buffer), &target, GL_void_return) /* 1421 */ GL_PROC(void, gl, BindBufferOffsetEXT, glBindBufferOffsetEXT, BINDBUFFEROFFSETEXT, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset), (target, index, buffer, offset), &target, GL_void_return) /* 1422 */ GL_PROC(void, gl, BindBufferOffsetNV, glBindBufferOffsetNV, BINDBUFFEROFFSETNV, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset), (target, index, buffer, offset), &target, GL_void_return) /* 1423 */ GL_PROC(void, gl, BindBufferRange, glBindBufferRange, BINDBUFFERRANGE, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size), (target, index, buffer, offset, size), &target, GL_void_return) /* 1424 */ GL_PROC(void, gl, BindBufferRangeEXT, glBindBufferRangeEXT, BINDBUFFERRANGEEXT, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size), (target, index, buffer, offset, size), &target, GL_void_return) /* 1425 */ GL_PROC(void, gl, BindBufferRangeNV, glBindBufferRangeNV, BINDBUFFERRANGENV, (AND GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size), (target, index, buffer, offset, size), &target, GL_void_return) /* 1426 */ GL_PROC(void, gl, BindBuffersBase, glBindBuffersBase, BINDBUFFERSBASE, (AND GLenum target, GLuint first, GLsizei count, const GLuint *buffers), (target, first, count, buffers), &target, GL_void_return) /* 1427 */ GL_PROC(void, gl, BindBuffersRange, glBindBuffersRange, BINDBUFFERSRANGE, (AND GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes), (target, first, count, buffers, offsets, sizes), &target, GL_void_return) /* 1428 */ GL_PROC(void, gl, BindFragDataLocation, glBindFragDataLocation, BINDFRAGDATALOCATION, (AND GLuint program, GLuint color, const GLchar *name), (program, color, name), &program, GL_void_return) /* 1429 */ GL_PROC(void, gl, BindFragDataLocationEXT, glBindFragDataLocationEXT, BINDFRAGDATALOCATIONEXT, (AND GLuint program, GLuint color, const GLchar *name), (program, color, name), &program, GL_void_return) /* 1430 */ GL_PROC(void, gl, BindFragDataLocationIndexed, glBindFragDataLocationIndexed, BINDFRAGDATALOCATIONINDEXED, (AND GLuint program, GLuint colorNumber, GLuint index, const GLchar *name), (program, colorNumber, index, name), &program, GL_void_return) /* 1431 */ GL_PROC(void, gl, BindFramebuffer, glBindFramebuffer, BINDFRAMEBUFFER, (AND GLenum target, GLuint framebuffer), (target, framebuffer), &target, GL_void_return) /* 1432 */ GL_PROC(void, gl, BindFramebufferEXT, glBindFramebufferEXT, BINDFRAMEBUFFEREXT, (AND GLenum target, GLuint framebuffer), (target, framebuffer), &target, GL_void_return) /* 1433 */ GL_PROC(void, gl, BindImageTexture, glBindImageTexture, BINDIMAGETEXTURE, (AND GLuint unit, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLenum format), (unit, texture, level, layered, layer, access, format), &unit, GL_void_return) /* 1434 */ GL_PROC(void, gl, BindImageTextureEXT, glBindImageTextureEXT, BINDIMAGETEXTUREEXT, (AND GLuint index, GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum access, GLint format), (index, texture, level, layered, layer, access, format), &index, GL_void_return) /* 1435 */ GL_PROC(void, gl, BindImageTextures, glBindImageTextures, BINDIMAGETEXTURES, (AND GLuint first, GLsizei count, const GLuint *textures), (first, count, textures), &first, GL_void_return) /* 1436 */ GL_PROC(void, gl, BindMultiTextureEXT, glBindMultiTextureEXT, BINDMULTITEXTUREEXT, (AND GLenum texunit, GLenum target, GLuint texture), (texunit, target, texture), &texunit, GL_void_return) /* 1437 */ GL_PROC(void, gl, BindProgramPipeline, glBindProgramPipeline, BINDPROGRAMPIPELINE, (AND GLuint pipeline), (pipeline), &pipeline, GL_void_return) /* 1438 */ GL_PROC(void, gl, BindRenderbuffer, glBindRenderbuffer, BINDRENDERBUFFER, (AND GLenum target, GLuint renderbuffer), (target, renderbuffer), &target, GL_void_return) /* 1439 */ GL_PROC(void, gl, BindRenderbufferEXT, glBindRenderbufferEXT, BINDRENDERBUFFEREXT, (AND GLenum target, GLuint renderbuffer), (target, renderbuffer), &target, GL_void_return) /* 1440 */ GL_PROC(void, gl, BindSampler, glBindSampler, BINDSAMPLER, (AND GLuint unit, GLuint sampler), (unit, sampler), &unit, GL_void_return) /* 1441 */ GL_PROC(void, gl, BindSamplers, glBindSamplers, BINDSAMPLERS, (AND GLuint first, GLsizei count, const GLuint *samplers), (first, count, samplers), &first, GL_void_return) /* 1442 */ GL_PROC(void, gl, BindTextures, glBindTextures, BINDTEXTURES, (AND GLuint first, GLsizei count, const GLuint *textures), (first, count, textures), &first, GL_void_return) /* 1443 */ GL_PROC(void, gl, BindTransformFeedback, glBindTransformFeedback, BINDTRANSFORMFEEDBACK, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) /* 1444 */ GL_PROC(void, gl, BindTransformFeedbackNV, glBindTransformFeedbackNV, BINDTRANSFORMFEEDBACKNV, (AND GLenum target, GLuint id), (target, id), &target, GL_void_return) /* 1445 */ GL_PROC(void, gl, BindVertexArray, glBindVertexArray, BINDVERTEXARRAY, (AND GLuint array), (array), &array, GL_void_return) /* 1446 */ GL_PROC(void, gl, BindVertexBuffer, glBindVertexBuffer, BINDVERTEXBUFFER, (AND GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride), (bindingindex, buffer, offset, stride), &bindingindex, GL_void_return) /* 1447 */ GL_PROC(void, gl, BindVertexBuffers, glBindVertexBuffers, BINDVERTEXBUFFERS, (AND GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides), (first, count, buffers, offsets, strides), &first, GL_void_return) /* 1448 */ GL_PROC(void, gl, BindVideoCaptureStreamBufferNV, glBindVideoCaptureStreamBufferNV, BINDVIDEOCAPTURESTREAMBUFFERNV, (AND GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset), (video_capture_slot, stream, frame_region, offset), &video_capture_slot, GL_void_return) /* 1449 */ GL_PROC(void, gl, BindVideoCaptureStreamTextureNV, glBindVideoCaptureStreamTextureNV, BINDVIDEOCAPTURESTREAMTEXTURENV, (AND GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture), (video_capture_slot, stream, frame_region, target, texture), &video_capture_slot, GL_void_return) /* 1450 */ GL_PROC(void, gl, BitmapxOES, glBitmapxOES, BITMAPXOES, (AND GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap), (width, height, xorig, yorig, xmove, ymove, bitmap), &width, GL_void_return) /* 1451 */ GL_PROC(void, gl, BlendBarrierNV, glBlendBarrierNV, BLENDBARRIERNV, (NOTHING), (), NULL, GL_void_return) /* 1452 */ GL_PROC(void, gl, BlendColorxOES, glBlendColorxOES, BLENDCOLORXOES, (AND GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha), (red, green, blue, alpha), &red, GL_void_return) /* 1453 */ GL_PROC(void, gl, BlendEquationIndexedAMD, glBlendEquationIndexedAMD, BLENDEQUATIONINDEXEDAMD, (AND GLuint buf, GLenum mode), (buf, mode), &buf, GL_void_return) /* 1454 */ GL_PROC(void, gl, BlendEquationSeparate, glBlendEquationSeparate, BLENDEQUATIONSEPARATE, (AND GLenum modeRGB, GLenum modeAlpha), (modeRGB, modeAlpha), &modeRGB, GL_void_return) /* 1455 */ GL_PROC(void, gl, BlendEquationSeparateIndexedAMD, glBlendEquationSeparateIndexedAMD, BLENDEQUATIONSEPARATEINDEXEDAMD, (AND GLuint buf, GLenum modeRGB, GLenum modeAlpha), (buf, modeRGB, modeAlpha), &buf, GL_void_return) /* 1456 */ GL_PROC(void, gl, BlendEquationSeparatei, glBlendEquationSeparatei, BLENDEQUATIONSEPARATEI, (AND GLuint buf, GLenum modeRGB, GLenum modeAlpha), (buf, modeRGB, modeAlpha), &buf, GL_void_return) /* 1457 */ GL_PROC(void, gl, BlendEquationSeparateiARB, glBlendEquationSeparateiARB, BLENDEQUATIONSEPARATEIARB, (AND GLuint buf, GLenum modeRGB, GLenum modeAlpha), (buf, modeRGB, modeAlpha), &buf, GL_void_return) /* 1458 */ GL_PROC(void, gl, BlendEquationi, glBlendEquationi, BLENDEQUATIONI, (AND GLuint buf, GLenum mode), (buf, mode), &buf, GL_void_return) /* 1459 */ GL_PROC(void, gl, BlendEquationiARB, glBlendEquationiARB, BLENDEQUATIONIARB, (AND GLuint buf, GLenum mode), (buf, mode), &buf, GL_void_return) /* 1460 */ GL_PROC(void, gl, BlendFuncIndexedAMD, glBlendFuncIndexedAMD, BLENDFUNCINDEXEDAMD, (AND GLuint buf, GLenum src, GLenum dst), (buf, src, dst), &buf, GL_void_return) /* 1461 */ GL_PROC(void, gl, BlendFuncSeparateIndexedAMD, glBlendFuncSeparateIndexedAMD, BLENDFUNCSEPARATEINDEXEDAMD, (AND GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha), (buf, srcRGB, dstRGB, srcAlpha, dstAlpha), &buf, GL_void_return) /* 1462 */ GL_PROC(void, gl, BlendFuncSeparatei, glBlendFuncSeparatei, BLENDFUNCSEPARATEI, (AND GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha), (buf, srcRGB, dstRGB, srcAlpha, dstAlpha), &buf, GL_void_return) /* 1463 */ GL_PROC(void, gl, BlendFuncSeparateiARB, glBlendFuncSeparateiARB, BLENDFUNCSEPARATEIARB, (AND GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha), (buf, srcRGB, dstRGB, srcAlpha, dstAlpha), &buf, GL_void_return) /* 1464 */ GL_PROC(void, gl, BlendFunci, glBlendFunci, BLENDFUNCI, (AND GLuint buf, GLenum src, GLenum dst), (buf, src, dst), &buf, GL_void_return) /* 1465 */ GL_PROC(void, gl, BlendFunciARB, glBlendFunciARB, BLENDFUNCIARB, (AND GLuint buf, GLenum src, GLenum dst), (buf, src, dst), &buf, GL_void_return) /* 1466 */ GL_PROC(void, gl, BlendParameteriNV, glBlendParameteriNV, BLENDPARAMETERINV, (AND GLenum pname, GLint value), (pname, value), &pname, GL_void_return) /* 1467 */ GL_PROC(void, gl, BlitFramebuffer, glBlitFramebuffer, BLITFRAMEBUFFER, (AND GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter), (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), &srcX0, GL_void_return) /* 1468 */ GL_PROC(void, gl, BlitFramebufferEXT, glBlitFramebufferEXT, BLITFRAMEBUFFEREXT, (AND GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter), (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), &srcX0, GL_void_return) /* 1469 */ GL_PROC(void, gl, BufferAddressRangeNV, glBufferAddressRangeNV, BUFFERADDRESSRANGENV, (AND GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length), (pname, index, address, length), &pname, GL_void_return) /* 1470 */ GL_PROC(void, gl, BufferParameteriAPPLE, glBufferParameteriAPPLE, BUFFERPARAMETERIAPPLE, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) /* 1471 */ GL_PROC(void, gl, BufferStorage, glBufferStorage, BUFFERSTORAGE, (AND GLenum target, GLsizeiptr size, const void *data, GLbitfield flags), (target, size, data, flags), &target, GL_void_return) /* 1472 */ GL_PROC(GLenum, gl, CheckFramebufferStatus, glCheckFramebufferStatus, CHECKFRAMEBUFFERSTATUS, (AND GLenum target), (target), &target, return (GLenum)) /* 1473 */ GL_PROC(GLenum, gl, CheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, CHECKFRAMEBUFFERSTATUSEXT, (AND GLenum target), (target), &target, return (GLenum)) /* 1474 */ GL_PROC(GLenum, gl, CheckNamedFramebufferStatusEXT, glCheckNamedFramebufferStatusEXT, CHECKNAMEDFRAMEBUFFERSTATUSEXT, (AND GLuint framebuffer, GLenum target), (framebuffer, target), &framebuffer, return (GLenum)) /* 1475 */ GL_PROC(void, gl, ClampColor, glClampColor, CLAMPCOLOR, (AND GLenum target, GLenum clamp), (target, clamp), &target, GL_void_return) /* 1476 */ GL_PROC(void, gl, ClampColorARB, glClampColorARB, CLAMPCOLORARB, (AND GLenum target, GLenum clamp), (target, clamp), &target, GL_void_return) /* 1477 */ GL_PROC(void, gl, ClearAccumxOES, glClearAccumxOES, CLEARACCUMXOES, (AND GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha), (red, green, blue, alpha), &red, GL_void_return) /* 1478 */ GL_PROC(void, gl, ClearBufferData, glClearBufferData, CLEARBUFFERDATA, (AND GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data), (target, internalformat, format, type, data), &target, GL_void_return) /* 1479 */ GL_PROC(void, gl, ClearBufferSubData, glClearBufferSubData, CLEARBUFFERSUBDATA, (AND GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data), (target, internalformat, offset, size, format, type, data), &target, GL_void_return) /* 1480 */ GL_PROC(void, gl, ClearBufferfi, glClearBufferfi, CLEARBUFFERFI, (AND GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil), (buffer, drawbuffer, depth, stencil), &buffer, GL_void_return) /* 1481 */ GL_PROC(void, gl, ClearBufferfv, glClearBufferfv, CLEARBUFFERFV, (AND GLenum buffer, GLint drawbuffer, const GLfloat *value), (buffer, drawbuffer, value), &buffer, GL_void_return) /* 1482 */ GL_PROC(void, gl, ClearBufferiv, glClearBufferiv, CLEARBUFFERIV, (AND GLenum buffer, GLint drawbuffer, const GLint *value), (buffer, drawbuffer, value), &buffer, GL_void_return) /* 1483 */ GL_PROC(void, gl, ClearBufferuiv, glClearBufferuiv, CLEARBUFFERUIV, (AND GLenum buffer, GLint drawbuffer, const GLuint *value), (buffer, drawbuffer, value), &buffer, GL_void_return) /* 1484 */ GL_PROC(void, gl, ClearColorIiEXT, glClearColorIiEXT, CLEARCOLORIIEXT, (AND GLint red, GLint green, GLint blue, GLint alpha), (red, green, blue, alpha), &red, GL_void_return) /* 1485 */ GL_PROC(void, gl, ClearColorIuiEXT, glClearColorIuiEXT, CLEARCOLORIUIEXT, (AND GLuint red, GLuint green, GLuint blue, GLuint alpha), (red, green, blue, alpha), &red, GL_void_return) /* 1486 */ GL_PROC(void, gl, ClearColorxOES, glClearColorxOES, CLEARCOLORXOES, (AND GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha), (red, green, blue, alpha), &red, GL_void_return) /* 1487 */ GL_PROC(void, gl, ClearDebugLogMESA, glClearDebugLogMESA, CLEARDEBUGLOGMESA, (AND GLhandleARB obj, GLenum logType, GLenum shaderType), (obj, logType, shaderType), &obj, GL_void_return) /* 1488 */ GL_PROC(void, gl, ClearDepthdNV, glClearDepthdNV, CLEARDEPTHDNV, (AND GLdouble depth), (depth), &depth, GL_void_return) /* 1489 */ GL_PROC(void, gl, ClearDepthf, glClearDepthf, CLEARDEPTHF, (AND GLfloat d), (d), &d, GL_void_return) /* 1490 */ GL_PROC(void, gl, ClearDepthfOES, glClearDepthfOES, CLEARDEPTHFOES, (AND GLclampf depth), (depth), &depth, GL_void_return) /* 1491 */ GL_PROC(void, gl, ClearDepthxOES, glClearDepthxOES, CLEARDEPTHXOES, (AND GLfixed depth), (depth), &depth, GL_void_return) /* 1492 */ GL_PROC(void, gl, ClearNamedBufferDataEXT, glClearNamedBufferDataEXT, CLEARNAMEDBUFFERDATAEXT, (AND GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data), (buffer, internalformat, format, type, data), &buffer, GL_void_return) /* 1493 */ GL_PROC(void, gl, ClearNamedBufferSubDataEXT, glClearNamedBufferSubDataEXT, CLEARNAMEDBUFFERSUBDATAEXT, (AND GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data), (buffer, internalformat, offset, size, format, type, data), &buffer, GL_void_return) /* 1494 */ GL_PROC(void, gl, ClearTexImage, glClearTexImage, CLEARTEXIMAGE, (AND GLuint texture, GLint level, GLenum format, GLenum type, const void *data), (texture, level, format, type, data), &texture, GL_void_return) /* 1495 */ GL_PROC(void, gl, ClearTexSubImage, glClearTexSubImage, CLEARTEXSUBIMAGE, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data), (texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data), &texture, GL_void_return) /* 1496 */ GL_PROC(void, gl, ClientAttribDefaultEXT, glClientAttribDefaultEXT, CLIENTATTRIBDEFAULTEXT, (AND GLbitfield mask), (mask), &mask, GL_void_return) /* 1497 */ GL_PROC(GLenum, gl, ClientWaitSync, glClientWaitSync, CLIENTWAITSYNC, (AND GLsync sync, GLbitfield flags, GLuint64 timeout), (sync, flags, timeout), &sync, return (GLenum)) /* 1498 */ GL_PROC(void, gl, ClipPlanefOES, glClipPlanefOES, CLIPPLANEFOES, (AND GLenum plane, const GLfloat *equation), (plane, equation), &plane, GL_void_return) /* 1499 */ GL_PROC(void, gl, ClipPlanexOES, glClipPlanexOES, CLIPPLANEXOES, (AND GLenum plane, const GLfixed *equation), (plane, equation), &plane, GL_void_return) /* 1500 */ GL_PROC(void, gl, Color3xOES, glColor3xOES, COLOR3XOES, (AND GLfixed red, GLfixed green, GLfixed blue), (red, green, blue), &red, GL_void_return) /* 1501 */ GL_PROC(void, gl, Color3xvOES, glColor3xvOES, COLOR3XVOES, (AND const GLfixed *components), (components), &components, GL_void_return) /* 1502 */ GL_PROC(void, gl, Color4xOES, glColor4xOES, COLOR4XOES, (AND GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha), (red, green, blue, alpha), &red, GL_void_return) /* 1503 */ GL_PROC(void, gl, Color4xvOES, glColor4xvOES, COLOR4XVOES, (AND const GLfixed *components), (components), &components, GL_void_return) /* 1504 */ GL_PROC(void, gl, ColorFormatNV, glColorFormatNV, COLORFORMATNV, (AND GLint size, GLenum type, GLsizei stride), (size, type, stride), &size, GL_void_return) /* 1505 */ GL_PROC(void, gl, ColorMaskIndexedEXT, glColorMaskIndexedEXT, COLORMASKINDEXEDEXT, (AND GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a), (index, r, g, b, a), &index, GL_void_return) /* 1506 */ GL_PROC(void, gl, ColorMaski, glColorMaski, COLORMASKI, (AND GLuint index, GLboolean32 r, GLboolean32 g, GLboolean32 b, GLboolean32 a), (index, r, g, b, a), &index, GL_void_return) /* 1507 */ GL_PROC(void, gl, ColorP3ui, glColorP3ui, COLORP3UI, (AND GLenum type, GLuint color), (type, color), &type, GL_void_return) /* 1508 */ GL_PROC(void, gl, ColorP3uiv, glColorP3uiv, COLORP3UIV, (AND GLenum type, const GLuint *color), (type, color), &type, GL_void_return) /* 1509 */ GL_PROC(void, gl, ColorP4ui, glColorP4ui, COLORP4UI, (AND GLenum type, GLuint color), (type, color), &type, GL_void_return) /* 1510 */ GL_PROC(void, gl, ColorP4uiv, glColorP4uiv, COLORP4UIV, (AND GLenum type, const GLuint *color), (type, color), &type, GL_void_return) /* 1511 */ GL_PROC(void, gl, CompileShader, glCompileShader, COMPILESHADER, (AND GLuint shader), (shader), &shader, GL_void_return) /* 1512 */ GL_PROC(void, gl, CompileShaderIncludeARB, glCompileShaderIncludeARB, COMPILESHADERINCLUDEARB, (AND GLuint shader, GLsizei count, const GLchar *const *path, const GLint *length), (shader, count, path, length), &shader, GL_void_return) /* 1513 */ GL_PROC(void, gl, CompressedMultiTexImage1DEXT, glCompressedMultiTexImage1DEXT, COMPRESSEDMULTITEXIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits), (texunit, target, level, internalformat, width, border, imageSize, bits), &texunit, GL_void_return) /* 1514 */ GL_PROC(void, gl, CompressedMultiTexImage2DEXT, glCompressedMultiTexImage2DEXT, COMPRESSEDMULTITEXIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits), (texunit, target, level, internalformat, width, height, border, imageSize, bits), &texunit, GL_void_return) /* 1515 */ GL_PROC(void, gl, CompressedMultiTexImage3DEXT, glCompressedMultiTexImage3DEXT, COMPRESSEDMULTITEXIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits), (texunit, target, level, internalformat, width, height, depth, border, imageSize, bits), &texunit, GL_void_return) /* 1516 */ GL_PROC(void, gl, CompressedMultiTexSubImage1DEXT, glCompressedMultiTexSubImage1DEXT, COMPRESSEDMULTITEXSUBIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits), (texunit, target, level, xoffset, width, format, imageSize, bits), &texunit, GL_void_return) /* 1517 */ GL_PROC(void, gl, CompressedMultiTexSubImage2DEXT, glCompressedMultiTexSubImage2DEXT, COMPRESSEDMULTITEXSUBIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits), (texunit, target, level, xoffset, yoffset, width, height, format, imageSize, bits), &texunit, GL_void_return) /* 1518 */ GL_PROC(void, gl, CompressedMultiTexSubImage3DEXT, glCompressedMultiTexSubImage3DEXT, COMPRESSEDMULTITEXSUBIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits), (texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits), &texunit, GL_void_return) /* 1519 */ GL_PROC(void, gl, CompressedTextureImage1DEXT, glCompressedTextureImage1DEXT, COMPRESSEDTEXTUREIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits), (texture, target, level, internalformat, width, border, imageSize, bits), &texture, GL_void_return) /* 1520 */ GL_PROC(void, gl, CompressedTextureImage2DEXT, glCompressedTextureImage2DEXT, COMPRESSEDTEXTUREIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits), (texture, target, level, internalformat, width, height, border, imageSize, bits), &texture, GL_void_return) /* 1521 */ GL_PROC(void, gl, CompressedTextureImage3DEXT, glCompressedTextureImage3DEXT, COMPRESSEDTEXTUREIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits), (texture, target, level, internalformat, width, height, depth, border, imageSize, bits), &texture, GL_void_return) /* 1522 */ GL_PROC(void, gl, CompressedTextureSubImage1DEXT, glCompressedTextureSubImage1DEXT, COMPRESSEDTEXTURESUBIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits), (texture, target, level, xoffset, width, format, imageSize, bits), &texture, GL_void_return) /* 1523 */ GL_PROC(void, gl, CompressedTextureSubImage2DEXT, glCompressedTextureSubImage2DEXT, COMPRESSEDTEXTURESUBIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits), (texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits), &texture, GL_void_return) /* 1524 */ GL_PROC(void, gl, CompressedTextureSubImage3DEXT, glCompressedTextureSubImage3DEXT, COMPRESSEDTEXTURESUBIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits), (texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits), &texture, GL_void_return) /* 1525 */ GL_PROC(void, gl, ConvolutionParameterxOES, glConvolutionParameterxOES, CONVOLUTIONPARAMETERXOES, (AND GLenum target, GLenum pname, GLfixed param), (target, pname, param), &target, GL_void_return) /* 1526 */ GL_PROC(void, gl, ConvolutionParameterxvOES, glConvolutionParameterxvOES, CONVOLUTIONPARAMETERXVOES, (AND GLenum target, GLenum pname, const GLfixed *params), (target, pname, params), &target, GL_void_return) /* 1527 */ GL_PROC(void, gl, CopyBufferSubData, glCopyBufferSubData, COPYBUFFERSUBDATA, (AND GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size), (readTarget, writeTarget, readOffset, writeOffset, size), &readTarget, GL_void_return) /* 1528 */ GL_PROC(void, gl, CopyImageSubData, glCopyImageSubData, COPYIMAGESUBDATA, (AND GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth), (srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth), &srcName, GL_void_return) /* 1529 */ GL_PROC(void, gl, CopyImageSubDataNV, glCopyImageSubDataNV, COPYIMAGESUBDATANV, (AND GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth), (srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth), &srcName, GL_void_return) /* 1530 */ GL_PROC(void, gl, CopyMultiTexImage1DEXT, glCopyMultiTexImage1DEXT, COPYMULTITEXIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border), (texunit, target, level, internalformat, x, y, width, border), &texunit, GL_void_return) /* 1531 */ GL_PROC(void, gl, CopyMultiTexImage2DEXT, glCopyMultiTexImage2DEXT, COPYMULTITEXIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (texunit, target, level, internalformat, x, y, width, height, border), &texunit, GL_void_return) /* 1532 */ GL_PROC(void, gl, CopyMultiTexSubImage1DEXT, glCopyMultiTexSubImage1DEXT, COPYMULTITEXSUBIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (texunit, target, level, xoffset, x, y, width), &texunit, GL_void_return) /* 1533 */ GL_PROC(void, gl, CopyMultiTexSubImage2DEXT, glCopyMultiTexSubImage2DEXT, COPYMULTITEXSUBIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texunit, target, level, xoffset, yoffset, x, y, width, height), &texunit, GL_void_return) /* 1534 */ GL_PROC(void, gl, CopyMultiTexSubImage3DEXT, glCopyMultiTexSubImage3DEXT, COPYMULTITEXSUBIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texunit, target, level, xoffset, yoffset, zoffset, x, y, width, height), &texunit, GL_void_return) /* 1535 */ GL_PROC(void, gl, CopyPathNV, glCopyPathNV, COPYPATHNV, (AND GLuint resultPath, GLuint srcPath), (resultPath, srcPath), &resultPath, GL_void_return) /* 1536 */ GL_PROC(void, gl, CopyTextureImage1DEXT, glCopyTextureImage1DEXT, COPYTEXTUREIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border), (texture, target, level, internalformat, x, y, width, border), &texture, GL_void_return) /* 1537 */ GL_PROC(void, gl, CopyTextureImage2DEXT, glCopyTextureImage2DEXT, COPYTEXTUREIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (texture, target, level, internalformat, x, y, width, height, border), &texture, GL_void_return) /* 1538 */ GL_PROC(void, gl, CopyTextureSubImage1DEXT, glCopyTextureSubImage1DEXT, COPYTEXTURESUBIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (texture, target, level, xoffset, x, y, width), &texture, GL_void_return) /* 1539 */ GL_PROC(void, gl, CopyTextureSubImage2DEXT, glCopyTextureSubImage2DEXT, COPYTEXTURESUBIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texture, target, level, xoffset, yoffset, x, y, width, height), &texture, GL_void_return) /* 1540 */ GL_PROC(void, gl, CopyTextureSubImage3DEXT, glCopyTextureSubImage3DEXT, COPYTEXTURESUBIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texture, target, level, xoffset, yoffset, zoffset, x, y, width, height), &texture, GL_void_return) /* 1541 */ GL_PROC(void, gl, CoverFillPathInstancedNV, glCoverFillPathInstancedNV, COVERFILLPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues), (numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues), &numPaths, GL_void_return) /* 1542 */ GL_PROC(void, gl, CoverFillPathNV, glCoverFillPathNV, COVERFILLPATHNV, (AND GLuint path, GLenum coverMode), (path, coverMode), &path, GL_void_return) /* 1543 */ GL_PROC(void, gl, CoverStrokePathInstancedNV, glCoverStrokePathInstancedNV, COVERSTROKEPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues), (numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues), &numPaths, GL_void_return) /* 1544 */ GL_PROC(void, gl, CoverStrokePathNV, glCoverStrokePathNV, COVERSTROKEPATHNV, (AND GLuint path, GLenum coverMode), (path, coverMode), &path, GL_void_return) /* 1545 */ GL_PROC(GLhandleARB, gl, CreateDebugObjectMESA, glCreateDebugObjectMESA, CREATEDEBUGOBJECTMESA, (NOTHING), (), NULL, return (GLhandleARB)) /* 1546 */ GL_PROC(void, gl, CreatePerfQueryINTEL, glCreatePerfQueryINTEL, CREATEPERFQUERYINTEL, (AND GLuint queryId, GLuint *queryHandle), (queryId, queryHandle), &queryId, GL_void_return) /* 1547 */ GL_PROC(GLuint, gl, CreateProgram, glCreateProgram, CREATEPROGRAM, (NOTHING), (), NULL, return (GLuint)) /* 1548 */ GL_PROC(GLuint, gl, CreateShader, glCreateShader, CREATESHADER, (AND GLenum type), (type), &type, return (GLuint)) /* 1549 */ GL_PROC(GLuint, gl, CreateShaderProgramEXT, glCreateShaderProgramEXT, CREATESHADERPROGRAMEXT, (AND GLenum type, const GLchar *string), (type, string), &type, return (GLuint)) /* 1550 */ GL_PROC(GLuint, gl, CreateShaderProgramv, glCreateShaderProgramv, CREATESHADERPROGRAMV, (AND GLenum type, GLsizei count, const GLchar *const *strings), (type, count, strings), &type, return (GLuint)) /* 1551 */ GL_PROC(GLsync, gl, CreateSyncFromCLeventARB, glCreateSyncFromCLeventARB, CREATESYNCFROMCLEVENTARB, (AND struct _cl_context *context, struct _cl_event *event, GLbitfield flags), (context, event, flags), &context, return (GLsync)) /* 1552 */ GL_PROC(void, gl, DebugMessageCallback, glDebugMessageCallback, DEBUGMESSAGECALLBACK, (AND GLDEBUGPROC callback, const void *userParam), (callback, userParam), &callback, GL_void_return) /* 1553 */ GL_PROC(void, gl, DebugMessageCallbackAMD, glDebugMessageCallbackAMD, DEBUGMESSAGECALLBACKAMD, (AND GLDEBUGPROCAMD callback, void *userParam), (callback, userParam), &callback, GL_void_return) /* 1554 */ GL_PROC(void, gl, DebugMessageCallbackARB, glDebugMessageCallbackARB, DEBUGMESSAGECALLBACKARB, (AND GLDEBUGPROCARB callback, const void *userParam), (callback, userParam), &callback, GL_void_return) /* 1555 */ GL_PROC(void, gl, DebugMessageControl, glDebugMessageControl, DEBUGMESSAGECONTROL, (AND GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled), (source, type, severity, count, ids, enabled), &source, GL_void_return) /* 1556 */ GL_PROC(void, gl, DebugMessageControlARB, glDebugMessageControlARB, DEBUGMESSAGECONTROLARB, (AND GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled), (source, type, severity, count, ids, enabled), &source, GL_void_return) /* 1557 */ GL_PROC(void, gl, DebugMessageEnableAMD, glDebugMessageEnableAMD, DEBUGMESSAGEENABLEAMD, (AND GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean32 enabled), (category, severity, count, ids, enabled), &category, GL_void_return) /* 1558 */ GL_PROC(void, gl, DebugMessageInsert, glDebugMessageInsert, DEBUGMESSAGEINSERT, (AND GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf), (source, type, id, severity, length, buf), &source, GL_void_return) /* 1559 */ GL_PROC(void, gl, DebugMessageInsertAMD, glDebugMessageInsertAMD, DEBUGMESSAGEINSERTAMD, (AND GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf), (category, severity, id, length, buf), &category, GL_void_return) /* 1560 */ GL_PROC(void, gl, DebugMessageInsertARB, glDebugMessageInsertARB, DEBUGMESSAGEINSERTARB, (AND GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf), (source, type, id, severity, length, buf), &source, GL_void_return) /* 1561 */ GL_PROC(void, gl, DeleteFramebuffers, glDeleteFramebuffers, DELETEFRAMEBUFFERS, (AND GLsizei n, const GLuint *framebuffers), (n, framebuffers), &n, GL_void_return) /* 1562 */ GL_PROC(void, gl, DeleteFramebuffersEXT, glDeleteFramebuffersEXT, DELETEFRAMEBUFFERSEXT, (AND GLsizei n, const GLuint *framebuffers), (n, framebuffers), &n, GL_void_return) /* 1563 */ GL_PROC(void, gl, DeleteNamedStringARB, glDeleteNamedStringARB, DELETENAMEDSTRINGARB, (AND GLint namelen, const GLchar *name), (namelen, name), &namelen, GL_void_return) /* 1564 */ GL_PROC(void, gl, DeleteNamesAMD, glDeleteNamesAMD, DELETENAMESAMD, (AND GLenum identifier, GLuint num, const GLuint *names), (identifier, num, names), &identifier, GL_void_return) /* 1565 */ GL_PROC(void, gl, DeleteObjectBufferATI, glDeleteObjectBufferATI, DELETEOBJECTBUFFERATI, (AND GLuint buffer), (buffer), &buffer, GL_void_return) /* 1566 */ GL_PROC(void, gl, DeletePathsNV, glDeletePathsNV, DELETEPATHSNV, (AND GLuint path, GLsizei range), (path, range), &path, GL_void_return) /* 1567 */ GL_PROC(void, gl, DeletePerfMonitorsAMD, glDeletePerfMonitorsAMD, DELETEPERFMONITORSAMD, (AND GLsizei n, GLuint *monitors), (n, monitors), &n, GL_void_return) /* 1568 */ GL_PROC(void, gl, DeletePerfQueryINTEL, glDeletePerfQueryINTEL, DELETEPERFQUERYINTEL, (AND GLuint queryHandle), (queryHandle), &queryHandle, GL_void_return) /* 1569 */ GL_PROC(void, gl, DeleteProgram, glDeleteProgram, DELETEPROGRAM, (AND GLuint program), (program), &program, GL_void_return) /* 1570 */ GL_PROC(void, gl, DeleteProgramPipelines, glDeleteProgramPipelines, DELETEPROGRAMPIPELINES, (AND GLsizei n, const GLuint *pipelines), (n, pipelines), &n, GL_void_return) /* 1571 */ GL_PROC(void, gl, DeleteRenderbuffers, glDeleteRenderbuffers, DELETERENDERBUFFERS, (AND GLsizei n, const GLuint *renderbuffers), (n, renderbuffers), &n, GL_void_return) /* 1572 */ GL_PROC(void, gl, DeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, DELETERENDERBUFFERSEXT, (AND GLsizei n, const GLuint *renderbuffers), (n, renderbuffers), &n, GL_void_return) /* 1573 */ GL_PROC(void, gl, DeleteSamplers, glDeleteSamplers, DELETESAMPLERS, (AND GLsizei count, const GLuint *samplers), (count, samplers), &count, GL_void_return) /* 1574 */ GL_PROC(void, gl, DeleteShader, glDeleteShader, DELETESHADER, (AND GLuint shader), (shader), &shader, GL_void_return) /* 1575 */ GL_PROC(void, gl, DeleteSync, glDeleteSync, DELETESYNC, (AND GLsync sync), (sync), &sync, GL_void_return) /* 1576 */ GL_PROC(void, gl, DeleteTransformFeedbacks, glDeleteTransformFeedbacks, DELETETRANSFORMFEEDBACKS, (AND GLsizei n, const GLuint *ids), (n, ids), &n, GL_void_return) /* 1577 */ GL_PROC(void, gl, DeleteTransformFeedbacksNV, glDeleteTransformFeedbacksNV, DELETETRANSFORMFEEDBACKSNV, (AND GLsizei n, const GLuint *ids), (n, ids), &n, GL_void_return) /* 1578 */ GL_PROC(void, gl, DeleteVertexArrays, glDeleteVertexArrays, DELETEVERTEXARRAYS, (AND GLsizei n, const GLuint *arrays), (n, arrays), &n, GL_void_return) /* 1579 */ GL_PROC(void, gl, DepthBoundsdNV, glDepthBoundsdNV, DEPTHBOUNDSDNV, (AND GLdouble zmin, GLdouble zmax), (zmin, zmax), &zmin, GL_void_return) /* 1580 */ GL_PROC(void, gl, DepthRangeArrayv, glDepthRangeArrayv, DEPTHRANGEARRAYV, (AND GLuint first, GLsizei count, const GLdouble *v), (first, count, v), &first, GL_void_return) /* 1581 */ GL_PROC(void, gl, DepthRangeIndexed, glDepthRangeIndexed, DEPTHRANGEINDEXED, (AND GLuint index, GLdouble n, GLdouble f), (index, n, f), &index, GL_void_return) /* 1582 */ GL_PROC(void, gl, DepthRangedNV, glDepthRangedNV, DEPTHRANGEDNV, (AND GLdouble zNear, GLdouble zFar), (zNear, zFar), &zNear, GL_void_return) /* 1583 */ GL_PROC(void, gl, DepthRangef, glDepthRangef, DEPTHRANGEF, (AND GLfloat n, GLfloat f), (n, f), &n, GL_void_return) /* 1584 */ GL_PROC(void, gl, DepthRangefOES, glDepthRangefOES, DEPTHRANGEFOES, (AND GLclampf n, GLclampf f), (n, f), &n, GL_void_return) /* 1585 */ GL_PROC(void, gl, DepthRangexOES, glDepthRangexOES, DEPTHRANGEXOES, (AND GLfixed n, GLfixed f), (n, f), &n, GL_void_return) /* 1586 */ GL_PROC(void, gl, DetachShader, glDetachShader, DETACHSHADER, (AND GLuint program, GLuint shader), (program, shader), &program, GL_void_return) /* 1587 */ GL_PROC(void, gl, DisableClientStateIndexedEXT, glDisableClientStateIndexedEXT, DISABLECLIENTSTATEINDEXEDEXT, (AND GLenum array, GLuint index), (array, index), &array, GL_void_return) /* 1588 */ GL_PROC(void, gl, DisableClientStateiEXT, glDisableClientStateiEXT, DISABLECLIENTSTATEIEXT, (AND GLenum array, GLuint index), (array, index), &array, GL_void_return) /* 1589 */ GL_PROC(void, gl, DisableIndexedEXT, glDisableIndexedEXT, DISABLEINDEXEDEXT, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) /* 1590 */ GL_PROC(void, gl, DisableVertexArrayAttribEXT, glDisableVertexArrayAttribEXT, DISABLEVERTEXARRAYATTRIBEXT, (AND GLuint vaobj, GLuint index), (vaobj, index), &vaobj, GL_void_return) /* 1591 */ GL_PROC(void, gl, DisableVertexArrayEXT, glDisableVertexArrayEXT, DISABLEVERTEXARRAYEXT, (AND GLuint vaobj, GLenum array), (vaobj, array), &vaobj, GL_void_return) /* 1592 */ GL_PROC(void, gl, DisableVertexAttribAPPLE, glDisableVertexAttribAPPLE, DISABLEVERTEXATTRIBAPPLE, (AND GLuint index, GLenum pname), (index, pname), &index, GL_void_return) /* 1593 */ GL_PROC(void, gl, DisableVertexAttribArray, glDisableVertexAttribArray, DISABLEVERTEXATTRIBARRAY, (AND GLuint index), (index), &index, GL_void_return) /* 1594 */ GL_PROC(void, gl, Disablei, glDisablei, DISABLEI, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) /* 1595 */ GL_PROC(void, gl, DispatchCompute, glDispatchCompute, DISPATCHCOMPUTE, (AND GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z), (num_groups_x, num_groups_y, num_groups_z), &num_groups_x, GL_void_return) /* 1596 */ GL_PROC(void, gl, DispatchComputeGroupSizeARB, glDispatchComputeGroupSizeARB, DISPATCHCOMPUTEGROUPSIZEARB, (AND GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z), (num_groups_x, num_groups_y, num_groups_z, group_size_x, group_size_y, group_size_z), &num_groups_x, GL_void_return) /* 1597 */ GL_PROC(void, gl, DispatchComputeIndirect, glDispatchComputeIndirect, DISPATCHCOMPUTEINDIRECT, (AND GLintptr indirect), (indirect), &indirect, GL_void_return) /* 1598 */ GL_PROC(void, gl, DrawArraysIndirect, glDrawArraysIndirect, DRAWARRAYSINDIRECT, (AND GLenum mode, const void *indirect), (mode, indirect), &mode, GL_void_return) /* 1599 */ GL_PROC(void, gl, DrawArraysInstanced, glDrawArraysInstanced, DRAWARRAYSINSTANCED, (AND GLenum mode, GLint first, GLsizei count, GLsizei instancecount), (mode, first, count, instancecount), &mode, GL_void_return) /* 1600 */ GL_PROC(void, gl, DrawArraysInstancedARB, glDrawArraysInstancedARB, DRAWARRAYSINSTANCEDARB, (AND GLenum mode, GLint first, GLsizei count, GLsizei primcount), (mode, first, count, primcount), &mode, GL_void_return) /* 1601 */ GL_PROC(void, gl, DrawArraysInstancedBaseInstance, glDrawArraysInstancedBaseInstance, DRAWARRAYSINSTANCEDBASEINSTANCE, (AND GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance), (mode, first, count, instancecount, baseinstance), &mode, GL_void_return) /* 1602 */ GL_PROC(void, gl, DrawArraysInstancedEXT, glDrawArraysInstancedEXT, DRAWARRAYSINSTANCEDEXT, (AND GLenum mode, GLint start, GLsizei count, GLsizei primcount), (mode, start, count, primcount), &mode, GL_void_return) /* 1603 */ GL_PROC(void, gl, DrawBuffers, glDrawBuffers, DRAWBUFFERS, (AND GLsizei n, const GLenum *bufs), (n, bufs), &n, GL_void_return) /* 1604 */ GL_PROC(void, gl, DrawElementsBaseVertex, glDrawElementsBaseVertex, DRAWELEMENTSBASEVERTEX, (AND GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex), (mode, count, type, indices, basevertex), &mode, GL_void_return) /* 1605 */ GL_PROC(void, gl, DrawElementsIndirect, glDrawElementsIndirect, DRAWELEMENTSINDIRECT, (AND GLenum mode, GLenum type, const void *indirect), (mode, type, indirect), &mode, GL_void_return) /* 1606 */ GL_PROC(void, gl, DrawElementsInstanced, glDrawElementsInstanced, DRAWELEMENTSINSTANCED, (AND GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount), (mode, count, type, indices, instancecount), &mode, GL_void_return) /* 1607 */ GL_PROC(void, gl, DrawElementsInstancedARB, glDrawElementsInstancedARB, DRAWELEMENTSINSTANCEDARB, (AND GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount), (mode, count, type, indices, primcount), &mode, GL_void_return) /* 1608 */ GL_PROC(void, gl, DrawElementsInstancedBaseInstance, glDrawElementsInstancedBaseInstance, DRAWELEMENTSINSTANCEDBASEINSTANCE, (AND GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance), (mode, count, type, indices, instancecount, baseinstance), &mode, GL_void_return) /* 1609 */ GL_PROC(void, gl, DrawElementsInstancedBaseVertex, glDrawElementsInstancedBaseVertex, DRAWELEMENTSINSTANCEDBASEVERTEX, (AND GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex), (mode, count, type, indices, instancecount, basevertex), &mode, GL_void_return) /* 1610 */ GL_PROC(void, gl, DrawElementsInstancedBaseVertexBaseInstance, glDrawElementsInstancedBaseVertexBaseInstance, DRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE, (AND GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance), (mode, count, type, indices, instancecount, basevertex, baseinstance), &mode, GL_void_return) /* 1611 */ GL_PROC(void, gl, DrawElementsInstancedEXT, glDrawElementsInstancedEXT, DRAWELEMENTSINSTANCEDEXT, (AND GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount), (mode, count, type, indices, primcount), &mode, GL_void_return) /* 1612 */ GL_PROC(void, gl, DrawRangeElementsBaseVertex, glDrawRangeElementsBaseVertex, DRAWRANGEELEMENTSBASEVERTEX, (AND GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex), (mode, start, end, count, type, indices, basevertex), &mode, GL_void_return) /* 1613 */ GL_PROC(void, gl, DrawTextureNV, glDrawTextureNV, DRAWTEXTURENV, (AND GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1), (texture, sampler, x0, y0, x1, y1, z, s0, t0, s1, t1), &texture, GL_void_return) /* 1614 */ GL_PROC(void, gl, DrawTransformFeedback, glDrawTransformFeedback, DRAWTRANSFORMFEEDBACK, (AND GLenum mode, GLuint id), (mode, id), &mode, GL_void_return) /* 1615 */ GL_PROC(void, gl, DrawTransformFeedbackInstanced, glDrawTransformFeedbackInstanced, DRAWTRANSFORMFEEDBACKINSTANCED, (AND GLenum mode, GLuint id, GLsizei instancecount), (mode, id, instancecount), &mode, GL_void_return) /* 1616 */ GL_PROC(void, gl, DrawTransformFeedbackNV, glDrawTransformFeedbackNV, DRAWTRANSFORMFEEDBACKNV, (AND GLenum mode, GLuint id), (mode, id), &mode, GL_void_return) /* 1617 */ GL_PROC(void, gl, DrawTransformFeedbackStream, glDrawTransformFeedbackStream, DRAWTRANSFORMFEEDBACKSTREAM, (AND GLenum mode, GLuint id, GLuint stream), (mode, id, stream), &mode, GL_void_return) /* 1618 */ GL_PROC(void, gl, DrawTransformFeedbackStreamInstanced, glDrawTransformFeedbackStreamInstanced, DRAWTRANSFORMFEEDBACKSTREAMINSTANCED, (AND GLenum mode, GLuint id, GLuint stream, GLsizei instancecount), (mode, id, stream, instancecount), &mode, GL_void_return) /* 1619 */ GL_PROC(void, gl, EdgeFlagFormatNV, glEdgeFlagFormatNV, EDGEFLAGFORMATNV, (AND GLsizei stride), (stride), &stride, GL_void_return) /* 1620 */ GL_PROC(void, gl, EnableClientStateIndexedEXT, glEnableClientStateIndexedEXT, ENABLECLIENTSTATEINDEXEDEXT, (AND GLenum array, GLuint index), (array, index), &array, GL_void_return) /* 1621 */ GL_PROC(void, gl, EnableClientStateiEXT, glEnableClientStateiEXT, ENABLECLIENTSTATEIEXT, (AND GLenum array, GLuint index), (array, index), &array, GL_void_return) /* 1622 */ GL_PROC(void, gl, EnableIndexedEXT, glEnableIndexedEXT, ENABLEINDEXEDEXT, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) /* 1623 */ GL_PROC(void, gl, EnableVertexArrayAttribEXT, glEnableVertexArrayAttribEXT, ENABLEVERTEXARRAYATTRIBEXT, (AND GLuint vaobj, GLuint index), (vaobj, index), &vaobj, GL_void_return) /* 1624 */ GL_PROC(void, gl, EnableVertexArrayEXT, glEnableVertexArrayEXT, ENABLEVERTEXARRAYEXT, (AND GLuint vaobj, GLenum array), (vaobj, array), &vaobj, GL_void_return) /* 1625 */ GL_PROC(void, gl, EnableVertexAttribAPPLE, glEnableVertexAttribAPPLE, ENABLEVERTEXATTRIBAPPLE, (AND GLuint index, GLenum pname), (index, pname), &index, GL_void_return) /* 1626 */ GL_PROC(void, gl, EnableVertexAttribArray, glEnableVertexAttribArray, ENABLEVERTEXATTRIBARRAY, (AND GLuint index), (index), &index, GL_void_return) /* 1627 */ GL_PROC(void, gl, Enablei, glEnablei, ENABLEI, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) /* 1628 */ GL_PROC(void, gl, EndConditionalRender, glEndConditionalRender, ENDCONDITIONALRENDER, (NOTHING), (), NULL, GL_void_return) /* 1629 */ GL_PROC(void, gl, EndConditionalRenderNV, glEndConditionalRenderNV, ENDCONDITIONALRENDERNV, (NOTHING), (), NULL, GL_void_return) /* 1630 */ GL_PROC(void, gl, EndConditionalRenderNVX, glEndConditionalRenderNVX, ENDCONDITIONALRENDERNVX, (NOTHING), (), NULL, GL_void_return) /* 1631 */ GL_PROC(void, gl, EndPerfMonitorAMD, glEndPerfMonitorAMD, ENDPERFMONITORAMD, (AND GLuint monitor), (monitor), &monitor, GL_void_return) /* 1632 */ GL_PROC(void, gl, EndPerfQueryINTEL, glEndPerfQueryINTEL, ENDPERFQUERYINTEL, (AND GLuint queryHandle), (queryHandle), &queryHandle, GL_void_return) /* 1633 */ GL_PROC(void, gl, EndQueryIndexed, glEndQueryIndexed, ENDQUERYINDEXED, (AND GLenum target, GLuint index), (target, index), &target, GL_void_return) /* 1634 */ GL_PROC(void, gl, EndTransformFeedback, glEndTransformFeedback, ENDTRANSFORMFEEDBACK, (NOTHING), (), NULL, GL_void_return) /* 1635 */ GL_PROC(void, gl, EndTransformFeedbackEXT, glEndTransformFeedbackEXT, ENDTRANSFORMFEEDBACKEXT, (NOTHING), (), NULL, GL_void_return) /* 1636 */ GL_PROC(void, gl, EndTransformFeedbackNV, glEndTransformFeedbackNV, ENDTRANSFORMFEEDBACKNV, (NOTHING), (), NULL, GL_void_return) /* 1637 */ GL_PROC(void, gl, EndVideoCaptureNV, glEndVideoCaptureNV, ENDVIDEOCAPTURENV, (AND GLuint video_capture_slot), (video_capture_slot), &video_capture_slot, GL_void_return) /* 1638 */ GL_PROC(void, gl, EvalCoord1xOES, glEvalCoord1xOES, EVALCOORD1XOES, (AND GLfixed u), (u), &u, GL_void_return) /* 1639 */ GL_PROC(void, gl, EvalCoord1xvOES, glEvalCoord1xvOES, EVALCOORD1XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) /* 1640 */ GL_PROC(void, gl, EvalCoord2xOES, glEvalCoord2xOES, EVALCOORD2XOES, (AND GLfixed u, GLfixed v), (u, v), &u, GL_void_return) /* 1641 */ GL_PROC(void, gl, EvalCoord2xvOES, glEvalCoord2xvOES, EVALCOORD2XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) /* 1642 */ GL_PROC(void, gl, FeedbackBufferxOES, glFeedbackBufferxOES, FEEDBACKBUFFERXOES, (AND GLsizei n, GLenum type, const GLfixed *buffer), (n, type, buffer), &n, GL_void_return) /* 1643 */ GL_PROC(GLsync, gl, FenceSync, glFenceSync, FENCESYNC, (AND GLenum condition, GLbitfield flags), (condition, flags), &condition, return (GLsync)) /* 1644 */ GL_PROC(void, gl, FinishRenderAPPLE, glFinishRenderAPPLE, FINISHRENDERAPPLE, (NOTHING), (), NULL, GL_void_return) /* 1645 */ GL_PROC(void, gl, FlushMappedBufferRange, glFlushMappedBufferRange, FLUSHMAPPEDBUFFERRANGE, (AND GLenum target, GLintptr offset, GLsizeiptr length), (target, offset, length), &target, GL_void_return) /* 1646 */ GL_PROC(void, gl, FlushMappedBufferRangeAPPLE, glFlushMappedBufferRangeAPPLE, FLUSHMAPPEDBUFFERRANGEAPPLE, (AND GLenum target, GLintptr offset, GLsizeiptr size), (target, offset, size), &target, GL_void_return) /* 1647 */ GL_PROC(void, gl, FlushMappedNamedBufferRangeEXT, glFlushMappedNamedBufferRangeEXT, FLUSHMAPPEDNAMEDBUFFERRANGEEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr length), (buffer, offset, length), &buffer, GL_void_return) /* 1648 */ GL_PROC(void, gl, FlushRenderAPPLE, glFlushRenderAPPLE, FLUSHRENDERAPPLE, (NOTHING), (), NULL, GL_void_return) /* 1649 */ GL_PROC(void, gl, FlushStaticDataIBM, glFlushStaticDataIBM, FLUSHSTATICDATAIBM, (AND GLenum target), (target), &target, GL_void_return) /* 1650 */ GL_PROC(void, gl, FogCoordFormatNV, glFogCoordFormatNV, FOGCOORDFORMATNV, (AND GLenum type, GLsizei stride), (type, stride), &type, GL_void_return) /* 1651 */ GL_PROC(void, gl, FogxOES, glFogxOES, FOGXOES, (AND GLenum pname, GLfixed param), (pname, param), &pname, GL_void_return) /* 1652 */ GL_PROC(void, gl, FogxvOES, glFogxvOES, FOGXVOES, (AND GLenum pname, const GLfixed *param), (pname, param), &pname, GL_void_return) /* 1653 */ GL_PROC(void, gl, FrameTerminatorGREMEDY, glFrameTerminatorGREMEDY, FRAMETERMINATORGREMEDY, (NOTHING), (), NULL, GL_void_return) /* 1654 */ GL_PROC(void, gl, FramebufferDrawBufferEXT, glFramebufferDrawBufferEXT, FRAMEBUFFERDRAWBUFFEREXT, (AND GLuint framebuffer, GLenum mode), (framebuffer, mode), &framebuffer, GL_void_return) /* 1655 */ GL_PROC(void, gl, FramebufferDrawBuffersEXT, glFramebufferDrawBuffersEXT, FRAMEBUFFERDRAWBUFFERSEXT, (AND GLuint framebuffer, GLsizei n, const GLenum *bufs), (framebuffer, n, bufs), &framebuffer, GL_void_return) /* 1656 */ GL_PROC(void, gl, FramebufferParameteri, glFramebufferParameteri, FRAMEBUFFERPARAMETERI, (AND GLenum target, GLenum pname, GLint param), (target, pname, param), &target, GL_void_return) /* 1657 */ GL_PROC(void, gl, FramebufferReadBufferEXT, glFramebufferReadBufferEXT, FRAMEBUFFERREADBUFFEREXT, (AND GLuint framebuffer, GLenum mode), (framebuffer, mode), &framebuffer, GL_void_return) /* 1658 */ GL_PROC(void, gl, FramebufferRenderbuffer, glFramebufferRenderbuffer, FRAMEBUFFERRENDERBUFFER, (AND GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (target, attachment, renderbuffertarget, renderbuffer), &target, GL_void_return) /* 1659 */ GL_PROC(void, gl, FramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, FRAMEBUFFERRENDERBUFFEREXT, (AND GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (target, attachment, renderbuffertarget, renderbuffer), &target, GL_void_return) /* 1660 */ GL_PROC(void, gl, FramebufferTexture, glFramebufferTexture, FRAMEBUFFERTEXTURE, (AND GLenum target, GLenum attachment, GLuint texture, GLint level), (target, attachment, texture, level), &target, GL_void_return) /* 1661 */ GL_PROC(void, gl, FramebufferTexture1D, glFramebufferTexture1D, FRAMEBUFFERTEXTURE1D, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level), &target, GL_void_return) /* 1662 */ GL_PROC(void, gl, FramebufferTexture1DEXT, glFramebufferTexture1DEXT, FRAMEBUFFERTEXTURE1DEXT, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level), &target, GL_void_return) /* 1663 */ GL_PROC(void, gl, FramebufferTexture2D, glFramebufferTexture2D, FRAMEBUFFERTEXTURE2D, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level), &target, GL_void_return) /* 1664 */ GL_PROC(void, gl, FramebufferTexture2DEXT, glFramebufferTexture2DEXT, FRAMEBUFFERTEXTURE2DEXT, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level), &target, GL_void_return) /* 1665 */ GL_PROC(void, gl, FramebufferTexture3D, glFramebufferTexture3D, FRAMEBUFFERTEXTURE3D, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset), (target, attachment, textarget, texture, level, zoffset), &target, GL_void_return) /* 1666 */ GL_PROC(void, gl, FramebufferTexture3DEXT, glFramebufferTexture3DEXT, FRAMEBUFFERTEXTURE3DEXT, (AND GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset), (target, attachment, textarget, texture, level, zoffset), &target, GL_void_return) /* 1667 */ GL_PROC(void, gl, FramebufferTextureARB, glFramebufferTextureARB, FRAMEBUFFERTEXTUREARB, (AND GLenum target, GLenum attachment, GLuint texture, GLint level), (target, attachment, texture, level), &target, GL_void_return) /* 1668 */ GL_PROC(void, gl, FramebufferTextureEXT, glFramebufferTextureEXT, FRAMEBUFFERTEXTUREEXT, (AND GLenum target, GLenum attachment, GLuint texture, GLint level), (target, attachment, texture, level), &target, GL_void_return) /* 1669 */ GL_PROC(void, gl, FramebufferTextureFaceARB, glFramebufferTextureFaceARB, FRAMEBUFFERTEXTUREFACEARB, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face), (target, attachment, texture, level, face), &target, GL_void_return) /* 1670 */ GL_PROC(void, gl, FramebufferTextureFaceEXT, glFramebufferTextureFaceEXT, FRAMEBUFFERTEXTUREFACEEXT, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face), (target, attachment, texture, level, face), &target, GL_void_return) /* 1671 */ GL_PROC(void, gl, FramebufferTextureLayer, glFramebufferTextureLayer, FRAMEBUFFERTEXTURELAYER, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer), (target, attachment, texture, level, layer), &target, GL_void_return) /* 1672 */ GL_PROC(void, gl, FramebufferTextureLayerARB, glFramebufferTextureLayerARB, FRAMEBUFFERTEXTURELAYERARB, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer), (target, attachment, texture, level, layer), &target, GL_void_return) /* 1673 */ GL_PROC(void, gl, FramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, FRAMEBUFFERTEXTURELAYEREXT, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer), (target, attachment, texture, level, layer), &target, GL_void_return) /* 1674 */ GL_PROC(void, gl, FrustumfOES, glFrustumfOES, FRUSTUMFOES, (AND GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f), (l, r, b, t, n, f), &l, GL_void_return) /* 1675 */ GL_PROC(void, gl, FrustumxOES, glFrustumxOES, FRUSTUMXOES, (AND GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f), (l, r, b, t, n, f), &l, GL_void_return) /* 1676 */ GL_PROC(void, gl, GenFramebuffers, glGenFramebuffers, GENFRAMEBUFFERS, (AND GLsizei n, GLuint *framebuffers), (n, framebuffers), &n, GL_void_return) /* 1677 */ GL_PROC(void, gl, GenFramebuffersEXT, glGenFramebuffersEXT, GENFRAMEBUFFERSEXT, (AND GLsizei n, GLuint *framebuffers), (n, framebuffers), &n, GL_void_return) /* 1678 */ GL_PROC(void, gl, GenNamesAMD, glGenNamesAMD, GENNAMESAMD, (AND GLenum identifier, GLuint num, GLuint *names), (identifier, num, names), &identifier, GL_void_return) /* 1679 */ GL_PROC(GLuint, gl, GenPathsNV, glGenPathsNV, GENPATHSNV, (AND GLsizei range), (range), &range, return (GLuint)) /* 1680 */ GL_PROC(void, gl, GenPerfMonitorsAMD, glGenPerfMonitorsAMD, GENPERFMONITORSAMD, (AND GLsizei n, GLuint *monitors), (n, monitors), &n, GL_void_return) /* 1681 */ GL_PROC(void, gl, GenProgramPipelines, glGenProgramPipelines, GENPROGRAMPIPELINES, (AND GLsizei n, GLuint *pipelines), (n, pipelines), &n, GL_void_return) /* 1682 */ GL_PROC(void, gl, GenRenderbuffers, glGenRenderbuffers, GENRENDERBUFFERS, (AND GLsizei n, GLuint *renderbuffers), (n, renderbuffers), &n, GL_void_return) /* 1683 */ GL_PROC(void, gl, GenRenderbuffersEXT, glGenRenderbuffersEXT, GENRENDERBUFFERSEXT, (AND GLsizei n, GLuint *renderbuffers), (n, renderbuffers), &n, GL_void_return) /* 1684 */ GL_PROC(void, gl, GenSamplers, glGenSamplers, GENSAMPLERS, (AND GLsizei count, GLuint *samplers), (count, samplers), &count, GL_void_return) /* 1685 */ GL_PROC(void, gl, GenTransformFeedbacks, glGenTransformFeedbacks, GENTRANSFORMFEEDBACKS, (AND GLsizei n, GLuint *ids), (n, ids), &n, GL_void_return) /* 1686 */ GL_PROC(void, gl, GenTransformFeedbacksNV, glGenTransformFeedbacksNV, GENTRANSFORMFEEDBACKSNV, (AND GLsizei n, GLuint *ids), (n, ids), &n, GL_void_return) /* 1687 */ GL_PROC(void, gl, GenVertexArrays, glGenVertexArrays, GENVERTEXARRAYS, (AND GLsizei n, GLuint *arrays), (n, arrays), &n, GL_void_return) /* 1688 */ GL_PROC(void, gl, GenerateMipmap, glGenerateMipmap, GENERATEMIPMAP, (AND GLenum target), (target), &target, GL_void_return) /* 1689 */ GL_PROC(void, gl, GenerateMipmapEXT, glGenerateMipmapEXT, GENERATEMIPMAPEXT, (AND GLenum target), (target), &target, GL_void_return) /* 1690 */ GL_PROC(void, gl, GenerateMultiTexMipmapEXT, glGenerateMultiTexMipmapEXT, GENERATEMULTITEXMIPMAPEXT, (AND GLenum texunit, GLenum target), (texunit, target), &texunit, GL_void_return) /* 1691 */ GL_PROC(void, gl, GenerateTextureMipmapEXT, glGenerateTextureMipmapEXT, GENERATETEXTUREMIPMAPEXT, (AND GLuint texture, GLenum target), (texture, target), &texture, GL_void_return) /* 1692 */ GL_PROC(void, gl, GetActiveAtomicCounterBufferiv, glGetActiveAtomicCounterBufferiv, GETACTIVEATOMICCOUNTERBUFFERIV, (AND GLuint program, GLuint bufferIndex, GLenum pname, GLint *params), (program, bufferIndex, pname, params), &program, GL_void_return) /* 1693 */ GL_PROC(void, gl, GetActiveAttrib, glGetActiveAttrib, GETACTIVEATTRIB, (AND GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) /* 1694 */ GL_PROC(void, gl, GetActiveSubroutineName, glGetActiveSubroutineName, GETACTIVESUBROUTINENAME, (AND GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name), (program, shadertype, index, bufsize, length, name), &program, GL_void_return) /* 1695 */ GL_PROC(void, gl, GetActiveSubroutineUniformName, glGetActiveSubroutineUniformName, GETACTIVESUBROUTINEUNIFORMNAME, (AND GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name), (program, shadertype, index, bufsize, length, name), &program, GL_void_return) /* 1696 */ GL_PROC(void, gl, GetActiveSubroutineUniformiv, glGetActiveSubroutineUniformiv, GETACTIVESUBROUTINEUNIFORMIV, (AND GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values), (program, shadertype, index, pname, values), &program, GL_void_return) /* 1697 */ GL_PROC(void, gl, GetActiveUniform, glGetActiveUniform, GETACTIVEUNIFORM, (AND GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) /* 1698 */ GL_PROC(GLuint, gl, GetActiveUniformBlockIndex, glGetActiveUniformBlockIndex, GETACTIVEUNIFORMBLOCKINDEX, (AND GLuint program, const GLchar *uniformBlockName), (program, uniformBlockName), &program, return (GLuint)) /* 1699 */ GL_PROC(void, gl, GetActiveUniformBlockName, glGetActiveUniformBlockName, GETACTIVEUNIFORMBLOCKNAME, (AND GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName), (program, uniformBlockIndex, bufSize, length, uniformBlockName), &program, GL_void_return) /* 1700 */ GL_PROC(void, gl, GetActiveUniformBlockiv, glGetActiveUniformBlockiv, GETACTIVEUNIFORMBLOCKIV, (AND GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params), (program, uniformBlockIndex, pname, params), &program, GL_void_return) /* 1701 */ GL_PROC(void, gl, GetActiveUniformName, glGetActiveUniformName, GETACTIVEUNIFORMNAME, (AND GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName), (program, uniformIndex, bufSize, length, uniformName), &program, GL_void_return) /* 1702 */ GL_PROC(void, gl, GetActiveUniformsiv, glGetActiveUniformsiv, GETACTIVEUNIFORMSIV, (AND GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params), (program, uniformCount, uniformIndices, pname, params), &program, GL_void_return) /* 1703 */ GL_PROC(void, gl, GetActiveVaryingNV, glGetActiveVaryingNV, GETACTIVEVARYINGNV, (AND GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) /* 1704 */ GL_PROC(void, gl, GetAttachedShaders, glGetAttachedShaders, GETATTACHEDSHADERS, (AND GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders), (program, maxCount, count, shaders), &program, GL_void_return) /* 1705 */ GL_PROC(GLint, gl, GetAttribLocation, glGetAttribLocation, GETATTRIBLOCATION, (AND GLuint program, const GLchar *name), (program, name), &program, return (GLint)) /* 1706 */ GL_PROC(void, gl, GetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, GETBOOLEANINDEXEDVEXT, (AND GLenum target, GLuint index, GLboolean *data), (target, index, data), &target, GL_void_return) /* 1707 */ GL_PROC(void, gl, GetBooleani_v, glGetBooleani_v, GETBOOLEANI_V, (AND GLenum target, GLuint index, GLboolean *data), (target, index, data), &target, GL_void_return) /* 1708 */ GL_PROC(void, gl, GetBufferParameteri64v, glGetBufferParameteri64v, GETBUFFERPARAMETERI64V, (AND GLenum target, GLenum pname, GLint64 *params), (target, pname, params), &target, GL_void_return) /* 1709 */ GL_PROC(void, gl, GetBufferParameterui64vNV, glGetBufferParameterui64vNV, GETBUFFERPARAMETERUI64VNV, (AND GLenum target, GLenum pname, GLuint64EXT *params), (target, pname, params), &target, GL_void_return) /* 1710 */ GL_PROC(void, gl, GetClipPlanefOES, glGetClipPlanefOES, GETCLIPPLANEFOES, (AND GLenum plane, GLfloat *equation), (plane, equation), &plane, GL_void_return) /* 1711 */ GL_PROC(void, gl, GetClipPlanexOES, glGetClipPlanexOES, GETCLIPPLANEXOES, (AND GLenum plane, GLfixed *equation), (plane, equation), &plane, GL_void_return) /* 1712 */ GL_PROC(void, gl, GetCompressedMultiTexImageEXT, glGetCompressedMultiTexImageEXT, GETCOMPRESSEDMULTITEXIMAGEEXT, (AND GLenum texunit, GLenum target, GLint lod, void *img), (texunit, target, lod, img), &texunit, GL_void_return) /* 1713 */ GL_PROC(void, gl, GetCompressedTextureImageEXT, glGetCompressedTextureImageEXT, GETCOMPRESSEDTEXTUREIMAGEEXT, (AND GLuint texture, GLenum target, GLint lod, void *img), (texture, target, lod, img), &texture, GL_void_return) /* 1714 */ GL_PROC(void, gl, GetConvolutionParameterxvOES, glGetConvolutionParameterxvOES, GETCONVOLUTIONPARAMETERXVOES, (AND GLenum target, GLenum pname, GLfixed *params), (target, pname, params), &target, GL_void_return) /* 1715 */ GL_PROC(GLsizei, gl, GetDebugLogLengthMESA, glGetDebugLogLengthMESA, GETDEBUGLOGLENGTHMESA, (AND GLhandleARB obj, GLenum logType, GLenum shaderType), (obj, logType, shaderType), &obj, return (GLsizei)) /* 1716 */ GL_PROC(void, gl, GetDebugLogMESA, glGetDebugLogMESA, GETDEBUGLOGMESA, (AND GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength, GLsizei *length, GLcharARB *debugLog), (obj, logType, shaderType, maxLength, length, debugLog), &obj, GL_void_return) /* 1717 */ GL_PROC(GLuint, gl, GetDebugMessageLog, glGetDebugMessageLog, GETDEBUGMESSAGELOG, (AND GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog), (count, bufSize, sources, types, ids, severities, lengths, messageLog), &count, return (GLuint)) /* 1718 */ GL_PROC(GLuint, gl, GetDebugMessageLogAMD, glGetDebugMessageLogAMD, GETDEBUGMESSAGELOGAMD, (AND GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message), (count, bufsize, categories, severities, ids, lengths, message), &count, return (GLuint)) /* 1719 */ GL_PROC(GLuint, gl, GetDebugMessageLogARB, glGetDebugMessageLogARB, GETDEBUGMESSAGELOGARB, (AND GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog), (count, bufSize, sources, types, ids, severities, lengths, messageLog), &count, return (GLuint)) /* 1720 */ GL_PROC(void, gl, GetDoubleIndexedvEXT, glGetDoubleIndexedvEXT, GETDOUBLEINDEXEDVEXT, (AND GLenum target, GLuint index, GLdouble *data), (target, index, data), &target, GL_void_return) /* 1721 */ GL_PROC(void, gl, GetDoublei_v, glGetDoublei_v, GETDOUBLEI_V, (AND GLenum target, GLuint index, GLdouble *data), (target, index, data), &target, GL_void_return) /* 1722 */ GL_PROC(void, gl, GetDoublei_vEXT, glGetDoublei_vEXT, GETDOUBLEI_VEXT, (AND GLenum pname, GLuint index, GLdouble *params), (pname, index, params), &pname, GL_void_return) /* 1723 */ GL_PROC(void, gl, GetFirstPerfQueryIdINTEL, glGetFirstPerfQueryIdINTEL, GETFIRSTPERFQUERYIDINTEL, (AND GLuint *queryId), (queryId), &queryId, GL_void_return) /* 1724 */ GL_PROC(void, gl, GetFixedvOES, glGetFixedvOES, GETFIXEDVOES, (AND GLenum pname, GLfixed *params), (pname, params), &pname, GL_void_return) /* 1725 */ GL_PROC(void, gl, GetFloatIndexedvEXT, glGetFloatIndexedvEXT, GETFLOATINDEXEDVEXT, (AND GLenum target, GLuint index, GLfloat *data), (target, index, data), &target, GL_void_return) /* 1726 */ GL_PROC(void, gl, GetFloati_v, glGetFloati_v, GETFLOATI_V, (AND GLenum target, GLuint index, GLfloat *data), (target, index, data), &target, GL_void_return) /* 1727 */ GL_PROC(void, gl, GetFloati_vEXT, glGetFloati_vEXT, GETFLOATI_VEXT, (AND GLenum pname, GLuint index, GLfloat *params), (pname, index, params), &pname, GL_void_return) /* 1728 */ GL_PROC(GLint, gl, GetFragDataIndex, glGetFragDataIndex, GETFRAGDATAINDEX, (AND GLuint program, const GLchar *name), (program, name), &program, return (GLint)) /* 1729 */ GL_PROC(GLint, gl, GetFragDataLocation, glGetFragDataLocation, GETFRAGDATALOCATION, (AND GLuint program, const GLchar *name), (program, name), &program, return (GLint)) /* 1730 */ GL_PROC(GLint, gl, GetFragDataLocationEXT, glGetFragDataLocationEXT, GETFRAGDATALOCATIONEXT, (AND GLuint program, const GLchar *name), (program, name), &program, return (GLint)) /* 1731 */ GL_PROC(void, gl, GetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameteriv, GETFRAMEBUFFERATTACHMENTPARAMETERIV, (AND GLenum target, GLenum attachment, GLenum pname, GLint *params), (target, attachment, pname, params), &target, GL_void_return) /* 1732 */ GL_PROC(void, gl, GetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, GETFRAMEBUFFERATTACHMENTPARAMETERIVEXT, (AND GLenum target, GLenum attachment, GLenum pname, GLint *params), (target, attachment, pname, params), &target, GL_void_return) /* 1733 */ GL_PROC(void, gl, GetFramebufferParameteriv, glGetFramebufferParameteriv, GETFRAMEBUFFERPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 1734 */ GL_PROC(void, gl, GetFramebufferParameterivEXT, glGetFramebufferParameterivEXT, GETFRAMEBUFFERPARAMETERIVEXT, (AND GLuint framebuffer, GLenum pname, GLint *params), (framebuffer, pname, params), &framebuffer, GL_void_return) /* 1735 */ GL_PROC(GLenum, gl, GetGraphicsResetStatusARB, glGetGraphicsResetStatusARB, GETGRAPHICSRESETSTATUSARB, (NOTHING), (), NULL, return (GLenum)) /* 1736 */ GL_PROC(void, gl, GetHistogramParameterxvOES, glGetHistogramParameterxvOES, GETHISTOGRAMPARAMETERXVOES, (AND GLenum target, GLenum pname, GLfixed *params), (target, pname, params), &target, GL_void_return) /* 1737 */ GL_PROC64(GLuint64, gl, GetImageHandleARB, glGetImageHandleARB, GETIMAGEHANDLEARB, (AND GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format), (texture, level, layered, layer, format), &texture, return (GLuint64)) /* 1738 */ GL_PROC64(GLuint64, gl, GetImageHandleNV, glGetImageHandleNV, GETIMAGEHANDLENV, (AND GLuint texture, GLint level, GLboolean32 layered, GLint layer, GLenum format), (texture, level, layered, layer, format), &texture, return (GLuint64)) /* 1739 */ GL_PROC(void, gl, GetInteger64i_v, glGetInteger64i_v, GETINTEGER64I_V, (AND GLenum target, GLuint index, GLint64 *data), (target, index, data), &target, GL_void_return) /* 1740 */ GL_PROC(void, gl, GetInteger64v, glGetInteger64v, GETINTEGER64V, (AND GLenum pname, GLint64 *data), (pname, data), &pname, GL_void_return) /* 1741 */ GL_PROC(void, gl, GetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, GETINTEGERINDEXEDVEXT, (AND GLenum target, GLuint index, GLint *data), (target, index, data), &target, GL_void_return) /* 1742 */ GL_PROC(void, gl, GetIntegeri_v, glGetIntegeri_v, GETINTEGERI_V, (AND GLenum target, GLuint index, GLint *data), (target, index, data), &target, GL_void_return) /* 1743 */ GL_PROC(void, gl, GetIntegerui64i_vNV, glGetIntegerui64i_vNV, GETINTEGERUI64I_VNV, (AND GLenum value, GLuint index, GLuint64EXT *result), (value, index, result), &value, GL_void_return) /* 1744 */ GL_PROC(void, gl, GetIntegerui64vNV, glGetIntegerui64vNV, GETINTEGERUI64VNV, (AND GLenum value, GLuint64EXT *result), (value, result), &value, GL_void_return) /* 1745 */ GL_PROC(void, gl, GetInternalformati64v, glGetInternalformati64v, GETINTERNALFORMATI64V, (AND GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params), (target, internalformat, pname, bufSize, params), &target, GL_void_return) /* 1746 */ GL_PROC(void, gl, GetInternalformativ, glGetInternalformativ, GETINTERNALFORMATIV, (AND GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params), (target, internalformat, pname, bufSize, params), &target, GL_void_return) /* 1747 */ GL_PROC(void, gl, GetLightxOES, glGetLightxOES, GETLIGHTXOES, (AND GLenum light, GLenum pname, GLfixed *params), (light, pname, params), &light, GL_void_return) /* 1748 */ GL_PROC(void, gl, GetMapxvOES, glGetMapxvOES, GETMAPXVOES, (AND GLenum target, GLenum query, GLfixed *v), (target, query, v), &target, GL_void_return) /* 1749 */ GL_PROC(void, gl, GetMaterialxOES, glGetMaterialxOES, GETMATERIALXOES, (AND GLenum face, GLenum pname, GLfixed param), (face, pname, param), &face, GL_void_return) /* 1750 */ GL_PROC(void, gl, GetMultiTexEnvfvEXT, glGetMultiTexEnvfvEXT, GETMULTITEXENVFVEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLfloat *params), (texunit, target, pname, params), &texunit, GL_void_return) /* 1751 */ GL_PROC(void, gl, GetMultiTexEnvivEXT, glGetMultiTexEnvivEXT, GETMULTITEXENVIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLint *params), (texunit, target, pname, params), &texunit, GL_void_return) /* 1752 */ GL_PROC(void, gl, GetMultiTexGendvEXT, glGetMultiTexGendvEXT, GETMULTITEXGENDVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLdouble *params), (texunit, coord, pname, params), &texunit, GL_void_return) /* 1753 */ GL_PROC(void, gl, GetMultiTexGenfvEXT, glGetMultiTexGenfvEXT, GETMULTITEXGENFVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLfloat *params), (texunit, coord, pname, params), &texunit, GL_void_return) /* 1754 */ GL_PROC(void, gl, GetMultiTexGenivEXT, glGetMultiTexGenivEXT, GETMULTITEXGENIVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLint *params), (texunit, coord, pname, params), &texunit, GL_void_return) /* 1755 */ GL_PROC(void, gl, GetMultiTexImageEXT, glGetMultiTexImageEXT, GETMULTITEXIMAGEEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels), (texunit, target, level, format, type, pixels), &texunit, GL_void_return) /* 1756 */ GL_PROC(void, gl, GetMultiTexLevelParameterfvEXT, glGetMultiTexLevelParameterfvEXT, GETMULTITEXLEVELPARAMETERFVEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params), (texunit, target, level, pname, params), &texunit, GL_void_return) /* 1757 */ GL_PROC(void, gl, GetMultiTexLevelParameterivEXT, glGetMultiTexLevelParameterivEXT, GETMULTITEXLEVELPARAMETERIVEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params), (texunit, target, level, pname, params), &texunit, GL_void_return) /* 1758 */ GL_PROC(void, gl, GetMultiTexParameterIivEXT, glGetMultiTexParameterIivEXT, GETMULTITEXPARAMETERIIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLint *params), (texunit, target, pname, params), &texunit, GL_void_return) /* 1759 */ GL_PROC(void, gl, GetMultiTexParameterIuivEXT, glGetMultiTexParameterIuivEXT, GETMULTITEXPARAMETERIUIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLuint *params), (texunit, target, pname, params), &texunit, GL_void_return) /* 1760 */ GL_PROC(void, gl, GetMultiTexParameterfvEXT, glGetMultiTexParameterfvEXT, GETMULTITEXPARAMETERFVEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLfloat *params), (texunit, target, pname, params), &texunit, GL_void_return) /* 1761 */ GL_PROC(void, gl, GetMultiTexParameterivEXT, glGetMultiTexParameterivEXT, GETMULTITEXPARAMETERIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLint *params), (texunit, target, pname, params), &texunit, GL_void_return) /* 1762 */ GL_PROC(void, gl, GetMultisamplefv, glGetMultisamplefv, GETMULTISAMPLEFV, (AND GLenum pname, GLuint index, GLfloat *val), (pname, index, val), &pname, GL_void_return) /* 1763 */ GL_PROC(void, gl, GetMultisamplefvNV, glGetMultisamplefvNV, GETMULTISAMPLEFVNV, (AND GLenum pname, GLuint index, GLfloat *val), (pname, index, val), &pname, GL_void_return) /* 1764 */ GL_PROC(void, gl, GetNamedBufferParameterivEXT, glGetNamedBufferParameterivEXT, GETNAMEDBUFFERPARAMETERIVEXT, (AND GLuint buffer, GLenum pname, GLint *params), (buffer, pname, params), &buffer, GL_void_return) /* 1765 */ GL_PROC(void, gl, GetNamedBufferParameterui64vNV, glGetNamedBufferParameterui64vNV, GETNAMEDBUFFERPARAMETERUI64VNV, (AND GLuint buffer, GLenum pname, GLuint64EXT *params), (buffer, pname, params), &buffer, GL_void_return) /* 1766 */ GL_PROC(void, gl, GetNamedBufferPointervEXT, glGetNamedBufferPointervEXT, GETNAMEDBUFFERPOINTERVEXT, (AND GLuint buffer, GLenum pname, void * *params), (buffer, pname, params), &buffer, GL_void_return) /* 1767 */ GL_PROC(void, gl, GetNamedBufferSubDataEXT, glGetNamedBufferSubDataEXT, GETNAMEDBUFFERSUBDATAEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, void *data), (buffer, offset, size, data), &buffer, GL_void_return) /* 1768 */ GL_PROC(void, gl, GetNamedFramebufferAttachmentParameterivEXT, glGetNamedFramebufferAttachmentParameterivEXT, GETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT, (AND GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params), (framebuffer, attachment, pname, params), &framebuffer, GL_void_return) /* 1769 */ GL_PROC(void, gl, GetNamedFramebufferParameterivEXT, glGetNamedFramebufferParameterivEXT, GETNAMEDFRAMEBUFFERPARAMETERIVEXT, (AND GLuint framebuffer, GLenum pname, GLint *params), (framebuffer, pname, params), &framebuffer, GL_void_return) /* 1770 */ GL_PROC(void, gl, GetNamedProgramLocalParameterIivEXT, glGetNamedProgramLocalParameterIivEXT, GETNAMEDPROGRAMLOCALPARAMETERIIVEXT, (AND GLuint program, GLenum target, GLuint index, GLint *params), (program, target, index, params), &program, GL_void_return) /* 1771 */ GL_PROC(void, gl, GetNamedProgramLocalParameterIuivEXT, glGetNamedProgramLocalParameterIuivEXT, GETNAMEDPROGRAMLOCALPARAMETERIUIVEXT, (AND GLuint program, GLenum target, GLuint index, GLuint *params), (program, target, index, params), &program, GL_void_return) /* 1772 */ GL_PROC(void, gl, GetNamedProgramLocalParameterdvEXT, glGetNamedProgramLocalParameterdvEXT, GETNAMEDPROGRAMLOCALPARAMETERDVEXT, (AND GLuint program, GLenum target, GLuint index, GLdouble *params), (program, target, index, params), &program, GL_void_return) /* 1773 */ GL_PROC(void, gl, GetNamedProgramLocalParameterfvEXT, glGetNamedProgramLocalParameterfvEXT, GETNAMEDPROGRAMLOCALPARAMETERFVEXT, (AND GLuint program, GLenum target, GLuint index, GLfloat *params), (program, target, index, params), &program, GL_void_return) /* 1774 */ GL_PROC(void, gl, GetNamedProgramStringEXT, glGetNamedProgramStringEXT, GETNAMEDPROGRAMSTRINGEXT, (AND GLuint program, GLenum target, GLenum pname, void *string), (program, target, pname, string), &program, GL_void_return) /* 1775 */ GL_PROC(void, gl, GetNamedProgramivEXT, glGetNamedProgramivEXT, GETNAMEDPROGRAMIVEXT, (AND GLuint program, GLenum target, GLenum pname, GLint *params), (program, target, pname, params), &program, GL_void_return) /* 1776 */ GL_PROC(void, gl, GetNamedRenderbufferParameterivEXT, glGetNamedRenderbufferParameterivEXT, GETNAMEDRENDERBUFFERPARAMETERIVEXT, (AND GLuint renderbuffer, GLenum pname, GLint *params), (renderbuffer, pname, params), &renderbuffer, GL_void_return) /* 1777 */ GL_PROC(void, gl, GetNamedStringARB, glGetNamedStringARB, GETNAMEDSTRINGARB, (AND GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string), (namelen, name, bufSize, stringlen, string), &namelen, GL_void_return) /* 1778 */ GL_PROC(void, gl, GetNamedStringivARB, glGetNamedStringivARB, GETNAMEDSTRINGIVARB, (AND GLint namelen, const GLchar *name, GLenum pname, GLint *params), (namelen, name, pname, params), &namelen, GL_void_return) /* 1779 */ GL_PROC(void, gl, GetNextPerfQueryIdINTEL, glGetNextPerfQueryIdINTEL, GETNEXTPERFQUERYIDINTEL, (AND GLuint queryId, GLuint *nextQueryId), (queryId, nextQueryId), &queryId, GL_void_return) /* 1780 */ GL_PROC(void, gl, GetObjectLabel, glGetObjectLabel, GETOBJECTLABEL, (AND GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label), (identifier, name, bufSize, length, label), &identifier, GL_void_return) /* 1781 */ GL_PROC(void, gl, GetObjectLabelEXT, glGetObjectLabelEXT, GETOBJECTLABELEXT, (AND GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label), (type, object, bufSize, length, label), &type, GL_void_return) /* 1782 */ GL_PROC(void, gl, GetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, GETOBJECTPARAMETERIVAPPLE, (AND GLenum objectType, GLuint name, GLenum pname, GLint *params), (objectType, name, pname, params), &objectType, GL_void_return) /* 1783 */ GL_PROC(void, gl, GetObjectPtrLabel, glGetObjectPtrLabel, GETOBJECTPTRLABEL, (AND const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label), (ptr, bufSize, length, label), &ptr, GL_void_return) /* 1784 */ GL_PROC(void, gl, GetPathColorGenfvNV, glGetPathColorGenfvNV, GETPATHCOLORGENFVNV, (AND GLenum color, GLenum pname, GLfloat *value), (color, pname, value), &color, GL_void_return) /* 1785 */ GL_PROC(void, gl, GetPathColorGenivNV, glGetPathColorGenivNV, GETPATHCOLORGENIVNV, (AND GLenum color, GLenum pname, GLint *value), (color, pname, value), &color, GL_void_return) /* 1786 */ GL_PROC(void, gl, GetPathCommandsNV, glGetPathCommandsNV, GETPATHCOMMANDSNV, (AND GLuint path, GLubyte *commands), (path, commands), &path, GL_void_return) /* 1787 */ GL_PROC(void, gl, GetPathCoordsNV, glGetPathCoordsNV, GETPATHCOORDSNV, (AND GLuint path, GLfloat *coords), (path, coords), &path, GL_void_return) /* 1788 */ GL_PROC(void, gl, GetPathDashArrayNV, glGetPathDashArrayNV, GETPATHDASHARRAYNV, (AND GLuint path, GLfloat *dashArray), (path, dashArray), &path, GL_void_return) /* 1789 */ GL_PROC(GLfloat, gl, GetPathLengthNV, glGetPathLengthNV, GETPATHLENGTHNV, (AND GLuint path, GLsizei startSegment, GLsizei numSegments), (path, startSegment, numSegments), &path, return (GLfloat)) /* 1790 */ GL_PROC(void, gl, GetPathMetricRangeNV, glGetPathMetricRangeNV, GETPATHMETRICRANGENV, (AND GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics), (metricQueryMask, firstPathName, numPaths, stride, metrics), &metricQueryMask, GL_void_return) /* 1791 */ GL_PROC(void, gl, GetPathMetricsNV, glGetPathMetricsNV, GETPATHMETRICSNV, (AND GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics), (metricQueryMask, numPaths, pathNameType, paths, pathBase, stride, metrics), &metricQueryMask, GL_void_return) /* 1792 */ GL_PROC(void, gl, GetPathParameterfvNV, glGetPathParameterfvNV, GETPATHPARAMETERFVNV, (AND GLuint path, GLenum pname, GLfloat *value), (path, pname, value), &path, GL_void_return) /* 1793 */ GL_PROC(void, gl, GetPathParameterivNV, glGetPathParameterivNV, GETPATHPARAMETERIVNV, (AND GLuint path, GLenum pname, GLint *value), (path, pname, value), &path, GL_void_return) /* 1794 */ GL_PROC(void, gl, GetPathSpacingNV, glGetPathSpacingNV, GETPATHSPACINGNV, (AND GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing), (pathListMode, numPaths, pathNameType, paths, pathBase, advanceScale, kerningScale, transformType, returnedSpacing), &pathListMode, GL_void_return) /* 1795 */ GL_PROC(void, gl, GetPathTexGenfvNV, glGetPathTexGenfvNV, GETPATHTEXGENFVNV, (AND GLenum texCoordSet, GLenum pname, GLfloat *value), (texCoordSet, pname, value), &texCoordSet, GL_void_return) /* 1796 */ GL_PROC(void, gl, GetPathTexGenivNV, glGetPathTexGenivNV, GETPATHTEXGENIVNV, (AND GLenum texCoordSet, GLenum pname, GLint *value), (texCoordSet, pname, value), &texCoordSet, GL_void_return) /* 1797 */ GL_PROC(void, gl, GetPerfCounterInfoINTEL, glGetPerfCounterInfoINTEL, GETPERFCOUNTERINFOINTEL, (AND GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue), (queryId, counterId, counterNameLength, counterName, counterDescLength, counterDesc, counterOffset, counterDataSize, counterTypeEnum, counterDataTypeEnum, rawCounterMaxValue), &queryId, GL_void_return) /* 1798 */ GL_PROC(void, gl, GetPerfMonitorCounterDataAMD, glGetPerfMonitorCounterDataAMD, GETPERFMONITORCOUNTERDATAAMD, (AND GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten), (monitor, pname, dataSize, data, bytesWritten), &monitor, GL_void_return) /* 1799 */ GL_PROC(void, gl, GetPerfMonitorCounterInfoAMD, glGetPerfMonitorCounterInfoAMD, GETPERFMONITORCOUNTERINFOAMD, (AND GLuint group, GLuint counter, GLenum pname, void *data), (group, counter, pname, data), &group, GL_void_return) /* 1800 */ GL_PROC(void, gl, GetPerfMonitorCounterStringAMD, glGetPerfMonitorCounterStringAMD, GETPERFMONITORCOUNTERSTRINGAMD, (AND GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString), (group, counter, bufSize, length, counterString), &group, GL_void_return) /* 1801 */ GL_PROC(void, gl, GetPerfMonitorCountersAMD, glGetPerfMonitorCountersAMD, GETPERFMONITORCOUNTERSAMD, (AND GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters), (group, numCounters, maxActiveCounters, counterSize, counters), &group, GL_void_return) /* 1802 */ GL_PROC(void, gl, GetPerfMonitorGroupStringAMD, glGetPerfMonitorGroupStringAMD, GETPERFMONITORGROUPSTRINGAMD, (AND GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString), (group, bufSize, length, groupString), &group, GL_void_return) /* 1803 */ GL_PROC(void, gl, GetPerfMonitorGroupsAMD, glGetPerfMonitorGroupsAMD, GETPERFMONITORGROUPSAMD, (AND GLint *numGroups, GLsizei groupsSize, GLuint *groups), (numGroups, groupsSize, groups), &numGroups, GL_void_return) /* 1804 */ GL_PROC(void, gl, GetPerfQueryDataINTEL, glGetPerfQueryDataINTEL, GETPERFQUERYDATAINTEL, (AND GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten), (queryHandle, flags, dataSize, data, bytesWritten), &queryHandle, GL_void_return) /* 1805 */ GL_PROC(void, gl, GetPerfQueryIdByNameINTEL, glGetPerfQueryIdByNameINTEL, GETPERFQUERYIDBYNAMEINTEL, (AND GLchar *queryName, GLuint *queryId), (queryName, queryId), &queryName, GL_void_return) /* 1806 */ GL_PROC(void, gl, GetPerfQueryInfoINTEL, glGetPerfQueryInfoINTEL, GETPERFQUERYINFOINTEL, (AND GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask), (queryId, queryNameLength, queryName, dataSize, noCounters, noInstances, capsMask), &queryId, GL_void_return) /* 1807 */ GL_PROC(void, gl, GetPixelMapxv, glGetPixelMapxv, GETPIXELMAPXV, (AND GLenum map, GLint size, GLfixed *values), (map, size, values), &map, GL_void_return) /* 1808 */ GL_PROC(void, gl, GetPixelTransformParameterfvEXT, glGetPixelTransformParameterfvEXT, GETPIXELTRANSFORMPARAMETERFVEXT, (AND GLenum target, GLenum pname, GLfloat *params), (target, pname, params), &target, GL_void_return) /* 1809 */ GL_PROC(void, gl, GetPixelTransformParameterivEXT, glGetPixelTransformParameterivEXT, GETPIXELTRANSFORMPARAMETERIVEXT, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 1810 */ GL_PROC(void, gl, GetPointerIndexedvEXT, glGetPointerIndexedvEXT, GETPOINTERINDEXEDVEXT, (AND GLenum target, GLuint index, void * *data), (target, index, data), &target, GL_void_return) /* 1811 */ GL_PROC(void, gl, GetPointeri_vEXT, glGetPointeri_vEXT, GETPOINTERI_VEXT, (AND GLenum pname, GLuint index, void * *params), (pname, index, params), &pname, GL_void_return) /* 1812 */ GL_PROC(void, gl, GetProgramBinary, glGetProgramBinary, GETPROGRAMBINARY, (AND GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary), (program, bufSize, length, binaryFormat, binary), &program, GL_void_return) /* 1813 */ GL_PROC(void, gl, GetProgramEnvParameterIivNV, glGetProgramEnvParameterIivNV, GETPROGRAMENVPARAMETERIIVNV, (AND GLenum target, GLuint index, GLint *params), (target, index, params), &target, GL_void_return) /* 1814 */ GL_PROC(void, gl, GetProgramEnvParameterIuivNV, glGetProgramEnvParameterIuivNV, GETPROGRAMENVPARAMETERIUIVNV, (AND GLenum target, GLuint index, GLuint *params), (target, index, params), &target, GL_void_return) /* 1815 */ GL_PROC(void, gl, GetProgramInfoLog, glGetProgramInfoLog, GETPROGRAMINFOLOG, (AND GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog), (program, bufSize, length, infoLog), &program, GL_void_return) /* 1816 */ GL_PROC(void, gl, GetProgramInterfaceiv, glGetProgramInterfaceiv, GETPROGRAMINTERFACEIV, (AND GLuint program, GLenum programInterface, GLenum pname, GLint *params), (program, programInterface, pname, params), &program, GL_void_return) /* 1817 */ GL_PROC(void, gl, GetProgramLocalParameterIivNV, glGetProgramLocalParameterIivNV, GETPROGRAMLOCALPARAMETERIIVNV, (AND GLenum target, GLuint index, GLint *params), (target, index, params), &target, GL_void_return) /* 1818 */ GL_PROC(void, gl, GetProgramLocalParameterIuivNV, glGetProgramLocalParameterIuivNV, GETPROGRAMLOCALPARAMETERIUIVNV, (AND GLenum target, GLuint index, GLuint *params), (target, index, params), &target, GL_void_return) /* 1819 */ GL_PROC(void, gl, GetProgramPipelineInfoLog, glGetProgramPipelineInfoLog, GETPROGRAMPIPELINEINFOLOG, (AND GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog), (pipeline, bufSize, length, infoLog), &pipeline, GL_void_return) /* 1820 */ GL_PROC(void, gl, GetProgramPipelineiv, glGetProgramPipelineiv, GETPROGRAMPIPELINEIV, (AND GLuint pipeline, GLenum pname, GLint *params), (pipeline, pname, params), &pipeline, GL_void_return) /* 1821 */ GL_PROC(void, gl, GetProgramRegisterfvMESA, glGetProgramRegisterfvMESA, GETPROGRAMREGISTERFVMESA, (AND GLenum target, GLsizei len, const GLubyte *name, GLfloat *v), (target, len, name, v), &target, GL_void_return) /* 1822 */ GL_PROC(GLuint, gl, GetProgramResourceIndex, glGetProgramResourceIndex, GETPROGRAMRESOURCEINDEX, (AND GLuint program, GLenum programInterface, const GLchar *name), (program, programInterface, name), &program, return (GLuint)) /* 1823 */ GL_PROC(GLint, gl, GetProgramResourceLocation, glGetProgramResourceLocation, GETPROGRAMRESOURCELOCATION, (AND GLuint program, GLenum programInterface, const GLchar *name), (program, programInterface, name), &program, return (GLint)) /* 1824 */ GL_PROC(GLint, gl, GetProgramResourceLocationIndex, glGetProgramResourceLocationIndex, GETPROGRAMRESOURCELOCATIONINDEX, (AND GLuint program, GLenum programInterface, const GLchar *name), (program, programInterface, name), &program, return (GLint)) /* 1825 */ GL_PROC(void, gl, GetProgramResourceName, glGetProgramResourceName, GETPROGRAMRESOURCENAME, (AND GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name), (program, programInterface, index, bufSize, length, name), &program, GL_void_return) /* 1826 */ GL_PROC(void, gl, GetProgramResourceiv, glGetProgramResourceiv, GETPROGRAMRESOURCEIV, (AND GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params), (program, programInterface, index, propCount, props, bufSize, length, params), &program, GL_void_return) /* 1827 */ GL_PROC(void, gl, GetProgramStageiv, glGetProgramStageiv, GETPROGRAMSTAGEIV, (AND GLuint program, GLenum shadertype, GLenum pname, GLint *values), (program, shadertype, pname, values), &program, GL_void_return) /* 1828 */ GL_PROC(void, gl, GetProgramSubroutineParameteruivNV, glGetProgramSubroutineParameteruivNV, GETPROGRAMSUBROUTINEPARAMETERUIVNV, (AND GLenum target, GLuint index, GLuint *param), (target, index, param), &target, GL_void_return) /* 1829 */ GL_PROC(void, gl, GetProgramiv, glGetProgramiv, GETPROGRAMIV, (AND GLuint program, GLenum pname, GLint *params), (program, pname, params), &program, GL_void_return) /* 1830 */ GL_PROC(void, gl, GetQueryIndexediv, glGetQueryIndexediv, GETQUERYINDEXEDIV, (AND GLenum target, GLuint index, GLenum pname, GLint *params), (target, index, pname, params), &target, GL_void_return) /* 1831 */ GL_PROC(void, gl, GetQueryObjecti64v, glGetQueryObjecti64v, GETQUERYOBJECTI64V, (AND GLuint id, GLenum pname, GLint64 *params), (id, pname, params), &id, GL_void_return) /* 1832 */ GL_PROC(void, gl, GetQueryObjecti64vEXT, glGetQueryObjecti64vEXT, GETQUERYOBJECTI64VEXT, (AND GLuint id, GLenum pname, GLint64 *params), (id, pname, params), &id, GL_void_return) /* 1833 */ GL_PROC(void, gl, GetQueryObjectui64v, glGetQueryObjectui64v, GETQUERYOBJECTUI64V, (AND GLuint id, GLenum pname, GLuint64 *params), (id, pname, params), &id, GL_void_return) /* 1834 */ GL_PROC(void, gl, GetQueryObjectui64vEXT, glGetQueryObjectui64vEXT, GETQUERYOBJECTUI64VEXT, (AND GLuint id, GLenum pname, GLuint64 *params), (id, pname, params), &id, GL_void_return) /* 1835 */ GL_PROC(void, gl, GetRenderbufferParameteriv, glGetRenderbufferParameteriv, GETRENDERBUFFERPARAMETERIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 1836 */ GL_PROC(void, gl, GetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, GETRENDERBUFFERPARAMETERIVEXT, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 1837 */ GL_PROC(void, gl, GetSamplerParameterIiv, glGetSamplerParameterIiv, GETSAMPLERPARAMETERIIV, (AND GLuint sampler, GLenum pname, GLint *params), (sampler, pname, params), &sampler, GL_void_return) /* 1838 */ GL_PROC(void, gl, GetSamplerParameterIuiv, glGetSamplerParameterIuiv, GETSAMPLERPARAMETERIUIV, (AND GLuint sampler, GLenum pname, GLuint *params), (sampler, pname, params), &sampler, GL_void_return) /* 1839 */ GL_PROC(void, gl, GetSamplerParameterfv, glGetSamplerParameterfv, GETSAMPLERPARAMETERFV, (AND GLuint sampler, GLenum pname, GLfloat *params), (sampler, pname, params), &sampler, GL_void_return) /* 1840 */ GL_PROC(void, gl, GetSamplerParameteriv, glGetSamplerParameteriv, GETSAMPLERPARAMETERIV, (AND GLuint sampler, GLenum pname, GLint *params), (sampler, pname, params), &sampler, GL_void_return) /* 1841 */ GL_PROC(void, gl, GetShaderInfoLog, glGetShaderInfoLog, GETSHADERINFOLOG, (AND GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog), (shader, bufSize, length, infoLog), &shader, GL_void_return) /* 1842 */ GL_PROC(void, gl, GetShaderPrecisionFormat, glGetShaderPrecisionFormat, GETSHADERPRECISIONFORMAT, (AND GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision), (shadertype, precisiontype, range, precision), &shadertype, GL_void_return) /* 1843 */ GL_PROC(void, gl, GetShaderSource, glGetShaderSource, GETSHADERSOURCE, (AND GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source), (shader, bufSize, length, source), &shader, GL_void_return) /* 1844 */ GL_PROC(void, gl, GetShaderiv, glGetShaderiv, GETSHADERIV, (AND GLuint shader, GLenum pname, GLint *params), (shader, pname, params), &shader, GL_void_return) /* 1845 */ LENGL_PROC(GLuint, LenGl, GetStringi, LenGlGetStringi, GETSTRINGI, (AND OSMesaContext ctx, GLenum name, GLuint index), (ctx, name, index), &ctx, return (GLuint)) /* 1846 */ PUTGL_PROC(void, PutGl, GetStringi, PutGlGetStringi, GETSTRINGI, (AND OSMesaContext ctx, GLenum name, GLuint index, GLubyte *buffer), (ctx, name, index, buffer), &ctx, GL_void_return) /* 1847 */ GL_PROC(GLuint, gl, GetSubroutineIndex, glGetSubroutineIndex, GETSUBROUTINEINDEX, (AND GLuint program, GLenum shadertype, const GLchar *name), (program, shadertype, name), &program, return (GLuint)) /* 1848 */ GL_PROC(GLint, gl, GetSubroutineUniformLocation, glGetSubroutineUniformLocation, GETSUBROUTINEUNIFORMLOCATION, (AND GLuint program, GLenum shadertype, const GLchar *name), (program, shadertype, name), &program, return (GLint)) /* 1849 */ GL_PROC(void, gl, GetSynciv, glGetSynciv, GETSYNCIV, (AND GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values), (sync, pname, bufSize, length, values), &sync, GL_void_return) /* 1850 */ GL_PROC(void, gl, GetTexEnvxvOES, glGetTexEnvxvOES, GETTEXENVXVOES, (AND GLenum target, GLenum pname, GLfixed *params), (target, pname, params), &target, GL_void_return) /* 1851 */ GL_PROC(void, gl, GetTexGenxvOES, glGetTexGenxvOES, GETTEXGENXVOES, (AND GLenum coord, GLenum pname, GLfixed *params), (coord, pname, params), &coord, GL_void_return) /* 1852 */ GL_PROC(void, gl, GetTexLevelParameterxvOES, glGetTexLevelParameterxvOES, GETTEXLEVELPARAMETERXVOES, (AND GLenum target, GLint level, GLenum pname, GLfixed *params), (target, level, pname, params), &target, GL_void_return) /* 1853 */ GL_PROC(void, gl, GetTexParameterIiv, glGetTexParameterIiv, GETTEXPARAMETERIIV, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 1854 */ GL_PROC(void, gl, GetTexParameterIivEXT, glGetTexParameterIivEXT, GETTEXPARAMETERIIVEXT, (AND GLenum target, GLenum pname, GLint *params), (target, pname, params), &target, GL_void_return) /* 1855 */ GL_PROC(void, gl, GetTexParameterIuiv, glGetTexParameterIuiv, GETTEXPARAMETERIUIV, (AND GLenum target, GLenum pname, GLuint *params), (target, pname, params), &target, GL_void_return) /* 1856 */ GL_PROC(void, gl, GetTexParameterIuivEXT, glGetTexParameterIuivEXT, GETTEXPARAMETERIUIVEXT, (AND GLenum target, GLenum pname, GLuint *params), (target, pname, params), &target, GL_void_return) /* 1857 */ GL_PROC(void, gl, GetTexParameterPointervAPPLE, glGetTexParameterPointervAPPLE, GETTEXPARAMETERPOINTERVAPPLE, (AND GLenum target, GLenum pname, void * *params), (target, pname, params), &target, GL_void_return) /* 1858 */ GL_PROC(void, gl, GetTexParameterxvOES, glGetTexParameterxvOES, GETTEXPARAMETERXVOES, (AND GLenum target, GLenum pname, GLfixed *params), (target, pname, params), &target, GL_void_return) /* 1859 */ GL_PROC64(GLuint64, gl, GetTextureHandleARB, glGetTextureHandleARB, GETTEXTUREHANDLEARB, (AND GLuint texture), (texture), &texture, return (GLuint64)) /* 1860 */ GL_PROC64(GLuint64, gl, GetTextureHandleNV, glGetTextureHandleNV, GETTEXTUREHANDLENV, (AND GLuint texture), (texture), &texture, return (GLuint64)) /* 1861 */ GL_PROC(void, gl, GetTextureImageEXT, glGetTextureImageEXT, GETTEXTUREIMAGEEXT, (AND GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels), (texture, target, level, format, type, pixels), &texture, GL_void_return) /* 1862 */ GL_PROC(void, gl, GetTextureLevelParameterfvEXT, glGetTextureLevelParameterfvEXT, GETTEXTURELEVELPARAMETERFVEXT, (AND GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params), (texture, target, level, pname, params), &texture, GL_void_return) /* 1863 */ GL_PROC(void, gl, GetTextureLevelParameterivEXT, glGetTextureLevelParameterivEXT, GETTEXTURELEVELPARAMETERIVEXT, (AND GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params), (texture, target, level, pname, params), &texture, GL_void_return) /* 1864 */ GL_PROC(void, gl, GetTextureParameterIivEXT, glGetTextureParameterIivEXT, GETTEXTUREPARAMETERIIVEXT, (AND GLuint texture, GLenum target, GLenum pname, GLint *params), (texture, target, pname, params), &texture, GL_void_return) /* 1865 */ GL_PROC(void, gl, GetTextureParameterIuivEXT, glGetTextureParameterIuivEXT, GETTEXTUREPARAMETERIUIVEXT, (AND GLuint texture, GLenum target, GLenum pname, GLuint *params), (texture, target, pname, params), &texture, GL_void_return) /* 1866 */ GL_PROC(void, gl, GetTextureParameterfvEXT, glGetTextureParameterfvEXT, GETTEXTUREPARAMETERFVEXT, (AND GLuint texture, GLenum target, GLenum pname, GLfloat *params), (texture, target, pname, params), &texture, GL_void_return) /* 1867 */ GL_PROC(void, gl, GetTextureParameterivEXT, glGetTextureParameterivEXT, GETTEXTUREPARAMETERIVEXT, (AND GLuint texture, GLenum target, GLenum pname, GLint *params), (texture, target, pname, params), &texture, GL_void_return) /* 1868 */ GL_PROC64(GLuint64, gl, GetTextureSamplerHandleARB, glGetTextureSamplerHandleARB, GETTEXTURESAMPLERHANDLEARB, (AND GLuint texture, GLuint sampler), (texture, sampler), &texture, return (GLuint64)) /* 1869 */ GL_PROC64(GLuint64, gl, GetTextureSamplerHandleNV, glGetTextureSamplerHandleNV, GETTEXTURESAMPLERHANDLENV, (AND GLuint texture, GLuint sampler), (texture, sampler), &texture, return (GLuint64)) /* 1870 */ GL_PROC(void, gl, GetTransformFeedbackVarying, glGetTransformFeedbackVarying, GETTRANSFORMFEEDBACKVARYING, (AND GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) /* 1871 */ GL_PROC(void, gl, GetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, GETTRANSFORMFEEDBACKVARYINGEXT, (AND GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name), (program, index, bufSize, length, size, type, name), &program, GL_void_return) /* 1872 */ GL_PROC(void, gl, GetTransformFeedbackVaryingNV, glGetTransformFeedbackVaryingNV, GETTRANSFORMFEEDBACKVARYINGNV, (AND GLuint program, GLuint index, GLint *location), (program, index, location), &program, GL_void_return) /* 1873 */ GL_PROC(GLuint, gl, GetUniformBlockIndex, glGetUniformBlockIndex, GETUNIFORMBLOCKINDEX, (AND GLuint program, const GLchar *uniformBlockName), (program, uniformBlockName), &program, return (GLuint)) /* 1874 */ GL_PROC(GLint, gl, GetUniformBufferSizeEXT, glGetUniformBufferSizeEXT, GETUNIFORMBUFFERSIZEEXT, (AND GLuint program, GLint location), (program, location), &program, return (GLint)) /* 1875 */ GL_PROC(void, gl, GetUniformIndices, glGetUniformIndices, GETUNIFORMINDICES, (AND GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices), (program, uniformCount, uniformNames, uniformIndices), &program, GL_void_return) /* 1876 */ GL_PROC(GLint, gl, GetUniformLocation, glGetUniformLocation, GETUNIFORMLOCATION, (AND GLuint program, const GLchar *name), (program, name), &program, return (GLint)) /* 1877 */ GL_PROC64(GLintptr, gl, GetUniformOffsetEXT, glGetUniformOffsetEXT, GETUNIFORMOFFSETEXT, (AND GLuint program, GLint location), (program, location), &program, return (GLintptr)) /* 1878 */ GL_PROC(void, gl, GetUniformSubroutineuiv, glGetUniformSubroutineuiv, GETUNIFORMSUBROUTINEUIV, (AND GLenum shadertype, GLint location, GLuint *params), (shadertype, location, params), &shadertype, GL_void_return) /* 1879 */ GL_PROC(void, gl, GetUniformdv, glGetUniformdv, GETUNIFORMDV, (AND GLuint program, GLint location, GLdouble *params), (program, location, params), &program, GL_void_return) /* 1880 */ GL_PROC(void, gl, GetUniformfv, glGetUniformfv, GETUNIFORMFV, (AND GLuint program, GLint location, GLfloat *params), (program, location, params), &program, GL_void_return) /* 1881 */ GL_PROC(void, gl, GetUniformi64vNV, glGetUniformi64vNV, GETUNIFORMI64VNV, (AND GLuint program, GLint location, GLint64EXT *params), (program, location, params), &program, GL_void_return) /* 1882 */ GL_PROC(void, gl, GetUniformiv, glGetUniformiv, GETUNIFORMIV, (AND GLuint program, GLint location, GLint *params), (program, location, params), &program, GL_void_return) /* 1883 */ GL_PROC(void, gl, GetUniformui64vNV, glGetUniformui64vNV, GETUNIFORMUI64VNV, (AND GLuint program, GLint location, GLuint64EXT *params), (program, location, params), &program, GL_void_return) /* 1884 */ GL_PROC(void, gl, GetUniformuiv, glGetUniformuiv, GETUNIFORMUIV, (AND GLuint program, GLint location, GLuint *params), (program, location, params), &program, GL_void_return) /* 1885 */ GL_PROC(void, gl, GetUniformuivEXT, glGetUniformuivEXT, GETUNIFORMUIVEXT, (AND GLuint program, GLint location, GLuint *params), (program, location, params), &program, GL_void_return) /* 1886 */ GL_PROC(GLint, gl, GetVaryingLocationNV, glGetVaryingLocationNV, GETVARYINGLOCATIONNV, (AND GLuint program, const GLchar *name), (program, name), &program, return (GLint)) /* 1887 */ GL_PROC(void, gl, GetVertexArrayIntegeri_vEXT, glGetVertexArrayIntegeri_vEXT, GETVERTEXARRAYINTEGERI_VEXT, (AND GLuint vaobj, GLuint index, GLenum pname, GLint *param), (vaobj, index, pname, param), &vaobj, GL_void_return) /* 1888 */ GL_PROC(void, gl, GetVertexArrayIntegervEXT, glGetVertexArrayIntegervEXT, GETVERTEXARRAYINTEGERVEXT, (AND GLuint vaobj, GLenum pname, GLint *param), (vaobj, pname, param), &vaobj, GL_void_return) /* 1889 */ GL_PROC(void, gl, GetVertexArrayPointeri_vEXT, glGetVertexArrayPointeri_vEXT, GETVERTEXARRAYPOINTERI_VEXT, (AND GLuint vaobj, GLuint index, GLenum pname, void * *param), (vaobj, index, pname, param), &vaobj, GL_void_return) /* 1890 */ GL_PROC(void, gl, GetVertexArrayPointervEXT, glGetVertexArrayPointervEXT, GETVERTEXARRAYPOINTERVEXT, (AND GLuint vaobj, GLenum pname, void * *param), (vaobj, pname, param), &vaobj, GL_void_return) /* 1891 */ GL_PROC(void, gl, GetVertexAttribIiv, glGetVertexAttribIiv, GETVERTEXATTRIBIIV, (AND GLuint index, GLenum pname, GLint *params), (index, pname, params), &index, GL_void_return) /* 1892 */ GL_PROC(void, gl, GetVertexAttribIivEXT, glGetVertexAttribIivEXT, GETVERTEXATTRIBIIVEXT, (AND GLuint index, GLenum pname, GLint *params), (index, pname, params), &index, GL_void_return) /* 1893 */ GL_PROC(void, gl, GetVertexAttribIuiv, glGetVertexAttribIuiv, GETVERTEXATTRIBIUIV, (AND GLuint index, GLenum pname, GLuint *params), (index, pname, params), &index, GL_void_return) /* 1894 */ GL_PROC(void, gl, GetVertexAttribIuivEXT, glGetVertexAttribIuivEXT, GETVERTEXATTRIBIUIVEXT, (AND GLuint index, GLenum pname, GLuint *params), (index, pname, params), &index, GL_void_return) /* 1895 */ GL_PROC(void, gl, GetVertexAttribLdv, glGetVertexAttribLdv, GETVERTEXATTRIBLDV, (AND GLuint index, GLenum pname, GLdouble *params), (index, pname, params), &index, GL_void_return) /* 1896 */ GL_PROC(void, gl, GetVertexAttribLdvEXT, glGetVertexAttribLdvEXT, GETVERTEXATTRIBLDVEXT, (AND GLuint index, GLenum pname, GLdouble *params), (index, pname, params), &index, GL_void_return) /* 1897 */ GL_PROC(void, gl, GetVertexAttribLi64vNV, glGetVertexAttribLi64vNV, GETVERTEXATTRIBLI64VNV, (AND GLuint index, GLenum pname, GLint64EXT *params), (index, pname, params), &index, GL_void_return) /* 1898 */ GL_PROC(void, gl, GetVertexAttribLui64vARB, glGetVertexAttribLui64vARB, GETVERTEXATTRIBLUI64VARB, (AND GLuint index, GLenum pname, GLuint64EXT *params), (index, pname, params), &index, GL_void_return) /* 1899 */ GL_PROC(void, gl, GetVertexAttribLui64vNV, glGetVertexAttribLui64vNV, GETVERTEXATTRIBLUI64VNV, (AND GLuint index, GLenum pname, GLuint64EXT *params), (index, pname, params), &index, GL_void_return) /* 1900 */ GL_PROC(void, gl, GetVertexAttribPointerv, glGetVertexAttribPointerv, GETVERTEXATTRIBPOINTERV, (AND GLuint index, GLenum pname, void * *pointer), (index, pname, pointer), &index, GL_void_return) /* 1901 */ GL_PROC(void, gl, GetVertexAttribdv, glGetVertexAttribdv, GETVERTEXATTRIBDV, (AND GLuint index, GLenum pname, GLdouble *params), (index, pname, params), &index, GL_void_return) /* 1902 */ GL_PROC(void, gl, GetVertexAttribfv, glGetVertexAttribfv, GETVERTEXATTRIBFV, (AND GLuint index, GLenum pname, GLfloat *params), (index, pname, params), &index, GL_void_return) /* 1903 */ GL_PROC(void, gl, GetVertexAttribiv, glGetVertexAttribiv, GETVERTEXATTRIBIV, (AND GLuint index, GLenum pname, GLint *params), (index, pname, params), &index, GL_void_return) /* 1904 */ GL_PROC(void, gl, GetVideoCaptureStreamdvNV, glGetVideoCaptureStreamdvNV, GETVIDEOCAPTURESTREAMDVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) /* 1905 */ GL_PROC(void, gl, GetVideoCaptureStreamfvNV, glGetVideoCaptureStreamfvNV, GETVIDEOCAPTURESTREAMFVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) /* 1906 */ GL_PROC(void, gl, GetVideoCaptureStreamivNV, glGetVideoCaptureStreamivNV, GETVIDEOCAPTURESTREAMIVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) /* 1907 */ GL_PROC(void, gl, GetVideoCaptureivNV, glGetVideoCaptureivNV, GETVIDEOCAPTUREIVNV, (AND GLuint video_capture_slot, GLenum pname, GLint *params), (video_capture_slot, pname, params), &video_capture_slot, GL_void_return) /* 1908 */ GL_PROC(void, gl, GetVideoi64vNV, glGetVideoi64vNV, GETVIDEOI64VNV, (AND GLuint video_slot, GLenum pname, GLint64EXT *params), (video_slot, pname, params), &video_slot, GL_void_return) /* 1909 */ GL_PROC(void, gl, GetVideoivNV, glGetVideoivNV, GETVIDEOIVNV, (AND GLuint video_slot, GLenum pname, GLint *params), (video_slot, pname, params), &video_slot, GL_void_return) /* 1910 */ GL_PROC(void, gl, GetVideoui64vNV, glGetVideoui64vNV, GETVIDEOUI64VNV, (AND GLuint video_slot, GLenum pname, GLuint64EXT *params), (video_slot, pname, params), &video_slot, GL_void_return) /* 1911 */ GL_PROC(void, gl, GetVideouivNV, glGetVideouivNV, GETVIDEOUIVNV, (AND GLuint video_slot, GLenum pname, GLuint *params), (video_slot, pname, params), &video_slot, GL_void_return) /* 1912 */ GL_PROC(void, gl, GetnColorTableARB, glGetnColorTableARB, GETNCOLORTABLEARB, (AND GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table), (target, format, type, bufSize, table), &target, GL_void_return) /* 1913 */ GL_PROC(void, gl, GetnCompressedTexImageARB, glGetnCompressedTexImageARB, GETNCOMPRESSEDTEXIMAGEARB, (AND GLenum target, GLint lod, GLsizei bufSize, void *img), (target, lod, bufSize, img), &target, GL_void_return) /* 1914 */ GL_PROC(void, gl, GetnConvolutionFilterARB, glGetnConvolutionFilterARB, GETNCONVOLUTIONFILTERARB, (AND GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image), (target, format, type, bufSize, image), &target, GL_void_return) /* 1915 */ GL_PROC(void, gl, GetnHistogramARB, glGetnHistogramARB, GETNHISTOGRAMARB, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values), (target, reset, format, type, bufSize, values), &target, GL_void_return) /* 1916 */ GL_PROC(void, gl, GetnMapdvARB, glGetnMapdvARB, GETNMAPDVARB, (AND GLenum target, GLenum query, GLsizei bufSize, GLdouble *v), (target, query, bufSize, v), &target, GL_void_return) /* 1917 */ GL_PROC(void, gl, GetnMapfvARB, glGetnMapfvARB, GETNMAPFVARB, (AND GLenum target, GLenum query, GLsizei bufSize, GLfloat *v), (target, query, bufSize, v), &target, GL_void_return) /* 1918 */ GL_PROC(void, gl, GetnMapivARB, glGetnMapivARB, GETNMAPIVARB, (AND GLenum target, GLenum query, GLsizei bufSize, GLint *v), (target, query, bufSize, v), &target, GL_void_return) /* 1919 */ GL_PROC(void, gl, GetnMinmaxARB, glGetnMinmaxARB, GETNMINMAXARB, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values), (target, reset, format, type, bufSize, values), &target, GL_void_return) /* 1920 */ GL_PROC(void, gl, GetnPixelMapfvARB, glGetnPixelMapfvARB, GETNPIXELMAPFVARB, (AND GLenum map, GLsizei bufSize, GLfloat *values), (map, bufSize, values), &map, GL_void_return) /* 1921 */ GL_PROC(void, gl, GetnPixelMapuivARB, glGetnPixelMapuivARB, GETNPIXELMAPUIVARB, (AND GLenum map, GLsizei bufSize, GLuint *values), (map, bufSize, values), &map, GL_void_return) /* 1922 */ GL_PROC(void, gl, GetnPixelMapusvARB, glGetnPixelMapusvARB, GETNPIXELMAPUSVARB, (AND GLenum map, GLsizei bufSize, GLushort *values), (map, bufSize, values), &map, GL_void_return) /* 1923 */ GL_PROC(void, gl, GetnPolygonStippleARB, glGetnPolygonStippleARB, GETNPOLYGONSTIPPLEARB, (AND GLsizei bufSize, GLubyte *pattern), (bufSize, pattern), &bufSize, GL_void_return) /* 1924 */ GL_PROC(void, gl, GetnSeparableFilterARB, glGetnSeparableFilterARB, GETNSEPARABLEFILTERARB, (AND GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span), (target, format, type, rowBufSize, row, columnBufSize, column, span), &target, GL_void_return) /* 1925 */ GL_PROC(void, gl, GetnTexImageARB, glGetnTexImageARB, GETNTEXIMAGEARB, (AND GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img), (target, level, format, type, bufSize, img), &target, GL_void_return) /* 1926 */ GL_PROC(void, gl, GetnUniformdvARB, glGetnUniformdvARB, GETNUNIFORMDVARB, (AND GLuint program, GLint location, GLsizei bufSize, GLdouble *params), (program, location, bufSize, params), &program, GL_void_return) /* 1927 */ GL_PROC(void, gl, GetnUniformfvARB, glGetnUniformfvARB, GETNUNIFORMFVARB, (AND GLuint program, GLint location, GLsizei bufSize, GLfloat *params), (program, location, bufSize, params), &program, GL_void_return) /* 1928 */ GL_PROC(void, gl, GetnUniformivARB, glGetnUniformivARB, GETNUNIFORMIVARB, (AND GLuint program, GLint location, GLsizei bufSize, GLint *params), (program, location, bufSize, params), &program, GL_void_return) /* 1929 */ GL_PROC(void, gl, GetnUniformuivARB, glGetnUniformuivARB, GETNUNIFORMUIVARB, (AND GLuint program, GLint location, GLsizei bufSize, GLuint *params), (program, location, bufSize, params), &program, GL_void_return) /* 1930 */ GL_PROC(GLsync, gl, ImportSyncEXT, glImportSyncEXT, IMPORTSYNCEXT, (AND GLenum external_sync_type, GLintptr external_sync, GLbitfield flags), (external_sync_type, external_sync, flags), &external_sync_type, return (GLsync)) /* 1931 */ GL_PROC(void, gl, IndexFormatNV, glIndexFormatNV, INDEXFORMATNV, (AND GLenum type, GLsizei stride), (type, stride), &type, GL_void_return) /* 1932 */ GL_PROC(void, gl, IndexxOES, glIndexxOES, INDEXXOES, (AND GLfixed component), (component), &component, GL_void_return) /* 1933 */ GL_PROC(void, gl, IndexxvOES, glIndexxvOES, INDEXXVOES, (AND const GLfixed *component), (component), &component, GL_void_return) /* 1934 */ GL_PROC(void, gl, InsertEventMarkerEXT, glInsertEventMarkerEXT, INSERTEVENTMARKEREXT, (AND GLsizei length, const GLchar *marker), (length, marker), &length, GL_void_return) /* 1935 */ GL_PROC(void, gl, InterpolatePathsNV, glInterpolatePathsNV, INTERPOLATEPATHSNV, (AND GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight), (resultPath, pathA, pathB, weight), &resultPath, GL_void_return) /* 1936 */ GL_PROC(void, gl, InvalidateBufferData, glInvalidateBufferData, INVALIDATEBUFFERDATA, (AND GLuint buffer), (buffer), &buffer, GL_void_return) /* 1937 */ GL_PROC(void, gl, InvalidateBufferSubData, glInvalidateBufferSubData, INVALIDATEBUFFERSUBDATA, (AND GLuint buffer, GLintptr offset, GLsizeiptr length), (buffer, offset, length), &buffer, GL_void_return) /* 1938 */ GL_PROC(void, gl, InvalidateFramebuffer, glInvalidateFramebuffer, INVALIDATEFRAMEBUFFER, (AND GLenum target, GLsizei numAttachments, const GLenum *attachments), (target, numAttachments, attachments), &target, GL_void_return) /* 1939 */ GL_PROC(void, gl, InvalidateSubFramebuffer, glInvalidateSubFramebuffer, INVALIDATESUBFRAMEBUFFER, (AND GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height), (target, numAttachments, attachments, x, y, width, height), &target, GL_void_return) /* 1940 */ GL_PROC(void, gl, InvalidateTexImage, glInvalidateTexImage, INVALIDATETEXIMAGE, (AND GLuint texture, GLint level), (texture, level), &texture, GL_void_return) /* 1941 */ GL_PROC(void, gl, InvalidateTexSubImage, glInvalidateTexSubImage, INVALIDATETEXSUBIMAGE, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth), (texture, level, xoffset, yoffset, zoffset, width, height, depth), &texture, GL_void_return) /* 1942 */ GL_PROC(GLboolean, gl, IsBufferResidentNV, glIsBufferResidentNV, ISBUFFERRESIDENTNV, (AND GLenum target), (target), &target, return (GLboolean)) /* 1943 */ GL_PROC(GLboolean, gl, IsEnabledIndexedEXT, glIsEnabledIndexedEXT, ISENABLEDINDEXEDEXT, (AND GLenum target, GLuint index), (target, index), &target, return (GLboolean)) /* 1944 */ GL_PROC(GLboolean, gl, IsEnabledi, glIsEnabledi, ISENABLEDI, (AND GLenum target, GLuint index), (target, index), &target, return (GLboolean)) /* 1945 */ GL_PROC(GLboolean, gl, IsFramebuffer, glIsFramebuffer, ISFRAMEBUFFER, (AND GLuint framebuffer), (framebuffer), &framebuffer, return (GLboolean)) /* 1946 */ GL_PROC(GLboolean, gl, IsFramebufferEXT, glIsFramebufferEXT, ISFRAMEBUFFEREXT, (AND GLuint framebuffer), (framebuffer), &framebuffer, return (GLboolean)) /* 1947 */ GL_PROC(GLboolean, gl, IsImageHandleResidentARB, glIsImageHandleResidentARB, ISIMAGEHANDLERESIDENTARB, (AND GLuint64 handle), (handle), &handle, return (GLboolean)) /* 1948 */ GL_PROC(GLboolean, gl, IsImageHandleResidentNV, glIsImageHandleResidentNV, ISIMAGEHANDLERESIDENTNV, (AND GLuint64 handle), (handle), &handle, return (GLboolean)) /* 1949 */ GL_PROC(GLboolean, gl, IsNameAMD, glIsNameAMD, ISNAMEAMD, (AND GLenum identifier, GLuint name), (identifier, name), &identifier, return (GLboolean)) /* 1950 */ GL_PROC(GLboolean, gl, IsNamedBufferResidentNV, glIsNamedBufferResidentNV, ISNAMEDBUFFERRESIDENTNV, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) /* 1951 */ GL_PROC(GLboolean, gl, IsNamedStringARB, glIsNamedStringARB, ISNAMEDSTRINGARB, (AND GLint namelen, const GLchar *name), (namelen, name), &namelen, return (GLboolean)) /* 1952 */ GL_PROC(GLboolean, gl, IsPathNV, glIsPathNV, ISPATHNV, (AND GLuint path), (path), &path, return (GLboolean)) /* 1953 */ GL_PROC(GLboolean, gl, IsPointInFillPathNV, glIsPointInFillPathNV, ISPOINTINFILLPATHNV, (AND GLuint path, GLuint mask, GLfloat x, GLfloat y), (path, mask, x, y), &path, return (GLboolean)) /* 1954 */ GL_PROC(GLboolean, gl, IsPointInStrokePathNV, glIsPointInStrokePathNV, ISPOINTINSTROKEPATHNV, (AND GLuint path, GLfloat x, GLfloat y), (path, x, y), &path, return (GLboolean)) /* 1955 */ GL_PROC(GLboolean, gl, IsProgram, glIsProgram, ISPROGRAM, (AND GLuint program), (program), &program, return (GLboolean)) /* 1956 */ GL_PROC(GLboolean, gl, IsProgramPipeline, glIsProgramPipeline, ISPROGRAMPIPELINE, (AND GLuint pipeline), (pipeline), &pipeline, return (GLboolean)) /* 1957 */ GL_PROC(GLboolean, gl, IsRenderbuffer, glIsRenderbuffer, ISRENDERBUFFER, (AND GLuint renderbuffer), (renderbuffer), &renderbuffer, return (GLboolean)) /* 1958 */ GL_PROC(GLboolean, gl, IsRenderbufferEXT, glIsRenderbufferEXT, ISRENDERBUFFEREXT, (AND GLuint renderbuffer), (renderbuffer), &renderbuffer, return (GLboolean)) /* 1959 */ GL_PROC(GLboolean, gl, IsSampler, glIsSampler, ISSAMPLER, (AND GLuint sampler), (sampler), &sampler, return (GLboolean)) /* 1960 */ GL_PROC(GLboolean, gl, IsShader, glIsShader, ISSHADER, (AND GLuint shader), (shader), &shader, return (GLboolean)) /* 1961 */ GL_PROC(GLboolean, gl, IsSync, glIsSync, ISSYNC, (AND GLsync sync), (sync), &sync, return (GLboolean)) /* 1962 */ GL_PROC(GLboolean, gl, IsTextureHandleResidentARB, glIsTextureHandleResidentARB, ISTEXTUREHANDLERESIDENTARB, (AND GLuint64 handle), (handle), &handle, return (GLboolean)) /* 1963 */ GL_PROC(GLboolean, gl, IsTextureHandleResidentNV, glIsTextureHandleResidentNV, ISTEXTUREHANDLERESIDENTNV, (AND GLuint64 handle), (handle), &handle, return (GLboolean)) /* 1964 */ GL_PROC(GLboolean, gl, IsTransformFeedback, glIsTransformFeedback, ISTRANSFORMFEEDBACK, (AND GLuint id), (id), &id, return (GLboolean)) /* 1965 */ GL_PROC(GLboolean, gl, IsTransformFeedbackNV, glIsTransformFeedbackNV, ISTRANSFORMFEEDBACKNV, (AND GLuint id), (id), &id, return (GLboolean)) /* 1966 */ GL_PROC(GLboolean, gl, IsVertexArray, glIsVertexArray, ISVERTEXARRAY, (AND GLuint array), (array), &array, return (GLboolean)) /* 1967 */ GL_PROC(GLboolean, gl, IsVertexAttribEnabledAPPLE, glIsVertexAttribEnabledAPPLE, ISVERTEXATTRIBENABLEDAPPLE, (AND GLuint index, GLenum pname), (index, pname), &index, return (GLboolean)) /* 1968 */ GL_PROC(void, gl, LabelObjectEXT, glLabelObjectEXT, LABELOBJECTEXT, (AND GLenum type, GLuint object, GLsizei length, const GLchar *label), (type, object, length, label), &type, GL_void_return) /* 1969 */ GL_PROC(void, gl, LightModelxOES, glLightModelxOES, LIGHTMODELXOES, (AND GLenum pname, GLfixed param), (pname, param), &pname, GL_void_return) /* 1970 */ GL_PROC(void, gl, LightModelxvOES, glLightModelxvOES, LIGHTMODELXVOES, (AND GLenum pname, const GLfixed *param), (pname, param), &pname, GL_void_return) /* 1971 */ GL_PROC(void, gl, LightxOES, glLightxOES, LIGHTXOES, (AND GLenum light, GLenum pname, GLfixed param), (light, pname, param), &light, GL_void_return) /* 1972 */ GL_PROC(void, gl, LightxvOES, glLightxvOES, LIGHTXVOES, (AND GLenum light, GLenum pname, const GLfixed *params), (light, pname, params), &light, GL_void_return) /* 1973 */ GL_PROC(void, gl, LineWidthxOES, glLineWidthxOES, LINEWIDTHXOES, (AND GLfixed width), (width), &width, GL_void_return) /* 1974 */ GL_PROC(void, gl, LinkProgram, glLinkProgram, LINKPROGRAM, (AND GLuint program), (program), &program, GL_void_return) /* 1975 */ GL_PROC(void, gl, LoadMatrixxOES, glLoadMatrixxOES, LOADMATRIXXOES, (AND const GLfixed *m), (m), &m, GL_void_return) /* 1976 */ GL_PROC(void, gl, LoadTransposeMatrixxOES, glLoadTransposeMatrixxOES, LOADTRANSPOSEMATRIXXOES, (AND const GLfixed *m), (m), &m, GL_void_return) /* 1977 */ GL_PROC(void, gl, MakeBufferNonResidentNV, glMakeBufferNonResidentNV, MAKEBUFFERNONRESIDENTNV, (AND GLenum target), (target), &target, GL_void_return) /* 1978 */ GL_PROC(void, gl, MakeBufferResidentNV, glMakeBufferResidentNV, MAKEBUFFERRESIDENTNV, (AND GLenum target, GLenum access), (target, access), &target, GL_void_return) /* 1979 */ GL_PROC(void, gl, MakeImageHandleNonResidentARB, glMakeImageHandleNonResidentARB, MAKEIMAGEHANDLENONRESIDENTARB, (AND GLuint64 handle), (handle), &handle, GL_void_return) /* 1980 */ GL_PROC(void, gl, MakeImageHandleNonResidentNV, glMakeImageHandleNonResidentNV, MAKEIMAGEHANDLENONRESIDENTNV, (AND GLuint64 handle), (handle), &handle, GL_void_return) /* 1981 */ GL_PROC(void, gl, MakeImageHandleResidentARB, glMakeImageHandleResidentARB, MAKEIMAGEHANDLERESIDENTARB, (AND GLuint64 handle, GLenum access), (handle, access), &handle, GL_void_return) /* 1982 */ GL_PROC(void, gl, MakeImageHandleResidentNV, glMakeImageHandleResidentNV, MAKEIMAGEHANDLERESIDENTNV, (AND GLuint64 handle, GLenum access), (handle, access), &handle, GL_void_return) /* 1983 */ GL_PROC(void, gl, MakeNamedBufferNonResidentNV, glMakeNamedBufferNonResidentNV, MAKENAMEDBUFFERNONRESIDENTNV, (AND GLuint buffer), (buffer), &buffer, GL_void_return) /* 1984 */ GL_PROC(void, gl, MakeNamedBufferResidentNV, glMakeNamedBufferResidentNV, MAKENAMEDBUFFERRESIDENTNV, (AND GLuint buffer, GLenum access), (buffer, access), &buffer, GL_void_return) /* 1985 */ GL_PROC(void, gl, MakeTextureHandleNonResidentARB, glMakeTextureHandleNonResidentARB, MAKETEXTUREHANDLENONRESIDENTARB, (AND GLuint64 handle), (handle), &handle, GL_void_return) /* 1986 */ GL_PROC(void, gl, MakeTextureHandleNonResidentNV, glMakeTextureHandleNonResidentNV, MAKETEXTUREHANDLENONRESIDENTNV, (AND GLuint64 handle), (handle), &handle, GL_void_return) /* 1987 */ GL_PROC(void, gl, MakeTextureHandleResidentARB, glMakeTextureHandleResidentARB, MAKETEXTUREHANDLERESIDENTARB, (AND GLuint64 handle), (handle), &handle, GL_void_return) /* 1988 */ GL_PROC(void, gl, MakeTextureHandleResidentNV, glMakeTextureHandleResidentNV, MAKETEXTUREHANDLERESIDENTNV, (AND GLuint64 handle), (handle), &handle, GL_void_return) /* 1989 */ GL_PROC(void, gl, Map1xOES, glMap1xOES, MAP1XOES, (AND GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points), (target, u1, u2, stride, order, points), &target, GL_void_return) /* 1990 */ GL_PROC(void, gl, Map2xOES, glMap2xOES, MAP2XOES, (AND GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points), (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &target, GL_void_return) /* 1991 */ GL_PROC(void *, gl, MapBufferRange, glMapBufferRange, MAPBUFFERRANGE, (AND GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access), (target, offset, length, access), &target, return (void *)) /* 1992 */ GL_PROC(void, gl, MapGrid1xOES, glMapGrid1xOES, MAPGRID1XOES, (AND GLint n, GLfixed u1, GLfixed u2), (n, u1, u2), &n, GL_void_return) /* 1993 */ GL_PROC(void, gl, MapGrid2xOES, glMapGrid2xOES, MAPGRID2XOES, (AND GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2), (n, u1, u2, v1, v2), &n, GL_void_return) /* 1994 */ GL_PROC(void *, gl, MapNamedBufferEXT, glMapNamedBufferEXT, MAPNAMEDBUFFEREXT, (AND GLuint buffer, GLenum access), (buffer, access), &buffer, return (void *)) /* 1995 */ GL_PROC(void *, gl, MapNamedBufferRangeEXT, glMapNamedBufferRangeEXT, MAPNAMEDBUFFERRANGEEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access), (buffer, offset, length, access), &buffer, return (void *)) /* 1996 */ GL_PROC(void *, gl, MapTexture2DINTEL, glMapTexture2DINTEL, MAPTEXTURE2DINTEL, (AND GLuint texture, GLint level, GLbitfield access, const GLint *stride, const GLenum *layout), (texture, level, access, stride, layout), &texture, return (void *)) /* 1997 */ GL_PROC(void, gl, MapVertexAttrib1dAPPLE, glMapVertexAttrib1dAPPLE, MAPVERTEXATTRIB1DAPPLE, (AND GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points), (index, size, u1, u2, stride, order, points), &index, GL_void_return) /* 1998 */ GL_PROC(void, gl, MapVertexAttrib1fAPPLE, glMapVertexAttrib1fAPPLE, MAPVERTEXATTRIB1FAPPLE, (AND GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points), (index, size, u1, u2, stride, order, points), &index, GL_void_return) /* 1999 */ GL_PROC(void, gl, MapVertexAttrib2dAPPLE, glMapVertexAttrib2dAPPLE, MAPVERTEXATTRIB2DAPPLE, (AND GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points), (index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &index, GL_void_return) /* 2000 */ GL_PROC(void, gl, MapVertexAttrib2fAPPLE, glMapVertexAttrib2fAPPLE, MAPVERTEXATTRIB2FAPPLE, (AND GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points), (index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), &index, GL_void_return) /* 2001 */ GL_PROC(void, gl, MaterialxOES, glMaterialxOES, MATERIALXOES, (AND GLenum face, GLenum pname, GLfixed param), (face, pname, param), &face, GL_void_return) /* 2002 */ GL_PROC(void, gl, MaterialxvOES, glMaterialxvOES, MATERIALXVOES, (AND GLenum face, GLenum pname, const GLfixed *param), (face, pname, param), &face, GL_void_return) /* 2003 */ GL_PROC(void, gl, MatrixFrustumEXT, glMatrixFrustumEXT, MATRIXFRUSTUMEXT, (AND GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (mode, left, right, bottom, top, zNear, zFar), &mode, GL_void_return) /* 2004 */ GL_PROC(void, gl, MatrixLoadIdentityEXT, glMatrixLoadIdentityEXT, MATRIXLOADIDENTITYEXT, (AND GLenum mode), (mode), &mode, GL_void_return) /* 2005 */ GL_PROC(void, gl, MatrixLoadTransposedEXT, glMatrixLoadTransposedEXT, MATRIXLOADTRANSPOSEDEXT, (AND GLenum mode, const GLdouble *m), (mode, m), &mode, GL_void_return) /* 2006 */ GL_PROC(void, gl, MatrixLoadTransposefEXT, glMatrixLoadTransposefEXT, MATRIXLOADTRANSPOSEFEXT, (AND GLenum mode, const GLfloat *m), (mode, m), &mode, GL_void_return) /* 2007 */ GL_PROC(void, gl, MatrixLoaddEXT, glMatrixLoaddEXT, MATRIXLOADDEXT, (AND GLenum mode, const GLdouble *m), (mode, m), &mode, GL_void_return) /* 2008 */ GL_PROC(void, gl, MatrixLoadfEXT, glMatrixLoadfEXT, MATRIXLOADFEXT, (AND GLenum mode, const GLfloat *m), (mode, m), &mode, GL_void_return) /* 2009 */ GL_PROC(void, gl, MatrixMultTransposedEXT, glMatrixMultTransposedEXT, MATRIXMULTTRANSPOSEDEXT, (AND GLenum mode, const GLdouble *m), (mode, m), &mode, GL_void_return) /* 2010 */ GL_PROC(void, gl, MatrixMultTransposefEXT, glMatrixMultTransposefEXT, MATRIXMULTTRANSPOSEFEXT, (AND GLenum mode, const GLfloat *m), (mode, m), &mode, GL_void_return) /* 2011 */ GL_PROC(void, gl, MatrixMultdEXT, glMatrixMultdEXT, MATRIXMULTDEXT, (AND GLenum mode, const GLdouble *m), (mode, m), &mode, GL_void_return) /* 2012 */ GL_PROC(void, gl, MatrixMultfEXT, glMatrixMultfEXT, MATRIXMULTFEXT, (AND GLenum mode, const GLfloat *m), (mode, m), &mode, GL_void_return) /* 2013 */ GL_PROC(void, gl, MatrixOrthoEXT, glMatrixOrthoEXT, MATRIXORTHOEXT, (AND GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (mode, left, right, bottom, top, zNear, zFar), &mode, GL_void_return) /* 2014 */ GL_PROC(void, gl, MatrixPopEXT, glMatrixPopEXT, MATRIXPOPEXT, (AND GLenum mode), (mode), &mode, GL_void_return) /* 2015 */ GL_PROC(void, gl, MatrixPushEXT, glMatrixPushEXT, MATRIXPUSHEXT, (AND GLenum mode), (mode), &mode, GL_void_return) /* 2016 */ GL_PROC(void, gl, MatrixRotatedEXT, glMatrixRotatedEXT, MATRIXROTATEDEXT, (AND GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z), (mode, angle, x, y, z), &mode, GL_void_return) /* 2017 */ GL_PROC(void, gl, MatrixRotatefEXT, glMatrixRotatefEXT, MATRIXROTATEFEXT, (AND GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z), (mode, angle, x, y, z), &mode, GL_void_return) /* 2018 */ GL_PROC(void, gl, MatrixScaledEXT, glMatrixScaledEXT, MATRIXSCALEDEXT, (AND GLenum mode, GLdouble x, GLdouble y, GLdouble z), (mode, x, y, z), &mode, GL_void_return) /* 2019 */ GL_PROC(void, gl, MatrixScalefEXT, glMatrixScalefEXT, MATRIXSCALEFEXT, (AND GLenum mode, GLfloat x, GLfloat y, GLfloat z), (mode, x, y, z), &mode, GL_void_return) /* 2020 */ GL_PROC(void, gl, MatrixTranslatedEXT, glMatrixTranslatedEXT, MATRIXTRANSLATEDEXT, (AND GLenum mode, GLdouble x, GLdouble y, GLdouble z), (mode, x, y, z), &mode, GL_void_return) /* 2021 */ GL_PROC(void, gl, MatrixTranslatefEXT, glMatrixTranslatefEXT, MATRIXTRANSLATEFEXT, (AND GLenum mode, GLfloat x, GLfloat y, GLfloat z), (mode, x, y, z), &mode, GL_void_return) /* 2022 */ GL_PROC(void, gl, MemoryBarrier, glMemoryBarrier, MEMORYBARRIER, (AND GLbitfield barriers), (barriers), &barriers, GL_void_return) /* 2023 */ GL_PROC(void, gl, MemoryBarrierEXT, glMemoryBarrierEXT, MEMORYBARRIEREXT, (AND GLbitfield barriers), (barriers), &barriers, GL_void_return) /* 2024 */ GL_PROC(void, gl, MinSampleShading, glMinSampleShading, MINSAMPLESHADING, (AND GLfloat value), (value), &value, GL_void_return) /* 2025 */ GL_PROC(void, gl, MinSampleShadingARB, glMinSampleShadingARB, MINSAMPLESHADINGARB, (AND GLfloat value), (value), &value, GL_void_return) /* 2026 */ GL_PROC(void, gl, MultMatrixxOES, glMultMatrixxOES, MULTMATRIXXOES, (AND const GLfixed *m), (m), &m, GL_void_return) /* 2027 */ GL_PROC(void, gl, MultTransposeMatrixxOES, glMultTransposeMatrixxOES, MULTTRANSPOSEMATRIXXOES, (AND const GLfixed *m), (m), &m, GL_void_return) /* 2028 */ GL_PROC(void, gl, MultiDrawArraysIndirect, glMultiDrawArraysIndirect, MULTIDRAWARRAYSINDIRECT, (AND GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride), (mode, indirect, drawcount, stride), &mode, GL_void_return) /* 2029 */ GL_PROC(void, gl, MultiDrawArraysIndirectAMD, glMultiDrawArraysIndirectAMD, MULTIDRAWARRAYSINDIRECTAMD, (AND GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride), (mode, indirect, primcount, stride), &mode, GL_void_return) /* 2030 */ GL_PROC(void, gl, MultiDrawArraysIndirectBindlessNV, glMultiDrawArraysIndirectBindlessNV, MULTIDRAWARRAYSINDIRECTBINDLESSNV, (AND GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount), (mode, indirect, drawCount, stride, vertexBufferCount), &mode, GL_void_return) /* 2031 */ GL_PROC(void, gl, MultiDrawArraysIndirectCountARB, glMultiDrawArraysIndirectCountARB, MULTIDRAWARRAYSINDIRECTCOUNTARB, (AND GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride), (mode, indirect, drawcount, maxdrawcount, stride), &mode, GL_void_return) /* 2032 */ GL_PROC(void, gl, MultiDrawElementsBaseVertex, glMultiDrawElementsBaseVertex, MULTIDRAWELEMENTSBASEVERTEX, (AND GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex), (mode, count, type, indices, drawcount, basevertex), &mode, GL_void_return) /* 2033 */ GL_PROC(void, gl, MultiDrawElementsIndirect, glMultiDrawElementsIndirect, MULTIDRAWELEMENTSINDIRECT, (AND GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride), (mode, type, indirect, drawcount, stride), &mode, GL_void_return) /* 2034 */ GL_PROC(void, gl, MultiDrawElementsIndirectAMD, glMultiDrawElementsIndirectAMD, MULTIDRAWELEMENTSINDIRECTAMD, (AND GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride), (mode, type, indirect, primcount, stride), &mode, GL_void_return) /* 2035 */ GL_PROC(void, gl, MultiDrawElementsIndirectBindlessNV, glMultiDrawElementsIndirectBindlessNV, MULTIDRAWELEMENTSINDIRECTBINDLESSNV, (AND GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount), (mode, type, indirect, drawCount, stride, vertexBufferCount), &mode, GL_void_return) /* 2036 */ GL_PROC(void, gl, MultiDrawElementsIndirectCountARB, glMultiDrawElementsIndirectCountARB, MULTIDRAWELEMENTSINDIRECTCOUNTARB, (AND GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride), (mode, type, indirect, drawcount, maxdrawcount, stride), &mode, GL_void_return) /* 2037 */ GL_PROC(void, gl, MultiTexBufferEXT, glMultiTexBufferEXT, MULTITEXBUFFEREXT, (AND GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer), (texunit, target, internalformat, buffer), &texunit, GL_void_return) /* 2038 */ GL_PROC(void, gl, MultiTexCoord1bOES, glMultiTexCoord1bOES, MULTITEXCOORD1BOES, (AND GLenum texture, GLbyte32 s), (texture, s), &texture, GL_void_return) /* 2039 */ GL_PROC(void, gl, MultiTexCoord1bvOES, glMultiTexCoord1bvOES, MULTITEXCOORD1BVOES, (AND GLenum texture, const GLbyte *coords), (texture, coords), &texture, GL_void_return) /* 2040 */ GL_PROC(void, gl, MultiTexCoord1xOES, glMultiTexCoord1xOES, MULTITEXCOORD1XOES, (AND GLenum texture, GLfixed s), (texture, s), &texture, GL_void_return) /* 2041 */ GL_PROC(void, gl, MultiTexCoord1xvOES, glMultiTexCoord1xvOES, MULTITEXCOORD1XVOES, (AND GLenum texture, const GLfixed *coords), (texture, coords), &texture, GL_void_return) /* 2042 */ GL_PROC(void, gl, MultiTexCoord2bOES, glMultiTexCoord2bOES, MULTITEXCOORD2BOES, (AND GLenum texture, GLbyte32 s, GLbyte32 t), (texture, s, t), &texture, GL_void_return) /* 2043 */ GL_PROC(void, gl, MultiTexCoord2bvOES, glMultiTexCoord2bvOES, MULTITEXCOORD2BVOES, (AND GLenum texture, const GLbyte *coords), (texture, coords), &texture, GL_void_return) /* 2044 */ GL_PROC(void, gl, MultiTexCoord2xOES, glMultiTexCoord2xOES, MULTITEXCOORD2XOES, (AND GLenum texture, GLfixed s, GLfixed t), (texture, s, t), &texture, GL_void_return) /* 2045 */ GL_PROC(void, gl, MultiTexCoord2xvOES, glMultiTexCoord2xvOES, MULTITEXCOORD2XVOES, (AND GLenum texture, const GLfixed *coords), (texture, coords), &texture, GL_void_return) /* 2046 */ GL_PROC(void, gl, MultiTexCoord3bOES, glMultiTexCoord3bOES, MULTITEXCOORD3BOES, (AND GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r), (texture, s, t, r), &texture, GL_void_return) /* 2047 */ GL_PROC(void, gl, MultiTexCoord3bvOES, glMultiTexCoord3bvOES, MULTITEXCOORD3BVOES, (AND GLenum texture, const GLbyte *coords), (texture, coords), &texture, GL_void_return) /* 2048 */ GL_PROC(void, gl, MultiTexCoord3xOES, glMultiTexCoord3xOES, MULTITEXCOORD3XOES, (AND GLenum texture, GLfixed s, GLfixed t, GLfixed r), (texture, s, t, r), &texture, GL_void_return) /* 2049 */ GL_PROC(void, gl, MultiTexCoord3xvOES, glMultiTexCoord3xvOES, MULTITEXCOORD3XVOES, (AND GLenum texture, const GLfixed *coords), (texture, coords), &texture, GL_void_return) /* 2050 */ GL_PROC(void, gl, MultiTexCoord4bOES, glMultiTexCoord4bOES, MULTITEXCOORD4BOES, (AND GLenum texture, GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q), (texture, s, t, r, q), &texture, GL_void_return) /* 2051 */ GL_PROC(void, gl, MultiTexCoord4bvOES, glMultiTexCoord4bvOES, MULTITEXCOORD4BVOES, (AND GLenum texture, const GLbyte *coords), (texture, coords), &texture, GL_void_return) /* 2052 */ GL_PROC(void, gl, MultiTexCoord4xOES, glMultiTexCoord4xOES, MULTITEXCOORD4XOES, (AND GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q), (texture, s, t, r, q), &texture, GL_void_return) /* 2053 */ GL_PROC(void, gl, MultiTexCoord4xvOES, glMultiTexCoord4xvOES, MULTITEXCOORD4XVOES, (AND GLenum texture, const GLfixed *coords), (texture, coords), &texture, GL_void_return) /* 2054 */ GL_PROC(void, gl, MultiTexCoordP1ui, glMultiTexCoordP1ui, MULTITEXCOORDP1UI, (AND GLenum texture, GLenum type, GLuint coords), (texture, type, coords), &texture, GL_void_return) /* 2055 */ GL_PROC(void, gl, MultiTexCoordP1uiv, glMultiTexCoordP1uiv, MULTITEXCOORDP1UIV, (AND GLenum texture, GLenum type, const GLuint *coords), (texture, type, coords), &texture, GL_void_return) /* 2056 */ GL_PROC(void, gl, MultiTexCoordP2ui, glMultiTexCoordP2ui, MULTITEXCOORDP2UI, (AND GLenum texture, GLenum type, GLuint coords), (texture, type, coords), &texture, GL_void_return) /* 2057 */ GL_PROC(void, gl, MultiTexCoordP2uiv, glMultiTexCoordP2uiv, MULTITEXCOORDP2UIV, (AND GLenum texture, GLenum type, const GLuint *coords), (texture, type, coords), &texture, GL_void_return) /* 2058 */ GL_PROC(void, gl, MultiTexCoordP3ui, glMultiTexCoordP3ui, MULTITEXCOORDP3UI, (AND GLenum texture, GLenum type, GLuint coords), (texture, type, coords), &texture, GL_void_return) /* 2059 */ GL_PROC(void, gl, MultiTexCoordP3uiv, glMultiTexCoordP3uiv, MULTITEXCOORDP3UIV, (AND GLenum texture, GLenum type, const GLuint *coords), (texture, type, coords), &texture, GL_void_return) /* 2060 */ GL_PROC(void, gl, MultiTexCoordP4ui, glMultiTexCoordP4ui, MULTITEXCOORDP4UI, (AND GLenum texture, GLenum type, GLuint coords), (texture, type, coords), &texture, GL_void_return) /* 2061 */ GL_PROC(void, gl, MultiTexCoordP4uiv, glMultiTexCoordP4uiv, MULTITEXCOORDP4UIV, (AND GLenum texture, GLenum type, const GLuint *coords), (texture, type, coords), &texture, GL_void_return) /* 2062 */ GL_PROC(void, gl, MultiTexCoordPointerEXT, glMultiTexCoordPointerEXT, MULTITEXCOORDPOINTEREXT, (AND GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer), (texunit, size, type, stride, pointer), &texunit, GL_void_return) /* 2063 */ GL_PROC(void, gl, MultiTexEnvfEXT, glMultiTexEnvfEXT, MULTITEXENVFEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLfloat param), (texunit, target, pname, param), &texunit, GL_void_return) /* 2064 */ GL_PROC(void, gl, MultiTexEnvfvEXT, glMultiTexEnvfvEXT, MULTITEXENVFVEXT, (AND GLenum texunit, GLenum target, GLenum pname, const GLfloat *params), (texunit, target, pname, params), &texunit, GL_void_return) /* 2065 */ GL_PROC(void, gl, MultiTexEnviEXT, glMultiTexEnviEXT, MULTITEXENVIEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLint param), (texunit, target, pname, param), &texunit, GL_void_return) /* 2066 */ GL_PROC(void, gl, MultiTexEnvivEXT, glMultiTexEnvivEXT, MULTITEXENVIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, const GLint *params), (texunit, target, pname, params), &texunit, GL_void_return) /* 2067 */ GL_PROC(void, gl, MultiTexGendEXT, glMultiTexGendEXT, MULTITEXGENDEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLdouble param), (texunit, coord, pname, param), &texunit, GL_void_return) /* 2068 */ GL_PROC(void, gl, MultiTexGendvEXT, glMultiTexGendvEXT, MULTITEXGENDVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params), (texunit, coord, pname, params), &texunit, GL_void_return) /* 2069 */ GL_PROC(void, gl, MultiTexGenfEXT, glMultiTexGenfEXT, MULTITEXGENFEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLfloat param), (texunit, coord, pname, param), &texunit, GL_void_return) /* 2070 */ GL_PROC(void, gl, MultiTexGenfvEXT, glMultiTexGenfvEXT, MULTITEXGENFVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params), (texunit, coord, pname, params), &texunit, GL_void_return) /* 2071 */ GL_PROC(void, gl, MultiTexGeniEXT, glMultiTexGeniEXT, MULTITEXGENIEXT, (AND GLenum texunit, GLenum coord, GLenum pname, GLint param), (texunit, coord, pname, param), &texunit, GL_void_return) /* 2072 */ GL_PROC(void, gl, MultiTexGenivEXT, glMultiTexGenivEXT, MULTITEXGENIVEXT, (AND GLenum texunit, GLenum coord, GLenum pname, const GLint *params), (texunit, coord, pname, params), &texunit, GL_void_return) /* 2073 */ GL_PROC(void, gl, MultiTexImage1DEXT, glMultiTexImage1DEXT, MULTITEXIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels), (texunit, target, level, internalformat, width, border, format, type, pixels), &texunit, GL_void_return) /* 2074 */ GL_PROC(void, gl, MultiTexImage2DEXT, glMultiTexImage2DEXT, MULTITEXIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels), (texunit, target, level, internalformat, width, height, border, format, type, pixels), &texunit, GL_void_return) /* 2075 */ GL_PROC(void, gl, MultiTexImage3DEXT, glMultiTexImage3DEXT, MULTITEXIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels), (texunit, target, level, internalformat, width, height, depth, border, format, type, pixels), &texunit, GL_void_return) /* 2076 */ GL_PROC(void, gl, MultiTexParameterIivEXT, glMultiTexParameterIivEXT, MULTITEXPARAMETERIIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, const GLint *params), (texunit, target, pname, params), &texunit, GL_void_return) /* 2077 */ GL_PROC(void, gl, MultiTexParameterIuivEXT, glMultiTexParameterIuivEXT, MULTITEXPARAMETERIUIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, const GLuint *params), (texunit, target, pname, params), &texunit, GL_void_return) /* 2078 */ GL_PROC(void, gl, MultiTexParameterfEXT, glMultiTexParameterfEXT, MULTITEXPARAMETERFEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLfloat param), (texunit, target, pname, param), &texunit, GL_void_return) /* 2079 */ GL_PROC(void, gl, MultiTexParameterfvEXT, glMultiTexParameterfvEXT, MULTITEXPARAMETERFVEXT, (AND GLenum texunit, GLenum target, GLenum pname, const GLfloat *params), (texunit, target, pname, params), &texunit, GL_void_return) /* 2080 */ GL_PROC(void, gl, MultiTexParameteriEXT, glMultiTexParameteriEXT, MULTITEXPARAMETERIEXT, (AND GLenum texunit, GLenum target, GLenum pname, GLint param), (texunit, target, pname, param), &texunit, GL_void_return) /* 2081 */ GL_PROC(void, gl, MultiTexParameterivEXT, glMultiTexParameterivEXT, MULTITEXPARAMETERIVEXT, (AND GLenum texunit, GLenum target, GLenum pname, const GLint *params), (texunit, target, pname, params), &texunit, GL_void_return) /* 2082 */ GL_PROC(void, gl, MultiTexRenderbufferEXT, glMultiTexRenderbufferEXT, MULTITEXRENDERBUFFEREXT, (AND GLenum texunit, GLenum target, GLuint renderbuffer), (texunit, target, renderbuffer), &texunit, GL_void_return) /* 2083 */ GL_PROC(void, gl, MultiTexSubImage1DEXT, glMultiTexSubImage1DEXT, MULTITEXSUBIMAGE1DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels), (texunit, target, level, xoffset, width, format, type, pixels), &texunit, GL_void_return) /* 2084 */ GL_PROC(void, gl, MultiTexSubImage2DEXT, glMultiTexSubImage2DEXT, MULTITEXSUBIMAGE2DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels), (texunit, target, level, xoffset, yoffset, width, height, format, type, pixels), &texunit, GL_void_return) /* 2085 */ GL_PROC(void, gl, MultiTexSubImage3DEXT, glMultiTexSubImage3DEXT, MULTITEXSUBIMAGE3DEXT, (AND GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels), (texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &texunit, GL_void_return) /* 2086 */ GL_PROC(void, gl, NamedBufferDataEXT, glNamedBufferDataEXT, NAMEDBUFFERDATAEXT, (AND GLuint buffer, GLsizeiptr size, const void *data, GLenum usage), (buffer, size, data, usage), &buffer, GL_void_return) /* 2087 */ GL_PROC(void, gl, NamedBufferStorageEXT, glNamedBufferStorageEXT, NAMEDBUFFERSTORAGEEXT, (AND GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags), (buffer, size, data, flags), &buffer, GL_void_return) /* 2088 */ GL_PROC(void, gl, NamedBufferSubDataEXT, glNamedBufferSubDataEXT, NAMEDBUFFERSUBDATAEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data), (buffer, offset, size, data), &buffer, GL_void_return) /* 2089 */ GL_PROC(void, gl, NamedCopyBufferSubDataEXT, glNamedCopyBufferSubDataEXT, NAMEDCOPYBUFFERSUBDATAEXT, (AND GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size), (readBuffer, writeBuffer, readOffset, writeOffset, size), &readBuffer, GL_void_return) /* 2090 */ GL_PROC(void, gl, NamedFramebufferParameteriEXT, glNamedFramebufferParameteriEXT, NAMEDFRAMEBUFFERPARAMETERIEXT, (AND GLuint framebuffer, GLenum pname, GLint param), (framebuffer, pname, param), &framebuffer, GL_void_return) /* 2091 */ GL_PROC(void, gl, NamedFramebufferRenderbufferEXT, glNamedFramebufferRenderbufferEXT, NAMEDFRAMEBUFFERRENDERBUFFEREXT, (AND GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (framebuffer, attachment, renderbuffertarget, renderbuffer), &framebuffer, GL_void_return) /* 2092 */ GL_PROC(void, gl, NamedFramebufferTexture1DEXT, glNamedFramebufferTexture1DEXT, NAMEDFRAMEBUFFERTEXTURE1DEXT, (AND GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (framebuffer, attachment, textarget, texture, level), &framebuffer, GL_void_return) /* 2093 */ GL_PROC(void, gl, NamedFramebufferTexture2DEXT, glNamedFramebufferTexture2DEXT, NAMEDFRAMEBUFFERTEXTURE2DEXT, (AND GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (framebuffer, attachment, textarget, texture, level), &framebuffer, GL_void_return) /* 2094 */ GL_PROC(void, gl, NamedFramebufferTexture3DEXT, glNamedFramebufferTexture3DEXT, NAMEDFRAMEBUFFERTEXTURE3DEXT, (AND GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset), (framebuffer, attachment, textarget, texture, level, zoffset), &framebuffer, GL_void_return) /* 2095 */ GL_PROC(void, gl, NamedFramebufferTextureEXT, glNamedFramebufferTextureEXT, NAMEDFRAMEBUFFERTEXTUREEXT, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level), (framebuffer, attachment, texture, level), &framebuffer, GL_void_return) /* 2096 */ GL_PROC(void, gl, NamedFramebufferTextureFaceEXT, glNamedFramebufferTextureFaceEXT, NAMEDFRAMEBUFFERTEXTUREFACEEXT, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face), (framebuffer, attachment, texture, level, face), &framebuffer, GL_void_return) /* 2097 */ GL_PROC(void, gl, NamedFramebufferTextureLayerEXT, glNamedFramebufferTextureLayerEXT, NAMEDFRAMEBUFFERTEXTURELAYEREXT, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer), (framebuffer, attachment, texture, level, layer), &framebuffer, GL_void_return) /* 2098 */ GL_PROC(void, gl, NamedProgramLocalParameter4dEXT, glNamedProgramLocalParameter4dEXT, NAMEDPROGRAMLOCALPARAMETER4DEXT, (AND GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (program, target, index, x, y, z, w), &program, GL_void_return) /* 2099 */ GL_PROC(void, gl, NamedProgramLocalParameter4dvEXT, glNamedProgramLocalParameter4dvEXT, NAMEDPROGRAMLOCALPARAMETER4DVEXT, (AND GLuint program, GLenum target, GLuint index, const GLdouble *params), (program, target, index, params), &program, GL_void_return) /* 2100 */ GL_PROC(void, gl, NamedProgramLocalParameter4fEXT, glNamedProgramLocalParameter4fEXT, NAMEDPROGRAMLOCALPARAMETER4FEXT, (AND GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (program, target, index, x, y, z, w), &program, GL_void_return) /* 2101 */ GL_PROC(void, gl, NamedProgramLocalParameter4fvEXT, glNamedProgramLocalParameter4fvEXT, NAMEDPROGRAMLOCALPARAMETER4FVEXT, (AND GLuint program, GLenum target, GLuint index, const GLfloat *params), (program, target, index, params), &program, GL_void_return) /* 2102 */ GL_PROC(void, gl, NamedProgramLocalParameterI4iEXT, glNamedProgramLocalParameterI4iEXT, NAMEDPROGRAMLOCALPARAMETERI4IEXT, (AND GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w), (program, target, index, x, y, z, w), &program, GL_void_return) /* 2103 */ GL_PROC(void, gl, NamedProgramLocalParameterI4ivEXT, glNamedProgramLocalParameterI4ivEXT, NAMEDPROGRAMLOCALPARAMETERI4IVEXT, (AND GLuint program, GLenum target, GLuint index, const GLint *params), (program, target, index, params), &program, GL_void_return) /* 2104 */ GL_PROC(void, gl, NamedProgramLocalParameterI4uiEXT, glNamedProgramLocalParameterI4uiEXT, NAMEDPROGRAMLOCALPARAMETERI4UIEXT, (AND GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (program, target, index, x, y, z, w), &program, GL_void_return) /* 2105 */ GL_PROC(void, gl, NamedProgramLocalParameterI4uivEXT, glNamedProgramLocalParameterI4uivEXT, NAMEDPROGRAMLOCALPARAMETERI4UIVEXT, (AND GLuint program, GLenum target, GLuint index, const GLuint *params), (program, target, index, params), &program, GL_void_return) /* 2106 */ GL_PROC(void, gl, NamedProgramLocalParameters4fvEXT, glNamedProgramLocalParameters4fvEXT, NAMEDPROGRAMLOCALPARAMETERS4FVEXT, (AND GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params), (program, target, index, count, params), &program, GL_void_return) /* 2107 */ GL_PROC(void, gl, NamedProgramLocalParametersI4ivEXT, glNamedProgramLocalParametersI4ivEXT, NAMEDPROGRAMLOCALPARAMETERSI4IVEXT, (AND GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params), (program, target, index, count, params), &program, GL_void_return) /* 2108 */ GL_PROC(void, gl, NamedProgramLocalParametersI4uivEXT, glNamedProgramLocalParametersI4uivEXT, NAMEDPROGRAMLOCALPARAMETERSI4UIVEXT, (AND GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params), (program, target, index, count, params), &program, GL_void_return) /* 2109 */ GL_PROC(void, gl, NamedProgramStringEXT, glNamedProgramStringEXT, NAMEDPROGRAMSTRINGEXT, (AND GLuint program, GLenum target, GLenum format, GLsizei len, const void *string), (program, target, format, len, string), &program, GL_void_return) /* 2110 */ GL_PROC(void, gl, NamedRenderbufferStorageEXT, glNamedRenderbufferStorageEXT, NAMEDRENDERBUFFERSTORAGEEXT, (AND GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, internalformat, width, height), &renderbuffer, GL_void_return) /* 2111 */ GL_PROC(void, gl, NamedRenderbufferStorageMultisampleCoverageEXT, glNamedRenderbufferStorageMultisampleCoverageEXT, NAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXT, (AND GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, coverageSamples, colorSamples, internalformat, width, height), &renderbuffer, GL_void_return) /* 2112 */ GL_PROC(void, gl, NamedRenderbufferStorageMultisampleEXT, glNamedRenderbufferStorageMultisampleEXT, NAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXT, (AND GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, samples, internalformat, width, height), &renderbuffer, GL_void_return) /* 2113 */ GL_PROC(void, gl, NamedStringARB, glNamedStringARB, NAMEDSTRINGARB, (AND GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string), (type, namelen, name, stringlen, string), &type, GL_void_return) /* 2114 */ GL_PROC(void, gl, Normal3xOES, glNormal3xOES, NORMAL3XOES, (AND GLfixed nx, GLfixed ny, GLfixed nz), (nx, ny, nz), &nx, GL_void_return) /* 2115 */ GL_PROC(void, gl, Normal3xvOES, glNormal3xvOES, NORMAL3XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) /* 2116 */ GL_PROC(void, gl, NormalFormatNV, glNormalFormatNV, NORMALFORMATNV, (AND GLenum type, GLsizei stride), (type, stride), &type, GL_void_return) /* 2117 */ GL_PROC(void, gl, NormalP3ui, glNormalP3ui, NORMALP3UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) /* 2118 */ GL_PROC(void, gl, NormalP3uiv, glNormalP3uiv, NORMALP3UIV, (AND GLenum type, const GLuint *coords), (type, coords), &type, GL_void_return) /* 2119 */ GL_PROC(void, gl, ObjectLabel, glObjectLabel, OBJECTLABEL, (AND GLenum identifier, GLuint name, GLsizei length, const GLchar *label), (identifier, name, length, label), &identifier, GL_void_return) /* 2120 */ GL_PROC(void, gl, ObjectPtrLabel, glObjectPtrLabel, OBJECTPTRLABEL, (AND const void *ptr, GLsizei length, const GLchar *label), (ptr, length, label), &ptr, GL_void_return) /* 2121 */ GL_PROC(GLenum, gl, ObjectPurgeableAPPLE, glObjectPurgeableAPPLE, OBJECTPURGEABLEAPPLE, (AND GLenum objectType, GLuint name, GLenum option), (objectType, name, option), &objectType, return (GLenum)) /* 2122 */ GL_PROC(GLenum, gl, ObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, OBJECTUNPURGEABLEAPPLE, (AND GLenum objectType, GLuint name, GLenum option), (objectType, name, option), &objectType, return (GLenum)) /* 2123 */ GL_PROC(void, gl, OrthofOES, glOrthofOES, ORTHOFOES, (AND GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f), (l, r, b, t, n, f), &l, GL_void_return) /* 2124 */ GL_PROC(void, gl, OrthoxOES, glOrthoxOES, ORTHOXOES, (AND GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f), (l, r, b, t, n, f), &l, GL_void_return) /* 2125 */ GL_PROC(void, gl, PassThroughxOES, glPassThroughxOES, PASSTHROUGHXOES, (AND GLfixed token), (token), &token, GL_void_return) /* 2126 */ GL_PROC(void, gl, PatchParameterfv, glPatchParameterfv, PATCHPARAMETERFV, (AND GLenum pname, const GLfloat *values), (pname, values), &pname, GL_void_return) /* 2127 */ GL_PROC(void, gl, PatchParameteri, glPatchParameteri, PATCHPARAMETERI, (AND GLenum pname, GLint value), (pname, value), &pname, GL_void_return) /* 2128 */ GL_PROC(void, gl, PathColorGenNV, glPathColorGenNV, PATHCOLORGENNV, (AND GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs), (color, genMode, colorFormat, coeffs), &color, GL_void_return) /* 2129 */ GL_PROC(void, gl, PathCommandsNV, glPathCommandsNV, PATHCOMMANDSNV, (AND GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords), (path, numCommands, commands, numCoords, coordType, coords), &path, GL_void_return) /* 2130 */ GL_PROC(void, gl, PathCoordsNV, glPathCoordsNV, PATHCOORDSNV, (AND GLuint path, GLsizei numCoords, GLenum coordType, const void *coords), (path, numCoords, coordType, coords), &path, GL_void_return) /* 2131 */ GL_PROC(void, gl, PathCoverDepthFuncNV, glPathCoverDepthFuncNV, PATHCOVERDEPTHFUNCNV, (AND GLenum func), (func), &func, GL_void_return) /* 2132 */ GL_PROC(void, gl, PathDashArrayNV, glPathDashArrayNV, PATHDASHARRAYNV, (AND GLuint path, GLsizei dashCount, const GLfloat *dashArray), (path, dashCount, dashArray), &path, GL_void_return) /* 2133 */ GL_PROC(void, gl, PathFogGenNV, glPathFogGenNV, PATHFOGGENNV, (AND GLenum genMode), (genMode), &genMode, GL_void_return) /* 2134 */ GL_PROC(void, gl, PathGlyphRangeNV, glPathGlyphRangeNV, PATHGLYPHRANGENV, (AND GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale), (firstPathName, fontTarget, fontName, fontStyle, firstGlyph, numGlyphs, handleMissingGlyphs, pathParameterTemplate, emScale), &firstPathName, GL_void_return) /* 2135 */ GL_PROC(void, gl, PathGlyphsNV, glPathGlyphsNV, PATHGLYPHSNV, (AND GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale), (firstPathName, fontTarget, fontName, fontStyle, numGlyphs, type, charcodes, handleMissingGlyphs, pathParameterTemplate, emScale), &firstPathName, GL_void_return) /* 2136 */ GL_PROC(void, gl, PathParameterfNV, glPathParameterfNV, PATHPARAMETERFNV, (AND GLuint path, GLenum pname, GLfloat value), (path, pname, value), &path, GL_void_return) /* 2137 */ GL_PROC(void, gl, PathParameterfvNV, glPathParameterfvNV, PATHPARAMETERFVNV, (AND GLuint path, GLenum pname, const GLfloat *value), (path, pname, value), &path, GL_void_return) /* 2138 */ GL_PROC(void, gl, PathParameteriNV, glPathParameteriNV, PATHPARAMETERINV, (AND GLuint path, GLenum pname, GLint value), (path, pname, value), &path, GL_void_return) /* 2139 */ GL_PROC(void, gl, PathParameterivNV, glPathParameterivNV, PATHPARAMETERIVNV, (AND GLuint path, GLenum pname, const GLint *value), (path, pname, value), &path, GL_void_return) /* 2140 */ GL_PROC(void, gl, PathStencilDepthOffsetNV, glPathStencilDepthOffsetNV, PATHSTENCILDEPTHOFFSETNV, (AND GLfloat factor, GLfloat units), (factor, units), &factor, GL_void_return) /* 2141 */ GL_PROC(void, gl, PathStencilFuncNV, glPathStencilFuncNV, PATHSTENCILFUNCNV, (AND GLenum func, GLint ref, GLuint mask), (func, ref, mask), &func, GL_void_return) /* 2142 */ GL_PROC(void, gl, PathStringNV, glPathStringNV, PATHSTRINGNV, (AND GLuint path, GLenum format, GLsizei length, const void *pathString), (path, format, length, pathString), &path, GL_void_return) /* 2143 */ GL_PROC(void, gl, PathSubCommandsNV, glPathSubCommandsNV, PATHSUBCOMMANDSNV, (AND GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords), (path, commandStart, commandsToDelete, numCommands, commands, numCoords, coordType, coords), &path, GL_void_return) /* 2144 */ GL_PROC(void, gl, PathSubCoordsNV, glPathSubCoordsNV, PATHSUBCOORDSNV, (AND GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords), (path, coordStart, numCoords, coordType, coords), &path, GL_void_return) /* 2145 */ GL_PROC(void, gl, PathTexGenNV, glPathTexGenNV, PATHTEXGENNV, (AND GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs), (texCoordSet, genMode, components, coeffs), &texCoordSet, GL_void_return) /* 2146 */ GL_PROC(void, gl, PauseTransformFeedback, glPauseTransformFeedback, PAUSETRANSFORMFEEDBACK, (NOTHING), (), NULL, GL_void_return) /* 2147 */ GL_PROC(void, gl, PauseTransformFeedbackNV, glPauseTransformFeedbackNV, PAUSETRANSFORMFEEDBACKNV, (NOTHING), (), NULL, GL_void_return) /* 2148 */ GL_PROC(void, gl, PixelMapx, glPixelMapx, PIXELMAPX, (AND GLenum map, GLint size, const GLfixed *values), (map, size, values), &map, GL_void_return) /* 2149 */ GL_PROC(void, gl, PixelStorex, glPixelStorex, PIXELSTOREX, (AND GLenum pname, GLfixed param), (pname, param), &pname, GL_void_return) /* 2150 */ GL_PROC(void, gl, PixelTransferxOES, glPixelTransferxOES, PIXELTRANSFERXOES, (AND GLenum pname, GLfixed param), (pname, param), &pname, GL_void_return) /* 2151 */ GL_PROC(void, gl, PixelZoomxOES, glPixelZoomxOES, PIXELZOOMXOES, (AND GLfixed xfactor, GLfixed yfactor), (xfactor, yfactor), &xfactor, GL_void_return) /* 2152 */ GL_PROC(GLboolean, gl, PointAlongPathNV, glPointAlongPathNV, POINTALONGPATHNV, (AND GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY), (path, startSegment, numSegments, distance, x, y, tangentX, tangentY), &path, return (GLboolean)) /* 2153 */ GL_PROC(void, gl, PointParameterxvOES, glPointParameterxvOES, POINTPARAMETERXVOES, (AND GLenum pname, const GLfixed *params), (pname, params), &pname, GL_void_return) /* 2154 */ GL_PROC(void, gl, PointSizePointerAPPLE, glPointSizePointerAPPLE, POINTSIZEPOINTERAPPLE, (AND GLenum type, GLsizei stride, const GLvoid *pointer), (type, stride, pointer), &type, GL_void_return) /* 2155 */ GL_PROC(void, gl, PointSizexOES, glPointSizexOES, POINTSIZEXOES, (AND GLfixed size), (size), &size, GL_void_return) /* 2156 */ GL_PROC(void, gl, PolygonOffsetxOES, glPolygonOffsetxOES, POLYGONOFFSETXOES, (AND GLfixed factor, GLfixed units), (factor, units), &factor, GL_void_return) /* 2157 */ GL_PROC(void, gl, PopDebugGroup, glPopDebugGroup, POPDEBUGGROUP, (NOTHING), (), NULL, GL_void_return) /* 2158 */ GL_PROC(void, gl, PopGroupMarkerEXT, glPopGroupMarkerEXT, POPGROUPMARKEREXT, (NOTHING), (), NULL, GL_void_return) /* 2159 */ GL_PROC(void, gl, PresentFrameDualFillNV, glPresentFrameDualFillNV, PRESENTFRAMEDUALFILLNV, (AND GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3), (video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, target1, fill1, target2, fill2, target3, fill3), &video_slot, GL_void_return) /* 2160 */ GL_PROC(void, gl, PresentFrameKeyedNV, glPresentFrameKeyedNV, PRESENTFRAMEKEYEDNV, (AND GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1), (video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, key0, target1, fill1, key1), &video_slot, GL_void_return) /* 2161 */ GL_PROC(void, gl, PrimitiveRestartIndex, glPrimitiveRestartIndex, PRIMITIVERESTARTINDEX, (AND GLuint index), (index), &index, GL_void_return) /* 2162 */ GL_PROC(void, gl, PrioritizeTexturesxOES, glPrioritizeTexturesxOES, PRIORITIZETEXTURESXOES, (AND GLsizei n, const GLuint *textures, const GLfixed *priorities), (n, textures, priorities), &n, GL_void_return) /* 2163 */ GL_PROC(void, gl, ProgramBinary, glProgramBinary, PROGRAMBINARY, (AND GLuint program, GLenum binaryFormat, const void *binary, GLsizei length), (program, binaryFormat, binary, length), &program, GL_void_return) /* 2164 */ GL_PROC(void, gl, ProgramBufferParametersIivNV, glProgramBufferParametersIivNV, PROGRAMBUFFERPARAMETERSIIVNV, (AND GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params), (target, bindingIndex, wordIndex, count, params), &target, GL_void_return) /* 2165 */ GL_PROC(void, gl, ProgramBufferParametersIuivNV, glProgramBufferParametersIuivNV, PROGRAMBUFFERPARAMETERSIUIVNV, (AND GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params), (target, bindingIndex, wordIndex, count, params), &target, GL_void_return) /* 2166 */ GL_PROC(void, gl, ProgramBufferParametersfvNV, glProgramBufferParametersfvNV, PROGRAMBUFFERPARAMETERSFVNV, (AND GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params), (target, bindingIndex, wordIndex, count, params), &target, GL_void_return) /* 2167 */ GL_PROC(void, gl, ProgramCallbackMESA, glProgramCallbackMESA, PROGRAMCALLBACKMESA, (AND GLenum target, GLprogramcallbackMESA callback, GLvoid *data), (target, callback, data), &target, GL_void_return) /* 2168 */ GL_PROC(void, gl, ProgramEnvParameterI4iNV, glProgramEnvParameterI4iNV, PROGRAMENVPARAMETERI4INV, (AND GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w), (target, index, x, y, z, w), &target, GL_void_return) /* 2169 */ GL_PROC(void, gl, ProgramEnvParameterI4ivNV, glProgramEnvParameterI4ivNV, PROGRAMENVPARAMETERI4IVNV, (AND GLenum target, GLuint index, const GLint *params), (target, index, params), &target, GL_void_return) /* 2170 */ GL_PROC(void, gl, ProgramEnvParameterI4uiNV, glProgramEnvParameterI4uiNV, PROGRAMENVPARAMETERI4UINV, (AND GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (target, index, x, y, z, w), &target, GL_void_return) /* 2171 */ GL_PROC(void, gl, ProgramEnvParameterI4uivNV, glProgramEnvParameterI4uivNV, PROGRAMENVPARAMETERI4UIVNV, (AND GLenum target, GLuint index, const GLuint *params), (target, index, params), &target, GL_void_return) /* 2172 */ GL_PROC(void, gl, ProgramEnvParameters4fvEXT, glProgramEnvParameters4fvEXT, PROGRAMENVPARAMETERS4FVEXT, (AND GLenum target, GLuint index, GLsizei count, const GLfloat *params), (target, index, count, params), &target, GL_void_return) /* 2173 */ GL_PROC(void, gl, ProgramEnvParametersI4ivNV, glProgramEnvParametersI4ivNV, PROGRAMENVPARAMETERSI4IVNV, (AND GLenum target, GLuint index, GLsizei count, const GLint *params), (target, index, count, params), &target, GL_void_return) /* 2174 */ GL_PROC(void, gl, ProgramEnvParametersI4uivNV, glProgramEnvParametersI4uivNV, PROGRAMENVPARAMETERSI4UIVNV, (AND GLenum target, GLuint index, GLsizei count, const GLuint *params), (target, index, count, params), &target, GL_void_return) /* 2175 */ GL_PROC(void, gl, ProgramLocalParameterI4iNV, glProgramLocalParameterI4iNV, PROGRAMLOCALPARAMETERI4INV, (AND GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w), (target, index, x, y, z, w), &target, GL_void_return) /* 2176 */ GL_PROC(void, gl, ProgramLocalParameterI4ivNV, glProgramLocalParameterI4ivNV, PROGRAMLOCALPARAMETERI4IVNV, (AND GLenum target, GLuint index, const GLint *params), (target, index, params), &target, GL_void_return) /* 2177 */ GL_PROC(void, gl, ProgramLocalParameterI4uiNV, glProgramLocalParameterI4uiNV, PROGRAMLOCALPARAMETERI4UINV, (AND GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (target, index, x, y, z, w), &target, GL_void_return) /* 2178 */ GL_PROC(void, gl, ProgramLocalParameterI4uivNV, glProgramLocalParameterI4uivNV, PROGRAMLOCALPARAMETERI4UIVNV, (AND GLenum target, GLuint index, const GLuint *params), (target, index, params), &target, GL_void_return) /* 2179 */ GL_PROC(void, gl, ProgramLocalParameters4fvEXT, glProgramLocalParameters4fvEXT, PROGRAMLOCALPARAMETERS4FVEXT, (AND GLenum target, GLuint index, GLsizei count, const GLfloat *params), (target, index, count, params), &target, GL_void_return) /* 2180 */ GL_PROC(void, gl, ProgramLocalParametersI4ivNV, glProgramLocalParametersI4ivNV, PROGRAMLOCALPARAMETERSI4IVNV, (AND GLenum target, GLuint index, GLsizei count, const GLint *params), (target, index, count, params), &target, GL_void_return) /* 2181 */ GL_PROC(void, gl, ProgramLocalParametersI4uivNV, glProgramLocalParametersI4uivNV, PROGRAMLOCALPARAMETERSI4UIVNV, (AND GLenum target, GLuint index, GLsizei count, const GLuint *params), (target, index, count, params), &target, GL_void_return) /* 2182 */ GL_PROC(void, gl, ProgramParameteri, glProgramParameteri, PROGRAMPARAMETERI, (AND GLuint program, GLenum pname, GLint value), (program, pname, value), &program, GL_void_return) /* 2183 */ GL_PROC(void, gl, ProgramParameteriARB, glProgramParameteriARB, PROGRAMPARAMETERIARB, (AND GLuint program, GLenum pname, GLint value), (program, pname, value), &program, GL_void_return) /* 2184 */ GL_PROC(void, gl, ProgramParameteriEXT, glProgramParameteriEXT, PROGRAMPARAMETERIEXT, (AND GLuint program, GLenum pname, GLint value), (program, pname, value), &program, GL_void_return) /* 2185 */ GL_PROC(void, gl, ProgramSubroutineParametersuivNV, glProgramSubroutineParametersuivNV, PROGRAMSUBROUTINEPARAMETERSUIVNV, (AND GLenum target, GLsizei count, const GLuint *params), (target, count, params), &target, GL_void_return) /* 2186 */ GL_PROC(void, gl, ProgramUniform1d, glProgramUniform1d, PROGRAMUNIFORM1D, (AND GLuint program, GLint location, GLdouble v0), (program, location, v0), &program, GL_void_return) /* 2187 */ GL_PROC(void, gl, ProgramUniform1dEXT, glProgramUniform1dEXT, PROGRAMUNIFORM1DEXT, (AND GLuint program, GLint location, GLdouble x), (program, location, x), &program, GL_void_return) /* 2188 */ GL_PROC(void, gl, ProgramUniform1dv, glProgramUniform1dv, PROGRAMUNIFORM1DV, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) /* 2189 */ GL_PROC(void, gl, ProgramUniform1dvEXT, glProgramUniform1dvEXT, PROGRAMUNIFORM1DVEXT, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) /* 2190 */ GL_PROC(void, gl, ProgramUniform1f, glProgramUniform1f, PROGRAMUNIFORM1F, (AND GLuint program, GLint location, GLfloat v0), (program, location, v0), &program, GL_void_return) /* 2191 */ GL_PROC(void, gl, ProgramUniform1fEXT, glProgramUniform1fEXT, PROGRAMUNIFORM1FEXT, (AND GLuint program, GLint location, GLfloat v0), (program, location, v0), &program, GL_void_return) /* 2192 */ GL_PROC(void, gl, ProgramUniform1fv, glProgramUniform1fv, PROGRAMUNIFORM1FV, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) /* 2193 */ GL_PROC(void, gl, ProgramUniform1fvEXT, glProgramUniform1fvEXT, PROGRAMUNIFORM1FVEXT, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) /* 2194 */ GL_PROC(void, gl, ProgramUniform1i, glProgramUniform1i, PROGRAMUNIFORM1I, (AND GLuint program, GLint location, GLint v0), (program, location, v0), &program, GL_void_return) /* 2195 */ GL_PROC(void, gl, ProgramUniform1i64NV, glProgramUniform1i64NV, PROGRAMUNIFORM1I64NV, (AND GLuint program, GLint location, GLint64EXT x), (program, location, x), &program, GL_void_return) /* 2196 */ GL_PROC(void, gl, ProgramUniform1i64vNV, glProgramUniform1i64vNV, PROGRAMUNIFORM1I64VNV, (AND GLuint program, GLint location, GLsizei count, const GLint64EXT *value), (program, location, count, value), &program, GL_void_return) /* 2197 */ GL_PROC(void, gl, ProgramUniform1iEXT, glProgramUniform1iEXT, PROGRAMUNIFORM1IEXT, (AND GLuint program, GLint location, GLint v0), (program, location, v0), &program, GL_void_return) /* 2198 */ GL_PROC(void, gl, ProgramUniform1iv, glProgramUniform1iv, PROGRAMUNIFORM1IV, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) /* 2199 */ GL_PROC(void, gl, ProgramUniform1ivEXT, glProgramUniform1ivEXT, PROGRAMUNIFORM1IVEXT, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) /* 2200 */ GL_PROC(void, gl, ProgramUniform1ui, glProgramUniform1ui, PROGRAMUNIFORM1UI, (AND GLuint program, GLint location, GLuint v0), (program, location, v0), &program, GL_void_return) /* 2201 */ GL_PROC(void, gl, ProgramUniform1ui64NV, glProgramUniform1ui64NV, PROGRAMUNIFORM1UI64NV, (AND GLuint program, GLint location, GLuint64EXT x), (program, location, x), &program, GL_void_return) /* 2202 */ GL_PROC(void, gl, ProgramUniform1ui64vNV, glProgramUniform1ui64vNV, PROGRAMUNIFORM1UI64VNV, (AND GLuint program, GLint location, GLsizei count, const GLuint64EXT *value), (program, location, count, value), &program, GL_void_return) /* 2203 */ GL_PROC(void, gl, ProgramUniform1uiEXT, glProgramUniform1uiEXT, PROGRAMUNIFORM1UIEXT, (AND GLuint program, GLint location, GLuint v0), (program, location, v0), &program, GL_void_return) /* 2204 */ GL_PROC(void, gl, ProgramUniform1uiv, glProgramUniform1uiv, PROGRAMUNIFORM1UIV, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) /* 2205 */ GL_PROC(void, gl, ProgramUniform1uivEXT, glProgramUniform1uivEXT, PROGRAMUNIFORM1UIVEXT, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) /* 2206 */ GL_PROC(void, gl, ProgramUniform2d, glProgramUniform2d, PROGRAMUNIFORM2D, (AND GLuint program, GLint location, GLdouble v0, GLdouble v1), (program, location, v0, v1), &program, GL_void_return) /* 2207 */ GL_PROC(void, gl, ProgramUniform2dEXT, glProgramUniform2dEXT, PROGRAMUNIFORM2DEXT, (AND GLuint program, GLint location, GLdouble x, GLdouble y), (program, location, x, y), &program, GL_void_return) /* 2208 */ GL_PROC(void, gl, ProgramUniform2dv, glProgramUniform2dv, PROGRAMUNIFORM2DV, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) /* 2209 */ GL_PROC(void, gl, ProgramUniform2dvEXT, glProgramUniform2dvEXT, PROGRAMUNIFORM2DVEXT, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) /* 2210 */ GL_PROC(void, gl, ProgramUniform2f, glProgramUniform2f, PROGRAMUNIFORM2F, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1), (program, location, v0, v1), &program, GL_void_return) /* 2211 */ GL_PROC(void, gl, ProgramUniform2fEXT, glProgramUniform2fEXT, PROGRAMUNIFORM2FEXT, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1), (program, location, v0, v1), &program, GL_void_return) /* 2212 */ GL_PROC(void, gl, ProgramUniform2fv, glProgramUniform2fv, PROGRAMUNIFORM2FV, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) /* 2213 */ GL_PROC(void, gl, ProgramUniform2fvEXT, glProgramUniform2fvEXT, PROGRAMUNIFORM2FVEXT, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) /* 2214 */ GL_PROC(void, gl, ProgramUniform2i, glProgramUniform2i, PROGRAMUNIFORM2I, (AND GLuint program, GLint location, GLint v0, GLint v1), (program, location, v0, v1), &program, GL_void_return) /* 2215 */ GL_PROC(void, gl, ProgramUniform2i64NV, glProgramUniform2i64NV, PROGRAMUNIFORM2I64NV, (AND GLuint program, GLint location, GLint64EXT x, GLint64EXT y), (program, location, x, y), &program, GL_void_return) /* 2216 */ GL_PROC(void, gl, ProgramUniform2i64vNV, glProgramUniform2i64vNV, PROGRAMUNIFORM2I64VNV, (AND GLuint program, GLint location, GLsizei count, const GLint64EXT *value), (program, location, count, value), &program, GL_void_return) /* 2217 */ GL_PROC(void, gl, ProgramUniform2iEXT, glProgramUniform2iEXT, PROGRAMUNIFORM2IEXT, (AND GLuint program, GLint location, GLint v0, GLint v1), (program, location, v0, v1), &program, GL_void_return) /* 2218 */ GL_PROC(void, gl, ProgramUniform2iv, glProgramUniform2iv, PROGRAMUNIFORM2IV, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) /* 2219 */ GL_PROC(void, gl, ProgramUniform2ivEXT, glProgramUniform2ivEXT, PROGRAMUNIFORM2IVEXT, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) /* 2220 */ GL_PROC(void, gl, ProgramUniform2ui, glProgramUniform2ui, PROGRAMUNIFORM2UI, (AND GLuint program, GLint location, GLuint v0, GLuint v1), (program, location, v0, v1), &program, GL_void_return) /* 2221 */ GL_PROC(void, gl, ProgramUniform2ui64NV, glProgramUniform2ui64NV, PROGRAMUNIFORM2UI64NV, (AND GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y), (program, location, x, y), &program, GL_void_return) /* 2222 */ GL_PROC(void, gl, ProgramUniform2ui64vNV, glProgramUniform2ui64vNV, PROGRAMUNIFORM2UI64VNV, (AND GLuint program, GLint location, GLsizei count, const GLuint64EXT *value), (program, location, count, value), &program, GL_void_return) /* 2223 */ GL_PROC(void, gl, ProgramUniform2uiEXT, glProgramUniform2uiEXT, PROGRAMUNIFORM2UIEXT, (AND GLuint program, GLint location, GLuint v0, GLuint v1), (program, location, v0, v1), &program, GL_void_return) /* 2224 */ GL_PROC(void, gl, ProgramUniform2uiv, glProgramUniform2uiv, PROGRAMUNIFORM2UIV, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) /* 2225 */ GL_PROC(void, gl, ProgramUniform2uivEXT, glProgramUniform2uivEXT, PROGRAMUNIFORM2UIVEXT, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) /* 2226 */ GL_PROC(void, gl, ProgramUniform3d, glProgramUniform3d, PROGRAMUNIFORM3D, (AND GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2), (program, location, v0, v1, v2), &program, GL_void_return) /* 2227 */ GL_PROC(void, gl, ProgramUniform3dEXT, glProgramUniform3dEXT, PROGRAMUNIFORM3DEXT, (AND GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z), (program, location, x, y, z), &program, GL_void_return) /* 2228 */ GL_PROC(void, gl, ProgramUniform3dv, glProgramUniform3dv, PROGRAMUNIFORM3DV, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) /* 2229 */ GL_PROC(void, gl, ProgramUniform3dvEXT, glProgramUniform3dvEXT, PROGRAMUNIFORM3DVEXT, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) /* 2230 */ GL_PROC(void, gl, ProgramUniform3f, glProgramUniform3f, PROGRAMUNIFORM3F, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2), (program, location, v0, v1, v2), &program, GL_void_return) /* 2231 */ GL_PROC(void, gl, ProgramUniform3fEXT, glProgramUniform3fEXT, PROGRAMUNIFORM3FEXT, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2), (program, location, v0, v1, v2), &program, GL_void_return) /* 2232 */ GL_PROC(void, gl, ProgramUniform3fv, glProgramUniform3fv, PROGRAMUNIFORM3FV, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) /* 2233 */ GL_PROC(void, gl, ProgramUniform3fvEXT, glProgramUniform3fvEXT, PROGRAMUNIFORM3FVEXT, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) /* 2234 */ GL_PROC(void, gl, ProgramUniform3i, glProgramUniform3i, PROGRAMUNIFORM3I, (AND GLuint program, GLint location, GLint v0, GLint v1, GLint v2), (program, location, v0, v1, v2), &program, GL_void_return) /* 2235 */ GL_PROC(void, gl, ProgramUniform3i64NV, glProgramUniform3i64NV, PROGRAMUNIFORM3I64NV, (AND GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z), (program, location, x, y, z), &program, GL_void_return) /* 2236 */ GL_PROC(void, gl, ProgramUniform3i64vNV, glProgramUniform3i64vNV, PROGRAMUNIFORM3I64VNV, (AND GLuint program, GLint location, GLsizei count, const GLint64EXT *value), (program, location, count, value), &program, GL_void_return) /* 2237 */ GL_PROC(void, gl, ProgramUniform3iEXT, glProgramUniform3iEXT, PROGRAMUNIFORM3IEXT, (AND GLuint program, GLint location, GLint v0, GLint v1, GLint v2), (program, location, v0, v1, v2), &program, GL_void_return) /* 2238 */ GL_PROC(void, gl, ProgramUniform3iv, glProgramUniform3iv, PROGRAMUNIFORM3IV, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) /* 2239 */ GL_PROC(void, gl, ProgramUniform3ivEXT, glProgramUniform3ivEXT, PROGRAMUNIFORM3IVEXT, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) /* 2240 */ GL_PROC(void, gl, ProgramUniform3ui, glProgramUniform3ui, PROGRAMUNIFORM3UI, (AND GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2), (program, location, v0, v1, v2), &program, GL_void_return) /* 2241 */ GL_PROC(void, gl, ProgramUniform3ui64NV, glProgramUniform3ui64NV, PROGRAMUNIFORM3UI64NV, (AND GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z), (program, location, x, y, z), &program, GL_void_return) /* 2242 */ GL_PROC(void, gl, ProgramUniform3ui64vNV, glProgramUniform3ui64vNV, PROGRAMUNIFORM3UI64VNV, (AND GLuint program, GLint location, GLsizei count, const GLuint64EXT *value), (program, location, count, value), &program, GL_void_return) /* 2243 */ GL_PROC(void, gl, ProgramUniform3uiEXT, glProgramUniform3uiEXT, PROGRAMUNIFORM3UIEXT, (AND GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2), (program, location, v0, v1, v2), &program, GL_void_return) /* 2244 */ GL_PROC(void, gl, ProgramUniform3uiv, glProgramUniform3uiv, PROGRAMUNIFORM3UIV, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) /* 2245 */ GL_PROC(void, gl, ProgramUniform3uivEXT, glProgramUniform3uivEXT, PROGRAMUNIFORM3UIVEXT, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) /* 2246 */ GL_PROC(void, gl, ProgramUniform4d, glProgramUniform4d, PROGRAMUNIFORM4D, (AND GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) /* 2247 */ GL_PROC(void, gl, ProgramUniform4dEXT, glProgramUniform4dEXT, PROGRAMUNIFORM4DEXT, (AND GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (program, location, x, y, z, w), &program, GL_void_return) /* 2248 */ GL_PROC(void, gl, ProgramUniform4dv, glProgramUniform4dv, PROGRAMUNIFORM4DV, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) /* 2249 */ GL_PROC(void, gl, ProgramUniform4dvEXT, glProgramUniform4dvEXT, PROGRAMUNIFORM4DVEXT, (AND GLuint program, GLint location, GLsizei count, const GLdouble *value), (program, location, count, value), &program, GL_void_return) /* 2250 */ GL_PROC(void, gl, ProgramUniform4f, glProgramUniform4f, PROGRAMUNIFORM4F, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) /* 2251 */ GL_PROC(void, gl, ProgramUniform4fEXT, glProgramUniform4fEXT, PROGRAMUNIFORM4FEXT, (AND GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) /* 2252 */ GL_PROC(void, gl, ProgramUniform4fv, glProgramUniform4fv, PROGRAMUNIFORM4FV, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) /* 2253 */ GL_PROC(void, gl, ProgramUniform4fvEXT, glProgramUniform4fvEXT, PROGRAMUNIFORM4FVEXT, (AND GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value), &program, GL_void_return) /* 2254 */ GL_PROC(void, gl, ProgramUniform4i, glProgramUniform4i, PROGRAMUNIFORM4I, (AND GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) /* 2255 */ GL_PROC(void, gl, ProgramUniform4i64NV, glProgramUniform4i64NV, PROGRAMUNIFORM4I64NV, (AND GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w), (program, location, x, y, z, w), &program, GL_void_return) /* 2256 */ GL_PROC(void, gl, ProgramUniform4i64vNV, glProgramUniform4i64vNV, PROGRAMUNIFORM4I64VNV, (AND GLuint program, GLint location, GLsizei count, const GLint64EXT *value), (program, location, count, value), &program, GL_void_return) /* 2257 */ GL_PROC(void, gl, ProgramUniform4iEXT, glProgramUniform4iEXT, PROGRAMUNIFORM4IEXT, (AND GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) /* 2258 */ GL_PROC(void, gl, ProgramUniform4iv, glProgramUniform4iv, PROGRAMUNIFORM4IV, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) /* 2259 */ GL_PROC(void, gl, ProgramUniform4ivEXT, glProgramUniform4ivEXT, PROGRAMUNIFORM4IVEXT, (AND GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value), &program, GL_void_return) /* 2260 */ GL_PROC(void, gl, ProgramUniform4ui, glProgramUniform4ui, PROGRAMUNIFORM4UI, (AND GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) /* 2261 */ GL_PROC(void, gl, ProgramUniform4ui64NV, glProgramUniform4ui64NV, PROGRAMUNIFORM4UI64NV, (AND GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w), (program, location, x, y, z, w), &program, GL_void_return) /* 2262 */ GL_PROC(void, gl, ProgramUniform4ui64vNV, glProgramUniform4ui64vNV, PROGRAMUNIFORM4UI64VNV, (AND GLuint program, GLint location, GLsizei count, const GLuint64EXT *value), (program, location, count, value), &program, GL_void_return) /* 2263 */ GL_PROC(void, gl, ProgramUniform4uiEXT, glProgramUniform4uiEXT, PROGRAMUNIFORM4UIEXT, (AND GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3), (program, location, v0, v1, v2, v3), &program, GL_void_return) /* 2264 */ GL_PROC(void, gl, ProgramUniform4uiv, glProgramUniform4uiv, PROGRAMUNIFORM4UIV, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) /* 2265 */ GL_PROC(void, gl, ProgramUniform4uivEXT, glProgramUniform4uivEXT, PROGRAMUNIFORM4UIVEXT, (AND GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value), &program, GL_void_return) /* 2266 */ GL_PROC(void, gl, ProgramUniformHandleui64ARB, glProgramUniformHandleui64ARB, PROGRAMUNIFORMHANDLEUI64ARB, (AND GLuint program, GLint location, GLuint64 value), (program, location, value), &program, GL_void_return) /* 2267 */ GL_PROC(void, gl, ProgramUniformHandleui64NV, glProgramUniformHandleui64NV, PROGRAMUNIFORMHANDLEUI64NV, (AND GLuint program, GLint location, GLuint64 value), (program, location, value), &program, GL_void_return) /* 2268 */ GL_PROC(void, gl, ProgramUniformHandleui64vARB, glProgramUniformHandleui64vARB, PROGRAMUNIFORMHANDLEUI64VARB, (AND GLuint program, GLint location, GLsizei count, const GLuint64 *values), (program, location, count, values), &program, GL_void_return) /* 2269 */ GL_PROC(void, gl, ProgramUniformHandleui64vNV, glProgramUniformHandleui64vNV, PROGRAMUNIFORMHANDLEUI64VNV, (AND GLuint program, GLint location, GLsizei count, const GLuint64 *values), (program, location, count, values), &program, GL_void_return) /* 2270 */ GL_PROC(void, gl, ProgramUniformMatrix2dv, glProgramUniformMatrix2dv, PROGRAMUNIFORMMATRIX2DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2271 */ GL_PROC(void, gl, ProgramUniformMatrix2dvEXT, glProgramUniformMatrix2dvEXT, PROGRAMUNIFORMMATRIX2DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2272 */ GL_PROC(void, gl, ProgramUniformMatrix2fv, glProgramUniformMatrix2fv, PROGRAMUNIFORMMATRIX2FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2273 */ GL_PROC(void, gl, ProgramUniformMatrix2fvEXT, glProgramUniformMatrix2fvEXT, PROGRAMUNIFORMMATRIX2FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2274 */ GL_PROC(void, gl, ProgramUniformMatrix2x3dv, glProgramUniformMatrix2x3dv, PROGRAMUNIFORMMATRIX2X3DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2275 */ GL_PROC(void, gl, ProgramUniformMatrix2x3dvEXT, glProgramUniformMatrix2x3dvEXT, PROGRAMUNIFORMMATRIX2X3DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2276 */ GL_PROC(void, gl, ProgramUniformMatrix2x3fv, glProgramUniformMatrix2x3fv, PROGRAMUNIFORMMATRIX2X3FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2277 */ GL_PROC(void, gl, ProgramUniformMatrix2x3fvEXT, glProgramUniformMatrix2x3fvEXT, PROGRAMUNIFORMMATRIX2X3FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2278 */ GL_PROC(void, gl, ProgramUniformMatrix2x4dv, glProgramUniformMatrix2x4dv, PROGRAMUNIFORMMATRIX2X4DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2279 */ GL_PROC(void, gl, ProgramUniformMatrix2x4dvEXT, glProgramUniformMatrix2x4dvEXT, PROGRAMUNIFORMMATRIX2X4DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2280 */ GL_PROC(void, gl, ProgramUniformMatrix2x4fv, glProgramUniformMatrix2x4fv, PROGRAMUNIFORMMATRIX2X4FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2281 */ GL_PROC(void, gl, ProgramUniformMatrix2x4fvEXT, glProgramUniformMatrix2x4fvEXT, PROGRAMUNIFORMMATRIX2X4FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2282 */ GL_PROC(void, gl, ProgramUniformMatrix3dv, glProgramUniformMatrix3dv, PROGRAMUNIFORMMATRIX3DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2283 */ GL_PROC(void, gl, ProgramUniformMatrix3dvEXT, glProgramUniformMatrix3dvEXT, PROGRAMUNIFORMMATRIX3DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2284 */ GL_PROC(void, gl, ProgramUniformMatrix3fv, glProgramUniformMatrix3fv, PROGRAMUNIFORMMATRIX3FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2285 */ GL_PROC(void, gl, ProgramUniformMatrix3fvEXT, glProgramUniformMatrix3fvEXT, PROGRAMUNIFORMMATRIX3FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2286 */ GL_PROC(void, gl, ProgramUniformMatrix3x2dv, glProgramUniformMatrix3x2dv, PROGRAMUNIFORMMATRIX3X2DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2287 */ GL_PROC(void, gl, ProgramUniformMatrix3x2dvEXT, glProgramUniformMatrix3x2dvEXT, PROGRAMUNIFORMMATRIX3X2DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2288 */ GL_PROC(void, gl, ProgramUniformMatrix3x2fv, glProgramUniformMatrix3x2fv, PROGRAMUNIFORMMATRIX3X2FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2289 */ GL_PROC(void, gl, ProgramUniformMatrix3x2fvEXT, glProgramUniformMatrix3x2fvEXT, PROGRAMUNIFORMMATRIX3X2FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2290 */ GL_PROC(void, gl, ProgramUniformMatrix3x4dv, glProgramUniformMatrix3x4dv, PROGRAMUNIFORMMATRIX3X4DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2291 */ GL_PROC(void, gl, ProgramUniformMatrix3x4dvEXT, glProgramUniformMatrix3x4dvEXT, PROGRAMUNIFORMMATRIX3X4DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2292 */ GL_PROC(void, gl, ProgramUniformMatrix3x4fv, glProgramUniformMatrix3x4fv, PROGRAMUNIFORMMATRIX3X4FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2293 */ GL_PROC(void, gl, ProgramUniformMatrix3x4fvEXT, glProgramUniformMatrix3x4fvEXT, PROGRAMUNIFORMMATRIX3X4FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2294 */ GL_PROC(void, gl, ProgramUniformMatrix4dv, glProgramUniformMatrix4dv, PROGRAMUNIFORMMATRIX4DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2295 */ GL_PROC(void, gl, ProgramUniformMatrix4dvEXT, glProgramUniformMatrix4dvEXT, PROGRAMUNIFORMMATRIX4DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2296 */ GL_PROC(void, gl, ProgramUniformMatrix4fv, glProgramUniformMatrix4fv, PROGRAMUNIFORMMATRIX4FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2297 */ GL_PROC(void, gl, ProgramUniformMatrix4fvEXT, glProgramUniformMatrix4fvEXT, PROGRAMUNIFORMMATRIX4FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2298 */ GL_PROC(void, gl, ProgramUniformMatrix4x2dv, glProgramUniformMatrix4x2dv, PROGRAMUNIFORMMATRIX4X2DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2299 */ GL_PROC(void, gl, ProgramUniformMatrix4x2dvEXT, glProgramUniformMatrix4x2dvEXT, PROGRAMUNIFORMMATRIX4X2DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2300 */ GL_PROC(void, gl, ProgramUniformMatrix4x2fv, glProgramUniformMatrix4x2fv, PROGRAMUNIFORMMATRIX4X2FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2301 */ GL_PROC(void, gl, ProgramUniformMatrix4x2fvEXT, glProgramUniformMatrix4x2fvEXT, PROGRAMUNIFORMMATRIX4X2FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2302 */ GL_PROC(void, gl, ProgramUniformMatrix4x3dv, glProgramUniformMatrix4x3dv, PROGRAMUNIFORMMATRIX4X3DV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2303 */ GL_PROC(void, gl, ProgramUniformMatrix4x3dvEXT, glProgramUniformMatrix4x3dvEXT, PROGRAMUNIFORMMATRIX4X3DVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2304 */ GL_PROC(void, gl, ProgramUniformMatrix4x3fv, glProgramUniformMatrix4x3fv, PROGRAMUNIFORMMATRIX4X3FV, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2305 */ GL_PROC(void, gl, ProgramUniformMatrix4x3fvEXT, glProgramUniformMatrix4x3fvEXT, PROGRAMUNIFORMMATRIX4X3FVEXT, (AND GLuint program, GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (program, location, count, transpose, value), &program, GL_void_return) /* 2306 */ GL_PROC(void, gl, ProgramUniformui64NV, glProgramUniformui64NV, PROGRAMUNIFORMUI64NV, (AND GLuint program, GLint location, GLuint64EXT value), (program, location, value), &program, GL_void_return) /* 2307 */ GL_PROC(void, gl, ProgramUniformui64vNV, glProgramUniformui64vNV, PROGRAMUNIFORMUI64VNV, (AND GLuint program, GLint location, GLsizei count, const GLuint64EXT *value), (program, location, count, value), &program, GL_void_return) /* 2308 */ GL_PROC(void, gl, ProgramVertexLimitNV, glProgramVertexLimitNV, PROGRAMVERTEXLIMITNV, (AND GLenum target, GLint limit), (target, limit), &target, GL_void_return) /* 2309 */ GL_PROC(void, gl, ProvokingVertex, glProvokingVertex, PROVOKINGVERTEX, (AND GLenum mode), (mode), &mode, GL_void_return) /* 2310 */ GL_PROC(void, gl, ProvokingVertexEXT, glProvokingVertexEXT, PROVOKINGVERTEXEXT, (AND GLenum mode), (mode), &mode, GL_void_return) /* 2311 */ GL_PROC(void, gl, PushClientAttribDefaultEXT, glPushClientAttribDefaultEXT, PUSHCLIENTATTRIBDEFAULTEXT, (AND GLbitfield mask), (mask), &mask, GL_void_return) /* 2312 */ GL_PROC(void, gl, PushDebugGroup, glPushDebugGroup, PUSHDEBUGGROUP, (AND GLenum source, GLuint id, GLsizei length, const GLchar *message), (source, id, length, message), &source, GL_void_return) /* 2313 */ GL_PROC(void, gl, PushGroupMarkerEXT, glPushGroupMarkerEXT, PUSHGROUPMARKEREXT, (AND GLsizei length, const GLchar *marker), (length, marker), &length, GL_void_return) /* 2314 */ GL_PROC(void, gl, QueryCounter, glQueryCounter, QUERYCOUNTER, (AND GLuint id, GLenum target), (id, target), &id, GL_void_return) /* 2315 */ GL_PROC(GLbitfield, gl, QueryMatrixxOES, glQueryMatrixxOES, QUERYMATRIXXOES, (AND GLfixed *mantissa, GLint *exponent), (mantissa, exponent), &mantissa, return (GLbitfield)) /* 2316 */ GL_PROC(void, gl, QueryObjectParameteruiAMD, glQueryObjectParameteruiAMD, QUERYOBJECTPARAMETERUIAMD, (AND GLenum target, GLuint id, GLenum pname, GLuint param), (target, id, pname, param), &target, GL_void_return) /* 2317 */ GL_PROC(void, gl, RasterPos2xOES, glRasterPos2xOES, RASTERPOS2XOES, (AND GLfixed x, GLfixed y), (x, y), &x, GL_void_return) /* 2318 */ GL_PROC(void, gl, RasterPos2xvOES, glRasterPos2xvOES, RASTERPOS2XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) /* 2319 */ GL_PROC(void, gl, RasterPos3xOES, glRasterPos3xOES, RASTERPOS3XOES, (AND GLfixed x, GLfixed y, GLfixed z), (x, y, z), &x, GL_void_return) /* 2320 */ GL_PROC(void, gl, RasterPos3xvOES, glRasterPos3xvOES, RASTERPOS3XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) /* 2321 */ GL_PROC(void, gl, RasterPos4xOES, glRasterPos4xOES, RASTERPOS4XOES, (AND GLfixed x, GLfixed y, GLfixed z, GLfixed w), (x, y, z, w), &x, GL_void_return) /* 2322 */ GL_PROC(void, gl, RasterPos4xvOES, glRasterPos4xvOES, RASTERPOS4XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) /* 2323 */ GL_PROC(void, gl, ReadnPixelsARB, glReadnPixelsARB, READNPIXELSARB, (AND GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data), (x, y, width, height, format, type, bufSize, data), &x, GL_void_return) /* 2324 */ GL_PROC(void, gl, RectxOES, glRectxOES, RECTXOES, (AND GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2), (x1, y1, x2, y2), &x1, GL_void_return) /* 2325 */ GL_PROC(void, gl, RectxvOES, glRectxvOES, RECTXVOES, (AND const GLfixed *v1, const GLfixed *v2), (v1, v2), &v1, GL_void_return) /* 2326 */ GL_PROC(void, gl, ReleaseShaderCompiler, glReleaseShaderCompiler, RELEASESHADERCOMPILER, (NOTHING), (), NULL, GL_void_return) /* 2327 */ GL_PROC(void, gl, RenderbufferStorage, glRenderbufferStorage, RENDERBUFFERSTORAGE, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height), (target, internalformat, width, height), &target, GL_void_return) /* 2328 */ GL_PROC(void, gl, RenderbufferStorageEXT, glRenderbufferStorageEXT, RENDERBUFFERSTORAGEEXT, (AND GLenum target, GLenum internalformat, GLsizei width, GLsizei height), (target, internalformat, width, height), &target, GL_void_return) /* 2329 */ GL_PROC(void, gl, RenderbufferStorageMultisample, glRenderbufferStorageMultisample, RENDERBUFFERSTORAGEMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height), (target, samples, internalformat, width, height), &target, GL_void_return) /* 2330 */ GL_PROC(void, gl, RenderbufferStorageMultisampleCoverageNV, glRenderbufferStorageMultisampleCoverageNV, RENDERBUFFERSTORAGEMULTISAMPLECOVERAGENV, (AND GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height), (target, coverageSamples, colorSamples, internalformat, width, height), &target, GL_void_return) /* 2331 */ GL_PROC(void, gl, RenderbufferStorageMultisampleEXT, glRenderbufferStorageMultisampleEXT, RENDERBUFFERSTORAGEMULTISAMPLEEXT, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height), (target, samples, internalformat, width, height), &target, GL_void_return) /* 2332 */ GL_PROC(void, gl, ResumeTransformFeedback, glResumeTransformFeedback, RESUMETRANSFORMFEEDBACK, (NOTHING), (), NULL, GL_void_return) /* 2333 */ GL_PROC(void, gl, ResumeTransformFeedbackNV, glResumeTransformFeedbackNV, RESUMETRANSFORMFEEDBACKNV, (NOTHING), (), NULL, GL_void_return) /* 2334 */ GL_PROC(void, gl, RotatexOES, glRotatexOES, ROTATEXOES, (AND GLfixed angle, GLfixed x, GLfixed y, GLfixed z), (angle, x, y, z), &angle, GL_void_return) /* 2335 */ GL_PROC(void, gl, SampleCoverageOES, glSampleCoverageOES, SAMPLECOVERAGEOES, (AND GLfixed value, GLboolean32 invert), (value, invert), &value, GL_void_return) /* 2336 */ GL_PROC(void, gl, SampleMaskIndexedNV, glSampleMaskIndexedNV, SAMPLEMASKINDEXEDNV, (AND GLuint index, GLbitfield mask), (index, mask), &index, GL_void_return) /* 2337 */ GL_PROC(void, gl, SampleMaski, glSampleMaski, SAMPLEMASKI, (AND GLuint maskNumber, GLbitfield mask), (maskNumber, mask), &maskNumber, GL_void_return) /* 2338 */ GL_PROC(void, gl, SamplePass, glSamplePass, SAMPLEPASS, (AND GLenum mode), (mode), &mode, GL_void_return) /* 2339 */ GL_PROC(void, gl, SamplePassARB, glSamplePassARB, SAMPLEPASSARB, (AND GLenum mode), (mode), &mode, GL_void_return) /* 2340 */ GL_PROC(void, gl, SamplerParameterIiv, glSamplerParameterIiv, SAMPLERPARAMETERIIV, (AND GLuint sampler, GLenum pname, const GLint *param), (sampler, pname, param), &sampler, GL_void_return) /* 2341 */ GL_PROC(void, gl, SamplerParameterIuiv, glSamplerParameterIuiv, SAMPLERPARAMETERIUIV, (AND GLuint sampler, GLenum pname, const GLuint *param), (sampler, pname, param), &sampler, GL_void_return) /* 2342 */ GL_PROC(void, gl, SamplerParameterf, glSamplerParameterf, SAMPLERPARAMETERF, (AND GLuint sampler, GLenum pname, GLfloat param), (sampler, pname, param), &sampler, GL_void_return) /* 2343 */ GL_PROC(void, gl, SamplerParameterfv, glSamplerParameterfv, SAMPLERPARAMETERFV, (AND GLuint sampler, GLenum pname, const GLfloat *param), (sampler, pname, param), &sampler, GL_void_return) /* 2344 */ GL_PROC(void, gl, SamplerParameteri, glSamplerParameteri, SAMPLERPARAMETERI, (AND GLuint sampler, GLenum pname, GLint param), (sampler, pname, param), &sampler, GL_void_return) /* 2345 */ GL_PROC(void, gl, SamplerParameteriv, glSamplerParameteriv, SAMPLERPARAMETERIV, (AND GLuint sampler, GLenum pname, const GLint *param), (sampler, pname, param), &sampler, GL_void_return) /* 2346 */ GL_PROC(void, gl, ScalexOES, glScalexOES, SCALEXOES, (AND GLfixed x, GLfixed y, GLfixed z), (x, y, z), &x, GL_void_return) /* 2347 */ GL_PROC(void, gl, ScissorArrayv, glScissorArrayv, SCISSORARRAYV, (AND GLuint first, GLsizei count, const GLint *v), (first, count, v), &first, GL_void_return) /* 2348 */ GL_PROC(void, gl, ScissorIndexed, glScissorIndexed, SCISSORINDEXED, (AND GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height), (index, left, bottom, width, height), &index, GL_void_return) /* 2349 */ GL_PROC(void, gl, ScissorIndexedv, glScissorIndexedv, SCISSORINDEXEDV, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) /* 2350 */ GL_PROC(void, gl, SecondaryColorFormatNV, glSecondaryColorFormatNV, SECONDARYCOLORFORMATNV, (AND GLint size, GLenum type, GLsizei stride), (size, type, stride), &size, GL_void_return) /* 2351 */ GL_PROC(void, gl, SecondaryColorP3ui, glSecondaryColorP3ui, SECONDARYCOLORP3UI, (AND GLenum type, GLuint color), (type, color), &type, GL_void_return) /* 2352 */ GL_PROC(void, gl, SecondaryColorP3uiv, glSecondaryColorP3uiv, SECONDARYCOLORP3UIV, (AND GLenum type, const GLuint *color), (type, color), &type, GL_void_return) /* 2353 */ GL_PROC(void, gl, SelectPerfMonitorCountersAMD, glSelectPerfMonitorCountersAMD, SELECTPERFMONITORCOUNTERSAMD, (AND GLuint monitor, GLboolean32 enable, GLuint group, GLint numCounters, GLuint *counterList), (monitor, enable, group, numCounters, counterList), &monitor, GL_void_return) /* 2354 */ GL_PROC(void, gl, SetMultisamplefvAMD, glSetMultisamplefvAMD, SETMULTISAMPLEFVAMD, (AND GLenum pname, GLuint index, const GLfloat *val), (pname, index, val), &pname, GL_void_return) /* 2355 */ GL_PROC(void, gl, ShaderBinary, glShaderBinary, SHADERBINARY, (AND GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length), (count, shaders, binaryformat, binary, length), &count, GL_void_return) /* 2356 */ GL_PROC(void, gl, ShaderSource, glShaderSource, SHADERSOURCE, (AND GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length), (shader, count, string, length), &shader, GL_void_return) /* 2357 */ GL_PROC(void, gl, ShaderStorageBlockBinding, glShaderStorageBlockBinding, SHADERSTORAGEBLOCKBINDING, (AND GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding), (program, storageBlockIndex, storageBlockBinding), &program, GL_void_return) /* 2358 */ GL_PROC(void, gl, StencilClearTagEXT, glStencilClearTagEXT, STENCILCLEARTAGEXT, (AND GLsizei stencilTagBits, GLuint stencilClearTag), (stencilTagBits, stencilClearTag), &stencilTagBits, GL_void_return) /* 2359 */ GL_PROC(void, gl, StencilFillPathInstancedNV, glStencilFillPathInstancedNV, STENCILFILLPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues), (numPaths, pathNameType, paths, pathBase, fillMode, mask, transformType, transformValues), &numPaths, GL_void_return) /* 2360 */ GL_PROC(void, gl, StencilFillPathNV, glStencilFillPathNV, STENCILFILLPATHNV, (AND GLuint path, GLenum fillMode, GLuint mask), (path, fillMode, mask), &path, GL_void_return) /* 2361 */ GL_PROC(void, gl, StencilFuncSeparate, glStencilFuncSeparate, STENCILFUNCSEPARATE, (AND GLenum face, GLenum func, GLint ref, GLuint mask), (face, func, ref, mask), &face, GL_void_return) /* 2362 */ GL_PROC(void, gl, StencilMaskSeparate, glStencilMaskSeparate, STENCILMASKSEPARATE, (AND GLenum face, GLuint mask), (face, mask), &face, GL_void_return) /* 2363 */ GL_PROC(void, gl, StencilOpSeparate, glStencilOpSeparate, STENCILOPSEPARATE, (AND GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass), (face, sfail, dpfail, dppass), &face, GL_void_return) /* 2364 */ GL_PROC(void, gl, StencilOpValueAMD, glStencilOpValueAMD, STENCILOPVALUEAMD, (AND GLenum face, GLuint value), (face, value), &face, GL_void_return) /* 2365 */ GL_PROC(void, gl, StencilStrokePathInstancedNV, glStencilStrokePathInstancedNV, STENCILSTROKEPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues), (numPaths, pathNameType, paths, pathBase, reference, mask, transformType, transformValues), &numPaths, GL_void_return) /* 2366 */ GL_PROC(void, gl, StencilStrokePathNV, glStencilStrokePathNV, STENCILSTROKEPATHNV, (AND GLuint path, GLint reference, GLuint mask), (path, reference, mask), &path, GL_void_return) /* 2367 */ GL_PROC(void, gl, StringMarkerGREMEDY, glStringMarkerGREMEDY, STRINGMARKERGREMEDY, (AND GLsizei len, const void *string), (len, string), &len, GL_void_return) /* 2368 */ GL_PROC(void, gl, SwapAPPLE, glSwapAPPLE, SWAPAPPLE, (NOTHING), (), NULL, GL_void_return) /* 2369 */ GL_PROC(void, gl, SyncTextureINTEL, glSyncTextureINTEL, SYNCTEXTUREINTEL, (AND GLuint texture), (texture), &texture, GL_void_return) /* 2370 */ GL_PROC(void, gl, TessellationFactorAMD, glTessellationFactorAMD, TESSELLATIONFACTORAMD, (AND GLfloat factor), (factor), &factor, GL_void_return) /* 2371 */ GL_PROC(void, gl, TessellationModeAMD, glTessellationModeAMD, TESSELLATIONMODEAMD, (AND GLenum mode), (mode), &mode, GL_void_return) /* 2372 */ GL_PROC(void, gl, TexBuffer, glTexBuffer, TEXBUFFER, (AND GLenum target, GLenum internalformat, GLuint buffer), (target, internalformat, buffer), &target, GL_void_return) /* 2373 */ GL_PROC(void, gl, TexBufferARB, glTexBufferARB, TEXBUFFERARB, (AND GLenum target, GLenum internalformat, GLuint buffer), (target, internalformat, buffer), &target, GL_void_return) /* 2374 */ GL_PROC(void, gl, TexBufferEXT, glTexBufferEXT, TEXBUFFEREXT, (AND GLenum target, GLenum internalformat, GLuint buffer), (target, internalformat, buffer), &target, GL_void_return) /* 2375 */ GL_PROC(void, gl, TexBufferRange, glTexBufferRange, TEXBUFFERRANGE, (AND GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size), (target, internalformat, buffer, offset, size), &target, GL_void_return) /* 2376 */ GL_PROC(void, gl, TexCoord1bOES, glTexCoord1bOES, TEXCOORD1BOES, (AND GLbyte32 s), (s), &s, GL_void_return) /* 2377 */ GL_PROC(void, gl, TexCoord1bvOES, glTexCoord1bvOES, TEXCOORD1BVOES, (AND const GLbyte *coords), (coords), &coords, GL_void_return) /* 2378 */ GL_PROC(void, gl, TexCoord1xOES, glTexCoord1xOES, TEXCOORD1XOES, (AND GLfixed s), (s), &s, GL_void_return) /* 2379 */ GL_PROC(void, gl, TexCoord1xvOES, glTexCoord1xvOES, TEXCOORD1XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) /* 2380 */ GL_PROC(void, gl, TexCoord2bOES, glTexCoord2bOES, TEXCOORD2BOES, (AND GLbyte32 s, GLbyte32 t), (s, t), &s, GL_void_return) /* 2381 */ GL_PROC(void, gl, TexCoord2bvOES, glTexCoord2bvOES, TEXCOORD2BVOES, (AND const GLbyte *coords), (coords), &coords, GL_void_return) /* 2382 */ GL_PROC(void, gl, TexCoord2xOES, glTexCoord2xOES, TEXCOORD2XOES, (AND GLfixed s, GLfixed t), (s, t), &s, GL_void_return) /* 2383 */ GL_PROC(void, gl, TexCoord2xvOES, glTexCoord2xvOES, TEXCOORD2XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) /* 2384 */ GL_PROC(void, gl, TexCoord3bOES, glTexCoord3bOES, TEXCOORD3BOES, (AND GLbyte32 s, GLbyte32 t, GLbyte32 r), (s, t, r), &s, GL_void_return) /* 2385 */ GL_PROC(void, gl, TexCoord3bvOES, glTexCoord3bvOES, TEXCOORD3BVOES, (AND const GLbyte *coords), (coords), &coords, GL_void_return) /* 2386 */ GL_PROC(void, gl, TexCoord3xOES, glTexCoord3xOES, TEXCOORD3XOES, (AND GLfixed s, GLfixed t, GLfixed r), (s, t, r), &s, GL_void_return) /* 2387 */ GL_PROC(void, gl, TexCoord3xvOES, glTexCoord3xvOES, TEXCOORD3XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) /* 2388 */ GL_PROC(void, gl, TexCoord4bOES, glTexCoord4bOES, TEXCOORD4BOES, (AND GLbyte32 s, GLbyte32 t, GLbyte32 r, GLbyte32 q), (s, t, r, q), &s, GL_void_return) /* 2389 */ GL_PROC(void, gl, TexCoord4bvOES, glTexCoord4bvOES, TEXCOORD4BVOES, (AND const GLbyte *coords), (coords), &coords, GL_void_return) /* 2390 */ GL_PROC(void, gl, TexCoord4xOES, glTexCoord4xOES, TEXCOORD4XOES, (AND GLfixed s, GLfixed t, GLfixed r, GLfixed q), (s, t, r, q), &s, GL_void_return) /* 2391 */ GL_PROC(void, gl, TexCoord4xvOES, glTexCoord4xvOES, TEXCOORD4XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) /* 2392 */ GL_PROC(void, gl, TexCoordFormatNV, glTexCoordFormatNV, TEXCOORDFORMATNV, (AND GLint size, GLenum type, GLsizei stride), (size, type, stride), &size, GL_void_return) /* 2393 */ GL_PROC(void, gl, TexCoordP1ui, glTexCoordP1ui, TEXCOORDP1UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) /* 2394 */ GL_PROC(void, gl, TexCoordP1uiv, glTexCoordP1uiv, TEXCOORDP1UIV, (AND GLenum type, const GLuint *coords), (type, coords), &type, GL_void_return) /* 2395 */ GL_PROC(void, gl, TexCoordP2ui, glTexCoordP2ui, TEXCOORDP2UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) /* 2396 */ GL_PROC(void, gl, TexCoordP2uiv, glTexCoordP2uiv, TEXCOORDP2UIV, (AND GLenum type, const GLuint *coords), (type, coords), &type, GL_void_return) /* 2397 */ GL_PROC(void, gl, TexCoordP3ui, glTexCoordP3ui, TEXCOORDP3UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) /* 2398 */ GL_PROC(void, gl, TexCoordP3uiv, glTexCoordP3uiv, TEXCOORDP3UIV, (AND GLenum type, const GLuint *coords), (type, coords), &type, GL_void_return) /* 2399 */ GL_PROC(void, gl, TexCoordP4ui, glTexCoordP4ui, TEXCOORDP4UI, (AND GLenum type, GLuint coords), (type, coords), &type, GL_void_return) /* 2400 */ GL_PROC(void, gl, TexCoordP4uiv, glTexCoordP4uiv, TEXCOORDP4UIV, (AND GLenum type, const GLuint *coords), (type, coords), &type, GL_void_return) /* 2401 */ GL_PROC(void, gl, TexEnvxOES, glTexEnvxOES, TEXENVXOES, (AND GLenum target, GLenum pname, GLfixed param), (target, pname, param), &target, GL_void_return) /* 2402 */ GL_PROC(void, gl, TexEnvxvOES, glTexEnvxvOES, TEXENVXVOES, (AND GLenum target, GLenum pname, const GLfixed *params), (target, pname, params), &target, GL_void_return) /* 2403 */ GL_PROC(void, gl, TexGenxOES, glTexGenxOES, TEXGENXOES, (AND GLenum coord, GLenum pname, GLfixed param), (coord, pname, param), &coord, GL_void_return) /* 2404 */ GL_PROC(void, gl, TexGenxvOES, glTexGenxvOES, TEXGENXVOES, (AND GLenum coord, GLenum pname, const GLfixed *params), (coord, pname, params), &coord, GL_void_return) /* 2405 */ GL_PROC(void, gl, TexImage2DMultisample, glTexImage2DMultisample, TEXIMAGE2DMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations), (target, samples, internalformat, width, height, fixedsamplelocations), &target, GL_void_return) /* 2406 */ GL_PROC(void, gl, TexImage2DMultisampleCoverageNV, glTexImage2DMultisampleCoverageNV, TEXIMAGE2DMULTISAMPLECOVERAGENV, (AND GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations), (target, coverageSamples, colorSamples, internalFormat, width, height, fixedSampleLocations), &target, GL_void_return) /* 2407 */ GL_PROC(void, gl, TexImage3DMultisample, glTexImage3DMultisample, TEXIMAGE3DMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations), (target, samples, internalformat, width, height, depth, fixedsamplelocations), &target, GL_void_return) /* 2408 */ GL_PROC(void, gl, TexImage3DMultisampleCoverageNV, glTexImage3DMultisampleCoverageNV, TEXIMAGE3DMULTISAMPLECOVERAGENV, (AND GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations), (target, coverageSamples, colorSamples, internalFormat, width, height, depth, fixedSampleLocations), &target, GL_void_return) /* 2409 */ GL_PROC(void, gl, TexPageCommitmentARB, glTexPageCommitmentARB, TEXPAGECOMMITMENTARB, (AND GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit), (target, level, xoffset, yoffset, zoffset, width, height, depth, commit), &target, GL_void_return) /* 2410 */ GL_PROC(void, gl, TexParameterIiv, glTexParameterIiv, TEXPARAMETERIIV, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) /* 2411 */ GL_PROC(void, gl, TexParameterIivEXT, glTexParameterIivEXT, TEXPARAMETERIIVEXT, (AND GLenum target, GLenum pname, const GLint *params), (target, pname, params), &target, GL_void_return) /* 2412 */ GL_PROC(void, gl, TexParameterIuiv, glTexParameterIuiv, TEXPARAMETERIUIV, (AND GLenum target, GLenum pname, const GLuint *params), (target, pname, params), &target, GL_void_return) /* 2413 */ GL_PROC(void, gl, TexParameterIuivEXT, glTexParameterIuivEXT, TEXPARAMETERIUIVEXT, (AND GLenum target, GLenum pname, const GLuint *params), (target, pname, params), &target, GL_void_return) /* 2414 */ GL_PROC(void, gl, TexParameterxOES, glTexParameterxOES, TEXPARAMETERXOES, (AND GLenum target, GLenum pname, GLfixed param), (target, pname, param), &target, GL_void_return) /* 2415 */ GL_PROC(void, gl, TexParameterxvOES, glTexParameterxvOES, TEXPARAMETERXVOES, (AND GLenum target, GLenum pname, const GLfixed *params), (target, pname, params), &target, GL_void_return) /* 2416 */ GL_PROC(void, gl, TexRenderbufferNV, glTexRenderbufferNV, TEXRENDERBUFFERNV, (AND GLenum target, GLuint renderbuffer), (target, renderbuffer), &target, GL_void_return) /* 2417 */ GL_PROC(void, gl, TexScissorFuncINTEL, glTexScissorFuncINTEL, TEXSCISSORFUNCINTEL, (AND GLenum target, GLenum lfunc, GLenum hfunc), (target, lfunc, hfunc), &target, GL_void_return) /* 2418 */ GL_PROC(void, gl, TexScissorINTEL, glTexScissorINTEL, TEXSCISSORINTEL, (AND GLenum target, GLclampf tlow, GLclampf thigh), (target, tlow, thigh), &target, GL_void_return) /* 2419 */ GL_PROC(void, gl, TexStorage1D, glTexStorage1D, TEXSTORAGE1D, (AND GLenum target, GLsizei levels, GLenum internalformat, GLsizei width), (target, levels, internalformat, width), &target, GL_void_return) /* 2420 */ GL_PROC(void, gl, TexStorage2D, glTexStorage2D, TEXSTORAGE2D, (AND GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height), (target, levels, internalformat, width, height), &target, GL_void_return) /* 2421 */ GL_PROC(void, gl, TexStorage2DMultisample, glTexStorage2DMultisample, TEXSTORAGE2DMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations), (target, samples, internalformat, width, height, fixedsamplelocations), &target, GL_void_return) /* 2422 */ GL_PROC(void, gl, TexStorage3D, glTexStorage3D, TEXSTORAGE3D, (AND GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth), (target, levels, internalformat, width, height, depth), &target, GL_void_return) /* 2423 */ GL_PROC(void, gl, TexStorage3DMultisample, glTexStorage3DMultisample, TEXSTORAGE3DMULTISAMPLE, (AND GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations), (target, samples, internalformat, width, height, depth, fixedsamplelocations), &target, GL_void_return) /* 2424 */ GL_PROC(void, gl, TexStorageSparseAMD, glTexStorageSparseAMD, TEXSTORAGESPARSEAMD, (AND GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags), (target, internalFormat, width, height, depth, layers, flags), &target, GL_void_return) /* 2425 */ GL_PROC(void, gl, TextureBarrierNV, glTextureBarrierNV, TEXTUREBARRIERNV, (NOTHING), (), NULL, GL_void_return) /* 2426 */ GL_PROC(void, gl, TextureBufferEXT, glTextureBufferEXT, TEXTUREBUFFEREXT, (AND GLuint texture, GLenum target, GLenum internalformat, GLuint buffer), (texture, target, internalformat, buffer), &texture, GL_void_return) /* 2427 */ GL_PROC(void, gl, TextureBufferRangeEXT, glTextureBufferRangeEXT, TEXTUREBUFFERRANGEEXT, (AND GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size), (texture, target, internalformat, buffer, offset, size), &texture, GL_void_return) /* 2428 */ GL_PROC(void, gl, TextureFogSGIX, glTextureFogSGIX, TEXTUREFOGSGIX, (AND GLenum pname), (pname), &pname, GL_void_return) /* 2429 */ GL_PROC(void, gl, TextureImage1DEXT, glTextureImage1DEXT, TEXTUREIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels), (texture, target, level, internalformat, width, border, format, type, pixels), &texture, GL_void_return) /* 2430 */ GL_PROC(void, gl, TextureImage2DEXT, glTextureImage2DEXT, TEXTUREIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels), (texture, target, level, internalformat, width, height, border, format, type, pixels), &texture, GL_void_return) /* 2431 */ GL_PROC(void, gl, TextureImage2DMultisampleCoverageNV, glTextureImage2DMultisampleCoverageNV, TEXTUREIMAGE2DMULTISAMPLECOVERAGENV, (AND GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations), (texture, target, coverageSamples, colorSamples, internalFormat, width, height, fixedSampleLocations), &texture, GL_void_return) /* 2432 */ GL_PROC(void, gl, TextureImage2DMultisampleNV, glTextureImage2DMultisampleNV, TEXTUREIMAGE2DMULTISAMPLENV, (AND GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations), (texture, target, samples, internalFormat, width, height, fixedSampleLocations), &texture, GL_void_return) /* 2433 */ GL_PROC(void, gl, TextureImage3DEXT, glTextureImage3DEXT, TEXTUREIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels), (texture, target, level, internalformat, width, height, depth, border, format, type, pixels), &texture, GL_void_return) /* 2434 */ GL_PROC(void, gl, TextureImage3DMultisampleCoverageNV, glTextureImage3DMultisampleCoverageNV, TEXTUREIMAGE3DMULTISAMPLECOVERAGENV, (AND GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations), (texture, target, coverageSamples, colorSamples, internalFormat, width, height, depth, fixedSampleLocations), &texture, GL_void_return) /* 2435 */ GL_PROC(void, gl, TextureImage3DMultisampleNV, glTextureImage3DMultisampleNV, TEXTUREIMAGE3DMULTISAMPLENV, (AND GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations), (texture, target, samples, internalFormat, width, height, depth, fixedSampleLocations), &texture, GL_void_return) /* 2436 */ GL_PROC(void, gl, TexturePageCommitmentEXT, glTexturePageCommitmentEXT, TEXTUREPAGECOMMITMENTEXT, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 commit), (texture, level, xoffset, yoffset, zoffset, width, height, depth, commit), &texture, GL_void_return) /* 2437 */ GL_PROC(void, gl, TextureParameterIivEXT, glTextureParameterIivEXT, TEXTUREPARAMETERIIVEXT, (AND GLuint texture, GLenum target, GLenum pname, const GLint *params), (texture, target, pname, params), &texture, GL_void_return) /* 2438 */ GL_PROC(void, gl, TextureParameterIuivEXT, glTextureParameterIuivEXT, TEXTUREPARAMETERIUIVEXT, (AND GLuint texture, GLenum target, GLenum pname, const GLuint *params), (texture, target, pname, params), &texture, GL_void_return) /* 2439 */ GL_PROC(void, gl, TextureParameterfEXT, glTextureParameterfEXT, TEXTUREPARAMETERFEXT, (AND GLuint texture, GLenum target, GLenum pname, GLfloat param), (texture, target, pname, param), &texture, GL_void_return) /* 2440 */ GL_PROC(void, gl, TextureParameterfvEXT, glTextureParameterfvEXT, TEXTUREPARAMETERFVEXT, (AND GLuint texture, GLenum target, GLenum pname, const GLfloat *params), (texture, target, pname, params), &texture, GL_void_return) /* 2441 */ GL_PROC(void, gl, TextureParameteriEXT, glTextureParameteriEXT, TEXTUREPARAMETERIEXT, (AND GLuint texture, GLenum target, GLenum pname, GLint param), (texture, target, pname, param), &texture, GL_void_return) /* 2442 */ GL_PROC(void, gl, TextureParameterivEXT, glTextureParameterivEXT, TEXTUREPARAMETERIVEXT, (AND GLuint texture, GLenum target, GLenum pname, const GLint *params), (texture, target, pname, params), &texture, GL_void_return) /* 2443 */ GL_PROC(void, gl, TextureRangeAPPLE, glTextureRangeAPPLE, TEXTURERANGEAPPLE, (AND GLenum target, GLsizei length, const void *pointer), (target, length, pointer), &target, GL_void_return) /* 2444 */ GL_PROC(void, gl, TextureRenderbufferEXT, glTextureRenderbufferEXT, TEXTURERENDERBUFFEREXT, (AND GLuint texture, GLenum target, GLuint renderbuffer), (texture, target, renderbuffer), &texture, GL_void_return) /* 2445 */ GL_PROC(void, gl, TextureStorage1DEXT, glTextureStorage1DEXT, TEXTURESTORAGE1DEXT, (AND GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width), (texture, target, levels, internalformat, width), &texture, GL_void_return) /* 2446 */ GL_PROC(void, gl, TextureStorage2DEXT, glTextureStorage2DEXT, TEXTURESTORAGE2DEXT, (AND GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height), (texture, target, levels, internalformat, width, height), &texture, GL_void_return) /* 2447 */ GL_PROC(void, gl, TextureStorage2DMultisampleEXT, glTextureStorage2DMultisampleEXT, TEXTURESTORAGE2DMULTISAMPLEEXT, (AND GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations), (texture, target, samples, internalformat, width, height, fixedsamplelocations), &texture, GL_void_return) /* 2448 */ GL_PROC(void, gl, TextureStorage3DEXT, glTextureStorage3DEXT, TEXTURESTORAGE3DEXT, (AND GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth), (texture, target, levels, internalformat, width, height, depth), &texture, GL_void_return) /* 2449 */ GL_PROC(void, gl, TextureStorage3DMultisampleEXT, glTextureStorage3DMultisampleEXT, TEXTURESTORAGE3DMULTISAMPLEEXT, (AND GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations), (texture, target, samples, internalformat, width, height, depth, fixedsamplelocations), &texture, GL_void_return) /* 2450 */ GL_PROC(void, gl, TextureStorageSparseAMD, glTextureStorageSparseAMD, TEXTURESTORAGESPARSEAMD, (AND GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags), (texture, target, internalFormat, width, height, depth, layers, flags), &texture, GL_void_return) /* 2451 */ GL_PROC(void, gl, TextureSubImage1DEXT, glTextureSubImage1DEXT, TEXTURESUBIMAGE1DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels), (texture, target, level, xoffset, width, format, type, pixels), &texture, GL_void_return) /* 2452 */ GL_PROC(void, gl, TextureSubImage2DEXT, glTextureSubImage2DEXT, TEXTURESUBIMAGE2DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels), (texture, target, level, xoffset, yoffset, width, height, format, type, pixels), &texture, GL_void_return) /* 2453 */ GL_PROC(void, gl, TextureSubImage3DEXT, glTextureSubImage3DEXT, TEXTURESUBIMAGE3DEXT, (AND GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels), (texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &texture, GL_void_return) /* 2454 */ GL_PROC(void, gl, TextureView, glTextureView, TEXTUREVIEW, (AND GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers), (texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers), &texture, GL_void_return) /* 2455 */ GL_PROC(void, gl, TransformFeedbackAttribsNV, glTransformFeedbackAttribsNV, TRANSFORMFEEDBACKATTRIBSNV, (AND GLsizei count, const GLint *attribs, GLenum bufferMode), (count, attribs, bufferMode), &count, GL_void_return) /* 2456 */ GL_PROC(void, gl, TransformFeedbackStreamAttribsNV, glTransformFeedbackStreamAttribsNV, TRANSFORMFEEDBACKSTREAMATTRIBSNV, (AND GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode), (count, attribs, nbuffers, bufstreams, bufferMode), &count, GL_void_return) /* 2457 */ GL_PROC(void, gl, TransformFeedbackVaryings, glTransformFeedbackVaryings, TRANSFORMFEEDBACKVARYINGS, (AND GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode), (program, count, varyings, bufferMode), &program, GL_void_return) /* 2458 */ GL_PROC(void, gl, TransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, TRANSFORMFEEDBACKVARYINGSEXT, (AND GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode), (program, count, varyings, bufferMode), &program, GL_void_return) /* 2459 */ GL_PROC(void, gl, TransformFeedbackVaryingsNV, glTransformFeedbackVaryingsNV, TRANSFORMFEEDBACKVARYINGSNV, (AND GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode), (program, count, locations, bufferMode), &program, GL_void_return) /* 2460 */ GL_PROC(void, gl, TransformPathNV, glTransformPathNV, TRANSFORMPATHNV, (AND GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues), (resultPath, srcPath, transformType, transformValues), &resultPath, GL_void_return) /* 2461 */ GL_PROC(void, gl, TranslatexOES, glTranslatexOES, TRANSLATEXOES, (AND GLfixed x, GLfixed y, GLfixed z), (x, y, z), &x, GL_void_return) /* 2462 */ GL_PROC(void, gl, Uniform1d, glUniform1d, UNIFORM1D, (AND GLint location, GLdouble x), (location, x), &location, GL_void_return) /* 2463 */ GL_PROC(void, gl, Uniform1dv, glUniform1dv, UNIFORM1DV, (AND GLint location, GLsizei count, const GLdouble *value), (location, count, value), &location, GL_void_return) /* 2464 */ GL_PROC(void, gl, Uniform1f, glUniform1f, UNIFORM1F, (AND GLint location, GLfloat v0), (location, v0), &location, GL_void_return) /* 2465 */ GL_PROC(void, gl, Uniform1fv, glUniform1fv, UNIFORM1FV, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) /* 2466 */ GL_PROC(void, gl, Uniform1i, glUniform1i, UNIFORM1I, (AND GLint location, GLint v0), (location, v0), &location, GL_void_return) /* 2467 */ GL_PROC(void, gl, Uniform1i64NV, glUniform1i64NV, UNIFORM1I64NV, (AND GLint location, GLint64EXT x), (location, x), &location, GL_void_return) /* 2468 */ GL_PROC(void, gl, Uniform1i64vNV, glUniform1i64vNV, UNIFORM1I64VNV, (AND GLint location, GLsizei count, const GLint64EXT *value), (location, count, value), &location, GL_void_return) /* 2469 */ GL_PROC(void, gl, Uniform1iv, glUniform1iv, UNIFORM1IV, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) /* 2470 */ GL_PROC(void, gl, Uniform1ui, glUniform1ui, UNIFORM1UI, (AND GLint location, GLuint v0), (location, v0), &location, GL_void_return) /* 2471 */ GL_PROC(void, gl, Uniform1ui64NV, glUniform1ui64NV, UNIFORM1UI64NV, (AND GLint location, GLuint64EXT x), (location, x), &location, GL_void_return) /* 2472 */ GL_PROC(void, gl, Uniform1ui64vNV, glUniform1ui64vNV, UNIFORM1UI64VNV, (AND GLint location, GLsizei count, const GLuint64EXT *value), (location, count, value), &location, GL_void_return) /* 2473 */ GL_PROC(void, gl, Uniform1uiEXT, glUniform1uiEXT, UNIFORM1UIEXT, (AND GLint location, GLuint v0), (location, v0), &location, GL_void_return) /* 2474 */ GL_PROC(void, gl, Uniform1uiv, glUniform1uiv, UNIFORM1UIV, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) /* 2475 */ GL_PROC(void, gl, Uniform1uivEXT, glUniform1uivEXT, UNIFORM1UIVEXT, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) /* 2476 */ GL_PROC(void, gl, Uniform2d, glUniform2d, UNIFORM2D, (AND GLint location, GLdouble x, GLdouble y), (location, x, y), &location, GL_void_return) /* 2477 */ GL_PROC(void, gl, Uniform2dv, glUniform2dv, UNIFORM2DV, (AND GLint location, GLsizei count, const GLdouble *value), (location, count, value), &location, GL_void_return) /* 2478 */ GL_PROC(void, gl, Uniform2f, glUniform2f, UNIFORM2F, (AND GLint location, GLfloat v0, GLfloat v1), (location, v0, v1), &location, GL_void_return) /* 2479 */ GL_PROC(void, gl, Uniform2fv, glUniform2fv, UNIFORM2FV, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) /* 2480 */ GL_PROC(void, gl, Uniform2i, glUniform2i, UNIFORM2I, (AND GLint location, GLint v0, GLint v1), (location, v0, v1), &location, GL_void_return) /* 2481 */ GL_PROC(void, gl, Uniform2i64NV, glUniform2i64NV, UNIFORM2I64NV, (AND GLint location, GLint64EXT x, GLint64EXT y), (location, x, y), &location, GL_void_return) /* 2482 */ GL_PROC(void, gl, Uniform2i64vNV, glUniform2i64vNV, UNIFORM2I64VNV, (AND GLint location, GLsizei count, const GLint64EXT *value), (location, count, value), &location, GL_void_return) /* 2483 */ GL_PROC(void, gl, Uniform2iv, glUniform2iv, UNIFORM2IV, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) /* 2484 */ GL_PROC(void, gl, Uniform2ui, glUniform2ui, UNIFORM2UI, (AND GLint location, GLuint v0, GLuint v1), (location, v0, v1), &location, GL_void_return) /* 2485 */ GL_PROC(void, gl, Uniform2ui64NV, glUniform2ui64NV, UNIFORM2UI64NV, (AND GLint location, GLuint64EXT x, GLuint64EXT y), (location, x, y), &location, GL_void_return) /* 2486 */ GL_PROC(void, gl, Uniform2ui64vNV, glUniform2ui64vNV, UNIFORM2UI64VNV, (AND GLint location, GLsizei count, const GLuint64EXT *value), (location, count, value), &location, GL_void_return) /* 2487 */ GL_PROC(void, gl, Uniform2uiEXT, glUniform2uiEXT, UNIFORM2UIEXT, (AND GLint location, GLuint v0, GLuint v1), (location, v0, v1), &location, GL_void_return) /* 2488 */ GL_PROC(void, gl, Uniform2uiv, glUniform2uiv, UNIFORM2UIV, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) /* 2489 */ GL_PROC(void, gl, Uniform2uivEXT, glUniform2uivEXT, UNIFORM2UIVEXT, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) /* 2490 */ GL_PROC(void, gl, Uniform3d, glUniform3d, UNIFORM3D, (AND GLint location, GLdouble x, GLdouble y, GLdouble z), (location, x, y, z), &location, GL_void_return) /* 2491 */ GL_PROC(void, gl, Uniform3dv, glUniform3dv, UNIFORM3DV, (AND GLint location, GLsizei count, const GLdouble *value), (location, count, value), &location, GL_void_return) /* 2492 */ GL_PROC(void, gl, Uniform3f, glUniform3f, UNIFORM3F, (AND GLint location, GLfloat v0, GLfloat v1, GLfloat v2), (location, v0, v1, v2), &location, GL_void_return) /* 2493 */ GL_PROC(void, gl, Uniform3fv, glUniform3fv, UNIFORM3FV, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) /* 2494 */ GL_PROC(void, gl, Uniform3i, glUniform3i, UNIFORM3I, (AND GLint location, GLint v0, GLint v1, GLint v2), (location, v0, v1, v2), &location, GL_void_return) /* 2495 */ GL_PROC(void, gl, Uniform3i64NV, glUniform3i64NV, UNIFORM3I64NV, (AND GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z), (location, x, y, z), &location, GL_void_return) /* 2496 */ GL_PROC(void, gl, Uniform3i64vNV, glUniform3i64vNV, UNIFORM3I64VNV, (AND GLint location, GLsizei count, const GLint64EXT *value), (location, count, value), &location, GL_void_return) /* 2497 */ GL_PROC(void, gl, Uniform3iv, glUniform3iv, UNIFORM3IV, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) /* 2498 */ GL_PROC(void, gl, Uniform3ui, glUniform3ui, UNIFORM3UI, (AND GLint location, GLuint v0, GLuint v1, GLuint v2), (location, v0, v1, v2), &location, GL_void_return) /* 2499 */ GL_PROC(void, gl, Uniform3ui64NV, glUniform3ui64NV, UNIFORM3UI64NV, (AND GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z), (location, x, y, z), &location, GL_void_return) /* 2500 */ GL_PROC(void, gl, Uniform3ui64vNV, glUniform3ui64vNV, UNIFORM3UI64VNV, (AND GLint location, GLsizei count, const GLuint64EXT *value), (location, count, value), &location, GL_void_return) /* 2501 */ GL_PROC(void, gl, Uniform3uiEXT, glUniform3uiEXT, UNIFORM3UIEXT, (AND GLint location, GLuint v0, GLuint v1, GLuint v2), (location, v0, v1, v2), &location, GL_void_return) /* 2502 */ GL_PROC(void, gl, Uniform3uiv, glUniform3uiv, UNIFORM3UIV, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) /* 2503 */ GL_PROC(void, gl, Uniform3uivEXT, glUniform3uivEXT, UNIFORM3UIVEXT, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) /* 2504 */ GL_PROC(void, gl, Uniform4d, glUniform4d, UNIFORM4D, (AND GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (location, x, y, z, w), &location, GL_void_return) /* 2505 */ GL_PROC(void, gl, Uniform4dv, glUniform4dv, UNIFORM4DV, (AND GLint location, GLsizei count, const GLdouble *value), (location, count, value), &location, GL_void_return) /* 2506 */ GL_PROC(void, gl, Uniform4f, glUniform4f, UNIFORM4F, (AND GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3), (location, v0, v1, v2, v3), &location, GL_void_return) /* 2507 */ GL_PROC(void, gl, Uniform4fv, glUniform4fv, UNIFORM4FV, (AND GLint location, GLsizei count, const GLfloat *value), (location, count, value), &location, GL_void_return) /* 2508 */ GL_PROC(void, gl, Uniform4i, glUniform4i, UNIFORM4I, (AND GLint location, GLint v0, GLint v1, GLint v2, GLint v3), (location, v0, v1, v2, v3), &location, GL_void_return) /* 2509 */ GL_PROC(void, gl, Uniform4i64NV, glUniform4i64NV, UNIFORM4I64NV, (AND GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w), (location, x, y, z, w), &location, GL_void_return) /* 2510 */ GL_PROC(void, gl, Uniform4i64vNV, glUniform4i64vNV, UNIFORM4I64VNV, (AND GLint location, GLsizei count, const GLint64EXT *value), (location, count, value), &location, GL_void_return) /* 2511 */ GL_PROC(void, gl, Uniform4iv, glUniform4iv, UNIFORM4IV, (AND GLint location, GLsizei count, const GLint *value), (location, count, value), &location, GL_void_return) /* 2512 */ GL_PROC(void, gl, Uniform4ui, glUniform4ui, UNIFORM4UI, (AND GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3), (location, v0, v1, v2, v3), &location, GL_void_return) /* 2513 */ GL_PROC(void, gl, Uniform4ui64NV, glUniform4ui64NV, UNIFORM4UI64NV, (AND GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w), (location, x, y, z, w), &location, GL_void_return) /* 2514 */ GL_PROC(void, gl, Uniform4ui64vNV, glUniform4ui64vNV, UNIFORM4UI64VNV, (AND GLint location, GLsizei count, const GLuint64EXT *value), (location, count, value), &location, GL_void_return) /* 2515 */ GL_PROC(void, gl, Uniform4uiEXT, glUniform4uiEXT, UNIFORM4UIEXT, (AND GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3), (location, v0, v1, v2, v3), &location, GL_void_return) /* 2516 */ GL_PROC(void, gl, Uniform4uiv, glUniform4uiv, UNIFORM4UIV, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) /* 2517 */ GL_PROC(void, gl, Uniform4uivEXT, glUniform4uivEXT, UNIFORM4UIVEXT, (AND GLint location, GLsizei count, const GLuint *value), (location, count, value), &location, GL_void_return) /* 2518 */ GL_PROC(void, gl, UniformBlockBinding, glUniformBlockBinding, UNIFORMBLOCKBINDING, (AND GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding), (program, uniformBlockIndex, uniformBlockBinding), &program, GL_void_return) /* 2519 */ GL_PROC(void, gl, UniformBufferEXT, glUniformBufferEXT, UNIFORMBUFFEREXT, (AND GLuint program, GLint location, GLuint buffer), (program, location, buffer), &program, GL_void_return) /* 2520 */ GL_PROC(void, gl, UniformHandleui64ARB, glUniformHandleui64ARB, UNIFORMHANDLEUI64ARB, (AND GLint location, GLuint64 value), (location, value), &location, GL_void_return) /* 2521 */ GL_PROC(void, gl, UniformHandleui64NV, glUniformHandleui64NV, UNIFORMHANDLEUI64NV, (AND GLint location, GLuint64 value), (location, value), &location, GL_void_return) /* 2522 */ GL_PROC(void, gl, UniformHandleui64vARB, glUniformHandleui64vARB, UNIFORMHANDLEUI64VARB, (AND GLint location, GLsizei count, const GLuint64 *value), (location, count, value), &location, GL_void_return) /* 2523 */ GL_PROC(void, gl, UniformHandleui64vNV, glUniformHandleui64vNV, UNIFORMHANDLEUI64VNV, (AND GLint location, GLsizei count, const GLuint64 *value), (location, count, value), &location, GL_void_return) /* 2524 */ GL_PROC(void, gl, UniformMatrix2dv, glUniformMatrix2dv, UNIFORMMATRIX2DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) /* 2525 */ GL_PROC(void, gl, UniformMatrix2fv, glUniformMatrix2fv, UNIFORMMATRIX2FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) /* 2526 */ GL_PROC(void, gl, UniformMatrix2x3dv, glUniformMatrix2x3dv, UNIFORMMATRIX2X3DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) /* 2527 */ GL_PROC(void, gl, UniformMatrix2x3fv, glUniformMatrix2x3fv, UNIFORMMATRIX2X3FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) /* 2528 */ GL_PROC(void, gl, UniformMatrix2x4dv, glUniformMatrix2x4dv, UNIFORMMATRIX2X4DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) /* 2529 */ GL_PROC(void, gl, UniformMatrix2x4fv, glUniformMatrix2x4fv, UNIFORMMATRIX2X4FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) /* 2530 */ GL_PROC(void, gl, UniformMatrix3dv, glUniformMatrix3dv, UNIFORMMATRIX3DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) /* 2531 */ GL_PROC(void, gl, UniformMatrix3fv, glUniformMatrix3fv, UNIFORMMATRIX3FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) /* 2532 */ GL_PROC(void, gl, UniformMatrix3x2dv, glUniformMatrix3x2dv, UNIFORMMATRIX3X2DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) /* 2533 */ GL_PROC(void, gl, UniformMatrix3x2fv, glUniformMatrix3x2fv, UNIFORMMATRIX3X2FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) /* 2534 */ GL_PROC(void, gl, UniformMatrix3x4dv, glUniformMatrix3x4dv, UNIFORMMATRIX3X4DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) /* 2535 */ GL_PROC(void, gl, UniformMatrix3x4fv, glUniformMatrix3x4fv, UNIFORMMATRIX3X4FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) /* 2536 */ GL_PROC(void, gl, UniformMatrix4dv, glUniformMatrix4dv, UNIFORMMATRIX4DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) /* 2537 */ GL_PROC(void, gl, UniformMatrix4fv, glUniformMatrix4fv, UNIFORMMATRIX4FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) /* 2538 */ GL_PROC(void, gl, UniformMatrix4x2dv, glUniformMatrix4x2dv, UNIFORMMATRIX4X2DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) /* 2539 */ GL_PROC(void, gl, UniformMatrix4x2fv, glUniformMatrix4x2fv, UNIFORMMATRIX4X2FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) /* 2540 */ GL_PROC(void, gl, UniformMatrix4x3dv, glUniformMatrix4x3dv, UNIFORMMATRIX4X3DV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLdouble *value), (location, count, transpose, value), &location, GL_void_return) /* 2541 */ GL_PROC(void, gl, UniformMatrix4x3fv, glUniformMatrix4x3fv, UNIFORMMATRIX4X3FV, (AND GLint location, GLsizei count, GLboolean32 transpose, const GLfloat *value), (location, count, transpose, value), &location, GL_void_return) /* 2542 */ GL_PROC(void, gl, UniformSubroutinesuiv, glUniformSubroutinesuiv, UNIFORMSUBROUTINESUIV, (AND GLenum shadertype, GLsizei count, const GLuint *indices), (shadertype, count, indices), &shadertype, GL_void_return) /* 2543 */ GL_PROC(void, gl, Uniformui64NV, glUniformui64NV, UNIFORMUI64NV, (AND GLint location, GLuint64EXT value), (location, value), &location, GL_void_return) /* 2544 */ GL_PROC(void, gl, Uniformui64vNV, glUniformui64vNV, UNIFORMUI64VNV, (AND GLint location, GLsizei count, const GLuint64EXT *value), (location, count, value), &location, GL_void_return) /* 2545 */ GL_PROC(GLboolean, gl, UnmapNamedBufferEXT, glUnmapNamedBufferEXT, UNMAPNAMEDBUFFEREXT, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) /* 2546 */ GL_PROC(void, gl, UnmapTexture2DINTEL, glUnmapTexture2DINTEL, UNMAPTEXTURE2DINTEL, (AND GLuint texture, GLint level), (texture, level), &texture, GL_void_return) /* 2547 */ GL_PROC(void, gl, UseProgram, glUseProgram, USEPROGRAM, (AND GLuint program), (program), &program, GL_void_return) /* 2548 */ GL_PROC(void, gl, UseProgramStages, glUseProgramStages, USEPROGRAMSTAGES, (AND GLuint pipeline, GLbitfield stages, GLuint program), (pipeline, stages, program), &pipeline, GL_void_return) /* 2549 */ GL_PROC(void, gl, UseShaderProgramEXT, glUseShaderProgramEXT, USESHADERPROGRAMEXT, (AND GLenum type, GLuint program), (type, program), &type, GL_void_return) /* 2550 */ GL_PROC(void, gl, VDPAUFiniNV, glVDPAUFiniNV, VDPAUFININV, (NOTHING), (), NULL, GL_void_return) /* 2551 */ GL_PROC(void, gl, VDPAUGetSurfaceivNV, glVDPAUGetSurfaceivNV, VDPAUGETSURFACEIVNV, (AND GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values), (surface, pname, bufSize, length, values), &surface, GL_void_return) /* 2552 */ GL_PROC(void, gl, VDPAUInitNV, glVDPAUInitNV, VDPAUINITNV, (AND const void *vdpDevice, const void *getProcAddress), (vdpDevice, getProcAddress), &vdpDevice, GL_void_return) /* 2553 */ GL_PROC(GLboolean, gl, VDPAUIsSurfaceNV, glVDPAUIsSurfaceNV, VDPAUISSURFACENV, (AND GLvdpauSurfaceNV surface), (surface), &surface, return (GLboolean)) /* 2554 */ GL_PROC(void, gl, VDPAUMapSurfacesNV, glVDPAUMapSurfacesNV, VDPAUMAPSURFACESNV, (AND GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces), (numSurfaces, surfaces), &numSurfaces, GL_void_return) /* 2555 */ GL_PROC(GLvdpauSurfaceNV, gl, VDPAURegisterOutputSurfaceNV, glVDPAURegisterOutputSurfaceNV, VDPAUREGISTEROUTPUTSURFACENV, (AND const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames), (vdpSurface, target, numTextureNames, textureNames), &vdpSurface, return (GLvdpauSurfaceNV)) /* 2556 */ GL_PROC(GLvdpauSurfaceNV, gl, VDPAURegisterVideoSurfaceNV, glVDPAURegisterVideoSurfaceNV, VDPAUREGISTERVIDEOSURFACENV, (AND const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames), (vdpSurface, target, numTextureNames, textureNames), &vdpSurface, return (GLvdpauSurfaceNV)) /* 2557 */ GL_PROC(void, gl, VDPAUSurfaceAccessNV, glVDPAUSurfaceAccessNV, VDPAUSURFACEACCESSNV, (AND GLvdpauSurfaceNV surface, GLenum access), (surface, access), &surface, GL_void_return) /* 2558 */ GL_PROC(void, gl, VDPAUUnmapSurfacesNV, glVDPAUUnmapSurfacesNV, VDPAUUNMAPSURFACESNV, (AND GLsizei numSurface, const GLvdpauSurfaceNV *surfaces), (numSurface, surfaces), &numSurface, GL_void_return) /* 2559 */ GL_PROC(void, gl, VDPAUUnregisterSurfaceNV, glVDPAUUnregisterSurfaceNV, VDPAUUNREGISTERSURFACENV, (AND GLvdpauSurfaceNV surface), (surface), &surface, GL_void_return) /* 2560 */ GL_PROC(void, gl, ValidateProgram, glValidateProgram, VALIDATEPROGRAM, (AND GLuint program), (program), &program, GL_void_return) /* 2561 */ GL_PROC(void, gl, ValidateProgramPipeline, glValidateProgramPipeline, VALIDATEPROGRAMPIPELINE, (AND GLuint pipeline), (pipeline), &pipeline, GL_void_return) /* 2562 */ GL_PROC(void, gl, Vertex2bOES, glVertex2bOES, VERTEX2BOES, (AND GLbyte32 x, GLbyte32 y), (x, y), &x, GL_void_return) /* 2563 */ GL_PROC(void, gl, Vertex2bvOES, glVertex2bvOES, VERTEX2BVOES, (AND const GLbyte *coords), (coords), &coords, GL_void_return) /* 2564 */ GL_PROC(void, gl, Vertex2xOES, glVertex2xOES, VERTEX2XOES, (AND GLfixed x), (x), &x, GL_void_return) /* 2565 */ GL_PROC(void, gl, Vertex2xvOES, glVertex2xvOES, VERTEX2XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) /* 2566 */ GL_PROC(void, gl, Vertex3bOES, glVertex3bOES, VERTEX3BOES, (AND GLbyte32 x, GLbyte32 y, GLbyte32 z), (x, y, z), &x, GL_void_return) /* 2567 */ GL_PROC(void, gl, Vertex3bvOES, glVertex3bvOES, VERTEX3BVOES, (AND const GLbyte *coords), (coords), &coords, GL_void_return) /* 2568 */ GL_PROC(void, gl, Vertex3xOES, glVertex3xOES, VERTEX3XOES, (AND GLfixed x, GLfixed y), (x, y), &x, GL_void_return) /* 2569 */ GL_PROC(void, gl, Vertex3xvOES, glVertex3xvOES, VERTEX3XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) /* 2570 */ GL_PROC(void, gl, Vertex4bOES, glVertex4bOES, VERTEX4BOES, (AND GLbyte32 x, GLbyte32 y, GLbyte32 z, GLbyte32 w), (x, y, z, w), &x, GL_void_return) /* 2571 */ GL_PROC(void, gl, Vertex4bvOES, glVertex4bvOES, VERTEX4BVOES, (AND const GLbyte *coords), (coords), &coords, GL_void_return) /* 2572 */ GL_PROC(void, gl, Vertex4xOES, glVertex4xOES, VERTEX4XOES, (AND GLfixed x, GLfixed y, GLfixed z), (x, y, z), &x, GL_void_return) /* 2573 */ GL_PROC(void, gl, Vertex4xvOES, glVertex4xvOES, VERTEX4XVOES, (AND const GLfixed *coords), (coords), &coords, GL_void_return) /* 2574 */ GL_PROC(void, gl, VertexArrayBindVertexBufferEXT, glVertexArrayBindVertexBufferEXT, VERTEXARRAYBINDVERTEXBUFFEREXT, (AND GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride), (vaobj, bindingindex, buffer, offset, stride), &vaobj, GL_void_return) /* 2575 */ GL_PROC(void, gl, VertexArrayColorOffsetEXT, glVertexArrayColorOffsetEXT, VERTEXARRAYCOLOROFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, size, type, stride, offset), &vaobj, GL_void_return) /* 2576 */ GL_PROC(void, gl, VertexArrayEdgeFlagOffsetEXT, glVertexArrayEdgeFlagOffsetEXT, VERTEXARRAYEDGEFLAGOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset), (vaobj, buffer, stride, offset), &vaobj, GL_void_return) /* 2577 */ GL_PROC(void, gl, VertexArrayFogCoordOffsetEXT, glVertexArrayFogCoordOffsetEXT, VERTEXARRAYFOGCOORDOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, type, stride, offset), &vaobj, GL_void_return) /* 2578 */ GL_PROC(void, gl, VertexArrayIndexOffsetEXT, glVertexArrayIndexOffsetEXT, VERTEXARRAYINDEXOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, type, stride, offset), &vaobj, GL_void_return) /* 2579 */ GL_PROC(void, gl, VertexArrayMultiTexCoordOffsetEXT, glVertexArrayMultiTexCoordOffsetEXT, VERTEXARRAYMULTITEXCOORDOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, texunit, size, type, stride, offset), &vaobj, GL_void_return) /* 2580 */ GL_PROC(void, gl, VertexArrayNormalOffsetEXT, glVertexArrayNormalOffsetEXT, VERTEXARRAYNORMALOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, type, stride, offset), &vaobj, GL_void_return) /* 2581 */ GL_PROC(void, gl, VertexArraySecondaryColorOffsetEXT, glVertexArraySecondaryColorOffsetEXT, VERTEXARRAYSECONDARYCOLOROFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, size, type, stride, offset), &vaobj, GL_void_return) /* 2582 */ GL_PROC(void, gl, VertexArrayTexCoordOffsetEXT, glVertexArrayTexCoordOffsetEXT, VERTEXARRAYTEXCOORDOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, size, type, stride, offset), &vaobj, GL_void_return) /* 2583 */ GL_PROC(void, gl, VertexArrayVertexAttribBindingEXT, glVertexArrayVertexAttribBindingEXT, VERTEXARRAYVERTEXATTRIBBINDINGEXT, (AND GLuint vaobj, GLuint attribindex, GLuint bindingindex), (vaobj, attribindex, bindingindex), &vaobj, GL_void_return) /* 2584 */ GL_PROC(void, gl, VertexArrayVertexAttribDivisorEXT, glVertexArrayVertexAttribDivisorEXT, VERTEXARRAYVERTEXATTRIBDIVISOREXT, (AND GLuint vaobj, GLuint index, GLuint divisor), (vaobj, index, divisor), &vaobj, GL_void_return) /* 2585 */ GL_PROC(void, gl, VertexArrayVertexAttribFormatEXT, glVertexArrayVertexAttribFormatEXT, VERTEXARRAYVERTEXATTRIBFORMATEXT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset), (vaobj, attribindex, size, type, normalized, relativeoffset), &vaobj, GL_void_return) /* 2586 */ GL_PROC(void, gl, VertexArrayVertexAttribIFormatEXT, glVertexArrayVertexAttribIFormatEXT, VERTEXARRAYVERTEXATTRIBIFORMATEXT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (vaobj, attribindex, size, type, relativeoffset), &vaobj, GL_void_return) /* 2587 */ GL_PROC(void, gl, VertexArrayVertexAttribIOffsetEXT, glVertexArrayVertexAttribIOffsetEXT, VERTEXARRAYVERTEXATTRIBIOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, index, size, type, stride, offset), &vaobj, GL_void_return) /* 2588 */ GL_PROC(void, gl, VertexArrayVertexAttribLFormatEXT, glVertexArrayVertexAttribLFormatEXT, VERTEXARRAYVERTEXATTRIBLFORMATEXT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (vaobj, attribindex, size, type, relativeoffset), &vaobj, GL_void_return) /* 2589 */ GL_PROC(void, gl, VertexArrayVertexAttribLOffsetEXT, glVertexArrayVertexAttribLOffsetEXT, VERTEXARRAYVERTEXATTRIBLOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, index, size, type, stride, offset), &vaobj, GL_void_return) /* 2590 */ GL_PROC(void, gl, VertexArrayVertexAttribOffsetEXT, glVertexArrayVertexAttribOffsetEXT, VERTEXARRAYVERTEXATTRIBOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, GLintptr offset), (vaobj, buffer, index, size, type, normalized, stride, offset), &vaobj, GL_void_return) /* 2591 */ GL_PROC(void, gl, VertexArrayVertexBindingDivisorEXT, glVertexArrayVertexBindingDivisorEXT, VERTEXARRAYVERTEXBINDINGDIVISOREXT, (AND GLuint vaobj, GLuint bindingindex, GLuint divisor), (vaobj, bindingindex, divisor), &vaobj, GL_void_return) /* 2592 */ GL_PROC(void, gl, VertexArrayVertexOffsetEXT, glVertexArrayVertexOffsetEXT, VERTEXARRAYVERTEXOFFSETEXT, (AND GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset), (vaobj, buffer, size, type, stride, offset), &vaobj, GL_void_return) /* 2593 */ GL_PROC(void, gl, VertexAttrib1d, glVertexAttrib1d, VERTEXATTRIB1D, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) /* 2594 */ GL_PROC(void, gl, VertexAttrib1dv, glVertexAttrib1dv, VERTEXATTRIB1DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 2595 */ GL_PROC(void, gl, VertexAttrib1f, glVertexAttrib1f, VERTEXATTRIB1F, (AND GLuint index, GLfloat x), (index, x), &index, GL_void_return) /* 2596 */ GL_PROC(void, gl, VertexAttrib1fv, glVertexAttrib1fv, VERTEXATTRIB1FV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) /* 2597 */ GL_PROC(void, gl, VertexAttrib1s, glVertexAttrib1s, VERTEXATTRIB1S, (AND GLuint index, GLshort32 x), (index, x), &index, GL_void_return) /* 2598 */ GL_PROC(void, gl, VertexAttrib1sv, glVertexAttrib1sv, VERTEXATTRIB1SV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 2599 */ GL_PROC(void, gl, VertexAttrib2d, glVertexAttrib2d, VERTEXATTRIB2D, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) /* 2600 */ GL_PROC(void, gl, VertexAttrib2dv, glVertexAttrib2dv, VERTEXATTRIB2DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 2601 */ GL_PROC(void, gl, VertexAttrib2f, glVertexAttrib2f, VERTEXATTRIB2F, (AND GLuint index, GLfloat x, GLfloat y), (index, x, y), &index, GL_void_return) /* 2602 */ GL_PROC(void, gl, VertexAttrib2fv, glVertexAttrib2fv, VERTEXATTRIB2FV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) /* 2603 */ GL_PROC(void, gl, VertexAttrib2s, glVertexAttrib2s, VERTEXATTRIB2S, (AND GLuint index, GLshort32 x, GLshort32 y), (index, x, y), &index, GL_void_return) /* 2604 */ GL_PROC(void, gl, VertexAttrib2sv, glVertexAttrib2sv, VERTEXATTRIB2SV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 2605 */ GL_PROC(void, gl, VertexAttrib3d, glVertexAttrib3d, VERTEXATTRIB3D, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) /* 2606 */ GL_PROC(void, gl, VertexAttrib3dv, glVertexAttrib3dv, VERTEXATTRIB3DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 2607 */ GL_PROC(void, gl, VertexAttrib3f, glVertexAttrib3f, VERTEXATTRIB3F, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z), (index, x, y, z), &index, GL_void_return) /* 2608 */ GL_PROC(void, gl, VertexAttrib3fv, glVertexAttrib3fv, VERTEXATTRIB3FV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) /* 2609 */ GL_PROC(void, gl, VertexAttrib3s, glVertexAttrib3s, VERTEXATTRIB3S, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z), (index, x, y, z), &index, GL_void_return) /* 2610 */ GL_PROC(void, gl, VertexAttrib3sv, glVertexAttrib3sv, VERTEXATTRIB3SV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 2611 */ GL_PROC(void, gl, VertexAttrib4Nbv, glVertexAttrib4Nbv, VERTEXATTRIB4NBV, (AND GLuint index, const GLbyte *v), (index, v), &index, GL_void_return) /* 2612 */ GL_PROC(void, gl, VertexAttrib4Niv, glVertexAttrib4Niv, VERTEXATTRIB4NIV, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) /* 2613 */ GL_PROC(void, gl, VertexAttrib4Nsv, glVertexAttrib4Nsv, VERTEXATTRIB4NSV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 2614 */ GL_PROC(void, gl, VertexAttrib4Nub, glVertexAttrib4Nub, VERTEXATTRIB4NUB, (AND GLuint index, GLubyte32 x, GLubyte32 y, GLubyte32 z, GLubyte32 w), (index, x, y, z, w), &index, GL_void_return) /* 2615 */ GL_PROC(void, gl, VertexAttrib4Nubv, glVertexAttrib4Nubv, VERTEXATTRIB4NUBV, (AND GLuint index, const GLubyte *v), (index, v), &index, GL_void_return) /* 2616 */ GL_PROC(void, gl, VertexAttrib4Nuiv, glVertexAttrib4Nuiv, VERTEXATTRIB4NUIV, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) /* 2617 */ GL_PROC(void, gl, VertexAttrib4Nusv, glVertexAttrib4Nusv, VERTEXATTRIB4NUSV, (AND GLuint index, const GLushort *v), (index, v), &index, GL_void_return) /* 2618 */ GL_PROC(void, gl, VertexAttrib4bv, glVertexAttrib4bv, VERTEXATTRIB4BV, (AND GLuint index, const GLbyte *v), (index, v), &index, GL_void_return) /* 2619 */ GL_PROC(void, gl, VertexAttrib4d, glVertexAttrib4d, VERTEXATTRIB4D, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) /* 2620 */ GL_PROC(void, gl, VertexAttrib4dv, glVertexAttrib4dv, VERTEXATTRIB4DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 2621 */ GL_PROC(void, gl, VertexAttrib4f, glVertexAttrib4f, VERTEXATTRIB4F, (AND GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (index, x, y, z, w), &index, GL_void_return) /* 2622 */ GL_PROC(void, gl, VertexAttrib4fv, glVertexAttrib4fv, VERTEXATTRIB4FV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) /* 2623 */ GL_PROC(void, gl, VertexAttrib4iv, glVertexAttrib4iv, VERTEXATTRIB4IV, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) /* 2624 */ GL_PROC(void, gl, VertexAttrib4s, glVertexAttrib4s, VERTEXATTRIB4S, (AND GLuint index, GLshort32 x, GLshort32 y, GLshort32 z, GLshort32 w), (index, x, y, z, w), &index, GL_void_return) /* 2625 */ GL_PROC(void, gl, VertexAttrib4sv, glVertexAttrib4sv, VERTEXATTRIB4SV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 2626 */ GL_PROC(void, gl, VertexAttrib4ubv, glVertexAttrib4ubv, VERTEXATTRIB4UBV, (AND GLuint index, const GLubyte *v), (index, v), &index, GL_void_return) /* 2627 */ GL_PROC(void, gl, VertexAttrib4uiv, glVertexAttrib4uiv, VERTEXATTRIB4UIV, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) /* 2628 */ GL_PROC(void, gl, VertexAttrib4usv, glVertexAttrib4usv, VERTEXATTRIB4USV, (AND GLuint index, const GLushort *v), (index, v), &index, GL_void_return) /* 2629 */ GL_PROC(void, gl, VertexAttribBinding, glVertexAttribBinding, VERTEXATTRIBBINDING, (AND GLuint attribindex, GLuint bindingindex), (attribindex, bindingindex), &attribindex, GL_void_return) /* 2630 */ GL_PROC(void, gl, VertexAttribDivisor, glVertexAttribDivisor, VERTEXATTRIBDIVISOR, (AND GLuint index, GLuint divisor), (index, divisor), &index, GL_void_return) /* 2631 */ GL_PROC(void, gl, VertexAttribDivisorARB, glVertexAttribDivisorARB, VERTEXATTRIBDIVISORARB, (AND GLuint index, GLuint divisor), (index, divisor), &index, GL_void_return) /* 2632 */ GL_PROC(void, gl, VertexAttribFormat, glVertexAttribFormat, VERTEXATTRIBFORMAT, (AND GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset), (attribindex, size, type, normalized, relativeoffset), &attribindex, GL_void_return) /* 2633 */ GL_PROC(void, gl, VertexAttribFormatNV, glVertexAttribFormatNV, VERTEXATTRIBFORMATNV, (AND GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride), (index, size, type, normalized, stride), &index, GL_void_return) /* 2634 */ GL_PROC(void, gl, VertexAttribI1i, glVertexAttribI1i, VERTEXATTRIBI1I, (AND GLuint index, GLint x), (index, x), &index, GL_void_return) /* 2635 */ GL_PROC(void, gl, VertexAttribI1iEXT, glVertexAttribI1iEXT, VERTEXATTRIBI1IEXT, (AND GLuint index, GLint x), (index, x), &index, GL_void_return) /* 2636 */ GL_PROC(void, gl, VertexAttribI1iv, glVertexAttribI1iv, VERTEXATTRIBI1IV, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) /* 2637 */ GL_PROC(void, gl, VertexAttribI1ivEXT, glVertexAttribI1ivEXT, VERTEXATTRIBI1IVEXT, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) /* 2638 */ GL_PROC(void, gl, VertexAttribI1ui, glVertexAttribI1ui, VERTEXATTRIBI1UI, (AND GLuint index, GLuint x), (index, x), &index, GL_void_return) /* 2639 */ GL_PROC(void, gl, VertexAttribI1uiEXT, glVertexAttribI1uiEXT, VERTEXATTRIBI1UIEXT, (AND GLuint index, GLuint x), (index, x), &index, GL_void_return) /* 2640 */ GL_PROC(void, gl, VertexAttribI1uiv, glVertexAttribI1uiv, VERTEXATTRIBI1UIV, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) /* 2641 */ GL_PROC(void, gl, VertexAttribI1uivEXT, glVertexAttribI1uivEXT, VERTEXATTRIBI1UIVEXT, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) /* 2642 */ GL_PROC(void, gl, VertexAttribI2i, glVertexAttribI2i, VERTEXATTRIBI2I, (AND GLuint index, GLint x, GLint y), (index, x, y), &index, GL_void_return) /* 2643 */ GL_PROC(void, gl, VertexAttribI2iEXT, glVertexAttribI2iEXT, VERTEXATTRIBI2IEXT, (AND GLuint index, GLint x, GLint y), (index, x, y), &index, GL_void_return) /* 2644 */ GL_PROC(void, gl, VertexAttribI2iv, glVertexAttribI2iv, VERTEXATTRIBI2IV, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) /* 2645 */ GL_PROC(void, gl, VertexAttribI2ivEXT, glVertexAttribI2ivEXT, VERTEXATTRIBI2IVEXT, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) /* 2646 */ GL_PROC(void, gl, VertexAttribI2ui, glVertexAttribI2ui, VERTEXATTRIBI2UI, (AND GLuint index, GLuint x, GLuint y), (index, x, y), &index, GL_void_return) /* 2647 */ GL_PROC(void, gl, VertexAttribI2uiEXT, glVertexAttribI2uiEXT, VERTEXATTRIBI2UIEXT, (AND GLuint index, GLuint x, GLuint y), (index, x, y), &index, GL_void_return) /* 2648 */ GL_PROC(void, gl, VertexAttribI2uiv, glVertexAttribI2uiv, VERTEXATTRIBI2UIV, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) /* 2649 */ GL_PROC(void, gl, VertexAttribI2uivEXT, glVertexAttribI2uivEXT, VERTEXATTRIBI2UIVEXT, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) /* 2650 */ GL_PROC(void, gl, VertexAttribI3i, glVertexAttribI3i, VERTEXATTRIBI3I, (AND GLuint index, GLint x, GLint y, GLint z), (index, x, y, z), &index, GL_void_return) /* 2651 */ GL_PROC(void, gl, VertexAttribI3iEXT, glVertexAttribI3iEXT, VERTEXATTRIBI3IEXT, (AND GLuint index, GLint x, GLint y, GLint z), (index, x, y, z), &index, GL_void_return) /* 2652 */ GL_PROC(void, gl, VertexAttribI3iv, glVertexAttribI3iv, VERTEXATTRIBI3IV, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) /* 2653 */ GL_PROC(void, gl, VertexAttribI3ivEXT, glVertexAttribI3ivEXT, VERTEXATTRIBI3IVEXT, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) /* 2654 */ GL_PROC(void, gl, VertexAttribI3ui, glVertexAttribI3ui, VERTEXATTRIBI3UI, (AND GLuint index, GLuint x, GLuint y, GLuint z), (index, x, y, z), &index, GL_void_return) /* 2655 */ GL_PROC(void, gl, VertexAttribI3uiEXT, glVertexAttribI3uiEXT, VERTEXATTRIBI3UIEXT, (AND GLuint index, GLuint x, GLuint y, GLuint z), (index, x, y, z), &index, GL_void_return) /* 2656 */ GL_PROC(void, gl, VertexAttribI3uiv, glVertexAttribI3uiv, VERTEXATTRIBI3UIV, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) /* 2657 */ GL_PROC(void, gl, VertexAttribI3uivEXT, glVertexAttribI3uivEXT, VERTEXATTRIBI3UIVEXT, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) /* 2658 */ GL_PROC(void, gl, VertexAttribI4bv, glVertexAttribI4bv, VERTEXATTRIBI4BV, (AND GLuint index, const GLbyte *v), (index, v), &index, GL_void_return) /* 2659 */ GL_PROC(void, gl, VertexAttribI4bvEXT, glVertexAttribI4bvEXT, VERTEXATTRIBI4BVEXT, (AND GLuint index, const GLbyte *v), (index, v), &index, GL_void_return) /* 2660 */ GL_PROC(void, gl, VertexAttribI4i, glVertexAttribI4i, VERTEXATTRIBI4I, (AND GLuint index, GLint x, GLint y, GLint z, GLint w), (index, x, y, z, w), &index, GL_void_return) /* 2661 */ GL_PROC(void, gl, VertexAttribI4iEXT, glVertexAttribI4iEXT, VERTEXATTRIBI4IEXT, (AND GLuint index, GLint x, GLint y, GLint z, GLint w), (index, x, y, z, w), &index, GL_void_return) /* 2662 */ GL_PROC(void, gl, VertexAttribI4iv, glVertexAttribI4iv, VERTEXATTRIBI4IV, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) /* 2663 */ GL_PROC(void, gl, VertexAttribI4ivEXT, glVertexAttribI4ivEXT, VERTEXATTRIBI4IVEXT, (AND GLuint index, const GLint *v), (index, v), &index, GL_void_return) /* 2664 */ GL_PROC(void, gl, VertexAttribI4sv, glVertexAttribI4sv, VERTEXATTRIBI4SV, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 2665 */ GL_PROC(void, gl, VertexAttribI4svEXT, glVertexAttribI4svEXT, VERTEXATTRIBI4SVEXT, (AND GLuint index, const GLshort *v), (index, v), &index, GL_void_return) /* 2666 */ GL_PROC(void, gl, VertexAttribI4ubv, glVertexAttribI4ubv, VERTEXATTRIBI4UBV, (AND GLuint index, const GLubyte *v), (index, v), &index, GL_void_return) /* 2667 */ GL_PROC(void, gl, VertexAttribI4ubvEXT, glVertexAttribI4ubvEXT, VERTEXATTRIBI4UBVEXT, (AND GLuint index, const GLubyte *v), (index, v), &index, GL_void_return) /* 2668 */ GL_PROC(void, gl, VertexAttribI4ui, glVertexAttribI4ui, VERTEXATTRIBI4UI, (AND GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (index, x, y, z, w), &index, GL_void_return) /* 2669 */ GL_PROC(void, gl, VertexAttribI4uiEXT, glVertexAttribI4uiEXT, VERTEXATTRIBI4UIEXT, (AND GLuint index, GLuint x, GLuint y, GLuint z, GLuint w), (index, x, y, z, w), &index, GL_void_return) /* 2670 */ GL_PROC(void, gl, VertexAttribI4uiv, glVertexAttribI4uiv, VERTEXATTRIBI4UIV, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) /* 2671 */ GL_PROC(void, gl, VertexAttribI4uivEXT, glVertexAttribI4uivEXT, VERTEXATTRIBI4UIVEXT, (AND GLuint index, const GLuint *v), (index, v), &index, GL_void_return) /* 2672 */ GL_PROC(void, gl, VertexAttribI4usv, glVertexAttribI4usv, VERTEXATTRIBI4USV, (AND GLuint index, const GLushort *v), (index, v), &index, GL_void_return) /* 2673 */ GL_PROC(void, gl, VertexAttribI4usvEXT, glVertexAttribI4usvEXT, VERTEXATTRIBI4USVEXT, (AND GLuint index, const GLushort *v), (index, v), &index, GL_void_return) /* 2674 */ GL_PROC(void, gl, VertexAttribIFormat, glVertexAttribIFormat, VERTEXATTRIBIFORMAT, (AND GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (attribindex, size, type, relativeoffset), &attribindex, GL_void_return) /* 2675 */ GL_PROC(void, gl, VertexAttribIFormatNV, glVertexAttribIFormatNV, VERTEXATTRIBIFORMATNV, (AND GLuint index, GLint size, GLenum type, GLsizei stride), (index, size, type, stride), &index, GL_void_return) /* 2676 */ GL_PROC(void, gl, VertexAttribIPointer, glVertexAttribIPointer, VERTEXATTRIBIPOINTER, (AND GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer), (index, size, type, stride, pointer), &index, GL_void_return) /* 2677 */ GL_PROC(void, gl, VertexAttribIPointerEXT, glVertexAttribIPointerEXT, VERTEXATTRIBIPOINTEREXT, (AND GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer), (index, size, type, stride, pointer), &index, GL_void_return) /* 2678 */ GL_PROC(void, gl, VertexAttribL1d, glVertexAttribL1d, VERTEXATTRIBL1D, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) /* 2679 */ GL_PROC(void, gl, VertexAttribL1dEXT, glVertexAttribL1dEXT, VERTEXATTRIBL1DEXT, (AND GLuint index, GLdouble x), (index, x), &index, GL_void_return) /* 2680 */ GL_PROC(void, gl, VertexAttribL1dv, glVertexAttribL1dv, VERTEXATTRIBL1DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 2681 */ GL_PROC(void, gl, VertexAttribL1dvEXT, glVertexAttribL1dvEXT, VERTEXATTRIBL1DVEXT, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 2682 */ GL_PROC(void, gl, VertexAttribL1i64NV, glVertexAttribL1i64NV, VERTEXATTRIBL1I64NV, (AND GLuint index, GLint64EXT x), (index, x), &index, GL_void_return) /* 2683 */ GL_PROC(void, gl, VertexAttribL1i64vNV, glVertexAttribL1i64vNV, VERTEXATTRIBL1I64VNV, (AND GLuint index, const GLint64EXT *v), (index, v), &index, GL_void_return) /* 2684 */ GL_PROC(void, gl, VertexAttribL1ui64ARB, glVertexAttribL1ui64ARB, VERTEXATTRIBL1UI64ARB, (AND GLuint index, GLuint64EXT x), (index, x), &index, GL_void_return) /* 2685 */ GL_PROC(void, gl, VertexAttribL1ui64NV, glVertexAttribL1ui64NV, VERTEXATTRIBL1UI64NV, (AND GLuint index, GLuint64EXT x), (index, x), &index, GL_void_return) /* 2686 */ GL_PROC(void, gl, VertexAttribL1ui64vARB, glVertexAttribL1ui64vARB, VERTEXATTRIBL1UI64VARB, (AND GLuint index, const GLuint64EXT *v), (index, v), &index, GL_void_return) /* 2687 */ GL_PROC(void, gl, VertexAttribL1ui64vNV, glVertexAttribL1ui64vNV, VERTEXATTRIBL1UI64VNV, (AND GLuint index, const GLuint64EXT *v), (index, v), &index, GL_void_return) /* 2688 */ GL_PROC(void, gl, VertexAttribL2d, glVertexAttribL2d, VERTEXATTRIBL2D, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) /* 2689 */ GL_PROC(void, gl, VertexAttribL2dEXT, glVertexAttribL2dEXT, VERTEXATTRIBL2DEXT, (AND GLuint index, GLdouble x, GLdouble y), (index, x, y), &index, GL_void_return) /* 2690 */ GL_PROC(void, gl, VertexAttribL2dv, glVertexAttribL2dv, VERTEXATTRIBL2DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 2691 */ GL_PROC(void, gl, VertexAttribL2dvEXT, glVertexAttribL2dvEXT, VERTEXATTRIBL2DVEXT, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 2692 */ GL_PROC(void, gl, VertexAttribL2i64NV, glVertexAttribL2i64NV, VERTEXATTRIBL2I64NV, (AND GLuint index, GLint64EXT x, GLint64EXT y), (index, x, y), &index, GL_void_return) /* 2693 */ GL_PROC(void, gl, VertexAttribL2i64vNV, glVertexAttribL2i64vNV, VERTEXATTRIBL2I64VNV, (AND GLuint index, const GLint64EXT *v), (index, v), &index, GL_void_return) /* 2694 */ GL_PROC(void, gl, VertexAttribL2ui64NV, glVertexAttribL2ui64NV, VERTEXATTRIBL2UI64NV, (AND GLuint index, GLuint64EXT x, GLuint64EXT y), (index, x, y), &index, GL_void_return) /* 2695 */ GL_PROC(void, gl, VertexAttribL2ui64vNV, glVertexAttribL2ui64vNV, VERTEXATTRIBL2UI64VNV, (AND GLuint index, const GLuint64EXT *v), (index, v), &index, GL_void_return) /* 2696 */ GL_PROC(void, gl, VertexAttribL3d, glVertexAttribL3d, VERTEXATTRIBL3D, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) /* 2697 */ GL_PROC(void, gl, VertexAttribL3dEXT, glVertexAttribL3dEXT, VERTEXATTRIBL3DEXT, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z), (index, x, y, z), &index, GL_void_return) /* 2698 */ GL_PROC(void, gl, VertexAttribL3dv, glVertexAttribL3dv, VERTEXATTRIBL3DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 2699 */ GL_PROC(void, gl, VertexAttribL3dvEXT, glVertexAttribL3dvEXT, VERTEXATTRIBL3DVEXT, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 2700 */ GL_PROC(void, gl, VertexAttribL3i64NV, glVertexAttribL3i64NV, VERTEXATTRIBL3I64NV, (AND GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z), (index, x, y, z), &index, GL_void_return) /* 2701 */ GL_PROC(void, gl, VertexAttribL3i64vNV, glVertexAttribL3i64vNV, VERTEXATTRIBL3I64VNV, (AND GLuint index, const GLint64EXT *v), (index, v), &index, GL_void_return) /* 2702 */ GL_PROC(void, gl, VertexAttribL3ui64NV, glVertexAttribL3ui64NV, VERTEXATTRIBL3UI64NV, (AND GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z), (index, x, y, z), &index, GL_void_return) /* 2703 */ GL_PROC(void, gl, VertexAttribL3ui64vNV, glVertexAttribL3ui64vNV, VERTEXATTRIBL3UI64VNV, (AND GLuint index, const GLuint64EXT *v), (index, v), &index, GL_void_return) /* 2704 */ GL_PROC(void, gl, VertexAttribL4d, glVertexAttribL4d, VERTEXATTRIBL4D, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) /* 2705 */ GL_PROC(void, gl, VertexAttribL4dEXT, glVertexAttribL4dEXT, VERTEXATTRIBL4DEXT, (AND GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w), (index, x, y, z, w), &index, GL_void_return) /* 2706 */ GL_PROC(void, gl, VertexAttribL4dv, glVertexAttribL4dv, VERTEXATTRIBL4DV, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 2707 */ GL_PROC(void, gl, VertexAttribL4dvEXT, glVertexAttribL4dvEXT, VERTEXATTRIBL4DVEXT, (AND GLuint index, const GLdouble *v), (index, v), &index, GL_void_return) /* 2708 */ GL_PROC(void, gl, VertexAttribL4i64NV, glVertexAttribL4i64NV, VERTEXATTRIBL4I64NV, (AND GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w), (index, x, y, z, w), &index, GL_void_return) /* 2709 */ GL_PROC(void, gl, VertexAttribL4i64vNV, glVertexAttribL4i64vNV, VERTEXATTRIBL4I64VNV, (AND GLuint index, const GLint64EXT *v), (index, v), &index, GL_void_return) /* 2710 */ GL_PROC(void, gl, VertexAttribL4ui64NV, glVertexAttribL4ui64NV, VERTEXATTRIBL4UI64NV, (AND GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w), (index, x, y, z, w), &index, GL_void_return) /* 2711 */ GL_PROC(void, gl, VertexAttribL4ui64vNV, glVertexAttribL4ui64vNV, VERTEXATTRIBL4UI64VNV, (AND GLuint index, const GLuint64EXT *v), (index, v), &index, GL_void_return) /* 2712 */ GL_PROC(void, gl, VertexAttribLFormat, glVertexAttribLFormat, VERTEXATTRIBLFORMAT, (AND GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (attribindex, size, type, relativeoffset), &attribindex, GL_void_return) /* 2713 */ GL_PROC(void, gl, VertexAttribLFormatNV, glVertexAttribLFormatNV, VERTEXATTRIBLFORMATNV, (AND GLuint index, GLint size, GLenum type, GLsizei stride), (index, size, type, stride), &index, GL_void_return) /* 2714 */ GL_PROC(void, gl, VertexAttribLPointer, glVertexAttribLPointer, VERTEXATTRIBLPOINTER, (AND GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer), (index, size, type, stride, pointer), &index, GL_void_return) /* 2715 */ GL_PROC(void, gl, VertexAttribLPointerEXT, glVertexAttribLPointerEXT, VERTEXATTRIBLPOINTEREXT, (AND GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer), (index, size, type, stride, pointer), &index, GL_void_return) /* 2716 */ GL_PROC(void, gl, VertexAttribP1ui, glVertexAttribP1ui, VERTEXATTRIBP1UI, (AND GLuint index, GLenum type, GLboolean32 normalized, GLuint value), (index, type, normalized, value), &index, GL_void_return) /* 2717 */ GL_PROC(void, gl, VertexAttribP1uiv, glVertexAttribP1uiv, VERTEXATTRIBP1UIV, (AND GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value), (index, type, normalized, value), &index, GL_void_return) /* 2718 */ GL_PROC(void, gl, VertexAttribP2ui, glVertexAttribP2ui, VERTEXATTRIBP2UI, (AND GLuint index, GLenum type, GLboolean32 normalized, GLuint value), (index, type, normalized, value), &index, GL_void_return) /* 2719 */ GL_PROC(void, gl, VertexAttribP2uiv, glVertexAttribP2uiv, VERTEXATTRIBP2UIV, (AND GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value), (index, type, normalized, value), &index, GL_void_return) /* 2720 */ GL_PROC(void, gl, VertexAttribP3ui, glVertexAttribP3ui, VERTEXATTRIBP3UI, (AND GLuint index, GLenum type, GLboolean32 normalized, GLuint value), (index, type, normalized, value), &index, GL_void_return) /* 2721 */ GL_PROC(void, gl, VertexAttribP3uiv, glVertexAttribP3uiv, VERTEXATTRIBP3UIV, (AND GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value), (index, type, normalized, value), &index, GL_void_return) /* 2722 */ GL_PROC(void, gl, VertexAttribP4ui, glVertexAttribP4ui, VERTEXATTRIBP4UI, (AND GLuint index, GLenum type, GLboolean32 normalized, GLuint value), (index, type, normalized, value), &index, GL_void_return) /* 2723 */ GL_PROC(void, gl, VertexAttribP4uiv, glVertexAttribP4uiv, VERTEXATTRIBP4UIV, (AND GLuint index, GLenum type, GLboolean32 normalized, const GLuint *value), (index, type, normalized, value), &index, GL_void_return) /* 2724 */ GL_PROC(void, gl, VertexAttribParameteriAMD, glVertexAttribParameteriAMD, VERTEXATTRIBPARAMETERIAMD, (AND GLuint index, GLenum pname, GLint param), (index, pname, param), &index, GL_void_return) /* 2725 */ GL_PROC(void, gl, VertexAttribPointer, glVertexAttribPointer, VERTEXATTRIBPOINTER, (AND GLuint index, GLint size, GLenum type, GLboolean32 normalized, GLsizei stride, const void *pointer), (index, size, type, normalized, stride, pointer), &index, GL_void_return) /* 2726 */ GL_PROC(void, gl, VertexBindingDivisor, glVertexBindingDivisor, VERTEXBINDINGDIVISOR, (AND GLuint bindingindex, GLuint divisor), (bindingindex, divisor), &bindingindex, GL_void_return) /* 2727 */ GL_PROC(void, gl, VertexFormatNV, glVertexFormatNV, VERTEXFORMATNV, (AND GLint size, GLenum type, GLsizei stride), (size, type, stride), &size, GL_void_return) /* 2728 */ GL_PROC(void, gl, VertexP2ui, glVertexP2ui, VERTEXP2UI, (AND GLenum type, GLuint value), (type, value), &type, GL_void_return) /* 2729 */ GL_PROC(void, gl, VertexP2uiv, glVertexP2uiv, VERTEXP2UIV, (AND GLenum type, const GLuint *value), (type, value), &type, GL_void_return) /* 2730 */ GL_PROC(void, gl, VertexP3ui, glVertexP3ui, VERTEXP3UI, (AND GLenum type, GLuint value), (type, value), &type, GL_void_return) /* 2731 */ GL_PROC(void, gl, VertexP3uiv, glVertexP3uiv, VERTEXP3UIV, (AND GLenum type, const GLuint *value), (type, value), &type, GL_void_return) /* 2732 */ GL_PROC(void, gl, VertexP4ui, glVertexP4ui, VERTEXP4UI, (AND GLenum type, GLuint value), (type, value), &type, GL_void_return) /* 2733 */ GL_PROC(void, gl, VertexP4uiv, glVertexP4uiv, VERTEXP4UIV, (AND GLenum type, const GLuint *value), (type, value), &type, GL_void_return) /* 2734 */ GL_PROC(void, gl, VertexPointSizefAPPLE, glVertexPointSizefAPPLE, VERTEXPOINTSIZEFAPPLE, (AND GLfloat size), (size), &size, GL_void_return) /* 2735 */ GL_PROC(GLenum, gl, VideoCaptureNV, glVideoCaptureNV, VIDEOCAPTURENV, (AND GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time), (video_capture_slot, sequence_num, capture_time), &video_capture_slot, return (GLenum)) /* 2736 */ GL_PROC(void, gl, VideoCaptureStreamParameterdvNV, glVideoCaptureStreamParameterdvNV, VIDEOCAPTURESTREAMPARAMETERDVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) /* 2737 */ GL_PROC(void, gl, VideoCaptureStreamParameterfvNV, glVideoCaptureStreamParameterfvNV, VIDEOCAPTURESTREAMPARAMETERFVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) /* 2738 */ GL_PROC(void, gl, VideoCaptureStreamParameterivNV, glVideoCaptureStreamParameterivNV, VIDEOCAPTURESTREAMPARAMETERIVNV, (AND GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params), (video_capture_slot, stream, pname, params), &video_capture_slot, GL_void_return) /* 2739 */ GL_PROC(void, gl, ViewportArrayv, glViewportArrayv, VIEWPORTARRAYV, (AND GLuint first, GLsizei count, const GLfloat *v), (first, count, v), &first, GL_void_return) /* 2740 */ GL_PROC(void, gl, ViewportIndexedf, glViewportIndexedf, VIEWPORTINDEXEDF, (AND GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h), (index, x, y, w, h), &index, GL_void_return) /* 2741 */ GL_PROC(void, gl, ViewportIndexedfv, glViewportIndexedfv, VIEWPORTINDEXEDFV, (AND GLuint index, const GLfloat *v), (index, v), &index, GL_void_return) /* 2742 */ GL_PROC(void, gl, WaitSync, glWaitSync, WAITSYNC, (AND GLsync sync, GLbitfield flags, GLuint64 timeout), (sync, flags, timeout), &sync, GL_void_return) /* 2743 */ GL_PROC(void, gl, WeightPathsNV, glWeightPathsNV, WEIGHTPATHSNV, (AND GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights), (resultPath, numPaths, paths, weights), &resultPath, GL_void_return) /* 2744 */ GL_PROC(void, gl, BindTextureUnit, glBindTextureUnit, BINDTEXTUREUNIT, (AND GLuint unit, GLuint texture), (unit, texture), &unit, GL_void_return) /* 2745 */ GL_PROC(void, gl, BlendBarrierKHR, glBlendBarrierKHR, BLENDBARRIERKHR, (NOTHING), (), NULL, GL_void_return) /* 2746 */ GL_PROC(void, gl, BlitNamedFramebuffer, glBlitNamedFramebuffer, BLITNAMEDFRAMEBUFFER, (AND GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter), (readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), &readFramebuffer, GL_void_return) /* 2747 */ GL_PROC(void, gl, BufferPageCommitmentARB, glBufferPageCommitmentARB, BUFFERPAGECOMMITMENTARB, (AND GLenum target, GLintptr offset, GLsizeiptr size, GLboolean32 commit), (target, offset, size, commit), &target, GL_void_return) /* 2748 */ GL_PROC(void, gl, CallCommandListNV, glCallCommandListNV, CALLCOMMANDLISTNV, (AND GLuint list), (list), &list, GL_void_return) /* 2749 */ GL_PROC(GLenum, gl, CheckNamedFramebufferStatus, glCheckNamedFramebufferStatus, CHECKNAMEDFRAMEBUFFERSTATUS, (AND GLuint framebuffer, GLenum target), (framebuffer, target), &framebuffer, return (GLenum)) /* 2750 */ GL_PROC(void, gl, ClearNamedBufferData, glClearNamedBufferData, CLEARNAMEDBUFFERDATA, (AND GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data), (buffer, internalformat, format, type, data), &buffer, GL_void_return) /* 2751 */ GL_PROC(void, gl, ClearNamedBufferSubData, glClearNamedBufferSubData, CLEARNAMEDBUFFERSUBDATA, (AND GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data), (buffer, internalformat, offset, size, format, type, data), &buffer, GL_void_return) /* 2752 */ GL_PROC(void, gl, ClearNamedFramebufferfi, glClearNamedFramebufferfi, CLEARNAMEDFRAMEBUFFERFI, (AND GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil), (framebuffer, buffer, drawbuffer, depth, stencil), &framebuffer, GL_void_return) /* 2753 */ GL_PROC(void, gl, ClearNamedFramebufferfv, glClearNamedFramebufferfv, CLEARNAMEDFRAMEBUFFERFV, (AND GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value), (framebuffer, buffer, drawbuffer, value), &framebuffer, GL_void_return) /* 2754 */ GL_PROC(void, gl, ClearNamedFramebufferiv, glClearNamedFramebufferiv, CLEARNAMEDFRAMEBUFFERIV, (AND GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value), (framebuffer, buffer, drawbuffer, value), &framebuffer, GL_void_return) /* 2755 */ GL_PROC(void, gl, ClearNamedFramebufferuiv, glClearNamedFramebufferuiv, CLEARNAMEDFRAMEBUFFERUIV, (AND GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value), (framebuffer, buffer, drawbuffer, value), &framebuffer, GL_void_return) /* 2756 */ GL_PROC(void, gl, ClipControl, glClipControl, CLIPCONTROL, (AND GLenum origin, GLenum depth), (origin, depth), &origin, GL_void_return) /* 2757 */ GL_PROC(void, gl, CommandListSegmentsNV, glCommandListSegmentsNV, COMMANDLISTSEGMENTSNV, (AND GLuint list, GLuint segments), (list, segments), &list, GL_void_return) /* 2758 */ GL_PROC(void, gl, CompileCommandListNV, glCompileCommandListNV, COMPILECOMMANDLISTNV, (AND GLuint list), (list), &list, GL_void_return) /* 2759 */ GL_PROC(void, gl, CompressedTextureSubImage1D, glCompressedTextureSubImage1D, COMPRESSEDTEXTURESUBIMAGE1D, (AND GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data), (texture, level, xoffset, width, format, imageSize, data), &texture, GL_void_return) /* 2760 */ GL_PROC(void, gl, CompressedTextureSubImage2D, glCompressedTextureSubImage2D, COMPRESSEDTEXTURESUBIMAGE2D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data), (texture, level, xoffset, yoffset, width, height, format, imageSize, data), &texture, GL_void_return) /* 2761 */ GL_PROC(void, gl, CompressedTextureSubImage3D, glCompressedTextureSubImage3D, COMPRESSEDTEXTURESUBIMAGE3D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data), (texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), &texture, GL_void_return) /* 2762 */ GL_PROC(void, gl, CopyNamedBufferSubData, glCopyNamedBufferSubData, COPYNAMEDBUFFERSUBDATA, (AND GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size), (readBuffer, writeBuffer, readOffset, writeOffset, size), &readBuffer, GL_void_return) /* 2763 */ GL_PROC(void, gl, CopyTextureSubImage1D, glCopyTextureSubImage1D, COPYTEXTURESUBIMAGE1D, (AND GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (texture, level, xoffset, x, y, width), &texture, GL_void_return) /* 2764 */ GL_PROC(void, gl, CopyTextureSubImage2D, glCopyTextureSubImage2D, COPYTEXTURESUBIMAGE2D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texture, level, xoffset, yoffset, x, y, width, height), &texture, GL_void_return) /* 2765 */ GL_PROC(void, gl, CopyTextureSubImage3D, glCopyTextureSubImage3D, COPYTEXTURESUBIMAGE3D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (texture, level, xoffset, yoffset, zoffset, x, y, width, height), &texture, GL_void_return) /* 2766 */ GL_PROC(void, gl, CoverageModulationNV, glCoverageModulationNV, COVERAGEMODULATIONNV, (AND GLenum components), (components), &components, GL_void_return) /* 2767 */ GL_PROC(void, gl, CoverageModulationTableNV, glCoverageModulationTableNV, COVERAGEMODULATIONTABLENV, (AND GLsizei n, const GLfloat *v), (n, v), &n, GL_void_return) /* 2768 */ GL_PROC(void, gl, CreateBuffers, glCreateBuffers, CREATEBUFFERS, (AND GLsizei n, GLuint *buffers), (n, buffers), &n, GL_void_return) /* 2769 */ GL_PROC(void, gl, CreateCommandListsNV, glCreateCommandListsNV, CREATECOMMANDLISTSNV, (AND GLsizei n, GLuint *lists), (n, lists), &n, GL_void_return) /* 2770 */ GL_PROC(void, gl, CreateFramebuffers, glCreateFramebuffers, CREATEFRAMEBUFFERS, (AND GLsizei n, GLuint *framebuffers), (n, framebuffers), &n, GL_void_return) /* 2771 */ GL_PROC(void, gl, CreateProgramPipelines, glCreateProgramPipelines, CREATEPROGRAMPIPELINES, (AND GLsizei n, GLuint *pipelines), (n, pipelines), &n, GL_void_return) /* 2772 */ GL_PROC(void, gl, CreateQueries, glCreateQueries, CREATEQUERIES, (AND GLenum target, GLsizei n, GLuint *ids), (target, n, ids), &target, GL_void_return) /* 2773 */ GL_PROC(void, gl, CreateRenderbuffers, glCreateRenderbuffers, CREATERENDERBUFFERS, (AND GLsizei n, GLuint *renderbuffers), (n, renderbuffers), &n, GL_void_return) /* 2774 */ GL_PROC(void, gl, CreateSamplers, glCreateSamplers, CREATESAMPLERS, (AND GLsizei n, GLuint *samplers), (n, samplers), &n, GL_void_return) /* 2775 */ GL_PROC(void, gl, CreateStatesNV, glCreateStatesNV, CREATESTATESNV, (AND GLsizei n, GLuint *states), (n, states), &n, GL_void_return) /* 2776 */ GL_PROC(void, gl, CreateTextures, glCreateTextures, CREATETEXTURES, (AND GLenum target, GLsizei n, GLuint *textures), (target, n, textures), &target, GL_void_return) /* 2777 */ GL_PROC(void, gl, CreateTransformFeedbacks, glCreateTransformFeedbacks, CREATETRANSFORMFEEDBACKS, (AND GLsizei n, GLuint *ids), (n, ids), &n, GL_void_return) /* 2778 */ GL_PROC(void, gl, CreateVertexArrays, glCreateVertexArrays, CREATEVERTEXARRAYS, (AND GLsizei n, GLuint *arrays), (n, arrays), &n, GL_void_return) /* 2779 */ GL_PROC(void, gl, DeleteCommandListsNV, glDeleteCommandListsNV, DELETECOMMANDLISTSNV, (AND GLsizei n, const GLuint *lists), (n, lists), &n, GL_void_return) /* 2780 */ GL_PROC(void, gl, DeleteStatesNV, glDeleteStatesNV, DELETESTATESNV, (AND GLsizei n, const GLuint *states), (n, states), &n, GL_void_return) /* 2781 */ GL_PROC(void, gl, DisableVertexArrayAttrib, glDisableVertexArrayAttrib, DISABLEVERTEXARRAYATTRIB, (AND GLuint vaobj, GLuint index), (vaobj, index), &vaobj, GL_void_return) /* 2782 */ GL_PROC(void, gl, DrawCommandsAddressNV, glDrawCommandsAddressNV, DRAWCOMMANDSADDRESSNV, (AND GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count), (primitiveMode, indirects, sizes, count), &primitiveMode, GL_void_return) /* 2783 */ GL_PROC(void, gl, DrawCommandsNV, glDrawCommandsNV, DRAWCOMMANDSNV, (AND GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count), (primitiveMode, buffer, indirects, sizes, count), &primitiveMode, GL_void_return) /* 2784 */ GL_PROC(void, gl, DrawCommandsStatesAddressNV, glDrawCommandsStatesAddressNV, DRAWCOMMANDSSTATESADDRESSNV, (AND const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count), (indirects, sizes, states, fbos, count), &indirects, GL_void_return) /* 2785 */ GL_PROC(void, gl, DrawCommandsStatesNV, glDrawCommandsStatesNV, DRAWCOMMANDSSTATESNV, (AND GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count), (buffer, indirects, sizes, states, fbos, count), &buffer, GL_void_return) /* 2786 */ GL_PROC(void, gl, EnableVertexArrayAttrib, glEnableVertexArrayAttrib, ENABLEVERTEXARRAYATTRIB, (AND GLuint vaobj, GLuint index), (vaobj, index), &vaobj, GL_void_return) /* 2787 */ GL_PROC(void, gl, FlushMappedNamedBufferRange, glFlushMappedNamedBufferRange, FLUSHMAPPEDNAMEDBUFFERRANGE, (AND GLuint buffer, GLintptr offset, GLsizeiptr length), (buffer, offset, length), &buffer, GL_void_return) /* 2788 */ GL_PROC(void, gl, FragmentCoverageColorNV, glFragmentCoverageColorNV, FRAGMENTCOVERAGECOLORNV, (AND GLuint color), (color), &color, GL_void_return) /* 2789 */ GL_PROC(void, gl, FramebufferSampleLocationsfvNV, glFramebufferSampleLocationsfvNV, FRAMEBUFFERSAMPLELOCATIONSFVNV, (AND GLenum target, GLuint start, GLsizei count, const GLfloat *v), (target, start, count, v), &target, GL_void_return) /* 2790 */ GL_PROC(void, gl, FramebufferTextureMultiviewOVR, glFramebufferTextureMultiviewOVR, FRAMEBUFFERTEXTUREMULTIVIEWOVR, (AND GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews), (target, attachment, texture, level, baseViewIndex, numViews), &target, GL_void_return) /* 2791 */ GL_PROC(void, gl, GenerateTextureMipmap, glGenerateTextureMipmap, GENERATETEXTUREMIPMAP, (AND GLuint texture), (texture), &texture, GL_void_return) /* 2792 */ GL_PROC(GLuint, gl, GetCommandHeaderNV, glGetCommandHeaderNV, GETCOMMANDHEADERNV, (AND GLenum tokenID, GLuint size), (tokenID, size), &tokenID, return (GLuint)) /* 2793 */ GL_PROC(void, gl, GetCompressedTextureImage, glGetCompressedTextureImage, GETCOMPRESSEDTEXTUREIMAGE, (AND GLuint texture, GLint level, GLsizei bufSize, void *pixels), (texture, level, bufSize, pixels), &texture, GL_void_return) /* 2794 */ GL_PROC(void, gl, GetCompressedTextureSubImage, glGetCompressedTextureSubImage, GETCOMPRESSEDTEXTURESUBIMAGE, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels), (texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels), &texture, GL_void_return) /* 2795 */ GL_PROC(void, gl, GetCoverageModulationTableNV, glGetCoverageModulationTableNV, GETCOVERAGEMODULATIONTABLENV, (AND GLsizei bufsize, GLfloat *v), (bufsize, v), &bufsize, GL_void_return) /* 2796 */ GL_PROC(GLenum, gl, GetGraphicsResetStatus, glGetGraphicsResetStatus, GETGRAPHICSRESETSTATUS, (NOTHING), (), NULL, return (GLenum)) /* 2797 */ GL_PROC(void, gl, GetInternalformatSampleivNV, glGetInternalformatSampleivNV, GETINTERNALFORMATSAMPLEIVNV, (AND GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params), (target, internalformat, samples, pname, bufSize, params), &target, GL_void_return) /* 2798 */ GL_PROC(void, gl, GetNamedBufferParameteri64v, glGetNamedBufferParameteri64v, GETNAMEDBUFFERPARAMETERI64V, (AND GLuint buffer, GLenum pname, GLint64 *params), (buffer, pname, params), &buffer, GL_void_return) /* 2799 */ GL_PROC(void, gl, GetNamedBufferParameteriv, glGetNamedBufferParameteriv, GETNAMEDBUFFERPARAMETERIV, (AND GLuint buffer, GLenum pname, GLint *params), (buffer, pname, params), &buffer, GL_void_return) /* 2800 */ GL_PROC(void, gl, GetNamedBufferPointerv, glGetNamedBufferPointerv, GETNAMEDBUFFERPOINTERV, (AND GLuint buffer, GLenum pname, void * *params), (buffer, pname, params), &buffer, GL_void_return) /* 2801 */ GL_PROC(void, gl, GetNamedBufferSubData, glGetNamedBufferSubData, GETNAMEDBUFFERSUBDATA, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, void *data), (buffer, offset, size, data), &buffer, GL_void_return) /* 2802 */ GL_PROC(void, gl, GetNamedFramebufferAttachmentParameteriv, glGetNamedFramebufferAttachmentParameteriv, GETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV, (AND GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params), (framebuffer, attachment, pname, params), &framebuffer, GL_void_return) /* 2803 */ GL_PROC(void, gl, GetNamedFramebufferParameteriv, glGetNamedFramebufferParameteriv, GETNAMEDFRAMEBUFFERPARAMETERIV, (AND GLuint framebuffer, GLenum pname, GLint *param), (framebuffer, pname, param), &framebuffer, GL_void_return) /* 2804 */ GL_PROC(void, gl, GetNamedRenderbufferParameteriv, glGetNamedRenderbufferParameteriv, GETNAMEDRENDERBUFFERPARAMETERIV, (AND GLuint renderbuffer, GLenum pname, GLint *params), (renderbuffer, pname, params), &renderbuffer, GL_void_return) /* 2805 */ GL_PROC(void, gl, GetProgramResourcefvNV, glGetProgramResourcefvNV, GETPROGRAMRESOURCEFVNV, (AND GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params), (program, programInterface, index, propCount, props, bufSize, length, params), &program, GL_void_return) /* 2806 */ GL_PROC(void, gl, GetQueryBufferObjecti64v, glGetQueryBufferObjecti64v, GETQUERYBUFFEROBJECTI64V, (AND GLuint id, GLuint buffer, GLenum pname, GLintptr offset), (id, buffer, pname, offset), &id, GL_void_return) /* 2807 */ GL_PROC(void, gl, GetQueryBufferObjectiv, glGetQueryBufferObjectiv, GETQUERYBUFFEROBJECTIV, (AND GLuint id, GLuint buffer, GLenum pname, GLintptr offset), (id, buffer, pname, offset), &id, GL_void_return) /* 2808 */ GL_PROC(void, gl, GetQueryBufferObjectui64v, glGetQueryBufferObjectui64v, GETQUERYBUFFEROBJECTUI64V, (AND GLuint id, GLuint buffer, GLenum pname, GLintptr offset), (id, buffer, pname, offset), &id, GL_void_return) /* 2809 */ GL_PROC(void, gl, GetQueryBufferObjectuiv, glGetQueryBufferObjectuiv, GETQUERYBUFFEROBJECTUIV, (AND GLuint id, GLuint buffer, GLenum pname, GLintptr offset), (id, buffer, pname, offset), &id, GL_void_return) /* 2810 */ GL_PROC(GLushort, gl, GetStageIndexNV, glGetStageIndexNV, GETSTAGEINDEXNV, (AND GLenum shadertype), (shadertype), &shadertype, return (GLushort)) /* 2811 */ GL_PROC(void, gl, GetTextureImage, glGetTextureImage, GETTEXTUREIMAGE, (AND GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels), (texture, level, format, type, bufSize, pixels), &texture, GL_void_return) /* 2812 */ GL_PROC(void, gl, GetTextureLevelParameterfv, glGetTextureLevelParameterfv, GETTEXTURELEVELPARAMETERFV, (AND GLuint texture, GLint level, GLenum pname, GLfloat *params), (texture, level, pname, params), &texture, GL_void_return) /* 2813 */ GL_PROC(void, gl, GetTextureLevelParameteriv, glGetTextureLevelParameteriv, GETTEXTURELEVELPARAMETERIV, (AND GLuint texture, GLint level, GLenum pname, GLint *params), (texture, level, pname, params), &texture, GL_void_return) /* 2814 */ GL_PROC(void, gl, GetTextureParameterIiv, glGetTextureParameterIiv, GETTEXTUREPARAMETERIIV, (AND GLuint texture, GLenum pname, GLint *params), (texture, pname, params), &texture, GL_void_return) /* 2815 */ GL_PROC(void, gl, GetTextureParameterIuiv, glGetTextureParameterIuiv, GETTEXTUREPARAMETERIUIV, (AND GLuint texture, GLenum pname, GLuint *params), (texture, pname, params), &texture, GL_void_return) /* 2816 */ GL_PROC(void, gl, GetTextureParameterfv, glGetTextureParameterfv, GETTEXTUREPARAMETERFV, (AND GLuint texture, GLenum pname, GLfloat *params), (texture, pname, params), &texture, GL_void_return) /* 2817 */ GL_PROC(void, gl, GetTextureParameteriv, glGetTextureParameteriv, GETTEXTUREPARAMETERIV, (AND GLuint texture, GLenum pname, GLint *params), (texture, pname, params), &texture, GL_void_return) /* 2818 */ GL_PROC(void, gl, GetTextureSubImage, glGetTextureSubImage, GETTEXTURESUBIMAGE, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels), (texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels), &texture, GL_void_return) /* 2819 */ GL_PROC(void, gl, GetTransformFeedbacki64_v, glGetTransformFeedbacki64_v, GETTRANSFORMFEEDBACKI64_V, (AND GLuint xfb, GLenum pname, GLuint index, GLint64 *param), (xfb, pname, index, param), &xfb, GL_void_return) /* 2820 */ GL_PROC(void, gl, GetTransformFeedbacki_v, glGetTransformFeedbacki_v, GETTRANSFORMFEEDBACKI_V, (AND GLuint xfb, GLenum pname, GLuint index, GLint *param), (xfb, pname, index, param), &xfb, GL_void_return) /* 2821 */ GL_PROC(void, gl, GetTransformFeedbackiv, glGetTransformFeedbackiv, GETTRANSFORMFEEDBACKIV, (AND GLuint xfb, GLenum pname, GLint *param), (xfb, pname, param), &xfb, GL_void_return) /* 2822 */ GL_PROC(void, gl, GetVertexArrayIndexed64iv, glGetVertexArrayIndexed64iv, GETVERTEXARRAYINDEXED64IV, (AND GLuint vaobj, GLuint index, GLenum pname, GLint64 *param), (vaobj, index, pname, param), &vaobj, GL_void_return) /* 2823 */ GL_PROC(void, gl, GetVertexArrayIndexediv, glGetVertexArrayIndexediv, GETVERTEXARRAYINDEXEDIV, (AND GLuint vaobj, GLuint index, GLenum pname, GLint *param), (vaobj, index, pname, param), &vaobj, GL_void_return) /* 2824 */ GL_PROC(void, gl, GetVertexArrayiv, glGetVertexArrayiv, GETVERTEXARRAYIV, (AND GLuint vaobj, GLenum pname, GLint *param), (vaobj, pname, param), &vaobj, GL_void_return) /* 2825 */ GL_PROC(void, gl, GetnColorTable, glGetnColorTable, GETNCOLORTABLE, (AND GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table), (target, format, type, bufSize, table), &target, GL_void_return) /* 2826 */ GL_PROC(void, gl, GetnCompressedTexImage, glGetnCompressedTexImage, GETNCOMPRESSEDTEXIMAGE, (AND GLenum target, GLint lod, GLsizei bufSize, void *pixels), (target, lod, bufSize, pixels), &target, GL_void_return) /* 2827 */ GL_PROC(void, gl, GetnConvolutionFilter, glGetnConvolutionFilter, GETNCONVOLUTIONFILTER, (AND GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image), (target, format, type, bufSize, image), &target, GL_void_return) /* 2828 */ GL_PROC(void, gl, GetnHistogram, glGetnHistogram, GETNHISTOGRAM, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values), (target, reset, format, type, bufSize, values), &target, GL_void_return) /* 2829 */ GL_PROC(void, gl, GetnMapdv, glGetnMapdv, GETNMAPDV, (AND GLenum target, GLenum query, GLsizei bufSize, GLdouble *v), (target, query, bufSize, v), &target, GL_void_return) /* 2830 */ GL_PROC(void, gl, GetnMapfv, glGetnMapfv, GETNMAPFV, (AND GLenum target, GLenum query, GLsizei bufSize, GLfloat *v), (target, query, bufSize, v), &target, GL_void_return) /* 2831 */ GL_PROC(void, gl, GetnMapiv, glGetnMapiv, GETNMAPIV, (AND GLenum target, GLenum query, GLsizei bufSize, GLint *v), (target, query, bufSize, v), &target, GL_void_return) /* 2832 */ GL_PROC(void, gl, GetnMinmax, glGetnMinmax, GETNMINMAX, (AND GLenum target, GLboolean32 reset, GLenum format, GLenum type, GLsizei bufSize, void *values), (target, reset, format, type, bufSize, values), &target, GL_void_return) /* 2833 */ GL_PROC(void, gl, GetnPixelMapfv, glGetnPixelMapfv, GETNPIXELMAPFV, (AND GLenum map, GLsizei bufSize, GLfloat *values), (map, bufSize, values), &map, GL_void_return) /* 2834 */ GL_PROC(void, gl, GetnPixelMapuiv, glGetnPixelMapuiv, GETNPIXELMAPUIV, (AND GLenum map, GLsizei bufSize, GLuint *values), (map, bufSize, values), &map, GL_void_return) /* 2835 */ GL_PROC(void, gl, GetnPixelMapusv, glGetnPixelMapusv, GETNPIXELMAPUSV, (AND GLenum map, GLsizei bufSize, GLushort *values), (map, bufSize, values), &map, GL_void_return) /* 2836 */ GL_PROC(void, gl, GetnPolygonStipple, glGetnPolygonStipple, GETNPOLYGONSTIPPLE, (AND GLsizei bufSize, GLubyte *pattern), (bufSize, pattern), &bufSize, GL_void_return) /* 2837 */ GL_PROC(void, gl, GetnSeparableFilter, glGetnSeparableFilter, GETNSEPARABLEFILTER, (AND GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span), (target, format, type, rowBufSize, row, columnBufSize, column, span), &target, GL_void_return) /* 2838 */ GL_PROC(void, gl, GetnTexImage, glGetnTexImage, GETNTEXIMAGE, (AND GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels), (target, level, format, type, bufSize, pixels), &target, GL_void_return) /* 2839 */ GL_PROC(void, gl, GetnUniformdv, glGetnUniformdv, GETNUNIFORMDV, (AND GLuint program, GLint location, GLsizei bufSize, GLdouble *params), (program, location, bufSize, params), &program, GL_void_return) /* 2840 */ GL_PROC(void, gl, GetnUniformfv, glGetnUniformfv, GETNUNIFORMFV, (AND GLuint program, GLint location, GLsizei bufSize, GLfloat *params), (program, location, bufSize, params), &program, GL_void_return) /* 2841 */ GL_PROC(void, gl, GetnUniformiv, glGetnUniformiv, GETNUNIFORMIV, (AND GLuint program, GLint location, GLsizei bufSize, GLint *params), (program, location, bufSize, params), &program, GL_void_return) /* 2842 */ GL_PROC(void, gl, GetnUniformuiv, glGetnUniformuiv, GETNUNIFORMUIV, (AND GLuint program, GLint location, GLsizei bufSize, GLuint *params), (program, location, bufSize, params), &program, GL_void_return) /* 2843 */ GL_PROC(void, gl, InvalidateNamedFramebufferData, glInvalidateNamedFramebufferData, INVALIDATENAMEDFRAMEBUFFERDATA, (AND GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments), (framebuffer, numAttachments, attachments), &framebuffer, GL_void_return) /* 2844 */ GL_PROC(void, gl, InvalidateNamedFramebufferSubData, glInvalidateNamedFramebufferSubData, INVALIDATENAMEDFRAMEBUFFERSUBDATA, (AND GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height), (framebuffer, numAttachments, attachments, x, y, width, height), &framebuffer, GL_void_return) /* 2845 */ GL_PROC(GLboolean, gl, IsCommandListNV, glIsCommandListNV, ISCOMMANDLISTNV, (AND GLuint list), (list), &list, return (GLboolean)) /* 2846 */ GL_PROC(GLboolean, gl, IsStateNV, glIsStateNV, ISSTATENV, (AND GLuint state), (state), &state, return (GLboolean)) /* 2847 */ GL_PROC(void, gl, ListDrawCommandsStatesClientNV, glListDrawCommandsStatesClientNV, LISTDRAWCOMMANDSSTATESCLIENTNV, (AND GLuint list, GLuint segment, const void * *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count), (list, segment, indirects, sizes, states, fbos, count), &list, GL_void_return) /* 2848 */ GL_PROC(void *, gl, MapNamedBuffer, glMapNamedBuffer, MAPNAMEDBUFFER, (AND GLuint buffer, GLenum access), (buffer, access), &buffer, return (void *)) /* 2849 */ GL_PROC(void *, gl, MapNamedBufferRange, glMapNamedBufferRange, MAPNAMEDBUFFERRANGE, (AND GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access), (buffer, offset, length, access), &buffer, return (void *)) /* 2850 */ GL_PROC(void, gl, MatrixLoad3x2fNV, glMatrixLoad3x2fNV, MATRIXLOAD3X2FNV, (AND GLenum matrixMode, const GLfloat *m), (matrixMode, m), &matrixMode, GL_void_return) /* 2851 */ GL_PROC(void, gl, MatrixLoad3x3fNV, glMatrixLoad3x3fNV, MATRIXLOAD3X3FNV, (AND GLenum matrixMode, const GLfloat *m), (matrixMode, m), &matrixMode, GL_void_return) /* 2852 */ GL_PROC(void, gl, MatrixLoadTranspose3x3fNV, glMatrixLoadTranspose3x3fNV, MATRIXLOADTRANSPOSE3X3FNV, (AND GLenum matrixMode, const GLfloat *m), (matrixMode, m), &matrixMode, GL_void_return) /* 2853 */ GL_PROC(void, gl, MatrixMult3x2fNV, glMatrixMult3x2fNV, MATRIXMULT3X2FNV, (AND GLenum matrixMode, const GLfloat *m), (matrixMode, m), &matrixMode, GL_void_return) /* 2854 */ GL_PROC(void, gl, MatrixMult3x3fNV, glMatrixMult3x3fNV, MATRIXMULT3X3FNV, (AND GLenum matrixMode, const GLfloat *m), (matrixMode, m), &matrixMode, GL_void_return) /* 2855 */ GL_PROC(void, gl, MatrixMultTranspose3x3fNV, glMatrixMultTranspose3x3fNV, MATRIXMULTTRANSPOSE3X3FNV, (AND GLenum matrixMode, const GLfloat *m), (matrixMode, m), &matrixMode, GL_void_return) /* 2856 */ GL_PROC(void, gl, MemoryBarrierByRegion, glMemoryBarrierByRegion, MEMORYBARRIERBYREGION, (AND GLbitfield barriers), (barriers), &barriers, GL_void_return) /* 2857 */ GL_PROC(void, gl, MultiDrawArraysIndirectBindlessCountNV, glMultiDrawArraysIndirectBindlessCountNV, MULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV, (AND GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount), (mode, indirect, drawCount, maxDrawCount, stride, vertexBufferCount), &mode, GL_void_return) /* 2858 */ GL_PROC(void, gl, MultiDrawElementsIndirectBindlessCountNV, glMultiDrawElementsIndirectBindlessCountNV, MULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV, (AND GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount), (mode, type, indirect, drawCount, maxDrawCount, stride, vertexBufferCount), &mode, GL_void_return) /* 2859 */ GL_PROC(void, gl, NamedBufferData, glNamedBufferData, NAMEDBUFFERDATA, (AND GLuint buffer, GLsizeiptr size, const void *data, GLenum usage), (buffer, size, data, usage), &buffer, GL_void_return) /* 2860 */ GL_PROC(void, gl, NamedBufferPageCommitmentARB, glNamedBufferPageCommitmentARB, NAMEDBUFFERPAGECOMMITMENTARB, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit), (buffer, offset, size, commit), &buffer, GL_void_return) /* 2861 */ GL_PROC(void, gl, NamedBufferPageCommitmentEXT, glNamedBufferPageCommitmentEXT, NAMEDBUFFERPAGECOMMITMENTEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean32 commit), (buffer, offset, size, commit), &buffer, GL_void_return) /* 2862 */ GL_PROC(void, gl, NamedBufferStorage, glNamedBufferStorage, NAMEDBUFFERSTORAGE, (AND GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags), (buffer, size, data, flags), &buffer, GL_void_return) /* 2863 */ GL_PROC(void, gl, NamedBufferSubData, glNamedBufferSubData, NAMEDBUFFERSUBDATA, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data), (buffer, offset, size, data), &buffer, GL_void_return) /* 2864 */ GL_PROC(void, gl, NamedFramebufferDrawBuffer, glNamedFramebufferDrawBuffer, NAMEDFRAMEBUFFERDRAWBUFFER, (AND GLuint framebuffer, GLenum buf), (framebuffer, buf), &framebuffer, GL_void_return) /* 2865 */ GL_PROC(void, gl, NamedFramebufferDrawBuffers, glNamedFramebufferDrawBuffers, NAMEDFRAMEBUFFERDRAWBUFFERS, (AND GLuint framebuffer, GLsizei n, const GLenum *bufs), (framebuffer, n, bufs), &framebuffer, GL_void_return) /* 2866 */ GL_PROC(void, gl, NamedFramebufferParameteri, glNamedFramebufferParameteri, NAMEDFRAMEBUFFERPARAMETERI, (AND GLuint framebuffer, GLenum pname, GLint param), (framebuffer, pname, param), &framebuffer, GL_void_return) /* 2867 */ GL_PROC(void, gl, NamedFramebufferReadBuffer, glNamedFramebufferReadBuffer, NAMEDFRAMEBUFFERREADBUFFER, (AND GLuint framebuffer, GLenum src), (framebuffer, src), &framebuffer, GL_void_return) /* 2868 */ GL_PROC(void, gl, NamedFramebufferRenderbuffer, glNamedFramebufferRenderbuffer, NAMEDFRAMEBUFFERRENDERBUFFER, (AND GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (framebuffer, attachment, renderbuffertarget, renderbuffer), &framebuffer, GL_void_return) /* 2869 */ GL_PROC(void, gl, NamedFramebufferSampleLocationsfvNV, glNamedFramebufferSampleLocationsfvNV, NAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV, (AND GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v), (framebuffer, start, count, v), &framebuffer, GL_void_return) /* 2870 */ GL_PROC(void, gl, NamedFramebufferTexture, glNamedFramebufferTexture, NAMEDFRAMEBUFFERTEXTURE, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level), (framebuffer, attachment, texture, level), &framebuffer, GL_void_return) /* 2871 */ GL_PROC(void, gl, NamedFramebufferTextureLayer, glNamedFramebufferTextureLayer, NAMEDFRAMEBUFFERTEXTURELAYER, (AND GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer), (framebuffer, attachment, texture, level, layer), &framebuffer, GL_void_return) /* 2872 */ GL_PROC(void, gl, NamedRenderbufferStorage, glNamedRenderbufferStorage, NAMEDRENDERBUFFERSTORAGE, (AND GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, internalformat, width, height), &renderbuffer, GL_void_return) /* 2873 */ GL_PROC(void, gl, NamedRenderbufferStorageMultisample, glNamedRenderbufferStorageMultisample, NAMEDRENDERBUFFERSTORAGEMULTISAMPLE, (AND GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height), (renderbuffer, samples, internalformat, width, height), &renderbuffer, GL_void_return) /* 2874 */ GL_PROC(GLenum, gl, PathGlyphIndexArrayNV, glPathGlyphIndexArrayNV, PATHGLYPHINDEXARRAYNV, (AND GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale), (firstPathName, fontTarget, fontName, fontStyle, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale), &firstPathName, return (GLenum)) /* 2875 */ GL_PROC(GLenum, gl, PathGlyphIndexRangeNV, glPathGlyphIndexRangeNV, PATHGLYPHINDEXRANGENV, (AND GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount), (fontTarget, fontName, fontStyle, pathParameterTemplate, emScale, baseAndCount), &fontTarget, return (GLenum)) /* 2876 */ GL_PROC(GLenum, gl, PathMemoryGlyphIndexArrayNV, glPathMemoryGlyphIndexArrayNV, PATHMEMORYGLYPHINDEXARRAYNV, (AND GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale), (firstPathName, fontTarget, fontSize, fontData, faceIndex, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale), &firstPathName, return (GLenum)) /* 2877 */ GL_PROC(void, gl, PolygonOffsetClampEXT, glPolygonOffsetClampEXT, POLYGONOFFSETCLAMPEXT, (AND GLfloat factor, GLfloat units, GLfloat clamp), (factor, units, clamp), &factor, GL_void_return) /* 2878 */ GL_PROC(void, gl, ProgramPathFragmentInputGenNV, glProgramPathFragmentInputGenNV, PROGRAMPATHFRAGMENTINPUTGENNV, (AND GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs), (program, location, genMode, components, coeffs), &program, GL_void_return) /* 2879 */ GL_PROC(void, gl, RasterSamplesEXT, glRasterSamplesEXT, RASTERSAMPLESEXT, (AND GLuint samples, GLboolean32 fixedsamplelocations), (samples, fixedsamplelocations), &samples, GL_void_return) /* 2880 */ GL_PROC(void, gl, ReadnPixels, glReadnPixels, READNPIXELS, (AND GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data), (x, y, width, height, format, type, bufSize, data), &x, GL_void_return) /* 2881 */ GL_PROC(void, gl, ResolveDepthValuesNV, glResolveDepthValuesNV, RESOLVEDEPTHVALUESNV, (NOTHING), (), NULL, GL_void_return) /* 2882 */ GL_PROC(void, gl, StateCaptureNV, glStateCaptureNV, STATECAPTURENV, (AND GLuint state, GLenum mode), (state, mode), &state, GL_void_return) /* 2883 */ GL_PROC(void, gl, StencilThenCoverFillPathInstancedNV, glStencilThenCoverFillPathInstancedNV, STENCILTHENCOVERFILLPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues), (numPaths, pathNameType, paths, pathBase, fillMode, mask, coverMode, transformType, transformValues), &numPaths, GL_void_return) /* 2884 */ GL_PROC(void, gl, StencilThenCoverFillPathNV, glStencilThenCoverFillPathNV, STENCILTHENCOVERFILLPATHNV, (AND GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode), (path, fillMode, mask, coverMode), &path, GL_void_return) /* 2885 */ GL_PROC(void, gl, StencilThenCoverStrokePathInstancedNV, glStencilThenCoverStrokePathInstancedNV, STENCILTHENCOVERSTROKEPATHINSTANCEDNV, (AND GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues), (numPaths, pathNameType, paths, pathBase, reference, mask, coverMode, transformType, transformValues), &numPaths, GL_void_return) /* 2886 */ GL_PROC(void, gl, StencilThenCoverStrokePathNV, glStencilThenCoverStrokePathNV, STENCILTHENCOVERSTROKEPATHNV, (AND GLuint path, GLint reference, GLuint mask, GLenum coverMode), (path, reference, mask, coverMode), &path, GL_void_return) /* 2887 */ GL_PROC(void, gl, SubpixelPrecisionBiasNV, glSubpixelPrecisionBiasNV, SUBPIXELPRECISIONBIASNV, (AND GLuint xbits, GLuint ybits), (xbits, ybits), &xbits, GL_void_return) /* 2888 */ GL_PROC(void, gl, TextureBarrier, glTextureBarrier, TEXTUREBARRIER, (NOTHING), (), NULL, GL_void_return) /* 2889 */ GL_PROC(void, gl, TextureBuffer, glTextureBuffer, TEXTUREBUFFER, (AND GLuint texture, GLenum internalformat, GLuint buffer), (texture, internalformat, buffer), &texture, GL_void_return) /* 2890 */ GL_PROC(void, gl, TextureBufferRange, glTextureBufferRange, TEXTUREBUFFERRANGE, (AND GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size), (texture, internalformat, buffer, offset, size), &texture, GL_void_return) /* 2891 */ GL_PROC(void, gl, TextureParameterIiv, glTextureParameterIiv, TEXTUREPARAMETERIIV, (AND GLuint texture, GLenum pname, const GLint *params), (texture, pname, params), &texture, GL_void_return) /* 2892 */ GL_PROC(void, gl, TextureParameterIuiv, glTextureParameterIuiv, TEXTUREPARAMETERIUIV, (AND GLuint texture, GLenum pname, const GLuint *params), (texture, pname, params), &texture, GL_void_return) /* 2893 */ GL_PROC(void, gl, TextureParameterf, glTextureParameterf, TEXTUREPARAMETERF, (AND GLuint texture, GLenum pname, GLfloat param), (texture, pname, param), &texture, GL_void_return) /* 2894 */ GL_PROC(void, gl, TextureParameterfv, glTextureParameterfv, TEXTUREPARAMETERFV, (AND GLuint texture, GLenum pname, const GLfloat *param), (texture, pname, param), &texture, GL_void_return) /* 2895 */ GL_PROC(void, gl, TextureParameteri, glTextureParameteri, TEXTUREPARAMETERI, (AND GLuint texture, GLenum pname, GLint param), (texture, pname, param), &texture, GL_void_return) /* 2896 */ GL_PROC(void, gl, TextureParameteriv, glTextureParameteriv, TEXTUREPARAMETERIV, (AND GLuint texture, GLenum pname, const GLint *param), (texture, pname, param), &texture, GL_void_return) /* 2897 */ GL_PROC(void, gl, TextureStorage1D, glTextureStorage1D, TEXTURESTORAGE1D, (AND GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width), (texture, levels, internalformat, width), &texture, GL_void_return) /* 2898 */ GL_PROC(void, gl, TextureStorage2D, glTextureStorage2D, TEXTURESTORAGE2D, (AND GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height), (texture, levels, internalformat, width, height), &texture, GL_void_return) /* 2899 */ GL_PROC(void, gl, TextureStorage2DMultisample, glTextureStorage2DMultisample, TEXTURESTORAGE2DMULTISAMPLE, (AND GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean32 fixedsamplelocations), (texture, samples, internalformat, width, height, fixedsamplelocations), &texture, GL_void_return) /* 2900 */ GL_PROC(void, gl, TextureStorage3D, glTextureStorage3D, TEXTURESTORAGE3D, (AND GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth), (texture, levels, internalformat, width, height, depth), &texture, GL_void_return) /* 2901 */ GL_PROC(void, gl, TextureStorage3DMultisample, glTextureStorage3DMultisample, TEXTURESTORAGE3DMULTISAMPLE, (AND GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedsamplelocations), (texture, samples, internalformat, width, height, depth, fixedsamplelocations), &texture, GL_void_return) /* 2902 */ GL_PROC(void, gl, TextureSubImage1D, glTextureSubImage1D, TEXTURESUBIMAGE1D, (AND GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels), (texture, level, xoffset, width, format, type, pixels), &texture, GL_void_return) /* 2903 */ GL_PROC(void, gl, TextureSubImage2D, glTextureSubImage2D, TEXTURESUBIMAGE2D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels), (texture, level, xoffset, yoffset, width, height, format, type, pixels), &texture, GL_void_return) /* 2904 */ GL_PROC(void, gl, TextureSubImage3D, glTextureSubImage3D, TEXTURESUBIMAGE3D, (AND GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels), (texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), &texture, GL_void_return) /* 2905 */ GL_PROC(void, gl, TransformFeedbackBufferBase, glTransformFeedbackBufferBase, TRANSFORMFEEDBACKBUFFERBASE, (AND GLuint xfb, GLuint index, GLuint buffer), (xfb, index, buffer), &xfb, GL_void_return) /* 2906 */ GL_PROC(void, gl, TransformFeedbackBufferRange, glTransformFeedbackBufferRange, TRANSFORMFEEDBACKBUFFERRANGE, (AND GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size), (xfb, index, buffer, offset, size), &xfb, GL_void_return) /* 2907 */ GL_PROC(GLboolean, gl, UnmapNamedBuffer, glUnmapNamedBuffer, UNMAPNAMEDBUFFER, (AND GLuint buffer), (buffer), &buffer, return (GLboolean)) /* 2908 */ GL_PROC(void, gl, VertexArrayAttribBinding, glVertexArrayAttribBinding, VERTEXARRAYATTRIBBINDING, (AND GLuint vaobj, GLuint attribindex, GLuint bindingindex), (vaobj, attribindex, bindingindex), &vaobj, GL_void_return) /* 2909 */ GL_PROC(void, gl, VertexArrayAttribFormat, glVertexArrayAttribFormat, VERTEXARRAYATTRIBFORMAT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean32 normalized, GLuint relativeoffset), (vaobj, attribindex, size, type, normalized, relativeoffset), &vaobj, GL_void_return) /* 2910 */ GL_PROC(void, gl, VertexArrayAttribIFormat, glVertexArrayAttribIFormat, VERTEXARRAYATTRIBIFORMAT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (vaobj, attribindex, size, type, relativeoffset), &vaobj, GL_void_return) /* 2911 */ GL_PROC(void, gl, VertexArrayAttribLFormat, glVertexArrayAttribLFormat, VERTEXARRAYATTRIBLFORMAT, (AND GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (vaobj, attribindex, size, type, relativeoffset), &vaobj, GL_void_return) /* 2912 */ GL_PROC(void, gl, VertexArrayBindingDivisor, glVertexArrayBindingDivisor, VERTEXARRAYBINDINGDIVISOR, (AND GLuint vaobj, GLuint bindingindex, GLuint divisor), (vaobj, bindingindex, divisor), &vaobj, GL_void_return) /* 2913 */ GL_PROC(void, gl, VertexArrayElementBuffer, glVertexArrayElementBuffer, VERTEXARRAYELEMENTBUFFER, (AND GLuint vaobj, GLuint buffer), (vaobj, buffer), &vaobj, GL_void_return) /* 2914 */ GL_PROC(void, gl, VertexArrayVertexBuffer, glVertexArrayVertexBuffer, VERTEXARRAYVERTEXBUFFER, (AND GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride), (vaobj, bindingindex, buffer, offset, stride), &vaobj, GL_void_return) /* 2915 */ GL_PROC(void, gl, VertexArrayVertexBuffers, glVertexArrayVertexBuffers, VERTEXARRAYVERTEXBUFFERS, (AND GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides), (vaobj, first, count, buffers, offsets, strides), &vaobj, GL_void_return) /* 2916 */ OSMESA_PROC(OSMesaContext, OSMesa, CreateContextAttribs, OSMesaCreateContextAttribs, CREATECONTEXTATTRIBS, (AND const GLint *attribList, OSMesaContext sharelist), (attribList, sharelist), &attribList, return (OSMesaContext)) /* 2917 */ GL_PROC(void, gl, SpecializeShader, glSpecializeShader, SPECIALIZESHADER, (AND GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue), (shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue), &shader, GL_void_return) /* 2918 */ GL_PROC(void, gl, SpecializeShaderARB, glSpecializeShaderARB, SPECIALIZESHADERARB, (AND GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue), (shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue), &shader, GL_void_return) /* 2919 */ GL_PROC(void, gl, MultiDrawArraysIndirectCount, glMultiDrawArraysIndirectCount, MULTIDRAWARRAYSINDIRECTCOUNT, (AND GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride), (mode, indirect, drawcount, maxdrawcount, stride), &mode, GL_void_return) /* 2920 */ GL_PROC(void, gl, MultiDrawElementsIndirectCount, glMultiDrawElementsIndirectCount, MULTIDRAWELEMENTSINDIRECTCOUNT, (AND GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride), (mode, type, indirect, drawcount, maxdrawcount, stride), &mode, GL_void_return) /* 2921 */ GL_PROC(void, gl, PolygonOffsetClamp, glPolygonOffsetClamp, POLYGONOFFSETCLAMP, (AND GLfloat factor, GLfloat units, GLfloat clamp), (factor, units, clamp), &factor, GL_void_return) /* 2922 */ GL_PROC(void, gl, PrimitiveBoundingBoxARB, glPrimitiveBoundingBoxARB, PRIMITIVEBOUNDINGBOXARB, (AND GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW), (minX, minY, minZ, minW, maxX, maxY, maxZ, maxW), &minX, GL_void_return) /* 2923 */ GL_PROC(void, gl, Uniform1i64ARB, glUniform1i64ARB, UNIFORM1I64ARB, (AND GLint location, GLint64 x), (location, x), &location, GL_void_return) /* 2924 */ GL_PROC(void, gl, Uniform2i64ARB, glUniform2i64ARB, UNIFORM2I64ARB, (AND GLint location, GLint64 x, GLint64 y), (location, x, y), &location, GL_void_return) /* 2925 */ GL_PROC(void, gl, Uniform3i64ARB, glUniform3i64ARB, UNIFORM3I64ARB, (AND GLint location, GLint64 x, GLint64 y, GLint64 z), (location, x, y, z), &location, GL_void_return) /* 2926 */ GL_PROC(void, gl, Uniform4i64ARB, glUniform4i64ARB, UNIFORM4I64ARB, (AND GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w), (location, x, y, z, w), &location, GL_void_return) /* 2927 */ GL_PROC(void, gl, Uniform1i64vARB, glUniform1i64vARB, UNIFORM1I64VARB, (AND GLint location, GLsizei count, const GLint64 *value), (location, count, value), &location, GL_void_return) /* 2928 */ GL_PROC(void, gl, Uniform2i64vARB, glUniform2i64vARB, UNIFORM2I64VARB, (AND GLint location, GLsizei count, const GLint64 *value), (location, count, value), &location, GL_void_return) /* 2929 */ GL_PROC(void, gl, Uniform3i64vARB, glUniform3i64vARB, UNIFORM3I64VARB, (AND GLint location, GLsizei count, const GLint64 *value), (location, count, value), &location, GL_void_return) /* 2930 */ GL_PROC(void, gl, Uniform4i64vARB, glUniform4i64vARB, UNIFORM4I64VARB, (AND GLint location, GLsizei count, const GLint64 *value), (location, count, value), &location, GL_void_return) /* 2931 */ GL_PROC(void, gl, Uniform1ui64ARB, glUniform1ui64ARB, UNIFORM1UI64ARB, (AND GLint location, GLuint64 x), (location, x), &location, GL_void_return) /* 2932 */ GL_PROC(void, gl, Uniform2ui64ARB, glUniform2ui64ARB, UNIFORM2UI64ARB, (AND GLint location, GLuint64 x, GLuint64 y), (location, x, y), &location, GL_void_return) /* 2933 */ GL_PROC(void, gl, Uniform3ui64ARB, glUniform3ui64ARB, UNIFORM3UI64ARB, (AND GLint location, GLuint64 x, GLuint64 y, GLuint64 z), (location, x, y, z), &location, GL_void_return) /* 2934 */ GL_PROC(void, gl, Uniform4ui64ARB, glUniform4ui64ARB, UNIFORM4UI64ARB, (AND GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w), (location, x, y, z, w), &location, GL_void_return) /* 2935 */ GL_PROC(void, gl, Uniform1ui64vARB, glUniform1ui64vARB, UNIFORM1UI64VARB, (AND GLint location, GLsizei count, const GLuint64 *value), (location, count, value), &location, GL_void_return) /* 2936 */ GL_PROC(void, gl, Uniform2ui64vARB, glUniform2ui64vARB, UNIFORM2UI64VARB, (AND GLint location, GLsizei count, const GLuint64 *value), (location, count, value), &location, GL_void_return) /* 2937 */ GL_PROC(void, gl, Uniform3ui64vARB, glUniform3ui64vARB, UNIFORM3UI64VARB, (AND GLint location, GLsizei count, const GLuint64 *value), (location, count, value), &location, GL_void_return) /* 2938 */ GL_PROC(void, gl, Uniform4ui64vARB, glUniform4ui64vARB, UNIFORM4UI64VARB, (AND GLint location, GLsizei count, const GLuint64 *value), (location, count, value), &location, GL_void_return) /* 2939 */ GL_PROC(void, gl, GetUniformi64vARB, glGetUniformi64vARB, GETUNIFORMI64VARB, (AND GLuint program, GLint location, GLint64 *params), (program, location, params), &program, GL_void_return) /* 2940 */ GL_PROC(void, gl, GetUniformui64vARB, glGetUniformui64vARB, GETUNIFORMUI64VARB, (AND GLuint program, GLint location, GLuint64 *params), (program, location, params), &program, GL_void_return) /* 2941 */ GL_PROC(void, gl, GetnUniformi64vARB, glGetnUniformi64vARB, GETNUNIFORMI64VARB, (AND GLuint program, GLint location, GLsizei bufSize, GLint64 *params), (program, location, bufSize, params), &program, GL_void_return) /* 2942 */ GL_PROC(void, gl, GetnUniformui64vARB, glGetnUniformui64vARB, GETNUNIFORMUI64VARB, (AND GLuint program, GLint location, GLsizei bufSize, GLuint64 *params), (program, location, bufSize, params), &program, GL_void_return) /* 2943 */ GL_PROC(void, gl, ProgramUniform1i64ARB, glProgramUniform1i64ARB, PROGRAMUNIFORM1I64ARB, (AND GLuint program, GLint location, GLint64 x), (program, location, x), &program, GL_void_return) /* 2944 */ GL_PROC(void, gl, ProgramUniform2i64ARB, glProgramUniform2i64ARB, PROGRAMUNIFORM2I64ARB, (AND GLuint program, GLint location, GLint64 x, GLint64 y), (program, location, x, y), &program, GL_void_return) /* 2945 */ GL_PROC(void, gl, ProgramUniform3i64ARB, glProgramUniform3i64ARB, PROGRAMUNIFORM3I64ARB, (AND GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z), (program, location, x, y, z), &program, GL_void_return) /* 2946 */ GL_PROC(void, gl, ProgramUniform4i64ARB, glProgramUniform4i64ARB, PROGRAMUNIFORM4I64ARB, (AND GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w), (program, location, x, y, z, w), &program, GL_void_return) /* 2947 */ GL_PROC(void, gl, ProgramUniform1i64vARB, glProgramUniform1i64vARB, PROGRAMUNIFORM1I64VARB, (AND GLuint program, GLint location, GLsizei count, const GLint64 *value), (program, location, count, value), &program, GL_void_return) /* 2948 */ GL_PROC(void, gl, ProgramUniform2i64vARB, glProgramUniform2i64vARB, PROGRAMUNIFORM2I64VARB, (AND GLuint program, GLint location, GLsizei count, const GLint64 *value), (program, location, count, value), &program, GL_void_return) /* 2949 */ GL_PROC(void, gl, ProgramUniform3i64vARB, glProgramUniform3i64vARB, PROGRAMUNIFORM3I64VARB, (AND GLuint program, GLint location, GLsizei count, const GLint64 *value), (program, location, count, value), &program, GL_void_return) /* 2950 */ GL_PROC(void, gl, ProgramUniform4i64vARB, glProgramUniform4i64vARB, PROGRAMUNIFORM4I64VARB, (AND GLuint program, GLint location, GLsizei count, const GLint64 *value), (program, location, count, value), &program, GL_void_return) /* 2951 */ GL_PROC(void, gl, ProgramUniform1ui64ARB, glProgramUniform1ui64ARB, PROGRAMUNIFORM1UI64ARB, (AND GLuint program, GLint location, GLuint64 x), (program, location, x), &program, GL_void_return) /* 2952 */ GL_PROC(void, gl, ProgramUniform2ui64ARB, glProgramUniform2ui64ARB, PROGRAMUNIFORM2UI64ARB, (AND GLuint program, GLint location, GLuint64 x, GLuint64 y), (program, location, x, y), &program, GL_void_return) /* 2953 */ GL_PROC(void, gl, ProgramUniform3ui64ARB, glProgramUniform3ui64ARB, PROGRAMUNIFORM3UI64ARB, (AND GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z), (program, location, x, y, z), &program, GL_void_return) /* 2954 */ GL_PROC(void, gl, ProgramUniform4ui64ARB, glProgramUniform4ui64ARB, PROGRAMUNIFORM4UI64ARB, (AND GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w), (program, location, x, y, z, w), &program, GL_void_return) /* 2955 */ GL_PROC(void, gl, ProgramUniform1ui64vARB, glProgramUniform1ui64vARB, PROGRAMUNIFORM1UI64VARB, (AND GLuint program, GLint location, GLsizei count, const GLuint64 *value), (program, location, count, value), &program, GL_void_return) /* 2956 */ GL_PROC(void, gl, ProgramUniform2ui64vARB, glProgramUniform2ui64vARB, PROGRAMUNIFORM2UI64VARB, (AND GLuint program, GLint location, GLsizei count, const GLuint64 *value), (program, location, count, value), &program, GL_void_return) /* 2957 */ GL_PROC(void, gl, ProgramUniform3ui64vARB, glProgramUniform3ui64vARB, PROGRAMUNIFORM3UI64VARB, (AND GLuint program, GLint location, GLsizei count, const GLuint64 *value), (program, location, count, value), &program, GL_void_return) /* 2958 */ GL_PROC(void, gl, ProgramUniform4ui64vARB, glProgramUniform4ui64vARB, PROGRAMUNIFORM4UI64VARB, (AND GLuint program, GLint location, GLsizei count, const GLuint64 *value), (program, location, count, value), &program, GL_void_return) /* 2959 */ GL_PROC(void, gl, MaxShaderCompilerThreadsARB, glMaxShaderCompilerThreadsARB, MAXSHADERCOMPILERTHREADSARB, (AND GLuint count), (count), &count, GL_void_return) /* 2960 */ GL_PROC(void, gl, FramebufferSampleLocationsfvARB, glFramebufferSampleLocationsfvARB, FRAMEBUFFERSAMPLELOCATIONSFVARB, (AND GLenum target, GLuint start, GLsizei count, const GLfloat *v), (target, start, count, v), &target, GL_void_return) /* 2961 */ GL_PROC(void, gl, NamedFramebufferSampleLocationsfvARB, glNamedFramebufferSampleLocationsfvARB, NAMEDFRAMEBUFFERSAMPLELOCATIONSFVARB, (AND GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v), (framebuffer, start, count, v), &framebuffer, GL_void_return) /* 2962 */ GL_PROC(void, gl, EvaluateDepthValuesARB, glEvaluateDepthValuesARB, EVALUATEDEPTHVALUESARB, (NOTHING), (), NULL, GL_void_return) /* 2963 */ GL_PROC(void, gl, MaxShaderCompilerThreadsKHR, glMaxShaderCompilerThreadsKHR, MAXSHADERCOMPILERTHREADSKHR, (AND GLuint count), (count), &count, GL_void_return) /* 2964 */ GL_PROC(void, gl, BufferStorageExternalEXT, glBufferStorageExternalEXT, BUFFERSTORAGEEXTERNALEXT, (AND GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags), (target, offset, size, clientBuffer, flags), &target, GL_void_return) /* 2965 */ GL_PROC(void, gl, NamedBufferStorageExternalEXT, glNamedBufferStorageExternalEXT, NAMEDBUFFERSTORAGEEXTERNALEXT, (AND GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags), (buffer, offset, size, clientBuffer, flags), &buffer, GL_void_return) /* 2966 */ GL_PROC(void, gl, GetUnsignedBytevEXT, glGetUnsignedBytevEXT, GETUNSIGNEDBYTEVEXT, (AND GLenum pname, GLubyte *data), (pname, data), &pname, GL_void_return) /* 2967 */ GL_PROC(void, gl, GetUnsignedBytei_vEXT, glGetUnsignedBytei_vEXT, GETUNSIGNEDBYTEI_VEXT, (AND GLenum target, GLuint index, GLubyte *data), (target, index, data), &target, GL_void_return) /* 2968 */ GL_PROC(void, gl, DeleteMemoryObjectsEXT, glDeleteMemoryObjectsEXT, DELETEMEMORYOBJECTSEXT, (AND GLsizei n, const GLuint *memoryObjects), (n, memoryObjects), &n, GL_void_return) /* 2969 */ GL_PROC(GLboolean, gl, IsMemoryObjectEXT, glIsMemoryObjectEXT, ISMEMORYOBJECTEXT, (AND GLuint memoryObject), (memoryObject), &memoryObject, return (GLboolean)) /* 2970 */ GL_PROC(void, gl, CreateMemoryObjectsEXT, glCreateMemoryObjectsEXT, CREATEMEMORYOBJECTSEXT, (AND GLsizei n, GLuint *memoryObjects), (n, memoryObjects), &n, GL_void_return) /* 2971 */ GL_PROC(void, gl, MemoryObjectParameterivEXT, glMemoryObjectParameterivEXT, MEMORYOBJECTPARAMETERIVEXT, (AND GLuint memoryObject, GLenum pname, const GLint *params), (memoryObject, pname, params), &memoryObject, GL_void_return) /* 2972 */ GL_PROC(void, gl, GetMemoryObjectParameterivEXT, glGetMemoryObjectParameterivEXT, GETMEMORYOBJECTPARAMETERIVEXT, (AND GLuint memoryObject, GLenum pname, GLint *params), (memoryObject, pname, params), &memoryObject, GL_void_return) /* 2973 */ GL_PROC(void, gl, TexStorageMem2DEXT, glTexStorageMem2DEXT, TEXSTORAGEMEM2DEXT, (AND GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset), (target, levels, internalFormat, width, height, memory, offset), &target, GL_void_return) /* 2974 */ GL_PROC(void, gl, TexStorageMem2DMultisampleEXT, glTexStorageMem2DMultisampleEXT, TEXSTORAGEMEM2DMULTISAMPLEEXT, (AND GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset), (target, samples, internalFormat, width, height, fixedSampleLocations, memory, offset), &target, GL_void_return) /* 2975 */ GL_PROC(void, gl, TexStorageMem3DEXT, glTexStorageMem3DEXT, TEXSTORAGEMEM3DEXT, (AND GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset), (target, levels, internalFormat, width, height, depth, memory, offset), &target, GL_void_return) /* 2976 */ GL_PROC(void, gl, TexStorageMem3DMultisampleEXT, glTexStorageMem3DMultisampleEXT, TEXSTORAGEMEM3DMULTISAMPLEEXT, (AND GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset), (target, samples, internalFormat, width, height, depth, fixedSampleLocations, memory, offset), &target, GL_void_return) /* 2977 */ GL_PROC(void, gl, BufferStorageMemEXT, glBufferStorageMemEXT, BUFFERSTORAGEMEMEXT, (AND GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset), (target, size, memory, offset), &target, GL_void_return) /* 2978 */ GL_PROC(void, gl, TextureStorageMem2DEXT, glTextureStorageMem2DEXT, TEXTURESTORAGEMEM2DEXT, (AND GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset), (texture, levels, internalFormat, width, height, memory, offset), &texture, GL_void_return) /* 2979 */ GL_PROC(void, gl, TextureStorageMem2DMultisampleEXT, glTextureStorageMem2DMultisampleEXT, TEXTURESTORAGEMEM2DMULTISAMPLEEXT, (AND GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset), (texture, samples, internalFormat, width, height, fixedSampleLocations, memory, offset), &texture, GL_void_return) /* 2980 */ GL_PROC(void, gl, TextureStorageMem3DEXT, glTextureStorageMem3DEXT, TEXTURESTORAGEMEM3DEXT, (AND GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset), (texture, levels, internalFormat, width, height, depth, memory, offset), &texture, GL_void_return) /* 2981 */ GL_PROC(void, gl, TextureStorageMem3DMultisampleEXT, glTextureStorageMem3DMultisampleEXT, TEXTURESTORAGEMEM3DMULTISAMPLEEXT, (AND GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean32 fixedSampleLocations, GLuint memory, GLuint64 offset), (texture, samples, internalFormat, width, height, depth, fixedSampleLocations, memory, offset), &texture, GL_void_return) /* 2982 */ GL_PROC(void, gl, NamedBufferStorageMemEXT, glNamedBufferStorageMemEXT, NAMEDBUFFERSTORAGEMEMEXT, (AND GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset), (buffer, size, memory, offset), &buffer, GL_void_return) /* 2983 */ GL_PROC(void, gl, TexStorageMem1DEXT, glTexStorageMem1DEXT, TEXSTORAGEMEM1DEXT, (AND GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset), (target, levels, internalFormat, width, memory, offset), &target, GL_void_return) /* 2984 */ GL_PROC(void, gl, TextureStorageMem1DEXT, glTextureStorageMem1DEXT, TEXTURESTORAGEMEM1DEXT, (AND GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset), (texture, levels, internalFormat, width, memory, offset), &texture, GL_void_return) /* 2985 */ GL_PROC(void, gl, ImportMemoryFdEXT, glImportMemoryFdEXT, IMPORTMEMORYFDEXT, (AND GLuint memory, GLuint64 size, GLenum handleType, GLint fd), (memory, size, handleType, fd), &memory, GL_void_return) /* 2986 */ GL_PROC(void, gl, ImportMemoryWin32HandleEXT, glImportMemoryWin32HandleEXT, IMPORTMEMORYWIN32HANDLEEXT, (AND GLuint memory, GLuint64 size, GLenum handleType, void *handle), (memory, size, handleType, handle), &memory, GL_void_return) /* 2987 */ GL_PROC(void, gl, ImportMemoryWin32NameEXT, glImportMemoryWin32NameEXT, IMPORTMEMORYWIN32NAMEEXT, (AND GLuint memory, GLuint64 size, GLenum handleType, const void *name), (memory, size, handleType, name), &memory, GL_void_return) /* 2988 */ GL_PROC(void, gl, GenSemaphoresEXT, glGenSemaphoresEXT, GENSEMAPHORESEXT, (AND GLsizei n, GLuint *semaphores), (n, semaphores), &n, GL_void_return) /* 2989 */ GL_PROC(void, gl, DeleteSemaphoresEXT, glDeleteSemaphoresEXT, DELETESEMAPHORESEXT, (AND GLsizei n, const GLuint *semaphores), (n, semaphores), &n, GL_void_return) /* 2990 */ GL_PROC(GLboolean, gl, IsSemaphoreEXT, glIsSemaphoreEXT, ISSEMAPHOREEXT, (AND GLuint semaphore), (semaphore), &semaphore, return (GLboolean)) /* 2991 */ GL_PROC(void, gl, SemaphoreParameterui64vEXT, glSemaphoreParameterui64vEXT, SEMAPHOREPARAMETERUI64VEXT, (AND GLuint semaphore, GLenum pname, const GLuint64 *params), (semaphore, pname, params), &semaphore, GL_void_return) /* 2992 */ GL_PROC(void, gl, GetSemaphoreParameterui64vEXT, glGetSemaphoreParameterui64vEXT, GETSEMAPHOREPARAMETERUI64VEXT, (AND GLuint semaphore, GLenum pname, GLuint64 *params), (semaphore, pname, params), &semaphore, GL_void_return) /* 2993 */ GL_PROC(void, gl, WaitSemaphoreEXT, glWaitSemaphoreEXT, WAITSEMAPHOREEXT, (AND GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts), (semaphore, numBufferBarriers, buffers, numTextureBarriers, textures, srcLayouts), &semaphore, GL_void_return) /* 2994 */ GL_PROC(void, gl, SignalSemaphoreEXT, glSignalSemaphoreEXT, SIGNALSEMAPHOREEXT, (AND GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts), (semaphore, numBufferBarriers, buffers, numTextureBarriers, textures, dstLayouts), &semaphore, GL_void_return) /* 2995 */ GL_PROC(void, gl, ImportSemaphoreFdEXT, glImportSemaphoreFdEXT, IMPORTSEMAPHOREFDEXT, (AND GLuint semaphore, GLenum handleType, GLint fd), (semaphore, handleType, fd), &semaphore, GL_void_return) /* 2996 */ GL_PROC(void, gl, ImportSemaphoreWin32HandleEXT, glImportSemaphoreWin32HandleEXT, IMPORTSEMAPHOREWIN32HANDLEEXT, (AND GLuint semaphore, GLenum handleType, void *handle), (semaphore, handleType, handle), &semaphore, GL_void_return) /* 2997 */ GL_PROC(void, gl, ImportSemaphoreWin32NameEXT, glImportSemaphoreWin32NameEXT, IMPORTSEMAPHOREWIN32NAMEEXT, (AND GLuint semaphore, GLenum handleType, const void *name), (semaphore, handleType, name), &semaphore, GL_void_return) /* 2998 */ GL_PROC(GLboolean, gl, AcquireKeyedMutexWin32EXT, glAcquireKeyedMutexWin32EXT, ACQUIREKEYEDMUTEXWIN32EXT, (AND GLuint memory, GLuint64 key, GLuint timeout), (memory, key, timeout), &memory, return (GLboolean)) /* 2999 */ GL_PROC(GLboolean, gl, ReleaseKeyedMutexWin32EXT, glReleaseKeyedMutexWin32EXT, RELEASEKEYEDMUTEXWIN32EXT, (AND GLuint memory, GLuint64 key), (memory, key), &memory, return (GLboolean)) /* 3000 */ GL_PROC(void, gl, LGPUNamedBufferSubDataNVX, glLGPUNamedBufferSubDataNVX, LGPUNAMEDBUFFERSUBDATANVX, (AND GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data), (gpuMask, buffer, offset, size, data), &gpuMask, GL_void_return) /* 3001 */ GL_PROC(void, gl, LGPUCopyImageSubDataNVX, glLGPUCopyImageSubDataNVX, LGPUCOPYIMAGESUBDATANVX, (AND GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth), (sourceGpu, destinationGpuMask, srcName, srcTarget, srcLevel, srcX, srxY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth), &sourceGpu, GL_void_return) /* 3002 */ GL_PROC(void, gl, LGPUInterlockNVX, glLGPUInterlockNVX, LGPUINTERLOCKNVX, (NOTHING), (), NULL, GL_void_return) /* 3003 */ GL_PROC(void, gl, AlphaToCoverageDitherControlNV, glAlphaToCoverageDitherControlNV, ALPHATOCOVERAGEDITHERCONTROLNV, (AND GLenum mode), (mode), &mode, GL_void_return) /* 3004 */ GL_PROC(void, gl, DrawVkImageNV, glDrawVkImageNV, DRAWVKIMAGENV, (AND GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1), (vkImage, sampler, x0, y0, x1, y1, z, s0, t0, s1, t1), &vkImage, GL_void_return) /* 3005 */ GL_PROC(GLVULKANPROCNV, gl, GetVkProcAddrNV, glGetVkProcAddrNV, GETVKPROCADDRNV, (AND const GLchar *name), (name), &name, return (GLVULKANPROCNV)) /* 3006 */ GL_PROC(void, gl, WaitVkSemaphoreNV, glWaitVkSemaphoreNV, WAITVKSEMAPHORENV, (AND GLuint64 vkSemaphore), (vkSemaphore), &vkSemaphore, GL_void_return) /* 3007 */ GL_PROC(void, gl, SignalVkSemaphoreNV, glSignalVkSemaphoreNV, SIGNALVKSEMAPHORENV, (AND GLuint64 vkSemaphore), (vkSemaphore), &vkSemaphore, GL_void_return) /* 3008 */ GL_PROC(void, gl, SignalVkFenceNV, glSignalVkFenceNV, SIGNALVKFENCENV, (AND GLuint64 vkFence), (vkFence), &vkFence, GL_void_return) /* 3009 */ GL_PROC(void, gl, RenderGpuMaskNV, glRenderGpuMaskNV, RENDERGPUMASKNV, (AND GLbitfield mask), (mask), &mask, GL_void_return) /* 3010 */ GL_PROC(void, gl, MulticastBufferSubDataNV, glMulticastBufferSubDataNV, MULTICASTBUFFERSUBDATANV, (AND GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data), (gpuMask, buffer, offset, size, data), &gpuMask, GL_void_return) /* 3011 */ GL_PROC(void, gl, MulticastCopyBufferSubDataNV, glMulticastCopyBufferSubDataNV, MULTICASTCOPYBUFFERSUBDATANV, (AND GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size), (readGpu, writeGpuMask, readBuffer, writeBuffer, readOffset, writeOffset, size), &readGpu, GL_void_return) /* 3012 */ GL_PROC(void, gl, MulticastCopyImageSubDataNV, glMulticastCopyImageSubDataNV, MULTICASTCOPYIMAGESUBDATANV, (AND GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth), (srcGpu, dstGpuMask, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth), &srcGpu, GL_void_return) /* 3013 */ GL_PROC(void, gl, MulticastBlitFramebufferNV, glMulticastBlitFramebufferNV, MULTICASTBLITFRAMEBUFFERNV, (AND GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter), (srcGpu, dstGpu, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), &srcGpu, GL_void_return) /* 3014 */ GL_PROC(void, gl, MulticastFramebufferSampleLocationsfvNV, glMulticastFramebufferSampleLocationsfvNV, MULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNV, (AND GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v), (gpu, framebuffer, start, count, v), &gpu, GL_void_return) /* 3015 */ GL_PROC(void, gl, MulticastBarrierNV, glMulticastBarrierNV, MULTICASTBARRIERNV, (NOTHING), (), NULL, GL_void_return) /* 3016 */ GL_PROC(void, gl, MulticastWaitSyncNV, glMulticastWaitSyncNV, MULTICASTWAITSYNCNV, (AND GLuint signalGpu, GLbitfield waitGpuMask), (signalGpu, waitGpuMask), &signalGpu, GL_void_return) /* 3017 */ GL_PROC(void, gl, MulticastGetQueryObjectivNV, glMulticastGetQueryObjectivNV, MULTICASTGETQUERYOBJECTIVNV, (AND GLuint gpu, GLuint id, GLenum pname, GLint *params), (gpu, id, pname, params), &gpu, GL_void_return) /* 3018 */ GL_PROC(void, gl, MulticastGetQueryObjectuivNV, glMulticastGetQueryObjectuivNV, MULTICASTGETQUERYOBJECTUIVNV, (AND GLuint gpu, GLuint id, GLenum pname, GLuint *params), (gpu, id, pname, params), &gpu, GL_void_return) /* 3019 */ GL_PROC(void, gl, MulticastGetQueryObjecti64vNV, glMulticastGetQueryObjecti64vNV, MULTICASTGETQUERYOBJECTI64VNV, (AND GLuint gpu, GLuint id, GLenum pname, GLint64 *params), (gpu, id, pname, params), &gpu, GL_void_return) /* 3020 */ GL_PROC(void, gl, MulticastGetQueryObjectui64vNV, glMulticastGetQueryObjectui64vNV, MULTICASTGETQUERYOBJECTUI64VNV, (AND GLuint gpu, GLuint id, GLenum pname, GLuint64 *params), (gpu, id, pname, params), &gpu, GL_void_return) /* 3021 */ GL_PROC(GLint, gl, QueryResourceNV, glQueryResourceNV, QUERYRESOURCENV, (AND GLenum queryType, GLint tagId, GLuint bufSize, GLint *buffer), (queryType, tagId, bufSize, buffer), &queryType, return (GLint)) /* 3022 */ GL_PROC(void, gl, GenQueryResourceTagNV, glGenQueryResourceTagNV, GENQUERYRESOURCETAGNV, (AND GLsizei n, GLint *tagIds), (n, tagIds), &n, GL_void_return) /* 3023 */ GL_PROC(void, gl, DeleteQueryResourceTagNV, glDeleteQueryResourceTagNV, DELETEQUERYRESOURCETAGNV, (AND GLsizei n, const GLint *tagIds), (n, tagIds), &n, GL_void_return) /* 3024 */ GL_PROC(void, gl, QueryResourceTagNV, glQueryResourceTagNV, QUERYRESOURCETAGNV, (AND GLint tagId, const GLchar *tagString), (tagId, tagString), &tagId, GL_void_return) /* 3025 */ GL_PROC(void, gl, FramebufferSamplePositionsfvAMD, glFramebufferSamplePositionsfvAMD, FRAMEBUFFERSAMPLEPOSITIONSFVAMD, (AND GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values), (target, numsamples, pixelindex, values), &target, GL_void_return) /* 3026 */ GL_PROC(void, gl, NamedFramebufferSamplePositionsfvAMD, glNamedFramebufferSamplePositionsfvAMD, NAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMD, (AND GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values), (framebuffer, numsamples, pixelindex, values), &framebuffer, GL_void_return) /* 3027 */ GL_PROC(void, gl, GetFramebufferParameterfvAMD, glGetFramebufferParameterfvAMD, GETFRAMEBUFFERPARAMETERFVAMD, (AND GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values), (target, pname, numsamples, pixelindex, size, values), &target, GL_void_return) /* 3028 */ GL_PROC(void, gl, GetNamedFramebufferParameterfvAMD, glGetNamedFramebufferParameterfvAMD, GETNAMEDFRAMEBUFFERPARAMETERFVAMD, (AND GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values), (framebuffer, pname, numsamples, pixelindex, size, values), &framebuffer, GL_void_return) /* 3029 */ GL_PROC(void, gl, WindowRectanglesEXT, glWindowRectanglesEXT, WINDOWRECTANGLESEXT, (AND GLenum mode, GLsizei count, const GLint *box), (mode, count, box), &mode, GL_void_return) /* 3030 */ GL_PROC(void, gl, ApplyFramebufferAttachmentCMAAINTEL, glApplyFramebufferAttachmentCMAAINTEL, APPLYFRAMEBUFFERATTACHMENTCMAAINTEL, (NOTHING), (), NULL, GL_void_return) /* 3031 */ GL_PROC(void, gl, ViewportSwizzleNV, glViewportSwizzleNV, VIEWPORTSWIZZLENV, (AND GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew), (index, swizzlex, swizzley, swizzlez, swizzlew), &index, GL_void_return) /* 3032 */ GL_PROC(void, gl, ViewportPositionWScaleNV, glViewportPositionWScaleNV, VIEWPORTPOSITIONWSCALENV, (AND GLuint index, GLfloat xcoeff, GLfloat ycoeff), (index, xcoeff, ycoeff), &index, GL_void_return) /* 3033 */ GL_PROC(void, gl, ConservativeRasterParameterfNV, glConservativeRasterParameterfNV, CONSERVATIVERASTERPARAMETERFNV, (AND GLenum pname, GLfloat value), (pname, value), &pname, GL_void_return) /* 3034 */ GL_PROC(void, gl, ConservativeRasterParameteriNV, glConservativeRasterParameteriNV, CONSERVATIVERASTERPARAMETERINV, (AND GLenum pname, GLint param), (pname, param), &pname, GL_void_return) /* Functions generated: 13 OSMesa + 2954 GL + 2 GLU + 54 empty */ #undef GL_PROC #undef GL_PROC64 #undef GLU_PROC #undef GL_GETSTRING #undef GL_GETSTRINGI #undef LENGL_PROC #undef PUTGL_PROC #undef OSMESA_PROC #undef NO_PROC #undef TINYGL_PROC #undef GL_void_return aranym-1.1.0/atari/nfosmesa/enum-gl.h0000664000175000017500000034633013454637621015642 0ustar joyjoy/* * Originally generated by enum-gen.pl from gl.h and glext.h (for ARANFOSMESA_NFAPI_VERSION 1) */ /* misc functions */ NFOSMESA_LENGLGETSTRING = 1, NFOSMESA_PUTGLGETSTRING = 2, /* osmesa functions */ NFOSMESA_OSMESACREATECONTEXT = 3, NFOSMESA_OSMESACREATECONTEXTEXT = 4, NFOSMESA_OSMESADESTROYCONTEXT = 5, NFOSMESA_OSMESAMAKECURRENT = 6, NFOSMESA_OSMESAGETCURRENTCONTEXT = 7, NFOSMESA_OSMESAPIXELSTORE = 8, NFOSMESA_OSMESAGETINTEGERV = 9, NFOSMESA_OSMESAGETDEPTHBUFFER = 10, NFOSMESA_OSMESAGETCOLORBUFFER = 11, NFOSMESA_OSMESAGETPROCADDRESS = 12, /* gl + glext functions */ NFOSMESA_GLCLEARINDEX = 13, NFOSMESA_GLCLEARCOLOR = 14, NFOSMESA_GLCLEAR = 15, NFOSMESA_GLINDEXMASK = 16, NFOSMESA_GLCOLORMASK = 17, NFOSMESA_GLALPHAFUNC = 18, NFOSMESA_GLBLENDFUNC = 19, NFOSMESA_GLLOGICOP = 20, NFOSMESA_GLCULLFACE = 21, NFOSMESA_GLFRONTFACE = 22, NFOSMESA_GLPOINTSIZE = 23, NFOSMESA_GLLINEWIDTH = 24, NFOSMESA_GLLINESTIPPLE = 25, NFOSMESA_GLPOLYGONMODE = 26, NFOSMESA_GLPOLYGONOFFSET = 27, NFOSMESA_GLPOLYGONSTIPPLE = 28, NFOSMESA_GLGETPOLYGONSTIPPLE = 29, NFOSMESA_GLEDGEFLAG = 30, NFOSMESA_GLEDGEFLAGV = 31, NFOSMESA_GLSCISSOR = 32, NFOSMESA_GLCLIPPLANE = 33, NFOSMESA_GLGETCLIPPLANE = 34, NFOSMESA_GLDRAWBUFFER = 35, NFOSMESA_GLREADBUFFER = 36, NFOSMESA_GLENABLE = 37, NFOSMESA_GLDISABLE = 38, NFOSMESA_GLISENABLED = 39, NFOSMESA_GLENABLECLIENTSTATE = 40, NFOSMESA_GLDISABLECLIENTSTATE = 41, NFOSMESA_GLGETBOOLEANV = 42, NFOSMESA_GLGETDOUBLEV = 43, NFOSMESA_GLGETFLOATV = 44, NFOSMESA_GLGETINTEGERV = 45, NFOSMESA_GLPUSHATTRIB = 46, NFOSMESA_GLPOPATTRIB = 47, NFOSMESA_GLPUSHCLIENTATTRIB = 48, NFOSMESA_GLPOPCLIENTATTRIB = 49, NFOSMESA_GLRENDERMODE = 50, NFOSMESA_GLGETERROR = 51, NFOSMESA_GLFINISH = 52, NFOSMESA_GLFLUSH = 53, NFOSMESA_GLHINT = 54, NFOSMESA_GLCLEARDEPTH = 55, NFOSMESA_GLDEPTHFUNC = 56, NFOSMESA_GLDEPTHMASK = 57, NFOSMESA_GLDEPTHRANGE = 58, NFOSMESA_GLCLEARACCUM = 59, NFOSMESA_GLACCUM = 60, NFOSMESA_GLMATRIXMODE = 61, NFOSMESA_GLORTHO = 62, NFOSMESA_GLORTHOD = NFOSMESA_GLORTHO, NFOSMESA_GLFRUSTUM = 63, NFOSMESA_GLVIEWPORT = 64, NFOSMESA_GLPUSHMATRIX = 65, NFOSMESA_GLPOPMATRIX = 66, NFOSMESA_GLLOADIDENTITY = 67, NFOSMESA_GLLOADMATRIXD = 68, NFOSMESA_GLLOADMATRIXF = 69, NFOSMESA_GLMULTMATRIXD = 70, NFOSMESA_GLMULTMATRIXF = 71, NFOSMESA_GLROTATED = 72, NFOSMESA_GLROTATEF = 73, NFOSMESA_GLSCALED = 74, NFOSMESA_GLSCALEF = 75, NFOSMESA_GLTRANSLATED = 76, NFOSMESA_GLTRANSLATEF = 77, NFOSMESA_GLISLIST = 78, NFOSMESA_GLDELETELISTS = 79, NFOSMESA_GLGENLISTS = 80, NFOSMESA_GLNEWLIST = 81, NFOSMESA_GLENDLIST = 82, NFOSMESA_GLCALLLIST = 83, NFOSMESA_GLCALLLISTS = 84, NFOSMESA_GLLISTBASE = 85, NFOSMESA_GLBEGIN = 86, NFOSMESA_GLEND = 87, NFOSMESA_GLVERTEX2D = 88, NFOSMESA_GLVERTEX2F = 89, NFOSMESA_GLVERTEX2I = 90, NFOSMESA_GLVERTEX2S = 91, NFOSMESA_GLVERTEX3D = 92, NFOSMESA_GLVERTEX3F = 93, NFOSMESA_GLVERTEX3I = 94, NFOSMESA_GLVERTEX3S = 95, NFOSMESA_GLVERTEX4D = 96, NFOSMESA_GLVERTEX4F = 97, NFOSMESA_GLVERTEX4I = 98, NFOSMESA_GLVERTEX4S = 99, NFOSMESA_GLVERTEX2DV = 100, NFOSMESA_GLVERTEX2FV = 101, NFOSMESA_GLVERTEX2IV = 102, NFOSMESA_GLVERTEX2SV = 103, NFOSMESA_GLVERTEX3DV = 104, NFOSMESA_GLVERTEX3FV = 105, NFOSMESA_GLVERTEX3IV = 106, NFOSMESA_GLVERTEX3SV = 107, NFOSMESA_GLVERTEX4DV = 108, NFOSMESA_GLVERTEX4FV = 109, NFOSMESA_GLVERTEX4IV = 110, NFOSMESA_GLVERTEX4SV = 111, NFOSMESA_GLNORMAL3B = 112, NFOSMESA_GLNORMAL3D = 113, NFOSMESA_GLNORMAL3F = 114, NFOSMESA_GLNORMAL3I = 115, NFOSMESA_GLNORMAL3S = 116, NFOSMESA_GLNORMAL3BV = 117, NFOSMESA_GLNORMAL3DV = 118, NFOSMESA_GLNORMAL3FV = 119, NFOSMESA_GLNORMAL3IV = 120, NFOSMESA_GLNORMAL3SV = 121, NFOSMESA_GLINDEXD = 122, NFOSMESA_GLINDEXF = 123, NFOSMESA_GLINDEXI = 124, NFOSMESA_GLINDEXS = 125, NFOSMESA_GLINDEXUB = 126, NFOSMESA_GLINDEXDV = 127, NFOSMESA_GLINDEXFV = 128, NFOSMESA_GLINDEXIV = 129, NFOSMESA_GLINDEXSV = 130, NFOSMESA_GLINDEXUBV = 131, NFOSMESA_GLCOLOR3B = 132, NFOSMESA_GLCOLOR3D = 133, NFOSMESA_GLCOLOR3F = 134, NFOSMESA_GLCOLOR3I = 135, NFOSMESA_GLCOLOR3S = 136, NFOSMESA_GLCOLOR3UB = 137, NFOSMESA_GLCOLOR3UI = 138, NFOSMESA_GLCOLOR3US = 139, NFOSMESA_GLCOLOR4B = 140, NFOSMESA_GLCOLOR4D = 141, NFOSMESA_GLCOLOR4F = 142, NFOSMESA_GLCOLOR4I = 143, NFOSMESA_GLCOLOR4S = 144, NFOSMESA_GLCOLOR4UB = 145, NFOSMESA_GLCOLOR4UI = 146, NFOSMESA_GLCOLOR4US = 147, NFOSMESA_GLCOLOR3BV = 148, NFOSMESA_GLCOLOR3DV = 149, NFOSMESA_GLCOLOR3FV = 150, NFOSMESA_GLCOLOR3IV = 151, NFOSMESA_GLCOLOR3SV = 152, NFOSMESA_GLCOLOR3UBV = 153, NFOSMESA_GLCOLOR3UIV = 154, NFOSMESA_GLCOLOR3USV = 155, NFOSMESA_GLCOLOR4BV = 156, NFOSMESA_GLCOLOR4DV = 157, NFOSMESA_GLCOLOR4FV = 158, NFOSMESA_GLCOLOR4IV = 159, NFOSMESA_GLCOLOR4SV = 160, NFOSMESA_GLCOLOR4UBV = 161, NFOSMESA_GLCOLOR4UIV = 162, NFOSMESA_GLCOLOR4USV = 163, NFOSMESA_GLTEXCOORD1D = 164, NFOSMESA_GLTEXCOORD1F = 165, NFOSMESA_GLTEXCOORD1I = 166, NFOSMESA_GLTEXCOORD1S = 167, NFOSMESA_GLTEXCOORD2D = 168, NFOSMESA_GLTEXCOORD2F = 169, NFOSMESA_GLTEXCOORD2I = 170, NFOSMESA_GLTEXCOORD2S = 171, NFOSMESA_GLTEXCOORD3D = 172, NFOSMESA_GLTEXCOORD3F = 173, NFOSMESA_GLTEXCOORD3I = 174, NFOSMESA_GLTEXCOORD3S = 175, NFOSMESA_GLTEXCOORD4D = 176, NFOSMESA_GLTEXCOORD4F = 177, NFOSMESA_GLTEXCOORD4I = 178, NFOSMESA_GLTEXCOORD4S = 179, NFOSMESA_GLTEXCOORD1DV = 180, NFOSMESA_GLTEXCOORD1FV = 181, NFOSMESA_GLTEXCOORD1IV = 182, NFOSMESA_GLTEXCOORD1SV = 183, NFOSMESA_GLTEXCOORD2DV = 184, NFOSMESA_GLTEXCOORD2FV = 185, NFOSMESA_GLTEXCOORD2IV = 186, NFOSMESA_GLTEXCOORD2SV = 187, NFOSMESA_GLTEXCOORD3DV = 188, NFOSMESA_GLTEXCOORD3FV = 189, NFOSMESA_GLTEXCOORD3IV = 190, NFOSMESA_GLTEXCOORD3SV = 191, NFOSMESA_GLTEXCOORD4DV = 192, NFOSMESA_GLTEXCOORD4FV = 193, NFOSMESA_GLTEXCOORD4IV = 194, NFOSMESA_GLTEXCOORD4SV = 195, NFOSMESA_GLRASTERPOS2D = 196, NFOSMESA_GLRASTERPOS2F = 197, NFOSMESA_GLRASTERPOS2I = 198, NFOSMESA_GLRASTERPOS2S = 199, NFOSMESA_GLRASTERPOS3D = 200, NFOSMESA_GLRASTERPOS3F = 201, NFOSMESA_GLRASTERPOS3I = 202, NFOSMESA_GLRASTERPOS3S = 203, NFOSMESA_GLRASTERPOS4D = 204, NFOSMESA_GLRASTERPOS4F = 205, NFOSMESA_GLRASTERPOS4I = 206, NFOSMESA_GLRASTERPOS4S = 207, NFOSMESA_GLRASTERPOS2DV = 208, NFOSMESA_GLRASTERPOS2FV = 209, NFOSMESA_GLRASTERPOS2IV = 210, NFOSMESA_GLRASTERPOS2SV = 211, NFOSMESA_GLRASTERPOS3DV = 212, NFOSMESA_GLRASTERPOS3FV = 213, NFOSMESA_GLRASTERPOS3IV = 214, NFOSMESA_GLRASTERPOS3SV = 215, NFOSMESA_GLRASTERPOS4DV = 216, NFOSMESA_GLRASTERPOS4FV = 217, NFOSMESA_GLRASTERPOS4IV = 218, NFOSMESA_GLRASTERPOS4SV = 219, NFOSMESA_GLRECTD = 220, NFOSMESA_GLRECTF = 221, NFOSMESA_GLRECTI = 222, NFOSMESA_GLRECTS = 223, NFOSMESA_GLRECTDV = 224, NFOSMESA_GLRECTFV = 225, NFOSMESA_GLRECTIV = 226, NFOSMESA_GLRECTSV = 227, NFOSMESA_GLVERTEXPOINTER = 228, NFOSMESA_GLNORMALPOINTER = 229, NFOSMESA_GLCOLORPOINTER = 230, NFOSMESA_GLINDEXPOINTER = 231, NFOSMESA_GLTEXCOORDPOINTER = 232, NFOSMESA_GLEDGEFLAGPOINTER = 233, NFOSMESA_GLGETPOINTERV = 234, NFOSMESA_GLARRAYELEMENT = 235, NFOSMESA_GLDRAWARRAYS = 236, NFOSMESA_GLDRAWELEMENTS = 237, NFOSMESA_GLINTERLEAVEDARRAYS = 238, NFOSMESA_GLSHADEMODEL = 239, NFOSMESA_GLLIGHTF = 240, NFOSMESA_GLLIGHTI = 241, NFOSMESA_GLLIGHTFV = 242, NFOSMESA_GLLIGHTIV = 243, NFOSMESA_GLGETLIGHTFV = 244, NFOSMESA_GLGETLIGHTIV = 245, NFOSMESA_GLLIGHTMODELF = 246, NFOSMESA_GLLIGHTMODELI = 247, NFOSMESA_GLLIGHTMODELFV = 248, NFOSMESA_GLLIGHTMODELIV = 249, NFOSMESA_GLMATERIALF = 250, NFOSMESA_GLMATERIALI = 251, NFOSMESA_GLMATERIALFV = 252, NFOSMESA_GLMATERIALIV = 253, NFOSMESA_GLGETMATERIALFV = 254, NFOSMESA_GLGETMATERIALIV = 255, NFOSMESA_GLCOLORMATERIAL = 256, NFOSMESA_GLPIXELZOOM = 257, NFOSMESA_GLPIXELSTOREF = 258, NFOSMESA_GLPIXELSTOREI = 259, NFOSMESA_GLPIXELTRANSFERF = 260, NFOSMESA_GLPIXELTRANSFERI = 261, NFOSMESA_GLPIXELMAPFV = 262, NFOSMESA_GLPIXELMAPUIV = 263, NFOSMESA_GLPIXELMAPUSV = 264, NFOSMESA_GLGETPIXELMAPFV = 265, NFOSMESA_GLGETPIXELMAPUIV = 266, NFOSMESA_GLGETPIXELMAPUSV = 267, NFOSMESA_GLBITMAP = 268, NFOSMESA_GLREADPIXELS = 269, NFOSMESA_GLDRAWPIXELS = 270, NFOSMESA_GLCOPYPIXELS = 271, NFOSMESA_GLSTENCILFUNC = 272, NFOSMESA_GLSTENCILMASK = 273, NFOSMESA_GLSTENCILOP = 274, NFOSMESA_GLCLEARSTENCIL = 275, NFOSMESA_GLTEXGEND = 276, NFOSMESA_GLTEXGENF = 277, NFOSMESA_GLTEXGENI = 278, NFOSMESA_GLTEXGENDV = 279, NFOSMESA_GLTEXGENFV = 280, NFOSMESA_GLTEXGENIV = 281, NFOSMESA_GLGETTEXGENDV = 282, NFOSMESA_GLGETTEXGENFV = 283, NFOSMESA_GLGETTEXGENIV = 284, NFOSMESA_GLTEXENVF = 285, NFOSMESA_GLTEXENVI = 286, NFOSMESA_GLTEXENVFV = 287, NFOSMESA_GLTEXENVIV = 288, NFOSMESA_GLGETTEXENVFV = 289, NFOSMESA_GLGETTEXENVIV = 290, NFOSMESA_GLTEXPARAMETERF = 291, NFOSMESA_GLTEXPARAMETERI = 292, NFOSMESA_GLTEXPARAMETERFV = 293, NFOSMESA_GLTEXPARAMETERIV = 294, NFOSMESA_GLGETTEXPARAMETERFV = 295, NFOSMESA_GLGETTEXPARAMETERIV = 296, NFOSMESA_GLGETTEXLEVELPARAMETERFV = 297, NFOSMESA_GLGETTEXLEVELPARAMETERIV = 298, NFOSMESA_GLTEXIMAGE1D = 299, NFOSMESA_GLTEXIMAGE2D = 300, NFOSMESA_GLGETTEXIMAGE = 301, NFOSMESA_GLGENTEXTURES = 302, NFOSMESA_GLDELETETEXTURES = 303, NFOSMESA_GLBINDTEXTURE = 304, NFOSMESA_GLPRIORITIZETEXTURES = 305, NFOSMESA_GLARETEXTURESRESIDENT = 306, NFOSMESA_GLISTEXTURE = 307, NFOSMESA_GLTEXSUBIMAGE1D = 308, NFOSMESA_GLTEXSUBIMAGE2D = 309, NFOSMESA_GLCOPYTEXIMAGE1D = 310, NFOSMESA_GLCOPYTEXIMAGE2D = 311, NFOSMESA_GLCOPYTEXSUBIMAGE1D = 312, NFOSMESA_GLCOPYTEXSUBIMAGE2D = 313, NFOSMESA_GLMAP1D = 314, NFOSMESA_GLMAP1F = 315, NFOSMESA_GLMAP2D = 316, NFOSMESA_GLMAP2F = 317, NFOSMESA_GLGETMAPDV = 318, NFOSMESA_GLGETMAPFV = 319, NFOSMESA_GLGETMAPIV = 320, NFOSMESA_GLEVALCOORD1D = 321, NFOSMESA_GLEVALCOORD1F = 322, NFOSMESA_GLEVALCOORD1DV = 323, NFOSMESA_GLEVALCOORD1FV = 324, NFOSMESA_GLEVALCOORD2D = 325, NFOSMESA_GLEVALCOORD2F = 326, NFOSMESA_GLEVALCOORD2DV = 327, NFOSMESA_GLEVALCOORD2FV = 328, NFOSMESA_GLMAPGRID1D = 329, NFOSMESA_GLMAPGRID1F = 330, NFOSMESA_GLMAPGRID2D = 331, NFOSMESA_GLMAPGRID2F = 332, NFOSMESA_GLEVALPOINT1 = 333, NFOSMESA_GLEVALPOINT2 = 334, NFOSMESA_GLEVALMESH1 = 335, NFOSMESA_GLEVALMESH2 = 336, NFOSMESA_GLFOGF = 337, NFOSMESA_GLFOGI = 338, NFOSMESA_GLFOGFV = 339, NFOSMESA_GLFOGIV = 340, NFOSMESA_GLFEEDBACKBUFFER = 341, NFOSMESA_GLPASSTHROUGH = 342, NFOSMESA_GLSELECTBUFFER = 343, NFOSMESA_GLINITNAMES = 344, NFOSMESA_GLLOADNAME = 345, NFOSMESA_GLPUSHNAME = 346, NFOSMESA_GLPOPNAME = 347, NFOSMESA_GLENABLETRACEMESA = 348, NFOSMESA_GLDISABLETRACEMESA = 349, NFOSMESA_GLNEWTRACEMESA = 350, NFOSMESA_GLENDTRACEMESA = 351, NFOSMESA_GLTRACEASSERTATTRIBMESA = 352, NFOSMESA_GLTRACECOMMENTMESA = 353, NFOSMESA_GLTRACETEXTUREMESA = 354, NFOSMESA_GLTRACELISTMESA = 355, NFOSMESA_GLTRACEPOINTERMESA = 356, NFOSMESA_GLTRACEPOINTERRANGEMESA = 357, NFOSMESA_GLBLENDEQUATIONSEPARATEATI = 358, NFOSMESA_GLBLENDCOLOR = 359, NFOSMESA_GLBLENDEQUATION = 360, NFOSMESA_GLDRAWRANGEELEMENTS = 361, NFOSMESA_GLCOLORTABLE = 362, NFOSMESA_GLCOLORTABLEPARAMETERFV = 363, NFOSMESA_GLCOLORTABLEPARAMETERIV = 364, NFOSMESA_GLCOPYCOLORTABLE = 365, NFOSMESA_GLGETCOLORTABLE = 366, NFOSMESA_GLGETCOLORTABLEPARAMETERFV = 367, NFOSMESA_GLGETCOLORTABLEPARAMETERIV = 368, NFOSMESA_GLCOLORSUBTABLE = 369, NFOSMESA_GLCOPYCOLORSUBTABLE = 370, NFOSMESA_GLCONVOLUTIONFILTER1D = 371, NFOSMESA_GLCONVOLUTIONFILTER2D = 372, NFOSMESA_GLCONVOLUTIONPARAMETERF = 373, NFOSMESA_GLCONVOLUTIONPARAMETERFV = 374, NFOSMESA_GLCONVOLUTIONPARAMETERI = 375, NFOSMESA_GLCONVOLUTIONPARAMETERIV = 376, NFOSMESA_GLCOPYCONVOLUTIONFILTER1D = 377, NFOSMESA_GLCOPYCONVOLUTIONFILTER2D = 378, NFOSMESA_GLGETCONVOLUTIONFILTER = 379, NFOSMESA_GLGETCONVOLUTIONPARAMETERFV = 380, NFOSMESA_GLGETCONVOLUTIONPARAMETERIV = 381, NFOSMESA_GLGETSEPARABLEFILTER = 382, NFOSMESA_GLSEPARABLEFILTER2D = 383, NFOSMESA_GLGETHISTOGRAM = 384, NFOSMESA_GLGETHISTOGRAMPARAMETERFV = 385, NFOSMESA_GLGETHISTOGRAMPARAMETERIV = 386, NFOSMESA_GLGETMINMAX = 387, NFOSMESA_GLGETMINMAXPARAMETERFV = 388, NFOSMESA_GLGETMINMAXPARAMETERIV = 389, NFOSMESA_GLHISTOGRAM = 390, NFOSMESA_GLMINMAX = 391, NFOSMESA_GLRESETHISTOGRAM = 392, NFOSMESA_GLRESETMINMAX = 393, NFOSMESA_GLTEXIMAGE3D = 394, NFOSMESA_GLTEXSUBIMAGE3D = 395, NFOSMESA_GLCOPYTEXSUBIMAGE3D = 396, NFOSMESA_GLACTIVETEXTURE = 397, NFOSMESA_GLCLIENTACTIVETEXTURE = 398, NFOSMESA_GLMULTITEXCOORD1D = 399, NFOSMESA_GLMULTITEXCOORD1DV = 400, NFOSMESA_GLMULTITEXCOORD1F = 401, NFOSMESA_GLMULTITEXCOORD1FV = 402, NFOSMESA_GLMULTITEXCOORD1I = 403, NFOSMESA_GLMULTITEXCOORD1IV = 404, NFOSMESA_GLMULTITEXCOORD1S = 405, NFOSMESA_GLMULTITEXCOORD1SV = 406, NFOSMESA_GLMULTITEXCOORD2D = 407, NFOSMESA_GLMULTITEXCOORD2DV = 408, NFOSMESA_GLMULTITEXCOORD2F = 409, NFOSMESA_GLMULTITEXCOORD2FV = 410, NFOSMESA_GLMULTITEXCOORD2I = 411, NFOSMESA_GLMULTITEXCOORD2IV = 412, NFOSMESA_GLMULTITEXCOORD2S = 413, NFOSMESA_GLMULTITEXCOORD2SV = 414, NFOSMESA_GLMULTITEXCOORD3D = 415, NFOSMESA_GLMULTITEXCOORD3DV = 416, NFOSMESA_GLMULTITEXCOORD3F = 417, NFOSMESA_GLMULTITEXCOORD3FV = 418, NFOSMESA_GLMULTITEXCOORD3I = 419, NFOSMESA_GLMULTITEXCOORD3IV = 420, NFOSMESA_GLMULTITEXCOORD3S = 421, NFOSMESA_GLMULTITEXCOORD3SV = 422, NFOSMESA_GLMULTITEXCOORD4D = 423, NFOSMESA_GLMULTITEXCOORD4DV = 424, NFOSMESA_GLMULTITEXCOORD4F = 425, NFOSMESA_GLMULTITEXCOORD4FV = 426, NFOSMESA_GLMULTITEXCOORD4I = 427, NFOSMESA_GLMULTITEXCOORD4IV = 428, NFOSMESA_GLMULTITEXCOORD4S = 429, NFOSMESA_GLMULTITEXCOORD4SV = 430, NFOSMESA_GLLOADTRANSPOSEMATRIXF = 431, NFOSMESA_GLLOADTRANSPOSEMATRIXD = 432, NFOSMESA_GLMULTTRANSPOSEMATRIXF = 433, NFOSMESA_GLMULTTRANSPOSEMATRIXD = 434, NFOSMESA_GLSAMPLECOVERAGE = 435, NFOSMESA_GLCOMPRESSEDTEXIMAGE3D = 436, NFOSMESA_GLCOMPRESSEDTEXIMAGE2D = 437, NFOSMESA_GLCOMPRESSEDTEXIMAGE1D = 438, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3D = 439, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2D = 440, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1D = 441, NFOSMESA_GLGETCOMPRESSEDTEXIMAGE = 442, NFOSMESA_GLBLENDFUNCSEPARATE = 443, NFOSMESA_GLFOGCOORDF = 444, NFOSMESA_GLFOGCOORDFV = 445, NFOSMESA_GLFOGCOORDD = 446, NFOSMESA_GLFOGCOORDDV = 447, NFOSMESA_GLFOGCOORDPOINTER = 448, NFOSMESA_GLMULTIDRAWARRAYS = 449, NFOSMESA_GLMULTIDRAWELEMENTS = 450, NFOSMESA_GLPOINTPARAMETERF = 451, NFOSMESA_GLPOINTPARAMETERFV = 452, NFOSMESA_GLPOINTPARAMETERI = 453, NFOSMESA_GLPOINTPARAMETERIV = 454, NFOSMESA_GLSECONDARYCOLOR3B = 455, NFOSMESA_GLSECONDARYCOLOR3BV = 456, NFOSMESA_GLSECONDARYCOLOR3D = 457, NFOSMESA_GLSECONDARYCOLOR3DV = 458, NFOSMESA_GLSECONDARYCOLOR3F = 459, NFOSMESA_GLSECONDARYCOLOR3FV = 460, NFOSMESA_GLSECONDARYCOLOR3I = 461, NFOSMESA_GLSECONDARYCOLOR3IV = 462, NFOSMESA_GLSECONDARYCOLOR3S = 463, NFOSMESA_GLSECONDARYCOLOR3SV = 464, NFOSMESA_GLSECONDARYCOLOR3UB = 465, NFOSMESA_GLSECONDARYCOLOR3UBV = 466, NFOSMESA_GLSECONDARYCOLOR3UI = 467, NFOSMESA_GLSECONDARYCOLOR3UIV = 468, NFOSMESA_GLSECONDARYCOLOR3US = 469, NFOSMESA_GLSECONDARYCOLOR3USV = 470, NFOSMESA_GLSECONDARYCOLORPOINTER = 471, NFOSMESA_GLWINDOWPOS2D = 472, NFOSMESA_GLWINDOWPOS2DV = 473, NFOSMESA_GLWINDOWPOS2F = 474, NFOSMESA_GLWINDOWPOS2FV = 475, NFOSMESA_GLWINDOWPOS2I = 476, NFOSMESA_GLWINDOWPOS2IV = 477, NFOSMESA_GLWINDOWPOS2S = 478, NFOSMESA_GLWINDOWPOS2SV = 479, NFOSMESA_GLWINDOWPOS3D = 480, NFOSMESA_GLWINDOWPOS3DV = 481, NFOSMESA_GLWINDOWPOS3F = 482, NFOSMESA_GLWINDOWPOS3FV = 483, NFOSMESA_GLWINDOWPOS3I = 484, NFOSMESA_GLWINDOWPOS3IV = 485, NFOSMESA_GLWINDOWPOS3S = 486, NFOSMESA_GLWINDOWPOS3SV = 487, NFOSMESA_GLGENQUERIES = 488, NFOSMESA_GLDELETEQUERIES = 489, NFOSMESA_GLISQUERY = 490, NFOSMESA_GLBEGINQUERY = 491, NFOSMESA_GLENDQUERY = 492, NFOSMESA_GLGETQUERYIV = 493, NFOSMESA_GLGETQUERYOBJECTIV = 494, NFOSMESA_GLGETQUERYOBJECTUIV = 495, NFOSMESA_GLBINDBUFFER = 496, NFOSMESA_GLDELETEBUFFERS = 497, NFOSMESA_GLGENBUFFERS = 498, NFOSMESA_GLISBUFFER = 499, NFOSMESA_GLBUFFERDATA = 500, NFOSMESA_GLBUFFERSUBDATA = 501, NFOSMESA_GLGETBUFFERSUBDATA = 502, NFOSMESA_GLMAPBUFFER = 503, NFOSMESA_GLUNMAPBUFFER = 504, NFOSMESA_GLGETBUFFERPARAMETERIV = 505, NFOSMESA_GLGETBUFFERPOINTERV = 506, NFOSMESA_GLACTIVETEXTUREARB = 507, NFOSMESA_GLCLIENTACTIVETEXTUREARB = 508, NFOSMESA_GLMULTITEXCOORD1DARB = 509, NFOSMESA_GLMULTITEXCOORD1DVARB = 510, NFOSMESA_GLMULTITEXCOORD1FARB = 511, NFOSMESA_GLMULTITEXCOORD1FVARB = 512, NFOSMESA_GLMULTITEXCOORD1IARB = 513, NFOSMESA_GLMULTITEXCOORD1IVARB = 514, NFOSMESA_GLMULTITEXCOORD1SARB = 515, NFOSMESA_GLMULTITEXCOORD1SVARB = 516, NFOSMESA_GLMULTITEXCOORD2DARB = 517, NFOSMESA_GLMULTITEXCOORD2DVARB = 518, NFOSMESA_GLMULTITEXCOORD2FARB = 519, NFOSMESA_GLMULTITEXCOORD2FVARB = 520, NFOSMESA_GLMULTITEXCOORD2IARB = 521, NFOSMESA_GLMULTITEXCOORD2IVARB = 522, NFOSMESA_GLMULTITEXCOORD2SARB = 523, NFOSMESA_GLMULTITEXCOORD2SVARB = 524, NFOSMESA_GLMULTITEXCOORD3DARB = 525, NFOSMESA_GLMULTITEXCOORD3DVARB = 526, NFOSMESA_GLMULTITEXCOORD3FARB = 527, NFOSMESA_GLMULTITEXCOORD3FVARB = 528, NFOSMESA_GLMULTITEXCOORD3IARB = 529, NFOSMESA_GLMULTITEXCOORD3IVARB = 530, NFOSMESA_GLMULTITEXCOORD3SARB = 531, NFOSMESA_GLMULTITEXCOORD3SVARB = 532, NFOSMESA_GLMULTITEXCOORD4DARB = 533, NFOSMESA_GLMULTITEXCOORD4DVARB = 534, NFOSMESA_GLMULTITEXCOORD4FARB = 535, NFOSMESA_GLMULTITEXCOORD4FVARB = 536, NFOSMESA_GLMULTITEXCOORD4IARB = 537, NFOSMESA_GLMULTITEXCOORD4IVARB = 538, NFOSMESA_GLMULTITEXCOORD4SARB = 539, NFOSMESA_GLMULTITEXCOORD4SVARB = 540, NFOSMESA_GLLOADTRANSPOSEMATRIXFARB = 541, NFOSMESA_GLLOADTRANSPOSEMATRIXDARB = 542, NFOSMESA_GLMULTTRANSPOSEMATRIXFARB = 543, NFOSMESA_GLMULTTRANSPOSEMATRIXDARB = 544, NFOSMESA_GLSAMPLECOVERAGEARB = 545, NFOSMESA_GLCOMPRESSEDTEXIMAGE3DARB = 546, NFOSMESA_GLCOMPRESSEDTEXIMAGE2DARB = 547, NFOSMESA_GLCOMPRESSEDTEXIMAGE1DARB = 548, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3DARB = 549, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2DARB = 550, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1DARB = 551, NFOSMESA_GLGETCOMPRESSEDTEXIMAGEARB = 552, NFOSMESA_GLPOINTPARAMETERFARB = 553, NFOSMESA_GLPOINTPARAMETERFVARB = 554, NFOSMESA_GLWEIGHTBVARB = 555, NFOSMESA_GLWEIGHTSVARB = 556, NFOSMESA_GLWEIGHTIVARB = 557, NFOSMESA_GLWEIGHTFVARB = 558, NFOSMESA_GLWEIGHTDVARB = 559, NFOSMESA_GLWEIGHTUBVARB = 560, NFOSMESA_GLWEIGHTUSVARB = 561, NFOSMESA_GLWEIGHTUIVARB = 562, NFOSMESA_GLWEIGHTPOINTERARB = 563, NFOSMESA_GLVERTEXBLENDARB = 564, NFOSMESA_GLCURRENTPALETTEMATRIXARB = 565, NFOSMESA_GLMATRIXINDEXUBVARB = 566, NFOSMESA_GLMATRIXINDEXUSVARB = 567, NFOSMESA_GLMATRIXINDEXUIVARB = 568, NFOSMESA_GLMATRIXINDEXPOINTERARB = 569, NFOSMESA_GLWINDOWPOS2DARB = 570, NFOSMESA_GLWINDOWPOS2DVARB = 571, NFOSMESA_GLWINDOWPOS2FARB = 572, NFOSMESA_GLWINDOWPOS2FVARB = 573, NFOSMESA_GLWINDOWPOS2IARB = 574, NFOSMESA_GLWINDOWPOS2IVARB = 575, NFOSMESA_GLWINDOWPOS2SARB = 576, NFOSMESA_GLWINDOWPOS2SVARB = 577, NFOSMESA_GLWINDOWPOS3DARB = 578, NFOSMESA_GLWINDOWPOS3DVARB = 579, NFOSMESA_GLWINDOWPOS3FARB = 580, NFOSMESA_GLWINDOWPOS3FVARB = 581, NFOSMESA_GLWINDOWPOS3IARB = 582, NFOSMESA_GLWINDOWPOS3IVARB = 583, NFOSMESA_GLWINDOWPOS3SARB = 584, NFOSMESA_GLWINDOWPOS3SVARB = 585, NFOSMESA_GLVERTEXATTRIB1DARB = 586, NFOSMESA_GLVERTEXATTRIB1DVARB = 587, NFOSMESA_GLVERTEXATTRIB1FARB = 588, NFOSMESA_GLVERTEXATTRIB1FVARB = 589, NFOSMESA_GLVERTEXATTRIB1SARB = 590, NFOSMESA_GLVERTEXATTRIB1SVARB = 591, NFOSMESA_GLVERTEXATTRIB2DARB = 592, NFOSMESA_GLVERTEXATTRIB2DVARB = 593, NFOSMESA_GLVERTEXATTRIB2FARB = 594, NFOSMESA_GLVERTEXATTRIB2FVARB = 595, NFOSMESA_GLVERTEXATTRIB2SARB = 596, NFOSMESA_GLVERTEXATTRIB2SVARB = 597, NFOSMESA_GLVERTEXATTRIB3DARB = 598, NFOSMESA_GLVERTEXATTRIB3DVARB = 599, NFOSMESA_GLVERTEXATTRIB3FARB = 600, NFOSMESA_GLVERTEXATTRIB3FVARB = 601, NFOSMESA_GLVERTEXATTRIB3SARB = 602, NFOSMESA_GLVERTEXATTRIB3SVARB = 603, NFOSMESA_GLVERTEXATTRIB4NBVARB = 604, NFOSMESA_GLVERTEXATTRIB4NIVARB = 605, NFOSMESA_GLVERTEXATTRIB4NSVARB = 606, NFOSMESA_GLVERTEXATTRIB4NUBARB = 607, NFOSMESA_GLVERTEXATTRIB4NUBVARB = 608, NFOSMESA_GLVERTEXATTRIB4NUIVARB = 609, NFOSMESA_GLVERTEXATTRIB4NUSVARB = 610, NFOSMESA_GLVERTEXATTRIB4BVARB = 611, NFOSMESA_GLVERTEXATTRIB4DARB = 612, NFOSMESA_GLVERTEXATTRIB4DVARB = 613, NFOSMESA_GLVERTEXATTRIB4FARB = 614, NFOSMESA_GLVERTEXATTRIB4FVARB = 615, NFOSMESA_GLVERTEXATTRIB4IVARB = 616, NFOSMESA_GLVERTEXATTRIB4SARB = 617, NFOSMESA_GLVERTEXATTRIB4SVARB = 618, NFOSMESA_GLVERTEXATTRIB4UBVARB = 619, NFOSMESA_GLVERTEXATTRIB4UIVARB = 620, NFOSMESA_GLVERTEXATTRIB4USVARB = 621, NFOSMESA_GLVERTEXATTRIBPOINTERARB = 622, NFOSMESA_GLENABLEVERTEXATTRIBARRAYARB = 623, NFOSMESA_GLDISABLEVERTEXATTRIBARRAYARB = 624, NFOSMESA_GLPROGRAMSTRINGARB = 625, NFOSMESA_GLBINDPROGRAMARB = 626, NFOSMESA_GLDELETEPROGRAMSARB = 627, NFOSMESA_GLGENPROGRAMSARB = 628, NFOSMESA_GLPROGRAMENVPARAMETER4DARB = 629, NFOSMESA_GLPROGRAMENVPARAMETER4DVARB = 630, NFOSMESA_GLPROGRAMENVPARAMETER4FARB = 631, NFOSMESA_GLPROGRAMENVPARAMETER4FVARB = 632, NFOSMESA_GLPROGRAMLOCALPARAMETER4DARB = 633, NFOSMESA_GLPROGRAMLOCALPARAMETER4DVARB = 634, NFOSMESA_GLPROGRAMLOCALPARAMETER4FARB = 635, NFOSMESA_GLPROGRAMLOCALPARAMETER4FVARB = 636, NFOSMESA_GLGETPROGRAMENVPARAMETERDVARB = 637, NFOSMESA_GLGETPROGRAMENVPARAMETERFVARB = 638, NFOSMESA_GLGETPROGRAMLOCALPARAMETERDVARB = 639, NFOSMESA_GLGETPROGRAMLOCALPARAMETERFVARB = 640, NFOSMESA_GLGETPROGRAMIVARB = 641, NFOSMESA_GLGETPROGRAMSTRINGARB = 642, NFOSMESA_GLGETVERTEXATTRIBDVARB = 643, NFOSMESA_GLGETVERTEXATTRIBFVARB = 644, NFOSMESA_GLGETVERTEXATTRIBIVARB = 645, NFOSMESA_GLGETVERTEXATTRIBPOINTERVARB = 646, NFOSMESA_GLISPROGRAMARB = 647, NFOSMESA_GLBINDBUFFERARB = 648, NFOSMESA_GLDELETEBUFFERSARB = 649, NFOSMESA_GLGENBUFFERSARB = 650, NFOSMESA_GLISBUFFERARB = 651, NFOSMESA_GLBUFFERDATAARB = 652, NFOSMESA_GLBUFFERSUBDATAARB = 653, NFOSMESA_GLGETBUFFERSUBDATAARB = 654, NFOSMESA_GLMAPBUFFERARB = 655, NFOSMESA_GLUNMAPBUFFERARB = 656, NFOSMESA_GLGETBUFFERPARAMETERIVARB = 657, NFOSMESA_GLGETBUFFERPOINTERVARB = 658, NFOSMESA_GLGENQUERIESARB = 659, NFOSMESA_GLDELETEQUERIESARB = 660, NFOSMESA_GLISQUERYARB = 661, NFOSMESA_GLBEGINQUERYARB = 662, NFOSMESA_GLENDQUERYARB = 663, NFOSMESA_GLGETQUERYIVARB = 664, NFOSMESA_GLGETQUERYOBJECTIVARB = 665, NFOSMESA_GLGETQUERYOBJECTUIVARB = 666, NFOSMESA_GLDELETEOBJECTARB = 667, NFOSMESA_GLGETHANDLEARB = 668, NFOSMESA_GLDETACHOBJECTARB = 669, NFOSMESA_GLCREATESHADEROBJECTARB = 670, NFOSMESA_GLSHADERSOURCEARB = 671, NFOSMESA_GLCOMPILESHADERARB = 672, NFOSMESA_GLCREATEPROGRAMOBJECTARB = 673, NFOSMESA_GLATTACHOBJECTARB = 674, NFOSMESA_GLLINKPROGRAMARB = 675, NFOSMESA_GLUSEPROGRAMOBJECTARB = 676, NFOSMESA_GLVALIDATEPROGRAMARB = 677, NFOSMESA_GLUNIFORM1FARB = 678, NFOSMESA_GLUNIFORM2FARB = 679, NFOSMESA_GLUNIFORM3FARB = 680, NFOSMESA_GLUNIFORM4FARB = 681, NFOSMESA_GLUNIFORM1IARB = 682, NFOSMESA_GLUNIFORM2IARB = 683, NFOSMESA_GLUNIFORM3IARB = 684, NFOSMESA_GLUNIFORM4IARB = 685, NFOSMESA_GLUNIFORM1FVARB = 686, NFOSMESA_GLUNIFORM2FVARB = 687, NFOSMESA_GLUNIFORM3FVARB = 688, NFOSMESA_GLUNIFORM4FVARB = 689, NFOSMESA_GLUNIFORM1IVARB = 690, NFOSMESA_GLUNIFORM2IVARB = 691, NFOSMESA_GLUNIFORM3IVARB = 692, NFOSMESA_GLUNIFORM4IVARB = 693, NFOSMESA_GLUNIFORMMATRIX2FVARB = 694, NFOSMESA_GLUNIFORMMATRIX3FVARB = 695, NFOSMESA_GLUNIFORMMATRIX4FVARB = 696, NFOSMESA_GLGETOBJECTPARAMETERFVARB = 697, NFOSMESA_GLGETOBJECTPARAMETERIVARB = 698, NFOSMESA_GLGETINFOLOGARB = 699, NFOSMESA_GLGETATTACHEDOBJECTSARB = 700, NFOSMESA_GLGETUNIFORMLOCATIONARB = 701, NFOSMESA_GLGETACTIVEUNIFORMARB = 702, NFOSMESA_GLGETUNIFORMFVARB = 703, NFOSMESA_GLGETUNIFORMIVARB = 704, NFOSMESA_GLGETSHADERSOURCEARB = 705, NFOSMESA_GLBINDATTRIBLOCATIONARB = 706, NFOSMESA_GLGETACTIVEATTRIBARB = 707, NFOSMESA_GLGETATTRIBLOCATIONARB = 708, NFOSMESA_GLDRAWBUFFERSARB = 709, NFOSMESA_GLBLENDCOLOREXT = 710, NFOSMESA_GLPOLYGONOFFSETEXT = 711, NFOSMESA_GLTEXIMAGE3DEXT = 712, NFOSMESA_GLTEXSUBIMAGE3DEXT = 713, NFOSMESA_GLGETTEXFILTERFUNCSGIS = 714, NFOSMESA_GLTEXFILTERFUNCSGIS = 715, NFOSMESA_GLTEXSUBIMAGE1DEXT = 716, NFOSMESA_GLTEXSUBIMAGE2DEXT = 717, NFOSMESA_GLCOPYTEXIMAGE1DEXT = 718, NFOSMESA_GLCOPYTEXIMAGE2DEXT = 719, NFOSMESA_GLCOPYTEXSUBIMAGE1DEXT = 720, NFOSMESA_GLCOPYTEXSUBIMAGE2DEXT = 721, NFOSMESA_GLCOPYTEXSUBIMAGE3DEXT = 722, NFOSMESA_GLGETHISTOGRAMEXT = 723, NFOSMESA_GLGETHISTOGRAMPARAMETERFVEXT = 724, NFOSMESA_GLGETHISTOGRAMPARAMETERIVEXT = 725, NFOSMESA_GLGETMINMAXEXT = 726, NFOSMESA_GLGETMINMAXPARAMETERFVEXT = 727, NFOSMESA_GLGETMINMAXPARAMETERIVEXT = 728, NFOSMESA_GLHISTOGRAMEXT = 729, NFOSMESA_GLMINMAXEXT = 730, NFOSMESA_GLRESETHISTOGRAMEXT = 731, NFOSMESA_GLRESETMINMAXEXT = 732, NFOSMESA_GLCONVOLUTIONFILTER1DEXT = 733, NFOSMESA_GLCONVOLUTIONFILTER2DEXT = 734, NFOSMESA_GLCONVOLUTIONPARAMETERFEXT = 735, NFOSMESA_GLCONVOLUTIONPARAMETERFVEXT = 736, NFOSMESA_GLCONVOLUTIONPARAMETERIEXT = 737, NFOSMESA_GLCONVOLUTIONPARAMETERIVEXT = 738, NFOSMESA_GLCOPYCONVOLUTIONFILTER1DEXT = 739, NFOSMESA_GLCOPYCONVOLUTIONFILTER2DEXT = 740, NFOSMESA_GLGETCONVOLUTIONFILTEREXT = 741, NFOSMESA_GLGETCONVOLUTIONPARAMETERFVEXT = 742, NFOSMESA_GLGETCONVOLUTIONPARAMETERIVEXT = 743, NFOSMESA_GLGETSEPARABLEFILTEREXT = 744, NFOSMESA_GLSEPARABLEFILTER2DEXT = 745, NFOSMESA_GLCOLORTABLESGI = 746, NFOSMESA_GLCOLORTABLEPARAMETERFVSGI = 747, NFOSMESA_GLCOLORTABLEPARAMETERIVSGI = 748, NFOSMESA_GLCOPYCOLORTABLESGI = 749, NFOSMESA_GLGETCOLORTABLESGI = 750, NFOSMESA_GLGETCOLORTABLEPARAMETERFVSGI = 751, NFOSMESA_GLGETCOLORTABLEPARAMETERIVSGI = 752, NFOSMESA_GLPIXELTEXGENSGIX = 753, NFOSMESA_GLPIXELTEXGENPARAMETERISGIS = 754, NFOSMESA_GLPIXELTEXGENPARAMETERIVSGIS = 755, NFOSMESA_GLPIXELTEXGENPARAMETERFSGIS = 756, NFOSMESA_GLPIXELTEXGENPARAMETERFVSGIS = 757, NFOSMESA_GLGETPIXELTEXGENPARAMETERIVSGIS = 758, NFOSMESA_GLGETPIXELTEXGENPARAMETERFVSGIS = 759, NFOSMESA_GLTEXIMAGE4DSGIS = 760, NFOSMESA_GLTEXSUBIMAGE4DSGIS = 761, NFOSMESA_GLARETEXTURESRESIDENTEXT = 762, NFOSMESA_GLBINDTEXTUREEXT = 763, NFOSMESA_GLDELETETEXTURESEXT = 764, NFOSMESA_GLGENTEXTURESEXT = 765, NFOSMESA_GLISTEXTUREEXT = 766, NFOSMESA_GLPRIORITIZETEXTURESEXT = 767, NFOSMESA_GLDETAILTEXFUNCSGIS = 768, NFOSMESA_GLGETDETAILTEXFUNCSGIS = 769, NFOSMESA_GLSHARPENTEXFUNCSGIS = 770, NFOSMESA_GLGETSHARPENTEXFUNCSGIS = 771, NFOSMESA_GLSAMPLEMASKSGIS = 772, NFOSMESA_GLSAMPLEPATTERNSGIS = 773, NFOSMESA_GLARRAYELEMENTEXT = 774, NFOSMESA_GLCOLORPOINTEREXT = 775, NFOSMESA_GLDRAWARRAYSEXT = 776, NFOSMESA_GLEDGEFLAGPOINTEREXT = 777, NFOSMESA_GLGETPOINTERVEXT = 778, NFOSMESA_GLINDEXPOINTEREXT = 779, NFOSMESA_GLNORMALPOINTEREXT = 780, NFOSMESA_GLTEXCOORDPOINTEREXT = 781, NFOSMESA_GLVERTEXPOINTEREXT = 782, NFOSMESA_GLBLENDEQUATIONEXT = 783, NFOSMESA_GLSPRITEPARAMETERFSGIX = 784, NFOSMESA_GLSPRITEPARAMETERFVSGIX = 785, NFOSMESA_GLSPRITEPARAMETERISGIX = 786, NFOSMESA_GLSPRITEPARAMETERIVSGIX = 787, NFOSMESA_GLPOINTPARAMETERFEXT = 788, NFOSMESA_GLPOINTPARAMETERFVEXT = 789, NFOSMESA_GLPOINTPARAMETERFSGIS = 790, NFOSMESA_GLPOINTPARAMETERFVSGIS = 791, NFOSMESA_GLGETINSTRUMENTSSGIX = 792, NFOSMESA_GLINSTRUMENTSBUFFERSGIX = 793, NFOSMESA_GLPOLLINSTRUMENTSSGIX = 794, NFOSMESA_GLREADINSTRUMENTSSGIX = 795, NFOSMESA_GLSTARTINSTRUMENTSSGIX = 796, NFOSMESA_GLSTOPINSTRUMENTSSGIX = 797, NFOSMESA_GLFRAMEZOOMSGIX = 798, NFOSMESA_GLTAGSAMPLEBUFFERSGIX = 799, NFOSMESA_GLDEFORMATIONMAP3DSGIX = 800, NFOSMESA_GLDEFORMATIONMAP3FSGIX = 801, NFOSMESA_GLDEFORMSGIX = 802, NFOSMESA_GLLOADIDENTITYDEFORMATIONMAPSGIX = 803, NFOSMESA_GLREFERENCEPLANESGIX = 804, NFOSMESA_GLFLUSHRASTERSGIX = 805, NFOSMESA_GLFOGFUNCSGIS = 806, NFOSMESA_GLGETFOGFUNCSGIS = 807, NFOSMESA_GLIMAGETRANSFORMPARAMETERIHP = 808, NFOSMESA_GLIMAGETRANSFORMPARAMETERFHP = 809, NFOSMESA_GLIMAGETRANSFORMPARAMETERIVHP = 810, NFOSMESA_GLIMAGETRANSFORMPARAMETERFVHP = 811, NFOSMESA_GLGETIMAGETRANSFORMPARAMETERIVHP = 812, NFOSMESA_GLGETIMAGETRANSFORMPARAMETERFVHP = 813, NFOSMESA_GLCOLORSUBTABLEEXT = 814, NFOSMESA_GLCOPYCOLORSUBTABLEEXT = 815, NFOSMESA_GLHINTPGI = 816, NFOSMESA_GLCOLORTABLEEXT = 817, NFOSMESA_GLGETCOLORTABLEEXT = 818, NFOSMESA_GLGETCOLORTABLEPARAMETERIVEXT = 819, NFOSMESA_GLGETCOLORTABLEPARAMETERFVEXT = 820, NFOSMESA_GLGETLISTPARAMETERFVSGIX = 821, NFOSMESA_GLGETLISTPARAMETERIVSGIX = 822, NFOSMESA_GLLISTPARAMETERFSGIX = 823, NFOSMESA_GLLISTPARAMETERFVSGIX = 824, NFOSMESA_GLLISTPARAMETERISGIX = 825, NFOSMESA_GLLISTPARAMETERIVSGIX = 826, NFOSMESA_GLINDEXMATERIALEXT = 827, NFOSMESA_GLINDEXFUNCEXT = 828, NFOSMESA_GLLOCKARRAYSEXT = 829, NFOSMESA_GLUNLOCKARRAYSEXT = 830, NFOSMESA_GLCULLPARAMETERDVEXT = 831, NFOSMESA_GLCULLPARAMETERFVEXT = 832, NFOSMESA_GLFRAGMENTCOLORMATERIALSGIX = 833, NFOSMESA_GLFRAGMENTLIGHTFSGIX = 834, NFOSMESA_GLFRAGMENTLIGHTFVSGIX = 835, NFOSMESA_GLFRAGMENTLIGHTISGIX = 836, NFOSMESA_GLFRAGMENTLIGHTIVSGIX = 837, NFOSMESA_GLFRAGMENTLIGHTMODELFSGIX = 838, NFOSMESA_GLFRAGMENTLIGHTMODELFVSGIX = 839, NFOSMESA_GLFRAGMENTLIGHTMODELISGIX = 840, NFOSMESA_GLFRAGMENTLIGHTMODELIVSGIX = 841, NFOSMESA_GLFRAGMENTMATERIALFSGIX = 842, NFOSMESA_GLFRAGMENTMATERIALFVSGIX = 843, NFOSMESA_GLFRAGMENTMATERIALISGIX = 844, NFOSMESA_GLFRAGMENTMATERIALIVSGIX = 845, NFOSMESA_GLGETFRAGMENTLIGHTFVSGIX = 846, NFOSMESA_GLGETFRAGMENTLIGHTIVSGIX = 847, NFOSMESA_GLGETFRAGMENTMATERIALFVSGIX = 848, NFOSMESA_GLGETFRAGMENTMATERIALIVSGIX = 849, NFOSMESA_GLLIGHTENVISGIX = 850, NFOSMESA_GLDRAWRANGEELEMENTSEXT = 851, NFOSMESA_GLAPPLYTEXTUREEXT = 852, NFOSMESA_GLTEXTURELIGHTEXT = 853, NFOSMESA_GLTEXTUREMATERIALEXT = 854, NFOSMESA_GLASYNCMARKERSGIX = 855, NFOSMESA_GLFINISHASYNCSGIX = 856, NFOSMESA_GLPOLLASYNCSGIX = 857, NFOSMESA_GLGENASYNCMARKERSSGIX = 858, NFOSMESA_GLDELETEASYNCMARKERSSGIX = 859, NFOSMESA_GLISASYNCMARKERSGIX = 860, NFOSMESA_GLVERTEXPOINTERVINTEL = 861, NFOSMESA_GLNORMALPOINTERVINTEL = 862, NFOSMESA_GLCOLORPOINTERVINTEL = 863, NFOSMESA_GLTEXCOORDPOINTERVINTEL = 864, NFOSMESA_GLPIXELTRANSFORMPARAMETERIEXT = 865, NFOSMESA_GLPIXELTRANSFORMPARAMETERFEXT = 866, NFOSMESA_GLPIXELTRANSFORMPARAMETERIVEXT = 867, NFOSMESA_GLPIXELTRANSFORMPARAMETERFVEXT = 868, NFOSMESA_GLSECONDARYCOLOR3BEXT = 869, NFOSMESA_GLSECONDARYCOLOR3BVEXT = 870, NFOSMESA_GLSECONDARYCOLOR3DEXT = 871, NFOSMESA_GLSECONDARYCOLOR3DVEXT = 872, NFOSMESA_GLSECONDARYCOLOR3FEXT = 873, NFOSMESA_GLSECONDARYCOLOR3FVEXT = 874, NFOSMESA_GLSECONDARYCOLOR3IEXT = 875, NFOSMESA_GLSECONDARYCOLOR3IVEXT = 876, NFOSMESA_GLSECONDARYCOLOR3SEXT = 877, NFOSMESA_GLSECONDARYCOLOR3SVEXT = 878, NFOSMESA_GLSECONDARYCOLOR3UBEXT = 879, NFOSMESA_GLSECONDARYCOLOR3UBVEXT = 880, NFOSMESA_GLSECONDARYCOLOR3UIEXT = 881, NFOSMESA_GLSECONDARYCOLOR3UIVEXT = 882, NFOSMESA_GLSECONDARYCOLOR3USEXT = 883, NFOSMESA_GLSECONDARYCOLOR3USVEXT = 884, NFOSMESA_GLSECONDARYCOLORPOINTEREXT = 885, NFOSMESA_GLTEXTURENORMALEXT = 886, NFOSMESA_GLMULTIDRAWARRAYSEXT = 887, NFOSMESA_GLMULTIDRAWELEMENTSEXT = 888, NFOSMESA_GLFOGCOORDFEXT = 889, NFOSMESA_GLFOGCOORDFVEXT = 890, NFOSMESA_GLFOGCOORDDEXT = 891, NFOSMESA_GLFOGCOORDDVEXT = 892, NFOSMESA_GLFOGCOORDPOINTEREXT = 893, NFOSMESA_GLTANGENT3BEXT = 894, NFOSMESA_GLTANGENT3BVEXT = 895, NFOSMESA_GLTANGENT3DEXT = 896, NFOSMESA_GLTANGENT3DVEXT = 897, NFOSMESA_GLTANGENT3FEXT = 898, NFOSMESA_GLTANGENT3FVEXT = 899, NFOSMESA_GLTANGENT3IEXT = 900, NFOSMESA_GLTANGENT3IVEXT = 901, NFOSMESA_GLTANGENT3SEXT = 902, NFOSMESA_GLTANGENT3SVEXT = 903, NFOSMESA_GLBINORMAL3BEXT = 904, NFOSMESA_GLBINORMAL3BVEXT = 905, NFOSMESA_GLBINORMAL3DEXT = 906, NFOSMESA_GLBINORMAL3DVEXT = 907, NFOSMESA_GLBINORMAL3FEXT = 908, NFOSMESA_GLBINORMAL3FVEXT = 909, NFOSMESA_GLBINORMAL3IEXT = 910, NFOSMESA_GLBINORMAL3IVEXT = 911, NFOSMESA_GLBINORMAL3SEXT = 912, NFOSMESA_GLBINORMAL3SVEXT = 913, NFOSMESA_GLTANGENTPOINTEREXT = 914, NFOSMESA_GLBINORMALPOINTEREXT = 915, NFOSMESA_GLFINISHTEXTURESUNX = 916, NFOSMESA_GLGLOBALALPHAFACTORBSUN = 917, NFOSMESA_GLGLOBALALPHAFACTORSSUN = 918, NFOSMESA_GLGLOBALALPHAFACTORISUN = 919, NFOSMESA_GLGLOBALALPHAFACTORFSUN = 920, NFOSMESA_GLGLOBALALPHAFACTORDSUN = 921, NFOSMESA_GLGLOBALALPHAFACTORUBSUN = 922, NFOSMESA_GLGLOBALALPHAFACTORUSSUN = 923, NFOSMESA_GLGLOBALALPHAFACTORUISUN = 924, NFOSMESA_GLREPLACEMENTCODEUISUN = 925, NFOSMESA_GLREPLACEMENTCODEUSSUN = 926, NFOSMESA_GLREPLACEMENTCODEUBSUN = 927, NFOSMESA_GLREPLACEMENTCODEUIVSUN = 928, NFOSMESA_GLREPLACEMENTCODEUSVSUN = 929, NFOSMESA_GLREPLACEMENTCODEUBVSUN = 930, NFOSMESA_GLREPLACEMENTCODEPOINTERSUN = 931, NFOSMESA_GLCOLOR4UBVERTEX2FSUN = 932, NFOSMESA_GLCOLOR4UBVERTEX2FVSUN = 933, NFOSMESA_GLCOLOR4UBVERTEX3FSUN = 934, NFOSMESA_GLCOLOR4UBVERTEX3FVSUN = 935, NFOSMESA_GLCOLOR3FVERTEX3FSUN = 936, NFOSMESA_GLCOLOR3FVERTEX3FVSUN = 937, NFOSMESA_GLNORMAL3FVERTEX3FSUN = 938, NFOSMESA_GLNORMAL3FVERTEX3FVSUN = 939, NFOSMESA_GLCOLOR4FNORMAL3FVERTEX3FSUN = 940, NFOSMESA_GLCOLOR4FNORMAL3FVERTEX3FVSUN = 941, NFOSMESA_GLTEXCOORD2FVERTEX3FSUN = 942, NFOSMESA_GLTEXCOORD2FVERTEX3FVSUN = 943, NFOSMESA_GLTEXCOORD4FVERTEX4FSUN = 944, NFOSMESA_GLTEXCOORD4FVERTEX4FVSUN = 945, NFOSMESA_GLTEXCOORD2FCOLOR4UBVERTEX3FSUN = 946, NFOSMESA_GLTEXCOORD2FCOLOR4UBVERTEX3FVSUN = 947, NFOSMESA_GLTEXCOORD2FCOLOR3FVERTEX3FSUN = 948, NFOSMESA_GLTEXCOORD2FCOLOR3FVERTEX3FVSUN = 949, NFOSMESA_GLTEXCOORD2FNORMAL3FVERTEX3FSUN = 950, NFOSMESA_GLTEXCOORD2FNORMAL3FVERTEX3FVSUN = 951, NFOSMESA_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN = 952, NFOSMESA_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN = 953, NFOSMESA_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUN = 954, NFOSMESA_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUN = 955, NFOSMESA_GLREPLACEMENTCODEUIVERTEX3FSUN = 956, NFOSMESA_GLREPLACEMENTCODEUIVERTEX3FVSUN = 957, NFOSMESA_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUN = 958, NFOSMESA_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUN = 959, NFOSMESA_GLREPLACEMENTCODEUICOLOR3FVERTEX3FSUN = 960, NFOSMESA_GLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUN = 961, NFOSMESA_GLREPLACEMENTCODEUINORMAL3FVERTEX3FSUN = 962, NFOSMESA_GLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUN = 963, NFOSMESA_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUN = 964, NFOSMESA_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUN = 965, NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUN = 966, NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUN = 967, NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUN = 968, NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUN = 969, NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN = 970, NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN = 971, NFOSMESA_GLBLENDFUNCSEPARATEEXT = 972, NFOSMESA_GLBLENDFUNCSEPARATEINGR = 973, NFOSMESA_GLVERTEXWEIGHTFEXT = 974, NFOSMESA_GLVERTEXWEIGHTFVEXT = 975, NFOSMESA_GLVERTEXWEIGHTPOINTEREXT = 976, NFOSMESA_GLFLUSHVERTEXARRAYRANGENV = 977, NFOSMESA_GLVERTEXARRAYRANGENV = 978, NFOSMESA_GLCOMBINERPARAMETERFVNV = 979, NFOSMESA_GLCOMBINERPARAMETERFNV = 980, NFOSMESA_GLCOMBINERPARAMETERIVNV = 981, NFOSMESA_GLCOMBINERPARAMETERINV = 982, NFOSMESA_GLCOMBINERINPUTNV = 983, NFOSMESA_GLCOMBINEROUTPUTNV = 984, NFOSMESA_GLFINALCOMBINERINPUTNV = 985, NFOSMESA_GLGETCOMBINERINPUTPARAMETERFVNV = 986, NFOSMESA_GLGETCOMBINERINPUTPARAMETERIVNV = 987, NFOSMESA_GLGETCOMBINEROUTPUTPARAMETERFVNV = 988, NFOSMESA_GLGETCOMBINEROUTPUTPARAMETERIVNV = 989, NFOSMESA_GLGETFINALCOMBINERINPUTPARAMETERFVNV = 990, NFOSMESA_GLGETFINALCOMBINERINPUTPARAMETERIVNV = 991, NFOSMESA_GLRESIZEBUFFERSMESA = 992, NFOSMESA_GLWINDOWPOS2DMESA = 993, NFOSMESA_GLWINDOWPOS2DVMESA = 994, NFOSMESA_GLWINDOWPOS2FMESA = 995, NFOSMESA_GLWINDOWPOS2FVMESA = 996, NFOSMESA_GLWINDOWPOS2IMESA = 997, NFOSMESA_GLWINDOWPOS2IVMESA = 998, NFOSMESA_GLWINDOWPOS2SMESA = 999, NFOSMESA_GLWINDOWPOS2SVMESA = 1000, NFOSMESA_GLWINDOWPOS3DMESA = 1001, NFOSMESA_GLWINDOWPOS3DVMESA = 1002, NFOSMESA_GLWINDOWPOS3FMESA = 1003, NFOSMESA_GLWINDOWPOS3FVMESA = 1004, NFOSMESA_GLWINDOWPOS3IMESA = 1005, NFOSMESA_GLWINDOWPOS3IVMESA = 1006, NFOSMESA_GLWINDOWPOS3SMESA = 1007, NFOSMESA_GLWINDOWPOS3SVMESA = 1008, NFOSMESA_GLWINDOWPOS4DMESA = 1009, NFOSMESA_GLWINDOWPOS4DVMESA = 1010, NFOSMESA_GLWINDOWPOS4FMESA = 1011, NFOSMESA_GLWINDOWPOS4FVMESA = 1012, NFOSMESA_GLWINDOWPOS4IMESA = 1013, NFOSMESA_GLWINDOWPOS4IVMESA = 1014, NFOSMESA_GLWINDOWPOS4SMESA = 1015, NFOSMESA_GLWINDOWPOS4SVMESA = 1016, NFOSMESA_GLMULTIMODEDRAWARRAYSIBM = 1017, NFOSMESA_GLMULTIMODEDRAWELEMENTSIBM = 1018, NFOSMESA_GLCOLORPOINTERLISTIBM = 1019, NFOSMESA_GLSECONDARYCOLORPOINTERLISTIBM = 1020, NFOSMESA_GLEDGEFLAGPOINTERLISTIBM = 1021, NFOSMESA_GLFOGCOORDPOINTERLISTIBM = 1022, NFOSMESA_GLINDEXPOINTERLISTIBM = 1023, NFOSMESA_GLNORMALPOINTERLISTIBM = 1024, NFOSMESA_GLTEXCOORDPOINTERLISTIBM = 1025, NFOSMESA_GLVERTEXPOINTERLISTIBM = 1026, NFOSMESA_GLTBUFFERMASK3DFX = 1027, NFOSMESA_GLSAMPLEMASKEXT = 1028, NFOSMESA_GLSAMPLEPATTERNEXT = 1029, NFOSMESA_GLTEXTURECOLORMASKSGIS = 1030, NFOSMESA_GLIGLOOINTERFACESGIX = 1031, NFOSMESA_GLDELETEFENCESNV = 1032, NFOSMESA_GLGENFENCESNV = 1033, NFOSMESA_GLISFENCENV = 1034, NFOSMESA_GLTESTFENCENV = 1035, NFOSMESA_GLGETFENCEIVNV = 1036, NFOSMESA_GLFINISHFENCENV = 1037, NFOSMESA_GLSETFENCENV = 1038, NFOSMESA_GLMAPCONTROLPOINTSNV = 1039, NFOSMESA_GLMAPPARAMETERIVNV = 1040, NFOSMESA_GLMAPPARAMETERFVNV = 1041, NFOSMESA_GLGETMAPCONTROLPOINTSNV = 1042, NFOSMESA_GLGETMAPPARAMETERIVNV = 1043, NFOSMESA_GLGETMAPPARAMETERFVNV = 1044, NFOSMESA_GLGETMAPATTRIBPARAMETERIVNV = 1045, NFOSMESA_GLGETMAPATTRIBPARAMETERFVNV = 1046, NFOSMESA_GLEVALMAPSNV = 1047, NFOSMESA_GLCOMBINERSTAGEPARAMETERFVNV = 1048, NFOSMESA_GLGETCOMBINERSTAGEPARAMETERFVNV = 1049, NFOSMESA_GLAREPROGRAMSRESIDENTNV = 1050, NFOSMESA_GLBINDPROGRAMNV = 1051, NFOSMESA_GLDELETEPROGRAMSNV = 1052, NFOSMESA_GLEXECUTEPROGRAMNV = 1053, NFOSMESA_GLGENPROGRAMSNV = 1054, NFOSMESA_GLGETPROGRAMPARAMETERDVNV = 1055, NFOSMESA_GLGETPROGRAMPARAMETERFVNV = 1056, NFOSMESA_GLGETPROGRAMIVNV = 1057, NFOSMESA_GLGETPROGRAMSTRINGNV = 1058, NFOSMESA_GLGETTRACKMATRIXIVNV = 1059, NFOSMESA_GLGETVERTEXATTRIBDVNV = 1060, NFOSMESA_GLGETVERTEXATTRIBFVNV = 1061, NFOSMESA_GLGETVERTEXATTRIBIVNV = 1062, NFOSMESA_GLGETVERTEXATTRIBPOINTERVNV = 1063, NFOSMESA_GLISPROGRAMNV = 1064, NFOSMESA_GLLOADPROGRAMNV = 1065, NFOSMESA_GLPROGRAMPARAMETER4DNV = 1066, NFOSMESA_GLPROGRAMPARAMETER4DVNV = 1067, NFOSMESA_GLPROGRAMPARAMETER4FNV = 1068, NFOSMESA_GLPROGRAMPARAMETER4FVNV = 1069, NFOSMESA_GLPROGRAMPARAMETERS4DVNV = 1070, NFOSMESA_GLPROGRAMPARAMETERS4FVNV = 1071, NFOSMESA_GLREQUESTRESIDENTPROGRAMSNV = 1072, NFOSMESA_GLTRACKMATRIXNV = 1073, NFOSMESA_GLVERTEXATTRIBPOINTERNV = 1074, NFOSMESA_GLVERTEXATTRIB1DNV = 1075, NFOSMESA_GLVERTEXATTRIB1DVNV = 1076, NFOSMESA_GLVERTEXATTRIB1FNV = 1077, NFOSMESA_GLVERTEXATTRIB1FVNV = 1078, NFOSMESA_GLVERTEXATTRIB1SNV = 1079, NFOSMESA_GLVERTEXATTRIB1SVNV = 1080, NFOSMESA_GLVERTEXATTRIB2DNV = 1081, NFOSMESA_GLVERTEXATTRIB2DVNV = 1082, NFOSMESA_GLVERTEXATTRIB2FNV = 1083, NFOSMESA_GLVERTEXATTRIB2FVNV = 1084, NFOSMESA_GLVERTEXATTRIB2SNV = 1085, NFOSMESA_GLVERTEXATTRIB2SVNV = 1086, NFOSMESA_GLVERTEXATTRIB3DNV = 1087, NFOSMESA_GLVERTEXATTRIB3DVNV = 1088, NFOSMESA_GLVERTEXATTRIB3FNV = 1089, NFOSMESA_GLVERTEXATTRIB3FVNV = 1090, NFOSMESA_GLVERTEXATTRIB3SNV = 1091, NFOSMESA_GLVERTEXATTRIB3SVNV = 1092, NFOSMESA_GLVERTEXATTRIB4DNV = 1093, NFOSMESA_GLVERTEXATTRIB4DVNV = 1094, NFOSMESA_GLVERTEXATTRIB4FNV = 1095, NFOSMESA_GLVERTEXATTRIB4FVNV = 1096, NFOSMESA_GLVERTEXATTRIB4SNV = 1097, NFOSMESA_GLVERTEXATTRIB4SVNV = 1098, NFOSMESA_GLVERTEXATTRIB4UBNV = 1099, NFOSMESA_GLVERTEXATTRIB4UBVNV = 1100, NFOSMESA_GLVERTEXATTRIBS1DVNV = 1101, NFOSMESA_GLVERTEXATTRIBS1FVNV = 1102, NFOSMESA_GLVERTEXATTRIBS1SVNV = 1103, NFOSMESA_GLVERTEXATTRIBS2DVNV = 1104, NFOSMESA_GLVERTEXATTRIBS2FVNV = 1105, NFOSMESA_GLVERTEXATTRIBS2SVNV = 1106, NFOSMESA_GLVERTEXATTRIBS3DVNV = 1107, NFOSMESA_GLVERTEXATTRIBS3FVNV = 1108, NFOSMESA_GLVERTEXATTRIBS3SVNV = 1109, NFOSMESA_GLVERTEXATTRIBS4DVNV = 1110, NFOSMESA_GLVERTEXATTRIBS4FVNV = 1111, NFOSMESA_GLVERTEXATTRIBS4SVNV = 1112, NFOSMESA_GLVERTEXATTRIBS4UBVNV = 1113, NFOSMESA_GLTEXBUMPPARAMETERIVATI = 1114, NFOSMESA_GLTEXBUMPPARAMETERFVATI = 1115, NFOSMESA_GLGETTEXBUMPPARAMETERIVATI = 1116, NFOSMESA_GLGETTEXBUMPPARAMETERFVATI = 1117, NFOSMESA_GLGENFRAGMENTSHADERSATI = 1118, NFOSMESA_GLBINDFRAGMENTSHADERATI = 1119, NFOSMESA_GLDELETEFRAGMENTSHADERATI = 1120, NFOSMESA_GLBEGINFRAGMENTSHADERATI = 1121, NFOSMESA_GLENDFRAGMENTSHADERATI = 1122, NFOSMESA_GLPASSTEXCOORDATI = 1123, NFOSMESA_GLSAMPLEMAPATI = 1124, NFOSMESA_GLCOLORFRAGMENTOP1ATI = 1125, NFOSMESA_GLCOLORFRAGMENTOP2ATI = 1126, NFOSMESA_GLCOLORFRAGMENTOP3ATI = 1127, NFOSMESA_GLALPHAFRAGMENTOP1ATI = 1128, NFOSMESA_GLALPHAFRAGMENTOP2ATI = 1129, NFOSMESA_GLALPHAFRAGMENTOP3ATI = 1130, NFOSMESA_GLSETFRAGMENTSHADERCONSTANTATI = 1131, NFOSMESA_GLPNTRIANGLESIATI = 1132, NFOSMESA_GLPNTRIANGLESFATI = 1133, NFOSMESA_GLNEWOBJECTBUFFERATI = 1134, NFOSMESA_GLISOBJECTBUFFERATI = 1135, NFOSMESA_GLUPDATEOBJECTBUFFERATI = 1136, NFOSMESA_GLGETOBJECTBUFFERFVATI = 1137, NFOSMESA_GLGETOBJECTBUFFERIVATI = 1138, NFOSMESA_GLFREEOBJECTBUFFERATI = 1139, NFOSMESA_GLARRAYOBJECTATI = 1140, NFOSMESA_GLGETARRAYOBJECTFVATI = 1141, NFOSMESA_GLGETARRAYOBJECTIVATI = 1142, NFOSMESA_GLVARIANTARRAYOBJECTATI = 1143, NFOSMESA_GLGETVARIANTARRAYOBJECTFVATI = 1144, NFOSMESA_GLGETVARIANTARRAYOBJECTIVATI = 1145, NFOSMESA_GLBEGINVERTEXSHADEREXT = 1146, NFOSMESA_GLENDVERTEXSHADEREXT = 1147, NFOSMESA_GLBINDVERTEXSHADEREXT = 1148, NFOSMESA_GLGENVERTEXSHADERSEXT = 1149, NFOSMESA_GLDELETEVERTEXSHADEREXT = 1150, NFOSMESA_GLSHADEROP1EXT = 1151, NFOSMESA_GLSHADEROP2EXT = 1152, NFOSMESA_GLSHADEROP3EXT = 1153, NFOSMESA_GLSWIZZLEEXT = 1154, NFOSMESA_GLWRITEMASKEXT = 1155, NFOSMESA_GLINSERTCOMPONENTEXT = 1156, NFOSMESA_GLEXTRACTCOMPONENTEXT = 1157, NFOSMESA_GLGENSYMBOLSEXT = 1158, NFOSMESA_GLSETINVARIANTEXT = 1159, NFOSMESA_GLSETLOCALCONSTANTEXT = 1160, NFOSMESA_GLVARIANTBVEXT = 1161, NFOSMESA_GLVARIANTSVEXT = 1162, NFOSMESA_GLVARIANTIVEXT = 1163, NFOSMESA_GLVARIANTFVEXT = 1164, NFOSMESA_GLVARIANTDVEXT = 1165, NFOSMESA_GLVARIANTUBVEXT = 1166, NFOSMESA_GLVARIANTUSVEXT = 1167, NFOSMESA_GLVARIANTUIVEXT = 1168, NFOSMESA_GLVARIANTPOINTEREXT = 1169, NFOSMESA_GLENABLEVARIANTCLIENTSTATEEXT = 1170, NFOSMESA_GLDISABLEVARIANTCLIENTSTATEEXT = 1171, NFOSMESA_GLBINDLIGHTPARAMETEREXT = 1172, NFOSMESA_GLBINDMATERIALPARAMETEREXT = 1173, NFOSMESA_GLBINDTEXGENPARAMETEREXT = 1174, NFOSMESA_GLBINDTEXTUREUNITPARAMETEREXT = 1175, NFOSMESA_GLBINDPARAMETEREXT = 1176, NFOSMESA_GLISVARIANTENABLEDEXT = 1177, NFOSMESA_GLGETVARIANTBOOLEANVEXT = 1178, NFOSMESA_GLGETVARIANTINTEGERVEXT = 1179, NFOSMESA_GLGETVARIANTFLOATVEXT = 1180, NFOSMESA_GLGETVARIANTPOINTERVEXT = 1181, NFOSMESA_GLGETINVARIANTBOOLEANVEXT = 1182, NFOSMESA_GLGETINVARIANTINTEGERVEXT = 1183, NFOSMESA_GLGETINVARIANTFLOATVEXT = 1184, NFOSMESA_GLGETLOCALCONSTANTBOOLEANVEXT = 1185, NFOSMESA_GLGETLOCALCONSTANTINTEGERVEXT = 1186, NFOSMESA_GLGETLOCALCONSTANTFLOATVEXT = 1187, NFOSMESA_GLVERTEXSTREAM1SATI = 1188, NFOSMESA_GLVERTEXSTREAM1SVATI = 1189, NFOSMESA_GLVERTEXSTREAM1IATI = 1190, NFOSMESA_GLVERTEXSTREAM1IVATI = 1191, NFOSMESA_GLVERTEXSTREAM1FATI = 1192, NFOSMESA_GLVERTEXSTREAM1FVATI = 1193, NFOSMESA_GLVERTEXSTREAM1DATI = 1194, NFOSMESA_GLVERTEXSTREAM1DVATI = 1195, NFOSMESA_GLVERTEXSTREAM2SATI = 1196, NFOSMESA_GLVERTEXSTREAM2SVATI = 1197, NFOSMESA_GLVERTEXSTREAM2IATI = 1198, NFOSMESA_GLVERTEXSTREAM2IVATI = 1199, NFOSMESA_GLVERTEXSTREAM2FATI = 1200, NFOSMESA_GLVERTEXSTREAM2FVATI = 1201, NFOSMESA_GLVERTEXSTREAM2DATI = 1202, NFOSMESA_GLVERTEXSTREAM2DVATI = 1203, NFOSMESA_GLVERTEXSTREAM3SATI = 1204, NFOSMESA_GLVERTEXSTREAM3SVATI = 1205, NFOSMESA_GLVERTEXSTREAM3IATI = 1206, NFOSMESA_GLVERTEXSTREAM3IVATI = 1207, NFOSMESA_GLVERTEXSTREAM3FATI = 1208, NFOSMESA_GLVERTEXSTREAM3FVATI = 1209, NFOSMESA_GLVERTEXSTREAM3DATI = 1210, NFOSMESA_GLVERTEXSTREAM3DVATI = 1211, NFOSMESA_GLVERTEXSTREAM4SATI = 1212, NFOSMESA_GLVERTEXSTREAM4SVATI = 1213, NFOSMESA_GLVERTEXSTREAM4IATI = 1214, NFOSMESA_GLVERTEXSTREAM4IVATI = 1215, NFOSMESA_GLVERTEXSTREAM4FATI = 1216, NFOSMESA_GLVERTEXSTREAM4FVATI = 1217, NFOSMESA_GLVERTEXSTREAM4DATI = 1218, NFOSMESA_GLVERTEXSTREAM4DVATI = 1219, NFOSMESA_GLNORMALSTREAM3BATI = 1220, NFOSMESA_GLNORMALSTREAM3BVATI = 1221, NFOSMESA_GLNORMALSTREAM3SATI = 1222, NFOSMESA_GLNORMALSTREAM3SVATI = 1223, NFOSMESA_GLNORMALSTREAM3IATI = 1224, NFOSMESA_GLNORMALSTREAM3IVATI = 1225, NFOSMESA_GLNORMALSTREAM3FATI = 1226, NFOSMESA_GLNORMALSTREAM3FVATI = 1227, NFOSMESA_GLNORMALSTREAM3DATI = 1228, NFOSMESA_GLNORMALSTREAM3DVATI = 1229, NFOSMESA_GLCLIENTACTIVEVERTEXSTREAMATI = 1230, NFOSMESA_GLVERTEXBLENDENVIATI = 1231, NFOSMESA_GLVERTEXBLENDENVFATI = 1232, NFOSMESA_GLELEMENTPOINTERATI = 1233, NFOSMESA_GLDRAWELEMENTARRAYATI = 1234, NFOSMESA_GLDRAWRANGEELEMENTARRAYATI = 1235, NFOSMESA_GLDRAWMESHARRAYSSUN = 1236, NFOSMESA_GLGENOCCLUSIONQUERIESNV = 1237, NFOSMESA_GLDELETEOCCLUSIONQUERIESNV = 1238, NFOSMESA_GLISOCCLUSIONQUERYNV = 1239, NFOSMESA_GLBEGINOCCLUSIONQUERYNV = 1240, NFOSMESA_GLENDOCCLUSIONQUERYNV = 1241, NFOSMESA_GLGETOCCLUSIONQUERYIVNV = 1242, NFOSMESA_GLGETOCCLUSIONQUERYUIVNV = 1243, NFOSMESA_GLPOINTPARAMETERINV = 1244, NFOSMESA_GLPOINTPARAMETERIVNV = 1245, NFOSMESA_GLACTIVESTENCILFACEEXT = 1246, NFOSMESA_GLELEMENTPOINTERAPPLE = 1247, NFOSMESA_GLDRAWELEMENTARRAYAPPLE = 1248, NFOSMESA_GLDRAWRANGEELEMENTARRAYAPPLE = 1249, NFOSMESA_GLMULTIDRAWELEMENTARRAYAPPLE = 1250, NFOSMESA_GLMULTIDRAWRANGEELEMENTARRAYAPPLE = 1251, NFOSMESA_GLGENFENCESAPPLE = 1252, NFOSMESA_GLDELETEFENCESAPPLE = 1253, NFOSMESA_GLSETFENCEAPPLE = 1254, NFOSMESA_GLISFENCEAPPLE = 1255, NFOSMESA_GLTESTFENCEAPPLE = 1256, NFOSMESA_GLFINISHFENCEAPPLE = 1257, NFOSMESA_GLTESTOBJECTAPPLE = 1258, NFOSMESA_GLFINISHOBJECTAPPLE = 1259, NFOSMESA_GLBINDVERTEXARRAYAPPLE = 1260, NFOSMESA_GLDELETEVERTEXARRAYSAPPLE = 1261, NFOSMESA_GLGENVERTEXARRAYSAPPLE = 1262, NFOSMESA_GLISVERTEXARRAYAPPLE = 1263, NFOSMESA_GLVERTEXARRAYRANGEAPPLE = 1264, NFOSMESA_GLFLUSHVERTEXARRAYRANGEAPPLE = 1265, NFOSMESA_GLVERTEXARRAYPARAMETERIAPPLE = 1266, NFOSMESA_GLDRAWBUFFERSATI = 1267, NFOSMESA_GLPROGRAMNAMEDPARAMETER4FNV = 1268, NFOSMESA_GLPROGRAMNAMEDPARAMETER4DNV = 1269, NFOSMESA_GLPROGRAMNAMEDPARAMETER4FVNV = 1270, NFOSMESA_GLPROGRAMNAMEDPARAMETER4DVNV = 1271, NFOSMESA_GLGETPROGRAMNAMEDPARAMETERFVNV = 1272, NFOSMESA_GLGETPROGRAMNAMEDPARAMETERDVNV = 1273, NFOSMESA_GLVERTEX2HNV = 1274, NFOSMESA_GLVERTEX2HVNV = 1275, NFOSMESA_GLVERTEX3HNV = 1276, NFOSMESA_GLVERTEX3HVNV = 1277, NFOSMESA_GLVERTEX4HNV = 1278, NFOSMESA_GLVERTEX4HVNV = 1279, NFOSMESA_GLNORMAL3HNV = 1280, NFOSMESA_GLNORMAL3HVNV = 1281, NFOSMESA_GLCOLOR3HNV = 1282, NFOSMESA_GLCOLOR3HVNV = 1283, NFOSMESA_GLCOLOR4HNV = 1284, NFOSMESA_GLCOLOR4HVNV = 1285, NFOSMESA_GLTEXCOORD1HNV = 1286, NFOSMESA_GLTEXCOORD1HVNV = 1287, NFOSMESA_GLTEXCOORD2HNV = 1288, NFOSMESA_GLTEXCOORD2HVNV = 1289, NFOSMESA_GLTEXCOORD3HNV = 1290, NFOSMESA_GLTEXCOORD3HVNV = 1291, NFOSMESA_GLTEXCOORD4HNV = 1292, NFOSMESA_GLTEXCOORD4HVNV = 1293, NFOSMESA_GLMULTITEXCOORD1HNV = 1294, NFOSMESA_GLMULTITEXCOORD1HVNV = 1295, NFOSMESA_GLMULTITEXCOORD2HNV = 1296, NFOSMESA_GLMULTITEXCOORD2HVNV = 1297, NFOSMESA_GLMULTITEXCOORD3HNV = 1298, NFOSMESA_GLMULTITEXCOORD3HVNV = 1299, NFOSMESA_GLMULTITEXCOORD4HNV = 1300, NFOSMESA_GLMULTITEXCOORD4HVNV = 1301, NFOSMESA_GLFOGCOORDHNV = 1302, NFOSMESA_GLFOGCOORDHVNV = 1303, NFOSMESA_GLSECONDARYCOLOR3HNV = 1304, NFOSMESA_GLSECONDARYCOLOR3HVNV = 1305, NFOSMESA_GLVERTEXWEIGHTHNV = 1306, NFOSMESA_GLVERTEXWEIGHTHVNV = 1307, NFOSMESA_GLVERTEXATTRIB1HNV = 1308, NFOSMESA_GLVERTEXATTRIB1HVNV = 1309, NFOSMESA_GLVERTEXATTRIB2HNV = 1310, NFOSMESA_GLVERTEXATTRIB2HVNV = 1311, NFOSMESA_GLVERTEXATTRIB3HNV = 1312, NFOSMESA_GLVERTEXATTRIB3HVNV = 1313, NFOSMESA_GLVERTEXATTRIB4HNV = 1314, NFOSMESA_GLVERTEXATTRIB4HVNV = 1315, NFOSMESA_GLVERTEXATTRIBS1HVNV = 1316, NFOSMESA_GLVERTEXATTRIBS2HVNV = 1317, NFOSMESA_GLVERTEXATTRIBS3HVNV = 1318, NFOSMESA_GLVERTEXATTRIBS4HVNV = 1319, NFOSMESA_GLPIXELDATARANGENV = 1320, NFOSMESA_GLFLUSHPIXELDATARANGENV = 1321, NFOSMESA_GLPRIMITIVERESTARTNV = 1322, NFOSMESA_GLPRIMITIVERESTARTINDEXNV = 1323, NFOSMESA_GLMAPOBJECTBUFFERATI = 1324, NFOSMESA_GLUNMAPOBJECTBUFFERATI = 1325, NFOSMESA_GLSTENCILOPSEPARATEATI = 1326, NFOSMESA_GLSTENCILFUNCSEPARATEATI = 1327, NFOSMESA_GLVERTEXATTRIBARRAYOBJECTATI = 1328, NFOSMESA_GLGETVERTEXATTRIBARRAYOBJECTFVATI = 1329, NFOSMESA_GLGETVERTEXATTRIBARRAYOBJECTIVATI = 1330, NFOSMESA_GLDEPTHBOUNDSEXT = 1331, NFOSMESA_GLBLENDEQUATIONSEPARATEEXT = 1332, /* end of ARANFOSMESA_NFAPI_VERSION 1 */ NFOSMESA_OSMESACOLORCLAMP = 1333, NFOSMESA_OSMESAPOSTPROCESS = 1334, NFOSMESA_OSMESARESERVED1335 = 1335, NFOSMESA_OSMESARESERVED1336 = 1336, NFOSMESA_OSMESARESERVED1337 = 1337, NFOSMESA_OSMESARESERVED1338 = 1338, NFOSMESA_OSMESARESERVED1339 = 1339, NFOSMESA_OSMESARESERVED1340 = 1340, NFOSMESA_OSMESARESERVED1341 = 1341, NFOSMESA_OSMESARESERVED1342 = 1342, NFOSMESA_OSMESARESERVED1343 = 1343, NFOSMESA_OSMESARESERVED1344 = 1344, NFOSMESA_OSMESARESERVED1345 = 1345, NFOSMESA_OSMESARESERVED1346 = 1346, NFOSMESA_OSMESARESERVED1347 = 1347, NFOSMESA_OSMESARESERVED1348 = 1348, NFOSMESA_OSMESARESERVED1349 = 1349, NFOSMESA_OSMESARESERVED1350 = 1350, NFOSMESA_OSMESARESERVED1351 = 1351, NFOSMESA_OSMESARESERVED1352 = 1352, NFOSMESA_OSMESARESERVED1353 = 1353, NFOSMESA_OSMESARESERVED1354 = 1354, NFOSMESA_OSMESARESERVED1355 = 1355, NFOSMESA_OSMESARESERVED1356 = 1356, NFOSMESA_OSMESARESERVED1357 = 1357, NFOSMESA_OSMESARESERVED1358 = 1358, NFOSMESA_OSMESARESERVED1359 = 1359, NFOSMESA_OSMESARESERVED1360 = 1360, NFOSMESA_OSMESARESERVED1361 = 1361, NFOSMESA_OSMESARESERVED1362 = 1362, NFOSMESA_OSMESARESERVED1363 = 1363, NFOSMESA_OSMESARESERVED1364 = 1364, NFOSMESA_OSMESARESERVED1365 = 1365, NFOSMESA_OSMESARESERVED1366 = 1366, NFOSMESA_OSMESARESERVED1367 = 1367, NFOSMESA_OSMESARESERVED1368 = 1368, NFOSMESA_OSMESARESERVED1369 = 1369, NFOSMESA_OSMESARESERVED1370 = 1370, NFOSMESA_OSMESARESERVED1371 = 1371, NFOSMESA_OSMESARESERVED1372 = 1372, NFOSMESA_OSMESARESERVED1373 = 1373, NFOSMESA_OSMESARESERVED1374 = 1374, NFOSMESA_OSMESARESERVED1375 = 1375, NFOSMESA_OSMESARESERVED1376 = 1376, NFOSMESA_OSMESARESERVED1377 = 1377, NFOSMESA_OSMESARESERVED1378 = 1378, NFOSMESA_OSMESARESERVED1379 = 1379, NFOSMESA_OSMESARESERVED1380 = 1380, NFOSMESA_OSMESARESERVED1381 = 1381, NFOSMESA_OSMESARESERVED1382 = 1382, NFOSMESA_OSMESARESERVED1383 = 1383, /* * reserved for some functions that don't have an api call * but need an entry in the function table */ NFOSMESA_OSMESAUSEDBYSLB1384 = 1384, NFOSMESA_OSMESAUSEDBYSLB1385 = 1385, NFOSMESA_OSMESAUSEDBYSLB1386 = 1386, NFOSMESA_OSMESAUSEDBYSLB1387 = 1387, NFOSMESA_OSMESAUSEDBYSLB1388 = 1388, NFOSMESA_OSMESAUSEDBYSLB1389 = 1389, /* non-standard functions needed by TinyGL */ NFOSMESA_GLULOOKATF = 1390, NFOSMESA_GLFRUSTUMF = 1391, NFOSMESA_GLORTHOF = 1392, /* OSMesaCreateLDG() handled on Atari side, via OSMesaCreateContext() */ /* OSMesaDestroyLDG() handled on Atari side, via OSMesaDestroyContext() */ /* max_width handled on Atari side, via OSMesaGetIntegerv() */ /* max_height handled on Atari side, via OSMesaGetIntegerv() */ /* exception_error NYI */ NFOSMESA_TINYGLSWAPBUFFER = 1393, NFOSMESA_GLULOOKAT = 1394, NFOSMESA_GLACCUMXOES = 1400, NFOSMESA_GLACTIVEPROGRAMEXT = 1401, NFOSMESA_GLACTIVESHADERPROGRAM = 1402, NFOSMESA_GLACTIVEVARYINGNV = 1403, NFOSMESA_GLADDSWAPHINTRECTWIN = 1404, NFOSMESA_GLALPHAFUNCXOES = 1405, NFOSMESA_GLATTACHSHADER = 1406, NFOSMESA_GLBEGINCONDITIONALRENDER = 1407, NFOSMESA_GLBEGINCONDITIONALRENDERNV = 1408, NFOSMESA_GLBEGINCONDITIONALRENDERNVX = 1409, NFOSMESA_GLBEGINPERFMONITORAMD = 1410, NFOSMESA_GLBEGINPERFQUERYINTEL = 1411, NFOSMESA_GLBEGINQUERYINDEXED = 1412, NFOSMESA_GLBEGINTRANSFORMFEEDBACK = 1413, NFOSMESA_GLBEGINTRANSFORMFEEDBACKEXT = 1414, NFOSMESA_GLBEGINTRANSFORMFEEDBACKNV = 1415, NFOSMESA_GLBEGINVIDEOCAPTURENV = 1416, NFOSMESA_GLBINDATTRIBLOCATION = 1417, NFOSMESA_GLBINDBUFFERBASE = 1418, NFOSMESA_GLBINDBUFFERBASEEXT = 1419, NFOSMESA_GLBINDBUFFERBASENV = 1420, NFOSMESA_GLBINDBUFFEROFFSETEXT = 1421, NFOSMESA_GLBINDBUFFEROFFSETNV = 1422, NFOSMESA_GLBINDBUFFERRANGE = 1423, NFOSMESA_GLBINDBUFFERRANGEEXT = 1424, NFOSMESA_GLBINDBUFFERRANGENV = 1425, NFOSMESA_GLBINDBUFFERSBASE = 1426, NFOSMESA_GLBINDBUFFERSRANGE = 1427, NFOSMESA_GLBINDFRAGDATALOCATION = 1428, NFOSMESA_GLBINDFRAGDATALOCATIONEXT = 1429, NFOSMESA_GLBINDFRAGDATALOCATIONINDEXED = 1430, NFOSMESA_GLBINDFRAMEBUFFER = 1431, NFOSMESA_GLBINDFRAMEBUFFEREXT = 1432, NFOSMESA_GLBINDIMAGETEXTURE = 1433, NFOSMESA_GLBINDIMAGETEXTUREEXT = 1434, NFOSMESA_GLBINDIMAGETEXTURES = 1435, NFOSMESA_GLBINDMULTITEXTUREEXT = 1436, NFOSMESA_GLBINDPROGRAMPIPELINE = 1437, NFOSMESA_GLBINDRENDERBUFFER = 1438, NFOSMESA_GLBINDRENDERBUFFEREXT = 1439, NFOSMESA_GLBINDSAMPLER = 1440, NFOSMESA_GLBINDSAMPLERS = 1441, NFOSMESA_GLBINDTEXTURES = 1442, NFOSMESA_GLBINDTRANSFORMFEEDBACK = 1443, NFOSMESA_GLBINDTRANSFORMFEEDBACKNV = 1444, NFOSMESA_GLBINDVERTEXARRAY = 1445, NFOSMESA_GLBINDVERTEXBUFFER = 1446, NFOSMESA_GLBINDVERTEXBUFFERS = 1447, NFOSMESA_GLBINDVIDEOCAPTURESTREAMBUFFERNV = 1448, NFOSMESA_GLBINDVIDEOCAPTURESTREAMTEXTURENV = 1449, NFOSMESA_GLBITMAPXOES = 1450, NFOSMESA_GLBLENDBARRIERNV = 1451, NFOSMESA_GLBLENDCOLORXOES = 1452, NFOSMESA_GLBLENDEQUATIONINDEXEDAMD = 1453, NFOSMESA_GLBLENDEQUATIONSEPARATE = 1454, NFOSMESA_GLBLENDEQUATIONSEPARATEINDEXEDAMD = 1455, NFOSMESA_GLBLENDEQUATIONSEPARATEI = 1456, NFOSMESA_GLBLENDEQUATIONSEPARATEIARB = 1457, NFOSMESA_GLBLENDEQUATIONI = 1458, NFOSMESA_GLBLENDEQUATIONIARB = 1459, NFOSMESA_GLBLENDFUNCINDEXEDAMD = 1460, NFOSMESA_GLBLENDFUNCSEPARATEINDEXEDAMD = 1461, NFOSMESA_GLBLENDFUNCSEPARATEI = 1462, NFOSMESA_GLBLENDFUNCSEPARATEIARB = 1463, NFOSMESA_GLBLENDFUNCI = 1464, NFOSMESA_GLBLENDFUNCIARB = 1465, NFOSMESA_GLBLENDPARAMETERINV = 1466, NFOSMESA_GLBLITFRAMEBUFFER = 1467, NFOSMESA_GLBLITFRAMEBUFFEREXT = 1468, NFOSMESA_GLBUFFERADDRESSRANGENV = 1469, NFOSMESA_GLBUFFERPARAMETERIAPPLE = 1470, NFOSMESA_GLBUFFERSTORAGE = 1471, NFOSMESA_GLCHECKFRAMEBUFFERSTATUS = 1472, NFOSMESA_GLCHECKFRAMEBUFFERSTATUSEXT = 1473, NFOSMESA_GLCHECKNAMEDFRAMEBUFFERSTATUSEXT = 1474, NFOSMESA_GLCLAMPCOLOR = 1475, NFOSMESA_GLCLAMPCOLORARB = 1476, NFOSMESA_GLCLEARACCUMXOES = 1477, NFOSMESA_GLCLEARBUFFERDATA = 1478, NFOSMESA_GLCLEARBUFFERSUBDATA = 1479, NFOSMESA_GLCLEARBUFFERFI = 1480, NFOSMESA_GLCLEARBUFFERFV = 1481, NFOSMESA_GLCLEARBUFFERIV = 1482, NFOSMESA_GLCLEARBUFFERUIV = 1483, NFOSMESA_GLCLEARCOLORIIEXT = 1484, NFOSMESA_GLCLEARCOLORIUIEXT = 1485, NFOSMESA_GLCLEARCOLORXOES = 1486, NFOSMESA_GLCLEARDEBUGLOGMESA = 1487, NFOSMESA_GLCLEARDEPTHDNV = 1488, NFOSMESA_GLCLEARDEPTHF = 1489, NFOSMESA_GLCLEARDEPTHFOES = 1490, NFOSMESA_GLCLEARDEPTHXOES = 1491, NFOSMESA_GLCLEARNAMEDBUFFERDATAEXT = 1492, NFOSMESA_GLCLEARNAMEDBUFFERSUBDATAEXT = 1493, NFOSMESA_GLCLEARTEXIMAGE = 1494, NFOSMESA_GLCLEARTEXSUBIMAGE = 1495, NFOSMESA_GLCLIENTATTRIBDEFAULTEXT = 1496, NFOSMESA_GLCLIENTWAITSYNC = 1497, NFOSMESA_GLCLIPPLANEFOES = 1498, NFOSMESA_GLCLIPPLANEXOES = 1499, NFOSMESA_GLCOLOR3XOES = 1500, NFOSMESA_GLCOLOR3XVOES = 1501, NFOSMESA_GLCOLOR4XOES = 1502, NFOSMESA_GLCOLOR4XVOES = 1503, NFOSMESA_GLCOLORFORMATNV = 1504, NFOSMESA_GLCOLORMASKINDEXEDEXT = 1505, NFOSMESA_GLCOLORMASKI = 1506, NFOSMESA_GLCOLORP3UI = 1507, NFOSMESA_GLCOLORP3UIV = 1508, NFOSMESA_GLCOLORP4UI = 1509, NFOSMESA_GLCOLORP4UIV = 1510, NFOSMESA_GLCOMPILESHADER = 1511, NFOSMESA_GLCOMPILESHADERINCLUDEARB = 1512, NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE1DEXT = 1513, NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE2DEXT = 1514, NFOSMESA_GLCOMPRESSEDMULTITEXIMAGE3DEXT = 1515, NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE1DEXT = 1516, NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE2DEXT = 1517, NFOSMESA_GLCOMPRESSEDMULTITEXSUBIMAGE3DEXT = 1518, NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE1DEXT = 1519, NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE2DEXT = 1520, NFOSMESA_GLCOMPRESSEDTEXTUREIMAGE3DEXT = 1521, NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE1DEXT = 1522, NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE2DEXT = 1523, NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE3DEXT = 1524, NFOSMESA_GLCONVOLUTIONPARAMETERXOES = 1525, NFOSMESA_GLCONVOLUTIONPARAMETERXVOES = 1526, NFOSMESA_GLCOPYBUFFERSUBDATA = 1527, NFOSMESA_GLCOPYIMAGESUBDATA = 1528, NFOSMESA_GLCOPYIMAGESUBDATANV = 1529, NFOSMESA_GLCOPYMULTITEXIMAGE1DEXT = 1530, NFOSMESA_GLCOPYMULTITEXIMAGE2DEXT = 1531, NFOSMESA_GLCOPYMULTITEXSUBIMAGE1DEXT = 1532, NFOSMESA_GLCOPYMULTITEXSUBIMAGE2DEXT = 1533, NFOSMESA_GLCOPYMULTITEXSUBIMAGE3DEXT = 1534, NFOSMESA_GLCOPYPATHNV = 1535, NFOSMESA_GLCOPYTEXTUREIMAGE1DEXT = 1536, NFOSMESA_GLCOPYTEXTUREIMAGE2DEXT = 1537, NFOSMESA_GLCOPYTEXTURESUBIMAGE1DEXT = 1538, NFOSMESA_GLCOPYTEXTURESUBIMAGE2DEXT = 1539, NFOSMESA_GLCOPYTEXTURESUBIMAGE3DEXT = 1540, NFOSMESA_GLCOVERFILLPATHINSTANCEDNV = 1541, NFOSMESA_GLCOVERFILLPATHNV = 1542, NFOSMESA_GLCOVERSTROKEPATHINSTANCEDNV = 1543, NFOSMESA_GLCOVERSTROKEPATHNV = 1544, NFOSMESA_GLCREATEDEBUGOBJECTMESA = 1545, NFOSMESA_GLCREATEPERFQUERYINTEL = 1546, NFOSMESA_GLCREATEPROGRAM = 1547, NFOSMESA_GLCREATESHADER = 1548, NFOSMESA_GLCREATESHADERPROGRAMEXT = 1549, NFOSMESA_GLCREATESHADERPROGRAMV = 1550, NFOSMESA_GLCREATESYNCFROMCLEVENTARB = 1551, NFOSMESA_GLDEBUGMESSAGECALLBACK = 1552, NFOSMESA_GLDEBUGMESSAGECALLBACKAMD = 1553, NFOSMESA_GLDEBUGMESSAGECALLBACKARB = 1554, NFOSMESA_GLDEBUGMESSAGECONTROL = 1555, NFOSMESA_GLDEBUGMESSAGECONTROLARB = 1556, NFOSMESA_GLDEBUGMESSAGEENABLEAMD = 1557, NFOSMESA_GLDEBUGMESSAGEINSERT = 1558, NFOSMESA_GLDEBUGMESSAGEINSERTAMD = 1559, NFOSMESA_GLDEBUGMESSAGEINSERTARB = 1560, NFOSMESA_GLDELETEFRAMEBUFFERS = 1561, NFOSMESA_GLDELETEFRAMEBUFFERSEXT = 1562, NFOSMESA_GLDELETENAMEDSTRINGARB = 1563, NFOSMESA_GLDELETENAMESAMD = 1564, NFOSMESA_GLDELETEOBJECTBUFFERATI = 1565, NFOSMESA_GLDELETEPATHSNV = 1566, NFOSMESA_GLDELETEPERFMONITORSAMD = 1567, NFOSMESA_GLDELETEPERFQUERYINTEL = 1568, NFOSMESA_GLDELETEPROGRAM = 1569, NFOSMESA_GLDELETEPROGRAMPIPELINES = 1570, NFOSMESA_GLDELETERENDERBUFFERS = 1571, NFOSMESA_GLDELETERENDERBUFFERSEXT = 1572, NFOSMESA_GLDELETESAMPLERS = 1573, NFOSMESA_GLDELETESHADER = 1574, NFOSMESA_GLDELETESYNC = 1575, NFOSMESA_GLDELETETRANSFORMFEEDBACKS = 1576, NFOSMESA_GLDELETETRANSFORMFEEDBACKSNV = 1577, NFOSMESA_GLDELETEVERTEXARRAYS = 1578, NFOSMESA_GLDEPTHBOUNDSDNV = 1579, NFOSMESA_GLDEPTHRANGEARRAYV = 1580, NFOSMESA_GLDEPTHRANGEINDEXED = 1581, NFOSMESA_GLDEPTHRANGEDNV = 1582, NFOSMESA_GLDEPTHRANGEF = 1583, NFOSMESA_GLDEPTHRANGEFOES = 1584, NFOSMESA_GLDEPTHRANGEXOES = 1585, NFOSMESA_GLDETACHSHADER = 1586, NFOSMESA_GLDISABLECLIENTSTATEINDEXEDEXT = 1587, NFOSMESA_GLDISABLECLIENTSTATEIEXT = 1588, NFOSMESA_GLDISABLEINDEXEDEXT = 1589, NFOSMESA_GLDISABLEVERTEXARRAYATTRIBEXT = 1590, NFOSMESA_GLDISABLEVERTEXARRAYEXT = 1591, NFOSMESA_GLDISABLEVERTEXATTRIBAPPLE = 1592, NFOSMESA_GLDISABLEVERTEXATTRIBARRAY = 1593, NFOSMESA_GLDISABLEI = 1594, NFOSMESA_GLDISPATCHCOMPUTE = 1595, NFOSMESA_GLDISPATCHCOMPUTEGROUPSIZEARB = 1596, NFOSMESA_GLDISPATCHCOMPUTEINDIRECT = 1597, NFOSMESA_GLDRAWARRAYSINDIRECT = 1598, NFOSMESA_GLDRAWARRAYSINSTANCED = 1599, NFOSMESA_GLDRAWARRAYSINSTANCEDARB = 1600, NFOSMESA_GLDRAWARRAYSINSTANCEDBASEINSTANCE = 1601, NFOSMESA_GLDRAWARRAYSINSTANCEDEXT = 1602, NFOSMESA_GLDRAWBUFFERS = 1603, NFOSMESA_GLDRAWELEMENTSBASEVERTEX = 1604, NFOSMESA_GLDRAWELEMENTSINDIRECT = 1605, NFOSMESA_GLDRAWELEMENTSINSTANCED = 1606, NFOSMESA_GLDRAWELEMENTSINSTANCEDARB = 1607, NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEINSTANCE = 1608, NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEVERTEX = 1609, NFOSMESA_GLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE = 1610, NFOSMESA_GLDRAWELEMENTSINSTANCEDEXT = 1611, NFOSMESA_GLDRAWRANGEELEMENTSBASEVERTEX = 1612, NFOSMESA_GLDRAWTEXTURENV = 1613, NFOSMESA_GLDRAWTRANSFORMFEEDBACK = 1614, NFOSMESA_GLDRAWTRANSFORMFEEDBACKINSTANCED = 1615, NFOSMESA_GLDRAWTRANSFORMFEEDBACKNV = 1616, NFOSMESA_GLDRAWTRANSFORMFEEDBACKSTREAM = 1617, NFOSMESA_GLDRAWTRANSFORMFEEDBACKSTREAMINSTANCED = 1618, NFOSMESA_GLEDGEFLAGFORMATNV = 1619, NFOSMESA_GLENABLECLIENTSTATEINDEXEDEXT = 1620, NFOSMESA_GLENABLECLIENTSTATEIEXT = 1621, NFOSMESA_GLENABLEINDEXEDEXT = 1622, NFOSMESA_GLENABLEVERTEXARRAYATTRIBEXT = 1623, NFOSMESA_GLENABLEVERTEXARRAYEXT = 1624, NFOSMESA_GLENABLEVERTEXATTRIBAPPLE = 1625, NFOSMESA_GLENABLEVERTEXATTRIBARRAY = 1626, NFOSMESA_GLENABLEI = 1627, NFOSMESA_GLENDCONDITIONALRENDER = 1628, NFOSMESA_GLENDCONDITIONALRENDERNV = 1629, NFOSMESA_GLENDCONDITIONALRENDERNVX = 1630, NFOSMESA_GLENDPERFMONITORAMD = 1631, NFOSMESA_GLENDPERFQUERYINTEL = 1632, NFOSMESA_GLENDQUERYINDEXED = 1633, NFOSMESA_GLENDTRANSFORMFEEDBACK = 1634, NFOSMESA_GLENDTRANSFORMFEEDBACKEXT = 1635, NFOSMESA_GLENDTRANSFORMFEEDBACKNV = 1636, NFOSMESA_GLENDVIDEOCAPTURENV = 1637, NFOSMESA_GLEVALCOORD1XOES = 1638, NFOSMESA_GLEVALCOORD1XVOES = 1639, NFOSMESA_GLEVALCOORD2XOES = 1640, NFOSMESA_GLEVALCOORD2XVOES = 1641, NFOSMESA_GLFEEDBACKBUFFERXOES = 1642, NFOSMESA_GLFENCESYNC = 1643, NFOSMESA_GLFINISHRENDERAPPLE = 1644, NFOSMESA_GLFLUSHMAPPEDBUFFERRANGE = 1645, NFOSMESA_GLFLUSHMAPPEDBUFFERRANGEAPPLE = 1646, NFOSMESA_GLFLUSHMAPPEDNAMEDBUFFERRANGEEXT = 1647, NFOSMESA_GLFLUSHRENDERAPPLE = 1648, NFOSMESA_GLFLUSHSTATICDATAIBM = 1649, NFOSMESA_GLFOGCOORDFORMATNV = 1650, NFOSMESA_GLFOGXOES = 1651, NFOSMESA_GLFOGXVOES = 1652, NFOSMESA_GLFRAMETERMINATORGREMEDY = 1653, NFOSMESA_GLFRAMEBUFFERDRAWBUFFEREXT = 1654, NFOSMESA_GLFRAMEBUFFERDRAWBUFFERSEXT = 1655, NFOSMESA_GLFRAMEBUFFERPARAMETERI = 1656, NFOSMESA_GLFRAMEBUFFERREADBUFFEREXT = 1657, NFOSMESA_GLFRAMEBUFFERRENDERBUFFER = 1658, NFOSMESA_GLFRAMEBUFFERRENDERBUFFEREXT = 1659, NFOSMESA_GLFRAMEBUFFERTEXTURE = 1660, NFOSMESA_GLFRAMEBUFFERTEXTURE1D = 1661, NFOSMESA_GLFRAMEBUFFERTEXTURE1DEXT = 1662, NFOSMESA_GLFRAMEBUFFERTEXTURE2D = 1663, NFOSMESA_GLFRAMEBUFFERTEXTURE2DEXT = 1664, NFOSMESA_GLFRAMEBUFFERTEXTURE3D = 1665, NFOSMESA_GLFRAMEBUFFERTEXTURE3DEXT = 1666, NFOSMESA_GLFRAMEBUFFERTEXTUREARB = 1667, NFOSMESA_GLFRAMEBUFFERTEXTUREEXT = 1668, NFOSMESA_GLFRAMEBUFFERTEXTUREFACEARB = 1669, NFOSMESA_GLFRAMEBUFFERTEXTUREFACEEXT = 1670, NFOSMESA_GLFRAMEBUFFERTEXTURELAYER = 1671, NFOSMESA_GLFRAMEBUFFERTEXTURELAYERARB = 1672, NFOSMESA_GLFRAMEBUFFERTEXTURELAYEREXT = 1673, NFOSMESA_GLFRUSTUMFOES = 1674, NFOSMESA_GLFRUSTUMXOES = 1675, NFOSMESA_GLGENFRAMEBUFFERS = 1676, NFOSMESA_GLGENFRAMEBUFFERSEXT = 1677, NFOSMESA_GLGENNAMESAMD = 1678, NFOSMESA_GLGENPATHSNV = 1679, NFOSMESA_GLGENPERFMONITORSAMD = 1680, NFOSMESA_GLGENPROGRAMPIPELINES = 1681, NFOSMESA_GLGENRENDERBUFFERS = 1682, NFOSMESA_GLGENRENDERBUFFERSEXT = 1683, NFOSMESA_GLGENSAMPLERS = 1684, NFOSMESA_GLGENTRANSFORMFEEDBACKS = 1685, NFOSMESA_GLGENTRANSFORMFEEDBACKSNV = 1686, NFOSMESA_GLGENVERTEXARRAYS = 1687, NFOSMESA_GLGENERATEMIPMAP = 1688, NFOSMESA_GLGENERATEMIPMAPEXT = 1689, NFOSMESA_GLGENERATEMULTITEXMIPMAPEXT = 1690, NFOSMESA_GLGENERATETEXTUREMIPMAPEXT = 1691, NFOSMESA_GLGETACTIVEATOMICCOUNTERBUFFERIV = 1692, NFOSMESA_GLGETACTIVEATTRIB = 1693, NFOSMESA_GLGETACTIVESUBROUTINENAME = 1694, NFOSMESA_GLGETACTIVESUBROUTINEUNIFORMNAME = 1695, NFOSMESA_GLGETACTIVESUBROUTINEUNIFORMIV = 1696, NFOSMESA_GLGETACTIVEUNIFORM = 1697, NFOSMESA_GLGETACTIVEUNIFORMBLOCKINDEX = 1698, NFOSMESA_GLGETACTIVEUNIFORMBLOCKNAME = 1699, NFOSMESA_GLGETACTIVEUNIFORMBLOCKIV = 1700, NFOSMESA_GLGETACTIVEUNIFORMNAME = 1701, NFOSMESA_GLGETACTIVEUNIFORMSIV = 1702, NFOSMESA_GLGETACTIVEVARYINGNV = 1703, NFOSMESA_GLGETATTACHEDSHADERS = 1704, NFOSMESA_GLGETATTRIBLOCATION = 1705, NFOSMESA_GLGETBOOLEANINDEXEDVEXT = 1706, NFOSMESA_GLGETBOOLEANI_V = 1707, NFOSMESA_GLGETBUFFERPARAMETERI64V = 1708, NFOSMESA_GLGETBUFFERPARAMETERUI64VNV = 1709, NFOSMESA_GLGETCLIPPLANEFOES = 1710, NFOSMESA_GLGETCLIPPLANEXOES = 1711, NFOSMESA_GLGETCOMPRESSEDMULTITEXIMAGEEXT = 1712, NFOSMESA_GLGETCOMPRESSEDTEXTUREIMAGEEXT = 1713, NFOSMESA_GLGETCONVOLUTIONPARAMETERXVOES = 1714, NFOSMESA_GLGETDEBUGLOGLENGTHMESA = 1715, NFOSMESA_GLGETDEBUGLOGMESA = 1716, NFOSMESA_GLGETDEBUGMESSAGELOG = 1717, NFOSMESA_GLGETDEBUGMESSAGELOGAMD = 1718, NFOSMESA_GLGETDEBUGMESSAGELOGARB = 1719, NFOSMESA_GLGETDOUBLEINDEXEDVEXT = 1720, NFOSMESA_GLGETDOUBLEI_V = 1721, NFOSMESA_GLGETDOUBLEI_VEXT = 1722, NFOSMESA_GLGETFIRSTPERFQUERYIDINTEL = 1723, NFOSMESA_GLGETFIXEDVOES = 1724, NFOSMESA_GLGETFLOATINDEXEDVEXT = 1725, NFOSMESA_GLGETFLOATI_V = 1726, NFOSMESA_GLGETFLOATI_VEXT = 1727, NFOSMESA_GLGETFRAGDATAINDEX = 1728, NFOSMESA_GLGETFRAGDATALOCATION = 1729, NFOSMESA_GLGETFRAGDATALOCATIONEXT = 1730, NFOSMESA_GLGETFRAMEBUFFERATTACHMENTPARAMETERIV = 1731, NFOSMESA_GLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXT = 1732, NFOSMESA_GLGETFRAMEBUFFERPARAMETERIV = 1733, NFOSMESA_GLGETFRAMEBUFFERPARAMETERIVEXT = 1734, NFOSMESA_GLGETGRAPHICSRESETSTATUSARB = 1735, NFOSMESA_GLGETHISTOGRAMPARAMETERXVOES = 1736, NFOSMESA_GLGETIMAGEHANDLEARB = 1737, NFOSMESA_GLGETIMAGEHANDLENV = 1738, NFOSMESA_GLGETINTEGER64I_V = 1739, NFOSMESA_GLGETINTEGER64V = 1740, NFOSMESA_GLGETINTEGERINDEXEDVEXT = 1741, NFOSMESA_GLGETINTEGERI_V = 1742, NFOSMESA_GLGETINTEGERUI64I_VNV = 1743, NFOSMESA_GLGETINTEGERUI64VNV = 1744, NFOSMESA_GLGETINTERNALFORMATI64V = 1745, NFOSMESA_GLGETINTERNALFORMATIV = 1746, NFOSMESA_GLGETLIGHTXOES = 1747, NFOSMESA_GLGETMAPXVOES = 1748, NFOSMESA_GLGETMATERIALXOES = 1749, NFOSMESA_GLGETMULTITEXENVFVEXT = 1750, NFOSMESA_GLGETMULTITEXENVIVEXT = 1751, NFOSMESA_GLGETMULTITEXGENDVEXT = 1752, NFOSMESA_GLGETMULTITEXGENFVEXT = 1753, NFOSMESA_GLGETMULTITEXGENIVEXT = 1754, NFOSMESA_GLGETMULTITEXIMAGEEXT = 1755, NFOSMESA_GLGETMULTITEXLEVELPARAMETERFVEXT = 1756, NFOSMESA_GLGETMULTITEXLEVELPARAMETERIVEXT = 1757, NFOSMESA_GLGETMULTITEXPARAMETERIIVEXT = 1758, NFOSMESA_GLGETMULTITEXPARAMETERIUIVEXT = 1759, NFOSMESA_GLGETMULTITEXPARAMETERFVEXT = 1760, NFOSMESA_GLGETMULTITEXPARAMETERIVEXT = 1761, NFOSMESA_GLGETMULTISAMPLEFV = 1762, NFOSMESA_GLGETMULTISAMPLEFVNV = 1763, NFOSMESA_GLGETNAMEDBUFFERPARAMETERIVEXT = 1764, NFOSMESA_GLGETNAMEDBUFFERPARAMETERUI64VNV = 1765, NFOSMESA_GLGETNAMEDBUFFERPOINTERVEXT = 1766, NFOSMESA_GLGETNAMEDBUFFERSUBDATAEXT = 1767, NFOSMESA_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT = 1768, NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERIVEXT = 1769, NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERIIVEXT = 1770, NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXT = 1771, NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERDVEXT = 1772, NFOSMESA_GLGETNAMEDPROGRAMLOCALPARAMETERFVEXT = 1773, NFOSMESA_GLGETNAMEDPROGRAMSTRINGEXT = 1774, NFOSMESA_GLGETNAMEDPROGRAMIVEXT = 1775, NFOSMESA_GLGETNAMEDRENDERBUFFERPARAMETERIVEXT = 1776, NFOSMESA_GLGETNAMEDSTRINGARB = 1777, NFOSMESA_GLGETNAMEDSTRINGIVARB = 1778, NFOSMESA_GLGETNEXTPERFQUERYIDINTEL = 1779, NFOSMESA_GLGETOBJECTLABEL = 1780, NFOSMESA_GLGETOBJECTLABELEXT = 1781, NFOSMESA_GLGETOBJECTPARAMETERIVAPPLE = 1782, NFOSMESA_GLGETOBJECTPTRLABEL = 1783, NFOSMESA_GLGETPATHCOLORGENFVNV = 1784, NFOSMESA_GLGETPATHCOLORGENIVNV = 1785, NFOSMESA_GLGETPATHCOMMANDSNV = 1786, NFOSMESA_GLGETPATHCOORDSNV = 1787, NFOSMESA_GLGETPATHDASHARRAYNV = 1788, NFOSMESA_GLGETPATHLENGTHNV = 1789, NFOSMESA_GLGETPATHMETRICRANGENV = 1790, NFOSMESA_GLGETPATHMETRICSNV = 1791, NFOSMESA_GLGETPATHPARAMETERFVNV = 1792, NFOSMESA_GLGETPATHPARAMETERIVNV = 1793, NFOSMESA_GLGETPATHSPACINGNV = 1794, NFOSMESA_GLGETPATHTEXGENFVNV = 1795, NFOSMESA_GLGETPATHTEXGENIVNV = 1796, NFOSMESA_GLGETPERFCOUNTERINFOINTEL = 1797, NFOSMESA_GLGETPERFMONITORCOUNTERDATAAMD = 1798, NFOSMESA_GLGETPERFMONITORCOUNTERINFOAMD = 1799, NFOSMESA_GLGETPERFMONITORCOUNTERSTRINGAMD = 1800, NFOSMESA_GLGETPERFMONITORCOUNTERSAMD = 1801, NFOSMESA_GLGETPERFMONITORGROUPSTRINGAMD = 1802, NFOSMESA_GLGETPERFMONITORGROUPSAMD = 1803, NFOSMESA_GLGETPERFQUERYDATAINTEL = 1804, NFOSMESA_GLGETPERFQUERYIDBYNAMEINTEL = 1805, NFOSMESA_GLGETPERFQUERYINFOINTEL = 1806, NFOSMESA_GLGETPIXELMAPXV = 1807, NFOSMESA_GLGETPIXELTRANSFORMPARAMETERFVEXT = 1808, NFOSMESA_GLGETPIXELTRANSFORMPARAMETERIVEXT = 1809, NFOSMESA_GLGETPOINTERINDEXEDVEXT = 1810, NFOSMESA_GLGETPOINTERI_VEXT = 1811, NFOSMESA_GLGETPROGRAMBINARY = 1812, NFOSMESA_GLGETPROGRAMENVPARAMETERIIVNV = 1813, NFOSMESA_GLGETPROGRAMENVPARAMETERIUIVNV = 1814, NFOSMESA_GLGETPROGRAMINFOLOG = 1815, NFOSMESA_GLGETPROGRAMINTERFACEIV = 1816, NFOSMESA_GLGETPROGRAMLOCALPARAMETERIIVNV = 1817, NFOSMESA_GLGETPROGRAMLOCALPARAMETERIUIVNV = 1818, NFOSMESA_GLGETPROGRAMPIPELINEINFOLOG = 1819, NFOSMESA_GLGETPROGRAMPIPELINEIV = 1820, NFOSMESA_GLGETPROGRAMREGISTERFVMESA = 1821, NFOSMESA_GLGETPROGRAMRESOURCEINDEX = 1822, NFOSMESA_GLGETPROGRAMRESOURCELOCATION = 1823, NFOSMESA_GLGETPROGRAMRESOURCELOCATIONINDEX = 1824, NFOSMESA_GLGETPROGRAMRESOURCENAME = 1825, NFOSMESA_GLGETPROGRAMRESOURCEIV = 1826, NFOSMESA_GLGETPROGRAMSTAGEIV = 1827, NFOSMESA_GLGETPROGRAMSUBROUTINEPARAMETERUIVNV = 1828, NFOSMESA_GLGETPROGRAMIV = 1829, NFOSMESA_GLGETQUERYINDEXEDIV = 1830, NFOSMESA_GLGETQUERYOBJECTI64V = 1831, NFOSMESA_GLGETQUERYOBJECTI64VEXT = 1832, NFOSMESA_GLGETQUERYOBJECTUI64V = 1833, NFOSMESA_GLGETQUERYOBJECTUI64VEXT = 1834, NFOSMESA_GLGETRENDERBUFFERPARAMETERIV = 1835, NFOSMESA_GLGETRENDERBUFFERPARAMETERIVEXT = 1836, NFOSMESA_GLGETSAMPLERPARAMETERIIV = 1837, NFOSMESA_GLGETSAMPLERPARAMETERIUIV = 1838, NFOSMESA_GLGETSAMPLERPARAMETERFV = 1839, NFOSMESA_GLGETSAMPLERPARAMETERIV = 1840, NFOSMESA_GLGETSHADERINFOLOG = 1841, NFOSMESA_GLGETSHADERPRECISIONFORMAT = 1842, NFOSMESA_GLGETSHADERSOURCE = 1843, NFOSMESA_GLGETSHADERIV = 1844, NFOSMESA_LENGLGETSTRINGI = 1845, NFOSMESA_PUTGLGETSTRINGI = 1846, NFOSMESA_GLGETSUBROUTINEINDEX = 1847, NFOSMESA_GLGETSUBROUTINEUNIFORMLOCATION = 1848, NFOSMESA_GLGETSYNCIV = 1849, NFOSMESA_GLGETTEXENVXVOES = 1850, NFOSMESA_GLGETTEXGENXVOES = 1851, NFOSMESA_GLGETTEXLEVELPARAMETERXVOES = 1852, NFOSMESA_GLGETTEXPARAMETERIIV = 1853, NFOSMESA_GLGETTEXPARAMETERIIVEXT = 1854, NFOSMESA_GLGETTEXPARAMETERIUIV = 1855, NFOSMESA_GLGETTEXPARAMETERIUIVEXT = 1856, NFOSMESA_GLGETTEXPARAMETERPOINTERVAPPLE = 1857, NFOSMESA_GLGETTEXPARAMETERXVOES = 1858, NFOSMESA_GLGETTEXTUREHANDLEARB = 1859, NFOSMESA_GLGETTEXTUREHANDLENV = 1860, NFOSMESA_GLGETTEXTUREIMAGEEXT = 1861, NFOSMESA_GLGETTEXTURELEVELPARAMETERFVEXT = 1862, NFOSMESA_GLGETTEXTURELEVELPARAMETERIVEXT = 1863, NFOSMESA_GLGETTEXTUREPARAMETERIIVEXT = 1864, NFOSMESA_GLGETTEXTUREPARAMETERIUIVEXT = 1865, NFOSMESA_GLGETTEXTUREPARAMETERFVEXT = 1866, NFOSMESA_GLGETTEXTUREPARAMETERIVEXT = 1867, NFOSMESA_GLGETTEXTURESAMPLERHANDLEARB = 1868, NFOSMESA_GLGETTEXTURESAMPLERHANDLENV = 1869, NFOSMESA_GLGETTRANSFORMFEEDBACKVARYING = 1870, NFOSMESA_GLGETTRANSFORMFEEDBACKVARYINGEXT = 1871, NFOSMESA_GLGETTRANSFORMFEEDBACKVARYINGNV = 1872, NFOSMESA_GLGETUNIFORMBLOCKINDEX = 1873, NFOSMESA_GLGETUNIFORMBUFFERSIZEEXT = 1874, NFOSMESA_GLGETUNIFORMINDICES = 1875, NFOSMESA_GLGETUNIFORMLOCATION = 1876, NFOSMESA_GLGETUNIFORMOFFSETEXT = 1877, NFOSMESA_GLGETUNIFORMSUBROUTINEUIV = 1878, NFOSMESA_GLGETUNIFORMDV = 1879, NFOSMESA_GLGETUNIFORMFV = 1880, NFOSMESA_GLGETUNIFORMI64VNV = 1881, NFOSMESA_GLGETUNIFORMIV = 1882, NFOSMESA_GLGETUNIFORMUI64VNV = 1883, NFOSMESA_GLGETUNIFORMUIV = 1884, NFOSMESA_GLGETUNIFORMUIVEXT = 1885, NFOSMESA_GLGETVARYINGLOCATIONNV = 1886, NFOSMESA_GLGETVERTEXARRAYINTEGERI_VEXT = 1887, NFOSMESA_GLGETVERTEXARRAYINTEGERVEXT = 1888, NFOSMESA_GLGETVERTEXARRAYPOINTERI_VEXT = 1889, NFOSMESA_GLGETVERTEXARRAYPOINTERVEXT = 1890, NFOSMESA_GLGETVERTEXATTRIBIIV = 1891, NFOSMESA_GLGETVERTEXATTRIBIIVEXT = 1892, NFOSMESA_GLGETVERTEXATTRIBIUIV = 1893, NFOSMESA_GLGETVERTEXATTRIBIUIVEXT = 1894, NFOSMESA_GLGETVERTEXATTRIBLDV = 1895, NFOSMESA_GLGETVERTEXATTRIBLDVEXT = 1896, NFOSMESA_GLGETVERTEXATTRIBLI64VNV = 1897, NFOSMESA_GLGETVERTEXATTRIBLUI64VARB = 1898, NFOSMESA_GLGETVERTEXATTRIBLUI64VNV = 1899, NFOSMESA_GLGETVERTEXATTRIBPOINTERV = 1900, NFOSMESA_GLGETVERTEXATTRIBDV = 1901, NFOSMESA_GLGETVERTEXATTRIBFV = 1902, NFOSMESA_GLGETVERTEXATTRIBIV = 1903, NFOSMESA_GLGETVIDEOCAPTURESTREAMDVNV = 1904, NFOSMESA_GLGETVIDEOCAPTURESTREAMFVNV = 1905, NFOSMESA_GLGETVIDEOCAPTURESTREAMIVNV = 1906, NFOSMESA_GLGETVIDEOCAPTUREIVNV = 1907, NFOSMESA_GLGETVIDEOI64VNV = 1908, NFOSMESA_GLGETVIDEOIVNV = 1909, NFOSMESA_GLGETVIDEOUI64VNV = 1910, NFOSMESA_GLGETVIDEOUIVNV = 1911, NFOSMESA_GLGETNCOLORTABLEARB = 1912, NFOSMESA_GLGETNCOMPRESSEDTEXIMAGEARB = 1913, NFOSMESA_GLGETNCONVOLUTIONFILTERARB = 1914, NFOSMESA_GLGETNHISTOGRAMARB = 1915, NFOSMESA_GLGETNMAPDVARB = 1916, NFOSMESA_GLGETNMAPFVARB = 1917, NFOSMESA_GLGETNMAPIVARB = 1918, NFOSMESA_GLGETNMINMAXARB = 1919, NFOSMESA_GLGETNPIXELMAPFVARB = 1920, NFOSMESA_GLGETNPIXELMAPUIVARB = 1921, NFOSMESA_GLGETNPIXELMAPUSVARB = 1922, NFOSMESA_GLGETNPOLYGONSTIPPLEARB = 1923, NFOSMESA_GLGETNSEPARABLEFILTERARB = 1924, NFOSMESA_GLGETNTEXIMAGEARB = 1925, NFOSMESA_GLGETNUNIFORMDVARB = 1926, NFOSMESA_GLGETNUNIFORMFVARB = 1927, NFOSMESA_GLGETNUNIFORMIVARB = 1928, NFOSMESA_GLGETNUNIFORMUIVARB = 1929, NFOSMESA_GLIMPORTSYNCEXT = 1930, NFOSMESA_GLINDEXFORMATNV = 1931, NFOSMESA_GLINDEXXOES = 1932, NFOSMESA_GLINDEXXVOES = 1933, NFOSMESA_GLINSERTEVENTMARKEREXT = 1934, NFOSMESA_GLINTERPOLATEPATHSNV = 1935, NFOSMESA_GLINVALIDATEBUFFERDATA = 1936, NFOSMESA_GLINVALIDATEBUFFERSUBDATA = 1937, NFOSMESA_GLINVALIDATEFRAMEBUFFER = 1938, NFOSMESA_GLINVALIDATESUBFRAMEBUFFER = 1939, NFOSMESA_GLINVALIDATETEXIMAGE = 1940, NFOSMESA_GLINVALIDATETEXSUBIMAGE = 1941, NFOSMESA_GLISBUFFERRESIDENTNV = 1942, NFOSMESA_GLISENABLEDINDEXEDEXT = 1943, NFOSMESA_GLISENABLEDI = 1944, NFOSMESA_GLISFRAMEBUFFER = 1945, NFOSMESA_GLISFRAMEBUFFEREXT = 1946, NFOSMESA_GLISIMAGEHANDLERESIDENTARB = 1947, NFOSMESA_GLISIMAGEHANDLERESIDENTNV = 1948, NFOSMESA_GLISNAMEAMD = 1949, NFOSMESA_GLISNAMEDBUFFERRESIDENTNV = 1950, NFOSMESA_GLISNAMEDSTRINGARB = 1951, NFOSMESA_GLISPATHNV = 1952, NFOSMESA_GLISPOINTINFILLPATHNV = 1953, NFOSMESA_GLISPOINTINSTROKEPATHNV = 1954, NFOSMESA_GLISPROGRAM = 1955, NFOSMESA_GLISPROGRAMPIPELINE = 1956, NFOSMESA_GLISRENDERBUFFER = 1957, NFOSMESA_GLISRENDERBUFFEREXT = 1958, NFOSMESA_GLISSAMPLER = 1959, NFOSMESA_GLISSHADER = 1960, NFOSMESA_GLISSYNC = 1961, NFOSMESA_GLISTEXTUREHANDLERESIDENTARB = 1962, NFOSMESA_GLISTEXTUREHANDLERESIDENTNV = 1963, NFOSMESA_GLISTRANSFORMFEEDBACK = 1964, NFOSMESA_GLISTRANSFORMFEEDBACKNV = 1965, NFOSMESA_GLISVERTEXARRAY = 1966, NFOSMESA_GLISVERTEXATTRIBENABLEDAPPLE = 1967, NFOSMESA_GLLABELOBJECTEXT = 1968, NFOSMESA_GLLIGHTMODELXOES = 1969, NFOSMESA_GLLIGHTMODELXVOES = 1970, NFOSMESA_GLLIGHTXOES = 1971, NFOSMESA_GLLIGHTXVOES = 1972, NFOSMESA_GLLINEWIDTHXOES = 1973, NFOSMESA_GLLINKPROGRAM = 1974, NFOSMESA_GLLOADMATRIXXOES = 1975, NFOSMESA_GLLOADTRANSPOSEMATRIXXOES = 1976, NFOSMESA_GLMAKEBUFFERNONRESIDENTNV = 1977, NFOSMESA_GLMAKEBUFFERRESIDENTNV = 1978, NFOSMESA_GLMAKEIMAGEHANDLENONRESIDENTARB = 1979, NFOSMESA_GLMAKEIMAGEHANDLENONRESIDENTNV = 1980, NFOSMESA_GLMAKEIMAGEHANDLERESIDENTARB = 1981, NFOSMESA_GLMAKEIMAGEHANDLERESIDENTNV = 1982, NFOSMESA_GLMAKENAMEDBUFFERNONRESIDENTNV = 1983, NFOSMESA_GLMAKENAMEDBUFFERRESIDENTNV = 1984, NFOSMESA_GLMAKETEXTUREHANDLENONRESIDENTARB = 1985, NFOSMESA_GLMAKETEXTUREHANDLENONRESIDENTNV = 1986, NFOSMESA_GLMAKETEXTUREHANDLERESIDENTARB = 1987, NFOSMESA_GLMAKETEXTUREHANDLERESIDENTNV = 1988, NFOSMESA_GLMAP1XOES = 1989, NFOSMESA_GLMAP2XOES = 1990, NFOSMESA_GLMAPBUFFERRANGE = 1991, NFOSMESA_GLMAPGRID1XOES = 1992, NFOSMESA_GLMAPGRID2XOES = 1993, NFOSMESA_GLMAPNAMEDBUFFEREXT = 1994, NFOSMESA_GLMAPNAMEDBUFFERRANGEEXT = 1995, NFOSMESA_GLMAPTEXTURE2DINTEL = 1996, NFOSMESA_GLMAPVERTEXATTRIB1DAPPLE = 1997, NFOSMESA_GLMAPVERTEXATTRIB1FAPPLE = 1998, NFOSMESA_GLMAPVERTEXATTRIB2DAPPLE = 1999, NFOSMESA_GLMAPVERTEXATTRIB2FAPPLE = 2000, NFOSMESA_GLMATERIALXOES = 2001, NFOSMESA_GLMATERIALXVOES = 2002, NFOSMESA_GLMATRIXFRUSTUMEXT = 2003, NFOSMESA_GLMATRIXLOADIDENTITYEXT = 2004, NFOSMESA_GLMATRIXLOADTRANSPOSEDEXT = 2005, NFOSMESA_GLMATRIXLOADTRANSPOSEFEXT = 2006, NFOSMESA_GLMATRIXLOADDEXT = 2007, NFOSMESA_GLMATRIXLOADFEXT = 2008, NFOSMESA_GLMATRIXMULTTRANSPOSEDEXT = 2009, NFOSMESA_GLMATRIXMULTTRANSPOSEFEXT = 2010, NFOSMESA_GLMATRIXMULTDEXT = 2011, NFOSMESA_GLMATRIXMULTFEXT = 2012, NFOSMESA_GLMATRIXORTHOEXT = 2013, NFOSMESA_GLMATRIXPOPEXT = 2014, NFOSMESA_GLMATRIXPUSHEXT = 2015, NFOSMESA_GLMATRIXROTATEDEXT = 2016, NFOSMESA_GLMATRIXROTATEFEXT = 2017, NFOSMESA_GLMATRIXSCALEDEXT = 2018, NFOSMESA_GLMATRIXSCALEFEXT = 2019, NFOSMESA_GLMATRIXTRANSLATEDEXT = 2020, NFOSMESA_GLMATRIXTRANSLATEFEXT = 2021, NFOSMESA_GLMEMORYBARRIER = 2022, NFOSMESA_GLMEMORYBARRIEREXT = 2023, NFOSMESA_GLMINSAMPLESHADING = 2024, NFOSMESA_GLMINSAMPLESHADINGARB = 2025, NFOSMESA_GLMULTMATRIXXOES = 2026, NFOSMESA_GLMULTTRANSPOSEMATRIXXOES = 2027, NFOSMESA_GLMULTIDRAWARRAYSINDIRECT = 2028, NFOSMESA_GLMULTIDRAWARRAYSINDIRECTAMD = 2029, NFOSMESA_GLMULTIDRAWARRAYSINDIRECTBINDLESSNV = 2030, NFOSMESA_GLMULTIDRAWARRAYSINDIRECTCOUNTARB = 2031, NFOSMESA_GLMULTIDRAWELEMENTSBASEVERTEX = 2032, NFOSMESA_GLMULTIDRAWELEMENTSINDIRECT = 2033, NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTAMD = 2034, NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTBINDLESSNV = 2035, NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTCOUNTARB = 2036, NFOSMESA_GLMULTITEXBUFFEREXT = 2037, NFOSMESA_GLMULTITEXCOORD1BOES = 2038, NFOSMESA_GLMULTITEXCOORD1BVOES = 2039, NFOSMESA_GLMULTITEXCOORD1XOES = 2040, NFOSMESA_GLMULTITEXCOORD1XVOES = 2041, NFOSMESA_GLMULTITEXCOORD2BOES = 2042, NFOSMESA_GLMULTITEXCOORD2BVOES = 2043, NFOSMESA_GLMULTITEXCOORD2XOES = 2044, NFOSMESA_GLMULTITEXCOORD2XVOES = 2045, NFOSMESA_GLMULTITEXCOORD3BOES = 2046, NFOSMESA_GLMULTITEXCOORD3BVOES = 2047, NFOSMESA_GLMULTITEXCOORD3XOES = 2048, NFOSMESA_GLMULTITEXCOORD3XVOES = 2049, NFOSMESA_GLMULTITEXCOORD4BOES = 2050, NFOSMESA_GLMULTITEXCOORD4BVOES = 2051, NFOSMESA_GLMULTITEXCOORD4XOES = 2052, NFOSMESA_GLMULTITEXCOORD4XVOES = 2053, NFOSMESA_GLMULTITEXCOORDP1UI = 2054, NFOSMESA_GLMULTITEXCOORDP1UIV = 2055, NFOSMESA_GLMULTITEXCOORDP2UI = 2056, NFOSMESA_GLMULTITEXCOORDP2UIV = 2057, NFOSMESA_GLMULTITEXCOORDP3UI = 2058, NFOSMESA_GLMULTITEXCOORDP3UIV = 2059, NFOSMESA_GLMULTITEXCOORDP4UI = 2060, NFOSMESA_GLMULTITEXCOORDP4UIV = 2061, NFOSMESA_GLMULTITEXCOORDPOINTEREXT = 2062, NFOSMESA_GLMULTITEXENVFEXT = 2063, NFOSMESA_GLMULTITEXENVFVEXT = 2064, NFOSMESA_GLMULTITEXENVIEXT = 2065, NFOSMESA_GLMULTITEXENVIVEXT = 2066, NFOSMESA_GLMULTITEXGENDEXT = 2067, NFOSMESA_GLMULTITEXGENDVEXT = 2068, NFOSMESA_GLMULTITEXGENFEXT = 2069, NFOSMESA_GLMULTITEXGENFVEXT = 2070, NFOSMESA_GLMULTITEXGENIEXT = 2071, NFOSMESA_GLMULTITEXGENIVEXT = 2072, NFOSMESA_GLMULTITEXIMAGE1DEXT = 2073, NFOSMESA_GLMULTITEXIMAGE2DEXT = 2074, NFOSMESA_GLMULTITEXIMAGE3DEXT = 2075, NFOSMESA_GLMULTITEXPARAMETERIIVEXT = 2076, NFOSMESA_GLMULTITEXPARAMETERIUIVEXT = 2077, NFOSMESA_GLMULTITEXPARAMETERFEXT = 2078, NFOSMESA_GLMULTITEXPARAMETERFVEXT = 2079, NFOSMESA_GLMULTITEXPARAMETERIEXT = 2080, NFOSMESA_GLMULTITEXPARAMETERIVEXT = 2081, NFOSMESA_GLMULTITEXRENDERBUFFEREXT = 2082, NFOSMESA_GLMULTITEXSUBIMAGE1DEXT = 2083, NFOSMESA_GLMULTITEXSUBIMAGE2DEXT = 2084, NFOSMESA_GLMULTITEXSUBIMAGE3DEXT = 2085, NFOSMESA_GLNAMEDBUFFERDATAEXT = 2086, NFOSMESA_GLNAMEDBUFFERSTORAGEEXT = 2087, NFOSMESA_GLNAMEDBUFFERSUBDATAEXT = 2088, NFOSMESA_GLNAMEDCOPYBUFFERSUBDATAEXT = 2089, NFOSMESA_GLNAMEDFRAMEBUFFERPARAMETERIEXT = 2090, NFOSMESA_GLNAMEDFRAMEBUFFERRENDERBUFFEREXT = 2091, NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE1DEXT = 2092, NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE2DEXT = 2093, NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE3DEXT = 2094, NFOSMESA_GLNAMEDFRAMEBUFFERTEXTUREEXT = 2095, NFOSMESA_GLNAMEDFRAMEBUFFERTEXTUREFACEEXT = 2096, NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURELAYEREXT = 2097, NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4DEXT = 2098, NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4DVEXT = 2099, NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4FEXT = 2100, NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETER4FVEXT = 2101, NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4IEXT = 2102, NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4IVEXT = 2103, NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4UIEXT = 2104, NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERI4UIVEXT = 2105, NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERS4FVEXT = 2106, NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERSI4IVEXT = 2107, NFOSMESA_GLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXT = 2108, NFOSMESA_GLNAMEDPROGRAMSTRINGEXT = 2109, NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEEXT = 2110, NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXT = 2111, NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXT = 2112, NFOSMESA_GLNAMEDSTRINGARB = 2113, NFOSMESA_GLNORMAL3XOES = 2114, NFOSMESA_GLNORMAL3XVOES = 2115, NFOSMESA_GLNORMALFORMATNV = 2116, NFOSMESA_GLNORMALP3UI = 2117, NFOSMESA_GLNORMALP3UIV = 2118, NFOSMESA_GLOBJECTLABEL = 2119, NFOSMESA_GLOBJECTPTRLABEL = 2120, NFOSMESA_GLOBJECTPURGEABLEAPPLE = 2121, NFOSMESA_GLOBJECTUNPURGEABLEAPPLE = 2122, NFOSMESA_GLORTHOFOES = 2123, NFOSMESA_GLORTHOXOES = 2124, NFOSMESA_GLPASSTHROUGHXOES = 2125, NFOSMESA_GLPATCHPARAMETERFV = 2126, NFOSMESA_GLPATCHPARAMETERI = 2127, NFOSMESA_GLPATHCOLORGENNV = 2128, NFOSMESA_GLPATHCOMMANDSNV = 2129, NFOSMESA_GLPATHCOORDSNV = 2130, NFOSMESA_GLPATHCOVERDEPTHFUNCNV = 2131, NFOSMESA_GLPATHDASHARRAYNV = 2132, NFOSMESA_GLPATHFOGGENNV = 2133, NFOSMESA_GLPATHGLYPHRANGENV = 2134, NFOSMESA_GLPATHGLYPHSNV = 2135, NFOSMESA_GLPATHPARAMETERFNV = 2136, NFOSMESA_GLPATHPARAMETERFVNV = 2137, NFOSMESA_GLPATHPARAMETERINV = 2138, NFOSMESA_GLPATHPARAMETERIVNV = 2139, NFOSMESA_GLPATHSTENCILDEPTHOFFSETNV = 2140, NFOSMESA_GLPATHSTENCILFUNCNV = 2141, NFOSMESA_GLPATHSTRINGNV = 2142, NFOSMESA_GLPATHSUBCOMMANDSNV = 2143, NFOSMESA_GLPATHSUBCOORDSNV = 2144, NFOSMESA_GLPATHTEXGENNV = 2145, NFOSMESA_GLPAUSETRANSFORMFEEDBACK = 2146, NFOSMESA_GLPAUSETRANSFORMFEEDBACKNV = 2147, NFOSMESA_GLPIXELMAPX = 2148, NFOSMESA_GLPIXELSTOREX = 2149, NFOSMESA_GLPIXELTRANSFERXOES = 2150, NFOSMESA_GLPIXELZOOMXOES = 2151, NFOSMESA_GLPOINTALONGPATHNV = 2152, NFOSMESA_GLPOINTPARAMETERXVOES = 2153, NFOSMESA_GLPOINTSIZEPOINTERAPPLE = 2154, NFOSMESA_GLPOINTSIZEXOES = 2155, NFOSMESA_GLPOLYGONOFFSETXOES = 2156, NFOSMESA_GLPOPDEBUGGROUP = 2157, NFOSMESA_GLPOPGROUPMARKEREXT = 2158, NFOSMESA_GLPRESENTFRAMEDUALFILLNV = 2159, NFOSMESA_GLPRESENTFRAMEKEYEDNV = 2160, NFOSMESA_GLPRIMITIVERESTARTINDEX = 2161, NFOSMESA_GLPRIORITIZETEXTURESXOES = 2162, NFOSMESA_GLPROGRAMBINARY = 2163, NFOSMESA_GLPROGRAMBUFFERPARAMETERSIIVNV = 2164, NFOSMESA_GLPROGRAMBUFFERPARAMETERSIUIVNV = 2165, NFOSMESA_GLPROGRAMBUFFERPARAMETERSFVNV = 2166, NFOSMESA_GLPROGRAMCALLBACKMESA = 2167, NFOSMESA_GLPROGRAMENVPARAMETERI4INV = 2168, NFOSMESA_GLPROGRAMENVPARAMETERI4IVNV = 2169, NFOSMESA_GLPROGRAMENVPARAMETERI4UINV = 2170, NFOSMESA_GLPROGRAMENVPARAMETERI4UIVNV = 2171, NFOSMESA_GLPROGRAMENVPARAMETERS4FVEXT = 2172, NFOSMESA_GLPROGRAMENVPARAMETERSI4IVNV = 2173, NFOSMESA_GLPROGRAMENVPARAMETERSI4UIVNV = 2174, NFOSMESA_GLPROGRAMLOCALPARAMETERI4INV = 2175, NFOSMESA_GLPROGRAMLOCALPARAMETERI4IVNV = 2176, NFOSMESA_GLPROGRAMLOCALPARAMETERI4UINV = 2177, NFOSMESA_GLPROGRAMLOCALPARAMETERI4UIVNV = 2178, NFOSMESA_GLPROGRAMLOCALPARAMETERS4FVEXT = 2179, NFOSMESA_GLPROGRAMLOCALPARAMETERSI4IVNV = 2180, NFOSMESA_GLPROGRAMLOCALPARAMETERSI4UIVNV = 2181, NFOSMESA_GLPROGRAMPARAMETERI = 2182, NFOSMESA_GLPROGRAMPARAMETERIARB = 2183, NFOSMESA_GLPROGRAMPARAMETERIEXT = 2184, NFOSMESA_GLPROGRAMSUBROUTINEPARAMETERSUIVNV = 2185, NFOSMESA_GLPROGRAMUNIFORM1D = 2186, NFOSMESA_GLPROGRAMUNIFORM1DEXT = 2187, NFOSMESA_GLPROGRAMUNIFORM1DV = 2188, NFOSMESA_GLPROGRAMUNIFORM1DVEXT = 2189, NFOSMESA_GLPROGRAMUNIFORM1F = 2190, NFOSMESA_GLPROGRAMUNIFORM1FEXT = 2191, NFOSMESA_GLPROGRAMUNIFORM1FV = 2192, NFOSMESA_GLPROGRAMUNIFORM1FVEXT = 2193, NFOSMESA_GLPROGRAMUNIFORM1I = 2194, NFOSMESA_GLPROGRAMUNIFORM1I64NV = 2195, NFOSMESA_GLPROGRAMUNIFORM1I64VNV = 2196, NFOSMESA_GLPROGRAMUNIFORM1IEXT = 2197, NFOSMESA_GLPROGRAMUNIFORM1IV = 2198, NFOSMESA_GLPROGRAMUNIFORM1IVEXT = 2199, NFOSMESA_GLPROGRAMUNIFORM1UI = 2200, NFOSMESA_GLPROGRAMUNIFORM1UI64NV = 2201, NFOSMESA_GLPROGRAMUNIFORM1UI64VNV = 2202, NFOSMESA_GLPROGRAMUNIFORM1UIEXT = 2203, NFOSMESA_GLPROGRAMUNIFORM1UIV = 2204, NFOSMESA_GLPROGRAMUNIFORM1UIVEXT = 2205, NFOSMESA_GLPROGRAMUNIFORM2D = 2206, NFOSMESA_GLPROGRAMUNIFORM2DEXT = 2207, NFOSMESA_GLPROGRAMUNIFORM2DV = 2208, NFOSMESA_GLPROGRAMUNIFORM2DVEXT = 2209, NFOSMESA_GLPROGRAMUNIFORM2F = 2210, NFOSMESA_GLPROGRAMUNIFORM2FEXT = 2211, NFOSMESA_GLPROGRAMUNIFORM2FV = 2212, NFOSMESA_GLPROGRAMUNIFORM2FVEXT = 2213, NFOSMESA_GLPROGRAMUNIFORM2I = 2214, NFOSMESA_GLPROGRAMUNIFORM2I64NV = 2215, NFOSMESA_GLPROGRAMUNIFORM2I64VNV = 2216, NFOSMESA_GLPROGRAMUNIFORM2IEXT = 2217, NFOSMESA_GLPROGRAMUNIFORM2IV = 2218, NFOSMESA_GLPROGRAMUNIFORM2IVEXT = 2219, NFOSMESA_GLPROGRAMUNIFORM2UI = 2220, NFOSMESA_GLPROGRAMUNIFORM2UI64NV = 2221, NFOSMESA_GLPROGRAMUNIFORM2UI64VNV = 2222, NFOSMESA_GLPROGRAMUNIFORM2UIEXT = 2223, NFOSMESA_GLPROGRAMUNIFORM2UIV = 2224, NFOSMESA_GLPROGRAMUNIFORM2UIVEXT = 2225, NFOSMESA_GLPROGRAMUNIFORM3D = 2226, NFOSMESA_GLPROGRAMUNIFORM3DEXT = 2227, NFOSMESA_GLPROGRAMUNIFORM3DV = 2228, NFOSMESA_GLPROGRAMUNIFORM3DVEXT = 2229, NFOSMESA_GLPROGRAMUNIFORM3F = 2230, NFOSMESA_GLPROGRAMUNIFORM3FEXT = 2231, NFOSMESA_GLPROGRAMUNIFORM3FV = 2232, NFOSMESA_GLPROGRAMUNIFORM3FVEXT = 2233, NFOSMESA_GLPROGRAMUNIFORM3I = 2234, NFOSMESA_GLPROGRAMUNIFORM3I64NV = 2235, NFOSMESA_GLPROGRAMUNIFORM3I64VNV = 2236, NFOSMESA_GLPROGRAMUNIFORM3IEXT = 2237, NFOSMESA_GLPROGRAMUNIFORM3IV = 2238, NFOSMESA_GLPROGRAMUNIFORM3IVEXT = 2239, NFOSMESA_GLPROGRAMUNIFORM3UI = 2240, NFOSMESA_GLPROGRAMUNIFORM3UI64NV = 2241, NFOSMESA_GLPROGRAMUNIFORM3UI64VNV = 2242, NFOSMESA_GLPROGRAMUNIFORM3UIEXT = 2243, NFOSMESA_GLPROGRAMUNIFORM3UIV = 2244, NFOSMESA_GLPROGRAMUNIFORM3UIVEXT = 2245, NFOSMESA_GLPROGRAMUNIFORM4D = 2246, NFOSMESA_GLPROGRAMUNIFORM4DEXT = 2247, NFOSMESA_GLPROGRAMUNIFORM4DV = 2248, NFOSMESA_GLPROGRAMUNIFORM4DVEXT = 2249, NFOSMESA_GLPROGRAMUNIFORM4F = 2250, NFOSMESA_GLPROGRAMUNIFORM4FEXT = 2251, NFOSMESA_GLPROGRAMUNIFORM4FV = 2252, NFOSMESA_GLPROGRAMUNIFORM4FVEXT = 2253, NFOSMESA_GLPROGRAMUNIFORM4I = 2254, NFOSMESA_GLPROGRAMUNIFORM4I64NV = 2255, NFOSMESA_GLPROGRAMUNIFORM4I64VNV = 2256, NFOSMESA_GLPROGRAMUNIFORM4IEXT = 2257, NFOSMESA_GLPROGRAMUNIFORM4IV = 2258, NFOSMESA_GLPROGRAMUNIFORM4IVEXT = 2259, NFOSMESA_GLPROGRAMUNIFORM4UI = 2260, NFOSMESA_GLPROGRAMUNIFORM4UI64NV = 2261, NFOSMESA_GLPROGRAMUNIFORM4UI64VNV = 2262, NFOSMESA_GLPROGRAMUNIFORM4UIEXT = 2263, NFOSMESA_GLPROGRAMUNIFORM4UIV = 2264, NFOSMESA_GLPROGRAMUNIFORM4UIVEXT = 2265, NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64ARB = 2266, NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64NV = 2267, NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64VARB = 2268, NFOSMESA_GLPROGRAMUNIFORMHANDLEUI64VNV = 2269, NFOSMESA_GLPROGRAMUNIFORMMATRIX2DV = 2270, NFOSMESA_GLPROGRAMUNIFORMMATRIX2DVEXT = 2271, NFOSMESA_GLPROGRAMUNIFORMMATRIX2FV = 2272, NFOSMESA_GLPROGRAMUNIFORMMATRIX2FVEXT = 2273, NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3DV = 2274, NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3DVEXT = 2275, NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3FV = 2276, NFOSMESA_GLPROGRAMUNIFORMMATRIX2X3FVEXT = 2277, NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4DV = 2278, NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4DVEXT = 2279, NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4FV = 2280, NFOSMESA_GLPROGRAMUNIFORMMATRIX2X4FVEXT = 2281, NFOSMESA_GLPROGRAMUNIFORMMATRIX3DV = 2282, NFOSMESA_GLPROGRAMUNIFORMMATRIX3DVEXT = 2283, NFOSMESA_GLPROGRAMUNIFORMMATRIX3FV = 2284, NFOSMESA_GLPROGRAMUNIFORMMATRIX3FVEXT = 2285, NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2DV = 2286, NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2DVEXT = 2287, NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2FV = 2288, NFOSMESA_GLPROGRAMUNIFORMMATRIX3X2FVEXT = 2289, NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4DV = 2290, NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4DVEXT = 2291, NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4FV = 2292, NFOSMESA_GLPROGRAMUNIFORMMATRIX3X4FVEXT = 2293, NFOSMESA_GLPROGRAMUNIFORMMATRIX4DV = 2294, NFOSMESA_GLPROGRAMUNIFORMMATRIX4DVEXT = 2295, NFOSMESA_GLPROGRAMUNIFORMMATRIX4FV = 2296, NFOSMESA_GLPROGRAMUNIFORMMATRIX4FVEXT = 2297, NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2DV = 2298, NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2DVEXT = 2299, NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2FV = 2300, NFOSMESA_GLPROGRAMUNIFORMMATRIX4X2FVEXT = 2301, NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3DV = 2302, NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3DVEXT = 2303, NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3FV = 2304, NFOSMESA_GLPROGRAMUNIFORMMATRIX4X3FVEXT = 2305, NFOSMESA_GLPROGRAMUNIFORMUI64NV = 2306, NFOSMESA_GLPROGRAMUNIFORMUI64VNV = 2307, NFOSMESA_GLPROGRAMVERTEXLIMITNV = 2308, NFOSMESA_GLPROVOKINGVERTEX = 2309, NFOSMESA_GLPROVOKINGVERTEXEXT = 2310, NFOSMESA_GLPUSHCLIENTATTRIBDEFAULTEXT = 2311, NFOSMESA_GLPUSHDEBUGGROUP = 2312, NFOSMESA_GLPUSHGROUPMARKEREXT = 2313, NFOSMESA_GLQUERYCOUNTER = 2314, NFOSMESA_GLQUERYMATRIXXOES = 2315, NFOSMESA_GLQUERYOBJECTPARAMETERUIAMD = 2316, NFOSMESA_GLRASTERPOS2XOES = 2317, NFOSMESA_GLRASTERPOS2XVOES = 2318, NFOSMESA_GLRASTERPOS3XOES = 2319, NFOSMESA_GLRASTERPOS3XVOES = 2320, NFOSMESA_GLRASTERPOS4XOES = 2321, NFOSMESA_GLRASTERPOS4XVOES = 2322, NFOSMESA_GLREADNPIXELSARB = 2323, NFOSMESA_GLRECTXOES = 2324, NFOSMESA_GLRECTXVOES = 2325, NFOSMESA_GLRELEASESHADERCOMPILER = 2326, NFOSMESA_GLRENDERBUFFERSTORAGE = 2327, NFOSMESA_GLRENDERBUFFERSTORAGEEXT = 2328, NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLE = 2329, NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENV = 2330, NFOSMESA_GLRENDERBUFFERSTORAGEMULTISAMPLEEXT = 2331, NFOSMESA_GLRESUMETRANSFORMFEEDBACK = 2332, NFOSMESA_GLRESUMETRANSFORMFEEDBACKNV = 2333, NFOSMESA_GLROTATEXOES = 2334, NFOSMESA_GLSAMPLECOVERAGEOES = 2335, NFOSMESA_GLSAMPLEMASKINDEXEDNV = 2336, NFOSMESA_GLSAMPLEMASKI = 2337, NFOSMESA_GLSAMPLEPASS = 2338, NFOSMESA_GLSAMPLEPASSARB = 2339, NFOSMESA_GLSAMPLERPARAMETERIIV = 2340, NFOSMESA_GLSAMPLERPARAMETERIUIV = 2341, NFOSMESA_GLSAMPLERPARAMETERF = 2342, NFOSMESA_GLSAMPLERPARAMETERFV = 2343, NFOSMESA_GLSAMPLERPARAMETERI = 2344, NFOSMESA_GLSAMPLERPARAMETERIV = 2345, NFOSMESA_GLSCALEXOES = 2346, NFOSMESA_GLSCISSORARRAYV = 2347, NFOSMESA_GLSCISSORINDEXED = 2348, NFOSMESA_GLSCISSORINDEXEDV = 2349, NFOSMESA_GLSECONDARYCOLORFORMATNV = 2350, NFOSMESA_GLSECONDARYCOLORP3UI = 2351, NFOSMESA_GLSECONDARYCOLORP3UIV = 2352, NFOSMESA_GLSELECTPERFMONITORCOUNTERSAMD = 2353, NFOSMESA_GLSETMULTISAMPLEFVAMD = 2354, NFOSMESA_GLSHADERBINARY = 2355, NFOSMESA_GLSHADERSOURCE = 2356, NFOSMESA_GLSHADERSTORAGEBLOCKBINDING = 2357, NFOSMESA_GLSTENCILCLEARTAGEXT = 2358, NFOSMESA_GLSTENCILFILLPATHINSTANCEDNV = 2359, NFOSMESA_GLSTENCILFILLPATHNV = 2360, NFOSMESA_GLSTENCILFUNCSEPARATE = 2361, NFOSMESA_GLSTENCILMASKSEPARATE = 2362, NFOSMESA_GLSTENCILOPSEPARATE = 2363, NFOSMESA_GLSTENCILOPVALUEAMD = 2364, NFOSMESA_GLSTENCILSTROKEPATHINSTANCEDNV = 2365, NFOSMESA_GLSTENCILSTROKEPATHNV = 2366, NFOSMESA_GLSTRINGMARKERGREMEDY = 2367, NFOSMESA_GLSWAPAPPLE = 2368, NFOSMESA_GLSYNCTEXTUREINTEL = 2369, NFOSMESA_GLTESSELLATIONFACTORAMD = 2370, NFOSMESA_GLTESSELLATIONMODEAMD = 2371, NFOSMESA_GLTEXBUFFER = 2372, NFOSMESA_GLTEXBUFFERARB = 2373, NFOSMESA_GLTEXBUFFEREXT = 2374, NFOSMESA_GLTEXBUFFERRANGE = 2375, NFOSMESA_GLTEXCOORD1BOES = 2376, NFOSMESA_GLTEXCOORD1BVOES = 2377, NFOSMESA_GLTEXCOORD1XOES = 2378, NFOSMESA_GLTEXCOORD1XVOES = 2379, NFOSMESA_GLTEXCOORD2BOES = 2380, NFOSMESA_GLTEXCOORD2BVOES = 2381, NFOSMESA_GLTEXCOORD2XOES = 2382, NFOSMESA_GLTEXCOORD2XVOES = 2383, NFOSMESA_GLTEXCOORD3BOES = 2384, NFOSMESA_GLTEXCOORD3BVOES = 2385, NFOSMESA_GLTEXCOORD3XOES = 2386, NFOSMESA_GLTEXCOORD3XVOES = 2387, NFOSMESA_GLTEXCOORD4BOES = 2388, NFOSMESA_GLTEXCOORD4BVOES = 2389, NFOSMESA_GLTEXCOORD4XOES = 2390, NFOSMESA_GLTEXCOORD4XVOES = 2391, NFOSMESA_GLTEXCOORDFORMATNV = 2392, NFOSMESA_GLTEXCOORDP1UI = 2393, NFOSMESA_GLTEXCOORDP1UIV = 2394, NFOSMESA_GLTEXCOORDP2UI = 2395, NFOSMESA_GLTEXCOORDP2UIV = 2396, NFOSMESA_GLTEXCOORDP3UI = 2397, NFOSMESA_GLTEXCOORDP3UIV = 2398, NFOSMESA_GLTEXCOORDP4UI = 2399, NFOSMESA_GLTEXCOORDP4UIV = 2400, NFOSMESA_GLTEXENVXOES = 2401, NFOSMESA_GLTEXENVXVOES = 2402, NFOSMESA_GLTEXGENXOES = 2403, NFOSMESA_GLTEXGENXVOES = 2404, NFOSMESA_GLTEXIMAGE2DMULTISAMPLE = 2405, NFOSMESA_GLTEXIMAGE2DMULTISAMPLECOVERAGENV = 2406, NFOSMESA_GLTEXIMAGE3DMULTISAMPLE = 2407, NFOSMESA_GLTEXIMAGE3DMULTISAMPLECOVERAGENV = 2408, NFOSMESA_GLTEXPAGECOMMITMENTARB = 2409, NFOSMESA_GLTEXPARAMETERIIV = 2410, NFOSMESA_GLTEXPARAMETERIIVEXT = 2411, NFOSMESA_GLTEXPARAMETERIUIV = 2412, NFOSMESA_GLTEXPARAMETERIUIVEXT = 2413, NFOSMESA_GLTEXPARAMETERXOES = 2414, NFOSMESA_GLTEXPARAMETERXVOES = 2415, NFOSMESA_GLTEXRENDERBUFFERNV = 2416, NFOSMESA_GLTEXSCISSORFUNCINTEL = 2417, NFOSMESA_GLTEXSCISSORINTEL = 2418, NFOSMESA_GLTEXSTORAGE1D = 2419, NFOSMESA_GLTEXSTORAGE2D = 2420, NFOSMESA_GLTEXSTORAGE2DMULTISAMPLE = 2421, NFOSMESA_GLTEXSTORAGE3D = 2422, NFOSMESA_GLTEXSTORAGE3DMULTISAMPLE = 2423, NFOSMESA_GLTEXSTORAGESPARSEAMD = 2424, NFOSMESA_GLTEXTUREBARRIERNV = 2425, NFOSMESA_GLTEXTUREBUFFEREXT = 2426, NFOSMESA_GLTEXTUREBUFFERRANGEEXT = 2427, NFOSMESA_GLTEXTUREFOGSGIX = 2428, NFOSMESA_GLTEXTUREIMAGE1DEXT = 2429, NFOSMESA_GLTEXTUREIMAGE2DEXT = 2430, NFOSMESA_GLTEXTUREIMAGE2DMULTISAMPLECOVERAGENV = 2431, NFOSMESA_GLTEXTUREIMAGE2DMULTISAMPLENV = 2432, NFOSMESA_GLTEXTUREIMAGE3DEXT = 2433, NFOSMESA_GLTEXTUREIMAGE3DMULTISAMPLECOVERAGENV = 2434, NFOSMESA_GLTEXTUREIMAGE3DMULTISAMPLENV = 2435, NFOSMESA_GLTEXTUREPAGECOMMITMENTEXT = 2436, NFOSMESA_GLTEXTUREPARAMETERIIVEXT = 2437, NFOSMESA_GLTEXTUREPARAMETERIUIVEXT = 2438, NFOSMESA_GLTEXTUREPARAMETERFEXT = 2439, NFOSMESA_GLTEXTUREPARAMETERFVEXT = 2440, NFOSMESA_GLTEXTUREPARAMETERIEXT = 2441, NFOSMESA_GLTEXTUREPARAMETERIVEXT = 2442, NFOSMESA_GLTEXTURERANGEAPPLE = 2443, NFOSMESA_GLTEXTURERENDERBUFFEREXT = 2444, NFOSMESA_GLTEXTURESTORAGE1DEXT = 2445, NFOSMESA_GLTEXTURESTORAGE2DEXT = 2446, NFOSMESA_GLTEXTURESTORAGE2DMULTISAMPLEEXT = 2447, NFOSMESA_GLTEXTURESTORAGE3DEXT = 2448, NFOSMESA_GLTEXTURESTORAGE3DMULTISAMPLEEXT = 2449, NFOSMESA_GLTEXTURESTORAGESPARSEAMD = 2450, NFOSMESA_GLTEXTURESUBIMAGE1DEXT = 2451, NFOSMESA_GLTEXTURESUBIMAGE2DEXT = 2452, NFOSMESA_GLTEXTURESUBIMAGE3DEXT = 2453, NFOSMESA_GLTEXTUREVIEW = 2454, NFOSMESA_GLTRANSFORMFEEDBACKATTRIBSNV = 2455, NFOSMESA_GLTRANSFORMFEEDBACKSTREAMATTRIBSNV = 2456, NFOSMESA_GLTRANSFORMFEEDBACKVARYINGS = 2457, NFOSMESA_GLTRANSFORMFEEDBACKVARYINGSEXT = 2458, NFOSMESA_GLTRANSFORMFEEDBACKVARYINGSNV = 2459, NFOSMESA_GLTRANSFORMPATHNV = 2460, NFOSMESA_GLTRANSLATEXOES = 2461, NFOSMESA_GLUNIFORM1D = 2462, NFOSMESA_GLUNIFORM1DV = 2463, NFOSMESA_GLUNIFORM1F = 2464, NFOSMESA_GLUNIFORM1FV = 2465, NFOSMESA_GLUNIFORM1I = 2466, NFOSMESA_GLUNIFORM1I64NV = 2467, NFOSMESA_GLUNIFORM1I64VNV = 2468, NFOSMESA_GLUNIFORM1IV = 2469, NFOSMESA_GLUNIFORM1UI = 2470, NFOSMESA_GLUNIFORM1UI64NV = 2471, NFOSMESA_GLUNIFORM1UI64VNV = 2472, NFOSMESA_GLUNIFORM1UIEXT = 2473, NFOSMESA_GLUNIFORM1UIV = 2474, NFOSMESA_GLUNIFORM1UIVEXT = 2475, NFOSMESA_GLUNIFORM2D = 2476, NFOSMESA_GLUNIFORM2DV = 2477, NFOSMESA_GLUNIFORM2F = 2478, NFOSMESA_GLUNIFORM2FV = 2479, NFOSMESA_GLUNIFORM2I = 2480, NFOSMESA_GLUNIFORM2I64NV = 2481, NFOSMESA_GLUNIFORM2I64VNV = 2482, NFOSMESA_GLUNIFORM2IV = 2483, NFOSMESA_GLUNIFORM2UI = 2484, NFOSMESA_GLUNIFORM2UI64NV = 2485, NFOSMESA_GLUNIFORM2UI64VNV = 2486, NFOSMESA_GLUNIFORM2UIEXT = 2487, NFOSMESA_GLUNIFORM2UIV = 2488, NFOSMESA_GLUNIFORM2UIVEXT = 2489, NFOSMESA_GLUNIFORM3D = 2490, NFOSMESA_GLUNIFORM3DV = 2491, NFOSMESA_GLUNIFORM3F = 2492, NFOSMESA_GLUNIFORM3FV = 2493, NFOSMESA_GLUNIFORM3I = 2494, NFOSMESA_GLUNIFORM3I64NV = 2495, NFOSMESA_GLUNIFORM3I64VNV = 2496, NFOSMESA_GLUNIFORM3IV = 2497, NFOSMESA_GLUNIFORM3UI = 2498, NFOSMESA_GLUNIFORM3UI64NV = 2499, NFOSMESA_GLUNIFORM3UI64VNV = 2500, NFOSMESA_GLUNIFORM3UIEXT = 2501, NFOSMESA_GLUNIFORM3UIV = 2502, NFOSMESA_GLUNIFORM3UIVEXT = 2503, NFOSMESA_GLUNIFORM4D = 2504, NFOSMESA_GLUNIFORM4DV = 2505, NFOSMESA_GLUNIFORM4F = 2506, NFOSMESA_GLUNIFORM4FV = 2507, NFOSMESA_GLUNIFORM4I = 2508, NFOSMESA_GLUNIFORM4I64NV = 2509, NFOSMESA_GLUNIFORM4I64VNV = 2510, NFOSMESA_GLUNIFORM4IV = 2511, NFOSMESA_GLUNIFORM4UI = 2512, NFOSMESA_GLUNIFORM4UI64NV = 2513, NFOSMESA_GLUNIFORM4UI64VNV = 2514, NFOSMESA_GLUNIFORM4UIEXT = 2515, NFOSMESA_GLUNIFORM4UIV = 2516, NFOSMESA_GLUNIFORM4UIVEXT = 2517, NFOSMESA_GLUNIFORMBLOCKBINDING = 2518, NFOSMESA_GLUNIFORMBUFFEREXT = 2519, NFOSMESA_GLUNIFORMHANDLEUI64ARB = 2520, NFOSMESA_GLUNIFORMHANDLEUI64NV = 2521, NFOSMESA_GLUNIFORMHANDLEUI64VARB = 2522, NFOSMESA_GLUNIFORMHANDLEUI64VNV = 2523, NFOSMESA_GLUNIFORMMATRIX2DV = 2524, NFOSMESA_GLUNIFORMMATRIX2FV = 2525, NFOSMESA_GLUNIFORMMATRIX2X3DV = 2526, NFOSMESA_GLUNIFORMMATRIX2X3FV = 2527, NFOSMESA_GLUNIFORMMATRIX2X4DV = 2528, NFOSMESA_GLUNIFORMMATRIX2X4FV = 2529, NFOSMESA_GLUNIFORMMATRIX3DV = 2530, NFOSMESA_GLUNIFORMMATRIX3FV = 2531, NFOSMESA_GLUNIFORMMATRIX3X2DV = 2532, NFOSMESA_GLUNIFORMMATRIX3X2FV = 2533, NFOSMESA_GLUNIFORMMATRIX3X4DV = 2534, NFOSMESA_GLUNIFORMMATRIX3X4FV = 2535, NFOSMESA_GLUNIFORMMATRIX4DV = 2536, NFOSMESA_GLUNIFORMMATRIX4FV = 2537, NFOSMESA_GLUNIFORMMATRIX4X2DV = 2538, NFOSMESA_GLUNIFORMMATRIX4X2FV = 2539, NFOSMESA_GLUNIFORMMATRIX4X3DV = 2540, NFOSMESA_GLUNIFORMMATRIX4X3FV = 2541, NFOSMESA_GLUNIFORMSUBROUTINESUIV = 2542, NFOSMESA_GLUNIFORMUI64NV = 2543, NFOSMESA_GLUNIFORMUI64VNV = 2544, NFOSMESA_GLUNMAPNAMEDBUFFEREXT = 2545, NFOSMESA_GLUNMAPTEXTURE2DINTEL = 2546, NFOSMESA_GLUSEPROGRAM = 2547, NFOSMESA_GLUSEPROGRAMSTAGES = 2548, NFOSMESA_GLUSESHADERPROGRAMEXT = 2549, NFOSMESA_GLVDPAUFININV = 2550, NFOSMESA_GLVDPAUGETSURFACEIVNV = 2551, NFOSMESA_GLVDPAUINITNV = 2552, NFOSMESA_GLVDPAUISSURFACENV = 2553, NFOSMESA_GLVDPAUMAPSURFACESNV = 2554, NFOSMESA_GLVDPAUREGISTEROUTPUTSURFACENV = 2555, NFOSMESA_GLVDPAUREGISTERVIDEOSURFACENV = 2556, NFOSMESA_GLVDPAUSURFACEACCESSNV = 2557, NFOSMESA_GLVDPAUUNMAPSURFACESNV = 2558, NFOSMESA_GLVDPAUUNREGISTERSURFACENV = 2559, NFOSMESA_GLVALIDATEPROGRAM = 2560, NFOSMESA_GLVALIDATEPROGRAMPIPELINE = 2561, NFOSMESA_GLVERTEX2BOES = 2562, NFOSMESA_GLVERTEX2BVOES = 2563, NFOSMESA_GLVERTEX2XOES = 2564, NFOSMESA_GLVERTEX2XVOES = 2565, NFOSMESA_GLVERTEX3BOES = 2566, NFOSMESA_GLVERTEX3BVOES = 2567, NFOSMESA_GLVERTEX3XOES = 2568, NFOSMESA_GLVERTEX3XVOES = 2569, NFOSMESA_GLVERTEX4BOES = 2570, NFOSMESA_GLVERTEX4BVOES = 2571, NFOSMESA_GLVERTEX4XOES = 2572, NFOSMESA_GLVERTEX4XVOES = 2573, NFOSMESA_GLVERTEXARRAYBINDVERTEXBUFFEREXT = 2574, NFOSMESA_GLVERTEXARRAYCOLOROFFSETEXT = 2575, NFOSMESA_GLVERTEXARRAYEDGEFLAGOFFSETEXT = 2576, NFOSMESA_GLVERTEXARRAYFOGCOORDOFFSETEXT = 2577, NFOSMESA_GLVERTEXARRAYINDEXOFFSETEXT = 2578, NFOSMESA_GLVERTEXARRAYMULTITEXCOORDOFFSETEXT = 2579, NFOSMESA_GLVERTEXARRAYNORMALOFFSETEXT = 2580, NFOSMESA_GLVERTEXARRAYSECONDARYCOLOROFFSETEXT = 2581, NFOSMESA_GLVERTEXARRAYTEXCOORDOFFSETEXT = 2582, NFOSMESA_GLVERTEXARRAYVERTEXATTRIBBINDINGEXT = 2583, NFOSMESA_GLVERTEXARRAYVERTEXATTRIBDIVISOREXT = 2584, NFOSMESA_GLVERTEXARRAYVERTEXATTRIBFORMATEXT = 2585, NFOSMESA_GLVERTEXARRAYVERTEXATTRIBIFORMATEXT = 2586, NFOSMESA_GLVERTEXARRAYVERTEXATTRIBIOFFSETEXT = 2587, NFOSMESA_GLVERTEXARRAYVERTEXATTRIBLFORMATEXT = 2588, NFOSMESA_GLVERTEXARRAYVERTEXATTRIBLOFFSETEXT = 2589, NFOSMESA_GLVERTEXARRAYVERTEXATTRIBOFFSETEXT = 2590, NFOSMESA_GLVERTEXARRAYVERTEXBINDINGDIVISOREXT = 2591, NFOSMESA_GLVERTEXARRAYVERTEXOFFSETEXT = 2592, NFOSMESA_GLVERTEXATTRIB1D = 2593, NFOSMESA_GLVERTEXATTRIB1DV = 2594, NFOSMESA_GLVERTEXATTRIB1F = 2595, NFOSMESA_GLVERTEXATTRIB1FV = 2596, NFOSMESA_GLVERTEXATTRIB1S = 2597, NFOSMESA_GLVERTEXATTRIB1SV = 2598, NFOSMESA_GLVERTEXATTRIB2D = 2599, NFOSMESA_GLVERTEXATTRIB2DV = 2600, NFOSMESA_GLVERTEXATTRIB2F = 2601, NFOSMESA_GLVERTEXATTRIB2FV = 2602, NFOSMESA_GLVERTEXATTRIB2S = 2603, NFOSMESA_GLVERTEXATTRIB2SV = 2604, NFOSMESA_GLVERTEXATTRIB3D = 2605, NFOSMESA_GLVERTEXATTRIB3DV = 2606, NFOSMESA_GLVERTEXATTRIB3F = 2607, NFOSMESA_GLVERTEXATTRIB3FV = 2608, NFOSMESA_GLVERTEXATTRIB3S = 2609, NFOSMESA_GLVERTEXATTRIB3SV = 2610, NFOSMESA_GLVERTEXATTRIB4NBV = 2611, NFOSMESA_GLVERTEXATTRIB4NIV = 2612, NFOSMESA_GLVERTEXATTRIB4NSV = 2613, NFOSMESA_GLVERTEXATTRIB4NUB = 2614, NFOSMESA_GLVERTEXATTRIB4NUBV = 2615, NFOSMESA_GLVERTEXATTRIB4NUIV = 2616, NFOSMESA_GLVERTEXATTRIB4NUSV = 2617, NFOSMESA_GLVERTEXATTRIB4BV = 2618, NFOSMESA_GLVERTEXATTRIB4D = 2619, NFOSMESA_GLVERTEXATTRIB4DV = 2620, NFOSMESA_GLVERTEXATTRIB4F = 2621, NFOSMESA_GLVERTEXATTRIB4FV = 2622, NFOSMESA_GLVERTEXATTRIB4IV = 2623, NFOSMESA_GLVERTEXATTRIB4S = 2624, NFOSMESA_GLVERTEXATTRIB4SV = 2625, NFOSMESA_GLVERTEXATTRIB4UBV = 2626, NFOSMESA_GLVERTEXATTRIB4UIV = 2627, NFOSMESA_GLVERTEXATTRIB4USV = 2628, NFOSMESA_GLVERTEXATTRIBBINDING = 2629, NFOSMESA_GLVERTEXATTRIBDIVISOR = 2630, NFOSMESA_GLVERTEXATTRIBDIVISORARB = 2631, NFOSMESA_GLVERTEXATTRIBFORMAT = 2632, NFOSMESA_GLVERTEXATTRIBFORMATNV = 2633, NFOSMESA_GLVERTEXATTRIBI1I = 2634, NFOSMESA_GLVERTEXATTRIBI1IEXT = 2635, NFOSMESA_GLVERTEXATTRIBI1IV = 2636, NFOSMESA_GLVERTEXATTRIBI1IVEXT = 2637, NFOSMESA_GLVERTEXATTRIBI1UI = 2638, NFOSMESA_GLVERTEXATTRIBI1UIEXT = 2639, NFOSMESA_GLVERTEXATTRIBI1UIV = 2640, NFOSMESA_GLVERTEXATTRIBI1UIVEXT = 2641, NFOSMESA_GLVERTEXATTRIBI2I = 2642, NFOSMESA_GLVERTEXATTRIBI2IEXT = 2643, NFOSMESA_GLVERTEXATTRIBI2IV = 2644, NFOSMESA_GLVERTEXATTRIBI2IVEXT = 2645, NFOSMESA_GLVERTEXATTRIBI2UI = 2646, NFOSMESA_GLVERTEXATTRIBI2UIEXT = 2647, NFOSMESA_GLVERTEXATTRIBI2UIV = 2648, NFOSMESA_GLVERTEXATTRIBI2UIVEXT = 2649, NFOSMESA_GLVERTEXATTRIBI3I = 2650, NFOSMESA_GLVERTEXATTRIBI3IEXT = 2651, NFOSMESA_GLVERTEXATTRIBI3IV = 2652, NFOSMESA_GLVERTEXATTRIBI3IVEXT = 2653, NFOSMESA_GLVERTEXATTRIBI3UI = 2654, NFOSMESA_GLVERTEXATTRIBI3UIEXT = 2655, NFOSMESA_GLVERTEXATTRIBI3UIV = 2656, NFOSMESA_GLVERTEXATTRIBI3UIVEXT = 2657, NFOSMESA_GLVERTEXATTRIBI4BV = 2658, NFOSMESA_GLVERTEXATTRIBI4BVEXT = 2659, NFOSMESA_GLVERTEXATTRIBI4I = 2660, NFOSMESA_GLVERTEXATTRIBI4IEXT = 2661, NFOSMESA_GLVERTEXATTRIBI4IV = 2662, NFOSMESA_GLVERTEXATTRIBI4IVEXT = 2663, NFOSMESA_GLVERTEXATTRIBI4SV = 2664, NFOSMESA_GLVERTEXATTRIBI4SVEXT = 2665, NFOSMESA_GLVERTEXATTRIBI4UBV = 2666, NFOSMESA_GLVERTEXATTRIBI4UBVEXT = 2667, NFOSMESA_GLVERTEXATTRIBI4UI = 2668, NFOSMESA_GLVERTEXATTRIBI4UIEXT = 2669, NFOSMESA_GLVERTEXATTRIBI4UIV = 2670, NFOSMESA_GLVERTEXATTRIBI4UIVEXT = 2671, NFOSMESA_GLVERTEXATTRIBI4USV = 2672, NFOSMESA_GLVERTEXATTRIBI4USVEXT = 2673, NFOSMESA_GLVERTEXATTRIBIFORMAT = 2674, NFOSMESA_GLVERTEXATTRIBIFORMATNV = 2675, NFOSMESA_GLVERTEXATTRIBIPOINTER = 2676, NFOSMESA_GLVERTEXATTRIBIPOINTEREXT = 2677, NFOSMESA_GLVERTEXATTRIBL1D = 2678, NFOSMESA_GLVERTEXATTRIBL1DEXT = 2679, NFOSMESA_GLVERTEXATTRIBL1DV = 2680, NFOSMESA_GLVERTEXATTRIBL1DVEXT = 2681, NFOSMESA_GLVERTEXATTRIBL1I64NV = 2682, NFOSMESA_GLVERTEXATTRIBL1I64VNV = 2683, NFOSMESA_GLVERTEXATTRIBL1UI64ARB = 2684, NFOSMESA_GLVERTEXATTRIBL1UI64NV = 2685, NFOSMESA_GLVERTEXATTRIBL1UI64VARB = 2686, NFOSMESA_GLVERTEXATTRIBL1UI64VNV = 2687, NFOSMESA_GLVERTEXATTRIBL2D = 2688, NFOSMESA_GLVERTEXATTRIBL2DEXT = 2689, NFOSMESA_GLVERTEXATTRIBL2DV = 2690, NFOSMESA_GLVERTEXATTRIBL2DVEXT = 2691, NFOSMESA_GLVERTEXATTRIBL2I64NV = 2692, NFOSMESA_GLVERTEXATTRIBL2I64VNV = 2693, NFOSMESA_GLVERTEXATTRIBL2UI64NV = 2694, NFOSMESA_GLVERTEXATTRIBL2UI64VNV = 2695, NFOSMESA_GLVERTEXATTRIBL3D = 2696, NFOSMESA_GLVERTEXATTRIBL3DEXT = 2697, NFOSMESA_GLVERTEXATTRIBL3DV = 2698, NFOSMESA_GLVERTEXATTRIBL3DVEXT = 2699, NFOSMESA_GLVERTEXATTRIBL3I64NV = 2700, NFOSMESA_GLVERTEXATTRIBL3I64VNV = 2701, NFOSMESA_GLVERTEXATTRIBL3UI64NV = 2702, NFOSMESA_GLVERTEXATTRIBL3UI64VNV = 2703, NFOSMESA_GLVERTEXATTRIBL4D = 2704, NFOSMESA_GLVERTEXATTRIBL4DEXT = 2705, NFOSMESA_GLVERTEXATTRIBL4DV = 2706, NFOSMESA_GLVERTEXATTRIBL4DVEXT = 2707, NFOSMESA_GLVERTEXATTRIBL4I64NV = 2708, NFOSMESA_GLVERTEXATTRIBL4I64VNV = 2709, NFOSMESA_GLVERTEXATTRIBL4UI64NV = 2710, NFOSMESA_GLVERTEXATTRIBL4UI64VNV = 2711, NFOSMESA_GLVERTEXATTRIBLFORMAT = 2712, NFOSMESA_GLVERTEXATTRIBLFORMATNV = 2713, NFOSMESA_GLVERTEXATTRIBLPOINTER = 2714, NFOSMESA_GLVERTEXATTRIBLPOINTEREXT = 2715, NFOSMESA_GLVERTEXATTRIBP1UI = 2716, NFOSMESA_GLVERTEXATTRIBP1UIV = 2717, NFOSMESA_GLVERTEXATTRIBP2UI = 2718, NFOSMESA_GLVERTEXATTRIBP2UIV = 2719, NFOSMESA_GLVERTEXATTRIBP3UI = 2720, NFOSMESA_GLVERTEXATTRIBP3UIV = 2721, NFOSMESA_GLVERTEXATTRIBP4UI = 2722, NFOSMESA_GLVERTEXATTRIBP4UIV = 2723, NFOSMESA_GLVERTEXATTRIBPARAMETERIAMD = 2724, NFOSMESA_GLVERTEXATTRIBPOINTER = 2725, NFOSMESA_GLVERTEXBINDINGDIVISOR = 2726, NFOSMESA_GLVERTEXFORMATNV = 2727, NFOSMESA_GLVERTEXP2UI = 2728, NFOSMESA_GLVERTEXP2UIV = 2729, NFOSMESA_GLVERTEXP3UI = 2730, NFOSMESA_GLVERTEXP3UIV = 2731, NFOSMESA_GLVERTEXP4UI = 2732, NFOSMESA_GLVERTEXP4UIV = 2733, NFOSMESA_GLVERTEXPOINTSIZEFAPPLE = 2734, NFOSMESA_GLVIDEOCAPTURENV = 2735, NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERDVNV = 2736, NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERFVNV = 2737, NFOSMESA_GLVIDEOCAPTURESTREAMPARAMETERIVNV = 2738, NFOSMESA_GLVIEWPORTARRAYV = 2739, NFOSMESA_GLVIEWPORTINDEXEDF = 2740, NFOSMESA_GLVIEWPORTINDEXEDFV = 2741, NFOSMESA_GLWAITSYNC = 2742, NFOSMESA_GLWEIGHTPATHSNV = 2743, /* end of ARANFOSMESA_NFAPI_VERSION 2 */ NFOSMESA_GLBINDTEXTUREUNIT = 2744, NFOSMESA_GLBLENDBARRIERKHR = 2745, NFOSMESA_GLBLITNAMEDFRAMEBUFFER = 2746, NFOSMESA_GLBUFFERPAGECOMMITMENTARB = 2747, NFOSMESA_GLCALLCOMMANDLISTNV = 2748, NFOSMESA_GLCHECKNAMEDFRAMEBUFFERSTATUS = 2749, NFOSMESA_GLCLEARNAMEDBUFFERDATA = 2750, NFOSMESA_GLCLEARNAMEDBUFFERSUBDATA = 2751, NFOSMESA_GLCLEARNAMEDFRAMEBUFFERFI = 2752, NFOSMESA_GLCLEARNAMEDFRAMEBUFFERFV = 2753, NFOSMESA_GLCLEARNAMEDFRAMEBUFFERIV = 2754, NFOSMESA_GLCLEARNAMEDFRAMEBUFFERUIV = 2755, NFOSMESA_GLCLIPCONTROL = 2756, NFOSMESA_GLCOMMANDLISTSEGMENTSNV = 2757, NFOSMESA_GLCOMPILECOMMANDLISTNV = 2758, NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE1D = 2759, NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE2D = 2760, NFOSMESA_GLCOMPRESSEDTEXTURESUBIMAGE3D = 2761, NFOSMESA_GLCOPYNAMEDBUFFERSUBDATA = 2762, NFOSMESA_GLCOPYTEXTURESUBIMAGE1D = 2763, NFOSMESA_GLCOPYTEXTURESUBIMAGE2D = 2764, NFOSMESA_GLCOPYTEXTURESUBIMAGE3D = 2765, NFOSMESA_GLCOVERAGEMODULATIONNV = 2766, NFOSMESA_GLCOVERAGEMODULATIONTABLENV = 2767, NFOSMESA_GLCREATEBUFFERS = 2768, NFOSMESA_GLCREATECOMMANDLISTSNV = 2769, NFOSMESA_GLCREATEFRAMEBUFFERS = 2770, NFOSMESA_GLCREATEPROGRAMPIPELINES = 2771, NFOSMESA_GLCREATEQUERIES = 2772, NFOSMESA_GLCREATERENDERBUFFERS = 2773, NFOSMESA_GLCREATESAMPLERS = 2774, NFOSMESA_GLCREATESTATESNV = 2775, NFOSMESA_GLCREATETEXTURES = 2776, NFOSMESA_GLCREATETRANSFORMFEEDBACKS = 2777, NFOSMESA_GLCREATEVERTEXARRAYS = 2778, NFOSMESA_GLDELETECOMMANDLISTSNV = 2779, NFOSMESA_GLDELETESTATESNV = 2780, NFOSMESA_GLDISABLEVERTEXARRAYATTRIB = 2781, NFOSMESA_GLDRAWCOMMANDSADDRESSNV = 2782, NFOSMESA_GLDRAWCOMMANDSNV = 2783, NFOSMESA_GLDRAWCOMMANDSSTATESADDRESSNV = 2784, NFOSMESA_GLDRAWCOMMANDSSTATESNV = 2785, NFOSMESA_GLENABLEVERTEXARRAYATTRIB = 2786, NFOSMESA_GLFLUSHMAPPEDNAMEDBUFFERRANGE = 2787, NFOSMESA_GLFRAGMENTCOVERAGECOLORNV = 2788, NFOSMESA_GLFRAMEBUFFERSAMPLELOCATIONSFVNV = 2789, NFOSMESA_GLFRAMEBUFFERTEXTUREMULTIVIEWOVR = 2790, NFOSMESA_GLGENERATETEXTUREMIPMAP = 2791, NFOSMESA_GLGETCOMMANDHEADERNV = 2792, NFOSMESA_GLGETCOMPRESSEDTEXTUREIMAGE = 2793, NFOSMESA_GLGETCOMPRESSEDTEXTURESUBIMAGE = 2794, NFOSMESA_GLGETCOVERAGEMODULATIONTABLENV = 2795, NFOSMESA_GLGETGRAPHICSRESETSTATUS = 2796, NFOSMESA_GLGETINTERNALFORMATSAMPLEIVNV = 2797, NFOSMESA_GLGETNAMEDBUFFERPARAMETERI64V = 2798, NFOSMESA_GLGETNAMEDBUFFERPARAMETERIV = 2799, NFOSMESA_GLGETNAMEDBUFFERPOINTERV = 2800, NFOSMESA_GLGETNAMEDBUFFERSUBDATA = 2801, NFOSMESA_GLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV = 2802, NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERIV = 2803, NFOSMESA_GLGETNAMEDRENDERBUFFERPARAMETERIV = 2804, NFOSMESA_GLGETPROGRAMRESOURCEFVNV = 2805, NFOSMESA_GLGETQUERYBUFFEROBJECTI64V = 2806, NFOSMESA_GLGETQUERYBUFFEROBJECTIV = 2807, NFOSMESA_GLGETQUERYBUFFEROBJECTUI64V = 2808, NFOSMESA_GLGETQUERYBUFFEROBJECTUIV = 2809, NFOSMESA_GLGETSTAGEINDEXNV = 2810, NFOSMESA_GLGETTEXTUREIMAGE = 2811, NFOSMESA_GLGETTEXTURELEVELPARAMETERFV = 2812, NFOSMESA_GLGETTEXTURELEVELPARAMETERIV = 2813, NFOSMESA_GLGETTEXTUREPARAMETERIIV = 2814, NFOSMESA_GLGETTEXTUREPARAMETERIUIV = 2815, NFOSMESA_GLGETTEXTUREPARAMETERFV = 2816, NFOSMESA_GLGETTEXTUREPARAMETERIV = 2817, NFOSMESA_GLGETTEXTURESUBIMAGE = 2818, NFOSMESA_GLGETTRANSFORMFEEDBACKI64_V = 2819, NFOSMESA_GLGETTRANSFORMFEEDBACKI_V = 2820, NFOSMESA_GLGETTRANSFORMFEEDBACKIV = 2821, NFOSMESA_GLGETVERTEXARRAYINDEXED64IV = 2822, NFOSMESA_GLGETVERTEXARRAYINDEXEDIV = 2823, NFOSMESA_GLGETVERTEXARRAYIV = 2824, NFOSMESA_GLGETNCOLORTABLE = 2825, NFOSMESA_GLGETNCOMPRESSEDTEXIMAGE = 2826, NFOSMESA_GLGETNCONVOLUTIONFILTER = 2827, NFOSMESA_GLGETNHISTOGRAM = 2828, NFOSMESA_GLGETNMAPDV = 2829, NFOSMESA_GLGETNMAPFV = 2830, NFOSMESA_GLGETNMAPIV = 2831, NFOSMESA_GLGETNMINMAX = 2832, NFOSMESA_GLGETNPIXELMAPFV = 2833, NFOSMESA_GLGETNPIXELMAPUIV = 2834, NFOSMESA_GLGETNPIXELMAPUSV = 2835, NFOSMESA_GLGETNPOLYGONSTIPPLE = 2836, NFOSMESA_GLGETNSEPARABLEFILTER = 2837, NFOSMESA_GLGETNTEXIMAGE = 2838, NFOSMESA_GLGETNUNIFORMDV = 2839, NFOSMESA_GLGETNUNIFORMFV = 2840, NFOSMESA_GLGETNUNIFORMIV = 2841, NFOSMESA_GLGETNUNIFORMUIV = 2842, NFOSMESA_GLINVALIDATENAMEDFRAMEBUFFERDATA = 2843, NFOSMESA_GLINVALIDATENAMEDFRAMEBUFFERSUBDATA = 2844, NFOSMESA_GLISCOMMANDLISTNV = 2845, NFOSMESA_GLISSTATENV = 2846, NFOSMESA_GLLISTDRAWCOMMANDSSTATESCLIENTNV = 2847, NFOSMESA_GLMAPNAMEDBUFFER = 2848, NFOSMESA_GLMAPNAMEDBUFFERRANGE = 2849, NFOSMESA_GLMATRIXLOAD3X2FNV = 2850, NFOSMESA_GLMATRIXLOAD3X3FNV = 2851, NFOSMESA_GLMATRIXLOADTRANSPOSE3X3FNV = 2852, NFOSMESA_GLMATRIXMULT3X2FNV = 2853, NFOSMESA_GLMATRIXMULT3X3FNV = 2854, NFOSMESA_GLMATRIXMULTTRANSPOSE3X3FNV = 2855, NFOSMESA_GLMEMORYBARRIERBYREGION = 2856, NFOSMESA_GLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV = 2857, NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV = 2858, NFOSMESA_GLNAMEDBUFFERDATA = 2859, NFOSMESA_GLNAMEDBUFFERPAGECOMMITMENTARB = 2860, NFOSMESA_GLNAMEDBUFFERPAGECOMMITMENTEXT = 2861, NFOSMESA_GLNAMEDBUFFERSTORAGE = 2862, NFOSMESA_GLNAMEDBUFFERSUBDATA = 2863, NFOSMESA_GLNAMEDFRAMEBUFFERDRAWBUFFER = 2864, NFOSMESA_GLNAMEDFRAMEBUFFERDRAWBUFFERS = 2865, NFOSMESA_GLNAMEDFRAMEBUFFERPARAMETERI = 2866, NFOSMESA_GLNAMEDFRAMEBUFFERREADBUFFER = 2867, NFOSMESA_GLNAMEDFRAMEBUFFERRENDERBUFFER = 2868, NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV = 2869, NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURE = 2870, NFOSMESA_GLNAMEDFRAMEBUFFERTEXTURELAYER = 2871, NFOSMESA_GLNAMEDRENDERBUFFERSTORAGE = 2872, NFOSMESA_GLNAMEDRENDERBUFFERSTORAGEMULTISAMPLE = 2873, NFOSMESA_GLPATHGLYPHINDEXARRAYNV = 2874, NFOSMESA_GLPATHGLYPHINDEXRANGENV = 2875, NFOSMESA_GLPATHMEMORYGLYPHINDEXARRAYNV = 2876, NFOSMESA_GLPOLYGONOFFSETCLAMPEXT = 2877, NFOSMESA_GLPROGRAMPATHFRAGMENTINPUTGENNV = 2878, NFOSMESA_GLRASTERSAMPLESEXT = 2879, NFOSMESA_GLREADNPIXELS = 2880, NFOSMESA_GLRESOLVEDEPTHVALUESNV = 2881, NFOSMESA_GLSTATECAPTURENV = 2882, NFOSMESA_GLSTENCILTHENCOVERFILLPATHINSTANCEDNV = 2883, NFOSMESA_GLSTENCILTHENCOVERFILLPATHNV = 2884, NFOSMESA_GLSTENCILTHENCOVERSTROKEPATHINSTANCEDNV = 2885, NFOSMESA_GLSTENCILTHENCOVERSTROKEPATHNV = 2886, NFOSMESA_GLSUBPIXELPRECISIONBIASNV = 2887, NFOSMESA_GLTEXTUREBARRIER = 2888, NFOSMESA_GLTEXTUREBUFFER = 2889, NFOSMESA_GLTEXTUREBUFFERRANGE = 2890, NFOSMESA_GLTEXTUREPARAMETERIIV = 2891, NFOSMESA_GLTEXTUREPARAMETERIUIV = 2892, NFOSMESA_GLTEXTUREPARAMETERF = 2893, NFOSMESA_GLTEXTUREPARAMETERFV = 2894, NFOSMESA_GLTEXTUREPARAMETERI = 2895, NFOSMESA_GLTEXTUREPARAMETERIV = 2896, NFOSMESA_GLTEXTURESTORAGE1D = 2897, NFOSMESA_GLTEXTURESTORAGE2D = 2898, NFOSMESA_GLTEXTURESTORAGE2DMULTISAMPLE = 2899, NFOSMESA_GLTEXTURESTORAGE3D = 2900, NFOSMESA_GLTEXTURESTORAGE3DMULTISAMPLE = 2901, NFOSMESA_GLTEXTURESUBIMAGE1D = 2902, NFOSMESA_GLTEXTURESUBIMAGE2D = 2903, NFOSMESA_GLTEXTURESUBIMAGE3D = 2904, NFOSMESA_GLTRANSFORMFEEDBACKBUFFERBASE = 2905, NFOSMESA_GLTRANSFORMFEEDBACKBUFFERRANGE = 2906, NFOSMESA_GLUNMAPNAMEDBUFFER = 2907, NFOSMESA_GLVERTEXARRAYATTRIBBINDING = 2908, NFOSMESA_GLVERTEXARRAYATTRIBFORMAT = 2909, NFOSMESA_GLVERTEXARRAYATTRIBIFORMAT = 2910, NFOSMESA_GLVERTEXARRAYATTRIBLFORMAT = 2911, NFOSMESA_GLVERTEXARRAYBINDINGDIVISOR = 2912, NFOSMESA_GLVERTEXARRAYELEMENTBUFFER = 2913, NFOSMESA_GLVERTEXARRAYVERTEXBUFFER = 2914, NFOSMESA_GLVERTEXARRAYVERTEXBUFFERS = 2915, /* end of ARANFOSMESA_NFAPI_VERSION 3 */ NFOSMESA_OSMESACREATECONTEXTATTRIBS = 2916, NFOSMESA_GLSPECIALIZESHADER = 2917, NFOSMESA_GLSPECIALIZESHADERARB = 2918, NFOSMESA_GLMULTIDRAWARRAYSINDIRECTCOUNT = 2919, NFOSMESA_GLMULTIDRAWELEMENTSINDIRECTCOUNT = 2920, NFOSMESA_GLPOLYGONOFFSETCLAMP = 2921, NFOSMESA_GLPRIMITIVEBOUNDINGBOXARB = 2922, NFOSMESA_GLUNIFORM1I64ARB = 2923, NFOSMESA_GLUNIFORM2I64ARB = 2924, NFOSMESA_GLUNIFORM3I64ARB = 2925, NFOSMESA_GLUNIFORM4I64ARB = 2926, NFOSMESA_GLUNIFORM1I64VARB = 2927, NFOSMESA_GLUNIFORM2I64VARB = 2928, NFOSMESA_GLUNIFORM3I64VARB = 2929, NFOSMESA_GLUNIFORM4I64VARB = 2930, NFOSMESA_GLUNIFORM1UI64ARB = 2931, NFOSMESA_GLUNIFORM2UI64ARB = 2932, NFOSMESA_GLUNIFORM3UI64ARB = 2933, NFOSMESA_GLUNIFORM4UI64ARB = 2934, NFOSMESA_GLUNIFORM1UI64VARB = 2935, NFOSMESA_GLUNIFORM2UI64VARB = 2936, NFOSMESA_GLUNIFORM3UI64VARB = 2937, NFOSMESA_GLUNIFORM4UI64VARB = 2938, NFOSMESA_GLGETUNIFORMI64VARB = 2939, NFOSMESA_GLGETUNIFORMUI64VARB = 2940, NFOSMESA_GLGETNUNIFORMI64VARB = 2941, NFOSMESA_GLGETNUNIFORMUI64VARB = 2942, NFOSMESA_GLPROGRAMUNIFORM1I64ARB = 2943, NFOSMESA_GLPROGRAMUNIFORM2I64ARB = 2944, NFOSMESA_GLPROGRAMUNIFORM3I64ARB = 2945, NFOSMESA_GLPROGRAMUNIFORM4I64ARB = 2946, NFOSMESA_GLPROGRAMUNIFORM1I64VARB = 2947, NFOSMESA_GLPROGRAMUNIFORM2I64VARB = 2948, NFOSMESA_GLPROGRAMUNIFORM3I64VARB = 2949, NFOSMESA_GLPROGRAMUNIFORM4I64VARB = 2950, NFOSMESA_GLPROGRAMUNIFORM1UI64ARB = 2951, NFOSMESA_GLPROGRAMUNIFORM2UI64ARB = 2952, NFOSMESA_GLPROGRAMUNIFORM3UI64ARB = 2953, NFOSMESA_GLPROGRAMUNIFORM4UI64ARB = 2954, NFOSMESA_GLPROGRAMUNIFORM1UI64VARB = 2955, NFOSMESA_GLPROGRAMUNIFORM2UI64VARB = 2956, NFOSMESA_GLPROGRAMUNIFORM3UI64VARB = 2957, NFOSMESA_GLPROGRAMUNIFORM4UI64VARB = 2958, NFOSMESA_GLMAXSHADERCOMPILERTHREADSARB = 2959, NFOSMESA_GLFRAMEBUFFERSAMPLELOCATIONSFVARB = 2960, NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARB = 2961, NFOSMESA_GLEVALUATEDEPTHVALUESARB = 2962, NFOSMESA_GLMAXSHADERCOMPILERTHREADSKHR = 2963, NFOSMESA_GLBUFFERSTORAGEEXTERNALEXT = 2964, NFOSMESA_GLNAMEDBUFFERSTORAGEEXTERNALEXT = 2965, NFOSMESA_GLGETUNSIGNEDBYTEVEXT = 2966, NFOSMESA_GLGETUNSIGNEDBYTEI_VEXT = 2967, NFOSMESA_GLDELETEMEMORYOBJECTSEXT = 2968, NFOSMESA_GLISMEMORYOBJECTEXT = 2969, NFOSMESA_GLCREATEMEMORYOBJECTSEXT = 2970, NFOSMESA_GLMEMORYOBJECTPARAMETERIVEXT = 2971, NFOSMESA_GLGETMEMORYOBJECTPARAMETERIVEXT = 2972, NFOSMESA_GLTEXSTORAGEMEM2DEXT = 2973, NFOSMESA_GLTEXSTORAGEMEM2DMULTISAMPLEEXT = 2974, NFOSMESA_GLTEXSTORAGEMEM3DEXT = 2975, NFOSMESA_GLTEXSTORAGEMEM3DMULTISAMPLEEXT = 2976, NFOSMESA_GLBUFFERSTORAGEMEMEXT = 2977, NFOSMESA_GLTEXTURESTORAGEMEM2DEXT = 2978, NFOSMESA_GLTEXTURESTORAGEMEM2DMULTISAMPLEEXT = 2979, NFOSMESA_GLTEXTURESTORAGEMEM3DEXT = 2980, NFOSMESA_GLTEXTURESTORAGEMEM3DMULTISAMPLEEXT = 2981, NFOSMESA_GLNAMEDBUFFERSTORAGEMEMEXT = 2982, NFOSMESA_GLTEXSTORAGEMEM1DEXT = 2983, NFOSMESA_GLTEXTURESTORAGEMEM1DEXT = 2984, NFOSMESA_GLIMPORTMEMORYFDEXT = 2985, NFOSMESA_GLIMPORTMEMORYWIN32HANDLEEXT = 2986, NFOSMESA_GLIMPORTMEMORYWIN32NAMEEXT = 2987, NFOSMESA_GLGENSEMAPHORESEXT = 2988, NFOSMESA_GLDELETESEMAPHORESEXT = 2989, NFOSMESA_GLISSEMAPHOREEXT = 2990, NFOSMESA_GLSEMAPHOREPARAMETERUI64VEXT = 2991, NFOSMESA_GLGETSEMAPHOREPARAMETERUI64VEXT = 2992, NFOSMESA_GLWAITSEMAPHOREEXT = 2993, NFOSMESA_GLSIGNALSEMAPHOREEXT = 2994, NFOSMESA_GLIMPORTSEMAPHOREFDEXT = 2995, NFOSMESA_GLIMPORTSEMAPHOREWIN32HANDLEEXT = 2996, NFOSMESA_GLIMPORTSEMAPHOREWIN32NAMEEXT = 2997, NFOSMESA_GLACQUIREKEYEDMUTEXWIN32EXT = 2998, NFOSMESA_GLRELEASEKEYEDMUTEXWIN32EXT = 2999, NFOSMESA_GLLGPUNAMEDBUFFERSUBDATANVX = 3000, NFOSMESA_GLLGPUCOPYIMAGESUBDATANVX = 3001, NFOSMESA_GLLGPUINTERLOCKNVX = 3002, NFOSMESA_GLALPHATOCOVERAGEDITHERCONTROLNV = 3003, NFOSMESA_GLDRAWVKIMAGENV = 3004, NFOSMESA_GLGETVKPROCADDRNV = 3005, NFOSMESA_GLWAITVKSEMAPHORENV = 3006, NFOSMESA_GLSIGNALVKSEMAPHORENV = 3007, NFOSMESA_GLSIGNALVKFENCENV = 3008, NFOSMESA_GLRENDERGPUMASKNV = 3009, NFOSMESA_GLMULTICASTBUFFERSUBDATANV = 3010, NFOSMESA_GLMULTICASTCOPYBUFFERSUBDATANV = 3011, NFOSMESA_GLMULTICASTCOPYIMAGESUBDATANV = 3012, NFOSMESA_GLMULTICASTBLITFRAMEBUFFERNV = 3013, NFOSMESA_GLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNV = 3014, NFOSMESA_GLMULTICASTBARRIERNV = 3015, NFOSMESA_GLMULTICASTWAITSYNCNV = 3016, NFOSMESA_GLMULTICASTGETQUERYOBJECTIVNV = 3017, NFOSMESA_GLMULTICASTGETQUERYOBJECTUIVNV = 3018, NFOSMESA_GLMULTICASTGETQUERYOBJECTI64VNV = 3019, NFOSMESA_GLMULTICASTGETQUERYOBJECTUI64VNV = 3020, NFOSMESA_GLQUERYRESOURCENV = 3021, NFOSMESA_GLGENQUERYRESOURCETAGNV = 3022, NFOSMESA_GLDELETEQUERYRESOURCETAGNV = 3023, NFOSMESA_GLQUERYRESOURCETAGNV = 3024, NFOSMESA_GLFRAMEBUFFERSAMPLEPOSITIONSFVAMD = 3025, NFOSMESA_GLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMD = 3026, NFOSMESA_GLGETFRAMEBUFFERPARAMETERFVAMD = 3027, NFOSMESA_GLGETNAMEDFRAMEBUFFERPARAMETERFVAMD = 3028, NFOSMESA_GLWINDOWRECTANGLESEXT = 3029, NFOSMESA_GLAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL = 3030, NFOSMESA_GLVIEWPORTSWIZZLENV = 3031, NFOSMESA_GLVIEWPORTPOSITIONWSCALENV = 3032, NFOSMESA_GLCONSERVATIVERASTERPARAMETERFNV = 3033, NFOSMESA_GLCONSERVATIVERASTERPARAMETERINV = 3034, /* end of ARANFOSMESA_NFAPI_VERSION 4 */ aranym-1.1.0/atari/nfosmesa/crtinit.c0000664000175000017500000000563013454637621015740 0ustar joyjoy#include #include #include #include #define MINFREE (8L * 1024L) /* free at least this much mem on top */ long _stksize = 8 * 1024; BASEPAGE *_base; int errno; extern char **__environ; extern int main(void); void __main (void) { } static long parseargs(BASEPAGE *); extern void _setstack(char *newsp); void _crtinit(void) { register BASEPAGE *bp; register long m; register long freemem; bp = _base; /* m = # bytes used by environment + args */ m = parseargs(bp); /* make m the total number of bytes required by program sans stack/heap */ m += (bp->p_tlen + bp->p_dlen + bp->p_blen + sizeof(BASEPAGE)); m = (m + 3L) & (~3L); /* freemem the amount of free mem accounting for MINFREE at top */ if ((freemem = (long)bp->p_hitpa - (long)bp - MINFREE - m) <= 0L) goto notenough; /* make m the total number of bytes including stack */ m += _stksize; /* make sure there's enough room for the stack */ if (((long)bp + m) > ((long)bp->p_hitpa - MINFREE)) goto notenough; /* set up the new stack to bp + m */ _setstack((char *)bp + m); /* shrink the TPA */ (void)Mshrink(bp, m); Pterm(main()); __builtin_unreachable(); notenough: (void) Cconws("Fatal error: insufficient memory\r\n" "Hint: either decrease stack size using 'stack' command (not recomended)\r\n" " or increase TPA_INITIALMEM value in mint.cnf.\r\n"); Pterm(-1); __builtin_unreachable(); } /* * parseargs(bp): parse the environment and arguments pointed to by the * basepage. Return the number of bytes of environment and arguments * that have been appended to the bss area (the environ and argv arrays * are put here, as is a temporary buffer for the command line, if * necessary). * * The MWC extended argument passing scheme is assumed. * */ static long parseargs(BASEPAGE *bp) { long count = 4; /* compensate for aligning */ char *from; char **envp; /* flag to indicate desktop-style arg. passing */ long desktoparg; /* handle the environment first */ __environ = envp = (char **)(( (long)bp->p_bbase + bp->p_blen + 4) & (~3)); from = bp->p_env; while (*from) { *envp++ = from; count += 4; desktoparg = 1; while (*from) { if (*from == '=') desktoparg = 0; from++; } from++; /* skip 0 */ /* the desktop (and some shells) use the environment in the wrong * way, putting in "PATH=\0C:\0" instead of "PATH=C:". so if we * find an "environment variable" without an '=' in it, we * see if the last environment variable ended with '=\0', and * if so we append this one to the last one */ if (desktoparg && envp > &__environ[1]) { /* launched from desktop -- fix up env */ char *p, *q; q = envp[-2]; /* current one is envp[-1] */ while (*q) q++; if (q[-1] == '=') { p = *--envp; while (*p) *q++ = *p++; *q = '\0'; } } } *envp++ = (char *)0; count += 4; return count + 4; } aranym-1.1.0/atari/nfosmesa/crt0.S0000664000175000017500000000261513454637621015114 0ustar joyjoy| | The following external symbols are declared with .globl rather than | .extern in order to ensure they will be linked into the executable | even if they are not used in this file. .globl __base | BASEPAGE *, defined in globals.c .globl __heapbase | void * .globl __stksize | long, defined by user or in stksiz.c .globl _main | for references | | externs to pull ident strings of all used libraries into the | executable; if a library is not used, then the extern is | satisfied by a dummy in the library .globl ___Ident_gem | | Functions defined elsewhere. .extern __crtinit | void _crtinit(void); | | Assumption: basepage is passed in a0 for accessories; for programs | a0 is always 0. .text .even .globl __start __start: subl a6, a6 | clear a6 for debuggers cmpl #0, a0 | test if acc or program beqs __startprg | if a program, go elsewhere tstl a0@(36) | also test parent basepage pointer bnes __startprg | for accs, it must be 0 noreturn: bras noreturn | stupid user installd ldg as acc ;= | | program startup code: doesn''t actually do much, other than push | the basepage onto the stack and call _start1 in crtinit.c | __startprg: movel sp@(4), a0 | get basepage movel a0, __base | save it movel a0@(4), d0 | get _base->p_hitpa bclr #0, d0 | round off movel d0, sp | set stack (temporarily) subl #64, sp | see note in mintlib/setstack.S jmp __crtinit | in crtinit.c aranym-1.1.0/atari/nfosmesa/README0000664000175000017500000001730113454637621014776 0ustar joyjoytiny_gl.ldg =========== This is the replacement of tiny_gl, using the NFOSMesa native feature of ARAnyM for offscreen rendering. osmesa.ldg ========== This is the replacement of mesa_gl, using the NFOSMesa native feature of ARAnyM for offscreen rendering. It implements all functions of tiny_gl, and most of the other functions up to OpenGL standard 4.5 (about 2800 functions). nfosmesa.xdd ============ This was the MiNT driver used in previous versions. It is no longer needed. Installation ============ LDG must be installed for the library to be loaded/usable by applications. OSMesa is an OpenGL offscreen renderer, i.e. it renders images using host CPU in RAM. The result is then passed to the Atari application for final display. You can then substitute tiny_gl.ldg (or osmesa.ldg, but see BUGS below) by the version contained in the archive. It is usually located in c:\gemsys\ldg or the applications directory. ARAnyM should have been compiled with OpenGL support (which is done by default if it can be autodetected), and of course also with NFOSMesa support (which is currently not done by default and has to be enabled with --enable-nfosmesa). For OSMesa to operate properly, you must have OSMesa host's libraries compiled and installed, see the Mesa project page for more informations. Then, fill the [NFOSMESA] section of the ARAnyM configuration file: [NFOSMESA] LibGL = /path/to/libGL.so LibOSMesa = /path/to/libOSMesa.so LibGL may not be needed on all systems. On some systems, the OSMesa interface is already part of the GL library, this case is auto-detected (and LibOSMesa is not needed) In previous versions of ARAnyM, there was also a ChannelSize option to select a different OSMesa version. This is no longer recommended, and might not be supported in future versions. NEWS ==== - Both the cygwin and the MacOSX version of ARAnyM support this feature now, provided that the hosts native OpenGL library supports render buffers. For this to work, you should set the entry 'LibOSMesa' in the 'NFOSMESA' section of the config file to an empty string (do not remove it completely, that would just use the default value again). If Mesa is not found this way, offscreen render buffers will be used instead. Do not use this feature with an OpenGL screen window though (set [OPENGL] Enabled = No). Although it should work, due to the permanent context switches performance will suffer a lot. BUGS ==== - the exception_error() function of tiny_gl.ldg is exported, but it will only be called for certain operations (compatible to the native tiny_gl). When using osmesa.ldg, it is a no-op, and you should use glGetError() instead to check for errors. - Due to the design, usually all parameters that are supported by the hosts OSMesa library can be set with glEnable() etc. Remember however, that a native tiny_gl.ldg will only support a limited set of those. - Only framebuffers of type OSMESA_RGB (GL_RGB, 24bit RGB) should be used currently. This is the format that screen.ldg expects to display on the screen, and the only format that the native tiny_gl.ldg supports. If you need some other format, you a) have to use the full-featured osmesa.ldg b) have to make sure that you call glFinish() or glFlush() when done drawing. This is the function that converts the host buffer to the format you requested. This may or may not also slow down the framerate due to the additional conversion step. c) are on your own on displaying the result. - some GLU functions that are exported in the native mesa_gl.ldg are not yet implemented. - Functions that take doubles as arguments might be difficult to call from languages other than GNU-C. The library (and also the hosts OSMesa library) will expect them to be in 64bit IEEE-754 format. - If you need OSMesaPostprocess() (a function introduced in Mesa 10.x), you cannot use OSMesaCreateLDG(), because that conveniently makes the just created context current, and OSMesaPostprocess() must be called before that. You should look at lib-oldmesa.c to see what that function does and implement your own version in this case. - TinyGL exports some functions which take float arguments, but the original OpenGL functions take doubles as arguments. For compatibility, the tiny_gl.ldg exports only the float version, while osmesa.ldg exports both. The header files define the OpenGL version to the float versions. Functions that are affected by this are - gluLookAt - glFrustum - glOrtho - glClearDepth - Some functions that would return the address of some host buffer are currently not implemented at all. These include: - OSMesaGetDepthBuffer - OSMesaGetColorBuffer - glCreateSyncFromCLeventARB - glDebugMessageCallback - glDebugMessageCallbackAMD - glDebugMessageCallbackARB - glFenceSync - glMapBuffer - glMapBufferARB - glMapBufferRange - glMapObjectBufferATI - glMapNamedBuffer{EXT} - glMapNamedBufferRange{EXT} - glMapTexture2DINTEL - glImportSyncEXT - glProgramCallbackMESA - glTextureRangeAPPLE - glGetTexParameterPointervAPPLE - glInstrumentsBufferSGIX - glVDPAU* - Parameter checking is not as thorough as in the native implementation. If you do something weird, you might crash the emulator. - Sharing contexts is not supported yet. - The interface in the tiny_gl.ldg library is not thread-safe; consequently only one context can be created at any time (only tiny_gl.ldg is affected by this, osmesa.ldg, tiny_gl.slb and osmesa.slb are thread-safe). To use more than one context in your application, you have to use osmesa.ldg and create the context using OSMesaCreateContextExt. Note that the automatically generated loader code still uses some static variables to call the actual functions. Note also that screen.ldg currently seems to have a problem when called from more than 1 process; the examples work around this by using a copy of ldg_open() that loads a copy of the shared library instead. - OSMesaGetProcAddress can now be used as expected (ie. you can use the return value as a function pointer), provided that you use the generated loader code, but there may be several reasons for the function to fail: - You can only lookup functions that are known to the interface code. Functions that are defined by a later standard will not be found, even if they exist on the host, because the library does not know how to call them. - The functions must also be known to the shared library that was actually loaded, in case the version differs. - The function must also be known to ARAnyM. Again, this only matters if the interface version differs. - And finally, it must be found on the host. - The loader code is almost as large as the shared library. ERROR CODES =========== These codes are passed to the callback function installed with exception_error (taken from TinyGL): 1L = out of memory (need exit) 2L = list not defined (not need exit) 3L = glGet: option not implemented (not need exit) 4L = glViewport: error while resizing display (need exit) 5L = glViewport: size too small (need exit) 6L = Error allocating specular buffer (need exit) 7L = glTexImage2D: combination of parameters not handled (need exit) 8L = glTexParameter: unsupported option (not need exit) 9L = glPixelStore: unsupported option (need exit) 10L = glBegin: unsupported option (need exit) 11L = No sharing available in TinyGL (not need exit) 12L = zdither: not enough colors (not need exit) 13L = Insufficient memory Perhaps not need to exit 14L = can't save picture (not need exit) 100L = Warning low memory level (<32KB) (not need exit) 101L = Warning internal clipping error (not need exit) 102L = Warning: unknown pname in glGetFloatv() 103L = Warning: glEnableDisable: Option not supported (not need exit) aranym-1.1.0/atari/nfosmesa/Makefile0000664000175000017500000001261713454637621015563 0ustar joyjoyinclude ../CONFIGVARS # # The NFOSMesa code does nothing but call out to the # emulator, so there is no need to create extra m68k/20/30/40 versions. # We create a coldfire binary, though. # (of course a v4e binary makes only sense when Aranym is emulating a FireBEE ;) # CFLAGS = -O2 -fomit-frame-pointer -Wall -I. -DTGL_ENABLE_CHECKS ASFLAGS = LDFLAGS = -lldg -lgem NOSTARTUP=yes OBJECTS = nfosmesa.o lib-osmesa.o lib-oldmesa.o lib-misc.o lib-ldg.o lib-gl.o natfeat.o natfeat_asm.o ifeq ($(NOSTARTUP),yes) OBJECTS += crtinit.o libc.o LDFLAGS += -lgcc CRT0 = crt0.o STARTUP = -nostartfiles -nostdlib endif M68K_OBJECTS = $(OBJECTS:.o=_68k.o) MV4E_OBJECTS = $(OBJECTS:.o=_v4e.o) M68K_FLAGS = -m68000 M020_FLAGS = -m68020-60 M030_FLAGS = -m68030 -m68881 M060_FLAGS = -m68060 MV4E_FLAGS = -mcpu=5475 all: dirs m68k/osmesa.ldg v4e/osmesa.ldg \ m68k/tiny_gl.ldg v4e/tiny_gl.ldg \ m68k/tiny_gl.slb m68k/osmesa.slb crt0.o: crt0.S $(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $< m68k/osmesa.ldg: $(CRT0) $(M68K_OBJECTS) $(AM_V_LD)${CC} $(M68K_FLAGS) -o $@ $(STARTUP) $^ ${LDFLAGS} $(AM_V_at)${STRIP} $@ nfosmesa_68k.o: nfosmesa.c $(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $< lib-osmesa_68k.o: lib-osmesa.c $(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $< lib-oldmesa_68k.o: lib-oldmesa.c $(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $< lib-misc_68k.o: lib-misc.c $(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $< lib-ldg_68k.o: lib-ldg.c $(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $< lib-gl_68k.o: lib-gl.c $(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $< natfeat_68k.o: ../natfeat/natfeat.c $(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $< natfeat_asm_68k.o: ../natfeat/natfeat_asm.S $(AM_V_CC)$(CC) $(ASFLAGS) $(M68K_FLAGS) -c -o $@ $< v4e/osmesa.ldg: $(CRT0) $(MV4E_OBJECTS) $(AM_V_LD)${CC} $(MV4E_FLAGS) -o $@ $(STARTUP) $^ ${LDFLAGS} $(AM_V_at)${STRIP} $@ nfosmesa_v4e.o: nfosmesa.c $(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $< lib-osmesa_v4e.o: lib-osmesa.c $(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $< lib-oldmesa_v4e.o: lib-oldmesa.c $(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $< lib-misc_v4e.o: lib-misc.c $(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $< lib-ldg_v4e.o: lib-ldg.c $(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $< lib-gl_v4e.o: lib-gl.c $(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $< natfeat_v4e.o: ../natfeat/natfeat.c $(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $< natfeat_asm_v4e.o: ../natfeat/natfeat_asm.S $(AM_V_CC)$(CC) $(ASFLAGS) $(MV4E_FLAGS) -c -o $@ $< TINY_OBJECTS = nftiny_gl.o lib-osmesa.o lib-oldmesa.o lib-misc.o lib-ldg.o lib-tinygl.o natfeat.o natfeat_asm.o ifeq ($(NOSTARTUP),yes) TINY_OBJECTS += crtinit.o libc.o endif TINY_M68K_OBJECTS = $(TINY_OBJECTS:.o=_68k.o) TINY_MV4E_OBJECTS = $(TINY_OBJECTS:.o=_v4e.o) m68k/tiny_gl.ldg: $(CRT0) $(TINY_M68K_OBJECTS) $(AM_V_LD)${CC} $(M68K_FLAGS) -o $@ $(STARTUP) $^ ${LDFLAGS} $(AM_V_at)${STRIP} $@ nftiny_gl_68k.o: nftiny_gl.c $(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $< lib-tinygl_68k.o: lib-tinygl.c lib-gl.c $(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $< crtinit_68k.o: crtinit.c $(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $< libc_68k.o: libc.c $(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $< v4e/tiny_gl.ldg: $(CRT0) $(TINY_MV4E_OBJECTS) $(AM_V_LD)${CC} $(MV4E_FLAGS) -o $@ $(STARTUP) $^ ${LDFLAGS} $(AM_V_at)${STRIP} $@ nftiny_gl_v4e.o: nftiny_gl.c $(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $< lib-tinygl_v4e.o: lib-tinygl.c lib-gl.c $(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $< crtinit_v4e.o: crtinit.c $(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $< libc_v4e.o: libc.c $(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $< STRIPEX = ../tools/stripex # -ffreestanding is needed to prevent GNU-C from optimizing fprintf to fputs # -fno-unit-at-a-time is needed to prevent static functions # to be moved before the SLB header SLB_CFLAGS = -fno-unit-at-a-time -ffreestanding TINYGL_SLB_OBJS=tiny_gl_slb.o lib-osmesa_68k.o lib-oldmesa_68k.o lib-misc_68k.o libc_68k.o natfeat_68k.o natfeat_asm_68k.o OSMESA_SLB_OBJS=osmesa_slb.o lib-osmesa_68k.o lib-oldmesa_68k.o lib-misc_68k.o libc_68k.o natfeat_68k.o natfeat_asm_68k.o # -mprg-flags,15 is fastload, load to ttram, mallocs from ttram, and bit3 required for SLBs m68k/tiny_gl.slb: $(TINYGL_SLB_OBJS) $(STRIPEX) $(AM_V_LD)$(CC) $(M68K_FLAGS) -nostartfiles -nostdlib -Wl,--mprg-flags,15 -Wl,-b,a.out-mintprg -s -o $@ $(TINYGL_SLB_OBJS) -lgcc $(AM_V_at)$(STRIPEX) $@ m68k/osmesa.slb: $(OSMESA_SLB_OBJS) $(STRIPEX) $(AM_V_LD)$(CC) $(M68K_FLAGS) -nostartfiles -nostdlib -Wl,--mprg-flags,15 -Wl,-b,a.out-mintprg -s -o $@ $(OSMESA_SLB_OBJS) -lgcc $(AM_V_at)$(STRIPEX) $@ tiny_gl_slb.o: tiny_gl_slb.c $(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) $(SLB_CFLAGS) -c -o $@ $< osmesa_slb.o: osmesa_slb.c $(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) $(SLB_CFLAGS) -c -o $@ $< $(STRIPEX): ../tools/stripex.c $(AM_V_CC)$(NATIVECC) $(NATIVECFLAGS) -o $@ $< dirs: $(AM_V_at)$(MKDIR_P) m68k v4e clean: rm -f *.o m68k/*.ldg m68k/*.slb v4e/*.ldg v4e/*.slb $(STRIPEX) -rmdir m68k v4e TESTDIR=/windows/c/atari/src/ldg-code/test cptest: tinygl_load.c cp nfosmesa_load.c $(TESTDIR)/nfosmesa.c cp tinygl_load.c $(TESTDIR)/nftinygl.c cp tinygl_loadslb.c $(TESTDIR)/tinyslb.c cp ldg/nfosmesa.h $(TESTDIR)/ldg cp ldg/tiny_gl.h $(TESTDIR)/ldg cp slb/tiny_gl.h $(TESTDIR)/slb cd $(TESTDIR) && cr2nl -d -R . aranym-1.1.0/atari/nfjpeg/0000775000175000017500000000000013454637621013552 5ustar joyjoyaranym-1.1.0/atari/nfjpeg/nfjpeg_nfapi.h0000664000175000017500000000227513454637621016357 0ustar joyjoy/* NatFeat JPEG decoder ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFJPEG_NFAPI_H #define NFJPEG_NFAPI_H /* if you change anything in the enum {} below you have to increase this ARANFJPEG_NFAPI_VERSION! */ #define ARANFJPEG_NFAPI_VERSION 0x00000000 enum { GET_VERSION = 0, /* no parameters, return NFAPI_VERSION in d0 */ NFJPEG_OPENDRIVER, NFJPEG_CLOSEDRIVER, NFJPEG_GETSTRUCTSIZE, NFJPEG_GETIMAGEINFO, NFJPEG_GETIMAGESIZE, NFJPEG_DECODEIMAGE }; #define NFJPEG(a) (nfJpegId + a) #endif /* NFJPEG_NFAPI_H */ aranym-1.1.0/atari/nfjpeg/nfjpeg_functions.S0000664000175000017500000000310013454637621017231 0ustar joyjoy/* NatFeat JPEG decoder ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ .globl _OpenDriver .globl _CloseDriver .globl _GetImageInfo .globl _GetImageSize .globl _DecodeImage .globl _JpegDecOpenDriver .globl _JpegDecCloseDriver .globl _JpegDecGetImageInfo .globl _JpegDecGetImageSize .globl _JpegDecDecodeImage .text _OpenDriver: moveml d1/a0-a1,sp@- movel a0,sp@- bsr _JpegDecOpenDriver addql #4,sp moveml sp@+,d1/a0-a1 rts _CloseDriver: moveml d1/a0-a1,sp@- movel a0,sp@- bsr _JpegDecCloseDriver addql #4,sp moveml sp@+,d1/a0-a1 rts _GetImageInfo: moveml d1/a0-a1,sp@- movel a0,sp@- bsr _JpegDecGetImageInfo addql #4,sp moveml sp@+,d1/a0-a1 rts _GetImageSize: moveml d1/a0-a1,sp@- movel a0,sp@- bsr _JpegDecGetImageSize addql #4,sp moveml sp@+,d1/a0-a1 rts _DecodeImage: moveml d1/a0-a1,sp@- movel a0,sp@- bsr _JpegDecDecodeImage addql #4,sp moveml sp@+,d1/a0-a1 rts aranym-1.1.0/atari/nfjpeg/nfjpeg.c0000664000175000017500000002135313454637621015173 0ustar joyjoy/* NatFeat JPEG decoder ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Include ---*/ #include #include #include #include #include "../natfeat/nf_ops.h" #include "../nfpci/nfpci_cookie.h" #include "nfjpeg_nfapi.h" #include "jpgdh.h" /*--- Defines ---*/ #ifndef EINVFN #define EINVFN -32 #endif #ifndef DEV_CONSOLE #define DEV_CONSOLE 2 #endif #ifndef S_WRITE #define S_WRITE 1 #endif #ifndef MX_PREFTTRAM #define MX_PREFTTRAM 3 #endif #define DRIVER_NAME "ARAnyM host JPEG driver" #define VERSION "v0.4" static __inline__ long CALLJPEGROUTINE(JPGD_STRUCT *jpgd_ptr, short (*func_ptr)(JPGD_STRUCT *ptr)) { register short retvalue __asm__("d0"); __asm__ volatile ( " movl %[jpgd_ptr],%%a0\n" " jbsr %[func_ptr]@\n" : "=r"(retvalue) : [jpgd_ptr]"a"(jpgd_ptr), [func_ptr]"a"(func_ptr) /* the called functions have Pure-C calling conventions, and might trash d2 */ : __CLOBBER_RETURN("d0") "d1", "d2", "a0", "a1", "cc", "memory" ); return retvalue; } /*--- Functions prototypes ---*/ JPGD_ENUM JpegDecOpenDriver(JPGD_STRUCT *jpgd_ptr); JPGD_ENUM JpegDecCloseDriver(JPGD_STRUCT *jpgd_ptr); long JpegDecGetStructSize(void); JPGD_ENUM JpegDecGetImageInfo(JPGD_STRUCT *jpgd_ptr); JPGD_ENUM JpegDecGetImageSize(JPGD_STRUCT *jpgd_ptr); JPGD_ENUM JpegDecDecodeImage(JPGD_STRUCT *jpgd_ptr); JPGD_ENUM OpenDriver(JPGD_STRUCT *jpgd_ptr); JPGD_ENUM CloseDriver(JPGD_STRUCT *jpgd_ptr); JPGD_ENUM GetImageInfo(JPGD_STRUCT *jpgd_ptr); JPGD_ENUM GetImageSize(JPGD_STRUCT *jpgd_ptr); JPGD_ENUM DecodeImage(JPGD_STRUCT *jpgd_ptr); static void install_jpeg(void); /*--- Local variables ---*/ static const struct nf_ops *nfOps; static unsigned long nfJpegId; static JPGDDRV_STRUCT nfjpeg_cookie = { 0x00000001, OpenDriver, CloseDriver, JpegDecGetStructSize, GetImageInfo, GetImageSize, DecodeImage }; /*--- Functions ---*/ static void *Atari_MxAlloc(unsigned long size) { void *ptr = (void *)Mxalloc(size, MX_PREFTTRAM); if ((long)ptr == -32) ptr = (void *)Malloc(size); return ptr; } void install_driver(unsigned long resident_length) { (void) Cconws( "\033p " DRIVER_NAME " " VERSION " \033q\r\n" "Copyright (c) ARAnyM Development Team, " __DATE__ "\r\n" ); /* Check if _JPD already installed */ if (cookie_present(C__JPD, NULL)) { (void) Cconws("A JPEG driver is already installed on this system\r\n"); return; } /* Check if NF is present for NFJPEG */ nfOps = nf_init(); if (!nfOps) { (void) Cconws("Native Features not present on this system\r\n"); return; } nfJpegId = nfOps->get_id("JPEG"); if (nfJpegId == 0) { (void) Cconws("NF JPEG functions not present on this system\r\n"); return; } if (nfOps->call(NFJPEG(GET_VERSION)) != ARANFJPEG_NFAPI_VERSION) { (void) Cconws("NF JPEG: wrong interface version\r\n"); return; } { long size = nfOps->call(NFJPEG(NFJPEG_GETSTRUCTSIZE)); if (size != -32 && size != sizeof(JPGD_STRUCT)) (void) Cconws("NF JPEG: warning: struct size mismatch\r\n"); } install_jpeg(); Ptermres(resident_length, 0); for(;;); /* Never ending loop, should not go there */ } static void install_jpeg(void) { /* Add our cookie */ cookie_add(C__JPD, (unsigned long)&nfjpeg_cookie); } JPGD_ENUM JpegDecOpenDriver(JPGD_STRUCT *jpgd_ptr) { return nfOps->call(NFJPEG(NFJPEG_OPENDRIVER), jpgd_ptr); } JPGD_ENUM JpegDecCloseDriver(JPGD_STRUCT *jpgd_ptr) { return nfOps->call(NFJPEG(NFJPEG_CLOSEDRIVER), jpgd_ptr); } long JpegDecGetStructSize(void) { long size = nfOps->call(NFJPEG(NFJPEG_GETSTRUCTSIZE)); if (size == -32) size = sizeof(JPGD_STRUCT); return size; } JPGD_ENUM JpegDecGetImageInfo(JPGD_STRUCT *jpgd_ptr) { return nfOps->call(NFJPEG(NFJPEG_GETIMAGEINFO), jpgd_ptr); } JPGD_ENUM JpegDecGetImageSize(JPGD_STRUCT *jpgd_ptr) { return nfOps->call(NFJPEG(NFJPEG_GETIMAGESIZE), jpgd_ptr); } JPGD_ENUM JpegDecDecodeImage(JPGD_STRUCT *jpgd_ptr) { long row_length; JPGD_ENUM err = NOERROR; short xMCUs = 16; short yRows = 16; short yLoop, y; const struct nf_ops *ops = nfOps; row_length = (long)jpgd_ptr->XLoopCounter * xMCUs * yRows * jpgd_ptr->OutPixelSize; jpgd_ptr->OutTmpHeight = 0; yLoop = jpgd_ptr->YLoopCounter; jpgd_ptr->MCUsCounter = jpgd_ptr->XLoopCounter * yLoop; if (jpgd_ptr->OutFlag == 0) { /* Allocate memory to hold complete image */ if (jpgd_ptr->OutPointer == NULL) { return NOTENOUGHMEMORY; } jpgd_ptr->OutTmpPointer = jpgd_ptr->OutPointer; for (y = 0; y < yLoop; y++) { jpgd_ptr->OutTmpHeight = jpgd_ptr->MFDBPixelHeight - y * yRows; if (jpgd_ptr->OutTmpHeight > yRows) jpgd_ptr->OutTmpHeight = yRows; /* Decode Y row in OutTmpPointer */ jpgd_ptr->User[0] = y; err = ops->call(NFJPEG(NFJPEG_DECODEIMAGE), jpgd_ptr, (long)y); if (err != NOERROR) break; jpgd_ptr->MCUsCounter -= jpgd_ptr->XLoopCounter; if (jpgd_ptr->UserRoutine) { if (CALLJPEGROUTINE(jpgd_ptr, jpgd_ptr->UserRoutine) != 0) { err = USERABORT; break; } } jpgd_ptr->OutTmpPointer += row_length; } jpgd_ptr->MFDBAddress = jpgd_ptr->OutPointer; } else { const char *filename="output.tga"; short handle; jpgd_ptr->OutTmpPointer = Atari_MxAlloc(jpgd_ptr->XLoopCounter * xMCUs * yRows * 4); if (jpgd_ptr->OutTmpPointer == NULL) { return NOTENOUGHMEMORY; } /* Open file */ if (jpgd_ptr->Create) { handle = CALLJPEGROUTINE(jpgd_ptr, jpgd_ptr->Create); } else { if (jpgd_ptr->OutPointer) { filename = jpgd_ptr->OutPointer; } handle = Fcreate(filename, 0); } if (handle < 0) { Mfree(jpgd_ptr->OutTmpPointer); jpgd_ptr->OutTmpPointer = NULL; return (JPGD_ENUM) handle; } jpgd_ptr->OutHandle = handle; if (jpgd_ptr->Create == 0 && jpgd_ptr->Write == 0 && jpgd_ptr->Close == 0) { unsigned char tga_header[18]; tga_header[ 0] = 0; /* length of image ID field - we don't have one */ tga_header[ 1] = 0; /* color map type - none */ tga_header[ 2] = jpgd_ptr->OutPixelSize == 1 ? 3 : 2; /* image type - uncompressed grayscale/true color */ tga_header[ 3] = 0; /* color map specification */ tga_header[ 4] = 0; tga_header[ 5] = 0; tga_header[ 6] = 0; tga_header[ 7] = 0; tga_header[ 8] = 0; /* X-origin */ tga_header[ 9] = 0; tga_header[10] = 0; /* Y-origin */ tga_header[11] = 0; tga_header[12] = jpgd_ptr->MFDBPixelWidth; /* image width */ tga_header[13] = jpgd_ptr->MFDBPixelWidth >> 8; tga_header[14] = jpgd_ptr->MFDBPixelHeight; /* image height */ tga_header[15] = jpgd_ptr->MFDBPixelHeight >> 8; tga_header[16] = jpgd_ptr->OutPixelSize * 8; /* bits per pixel */ tga_header[17] = 0x20; /* image descriptor: origin in upper left, no alpha */ if (Fwrite(jpgd_ptr->OutHandle, sizeof(tga_header), tga_header) != sizeof(tga_header)) { err = DISKFULL; yLoop = 0; } } /* Write part of image to file */ for (y = 0; y < yLoop; y++) { jpgd_ptr->OutTmpHeight = jpgd_ptr->MFDBPixelHeight - y * yRows; if (jpgd_ptr->OutTmpHeight > yRows) jpgd_ptr->OutTmpHeight = yRows; /* Decode Y row in OutTmpPointer */ err = ops->call(NFJPEG(NFJPEG_DECODEIMAGE), jpgd_ptr, (long)y); if (err != NOERROR) break; jpgd_ptr->MCUsCounter -= jpgd_ptr->XLoopCounter; if (jpgd_ptr->UserRoutine) { if (CALLJPEGROUTINE(jpgd_ptr, jpgd_ptr->UserRoutine) != 0) { err = USERABORT; break; } } if (jpgd_ptr->Write) { if (CALLJPEGROUTINE(jpgd_ptr, jpgd_ptr->Write) < 0) { err = DISKFULL; break; } } else { long out_width = jpgd_ptr->MFDBPixelWidth * jpgd_ptr->OutPixelSize; long in_width = (long)jpgd_ptr->XLoopCounter * xMCUs * jpgd_ptr->OutPixelSize; short row; const char *in = jpgd_ptr->OutTmpPointer; for (row = 0; row < jpgd_ptr->OutTmpHeight && err == NOERROR; row++) { if (Fwrite(jpgd_ptr->OutHandle, out_width, in) != out_width) err = DISKFULL; in += in_width; } if (err != NOERROR) break; } } /* Close file */ if (jpgd_ptr->Close) { CALLJPEGROUTINE(jpgd_ptr, jpgd_ptr->Close); } else { Fclose(jpgd_ptr->OutHandle); } Mfree(jpgd_ptr->OutTmpPointer); jpgd_ptr->OutTmpPointer = NULL; } return err; } aranym-1.1.0/atari/nfjpeg/jpgdh.h0000664000175000017500000001344613454637621015027 0ustar joyjoy/* JPEGD header file (C) 1992-93 Brainstorm & Atari Corporation. to be included after vdi.h Last modification on 8-apr-1993. Modified for ARAnyM by Patrice Mandin */ #ifndef JPGDH_H #define JPGDH_H #if defined(__atarist__) || defined(__TOS__) #define VOID_PTR void * #define UCHAR_PTR unsigned char * #define FUNC_PTR(x,y) short (*x)(y) #define _LONG long #define _ULONG unsigned long #else /* otherwise in emulator */ #define VOID_PTR uint32 #define UCHAR_PTR uint32 #define FUNC_PTR(x,y) uint32 x #define _LONG int32 #define _ULONG uint32 #endif typedef struct _JPGD_STRUCT JPGD_STRUCT; typedef JPGD_STRUCT *JPGD_PTR; struct _JPGD_STRUCT { VOID_PTR InPointer; /* JPEG Image Pointer */ VOID_PTR OutPointer; /* Output Buffer/Filename Pointer (see OutFlag) */ _LONG InSize; /* JPEG Image Size (Bytes) */ _LONG OutSize; /* Output Image Size (Bytes) */ short InComponents; /* JPEG Image Components Number (1->4) */ short OutComponents; /* Output Components Number (1->4) */ short OutPixelSize; /* Output Pixel Size (1->4) */ short OutFlag; /* 0 (RAM Output) / -1 (Disk Output) */ short XLoopCounter; /* Number of MCUs per Row */ short YLoopCounter; /* Number of MCUs per Column */ FUNC_PTR(Create, JPGD_STRUCT *); /* Pointer to User Routine / NULL */ FUNC_PTR(Write, JPGD_STRUCT *); /* Pointer to User Routine / NULL */ FUNC_PTR(Close, JPGD_STRUCT *); /* Pointer to User Routine / NULL */ FUNC_PTR(SigTerm, JPGD_STRUCT *); /* Pointer to User Routine / NULL */ UCHAR_PTR Comp1GammaPtr; /* Component 1 Gamma Table / NULL */ UCHAR_PTR Comp2GammaPtr; /* Component 2 Gamma Table / NULL */ UCHAR_PTR Comp3GammaPtr; /* Component 3 Gamma Table / NULL */ UCHAR_PTR Comp4GammaPtr; /* Component 4 Gamma Table / NULL */ FUNC_PTR(UserRoutine, JPGD_STRUCT *); /* Pointer to User Routine (Called during Decompression) / NULL */ VOID_PTR OutTmpPointer; /* Current OutPointer / Temporary Disk Buffer Pointer (see OutFlag) */ short MCUsCounter; /* Number of MCUs not Decoded */ short OutTmpHeight; /* Number of Lines in OutTmpPointer */ _LONG User[2]; /* Free, Available for User */ short OutHandle; /* 0 / Output File Handle (see OutFlag) */ /* Output image MFDB */ VOID_PTR MFDBAddress; short MFDBPixelWidth; short MFDBPixelHeight; short MFDBWordSize; short MFDBFormatFlag; short MFDBBitPlanes; short MFDBReserved1; short MFDBReserved2; short MFDBReserved3; /* Official structure stop here, what follows is decoder-dependant */ _ULONG handle; /* ARAnyM image handle */ } __attribute__((packed)); #define JPGD_MAGIC 0x5F4A5044L /* '_JPD' */ #define JPGD_VERSION 1 #undef NOERROR enum _JPGD_ENUM { NOERROR=0, /* File correctly uncompressed */ UNKNOWNFORMAT, /* File is not JFIF (Error) */ INVALIDMARKER, /* Reserved CCITT Marker Found (Error) */ SOF1MARKER, /* Mode not handled by the decoder (Error) */ SOF2MARKER, /* Mode not handled by the decoder (Error) */ SOF3MARKER, /* Mode not handled by the decoder (Error) */ SOF5MARKER, /* Mode not handled by the decoder (Error) */ SOF6MARKER, /* Mode not handled by the decoder (Error) */ SOF7MARKER, /* Mode not handled by the decoder (Error) */ SOF9MARKER, /* Mode not handled by the decoder (Error) */ SOF10MARKER, /* Mode not handled by the decoder (Error) */ SOF11MARKER, /* Mode not handled by the decoder (Error) */ SOF13MARKER, /* Mode not handled by the decoder (Error) */ SOF14MARKER, /* Mode not handled by the decoder (Error) */ SOF15MARKER, /* Mode not handled by the decoder (Error) */ RSTmMARKER, /* Unexpected RSTm found (Error) */ BADDHTMARKER, /* Buggy DHT Marker (Error) */ DACMARKER, /* Marker not handled by the decoder (Error) */ BADDQTMARKER, /* Buggy DQT Marker (Error) */ BADDNLMARKER, /* Invalid/Unexpected DNL Marker (Error) */ BADDRIMARKER, /* Invalid DRI Header Size (Error) */ DHPMARKER, /* Marker not handled by the decoder (Error) */ EXPMARKER, /* Marker not handled by the decoder (Error) */ BADSUBSAMPLING, /* Invalid components subsampling (Error) */ NOTENOUGHMEMORY, /* Not enough memory... (Error) */ DECODERBUSY, /* Decoder is busy (Error) */ DSPBUSY, /* Can't lock the DSP (Error) */ BADSOFnMARKER, /* Buggy SOFn marker (Error) */ BADSOSMARKER, /* Buggy SOS marker (Error) */ HUFFMANERROR, /* Buggy Huffman Stream (Error) */ BADPIXELFORMAT, /* Invalid Output Pixel Format (Error) */ DISKFULL, /* Hard/Floppy Disk Full (Error) */ MISSINGMARKER, /* Marker expected but not found (Error) */ IMAGETRUNCATED, /* More bytes Needed (Error) */ EXTRABYTES, /* Dummy Bytes after EOI Marker (Warning) */ USERABORT, /* User Routine signaled 'Abort' */ DSPMEMORYERROR, /* Not Enough DSP RAM (Error) */ NORSTmMARKER, /* RSTm Marker expected but not found */ BADRSTmMARKER, /* Invalid RSTm Marker Number */ DRIVERCLOSED, /* Driver is Already Closed. */ ENDOFIMAGE /* Stop Decoding (Internal Message, Should Never Appear) */ }; typedef long JPGD_ENUM; typedef struct { long JPGDVersion; JPGD_ENUM (*JPGDOpenDriver)(JPGD_PTR); JPGD_ENUM (*JPGDCloseDriver)(JPGD_PTR); long (*JPGDGetStructSize)(void); JPGD_ENUM (*JPGDGetImageInfo)(JPGD_PTR); JPGD_ENUM (*JPGDGetImageSize)(JPGD_PTR); JPGD_ENUM (*JPGDDecodeImage)(JPGD_PTR); } __attribute__((packed)) JPGDDRV_STRUCT; typedef JPGDDRV_STRUCT *JPGDDRV_PTR; #define JPGDOpenDriver(x,y) (x->JPGDOpenDriver)(y) #define JPGDCloseDriver(x,y) (x->JPGDCloseDriver)(y) #define JPGDGetStructSize(x) (x->JPGDGetStructSize)() #define JPGDGetImageInfo(x,y) (x->JPGDGetImageInfo)(y) #define JPGDGetImageSize(x,y) (x->JPGDGetImageSize)(y) #define JPGDDecodeImage(x,y) (x->JPGDDecodeImage)(y) #endif /* JPGDH_H */ aranym-1.1.0/atari/nfjpeg/entry.S0000664000175000017500000000221013454637621015032 0ustar joyjoy/* NatFeat JPEG decoder ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ .globl _init_driver, _install_driver .text /* Calculate length to keep resident */ _init_driver: movl sp@(4),a0 /* Read basepage pointer */ movl #0x100.w,d0 /* Length of basepage */ addl a0@(12),d0 /* Add TEXT length */ addl a0@(20),d0 /* Add DATA length */ addl a0@(28),d0 /* Add BSS length */ movl d0,sp@- bsr _install_driver addql #4,sp clrw sp@- /* If any error, quit program */ trap #1 aranym-1.1.0/atari/nfjpeg/Makefile0000664000175000017500000000100213454637621015203 0ustar joyjoy TARGET = nfjpeg.prg COBJS = nfjpeg.c ../natfeat/natfeat.c ../nfpci/nfpci_cookie.c SOBJS = entry.S nfjpeg_functions.S ../natfeat/natfeat_asm.S include ../CONFIGVARS CFLAGS = -O2 -fomit-frame-pointer -Wall -W -Wstrict-prototypes LDFLAGS = -nostdlib -Wl,--entry -Wl,_init_driver -lgcc -lc COBJECTS = $(COBJS:.c=.o) SOBJECTS = $(SOBJS:.S=.o) all: $(TARGET) $(TARGET): $(COBJECTS) $(SOBJECTS) ${CC} -o $@ $(COBJECTS) $(SOBJECTS) ${LDFLAGS} ${STRIP} $(TARGET) clean: rm -f $(COBJECTS) $(SOBJECTS) $(TARGET) aranym-1.1.0/atari/nfcdrom/0000775000175000017500000000000013454637621013731 5ustar joyjoyaranym-1.1.0/atari/nfcdrom/nfcdrom_nfapi.h0000664000175000017500000000261713454637621016715 0ustar joyjoy/* * NatFeat host CD-ROM access: MetaDOS BOS driver, NatFeat functions * * ARAnyM (C) 2003 Patrice Mandin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _NFCDROM_NFAPI_H #define _NFCDROM_NFAPI_H /* if you change anything in the enum {} below you have to increase this ARANFCDROM_NFAPI_VERSION! */ #define ARANFCDROM_NFAPI_VERSION 0x00000000 enum { GET_VERSION = 0, /* no parameters, return NFAPI_VERSION in d0 */ NFCD_OPEN, NFCD_CLOSE, NFCD_READ, NFCD_WRITE, NFCD_SEEK, NFCD_STATUS, NFCD_IOCTL, NFCD_UNDEF8, NFCD_UNDEF9, NFCD_UNDEF10, NFCD_STARTAUDIO, NFCD_STOPAUDIO, NFCD_SETSONGTIME, NFCD_GETTOC, NFCD_DISCINFO, NFCD_DRIVESMASK }; #define NFCDROM(a) (nfCdRomId + a) #endif /* _NFCDROM_NFAPI_H */ aranym-1.1.0/atari/nfcdrom/nfcdrom.c0000664000175000017500000001767213454637621015542 0ustar joyjoy/* NatFeat host CD-ROM access, MetaDOS BOS driver ARAnyM (C) 2003 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Include ---*/ #include #include #include #include #include "../natfeat/nf_ops.h" #include "metados_bos.h" #include "nfcdrom_nfapi.h" /*--- Defines ---*/ #ifndef EINVFN #define EINVFN -32 #endif #ifndef DEV_CONSOLE #define DEV_CONSOLE 2 #endif #define DRIVER_NAME "ARAnyM host CD-ROM driver" #define VERSION "v0.2" static const char device_name[METADOS_BOSDEVICE_NAMELEN]={ "ARAnyM CD-ROM driver" }; /*--- Functions prototypes ---*/ metados_bosheader_t *asm_init_devices(void); long asm_cd_open(metaopen_t *metaopen); long asm_cd_close(void); long asm_cd_read(void *buffer, unsigned long first, unsigned short length); long asm_cd_write(void *buffer, unsigned long first, unsigned short length); long asm_cd_seek(unsigned long offset); long asm_cd_status(metastatus_t *ext_status); long asm_cd_ioctl(unsigned long magic, unsigned short opcode, void *buffer); long asm_cd_startaudio(unsigned short dummy, metatracks_t *tracks); long asm_cd_stopaudio(void); long asm_cd_setsongtime(unsigned short dummy, unsigned long start_msf, unsigned long end_msf); long asm_cd_gettoc(unsigned short dummy, metatocentry_t *toc_header); long asm_cd_discinfo(metadiscinfo_t *discinfo); long cd_open(metados_bosheader_t *device, metaopen_t *metaopen); long cd_close(metados_bosheader_t *device); long cd_read(metados_bosheader_t *device, void *buffer, unsigned long first, unsigned long length); long cd_write(metados_bosheader_t *device, void *buffer, unsigned long first, unsigned long length); long cd_seek(metados_bosheader_t *device, unsigned long offset); long cd_status(metados_bosheader_t *device, metastatus_t *ext_status); long cd_ioctl(metados_bosheader_t *device, unsigned long magic, unsigned long opcode, void *buffer); long cd_startaudio(metados_bosheader_t *device, unsigned long dummy, metatracks_t *tracks); long cd_stopaudio(metados_bosheader_t *device); long cd_setsongtime(metados_bosheader_t *device, unsigned long dummy, unsigned long start_msf, unsigned long end_msf); long cd_gettoc(metados_bosheader_t *device, unsigned long dummy, metatocentry_t *toc_header); long cd_discinfo(metados_bosheader_t *device, metadiscinfo_t *discinfo); metados_bosheader_t *init_devices(unsigned long phys_letter, unsigned long phys_channel); static void press_any_key(void); /*--- Local variables ---*/ static const struct nf_ops *nfOps; static unsigned long nfCdRomId; static unsigned long drives_mask; static metados_bosheader_t * (*device_init_f)(void)=asm_init_devices; /*--- Functions prototypes ---*/ void *init_driver(void); /*--- Functions ---*/ void *init_driver(void) { int i; char letter[2]={0,0}; Cconws( "\033p " DRIVER_NAME " " VERSION " \033q\r\n" "Copyright (c) ARAnyM Development Team, " __DATE__ "\r\n" ); drives_mask=0; nfOps = nf_init(); if (!nfOps) { Cconws("__NF cookie not present on this system\r\n"); press_any_key(); return &device_init_f; } /* List present drives */ nfCdRomId=nfOps->get_id("CDROM"); if (nfCdRomId == 0) { Cconws("NF CD-ROM functions not present on this system\r\n"); press_any_key(); return &device_init_f; } drives_mask=nfOps->call(NFCDROM(NFCD_DRIVESMASK)); Cconws(" Host drives present: "); for (i='A'; i<='Z'; i++) { if (drives_mask & (1<<(i-'A'))) { letter[0]=i; Cconws(letter); } } Cconws("\r\n"); return &device_init_f; } static void press_any_key(void) { Cconws("- Press any key to continue -\r\n"); Crawcin(); } metados_bosheader_t *init_devices(unsigned long phys_letter, unsigned long phys_channel) { unsigned char *newcdrom; metados_bosheader_t *DefaultCdrom; metados_bosfunctions_t *DefaultFunctions; if (nfCdRomId == 0) { Cconws(" ARAnyM host CD-ROM driver unavailable\r\n"); return (metados_bosheader_t *)-39; } newcdrom = (unsigned char *)Malloc(sizeof(metados_bosheader_t)+sizeof(metados_bosfunctions_t)); if (newcdrom == NULL) { return (metados_bosheader_t *)-39; } DefaultCdrom = (metados_bosheader_t *) newcdrom; DefaultFunctions = (metados_bosfunctions_t *) (newcdrom + sizeof(metados_bosheader_t)); DefaultCdrom->next=NULL; DefaultCdrom->attrib=0; DefaultCdrom->phys_letter=phys_letter; DefaultCdrom->dma_channel=phys_channel; DefaultCdrom->functions=DefaultFunctions; DefaultCdrom->functions->init=(long (*)(metainit_t *metainit)) 0xffffffffUL; DefaultCdrom->functions->open=asm_cd_open; DefaultCdrom->functions->close=asm_cd_close; DefaultCdrom->functions->read=asm_cd_read; DefaultCdrom->functions->write=asm_cd_write; DefaultCdrom->functions->seek=asm_cd_seek; DefaultCdrom->functions->status=asm_cd_status; DefaultCdrom->functions->ioctl=asm_cd_ioctl; DefaultCdrom->functions->function08=(long (*)(void)) 0xffffffffUL; DefaultCdrom->functions->function09=(long (*)(void)) 0xffffffffUL; DefaultCdrom->functions->function0a=(long (*)(void)) 0xffffffffUL; DefaultCdrom->functions->startaudio=asm_cd_startaudio; DefaultCdrom->functions->stopaudio=asm_cd_stopaudio; DefaultCdrom->functions->setsongtime=asm_cd_setsongtime; DefaultCdrom->functions->gettoc=asm_cd_gettoc; DefaultCdrom->functions->discinfo=asm_cd_discinfo; DefaultCdrom->status=0; strncpy(DefaultCdrom->name, device_name, METADOS_BOSDEVICE_NAMELEN); return DefaultCdrom; } long cd_open(metados_bosheader_t *device, metaopen_t *metaopen) { metaopen->name = device->name; metaopen->reserved[0] = metaopen->reserved[1] = metaopen->reserved[2] = 0; return nfOps->call(NFCDROM(NFCD_OPEN), device, metaopen); } long cd_close(metados_bosheader_t *device) { return nfOps->call(NFCDROM(NFCD_CLOSE), device); } long cd_read(metados_bosheader_t *device, void *buffer, unsigned long first, unsigned long length) { return nfOps->call(NFCDROM(NFCD_READ), device, buffer, first, length); } long cd_write(metados_bosheader_t *device, void *buffer, unsigned long first, unsigned long length) { return nfOps->call(NFCDROM(NFCD_WRITE), device, buffer, first, length); } long cd_seek(metados_bosheader_t *device, unsigned long offset) { return nfOps->call(NFCDROM(NFCD_SEEK), device, offset); } long cd_status(metados_bosheader_t *device, metastatus_t *extended_status) { if (extended_status != NULL) { memset(extended_status, 0, sizeof(metastatus_t)); } return nfOps->call(NFCDROM(NFCD_STATUS), device, extended_status); } long cd_ioctl(metados_bosheader_t *device, unsigned long magic, unsigned long opcode, void *buffer) { if (magic != METADOS_IOCTL_MAGIC) { return EINVFN; } return nfOps->call(NFCDROM(NFCD_IOCTL), device, opcode, buffer); } long cd_startaudio(metados_bosheader_t *device, unsigned long dummy, metatracks_t *tracks) { return nfOps->call(NFCDROM(NFCD_STARTAUDIO), device, dummy, tracks); } long cd_stopaudio(metados_bosheader_t *device) { return nfOps->call(NFCDROM(NFCD_STOPAUDIO), device); } long cd_setsongtime(metados_bosheader_t *device, unsigned long dummy, unsigned long start_msf, unsigned long end_msf) { return nfOps->call(NFCDROM(NFCD_SETSONGTIME), device, dummy, start_msf, end_msf); } long cd_gettoc(metados_bosheader_t *device, unsigned long dummy, metatocentry_t *toc_header) { return nfOps->call(NFCDROM(NFCD_GETTOC), device, dummy, toc_header); } long cd_discinfo(metados_bosheader_t *device, metadiscinfo_t *discinfo) { return nfOps->call(NFCDROM(NFCD_DISCINFO), device, discinfo); } aranym-1.1.0/atari/nfcdrom/metados_bos.h0000664000175000017500000000375513454637621016413 0ustar joyjoy/* MetaDOS BOS driver definitions ARAnyM (C) 2003 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _METADOS_BOS_H #define _METADOS_BOS_H #include "metados.h" #define METADOS_BOSDEVICE_NAMELEN 32 typedef struct { long (*init)(metainit_t *metainit); long (*open)(metaopen_t *metaopen); long (*close)(void); long (*read)(void *buffer, unsigned long first, unsigned short length); long (*write)(void *buffer, unsigned long first, unsigned short length); long (*seek)(unsigned long offset); long (*status)(metastatus_t *extended_status); long (*ioctl)(unsigned long magic, unsigned short opcode, void *buffer); long (*function08)(void); long (*function09)(void); long (*function0a)(void); long (*startaudio)(unsigned short dummy, metatracks_t *tracks); long (*stopaudio)(void); long (*setsongtime)(unsigned short dummy, unsigned long start_msf, unsigned long end_msf); long (*gettoc)(unsigned short dummy, metatocentry_t *tocheader); long (*discinfo)(metadiscinfo_t *discinfo); } metados_bosfunctions_t; typedef struct { void *next; unsigned long attrib; unsigned short phys_letter; unsigned short dma_channel; unsigned short sub_device; metados_bosfunctions_t *functions; unsigned short status; unsigned long reserved[2]; char name[METADOS_BOSDEVICE_NAMELEN]; } metados_bosheader_t; #endif /* _METADOS_BOS_H */ aranym-1.1.0/atari/nfcdrom/metados.h0000664000175000017500000001001513454637621015533 0ustar joyjoy/* Metados Copyright (C) 2002 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _METADOS_H #define _METADOS_H #include /* for trap_14_xxx macros */ #ifndef OSBIND_CLOBBER_LIST #define OSBIND_CLOBBER_LIST "d0", "d1", "d2", "a0", "a1", "a2", "memory" #endif #ifndef trap_14_wwlwl #define trap_14_wwlwl(n,a,b,c,d) \ __extension__ \ ({ \ register long retvalue __asm__("d0"); \ short _a = (short)(a); \ long _b = (long)(b); \ short _c = (short)(c); \ long _d = (long)(d); \ \ __asm__ volatile ( \ "movl %5,sp@-\n\t" \ "movw %4,sp@-\n\t" \ "movl %3,sp@-\n\t" \ "movw %2,sp@-\n\t" \ "movw %1,sp@-\n\t" \ "trap #14\n\t" \ "lea sp@(14),sp" \ : "=r"(retvalue) \ : "g"(n), "r"(_a), "r"(_b), "r"(_c), "r"(_d) \ : OSBIND_CLOBBER_LIST \ ); \ retvalue; \ }) #endif /*--- Functions prototypes ---*/ #define Metainit(buffer) \ (void)trap_14_wl((short)0x30,(long)buffer) #define Metaopen(drive,buffer) \ (long)trap_14_wwl((short)0x31,(short)drive,(long)buffer) #define Metaclose(drive) \ (void)trap_14_ww((short)0x32,(short)drive) #define Metaread(drive,buffer,first_block,nb_blocks) \ (long)trap_14_wwllw((short)0x33,(short)drive,(long)buffer,(long)first_block,(short)nb_blocks) #define Metawrite(drive,buffer,first_block,nb_blocks) \ (long)trap_14_wwllw((short)0x34,(short)drive,(long)buffer,(long)first_block,(short)nb_blocks) #define Metaseek(drive,dummy,offset) \ (long)trap_14_wwll((short)0x35,(short)(drive),(long)(dummy),(long)(offset)) #define Metastatus(void) \ (long)trap_14_wl((short)0x36,(long)(buffer)) #define Metaioctl(drive,magic,opcode,buffer) \ (long)trap_14_wwlwl((short)(0x37),(short)(drive),(long)(magic),(short)(opcode),(long)(buffer)) #define Metastartaudio(drive,dummy,metatracks_t_p) \ (long)trap_14_wwwl((short)(0x3b),(short)(drive),(short)(dummy),(long)(metatracks_t_p)) #define Metastopaudio(drive) \ (long)trap_14_ww((short)(0x3c),(short)(drive)) #define Metasetsongtime(drive,dummy,start,end) \ (long)trap_14_wwwll((short)(0x3d),(short)(drive),(short)(dummy),(long)(start),(long)(end)) #define Metagettoc(drive,dummy,metatocentry_t_p) \ (long)trap_14_wwwl((short)(0x3e),(short)(drive),(short)(dummy),(long)(metatocentry_t_p)) #define Metadiscinfo(drive,metadiscinfo_t_p) \ (long)trap_14_wwl((short)(0x3f),(short)(drive),(long)(metadiscinfo_t_p)) #define METADOS_IOCTL_MAGIC (('F'<<24)|('C'<<16)|('T'<<8)|'L') /*--- Types ---*/ typedef struct { unsigned short version; unsigned long magic; char *log2phys; } metainfo_t; typedef struct { unsigned long drives_map; char *version; unsigned long reserved; metainfo_t *info; } metainit_t; typedef struct { char *name; unsigned long reserved[3]; } metaopen_t; typedef struct { char ext_status[32]; } metastatus_t; typedef struct { unsigned char count; unsigned char first; } metatracks_t; typedef struct { /* TOC entry for MetaGetToc() function */ unsigned char track; unsigned char minute; unsigned char second; unsigned char frame; } metatocentry_t; typedef struct { unsigned char reserved; unsigned char minute; unsigned char second; unsigned char frame; } metadisc_msf_t; typedef struct { /* Discinfo for MetaDiscInfo() function */ unsigned char disctype, first, last, current; metadisc_msf_t relative; metadisc_msf_t absolute; metadisc_msf_t end; unsigned char index, reserved1[3]; unsigned long reserved2[123]; } metadiscinfo_t; #endif /* _METADOS_H */ aranym-1.1.0/atari/nfcdrom/entry.S0000664000175000017500000001267213454637621015226 0ustar joyjoy/* NatFeat host CD-ROM access, MetaDOS BOS driver entry points ARAnyM (C) 2003 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ .text .globl _asm_init_devices, _init_devices .globl _asm_cd_open, _cd_open .globl _asm_cd_close, _cd_close .globl _asm_cd_read, _cd_read .globl _asm_cd_write, _cd_write .globl _asm_cd_seek, _cd_seek .globl _asm_cd_status, _cd_status .globl _asm_cd_ioctl, _cd_ioctl .globl _asm_cd_startaudio, _cd_startaudio .globl _asm_cd_stopaudio, _cd_stopaudio .globl _asm_cd_setsongtime, _cd_setsongtime .globl _asm_cd_gettoc, _cd_gettoc .globl _asm_cd_discinfo, _cd_discinfo /*--- Function to create a bos header ---*/ _asm_init_devices: /* Input: d0.w physical drive letter d1.w dma channel Forward: 0(sp) physical drive letter 4(sp) dma channel */ andl #0xffff,d1 movl d1,sp@- andl #0xffff,d0 movl d0,sp@- bsr _init_devices addql #8,sp rts /*--- MetaDOS BOS functions frontends ---*/ _asm_cd_open: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) metaopen_t *metaopen Forward: 0(sp) metados_bosheader_t *device 4(sp) metaopen_t *metaopen */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _cd_open addql #8,sp rts _asm_cd_close: /* Input: a0 metados_bosheader_t *device 0(sp) return address Forward: 0(sp) metados_bosheader_t *device */ movl a0,sp@- bsr _cd_close addql #4,sp rts _asm_cd_read: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned short length Forward: 0(sp) metados_bosheader_t *device 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned long length */ movl sp,a1 clrl d0 movw 12(a1),d0 movl d0,sp@- movl 8(a1),sp@- movl 4(a1),sp@- movl a0,sp@- bsr _cd_read lea sp@(16),sp rts _asm_cd_write: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned short length Forward: 0(sp) metados_bosheader_t *device 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned long length */ movl sp,a1 clrl d0 movw 12(a1),d0 movl d0,sp@- movl 8(a1),sp@- movl 4(a1),sp@- movl a0,sp@- bsr _cd_write lea sp@(16),sp rts _asm_cd_seek: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unsigned long offset Forward: 0(sp) metados_bosheader_t *device 4(sp) unsigned long offset */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _cd_seek addql #8,sp rts _asm_cd_status: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) metados_bosstatus_t *extended_status; Forward: 0(sp) metados_bosheader_t *device 4(sp) metados_bosstatus_t *extended_status; */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _cd_status addql #8,sp rts _asm_cd_ioctl: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unsigned long magic 8(sp) unsigned short opcode 10(sp) void *buffer; Forward: 0(sp) metados_bosheader_t *device 4(sp) unsigned long magic 8(sp) unsigned long opcode 12(sp) void *buffer; */ movl sp,a1 movl 10(a1),sp@- clrl d0 movw 8(a1),d0 movl d0,sp@- movl 4(a1),sp@- movl a0,sp@- bsr _cd_ioctl lea sp@(16),sp rts _asm_cd_startaudio: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unknown parameter 6(sp) unsigned char *tracks Forward: 0(sp) metados_bosheader_t *device 4(sp) unknown parameter 8(sp) unsigned char *tracks */ movl sp,a1 movl 6(a1),sp@- clrl d0 movw 4(a1),d0 movl d0,sp@- movl a0,sp@- bsr _cd_startaudio lea sp@(12),sp rts _asm_cd_stopaudio: /* Input: a0 metados_bosheader_t *device 0(sp) return address Forward: 0(sp) metados_bosheader_t *device */ movl a0,sp@- bsr _cd_stopaudio addql #4,sp rts _asm_cd_setsongtime: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unknown parameter 6(sp) start_msf 10(sp) end_msf Forward: 0(sp) metados_bosheader_t *device 4(sp) unknown parameter 8(sp) start_msf 12(sp) end_msf */ movl sp,a1 movl 10(a1),sp@- movl 6(a1),sp@- clrl d0 movw 4(a1),d0 movl d0,sp@- movl a0,sp@- bsr _cd_setsongtime lea sp@(16),sp rts _asm_cd_gettoc: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) dummy 6(sp) toc_header_t *toc_header Forward: 0(sp) metados_bosheader_t *device 4(sp) dummy 8(sp) toc_header_t *toc_header */ movl sp,a1 movl 6(a1),sp@- clrl d0 movw 4(a1),d0 movl d0,sp@- movl a0,sp@- bsr _cd_gettoc lea sp@(12),sp rts _asm_cd_discinfo: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) metados_bosdiscinfo_t *discinfo Forward: 0(sp) metados_bosheader_t *device 4(sp) metados_bosdiscinfo_t *discinfo */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _cd_discinfo addql #8,sp rts aranym-1.1.0/atari/nfcdrom/Makefile0000664000175000017500000000067613454637621015402 0ustar joyjoy TARGET = nfcdrom.bos COBJS = nfcdrom.c ../natfeat/natfeat.c SOBJS = entry.S ../natfeat/natfeat_asm.S include ../CONFIGVARS CFLAGS = $(OPTS) $(WARN) $(GENERAL) LDFLAGS = -nostdlib -Wl,--entry -Wl,_init_driver -lgcc -lc COBJECTS = $(COBJS:.c=.o) SOBJECTS = $(SOBJS:.S=.o) all: $(TARGET) $(TARGET): $(COBJECTS) $(SOBJECTS) ${CC} -o $@ $(COBJECTS) $(SOBJECTS) ${LDFLAGS} ${STRIP} $(TARGET) clean: rm -f $(COBJECTS) $(SOBJECTS) $(TARGET) aranym-1.1.0/atari/newdesk.inf0000664000175000017500000000141513454637621014440 0ustar joyjoy#a000000 #b000000 #c7770007000600070055200505552220770557075055507703111103 #d #K 4F 53 4C 00 46 42 43 57 45 58 00 00 00 00 00 00 00 00 00 00 00 00 00 52 00 00 4D 56 00 00 00 @ #E 18 05 00 06 00 3C 00 00 00 00 #Q 41 70 73 70 7D 70 #W 00 00 00 07 4C 0C 00 @ #W 00 00 02 0B 4C 09 00 @ #W 00 00 0A 0F 34 09 00 @ #W 00 00 0E 01 34 09 00 @ #W 00 00 04 07 4C 0C 00 @ #W 00 00 0C 0B 4C 09 00 @ #W 00 00 08 0F 34 09 00 @ #W 00 00 06 01 34 09 00 @ #N FF 04 000 @ *.*@ @ #D FF 01 000 @ *.*@ @ #G 03 FF 000 *.APP@ @ @ #G 03 FF 000 *.PRG@ @ @ #Y 03 FF 000 *.GTP@ @ @ #P 03 FF 000 *.TTP@ @ @ #F 03 04 000 *.TOS@ @ @ #M 00 01 00 FF C HARD DISK@ @ #M 00 00 00 FF A FLOPPY DISK@ @ #M 01 00 00 FF B FLOPPY DISK@ @ #T 00 07 02 FF TRASH@ @ aranym-1.1.0/atari/network/0000775000175000017500000000000013454637621013772 5ustar joyjoyaranym-1.1.0/atari/network/linux-m68k/0000775000175000017500000000000013454637621015714 5ustar joyjoyaranym-1.1.0/atari/network/linux-m68k/natfeat.h0000664000175000017500000000174313454637621017514 0ustar joyjoy/* * ARAnyM hardware support via Native Features (natfeats) * * Copyright (c) 2005 Petr Stehlik of ARAnyM dev team * * This software may be used and distributed according to the terms of * the GNU General Public License (GPL), incorporated herein by reference. */ #ifndef _natfeat_h #define _natfeat_h struct nf_ops { long (*get_id)(const char *); long (*call)(long id, ...); long res[3]; }; const struct nf_ops *nf_init(void); int nf_name(char *buf, int bufsize); int nf_debug(const char *msg); int nf_shutdown(void); int nf_ethernet_check_version(char *errmsg, int errmsglen); int nf_ethernet_get_irq(void); int nf_ethernet_get_hw_addr(int ethX, char *buffer, int bufsize); int nf_ethernet_interrupt(int bit); int nf_ethernet_read_packet_len(int ethX); void nf_ethernet_read_block(int ethX, char *buffer, int len); void nf_ethernet_write_block(int ethX, char *buffer, int len); void nf_ethernet_xif_start(int ethX); void nf_ethernet_xif_stop(int ethX); # endif /* _natfeat_h */ aranym-1.1.0/atari/network/linux-m68k/natfeat.c0000664000175000017500000001201613454637621017502 0ustar joyjoy/* * natfeat.c - ARAnyM hardware support via Native Features (natfeats) * * Copyright (c) 2005 Petr Stehlik of ARAnyM dev team * * This software may be used and distributed according to the terms of * the GNU General Public License (GPL), incorporated herein by reference. */ #include #include #include // strncpy() #include // snprintf() #include // virt_to_phys() #include "natfeat.h" #ifdef CONFIG_ATARI_NFETH #include "natfeat_ethernet_nfapi.h" #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif static unsigned long nf_get_id_instr = 0x73004e75UL; static unsigned long nf_call_instr = 0x73014e75UL; static struct nf_ops _nf_ops = { &nf_get_id_instr, &nf_call_instr }; static const struct nf_ops *nf_ops; #define NF_GETID(a) nf_ops->get_id(virt_to_phys(a)) int detect_native_features(void) { int ret; long save_sp, save_vbr; static long tmp_vectors[5]; static char *nf_version = "NF_VERSION"; __asm__ __volatile__ ( "movec %/vbr,%2\n\t" /* save vbr value */ "movel #Liierr,%3@(0x10)\n\t" /* set Illegal Insn vec */ "movec %3,%/vbr\n\t" /* set up temporary vectors */ "movel %/sp,%1\n\t" /* save sp */ "moveq #0,%0\n\t" /* assume no NatFeats */ "clrl %/d0\n\t" /* clear ID value register */ "movel %4,%/sp@\n\t" "subql #4,%/sp\n\t" "dc 0x7300\n\t" /* call NatFeat GetID */ "tstl %/d0\n\t" /* check ID value register */ "sne %0\n\t" /* if non-zero NatFeats work */ "Liierr:\n\t" "movel %1,%/sp\n\t" /* restore sp */ "movec %2,%/vbr" /* restore vbr */ : "=&d" (ret), "=&r" (save_sp), "=&r" (save_vbr) : "a" (tmp_vectors), "a" (virt_to_phys(nf_version)) : "d0" /* reg d0 used by NatFeats */ ); return( ret ); } const struct nf_ops * nf_init(void) { if (detect_native_features()) { nf_ops = &_nf_ops; nf_debug("NatFeats found\n"); return nf_ops; } return NULL; } /****************/ /* NF Basic Set */ int nf_name1(char *buf, int bufsize) { if (nf_ops) { static long nfid_name = 0; if (nfid_name == 0) { nfid_name = NF_GETID("NF_NAME"); } if (nfid_name) { nf_ops->call(nfid_name+1, virt_to_phys(buf), bufsize); // TODO: lock buf to prevent swap out return TRUE; } } return FALSE; } int nf_debug(const char *msg) { if (nf_ops) { static long nfid_stderr = 0; if (nfid_stderr == 0) { nfid_stderr = NF_GETID("NF_STDERR"); } if (nfid_stderr) { nf_ops->call(nfid_stderr, virt_to_phys(msg)); // TODO: lock msg to prevent swap out return TRUE; } } return FALSE; } int nf_shutdown(void) { if (nf_ops) { long shutdown_id = NF_GETID("NF_SHUTDOWN"); if (shutdown_id) { nf_ops->call(shutdown_id); return TRUE; /* never returns actually */ } } return FALSE; } #ifdef CONFIG_ATARI_NFETH /****************************/ /* NatFeat Ethernet support */ static long nfEtherID = 0; static int is_nf_eth(void) { if (nf_ops) { if (nfEtherID == 0) { nfEtherID = NF_GETID("ETHERNET"); } } return (nfEtherID != 0); } int nf_ethernet_check_version(char *errmsg, int errmsglen) { if (is_nf_eth()) { static unsigned long host_ver = 0; if (host_ver == 0) { host_ver = nf_ops->call(ETH(GET_VERSION)); } if (host_ver == ARAETHER_NFAPI_VERSION) { return TRUE; } else { // API version mismatch if (errmsg != NULL) { snprintf(errmsg, errmsglen, "NatFeat Ethernet API: expected %d, got %ld", ARAETHER_NFAPI_VERSION, host_ver); } return FALSE; } } if (errmsg != NULL) { strncpy(errmsg, "NatFeat Ethernet support not found", errmsglen); } return FALSE; } int nf_ethernet_get_irq(void) { return is_nf_eth() ? nf_ops->call(ETH(XIF_INTLEVEL)) : 0; } int nf_ethernet_get_hw_addr(int ethX, char *buffer, int bufsize) { if (is_nf_eth()) { return nf_ops->call(ETH(XIF_GET_MAC), (unsigned long)ethX, virt_to_phys(buffer), (unsigned long)bufsize); // TODO: lock buffer to prevent swap out } return FALSE; } int nf_ethernet_interrupt(int bit) { if (is_nf_eth()) { return nf_ops->call(ETH(XIF_IRQ), (unsigned long)bit); } return 0; } int nf_ethernet_read_packet_len(int ethX) { if (is_nf_eth()) { return nf_ops->call(ETH(XIF_READLENGTH), (unsigned long)ethX); } return 0; } void nf_ethernet_read_block(int ethX, char *buffer, int len) { if (is_nf_eth()) { nf_ops->call(ETH(XIF_READBLOCK), (unsigned long)ethX, virt_to_phys(buffer), (unsigned long)len); // TODO: lock buffer to prevent swap out } } void nf_ethernet_write_block(int ethX, char *buffer, int len) { if (is_nf_eth()) { nf_ops->call(ETH(XIF_WRITEBLOCK), (unsigned long)ethX, virt_to_phys(buffer), (unsigned long)len); // TODO: lock buffer to prevent swap out } } void nf_ethernet_xif_start(int ethX) { if (is_nf_eth()) { nf_ops->call(ETH(XIF_START), (unsigned long)ethX); } } void nf_ethernet_xif_stop(int ethX) { if (is_nf_eth()) { nf_ops->call(ETH(XIF_STOP), (unsigned long)ethX); } } #endif // CONFIG_ATARI_NFETH /* vim:ts=4:sw=4: */ aranym-1.1.0/atari/network/linux-m68k/linux-2.4.27-atari-natfeats.diff0000664000175000017500000001341313454637621023340 0ustar joyjoy--- /tmp/kernel-source-2.4.27-atari/arch/m68k/atari/config.c 2002-11-29 00:53:09.000000000 +0100 +++ kernel-source-2.4.27-atari/arch/m68k/atari/config.c 2005-08-24 23:28:27.000000000 +0200 @@ -32,6 +32,9 @@ #include #include #include +#ifdef CONFIG_NATFEAT +#include "natfeat.h" +#endif #include #include @@ -237,6 +240,12 @@ } } +void atari_poweroff(void) +{ +#ifdef CONFIG_NATFEAT + nf_shutdown(); +#endif +} /* * Setup the Atari configuration info @@ -248,6 +257,10 @@ memset(&atari_hw_present, 0, sizeof(atari_hw_present)); +#ifdef CONFIG_NATFEAT + nf_init(); +#endif + atari_debug_init(); ioport_resource.end = 0xFFFFFFFF; /* Change size of I/O space from 64KB @@ -271,6 +284,8 @@ mach_get_irq_list = atari_get_irq_list; mach_gettimeoffset = atari_gettimeoffset; mach_reset = atari_reset; + mach_halt = atari_poweroff; + mach_power_off = atari_poweroff; #ifdef CONFIG_ATARI_FLOPPY mach_floppy_setup = atari_floppy_setup; #endif @@ -669,6 +684,11 @@ static void atari_get_model(char *model) { +#ifdef CONFIG_NATFEAT + if (nf_name1(model, 80)) { // char model[80] defined in kernel/setup.c + return; + } +#endif strcpy(model, "Atari "); switch (atari_mch_cookie >> 16) { case ATARI_MCH_ST: --- /tmp/kernel-source-2.4.27-atari/arch/m68k/atari/Makefile 2002-11-29 00:53:09.000000000 +0100 +++ kernel-source-2.4.27-atari/arch/m68k/atari/Makefile 2005-08-24 02:44:28.000000000 +0200 @@ -20,4 +20,6 @@ obj-$(CONFIG_HADES) += hades-pci.o endif +obj-$(CONFIG_NATFEAT) += natfeat.o + include $(TOPDIR)/Rules.make --- /tmp/kernel-source-2.4.27-atari/drivers/net/Makefile 2004-08-08 01:26:04.000000000 +0200 +++ kernel-source-2.4.27-atari/drivers/net/Makefile 2005-10-25 09:36:20.000000000 +0200 @@ -227,6 +227,7 @@ obj-$(CONFIG_ATARILANCE) += atarilance.o obj-$(CONFIG_ATARI_BIONET) += atari_bionet.o obj-$(CONFIG_ATARI_PAMSNET) += atari_pamsnet.o +obj-$(CONFIG_ATARI_NFETH) += atari_nfeth.o obj-$(CONFIG_A2065) += a2065.o obj-$(CONFIG_HYDRA) += hydra.o 8390.o obj-$(CONFIG_ARIADNE) += ariadne.o --- /tmp/kernel-source-2.4.27-atari/.config 2005-08-03 21:38:35.000000000 +0200 +++ kernel-source-2.4.27-atari/.config 2005-08-25 00:27:49.000000000 +0200 @@ -27,6 +27,8 @@ CONFIG_ATARI=y # CONFIG_HADES is not set # CONFIG_PCI is not set +CONFIG_ARANYM=y +CONFIG_NATFEAT=y # CONFIG_MAC is not set # CONFIG_APOLLO is not set # CONFIG_VME is not set @@ -371,6 +373,7 @@ CONFIG_ATARILANCE=m # CONFIG_ATARI_BIONET is not set # CONFIG_ATARI_PAMSNET is not set +CONFIG_ATARI_NFETH=y # # Character devices --- /tmp/kernel-source-2.4.27-atari/arch/m68k/config.in 2005-08-03 21:38:18.000000000 +0200 +++ kernel-source-2.4.27-atari/arch/m68k/config.in 2005-08-24 23:31:08.000000000 +0200 @@ -38,6 +38,12 @@ else define_bool CONFIG_PCI n fi +dep_bool ' ARAnyM support' CONFIG_ARANYM $CONFIG_ATARI +if [ "$CONFIG_ARANYM" = "y" ]; then + define_bool CONFIG_NATFEAT y +else + define_bool CONFIG_NATFEAT n +fi bool 'Macintosh support' CONFIG_MAC if [ "$CONFIG_MAC" = "y" ]; then define_bool CONFIG_NUBUS y @@ -356,6 +362,9 @@ tristate ' BioNet-100 support' CONFIG_ATARI_BIONET tristate ' PAMsNet support' CONFIG_ATARI_PAMSNET fi + if [ "$CONFIG_NATFEAT" = "y" ]; then + tristate ' NatFeat Ethernet support' CONFIG_ATARI_NFETH + fi fi if [ "$CONFIG_SUN3" = "y" -o "$CONFIG_SUN3X" = "y" ]; then tristate ' Sun3/Sun3x on-board LANCE support' CONFIG_SUN3LANCE --- /tmp/kernel-source-2.4.27-atari/Documentation/Configure.help 2005-08-03 21:38:18.000000000 +0200 +++ kernel-source-2.4.27-atari/Documentation/Configure.help 2005-08-24 23:47:00.000000000 +0200 @@ -23555,6 +23555,13 @@ This option enables support for the Hades Atari clone. If you plan to use this kernel on a Hades, say Y here; otherwise say N. +ARAnyM support +CONFIG_ARANYM + This option enables support for the ARAnyM virtual machine. If you plan + to use this kernel on ARAnyM, say Y here; otherwise say N. + Currently it just enables support for Native Features - a common + API for accessing host hardware from within the virtual machine. + Macintosh support CONFIG_MAC This option enables support for the Apple Macintosh series of @@ -24012,6 +24019,16 @@ ACSI port ("ACSI node"). The driver works (has to work...) with a polled I/O scheme, so it's rather slow :-( +ARAnyM networking support +CONFIG_ATARI_NFETH + Say Y to include support for the NatFeat based Ethernet driver + currently available in ARAnyM virtual machine. + + This driver is also available as a module ( = code which can be + inserted in and removed from the running kernel whenever you + want). The module is called atari_nfeth.o. If you want to compile it as a + module, say M here and read . + Amiga mouse support CONFIG_AMIGAMOUSE If you want to be able to use an Amiga mouse in Linux, say Y. --- /tmp/kernel-source-2.4.27-atari/drivers/net/Space.c 2005-08-03 21:38:18.000000000 +0200 +++ kernel-source-2.4.27-atari/drivers/net/Space.c 2005-08-19 23:02:49.000000000 +0200 @@ -84,6 +84,7 @@ extern int seeq8005_probe(struct net_device *); extern int smc_init( struct net_device * ); extern int atarilance_probe(struct net_device *); +extern int atari_nfeth_probe(struct net_device *); extern int sun3lance_probe(struct net_device *); extern int sun3_82586_probe(struct net_device *); extern int apne_probe(struct net_device *); @@ -333,6 +334,9 @@ #ifdef CONFIG_ATARILANCE /* Lance-based Atari ethernet boards */ {atarilance_probe, 0}, #endif +#ifdef CONFIG_ATARI_NFETH + {atari_nfeth_probe, 0}, +#endif #ifdef CONFIG_SUN3LANCE /* sun3 onboard Lance chip */ {sun3lance_probe, 0}, #endif aranym-1.1.0/atari/network/linux-m68k/atari_nfeth.c0000664000175000017500000001617213454637621020353 0ustar joyjoy/* * atari_nfeth.c - ARAnyM ethernet card driver for GNU/Linux * * Copyright (c) 2005 Milan Jurik, Petr Stehlik of ARAnyM dev team * * Based on ARAnyM driver for FreeMiNT written by Standa Opichal * * This software may be used and distributed according to the terms of * the GNU General Public License (GPL), incorporated herein by reference. */ #include #include #include #include #include "../../arch/m68k/atari/natfeat.h" #define DRV_NAME "atari_nfeth" #define DRV_VERSION "0.3" #define DRV_RELDATE "10/12/2005" /* These identify the driver base version and may not be removed. */ static char version[] __devinitdata = KERN_INFO DRV_NAME ".c:v" DRV_VERSION " " DRV_RELDATE " S.Opichal, M.Jurik, P.Stehlik\n" KERN_INFO " http://aranym.atari.org/\n"; MODULE_AUTHOR("Milan Jurik"); MODULE_DESCRIPTION("Atari NFeth driver"); MODULE_LICENSE("GPL"); /* MODULE_PARM(atari_nfeth_debug, "i"); MODULE_PARM_DESC(atari_nfeth_debug, "atari_nfeth_debug level (1-2)"); */ #undef DEBUG struct atari_nfeth_private { int ethX; struct net_device_stats stats; spinlock_t lock; }; static inline int getEthX(struct net_device *dev) { return ((struct atari_nfeth_private *)netdev_priv(dev))->ethX; } int atari_nfeth_open(struct net_device *dev); int atari_nfeth_stop(struct net_device *dev); irqreturn_t atari_nfeth_interrupt(int irq, void *dev_id, struct pt_regs *fp); int atari_nfeth_xmit(struct sk_buff *skb, struct net_device *dev); int atari_nfeth_open(struct net_device *dev) { nf_ethernet_xif_start(getEthX(dev)); /* Set IRQ */ dev->irq = nf_ethernet_get_irq(); if (request_irq(dev->irq, atari_nfeth_interrupt, IRQ_TYPE_PRIO, dev->name, dev)) { printk( DRV_NAME ": request for irq %d failed\n", dev->irq); return( 0 ); } /* Clean statistics */ memset(&(((struct atari_nfeth_private *)netdev_priv(dev))->stats), 0, sizeof(((struct atari_nfeth_private *)(dev->priv))->stats)); spin_lock_init(&(((struct atari_nfeth_private *)netdev_priv(dev))->lock)); #ifdef DEBUG printk( DRV_NAME ": open"); #endif /* Ready for data */ netif_start_queue(dev); return 0; } int atari_nfeth_stop(struct net_device *dev) { /* No more data */ netif_stop_queue(dev); /* Release IRQ */ free_irq(dev->irq, dev); nf_ethernet_xif_stop(getEthX(dev)); return 0; } /* * Read a packet out of the adapter and pass it to the upper layers */ static irqreturn_t inline recv_packet (struct net_device *dev) { int handled = 0; unsigned short pktlen; struct sk_buff *skb; struct atari_nfeth_private *anp = (struct atari_nfeth_private *)netdev_priv(dev); if (dev == NULL) { printk(DRV_NAME " recv_packet(): interrupt for unknown device.\n"); return IRQ_NONE; } /* read packet length (excluding 32 bit crc) */ pktlen = nf_ethernet_read_packet_len(getEthX(dev)); #ifdef DEBUG printk(DRV_NAME ": recv_packet: %i", pktlen); #endif //if (pktlen < 32) if (!pktlen) { #ifdef DEBUG printk(DRV_NAME ": recv_packet: pktlen == 0"); #endif anp->stats.rx_errors++; return IRQ_RETVAL(handled); } skb = dev_alloc_skb(pktlen + 2); if (skb == NULL) { #ifdef DEBUG printk(DRV_NAME ": recv_packet: out of mem (buf_alloc failed)"); #endif anp->stats.rx_dropped++; return IRQ_RETVAL(handled); } skb->dev = dev; skb_reserve( skb, 2 ); /* 16 Byte align */ skb_put( skb, pktlen ); /* make room */ nf_ethernet_read_block(getEthX(dev), skb->data, pktlen); skb->protocol = eth_type_trans(skb, dev); netif_rx(skb); dev->last_rx = jiffies; anp->stats.rx_packets++; anp->stats.rx_bytes += pktlen; /* and enqueue packet */ handled = 1; return IRQ_RETVAL(handled); } irqreturn_t atari_nfeth_interrupt(int irq, void *dev_id, struct pt_regs *fp) { struct net_device *dev = dev_id; struct atari_nfeth_private *anp = (struct atari_nfeth_private *)netdev_priv(dev); int this_dev_irq_bit; int irq_for_eth_bitmask; if (dev == NULL) { #ifdef DEBUG printk(DRV_NAME " atari_nfeth_interrupt(): interrupt for unknown device.\n"); #endif return IRQ_NONE; } spin_lock(&anp->lock); irq_for_eth_bitmask = nf_ethernet_interrupt(0); this_dev_irq_bit = 1 << (anp->ethX); if (this_dev_irq_bit & irq_for_eth_bitmask) { recv_packet(dev); nf_ethernet_interrupt(this_dev_irq_bit); } #ifdef DEBUG else { printk(DRV_NAME " atari_nfeth_interrupt(%d): not for me\n", anp->ethX); } #endif spin_unlock(&anp->lock); } int atari_nfeth_xmit(struct sk_buff *skb, struct net_device *dev) { int len; char *data, shortpkt[ETH_ZLEN]; struct atari_nfeth_private *anp = netdev_priv(dev); data = skb->data; len = skb->len; if (len < ETH_ZLEN) { memset(shortpkt, 0, ETH_ZLEN); memcpy(shortpkt, data, len); data = shortpkt; len = ETH_ZLEN; } dev->trans_start = jiffies; #ifdef DEBUG printk( DRV_NAME ": send %d bytes", len); #endif nf_ethernet_write_block(getEthX(dev), data, len); anp->stats.tx_packets++; anp->stats.tx_bytes += len; dev_kfree_skb(skb); return 0; } static void atari_nfeth_tx_timeout(struct net_device *dev) { struct atari_nfeth_private *anp = netdev_priv(dev); anp->stats.tx_errors++; netif_wake_queue(dev); } static struct net_device_stats *atari_nfeth_get_stats(struct net_device *dev) { struct atari_nfeth_private *anp = netdev_priv(dev); return &(anp->stats); } // probe1() - HW detection // probe() - set module owner, found == 1, probe1() // init() - probe() static int __init atari_nfeth_probe1(struct net_device *dev, int ethX) { static int did_version = 0; static int did_notinstall = 0; char errmsg[60]; if ( ! nf_ethernet_check_version(errmsg, sizeof(errmsg)-1) ) { if (did_notinstall++ == 0) printk (DRV_NAME " not installed - %s\n", errmsg); return -ENODEV; } /* Get MAC address */ if (! nf_ethernet_get_hw_addr(ethX, (unsigned char *)&(dev->dev_addr), ETH_ALEN)) { #ifdef DEBUG printk(DRV_NAME " eth%d not installed - not defined\n", ethX); #endif return -ENODEV; } ether_setup(dev); dev->open = &atari_nfeth_open; dev->stop = &atari_nfeth_stop; dev->hard_start_xmit = &atari_nfeth_xmit; dev->tx_timeout = &atari_nfeth_tx_timeout; dev->get_stats = &atari_nfeth_get_stats; dev->flags |= NETIF_F_NO_CSUM; if ((dev->priv = kmalloc(sizeof(struct atari_nfeth_private), GFP_KERNEL)) == NULL) return -ENOMEM; ((struct atari_nfeth_private *)(dev->priv))->ethX = ethX; /* index of NF NIC */ if (did_version++ == 0) printk(version); return 0; } int __init atari_nfeth_probe(struct net_device *dev) { static int found = 0; SET_MODULE_OWNER(dev); if (!atari_nfeth_probe1(dev, found++)) { return 0; } return -ENODEV; } #ifdef MODULE static struct net_device atari_nfeth_dev; int atari_nfeth_init(void) { int err; if (err = atari_nfeth_probe(&atari_nfeth_dev)) { return err; } // ? atari_nfeth_dev.init = atari_nfeth_probe; if ((err = register_netdev(&atari_nfeth_dev))) { if (err == -EIO) { printk(DRV_NAME ": NatFeat Ethernet not found. Module not loaded.\n"); } return err; } return 0; } void atari_nfeth_cleanup(void) { unregister_netdev(&atari_nfeth_dev); free_netdev(atari_nfeth_dev); // ? } module_init(atari_nfeth_init); module_exit(atari_nfeth_cleanup); #endif /* MODULE */ /* vim:ts=4:sw=4: */ aranym-1.1.0/atari/network/linux-m68k/README0000664000175000017500000000216213454637621016575 0ustar joyjoyHow to enhance Linux-m68k kernel with NatFeats: 1) get Debian linux-2.4.27 kernel source code # apt-get install kernel-source-2.4.27 # cd /usr/src # tar xjf kernel-source-2.4.27.tar.bz2 2) patch with Debian m68k 2.4.27 kernel patch # apt-get install kernel-patch-2.4.27-m68k # cd /usr/src/kernel-source-2.4.27 # /usr/src/kernel-patches/m68k/2.4.27/apply/apply # cp /usr/src/kernel-patches/m68k/2.4.27/config.atari .config 3) copy files to appropriate locations: # cd /usr/src/kernel-source-2.4.27 # export ARAL68K_PATH=/path/to/aranym/atari/network/linux-m68k # cp $ARAL68K_PATH/natfeat.[ch] arch/m68k/atari/ # cp $ARAL68K_PATH/atari_nfeth.c drivers/net/ # cp $ARAL68K_PATH/../ethernet/ethernet_nfapi.h arch/m68k/atari/natfeat_ethernet_nfapi.h 4) patch kernel with NatFeat patch # cd /usr/src/kernel-source-2.4.27 # patch -p1 < $ARAL68K_PATH/linux-2.4.27-atari-natfeats.diff 5) rebuild # make oldconfig # make dep # make 6) enjoy the final kernel (vmlinux) Written in October 2005 by Petr Stehlik of ARAnyM team More info at http://aranym.atari.org/ http://www.debian.org/ aranym-1.1.0/atari/network/ethernet/0000775000175000017500000000000013454637621015610 5ustar joyjoyaranym-1.1.0/atari/network/ethernet/nfeth-config/0000775000175000017500000000000013454637621020157 5ustar joyjoyaranym-1.1.0/atari/network/ethernet/nfeth-config/nfeth-config.c0000664000175000017500000000331213454637621022671 0ustar joyjoy/* * Get IP addresses of the networking tunnel * * Written by Petr Stehlik (c) 2003,2004 * * GPL */ #include /* for printf */ #include /* for atoi */ #include /* for strcmp */ #include /* for ioctl */ #include /* for ifreq */ #include /* for SIOCGLNKSTATS */ int main(int argc, char **argv) { int usage = 0; enum { NONE = -1, ADDR, DSTADDR, NETMASK } which = NONE; char *nif = "eth0"; int sockfd; struct ifreq ifr; long addr[10]; /* indexed by the enum 'which' */ if (argc <= 1) { usage = 1; } else { int i; for(i=1; i> 24) & 0xff, (addr[which] >> 16) & 0xff, (addr[which] >> 8) & 0xff, addr[which] & 0xff); return 0; } aranym-1.1.0/atari/network/ethernet/nfeth-config/eth0-config.sh0000775000175000017500000000025713454637621022625 0ustar joyjoy#!/bin/sh ifconfig eth0 addr `./nfeth-config --get-atari-ip eth0` netmask `./nfeth-config --get-netmask eth0` up route add default eth0 gw `./nfeth-config --get-host-ip eth0` aranym-1.1.0/atari/network/ethernet/nfeth-config/Makefile0000664000175000017500000000021313454637621021613 0ustar joyjoynfeth-config: nfeth-config.c m68k-atari-mint-gcc -Wall nfeth-config.c -o nfeth-config -lsocket clean: rm -f nfeth-config.o nfeth-config aranym-1.1.0/atari/network/ethernet/ethernet_nfapi.h0000664000175000017500000000436613454637621020765 0ustar joyjoy/* * ARAnyM ethernet driver - header file. * * Copyright (c) 2002-2004 Standa and Petr of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ARAnyM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _ARAETHER_NFAPI_H #define _ARAETHER_NFAPI_H /* The code for the FreeMiNT driver was moved to the FreeMiNT CVS: freemint/sys/sockets/xif/nfeth. If you edit this file then you would need to synchronize it with the driver in the freemint CVS (nfeth_nfapi.h). if you change anything in the enum {} below you have to increase this ARAETHER_NFAPI_VERSION! */ #define ARAETHER_NFAPI_VERSION 0x00000005 enum { GET_VERSION = 0, /* no parameters, return NFAPI_VERSION in d0 */ XIF_INTLEVEL, /* no parameters, return Interrupt Level in d0 */ XIF_IRQ, /* acknowledge interrupt from host */ XIF_START, /* (ethX), called on 'ifup', start receiver thread */ XIF_STOP, /* (ethX), called on 'ifdown', stop the thread */ XIF_READLENGTH, /* (ethX), return size of network data block to read */ XIF_READBLOCK, /* (ethX, buffer, size), read block of network data */ XIF_WRITEBLOCK, /* (ethX, buffer, size), write block of network data */ XIF_GET_MAC, /* (ethX, buffer, size), return MAC HW addr in buffer */ XIF_GET_IPHOST, /* (ethX, buffer, size), return IP address of host */ XIF_GET_IPATARI, /* (ethX, buffer, size), return IP address of atari */ XIF_GET_NETMASK /* (ethX, buffer, size), return IP netmask */ }; #define ETH(a) (nfEtherID + a) #endif /* _ARAETHER_NFAPI_H */ aranym-1.1.0/atari/network/ethernet/README0000664000175000017500000000423613454637621016475 0ustar joyjoyaranym.xif ========== The MiNT-Net xif driver for the ARAnyM ethernet interface. Installation and usage ---------------------- On host side (linux): --------------------- Make sure the 'aratapif' (ARAnyM TAP IFconfig) binary is installed somewhere in your $PATH (/usr/bin or /usr/local/bin) and that it is installed setuid root. If it's not use the following commands (run them as root): linux:~# chown root /usr/bin/aratapif linux:~# chmod u+s /usr/bin/aratapif Another important thing is to load the tuntap device driver (if it isn't compiled in the host kernel). I load it with the following command: linux:~# modprobe tun And before loading this driver please check (and possibly fix) the read/write permissions of the "/dev/net/tun" device: linux:~# chmod a+rw /net/dev/tun Otherwise ARAnyM started by regular user could not access this device. More information about TUN/TAP you'll find at http://vtun.sourceforge.net/tun/ On Atari side: -------------- Install MiNT-Net and copy the aranym.xif into your mint folder. Then configure the eth0 interface, best by calling the 'eth0-config.sh' script. If you wanted to configure the IP addresses or netmask, you could do that in the ARAnyM config file. Then in MiNT-Net you can e.g. ping to 192.168.0.1 (which is the default IP of the TAP tunnel's host side). How it works ------------ The ARAnyM establishes the TAP interface (using tuntap driver). tuntap linux driver: /usr/src/linux/Documentation/networking/tuntap.txt Some related info can be found at the following URLs: VTUN (virtual tunnel) http://vtun.sourceforge.net/tun Hercules (s390 emulator) http://www.conmicro.cx/hercules/ Compilation ----------- aranym.xif: * you need the source tree of FreeMiNT 1.16 (use CVS head branch) and if compiling on host, don't forget to edit freemint's CONFIGVARS and enable the CROSS=yes there. Point the FREEMINT_SRC_HOME environment variable to its home (the COPYING.MiNT file is there). * use make.sh to compile * the binaries are placed into the bin subfolder nfeth-config: * regular MiNT setup is able to compile it with simple 'make nfeth-config' ARAnyM itself: * run configure with --enable-ethernet aranym-1.1.0/atari/natfeat/0000775000175000017500000000000013454637621013723 5ustar joyjoyaranym-1.1.0/atari/natfeat/nf_ops.h0000664000175000017500000000302713454637621015362 0ustar joyjoy/* * ARAnyM Native Features suite. * * This file was taken from FreeMiNT. * * Copyright 2003 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2003-12-14 * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * */ # ifndef _m68k_nf_ops_h # define _m68k_nf_ops_h #include /* for __CDECL */ struct nf_ops { long __CDECL (*get_id)(const char *); long __CDECL (*call)(long id, ...); long res[3]; }; /** * Use this function to intialize Native Features. * * @return the pointer to 'struct nf_ops' or NULL when * not available. **/ const struct nf_ops *nf_init(void); /* basic set native feature functions */ const char *nf_name(void); int nf_debug(const char *msg); void nf_shutdown(void); # endif /* _m68k_nf_ops_h */ aranym-1.1.0/atari/natfeat/natfeat_asm.S0000664000175000017500000000360113454637621016331 0ustar joyjoy/* * ARAnyM native features interface. * (c) 2005-2008 ARAnyM development team * * In 2006 updated with FreeMiNT headers and code. * In 2008 converted from "__NF" cookie to direct usage of NF instructions * **/ /* * Copied from FreeMiNT source tree where Native Features were added recently * * Copyright 2003 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2003-12-13 * * please send suggestions, patches or bug reports to me or * the MiNT mailing list * */ #define ARANYM 1 # ifdef ARANYM .text .globl _detect_native_features /* * NatFeats test (routine retuns TRUE/FALSE (1/0) in D0) */ _detect_native_features: clr.l d0 // assume no NatFeats available move.l (0x0010).w,a0 // illegal instruction vector lea.l fail_natfeat(pc),a1 move.l a1,(0x0010).w move.l sp,a1 // save the ssp nop // flush pipelines (for 68040+) pea (nf_version_name).w(pc) subq.l #4,sp dc.w 0x7300 // Jump to NATFEAT_ID tst.l d0 beq.s fail_natfeat moveq #1,d0 // NatFeats detected fail_natfeat: move.l a1,sp move.l a0,(0x0010).w nop // flush pipelines (for 68040+) rts nf_version_name: .ascii "NF_VERSION\0" # endif aranym-1.1.0/atari/natfeat/natfeat.c0000664000175000017500000000601513454637621015513 0ustar joyjoy/* * ARAnyM native features interface. * (c) 2005-2008 ARAnyM development team * * In 2006 updated with FreeMiNT headers and code. * In 2008 converted from "__NF" cookie to direct usage of NF instructions * **/ /* * Copied from FreeMiNT source tree where Native Features were added recently * * Copyright 2003 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2003-12-13 * */ # include # include # include "nf_ops.h" #define NATFEAT_ID 0x7300 #define NATFEAT_CALL 0x7301 #pragma GCC optimize "-fomit-frame-pointer" #pragma GCC diagnostic ignored "-Wclobbered" #define ASM_NATFEAT3(opcode) "\t.word " #opcode "\n" #define ASM_NATFEAT2(opcode) ASM_NATFEAT3(opcode) #define ASM_NATFEAT(n) ASM_NATFEAT2(n) static long __attribute__((noinline)) __CDECL _nf_get_id(const char *feature_name) { register long ret __asm__ ("d0"); (void)(feature_name); __asm__ volatile( ASM_NATFEAT(NATFEAT_ID) : "=g"(ret) /* outputs */ : /* inputs */ : __CLOBBER_RETURN("d0") "d1", "cc" AND_MEMORY /* clobbered regs */ ); return ret; } static long __attribute__((noinline)) __CDECL _nf_call(long id, ...) { register long ret __asm__ ("d0"); (void)(id); __asm__ volatile( ASM_NATFEAT(NATFEAT_CALL) : "=g"(ret) /* outputs */ : /* inputs */ : __CLOBBER_RETURN("d0") "d1", "cc" AND_MEMORY /* clobbered regs */ ); return ret; } static struct nf_ops const _nf_ops = { _nf_get_id, _nf_call, { 0, 0, 0 } }; static const struct nf_ops *nf_ops; extern int detect_native_features(void); const struct nf_ops *nf_init(void) { if (Supexec(detect_native_features)) { nf_ops = &_nf_ops; return nf_ops; } return 0UL; } const char * nf_name(void) { static char buf[64] = "Unknown emulator"; if (nf_ops) { static int done = 0; if (!done) { long nfid_name = nf_ops->get_id("NF_NAME"); if (nfid_name) nf_ops->call(nfid_name, buf, sizeof(buf)); done = 1; } } return buf; } int nf_debug(const char *msg) { if (nf_ops) { long nfid_stderr = nf_ops->get_id("NF_STDERR"); if (nfid_stderr) { nf_ops->call(nfid_stderr, msg); return 1; } } return 0; } void nf_shutdown(void) { if (nf_ops) { long shutdown_id = nf_ops->get_id("NF_SHUTDOWN"); if (shutdown_id) nf_ops->call(shutdown_id); } } aranym-1.1.0/atari/natfeat/SRCFILES0000664000175000017500000000036313454637621015062 0ustar joyjoy# This file gets included by the Makefile in this directory to determine # the files that should go only into source distributions. HEADER = \ nf_ops.h COBJS = \ natfeat.c SOBJS = \ natfeat_asm.S SRCFILES = $(HEADER) $(COBJS) $(SOBJS) aranym-1.1.0/atari/natfeat/Makefile0000664000175000017500000000101413454637621015357 0ustar joyjoy# # Makefile for the embeded natfeat files. # currently used in hostfs and hostfs/metados Makefiles # # usage: copy this dir into a local folder and do # make parentdir=.. (adjust the .. ?) # SHELL = /bin/sh SUBDIRS = srcdir = . top_srcdir = $(parentdir)/../.. subdir = .natfeat default: all all-here: objs include $(top_srcdir)/CONFIGVARS include $(top_srcdir)/RULES include $(top_srcdir)/PHONY # default definitions OBJS = $(COBJS:.c=.o) $(SOBJS:%.S=%.o) objs: $(OBJS) include $(top_srcdir)/DEPENDENCIES aranym-1.1.0/atari/natfeat/MISCFILES0000664000175000017500000000023513454637621015164 0ustar joyjoy# This file gets included by the Makefile in this directory to determine # the files that should go both into source and binary distributions. MISCFILES = aranym-1.1.0/atari/natfeat/EXTRAFILES0000664000175000017500000000030113454637621015306 0ustar joyjoy# This file gets included by the Makefile in this directory to determine # the files that should go only into source distributions. SRCFILES += BINFILES EXTRAFILES MISCFILES Makefile SRCFILES aranym-1.1.0/atari/natfeat/BINFILES0000664000175000017500000000022113454637621015034 0ustar joyjoy# This file gets included by the Makefile in this directory to determine # the files that should go only into binary distributions. BINFILES = aranym-1.1.0/atari/mmusetup.cnf0000664000175000017500000001047113454637621014653 0ustar joyjoy# This is the configuration file for SET_MMU.PRG, and must be located in either # the root directory of the boot drive or in the autofolder. # Split RAM into ST and TT RAM split_ram=yes # "pagesize" can be either 4k for 4k pages or 8k for ..eh.. 8k pages. pagesize=4k # With the "cacr" variable you set the cacr cpu register. # The following are the following flags you can use... # # edc - Enable Data Cache # nad - No Allocate Mode (data cache) # esb - Enable Store Buffer # dpi - Disable CPUSH Invalidation # foc - 1/2 cache operation mode enable (data cache) # ebc - Enable Branch Cache # cabc - Clear all entries in the branch cache # cubc - Clear all user entries in the branch cache # eic - Enable Instruction cache # nai - No Allocation Mode (instruction cache) # fic - 1/2 cache operation mode enable (instruction cache) cacr=edc,esb,ebc,cabc,eic # itt0, dtt0, itt1 and dtt1 sets the cpu registers with the same name to the # value give here. These are the "Transparent Translation Registers". # Since we are covering everything in the tree, we turn Trasparent Translation off. # This also fixes (I hope) the problems that Mach64 users have had. itt0=$0 dtt0=$0 itt1=$0 dtt1=$0 # To define a block of logical addressing area, used to build the translation # tree, the following variables are used for each block you wich to define. # logical - The logical start address of the block to define # physical - The physical start address of the block. The logical and physical # addresses are set equal in most cases. The CPU always uses logical # addresses to access memory, and then uses to tranlation tree to # obtain the actual physical address of that memory. # size - The size of the block. # pd_flags - This is used to set initial flags in the page descriptors, as the # tree is built. For example the caching mode is set using this flag. # These are the following flags you can use with pd_flags. It is highly # recommended you only use this to set the cache-mode, unless you know what you # do! # # - The following flags are understood, but not used! pdt_r1 is always forced # - into the pdt field of page descriptors. Also, SET_MMU can not create # - indirect page descriptors at this time! # # pdt_iv - Page Descriptor Type = invalid ( %00 ) # pdt_r1 - ------- "" -------- = Resident ( %01 ) This is the pdt value set # by SET_MMU. # pdt_r2 - ------- "" -------- = Resident ( %11 ) # pdt_id - ------- "" -------- = Indirect ( %10 ) # # - The following flags can all be set at will, but dont do that unless you know # - why you do it ;-) # # wp - Write Protect, the Page is write protected # used - Used. # modified - Modified. # super - Page is supervisor accessible only. # upa_0 - upa_3 - Sets the user page attribute field to 0,1,2 or 3 # global - Global. # ur1/ur2 - Sets the User reserved bit 11 (ur1) and 12 (ur2). # # The we have the caching modes.. # # c_wt - Cachable, Writetrought. Sets Writetrought caching. # c_cb - Cachable, CopyBack. Sets Copyback caching. # c_p - Cache inhibit, Precise exception model. # c_ip - Cache inhibit, ImPrecise exception model. # # All logical address spaces not defined by these blocks are marked INVALID in # the translation tree. # # IMPORTANT: There *MUST* be an empty line between translation definition blocks!! # # ST RAM. logical=$0 physical=$0 size=14*1024*1024 pd_flags=c_wt # TOS ROM logical=$00e00000 physical=$00e00000 size=1024*1024 pd_flags=c_p # I/O space logical=$00f00000 physical=$00f00000 size=1024*1024 pd_flags=c_p # Then we set up the block that define the FastRAM # Currently it's set to 512 MB (see the size=512*... below) logical=$01000000 physical=$01000000 size=512*1024*1024 pd_flags=c_wt # mirror of 24-bit address space with upper 8 bits set # mirror of ST-RAM (I doub't it's needed) logical=$ff000000 physical=$ff000000 size=14*1024*1024 pd_flags=c_wt # mirror of TOS ROM (I doub't it's needed) logical=$ffe00000 physical=$ffe00000 size=1024*1024 pd_flags=c_p # mirror of I/O space (the only required thing for backward/ST compatibility) logical=$fff00000 physical=$fff00000 size=1024*1024 pd_flags=c_p aranym-1.1.0/atari/hostfs/0000775000175000017500000000000013454637621013607 5ustar joyjoyaranym-1.1.0/atari/hostfs/metados/0000775000175000017500000000000013454637621015243 5ustar joyjoyaranym-1.1.0/atari/hostfs/metados/mintproc.h0000664000175000017500000000201013454637621017240 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * This file is a fake header created from several * FreeMiNT CVS headers (mainly sys/mint/proc.h) * * 2002 STan */ #ifndef _mintproc_h_ #define _mintproc_h_ /** from kerinfo.h **/ # define DEFAULT_MODE (0666) # define DEFAULT_DIRMODE (0755) /** from proc.h **/ # define MIN_OPEN 6 /* 0..MIN_OPEN-1 are reserved for system */ # define DOM_TOS 0 /* TOS process domain */ # define DOM_MINT 1 /* MiNT process domain */ struct filedesc; struct cwd; struct proc { struct pcred *p_cred; /* owner identity */ struct filedesc *p_fd; /* open files */ struct cwd *p_cwd; /* path stuff */ short pid, ppid, pgrp; short domain; /* process domain (TOS or UNIX) */ ushort debug_level; /* debug-level of the process */ }; extern PROC *curproc; /* current process */ extern PROC *rootproc; /* pid 0 -- MiNT itself */ /** from time.h **/ extern long timezone; extern DEVDRV fakedev; #define copy_cred(ucr) ucr #define free_cred(ucr) #endif /* _mintproc_h_ */ aranym-1.1.0/atari/hostfs/metados/mintproc.c0000664000175000017500000001261013454637621017242 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * This file is a fake PROC *curproc and some other * structures needed by the FreeMiNT GEMDOS file IO * implementation and not real for singleTOS * * 2002 STan */ #include "hostfs.h" #include "mint/filedesc.h" #include "mint/credentials.h" /** proc.c **/ struct ucred ucred0 = { 100, /* euid */ 100, /* egid */ { 100 }, /* groups */ 1, /* ngroups */ 1 /* links */ }; struct pcred pcred0 = { &ucred0, 100, /* ruid */ 100, /* rgid */ 100, /* suid */ 100, /* sgid */ 1, /* links */ 1 /* pad */ }; struct filedesc filedesc0 = { NULL, /* struct file **ofiles; */ /* file structures for open files */ NULL, /* char *ofileflags; */ /* per-process open file flags */ 0, /* short nfiles; */ /* number of open files allocated */ 0, /* short pad2; */ 1, /* long links; */ /* reference count */ NULL, /* DIR *searches; */ /* open directory searches */ /* TOS emulation */ NULL, /* DTABUF *dta; */ /* current DTA */ # define NUM_SEARCH 10 /* max. number of searches */ /* DTABUF *srchdta[NUM_SEARCH]; */ /* for Fsfirst/next */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, }, /* DIR srchdir[NUM_SEARCH]; */ /* for Fsfirst/next */ { { /* fcookie fc */ { NULL, 0, 0, 0 }, /* index */ 0, /* flags */ 0, /* fsstuf */ "", /* next */ NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, }, /* long srchtim[NUM_SEARCH]; */ /* for Fsfirst/next */ { 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, }, /* XXX total crap * there are something like this "ofiles[-3]" over the src * before we dynamically alloc the ofiles we have * to fix all the places */ 0, /* short pad1; */ 0, /* short bconmap; */ /* Bconmap mapping */ NULL, /* struct file *midiout; */ /* MIDI output */ NULL, /* struct file *midiin; */ /* MIDI input */ NULL, /* struct file *prn; */ /* printer */ NULL, /* struct file *aux; */ /* auxiliary tty */ NULL, /* struct file *control; */ /* control tty */ /* struct file *dfiles [NDFILE]; */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, /* uchar dfileflags [NDFILE]; */ { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' } }; struct cwd cwd0 = { 1, /* links */ /* reference count */ ~0777, /* cmask */ /* mask for file creation */ 0, /* pad */ { NULL, 0, 0, 0 }, /* fcookie currdir; */ /* current directory */ { NULL, 0, 0, 0 }, /* fcookie rootdir; */ /* root directory */ NULL, /* root_dir */ /* XXX chroot emulation */ /* DOS emulation */ 'A'-'B', /* curdrv */ /* current drive */ 0, /* pad2 */ /* fcookie root[NDRIVES]; */ /* root directories */ { { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 } }, /* fcookie curdir[NDRIVES];*/ /* current directory */ { { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 } } }; PROC proc0 = { &pcred0, &filedesc0, &cwd0, 1, 1, 1, DOM_TOS, 10 /* debug_level */ }; PROC *curproc = &proc0; /* current process */ PROC *rootproc = &proc0; /* pid 0 -- MiNT itself */ DEVDRV fakedev; /** time.c **/ long timezone = 0; aranym-1.1.0/atari/hostfs/metados/mintfake.h0000664000175000017500000000210513454637621017210 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * This is the FreeMiNT configuration file modified for * the ARAnyM HOSTFS.DOS MetaDOS driver * * 2002 STan */ #ifndef _mintfake_h_ #define _mintfake_h_ # include "debug.h" /* MetaDOS function header macros to let the functions create also metados independent */ # define MetaDOSFile void *devMD, char *pathNameMD, FILEPTR *fpMD, long retMD, int opcodeMD, # define MetaDOSDir void *devMD, char *pathNameMD, DIR *dirMD, long retMD, int opcodeMD, # define MetaDOSDirpass devMD, pathNameMD, dirMD, retMD, opcodeMD, # define MetaDOSDTA0 void *devMD, char *pathNameMD, DTABUF *dtaMD, long retMD, int opcodeMD # define MetaDOSDTA0pass devMD, pathNameMD, dtaMD, retMD, opcodeMD # define MetaDOSDTA MetaDOSDTA0, /* disable some defines from the sys/mint/ *.h */ #ifdef O_GLOBAL # undef O_GLOBAL #endif #define get_curproc() curproc /* rollback the settings from the FreeMiNT CVS's sys/mint/config.h) */ #ifdef CREATE_PIPES # undef CREATE_PIPES #endif #ifdef PATH_MAX # undef PATH_MAX #endif # define PATH_MAX 1024 #endif /* _mintfake_h_ */ aranym-1.1.0/atari/hostfs/metados/mint/0000775000175000017500000000000013454637621016212 5ustar joyjoyaranym-1.1.0/atari/hostfs/metados/mint/unixtime.c0000664000175000017500000000401113454637621020214 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * begin: 2000-04-17 * last change: 2000-04-17 * * Author: Frank Naumann * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * changes since last version: * * known bugs: * * todo: * * optimizations: * */ #include "mint/kcompiler.h" #include "mint/time.h" /* unixtime (time, date): * * convert a Dos style (time, date) pair into * a Unix time (seconds from midnight Jan 1., 1970) */ static int const mth_start[13] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }; long _cdecl unixtime (ushort time, ushort date) { register int sec, min, hour; register int mday, mon, year; register long s; sec = (time & 31) << 1; min = (time >> 5) & 63; hour = (time >> 11) & 31; mday = date & 31; mon = ((date >> 5) & 15) - 1; year = 80 + ((date >> 9) & 127); /* calculate tm_yday here */ s = (mday - 1) + mth_start[mon] + /* leap year correction */ (((year % 4) != 0 ) ? 0 : (mon > 1)); s = (sec) + (min * 60L) + (hour * 3600L) + (s * 86400L) + ((year - 70) * 31536000L) + ((year - 69) / 4) * 86400L; return s; } aranym-1.1.0/atari/hostfs/metados/mint/unix2xbios.c0000664000175000017500000000677113454637621020503 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * begin: 2000-04-17 * last change: 2000-04-17 * * Author: Frank Naumann * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * changes since last version: * * known bugs: * * todo: * * optimizations: * */ #include "mint/kcompiler.h" #include "mint/time.h" #include "mint/swap.h" /* unix2xbios (tv_sec): * * convert a Unix time into a DOS/XBIOS time * the date word first, then the time word as it's expected by the XBIOS */ /* How many days come before each month (0-11) */ static const ushort __mon_yday [2][12] = { /* Normal years */ { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }, /* Leap years */ { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 } }; # define SECS_PER_HOUR (60L * 60L) # define SECS_PER_DAY (SECS_PER_HOUR * 24L) # if 0 # define LEAPS_THRU_END_OF(y) ((y) / 4) # else # define LEAPS_THRU_END_OF(y) ((y) / 4 - (y) / 100 + (y) / 400) # endif # ifdef __isleap # undef __isleap # endif # define __isleap(year) (((year % 4) == 0) && (((year % 100) != 0) || ((year % 400) == 0))) /* Convert Unix time into calendar format */ void _cdecl unix2calendar(long tv_sec, ushort *year, ushort *month, ushort *day, ushort *hour, ushort *minute, ushort *second) { long days, rem, y; days = tv_sec / SECS_PER_DAY; rem = tv_sec % SECS_PER_DAY; if (hour) *hour = (ushort)(rem / SECS_PER_HOUR); rem %= SECS_PER_HOUR; if (minute) *minute = (ushort)(rem / 60); if (second) *second = (ushort)(rem % 60); y = 1970; while (days < 0 || days >= (__isleap (y) ? 366 : 365)) { /* Guess a corrected year, assuming 365 days per year */ long yg = y + days / 365 - (days % 365 < 0); /* Adjust DAYS and Y to match the guessed year */ days -= ((yg - y) * 365 + LEAPS_THRU_END_OF (yg - 1) - LEAPS_THRU_END_OF (y - 1)); y = yg; } if (year) *year = (ushort)y; { register const ushort *ip; ip = __mon_yday [__isleap (y)]; for (y = 11; days < ip [y]; --y) continue; days -= ip [y]; } if (month) *month = (ushort)y + 1; if (day) *day = (ushort)days + 1; } long _cdecl unix2xbios(long tv_sec) { typedef struct dostime DOSTIME; struct dostime { unsigned year: 7; unsigned month: 4; unsigned day: 5; unsigned hour: 5; unsigned minute: 6; unsigned sec2: 5; }; DOSTIME xtm_struct; DOSTIME *xtm = &xtm_struct; ushort year, month, day, hour, minute, second; unix2calendar(tv_sec, &year, &month, &day, &hour, &minute, &second); xtm->hour = hour; xtm->minute = minute; xtm->sec2 = (second >> 1); xtm->year = (year - 1980); xtm->month = month; xtm->day = day; return *(long *)xtm; } aranym-1.1.0/atari/hostfs/metados/mint/time.h0000664000175000017500000000273613454637621017331 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file Changes.MH for a detailed log of changes. */ /* * Copyright (C) 1998 by Guido Flohr. */ # ifndef _mint_time_h # define _mint_time_h typedef struct time TIME; struct time { long high_time; long time; /* This has to be signed! */ ulong nanoseconds; }; #define dta_UTC_local_dos(dta,xattr,x) \ { \ union { ushort s[2]; ulong l;} data; \ \ /* UTC -> localtime -> DOS style */ \ data.s[0] = xattr.x##time; \ data.s[1] = xattr.x##date; \ data.l = dostime(data.l - timezone); \ dta->dta_time = data.s[0]; \ dta->dta_date = data.s[1]; \ } #define xtime_to_local_dos(a,x) \ { \ union { ushort s[2]; ulong l;} data; \ data.s[0] = a->x##time; \ data.s[1] = a->x##date; \ data.l = dostime(data.l - timezone); \ a->x##time = data.s[0]; \ a->x##date = data.s[1]; \ } #define SET_XATTR_TD(a,x,ut) \ { \ union { ushort s[2]; ulong l;} data; \ data.l = ut; \ a->x##time = data.s[0]; \ a->x##date = data.s[1]; \ } long _cdecl dostime (long tv_sec); long _cdecl unixtime (unsigned short time, unsigned short date); long _cdecl unix2xbios (long tv_sec); void _cdecl unix2calendar (long tv_sec, unsigned short *year, unsigned short *month, unsigned short *day, unsigned short *hour, unsigned short *minute, unsigned short *second); # endif /* _mint_time_h */ aranym-1.1.0/atari/hostfs/metados/mint/swap.h0000664000175000017500000000451213454637621017337 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2000-04-18 * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * */ # ifndef _mint_swap_h # define _mint_swap_h typedef unsigned long __u32; typedef unsigned short __u16; static inline __u32 __asm_swap32 (register __u32 x) { __asm__ ( "swap %0" : "=d" (x) : "0" (x) ); return x; } # define HAVE_ASM_SWAP32 static inline __u32 __const_swap32 (register __u32 x) { register __u32 r; r = (x << 16) & 0xffff0000; r |= (x >> 16) & 0x0000ffff; return r; } static inline __u32 swap32 (register __u32 x) { # ifdef HAVE_ASM_SWAP32 return (__builtin_constant_p (x) ? __const_swap32 (x) : __asm_swap32 (x)); # else return (__const_swap32 (x)); # endif } static inline __u16 __const_bswap16 (register __u16 x) { register __u16 r; r = (x << 8) & 0xff00; r |= (x >> 8) & 0x00ff; return r; } #ifndef __mcoldfire__ static inline __u16 __asm_bswap16 (register __u16 x) { __asm__ ( "rolw #8, %0" : "=d" (x) : "0" (x) ); return x; } # define HAVE_ASM_BSWAP16 #endif INLINE __u16 bswap16 (register __u16 x) { # ifdef HAVE_ASM_BSWAP16 return (__builtin_constant_p (x) ? __const_bswap16 (x) : __asm_bswap16 (x)); # else return (__const_bswap16 (x)); # endif } # define BSWAP16(x) (bswap16 (x)) # define BSWAP32(x) (bswap32 (x)) # define SWAP16(x) (BSWAP16 (x)) # define SWAP32(x) (swap32 (x)) # endif /* _mint_swap_h */ aranym-1.1.0/atari/hostfs/metados/mint/strupr.c0000664000175000017500000000264613454637621017725 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * begin: 2000-04-17 * last change: 2000-04-17 * * Author: Frank Naumann * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * changes since last version: * * known bugs: * * todo: * * optimizations: * */ #include "mint/kcompiler.h" #include "mint/string.h" #include "mint/ctype.h" char * _cdecl strupr (char *s) { char c; char *old = s; while ((c = *s) != 0) { if (islower (c)) *s = _toupper(c); s++; } return old; } aranym-1.1.0/atari/hostfs/metados/mint/strncpy.c0000664000175000017500000000267713454637621020074 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * begin: 2000-04-17 * last change: 2000-04-17 * * Author: Frank Naumann * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * changes since last version: * * known bugs: * * todo: * * optimizations: * */ #include "mint/kcompiler.h" #include "mint/string.h" char * _cdecl strncpy (char *dst, const char *src, long len) { register char *_dst = dst; while (--len >= 0 && (*_dst++ = *src++) != 0) continue; while (--len >= 0) *_dst++ = 0; return dst; } aranym-1.1.0/atari/hostfs/metados/mint/strlen.c0000664000175000017500000000260513454637621017670 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * begin: 2000-04-17 * last change: 2000-04-17 * * Author: Frank Naumann * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * changes since last version: * * known bugs: * * todo: * * optimizations: * */ #include "mint/kcompiler.h" #include "mint/string.h" long _cdecl strlen (const char *scan) { register const char *start; start = scan + 1; while (*scan++) ; return (long) (scan - start); } aranym-1.1.0/atari/hostfs/metados/mint/string.h0000664000175000017500000000337213454637621017676 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000-2004 Frank Naumann * All rights reserved. * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list * * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ # ifndef _mint_string_h # define _mint_string_h #include #define bzero _mint_bzero #define strcpy _mint_strcpy #define strncpy _mint_strncpy #define strlen _mint_strlen #define strupr _mint_strupr void _cdecl bzero (void *dst, unsigned long size); char * _cdecl strcpy (char *dst, const char *src); char * _cdecl strncpy (char *dst, const char *src, long len); long _cdecl strlen (const char *s); char * _cdecl strupr (char *s); long _cdecl kvsprintf (char *buf, long buflen, const char *fmt, va_list args) __attribute__((format(printf, 3, 0))); long _cdecl ksprintf (char *buf, long buflen, const char *fmt, ...) __attribute__((format(printf, 3, 4))); void *memcpy(void *dest, const void *src, size_t n); #endif aranym-1.1.0/atari/hostfs/metados/mint/strcpy.c0000664000175000017500000000256713454637621017714 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * begin: 2000-04-17 * last change: 2000-04-17 * * Author: Frank Naumann * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * changes since last version: * * known bugs: * * todo: * * optimizations: * */ #include "mint/kcompiler.h" #include "mint/string.h" char * _cdecl strcpy (char *dst, const char *src) { register char *_dst = dst; while ((*_dst++ = *src++) != 0) ; return dst; } aranym-1.1.0/atari/hostfs/metados/mint/stat.h0000664000175000017500000001026713454637621017344 0ustar joyjoy/* * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ # ifndef _mint_stat_h # define _mint_stat_h #include "mint/time.h" typedef struct xattr XATTR; typedef struct stat STAT; /* old stat structure */ struct xattr { ushort mode; long index; ushort dev; ushort rdev; ushort nlink; ushort uid; ushort gid; long size; long blksize; long nblocks; ushort mtime, mdate; ushort atime, adate; ushort ctime, cdate; short attr; short reserved2; long reserved3[2]; }; /* structure for stat */ struct stat { llong dev; /* inode's device */ ulong ino; /* inode's number */ ulong mode; /* inode protection mode */ ulong nlink; /* number of hard links */ ulong uid; /* user ID of the file's owner */ ulong gid; /* group ID of the file's group */ llong rdev; /* device type */ struct time atime; /* time of last access, UTC */ struct time mtime; /* time of last data modification, UTC */ struct time ctime; /* time of last file status change, UTC */ llong size; /* file size, in bytes */ llong blocks; /* blocks allocated for file */ ulong blksize; /* optimal blocksize for I/O */ ulong flags; /* user defined flags for file */ ulong gen; /* file generation number */ long res[7]; /* sizeof = 128 bytes */ }; /* file types */ # define S_IFMT 0170000 /* file type mask */ # define S_IFLNK 0160000 /* symbolic link */ # define S_IFMEM 0140000 /* memory region or process */ # define S_IFIFO 0120000 /* named pipe (fifo) */ # define S_IFREG 0100000 /* regular file */ # define S_IFBLK 0060000 /* block special file */ # define S_IFDIR 0040000 /* directory file */ # define S_IFCHR 0020000 /* character special file */ # define S_IFSOCK 0010000 /* socket file */ # define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) # define S_ISMEM(m) (((m) & S_IFMT) == S_IFMEM) # define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) # define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) # define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) # define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) /* special bits: setuid, setgid, sticky bit */ # define S_ISUID 0004000 /* set user id on execution */ # define S_ISGID 0002000 /* set group id on execution */ # define S_ISVTX 0001000 /* sticky bit */ /* file access modes for user, group, and other */ # define S_IRWXU 0000700 /* RWX mask for owner */ # define S_IRUSR 0000400 /* R for owner */ # define S_IWUSR 0000200 /* W for owner */ # define S_IXUSR 0000100 /* X for owner */ # define S_IRWXG 0000070 /* RWX mask for group */ # define S_IRGRP 0000040 /* R for group */ # define S_IWGRP 0000020 /* W for group */ # define S_IXGRP 0000010 /* X for group */ # define S_IRWXO 0000007 /* RWX mask for other */ # define S_IROTH 0000004 /* R for other */ # define S_IWOTH 0000002 /* W for other */ # define S_IXOTH 0000001 /* X for other */ # define S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH) # define S_IWUGO (S_IWUSR | S_IWGRP | S_IWOTH) # define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) # define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO) # define S_IALLUGO (S_ISUID | S_ISGID | S_ISVTX | S_IRWXUGO) # define ACCESSPERMS (S_IRWXUGO) # define ALLPERMS (S_IALLUGO) # define DEFFILEMODE (S_IRUGO | S_IWUGO) # define S_BLKSIZE 512 /* block size used in the stat struct */ /* * Definitions of flags stored in file flags word. * * Super-user and owner changeable flags. */ # define UF_SETTABLE 0x0000ffff /* mask of owner changeable flags */ # define UF_NODUMP 0x00000001 /* do not dump file */ # define UF_IMMUTABLE 0x00000002 /* file may not be changed */ # define UF_APPEND 0x00000004 /* writes to file may only append */ # define UF_OPAQUE 0x00000008 /* directory is opaque wrt. union */ /* * Super-user changeable flags. */ # define SF_SETTABLE 0xffff0000 /* mask of superuser changeable flags */ # define SF_ARCHIVED 0x00010000 /* file is archived */ # define SF_IMMUTABLE 0x00020000 /* file may not be changed */ # define SF_APPEND 0x00040000 /* writes to file may only append */ # define OPAQUE (UF_OPAQUE) # define APPEND (UF_APPEND | SF_APPEND) # define IMMUTABLE (UF_IMMUTABLE | SF_IMMUTABLE) # endif /* _mint_stat_h */ aranym-1.1.0/atari/hostfs/metados/mint/pathconf.h0000664000175000017500000000631013454637621020165 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2001-03-01 * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * */ # ifndef _mint_pathconf_h # define _mint_pathconf_h /* The requests for Dpathconf() */ # define DP_INQUIRE -1 # define DP_IOPEN 0 /* internal limit on # of open files */ # define DP_MAXLINKS 1 /* max number of hard links to a file */ # define DP_PATHMAX 2 /* max path name length */ # define DP_NAMEMAX 3 /* max length of an individual file name */ # define DP_ATOMIC 4 /* # of bytes that can be written atomically */ # define DP_TRUNC 5 /* file name truncation behavior */ # define DP_NOTRUNC 0 /* long filenames give an error */ # define DP_AUTOTRUNC 1 /* long filenames truncated */ # define DP_DOSTRUNC 2 /* DOS truncation rules in effect */ # define DP_CASE 6 # define DP_CASESENS 0 /* case sensitive */ # define DP_CASECONV 1 /* case always converted */ # define DP_CASEINSENS 2 /* case insensitive, preserved */ # define DP_MODEATTR 7 # define DP_ATTRBITS 0x000000ffL /* mask for valid TOS attribs */ # define DP_MODEBITS 0x000fff00L /* mask for valid Unix file modes */ # define DP_FILETYPS 0xfff00000L /* mask for valid file types */ # define DP_FT_DIR 0x00100000L /* directories (always if . is there) */ # define DP_FT_CHR 0x00200000L /* character special files */ # define DP_FT_BLK 0x00400000L /* block special files, currently unused */ # define DP_FT_REG 0x00800000L /* regular files */ # define DP_FT_LNK 0x01000000L /* symbolic links */ # define DP_FT_SOCK 0x02000000L /* sockets, currently unused */ # define DP_FT_FIFO 0x04000000L /* pipes */ # define DP_FT_MEM 0x08000000L /* shared memory or proc files */ # define DP_XATTRFIELDS 8 # define DP_INDEX 0x0001 # define DP_DEV 0x0002 # define DP_RDEV 0x0004 # define DP_NLINK 0x0008 # define DP_UID 0x0010 # define DP_GID 0x0020 # define DP_BLKSIZE 0x0040 # define DP_SIZE 0x0080 # define DP_NBLOCKS 0x0100 # define DP_ATIME 0x0200 # define DP_CTIME 0x0400 # define DP_MTIME 0x0800 # define DP_VOLNAMEMAX 9 /* max length of a volume name * (0 if volume names not supported) */ /* Dpathconf and Sysconf return this when a value is not limited * (or is limited only by available memory) */ # define UNLIMITED 0x7fffffffL # endif /* _mint_pathconf_h */ aranym-1.1.0/atari/hostfs/metados/mint/memcpy.c0000664000175000017500000000035113454637621017647 0ustar joyjoy/* * memcpy.c */ #include "mint/kcompiler.h" #include "mint/string.h" void *memcpy(void *dest, const void *src, size_t n) { register char *dp = dest; register const char *sp = src; while (n--) *dp++ = *sp++; return dest; } aranym-1.1.0/atari/hostfs/metados/mint/ksprintf.c0000664000175000017500000001134313454637621020220 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * begin: 2000-04-17 * last change: 2000-04-17 * * Author: Frank Naumann * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * changes since last version: * * known bugs: * * todo: * * optimizations: * */ #include "mint/kcompiler.h" #include "mint/string.h" #include "mint/ctype.h" # define TIMESTEN(x) ((((x) << 2) + (x)) << 1) static long PUTC (char *p, long *cnt, int c, int width) { long put = 1; if (*cnt <= 0) return 0; *p++ = c; *cnt -= 1; while (*cnt > 0 && --width > 0) { *p++ = ' '; *cnt -= 1; put++; } return put; } static long PUTS (char *p, long *cnt, const char *s, int width) { long put = 0; if (!s) s = "(null)"; while (*cnt > 0 && *s) { *p++ = *s++; put++; *cnt -= 1; width--; } while (width-- > 0 && *cnt > 0) { *p++ = ' '; put++; *cnt -= 1; } return put; } static long PUTL (char *p, long *cnt, ulong u, int base, int width, int fill_char, int minus) { char obuf[32]; char *t = obuf; long put = 0; do { *t++ = "0123456789ABCDEF"[u % base]; u /= base; width--; } while (u > 0); while (width-- > 0 && *cnt > 0) { *p++ = fill_char; put++; *cnt -= 1; } if( minus ) { *p++ = '-'; *cnt -= 1; put++; } while (*cnt > 0 && t != obuf) { *p++ = *--t; put++; *cnt -= 1; } return put; } long _cdecl kvsprintf (char *buf, long buflen, const char *fmt, va_list args) { char *p = buf; char c; char fill_char; long cnt = buflen - 1; int width; int long_flag; char *s_arg; int i_arg; long l_arg; while ((c = *fmt++) != 0) { if (c != '%') { p += PUTC (p, &cnt, c, 1); continue; } c = *fmt++; width = 0; long_flag = 0; fill_char = ' '; if (c == '0') fill_char = '0'; while (c && isdigit (c)) { width = TIMESTEN (width) + (c - '0'); c = *fmt++; } if (c == 'l' || c == 'L') { long_flag = 1; c = *fmt++; } if (!c) break; switch (c) { case '%': { p += PUTC (p, &cnt, c, width); break; } case 'c': { i_arg = va_arg (args, int); p += PUTC (p, &cnt, i_arg, width); break; } case 's': { s_arg = va_arg (args, char *); p += PUTS (p, &cnt, s_arg, width); break; } case 'i': case 'd': { int minus = 0; if (long_flag) l_arg = va_arg (args, long); else l_arg = va_arg (args, int); if (l_arg < 0) { width--; l_arg = -l_arg; minus = 1; } p += PUTL (p, &cnt, l_arg, 10, width, fill_char, minus); break; } case 'o': { if (long_flag) l_arg = va_arg (args, long); else l_arg = va_arg (args, unsigned int); p += PUTL (p, &cnt, l_arg, 8, width, fill_char, 0); break; } case 'x': { if (long_flag) l_arg = va_arg (args, long); else l_arg = va_arg (args, unsigned int); p += PUTL (p, &cnt, l_arg, 16, width, fill_char, 0); break; } case 'p': { l_arg = (long)va_arg (args, void *); p += PUTL (p, &cnt, l_arg, 16, width, fill_char, 0); break; } case 'u': { if (long_flag) l_arg = va_arg (args, long); else l_arg = va_arg (args, unsigned); p += PUTL (p, &cnt, l_arg, 10, width, fill_char, 0); break; } } } *p = '\0'; return (p - buf); } /* * ksprintf implements a very crude sprintf() function that provides only * what MiNT needs... * * NOTE: this sprintf probably doesn't conform to any standard at * all. It's only use in life is that it won't overflow fixed * size buffers (i.e. it won't try to write more than SPRINTF_MAX * characters into a string) */ long _cdecl ksprintf (char *buf, long buflen, const char *fmt, ...) { va_list args; long foo; va_start (args, fmt); foo = kvsprintf (buf, buflen, fmt, args); va_end (args); return foo; } aranym-1.1.0/atari/hostfs/metados/mint/kcompiler.h0000664000175000017500000000102313454637621020344 0ustar joyjoy#if !defined(__GNUC__) # error "this driver should be compiled by GNU-C" #endif #if !defined(__MSHORT__) # error "this driver must be compiled with -mshort" #endif #define _cdecl #define EXITING void #define NORETURN __attribute__((__noreturn__)) #define INLINE static __inline __attribute__ ((__always_inline__)) typedef unsigned char uchar; typedef unsigned short ushort; typedef unsigned long ulong; typedef long long llong; typedef __SIZE_TYPE__ size_t; #undef NULL #define NULL ((void *)0) #define UNUSED(x) ((void)(x)) aranym-1.1.0/atari/hostfs/metados/mint/ioctl.h0000664000175000017500000002167613454637621017511 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2001-03-01 * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * Description: Constants for ioctl() calls. * */ # ifndef _mint_ioctl_h # define _mint_ioctl_h /* * audio device * * LMC configuration. Possible values range from 0 (lowest) to 100 (highest) * possible value. */ # define AIOCSVOLUME (('A' << 8) | 0) /* master volume */ # define AIOCSLVOLUME (('A' << 8) | 1) /* left channel volume */ # define AIOCSRVOLUME (('A' << 8) | 2) /* right channel volume */ # define AIOCSBASS (('A' << 8) | 3) /* bass amplification */ # define AIOCSTREBLE (('A' << 8) | 4) /* treble amplification */ # define AIOCRESET (('A' << 8) | 5) /* reset audio hardware */ # define AIOCSYNC (('A' << 8) | 6) /* wait until playing done */ # define AIOCGBLKSIZE (('A' << 8) | 7) /* get dma block size */ # define AIOCSSPEED (('A' << 8) | 8) /* set play or record speed */ # define AIOCGSPEED (('A' << 8) | 9) /* get play or record speed */ # define AIOCGCHAN (('A' << 8) | 10) /* get # of channels */ # define AIOCSCHAN (('A' << 8) | 11) /* set # of channels */ # define AIOCGFMTS (('A' << 8) | 12) /* get supp. sample formats */ # define AIOCSFMT (('A' << 8) | 13) /* set sample format */ # define AFMT_U8 0x00000001L /* 8 bits, unsigned */ # define AFMT_S8 0x00000002L /* 8 bits, signed */ # define AFMT_ULAW 0x00000004L /* u law encoding */ # define AFMT_U16 0x00000008L /* 16 bits, unsigned */ # define AFMT_S16 0x00000010L /* 16 bits, signed */ /* * file */ # define FSTAT (('F'<< 8) | 0) /* handled by kernel */ # define FIONREAD (('F'<< 8) | 1) # define FIONWRITE (('F'<< 8) | 2) # define FUTIME (('F'<< 8) | 3) /* structure for FUTIME */ typedef struct mutimbuf MUTIMBUF; struct mutimbuf { unsigned short actime, acdate; /* GEMDOS format */ unsigned short modtime, moddate; }; # define FTRUNCATE (('F'<< 8) | 4) # define FIOEXCEPT (('F'<< 8) | 5) # define FSTAT64 (('F'<< 8) | 6) /* 1.15.4 extension, optional */ # define FUTIME_UTC (('F'<< 8) | 7) /* 1.15.4 extension, optional */ # define FIBMAP (('F'<< 8) | 10) # define FMACOPENRES (('F'<< 8) | 72) /* macmint/macfile.h */ # define FMACGETTYCR (('F'<< 8) | 73) /* macmint/macfile.h */ # define FMACSETTYCR (('F'<< 8) | 74) /* macmint/macfile.h */ # define FMAGICMAC (('F'<< 8) | 75) /* (reserved for MagiCMac) */ /* * kernel module */ # define KM_RUN (('K'<< 8) | 1) /* 1.16 */ # define KM_FREE (('K'<< 8) | 2) /* 1.17.1 */ /* * shared memory */ # define SHMGETBLK (('M'<< 8) | 0) # define SHMSETBLK (('M'<< 8) | 1) /* * processes */ # define PPROCADDR (('P'<< 8) | 1) # define PBASEADDR (('P'<< 8) | 2) # define PCTXTSIZE (('P'<< 8) | 3) # define PSETFLAGS (('P'<< 8) | 4) # define PGETFLAGS (('P'<< 8) | 5) # define PTRACESFLAGS (('P'<< 8) | 6) # define PTRACEGFLAGS (('P'<< 8) | 7) /* flags: */ # define P_ENABLE (1 << 0) /* enable tracing */ # ifdef NOTYETDEFINED # define P_DOS (1 << 1) /* trace DOS calls - unimplemented */ # define P_BIOS (1 << 2) /* trace BIOS calls - unimplemented */ # define P_XBIOS (1 << 3) /* trace XBIOS calls - unimplemented */ # endif # define PTRACEGO (('P'<< 8) | 8) /* these 4 must be together */ # define PTRACEFLOW (('P'<< 8) | 9) # define PTRACESTEP (('P'<< 8) | 10) # define PTRACE11 (('P'<< 8) | 11) # define PLOADINFO (('P'<< 8) | 12) # define PFSTAT (('P'<< 8) | 13) # define PMEMINFO (('P'<< 8) | 14) struct ploadinfo { /* passed */ unsigned short fnamelen; /* returned */ char *cmdlin /* 128 byte */, *fname; }; struct pmeminfo { /* passed */ unsigned long mem_blocks; /* returned */ struct memblk { unsigned long loc; unsigned long len; unsigned long flags; } **mlist; }; /* * terminals */ # define TIOCGETP (('T'<< 8) | 0) # define TIOCSETN (('T'<< 8) | 1) # define TIOCGETC (('T'<< 8) | 2) # define TIOCSETC (('T'<< 8) | 3) # define TIOCGLTC (('T'<< 8) | 4) # define TIOCSLTC (('T'<< 8) | 5) # define TIOCGPGRP (('T'<< 8) | 6) # define TIOCSPGRP (('T'<< 8) | 7) # define TIOCFLUSH (('T'<< 8) | 8) # define TIOCSTOP (('T'<< 8) | 9) # define TIOCSTART (('T'<< 8) | 10) # define TIOCGWINSZ (('T'<< 8) | 11) # define TIOCSWINSZ (('T'<< 8) | 12) # define TIOCGXKEY (('T'<< 8) | 13) # define TIOCSXKEY (('T'<< 8) | 14) # define TIOCIBAUD (('T'<< 8) | 18) # define TIOCOBAUD (('T'<< 8) | 19) # define TIOCCBRK (('T'<< 8) | 20) # define TIOCSBRK (('T'<< 8) | 21) # define TIOCGFLAGS (('T'<< 8) | 22) # define TIOCSFLAGS (('T'<< 8) | 23) # define TIOCOUTQ (('T'<< 8) | 24) # define TIOCSETP (('T'<< 8) | 25) # define TIOCHPCL (('T'<< 8) | 26) # define TIOCCAR (('T'<< 8) | 27) # define TIOCNCAR (('T'<< 8) | 28) # define TIOCWONLINE (('T'<< 8) | 29) # define TIOCSFLAGSB (('T'<< 8) | 30) # define TIOCGSTATE (('T'<< 8) | 31) # define TIOCSSTATEB (('T'<< 8) | 32) # define TIOCGVMIN (('T'<< 8) | 33) # define TIOCSVMIN (('T'<< 8) | 34) # define TIOCGHUPCL (('T'<< 8) | 98) /* mdm0 ioctl */ # define TIOCSHUPCL (('T'<< 8) | 99) /* mdm0 ioctl */ # define TIOCGSOFTCAR (('T'<< 8) | 100) /* mdm0 ioctl */ # define TIOCSSOFTCAR (('T'<< 8) | 101) /* mdm0 ioctl */ # define TIOCBUFFER (('T'<< 8) | 128) /* HSMODEM sersoftst.txt */ # define TIOCCTLMAP (('T'<< 8) | 129) # define TIOCCTLGET (('T'<< 8) | 130) # define TIOCCTLSET (('T'<< 8) | 131) /* HSMODEM/SerSoft compatible definitions * for TIOCCTLMAP/TIOCCTLGET/TIOCCTLSET */ # define TIOCMH_LE 0x0001 /* line enable output, output */ # define TIOCMH_DTR 0x0002 /* data terminal ready, output */ # define TIOCMH_RTS 0x0004 /* ready to send */ # define TIOCMH_CTS 0x0008 /* clear to send */ # define TIOCMH_CAR 0x0010 /* data carrier detect, input */ # define TIOCMH_CD TIOCMH_CAR /* alternative name */ # define TIOCMH_RNG 0x0020 /* ring indicator, input */ # define TIOCMH_RI TIOCMH_RNG /* alternative name */ # define TIOCMH_DSR 0x0040 /* data set ready, input */ # define TIOCMH_LEI 0x0080 /* line enable input, input */ # define TIOCMH_TXD 0x0100 /* Sendedatenleitung, output */ # define TIOCMH_RXD 0x0200 /* Empfangsdatenleitung, input */ # define TIOCMH_BRK 0x0400 /* break detected, pseudo input */ # define TIOCMH_TER 0x0800 /* send failure, pseudo input */ # define TIOCMH_RER 0x1000 /* receive failure, pseudo input */ # define TIOCMH_TBE 0x2000 /* hardware sendbuffer empty, pseudo input */ # define TIOCMH_RBF 0x4000 /* hardware receivebuffer full, pseudo input */ # define TIOCCTLSFAST (('T'<< 8) | 132) /* HSMODEM sersoftst.txt */ # define TIOCCTLSSLOW (('T'<< 8) | 133) /* HSMODEM sersoftst.txt */ # define TIONOTSEND (('T'<< 8) | 134) # define TIOCERROR (('T'<< 8) | 135) # define TIOCSCTTY (('T'<< 8) | 245) # define TIOCLBIS (('T'<< 8) | 246) /* faked by the MiNT library */ # define TIOCLBIC (('T'<< 8) | 247) # define TIOCMGET (('T'<< 8) | 248) /* bits in longword fetched by TIOCMGET: */ # define TIOCM_LE 0001 /* not supported */ # define TIOCM_DTR 0002 # define TIOCM_RTS 0004 # define TIOCM_ST 0010 /* not supported */ # define TIOCM_SR 0020 /* not supported */ # define TIOCM_CTS 0040 # define TIOCM_CAR 0100 # define TIOCM_CD TIOCM_CAR # define TIOCM_RNG 0200 # define TIOCM_RI TIOCM_RNG # define TIOCM_DSR 0400 /* not supported */ # define TIOCCDTR (('T'<< 8) | 249) # define TIOCSDTR (('T'<< 8) | 250) # define TIOCNOTTY (('T'<< 8) | 251) # define TIOCGETD (('T'<< 8) | 252) /* not yet implemented in MiNT */ # define TIOCSETD (('T'<< 8) | 253) # define TIOCLGET (('T'<< 8) | 254) # define TIOCLSET (('T'<< 8) | 255) # define NTTYDISC 1 /* * Ext2 filesystem extensions */ # define EXT2_IOC_GETFLAGS (('f'<< 8) | 1) # define EXT2_IOC_SETFLAGS (('f'<< 8) | 2) # define EXT2_IOC_GETVERSION (('v'<< 8) | 1) # define EXT2_IOC_SETVERSION (('v'<< 8) | 2) /* * block device ioctl */ # define BLKGETSIZE (('b'<< 8) | 1) # define BLOCKSIZE (('b'<< 8) | 2) /* * cursor control */ # define TCURSOFF (('c'<< 8) | 0) # define TCURSON (('c'<< 8) | 1) # define TCURSBLINK (('c'<< 8) | 2) # define TCURSSTEADY (('c'<< 8) | 3) # define TCURSSRATE (('c'<< 8) | 4) # define TCURSGRATE (('c'<< 8) | 5) # define TCURSSDELAY (('c'<< 8) | 6) /* undocumented! */ # define TCURSGDELAY (('c'<< 8) | 7) /* undocumented! */ # endif /* _mint_ioctl_h */ aranym-1.1.0/atari/hostfs/metados/mint/fsops.h0000664000175000017500000002162013454637621017516 0ustar joyjoy/* * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ /* * Copyright 1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corporation. * All rights reserved. */ # ifndef _mint_fsops_h # define _mint_fsops_h #include "mint/stat.h" typedef struct file FILEPTR; typedef struct filesys FILESYS; typedef struct fcookie fcookie; typedef struct dirstruct DIR; typedef struct devdrv DEVDRV; typedef struct ilock LOCK; struct fcookie { FILESYS *fs; /* filesystem that knows about this cookie */ ushort dev; /* device info (e.g. Rwabs device number) */ ushort aux; /* extra data that the file system may want */ long index; /* this+dev uniquely identifies a file */ }; /* structure for opendir/readdir/closedir */ struct dirstruct { fcookie fc; /* cookie for this directory */ ushort index; /* index of the current entry */ ushort flags; /* flags (e.g. tos or not) */ # define TOS_SEARCH 0x01 char fsstuff[60]; /* anything else the file system wants */ /* NOTE: this must be at least 45 bytes */ DIR *next; /* linked together so we can close them * on process termination */ short fd; /* associated fd, for use with dirfd */ }; struct devdrv { long _cdecl (*open) (FILEPTR *f); long _cdecl (*write) (FILEPTR *f, const char *buf, long bytes); long _cdecl (*read) (FILEPTR *f, char *buf, long bytes); long _cdecl (*lseek) (FILEPTR *f, long where, int whence); long _cdecl (*ioctl) (FILEPTR *f, int mode, void *buf); long _cdecl (*datime) (FILEPTR *f, ushort *timeptr, int rwflag); long _cdecl (*close) (FILEPTR *f, int pid); long _cdecl (*select) (FILEPTR *f, long proc, int mode); void _cdecl (*unselect) (FILEPTR *f, long proc, int mode); /* extensions, check dev_descr.drvsize (size of DEVDRV struct) before calling: * fast RAW tty byte io */ long _cdecl (*writeb) (FILEPTR *f, const char *buf, long bytes); long _cdecl (*readb) (FILEPTR *f, char *buf, long bytes); /* what about: scatter/gather io for DMA devices... * long _cdecl (*writev)(FILEPTR *f, const struct iovec *iov, long cnt); * long _cdecl (*readv) (FILEPTR *f, struct iovec *iov, long cnt); */ }; struct filesys { /* kernel data */ FILESYS *next; /* link to next file system on chain */ long fsflags; # define FS_KNOPARSE 0x0001 /* kernel shouldn't do parsing */ # define FS_CASESENSITIVE 0x0002 /* file names are case sensitive */ # define FS_NOXBIT 0x0004 /* if a file can be read, it can be executed */ # define FS_LONGPATH 0x0008 /* file system understands "size" argument to "getname" */ # define FS_NO_C_CACHE 0x0010 /* don't cache cookies for this filesystem */ # define FS_DO_SYNC 0x0020 /* file system has a sync function */ # define FS_OWN_MEDIACHANGE 0x0040 /* filesystem control self media change (dskchng) */ # define FS_REENTRANT_L1 0x0080 /* fs is level 1 reentrant */ # define FS_REENTRANT_L2 0x0100 /* fs is level 2 reentrant */ # define FS_EXT_1 0x0200 /* extensions level 1 - mknod & unmount */ # define FS_EXT_2 0x0400 /* extensions level 2 - additional place at the end */ # define FS_EXT_3 0x0800 /* extensions level 3 - stat & native UTC timestamps */ /* filesystem functions */ long _cdecl (*root) (int drv, fcookie *fc); long _cdecl (*lookup) (fcookie *dir, const char *name, fcookie *fc); long _cdecl (*creat) (fcookie *dir, const char *name, unsigned mode, int attrib, fcookie *fc); DEVDRV* _cdecl (*getdev) (fcookie *file, long *devspecial); long _cdecl (*getxattr) (fcookie *file, XATTR *xattr); long _cdecl (*chattr) (fcookie *file, int attr); long _cdecl (*chown) (fcookie *file, int uid, int gid); long _cdecl (*chmode) (fcookie *file, unsigned mode); long _cdecl (*mkdir) (fcookie *dir, const char *name, unsigned mode); long _cdecl (*rmdir) (fcookie *dir, const char *name); long _cdecl (*remove) (fcookie *dir, const char *name); long _cdecl (*getname) (fcookie *relto, fcookie *dir, char *pathname, int size); long _cdecl (*rename) (fcookie *olddir, char *oldname, fcookie *newdir, const char *newname); long _cdecl (*opendir) (DIR *dirh, int tosflag); long _cdecl (*readdir) (DIR *dirh, char *name, int namelen, fcookie *fc); long _cdecl (*rewinddir) (DIR *dirh); long _cdecl (*closedir) (DIR *dirh); long _cdecl (*pathconf) (fcookie *dir, int which); long _cdecl (*dfree) (fcookie *dir, long *buf); long _cdecl (*writelabel) (fcookie *dir, const char *name); long _cdecl (*readlabel) (fcookie *dir, char *name, int namelen); long _cdecl (*symlink) (fcookie *dir, const char *name, const char *to); long _cdecl (*readlink) (fcookie *dir, char *buf, int len); long _cdecl (*hardlink) (fcookie *fromdir, const char *fromname, fcookie *todir, const char *toname); long _cdecl (*fscntl) (fcookie *dir, const char *name, int cmd, long arg); long _cdecl (*dskchng) (int drv, int mode); long _cdecl (*release) (fcookie *); long _cdecl (*dupcookie) (fcookie *new, fcookie *old); long _cdecl (*sync) (void); long _cdecl (*mknod) (fcookie *dir, const char *name, ulong mode); long _cdecl (*unmount) (int drv); long _cdecl (*stat64) (fcookie *file, STAT *stat); long res1, res2, res3; /* reserved */ /* experimental extension */ ulong lock; /* for non-blocking DMA */ ulong sleepers; /* sleepers on this filesystem */ void _cdecl (*block) (FILESYS *fs, ushort dev, const char *); void _cdecl (*deblock) (FILESYS *fs, ushort dev, const char *); }; /* various character constants and defines for TTY's */ # define MiNTEOF 0x0000ff1a /* 1a == ^Z */ /* defines for tty_read */ # define RAW 0 # define COOKED 0x1 # define NOECHO 0 # define ECHO 0x2 # define ESCSEQ 0x04 /* cursor keys, etc. get escape sequences */ /* terminal control constants (tty.sg_flags) */ # define T_CRMOD 0x0001 # define T_CBREAK 0x0002 # define T_ECHO 0x0004 # define T_XTABS_notyet 0x0008 /* unimplemented */ # define T_RAW 0x0010 # define T_LCASE_notyet 0x0020 /* unimplemented */ # define T_NOFLSH 0x0040 /* don't flush buffer when signals are received */ # define T_TOS 0x0080 # define T_TOSTOP 0x0100 # define T_XKEY 0x0200 /* Fread returns escape sequences for cursor keys, etc. */ # define T_ECHOCTL 0x0400 /* echo ctl chars as ^x */ /* 0x0800 still available */ # define T_TANDEM 0x1000 # define T_RTSCTS 0x2000 # define T_EVENP 0x4000 /* EVENP and ODDP are mutually exclusive */ # define T_ODDP 0x8000 # define TF_FLAGS 0xF000 /* some flags for TIOC[GS]FLAGS */ # define TF_BRKINT 0x0080 /* allow breaks interrupt (like ^C) */ # define TF_CAR 0x0800 /* nonlocal mode, require carrier */ # define TF_NLOCAL TF_CAR # define TF_STOPBITS 0x0003 # define TF_1STOP 0x001 # define TF_15STOP 0x002 # define TF_2STOP 0x003 # define TF_CHARBITS 0x000C # define TF_8BIT 0x000 # define TF_7BIT 0x004 # define TF_6BIT 0x008 # define TF_5BIT 0x00C /* the following are terminal status flags (tty.state) */ /* (the low byte of tty.state indicates a part of an escape sequence still * hasn't been read by Fread, and is an index into that escape sequence) */ # define TS_ESC 0x00ff # define TS_BLIND 0x0800 /* tty is `blind' i.e. has no carrier (cleared in local mode) */ # define TS_HOLD 0x1000 /* hold (e.g. ^S/^Q) */ # define TS_HPCL 0x4000 /* hang up on close */ # define TS_COOKED 0x8000 /* interpret control chars */ /* structures for terminals */ struct tchars { char t_intrc; char t_quitc; char t_startc; char t_stopc; char t_eofc; char t_brkc; }; struct ltchars { char t_suspc; char t_dsuspc; char t_rprntc; char t_flushc; char t_werasc; char t_lnextc; }; struct sgttyb { char sg_ispeed; char sg_ospeed; char sg_erase; char sg_kill; ushort sg_flags; }; struct winsize { short ws_row; short ws_col; short ws_xpixel; short ws_ypixel; }; struct xkey { short xk_num; char xk_def[8]; }; struct tty { short pgrp; /* process group of terminal */ short state; /* terminal status, e.g. stopped */ short use_cnt; /* number of times terminal is open */ short aux_cnt; /* number of times terminal is open as /dev/aux */ struct sgttyb sg; struct tchars tc; struct ltchars ltc; struct winsize wsiz; long rsel; /* selecting process for read */ long wsel; /* selecting process for write */ char *xkey; /* extended keyboard table */ long hup_ospeed; /* saved ospeed while hanging up */ ushort vmin, vtime; /* min chars, timeout for RAW reads */ long resrvd[1]; /* for future expansion */ }; /* number of BIOS drives */ # define NDRIVES 32 # define NUM_DRIVES NDRIVES # define BIOSDRV (NUM_DRIVES) # define PIPEDRV (BIOSDRV + 1) # define PROCDRV (PIPEDRV + 1) # ifndef NO_RAMFS # define RAM_DRV (PROCDRV + 1) # define SHM_DRV (RAM_DRV + 1) # else # define SHM_DRV (PROCDRV + 1) # endif # define UNIDRV ('U' - 'A') # define PSEUDODRVS ((1L << UNIDRV)) /* various fields for the "rdev" device numbers */ # define BIOS_DRIVE_RDEV 0x0000 # define BIOS_RDEV 0x0100 # define FAKE_RDEV 0x0200 # define PIPE_RDEV 0x7e00 # define UNK_RDEV 0x7f00 # define PROC_RDEV_BASE 0xa000 # endif /* _mint_fsops_h */ aranym-1.1.0/atari/hostfs/metados/mint/filedesc.h0000664000175000017500000000540413454637621020144 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2000-10-30 * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * */ # ifndef _mint_filedesc_h # define _mint_filedesc_h #include "mint/emu_tos.h" # define NDFILE 1024 # define NDEXTENT 50 struct filedesc { struct file **ofiles; /* file structures for open files */ uchar *ofileflags; /* per-process open file flags */ short nfiles; /* number of open files allocated */ short pad2; #if 0 /* XXX */ short lastfile; /* high-water mark of ofiles */ short freefile; /* approx. next free file */ #endif long links; /* reference count */ DIR *searches; /* open directory searches */ /* TOS emulation */ DTABUF *dta; /* current DTA */ # define NUM_SEARCH 10 /* max. number of searches */ DTABUF *srchdta[NUM_SEARCH]; /* for Fsfirst/next */ DIR srchdir[NUM_SEARCH]; /* for Fsfirst/next */ long srchtim[NUM_SEARCH]; /* for Fsfirst/next */ /* XXX total crap * there are something like this "ofiles[-3]" over the src * before we dynamically alloc the ofiles we have * to fix all the places */ short pad1; short bconmap; /* Bconmap mapping */ struct file *midiout; /* MIDI output */ struct file *midiin; /* MIDI input */ struct file *prn; /* printer */ struct file *aux; /* auxiliary tty */ struct file *control; /* control tty */ struct file *dfiles [NDFILE]; uchar dfileflags [NDFILE]; }; struct cwd { long links; /* reference count */ ushort cmask; /* mask for file creation */ ushort pad; fcookie currdir; /* current directory */ fcookie rootdir; /* root directory */ char *root_dir; /* XXX chroot emulation */ /* DOS emulation */ ushort curdrv; /* current drive */ ushort pad2; fcookie root[NDRIVES]; /* root directories */ fcookie curdir[NDRIVES];/* current directory */ }; # endif /* _mint_filedesc_h */ aranym-1.1.0/atari/hostfs/metados/mint/file.h0000664000175000017500000000146213454637621017305 0ustar joyjoy/* * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ /* * Copyright 1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corporation. * All rights reserved. */ # ifndef _mint_file_h # define _mint_file_h struct file { short links; /* number of copies of this descriptor */ ushort flags; /* file open mode and other file flags */ long pos; /* position in file */ long devinfo; /* device driver specific info */ fcookie fc; /* file system cookie for this file */ DEVDRV *dev; /* device driver that knows how to deal with this */ FILEPTR *next; /* link to next fileptr for this file */ }; /* macros to be applied to FILEPTRS to determine their type */ # define is_terminal(f) ((f)->flags & O_TTY) # endif /* _mint_file_h */ aranym-1.1.0/atari/hostfs/metados/mint/fcntl.h0000664000175000017500000001000013454637621017460 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * begin: 2001-03-01 * last change: 2001-03-01 * * Author: Frank Naumann * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * */ # ifndef _mint_fcntl_h # define _mint_fcntl_h /* flags for open() modes */ # define O_RDONLY 0x00000000 /* open for reading only */ # define O_WRONLY 0x00000001 /* open for writing only */ # define O_RDWR 0x00000002 /* open for reading and writing */ # define O_ACCMODE 0x00000003 /* mask for above modes */ # define O_RWMODE 0x00000003 /* isolates file read/write mode */ # define O_EXEC 0x00000003 /* execute file; used by kernel only */ # define O_NOATIME 0x00000004 /* Do not set atime. */ # define O_APPEND 0x00000008 /* all writes go to end of file */ /* file sharing modes (not POSIX) */ # define O_SHMODE 0x00000070 /* isolates file sharing mode */ # define O_COMPAT 0x00000000 /* old TOS compatibility mode */ # define O_DENYRW 0x00000010 /* deny both read and write access */ # define O_DENYW 0x00000020 /* deny write access to others */ # define O_DENYR 0x00000030 /* deny read access to others */ # define O_DENYNONE 0x00000040 /* don't deny any access to others */ # define O_NOINHERIT 0x00000080 /* private file (not passed to child) */ # define O_NDELAY 0x00000100 /* don't block for I/O on this file */ # define O_CREAT 0x00000200 /* create new file if needed */ # define O_TRUNC 0x00000400 /* truncate file to 0 bytes if it does exist */ # define O_EXCL 0x00000800 /* error if file exists */ # define O_DIRECTORY 0x00010000 /* a directory */ # if 0 /* XXX missing */ # define O_SHLOCK 0x000000 /* open with shared file lock */ # define O_EXLOCK 0x000000 /* open with exclusive file lock */ # define O_ASYNC 0x000000 /* signal pgrp when data ready */ # define O_SYNC 0x000000 /* synchronous writes */ # define O_DSYNC 0x000000 /* write: I/O data completion */ # define O_RSYNC 0x000000 /* read: I/O completion as for write */ # endif # define O_USER 0x00000fff /* isolates user-settable flag bits */ # define O_GLOBAL 0x00001000 /* OBSOLETE, DONT USE! */ # define O_TTY 0x00002000 # define O_HEAD 0x00004000 # define O_LOCK 0x00008000 /* * Constants used for fcntl(2) */ /* command values */ # define F_DUPFD 0 /* duplicate file descriptor */ # define F_GETFD 1 /* get file descriptor flags */ # define F_SETFD 2 /* set file descriptor flags */ # define F_GETFL 3 /* get file status flags */ # define F_SETFL 4 /* set file status flags */ # define F_GETLK 5 /* get record locking information */ # define F_SETLK 6 /* set record locking information */ # define F_SETLKW 7 /* F_SETLK; wait if blocked */ #define F_DUPFD_CLOEXEC 1030 /* file descriptor flags (F_GETFD, F_SETFD) */ # define FD_CLOEXEC 0x01 /* close-on-exec flag */ /* record locking flags (F_GETLK, F_SETLK, F_SETLKW) */ # define F_RDLCK O_RDONLY /* shared or read lock */ # define F_WRLCK O_WRONLY /* exclusive or write lock */ # define F_UNLCK 3 /* unlock */ /* lseek() origins */ # define SEEK_SET 0 /* from beginning of file */ # define SEEK_CUR 1 /* from current location */ # define SEEK_END 2 /* from end of file */ # endif /* _mint_fcntl_h */ aranym-1.1.0/atari/hostfs/metados/mint/errno.h0000664000175000017500000007706113454637621017523 0ustar joyjoy/* * mint/errno.h -- MiNTLib. * Copyright (C) 1999 Guido Flohr * * This file is part of the MiNTLib project, and may only be used * modified and distributed under the terms of the MiNTLib project * license, COPYMINT. By continuing to use, modify, or distribute * this file you indicate that you have read the license and * understand and accept it fully. */ #ifndef _MINT_ERRNO_H # define _MINT_ERRNO_H 1 /* Allow multiple inclusion. */ /* The kernel should actually have code like if (whew_we_dont_know_that) return -ENOSYS; instead of the current if (whew_we_dont_know_that) return ENOSYS; That seems to be a matter of taste. As a convenience we offer both possibilities here: */ # define __KERNEL_NEG(c) (-(c)) /* If you prefer to type E_OK instead of 0 ... */ # define E_OK 0 /* The original atarierr.h defined quite a few error codes which were either useless or non-standard. Important codes such as EISDIR, ENOTEMPTY were missing, others were simply misunderstood (for example the usual EINVAL would really be an ENOSYS, EINVAL is not invalid function number but invalid argument) and especially in MiNT some error codes got really overloaded, for example ENOENT serves as ENOENT, ESRCH and ECHILD, or EACCES and EPERM were the same. The codes in this file try to find the closest equivalent for all error codes currently in use, marks some error codes as deprecated and tries to be fit for the future by defining all error codes that may be needed for future enhancement. */ /* The explanations are mostly taken from the GNU libc manual. Unfortunately they don't always document the current usage in the MiNT system but rather how it should be. I've marked all current misusage with either `KERNEL' or `FIXME'. We provide way too many synonyms for error codes here. Both in the kernel and the libc only the `official' name (the one in the top row that bears the actual define) should be used. */ /* Where is ENOERR and E_OK? This file is and not , no error is 0, basta. */ /* Is this really needed? Deprecated. */ #define EERROR __KERNEL_NEG(1) /* Generic error. */ /* A system resource that can't be shared is already in use. For example if you try to delete a file that is the root of a currently mounted filesystem, you get this error. This used to be EDRNRDY resp. EDRNRDY. */ #define EBUSY __KERNEL_NEG(2) /* Resource busy. */ #ifdef __LOOSE_ERRROR_CODES # define EDRNRDY EBUSY # define EDRVNR EBUSY #endif /* Deprecated. */ #define EUKCMD __KERNEL_NEG(3) /* Unknown command. */ #ifdef __LOOSE_ERRROR_CODES # define EUNCMD EUKCMD #endif /* Checksum error detected while reading from a block device such as a floppy drive. Obviously non-standard but often used. */ #define ECRC __KERNEL_NEG(4) /* CRC error. */ #ifdef __LOOSE_ERRROR_CODES # define E_CRC ECRC #endif /* Bad request. */ #define EBADR __KERNEL_NEG(5) /* Bad request. */ #ifdef __LOOSE_ERRROR_CODES # define EBADREQ EBADR # define EBADRQ EBADR #endif /* Invalid seek operation (such as on a pipe). */ /* KERNEL: The pipe file system currently returns 0 for seek on a pipe! */ #define ESPIPE __KERNEL_NEG(6) /* Illegal seek. */ #ifdef __LOOSE_ERRROR_CODES # define ESEEK ESPIPE # define E_SEEK ESPIPE #endif /* Wrong medium type. */ #define EMEDIUMTYPE __KERNEL_NEG(7) /* Wrong medium type. */ #ifdef __LOOSE_ERRROR_CODES # define EUKMEDIA EMEDIUMTYPE # define EMEDIA EMEDIUMTYPE #endif /* A sector that does not exist was addressed in the call to a bock device function. */ #define ESECTOR __KERNEL_NEG(8) /* Sector not found. */ #ifdef __LOOSE_ERRROR_CODES # define ESECNF ESECTOR #endif /* No paper. No, not at the conveniences, in the printer. */ #define EPAPER __KERNEL_NEG(9) /* No paper. */ /* Read and write faults. Deprecated, be more specific instead. */ #define EWRITE __KERNEL_NEG(10) /* Write fault. */ #ifdef __LOOSE_ERRROR_CODES # define EWRITEF EWRITE #endif #define EREAD __KERNEL_NEG(11) /* Read fault. */ #ifdef __LOOSE_ERRROR_CODES # define EREADF EREAD #endif /* Another generic error. Who can tell the difference to EERROR? */ #define EGENERIC __KERNEL_NEG(12) /* General mishap. */ /* An attempt was made to modify something on a read-only file file system. */ #define EROFS __KERNEL_NEG(13) /* Write protect. */ /* A removable medium was exchanged before the operation could finish. */ #define ECHMEDIA __KERNEL_NEG(14) /* Media change. */ #ifdef __LOOSE_ERRROR_CODES # define E_CHNG ECHMEDIA #endif /* The wrong type of device was given to a function that expects a particular sort of device. */ #define ENODEV __KERNEL_NEG(15) /* No such device. */ #ifdef __LOOSE_ERRROR_CODES # define EUKDEV ENODEV # define EUNDEV ENODEV #endif /* Bad sectors on block device medium found. Uhm, if the driver found them, mark them as bad and don't bother the user with that. Deprecated. */ #define EBADSEC __KERNEL_NEG(16) /* Bad sectors found. */ #ifdef __LOOSE_ERRROR_CODES # define EBADSF EBADSEC #endif /* A device with a removable media (such as a floppy) is empty. */ #define ENOMEDIUM __KERNEL_NEG(17) /* No medium found. */ #ifdef __LOOSE_ERRROR_CODES # define EIDISK ENOMEDIUM # define EOTHER ENOMEDIUM #endif /* MetaDOS error (deprecated). */ #define EINSERT __KERNEL_NEG(18) /* Insert media. */ /* MetaDOS error (deprecated). */ #define EDRVNRSP __KERNEL_NEG(19) /* Drive not responding. */ /* No process matches the specified process ID. KERNEL: This is a new error code. Currently ENOENT is returned instead. */ #define ESRCH __KERNEL_NEG(20) /* No such process. */ /* There are no child processes. This error happens on operations that are supposed to manipulate child processes, when there aren't any processes to manipulate. KERNEL: This is a new error code. Currently ENOENT is returned instead. */ #define ECHILD __KERNEL_NEG(21) /* No child processes. */ /* Deadlock avoided; allocating a system resource would have resulted in a deadlock situation. The system does not guarantee that it will notice all such situations. This error means you got lucky and the system noticed; it might just hang. KERNEL: This is a new error code. The kernel currently never returns it. But that doesn't mean that there are no deadlock situations in the kernel. */ #define EDEADLK __KERNEL_NEG(22) /* Resource deadlock would occur. */ #define EDEADLOCK EDEADLK /* A file that isn't a block special file was given in a situation that requires one. For example, trying to mount an ordinary file as a file system in Unix gives this error. New code. */ #define ENOTBLK __KERNEL_NEG(23) /* Block device required. */ /* File is a directory; you cannot open a directory for writing, or create or remove hard links to it. KERNEL: This is a new error code. Flink() should be fixed. */ #define EISDIR __KERNEL_NEG(24) /* Is a directory. */ /* Invalid argument. This is used to indicate various kinds of problems with passing the wrong argument to a library function. FIXME: This used to be the same as `ENOSYS'. In fact that should be two distinct error codes. For example, the `fchmod' function should return `EINVAL' if the file descriptor passed as an argument corresponds to a pipe or socket, not an ordinary file. But since `fchmod' is a function that is currently only supported under MiNT the same error would be reported if the operating system does not support the call at all. It is common practice to cache such failures because in the case of `ENOSYS' there is no chance that succeeding calls will proceed. So how do you want to distinguish between these cases? */ #define EINVAL __KERNEL_NEG(25) /* Invalid argument. */ /* Inappropriate file type or format. The file was the wrong type for the operation, or a data file had the wrong format. On some systems `chmod' returns this error if you try to set the sticky bit on a non-directory file. */ #define EFTYPE __KERNEL_NEG(26) /* Inappropriate file type or format. */ /* While decoding a multibyte character the function came along an invalid or an incomplete sequence of bytes or the given wide character is invalid. */ #define EILSEQ __KERNEL_NEG(27) /* Illegal byte sequence. */ /* Function not implemented. Some functions have commands or options defined that might not be supported in all implementations, and this is the kind of error you get if your request them and they are not supported. KERNEL: This was usually called EINVFN (invalid function number) and that's why it was probably mixed up with EINVAL (invalid argument). FIXME: Grep thru the MiNTLib sources for EINVAL and replace it with the correct ENOSYS. Same for the kernel. */ #define ENOSYS __KERNEL_NEG(32) /* Function not implemented. */ /* This is a "file doesn't exist" error for ordinary files that are referenced in contexts where they are expected to already exist. KERNEL/FIXME: This used to be the same as ESRCH and and ECHILD, in the kernel it was usually called EFILNF. Fix the wrong usage of ESRCH and ECHILD and replace EFILNF with ENOENT. */ #define ENOENT __KERNEL_NEG(33) /* No such file or directory. */ /* A file that isn't a directory was specified when a directory is required. The usage of the synonyme EPATH is deprecated! */ #define ENOTDIR __KERNEL_NEG(34) /* Not a directory. */ #ifdef __LOOSE_ERRROR_CODES # define EPATH ENOTDIR #endif /* The current process has too many files open and can't open any more. Duplicate descriptors do count toward this limit. In BSD and GNU, the number of open files is controlled by a resource limit that can usually be increased. If you get this error, you might want to increase the `RLIMIT_NOFILE' limit or make it unlimited. Under MiNT we currently have to live without such luxury. */ #define EMFILE __KERNEL_NEG(35) /* Too many open files. */ /* Permission denied; the file permissions do not allow the attempted operation. KERNEL: This used to be mixed up with EPERM (operation not permitted). */ #define EACCES __KERNEL_NEG(36) /* Permission denied. */ #ifdef __LOOSE_ERRROR_CODES # define EACCESS EACCES #endif /* Bad file descriptor; for example, I/O on a descriptor that has been closed or reading from a descriptor open only for writing (or vice versa). */ #define EBADF __KERNEL_NEG(37) /* Bad file descriptor. */ /* Operation not permitted; only the owner of the file (or other resource) or processes with special privileges can perform the operation. This is a new error code (used to be a synonyme for EACCES). As a general rule you can say, whenever you want to disallow something take EACCES. Only if you positively know that EPERM should be used, then take this one. FIXME: Some kernel functions should return EPERM, for example Tsettimeofday, Tsetdate, Tsettime, Setdate ... */ #define EPERM __KERNEL_NEG(38) /* Operation not permitted. */ /* No memory available. The system cannot allocate more virtual memory because its capacity is full. */ #define ENOMEM __KERNEL_NEG(39) /* Cannot allocate memory. */ /* Bad address; an invalid pointer was detected. In the GNU system, this error never happens; you get a signal instead. In the MiNT system this error often happens, and you get angry mails and flames on the usenet. */ #define EFAULT __KERNEL_NEG(40) /* Bad address. */ /* No such device or address. The system tried to use the device represented by a file you specified, and it couldn't find the device. This can mean that the device file was installed incorrectly, or that the physical device is missing or not correctly attached to the computer. Under MiNT this can also happen if a pathname starts with a drive letter followed by a colon (e. g. `x:/dont/exist'). This was called `invalid drive specification' or `invalid drive id'. */ #define ENXIO __KERNEL_NEG(46) /* No such device or address. */ /* An attempt to make an improper link across file systems was detected. This happens not only when you use `link' (for hard links) but also when you rename a file with `rename'. */ #define EXDEV __KERNEL_NEG(48) /* Cross-device link. */ /* No more matching file names, only used by Fsnext(2). Don't mix that up with ENFILE. */ #define ENMFILES __KERNEL_NEG(49) /* No more matching file names. */ #ifdef __LOOSE_ERRROR_CODES # define ENMFIL ENMFILES #endif /* There are too many distinct file openings in the entire system. Note that any number of linked channels count as just one file opening. This error never occurs in the GNU system, and it probably never occurs in the MiNT system, too. */ #define ENFILE __KERNEL_NEG(50) /* File table overflow. */ /* Locking conflict. Deprecated. KERNEL: If the LOCK_NB flag was selected EWOULDBLOCK should be used instead. Otherwise the process should be blocked until the lock is available? */ #define ELOCKED __KERNEL_NEG(58) /* Locking conflict. */ /* Deprecated, should only happen with Dlock(). */ #define ENSLOCK __KERNEL_NEG(59) /* No such lock. */ /* Bad argument, used to be `range error/context unknown'. Deprecated. */ #define EBADARG __KERNEL_NEG(64) /* Bad argument. */ /* Another spurious error, deprecated. */ #define EINTERNAL __KERNEL_NEG(65) /* Internal error. */ #ifdef __LOOSE_ERRROR_CODES # define EINTRN EINTERNAL #endif /* Invalid executable file format. This condition is detected by the `exec' functions. */ #define ENOEXEC __KERNEL_NEG(66) /* Invalid executable file format. */ #ifdef __LOOSE_ERRROR_CODES # define EPLFMT ENOEXEC #endif /* Can't grow block, deprecated. At least within the library this should be handled with ENOMEM. */ #define ESBLOCK __KERNEL_NEG(67) /* Memory block growth failure. */ #ifdef __LOOSE_ERRROR_CODES # define EGSBF ESBLOCK #endif /* Terminated with CTRL-C (Kaos, MagiC, BigDOS). Nonsense. */ #define EBREAK __KERNEL_NEG(68) /* Aborted by user. */ /* This looks like a joke but it isn't. Who has introduced that in the kernel? */ #define EXCPT __KERNEL_NEG(69) /* Terminated with bombs. */ /* An attempt to execute a file that is currently open for writing, or write to a file that is currently being executed. Often using a debugger to run a program is considered having it open for writing and will cause this error. (The name stands for "text file busys".) This is not an error in the GNU system; the text is copied as necessary. In the MiNT system this error currently cannot occur. */ #define ETXTBSY __KERNEL_NEG(70) /* Text file busy. */ /* File too big; the size of a file would be larger than allowed by the system. KERNEL: This is a new code. If this error condition can occur, then the correct code should be returned. */ #define EFBIG __KERNEL_NEG(71) /* File too big. */ /* Too many levels of symbolic links were encountered in looking up a file name. This often indicates a cycle of symbolic links. KERNEL: There was no difference between EMLINK (too many links and ELOOP (too many symbolic links). The more common meaning of this error code is preserved, but whenenver EMLINK should be used, this has to be fixed in the kernel. */ #define ELOOP __KERNEL_NEG(80) /* Too many symbolic links. */ /* Broken pipe; there is no process reading from the other end of a pipe. Every function that returns this error code also generates a `SIGPIPE' signal; this signal terminates the program if not handled or blocked. Thus, your program will never actually see `EPIPE' unless it has handled or blocked `SIGPIPE'. */ #define EPIPE __KERNEL_NEG(81) /* Broken pipe. */ /* Too many links; the link count of a single file would become too large. `rename' can cause this error if the file being renamed already has as many links as it can take. KERNEL: This is a new error code. See the note for ELOOP. */ #define EMLINK __KERNEL_NEG(82) /* Too many links. */ /* Directory not empty, where an empty directory was expected. Typically this error occurs when you are trying to delete a directory. KERNEL: New error code, for the case of non-empty directories EEXIST was returned. The new behavior could cause compatibility problems since inproper implementations of recursive rm commands could rely on the old error code (85) being returned. Which error is more probable? */ #define ENOTEMPTY __KERNEL_NEG(83) /* Directory not empty. */ /* File exists; an existing file was specified in a context where it only makes sense to specify a new file. */ #define EEXIST __KERNEL_NEG(85) /* File exists. */ /* Filename too long (longer than `PATH_MAX') or host name too long (in `gethostname' or `sethostname'). */ #define ENAMETOOLONG __KERNEL_NEG(86) /* Name too long. */ /* Inappropriate I/O control operation, such as trying to set terminal modes on ordinary files. */ #define ENOTTY __KERNEL_NEG(87) /* Not a tty. */ /* Range error; used by mathematical functions when the result value is not representable because of overflow or underflow. The string to number conversion functions (`strtol', `strtoul', `strtod', etc. can also return this error. */ #define ERANGE __KERNEL_NEG(88) /* Range error. */ /* Domain error; used by mathematical functions when an argument value does not fall into the domain over which the function is defined. */ #define EDOM __KERNEL_NEG(89) /* Domain error. */ /* Input/output error; usually used for physical read or write errors. */ #define EIO __KERNEL_NEG(90) /* I/O error */ /* No space left on device; write operation on a file failed because the disk is full. */ #define ENOSPC __KERNEL_NEG(91) /* No space left on device. */ /* Error number 92-99 reserved for TraPatch. */ /* This means that the per-user limit on new process would be exceeded by an attempted `fork'. */ #define EPROCLIM __KERNEL_NEG(100) /* Too many processes for user. */ /* This file quota system is confused because there are too many users. */ #define EUSERS __KERNEL_NEG(101) /* Too many users. */ /* The user's disk quota was exceeded. */ #define EDQUOT __KERNEL_NEG(102) /* Quota exceeded. */ /* Stale NFS handle. This indicates an internal confusion in the NFS system which is due to file system rearrangements on the server host. Reparing this condition usually requires unmounting and remounting the NFS file system on the local host. */ #define ESTALE __KERNEL_NEG(103) /* Stale NFS file handle. */ /* An attempt was made to NFS-mount a remote file system with a file name that already specifies an NFS-mounted file. (This is an error on some operating systems, but we expect it to work properly on the GNU system, making this error code impossible). */ #define EREMOTE __KERNEL_NEG(104) /* Object is remote. */ /* ??? */ #define EBADRPC __KERNEL_NEG(105) /* RPC struct is bad. */ #define ERPCMISMATCH __KERNEL_NEG(106) /* RPC version wrong. */ #define EPROGUNAVAIL __KERNEL_NEG(107) /* RPC program not available. */ #define EPROGMISMATCH __KERNEL_NEG(108) /* RPC program version wrong. */ #define EPROCUNAVAIL __KERNEL_NEG(109) /* RPC bad procedure for program. */ /* No locks available. This is used by the file locking facilities; This error is never generated by the GNU system, but it can result from an operation to an NFS server running another operating system. */ #define ENOLCK __KERNEL_NEG(110) /* No locks available. */ /* ??? */ #define EAUTH __KERNEL_NEG(111) /* Authentication error. */ #define ENEEDAUTH __KERNEL_NEG(112) /* Need authenticator. */ /* In the GNU system, servers supporting the `term' protocol return this error for certain operations when the caller is not in the foreground process group of the terminal. Users do not usually see this error because functions such as `read' and `write' translate it into a `SIGTTIN' or `SIGTTOU' signal. */ #define EBACKGROUND __KERNEL_NEG(113) /* Inappropriate operation for background process. */ /* ??? */ #define EBADMSG __KERNEL_NEG(114) /* Not a data message. */ #define EIDRM __KERNEL_NEG(115) /* Identifier removed. */ #define EMULTIHOP __KERNEL_NEG(116) /* Multihop attempted. */ #define ENODATA __KERNEL_NEG(117) /* No data available. */ #define ENOLINK __KERNEL_NEG(118) /* Link has been severed. */ #define ENOMSG __KERNEL_NEG(119) /* No message of desired type. */ #define ENOSR __KERNEL_NEG(120) /* Out of streams resources. */ #define ENOSTR __KERNEL_NEG(121) /* Device not a stream. */ #define EOVERFLOW __KERNEL_NEG(122) /* Value too large for defined data type. */ #define EPROTO __KERNEL_NEG(123) /* Protocol error. */ #define ETIME __KERNEL_NEG(124) /* Timer expired. */ /* Argument list too long; used when the arguments passed to a new program being executed with one of the `exec' functions occupy too much memory space. This condition never arises in the MiNT system. */ #define E2BIG __KERNEL_NEG(125) /* Argument list too long. */ /* The following error codes are defined by the Linux/i386 kernel. Some of them are probably useful for MiNT, too. */ #define ERESTART __KERNEL_NEG(126) /* Interrupted system call should be restarted. */ #define ECHRNG __KERNEL_NEG(127) /* Channel number out of range. */ /* Interrupted function call; an asynchronous signal occured and prevented completion of the call. When this happens, you should try the call again. On other systems you can choose to have functions resume after a signal handled, rather than failing with `EINTR'. */ #define EINTR __KERNEL_NEG(128) /* Interrupted function call. */ /* Falcon XBIOS errors. */ #define ESNDLOCKED __KERNEL_NEG(129) /* Sound system is already locked. */ #define ESNDNOTLOCK __KERNEL_NEG(130) /* Sound system is not locked. */ #define EL2NSYNC __KERNEL_NEG(131) /* Level 2 not synchronized. */ #define EL3HLT __KERNEL_NEG(132) /* Level 3 halted. */ #define EL3RST __KERNEL_NEG(133) /* Level 3 reset. */ #define ELNRNG __KERNEL_NEG(134) /* Link number out of range. */ #define EUNATCH __KERNEL_NEG(135) /* Protocol driver not attached. */ #define ENOCSI __KERNEL_NEG(136) /* No CSI structure available. */ #define EL2HLT __KERNEL_NEG(137) /* Level 2 halted. */ #define EBADE __KERNEL_NEG(138) /* Invalid exchange. */ #define EXFULL __KERNEL_NEG(139) /* Exchange full. */ #define ENOANO __KERNEL_NEG(140) /* No anode. */ #define EBADRQC __KERNEL_NEG(141) /* Invalid request code. */ #define EBADSLT __KERNEL_NEG(142) /* Invalid slot. */ #define EBFONT __KERNEL_NEG(143) /* Bad font file format. */ #define ENONET __KERNEL_NEG(144) /* Machine is not on the network. */ #define ENOPKG __KERNEL_NEG(145) /* Package is not installed. */ #define EADV __KERNEL_NEG(146) /* Advertise error. */ #define ESRMNT __KERNEL_NEG(147) /* Srmount error. */ #define ECOMM __KERNEL_NEG(148) /* Communication error on send. */ #define EDOTDOT __KERNEL_NEG(149) /* RFS specific error. */ #define ELIBACC __KERNEL_NEG(150) /* Cannot access a needed shared library. */ #define ELIBBAD __KERNEL_NEG(151) /* Accessing a corrupted shared library. */ #define ELIBSCN __KERNEL_NEG(152) /* .lib section in a.out corrupted. */ #define ELIBMAX __KERNEL_NEG(153) /* Attempting to link too many shared libraries. */ #define ELIBEXEC __KERNEL_NEG(154) /* Cannot exec a shared library directly. */ #define ESTRPIPE __KERNEL_NEG(155) /* Streams pipe error. */ #define EUCLEAN __KERNEL_NEG(156) /* Structure needs cleaning. */ #define ENOTNAM __KERNEL_NEG(157) /* Not a XENIX named type file. */ #define ENAVAIL __KERNEL_NEG(158) /* NO XENIX semaphores available. */ #define EREMOTEIO __KERNEL_NEG(159) /* Remote I/O error. */ /* This is not really an error but a dummy error code used within the kernel to indicate that a mount point may have been crossed. */ #define EMOUNT __KERNEL_NEG(200) /* There used to be a distinction between MiNTNet errors and ordinary MiNT errors. This macro is provided for backwards compatibility. */ #define _NE_BASE 300 /* A file that isn't a socket was specified when a socket is required. */ #define ENOTSOCK __KERNEL_NEG(300) /* Socket operation on non-socket. */ /* No default destination address was set for the socket. You get this error when you try to transmit data over a connectionless socket, without first specifying a destination for the data with `connect'. */ #define EDESTADDRREQ __KERNEL_NEG(301) /* Destination address required. */ /* The size of a message sent on a socket was larger than the supported maximum size. */ #define EMSGSIZE __KERNEL_NEG(302) /* Message too long. */ /* The socket type does not support the requested communications protocol. */ #define EPROTOTYPE __KERNEL_NEG(303) /* Protocol wrong type for socket. */ /* You specified a socket option that doesn't make sense for the particular protocol being used by the socket. */ #define ENOPROTOOPT __KERNEL_NEG(304) /* Protocol not available. */ /* The socket domain does not support the requested communications protocol (perhaps because the requested protocol is completely invalid). */ #define EPROTONOSUPPORT __KERNEL_NEG(305) /* Protocol not supported. */ /* The socket type is not supported. */ #define ESOCKTNOSUPPORT __KERNEL_NEG(306) /* Socket type not supported. */ /* The operation you requested is not supported. Some socket functions don't make sense for all type of sockets, and others may not be implemented for all communications prototcols. In the GNU system, this error can happen for many calls when the object does not support the particular operation; it is a generic indication that the server knows nothing to do for that cal. */ #define EOPNOTSUPP __KERNEL_NEG(307) /* Operation not supported. */ /* The socket communications protocol family you requested is not supported. */ #define EPFNOSUPPORT __KERNEL_NEG(308) /* Protocol family not supported. */ /* The address family specified for a socket is not supported; it is inconsistent with the protocol being used on the socket. */ #define EAFNOSUPPORT __KERNEL_NEG(309) /* Address family not supported by protocol. */ /* The requested socket address is already in use. */ #define EADDRINUSE __KERNEL_NEG(310) /* Address already in use */ /* The requested socket address is not available; for example, you tried to give a socket a name that doesn't match the local host name. */ #define EADDRNOTAVAIL __KERNEL_NEG(311) /* Cannot assign requested address. */ /* A socket operation failed because the network was down. */ #define ENETDOWN __KERNEL_NEG(312) /* Network is down. */ /* A socket operation failed because the subnet containing the remote host was unreachable. */ #define ENETUNREACH __KERNEL_NEG(313) /* Network is unreachable. */ /* A network connection was reset because the remote host crashed. */ #define ENETRESET __KERNEL_NEG(314) /* Network dropped conn. because of reset. */ /* A network connnection was aborted locally. */ #define ECONNABORTED __KERNEL_NEG(315) /* Software caused connection abort. */ /* A network connection was closed for reasons outside the control of the local host, such as by the remote machine rebooting or an unrecoverable protocol violation. */ #define ECONNRESET __KERNEL_NEG(316) /* Connection reset by peer. */ /* You tried to connect a socket that is already connected. */ #define EISCONN __KERNEL_NEG(317) /* Socket is already connected. */ /* The socket is not connected to anything. You get this error when you try to transmit data over the socket, without first specifying a destination for the data. For a connectionless socket (for datagram protocols, such as UDP), you get `EDESTADDRREQ' instead. */ #define ENOTCONN __KERNEL_NEG(318) /* Socket is not connected. */ /* The socket has already been shut down. */ #define ESHUTDOWN __KERNEL_NEG(319) /* Cannot send after shutdown. */ /* A socket operation with a specified timeout received nor response during the timeout period. */ #define ETIMEDOUT __KERNEL_NEG(320) /* Connection timed out. */ /* A remote host refused to allow the network connection (typically because it is not running the requested service). */ #define ECONNREFUSED __KERNEL_NEG(321) /* Connection refused. */ /* The remote host for a requested network connection is down. */ #define EHOSTDOWN __KERNEL_NEG(322) /* Host is down. */ /* The remote host for a requested network connection is not reachable. */ #define EHOSTUNREACH __KERNEL_NEG(323) /* No route to host. */ /* An operation is already in progress on an object that has non-blocking mode selected. */ #define EALREADY __KERNEL_NEG(324) /* Operation already in progress. */ /* An operation that cannot complete immediately was initiated on an object that has non-blocking mode selected. Some functions that must always block (such as `connect') never return `EAGAIN'. Instead they return `EINPROGRESS' to indicate that the operation has begun and will take some time. Attempts to manipulate the object before the call completes return `EALREADY'. You can use the `select' function to find out when the pending operation has completed. */ #define EINPROGRESS __KERNEL_NEG(325) /* Operation now in progress. */ /* Resource temporarily unavailable; the call might work if you try again later. The macro `EWOULDBLOCK' is another name for `EAGAIN'; they are always the same in the MiNT system. This error can happen in a few different situations: * An operation that would block was attempted on an object that has non-blocking mode selected. Trying the same operation again will block until some external condition makes it possible to read, write or connect (whatever the operation). You can use `select' to find out when the operation will be possible. Portability Note: In many older Unix systems, this condition was indicated by `EWOULDBLOCK', which was a distinct error code different from `EAGAIN'. To make your program portable, you should check for both codes and treat them the same. In C programs you should not use a case statement for that because that will trigger a compile-time error for systems where `EWOULDBLOCK' and `EAGAIN' expand to the same numerical value. You should either handle treat it with preprocessor macros (test if they are equal or not) or use an if conditional. * A temporary resource shortage made an operation impossible. `fork' can return this error. It indicates that the shortage is expected to pass, so your program can try the call again later and it may succeed. It is probably a good idea to delay for a few seconds before trying it again, to allow time for other processes to release scarce resources. Such shortages are usually fairly serious and affect the whole system, so usually an interactive program should report the error to the user and return to its command loop. */ #define EAGAIN __KERNEL_NEG(326) /* Operation would block. */ #define EWOULDBLOCK EAGAIN /* The kernel's buffer for I/O operations are all in use. In GNU, this error is always synonymous with `ENOMEM'; you may get one or the other from network operations. */ #define ENOBUFS __KERNEL_NEG(327) /* No buffer space available. */ /* Too many references: cannot splice. */ #define ETOOMANYREFS __KERNEL_NEG(328) /* Too many references. */ #define _NE_MAX ETOOMANYREFS #endif /* _MINT_ERRNO_H */ aranym-1.1.0/atari/hostfs/metados/mint/emu_tos.h0000664000175000017500000000355613454637621020047 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ # ifndef _mint_emu_tos_h # define _mint_emu_tos_h # define TOS_NAMELEN 13 typedef struct dtabuf DTABUF; struct dtabuf { ushort index; /* index into arrays in the PROC struct */ long magic; # define SVALID 0x1234fedcL /* magic for a valid search */ # define EVALID 0x5678ba90L /* magic for an exhausted search */ char dta_pat[TOS_NAMELEN+1]; /* pointer to pattern, if necessary */ char dta_sattrib; /* attributes being searched for */ /* this stuff is returned to the user */ char dta_attrib; ushort dta_time; ushort dta_date; ulong dta_size; char dta_name[TOS_NAMELEN+1]; }; /* defines for TOS attribute bytes */ # define FA_RDONLY 0x01 # define FA_HIDDEN 0x02 # define FA_SYSTEM 0x04 # define FA_LABEL 0x08 # define FA_DIR 0x10 # define FA_CHANGED 0x20 # define FA_VFAT 0x0f /* VFAT entry */ # define FA_SYMLINK 0x40 /* symbolic link */ # endif /* _mint_emu_tos_h */ aranym-1.1.0/atari/hostfs/metados/mint/dostime.c0000664000175000017500000000303313454637621020021 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * begin: 2000-04-17 * last change: 2000-04-17 * * Author: Frank Naumann * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * changes since last version: * * known bugs: * * todo: * * optimizations: * */ #include "mint/kcompiler.h" #include "mint/time.h" #include "mint/swap.h" /* dostime (tv_sec): * * convert a Unix time into a DOS time. The longword returned contains * the time word first, then the date word. * BUG: we completely ignore any time zone information. */ long _cdecl dostime (long tv_sec) { return SWAP32 (unix2xbios (tv_sec)); } aranym-1.1.0/atari/hostfs/metados/mint/ctype.h0000664000175000017500000000455213454637621017515 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000-2004 Frank Naumann * All rights reserved. * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list * * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ # ifndef _mint_ctype_h # define _mint_ctype_h #define _ctype _mint_ctype extern unsigned char const _ctype[256]; #define _CTc 0x01 /* control character */ #define _CTd 0x02 /* numeric digit */ #define _CTu 0x04 /* upper case */ #define _CTl 0x08 /* lower case */ #define _CTs 0x10 /* whitespace */ #define _CTp 0x20 /* punctuation */ #define _CTx 0x40 /* hexadecimal */ #define isalnum(c) ( _ctype[(unsigned char)(c)] & (_CTu|_CTl|_CTd)) #define isalpha(c) ( _ctype[(unsigned char)(c)] & (_CTu|_CTl)) #define isascii(c) (!((c) & ~0x7f)) #define iscntrl(c) ( _ctype[(unsigned char)(c)] & _CTc) #define isdigit(c) ( _ctype[(unsigned char)(c)] & _CTd) #define isgraph(c) (!(_ctype[(unsigned char)(c)] & (_CTc|_CTs)) && (_ctype[(unsigned char)(c)])) #define islower(c) ( _ctype[(unsigned char)(c)] & _CTl) #define isprint(c) (!(_ctype[(unsigned char)(c)] & _CTc) && (_ctype[(unsigned char)(c)])) #define ispunct(c) ( _ctype[(unsigned char)(c)] & _CTp) #define isspace(c) ( _ctype[(unsigned char)(c)] & _CTs) #define isupper(c) ( _ctype[(unsigned char)(c)] & _CTu) #define isxdigit(c) ( _ctype[(unsigned char)(c)] & _CTx) #define iswhite(c) (isspace (c)) #define toupper _mint_toupper #define tolower _mint_tolower int _cdecl tolower (int c); int _cdecl toupper (int c); #define _tolower(c) ((c) ^ 0x20) #define _toupper(c) ((c) ^ 0x20) #endif aranym-1.1.0/atari/hostfs/metados/mint/ctype.c0000664000175000017500000000671713454637621017515 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * begin: 2000-04-17 * last change: 2000-04-17 * * Author: Frank Naumann * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * changes since last version: * * known bugs: * * todo: * * optimizations: * */ #include "mint/kcompiler.h" #include "mint/ctype.h" unsigned char const _ctype[256] = { _CTc, _CTc, _CTc, _CTc, /* 0x00..0x03 */ _CTc, _CTc, _CTc, _CTc, /* 0x04..0x07 */ _CTc, _CTc|_CTs, _CTc|_CTs, _CTc|_CTs, /* 0x08..0x0B */ _CTc|_CTs, _CTc|_CTs, _CTc, _CTc, /* 0x0C..0x0F */ _CTc, _CTc, _CTc, _CTc, /* 0x10..0x13 */ _CTc, _CTc, _CTc, _CTc, /* 0x14..0x17 */ _CTc, _CTc, _CTc, _CTc, /* 0x18..0x1B */ _CTc, _CTc, _CTc, _CTc, /* 0x1C..0x1F */ _CTs, _CTp, _CTp, _CTp, /* 0x20..0x23 */ _CTp, _CTp, _CTp, _CTp, /* 0x24..0x27 */ _CTp, _CTp, _CTp, _CTp, /* 0x28..0x2B */ _CTp, _CTp, _CTp, _CTp, /* 0x2C..0x2F */ _CTd|_CTx, _CTd|_CTx, _CTd|_CTx, _CTd|_CTx, /* 0x30..0x33 */ _CTd|_CTx, _CTd|_CTx, _CTd|_CTx, _CTd|_CTx, /* 0x34..0x37 */ _CTd|_CTx, _CTd|_CTx, _CTp, _CTp, /* 0x38..0x3B */ _CTp, _CTp, _CTp, _CTp, /* 0x3C..0x3F */ _CTp, _CTu|_CTx, _CTu|_CTx, _CTu|_CTx, /* 0x40..0x43 */ _CTu|_CTx, _CTu|_CTx, _CTu|_CTx, _CTu, /* 0x44..0x47 */ _CTu, _CTu, _CTu, _CTu, /* 0x48..0x4B */ _CTu, _CTu, _CTu, _CTu, /* 0x4C..0x4F */ _CTu, _CTu, _CTu, _CTu, /* 0x50..0x53 */ _CTu, _CTu, _CTu, _CTu, /* 0x54..0x57 */ _CTu, _CTu, _CTu, _CTp, /* 0x58..0x5B */ _CTp, _CTp, _CTp, _CTp, /* 0x5C..0x5F */ _CTp, _CTl|_CTx, _CTl|_CTx, _CTl|_CTx, /* 0x60..0x63 */ _CTl|_CTx, _CTl|_CTx, _CTl|_CTx, _CTl, /* 0x64..0x67 */ _CTl, _CTl, _CTl, _CTl, /* 0x68..0x6B */ _CTl, _CTl, _CTl, _CTl, /* 0x6C..0x6F */ _CTl, _CTl, _CTl, _CTl, /* 0x70..0x73 */ _CTl, _CTl, _CTl, _CTl, /* 0x74..0x77 */ _CTl, _CTl, _CTl, _CTp, /* 0x78..0x7B */ _CTp, _CTp, _CTp, _CTc, /* 0x7C..0x7F */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x80..0x8F */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x90..0x9F */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xA0..0xAF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xB0..0xBF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xC0..0xCF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xD0..0xDF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xE0..0xEF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /* 0xF0..0xFF */ }; int _cdecl tolower(int c) { return isupper(c) ? _tolower (c) : c; } int _cdecl toupper (int c) { return islower (c) ? _toupper (c) : c; } aranym-1.1.0/atari/hostfs/metados/mint/credentials.h0000664000175000017500000000341113454637621020657 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2000-10-30 * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * */ # ifndef _mint_credentials_h # define _mint_credentials_h # define NGROUPS_MAX 8 # define NGROUPS NGROUPS_MAX struct ucred { unsigned short euid; /* effective user id */ unsigned short egid; /* effective group id */ unsigned short groups [NGROUPS_MAX]; /* groups */ unsigned short ngroups; /* number of groups */ short links; /* number of references */ }; struct pcred { struct ucred *ucr; /* */ unsigned short ruid; /* real user id */ unsigned short rgid; /* real group id */ unsigned short suid; /* saved effective user id */ unsigned short sgid; /* saved effective group id */ short links; /* number of references */ short pad; }; # endif /* _mint_credentials_h */ aranym-1.1.0/atari/hostfs/metados/mint/bzero.c0000664000175000017500000000341413454637621017501 0ustar joyjoy/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * begin: 2000-04-17 * last change: 2000-04-17 * * Author: Frank Naumann * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * changes since last version: * * known bugs: * * todo: * * optimizations: * */ #include "mint/kcompiler.h" #include "mint/string.h" /* * zero out a block of memory, quickly; the block must be word-aligned, * and should be long-aligned for speed reasons */ void bzero (void *dst, unsigned long size) { char *place=(char *) dst; unsigned long ladd=(unsigned long)dst; long *lplace; int cruft; cruft = ladd & 3; size-=cruft; while (cruft) { *place++ = '\0'; cruft--; } cruft = size % 3; size -= cruft; lplace = (long *) place; while (size) { size--; *lplace++ = 0; } place = (char *)lplace; while (cruft) { *place++ = '\0'; cruft--; } } aranym-1.1.0/atari/hostfs/metados/mint/assert.h0000664000175000017500000000106513454637621017666 0ustar joyjoy/* * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ /* * Copyright 1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corporation. * All rights reserved. */ # ifndef _mint_kassert_h # define _mint_kassert_h # ifdef assert # undef assert # endif #if 0 # define assert(x) #else # define assert(expression) \ ((expression) ? (void)0 : \ FATAL ("assert (`%s') failed at line %ld of %s.", \ #expression, (long) __LINE__, __FILE__)) #endif # endif /* _mint_kassert_h */ aranym-1.1.0/atari/hostfs/metados/mdglue.S0000664000175000017500000003451613454637621016655 0ustar joyjoy/* * 2001 STanda * * The basic file layout was taken from Julian Reschke's Cookies */ .globl _init .globl _sys_d_free, _sys_f_sfirst, _sys_f_snext, _sys_f_open .globl _sys_f_close, _sys_d_atime, _sys_f_write, _sys_f_read .globl _sys_f_attrib, _sys_f_create, _sys_f_seek, _sys_f_cntl .globl _sys_d_create, _sys_d_delete, _sys_f_rename .globl _sys_d_getpath, _sys_d_dsetpath .globl _sys_d_pathconf, _sys_f_xattr, _sys_d_opendir, _sys_d_readdir .globl _sys_d_closedir, _sys_d_xreaddir, _sys_d_rewinddir .globl _sys_d_readlabel, _sys_d_delete .globl _sys_ffstat .globl _sys_f_fchown .globl _sys_f_fchmod .globl _sys_f_link .globl _sys_f_symlink .globl _sys_f_readlink .globl _sys_f_chown .globl _sys_f_chown16 .globl _sys_f_chmod .globl _sys_f_stat64 .globl _DriverName, _ShowBanner, _InitDevice .macro PRINT value /* nf_call( nf_get_id(NF_STDERR), value); */ #if 0 move.l #s_stderr,-(sp) move.l #0,-(sp) /* fake return address */ dc.w 0x7300 lea 8(sp),sp move.l \value,-(sp) move.l #s_frm,-(sp) move.l d0,-(sp) move.l #0,-(sp) /* fake return address */ dc.w 0x7301 lea 16(sp),sp #endif .endm PRINT #if 1 #define SREGS movem.l a0-a6/d1-d7,-(sp) #define RREGS movem.l (sp)+,a0-a6/d1-d7 #else #define SREGS #define RREGS #endif .macro SSTCK framereg PRINT sp move.l sp,temp /* store the old stack to the new one (do not touch regs) */ move.l #stack,sp move.l temp,-(sp) SREGS move.l temp,\framereg .endm SSTCK .macro RSTCK RREGS move.l (sp),sp PRINT sp .endm RSTCK /* * Call to the MetaDOS C function implementation macro */ .macro MDBSR framereg,label move.w 4(\framereg),-(sp) /* opcodeMD */ move.l (\framereg),-(sp) /* retMD */ move.l a5,-(sp) /* fpMD */ move.l a4,-(sp) /* pathNameMD */ move.l a3,-(sp) /* devMD */ bsr \label lea 18(sp),sp .endm MDBSR .text _init: bsr _ShowBanner move.l #functionTable+12,d0 move.l #_DriverName,d1 rts initfun: movem.l a0-a6/d1-d7,-(sp) move.l d1,-(sp) /* BetaDOS's dosDevID + some wird word / MetaDOS pure crap */ move.w d0,-(sp) /* bosDevID 16bit */ move.w #0,-(sp) /* pad for gcc (long) */ bsr _InitDevice addq #8,sp movem.l (sp)+,a0-a6/d1-d7 /* d1: filename conversion */ /* Bit 0: 0 = force upper case */ /* Bit 1: 0 = fully expand */ /* Bit 2: 0 = critical error handler reports EWRPRO */ moveq #5,d1 rts functionTable: dc.l 0x4d414749 /* 'MAGI' */ dc.l 0x434d4554 /* 'CMET' */ dc.l 389 dc.l initfun dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 9 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 19 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 29 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 39 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 49 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l wrap_dfree /* 54 */ dc.l -1 dc.l -1 dc.l wrap_dcreate /* 57 */ dc.l wrap_ddelete /* 58 */ dc.l -1 /* FIXME? wrap_dsetpath */ /* 59 */ dc.l wrap_fcreate /* 60 */ dc.l wrap_fopen /* 61 */ dc.l wrap_fclose /* 62 */ dc.l wrap_fread /* 63 */ dc.l wrap_fwrite /* 64 */ dc.l wrap_fdelete /* 65 */ dc.l wrap_fseek /* 66 */ dc.l wrap_fattrib /* 67 */ dc.l -1 dc.l -1 /* 69 */ dc.l -1 dc.l -1 /* 71 */ /* Dgetpath */ dc.l -1 dc.l -1 dc.l -1 /* 74 */ dc.l -1 dc.l -1 dc.l -1 dc.l wrap_fsfirst /* 78 */ dc.l wrap_fsnext /* 79 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 84 */ dc.l -1 dc.l wrap_frename /* 86 */ dc.l wrap_fdatime /* 87 */ dc.l -1 dc.l -1 /* 89 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 99 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 109 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 119 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 129 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 139 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 149 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 159 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 169 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 179 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 189 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 199 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 209 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 219 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 229 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 239 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 249 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l wrap_f_fchown /* 257 */ dc.l wrap_f_fchmod /* 258 */ dc.l -1 /* 259 */ dc.l wrap_fcntl /* 260 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 264 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 269 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 279 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 289 */ dc.l -1 dc.l -1 dc.l wrap_dpathconf /* 292 */ dc.l -1 dc.l -1 /* 294 */ dc.l -1 dc.l wrap_dopendir /* 296 */ dc.l wrap_dreaddir /* 297 */ dc.l wrap_drewinddir /* 298 */ dc.l wrap_dclosedir /* 299 */ dc.l wrap_fxattr /* 300 */ dc.l wrap_f_link /* 301 */ dc.l wrap_f_symlink /* 302 */ dc.l wrap_f_readlink /* 303 */ dc.l -1 /* 304 */ dc.l wrap_f_chown dc.l wrap_f_chmod dc.l -1 dc.l -1 dc.l -1 /* 309 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 314 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 319 */ dc.l -1 dc.l -1 dc.l wrap_dxreaddir /* 322 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 329 */ dc.l -1 dc.l wrap_f_stat64 /* 331 */ dc.l -1 dc.l -1 dc.l -1 /* 334 */ dc.l -1 dc.l -1 dc.l -1 dc.l wrap_dreadlabel /* 338 */ dc.l -1 /* 339 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 344 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l wrap_f_fstat64 /* 349 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 359 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 369 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 379 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l wrap_f_chown16 /* 384 */ dc.l -1 dc.l -1 dc.l -1 dc.l -1 dc.l -1 /* 389 */ wrap_dfree: PRINT #54 SSTCK a0 move.w 10(a0),-(sp) /* drive # */ move.l 6(a0),-(sp) /* diskinfo * */ MDBSR a0,_sys_d_free lea 6(sp),sp RSTCK rts wrap_dcreate: PRINT #57 SSTCK a0 move.l a4,-(sp) /* name - 6(a0) or a4 MD */ MDBSR a0,_sys_d_create lea 4(sp),sp RSTCK rts wrap_ddelete: PRINT #58 SSTCK a0 move.l a4,-(sp) /* name - 6(a0) or a4 MD */ MDBSR a0,_sys_d_delete lea 4(sp),sp RSTCK rts wrap_dsetpath: PRINT #59 SSTCK a0 move.l a4,-(sp) /* name - 6(a0) or a4 MD */ /* MDBSR a0,_sys_d_dsetpath */ lea 4(sp),sp RSTCK rts wrap_fcreate: PRINT #60 SSTCK a0 move.w 10(a0),-(sp) /* attr */ move.l a4,-(sp) /* name - 6(a0) or a4 MD */ MDBSR a0,_sys_f_create lea 6(sp),sp RSTCK rts wrap_fopen: PRINT #61 SSTCK a0 move.w 10(a0),-(sp) /* mode */ move.l a4,-(sp) /* name - 6(a0) or a4 MD */ MDBSR a0,_sys_f_open lea 6(sp),sp RSTCK cmp.l #0,d0 bmi fopen_error move.l #0,d0 /* reset the fs to 0 (MetaDOS requires this) */ fopen_error: rts wrap_fclose: PRINT #62 SSTCK a0 move.w 6(a0),-(sp) /* handle */ MDBSR a0,_sys_f_close lea 2(sp),sp RSTCK rts wrap_fread: PRINT #63 SSTCK a0 move.l 12(a0),-(sp) /* buffer */ move.l 8(a0),-(sp) /* count */ move.w 6(a0),-(sp) /* handle */ MDBSR a0,_sys_f_read lea 10(sp),sp RSTCK rts wrap_fwrite: PRINT #64 SSTCK a0 move.l 12(a0),-(sp) /* buffer */ move.l 8(a0),-(sp) /* count */ move.w 6(a0),-(sp) /* handle */ MDBSR a0,_sys_f_write lea 10(sp),sp RSTCK rts wrap_fdelete: PRINT #65 SSTCK a0 move.l a4,-(sp) /* name - 6(a0) or a4 MD */ MDBSR a0,_sys_f_delete lea 4(sp),sp RSTCK rts wrap_fseek: PRINT #66 #if 1 SSTCK a0 move.w 12(a0),-(sp) /* mode */ move.w 10(a0),-(sp) /* handle */ move.l 6(a0),-(sp) /* count */ MDBSR a0,_sys_f_seek lea 8(sp),sp RSTCK #else move.l a5,-(sp) move.l a4,-(sp) move.l a3,-(sp) bsr _sys_f_seek lea 12(sp),sp #endif PRINT d0 rts wrap_fattrib: PRINT #67 SSTCK a0 move.w 12(a0),-(sp) /* attrib */ move.w 10(a0),-(sp) /* flag */ move.l a4,-(sp) /* name - 6(a0) or a4 MD */ MDBSR a0,_sys_f_attrib lea 8(sp),sp RSTCK rts wrap_fsfirst: PRINT #78 SSTCK a0 move.w 10(a0),-(sp) /* flags */ move.l a4,-(sp) /* name/mask - 6(a0) or a4 MD */ MDBSR a0,_sys_f_sfirst lea 6(sp),sp RSTCK rts wrap_fsnext: PRINT #79 SSTCK a0 MDBSR a0,_sys_f_snext RSTCK rts wrap_frename: PRINT #86 SSTCK a0 move.l 12(a0),-(sp) /* newname */ move.l a4,-(sp) /* oldname - 8(a0) or a4 MD (yes 8(a0)!!!) */ move.w 6(a0),-(sp) /* reserved */ MDBSR a0,_sys_f_rename lea 10(sp),sp RSTCK rts wrap_fdatime: PRINT #87 SSTCK a0 move.w 12(a0),-(sp) /* flag */ move.w 10(a0),-(sp) /* handle */ move.l 6(a0),-(sp) /* timeptr MDBSR a0,_sys_f_datime */ MDBSR a0,_sys_f_datime lea 8(sp),sp RSTCK rts wrap_f_fchown: PRINT #257 SSTCK a0 move.w 10(a0),-(sp) /* gid */ move.w 8(a0),-(sp) /* uid */ move.w 6(a0),-(sp) /* handle */ MDBSR a0,_sys_f_fchown lea 6(sp),sp RSTCK rts wrap_f_fchmod: PRINT #258 SSTCK a0 move.w 8(a0),-(sp) /* mode */ move.w 6(a0),-(sp) /* handle */ MDBSR a0,_sys_f_fchmod lea 4(sp),sp RSTCK rts wrap_fcntl: PRINT #260 SSTCK a0 move.w 12(a0),-(sp) /* cmd */ move.l 8(a0),-(sp) /* argument */ move.w 6(a0),-(sp) /* handle */ MDBSR a0,_sys_f_cntl lea 8(sp),sp RSTCK rts wrap_dpathconf: PRINT #292 SSTCK a0 move.w 10(a0),-(sp) /* mode */ move.l a4,-(sp) /* name - 6(a0) or a4 MD */ MDBSR a0,_sys_d_pathconf lea 6(sp),sp RSTCK rts wrap_dopendir: PRINT #296 SSTCK a0 move.w 10(a0),-(sp) /* flag */ move.l a4,-(sp) /* name 6(a0) or a4 MD */ MDBSR a0,_sys_d_opendir lea 6(sp),sp RSTCK rts wrap_dreaddir: PRINT #297 SSTCK a0 move.l 12(a0),-(sp) /* buffer */ move.l 8(a0),-(sp) /* dirhandle */ move.w 6(a0),-(sp) /* len */ MDBSR a0,_sys_d_readdir lea 10(sp),sp RSTCK rts wrap_drewinddir: PRINT #298 SSTCK a0 move.l 6(a0),-(sp) /* dirhandle */ MDBSR a0,_sys_d_rewind lea 4(sp),sp RSTCK rts wrap_dclosedir: PRINT #299 SSTCK a0 move.l 6(a0),-(sp) /* dirhandle */ MDBSR a0,_sys_d_closedir lea 4(sp),sp RSTCK rts wrap_fxattr: PRINT #300 SSTCK a0 move.l 12(a0),-(sp) /* xattr* */ move.l a4,-(sp) /* name 8(a0) or a4 MD */ move.w 6(a0),-(sp) /* flag */ MDBSR a0,_sys_f_xattr lea 10(sp),sp RSTCK rts wrap_f_link: PRINT #301 SSTCK a0 move.l 10(a0),-(sp) /* newname */ move.l a4,-(sp) /* oldname - 6(a0) or a4 MD */ MDBSR a0,_sys_f_link lea 8(sp),sp RSTCK rts wrap_f_symlink: PRINT #302 SSTCK a0 move.l 10(a0),-(sp) /* newname */ move.l a4,-(sp) /* oldname - 6(a0) or a4 MD */ MDBSR a0,_sys_f_symlink lea 8(sp),sp RSTCK rts wrap_f_readlink: PRINT #303 SSTCK a0 move.l 12(a0),-(sp) /* newname */ move.l a4,-(sp) /* oldname - 8(a0) or a4 MD */ move.w 6(a0),-(sp) /* buflen */ MDBSR a0,_sys_f_readlink lea 10(sp),sp RSTCK rts wrap_f_chown: PRINT #305 SSTCK a0 move.w 12(a0),-(sp) /* gid */ move.w 10(a0),-(sp) /* uid */ move.l a4,-(sp) /* name - 6(a0) or a4 MD */ MDBSR a0,_sys_f_chown lea 8(sp),sp RSTCK rts wrap_f_chmod: PRINT #306 SSTCK a0 move.w 10(a0),-(sp) /* mode */ move.l a4,-(sp) /* name - 6(a0) or a4 MD */ MDBSR a0,_sys_f_chmod lea 6(sp),sp RSTCK rts wrap_dxreaddir: PRINT #322 SSTCK a0 move.l 20(a0),-(sp) /* xret* */ move.l 16(a0),-(sp) /* xattr* */ move.l 12(a0),-(sp) /* buffer */ move.l 8(a0),-(sp) /* dirhandle */ move.w 6(a0),-(sp) /* len */ MDBSR a0,_sys_d_xreaddir lea 18(sp),sp RSTCK rts wrap_f_stat64: PRINT #331 SSTCK a0 move.l 12(a0),-(sp) /* stat* */ move.l a4,-(sp) /* name 8(a0) or a4 MD */ move.w 6(a0),-(sp) /* flag */ MDBSR a0,_sys_f_stat64 lea 10(sp),sp RSTCK rts wrap_dreadlabel: PRINT #338 SSTCK a0 move.w 14(a0),-(sp) /* len */ move.l 10(a0),-(sp) /* buffer */ move.l a4,-(sp) /* pathname 6(a0) or a4 MD */ MDBSR a0,_sys_d_readlabel lea 10(sp),sp RSTCK rts wrap_f_fstat64: PRINT #349 SSTCK a0 move.l 8(a0),-(sp) /* buffer */ move.w 6(a0),-(sp) /* handle */ MDBSR a0,_sys_ffstat lea 6(sp),sp RSTCK rts wrap_f_chown16: PRINT #384 SSTCK a0 move.w 14(a0),-(sp) /* follow_symlinks */ move.w 12(a0),-(sp) /* gid */ move.w 10(a0),-(sp) /* uid */ move.l a4,-(sp) /* name - 6(a0) or a4 MD */ MDBSR a0,_sys_f_chown16 lea 10(sp),sp RSTCK rts s_frm: .ascii "DEV: %ld\n\0" s_stderr: .ascii "DEBUGPRINTF\0" .bss temp: ds.l 1 ds.b 8192 stack: /* * Revision 1.3 2004/04/26 07:14:04 standa * Adjusted to the recent FreeMiNT CVS state to compile and also made * BetaDOS only. No more MetaDOS compatibility attempts. * * Dfree() fix - for Calamus to be able to save its documents. * * Some minor bugfix backports from the current FreeMiNTs CVS version. * * The mountpoint entries are now shared among several hostfs.dos instances * using a 'BDhf' cookie entry (atari/hostfs/metados/main.c). * * Revision 1.2 2003/03/03 20:39:44 standa * Parameter passing fixed. * * Revision 1.1 2002/12/10 20:47:21 standa * The HostFS (the host OS filesystem access via NatFeats) implementation. * * Revision 1.1 2002/05/22 07:53:22 standa * The PureC -> gcc conversion (see the CONFIGVARS). * MiNT .XFS sources added. * * Revision 1.4 2001/10/17 18:03:47 standa * typo fix * * Revision 1.3 2001/10/17 17:59:44 standa * The fandafs to aranymfs name change and code cleanup. * */ aranym-1.1.0/atari/hostfs/metados/main.c0000664000175000017500000001134213454637621016334 0ustar joyjoy/* * The ARAnyM BetaDOS driver. * * 2001/2002 STan * * Based on: * @(#)cookiefs/dosmain.c * * Copyright (c) Julian F. Reschke, 28. November 1995 * All rights reserved. * **/ #include "hostfs.h" #include "nf_ops.h" #include #include "hostfs/hostfs_dev.h" #include "hostfs/hostfs_xfs.h" #include "global.h" #define DEVNAME "ARAnyM Host Filesystem" #define VERSION "0.60" char DriverName[] = DEVNAME" "VERSION; long ldp; long _cdecl (*nf_call)(long id, ...) = 0L; void _cdecl ShowBanner( void ); void* _cdecl InitDevice( long bosDevID, long dosDevID ); /* Diverse Utility-Funktionen */ void _cdecl ShowBanner( void ) { (void) Cconws ( "\r\n\033p "DEVNAME" "VERSION" \033q " "\r\nCopyright (c) ARAnyM Development Team, "__DATE__"\r\n" ); } struct cookie { long tag; long value; }; static ulong get_cookie (ulong tag) { struct cookie *cookie = *(struct cookie **)0x5a0; if (!cookie) return 0; while (cookie->tag) { if (cookie->tag == tag) return cookie->value; cookie++; } return 0; } static long set_cookie (ulong tag, ulong val) { struct cookie *cookie = *(struct cookie **)0x5a0; long count, size; if (!cookie) return 0; count = 0; while (cookie->tag) { cookie++; count++; } count += 2; size = cookie->value; if (count >= size) return 0; cookie->tag = tag; cookie->value = val; cookie++; cookie->tag = 0; cookie->value = size; return 1; } void* _cdecl InitDevice( long bosDevID, long dosDevID ) { char mountPoint[] = "A:"; mountPoint[0] += (dosDevID = (dosDevID&0x1f)); /* mask out bad values of the dosDevID */ /* check the NF HOSTFS avialability */ if ( ! hostfs_init() ) { return (void*)-1; } /* * Hack to get the drive table the same for all hostfs.dos * instances loaded by BetaDOS into memory. * * Note: This is definitely not MP friendly, but FreeMiNT * doesn't support B(M)etaDOS anyway, so: Do not do * this when using 'MiNT' or 'MagX' it crashes then. */ if (!get_cookie(0x4D694E54L /*'MiNT'*/) && !get_cookie(0x4D616758L /*'MagX'*/)) { /* BetaDOS Host Filesystem cookie */ ulong p = get_cookie(0x42446866L /*'BDfh'*/); if ( p ) curproc = (void*)p; else set_cookie(0x42446866L /*'BDfh'*/, (ulong)curproc); } /* * We _must_ use the bosDevID to define the drive letter here * because MetaDOS (in contrary to BetaDOS) does not provide * the dosDevID */ DEBUG(("InitDevice: %s [dosDev=%ld, bosDev=%ld] addr: %lx", mountPoint, dosDevID, bosDevID, &hostfs_filesys )); /* map the BetaDOS drive to some bosDrive | 0x6000 so that the mapping would not colide with the MiNT one */ fs_native_init( dosDevID | 0x6000, mountPoint, "/tmp", 1, &hostfs_filesys, &hostfs_fs_devdrv ); timezone = hostfs_filesys.res1; hostfs_filesys.root( dosDevID | 0x6000, &curproc->p_cwd->root[dosDevID] ); #ifdef DEBUG_INFO { fcookie *relto = &curproc->p_cwd->root[dosDevID]; DEBUG (("InitDevice: root (%08lx, %08lx, %04x)", relto->fs, relto->index, relto->dev)); } #endif return &ldp; } /** * Revision 1.12 2006/02/06 20:58:17 standa * Sync with the FreeMiNT CVS. The make.sh now only builds the BetaDOS * hostfs.dos. * * Revision 1.11 2006/02/04 21:03:03 standa * Complete isolation of the metados fake mint VFS implemenation in the * metados folder. No #ifdef ARAnyM_MetaDOS in the hostfs folder files * themselves. * * Revision 1.10 2006/01/31 15:57:39 standa * More of the initialization reworked to work with the new nf_ops. This time * I have tested it. * * Revision 1.9 2005/09/26 22:18:05 standa * Build warnings removal. * * Revision 1.8 2004/05/07 11:31:07 standa * The BDhf cookie is not used in MagiC or MiNT because it was causing * ARAnyM to crash. * * Revision 1.7 2004/04/26 07:14:04 standa * Adjusted to the recent FreeMiNT CVS state to compile and also made * BetaDOS only. No more MetaDOS compatibility attempts. * * Dfree() fix - for Calamus to be able to save its documents. * * Some minor bugfix backports from the current FreeMiNTs CVS version. * * The mountpoint entries are now shared among several hostfs.dos instances * using a 'BDhf' cookie entry (atari/hostfs/metados/main.c). * * Revision 1.6 2003/03/24 08:58:53 joy * aranymfs.xfs renamed to hostfs.xfs * * Revision 1.5 2003/03/20 21:27:22 standa * The .xfs mapping to the U:\G mountpouints (single letter) implemented. * * Revision 1.4 2003/03/05 09:30:45 standa * mountPath declaration fixed. * * Revision 1.3 2003/03/03 20:39:44 standa * Parameter passing fixed. * * Revision 1.2 2002/12/11 08:05:54 standa * The /tmp/calam host fs mount point changed to /tmp one. * * Revision 1.1 2002/12/10 20:47:21 standa * The HostFS (the host OS filesystem access via NatFeats) implementation. * * **/ aranym-1.1.0/atari/hostfs/metados/k_fds.h0000664000175000017500000000327713454637621016513 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * k_fds.h,v 1.4 2001/06/13 20:21:20 fna Exp * * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2001-01-13 * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * */ # ifndef _k_fds_h # define _k_fds_h # define FD_ALLOC(p, fd, min) 0 # define FD_REMOVE(p, fd) # define FP_ALLOC(p, result) 0; *(result) = fpMD # define FP_DONE(p, fp, fd, flags) # define FP_FREE(fp) # define FP_GET(p, fd, fp) *(fp) = fpMD # define FP_GET1(p, fd, fp) *(fp) = fpMD # define GETFILEPTR(p, fd, fp) 0; (void)p; *(fp) = fpMD long do_open (FILEPTR **f, const char *name, int rwmode, int attr, XATTR *x); long do_close (struct proc *p, FILEPTR *f); # endif /* _k_fds_h */ aranym-1.1.0/atari/hostfs/metados/k_fds.c0000664000175000017500000002044013454637621016475 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * k_fds.c,v 1.10 2001/06/13 20:21:20 fna Exp * * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2001-01-12 * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * */ #include "hostfs.h" #include "mint/errno.h" #include "mint/fcntl.h" #include "mint/credentials.h" #include "mint/assert.h" #include "mint/string.h" /* do_open(f, name, rwmode, attr, x) * * f - pointer to FIELPTR * * name - file name * rwmode - file access mode * attr - TOS attributes for created files (if applicable) * x - filled in with attributes of opened file (can be NULL) */ long do_open (FILEPTR **f, const char *name, int rwmode, int attr, XATTR *x) { struct proc *p = get_curproc(); fcookie dir, fc; long devsp = 0; DEVDRV *dev; long r; XATTR xattr; unsigned perm; int creating, exec_check; char temp1[PATH_MAX]; short cur_gid, cur_egid; TRACE (("do_open(%s)", name)); /* * first step: get a cookie for the directory */ r = path2cookie (p, name, temp1, &dir); if (r) { DEBUG (("do_open(%s): error %ld", name, r)); return r; } /* * If temp1 is a NULL string, then use the name again. * * This can occur when trying to open the ROOT directory of a * drive. i.e. /, or C:/ or D:/ etc. */ if (*temp1 == '\0') { strncpy(temp1, name, PATH_MAX); } /* * second step: try to locate the file itself */ r = relpath2cookie (p, &dir, temp1, follow_links, &fc, 0); # ifdef CREATE_PIPES /* * file found: this is an error if (O_CREAT|O_EXCL) are set * ...or if this is Fcreate with nonzero attr on the pipe filesystem */ if ((r == 0) && ((rwmode & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL) || (attr && fc.fs == &pipe_filesys && (rwmode & (O_CREAT|O_TRUNC)) == (O_CREAT|O_TRUNC)))) # else /* * file found: this is an error if (O_CREAT|O_EXCL) are set */ if ((r == 0) && ((rwmode & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL))) # endif { DEBUG (("do_open(%s): file already exists", name)); release_cookie (&fc); release_cookie (&dir); return EACCES; } /* file not found: maybe we should create it * note that if r != 0, the fc cookie is invalid (so we don't need to * release it) */ if (r == ENOENT && (rwmode & O_CREAT)) { /* check first for write permission in the directory */ r = xfs_getxattr (dir.fs, &dir, &xattr); #if 0 if (r == 0) { if (denyaccess (p->p_cred->ucr, &xattr, S_IWOTH)) r = EACCES; } #endif if (r) { DEBUG(("do_open(%s): couldn't get " "write permission on directory", name)); release_cookie (&dir); return r; } assert (p->p_cred); /* fake gid if directories setgid bit set */ cur_gid = p->p_cred->rgid; cur_egid = p->p_cred->ucr->egid; if (xattr.mode & S_ISGID) { p->p_cred->rgid = xattr.gid; p->p_cred->ucr = copy_cred (p->p_cred->ucr); p->p_cred->ucr->egid = xattr.gid; } assert (p->p_cwd); r = xfs_creat (dir.fs, &dir, temp1, (S_IFREG|DEFAULT_MODE) & (~p->p_cwd->cmask), attr, &fc); p->p_cred->rgid = cur_gid; p->p_cred->ucr->egid = cur_egid; if (r) { DEBUG(("do_open(%s): error %ld while creating file", name, r)); release_cookie (&dir); return r; } creating = 1; } else if (r) { DEBUG(("do_open(%s): error %ld while searching for file", name, r)); release_cookie (&dir); return r; } else { creating = 0; } /* check now for permission to actually access the file */ r = xfs_getxattr (fc.fs, &fc, &xattr); if (r) { DEBUG(("do_open(%s): couldn't get file attributes", name)); release_cookie (&dir); release_cookie (&fc); return r; } DEBUG(("do_open(%s): mode 0x%x", name, xattr.mode)); /* we don't do directories */ if (S_ISDIR(xattr.mode)) { DEBUG(("do_open(%s): file is a directory", name)); release_cookie (&dir); release_cookie (&fc); return ENOENT; } exec_check = 0; switch (rwmode & O_RWMODE) { case O_WRONLY: perm = S_IWOTH; break; case O_RDWR: perm = S_IROTH|S_IWOTH; break; case O_EXEC: if (fc.fs->fsflags & FS_NOXBIT) perm = S_IROTH; else { perm = S_IXOTH; assert (p->p_cred); if (p->p_cred->ucr->euid == 0) exec_check = 1; /* superuser needs 1 x bit */ } break; case O_RDONLY: perm = S_IROTH; break; default: break; } /* access checking; additionally, the superuser needs at least one * execute right to execute a file */ if ((exec_check && ((xattr.mode & (S_IXUSR|S_IXGRP|S_IXOTH)) == 0)) || (!creating && 0 /* denyaccess (p->p_cred->ucr, &xattr, perm) */)) { DEBUG(("do_open(%s): access to file denied", name)); release_cookie (&dir); release_cookie (&fc); return EACCES; } /* an extra check for write access -- even the superuser shouldn't * write to files with the FA_RDONLY attribute bit set (unless, * we just created the file, or unless the file is on the proc * file system and hence FA_RDONLY has a different meaning) */ if (!creating && (xattr.attr & FA_RDONLY)) { if ((rwmode & O_RWMODE) == O_RDWR || (rwmode & O_RWMODE) == O_WRONLY) { DEBUG(("do_open(%s): can't write a read-only file", name)); release_cookie (&dir); release_cookie (&fc); return EACCES; } } /* if writing to a setuid or setgid file, clear those bits */ if ((perm & S_IWOTH) && (xattr.mode & (S_ISUID|S_ISGID))) { xattr.mode &= ~(S_ISUID|S_ISGID); xfs_chmode (fc.fs, &fc, (xattr.mode & ~S_IFMT)); } /* If the caller asked for the attributes of the opened file, copy them over. */ if (x) *x = xattr; /* So far, so good. Let's get the device driver now, and try to * actually open the file. */ dev = xfs_getdev (fc.fs, &fc, &devsp); if (!dev) { DEBUG (("do_open(%s): device driver not found (%li)", name, devsp)); release_cookie (&dir); release_cookie (&fc); return devsp ? devsp : EINTERNAL; } assert (f && *f); if (dev == &fakedev) { /* fake BIOS devices */ FILEPTR *fp; assert (p->p_fd); fp = p->p_fd->ofiles[devsp]; if (!fp || fp == (FILEPTR *) 1) return EBADF; (*f)->links--; FP_FREE (*f); *f = fp; fp->links++; release_cookie (&dir); release_cookie (&fc); return 0; } (*f)->links = 1; (*f)->flags = rwmode; (*f)->pos = 0; (*f)->devinfo = devsp; (*f)->fc = fc; (*f)->dev = dev; release_cookie (&dir); r = xdd_open (*f); if (r < E_OK) { DEBUG(("do_open(%s): device open failed with error %ld", name, r)); release_cookie (&fc); return r; } DEBUG(("do_open(%s) -> 0", name)); return 0; } /* * helper function for do_close: this closes the indicated file pointer which * is assumed to be associated with process p. The extra parameter is necessary * because f_midipipe mucks with file pointers of other processes, so * sometimes p != curproc. * * Note that the function changedrv() in filesys.c can call this routine. * in that case, f->dev will be 0 to represent an invalid device, and * we cannot call the device close routine. */ long do_close (struct proc *p, FILEPTR *f) { long r = E_OK; if (!f) return EBADF; if (f == (FILEPTR *) 1) return E_OK; /* if this file is "select'd" by this process, unselect it * (this is just in case we were killed by a signal) */ f->links--; if (f->links < 0) { DEBUG(("do_close on invalid file struct! (links = %i)", f->links)); /* return 0; */ } if (f->dev) { r = xdd_close (f, p->pid); if (r) DEBUG (("close: device close failed")); } if (f->links <= 0) { release_cookie (&f->fc); FP_FREE (f); } return r; } aranym-1.1.0/atari/hostfs/metados/hostfs/0000775000175000017500000000000013454637621016551 5ustar joyjoyaranym-1.1.0/atari/hostfs/metados/hostfs/hostfs_xfs.h0000664000175000017500000000262413454637621021114 0ustar joyjoy/* * The Host OS filesystem access driver - filesystem definitions. * * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * Copyright (c) 2002-2006 Standa of ARAnyM dev team. * Copyright 1998, 1999, 2001 by Markus Kohm . * Modified by Chris Felsch . * * Originally taken from the STonX CVS repository. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _hostfs_xfs_h_ #define _hostfs_xfs_h_ extern ulong fs_drive_bits(void); extern long fs_native_init(int fs_devnum, char *mountpoint, char *hostroot, int halfsensitive, void *fs, void *fs_dev); extern FILESYS hostfs_filesys; extern FILESYS *hostfs_init(void); #endif /* _hostfs_xfs_h_ */ aranym-1.1.0/atari/hostfs/metados/hostfs/hostfs_xfs.c0000664000175000017500000002135213454637621021106 0ustar joyjoy/* * The Host OS filesystem access driver - filesystem functions. * * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * Copyright (c) 2002-2006 Standa of ARAnyM dev team. * Copyright 1998, 1999, 2001 by Markus Kohm . * Modified by Chris Felsch . * * Originally taken from the STonX CVS repository. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "hostfs.h" #include "global.h" #include "hostfs_xfs.h" #include "hostfs_nfapi.h" #include "nf_ops.h" unsigned long nf_hostfs_id = 0; ulong _cdecl fs_drive_bits(void) { return nf_call(HOSTFS(GET_DRIVE_BITS)); } long _cdecl fs_native_init(int fs_devnum, char *mountpoint, char *hostroot, int halfsensitive, void *fs, void *fs_dev) { return nf_call(HOSTFS(XFS_INIT), (long)fs_devnum, mountpoint, hostroot, (long)halfsensitive, fs, fs_dev); } /* FILESYS routines */ static long _cdecl hostfs_fs_root (int drv, fcookie *fc) { return nf_call(HOSTFS(XFS_ROOT), (long)drv, fc); } static long _cdecl hostfs_fs_lookup (fcookie *dir, const char *name, fcookie *fc) { return nf_call(HOSTFS(XFS_LOOKUP), dir, name, fc); } static long _cdecl hostfs_fs_creat (fcookie *dir, const char *name, unsigned int mode, int attrib, fcookie *fc) { return nf_call(HOSTFS(XFS_CREATE), dir, name, (long)mode, (long)attrib, fc); } static DEVDRV * _cdecl hostfs_fs_getdev (fcookie *fc, long *devspecial) { return (DEVDRV*) nf_call(HOSTFS(XFS_GETDEV), fc, devspecial); } static long _cdecl hostfs_fs_getxattr (fcookie *file, XATTR *xattr) { return nf_call(HOSTFS(XFS_GETXATTR), file, xattr); } static long _cdecl hostfs_fs_chattr (fcookie *file, int attr) { return nf_call(HOSTFS(XFS_CHATTR), file, (long)attr); } static long _cdecl hostfs_fs_chown (fcookie *file, int uid, int gid) { return nf_call(HOSTFS(XFS_CHOWN), file, (long)uid, (long)gid); } static long _cdecl hostfs_fs_chmode (fcookie *file, unsigned int mode) { return nf_call(HOSTFS(XFS_CHMOD), file, (long)mode); } static long _cdecl hostfs_fs_mkdir (fcookie *dir, const char *name, unsigned int mode) { return nf_call(HOSTFS(XFS_MKDIR), dir, name, (long)mode); } static long _cdecl hostfs_fs_rmdir (fcookie *dir, const char *name) { return nf_call(HOSTFS(XFS_RMDIR), dir, name); } static long _cdecl hostfs_fs_remove (fcookie *dir, const char *name) { return nf_call(HOSTFS(XFS_REMOVE), dir, name); } static long _cdecl hostfs_fs_getname (fcookie *relto, fcookie *dir, char *pathname, int size) { return nf_call(HOSTFS(XFS_GETNAME), relto, dir, pathname, (long)size); } static long _cdecl hostfs_fs_rename (fcookie *olddir, char *oldname, fcookie *newdir, const char *newname) { return nf_call(HOSTFS(XFS_RENAME), olddir, oldname, newdir, newname); } static long _cdecl hostfs_fs_opendir (DIR *dirh, int tosflag) { return nf_call(HOSTFS(XFS_OPENDIR), dirh, (long)tosflag); } static long _cdecl hostfs_fs_readdir (DIR *dirh, char *name, int namelen, fcookie *fc) { return nf_call(HOSTFS(XFS_READDIR), dirh, name, (long)namelen, fc); } static long _cdecl hostfs_fs_rewinddir (DIR *dirh) { return nf_call(HOSTFS(XFS_REWINDDIR), dirh); } static long _cdecl hostfs_fs_closedir (DIR *dirh) { return nf_call(HOSTFS(XFS_CLOSEDIR), dirh); } static long _cdecl hostfs_fs_pathconf (fcookie *dir, int which) { return nf_call(HOSTFS(XFS_PATHCONF), dir, (long)which); } static long _cdecl hostfs_fs_dfree (fcookie *dir, long *buf) { return nf_call(HOSTFS(XFS_DFREE), dir, buf); } static long _cdecl hostfs_fs_writelabel (fcookie *dir, const char *name) { return nf_call(HOSTFS(XFS_WRITELABEL), dir, name); } static long _cdecl hostfs_fs_readlabel (fcookie *dir, char *name, int namelen) { return nf_call(HOSTFS(XFS_READLABEL), dir, name, (long)namelen); } static long _cdecl hostfs_fs_symlink (fcookie *dir, const char *name, const char *to) { return nf_call(HOSTFS(XFS_SYMLINK), dir, name, to); } static long _cdecl hostfs_fs_readlink (fcookie *dir, char *buf, int len) { return nf_call(HOSTFS(XFS_READLINK), dir, buf, (long)len); } static long _cdecl hostfs_fs_hardlink (fcookie *fromdir, const char *fromname, fcookie *todir, const char *toname) { return nf_call(HOSTFS(XFS_HARDLINK), fromdir, fromname, todir, toname); } static long _cdecl hostfs_fs_fscntl (fcookie *dir, const char *name, int cmd, long arg) { return nf_call(HOSTFS(XFS_FSCNTL), dir, name, (long)cmd, arg); } static long _cdecl hostfs_fs_dskchng (int drv, int mode) { return nf_call(HOSTFS(XFS_DSKCHNG), (long)drv, (long)mode); } static long _cdecl hostfs_fs_release (fcookie *fc) { return nf_call(HOSTFS(XFS_RELEASE), fc); } static long _cdecl hostfs_fs_dupcookie (fcookie *new, fcookie *old) { return nf_call(HOSTFS(XFS_DUPCOOKIE), new, old); } static long _cdecl hostfs_fs_sync (void) { return nf_call(HOSTFS(XFS_SYNC)); } static long _cdecl hostfs_fs_mknod (fcookie *dir, const char *name, ulong mode) { return nf_call(HOSTFS(XFS_MKNOD), dir, name, mode); } static long _cdecl hostfs_fs_unmount (int drv) { return nf_call(HOSTFS(XFS_UNMOUNT), (long)drv); } static long _cdecl hostfs_fs_stat64 (fcookie *file, STAT *xattr) { return nf_call(HOSTFS(XFS_STAT64), file, xattr); } /* * filesystem driver map */ FILESYS hostfs_filesys = { (struct filesys *)0, /* next */ /* * FS_KNOPARSE kernel shouldn't do parsing * FS_CASESENSITIVE file names are case sensitive * FS_NOXBIT require only 'read' permission for execution * (if a file can be read, it can be executed) * FS_LONGPATH file system understands "size" argument to "getname" * FS_NO_C_CACHE don't cache cookies for this filesystem * FS_DO_SYNC file system has a sync function * FS_OWN_MEDIACHANGE filesystem control self media change (dskchng) * FS_REENTRANT_L1 fs is level 1 reentrant * FS_REENTRANT_L2 fs is level 2 reentrant * FS_EXT_1 extensions level 1 - mknod & unmount * FS_EXT_2 extensions level 2 - additional place at the end * FS_EXT_3 extensions level 3 - stat & native UTC timestamps */ FS_NOXBIT | FS_CASESENSITIVE | /* FS_DO_SYNC | not used on the host side (would be * called periodically -> commented out) */ FS_OWN_MEDIACHANGE | FS_LONGPATH | FS_REENTRANT_L1 | FS_REENTRANT_L2 | FS_EXT_1 | FS_EXT_2 | FS_EXT_3 , hostfs_fs_root, hostfs_fs_lookup, hostfs_fs_creat, hostfs_fs_getdev, hostfs_fs_getxattr, hostfs_fs_chattr, hostfs_fs_chown, hostfs_fs_chmode, hostfs_fs_mkdir, hostfs_fs_rmdir, hostfs_fs_remove, hostfs_fs_getname, hostfs_fs_rename, hostfs_fs_opendir, hostfs_fs_readdir, hostfs_fs_rewinddir, hostfs_fs_closedir, hostfs_fs_pathconf, hostfs_fs_dfree, hostfs_fs_writelabel, hostfs_fs_readlabel, hostfs_fs_symlink, hostfs_fs_readlink, hostfs_fs_hardlink, hostfs_fs_fscntl, hostfs_fs_dskchng, hostfs_fs_release, hostfs_fs_dupcookie, hostfs_fs_sync, /* FS_EXT_1 */ hostfs_fs_mknod, hostfs_fs_unmount, /* FS_EXT_2 */ /* FS_EXT_3 */ hostfs_fs_stat64, 0L, 0L, 0L, /* reserved 1,2,3 */ 0L, 0L, /* lock, sleepers */ 0L, 0L /* block(), deblock() */ }; FILESYS *hostfs_init(void) { const struct nf_ops *ops; #if __KERNEL__ == 1 boot_print (MSG_BOOT); boot_print (MSG_GREET); boot_print ("\r\n"); #endif ops = nf_init(); if (!ops) { c_conws("Native Features not present on this system\r\n"); return NULL; } nf_call = ops->call; /* get the HostFs NatFeat ID */ nf_hostfs_id = ops->get_id("HOSTFS"); if (nf_hostfs_id == 0) { c_conws(MSG_PFAILURE("hostfs", "\r\nThe HOSTFS NatFeat not found\r\n")); return NULL; } /* compare the version */ if (nf_call(HOSTFS(GET_VERSION)) != HOSTFS_NFAPI_VERSION) { c_conws(MSG_PFAILURE("hostfs", "\r\nHOSTFS NFAPI version mismatch\n\r")); return NULL; } return &hostfs_filesys; } aranym-1.1.0/atari/hostfs/metados/hostfs/hostfs_dev.h0000664000175000017500000000231313454637621021065 0ustar joyjoy/* * The Host OS filesystem access driver - device IO definitions. * * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * Copyright (c) 2002-2006 Standa of ARAnyM dev team. * Copyright 1998, 1999, 2001 by Markus Kohm . * Modified by Chris Felsch . * * Originally taken from the STonX CVS repository. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _hostfs_dev_h_ #define _hostfs_dev_h_ extern DEVDRV hostfs_fs_devdrv; #endif /* _hostfs_dev_h_ */ aranym-1.1.0/atari/hostfs/metados/hostfs/hostfs_dev.c0000664000175000017500000000521713454637621021066 0ustar joyjoy/* * The Host OS filesystem access driver - device IO. * * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * Copyright (c) 2002-2006 Standa of ARAnyM dev team. * Copyright 1998, 1999, 2001 by Markus Kohm . * Modified by Chris Felsch . * * Originally taken from the STonX CVS repository. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "hostfs.h" #include "global.h" #include "hostfs_xfs.h" #include "hostfs_dev.h" #include "hostfs_nfapi.h" static long _cdecl hostfs_fs_dev_open (FILEPTR *f) { return nf_call(HOSTFS(DEV_OPEN), f); } static long _cdecl hostfs_fs_dev_write (FILEPTR *f, const char *buf, long bytes) { return nf_call(HOSTFS(DEV_WRITE), f, buf, bytes); } static long _cdecl hostfs_fs_dev_read (FILEPTR *f, char *buf, long bytes) { return nf_call(HOSTFS(DEV_READ), f, buf, bytes); } static long _cdecl hostfs_fs_dev_lseek (FILEPTR *f, long where, int whence) { return nf_call(HOSTFS(DEV_LSEEK), f, where, (long)whence); } static long _cdecl hostfs_fs_dev_ioctl (FILEPTR *f, int mode, void *buf) { return nf_call(HOSTFS(DEV_IOCTL), f, (long)mode, buf); } static long _cdecl hostfs_fs_dev_datime (FILEPTR *f, ushort *timeptr, int rwflag) { return nf_call(HOSTFS(DEV_DATIME), f, timeptr, (long)rwflag); } static long _cdecl hostfs_fs_dev_close (FILEPTR *f, int pid) { return nf_call(HOSTFS(DEV_CLOSE), f, (long)pid); } static long _cdecl hostfs_fs_dev_select (FILEPTR *f, long proc, int mode) { return nf_call(HOSTFS(DEV_SELECT), f, proc, (long)mode); } static void _cdecl hostfs_fs_dev_unselect (FILEPTR *f, long proc, int mode) { nf_call(HOSTFS(DEV_UNSELECT), f, proc, (long)mode); } DEVDRV hostfs_fs_devdrv = { hostfs_fs_dev_open, hostfs_fs_dev_write, hostfs_fs_dev_read, hostfs_fs_dev_lseek, hostfs_fs_dev_ioctl, hostfs_fs_dev_datime, hostfs_fs_dev_close, hostfs_fs_dev_select, hostfs_fs_dev_unselect, NULL, NULL /* writeb, readb not needed */ }; aranym-1.1.0/atari/hostfs/metados/hostfs.h0000664000175000017500000000037013454637621016722 0ustar joyjoy#include "mint/kcompiler.h" #include "debug.h" #include "filesys.h" #include "k_fds.h" #include "mint/fcntl.h" #include "mint/errno.h" #include "mint/assert.h" #include "mintfake.h" #include "dosfile.h" #include "dosdir.h" #include "mintproc.h" aranym-1.1.0/atari/hostfs/metados/global.h0000664000175000017500000000456213454637621016663 0ustar joyjoy/* * 2001-2003 STanda * * This is a part of the ARAnyM project sources. * * Originally taken from the STonX CVS repository. * */ /* * Copyright 1998, 1999, 2001 by Markus Kohm . * * See COPYING for details of legal notes. * * Modified by Chris Felsch . * * Global definitions and variables */ #ifndef _global_h_ #define _global_h_ extern long _cdecl (*nf_call)(long id, ...); /* console output via Cconws */ #include "mint/osbind.h" #define c_conws (void) Cconws #define MSG_VERSION str (HOSTFS_XFS_VERSION) "." str (HOSTFS_NFAPI_VERSION) VER_ALPHABETA #define MSG_BUILDDATE __DATE__ #define MSG_BOOT \ "\033p HostFS Filesystem driver version " MSG_VERSION " \033q\r\n" #define MSG_GREET \ " " MSG_BUILDDATE " by ARAnyM Team\r\n" # define MSG_ALPHA \ "\033p WARNING: This is an unstable version - ALPHA! \033q\7\r\n" # define MSG_BETA \ "\033p WARNING: This is a test version - BETA! \033q\7\r\n" #define MSG_PFAILURE(p,s) \ "\7Sorry, hostfs.dos NOT installed: " s "!\r\n" #endif /* _global_h_ */ /* * Revision 1.2 2006/02/06 20:58:17 standa * Sync with the FreeMiNT CVS. The make.sh now only builds the BetaDOS * hostfs.dos. * * Revision 1.1 2006/02/04 21:03:03 standa * Complete isolation of the metados fake mint VFS implemenation in the * metados folder. No #ifdef ARAnyM_MetaDOS in the hostfs folder files * themselves. * * Revision 1.5 2004/04/26 07:14:04 standa * Adjusted to the recent FreeMiNT CVS state to compile and also made * BetaDOS only. No more MetaDOS compatibility attempts. * * Dfree() fix - for Calamus to be able to save its documents. * * Some minor bugfix backports from the current FreeMiNTs CVS version. * * The mountpoint entries are now shared among several hostfs.dos instances * using a 'BDhf' cookie entry (atari/hostfs/metados/main.c). * * Revision 1.4 2003/10/02 18:13:41 standa * Large HOSTFS cleanup (see the ChangeLog for more) * * Revision 1.3 2003/03/24 08:58:53 joy * aranymfs.xfs renamed to hostfs.xfs * * Revision 1.2 2003/03/01 11:57:37 joy * major HOSTFS NF API cleanup * * Revision 1.1 2002/12/10 20:47:21 standa * The HostFS (the host OS filesystem access via NatFeats) implementation. * * Revision 1.1 2002/05/22 07:53:22 standa * The PureC -> gcc conversion (see the CONFIGVARS). * MiNT .XFS sources added. * * */ aranym-1.1.0/atari/hostfs/metados/filesys.h0000664000175000017500000002421713454637621017100 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * filesys.h,v 1.8 2001/06/13 20:21:15 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ # ifndef _filesys_h # define _filesys_h typedef struct proc PROC; #include "mint/fsops.h" #include "mint/file.h" #include "mint/filedesc.h" struct ucred; # define DIRSEP(p) (((p) == '\\') || ((p) == '/')) # define MAX_LINKS 4 # define follow_links ((char *) -1L) /* * external variables */ extern FILESYS *active_fs; extern FILESYS *drives[NUM_DRIVES]; extern int aliasdrv[NUM_DRIVES]; extern long dosdrvs; /* * exported functions */ long getxattr (FILESYS *fs, fcookie *fc, XATTR *xattr); long getstat64 (FILESYS *fs, fcookie *fc, STAT *ptr); void kill_cache(fcookie *dir, char *name); long cache_lookup(fcookie *dir, char *name, fcookie *res); void cache_init(void); void clobber_cookie(fcookie *fc); void init_filesys(void); char *xfs_name(fcookie *fc); void xfs_add(FILESYS *fs); void close_filesys(void); long _s_ync(void); long _cdecl sys_s_ync(void); long _cdecl sys_fsync(short fh); long _cdecl relpath2cookie(struct proc *p, fcookie *dir, const char *path, char *lastnm, fcookie *res, int depth); long _cdecl path2cookie(struct proc *p, const char *path, char *lastname, fcookie *res); void _cdecl release_cookie(fcookie *fc); void dup_cookie(fcookie *new, fcookie *old); int _cdecl denyshare(FILEPTR *list, FILEPTR *newfileptr); int denyaccess(struct ucred *cred, XATTR *, ushort); LOCK *denylock(ushort pid, LOCK *list, LOCK *newlock); long dir_access(struct ucred *cred, fcookie *, ushort, ushort *); int has_wild(const char *name); void copy8_3(char *dest, const char *src); int pat_match(const char *name, const char *template); int samefile(fcookie *, fcookie *); # ifndef NONBLOCKING_DMA # define xfs_lock(fs, dev, func) # define xfs_unlock(fs, dev, func) # else # ifdef DEBUG_INFO # define xfs_lock(fs, dev, func) \ ({ \ if (!(fs->fsflags & FS_REENTRANT_L2)) \ xfs_block(fs, dev, func); \ }) # define xfs_unlock(fs, dev, func) \ ({ \ if (!(fs->fsflags & FS_REENTRANT_L2)) \ xfs_deblock(fs, dev, func); \ }) # else # define xfs_lock(fs, dev, func) \ ({ \ if (!(fs->fsflags & FS_REENTRANT_L2)) \ xfs_block(fs, dev, NULL); \ }) # define xfs_unlock(fs, dev, func) \ ({ \ if (!(fs->fsflags & FS_REENTRANT_L2)) \ xfs_deblock(fs, dev, NULL); \ }) # endif /* DEBUG_INFO */ # endif INLINE long xfs_root(FILESYS *fs, int drv, fcookie *fc) { long r; xfs_lock(fs, drv, "xfs_root"); r = (*fs->root)(drv, fc); xfs_unlock(fs, drv, "xfs_root"); return r; } INLINE long xfs_lookup(FILESYS *fs, fcookie *dir, const char *name, fcookie *fc) { long r; xfs_lock(fs, dir->dev, "xfs_lookup"); r = (*fs->lookup)(dir, name, fc); xfs_unlock(fs, dir->dev, "xfs_lokup"); return r; } INLINE DEVDRV * xfs_getdev(FILESYS *fs, fcookie *fc, long *devsp) { return (*fs->getdev)(fc, devsp); } INLINE long xfs_getxattr(FILESYS *fs, fcookie *fc, XATTR *xattr) { if (fs->getxattr) { long r; xfs_lock(fs, fc->dev, "xfs_getxattr"); r = (*fs->getxattr)(fc, xattr); xfs_unlock(fs, fc->dev, "xfs_getxattr"); return r; } return getxattr(fs, fc, xattr); } INLINE long xfs_chattr(FILESYS *fs, fcookie *fc, int attr) { long r; xfs_lock(fs, fc->dev, "xfs_chattr"); r = (*fs->chattr)(fc, attr); xfs_unlock(fs, fc->dev, "xfs_chatr"); return r; } INLINE long xfs_chown(FILESYS *fs, fcookie *fc, int uid, int gid) { long r; xfs_lock(fs, fc->dev, "xfs_chown"); r = (*fs->chown)(fc, uid, gid); xfs_unlock(fs, fc->dev, "xfs_chown"); return r; } INLINE long xfs_chmode(FILESYS *fs, fcookie *fc, unsigned mode) { long r; xfs_lock(fs, fc->dev, "xfs_chmod"); r = (*fs->chmode)(fc, mode); xfs_unlock(fs, fc->dev, "xfs_chmod"); return r; } INLINE long xfs_mkdir(FILESYS *fs, fcookie *dir, const char *name, unsigned mode) { long r; xfs_lock(fs, dir->dev, "xfs_mkdir"); r = (*fs->mkdir)(dir, name, mode); xfs_unlock(fs, dir->dev, "xfs_mkdir"); return r; } INLINE long xfs_rmdir(FILESYS *fs, fcookie *dir, const char *name) { long r; xfs_lock(fs, dir->dev, "xfs_rmdir"); r = (*fs->rmdir)(dir, name); xfs_unlock(fs, dir->dev, "xfs_rmdir"); return r; } INLINE long xfs_creat(FILESYS *fs, fcookie *dir, const char *name, unsigned mode, int attr, fcookie *fc) { long r; xfs_lock(fs, dir->dev, "xfs_creat"); r = (*fs->creat)(dir, name, mode, attr, fc); xfs_unlock(fs, dir->dev, "xfs_creat"); return r; } INLINE long xfs_remove(FILESYS *fs, fcookie *dir, const char *name) { long r; xfs_lock(fs, dir->dev, "xfs_remove"); r = (*fs->remove)(dir, name); xfs_unlock(fs, dir->dev, "xfs_remove"); return r; } INLINE long xfs_getname(FILESYS *fs, fcookie *root, fcookie *dir, char *buf, int len) { long r; xfs_lock(fs, root->dev, "xfs_getname"); r = (*fs->getname)(root, dir, buf, len); xfs_unlock(fs, root->dev, "xfs_getname"); return r; } INLINE long xfs_rename(FILESYS *fs, fcookie *olddir, char *oldname, fcookie *newdir, const char *newname) { long r; xfs_lock(fs, olddir->dev, "xfs_rename"); r = (*fs->rename)(olddir, oldname, newdir, newname); xfs_unlock(fs, olddir->dev, "xfs_rename"); return r; } INLINE long xfs_opendir(FILESYS *fs, DIR *dirh, int flags) { long r; xfs_lock(fs, dirh->fc.dev, "xfs_opendir"); r = (*fs->opendir)(dirh, flags); xfs_unlock(fs, dirh->fc.dev, "xfs_opendir"); return r; } INLINE long xfs_readdir(FILESYS *fs, DIR *dirh, char *nm, int nmlen, fcookie *fc) { long r; xfs_lock(fs, dirh->fc.dev, "xfs_readdir"); r = (*fs->readdir)(dirh, nm, nmlen, fc); xfs_unlock(fs, dirh->fc.dev, "xfs_readdir"); return r; } INLINE long xfs_rewinddir(FILESYS *fs, DIR *dirh) { long r; xfs_lock(fs, dirh->fc.dev, "xfs_rewinddir"); r = (*fs->rewinddir)(dirh); xfs_unlock(fs, dirh->fc.dev, "xfs_rwinddir"); return r; } INLINE long xfs_closedir(FILESYS *fs, DIR *dirh) { long r; xfs_lock(fs, dirh->fc.dev, "xfs_closedir"); r = (*fs->closedir)(dirh); xfs_unlock(fs, dirh->fc.dev, "xfs_closedir"); return r; } INLINE long xfs_pathconf(FILESYS *fs, fcookie *dir, int which) { return (*fs->pathconf)(dir, which); } INLINE long xfs_dfree(FILESYS *fs, fcookie *dir, long *buf) { long r; xfs_lock(fs, dir->dev, "xfs_dfree"); r = (*fs->dfree)(dir, buf); xfs_unlock(fs, dir->dev, "xfs_dfree"); return r; } INLINE long xfs_writelabel(FILESYS *fs, fcookie *dir, const char *name) { long r; xfs_lock(fs, dir->dev, "xfs_writelabel"); r = (*fs->writelabel)(dir, name); xfs_unlock(fs, dir->dev, "xfs_writelabel"); return r; } INLINE long xfs_readlabel(FILESYS *fs, fcookie *dir, char *name, int namelen) { long r; xfs_lock(fs, dir->dev, "xfs_readlabel"); r = (*fs->readlabel)(dir, name, namelen); xfs_unlock(fs, dir->dev, "xfs_readlabel"); return r; } INLINE long xfs_symlink(FILESYS *fs, fcookie *dir, const char *name, const char *to) { long r; xfs_lock(fs, dir->dev, "xfs_symlink"); r = (*fs->symlink)(dir, name , to); xfs_unlock(fs, dir->dev, "xfs_symlink"); return r; } INLINE long xfs_readlink(FILESYS *fs, fcookie *fc, char *buf, int len) { long r; xfs_lock(fs, fc->dev, "xfs_readlink"); r = (*fs->readlink)(fc, buf, len); xfs_unlock(fs, fc->dev, "xfs_readlink"); return r; } INLINE long xfs_hardlink(FILESYS *fs, fcookie *fromdir, const char *fromname, fcookie *todir, const char *toname) { long r; xfs_lock(fs, fromdir->dev, "xfs_hardlink"); r = (*fs->hardlink)(fromdir, fromname, todir, toname); xfs_unlock(fs, fromdir->dev, "xfs_hardlink"); return r; } INLINE long xfs_fscntl(FILESYS *fs, fcookie *dir, const char *name, int cmd, long arg) { long r; xfs_lock(fs, dir->dev, "xfs_fscntl"); r = (*fs->fscntl)(dir, name, cmd, arg); xfs_unlock(fs, dir->dev, "xfs_fscntl"); return r; } INLINE long xfs_dskchng(FILESYS *fs, int drv, int mode) { long r; xfs_lock(fs, drv, "xfs_dskchng"); r = (*fs->dskchng)(drv, mode); xfs_unlock(fs, drv, "xfs_dskchng"); return r; } INLINE long xfs_release(FILESYS *fs, fcookie *fc) { return (*fs->release)(fc); } INLINE long xfs_dupcookie(FILESYS *fs, fcookie *dst, fcookie *src) { return (*fs->dupcookie)(dst, src); } INLINE long xfs_mknod(FILESYS *fs, fcookie *dir, const char *name, ulong mode) { long r; xfs_lock(fs, dir->dev, "xfs_mknod"); r = (*fs->mknod)(dir, name, mode); xfs_unlock(fs, dir->dev, "xfs_mknod"); return r; } INLINE long xfs_unmount(FILESYS *fs, int drv) { long r; xfs_lock(fs, drv, "xfs_unmount"); r = (*fs->unmount)(drv); xfs_unlock(fs, drv, "xfs_unmount"); return r; } INLINE long xfs_stat64(FILESYS *fs, fcookie *fc, STAT *stat) { if (fs->fsflags & FS_EXT_3) { long r; xfs_lock(fs, fc->dev, "xfs_stat64"); r = (*fs->stat64)(fc, stat); xfs_unlock(fs, fc->dev, "xfs_stat64"); return r; } return getstat64(fs, fc, stat); } INLINE long xdd_open(FILEPTR *f) { long r; xfs_lock(f->fc.fs, f->fc.dev, "xdd_open"); r = (f->dev->open)(f); xfs_unlock(f->fc.fs, f->fc.dev, "xdd_open"); return r; } INLINE long xdd_write(FILEPTR *f, const char *buf, long bytes) { long r; xfs_lock(f->fc.fs, f->fc.dev, "xdd_write"); r = (f->dev->write)(f, buf, bytes); xfs_unlock(f->fc.fs, f->fc.dev, "xdd_write"); return r; } INLINE long xdd_read(FILEPTR *f, char *buf, long bytes) { long r; xfs_lock(f->fc.fs, f->fc.dev, "xdd_read"); r = (f->dev->read)(f, buf, bytes); xfs_unlock(f->fc.fs, f->fc.dev, "xdd_read"); return r; } INLINE long xdd_lseek(FILEPTR *f, long where, int whence) { long r; xfs_lock(f->fc.fs, f->fc.dev, "xdd_lseek"); r = (f->dev->lseek)(f, where, whence); xfs_unlock(f->fc.fs, f->fc.dev, "xdd_lseek"); return r; } INLINE long xdd_ioctl(FILEPTR *f, int mode, void *buf) { long r; xfs_lock(f->fc.fs, f->fc.dev, "xdd_ioctl"); r = (f->dev->ioctl)(f, mode, buf); xfs_unlock(f->fc.fs, f->fc.dev, "xdd_ioctl"); return r; } INLINE long xdd_datime(FILEPTR *f, ushort *timeptr, int rwflag) { long r; xfs_lock(f->fc.fs, f->fc.dev, "xdd_datime"); r = (f->dev->datime)(f, timeptr, rwflag); xfs_unlock(f->fc.fs, f->fc.dev, "xdd_datime"); return r; } INLINE long xdd_close(FILEPTR *f, int pid) { long r; xfs_lock(f->fc.fs, f->fc.dev, "xdd_close"); r = (f->dev->close)(f, pid); xfs_unlock(f->fc.fs, f->fc.dev, "xdd_close"); return r; } # endif /* _filesys_h */ aranym-1.1.0/atari/hostfs/metados/filesys.c0000664000175000017500000004072713454637621017077 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * filesys.c,v 1.24 2002/01/25 09:23:52 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. * * * Copyright 1990,1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corp. * All rights reserved. * */ /* * various file system interface things */ #include "hostfs.h" #include "mint/assert.h" #include "mint/string.h" #include "mint/errno.h" #include "mint/ctype.h" #include "mint/credentials.h" #if 1 #define PATH2COOKIE_DB(x) TRACE(x) #else #define PATH2COOKIE_DB(x) DEBUG(x) #endif long getxattr(FILESYS *fs, fcookie *fc, XATTR *xattr) { STAT stat; long r; assert(fs->fsflags & FS_EXT_3); r = xfs_stat64(fs, fc, &stat); if (!r) { xattr->mode = stat.mode; xattr->index = stat.ino; xattr->dev = stat.dev; xattr->rdev = stat.rdev; xattr->nlink = stat.nlink; xattr->uid = stat.uid; xattr->gid = stat.gid; xattr->size = stat.size; xattr->blksize = stat.blksize; xattr->nblocks = (stat.blksize < 512) ? stat.blocks : stat.blocks / (stat.blksize >> 9); SET_XATTR_TD(xattr,m,stat.mtime.time); SET_XATTR_TD(xattr,a,stat.atime.time); SET_XATTR_TD(xattr,c,stat.ctime.time); xattr->attr = 0; /* fake attr field a little bit */ if (S_ISDIR(stat.mode)) xattr->attr = FA_DIR; else if (!(stat.mode & 0222)) xattr->attr = FA_RDONLY; xattr->reserved2 = 0; xattr->reserved3[0] = 0; xattr->reserved3[1] = 0; } return r; } long getstat64(FILESYS *fs, fcookie *fc, STAT *stat) { XATTR xattr; long r; assert(fs->getxattr); r = xfs_getxattr(fs, fc, &xattr); if (!r) { stat->dev = xattr.dev; stat->ino = xattr.index; stat->mode = xattr.mode; stat->nlink = xattr.nlink; stat->uid = xattr.uid; stat->gid = xattr.gid; stat->rdev = xattr.rdev; /* no native UTC extension * -> convert to unix UTC */ stat->atime.high_time = 0; stat->atime.time = unixtime (xattr.atime, xattr.adate) + timezone; stat->atime.nanoseconds = 0; stat->mtime.high_time = 0; stat->mtime.time = unixtime (xattr.mtime, xattr.mdate) + timezone; stat->mtime.nanoseconds = 0; stat->ctime.high_time = 0; stat->ctime.time = unixtime (xattr.ctime, xattr.cdate) + timezone; stat->ctime.nanoseconds = 0; stat->size = xattr.size; stat->blocks = (xattr.blksize < 512) ? xattr.nblocks : xattr.nblocks * (xattr.blksize >> 9); stat->blksize = xattr.blksize; stat->flags = 0; stat->gen = 0; bzero(stat->res, sizeof(stat->res)); } return r; } /* * routines for parsing path names */ /* * relpath2cookie converts a TOS file name into a file cookie representing * the directory the file resides in, and a character string representing * the name of the file in that directory. The character string is * copied into the "lastname" array. If lastname is NULL, then the cookie * returned actually represents the file, instead of just the directory * the file is in. * * note that lastname, if non-null, should be big enough to contain all the * characters in "path", since if the file system doesn't want the kernel * to do path name parsing we may end up just copying path to lastname * and returning the current or root directory, as appropriate * * "relto" is the directory relative to which the search should start. * if you just want the current directory, use path2cookie instead. * */ long _cdecl relpath2cookie(struct proc *p, fcookie *relto, const char *path, char *lastname, fcookie *res, int depth) { char newpath[16]; struct cwd *cwd = p->p_cwd; char temp2[PATH_MAX]; char linkstuff[PATH_MAX]; fcookie dir; int drv; XATTR xattr; long r; /* dolast: 0 == return a cookie for the directory the file is in * 1 == return a cookie for the file itself, don't follow links * 2 == return a cookie for whatever the file points at */ int dolast = 0; int i = 0; if (!path) return ENOTDIR; if (*path == '\0') return ENOENT; if (!lastname) { dolast = 1; lastname = temp2; } else if (lastname == follow_links) { dolast = 2; lastname = temp2; } *lastname = '\0'; PATH2COOKIE_DB (("relpath2cookie(%s, dolast=%d, depth=%d [relto %p, %i])", path, dolast, depth, relto->fs, relto->dev)); if (depth > MAX_LINKS) { DEBUG (("Too many symbolic links")); return ELOOP; } /* special cases: CON:, AUX:, etc. should be converted to U:\DEV\CON, * U:\DEV\AUX, etc. */ # if 1 if (path[0] && path[1] && path[2] && (path[3] == ':') && !path[4]) # else if (strlen (path) == 4 && path[3] == ':') # endif { strcpy(newpath, "U:\\DEV\\"); newpath[7] = path[0]; newpath[8] = path[1]; newpath[9] = path[2]; if ((path[0] == 'N' || path[0] == 'n') && (path[1] == 'U' || path[1] == 'u') && (path[2] == 'L' || path[2] == 'l')) { /* the device file is u:\dev\null */ newpath[10] = 'l'; newpath[11] = '\0'; } else if ((path[0] == 'M' || path[0] == 'm') && (path[1] == 'I' || path[1] == 'i') && (path[2] == 'D' || path[2] == 'd')) { /* the device file is u:\dev\midi */ newpath[10] = 'i'; newpath[11] = '\0'; } else { /* add the NULL terminator */ newpath[10] = '\0'; } path = newpath; } /* first, check for a drive letter * * BUG: a '\' at the start of a symbolic link is relative to the * current drive of the process, not the drive the link is located on */ /* The check if the process runs chroot used to be inside the * conditional (triggering ENOTDIR for drive specs. IMHO its * cleaner to interpret it as a regular filename instead. * Rationale: The path "c:/auto" is actually the same as * "/c:/auto". If the process' root directory is not "/" but * maybe "/home/ftp" then we should interpret the same filename * now as "/home/ftp/c:/auto". */ if (path[2] != ':' && path[1] == ':' && !cwd->root_dir) { char c = tolower ((int)path[0] & 0xff); if (c >= 'a' && c <= 'z') drv = c - 'a'; else if (c >= '1' && c <= '6') drv = 26 + (c - '1'); else goto nodrive; # if 1 /* if root_dir is set drive references are forbidden */ if (cwd->root_dir) return ENOTDIR; # endif path += 2; /* remember that we saw a drive letter */ i = 1; } else { nodrive: drv = cwd->curdrv; } /* see if the path is rooted from '\\' */ if (DIRSEP (*path)) { while (DIRSEP (*path)) path++; /* if root_dir is set this is our start point */ if (cwd->root_dir) dup_cookie (&dir, &cwd->rootdir); else dup_cookie (&dir, &cwd->root[drv]); } else { if (i) { /* an explicit drive letter was given */ dup_cookie (&dir, &cwd->curdir[drv]); } else { PATH2COOKIE_DB (("relpath2cookie: using relto (%p, %li, %i) for dir", relto->fs, relto->index, relto->dev)); dup_cookie (&dir, relto); } } if (!dir.fs && !cwd->root_dir) { dup_cookie (&dir, &cwd->root[drv]); } if (!dir.fs) { DEBUG (("relpath2cookie: no file system: returning ENXIO")); return ENXIO; } /* here's where we come when we've gone across a mount point */ restart_mount: if (!*path) { /* nothing more to do */ PATH2COOKIE_DB (("relpath2cookie: no more path, returning 0")); *res = dir; return 0; } if (dir.fs->fsflags & FS_KNOPARSE) { if (!dolast) { PATH2COOKIE_DB (("fs is a KNOPARSE, nothing to do")); strncpy (lastname, path, PATH_MAX-1); lastname[PATH_MAX - 1] = 0; r = 0; *res = dir; } else { PATH2COOKIE_DB (("fs is a KNOPARSE, calling lookup")); r = xfs_lookup (dir.fs, &dir, path, res); if (r == EMOUNT) { /* hmmm... a ".." at a mount point, maybe */ fcookie mounteddir; r = xfs_root (dir.fs, dir.dev, &mounteddir); if (r == 0 && drv == UNIDRV) { if (dir.fs == mounteddir.fs && dir.index == mounteddir.index && dir.dev == mounteddir.dev) { release_cookie (&dir); release_cookie (&mounteddir); dup_cookie (&dir, &cwd->root[UNIDRV]); DEBUG(("path2cookie: restarting from mount point")); goto restart_mount; } } else { if (r == 0) release_cookie (&mounteddir); r = 0; } } release_cookie (&dir); } PATH2COOKIE_DB (("relpath2cookie(2): returning %ld", r)); return r; } /* parse all but (possibly) the last component of the path name * * rules here: at the top of the loop, &dir is the cookie of * the directory we're in now, xattr is its attributes, and res is * unset at the end of the loop, &dir is unset, and either r is * nonzero (to indicate an error) or res is set to the final result */ r = xfs_getxattr (dir.fs, &dir, &xattr); if (r) { DEBUG (("couldn't get directory attributes")); release_cookie (&dir); return EINTERNAL; } while (*path) { /* we must have a directory, since there are more things * in the path */ if (!S_ISDIR(xattr.mode)) { PATH2COOKIE_DB (("relpath2cookie: not a directory, returning ENOTDIR")); release_cookie (&dir); r = ENOTDIR; break; } #if 0 /* we must also have search permission for the directory */ if (denyaccess (p->p_cred->ucr, &xattr, S_IXOTH)) { DEBUG (("search permission in directory denied")); release_cookie (&dir); /* r = ENOTDIR; */ r = EACCES; break; } #endif /* skip slashes */ while (DIRSEP (*path)) path++; /* next, peel off the next name in the path */ { register int len; register char c, *s; len = 0; s = lastname; c = *path; while (c && !DIRSEP (c)) { if (len++ < PATH_MAX) *s++ = c; c = *++path; } *s = '\0'; } /* if there are no more names in the path, and we don't want * to actually look up the last name, then we're done */ if (dolast == 0) { register const char *s = path; while (DIRSEP (*s)) s++; if (!*s) { PATH2COOKIE_DB (("relpath2cookie: no more path, breaking")); *res = dir; PATH2COOKIE_DB (("relpath2cookie: *res = [%p, %i]", res->fs, res->dev)); break; } } if (cwd->root_dir) { if (samefile (&dir, &cwd->rootdir) && lastname[0] == '.' && lastname[1] == '.' && lastname[2] == '\0') { PATH2COOKIE_DB (("relpath2cookie: can't leave root [%s] -> forward to '.'", cwd->root_dir)); lastname[1] = '\0'; } } PATH2COOKIE_DB (("relpath2cookie: looking up [%s]", lastname)); r = xfs_lookup (dir.fs, &dir, lastname, res); if (r == EMOUNT) { fcookie mounteddir; r = xfs_root (dir.fs, dir.dev, &mounteddir); if (r == 0 && drv == UNIDRV) { if (samefile (&dir, &mounteddir)) { release_cookie (&dir); release_cookie (&mounteddir); dup_cookie (&dir, &cwd->root[UNIDRV]); TRACE(("path2cookie: restarting from mount point")); goto restart_mount; } else if (r == 0) { r = EINTERNAL; release_cookie (&mounteddir); release_cookie (&dir); break; } } else if (r == 0) { *res = mounteddir; } else { release_cookie (&dir); break; } } else if (r) { release_cookie (&dir); break; } /* read the file attribute */ r = xfs_getxattr (res->fs, res, &xattr); if (r != 0) { DEBUG (("path2cookie: couldn't get file attributes")); release_cookie (&dir); release_cookie (res); break; } /* check for a symbolic link * - if the file is a link, and we're following links, follow it */ if (S_ISLNK(xattr.mode) && (*path || dolast > 1)) { { r = xfs_readlink (res->fs, res, linkstuff, PATH_MAX); release_cookie (res); if (r) { DEBUG (("error reading symbolic link")); release_cookie (&dir); break; } r = relpath2cookie (p, &dir, linkstuff, follow_links, res, depth + 1); release_cookie (&dir); if (r) { DEBUG (("error following symbolic link")); break; } } dir = *res; xfs_getxattr (res->fs, res, &xattr); } else { TRACE(("relpath2cookie: lookup ok, mode 0x%x", xattr.mode)); release_cookie (&dir); dir = *res; } } PATH2COOKIE_DB (("relpath2cookie(3): returning %ld", r)); return r; } long _cdecl path2cookie(struct proc *p, const char *path, char *lastname, fcookie *res) { struct cwd *cwd = p->p_cwd; /* AHDI sometimes will keep insisting that a media change occured; * we limit the number of retrys to avoid hanging the system */ # define MAX_TRYS 4 int trycnt = MAX_TRYS - 1; fcookie *dir = &cwd->curdir[cwd->curdrv]; long r; restart: r = relpath2cookie(p, dir, path, lastname, res, 0); if (r == ECHMEDIA && trycnt--) { DEBUG(("path2cookie: restarting due to media change")); goto restart; } return r; } /* * release_cookie: tell the file system owner that a cookie is no * longer in use by the kernel * * release_cookie doesn't release anymore unless there is no entry in * the cookie cache. Otherwise, we just let the cookie get released * through clobber_cookie when the cache fills or is killed through the * routine above - EKL */ void _cdecl release_cookie (fcookie *fc) { if (fc) { FILESYS *fs; fs = fc->fs; if (fs && fs->release) xfs_release (fs, fc); } } /* * Make a new cookie (newc) which is a duplicate of the old cookie * (oldc). This may be something the file system is interested in, * so we give it a chance to do the duplication; if it doesn't * want to, we just copy. */ void dup_cookie (fcookie *newc, fcookie *oldc) { FILESYS *fs; fs = oldc->fs; if (fs && fs->dupcookie) xfs_dupcookie (fs, newc, oldc); else *newc = *oldc; } /* * check to see that a file is a directory, and that write permission * is granted; return an error code, or 0 if everything is ok. */ long dir_access(struct ucred *cred, fcookie *dir, ushort perm, ushort *mode) { XATTR xattr; long r; r = xfs_getxattr(dir->fs, dir, &xattr); if (r) { DEBUG(("dir_access: file system returned %ld", r)); return r; } if (!S_ISDIR(xattr.mode)) { DEBUG(("file is not a directory")); return ENOTDIR; } #if 0 if (denyaccess(cred, &xattr, perm)) { DEBUG(("no permission for directory")); return EACCES; } #endif *mode = xattr.mode; return 0; } /* * returns 1 if the given name contains a wildcard character */ int has_wild(const char *name) { char c; while ((c = *name++) != 0) if (c == '*' || c == '?') return 1; return 0; } /* * void copy8_3(dest, src): convert a file name (src) into DOS 8.3 format * (in dest). Note the following things: * if a field has less than the required number of characters, it is * padded with blanks * a '*' means to pad the rest of the field with '?' characters * special things to watch for: * "." and ".." are more or less left alone * "*.*" is recognized as a special pattern, for which dest is set * to just "*" * Long names are truncated. Any extensions after the first one are * ignored, i.e. foo.bar.c -> foo.bar, foo.c.bar->foo.c. */ void copy8_3(char *dest, const char *src) { char fill = ' ', c; int i; if (src[0] == '.') { if (src[1] == 0) { strcpy(dest, ". . "); return; } if (src[1] == '.' && src[2] == 0) { strcpy(dest, ".. . "); return; } } if (src[0] == '*' && src[1] == '.' && src[2] == '*' && src[3] == 0) { dest[0] = '*'; dest[1] = 0; return; } for (i = 0; i < 8; i++) { c = *src++; if (!c || c == '.') break; if (c == '*') fill = c = '?'; *dest++ = toupper((int)c & 0xff); } while (i++ < 8) *dest++ = fill; *dest++ = '.'; i = 0; fill = ' '; while (c && c != '.') c = *src++; if (c) { for( ;i < 3; i++) { c = *src++; if (!c || c == '.') break; if (c == '*') c = fill = '?'; *dest++ = toupper((int)c & 0xff); } } while (i++ < 3) *dest++ = fill; *dest = 0; } /* * int pat_match(name, patrn): returns 1 if "name" matches the template in * "patrn", 0 if not. "patrn" is assumed to have been expanded in 8.3 * format by copy8_3; "name" need not be. Any '?' characters in patrn * will match any character in name. Note that if "patrn" has a '*' as * the first character, it will always match; this will happen only if * the original pattern (before copy8_3 was applied) was "*.*". * * BUGS: acts a lot like the silly TOS pattern matcher. */ int pat_match(const char *name, const char *template) { char expname[TOS_NAMELEN+1]; register char *s; register char c; if (*template == '*') return 1; copy8_3(expname, name); s = expname; while ((c = *template++) != 0) { if (c != *s && c != '?') return 0; s++; } return 1; } /* * int samefile(fcookie *a, fcookie *b): returns 1 if the two cookies * refer to the same file or directory, 0 otherwise */ int samefile(fcookie *a, fcookie *b) { if (a->fs == b->fs && a->dev == b->dev && a->index == b->index) return 1; return 0; } aranym-1.1.0/atari/hostfs/metados/dosfile.h0000664000175000017500000000334013454637621017041 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * dosfile.h,v 1.7 2001/06/13 20:21:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ # ifndef _dosfile_h # define _dosfile_h long _cdecl sys_f_open (MetaDOSFile const char *name, short mode); long _cdecl sys_f_create (MetaDOSFile const char *name, short attrib); long _cdecl sys_f_close (MetaDOSFile short fd); long _cdecl sys_f_read (MetaDOSFile short fd, long count, char *buf); long _cdecl sys_f_write (MetaDOSFile short fd, long count, const char *buf); long _cdecl sys_f_seek (MetaDOSFile long place, short fd, short how); long _cdecl sys_f_dup (MetaDOSFile short fd); long _cdecl sys_f_force (MetaDOSFile short newh, short oldh); long _cdecl sys_f_datime (MetaDOSFile ushort *timeptr, short fd, short wflag); long _cdecl sys_f_lock (MetaDOSFile short fd, short mode, long start, long length); long _cdecl sys_f_cntl (MetaDOSFile short fd, long arg, short cmd); long _cdecl sys_f_select (MetaDOSFile unsigned short timeout, long *rfdp, long *wfdp, long *xfdp); long _cdecl sys_f_midipipe (MetaDOSFile short pid, short in, short out); long _cdecl sys_f_fchown (MetaDOSFile short fd, short uid, short gid); long _cdecl sys_f_fchmod (MetaDOSFile short fd, ushort mode); long _cdecl sys_f_seek64 (MetaDOSFile llong place, short fd, short how, llong *newpos); #if 0 long _cdecl sys_f_poll (POLLFD *fds, ulong nfds, ulong timeout); #endif long _cdecl sys_ffstat (MetaDOSFile short fd, struct stat *st); #if 0 long _cdecl sys_fwritev (MetaDOSFile short fd, const struct iovec *iov, long niov); long _cdecl sys_freadv (MetaDOSFile short fd, const struct iovec *iov, long niov); #endif # endif /* _dosfile_h */ aranym-1.1.0/atari/hostfs/metados/dosfile.c0000664000175000017500000003224213454637621017037 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * dosfile.c,v 1.20 2001/06/13 20:21:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. * * * Copyright 1990,1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corporation. * All rights reserved. * */ /* DOS file handling routines */ #include "hostfs.h" #include "mint/ioctl.h" long _cdecl sys_f_open (MetaDOSFile const char *name, short mode) { struct proc *p = get_curproc(); FILEPTR *fp = NULL; short fd = MIN_OPEN - 1; long ret; TRACE (("Fopen(%s, %x)", name, mode)); # if O_GLOBAL if (mode & O_GLOBAL) { DEBUG(("O_GLOBAL is obsolete, please update your driver (%s)",name)); return EINVAL; } # endif /* make sure the mode is legal */ mode &= O_USER; /* note: file mode 3 is reserved for the kernel; * for users, transmogrify it into O_RDWR (mode 2) */ if ((mode & O_RWMODE) == O_EXEC) mode = (mode & ~O_RWMODE) | O_RDWR; assert (p->p_fd && p->p_cwd); ret = FD_ALLOC (p, &fd, MIN_OPEN); if (ret) goto error; ret = FP_ALLOC (p, &fp); if (ret) goto error; ret = do_open (&fp, name, mode, 0, NULL); if (ret) goto error; /* activate the fp, default is to close non-standard files on exec */ FP_DONE (p, fp, fd, FD_CLOEXEC); TRACE (("Fopen: returning %d", fd)); return fd; error: if (fd >= MIN_OPEN) FD_REMOVE (p, fd); if (fp) { fp->links--; FP_FREE (fp); } return ret; } long _cdecl sys_f_create (MetaDOSFile const char *name, short attrib) { struct proc *p = get_curproc(); FILEPTR *fp = NULL; short fd = MIN_OPEN - 1; long ret; TRACE (("Fcreate(%s, %x)", name, attrib)); # if O_GLOBAL if (attrib & O_GLOBAL) { DEBUG (("Fcreate(%s): O_GLOBAL denied")); return EPERM; } # endif assert (p->p_fd && p->p_cwd); ret = FD_ALLOC (p, &fd, MIN_OPEN); if (ret) goto error; ret = FP_ALLOC (p, &fp); if (ret) goto error; if (attrib == FA_LABEL) { char temp1[PATH_MAX]; fcookie dir; #if 0 /* just in case the caller tries to do something with this handle, * make it point to u:\dev\null */ ret = do_open (&fp, "u:\\dev\\null", O_RDWR|O_CREAT|O_TRUNC, 0, NULL); if (ret) goto error; #endif ret = path2cookie (p, name, temp1, &dir); if (ret) goto error; ret = xfs_writelabel (dir.fs, &dir, temp1); release_cookie (&dir); if (ret) goto error; } else if (attrib & (FA_LABEL|FA_DIR)) { DEBUG (("Fcreate(%s,%x): illegal attributes", name, attrib)); ret = EACCES; goto error; } else { ret = do_open (&fp, name, O_RDWR|O_CREAT|O_TRUNC, attrib, NULL); if (ret) { DEBUG (("Fcreate(%s) failed, error %ld", name, ret)); goto error; } } /* activate the fp, default is to close non-standard files on exec */ FP_DONE (p, fp, fd, FD_CLOEXEC); TRACE (("Fcreate: returning %d", fd)); return fd; error: if (fd >= MIN_OPEN) FD_REMOVE (p, fd); if (fp) { fp->links--; FP_FREE (fp); } return ret; } long _cdecl sys_f_close (MetaDOSFile short fd) { struct proc *p = get_curproc(); FILEPTR *f; long r; DEBUG (("Fclose: %d", fd)); # ifdef WITH_SINGLE_TASK_SUPPORT /* this is for pure-debugger: * some progs call Fclose(-1) when they exit which would * cause pd to lose keyboard */ if( fd < 0 && (p->modeflags & M_SINGLE_TASK) ) { DEBUG(("Fclose:return 0 for negative fd in singletask-mode.")); return 0; } # endif r = GETFILEPTR (&p, &fd, &f); if (r) return r; r = do_close (p, f); /* XXX do this before do_close? */ FD_REMOVE (p, fd); # if 0 /* standard handles should be restored to default values * in TOS domain! * * XXX: why? */ if (p->domain == DOM_TOS) { f = NULL; if (fd == 0 || fd == 1) f = p->p_fd->ofiles[-1]; else if (fd == 2 || fd == 3) f = p->p_fd->ofiles[-fd]; if (f) { FP_DONE (p, f, fd, 0); f->links++; } } # endif return r; } long _cdecl sys_f_read (MetaDOSFile short fd, long count, char *buf) { struct proc *p = get_curproc(); FILEPTR *f; long r; r = GETFILEPTR (&p, &fd, &f); if (r) return r; if ((f->flags & O_RWMODE) == O_WRONLY) { DEBUG (("Fread: read on a write-only handle")); return EACCES; } if (f->flags & O_DIRECTORY) { DEBUG (("Fread(%i): read on a directory", fd)); return EISDIR; } #if 0 if (is_terminal (f)) return tty_read (f, buf, count); #endif TRACELOW (("Fread: %ld bytes from handle %d to %p", count, fd, buf)); return xdd_read (f, buf, count); } long _cdecl sys_f_write (MetaDOSFile short fd, long count, const char *buf) { struct proc *p = get_curproc(); FILEPTR *f; long r; r = GETFILEPTR (&p, &fd, &f); if (r) return r; if ((f->flags & O_RWMODE) == O_RDONLY) { DEBUG (("Fwrite: write on a read-only handle")); return EACCES; } #if 0 if (is_terminal (f)) return tty_write (f, buf, count); #endif /* Prevent broken device drivers from wiping the disk. * We return a zero rather than a negative error code * to help programs those don't handle GEMDOS errors * returned by Fwrite() */ if (count <= 0) { DEBUG (("Fwrite: invalid count: %ld", count)); return 0; } /* it would be faster to do this in the device driver, but this * way the drivers are easier to write */ if (f->flags & O_APPEND) { r = xdd_lseek (f, 0L, SEEK_END); /* ignore errors from unseekable files (e.g. pipes) */ if (r == EACCES) r = 0; } else r = 0; if (r >= 0) { TRACELOW (("Fwrite: %ld bytes to handle %d", count, fd)); r = xdd_write (f, buf, count); } if (r < 0) DEBUG (("Fwrite: error %ld", r)); return r; } long _cdecl sys_f_seek (MetaDOSFile long place, short fd, short how) { struct proc *p = get_curproc(); FILEPTR *f; long r; TRACE (("Fseek(%ld, %d) on handle %d", place, how, fd)); r = GETFILEPTR (&p, &fd, &f); if (r) return r; #if 0 if (is_terminal (f)) return ESPIPE; #endif r = xdd_lseek (f, place, how); TRACE (("Fseek: returning %ld", r)); return r; } long _cdecl sys_f_datime (MetaDOSFile ushort *timeptr, short fd, short wflag) { struct proc *p = get_curproc(); FILEPTR *f; long r; TRACE (("%s(%i)", __FUNCTION__, fd)); r = GETFILEPTR (&p, &fd, &f); if (r) return r; #if 0 /* some programs use Fdatime to test for TTY devices */ if (is_terminal (f)) return EACCES; #endif if (f->fc.fs && f->fc.fs->fsflags & FS_EXT_3) { unsigned long ut = 0; if (wflag) ut = unixtime(timeptr[0], timeptr[1]) + timezone; r = xdd_datime(f, (ushort *)&ut, wflag); if (!r && !wflag) { ut = dostime(ut - timezone); timeptr[1] = (unsigned short)ut; ut >>= 16; timeptr[0] = (unsigned short)ut; } return r; } return xdd_datime (f, timeptr, wflag); } /* * extensions to GEMDOS: */ static long sys__ffstat_1_12 (struct file *f, XATTR *xattr) { long ret; #if 0 # ifdef OLDSOCKDEVEMU if (f->dev == &sockdev || f->dev == &sockdevemu) # else if (f->dev == &sockdev) # endif return so_fstat_old (f, xattr); #endif if (!f->fc.fs) { DEBUG (("sys__ffstat_1_12: no xfs!")); return ENOSYS; } ret = xdd_ioctl(f, FSTAT, xattr); if (ret == ENOSYS) ret = xfs_getxattr (f->fc.fs, &f->fc, xattr); if ((ret == E_OK) && (f->fc.fs->fsflags & FS_EXT_3)) { xtime_to_local_dos(xattr,m); xtime_to_local_dos(xattr,a); xtime_to_local_dos(xattr,c); } return ret; } static long sys__ffstat_1_16 (struct file *f, struct stat *st) { long ret; #if 0 # ifdef OLDSOCKDEVEMU if (f->dev == &sockdev || f->dev == &sockdevemu) # else if (f->dev == &sockdev) # endif return so_fstat (f, st); #endif if (!f->fc.fs) { DEBUG (("sys__ffstat_1_16: no xfs")); return ENOSYS; } ret = xdd_ioctl(f, FSTAT64, st); if (ret == ENOSYS) ret = xfs_stat64 (f->fc.fs, &f->fc, st); return ret; } long _cdecl sys_ffstat (MetaDOSFile short fd, struct stat *st) { struct proc *p = get_curproc(); FILEPTR *f; long ret; ret = GETFILEPTR (&p, &fd, &f); if (ret) return ret; return sys__ffstat_1_16 (f, st); } /* * f_cntl: a combination "ioctl" and "fcntl". Some functions are * handled here, if they apply to the file descriptors directly * (e.g. F_DUPFD) or if they're easily translated into file system * functions (e.g. FSTAT). Others are passed on to the device driver * via dev->ioctl. */ long _cdecl sys_f_cntl (MetaDOSFile short fd, long arg, short cmd) { struct proc *p = get_curproc(); FILEPTR *f; long r; TRACE (("Fcntl(%i, cmd=0x%x)", fd, cmd)); if (cmd == F_DUPFD || cmd == F_DUPFD_CLOEXEC) { #if 0 return do_dup (fd, arg, cmd == F_DUPFD_CLOEXEC ? 1: 0); #else return ENOSYS; #endif } TRACE(("Fcntl getfileptr")); r = GETFILEPTR (&p, &fd, &f); TRACE(("Fcntl r = %lx", r)); if (r) return r; switch (cmd) { case F_GETFD: TRACE (("Fcntl F_GETFD")); #if 0 return p->p_fd->ofileflags[fd]; #else return 0; #endif case F_SETFD: TRACE (("Fcntl F_SETFD")); #if 0 p->p_fd->ofileflags[fd] = arg; #endif return E_OK; case F_GETFL: TRACE (("Fcntl F_GETFL")); return (f->flags & O_USER); case F_SETFL: TRACE (("Fcntl F_SETFL")); /* make sure only user bits set */ arg &= O_USER; /* make sure the file access and sharing modes are not changed */ arg &= ~(O_RWMODE | O_SHMODE); arg |= f->flags & (O_RWMODE | O_SHMODE); /* set user bits to arg */ f->flags &= ~O_USER; f->flags |= arg; return E_OK; case FSTAT: TRACE (("Fcntl FSTAT (%i, %lx) on \"%s\" -> %li", fd, arg, xfs_name (&(f->fc)), r)); return sys__ffstat_1_12 (f, (XATTR *) arg); case FSTAT64: TRACE (("Fcntl FSTAT64 (%i, %lx) on \"%s\" -> %li", fd, arg, xfs_name(&(f->fc)), r)); return sys__ffstat_1_16 (f, (struct stat *) arg); case FUTIME: TRACE (("Fcntl FUTIME")); if (f->fc.fs && (f->fc.fs->fsflags & FS_EXT_3) && arg) { MUTIMBUF *buf = (MUTIMBUF *) arg; ulong t [2]; t[0] = unixtime (buf->actime, buf->acdate) + timezone; t[1] = unixtime (buf->modtime, buf->moddate) + timezone; return xdd_ioctl (f, FUTIME_UTC, (void *) t); } break; } /* fall through to device ioctl */ TRACE (("Fcntl mode %x: calling ioctl", cmd)); #if 0 if (is_terminal (f)) { /* tty in the middle of a hangup? */ while (((struct tty *) f->devinfo)->hup_ospeed) sleep (IO_Q, (long) &((struct tty *) f->devinfo)->state); if (cmd == FIONREAD || cmd == FIONWRITE || cmd == TIOCSTART || cmd == TIOCSTOP || cmd == TIOCSBRK || cmd == TIOCFLUSH) { r = tty_ioctl (f, cmd, (void *) arg); } else { r = (*f->dev->ioctl)(f, cmd, (void *) arg); if (r == ENOSYS) r = tty_ioctl (f, cmd, (void *) arg); } } else #endif r = xdd_ioctl (f, cmd, (void *) arg); return r; } /* * GEMDOS extension: Ffchown(fh, uid, gid) changes the user and group * ownerships of a open file to "uid" and "gid" respectively. */ long _cdecl sys_f_fchown (MetaDOSFile short fd, short uid, short gid) { struct proc *p = get_curproc(); FILEPTR *f; long r; TRACE (("Ffchown(%d,%i,%i)", fd, uid, gid)); r = GETFILEPTR (&p, &fd, &f); if (r) return r; if (!(f->fc.fs)) { DEBUG (("Ffchown: not a valid filesystem")); return ENOSYS; } if ((f->flags & O_RWMODE) == O_RDONLY) { DEBUG (("Ffchown: write on a read-only handle")); return EPERM; } /* MiNT acts like _POSIX_CHOWN_RESTRICTED: a non-privileged process * can only change the ownership of a file that is owned by this * user, to the effective group id of the process or one of its * supplementary groups */ #if 0 if (p->p_cred->ucr->euid) { XATTR xattr; if (p->p_cred->ucr->egid != gid && !groupmember (p->p_cred->ucr, gid)) r = EACCES; else r = xfs_getxattr (f->fc.fs, &(f->fc), &xattr); if (r) { DEBUG (("Ffchown(%i): unable to get file attributes", fd)); return r; } if (xattr.uid != p->p_cred->ucr->euid || xattr.uid != uid) { DEBUG (("Ffchown(%i): not the file's owner", fd)); return EACCES; } r = xfs_chown (f->fc.fs, &(f->fc), uid, gid); /* POSIX 5.6.5.2: if name refers to a regular file the * set-user-ID and set-group-ID bits of the file mode shall * be cleared upon successful return from the call to chown, * unless the call is made by a process with the appropriate * privileges. Note that POSIX leaves the behaviour * unspecified for all other file types. At least for * directories with BSD-like setgid semantics, these bits * should be left unchanged. */ if (!r && !S_ISDIR(xattr.mode) && (xattr.mode & (S_ISUID | S_ISGID))) { long s; s = xfs_chmode (f->fc.fs, &(f->fc), xattr.mode & ~(S_ISUID | S_ISGID)); if (!s) DEBUG (("Ffchown: chmode returned %ld (ignored)", s)); } } else #endif r = xfs_chown (f->fc.fs, &(f->fc), uid, gid); return r; } /* * GEMDOS extension: Fchmod (fh, mode) changes a file's access * permissions on a open file. */ long _cdecl sys_f_fchmod (MetaDOSFile short fd, ushort mode) { struct proc *p = get_curproc(); FILEPTR *f; long r; XATTR xattr; TRACE (("Ffchmod(%i, %i)", fd, mode)); r = GETFILEPTR (&p, &fd, &f); if (r) return r; if (!(f->fc.fs)) { DEBUG (("Ffchmod: not a valid filesystem")); return ENOSYS; } r = xfs_getxattr (f->fc.fs, &(f->fc), &xattr); if (r) { DEBUG (("Ffchmod(%i): couldn't get file attributes", fd)); } #if 0 else if (p->p_cred->ucr->euid && p->p_cred->ucr->euid != xattr.uid) { DEBUG (("Ffchmod(%i): not the file's owner", fd)); r = EACCES; } #endif else { r = xfs_chmode (f->fc.fs, &(f->fc), mode & ~S_IFMT); if (r) DEBUG (("Ffchmod: error %ld", r)); } return r; } aranym-1.1.0/atari/hostfs/metados/dosdir.h0000664000175000017500000000464513454637621016711 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * dosdir.h,v 1.2 2001/06/13 20:21:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ # ifndef _dosdir_h # define _dosdir_h #include "mint/emu_tos.h" /* table of processes holding locks on drives */ extern PROC *dlockproc [NUM_DRIVES]; extern long searchtime; long _cdecl sys_d_free (MetaDOSDir long *buf, int d); long _cdecl sys_d_create (MetaDOSDir const char *path); long _cdecl sys_d_delete (MetaDOSDir const char *path); long _cdecl sys_f_sfirst (MetaDOSDTA const char *path, int attrib); long _cdecl sys_f_snext (MetaDOSDTA0); long _cdecl sys_f_attrib (MetaDOSFile const char *name, int rwflag, int attr); long _cdecl sys_f_delete (MetaDOSDir const char *name); long _cdecl sys_f_rename (MetaDOSDir int junk, const char *old, const char *new); long _cdecl sys_d_pathconf (MetaDOSDir const char *name, int which); long _cdecl sys_d_opendir (MetaDOSDir const char *path, int flags); long _cdecl sys_d_readdir (MetaDOSDir int len, long handle, char *buf); long _cdecl sys_d_xreaddir (MetaDOSDir int len, long handle, char *buf, XATTR *xattr, long *xret); long _cdecl sys_d_rewind (MetaDOSDir long handle); long _cdecl sys_d_closedir (MetaDOSDir long handle); long _cdecl sys_f_xattr (MetaDOSFile int flag, const char *name, XATTR *xattr); long _cdecl sys_f_link (MetaDOSDir const char *old, const char *new); long _cdecl sys_f_symlink (MetaDOSDir const char *old, const char *new); long _cdecl sys_f_readlink (MetaDOSDir int buflen, char *buf, const char *linkfile); long _cdecl sys_d_cntl (MetaDOSDir int cmd, const char *name, long arg); long _cdecl sys_f_chown (MetaDOSDir const char *name, int uid, int gid); long _cdecl sys_f_chown16 (MetaDOSDir const char *name, int uid, int gid, int follow_symlinks); long _cdecl sys_f_chmod (MetaDOSDir const char *name, unsigned mode); long _cdecl sys_d_lock (MetaDOSDir int mode, int drv); long _cdecl sys_d_readlabel (MetaDOSDir const char *path, char *label, int maxlen); long _cdecl sys_d_writelabel (MetaDOSDir const char *path, const char *label); long _cdecl sys_d_chroot (MetaDOSDir const char *dir); long _cdecl sys_f_stat64 (MetaDOSDir int flag, const char *name, STAT *stat); long _cdecl sys_f_chdir (MetaDOSFile short fd); long _cdecl sys_f_opendir (MetaDOSFile short fd); long _cdecl sys_f_dirfd (MetaDOSFile long handle); # endif /* _dosdir_h */ aranym-1.1.0/atari/hostfs/metados/dosdir.c0000664000175000017500000007370013454637621016702 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * dosdir.c,v 1.11 2001/10/23 09:09:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. * * * Copyright 1990,1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corporation. * All rights reserved. * */ /* DOS directory functions */ #include "hostfs.h" #include "mint/errno.h" #include "mint/ctype.h" #include "mint/assert.h" #include "mint/credentials.h" #include "mint/pathconf.h" #include "mint/string.h" long _cdecl sys_d_free (MetaDOSDir long *buf, int d) { struct proc *p = get_curproc(); fcookie *dir; d = tolower(pathNameMD[0]); if (d >= '1' && d <= '6') d = d - '1' + 26; else d = d - 'a'; if (d < 0 || d >= NUM_DRIVES) return ENXIO; dir = &p->p_cwd->root[d]; TRACE(("Dfree(%d)", d)); if (!dir->fs) { DEBUG(("Dfree: bad drive")); return ENXIO; } return xfs_dfree (dir->fs, dir, buf); } long _cdecl sys_d_create (MetaDOSDir const char *path) { struct proc *p = get_curproc(); fcookie dir; long r; char temp1[PATH_MAX]; XATTR xattr; ushort mode; TRACE(("Dcreate(%s)", path)); assert (p->p_fd && p->p_cwd); r = path2cookie(p, path, temp1, &dir); if (r) { DEBUG(("Dcreate(%s): returning %ld", path, r)); return r; } if (temp1[0] == '\0') { DEBUG(("Dcreate(%s): creating a NULL dir?", path)); release_cookie(&dir); return EBADARG; } /* check for write permission on the directory */ r = dir_access(p->p_cred->ucr, &dir, S_IWOTH, &mode); if (r) { DEBUG(("Dcreate(%s): write access to directory denied",path)); release_cookie(&dir); return r; } if (mode & S_ISGID) { r = xfs_getxattr (dir.fs, &dir, &xattr); if (r) { DEBUG(("Dcreate(%s): file system returned %ld", path, r)); } else { ushort cur_gid = p->p_cred->rgid; ushort cur_egid = p->p_cred->ucr->egid; p->p_cred->rgid = p->p_cred->ucr->egid = xattr.gid; r = xfs_mkdir (dir.fs, &dir, temp1, (DEFAULT_DIRMODE & ~p->p_cwd->cmask) | S_ISGID); p->p_cred->rgid = cur_gid; p->p_cred->ucr->egid = cur_egid; } } else r = xfs_mkdir (dir.fs, &dir, temp1, DEFAULT_DIRMODE & ~p->p_cwd->cmask); release_cookie(&dir); return r; } long _cdecl sys_d_delete (MetaDOSDir const char *path) { struct proc *cp = get_curproc(); struct ucred *cred = cp->p_cred->ucr; fcookie parentdir, targdir; long r; XATTR xattr; char temp1[PATH_MAX]; ushort mode; TRACE(("Ddelete(%s)", path)); r = path2cookie (cp, path, temp1, &parentdir); if (r) { DEBUG(("Ddelete(%s): error %lx", path, r)); release_cookie(&parentdir); return r; } /* check for write permission on the directory which the target * is located */ r = dir_access (cred, &parentdir, S_IWOTH, &mode); if (r) { DEBUG(("Ddelete(%s): access to directory denied", path)); release_cookie (&parentdir); return r; } /* now get the info on the file itself */ r = relpath2cookie (cp, &parentdir, temp1, NULL, &targdir, 0); if (r) { bailout: release_cookie (&parentdir); DEBUG(("Ddelete: error %ld on %s", r, path)); return r; } r = xfs_getxattr (targdir.fs, &targdir, &xattr); if (r) { release_cookie (&targdir); goto bailout; } /* check effective uid if sticky bit is set in parent */ if ((mode & S_ISVTX) && cred->euid && cred->euid != xattr.uid) { release_cookie (&targdir); release_cookie (&parentdir); DEBUG(("Ddelete: sticky bit set and not owner")); return EACCES; } /* if the "directory" is a symbolic link, really unlink it */ if (S_ISLNK(xattr.mode)) { release_cookie (&targdir); r = xfs_remove (parentdir.fs, &parentdir, temp1); } else if (!S_ISDIR(xattr.mode)) { DEBUG(("Ddelete: %s is not a directory", path)); r = ENOTDIR; } else if (strlen (temp1) == 1 && temp1[0] == '.') { DEBUG(("Ddelete: %s is not allowed to be deleted", path)); r = EINVAL; } else { release_cookie (&targdir); r = xfs_rmdir (parentdir.fs, &parentdir, temp1); } release_cookie (&parentdir); return r; } /* * Fsfirst/next are actually implemented in terms of opendir/readdir/closedir. */ long _cdecl sys_f_sfirst (MetaDOSDTA const char *path, int attrib) { struct proc *p = get_curproc(); char *s, *slash; FILESYS *fs; fcookie dir, newdir; DTABUF *dta; DIR *dirh; XATTR xattr; long r; int i, havelabel; char temp1[PATH_MAX]; ushort mode; TRACE(("Fsfirst(%s, %x)", path, attrib)); r = path2cookie (p, path, temp1, &dir); if (r) { DEBUG(("Fsfirst(%s): path2cookie returned %ld", path, r)); return r; } /* we need to split the last name (which may be a pattern) off from * the rest of the path, even if FS_KNOPARSE is true */ slash = 0; s = temp1; while (*s) { if (*s == '\\' || *s == '/') slash = s; s++; } if (slash) { *slash++ = 0; /* slash now points to a name or pattern */ r = relpath2cookie (p, &dir, temp1, follow_links, &newdir, 0); release_cookie (&dir); if (r) { DEBUG(("Fsfirst(%s): lookup returned %ld", path, r)); return r; } dir = newdir; } else slash = temp1; /* BUG? what if there really is an empty file name? */ if (!*slash) { DEBUG(("Fsfirst: empty pattern")); return ENOENT; } fs = dir.fs; dta = dtaMD; /* Now, see if we can find a DIR slot for the search. We use the * following heuristics to try to avoid destroying a slot: * (1) if the search doesn't use wildcards, don't bother with a slot * (2) if an existing slot was for the same DTA address, re-use it * (3) if there's a free slot, re-use it. Slots are freed when the * corresponding search is terminated. */ for (i = 0; i < NUM_SEARCH; i++) { if (p->p_fd->srchdta[i] == dta) { dirh = &p->p_fd->srchdir[i]; if (dirh->fc.fs) { xfs_closedir (dirh->fc.fs, dirh); release_cookie(&dirh->fc); dirh->fc.fs = 0; } p->p_fd->srchdta[i] = 0; /* slot is now free */ } } /* copy the pattern over into dta_pat into TOS 8.3 form * remember that "slash" now points at the pattern * (it follows the last, if any) */ copy8_3 (dta->dta_pat, slash); /* if (attrib & FA_LABEL), read the volume label * * BUG: the label date and time are wrong. ISO/IEC 9293 14.3.3 allows this. * The Desktop set also date and time to 0 when formatting a floppy disk. */ havelabel = 0; if (attrib & FA_LABEL) { r = xfs_readlabel (fs, &dir, dta->dta_name, TOS_NAMELEN+1); dta->dta_attrib = FA_LABEL; dta->dta_time = dta->dta_date = 0; dta->dta_size = 0; dta->magic = EVALID; if (r == E_OK && !pat_match (dta->dta_name, dta->dta_pat)) r = ENOENT; if ((attrib & (FA_DIR|FA_LABEL)) == FA_LABEL) return r; else if (r == E_OK) havelabel = 1; } DEBUG(("Fsfirst(): havelabel = %d",havelabel)); if (!havelabel && has_wild (slash) == 0) { /* no wild cards in pattern */ r = relpath2cookie (p, &dir, slash, follow_links, &newdir, 0); if (r == E_OK) { r = xfs_getxattr (newdir.fs, &newdir, &xattr); release_cookie (&newdir); } release_cookie (&dir); if (r) { DEBUG(("Fsfirst(%s): couldn't get file attributes",path)); return r; } dta->magic = EVALID; dta->dta_attrib = xattr.attr; dta->dta_size = xattr.size; if (fs->fsflags & FS_EXT_3) { dta_UTC_local_dos(dta,xattr,m); } else { dta->dta_time = xattr.mtime; dta->dta_date = xattr.mdate; } strncpy (dta->dta_name, slash, TOS_NAMELEN-1); dta->dta_name[TOS_NAMELEN-1] = 0; if (p->domain == DOM_TOS && !(fs->fsflags & FS_CASESENSITIVE)) strupr (dta->dta_name); return E_OK; } /* There is a wild card. Try to find a slot for an opendir/readdir * search. NOTE: we also come here if we were asked to search for * volume labels and found one. */ for (i = 0; i < NUM_SEARCH; i++) { if (p->p_fd->srchdta[i] == 0) break; } if (i == NUM_SEARCH) { int oldest = 0; long oldtime = p->p_fd->srchtim[0]; DEBUG(("Fsfirst(%s): having to re-use a directory slot!", path)); for (i = 1; i < NUM_SEARCH; i++) { if (p->p_fd->srchtim[i] < oldtime) { oldest = i; oldtime = p->p_fd->srchtim[i]; } } /* OK, close this directory for re-use */ i = oldest; dirh = &p->p_fd->srchdir[i]; if (dirh->fc.fs) { xfs_closedir (dirh->fc.fs, dirh); release_cookie(&dirh->fc); dirh->fc.fs = 0; } /* invalidate re-used DTA */ p->p_fd->srchdta[i]->magic = EVALID; p->p_fd->srchdta[i] = 0; } /* check to see if we have read permission on the directory (and make * sure that it really is a directory!) */ r = dir_access(p->p_cred->ucr, &dir, S_IROTH, &mode); if (r) { DEBUG(("Fsfirst(%s): access to directory denied (error code %ld)", path, r)); release_cookie(&dir); return r; } /* set up the directory for a search */ dirh = &p->p_fd->srchdir[i]; dirh->fc = dir; dirh->index = 0; dirh->flags = TOS_SEARCH; r = xfs_opendir (dir.fs, dirh, dirh->flags); if (r != E_OK) { DEBUG(("Fsfirst(%s): couldn't open directory (error %ld)", path, r)); release_cookie(&dir); return r; } /* mark the slot as in-use */ p->p_fd->srchdta[i] = dta; /* set up the DTA for Fsnext */ dta->index = i; dta->magic = SVALID; dta->dta_sattrib = attrib; /* OK, now basically just do Fsnext, except that instead of ENMFILES we * return ENOENT. * NOTE: If we already have found a volume label from the search above, * then we skip the f_snext and just return that. */ if (havelabel) return E_OK; r = sys_f_snext(MetaDOSDTA0pass); if (r == ENMFILES) r = ENOENT; if (r) TRACE(("Fsfirst: returning %ld", r)); /* release_cookie isn't necessary, since &dir is now stored in the * DIRH structure and will be released when the search is completed */ return r; } /* * Counter for Fsfirst/Fsnext, so that we know which search slots are * least recently used. This is updated once per second by the code * in timeout.c. * BUG: 1/second is pretty low granularity */ long searchtime; long _cdecl sys_f_snext (MetaDOSDTA0) { struct proc *p = get_curproc(); char buf[TOS_NAMELEN+1]; DTABUF *dta = dtaMD; FILESYS *fs; fcookie fc; ushort i; DIR *dirh; long r; XATTR xattr; #if 0 if (1) { char *buf[TOS_NAMELEN+1]; static int count = 0; static char *test = "HOSTFS"; while( count++ < 100 ) { dta->dta_attrib = 0x20; dta->dta_size = 100; dta->dta_time = 0; dta->dta_date = 0; strcpy(dta->dta_name, test); DEBUG (("Fsnext(%s.%ld): ", dta->dta_name, sizeof(struct dtabuf))); return E_OK; } return ENMFILES; } #endif TRACE (("Fsnext")); if (dta->magic == EVALID) { DEBUG (("Fsnext(%p): DTA marked a failing search", dta)); return ENMFILES; } if (dta->magic != SVALID) { DEBUG (("Fsnext(%p): dta incorrectly set up", dta)); return ENOSYS; } i = dta->index; if (i >= NUM_SEARCH) { DEBUG (("Fsnext(%p): DTA has invalid index", dta)); return EBADARG; } dirh = &p->p_fd->srchdir[i]; p->p_fd->srchtim[i] = searchtime++; fs = dirh->fc.fs; if (!fs) { /* oops -- the directory got closed somehow */ DEBUG (("Fsnext(%p): invalid filesystem", dta)); return EINTERNAL; } /* BUG: f_snext and readdir should check for disk media changes */ for(;;) { r = xfs_readdir (fs, dirh, buf, TOS_NAMELEN+1, &fc); if (r == EBADARG) { DEBUG(("Fsnext: name too long")); continue; /* TOS programs never see these names */ } if (r != E_OK) { baderror: if (dirh->fc.fs) (void) xfs_closedir (fs, dirh); release_cookie(&dirh->fc); dirh->fc.fs = 0; p->p_fd->srchdta[i] = 0; dta->magic = EVALID; if (r != ENMFILES) DEBUG(("Fsnext: returning %ld", r)); return r; } if (!pat_match (buf, dta->dta_pat)) { release_cookie (&fc); continue; /* different patterns */ } /* check for search attributes */ r = xfs_getxattr (fc.fs, &fc, &xattr); if (r) { DEBUG(("Fsnext: couldn't get file attributes")); release_cookie (&fc); goto baderror; } /* if the file is a symbolic link, try to find what it's linked to */ if (S_ISLNK(xattr.mode)) { char linkedto[PATH_MAX]; r = xfs_readlink (fc.fs, &fc, linkedto, PATH_MAX); release_cookie (&fc); if (r == E_OK) { /* the "1" tells relpath2cookie that we read a link */ r = relpath2cookie (p, &dirh->fc, linkedto, follow_links, &fc, 1); if (r == E_OK) { r = xfs_getxattr (fc.fs, &fc, &xattr); release_cookie (&fc); } } if (r) DEBUG(("Fsnext: couldn't follow link: error %ld", r)); } else release_cookie (&fc); /* silly TOS rules for matching attributes */ if (xattr.attr == 0) break; if (xattr.attr & (FA_CHANGED|FA_RDONLY)) break; if (dta->dta_sattrib & xattr.attr) break; } /* here, we have a match */ if (fs->fsflags & FS_EXT_3) { dta_UTC_local_dos(dta,xattr,m); } else { dta->dta_time = xattr.mtime; dta->dta_date = xattr.mdate; } dta->dta_attrib = xattr.attr; dta->dta_size = xattr.size; strcpy (dta->dta_name, buf); if (p->domain == DOM_TOS && !(fs->fsflags & FS_CASESENSITIVE)) strupr (dta->dta_name); return E_OK; } long _cdecl sys_f_attrib (MetaDOSFile const char *name, int rwflag, int attr) { struct proc *p = get_curproc(); struct ucred *cred = p->p_cred->ucr; fcookie fc; XATTR xattr; long r; DEBUG(("Fattrib(%s, %d)", name, attr)); r = path2cookie (p, name, follow_links, &fc); if (r) { DEBUG(("Fattrib(%s): error %ld", name, r)); return r; } r = xfs_getxattr (fc.fs, &fc, &xattr); if (r) { DEBUG(("Fattrib(%s): getxattr returned %ld", name, r)); release_cookie (&fc); return r; } if (rwflag) { if (attr & ~(FA_CHANGED|FA_DIR|FA_SYSTEM|FA_HIDDEN|FA_RDONLY) || (attr & FA_DIR) != (xattr.attr & FA_DIR)) { DEBUG(("Fattrib(%s): illegal attributes specified",name)); r = EACCES; } else if (cred->euid && cred->euid != xattr.uid) { DEBUG(("Fattrib(%s): not the file's owner",name)); r = EACCES; } else if (xattr.attr & FA_LABEL) { DEBUG(("Fattrib(%s): file is a volume label", name)); r = EACCES; } else r = xfs_chattr (fc.fs, &fc, attr); release_cookie (&fc); return r; } else { release_cookie (&fc); return xattr.attr; } } long _cdecl sys_f_delete (MetaDOSDir const char *name) { struct proc *p = get_curproc(); struct ucred *cred = p->p_cred->ucr; fcookie dir, fc; XATTR xattr; long r; char temp1[PATH_MAX]; ushort mode; TRACE(("Fdelete(%s)", name)); /* get a cookie for the directory the file is in */ r = path2cookie (p, name, temp1, &dir); if (r) { DEBUG(("Fdelete: couldn't get directory cookie: error %ld", r)); return r; } /* check for write permission on directory */ r = dir_access (cred, &dir, S_IWOTH, &mode); if (r) { DEBUG(("Fdelete(%s): write access to directory denied",name)); release_cookie (&dir); return EACCES; } /* now get the file attributes */ r = xfs_lookup (dir.fs, &dir, temp1, &fc); if (r) { DEBUG(("Fdelete: error %ld while looking for %s", r, temp1)); release_cookie (&dir); return r; } r = xfs_getxattr (fc.fs, &fc, &xattr); if (r < E_OK) { release_cookie (&dir); release_cookie (&fc); DEBUG(("Fdelete: couldn't get file attributes: error %ld", r)); return r; } /* do not allow directories to be deleted */ if (S_ISDIR(xattr.mode)) { release_cookie (&dir); release_cookie (&fc); DEBUG(("Fdelete: %s is a directory", name)); return EISDIR; } /* check effective uid if directories sticky bit is set */ if ((mode & S_ISVTX) && cred->euid && cred->euid != xattr.uid) { release_cookie (&dir); release_cookie (&fc); DEBUG(("Fdelete: sticky bit set and not owner")); return EACCES; } #if 0 /* TOS domain processes can only delete files if they have write permission * for them */ if (p->domain == DOM_TOS) { /* see if we're allowed to kill it */ if (denyaccess (cred, &xattr, S_IWOTH)) { release_cookie (&dir); release_cookie (&fc); DEBUG(("Fdelete: file access denied")); return EACCES; } } #endif release_cookie (&fc); r = xfs_remove (dir.fs, &dir,temp1); release_cookie (&dir); return r; } long _cdecl sys_f_rename (MetaDOSDir int junk, const char *old, const char *new) { struct proc *p = get_curproc(); struct ucred *cred = p->p_cred->ucr; fcookie olddir, newdir, oldfil; XATTR xattr; char temp1[PATH_MAX], temp2[PATH_MAX]; long r; ushort mode; /* ignored, for TOS compatibility */ UNUSED(junk); TRACE(("Frename(%s, %s)", old, new)); r = path2cookie (p, old, temp2, &olddir); if (r) { DEBUG(("Frename(%s,%s): error parsing old name",old,new)); return r; } /* check for permissions on the old file * GEMDOS doesn't allow rename if the file is FA_RDONLY * we enforce this restriction only on regular files; processes, * directories, and character special files can be renamed at will */ r = relpath2cookie (p, &olddir, temp2, (char *)0, &oldfil, 0); if (r) { DEBUG(("Frename(%s,%s): old file not found",old,new)); release_cookie (&olddir); return r; } r = xfs_getxattr (oldfil.fs, &oldfil, &xattr); release_cookie (&oldfil); if (r || (S_ISREG(xattr.mode) && ((xattr.attr & FA_RDONLY) && cred->euid && (cred->euid != xattr.uid)))) { /* Only SuperUser and the owner of the file are allowed to rename * readonly files */ DEBUG(("Frename(%s,%s): access to old file not granted",old,new)); release_cookie (&olddir); return EACCES; } r = path2cookie(p, new, temp1, &newdir); if (r) { DEBUG(("Frename(%s,%s): error parsing new name",old,new)); release_cookie (&olddir); return r; } if (newdir.fs != olddir.fs) { DEBUG(("Frename(%s,%s): different file systems",old,new)); release_cookie (&olddir); release_cookie (&newdir); /* cross device rename */ return EXDEV; } /* check for write permission on both directories */ r = dir_access (cred, &olddir, S_IWOTH, &mode); if (!r && (mode & S_ISVTX) && cred->euid && cred->euid != xattr.uid) r = EACCES; if (!r) r = dir_access (cred, &newdir, S_IWOTH, &mode); if (r) DEBUG(("Frename(%s,%s): access to a directory denied",old,new)); else r = xfs_rename (newdir.fs, &olddir, temp2, &newdir, temp1); release_cookie (&olddir); release_cookie (&newdir); return r; } /* * GEMDOS extension: Dpathconf(name, which) * * returns information about filesystem-imposed limits; "name" is the name * of a file or directory about which the limit information is requested; * "which" is the limit requested, as follows: * -1 max. value of "which" allowed * 0 internal limit on open files, if any * 1 max. number of links to a file {LINK_MAX} * 2 max. path name length {PATH_MAX} * 3 max. file name length {NAME_MAX} * 4 no. of bytes in atomic write to FIFO {PIPE_BUF} * 5 file name truncation rules * 6 file name case translation rules * * unlimited values are returned as 0x7fffffffL * * see also Sysconf() in dos.c */ long _cdecl sys_d_pathconf (MetaDOSDir const char *name, int which) { struct proc *p = get_curproc(); fcookie dir; long r; r = path2cookie (p, name, NULL, &dir); if (r) { DEBUG(("Dpathconf(%s): bad path",name)); return r; } r = xfs_pathconf (dir.fs, &dir, which); if (which == DP_CASE && r == ENOSYS) { /* backward compatibility with old .XFS files */ r = (dir.fs->fsflags & FS_CASESENSITIVE) ? DP_CASESENS : DP_CASEINSENS; } release_cookie (&dir); return r; } /* * GEMDOS extension: Opendir/Readdir/Rewinddir/Closedir * * offer a new, POSIX-like alternative to Fsfirst/Fsnext, * and as a bonus allow for arbitrary length file names */ long _cdecl sys_d_opendir (MetaDOSDir const char *name, int flag) { struct proc *p = get_curproc(); DIR *dirh = dirMD; fcookie dir; long r; ushort mode; r = path2cookie (p, name, follow_links, &dir); if (r) { DEBUG(("Dopendir(%s): error %ld", name, r)); return r; } r = dir_access (p->p_cred->ucr, &dir, S_IROTH, &mode); if (r) { DEBUG(("Dopendir(%s): read permission denied", name)); release_cookie (&dir); return r; } dirh->fc = dir; dirh->index = 0; dirh->flags = flag; r = xfs_opendir (dir.fs, dirh, flag); if (r) { DEBUG(("d_opendir(%s): opendir returned %ld", name, r)); release_cookie (&dir); return r; } /* we keep a chain of open directories so that if a process * terminates without closing them all, we can clean up */ dirh->next = p->p_fd->searches; p->p_fd->searches = dirh; dirh->fd = 0; /* less than MIN_OPEN */ return (long) dirh; } long _cdecl sys_d_readdir (MetaDOSDir int len, long handle, char *buf) { DIR *dirh = dirMD; fcookie fc; long r; if (!dirh->fc.fs) return EBADF; r = xfs_readdir (dirh->fc.fs, dirh, buf, len, &fc); if (r == E_OK) release_cookie (&fc); DEBUG(("sys_d_readdir(): returned %ld", r)); return r; } /* jr: just as d_readdir, but also returns XATTR structure (not * following links). Note that the return value reflects the * result of the Dreaddir operation, the result of the Fxattr * operation is stored in long *xret */ long _cdecl sys_d_xreaddir (MetaDOSDir int len, long handle, char *buf, XATTR *xattr, long *xret) { DIR *dirh = dirMD; fcookie fc; long r; if (!dirh->fc.fs) return EBADF; r = xfs_readdir (dirh->fc.fs, dirh, buf, len, &fc); if (r != E_OK) return r; *xret = xfs_getxattr (fc.fs, &fc, xattr); if ((*xret == E_OK) && (fc.fs->fsflags & FS_EXT_3)) { xtime_to_local_dos(xattr, m); xtime_to_local_dos(xattr, a); xtime_to_local_dos(xattr, c); } release_cookie (&fc); return r; } long _cdecl sys_d_rewind (MetaDOSDir long handle) { DIR *dirh = dirMD; if (!dirh->fc.fs) return EBADF; return xfs_rewinddir (dirh->fc.fs, dirh); } /* * NOTE: there is also code in terminate() in dosmem.c that * does automatic closes of directory searches. * If you change d_closedir(), you may also need to change * terminate(). */ long _cdecl sys_d_closedir (MetaDOSDir long handle) { struct proc *p = get_curproc(); DIR *dirh = dirMD; DIR **where; long r; where = &p->p_fd->searches; while (*where && *where != dirh) where = &((*where)->next); if (!*where) { DEBUG(("Dclosedir: not an open directory")); return EBADF; } /* unlink the directory from the chain */ *where = dirh->next; if (dirh->fc.fs) { r = xfs_closedir (dirh->fc.fs, dirh); release_cookie (&dirh->fc); } else r = E_OK; if (r) DEBUG(("Dclosedir: error %ld", r)); return r; } /* * GEMDOS extension: Fxattr(flag, file, xattr) * * gets extended attributes for a file. * flag is 0 if symbolic links are to be followed (like stat), * flag is 1 if not (like lstat). */ long _cdecl sys_f_xattr (MetaDOSFile int flag, const char *name, XATTR *xattr) { struct proc *p = get_curproc(); fcookie fc; long r; TRACE (("Fxattr(%d, %s)", flag, name)); r = path2cookie (p, name, flag ? NULL : follow_links, &fc); if (r) { DEBUG (("Fxattr(%s): path2cookie returned %ld", name, r)); return r; } r = xfs_getxattr (fc.fs, &fc, xattr); if (r) { DEBUG (("Fxattr(%s): returning %ld", name, r)); } else if (fc.fs->fsflags & FS_EXT_3) { xtime_to_local_dos(xattr, m); xtime_to_local_dos(xattr, a); xtime_to_local_dos(xattr, c); } release_cookie (&fc); return r; } /* * GEMDOS extension: Flink(old, new) * * creates a hard link named "new" to the file "old". */ long _cdecl sys_f_link (MetaDOSDir const char *old, const char *new) { struct proc *p = get_curproc(); fcookie olddir, newdir; char temp1[PATH_MAX], temp2[PATH_MAX]; long r; ushort mode; TRACE(("Flink(%s, %s)", old, new)); r = path2cookie (p, old, temp2, &olddir); if (r) { DEBUG(("Flink(%s,%s): error parsing old name",old,new)); return r; } r = path2cookie (p, new, temp1, &newdir); if (r) { DEBUG(("Flink(%s,%s): error parsing new name",old,new)); release_cookie(&olddir); return r; } if (newdir.fs != olddir.fs) { DEBUG(("Flink(%s,%s): different file systems",old,new)); release_cookie (&olddir); release_cookie (&newdir); return EXDEV; /* cross device link */ } /* check for write permission on the destination directory */ r = dir_access (p->p_cred->ucr, &newdir, S_IWOTH, &mode); if (r) DEBUG(("Flink(%s,%s): access to directory denied",old,new)); else r = xfs_hardlink (newdir.fs, &olddir, temp2, &newdir, temp1); release_cookie (&olddir); release_cookie (&newdir); return r; } /* * GEMDOS extension: Fsymlink(old, new) * * create a symbolic link named "new" that contains the path "old" */ long _cdecl sys_f_symlink (MetaDOSDir const char *old, const char *new) { struct proc *p = get_curproc(); fcookie newdir; long r; char temp1[PATH_MAX]; ushort mode; TRACE(("Fsymlink(%s, %s)", old, new)); r = path2cookie(p, new, temp1, &newdir); if (r) { DEBUG(("Fsymlink(%s,%s): error parsing %s", old,new,new)); return r; } r = dir_access (p->p_cred->ucr, &newdir, S_IWOTH, &mode); if (r) DEBUG(("Fsymlink(%s,%s): access to directory denied",old,new)); else r = xfs_symlink (newdir.fs, &newdir, temp1, old); release_cookie (&newdir); return r; } /* * GEMDOS extension: Freadlink(buflen, buf, linkfile) * * read the contents of the symbolic link "linkfile" into the buffer * "buf", which has length "buflen". */ long _cdecl sys_f_readlink (MetaDOSDir int buflen, char *buf, const char *linkfile) { struct proc *p = get_curproc(); fcookie file; long r; XATTR xattr; TRACE(("Freadlink(%s)", linkfile)); r = path2cookie (p, linkfile, (char *)0, &file); if (r) { DEBUG(("Freadlink: unable to find %s", linkfile)); return r; } r = xfs_getxattr (file.fs, &file, &xattr); if (r) { DEBUG(("Freadlink: unable to get attributes for %s", linkfile)); } else if (S_ISLNK(xattr.mode)) { r = xfs_readlink (file.fs, &file, buf, buflen); } else { DEBUG(("Freadlink: %s is not a link", linkfile)); r = EACCES; } release_cookie (&file); return r; } /* * GEMDOS extension: Fchown(name, uid, gid) * * changes the user and group ownerships of a file to "uid" and "gid" * respectively */ long _cdecl sys_f_chown (MetaDOSDir const char *name, int uid, int gid) { return sys_f_chown16( MetaDOSDirpass name, uid, gid, 0 ); } /* * GEMDOS extension: Fchown16(name, uid, gid, follow_symlinks) * * @param follow_symlinks set to 1 to follow or 0 to not to follow * (the other values are reserved) */ long _cdecl sys_f_chown16 (MetaDOSDir const char *name, int uid, int gid, int follow_symlinks) { struct proc *p = get_curproc(); #if 0 struct ucred *cred = p->p_cred->ucr; #endif fcookie fc; #if 0 XATTR xattr; #endif long r; TRACE(("Fchown16(%s, %d, %d, %s)", name, uid, gid, follow_symlinks != 0 ? "follow_links" : "nofollow")); r = path2cookie (p, name, follow_symlinks == 1 ? follow_links : NULL, &fc); if (r) { DEBUG(("Fchown(%s): error %ld", name, r)); return r; } #if 0 /* MiNT acts like _POSIX_CHOWN_RESTRICTED: a non-privileged process can * only change the ownership of a file that is owned by this user, to * the effective group id of the process or one of its supplementary groups */ if (cred->euid) { if (cred->egid != gid && !groupmember (cred, gid)) r = EACCES; else r = xfs_getxattr (fc.fs, &fc, &xattr); if (r) { DEBUG(("Fchown(%s): unable to get file attributes",name)); release_cookie (&fc); return r; } if (xattr.uid != cred->euid || xattr.uid != uid) { DEBUG(("Fchown(%s): not the file's owner",name)); release_cookie (&fc); return EACCES; } r = xfs_chown (fc.fs, &fc, uid, gid); /* POSIX 5.6.5.2: if name refers to a regular file the set-user-ID and * set-group-ID bits of the file mode shall be cleared upon successful * return from the call to chown, unless the call is made by a process * with the appropriate privileges. * Note that POSIX leaves the behaviour unspecified for all other file * types. At least for directories with BSD-like setgid semantics, * these bits should be left unchanged. */ if (!r && !S_ISDIR(xattr.mode) && (xattr.mode & (S_ISUID | S_ISGID))) { long s; s = xfs_chmode (fc.fs, &fc, xattr.mode & ~(S_ISUID | S_ISGID)); if (!s) DEBUG(("Fchown: chmode returned %ld (ignored)", s)); } } else #endif r = xfs_chown (fc.fs, &fc, uid, gid); release_cookie (&fc); return r; } /* * GEMDOS extension: Fchmod (file, mode) * * changes a file's access permissions. */ long _cdecl sys_f_chmod (MetaDOSDir const char *name, unsigned int mode) { struct proc *p = get_curproc(); #if 0 struct ucred *cred = p->p_cred->ucr; #endif fcookie fc; long r; XATTR xattr; TRACE (("Fchmod(%s, %o)", name, mode)); r = path2cookie (p, name, follow_links, &fc); if (r) { DEBUG (("Fchmod(%s): error %ld", name, r)); return r; } r = xfs_getxattr (fc.fs, &fc, &xattr); if (r) { DEBUG (("Fchmod(%s): couldn't get file attributes",name)); } #if 0 else if (cred->euid && cred->euid != xattr.uid) { DEBUG (("Fchmod(%s): not the file's owner",name)); r = EACCES; } #endif else { r = xfs_chmode (fc.fs, &fc, mode & ~S_IFMT); if (r) DEBUG(("Fchmod: error %ld", r)); } release_cookie (&fc); return r; } /* * GEMDOS-extension: Dreadlabel(path, buf, buflen) * * original written by jr */ long _cdecl sys_d_readlabel (MetaDOSDir const char *name, char *buf, int buflen) { struct proc *p = get_curproc(); fcookie dir; long r; r = path2cookie (p, name, NULL, &dir); if (r) { DEBUG (("Dreadlabel(%s): bad path", name)); return r; } r = xfs_readlabel (dir.fs, &dir, buf, buflen); release_cookie (&dir); return r; } /* * GEMDOS-extension: Dwritelabel(path, newlabel) * * original written by jr */ long _cdecl sys_d_writelabel (MetaDOSDir const char *name, const char *label) { struct proc *p = get_curproc(); fcookie dir; long r; r = path2cookie (p, name, NULL, &dir); if (r) { DEBUG (("Dwritelabel(%s): bad path",name)); return r; } r = xfs_writelabel (dir.fs, &dir, label); release_cookie (&dir); return r; } /* * GEMDOS extension: Fstat(flag, file, stat) * * gets extended attributes in native UNIX format for a file. * flag is 0 if symbolic links are to be followed (like stat), * flag is 1 if not (like lstat). */ long _cdecl sys_f_stat64 (MetaDOSDir int flag, const char *name, STAT *stat) { struct proc *p = get_curproc(); fcookie fc; long r; TRACE (("Fstat64(%d, %s)", flag, name)); r = path2cookie (p, name, flag ? NULL : follow_links, &fc); if (r) { DEBUG (("Fstat64(%s): path2cookie returned %ld", name, r)); return r; } r = xfs_stat64 (fc.fs, &fc, stat); if (r) DEBUG (("Fstat64(%s): returning %ld", name, r)); release_cookie (&fc); return r; } aranym-1.1.0/atari/hostfs/metados/debug.h0000664000175000017500000000302313454637621016500 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * debug.h,v 1.2 2001/06/13 20:21:42 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ /* * Copyright 1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corporation. * All rights reserved. */ # ifndef _mint_debug_h # define _mint_debug_h extern int debug_level; extern int out_device; extern int debug_logging; /* * Extra terse settings - don't even output ALERTs unless asked to. * * Things that happen in on an idle Desktop are at LOW_LEVEL: * Psemaphore, Pmsg, Syield. */ # define FORCE_LEVEL 0 # define ALERT_LEVEL 1 # define DEBUG_LEVEL 2 # define TRACE_LEVEL 3 # define LOW_LEVEL 4 # ifndef DEBUG_INFO # define TRACELOW(x) # define TRACE(x) # define DEBUG(x) # else # define TRACELOW(s) \ do { if ((debug_level >= LOW_LEVEL) || debug_logging) Tracelow s ; } while (0) # define TRACE(s) \ do { if ((debug_level >= TRACE_LEVEL) || debug_logging) Trace s ; } while (0) # define DEBUG(s) \ do { if ((debug_level >= DEBUG_LEVEL) || debug_logging) Debug s ; } while (0) # endif /* DEBUG_INFO */ void debug_ws (const char *s); void _cdecl Tracelow (const char *s, ...); void _cdecl Trace (const char *s, ...); void _cdecl Debug (const char *s, ...); void _cdecl ALERT (const char *s, ...); EXITING _cdecl FATAL (const char *s, ...) NORETURN; EXITING halt (void) NORETURN; EXITING HALT (void) NORETURN; void DUMPLOG (void); # endif /* _mint_debug_h */ aranym-1.1.0/atari/hostfs/metados/debug.c0000664000175000017500000000460313454637621016500 0ustar joyjoy/* * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * debug.c,v 1.13 2001/12/20 13:35:09 draco Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. * * * Copyright 1990,1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corporation. * All rights reserved. * * * MiNT debugging output routines * */ #include "hostfs.h" #include "nf_ops.h" #include "mint/string.h" #include int debug_level = 10; /* how much debugging info should we print? */ /* * debug log modes: * * 0: no logging. * 1: log all messages, dump the log any time something happens at * a level that gets shown. Thus, if you're at debug_level 2, * everything is logged, and if something at levels 1 or 2 happens, * the log is dumped. */ int debug_logging = 0; void debug_ws (const char *s) { nf_debug(s); } static void VDEBUGOUT(const char *s, va_list args, int alert_flag) { char lptemp[256]; kvsprintf(lptemp, sizeof(lptemp), s, args); debug_ws(lptemp); debug_ws("\r\n"); } # ifdef DEBUG_INFO void _cdecl Tracelow(const char *s, ...) { if (debug_logging || (debug_level >= LOW_LEVEL) || (get_curproc() && (get_curproc()->debug_level >= LOW_LEVEL)) || (get_curproc()==NULL) ) { va_list args; va_start(args, s); VDEBUGOUT(s, args, 0); va_end(args); } } void _cdecl Trace(const char *s, ...) { if (debug_logging || (debug_level >= TRACE_LEVEL) || (get_curproc() && (get_curproc()->debug_level >= TRACE_LEVEL)) || (get_curproc()==NULL) ) { va_list args; va_start(args, s); VDEBUGOUT(s, args, 0); va_end(args); } } void _cdecl Debug(const char *s, ...) { if (debug_logging || (debug_level >= DEBUG_LEVEL) || (get_curproc() && (get_curproc()->debug_level >= DEBUG_LEVEL)) || (get_curproc()==NULL) ) { va_list args; va_start(args, s); VDEBUGOUT(s, args, 0); va_end(args); } } # endif EXITING _cdecl FATAL(const char *s, ...) { va_list args; va_start(args, s); VDEBUGOUT(s, args, 0); va_end(args); HALT(); } /* uk: a normal halt() function without an error message. This function * may only be called if all processes are shut down and the file * systems are synced. */ EXITING halt (void) { debug_ws ("MSG_system_halted"); for (;;) { } } EXITING HALT (void) { debug_ws ("MSG_fatal_reboot"); for (;;) { } } aranym-1.1.0/atari/hostfs/metados/Makefile0000664000175000017500000000450413454637621016706 0ustar joyjoy# # Makefile for hostfs.xfs # # If you got these sources as part of STonX note: # - You have to copy all files of this directory into the FreeMiNT source # tree at "sys/xfs/hostfs". Instead of you may change top_srcdir at this # Makefile to "sys" directory of the MiNT source tree. # "make" does only work, if you do so! # # Note: You need a crosscompiler to make hostfs.xfs or a native m68k-atari-mint # gcc, make etc. # To use crosscompiling change the variables at CONFIGVARS. # To crosscompile even FreeMiNT, you may have to change CRLF at # CONFIGVARS (e.g. say "CRLF = echo crlf"). There may be additional # errors, because of using "flags" at some sub-Makefiles. Comment out # "flags"-calls at those Makefiles (resulting programms will only work # if you're running at least version 1.15.10 of FreeMiNT. # TARGET = hostfs.dos GENFILES = $(TARGET) SHELL = /bin/sh SUBDIRS = srcdir = . top_srcdir = ../.. subdir = metados CPU = 000 default: all include $(top_srcdir)/CONFIGVARS all: $(TARGET) debug: $(MAKE) DEBUG_INFO="-DDEBUG_INFO" # default overwrites INCLUDES = -I. -I.. -I$(top_srcdir)/natfeat DEFINITIONS = LD = $(CC) -nostdlib -Wl,--entry -Wl,_init LIBS = -lgcc # some little code pieces needs to be metados dependent MDFLAGS += $(DEBUG_INFO) CFLAGS += $(INCLUDES) CFLAGS += $(MDFLAGS) CFLAGS += -g -O2 -fomit-frame-pointer CFLAGS += -mshort CFLAGS += $(WARN) ASFLAGS = $(CFLAGS) LDFLAGS += -s CSRCS = \ hostfs_nfapi.h \ dosfile.c dosfile.h \ dosdir.c dosdir.h \ filesys.c filesys.h \ k_fds.c k_fds.h \ debug.c debug.h \ global.h \ kerinfo.h \ main.c mintfake.h \ mintproc.c mintproc.h \ $(top_srcdir)/natfeat/natfeat.c $(top_srcdir)/natfeat/nf_ops.h \ hostfs/hostfs_dev.c hostfs/hostfs_dev.h \ hostfs/hostfs_xfs.c hostfs/hostfs_xfs.h \ mint/strcpy.c \ mint/strncpy.c \ mint/strlen.c \ mint/strupr.c \ mint/bzero.c \ mint/memcpy.c \ mint/ctype.c \ mint/ksprintf.c \ mint/dostime.c \ mint/unixtime.c \ mint/unix2xbios.c \ $(empty) SSRCS = \ mdglue.S \ $(top_srcdir)/natfeat/natfeat_asm.S \ $(empty) # default definitions OBJS = $(patsubst %.S, %.o, $(filter %.S, $(SSRCS))) $(patsubst %.c, %.o, $(filter %.c, $(CSRCS))) $(TARGET): $(OBJS) $(LD) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) clean:: rm -f *.o */*.o $(top_srcdir)/natfeat/*.o $(TARGET) aranym-1.1.0/atari/hostfs/metados/.gitignore0000664000175000017500000000001313454637621017225 0ustar joyjoyhostfs.dos aranym-1.1.0/atari/hostfs/hostfs_nfapi.h0000664000175000017500000000247313454637621016451 0ustar joyjoy/* * joy 2003 * * trying to clean up the NFAPI mess * * GPL */ #ifndef _HOSTFS_NFAPI_H #define _HOSTFS_NFAPI_H /* * General versioning rules: * The driver version is literaly HOSTFS_XFS_VERSION.HOSTFS_NFAPI_VERSION * * note: therefore you need to be careful and set the NFAPI_VERSION like * 0x or something if needed. */ /* * general XFS driver version */ #define HOSTFS_XFS_VERSION 0 #define BETA /* if you change anything in the enum {} below you have to increase this HOSTFS_NFAPI_VERSION! */ #define HOSTFS_NFAPI_VERSION 04 enum { GET_VERSION = 0, /* subID = 0 */ GET_DRIVE_BITS, /* get mapped drive bits */ /* hostfs_xfs */ XFS_INIT, XFS_ROOT, XFS_LOOKUP, XFS_CREATE, XFS_GETDEV, XFS_GETXATTR, XFS_CHATTR, XFS_CHOWN, XFS_CHMOD, XFS_MKDIR, XFS_RMDIR, XFS_REMOVE, XFS_GETNAME, XFS_RENAME, XFS_OPENDIR, XFS_READDIR, XFS_REWINDDIR, XFS_CLOSEDIR, XFS_PATHCONF, XFS_DFREE, XFS_WRITELABEL, XFS_READLABEL, XFS_SYMLINK, XFS_READLINK, XFS_HARDLINK, XFS_FSCNTL, XFS_DSKCHNG, XFS_RELEASE, XFS_DUPCOOKIE, XFS_SYNC, XFS_MKNOD, XFS_UNMOUNT, /* hostfs_dev */ DEV_OPEN, DEV_WRITE, DEV_READ, DEV_LSEEK, DEV_IOCTL, DEV_DATIME, DEV_CLOSE, DEV_SELECT, DEV_UNSELECT, /* new from 0.04 */ XFS_STAT64 }; extern unsigned long nf_hostfs_id; #define HOSTFS(a) (nf_hostfs_id + a) #endif /* _HOSTFS_NFAPI_H */ aranym-1.1.0/atari/hostfs/bdconfig.sys0000664000175000017500000000703513454637621016127 0ustar joyjoy;---------------------------------------------------------------------------- ;File name: BDCONFIG.SYS Revision date: 1998.08.27 ;Purpose: BetaDos configuration Creation date: 1998.02.27 ;---------------------------------------------------------------------------- ;(C)1998 by Ronald Andersson Email: dlanor@oden.se ;---------------------------------------------------------------------------- ;The first four entries are commented out, partly because you may not have ;a CD-ROM to use them for, and partly because I have no distribution rights ;for the BOS drivers. They are from the SPIN distribution by Julian Reschke ;and from ExtenDOS, and are what I use for CD-ROM access on my Falcon030. ; ;;;*BOS, c:\auto\cd.bos, A:13.0 ;;;*BOS, c:\auto\spin_sd.bos, B:14\0 ;;;*DOS, c:\auto\unidrive.dos, X:A ;;;*DOS, c:\auto\bd_9660f.dos, Y:B ; ;One DOS driver above is my own, and is a slightly improved ISO9660F version. ;This has been completely restructured, so as to simplify adding new abilities ;(when I get time for that) such as support of long filenames and Dopendir etc. ; ;The filesystems below are my own, though 'Cook_FS' was inspired by Julian ;Reschkes 'CookieFS'. His pioneer effort in producing new DOS sources gave ;me the impetus (and needed knowledge) to start the BetaDos project. ; ;Cluster.DOS implements a drive that holds a 'cluster' of other drives, that ;are presented as subfolders, similar to the U: drive of MagiC and MiNT. ;The main difference is that this one works in SingleTOS as well... ;As yet many features of U: are still missing of course (\proc, \dev, etc.), ;but some of these will be added later (especially link stuff). ; ;For SingleTOS users I recommend editing the 'V:0' of Cluster.Dos to 'U:0'... ;Or like me, use both. V: can also be used under MagiC and MiNT, so it has ;proven a useful medium for symbolic links that can be used identically in ;all available TOS systems, with or without multitasking. I use it a lot ! ; ;*DOS, c:\auto\cluster.dos, V:0 ;*DOS, c:\auto\cook_fs.dos, W:1 ; ;Cook_FS is just another cookie filesystem, based on exactly the principles ;and methods in Julian Reschke's CookieFS. It has been completely recoded ;though this did not motivate many changes, except where it concerned the ;new object linking method, which enforced some changes. ; ;As yet these filesystems can be considered FreeWare, but I make no promises ;as to what policy I will apply regarding future versions... ; ;In addition to the 'classic' MetaDOS commands, BetaDOS now also supports a ;new command '*SLB,' Identically to how that has been implemented by Julian Reschke in his MetaDOS enhancements. So BetaDOS remains MetaDOS compatible. ; ;*SLB, c:\auto\slb_load.ovl c:\gemsys\magic\xtension ; ;Only one such command per BDCONFIG.SYS file is meaningful, and the path at ;the end specifies the default path BetaDOS will look for .SLB files in. If ;the SLBPATH environment variable is used, this replaces the default path ;with a proper path list. The *SLB, command is still needed though, because ;if it is not used BetaDOS will ignore the new GEMDOS functions Slbopen and ;Slbclose, so the shared code libraries will not be accessible then. ;Thanks go to Julian Reschke again for providing much info on the SLB stuff. ; ;ARAnyM HOSTFS configuration *DOS, \auto\hostfs.dos, M:M ;ARAnyM HOSTFS configuration end ;---------------------------------------------------------------------------- ;End of file: BDCONFIG.SYS ;---------------------------------------------------------------------------- aranym-1.1.0/atari/hostfs/README0000664000175000017500000000151513454637621014471 0ustar joyjoyhostfs.xfs ========== The .xfs driver is now maintained in the FreeMiNT CVS repository. hostfs.dos ========== This is the MetaDOS driver that makes use of the NatFeat .XFS interface. Basicaly it is the FreeMiNT file IO GEMDOS implementation (FreeMiNT_CVS/sys/ dosfile.c dosdir.c) mangled so that it compiles as a standalone binary. Installation ------------ MetaDOS driver: * copy new hostfs.dos to your AUTO folder and add the entries into your bdconfig.sys, as follows: \AUTO\HOSTFS.DOS, E:E \AUTO\HOSTFS.DOS, F:F This example maps drives E: and F:. BUGS ---- hostfs.dos - relocatable programs crash due to a serious bug in MetaDOS. Use BetaDOS instead (version 3.12+ might be available at http://www.ettnet.se/~dlanor/main/html/ra_files.htm). Compilation ----------- * cd into the metados folder * type make aranym-1.1.0/atari/CONFIGVARS0000664000175000017500000000207113454637621013665 0ustar joyjoy# # cross compiling # EVAL_CROSS := case `uname -s` in *MiNT*) echo no;; *) echo yes; esac CROSS := $(shell $(EVAL_CROSS)) # # target and host compiler # ifeq ($(CROSS),yes) CROSSPREFIX=m68k-atari-mint- NATIVECC = gcc NATIVECFLAGS = -O -Wall CRLF = echo crlf -s # e.g. when you don't have the mintlib/gemlib/cflib in # the /usr/m68k-atari/mint GENERAL = $(M68K_ATARI_MINT_CFLAGS) $(M68K_ATARI_MINT_LDFLAGS) else CROSSPREFIX= NATIVECC = gcc NATIVECFLAGS = -O -Wall CRLF = crlf -s endif CC = $(CROSSPREFIX)gcc AS = $(CC) AR = $(CROSSPREFIX)ar RANLIB = $(CROSSPREFIX)ranlib STRIP = $(CROSSPREFIX)strip FLAGS = $(CROSSPREFIX)flags # # some tools # YACC = bison -dk LEX = flex MV = mv CP = cp RM = rm -f TOUCH = touch MKDIR = mkdir MKDIR_P = $(MKDIR) -p SED = sed # # optimizations # OPTS = -O2 -finline-functions -fomit-frame-pointer # # warning options # WARN = \ -Wall \ -Wmissing-prototypes \ -Wshadow \ -Wpointer-arith \ -Wcast-qual \ -Waggregate-return # -Winline \ # # default definitions # DEFINITIONS = # # model type # MODEL = aranym-1.1.0/aranym.spec0000664000175000017500000003445013454637621013352 0ustar joyjoy# generic defines used by all distributions. # %define ver 1.1.0 # # %define myrelease 1 %define mybuild 1 %define _rel %{myrelease}.%{mybuild} # define the package groups. If they all followed the same naming convention, # these would be the same. They don't, and so they aren't :( # %define suse_group System/Emulators/Others %define mandriva_group Console/Emulators %define fedora_group Console/Emulators # defaults # %define group Console/Emulators %define rel %{_rel} %define my_suse 0 %define my_mandriva 0 %define my_fedora 0 %define my_centos 0 %if 0%{?suse_version:1}%{?sles_version:1} %define my_suse 1 %endif # if present, use %distversion to find out which Mandriva version is being built # define %distversion and %_icondir in your .rpmmacros if build fails # %if 0%{?distversion:1} %if 0%{?!mandriva_version:1} %define mandriva_version %(echo $[%{distversion}/10]) %endif %endif %if 0%{?mandriva_version:1} %define my_mandriva 1 %define my_vendor mandriva %endif # if present, decode %dist to find out which OS package is being built on # %if 0%{?dist:1} # Centos or Fedora # %define my_which_os %(i=%{dist} ; if [ "${i::3}" == ".fc" ] ; then echo "1" ; else echo "0" ; fi ) %if %{my_which_os} %if 0%{?!fedora_version:1} %define fedora_version %(i=%{dist} ; echo "${i:3}" ) %endif %else %if 0%{?!centos_version:1} %define centos_version %(i=%{dist} ; echo "${i:3}00" ) %endif %endif %endif %if 0%{?fedora_version:1} %define my_fedora 1 %define my_vendor fedora %endif %if 0%{?centos_version:1} %define my_centos 1 %define my_vendor centos %endif %if %{my_suse} %if %{suse_version} %define rel %{myrelease}.suse%(echo $[%suse_version/10]).%{mybuild} %else %define rel %{myrelease}.sles%{sles_version}.%{mybuild} %endif %if %suse_version >= 930 %define debugrpm 1 %endif %define group %{suse_group} %endif # building on a Mandriva/Mandrake Linux system. # # this should create a release that conforms to the Mandriva naming conventions. # %if %{my_mandriva} %define rel %{myrelease}.mdv%{mandriva_version}.%{mybuild} %define group %{mandriva_group} %endif # building on a Fedora Core Linux system. # # this should create a release that conforms to the Fedora naming conventions. # %if %{my_fedora} %if 0%{?!fedora_version:1} %define fedora_version %(i="%dist" ; echo "${i:3}") %endif %if 0%{?!dist:1} %define dist .fc%{fedora_version} %endif %define rel %{myrelease}%{dist}.%{mybuild} %define group %{fedora_group} %endif # building on a Centos Linux system. # # this should create a release that conforms to the Centos naming conventions. # %if %{my_centos} %if 0%{?!centos_version:1} %define centos_version %(i="%dist" ; echo "${i:3}") %endif %if 0%{?!dist:1} %define dist .el%{centos_version} %endif %define rel %{myrelease}%{dist}.%{mybuild} %define group %{fedora_group} %endif # move the icons into a standardised location # %if 0%{?!_icondir:1} %define _icondir %{_datadir}/icons/hicolor/ %endif # ensure where RPM thinks the docs should be matches reality # gets around SUSE using %{_prefix}/share/doc/packages and # fedora using %{_defaultdocdir} # %define _docdir %{_prefix}/share/doc %if %{my_suse} Requires: libSDL-1_2-0 >= 1.2.12 Requires: libSDL_image-1_2-0 >= 1.2.5 Requires: zlib >= 1.2.3 Requires: libmpfr4 >= 3.0.0 Requires: libusb-1_0-0 >= 1.0.0 BuildRequires: libSDL-devel >= 1.2.12 BuildRequires: libSDL_image-devel >= 1.2.5 BuildRequires: zlib-devel >= 1.2.3 BuildRequires: mpfr-devel >= 3.0.0 BuildRequires: libusb-1_0-devel >= 1.0.0 BuildRequires: update-desktop-files BuildRequires: make %endif %if %{my_mandriva} Requires: libSDL1.2_0 >= 1.2.12 Requires: libSDL_image1.2_0 >= 1.2.5 Requires: zlib >= 1.2.3 Requires: libmpfr4 >= 3.0.0 Requires: libusb1.0_0 >= 1.0.0 BuildRequires: libSDL-devel >= 1.2.12 BuildRequires: libSDL_image-devel >= 1.2.5 BuildRequires: zlib-devel >= 1.2.3 BuildRequires: libmpfr-devel >= 3.0.0 BuildRequires: libusb1-devel >= 1.0.0 %endif %if %{my_fedora} Requires: SDL >= 1.2.12 Requires: SDL_image >= 1.2.5 Requires: zlib >= 1.2.3 Requires: mpfr >= 3.0.0 Requires: libusb1 >= 1.0.0 BuildRequires: SDL-devel >= 1.2.12 BuildRequires: SDL_image-devel >= 1.2.5 BuildRequires: zlib-devel >= 1.2.3 BuildRequires: mpfr-devel >= 3.0.0 BuildRequires: libusb1-devel >= 1.0.0 %endif %if %{my_centos} Requires: SDL >= 1.2.12 Requires: SDL_image >= 1.2.5 Requires: zlib >= 1.2.3 Requires: mpfr >= 2.4.1 Requires: libusb1 >= 1.0.0 BuildRequires: SDL-devel >= 1.2.12 BuildRequires: SDL_image-devel >= 1.2.5 BuildRequires: zlib-devel >= 1.2.3 BuildRequires: mpfr-devel >= 2.4.1 BuildRequires: libusb1-devel >= 1.0.0 %endif # Now for the meat of the spec file # Name: aranym Version: %{ver} Release: %{rel} License: GPLv2 Summary: 32-bit Atari personal computer (similar to Falcon030 but better) virtual machine URL: https://aranym.github.io/ Group: %{group} Source0: http://prdownloads.sourceforge.net/aranym/%{name}_%{version}.orig.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot Requires: hicolor-icon-theme BuildRequires: hicolor-icon-theme BuildRequires: desktop-file-utils BuildRequires: gcc-c++ #Patch0: aranym-0.9.7beta-desktop.patch %description ARAnyM is a software only TOS clone - a virtual machine that allows you to run TOS, EmuTOS, FreeMiNT, MagiC and Linux-m68k operating systems and their applications. Authors: Ctirad Fertr, Milan Jurik, Standa Opichal, Petr Stehlik, Johan Klockars, Didier MEQUIGNON, Patrice Mandin and others (see AUTHORS for a full list). %{?debugrpm:%debug_package} %prep %setup -q #%%patch0 %build %configure --enable-jit-compiler --enable-usbhost %{__make} depend %{__make} %{__mv} aranym aranym-jit %{__make} clean %configure --enable-fullmmu --enable-lilo --enable-usbhost %{__make} depend %{__make} %{__mv} aranym aranym-mmu %{__make} clean %configure --enable-usbhost %{__make} depend %{__make} %install mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}/%{_mandir}/man1 mkdir -p %{buildroot}/%{_datadir}/aranym make install DESTDIR=%{buildroot} install -m 755 aranym-mmu %{buildroot}%{_bindir} # should be 4755 but build fails due to SUID bit set # install -m 755 aratapif %{buildroot}%{_bindir} install -m 755 aranym-jit %{buildroot}%{_bindir} # add a desktop menu entry # mkdir -p %{buildroot}/%{_datadir}/applications mkdir -p %{buildroot}/%{_icondir}/32x32/apps mkdir -p %{buildroot}/%{_icondir}/48x48/apps install -m 644 contrib/icon-32.png %{buildroot}/%{_icondir}/32x32/apps/aranym.png install -m 644 contrib/icon-48.png %{buildroot}/%{_icondir}/48x48/apps/aranym.png %if %{my_suse}%{my_mandriva} install -m 644 contrib/%{name}.desktop %{buildroot}/%{_datadir}/applications/%{name}.desktop %if %{my_suse} %suse_update_desktop_file -i %{name} %endif %if %{my_mandriva} desktop-file-install \ --delete-original \ --dir %{buildroot}%{_datadir}/applications \ --add-category System \ --add-category Emulator \ %{buildroot}/%{_datadir}/applications/%{name}.desktop %endif %endif %if %{my_fedora}%{my_centos} install -m 644 contrib/%{name}.desktop %{buildroot}%{_datadir}/applications/%{my_vendor}-%{name}.desktop desktop-file-install \ --delete-original \ --vendor %{my_vendor} \ --dir %{buildroot}%{_datadir}/applications \ --add-category X-Fedora \ --add-category System \ --add-category Emulator \ %{buildroot}/%{_datadir}/applications/%{my_vendor}-%{name}.desktop %endif %if %{my_suse}%{my_mandriva} install -m 644 contrib/%{name}-jit.desktop %{buildroot}/%{_datadir}/applications/%{name}-jit.desktop %endif %if %{my_fedora}%{my_centos} install -m 644 contrib/%{name}-jit.desktop %{buildroot}%{_datadir}/applications/%{my_vendor}-%{name}-jit.desktop %endif %if %{my_suse}%{my_mandriva} install -m 644 contrib/%{name}-mmu.desktop %{buildroot}/%{_datadir}/applications/%{name}-mmu.desktop %endif %if %{my_fedora}%{my_centos} install -m 644 contrib/%{name}-mmu.desktop %{buildroot}%{_datadir}/applications/%{my_vendor}-%{name}-mmu.desktop %endif %if %{my_mandriva} %post %update_menus %endif %if %{my_mandriva} %postun %clean_menus %endif %clean %{__rm} -rf %{buildroot} %{__rm} -rf %{_tmppath}/%{name}-%{version}-%{release}-buildroot %files %defattr(-,root,root) %{_mandir}/man1/%{name}.1* %{_mandir}/man1/aratapif.1* %{_datadir}/%{name} %{_docdir}/%{name} %{_icondir}/32x32/apps/%{name}.png %{_icondir}/48x48/apps/%{name}.png %{_datadir}/applications/*%{name}.desktop %{_bindir}/aratapif %{_bindir}/aranym %{_bindir}/aranym-jit %{_mandir}/man1/%{name}-jit.1* %{_datadir}/applications/*%{name}-jit.desktop %defattr(-,root,root) %{_bindir}/aranym-mmu %{_mandir}/man1/%{name}-mmu.1* %{_datadir}/applications/*%{name}-mmu.desktop %changelog * Tue Feb 06 2018 Thorsten Otto URL changed to aranym.github.io. Also updated in NEWS/README files. * Wed Oct 10 2014 Petr Stehlik 1.0.0 New ARAnyM release. Reset the minimal SDL version down to 1.2.12 * Tue Jul 08 2014 Thorsten Otto Bumped the minimal SDL version to 1.2.15 * Tue Jun 03 2014 Jens Heitmann Desktop copy added for CentOS; dependencies for centos (JIT version crashes with SDL < 1.2.15) * Mon Apr 12 2014 Petr Stehlik 0.9.16 New upstream ARAnyM release. JIT supported on 64-bit now. * Mon Apr 15 2013 Petr Stehlik 0.9.15 New ARAnyM release. * Fri Mar 23 2012 Petr Stehlik 0.9.13 New ARAnyM release. Make use of two new desktop files. Mandriva desktop files without the vendor prefix. * Sat Mar 17 2012 Petr Stehlik 0.9.12 New ARAnyM release. New FPU emulation for MMU mode (using MPFR) New Native Features enabled (PCI, USB) New dependencies (zlib, mpfr, libusb) * Wed May 26 2010 Petr Stehlik 0.9.10 New ARAnyM release. Icons moved to icons dir. Source archive filename follows Debian convention. * Sat Sep 05 2009 Petr Stehlik 0.9.9 New ARAnyM release. * Sat Apr 25 2009 Petr Stehlik New ARAnyM release. * Sat Nov 08 2008 Petr Stehlik New ARAnyM release. * Wed Jan 30 2008 Petr Stehlik Added SDL_image to Requires: Bumped the minimal SDL version to 1.2.10 Enabled the Requires: for mandriva (still untested) * Tue Jan 29 2008 Petr Stehlik Desktop file corrected and renamed to lowercase. _icondir defined for Fedora. For other changes see ChangeLog. * Mon Jan 28 2008 Petr Stehlik The right icon added. Desktop file updated. Build system root changed. New release. Version increased. Other changes in NEWS file. * Mon Jul 09 2007 Petr Stehlik New release. Version increased. Other changes in NEWS file. * Tue Oct 11 2006 David Bolt 0.9.4beta Added an aranym.desktop file for inclusion in desktop menus. Temporarily uses emulator.png as the menu icon. Added bits to spec file to try and build packages for (open)SUSE, Mandriva and Fedora Core distributions without any changes. * Fri Sep 22 2006 Petr Stehlik New release. Version increased. Other changes in NEWS file. Thanks to David Bolt this spec file is nicely updated - does not fail on 64bit anymore. Thanks, David! * Mon Feb 20 2006 Petr Stehlik URL changed to aranym.org. Version increased. Other changes in NEWS file. * Sun Apr 17 2005 Petr Stehlik Files list fixed. * Thu Apr 14 2005 Petr Stehlik Version increased. NFJPEG enabled. * Tue Feb 22 2005 Petr Stehlik Version increased. aranymrc.example removed. * Sun Feb 20 2005 Petr Stehlik Version increased. LILO enabled in the MMU version. * Sun Nov 07 2004 Petr Stehlik Version increased. * Tue Jul 06 2004 Petr Stehlik Version increased. * Mon Jul 05 2004 Petr Stehlik Version increased. tools/createdisk/ removed. tools/arabridge added. For other changes see the NEWS file. * Sun Feb 15 2004 Petr Stehlik Version increased. For other changes see the NEWS file. * Sun Feb 08 2004 Petr Stehlik Version increased. For other changes see the NEWS file. * Wed Jan 07 2004 Petr Stehlik Version increased. For other changes see the NEWS file. * Sat Jan 03 2004 Petr Stehlik font8.bmp removed. * Sat Oct 04 2003 Petr Stehlik Version increased. NFCDROM.BOS added. * Fri Apr 11 2003 Petr Stehlik Man dir fixed. Debug info disabled. * Mon Apr 08 2003 Petr Stehlik Various fixes for the 0.8.0. And full 68040 PMMU build added as aranym-mmu. Also manual page added. * Mon Mar 24 2003 Petr Stehlik HostFS and network drivers added. ARATAPIF installed setuid root. Ethernet enabled. * Sun Mar 23 2003 Petr Stehlik Version increased for the new release. See the NEWS file for details. * Fri Mar 07 2003 Petr Stehlik Fixed paths to share/aranym folder. * Wed Jan 29 2003 Petr Stehlik New release. Updated list of provided files. * Tue Oct 22 2002 Petr Stehlik aranym-jit (JIT compiler for m68k CPU) generated. * Sun Oct 20 2002 Petr Stehlik EmuTOS image file renamed back. * Sat Oct 12 2002 Petr Stehlik EmuTOS image file renamed. Updated for new release. * Sun Jul 21 2002 Petr Stehlik SDL GUI font and EmuTOS image files added. * Sat Jul 20 2002 Petr Stehlik Version increased. * Thu Jun 06 2002 Petr Stehlik Install path changed from /usr/local to /usr * Mon Apr 22 2002 Petr Stehlik Sound driver added * Sun Apr 14 2002 Petr Stehlik First working version aranym-1.1.0/appimage/0000775000175000017500000000000013454637621012764 5ustar joyjoyaranym-1.1.0/appimage/functions.sh0000664000175000017500000003056713454637621015343 0ustar joyjoy# This file is supposed to be sourced by each Recipe # that wants to use the functions contained herein # like so: # wget -q https://github.com/AppImage/AppImages/raw/master/functions.sh -O ./functions.sh # . ./functions.sh # RECIPE=$(realpath "$0") # Options for apt-get to use local files rather than the system ones OPTIONS="-o Debug::NoLocking=1 -o APT::Cache-Limit=125829120 -o Dir::Etc::sourcelist=./sources.list -o Dir::State=./tmp -o Dir::Cache=./tmp -o Dir::State::status=./status -o Dir::Etc::sourceparts=- -o APT::Get::List-Cleanup=0 -o APT::Get::AllowUnauthenticated=1 -o Debug::pkgProblemResolver=true -o Debug::pkgDepCache::AutoInstall=true -o APT::Install-Recommends=0 -o APT::Install-Suggests=0 " # Detect system architecture to know which binaries of AppImage tools # should be downloaded and used. case "$(uname -i)" in x86_64|amd64) # echo "x86-64 system architecture" SYSTEM_ARCH="x86_64";; i?86) # echo "x86 system architecture" SYSTEM_ARCH="i686";; # arm*) # echo "ARM system architecture" # SYSTEM_ARCH="";; unknown) # uname -i not answer on debian, then: case "$(uname -m)" in x86_64|amd64) # echo "x86-64 system architecture" SYSTEM_ARCH="x86_64";; i?86) # echo "x86 system architecture" SYSTEM_ARCH="i686";; esac ;; *) echo "Unsupported system architecture" exit 1;; esac # Either get the file from remote or from a static place. # critical for builds without network access like in Open Build Service cat_file_from_url() { cat_excludelist="wget -q $1 -O -" [ -e "$STATIC_FILES/${1##*/}" ] && cat_excludelist="cat $STATIC_FILES/${1##*/}" $cat_excludelist } git_pull_rebase_helper() { git reset --hard HEAD git pull } # Patch /usr to ././ in ./usr # to make the contents of usr/ relocateable # (this requires us to cd ./usr before running the application; AppRun does that) patch_usr() { find usr/ -type f -executable -exec sed -i -e "s|/usr|././|g" {} \; } # Download AppRun and make it executable get_apprun() { TARGET_ARCH=${ARCH:-$SYSTEM_ARCH} if test -f "$STATIC_FILES/AppRun-${TARGET_ARCH}"; then cp -a $STATIC_FILES/AppRun-${TARGET_ARCH} AppRun else wget -c https://github.com/AppImage/AppImageKit/releases/download/continuous/AppRun-${TARGET_ARCH} -O AppRun fi chmod a+x AppRun } # Copy the library dependencies of all exectuable files in the current directory # (it can be beneficial to run this multiple times) copy_deps() { PWD=$(readlink -f .) FILES=$(find . -type f -executable -or -name *.so.* -or -name *.so | sort | uniq ) for FILE in $FILES ; do ldd "${FILE}" | grep "=>" | awk '{print $3}' | xargs -I '{}' echo '{}' >> DEPSFILE done DEPS=$(cat DEPSFILE | sort | uniq) for FILE in $DEPS ; do if [ -e $FILE ] && [[ $(readlink -f $FILE)/ != $PWD/* ]] ; then cp -v --parents -rfL $FILE ./ || true fi done rm -f DEPSFILE } # Move ./lib/ tree to ./usr/lib/ move_lib() { mkdir -p ./usr/lib ./lib && find ./lib/ -exec cp -v --parents -rfL {} ./usr/ \; && rm -rf ./lib mkdir -p ./usr/lib ./lib64 && find ./lib64/ -exec cp -v --parents -rfL {} ./usr/ \; && rm -rf ./lib64 find ./usr/lib -name "*.so*" | xargs --no-run-if-empty chmod a+x find ./usr/lib64 -name "*.so*" | xargs --no-run-if-empty chmod a+x } # Delete blacklisted files delete_blacklisted() { BLACKLISTED_FILES=$(cat_file_from_url https://github.com/AppImage/AppImages/raw/master/excludelist | sed 's|#.*||g') echo $BLACKLISTED_FILES for FILE in $BLACKLISTED_FILES ; do FILES="$(find . -name "${FILE}" -not -path "./usr/optional/*")" for FOUND in $FILES ; do rm -vf "$FOUND" "$(readlink -f "$FOUND")" done done # Do not bundle developer stuff rm -rf usr/include || true rm -rf usr/lib/cmake || true rm -rf usr/lib/pkgconfig || true find . -name '*.la' | xargs -i rm {} } # Echo highest glibc version needed by the executable files in the current directory glibc_needed() { find . -name *.so -or -name *.so.* -or -type f -executable -exec readelf -s '{}' 2>/dev/null \; | sed -n 's/.*@GLIBC_//p'| awk '{print $1}' | sort --version-sort | tail -n 1 } # Add desktop integration # Usage: get_desktopintegration name_of_desktop_file_and_exectuable get_desktopintegration() { REALBIN=$(grep -o "^Exec=.*" "$1.desktop" | sed -e 's|Exec=||g' | cut -d " " -f 1 | head -n 1) cat_file_from_url https://raw.githubusercontent.com/AppImage/AppImageKit/master/desktopintegration > "./usr/bin/$REALBIN.wrapper" chmod a+x "./usr/bin/$REALBIN.wrapper" sed -i -e "s|^Exec=$REALBIN|Exec=$REALBIN.wrapper|g" "$1.desktop" } # Generate AppImage; this expects $ARCH, $APP and $VERSION to be set generate_appimage() { # Download AppImageAssistant URL="https://github.com/AppImage/AppImageKit/releases/download/6/AppImageAssistant_6-${SYSTEM_ARCH}.AppImage" wget -c "$URL" -O AppImageAssistant chmod a+x ./AppImageAssistant # if [[ "$RECIPE" == *ecipe ]] ; then # echo "#!/bin/bash -ex" > "./${APP}.AppDir/Recipe" # echo "# This recipe was used to generate this AppImage." >> "./${APP}.AppDir/Recipe" # echo "# See http://appimage.org for more information." >> "./${APP}.AppDir/Recipe" # echo "" >> "./${APP}.AppDir/Recipe" # cat $RECIPE >> "./${APP}.AppDir/Recipe" # fi # # Detect the architecture of what we are packaging. # The main binary could be a script, so let's use a .so library BIN=$(find . -name *.so* -type f | head -n 1) INFO=$(file "$BIN") if [ -z $ARCH ] ; then if [[ $INFO == *"x86-64"* ]] ; then ARCH=x86_64 elif [[ $INFO == *"i686"* ]] ; then ARCH=i686 elif [[ $INFO == *"armv6l"* ]] ; then ARCH=armhf else echo "Could not automatically detect the architecture." echo "Please set the \$ARCH environment variable." exit 1 fi fi mkdir -p ../out || true GLIBC_NEEDED=${GLIBC_NEEDED:=$(glibc_needed)} rm "../out/${APP}-${VERSION}.glibc${GLIBC_NEEDED}-${ARCH}.AppImage" 2>/dev/null || true ./AppImageAssistant "./${APP}.AppDir/" "../out/${APP}-${VERSION}.glibc${GLIBC_NEEDED}-${ARCH}.AppImage" } # Generate AppImage type 2 generate_type2_appimage() { # Get the ID of the last successful build on Travis CI # ID=$(wget -q https://api.travis-ci.org/repos/AppImage/appimagetool/builds -O - | head -n 1 | sed -e 's|}|\n|g' | grep '"result":0' | head -n 1 | sed -e 's|,|\n|g' | grep '"id"' | cut -d ":" -f 2) # Get the transfer.sh URL from the logfile of the last successful build on Travis CI # Only Travis knows why build ID and job ID don't match and why the above doesn't give both... # URL=$(wget -q "https://s3.amazonaws.com/archive.travis-ci.org/jobs/$((ID+1))/log.txt" -O - | grep "https://transfer.sh/.*/appimagetool" | tail -n 1 | sed -e 's|\r||g') # if [ -z "$URL" ] ; then # URL=$(wget -q "https://s3.amazonaws.com/archive.travis-ci.org/jobs/$((ID+2))/log.txt" -O - | grep "https://transfer.sh/.*/appimagetool" | tail -n 1 | sed -e 's|\r||g') # fi URL="https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-${SYSTEM_ARCH}.AppImage" wget -c "$URL" -O appimagetool chmod a+x ./appimagetool test -f appimagetool || exit 1 set +x GLIBC_NEEDED=${GLIBC_NEEDED:=$(glibc_needed)} TARGET_ARCH=${ARCH:-$SYSTEM_ARCH} if test -z "$APPIMAGE"; then APPIMAGE=`echo $APP | tr ' ' '_'`${VERSION}.glibc$GLIBC_NEEDED-${TARGET_ARCH}.AppImage fi if ( [ ! -z "$KEY" ] ) && ( ! -z "$TRAVIS" ) ; then wget https://github.com/AppImage/AppImageKit/files/584665/data.zip -O data.tar.gz.gpg ( set +x ; echo $KEY | gpg2 --batch --passphrase-fd 0 --no-tty --skip-verify --output data.tar.gz --decrypt data.tar.gz.gpg ) tar xf data.tar.gz sudo chown -R $USER .gnu* mv $HOME/.gnu* $HOME/.gnu_old ; mv .gnu* $HOME/ ./appimagetool -n -s --bintray-user $BINTRAY_REPO_OWNER --bintray-repo $BINTRAY_REPO -v "./${APP}.AppDir/" "$APPIMAGE" || exit 1 else ./appimagetool -n --bintray-user $BINTRAY_REPO_OWNER --bintray-repo $BINTRAY_REPO -v "./${APP}.AppDir/" "$APPIMAGE" || exit 1 fi set -x OUT=${OUT:-../out} mkdir -p "${OUT}" || true mv *.AppImage* "${OUT}" set +x } # Generate status file for use by apt-get; assuming that the recipe uses no newer # ingredients than what would require more recent dependencies than what we assume # to be part of the base system generate_status() { mkdir -p ./tmp/archives/ mkdir -p ./tmp/lists/partial touch tmp/pkgcache.bin tmp/srcpkgcache.bin wget -q -c "https://github.com/AppImage/AppImages/raw/master/excludedeblist" rm status 2>/dev/null || true for PACKAGE in $(cat excludedeblist | cut -d "#" -f 1) ; do printf "Package: $PACKAGE\nStatus: install ok installed\nArchitecture: all\nVersion: 9:999.999.999\n\n" >> status done } # Find the desktop file and copy it to the AppDir get_desktop() { find usr/share/applications -name "${LOWERAPP}.desktop" -exec cp {} . \; || true } fix_desktop() { # fix trailing semicolons for key in Actions Categories Implements Keywords MimeType NotShowIn OnlyShowIn; do sed -i '/'"$key"'.*[^;]$/s/$/;/' $1 done } # Find the icon file and copy it to the AppDir get_icon() { find ./usr/share/pixmaps/$LOWERAPP.png -exec cp {} . \; 2>/dev/null || true find ./usr/share/icons -path *32* -name $LOWERAPP.png -exec cp {} . \; 2>/dev/null || true find ./usr/share/icons -path *48* -name $LOWERAPP.png -exec cp {} . \; 2>/dev/null || true find ./usr/share/icons -path *64* -name $LOWERAPP.png -exec cp {} . \; 2>/dev/null || true find ./usr/share/icons -path *128* -name $LOWERAPP.png -exec cp {} . \; 2>/dev/null || true find ./usr/share/icons -path *256* -name $LOWERAPP.png -exec cp {} . \; 2>/dev/null || true find ./usr/share/icons -path *512* -name $LOWERAPP.png -exec cp {} . \; 2>/dev/null || true ls -lh $LOWERAPP.png || true } # Find out the version get_version() { THEDEB=$(find ../*.deb -name $LOWERAPP"_*" | head -n 1) if [ -z "$THEDEB" ] ; then echo "Version could not be determined from the .deb; you need to determine it manually" fi VERSION=$(echo $THEDEB | cut -d "~" -f 1 | cut -d "_" -f 2 | cut -d "-" -f 1 | sed -e 's|1%3a||g' | sed -e 's|+dfsg||g' ) echo ${VERSION} } # transfer.sh transfer() { if [ $# -eq 0 ]; then echo "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"; return 1; fi tmpfile=$( mktemp -t transferXXX ); if tty -s; then basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9._-]/-/g'); curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile" >> $tmpfile; else curl --progress-bar --upload-file "-" "https://transfer.sh/$1" >> $tmpfile ; fi; cat $tmpfile; rm -f $tmpfile; } # Patch binary files; fill with padding if replacement is shorter than original # http://everydaywithlinux.blogspot.de/2012/11/patch-strings-in-binary-files-with-sed.html # Example: patch_strings_in_file foo "/usr/local/lib/foo" "/usr/lib/foo" patch_strings_in_file() { local FILE="$1" local PATTERN="$2" local REPLACEMENT="$3" # Find all unique strings in FILE that contain the pattern STRINGS=$(strings ${FILE} | grep ${PATTERN} | sort -u -r) if [ "${STRINGS}" != "" ] ; then echo "File '${FILE}' contain strings with '${PATTERN}' in them:" for OLD_STRING in ${STRINGS} ; do # Create the new string with a simple bash-replacement NEW_STRING=${OLD_STRING//${PATTERN}/${REPLACEMENT}} # Create null terminated ASCII HEX representations of the strings OLD_STRING_HEX="$(echo -n ${OLD_STRING} | xxd -g 0 -u -ps -c 256)00" NEW_STRING_HEX="$(echo -n ${NEW_STRING} | xxd -g 0 -u -ps -c 256)00" if [ ${#NEW_STRING_HEX} -le ${#OLD_STRING_HEX} ] ; then # Pad the replacement string with null terminations so the # length matches the original string while [ ${#NEW_STRING_HEX} -lt ${#OLD_STRING_HEX} ] ; do NEW_STRING_HEX="${NEW_STRING_HEX}00" done # Now, replace every occurrence of OLD_STRING with NEW_STRING echo -n "Replacing ${OLD_STRING} with ${NEW_STRING}... " hexdump -ve '1/1 "%.2X"' ${FILE} | \ sed "s/${OLD_STRING_HEX}/${NEW_STRING_HEX}/g" | \ xxd -r -p > ${FILE}.tmp chmod --reference ${FILE} ${FILE}.tmp mv ${FILE}.tmp ${FILE} echo "Done!" else echo "New string '${NEW_STRING}' is longer than old" \ "string '${OLD_STRING}'. Skipping." fi done fi } aranym-1.1.0/appimage/excludelist0000664000175000017500000001505113454637621015236 0ustar joyjoy# This file lists libraries that we will assume to be present on the host system and hence # should NOT be bundled inside AppImages. This is a working document; expect it to change # over time. File format: one filename per line. Each entry should have a justification comment. ld-linux.so.2 ld-linux-x86-64.so.2 libanl.so.1 libBrokenLocale.so.1 libcidn.so.1 libcrypt.so.1 libc.so.6 libdl.so.2 libm.so.6 libmvec.so.1 libnsl.so.1 libnss_compat.so.2 libnss_db.so.2 libnss_dns.so.2 libnss_files.so.2 libnss_hesiod.so.2 libnss_nisplus.so.2 libnss_nis.so.2 libpthread.so.0 libresolv.so.2 librt.so.1 libthread_db.so.1 libutil.so.1 # These files are all part of the GNU C Library which should never be bundled. # List was generated from a fresh build of glibc 2.25. libstdc++.so.6 # Workaround for: # usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found libGL.so.1 # Part of the video driver (OpenGL); present on any regular # desktop system, may also be provided by proprietary drivers. # Known to cause issues if it's bundled. libdrm.so.2 # Workaround for: # Antergos Linux release 2015.11 (ISO-Rolling) # /usr/lib/libdrm_amdgpu.so.1: error: symbol lookup error: undefined symbol: drmGetNodeTypeFromFd (fatal) # libGL error: unable to load driver: swrast_dri.so # libGL error: failed to load driver: swrast # Unrecognized OpenGL version libxcb.so.1 libX11-xcb.so.1 # Workaround for: # Fedora 23 # symbol lookup error: /lib64/libxcb-dri3.so.0: undefined symbol: xcb_send_fd # Uncertain if this is required to be bundled for some distributions - if so we need to write a version check script and use LD_PRELOAD to load the system version if it is newer # Fedora 25: # undefined symbol: xcb_send_request_with_fds # https://github.com/probonopd/AppImages/issues/128 libX11.so.6 libXau.so.6 libXdmcp.so.6 libXext.so.6 libXt.so.6 libXtst.so.6 libXv.so.1 libXvMC.so.1 libXvMCW.so.1 libXvnv.so.1 libXmu.so.6 libXmuu.so.1 libXiterm.so.1 libXinerama.so.1 libXrender.so.1 libXRes.so.1 libXTrap.so.6 libXaw6.so.6 libXaw7.so.7 libXdamage.so.1 libXevie.so.1 libXfixes.so.3 libXfont.so.1 libXfont2.so.2 libXfontcache.so.1 libXft.so.6 libXi.so.6 libXp.so.6 libXrandr.so.2 libXxf86dga.so.1 libXxf86misc.so.1 libXxf86vm.so.1 # Workaround for: # Fedora 23 # symbol lookup error: ./lib/libX11.so.6: undefined symbol: xcb_wait_for_reply64 # Uncertain if this is required to be bundled for some distributions - if so we need to write a version check script and use LD_PRELOAD to load the system version if it is newer libgio-2.0.so.0 # Workaround for: # On Ubuntu, "symbol lookup error: /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/liboverlay-scrollbar.so: undefined symbol: g_settings_new" # libgdk-x11-2.0.so.0 # Missing on openSUSE-Tumbleweed-KDE-Live-x86_64-Snapshot20170601-Media.iso # libgtk-x11-2.0.so.0 # Missing on openSUSE-Tumbleweed-KDE-Live-x86_64-Snapshot20170601-Media.iso libasound.so.2 # Workaround for: # No sound, e.g., in VLC.AppImage (does not find sound cards) libgdk_pixbuf-2.0.so.0 # Workaround for: # On Ubuntu, get (inkscape:25621): GdkPixbuf-WARNING **: Error loading XPM image loader: Image type 'xpm' is not supported libfontconfig.so.1 # Workaround for: # Application stalls when loading fonts during application launch; e.g., KiCad on ubuntu-mate # Note, after discussion we do not exlude this, but we can use a dummy library that just does nothing # libselinux.so.1 # Workaround for: # sed: error while loading shared libraries: libpcre.so.3: cannot open shared object file: No such file or directory # Some distributions, such as Arch Linux, do not come with libselinux.so.1 by default. # The solution is to bundle a dummy mock library: # echo "extern int is_selinux_enabled(void){return 0;}" >> selinux-mock.c # gcc -s -shared -o libselinux.so.1 -Wl,-soname,libselinux.so.1 selinux-mock.c # strip libselinux.so.1 # More information: https://github.com/AppImage/AppImages/issues/83 # The following are assumed to be part of the base system # Removing these has worked e.g., for Krita. Feel free to report if # you think that some of these should go into AppImages and why. libcom_err.so.2 libcrypt.so.1 libexpat.so.1 libgcc_s.so.1 libglib-2.0.so.0 libgpg-error.so.0 # libgssapi_krb5.so.2 # Disputed, seemingly needed by Arch Linux since Kerberos is named differently there # libgssapi.so.3 # Seemingly needed when running Ubuntu 14.04 binaries on Fedora 23 # libhcrypto.so.4 # Missing on openSUSE LEAP 42.0 # libheimbase.so.1 # Seemingly needed when running Ubuntu 14.04 binaries on Fedora 23 # libheimntlm.so.0 # Seemingly needed when running Ubuntu 14.04 binaries on Fedora 23 # libhx509.so.5 # Missing on openSUSE LEAP 42.0 libICE.so.6 libidn.so.11 libk5crypto.so.3 libkeyutils.so.1 # libkrb5.so.26 # Disputed, seemingly needed by Arch Linux since Kerberos is named differently there. Missing on openSUSE LEAP 42.0 # libkrb5.so.3 # Disputed, seemingly needed by Arch Linux since Kerberos is named differently there # libkrb5support.so.0 # Disputed, seemingly needed by Arch Linux since Kerberos is named differently there libp11-kit.so.0 # libpcre.so.3 # Missing on Fedora 24, SLED 12 SP1, and openSUSE Leap 42.2 # libroken.so.18 # Mission on openSUSE LEAP 42.0 # libsasl2.so.2 # Seemingly needed when running Ubuntu 14.04 binaries on Fedora 23 libSM.so.6 libusb-1.0.so.0 libuuid.so.1 # libwind.so.0 # Missing on openSUSE LEAP 42.0 libz.so.1 # Potentially dangerous libraries libgobject-2.0.so.0 # Workaround for: # Rectangles instead of fonts # https://github.com/probonopd/AppImages/issues/240 libpangoft2-1.0.so.0 libpangocairo-1.0.so.0 libpango-1.0.so.0 # Workaround for: # e.g., Spotify # relocation error: /lib/x86_64-linux-gnu/libgcrypt.so.20: # symbol gpgrt_lock_lock, version GPG_ERROR_1.0 not defined # in file libgpg-error.so.0 with link time reference libgpg-error.so.0 # Unsolved issue: # https://github.com/probonopd/linuxdeployqt/issues/35 # Error initializing NSS with a persistent database (sql:/home/me/.pki/nssdb): libsoftokn3.so: cannot open shared object file: No such file or directory # Error initializing NSS without a persistent database: NSS error code: -5925 # nss_error=-5925, os_error=0 # libnss3.so should not be removed from the bundles, as this causes other issues, e.g., # https://github.com/probonopd/linuxdeployqt/issues/35#issuecomment-256213517 # and https://github.com/probonopd/AppImages/pull/114 # libnss3.so # The following cannot be excluded, see # https://github.com/probonopd/AppImages/commit/6c7473d8cdaaa2572248dcc53d7f617a577ade6b # http://stackoverflow.com/questions/32644157/forcing-a-binary-to-use-a-specific-newer-version-of-a-shared-library-so # libssl.so.1 # libssl.so.1.0.0 # libcrypto.so.1 # libcrypto.so.1.0.0 aranym-1.1.0/appimage/desktopintegration0000664000175000017500000002401013454637621016621 0ustar joyjoy#!/bin/bash # The purpose of this script is to provide lightweight desktop integration # into the host system without special help from the host system. # If you want to use it, then place this in usr/bin/$APPNAME.wrapper # and set it as the Exec= line of the .desktop file in the AppImage. # # For example, to install the appropriate icons for Scribus, # put them into the AppDir at the following locations: # # ./usr/share/icons/default/128x128/apps/scribus.png # ./usr/share/icons/default/128x128/mimetypes/application-vnd.scribus.png # # Note that the filename application-vnd.scribus.png is derived from # and must be match MimeType=application/vnd.scribus; in scribus.desktop # (with "/" characters replaced by "-"). # # Then, change Exec=scribus to Exec=scribus.wrapper and place the script # below in usr/bin/scribus.wrapper and make it executable. # When you run AppRun, then AppRun runs the wrapper script below # which in turn will run the main application. # # TODO: # Handle multiple versions of the same AppImage? # Handle removed AppImages? Currently we are just setting TryExec= # See http://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#DELETE # Possibly move this to the C runtime that is part of every AppImage? # Exit on errors set -e # Be verbose if $DEBUG=1 is set if [ ! -z "$DEBUG" ] ; then env set -x fi THIS="$0" args=("$@") # http://stackoverflow.com/questions/3190818/ NUMBER_OF_ARGS="$#" # Please do not change $VENDORPREFIX as it will allow for desktop files # belonging to AppImages to be recognized by future AppImageKit components # such as desktop integration daemons VENDORPREFIX=appimagekit find-up () { path="$(dirname "$(readlink -f "${THIS}")")" while [[ "$path" != "" && ! -e "$path/$1" ]]; do path=${path%/*} done echo -n "$path" # Needs to return something } if [ -z $APPDIR ] ; then # Find the AppDir. It is the directory that contains AppRun. # This assumes that this script resides inside the AppDir or a subdirectory. # If this script is run inside an AppImage, then the AppImage runtime # likely has already set $APPDIR APPDIR=$(find-up "AppRun") fi FILENAME="$(readlink -f "${THIS}")" DIRNAME=$(dirname $FILENAME) DESKTOPFILE=$(find "$APPDIR" -maxdepth 1 -name "*.desktop" | head -n 1) DESKTOPFILE_NAME=$(basename "${DESKTOPFILE}") APP_FULL=$(sed -n -e 's/^Name=//p' "${DESKTOPFILE}" | head -n 1) APP=$(echo "$APP_FULL" | tr -c -d '[:alnum:]') if [ -z "$APP" ] || [ -z "$APP_FULL" ] ; then APP=$(echo "$DESKTOPFILE_NAME" | sed -e 's/.desktop//g') APP_FULL="$APP" fi RETURN="yes" if [[ "$FILENAME" != *.wrapper ]] ; then echo "${THIS} is not named correctly. It should be named \$Exec.wrapper" exit 0 fi BIN=$(echo "$FILENAME" | sed -e 's|.wrapper||g') if [[ ! -f "$BIN" ]] ; then echo "$BIN not found" exit 0 fi trap atexit EXIT # Note that the following handles 0, 1 or more arguments (file paths) # which can include blanks but uses a bashism; can the same be achieved # in POSIX-shell? (FIXME) # http://stackoverflow.com/questions/3190818 atexit() { if [ -z "$SKIP" ] ; then if [ $NUMBER_OF_ARGS -eq 0 ] ; then exec "${BIN}" else exec "${BIN}" "${args[@]}" fi fi } error() { if [ -x /usr/bin/zenity ] ; then LD_LIBRARY_PATH="" zenity --error --text "${1}" 2>/dev/null elif [ -x /usr/bin/kdialog ] ; then LD_LIBRARY_PATH="" kdialog --error "${1}" 2>/dev/null elif [ -x /usr/bin/Xdialog ] ; then LD_LIBRARY_PATH="" Xdialog --msgbox "${1}" 2>/dev/null else echo "${1}" fi exit 1 } yesno() { TITLE="$1" TEXT="$2" if [ -x /usr/bin/zenity ] ; then LD_LIBRARY_PATH="" zenity --question --title="$TITLE" --text="$TEXT" 2>/dev/null && RETURN="yes" || RETURN="no" elif [ -x /usr/bin/kdialog ] ; then LD_LIBRARY_PATH="" kdialog --title "$TITLE" --yesno "$TEXT" && RETURN="yes" || RETURN="no" elif [ -x /usr/bin/Xdialog ] ; then LD_LIBRARY_PATH="" Xdialog --title "$TITLE" --clear --yesno "$TEXT" 10 80 && RETURN="yes" || RETURN="no" else echo "zenity, kdialog, Xdialog missing. Skipping ${THIS}." exit 0 fi } check_prevent() { FILE=$1 if [ -e "$FILE" ] ; then exit 0 fi } check_dep() { DEP=$1 if [ -z $(which $DEP) ] ; then echo "$DEP is missing. Skipping ${THIS}." exit 0 fi } # Determine where the desktop file should be installed if [[ $EUID -ne 0 ]]; then DESTINATION_DIR_DESKTOP="$HOME/.local/share/applications" STAMP_DIR="$HOME/.local/share/$VENDORPREFIX" SYSTEM_WIDE="" else # TODO: Check $XDG_DATA_DIRS DESTINATION_DIR_DESKTOP="/usr/local/share/applications" STAMP_DIR="/etc/$VENDORPREFIX" SYSTEM_WIDE="--mode system" # for xdg-mime and xdg-icon-resource fi # Remove desktop integration for this AppImage if [ "x$1" = "x--remove-appimage-desktop-integration" ] ; then SKIP="yes" rm -f "$STAMP_DIR/${APP}_no_desktopintegration" "$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME" check_dep xdg-desktop-menu xdg-desktop-menu forceupdate exit 0 fi # Exit immediately if one of these files is present # (e.g., because the desktop environment wants to handle desktop integration itself) check_prevent "$HOME/.local/share/$VENDORPREFIX/no_desktopintegration" check_prevent "/usr/share/$VENDORPREFIX/no_desktopintegration" check_prevent "/etc/$VENDORPREFIX/no_desktopintegration" # Exit immediately if appimaged is running pidof appimaged >/dev/null 2>&1 && exit 0 # Exit immediately if $DESKTOPINTEGRATION is not empty if [ ! -z "$DESKTOPINTEGRATION" ] ; then exit 0 fi # Check whether dependencies are present in base system (we do not bundle these) # http://cgit.freedesktop.org/xdg/desktop-file-utils/ check_dep desktop-file-validate check_dep update-desktop-database check_dep desktop-file-install check_dep xdg-icon-resource check_dep xdg-mime check_dep xdg-desktop-menu # Exit immediately if one of these files is present (disabled per app) check_prevent "$HOME/.local/share/$VENDORPREFIX/${APP}_no_desktopintegration" check_prevent "/usr/share/$VENDORPREFIX/${APP}_no_desktopintegration" check_prevent "/etc/$VENDORPREFIX/${APP}_no_desktopintegration" if [ ! -f "$DESKTOPFILE" ] ; then echo "Desktop file is missing. Please run ${THIS} from within an AppImage." exit 0 fi if [ -z "$APPIMAGE" ] ; then APPIMAGE="$APPDIR/AppRun" # Not running from within an AppImage; hence using the AppRun for Exec= fi ICONFILE="$APPDIR/.DirIcon" # $XDG_DATA_DIRS contains the default paths /usr/local/share:/usr/share # desktop file has to be installed in an applications subdirectory # of one of the $XDG_DATA_DIRS components if [ -z "$XDG_DATA_DIRS" ] ; then echo "\$XDG_DATA_DIRS is missing. Please run ${THIS} from within an AppImage." exit 0 fi # Check if the desktop file is already there # and if so, whether it points to the same AppImage if [ -e "$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME" ] ; then # echo "$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME already there" EXEC=$(grep "^Exec=" "$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME" | head -n 1 | cut -d " " -f 1) # echo $EXEC if [ "Exec=\"$APPIMAGE\"" == "$EXEC" ] ; then exit 0 fi fi # We ask the user only if we have found no reason to skip until here if [ -z "$SKIP" ] ; then yesno "Install" "Would you like to integrate $APPIMAGE with your system?\n\nThis will add it to your applications menu and install icons.\nIf you don't do this you can still launch the application by double-clicking on the AppImage." fi if [ "$RETURN" = "no" ] ; then yesno "Disable question?" "Should this question be permanently disabled for $APP?\n\nTo re-enable this question you have to delete\n\"$STAMP_DIR/${APP}_no_desktopintegration\"" if [ "$RETURN" = "yes" ] ; then mkdir -p "$STAMP_DIR" touch "$STAMP_DIR/${APP}_no_desktopintegration" fi exit 0 fi # If the user has agreed, rewrite and install the desktop file, and the MIME information if [ -z "$SKIP" ] ; then # desktop-file-install is supposed to install .desktop files to the user's # applications directory when run as a non-root user, # and to /usr/share/applications if run as root # but that does not really work for me... # # For Exec we must use quotes # For TryExec quotes is not supported, so, space must be replaced to \s # https://askubuntu.com/questions/175404/how-to-add-space-to-exec-path-in-a-thumbnailer-descrption/175567 RESOURCE_NAME=$(echo "$VENDORPREFIX-$DESKTOPFILE_NAME" | sed -e 's/.desktop//g') desktop-file-install --rebuild-mime-info-cache \ --vendor=$VENDORPREFIX --set-key=Exec --set-value="\"${APPIMAGE}\" %U" \ --set-key=X-AppImage-Comment --set-value="Generated by ${THIS}" \ --set-icon="$RESOURCE_NAME" --set-key=TryExec --set-value=${APPIMAGE// /\\s} "$DESKTOPFILE" \ --dir "$DESTINATION_DIR_DESKTOP" chmod a+x "$DESTINATION_DIR_DESKTOP/"* # echo $RESOURCE_NAME # delete "Actions" entry and add an "Uninstall" action sed -i -e '/^Actions=/d' "$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME" cat >> "$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME" << EOF Actions=Uninstall; [Uninstall] Name=Remove desktop integration for $APP_FULL Exec="$APPIMAGE" --remove-appimage-desktop-integration EOF # Install the icon files for the application; TODO: scalable ICONS=$(find "${APPDIR}/usr/share/icons/" -iwholename "*/apps/${APP}.png" 2>/dev/null || true) for ICON in $ICONS ; do ICON_SIZE=$(echo "${ICON}" | rev | cut -d "/" -f 3 | rev | cut -d "x" -f 1) xdg-icon-resource install --context apps --size ${ICON_SIZE} "${ICON}" "${RESOURCE_NAME}" done # Install mime type find "${APPDIR}/usr/share/mime/" -type f -name *xml -exec xdg-mime install $SYSTEM_WIDE --novendor {} \; 2>/dev/null || true # Install the icon files for the mime type; TODO: scalable ICONS=$(find "${APPDIR}/usr/share/icons/" -iwholename "*/mimetypes/*.png" 2>/dev/null || true) for ICON in $ICONS ; do ICON_SIZE=$(echo "${ICON}" | rev | cut -d "/" -f 3 | rev | cut -d "x" -f 1) xdg-icon-resource install --context mimetypes --size ${ICON_SIZE} "${ICON}" $(basename $ICON | sed -e 's/.png//g') done xdg-desktop-menu forceupdate gtk-update-icon-cache # for MIME fi aranym-1.1.0/appimage/build.sh0000775000175000017500000000326013454637621014423 0ustar joyjoy top_srcdir=${top_srcdir:-`cd ..; pwd`} GLIBC_NEEDED=2.11 STATIC_FILES=${top_srcdir}/appimage BINTRAY_USER="${BINTRAY_USER:-aranym}" BINTRAY_REPO_OWNER="${BINTRAY_REPO_OWNER:-$BINTRAY_USER}" # owner and user not always the same BINTRAY_REPO_NAME="${BINTRAY_REPO_NAME:-aranym-files}" BINTRAY_REPO="${BINTRAY_REPO_OWNER}/${BINTRAY_REPO_NAME}" case $CPU_TYPE in x86_64) ARCH=x86_64 ;; i[3456]86) ARCH=i686 ;; arm*) ARCH=armhf ;; *) echo "unsupported architecture $CPU_TYPE for AppImage" >&2; exit 1 ;; esac . ${top_srcdir}/appimage/functions.sh for EXE in aranym aranym-mmu aranym-jit do case $EXE in aranym-mmu) APP="ARAnyM-MMU" ;; aranym-jit) APP="ARAnyM-JIT" ;; *) APP="ARAnyM" ;; esac LOWERAPP="$EXE" test -x "$BUILDROOT/usr/bin/$EXE" || continue rm -rf "$APP.AppDir" mkdir -p "$APP.AppDir/usr" cd "./$APP.AppDir/" cp -a "$BUILDROOT/." . rm -f usr/bin/aranym* cp -a "$BUILDROOT/usr/bin/$EXE" usr/bin get_desktop get_icon get_apprun test -x ./AppRun || exit 1 copy_deps delete_blacklisted move_lib patch_usr if test -f usr/bin/aratapif; then sudo chown root "usr/bin/aratapif" sudo chgrp root "usr/bin/aratapif" sudo chmod ug+s "usr/bin/aratapif" fi get_desktopintegration "$LOWERAPP" # Go out of AppImage cd .. APPIMAGE=`echo $APP | tr ' ' '_'` if test -n "$TRAVIS"; then # invoked from travis build; depends on some variables set by .travis/build.sh if $isrelease; then APPIMAGE=${APPIMAGE}-${VERSION}-${CPU_TYPE}.AppImage else APPIMAGE=${APPIMAGE}-${VERSION}-${CPU_TYPE}-${SHORT_ID}.AppImage fi else # invoked from toplevel "make appimage" APPIMAGE=${APPIMAGE}-${VERSION}-${CPU_TYPE}.AppImage fi generate_type2_appimage done aranym-1.1.0/android/0000775000175000017500000000000013454637621012621 5ustar joyjoyaranym-1.1.0/android/icon.png0000664000175000017500000001226613454637621014266 0ustar joyjoyPNG  IHDR00WtEXtSoftwareAdobe ImageReadyqe<XIDATxڬZ չ=]t>0lYѸAC\a70hD .(F[ @dPewhpCJMWW/L}d*t-S1(Ou@SГ>^bÑJ u'orìdqF֬VWmv0; wfߗYLS/ Ɲ xveX oz6]CT_2y](JƥPV-wnF3z@qH LQ${XSZhDȓgF5OG6bo"iV,kҌ:-@֎Pxŕo/=}Uu@bx$er#~cv#iOXܽ`2Zۘ3ayȥ*}O( ?DZԤjD]q^j%g( j"3F-tZ*e%1M6K)_V~n3fL,D^ ?ؑp^ "tvFg6ߝw8O,BR  o>A>?8޼4w'C#7dy31UFSЛLpx\8vp:?"[~U܆~=fנO>67ԟӕ86g_|˫taA}r/ #- ., w.ǗҾh?7K(eAcap80r5HēR$uxs!kG/zxpHW7ޅ 2(|'&MF}R'hyh-HIJ1ldxr<cprkU|igf;X:Pqmw pR@6~W@*êXe#0pP,jyޖ[n<*gQ Z f|Bwp8R}y}pxPs[a"+Y9iIrqzT(e+F[lڸY7w1; 4{ _7 v=% Zp6hU9O;Ǩ]UA`b A†c $!I &< "uعi7e_x⅕+Fs )244VJӍe×%lr&8ɶ~C&EJ HPXy%@4ɂL&lkCCaY~?"n-q<\xc BDd,&niuz6ef,7J_M1x"gq0iZÁv"JXY a9DE`tQ{h'rr$eMqYqHj+D!.JvDKϹ+8Sw.| .Rs OТAzPΥsYݓ"5#,-ſ|ӁW͔>ƧHs&?ocHeaa$}=X/ѥ -?@ a=Vg}*!Ql_mD66&#~U^XYR y,ᰴt*Bo銁V #R>1 mU\CVg3a$uU؆01;aF(ty =eIkɢ$p]Xh>3nLf/EonTҎ! aêg\r&7~}-)^s&V.@2◉-r ]gsc . "t-ޚ&X\C7̤z+Cc&`訉p")k@0|Πǘa }z (G 4Ba硸l0Zx}0É0]խn4^$.4ǼB8 lNO{XqJ ܽ%B?^>:@.z8kO˛5gx6}R6Z=gRxG |PcOJA\*GAWVmyz®)O&@<48L*X{Pm¤A!6x=?<`jNYuU; Op/kV$Z3C<inE h,h&-gIr$|lZ8)p[a9M0} q<LS_H IbZ!<hm%%I,$DR̶]4ۺdљ jc؍?bB^%JLnh8Kvh: ;\<}D^CY7ȧX,m fruIbhly#SjBJΠ CAB̸u\>t3:ï$&փ3_KȓSC H9%bhwaeOn1-i6MGȏZ j~A)v-vGuQH;Z;($yFj+ g]Gh'E69!¡Jb^6|"Uy)&dW 瀯p(-G9,e8<>I?)&{AdDiM7<;}rJ 5K۴a$ů.8 f̣EXčL|_x VDjן KKJ!ctn]ЈcswK>k7z'\m^ ;a1^blZ$$r"e XҰ^ FG2x]k9 ];xv @D,L'2^X'&#CPKZ%(&T}`~*#@D-եOU㈷JmTaI| 6xe(w`ۖ @ۭza0؟})sїH-o =C'hyGVνi~Nu,j>[ObUlެ9jߏ'H Z*C.6lJLZaE!8*^F}Jq-ԯ U<(Y!:8z2p+acdǗ)BpS &cW YL@?CH$l, o͏Bc,6f\r_t˹#9LsAT{731dwg4r@ǰ H+V|$?)ZX+,:b,Z]|t /=0ck0oޑzdhutBr\xZHJnhndc{G>$0IdP>Dp,&chC:|dw>rgГCO jMW " 0eY, ~ 96ԚS,K7@y9^JnX]cOk"q?:&-?f;٩7<\|YlWE|tD1yx!|,ɯJÐQVĘ8yZ/2I* e7fzO;Xsw~XOސ7 ;oE_? k W$v8=yTHDz!@pcYp)֬|ԋ.wzw6B T띡|b?kt|VW@]7F,j)xWknFn6=N[xCߣT3d~+5ޅ62$u5\H lc~"gdr4-hw75<3n|C{y'5kǿV@k9:˦^y O9hi MMHDn3%zʦsQX\\*c|~MWrUGO=\r2Oz<. *wV7i0KbJ$cKN>6t%I?Pcܗq{sr2?Br.bT t/F wӫGaٿ@Qu(1.N P~Q'^۸_,IENDB`aranym-1.1.0/android/BUILDING0000664000175000017500000000544613454637621013752 0ustar joyjoyBuilding on Debian ================== After a fresh install. If you already have setup a development environment, some of the steps may be unneccessary. $ sudo apt-get install openjdk-7-jdk $ sudo apt-get install ant $ sudo apt-get install git-core $ sudo apt-get install g++ $ sudo apt-get install automake $ sudo apt-get install libsdl1.2-dev libsdl-image1.2-dev libusb-1.0-0-dev libmpfr-dev zlib1g-dev lib32z1 Download Android SDK & NDK to your "aranym"-User Home SDK: https://developer.android.com/sdk/index.html NDK: https://developer.android.com/tools/sdk/ndk/index.html $ cd ~/android-sdk-linux/ $ tar xvzf android-sdk_r23.0.2-linux.tgz $ chmod +x android-ndk-r10c-linux-x86_64.bin $ ./android-ndk-r10c-linux-x86_64.bin $ rm -f ndk $ ln -s android-ndk-r10c ndk Note: In version 25.3 and above of the SDK, the ant tools which are needed by the sdl port have been removed. You need to install an older version in that case. The latest which seems to work is 25.2.5, which is available eg. at https://androidsdkoffline.blogspot.de/p/android-sdk-tools.html For the same reason, do *not* use the SDK that comes with Android Studio (usually installed in ~/Android/Sdk). Now run "android" from GUI to install * SDK Platform Tools * SDK Tools * SDK Build Tools * Target android 21 NOTE: If you have trouble starting the NDK*.bin on a 64 Bit environment you may fix this by $ sudo dpkg --add-architecture i386 $ sudo apt-get update $ sudo apt-get install libstdc++6:i386 or unpack the package with 7z (apt-get install p7zip-full) Add to .profile export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre/ export ANDROID_HOME=~/android-sdk-linux export PATH=$ANDROID_HOME/tools:~/android-ndk-r10c:$HOME/android-sdk-linux:$PATH Logout and login again $ git clone https://github.com/pelya/commandergenius ~/sdl-android $ cd ~/sdl-android $ git submodule update --init --recursive $ cd ~/sdl-android/project/jni/application $ rm src $ cp -r ~/aranym-code/android aranym $ ln -s aranym src $ cd src $ ln -s ~/aranym-code aranym $ cd ~/sdl-android $ ./changeAppSettings.sh $ ./build.sh If build fails with something like "com.sun.tools.javac.Main is not on the classpath", you may have to set JAVA_HOME to the jdk directory instead of the jre directory, ie. remove the last /jre from the path. You will find the build .apk in directory: ~/sdl-android/project/bin/MainActivity-release-unsigned.apk To sign the application afterwards, execute the following commands: $ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 $ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name $ jarsigner -verify -verbose -certs my_application.apk $ zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk aranym-1.1.0/android/AndroidData/0000775000175000017500000000000013454637621014773 5ustar joyjoyaranym-1.1.0/android/AndroidData/logo.png0000664000175000017500000036252113454637621016452 0ustar joyjoyPNG  IHDR5bKGD pHYs  tIME1+" IDATxy%i]oY~ofPB*NۭvNOۭC L - k)lEQTAmIUeUfeVn~.g?%ވL*'#9q{8'6DEEE=NeKKK,..riX^^fnnyYZZb~~VEۥNݦtz!2ig$IJ!PJ)FVcttfIޠl2>6Ɩgh6G˶299$W]u3SLNNPU߂RǏgvvÇsY9ʉ'8ugcqqVkeC/. One!텽ZOFǘd֭\u+W]u%\}OZ.| O)\~}$I7D":QQQfggٷo?Ǐ`߾}=vs >B n]Iï!PX+Ca  zBez{9@S'_͓*>jqSWsӞ“2n4QQQ. ;w}kn}ؿGe}}ύwU~ AP . @|p!I:>*rӯ?=<qUǍ,***`TTc'N=<Do^g~yx {=7<:纫0**kmm]p}m۽ܷzh}jӺ _/7'І~@`9: /+(bڵ|>^y Oefz-b. (Z(H tK$m!0fz^ FDEEԹsͷq˭sБ!n*@>AN߆ K<" s7 ;`WäL0K*]uIǺ-ŏxO*"FEE]ڻ 7}|۸w ]:8y` r+o ^xQ@p q`ep\ @VBc&ҔzogϾ&~"FEE] ڳ /~o No]U=FpxE" ,TBQ CR@g2*( 0 C(s|_?I0** _:_6n^Vm vz*^sWoԪ@w/e^ ~BoX8 ׇ|"ʲW0pt+ZƋd~=⤒QQQNWǟ ^y<ڎ=E0_&ڱ1-F8xrtM@L(@!po!܅0hiSI",mDQDW#XAw[@͵}HXMJȱ;Qn 堙FOP:Uz ,3Z@`.{Ǝ6/}(7<%`TTf-OǞ[) x(9dHtc  bcOCXN$+ž>QW !l0Xp3-~b`jD5բ.>}Pk}jz!*,ۛB-'~6B)Ef!P)R*A3DmQuXGEEzk|#ȍ+'B ˹437<X]rʂۊۇ!T Q W!A{A1Ok"p <"9xT4RAzSu V]AE$ˢ 9ME<:|uU@h;/pgR~yX%Il?y /F1-ªL҅2Ԕz97CXaiLЪ6&BVޝ*:5bX@jPt8B+~:U*kIDaځ>蟯,A.1 u)ۏRB䡮!5z84>qP %J~ R UABplq\%&DEE.G>eOsHAPB !mPt%"[ E[V@,{W|>hc(uA2W_Rvu{7p7AsYWNhE9 `X(M E]8 J,HӴn B% ,;DJ[#pþ0ν mᑪAN vjMrQ/(׈0ks nM+ Z1`2ZbUtg" mU0J׆ÊnWh$ӭ az@Ep Pٿo@+AۥV0a!*G z-vz;"FE]_X],rfv6$TJ9Z80MeJ Krӥ=A$hp)(;U9 &ł!,tc].a8Xs\ 4 X>yjOu6AP})d],0G^gۇ}_`' ~~Ii}*e%\>h`1Z :?8W : "2׃% aK W:**`TQx>_,.E@߽ nC8*ac!ׅB!am+B>@Zu &k_I^9OjυB|yH? JbNC$$`аF)qA ({f} GGEE`#_OI;]c `T>]8{ⴑYanmiKbz``N\AU |*x*;L*xlX*%XY$p{_WR.\71~>,\pC?yJ@-Q8Ą-J;vrAXgmm}4%I 4Ȳ N+7J=)ԃQQQ}wcxUbXe8l'ʡ'*#@(.x*6 D7~BaXeAECΫ0B< q2!bBΙ4wv3^PW8E;U 4"t q|a)"<0^/%I MV3VaTTT3}vE HW@]Us`1rDD&OnCP Ja`q90ÑfX \(3ULPpJ!`Tl6\l?gW}ue~X 'i)`(mXNΠB!b+_"h9-]n`jPj3 ȼƶQM m(.+ hmz!#(VDuQśwtȮxs'D[zDEI@<"n!Q`BT.["`rp0*́&+^6ja^`Xz 0p-I1` ,X3g MpWOSɋM2Zf LL\.(:\Z a$84Oi}} )ŀ XZC4~,iJ!4v"FE=J:x4/U G"zQp*` Zi0ޠS^A8&-yr9eS/̟o+s*=].*cYcu͛6o:҄j( 6%"_70GٽB}L' !B 9/DHˆ񪔙B`σ]p}OQ`]Ϝ[hY˂.'/J琅._MU3`ʡE@uX"|B;Q B39̞ `A8U~I#+ IR#Id]>`mXE苊u1vowk)`oX5<]zzi@&!<&JIB"d"IdYPʌzt:]T7컗=YPs@3pzh5P謋]Ⱥh5fQ8(̼iu@ ?!+ء[gϊR)nϝ;xah0]0VT2K_4#"̤sRΌ hݸE8?.k5Z+pnOic)(&<%***`Tj#/Nl~U'8{i[W>9At{brl4s6›f7+2zvnO{MӦY̓\E:jCA:kϺhC[gB䪷_؞vy/쩹l$> %D{u]LZ6wX1+$VTpWbcGPyZj7Cjg-l,嗡fV8Ҿ1y˕ʊߦAp[0ϱ\|b㕅Ì\D_P,t:5v|- AGPHg) [V t7vmXTJse1mN @߇Y t#FEE:O7ȍe`_**þzȎ^CTmCjg*:E2*++rd g@ kFNޠѨh4ťV`hBLV UnY^n2u T_' Sp B'Bhb[`O3'-B4GܦޱJDb*IJOrT>1Frt$(L8; H^ k$%GPkdbV[vEFy^JY zX0FEEE*hy_1,[Ia]}B7݊=f8ll4NHHP`~b;qaE1Amxڇ3p5Nmx0#Z!fey8J R"%9) ׊ xgGW1*`T%W};9ze IDATpƀX+VlBQo3!Bb)jFfIB_R@%iJ$N_ӡ뱺2昝c~~"*d$z=ü-V;d\qR!ĥ;E“|< ŚCe6L{?Rι@3l?Xs۔ ]h{hO ®NW{{Zf$xIRj-rI_), f=ZZuGEEDo;p}T<M :}] w 0&iJjll6 · 5y>Upe,vt:[ܹ9N9ٳ,-^[Fek$Mסzl_ot|?9/E4dRǫ(B0dK%t2Ӟ6*c>4~pUK1b]SD#PJy:@S 25 |9'bQQox[aCGcg\֔s/+u͕`umZʱfBHzҠp@Iްս i*L񩙩ڧ5j鳜:uYV[ +$tj$sײ6O\|"nPQwISP Yj\R,}EACl}uvމSVͣufF,FEEz}_V^ف)9Nb6.yWdl,*mnû:#&###w-f}fsfsfZ-^jNPڑ[Yf53X[9;ˉ'9u -Z#kꭘ 񆕻U|*] z'0O qR %yng±&ȩM. p3gQ1 Am , r7P< D-ͩ} H!h"t+=p58'PNs/d"&F0*'mm -lqy}$qlo>m22R=Ԝ zj5͎D8@YZZ'N9{yTdTAꯐW'mJݨPj*N͵+eYApj3< K~H;oN)Q4ʂ`f7D왳oK `$!0AiCE,V IGEzt={|7GO;/3;!N_+s Euq"Gϭ3(##c⏄f_n[Y. >}GOp1fϞf}u`B"뵬۷ k#*/V9}A˖EQ m/\A ߔ: &P(BWPAU3>,gĐbB&97;K}N5 8mB!IiA(>.` \!a*A"FE}}G7|(QaEܾBń~4^ol6-8{[1 M̈́h4=KK]Ν;S'9x0ǎca, l^_~3w= \F'S8"=&0(%3cZj‘=eW9C1ä)-ɫm'c@%(B&ieR1L .w'H"n z}8҇[eT>;mBBW5 ~}g 4pNGctt^_cdM4&_][eXX2;{ǎr!?TEuȺTշntջ'X ZZc Oj {چ`U4O(z=ڶ46PX3`~1-.2 ]@S-  PpC,wT3Ј{ӨQQ{;t%t1dGeQGE߾H$4u7::~e܂_QsWy]wu`~Ǚ3>|㴖f"Y [&9~wWպ&\QpJ^PsKkt\Nq*JΠ&,8)PIcaog [t9sB "}01 ӄ ->u< |;|O!,Gۗm[ʠj#@s:::ؘu Ń_ۅvۀ";qY<,"Ujb -{.etuvn_ޠ9sdи8s7x/m F exiAP'>t,AB9C kx<].J}(D!"IkǏgz=O,fb.P*B`ۅ;3/[`TOO}Wua>׾^ŽcA>_ettqFGGK \?~IDzs =-!09~;RWЂY߇}'؋`r4nQ.X{yșM>i+VjlQ%ol̀cc06fot-]\k`~ހɓ?<YYEUK]fow_e>{*Sۺu$'{] BN01hfF ۩B;pΠҦ8E|αVyn PA,SΞz'0w `!ANkƻ$620é9M~Ӯ٨QQ/ë^/|`Z>~4Mi6G|>1>>no)BWBu෰`xv?CY^\L[]aUg&*CiHԴqףe\#mvlظ-]@P*R zt]NmָEE~GxT &͜{CK?3WʔFX|####I&&&e|\ ߈u5Hmޑ4];yhnΝ9/Po".˶ߚK(Ur~_.-͠9 ^/􀦭;(\w]!+!o- ,#ʐ.l Dj(5͡!3B3+Xs|2 'M5~/^^ę˿.nnQB)WߴL^ <ʍݼ6UzQ7j;0O311d|&&-hԠN^ʀ5XN#ڽ;ɣ *B-KR9W L|G#E]n7_4"r,(A~0JP2@"M4ѣA[ܚ[ׂ k #K8ǝ.@RJz==k,WD=nfQf7|+;v~aGiG1+m m4lG)8ӌO09zobƬ72 Ԁ_jj`Gٳw<Ç2KM-Tgl]U;csTO0o8͸r M21a½ĄqAӂdk)X\ 8xp;wsvN< %bzdE ~-˯κ+zҨ$hiS樨G ]Ž!>V Ŧ̄ &hefO >'Piu)u\aȕEHyyYIrFvm+]u?tx~7/'f0ꉣtU7+u1L(:~br2eb&'-MhF]?kRfpH]qoq>+hh^˶tYGniV@ȢW/ި47C,Hl?AeSB7VLZO+|hF D*mN%B8Y5Х _Uh-C) IK2anUf1N`5og_M**`w>ok o ,\$S!͑&bq8SLNN311d&&alFq 07gNѣY~/>x?'p@:P({59aRqGǍG9h=C~av!bG[܇m(2HJgvr _c 64 s,;^ϟv:?2s-^TT^Ưo&A.rLL6;X~LMM1109 S&lԸ~M*<.=']v>ۿC: 4*:[ ,z޲gpoý"IAJWEzàso( A1Py˘2cUfʶa㬯jN h}M7p7E!5{!0!Ё`8XNfWYEEӛ9mΟt=e ipo5M299)MNYׯ c_J8 oϞSs6v)e{pooł_njr;5Wrž~"#beoԥ:Qs*o #D>]r+T ;c4 M-Q5~B 覅om7 `Qp k 뙉&R(7dii7Q=?o{Yn"lUi-IHƙπ4SSNM䴭2й~ep ; 瞻9vatw-uP%~ ۺӍ8reoK A?-:A(|GV.76h P1YG(mŇҊZjz:x~{S G3;e-Jfb+?m,V)EE7}w|+;bDb_^כyLMM199SS&ab: =†\U8y={pϽرc; h^B뷜ydpo;2 /)c7u m??1ĵw†{H9  5vb]G4JnҚ5GϬB<ŧA43@PJ(;eO|+3k>_PTKW ?94b_ʷ4MÙyw:~3LM5rLXoE;8}CŶmwp~ڥ._mV>7/xD}4O!DB JB̮@QAfasBeǎ`dB_K6 aB=@vR]ʫ].ˋ-;NὯOTKO72dP?%B& Lp~J6Ԍ?!Zu~=!ػw{a~8u"˨|KnG-wdj6ި'-4s1V AM.Ĭ (F'ѷ ]] I `Ϻzf$IJ$Btrf0KN+vSv>_OTKG~}֊@uWa_ m]'&drr-LO!iSS0.N"pfÃ>]wξ1"]|.Wa[S ý2_w*r}~_IABI"}P25O:n8,y?]`\HۄzLS&Fe3V޶N܄"F=_}h72l[I,Z!\I~SLOoajjii& h`Na޷mCE%uнߪ_O@sEs11^}ԃ`35vVNafj&̩dY|߮CC)iBaZC`8:\]/1KTǯ^7 [ AZ3y8 C3LM M 6 Ul 8zw};;34 ?o*|2jr†΅.&+ZW'b_Jgs. 6ҡ U;3C๳'ٹTouLϼi@gl:iZ!0A(`U ̍MTǟ~>{?ґnH?wW ڼި{ SSSLMmazziM&0 qάBop`n--t{~g[65 ýW~acSaW%6wX]ҵA ٓfQop;Lp tLNYi2lPVac:of"F= /a >$9eFQ(Cff [M$fW<6p8G=>v;gNKLg6%of"19IX IDATEE:AÐ4]D%;;OWJa $͞dyR S|Fb pX{';6:45:z;0=N.(os>0q?{?wf{ Tr_ۼ4́~7VǙMo1~T'rg'}.bDLG{[4zhF>B{ Ⱥwז"d:_TT4?lt;{m+W\4xZNjjfnSRK!˨n#0z@wFFCFcZmz^prC okf0>r3O?YQ = Q?w1G&&&gmezz2&oglb-p ;v;neC;ybݞ'ΣJ =\/CU eM!0<8rYS"\CkaOfrȠQh@-͞bNm8K|is !;Q *4MFT"mW!|̝,~7ez?o7Qy}swp{fsa!iff.cz-j_UF58|{wʱ#I2uϡ87O !_?-1MEs"EE} XC@ѳD Kr$896ת{HaNA3m\E@THG` Q XqZB9Jޢ^\_o  ,FykDEo䕿W#+5zv!B/u^#99 33[3=W 0~Ǘ>P]w}h"[oL!$oC`[yGzdXA7]o%Su_[uгsp(kPsgOc JvŸ :A9J٤lz<hYny-dzjW&0}-ߨ&vmbZH#f-[Rffiar3L߱^صk;w7F27O֞S=Zl:~2A3~KT#@J0'򾀥G=pb` jR0{;wqnG4蹪=L S1M=iom jlh4 YN؏RupQt^RSM&*`ԣ3KȿCr)B(y8 MH%Ÿi:ri<p8r <;<ŭwyy՝Gu};˷T7[-% >@{M )5C9 n4۞'!V!"4I 鵐0#;>FFadd[ \J\`}Q=Zn»?7n.Q.>?3o`(b`l0Q;==$[ز%-[`20GTwo'38r=۷o~"U"Yʍt믘Ϊ[h|=܌+ =Ez@P X '"}F aPOgݠ@1}"kT N<I iBt4lV8|QQQ>Ϻ ]LѪ狀 T?v$iZ{I&I *SO{`کC{T$ccKzL vN, BA.uLLM$*`+_Nm?P0(Vz֒VZaBn5ߖM{-*kppλq_gnM yΜ?w~}վUoTTԣ X$p $z`jR\ 9$ǎ5i jpQ h2Xˇ:^`*EL >u ?ohL"F=r᭟.y_wٵ{I a$1>>6.9f.1Uf-xx;o箻ISѝ3a"BWm{ :|zY&87CQQ+@x֯M!w@crԠ |4Mms%g@m V ̭ܿ]w})F3kYI 4,-_lůZ/*1V9"%7Bޤ.~fHRť5V4#Vj)ԦJS@+v5:vv:Y333]gq(svM$j5T۶~]@NaR;CȄˆ)>[cK+ݱcz3sX"kCuL<ߠQϋ>\[n`X ⾯U }&@E0h$`߾5ju> L va}VV՚fiiei4t;msOgIen`dz4~g*n&Q_s -~hGu<-7b=v/[n.|Gnb툾i敾-G~[0-s|e=z@` ye*_7A Zd%={}!G~ԞO?3h_+j%Zj-dWWWYߧaʂe i/snyq3u~W?&۝ a ǼEf;Ŋiff.gf t\* ¨Ki=,ϱ{C4 &44) 8 ZS,/oaiiɩIiu"#^cz//ro2667Q^<&@PjCT i2t[>d乌mp w[eEM/ym2V!CH;\M:,QP7FXKME킬vv0F .]4Mjh'Vcr׷j Z-Au9KK L-v{t?H ڠ ٦ ,wٸyD@ ~GCҸbHT}o1;͖-e˘)p9yط^aߑg{Anڗxx.b$'k {y=վBA|Nw׺{nN(o%#,K MݜJvGY^Z"Hm(( :tntzkYY]%B"A(3ø:|h`7S?y<~ͻw7u6CbM cs233þvd> {w-_ G!y]=VYg͋Y~Gs9kKjt{b;>( >s:D=:Yf[ G>?dиݞ]ش*H0l&PB"SA"4Ǐhll<4Č 5҂V XXX`~~~C߭z+~}8XQ|C%/z~!~"FZZ^_MBA92R~f h_y\Nw_;XޜovTy ռ뗷Bfݙ.ҐRJH"a}+X( 2Avߗ~;б{~ r6jh  zzͲϐ%,Ǣ^\rb[hi=8;#9XJ%X\<, αPY %jSH:PV*V  E7\?O.ˆZv?_mjA7uHHOaa9ho7]]GBG+M- Р#CiJ>FV@O`P_%1TYCh 0Κ(ϝC@Qae pW}p}WWIȊn|9!JAem%֟- ؀O련Bx:MyeK.Q,Fk[-EhBz; vq(8,KҭcY6Jꖓq*AR0Zdzjx'*nڍ{;|cyjʷ|km-zyKw##U^)oR}ykR/VҬݤ}?+J)80O$Jy_45P). D 1Y۹&‹]7Mkڝ8KdP kg҉}*S(!} im4C%|b~n/I>(A>oD;MP#,,YfX/,mi_%~!!_~yp[dy "$&xX۝j_IWa<^ÞSO#CW(SawEcQN%I̓LE)Ґt7}x޵ߠORR6oA 7% (YE *9(ϿHO%`xbGp$; ǎѣ9|#j+`X7Nga1Yۿ~6 ?s _8n*uO?I?Ä(iz|%;t;x{gB}0:@)j(3Y !EkmCIO$Zo#tۙ;723;Kief(X4 VQ7Wc|tb fFi> ) Ha寥~N(y݇CڅLWG< O? _"/9% ̟J߀ þ}mݔ #."PEꋦnݼ< n߄@'/ ;u}]RY@NzRAQ;؎MnGgG;Ghmbq/ǀ8s'XXfjj%/PXRS0$mbUqbJ -_p[S<5 ¾ZWgE<~[Z ɗ06]]><펗3^_kO YJ|²BWFa[u\{ TŔi,V&8]cvϽ`ݮűzS?;rԟS%&B, 懃P*9.\ҥ(35X}B;p8vr3ּE lU- T'"Ї!]miy~o[*^kzW|Bj :Z<毀>&2i^yqK#%m6@xhr$_=R*)%cLA}vɛ>zkXR큼?:8Ǎhx"?v%k~>` sӼ+^W1yaM)8~-?~ò HHUaXHT"ה ]7s…lf0ks{/WV* oa<{^կlZ[[=릻3݇cZ|灱/2׿U.]x G-xR/Q_h=gynX;cE";M\,Th7 S#P3 +0x~l vڰ?M~ |xcud -#dUf|l_>OOo?C02᥹ni8q[9q8]s/BhsYFQ&D·l~Dz]2_ /B&C}TF~ط ::MxEX&a^P*/˝v}g3r|zy LD%!6fz1`O)k;sZ6~4!t@9g(E՞hxN {P0nY_ReJ__?/Ho =0 KCv;8q'O`ZP8a(X[cӀ0CSFuɃo_v9~߿H4۷0OQ|nӪ~#ٗtu9^ط:-i,%Kx_翏͒S ΣR}}g_+TntQ~c |M08茡2[7?Qcݚe6kjCUa_ o L?;7tf؀LHgzj&Ȋކ7fAN^O}sܨgkvfIU[$ 7)Dm07Ņ>Bg#u@pRpKn626>FiqYw,%~'*.cv=?xgx>LU ]+!tt4k^,7SC |o4I^pӸ9TuU_ d! _k멉tHdǺzS3k{ M*k,[# IDATGLi̞jJ0a  㣣\ Ȃ!Mp68u4gNJW!/P^"8!MRxߘ fQ~]S= p.yyOg~e9UٿNhu_ /Uatz{_&QZ%?Os+KxI1z⪒׮aj@AH8%PYvG9xqrq3{0Sm8 :F.YDT`^IDnbQB_o.@z8N;9sSN[DssH )n> ڧ?i>eC3Y;~ O5o1><? ,an:;}'WUfo5꒲޻ělg0k N׏ofZKgoKKax>Ŋ>LM \<3:=SB}𷀪yOZ 9Q#}+`0bdms'`L*nnn;]_Fa푊U[L:puYUָ:<̅ e cv~'G܄<ՃH1 &eO~ِN[V|&*ѹ'B8}8|֦~t௵ӻƳ~W^>%iU,ބW >nJb6Vhmz\ DD|iӺGk;X!\u=IBVExk!uBe=8-D͟2s>B6{ }}WO|K[TPcRCRE~~Tk;*> GKgnNFGfhhel*,倌̆mff-_p2o/O? ضCRlˌ\y+בFըh'c+67P|a:[-9?߿ fs.",Rv.[m,M*k8Bf!r?}*e kp:tÇmhq.'Y?Yfgp+ C@KS>?<#x`k\I`߯Ckkk<IGGWZXT waz"}k%d}%˦г_a2`{aˍy| \"هfVnaXsW9v4ѻcUwa9./\ǶmN~槮^c#+%b;?azW \LTvb{'ӣJcYTD!nKX9j͢GoHw n &Nj9rCC,c*Qzc؍plg0k= Mt{_lNZy7ra6(&%'lxkkkh{௵Z k51(|K_^Ges-ksCgǯJ7(#O0 ZAqIDE%0U}(ؐ0vJnEn ES6}"Y З޷s"7]uvThW2VԣKè:J B c\xi`nJ6w8z\t8D.3b ;0<ַ-~j3>9V3Ǻe_"6닿W|覣C RCi&'ahH‹?6KNUZXٹir/"=}pb/s h9.Aŷq$ӗ Xmq.A'ZΜo~^pHUrm @;!'n喱P.GoEz]a&vOZp۝pΞ\4Q|_PaUJ?`KzF,D9 -Z[[ ׏[CX^5LO(\p}YJcnuY[V_׉ɽBF!) xuM@Zf}B9>- 8AhU`}&U>bӛenl߸BJ+.+9.B%@{.!Lή\…e.{Akn= gﴸ8zvAK\g?Yof>Y)EX/!`# #ϻu/~]Od~ǡgL Q+^Ge{*YB'!iYwMy0-aXLgwsPQ-4x8,DXiRe NZI 3=Q! fMhQEʖqh/X%D *36:/WbbS-m;Ns/N]Z.OFˊR:vR}``~`֮e_ٰ#̰@IT"pG;iŞ[Z B^U˯/ǭEdezJx̟'l dH#Bh J^_! 4ZFF0YT}睳Weʓ\@KcYɍ>ӿy e^}>?h݉WHXD ķq*s\2WꃑYr ,yqΝ\KB$obkǗ__cmm-3k>ɿo`h$Z$XŧQEN[o>~+WsQ'/p>j6oaG7x/ A}H?>KIa̋ak%,ҁHUp/)9~No Y?d} 0QQLj^燃rA} BUjё\=W tiswýrԝlL5ü,4]i*F#PCʪ^&gX[YJe{쁫%Y)hGn>)S'`FG>e{|Օ/1 d/7mmy|]YBk\t."R7aٚ܋Z~ -ժ@ޟK|fL|F%DEJ Vd0b~h[1URjO}1Bz2a XUf&t%ꇉX;w 7=N h^ $I;~~.2j~qGU*+ qhkk5iٿxwmM^䥗S^!ǒWG֗P(}__7H٦ l,E x+brjw20[9V9A4P0bݬ`dnCi:}QeT}7AO=G`L`lNĞ-"MG,FI4j[̡|!E2&a @Fl"/jZrl6_j4L 鮑k,.rF?+z"ن `l@PlM!>7*Kh$ k_QJiy3*csV?8$_"F37ǁc.)`YRkL }UG@7ck na"Eayc v]p'x"3low(Pϖ ?yUC϶Oʕ \pzyGzyسYSƞس=rAMݚjn  5ff^xL[4qUn&6()t()#8*Nerv\^G=x>^1HRz7گʯdq[]gL 1C?Bشc_Ţ >[j ό>[@՗o\/u|rYu B_˵}(Oh&-K͈0j~v*5'>2;Hd3Qejr+W^f!'8w+inn> 臁\@{W戁>Oep?$`B(⏠BBF!p|yߵ5mltW.`?Zk%T}5i3ٿ+(ܻ|m=0{9E7xNJ8`>SXN4+- Y,pdtTuo)Fk|PсH[[[e`+_|t9:-,^zEη__ͦԜ׿dz?x) b̟9 UƵ0v=F脅ٽMNĥW(neY[$_ܘ䋦%& u"cP[G zZf>wE4l˲c_#-GQmBxW:gDz/_ _z%ĶsX4zz-;/!H X7vNQK*Sןr艰@y0y;4/ĉg8u?u6xy;yi~oCJzR_)>𖷼%Z3jw J} )e²r)uڽWq0/r1,#+ > $_jB+*_+|cVEY7 V5"өFۍ`bs yZ_P6U5ZUe\UqT(@׭FeRaۀpprIbys={v|%X2cذ˝VMzmxрaЗ:UGI D Dˮ\C^i8-g~}=L_+ԖWpA`9;])6Zo@Y^Ы-rj(eHpiHeQ bb`8~T\t>lUo5/,rZ8"etKZd]bh! ᐱPc"# T^(nzqƁt@$ }#蟱03t|Pﯻj߹2Gnɱm!n:Γ=&҉1 o;9fƇGhvc'V&][MP5_c4ϕ9sSgNppgg~.2In{z !\g6??{^ַfk㏢iBLG6& [ ^y/335{t2y j 聿o&c@EC,VJ8sn~axP-*F!=OV'8[畋(TG&LLZ՗9sǽ*!c sX)Ͳ8e;gb-ۘdrp 8rZl@2z(>y 6Ts!&W4$0 F@XV zz.p-,`}{de2݂ s}WaEi:;~w~'v׾,/E}][6Xoi/ ? HKKpVQ.\(9V$4R_!n-Omਲ&0b# +JzQF 9'";쭜<gww矿}s#0T?//fS>no0h{ 7|+ꁿB!~/ 0߇p|Eß(=gND33EZ~ЖJav;oJ)/)c^#°m 2 o_RQeۗ~iVox3I ,c* IDATc^`W2< Uȷr`}IM0 ^ln`ֶھ<z/*E`ea@0rŢ ?j re֖gȱ|.{*xH΅/_g |5p㭁F Jkw^n;oəc&g_ۣ? 0Y{oZ#GSr'T FѾ6#j ;Pkm~!tj cCoN޽<55G?l`ֶ[џ2L0|2!8`B7r`jz+=}L`-Uۇ=7yjfo?3&uKEI;Ύ+˲SX>_kUI^ޖ$Y@b/gtm) ε2Bd CONsz OXxC={?JQ'  b{;ߙMfۋ/]q)#1=tP($`.3d_K ۋ[^Ē^~Ѽ~E k@}>L6X2`MƌXLuc0`>:U*8{l{{]#zufK[PӼ bv+Y@ D^@/ ,a{ᡇ3.zr d0?x6f0ki2Y?Ոh,=w-_BKK B(R1\cqvXAUQE귬ٽY~_;v65kK(N.㹕߷c>Ti;獃@ % B$wRn_'>R($1ʳ[uf| O~G=ͩSwη wo& f6:6J ݯc-$ЌM y '.JP?ׅ  "K^跶ru?o6_>4Bw,Y/RQ~X,}$~kZ[5Z WqԽ5@|7{kS$Vs7m;<?$MPc}0n[Ԩy ~xGQ݅ O=T6f0kʹ:̰D Xx {޿&UXZZbbb^VJ3جxE2e,U_{~'{vV̨ǨNڹ%i|-+bt0Q211w(٭">=*-Lq v8Z=@_r50oogkQ[[+??- ,AsOa!kii!E}9a%/[_ޢЯ?jLo>װdCM&A3`}v;+g%@3D`t@~9Ex'w8O BtYUsXZe>i'p;zvVQOۛMz?*53)b3'bɿжmRT*UJ%Z^˸Edm 宀DK$0A AvTeGagJT2S/7W<7"b^؆07AoNqlGZUpBȍc՘Jz\.DqpYx辅r]fn>B270DDn3TxN2??O0 8voKGdyy~ӇI (EeVoSq[dkNcyAl);[G[kUsiGǩ nTP )Y+WLCC!xg0 , ރ7o3xpo d8R\$FnHȿxB|>`A՗-ykȾX1C jvswwTC/SМ4ה[j1Hi"_6[yPmr@jbC999c=-̚?I thtZx(/Pg֘gh*˥Y-o U_EUS%}9Mk-"w70lRð.s!ky .L0ny;H0+IJ45FgO5Ld`sC2Iv*1(QnGԨap`Xwx(vvP v f-hjO_m)E2o;k0-WYYYa||1/䃿ed= ھ%_Ko"'X7C0(6W,a3H#*<|6=q@':yk4~Z*B~ѿ cDb\8mgg?-0?6tPUEɉ1zz.1ntSr]HY@8Ei=ַŕ+W?Y_=A\I{+uea_.öme:<6ȪIwTՔ}"Ϳ,bu]"uos[CIU cݿ02,U;d린,%nN0ƒ!16~u?.Jzzw޿z7)7| .B,;l,emX@`2,җQR>sJ+  =.$8gpdڷ~?* $5*"iii!8B`rrKB})*'E#]j J.Ne&2N7'Z^q+'bx_ 6%bunV\>o'=cey~zusKk;Nw3dTNEXVamK/\N %\K|ٷJ>=q$ +ؠzzRAB6P w!dc#rs> =|Ӕ&;E5=~=yqPK/_/Lzұլ9as--z"c㬭䃿 ~}?WzkWQ_[!~053/"(@5Gg?8m7;#;sq}@u XoWow!<|3_WN[lhA7_ ̌c廓Z ]uԗGw=V=BM2= 6#pn /rR@+&H.;j, h)$rk`UqK ]f~F(p{aG[8?qBk8O+ݶc=^ dm?5}hPHCvQ²rLMM"*><74/{lBUO{ot|2%(鄾+#(+ý| ;pG _yKo׆zpIJw[N5'բ3=i|Mǹc_"1h}3iv&\9 6bG:kt O ,#W ,TC 20x7w>>s#ҋ_ŭ,bٚ3@}:3mRO8ڀo./n@o훗^cWqn@w d5|aC "˷}gYc#Ӵ2?KE1䞁?D"Jf@f7!)^[ \*ma2i !^ۅ Sk6eXB?%ɨh)"JƘ`: Ѡaane {BYacX\C}w2qEw&/(/ɣkO?4Ü9s&jNk?%L*17H 7ho(Bfvf!Pa*sئ֯EssFLW FsWp[j"UqyY,~.aS^Yp?C ^"DQ .h2 G?*․1 4Y [@r\("Vk%lz/9Yϯad1TKg]-g(?Wmb{b@w\ ݿ ڍt=oRaf|z-tm?*!b"x?_$߼/Jir0xM w,myܕ f7~nB(rQ*-Wg <,G8 ;9Ay djNml E,|$,;ӥ_&'X[Yf-}VU?KxE k*s /ex|_k+4`׍l{e9pw}N  8+h0Mq cvRtKyNc 0n,vZ[g̴ =#T3|J!lܝ`{ a۟} vieLq9-!,$m'd_C2ԗedmdٛ@BώؿPo1*!4 RnZma&gBE [ftm 01 8d-d>Z' ~1)66~2ҁ)/bjVyzΟVܢ\{nRb`>x5zW݃h;Jn{e H)3P ]{>3[M?6yvlw¿rYVKXj Y[@7 t,K0aʼnjdl&*%M|A:Yo+6 lS`R0L"oFZQ@f#!PtYyHE"*~E/i6XŵvSAxZJ' #j ˌ 1;wV~I| \XX_b 2xj:TnP0spuVTZba~5pW|[F)MϲC׏X (Otx-bFAŮH,,{شn4z6R\^bHOH}X\w[*ػ`S BDu2D#ٟ=>,{g07COoCC0]hm2`}S6JM(5&?H@⏹yVWT~t*ȅI˷T/^ܡ6h`ĴbB}  @c"9E Blm:D<|+b }fX/V !AoFe+b}%-:@aN`*i>5Q  װEjeV]q0P |S.3p뻝pE2LTĥR&3mjY8rz6fjxF/j9ԀlΡ97ɼp Y6ôBS(0ȒszqA@;Mv+=ĀWBx~CĮ0V&0`QevfaG0GOrY\7@+_+++|B7;U !8Ks@XcVPbmu KeQ^v?rKrcJ)abzRW&n=!mW./hř̟ѭ1X/` ghuB%0Q]ӎsO&e]_c_ahS[o' }-0pٿ۔?eդ\@"hYeR Y/\EՖ}ݿrd.,ǿّ$`dS8S]Vw=@Yp~QvF 67="wDG%:#lSFG#6ԫpMzp65d}ёzg4Z1*Yu.^̕+=I1*[cl²RJWX]]rj@ϭ_ Uz5Rz/+Ic hd;[KgpUdMvBir.iDJ?yA0ي3k 5`f *Yu`xC0/ ROf@!gǞHN-(0(\WlZTZٿ oOW@O?! ذأS(h+_aG?o#oet_PM$~ ؘ l\=(Q^~ܐmԟ~dU4bW4X7O\sLT ׻~UW \./38ЀdJ{Y{, N`"iE $1 RJPUHiF~r"AX> ʴ|QȮ຦^|lu&ȝ.H2E6}&ۼ:2J쏴F9gq!ވڏ@An;'nx}+U BT!ˌ 2;4u]tDsu ,dj##‹Ku&&<|9K.k 5pBA}-Zn4VpMJepP,ɀ-K)R5 ՆfvN%^xq1MaBРA?j&Fpڙ>d7|A,_Ⳁ 0tw <':{ x3GNlES)L?r׈&fv!*Y\.Sed}/X_gOhIN{'TkK?@ h\.Mba*j% 6 ;,tkXE{'ZcL_lN\ǪaZ.RPlHUp5@ܐ0 [cZ IDAT+n !j]8]ʩ~oB֪HYdW:+8gZ˷+So}HA=|UbN[l,rD!^Sj{lУuqY_ `{[׾6 ~.%]@6eTPODBxk*[zZG}/HB@LyT")M{ݡV;Eh8/5DR(4PSZ Y7c:GU2ҟ/۩u'Y9kīk0ϪtO]jt ˶#s\7BxZE*Kb.3`@o*ዤwT}{hdO# x-@>9n.:BVT{=ͭǼwsΜ=6凁=@CVTxꩧ v5V>IMGPE:-j+&w ~>?ikC. ?mHY+@9P9?yXɳU)v>o x_enz )UHe׈4F`"c eG.yq'Vfoؙ RTVm]c @4"%yͿ7EgB@i2ߟv~\N{g7sc[E%vMzb?I}y7p#ٰ4p3w_-ﱊ]~ӅlP+PE[,?4bپfY6JJfz:-RxsSۨ[;q `ʴwלaz1LH^GxRrc?S?X'7v4w"EXCL#Kd:8Nbmee,K<ywr} Z@#1oX]쇥]oVU,L GJx%|mR /[C 5!z A` 4 Rrj?C38z4STzqʡ0'`/PMIKve I ,atJe_%V!0U@8] `T(/* R LGy)_VQf-~ !N~_cDZ*˝Aѹ)@07dBp'4.n&,*k,/β)4dhimb/R,LQ^^v_qKem9&ptxm7iR YŢ8͟!}pY&sK/}Kmon')/]BRtĠYG62AU!eO+B!7$ɲ5/ȵr-kVod#3đ QR!AҏIA#H # 9 9pޗ+ʌ̌}yՇ_37KêGT\F8Ӵ.U3t]:rc&D2Q& |_y @-Y)ioft~Q9?R0{XfUyY~T n}0E˫*OlZ&g 7@y@@5;K8ȒГr2v4Ld7ޔ\uLwn􂣻xa!,e7l.#r||#Jm~t uvqΧ#+| bf*Q&~U*rq)+!`I ?awtz+K,`Ƭ4 >qEXHbOlyҰ0{!?8%@zA!p$qbpNI C2:\U˛fñ Cs }cu8_̝-(9a{{@DxWO~|NIWui~\@# x"ӆ^cyXY,M"e%(XPT,F#ݯ̰ 1pA?F|LeNgA}Nˏf0vY/t=MsAt-b{>+ =mɗ ~ަVb\5A[z֝8Ko&s0^q!(bУk4`G)j p}q:֯ㆥ2xJ7y蛐aǔC\-ldϿeE T~<&5Fm|6֭8,0{)fmɷ??@"پ7{T )*}ՆD0f;:, DC8߯FRQLAD5y{\O۠%rrF8|Kd T*Zd) eWQ*KVL9HE3zP;ZӍTݻ7>;^<j'y|gLDxڻヒ PQG@# hA`sGgm Oq@*7h&rr@( 6:gfV﨟%yw8ng3ITOrGkqV.Vu>>t ST $)]c+u}lmⓏֱfM?(W3`1ToE@jo 2+Y 9ܐIQJXO#Y_dωE9_TݫJtz@Tqh3 ̱F4}qɒrh~ܓ9aoq@:Ho2Цrj<>PUn;5\j>=(W ɷz+OW{xvKn [Js"U 6b=l2SX ?v&Բ;%IEVoq<ս>kxr# lNGn^.0ڳSCx8J#穝F/P"۸-"{,.\d*pZ[};߅ ],ĥB,g-U HY\sq0Fc0O*;玳F}4t;ʹ`ںK\$Wl/:v m^'Xx5:ԫNem cgv;^yz9 %?vvv"t5?v>SCv֣.=63sem7½7 1|˩9"b_H*=m- YAn8fsݞCҞ☱^$IiߺD >~pY@BҞAj2lߢҀk \sA}ܹswn^KŋH[0@w"0}+fF DZV]r|VI)s8¥xQ>DFAΡ]sbK­g={ݑ53"se|y Jl zYPIt!B^f@H<'sh^$tgR^j)6 %S`+;i"M&gϩʣ8(/:b6 Zk4-D;@t: gOua`tHG .Da*n:Dsʍs=wS|Gi?pYk?.˓y'1$=@+I 6g&W>GKڿ͇k^H0 `]i+h̀1]DX>{ ?W 1l\]dY]oo/72PHcoW3#K`2k{7~}td qrŻo3o"]AОVU\{RwkO8ʙ8TY̎pavnOO j~ ϧ}B;F9iϕsY&=9wZGb]? x嫸iHS kkkxꩧ`s;w ٲ}>C~^ ^ J߄;vgBEr=FN.I2|>XqXl+X\p(!jsGPIrdݿwܙ/Umc]@%u]2Lw÷ pI\^